From 0aa85a09ef6fca51cd0d5e698d8224d421f60238 Mon Sep 17 00:00:00 2001 From: Jiri Gaisler Date: Sun, 16 Nov 2014 17:57:21 +0100 Subject: [PATCH] grlib-gpl-1.2.1-b4122 --- Makefile | 12 +- bin/Makefile | 363 +- bin/Makefile.config | 172 +- bin/ahbrom.c | 1 - bin/gpl.sed | 2 +- bin/gr.sed | 2 +- bin/make.ise | 29 - bin/make.template | 43 - bin/xstverilog | 2 - bin/xstvhdl | 2 - boards/arrow-bemicro-sdk/leon3mp.qsf | 11 + boards/digilent-zedboard-xc7z020/Makefile.inc | 28 + .../digilent-zedboard-xc7z020.ucf | 23 + boards/digilent-zedboard-xc7z020/readme.txt | 3 + boards/ge-hpe-midi-ep2s180/Makefile.inc | 27 - boards/ge-hpe-midi-ep2s180/default.sdc | 52 - boards/ge-hpe-midi-ep2s180/leon3hpe.qsf | 688 - boards/ge-hpe-midi-ep2s60/Makefile.inc | 27 - boards/ge-hpe-midi-ep2s60/default.sdc | 52 - boards/ge-hpe-midi-ep2s60/leon3hpe.qsf | 688 - boards/ge-hpe-midi-ep2s90/Makefile.inc | 27 - boards/ge-hpe-midi-ep2s90/default.sdc | 52 - boards/ge-hpe-midi-ep2s90/leon3hpe.qsf | 687 - boards/ge-hpe-mini-lattice/Makefile.inc | 12 - boards/ge-hpe-mini-lattice/default.sdc | 47 - boards/ge-hpe-mini-lattice/default.ut | 6 - boards/ge-hpe-mini-lattice/leon3mini.lpf | 657 - boards/ge-hpe-mini-lattice/leon3mini.prf | 475 - boards/ge-hpe-mini-lattice2/Makefile.inc | 12 - boards/ge-hpe-mini-lattice2/default.sdc | 54 - boards/ge-hpe-mini-lattice2/default.ut | 6 - boards/ge-hpe-mini-lattice2/leon3mini.lpf | 74 - boards/ge-hpe-mini-lattice2/leon3mini.prf | 448 - boards/ge-hpe-mini/Makefile.inc | 5 - boards/ge-hpe-mini/default.sdc | 44 - boards/ge-hpe-mini/leon3mini.qsf | 489 - boards/gr-cpci-ax/Makefile.inc | 61 - boards/gr-cpci-ax/ReadMe.txt | 54 - boards/gr-cpci-ax/ax_oblique640.jpg | Bin 49106 -> 0 bytes boards/gr-cpci-ax/check-624-all.txt | 461 - boards/gr-cpci-ax/check-624-io.txt | 88 - boards/gr-cpci-ax/check-896-io.txt | 88 - boards/gr-cpci-ax/config.h | 146 - boards/gr-cpci-ax/default.sdc | 48 - boards/gr-cpci-ax/designer_352_CQFP.pdc | 352 - boards/gr-cpci-ax/designer_352_CQFP.sdc | 33 - boards/gr-cpci-ax/designer_624_CCGA.pdc | 674 - boards/gr-cpci-ax/designer_624_CCGA.sdc | 33 - boards/gr-cpci-ax/designer_896_FBGA.pdc | 670 - boards/gr-cpci-ax/designer_896_FBGA.sdc | 35 - boards/gr-cpci-ax/designer_896_FBGA_1553.pdc | 621 - boards/gr-cpci-ax/gr-cpci-ax2000-ccga624.xls | Bin 51712 -> 0 bytes boards/gr-cpci-ax/gr-cpci-ax2000-cqfp352.xls | Bin 121856 -> 0 bytes boards/gr-xc6s/Makefile.inc | 7 + boards/lattice-ecp3-lfe3-35ea/Makefile.inc | 12 - boards/lattice-ecp3-lfe3-35ea/default.ut | 6 - boards/lattice-ecp3-lfe3-35ea/leon3mp.lpf | 229 - boards/wildcard-xcv300e/Makefile.inc | 38 - boards/wildcard-xcv300e/default.sdc | 47 - boards/wildcard-xcv300e/default.ucf | 236 - boards/wildcard-xcv300e/default.ut | 5 - boards/wildcard-xcv300e/wildcard.mkf | 24 - boards/xilinx-kc705-xc7k325t/Makefile.inc | 29 + boards/xilinx-kc705-xc7k325t/fpga.cmd | 25 + boards/xilinx-kc705-xc7k325t/mig.cgp | 22 + boards/xilinx-kc705-xc7k325t/mig.prj | 187 + boards/xilinx-kc705-xc7k325t/mig.xco | 49 + boards/xilinx-kc705-xc7k325t/readme.txt | 3 + .../xilinx-kc705-xc7k325t.xdc | 788 + boards/xilinx-ml605-xc6vlx240t/Makefile.inc | 7 + boards/xilinx-vc707-xc7vx485t/Makefile.inc | 29 + boards/xilinx-vc707-xc7vx485t/mig.cgp | 22 + boards/xilinx-vc707-xc7vx485t/mig.prj | 187 + boards/xilinx-vc707-xc7vx485t/mig.xco | 49 + boards/xilinx-vc707-xc7vx485t/readme.txt | 3 + .../xilinx-vc707-xc7vx485t.xdc | 784 + designs/basic_passthru/.config | 188 - designs/basic_passthru/Makefile | 34 - designs/basic_passthru/README.txt | 9 - designs/basic_passthru/basic_passthru.v | 329 - designs/basic_passthru/config.in | 44 - designs/basic_passthru/config.vhd | 269 - designs/basic_passthru/leon3mp_core.vhd | 833 - designs/basic_passthru/test_basic_passthru.v | 48 - designs/leon3-altera-de2-ep2c35/Makefile | 8 +- .../leon3-altera-de2-ep2c35/clkgen_de2.vhd | 2 +- designs/leon3-altera-de2-ep2c35/config.help | 72 +- designs/leon3-altera-de2-ep2c35/lconfig.tk | 2206 +- designs/leon3-altera-de2-ep2c35/leon3mp.vhd | 2 +- designs/leon3-altera-de2-ep2c35/sdctrl16.vhd | 3 +- designs/leon3-altera-de2-ep2c35/testbench.vhd | 2 +- designs/leon3-altera-de2-ep2c35/tkconfig.h | 22 + designs/leon3-altera-ep1c20/.config | 10 +- designs/leon3-altera-ep1c20/Makefile | 6 +- designs/leon3-altera-ep1c20/ahbrom.vhd | 1 - .../clkgen_ep1c20board.vhd | 2 +- designs/leon3-altera-ep1c20/config.help | 105 +- designs/leon3-altera-ep1c20/config.in | 5 - designs/leon3-altera-ep1c20/config.vhd | 7 - designs/leon3-altera-ep1c20/config.vhd.h | 7 - designs/leon3-altera-ep1c20/lconfig.tk | 2549 +- designs/leon3-altera-ep1c20/leon3mp.vhd | 88 +- designs/leon3-altera-ep1c20/smc_mctrl.vhd | 1 - designs/leon3-altera-ep1c20/testbench.vhd | 53 +- designs/leon3-altera-ep1c20/tkconfig.h | 53 +- designs/leon3-altera-ep2s60-ddr/.config | 10 +- designs/leon3-altera-ep2s60-ddr/Makefile | 4 +- designs/leon3-altera-ep2s60-ddr/ahbrom.vhd | 1 - designs/leon3-altera-ep2s60-ddr/config.help | 105 +- designs/leon3-altera-ep2s60-ddr/config.in | 5 - designs/leon3-altera-ep2s60-ddr/config.vhd | 7 - designs/leon3-altera-ep2s60-ddr/config.vhd.h | 7 - designs/leon3-altera-ep2s60-ddr/lconfig.tk | 2369 +- designs/leon3-altera-ep2s60-ddr/leon3mp.vhd | 85 +- designs/leon3-altera-ep2s60-ddr/smc_mctrl.vhd | 1 - designs/leon3-altera-ep2s60-ddr/testbench.vhd | 54 +- designs/leon3-altera-ep2s60-ddr/tkconfig.h | 53 +- designs/leon3-altera-ep2s60-sdr/.config | 10 +- designs/leon3-altera-ep2s60-sdr/Makefile | 4 +- designs/leon3-altera-ep2s60-sdr/ahbrom.vhd | 1 - designs/leon3-altera-ep2s60-sdr/config.help | 105 +- designs/leon3-altera-ep2s60-sdr/config.in | 5 - designs/leon3-altera-ep2s60-sdr/config.vhd | 7 - designs/leon3-altera-ep2s60-sdr/config.vhd.h | 7 - designs/leon3-altera-ep2s60-sdr/lconfig.tk | 2549 +- designs/leon3-altera-ep2s60-sdr/leon3mp.vhd | 91 +- designs/leon3-altera-ep2s60-sdr/smc_mctrl.vhd | 1 - designs/leon3-altera-ep2s60-sdr/testbench.vhd | 38 +- designs/leon3-altera-ep2s60-sdr/tkconfig.h | 53 +- designs/leon3-altera-ep2sgx90-av/Makefile | 4 +- designs/leon3-altera-ep2sgx90-av/ahbrom.vhd | 1 - designs/leon3-altera-ep2sgx90-av/config.help | 79 +- designs/leon3-altera-ep2sgx90-av/lconfig.tk | 2315 +- designs/leon3-altera-ep2sgx90-av/sram32.vhd | 2 +- .../leon3-altera-ep2sgx90-av/testbench.vhd | 2 +- designs/leon3-altera-ep2sgx90-av/tkconfig.h | 34 +- designs/leon3-altera-ep3c25-eek/Makefile | 6 +- designs/leon3-altera-ep3c25-eek/ahbrom.vhd | 1 - .../altera_eek_clkgen.vhd | 2 +- designs/leon3-altera-ep3c25-eek/config.help | 85 +- designs/leon3-altera-ep3c25-eek/config.vhd.h | 1 + designs/leon3-altera-ep3c25-eek/lconfig.tk | 2373 +- designs/leon3-altera-ep3c25-eek/leon3mp.vhd | 2 +- .../leon3-altera-ep3c25-eek/serializer.vhd | 2 +- designs/leon3-altera-ep3c25-eek/testbench.vhd | 2 +- designs/leon3-altera-ep3c25-eek/tkconfig.h | 38 +- designs/leon3-altera-ep3c25/Makefile | 4 +- designs/leon3-altera-ep3c25/ahbrom.vhd | 1 - designs/leon3-altera-ep3c25/config.help | 79 +- designs/leon3-altera-ep3c25/lconfig.tk | 2207 +- designs/leon3-altera-ep3c25/leon3mp.vhd | 2 +- designs/leon3-altera-ep3c25/testbench.vhd | 2 +- designs/leon3-altera-ep3c25/tkconfig.h | 34 +- designs/leon3-altera-ep3sl150/Makefile | 4 +- designs/leon3-altera-ep3sl150/ahbrom.vhd | 1 - designs/leon3-altera-ep3sl150/config.help | 79 +- designs/leon3-altera-ep3sl150/lconfig.tk | 2315 +- designs/leon3-altera-ep3sl150/leon3mp.vhd | 2 +- designs/leon3-altera-ep3sl150/testbench.vhd | 2 +- designs/leon3-altera-ep3sl150/tkconfig.h | 34 +- designs/leon3-arrow-bemicro-sdk/.config | 29 +- designs/leon3-arrow-bemicro-sdk/Makefile | 6 +- designs/leon3-arrow-bemicro-sdk/README.txt | 148 +- designs/leon3-arrow-bemicro-sdk/ahbrom.vhd | 1 - designs/leon3-arrow-bemicro-sdk/config.help | 85 +- designs/leon3-arrow-bemicro-sdk/config.vhd | 19 +- designs/leon3-arrow-bemicro-sdk/config.vhd.h | 1 + designs/leon3-arrow-bemicro-sdk/lconfig.tk | 2373 +- designs/leon3-arrow-bemicro-sdk/leon3mp.vhd | 109 +- designs/leon3-arrow-bemicro-sdk/prom.h | 1 - designs/leon3-arrow-bemicro-sdk/prom.srec | 2 +- designs/leon3-arrow-bemicro-sdk/sdram.srec | 10663 ++++----- designs/leon3-arrow-bemicro-sdk/sram.srec | 10056 ++++---- designs/leon3-arrow-bemicro-sdk/testbench.vhd | 24 +- designs/leon3-arrow-bemicro-sdk/tkconfig.h | 38 +- designs/leon3-asic/Makefile | 6 +- designs/leon3-asic/ahbrom.vhd | 1 - designs/leon3-asic/bschain.vhd | 2 +- designs/leon3-asic/config.help | 79 +- designs/leon3-asic/core.vhd | 7 +- designs/leon3-asic/lconfig.tk | 2443 +- designs/leon3-asic/leon3core.vhd | 16 +- designs/leon3-asic/leon3mp.vhd | 8 +- designs/leon3-asic/pads.vhd | 7 +- designs/leon3-asic/testbench.vhd | 2 +- designs/leon3-asic/testbench_netlist.vhd | 2 +- designs/leon3-asic/tkconfig.h | 34 +- designs/leon3-avnet-3s1500/Makefile | 6 +- designs/leon3-avnet-3s1500/config.help | 79 +- designs/leon3-avnet-3s1500/lconfig.tk | 2431 +- designs/leon3-avnet-3s1500/leon3mp.vhd | 2 +- designs/leon3-avnet-3s1500/mctrl_avnet.vhd | 1 - designs/leon3-avnet-3s1500/testbench.vhd | 2 +- designs/leon3-avnet-3s1500/tkconfig.h | 34 +- designs/leon3-avnet-eval-xc4vlx25/Makefile | 6 +- designs/leon3-avnet-eval-xc4vlx25/ahbrom.vhd | 1 - designs/leon3-avnet-eval-xc4vlx25/config.help | 79 +- designs/leon3-avnet-eval-xc4vlx25/lconfig.tk | 2315 +- designs/leon3-avnet-eval-xc4vlx25/leon3mp.vhd | 2 +- .../leon3-avnet-eval-xc4vlx25/testbench.vhd | 8 + designs/leon3-avnet-eval-xc4vlx25/tkconfig.h | 34 +- designs/leon3-avnet-eval-xc4vlx60/Makefile | 6 +- .../ahb2mig_avnet_eval.vhd | 3 +- designs/leon3-avnet-eval-xc4vlx60/ahbrom.vhd | 1 - designs/leon3-avnet-eval-xc4vlx60/config.help | 79 +- designs/leon3-avnet-eval-xc4vlx60/lconfig.tk | 2322 +- designs/leon3-avnet-eval-xc4vlx60/leon3mp.vhd | 2 +- .../leon3-avnet-eval-xc4vlx60/testbench.vhd | 8 + designs/leon3-avnet-eval-xc4vlx60/tkconfig.h | 38 +- designs/leon3-avnet-xc2v1500/Makefile | 4 +- designs/leon3-avnet-xc2v1500/ahbrom.vhd | 1 - designs/leon3-avnet-xc2v1500/config.help | 79 +- designs/leon3-avnet-xc2v1500/lconfig.tk | 2323 +- designs/leon3-avnet-xc2v1500/leon3mp.vhd | 2 +- designs/leon3-avnet-xc2v1500/testbench.vhd | 2 +- designs/leon3-avnet-xc2v1500/tkconfig.h | 34 +- designs/leon3-clock-gate/Makefile | 6 +- designs/leon3-clock-gate/ahbrom.vhd | 1 - designs/leon3-clock-gate/clkgate.vhd | 2 +- designs/leon3-clock-gate/config.help | 79 +- designs/leon3-clock-gate/lconfig.tk | 2917 ++- designs/leon3-clock-gate/leon3mp.vhd | 2 +- designs/leon3-clock-gate/testbench.vhd | 2 +- designs/leon3-clock-gate/tkconfig.h | 34 +- designs/leon3-digilent-xc3s1000/Makefile | 6 +- designs/leon3-digilent-xc3s1000/ahbrom.vhd | 1 - designs/leon3-digilent-xc3s1000/config.help | 79 +- designs/leon3-digilent-xc3s1000/lconfig.tk | 2207 +- designs/leon3-digilent-xc3s1000/leon3mp.vhd | 2 +- designs/leon3-digilent-xc3s1000/testbench.vhd | 2 +- designs/leon3-digilent-xc3s1000/tkconfig.h | 34 +- .../leon3-digilent-xc3s1000/vga_clkgen.vhd | 2 +- designs/leon3-digilent-xc3s1600e/Makefile | 4 +- designs/leon3-digilent-xc3s1600e/ahbrom.vhd | 1 - designs/leon3-digilent-xc3s1600e/config.help | 79 +- designs/leon3-digilent-xc3s1600e/lconfig.tk | 2315 +- designs/leon3-digilent-xc3s1600e/leon3mp.vhd | 2 +- .../leon3-digilent-xc3s1600e/testbench.vhd | 8 + designs/leon3-digilent-xc3s1600e/tkconfig.h | 34 +- .../.config | 173 +- designs/leon3-digilent-xc7z020/Makefile | 59 + designs/leon3-digilent-xc7z020/README.txt | 172 + .../ahbrom.vhd | 13 +- .../config.help | 199 +- .../config.in | 17 +- .../config.vhd | 98 +- .../config.vhd.h | 26 +- .../config.vhd.in | 3 + .../__xps/ise/_xmsgs/.gitignore | 0 .../leon3_zedboard/__xps/ise/xmsgprops.lst | 3 + .../leon3_zedboard/data/leon3_zedboard.ncf | 8 + .../leon3_zedboard/data/leon3_zedboard.ucf | 8 + .../leon3_zedboard/data/leon3_zedboard.xdc | 8 + .../leon3_zedboard/data/ps7_constraints.ucf | 94 + .../leon3_zedboard/data/ps7_constraints.xdc | 240 + .../data/ps7_leon3_zedboard_prj.xml | 87 + .../edk_files/leon3_zedboard/etc/bitgen.ut | 1 + .../edk_files/leon3_zedboard/etc/download.cmd | 6 + .../leon3_zedboard/etc/fast_runtime.opt | 84 + .../leon3_zedboard/etc/leon3_zedboard.filters | 147 + .../leon3_zedboard/etc/leon3_zedboard.gui | 204 + .../leon3_zedboard/leon3_zedboard.mhs | 175 + .../leon3_zedboard/leon3_zedboard.xmp | 29 + .../leon3_zedboard/pcores/.gitignore | 0 .../lconfig.tk | 3668 ++- .../leon3_zedboard_stub_sim.vhd | 65 + designs/leon3-digilent-xc7z020/leon3mp.vhd | 457 + designs/leon3-digilent-xc7z020/testbench.vhd | 179 + .../tkconfig.h | 115 +- designs/leon3-digilent-xup/Makefile | 6 +- designs/leon3-digilent-xup/ahbrom.vhd | 1 - designs/leon3-digilent-xup/config.help | 79 +- designs/leon3-digilent-xup/lconfig.tk | 2315 +- designs/leon3-digilent-xup/leon3mp.vhd | 2 +- designs/leon3-digilent-xup/testbench.vhd | 2 +- designs/leon3-digilent-xup/tkconfig.h | 34 +- designs/leon3-ge-hpe-midi-ep2s180/Makefile | 131 - designs/leon3-ge-hpe-midi-ep2s180/README.txt | 6 - designs/leon3-ge-hpe-midi-ep2s180/ahbrom.vhd | 184 - designs/leon3-ge-hpe-midi-ep2s180/config.in | 92 - .../leon3-ge-hpe-midi-ep2s180/config.vhd.in | 53 - designs/leon3-ge-hpe-midi-ep2s180/defconfig | 239 - designs/leon3-ge-hpe-midi-ep2s180/indata | 176 - designs/leon3-ge-hpe-midi-ep2s180/leon3hpe.h | 16 - .../leon3-ge-hpe-midi-ep2s180/leon3hpe.vhd | 1207 - designs/leon3-ge-hpe-midi-ep2s180/linkprom | 155 - designs/leon3-ge-hpe-midi-ep2s180/prom.h | 10 - designs/leon3-ge-hpe-midi-ep2s180/sram.srec | 19492 ---------------- designs/leon3-ge-hpe-midi-ep2s180/systest.c | 10 - .../leon3-ge-hpe-midi-ep2s180/testbench.vhd | 733 - designs/leon3-ge-hpe-midi-ep2s180/wave.do | 44 - designs/leon3-ge-hpe-mini-lattice/Makefile | 33 - designs/leon3-ge-hpe-mini-lattice/README.txt | 9 - designs/leon3-ge-hpe-mini-lattice/ahbrom.vhd | 172 - .../clkgen_lattice_ea.vhd | 154 - designs/leon3-ge-hpe-mini-lattice/config.help | 1034 - designs/leon3-ge-hpe-mini-lattice/config.vhd | 212 - .../leon3-ge-hpe-mini-lattice/config.vhd.h | 176 - .../leon3-ge-hpe-mini-lattice/config.vhd.in | 57 - designs/leon3-ge-hpe-mini-lattice/defconfig | 252 - designs/leon3-ge-hpe-mini-lattice/leon3mini.h | 22 - .../leon3-ge-hpe-mini-lattice/leon3mini.vhd | 794 - designs/leon3-ge-hpe-mini-lattice/linkprom | 155 - designs/leon3-ge-hpe-mini-lattice/prom.h | 10 - designs/leon3-ge-hpe-mini-lattice/prom.srec | 37 - designs/leon3-ge-hpe-mini-lattice/sdram.srec | 19492 ---------------- designs/leon3-ge-hpe-mini-lattice/sram.srec | 19492 ---------------- .../leon3-ge-hpe-mini-lattice/testbench.vhd | 501 - designs/leon3-ge-hpe-mini-lattice/tkconfig.h | 1063 - designs/leon3-ge-hpe-mini-lattice/wave.do | 186 - designs/leon3-ge-hpe-mini/Makefile | 50 - designs/leon3-ge-hpe-mini/README.txt | 57 - designs/leon3-ge-hpe-mini/ahbrom.vhd | 172 - designs/leon3-ge-hpe-mini/config.vhd.in | 57 - designs/leon3-ge-hpe-mini/defconfig | 239 - designs/leon3-ge-hpe-mini/leon3mini.h | 22 - designs/leon3-ge-hpe-mini/leon3mini.vhd | 717 - designs/leon3-ge-hpe-mini/linkprom | 155 - designs/leon3-ge-hpe-mini/sram.srec | 19492 ---------------- designs/leon3-ge-hpe-mini/systest.c | 10 - designs/leon3-ge-hpe-mini/testbench.vhd | 472 - designs/leon3-ge-hpe-mini/wave.do | 128 - designs/leon3-gr-cpci-xc2v6000/Makefile | 6 +- designs/leon3-gr-cpci-xc2v6000/ahbrom.vhd | 1 - designs/leon3-gr-cpci-xc2v6000/config.help | 79 +- designs/leon3-gr-cpci-xc2v6000/lconfig.tk | 2924 ++- designs/leon3-gr-cpci-xc2v6000/leon3mp.vhd | 2 +- designs/leon3-gr-cpci-xc2v6000/testbench.vhd | 2 +- designs/leon3-gr-cpci-xc2v6000/tkconfig.h | 34 +- designs/leon3-gr-cpci-xc4v/Makefile | 6 +- designs/leon3-gr-cpci-xc4v/config.help | 72 +- designs/leon3-gr-cpci-xc4v/lconfig.tk | 2898 ++- designs/leon3-gr-cpci-xc4v/leon3mp.vhd | 2 +- designs/leon3-gr-cpci-xc4v/testbench.vhd | 2 +- designs/leon3-gr-cpci-xc4v/tkconfig.h | 22 + designs/leon3-gr-pci-xc2v3000/Makefile | 6 +- designs/leon3-gr-pci-xc2v3000/ahbrom.vhd | 1 - designs/leon3-gr-pci-xc2v3000/config.help | 79 +- designs/leon3-gr-pci-xc2v3000/lconfig.tk | 2737 ++- designs/leon3-gr-pci-xc2v3000/leon3mp.vhd | 2 +- designs/leon3-gr-pci-xc2v3000/testbench.vhd | 2 +- designs/leon3-gr-pci-xc2v3000/tkconfig.h | 34 +- designs/leon3-gr-pci-xc5v/Makefile | 8 +- designs/leon3-gr-pci-xc5v/config.help | 72 +- designs/leon3-gr-pci-xc5v/lconfig.tk | 2978 ++- designs/leon3-gr-pci-xc5v/leon3mp.vhd | 2 +- designs/leon3-gr-pci-xc5v/testbench.vhd | 2 +- designs/leon3-gr-pci-xc5v/tkconfig.h | 22 + designs/leon3-gr-xc3s-1500/.config | 11 +- designs/leon3-gr-xc3s-1500/Makefile | 4 +- designs/leon3-gr-xc3s-1500/ahbrom.vhd | 1 - designs/leon3-gr-xc3s-1500/config.help | 105 +- designs/leon3-gr-xc3s-1500/config.in | 5 - designs/leon3-gr-xc3s-1500/config.vhd | 7 - designs/leon3-gr-xc3s-1500/config.vhd.h | 7 - designs/leon3-gr-xc3s-1500/doc/Makefile | 2 - .../doc/leon3-gr-xc3s-1500.pdf | Bin 1643559 -> 0 bytes designs/leon3-gr-xc3s-1500/lconfig.tk | 3287 +-- designs/leon3-gr-xc3s-1500/leon3mp.vhd | 77 +- designs/leon3-gr-xc3s-1500/sdram.srec | 9871 ++++---- designs/leon3-gr-xc3s-1500/sram.srec | 9871 ++++---- designs/leon3-gr-xc3s-1500/testbench.vhd | 52 +- designs/leon3-gr-xc3s-1500/tkconfig.h | 53 +- designs/leon3-gr-xc3s-1500/vga_clkgen.vhd | 2 +- designs/leon3-gr-xc6s/.config | 25 +- designs/leon3-gr-xc6s/Makefile | 38 +- designs/leon3-gr-xc6s/README.txt | 352 +- designs/leon3-gr-xc6s/ahb2mig_grxc6s_2p.vhd | 62 +- designs/leon3-gr-xc6s/ahbrom.vhd | 1 - designs/leon3-gr-xc6s/config.help | 266 +- designs/leon3-gr-xc6s/config.in | 10 - designs/leon3-gr-xc6s/config.vhd | 54 +- designs/leon3-gr-xc6s/config.vhd.h | 52 +- designs/leon3-gr-xc6s/lconfig.tk | 3893 ++- designs/leon3-gr-xc6s/leon3mp.ucf | 205 +- designs/leon3-gr-xc6s/leon3mp.vhd | 365 +- .../mcb_soft_calibration_patch.txt | 1049 + .../memc3_infrastructure_patch.txt | 93 + designs/leon3-gr-xc6s/mig.diff | 170 +- designs/leon3-gr-xc6s/mig39/coregen.cgc | 953 + .../mig39}/coregen.cgp | 10 +- designs/leon3-gr-xc6s/mig39/mig.prj | 62 + .../mig39}/mig.xco | 16 +- designs/leon3-gr-xc6s/mig_patch.txt | 123 + designs/leon3-gr-xc6s/res.txt | 13 - designs/leon3-gr-xc6s/spacewire.ucf | 13 +- designs/leon3-gr-xc6s/svga2ch7301c.vhd | 2 +- designs/leon3-gr-xc6s/systest.c | 27 +- designs/leon3-gr-xc6s/testbench.vhd | 28 +- designs/leon3-gr-xc6s/tkconfig.h | 186 +- designs/leon3-gr-xc6s/usb.ucf | 32 +- designs/leon3-gr-xc6s/usb_spartan6_pll.vhd | 183 + designs/leon3-gr-xc6s/vga_clkgen.vhd | 2 +- designs/leon3-jopdesign-ep1c12/Makefile | 5 +- designs/leon3-jopdesign-ep1c12/ahbrom.vhd | 1 - designs/leon3-jopdesign-ep1c12/config.help | 79 +- designs/leon3-jopdesign-ep1c12/lconfig.tk | 2917 ++- designs/leon3-jopdesign-ep1c12/leon3mp.vhd | 2 +- designs/leon3-jopdesign-ep1c12/testbench.vhd | 2 +- designs/leon3-jopdesign-ep1c12/tkconfig.h | 34 +- designs/leon3-lattice-latticeECP3/.config | 285 - designs/leon3-lattice-latticeECP3/Makefile | 38 - designs/leon3-lattice-latticeECP3/README.txt | 116 - designs/leon3-lattice-latticeECP3/default.sdc | 52 - designs/leon3-lattice-latticeECP3/lconfig.tk | 5280 ----- designs/leon3-lattice-latticeECP3/leon3mp.pty | 3 - designs/leon3-lattice-latticeECP3/leon3mp.vhd | 496 - designs/leon3-lattice-latticeECP3/prom.S | 190 - designs/leon3-lattice-latticeECP3/systest.c | 17 - .../leon3-lattice-latticeECP3/testbench.vhd | 305 - designs/leon3-lattice-latticeECP3/wave.do | 68 - designs/leon3-memec-v2mb1000/Makefile | 4 +- designs/leon3-memec-v2mb1000/ahbrom.vhd | 1 - designs/leon3-memec-v2mb1000/config.help | 79 +- designs/leon3-memec-v2mb1000/lconfig.tk | 2315 +- designs/leon3-memec-v2mb1000/leon3mp.vhd | 2 +- designs/leon3-memec-v2mb1000/testbench.vhd | 2 +- designs/leon3-memec-v2mb1000/tkconfig.h | 34 +- designs/leon3-nuhorizons-3s1500/Makefile | 8 +- designs/leon3-nuhorizons-3s1500/ahbrom.vhd | 1 - designs/leon3-nuhorizons-3s1500/config.help | 87 +- designs/leon3-nuhorizons-3s1500/config.vhd.h | 3 +- designs/leon3-nuhorizons-3s1500/lconfig.tk | 2443 +- designs/leon3-nuhorizons-3s1500/leon3mp.vhd | 2 +- designs/leon3-nuhorizons-3s1500/nuhosp3.vhd | 1 - designs/leon3-nuhorizons-3s1500/smc_mctrl.vhd | 1 - designs/leon3-nuhorizons-3s1500/testbench.vhd | 2 +- designs/leon3-nuhorizons-3s1500/tkconfig.h | 38 +- designs/leon3-terasic-de0-nano/Makefile | 8 +- designs/leon3-terasic-de0-nano/ahbrom.vhd | 1 - designs/leon3-terasic-de0-nano/clkgen_de0.vhd | 2 +- designs/leon3-terasic-de0-nano/config.help | 72 +- designs/leon3-terasic-de0-nano/lconfig.tk | 2244 +- designs/leon3-terasic-de0-nano/leon3mp.vhd | 2 +- designs/leon3-terasic-de0-nano/sdctrl16.vhd | 3 +- designs/leon3-terasic-de0-nano/testbench.vhd | 2 +- designs/leon3-terasic-de0-nano/tkconfig.h | 22 + designs/leon3-terasic-de2-115/Makefile | 8 +- designs/leon3-terasic-de2-115/config.help | 79 +- designs/leon3-terasic-de2-115/lconfig.tk | 2360 +- designs/leon3-terasic-de2-115/leon3mp.vhd | 2 +- designs/leon3-terasic-de2-115/testbench.vhd | 2 +- designs/leon3-terasic-de2-115/tkconfig.h | 34 +- designs/leon3-wildcard-xcv300e/.config | 63 - designs/leon3-wildcard-xcv300e/Makefile | 33 - designs/leon3-wildcard-xcv300e/config.in | 18 - designs/leon3-wildcard-xcv300e/config.vhd | 72 - designs/leon3-wildcard-xcv300e/host_arch.vhd | 518 - designs/leon3-wildcard-xcv300e/lconfig.tk | 3284 --- designs/leon3-wildcard-xcv300e/pe_arch.vhd | 173 - designs/leon3-wildcard-xcv300e/readme.txt | 24 - designs/leon3-wildcard-xcv300e/system_cfg.vhd | 75 - designs/leon3-wildcard-xcv300e/wave.do | 79 - designs/leon3-wildcard-xcv300e/wildfpga.vhd | 588 - .../.config | 175 +- designs/leon3-xilinx-kc705/Makefile | 67 + designs/leon3-xilinx-kc705/README.txt | 225 + designs/leon3-xilinx-kc705/ahb2mig.vhd | 708 + designs/leon3-xilinx-kc705/ahbrom.vhd | 231 + .../config.help | 325 +- .../config.in | 33 +- .../config.vhd | 202 +- .../config.vhd.h | 102 +- .../config.vhd.in | 3 + designs/leon3-xilinx-kc705/ddr_dummy.vhd | 141 + .../lconfig.tk | 3676 +-- designs/leon3-xilinx-kc705/leon3mp.vhd | 644 + .../leon3-xilinx-kc705/mig_interface_model.v | 168 + .../leon3-xilinx-kc705/preload_ddr3_dimm.do | 52 + .../prom.h | 4 +- .../prom.srec | 16 +- .../sdram.srec | 10515 ++++----- .../systest.c | 2 + designs/leon3-xilinx-kc705/testbench.vhd | 513 + .../tkconfig.h | 316 +- designs/leon3-xilinx-ml403/Makefile | 6 +- designs/leon3-xilinx-ml403/ahbrom.vhd | 1 - designs/leon3-xilinx-ml403/config.help | 79 +- designs/leon3-xilinx-ml403/doc/Makefile | 2 - .../leon3-xilinx-ml403/doc/leon3-ml401.pdf | Bin 215497 -> 0 bytes designs/leon3-xilinx-ml403/lconfig.tk | 2315 +- designs/leon3-xilinx-ml403/leon3mp.vhd | 5 +- designs/leon3-xilinx-ml403/testbench.vhd | 2 +- designs/leon3-xilinx-ml403/tkconfig.h | 34 +- designs/leon3-xilinx-ml40x/Makefile | 6 +- designs/leon3-xilinx-ml40x/ahbrom.vhd | 1 - designs/leon3-xilinx-ml40x/config.help | 79 +- designs/leon3-xilinx-ml40x/doc/Makefile | 2 - .../leon3-xilinx-ml40x/doc/leon3-ml401.pdf | Bin 215497 -> 0 bytes designs/leon3-xilinx-ml40x/lconfig.tk | 2315 +- designs/leon3-xilinx-ml40x/leon3mp.vhd | 7 +- designs/leon3-xilinx-ml40x/testbench.vhd | 2 +- designs/leon3-xilinx-ml40x/tkconfig.h | 34 +- designs/leon3-xilinx-ml501/Makefile | 10 +- designs/leon3-xilinx-ml501/README.txt | 3 + designs/leon3-xilinx-ml501/ahb2mig_ml50x.vhd | 3 +- designs/leon3-xilinx-ml501/ahbrom.vhd | 1 - designs/leon3-xilinx-ml501/config.help | 79 +- designs/leon3-xilinx-ml501/lconfig.tk | 2315 +- designs/leon3-xilinx-ml501/leon3mp.vhd | 2 +- designs/leon3-xilinx-ml501/svga2ch7301c.vhd | 2 +- designs/leon3-xilinx-ml501/testbench.vhd | 2 +- designs/leon3-xilinx-ml501/tkconfig.h | 38 +- designs/leon3-xilinx-ml50x/Makefile | 10 +- designs/leon3-xilinx-ml50x/README.txt | 3 +- designs/leon3-xilinx-ml50x/ahb2mig_ml50x.vhd | 3 +- designs/leon3-xilinx-ml50x/ahbrom.vhd | 1 - designs/leon3-xilinx-ml50x/config.help | 72 +- designs/leon3-xilinx-ml50x/grlib_config.vhd | 15 +- designs/leon3-xilinx-ml50x/lconfig.tk | 2307 +- designs/leon3-xilinx-ml50x/leon3mp.vhd | 2 +- designs/leon3-xilinx-ml50x/svga2ch7301c.vhd | 2 +- designs/leon3-xilinx-ml50x/testbench.vhd | 2 +- designs/leon3-xilinx-ml50x/tkconfig.h | 26 + designs/leon3-xilinx-ml510/.config | 27 +- designs/leon3-xilinx-ml510/Makefile | 47 +- designs/leon3-xilinx-ml510/README.txt | 518 +- designs/leon3-xilinx-ml510/ahb2mig_ml510.vhd | 435 - designs/leon3-xilinx-ml510/ahbrom.vhd | 1 - designs/leon3-xilinx-ml510/config.help | 87 +- designs/leon3-xilinx-ml510/config.in | 1 - designs/leon3-xilinx-ml510/config.vhd | 15 +- designs/leon3-xilinx-ml510/config.vhd.h | 13 +- designs/leon3-xilinx-ml510/coregen.cgc | 978 - designs/leon3-xilinx-ml510/ddr2_udimm.cfg | 387 - designs/leon3-xilinx-ml510/lconfig.tk | 3327 +-- designs/leon3-xilinx-ml510/leon3mp.vhd | 206 +- designs/leon3-xilinx-ml510/leon3mp_mig.ucf | 1286 - designs/leon3-xilinx-ml510/mig.diff | 98 - designs/leon3-xilinx-ml510/mig.prj | 61 - designs/leon3-xilinx-ml510/mig_ddr2.prj | 61 - designs/leon3-xilinx-ml510/mig_rdimm.prj | 61 - designs/leon3-xilinx-ml510/mig_rdimm_333.prj | 61 - designs/leon3-xilinx-ml510/rdimm_ddr2.diff | 834 - designs/leon3-xilinx-ml510/svga2ch7301c.vhd | 2 +- designs/leon3-xilinx-ml510/testbench.vhd | 29 +- designs/leon3-xilinx-ml510/tkconfig.h | 46 +- designs/leon3-xilinx-ml605/.config | 28 +- designs/leon3-xilinx-ml605/Makefile | 32 +- designs/leon3-xilinx-ml605/README.txt | 56 +- designs/leon3-xilinx-ml605/ahb2mig_ml605.vhd | 3 +- designs/leon3-xilinx-ml605/ahbrom.vhd | 1 - designs/leon3-xilinx-ml605/config.help | 36 +- designs/leon3-xilinx-ml605/config.vhd | 8 +- designs/leon3-xilinx-ml605/grlib_config.vhd | 15 +- designs/leon3-xilinx-ml605/lconfig.tk | 2290 +- designs/leon3-xilinx-ml605/leon3mp.ucf | 2 + designs/leon3-xilinx-ml605/leon3mp.vhd | 214 +- designs/leon3-xilinx-ml605/leon3mp_mig39.ucf | 195 + designs/leon3-xilinx-ml605/mig.xco | 84 +- designs/leon3-xilinx-ml605/mig39.cgp | 22 + designs/leon3-xilinx-ml605/mig39.prj | 194 + designs/leon3-xilinx-ml605/mig39.xco | 49 + .../mig_infrastructure_patch.txt | 109 + .../mig_iodelay_ctrl_patch.txt | 18 + designs/leon3-xilinx-ml605/mig_patch.txt | 159 + designs/leon3-xilinx-ml605/mig_ucf_patch.txt | 204 + .../leon3-xilinx-ml605/preload_ddr3_dimm.do | 40 + designs/leon3-xilinx-ml605/prom.S | 244 - designs/leon3-xilinx-ml605/prom.srec | 30 +- designs/leon3-xilinx-ml605/sdram.srec | 10456 ++++----- designs/leon3-xilinx-ml605/sram.srec | 9445 +++----- designs/leon3-xilinx-ml605/svga2ch7301c.vhd | 2 +- designs/leon3-xilinx-ml605/testbench.vhd | 93 +- designs/leon3-xilinx-ml605/tkconfig.h | 20 + designs/leon3-xilinx-sp601/Makefile | 34 +- designs/leon3-xilinx-sp601/README.txt | 164 +- designs/leon3-xilinx-sp601/ahb2mig_sp601.vhd | 3 +- designs/leon3-xilinx-sp601/ahbrom.vhd | 1 - designs/leon3-xilinx-sp601/config.help | 78 +- designs/leon3-xilinx-sp601/config.vhd.h | 1 + designs/leon3-xilinx-sp601/lconfig.tk | 2365 +- designs/leon3-xilinx-sp601/leon3mp.ucf | 16 +- designs/leon3-xilinx-sp601/leon3mp.vhd | 3 +- .../mcb_soft_calibration_patch.txt | 1049 + designs/leon3-xilinx-sp601/mig39/coregen.cgc | 873 + designs/leon3-xilinx-sp601/mig39/coregen.cgp | 22 + designs/leon3-xilinx-sp601/mig39/mig.prj | 62 + designs/leon3-xilinx-sp601/mig39/mig.xco | 42 + designs/leon3-xilinx-sp601/mig39/mig_39.xco | 49 + designs/leon3-xilinx-sp601/mig_patch.txt | 41 + designs/leon3-xilinx-sp601/testbench.vhd | 2 +- designs/leon3-xilinx-sp601/tkconfig.h | 30 + designs/leon3-xilinx-sp605/Makefile | 30 +- designs/leon3-xilinx-sp605/README.txt | 221 +- designs/leon3-xilinx-sp605/ahb2mig_sp605.vhd | 4 +- designs/leon3-xilinx-sp605/ahbrom.vhd | 1 - designs/leon3-xilinx-sp605/config.help | 78 +- designs/leon3-xilinx-sp605/config.vhd.h | 1 + designs/leon3-xilinx-sp605/lconfig.tk | 2372 +- designs/leon3-xilinx-sp605/leon3mp.ucf | 7 +- designs/leon3-xilinx-sp605/leon3mp.vhd | 14 +- .../mcb_soft_calibration_patch.txt | 1049 + .../memc3_infrastructure_patch.txt | 96 + designs/leon3-xilinx-sp605/mig39/coregen.cgc | 953 + designs/leon3-xilinx-sp605/mig39/coregen.cgp | 22 + designs/leon3-xilinx-sp605/mig39/mig.prj | 63 + designs/leon3-xilinx-sp605/mig39/mig.xco | 46 + designs/leon3-xilinx-sp605/mig39/mig_39.xco | 49 + designs/leon3-xilinx-sp605/mig_patch.txt | 62 + designs/leon3-xilinx-sp605/res.txt | 13 - designs/leon3-xilinx-sp605/svga2ch7301c.vhd | 2 +- designs/leon3-xilinx-sp605/testbench.vhd | 2 +- designs/leon3-xilinx-sp605/tkconfig.h | 30 + designs/leon3-xilinx-sp605/vga_clkgen.vhd | 2 +- .../.config | 159 +- designs/leon3-xilinx-vc707/Makefile | 67 + designs/leon3-xilinx-vc707/README.txt | 224 + designs/leon3-xilinx-vc707/ahb2mig.vhd | 708 + designs/leon3-xilinx-vc707/ahbrom.vhd | 231 + .../config.help | 251 +- .../config.in | 25 +- .../config.vhd | 179 +- .../config.vhd.h | 69 +- .../config.vhd.in | 3 +- designs/leon3-xilinx-vc707/ddr_dummy.vhd | 141 + .../lconfig.tk | 3445 +-- designs/leon3-xilinx-vc707/leon3mp.vhd | 650 + .../leon3-xilinx-vc707/mig_interface_model.v | 163 + .../leon3-xilinx-vc707/preload_ddr3_dimm.do | 52 + .../prom.h | 4 +- .../prom.srec | 18 +- .../sdram.srec | 10515 ++++----- designs/leon3-xilinx-vc707/systest.c | 20 + designs/leon3-xilinx-vc707/testbench.vhd | 514 + .../tkconfig.h | 247 +- designs/leon3-xilinx-xc3sd-1800/Makefile | 6 +- designs/leon3-xilinx-xc3sd-1800/ahbrom.vhd | 1 - designs/leon3-xilinx-xc3sd-1800/config.help | 85 +- designs/leon3-xilinx-xc3sd-1800/config.vhd.h | 1 + designs/leon3-xilinx-xc3sd-1800/lconfig.tk | 2373 +- designs/leon3-xilinx-xc3sd-1800/leon3mp.vhd | 2 +- designs/leon3-xilinx-xc3sd-1800/testbench.vhd | 2 +- designs/leon3-xilinx-xc3sd-1800/tkconfig.h | 38 +- designs/leon3-ztex-ufm-111/Makefile | 33 +- designs/leon3-ztex-ufm-111/README.txt | 19 +- designs/leon3-ztex-ufm-111/ahb2mig_ztex.vhd | 3 +- designs/leon3-ztex-ufm-111/ahbrom.vhd | 1 - designs/leon3-ztex-ufm-111/config.help | 79 +- designs/leon3-ztex-ufm-111/lconfig.tk | 2245 +- designs/leon3-ztex-ufm-111/leon3mp.ucf | 10 +- designs/leon3-ztex-ufm-111/leon3mp.vhd | 2 +- .../mcb_soft_calibration_patch.txt | 1049 + .../memc3_infrastructure_patch.txt | 61 + designs/leon3-ztex-ufm-111/mig39/coregen.cgc | 985 + designs/leon3-ztex-ufm-111/mig39/coregen.cgp | 22 + designs/leon3-ztex-ufm-111/mig39/mig.prj | 55 + designs/leon3-ztex-ufm-111/mig39/mig.xco | 42 + designs/leon3-ztex-ufm-111/mig39/mig_39.xco | 49 + designs/leon3-ztex-ufm-111/mig_patch.txt | 41 + designs/leon3-ztex-ufm-111/testbench.vhd | 2 +- designs/leon3-ztex-ufm-111/tkconfig.h | 38 +- designs/leon3-ztex-ufm-115/Makefile | 32 +- designs/leon3-ztex-ufm-115/README.txt | 19 +- designs/leon3-ztex-ufm-115/ahb2mig_ztex.vhd | 3 +- designs/leon3-ztex-ufm-115/ahbrom.vhd | 1 - designs/leon3-ztex-ufm-115/config.help | 79 +- designs/leon3-ztex-ufm-115/lconfig.tk | 2245 +- designs/leon3-ztex-ufm-115/leon3mp.ucf | 10 +- designs/leon3-ztex-ufm-115/leon3mp.vhd | 2 +- .../mcb_soft_calibration_patch.txt | 1049 + .../memc3_infrastructure_patch.txt | 61 + designs/leon3-ztex-ufm-115/mig39/coregen.cgc | 985 + designs/leon3-ztex-ufm-115/mig39/coregen.cgp | 22 + designs/leon3-ztex-ufm-115/mig39/mig.prj | 62 + designs/leon3-ztex-ufm-115/mig39/mig.xco | 42 + designs/leon3-ztex-ufm-115/mig39/mig_39.xco | 49 + designs/leon3-ztex-ufm-115/mig_patch.txt | 41 + designs/leon3-ztex-ufm-115/testbench.vhd | 2 +- designs/leon3-ztex-ufm-115/tkconfig.h | 38 +- designs/leon3mp/ahbrom.vhd | 1 - designs/leon3mp/config.help | 79 +- designs/leon3mp/lconfig.tk | 2917 ++- designs/leon3mp/leon3mp.vhd | 2 +- designs/leon3mp/systest.c | 2 + designs/leon3mp/testbench.vhd | 2 +- designs/leon3mp/tkconfig.h | 34 +- designs/netcard/Makefile | 8 +- designs/netcard/config.help | 86 +- designs/netcard/config.vhd.h | 4 + designs/netcard/lconfig.tk | 304 +- designs/netcard/netcard.vhd | 2 +- designs/netcard/tkconfig.h | 64 +- doc/Changelog.txt | 165 +- doc/grip.pdf | Bin 6618576 -> 7111482 bytes doc/grlib.pdf | Bin 959113 -> 987649 bytes doc/guide.pdf | Bin 0 -> 184407 bytes lib/esa/memoryctrl/mctrl.vhd | 12 - lib/eth/comp/ethcomp.vhd | 14 +- lib/eth/core/eth_ahb_mst.vhd | 2 +- lib/eth/core/eth_edcl_ahb_mst.vhd | 2 +- lib/eth/core/eth_rstgen.vhd | 2 +- lib/eth/core/greth_pkg.vhd | 5 +- lib/eth/core/greth_rx.vhd | 15 +- lib/eth/core/greth_tx.vhd | 2 +- lib/eth/core/grethc.vhd | 42 +- lib/eth/wrapper/greth_gbit_gen.vhd | 4 +- lib/eth/wrapper/greth_gen.vhd | 11 +- lib/gaisler/ambatest/ahb_tbfunct.vhd | 2 +- lib/gaisler/ambatest/ahbmst_em.vhd | 2 +- lib/gaisler/ambatest/ahbslv_em.vhd | 4 +- lib/gaisler/ambatest/ahbtbm.vhd | 2 +- lib/gaisler/ambatest/ahbtbp.vhd | 2 +- lib/gaisler/ambatest/ahbtbs.vhd | 3 +- lib/gaisler/ambatest/ambatest.vhd | 2 +- lib/gaisler/arith/arith.vhd | 2 +- lib/gaisler/arith/div32.vhd | 2 +- lib/gaisler/arith/mul32.vhd | 12 +- lib/gaisler/ata/ata.in | 9 - lib/gaisler/ata/ata.in.h | 19 - lib/gaisler/ata/ata.in.help | 26 - lib/gaisler/ata/ata.in.vhd | 7 - lib/gaisler/ata/ata.vhd | 94 - lib/gaisler/ata/ata_inf.vhd | 92 - lib/gaisler/ata/atactrl.vhd | 88 - lib/gaisler/ata/atactrl_dma.vhd | 551 - lib/gaisler/ata/atactrl_nodma.vhd | 363 - lib/gaisler/ata/atahost_ahbmst.vhd | 272 - lib/gaisler/ata/atahost_amba_slave.vhd | 506 - lib/gaisler/ata/atahost_dma_fifo.vhd | 151 - lib/gaisler/ata/ocidec2_amba_slave.vhd | 403 - lib/gaisler/ata/vhdlsyn.txt | 10 - lib/gaisler/can/can.vhd | 2 +- lib/gaisler/can/can_mc.vhd | 3 +- lib/gaisler/can/can_mod.vhd | 2 +- lib/gaisler/can/can_oc.vhd | 3 +- lib/gaisler/can/can_rd.vhd | 3 +- lib/gaisler/ddr/ahb2mig_series7.vhd | 748 + lib/gaisler/ddr/ahb2mig_series7_pkg.vhd | 581 + lib/gaisler/ddr/ddr1spax.vhd | 12 +- lib/gaisler/ddr/ddr1spax_ddr.vhd | 70 +- lib/gaisler/ddr/ddr2buf.vhd | 2 +- lib/gaisler/ddr/ddr2spa.vhd | 56 +- lib/gaisler/ddr/ddr2spax.vhd | 15 +- lib/gaisler/ddr/ddr2spax_ahb.vhd | 4 +- lib/gaisler/ddr/ddr2spax_ddr.vhd | 36 +- lib/gaisler/ddr/ddrphy_wrap.vhd | 99 +- lib/gaisler/ddr/ddrpkg.vhd | 108 +- lib/gaisler/ddr/ddrsp.vhd | 3 +- lib/gaisler/ddr/ddrspa.vhd | 14 +- lib/gaisler/ddr/mig.in.h | 4 + lib/gaisler/ddr/mig_interface_model.v | 194 + lib/gaisler/ddr/mig_series7.in | 4 + lib/gaisler/ddr/mig_series7.in.h | 4 + lib/gaisler/ddr/mig_series7.in.vhd | 3 + lib/gaisler/ddr/vhdlsyn.txt | 2 + lib/gaisler/ddr/vlogsim.txt | 1 + lib/gaisler/ddrv1/ahb_slv.vhd | 3 +- lib/gaisler/ddrv1/ddr2sp16a.vhd | 3 +- lib/gaisler/ddrv1/ddr2sp32a.vhd | 3 +- lib/gaisler/ddrv1/ddr2sp64a.vhd | 3 +- lib/gaisler/ddrv1/ddr2spa.vhd | 2 +- lib/gaisler/ddrv1/ddrctrl.vhd | 2 +- lib/gaisler/ddrv1/ddrphy_wrap.vhd | 37 +- lib/gaisler/ddrv1/ddrpkg.vhd | 2 +- lib/gaisler/ddrv1/ddrrec.vhd | 2 +- lib/gaisler/ddrv1/ddrsp.vhd | 3 +- lib/gaisler/ddrv1/ddrsp16a.vhd | 3 +- lib/gaisler/ddrv1/ddrsp32a.vhd | 3 +- lib/gaisler/ddrv1/ddrsp64a.vhd | 3 +- lib/gaisler/ddrv1/ddrspa.vhd | 2 +- lib/gaisler/ddrv1/hs.vhd | 2 +- lib/gaisler/ddrv1/vhdlsyn.txt | 16 + lib/gaisler/dirs.txt | 14 +- lib/gaisler/gr1553b/gr1553b_pads.vhd | 2 +- lib/gaisler/gr1553b/gr1553b_pkg.vhd | 2 +- lib/gaisler/gr1553b/gr1553b_stdlogic.vhd | 3 +- lib/gaisler/gr1553b/simtrans1553.vhd | 2 +- lib/gaisler/gr1553bv1/core/gr1553b.vhd | 567 - lib/gaisler/gr1553bv1/core/gr1553b_apb.vhd | 705 - .../gr1553bv1/core/gr1553b_bc_control.vhd | 835 - .../gr1553bv1/core/gr1553b_bc_proto.vhd | 575 - lib/gaisler/gr1553bv1/core/gr1553b_bm.vhd | 618 - lib/gaisler/gr1553bv1/core/gr1553b_codec.vhd | 463 - lib/gaisler/gr1553bv1/core/gr1553b_core.vhd | 1025 - lib/gaisler/gr1553bv1/core/gr1553b_dma2.vhd | 904 - .../gr1553bv1/core/gr1553b_fstimer.vhd | 179 - .../gr1553bv1/core/gr1553b_loopback.vhd | 229 - .../gr1553bv1/core/gr1553b_mhztick.vhd | 200 - .../gr1553bv1/core/gr1553b_rt_control.vhd | 652 - .../gr1553bv1/core/gr1553b_rt_proto.vhd | 735 - lib/gaisler/gr1553bv1/core/gr1553b_rx1.vhd | 310 - lib/gaisler/gr1553bv1/core/gr1553b_rx12v5.vhd | 333 - lib/gaisler/gr1553bv1/core/gr1553b_rx1pe.vhd | 342 - lib/gaisler/gr1553bv1/core/gr1553b_rx2.vhd | 154 - .../gr1553bv1/core/gr1553b_rx23sync.vhd | 191 - lib/gaisler/gr1553bv1/core/gr1553b_rx3.vhd | 160 - lib/gaisler/gr1553bv1/core/gr1553b_tx1.vhd | 167 - .../gr1553bv1/core/gr1553b_tx12sync.vhd | 191 - lib/gaisler/gr1553bv1/core/gr1553b_tx2.vhd | 170 - lib/gaisler/gr1553bv1/gr1553b.in.vhd | 7 - lib/gaisler/gr1553bv1/gr1553b_2.in.vhd | 5 - lib/gaisler/gr1553bv1/gr1553b_pkg.vhd | 394 - lib/gaisler/gr1553bv1/test/combine1553.vhd | 126 - lib/gaisler/gr1553bv1/test/gr1553b_tgapb.vhd | 493 - lib/gaisler/gr1553bv1/test/simtrans1553.vhd | 130 - lib/gaisler/gr1553bv1/wrap/gr1553b_nlw.vhd | 142 - lib/gaisler/gr1553bv1/wrap/gr1553b_pads.vhd | 95 - .../gr1553bv1/wrap/gr1553b_stdlogic.vhd | 204 - lib/gaisler/greth/ethernet_mac.vhd | 2 +- lib/gaisler/greth/greth.vhd | 11 +- lib/gaisler/greth/greth_gbit.vhd | 41 +- lib/gaisler/greth/greth_gbit_mb.vhd | 41 +- lib/gaisler/greth/greth_mb.vhd | 11 +- lib/gaisler/greth/grethm.vhd | 15 +- .../gaisler/greth}/rgmii.vhd | 95 +- lib/gaisler/greth/vhdlsyn.txt | 2 +- lib/gaisler/i2c/i2c.vhd | 2 +- lib/gaisler/i2c/i2c2ahb.vhd | 2 +- lib/gaisler/i2c/i2c2ahb_apb.vhd | 2 +- lib/gaisler/i2c/i2c2ahb_apb_gen.vhd | 2 +- lib/gaisler/i2c/i2c2ahb_gen.vhd | 2 +- lib/gaisler/i2c/i2c2ahbx.vhd | 2 +- lib/gaisler/i2c/i2cmst.vhd | 2 +- lib/gaisler/i2c/i2cmst_gen.vhd | 2 +- lib/gaisler/i2c/i2cslv.vhd | 2 +- lib/gaisler/irqmp/irqamp.vhd | 724 - lib/gaisler/irqmp/irqamp2x.vhd | 156 - lib/gaisler/irqmp/irqmp.vhd | 9 +- lib/gaisler/irqmp/irqmp2x.vhd | 146 - lib/gaisler/jtag/ahbjtag.vhd | 23 +- lib/gaisler/jtag/ahbjtag_bsd.vhd | 2 +- lib/gaisler/jtag/bscanregs.vhd | 2 +- lib/gaisler/jtag/bscanregsbd.vhd | 2 +- lib/gaisler/jtag/jtag.vhd | 38 +- lib/gaisler/jtag/jtagcom.vhd | 3 +- lib/gaisler/jtag/jtagtst.vhd | 115 +- lib/gaisler/jtag/libjtagcom.vhd | 2 +- lib/gaisler/leon3/cpu_disasx.vhd | 2 +- lib/gaisler/leon3/dsu3.vhd | 9 +- lib/gaisler/leon3/dsu3_2x.vhd | 72 - lib/gaisler/leon3/dsu3x.vhd | 3 +- lib/gaisler/leon3/leon3.in | 532 +- lib/gaisler/leon3/leon3.in.h | 8 + lib/gaisler/leon3/leon3.in.help | 28 + lib/gaisler/leon3/leon3.vhd | 84 +- lib/gaisler/{leon3v2 => leon3}/libcache.vhd | 51 +- lib/gaisler/{leon3v2 => leon3}/libiu.vhd | 7 +- lib/gaisler/leon3/tbufmem.vhd | 2 +- lib/gaisler/leon3/vhdlsyn.txt | 4 + lib/gaisler/leon3ftv2/leon3ft.vhd | 189 + lib/gaisler/leon3ftv2/leon3net.in | 54 + .../gaisler/leon3ftv2/leon3net.in.h | 53 +- .../gaisler/leon3ftv2/leon3net.in.help | 75 +- .../gaisler/leon3ftv2/leon3net.in.vhd | 9 +- lib/gaisler/leon3ftv2/vhdlsyn.txt | 1 + lib/gaisler/{leon3v2 => leon3v1}/cachemem.vhd | 269 +- lib/gaisler/leon3v1/grfpuw.vhd | 87 + lib/gaisler/leon3v1/grfpwx.vhd | 146 + lib/gaisler/{leon3v2 => leon3v1}/grfpwxsh.vhd | 27 +- lib/gaisler/leon3v1/grlfpwx.vhd | 143 + lib/gaisler/{leon3v2 => leon3v1}/iu3.vhd | 564 +- lib/gaisler/leon3v1/leon3cg.vhd | 210 + lib/gaisler/{leon3v2 => leon3v1}/leon3s.vhd | 127 +- lib/gaisler/leon3v1/leon3sh.vhd | 196 + .../libleon3.vhd => leon3v1/libproc3.vhd} | 105 +- .../grlfpwx.vhd => leon3v1/mfpwx.vhd} | 83 +- .../{leon3v2 => leon3v1}/mmu_acache.vhd | 38 +- .../{leon3v2 => leon3v1}/mmu_cache.vhd | 35 +- .../{leon3v2 => leon3v1}/mmu_dcache.vhd | 675 +- .../{leon3v2 => leon3v1}/mmu_icache.vhd | 323 +- lib/gaisler/{leon3v2 => leon3v1}/proc3.vhd | 36 +- lib/gaisler/leon3v1/vhdlsyn.txt | 12 + lib/gaisler/leon3v2/grfpwx.vhd | 237 - lib/gaisler/leon3v2/libfpu.vhd | 121 - lib/gaisler/leon3v2/regfile_3p_l3.vhd | 84 - lib/gaisler/leon3v2/vhdlsyn.txt | 23 - lib/gaisler/memctrl/memctrl.vhd | 10 +- lib/gaisler/memctrl/sdctrl.vhd | 3 +- lib/gaisler/memctrl/sdctrl64.vhd | 3 +- lib/gaisler/memctrl/sdmctrl.vhd | 2 +- lib/gaisler/memctrl/srctrl.vhd | 3 +- lib/gaisler/misc/ahb_mst_iface.vhd | 2 +- lib/gaisler/misc/ahbdpram.vhd | 3 +- lib/gaisler/misc/ahbmst2.vhd | 2 +- lib/gaisler/misc/ahbram.vhd | 37 +- lib/gaisler/misc/ahbstat.vhd | 10 +- lib/gaisler/misc/ahbtrace.vhd | 2 +- lib/gaisler/misc/ahbtrace_mb.vhd | 2 +- lib/gaisler/misc/ahbtrace_mmb.vhd | 3 +- lib/gaisler/misc/apbps2.vhd | 9 +- lib/gaisler/misc/apbvga.vhd | 10 +- lib/gaisler/misc/charrom.vhd | 2 +- lib/gaisler/misc/charrom_package.vhd | 2 +- lib/gaisler/misc/gptimer.vhd | 9 +- lib/gaisler/misc/gracectrl.vhd | 3 +- lib/gaisler/misc/grgpio.vhd | 18 +- lib/gaisler/misc/grgprbank.vhd | 2 +- lib/gaisler/misc/grgpreg.vhd | 2 +- lib/gaisler/misc/grsysmon.vhd | 3 +- lib/gaisler/misc/logan.vhd | 2 +- lib/gaisler/misc/misc.vhd | 111 +- lib/gaisler/misc/rstgen.vhd | 2 +- lib/gaisler/misc/svgactrl.vhd | 10 +- lib/gaisler/misc/vhdlsyn.txt | 5 +- lib/gaisler/misc/wild.vhd | 124 - lib/gaisler/misc/wild2ahb.vhd | 586 - lib/gaisler/net/net.vhd | 38 +- lib/gaisler/pci/dmactrl.vhd | 3 +- lib/gaisler/pci/pci.vhd | 7 +- lib/gaisler/pci/pci_mt.vhd | 2 +- lib/gaisler/pci/pci_mtf.vhd | 3 +- lib/gaisler/pci/pci_target.vhd | 2 +- lib/gaisler/pci/pci_tbfunct.vhd | 2 +- lib/gaisler/pci/pciahbmst.vhd | 2 +- lib/gaisler/pci/pcidma.vhd | 2 +- lib/gaisler/pci/pcilib.vhd | 2 +- lib/gaisler/pci/pcipads.vhd | 71 +- lib/gaisler/pci/pcitb.vhd | 2 +- lib/gaisler/pci/pcitb_arb.vhd | 2 +- lib/gaisler/pci/pcitb_clkgen.vhd | 2 +- lib/gaisler/pci/pcitb_master.vhd | 2 +- lib/gaisler/pci/pcitb_master_script.vhd | 2 +- lib/gaisler/pci/pcitb_monitor.vhd | 2 +- lib/gaisler/pci/pcitb_target.vhd | 2 +- lib/gaisler/pci/pcitrace.vhd | 2 +- lib/gaisler/pci/pt/pt_pci_arb.vhd | 2 +- lib/gaisler/pci/pt/pt_pci_master.vhd | 2 +- lib/gaisler/pci/pt/pt_pci_monitor.vhd | 2 +- lib/gaisler/pci/pt/pt_pci_target.vhd | 2 +- lib/gaisler/pci/pt/pt_pkg.vhd | 2 +- lib/gaisler/pci/vhdlsyn.txt | 1 + lib/gaisler/sim/ahbrep.vhd | 3 +- lib/gaisler/sim/ata_device.vhd | 391 - lib/gaisler/sim/delay_wire.vhd | 2 +- lib/gaisler/sim/grusb_dclsim.vhd | 482 - lib/gaisler/sim/grusbdcsim.vhd | 173 - lib/gaisler/sim/phy.vhd | 2 +- lib/gaisler/sim/pwm_check.vhd | 2 +- lib/gaisler/sim/sim.vhd | 44 +- lib/gaisler/sim/slavecheck.vhd | 2 +- lib/gaisler/sim/sram.vhd | 2 +- lib/gaisler/sim/sram16.vhd | 2 +- lib/gaisler/sim/usbsim.vhd | 1544 -- lib/gaisler/spacewire/grspw.vhd | 9 +- lib/gaisler/spacewire/grspw2.vhd | 160 +- lib/gaisler/spacewire/grspwm.vhd | 4 +- lib/gaisler/spacewire/spacewire.vhd | 23 +- lib/gaisler/spi/spi.vhd | 52 +- lib/gaisler/spi/spi2ahb.vhd | 2 +- lib/gaisler/spi/spi2ahb_apb.vhd | 2 +- lib/gaisler/spi/spi2ahbx.vhd | 2 +- lib/gaisler/spi/spi_flash.vhd | 4 +- lib/gaisler/spi/spictrl.vhd | 82 +- lib/gaisler/spi/spictrlx.vhd | 462 +- lib/gaisler/spi/spimctrl.vhd | 3 +- lib/gaisler/srmmu/libmmu.vhd | 2 +- lib/gaisler/srmmu/mmu.vhd | 8 +- lib/gaisler/srmmu/mmuconfig.vhd | 2 +- lib/gaisler/srmmu/mmuiface.vhd | 14 +- lib/gaisler/srmmu/mmulru.vhd | 2 +- lib/gaisler/srmmu/mmulrue.vhd | 2 +- lib/gaisler/srmmu/mmutlb.vhd | 34 +- lib/gaisler/srmmu/mmutlbcam.vhd | 2 +- lib/gaisler/srmmu/mmutw.vhd | 2 +- lib/gaisler/uart/ahbuart.vhd | 10 +- lib/gaisler/uart/apbuart.vhd | 9 +- lib/gaisler/uart/dcom.vhd | 2 +- lib/gaisler/uart/dcom_uart.vhd | 2 +- lib/gaisler/uart/libdcom.vhd | 2 +- lib/gaisler/uart/uart.vhd | 2 +- lib/gaisler/usb/grusb.vhd | 10 +- lib/gaisler/usb/vhdlsyn.txt | 2 +- lib/gleichmann/ac97/ac97.vhd | 34 - lib/gleichmann/ac97/ac97_oc.in | 2 - lib/gleichmann/ac97/ac97_oc.in.h | 4 - lib/gleichmann/ac97/ac97_oc.in.help | 3 - lib/gleichmann/ac97/ac97_oc.in.vhd | 3 - lib/gleichmann/ac97/ac97_oc.vhd | 355 - lib/gleichmann/ac97/vhdlsyn.txt | 2 - lib/gleichmann/ac97/vlogsyn.txt | 2 - lib/gleichmann/ahb2hpi/ahb2hpi.in | 2 - lib/gleichmann/ahb2hpi/ahb2hpi.in.h | 4 - lib/gleichmann/ahb2hpi/ahb2hpi.in.help | 3 - lib/gleichmann/ahb2hpi/ahb2hpi.in.vhd | 3 - lib/gleichmann/ahb2hpi/ahb2hpi2_ea.vhd | 427 - lib/gleichmann/ahb2hpi/hpi_p.vhd | 48 - lib/gleichmann/ahb2hpi/hpi_ram_ea.vhd | 158 - lib/gleichmann/ahb2hpi/vhdlsyn.txt | 3 - lib/gleichmann/clockgen/clockgenerator_ea.vhd | 95 - lib/gleichmann/clockgen/ge_clkgen_p.vhd | 19 - lib/gleichmann/clockgen/vhdlsyn.txt | 2 - lib/gleichmann/dac/adc_sigdelt_ea.vhd | 58 - lib/gleichmann/dac/adcdac.in | 2 - lib/gleichmann/dac/adcdac.in.h | 4 - lib/gleichmann/dac/adcdac.in.help | 3 - lib/gleichmann/dac/adcdac.in.vhd | 3 - lib/gleichmann/dac/adcdac_ea.vhd | 134 - lib/gleichmann/dac/dac_ahb.in | 2 - lib/gleichmann/dac/dac_ahb.in.h | 4 - lib/gleichmann/dac/dac_ahb.in.help | 3 - lib/gleichmann/dac/dac_ahb.in.vhd | 3 - lib/gleichmann/dac/dac_ahb_ea.vhd | 157 - lib/gleichmann/dac/dac_p.vhd | 72 - lib/gleichmann/dac/dac_sigdelt_ea.vhd | 65 - lib/gleichmann/dac/vhdlsyn.txt | 6 - lib/gleichmann/dirs.txt | 9 - lib/gleichmann/i2c/i2c.vhd | 23 - lib/gleichmann/i2c/partoi2s.vhd | 179 - lib/gleichmann/i2c/vhdlsyn.txt | 1 - lib/gleichmann/miscellaneous/ahb2wb.v | 254 - .../miscellaneous/miscellaneous_p.vhd | 82 - lib/gleichmann/miscellaneous/postponer.v | 80 - lib/gleichmann/miscellaneous/vhdlsyn.txt | 1 - lib/gleichmann/miscellaneous/vlogsyn.txt | 2 - lib/gleichmann/multiio/multiio.in | 2 - lib/gleichmann/multiio/multiio.in.h | 4 - lib/gleichmann/multiio/multiio.in.help | 3 - lib/gleichmann/multiio/multiio.in.vhd | 3 - lib/gleichmann/multiio/multiio_ea.vhd | 664 - lib/gleichmann/multiio/multiio_p.vhd | 239 - lib/gleichmann/multiio/vhdlsyn.txt | 2 - lib/gleichmann/sim/phy_ext.vhd | 266 - lib/gleichmann/sim/spi_slave_model.v | 151 - lib/gleichmann/sim/txt_util.vhd | 583 - lib/gleichmann/sim/uart_ext.vhd | 78 - lib/gleichmann/sim/vhdlsim.txt | 4 - lib/gleichmann/sim/vlogsim.txt | 1 - lib/gleichmann/spi/spi_oc.in | 2 - lib/gleichmann/spi/spi_oc.in.h | 4 - lib/gleichmann/spi/spi_oc.in.help | 3 - lib/gleichmann/spi/spi_oc.in.vhd | 3 - lib/gleichmann/spi/spi_oc_ea.vhd | 142 - lib/gleichmann/spi/spi_p.vhd | 17 - lib/gleichmann/spi/spi_xmit_ea.vhd | 101 - lib/gleichmann/spi/sspi_p.vhd | 38 - lib/gleichmann/spi/vhdlsyn.txt | 4 - lib/grlib/amba/ahbctrl.vhd | 26 +- lib/grlib/amba/ahbmst.vhd | 2 +- lib/grlib/amba/amba.vhd | 35 +- lib/grlib/amba/amba_tp.vhd | 2 +- lib/grlib/amba/apbctrl.vhd | 11 +- lib/grlib/amba/defmst.vhd | 2 +- lib/grlib/amba/devices.vhd | 34 +- lib/grlib/amba/dma2ahb.vhd | 2 +- lib/grlib/amba/dma2ahb_pkg.vhd | 2 +- lib/grlib/amba/dma2ahb_tp.vhd | 2 +- lib/grlib/amba/vhdlsyn.txt | 1 - lib/grlib/sparc/cpu_disas.vhd | 2 +- lib/grlib/sparc/sparc.vhd | 2 +- lib/grlib/sparc/sparc_disas.vhd | 2 +- lib/grlib/stdlib/config.vhd | 16 +- lib/grlib/stdlib/config_types.vhd | 47 + lib/grlib/stdlib/stdio.vhd | 14 +- lib/grlib/stdlib/stdio_tb.vhd | 2 +- lib/grlib/stdlib/stdlib.vhd | 2 +- lib/grlib/stdlib/testlib.vhd | 2 +- lib/grlib/stdlib/version.vhd | 6 +- lib/grlib/stdlib/vhdlsyn.txt | 1 + lib/grlib/util/fpudummy.vhd | 2 +- lib/grlib/util/util.vhd | 2 +- lib/libs.txt | 2 +- lib/micron/{ddr => ddr_sdram}/ddr2.v | 6 +- lib/micron/{ddr => ddr_sdram}/ddr3.v | 12 +- lib/micron/ddr_sdram/ddr3_model.v | 5577 +++++ lib/micron/ddr_sdram/ddr3_model_parameters.vh | 2895 +++ lib/micron/{ddr => ddr_sdram}/mobile_ddr.v | 6 +- lib/micron/{ddr => ddr_sdram}/mobile_ddr_fe.v | 6 +- lib/micron/{ddr => ddr_sdram}/mt46v16m16.vhd | 0 lib/micron/{ddr => ddr_sdram}/vhdlsim.txt | 0 lib/micron/{ddr => ddr_sdram}/vlogsim.txt | 1 + lib/micron/dirs.txt | 2 +- lib/opencores/ac97/ac97_top.v | 4124 ---- lib/opencores/ac97/vlogsyn.txt | 1 - lib/opencores/ata/ata_device_oc.v | 407 - lib/opencores/ata/atahost_controller.vhd | 670 - lib/opencores/ata/atahost_dma_actrl.vhd | 503 - lib/opencores/ata/atahost_dma_fifo.vhd | 154 - lib/opencores/ata/atahost_dma_tctrl.vhd | 236 - lib/opencores/ata/atahost_pio_actrl.vhd | 264 - lib/opencores/ata/atahost_pio_controller.vhd | 398 - lib/opencores/ata/atahost_pio_tctrl.vhd | 302 - lib/opencores/ata/ocidec2_controller.vhd | 354 - lib/opencores/ata/ro_cnt.vhd | 137 - lib/opencores/ata/ud_cnt.vhd | 109 - lib/opencores/ata/vhdlsyn.txt | 10 - lib/opencores/ata/vlogsim.txt | 1 - lib/opencores/dirs.txt | 2 +- lib/opencores/i2c/i2c_master_bit_ctrl.vhd | 8 +- lib/opencores/occomp/occomp.vhd | 254 - lib/opencores/occomp/vhdlsyn.txt | 1 - lib/opencores/spi/simple_spi_top.v | 487 - lib/opencores/spi/vlogsyn.txt | 2 - lib/praesum/ahbpassthru/ahbpassthru.in | 148 - lib/praesum/ahbpassthru/ahbpassthru.in.h | 500 - lib/praesum/ahbpassthru/ahbpassthru.in.vhd | 147 - lib/praesum/ahbpassthru/ahbpassthru_master.v | 70 - .../ahbpassthru/ahbpassthru_master_vhdl.vhd | 118 - lib/praesum/ahbpassthru/ahbpassthru_slave.v | 84 - .../ahbpassthru/ahbpassthru_slave_vhdl.vhd | 136 - .../ahbpassthru/ahbpassthru_verilog.vhd | 115 - lib/praesum/ahbpassthru/ahbpassthru_vhdl.vhd | 163 - lib/praesum/ahbpassthru/vhdlsyn.txt | 4 - lib/praesum/dirs.txt | 1 - lib/spw/comp/spwcomp.vhd | 20 +- lib/spw/wrapper/grspw2_gen.vhd | 19 +- lib/spw/wrapper/grspw_codec_gen.vhd | 2 +- lib/spw/wrapper/grspw_gen.vhd | 6 +- .../atc18/components/atmel_components.vhd | 2 +- lib/tech/atc18/components/atmel_simprims.vhd | 2 +- lib/tech/umc18/components/umc_components.vhd | 2 +- lib/tech/umc18/components/umc_simprims.vhd | 2 +- lib/tech/unisim/gr/unisim_VCOMP.vhd | 125 +- lib/tech/unisim/gr/unisim_VITAL.vhd | 4323 +++- lib/tech/unisim/ise/unisim_VCOMP.vhd | 125 +- lib/tech/unisim/ise/unisim_VITAL.vhd | 4323 +++- lib/tech/virage/simprims/virage_simprims.vhd | 2 +- .../virage/vcomponents/virage_vcomponents.vhd | 2 +- lib/techmap/altera_mf/clkgen_altera_mf.vhd | 2 +- lib/techmap/altera_mf/memory_altera_mf.vhd | 2 +- lib/techmap/altera_mf/tap_altera_mf.vhd | 2 +- lib/techmap/atc18/pads_atc18.vhd | 2 +- lib/techmap/clocks/clkgen.in | 3 +- lib/techmap/clocks/clkgen.in.h | 2 + lib/techmap/clocks/clkgen.in.help | 36 +- lib/techmap/cycloneiii/cycloneiii_clkgen.vhd | 2 +- lib/techmap/cycloneiii/cycloneiii_ddr_phy.vhd | 2 +- lib/techmap/dware/mul_dware.vhd | 2 +- lib/techmap/ec/ddr_ec.vhd | 2 +- lib/techmap/ec/memory_ec.vhd | 2 +- lib/techmap/eclipsee/memory_eclipse.vhd | 2 +- lib/techmap/gencomp/clkgen.in | 1 + lib/techmap/gencomp/clkgen.in.h | 2 + lib/techmap/gencomp/gencomp.vhd | 261 +- lib/techmap/gencomp/netcomp.vhd | 41 +- lib/techmap/gencomp/tech.in | 35 +- lib/techmap/gencomp/tech.in.com | 34 - lib/techmap/gencomp/tech.in.fpga | 31 - lib/techmap/gencomp/tech.in.h | 12 + lib/techmap/gencomp/tech.in.help | 8 +- lib/techmap/inferred/ddr_inferred.vhd | 2 +- lib/techmap/inferred/ddr_phy_inferred.vhd | 23 +- lib/techmap/inferred/ddrphy_datapath.vhd | 2 +- lib/techmap/inferred/memory_inferred.vhd | 7 +- lib/techmap/inferred/mul_inferred.vhd | 2 +- lib/techmap/inferred/sim_pll.vhd | 2 +- lib/techmap/maps/allclkgen.vhd | 22 +- lib/techmap/maps/allddr.vhd | 14 +- lib/techmap/maps/allmem.vhd | 4 +- lib/techmap/maps/allmul.vhd | 2 +- lib/techmap/maps/allpads.vhd | 5 +- lib/techmap/maps/alltap.vhd | 56 +- lib/techmap/maps/clkand.vhd | 2 +- lib/techmap/maps/clkgen.vhd | 7 +- lib/techmap/maps/clkmux.vhd | 7 +- lib/techmap/maps/clkpad.vhd | 4 +- lib/techmap/maps/clkpad_ds.vhd | 4 +- lib/techmap/maps/cpu_disas_net.vhd | 2 +- lib/techmap/maps/ddr_ireg.vhd | 2 +- lib/techmap/maps/ddr_oreg.vhd | 2 +- lib/techmap/maps/ddrphy.vhd | 60 +- lib/techmap/maps/grfpw_net.vhd | 2 +- lib/techmap/maps/grgates.vhd | 2 +- lib/techmap/maps/grlfpw_net.vhd | 2 +- lib/techmap/maps/grpci2_phy_net.vhd | 2 +- lib/techmap/maps/grspwc2_net.vhd | 1129 - lib/techmap/maps/grspwc_net.vhd | 1071 - lib/techmap/maps/grusbhc_net.vhd | 429 +- lib/techmap/maps/inpad.vhd | 2 +- lib/techmap/maps/inpad_ddr.vhd | 2 +- lib/techmap/maps/inpad_ds.vhd | 5 +- lib/techmap/maps/iodpad.vhd | 2 +- lib/techmap/maps/iopad.vhd | 2 +- lib/techmap/maps/iopad_ddr.vhd | 2 +- lib/techmap/maps/iopad_ds.vhd | 2 +- lib/techmap/maps/leon4_net.vhd | 22 +- lib/techmap/maps/lvds_combo.vhd | 2 +- lib/techmap/maps/mul_61x61.vhd | 20 +- lib/techmap/maps/nandtree.vhd | 2 +- lib/techmap/maps/odpad.vhd | 2 +- lib/techmap/maps/outpad.vhd | 2 +- lib/techmap/maps/outpad_ddr.vhd | 2 +- lib/techmap/maps/outpad_ds.vhd | 2 +- lib/techmap/maps/regfile_3p.vhd | 10 +- lib/techmap/maps/ringosc.vhd | 2 +- lib/techmap/maps/scanreg.vhd | 29 +- lib/techmap/maps/sdram_phy.vhd | 10 +- lib/techmap/maps/skew_outpad.vhd | 2 +- lib/techmap/maps/spictrl_net.vhd | 14 +- lib/techmap/maps/ssrctrl_net.vhd | 13 +- lib/techmap/maps/syncfifo.vhd | 2 +- lib/techmap/maps/syncram.vhd | 81 +- lib/techmap/maps/syncram128.vhd | 20 +- lib/techmap/maps/syncram128bw.vhd | 26 +- lib/techmap/maps/syncram156bw.vhd | 36 +- lib/techmap/maps/syncram256bw.vhd | 28 +- lib/techmap/maps/syncram64.vhd | 19 +- lib/techmap/maps/syncram_2p.vhd | 86 +- lib/techmap/maps/syncram_2pbw.vhd | 17 +- lib/techmap/maps/syncram_dp.vhd | 78 +- lib/techmap/maps/syncrambw.vhd | 24 +- lib/techmap/maps/system_monitor.vhd | 80 +- lib/techmap/maps/tap.vhd | 37 +- lib/techmap/maps/techbuf.vhd | 2 +- lib/techmap/maps/techmult.vhd | 2 +- lib/techmap/maps/toutpad.vhd | 2 +- lib/techmap/maps/toutpad_ds.vhd | 2 +- lib/techmap/stratixii/clkgen_stratixii.vhd | 2 +- lib/techmap/stratixii/grusbhc_stratixii.vhd | 111 +- lib/techmap/stratixii/stratixii_ddr_phy.vhd | 2 +- lib/techmap/stratixiii/clkgen_stratixiii.vhd | 2 +- lib/techmap/umc18/memory_umc18.vhd | 2 +- lib/techmap/umc18/pads_umc18.vhd | 2 +- lib/techmap/unisim/buffer_unisim.vhd | 2 +- lib/techmap/unisim/clkgen_unisim.vhd | 180 +- lib/techmap/unisim/ddr_phy_unisim.vhd | 33 +- lib/techmap/unisim/ddr_unisim.vhd | 54 +- lib/techmap/unisim/grspwc2_unisim.vhd | 649 - lib/techmap/unisim/grspwc_unisim.vhd | 449 - lib/techmap/unisim/grusbhc_unisim.vhd | 110 +- lib/techmap/unisim/memory_unisim.vhd | 28 +- lib/techmap/unisim/pads_unisim.vhd | 176 +- lib/techmap/unisim/spictrl_unisim.vhd | 10 + lib/techmap/unisim/ssrctrl_unisim.vhd | 5 +- lib/techmap/unisim/sysmon_unisim.vhd | 2 +- lib/techmap/unisim/tap_unisim.vhd | 183 +- lib/techmap/unisim/vhdlsyn.txt | 4 - lib/techmap/virage/memory_virage.vhd | 2 +- lib/work/debug/cpu_disas.vhd | 2 +- lib/work/debug/debug.vhd | 2 +- lib/work/debug/grtestmod.vhd | 2 +- software/greth/greth_api.c | 4 +- software/grpci2/Makefile | 2 - software/grpci2/grpci2api.c | 190 - software/grpci2/grpci2api.h | 336 - software/grpci2/grpci2extra.c | 174 - software/grpci2/grpci2extra.h | 48 - software/grpci2/grpci2test.c | 189 - software/l2c/Makefile | 2 - software/l2c/l2capi.c | 418 - software/l2c/l2capi.h | 225 - software/l2c/l2cextra.c | 105 - software/l2c/l2cextra.h | 6 - software/l2c/l2ctest.c | 184 - software/leon3/Makefile | 81 +- software/leon3/atactrl.c | 54 - software/leon3/base_test4.c | 16 - software/leon3/brm_1553.c | 335 - software/leon3/gr1553b_test.c | 197 - software/leon3/greth.c | 1 + software/leon3/greth_throughput.c | 99 - software/leon3/griommu.c | 553 - software/leon3/griommu.h | 126 - software/leon3/grpci2.c | 557 - software/leon3/grpwm.c | 302 - software/leon3/grusbhc.c | 2 +- software/leon3/hpi_defs.h | 44 - software/leon3/hpi_functions.c | 149 - software/leon3/hpi_functions.h | 50 - software/leon3/hpi_new.c | 77 - software/leon3/l2c.c | 97 - software/leon3/l4stat.c | 100 - software/leon3/leon4_test.c | 25 - software/leon3/memscrub_test.c | 74 - software/leon3/router.c | 140 - software/leon3/rt_1553.c | 157 - software/leon3/satcan.c | 435 - software/leon3/spictrl.c | 71 + software/leon3/spwrouter.c | 453 - software/spw/Makefile | 2 +- software/spw/router_test.c | 1786 -- software/spw/router_test_18x.c | 1823 -- software/spw/router_test_dual.c | 1859 -- software/spw/router_test_dual_single_link.c | 1603 -- .../spw/router_test_dual_single_link_rasta.c | 1152 - software/spw/router_test_ngmp.c | 1823 -- software/spw/router_test_single-loopback.c | 670 - 1267 files changed, 157706 insertions(+), 270875 deletions(-) delete mode 100644 bin/make.ise delete mode 100644 bin/make.template delete mode 100755 bin/xstverilog delete mode 100755 bin/xstvhdl create mode 100644 boards/digilent-zedboard-xc7z020/Makefile.inc create mode 100644 boards/digilent-zedboard-xc7z020/digilent-zedboard-xc7z020.ucf create mode 100644 boards/digilent-zedboard-xc7z020/readme.txt delete mode 100644 boards/ge-hpe-midi-ep2s180/Makefile.inc delete mode 100644 boards/ge-hpe-midi-ep2s180/default.sdc delete mode 100644 boards/ge-hpe-midi-ep2s180/leon3hpe.qsf delete mode 100644 boards/ge-hpe-midi-ep2s60/Makefile.inc delete mode 100644 boards/ge-hpe-midi-ep2s60/default.sdc delete mode 100644 boards/ge-hpe-midi-ep2s60/leon3hpe.qsf delete mode 100644 boards/ge-hpe-midi-ep2s90/Makefile.inc delete mode 100644 boards/ge-hpe-midi-ep2s90/default.sdc delete mode 100644 boards/ge-hpe-midi-ep2s90/leon3hpe.qsf delete mode 100755 boards/ge-hpe-mini-lattice/Makefile.inc delete mode 100755 boards/ge-hpe-mini-lattice/default.sdc delete mode 100644 boards/ge-hpe-mini-lattice/default.ut delete mode 100644 boards/ge-hpe-mini-lattice/leon3mini.lpf delete mode 100644 boards/ge-hpe-mini-lattice/leon3mini.prf delete mode 100644 boards/ge-hpe-mini-lattice2/Makefile.inc delete mode 100644 boards/ge-hpe-mini-lattice2/default.sdc delete mode 100644 boards/ge-hpe-mini-lattice2/default.ut delete mode 100644 boards/ge-hpe-mini-lattice2/leon3mini.lpf delete mode 100644 boards/ge-hpe-mini-lattice2/leon3mini.prf delete mode 100755 boards/ge-hpe-mini/Makefile.inc delete mode 100755 boards/ge-hpe-mini/default.sdc delete mode 100755 boards/ge-hpe-mini/leon3mini.qsf delete mode 100644 boards/gr-cpci-ax/Makefile.inc delete mode 100644 boards/gr-cpci-ax/ReadMe.txt delete mode 100644 boards/gr-cpci-ax/ax_oblique640.jpg delete mode 100644 boards/gr-cpci-ax/check-624-all.txt delete mode 100644 boards/gr-cpci-ax/check-624-io.txt delete mode 100644 boards/gr-cpci-ax/check-896-io.txt delete mode 100644 boards/gr-cpci-ax/config.h delete mode 100644 boards/gr-cpci-ax/default.sdc delete mode 100644 boards/gr-cpci-ax/designer_352_CQFP.pdc delete mode 100644 boards/gr-cpci-ax/designer_352_CQFP.sdc delete mode 100644 boards/gr-cpci-ax/designer_624_CCGA.pdc delete mode 100644 boards/gr-cpci-ax/designer_624_CCGA.sdc delete mode 100644 boards/gr-cpci-ax/designer_896_FBGA.pdc delete mode 100644 boards/gr-cpci-ax/designer_896_FBGA.sdc delete mode 100644 boards/gr-cpci-ax/designer_896_FBGA_1553.pdc delete mode 100644 boards/gr-cpci-ax/gr-cpci-ax2000-ccga624.xls delete mode 100644 boards/gr-cpci-ax/gr-cpci-ax2000-cqfp352.xls delete mode 100755 boards/lattice-ecp3-lfe3-35ea/Makefile.inc delete mode 100644 boards/lattice-ecp3-lfe3-35ea/default.ut delete mode 100644 boards/lattice-ecp3-lfe3-35ea/leon3mp.lpf delete mode 100644 boards/wildcard-xcv300e/Makefile.inc delete mode 100644 boards/wildcard-xcv300e/default.sdc delete mode 100644 boards/wildcard-xcv300e/default.ucf delete mode 100644 boards/wildcard-xcv300e/default.ut delete mode 100644 boards/wildcard-xcv300e/wildcard.mkf create mode 100644 boards/xilinx-kc705-xc7k325t/Makefile.inc create mode 100644 boards/xilinx-kc705-xc7k325t/fpga.cmd create mode 100644 boards/xilinx-kc705-xc7k325t/mig.cgp create mode 100644 boards/xilinx-kc705-xc7k325t/mig.prj create mode 100644 boards/xilinx-kc705-xc7k325t/mig.xco create mode 100644 boards/xilinx-kc705-xc7k325t/readme.txt create mode 100644 boards/xilinx-kc705-xc7k325t/xilinx-kc705-xc7k325t.xdc create mode 100644 boards/xilinx-vc707-xc7vx485t/Makefile.inc create mode 100644 boards/xilinx-vc707-xc7vx485t/mig.cgp create mode 100644 boards/xilinx-vc707-xc7vx485t/mig.prj create mode 100644 boards/xilinx-vc707-xc7vx485t/mig.xco create mode 100644 boards/xilinx-vc707-xc7vx485t/readme.txt create mode 100644 boards/xilinx-vc707-xc7vx485t/xilinx-vc707-xc7vx485t.xdc delete mode 100644 designs/basic_passthru/.config delete mode 100644 designs/basic_passthru/Makefile delete mode 100644 designs/basic_passthru/README.txt delete mode 100644 designs/basic_passthru/basic_passthru.v delete mode 100644 designs/basic_passthru/config.in delete mode 100644 designs/basic_passthru/config.vhd delete mode 100644 designs/basic_passthru/leon3mp_core.vhd delete mode 100644 designs/basic_passthru/test_basic_passthru.v rename designs/{leon3-ge-hpe-mini-lattice => leon3-digilent-xc7z020}/.config (66%) mode change 100755 => 100644 create mode 100644 designs/leon3-digilent-xc7z020/Makefile create mode 100644 designs/leon3-digilent-xc7z020/README.txt rename designs/{basic_passthru => leon3-digilent-xc7z020}/ahbrom.vhd (96%) rename designs/{leon3-lattice-latticeECP3 => leon3-digilent-xc7z020}/config.help (86%) rename designs/{leon3-lattice-latticeECP3 => leon3-digilent-xc7z020}/config.in (75%) rename designs/{leon3-lattice-latticeECP3 => leon3-digilent-xc7z020}/config.vhd (60%) rename designs/{leon3-lattice-latticeECP3 => leon3-digilent-xc7z020}/config.vhd.h (87%) rename designs/{leon3-wildcard-xcv300e => leon3-digilent-xc7z020}/config.vhd.in (99%) create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/__xps/ise/_xmsgs/.gitignore create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/__xps/ise/xmsgprops.lst create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.ncf create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.ucf create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.xdc create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_constraints.ucf create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_constraints.xdc create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_leon3_zedboard_prj.xml create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/bitgen.ut create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/download.cmd create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/fast_runtime.opt create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/leon3_zedboard.filters create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/leon3_zedboard.gui create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/leon3_zedboard.mhs create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/leon3_zedboard.xmp create mode 100644 designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/pcores/.gitignore rename designs/{leon3-ge-hpe-mini => leon3-digilent-xc7z020}/lconfig.tk (65%) create mode 100644 designs/leon3-digilent-xc7z020/leon3_zedboard_stub_sim.vhd create mode 100644 designs/leon3-digilent-xc7z020/leon3mp.vhd create mode 100644 designs/leon3-digilent-xc7z020/testbench.vhd rename designs/{leon3-lattice-latticeECP3 => leon3-digilent-xc7z020}/tkconfig.h (93%) delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/Makefile delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/README.txt delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/ahbrom.vhd delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/config.in delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/config.vhd.in delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/defconfig delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/indata delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/leon3hpe.h delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/leon3hpe.vhd delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/linkprom delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/prom.h delete mode 100755 designs/leon3-ge-hpe-midi-ep2s180/sram.srec delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/systest.c delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/testbench.vhd delete mode 100644 designs/leon3-ge-hpe-midi-ep2s180/wave.do delete mode 100755 designs/leon3-ge-hpe-mini-lattice/Makefile delete mode 100644 designs/leon3-ge-hpe-mini-lattice/README.txt delete mode 100644 designs/leon3-ge-hpe-mini-lattice/ahbrom.vhd delete mode 100644 designs/leon3-ge-hpe-mini-lattice/clkgen_lattice_ea.vhd delete mode 100644 designs/leon3-ge-hpe-mini-lattice/config.help delete mode 100644 designs/leon3-ge-hpe-mini-lattice/config.vhd delete mode 100644 designs/leon3-ge-hpe-mini-lattice/config.vhd.h delete mode 100644 designs/leon3-ge-hpe-mini-lattice/config.vhd.in delete mode 100755 designs/leon3-ge-hpe-mini-lattice/defconfig delete mode 100644 designs/leon3-ge-hpe-mini-lattice/leon3mini.h delete mode 100644 designs/leon3-ge-hpe-mini-lattice/leon3mini.vhd delete mode 100755 designs/leon3-ge-hpe-mini-lattice/linkprom delete mode 100644 designs/leon3-ge-hpe-mini-lattice/prom.h delete mode 100755 designs/leon3-ge-hpe-mini-lattice/prom.srec delete mode 100755 designs/leon3-ge-hpe-mini-lattice/sdram.srec delete mode 100755 designs/leon3-ge-hpe-mini-lattice/sram.srec delete mode 100644 designs/leon3-ge-hpe-mini-lattice/testbench.vhd delete mode 100644 designs/leon3-ge-hpe-mini-lattice/tkconfig.h delete mode 100644 designs/leon3-ge-hpe-mini-lattice/wave.do delete mode 100644 designs/leon3-ge-hpe-mini/Makefile delete mode 100644 designs/leon3-ge-hpe-mini/README.txt delete mode 100644 designs/leon3-ge-hpe-mini/ahbrom.vhd delete mode 100644 designs/leon3-ge-hpe-mini/config.vhd.in delete mode 100755 designs/leon3-ge-hpe-mini/defconfig delete mode 100644 designs/leon3-ge-hpe-mini/leon3mini.h delete mode 100644 designs/leon3-ge-hpe-mini/leon3mini.vhd delete mode 100755 designs/leon3-ge-hpe-mini/linkprom delete mode 100755 designs/leon3-ge-hpe-mini/sram.srec delete mode 100644 designs/leon3-ge-hpe-mini/systest.c delete mode 100644 designs/leon3-ge-hpe-mini/testbench.vhd delete mode 100644 designs/leon3-ge-hpe-mini/wave.do delete mode 100644 designs/leon3-gr-xc3s-1500/doc/Makefile delete mode 100644 designs/leon3-gr-xc3s-1500/doc/leon3-gr-xc3s-1500.pdf create mode 100644 designs/leon3-gr-xc6s/mcb_soft_calibration_patch.txt create mode 100644 designs/leon3-gr-xc6s/memc3_infrastructure_patch.txt create mode 100644 designs/leon3-gr-xc6s/mig39/coregen.cgc rename designs/{leon3-xilinx-ml510 => leon3-gr-xc6s/mig39}/coregen.cgp (76%) create mode 100644 designs/leon3-gr-xc6s/mig39/mig.prj rename designs/{leon3-xilinx-ml510 => leon3-gr-xc6s/mig39}/mig.xco (79%) create mode 100644 designs/leon3-gr-xc6s/mig_patch.txt delete mode 100644 designs/leon3-gr-xc6s/res.txt create mode 100644 designs/leon3-gr-xc6s/usb_spartan6_pll.vhd delete mode 100755 designs/leon3-lattice-latticeECP3/.config delete mode 100644 designs/leon3-lattice-latticeECP3/Makefile delete mode 100644 designs/leon3-lattice-latticeECP3/README.txt delete mode 100644 designs/leon3-lattice-latticeECP3/default.sdc delete mode 100755 designs/leon3-lattice-latticeECP3/lconfig.tk delete mode 100644 designs/leon3-lattice-latticeECP3/leon3mp.pty delete mode 100644 designs/leon3-lattice-latticeECP3/leon3mp.vhd delete mode 100644 designs/leon3-lattice-latticeECP3/prom.S delete mode 100644 designs/leon3-lattice-latticeECP3/systest.c delete mode 100644 designs/leon3-lattice-latticeECP3/testbench.vhd delete mode 100644 designs/leon3-lattice-latticeECP3/wave.do delete mode 100644 designs/leon3-wildcard-xcv300e/.config delete mode 100644 designs/leon3-wildcard-xcv300e/Makefile delete mode 100644 designs/leon3-wildcard-xcv300e/config.in delete mode 100644 designs/leon3-wildcard-xcv300e/config.vhd delete mode 100644 designs/leon3-wildcard-xcv300e/host_arch.vhd delete mode 100755 designs/leon3-wildcard-xcv300e/lconfig.tk delete mode 100644 designs/leon3-wildcard-xcv300e/pe_arch.vhd delete mode 100644 designs/leon3-wildcard-xcv300e/readme.txt delete mode 100644 designs/leon3-wildcard-xcv300e/system_cfg.vhd delete mode 100644 designs/leon3-wildcard-xcv300e/wave.do delete mode 100644 designs/leon3-wildcard-xcv300e/wildfpga.vhd rename designs/{leon3-ge-hpe-midi-ep2s180 => leon3-xilinx-kc705}/.config (72%) create mode 100644 designs/leon3-xilinx-kc705/Makefile create mode 100644 designs/leon3-xilinx-kc705/README.txt create mode 100644 designs/leon3-xilinx-kc705/ahb2mig.vhd create mode 100644 designs/leon3-xilinx-kc705/ahbrom.vhd rename designs/{leon3-ge-hpe-midi-ep2s180 => leon3-xilinx-kc705}/config.help (86%) rename designs/{leon3-ge-hpe-mini => leon3-xilinx-kc705}/config.in (76%) rename designs/{leon3-ge-hpe-midi-ep2s180 => leon3-xilinx-kc705}/config.vhd (55%) rename designs/{leon3-ge-hpe-midi-ep2s180 => leon3-xilinx-kc705}/config.vhd.h (81%) rename designs/{basic_passthru => leon3-xilinx-kc705}/config.vhd.in (99%) create mode 100644 designs/leon3-xilinx-kc705/ddr_dummy.vhd rename designs/{leon3-ge-hpe-midi-ep2s180 => leon3-xilinx-kc705}/lconfig.tk (69%) create mode 100644 designs/leon3-xilinx-kc705/leon3mp.vhd create mode 100644 designs/leon3-xilinx-kc705/mig_interface_model.v create mode 100644 designs/leon3-xilinx-kc705/preload_ddr3_dimm.do rename designs/{leon3-lattice-latticeECP3 => leon3-xilinx-kc705}/prom.h (79%) rename designs/{leon3-ge-hpe-mini => leon3-xilinx-kc705}/prom.srec (75%) rename designs/{leon3-ge-hpe-midi-ep2s180 => leon3-xilinx-kc705}/sdram.srec (70%) rename designs/{leon3-ge-hpe-mini-lattice => leon3-xilinx-kc705}/systest.c (96%) create mode 100644 designs/leon3-xilinx-kc705/testbench.vhd rename designs/{leon3-ge-hpe-midi-ep2s180 => leon3-xilinx-kc705}/tkconfig.h (86%) delete mode 100644 designs/leon3-xilinx-ml403/doc/Makefile delete mode 100644 designs/leon3-xilinx-ml403/doc/leon3-ml401.pdf delete mode 100644 designs/leon3-xilinx-ml40x/doc/Makefile delete mode 100644 designs/leon3-xilinx-ml40x/doc/leon3-ml401.pdf delete mode 100644 designs/leon3-xilinx-ml510/ahb2mig_ml510.vhd delete mode 100644 designs/leon3-xilinx-ml510/coregen.cgc delete mode 100644 designs/leon3-xilinx-ml510/ddr2_udimm.cfg delete mode 100644 designs/leon3-xilinx-ml510/leon3mp_mig.ucf delete mode 100644 designs/leon3-xilinx-ml510/mig.diff delete mode 100644 designs/leon3-xilinx-ml510/mig.prj delete mode 100644 designs/leon3-xilinx-ml510/mig_ddr2.prj delete mode 100644 designs/leon3-xilinx-ml510/mig_rdimm.prj delete mode 100644 designs/leon3-xilinx-ml510/mig_rdimm_333.prj delete mode 100644 designs/leon3-xilinx-ml510/rdimm_ddr2.diff create mode 100644 designs/leon3-xilinx-ml605/leon3mp_mig39.ucf create mode 100644 designs/leon3-xilinx-ml605/mig39.cgp create mode 100644 designs/leon3-xilinx-ml605/mig39.prj create mode 100644 designs/leon3-xilinx-ml605/mig39.xco create mode 100644 designs/leon3-xilinx-ml605/mig_infrastructure_patch.txt create mode 100644 designs/leon3-xilinx-ml605/mig_iodelay_ctrl_patch.txt create mode 100644 designs/leon3-xilinx-ml605/mig_patch.txt create mode 100644 designs/leon3-xilinx-ml605/mig_ucf_patch.txt create mode 100644 designs/leon3-xilinx-ml605/preload_ddr3_dimm.do delete mode 100644 designs/leon3-xilinx-ml605/prom.S create mode 100644 designs/leon3-xilinx-sp601/mcb_soft_calibration_patch.txt create mode 100644 designs/leon3-xilinx-sp601/mig39/coregen.cgc create mode 100644 designs/leon3-xilinx-sp601/mig39/coregen.cgp create mode 100644 designs/leon3-xilinx-sp601/mig39/mig.prj create mode 100644 designs/leon3-xilinx-sp601/mig39/mig.xco create mode 100644 designs/leon3-xilinx-sp601/mig39/mig_39.xco create mode 100644 designs/leon3-xilinx-sp601/mig_patch.txt create mode 100644 designs/leon3-xilinx-sp605/mcb_soft_calibration_patch.txt create mode 100644 designs/leon3-xilinx-sp605/memc3_infrastructure_patch.txt create mode 100644 designs/leon3-xilinx-sp605/mig39/coregen.cgc create mode 100644 designs/leon3-xilinx-sp605/mig39/coregen.cgp create mode 100644 designs/leon3-xilinx-sp605/mig39/mig.prj create mode 100644 designs/leon3-xilinx-sp605/mig39/mig.xco create mode 100644 designs/leon3-xilinx-sp605/mig39/mig_39.xco create mode 100644 designs/leon3-xilinx-sp605/mig_patch.txt delete mode 100644 designs/leon3-xilinx-sp605/res.txt rename designs/{leon3-ge-hpe-mini => leon3-xilinx-vc707}/.config (72%) mode change 100755 => 100644 create mode 100644 designs/leon3-xilinx-vc707/Makefile create mode 100644 designs/leon3-xilinx-vc707/README.txt create mode 100644 designs/leon3-xilinx-vc707/ahb2mig.vhd create mode 100644 designs/leon3-xilinx-vc707/ahbrom.vhd rename designs/{leon3-ge-hpe-mini => leon3-xilinx-vc707}/config.help (85%) rename designs/{leon3-ge-hpe-mini-lattice => leon3-xilinx-vc707}/config.in (75%) rename designs/{leon3-ge-hpe-mini => leon3-xilinx-vc707}/config.vhd (55%) rename designs/{leon3-ge-hpe-mini => leon3-xilinx-vc707}/config.vhd.h (75%) rename designs/{leon3-lattice-latticeECP3 => leon3-xilinx-vc707}/config.vhd.in (89%) create mode 100644 designs/leon3-xilinx-vc707/ddr_dummy.vhd rename designs/{leon3-ge-hpe-mini-lattice => leon3-xilinx-vc707}/lconfig.tk (66%) create mode 100644 designs/leon3-xilinx-vc707/leon3mp.vhd create mode 100644 designs/leon3-xilinx-vc707/mig_interface_model.v create mode 100644 designs/leon3-xilinx-vc707/preload_ddr3_dimm.do rename designs/{leon3-ge-hpe-mini => leon3-xilinx-vc707}/prom.h (79%) rename designs/{leon3-ge-hpe-midi-ep2s180 => leon3-xilinx-vc707}/prom.srec (73%) rename designs/{leon3-ge-hpe-mini => leon3-xilinx-vc707}/sdram.srec (70%) create mode 100644 designs/leon3-xilinx-vc707/systest.c create mode 100644 designs/leon3-xilinx-vc707/testbench.vhd rename designs/{leon3-ge-hpe-mini => leon3-xilinx-vc707}/tkconfig.h (86%) create mode 100644 designs/leon3-ztex-ufm-111/mcb_soft_calibration_patch.txt create mode 100644 designs/leon3-ztex-ufm-111/memc3_infrastructure_patch.txt create mode 100644 designs/leon3-ztex-ufm-111/mig39/coregen.cgc create mode 100644 designs/leon3-ztex-ufm-111/mig39/coregen.cgp create mode 100644 designs/leon3-ztex-ufm-111/mig39/mig.prj create mode 100644 designs/leon3-ztex-ufm-111/mig39/mig.xco create mode 100644 designs/leon3-ztex-ufm-111/mig39/mig_39.xco create mode 100644 designs/leon3-ztex-ufm-111/mig_patch.txt create mode 100644 designs/leon3-ztex-ufm-115/mcb_soft_calibration_patch.txt create mode 100644 designs/leon3-ztex-ufm-115/memc3_infrastructure_patch.txt create mode 100644 designs/leon3-ztex-ufm-115/mig39/coregen.cgc create mode 100644 designs/leon3-ztex-ufm-115/mig39/coregen.cgp create mode 100644 designs/leon3-ztex-ufm-115/mig39/mig.prj create mode 100644 designs/leon3-ztex-ufm-115/mig39/mig.xco create mode 100644 designs/leon3-ztex-ufm-115/mig39/mig_39.xco create mode 100644 designs/leon3-ztex-ufm-115/mig_patch.txt create mode 100644 doc/guide.pdf delete mode 100644 lib/gaisler/ata/ata.in delete mode 100644 lib/gaisler/ata/ata.in.h delete mode 100644 lib/gaisler/ata/ata.in.help delete mode 100644 lib/gaisler/ata/ata.in.vhd delete mode 100644 lib/gaisler/ata/ata.vhd delete mode 100644 lib/gaisler/ata/ata_inf.vhd delete mode 100644 lib/gaisler/ata/atactrl.vhd delete mode 100644 lib/gaisler/ata/atactrl_dma.vhd delete mode 100644 lib/gaisler/ata/atactrl_nodma.vhd delete mode 100644 lib/gaisler/ata/atahost_ahbmst.vhd delete mode 100644 lib/gaisler/ata/atahost_amba_slave.vhd delete mode 100644 lib/gaisler/ata/atahost_dma_fifo.vhd delete mode 100644 lib/gaisler/ata/ocidec2_amba_slave.vhd delete mode 100644 lib/gaisler/ata/vhdlsyn.txt create mode 100644 lib/gaisler/ddr/ahb2mig_series7.vhd create mode 100644 lib/gaisler/ddr/ahb2mig_series7_pkg.vhd create mode 100644 lib/gaisler/ddr/mig_interface_model.v create mode 100644 lib/gaisler/ddr/mig_series7.in create mode 100644 lib/gaisler/ddr/mig_series7.in.h create mode 100644 lib/gaisler/ddr/mig_series7.in.vhd create mode 100644 lib/gaisler/ddr/vlogsim.txt create mode 100644 lib/gaisler/ddrv1/vhdlsyn.txt delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_apb.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_bc_control.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_bc_proto.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_bm.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_codec.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_core.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_dma2.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_fstimer.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_loopback.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_mhztick.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_rt_control.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_rt_proto.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_rx1.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_rx12v5.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_rx1pe.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_rx2.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_rx23sync.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_rx3.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_tx1.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_tx12sync.vhd delete mode 100644 lib/gaisler/gr1553bv1/core/gr1553b_tx2.vhd delete mode 100644 lib/gaisler/gr1553bv1/gr1553b.in.vhd delete mode 100644 lib/gaisler/gr1553bv1/gr1553b_2.in.vhd delete mode 100644 lib/gaisler/gr1553bv1/gr1553b_pkg.vhd delete mode 100644 lib/gaisler/gr1553bv1/test/combine1553.vhd delete mode 100644 lib/gaisler/gr1553bv1/test/gr1553b_tgapb.vhd delete mode 100644 lib/gaisler/gr1553bv1/test/simtrans1553.vhd delete mode 100644 lib/gaisler/gr1553bv1/wrap/gr1553b_nlw.vhd delete mode 100644 lib/gaisler/gr1553bv1/wrap/gr1553b_pads.vhd delete mode 100644 lib/gaisler/gr1553bv1/wrap/gr1553b_stdlogic.vhd rename {designs/leon3-gr-xc6s => lib/gaisler/greth}/rgmii.vhd (67%) delete mode 100644 lib/gaisler/irqmp/irqamp.vhd delete mode 100644 lib/gaisler/irqmp/irqamp2x.vhd delete mode 100644 lib/gaisler/irqmp/irqmp2x.vhd delete mode 100644 lib/gaisler/leon3/dsu3_2x.vhd rename lib/gaisler/{leon3v2 => leon3}/libcache.vhd (95%) rename lib/gaisler/{leon3v2 => leon3}/libiu.vhd (98%) create mode 100644 lib/gaisler/leon3ftv2/leon3ft.vhd create mode 100644 lib/gaisler/leon3ftv2/leon3net.in rename designs/leon3-wildcard-xcv300e/tkconfig.h => lib/gaisler/leon3ftv2/leon3net.in.h (88%) rename designs/leon3-wildcard-xcv300e/config.help => lib/gaisler/leon3ftv2/leon3net.in.help (87%) rename designs/leon3-wildcard-xcv300e/config.vhd.h => lib/gaisler/leon3ftv2/leon3net.in.vhd (91%) create mode 100644 lib/gaisler/leon3ftv2/vhdlsyn.txt rename lib/gaisler/{leon3v2 => leon3v1}/cachemem.vhd (61%) create mode 100644 lib/gaisler/leon3v1/grfpuw.vhd create mode 100644 lib/gaisler/leon3v1/grfpwx.vhd rename lib/gaisler/{leon3v2 => leon3v1}/grfpwxsh.vhd (92%) create mode 100644 lib/gaisler/leon3v1/grlfpwx.vhd rename lib/gaisler/{leon3v2 => leon3v1}/iu3.vhd (90%) create mode 100644 lib/gaisler/leon3v1/leon3cg.vhd rename lib/gaisler/{leon3v2 => leon3v1}/leon3s.vhd (66%) create mode 100644 lib/gaisler/leon3v1/leon3sh.vhd rename lib/gaisler/{leon3v2/libleon3.vhd => leon3v1/libproc3.vhd} (66%) rename lib/gaisler/{leon3v2/grlfpwx.vhd => leon3v1/mfpwx.vhd} (73%) rename lib/gaisler/{leon3v2 => leon3v1}/mmu_acache.vhd (92%) rename lib/gaisler/{leon3v2 => leon3v1}/mmu_cache.vhd (87%) rename lib/gaisler/{leon3v2 => leon3v1}/mmu_dcache.vhd (75%) rename lib/gaisler/{leon3v2 => leon3v1}/mmu_icache.vhd (76%) rename lib/gaisler/{leon3v2 => leon3v1}/proc3.vhd (84%) create mode 100644 lib/gaisler/leon3v1/vhdlsyn.txt delete mode 100644 lib/gaisler/leon3v2/grfpwx.vhd delete mode 100644 lib/gaisler/leon3v2/libfpu.vhd delete mode 100644 lib/gaisler/leon3v2/regfile_3p_l3.vhd delete mode 100644 lib/gaisler/leon3v2/vhdlsyn.txt delete mode 100644 lib/gaisler/misc/wild.vhd delete mode 100644 lib/gaisler/misc/wild2ahb.vhd delete mode 100644 lib/gaisler/sim/ata_device.vhd delete mode 100644 lib/gaisler/sim/grusb_dclsim.vhd delete mode 100644 lib/gaisler/sim/grusbdcsim.vhd delete mode 100644 lib/gaisler/sim/usbsim.vhd delete mode 100644 lib/gleichmann/ac97/ac97.vhd delete mode 100644 lib/gleichmann/ac97/ac97_oc.in delete mode 100644 lib/gleichmann/ac97/ac97_oc.in.h delete mode 100644 lib/gleichmann/ac97/ac97_oc.in.help delete mode 100644 lib/gleichmann/ac97/ac97_oc.in.vhd delete mode 100644 lib/gleichmann/ac97/ac97_oc.vhd delete mode 100644 lib/gleichmann/ac97/vhdlsyn.txt delete mode 100644 lib/gleichmann/ac97/vlogsyn.txt delete mode 100644 lib/gleichmann/ahb2hpi/ahb2hpi.in delete mode 100644 lib/gleichmann/ahb2hpi/ahb2hpi.in.h delete mode 100644 lib/gleichmann/ahb2hpi/ahb2hpi.in.help delete mode 100644 lib/gleichmann/ahb2hpi/ahb2hpi.in.vhd delete mode 100644 lib/gleichmann/ahb2hpi/ahb2hpi2_ea.vhd delete mode 100644 lib/gleichmann/ahb2hpi/hpi_p.vhd delete mode 100644 lib/gleichmann/ahb2hpi/hpi_ram_ea.vhd delete mode 100755 lib/gleichmann/ahb2hpi/vhdlsyn.txt delete mode 100644 lib/gleichmann/clockgen/clockgenerator_ea.vhd delete mode 100644 lib/gleichmann/clockgen/ge_clkgen_p.vhd delete mode 100644 lib/gleichmann/clockgen/vhdlsyn.txt delete mode 100644 lib/gleichmann/dac/adc_sigdelt_ea.vhd delete mode 100644 lib/gleichmann/dac/adcdac.in delete mode 100644 lib/gleichmann/dac/adcdac.in.h delete mode 100644 lib/gleichmann/dac/adcdac.in.help delete mode 100644 lib/gleichmann/dac/adcdac.in.vhd delete mode 100644 lib/gleichmann/dac/adcdac_ea.vhd delete mode 100644 lib/gleichmann/dac/dac_ahb.in delete mode 100644 lib/gleichmann/dac/dac_ahb.in.h delete mode 100644 lib/gleichmann/dac/dac_ahb.in.help delete mode 100644 lib/gleichmann/dac/dac_ahb.in.vhd delete mode 100644 lib/gleichmann/dac/dac_ahb_ea.vhd delete mode 100644 lib/gleichmann/dac/dac_p.vhd delete mode 100644 lib/gleichmann/dac/dac_sigdelt_ea.vhd delete mode 100755 lib/gleichmann/dac/vhdlsyn.txt delete mode 100644 lib/gleichmann/dirs.txt delete mode 100644 lib/gleichmann/i2c/i2c.vhd delete mode 100644 lib/gleichmann/i2c/partoi2s.vhd delete mode 100755 lib/gleichmann/i2c/vhdlsyn.txt delete mode 100644 lib/gleichmann/miscellaneous/ahb2wb.v delete mode 100644 lib/gleichmann/miscellaneous/miscellaneous_p.vhd delete mode 100644 lib/gleichmann/miscellaneous/postponer.v delete mode 100755 lib/gleichmann/miscellaneous/vhdlsyn.txt delete mode 100644 lib/gleichmann/miscellaneous/vlogsyn.txt delete mode 100644 lib/gleichmann/multiio/multiio.in delete mode 100644 lib/gleichmann/multiio/multiio.in.h delete mode 100644 lib/gleichmann/multiio/multiio.in.help delete mode 100644 lib/gleichmann/multiio/multiio.in.vhd delete mode 100644 lib/gleichmann/multiio/multiio_ea.vhd delete mode 100644 lib/gleichmann/multiio/multiio_p.vhd delete mode 100755 lib/gleichmann/multiio/vhdlsyn.txt delete mode 100644 lib/gleichmann/sim/phy_ext.vhd delete mode 100644 lib/gleichmann/sim/spi_slave_model.v delete mode 100644 lib/gleichmann/sim/txt_util.vhd delete mode 100644 lib/gleichmann/sim/uart_ext.vhd delete mode 100644 lib/gleichmann/sim/vhdlsim.txt delete mode 100644 lib/gleichmann/sim/vlogsim.txt delete mode 100644 lib/gleichmann/spi/spi_oc.in delete mode 100644 lib/gleichmann/spi/spi_oc.in.h delete mode 100644 lib/gleichmann/spi/spi_oc.in.help delete mode 100644 lib/gleichmann/spi/spi_oc.in.vhd delete mode 100644 lib/gleichmann/spi/spi_oc_ea.vhd delete mode 100644 lib/gleichmann/spi/spi_p.vhd delete mode 100644 lib/gleichmann/spi/spi_xmit_ea.vhd delete mode 100644 lib/gleichmann/spi/sspi_p.vhd delete mode 100755 lib/gleichmann/spi/vhdlsyn.txt create mode 100644 lib/grlib/stdlib/config_types.vhd rename lib/micron/{ddr => ddr_sdram}/ddr2.v (99%) rename lib/micron/{ddr => ddr_sdram}/ddr3.v (99%) create mode 100644 lib/micron/ddr_sdram/ddr3_model.v create mode 100644 lib/micron/ddr_sdram/ddr3_model_parameters.vh rename lib/micron/{ddr => ddr_sdram}/mobile_ddr.v (99%) rename lib/micron/{ddr => ddr_sdram}/mobile_ddr_fe.v (99%) rename lib/micron/{ddr => ddr_sdram}/mt46v16m16.vhd (100%) rename lib/micron/{ddr => ddr_sdram}/vhdlsim.txt (100%) rename lib/micron/{ddr => ddr_sdram}/vlogsim.txt (86%) delete mode 100644 lib/opencores/ac97/ac97_top.v delete mode 100644 lib/opencores/ac97/vlogsyn.txt delete mode 100644 lib/opencores/ata/ata_device_oc.v delete mode 100644 lib/opencores/ata/atahost_controller.vhd delete mode 100644 lib/opencores/ata/atahost_dma_actrl.vhd delete mode 100644 lib/opencores/ata/atahost_dma_fifo.vhd delete mode 100644 lib/opencores/ata/atahost_dma_tctrl.vhd delete mode 100644 lib/opencores/ata/atahost_pio_actrl.vhd delete mode 100644 lib/opencores/ata/atahost_pio_controller.vhd delete mode 100644 lib/opencores/ata/atahost_pio_tctrl.vhd delete mode 100644 lib/opencores/ata/ocidec2_controller.vhd delete mode 100644 lib/opencores/ata/ro_cnt.vhd delete mode 100644 lib/opencores/ata/ud_cnt.vhd delete mode 100644 lib/opencores/ata/vhdlsyn.txt delete mode 100644 lib/opencores/ata/vlogsim.txt delete mode 100644 lib/opencores/occomp/occomp.vhd delete mode 100644 lib/opencores/occomp/vhdlsyn.txt delete mode 100644 lib/opencores/spi/simple_spi_top.v delete mode 100644 lib/opencores/spi/vlogsyn.txt delete mode 100644 lib/praesum/ahbpassthru/ahbpassthru.in delete mode 100644 lib/praesum/ahbpassthru/ahbpassthru.in.h delete mode 100644 lib/praesum/ahbpassthru/ahbpassthru.in.vhd delete mode 100644 lib/praesum/ahbpassthru/ahbpassthru_master.v delete mode 100644 lib/praesum/ahbpassthru/ahbpassthru_master_vhdl.vhd delete mode 100644 lib/praesum/ahbpassthru/ahbpassthru_slave.v delete mode 100644 lib/praesum/ahbpassthru/ahbpassthru_slave_vhdl.vhd delete mode 100644 lib/praesum/ahbpassthru/ahbpassthru_verilog.vhd delete mode 100644 lib/praesum/ahbpassthru/ahbpassthru_vhdl.vhd delete mode 100644 lib/praesum/ahbpassthru/vhdlsyn.txt delete mode 100644 lib/praesum/dirs.txt delete mode 100644 lib/techmap/gencomp/tech.in.com delete mode 100644 lib/techmap/gencomp/tech.in.fpga delete mode 100644 lib/techmap/maps/grspwc2_net.vhd delete mode 100644 lib/techmap/maps/grspwc_net.vhd delete mode 100644 lib/techmap/unisim/grspwc2_unisim.vhd delete mode 100644 lib/techmap/unisim/grspwc_unisim.vhd delete mode 100644 software/grpci2/Makefile delete mode 100644 software/grpci2/grpci2api.c delete mode 100644 software/grpci2/grpci2api.h delete mode 100644 software/grpci2/grpci2extra.c delete mode 100644 software/grpci2/grpci2extra.h delete mode 100644 software/grpci2/grpci2test.c delete mode 100644 software/l2c/Makefile delete mode 100644 software/l2c/l2capi.c delete mode 100644 software/l2c/l2capi.h delete mode 100644 software/l2c/l2cextra.c delete mode 100644 software/l2c/l2cextra.h delete mode 100644 software/l2c/l2ctest.c delete mode 100644 software/leon3/atactrl.c delete mode 100644 software/leon3/base_test4.c delete mode 100644 software/leon3/brm_1553.c delete mode 100644 software/leon3/gr1553b_test.c delete mode 100644 software/leon3/greth_throughput.c delete mode 100644 software/leon3/griommu.c delete mode 100644 software/leon3/griommu.h delete mode 100644 software/leon3/grpci2.c delete mode 100644 software/leon3/grpwm.c delete mode 100755 software/leon3/hpi_defs.h delete mode 100755 software/leon3/hpi_functions.c delete mode 100755 software/leon3/hpi_functions.h delete mode 100755 software/leon3/hpi_new.c delete mode 100644 software/leon3/l2c.c delete mode 100644 software/leon3/l4stat.c delete mode 100644 software/leon3/leon4_test.c delete mode 100644 software/leon3/memscrub_test.c delete mode 100644 software/leon3/router.c delete mode 100644 software/leon3/rt_1553.c delete mode 100644 software/leon3/satcan.c delete mode 100644 software/leon3/spwrouter.c delete mode 100644 software/spw/router_test.c delete mode 100644 software/spw/router_test_18x.c delete mode 100644 software/spw/router_test_dual.c delete mode 100644 software/spw/router_test_dual_single_link.c delete mode 100644 software/spw/router_test_dual_single_link_rasta.c delete mode 100644 software/spw/router_test_ngmp.c delete mode 100644 software/spw/router_test_single-loopback.c diff --git a/Makefile b/Makefile index fc090c83..f3722ad0 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,2 @@ -ifndef ("$(GRLIB2)") -ifdef ("$(GRLIB)") -GRLIB2 = $(GRLIB) -else -GRLIB2 = ./ -endif -endif - include bin/Makefile -# GRLIB2 -#include bin/make.grlib2 -#include bin/make.housekeeping + diff --git a/bin/Makefile b/bin/Makefile index d24932ff..e56ad374 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -1,6 +1,5 @@ -VER=$(VNAME)1.1.0 -BID=4116 -GVER=1100 +VER=$(VNAME)1.2.1 +BID=4122 CC=gcc SED=sed DISTLIB=~/vhdl @@ -48,7 +47,7 @@ AVHDL = avhdl VLIB = vlib VCOM = vcom -quiet $(VCOMOPT) -93 VLOG = vlog -quiet $(VLOGOPT) -VSIM = vsim +VSIM = vsim $(VSIMOPT) NCVHDL = ncvhdl -nowarn DLCPTH -NOVITALCHECK -linedebug -v93 -nocopyright -work NCVLOG = ncvlog -nowarn DLCPTH -nocopyright -linedebug $(NCVLOGOPT) -work @@ -58,7 +57,7 @@ DCVLOG = analyze -f VERILOG -library FMVHDL = read_vhdl -r -libname FMVLOG = read_verilog -r -libname ifeq ("$(DCSCRIPT)","") -DCSCRIPT=$(TOP).dc +DCSCRIPT=$(TOP)_dc.tcl endif DCLIBSKIP = $(FPGALIBS) corePCIF DCDIRSKIP = $(FPGALIBS) corePCIF pcif @@ -71,6 +70,28 @@ RTLCVHDL = read_hdl -vhdl -lib RTLCVLOG = read_hdl RCSCRIPT=$(TOP).rc +VIVADOVHDL = read_vhdl -library +VIVADOVLOG = read_verilog -library +ifeq ("$(VIVADO_SYNTH_FLOW)","") +VIVADO_SYNTH_FLOW="Vivado Synthesis 2012" +endif +ifeq ("$(VIVADO_SYNTH_STRATEGY)","") +VIVADO_SYNTH_STRATEGY="Vivado Synthesis Defaults" +endif +ifeq ("$(VIVADO_IMPL_STRATEGY)","") +VIVADO_IMPL_STRATEGY="HighEffort" +endif + +ifeq ("$(PLANAHEAD_SYNTH_FLOW)","") +PLANAHEAD_SYNTH_FLOW="XST 14" +endif +ifeq ("$(PLANAHEAD_SYNTH_STRATEGY)","") +PLANAHEAD_SYNTH_STRATEGY="XST Defaults" +endif +ifeq ("$(PLANAHEAD_IMPL_STRATEGY)","") +PLANAHEAD_IMPL_STRATEGY="ParHighEffort" +endif + SYNPVHDL = add_file -vhdl -lib SYNPVLOG = add_file -verilog SYNPLIBSKIP = $(ASICLIBS) @@ -97,6 +118,15 @@ endif ifeq ("$(NETLISTTECH)","") # Some .ngo netlists are reused for other FPGA families +ifeq ("$(TECHNOLOGY)","Virtex7") +NETLISTTECH = Virtex4 +else +ifeq ("$(TECHNOLOGY)","Kintex7") +NETLISTTECH = Virtex4 +else +ifeq ("$(TECHNOLOGY)","Artix7") +NETLISTTECH = Virtex4 +else ifeq ("$(TECHNOLOGY)","Spartan6") NETLISTTECH = Spartan3 else @@ -119,6 +149,9 @@ endif endif endif endif +endif +endif +endif PRECLIBSKIPX = $(SIMLIBS) $(ASICLIBS) PRECLIBSKIP = $(PRECLIBSKIPX:%=%|) dware @@ -133,17 +166,6 @@ LIBERODIRSKIPX = $(ASICLIBS) $(XILINXLIBS) $(ALTERALIBS) $(LATTICELIBS) LIBERODIRSKIP = $(LIBERODIRSKIPX:%=%|) dummy LIBEROSKIP = dummy -# The paths below apply to CoreConsole v. 1.4 -ifeq ("$(CORECONSOLE)","") -CORECONSOLE = dummy -else -CORECONSOLE_PATH = $(CORECONSOLE)/repository/Components/Actel/DirectCore -COREMP7BRIDGE_PATH = $(CORECONSOLE_PATH)/CoreMP7Bridge/2.1/rtl/vhdl/o -COREMP7BRIDGE_FILES = A7WrapMaster.vhd A7WrapSM.vhd CoreMP7Bridge_a3p.vhd Sync.vhd uj_jtag.vhd -COREMP7_PATH = $(CORECONSOLE_PATH)/A7S/2.0/M7A3P1000-2/debug/timingshell/vhdl -COREMP7_FILES = arm_synplify.vhd -endif - SYNPSKIP = snpsmul.vhd GHDL = ghdl -a -fexplicit --ieee=synopsys @@ -242,6 +264,8 @@ help: @echo " make quartus-launch : start Quartus for current project" @echo " make quartus-launch-synp : start Quartus for synplify project" @echo " make synplify-launch : start synplify" + @echo " make vivado-launch : start VIVADO project navigator" + @echo " make planAhead-launch : start PlanAhead project navigator" @echo " make xgrlib : start grlib GUI" @echo @echo " batch targets:" @@ -264,7 +288,8 @@ help: @echo " make quartus-synp : synthesize with synplify, place&route with Quartus" @echo " make precision : synthesize design using precision" @echo " make synplify : synthesize design using synplify" - @echo " make import-actel-cc : import CoreMP7 files from CoreConsole library" + @echo " make vivado : synthesize and place&route with Xilinx VIVADO" + @echo " make planAhead : synthesize and place&route with Xilinx PlanAhead" @echo " make scripts : generate compile scripts only" @echo " make clean : remove all temporary files except scripts" @echo " make distclean : remove all temporary files" @@ -374,19 +399,19 @@ avhdl-clean: riviera: compile.vsim @cat libs.do | sed -e s/modelsim/riviera/ > rlibs.do - @vsimsa rlibs.do + @vsimsa -do "do rlibs.do; quit" @make -f make.vsim @vmap work riviera/work @-rm -f rlibs.do riviera-run: - @vsim $(SIMTOP) < $(GRLIB)/bin/runvsim.do + @vsim -c $(SIMTOP) -do $(GRLIB)/bin/runvsim.do riviera-launch: @echo asim $(SIMTOP) > riviera.do @echo run -all >> riviera.do @echo abort >> riviera.do - @riviera riviera.do + @riviera -do riviera.do riviera-clean: -rm -rf riviera vsimsa.cfg wave.asdb riviera.do library.cfg .riviera_project rlibs.do @@ -422,7 +447,11 @@ vsim-run: vsim @vsim -c $(SIMTOP) < $(GRLIB)/bin/runvsim.do vsim-launch: scripts modelsim +ifeq ("$(VSIMOPT)","") @vsim -quiet $(SIMTOP).mpf +else + vsim -quiet $(VSIMOPT) +endif vsim-mcb: scripts -vlib modelsim @@ -557,12 +586,16 @@ ise-launch-synp: $(TOP).npl $(TOP)_synplify.prj synplify/$(TOP).edf $(TOP)_synpl $(TOP).xst: compile.xst @touch $(TOP).xst; rm $(TOP).xst + @for i in $(VERILOGOPTSYNFILES) $(VERILOGSYNFILES); do \ + if test -r $$i; then \ + echo verilog work $$i >> $(TOP)_files.prj ; \ + fi; \ + done @for i in $(VHDLOPTSYNFILES) $(VHDLSYNFILES); do \ if test -r $$i; then \ echo vhdl work $$i >> $(TOP)_files.prj ; \ fi; \ done -# @for i in $(VERILOGSYNFILES); do $(GRLIB)/bin/xstverilog $ii >> $(TOP).xst; done @$(GRLIB)/bin/xstrun $(TOP) $(TOP).vhd $(DEVICE) >> $(TOP).xst @echo -ofn $(TOP) $(XSTOPT) -define {XSTDUMMY $(SYNPVLOGDEFS)} -sd $(GRLIB)/netlists/xilinx/$(NETLISTTECH) >> $(TOP).xst @echo $(TOP).xst @@ -723,6 +756,214 @@ install-simprim: echo installing $(XILINX)/vhdl/src/unisims/simprim_VITAL.vhd ;\ fi ; \ +compile_xilinx_verilog_lib: + @if test -d ./xilinx_lib; then \ + echo "Xilinx library already compiled!"; else \ + compxlib -s mti_se -l verilog -arch $(TECHNOLOGY) -lib xilinxcorelib -w -dir ./xilinx_lib ; \ + fi; + +map_xilinx_verilog_lib: + @if test -d ./xilinx_lib; then \ + vmap secureip_ver ./xilinx_lib/secureip ; \ + vmap unisims_ver ./xilinx_lib/unisims_ver ; \ + vmap xilinxcorelib_ver ./xilinx_lib/xilinxcorelib_ver ; else \ + echo "Xilinx Verilog Library not found. Please make sure you have installed the correct version of the Xilinx Library" ; exit 1 ; \ + fi; + +clean_xilinx_verilog_lib: + \rm -rf xilinx_lib + \rm -f compxlib.* .cxl.mti_se.version + +mig_series7_generate: +ifeq ($(CONFIG_MIG_SERIES7),y) + @if test -d ./mig; then \ + echo "Xilinx MIG already generated!"; else \ + mkdir -p mig ; \ + mkdir -p mig/mig ; \ + cp $(GRLIB)/boards/$(BOARD)/mig.xco ./mig/ ; \ + cp $(GRLIB)/boards/$(BOARD)/mig.prj ./mig/mig ; \ + cp $(GRLIB)/boards/$(BOARD)/mig.cgp ./mig/ ; \ + coregen -b ./mig/mig.xco -p mig/mig.cgp ; \ + fi; +endif + +mig_series7: mig_series7_generate compile_xilinx_verilog_lib map_xilinx_verilog_lib +ifeq ($(CONFIG_MIG_SERIES7),y) + if [ -f mig/mig/user_design/rtl/mig.v ]; then \ + vlog -quiet -work gaisler \ + mig/mig/user_design/rtl/mig.v \ + mig/mig/user_design/rtl/clocking/*.v \ + mig/mig/user_design/rtl/controller/*.v \ + mig/mig/user_design/rtl/ecc/*.v \ + mig/mig/user_design/rtl/ip_top/*.v \ + mig/mig/user_design/rtl/phy/*.v \ + mig/mig/user_design/rtl/phy_traffic_gen/*.v \ + mig/mig/user_design/rtl/ui/*.v ;\ + vlog -quiet -work work $(XILINX)/verilog/src/glbl.v ;\ + fi; +endif + +mig_series7_clean: + \rm -rf mig + +######### Xilinx PlanAhead targets ############ + +planAhead.tcl: compile.vivado + @-mkdir -p planAhead + @echo "# Xilinx planAhead script for Leon3mp" > ./planAhead/$(TOP)_planAhead.tcl + @echo "# Create a new project" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "create_project $(DESIGN) ./planAhead/$(DESIGN) -part ${DEVICE} -force" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "# Board, part and design properties" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "set_property target_simulator ModelSim [current_project]" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "set_property top_lib work [current_fileset]" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "set_property top_arch rtl [current_fileset]" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "set_property top $(TOP) [current_fileset]" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "set_property target_language VHDL [current_project]" >> ./planAhead/$(TOP)_planAhead.tcl +ifneq ("$(PROTOBOARD)","") + @echo "set_property board $(PROTOBOARD) [current_project]" >> ./planAhead/$(TOP)_planAhead.tcl +endif + @echo "source ./compile.vivado" >> ./planAhead/$(TOP)_planAhead.tcl + @for i in $(VERILOGOPTSYNFILES) $(VERILOGSYNFILES); do \ + if test -r $$i; then \ + echo read_verilog "-library work" $$i >> ./planAhead/$(TOP)_planAhead.tcl; \ + fi; \ + done + @for i in $(VHDLOPTSYNFILES) $(VHDLSYNFILES); do \ + if test -r $$i; then \ + echo read_vhdl "-library work" $$i >> ./planAhead/$(TOP)_planAhead.tcl; \ + fi; \ + done + @if test -r $(GRLIB)/netlists/xilinx/$(NETLISTTECH); then \ + echo "import_files $(GRLIB)/netlists/xilinx/$(NETLISTTECH)" >> ./planAhead/$(TOP)_planAhead.tcl; \ + fi +ifeq ("$(PROTOBOARD)","zedBoard") + @-mkdir -p planAhead/xps_files + @cp -r ./edk_files/leon3_zedboard planAhead/xps_files/ + @echo "# Add Leon3 PS Zedboard Design" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "add_files ./planAhead/xps_files/leon3_zedboard/leon3_zedboard.xmp" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "make_wrapper -files [get_files ./planAhead/xps_files/leon3_zedboard/leon3_zedboard.xmp] -top -fileset [get_filesets sources_1] -import" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "update_compile_order -fileset sources_1" >> ./planAhead/$(TOP)_planAhead.tcl +endif + @echo "# Read board specific constraints" >> ./planAhead/$(TOP)_planAhead.tcl +#ifneq ("$(UCF_PLANAHEAD)","") + @for i in $(UCF_PLANAHEAD); do \ + if test -r $$i; then \ + echo "read_ucf $$i" >> ./planAhead/$(TOP)_planAhead.tcl; \ + fi; \ + done +#endif +ifeq ($(CONFIG_MIG_DDR2),y) + @if test -r mig/user_design/par/mig.ucf; then \ + @echo "read_ucf mig/user_design/par/mig.ucf" >> ./planAhead/$(TOP)_planAhead.tcl; \ + fi; +endif + @echo "create_run synth_$(DESIGN) -flow {$(PLANAHEAD_SYNTH_FLOW)} -strategy {$(PLANAHEAD_SYNTH_STRATEGY)}" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "set_property steps.xst.args.resource_sharing no [get_runs synth_1]" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "set_property steps.xst.args.equivalent_register_removal no [get_runs synth_1]" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "# Elaborate design to be able to apply SDC to top level" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "launch_runs synth_1" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "wait_on_run -timeout 120 synth_1" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "# Launch place and route" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "set_property strategy $(PLANAHEAD_IMPL_STRATEGY) [get_runs impl_1]" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "set_property steps.bitgen.args.m true [get_runs impl_1]" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "launch_runs impl_1 -to_step Bitgen" >> ./planAhead/$(TOP)_planAhead.tcl + @echo "wait_on_run -timeout 120 impl_1" >> ./planAhead/$(TOP)_planAhead.tcl +ifeq ("$(PROTOBOARD)","zedBoard") + @echo "export_hardware [get_files ./planAhead/xps_files/leon3_zedboard/leon3_zedboard.xmp] [get_runs impl_1] -bitstream" >> ./planAhead/$(TOP)_planAhead.tcl +endif + @echo "exit" >> ./planAhead/$(TOP)_planAhead.tcl + +planAhead-launch: planAhead.tcl + planAhead -mode gui -source ./planAhead/$(TOP)_planAhead.tcl + cp ./planAhead/$(DESIGN)/$(DESIGN).runs/impl_1/$(TOP).bit . + cp ./planAhead/$(DESIGN)/$(DESIGN).runs/impl_1/$(TOP).msk . + +planAhead: planAhead.tcl + planAhead -mode batch -source ./planAhead/$(TOP)_planAhead.tcl + cp ./planAhead/$(DESIGN)/$(DESIGN).runs/impl_1/$(TOP).bit . + cp ./planAhead/$(DESIGN)/$(DESIGN).runs/impl_1/$(TOP).msk . + +planAhead-clean: + -rm -rf ./planAhead planAhead.log + +######### Xilinx Vivado targets ############ + +vivado.tcl: compile.vivado + @-mkdir -p vivado + @echo "# Xilinx Vivado script for Leon3mp" > ./vivado/$(TOP)_vivado.tcl + @echo "# Create a new project" >> ./vivado/$(TOP)_vivado.tcl + @echo "create_project $(DESIGN) ./vivado/$(DESIGN) -part ${DEVICE} -force" >> ./vivado/$(TOP)_vivado.tcl + @echo "source ./compile.vivado" >> ./vivado/$(TOP)_vivado.tcl + @for i in $(VERILOGOPTSYNFILES) $(VERILOGSYNFILES); do \ + if test -r $$i; then \ + echo read_verilog "-library work" $$i >> ./vivado/$(TOP)_vivado.tcl; \ + fi; \ + done + @for i in $(VHDLOPTSYNFILES) $(VHDLSYNFILES); do \ + if test -r $$i; then \ + echo read_vhdl "-library work" $$i >> ./vivado/$(TOP)_vivado.tcl; \ + fi; \ + done + @echo "# Read board specific constraints" >> ./vivado/$(TOP)_vivado.tcl +ifneq ("$(XDC)","") + @echo "read_xdc $(XDC)" >> ./vivado/$(TOP)_vivado.tcl +endif +ifneq ("$(UCF)","") + @echo "read_ucf $(UCF)" >> ./vivado/$(TOP)_vivado.tcl +endif + @echo "# Board, part and design properties" >> ./vivado/$(TOP)_vivado.tcl + @echo "set_property target_simulator ModelSim [current_project]" >> ./vivado/$(TOP)_vivado.tcl + @echo "set_property top_lib work [current_fileset]" >> ./vivado/$(TOP)_vivado.tcl + @echo "set_property top_arch rtl [current_fileset]" >> ./vivado/$(TOP)_vivado.tcl + @echo "set_property top $(TOP) [current_fileset]" >> ./vivado/$(TOP)_vivado.tcl +ifneq ("$(PROTOBOARD)","") + @echo "set_property board $(PROTOBOARD) [current_project]" >> ./vivado/$(TOP)_vivado.tcl +endif +ifeq ($(CONFIG_MIG_SERIES7),y) + @echo "import_ip -file ./mig/mig.xco -name mig" >> ./vivado/$(TOP)_vivado.tcl + @echo "generate_target {instantiation_template Synthesis} [get_files $(DESIGN)/$(DESIGN).srcs/sources_1/ip/mig/mig.xco -of_objects [get_filesets sources_1]] -force " >> ./vivado/$(TOP)_vivado.tcl +endif + @if test -r $(GRLIB)/netlists/xilinx/$(NETLISTTECH); then \ + echo "import_files $(GRLIB)/netlists/xilinx/$(NETLISTTECH)" >> ./vivado/$(TOP)_vivado.tcl; \ + fi + @echo "create_fileset -simset sim_$(DESIGN)" >> ./vivado/$(TOP)_vivado.tcl + @echo "create_run synth_$(DESIGN) -flow {$(VIVADO_SYNTH_FLOW)} -strategy {$(VIVADO_SYNTH_STRATEGY)}" >> ./vivado/$(TOP)_vivado.tcl + @echo "# Elaborate design to be able to apply SDC to top level" >> ./vivado/$(TOP)_vivado.tcl + @echo "synth_design -rtl -name rtl_1" >> ./vivado/$(TOP)_vivado.tcl + @echo "# Launch synth" >> ./vivado/$(TOP)_vivado.tcl + @echo "launch_runs synth_1" >> ./vivado/$(TOP)_vivado.tcl + @echo "wait_on_run -timeout 120 synth_1" >> ./vivado/$(TOP)_vivado.tcl + @echo "# Launch place and route" >> ./vivado/$(TOP)_vivado.tcl + @echo "set_property strategy $(VIVADO_IMPL_STRATEGY) [get_runs impl_1]" >> ./vivado/$(TOP)_vivado.tcl + @echo "set_property steps.write_bitstream.args.mask_file true [get_runs impl_1]" >> ./vivado/$(TOP)_vivado.tcl + @echo "launch_runs impl_1" >> ./vivado/$(TOP)_vivado.tcl + @echo "wait_on_run -timeout 120 impl_1" >> ./vivado/$(TOP)_vivado.tcl + @echo "close_design" >> ./vivado/$(TOP)_vivado.tcl + @echo "open_run impl_1" >> ./vivado/$(TOP)_vivado.tcl + @echo "report_timing_summary -delay_type min_max -path_type full_clock_expanded -report_unconstrained -check_timing_verbose -max_paths 10 -nworst 1 -significant_digits 3 -input_pins -name timing_1 -file $(TOP)_post_timing.rpt" >> ./vivado/$(TOP)_vivado.tcl + @echo "report_drc -file $(TOP)_drc_route.rpt" >> ./vivado/$(TOP)_vivado.tcl + @echo "launch_runs impl_1 -to_step write_bitstream" >> ./vivado/$(TOP)_vivado.tcl + @echo "wait_on_run -timeout 120 impl_1" >> ./vivado/$(TOP)_vivado.tcl + + +vivado-launch: vivado.tcl + vivado -mode gui -source ./vivado/$(TOP)_vivado.tcl + cp ./vivado/$(DESIGN)/$(DESIGN).runs/impl_1/$(TOP).bit . + cp ./vivado/$(DESIGN)/$(DESIGN).runs/impl_1/$(TOP).msk . + +vivado: vivado.tcl + vivado -mode batch -source ./vivado/$(TOP)_vivado.tcl + cp ./vivado/$(DESIGN)/$(DESIGN).runs/impl_1/$(TOP).bit . + cp ./vivado/$(DESIGN)/$(DESIGN).runs/impl_1/$(TOP).msk . + +vivado-clean: + -rm -rf ./vivado vivado.log + +vivado-prog-fpga: + @echo "fpga -f ./vivado/$(DESIGN)/$(DESIGN).runs/impl_1/$(TOP).bit" > ./xmd.ini + @echo "exit" >> ./xmd.ini + xmd + ######### Altera Quartus targets ############ @@ -799,6 +1040,11 @@ synplify/$(TOP).edf: $(VHDLSYNFILES) $(VERILOGSYNFILES) $(TOP)_synplify.prj: compile.synp @echo source compile.synp > $(TOP)_synplify.prj + @for i in $(VERILOGOPTSYNFILES) $(VERILOGSYNFILES); do \ + if test -r $$i; then \ + echo add_file "-verilog -lib work" $$i >> $(TOP)_synplify.prj; \ + fi; \ + done @for i in $(VHDLOPTSYNFILES) $(VHDLSYNFILES); do \ if test -r $$i; then \ echo add_file "-vhdl -lib work" $$i >> $(TOP)_synplify.prj; \ @@ -811,8 +1057,8 @@ $(TOP)_synplify.prj: compile.synp fi; \ done; \ fi -# @for i in $(VERILOGSYNFILES); do echo add_file "-verilog -lib work" $ii >> $(TOP)_synplify.prj; done @for i in $(SDCFILE); do echo add_file "-constraint " $$i >> $(TOP)_synplify.prj; done + @for i in $(FDCFILE); do echo add_file "-fpga_constraint " $$i >> $(TOP)_synplify.prj; done @cat $(GRLIB)/bin/synplify.prj | sed -e s/TOP/$(TOP)/ \ -e s/TECHNOLOGY/$(TECHNOLOGY)/ \ -e s/PART/$(PART)/ -e s/SPEED/$(SPEED)/ -e s/SYNFREQ/$(SYNFREQ)/ >> $(TOP)_synplify.prj @@ -824,6 +1070,9 @@ ifneq ("$(SYNPVLOGDEFS)","") endif ifneq ("$(SYNPVLOGINC)","") @echo set_option -include_path \"$(SYNPVLOGINC)\" >> $(TOP)_synplify.prj +endif +ifneq ("$(SYNPVLOGSTD)","") + @echo set_option -vlog_std \"$(SYNPVLOGSTD)\" >> $(TOP)_synplify.prj endif @echo $(SYNPOPT) >> $(TOP)_synplify.prj @echo impl -active \"synplify\" >> $(TOP)_synplify.prj @@ -857,6 +1106,15 @@ libero-launch : $(TOP)_libero.prj ######### Actel Designer targets ############################ +# DESIGNER_LAYOUT_OPT can be overridden i template design Makefile +ifeq ("$(DESIGNER_LAYOUT_OPT)","") +ifeq ("$(TECHNOLOGY)","Axcelerator") +DESIGNER_LAYOUT_OPT="-effort_level 5 -timing_driven -incremental \"OFF\"" +else +DESIGNER_LAYOUT_OPT="-timing_driven -incremental \"OFF\"" +endif +endif + actel: $(TOP)_synplify.prj synplify/$(TOP).edf $(TOP)_designer.tcl -mkdir ./actel $(DESIGNER) script:$(TOP)_designer.tcl @@ -897,7 +1155,6 @@ else @echo " puts \"WARNING: No PDC_EXTRA file imported.\"" >> $(TOP)_designer.tcl @echo "}" >> $(TOP)_designer.tcl endif - @echo "if {[file exist "$(SDC)"]} {" >> $(TOP)_designer.tcl @echo " import_aux -format \"sdc\" -merge_timing \"no\" {"$(SDC)"}" >> $(TOP)_designer.tcl @echo "} else {" >> $(TOP)_designer.tcl @@ -913,11 +1170,7 @@ else endif @echo "save_design {"$(TOP).adb"}" >> $(TOP)_designer.tcl @echo "report -type status {./actel/report_status_pre.log}" >> $(TOP)_designer.tcl -ifeq ("$(TECHNOLOGY)","Axcelerator") - @echo "layout -effort_level 5 -timing_driven -incremental \"OFF\"" >> $(TOP)_designer.tcl -else - @echo "layout -timing_driven -incremental \"OFF\"" >> $(TOP)_designer.tcl -endif + @echo "layout " $(DESIGNER_LAYOUT_OPT) >> $(TOP)_designer.tcl @echo "save_design {"$(TOP).adb"}" >> $(TOP)_designer.tcl @echo "backannotate -dir {./actel} -name \"$(TOP)\" -format \"SDF\" -language \"VHDL93\" -netlist" >> $(TOP)_designer.tcl @echo "report -type \"timer\" -analysis \"max\" -print_summary \"yes\" -use_slack_threshold \"no\" -print_paths \"yes\" -max_paths 100 -max_expanded_paths 5 -include_user_sets \"yes\" -include_pin_to_pin \"yes\" -select_clock_domains \"no\" {./actel/report_timer_max.txt}" >> $(TOP)_designer.tcl @@ -955,7 +1208,7 @@ dc: $(TOP)_dc.tcl $(TOP)_dc.tcl: compile.dc @cp $(GRLIB)/bin/top.dc $(TOP)_dc.tcl - @for i in $(VERILOGSYNFILES); do \ + @for i in $(VERILOGOPTSYNFILES) $(VERILOGSYNFILES); do \ if test -r $$i; then \ echo $(DCVLOG) work $$i >> $(TOP)_dc.tcl; \ echo $(FMVLOG) $work $i >> fmref.tcl; \ @@ -988,7 +1241,7 @@ $(TOP).rc: compile.rc echo "read_hdl -vhdl -lib work" $$i >> $(TOP).rc; \ fi; \ done -# @for i in $(VERILOGSYNFILES); do echo "read_hdl " $$i >> $(TOP).rc; done +# @for i in $(VERILOGOPTSYNFILES) $(VERILOGSYNFILES); do echo "read_hdl " $$i >> $(TOP).rc; done @echo elaborate $(TOP) >> $(TOP).rc @echo $(TOP).rc @@ -1026,11 +1279,11 @@ etools-n2x-clean: ########## Generation of compile scripts ############### -scripts: compile.dc compile.synp compile.son compile.vsim compile.asim compile.xst compile.ncsim compile.rc \ +scripts: compile.dc compile.synp compile.vivado compile.son compile.vsim compile.asim compile.xst compile.ncsim compile.rc \ $(TOP)_synplify.prj $(TOP)_dc.tcl $(TOP).rc $(TOP).xst $(TOP).npl $(TOP)_ise.tcl $(TOP).qsf \ $(TOP)_designer.tcl $(TOP)_libero.prj compile.etools $(TOP)_etools_create.tcl $(TOP).ldf -verilog.txt $(TOP)_libero.prj compile.dc compile.synp compile.son compile.vsim compile.asim compile.xst \ +verilog.txt $(TOP)_libero.prj compile.dc compile.synp compile.vivado compile.son compile.vsim compile.asim compile.xst \ compile.ncsim compile.rc compile.ghdl $(TOP).npl $(TOP)_ise.tcl $(TOP).qsf $(TOP)_precision.tcl $(TOP).xise \ compile.etools $(TOP).ldf : @touch libs.txt; rm libs.txt; @@ -1211,7 +1464,7 @@ compile.etools $(TOP).ldf : if test -r $$k/$$l; then \ echo -n " "$$l; \ fi; \ - for i in vlogsyn vhdlsyn vhdlmtie vhdlsynpe vhdldce vlogsim vhdlsim ; do \ + for i in vlogsyn vhdlsyn vhdlmtie vhdlsynpe vhdldce vhdlcdse vlogsim vhdlsim ; do \ m=$$k/$$l/$$i; \ if test -r $$m.txt; then \ for q in `cat $$m.txt` $(FILEADD) ; do \ @@ -1239,7 +1492,8 @@ compile.etools $(TOP).ldf : echo ENDFILE >> libero_syn_files;; \ vhdlsynpe) \ echo $(SYNPVHDL) $(VHDLOPT) $$bn $$f >> compile.synp; \ - echo VALUE \"\/$$f,hdl\" >> libero_syn_files; \ + echo $(VIVADOVHDL) $$bn $$f >> compile.vivado; \ + echo VALUE \"\/$$f,hdl\" >> libero_syn_files; \ echo VALUE \"\/$$f,hdl\" >> libero_synlist; \ echo STATE=\"utd\" >> libero_syn_files; \ echo TIME=\"1310766027\" >> libero_syn_files; \ @@ -1247,6 +1501,9 @@ compile.etools $(TOP).ldf : echo ENDFILE >> libero_syn_files;; \ vhdldce) \ echo $(DCVHDL) $$bn $(VHDLOPT) $$f >> compile.dc;; \ + vhdlcdse) \ + printf "\t$(NCVHDL) $(VHDLOPT) $$bn $$f\n" >> compile.ncsim; \ + echo $(RTLCVHDL) $(VHDLOPT) $$bn $$f >> compile.rc;; \ vhdlsyn) \ echo Project_File_$$nfiles = $$f >> tmp.mpf; \ echo Project_File_P_$$nfiles = vhdl_novitalcheck 0 file_type VHDL group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 folder {Top Level} last_compile 0 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 0 vhdl_warn2 1 vhdl_explicit 0 vhdl_showsource 1 vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 0 compile_to $$bn compile_order $$nfiles dont_compile 0 cover_stmt 1 vhdl_use93 93 >> tmp.mpf; \ @@ -1278,6 +1535,7 @@ compile.etools $(TOP).ldf : case $$l in $(XSYNPDIRSKIP) ) ;; *) \ case $$q in $(SYNPSKIP) ) ;; *) \ echo $(SYNPVHDL) $(VHDLOPT) $$bn $$f >> compile.synp; \ + echo $(VIVADOVHDL) $$bn $$f >> compile.vivado; \ echo " "\ >> $(TOP).ldf; \ echo " "\ >> $(TOP).ldf; \ echo " "\<\/Source\> >> $(TOP).ldf;; \ @@ -1381,6 +1639,7 @@ compile.etools $(TOP).ldf : echo xfile add \"$$f\" >> $(TOP)_ise.tcl; \ echo puts \"$$f\" >> $(TOP)_ise.tcl; \ echo $(SYNPVLOG) $$f >> compile.synp; \ + echo $(VIVADOVLOG) $$f >> compile.vivado; \ echo add_input_file -format VERILOG -work $$bn $$f >> $(TOP)_precision.tcl; \ echo set_global_assignment -name VERILOG_FILE $$f -library $$bn >> $(TOP).qsf;; \ vhdlsim) \ @@ -1473,7 +1732,7 @@ compile.etools $(TOP).ldf : fi; \ done; \ echo "{work $$easic_lib}" >> easic.vhdl; \ - for i in $(VERILOGSYNFILES); do \ + for i in $(VERILOGOPTSYNFILES) $(VERILOGSYNFILES); do \ echo $$i >> easic.vlog; \ done; \ echo " "\ >> $(TOP).ldf; \ @@ -1644,6 +1903,20 @@ compile.etools $(TOP).ldf : cat compile.asim >> make.asim; \ printf "# Work-around for stupid secureip bug ...\n" >> make.vsim; \ printf "\t@if test -r $(GRLIB)/lib/tech/secureip/ise/mcb_001.vp && test -r modelsim/secureip; then vlog -quiet -novopt -work secureip $(GRLIB)/lib/tech/secureip/ise/mcb_*.vp; fi\n" >> make.vsim; \ + for i in $(VERILOGOPTSYNFILES) $(VERILOGSYNFILES); do \ + if test -r $$i; then \ + printf "\t$(VLOG) -work work $$i\n" >> make.vsim; \ + printf "\t$(ALOG) work ../../$$i\n" >> make.asim; \ + printf "\t$(NCVLOG) work $$i\n" >> make.ncsim; \ + fi; \ + done; \ + for i in $(VERILOGSIMFILES); do \ + if test -r $$i; then \ + printf "\t$(VLOG) -work work $$i\n" >> make.vsim; \ + printf "\t$(ALOG) work ../../$$i\n" >> make.asim; \ + printf "\t$(NCVLOG) work $$i\n" >> make.ncsim; \ + fi; \ + done; \ for i in $(VHDLOPTSYNFILES) $(VHDLSYNFILES) $(VHDLSIMFILES); do \ if test -r $$i; then \ printf "\t$(VCOM) $(VHDLOPT) -work work $$i\n" >> make.vsim; \ @@ -1652,7 +1925,7 @@ compile.etools $(TOP).ldf : echo VALUE \"\/$$i,hdl\" >> libero_simlist; \ fi; \ done; \ - for i in $(VERILOGSYNFILES) $(VHDLOPTSYNFILES) $(VHDLSYNFILES); do \ + for i in $(VERILOGOPTSYNFILES) $(VERILOGSYNFILES) $(VHDLOPTSYNFILES) $(VHDLSYNFILES); do \ if test -r $$i; then \ echo VALUE \"\/$$i,hdl\" >> libero_syn_files; \ echo STATE=\"utd\" >> libero_syn_files; \ @@ -1671,7 +1944,7 @@ compile.etools $(TOP).ldf : echo VALUE \"\/$$i,hdl\" >> libero_sim_files; \ fi; \ done; \ - for i in $(VERILOGSYNFILES) $(VERILOGSIMFILES); do \ + for i in $(VERILOGOPTSYNFILES) $(VERILOGSYNFILES) $(VERILOGSIMFILES); do \ if test -r $$i; then \ printf "\t$(VLOG) -work work $$i\n" >> make.vsim; \ printf "\t$(ALOG) work ../../$$i\n" >> make.asim; \ @@ -1793,18 +2066,6 @@ compile.etools $(TOP).ldf : ########## Import from other libraries ############### -## Import CoreMP7 files from Actel's CoreConsole IP Library -import-actel-cc: - @if test -r $(CORECONSOLE); then \ - echo "Importing CoreMP7 files from Actel CoreConsole IP Library"; \ - echo " Importing $(COREMP7BRIDGE_FILES) to lib/techmap/proasic3"; \ - for i in $(COREMP7BRIDGE_FILES); do cp $(COREMP7BRIDGE_PATH)/$$i $(GRLIB)/lib/techmap/proasic3; done; \ - echo " Importing $(COREMP7_FILES) to lib/techmap/proasic3";\ - for i in $(COREMP7_FILES); do cp $(COREMP7_PATH)/$$i $(GRLIB)/lib/techmap/proasic3; done; \ - else \ - echo "CORECONSOLE environment variable is not correctly set!"; \ - fi - ## Import eASIC RTL and IP libraries from eTools # tested with eTools 9. eTools 8.2.0 has ip_lib under data instead of # data_common, earlier versions may not have "data" directory in path @@ -1835,7 +2096,7 @@ remove-easic-n2x: clean: $(CLEAN) vsim-clean ise-clean ncsim-clean ghdl-clean synplify-clean quartus-clean sonata-clean \ actel-clean dc-clean rc-clean isp-clean precision-clean vsimsa-clean avhdl-clean riviera-clean \ - etools-n2x-clean + etools-n2x-clean vivado-clean planAhead-clean -rm -rf verilog.txt tkparse.exe main.tk ahbrom outdata ahbrom.bin scripts-clean: @@ -1848,7 +2109,7 @@ scripts-clean: alibs.do avhdl.tcl riviera.do \ $(TOP)_etools_create.tcl $(TOP).eprj $(EXTRACLEAN) -distclean: $(CLEAN) clean scripts-clean +distclean: $(CLEAN) clean scripts-clean clean_xilinx_verilog_lib libclean: -@rm work.v; \ diff --git a/bin/Makefile.config b/bin/Makefile.config index 7b472c98..acc4192b 100644 --- a/bin/Makefile.config +++ b/bin/Makefile.config @@ -1,127 +1,115 @@ -CONFDEP = $(GRLIB)/lib/techmap/clocks/clkgen.in \ -$(GRLIB)/lib/techmap/gencomp/tech.in \ -$(GRLIB)/lib/techmap/gencomp/clkgen.in \ -$(GRLIB)/lib/gleichmann/ac97/ac97_oc.in \ -$(GRLIB)/lib/gleichmann/multiio/multiio.in \ -$(GRLIB)/lib/gleichmann/ahb2hpi/ahb2hpi.in \ -$(GRLIB)/lib/gleichmann/spi/spi_oc.in \ -$(GRLIB)/lib/gleichmann/dac/adcdac.in \ -$(GRLIB)/lib/gleichmann/dac/dac_ahb.in \ -$(GRLIB)/lib/esa/memoryctrl/mctrl.in \ -$(GRLIB)/lib/esa/pci/pci_arb.in \ -$(GRLIB)/lib/praesum/ahbpassthru/ahbpassthru.in \ -$(GRLIB)/lib/gaisler/uart/dcom.in \ -$(GRLIB)/lib/gaisler/uart/uart2.in \ -$(GRLIB)/lib/gaisler/uart/uart1.in \ -$(GRLIB)/lib/gaisler/usb/grusbhc.in \ -$(GRLIB)/lib/gaisler/usb/grusb_dcl.in \ -$(GRLIB)/lib/gaisler/usb/grusbdc.in \ -$(GRLIB)/lib/gaisler/greth/greth.in \ -$(GRLIB)/lib/gaisler/greth/greth2.in \ -$(GRLIB)/lib/gaisler/spacewire/router.in \ -$(GRLIB)/lib/gaisler/spacewire/spacewire.in \ -$(GRLIB)/lib/gaisler/memctrl/sdctrl.in \ -$(GRLIB)/lib/gaisler/memctrl/srctrl.in \ -$(GRLIB)/lib/gaisler/memctrl/ssrctrl.in \ -$(GRLIB)/lib/gaisler/net/edcl.in \ -$(GRLIB)/lib/gaisler/ddr/mig.in \ -$(GRLIB)/lib/gaisler/ddr/ddr2sp.in \ -$(GRLIB)/lib/gaisler/ddr/ddrsp.in \ -$(GRLIB)/lib/gaisler/can/can_mc.in \ +CONFDEP = $(GRLIB)/lib/gaisler/leon3/irqmp.in \ +$(GRLIB)/lib/gaisler/leon3/leon3.in \ +$(GRLIB)/lib/gaisler/i2c/i2c.in \ +$(GRLIB)/lib/gaisler/i2c/i2cslv.in \ +$(GRLIB)/lib/gaisler/i2c/i2c2ahb.in \ $(GRLIB)/lib/gaisler/can/can_oc.in \ $(GRLIB)/lib/gaisler/can/grcan.in \ -$(GRLIB)/lib/gaisler/gr1553b/gr1553b.in \ -$(GRLIB)/lib/gaisler/gr1553b/gr1553b_2.in \ -$(GRLIB)/lib/gaisler/pci/pcitrace.in \ +$(GRLIB)/lib/gaisler/can/can_mc.in \ +$(GRLIB)/lib/gaisler/pci/pcidma.in \ +$(GRLIB)/lib/gaisler/pci/pci_target.in \ $(GRLIB)/lib/gaisler/pci/pci_mtf.in \ +$(GRLIB)/lib/gaisler/pci/pcitrace.in \ $(GRLIB)/lib/gaisler/pci/pci.in \ -$(GRLIB)/lib/gaisler/pci/pci_target.in \ -$(GRLIB)/lib/gaisler/pci/pcidma.in \ -$(GRLIB)/lib/gaisler/i2c/i2cslv.in \ -$(GRLIB)/lib/gaisler/i2c/i2c.in \ -$(GRLIB)/lib/gaisler/i2c/i2c2ahb.in \ -$(GRLIB)/lib/gaisler/ata/ata.in \ -$(GRLIB)/lib/gaisler/spi/spimctrl.in \ +$(GRLIB)/lib/gaisler/net/edcl.in \ $(GRLIB)/lib/gaisler/spi/spictrl.in \ $(GRLIB)/lib/gaisler/spi/spi2ahb.in \ +$(GRLIB)/lib/gaisler/spi/spimctrl.in \ +$(GRLIB)/lib/gaisler/greth/greth2.in \ +$(GRLIB)/lib/gaisler/greth/greth.in \ $(GRLIB)/lib/gaisler/irqmp/irqmp.in \ -$(GRLIB)/lib/gaisler/misc/ahbram.in \ -$(GRLIB)/lib/gaisler/misc/ps2vga.in \ +$(GRLIB)/lib/gaisler/gr1553b/gr1553b.in \ +$(GRLIB)/lib/gaisler/gr1553b/gr1553b_2.in \ +$(GRLIB)/lib/gaisler/leon3ftv2/leon3net.in \ +$(GRLIB)/lib/gaisler/uart/uart2.in \ +$(GRLIB)/lib/gaisler/uart/dcom.in \ +$(GRLIB)/lib/gaisler/uart/uart1.in \ $(GRLIB)/lib/gaisler/misc/gracectrl.in \ $(GRLIB)/lib/gaisler/misc/ahbrom.in \ -$(GRLIB)/lib/gaisler/misc/grgpio2.in \ -$(GRLIB)/lib/gaisler/misc/gptimer.in \ -$(GRLIB)/lib/gaisler/misc/ps2.in \ -$(GRLIB)/lib/gaisler/misc/ahbstat.in \ $(GRLIB)/lib/gaisler/misc/svgactrl.in \ $(GRLIB)/lib/gaisler/misc/grgpio.in \ +$(GRLIB)/lib/gaisler/misc/ps2.in \ +$(GRLIB)/lib/gaisler/misc/gptimer.in \ +$(GRLIB)/lib/gaisler/misc/ps2vga.in \ +$(GRLIB)/lib/gaisler/misc/grgpio2.in \ +$(GRLIB)/lib/gaisler/misc/ahbstat.in \ $(GRLIB)/lib/gaisler/misc/grsysmon.in \ -$(GRLIB)/lib/gaisler/jtag/jtag.in \ -$(GRLIB)/lib/gaisler/jtag/jtag2.in \ +$(GRLIB)/lib/gaisler/misc/ahbram.in \ +$(GRLIB)/lib/gaisler/usb/grusbhc.in \ +$(GRLIB)/lib/gaisler/usb/grusbdc.in \ +$(GRLIB)/lib/gaisler/usb/grusb_dcl.in \ +$(GRLIB)/lib/gaisler/spacewire/router.in \ +$(GRLIB)/lib/gaisler/spacewire/spacewire.in \ +$(GRLIB)/lib/gaisler/ddr/mig_series7.in \ +$(GRLIB)/lib/gaisler/ddr/mig.in \ +$(GRLIB)/lib/gaisler/ddr/ddrsp.in \ +$(GRLIB)/lib/gaisler/ddr/ddr2sp.in \ +$(GRLIB)/lib/gaisler/memctrl/sdctrl.in \ +$(GRLIB)/lib/gaisler/memctrl/ssrctrl.in \ +$(GRLIB)/lib/gaisler/memctrl/srctrl.in \ $(GRLIB)/lib/gaisler/jtag/bscan.in \ -$(GRLIB)/lib/gaisler/leon3/leon3.in \ -$(GRLIB)/lib/gaisler/leon3/irqmp.in \ +$(GRLIB)/lib/gaisler/jtag/jtag2.in \ +$(GRLIB)/lib/gaisler/jtag/jtag.in \ +$(GRLIB)/lib/esa/pci/pci_arb.in \ +$(GRLIB)/lib/esa/memoryctrl/mctrl.in \ $(GRLIB)/lib/grlib/amba/amba.in \ $(GRLIB)/lib/grlib/util/debug.in \ +$(GRLIB)/lib/techmap/clocks/clkgen.in \ +$(GRLIB)/lib/techmap/gencomp/tech.in \ +$(GRLIB)/lib/techmap/gencomp/clkgen.in \ -HELPDEP = $(GRLIB)/lib/techmap/clocks/clkgen.in.help \ -$(GRLIB)/lib/techmap/gencomp/tech.in.help \ -$(GRLIB)/lib/techmap/gencomp/clkgen.in.help \ -$(GRLIB)/lib/gleichmann/ac97/ac97_oc.in.help \ -$(GRLIB)/lib/gleichmann/multiio/multiio.in.help \ -$(GRLIB)/lib/gleichmann/ahb2hpi/ahb2hpi.in.help \ -$(GRLIB)/lib/gleichmann/spi/spi_oc.in.help \ -$(GRLIB)/lib/gleichmann/dac/dac_ahb.in.help \ -$(GRLIB)/lib/gleichmann/dac/adcdac.in.help \ -$(GRLIB)/lib/esa/memoryctrl/mctrl.in.help \ -$(GRLIB)/lib/esa/pci/pci_arb.in.help \ -$(GRLIB)/lib/gaisler/uart/uart2.in.help \ -$(GRLIB)/lib/gaisler/uart/uart1.in.help \ -$(GRLIB)/lib/gaisler/uart/dcom.in.help \ -$(GRLIB)/lib/gaisler/usb/grusb_dcl.in.help \ -$(GRLIB)/lib/gaisler/usb/grusbdc.in.help \ -$(GRLIB)/lib/gaisler/usb/grusbhc.in.help \ -$(GRLIB)/lib/gaisler/greth/greth.in.help \ -$(GRLIB)/lib/gaisler/greth/greth2.in.help \ -$(GRLIB)/lib/gaisler/spacewire/spacewire.in.help \ -$(GRLIB)/lib/gaisler/spacewire/router.in.help \ -$(GRLIB)/lib/gaisler/memctrl/ssrctrl.in.help \ -$(GRLIB)/lib/gaisler/memctrl/sdctrl.in.help \ -$(GRLIB)/lib/gaisler/memctrl/srctrl.in.help \ -$(GRLIB)/lib/gaisler/net/edcl.in.help \ -$(GRLIB)/lib/gaisler/ddr/ddr2sp.in.help \ -$(GRLIB)/lib/gaisler/ddr/ddrsp.in.help \ +HELPDEP = $(GRLIB)/lib/gaisler/leon3/irqmp.in.help \ +$(GRLIB)/lib/gaisler/leon3/leon3.in.help \ +$(GRLIB)/lib/gaisler/i2c/i2cslv.in.help \ +$(GRLIB)/lib/gaisler/i2c/i2c.in.help \ +$(GRLIB)/lib/gaisler/i2c/i2c2ahb.in.help \ $(GRLIB)/lib/gaisler/can/grcan.in.help \ $(GRLIB)/lib/gaisler/can/can_mc.in.help \ $(GRLIB)/lib/gaisler/can/can_oc.in.help \ -$(GRLIB)/lib/gaisler/gr1553b/gr1553b_2.in.help \ -$(GRLIB)/lib/gaisler/gr1553b/gr1553b.in.help \ $(GRLIB)/lib/gaisler/pci/pcitrace.in.help \ $(GRLIB)/lib/gaisler/pci/pci.in.help \ -$(GRLIB)/lib/gaisler/i2c/i2c.in.help \ -$(GRLIB)/lib/gaisler/i2c/i2cslv.in.help \ -$(GRLIB)/lib/gaisler/i2c/i2c2ahb.in.help \ -$(GRLIB)/lib/gaisler/ata/ata.in.help \ +$(GRLIB)/lib/gaisler/net/edcl.in.help \ $(GRLIB)/lib/gaisler/spi/spimctrl.in.help \ $(GRLIB)/lib/gaisler/spi/spi2ahb.in.help \ $(GRLIB)/lib/gaisler/spi/spictrl.in.help \ +$(GRLIB)/lib/gaisler/greth/greth.in.help \ +$(GRLIB)/lib/gaisler/greth/greth2.in.help \ $(GRLIB)/lib/gaisler/irqmp/irqmp.in.help \ -$(GRLIB)/lib/gaisler/misc/gracectrl.in.help \ -$(GRLIB)/lib/gaisler/misc/ahbram.in.help \ +$(GRLIB)/lib/gaisler/gr1553b/gr1553b_2.in.help \ +$(GRLIB)/lib/gaisler/gr1553b/gr1553b.in.help \ +$(GRLIB)/lib/gaisler/leon3ftv2/leon3net.in.help \ +$(GRLIB)/lib/gaisler/uart/uart2.in.help \ +$(GRLIB)/lib/gaisler/uart/dcom.in.help \ +$(GRLIB)/lib/gaisler/uart/uart1.in.help \ $(GRLIB)/lib/gaisler/misc/gptimer.in.help \ -$(GRLIB)/lib/gaisler/misc/grgpio2.in.help \ +$(GRLIB)/lib/gaisler/misc/ps2vga.in.help \ $(GRLIB)/lib/gaisler/misc/svgactrl.in.help \ +$(GRLIB)/lib/gaisler/misc/grsysmon.in.help \ +$(GRLIB)/lib/gaisler/misc/ahbstat.in.help \ $(GRLIB)/lib/gaisler/misc/ahbrom.in.help \ $(GRLIB)/lib/gaisler/misc/grgpio.in.help \ -$(GRLIB)/lib/gaisler/misc/ahbstat.in.help \ -$(GRLIB)/lib/gaisler/misc/ps2vga.in.help \ -$(GRLIB)/lib/gaisler/misc/grsysmon.in.help \ +$(GRLIB)/lib/gaisler/misc/gracectrl.in.help \ +$(GRLIB)/lib/gaisler/misc/grgpio2.in.help \ $(GRLIB)/lib/gaisler/misc/ps2.in.help \ +$(GRLIB)/lib/gaisler/misc/ahbram.in.help \ +$(GRLIB)/lib/gaisler/usb/grusbhc.in.help \ +$(GRLIB)/lib/gaisler/usb/grusb_dcl.in.help \ +$(GRLIB)/lib/gaisler/usb/grusbdc.in.help \ +$(GRLIB)/lib/gaisler/spacewire/spacewire.in.help \ +$(GRLIB)/lib/gaisler/spacewire/router.in.help \ +$(GRLIB)/lib/gaisler/ddr/ddr2sp.in.help \ +$(GRLIB)/lib/gaisler/ddr/ddrsp.in.help \ +$(GRLIB)/lib/gaisler/memctrl/ssrctrl.in.help \ +$(GRLIB)/lib/gaisler/memctrl/srctrl.in.help \ +$(GRLIB)/lib/gaisler/memctrl/sdctrl.in.help \ +$(GRLIB)/lib/gaisler/jtag/jtag2.in.help \ $(GRLIB)/lib/gaisler/jtag/jtag.in.help \ $(GRLIB)/lib/gaisler/jtag/bscan.in.help \ -$(GRLIB)/lib/gaisler/jtag/jtag2.in.help \ -$(GRLIB)/lib/gaisler/leon3/irqmp.in.help \ -$(GRLIB)/lib/gaisler/leon3/leon3.in.help \ +$(GRLIB)/lib/esa/pci/pci_arb.in.help \ +$(GRLIB)/lib/esa/memoryctrl/mctrl.in.help \ $(GRLIB)/lib/grlib/amba/amba.in.help \ $(GRLIB)/lib/grlib/util/debug.in.help \ +$(GRLIB)/lib/techmap/clocks/clkgen.in.help \ +$(GRLIB)/lib/techmap/gencomp/tech.in.help \ +$(GRLIB)/lib/techmap/gencomp/clkgen.in.help \ diff --git a/bin/ahbrom.c b/bin/ahbrom.c index 4c7deee4..3e858835 100644 --- a/bin/ahbrom.c +++ b/bin/ahbrom.c @@ -78,7 +78,6 @@ begin\n\ ahbso.hresp <= \"00\"; \n\ ahbso.hsplit <= (others => '0'); \n\ ahbso.hirq <= (others => '0');\n\ - ahbso.hcache <= '1';\n\ ahbso.hconfig <= hconfig;\n\ ahbso.hindex <= hindex;\n\ \n\ diff --git a/bin/gpl.sed b/bin/gpl.sed index 08b962a9..2bf32d2d 100644 --- a/bin/gpl.sed +++ b/bin/gpl.sed @@ -1,7 +1,7 @@ s/--GAISLER_LICENSE/------------------------------------------------------------------------------\ -- This file is a part of the GRLIB VHDL IP LIBRARY\ -- Copyright (C) 2003 - 2008, Gaisler Research\ --- Copyright (C) 2008 - 2012, Aeroflex Gaisler\ +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler\ --\ -- 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\ diff --git a/bin/gr.sed b/bin/gr.sed index 80a6e86a..b05f28f5 100644 --- a/bin/gr.sed +++ b/bin/gr.sed @@ -1,6 +1,6 @@ s/--GAISLER_LICENSE/------------------------------------------------------------------------------\ -- This file is a part of the GRLIB VHDL IP LIBRARY\ --- Copyright (C) 2012, Aeroflex Gaisler AB - all rights reserved.\ +-- Copyright (C) 2013, Aeroflex Gaisler AB - all rights reserved.\ --\ -- ANY USE OR REDISTRIBUTION IN PART OR IN WHOLE MUST BE HANDLED IN \ -- ACCORDANCE WITH THE GAISLER LICENSE AGREEMENT AND MUST BE APPROVED \ diff --git a/bin/make.ise b/bin/make.ise deleted file mode 100644 index 226adc0a..00000000 --- a/bin/make.ise +++ /dev/null @@ -1,29 +0,0 @@ -####################################################### -# ISE targets for GRLIB2 Template Designs -# Author: Magnus Sjalander -# Based on targets from GRLIB's bin/Makefile -####################################################### -.PHONY: ise-synp ise-prog-fpga -ISEDIR = ./work/ise -VPATH = $(ISEDIR):./work - -ise-synp: synplify - @mkdir -p $(ISEDIR) - @cd $(ISEDIR) && rm -f $(TOP).ngd $(TOP).ncd \ - && echo edif2ngd ../synplify/$(TOP).edf \ - && edif2ngd ../synplify/$(TOP).edf \ - && echo ngdbuild $(TOP).ngo -aul -uc ../../$(UCF) -p $(DEVICE) \ - && ngdbuild $(TOP).ngo -aul -uc ../../$(UCF) -p $(DEVICE) \ - && echo map -pr b -ol $(EFFORT) -p $(DEVICE) $(TOP) $(ISEMAPOPT) \ - && map -pr b -ol $(EFFORT) -p $(DEVICE) $(TOP) $(ISEMAPOPT) \ - && echo par -ol $(EFFORT) -pl $(EFFORT) -w $(TOP) $(TOP).ncd \ - && par -ol $(EFFORT) -pl $(EFFORT) -w $(TOP) $(TOP).ncd \ - && echo trce -v 25 $(TOP).ncd $(TOP).pcf \ - && trce -v 25 $(TOP).ncd $(TOP).pcf \ - && echo bitgen $(TOP) -d -m -w -f $(BITGEN) \ - && bitgen $(TOP) -d -m -w -f $(BITGEN) - -ise-prog-fpga: - cp $(ISEDIR)/$(TOP).bit $(ISEDIR)/$(BOARD).bit - cp $(ISEDIR)/$(TOP).msk $(ISEDIR)/$(BOARD).msk - cd $(ISEDIR) && impact -batch ../../$(GRLIB2)/boards/$(BOARD)/fpga.cmd diff --git a/bin/make.template b/bin/make.template deleted file mode 100644 index eee21d9c..00000000 --- a/bin/make.template +++ /dev/null @@ -1,43 +0,0 @@ -####################################################### -# GRLIB2 Template Design specific targets -# Author: Magnus Sjalander -####################################################### -.PHONY: clean config -VPATH = ./work/ - -# Get all SYN and SIM files this template design depends on --include ./work/file.deps - - -ifeq ("$(XCONFIG)","true") -CONF-DEP = cfg/config.vhd.h cfg/.config -CONF-TOOL = cpp -P -DGRLIB_PATH=$(GRLIB2) ./sw/xconfig/config.vhd.in > ./work/config.vhd -else -CONF-DEP = cfg/.config.xml -CONF-TOOL = java -classpath $(GRLIB2)/bin:$(GRLIB2)/bin/config-tool Config writeVHDLconfiguration -endif - -fileset.xml: $(GRLIB2)/work/grlib2.xml - @mkdir -p work - @java -classpath $(GRLIB2)/bin:$(GRLIB2)/bin/config-tool Grlib2 $(GRLIB2) $(CFG) - -work/config.vhd: $(CONF-DEP) - @mkdir -p work - @$(CONF-TOOL) - -cfg/.config.xml: $(GRLIB2)/work/grlib2.xml - @mkdir -p work - @java -classpath $(GRLIB2)/bin:$(GRLIB2)/bin/config-tool Config $(GRLIB2) $(CFG) - -cfg/config.vhd.h: - @make xconfig - -config: $(GRLIB2)/work/grlib2.xml - @mkdir -p work - @java -classpath $(GRLIB2)/bin:$(GRLIB2)/bin/config-tool Config $(GRLIB2) $(CFG) - @java -classpath $(GRLIB2)/bin:$(GRLIB2)/bin/config-tool Config writeVHDLconfiguration - -clean: - @rm -rf work - -DEVICE=$(PART)-$(PACKAGE)$(SPEED) diff --git a/bin/xstverilog b/bin/xstverilog deleted file mode 100755 index 827a2b0f..00000000 --- a/bin/xstverilog +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo elaborate -ifmt verilog -ifn $1 diff --git a/bin/xstvhdl b/bin/xstvhdl deleted file mode 100755 index 2bd5a0fa..00000000 --- a/bin/xstvhdl +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo elaborate -ifmt vhdl -ifn $1 diff --git a/boards/arrow-bemicro-sdk/leon3mp.qsf b/boards/arrow-bemicro-sdk/leon3mp.qsf index 7929407b..1a50e1da 100644 --- a/boards/arrow-bemicro-sdk/leon3mp.qsf +++ b/boards/arrow-bemicro-sdk/leon3mp.qsf @@ -5,6 +5,12 @@ set_global_assignment -name DEVICE_FILTER_PIN_COUNT 256 set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 7 set_global_assignment -name NUM_PARALLEL_PROCESSORS 2 set_global_assignment -name SDC_FILE quartus.sdc +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO" + # PIN LOCATION ASSIGNMENTS set_location_assignment PIN_T4 -to TEMP_SC @@ -148,6 +154,11 @@ set_location_assignment PIN_M10 -to P[29] set_location_assignment PIN_K15 -to P[58] set_location_assignment PIN_J14 -to P[59] set_location_assignment PIN_T7 -to P[60] +set_location_assignment PIN_H2 -to EPCS_DATA +set_location_assignment PIN_H1 -to EPCS_DCLK +set_location_assignment PIN_D2 -to EPCS_CSn +set_location_assignment PIN_C1 -to EPCS_ASDI + # PIN I/O STANDARDS set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" diff --git a/boards/digilent-zedboard-xc7z020/Makefile.inc b/boards/digilent-zedboard-xc7z020/Makefile.inc new file mode 100644 index 00000000..3ca8f5d3 --- /dev/null +++ b/boards/digilent-zedboard-xc7z020/Makefile.inc @@ -0,0 +1,28 @@ +# FPGA and Dev Board used in Design +TECHNOLOGY=zynq7000 +PART=XC7Z020 +PACKAGE=CLG484 +PROTOBOARD=zedBoard +SPEED=1 + +# Set Vivado Synthesis Flow and Strategy used for build +# Choose 'XST 14' or 'Vivado Synthesis 2012' +PLANAHEAD_SYNTH_FLOW="XST 14" + +# For 'Vivado Synthesis 2012' +# 1. 'Vivado Synthesis Defaults' +# For 'XST 14' +# 1. 'TimingWithIOBPacking' +# 2. 'TimingWithoutIOBPacking' +# 3. 'AreaReduction' +# 4. 'PowerOptimization' +# 5. 'XST Defaults' +PLANAHEAD_SYNTH_STRATEGY="XST Defaults" + +# Set Vivado Implementation strategy +# 1. HighEffort +# 2. HighEffortPhySynth +# 3. 'Vivado Implemnation Defaults' +# 4. LowEffort +# 5. QuickEffort +PLANAHEAD_IMPL_STRATEGY="ParHighEffort" diff --git a/boards/digilent-zedboard-xc7z020/digilent-zedboard-xc7z020.ucf b/boards/digilent-zedboard-xc7z020/digilent-zedboard-xc7z020.ucf new file mode 100644 index 00000000..4b695292 --- /dev/null +++ b/boards/digilent-zedboard-xc7z020/digilent-zedboard-xc7z020.ucf @@ -0,0 +1,23 @@ + +NET led[0] LOC = T22 | IOSTANDARD=LVCMOS33; # "LD0" +NET led[1] LOC = T21 | IOSTANDARD=LVCMOS33; # "LD1" +NET led[2] LOC = U22 | IOSTANDARD=LVCMOS33; # "LD2" +NET led[3] LOC = U21 | IOSTANDARD=LVCMOS33; # "LD3" +NET led[4] LOC = V22 | IOSTANDARD=LVCMOS33; # "LD4" +NET led[5] LOC = W22 | IOSTANDARD=LVCMOS33; # "LD5" +NET led[6] LOC = U19 | IOSTANDARD=LVCMOS33; # "LD6" +NET led[7] LOC = U14 | IOSTANDARD=LVCMOS33; # "LD7" + +NET button[0] LOC = R16 | IOSTANDARD=LVCMOS18; # "BTND" +NET button[1] LOC = N15 | IOSTANDARD=LVCMOS18; # "BTNL" +NET button[2] LOC = R18 | IOSTANDARD=LVCMOS18; # "BTNR" +NET button[3] LOC = T18 | IOSTANDARD=LVCMOS18; # "BTNU" + +NET switch[0] LOC = F22 | IOSTANDARD=LVCMOS18; # "SW0" +NET switch[1] LOC = G22 | IOSTANDARD=LVCMOS18; # "SW1" +NET switch[2] LOC = H22 | IOSTANDARD=LVCMOS18; # "SW2" +NET switch[3] LOC = F21 | IOSTANDARD=LVCMOS18; # "SW3" +NET switch[4] LOC = H19 | IOSTANDARD=LVCMOS18; # "SW4" +NET switch[5] LOC = H18 | IOSTANDARD=LVCMOS18; # "SW5" +NET switch[6] LOC = H17 | IOSTANDARD=LVCMOS18; # "SW6" +NET switch[7] LOC = M15 | IOSTANDARD=LVCMOS18; # "SW7" diff --git a/boards/digilent-zedboard-xc7z020/readme.txt b/boards/digilent-zedboard-xc7z020/readme.txt new file mode 100644 index 00000000..71f2b7fe --- /dev/null +++ b/boards/digilent-zedboard-xc7z020/readme.txt @@ -0,0 +1,3 @@ +This directory contains fpga pinout and xilinx coregen ip setup files used by the reference designs. + +For more information please visit www.zedboard.org and www.xilinx.com \ No newline at end of file diff --git a/boards/ge-hpe-midi-ep2s180/Makefile.inc b/boards/ge-hpe-midi-ep2s180/Makefile.inc deleted file mode 100644 index 4efa86be..00000000 --- a/boards/ge-hpe-midi-ep2s180/Makefile.inc +++ /dev/null @@ -1,27 +0,0 @@ -# to be included in design makefile -#CONFDEVICE=EPM1270 - -TECHNOLOGY= STRATIXII -PART= EP2S180 -PACKAGE= FC1020 -SPEED=-3 -SYNFREQ=60 -CONFDEVICE=EPCS64 - -ALTERA_PINGEN=altera_pingen.awk -BOARD_DIR=$(GRLIB)/boards/$(BOARD) - -$(BOARD_DIR)/leon_pinning.csv: $(BOARD_DIR)/LEON-MIDI-Vers1_1-AS2-Vers1_1-Pinning.csv - grep -v "Pin;Port;NetName" $< > $@ - -$(BOARD_DIR)/leon_pinning.txt: $(BOARD_DIR)/leon_pinning.csv - $(ALTERA_PINGEN) FS=";" $< > $@ - -board-pinning-clean: - -rm -f $(BOARD_DIR)/leon_pinning.csv \ - $(BOARD_DIR)/leon_pinning.txt - -board-pinning-check: $(BOARD_DIR)/leon_pinning.txt - @echo - @echo "Searching for pin double assignments..." - @for i in `sort --key=1 --field-separator=";" $< | cut --fields="1-1" --delimiter=";" | uniq --repeated`; do grep $$i $<; done diff --git a/boards/ge-hpe-midi-ep2s180/default.sdc b/boards/ge-hpe-midi-ep2s180/default.sdc deleted file mode 100644 index c1ca5e07..00000000 --- a/boards/ge-hpe-midi-ep2s180/default.sdc +++ /dev/null @@ -1,52 +0,0 @@ -# Synplicity, Inc. constraint file -# /home/jiri/ibm/vhdl/grlib/boards/gr-pci-xc2v/default.sdc -# Written on Fri Jul 30 18:56:40 2004 -# by Synplify Pro, 7.6 Scope Editor - -# -# Clocks -# -define_clock -name -disable {clk} -freq 100.000 -clockgroup default_clkgroup -define_clock -name -disable {pci_clk} -freq 40.000 -clockgroup pci_clkgroup - -# -# Clock to Clock -# - -# -# Inputs/Outputs -# -define_output_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {clk:r} -define_input_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {clk:r} -define_output_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {pci_clk:r} -define_input_delay -disable -default 18.00 -improve 0.00 -route 0.00 -ref {pci_clk:r} -define_input_delay -disable {pci_rst} 0.00 -improve 0.00 -route 0.00 -ref {pci_clk:r} - -# -# Registers -# - -# -# Multicycle Path -# - -# -# False Path -# - -# -# Delay Path -# - -# -# Attributes -# -define_global_attribute syn_useioff {1} - -# -# Compile Points -# - -# -# Other Constraints -# diff --git a/boards/ge-hpe-midi-ep2s180/leon3hpe.qsf b/boards/ge-hpe-midi-ep2s180/leon3hpe.qsf deleted file mode 100644 index 121afbb1..00000000 --- a/boards/ge-hpe-midi-ep2s180/leon3hpe.qsf +++ /dev/null @@ -1,688 +0,0 @@ -# Pin & Location Assignments -# ========================== -set_location_assignment PIN_AK11 -to address[0] -comment CB3_DATA6CB2_A0 -set_location_assignment PIN_AH8 -to address[1] -comment CB3_DATA0CB2_A1 -set_location_assignment PIN_J15 -to address[10] -comment MEMORY_A8 -set_location_assignment PIN_K13 -to address[11] -comment MEMORY_A9 -set_location_assignment PIN_D10 -to address[12] -comment MEMORY_A10 -set_location_assignment PIN_K15 -to address[13] -comment MEMORY_A11 -set_location_assignment PIN_H14 -to address[14] -comment MEMORY_A12 -set_location_assignment PIN_J12 -to address[15] -comment MEMORY_A13 -set_location_assignment PIN_J14 -to address[16] -comment MEMORY_A14 -set_location_assignment PIN_K12 -to address[17] -comment MEMORY_A15 -set_location_assignment PIN_E8 -to address[18] -comment MEMORY_A16 -set_location_assignment PIN_G13 -to address[19] -comment MEMORY_A17 -set_location_assignment PIN_E13 -to address[2] -comment MEMORY_A0 -set_location_assignment PIN_H13 -to address[20] -comment MEMORY_A18 -set_location_assignment PIN_L12 -to address[21] -comment MEMORY_A19 -set_location_assignment PIN_E7 -to address[22] -comment MEMORY_A20 -set_location_assignment PIN_G12 -to address[23] -comment MEMORY_A21 -set_location_assignment PIN_H12 -to address[24] -comment MEMORY_A22 -set_location_assignment PIN_AJ7 -to address[25] -comment CB3_DATA1CB2_A10 -set_location_assignment PIN_P2 -to address[26] -comment CB4_DATA26CB1_RX_01_N -set_location_assignment PIN_P1 -to address[27] -comment CB4_DATA27CB1_RX_01_P -set_location_assignment PIN_L17 -to address[3] -comment MEMORY_A1 -set_location_assignment PIN_K17 -to address[4] -comment MEMORY_A2 -set_location_assignment PIN_L13 -to address[5] -comment MEMORY_A3 -set_location_assignment PIN_L16 -to address[6] -comment MEMORY_A4 -set_location_assignment PIN_J13 -to address[7] -comment MEMORY_A5 -set_location_assignment PIN_D11 -to address[8] -comment MEMORY_A6 -set_location_assignment PIN_K16 -to address[9] -comment MEMORY_A7 -set_location_assignment PIN_Y5 -to can_rxd -comment CAN_RXD -set_location_assignment PIN_Y6 -to can_stb -comment CAN_STB -set_location_assignment PIN_AA8 -to can_txd -comment CAN_TXD -#set_location_assignment PIN_T3 -to clk -comment DUT1_CLK100M -set_location_assignment PIN_A17 -to clk -comment DUT1_CLK14P -set_location_assignment PIN_A12 -to data[0] -comment MEMORY_DQ0 -set_location_assignment PIN_B13 -to data[1] -comment MEMORY_DQ1 -set_location_assignment PIN_B9 -to data[10] -comment MEMORY_DQ10 -set_location_assignment PIN_C10 -to data[11] -comment MEMORY_DQ11 -set_location_assignment PIN_A9 -to data[12] -comment MEMORY_DQ12 -set_location_assignment PIN_F10 -to data[13] -comment MEMORY_DQ13 -set_location_assignment PIN_B8 -to data[14] -comment MEMORY_DQ14 -set_location_assignment PIN_C9 -to data[15] -comment MEMORY_DQ15 -set_location_assignment PIN_A8 -to data[16] -comment MEMORY_DQ16 -set_location_assignment PIN_D8 -to data[17] -comment MEMORY_DQ17 -set_location_assignment PIN_B7 -to data[18] -comment MEMORY_DQ18 -set_location_assignment PIN_C7 -to data[19] -comment MEMORY_DQ19 -set_location_assignment PIN_B11 -to data[2] -comment MEMORY_DQ2 -set_location_assignment PIN_A7 -to data[20] -comment MEMORY_DQ20 -set_location_assignment PIN_D7 -to data[21] -comment MEMORY_DQ21 -set_location_assignment PIN_B6 -to data[22] -comment MEMORY_DQ22 -set_location_assignment PIN_C6 -to data[23] -comment MEMORY_DQ23 -set_location_assignment PIN_A6 -to data[24] -comment MEMORY_DQ24 -set_location_assignment PIN_D6 -to data[25] -comment MEMORY_DQ25 -set_location_assignment PIN_B5 -to data[26] -comment MEMORY_DQ26 -set_location_assignment PIN_E6 -to data[27] -comment MEMORY_DQ27 -set_location_assignment PIN_A5 -to data[28] -comment MEMORY_DQ28 -set_location_assignment PIN_C5 -to data[29] -comment MEMORY_DQ29 -set_location_assignment PIN_D13 -to data[3] -comment MEMORY_DQ3 -set_location_assignment PIN_C4 -to data[30] -comment MEMORY_DQ30 -set_location_assignment PIN_E5 -to data[31] -comment MEMORY_DQ31 -set_location_assignment PIN_A11 -to data[4] -comment MEMORY_DQ4 -set_location_assignment PIN_F12 -to data[5] -comment MEMORY_DQ5 -set_location_assignment PIN_B10 -to data[6] -comment MEMORY_DQ6 -set_location_assignment PIN_C11 -to data[7] -comment MEMORY_DQ7 -set_location_assignment PIN_A10 -to data[8] -comment MEMORY_DQ8 -set_location_assignment PIN_E11 -to data[9] -comment MEMORY_DQ9 -set_location_assignment PIN_M2 -to dsuactn -comment CB4_DATA30CB1_RX_02_N -set_location_assignment PIN_E26 -to dsubre -comment TST_STEP -set_location_assignment PIN_AB3 -to dsurx -comment RS0_RXD_LVTTL -set_location_assignment PIN_AB9 -to dsutx -comment RS0_TXD_LVTTL -set_location_assignment PIN_W31 -to dsw[0] -comment DSW0 -set_location_assignment PIN_Y31 -to dsw[1] -comment DSW1 -set_location_assignment PIN_AA32 -to dsw[2] -comment DSW2 -set_location_assignment PIN_AA31 -to dsw[3] -comment DSW3 -set_location_assignment PIN_AC32 -to dsw[4] -comment DSW4 -set_location_assignment PIN_AC31 -to dsw[5] -comment DSW5 -set_location_assignment PIN_AD32 -to dsw[6] -comment DSW6 -set_location_assignment PIN_AD31 -to dsw[7] -comment DSW7 -set_location_assignment PIN_AH2 -to emdc -comment ETH_MDC -set_location_assignment PIN_AJ1 -to emdio -comment ETH_MDIO -set_location_assignment PIN_M1 -to errorn -comment CB4_DATA31CB1_RX_02_P -set_location_assignment PIN_E16 -to erx_clk -comment ETH_RXCLK -set_location_assignment PIN_U11 -to erx_col -comment ETH_COL -set_location_assignment PIN_AG2 -to erx_crs -comment ETH_CRS -set_location_assignment PIN_AG1 -to erx_dv -comment ETH_RXDV -set_location_assignment PIN_AB1 -to erx_er -comment ETH_RXER -set_location_assignment PIN_AE2 -to erxd[0] -comment ETH_RXD0 -set_location_assignment PIN_AD2 -to erxd[1] -comment ETH_RXD1 -set_location_assignment PIN_AD1 -to erxd[2] -comment ETH_RXD2 -set_location_assignment PIN_AC2 -to erxd[3] -comment ETH_RXD3 -set_location_assignment PIN_A16 -to etx_clk -comment ETH_TXCLK -set_location_assignment PIN_AF1 -to etx_en -comment ETH_TXEN -set_location_assignment PIN_Y3 -to etx_er -comment ETH_TXER -set_location_assignment PIN_AC1 -to etxd[0] -comment ETH_TXD0 -set_location_assignment PIN_AB2 -to etxd[1] -comment ETH_TXD1 -set_location_assignment PIN_AA2 -to etxd[2] -comment ETH_TXD2 -set_location_assignment PIN_AA1 -to etxd[3] -comment ETH_TXD3 -set_location_assignment PIN_L2 -to iosn -comment CB4_DATA10CB1_RX_03_N -set_location_assignment PIN_A23 -to lcd_enable -comment LCD_ENABLE -set_location_assignment PIN_B23 -to lcd_regsel -comment LCD_REGSEL -set_location_assignment PIN_D25 -to lcd_rw -comment LCD_RW -set_location_assignment PIN_B14 -to oen -comment "MEMORY_OE#" -set_location_assignment PIN_B15 -to ps2_clk[0] -comment PS2_KBCLK -set_location_assignment PIN_C16 -to ps2_clk[1] -comment PS2_MCLK -set_location_assignment PIN_C15 -to ps2_data[0] -comment PS2_KBDAT -set_location_assignment PIN_D16 -to ps2_data[1] -comment PS2_MDAT -set_location_assignment PIN_L1 -to ramoen[0] -comment CB4_DATA32CB1_RX_03_P -set_location_assignment PIN_K2 -to ramoen[1] -comment CB4_DATA33CB1_RX_04_N -set_location_assignment PIN_K1 -to ramoen[2] -comment CB4_DATA34CB1_RX_04_P -set_location_assignment PIN_J2 -to ramoen[3] -comment CB4_DATA35CB1_RX_05_N -set_location_assignment PIN_J1 -to ramoen[4] -comment CB4_DATA36CB1_RX_05_P -set_location_assignment PIN_B20 -to ramsn[0] -comment "SRAM_CE#" -set_location_assignment PIN_H2 -to ramsn[1] -comment CB4_DATA92CB1_RX_06_N -set_location_assignment PIN_H1 -to ramsn[2] -comment CB4_DATA93CB1_RX_06_P -set_location_assignment PIN_G2 -to ramsn[3] -comment CB4_DATA94CB1_RX_07_N -set_location_assignment PIN_G1 -to ramsn[4] -comment CB4_DATA95CB1_RX_07_P -set_location_assignment PIN_C13 -to rben[0] -comment "SRAM_BE0#" -set_location_assignment PIN_F14 -to rben[1] -comment "SRAM_BE1#" -set_location_assignment PIN_B12 -to rben[2] -comment "SRAM_BE2#" -set_location_assignment PIN_F13 -to rben[3] -comment "SRAM_BE3#" -set_location_assignment PIN_K4 -to read -comment CB4_DATA96CB1_RX_06_N -set_location_assignment PIN_U28 -to resetn -comment "USER_RESET#" -set_location_assignment PIN_V30 -to resoutn -comment "HPE_RESOUT#" -set_location_assignment PIN_C21 -to romsn[0] -comment "FLASH_CE#" -set_location_assignment PIN_K3 -to romsn[1] -comment CB4_DATA6CB1_RX_08_P -set_location_assignment PIN_J4 -to rwen[0] -comment CB4_DATA7CB1_RX_09_N -set_location_assignment PIN_J3 -to rwen[1] -comment CB4_DATA8CB1_RX_09_P -set_location_assignment PIN_G4 -to rwen[2] -comment CB4_DATA40CB1_RX_10_N -set_location_assignment PIN_G3 -to rwen[3] -comment CB4_DATA41CB1_RX_10_P -set_location_assignment PIN_AA3 -to rxd1 -comment RS1_RXD_LVTTL -set_location_assignment PIN_D32 -to sevensegment[0] -comment "HUMI_A#" -set_location_assignment PIN_F30 -to sevensegment[1] -comment "HUMI_B#" -set_location_assignment PIN_B29 -to sevensegment[2] -comment "HUMI_C#" -set_location_assignment PIN_D31 -to sevensegment[3] -comment "HUMI_D#" -set_location_assignment PIN_A29 -to sevensegment[4] -comment "HUMI_E#" -set_location_assignment PIN_F29 -to sevensegment[5] -comment "HUMI_F#" -set_location_assignment PIN_A28 -to sevensegment[6] -comment "HUMI_G#" -set_location_assignment PIN_B28 -to sevensegment[7] -comment "HUMI_DP#" -set_location_assignment PIN_B27 -to sevensegment[8] -comment "HUMI_SEG0#" -set_location_assignment PIN_E30 -to sevensegment[9] -comment "HUMI_SEG1#" -set_location_assignment PIN_B24 -to tst_col[0] -comment TST_COL0 -set_location_assignment PIN_E28 -to tst_col[1] -comment TST_COL1 -set_location_assignment PIN_A26 -to tst_col[2] -comment TST_COL2 -set_location_assignment PIN_AE32 -to tst_row[0] -comment TST_ROW0 -set_location_assignment PIN_AE31 -to tst_row[1] -comment TST_ROW1 -set_location_assignment PIN_AF32 -to tst_row[2] -comment TST_ROW2 -set_location_assignment PIN_AF31 -to tst_row[3] -comment TST_ROW3 -set_location_assignment PIN_W9 -to txd1 -comment RS1_TXD_LVTTL -set_location_assignment PIN_D19 -to writen -comment "MEMORY_WE#" -set_location_assignment PIN_Y11 -to led_enable -comment "HUMI_LED#" -set_location_assignment PIN_T32 -to ac97_bit_clk -comment AC97_BITCLK -set_location_assignment PIN_AD24 -to ac97_sync -comment AC97_SYNC -set_location_assignment PIN_AD25 -to ac97_sdata_out -comment AC97_SDATA_OUT -set_location_assignment PIN_AC8 -to ac97_sdata_in -comment AC97_SDATA_IN -set_location_assignment PIN_AJ18 -to ac97_ext_clk -comment AC97_EXT_CLK -set_location_assignment PIN_AC7 -to ac97_resetn -comment "AC97_RESET#" -set_location_assignment PIN_AK8 -to ac97_dbg_bit_clk -comment CB3_DATA41CB2_A11 -set_location_assignment PIN_AK12 -to ac97_dbg_sync -comment CB3_DATA40CB2_A12 -set_location_assignment PIN_AJ6 -to ac97_dbg_sdata_out -comment CB3_DATA39CB2_A13 -set_location_assignment PIN_AG9 -to ac97_dbg_sdata_in -comment CB3_DATA38CB2_A2 -set_location_assignment PIN_AG11 -to ac97_dbg_ext_clk -comment CB3_DATA37CB2_A3 -set_location_assignment PIN_AF12 -to ac97_dbg_resetn -comment CB3_DATA36CB2_A4 -set_location_assignment PIN_AK7 -to ac97_dbg_int -comment CB3_DATA35CB2_A5 -set_location_assignment PIN_AG8 -to ac97_dbg_int2 -comment CB3_DATA34CB2_A6 -set_location_assignment PIN_M25 -to vga_clk -comment VGA_CLK -set_location_assignment PIN_N23 -to vga_syncn -comment "VGA_SYNC#" -set_location_assignment PIN_K26 -to vga_blankn -comment "VGA_BLANK#" -set_location_assignment PIN_L24 -to vga_vsync -comment VGA_VSYNC -set_location_assignment PIN_K29 -to vga_hsync -comment VGA_HSYNC -set_location_assignment PIN_R27 -to vga_rd[7] -comment VGA_RD7 -set_location_assignment PIN_R26 -to vga_rd[6] -comment VGA_RD6 -set_location_assignment PIN_R25 -to vga_rd[5] -comment VGA_RD5 -set_location_assignment PIN_P29 -to vga_rd[4] -comment VGA_RD4 -set_location_assignment PIN_T27 -to vga_rd[3] -comment VGA_RD3 -set_location_assignment PIN_R28 -to vga_rd[2] -comment VGA_RD2 -set_location_assignment PIN_T28 -to vga_rd[1] -comment VGA_RD1 -set_location_assignment PIN_R29 -to vga_rd[0] -comment VGA_RD0 -set_location_assignment PIN_P24 -to vga_gr[7] -comment VGA_GR7 -set_location_assignment PIN_M30 -to vga_gr[6] -comment VGA_GR6 -set_location_assignment PIN_P25 -to vga_gr[5] -comment VGA_GR5 -set_location_assignment PIN_P26 -to vga_gr[4] -comment VGA_GR4 -set_location_assignment PIN_R23 -to vga_gr[3] -comment VGA_GR3 -set_location_assignment PIN_P27 -to vga_gr[2] -comment VGA_GR2 -set_location_assignment PIN_R24 -to vga_gr[1] -comment VGA_GR1 -set_location_assignment PIN_P28 -to vga_gr[0] -comment VGA_GR0 -set_location_assignment PIN_M24 -to vga_bl[7] -comment VGA_BL7 -set_location_assignment PIN_M26 -to vga_bl[6] -comment VGA_BL6 -set_location_assignment PIN_N24 -to vga_bl[5] -comment VGA_BL5 -set_location_assignment PIN_N26 -to vga_bl[4] -comment VGA_BL4 -set_location_assignment PIN_R22 -to vga_bl[3] -comment VGA_BL3 -set_location_assignment PIN_L30 -to vga_bl[2] -comment VGA_BL2 -set_location_assignment PIN_N25 -to vga_bl[1] -comment VGA_BL1 -set_location_assignment PIN_N27 -to vga_bl[0] -comment VGA_BL0 -set_location_assignment PIN_G21 -to sdcard_cs -comment SDCARD_CS -set_location_assignment PIN_H20 -to sdcard_di -comment SDCARD_DI -set_location_assignment PIN_D21 -to sdcard_sclk -comment SDCARD_SCLK -set_location_assignment PIN_K19 -to sdcard_do -comment SDCARD_DO -set_location_assignment PIN_U32 -to usb_clkout -comment USBD_CLKOUT -set_location_assignment PIN_L31 -to usb_d[15] -comment USBD_D15 -set_location_assignment PIN_K32 -to usb_d[14] -comment USBD_D14 -set_location_assignment PIN_M27 -to usb_d[13] -comment USBD_D13 -set_location_assignment PIN_L32 -to usb_d[12] -comment USBD_D12 -set_location_assignment PIN_M32 -to usb_d[11] -comment USBD_D11 -set_location_assignment PIN_M31 -to usb_d[10] -comment USBD_D10 -set_location_assignment PIN_M29 -to usb_d[9] -comment USBD_D9 -set_location_assignment PIN_N31 -to usb_d[8] -comment USBD_D8 -set_location_assignment PIN_P32 -to usb_d[7] -comment USBD_D7 -set_location_assignment PIN_P31 -to usb_d[6] -comment USBD_D6 -set_location_assignment PIN_N28 -to usb_d[5] -comment USBD_D5 -set_location_assignment PIN_R30 -to usb_d[4] -comment USBD_D4 -set_location_assignment PIN_N29 -to usb_d[3] -comment USBD_D3 -set_location_assignment PIN_R31 -to usb_d[2] -comment USBD_D2 -set_location_assignment PIN_N30 -to usb_d[1] -comment USBD_D1 -set_location_assignment PIN_T31 -to usb_d[0] -comment USBD_D0 -set_location_assignment PIN_G32 -to usb_linestate[1] -comment USBD_LINESTATE0 -set_location_assignment PIN_F32 -to usb_linestate[0] -comment USBD_LINESTATE1 -set_location_assignment PIN_E32 -to usb_opmode[1] -comment USBD_OPMODE1 -set_location_assignment PIN_J27 -to usb_opmode[0] -comment USBD_OPMODE0 -set_location_assignment PIN_H32 -to usb_rxactive -comment USBD_RXACTIVE -set_location_assignment PIN_J31 -to usb_rxerror -comment USBD_RXERROR -set_location_assignment PIN_L29 -to usb_rxvalid -comment USBD_RXVALID -set_location_assignment PIN_G31 -to usb_suspend -comment USBD_SUSPEND -set_location_assignment PIN_K27 -to usb_termsel -comment USBD_TERMSEL -set_location_assignment PIN_J32 -to usb_txready -comment USBD_TXREADY -set_location_assignment PIN_K31 -to usb_txvalid -comment USBD_TXVALID -set_location_assignment PIN_F31 -to usb_validh -comment USBD_VALIDH -set_location_assignment PIN_H31 -to usb_xcvrsel -comment USBD_XCRSEL -set_location_assignment PIN_E31 -to usb_dbus16 -comment USBD_DBUS16_8 -set_location_assignment PIN_H28 -to usb_unidir -comment USBD_UNIBIDI -set_location_assignment PIN_E25 -to adc_dout -comment ADC_DOUT -set_location_assignment PIN_AE25 -to adc_ain -comment ADC_AIN -set_location_assignment PIN_AD9 -to dac_out -comment DAC_OUT -set_location_assignment PIN_AH3 -to ereset -comment "ETH_RESET#" -set_location_assignment PIN_B26 -to usb_vbus -comment USBD_VBUS -set_location_assignment PIN_A27 -to usb_reset -comment USBD_RESET -set_location_assignment PIN_AA29 -to hpidata[0] -comment USB_GPIO0 -set_location_assignment PIN_W26 -to hpidata[1] -comment USB_GPIO1 -set_location_assignment PIN_AA30 -to hpidata[2] -comment USB_GPIO2 -set_location_assignment PIN_Y27 -to hpidata[3] -comment USB_GPIO3 -set_location_assignment PIN_AB28 -to hpidata[4] -comment USB_GPIO4 -set_location_assignment PIN_Y26 -to hpidata[5] -comment USB_GPIO5 -set_location_assignment PIN_AB29 -to hpidata[6] -comment USB_GPIO6 -set_location_assignment PIN_AA26 -to hpidata[7] -comment USB_GPIO7 -set_location_assignment PIN_AB30 -to hpidata[8] -comment USB_GPIO8 -set_location_assignment PIN_AB27 -to hpidata[9] -comment USB_GPIO9 -set_location_assignment PIN_AC26 -to hpidata[10] -comment USB_GPIO10 -set_location_assignment PIN_AB26 -to hpidata[11] -comment USB_GPIO11 -set_location_assignment PIN_AC27 -to hpidata[12] -comment USB_GPIO12 -set_location_assignment PIN_AC25 -to hpidata[13] -comment USB_GPIO13 -set_location_assignment PIN_AD27 -to hpidata[14] -comment USB_GPIO14 -set_location_assignment PIN_AE28 -to hpidata[15] -comment USB_GPIO15 -set_location_assignment PIN_AG30 -to hpiaddr[0] -comment USB_GPIO19 -set_location_assignment PIN_AF30 -to hpiaddr[1] -comment USB_GPIO20 -set_location_assignment PIN_AD26 -to hpicsn -comment USB_GPIO21 -set_location_assignment PIN_AF29 -to hpiwrn -comment USB_GPIO22 -set_location_assignment PIN_AD8 -to hpiint -comment USB_GPIO24 -set_location_assignment PIN_AE27 -to hpirdn -comment USB_GPIO23 -set_location_assignment PIN_V24 -to exp_datai[0] -comment CB4_DATA51 -set_location_assignment PIN_W27 -to exp_datai[1] -comment CB4_DATA53 -set_location_assignment PIN_AG18 -to exp_datai[2] -comment CB4_DATA55 -set_location_assignment PIN_AD18 -to exp_datai[3] -comment CB4_DATA57 -set_location_assignment PIN_AG15 -to exp_datai[4] -comment CB4_DATA59 -set_location_assignment PIN_AH14 -to exp_datai[5] -comment CB4_DATA61 -set_location_assignment PIN_AG14 -to exp_datai[6] -comment CB4_DATA63 -set_location_assignment PIN_AH29 -to exp_datai[7] -comment CB4_DATA65 -set_location_assignment PIN_AH30 -to exp_datai[8] -comment CB4_DATA67 -set_location_assignment PIN_AH13 -to exp_datai[9] -comment CB4_DATA69 -set_location_assignment PIN_AH32 -to exp_datai[10] -comment CB4_DATA72 -set_location_assignment PIN_AB15 -to exp_datai[11] -comment CB4_DATA73 -set_location_assignment PIN_AC15 -to exp_datai[12] -comment CB4_DATA75 -set_location_assignment PIN_AD19 -to exp_datai[13] -comment CB4_DATA78 -set_location_assignment PIN_AC14 -to exp_datai[14] -comment CB4_DATA79 -set_location_assignment PIN_AD13 -to exp_datai[15] -comment CB4_DATA81 -set_location_assignment PIN_AC13 -to exp_datai[16] -comment CB4_DATA83 -set_location_assignment PIN_AE14 -to exp_datai[17] -comment CB4_DATA85 -set_location_assignment PIN_AL16 -to exp_datai[18] -comment CB4_DATA87 -set_location_assignment PIN_AL14 -to exp_datai[19] -comment CB4_DATA89 -set_location_assignment PIN_AE19 -to exp_datao[0] -comment CB4_DATA52 -set_location_assignment PIN_AC9 -to exp_datao[1] -comment CB4_DATA54 -set_location_assignment PIN_AD10 -to exp_datao[2] -comment CB4_DATA56 -set_location_assignment PIN_AC11 -to exp_datao[3] -comment CB4_DATA58 -set_location_assignment PIN_AD11 -to exp_datao[4] -comment CB4_DATA60 -set_location_assignment PIN_AE12 -to exp_datao[5] -comment CB4_DATA62 -set_location_assignment PIN_AF13 -to exp_datao[6] -comment CB4_DATA64 -set_location_assignment PIN_AF23 -to exp_datao[7] -comment CB4_DATA66 -set_location_assignment PIN_AE23 -to exp_datao[8] -comment CB4_DATA68 -set_location_assignment PIN_AG32 -to exp_datao[9] -comment CB4_DATA70 -set_location_assignment PIN_AC16 -to exp_datao[10] -comment CB4_DATA71 -set_location_assignment PIN_AJ32 -to exp_datao[11] -comment CB4_DATA74 -set_location_assignment PIN_AJ31 -to exp_datao[12] -comment CB4_DATA76 -set_location_assignment PIN_AB14 -to exp_datao[13] -comment CB4_DATA77 -set_location_assignment PIN_AB18 -to exp_datao[14] -comment CB4_DATA80 -set_location_assignment PIN_AB17 -to exp_datao[15] -comment CB4_DATA82 -set_location_assignment PIN_AC17 -to exp_datao[16] -comment CB4_DATA84 -set_location_assignment PIN_AJ14 -to exp_datao[17] -comment CB4_DATA86 -set_location_assignment PIN_AM14 -to exp_datao[18] -comment CB4_DATA88 -set_location_assignment PIN_AL12 -to exp_datao[19] -comment CB4_DATA90 -set_location_assignment PIN_AH24 -to dbg_equal -comment CB4_DATA47CB2_DQ14 -set_location_assignment PIN_E18 -to sdclk[1] -comment t -set_location_assignment PIN_D18 -to sdclk[0] -comment t -set_location_assignment PIN_AE5 -to sdcke[1] -comment t -set_location_assignment PIN_AE6 -to sdcke[0] -comment t -set_location_assignment PIN_AB5 -to sdaddr[12] -comment t -set_location_assignment PIN_AC12 -to sdaddr[11] -comment t -set_location_assignment PIN_AE4 -to sdaddr[10] -comment t -set_location_assignment PIN_AB13 -to sdaddr[9] -comment t -set_location_assignment PIN_AH4 -to sdaddr[8] -comment t -set_location_assignment PIN_AE13 -to sdaddr[7] -comment t -set_location_assignment PIN_AC18 -to sdaddr[6] -comment t -set_location_assignment PIN_AE26 -to sdaddr[5] -comment t -set_location_assignment PIN_AF19 -to sdaddr[4] -comment t -set_location_assignment PIN_AH31 -to sdaddr[3] -comment t -set_location_assignment PIN_AG12 -to sdaddr[2] -comment t -set_location_assignment PIN_AG31 -to sdaddr[1] -comment t -set_location_assignment PIN_AG13 -to sdaddr[0] -comment t -set_location_assignment PIN_C12 -to sddq[63] -comment t -set_location_assignment PIN_D14 -to sddq[62] -comment t -set_location_assignment PIN_F16 -to sddq[61] -comment t -set_location_assignment PIN_F15 -to sddq[60] -comment t -set_location_assignment PIN_C22 -to sddq[59] -comment t -set_location_assignment PIN_E22 -to sddq[58] -comment t -set_location_assignment PIN_F23 -to sddq[57] -comment t -set_location_assignment PIN_D22 -to sddq[56] -comment t -set_location_assignment PIN_C25 -to sddq[55] -comment t -set_location_assignment PIN_C26 -to sddq[54] -comment t -set_location_assignment PIN_D26 -to sddq[53] -comment t -set_location_assignment PIN_D28 -to sddq[52] -comment t -set_location_assignment PIN_C29 -to sddq[51] -comment t -set_location_assignment PIN_G30 -to sddq[50] -comment t -set_location_assignment PIN_H30 -to sddq[49] -comment t -set_location_assignment PIN_H29 -to sddq[48] -comment t -set_location_assignment PIN_K30 -to sddq[47] -comment t -set_location_assignment PIN_AH1 -to sddq[46] -comment t -set_location_assignment PIN_AF2 -to sddq[45] -comment t -set_location_assignment PIN_AE1 -to sddq[44] -comment t -set_location_assignment PIN_U23 -to sddq[43] -comment t -set_location_assignment PIN_U10 -to sddq[42] -comment t -set_location_assignment PIN_AM4 -to sddq[41] -comment t -set_location_assignment PIN_AK4 -to sddq[40] -comment t -set_location_assignment PIN_AL4 -to sddq[39] -comment t -set_location_assignment PIN_V10 -to sddq[38] -comment t -set_location_assignment PIN_AL5 -to sddq[37] -comment t -set_location_assignment PIN_AM5 -to sddq[36] -comment t -set_location_assignment PIN_AL6 -to sddq[35] -comment t -set_location_assignment PIN_AM6 -to sddq[34] -comment t -set_location_assignment PIN_AL7 -to sddq[33] -comment t -set_location_assignment PIN_AM7 -to sddq[32] -comment t -set_location_assignment PIN_AL8 -to sddq[31] -comment t -set_location_assignment PIN_E27 -to sddq[30] -comment t -set_location_assignment PIN_L19 -to sddq[29] -comment t -set_location_assignment PIN_G22 -to sddq[28] -comment t -set_location_assignment PIN_K20 -to sddq[27] -comment t -set_location_assignment PIN_AB10 -to sddq[26] -comment t -set_location_assignment PIN_AD14 -to sddq[25] -comment t -set_location_assignment PIN_AB16 -to sddq[24] -comment t -set_location_assignment PIN_W25 -to sddq[23] -comment t -set_location_assignment PIN_V23 -to sddq[22] -comment t -set_location_assignment PIN_U22 -to sddq[21] -comment t -set_location_assignment PIN_G11 -to sddq[20] -comment t -set_location_assignment PIN_D5 -to sddq[19] -comment t -set_location_assignment PIN_J19 -to sddq[18] -comment t -set_location_assignment PIN_F17 -to sddq[17] -comment t -set_location_assignment PIN_E14 -to sddq[16] -comment t -set_location_assignment PIN_A14 -to sddq[15] -comment t -set_location_assignment PIN_E19 -to sddq[14] -comment t -set_location_assignment PIN_B16 -to sddq[13] -comment t -set_location_assignment PIN_B17 -to sddq[12] -comment t -set_location_assignment PIN_B21 -to sddq[11] -comment t -set_location_assignment PIN_A22 -to sddq[10] -comment t -set_location_assignment PIN_B22 -to sddq[9] -comment t -set_location_assignment PIN_D27 -to sddq[8] -comment t -set_location_assignment PIN_A24 -to sddq[7] -comment t -set_location_assignment PIN_C24 -to sddq[6] -comment t -set_location_assignment PIN_T23 -to sddq[5] -comment t -set_location_assignment PIN_F22 -to sddq[4] -comment t -set_location_assignment PIN_H21 -to sddq[3] -comment t -set_location_assignment PIN_L15 -to sddq[2] -comment t -set_location_assignment PIN_AF4 -to sddq[1] -comment t -set_location_assignment PIN_AB12 -to sddq[0] -comment t -set_location_assignment PIN_AB32 -to sddqm[7] -comment t -set_location_assignment PIN_AB31 -to sddqm[6] -comment t -set_location_assignment PIN_V31 -to sddqm[5] -comment t -set_location_assignment PIN_W32 -to sddqm[4] -comment t -set_location_assignment PIN_AC22 -to sddqm[3] -comment t -set_location_assignment PIN_C8 -to sddqm[2] -comment t -set_location_assignment PIN_E9 -to sddqm[1] -comment t -set_location_assignment PIN_F9 -to sddqm[0] -comment t -set_location_assignment PIN_AD4 -to sdwen -comment t -set_location_assignment PIN_W10 -to sdcasn -comment t -set_location_assignment PIN_W11 -to sdrasn -comment t -set_location_assignment PIN_AD30 -to sdcsn[1] -comment t -set_location_assignment PIN_AD12 -to sdcsn[0] -comment t -set_location_assignment PIN_W22 -to sdba[1] -comment t -set_location_assignment PIN_AB11 -to sdba[0] -comment t - -# Timing Assignments -# ================== -set_global_assignment -name IGNORE_CLOCK_SETTINGS ON -set_global_assignment -name INCLUDE_EXTERNAL_PIN_DELAYS_IN_FMAX_CALCULATIONS OFF -set_global_assignment -name FMAX_REQUIREMENT "100 MHz" - -# Analysis & Synthesis Assignments -# ================================ -set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA -set_global_assignment -name DEVICE_FILTER_PIN_COUNT 1020 -set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 3 -set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "Synplify Pro" -set_global_assignment -name FAMILY "Stratix II" -set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE AREA -set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE SPEED -set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE SPEED -set_global_assignment -name TOP_LEVEL_ENTITY leon3hpe -set_global_assignment -name VHDL_SHOW_LMF_MAPPING_MESSAGES OFF -set_global_assignment -name AUTO_ENABLE_SMART_COMPILE ON -set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF - -# Fitter Assignments -# ================== -set_global_assignment -name DEVICE EP2S180F1020C3 -set_global_assignment -name STRATIXII_CONFIGURATION_SCHEME "FAST PASSIVE PARALLEL" -set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "PASSIVE SERIAL" -set_global_assignment -name ENABLE_DEVICE_WIDE_RESET OFF -set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED WITH WEAK PULL-UP" -set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "USE AS REGULAR IO" -#set_global_assignment -name RESERVE_NCSO_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING OFF -set_global_assignment -name IO_PLACEMENT_OPTIMIZATION OFF -set_global_assignment -name INC_PLC_MODE OFF -set_global_assignment -name ROUTING_BACK_ANNOTATION_MODE OFF -set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" -set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 2 - -# Timing Analysis Assignments -# =========================== -set_global_assignment -name MAX_SCC_SIZE 50 - -# EDA Netlist Writer Assignments -# ============================== -set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim (VHDL output from Quartus II)" - -# Assembler Assignments -# ===================== -set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION ON -set_global_assignment -name COMPRESSION_MODE ON -set_global_assignment -name APEX20K_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name EXCALIBUR_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name MERCURY_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE EPC1 -set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name STRATIX_CONFIGURATION_DEVICE EPC8 -set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE ON -set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE OFF -set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE ON -set_global_assignment -name GENERATE_TTF_FILE ON - -# Simulator Assignments -# ===================== -set_global_assignment -name START_TIME "0 ns" -set_global_assignment -name GLITCH_INTERVAL "1 ns" - -# Design Assistant Assignments -# ============================ -set_global_assignment -name DRC_REPORT_TOP_FANOUT OFF -set_global_assignment -name DRC_REPORT_FANOUT_EXCEEDING OFF -set_global_assignment -name ASSG_CAT OFF -set_global_assignment -name ASSG_RULE_MISSING_FMAX OFF -set_global_assignment -name ASSG_RULE_MISSING_TIMING OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_ASYN_RAM OFF -set_global_assignment -name CLK_CAT OFF -set_global_assignment -name CLK_RULE_COMB_CLOCK OFF -set_global_assignment -name CLK_RULE_INV_CLOCK OFF -set_global_assignment -name CLK_RULE_GATING_SCHEME OFF -set_global_assignment -name CLK_RULE_INPINS_CLKNET OFF -set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES OFF -set_global_assignment -name CLK_RULE_MIX_EDGES OFF -set_global_assignment -name RESET_CAT OFF -set_global_assignment -name RESET_RULE_INPINS_RESETNET OFF -set_global_assignment -name RESET_RULE_UNSYNCH_EXRESET OFF -set_global_assignment -name RESET_RULE_IMSYNCH_EXRESET OFF -set_global_assignment -name RESET_RULE_COMB_ASYNCH_RESET OFF -set_global_assignment -name RESET_RULE_UNSYNCH_ASYNCH_DOMAIN OFF -set_global_assignment -name RESET_RULE_IMSYNCH_ASYNCH_DOMAIN OFF -set_global_assignment -name TIMING_CAT OFF -set_global_assignment -name TIMING_RULE_SHIFT_REG OFF -set_global_assignment -name TIMING_RULE_COIN_CLKEDGE OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_COMB_DRIVES_RAM_WE OFF -set_global_assignment -name NONSYNCHSTRUCT_CAT OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_COMBLOOP OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_REG_LOOP OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_DELAY_CHAIN OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_RIPPLE_CLK OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_ILLEGAL_PULSE_GEN OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_MULTI_VIBRATOR OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_SRLATCH OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_LATCH_UNIDENTIFIED OFF -set_global_assignment -name ACLK_CAT OFF -set_global_assignment -name ACLK_RULE_NO_SZER_ACLK_DOMAIN OFF -set_global_assignment -name ACLK_RULE_SZER_BTW_ACLK_DOMAIN OFF -set_global_assignment -name ACLK_RULE_IMSZER_ADOMAIN OFF -set_global_assignment -name HCPY_VREF_PINS OFF - -# Programmer Assignments -# ====================== -set_global_assignment -name GENERATE_JAM_FILE ON -set_global_assignment -name GENERATE_JBC_FILE ON - -# SignalTap II Assignments -# ======================== -set_global_assignment -name ENABLE_SIGNALTAP OFF - -# LogicLock Region Assignments -# ============================ -set_global_assignment -name LOGICLOCK_INCREMENTAL_COMPILE_ASSIGNMENT OFF - -# --------------------------------------------- -# start EDA_TOOL_SETTINGS(eda_design_synthesis) - - # Analysis & Synthesis Assignments - # ================================ -set_global_assignment -name EDA_INPUT_DATA_FORMAT "VERILOG HDL" -section_id eda_design_synthesis -set_global_assignment -name EDA_LMF_FILE synplcty.lmf -section_id eda_design_synthesis - - # EDA Netlist Writer Assignments - # ============================== -set_global_assignment -name EDA_OUTPUT_DATA_FORMAT EDIF -section_id eda_design_synthesis - -# end EDA_TOOL_SETTINGS(eda_design_synthesis) -# ------------------------------------------- - -# --------------------------------------- -# start EDA_TOOL_SETTINGS(eda_simulation) - - # EDA Netlist Writer Assignments - # ============================== -set_global_assignment -name EDA_INCLUDE_VHDL_CONFIGURATION_DECLARATION ON -section_id eda_simulation -set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation - -# end EDA_TOOL_SETTINGS(eda_simulation) -# ------------------------------------- - -# ---------------------- -# start ENTITY(leon3hpe) - - # Timing Assignments - # ================== -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[0] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[1] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[2] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[3] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[4] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[5] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[6] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[7] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[8] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[9] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[10] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[11] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[12] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[13] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[14] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[15] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[16] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[17] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[18] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[19] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[20] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[21] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[22] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[23] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[24] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[25] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[26] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[27] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[28] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[29] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[30] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[31] - - # Fitter Assignments - # ================== -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdclk[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[4] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[5] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[6] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[7] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[8] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[9] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[10] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[11] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[12] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[13] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[14] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[15] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[16] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[17] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[18] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[19] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[20] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[21] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[22] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[23] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[24] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[25] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[26] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[27] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to bufdir -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to bufoen -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[4] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[5] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[6] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[7] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[8] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[9] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[10] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[11] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[12] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[13] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[14] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[15] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[16] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[17] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[18] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[19] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[20] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[21] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[22] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[23] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[24] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[25] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[26] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[27] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[28] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[29] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[30] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[31] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erx_clk -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etx_clk -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdba[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdba[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdcasn -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdclk[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdcsn[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdcsn[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdrasn -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdwen -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to writen - -# end ENTITY(leon3hpe) -# -------------------- - -set_global_assignment -name LAST_QUARTUS_VERSION 7.2 -set_global_assignment -name ENABLE_ADVANCED_IO_TIMING OFF -set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to resetn - -set_global_assignment -name SMART_RECOMPILE ON -set_global_assignment -name NUM_PARALLEL_PROCESSORS 2 -set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 -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 OPTIMIZE_HOLD_TIMING "ALL PATHS" diff --git a/boards/ge-hpe-midi-ep2s60/Makefile.inc b/boards/ge-hpe-midi-ep2s60/Makefile.inc deleted file mode 100644 index a1de9682..00000000 --- a/boards/ge-hpe-midi-ep2s60/Makefile.inc +++ /dev/null @@ -1,27 +0,0 @@ -# to be included in design makefile -#CONFDEVICE=EPM1270 - -TECHNOLOGY= STRATIXII -PART= EP2S60 -PACKAGE= FC1020 -SPEED=-3 -SYNFREQ=60 -CONFDEVICE=EPCS64 - -ALTERA_PINGEN=altera_pingen.awk -BOARD_DIR=$(GRLIB)/boards/$(BOARD) - -$(BOARD_DIR)/leon_pinning.csv: $(BOARD_DIR)/LEON-MIDI-Vers1_1-AS2-Vers1_1-Pinning.csv - grep -v "Pin;Port;NetName" $< > $@ - -$(BOARD_DIR)/leon_pinning.txt: $(BOARD_DIR)/leon_pinning.csv - $(ALTERA_PINGEN) FS=";" $< > $@ - -board-pinning-clean: - -rm -f $(BOARD_DIR)/leon_pinning.csv \ - $(BOARD_DIR)/leon_pinning.txt - -board-pinning-check: $(BOARD_DIR)/leon_pinning.txt - @echo - @echo "Searching for pin double assignments..." - @for i in `sort --key=1 --field-separator=";" $< | cut --fields="1-1" --delimiter=";" | uniq --repeated`; do grep $$i $<; done diff --git a/boards/ge-hpe-midi-ep2s60/default.sdc b/boards/ge-hpe-midi-ep2s60/default.sdc deleted file mode 100644 index c1ca5e07..00000000 --- a/boards/ge-hpe-midi-ep2s60/default.sdc +++ /dev/null @@ -1,52 +0,0 @@ -# Synplicity, Inc. constraint file -# /home/jiri/ibm/vhdl/grlib/boards/gr-pci-xc2v/default.sdc -# Written on Fri Jul 30 18:56:40 2004 -# by Synplify Pro, 7.6 Scope Editor - -# -# Clocks -# -define_clock -name -disable {clk} -freq 100.000 -clockgroup default_clkgroup -define_clock -name -disable {pci_clk} -freq 40.000 -clockgroup pci_clkgroup - -# -# Clock to Clock -# - -# -# Inputs/Outputs -# -define_output_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {clk:r} -define_input_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {clk:r} -define_output_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {pci_clk:r} -define_input_delay -disable -default 18.00 -improve 0.00 -route 0.00 -ref {pci_clk:r} -define_input_delay -disable {pci_rst} 0.00 -improve 0.00 -route 0.00 -ref {pci_clk:r} - -# -# Registers -# - -# -# Multicycle Path -# - -# -# False Path -# - -# -# Delay Path -# - -# -# Attributes -# -define_global_attribute syn_useioff {1} - -# -# Compile Points -# - -# -# Other Constraints -# diff --git a/boards/ge-hpe-midi-ep2s60/leon3hpe.qsf b/boards/ge-hpe-midi-ep2s60/leon3hpe.qsf deleted file mode 100644 index 90d6931f..00000000 --- a/boards/ge-hpe-midi-ep2s60/leon3hpe.qsf +++ /dev/null @@ -1,688 +0,0 @@ -# Pin & Location Assignments -# ========================== -set_location_assignment PIN_AK11 -to address[0] -comment CB3_DATA6CB2_A0 -set_location_assignment PIN_AH8 -to address[1] -comment CB3_DATA0CB2_A1 -set_location_assignment PIN_J15 -to address[10] -comment MEMORY_A8 -set_location_assignment PIN_K13 -to address[11] -comment MEMORY_A9 -set_location_assignment PIN_D10 -to address[12] -comment MEMORY_A10 -set_location_assignment PIN_K15 -to address[13] -comment MEMORY_A11 -set_location_assignment PIN_H14 -to address[14] -comment MEMORY_A12 -set_location_assignment PIN_J12 -to address[15] -comment MEMORY_A13 -set_location_assignment PIN_J14 -to address[16] -comment MEMORY_A14 -set_location_assignment PIN_K12 -to address[17] -comment MEMORY_A15 -set_location_assignment PIN_E8 -to address[18] -comment MEMORY_A16 -set_location_assignment PIN_G13 -to address[19] -comment MEMORY_A17 -set_location_assignment PIN_E13 -to address[2] -comment MEMORY_A0 -set_location_assignment PIN_H13 -to address[20] -comment MEMORY_A18 -set_location_assignment PIN_L12 -to address[21] -comment MEMORY_A19 -set_location_assignment PIN_E7 -to address[22] -comment MEMORY_A20 -set_location_assignment PIN_G12 -to address[23] -comment MEMORY_A21 -set_location_assignment PIN_H12 -to address[24] -comment MEMORY_A22 -set_location_assignment PIN_AJ7 -to address[25] -comment CB3_DATA1CB2_A10 -set_location_assignment PIN_P2 -to address[26] -comment CB4_DATA26CB1_RX_01_N -set_location_assignment PIN_P1 -to address[27] -comment CB4_DATA27CB1_RX_01_P -set_location_assignment PIN_L17 -to address[3] -comment MEMORY_A1 -set_location_assignment PIN_K17 -to address[4] -comment MEMORY_A2 -set_location_assignment PIN_L13 -to address[5] -comment MEMORY_A3 -set_location_assignment PIN_L16 -to address[6] -comment MEMORY_A4 -set_location_assignment PIN_J13 -to address[7] -comment MEMORY_A5 -set_location_assignment PIN_D11 -to address[8] -comment MEMORY_A6 -set_location_assignment PIN_K16 -to address[9] -comment MEMORY_A7 -set_location_assignment PIN_Y5 -to can_rxd -comment CAN_RXD -set_location_assignment PIN_Y6 -to can_stb -comment CAN_STB -set_location_assignment PIN_AA8 -to can_txd -comment CAN_TXD -set_location_assignment PIN_T3 -to clk -comment DUT1_CLK100M -#set_location_assignment PIN_A17 -to clk -comment DUT1_CLK14P -set_location_assignment PIN_A12 -to data[0] -comment MEMORY_DQ0 -set_location_assignment PIN_B13 -to data[1] -comment MEMORY_DQ1 -set_location_assignment PIN_B9 -to data[10] -comment MEMORY_DQ10 -set_location_assignment PIN_C10 -to data[11] -comment MEMORY_DQ11 -set_location_assignment PIN_A9 -to data[12] -comment MEMORY_DQ12 -set_location_assignment PIN_F10 -to data[13] -comment MEMORY_DQ13 -set_location_assignment PIN_B8 -to data[14] -comment MEMORY_DQ14 -set_location_assignment PIN_C9 -to data[15] -comment MEMORY_DQ15 -set_location_assignment PIN_A8 -to data[16] -comment MEMORY_DQ16 -set_location_assignment PIN_D8 -to data[17] -comment MEMORY_DQ17 -set_location_assignment PIN_B7 -to data[18] -comment MEMORY_DQ18 -set_location_assignment PIN_C7 -to data[19] -comment MEMORY_DQ19 -set_location_assignment PIN_B11 -to data[2] -comment MEMORY_DQ2 -set_location_assignment PIN_A7 -to data[20] -comment MEMORY_DQ20 -set_location_assignment PIN_D7 -to data[21] -comment MEMORY_DQ21 -set_location_assignment PIN_B6 -to data[22] -comment MEMORY_DQ22 -set_location_assignment PIN_C6 -to data[23] -comment MEMORY_DQ23 -set_location_assignment PIN_A6 -to data[24] -comment MEMORY_DQ24 -set_location_assignment PIN_D6 -to data[25] -comment MEMORY_DQ25 -set_location_assignment PIN_B5 -to data[26] -comment MEMORY_DQ26 -set_location_assignment PIN_E6 -to data[27] -comment MEMORY_DQ27 -set_location_assignment PIN_A5 -to data[28] -comment MEMORY_DQ28 -set_location_assignment PIN_C5 -to data[29] -comment MEMORY_DQ29 -set_location_assignment PIN_D13 -to data[3] -comment MEMORY_DQ3 -set_location_assignment PIN_C4 -to data[30] -comment MEMORY_DQ30 -set_location_assignment PIN_E5 -to data[31] -comment MEMORY_DQ31 -set_location_assignment PIN_A11 -to data[4] -comment MEMORY_DQ4 -set_location_assignment PIN_F12 -to data[5] -comment MEMORY_DQ5 -set_location_assignment PIN_B10 -to data[6] -comment MEMORY_DQ6 -set_location_assignment PIN_C11 -to data[7] -comment MEMORY_DQ7 -set_location_assignment PIN_A10 -to data[8] -comment MEMORY_DQ8 -set_location_assignment PIN_E11 -to data[9] -comment MEMORY_DQ9 -set_location_assignment PIN_M2 -to dsuactn -comment CB4_DATA30CB1_RX_02_N -set_location_assignment PIN_E26 -to dsubre -comment TST_STEP -set_location_assignment PIN_AB3 -to dsurx -comment RS0_RXD_LVTTL -set_location_assignment PIN_AB9 -to dsutx -comment RS0_TXD_LVTTL -set_location_assignment PIN_W31 -to dsw[0] -comment DSW0 -set_location_assignment PIN_Y31 -to dsw[1] -comment DSW1 -set_location_assignment PIN_AA32 -to dsw[2] -comment DSW2 -set_location_assignment PIN_AA31 -to dsw[3] -comment DSW3 -set_location_assignment PIN_AC32 -to dsw[4] -comment DSW4 -set_location_assignment PIN_AC31 -to dsw[5] -comment DSW5 -set_location_assignment PIN_AD32 -to dsw[6] -comment DSW6 -set_location_assignment PIN_AD31 -to dsw[7] -comment DSW7 -set_location_assignment PIN_AH2 -to emdc -comment ETH_MDC -set_location_assignment PIN_AJ1 -to emdio -comment ETH_MDIO -set_location_assignment PIN_M1 -to errorn -comment CB4_DATA31CB1_RX_02_P -set_location_assignment PIN_E16 -to erx_clk -comment ETH_RXCLK -set_location_assignment PIN_U11 -to erx_col -comment ETH_COL -set_location_assignment PIN_AG2 -to erx_crs -comment ETH_CRS -set_location_assignment PIN_AG1 -to erx_dv -comment ETH_RXDV -set_location_assignment PIN_AB1 -to erx_er -comment ETH_RXER -set_location_assignment PIN_AE2 -to erxd[0] -comment ETH_RXD0 -set_location_assignment PIN_AD2 -to erxd[1] -comment ETH_RXD1 -set_location_assignment PIN_AD1 -to erxd[2] -comment ETH_RXD2 -set_location_assignment PIN_AC2 -to erxd[3] -comment ETH_RXD3 -set_location_assignment PIN_A16 -to etx_clk -comment ETH_TXCLK -set_location_assignment PIN_AF1 -to etx_en -comment ETH_TXEN -set_location_assignment PIN_Y3 -to etx_er -comment ETH_TXER -set_location_assignment PIN_AC1 -to etxd[0] -comment ETH_TXD0 -set_location_assignment PIN_AB2 -to etxd[1] -comment ETH_TXD1 -set_location_assignment PIN_AA2 -to etxd[2] -comment ETH_TXD2 -set_location_assignment PIN_AA1 -to etxd[3] -comment ETH_TXD3 -set_location_assignment PIN_L2 -to iosn -comment CB4_DATA10CB1_RX_03_N -set_location_assignment PIN_A23 -to lcd_enable -comment LCD_ENABLE -set_location_assignment PIN_B23 -to lcd_regsel -comment LCD_REGSEL -set_location_assignment PIN_D25 -to lcd_rw -comment LCD_RW -set_location_assignment PIN_B14 -to oen -comment "MEMORY_OE#" -set_location_assignment PIN_B15 -to ps2_clk[0] -comment PS2_KBCLK -set_location_assignment PIN_C16 -to ps2_clk[1] -comment PS2_MCLK -set_location_assignment PIN_C15 -to ps2_data[0] -comment PS2_KBDAT -set_location_assignment PIN_D16 -to ps2_data[1] -comment PS2_MDAT -set_location_assignment PIN_L1 -to ramoen[0] -comment CB4_DATA32CB1_RX_03_P -set_location_assignment PIN_K2 -to ramoen[1] -comment CB4_DATA33CB1_RX_04_N -set_location_assignment PIN_K1 -to ramoen[2] -comment CB4_DATA34CB1_RX_04_P -set_location_assignment PIN_J2 -to ramoen[3] -comment CB4_DATA35CB1_RX_05_N -set_location_assignment PIN_J1 -to ramoen[4] -comment CB4_DATA36CB1_RX_05_P -set_location_assignment PIN_B20 -to ramsn[0] -comment "SRAM_CE#" -set_location_assignment PIN_H2 -to ramsn[1] -comment CB4_DATA92CB1_RX_06_N -set_location_assignment PIN_H1 -to ramsn[2] -comment CB4_DATA93CB1_RX_06_P -set_location_assignment PIN_G2 -to ramsn[3] -comment CB4_DATA94CB1_RX_07_N -set_location_assignment PIN_G1 -to ramsn[4] -comment CB4_DATA95CB1_RX_07_P -set_location_assignment PIN_C13 -to rben[0] -comment "SRAM_BE0#" -set_location_assignment PIN_F14 -to rben[1] -comment "SRAM_BE1#" -set_location_assignment PIN_B12 -to rben[2] -comment "SRAM_BE2#" -set_location_assignment PIN_F13 -to rben[3] -comment "SRAM_BE3#" -set_location_assignment PIN_K4 -to read -comment CB4_DATA96CB1_RX_06_N -set_location_assignment PIN_U28 -to resetn -comment "USER_RESET#" -set_location_assignment PIN_V30 -to resoutn -comment "HPE_RESOUT#" -set_location_assignment PIN_C21 -to romsn[0] -comment "FLASH_CE#" -set_location_assignment PIN_K3 -to romsn[1] -comment CB4_DATA6CB1_RX_08_P -set_location_assignment PIN_J4 -to rwen[0] -comment CB4_DATA7CB1_RX_09_N -set_location_assignment PIN_J3 -to rwen[1] -comment CB4_DATA8CB1_RX_09_P -set_location_assignment PIN_G4 -to rwen[2] -comment CB4_DATA40CB1_RX_10_N -set_location_assignment PIN_G3 -to rwen[3] -comment CB4_DATA41CB1_RX_10_P -set_location_assignment PIN_AA3 -to rxd1 -comment RS1_RXD_LVTTL -set_location_assignment PIN_D32 -to sevensegment[0] -comment "HUMI_A#" -set_location_assignment PIN_F30 -to sevensegment[1] -comment "HUMI_B#" -set_location_assignment PIN_B29 -to sevensegment[2] -comment "HUMI_C#" -set_location_assignment PIN_D31 -to sevensegment[3] -comment "HUMI_D#" -set_location_assignment PIN_A29 -to sevensegment[4] -comment "HUMI_E#" -set_location_assignment PIN_F29 -to sevensegment[5] -comment "HUMI_F#" -set_location_assignment PIN_A28 -to sevensegment[6] -comment "HUMI_G#" -set_location_assignment PIN_B28 -to sevensegment[7] -comment "HUMI_DP#" -set_location_assignment PIN_B27 -to sevensegment[8] -comment "HUMI_SEG0#" -set_location_assignment PIN_E30 -to sevensegment[9] -comment "HUMI_SEG1#" -set_location_assignment PIN_B24 -to tst_col[0] -comment TST_COL0 -set_location_assignment PIN_E28 -to tst_col[1] -comment TST_COL1 -set_location_assignment PIN_A26 -to tst_col[2] -comment TST_COL2 -set_location_assignment PIN_AE32 -to tst_row[0] -comment TST_ROW0 -set_location_assignment PIN_AE31 -to tst_row[1] -comment TST_ROW1 -set_location_assignment PIN_AF32 -to tst_row[2] -comment TST_ROW2 -set_location_assignment PIN_AF31 -to tst_row[3] -comment TST_ROW3 -set_location_assignment PIN_W9 -to txd1 -comment RS1_TXD_LVTTL -set_location_assignment PIN_D19 -to writen -comment "MEMORY_WE#" -set_location_assignment PIN_Y11 -to led_enable -comment "HUMI_LED#" -set_location_assignment PIN_T32 -to ac97_bit_clk -comment AC97_BITCLK -set_location_assignment PIN_AD24 -to ac97_sync -comment AC97_SYNC -set_location_assignment PIN_AD25 -to ac97_sdata_out -comment AC97_SDATA_OUT -set_location_assignment PIN_AC8 -to ac97_sdata_in -comment AC97_SDATA_IN -set_location_assignment PIN_AJ18 -to ac97_ext_clk -comment AC97_EXT_CLK -set_location_assignment PIN_AC7 -to ac97_resetn -comment "AC97_RESET#" -set_location_assignment PIN_AK8 -to ac97_dbg_bit_clk -comment CB3_DATA41CB2_A11 -set_location_assignment PIN_AK12 -to ac97_dbg_sync -comment CB3_DATA40CB2_A12 -set_location_assignment PIN_AJ6 -to ac97_dbg_sdata_out -comment CB3_DATA39CB2_A13 -set_location_assignment PIN_AG9 -to ac97_dbg_sdata_in -comment CB3_DATA38CB2_A2 -set_location_assignment PIN_AG11 -to ac97_dbg_ext_clk -comment CB3_DATA37CB2_A3 -set_location_assignment PIN_AF12 -to ac97_dbg_resetn -comment CB3_DATA36CB2_A4 -set_location_assignment PIN_AK7 -to ac97_dbg_int -comment CB3_DATA35CB2_A5 -set_location_assignment PIN_AG8 -to ac97_dbg_int2 -comment CB3_DATA34CB2_A6 -set_location_assignment PIN_M25 -to vga_clk -comment VGA_CLK -set_location_assignment PIN_N23 -to vga_syncn -comment "VGA_SYNC#" -set_location_assignment PIN_K26 -to vga_blankn -comment "VGA_BLANK#" -set_location_assignment PIN_L24 -to vga_vsync -comment VGA_VSYNC -set_location_assignment PIN_K29 -to vga_hsync -comment VGA_HSYNC -set_location_assignment PIN_R27 -to vga_rd[7] -comment VGA_RD7 -set_location_assignment PIN_R26 -to vga_rd[6] -comment VGA_RD6 -set_location_assignment PIN_R25 -to vga_rd[5] -comment VGA_RD5 -set_location_assignment PIN_P29 -to vga_rd[4] -comment VGA_RD4 -set_location_assignment PIN_T27 -to vga_rd[3] -comment VGA_RD3 -set_location_assignment PIN_R28 -to vga_rd[2] -comment VGA_RD2 -set_location_assignment PIN_T28 -to vga_rd[1] -comment VGA_RD1 -set_location_assignment PIN_R29 -to vga_rd[0] -comment VGA_RD0 -set_location_assignment PIN_P24 -to vga_gr[7] -comment VGA_GR7 -set_location_assignment PIN_M30 -to vga_gr[6] -comment VGA_GR6 -set_location_assignment PIN_P25 -to vga_gr[5] -comment VGA_GR5 -set_location_assignment PIN_P26 -to vga_gr[4] -comment VGA_GR4 -set_location_assignment PIN_R23 -to vga_gr[3] -comment VGA_GR3 -set_location_assignment PIN_P27 -to vga_gr[2] -comment VGA_GR2 -set_location_assignment PIN_R24 -to vga_gr[1] -comment VGA_GR1 -set_location_assignment PIN_P28 -to vga_gr[0] -comment VGA_GR0 -set_location_assignment PIN_M24 -to vga_bl[7] -comment VGA_BL7 -set_location_assignment PIN_M26 -to vga_bl[6] -comment VGA_BL6 -set_location_assignment PIN_N24 -to vga_bl[5] -comment VGA_BL5 -set_location_assignment PIN_N26 -to vga_bl[4] -comment VGA_BL4 -set_location_assignment PIN_R22 -to vga_bl[3] -comment VGA_BL3 -set_location_assignment PIN_L30 -to vga_bl[2] -comment VGA_BL2 -set_location_assignment PIN_N25 -to vga_bl[1] -comment VGA_BL1 -set_location_assignment PIN_N27 -to vga_bl[0] -comment VGA_BL0 -set_location_assignment PIN_G21 -to sdcard_cs -comment SDCARD_CS -set_location_assignment PIN_H20 -to sdcard_di -comment SDCARD_DI -set_location_assignment PIN_D21 -to sdcard_sclk -comment SDCARD_SCLK -set_location_assignment PIN_K19 -to sdcard_do -comment SDCARD_DO -set_location_assignment PIN_U32 -to usb_clkout -comment USBD_CLKOUT -set_location_assignment PIN_L31 -to usb_d[15] -comment USBD_D15 -set_location_assignment PIN_K32 -to usb_d[14] -comment USBD_D14 -set_location_assignment PIN_M27 -to usb_d[13] -comment USBD_D13 -set_location_assignment PIN_L32 -to usb_d[12] -comment USBD_D12 -set_location_assignment PIN_M32 -to usb_d[11] -comment USBD_D11 -set_location_assignment PIN_M31 -to usb_d[10] -comment USBD_D10 -set_location_assignment PIN_M29 -to usb_d[9] -comment USBD_D9 -set_location_assignment PIN_N31 -to usb_d[8] -comment USBD_D8 -set_location_assignment PIN_P32 -to usb_d[7] -comment USBD_D7 -set_location_assignment PIN_P31 -to usb_d[6] -comment USBD_D6 -set_location_assignment PIN_N28 -to usb_d[5] -comment USBD_D5 -set_location_assignment PIN_R30 -to usb_d[4] -comment USBD_D4 -set_location_assignment PIN_N29 -to usb_d[3] -comment USBD_D3 -set_location_assignment PIN_R31 -to usb_d[2] -comment USBD_D2 -set_location_assignment PIN_N30 -to usb_d[1] -comment USBD_D1 -set_location_assignment PIN_T31 -to usb_d[0] -comment USBD_D0 -set_location_assignment PIN_G32 -to usb_linestate[1] -comment USBD_LINESTATE0 -set_location_assignment PIN_F32 -to usb_linestate[0] -comment USBD_LINESTATE1 -set_location_assignment PIN_E32 -to usb_opmode[1] -comment USBD_OPMODE1 -set_location_assignment PIN_J27 -to usb_opmode[0] -comment USBD_OPMODE0 -set_location_assignment PIN_H32 -to usb_rxactive -comment USBD_RXACTIVE -set_location_assignment PIN_J31 -to usb_rxerror -comment USBD_RXERROR -set_location_assignment PIN_L29 -to usb_rxvalid -comment USBD_RXVALID -set_location_assignment PIN_G31 -to usb_suspend -comment USBD_SUSPEND -set_location_assignment PIN_K27 -to usb_termsel -comment USBD_TERMSEL -set_location_assignment PIN_J32 -to usb_txready -comment USBD_TXREADY -set_location_assignment PIN_K31 -to usb_txvalid -comment USBD_TXVALID -set_location_assignment PIN_F31 -to usb_validh -comment USBD_VALIDH -set_location_assignment PIN_H31 -to usb_xcvrsel -comment USBD_XCRSEL -set_location_assignment PIN_E31 -to usb_dbus16 -comment USBD_DBUS16_8 -set_location_assignment PIN_H28 -to usb_unidir -comment USBD_UNIBIDI -set_location_assignment PIN_E25 -to adc_dout -comment ADC_DOUT -set_location_assignment PIN_AE25 -to adc_ain -comment ADC_AIN -set_location_assignment PIN_AD9 -to dac_out -comment DAC_OUT -set_location_assignment PIN_AH3 -to ereset -comment "ETH_RESET#" -set_location_assignment PIN_B26 -to usb_vbus -comment USBD_VBUS -set_location_assignment PIN_A27 -to usb_reset -comment USBD_RESET -set_location_assignment PIN_AA29 -to hpidata[0] -comment USB_GPIO0 -set_location_assignment PIN_W26 -to hpidata[1] -comment USB_GPIO1 -set_location_assignment PIN_AA30 -to hpidata[2] -comment USB_GPIO2 -set_location_assignment PIN_Y27 -to hpidata[3] -comment USB_GPIO3 -set_location_assignment PIN_AB28 -to hpidata[4] -comment USB_GPIO4 -set_location_assignment PIN_Y26 -to hpidata[5] -comment USB_GPIO5 -set_location_assignment PIN_AB29 -to hpidata[6] -comment USB_GPIO6 -set_location_assignment PIN_AA26 -to hpidata[7] -comment USB_GPIO7 -set_location_assignment PIN_AB30 -to hpidata[8] -comment USB_GPIO8 -set_location_assignment PIN_AB27 -to hpidata[9] -comment USB_GPIO9 -set_location_assignment PIN_AC26 -to hpidata[10] -comment USB_GPIO10 -set_location_assignment PIN_AB26 -to hpidata[11] -comment USB_GPIO11 -set_location_assignment PIN_AC27 -to hpidata[12] -comment USB_GPIO12 -set_location_assignment PIN_AC25 -to hpidata[13] -comment USB_GPIO13 -set_location_assignment PIN_AD27 -to hpidata[14] -comment USB_GPIO14 -set_location_assignment PIN_AE28 -to hpidata[15] -comment USB_GPIO15 -set_location_assignment PIN_AG30 -to hpiaddr[0] -comment USB_GPIO19 -set_location_assignment PIN_AF30 -to hpiaddr[1] -comment USB_GPIO20 -set_location_assignment PIN_AD26 -to hpicsn -comment USB_GPIO21 -set_location_assignment PIN_AF29 -to hpiwrn -comment USB_GPIO22 -set_location_assignment PIN_AD8 -to hpiint -comment USB_GPIO24 -set_location_assignment PIN_AE27 -to hpirdn -comment USB_GPIO23 -set_location_assignment PIN_V24 -to exp_datai[0] -comment CB4_DATA51 -set_location_assignment PIN_W27 -to exp_datai[1] -comment CB4_DATA53 -set_location_assignment PIN_AG18 -to exp_datai[2] -comment CB4_DATA55 -set_location_assignment PIN_AD18 -to exp_datai[3] -comment CB4_DATA57 -set_location_assignment PIN_AG15 -to exp_datai[4] -comment CB4_DATA59 -set_location_assignment PIN_AH14 -to exp_datai[5] -comment CB4_DATA61 -set_location_assignment PIN_AG14 -to exp_datai[6] -comment CB4_DATA63 -set_location_assignment PIN_AH29 -to exp_datai[7] -comment CB4_DATA65 -set_location_assignment PIN_AH30 -to exp_datai[8] -comment CB4_DATA67 -set_location_assignment PIN_AH13 -to exp_datai[9] -comment CB4_DATA69 -set_location_assignment PIN_AH32 -to exp_datai[10] -comment CB4_DATA72 -set_location_assignment PIN_AB15 -to exp_datai[11] -comment CB4_DATA73 -set_location_assignment PIN_AC15 -to exp_datai[12] -comment CB4_DATA75 -set_location_assignment PIN_AD19 -to exp_datai[13] -comment CB4_DATA78 -set_location_assignment PIN_AC14 -to exp_datai[14] -comment CB4_DATA79 -set_location_assignment PIN_AD13 -to exp_datai[15] -comment CB4_DATA81 -set_location_assignment PIN_AC13 -to exp_datai[16] -comment CB4_DATA83 -set_location_assignment PIN_AE14 -to exp_datai[17] -comment CB4_DATA85 -set_location_assignment PIN_AL16 -to exp_datai[18] -comment CB4_DATA87 -set_location_assignment PIN_AL14 -to exp_datai[19] -comment CB4_DATA89 -set_location_assignment PIN_AE19 -to exp_datao[0] -comment CB4_DATA52 -set_location_assignment PIN_AC9 -to exp_datao[1] -comment CB4_DATA54 -set_location_assignment PIN_AD10 -to exp_datao[2] -comment CB4_DATA56 -set_location_assignment PIN_AC11 -to exp_datao[3] -comment CB4_DATA58 -set_location_assignment PIN_AD11 -to exp_datao[4] -comment CB4_DATA60 -set_location_assignment PIN_AE12 -to exp_datao[5] -comment CB4_DATA62 -set_location_assignment PIN_AF13 -to exp_datao[6] -comment CB4_DATA64 -set_location_assignment PIN_AF23 -to exp_datao[7] -comment CB4_DATA66 -set_location_assignment PIN_AE23 -to exp_datao[8] -comment CB4_DATA68 -set_location_assignment PIN_AG32 -to exp_datao[9] -comment CB4_DATA70 -set_location_assignment PIN_AC16 -to exp_datao[10] -comment CB4_DATA71 -set_location_assignment PIN_AJ32 -to exp_datao[11] -comment CB4_DATA74 -set_location_assignment PIN_AJ31 -to exp_datao[12] -comment CB4_DATA76 -set_location_assignment PIN_AB14 -to exp_datao[13] -comment CB4_DATA77 -set_location_assignment PIN_AB18 -to exp_datao[14] -comment CB4_DATA80 -set_location_assignment PIN_AB17 -to exp_datao[15] -comment CB4_DATA82 -set_location_assignment PIN_AC17 -to exp_datao[16] -comment CB4_DATA84 -set_location_assignment PIN_AJ14 -to exp_datao[17] -comment CB4_DATA86 -set_location_assignment PIN_AM14 -to exp_datao[18] -comment CB4_DATA88 -set_location_assignment PIN_AL12 -to exp_datao[19] -comment CB4_DATA90 -set_location_assignment PIN_AH24 -to dbg_equal -comment CB4_DATA47CB2_DQ14 -set_location_assignment PIN_E18 -to sdclk[1] -comment t -set_location_assignment PIN_D18 -to sdclk[0] -comment t -set_location_assignment PIN_AE5 -to sdcke[1] -comment t -set_location_assignment PIN_AE6 -to sdcke[0] -comment t -set_location_assignment PIN_AB5 -to sdaddr[12] -comment t -set_location_assignment PIN_AC12 -to sdaddr[11] -comment t -set_location_assignment PIN_AE4 -to sdaddr[10] -comment t -set_location_assignment PIN_AB13 -to sdaddr[9] -comment t -set_location_assignment PIN_AH4 -to sdaddr[8] -comment t -set_location_assignment PIN_AE13 -to sdaddr[7] -comment t -set_location_assignment PIN_AC18 -to sdaddr[6] -comment t -set_location_assignment PIN_AE26 -to sdaddr[5] -comment t -set_location_assignment PIN_AF19 -to sdaddr[4] -comment t -set_location_assignment PIN_AH31 -to sdaddr[3] -comment t -set_location_assignment PIN_AG12 -to sdaddr[2] -comment t -set_location_assignment PIN_AG31 -to sdaddr[1] -comment t -set_location_assignment PIN_AG13 -to sdaddr[0] -comment t -set_location_assignment PIN_C12 -to sddq[63] -comment t -set_location_assignment PIN_D14 -to sddq[62] -comment t -set_location_assignment PIN_F16 -to sddq[61] -comment t -set_location_assignment PIN_F15 -to sddq[60] -comment t -set_location_assignment PIN_C22 -to sddq[59] -comment t -set_location_assignment PIN_E22 -to sddq[58] -comment t -set_location_assignment PIN_F23 -to sddq[57] -comment t -set_location_assignment PIN_D22 -to sddq[56] -comment t -set_location_assignment PIN_C25 -to sddq[55] -comment t -set_location_assignment PIN_C26 -to sddq[54] -comment t -set_location_assignment PIN_D26 -to sddq[53] -comment t -set_location_assignment PIN_D28 -to sddq[52] -comment t -set_location_assignment PIN_C29 -to sddq[51] -comment t -set_location_assignment PIN_G30 -to sddq[50] -comment t -set_location_assignment PIN_H30 -to sddq[49] -comment t -set_location_assignment PIN_H29 -to sddq[48] -comment t -set_location_assignment PIN_K30 -to sddq[47] -comment t -set_location_assignment PIN_AH1 -to sddq[46] -comment t -set_location_assignment PIN_AF2 -to sddq[45] -comment t -set_location_assignment PIN_AE1 -to sddq[44] -comment t -set_location_assignment PIN_U23 -to sddq[43] -comment t -set_location_assignment PIN_U10 -to sddq[42] -comment t -set_location_assignment PIN_AM4 -to sddq[41] -comment t -set_location_assignment PIN_AK4 -to sddq[40] -comment t -set_location_assignment PIN_AL4 -to sddq[39] -comment t -set_location_assignment PIN_V10 -to sddq[38] -comment t -set_location_assignment PIN_AL5 -to sddq[37] -comment t -set_location_assignment PIN_AM5 -to sddq[36] -comment t -set_location_assignment PIN_AL6 -to sddq[35] -comment t -set_location_assignment PIN_AM6 -to sddq[34] -comment t -set_location_assignment PIN_AL7 -to sddq[33] -comment t -set_location_assignment PIN_AM7 -to sddq[32] -comment t -set_location_assignment PIN_AL8 -to sddq[31] -comment t -set_location_assignment PIN_E27 -to sddq[30] -comment t -set_location_assignment PIN_L19 -to sddq[29] -comment t -set_location_assignment PIN_G22 -to sddq[28] -comment t -set_location_assignment PIN_K20 -to sddq[27] -comment t -set_location_assignment PIN_AB10 -to sddq[26] -comment t -set_location_assignment PIN_AD14 -to sddq[25] -comment t -set_location_assignment PIN_AB16 -to sddq[24] -comment t -set_location_assignment PIN_W25 -to sddq[23] -comment t -set_location_assignment PIN_V23 -to sddq[22] -comment t -set_location_assignment PIN_U22 -to sddq[21] -comment t -set_location_assignment PIN_G11 -to sddq[20] -comment t -set_location_assignment PIN_D5 -to sddq[19] -comment t -set_location_assignment PIN_J19 -to sddq[18] -comment t -set_location_assignment PIN_F17 -to sddq[17] -comment t -set_location_assignment PIN_E14 -to sddq[16] -comment t -set_location_assignment PIN_A14 -to sddq[15] -comment t -set_location_assignment PIN_E19 -to sddq[14] -comment t -set_location_assignment PIN_B16 -to sddq[13] -comment t -set_location_assignment PIN_B17 -to sddq[12] -comment t -set_location_assignment PIN_B21 -to sddq[11] -comment t -set_location_assignment PIN_A22 -to sddq[10] -comment t -set_location_assignment PIN_B22 -to sddq[9] -comment t -set_location_assignment PIN_D27 -to sddq[8] -comment t -set_location_assignment PIN_A24 -to sddq[7] -comment t -set_location_assignment PIN_C24 -to sddq[6] -comment t -set_location_assignment PIN_T23 -to sddq[5] -comment t -set_location_assignment PIN_F22 -to sddq[4] -comment t -set_location_assignment PIN_H21 -to sddq[3] -comment t -set_location_assignment PIN_L15 -to sddq[2] -comment t -set_location_assignment PIN_AF4 -to sddq[1] -comment t -set_location_assignment PIN_AB12 -to sddq[0] -comment t -set_location_assignment PIN_AB32 -to sddqm[7] -comment t -set_location_assignment PIN_AB31 -to sddqm[6] -comment t -set_location_assignment PIN_V31 -to sddqm[5] -comment t -set_location_assignment PIN_W32 -to sddqm[4] -comment t -set_location_assignment PIN_AC22 -to sddqm[3] -comment t -set_location_assignment PIN_C8 -to sddqm[2] -comment t -set_location_assignment PIN_E9 -to sddqm[1] -comment t -set_location_assignment PIN_F9 -to sddqm[0] -comment t -set_location_assignment PIN_AD4 -to sdwen -comment t -set_location_assignment PIN_W10 -to sdcasn -comment t -set_location_assignment PIN_W11 -to sdrasn -comment t -set_location_assignment PIN_AD30 -to sdcsn[1] -comment t -set_location_assignment PIN_AD12 -to sdcsn[0] -comment t -set_location_assignment PIN_W22 -to sdba[1] -comment t -set_location_assignment PIN_AB11 -to sdba[0] -comment t - -# Timing Assignments -# ================== -set_global_assignment -name IGNORE_CLOCK_SETTINGS ON -set_global_assignment -name INCLUDE_EXTERNAL_PIN_DELAYS_IN_FMAX_CALCULATIONS OFF -set_global_assignment -name FMAX_REQUIREMENT "100 MHz" - -# Analysis & Synthesis Assignments -# ================================ -set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA -set_global_assignment -name DEVICE_FILTER_PIN_COUNT 1020 -set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 3 -set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "Synplify Pro" -set_global_assignment -name FAMILY "Stratix II" -set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE AREA -set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE SPEED -set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE SPEED -set_global_assignment -name TOP_LEVEL_ENTITY leon3hpe -set_global_assignment -name VHDL_SHOW_LMF_MAPPING_MESSAGES OFF -set_global_assignment -name AUTO_ENABLE_SMART_COMPILE ON -set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF - -# Fitter Assignments -# ================== -set_global_assignment -name DEVICE EP2S60F1020C3 -set_global_assignment -name STRATIXII_CONFIGURATION_SCHEME "FAST PASSIVE PARALLEL" -set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "PASSIVE SERIAL" -set_global_assignment -name ENABLE_DEVICE_WIDE_RESET OFF -set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED WITH WEAK PULL-UP" -set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "USE AS REGULAR IO" -#set_global_assignment -name RESERVE_NCSO_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING OFF -set_global_assignment -name IO_PLACEMENT_OPTIMIZATION OFF -set_global_assignment -name INC_PLC_MODE OFF -set_global_assignment -name ROUTING_BACK_ANNOTATION_MODE OFF -set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" -set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 2 - -# Timing Analysis Assignments -# =========================== -set_global_assignment -name MAX_SCC_SIZE 50 - -# EDA Netlist Writer Assignments -# ============================== -set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim (VHDL output from Quartus II)" - -# Assembler Assignments -# ===================== -set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION ON -set_global_assignment -name COMPRESSION_MODE ON -set_global_assignment -name APEX20K_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name EXCALIBUR_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name MERCURY_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE EPC1 -set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name STRATIX_CONFIGURATION_DEVICE EPC8 -set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE ON -set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE OFF -set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE ON -set_global_assignment -name GENERATE_TTF_FILE ON - -# Simulator Assignments -# ===================== -set_global_assignment -name START_TIME "0 ns" -set_global_assignment -name GLITCH_INTERVAL "1 ns" - -# Design Assistant Assignments -# ============================ -set_global_assignment -name DRC_REPORT_TOP_FANOUT OFF -set_global_assignment -name DRC_REPORT_FANOUT_EXCEEDING OFF -set_global_assignment -name ASSG_CAT OFF -set_global_assignment -name ASSG_RULE_MISSING_FMAX OFF -set_global_assignment -name ASSG_RULE_MISSING_TIMING OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_ASYN_RAM OFF -set_global_assignment -name CLK_CAT OFF -set_global_assignment -name CLK_RULE_COMB_CLOCK OFF -set_global_assignment -name CLK_RULE_INV_CLOCK OFF -set_global_assignment -name CLK_RULE_GATING_SCHEME OFF -set_global_assignment -name CLK_RULE_INPINS_CLKNET OFF -set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES OFF -set_global_assignment -name CLK_RULE_MIX_EDGES OFF -set_global_assignment -name RESET_CAT OFF -set_global_assignment -name RESET_RULE_INPINS_RESETNET OFF -set_global_assignment -name RESET_RULE_UNSYNCH_EXRESET OFF -set_global_assignment -name RESET_RULE_IMSYNCH_EXRESET OFF -set_global_assignment -name RESET_RULE_COMB_ASYNCH_RESET OFF -set_global_assignment -name RESET_RULE_UNSYNCH_ASYNCH_DOMAIN OFF -set_global_assignment -name RESET_RULE_IMSYNCH_ASYNCH_DOMAIN OFF -set_global_assignment -name TIMING_CAT OFF -set_global_assignment -name TIMING_RULE_SHIFT_REG OFF -set_global_assignment -name TIMING_RULE_COIN_CLKEDGE OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_COMB_DRIVES_RAM_WE OFF -set_global_assignment -name NONSYNCHSTRUCT_CAT OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_COMBLOOP OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_REG_LOOP OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_DELAY_CHAIN OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_RIPPLE_CLK OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_ILLEGAL_PULSE_GEN OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_MULTI_VIBRATOR OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_SRLATCH OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_LATCH_UNIDENTIFIED OFF -set_global_assignment -name ACLK_CAT OFF -set_global_assignment -name ACLK_RULE_NO_SZER_ACLK_DOMAIN OFF -set_global_assignment -name ACLK_RULE_SZER_BTW_ACLK_DOMAIN OFF -set_global_assignment -name ACLK_RULE_IMSZER_ADOMAIN OFF -set_global_assignment -name HCPY_VREF_PINS OFF - -# Programmer Assignments -# ====================== -set_global_assignment -name GENERATE_JAM_FILE ON -set_global_assignment -name GENERATE_JBC_FILE ON - -# SignalTap II Assignments -# ======================== -set_global_assignment -name ENABLE_SIGNALTAP OFF - -# LogicLock Region Assignments -# ============================ -set_global_assignment -name LOGICLOCK_INCREMENTAL_COMPILE_ASSIGNMENT OFF - -# --------------------------------------------- -# start EDA_TOOL_SETTINGS(eda_design_synthesis) - - # Analysis & Synthesis Assignments - # ================================ -set_global_assignment -name EDA_INPUT_DATA_FORMAT "VERILOG HDL" -section_id eda_design_synthesis -set_global_assignment -name EDA_LMF_FILE synplcty.lmf -section_id eda_design_synthesis - - # EDA Netlist Writer Assignments - # ============================== -set_global_assignment -name EDA_OUTPUT_DATA_FORMAT EDIF -section_id eda_design_synthesis - -# end EDA_TOOL_SETTINGS(eda_design_synthesis) -# ------------------------------------------- - -# --------------------------------------- -# start EDA_TOOL_SETTINGS(eda_simulation) - - # EDA Netlist Writer Assignments - # ============================== -set_global_assignment -name EDA_INCLUDE_VHDL_CONFIGURATION_DECLARATION ON -section_id eda_simulation -set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation - -# end EDA_TOOL_SETTINGS(eda_simulation) -# ------------------------------------- - -# ---------------------- -# start ENTITY(leon3hpe) - - # Timing Assignments - # ================== -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[0] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[1] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[2] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[3] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[4] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[5] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[6] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[7] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[8] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[9] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[10] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[11] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[12] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[13] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[14] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[15] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[16] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[17] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[18] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[19] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[20] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[21] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[22] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[23] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[24] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[25] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[26] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[27] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[28] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[29] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[30] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[31] - - # Fitter Assignments - # ================== -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdclk[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[4] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[5] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[6] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[7] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[8] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[9] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[10] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[11] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[12] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[13] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[14] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[15] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[16] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[17] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[18] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[19] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[20] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[21] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[22] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[23] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[24] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[25] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[26] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[27] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to bufdir -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to bufoen -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[4] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[5] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[6] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[7] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[8] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[9] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[10] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[11] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[12] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[13] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[14] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[15] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[16] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[17] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[18] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[19] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[20] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[21] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[22] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[23] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[24] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[25] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[26] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[27] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[28] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[29] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[30] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[31] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erx_clk -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etx_clk -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdba[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdba[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdcasn -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdclk[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdcsn[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdcsn[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdrasn -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdwen -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to writen - -# end ENTITY(leon3hpe) -# -------------------- - -set_global_assignment -name LAST_QUARTUS_VERSION 7.2 -set_global_assignment -name ENABLE_ADVANCED_IO_TIMING OFF -set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to resetn - -set_global_assignment -name SMART_RECOMPILE ON -set_global_assignment -name NUM_PARALLEL_PROCESSORS 2 -set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 -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 OPTIMIZE_HOLD_TIMING "ALL PATHS" diff --git a/boards/ge-hpe-midi-ep2s90/Makefile.inc b/boards/ge-hpe-midi-ep2s90/Makefile.inc deleted file mode 100644 index 906b0dee..00000000 --- a/boards/ge-hpe-midi-ep2s90/Makefile.inc +++ /dev/null @@ -1,27 +0,0 @@ -# to be included in design makefile -#CONFDEVICE=EPM1270 - -TECHNOLOGY= STRATIXII -PART= EP2S90 -PACKAGE= FC1020 -SPEED=-3 -SYNFREQ=60 -CONFDEVICE=EPCS64 - -ALTERA_PINGEN=altera_pingen.awk -BOARD_DIR=$(GRLIB)/boards/$(BOARD) - -$(BOARD_DIR)/leon_pinning.csv: $(BOARD_DIR)/LEON-MIDI-Vers1_1-AS2-Vers1_1-Pinning.csv - grep -v "Pin;Port;NetName" $< > $@ - -$(BOARD_DIR)/leon_pinning.txt: $(BOARD_DIR)/leon_pinning.csv - $(ALTERA_PINGEN) FS=";" $< > $@ - -board-pinning-clean: - -rm -f $(BOARD_DIR)/leon_pinning.csv \ - $(BOARD_DIR)/leon_pinning.txt - -board-pinning-check: $(BOARD_DIR)/leon_pinning.txt - @echo - @echo "Searching for pin double assignments..." - @for i in `sort --key=1 --field-separator=";" $< | cut --fields="1-1" --delimiter=";" | uniq --repeated`; do grep $$i $<; done diff --git a/boards/ge-hpe-midi-ep2s90/default.sdc b/boards/ge-hpe-midi-ep2s90/default.sdc deleted file mode 100644 index c1ca5e07..00000000 --- a/boards/ge-hpe-midi-ep2s90/default.sdc +++ /dev/null @@ -1,52 +0,0 @@ -# Synplicity, Inc. constraint file -# /home/jiri/ibm/vhdl/grlib/boards/gr-pci-xc2v/default.sdc -# Written on Fri Jul 30 18:56:40 2004 -# by Synplify Pro, 7.6 Scope Editor - -# -# Clocks -# -define_clock -name -disable {clk} -freq 100.000 -clockgroup default_clkgroup -define_clock -name -disable {pci_clk} -freq 40.000 -clockgroup pci_clkgroup - -# -# Clock to Clock -# - -# -# Inputs/Outputs -# -define_output_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {clk:r} -define_input_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {clk:r} -define_output_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {pci_clk:r} -define_input_delay -disable -default 18.00 -improve 0.00 -route 0.00 -ref {pci_clk:r} -define_input_delay -disable {pci_rst} 0.00 -improve 0.00 -route 0.00 -ref {pci_clk:r} - -# -# Registers -# - -# -# Multicycle Path -# - -# -# False Path -# - -# -# Delay Path -# - -# -# Attributes -# -define_global_attribute syn_useioff {1} - -# -# Compile Points -# - -# -# Other Constraints -# diff --git a/boards/ge-hpe-midi-ep2s90/leon3hpe.qsf b/boards/ge-hpe-midi-ep2s90/leon3hpe.qsf deleted file mode 100644 index 64720950..00000000 --- a/boards/ge-hpe-midi-ep2s90/leon3hpe.qsf +++ /dev/null @@ -1,687 +0,0 @@ -# Pin & Location Assignments -# ========================== -set_location_assignment PIN_AK11 -to address[0] -comment CB3_DATA6CB2_A0 -set_location_assignment PIN_AH8 -to address[1] -comment CB3_DATA0CB2_A1 -set_location_assignment PIN_J15 -to address[10] -comment MEMORY_A8 -set_location_assignment PIN_K13 -to address[11] -comment MEMORY_A9 -set_location_assignment PIN_D10 -to address[12] -comment MEMORY_A10 -set_location_assignment PIN_K15 -to address[13] -comment MEMORY_A11 -set_location_assignment PIN_H14 -to address[14] -comment MEMORY_A12 -set_location_assignment PIN_J12 -to address[15] -comment MEMORY_A13 -set_location_assignment PIN_J14 -to address[16] -comment MEMORY_A14 -set_location_assignment PIN_K12 -to address[17] -comment MEMORY_A15 -set_location_assignment PIN_E8 -to address[18] -comment MEMORY_A16 -set_location_assignment PIN_G13 -to address[19] -comment MEMORY_A17 -set_location_assignment PIN_E13 -to address[2] -comment MEMORY_A0 -set_location_assignment PIN_H13 -to address[20] -comment MEMORY_A18 -set_location_assignment PIN_L12 -to address[21] -comment MEMORY_A19 -set_location_assignment PIN_E7 -to address[22] -comment MEMORY_A20 -set_location_assignment PIN_G12 -to address[23] -comment MEMORY_A21 -set_location_assignment PIN_H12 -to address[24] -comment MEMORY_A22 -set_location_assignment PIN_AJ7 -to address[25] -comment CB3_DATA1CB2_A10 -set_location_assignment PIN_P2 -to address[26] -comment CB4_DATA26CB1_RX_01_N -set_location_assignment PIN_P1 -to address[27] -comment CB4_DATA27CB1_RX_01_P -set_location_assignment PIN_L17 -to address[3] -comment MEMORY_A1 -set_location_assignment PIN_K17 -to address[4] -comment MEMORY_A2 -set_location_assignment PIN_L13 -to address[5] -comment MEMORY_A3 -set_location_assignment PIN_L16 -to address[6] -comment MEMORY_A4 -set_location_assignment PIN_J13 -to address[7] -comment MEMORY_A5 -set_location_assignment PIN_D11 -to address[8] -comment MEMORY_A6 -set_location_assignment PIN_K16 -to address[9] -comment MEMORY_A7 -set_location_assignment PIN_Y5 -to can_rxd -comment CAN_RXD -set_location_assignment PIN_Y6 -to can_stb -comment CAN_STB -set_location_assignment PIN_AA8 -to can_txd -comment CAN_TXD -set_location_assignment PIN_T3 -to clk -comment DUT1_CLK100M -#set_location_assignment PIN_A17 -to clk -comment DUT1_CLK14P -set_location_assignment PIN_A12 -to data[0] -comment MEMORY_DQ0 -set_location_assignment PIN_B13 -to data[1] -comment MEMORY_DQ1 -set_location_assignment PIN_B9 -to data[10] -comment MEMORY_DQ10 -set_location_assignment PIN_C10 -to data[11] -comment MEMORY_DQ11 -set_location_assignment PIN_A9 -to data[12] -comment MEMORY_DQ12 -set_location_assignment PIN_F10 -to data[13] -comment MEMORY_DQ13 -set_location_assignment PIN_B8 -to data[14] -comment MEMORY_DQ14 -set_location_assignment PIN_C9 -to data[15] -comment MEMORY_DQ15 -set_location_assignment PIN_A8 -to data[16] -comment MEMORY_DQ16 -set_location_assignment PIN_D8 -to data[17] -comment MEMORY_DQ17 -set_location_assignment PIN_B7 -to data[18] -comment MEMORY_DQ18 -set_location_assignment PIN_C7 -to data[19] -comment MEMORY_DQ19 -set_location_assignment PIN_B11 -to data[2] -comment MEMORY_DQ2 -set_location_assignment PIN_A7 -to data[20] -comment MEMORY_DQ20 -set_location_assignment PIN_D7 -to data[21] -comment MEMORY_DQ21 -set_location_assignment PIN_B6 -to data[22] -comment MEMORY_DQ22 -set_location_assignment PIN_C6 -to data[23] -comment MEMORY_DQ23 -set_location_assignment PIN_A6 -to data[24] -comment MEMORY_DQ24 -set_location_assignment PIN_D6 -to data[25] -comment MEMORY_DQ25 -set_location_assignment PIN_B5 -to data[26] -comment MEMORY_DQ26 -set_location_assignment PIN_E6 -to data[27] -comment MEMORY_DQ27 -set_location_assignment PIN_A5 -to data[28] -comment MEMORY_DQ28 -set_location_assignment PIN_C5 -to data[29] -comment MEMORY_DQ29 -set_location_assignment PIN_D13 -to data[3] -comment MEMORY_DQ3 -set_location_assignment PIN_C4 -to data[30] -comment MEMORY_DQ30 -set_location_assignment PIN_E5 -to data[31] -comment MEMORY_DQ31 -set_location_assignment PIN_A11 -to data[4] -comment MEMORY_DQ4 -set_location_assignment PIN_F12 -to data[5] -comment MEMORY_DQ5 -set_location_assignment PIN_B10 -to data[6] -comment MEMORY_DQ6 -set_location_assignment PIN_C11 -to data[7] -comment MEMORY_DQ7 -set_location_assignment PIN_A10 -to data[8] -comment MEMORY_DQ8 -set_location_assignment PIN_E11 -to data[9] -comment MEMORY_DQ9 -set_location_assignment PIN_M2 -to dsuactn -comment CB4_DATA30CB1_RX_02_N -set_location_assignment PIN_E26 -to dsubre -comment TST_STEP -set_location_assignment PIN_AB3 -to dsurx -comment RS0_RXD_LVTTL -set_location_assignment PIN_AB9 -to dsutx -comment RS0_TXD_LVTTL -set_location_assignment PIN_W31 -to dsw[0] -comment DSW0 -set_location_assignment PIN_Y31 -to dsw[1] -comment DSW1 -set_location_assignment PIN_AA32 -to dsw[2] -comment DSW2 -set_location_assignment PIN_AA31 -to dsw[3] -comment DSW3 -set_location_assignment PIN_AC32 -to dsw[4] -comment DSW4 -set_location_assignment PIN_AC31 -to dsw[5] -comment DSW5 -set_location_assignment PIN_AD32 -to dsw[6] -comment DSW6 -set_location_assignment PIN_AD31 -to dsw[7] -comment DSW7 -set_location_assignment PIN_AH2 -to emdc -comment ETH_MDC -set_location_assignment PIN_AJ1 -to emdio -comment ETH_MDIO -set_location_assignment PIN_M1 -to errorn -comment CB4_DATA31CB1_RX_02_P -set_location_assignment PIN_E16 -to erx_clk -comment ETH_RXCLK -set_location_assignment PIN_U11 -to erx_col -comment ETH_COL -set_location_assignment PIN_AG2 -to erx_crs -comment ETH_CRS -set_location_assignment PIN_AG1 -to erx_dv -comment ETH_RXDV -set_location_assignment PIN_AB1 -to erx_er -comment ETH_RXER -set_location_assignment PIN_AE2 -to erxd[0] -comment ETH_RXD0 -set_location_assignment PIN_AD2 -to erxd[1] -comment ETH_RXD1 -set_location_assignment PIN_AD1 -to erxd[2] -comment ETH_RXD2 -set_location_assignment PIN_AC2 -to erxd[3] -comment ETH_RXD3 -set_location_assignment PIN_A16 -to etx_clk -comment ETH_TXCLK -set_location_assignment PIN_AF1 -to etx_en -comment ETH_TXEN -set_location_assignment PIN_Y3 -to etx_er -comment ETH_TXER -set_location_assignment PIN_AC1 -to etxd[0] -comment ETH_TXD0 -set_location_assignment PIN_AB2 -to etxd[1] -comment ETH_TXD1 -set_location_assignment PIN_AA2 -to etxd[2] -comment ETH_TXD2 -set_location_assignment PIN_AA1 -to etxd[3] -comment ETH_TXD3 -set_location_assignment PIN_L2 -to iosn -comment CB4_DATA10CB1_RX_03_N -set_location_assignment PIN_A23 -to lcd_enable -comment LCD_ENABLE -set_location_assignment PIN_B23 -to lcd_regsel -comment LCD_REGSEL -set_location_assignment PIN_D25 -to lcd_rw -comment LCD_RW -set_location_assignment PIN_B14 -to oen -comment "MEMORY_OE#" -set_location_assignment PIN_B15 -to ps2_clk[0] -comment PS2_KBCLK -set_location_assignment PIN_C16 -to ps2_clk[1] -comment PS2_MCLK -set_location_assignment PIN_C15 -to ps2_data[0] -comment PS2_KBDAT -set_location_assignment PIN_D16 -to ps2_data[1] -comment PS2_MDAT -set_location_assignment PIN_L1 -to ramoen[0] -comment CB4_DATA32CB1_RX_03_P -set_location_assignment PIN_K2 -to ramoen[1] -comment CB4_DATA33CB1_RX_04_N -set_location_assignment PIN_K1 -to ramoen[2] -comment CB4_DATA34CB1_RX_04_P -set_location_assignment PIN_J2 -to ramoen[3] -comment CB4_DATA35CB1_RX_05_N -set_location_assignment PIN_J1 -to ramoen[4] -comment CB4_DATA36CB1_RX_05_P -set_location_assignment PIN_B20 -to ramsn[0] -comment "SRAM_CE#" -set_location_assignment PIN_H2 -to ramsn[1] -comment CB4_DATA92CB1_RX_06_N -set_location_assignment PIN_H1 -to ramsn[2] -comment CB4_DATA93CB1_RX_06_P -set_location_assignment PIN_G2 -to ramsn[3] -comment CB4_DATA94CB1_RX_07_N -set_location_assignment PIN_G1 -to ramsn[4] -comment CB4_DATA95CB1_RX_07_P -set_location_assignment PIN_C13 -to rben[0] -comment "SRAM_BE0#" -set_location_assignment PIN_F14 -to rben[1] -comment "SRAM_BE1#" -set_location_assignment PIN_B12 -to rben[2] -comment "SRAM_BE2#" -set_location_assignment PIN_F13 -to rben[3] -comment "SRAM_BE3#" -set_location_assignment PIN_K4 -to read -comment CB4_DATA96CB1_RX_06_N -set_location_assignment PIN_U28 -to resetn -comment "USER_RESET#" -set_location_assignment PIN_V30 -to resoutn -comment "HPE_RESOUT#" -set_location_assignment PIN_C21 -to romsn[0] -comment "FLASH_CE#" -set_location_assignment PIN_K3 -to romsn[1] -comment CB4_DATA6CB1_RX_08_P -set_location_assignment PIN_J4 -to rwen[0] -comment CB4_DATA7CB1_RX_09_N -set_location_assignment PIN_J3 -to rwen[1] -comment CB4_DATA8CB1_RX_09_P -set_location_assignment PIN_G4 -to rwen[2] -comment CB4_DATA40CB1_RX_10_N -set_location_assignment PIN_G3 -to rwen[3] -comment CB4_DATA41CB1_RX_10_P -set_location_assignment PIN_AA3 -to rxd1 -comment RS1_RXD_LVTTL -set_location_assignment PIN_D32 -to sevensegment[0] -comment "HUMI_A#" -set_location_assignment PIN_F30 -to sevensegment[1] -comment "HUMI_B#" -set_location_assignment PIN_B29 -to sevensegment[2] -comment "HUMI_C#" -set_location_assignment PIN_D31 -to sevensegment[3] -comment "HUMI_D#" -set_location_assignment PIN_A29 -to sevensegment[4] -comment "HUMI_E#" -set_location_assignment PIN_F29 -to sevensegment[5] -comment "HUMI_F#" -set_location_assignment PIN_A28 -to sevensegment[6] -comment "HUMI_G#" -set_location_assignment PIN_B28 -to sevensegment[7] -comment "HUMI_DP#" -set_location_assignment PIN_B27 -to sevensegment[8] -comment "HUMI_SEG0#" -set_location_assignment PIN_E30 -to sevensegment[9] -comment "HUMI_SEG1#" -set_location_assignment PIN_B24 -to tst_col[0] -comment TST_COL0 -set_location_assignment PIN_E28 -to tst_col[1] -comment TST_COL1 -set_location_assignment PIN_A26 -to tst_col[2] -comment TST_COL2 -set_location_assignment PIN_AE32 -to tst_row[0] -comment TST_ROW0 -set_location_assignment PIN_AE31 -to tst_row[1] -comment TST_ROW1 -set_location_assignment PIN_AF32 -to tst_row[2] -comment TST_ROW2 -set_location_assignment PIN_AF31 -to tst_row[3] -comment TST_ROW3 -set_location_assignment PIN_W9 -to txd1 -comment RS1_TXD_LVTTL -set_location_assignment PIN_D19 -to writen -comment "MEMORY_WE#" -set_location_assignment PIN_Y11 -to led_enable -comment "HUMI_LED#" -set_location_assignment PIN_T32 -to ac97_bit_clk -comment AC97_BITCLK -set_location_assignment PIN_AD24 -to ac97_sync -comment AC97_SYNC -set_location_assignment PIN_AD25 -to ac97_sdata_out -comment AC97_SDATA_OUT -set_location_assignment PIN_AC8 -to ac97_sdata_in -comment AC97_SDATA_IN -set_location_assignment PIN_AJ18 -to ac97_ext_clk -comment AC97_EXT_CLK -set_location_assignment PIN_AC7 -to ac97_resetn -comment "AC97_RESET#" -set_location_assignment PIN_AK8 -to ac97_dbg_bit_clk -comment CB3_DATA41CB2_A11 -set_location_assignment PIN_AK12 -to ac97_dbg_sync -comment CB3_DATA40CB2_A12 -set_location_assignment PIN_AJ6 -to ac97_dbg_sdata_out -comment CB3_DATA39CB2_A13 -set_location_assignment PIN_AG9 -to ac97_dbg_sdata_in -comment CB3_DATA38CB2_A2 -set_location_assignment PIN_AG11 -to ac97_dbg_ext_clk -comment CB3_DATA37CB2_A3 -set_location_assignment PIN_AF12 -to ac97_dbg_resetn -comment CB3_DATA36CB2_A4 -set_location_assignment PIN_AK7 -to ac97_dbg_int -comment CB3_DATA35CB2_A5 -set_location_assignment PIN_AG8 -to ac97_dbg_int2 -comment CB3_DATA34CB2_A6 -set_location_assignment PIN_M25 -to vga_clk -comment VGA_CLK -set_location_assignment PIN_N23 -to vga_syncn -comment "VGA_SYNC#" -set_location_assignment PIN_K26 -to vga_blankn -comment "VGA_BLANK#" -set_location_assignment PIN_L24 -to vga_vsync -comment VGA_VSYNC -set_location_assignment PIN_K29 -to vga_hsync -comment VGA_HSYNC -set_location_assignment PIN_R27 -to vga_rd[7] -comment VGA_RD7 -set_location_assignment PIN_R26 -to vga_rd[6] -comment VGA_RD6 -set_location_assignment PIN_R25 -to vga_rd[5] -comment VGA_RD5 -set_location_assignment PIN_P29 -to vga_rd[4] -comment VGA_RD4 -set_location_assignment PIN_T27 -to vga_rd[3] -comment VGA_RD3 -set_location_assignment PIN_R28 -to vga_rd[2] -comment VGA_RD2 -set_location_assignment PIN_T28 -to vga_rd[1] -comment VGA_RD1 -set_location_assignment PIN_R29 -to vga_rd[0] -comment VGA_RD0 -set_location_assignment PIN_P24 -to vga_gr[7] -comment VGA_GR7 -set_location_assignment PIN_M30 -to vga_gr[6] -comment VGA_GR6 -set_location_assignment PIN_P25 -to vga_gr[5] -comment VGA_GR5 -set_location_assignment PIN_P26 -to vga_gr[4] -comment VGA_GR4 -set_location_assignment PIN_R23 -to vga_gr[3] -comment VGA_GR3 -set_location_assignment PIN_P27 -to vga_gr[2] -comment VGA_GR2 -set_location_assignment PIN_R24 -to vga_gr[1] -comment VGA_GR1 -set_location_assignment PIN_P28 -to vga_gr[0] -comment VGA_GR0 -set_location_assignment PIN_M24 -to vga_bl[7] -comment VGA_BL7 -set_location_assignment PIN_M26 -to vga_bl[6] -comment VGA_BL6 -set_location_assignment PIN_N24 -to vga_bl[5] -comment VGA_BL5 -set_location_assignment PIN_N26 -to vga_bl[4] -comment VGA_BL4 -set_location_assignment PIN_R22 -to vga_bl[3] -comment VGA_BL3 -set_location_assignment PIN_L30 -to vga_bl[2] -comment VGA_BL2 -set_location_assignment PIN_N25 -to vga_bl[1] -comment VGA_BL1 -set_location_assignment PIN_N27 -to vga_bl[0] -comment VGA_BL0 -set_location_assignment PIN_G21 -to sdcard_cs -comment SDCARD_CS -set_location_assignment PIN_H20 -to sdcard_di -comment SDCARD_DI -set_location_assignment PIN_D21 -to sdcard_sclk -comment SDCARD_SCLK -set_location_assignment PIN_K19 -to sdcard_do -comment SDCARD_DO -set_location_assignment PIN_U32 -to usb_clkout -comment USBD_CLKOUT -set_location_assignment PIN_L31 -to usb_d[15] -comment USBD_D15 -set_location_assignment PIN_K32 -to usb_d[14] -comment USBD_D14 -set_location_assignment PIN_M27 -to usb_d[13] -comment USBD_D13 -set_location_assignment PIN_L32 -to usb_d[12] -comment USBD_D12 -set_location_assignment PIN_M32 -to usb_d[11] -comment USBD_D11 -set_location_assignment PIN_M31 -to usb_d[10] -comment USBD_D10 -set_location_assignment PIN_M29 -to usb_d[9] -comment USBD_D9 -set_location_assignment PIN_N31 -to usb_d[8] -comment USBD_D8 -set_location_assignment PIN_P32 -to usb_d[7] -comment USBD_D7 -set_location_assignment PIN_P31 -to usb_d[6] -comment USBD_D6 -set_location_assignment PIN_N28 -to usb_d[5] -comment USBD_D5 -set_location_assignment PIN_R30 -to usb_d[4] -comment USBD_D4 -set_location_assignment PIN_N29 -to usb_d[3] -comment USBD_D3 -set_location_assignment PIN_R31 -to usb_d[2] -comment USBD_D2 -set_location_assignment PIN_N30 -to usb_d[1] -comment USBD_D1 -set_location_assignment PIN_T31 -to usb_d[0] -comment USBD_D0 -set_location_assignment PIN_G32 -to usb_linestate[1] -comment USBD_LINESTATE0 -set_location_assignment PIN_F32 -to usb_linestate[0] -comment USBD_LINESTATE1 -set_location_assignment PIN_E32 -to usb_opmode[1] -comment USBD_OPMODE1 -set_location_assignment PIN_J27 -to usb_opmode[0] -comment USBD_OPMODE0 -set_location_assignment PIN_H32 -to usb_rxactive -comment USBD_RXACTIVE -set_location_assignment PIN_J31 -to usb_rxerror -comment USBD_RXERROR -set_location_assignment PIN_L29 -to usb_rxvalid -comment USBD_RXVALID -set_location_assignment PIN_G31 -to usb_suspend -comment USBD_SUSPEND -set_location_assignment PIN_K27 -to usb_termsel -comment USBD_TERMSEL -set_location_assignment PIN_J32 -to usb_txready -comment USBD_TXREADY -set_location_assignment PIN_K31 -to usb_txvalid -comment USBD_TXVALID -set_location_assignment PIN_F31 -to usb_validh -comment USBD_VALIDH -set_location_assignment PIN_H31 -to usb_xcvrsel -comment USBD_XCRSEL -set_location_assignment PIN_E31 -to usb_dbus16 -comment USBD_DBUS16_8 -set_location_assignment PIN_H28 -to usb_unidir -comment USBD_UNIBIDI -set_location_assignment PIN_E25 -to adc_dout -comment ADC_DOUT -set_location_assignment PIN_AE25 -to adc_ain -comment ADC_AIN -set_location_assignment PIN_AD9 -to dac_out -comment DAC_OUT -set_location_assignment PIN_AH3 -to ereset -comment "ETH_RESET#" -set_location_assignment PIN_B26 -to usb_vbus -comment USBD_VBUS -set_location_assignment PIN_A27 -to usb_reset -comment USBD_RESET -set_location_assignment PIN_AA29 -to hpidata[0] -comment USB_GPIO0 -set_location_assignment PIN_W26 -to hpidata[1] -comment USB_GPIO1 -set_location_assignment PIN_AA30 -to hpidata[2] -comment USB_GPIO2 -set_location_assignment PIN_Y27 -to hpidata[3] -comment USB_GPIO3 -set_location_assignment PIN_AB28 -to hpidata[4] -comment USB_GPIO4 -set_location_assignment PIN_Y26 -to hpidata[5] -comment USB_GPIO5 -set_location_assignment PIN_AB29 -to hpidata[6] -comment USB_GPIO6 -set_location_assignment PIN_AA26 -to hpidata[7] -comment USB_GPIO7 -set_location_assignment PIN_AB30 -to hpidata[8] -comment USB_GPIO8 -set_location_assignment PIN_AB27 -to hpidata[9] -comment USB_GPIO9 -set_location_assignment PIN_AC26 -to hpidata[10] -comment USB_GPIO10 -set_location_assignment PIN_AB26 -to hpidata[11] -comment USB_GPIO11 -set_location_assignment PIN_AC27 -to hpidata[12] -comment USB_GPIO12 -set_location_assignment PIN_AC25 -to hpidata[13] -comment USB_GPIO13 -set_location_assignment PIN_AD27 -to hpidata[14] -comment USB_GPIO14 -set_location_assignment PIN_AE28 -to hpidata[15] -comment USB_GPIO15 -set_location_assignment PIN_AG30 -to hpiaddr[0] -comment USB_GPIO19 -set_location_assignment PIN_AF30 -to hpiaddr[1] -comment USB_GPIO20 -set_location_assignment PIN_AD26 -to hpicsn -comment USB_GPIO21 -set_location_assignment PIN_AF29 -to hpiwrn -comment USB_GPIO22 -set_location_assignment PIN_AD8 -to hpiint -comment USB_GPIO24 -set_location_assignment PIN_AE27 -to hpirdn -comment USB_GPIO23 -set_location_assignment PIN_V24 -to exp_datai[0] -comment CB4_DATA51 -set_location_assignment PIN_W27 -to exp_datai[1] -comment CB4_DATA53 -set_location_assignment PIN_AG18 -to exp_datai[2] -comment CB4_DATA55 -set_location_assignment PIN_AD18 -to exp_datai[3] -comment CB4_DATA57 -set_location_assignment PIN_AG15 -to exp_datai[4] -comment CB4_DATA59 -set_location_assignment PIN_AH14 -to exp_datai[5] -comment CB4_DATA61 -set_location_assignment PIN_AG14 -to exp_datai[6] -comment CB4_DATA63 -set_location_assignment PIN_AH29 -to exp_datai[7] -comment CB4_DATA65 -set_location_assignment PIN_AH30 -to exp_datai[8] -comment CB4_DATA67 -set_location_assignment PIN_AH13 -to exp_datai[9] -comment CB4_DATA69 -set_location_assignment PIN_AH32 -to exp_datai[10] -comment CB4_DATA72 -set_location_assignment PIN_AB15 -to exp_datai[11] -comment CB4_DATA73 -set_location_assignment PIN_AC15 -to exp_datai[12] -comment CB4_DATA75 -set_location_assignment PIN_AD19 -to exp_datai[13] -comment CB4_DATA78 -set_location_assignment PIN_AC14 -to exp_datai[14] -comment CB4_DATA79 -set_location_assignment PIN_AD13 -to exp_datai[15] -comment CB4_DATA81 -set_location_assignment PIN_AC13 -to exp_datai[16] -comment CB4_DATA83 -set_location_assignment PIN_AE14 -to exp_datai[17] -comment CB4_DATA85 -set_location_assignment PIN_AL16 -to exp_datai[18] -comment CB4_DATA87 -set_location_assignment PIN_AL14 -to exp_datai[19] -comment CB4_DATA89 -set_location_assignment PIN_AE19 -to exp_datao[0] -comment CB4_DATA52 -set_location_assignment PIN_AC9 -to exp_datao[1] -comment CB4_DATA54 -set_location_assignment PIN_AD10 -to exp_datao[2] -comment CB4_DATA56 -set_location_assignment PIN_AC11 -to exp_datao[3] -comment CB4_DATA58 -set_location_assignment PIN_AD11 -to exp_datao[4] -comment CB4_DATA60 -set_location_assignment PIN_AE12 -to exp_datao[5] -comment CB4_DATA62 -set_location_assignment PIN_AF13 -to exp_datao[6] -comment CB4_DATA64 -set_location_assignment PIN_AF23 -to exp_datao[7] -comment CB4_DATA66 -set_location_assignment PIN_AE23 -to exp_datao[8] -comment CB4_DATA68 -set_location_assignment PIN_AG32 -to exp_datao[9] -comment CB4_DATA70 -set_location_assignment PIN_AC16 -to exp_datao[10] -comment CB4_DATA71 -set_location_assignment PIN_AJ32 -to exp_datao[11] -comment CB4_DATA74 -set_location_assignment PIN_AJ31 -to exp_datao[12] -comment CB4_DATA76 -set_location_assignment PIN_AB14 -to exp_datao[13] -comment CB4_DATA77 -set_location_assignment PIN_AB18 -to exp_datao[14] -comment CB4_DATA80 -set_location_assignment PIN_AB17 -to exp_datao[15] -comment CB4_DATA82 -set_location_assignment PIN_AC17 -to exp_datao[16] -comment CB4_DATA84 -set_location_assignment PIN_AJ14 -to exp_datao[17] -comment CB4_DATA86 -set_location_assignment PIN_AM14 -to exp_datao[18] -comment CB4_DATA88 -set_location_assignment PIN_AL12 -to exp_datao[19] -comment CB4_DATA90 -set_location_assignment PIN_AH24 -to dbg_equal -comment CB4_DATA47CB2_DQ14 -set_location_assignment PIN_E18 -to sdclk[1] -comment t -set_location_assignment PIN_D18 -to sdclk[0] -comment t -set_location_assignment PIN_AE5 -to sdcke[1] -comment t -set_location_assignment PIN_AE6 -to sdcke[0] -comment t -set_location_assignment PIN_AB5 -to sdaddr[12] -comment t -set_location_assignment PIN_AC12 -to sdaddr[11] -comment t -set_location_assignment PIN_AE4 -to sdaddr[10] -comment t -set_location_assignment PIN_AB13 -to sdaddr[9] -comment t -set_location_assignment PIN_AH4 -to sdaddr[8] -comment t -set_location_assignment PIN_AE13 -to sdaddr[7] -comment t -set_location_assignment PIN_AC18 -to sdaddr[6] -comment t -set_location_assignment PIN_AE26 -to sdaddr[5] -comment t -set_location_assignment PIN_AF19 -to sdaddr[4] -comment t -set_location_assignment PIN_AH31 -to sdaddr[3] -comment t -set_location_assignment PIN_AG12 -to sdaddr[2] -comment t -set_location_assignment PIN_AG31 -to sdaddr[1] -comment t -set_location_assignment PIN_AG13 -to sdaddr[0] -comment t -set_location_assignment PIN_C12 -to sddq[63] -comment t -set_location_assignment PIN_D14 -to sddq[62] -comment t -set_location_assignment PIN_F16 -to sddq[61] -comment t -set_location_assignment PIN_F15 -to sddq[60] -comment t -set_location_assignment PIN_C22 -to sddq[59] -comment t -set_location_assignment PIN_E22 -to sddq[58] -comment t -set_location_assignment PIN_F23 -to sddq[57] -comment t -set_location_assignment PIN_D22 -to sddq[56] -comment t -set_location_assignment PIN_C25 -to sddq[55] -comment t -set_location_assignment PIN_C26 -to sddq[54] -comment t -set_location_assignment PIN_D26 -to sddq[53] -comment t -set_location_assignment PIN_D28 -to sddq[52] -comment t -set_location_assignment PIN_C29 -to sddq[51] -comment t -set_location_assignment PIN_G30 -to sddq[50] -comment t -set_location_assignment PIN_H30 -to sddq[49] -comment t -set_location_assignment PIN_H29 -to sddq[48] -comment t -set_location_assignment PIN_K30 -to sddq[47] -comment t -set_location_assignment PIN_AH1 -to sddq[46] -comment t -set_location_assignment PIN_AF2 -to sddq[45] -comment t -set_location_assignment PIN_AE1 -to sddq[44] -comment t -set_location_assignment PIN_U23 -to sddq[43] -comment t -set_location_assignment PIN_U10 -to sddq[42] -comment t -set_location_assignment PIN_AM4 -to sddq[41] -comment t -set_location_assignment PIN_AK4 -to sddq[40] -comment t -set_location_assignment PIN_AL4 -to sddq[39] -comment t -set_location_assignment PIN_V10 -to sddq[38] -comment t -set_location_assignment PIN_AL5 -to sddq[37] -comment t -set_location_assignment PIN_AM5 -to sddq[36] -comment t -set_location_assignment PIN_AL6 -to sddq[35] -comment t -set_location_assignment PIN_AM6 -to sddq[34] -comment t -set_location_assignment PIN_AL7 -to sddq[33] -comment t -set_location_assignment PIN_AM7 -to sddq[32] -comment t -set_location_assignment PIN_AL8 -to sddq[31] -comment t -set_location_assignment PIN_E27 -to sddq[30] -comment t -set_location_assignment PIN_L19 -to sddq[29] -comment t -set_location_assignment PIN_G22 -to sddq[28] -comment t -set_location_assignment PIN_K20 -to sddq[27] -comment t -set_location_assignment PIN_AB10 -to sddq[26] -comment t -set_location_assignment PIN_AD14 -to sddq[25] -comment t -set_location_assignment PIN_AB16 -to sddq[24] -comment t -set_location_assignment PIN_W25 -to sddq[23] -comment t -set_location_assignment PIN_V23 -to sddq[22] -comment t -set_location_assignment PIN_U22 -to sddq[21] -comment t -set_location_assignment PIN_G11 -to sddq[20] -comment t -set_location_assignment PIN_D5 -to sddq[19] -comment t -set_location_assignment PIN_J19 -to sddq[18] -comment t -set_location_assignment PIN_F17 -to sddq[17] -comment t -set_location_assignment PIN_E14 -to sddq[16] -comment t -set_location_assignment PIN_A14 -to sddq[15] -comment t -set_location_assignment PIN_E19 -to sddq[14] -comment t -set_location_assignment PIN_B16 -to sddq[13] -comment t -set_location_assignment PIN_B17 -to sddq[12] -comment t -set_location_assignment PIN_B21 -to sddq[11] -comment t -set_location_assignment PIN_A22 -to sddq[10] -comment t -set_location_assignment PIN_B22 -to sddq[9] -comment t -set_location_assignment PIN_D27 -to sddq[8] -comment t -set_location_assignment PIN_A24 -to sddq[7] -comment t -set_location_assignment PIN_C24 -to sddq[6] -comment t -set_location_assignment PIN_T23 -to sddq[5] -comment t -set_location_assignment PIN_F22 -to sddq[4] -comment t -set_location_assignment PIN_H21 -to sddq[3] -comment t -set_location_assignment PIN_L15 -to sddq[2] -comment t -set_location_assignment PIN_AF4 -to sddq[1] -comment t -set_location_assignment PIN_AB12 -to sddq[0] -comment t -set_location_assignment PIN_AB32 -to sddqm[7] -comment t -set_location_assignment PIN_AB31 -to sddqm[6] -comment t -set_location_assignment PIN_V31 -to sddqm[5] -comment t -set_location_assignment PIN_W32 -to sddqm[4] -comment t -set_location_assignment PIN_AC22 -to sddqm[3] -comment t -set_location_assignment PIN_C8 -to sddqm[2] -comment t -set_location_assignment PIN_E9 -to sddqm[1] -comment t -set_location_assignment PIN_F9 -to sddqm[0] -comment t -set_location_assignment PIN_AD4 -to sdwen -comment t -set_location_assignment PIN_W10 -to sdcasn -comment t -set_location_assignment PIN_W11 -to sdrasn -comment t -set_location_assignment PIN_AD30 -to sdcsn[1] -comment t -set_location_assignment PIN_AD12 -to sdcsn[0] -comment t -set_location_assignment PIN_W22 -to sdba[1] -comment t -set_location_assignment PIN_AB11 -to sdba[0] -comment t - -# Timing Assignments -# ================== -set_global_assignment -name IGNORE_CLOCK_SETTINGS ON -set_global_assignment -name INCLUDE_EXTERNAL_PIN_DELAYS_IN_FMAX_CALCULATIONS OFF -set_global_assignment -name FMAX_REQUIREMENT "100 MHz" - -# Analysis & Synthesis Assignments -# ================================ -set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA -set_global_assignment -name DEVICE_FILTER_PIN_COUNT 1020 -set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 3 -set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "Synplify Pro" -set_global_assignment -name FAMILY "Stratix II" -set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE AREA -set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE SPEED -set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE SPEED -set_global_assignment -name TOP_LEVEL_ENTITY leon3hpe -set_global_assignment -name VHDL_SHOW_LMF_MAPPING_MESSAGES OFF -set_global_assignment -name AUTO_ENABLE_SMART_COMPILE ON -set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF - -# Fitter Assignments -# ================== -set_global_assignment -name DEVICE EP2S90F1020C3 -set_global_assignment -name STRATIXII_CONFIGURATION_SCHEME "FAST PASSIVE PARALLEL" -set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "PASSIVE SERIAL" -set_global_assignment -name ENABLE_DEVICE_WIDE_RESET OFF -set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED WITH WEAK PULL-UP" -set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "USE AS REGULAR IO" -#set_global_assignment -name RESERVE_NCSO_AFTER_CONFIGURATION "USE AS REGULAR IO" -set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING OFF -set_global_assignment -name IO_PLACEMENT_OPTIMIZATION OFF -set_global_assignment -name INC_PLC_MODE OFF -set_global_assignment -name ROUTING_BACK_ANNOTATION_MODE OFF -set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" -set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 2 - -# Timing Analysis Assignments -# =========================== -set_global_assignment -name MAX_SCC_SIZE 50 - -# EDA Netlist Writer Assignments -# ============================== -set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim (VHDL output from Quartus II)" - -# Assembler Assignments -# ===================== -set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION ON -set_global_assignment -name COMPRESSION_MODE ON -set_global_assignment -name APEX20K_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name EXCALIBUR_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name MERCURY_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE EPC1 -set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name STRATIX_CONFIGURATION_DEVICE EPC8 -set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE ON -set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE OFF -set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE ON -set_global_assignment -name GENERATE_TTF_FILE ON - -# Simulator Assignments -# ===================== -set_global_assignment -name START_TIME "0 ns" -set_global_assignment -name GLITCH_INTERVAL "1 ns" - -# Design Assistant Assignments -# ============================ -set_global_assignment -name DRC_REPORT_TOP_FANOUT OFF -set_global_assignment -name DRC_REPORT_FANOUT_EXCEEDING OFF -set_global_assignment -name ASSG_CAT OFF -set_global_assignment -name ASSG_RULE_MISSING_FMAX OFF -set_global_assignment -name ASSG_RULE_MISSING_TIMING OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_ASYN_RAM OFF -set_global_assignment -name CLK_CAT OFF -set_global_assignment -name CLK_RULE_COMB_CLOCK OFF -set_global_assignment -name CLK_RULE_INV_CLOCK OFF -set_global_assignment -name CLK_RULE_GATING_SCHEME OFF -set_global_assignment -name CLK_RULE_INPINS_CLKNET OFF -set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES OFF -set_global_assignment -name CLK_RULE_MIX_EDGES OFF -set_global_assignment -name RESET_CAT OFF -set_global_assignment -name RESET_RULE_INPINS_RESETNET OFF -set_global_assignment -name RESET_RULE_UNSYNCH_EXRESET OFF -set_global_assignment -name RESET_RULE_IMSYNCH_EXRESET OFF -set_global_assignment -name RESET_RULE_COMB_ASYNCH_RESET OFF -set_global_assignment -name RESET_RULE_UNSYNCH_ASYNCH_DOMAIN OFF -set_global_assignment -name RESET_RULE_IMSYNCH_ASYNCH_DOMAIN OFF -set_global_assignment -name TIMING_CAT OFF -set_global_assignment -name TIMING_RULE_SHIFT_REG OFF -set_global_assignment -name TIMING_RULE_COIN_CLKEDGE OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_COMB_DRIVES_RAM_WE OFF -set_global_assignment -name NONSYNCHSTRUCT_CAT OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_COMBLOOP OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_REG_LOOP OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_DELAY_CHAIN OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_RIPPLE_CLK OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_ILLEGAL_PULSE_GEN OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_MULTI_VIBRATOR OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_SRLATCH OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_LATCH_UNIDENTIFIED OFF -set_global_assignment -name ACLK_CAT OFF -set_global_assignment -name ACLK_RULE_NO_SZER_ACLK_DOMAIN OFF -set_global_assignment -name ACLK_RULE_SZER_BTW_ACLK_DOMAIN OFF -set_global_assignment -name ACLK_RULE_IMSZER_ADOMAIN OFF -set_global_assignment -name HCPY_VREF_PINS OFF - -# Programmer Assignments -# ====================== -set_global_assignment -name GENERATE_JAM_FILE ON -set_global_assignment -name GENERATE_JBC_FILE ON - -# SignalTap II Assignments -# ======================== -set_global_assignment -name ENABLE_SIGNALTAP OFF - -# LogicLock Region Assignments -# ============================ -set_global_assignment -name LOGICLOCK_INCREMENTAL_COMPILE_ASSIGNMENT OFF - -# --------------------------------------------- -# start EDA_TOOL_SETTINGS(eda_design_synthesis) - - # Analysis & Synthesis Assignments - # ================================ -set_global_assignment -name EDA_INPUT_DATA_FORMAT "VERILOG HDL" -section_id eda_design_synthesis -set_global_assignment -name EDA_LMF_FILE synplcty.lmf -section_id eda_design_synthesis - - # EDA Netlist Writer Assignments - # ============================== -set_global_assignment -name EDA_OUTPUT_DATA_FORMAT EDIF -section_id eda_design_synthesis - -# end EDA_TOOL_SETTINGS(eda_design_synthesis) -# ------------------------------------------- - -# --------------------------------------- -# start EDA_TOOL_SETTINGS(eda_simulation) - - # EDA Netlist Writer Assignments - # ============================== -set_global_assignment -name EDA_INCLUDE_VHDL_CONFIGURATION_DECLARATION ON -section_id eda_simulation -set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation - -# end EDA_TOOL_SETTINGS(eda_simulation) -# ------------------------------------- - -# ---------------------- -# start ENTITY(leon3hpe) - - # Timing Assignments - # ================== -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[0] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[1] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[2] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[3] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[4] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[5] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[6] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[7] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[8] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[9] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[10] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[11] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[12] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[13] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[14] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[15] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[16] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[17] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[18] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[19] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[20] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[21] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[22] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[23] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[24] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[25] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[26] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[27] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[28] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[29] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[30] -set_instance_assignment -name TSU_REQUIREMENT "10 ns" -from * -to data[31] - - # Fitter Assignments - # ================== -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdclk[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[4] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[5] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[6] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[7] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[8] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[9] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[10] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[11] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[12] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[13] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[14] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[15] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[16] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[17] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[18] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[19] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[20] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[21] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[22] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[23] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[24] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[25] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[26] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to address[27] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to bufdir -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to bufoen -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[4] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[5] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[6] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[7] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[8] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[9] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[10] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[11] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[12] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[13] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[14] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[15] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[16] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[17] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[18] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[19] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[20] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[21] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[22] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[23] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[24] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[25] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[26] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[27] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[28] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[29] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[30] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to data[31] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erx_clk -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to erxd[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etx_clk -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to etxd[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to rwen[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdba[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdba[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdcasn -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdclk[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdcsn[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdcsn[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sddqm[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdrasn -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to sdwen -set_instance_assignment -name CURRENT_STRENGTH_NEW "STRENGTH 8MA" -to writen - -# end ENTITY(leon3hpe) -# -------------------- - -set_global_assignment -name LAST_QUARTUS_VERSION 7.2 -set_global_assignment -name ENABLE_ADVANCED_IO_TIMING OFF -set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to resetn -set_global_assignment -name SMART_RECOMPILE ON -set_global_assignment -name NUM_PARALLEL_PROCESSORS 2 -set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 -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 OPTIMIZE_HOLD_TIMING "ALL PATHS" diff --git a/boards/ge-hpe-mini-lattice/Makefile.inc b/boards/ge-hpe-mini-lattice/Makefile.inc deleted file mode 100755 index b0f01ae5..00000000 --- a/boards/ge-hpe-mini-lattice/Makefile.inc +++ /dev/null @@ -1,12 +0,0 @@ -TECHNOLOGY=LATTICE-ECP -PART=LFECP33E -PACKAGE=F484C -ISPLIB=ep5g00p -ISPPACKAGE=FPBGA484 -SPEED=-5 -SYNFREQ=50 -PROMGENPAR= -exe $(ISPVM_DIR)/ispufw -op p -prj $(TOP) -if $(TOP).bit -oft -int -of $(TOP).mcs -MANUFACTURER=Lattice -MGCPART=$(PART) -MGCPACKAGE=$(ISPPACKAGE) -MGCTECHNOLOGY=LatticeECP-DSP diff --git a/boards/ge-hpe-mini-lattice/default.sdc b/boards/ge-hpe-mini-lattice/default.sdc deleted file mode 100755 index 9e58382d..00000000 --- a/boards/ge-hpe-mini-lattice/default.sdc +++ /dev/null @@ -1,47 +0,0 @@ -# Synplicity, Inc. constraint file -# /home/jiri/ibm/vhdl/grlib/boards/gr-pci-xc2v/default.sdc -# Written on Fri Jul 30 18:56:40 2004 -# by Synplify Pro, 7.6 Scope Editor - -# -# Clocks -# -define_clock -name {clk} -freq 35.000 -clockgroup default_clkgroup - -#define_clock -name {clkgen0.clkm_inferred_clock} -freq 60.000 -clockgroup clkmgroup -define_clock -name {clkgen0.ddrclk0_inferred_clock} -freq 120.000 -clockgroup ddrclkgroup - -# -# Inputs/Outputs -# -#define_output_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {clk:r} -define_input_delay -default 4.00 -improve 0.00 -route 0.00 -ref {clkgen0.ddrclk0_inferred_clock:r} - -# -# Registers -# - -# -# Multicycle Path -# - -# -# False Path -# - -# -# Delay Path -# - -# -# Attributes -# -define_global_attribute syn_useioff {1} -define_global_attribute syn_netlist_hierarchy {0} -# -# Compile Points -# - -# -# Other Constraints -# diff --git a/boards/ge-hpe-mini-lattice/default.ut b/boards/ge-hpe-mini-lattice/default.ut deleted file mode 100644 index 8d055524..00000000 --- a/boards/ge-hpe-mini-lattice/default.ut +++ /dev/null @@ -1,6 +0,0 @@ --g CfgMode:Disable --g ReadBack:SRAM --g RamCfg:Reset --g SYNSRC:No --g PllSET:None - diff --git a/boards/ge-hpe-mini-lattice/leon3mini.lpf b/boards/ge-hpe-mini-lattice/leon3mini.lpf deleted file mode 100644 index 98ccd074..00000000 --- a/boards/ge-hpe-mini-lattice/leon3mini.lpf +++ /dev/null @@ -1,657 +0,0 @@ -BLOCK RESETPATHS ; -BLOCK ASYNCPATHS ; -FREQUENCY PORT "clk" 25.000000 MHz ; -#USE SECONDARY NET clk ; -FREQUENCY PORT "etx_clk" 25.000000 MHz ; -FREQUENCY PORT "erx_clk" 25.000000 MHz ; -#FREQUENCY NET "clkgen0_clkin200" 200.000000 MHz ; -FREQUENCY NET "clkm" 50.000000 MHz ; -FREQUENCY NET "ddrclk0" 100.000000 MHz ; -#FREQUENCY NET "ddrclk90" 100.000000 MHz ; -FREQUENCY NET "ddrclk180" 100.000000 MHz ; -FREQUENCY NET "ddrclk270" 100.000000 MHz ; -FREQUENCY NET "clkgen0_clk180_fb" 100.000000 MHz ; -FREQUENCY NET "clkgen0_clkgen50_b0_clkm_inferred_clock" 100.000000 MHz ; -FREQUENCY NET "clkgen0_clkgen50_b0_un1_pllm50_1" 100.000000 MHz ; -FREQUENCY NET "clkgen0_clkm_fb" 100.000000 MHz ; -FREQUENCY NET "clkgen0_ddrclk0_inferred_clock" 100.000000 MHz ; -FREQUENCY NET "clkgen0_un1_pllddr1_5" 100.000000 MHz ; -FREQUENCY NET "clkgen0_un1_pllddr2_5" 100.000000 MHz ; -FREQUENCY NET "clk_c" 25.000000 MHz ; -FREQUENCY NET "clkgen0_un1_pllddr1_1" 100.000000 MHz ; -FREQUENCY NET "clkgen0_un1_pllddr2" 100.000000 MHz ; -#USE PRIMARY PURE NET clkm; -#USE PRIMARY PURE NET ddrclk0; -#USE PRIMARY PURE NET ddrclk180; -#USE PRIMARY PURE NET ddrclk270; -INPUT_SETUP ALLPORTS 5.000000 ns CLKPORT "clk" ; -CLOCK_TO_OUT ALLPORTS 20.000000 ns CLKPORT "clk" ; -BLOCK NET "resetn_c" ; -BLOCK NET "romrstn_c_r*" ; -COMMERCIAL; -#DEFINE PORT GROUP "ddrgroup" "ddr*"; -#IOBUF GROUP "ddrgroup" IO_TYPE=SSTL25D_II ; -# Assign IO_TYPE Attributes -IOBUF PORT "ddr_dqs_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_dq_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_4" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_5" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_6" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_7" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_8" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_9" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_10" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_11" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_12" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_13" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_14" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_15" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_16" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_17" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_18" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_19" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_20" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_21" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_22" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_23" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_24" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_25" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_26" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_27" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_28" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_29" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_30" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_31" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_ba_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ba_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk0b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cke0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk1b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cke1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_rasb" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_casb" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_web" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_cs0b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cs1b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_ad_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_4" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_5" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_6" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_7" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_8" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_9" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_10" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_11" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_12" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_13" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_dm_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -INPUT_SETUP PORT "ddr_dq_0" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_1" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_2" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_3" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_4" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_5" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_6" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_7" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_8" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_9" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_10" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_11" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_12" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_13" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_14" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_15" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_16" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_17" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_18" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_19" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_20" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_21" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_22" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_23" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_24" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_25" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_26" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_27" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_28" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_29" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_30" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_31" 0.800000 ns CLKNET "ddrclk0" ; -DEFINE BUS ddr_bus - NET "ddr_dq_in_0" - NET "ddr_dq_in_1" - NET "ddr_dq_in_2" - NET "ddr_dq_in_3" - NET "ddr_dq_in_4" - NET "ddr_dq_in_5" - NET "ddr_dq_in_6" - NET "ddr_dq_in_7" - NET "ddr_dq_in_8" - NET "ddr_dq_in_9" - NET "ddr_dq_in_10" - NET "ddr_dq_in_11" - NET "ddr_dq_in_12" - NET "ddr_dq_in_13" - NET "ddr_dq_in_14" - NET "ddr_dq_in_15" - NET "ddr_dq_in_16" - NET "ddr_dq_in_17" - NET "ddr_dq_in_18" - NET "ddr_dq_in_19" - NET "ddr_dq_in_20" - NET "ddr_dq_in_21" - NET "ddr_dq_in_22" - NET "ddr_dq_in_23" - NET "ddr_dq_in_24" - NET "ddr_dq_in_25" - NET "ddr_dq_in_26" - NET "ddr_dq_in_27" - NET "ddr_dq_in_28" - NET "ddr_dq_in_29" - NET "ddr_dq_in_30" - NET "ddr_dq_in_31"; -#LOCATE BUS "ddr_bus" COL 65; -LOCATE COMP "clk" SITE "A10" ; -LOCATE COMP "resetn" SITE "H6" ; -LOCATE COMP "resoutn" SITE "B3" ; -LOCATE COMP "address_2" SITE "AB20" ; -LOCATE COMP "address_3" SITE "AA20" ; -LOCATE COMP "address_4" SITE "AB19" ; -LOCATE COMP "address_5" SITE "AA19" ; -LOCATE COMP "address_6" SITE "Y19" ; -LOCATE COMP "address_7" SITE "AB18" ; -LOCATE COMP "address_8" SITE "AA18" ; -LOCATE COMP "address_9" SITE "Y18" ; -LOCATE COMP "address_10" SITE "W18" ; -LOCATE COMP "address_11" SITE "AB17" ; -LOCATE COMP "address_12" SITE "AA17" ; -LOCATE COMP "address_13" SITE "Y17" ; -LOCATE COMP "address_14" SITE "W17" ; -LOCATE COMP "address_15" SITE "V17" ; -LOCATE COMP "address_16" SITE "U17" ; -LOCATE COMP "address_17" SITE "AB16" ; -LOCATE COMP "address_18" SITE "AA16" ; -LOCATE COMP "address_19" SITE "Y16" ; -LOCATE COMP "address_20" SITE "W16" ; -LOCATE COMP "address_21" SITE "V16" ; -LOCATE COMP "address_22" SITE "U16" ; -LOCATE COMP "address_23" SITE "AB15" ; -LOCATE COMP "address_24" SITE "AA15" ; -LOCATE COMP "data_0" SITE "Y15" ; -LOCATE COMP "data_1" SITE "W15" ; -LOCATE COMP "data_2" SITE "V15" ; -LOCATE COMP "data_3" SITE "U15" ; -LOCATE COMP "data_4" SITE "AB14" ; -LOCATE COMP "data_5" SITE "AA14" ; -LOCATE COMP "data_6" SITE "Y14" ; -LOCATE COMP "data_7" SITE "W14" ; -LOCATE COMP "data_8" SITE "AA13" ; -LOCATE COMP "data_9" SITE "Y13" ; -LOCATE COMP "data_10" SITE "AA11" ; -LOCATE COMP "data_11" SITE "Y11" ; -LOCATE COMP "data_12" SITE "W11" ; -LOCATE COMP "data_13" SITE "AA10" ; -LOCATE COMP "data_14" SITE "Y10" ; -LOCATE COMP "data_15" SITE "W10" ; -LOCATE COMP "data_16" SITE "V10" ; -LOCATE COMP "data_17" SITE "AB9" ; -LOCATE COMP "data_18" SITE "AA9" ; -LOCATE COMP "data_19" SITE "Y9" ; -LOCATE COMP "data_20" SITE "W9" ; -LOCATE COMP "data_21" SITE "V9" ; -LOCATE COMP "data_22" SITE "AB8" ; -LOCATE COMP "data_23" SITE "AA8" ; -LOCATE COMP "data_24" SITE "Y8" ; -LOCATE COMP "data_25" SITE "W8" ; -LOCATE COMP "data_26" SITE "V8" ; -LOCATE COMP "data_27" SITE "AB7" ; -LOCATE COMP "data_28" SITE "AA7" ; -LOCATE COMP "data_29" SITE "Y7" ; -LOCATE COMP "data_30" SITE "W7" ; -LOCATE COMP "data_31" SITE "V7" ; -LOCATE COMP "serrx" SITE "M2" ; -LOCATE COMP "sertx" SITE "L1" ; -LOCATE COMP "emdio" SITE "K4" ; -LOCATE COMP "etx_clk" SITE "J1" ; -LOCATE COMP "erx_clk" SITE "K1" ; -LOCATE COMP "erxd_0" SITE "G1" ; -LOCATE COMP "erxd_1" SITE "G2" ; -LOCATE COMP "erxd_2" SITE "G3" ; -LOCATE COMP "erxd_3" SITE "F2" ; -LOCATE COMP "erx_dv" SITE "J4" ; -LOCATE COMP "erx_er" SITE "J5" ; -LOCATE COMP "erx_col" SITE "K2" ; -LOCATE COMP "erx_crs" SITE "K3" ; -LOCATE COMP "etxd_0" SITE "H1" ; -LOCATE COMP "etxd_1" SITE "H2" ; -LOCATE COMP "etxd_2" SITE "H3" ; -LOCATE COMP "etxd_3" SITE "H4" ; -LOCATE COMP "etx_en" SITE "J3" ; -LOCATE COMP "etx_er" SITE "J2" ; -LOCATE COMP "emdc" SITE "K5" ; -LOCATE COMP "hpiaddr_0" SITE "C10" ; -LOCATE COMP "hpiaddr_1" SITE "D10" ; -LOCATE COMP "hpicsn" SITE "E10" ; -LOCATE COMP "hpiwrn" SITE "F10" ; -LOCATE COMP "hpirdn" SITE "G10" ; -LOCATE COMP "hpidata_0" SITE "B7" ; -LOCATE COMP "hpidata_1" SITE "C7" ; -LOCATE COMP "hpidata_2" SITE "D7" ; -LOCATE COMP "hpidata_3" SITE "E7" ; -LOCATE COMP "hpidata_4" SITE "F7" ; -LOCATE COMP "hpidata_5" SITE "A8" ; -LOCATE COMP "hpidata_6" SITE "B8" ; -LOCATE COMP "hpidata_7" SITE "C8" ; -LOCATE COMP "hpidata_8" SITE "D8" ; -LOCATE COMP "hpidata_9" SITE "E8" ; -LOCATE COMP "hpidata_10" SITE "F8" ; -LOCATE COMP "hpidata_11" SITE "A9" ; -LOCATE COMP "hpidata_12" SITE "B9" ; -LOCATE COMP "hpidata_13" SITE "C9" ; -LOCATE COMP "hpidata_14" SITE "D9" ; -LOCATE COMP "hpidata_15" SITE "E9" ; -LOCATE COMP "hpiint" SITE "B11" ; -LOCATE COMP "dbg_equal" SITE "AB13" ; -LOCATE COMP "sample_clock" SITE "AB12" ; -LOCATE COMP "dac" SITE "U7" ; -LOCATE COMP "vga_vsync" SITE "A6" ; -LOCATE COMP "vga_hsync" SITE "A7" ; -LOCATE COMP "vga_rd_0" SITE "A3" ; -LOCATE COMP "vga_rd_1" SITE "B4" ; -LOCATE COMP "vga_gr_0" SITE "A4" ; -LOCATE COMP "vga_gr_1" SITE "B5" ; -LOCATE COMP "vga_bl_0" SITE "A5" ; -LOCATE COMP "vga_bl_1" SITE "B6" ; -LOCATE COMP "dsw_0" SITE "R2" ; -# LOCATE COMP "dsuen" SITE "R2" ; -LOCATE COMP "dsw_1" SITE "R3" ; -LOCATE COMP "dsw_2" SITE "R4" ; -LOCATE COMP "dsw_3" SITE "R5" ; -LOCATE COMP "led_0" SITE "E3" ; -# LOCATE COMP "dsuactn" SITE "E3" ; -LOCATE COMP "led_1" SITE "E4" ; -LOCATE COMP "led_2" SITE "E5" ; -LOCATE COMP "led_3" SITE "F4" ; -LOCATE COMP "led_4" SITE "F5" ; -LOCATE COMP "led_5" SITE "G4" ; -LOCATE COMP "led_6" SITE "G5" ; -LOCATE COMP "led_7" SITE "H5" ; -LOCATE COMP "sevensegment_0" SITE "M3" ; -LOCATE COMP "sevensegment_1" SITE "M4" ; -LOCATE COMP "sevensegment_2" SITE "M5" ; -LOCATE COMP "sevensegment_3" SITE "N1" ; -LOCATE COMP "sevensegment_4" SITE "N2" ; -LOCATE COMP "sevensegment_5" SITE "N3" ; -LOCATE COMP "sevensegment_6" SITE "N4" ; -LOCATE COMP "sevensegment_7" SITE "N5" ; -LOCATE COMP "sevensegment_8" SITE "P1" ; -LOCATE COMP "sevensegment_9" SITE "P2" ; -LOCATE COMP "lcd_enable" SITE "P5" ; -LOCATE COMP "lcd_regsel" SITE "P3" ; -LOCATE COMP "lcd_rw" SITE "P4" ; -LOCATE COMP "tst_col_0" SITE "U4" ; -LOCATE COMP "tst_col_1" SITE "U6" ; -LOCATE COMP "tst_col_2" SITE "V5" ; -LOCATE COMP "tst_row_0" SITE "T1" ; -LOCATE COMP "tst_row_1" SITE "T2" ; -LOCATE COMP "tst_row_2" SITE "T3" ; -LOCATE COMP "tst_row_3" SITE "R1" ; - -LOCATE COMP "ata_data_7" SITE "K22" ; -LOCATE COMP "ata_data_8" SITE "K21" ; -LOCATE COMP "ata_data_6" SITE "L22" ; -LOCATE COMP "ata_data_9" SITE "L21" ; -LOCATE COMP "ata_data_5" SITE "L20" ; -LOCATE COMP "ata_data_10" SITE "M22" ; -LOCATE COMP "ata_data_4" SITE "M21" ; -LOCATE COMP "ata_data_11" SITE "M20" ; -LOCATE COMP "ata_data_3" SITE "M19" ; -LOCATE COMP "ata_data_12" SITE "M18" ; -LOCATE COMP "ata_data_2" SITE "N22" ; -LOCATE COMP "ata_data_13" SITE "N21" ; -LOCATE COMP "ata_data_1" SITE "N20" ; -LOCATE COMP "ata_data_14" SITE "N19" ; -LOCATE COMP "ata_data_0" SITE "N18" ; -LOCATE COMP "ata_data_15" SITE "P22" ; -LOCATE COMP "ata_da_1" SITE "R17" ; -LOCATE COMP "ata_da_0" SITE "T22" ; -LOCATE COMP "ata_da_2" SITE "T18" ; -LOCATE COMP "ata_cs0" SITE "U22" ; -LOCATE COMP "ata_cs1" SITE "V20" ; -LOCATE COMP "ata_dior" SITE "P18" ; -LOCATE COMP "ata_diow" SITE "P20" ; -LOCATE COMP "ata_iordy" SITE "P19" ; -LOCATE COMP "ata_intrq" SITE "R19" ; - -LOCATE COMP "exp_datao_0" SITE "K22" ; -LOCATE COMP "exp_datai_0" SITE "K21" ; -LOCATE COMP "exp_datao_1" SITE "L22" ; -LOCATE COMP "exp_datai_1" SITE "L21" ; -LOCATE COMP "exp_datao_2" SITE "L20" ; -LOCATE COMP "exp_datai_2" SITE "M22" ; -LOCATE COMP "exp_datao_3" SITE "M21" ; -LOCATE COMP "exp_datai_3" SITE "M20" ; -LOCATE COMP "exp_datao_4" SITE "M19" ; -LOCATE COMP "exp_datai_4" SITE "M18" ; -LOCATE COMP "exp_datao_5" SITE "N22" ; -LOCATE COMP "exp_datai_5" SITE "N21" ; -LOCATE COMP "exp_datao_6" SITE "N20" ; -LOCATE COMP "exp_datai_6" SITE "N19" ; -LOCATE COMP "exp_datao_7" SITE "N18" ; -LOCATE COMP "exp_datai_7" SITE "P22" ; -LOCATE COMP "exp_datao_8" SITE "P21" ; -LOCATE COMP "exp_datai_8" SITE "P20" ; -LOCATE COMP "exp_datao_9" SITE "P18" ; -LOCATE COMP "exp_datai_9" SITE "P19" ; -LOCATE COMP "exp_datao_10" SITE "R22" ; -LOCATE COMP "exp_datai_10" SITE "R21" ; -LOCATE COMP "exp_datao_11" SITE "R19" ; -LOCATE COMP "exp_datai_11" SITE "R18" ; -LOCATE COMP "exp_datao_12" SITE "R17" ; -LOCATE COMP "exp_datai_12" SITE "T22" ; -LOCATE COMP "exp_datao_13" SITE "T18" ; -LOCATE COMP "exp_datai_13" SITE "U22" ; -LOCATE COMP "exp_datao_14" SITE "V19" ; -LOCATE COMP "exp_datai_14" SITE "W21" ; -LOCATE COMP "exp_datao_15" SITE "W20" ; -LOCATE COMP "exp_datai_15" SITE "W19" ; -LOCATE COMP "exp_datao_16" SITE "Y20" ; -LOCATE COMP "exp_datai_16" SITE "AA22" ; -LOCATE COMP "exp_datao_17" SITE "AA21" ; -LOCATE COMP "exp_datai_17" SITE "AB21" ; -LOCATE COMP "exp_datao_18" SITE "T17" ; -LOCATE COMP "exp_datai_18" SITE "T14" ; -LOCATE COMP "exp_datao_19" SITE "T13" ; -LOCATE COMP "exp_datai_19" SITE "U14" ; -LOCATE COMP "codec_cs" SITE "W4" ; -LOCATE COMP "codec_mclk" SITE "Y3" ; -LOCATE COMP "codec_mode" SITE "V4" ; -LOCATE COMP "codec_sclk" SITE "Y1" ; -LOCATE COMP "codec_sdin" SITE "AA2" ; -LOCATE COMP "codec_din" SITE "W2" ; -LOCATE COMP "codec_bclk" SITE "W1" ; -LOCATE COMP "codec_lrcin" SITE "AA1" ; -LOCATE COMP "codec_lrcout" SITE "Y2" ; -LOCATE COMP "dbg_codec_din" SITE "F11" ; -LOCATE COMP "dbg_codec_bclk" SITE "F12" ; -LOCATE COMP "dbg_codec_lrcin" SITE "F13" ; -LOCATE COMP "dbg_codec_lrcout" SITE "G13" ; -LOCATE COMP "dsubre" SITE "V6" ; -LOCATE COMP "oen" SITE "AA6" ; -#LOCATE COMP "wen" SITE "AB6" ; -LOCATE COMP "writen" SITE "AB6" ; -LOCATE COMP "rben_0" SITE "AB4" ; -LOCATE COMP "rben_1" SITE "AA4" ; -LOCATE COMP "rben_2" SITE "AB3" ; -LOCATE COMP "rben_3" SITE "AA3" ; -LOCATE COMP "ramsn" SITE "Y4" ; -LOCATE COMP "romwpn" SITE "AB5" ; -LOCATE COMP "romsn" SITE "Y5" ; -LOCATE COMP "romrstn" SITE "Y6" ; -LOCATE COMP "errorn" SITE "AA12" ; -LOCATE COMP "ddr_ad_0" SITE "D16" ; -LOCATE COMP "ddr_ad_1" SITE "C16" ; -LOCATE COMP "ddr_ad_10" SITE "E16" ; -LOCATE COMP "ddr_ad_11" SITE "C13" ; -LOCATE COMP "ddr_ad_12" SITE "B13" ; -LOCATE COMP "ddr_ad_13" SITE "C17" ; -LOCATE COMP "ddr_ad_2" SITE "E15" ; -LOCATE COMP "ddr_ad_3" SITE "D15" ; -LOCATE COMP "ddr_ad_4" SITE "C15" ; -LOCATE COMP "ddr_ad_5" SITE "E14" ; -LOCATE COMP "ddr_ad_6" SITE "D14" ; -LOCATE COMP "ddr_ad_7" SITE "C14" ; -LOCATE COMP "ddr_ad_8" SITE "E13" ; -LOCATE COMP "ddr_ad_9" SITE "D13" ; -LOCATE COMP "ddr_ba_0" SITE "E17" ; -LOCATE COMP "ddr_ba_1" SITE "D17" ; -LOCATE COMP "ddr_casb" SITE "A19" ; -LOCATE COMP "ddr_clk0" SITE "A12" ; -LOCATE COMP "ddr_clk0b" SITE "B12" ; -LOCATE COMP "ddr_clk1" SITE "B19" ; -LOCATE COMP "ddr_clk1b" SITE "A20" ; -LOCATE COMP "ddr_cke0" SITE "A13" ; -LOCATE COMP "ddr_cke1" SITE "C12" ; -LOCATE COMP "ddr_dm_0" SITE "B15" ; -LOCATE COMP "ddr_dm_1" SITE "C20" ; -LOCATE COMP "ddr_dm_2" SITE "H19" ; -LOCATE COMP "ddr_dm_3" SITE "K20" ; -LOCATE COMP "ddr_dq_0" SITE "A14" ; -LOCATE COMP "ddr_dq_1" SITE "B14" ; -LOCATE COMP "ddr_dq_10" SITE "C21" ; -LOCATE COMP "ddr_dq_11" SITE "C22" ; -LOCATE COMP "ddr_dq_12" SITE "E20" ; -LOCATE COMP "ddr_dq_13" SITE "E18" ; -LOCATE COMP "ddr_dq_14" SITE "F19" ; -LOCATE COMP "ddr_dq_15" SITE "F18" ; -LOCATE COMP "ddr_dq_16" SITE "D21" ; -LOCATE COMP "ddr_dq_17" SITE "F20" ; -LOCATE COMP "ddr_dq_18" SITE "G21" ; -LOCATE COMP "ddr_dq_19" SITE "G20" ; -LOCATE COMP "ddr_dq_2" SITE "A15" ; -LOCATE COMP "ddr_dq_20" SITE "H20" ; -LOCATE COMP "ddr_dq_21" SITE "J19" ; -LOCATE COMP "ddr_dq_22" SITE "J18" ; -LOCATE COMP "ddr_dq_23" SITE "H17" ; -LOCATE COMP "ddr_dq_24" SITE "F22" ; -LOCATE COMP "ddr_dq_25" SITE "G22" ; -LOCATE COMP "ddr_dq_26" SITE "H22" ; -LOCATE COMP "ddr_dq_27" SITE "H21" ; -LOCATE COMP "ddr_dq_28" SITE "K19" ; -LOCATE COMP "ddr_dq_29" SITE "K18" ; -LOCATE COMP "ddr_dq_3" SITE "B16" ; -LOCATE COMP "ddr_dq_30" SITE "L18" ; -LOCATE COMP "ddr_dq_31" SITE "L19" ; -LOCATE COMP "ddr_dq_4" SITE "A17" ; -LOCATE COMP "ddr_dq_5" SITE "B17" ; -LOCATE COMP "ddr_dq_6" SITE "A18" ; -LOCATE COMP "ddr_dq_7" SITE "B18" ; -LOCATE COMP "ddr_dq_8" SITE "B22" ; -LOCATE COMP "ddr_dq_9" SITE "B21" ; -LOCATE COMP "ddr_dqs_0" SITE "A16" ; -LOCATE COMP "ddr_dqs_1" SITE "D20" ; -LOCATE COMP "ddr_dqs_2" SITE "H18" ; -LOCATE COMP "ddr_dqs_3" SITE "J20" ; -LOCATE COMP "ddr_rasb" SITE "C18" ; -LOCATE COMP "ddr_cs0b" SITE "C19" ; -LOCATE COMP "ddr_cs1b" SITE "B20" ; -LOCATE COMP "ddr_web" SITE "D18" ; -IOBUF PORT "emdio" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "vga_bl_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_19" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "resetn" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "resoutn" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "clk" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "errorn" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_3" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_4" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_5" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_6" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_7" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_8" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_9" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_10" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_11" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_12" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_13" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_14" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_15" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_16" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_17" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_18" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_19" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_20" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_21" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_22" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_23" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "address_24" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_3" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_4" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_5" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_6" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_7" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_8" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_9" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_10" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_11" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_12" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_13" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_14" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_15" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_16" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_17" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_18" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_19" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_20" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_21" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_22" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_23" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_24" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_25" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_26" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_27" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_28" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_29" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_30" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "data_31" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "ramsn" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "rben_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "rben_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "rben_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "rben_3" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "romsn" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "oen" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "writen" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "romwpn" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "romrstn" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "dsubre" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "serrx" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "sertx" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "etx_clk" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "erx_clk" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "erxd_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "erxd_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "erxd_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "erxd_3" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "erx_dv" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "erx_er" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "erx_col" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "erx_crs" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "etxd_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "etxd_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "etxd_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "etxd_3" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "etx_en" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "etx_er" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "emdc" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "dsw_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "dsw_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "dsw_3" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "led_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "led_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "led_3" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "led_4" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "led_5" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "led_6" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "led_7" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "sevensegment_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "sevensegment_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "sevensegment_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "sevensegment_3" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "sevensegment_4" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "sevensegment_5" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "sevensegment_6" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "sevensegment_7" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "sevensegment_8" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "sevensegment_9" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "lcd_enable" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "lcd_regsel" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "lcd_rw" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "tst_col_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "tst_col_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "tst_col_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "tst_row_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "tst_row_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "tst_row_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "tst_row_3" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_3" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_4" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_5" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_6" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_7" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_8" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_9" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_10" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_11" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_12" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_13" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_14" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_15" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_16" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_17" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_18" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datao_19" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_2" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_3" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_4" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_5" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_6" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_7" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_8" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_9" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_10" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_11" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_12" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_13" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_14" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_15" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_16" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_17" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "exp_datai_18" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "codec_mode" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "codec_mclk" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "codec_sclk" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "codec_cs" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "codec_sdin" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "codec_din" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "codec_bclk" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "codec_lrcin" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "codec_lrcout" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "dac" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "vga_vsync" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "vga_hsync" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "vga_rd_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "vga_rd_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "vga_gr_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "vga_gr_1" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "vga_bl_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "dsw_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; -IOBUF PORT "led_0" IO_TYPE=LVCMOS25 PULLMODE=NONE ; diff --git a/boards/ge-hpe-mini-lattice/leon3mini.prf b/boards/ge-hpe-mini-lattice/leon3mini.prf deleted file mode 100644 index 808c7cbd..00000000 --- a/boards/ge-hpe-mini-lattice/leon3mini.prf +++ /dev/null @@ -1,475 +0,0 @@ -SCHEMATIC START ; -LOCATE COMP "clk" SITE "A10" ; -LOCATE COMP "resetn" SITE "H6" ; -LOCATE COMP "resoutn" SITE "B3" ; -LOCATE COMP "address_2" SITE "AB20" ; -LOCATE COMP "address_3" SITE "AA20" ; -LOCATE COMP "address_4" SITE "AB19" ; -LOCATE COMP "address_5" SITE "AA19" ; -LOCATE COMP "address_6" SITE "Y19" ; -LOCATE COMP "address_7" SITE "AB18" ; -LOCATE COMP "address_8" SITE "AA18" ; -LOCATE COMP "address_9" SITE "Y18" ; -LOCATE COMP "address_10" SITE "W18" ; -LOCATE COMP "address_11" SITE "AB17" ; -LOCATE COMP "address_12" SITE "AA17" ; -LOCATE COMP "address_13" SITE "Y17" ; -LOCATE COMP "address_14" SITE "W17" ; -LOCATE COMP "address_15" SITE "V17" ; -LOCATE COMP "address_16" SITE "U17" ; -LOCATE COMP "address_17" SITE "AB16" ; -LOCATE COMP "address_18" SITE "AA16" ; -LOCATE COMP "address_19" SITE "Y16" ; -LOCATE COMP "address_20" SITE "W16" ; -LOCATE COMP "address_21" SITE "V16" ; -LOCATE COMP "address_22" SITE "U16" ; -LOCATE COMP "address_23" SITE "AB15" ; -LOCATE COMP "address_24" SITE "AA15" ; -LOCATE COMP "data_0" SITE "Y15" ; -LOCATE COMP "data_1" SITE "W15" ; -LOCATE COMP "data_2" SITE "V15" ; -LOCATE COMP "data_3" SITE "U15" ; -LOCATE COMP "data_4" SITE "AB14" ; -LOCATE COMP "data_5" SITE "AA14" ; -LOCATE COMP "data_6" SITE "Y14" ; -LOCATE COMP "data_7" SITE "W14" ; -LOCATE COMP "data_8" SITE "AA13" ; -LOCATE COMP "data_9" SITE "Y13" ; -LOCATE COMP "data_10" SITE "AA11" ; -LOCATE COMP "data_11" SITE "Y11" ; -LOCATE COMP "data_12" SITE "W11" ; -LOCATE COMP "data_13" SITE "AA10" ; -LOCATE COMP "data_14" SITE "Y10" ; -LOCATE COMP "data_15" SITE "W10" ; -LOCATE COMP "data_16" SITE "V10" ; -LOCATE COMP "data_17" SITE "AB9" ; -LOCATE COMP "data_18" SITE "AA9" ; -LOCATE COMP "data_19" SITE "Y9" ; -LOCATE COMP "data_20" SITE "W9" ; -LOCATE COMP "data_21" SITE "V9" ; -LOCATE COMP "data_22" SITE "AB8" ; -LOCATE COMP "data_23" SITE "AA8" ; -LOCATE COMP "data_24" SITE "Y8" ; -LOCATE COMP "data_25" SITE "W8" ; -LOCATE COMP "data_26" SITE "V8" ; -LOCATE COMP "data_27" SITE "AB7" ; -LOCATE COMP "data_28" SITE "AA7" ; -LOCATE COMP "data_29" SITE "Y7" ; -LOCATE COMP "data_30" SITE "W7" ; -LOCATE COMP "data_31" SITE "V7" ; -LOCATE COMP "serrx" SITE "M2" ; -LOCATE COMP "sertx" SITE "L1" ; -LOCATE COMP "emdio" SITE "K4" ; -LOCATE COMP "etx_clk" SITE "J1" ; -LOCATE COMP "erx_clk" SITE "K1" ; -LOCATE COMP "erxd_0" SITE "G1" ; -LOCATE COMP "erxd_1" SITE "G2" ; -LOCATE COMP "erxd_2" SITE "G3" ; -LOCATE COMP "erxd_3" SITE "F2" ; -LOCATE COMP "erx_dv" SITE "J4" ; -LOCATE COMP "erx_er" SITE "J5" ; -LOCATE COMP "erx_col" SITE "K2" ; -LOCATE COMP "erx_crs" SITE "K3" ; -LOCATE COMP "etxd_0" SITE "H1" ; -LOCATE COMP "etxd_1" SITE "H2" ; -LOCATE COMP "etxd_2" SITE "H3" ; -LOCATE COMP "etxd_3" SITE "H4" ; -LOCATE COMP "etx_en" SITE "J3" ; -LOCATE COMP "etx_er" SITE "J2" ; -LOCATE COMP "emdc" SITE "K5" ; -LOCATE COMP "hpiaddr_0" SITE "C10" ; -LOCATE COMP "hpiaddr_1" SITE "D10" ; -LOCATE COMP "hpicsn" SITE "E10" ; -LOCATE COMP "hpiwrn" SITE "F10" ; -LOCATE COMP "hpirdn" SITE "G10" ; -LOCATE COMP "hpidata_0" SITE "B7" ; -LOCATE COMP "hpidata_1" SITE "C7" ; -LOCATE COMP "hpidata_2" SITE "D7" ; -LOCATE COMP "hpidata_3" SITE "E7" ; -LOCATE COMP "hpidata_4" SITE "F7" ; -LOCATE COMP "hpidata_5" SITE "A8" ; -LOCATE COMP "hpidata_6" SITE "B8" ; -LOCATE COMP "hpidata_7" SITE "C8" ; -LOCATE COMP "hpidata_8" SITE "D8" ; -LOCATE COMP "hpidata_9" SITE "E8" ; -LOCATE COMP "hpidata_10" SITE "F8" ; -LOCATE COMP "hpidata_11" SITE "A9" ; -LOCATE COMP "hpidata_12" SITE "B9" ; -LOCATE COMP "hpidata_13" SITE "C9" ; -LOCATE COMP "hpidata_14" SITE "D9" ; -LOCATE COMP "hpidata_15" SITE "E9" ; -LOCATE COMP "hpiint" SITE "B11" ; -LOCATE COMP "dbg_equal" SITE "AB13" ; -LOCATE COMP "sample_clock" SITE "AB12" ; -LOCATE COMP "dac" SITE "U7" ; -LOCATE COMP "vga_vsync" SITE "A6" ; -LOCATE COMP "vga_hsync" SITE "A7" ; -LOCATE COMP "vga_rd_0" SITE "A3" ; -LOCATE COMP "vga_rd_1" SITE "B4" ; -LOCATE COMP "vga_gr_0" SITE "A4" ; -LOCATE COMP "vga_gr_1" SITE "B5" ; -LOCATE COMP "vga_bl_0" SITE "A5" ; -LOCATE COMP "vga_bl_1" SITE "B6" ; -# LOCATE COMP "dsw_0" SITE "R2" ; -LOCATE COMP "dsuen" SITE "R2" ; -LOCATE COMP "dsw_1" SITE "R3" ; -LOCATE COMP "dsw_2" SITE "R4" ; -LOCATE COMP "dsw_3" SITE "R5" ; -# LOCATE COMP "led_0" SITE "E3" ; -LOCATE COMP "dsuactn" SITE "E3" ; -LOCATE COMP "led_1" SITE "E4" ; -LOCATE COMP "led_2" SITE "E5" ; -LOCATE COMP "led_3" SITE "F4" ; -LOCATE COMP "led_4" SITE "F5" ; -LOCATE COMP "led_5" SITE "G4" ; -LOCATE COMP "led_6" SITE "G5" ; -LOCATE COMP "led_7" SITE "H5" ; -LOCATE COMP "sevensegment_0" SITE "M3" ; -LOCATE COMP "sevensegment_1" SITE "M4" ; -LOCATE COMP "sevensegment_2" SITE "M5" ; -LOCATE COMP "sevensegment_3" SITE "N1" ; -LOCATE COMP "sevensegment_4" SITE "N2" ; -LOCATE COMP "sevensegment_5" SITE "N3" ; -LOCATE COMP "sevensegment_6" SITE "N4" ; -LOCATE COMP "sevensegment_7" SITE "N5" ; -LOCATE COMP "sevensegment_8" SITE "P1" ; -LOCATE COMP "sevensegment_9" SITE "P2" ; -LOCATE COMP "lcd_enable" SITE "P5" ; -LOCATE COMP "lcd_regsel" SITE "P3" ; -LOCATE COMP "lcd_rw" SITE "P4" ; -LOCATE COMP "tst_col_0" SITE "U4" ; -LOCATE COMP "tst_col_1" SITE "U6" ; -LOCATE COMP "tst_col_2" SITE "V5" ; -LOCATE COMP "tst_row_0" SITE "T1" ; -LOCATE COMP "tst_row_1" SITE "T2" ; -LOCATE COMP "tst_row_2" SITE "T3" ; -LOCATE COMP "tst_row_3" SITE "R1" ; - -LOCATE COMP "ata_data_7" SITE "K22" ; -LOCATE COMP "ata_data_8" SITE "K21" ; -LOCATE COMP "ata_data_6" SITE "L22" ; -LOCATE COMP "ata_data_9" SITE "L21" ; -LOCATE COMP "ata_data_5" SITE "L20" ; -LOCATE COMP "ata_data_10" SITE "M22" ; -LOCATE COMP "ata_data_4" SITE "M21" ; -LOCATE COMP "ata_data_11" SITE "M20" ; -LOCATE COMP "ata_data_3" SITE "M19" ; -LOCATE COMP "ata_data_12" SITE "M18" ; -LOCATE COMP "ata_data_2" SITE "N22" ; -LOCATE COMP "ata_data_13" SITE "N21" ; -LOCATE COMP "ata_data_1" SITE "N20" ; -LOCATE COMP "ata_data_14" SITE "N19" ; -LOCATE COMP "ata_data_0" SITE "N18" ; -LOCATE COMP "ata_data_15" SITE "P22" ; -LOCATE COMP "ata_da_1" SITE "R17" ; -LOCATE COMP "ata_da_0" SITE "T22" ; -LOCATE COMP "ata_da_2" SITE "T18" ; -LOCATE COMP "ata_cs0" SITE "U22" ; -LOCATE COMP "ata_cs1" SITE "V20" ; -LOCATE COMP "ata_dior" SITE "P18" ; -LOCATE COMP "ata_diow" SITE "P20" ; -LOCATE COMP "ata_iordy" SITE "P19" ; -LOCATE COMP "ata_intrq" SITE "R19" ; - -LOCATE COMP "exp_datao_0" SITE "K22" ; -LOCATE COMP "exp_datai_0" SITE "K21" ; -LOCATE COMP "exp_datao_1" SITE "L22" ; -LOCATE COMP "exp_datai_1" SITE "L21" ; -LOCATE COMP "exp_datao_2" SITE "L20" ; -LOCATE COMP "exp_datai_2" SITE "M22" ; -LOCATE COMP "exp_datao_3" SITE "M21" ; -LOCATE COMP "exp_datai_3" SITE "M20" ; -LOCATE COMP "exp_datao_4" SITE "M19" ; -LOCATE COMP "exp_datai_4" SITE "M18" ; -LOCATE COMP "exp_datao_5" SITE "N22" ; -LOCATE COMP "exp_datai_5" SITE "N21" ; -LOCATE COMP "exp_datao_6" SITE "N20" ; -LOCATE COMP "exp_datai_6" SITE "N19" ; -LOCATE COMP "exp_datao_7" SITE "N18" ; -LOCATE COMP "exp_datai_7" SITE "P22" ; -LOCATE COMP "exp_datao_8" SITE "P21" ; -LOCATE COMP "exp_datai_8" SITE "P20" ; -LOCATE COMP "exp_datao_9" SITE "P18" ; -LOCATE COMP "exp_datai_9" SITE "P19" ; -LOCATE COMP "exp_datao_10" SITE "R22" ; -LOCATE COMP "exp_datai_10" SITE "R21" ; -LOCATE COMP "exp_datao_11" SITE "R19" ; -LOCATE COMP "exp_datai_11" SITE "R18" ; -LOCATE COMP "exp_datao_12" SITE "R17" ; -LOCATE COMP "exp_datai_12" SITE "T22" ; -LOCATE COMP "exp_datao_13" SITE "T18" ; -LOCATE COMP "exp_datai_13" SITE "U22" ; -LOCATE COMP "exp_datao_14" SITE "V19" ; -LOCATE COMP "exp_datai_14" SITE "W21" ; -LOCATE COMP "exp_datao_15" SITE "W20" ; -LOCATE COMP "exp_datai_15" SITE "W19" ; -LOCATE COMP "exp_datao_16" SITE "Y20" ; -LOCATE COMP "exp_datai_16" SITE "AA22" ; -LOCATE COMP "exp_datao_17" SITE "AA21" ; -LOCATE COMP "exp_datai_17" SITE "AB21" ; -LOCATE COMP "exp_datao_18" SITE "T17" ; -LOCATE COMP "exp_datai_18" SITE "T14" ; -LOCATE COMP "exp_datao_19" SITE "T13" ; -LOCATE COMP "exp_datai_19" SITE "U14" ; -LOCATE COMP "codec_cs" SITE "W4" ; -LOCATE COMP "codec_mclk" SITE "Y3" ; -LOCATE COMP "codec_mode" SITE "V4" ; -LOCATE COMP "codec_sclk" SITE "Y1" ; -LOCATE COMP "codec_sdin" SITE "AA2" ; -LOCATE COMP "codec_din" SITE "W2" ; -LOCATE COMP "codec_bclk" SITE "W1" ; -LOCATE COMP "codec_lrcin" SITE "AA1" ; -LOCATE COMP "codec_lrcout" SITE "Y2" ; -LOCATE COMP "dbg_codec_din" SITE "F11" ; -LOCATE COMP "dbg_codec_bclk" SITE "F12" ; -LOCATE COMP "dbg_codec_lrcin" SITE "F13" ; -LOCATE COMP "dbg_codec_lrcout" SITE "G13" ; -LOCATE COMP "dsubre" SITE "V6" ; -LOCATE COMP "oen" SITE "AA6" ; -#LOCATE COMP "wen" SITE "AB6" ; -LOCATE COMP "writen" SITE "AB6" ; -LOCATE COMP "rben_0" SITE "AB4" ; -LOCATE COMP "rben_1" SITE "AA4" ; -LOCATE COMP "rben_2" SITE "AB3" ; -LOCATE COMP "rben_3" SITE "AA3" ; -LOCATE COMP "ramsn" SITE "Y4" ; -LOCATE COMP "romwpn" SITE "AB5" ; -LOCATE COMP "romsn" SITE "Y5" ; -LOCATE COMP "romrstn" SITE "Y6" ; -LOCATE COMP "errorn" SITE "AA12" ; -LOCATE COMP "ddr_ad_0" SITE "D16" ; -LOCATE COMP "ddr_ad_1" SITE "C16" ; -LOCATE COMP "ddr_ad_10" SITE "E16" ; -LOCATE COMP "ddr_ad_11" SITE "C13" ; -LOCATE COMP "ddr_ad_12" SITE "B13" ; -LOCATE COMP "ddr_ad_13" SITE "C17" ; -LOCATE COMP "ddr_ad_2" SITE "E15" ; -LOCATE COMP "ddr_ad_3" SITE "D15" ; -LOCATE COMP "ddr_ad_4" SITE "C15" ; -LOCATE COMP "ddr_ad_5" SITE "E14" ; -LOCATE COMP "ddr_ad_6" SITE "D14" ; -LOCATE COMP "ddr_ad_7" SITE "C14" ; -LOCATE COMP "ddr_ad_8" SITE "E13" ; -LOCATE COMP "ddr_ad_9" SITE "D13" ; -LOCATE COMP "ddr_ba_0" SITE "E17" ; -LOCATE COMP "ddr_ba_1" SITE "D17" ; -LOCATE COMP "ddr_casb" SITE "A19" ; -LOCATE COMP "ddr_clk0" SITE "A12" ; -LOCATE COMP "ddr_clk0b" SITE "B12" ; -LOCATE COMP "ddr_clk1" SITE "B19" ; -LOCATE COMP "ddr_clk1b" SITE "A20" ; -LOCATE COMP "ddr_cke0" SITE "A13" ; -LOCATE COMP "ddr_cke1" SITE "C12" ; -LOCATE COMP "ddr_dm_0" SITE "B15" ; -LOCATE COMP "ddr_dm_1" SITE "C20" ; -LOCATE COMP "ddr_dm_2" SITE "H19" ; -LOCATE COMP "ddr_dm_3" SITE "K20" ; -LOCATE COMP "ddr_dq_0" SITE "A14" ; -LOCATE COMP "ddr_dq_1" SITE "B14" ; -LOCATE COMP "ddr_dq_10" SITE "C21" ; -LOCATE COMP "ddr_dq_11" SITE "C22" ; -LOCATE COMP "ddr_dq_12" SITE "E20" ; -LOCATE COMP "ddr_dq_13" SITE "E18" ; -LOCATE COMP "ddr_dq_14" SITE "F19" ; -LOCATE COMP "ddr_dq_15" SITE "F18" ; -LOCATE COMP "ddr_dq_16" SITE "D21" ; -LOCATE COMP "ddr_dq_17" SITE "F20" ; -LOCATE COMP "ddr_dq_18" SITE "G21" ; -LOCATE COMP "ddr_dq_19" SITE "G20" ; -LOCATE COMP "ddr_dq_2" SITE "A15" ; -LOCATE COMP "ddr_dq_20" SITE "H20" ; -LOCATE COMP "ddr_dq_21" SITE "J19" ; -LOCATE COMP "ddr_dq_22" SITE "J18" ; -LOCATE COMP "ddr_dq_23" SITE "H17" ; -LOCATE COMP "ddr_dq_24" SITE "F22" ; -LOCATE COMP "ddr_dq_25" SITE "G22" ; -LOCATE COMP "ddr_dq_26" SITE "H22" ; -LOCATE COMP "ddr_dq_27" SITE "H21" ; -LOCATE COMP "ddr_dq_28" SITE "K19" ; -LOCATE COMP "ddr_dq_29" SITE "K18" ; -LOCATE COMP "ddr_dq_3" SITE "B16" ; -LOCATE COMP "ddr_dq_30" SITE "L18" ; -LOCATE COMP "ddr_dq_31" SITE "L19" ; -LOCATE COMP "ddr_dq_4" SITE "A17" ; -LOCATE COMP "ddr_dq_5" SITE "B17" ; -LOCATE COMP "ddr_dq_6" SITE "A18" ; -LOCATE COMP "ddr_dq_7" SITE "B18" ; -LOCATE COMP "ddr_dq_8" SITE "B22" ; -LOCATE COMP "ddr_dq_9" SITE "B21" ; -LOCATE COMP "ddr_dqs_0" SITE "A16" ; -LOCATE COMP "ddr_dqs_1" SITE "D20" ; -LOCATE COMP "ddr_dqs_2" SITE "H18" ; -LOCATE COMP "ddr_dqs_3" SITE "J20" ; -LOCATE COMP "ddr_rasb" SITE "C18" ; -LOCATE COMP "ddr_cs0b" SITE "C19" ; -LOCATE COMP "ddr_cs1b" SITE "B20" ; -LOCATE COMP "ddr_web" SITE "D18" ; -SYSCONFIG PERSISTENT=OFF CONFIG_MODE=SLAVE_SERIAL DONE_OD=ON DONE_EX=OFF MCCLK_FREQ=2.5 CONFIG_SECURE=OFF WAKE_UP=21 WAKE_ON_LOCK=OFF WAKEUP_CLK=EXTERNAL COMPRESS_CONFIG=OFF INBUF=OFF ; -SCHEMATIC END ; -BLOCK RESETPATHS ; -BLOCK ASYNCPATHS ; -FREQUENCY PORT "clk" 25.000000 MHz ; -#USE SECONDARY NET clk ; -FREQUENCY PORT "etx_clk" 25.000000 MHz ; -FREQUENCY PORT "erx_clk" 25.000000 MHz ; -#FREQUENCY NET "clkgen0_clkin200" 200.000000 MHz ; -FREQUENCY NET "clkm" 50.000000 MHz ; -FREQUENCY NET "ddrclk0" 100.000000 MHz ; -#FREQUENCY NET "ddrclk90" 100.000000 MHz ; -FREQUENCY NET "ddrclk180" 100.000000 MHz ; -FREQUENCY NET "ddrclk270" 100.000000 MHz ; -#USE PRIMARY PURE NET clkm; -#USE PRIMARY PURE NET ddrclk0; -#USE PRIMARY PURE NET ddrclk180; -#USE PRIMARY PURE NET ddrclk270; -INPUT_SETUP ALLPORTS 5.000000 ns CLKPORT "clk" ; -CLOCK_TO_OUT ALLPORTS 20.000000 ns CLKPORT "clk" ; -BLOCK NET "resetn_c" ; -BLOCK NET "romrstn_c_r*" ; -#DEFINE PORT GROUP "ddrgroup" "ddr*"; -#IOBUF GROUP "ddrgroup" IO_TYPE=SSTL25D_II ; - -# Assign IO_TYPE Attributes -IOBUF PORT "ddr_dqs_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_dq_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_4" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_5" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_6" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_7" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_8" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_9" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_10" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_11" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_12" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_13" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_14" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_15" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_16" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_17" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_18" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_19" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_20" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_21" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_22" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_23" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_24" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_25" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_26" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_27" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_28" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_29" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_30" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_31" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_ba_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ba_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk0b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cke0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk1b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cke1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_rasb" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_casb" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_web" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_cs0b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cs1b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_ad_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_4" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_5" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_6" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_7" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_8" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_9" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_10" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_11" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_12" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_13" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_dm_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; - -INPUT_SETUP PORT "ddr_dq_0" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_1" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_2" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_3" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_4" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_5" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_6" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_7" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_8" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_9" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_10" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_11" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_12" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_13" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_14" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_15" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_16" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_17" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_18" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_19" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_20" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_21" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_22" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_23" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_24" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_25" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_26" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_27" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_28" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_29" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_30" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_31" 0.800000 ns CLKNET "ddrclk0" ; - -DEFINE BUS ddr_bus - NET "ddr_dq_in_0" - NET "ddr_dq_in_1" - NET "ddr_dq_in_2" - NET "ddr_dq_in_3" - NET "ddr_dq_in_4" - NET "ddr_dq_in_5" - NET "ddr_dq_in_6" - NET "ddr_dq_in_7" - NET "ddr_dq_in_8" - NET "ddr_dq_in_9" - NET "ddr_dq_in_10" - NET "ddr_dq_in_11" - NET "ddr_dq_in_12" - NET "ddr_dq_in_13" - NET "ddr_dq_in_14" - NET "ddr_dq_in_15" - NET "ddr_dq_in_16" - NET "ddr_dq_in_17" - NET "ddr_dq_in_18" - NET "ddr_dq_in_19" - NET "ddr_dq_in_20" - NET "ddr_dq_in_21" - NET "ddr_dq_in_22" - NET "ddr_dq_in_23" - NET "ddr_dq_in_24" - NET "ddr_dq_in_25" - NET "ddr_dq_in_26" - NET "ddr_dq_in_27" - NET "ddr_dq_in_28" - NET "ddr_dq_in_29" - NET "ddr_dq_in_30" - NET "ddr_dq_in_31"; - -#LOCATE BUS "ddr_bus" COL 65; - - diff --git a/boards/ge-hpe-mini-lattice2/Makefile.inc b/boards/ge-hpe-mini-lattice2/Makefile.inc deleted file mode 100644 index 8c8be1e0..00000000 --- a/boards/ge-hpe-mini-lattice2/Makefile.inc +++ /dev/null @@ -1,12 +0,0 @@ -TECHNOLOGY=LATTICE-ECP2 -PART=LFE2_50E -PACKAGE=F672C -ISPLIB=ep5g00p -ISPPACKAGE=FPBGA672 -SPEED=-6 -SYNFREQ=35 -PROMGENPAR= -exe $(ISPVM_DIR)/ispufw -op p -prj $(TOP) -if $(TOP).bit -oft -int -of $(TOP).mcs -MANUFACTURER=Lattice -MGCPART=$(PART) -MGCPACKAGE=$(ISPPACKAGE) -MGCTECHNOLOGY=LatticeECP-DSP diff --git a/boards/ge-hpe-mini-lattice2/default.sdc b/boards/ge-hpe-mini-lattice2/default.sdc deleted file mode 100644 index 17ecdaab..00000000 --- a/boards/ge-hpe-mini-lattice2/default.sdc +++ /dev/null @@ -1,54 +0,0 @@ -# Synplicity, Inc. constraint file -# Z:\LEON3SDE\ALTERA\grlib-eval-1.0.8-ge\boards\ge-hpe-mini-lattice2\default.sdc -# Written on Wed Aug 16 13:55:14 2006 -# by Synplify Pro, Synplify Pro 8.6.1 Scope Editor - -# -# Collections -# - -# -# Clocks -# -define_clock -name {clkgen0.clkm_inferred_clock} -freq 60.000 -clockgroup clkmgroup -define_clock -name {clkgen0.ddrclk0_inferred_clock} -freq 120.000 -clockgroup ddrclkgroup - -# -# Clock to Clock -# - -# -# Inputs/Outputs -# -define_output_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {clk:r} -define_input_delay -default 4.00 -improve 0.00 -route 0.00 -ref {clkgen0.ddrclk0_inferred_clock:r} - -# -# Registers -# - -# -# Multicycle Path -# - -# -# False Path -# - -# -# Path Delay -# - -# -# Attributes -# -define_global_attribute syn_useioff {1} -define_global_attribute syn_netlist_hierarchy {1} - -# -# I/O standards -# - -# -# Other Constraints -# diff --git a/boards/ge-hpe-mini-lattice2/default.ut b/boards/ge-hpe-mini-lattice2/default.ut deleted file mode 100644 index 8d055524..00000000 --- a/boards/ge-hpe-mini-lattice2/default.ut +++ /dev/null @@ -1,6 +0,0 @@ --g CfgMode:Disable --g ReadBack:SRAM --g RamCfg:Reset --g SYNSRC:No --g PllSET:None - diff --git a/boards/ge-hpe-mini-lattice2/leon3mini.lpf b/boards/ge-hpe-mini-lattice2/leon3mini.lpf deleted file mode 100644 index b7359f52..00000000 --- a/boards/ge-hpe-mini-lattice2/leon3mini.lpf +++ /dev/null @@ -1,74 +0,0 @@ -# Assign IO_TYPE Attributes -IOBUF PORT "ddr_dqs_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_dq_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_4" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_5" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_6" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_7" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_8" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_9" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_10" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_11" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_12" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_13" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_14" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_15" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_16" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_17" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_18" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_19" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_20" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_21" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_22" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_23" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_24" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_25" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_26" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_27" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_28" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_29" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_30" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_31" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_ba_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ba_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk0b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cke0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk1b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cke1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_rasb" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_casb" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_web" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_cs0b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cs1b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_ad_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_4" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_5" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_6" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_7" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_8" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_9" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_10" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_11" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_12" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_13" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_dm_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; - diff --git a/boards/ge-hpe-mini-lattice2/leon3mini.prf b/boards/ge-hpe-mini-lattice2/leon3mini.prf deleted file mode 100644 index 307da87a..00000000 --- a/boards/ge-hpe-mini-lattice2/leon3mini.prf +++ /dev/null @@ -1,448 +0,0 @@ -SCHEMATIC START ; -LOCATE COMP "clk" SITE "A10" ; -LOCATE COMP "resetn" SITE "H6" ; -LOCATE COMP "resoutn" SITE "B3" ; -LOCATE COMP "address_2" SITE "AB20" ; -LOCATE COMP "address_3" SITE "AA20" ; -LOCATE COMP "address_4" SITE "AB19" ; -LOCATE COMP "address_5" SITE "AA19" ; -LOCATE COMP "address_6" SITE "Y19" ; -LOCATE COMP "address_7" SITE "AB18" ; -LOCATE COMP "address_8" SITE "AA18" ; -LOCATE COMP "address_9" SITE "Y18" ; -LOCATE COMP "address_10" SITE "W18" ; -LOCATE COMP "address_11" SITE "AB17" ; -LOCATE COMP "address_12" SITE "AA17" ; -LOCATE COMP "address_13" SITE "Y17" ; -LOCATE COMP "address_14" SITE "W17" ; -LOCATE COMP "address_15" SITE "V17" ; -LOCATE COMP "address_16" SITE "U17" ; -LOCATE COMP "address_17" SITE "AB16" ; -LOCATE COMP "address_18" SITE "AA16" ; -LOCATE COMP "address_19" SITE "Y16" ; -LOCATE COMP "address_20" SITE "W16" ; -LOCATE COMP "address_21" SITE "V16" ; -LOCATE COMP "address_22" SITE "U16" ; -LOCATE COMP "address_23" SITE "AB15" ; -LOCATE COMP "address_24" SITE "AA15" ; -LOCATE COMP "data_0" SITE "Y15" ; -LOCATE COMP "data_1" SITE "W15" ; -LOCATE COMP "data_2" SITE "V15" ; -LOCATE COMP "data_3" SITE "U15" ; -LOCATE COMP "data_4" SITE "AB14" ; -LOCATE COMP "data_5" SITE "AA14" ; -LOCATE COMP "data_6" SITE "Y14" ; -LOCATE COMP "data_7" SITE "W14" ; -LOCATE COMP "data_8" SITE "AA13" ; -LOCATE COMP "data_9" SITE "Y13" ; -LOCATE COMP "data_10" SITE "AA11" ; -LOCATE COMP "data_11" SITE "Y11" ; -LOCATE COMP "data_12" SITE "W11" ; -LOCATE COMP "data_13" SITE "AA10" ; -LOCATE COMP "data_14" SITE "Y10" ; -LOCATE COMP "data_15" SITE "W10" ; -LOCATE COMP "data_16" SITE "V10" ; -LOCATE COMP "data_17" SITE "AB9" ; -LOCATE COMP "data_18" SITE "AA9" ; -LOCATE COMP "data_19" SITE "Y9" ; -LOCATE COMP "data_20" SITE "W9" ; -LOCATE COMP "data_21" SITE "V9" ; -LOCATE COMP "data_22" SITE "AB8" ; -LOCATE COMP "data_23" SITE "AA8" ; -LOCATE COMP "data_24" SITE "Y8" ; -LOCATE COMP "data_25" SITE "W8" ; -LOCATE COMP "data_26" SITE "V8" ; -LOCATE COMP "data_27" SITE "AB7" ; -LOCATE COMP "data_28" SITE "AA7" ; -LOCATE COMP "data_29" SITE "Y7" ; -LOCATE COMP "data_30" SITE "W7" ; -LOCATE COMP "data_31" SITE "V7" ; -LOCATE COMP "serrx" SITE "M2" ; -LOCATE COMP "sertx" SITE "L1" ; -LOCATE COMP "emdio" SITE "K4" ; -LOCATE COMP "etx_clk" SITE "J1" ; -LOCATE COMP "erx_clk" SITE "K1" ; -LOCATE COMP "erxd_0" SITE "G1" ; -LOCATE COMP "erxd_1" SITE "G2" ; -LOCATE COMP "erxd_2" SITE "G3" ; -LOCATE COMP "erxd_3" SITE "F2" ; -LOCATE COMP "erx_dv" SITE "J4" ; -LOCATE COMP "erx_er" SITE "J5" ; -LOCATE COMP "erx_col" SITE "K2" ; -LOCATE COMP "erx_crs" SITE "K3" ; -LOCATE COMP "etxd_0" SITE "H1" ; -LOCATE COMP "etxd_1" SITE "H2" ; -LOCATE COMP "etxd_2" SITE "H3" ; -LOCATE COMP "etxd_3" SITE "H4" ; -LOCATE COMP "etx_en" SITE "J3" ; -LOCATE COMP "etx_er" SITE "J2" ; -LOCATE COMP "emdc" SITE "K5" ; -LOCATE COMP "hpiaddr_0" SITE "C10" ; -LOCATE COMP "hpiaddr_1" SITE "D10" ; -LOCATE COMP "hpicsn" SITE "E10" ; -LOCATE COMP "hpiwrn" SITE "F10" ; -LOCATE COMP "hpirdn" SITE "G10" ; -LOCATE COMP "hpidata_0" SITE "B7" ; -LOCATE COMP "hpidata_1" SITE "C7" ; -LOCATE COMP "hpidata_2" SITE "D7" ; -LOCATE COMP "hpidata_3" SITE "E7" ; -LOCATE COMP "hpidata_4" SITE "F7" ; -LOCATE COMP "hpidata_5" SITE "A8" ; -LOCATE COMP "hpidata_6" SITE "B8" ; -LOCATE COMP "hpidata_7" SITE "C8" ; -LOCATE COMP "hpidata_8" SITE "D8" ; -LOCATE COMP "hpidata_9" SITE "E8" ; -LOCATE COMP "hpidata_10" SITE "F8" ; -LOCATE COMP "hpidata_11" SITE "A9" ; -LOCATE COMP "hpidata_12" SITE "B9" ; -LOCATE COMP "hpidata_13" SITE "C9" ; -LOCATE COMP "hpidata_14" SITE "D9" ; -LOCATE COMP "hpidata_15" SITE "E9" ; -LOCATE COMP "hpiint" SITE "B11" ; -LOCATE COMP "dbg_equal" SITE "AB13" ; -LOCATE COMP "sample_clock" SITE "AB12" ; -LOCATE COMP "dac" SITE "U7" ; -LOCATE COMP "vga_vsync" SITE "A6" ; -LOCATE COMP "vga_hsync" SITE "A7" ; -LOCATE COMP "vga_rd_0" SITE "A3" ; -LOCATE COMP "vga_rd_1" SITE "B4" ; -LOCATE COMP "vga_gr_0" SITE "A4" ; -LOCATE COMP "vga_gr_1" SITE "B5" ; -LOCATE COMP "vga_bl_0" SITE "A5" ; -LOCATE COMP "vga_bl_1" SITE "B6" ; -# LOCATE COMP "dsw_0" SITE "R2" ; -LOCATE COMP "dsuen" SITE "R2" ; -LOCATE COMP "dsw_1" SITE "R3" ; -LOCATE COMP "dsw_2" SITE "R4" ; -LOCATE COMP "dsw_3" SITE "R5" ; -# LOCATE COMP "led_0" SITE "E3" ; -LOCATE COMP "dsuactn" SITE "E3" ; -LOCATE COMP "led_1" SITE "E4" ; -LOCATE COMP "led_2" SITE "E5" ; -LOCATE COMP "led_3" SITE "F4" ; -LOCATE COMP "led_4" SITE "F5" ; -LOCATE COMP "led_5" SITE "G4" ; -LOCATE COMP "led_6" SITE "G5" ; -LOCATE COMP "led_7" SITE "H5" ; -LOCATE COMP "sevensegment_0" SITE "M3" ; -LOCATE COMP "sevensegment_1" SITE "M4" ; -LOCATE COMP "sevensegment_2" SITE "M5" ; -LOCATE COMP "sevensegment_3" SITE "N1" ; -LOCATE COMP "sevensegment_4" SITE "N2" ; -LOCATE COMP "sevensegment_5" SITE "N3" ; -LOCATE COMP "sevensegment_6" SITE "N4" ; -LOCATE COMP "sevensegment_7" SITE "N5" ; -LOCATE COMP "sevensegment_8" SITE "P1" ; -LOCATE COMP "sevensegment_9" SITE "P2" ; -LOCATE COMP "lcd_enable" SITE "P5" ; -LOCATE COMP "lcd_regsel" SITE "P3" ; -LOCATE COMP "lcd_rw" SITE "P4" ; -LOCATE COMP "tst_col_0" SITE "U4" ; -LOCATE COMP "tst_col_1" SITE "U6" ; -LOCATE COMP "tst_col_2" SITE "V5" ; -LOCATE COMP "tst_row_0" SITE "T1" ; -LOCATE COMP "tst_row_1" SITE "T2" ; -LOCATE COMP "tst_row_2" SITE "T3" ; -LOCATE COMP "tst_row_3" SITE "R1" ; -LOCATE COMP "exp_datao_0" SITE "K22" ; -LOCATE COMP "exp_datai_0" SITE "K21" ; -LOCATE COMP "exp_datao_1" SITE "L22" ; -LOCATE COMP "exp_datai_1" SITE "L21" ; -LOCATE COMP "exp_datao_2" SITE "L20" ; -LOCATE COMP "exp_datai_2" SITE "M22" ; -LOCATE COMP "exp_datao_3" SITE "M21" ; -LOCATE COMP "exp_datai_3" SITE "M20" ; -LOCATE COMP "exp_datao_4" SITE "M19" ; -LOCATE COMP "exp_datai_4" SITE "M18" ; -LOCATE COMP "exp_datao_5" SITE "N22" ; -LOCATE COMP "exp_datai_5" SITE "N21" ; -LOCATE COMP "exp_datao_6" SITE "N20" ; -LOCATE COMP "exp_datai_6" SITE "N19" ; -LOCATE COMP "exp_datao_7" SITE "N18" ; -LOCATE COMP "exp_datai_7" SITE "P22" ; -LOCATE COMP "exp_datao_8" SITE "P21" ; -LOCATE COMP "exp_datai_8" SITE "P20" ; -LOCATE COMP "exp_datao_9" SITE "P18" ; -LOCATE COMP "exp_datai_9" SITE "P19" ; -LOCATE COMP "exp_datao_10" SITE "R22" ; -LOCATE COMP "exp_datai_10" SITE "R21" ; -LOCATE COMP "exp_datao_11" SITE "R19" ; -LOCATE COMP "exp_datai_11" SITE "R18" ; -LOCATE COMP "exp_datao_12" SITE "R17" ; -LOCATE COMP "exp_datai_12" SITE "T22" ; -LOCATE COMP "exp_datao_13" SITE "T18" ; -LOCATE COMP "exp_datai_13" SITE "U22" ; -LOCATE COMP "exp_datao_14" SITE "V19" ; -LOCATE COMP "exp_datai_14" SITE "W21" ; -LOCATE COMP "exp_datao_15" SITE "W20" ; -LOCATE COMP "exp_datai_15" SITE "W19" ; -LOCATE COMP "exp_datao_16" SITE "Y20" ; -LOCATE COMP "exp_datai_16" SITE "AA22" ; -LOCATE COMP "exp_datao_17" SITE "AA21" ; -LOCATE COMP "exp_datai_17" SITE "AB21" ; -LOCATE COMP "exp_datao_18" SITE "T17" ; -LOCATE COMP "exp_datai_18" SITE "T14" ; -LOCATE COMP "exp_datao_19" SITE "T13" ; -LOCATE COMP "exp_datai_19" SITE "U14" ; -LOCATE COMP "codec_cs" SITE "W4" ; -LOCATE COMP "codec_mclk" SITE "Y3" ; -LOCATE COMP "codec_mode" SITE "V4" ; -LOCATE COMP "codec_sclk" SITE "Y1" ; -LOCATE COMP "codec_sdin" SITE "AA2" ; -LOCATE COMP "codec_din" SITE "W2" ; -LOCATE COMP "codec_bclk" SITE "W1" ; -LOCATE COMP "codec_lrcin" SITE "AA1" ; -LOCATE COMP "codec_lrcout" SITE "Y2" ; -LOCATE COMP "dbg_codec_din" SITE "F11" ; -LOCATE COMP "dbg_codec_bclk" SITE "F12" ; -LOCATE COMP "dbg_codec_lrcin" SITE "F13" ; -LOCATE COMP "dbg_codec_lrcout" SITE "G13" ; -LOCATE COMP "dsubre" SITE "V6" ; -LOCATE COMP "oen" SITE "AA6" ; -#LOCATE COMP "wen" SITE "AB6" ; -LOCATE COMP "writen" SITE "AB6" ; -LOCATE COMP "rben_0" SITE "AB4" ; -LOCATE COMP "rben_1" SITE "AA4" ; -LOCATE COMP "rben_2" SITE "AB3" ; -LOCATE COMP "rben_3" SITE "AA3" ; -LOCATE COMP "ramsn" SITE "Y4" ; -LOCATE COMP "romwpn" SITE "AB5" ; -LOCATE COMP "romsn" SITE "Y5" ; -LOCATE COMP "romrstn" SITE "Y6" ; -LOCATE COMP "errorn" SITE "AA12" ; -LOCATE COMP "ddr_ad_0" SITE "D16" ; -LOCATE COMP "ddr_ad_1" SITE "C16" ; -LOCATE COMP "ddr_ad_10" SITE "E16" ; -LOCATE COMP "ddr_ad_11" SITE "C13" ; -LOCATE COMP "ddr_ad_12" SITE "B13" ; -LOCATE COMP "ddr_ad_13" SITE "C17" ; -LOCATE COMP "ddr_ad_2" SITE "E15" ; -LOCATE COMP "ddr_ad_3" SITE "D15" ; -LOCATE COMP "ddr_ad_4" SITE "C15" ; -LOCATE COMP "ddr_ad_5" SITE "E14" ; -LOCATE COMP "ddr_ad_6" SITE "D14" ; -LOCATE COMP "ddr_ad_7" SITE "C14" ; -LOCATE COMP "ddr_ad_8" SITE "E13" ; -LOCATE COMP "ddr_ad_9" SITE "D13" ; -LOCATE COMP "ddr_ba_0" SITE "E17" ; -LOCATE COMP "ddr_ba_1" SITE "D17" ; -LOCATE COMP "ddr_casb" SITE "A19" ; -LOCATE COMP "ddr_clk0" SITE "A12" ; -LOCATE COMP "ddr_clk0b" SITE "B12" ; -LOCATE COMP "ddr_clk1" SITE "B19" ; -LOCATE COMP "ddr_clk1b" SITE "A20" ; -LOCATE COMP "ddr_cke0" SITE "A13" ; -LOCATE COMP "ddr_cke1" SITE "C12" ; -LOCATE COMP "ddr_dm_0" SITE "B15" ; -LOCATE COMP "ddr_dm_1" SITE "C20" ; -LOCATE COMP "ddr_dm_2" SITE "H19" ; -LOCATE COMP "ddr_dm_3" SITE "K20" ; -LOCATE COMP "ddr_dq_0" SITE "A14" ; -LOCATE COMP "ddr_dq_1" SITE "B14" ; -LOCATE COMP "ddr_dq_10" SITE "C21" ; -LOCATE COMP "ddr_dq_11" SITE "C22" ; -LOCATE COMP "ddr_dq_12" SITE "E20" ; -LOCATE COMP "ddr_dq_13" SITE "E18" ; -LOCATE COMP "ddr_dq_14" SITE "F19" ; -LOCATE COMP "ddr_dq_15" SITE "F18" ; -LOCATE COMP "ddr_dq_16" SITE "D21" ; -LOCATE COMP "ddr_dq_17" SITE "F20" ; -LOCATE COMP "ddr_dq_18" SITE "G21" ; -LOCATE COMP "ddr_dq_19" SITE "G20" ; -LOCATE COMP "ddr_dq_2" SITE "A15" ; -LOCATE COMP "ddr_dq_20" SITE "H20" ; -LOCATE COMP "ddr_dq_21" SITE "J19" ; -LOCATE COMP "ddr_dq_22" SITE "J18" ; -LOCATE COMP "ddr_dq_23" SITE "H17" ; -LOCATE COMP "ddr_dq_24" SITE "F22" ; -LOCATE COMP "ddr_dq_25" SITE "G22" ; -LOCATE COMP "ddr_dq_26" SITE "H22" ; -LOCATE COMP "ddr_dq_27" SITE "H21" ; -LOCATE COMP "ddr_dq_28" SITE "K19" ; -LOCATE COMP "ddr_dq_29" SITE "K18" ; -LOCATE COMP "ddr_dq_3" SITE "B16" ; -LOCATE COMP "ddr_dq_30" SITE "L18" ; -LOCATE COMP "ddr_dq_31" SITE "L19" ; -LOCATE COMP "ddr_dq_4" SITE "A17" ; -LOCATE COMP "ddr_dq_5" SITE "B17" ; -LOCATE COMP "ddr_dq_6" SITE "A18" ; -LOCATE COMP "ddr_dq_7" SITE "B18" ; -LOCATE COMP "ddr_dq_8" SITE "B22" ; -LOCATE COMP "ddr_dq_9" SITE "B21" ; -LOCATE COMP "ddr_dqs_0" SITE "A16" ; -LOCATE COMP "ddr_dqs_1" SITE "D20" ; -LOCATE COMP "ddr_dqs_2" SITE "H18" ; -LOCATE COMP "ddr_dqs_3" SITE "J20" ; -LOCATE COMP "ddr_rasb" SITE "C18" ; -LOCATE COMP "ddr_cs0b" SITE "C19" ; -LOCATE COMP "ddr_cs1b" SITE "B20" ; -LOCATE COMP "ddr_web" SITE "D18" ; -SYSCONFIG PERSISTENT=OFF CONFIG_MODE=SLAVE_SERIAL DONE_OD=ON DONE_EX=OFF MCCLK_FREQ=2.5 CONFIG_SECURE=OFF WAKE_UP=21 WAKE_ON_LOCK=OFF WAKEUP_CLK=EXTERNAL COMPRESS_CONFIG=OFF INBUF=OFF ; -SCHEMATIC END ; -BLOCK RESETPATHS ; -BLOCK ASYNCPATHS ; -FREQUENCY PORT "clk" 25.000000 MHz ; -#USE SECONDARY NET clk ; -FREQUENCY PORT "etx_clk" 25.000000 MHz ; -FREQUENCY PORT "erx_clk" 25.000000 MHz ; -#FREQUENCY NET "clkgen0_clkin200" 200.000000 MHz ; -FREQUENCY NET "clkm" 50.000000 MHz ; -FREQUENCY NET "ddrclk0" 100.000000 MHz ; -#FREQUENCY NET "ddrclk90" 100.000000 MHz ; -FREQUENCY NET "ddrclk180" 100.000000 MHz ; -FREQUENCY NET "ddrclk270" 100.000000 MHz ; -#USE PRIMARY PURE NET clkm; -#USE PRIMARY PURE NET ddrclk0; -#USE PRIMARY PURE NET ddrclk180; -#USE PRIMARY PURE NET ddrclk270; -INPUT_SETUP ALLPORTS 5.000000 ns CLKPORT "clk" ; -CLOCK_TO_OUT ALLPORTS 20.000000 ns CLKPORT "clk" ; -BLOCK NET "resetn_c" ; -BLOCK NET "romrstn_c_r*" ; -#DEFINE PORT GROUP "ddrgroup" "ddr*"; -#IOBUF GROUP "ddrgroup" IO_TYPE=SSTL25D_II ; - -# Assign IO_TYPE Attributes -IOBUF PORT "ddr_dqs_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dqs_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_dq_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_4" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_5" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_6" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_7" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_8" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_9" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_10" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_11" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_12" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_13" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_14" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_15" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_16" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_17" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_18" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_19" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_20" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_21" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_22" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_23" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_24" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_25" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_26" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_27" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_28" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_29" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_30" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dq_31" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_ba_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ba_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk0b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cke0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_clk1b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cke1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_rasb" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_casb" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_web" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_cs0b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_cs1b" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_ad_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_4" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_5" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_6" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_7" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_8" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_9" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_10" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_11" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_12" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_ad_13" IO_TYPE=SSTL25_II PULLMODE=NONE ; -# -IOBUF PORT "ddr_dm_0" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_1" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_2" IO_TYPE=SSTL25_II PULLMODE=NONE ; -IOBUF PORT "ddr_dm_3" IO_TYPE=SSTL25_II PULLMODE=NONE ; - -INPUT_SETUP PORT "ddr_dq_0" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_1" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_2" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_3" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_4" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_5" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_6" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_7" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_8" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_9" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_10" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_11" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_12" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_13" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_14" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_15" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_16" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_17" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_18" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_19" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_20" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_21" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_22" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_23" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_24" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_25" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_26" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_27" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_28" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_29" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_30" 0.800000 ns CLKNET "ddrclk0" ; -INPUT_SETUP PORT "ddr_dq_31" 0.800000 ns CLKNET "ddrclk0" ; - -DEFINE BUS ddr_bus - NET "ddr_dq_in_0" - NET "ddr_dq_in_1" - NET "ddr_dq_in_2" - NET "ddr_dq_in_3" - NET "ddr_dq_in_4" - NET "ddr_dq_in_5" - NET "ddr_dq_in_6" - NET "ddr_dq_in_7" - NET "ddr_dq_in_8" - NET "ddr_dq_in_9" - NET "ddr_dq_in_10" - NET "ddr_dq_in_11" - NET "ddr_dq_in_12" - NET "ddr_dq_in_13" - NET "ddr_dq_in_14" - NET "ddr_dq_in_15" - NET "ddr_dq_in_16" - NET "ddr_dq_in_17" - NET "ddr_dq_in_18" - NET "ddr_dq_in_19" - NET "ddr_dq_in_20" - NET "ddr_dq_in_21" - NET "ddr_dq_in_22" - NET "ddr_dq_in_23" - NET "ddr_dq_in_24" - NET "ddr_dq_in_25" - NET "ddr_dq_in_26" - NET "ddr_dq_in_27" - NET "ddr_dq_in_28" - NET "ddr_dq_in_29" - NET "ddr_dq_in_30" - NET "ddr_dq_in_31"; - -#LOCATE BUS "ddr_bus" COL 65; - - diff --git a/boards/ge-hpe-mini/Makefile.inc b/boards/ge-hpe-mini/Makefile.inc deleted file mode 100755 index 3a090363..00000000 --- a/boards/ge-hpe-mini/Makefile.inc +++ /dev/null @@ -1,5 +0,0 @@ -TECHNOLOGY=CYCLONEII -PART=EP2C35 -PACKAGE=FC484 -SPEED=-8 -SYNFREQ=60 diff --git a/boards/ge-hpe-mini/default.sdc b/boards/ge-hpe-mini/default.sdc deleted file mode 100755 index a5075195..00000000 --- a/boards/ge-hpe-mini/default.sdc +++ /dev/null @@ -1,44 +0,0 @@ -# -# Clocks -# -define_clock -name {clk} -freq 60.000 -clockgroup default_clkgroup -define_clock -name {etx_clk} -freq 40.000 -clockgroup etx_clkgroup -define_clock -name {erx_clk} -freq 40.000 -clockgroup erx_clkgroup - -# -# Clock to Clock -# - -# -# Inputs/Outputs -# -define_output_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {clk:r} -define_input_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {clk:r} -# -# Registers -# - -# -# Multicycle Path -# - -# -# False Path -# - -# -# Delay Path -# - -# -# Attributes -# -define_global_attribute syn_useioff {1} - -# -# Compile Points -# - -# -# Other Constraints -# diff --git a/boards/ge-hpe-mini/leon3mini.qsf b/boards/ge-hpe-mini/leon3mini.qsf deleted file mode 100755 index 623d47d0..00000000 --- a/boards/ge-hpe-mini/leon3mini.qsf +++ /dev/null @@ -1,489 +0,0 @@ -# Pin & Location Assignments -# ========================== -set_location_assignment PIN_Y16 -to address[2] -comment A0 -set_location_assignment PIN_AB16 -to address[3] -comment A1 -set_location_assignment PIN_W15 -to address[4] -comment A2 -set_location_assignment PIN_AA16 -to address[5] -comment A3 -set_location_assignment PIN_V15 -to address[6] -comment A4 -set_location_assignment PIN_AA15 -to address[7] -comment A5 -set_location_assignment PIN_W8 -to address[8] -comment A6 -set_location_assignment PIN_AA8 -to address[9] -comment A7 -set_location_assignment PIN_AB8 -to address[10] -comment A8 -set_location_assignment PIN_Y7 -to address[11] -comment A9 -set_location_assignment PIN_AB7 -to address[12] -comment A10 -set_location_assignment PIN_Y6 -to address[13] -comment A111 -set_location_assignment PIN_AA11 -to address[14] -comment A12 -set_location_assignment PIN_Y10 -to address[15] -comment A13 -set_location_assignment PIN_M1 -to clk -comment "CLK_FPGA" -set_location_assignment PIN_AA20 -to data[0] -comment SDRAM_D0 -set_location_assignment PIN_W14 -to data[10] -set_location_assignment PIN_Y14 -to data[11] -set_location_assignment PIN_AA14 -to data[12] -set_location_assignment PIN_AB14 -to data[13] -set_location_assignment PIN_U13 -to data[14] -set_location_assignment PIN_Y13 -to data[15] -set_location_assignment PIN_AA10 -to data[16] -set_location_assignment PIN_AB10 -to data[17] -set_location_assignment PIN_V9 -to data[18] -set_location_assignment PIN_W9 -to data[19] -set_location_assignment PIN_AB20 -to data[1] -set_location_assignment PIN_Y9 -to data[20] -set_location_assignment PIN_AA9 -to data[21] -set_location_assignment PIN_AB9 -to data[22] -set_location_assignment PIN_V8 -to data[23] -set_location_assignment PIN_Y5 -to data[24] -set_location_assignment PIN_AA5 -to data[25] -set_location_assignment PIN_AB5 -to data[26] -set_location_assignment PIN_Y4 -to data[27] -set_location_assignment PIN_AA4 -to data[28] -set_location_assignment PIN_AB4 -to data[29] -set_location_assignment PIN_AA19 -to data[2] -set_location_assignment PIN_Y3 -to data[30] -set_location_assignment PIN_AB3 -to data[31] -comment SDRAM_D31 -set_location_assignment PIN_AB19 -to data[3] -set_location_assignment PIN_AA18 -to data[4] -set_location_assignment PIN_AB18 -to data[5] -set_location_assignment PIN_Y17 -to data[6] -set_location_assignment PIN_AA17 -to data[7] -set_location_assignment PIN_AB15 -to data[8] -set_location_assignment PIN_V14 -to data[9] -set_location_assignment PIN_W4 -to dsuactn -comment "LED1#" -set_location_assignment PIN_P5 -to dsubre -comment TST_STEP -set_location_assignment PIN_M5 -to dsuen -comment DSW0 -set_location_assignment PIN_D1 -to rxd1 -comment RS_RXD_TTL -disable -set_location_assignment PIN_C1 -to txd1 -comment RS_TXD_TTL -disable -set_location_assignment PIN_D1 -to dsurx -comment RS_RXD_TTL -disable -set_location_assignment PIN_C1 -to dsutx -comment RS_TXD_TTL -disable -set_location_assignment PIN_D1 -to serrx -comment RS_RXD_TTL -set_location_assignment PIN_C1 -to sertx -comment RS_TXD_TTL -set_location_assignment PIN_M6 -to sersrcsel -comment DSW1 -set_location_assignment PIN_J1 -to emdc -comment ETH_MDC -set_location_assignment PIN_J2 -to emdio -comment ETH_MDIO -set_location_assignment PIN_W5 -to errorn -comment "LED0#" -set_location_assignment PIN_J4 -to erxd[0] -comment ETH_RXD0 -set_location_assignment PIN_H3 -to erxd[1] -comment ETH_RXD1 -set_location_assignment PIN_H2 -to erxd[2] -comment ETH_RXD2 -set_location_assignment PIN_H1 -to erxd[3] -comment ETH_RXD3 -set_location_assignment PIN_L2 -to erx_clk -comment ETH_RXCLK -set_location_assignment PIN_F1 -to erx_col -comment ETH_COL -set_location_assignment PIN_F2 -to erx_crs -comment ETH_CRS -set_location_assignment PIN_H4 -to erx_dv -comment ETH_RXDV -set_location_assignment PIN_H5 -to erx_er -comment ETH_RXER -set_location_assignment PIN_G5 -to etxd[0] -comment ETH_TXD0 -set_location_assignment PIN_G6 -to etxd[1] -comment ETH_TXD1 -set_location_assignment PIN_F3 -to etxd[2] -comment ETH_TXD2 -set_location_assignment PIN_F4 -to etxd[3] -comment ETH_TXD3 -set_location_assignment PIN_L1 -to etx_clk -comment ETH_TXCLK -set_location_assignment PIN_G3 -to etx_en -comment ETH_TXEN -set_location_assignment PIN_H6 -to etx_er -comment ETH_TXER -set_location_assignment PIN_B3 -to resetn -comment "HPE_RESET#" -set_location_assignment PIN_W7 -to sdba[0] -comment SDRAM_BA0 -set_location_assignment PIN_AA7 -to sdba[1] -comment SDRAM_BA1 -set_location_assignment PIN_AA12 -to sdcasn -comment "SDRAM_CAS#" -set_location_assignment PIN_AA13 -to sdcke[0] -comment SDRAM_CKE0 -set_location_assignment PIN_V11 -to sdcke[1] -comment SDRAM_CKE1 -set_location_assignment PIN_U4 -to sdclk -comment SDRAM_PLL1_OUT -set_location_assignment PIN_W11 -to sdcsn[0] -comment "SDRAM_CS0#" -set_location_assignment PIN_AB11 -to sdcsn[1] -comment "SDRAM_CS1#" -set_location_assignment PIN_AB17 -to sddqm[0] -comment SDRAM_DQM0 -set_location_assignment PIN_W16 -to sddqm[1] -comment SDRAM_DQM1 -set_location_assignment PIN_AA6 -to sddqm[2] -comment SDRAM_DQM2 -set_location_assignment PIN_AB6 -to sddqm[3] -comment SDRAM_DQM3 -set_location_assignment PIN_AB13 -to sdrasn -comment "SDRAM_RAS#" -set_location_assignment PIN_AB12 -to sdwen -comment "SDRAM_WE#" -set_location_assignment PIN_E1 -to resoutn -comment "HPE_RESOUT#" -set_location_assignment PIN_Y22 -to dac -comment "DAC_DIG" - -# ATA singals -set_location_assignment PIN_N21 -to ata_data[0] -set_location_assignment PIN_M19 -to ata_data[1] -set_location_assignment PIN_L19 -to ata_data[2] -set_location_assignment PIN_K22 -to ata_data[3] -set_location_assignment PIN_K20 -to ata_data[4] -set_location_assignment PIN_J21 -to ata_data[5] -set_location_assignment PIN_J19 -to ata_data[6] -set_location_assignment PIN_J17 -to ata_data[7] -set_location_assignment PIN_J18 -to ata_data[8] -set_location_assignment PIN_J20 -to ata_data[9] -set_location_assignment PIN_J22 -to ata_data[10] -set_location_assignment PIN_K21 -to ata_data[11] -set_location_assignment PIN_L18 -to ata_data[12] -set_location_assignment PIN_M18 -to ata_data[13] -set_location_assignment PIN_N15 -to ata_data[14] -set_location_assignment PIN_N22 -to ata_data[15] -set_location_assignment PIN_T21 -to ata_da[0] -set_location_assignment PIN_R22 -to ata_da[1] -set_location_assignment PIN_T22 -to ata_da[2] -set_location_assignment PIN_U19 -to ata_cs0 -set_location_assignment PIN_J15 -to ata_cs1 -set_location_assignment PIN_P18 -to ata_dior -set_location_assignment PIN_P17 -to ata_diow -set_location_assignment PIN_R17 -to ata_iordy -set_location_assignment PIN_R20 -to ata_intrq -set_location_assignment PIN_P15 -to ata_dmarq -set_location_assignment PIN_R19 -to ata_dmack -set_location_assignment PIN_U20 -to ata_dasp -set_location_assignment PIN_R18 -to ata_csel - - - -# set_location_assignment PIN_J17 -to address[1] -# set_location_assignment PIN_J18 -to address[19] -# set_location_assignment PIN_J19 -to address[25] -# set_location_assignment PIN_J20 -to read -# set_location_assignment PIN_J21 -to ramoen[3] -# set_location_assignment PIN_J22 -to oen -# set_location_assignment PIN_K20 -to rben[0] -# set_location_assignment PIN_K21 -to ramoen[0] -# set_location_assignment PIN_K22 -to address[17] -# set_location_assignment PIN_L18 -to address[21] -# set_location_assignment PIN_L19 -to address[27] -# set_location_assignment PIN_M18 -to iosn -# set_location_assignment PIN_M19 -to ramsn[0] -# set_location_assignment PIN_N15 -to romsn[0] -# set_location_assignment PIN_N21 -to rben[2] -# set_location_assignment PIN_N22 -to ramoen[2] -# set_location_assignment PIN_P15 -to ramsn[2] -# set_location_assignment PIN_P18 -to address[0] -# set_location_assignment PIN_R17 -to ramsn[3] -# set_location_assignment PIN_R18 -to ramoen[4] -# set_location_assignment PIN_R19 -to ramsn[1] -# set_location_assignment PIN_R20 -to rben[3] -# set_location_assignment PIN_R21 -to address[16] -# set_location_assignment PIN_R22 -to address[24] -# set_location_assignment PIN_T21 -to ramoen[1] -# set_location_assignment PIN_T22 -to address[22] -# set_location_assignment PIN_P17 -to address[23] -# set_location_assignment PIN_U19 -to romsn[1] -# set_location_assignment PIN_U20 -to rben[1] -# set_location_assignment PIN_U21 -to ramsn[4] -# set_location_assignment PIN_U22 -to writen - -#set_location_assignment PIN_V20 -to address[20] -#set_location_assignment PIN_V21 -to address[26] -#set_location_assignment PIN_V22 -to address[18] -set_location_assignment PIN_A3 -to vga_rd[0] -set_location_assignment PIN_B4 -to vga_rd[1] -set_location_assignment PIN_A4 -to vga_gr[0] -set_location_assignment PIN_B5 -to vga_gr[1] -set_location_assignment PIN_A5 -to vga_bl[0] -set_location_assignment PIN_B6 -to vga_bl[1] -set_location_assignment PIN_A6 -to vga_vsync -set_location_assignment PIN_A7 -to vga_hsync -set_location_assignment PIN_D16 -to hpiaddr[0] -comment USB_GPIO19 -set_location_assignment PIN_G16 -to hpiaddr[1] -comment USB_GPIO20 -set_location_assignment PIN_A17 -to hpicsn -comment USB_GPIO21 -set_location_assignment PIN_B17 -to hpiwrn -comment USB_GPIO22 -set_location_assignment PIN_C17 -to hpirdn -comment USB_GPIO23 -set_location_assignment PIN_F12 -to hpidata[0] -comment USB_GPIO0 -set_location_assignment PIN_A13 -to hpidata[1] -comment USB_GPIO1 -set_location_assignment PIN_B13 -to hpidata[2] -comment USB_GPIO2 -set_location_assignment PIN_C13 -to hpidata[3] -comment USB_GPIO3 -set_location_assignment PIN_F13 -to hpidata[4] -comment USB_GPIO4 -set_location_assignment PIN_A14 -to hpidata[5] -comment USB_GPIO5 -set_location_assignment PIN_B14 -to hpidata[6] -comment USB_GPIO6 -set_location_assignment PIN_C14 -to hpidata[7] -comment USB_GPIO7 -set_location_assignment PIN_D14 -to hpidata[8] -comment USB_GPIO8 -set_location_assignment PIN_E14 -to hpidata[9] -comment USB_GPIO9 -set_location_assignment PIN_F14 -to hpidata[10] -comment USB_GPIO10 -set_location_assignment PIN_A15 -to hpidata[11] -comment USB_GPIO11 -set_location_assignment PIN_B15 -to hpidata[12] -comment USB_GPIO12 -set_location_assignment PIN_D15 -to hpidata[13] -comment USB_GPIO13 -set_location_assignment PIN_E15 -to hpidata[14] -comment USB_GPIO14 -set_location_assignment PIN_F15 -to hpidata[15] -comment USB_GPIO15 -set_location_assignment PIN_A18 -to hpiint -comment USB_GPIO24 -set_location_assignment PIN_W21 -to sample_clock -comment SANTAC_B_IO34 -set_location_assignment PIN_W22 -to dbg_equal -comment SANTAC_B_IO35 - -# Timing Assignments -# ================== -set_global_assignment -name IGNORE_CLOCK_SETTINGS ON -set_global_assignment -name INCLUDE_EXTERNAL_PIN_DELAYS_IN_FMAX_CALCULATIONS OFF -set_global_assignment -name FMAX_REQUIREMENT "25.0 MHz" - -# Analysis & Synthesis Assignments -# ================================ -set_global_assignment -name SAVE_DISK_SPACE OFF -set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "Synplify Pro" -set_global_assignment -name FAMILY "Cyclone II" -set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE SPEED -set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE SPEED -set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE SPEED -set_global_assignment -name VHDL_SHOW_LMF_MAPPING_MESSAGES OFF -set_global_assignment -name AUTO_ENABLE_SMART_COMPILE on -set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF -set_global_assignment -name REMOVE_DUPLICATE_REGISTERS OFF -set_global_assignment -name REMOVE_DUPLICATE_LOGIC OFF - -# Fitter Assignments -# ================== -set_global_assignment -name DEVICE EP2C35F484C8 -set_global_assignment -name CYCLONEII_CONFIGURATION_SCHEME "PASSIVE SERIAL" -set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "PASSIVE SERIAL" -set_global_assignment -name ENABLE_DEVICE_WIDE_RESET OFF -set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "AS INPUT TRI-STATED" -set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED" -set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING OFF -#set_global_assignment -name WEAK_PULL_UP_RESISTOR ON -set_global_assignment -name ROUTER_REGISTER_DUPLICATION ON -set_global_assignment -name IO_PLACEMENT_OPTIMIZATION OFF -set_global_assignment -name INC_PLC_MODE OFF -set_global_assignment -name ROUTING_BACK_ANNOTATION_MODE OFF -set_global_assignment -name STRATIX_DEVICE_IO_STANDARD LVTTL - -# Timing Analysis Assignments -# =========================== -set_global_assignment -name MAX_SCC_SIZE 50 - -# EDA Netlist Writer Assignments -# ============================== -set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim (VHDL output from Quartus II)" -set_global_assignment -name HARDCOPY_EXTERNAL_CLOCK_JITTER "0.0 NS" - -# Assembler Assignments -# ===================== -set_global_assignment -name RESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND "AS INPUT TRI-STATED" -set_global_assignment -name COMPRESSION_MODE ON -set_global_assignment -name APEX20K_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name EXCALIBUR_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name MERCURY_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE EPC1 -set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE EPC2 -set_global_assignment -name STRATIX_CONFIGURATION_DEVICE EPC8 -set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE ON -set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE OFF -set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE ON -set_global_assignment -name GENERATE_TTF_FILE ON - -# Simulator Assignments -# ===================== -set_global_assignment -name START_TIME 0NS -set_global_assignment -name POWER_ESTIMATION_START_TIME "0 NS" -set_global_assignment -name GLITCH_INTERVAL 1NS - -# Design Assistant Assignments -# ============================ -set_global_assignment -name DRC_REPORT_TOP_FANOUT OFF -set_global_assignment -name DRC_REPORT_FANOUT_EXCEEDING OFF -set_global_assignment -name ASSG_CAT OFF -set_global_assignment -name ASSG_RULE_MISSING_FMAX OFF -set_global_assignment -name ASSG_RULE_MISSING_TIMING OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_ASYN_RAM OFF -set_global_assignment -name CLK_CAT OFF -set_global_assignment -name CLK_RULE_COMB_CLOCK OFF -set_global_assignment -name CLK_RULE_INV_CLOCK OFF -set_global_assignment -name CLK_RULE_GATING_SCHEME OFF -set_global_assignment -name CLK_RULE_INPINS_CLKNET OFF -set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES OFF -set_global_assignment -name CLK_RULE_MIX_EDGES OFF -set_global_assignment -name RESET_CAT OFF -set_global_assignment -name RESET_RULE_INPINS_RESETNET OFF -set_global_assignment -name RESET_RULE_UNSYNCH_EXRESET OFF -set_global_assignment -name RESET_RULE_IMSYNCH_EXRESET OFF -set_global_assignment -name RESET_RULE_COMB_ASYNCH_RESET OFF -set_global_assignment -name RESET_RULE_UNSYNCH_ASYNCH_DOMAIN OFF -set_global_assignment -name RESET_RULE_IMSYNCH_ASYNCH_DOMAIN OFF -set_global_assignment -name TIMING_CAT OFF -set_global_assignment -name TIMING_RULE_SHIFT_REG OFF -set_global_assignment -name TIMING_RULE_COIN_CLKEDGE OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_COMB_DRIVES_RAM_WE OFF -set_global_assignment -name NONSYNCHSTRUCT_CAT OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_COMBLOOP OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_REG_LOOP OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_DELAY_CHAIN OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_RIPPLE_CLK OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_ILLEGAL_PULSE_GEN OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_MULTI_VIBRATOR OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_SRLATCH OFF -set_global_assignment -name NONSYNCHSTRUCT_RULE_LATCH_UNIDENTIFIED OFF -set_global_assignment -name ACLK_CAT OFF -set_global_assignment -name ACLK_RULE_NO_SZER_ACLK_DOMAIN OFF -set_global_assignment -name ACLK_RULE_SZER_BTW_ACLK_DOMAIN OFF -set_global_assignment -name ACLK_RULE_IMSZER_ADOMAIN OFF -set_global_assignment -name HCPY_VREF_PINS OFF - -# Programmer Assignments -# ====================== -set_global_assignment -name GENERATE_JAM_FILE ON -set_global_assignment -name GENERATE_JBC_FILE ON - -# SignalTap II Assignments -# ======================== -set_global_assignment -name ENABLE_SIGNALTAP off - -# LogicLock Region Assignments -# ============================ -set_global_assignment -name LOGICLOCK_INCREMENTAL_COMPILE_ASSIGNMENT off - -# --------------------------------------------- -# start EDA_TOOL_SETTINGS(eda_design_synthesis) - - # Analysis & Synthesis Assignments - # ================================ - set_global_assignment -name EDA_INPUT_DATA_FORMAT "VERILOG HDL" -section_id eda_design_synthesis - set_global_assignment -name EDA_LMF_FILE synplcty.lmf -section_id eda_design_synthesis - - # EDA Netlist Writer Assignments - # ============================== - set_global_assignment -name EDA_OUTPUT_DATA_FORMAT EDIF -section_id eda_design_synthesis - -# end EDA_TOOL_SETTINGS(eda_design_synthesis) -# ------------------------------------------- - -# --------------------------------------- -# start EDA_TOOL_SETTINGS(eda_simulation) - - # EDA Netlist Writer Assignments - # ============================== - set_global_assignment -name EDA_INCLUDE_VHDL_CONFIGURATION_DECLARATION ON -section_id eda_simulation - set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation - -# end EDA_TOOL_SETTINGS(eda_simulation) -# ------------------------------------- - -# -------------------------- -# start ENTITY(leon3mini) - - set_instance_assignment -name PRESERVE_HIERARCHICAL_BOUNDARY FIRM -to "ahbrom:\\bpromgen:brom" - # Timing Assignments - # ================== - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[0\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[1\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[2\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[3\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[4\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[5\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[6\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[7\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[8\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[9\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[10\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[11\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[12\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[13\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[14\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[15\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[16\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[17\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[18\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[19\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[20\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[21\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[22\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[23\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[24\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[25\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[26\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[27\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[28\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[29\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[30\] - set_instance_assignment -name TSU_REQUIREMENT 10ns -from * -to data\[31\] - - # Fitter Assignments - # ================== - set_instance_assignment -name GLOBAL_SIGNAL ON -to etx_clk - set_instance_assignment -name GLOBAL_SIGNAL ON -to erx_clk - set_instance_assignment -name GLOBAL_SIGNAL ON -to clk - set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to clk - set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to etx_clk - set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to erx_clk - set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to dsuen -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[0] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[2] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[3] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[4] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[5] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[6] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[7] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[8] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[9] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[10] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[11] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[12] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[13] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[14] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[15] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[16] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[17] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[18] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[19] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[20] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[21] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[22] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[23] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[24] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[25] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[26] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to address[27] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[2] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[3] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[4] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[5] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[6] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[7] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[8] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[9] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[10] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[11] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[12] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[13] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[14] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[15] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[16] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[17] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[18] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[19] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[20] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[21] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[22] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[23] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[24] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[25] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[26] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[27] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[28] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[29] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[30] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to data[31] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to erx_clk - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to erxd[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to erxd[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to erxd[2] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to erxd[3] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to etx_clk - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to etxd[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to etxd[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to etxd[2] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to etxd[3] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to rben[0] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to rben[1] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to rben[2] -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to rben[3] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sdba[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sdba[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sdcasn - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sdclk - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sdcsn[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sdcsn[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sddqm[0] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sddqm[1] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sddqm[2] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sddqm[3] - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sdrasn - set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to sdwen -# set_instance_assignment -name CURRENT_STRENGTH_NEW 8MA -to writen -# end ENTITY(leon3mini) -# --------------------- - -set_global_assignment -name SMART_RECOMPILE ON -set_global_assignment -name NUM_PARALLEL_PROCESSORS 2 -set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 -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 OPTIMIZE_HOLD_TIMING "ALL PATHS" diff --git a/boards/gr-cpci-ax/Makefile.inc b/boards/gr-cpci-ax/Makefile.inc deleted file mode 100644 index 1200f4e1..00000000 --- a/boards/gr-cpci-ax/Makefile.inc +++ /dev/null @@ -1,61 +0,0 @@ -ifeq ("$(CONFIG_FPGA_RTAX2000S)","y") - PART=RTAX2000S - - ifeq ("$(CONFIG_FPGA_CQFP352)","y") - PACKAGE=CQFP352 - DESIGNER_PACKAGE=CQFP - DESIGNER_PINS=352 - else - PACKAGE=CCGA624 - DESIGNER_PACKAGE=CCGA - DESIGNER_PINS=624 - endif -else - PART=AX2000 - - ifeq ("$(CONFIG_FPGA_CQFP352)","y") - PACKAGE=CQFP352 - DESIGNER_PACKAGE=CQFP - DESIGNER_PINS=352 - else - PACKAGE=FBGA896 - DESIGNER_PACKAGE=FBGA - DESIGNER_PINS=896 - endif -endif - -ifeq ("$(CONFIG_FPGA_SPEED_SPEED_2)","y") - SPEED=-2 -else - ifeq ("$(CONFIG_FPGA_SPEED_1)","y") - SPEED=-1 - else - SPEED=Std - endif -endif - -ifeq ("$(CONFIG_FPGA_OPR_MIL)","y") - OPCON=MILWC - DESIGNER_VOLTAGE=MIL - DESIGNER_TEMP=MIL -else - ifeq ("$(CONFIG_FPGA_OPR_IND)","y") - OPCON=INDWC - DESIGNER_VOLTAGE=IND - DESIGNER_TEMP=IND - else - OPCON=COMWC - DESIGNER_VOLTAGE=COM - DESIGNER_TEMP=COM - endif -endif - -TECHNOLOGY=Axcelerator -SYNFREQ=40 - -MANUFACTURER=Actel -MGCPART=$(PART) -MGCTECHNOLOGY=Axcelerator -MGCPACKAGE= {$(DESIGNER_PINS) $(DESIGNER_PACKAGE)} -LIBERO_DIE=70400 -LIBERO_PACKAGE=fg$(DESIGNER_PINS) \ No newline at end of file diff --git a/boards/gr-cpci-ax/ReadMe.txt b/boards/gr-cpci-ax/ReadMe.txt deleted file mode 100644 index 2e8ceeb8..00000000 --- a/boards/gr-cpci-ax/ReadMe.txt +++ /dev/null @@ -1,54 +0,0 @@ -This directory contains pinout files and constraint files to be used with the -GR-CPCI-AX board and associated accessory and mezzanine boards. - -The GR-CPCI-AX board is designed for the CCGA 624 package, but also -supports the FBGA 896 package by means of an adapter. Pinouts are provided -for both devices. - -In addition, pinout is provided for the CQFP 353 package. - -The package choice can be done in the board specific make file Makefile.inc, -or locally in the design. Examples are provided the Makefile.inc and in -the Makefile of the reference designs. - -Note that the pinout constraint files (*.pdc) might require some lines to -be commented out (#) if a pin is not used in a new design. - - -GR-CPCI-AX board with GR-AX-SPW accessory or GR-RTAX-MEZZ mezzanine board -------------------------------------------------------------------------- - -The GR-AX-SPW accessory features 4x SpaceWire and 2x UART. - -The GR-RTAX-MEZZ mezzanine board 3x SpaceWire, 1x CAN and 1x 1553 (redundant). - -A common pinout constraint file is used for all three board combinations. - -The timing constraint file might need modification, depending on the design. - -Pinout and timing constraint files for CCGA 624 package: - - designer_624_CCGA.pdc - designer_624_CCGA.sdc - -Pinout and timing constraint files for FBGA 896 package: - - designer_896_FBGA.pdc - designer_896_FBGA.sdc - -Pinout and timing constraint files for CQFP 352 package: - - designer_352_CQFP.pdc - designer_352_CQFP.sdc - - -GR-CPCI-AX board with GR-CPCI-1553 mezzanine board --------------------------------------------------- - -The GR-CPCI-1553 mezzanine board features 1x CAN and 1x 1553 (redundant). - -This board pinout is not compatible with LEON3-RTAX architecture. - -Pinout constraint file for FBGA 896 package: - - designer_896_FBGA_1553.pdc diff --git a/boards/gr-cpci-ax/ax_oblique640.jpg b/boards/gr-cpci-ax/ax_oblique640.jpg deleted file mode 100644 index 597972990c116ecb1fc3773fdaf8d7e541741876..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49106 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 z 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 Hcjo^CU7!yg diff --git a/boards/gr-cpci-ax/check-624-all.txt b/boards/gr-cpci-ax/check-624-all.txt deleted file mode 100644 index 39a0916f..00000000 --- a/boards/gr-cpci-ax/check-624-all.txt +++ /dev/null @@ -1,461 +0,0 @@ -echo ; echo A10 ; cat designer_624_CCGA.pdc | grep ' A10 ' -echo ; echo A11 ; cat designer_624_CCGA.pdc | grep ' A11 ' -echo ; echo A12 ; cat designer_624_CCGA.pdc | grep ' A12 ' -echo ; echo A13 ; cat designer_624_CCGA.pdc | grep ' A13 ' -echo ; echo A14 ; cat designer_624_CCGA.pdc | grep ' A14 ' -echo ; echo A15 ; cat designer_624_CCGA.pdc | grep ' A15 ' -echo ; echo A16 ; cat designer_624_CCGA.pdc | grep ' A16 ' -echo ; echo A17 ; cat designer_624_CCGA.pdc | grep ' A17 ' -echo ; echo A19 ; cat designer_624_CCGA.pdc | grep ' A19 ' -echo ; echo A20 ; cat designer_624_CCGA.pdc | grep ' A20 ' -echo ; echo A21 ; cat designer_624_CCGA.pdc | grep ' A21 ' -echo ; echo A22 ; cat designer_624_CCGA.pdc | grep ' A22 ' -echo ; echo A4 ; cat designer_624_CCGA.pdc | grep ' A4 ' -echo ; echo A5 ; cat designer_624_CCGA.pdc | grep ' A5 ' -echo ; echo A6 ; cat designer_624_CCGA.pdc | grep ' A6 ' -echo ; echo A7 ; cat designer_624_CCGA.pdc | grep ' A7 ' -echo ; echo A9 ; cat designer_624_CCGA.pdc | grep ' A9 ' -echo ; echo AA1 ; cat designer_624_CCGA.pdc | grep ' AA1 ' -echo ; echo AA10 ; cat designer_624_CCGA.pdc | grep ' AA10' -echo ; echo AA11 ; cat designer_624_CCGA.pdc | grep ' AA11' -echo ; echo AA13 ; cat designer_624_CCGA.pdc | grep ' AA13' -echo ; echo AA15 ; cat designer_624_CCGA.pdc | grep ' AA15' -echo ; echo AA16 ; cat designer_624_CCGA.pdc | grep ' AA16' -echo ; echo AA17 ; cat designer_624_CCGA.pdc | grep ' AA17' -echo ; echo AA18 ; cat designer_624_CCGA.pdc | grep ' AA18' -echo ; echo AA19 ; cat designer_624_CCGA.pdc | grep ' AA19' -echo ; echo AA2 ; cat designer_624_CCGA.pdc | grep ' AA2 ' -echo ; echo AA20 ; cat designer_624_CCGA.pdc | grep ' AA20' -echo ; echo AA23 ; cat designer_624_CCGA.pdc | grep ' AA23' -echo ; echo AA24 ; cat designer_624_CCGA.pdc | grep ' AA24' -echo ; echo AA25 ; cat designer_624_CCGA.pdc | grep ' AA25' -echo ; echo AA3 ; cat designer_624_CCGA.pdc | grep ' AA3 ' -echo ; echo AA6 ; cat designer_624_CCGA.pdc | grep ' AA6 ' -echo ; echo AA7 ; cat designer_624_CCGA.pdc | grep ' AA7 ' -echo ; echo AA8 ; cat designer_624_CCGA.pdc | grep ' AA8 ' -echo ; echo AA9 ; cat designer_624_CCGA.pdc | grep ' AA9 ' -echo ; echo AB1 ; cat designer_624_CCGA.pdc | grep ' AB1 ' -echo ; echo AB10 ; cat designer_624_CCGA.pdc | grep ' AB10' -echo ; echo AB11 ; cat designer_624_CCGA.pdc | grep ' AB11' -echo ; echo AB12 ; cat designer_624_CCGA.pdc | grep ' AB12' -echo ; echo AB13 ; cat designer_624_CCGA.pdc | grep ' AB13' -echo ; echo AB14 ; cat designer_624_CCGA.pdc | grep ' AB14' -echo ; echo AB15 ; cat designer_624_CCGA.pdc | grep ' AB15' -echo ; echo AB16 ; cat designer_624_CCGA.pdc | grep ' AB16' -echo ; echo AB17 ; cat designer_624_CCGA.pdc | grep ' AB17' -echo ; echo AB18 ; cat designer_624_CCGA.pdc | grep ' AB18' -echo ; echo AB19 ; cat designer_624_CCGA.pdc | grep ' AB19' -echo ; echo AB2 ; cat designer_624_CCGA.pdc | grep ' AB2 ' -echo ; echo AB20 ; cat designer_624_CCGA.pdc | grep ' AB20' -echo ; echo AB24 ; cat designer_624_CCGA.pdc | grep ' AB24' -echo ; echo AB25 ; cat designer_624_CCGA.pdc | grep ' AB25' -echo ; echo AB6 ; cat designer_624_CCGA.pdc | grep ' AB6 ' -echo ; echo AB7 ; cat designer_624_CCGA.pdc | grep ' AB7 ' -echo ; echo AB8 ; cat designer_624_CCGA.pdc | grep ' AB8 ' -echo ; echo AB9 ; cat designer_624_CCGA.pdc | grep ' AB9 ' -echo ; echo AC11 ; cat designer_624_CCGA.pdc | grep ' AC11' -echo ; echo AC12 ; cat designer_624_CCGA.pdc | grep ' AC12' -echo ; echo AC13 ; cat designer_624_CCGA.pdc | grep ' AC13' -echo ; echo AC14 ; cat designer_624_CCGA.pdc | grep ' AC14' -echo ; echo AC15 ; cat designer_624_CCGA.pdc | grep ' AC15' -echo ; echo AC17 ; cat designer_624_CCGA.pdc | grep ' AC17' -echo ; echo AC18 ; cat designer_624_CCGA.pdc | grep ' AC18' -echo ; echo AC19 ; cat designer_624_CCGA.pdc | grep ' AC19' -echo ; echo AC20 ; cat designer_624_CCGA.pdc | grep ' AC20' -echo ; echo AC21 ; cat designer_624_CCGA.pdc | grep ' AC21' -echo ; echo AC5 ; cat designer_624_CCGA.pdc | grep ' AC5 ' -echo ; echo AC6 ; cat designer_624_CCGA.pdc | grep ' AC6 ' -echo ; echo AC7 ; cat designer_624_CCGA.pdc | grep ' AC7 ' -echo ; echo AC8 ; cat designer_624_CCGA.pdc | grep ' AC8 ' -echo ; echo AC9 ; cat designer_624_CCGA.pdc | grep ' AC9 ' -echo ; echo AD10 ; cat designer_624_CCGA.pdc | grep ' AD10' -echo ; echo AD11 ; cat designer_624_CCGA.pdc | grep ' AD11' -echo ; echo AD12 ; cat designer_624_CCGA.pdc | grep ' AD12' -echo ; echo AD13 ; cat designer_624_CCGA.pdc | grep ' AD13' -echo ; echo AD14 ; cat designer_624_CCGA.pdc | grep ' AD14' -echo ; echo AD15 ; cat designer_624_CCGA.pdc | grep ' AD15' -echo ; echo AD16 ; cat designer_624_CCGA.pdc | grep ' AD16' -echo ; echo AD17 ; cat designer_624_CCGA.pdc | grep ' AD17' -echo ; echo AD18 ; cat designer_624_CCGA.pdc | grep ' AD18' -echo ; echo AD19 ; cat designer_624_CCGA.pdc | grep ' AD19' -echo ; echo AD20 ; cat designer_624_CCGA.pdc | grep ' AD20' -echo ; echo AD21 ; cat designer_624_CCGA.pdc | grep ' AD21' -echo ; echo AD22 ; cat designer_624_CCGA.pdc | grep ' AD22' -echo ; echo AD4 ; cat designer_624_CCGA.pdc | grep ' AD4 ' -echo ; echo AD5 ; cat designer_624_CCGA.pdc | grep ' AD5 ' -echo ; echo AD6 ; cat designer_624_CCGA.pdc | grep ' AD6 ' -echo ; echo AD7 ; cat designer_624_CCGA.pdc | grep ' AD7 ' -echo ; echo AD8 ; cat designer_624_CCGA.pdc | grep ' AD8 ' -echo ; echo AD9 ; cat designer_624_CCGA.pdc | grep ' AD9 ' -echo ; echo AE10 ; cat designer_624_CCGA.pdc | grep ' AE10' -echo ; echo AE11 ; cat designer_624_CCGA.pdc | grep ' AE11' -echo ; echo AE12 ; cat designer_624_CCGA.pdc | grep ' AE12' -echo ; echo AE13 ; cat designer_624_CCGA.pdc | grep ' AE13' -echo ; echo AE14 ; cat designer_624_CCGA.pdc | grep ' AE14' -echo ; echo AE15 ; cat designer_624_CCGA.pdc | grep ' AE15' -echo ; echo AE16 ; cat designer_624_CCGA.pdc | grep ' AE16' -echo ; echo AE17 ; cat designer_624_CCGA.pdc | grep ' AE17' -echo ; echo AE19 ; cat designer_624_CCGA.pdc | grep ' AE19' -echo ; echo AE20 ; cat designer_624_CCGA.pdc | grep ' AE20' -echo ; echo AE21 ; cat designer_624_CCGA.pdc | grep ' AE21' -echo ; echo AE22 ; cat designer_624_CCGA.pdc | grep ' AE22' -echo ; echo AE4 ; cat designer_624_CCGA.pdc | grep ' AE4 ' -echo ; echo AE5 ; cat designer_624_CCGA.pdc | grep ' AE5 ' -echo ; echo AE6 ; cat designer_624_CCGA.pdc | grep ' AE6 ' -echo ; echo AE7 ; cat designer_624_CCGA.pdc | grep ' AE7 ' -echo ; echo AE9 ; cat designer_624_CCGA.pdc | grep ' AE9 ' -echo ; echo B10 ; cat designer_624_CCGA.pdc | grep ' B10 ' -echo ; echo B11 ; cat designer_624_CCGA.pdc | grep ' B11 ' -echo ; echo B12 ; cat designer_624_CCGA.pdc | grep ' B12 ' -echo ; echo B13 ; cat designer_624_CCGA.pdc | grep ' B13 ' -echo ; echo B14 ; cat designer_624_CCGA.pdc | grep ' B14 ' -echo ; echo B15 ; cat designer_624_CCGA.pdc | grep ' B15 ' -echo ; echo B16 ; cat designer_624_CCGA.pdc | grep ' B16 ' -echo ; echo B17 ; cat designer_624_CCGA.pdc | grep ' B17 ' -echo ; echo B18 ; cat designer_624_CCGA.pdc | grep ' B18 ' -echo ; echo B19 ; cat designer_624_CCGA.pdc | grep ' B19 ' -echo ; echo B20 ; cat designer_624_CCGA.pdc | grep ' B20 ' -echo ; echo B21 ; cat designer_624_CCGA.pdc | grep ' B21 ' -echo ; echo B22 ; cat designer_624_CCGA.pdc | grep ' B22 ' -echo ; echo B4 ; cat designer_624_CCGA.pdc | grep ' B4 ' -echo ; echo B5 ; cat designer_624_CCGA.pdc | grep ' B5 ' -echo ; echo B6 ; cat designer_624_CCGA.pdc | grep ' B6 ' -echo ; echo B7 ; cat designer_624_CCGA.pdc | grep ' B7 ' -echo ; echo B8 ; cat designer_624_CCGA.pdc | grep ' B8 ' -echo ; echo B9 ; cat designer_624_CCGA.pdc | grep ' B9 ' -echo ; echo C11 ; cat designer_624_CCGA.pdc | grep ' C11 ' -echo ; echo C12 ; cat designer_624_CCGA.pdc | grep ' C12 ' -echo ; echo C13 ; cat designer_624_CCGA.pdc | grep ' C13 ' -echo ; echo C14 ; cat designer_624_CCGA.pdc | grep ' C14 ' -echo ; echo C15 ; cat designer_624_CCGA.pdc | grep ' C15 ' -echo ; echo C17 ; cat designer_624_CCGA.pdc | grep ' C17 ' -echo ; echo C18 ; cat designer_624_CCGA.pdc | grep ' C18 ' -echo ; echo C19 ; cat designer_624_CCGA.pdc | grep ' C19 ' -echo ; echo C20 ; cat designer_624_CCGA.pdc | grep ' C20 ' -echo ; echo C21 ; cat designer_624_CCGA.pdc | grep ' C21 ' -echo ; echo C7 ; cat designer_624_CCGA.pdc | grep ' C7 ' -echo ; echo C8 ; cat designer_624_CCGA.pdc | grep ' C8 ' -echo ; echo C9 ; cat designer_624_CCGA.pdc | grep ' C9 ' -echo ; echo D1 ; cat designer_624_CCGA.pdc | grep ' D1 ' -echo ; echo D10 ; cat designer_624_CCGA.pdc | grep ' D10 ' -echo ; echo D11 ; cat designer_624_CCGA.pdc | grep ' D11 ' -echo ; echo D12 ; cat designer_624_CCGA.pdc | grep ' D12 ' -echo ; echo D13 ; cat designer_624_CCGA.pdc | grep ' D13 ' -echo ; echo D14 ; cat designer_624_CCGA.pdc | grep ' D14 ' -echo ; echo D15 ; cat designer_624_CCGA.pdc | grep ' D15 ' -echo ; echo D16 ; cat designer_624_CCGA.pdc | grep ' D16 ' -echo ; echo D17 ; cat designer_624_CCGA.pdc | grep ' D17 ' -echo ; echo D18 ; cat designer_624_CCGA.pdc | grep ' D18 ' -echo ; echo D19 ; cat designer_624_CCGA.pdc | grep ' D19 ' -echo ; echo D2 ; cat designer_624_CCGA.pdc | grep ' D2 ' -echo ; echo D20 ; cat designer_624_CCGA.pdc | grep ' D20 ' -echo ; echo D24 ; cat designer_624_CCGA.pdc | grep ' D24 ' -echo ; echo D25 ; cat designer_624_CCGA.pdc | grep ' D25 ' -echo ; echo D7 ; cat designer_624_CCGA.pdc | grep ' D7 ' -echo ; echo D8 ; cat designer_624_CCGA.pdc | grep ' D8 ' -echo ; echo D9 ; cat designer_624_CCGA.pdc | grep ' D9 ' -echo ; echo E1 ; cat designer_624_CCGA.pdc | grep ' E1 ' -echo ; echo E10 ; cat designer_624_CCGA.pdc | grep ' E10 ' -echo ; echo E11 ; cat designer_624_CCGA.pdc | grep ' E11 ' -echo ; echo E13 ; cat designer_624_CCGA.pdc | grep ' E13 ' -echo ; echo E15 ; cat designer_624_CCGA.pdc | grep ' E15 ' -echo ; echo E16 ; cat designer_624_CCGA.pdc | grep ' E16 ' -echo ; echo E17 ; cat designer_624_CCGA.pdc | grep ' E17 ' -echo ; echo E18 ; cat designer_624_CCGA.pdc | grep ' E18 ' -echo ; echo E19 ; cat designer_624_CCGA.pdc | grep ' E19 ' -echo ; echo E2 ; cat designer_624_CCGA.pdc | grep ' E2 ' -echo ; echo E20 ; cat designer_624_CCGA.pdc | grep ' E20 ' -echo ; echo E23 ; cat designer_624_CCGA.pdc | grep ' E23 ' -echo ; echo E24 ; cat designer_624_CCGA.pdc | grep ' E24 ' -echo ; echo E25 ; cat designer_624_CCGA.pdc | grep ' E25 ' -echo ; echo E3 ; cat designer_624_CCGA.pdc | grep ' E3 ' -echo ; echo E7 ; cat designer_624_CCGA.pdc | grep ' E7 ' -echo ; echo E9 ; cat designer_624_CCGA.pdc | grep ' E9 ' -echo ; echo F1 ; cat designer_624_CCGA.pdc | grep ' F1 ' -echo ; echo F10 ; cat designer_624_CCGA.pdc | grep ' F10 ' -echo ; echo F11 ; cat designer_624_CCGA.pdc | grep ' F11 ' -echo ; echo F13 ; cat designer_624_CCGA.pdc | grep ' F13 ' -echo ; echo F15 ; cat designer_624_CCGA.pdc | grep ' F15 ' -echo ; echo F16 ; cat designer_624_CCGA.pdc | grep ' F16 ' -echo ; echo F17 ; cat designer_624_CCGA.pdc | grep ' F17 ' -echo ; echo F18 ; cat designer_624_CCGA.pdc | grep ' F18 ' -echo ; echo F19 ; cat designer_624_CCGA.pdc | grep ' F19 ' -echo ; echo F2 ; cat designer_624_CCGA.pdc | grep ' F2 ' -echo ; echo F20 ; cat designer_624_CCGA.pdc | grep ' F20 ' -echo ; echo F21 ; cat designer_624_CCGA.pdc | grep ' F21 ' -echo ; echo F22 ; cat designer_624_CCGA.pdc | grep ' F22 ' -echo ; echo F23 ; cat designer_624_CCGA.pdc | grep ' F23 ' -echo ; echo F24 ; cat designer_624_CCGA.pdc | grep ' F24 ' -echo ; echo F25 ; cat designer_624_CCGA.pdc | grep ' F25 ' -echo ; echo F3 ; cat designer_624_CCGA.pdc | grep ' F3 ' -echo ; echo F4 ; cat designer_624_CCGA.pdc | grep ' F4 ' -echo ; echo F7 ; cat designer_624_CCGA.pdc | grep ' F7 ' -echo ; echo F8 ; cat designer_624_CCGA.pdc | grep ' F8 ' -echo ; echo F9 ; cat designer_624_CCGA.pdc | grep ' F9 ' -echo ; echo G1 ; cat designer_624_CCGA.pdc | grep ' G1 ' -echo ; echo G10 ; cat designer_624_CCGA.pdc | grep ' G10 ' -echo ; echo G11 ; cat designer_624_CCGA.pdc | grep ' G11 ' -echo ; echo G12 ; cat designer_624_CCGA.pdc | grep ' G12 ' -echo ; echo G13 ; cat designer_624_CCGA.pdc | grep ' G13 ' -echo ; echo G14 ; cat designer_624_CCGA.pdc | grep ' G14 ' -echo ; echo G15 ; cat designer_624_CCGA.pdc | grep ' G15 ' -echo ; echo G16 ; cat designer_624_CCGA.pdc | grep ' G16 ' -echo ; echo G17 ; cat designer_624_CCGA.pdc | grep ' G17 ' -echo ; echo G18 ; cat designer_624_CCGA.pdc | grep ' G18 ' -echo ; echo G19 ; cat designer_624_CCGA.pdc | grep ' G19 ' -echo ; echo G2 ; cat designer_624_CCGA.pdc | grep ' G2 ' -echo ; echo G20 ; cat designer_624_CCGA.pdc | grep ' G20 ' -echo ; echo G21 ; cat designer_624_CCGA.pdc | grep ' G21 ' -echo ; echo G22 ; cat designer_624_CCGA.pdc | grep ' G22 ' -echo ; echo G23 ; cat designer_624_CCGA.pdc | grep ' G23 ' -echo ; echo G24 ; cat designer_624_CCGA.pdc | grep ' G24 ' -echo ; echo G25 ; cat designer_624_CCGA.pdc | grep ' G25 ' -echo ; echo G3 ; cat designer_624_CCGA.pdc | grep ' G3 ' -echo ; echo G4 ; cat designer_624_CCGA.pdc | grep ' G4 ' -echo ; echo G5 ; cat designer_624_CCGA.pdc | grep ' G5 ' -echo ; echo G6 ; cat designer_624_CCGA.pdc | grep ' G6 ' -echo ; echo G7 ; cat designer_624_CCGA.pdc | grep ' G7 ' -echo ; echo G8 ; cat designer_624_CCGA.pdc | grep ' G8 ' -echo ; echo G9 ; cat designer_624_CCGA.pdc | grep ' G9 ' -echo ; echo H10 ; cat designer_624_CCGA.pdc | grep ' H10 ' -echo ; echo H11 ; cat designer_624_CCGA.pdc | grep ' H11 ' -echo ; echo H13 ; cat designer_624_CCGA.pdc | grep ' H13 ' -echo ; echo H15 ; cat designer_624_CCGA.pdc | grep ' H15 ' -echo ; echo H16 ; cat designer_624_CCGA.pdc | grep ' H16 ' -echo ; echo H17 ; cat designer_624_CCGA.pdc | grep ' H17 ' -echo ; echo H18 ; cat designer_624_CCGA.pdc | grep ' H18 ' -echo ; echo H19 ; cat designer_624_CCGA.pdc | grep ' H19 ' -echo ; echo H2 ; cat designer_624_CCGA.pdc | grep ' H2 ' -echo ; echo H20 ; cat designer_624_CCGA.pdc | grep ' H20 ' -echo ; echo H21 ; cat designer_624_CCGA.pdc | grep ' H21 ' -echo ; echo H22 ; cat designer_624_CCGA.pdc | grep ' H22 ' -echo ; echo H23 ; cat designer_624_CCGA.pdc | grep ' H23 ' -echo ; echo H24 ; cat designer_624_CCGA.pdc | grep ' H24 ' -echo ; echo H3 ; cat designer_624_CCGA.pdc | grep ' H3 ' -echo ; echo H4 ; cat designer_624_CCGA.pdc | grep ' H4 ' -echo ; echo H5 ; cat designer_624_CCGA.pdc | grep ' H5 ' -echo ; echo H6 ; cat designer_624_CCGA.pdc | grep ' H6 ' -echo ; echo H7 ; cat designer_624_CCGA.pdc | grep ' H7 ' -echo ; echo H8 ; cat designer_624_CCGA.pdc | grep ' H8 ' -echo ; echo H9 ; cat designer_624_CCGA.pdc | grep ' H9 ' -echo ; echo J1 ; cat designer_624_CCGA.pdc | grep ' J1 ' -echo ; echo J13 ; cat designer_624_CCGA.pdc | grep ' J13 ' -echo ; echo J18 ; cat designer_624_CCGA.pdc | grep ' J18 ' -echo ; echo J19 ; cat designer_624_CCGA.pdc | grep ' J19 ' -echo ; echo J2 ; cat designer_624_CCGA.pdc | grep ' J2 ' -echo ; echo J20 ; cat designer_624_CCGA.pdc | grep ' J20 ' -echo ; echo J21 ; cat designer_624_CCGA.pdc | grep ' J21 ' -echo ; echo J22 ; cat designer_624_CCGA.pdc | grep ' J22 ' -echo ; echo J23 ; cat designer_624_CCGA.pdc | grep ' J23 ' -echo ; echo J24 ; cat designer_624_CCGA.pdc | grep ' J24 ' -echo ; echo J25 ; cat designer_624_CCGA.pdc | grep ' J25 ' -echo ; echo J3 ; cat designer_624_CCGA.pdc | grep ' J3 ' -echo ; echo J4 ; cat designer_624_CCGA.pdc | grep ' J4 ' -echo ; echo J5 ; cat designer_624_CCGA.pdc | grep ' J5 ' -echo ; echo J6 ; cat designer_624_CCGA.pdc | grep ' J6 ' -echo ; echo J7 ; cat designer_624_CCGA.pdc | grep ' J7 ' -echo ; echo J8 ; cat designer_624_CCGA.pdc | grep ' J8 ' -echo ; echo K1 ; cat designer_624_CCGA.pdc | grep ' K1 ' -echo ; echo K13 ; cat designer_624_CCGA.pdc | grep ' K13 ' -echo ; echo K18 ; cat designer_624_CCGA.pdc | grep ' K18 ' -echo ; echo K19 ; cat designer_624_CCGA.pdc | grep ' K19 ' -echo ; echo K2 ; cat designer_624_CCGA.pdc | grep ' K2 ' -echo ; echo K20 ; cat designer_624_CCGA.pdc | grep ' K20 ' -echo ; echo K21 ; cat designer_624_CCGA.pdc | grep ' K21 ' -echo ; echo K22 ; cat designer_624_CCGA.pdc | grep ' K22 ' -echo ; echo K24 ; cat designer_624_CCGA.pdc | grep ' K24 ' -echo ; echo K25 ; cat designer_624_CCGA.pdc | grep ' K25 ' -echo ; echo K4 ; cat designer_624_CCGA.pdc | grep ' K4 ' -echo ; echo K5 ; cat designer_624_CCGA.pdc | grep ' K5 ' -echo ; echo K6 ; cat designer_624_CCGA.pdc | grep ' K6 ' -echo ; echo K7 ; cat designer_624_CCGA.pdc | grep ' K7 ' -echo ; echo K8 ; cat designer_624_CCGA.pdc | grep ' K8 ' -echo ; echo L1 ; cat designer_624_CCGA.pdc | grep ' L1 ' -echo ; echo L18 ; cat designer_624_CCGA.pdc | grep ' L18 ' -echo ; echo L19 ; cat designer_624_CCGA.pdc | grep ' L19 ' -echo ; echo L2 ; cat designer_624_CCGA.pdc | grep ' L2 ' -echo ; echo L20 ; cat designer_624_CCGA.pdc | grep ' L20 ' -echo ; echo L21 ; cat designer_624_CCGA.pdc | grep ' L21 ' -echo ; echo L22 ; cat designer_624_CCGA.pdc | grep ' L22 ' -echo ; echo L23 ; cat designer_624_CCGA.pdc | grep ' L23 ' -echo ; echo L24 ; cat designer_624_CCGA.pdc | grep ' L24 ' -echo ; echo L25 ; cat designer_624_CCGA.pdc | grep ' L25 ' -echo ; echo L3 ; cat designer_624_CCGA.pdc | grep ' L3 ' -echo ; echo L4 ; cat designer_624_CCGA.pdc | grep ' L4 ' -echo ; echo L5 ; cat designer_624_CCGA.pdc | grep ' L5 ' -echo ; echo L6 ; cat designer_624_CCGA.pdc | grep ' L6 ' -echo ; echo L7 ; cat designer_624_CCGA.pdc | grep ' L7 ' -echo ; echo L8 ; cat designer_624_CCGA.pdc | grep ' L8 ' -echo ; echo M1 ; cat designer_624_CCGA.pdc | grep ' M1 ' -echo ; echo M17 ; cat designer_624_CCGA.pdc | grep ' M17 ' -echo ; echo M18 ; cat designer_624_CCGA.pdc | grep ' M18 ' -echo ; echo M19 ; cat designer_624_CCGA.pdc | grep ' M19 ' -echo ; echo M2 ; cat designer_624_CCGA.pdc | grep ' M2 ' -echo ; echo M20 ; cat designer_624_CCGA.pdc | grep ' M20 ' -echo ; echo M21 ; cat designer_624_CCGA.pdc | grep ' M21 ' -echo ; echo M22 ; cat designer_624_CCGA.pdc | grep ' M22 ' -echo ; echo M23 ; cat designer_624_CCGA.pdc | grep ' M23 ' -echo ; echo M24 ; cat designer_624_CCGA.pdc | grep ' M24 ' -echo ; echo M25 ; cat designer_624_CCGA.pdc | grep ' M25 ' -echo ; echo M3 ; cat designer_624_CCGA.pdc | grep ' M3 ' -echo ; echo M4 ; cat designer_624_CCGA.pdc | grep ' M4 ' -echo ; echo M5 ; cat designer_624_CCGA.pdc | grep ' M5 ' -echo ; echo M6 ; cat designer_624_CCGA.pdc | grep ' M6 ' -echo ; echo M7 ; cat designer_624_CCGA.pdc | grep ' M7 ' -echo ; echo M8 ; cat designer_624_CCGA.pdc | grep ' M8 ' -echo ; echo M9 ; cat designer_624_CCGA.pdc | grep ' M9 ' -echo ; echo N1 ; cat designer_624_CCGA.pdc | grep ' N1 ' -echo ; echo N10 ; cat designer_624_CCGA.pdc | grep ' N10 ' -echo ; echo N16 ; cat designer_624_CCGA.pdc | grep ' N16 ' -echo ; echo N17 ; cat designer_624_CCGA.pdc | grep ' N17 ' -echo ; echo N18 ; cat designer_624_CCGA.pdc | grep ' N18 ' -echo ; echo N19 ; cat designer_624_CCGA.pdc | grep ' N19 ' -echo ; echo N2 ; cat designer_624_CCGA.pdc | grep ' N2 ' -echo ; echo N20 ; cat designer_624_CCGA.pdc | grep ' N20 ' -echo ; echo N21 ; cat designer_624_CCGA.pdc | grep ' N21 ' -echo ; echo N22 ; cat designer_624_CCGA.pdc | grep ' N22 ' -echo ; echo N23 ; cat designer_624_CCGA.pdc | grep ' N23 ' -echo ; echo N24 ; cat designer_624_CCGA.pdc | grep ' N24 ' -echo ; echo N25 ; cat designer_624_CCGA.pdc | grep ' N25 ' -echo ; echo N3 ; cat designer_624_CCGA.pdc | grep ' N3 ' -echo ; echo N4 ; cat designer_624_CCGA.pdc | grep ' N4 ' -echo ; echo N5 ; cat designer_624_CCGA.pdc | grep ' N5 ' -echo ; echo N6 ; cat designer_624_CCGA.pdc | grep ' N6 ' -echo ; echo N7 ; cat designer_624_CCGA.pdc | grep ' N7 ' -echo ; echo N8 ; cat designer_624_CCGA.pdc | grep ' N8 ' -echo ; echo N9 ; cat designer_624_CCGA.pdc | grep ' N9 ' -echo ; echo P1 ; cat designer_624_CCGA.pdc | grep ' P1 ' -echo ; echo P17 ; cat designer_624_CCGA.pdc | grep ' P17 ' -echo ; echo P18 ; cat designer_624_CCGA.pdc | grep ' P18 ' -echo ; echo P19 ; cat designer_624_CCGA.pdc | grep ' P19 ' -echo ; echo P2 ; cat designer_624_CCGA.pdc | grep ' P2 ' -echo ; echo P20 ; cat designer_624_CCGA.pdc | grep ' P20 ' -echo ; echo P21 ; cat designer_624_CCGA.pdc | grep ' P21 ' -echo ; echo P22 ; cat designer_624_CCGA.pdc | grep ' P22 ' -echo ; echo P23 ; cat designer_624_CCGA.pdc | grep ' P23 ' -echo ; echo P24 ; cat designer_624_CCGA.pdc | grep ' P24 ' -echo ; echo P25 ; cat designer_624_CCGA.pdc | grep ' P25 ' -echo ; echo P3 ; cat designer_624_CCGA.pdc | grep ' P3 ' -echo ; echo P4 ; cat designer_624_CCGA.pdc | grep ' P4 ' -echo ; echo P5 ; cat designer_624_CCGA.pdc | grep ' P5 ' -echo ; echo P6 ; cat designer_624_CCGA.pdc | grep ' P6 ' -echo ; echo P7 ; cat designer_624_CCGA.pdc | grep ' P7 ' -echo ; echo P8 ; cat designer_624_CCGA.pdc | grep ' P8 ' -echo ; echo P9 ; cat designer_624_CCGA.pdc | grep ' P9 ' -echo ; echo R1 ; cat designer_624_CCGA.pdc | grep ' R1 ' -echo ; echo R18 ; cat designer_624_CCGA.pdc | grep ' R18 ' -echo ; echo R19 ; cat designer_624_CCGA.pdc | grep ' R19 ' -echo ; echo R2 ; cat designer_624_CCGA.pdc | grep ' R2 ' -echo ; echo R20 ; cat designer_624_CCGA.pdc | grep ' R20 ' -echo ; echo R21 ; cat designer_624_CCGA.pdc | grep ' R21 ' -echo ; echo R22 ; cat designer_624_CCGA.pdc | grep ' R22 ' -echo ; echo R23 ; cat designer_624_CCGA.pdc | grep ' R23 ' -echo ; echo R24 ; cat designer_624_CCGA.pdc | grep ' R24 ' -echo ; echo R25 ; cat designer_624_CCGA.pdc | grep ' R25 ' -echo ; echo R3 ; cat designer_624_CCGA.pdc | grep ' R3 ' -echo ; echo R4 ; cat designer_624_CCGA.pdc | grep ' R4 ' -echo ; echo R5 ; cat designer_624_CCGA.pdc | grep ' R5 ' -echo ; echo R6 ; cat designer_624_CCGA.pdc | grep ' R6 ' -echo ; echo R7 ; cat designer_624_CCGA.pdc | grep ' R7 ' -echo ; echo R8 ; cat designer_624_CCGA.pdc | grep ' R8 ' -echo ; echo T1 ; cat designer_624_CCGA.pdc | grep ' T1 ' -echo ; echo T13 ; cat designer_624_CCGA.pdc | grep ' T13 ' -echo ; echo T18 ; cat designer_624_CCGA.pdc | grep ' T18 ' -echo ; echo T19 ; cat designer_624_CCGA.pdc | grep ' T19 ' -echo ; echo T2 ; cat designer_624_CCGA.pdc | grep ' T2 ' -echo ; echo T20 ; cat designer_624_CCGA.pdc | grep ' T20 ' -echo ; echo T21 ; cat designer_624_CCGA.pdc | grep ' T21 ' -echo ; echo T22 ; cat designer_624_CCGA.pdc | grep ' T22 ' -echo ; echo T24 ; cat designer_624_CCGA.pdc | grep ' T24 ' -echo ; echo T25 ; cat designer_624_CCGA.pdc | grep ' T25 ' -echo ; echo T4 ; cat designer_624_CCGA.pdc | grep ' T4 ' -echo ; echo T5 ; cat designer_624_CCGA.pdc | grep ' T5 ' -echo ; echo T6 ; cat designer_624_CCGA.pdc | grep ' T6 ' -echo ; echo T7 ; cat designer_624_CCGA.pdc | grep ' T7 ' -echo ; echo T8 ; cat designer_624_CCGA.pdc | grep ' T8 ' -echo ; echo U1 ; cat designer_624_CCGA.pdc | grep ' U1 ' -echo ; echo U13 ; cat designer_624_CCGA.pdc | grep ' U13 ' -echo ; echo U18 ; cat designer_624_CCGA.pdc | grep ' U18 ' -echo ; echo U19 ; cat designer_624_CCGA.pdc | grep ' U19 ' -echo ; echo U2 ; cat designer_624_CCGA.pdc | grep ' U2 ' -echo ; echo U20 ; cat designer_624_CCGA.pdc | grep ' U20 ' -echo ; echo U21 ; cat designer_624_CCGA.pdc | grep ' U21 ' -echo ; echo U22 ; cat designer_624_CCGA.pdc | grep ' U22 ' -echo ; echo U23 ; cat designer_624_CCGA.pdc | grep ' U23 ' -echo ; echo U24 ; cat designer_624_CCGA.pdc | grep ' U24 ' -echo ; echo U25 ; cat designer_624_CCGA.pdc | grep ' U25 ' -echo ; echo U3 ; cat designer_624_CCGA.pdc | grep ' U3 ' -echo ; echo U4 ; cat designer_624_CCGA.pdc | grep ' U4 ' -echo ; echo U5 ; cat designer_624_CCGA.pdc | grep ' U5 ' -echo ; echo U6 ; cat designer_624_CCGA.pdc | grep ' U6 ' -echo ; echo U7 ; cat designer_624_CCGA.pdc | grep ' U7 ' -echo ; echo U8 ; cat designer_624_CCGA.pdc | grep ' U8 ' -echo ; echo V10 ; cat designer_624_CCGA.pdc | grep ' V10 ' -echo ; echo V11 ; cat designer_624_CCGA.pdc | grep ' V11 ' -echo ; echo V13 ; cat designer_624_CCGA.pdc | grep ' V13 ' -echo ; echo V15 ; cat designer_624_CCGA.pdc | grep ' V15 ' -echo ; echo V16 ; cat designer_624_CCGA.pdc | grep ' V16 ' -echo ; echo V17 ; cat designer_624_CCGA.pdc | grep ' V17 ' -echo ; echo V18 ; cat designer_624_CCGA.pdc | grep ' V18 ' -echo ; echo V19 ; cat designer_624_CCGA.pdc | grep ' V19 ' -echo ; echo V2 ; cat designer_624_CCGA.pdc | grep ' V2 ' -echo ; echo V20 ; cat designer_624_CCGA.pdc | grep ' V20 ' -echo ; echo V21 ; cat designer_624_CCGA.pdc | grep ' V21 ' -echo ; echo V22 ; cat designer_624_CCGA.pdc | grep ' V22 ' -echo ; echo V23 ; cat designer_624_CCGA.pdc | grep ' V23 ' -echo ; echo V24 ; cat designer_624_CCGA.pdc | grep ' V24 ' -echo ; echo V3 ; cat designer_624_CCGA.pdc | grep ' V3 ' -echo ; echo V4 ; cat designer_624_CCGA.pdc | grep ' V4 ' -echo ; echo V5 ; cat designer_624_CCGA.pdc | grep ' V5 ' -echo ; echo V6 ; cat designer_624_CCGA.pdc | grep ' V6 ' -echo ; echo V7 ; cat designer_624_CCGA.pdc | grep ' V7 ' -echo ; echo V8 ; cat designer_624_CCGA.pdc | grep ' V8 ' -echo ; echo V9 ; cat designer_624_CCGA.pdc | grep ' V9 ' -echo ; echo W1 ; cat designer_624_CCGA.pdc | grep ' W1 ' -echo ; echo W10 ; cat designer_624_CCGA.pdc | grep ' W10 ' -echo ; echo W11 ; cat designer_624_CCGA.pdc | grep ' W11 ' -echo ; echo W12 ; cat designer_624_CCGA.pdc | grep ' W12 ' -echo ; echo W13 ; cat designer_624_CCGA.pdc | grep ' W13 ' -echo ; echo W14 ; cat designer_624_CCGA.pdc | grep ' W14 ' -echo ; echo W15 ; cat designer_624_CCGA.pdc | grep ' W15 ' -echo ; echo W16 ; cat designer_624_CCGA.pdc | grep ' W16 ' -echo ; echo W17 ; cat designer_624_CCGA.pdc | grep ' W17 ' -echo ; echo W18 ; cat designer_624_CCGA.pdc | grep ' W18 ' -echo ; echo W19 ; cat designer_624_CCGA.pdc | grep ' W19 ' -echo ; echo W2 ; cat designer_624_CCGA.pdc | grep ' W2 ' -echo ; echo W20 ; cat designer_624_CCGA.pdc | grep ' W20 ' -echo ; echo W21 ; cat designer_624_CCGA.pdc | grep ' W21 ' -echo ; echo W22 ; cat designer_624_CCGA.pdc | grep ' W22 ' -echo ; echo W23 ; cat designer_624_CCGA.pdc | grep ' W23 ' -echo ; echo W24 ; cat designer_624_CCGA.pdc | grep ' W24 ' -echo ; echo W25 ; cat designer_624_CCGA.pdc | grep ' W25 ' -echo ; echo W3 ; cat designer_624_CCGA.pdc | grep ' W3 ' -echo ; echo W4 ; cat designer_624_CCGA.pdc | grep ' W4 ' -echo ; echo W5 ; cat designer_624_CCGA.pdc | grep ' W5 ' -echo ; echo W6 ; cat designer_624_CCGA.pdc | grep ' W6 ' -echo ; echo W7 ; cat designer_624_CCGA.pdc | grep ' W7 ' -echo ; echo W8 ; cat designer_624_CCGA.pdc | grep ' W8 ' -echo ; echo W9 ; cat designer_624_CCGA.pdc | grep ' W9 ' -echo ; echo Y1 ; cat designer_624_CCGA.pdc | grep ' Y1 ' -echo ; echo Y10 ; cat designer_624_CCGA.pdc | grep ' Y10 ' -echo ; echo Y11 ; cat designer_624_CCGA.pdc | grep ' Y11 ' -echo ; echo Y13 ; cat designer_624_CCGA.pdc | grep ' Y13 ' -echo ; echo Y15 ; cat designer_624_CCGA.pdc | grep ' Y15 ' -echo ; echo Y16 ; cat designer_624_CCGA.pdc | grep ' Y16 ' -echo ; echo Y17 ; cat designer_624_CCGA.pdc | grep ' Y17 ' -echo ; echo Y18 ; cat designer_624_CCGA.pdc | grep ' Y18 ' -echo ; echo Y19 ; cat designer_624_CCGA.pdc | grep ' Y19 ' -echo ; echo Y2 ; cat designer_624_CCGA.pdc | grep ' Y2 ' -echo ; echo Y20 ; cat designer_624_CCGA.pdc | grep ' Y20 ' -echo ; echo Y21 ; cat designer_624_CCGA.pdc | grep ' Y21 ' -echo ; echo Y22 ; cat designer_624_CCGA.pdc | grep ' Y22 ' -echo ; echo Y23 ; cat designer_624_CCGA.pdc | grep ' Y23 ' -echo ; echo Y24 ; cat designer_624_CCGA.pdc | grep ' Y24 ' -echo ; echo Y25 ; cat designer_624_CCGA.pdc | grep ' Y25 ' -echo ; echo Y3 ; cat designer_624_CCGA.pdc | grep ' Y3 ' -echo ; echo Y4 ; cat designer_624_CCGA.pdc | grep ' Y4 ' -echo ; echo Y5 ; cat designer_624_CCGA.pdc | grep ' Y5 ' -echo ; echo Y6 ; cat designer_624_CCGA.pdc | grep ' Y6 ' -echo ; echo Y7 ; cat designer_624_CCGA.pdc | grep ' Y7 ' -echo ; echo Y8 ; cat designer_624_CCGA.pdc | grep ' Y8 ' -echo ; echo Y9 ; cat designer_624_CCGA.pdc | grep ' Y9 ' diff --git a/boards/gr-cpci-ax/check-624-io.txt b/boards/gr-cpci-ax/check-624-io.txt deleted file mode 100644 index e3d0707d..00000000 --- a/boards/gr-cpci-ax/check-624-io.txt +++ /dev/null @@ -1,88 +0,0 @@ -echo; echo "-------------------"; echo "genio\[24\] "; cat designer_624_CCGA.pdc | grep ' M25 ' ; echo ; echo "cantx\[0\] fifop\[0\]" -echo; echo "-------------------"; echo "genio\[25\] "; cat designer_624_CCGA.pdc | grep ' N25 ' ; echo ; echo "canrx\[0\] fifop\[1\]" -echo; echo "-------------------"; echo "genio\[26\] "; cat designer_624_CCGA.pdc | grep ' P17 ' ; echo ; echo " busaoutin\[0\] " -echo; echo "-------------------"; echo "genio\[27\] "; cat designer_624_CCGA.pdc | grep ' P18 ' ; echo ; echo " busaoutp\[0\] " -echo; echo "-------------------"; echo "genio\[28\] "; cat designer_624_CCGA.pdc | grep ' M23 ' ; echo ; echo " busaoutn\[0\] " -echo; echo "-------------------"; echo "genio\[29\] "; cat designer_624_CCGA.pdc | grep ' N23 ' ; echo ; echo " busainen\[0\] " -echo; echo "-------------------"; echo "genio\[30\] "; cat designer_624_CCGA.pdc | grep ' M22 ' ; echo ; echo " busainp\[0\] " -echo; echo "-------------------"; echo "genio\[31\] "; cat designer_624_CCGA.pdc | grep ' N22 ' ; echo ; echo " busainn\[0\] " -echo; echo "-------------------"; echo "genio\[32\] "; cat designer_624_CCGA.pdc | grep ' K25 ' ; echo ; echo " busboutin\[0\] " -echo; echo "-------------------"; echo "genio\[33\] "; cat designer_624_CCGA.pdc | grep ' L25 ' ; echo ; echo " busboutp\[0\] " -echo; echo "-------------------"; echo "genio\[34\] "; cat designer_624_CCGA.pdc | grep ' M24 ' ; echo ; echo " busboutn\[0\] " -echo; echo "-------------------"; echo "genio\[35\] "; cat designer_624_CCGA.pdc | grep ' N24 ' ; echo ; echo " busbinen\[0\] " -echo; echo "-------------------"; echo "genio\[36\] "; cat designer_624_CCGA.pdc | grep ' J25 ' ; echo ; echo " busbinp\[0\] " -echo; echo "-------------------"; echo "genio\[37\] "; cat designer_624_CCGA.pdc | grep ' N18 ' ; echo ; echo " busbinn\[0\] " -echo; echo "-------------------"; echo "genio\[38\] "; cat designer_624_CCGA.pdc | grep ' N19 ' ; echo ; echo " busaoutin\[1\] e0rx_clk gpio\[16\] fifod\[0\] " -echo; echo "-------------------"; echo "genio\[39\] "; cat designer_624_CCGA.pdc | grep ' M21 ' ; echo ; echo " busaoutp\[1\] e0rx_dv gpio\[17\] fifod\[1\] " -echo; echo "-------------------"; echo "genio\[40\] "; cat designer_624_CCGA.pdc | grep ' M20 ' ; echo ; echo " busaoutn\[1\] e0rx_crs gpio\[18\] fifod\[2\] " -echo; echo "-------------------"; echo "genio\[41\] "; cat designer_624_CCGA.pdc | grep ' N17 ' ; echo ; echo " busainen\[1\] e0rx_er gpio\[19\] fifod\[3\] " -echo; echo "-------------------"; echo "genio\[42\] "; cat designer_624_CCGA.pdc | grep ' K24 ' ; echo ; echo " busainp\[1\] e0rx_col gpio\[20\] fifod\[4\] " -echo; echo "-------------------"; echo "genio\[43\] "; cat designer_624_CCGA.pdc | grep ' L24 ' ; echo ; echo " busainn\[1\] e0rxd\[0\] gpio\[21\] fifod\[5\] " -echo; echo "-------------------"; echo "genio\[44\] "; cat designer_624_CCGA.pdc | grep ' L20 ' ; echo ; echo " busboutin\[1\] e0rxd\[1\] gpio\[22\] fifod\[6\] " -echo; echo "-------------------"; echo "genio\[45\] "; cat designer_624_CCGA.pdc | grep ' L21 ' ; echo ; echo " busboutp\[1\] e0rxd\[2\] gpio\[23\] fifod\[7\] " -echo; echo "-------------------"; echo "genio\[46\] "; cat designer_624_CCGA.pdc | grep ' F25 ' ; echo ; echo " busboutn\[1\] e0rxd\[3\] gpio\[24\] fifod\[8\] " -echo; echo "-------------------"; echo "genio\[47\] "; cat designer_624_CCGA.pdc | grep ' G25 ' ; echo ; echo " busbinen\[1\] e0tx_clk gpio\[25\] fifod\[9\] " -echo; echo "-------------------"; echo "genio\[48\] "; cat designer_624_CCGA.pdc | grep ' K22 ' ; echo ; echo " busbinp\[1\] e0txd\[0\] gpio\[26\] fifod\[10\]" -echo; echo "-------------------"; echo "genio\[49\] "; cat designer_624_CCGA.pdc | grep ' L22 ' ; echo ; echo " busbinn\[1\] e0txd\[1\] gpio\[27\] fifod\[11\]" -echo; echo "-------------------"; echo "genio\[50\] "; cat designer_624_CCGA.pdc | grep ' N16 ' ; echo ; echo " e0txd\[2\] gpio\[28\] fifod\[12\]" -echo; echo "-------------------"; echo "genio\[51\] "; cat designer_624_CCGA.pdc | grep ' L23 ' ; echo ; echo " e0txd\[3\] gpio\[29\] fifod\[13\]" -echo; echo "-------------------"; echo "genio\[52\] "; cat designer_624_CCGA.pdc | grep ' H24 ' ; echo ; echo " romsn\[2\] " -echo; echo "-------------------"; echo "genio\[53\] "; cat designer_624_CCGA.pdc | grep ' J24 ' ; echo ; echo " canrx\[1\] fifod\[14\]" -echo; echo "-------------------"; echo "genio\[54\] "; cat designer_624_CCGA.pdc | grep ' M18 ' ; echo ; echo " cantx\[1\] fifod\[15\]" -echo; echo "-------------------"; echo "genio\[55\] "; cat designer_624_CCGA.pdc | grep ' M19 ' ; echo ; echo " romsn\[3\] " -echo; echo "-------------------"; echo "pciio\[24\] "; cat designer_624_CCGA.pdc | grep ' AA3 ' ; echo ; echo " set_io pci_int\[0\] " -echo; echo "-------------------"; echo "pciio\[25\] "; cat designer_624_CCGA.pdc | grep ' V3 ' ; echo ; echo " e0tx_en gpio\[30\] fifowen " -echo; echo "-------------------"; echo "pciio\[26\] "; cat designer_624_CCGA.pdc | grep ' W3 ' ; echo ; echo " set_io pci_int\[1\] " -echo; echo "-------------------"; echo "pciio\[27\] "; cat designer_624_CCGA.pdc | grep ' AA2 ' ; echo ; echo " e0tx_er gpio\[31\] fiforen " -echo; echo "-------------------"; echo "pciio\[28\] "; cat designer_624_CCGA.pdc | grep ' AB2 ' ; echo ; echo " set_io pci_int\[2\] " -echo; echo "-------------------"; echo "pciio\[29\] "; cat designer_624_CCGA.pdc | grep ' V6 ' ; echo ; echo " e0mdc fifoffn " -echo; echo "-------------------"; echo "pciio\[30\] "; cat designer_624_CCGA.pdc | grep ' W4 ' ; echo ; echo " set_io pci_int\[3\] " -echo; echo "-------------------"; echo "pciio\[31\] "; cat designer_624_CCGA.pdc | grep ' U4 ' ; echo ; echo " e0mdio fifoefn " -echo; echo "-------------------"; echo "pciio\[0\] "; cat designer_624_CCGA.pdc | grep ' U23 ' ; echo ; echo " spw 3 dsutck " -echo; echo "-------------------"; echo "pciio\[1\] "; cat designer_624_CCGA.pdc | grep ' Y24 ' ; echo ; echo " spw 3 dsutdi " -echo; echo "-------------------"; echo "pciio\[2\] "; cat designer_624_CCGA.pdc | grep ' U24 ' ; echo ; echo " spw 3 " -echo; echo "-------------------"; echo "pciio\[3\] "; cat designer_624_CCGA.pdc | grep ' AA24 ' ; echo ; echo " spw 3 " -echo; echo "-------------------"; echo "pciio\[4\] "; cat designer_624_CCGA.pdc | grep ' V22 ' ; echo ; echo " spw 3 dsutdo " -echo; echo "-------------------"; echo "pciio\[5\] "; cat designer_624_CCGA.pdc | grep ' V23 ' ; echo ; echo " spw 3 dsutms " -echo; echo "-------------------"; echo "pciio\[6\] "; cat designer_624_CCGA.pdc | grep ' U22 ' ; echo ; echo " spw 3 e1mdio " -echo; echo "-------------------"; echo "pciio\[7\] "; cat designer_624_CCGA.pdc | grep ' V24 ' ; echo ; echo " spw 3 e1rx_col " -echo; echo "-------------------"; echo "pciio\[8\] "; cat designer_624_CCGA.pdc | grep ' V21 ' ; echo ; echo " e1mdc " -echo; echo "-------------------"; echo "pciio\[9\] "; cat designer_624_CCGA.pdc | grep ' U21 ' ; echo ; echo " e1rx_clk " -echo; echo "-------------------"; echo "pciio\[10\] "; cat designer_624_CCGA.pdc | grep ' Y23 ' ; echo ; echo " e1rx_crs " -echo; echo "-------------------"; echo "pciio\[11\] "; cat designer_624_CCGA.pdc | grep ' AA23 ' ; echo ; echo " e1rx_dv " -echo; echo "-------------------"; echo "pciio\[12\] "; cat designer_624_CCGA.pdc | grep ' W22 ' ; echo ; echo " e1rx_er " -echo; echo "-------------------"; echo "pciio\[13\] "; cat designer_624_CCGA.pdc | grep ' W23 ' ; echo ; echo " e1rxd\[0\] " -echo; echo "-------------------"; echo "pciio\[14\] "; cat designer_624_CCGA.pdc | grep ' Y22 ' ; echo ; echo " e1rxd\[1\] " -echo; echo "-------------------"; echo "pciio\[15\] "; cat designer_624_CCGA.pdc | grep ' Y21 ' ; echo ; echo " e1rxd\[2\] " -echo; echo "-------------------"; echo "pciio\[16\] "; cat designer_624_CCGA.pdc | grep ' N20 ' ; echo ; echo " e1rxd\[3\] " -echo; echo "-------------------"; echo "pciio\[17\] "; cat designer_624_CCGA.pdc | grep ' P24 ' ; echo ; echo " e1tx_clk " -echo; echo "-------------------"; echo "pciio\[18\] "; cat designer_624_CCGA.pdc | grep ' P21 ' ; echo ; echo " e1tx_er " -echo; echo "-------------------"; echo "pciio\[19\] "; cat designer_624_CCGA.pdc | grep ' R19 ' ; echo ; echo " e1tx_en " -echo; echo "-------------------"; echo "pciio\[20\] "; cat designer_624_CCGA.pdc | grep ' R21 ' ; echo ; echo " e1txd\[0\] " -echo; echo "-------------------"; echo "pciio\[21\] "; cat designer_624_CCGA.pdc | grep ' T22 ' ; echo ; echo " e1txd\[1\] " -echo; echo "-------------------"; echo "pciio\[22\] "; cat designer_624_CCGA.pdc | grep ' W24 ' ; echo ; echo " e1txd\[2\] " -echo; echo "-------------------"; echo "pciio\[23\] "; cat designer_624_CCGA.pdc | grep ' AB24 ' ; echo ; echo " e1txd\[3\] " -echo; echo "-------------------"; echo "geniohigh\[92\] "; cat designer_624_CCGA.pdc | grep ' P19 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[93\] "; cat designer_624_CCGA.pdc | grep ' P23 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[94\] "; cat designer_624_CCGA.pdc | grep ' P20 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[95\] "; cat designer_624_CCGA.pdc | grep ' R23 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[96\] "; cat designer_624_CCGA.pdc | grep ' R22 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[97\] "; cat designer_624_CCGA.pdc | grep ' R25 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[98\] "; cat designer_624_CCGA.pdc | grep ' P22 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[99\] "; cat designer_624_CCGA.pdc | grep ' P25 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[100\]"; cat designer_624_CCGA.pdc | grep ' R18 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[101\]"; cat designer_624_CCGA.pdc | grep ' R24 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[102\]"; cat designer_624_CCGA.pdc | grep ' T18 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[103\]"; cat designer_624_CCGA.pdc | grep ' T24 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[104\]"; cat designer_624_CCGA.pdc | grep ' T20 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[105\]"; cat designer_624_CCGA.pdc | grep ' U25 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[106\]"; cat designer_624_CCGA.pdc | grep ' R20 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[107\]"; cat designer_624_CCGA.pdc | grep ' T25 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[108\]"; cat designer_624_CCGA.pdc | grep ' T19 ' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[109\]"; cat designer_624_CCGA.pdc | grep ' W25 ' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[110\]"; cat designer_624_CCGA.pdc | grep ' U19 ' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[111\]"; cat designer_624_CCGA.pdc | grep ' Y25 ' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[112\]"; cat designer_624_CCGA.pdc | grep ' V20 ' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[113\]"; cat designer_624_CCGA.pdc | grep ' AB25 ' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[114\]"; cat designer_624_CCGA.pdc | grep ' U20 ' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[115\]"; cat designer_624_CCGA.pdc | grep ' AA25 ' ; echo ; echo " spw 2 " \ No newline at end of file diff --git a/boards/gr-cpci-ax/check-896-io.txt b/boards/gr-cpci-ax/check-896-io.txt deleted file mode 100644 index 81154014..00000000 --- a/boards/gr-cpci-ax/check-896-io.txt +++ /dev/null @@ -1,88 +0,0 @@ -echo; echo "-------------------"; echo "genio\[24\] "; cat designer_896_FBGA.pdc | grep ' R30 ' ; echo ; echo "cantx\[0\] fifop\[0\]" -echo; echo "-------------------"; echo "genio\[25\] "; cat designer_896_FBGA.pdc | grep ' R29 ' ; echo ; echo "canrx\[0\] fifop\[1\]" -echo; echo "-------------------"; echo "genio\[26\] "; cat designer_896_FBGA.pdc | grep ' R25 ' ; echo ; echo " busaoutin\[0\] " -echo; echo "-------------------"; echo "genio\[27\] "; cat designer_896_FBGA.pdc | grep ' R24 ' ; echo ; echo " busaoutp\[0\] " -echo; echo "-------------------"; echo "genio\[28\] "; cat designer_896_FBGA.pdc | grep ' P30 ' ; echo ; echo " busaoutn\[0\] " -echo; echo "-------------------"; echo "genio\[29\] "; cat designer_896_FBGA.pdc | grep ' P29 ' ; echo ; echo " busainen\[0\] " -echo; echo "-------------------"; echo "genio\[30\] "; cat designer_896_FBGA.pdc | grep ' P26 ' ; echo ; echo " busainp\[0\] " -echo; echo "-------------------"; echo "genio\[31\] "; cat designer_896_FBGA.pdc | grep ' R26 ' ; echo ; echo " busainn\[0\] " -echo; echo "-------------------"; echo "genio\[32\] "; cat designer_896_FBGA.pdc | grep ' P27 ' ; echo ; echo " busboutin\[0\] " -echo; echo "-------------------"; echo "genio\[33\] "; cat designer_896_FBGA.pdc | grep ' P28 ' ; echo ; echo " busboutp\[0\] " -echo; echo "-------------------"; echo "genio\[34\] "; cat designer_896_FBGA.pdc | grep ' P24 ' ; echo ; echo " busboutn\[0\] " -echo; echo "-------------------"; echo "genio\[35\] "; cat designer_896_FBGA.pdc | grep ' P25 ' ; echo ; echo " busbinen\[0\] " -echo; echo "-------------------"; echo "genio\[36\] "; cat designer_896_FBGA.pdc | grep ' N29 ' ; echo ; echo " busbinp\[0\] " -echo; echo "-------------------"; echo "genio\[37\] "; cat designer_896_FBGA.pdc | grep ' N24 ' ; echo ; echo " busbinn\[0\] " -echo; echo "-------------------"; echo "genio\[38\] "; cat designer_896_FBGA.pdc | grep ' N25 ' ; echo ; echo " busaoutin\[1\] e0rx_clk gpio\[16\] fifod\[0\] " -echo; echo "-------------------"; echo "genio\[39\] "; cat designer_896_FBGA.pdc | grep ' N27 ' ; echo ; echo " busaoutp\[1\] e0rx_dv gpio\[17\] fifod\[1\] " -echo; echo "-------------------"; echo "genio\[40\] "; cat designer_896_FBGA.pdc | grep ' N28 ' ; echo ; echo " busaoutn\[1\] e0rx_crs gpio\[18\] fifod\[2\] " -echo; echo "-------------------"; echo "genio\[41\] "; cat designer_896_FBGA.pdc | grep ' N26 ' ; echo ; echo " busainen\[1\] e0rx_er gpio\[19\] fifod\[3\] " -echo; echo "-------------------"; echo "genio\[42\] "; cat designer_896_FBGA.pdc | grep ' L29 ' ; echo ; echo " busainp\[1\] e0rx_col gpio\[20\] fifod\[4\] " -echo; echo "-------------------"; echo "genio\[43\] "; cat designer_896_FBGA.pdc | grep ' M29 ' ; echo ; echo " busainn\[1\] e0rxd\[0\] gpio\[21\] fifod\[5\] " -echo; echo "-------------------"; echo "genio\[44\] "; cat designer_896_FBGA.pdc | grep ' N23 ' ; echo ; echo " busboutin\[1\] e0rxd\[1\] gpio\[22\] fifod\[6\] " -echo; echo "-------------------"; echo "genio\[45\] "; cat designer_896_FBGA.pdc | grep ' N22 ' ; echo ; echo " busboutp\[1\] e0rxd\[2\] gpio\[23\] fifod\[7\] " -echo; echo "-------------------"; echo "genio\[46\] "; cat designer_896_FBGA.pdc | grep ' L28 ' ; echo ; echo " busboutn\[1\] e0rxd\[3\] gpio\[24\] fifod\[8\] " -echo; echo "-------------------"; echo "genio\[47\] "; cat designer_896_FBGA.pdc | grep ' M28 ' ; echo ; echo " busbinen\[1\] e0tx_clk gpio\[25\] fifod\[9\] " -echo; echo "-------------------"; echo "genio\[48\] "; cat designer_896_FBGA.pdc | grep ' L27 ' ; echo ; echo " busbinp\[1\] e0txd\[0\] gpio\[26\] fifod\[10\]" -echo; echo "-------------------"; echo "genio\[49\] "; cat designer_896_FBGA.pdc | grep ' M27 ' ; echo ; echo " busbinn\[1\] e0txd\[1\] gpio\[27\] fifod\[11\]" -echo; echo "-------------------"; echo "genio\[50\] "; cat designer_896_FBGA.pdc | grep ' M24 ' ; echo ; echo " e0txd\[2\] gpio\[28\] fifod\[12\]" -echo; echo "-------------------"; echo "genio\[51\] "; cat designer_896_FBGA.pdc | grep ' M23 ' ; echo ; echo " e0txd\[3\] gpio\[29\] fifod\[13\]" -echo; echo "-------------------"; echo "genio\[52\] "; cat designer_896_FBGA.pdc | grep ' K29 ' ; echo ; echo " romsn\[2\] " -echo; echo "-------------------"; echo "genio\[53\] "; cat designer_896_FBGA.pdc | grep ' K30 ' ; echo ; echo " canrx\[1\] fifod\[14\]" -echo; echo "-------------------"; echo "genio\[54\] "; cat designer_896_FBGA.pdc | grep ' L25 ' ; echo ; echo " cantx\[1\] fifod\[15\]" -echo; echo "-------------------"; echo "genio\[55\] "; cat designer_896_FBGA.pdc | grep ' M25 ' ; echo ; echo " romsn\[3\] " -echo; echo "-------------------"; echo "pciio\[24\] "; cat designer_896_FBGA.pdc | grep ' AF4 ' ; echo ; echo " set_io pci_int\[0\] " -echo; echo "-------------------"; echo "pciio\[25\] "; cat designer_896_FBGA.pdc | grep ' AB7 ' ; echo ; echo " e0tx_en gpio\[30\] fifowen " -echo; echo "-------------------"; echo "pciio\[26\] "; cat designer_896_FBGA.pdc | grep ' AC7 ' ; echo ; echo " set_io pci_int\[1\] " -echo; echo "-------------------"; echo "pciio\[27\] "; cat designer_896_FBGA.pdc | grep ' AD5 ' ; echo ; echo " e0tx_er gpio\[31\] fiforen " -echo; echo "-------------------"; echo "pciio\[28\] "; cat designer_896_FBGA.pdc | grep ' AE5 ' ; echo ; echo " set_io pci_int\[2\] " -echo; echo "-------------------"; echo "pciio\[29\] "; cat designer_896_FBGA.pdc | grep ' AF1 ' ; echo ; echo " e0mdc fifoffn " -echo; echo "-------------------"; echo "pciio\[30\] "; cat designer_896_FBGA.pdc | grep ' AF2 ' ; echo ; echo " set_io pci_int\[3\] " -echo; echo "-------------------"; echo "pciio\[31\] "; cat designer_896_FBGA.pdc | grep ' AC4 ' ; echo ; echo " e0mdio fifoefn " -echo; echo "-------------------"; echo "pciio\[0\] "; cat designer_896_FBGA.pdc | grep ' AD29' ; echo ; echo " spw 3 dsutck " -echo; echo "-------------------"; echo "pciio\[1\] "; cat designer_896_FBGA.pdc | grep ' AC27' ; echo ; echo " spw 3 dsutdi " -echo; echo "-------------------"; echo "pciio\[2\] "; cat designer_896_FBGA.pdc | grep ' AE29' ; echo ; echo " spw 3 " -echo; echo "-------------------"; echo "pciio\[3\] "; cat designer_896_FBGA.pdc | grep ' AD27' ; echo ; echo " spw 3 " -echo; echo "-------------------"; echo "pciio\[4\] "; cat designer_896_FBGA.pdc | grep ' AC26' ; echo ; echo " spw 3 dsutdo " -echo; echo "-------------------"; echo "pciio\[5\] "; cat designer_896_FBGA.pdc | grep ' AE28' ; echo ; echo " spw 3 dsutms " -echo; echo "-------------------"; echo "pciio\[6\] "; cat designer_896_FBGA.pdc | grep ' AB26' ; echo ; echo " spw 3 e1mdio " -echo; echo "-------------------"; echo "pciio\[7\] "; cat designer_896_FBGA.pdc | grep ' AD28' ; echo ; echo " spw 3 e1rx_col " -echo; echo "-------------------"; echo "pciio\[8\] "; cat designer_896_FBGA.pdc | grep ' AE26' ; echo ; echo " e1mdc " -echo; echo "-------------------"; echo "pciio\[9\] "; cat designer_896_FBGA.pdc | grep ' AD26' ; echo ; echo " e1rx_clk " -echo; echo "-------------------"; echo "pciio\[10\] "; cat designer_896_FBGA.pdc | grep ' AD25' ; echo ; echo " e1rx_crs " -echo; echo "-------------------"; echo "pciio\[11\] "; cat designer_896_FBGA.pdc | grep ' AC25' ; echo ; echo " e1rx_dv " -echo; echo "-------------------"; echo "pciio\[12\] "; cat designer_896_FBGA.pdc | grep ' AF27' ; echo ; echo " e1rx_er " -echo; echo "-------------------"; echo "pciio\[13\] "; cat designer_896_FBGA.pdc | grep ' AE27' ; echo ; echo " e1rxd\[0\] " -echo; echo "-------------------"; echo "pciio\[14\] "; cat designer_896_FBGA.pdc | grep ' AB23' ; echo ; echo " e1rxd\[1\] " -echo; echo "-------------------"; echo "pciio\[15\] "; cat designer_896_FBGA.pdc | grep ' AA23' ; echo ; echo " e1rxd\[2\] " -echo; echo "-------------------"; echo "pciio\[16\] "; cat designer_896_FBGA.pdc | grep ' T27 ' ; echo ; echo " e1rxd\[3\] " -echo; echo "-------------------"; echo "pciio\[17\] "; cat designer_896_FBGA.pdc | grep ' T30 ' ; echo ; echo " e1tx_clk " -echo; echo "-------------------"; echo "pciio\[18\] "; cat designer_896_FBGA.pdc | grep ' T22 ' ; echo ; echo " e1tx_er " -echo; echo "-------------------"; echo "pciio\[19\] "; cat designer_896_FBGA.pdc | grep ' V23 ' ; echo ; echo " e1tx_en " -echo; echo "-------------------"; echo "pciio\[20\] "; cat designer_896_FBGA.pdc | grep ' V26 ' ; echo ; echo " e1txd\[0\] " -echo; echo "-------------------"; echo "pciio\[21\] "; cat designer_896_FBGA.pdc | grep ' Y25 ' ; echo ; echo " e1txd\[1\] " -echo; echo "-------------------"; echo "pciio\[22\] "; cat designer_896_FBGA.pdc | grep ' AD30' ; echo ; echo " e1txd\[2\] " -echo; echo "-------------------"; echo "pciio\[23\] "; cat designer_896_FBGA.pdc | grep ' AG28' ; echo ; echo " e1txd\[3\] " -echo; echo "-------------------"; echo "geniohigh\[92\] "; cat designer_896_FBGA.pdc | grep ' T24 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[93\] "; cat designer_896_FBGA.pdc | grep ' U27 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[94\] "; cat designer_896_FBGA.pdc | grep ' U24 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[95\] "; cat designer_896_FBGA.pdc | grep ' V27 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[96\] "; cat designer_896_FBGA.pdc | grep ' V25 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[97\] "; cat designer_896_FBGA.pdc | grep ' W29 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[98\] "; cat designer_896_FBGA.pdc | grep ' U25 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[99\] "; cat designer_896_FBGA.pdc | grep ' V29 ' ; echo ; echo " spw 0 " -echo; echo "-------------------"; echo "geniohigh\[100\]"; cat designer_896_FBGA.pdc | grep ' V24 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[101\]"; cat designer_896_FBGA.pdc | grep ' W28 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[102\]"; cat designer_896_FBGA.pdc | grep ' W24 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[103\]"; cat designer_896_FBGA.pdc | grep ' W27 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[104\]"; cat designer_896_FBGA.pdc | grep ' Y28 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[105\]"; cat designer_896_FBGA.pdc | grep ' Y30 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[106\]"; cat designer_896_FBGA.pdc | grep ' Y27 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[107\]"; cat designer_896_FBGA.pdc | grep ' W30 ' ; echo ; echo " spw 1 " -echo; echo "-------------------"; echo "geniohigh\[108\]"; cat designer_896_FBGA.pdc | grep ' W23 ' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[109\]"; cat designer_896_FBGA.pdc | grep ' AA30' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[110\]"; cat designer_896_FBGA.pdc | grep ' Y23 ' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[111\]"; cat designer_896_FBGA.pdc | grep ' AB30' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[112\]"; cat designer_896_FBGA.pdc | grep ' AA24' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[113\]"; cat designer_896_FBGA.pdc | grep ' AF29' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[114\]"; cat designer_896_FBGA.pdc | grep ' Y24 ' ; echo ; echo " spw 2 " -echo; echo "-------------------"; echo "geniohigh\[115\]"; cat designer_896_FBGA.pdc | grep ' AF30' ; echo ; echo " spw 2 " \ No newline at end of file diff --git a/boards/gr-cpci-ax/config.h b/boards/gr-cpci-ax/config.h deleted file mode 100644 index 4baad472..00000000 --- a/boards/gr-cpci-ax/config.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Automatically generated C config: don't edit - */ -#define AUTOCONF_INCLUDED -#define CONFIG_MCTRL_RMW 1 -/* - * Synthesis - */ -#undef CONFIG_SYN_INFERRED -#define CONFIG_SYN_AXCEL 1 -#undef CONFIG_SYN_INFER_RAM -#undef CONFIG_SYN_INFER_PADS -/* - * Clock generation - */ -#undef CONFIG_CLK_INFERRED -#define CONFIG_CLK_HCLKBUF 1 -#define CONFIG_PROC_NUM (1) -/* - * Processor - */ -/* - * Integer unit - */ -#define CONFIG_IU_NWINDOWS (8) -#undef CONFIG_IU_V8MULDIV -#define CONFIG_IU_LDELAY (1) -#define CONFIG_IU_WATCHPOINTS (0) -#undef CONFIG_PWD -/* - * Floating-point unit - */ -#undef CONFIG_FPU_ENABLE -/* - * Cache system - */ -#define CONFIG_ICACHE_ENABLE 1 -#define CONFIG_ICACHE_ASSO1 1 -#undef CONFIG_ICACHE_ASSO2 -#undef CONFIG_ICACHE_ASSO3 -#undef CONFIG_ICACHE_ASSO4 -#undef CONFIG_ICACHE_SZ1 -#undef CONFIG_ICACHE_SZ2 -#define CONFIG_ICACHE_SZ4 1 -#undef CONFIG_ICACHE_SZ8 -#undef CONFIG_ICACHE_SZ16 -#undef CONFIG_ICACHE_SZ32 -#undef CONFIG_ICACHE_SZ64 -#undef CONFIG_ICACHE_LZ16 -#define CONFIG_ICACHE_LZ32 1 -#undef CONFIG_ICACHE_LRAM -#define CONFIG_DCACHE_ENABLE 1 -#define CONFIG_DCACHE_ASSO1 1 -#undef CONFIG_DCACHE_ASSO2 -#undef CONFIG_DCACHE_ASSO3 -#undef CONFIG_DCACHE_ASSO4 -#undef CONFIG_DCACHE_SZ1 -#undef CONFIG_DCACHE_SZ2 -#define CONFIG_DCACHE_SZ4 1 -#undef CONFIG_DCACHE_SZ8 -#undef CONFIG_DCACHE_SZ16 -#undef CONFIG_DCACHE_SZ32 -#undef CONFIG_DCACHE_SZ64 -#undef CONFIG_DCACHE_LZ16 -#define CONFIG_DCACHE_LZ32 1 -#undef CONFIG_DCACHE_LRAM -/* - * MMU - */ -#undef CONFIG_MMU_ENABLE -/* - * Debug Support Unit - */ -#define CONFIG_DSU_ENABLE 1 -#undef CONFIG_DSU_ITRACE -#undef CONFIG_DSU_ATRACE -/* - * AMBA configuration - */ -#define CONFIG_AHB_DEFMST (0) -#undef CONFIG_AHB_RROBIN -#undef CONFIG_AHB_SPLIT -#define CONFIG_AHB_IOADDR FFF -#define CONFIG_APB_HADDR 800 -/* - * Debug Link - */ -#define CONFIG_DSU_UART 1 -/* - * Peripherals - */ -/* - * Memory controllers - */ -#undef CONFIG_MCTRL_NONE -#define CONFIG_MCTRL_SMALL 1 -#undef CONFIG_MCTRL_LEON2 -#define CONFIG_MCTRL_PROMWS (3) -#define CONFIG_MCTRL_RAMWS (0) -#define CONFIG_MCTRL_SDRAM 1 -#define CONFIG_MCTRL_SDRAM_BUS64 1 -/* - * On-chip RAM - */ -#undef CONFIG_AHBRAM_ENABLE -/* - * PCI - */ -#define CONFIG_PCI_ENABLE 1 -#define CONFIG_PCI_SIMPLE_TARGET 1 -#undef CONFIG_PCI_MASTER_TAGET -#undef CONFIG_PCI_MASTER_TAGET_DMA -#define CONFIG_PCI_VENDORID 16E3 -#define CONFIG_PCI_DEVICEID 0210 -#undef CONFIG_PCI_ARBITER -#undef CONFIG_PCI_TRACE -/* - * UARTs, timers and irq control - */ -#define CONFIG_UART1_ENABLE 1 -#define CONFIG_UA1_FIFO1 1 -#undef CONFIG_UA1_FIFO2 -#undef CONFIG_UA1_FIFO4 -#undef CONFIG_UA1_FIFO8 -#undef CONFIG_UA1_FIFO16 -#undef CONFIG_UA1_FIFO32 -#define CONFIG_UART2_ENABLE 1 -#define CONFIG_UA2_FIFO1 1 -#undef CONFIG_UA2_FIFO2 -#undef CONFIG_UA2_FIFO4 -#undef CONFIG_UA2_FIFO8 -#undef CONFIG_UA2_FIFO16 -#undef CONFIG_UA2_FIFO32 -#define CONFIG_IRQ3_ENABLE 1 -#define CONFIG_GPT_ENABLE 1 -#define CONFIG_GPT_NTIM (2) -#define CONFIG_GPT_SW (8) -#define CONFIG_GPT_TW (32) -#define CONFIG_GPT_IRQ (8) -#define CONFIG_GPT_SEPIRQ 1 -/* - * VHDL Debugging - */ -#undef CONFIG_IU_DISAS -#define CONFIG_DEBUG_UART 1 -#undef CONFIG_DEBUG_PC32 diff --git a/boards/gr-cpci-ax/default.sdc b/boards/gr-cpci-ax/default.sdc deleted file mode 100644 index f8a105be..00000000 --- a/boards/gr-cpci-ax/default.sdc +++ /dev/null @@ -1,48 +0,0 @@ -# Synplicity, Inc. constraint file - -# -# Clocks -# -define_clock -name {clk} -freq 40.000 -clockgroup clk_clkgroup -define_clock -name {pci_clk} -freq 40.000 -clockgroup pci_clkgroup -define_clock -name {spw_clk} -freq 100.000 -clockgroup spw_clkgroup -define_clock -name {spwclk} -freq 100.000 -clockgroup spwclkgroup - -# -# Inputs/Outputs -# -define_output_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref clk:r -define_input_delay -disable -default 20.00 -improve 0.00 -route 0.00 -ref clk:r -define_output_delay -default 8.00 -improve 0.00 -route 0.00 -ref pci_clk:r -define_input_delay -default 15.00 -improve 0.00 -route 0.00 -ref pci_clk:r -define_input_delay {pci_rst} 0.00 -improve 0.00 -route 0.00 -ref pci_clk:r - -# -# Registers -# - -# -# Multicycle Path -# - -# -# False Path -# - -# -# Attributes -# -define_global_attribute syn_useioff {1} -define_attribute {cpu.0.l3ft.u0.holdn} syn_maxfan {10000} -define_attribute {spw.spwloop.0.sw0.rxclko} syn_maxfan {10000} -define_attribute {spw.spwloop.0.sw0.txclko} syn_maxfan {10000} -define_attribute {cpu.0.l3ft.u0} syn_hier {flatten} -define_global_attribute -disable syn_netlist_hierarchy {1} - -# -# Other Constraints -# - -# -# Order of waveforms -# diff --git a/boards/gr-cpci-ax/designer_352_CQFP.pdc b/boards/gr-cpci-ax/designer_352_CQFP.pdc deleted file mode 100644 index 27b72d4a..00000000 --- a/boards/gr-cpci-ax/designer_352_CQFP.pdc +++ /dev/null @@ -1,352 +0,0 @@ -# Actel Physical design constraints file -# Family: Axcelerator , Die: RTAX2000S , Package: cqdp352 - -# -# I/O constraints -# - -# IO bank 0 -set_io clk -iostd LVTTL -pinname 314 -fixed yes -set_io spw_clk -iostd LVTTL -pinname 320 -fixed yes - -set_io ctsn\[1\] -iostd LVTTL -pinname 332 -fixed yes -set_io ctsn\[2\] -iostd LVTTL -pinname 324 -fixed yes -set_io rxd\[1\] -iostd LVTTL -pinname 336 -fixed yes -set_io rxd\[2\] -iostd LVTTL -pinname 326 -fixed yes -set_io rtsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 331 -fixed yes -set_io rtsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 323 -fixed yes -set_io txd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 335 -fixed yes -set_io txd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 325 -fixed yes - -set_io dsuact -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 343 -fixed yes -set_io dsubre -iostd LVTTL -pinname 342 -fixed yes -set_io dsuen -iostd LVTTL -pinname 341 -fixed yes -set_io dsurx -iostd LVTTL -pinname 338 -fixed yes -set_io dsutx -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 337 -fixed yes - -# IO bank 1 -set_io iosn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 290 -fixed yes -set_io oen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 283 -fixed yes -set_io read -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 289 -fixed yes -set_io writen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 284 -fixed yes -set_io romsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 288 -fixed yes -set_io romsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 287 -fixed yes -set_io romsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 276 -fixed yes -set_io romsn\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 275 -fixed yes - -set_io bexcn -iostd LVTTL -RES_PULL Up -pinname 295 -fixed yes -set_io brdyn -iostd LVTTL -RES_PULL Up -pinname 296 -fixed yes - -set_io ramben\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 282 -fixed yes -set_io ramben\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 281 -fixed yes -set_io ramben\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 278 -fixed yes -set_io ramben\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 277 -fixed yes - -set_io rwen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 272 -fixed yes -set_io rwen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 271 -fixed yes -set_io rwen\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 270 -fixed yes -set_io rwen\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 269 -fixed yes - -# io bank 2 -set_io address\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 262 -fixed yes -set_io address\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 261 -fixed yes -set_io address\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 260 -fixed yes -set_io address\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 259 -fixed yes -set_io address\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 256 -fixed yes -set_io address\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 255 -fixed yes -set_io address\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 254 -fixed yes -set_io address\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 253 -fixed yes -set_io address\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 250 -fixed yes -set_io address\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 249 -fixed yes -set_io address\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 248 -fixed yes -set_io address\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 247 -fixed yes -set_io address\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 244 -fixed yes -set_io address\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 243 -fixed yes -set_io address\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 242 -fixed yes -set_io address\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 241 -fixed yes -set_io address\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 238 -fixed yes -set_io address\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 237 -fixed yes -set_io address\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 236 -fixed yes -set_io address\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 235 -fixed yes -set_io address\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 232 -fixed yes -set_io address\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 231 -fixed yes -set_io address\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 230 -fixed yes -set_io address\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 229 -fixed yes -set_io address\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 226 -fixed yes -set_io address\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 225 -fixed yes -set_io address\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 224 -fixed yes -set_io address\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 223 -fixed yes - -#io bank 3 -set_io data\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 220 -fixed yes -set_io data\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 219 -fixed yes -set_io data\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 218 -fixed yes -set_io data\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 217 -fixed yes -set_io data\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 214 -fixed yes -set_io data\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 213 -fixed yes -set_io data\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 212 -fixed yes -set_io data\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 211 -fixed yes -set_io data\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 208 -fixed yes -set_io data\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 207 -fixed yes -set_io data\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 206 -fixed yes -set_io data\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 205 -fixed yes -set_io data\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 202 -fixed yes -set_io data\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 201 -fixed yes -set_io data\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 200 -fixed yes -set_io data\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 199 -fixed yes -set_io data\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 196 -fixed yes -set_io data\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 195 -fixed yes -set_io data\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 194 -fixed yes -set_io data\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 193 -fixed yes -set_io data\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 190 -fixed yes -set_io data\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 189 -fixed yes -set_io data\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 188 -fixed yes -set_io data\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 187 -fixed yes -set_io data\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 184 -fixed yes -set_io data\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 183 -fixed yes -set_io data\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 182 -fixed yes -set_io data\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 181 -fixed yes -set_io data\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 180 -fixed yes -set_io data\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 179 -fixed yes - -#io bank 4 -set_io data\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 173 -fixed yes -set_io data\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 172 -fixed yes -set_io cb\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 171 -fixed yes -set_io cb\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 170 -fixed yes -set_io cb\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 167 -fixed yes -set_io cb\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 166 -fixed yes -set_io cb\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 165 -fixed yes -set_io cb\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 164 -fixed yes -set_io cb\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 161 -fixed yes -set_io cb\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 160 -fixed yes -set_io ramoen\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 143 -fixed yes -set_io ramoen\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 159 -fixed yes -set_io ramoen\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 158 -fixed yes -set_io ramoen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 155 -fixed yes -set_io ramoen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 154 -fixed yes -set_io ramsn\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 142 -fixed yes -set_io ramsn\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 153 -fixed yes -set_io ramsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 152 -fixed yes -set_io ramsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 147 -fixed yes -set_io ramsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 146 -fixed yes - -# io bank 5 -set_io gpio\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 119 -fixed yes -set_io gpio\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 118 -fixed yes -set_io gpio\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 113 -fixed yes -set_io gpio\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 112 -fixed yes -set_io gpio\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 111 -fixed yes -set_io gpio\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 110 -fixed yes -set_io gpio\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 107 -fixed yes -set_io gpio\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 106 -fixed yes -set_io gpio\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 105 -fixed yes -set_io gpio\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 104 -fixed yes -set_io gpio\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 101 -fixed yes -set_io gpio\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 100 -fixed yes -set_io gpio\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 99 -fixed yes -set_io gpio\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 98 -fixed yes -set_io gpio\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 95 -fixed yes -set_io gpio\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 94 -fixed yes -set_io errorn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -RES_PULL Up -pinname 93 -fixed yes -set_io resetn -iostd LVTTL -pinname 92 -fixed yes - -# io bank 6 -set_io wdogn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -RES_PULL Up -pinname 86 -fixed yes - -set_io busainen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 82 -fixed yes -set_io busainn\[0\] -iostd LVTTL -pinname 78 -fixed yes -set_io busainp\[0\] -iostd LVTTL -pinname 79 -fixed yes -set_io busaoutin\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 85 -fixed yes -set_io busaoutn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 83 -fixed yes -set_io busaoutp\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 84 -fixed yes -set_io busbinen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 72 -fixed yes -set_io busbinn\[0\] -iostd LVTTL -pinname 70 -fixed yes -set_io busbinp\[0\] -iostd LVTTL -pinname 71 -fixed yes -set_io busboutin\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 77 -fixed yes -set_io busboutn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 73 -fixed yes -set_io busboutp\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 76 -fixed yes -# Alternative name -set_io busainen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 82 -fixed yes -set_io busainn -iostd LVTTL -pinname 78 -fixed yes -set_io busainp -iostd LVTTL -pinname 79 -fixed yes -set_io busaoutin -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 85 -fixed yes -set_io busaoutn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 83 -fixed yes -set_io busaoutp -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 84 -fixed yes -set_io busbinen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 72 -fixed yes -set_io busbinn -iostd LVTTL -pinname 70 -fixed yes -set_io busbinp -iostd LVTTL -pinname 71 -fixed yes -set_io busboutin -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 77 -fixed yes -set_io busboutn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 73 -fixed yes -set_io busboutp -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 76 -fixed yes - -set_io busainen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 64 -fixed yes -set_io busainn\[1\] -iostd LVTTL -pinname 60 -fixed yes -set_io busainp\[1\] -iostd LVTTL -pinname 61 -fixed yes -set_io busaoutin\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 67 -fixed yes -set_io busaoutn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 65 -fixed yes -set_io busaoutp\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 66 -fixed yes -set_io busbinen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 54 -fixed yes -set_io busbinn\[1\] -iostd LVTTL -pinname 52 -fixed yes -set_io busbinp\[1\] -iostd LVTTL -pinname 53 -fixed yes -set_io busboutin\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 59 -fixed yes -set_io busboutn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 55 -fixed yes -set_io busboutp\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 58 -fixed yes - -set_io cantx\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 49 -fixed yes -set_io canrx\[0\] -iostd LVTTL -pinname 48 -fixed yes -set_io cantx\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 47 -fixed yes -set_io canrx\[1\] -iostd LVTTL -pinname 46 -fixed yes - -# io bank 7 (spacewire, lvds) -set_io spw_rxd\[0\] -iostd LVDS -pinname 43 -fixed yes -set_io spw_rxdn\[0\] -iostd LVDS -pinname 42 -fixed yes -set_io spw_rxs\[0\] -iostd LVDS -pinname 41 -fixed yes -set_io spw_rxsn\[0\] -iostd LVDS -pinname 40 -fixed yes -set_io spw_txd\[0\] -iostd LVDS -pinname 37 -fixed yes -set_io spw_txdn\[0\] -iostd LVDS -pinname 36 -fixed yes -set_io spw_txs\[0\] -iostd LVDS -pinname 35 -fixed yes -set_io spw_txsn\[0\] -iostd LVDS -pinname 34 -fixed yes - -set_io spw_rxd\[1\] -iostd LVDS -pinname 31 -fixed yes -set_io spw_rxdn\[1\] -iostd LVDS -pinname 30 -fixed yes -set_io spw_rxs\[1\] -iostd LVDS -pinname 29 -fixed yes -set_io spw_rxsn\[1\] -iostd LVDS -pinname 28 -fixed yes -set_io spw_txd\[1\] -iostd LVDS -pinname 25 -fixed yes -set_io spw_txdn\[1\] -iostd LVDS -pinname 24 -fixed yes -set_io spw_txs\[1\] -iostd LVDS -pinname 23 -fixed yes -set_io spw_txsn\[1\] -iostd LVDS -pinname 22 -fixed yes - -set_io spw_rxd\[2\] -iostd LVDS -pinname 19 -fixed yes -set_io spw_rxdn\[2\] -iostd LVDS -pinname 18 -fixed yes -set_io spw_rxs\[2\] -iostd LVDS -pinname 17 -fixed yes -set_io spw_rxsn\[2\] -iostd LVDS -pinname 16 -fixed yes -set_io spw_txd\[2\] -iostd LVDS -pinname 13 -fixed yes -set_io spw_txdn\[2\] -iostd LVDS -pinname 12 -fixed yes -set_io spw_txs\[2\] -iostd LVDS -pinname 11 -fixed yes -set_io spw_txsn\[2\] -iostd LVDS -pinname 10 -fixed yes - -set_io dsutck -iostd LVCMOS25 -pinname 4 -fixed yes -set_io dsutms -iostd LVCMOS25 -pinname 5 -fixed yes -set_io dsutdi -iostd LVCMOS25 -pinname 6 -fixed yes -set_io dsutdo -iostd LVCMOS25 -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 7 -fixed yes - -set_location spw.swloop.0.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/rxclko_0 -fixed yes 40 61 -set_location spw.swloop.0.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/r.shftreg -fixed yes 42 62 -set_location spw.swloop.0.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/nr.shftreg\[0\] -fixed yes 42 61 - -set_location spw.swloop.1.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/rxclko_0 -fixed yes 40 77 -set_location spw.swloop.1.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/r.shftreg -fixed yes 42 80 -set_location spw.swloop.1.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/nr.shftreg\[0\] -fixed yes 42 79 - -set_location spw.swloop.2.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/rxclko_0 -fixed yes 40 84 -set_location spw.swloop.2.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/r.shftreg -fixed yes 42 85 -set_location spw.swloop.2.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/nr.shftreg\[0\] -fixed yes 42 84 - -# Alternative pins (used with FTMCTRL, common bus) - -set_io sdcsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 300 -fixed yes -set_io sdcsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 299 -fixed yes -set_io sdwen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 305 -fixed yes -set_io sdrasn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 306 -fixed yes -set_io sdcasn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 122 -fixed yes -set_io sddqm\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 123 -fixed yes -set_io sddqm\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 128 -fixed yes -set_io sddqm\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 129 -fixed yes -set_io sddqm\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 136 -fixed yes - -# Alternative pins (replaces 1553 interface) - -set_io gpio\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 82 -fixed yes -set_io gpio\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 78 -fixed yes -set_io gpio\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 79 -fixed yes -set_io gpio\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 85 -fixed yes -set_io gpio\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 83 -fixed yes -set_io gpio\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 84 -fixed yes -set_io gpio\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 72 -fixed yes -set_io gpio\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 70 -fixed yes -set_io gpio\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 71 -fixed yes -set_io gpio\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 77 -fixed yes -set_io gpio\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 73 -fixed yes -set_io gpio\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 76 -fixed yes -set_io gpio\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 64 -fixed yes -set_io gpio\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 60 -fixed yes -set_io gpio\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 61 -fixed yes -set_io gpio\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 67 -fixed yes - -# Alternative Ethernet pins -set_io emdio -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 60 -fixed yes -set_io emdc -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 61 -fixed yes -set_io erx_clk -iostd LVTTL -pinname 64 -fixed yes -set_io erx_dv -iostd LVTTL -pinname 65 -fixed yes -set_io erx_crs -iostd LVTTL -pinname 66 -fixed yes -set_io erx_er -iostd LVTTL -pinname 67 -fixed yes -set_io erx_col -iostd LVTTL -pinname 70 -fixed yes -set_io erxd\[0\] -iostd LVTTL -pinname 71 -fixed yes -set_io erxd\[1\] -iostd LVTTL -pinname 72 -fixed yes -set_io erxd\[2\] -iostd LVTTL -pinname 73 -fixed yes -set_io erxd\[3\] -iostd LVTTL -pinname 76 -fixed yes -set_io etx_clk -iostd LVTTL -pinname 77 -fixed yes -set_io etx_en -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 78 -fixed yes -set_io etx_er -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 79 -fixed yes -set_io emdint -iostd LVTTL -pinname 79 -fixed yes -set_io etxd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 82 -fixed yes -set_io etxd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 83 -fixed yes -set_io etxd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 84 -fixed yes -set_io etxd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 85 -fixed yes - -set_io e0mdio -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 60 -fixed yes -set_io e0mdc -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 61 -fixed yes -set_io e0rx_clk -iostd LVTTL -pinname 64 -fixed yes -set_io e0rx_dv -iostd LVTTL -pinname 65 -fixed yes -set_io e0rx_crs -iostd LVTTL -pinname 66 -fixed yes -set_io e0rx_er -iostd LVTTL -pinname 67 -fixed yes -set_io e0rx_col -iostd LVTTL -pinname 70 -fixed yes -set_io e0rxd\[0\] -iostd LVTTL -pinname 71 -fixed yes -set_io e0rxd\[1\] -iostd LVTTL -pinname 72 -fixed yes -set_io e0rxd\[2\] -iostd LVTTL -pinname 73 -fixed yes -set_io e0rxd\[3\] -iostd LVTTL -pinname 76 -fixed yes -set_io e0tx_clk -iostd LVTTL -pinname 77 -fixed yes -set_io e0tx_en -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 78 -fixed yes -set_io e0tx_er -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 79 -fixed yes -set_io e0mdint -iostd LVTTL -pinname 79 -fixed yes -set_io e0txd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 82 -fixed yes -set_io e0txd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 83 -fixed yes -set_io e0txd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 84 -fixed yes -set_io e0txd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 85 -fixed yes - -set_io e1mdio -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 35 -fixed yes -set_io e1mdc -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 37 -fixed yes -set_io e1rx_clk -iostd LVTTL -pinname 31 -fixed yes -set_io e1rx_dv -iostd LVTTL -pinname 29 -fixed yes -set_io e1rx_crs -iostd LVTTL -pinname 30 -fixed yes -set_io e1rx_er -iostd LVTTL -pinname 28 -fixed yes -set_io e1rx_col -iostd LVTTL -pinname 22 -fixed yes -set_io e1rxd\[0\] -iostd LVTTL -pinname 24 -fixed yes -set_io e1rxd\[1\] -iostd LVTTL -pinname 23 -fixed yes -set_io e1rxd\[2\] -iostd LVTTL -pinname 25 -fixed yes -set_io e1rxd\[3\] -iostd LVTTL -pinname 19 -fixed yes -set_io e1tx_clk -iostd LVTTL -pinname 17 -fixed yes -set_io e1tx_en -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 18 -fixed yes -set_io e1tx_er -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 16 -fixed yes -set_io e1mdint -iostd LVTTL -pinname 16 -fixed yes -set_io e1txd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 10 -fixed yes -set_io e1txd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 12 -fixed yes -set_io e1txd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 11 -fixed yes -set_io e1txd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname 13 -fixed yes - - -## Additional pins for Reed-Solomon check bits on common memory bus -# IO bank 0 -set_io cb\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 319 -fixed yes -set_io cb\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 313 -fixed yes - -# IO bank 4 -set_io cb\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 137 -fixed yes - -# IO bank 5 -set_io cb\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 58 -fixed yes -set_io cb\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 55 -fixed yes -set_io cb\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 54 -fixed yes -set_io cb\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 53 -fixed yes -set_io cb\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname 52 -fixed yes diff --git a/boards/gr-cpci-ax/designer_352_CQFP.sdc b/boards/gr-cpci-ax/designer_352_CQFP.sdc deleted file mode 100644 index 12345a15..00000000 --- a/boards/gr-cpci-ax/designer_352_CQFP.sdc +++ /dev/null @@ -1,33 +0,0 @@ -################################################################################ -# Actel Designer Software Release Designer -################################################################################ - -######## Clock Constraints ######## - -create_clock -period 40.0000 [get_ports {clk}] - -#create_clock -period 30.0000 [get_ports {pci_clk}] -# -#create_clock -period 10.0000 [get_ports {spw_clk}] -# -#create_clock -period 10.0000 [get_ports {spwclk}] - - -######## Delay Constraints ######## - -#set_max_delay 7.00 -from [all_inputs] -to [get_clocks {pci_clk}] -#set_max_delay 11.00 -from [get_clocks {pci_clk}] -to [all_outputs] - -#set_max_delay 11.00 -from [all_inputs] -to [all_outputs] - -#set_max_delay 5.00 -from [all_inputs] -to [get_clocks {clk}] -#set_max_delay 10.00 -from [get_clocks {clk}] -to [all_outputs] - - -######## False Path Constraints ######## - - -######## OutPut load Constraints ######## - - -######## Multicycle Constraints ######## diff --git a/boards/gr-cpci-ax/designer_624_CCGA.pdc b/boards/gr-cpci-ax/designer_624_CCGA.pdc deleted file mode 100644 index 5e339145..00000000 --- a/boards/gr-cpci-ax/designer_624_CCGA.pdc +++ /dev/null @@ -1,674 +0,0 @@ -# Actel Physical design constraints file -# Family: Axcelerator , Die: RTAX2000S , Package: ccga624r - -# -# I/O constraints -# - -set_io address\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P9 -fixed yes -set_io address\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K1 -fixed yes -set_io address\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L1 -fixed yes -set_io address\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M5 -fixed yes -set_io address\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L6 -fixed yes -set_io address\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L5 -fixed yes -set_io address\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K2 -fixed yes -set_io address\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L2 -fixed yes -set_io address\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K4 -fixed yes -set_io address\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L4 -fixed yes -set_io address\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J3 -fixed yes -set_io address\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N6 -fixed yes -set_io address\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J2 -fixed yes -set_io address\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J1 -fixed yes -set_io address\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L7 -fixed yes -set_io address\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M7 -fixed yes -set_io address\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M9 -fixed yes -set_io address\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M8 -fixed yes -set_io address\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F1 -fixed yes -set_io address\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G1 -fixed yes -set_io address\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M6 -fixed yes -set_io address\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N8 -fixed yes -set_io address\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N7 -fixed yes -set_io address\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M4 -fixed yes -set_io address\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L3 -fixed yes -set_io address\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M3 -fixed yes -set_io address\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N10 -fixed yes -set_io address\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N9 -fixed yes -set_io bexcn -iostd LVTTL -RES_PULL Up -pinname P8 -fixed yes -set_io brdyn -iostd LVTTL -RES_PULL Up -pinname N3 -fixed yes -set_io cb\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V4 -fixed yes -set_io cb\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y5 -fixed yes -set_io cb\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W5 -fixed yes -set_io cb\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U6 -fixed yes -set_io cb\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U5 -fixed yes -set_io cb\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U3 -fixed yes -set_io cb\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T2 -fixed yes -set_io cb\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U2 -fixed yes -set_io clk -iostd LVTTL -pinname C12 -fixed yes -set_io ctsn\[1\] -iostd LVTTL -pinname J21 -fixed yes -set_io ctsn\[2\] -iostd LVTTL -pinname K19 -fixed yes -set_io data\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H2 -fixed yes -set_io data\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F3 -fixed yes -set_io data\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E3 -fixed yes -set_io data\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G4 -fixed yes -set_io data\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G3 -fixed yes -set_io data\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K8 -fixed yes -set_io data\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L8 -fixed yes -set_io data\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W2 -fixed yes -set_io data\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y2 -fixed yes -set_io data\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R6 -fixed yes -set_io data\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T6 -fixed yes -set_io data\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E2 -fixed yes -set_io data\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T7 -fixed yes -set_io data\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U7 -fixed yes -set_io data\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V2 -fixed yes -set_io data\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R4 -fixed yes -set_io data\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T4 -fixed yes -set_io data\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R3 -fixed yes -set_io data\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R5 -fixed yes -set_io data\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA1 -fixed yes -set_io data\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB1 -fixed yes -set_io data\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R8 -fixed yes -set_io data\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F2 -fixed yes -set_io data\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T8 -fixed yes -set_io data\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W1 -fixed yes -set_io data\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H4 -fixed yes -set_io data\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J4 -fixed yes -set_io data\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H5 -fixed yes -set_io data\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H6 -fixed yes -set_io data\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D2 -fixed yes -set_io data\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J6 -fixed yes -set_io data\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J5 -fixed yes -set_io dsuact -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H23 -fixed yes -set_io dsubre -iostd LVTTL -pinname E24 -fixed yes -set_io dsuen -iostd LVTTL -pinname G23 -fixed yes -set_io dsurx -iostd LVTTL -pinname E23 -fixed yes -set_io dsutx -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F23 -fixed yes -set_io errorn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -RES_PULL Up -pinname D19 -fixed yes -set_io geniohigh\[100\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R18 -fixed yes -set_io geniohigh\[101\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R24 -fixed yes -set_io geniohigh\[102\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T18 -fixed yes -set_io geniohigh\[103\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T24 -fixed yes -set_io geniohigh\[104\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T20 -fixed yes -set_io geniohigh\[105\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U25 -fixed yes -set_io geniohigh\[106\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R20 -fixed yes -set_io geniohigh\[107\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T25 -fixed yes -set_io geniohigh\[108\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T19 -fixed yes -set_io geniohigh\[109\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W25 -fixed yes -set_io geniohigh\[110\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U19 -fixed yes -set_io geniohigh\[111\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y25 -fixed yes -set_io geniohigh\[112\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V20 -fixed yes -set_io geniohigh\[113\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB25 -fixed yes -set_io geniohigh\[114\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U20 -fixed yes -set_io geniohigh\[115\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA25 -fixed yes -set_io geniohigh\[92\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P19 -fixed yes -set_io geniohigh\[93\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P23 -fixed yes -set_io geniohigh\[94\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P20 -fixed yes -set_io geniohigh\[95\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R23 -fixed yes -set_io geniohigh\[96\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R22 -fixed yes -set_io geniohigh\[97\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R25 -fixed yes -set_io geniohigh\[98\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P22 -fixed yes -set_io geniohigh\[99\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P25 -fixed yes -set_io geniolow\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M25 -fixed yes -set_io geniolow\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N25 -fixed yes -set_io geniolow\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P17 -fixed yes -set_io geniolow\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P18 -fixed yes -set_io geniolow\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M23 -fixed yes -set_io geniolow\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N23 -fixed yes -set_io geniolow\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M22 -fixed yes -set_io geniolow\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N22 -fixed yes -set_io geniolow\[32\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K25 -fixed yes -set_io geniolow\[33\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L25 -fixed yes -set_io geniolow\[34\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M24 -fixed yes -set_io geniolow\[35\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N24 -fixed yes -set_io geniolow\[36\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J25 -fixed yes -set_io geniolow\[37\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N18 -fixed yes -set_io geniolow\[38\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N19 -fixed yes -set_io geniolow\[39\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M21 -fixed yes -set_io geniolow\[40\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M20 -fixed yes -set_io geniolow\[41\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N17 -fixed yes -set_io geniolow\[42\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K24 -fixed yes -set_io geniolow\[43\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L24 -fixed yes -set_io geniolow\[44\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L20 -fixed yes -set_io geniolow\[45\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L21 -fixed yes -set_io geniolow\[46\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F25 -fixed yes -set_io geniolow\[47\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G25 -fixed yes -set_io geniolow\[48\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K22 -fixed yes -set_io geniolow\[49\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L22 -fixed yes -set_io geniolow\[50\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N16 -fixed yes -set_io geniolow\[51\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L23 -fixed yes -set_io geniolow\[52\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H24 -fixed yes -set_io geniolow\[53\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J24 -fixed yes -set_io geniolow\[54\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M18 -fixed yes -set_io geniolow\[55\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M19 -fixed yes -set_io gpio\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F24 -fixed yes -set_io gpio\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E18 -fixed yes -set_io gpio\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F18 -fixed yes -set_io gpio\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G21 -fixed yes -set_io gpio\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G20 -fixed yes -set_io gpio\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F20 -fixed yes -set_io gpio\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F19 -fixed yes -set_io gpio\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G24 -fixed yes -set_io gpio\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K18 -fixed yes -set_io gpio\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L18 -fixed yes -set_io gpio\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H22 -fixed yes -set_io gpio\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J22 -fixed yes -set_io gpio\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G22 -fixed yes -set_io gpio\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M17 -fixed yes -set_io gpio\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H20 -fixed yes -set_io gpio\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H19 -fixed yes -set_io iosn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M1 -fixed yes -set_io oen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N1 -fixed yes -set_io pci_66 -iostd PCI -pinname V13 -fixed yes -set_io pci_ack64n -iostd PCI -pinname Y13 -fixed yes -set_io pci_ad\[0\] -iostd PCI -pinname W11 -fixed yes -set_io pci_ad\[10\] -iostd PCI -pinname AB10 -fixed yes -set_io pci_ad\[11\] -iostd PCI -pinname AB11 -fixed yes -set_io pci_ad\[12\] -iostd PCI -pinname AD9 -fixed yes -set_io pci_ad\[13\] -iostd PCI -pinname AD10 -fixed yes -set_io pci_ad\[14\] -iostd PCI -pinname V11 -fixed yes -set_io pci_ad\[15\] -iostd PCI -pinname AD7 -fixed yes -set_io pci_ad\[16\] -iostd PCI -pinname AC8 -fixed yes -set_io pci_ad\[17\] -iostd PCI -pinname AB7 -fixed yes -set_io pci_ad\[18\] -iostd PCI -pinname AC7 -fixed yes -set_io pci_ad\[19\] -iostd PCI -pinname AA8 -fixed yes -set_io pci_ad\[1\] -iostd PCI -pinname W12 -fixed yes -set_io pci_ad\[20\] -iostd PCI -pinname Y8 -fixed yes -set_io pci_ad\[21\] -iostd PCI -pinname V8 -fixed yes -set_io pci_ad\[22\] -iostd PCI -pinname V7 -fixed yes -set_io pci_ad\[23\] -iostd PCI -pinname Y7 -fixed yes -set_io pci_ad\[24\] -iostd PCI -pinname W7 -fixed yes -set_io pci_ad\[25\] -iostd PCI -pinname AC5 -fixed yes -set_io pci_ad\[26\] -iostd PCI -pinname AC6 -fixed yes -set_io pci_ad\[27\] -iostd PCI -pinname Y6 -fixed yes -set_io pci_ad\[28\] -iostd PCI -pinname W6 -fixed yes -set_io pci_ad\[29\] -iostd PCI -pinname AB6 -fixed yes -set_io pci_ad\[2\] -iostd PCI -pinname AA11 -fixed yes -set_io pci_ad\[30\] -iostd PCI -pinname AA6 -fixed yes -set_io pci_ad\[31\] -iostd PCI -pinname Y3 -fixed yes -set_io pci_ad\[32\] -iostd PCI -pinname AD21 -fixed yes -set_io pci_ad\[33\] -iostd PCI -pinname AD22 -fixed yes -set_io pci_ad\[34\] -iostd PCI -pinname AA19 -fixed yes -set_io pci_ad\[35\] -iostd PCI -pinname Y18 -fixed yes -set_io pci_ad\[36\] -iostd PCI -pinname Y19 -fixed yes -set_io pci_ad\[37\] -iostd PCI -pinname AB19 -fixed yes -set_io pci_ad\[38\] -iostd PCI -pinname AB18 -fixed yes -set_io pci_ad\[39\] -iostd PCI -pinname V19 -fixed yes -set_io pci_ad\[3\] -iostd PCI -pinname Y11 -fixed yes -set_io pci_ad\[40\] -iostd PCI -pinname W19 -fixed yes -set_io pci_ad\[41\] -iostd PCI -pinname AC19 -fixed yes -set_io pci_ad\[42\] -iostd PCI -pinname AB17 -fixed yes -set_io pci_ad\[43\] -iostd PCI -pinname AC17 -fixed yes -set_io pci_ad\[44\] -iostd PCI -pinname AD19 -fixed yes -set_io pci_ad\[45\] -iostd PCI -pinname AD20 -fixed yes -set_io pci_ad\[46\] -iostd PCI -pinname AC18 -fixed yes -set_io pci_ad\[47\] -iostd PCI -pinname Y17 -fixed yes -set_io pci_ad\[48\] -iostd PCI -pinname AA17 -fixed yes -set_io pci_ad\[49\] -iostd PCI -pinname AE22 -fixed yes -set_io pci_ad\[4\] -iostd PCI -pinname AE9 -fixed yes -set_io pci_ad\[50\] -iostd PCI -pinname W18 -fixed yes -set_io pci_ad\[51\] -iostd PCI -pinname V18 -fixed yes -set_io pci_ad\[52\] -iostd PCI -pinname U18 -fixed yes -set_io pci_ad\[53\] -iostd PCI -pinname AE21 -fixed yes -set_io pci_ad\[54\] -iostd PCI -pinname AB16 -fixed yes -set_io pci_ad\[55\] -iostd PCI -pinname AD17 -fixed yes -set_io pci_ad\[56\] -iostd PCI -pinname AD18 -fixed yes -set_io pci_ad\[57\] -iostd PCI -pinname V17 -fixed yes -set_io pci_ad\[58\] -iostd PCI -pinname W17 -fixed yes -set_io pci_ad\[59\] -iostd PCI -pinname AE19 -fixed yes -set_io pci_ad\[5\] -iostd PCI -pinname AE6 -fixed yes -set_io pci_ad\[60\] -iostd PCI -pinname AE20 -fixed yes -set_io pci_ad\[61\] -iostd PCI -pinname AC15 -fixed yes -set_io pci_ad\[62\] -iostd PCI -pinname AD15 -fixed yes -set_io pci_ad\[63\] -iostd PCI -pinname AD16 -fixed yes -set_io pci_ad\[6\] -iostd PCI -pinname AE7 -fixed yes -set_io pci_ad\[7\] -iostd PCI -pinname Y10 -fixed yes -set_io pci_ad\[8\] -iostd PCI -pinname W10 -fixed yes -set_io pci_ad\[9\] -iostd PCI -pinname T13 -fixed yes -set_io pci_arb_gnt\[0\] -iostd PCI -pinname AE15 -fixed yes -set_io pci_arb_gnt\[1\] -iostd PCI -pinname AE16 -fixed yes -set_io pci_arb_gnt\[2\] -iostd PCI -pinname W16 -fixed yes -set_io pci_arb_gnt\[3\] -iostd PCI -pinname AE14 -fixed yes -set_io pci_arb_gnt\[4\] -iostd PCI -pinname V15 -fixed yes -set_io pci_arb_gnt\[5\] -iostd PCI -pinname Y20 -fixed yes -set_io pci_arb_gnt\[6\] -iostd PCI -pinname W20 -fixed yes -set_io pci_arb_gnt\[7\] -iostd PCI -pinname V16 -fixed yes -set_io pci_arb_req\[0\] -iostd LVTTL -RES_PULL Up -pinname AD14 -fixed yes -set_io pci_arb_req\[1\] -iostd LVTTL -RES_PULL Up -pinname AC14 -fixed yes -set_io pci_arb_req\[2\] -iostd LVTTL -RES_PULL Up -pinname W14 -fixed yes -set_io pci_arb_req\[3\] -iostd LVTTL -RES_PULL Up -pinname W15 -fixed yes -set_io pci_arb_req\[4\] -iostd LVTTL -RES_PULL Up -pinname AC13 -fixed yes -set_io pci_arb_req\[5\] -iostd LVTTL -RES_PULL Up -pinname AC21 -fixed yes -set_io pci_arb_req\[6\] -iostd LVTTL -RES_PULL Up -pinname AC20 -fixed yes -set_io pci_arb_req\[7\] -iostd LVTTL -RES_PULL Up -pinname AD13 -fixed yes -set_io pci_cbe\[0\] -iostd PCI -pinname W8 -fixed yes -set_io pci_cbe\[1\] -iostd PCI -pinname W9 -fixed yes -set_io pci_cbe\[2\] -iostd PCI -pinname AE4 -fixed yes -set_io pci_cbe\[3\] -iostd PCI -pinname AE5 -fixed yes -set_io pci_cbe\[4\] -iostd PCI -pinname Y15 -fixed yes -set_io pci_cbe\[5\] -iostd PCI -pinname Y16 -fixed yes -set_io pci_cbe\[6\] -iostd PCI -pinname AB14 -fixed yes -set_io pci_cbe\[7\] -iostd PCI -pinname AB15 -fixed yes -set_io pci_clk -iostd PCI -pinname G14 -fixed yes -set_io pci_devsel -iostd PCI -pinname AB9 -fixed yes -set_io pci_en64 -iostd PCI -pinname AD12 -fixed yes -set_io pci_frame -iostd PCI -pinname AC9 -fixed yes -set_io pci_gnt -iostd PCI -pinname AE10 -fixed yes -set_io pci_host -iostd PCI -pinname U13 -fixed yes -set_io pci_idsel -iostd PCI -pinname U8 -fixed yes -set_io pci_irdy -iostd PCI -pinname AA9 -fixed yes -set_io pci_lock -iostd PCI -pinname Y9 -fixed yes -set_io pci_par -iostd PCI -pinname V10 -fixed yes -set_io pci_par64 -iostd PCI -pinname W13 -fixed yes -set_io pci_perr -iostd PCI -pinname V9 -fixed yes -set_io pci_req -iostd PCI -pinname AE11 -fixed yes -set_io pci_req64n -iostd PCI -OUT_DRIVE 16 -pinname AC12 -fixed yes -set_io pci_rst -iostd PCI -pinname AB8 -fixed yes -set_io pci_serr -iostd PCI -pinname AD8 -fixed yes -set_io pci_stop -iostd PCI -pinname AD5 -fixed yes -set_io pci_trdy -iostd PCI -pinname AD6 -fixed yes -set_io pciio\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U23 -fixed yes -set_io pciio\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y23 -fixed yes -set_io pciio\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA23 -fixed yes -set_io pciio\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W22 -fixed yes -set_io pciio\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W23 -fixed yes -set_io pciio\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y22 -fixed yes -set_io pciio\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y21 -fixed yes -set_io pciio\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N20 -fixed yes -set_io pciio\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P24 -fixed yes -set_io pciio\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P21 -fixed yes -set_io pciio\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R19 -fixed yes -set_io pciio\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y24 -fixed yes -set_io pciio\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R21 -fixed yes -set_io pciio\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T22 -fixed yes -set_io pciio\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W24 -fixed yes -set_io pciio\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB24 -fixed yes -set_io pciio\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA3 -fixed yes -set_io pciio\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V3 -fixed yes -set_io pciio\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W3 -fixed yes -set_io pciio\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA2 -fixed yes -set_io pciio\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB2 -fixed yes -set_io pciio\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V6 -fixed yes -set_io pciio\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U24 -fixed yes -set_io pciio\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W4 -fixed yes -set_io pciio\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U4 -fixed yes -set_io pciio\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA24 -fixed yes -set_io pciio\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V22 -fixed yes -set_io pciio\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V23 -fixed yes -set_io pciio\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U22 -fixed yes -set_io pciio\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V24 -fixed yes -set_io pciio\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V21 -fixed yes -set_io pciio\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U21 -fixed yes -set_io ramben\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y1 -fixed yes -set_io ramben\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P2 -fixed yes -set_io ramben\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K7 -fixed yes -set_io ramben\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K6 -fixed yes -set_io ramoen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P3 -fixed yes -set_io ramoen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N4 -fixed yes -set_io ramoen\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U1 -fixed yes -set_io ramoen\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T1 -fixed yes -set_io ramoen\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R2 -fixed yes -set_io ramsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M2 -fixed yes -set_io ramsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P4 -fixed yes -set_io ramsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P1 -fixed yes -set_io ramsn\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P6 -fixed yes -set_io ramsn\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P5 -fixed yes -set_io read -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R7 -fixed yes -set_io resetn -iostd LVTTL -pinname D24 -fixed yes -set_io romsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N2 -fixed yes -set_io romsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R1 -fixed yes -set_io rtsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -pinname J20 -fixed yes -set_io rtsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -pinname E25 -fixed yes -set_io rwen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H3 -fixed yes -set_io rwen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G2 -fixed yes -set_io rwen\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E1 -fixed yes -set_io rwen\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D1 -fixed yes -set_io rxd\[1\] -iostd LVTTL -pinname J23 -fixed yes -set_io rxd\[2\] -iostd LVTTL -pinname D25 -fixed yes -set_io sa\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D10 -fixed yes -set_io sa\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H17 -fixed yes -set_io sa\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B17 -fixed yes -set_io sa\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B16 -fixed yes -set_io sa\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C17 -fixed yes -set_io sa\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B18 -fixed yes -set_io sa\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H18 -fixed yes -set_io sa\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D9 -fixed yes -set_io sa\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A7 -fixed yes -set_io sa\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A6 -fixed yes -set_io sa\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G9 -fixed yes -set_io sa\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G8 -fixed yes -set_io sa\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A22 -fixed yes -set_io sa\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A21 -fixed yes -set_io sa\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F16 -fixed yes -set_io sa\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G17 -fixed yes -set_io sd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D7 -fixed yes -set_io sd\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H7 -fixed yes -set_io sd\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J8 -fixed yes -set_io sd\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J7 -fixed yes -set_io sd\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B6 -fixed yes -set_io sd\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E9 -fixed yes -set_io sd\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D8 -fixed yes -set_io sd\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B12 -fixed yes -set_io sd\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C13 -fixed yes -set_io sd\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G15 -fixed yes -set_io sd\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B14 -fixed yes -set_io sd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E7 -fixed yes -set_io sd\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B13 -fixed yes -set_io sd\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H13 -fixed yes -set_io sd\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D14 -fixed yes -set_io sd\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C14 -fixed yes -set_io sd\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A16 -fixed yes -set_io sd\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A15 -fixed yes -set_io sd\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H15 -fixed yes -set_io sd\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E15 -fixed yes -set_io sd\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F15 -fixed yes -set_io sd\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A17 -fixed yes -set_io sd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G7 -fixed yes -set_io sd\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G16 -fixed yes -set_io sd\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H16 -fixed yes -set_io sd\[32\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B7 -fixed yes -set_io sd\[33\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F10 -fixed yes -set_io sd\[34\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F9 -fixed yes -set_io sd\[35\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C11 -fixed yes -set_io sd\[36\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B8 -fixed yes -set_io sd\[37\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H10 -fixed yes -set_io sd\[38\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H9 -fixed yes -set_io sd\[39\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A9 -fixed yes -set_io sd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G6 -fixed yes -set_io sd\[40\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B9 -fixed yes -set_io sd\[41\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B11 -fixed yes -set_io sd\[42\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B10 -fixed yes -set_io sd\[43\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E11 -fixed yes -set_io sd\[44\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F11 -fixed yes -set_io sd\[45\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D12 -fixed yes -set_io sd\[46\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D11 -fixed yes -set_io sd\[47\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A11 -fixed yes -set_io sd\[48\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J18 -fixed yes -set_io sd\[49\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J19 -fixed yes -set_io sd\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B5 -fixed yes -set_io sd\[50\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B20 -fixed yes -set_io sd\[51\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B19 -fixed yes -set_io sd\[52\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E17 -fixed yes -set_io sd\[53\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F17 -fixed yes -set_io sd\[54\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B22 -fixed yes -set_io sd\[55\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B21 -fixed yes -set_io sd\[56\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G18 -fixed yes -set_io sd\[57\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G19 -fixed yes -set_io sd\[58\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C19 -fixed yes -set_io sd\[59\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C18 -fixed yes -set_io sd\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B4 -fixed yes -set_io sd\[60\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D18 -fixed yes -set_io sd\[61\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D17 -fixed yes -set_io sd\[62\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C21 -fixed yes -set_io sd\[63\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C20 -fixed yes -set_io sd\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C7 -fixed yes -set_io sd\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F8 -fixed yes -set_io sd\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F7 -fixed yes -set_io sd\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H8 -fixed yes -set_io sdcasn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K13 -fixed yes -set_io sdclk -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G12 -fixed yes -set_io sdclkfb -iostd LVTTL -pinname G13 -fixed yes -set_io sdcsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A10 -fixed yes -set_io sdcsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J13 -fixed yes -set_io sddqm\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C9 -fixed yes -set_io sddqm\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C8 -fixed yes -set_io sddqm\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A20 -fixed yes -set_io sddqm\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A19 -fixed yes -set_io sddqm\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A5 -fixed yes -set_io sddqm\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A4 -fixed yes -set_io sddqm\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D16 -fixed yes -set_io sddqm\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D15 -fixed yes -set_io sdrasn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H11 -fixed yes -set_io sdwen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G11 -fixed yes -set_io txd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L19 -fixed yes -set_io txd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K20 -fixed yes -set_io wdogn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -RES_PULL Up -pinname D20 -fixed yes -set_io writen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P7 -fixed yes - -# SDRAM with EDAC or Reed-Solomon codec -set_io scb\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B7 -fixed yes -set_io scb\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B10 -fixed yes -set_io scb\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E11 -fixed yes -set_io scb\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F11 -fixed yes -set_io scb\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D12 -fixed yes -set_io scb\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D11 -fixed yes -set_io scb\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A11 -fixed yes -set_io scb\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F10 -fixed yes -set_io scb\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F9 -fixed yes -set_io scb\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C11 -fixed yes -set_io scb\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B8 -fixed yes -set_io scb\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H10 -fixed yes -set_io scb\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H9 -fixed yes -set_io scb\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A9 -fixed yes -set_io scb\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B9 -fixed yes -set_io scb\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B11 -fixed yes - -# LEON3FT-RTAX: GR-RTAX-MEZZ mezzanine board -set_io busainen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N23 -fixed yes -set_io busainn\[0\] -iostd LVTTL -pinname N22 -fixed yes -set_io busainp\[0\] -iostd LVTTL -pinname M22 -fixed yes -set_io busaoutin\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P17 -fixed yes -set_io busaoutn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M23 -fixed yes -set_io busaoutp\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P18 -fixed yes -set_io busbinen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N24 -fixed yes -set_io busbinn\[0\] -iostd LVTTL -pinname N18 -fixed yes -set_io busbinp\[0\] -iostd LVTTL -pinname J25 -fixed yes -set_io busboutin\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K25 -fixed yes -set_io busboutn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M24 -fixed yes -set_io busboutp\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L25 -fixed yes -# alternative names -set_io busainen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N23 -fixed yes -set_io busainn -iostd LVTTL -pinname N22 -fixed yes -set_io busainp -iostd LVTTL -pinname M22 -fixed yes -set_io busaoutin -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P17 -fixed yes -set_io busaoutn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M23 -fixed yes -set_io busaoutp -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P18 -fixed yes -set_io busbinen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N24 -fixed yes -set_io busbinn -iostd LVTTL -pinname N18 -fixed yes -set_io busbinp -iostd LVTTL -pinname J25 -fixed yes -set_io busboutin -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K25 -fixed yes -set_io busboutn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M24 -fixed yes -set_io busboutp -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L25 -fixed yes - -set_io canrx\[0\] -iostd LVTTL -pinname N25 -fixed yes -set_io cantx\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M25 -fixed yes - -# alternative names -set_io can_rxd -iostd LVTTL -pinname N25 -fixed yes -set_io can_txd -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M25 -fixed yes - -set_io spwclk -iostd LVTTL -pinname U4 -fixed yes - -# LEON3FT-RTAX: GR-AX-SPW accessory board, and GR-RTAX-MEZZ mezzanine board -set_io spw_rxd\[0\] -iostd LVDS -pinname P19 -fixed yes -set_io spw_rxd\[1\] -iostd LVDS -pinname R18 -fixed yes -set_io spw_rxd\[2\] -iostd LVDS -pinname T19 -fixed yes -set_io spw_rxd\[3\] -iostd LVDS -pinname U23 -fixed yes -set_io spw_rxdn\[0\] -iostd LVDS -pinname P20 -fixed yes -set_io spw_rxdn\[1\] -iostd LVDS -pinname T18 -fixed yes -set_io spw_rxdn\[2\] -iostd LVDS -pinname U19 -fixed yes -set_io spw_rxdn\[3\] -iostd LVDS -pinname U24 -fixed yes -set_io spw_rxs\[0\] -iostd LVDS -pinname P23 -fixed yes -set_io spw_rxs\[1\] -iostd LVDS -pinname R24 -fixed yes -set_io spw_rxs\[2\] -iostd LVDS -pinname W25 -fixed yes -set_io spw_rxs\[3\] -iostd LVDS -pinname Y24 -fixed yes -set_io spw_rxsn\[0\] -iostd LVDS -pinname R23 -fixed yes -set_io spw_rxsn\[1\] -iostd LVDS -pinname T24 -fixed yes -set_io spw_rxsn\[2\] -iostd LVDS -pinname Y25 -fixed yes -set_io spw_rxsn\[3\] -iostd LVDS -pinname AA24 -fixed yes -set_io spw_txd\[0\] -iostd LVDS -pinname P25 -fixed yes -set_io spw_txd\[1\] -iostd LVDS -pinname T25 -fixed yes -set_io spw_txd\[2\] -iostd LVDS -pinname AA25 -fixed yes -set_io spw_txd\[3\] -iostd LVDS -pinname V24 -fixed yes -set_io spw_txdn\[0\] -iostd LVDS -pinname R25 -fixed yes -set_io spw_txdn\[1\] -iostd LVDS -pinname U25 -fixed yes -set_io spw_txdn\[2\] -iostd LVDS -pinname AB25 -fixed yes -set_io spw_txdn\[3\] -iostd LVDS -pinname V23 -fixed yes -set_io spw_txs\[0\] -iostd LVDS -pinname P22 -fixed yes -set_io spw_txs\[1\] -iostd LVDS -pinname R20 -fixed yes -set_io spw_txs\[2\] -iostd LVDS -pinname U20 -fixed yes -set_io spw_txs\[3\] -iostd LVDS -pinname U22 -fixed yes -set_io spw_txsn\[0\] -iostd LVDS -pinname R22 -fixed yes -set_io spw_txsn\[1\] -iostd LVDS -pinname T20 -fixed yes -set_io spw_txsn\[2\] -iostd LVDS -pinname V20 -fixed yes -set_io spw_txsn\[3\] -iostd LVDS -pinname V22 -fixed yes - -set_location spw.swloop.0.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/rxclko_0 -fixed yes 1051 48 -set_location spw.swloop.0.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/r.shftreg -fixed yes 1052 52 -set_location spw.swloop.0.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/nr.shftreg\[0\] -fixed yes 1052 51 - -set_location spw.swloop.1.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/rxclko_0 -fixed yes 1051 34 -set_location spw.swloop.1.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/r.shftreg -fixed yes 1052 34 -set_location spw.swloop.1.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/nr.shftreg\[0\] -fixed yes 1052 33 - -set_location spw.swloop.2.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/rxclko_0 -fixed yes 1051 26 -set_location spw.swloop.2.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/r.shftreg -fixed yes 1052 26 -set_location spw.swloop.2.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/nr.shftreg\[0\] -fixed yes 1052 25 - -# LEON3FT-RTAX additions supported on GR-CPCI-TEST mezzanine board -set_io busainen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N17 -fixed yes -set_io busainn\[1\] -iostd LVTTL -pinname L24 -fixed yes -set_io busainp\[1\] -iostd LVTTL -pinname K24 -fixed yes -set_io busaoutin\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N19 -fixed yes -set_io busaoutn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M20 -fixed yes -set_io busaoutp\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M21 -fixed yes -set_io busbinen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G25 -fixed yes -set_io busbinn\[1\] -iostd LVTTL -pinname L22 -fixed yes -set_io busbinp\[1\] -iostd LVTTL -pinname K22 -fixed yes -set_io busboutin\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L20 -fixed yes -set_io busboutn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F25 -fixed yes -set_io busboutp\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L21 -fixed yes - -#set_io canen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H24 -fixed yes -#set_io canen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M19 -fixed yes - -set_io romsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H24 -fixed yes -set_io romsn\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M19 -fixed yes - -set_io spw_clk -iostd LVTTL -pinname G14 -fixed yes - -set_io dsutck -iostd LVCMOS25 -pinname U23 -fixed yes -set_io dsutdi -iostd LVCMOS25 -pinname Y24 -fixed yes -set_io dsutdo -iostd LVCMOS25 -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V22 -fixed yes -set_io dsutms -iostd LVCMOS25 -pinname V23 -fixed yes - -# LEON3FT-RTAX additions supported on GR-CPCI-1553 mezzanine board -set_io canrx\[1\] -iostd LVTTL -pinname J24 -fixed yes -set_io cantx\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M18 -fixed yes - -# GPIO pins 16-31: -set_io gpio\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N19 -fixed yes -set_io gpio\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M21 -fixed yes -set_io gpio\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M20 -fixed yes -set_io gpio\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N17 -fixed yes -set_io gpio\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K24 -fixed yes -set_io gpio\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L24 -fixed yes -set_io gpio\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L20 -fixed yes -set_io gpio\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L21 -fixed yes -set_io gpio\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F25 -fixed yes -set_io gpio\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G25 -fixed yes -set_io gpio\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K22 -fixed yes -set_io gpio\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L22 -fixed yes -set_io gpio\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N16 -fixed yes -set_io gpio\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L23 -fixed yes -set_io gpio\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V3 -fixed yes -set_io gpio\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA2 -fixed yes - - -# Ethernet pins for GR-CPCI-TEST mezzanine board and GR-XC3S-RMII -set_io emdio -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname U4 -fixed yes -set_io emdc -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname V6 -fixed yes -set_io erx_clk -iostd LVTTL -pinname N19 -fixed yes -set_io erx_dv -iostd LVTTL -pinname M21 -fixed yes -set_io erx_crs -iostd LVTTL -pinname M20 -fixed yes -set_io erx_er -iostd LVTTL -pinname N17 -fixed yes -set_io erx_col -iostd LVTTL -pinname K24 -fixed yes -set_io erxd\[0\] -iostd LVTTL -pinname L24 -fixed yes -set_io erxd\[1\] -iostd LVTTL -pinname L20 -fixed yes -set_io erxd\[2\] -iostd LVTTL -pinname L21 -fixed yes -set_io erxd\[3\] -iostd LVTTL -pinname F25 -fixed yes -set_io etx_clk -iostd LVTTL -pinname G25 -fixed yes -set_io etx_en -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname V3 -fixed yes -set_io etxd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname K22 -fixed yes -set_io etxd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname L22 -fixed yes -set_io etxd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname N16 -fixed yes -set_io etxd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname L23 -fixed yes -set_io etx_er -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AA2 -fixed yes -set_io emdint -iostd LVTTL -pinname AA2 -fixed yes - -set_io e0mdio -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname U4 -fixed yes -set_io e0mdc -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname V6 -fixed yes -set_io e0rx_clk -iostd LVTTL -pinname N19 -fixed yes -set_io e0rx_dv -iostd LVTTL -pinname M21 -fixed yes -set_io e0rx_crs -iostd LVTTL -pinname M20 -fixed yes -set_io e0rx_er -iostd LVTTL -pinname N17 -fixed yes -set_io e0rx_col -iostd LVTTL -pinname K24 -fixed yes -set_io e0rxd\[0\] -iostd LVTTL -pinname L24 -fixed yes -set_io e0rxd\[1\] -iostd LVTTL -pinname L20 -fixed yes -set_io e0rxd\[2\] -iostd LVTTL -pinname L21 -fixed yes -set_io e0rxd\[3\] -iostd LVTTL -pinname F25 -fixed yes -set_io e0tx_clk -iostd LVTTL -pinname G25 -fixed yes -set_io e0tx_en -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname V3 -fixed yes -set_io e0tx_er -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AA2 -fixed yes -set_io e0mdint -iostd LVTTL -pinname AA2 -fixed yes -set_io e0txd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname K22 -fixed yes -set_io e0txd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname L22 -fixed yes -set_io e0txd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname N16 -fixed yes -set_io e0txd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname L23 -fixed yes - -set_io e1mdio -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname U22 -fixed yes -set_io e1mdc -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname V21 -fixed yes -set_io e1rx_clk -iostd LVTTL -pinname U21 -fixed yes -set_io e1rx_dv -iostd LVTTL -pinname AA23 -fixed yes -set_io e1rx_crs -iostd LVTTL -pinname Y23 -fixed yes -set_io e1rx_er -iostd LVTTL -pinname W22 -fixed yes -set_io e1rx_col -iostd LVTTL -pinname V24 -fixed yes -set_io e1rxd\[0\] -iostd LVTTL -pinname W23 -fixed yes -set_io e1rxd\[1\] -iostd LVTTL -pinname Y22 -fixed yes -set_io e1rxd\[2\] -iostd LVTTL -pinname Y21 -fixed yes -set_io e1rxd\[3\] -iostd LVTTL -pinname N20 -fixed yes -set_io e1tx_clk -iostd LVTTL -pinname P24 -fixed yes -set_io e1tx_en -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname R19 -fixed yes -set_io e1tx_er -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname P21 -fixed yes -set_io e1mdint -iostd LVTTL -pinname P21 -fixed yes -set_io e1txd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname R21 -fixed yes -set_io e1txd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname T22 -fixed yes -set_io e1txd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname W24 -fixed yes -set_io e1txd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AB24 -fixed yes - -# Extra PCI interrupt signals: -# PCI_INTA -set_io pci_int\[0\] -iostd PCI -pinname AA3 -fixed yes - -# PCI_INTB -set_io pci_int\[1\] -iostd PCI -pinname W3 -fixed yes - -# PCI_INTC -set_io pci_int\[2\] -iostd PCI -pinname AB2 -fixed yes - -# PCI_INTD -set_io pci_int\[3\] -iostd PCI -pinname W4 -fixed yes -set_io pci_int -iostd PCI -pinname W4 -fixed yes - -# FIFO pins for GR-CPCI-TEST mezzanine board and GR-FIFO test board -set_io fifoefn -iostd LVTTL -RES_PULL Up -pinname U4 -fixed yes -set_io fifoffn -iostd LVTTL -RES_PULL Up -pinname V6 -fixed yes -set_io fifowen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V3 -fixed yes -set_io fiforen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA2 -fixed yes -set_io fifop\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N25 -fixed yes -set_io fifop\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M25 -fixed yes -set_io fifod\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M18 -fixed yes -set_io fifod\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J24 -fixed yes -set_io fifod\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L23 -fixed yes -set_io fifod\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N16 -fixed yes -set_io fifod\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L22 -fixed yes -set_io fifod\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K22 -fixed yes -set_io fifod\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G25 -fixed yes -set_io fifod\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F25 -fixed yes -set_io fifod\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L21 -fixed yes -set_io fifod\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L20 -fixed yes -set_io fifod\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L24 -fixed yes -set_io fifod\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K24 -fixed yes -set_io fifod\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N17 -fixed yes -set_io fifod\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M20 -fixed yes -set_io fifod\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M21 -fixed yes -set_io fifod\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N19 -fixed yes diff --git a/boards/gr-cpci-ax/designer_624_CCGA.sdc b/boards/gr-cpci-ax/designer_624_CCGA.sdc deleted file mode 100644 index 12345a15..00000000 --- a/boards/gr-cpci-ax/designer_624_CCGA.sdc +++ /dev/null @@ -1,33 +0,0 @@ -################################################################################ -# Actel Designer Software Release Designer -################################################################################ - -######## Clock Constraints ######## - -create_clock -period 40.0000 [get_ports {clk}] - -#create_clock -period 30.0000 [get_ports {pci_clk}] -# -#create_clock -period 10.0000 [get_ports {spw_clk}] -# -#create_clock -period 10.0000 [get_ports {spwclk}] - - -######## Delay Constraints ######## - -#set_max_delay 7.00 -from [all_inputs] -to [get_clocks {pci_clk}] -#set_max_delay 11.00 -from [get_clocks {pci_clk}] -to [all_outputs] - -#set_max_delay 11.00 -from [all_inputs] -to [all_outputs] - -#set_max_delay 5.00 -from [all_inputs] -to [get_clocks {clk}] -#set_max_delay 10.00 -from [get_clocks {clk}] -to [all_outputs] - - -######## False Path Constraints ######## - - -######## OutPut load Constraints ######## - - -######## Multicycle Constraints ######## diff --git a/boards/gr-cpci-ax/designer_896_FBGA.pdc b/boards/gr-cpci-ax/designer_896_FBGA.pdc deleted file mode 100644 index 646dd6f7..00000000 --- a/boards/gr-cpci-ax/designer_896_FBGA.pdc +++ /dev/null @@ -1,670 +0,0 @@ -# Actel Physical design constraints file -# Family: Axcelerator , Die: AX2000 , Package: fbga896 - -# -# I/O constraints -# - -set_io address\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R8 -fixed yes -set_io address\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L1 -fixed yes -set_io address\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M1 -fixed yes -set_io address\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M4 -fixed yes -set_io address\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N7 -fixed yes -set_io address\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N6 -fixed yes -set_io address\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L3 -fixed yes -set_io address\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M3 -fixed yes -set_io address\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N8 -fixed yes -set_io address\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N9 -fixed yes -set_io address\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L6 -fixed yes -set_io address\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R9 -fixed yes -set_io address\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K4 -fixed yes -set_io address\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L4 -fixed yes -set_io address\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J1 -fixed yes -set_io address\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K1 -fixed yes -set_io address\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K5 -fixed yes -set_io address\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L5 -fixed yes -set_io address\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J4 -fixed yes -set_io address\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J3 -fixed yes -set_io address\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R4 -fixed yes -set_io address\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R7 -fixed yes -set_io address\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R6 -fixed yes -set_io address\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P9 -fixed yes -set_io address\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P4 -fixed yes -set_io address\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P5 -fixed yes -set_io address\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P7 -fixed yes -set_io address\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P6 -fixed yes -set_io bexcn -iostd LVTTL -RES_PULL Up -pinname T8 -fixed yes -set_io brdyn -iostd LVTTL -RES_PULL Up -pinname T1 -fixed yes -set_io cb\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD4 -fixed yes -set_io cb\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD3 -fixed yes -set_io cb\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE3 -fixed yes -set_io cb\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB3 -fixed yes -set_io cb\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC3 -fixed yes -set_io cb\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD2 -fixed yes -set_io cb\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y6 -fixed yes -set_io cb\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA6 -fixed yes -set_io clk -iostd LVTTL -pinname D15 -fixed yes -set_io ctsn\[1\] -iostd LVTTL -pinname K25 -fixed yes -set_io ctsn\[2\] -iostd LVTTL -pinname L24 -fixed yes -set_io data\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K6 -fixed yes -set_io data\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F4 -fixed yes -set_io data\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F3 -fixed yes -set_io data\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F5 -fixed yes -set_io data\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G5 -fixed yes -set_io data\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G6 -fixed yes -set_io data\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H6 -fixed yes -set_io data\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB1 -fixed yes -set_io data\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE2 -fixed yes -set_io data\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W8 -fixed yes -set_io data\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y8 -fixed yes -set_io data\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D1 -fixed yes -set_io data\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y5 -fixed yes -set_io data\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA5 -fixed yes -set_io data\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA2 -fixed yes -set_io data\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W6 -fixed yes -set_io data\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W7 -fixed yes -set_io data\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y4 -fixed yes -set_io data\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V8 -fixed yes -set_io data\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y1 -fixed yes -set_io data\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y2 -fixed yes -set_io data\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V7 -fixed yes -set_io data\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D2 -fixed yes -set_io data\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V6 -fixed yes -set_io data\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W3 -fixed yes -set_io data\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G4 -fixed yes -set_io data\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H4 -fixed yes -set_io data\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F2 -fixed yes -set_io data\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F1 -fixed yes -set_io data\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E2 -fixed yes -set_io data\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H7 -fixed yes -set_io data\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J7 -fixed yes -set_io dsuact -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K23 -fixed yes -set_io dsubre -iostd LVTTL -pinname J24 -fixed yes -set_io dsuen -iostd LVTTL -pinname J23 -fixed yes -set_io dsurx -iostd LVTTL -pinname G25 -fixed yes -set_io dsutx -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G26 -fixed yes -set_io errorn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -RES_PULL Up -pinname E25 -fixed yes -set_io geniohigh\[100\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V24 -fixed yes -set_io geniohigh\[101\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W28 -fixed yes -set_io geniohigh\[102\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W24 -fixed yes -set_io geniohigh\[103\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W27 -fixed yes -set_io geniohigh\[104\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y28 -fixed yes -set_io geniohigh\[105\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y30 -fixed yes -set_io geniohigh\[106\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y27 -fixed yes -set_io geniohigh\[107\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W30 -fixed yes -set_io geniohigh\[108\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W23 -fixed yes -set_io geniohigh\[109\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA30 -fixed yes -set_io geniohigh\[110\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y23 -fixed yes -set_io geniohigh\[111\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB30 -fixed yes -set_io geniohigh\[112\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA24 -fixed yes -set_io geniohigh\[113\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF29 -fixed yes -set_io geniohigh\[114\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y24 -fixed yes -set_io geniohigh\[115\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF30 -fixed yes -set_io geniohigh\[92\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T24 -fixed yes -set_io geniohigh\[93\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U27 -fixed yes -set_io geniohigh\[94\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U24 -fixed yes -set_io geniohigh\[95\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V27 -fixed yes -set_io geniohigh\[96\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V25 -fixed yes -set_io geniohigh\[97\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W29 -fixed yes -set_io geniohigh\[98\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U25 -fixed yes -set_io geniohigh\[99\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V29 -fixed yes -set_io geniolow\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R30 -fixed yes -set_io geniolow\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R29 -fixed yes -set_io geniolow\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R25 -fixed yes -set_io geniolow\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R24 -fixed yes -set_io geniolow\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P30 -fixed yes -set_io geniolow\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P29 -fixed yes -set_io geniolow\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P26 -fixed yes -set_io geniolow\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R26 -fixed yes -set_io geniolow\[32\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P27 -fixed yes -set_io geniolow\[33\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P28 -fixed yes -set_io geniolow\[34\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P24 -fixed yes -set_io geniolow\[35\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P25 -fixed yes -set_io geniolow\[36\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N29 -fixed yes -set_io geniolow\[37\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N24 -fixed yes -set_io geniolow\[38\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N25 -fixed yes -set_io geniolow\[39\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N27 -fixed yes -set_io geniolow\[40\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N28 -fixed yes -set_io geniolow\[41\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N26 -fixed yes -set_io geniolow\[42\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L29 -fixed yes -set_io geniolow\[43\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M29 -fixed yes -set_io geniolow\[44\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N23 -fixed yes -set_io geniolow\[45\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N22 -fixed yes -set_io geniolow\[46\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L28 -fixed yes -set_io geniolow\[47\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M28 -fixed yes -set_io geniolow\[48\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L27 -fixed yes -set_io geniolow\[49\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M27 -fixed yes -set_io geniolow\[50\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M24 -fixed yes -set_io geniolow\[51\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M23 -fixed yes -set_io geniolow\[52\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K29 -fixed yes -set_io geniolow\[53\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K30 -fixed yes -set_io geniolow\[54\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L25 -fixed yes -set_io geniolow\[55\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M25 -fixed yes -set_io gpio\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F30 -fixed yes -set_io gpio\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D25 -fixed yes -set_io gpio\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C25 -fixed yes -set_io gpio\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G23 -fixed yes -set_io gpio\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G22 -fixed yes -set_io gpio\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B27 -fixed yes -set_io gpio\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A27 -fixed yes -set_io gpio\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G30 -fixed yes -set_io gpio\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F28 -fixed yes -set_io gpio\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G28 -fixed yes -set_io gpio\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H25 -fixed yes -set_io gpio\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H26 -fixed yes -set_io gpio\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D29 -fixed yes -set_io gpio\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E29 -fixed yes -set_io gpio\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F23 -fixed yes -set_io gpio\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E23 -fixed yes -set_io iosn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U2 -fixed yes -set_io oen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V2 -fixed yes -set_io pci_66 -iostd PCI -pinname AC15 -fixed yes -set_io pci_ack64n -iostd PCI -pinname AG15 -fixed yes -set_io pci_ad\[0\] -iostd PCI -pinname AE14 -fixed yes -set_io pci_ad\[10\] -iostd PCI -pinname AG11 -fixed yes -set_io pci_ad\[11\] -iostd PCI -pinname AG12 -fixed yes -set_io pci_ad\[12\] -iostd PCI -pinname AK11 -fixed yes -set_io pci_ad\[13\] -iostd PCI -pinname AK12 -fixed yes -set_io pci_ad\[14\] -iostd PCI -pinname AC12 -fixed yes -set_io pci_ad\[15\] -iostd PCI -pinname AJ10 -fixed yes -set_io pci_ad\[16\] -iostd PCI -pinname AD9 -fixed yes -set_io pci_ad\[17\] -iostd PCI -pinname AG7 -fixed yes -set_io pci_ad\[18\] -iostd PCI -pinname AH7 -fixed yes -set_io pci_ad\[19\] -iostd PCI -pinname AC8 -fixed yes -set_io pci_ad\[1\] -iostd PCI -pinname AD14 -fixed yes -set_io pci_ad\[20\] -iostd PCI -pinname AC9 -fixed yes -set_io pci_ad\[21\] -iostd PCI -pinname AH6 -fixed yes -set_io pci_ad\[22\] -iostd PCI -pinname AG6 -fixed yes -set_io pci_ad\[23\] -iostd PCI -pinname AF6 -fixed yes -set_io pci_ad\[24\] -iostd PCI -pinname AF7 -fixed yes -set_io pci_ad\[25\] -iostd PCI -pinname AG2 -fixed yes -set_io pci_ad\[26\] -iostd PCI -pinname AG1 -fixed yes -set_io pci_ad\[27\] -iostd PCI -pinname AE7 -fixed yes -set_io pci_ad\[28\] -iostd PCI -pinname AE8 -fixed yes -set_io pci_ad\[29\] -iostd PCI -pinname AJ4 -fixed yes -set_io pci_ad\[2\] -iostd PCI -pinname AB13 -fixed yes -set_io pci_ad\[30\] -iostd PCI -pinname AK4 -fixed yes -set_io pci_ad\[31\] -iostd PCI -pinname AE4 -fixed yes -set_io pci_ad\[32\] -iostd PCI -pinname AG25 -fixed yes -set_io pci_ad\[33\] -iostd PCI -pinname AG26 -fixed yes -set_io pci_ad\[34\] -iostd PCI -pinname AJ25 -fixed yes -set_io pci_ad\[35\] -iostd PCI -pinname AE23 -fixed yes -set_io pci_ad\[36\] -iostd PCI -pinname AE24 -fixed yes -set_io pci_ad\[37\] -iostd PCI -pinname AH24 -fixed yes -set_io pci_ad\[38\] -iostd PCI -pinname AH25 -fixed yes -set_io pci_ad\[39\] -iostd PCI -pinname AD22 -fixed yes -set_io pci_ad\[3\] -iostd PCI -pinname AC14 -fixed yes -set_io pci_ad\[40\] -iostd PCI -pinname AC22 -fixed yes -set_io pci_ad\[41\] -iostd PCI -pinname AF23 -fixed yes -set_io pci_ad\[42\] -iostd PCI -pinname AE21 -fixed yes -set_io pci_ad\[43\] -iostd PCI -pinname AE22 -fixed yes -set_io pci_ad\[44\] -iostd PCI -pinname AJ23 -fixed yes -set_io pci_ad\[45\] -iostd PCI -pinname AJ24 -fixed yes -set_io pci_ad\[46\] -iostd PCI -pinname AH23 -fixed yes -set_io pci_ad\[47\] -iostd PCI -pinname AD21 -fixed yes -set_io pci_ad\[48\] -iostd PCI -pinname AC21 -fixed yes -set_io pci_ad\[49\] -iostd PCI -pinname AK22 -fixed yes -set_io pci_ad\[4\] -iostd PCI -pinname AJ13 -fixed yes -set_io pci_ad\[50\] -iostd PCI -pinname AG21 -fixed yes -set_io pci_ad\[51\] -iostd PCI -pinname AG22 -fixed yes -set_io pci_ad\[52\] -iostd PCI -pinname AE20 -fixed yes -set_io pci_ad\[53\] -iostd PCI -pinname AJ21 -fixed yes -set_io pci_ad\[54\] -iostd PCI -pinname AD19 -fixed yes -set_io pci_ad\[55\] -iostd PCI -pinname AJ20 -fixed yes -set_io pci_ad\[56\] -iostd PCI -pinname AK20 -fixed yes -set_io pci_ad\[57\] -iostd PCI -pinname AC19 -fixed yes -set_io pci_ad\[58\] -iostd PCI -pinname AC20 -fixed yes -set_io pci_ad\[59\] -iostd PCI -pinname AG19 -fixed yes -set_io pci_ad\[5\] -iostd PCI -pinname AH11 -fixed yes -set_io pci_ad\[60\] -iostd PCI -pinname AG20 -fixed yes -set_io pci_ad\[61\] -iostd PCI -pinname AH19 -fixed yes -set_io pci_ad\[62\] -iostd PCI -pinname AK19 -fixed yes -set_io pci_ad\[63\] -iostd PCI -pinname AJ19 -fixed yes -set_io pci_ad\[6\] -iostd PCI -pinname AH12 -fixed yes -set_io pci_ad\[7\] -iostd PCI -pinname AC13 -fixed yes -set_io pci_ad\[8\] -iostd PCI -pinname AD13 -fixed yes -set_io pci_ad\[9\] -iostd PCI -pinname AE13 -fixed yes -set_io pci_arb_gnt\[0\] -iostd PCI -pinname AJ17 -fixed yes -set_io pci_arb_gnt\[1\] -iostd PCI -pinname AJ18 -fixed yes -set_io pci_arb_gnt\[2\] -iostd PCI -pinname AD17 -fixed yes -set_io pci_arb_gnt\[3\] -iostd PCI -pinname AK17 -fixed yes -set_io pci_arb_gnt\[4\] -iostd PCI -pinname AC17 -fixed yes -set_io pci_arb_gnt\[5\] -iostd PCI -pinname AF25 -fixed yes -set_io pci_arb_gnt\[6\] -iostd PCI -pinname AF24 -fixed yes -set_io pci_arb_gnt\[7\] -iostd PCI -pinname AB17 -fixed yes -set_io pci_arb_req\[0\] -iostd LVTTL -RES_PULL Up -pinname AJ16 -fixed yes -set_io pci_arb_req\[1\] -iostd LVTTL -RES_PULL Up -pinname AK16 -fixed yes -set_io pci_arb_req\[2\] -iostd LVTTL -RES_PULL Up -pinname AG18 -fixed yes -set_io pci_arb_req\[3\] -iostd LVTTL -RES_PULL Up -pinname AH18 -fixed yes -set_io pci_arb_req\[4\] -iostd LVTTL -RES_PULL Up -pinname AG16 -fixed yes -set_io pci_arb_req\[5\] -iostd LVTTL -RES_PULL Up -pinname AG30 -fixed yes -set_io pci_arb_req\[6\] -iostd LVTTL -RES_PULL Up -pinname AG29 -fixed yes -set_io pci_arb_req\[7\] -iostd LVTTL -RES_PULL Up -pinname AG17 -fixed yes -set_io pci_cbe\[0\] -iostd PCI -pinname AF9 -fixed yes -set_io pci_cbe\[1\] -iostd PCI -pinname AF10 -fixed yes -set_io pci_cbe\[2\] -iostd PCI -pinname AH8 -fixed yes -set_io pci_cbe\[3\] -iostd PCI -pinname AH9 -fixed yes -set_io pci_cbe\[4\] -iostd PCI -pinname AC18 -fixed yes -set_io pci_cbe\[5\] -iostd PCI -pinname AB18 -fixed yes -set_io pci_cbe\[6\] -iostd PCI -pinname AE18 -fixed yes -set_io pci_cbe\[7\] -iostd PCI -pinname AD18 -fixed yes -set_io pci_clk -iostd PCI -pinname E16 -fixed yes -set_io pci_devsel -iostd PCI -pinname AC10 -fixed yes -set_io pci_en64 -iostd PCI -pinname AH13 -fixed yes -set_io pci_frame -iostd PCI -pinname AK9 -fixed yes -set_io pci_gnt -iostd PCI -pinname AK15 -fixed yes -set_io pci_host -iostd PCI -pinname AB14 -fixed yes -set_io pci_idsel -iostd PCI -pinname AK6 -fixed yes -set_io pci_irdy -iostd PCI -pinname AE9 -fixed yes -set_io pci_lock -iostd PCI -pinname AE10 -fixed yes -set_io pci_par -iostd PCI -pinname AD11 -fixed yes -set_io pci_par64 -iostd PCI -pinname AG14 -fixed yes -set_io pci_perr -iostd PCI -pinname AC11 -fixed yes -set_io pci_req -iostd PCI -pinname AJ15 -fixed yes -set_io pci_req64n -iostd PCI -pinname AG13 -fixed yes -set_io pci_rst -iostd PCI -pinname AD8 -fixed yes -set_io pci_serr -iostd PCI -pinname AJ11 -fixed yes -set_io pci_stop -iostd PCI -pinname AJ7 -fixed yes -set_io pci_trdy -iostd PCI -pinname AJ8 -fixed yes -set_io pciio\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD29 -fixed yes -set_io pciio\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD25 -fixed yes -set_io pciio\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC25 -fixed yes -set_io pciio\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF27 -fixed yes -set_io pciio\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE27 -fixed yes -set_io pciio\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB23 -fixed yes -set_io pciio\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA23 -fixed yes -set_io pciio\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T27 -fixed yes -set_io pciio\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T30 -fixed yes -set_io pciio\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T22 -fixed yes -set_io pciio\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V23 -fixed yes -set_io pciio\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC27 -fixed yes -set_io pciio\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V26 -fixed yes -set_io pciio\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y25 -fixed yes -set_io pciio\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD30 -fixed yes -set_io pciio\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AG28 -fixed yes -set_io pciio\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF4 -fixed yes -set_io pciio\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB7 -fixed yes -set_io pciio\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC7 -fixed yes -set_io pciio\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD5 -fixed yes -set_io pciio\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE5 -fixed yes -set_io pciio\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF1 -fixed yes -set_io pciio\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE29 -fixed yes -set_io pciio\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF2 -fixed yes -set_io pciio\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC4 -fixed yes -set_io pciio\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD27 -fixed yes -set_io pciio\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC26 -fixed yes -set_io pciio\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE28 -fixed yes -set_io pciio\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB26 -fixed yes -set_io pciio\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD28 -fixed yes -set_io pciio\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE26 -fixed yes -set_io pciio\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD26 -fixed yes -set_io ramben\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W4 -fixed yes -set_io ramben\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U8 -fixed yes -set_io ramben\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L8 -fixed yes -set_io ramben\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L7 -fixed yes -set_io ramoen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U1 -fixed yes -set_io ramoen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T7 -fixed yes -set_io ramoen\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W2 -fixed yes -set_io ramoen\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W1 -fixed yes -set_io ramoen\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U9 -fixed yes -set_io ramsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R2 -fixed yes -set_io ramsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T6 -fixed yes -set_io ramsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U3 -fixed yes -set_io ramsn\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U4 -fixed yes -set_io ramsn\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U7 -fixed yes -set_io read -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U5 -fixed yes -set_io resetn -iostd LVTTL -pinname H24 -fixed yes -set_io romsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T2 -fixed yes -set_io romsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V3 -fixed yes -set_io rtsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K24 -fixed yes -set_io rtsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K27 -fixed yes -set_io rwen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J6 -fixed yes -set_io rwen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K7 -fixed yes -set_io rwen\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H2 -fixed yes -set_io rwen\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G2 -fixed yes -set_io rxd\[1\] -iostd LVTTL -pinname H28 -fixed yes -set_io rxd\[2\] -iostd LVTTL -pinname J27 -fixed yes -set_io sa\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D10 -fixed yes -set_io sa\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F19 -fixed yes -set_io sa\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A22 -fixed yes -set_io sa\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A21 -fixed yes -set_io sa\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G20 -fixed yes -set_io sa\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B21 -fixed yes -set_io sa\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D21 -fixed yes -set_io sa\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D9 -fixed yes -set_io sa\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C9 -fixed yes -set_io sa\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C8 -fixed yes -set_io sa\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D11 -fixed yes -set_io sa\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E11 -fixed yes -set_io sa\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C20 -fixed yes -set_io sa\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C19 -fixed yes -set_io sa\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B20 -fixed yes -set_io sa\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F20 -fixed yes -set_io sd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B4 -fixed yes -set_io sd\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E7 -fixed yes -set_io sd\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H10 -fixed yes -set_io sd\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G10 -fixed yes -set_io sd\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F9 -fixed yes -set_io sd\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E10 -fixed yes -set_io sd\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F10 -fixed yes -set_io sd\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A15 -fixed yes -set_io sd\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E15 -fixed yes -set_io sd\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E17 -fixed yes -set_io sd\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C17 -fixed yes -set_io sd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A4 -fixed yes -set_io sd\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D17 -fixed yes -set_io sd\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A16 -fixed yes -set_io sd\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H17 -fixed yes -set_io sd\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J17 -fixed yes -set_io sd\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A17 -fixed yes -set_io sd\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B17 -fixed yes -set_io sd\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J18 -fixed yes -set_io sd\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F18 -fixed yes -set_io sd\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G18 -fixed yes -set_io sd\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B18 -fixed yes -set_io sd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F8 -fixed yes -set_io sd\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H19 -fixed yes -set_io sd\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G19 -fixed yes -set_io sd\[32\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B8 -fixed yes -set_io sd\[33\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A10 -fixed yes -set_io sd\[34\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A9 -fixed yes -set_io sd\[35\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B11 -fixed yes -set_io sd\[36\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B10 -fixed yes -set_io sd\[37\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D12 -fixed yes -set_io sd\[38\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E12 -fixed yes -set_io sd\[39\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C12 -fixed yes -set_io sd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F7 -fixed yes -set_io sd\[40\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C11 -fixed yes -set_io sd\[41\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A12 -fixed yes -set_io sd\[42\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A11 -fixed yes -set_io sd\[43\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F13 -fixed yes -set_io sd\[44\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G13 -fixed yes -set_io sd\[45\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H13 -fixed yes -set_io sd\[46\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J13 -fixed yes -set_io sd\[47\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B13 -fixed yes -set_io sd\[48\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H21 -fixed yes -set_io sd\[49\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G21 -fixed yes -set_io sd\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D6 -fixed yes -set_io sd\[50\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D22 -fixed yes -set_io sd\[51\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C22 -fixed yes -set_io sd\[52\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A25 -fixed yes -set_io sd\[53\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A24 -fixed yes -set_io sd\[54\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F22 -fixed yes -set_io sd\[55\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E22 -fixed yes -set_io sd\[56\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E21 -fixed yes -set_io sd\[57\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C24 -fixed yes -set_io sd\[58\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D24 -fixed yes -set_io sd\[59\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D23 -fixed yes -set_io sd\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E6 -fixed yes -set_io sd\[60\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H23 -fixed yes -set_io sd\[61\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H22 -fixed yes -set_io sd\[62\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B25 -fixed yes -set_io sd\[63\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B24 -fixed yes -set_io sd\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B5 -fixed yes -set_io sd\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H8 -fixed yes -set_io sd\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G8 -fixed yes -set_io sd\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D7 -fixed yes -set_io sdcasn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E13 -fixed yes -set_io sdclk -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D14 -fixed yes -set_io sdclkfb -iostd LVTTL -pinname C14 -fixed yes -set_io sdcsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B12 -fixed yes -set_io sdcsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E14 -fixed yes -set_io sddqm\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F11 -fixed yes -set_io sddqm\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G11 -fixed yes -set_io sddqm\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B19 -fixed yes -set_io sddqm\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A19 -fixed yes -set_io sddqm\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A7 -fixed yes -set_io sddqm\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B7 -fixed yes -set_io sddqm\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E20 -fixed yes -set_io sddqm\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E19 -fixed yes -set_io sdrasn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B14 -fixed yes -set_io sdwen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A14 -fixed yes -set_io txd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L23 -fixed yes -set_io txd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K26 -fixed yes -set_io wdogn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -RES_PULL Up -pinname F25 -fixed yes -set_io writen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T5 -fixed yes - -# SDRAM with EDAC or Reed-Solomon codec -set_io scb\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B8 -fixed yes -set_io scb\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A11 -fixed yes -set_io scb\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F13 -fixed yes -set_io scb\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G13 -fixed yes -set_io scb\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H13 -fixed yes -set_io scb\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J13 -fixed yes -set_io scb\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B13 -fixed yes -set_io scb\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A10 -fixed yes -set_io scb\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A9 -fixed yes -set_io scb\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B11 -fixed yes -set_io scb\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B10 -fixed yes -set_io scb\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D12 -fixed yes -set_io scb\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E12 -fixed yes -set_io scb\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C12 -fixed yes -set_io scb\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C11 -fixed yes -set_io scb\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A12 -fixed yes - -# LEON3FT-RTAX: GR-RTAX-MEZZ mezzanine board -set_io busainen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P29 -fixed yes -set_io busainn\[0\] -iostd LVTTL -pinname R26 -fixed yes -set_io busainp\[0\] -iostd LVTTL -pinname P26 -fixed yes -set_io busaoutin\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R25 -fixed yes -set_io busaoutn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P30 -fixed yes -set_io busaoutp\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R24 -fixed yes -set_io busbinen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P25 -fixed yes -set_io busbinn\[0\] -iostd LVTTL -pinname N24 -fixed yes -set_io busbinp\[0\] -iostd LVTTL -pinname N29 -fixed yes -set_io busboutin\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P27 -fixed yes -set_io busboutn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P24 -fixed yes -set_io busboutp\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P28 -fixed yes -# alternative names -set_io busainen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P29 -fixed yes -set_io busainn -iostd LVTTL -pinname R26 -fixed yes -set_io busainp -iostd LVTTL -pinname P26 -fixed yes -set_io busaoutin -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R25 -fixed yes -set_io busaoutn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P30 -fixed yes -set_io busaoutp -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R24 -fixed yes -set_io busbinen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P25 -fixed yes -set_io busbinn -iostd LVTTL -pinname N24 -fixed yes -set_io busbinp -iostd LVTTL -pinname N29 -fixed yes -set_io busboutin -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P27 -fixed yes -set_io busboutn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P24 -fixed yes -set_io busboutp -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P28 -fixed yes - -set_io canrx\[0\] -iostd LVTTL -pinname R29 -fixed yes -set_io cantx\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R30 -fixed yes - -# alternative names -set_io can_rxd -iostd LVTTL -pinname R29 -fixed yes -set_io can_txd -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R30 -fixed yes - -set_io spwclk -iostd LVTTL -pinname AC4 -fixed yes - -# LEON3FT-RTAX: GR-AX-SPW accessory board, and GR-RTAX-MEZZ mezzanine board -set_io spw_rxd\[0\] -iostd LVDS -pinname T24 -fixed yes -set_io spw_rxd\[1\] -iostd LVDS -pinname V24 -fixed yes -set_io spw_rxd\[2\] -iostd LVDS -pinname W23 -fixed yes -set_io spw_rxd\[3\] -iostd LVDS -pinname AD29 -fixed yes -set_io spw_rxdn\[0\] -iostd LVDS -pinname U24 -fixed yes -set_io spw_rxdn\[1\] -iostd LVDS -pinname W24 -fixed yes -set_io spw_rxdn\[2\] -iostd LVDS -pinname Y23 -fixed yes -set_io spw_rxdn\[3\] -iostd LVDS -pinname AE29 -fixed yes -set_io spw_rxs\[0\] -iostd LVDS -pinname U27 -fixed yes -set_io spw_rxs\[1\] -iostd LVDS -pinname W28 -fixed yes -set_io spw_rxs\[2\] -iostd LVDS -pinname AA30 -fixed yes -set_io spw_rxs\[3\] -iostd LVDS -pinname AC27 -fixed yes -set_io spw_rxsn\[0\] -iostd LVDS -pinname V27 -fixed yes -set_io spw_rxsn\[1\] -iostd LVDS -pinname W27 -fixed yes -set_io spw_rxsn\[2\] -iostd LVDS -pinname AB30 -fixed yes -set_io spw_rxsn\[3\] -iostd LVDS -pinname AD27 -fixed yes -set_io spw_txd\[0\] -iostd LVDS -pinname V29 -fixed yes -set_io spw_txd\[1\] -iostd LVDS -pinname W30 -fixed yes -set_io spw_txd\[2\] -iostd LVDS -pinname AF30 -fixed yes -set_io spw_txd\[3\] -iostd LVDS -pinname AD28 -fixed yes -set_io spw_txdn\[0\] -iostd LVDS -pinname W29 -fixed yes -set_io spw_txdn\[1\] -iostd LVDS -pinname Y30 -fixed yes -set_io spw_txdn\[2\] -iostd LVDS -pinname AF29 -fixed yes -set_io spw_txdn\[3\] -iostd LVDS -pinname AE28 -fixed yes -set_io spw_txs\[0\] -iostd LVDS -pinname U25 -fixed yes -set_io spw_txs\[1\] -iostd LVDS -pinname Y27 -fixed yes -set_io spw_txs\[2\] -iostd LVDS -pinname Y24 -fixed yes -set_io spw_txs\[3\] -iostd LVDS -pinname AB26 -fixed yes -set_io spw_txsn\[0\] -iostd LVDS -pinname V25 -fixed yes -set_io spw_txsn\[1\] -iostd LVDS -pinname Y28 -fixed yes -set_io spw_txsn\[2\] -iostd LVDS -pinname AA24 -fixed yes -set_io spw_txsn\[3\] -iostd LVDS -pinname AC26 -fixed yes - -set_location spw.swloop.0.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/rxclko_0 -fixed yes 1051 48 -set_location spw.swloop.0.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/r.shftreg -fixed yes 1052 52 -set_location spw.swloop.0.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/nr.shftreg\[0\] -fixed yes 1052 51 - -set_location spw.swloop.1.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/rxclko_0 -fixed yes 1051 34 -set_location spw.swloop.1.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/r.shftreg -fixed yes 1052 34 -set_location spw.swloop.1.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/nr.shftreg\[0\] -fixed yes 1052 33 - -set_location spw.swloop.2.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/rxclko_0 -fixed yes 1051 26 -set_location spw.swloop.2.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/r.shftreg -fixed yes 1052 26 -set_location spw.swloop.2.sw0/spw1.u0/rtl.grspwc0/rx.0.rx0/nr.shftreg\[0\] -fixed yes 1052 25 - -# LEON3FT-RTAX additions supported on GR-CPCI-TEST mezzanine board -set_io busainen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N26 -fixed yes -set_io busainn\[1\] -iostd LVTTL -pinname M29 -fixed yes -set_io busainp\[1\] -iostd LVTTL -pinname L29 -fixed yes -set_io busaoutin\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N25 -fixed yes -set_io busaoutn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N28 -fixed yes -set_io busaoutp\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N27 -fixed yes -set_io busbinen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M28 -fixed yes -set_io busbinn\[1\] -iostd LVTTL -pinname M27 -fixed yes -set_io busbinp\[1\] -iostd LVTTL -pinname L27 -fixed yes -set_io busboutin\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N23 -fixed yes -set_io busboutn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L28 -fixed yes -set_io busboutp\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N22 -fixed yes - -#set_io canen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K29 -fixed yes -#set_io canen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M25 -fixed yes - -set_io romsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K29 -fixed yes -set_io romsn\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M25 -fixed yes - -set_io spw_clk -iostd LVTTL -pinname E16 -fixed yes - -set_io dsutck -iostd LVTTL -pinname AD29 -fixed yes -set_io dsutdi -iostd LVTTL -pinname AC27 -fixed yes -set_io dsutdo -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC26 -fixed yes -set_io dsutms -iostd LVTTL -pinname AE28 -fixed yes - -# LEON3FT-RTAX additions supported on GR-CPCI-1553 mezzanine board -set_io canrx\[1\] -iostd LVTTL -pinname K30 -fixed yes -set_io cantx\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L25 -fixed yes - -# GPIO pins 16-31: -set_io gpio\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N25 -fixed yes -set_io gpio\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N27 -fixed yes -set_io gpio\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N28 -fixed yes -set_io gpio\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N26 -fixed yes -set_io gpio\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L29 -fixed yes -set_io gpio\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M29 -fixed yes -set_io gpio\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N23 -fixed yes -set_io gpio\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N22 -fixed yes -set_io gpio\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L28 -fixed yes -set_io gpio\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M28 -fixed yes -set_io gpio\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L27 -fixed yes -set_io gpio\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M27 -fixed yes -set_io gpio\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M24 -fixed yes -set_io gpio\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M23 -fixed yes -set_io gpio\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB7 -fixed yes -set_io gpio\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD5 -fixed yes - -# Ethernet pins for GR-CPCI-TEST mezzanine board and GR-XC3S-RMII -set_io emdio -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AC4 -fixed yes -set_io emdc -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AF1 -fixed yes -set_io erx_clk -iostd LVTTL -pinname N25 -fixed yes -set_io erx_dv -iostd LVTTL -pinname N27 -fixed yes -set_io erx_crs -iostd LVTTL -pinname N28 -fixed yes -set_io erx_er -iostd LVTTL -pinname N26 -fixed yes -set_io erx_col -iostd LVTTL -pinname L29 -fixed yes -set_io erxd\[0\] -iostd LVTTL -pinname M29 -fixed yes -set_io erxd\[1\] -iostd LVTTL -pinname N23 -fixed yes -set_io erxd\[2\] -iostd LVTTL -pinname N22 -fixed yes -set_io erxd\[3\] -iostd LVTTL -pinname L28 -fixed yes -set_io etx_clk -iostd LVTTL -pinname M28 -fixed yes -set_io etx_en -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AB7 -fixed yes -set_io etxd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname L27 -fixed yes -set_io etxd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname M27 -fixed yes -set_io etxd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname M24 -fixed yes -set_io etxd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname M23 -fixed yes -set_io etx_er -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AD5 -fixed yes -set_io emdint -iostd LVTTL -pinname AD5 -fixed yes - -set_io e0mdio -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AC4 -fixed yes -set_io e0mdc -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AF1 -fixed yes -set_io e0rx_clk -iostd LVTTL -pinname N25 -fixed yes -set_io e0rx_dv -iostd LVTTL -pinname N27 -fixed yes -set_io e0rx_crs -iostd LVTTL -pinname N28 -fixed yes -set_io e0rx_er -iostd LVTTL -pinname N26 -fixed yes -set_io e0rx_col -iostd LVTTL -pinname L29 -fixed yes -set_io e0rxd\[0\] -iostd LVTTL -pinname M29 -fixed yes -set_io e0rxd\[1\] -iostd LVTTL -pinname N23 -fixed yes -set_io e0rxd\[2\] -iostd LVTTL -pinname N22 -fixed yes -set_io e0rxd\[3\] -iostd LVTTL -pinname L28 -fixed yes -set_io e0tx_clk -iostd LVTTL -pinname M28 -fixed yes -set_io e0tx_en -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AB7 -fixed yes -set_io e0tx_er -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AD5 -fixed yes -set_io e0mdint -iostd LVTTL -pinname AD5 -fixed yes -set_io e0txd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname L27 -fixed yes -set_io e0txd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname M27 -fixed yes -set_io e0txd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname M24 -fixed yes -set_io e0txd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname M23 -fixed yes - -set_io e1mdio -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AB26 -fixed yes -set_io e1mdc -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AE26 -fixed yes -set_io e1rx_clk -iostd LVTTL -pinname AD26 -fixed yes -set_io e1rx_dv -iostd LVTTL -pinname AC25 -fixed yes -set_io e1rx_crs -iostd LVTTL -pinname AD25 -fixed yes -set_io e1rx_er -iostd LVTTL -pinname AF27 -fixed yes -set_io e1rx_col -iostd LVTTL -pinname AD28 -fixed yes -set_io e1rxd\[0\] -iostd LVTTL -pinname AE27 -fixed yes -set_io e1rxd\[1\] -iostd LVTTL -pinname AB23 -fixed yes -set_io e1rxd\[2\] -iostd LVTTL -pinname AA23 -fixed yes -set_io e1rxd\[3\] -iostd LVTTL -pinname T27 -fixed yes -set_io e1tx_clk -iostd LVTTL -pinname T30 -fixed yes -set_io e1tx_en -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname V23 -fixed yes -set_io e1tx_er -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname T22 -fixed yes -set_io e1mdint -iostd LVTTL -pinname T22 -fixed yes -set_io e1txd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname V26 -fixed yes -set_io e1txd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname Y25 -fixed yes -set_io e1txd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AD30 -fixed yes -set_io e1txd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 15 -pinname AG28 -fixed yes - -# Extra PCI interrupt signals: -# PCI_INTA -set_io pci_int\[0\] -iostd PCI -pinname AF4 -fixed yes -# PCI_INTB -set_io pci_int\[1\] -iostd PCI -pinname AC7 -fixed yes -# PCI_INTC -set_io pci_int\[2\] -iostd PCI -pinname AE5 -fixed yes -# PCI_INTD -set_io pci_int\[3\] -iostd PCI -pinname AF2 -fixed yes -set_io pci_int -iostd PCI -pinname AF2 -fixed yes - -# FIFO pins for GR-CPCI-TEST mezzanine board and GR-FIFO test board -set_io fifoefn -iostd LVTTL -RES_PULL Up -pinname AC4 -fixed yes -set_io fifoffn -iostd LVTTL -RES_PULL Up -pinname AF1 -fixed yes -set_io fifowen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB7 -fixed yes -set_io fiforen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD5 -fixed yes -set_io fifop\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R29 -fixed yes -set_io fifop\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R30 -fixed yes -set_io fifod\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L25 -fixed yes -set_io fifod\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K30 -fixed yes -set_io fifod\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M23 -fixed yes -set_io fifod\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M24 -fixed yes -set_io fifod\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M27 -fixed yes -set_io fifod\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L27 -fixed yes -set_io fifod\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M28 -fixed yes -set_io fifod\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L28 -fixed yes -set_io fifod\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N22 -fixed yes -set_io fifod\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N23 -fixed yes -set_io fifod\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M29 -fixed yes -set_io fifod\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L29 -fixed yes -set_io fifod\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N26 -fixed yes -set_io fifod\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N28 -fixed yes -set_io fifod\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N27 -fixed yes -set_io fifod\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N25 -fixed yes diff --git a/boards/gr-cpci-ax/designer_896_FBGA.sdc b/boards/gr-cpci-ax/designer_896_FBGA.sdc deleted file mode 100644 index 6af76851..00000000 --- a/boards/gr-cpci-ax/designer_896_FBGA.sdc +++ /dev/null @@ -1,35 +0,0 @@ -################################################################################ -# Actel Designer Software Release Designer -################################################################################ - -######## Clock Constraints ######## - -create_clock -period 40.0000 [get_ports {clk}] - -#create_clock -period 30.0000 [get_ports {pci_clk}] -# -#create_clock -period 10.0000 [get_ports {spw_clk}] -# -#create_clock -period 10.0000 [get_ports {spwclk}] - - -######## Delay Constraints ######## - -#set_max_delay 7.00 -from [all_inputs] -to [get_clocks {pci_clk}] -#set_max_delay 11.00 -from [get_clocks {pci_clk}] -to [all_outputs] - -#set_max_delay 11.00 -from [all_inputs] -to [all_outputs] - -#set_max_delay 5.00 -from [all_inputs] -to [get_clocks {clk}] -#set_max_delay 10.00 -from [get_clocks {clk}] -to [all_outputs] - - -######## False Path Constraints ######## - - -######## OutPut load Constraints ######## - - -######## Multicycle Constraints ######## - - diff --git a/boards/gr-cpci-ax/designer_896_FBGA_1553.pdc b/boards/gr-cpci-ax/designer_896_FBGA_1553.pdc deleted file mode 100644 index c38a07bb..00000000 --- a/boards/gr-cpci-ax/designer_896_FBGA_1553.pdc +++ /dev/null @@ -1,621 +0,0 @@ -# Actel Physical design constraints file -# Family: Axcelerator , Die: AX2000 , Package: fbga896 - -# -# I/O constraints -# - -set_io address\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R8 -fixed yes -set_io address\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L1 -fixed yes -set_io address\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M1 -fixed yes -set_io address\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M4 -fixed yes -set_io address\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N7 -fixed yes -set_io address\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N6 -fixed yes -set_io address\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L3 -fixed yes -set_io address\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M3 -fixed yes -set_io address\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N8 -fixed yes -set_io address\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N9 -fixed yes -set_io address\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L6 -fixed yes -set_io address\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R9 -fixed yes -set_io address\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K4 -fixed yes -set_io address\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L4 -fixed yes -set_io address\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J1 -fixed yes -set_io address\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K1 -fixed yes -set_io address\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K5 -fixed yes -set_io address\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L5 -fixed yes -set_io address\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J4 -fixed yes -set_io address\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J3 -fixed yes -set_io address\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R4 -fixed yes -set_io address\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R7 -fixed yes -set_io address\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R6 -fixed yes -set_io address\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P9 -fixed yes -set_io address\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P4 -fixed yes -set_io address\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P5 -fixed yes -set_io address\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P7 -fixed yes -set_io address\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P6 -fixed yes -set_io bexcn -iostd LVTTL -RES_PULL Up -pinname T8 -fixed yes -set_io brdyn -iostd LVTTL -RES_PULL Up -pinname T1 -fixed yes -set_io cb\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD4 -fixed yes -set_io cb\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD3 -fixed yes -set_io cb\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE3 -fixed yes -set_io cb\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB3 -fixed yes -set_io cb\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC3 -fixed yes -set_io cb\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD2 -fixed yes -set_io cb\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y6 -fixed yes -set_io cb\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA6 -fixed yes -set_io clk -iostd LVTTL -pinname D15 -fixed yes -set_io ctsn\[1\] -iostd LVTTL -pinname K25 -fixed yes -set_io ctsn\[2\] -iostd LVTTL -pinname L24 -fixed yes -set_io data\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K6 -fixed yes -set_io data\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F4 -fixed yes -set_io data\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F3 -fixed yes -set_io data\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F5 -fixed yes -set_io data\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G5 -fixed yes -set_io data\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G6 -fixed yes -set_io data\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H6 -fixed yes -set_io data\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB1 -fixed yes -set_io data\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE2 -fixed yes -set_io data\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W8 -fixed yes -set_io data\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y8 -fixed yes -set_io data\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D1 -fixed yes -set_io data\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y5 -fixed yes -set_io data\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA5 -fixed yes -set_io data\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA2 -fixed yes -set_io data\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W6 -fixed yes -set_io data\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W7 -fixed yes -set_io data\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y4 -fixed yes -set_io data\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V8 -fixed yes -set_io data\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y1 -fixed yes -set_io data\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y2 -fixed yes -set_io data\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V7 -fixed yes -set_io data\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D2 -fixed yes -set_io data\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V6 -fixed yes -set_io data\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W3 -fixed yes -set_io data\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G4 -fixed yes -set_io data\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H4 -fixed yes -set_io data\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F2 -fixed yes -set_io data\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F1 -fixed yes -set_io data\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E2 -fixed yes -set_io data\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H7 -fixed yes -set_io data\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J7 -fixed yes -set_io dsuact -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K23 -fixed yes -set_io dsubre -iostd LVTTL -pinname J24 -fixed yes -set_io dsuen -iostd LVTTL -pinname J23 -fixed yes -set_io dsurx -iostd LVTTL -pinname G25 -fixed yes -set_io dsutx -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G26 -fixed yes -set_io errorn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -RES_PULL Up -pinname E25 -fixed yes -set_io geniohigh\[100\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V24 -fixed yes -set_io geniohigh\[101\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W28 -fixed yes -set_io geniohigh\[102\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W24 -fixed yes -set_io geniohigh\[103\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W27 -fixed yes -set_io geniohigh\[104\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y28 -fixed yes -set_io geniohigh\[105\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y30 -fixed yes -set_io geniohigh\[106\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y27 -fixed yes -set_io geniohigh\[107\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W30 -fixed yes -set_io geniohigh\[108\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W23 -fixed yes -set_io geniohigh\[109\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA30 -fixed yes -set_io geniohigh\[110\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y23 -fixed yes -set_io geniohigh\[111\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB30 -fixed yes -set_io geniohigh\[112\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA24 -fixed yes -set_io geniohigh\[113\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF29 -fixed yes -set_io geniohigh\[114\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y24 -fixed yes -set_io geniohigh\[115\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF30 -fixed yes -set_io geniohigh\[92\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T24 -fixed yes -set_io geniohigh\[93\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U27 -fixed yes -set_io geniohigh\[94\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U24 -fixed yes -set_io geniohigh\[95\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V27 -fixed yes -set_io geniohigh\[96\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V25 -fixed yes -set_io geniohigh\[97\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W29 -fixed yes -set_io geniohigh\[98\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U25 -fixed yes -set_io geniohigh\[99\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V29 -fixed yes -set_io geniolow\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R30 -fixed yes -set_io geniolow\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R29 -fixed yes -set_io geniolow\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R25 -fixed yes -set_io geniolow\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R24 -fixed yes -set_io geniolow\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P30 -fixed yes -set_io geniolow\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P29 -fixed yes -set_io geniolow\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P26 -fixed yes -set_io geniolow\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R26 -fixed yes -set_io geniolow\[32\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P27 -fixed yes -set_io geniolow\[33\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P28 -fixed yes -set_io geniolow\[34\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P24 -fixed yes -set_io geniolow\[35\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P25 -fixed yes -set_io geniolow\[36\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N29 -fixed yes -set_io geniolow\[37\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N24 -fixed yes -set_io geniolow\[38\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N25 -fixed yes -set_io geniolow\[39\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N27 -fixed yes -set_io geniolow\[40\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N28 -fixed yes -set_io geniolow\[41\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N26 -fixed yes -set_io geniolow\[42\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L29 -fixed yes -set_io geniolow\[43\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M29 -fixed yes -set_io geniolow\[44\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N23 -fixed yes -set_io geniolow\[45\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N22 -fixed yes -set_io geniolow\[46\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L28 -fixed yes -set_io geniolow\[47\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M28 -fixed yes -set_io geniolow\[48\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L27 -fixed yes -set_io geniolow\[49\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M27 -fixed yes -set_io geniolow\[50\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M24 -fixed yes -set_io geniolow\[51\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M23 -fixed yes -set_io geniolow\[52\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K29 -fixed yes -set_io geniolow\[53\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K30 -fixed yes -set_io geniolow\[54\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L25 -fixed yes -set_io geniolow\[55\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M25 -fixed yes -set_io gpio\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F30 -fixed yes -set_io gpio\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D25 -fixed yes -set_io gpio\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C25 -fixed yes -set_io gpio\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G23 -fixed yes -set_io gpio\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G22 -fixed yes -set_io gpio\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B27 -fixed yes -set_io gpio\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A27 -fixed yes -set_io gpio\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G30 -fixed yes -set_io gpio\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F28 -fixed yes -set_io gpio\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G28 -fixed yes -set_io gpio\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H25 -fixed yes -set_io gpio\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H26 -fixed yes -set_io gpio\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D29 -fixed yes -set_io gpio\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E29 -fixed yes -set_io gpio\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F23 -fixed yes -set_io gpio\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E23 -fixed yes -set_io iosn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U2 -fixed yes -set_io oen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V2 -fixed yes -set_io pci_66 -iostd PCI -pinname AC15 -fixed yes -set_io pci_ack64n -iostd PCI -pinname AG15 -fixed yes -set_io pci_ad\[0\] -iostd PCI -pinname AE14 -fixed yes -set_io pci_ad\[10\] -iostd PCI -pinname AG11 -fixed yes -set_io pci_ad\[11\] -iostd PCI -pinname AG12 -fixed yes -set_io pci_ad\[12\] -iostd PCI -pinname AK11 -fixed yes -set_io pci_ad\[13\] -iostd PCI -pinname AK12 -fixed yes -set_io pci_ad\[14\] -iostd PCI -pinname AC12 -fixed yes -set_io pci_ad\[15\] -iostd PCI -pinname AJ10 -fixed yes -set_io pci_ad\[16\] -iostd PCI -pinname AD9 -fixed yes -set_io pci_ad\[17\] -iostd PCI -pinname AG7 -fixed yes -set_io pci_ad\[18\] -iostd PCI -pinname AH7 -fixed yes -set_io pci_ad\[19\] -iostd PCI -pinname AC8 -fixed yes -set_io pci_ad\[1\] -iostd PCI -pinname AD14 -fixed yes -set_io pci_ad\[20\] -iostd PCI -pinname AC9 -fixed yes -set_io pci_ad\[21\] -iostd PCI -pinname AH6 -fixed yes -set_io pci_ad\[22\] -iostd PCI -pinname AG6 -fixed yes -set_io pci_ad\[23\] -iostd PCI -pinname AF6 -fixed yes -set_io pci_ad\[24\] -iostd PCI -pinname AF7 -fixed yes -set_io pci_ad\[25\] -iostd PCI -pinname AG2 -fixed yes -set_io pci_ad\[26\] -iostd PCI -pinname AG1 -fixed yes -set_io pci_ad\[27\] -iostd PCI -pinname AE7 -fixed yes -set_io pci_ad\[28\] -iostd PCI -pinname AE8 -fixed yes -set_io pci_ad\[29\] -iostd PCI -pinname AJ4 -fixed yes -set_io pci_ad\[2\] -iostd PCI -pinname AB13 -fixed yes -set_io pci_ad\[30\] -iostd PCI -pinname AK4 -fixed yes -set_io pci_ad\[31\] -iostd PCI -pinname AE4 -fixed yes -set_io pci_ad\[32\] -iostd PCI -pinname AG25 -fixed yes -set_io pci_ad\[33\] -iostd PCI -pinname AG26 -fixed yes -set_io pci_ad\[34\] -iostd PCI -pinname AJ25 -fixed yes -set_io pci_ad\[35\] -iostd PCI -pinname AE23 -fixed yes -set_io pci_ad\[36\] -iostd PCI -pinname AE24 -fixed yes -set_io pci_ad\[37\] -iostd PCI -pinname AH24 -fixed yes -set_io pci_ad\[38\] -iostd PCI -pinname AH25 -fixed yes -set_io pci_ad\[39\] -iostd PCI -pinname AD22 -fixed yes -set_io pci_ad\[3\] -iostd PCI -pinname AC14 -fixed yes -set_io pci_ad\[40\] -iostd PCI -pinname AC22 -fixed yes -set_io pci_ad\[41\] -iostd PCI -pinname AF23 -fixed yes -set_io pci_ad\[42\] -iostd PCI -pinname AE21 -fixed yes -set_io pci_ad\[43\] -iostd PCI -pinname AE22 -fixed yes -set_io pci_ad\[44\] -iostd PCI -pinname AJ23 -fixed yes -set_io pci_ad\[45\] -iostd PCI -pinname AJ24 -fixed yes -set_io pci_ad\[46\] -iostd PCI -pinname AH23 -fixed yes -set_io pci_ad\[47\] -iostd PCI -pinname AD21 -fixed yes -set_io pci_ad\[48\] -iostd PCI -pinname AC21 -fixed yes -set_io pci_ad\[49\] -iostd PCI -pinname AK22 -fixed yes -set_io pci_ad\[4\] -iostd PCI -pinname AJ13 -fixed yes -set_io pci_ad\[50\] -iostd PCI -pinname AG21 -fixed yes -set_io pci_ad\[51\] -iostd PCI -pinname AG22 -fixed yes -set_io pci_ad\[52\] -iostd PCI -pinname AE20 -fixed yes -set_io pci_ad\[53\] -iostd PCI -pinname AJ21 -fixed yes -set_io pci_ad\[54\] -iostd PCI -pinname AD19 -fixed yes -set_io pci_ad\[55\] -iostd PCI -pinname AJ20 -fixed yes -set_io pci_ad\[56\] -iostd PCI -pinname AK20 -fixed yes -set_io pci_ad\[57\] -iostd PCI -pinname AC19 -fixed yes -set_io pci_ad\[58\] -iostd PCI -pinname AC20 -fixed yes -set_io pci_ad\[59\] -iostd PCI -pinname AG19 -fixed yes -set_io pci_ad\[5\] -iostd PCI -pinname AH11 -fixed yes -set_io pci_ad\[60\] -iostd PCI -pinname AG20 -fixed yes -set_io pci_ad\[61\] -iostd PCI -pinname AH19 -fixed yes -set_io pci_ad\[62\] -iostd PCI -pinname AK19 -fixed yes -set_io pci_ad\[63\] -iostd PCI -pinname AJ19 -fixed yes -set_io pci_ad\[6\] -iostd PCI -pinname AH12 -fixed yes -set_io pci_ad\[7\] -iostd PCI -pinname AC13 -fixed yes -set_io pci_ad\[8\] -iostd PCI -pinname AD13 -fixed yes -set_io pci_ad\[9\] -iostd PCI -pinname AE13 -fixed yes -set_io pci_arb_gnt\[0\] -iostd PCI -pinname AJ17 -fixed yes -set_io pci_arb_gnt\[1\] -iostd PCI -pinname AJ18 -fixed yes -set_io pci_arb_gnt\[2\] -iostd PCI -pinname AD17 -fixed yes -set_io pci_arb_gnt\[3\] -iostd PCI -pinname AK17 -fixed yes -set_io pci_arb_gnt\[4\] -iostd PCI -pinname AC17 -fixed yes -set_io pci_arb_gnt\[5\] -iostd PCI -pinname AF25 -fixed yes -set_io pci_arb_gnt\[6\] -iostd PCI -pinname AF24 -fixed yes -set_io pci_arb_gnt\[7\] -iostd PCI -pinname AB17 -fixed yes -set_io pci_arb_req\[0\] -iostd LVTTL -RES_PULL Up -pinname AJ16 -fixed yes -set_io pci_arb_req\[1\] -iostd LVTTL -RES_PULL Up -pinname AK16 -fixed yes -set_io pci_arb_req\[2\] -iostd LVTTL -RES_PULL Up -pinname AG18 -fixed yes -set_io pci_arb_req\[3\] -iostd LVTTL -RES_PULL Up -pinname AH18 -fixed yes -set_io pci_arb_req\[4\] -iostd LVTTL -RES_PULL Up -pinname AG16 -fixed yes -set_io pci_arb_req\[5\] -iostd LVTTL -RES_PULL Up -pinname AG30 -fixed yes -set_io pci_arb_req\[6\] -iostd LVTTL -RES_PULL Up -pinname AG29 -fixed yes -set_io pci_arb_req\[7\] -iostd LVTTL -RES_PULL Up -pinname AG17 -fixed yes -set_io pci_cbe\[0\] -iostd PCI -pinname AF9 -fixed yes -set_io pci_cbe\[1\] -iostd PCI -pinname AF10 -fixed yes -set_io pci_cbe\[2\] -iostd PCI -pinname AH8 -fixed yes -set_io pci_cbe\[3\] -iostd PCI -pinname AH9 -fixed yes -set_io pci_cbe\[4\] -iostd PCI -pinname AC18 -fixed yes -set_io pci_cbe\[5\] -iostd PCI -pinname AB18 -fixed yes -set_io pci_cbe\[6\] -iostd PCI -pinname AE18 -fixed yes -set_io pci_cbe\[7\] -iostd PCI -pinname AD18 -fixed yes -set_io pci_clk -iostd PCI -pinname E16 -fixed yes -set_io pci_devsel -iostd PCI -pinname AC10 -fixed yes -set_io pci_en64 -iostd PCI -pinname AH13 -fixed yes -set_io pci_frame -iostd PCI -pinname AK9 -fixed yes -set_io pci_gnt -iostd PCI -pinname AK15 -fixed yes -set_io pci_host -iostd PCI -pinname AB14 -fixed yes -set_io pci_idsel -iostd PCI -pinname AK6 -fixed yes -set_io pci_irdy -iostd PCI -pinname AE9 -fixed yes -set_io pci_lock -iostd PCI -pinname AE10 -fixed yes -set_io pci_par -iostd PCI -pinname AD11 -fixed yes -set_io pci_par64 -iostd PCI -pinname AG14 -fixed yes -set_io pci_perr -iostd PCI -pinname AC11 -fixed yes -set_io pci_req -iostd PCI -pinname AJ15 -fixed yes -set_io pci_req64n -iostd PCI -pinname AG13 -fixed yes -set_io pci_rst -iostd PCI -pinname AD8 -fixed yes -set_io pci_serr -iostd PCI -pinname AJ11 -fixed yes -set_io pci_stop -iostd PCI -pinname AJ7 -fixed yes -set_io pci_trdy -iostd PCI -pinname AJ8 -fixed yes -set_io pciio\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD29 -fixed yes -set_io pciio\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD25 -fixed yes -set_io pciio\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC25 -fixed yes -set_io pciio\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF27 -fixed yes -set_io pciio\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE27 -fixed yes -set_io pciio\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB23 -fixed yes -set_io pciio\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA23 -fixed yes -set_io pciio\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T27 -fixed yes -set_io pciio\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T30 -fixed yes -set_io pciio\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T22 -fixed yes -set_io pciio\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V23 -fixed yes -set_io pciio\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC27 -fixed yes -set_io pciio\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V26 -fixed yes -set_io pciio\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y25 -fixed yes -set_io pciio\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD30 -fixed yes -set_io pciio\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AG28 -fixed yes -set_io pciio\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF4 -fixed yes -set_io pciio\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB7 -fixed yes -set_io pciio\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC7 -fixed yes -set_io pciio\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD5 -fixed yes -set_io pciio\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE5 -fixed yes -set_io pciio\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF1 -fixed yes -set_io pciio\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE29 -fixed yes -set_io pciio\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF2 -fixed yes -set_io pciio\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC4 -fixed yes -set_io pciio\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD27 -fixed yes -set_io pciio\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC26 -fixed yes -set_io pciio\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE28 -fixed yes -set_io pciio\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB26 -fixed yes -set_io pciio\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD28 -fixed yes -set_io pciio\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE26 -fixed yes -set_io pciio\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD26 -fixed yes -set_io ramben\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W4 -fixed yes -set_io ramben\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U8 -fixed yes -set_io ramben\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L8 -fixed yes -set_io ramben\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L7 -fixed yes -set_io ramoen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U1 -fixed yes -set_io ramoen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T7 -fixed yes -set_io ramoen\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W2 -fixed yes -set_io ramoen\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname W1 -fixed yes -set_io ramoen\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U9 -fixed yes -set_io ramsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R2 -fixed yes -set_io ramsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T6 -fixed yes -set_io ramsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U3 -fixed yes -set_io ramsn\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U4 -fixed yes -set_io ramsn\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U7 -fixed yes -set_io read -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname U5 -fixed yes -set_io resetn -iostd LVTTL -pinname H24 -fixed yes -set_io romsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T2 -fixed yes -set_io romsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V3 -fixed yes -set_io rtsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K24 -fixed yes -set_io rtsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K27 -fixed yes -set_io rwen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J6 -fixed yes -set_io rwen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K7 -fixed yes -set_io rwen\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H2 -fixed yes -set_io rwen\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G2 -fixed yes -set_io rxd\[1\] -iostd LVTTL -pinname H28 -fixed yes -set_io rxd\[2\] -iostd LVTTL -pinname J27 -fixed yes -set_io sa\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D10 -fixed yes -set_io sa\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F19 -fixed yes -set_io sa\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A22 -fixed yes -set_io sa\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A21 -fixed yes -set_io sa\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G20 -fixed yes -set_io sa\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B21 -fixed yes -set_io sa\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D21 -fixed yes -set_io sa\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D9 -fixed yes -set_io sa\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C9 -fixed yes -set_io sa\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C8 -fixed yes -set_io sa\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D11 -fixed yes -set_io sa\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E11 -fixed yes -set_io sa\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C20 -fixed yes -set_io sa\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C19 -fixed yes -set_io sa\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B20 -fixed yes -set_io sa\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F20 -fixed yes -set_io sd\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B4 -fixed yes -set_io sd\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E7 -fixed yes -set_io sd\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H10 -fixed yes -set_io sd\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G10 -fixed yes -set_io sd\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F9 -fixed yes -set_io sd\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E10 -fixed yes -set_io sd\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F10 -fixed yes -set_io sd\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A15 -fixed yes -set_io sd\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E15 -fixed yes -set_io sd\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E17 -fixed yes -set_io sd\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C17 -fixed yes -set_io sd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A4 -fixed yes -set_io sd\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D17 -fixed yes -set_io sd\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A16 -fixed yes -set_io sd\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H17 -fixed yes -set_io sd\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J17 -fixed yes -set_io sd\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A17 -fixed yes -set_io sd\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B17 -fixed yes -set_io sd\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J18 -fixed yes -set_io sd\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F18 -fixed yes -set_io sd\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G18 -fixed yes -set_io sd\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B18 -fixed yes -set_io sd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F8 -fixed yes -set_io sd\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H19 -fixed yes -set_io sd\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G19 -fixed yes -set_io sd\[32\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B8 -fixed yes -set_io sd\[33\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A10 -fixed yes -set_io sd\[34\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A9 -fixed yes -set_io sd\[35\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B11 -fixed yes -set_io sd\[36\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B10 -fixed yes -set_io sd\[37\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D12 -fixed yes -set_io sd\[38\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E12 -fixed yes -set_io sd\[39\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C12 -fixed yes -set_io sd\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F7 -fixed yes -set_io sd\[40\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C11 -fixed yes -set_io sd\[41\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A12 -fixed yes -set_io sd\[42\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A11 -fixed yes -set_io sd\[43\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F13 -fixed yes -set_io sd\[44\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G13 -fixed yes -set_io sd\[45\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H13 -fixed yes -set_io sd\[46\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J13 -fixed yes -set_io sd\[47\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B13 -fixed yes -set_io sd\[48\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H21 -fixed yes -set_io sd\[49\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G21 -fixed yes -set_io sd\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D6 -fixed yes -set_io sd\[50\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D22 -fixed yes -set_io sd\[51\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C22 -fixed yes -set_io sd\[52\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A25 -fixed yes -set_io sd\[53\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A24 -fixed yes -set_io sd\[54\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F22 -fixed yes -set_io sd\[55\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E22 -fixed yes -set_io sd\[56\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E21 -fixed yes -set_io sd\[57\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C24 -fixed yes -set_io sd\[58\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D24 -fixed yes -set_io sd\[59\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D23 -fixed yes -set_io sd\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E6 -fixed yes -set_io sd\[60\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H23 -fixed yes -set_io sd\[61\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H22 -fixed yes -set_io sd\[62\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B25 -fixed yes -set_io sd\[63\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B24 -fixed yes -set_io sd\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B5 -fixed yes -set_io sd\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H8 -fixed yes -set_io sd\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G8 -fixed yes -set_io sd\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D7 -fixed yes -set_io sdcasn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E13 -fixed yes -set_io sdclk -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D14 -fixed yes -set_io sdclkfb -iostd LVTTL -pinname C14 -fixed yes -set_io sdcsn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B12 -fixed yes -set_io sdcsn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E14 -fixed yes -set_io sddqm\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F11 -fixed yes -set_io sddqm\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G11 -fixed yes -set_io sddqm\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B19 -fixed yes -set_io sddqm\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A19 -fixed yes -set_io sddqm\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A7 -fixed yes -set_io sddqm\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B7 -fixed yes -set_io sddqm\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E20 -fixed yes -set_io sddqm\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E19 -fixed yes -set_io sdrasn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B14 -fixed yes -set_io sdwen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A14 -fixed yes -set_io txd\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L23 -fixed yes -set_io txd\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K26 -fixed yes -set_io wdogn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -RES_PULL Up -pinname F25 -fixed yes -set_io writen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T5 -fixed yes - -## SDRAM with EDAC or Reed-Solomon codec -# -#set_io scb\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B8 -fixed yes -#set_io scb\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A11 -fixed yes -#set_io scb\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname F13 -fixed yes -#set_io scb\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname G13 -fixed yes -#set_io scb\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname H13 -fixed yes -#set_io scb\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname J13 -fixed yes -#set_io scb\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B13 -fixed yes -#set_io scb\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A10 -fixed yes -#set_io scb\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A9 -fixed yes -#set_io scb\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B11 -fixed yes -#set_io scb\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname B10 -fixed yes -#set_io scb\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname D12 -fixed yes -#set_io scb\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname E12 -fixed yes -#set_io scb\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C12 -fixed yes -#set_io scb\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname C11 -fixed yes -#set_io scb\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname A12 -fixed yes -# -## LEON3FT-RTAX: GR-RTAX-MEZZ mezzanine board -# -#set_io busainen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P29 -fixed yes -#set_io busainn\[0\] -iostd LVTTL -pinname R26 -fixed yes -#set_io busainp\[0\] -iostd LVTTL -pinname P26 -fixed yes -#set_io busaoutin\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R25 -fixed yes -#set_io busaoutn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P30 -fixed yes -#set_io busaoutp\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R24 -fixed yes -#set_io busbinen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P25 -fixed yes -#set_io busbinn\[0\] -iostd LVTTL -pinname N24 -fixed yes -#set_io busbinp\[0\] -iostd LVTTL -pinname N29 -fixed yes -#set_io busboutin\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P27 -fixed yes -#set_io busboutn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P24 -fixed yes -#set_io busboutp\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P28 -fixed yes -# -#set_io canrx\[0\] -iostd LVTTL -pinname R29 -fixed yes -#set_io cantx\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R30 -fixed yes -# -#set_io spwclk -iostd LVTTL -pinname AC4 -fixed yes -# -## LEON3FT-RTAX: GR-AX-SPW accessory board, and GR-RTAX-MEZZ mezzanine board -# -#set_io spw_rxd\[0\] -iostd LVDS -pinname T24 -fixed yes -#set_io spw_rxd\[1\] -iostd LVDS -pinname V24 -fixed yes -#set_io spw_rxd\[2\] -iostd LVDS -pinname W23 -fixed yes -#set_io spw_rxd\[3\] -iostd LVDS -pinname AD29 -fixed yes -#set_io spw_rxdn\[0\] -iostd LVDS -pinname U24 -fixed yes -#set_io spw_rxdn\[1\] -iostd LVDS -pinname W24 -fixed yes -#set_io spw_rxdn\[2\] -iostd LVDS -pinname Y23 -fixed yes -#set_io spw_rxdn\[3\] -iostd LVDS -pinname AE29 -fixed yes -#set_io spw_rxs\[0\] -iostd LVDS -pinname U27 -fixed yes -#set_io spw_rxs\[1\] -iostd LVDS -pinname W28 -fixed yes -#set_io spw_rxs\[2\] -iostd LVDS -pinname AA30 -fixed yes -#set_io spw_rxs\[3\] -iostd LVDS -pinname AC27 -fixed yes -#set_io spw_rxsn\[0\] -iostd LVDS -pinname V27 -fixed yes -#set_io spw_rxsn\[1\] -iostd LVDS -pinname W27 -fixed yes -#set_io spw_rxsn\[2\] -iostd LVDS -pinname AB30 -fixed yes -#set_io spw_rxsn\[3\] -iostd LVDS -pinname AD27 -fixed yes -#set_io spw_txd\[0\] -iostd LVDS -pinname V29 -fixed yes -#set_io spw_txd\[1\] -iostd LVDS -pinname W30 -fixed yes -#set_io spw_txd\[2\] -iostd LVDS -pinname AF30 -fixed yes -#set_io spw_txd\[3\] -iostd LVDS -pinname AD28 -fixed yes -#set_io spw_txdn\[0\] -iostd LVDS -pinname W29 -fixed yes -#set_io spw_txdn\[1\] -iostd LVDS -pinname Y30 -fixed yes -#set_io spw_txdn\[2\] -iostd LVDS -pinname AF29 -fixed yes -#set_io spw_txdn\[3\] -iostd LVDS -pinname AE28 -fixed yes -#set_io spw_txs\[0\] -iostd LVDS -pinname U25 -fixed yes -#set_io spw_txs\[1\] -iostd LVDS -pinname Y27 -fixed yes -#set_io spw_txs\[2\] -iostd LVDS -pinname Y24 -fixed yes -#set_io spw_txs\[3\] -iostd LVDS -pinname AB26 -fixed yes -#set_io spw_txsn\[0\] -iostd LVDS -pinname V25 -fixed yes -#set_io spw_txsn\[1\] -iostd LVDS -pinname Y28 -fixed yes -#set_io spw_txsn\[2\] -iostd LVDS -pinname AA24 -fixed yes -#set_io spw_txsn\[3\] -iostd LVDS -pinname AC26 -fixed yes -# -#set_location spw.swloop.0.sw0/grspwc0/rxclko -fixed yes 1051 48 -#set_location spw.swloop.0.sw0/grspwc0/rx_r.shftreg -fixed yes 1052 52 -#set_location spw.swloop.0.sw0/grspwc0/nrx_r.shftreg\[0\] -fixed yes 1052 51 -# -#set_location spw.swloop.1.sw0/grspwc0/rxclko -fixed yes 1051 34 -#set_location spw.swloop.1.sw0/grspwc0/rx_r.shftreg -fixed yes 1052 34 -#set_location spw.swloop.1.sw0/grspwc0/nrx_r.shftreg\[0\] -fixed yes 1052 33 -# -# -## LEON3FT-RTAX additions not supported on mezzanine boards -# -#set_io busainen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N26 -fixed yes -#set_io busainn\[1\] -iostd LVTTL -pinname M29 -fixed yes -#set_io busainp\[1\] -iostd LVTTL -pinname L29 -fixed yes -#set_io busaoutin\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N25 -fixed yes -#set_io busaoutn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N28 -fixed yes -#set_io busaoutp\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N27 -fixed yes -#set_io busbinen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M28 -fixed yes -#set_io busbinn\[1\] -iostd LVTTL -pinname M27 -fixed yes -#set_io busbinp\[1\] -iostd LVTTL -pinname L27 -fixed yes -#set_io busboutin\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N23 -fixed yes -#set_io busboutn\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L28 -fixed yes -#set_io busboutp\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N22 -fixed yes -# -#set_io canrx\[1\] -iostd LVTTL -pinname K30 -fixed yes -#set_io cantx\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L25 -fixed yes -# -##set_io canen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K29 -fixed yes -##set_io canen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M25 -fixed yes -# -#set_io romsn\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K29 -fixed yes -#set_io romsn\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M25 -fixed yes -# -#set_io spw_clk -iostd LVTTL -pinname E16 -fixed yes -# -# set_io dsutck -iostd LVTTL -pinname AD29 -fixed yes -# set_io dsutdi -iostd LVTTL -pinname AC27 -fixed yes -# set_io dsutdo -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE29 -fixed yes -# set_io dsutms -iostd LVTTL -pinname AD27 -fixed yes - -# GR-CPCI-1553 mezzanine board (not compatible with LEON3FT-RTAX) - -set_io busainen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R24 -fixed yes -set_io busainn\[0\] -iostd LVTTL -pinname P29 -fixed yes -set_io busainp\[0\] -iostd LVTTL -pinname P30 -fixed yes -set_io busaoutin\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R30 -fixed yes -set_io busaoutn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R25 -fixed yes -set_io busaoutp\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R29 -fixed yes -set_io busbinen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P28 -fixed yes -set_io busbinn\[0\] -iostd LVTTL -pinname P25 -fixed yes -set_io busbinp\[0\] -iostd LVTTL -pinname P24 -fixed yes -set_io busboutin\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P26 -fixed yes -set_io busboutn\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname P27 -fixed yes -set_io busboutp\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname R26 -fixed yes - -set_io canen\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname K29 -fixed yes -set_io canen\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M25 -fixed yes -set_io canrx\[0\] -iostd LVTTL -pinname M24 -fixed yes -set_io canrx\[1\] -iostd LVTTL -pinname K30 -fixed yes -set_io cantx\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M23 -fixed yes -set_io cantx\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L25 -fixed yes - -set_io SPWCLKCNFG\[3\] -iostd LVTTL -pinname AD5 -fixed yes -set_io SPWCLKCNFG\[2\] -iostd LVTTL -pinname AE5 -fixed yes -set_io SPWCLKCNFG\[1\] -iostd LVTTL -pinname AF2 -fixed yes -set_io SPWCLKCNFG\[0\] -iostd LVTTL -pinname AC4 -fixed yes - - -## Alternative GPIO pins (replaces 1553 [1] interface and CAN enables signals) -# -#set_io gpio\[16\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N25 -fixed yes -#set_io gpio\[17\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N27 -fixed yes -#set_io gpio\[18\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N28 -fixed yes -#set_io gpio\[19\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N26 -fixed yes -#set_io gpio\[20\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L29 -fixed yes -#set_io gpio\[21\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M29 -fixed yes -#set_io gpio\[22\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N23 -fixed yes -#set_io gpio\[23\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N22 -fixed yes -#set_io gpio\[24\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L28 -fixed yes -#set_io gpio\[25\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M28 -fixed yes -#set_io gpio\[26\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L27 -fixed yes -#set_io gpio\[27\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M27 -fixed yes -#set_io gpio\[28\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M24 -fixed yes -#set_io gpio\[29\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M23 -fixed yes -#set_io gpio\[30\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB7 -fixed yes -#set_io gpio\[31\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD5 -fixed yes - - -# Alternative FIFO pins for GR-CPCI-1553 mezzanine board and GR-FIFO test board, -# supports also additional SRAM bank (bank 1 on some boards, -# other signals not compatible with LEON3FT-RTAX -# (in conflict with ethernet, mil-std-1553 bus-1, and gpio[18-27, 30-31]) - -set_io fifohfn -iostd LVTTL -RES_PULL Up -pinname M27 -fixed yes -set_io fifoefn -iostd LVTTL -RES_PULL Up -pinname L27 -fixed yes -set_io fifoffn -iostd LVTTL -RES_PULL Up -pinname M28 -fixed yes -set_io fifowen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L28 -fixed yes -set_io fiforen -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N22 -fixed yes -set_io fifop\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N23 -fixed yes -set_io fifop\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname M29 -fixed yes -set_io fifod\[15\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname L29 -fixed yes -set_io fifod\[14\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N26 -fixed yes -set_io fifod\[13\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname N28 -fixed yes -set_io fifod\[12\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE26 -fixed yes -set_io fifod\[11\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD26 -fixed yes -set_io fifod\[10\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD25 -fixed yes -set_io fifod\[9\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AC25 -fixed yes -set_io fifod\[8\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AF27 -fixed yes -set_io fifod\[7\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AE27 -fixed yes -set_io fifod\[6\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AB23 -fixed yes -set_io fifod\[5\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AA23 -fixed yes -set_io fifod\[4\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T27 -fixed yes -set_io fifod\[3\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T30 -fixed yes -set_io fifod\[2\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname T22 -fixed yes -set_io fifod\[1\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V23 -fixed yes -set_io fifod\[0\] -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname V26 -fixed yes - -# FIFO RESET (only for GR-FIFO board) -set_io fiforstn -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname Y25 -fixed yes -# FIFO RT (only for GR-FIFO board) -set_io fifort -iostd LVTTL -OUT_DRIVE 12 -SLEW Low -OUT_LOAD 35 -pinname AD30 -fixed yes diff --git a/boards/gr-cpci-ax/gr-cpci-ax2000-ccga624.xls b/boards/gr-cpci-ax/gr-cpci-ax2000-ccga624.xls deleted file mode 100644 index f40438536da34c4718ef7f7d87276c645f7d02de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51712 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 diff --git a/boards/gr-cpci-ax/gr-cpci-ax2000-cqfp352.xls b/boards/gr-cpci-ax/gr-cpci-ax2000-cqfp352.xls deleted file mode 100644 index ea2878a0ff31af950b6a315b389856ff84bba213..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121856 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 AVgLXD diff --git a/boards/gr-xc6s/Makefile.inc b/boards/gr-xc6s/Makefile.inc index 351de683..10e7bd22 100644 --- a/boards/gr-xc6s/Makefile.inc +++ b/boards/gr-xc6s/Makefile.inc @@ -10,3 +10,10 @@ MANUFACTURER=Xilinx MGCPART=XC6SLX75$(PACKAGE) MGCTECHNOLOGY=SPARTAN-6 MGCPACKAGE=$(PACKAGE) + +# Set PlanAhead Synthesis Flow and Strategy used for build +PLANAHEAD_SYNTH_FLOW="XST 14" +PLANAHEAD_SYNTH_STRATEGY="TimingWithIOBPacking" + +# Set PlanAhead Implementation strategy +PLANAHEAD_IMPL_STRATEGY="MapLogicOptParHighExtra" diff --git a/boards/lattice-ecp3-lfe3-35ea/Makefile.inc b/boards/lattice-ecp3-lfe3-35ea/Makefile.inc deleted file mode 100755 index 88a06eed..00000000 --- a/boards/lattice-ecp3-lfe3-35ea/Makefile.inc +++ /dev/null @@ -1,12 +0,0 @@ -TECHNOLOGY=LATTICE-ECP3 -PART=LFE3_35EA -PACKAGE=FN484C -ISPLIB=ep5c00 -ISPPACKAGE=FPBGA484 -SPEED=-8 -SYNFREQ=100 -PROMGENPAR= -exe $(ISPVM_DIR)/ispufw -op p -prj $(TOP) -if $(TOP).bit -oft -int -of $(TOP).mcs -MANUFACTURER=Lattice -MGCPART=$(PART) -MGCPACKAGE=$(ISPPACKAGE) -MGCTECHNOLOGY=LatticeECP-DSP diff --git a/boards/lattice-ecp3-lfe3-35ea/default.ut b/boards/lattice-ecp3-lfe3-35ea/default.ut deleted file mode 100644 index 8d055524..00000000 --- a/boards/lattice-ecp3-lfe3-35ea/default.ut +++ /dev/null @@ -1,6 +0,0 @@ --g CfgMode:Disable --g ReadBack:SRAM --g RamCfg:Reset --g SYNSRC:No --g PllSET:None - diff --git a/boards/lattice-ecp3-lfe3-35ea/leon3mp.lpf b/boards/lattice-ecp3-lfe3-35ea/leon3mp.lpf deleted file mode 100644 index 68d5738e..00000000 --- a/boards/lattice-ecp3-lfe3-35ea/leon3mp.lpf +++ /dev/null @@ -1,229 +0,0 @@ -COMMERCIAL; -BLOCK RESETPATHS ; -BLOCK ASYNCPATHS ; -# ECP3 PCIE Solution Board I/O Bank Voltages -BANK 0 VCCIO 1.5 V; -BANK 1 VCCIO 3.3 V; -BANK 2 VCCIO 3.3 V; -BANK 3 VCCIO 3.3 V; -# BANK 4 - not used -# BANK 5 - not used -BANK 6 VCCIO 3.3 V; -BANK 7 VCCIO 1.5 V; -BANK 8 VCCIO 3.3 V; - -SYSCONFIG PERSISTENT=OFF CONFIG_MODE=SPI DONE_EX=OFF MCCLK_FREQ=20 CONFIG_SECURE=OFF WAKE_UP=21 WAKE_ON_LOCK=OFF COMPRESS_CONFIG=OFF ENABLE_NDR=OFF CONFIG_IOVOLTAGE=3.3 ; - -########################################################################## -## FREQUENCIES AND TIMING -########################################################################## -FREQUENCY PORT "clk_in" 100.000000 MHz ; -FREQUENCY PORT "clk125" 125.000000 MHz ; # 125 MHz -FREQUENCY NET "clk_in_c" 100.000000 MHz ; -FREQUENCY NET "clkm" 100.00000 MHz PAR_ADJ 10.000000 ; -USE PRIMARY PURE NET "clkm" ; - -BLOCK PATH FROM PORT "reset_n" ; - -# Preference for GigE rates -FREQUENCY NET "txc_c" 125.0 MHz ; -FREQUENCY NET "rxc_c" 125.0 MHz ; -FREQUENCY NET "mdc_c" 10.0 MHz ; -USE PRIMARY NET "clk_in" ; -USE SECONDARY NET "clk125" ; - -BLOCK PATH FROM CLKNET "clkm" TO CLKNET "mdc_c" ; -#--------------------------------------------------------------- -# GMII TIMING CONSTRAINTS -#--------------------------------------------------------------- -## GMII input signals -## Input setup and hold -## This preference satisfies/checks that the RX input signals have enough setup -## time and hold. That the data is is centered and stabled on the rising edge -## of the internal rxc. This preference has been checked/verified on the -## Versa hardware with the Marvell PHY -DEFINE PORT GROUP "TSU_GRP" "rx_dv" "rx_er" "rx_d*"; -INPUT_SETUP GROUP "TSU_GRP" 2.500000 ns HOLD 3.0 ns CLKPORT "rxc" ; - -## GMII output signals -## Output Clock to Out -## This preference satisfies/checks that the TX output signals have enough setup -## time and hold to the PHY in 1000BaseT mode. The data is is centered and stabled on the rising edge -## of the output gtxclk. This preference has been checked/verified on the -## Versa hardware with the Marvell PHY -DEFINE PORT GROUP "TCO_GRP" "tx_en" "tx_d*"; -CLOCK_TO_OUT GROUP "TCO_GRP" OUTPUT_DELAY 2.500000 ns CLKPORT "clk125" CLKOUT PORT "gtxclk" ; - -########################################################################## -## LOCATE FOR CLOCK, RESET -########################################################################## -LOCATE COMP "clk_in" SITE "L5" ; -LOCATE COMP "reset_n" SITE "A21" ; - -########################################################################## -## LOCATE UART SIGNALS -########################################################################## -#AHB DSU UART - ROUTED ON THE FTDI CHIP -LOCATE COMP "dsurx" SITE "G19" ; # from the FTDI chip -LOCATE COMP "dsutx" SITE "G20" ; # to the FTDI chip -#AHB DSU UART - ROUTED ON EXPANSION CONNECTOR -#LOCATE COMP "dsurx" SITE "D17" ; -#LOCATE COMP "dsutx" SITE "J22" ; -#APB UART - ROUTED ON EXPANSION CONNECTOR -LOCATE COMP "rxd1" SITE "K22" ; -LOCATE COMP "txd1" SITE "L18" ; - -########################################################################## -## LOCATE ETHERNET/MAC SIGNALS PHY#2 -########################################################################## -LOCATE COMP "rstn" SITE "R21" ; -LOCATE COMP "clk125" SITE "R17" ; # 125 MHz clock from Marvel 88E1119R Gigabit Ethernet transceiver device -LOCATE COMP "gtxclk" SITE "M19" ; -LOCATE COMP "rxc" SITE "N19" ; -LOCATE COMP "rx_d_0" SITE "AB17" ; -LOCATE COMP "rx_d_1" SITE "AA17" ; -LOCATE COMP "rx_d_2" SITE "R19" ; -LOCATE COMP "rx_d_3" SITE "V21" ; -LOCATE COMP "rx_d_4" SITE "T17" ; -LOCATE COMP "rx_d_5" SITE "R18" ; -LOCATE COMP "rx_d_6" SITE "W21" ; -LOCATE COMP "rx_d_6" SITE "Y21" ; -LOCATE COMP "rx_dv" SITE "U15" ; -LOCATE COMP "rx_er" SITE "V20" ; -LOCATE COMP "col" SITE "N18" ; -LOCATE COMP "crs" SITE "P19" ; -LOCATE COMP "txc" SITE "M21" ; -LOCATE COMP "tx_d_0" SITE "W22" ; -LOCATE COMP "tx_d_1" SITE "R16" ; -LOCATE COMP "tx_d_2" SITE "P17" ; -LOCATE COMP "tx_d_3" SITE "Y22" ; -LOCATE COMP "tx_d_4" SITE "T21" ; -LOCATE COMP "tx_d_5" SITE "U22" ; -LOCATE COMP "tx_d_6" SITE "P20" ; -LOCATE COMP "tx_d_7" SITE "U20" ; -LOCATE COMP "tx_en" SITE "V22" ; -LOCATE COMP "mdio" SITE "U16" ; -LOCATE COMP "mdc" SITE "Y18" ; - -############################################################################################### -## LOCATE DEMO LOGIC -############################################################################################### -#NOT USED YET -#LOCATE COMP "dip_switch_0" SITE "J7" ; -#LOCATE COMP "dip_switch_1" SITE "J6" ; -#LOCATE COMP "dip_switch_2" SITE "H2" ; -#LOCATE COMP "dip_switch_3" SITE "H3" ; -#LOCATE COMP "dip_switch_4" SITE "J3" ; -#LOCATE COMP "dip_switch_5" SITE "K3" ; -#LOCATE COMP "dip_switch_6" SITE "J2" ; -#LOCATE COMP "dip_switch_7" SITE "J1" ; - -LOCATE COMP "led_0" SITE "U19" ; # green -LOCATE COMP "led_1" SITE "U18" ; # green -LOCATE COMP "led_2" SITE "AA21" ; # yellow -LOCATE COMP "led_3" SITE "Y20" ; # yellow -LOCATE COMP "led_4" SITE "W19" ; # red -LOCATE COMP "led_5" SITE "V19" ; # red -LOCATE COMP "led_6" SITE "AB20" ; # blue -LOCATE COMP "led_7" SITE "AA20" ; # blue - -LOCATE COMP "seg14_led_out_0" SITE "V6" ; -LOCATE COMP "seg14_led_out_1" SITE "U7" ; -LOCATE COMP "seg14_led_out_2" SITE "Y6" ; -LOCATE COMP "seg14_led_out_3" SITE "AA6" ; -LOCATE COMP "seg14_led_out_4" SITE "U8" ; -LOCATE COMP "seg14_led_out_5" SITE "T8" ; -LOCATE COMP "seg14_led_out_6" SITE "R9" ; -LOCATE COMP "seg14_led_out_7" SITE "T9" ; -LOCATE COMP "seg14_led_out_8" SITE "AB3" ; -LOCATE COMP "seg14_led_out_9" SITE "AB4" ; -LOCATE COMP "seg14_led_out_10" SITE "W4" ; -LOCATE COMP "seg14_led_out_11" SITE "Y5" ; -LOCATE COMP "seg14_led_out_12" SITE "AA4" ; -LOCATE COMP "seg14_led_out_13" SITE "AA5" ; -LOCATE COMP "seg14_led_out_14" SITE "W5" ; - - -########################################################################## -########################################################################## -# IO BUFFER PREFERENCES -########################################################################## -########################################################################## - -IOBUF ALLPORTS IO_TYPE=LVCMOS33 ; - -########################################################################## -# CLOCK, RESET -########################################################################## -#----- Override ------ -IOBUF PORT "clk_in" IO_TYPE=LVDS25 DIFFRESISTOR=100 ; -IOBUF PORT "reset_n" IO_TYPE=LVCMOS33 DIFFRESISTOR=OFF ; - -########################################################################## -## UART SIGNALS -########################################################################## -#AHB DSU UART - ROUTED ON THE FTDI CHIP -IOBUF PORT "dsurx" SITE=G19 IO_TYPE=LVCMOS33 ; # from the FTDI chip -IOBUF PORT "dsutx" SITE=G20 IO_TYPE=LVCMOS33 ; # to the FTDI chip -#AHB DSU UART - ROUTED ON EXPANSION CONNECTOR -#IOBUF PORT "dsurx" SITE=D17 IO_TYPE=LVCMOS33 ; -#IOBUF PORT "dsutx" SITE=J22 IO_TYPE=LVCMOS33 ; -#APB UART - ROUTED ON EXPANSION CONNECTOR -IOBUF PORT "rxd1" SITE=K22 IO_TYPE=LVCMOS33 ; -IOBUF PORT "txd1" SITE=L18 IO_TYPE=LVCMOS33 ; - -########################################################################## -## ETHERNET/MAC PHY#1 -########################################################################## -IOBUF PORT "rx_d_0" IO_TYPE=LVCMOS33 PULLMODE=DOWN ; -IOBUF PORT "rx_d_1" IO_TYPE=LVCMOS33 PULLMODE=DOWN ; -IOBUF PORT "rx_d_2" IO_TYPE=LVCMOS33 PULLMODE=DOWN ; -IOBUF PORT "rx_d_3" IO_TYPE=LVCMOS33 PULLMODE=DOWN ; -IOBUF PORT "rx_d_4" IO_TYPE=LVCMOS33 PULLMODE=DOWN ; -IOBUF PORT "rx_d_5" IO_TYPE=LVCMOS33 PULLMODE=DOWN ; -IOBUF PORT "rx_d_6" IO_TYPE=LVCMOS33 PULLMODE=DOWN ; -IOBUF PORT "rx_d_7" IO_TYPE=LVCMOS33 PULLMODE=DOWN ; - -########################################################################## -# DIP SWITCHES -########################################################################## -#IOBUF PORT "dip_switch_0" SITE=J7 IO_TYPE=LVCMOS15 ; -#IOBUF PORT "dip_switch_1" SITE=J6 IO_TYPE=LVCMOS15 ; -#IOBUF PORT "dip_switch_2" SITE=H2 IO_TYPE=LVCMOS15 ; -#IOBUF PORT "dip_switch_3" SITE=H3 IO_TYPE=LVCMOS15 ; -#IOBUF PORT "dip_switch_4" SITE=J3 IO_TYPE=LVCMOS15 ; -#IOBUF PORT "dip_switch_5" SITE=K3 IO_TYPE=LVCMOS15 ; -#IOBUF PORT "dip_switch_6" SITE=J2 IO_TYPE=LVCMOS15 ; -#IOBUF PORT "dip_switch_7" SITE=J1 IO_TYPE=LVCMOS15 ; - -########################################################################## -# STATUS LEDS -########################################################################## -IOBUF PORT "led_0" SITE=U19 IO_TYPE=LVCMOS33 ; #led(0) -IOBUF PORT "led_1" SITE=U18 IO_TYPE=LVCMOS33 ; #led(1) -IOBUF PORT "led_2" SITE=AA21 IO_TYPE=LVCMOS33 ; #led(2) -IOBUF PORT "led_3" SITE=Y20 IO_TYPE=LVCMOS33 ; #led(3) -IOBUF PORT "led_4" SITE=W19 IO_TYPE=LVCMOS33 ; #led(4) -IOBUF PORT "led_5" SITE=V19 IO_TYPE=LVCMOS33 ; #led(5) -IOBUF PORT "led_6" SITE=AB20 IO_TYPE=LVCMOS33 ; #led(6) -IOBUF PORT "led_7" SITE=AA20 IO_TYPE=LVCMOS33 ; #led(7) - -########################################################################## -# 14 SEGMENT LEDS -########################################################################## -IOBUF PORT "seg14_led_out_0" SITE=V6 IO_TYPE=LVCMOS33 ; # A -IOBUF PORT "seg14_led_out_1" SITE=U7 IO_TYPE=LVCMOS33 ; # B -IOBUF PORT "seg14_led_out_2" SITE=Y6 IO_TYPE=LVCMOS33 ; # C -IOBUF PORT "seg14_led_out_3" SITE=AA6 IO_TYPE=LVCMOS33 ; # D -IOBUF PORT "seg14_led_out_4" SITE=U8 IO_TYPE=LVCMOS33 ; # E -IOBUF PORT "seg14_led_out_5" SITE=T8 IO_TYPE=LVCMOS33 ; # F -IOBUF PORT "seg14_led_out_6" SITE=R9 IO_TYPE=LVCMOS33 ; # G -IOBUF PORT "seg14_led_out_7" SITE=T9 IO_TYPE=LVCMOS33 ; # H -IOBUF PORT "seg14_led_out_8" SITE=AB3 IO_TYPE=LVCMOS33 ; # J -IOBUF PORT "seg14_led_out_9" SITE=AB4 IO_TYPE=LVCMOS33 ; # K -IOBUF PORT "seg14_led_out_10" SITE=W4 IO_TYPE=LVCMOS33 ; # L -IOBUF PORT "seg14_led_out_11" SITE=Y5 IO_TYPE=LVCMOS33 ; # M -IOBUF PORT "seg14_led_out_12" SITE=AA4 IO_TYPE=LVCMOS33 ; # N -IOBUF PORT "seg14_led_out_13" SITE=AA5 IO_TYPE=LVCMOS33 ; # P -IOBUF PORT "seg14_led_out_14" SITE=W5 IO_TYPE=LVCMOS33 ; # DP - diff --git a/boards/wildcard-xcv300e/Makefile.inc b/boards/wildcard-xcv300e/Makefile.inc deleted file mode 100644 index e7371729..00000000 --- a/boards/wildcard-xcv300e/Makefile.inc +++ /dev/null @@ -1,38 +0,0 @@ -TECHNOLOGY=VIRTEX-E -PART=XCV300E -PACKAGE=BG352 -SPEED=-6 -SYNFREQ=50 -PROMGENPAR=-p bin -w -u 0 $(TOP).bit -o wildcard-xcv300e -MANUFACTURER=Xilinx - -vsim-wildcard: - vmap system ./modelsim/work - vmap pe_lib ./modelsim/work - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/system_pkg.vhd - $(VCOM) pe_lib -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/pe/pe_pkg.vhd - $(VCOM) pe_lib -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/pe/pe_ent.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/clk_gen/clkgen_pkg.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/clk_gen/clkgen_entarch.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/cb_ctrl/cb_ctrl_pkg.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/cb_ctrl/cb_ctrl_entarch.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/mem/mem_pkg.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/mem/mem_ent.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/mem/mem_empty_arch.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/mem/mem_static_arch.vhd - @if test -r "$(WILDCARD_BASE)/vhdl/src/wildcard/io_conn/io_if_ent.vhd"; \ - then $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/io_conn/io_if_ent.vhd; \ - fi - @if test -r "$(WILDCARD_BASE)/vhdl/src/wildcard/io_conn/io_if_inactive_arch.vhd"; \ - then $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/io_conn/io_if_inactive_arch.vhd; \ - fi - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/wildcard_pkg.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/wildcard/wildcard_entarch.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/host/host_pkg.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/host/host_ent.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/vhdl/src/system_entarch.vhd - $(VCOM) pe_lib -explicit pe_arch.vhd - $(VCOM) system -explicit host_arch.vhd - $(VCOM) system -explicit system_cfg.vhd - @echo "" > make.work - @for i in `cat libs.txt`; do vmake $$i >> make.work ; done \ No newline at end of file diff --git a/boards/wildcard-xcv300e/default.sdc b/boards/wildcard-xcv300e/default.sdc deleted file mode 100644 index af88b1e5..00000000 --- a/boards/wildcard-xcv300e/default.sdc +++ /dev/null @@ -1,47 +0,0 @@ -# Synplicity, Inc. constraint file - -# -# Clocks -# -define_clock -name {Clocks_F_Clk} -freq 60.000 -clockgroup default_clkgroup -define_clock -name {Clocks_K_Clk} -freq 40.000 -clockgroup pci_clkgroup - -# -# Clock to Clock -# - -# -# Inputs/Outputs -# -define_output_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {Clocks_F_Clk:r} -define_input_delay -disable -default 14.00 -improve 0.00 -route 0.00 -ref {Clocks_F_Clk:r} -define_input_delay -disable {Reset_Reset} 0.00 -improve 0.00 -route 0.00 -ref {Clocks_K_Clk:r} - -# -# Registers -# - -# -# Multicycle Path -# - -# -# False Path -# - -# -# Delay Path -# - -# -# Attributes -# -define_global_attribute syn_useioff {1} - -# -# Compile Points -# - -# -# Other Constraints -# diff --git a/boards/wildcard-xcv300e/default.ucf b/boards/wildcard-xcv300e/default.ucf deleted file mode 100644 index a4dd687c..00000000 --- a/boards/wildcard-xcv300e/default.ucf +++ /dev/null @@ -1,236 +0,0 @@ -CONFIG STEPPING="0"; - -NET Clocks_K_Clk PERIOD = 30.000 ; -#OFFSET = OUT : 11.000 : AFTER Clocks_K_Clk ; -#OFFSET = IN : 7.000 : BEFORE Clocks_K_Clk ; - -NET Clocks_F_Clk PERIOD = 20.000 ; -#OFFSET = OUT : 20.000 : AFTER Clocks_F_Clk ; -#OFFSET = IN : 20.000 : BEFORE Clocks_F_Clk ; - -NET "Clocks_F_Clk" LOC=AF14; # Pads.Clocks.F_Clk -NET "Clocks_M_Clk" LOC=AE13; # Pads.Clocks.M_Clk -NET "Clocks_P_Clk" LOC=B14; # Pads.Clocks.P_Clk -NET "Clocks_K_Clk" LOC=D14; # Pads.Clocks.K_Clk -NET "Clocks_IO_Clk" LOC=AC13; # Pads.Clocks.IO_Clk - -NET "Clocks_M_Clk_Out_PE" LOC=AE3; # Pads.Clocks.M_Clk_Out_PE -NET "Clocks_M_Clk_Out_CB_Ctrl" LOC=AE4; # Pads.Clocks.M_Clk_Out_CB_Ctrl -NET "Clocks_M_Clk_Out_Left_Mem" LOC=AD5; # Pads.Clocks.M_Clk_Out_Left_Mem -NET "Clocks_M_Clk_Out_Right_Mem" LOC=AC6; # Pads.Clocks.M_Clk_Out_Right_Mem -NET "Clocks_P_Clk_Out_PE" LOC=AF4; # Pads.Clocks.P_Clk_Out_PE -NET "Clocks_P_Clk_Out_CB_Ctrl" LOC=AC7; # Pads.Clocks.P_Clk_Out_CB_Ctrl - -NET "Reset_Reset" LOC=AE8; # Pads.Reset -NET "Audio_Audio" LOC=C22; # Pads.Audio - -NET "LAD_Bus_Addr_Data(0)" LOC=N25; # Pads.LAD_Bus.Addr_Data(0) -NET "LAD_Bus_Addr_Data(1)" LOC=N24; # Pads.LAD_Bus.Addr_Data(1) -NET "LAD_Bus_Addr_Data(2)" LOC=M26; # Pads.LAD_Bus.Addr_Data(2) -NET "LAD_Bus_Addr_Data(3)" LOC=M25; # Pads.LAD_Bus.Addr_Data(3) -NET "LAD_Bus_Addr_Data(4)" LOC=M24; # Pads.LAD_Bus.Addr_Data(4) -NET "LAD_Bus_Addr_Data(5)" LOC=M23; # Pads.LAD_Bus.Addr_Data(5) -NET "LAD_Bus_Addr_Data(6)" LOC=L26; # Pads.LAD_Bus.Addr_Data(6) -NET "LAD_Bus_Addr_Data(7)" LOC=K25; # Pads.LAD_Bus.Addr_Data(7) -NET "LAD_Bus_Addr_Data(8)" LOC=L24; # Pads.LAD_Bus.Addr_Data(8) -NET "LAD_Bus_Addr_Data(9)" LOC=L23; # Pads.LAD_Bus.Addr_Data(9) -NET "LAD_Bus_Addr_Data(10)" LOC=J26; # Pads.LAD_Bus.Addr_Data(10) -NET "LAD_Bus_Addr_Data(11)" LOC=J25; # Pads.LAD_Bus.Addr_Data(11) -NET "LAD_Bus_Addr_Data(12)" LOC=K24; # Pads.LAD_Bus.Addr_Data(12) -NET "LAD_Bus_Addr_Data(13)" LOC=K23; # Pads.LAD_Bus.Addr_Data(13) -NET "LAD_Bus_Addr_Data(14)" LOC=H25; # Pads.LAD_Bus.Addr_Data(14) -NET "LAD_Bus_Addr_Data(15)" LOC=J23; # Pads.LAD_Bus.Addr_Data(15) -NET "LAD_Bus_Addr_Data(16)" LOC=G26; # Pads.LAD_Bus.Addr_Data(16) -NET "LAD_Bus_Addr_Data(17)" LOC=G25; # Pads.LAD_Bus.Addr_Data(17) -NET "LAD_Bus_Addr_Data(18)" LOC=H24; # Pads.LAD_Bus.Addr_Data(18) -NET "LAD_Bus_Addr_Data(19)" LOC=H23; # Pads.LAD_Bus.Addr_Data(19) -NET "LAD_Bus_Addr_Data(20)" LOC=F26; # Pads.LAD_Bus.Addr_Data(20) -NET "LAD_Bus_Addr_Data(21)" LOC=F25; # Pads.LAD_Bus.Addr_Data(21) -NET "LAD_Bus_Addr_Data(22)" LOC=G24; # Pads.LAD_Bus.Addr_Data(22) -NET "LAD_Bus_Addr_Data(23)" LOC=D26; # Pads.LAD_Bus.Addr_Data(23) -NET "LAD_Bus_Addr_Data(24)" LOC=E25; # Pads.LAD_Bus.Addr_Data(24) -NET "LAD_Bus_Addr_Data(25)" LOC=F24; # Pads.LAD_Bus.Addr_Data(25) -NET "LAD_Bus_Addr_Data(26)" LOC=F23; # Pads.LAD_Bus.Addr_Data(26) -NET "LAD_Bus_Addr_Data(27)" LOC=D25; # Pads.LAD_Bus.Addr_Data(27) -NET "LAD_Bus_Addr_Data(28)" LOC=E24; # Pads.LAD_Bus.Addr_Data(28) -NET "LAD_Bus_Addr_Data(29)" LOC=C26; # Pads.LAD_Bus.Addr_Data(29) -NET "LAD_Bus_Addr_Data(30)" LOC=E23; # Pads.LAD_Bus.Addr_Data(30) -NET "LAD_Bus_Addr_Data(31)" LOC=D24; # Pads.LAD_Bus.Addr_Data(31) -NET "LAD_Bus_AS_n" LOC=C25; # Pads.LAD_Bus.AS_n -NET "LAD_Bus_DS_n" LOC=AC22; # Pads.LAD_Bus.DS_n -NET "LAD_Bus_Ack_n" LOC=AF24; # Pads.LAD_Bus.Ack_n -NET "LAD_Bus_Reg_n" LOC=AD22; # Pads.LAD_Bus.Reg_n -NET "LAD_Bus_WR_n" LOC=B23; # Pads.LAD_Bus.WR_n -NET "LAD_Bus_CS_n" LOC=B24; # Pads.LAD_Bus.CS_n -NET "LAD_Bus_Int_Req_n" LOC=C23; # Pads.LAD_Bus.Int_Req_n -NET "LAD_Bus_DMA_0_Data_OK_n" LOC=AF9; # Pads.LAD_Bus.DMA_0_Data_OK_n -NET "LAD_Bus_DMA_0_Burst_OK" LOC=AC11; # Pads.LAD_Bus.DMA_0_Burst_OK -NET "LAD_Bus_DMA_1_Data_OK_n" LOC=AE10; # Pads.LAD_Bus.DMA_1_Data_OK_n -NET "LAD_Bus_DMA_1_Burst_OK" LOC=R1; # Pads.LAD_Bus.DMA_1_Burst_OK -NET "LAD_Bus_Reg_Data_OK_n" LOC=AC21; # Pads.LAD_Bus.Reg_Data_OK_n -NET "LAD_Bus_Reg_Burst_OK" LOC=AE23; # Pads.LAD_Bus.Reg_Burst_OK -NET "LAD_Bus_Force_K_Clk_n" LOC=D21; # Pads.LAD_Bus.Force_K_Clk_n -NET "LAD_Bus_Reserved" LOC=D22; # Pads.LAD_Bus.Reserved - -NET "Left_Mem_Addr(0)" LOC=AE12; # Pads.Left_Mem.Addr(0) -NET "Left_Mem_Addr(1)" LOC=AF12; # Pads.Left_Mem.Addr(1) -NET "Left_Mem_Addr(2)" LOC=AD13; # Pads.Left_Mem.Addr(2) -NET "Left_Mem_Addr(3)" LOC=AD10; # Pads.Left_Mem.Addr(3) -NET "Left_Mem_Addr(4)" LOC=AD14; # Pads.Left_Mem.Addr(4) -NET "Left_Mem_Addr(5)" LOC=AF15; # Pads.Left_Mem.Addr(5) -NET "Left_Mem_Addr(6)" LOC=AE15; # Pads.Left_Mem.Addr(6) -NET "Left_Mem_Addr(7)" LOC=AD15; # Pads.Left_Mem.Addr(7) -NET "Left_Mem_Addr(8)" LOC=AC15; # Pads.Left_Mem.Addr(8) -NET "Left_Mem_Addr(9)" LOC=AE16; # Pads.Left_Mem.Addr(9) -NET "Left_Mem_Addr(10)" LOC=AE17; # Pads.Left_Mem.Addr(10) -NET "Left_Mem_Addr(11)" LOC=AD16; # Pads.Left_Mem.Addr(11) -NET "Left_Mem_Addr(12)" LOC=AC16; # Pads.Left_Mem.Addr(12) -NET "Left_Mem_Addr(13)" LOC=AF18; # Pads.Left_Mem.Addr(13) -NET "Left_Mem_Addr(14)" LOC=AE18; # Pads.Left_Mem.Addr(14) -NET "Left_Mem_Addr(15)" LOC=AD17; # Pads.Left_Mem.Addr(15) -NET "Left_Mem_Addr(16)" LOC=AC17; # Pads.Left_Mem.Addr(16) -NET "Left_Mem_Addr(17)" LOC=AD18; # Pads.Left_Mem.Addr(17) -NET "Left_Mem_Addr(18)" LOC=AC18; # Pads.Left_Mem.Addr(18) -NET "Left_Mem_Data(0)" LOC=AD25; # Pads.Left_Mem.Data(0) -NET "Left_Mem_Data(1)" LOC=AB24; # Pads.Left_Mem.Data(1) -NET "Left_Mem_Data(2)" LOC=AA23; # Pads.Left_Mem.Data(2) -NET "Left_Mem_Data(3)" LOC=AC25; # Pads.Left_Mem.Data(3) -NET "Left_Mem_Data(4)" LOC=AD26; # Pads.Left_Mem.Data(4) -NET "Left_Mem_Data(5)" LOC=AC26; # Pads.Left_Mem.Data(5) -NET "Left_Mem_Data(6)" LOC=Y23; # Pads.Left_Mem.Data(6) -NET "Left_Mem_Data(7)" LOC=AA24; # Pads.Left_Mem.Data(7) -NET "Left_Mem_Data(8)" LOC=AB25; # Pads.Left_Mem.Data(8) -NET "Left_Mem_Data(9)" LOC=AA25; # Pads.Left_Mem.Data(9) -NET "Left_Mem_Data(10)" LOC=Y24; # Pads.Left_Mem.Data(10) -NET "Left_Mem_Data(11)" LOC=Y25; # Pads.Left_Mem.Data(11) -NET "Left_Mem_Data(12)" LOC=AA26; # Pads.Left_Mem.Data(12) -NET "Left_Mem_Data(13)" LOC=V23; # Pads.Left_Mem.Data(13) -NET "Left_Mem_Data(14)" LOC=W24; # Pads.Left_Mem.Data(14) -NET "Left_Mem_Data(15)" LOC=W25; # Pads.Left_Mem.Data(15) -NET "Left_Mem_Data(16)" LOC=Y26; # Pads.Left_Mem.Data(16) -NET "Left_Mem_Data(17)" LOC=U23; # Pads.Left_Mem.Data(17) -NET "Left_Mem_Data(18)" LOC=V25; # Pads.Left_Mem.Data(18) -NET "Left_Mem_Data(19)" LOC=U24; # Pads.Left_Mem.Data(19) -NET "Left_Mem_Data(20)" LOC=V26; # Pads.Left_Mem.Data(20) -NET "Left_Mem_Data(21)" LOC=T23; # Pads.Left_Mem.Data(21) -NET "Left_Mem_Data(22)" LOC=U25; # Pads.Left_Mem.Data(22) -NET "Left_Mem_Data(23)" LOC=T24; # Pads.Left_Mem.Data(23) -NET "Left_Mem_Data(24)" LOC=T25; # Pads.Left_Mem.Data(24) -NET "Left_Mem_Data(25)" LOC=T26; # Pads.Left_Mem.Data(25) -NET "Left_Mem_Data(26)" LOC=R24; # Pads.Left_Mem.Data(26) -NET "Left_Mem_Data(27)" LOC=R25; # Pads.Left_Mem.Data(27) -NET "Left_Mem_Data(28)" LOC=R26; # Pads.Left_Mem.Data(28) -NET "Left_Mem_Data(29)" LOC=P24; # Pads.Left_Mem.Data(29) -NET "Left_Mem_Data(30)" LOC=P23; # Pads.Left_Mem.Data(30) -NET "Left_Mem_Data(31)" LOC=N26; # Pads.Left_Mem.Data(31) -NET "Left_Mem_Data(32)" LOC=AD12; # Pads.Left_Mem.Data(32) -NET "Left_Mem_Data(33)" LOC=AC12; # Pads.Left_Mem.Data(33) -NET "Left_Mem_Data(34)" LOC=AE11; # Pads.Left_Mem.Data(34) -NET "Left_Mem_Data(35)" LOC=AD11; # Pads.Left_Mem.Data(35) -NET "Left_Mem_Byte_WR_n(0)" LOC=AC19; # Pads.Left_Mem.Byte_WR_n(0) -NET "Left_Mem_Byte_WR_n(1)" LOC=AD19; # Pads.Left_Mem.Byte_WR_n(1) -NET "Left_Mem_Byte_WR_n(2)" LOC=AE20; # Pads.Left_Mem.Byte_WR_n(2) -NET "Left_Mem_Byte_WR_n(3)" LOC=AF20; # Pads.Left_Mem.Byte_WR_n(3) -NET "Left_Mem_CS_n" LOC=AD20; # Pads.Left_Mem.CS_n -NET "Left_Mem_CE_n" LOC=AE21; # Pads.Left_Mem.CE_n -NET "Left_Mem_WE_n" LOC=AF23; # Pads.Left_Mem.WE_n -NET "Left_Mem_OE_n" LOC=AD21; # Pads.Left_Mem.OE_n -NET "Left_Mem_Sleep_EN" LOC=B10; # Pads.Left_Mem.Sleep_EN -NET "Left_Mem_Load_EN_n" LOC=AF21; # Pads.Left_Mem.Load_EN_n -NET "Left_Mem_Burst_Mode" LOC=AE22; # Pads.Left_Mem.Burst_Mode - -NET "Right_Mem_Addr(0)" LOC=A12; # Pads.Right_Mem.Addr(0) -NET "Right_Mem_Addr(1)" LOC=C13; # Pads.Right_Mem.Addr(1) -NET "Right_Mem_Addr(2)" LOC=B13; # Pads.Right_Mem.Addr(2) -NET "Right_Mem_Addr(3)" LOC=A13; # Pads.Right_Mem.Addr(3) -NET "Right_Mem_Addr(4)" LOC=A15; # Pads.Right_Mem.Addr(4) -NET "Right_Mem_Addr(5)" LOC=B15; # Pads.Right_Mem.Addr(5) -NET "Right_Mem_Addr(6)" LOC=C15; # Pads.Right_Mem.Addr(6) -NET "Right_Mem_Addr(7)" LOC=D15; # Pads.Right_Mem.Addr(7) -NET "Right_Mem_Addr(8)" LOC=A16; # Pads.Right_Mem.Addr(8) -NET "Right_Mem_Addr(9)" LOC=C16; # Pads.Right_Mem.Addr(9) -NET "Right_Mem_Addr(10)" LOC=B17; # Pads.Right_Mem.Addr(10) -NET "Right_Mem_Addr(11)" LOC=D16; # Pads.Right_Mem.Addr(11) -NET "Right_Mem_Addr(12)" LOC=A18; # Pads.Right_Mem.Addr(12) -NET "Right_Mem_Addr(13)" LOC=C17; # Pads.Right_Mem.Addr(13) -NET "Right_Mem_Addr(14)" LOC=B18; # Pads.Right_Mem.Addr(14) -NET "Right_Mem_Addr(15)" LOC=C18; # Pads.Right_Mem.Addr(15) -NET "Right_Mem_Addr(16)" LOC=D17; # Pads.Right_Mem.Addr(16) -NET "Right_Mem_Addr(17)" LOC=B19; # Pads.Right_Mem.Addr(17) -NET "Right_Mem_Addr(18)" LOC=C19; # Pads.Right_Mem.Addr(18) -NET "Right_Mem_Data(0)" LOC=N2; # Pads.Right_Mem.Data(0) -NET "Right_Mem_Data(1)" LOC=N4; # Pads.Right_Mem.Data(1) -NET "Right_Mem_Data(2)" LOC=N3; # Pads.Right_Mem.Data(2) -NET "Right_Mem_Data(3)" LOC=M1; # Pads.Right_Mem.Data(3) -NET "Right_Mem_Data(4)" LOC=M2; # Pads.Right_Mem.Data(4) -NET "Right_Mem_Data(5)" LOC=M3; # Pads.Right_Mem.Data(5) -NET "Right_Mem_Data(6)" LOC=M4; # Pads.Right_Mem.Data(6) -NET "Right_Mem_Data(7)" LOC=L2; # Pads.Right_Mem.Data(7) -NET "Right_Mem_Data(8)" LOC=L3; # Pads.Right_Mem.Data(8) -NET "Right_Mem_Data(9)" LOC=K2; # Pads.Right_Mem.Data(9) -NET "Right_Mem_Data(10)" LOC=L4; # Pads.Right_Mem.Data(10) -NET "Right_Mem_Data(11)" LOC=J1; # Pads.Right_Mem.Data(11) -NET "Right_Mem_Data(12)" LOC=K3; # Pads.Right_Mem.Data(12) -NET "Right_Mem_Data(13)" LOC=J2; # Pads.Right_Mem.Data(13) -NET "Right_Mem_Data(14)" LOC=J3; # Pads.Right_Mem.Data(14) -NET "Right_Mem_Data(15)" LOC=G1; # Pads.Right_Mem.Data(15) -NET "Right_Mem_Data(16)" LOC=H2; # Pads.Right_Mem.Data(16) -NET "Right_Mem_Data(17)" LOC=H3; # Pads.Right_Mem.Data(17) -NET "Right_Mem_Data(18)" LOC=J4; # Pads.Right_Mem.Data(18) -NET "Right_Mem_Data(19)" LOC=F1; # Pads.Right_Mem.Data(19) -NET "Right_Mem_Data(20)" LOC=G2; # Pads.Right_Mem.Data(20) -NET "Right_Mem_Data(21)" LOC=G3; # Pads.Right_Mem.Data(21) -NET "Right_Mem_Data(22)" LOC=F2; # Pads.Right_Mem.Data(22) -NET "Right_Mem_Data(23)" LOC=E2; # Pads.Right_Mem.Data(23) -NET "Right_Mem_Data(24)" LOC=F3; # Pads.Right_Mem.Data(24) -NET "Right_Mem_Data(25)" LOC=G4; # Pads.Right_Mem.Data(25) -NET "Right_Mem_Data(26)" LOC=D1; # Pads.Right_Mem.Data(26) -NET "Right_Mem_Data(27)" LOC=C1; # Pads.Right_Mem.Data(27) -NET "Right_Mem_Data(28)" LOC=D2; # Pads.Right_Mem.Data(28) -NET "Right_Mem_Data(29)" LOC=F4; # Pads.Right_Mem.Data(29) -NET "Right_Mem_Data(30)" LOC=E3; # Pads.Right_Mem.Data(30) -NET "Right_Mem_Data(31)" LOC=C2; # Pads.Right_Mem.Data(31) -NET "Right_Mem_Data(32)" LOC=B12; # Pads.Right_Mem.Data(32) -NET "Right_Mem_Data(33)" LOC=C12; # Pads.Right_Mem.Data(33) -NET "Right_Mem_Data(34)" LOC=A11; # Pads.Right_Mem.Data(34) -NET "Right_Mem_Data(35)" LOC=B11; # Pads.Right_Mem.Data(35) -NET "Right_Mem_Byte_WR_n(0)" LOC=C20; # Pads.Right_Mem.Byte_WR_n(0) -NET "Right_Mem_Byte_WR_n(1)" LOC=B20; # Pads.Right_Mem.Byte_WR_n(1) -NET "Right_Mem_Byte_WR_n(2)" LOC=A21; # Pads.Right_Mem.Byte_WR_n(2) -NET "Right_Mem_Byte_WR_n(3)" LOC=D18; # Pads.Right_Mem.Byte_WR_n(3) -NET "Right_Mem_CS_n" LOC=C21; # Pads.Right_Mem.CS_n -NET "Right_Mem_CE_n" LOC=B22; # Pads.Right_Mem.CE_n -NET "Right_Mem_WE_n" LOC=D20; # Pads.Right_Mem.WE_n -NET "Right_Mem_OE_n" LOC=A24; # Pads.Right_Mem.OE_n -NET "Right_Mem_Sleep_EN" LOC=C11; # Pads.Right_Mem.Sleep_EN -NET "Right_Mem_Load_EN_n" LOC=B21; # Pads.Right_Mem.Load_EN_n -NET "Right_Mem_Burst_Mode" LOC=A23; # Pads.Right_Mem.Burst_Mode' - -NET "Left_IO(0)" LOC=AC3; # Pads.Left_IO(0) -NET "Left_IO(1)" LOC=AB4; # Pads.Left_IO(1) -NET "Left_IO(2)" LOC=AD1; # Pads.Left_IO(2) -NET "Left_IO(3)" LOC=AB3; # Pads.Left_IO(3) -NET "Left_IO(4)" LOC=AC2; # Pads.Left_IO(4) -NET "Left_IO(5)" LOC=AA4; # Pads.Left_IO(5) -NET "Left_IO(6)" LOC=AA3; # Pads.Left_IO(6) -NET "Left_IO(7)" LOC=AB2; # Pads.Left_IO(7) -NET "Left_IO(8)" LOC=AC1; # Pads.Left_IO(8) -NET "Left_IO(9)" LOC=Y3; # Pads.Left_IO(9) -NET "Left_IO(10)" LOC=AA2; # Pads.Left_IO(10) -NET "Left_IO(11)" LOC=AA1; # Pads.Left_IO(11) -NET "Left_IO(12)" LOC=W4; # Pads.Left_IO(12) - -NET "Right_IO(0)" LOC=W3; # Pads.Right_IO(0) -NET "Right_IO(1)" LOC=Y2; # Pads.Right_IO(1) -NET "Right_IO(2)" LOC=Y1; # Pads.Right_IO(2) -NET "Right_IO(3)" LOC=V4; # Pads.Right_IO(3) -NET "Right_IO(4)" LOC=V3; # Pads.Right_IO(4) -NET "Right_IO(5)" LOC=U4; # Pads.Right_IO(5) -NET "Right_IO(6)" LOC=U3; # Pads.Right_IO(6) -NET "Right_IO(7)" LOC=V2; # Pads.Right_IO(7) -NET "Right_IO(8)" LOC=V1; # Pads.Right_IO(8) -NET "Right_IO(9)" LOC=T4; # Pads.Right_IO(9) -NET "Right_IO(10)" LOC=T3; # Pads.Right_IO(10) -NET "Right_IO(11)" LOC=U2; # Pads.Right_IO(11) -NET "Right_IO(12)" LOC=C4; # Pads.Right_IO(12) - diff --git a/boards/wildcard-xcv300e/default.ut b/boards/wildcard-xcv300e/default.ut deleted file mode 100644 index ae1dcef7..00000000 --- a/boards/wildcard-xcv300e/default.ut +++ /dev/null @@ -1,5 +0,0 @@ --g DonePipe:Yes --g GSR_Cycle:Done --g GTS_Cycle:Done --g GWE_Cycle:Done --g DonePin:Pullup diff --git a/boards/wildcard-xcv300e/wildcard.mkf b/boards/wildcard-xcv300e/wildcard.mkf deleted file mode 100644 index 347ed5dc..00000000 --- a/boards/wildcard-xcv300e/wildcard.mkf +++ /dev/null @@ -1,24 +0,0 @@ -vsim-wildcard: - vmap system ./modelsim/work - vmap pe_lib ./modelsim/work - $(VCOM) system -explicit $(WILDCARD_BASE)/src/system_pkg.vhd - $(VCOM) pe_lib -explicit $(WILDCARD_BASE)/src/wildcard/pe/pe_pkg.vhd - $(VCOM) pe_lib -explicit $(WILDCARD_BASE)/src/wildcard/pe/pe_ent.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/clk_gen/clkgen_pkg.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/clk_gen/clkgen_entarch.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/cb_ctrl/cb_ctrl_pkg.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/cb_ctrl/cb_ctrl_entarch.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/mem/mem_pkg.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/mem/mem_ent.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/mem/mem_empty_arch.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/mem/mem_static_arch.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/io_conn/io_if_ent.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/io_conn/io_if_inactive_arch.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/wildcard_pkg.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/wildcard/wildcard_entarch.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/host/host_pkg.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/host/host_ent.vhd - $(VCOM) system -explicit $(WILDCARD_BASE)/src/system_entarch.vhd - $(VCOM) pe_lib -explicit pe_arch.vhd - $(VCOM) system -explicit host_arch.vhd - $(VCOM) system -explicit system_cfg.vhd \ No newline at end of file diff --git a/boards/xilinx-kc705-xc7k325t/Makefile.inc b/boards/xilinx-kc705-xc7k325t/Makefile.inc new file mode 100644 index 00000000..39b5bd4d --- /dev/null +++ b/boards/xilinx-kc705-xc7k325t/Makefile.inc @@ -0,0 +1,29 @@ +# FPGA and Dev Board used in Design +TECHNOLOGY=Kintex7 +PART=XC7K325T +PACKAGE=ffg900 +PROTOBOARD=kc705 +SPEED=2 +PROMGENPAR=-x xcf08p -u 0 $(TOP).bit -p mcs -w -o $(BOARD) + +# Set Vivado Synthesis Flow and Strategy used for build +# Choose 'XST 14' or 'Vivado Synthesis 2012' +VIVADO_SYNTH_FLOW="Vivado Synthesis 2012" + +# For 'Vivado Synthesis 2012' +# 1. 'Vivado Synthesis Defaults' +# For 'XST 14' +# 1. 'TimingWithIOBPacking' +# 2. 'TimingWithoutIOBPacking' +# 3. 'AreaReduction' +# 4. 'PowerOptimization' +# 5. 'XST Defaults' +VIVADO_SYNTH_STRATEGY="Vivado Synthesis Defaults" + +# Set Vivado Implementation strategy +# 1. HighEffort +# 2. HighEffortPhySynth +# 3. 'Vivado Implemnation Defaults' +# 4. LowEffort +# 5. QuickEffort +VIVADO_IMPL_STRATEGY="HighEffort" diff --git a/boards/xilinx-kc705-xc7k325t/fpga.cmd b/boards/xilinx-kc705-xc7k325t/fpga.cmd new file mode 100644 index 00000000..5d7b0aaf --- /dev/null +++ b/boards/xilinx-kc705-xc7k325t/fpga.cmd @@ -0,0 +1,25 @@ +setPreference -pref UserLevel:NOVICE +setPreference -pref MessageLevel:DETAILED +setPreference -pref ConcurrentMode:FALSE +setPreference -pref UseHighz:FALSE +setPreference -pref ConfigOnFailure:STOP +setPreference -pref StartupCLock:AUTO_CORRECTION +setPreference -pref AutoSignature:FALSE +setPreference -pref KeepSVF:FALSE +setPreference -pref svfUseTime:FALSE +setPreference -pref UserLevel:NOVICE +setPreference -pref MessageLevel:DETAILED +setPreference -pref ConcurrentMode:FALSE +setPreference -pref UseHighz:FALSE +setPreference -pref ConfigOnFailure:STOP +setPreference -pref StartupCLock:AUTO_CORRECTION +setPreference -pref AutoSignature:FALSE +setPreference -pref KeepSVF:FALSE +setPreference -pref svfUseTime:FALSE +setMode -bs +setCable -port auto +Identify +setAttribute -position 1 -attr configFileName -value "xilinx-kc705-xc7k325t.bit" +Program -p 1 -v +setMode -bs +quit diff --git a/boards/xilinx-kc705-xc7k325t/mig.cgp b/boards/xilinx-kc705-xc7k325t/mig.cgp new file mode 100644 index 00000000..b6d62533 --- /dev/null +++ b/boards/xilinx-kc705-xc7k325t/mig.cgp @@ -0,0 +1,22 @@ +# Date: Thu Nov 8 11:33:03 2012 + +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = Verilog +SET device = xc7k325t +SET devicefamily = kintex7 +SET flowvendor = Foundation_ISE +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ffg900 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -2 +SET verilogsim = true +SET vhdlsim = false +SET workingdirectory = ./tmp/ + +# CRC: 5b115b87 diff --git a/boards/xilinx-kc705-xc7k325t/mig.prj b/boards/xilinx-kc705-xc7k325t/mig.prj new file mode 100644 index 00000000..6af0af2a --- /dev/null +++ b/boards/xilinx-kc705-xc7k325t/mig.prj @@ -0,0 +1,187 @@ + + + + mig + 1 + 1 + OFF + 1024 + OFF + xc7k325t-ffg900/-2 + 1.6 + Differential + Use System Clock + FALSE + 0 + 50 Ohms + 1 + + DDR3_SDRAM/SODIMMs/MT8JTF12864HZ-1G6 + 2500 + 1.8V + 4:1 + 200 + 64 + 1 + 1 + Disabled + Strict + FALSE + + 14 + 10 + 3 + BANK_ROW_COLUMN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8 - Fixed + Sequential + 6 + Normal + No + Slow Exit + Enable + RZQ/7 + Disable + Enable + RZQ/4 + 0 + Disabled + Enabled + Output Buffer Enabled + Full Array + 5 + Enabled + Normal + Dynamic ODT off + NATIVE + + + diff --git a/boards/xilinx-kc705-xc7k325t/mig.xco b/boards/xilinx-kc705-xc7k325t/mig.xco new file mode 100644 index 00000000..24e07070 --- /dev/null +++ b/boards/xilinx-kc705-xc7k325t/mig.xco @@ -0,0 +1,49 @@ +############################################################## +# +# Xilinx Core Generator version 14.2 +# Date: Fri Nov 9 10:06:37 2012 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:mig_7series:1.6 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = Verilog +SET device = xc7k325t +SET devicefamily = kintex7 +SET flowvendor = Foundation_ISE +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ffg900 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -2 +SET verilogsim = true +SET vhdlsim = false +# END Project Options +# BEGIN Select +SELECT MIG_7_Series family Xilinx,_Inc. 1.6 +# END Select +# BEGIN Parameters +CSET component_name=mig +CSET xml_input_file=./mig/mig.prj +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-07-21T06:31:03Z +# END Extra information +GENERATE +# CRC: 8e5c0163 diff --git a/boards/xilinx-kc705-xc7k325t/readme.txt b/boards/xilinx-kc705-xc7k325t/readme.txt new file mode 100644 index 00000000..e8fe95c9 --- /dev/null +++ b/boards/xilinx-kc705-xc7k325t/readme.txt @@ -0,0 +1,3 @@ +This directory contains fpga pinout and xilinx coregen ip setup files used by the reference designs. + +For more information please visit www.xilinx.com/kc705 \ No newline at end of file diff --git a/boards/xilinx-kc705-xc7k325t/xilinx-kc705-xc7k325t.xdc b/boards/xilinx-kc705-xc7k325t/xilinx-kc705-xc7k325t.xdc new file mode 100644 index 00000000..42292b23 --- /dev/null +++ b/boards/xilinx-kc705-xc7k325t/xilinx-kc705-xc7k325t.xdc @@ -0,0 +1,788 @@ +# Define and contraint system clock +create_clock -name clk200 -period 5 [get_ports clk200p] +set_propagated_clock clk200 + +set_property PACKAGE_PIN AD12 [get_ports {clk200p}] +set_property PACKAGE_PIN AD11 [get_ports {clk200n}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {clk200p}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {clk200n}] +set_property VCCAUX_IO DONTCARE [get_ports {clk200p}] +set_property VCCAUX_IO DONTCARE [get_ports {clk200n}] + +set_property PACKAGE_PIN AG5 [get_ports {reset }] + +set_property PACKAGE_PIN AB8 [get_ports {led[0] }] +set_property PACKAGE_PIN AA8 [get_ports {led[1] }] +set_property PACKAGE_PIN AC9 [get_ports {led[2] }] +set_property PACKAGE_PIN AB9 [get_ports {led[3] }] +set_property PACKAGE_PIN AE26 [get_ports {led[4] }] +set_property PACKAGE_PIN G19 [get_ports {led[5] }] +set_property PACKAGE_PIN E18 [get_ports {led[6] }] + +set_property PACKAGE_PIN P24 [get_ports {data[0] }] +set_property PACKAGE_PIN R25 [get_ports {data[1] }] +set_property PACKAGE_PIN R20 [get_ports {data[2] }] +set_property PACKAGE_PIN R21 [get_ports {data[3] }] +set_property PACKAGE_PIN T20 [get_ports {data[4] }] +set_property PACKAGE_PIN T21 [get_ports {data[5] }] +set_property PACKAGE_PIN T22 [get_ports {data[6] }] +set_property PACKAGE_PIN T23 [get_ports {data[7] }] +set_property PACKAGE_PIN U20 [get_ports {data[8] }] +set_property PACKAGE_PIN P29 [get_ports {data[9] }] +set_property PACKAGE_PIN R29 [get_ports {data[10] }] +set_property PACKAGE_PIN P27 [get_ports {data[11] }] +set_property PACKAGE_PIN P28 [get_ports {data[12] }] +set_property PACKAGE_PIN T30 [get_ports {data[13] }] +set_property PACKAGE_PIN P26 [get_ports {data[14] }] +set_property PACKAGE_PIN R26 [get_ports {data[15] }] + +set_property PACKAGE_PIN M22 [get_ports {address[25] }] +set_property PACKAGE_PIN M23 [get_ports {address[24] }] +set_property PACKAGE_PIN N26 [get_ports {address[23] }] +set_property PACKAGE_PIN N19 [get_ports {address[22] }] +set_property PACKAGE_PIN N20 [get_ports {address[21] }] +set_property PACKAGE_PIN N21 [get_ports {address[20] }] +set_property PACKAGE_PIN N22 [get_ports {address[19] }] +set_property PACKAGE_PIN N24 [get_ports {address[18] }] +set_property PACKAGE_PIN P21 [get_ports {address[17] }] +set_property PACKAGE_PIN P22 [get_ports {address[16] }] +set_property PACKAGE_PIN V27 [get_ports {address[15] }] +set_property PACKAGE_PIN V29 [get_ports {address[14] }] +set_property PACKAGE_PIN V30 [get_ports {address[13] }] +set_property PACKAGE_PIN V25 [get_ports {address[12] }] +set_property PACKAGE_PIN W26 [get_ports {address[11] }] +set_property PACKAGE_PIN V19 [get_ports {address[10] }] +set_property PACKAGE_PIN V20 [get_ports {address[9] }] +set_property PACKAGE_PIN W23 [get_ports {address[8] }] +set_property PACKAGE_PIN W24 [get_ports {address[7] }] +set_property PACKAGE_PIN U23 [get_ports {address[6] }] +set_property PACKAGE_PIN V21 [get_ports {address[5] }] +set_property PACKAGE_PIN V22 [get_ports {address[4] }] +set_property PACKAGE_PIN U24 [get_ports {address[3] }] +set_property PACKAGE_PIN V24 [get_ports {address[2] }] +set_property PACKAGE_PIN W21 [get_ports {address[1] }] +set_property PACKAGE_PIN W22 [get_ports {address[0] }] + +set_property PACKAGE_PIN M30 [get_ports {adv }] +set_property PACKAGE_PIN U19 [get_ports {romsn }] +set_property PACKAGE_PIN M24 [get_ports {oen }] +set_property PACKAGE_PIN M25 [get_ports {writen }] + +set_property PACKAGE_PIN K24 [get_ports {dsurx }] +set_property PACKAGE_PIN K23 [get_ports {dsurtsn }] +set_property PACKAGE_PIN M19 [get_ports {dsutx }] +set_property PACKAGE_PIN L27 [get_ports {dsuctsn }] + +set_property PACKAGE_PIN G12 [get_ports {button[0] }] +set_property PACKAGE_PIN AA12 [get_ports {button[1] }] +set_property PACKAGE_PIN AB12 [get_ports {button[2] }] + +set_property PACKAGE_PIN Y28 [get_ports {switch[0] }] +set_property PACKAGE_PIN AA28 [get_ports {switch[1] }] +set_property PACKAGE_PIN W29 [get_ports {switch[2] }] +set_property PACKAGE_PIN Y29 [get_ports {switch[3] }] + +set_property PACKAGE_PIN L21 [get_ports {iic_scl }] +set_property PACKAGE_PIN K21 [get_ports {iic_sda }] + +set_property IOSTANDARD LVCMOS25 [get_ports {dsurx }] +set_property IOSTANDARD LVCMOS25 [get_ports {dsurtsn }] +set_property IOSTANDARD LVCMOS25 [get_ports {dsutx }] +set_property IOSTANDARD LVCMOS25 [get_ports {dsuctsn }] + + +# Bank: 32 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[0]}] +set_property SLEW FAST [get_ports {ddr3_dq[0]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[0]}] +set_property LOC AA15 [get_ports {ddr3_dq[0]}] + +# Bank: 32 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[1]}] +set_property SLEW FAST [get_ports {ddr3_dq[1]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[1]}] +set_property LOC AA16 [get_ports {ddr3_dq[1]}] + +# Bank: 32 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[2]}] +set_property SLEW FAST [get_ports {ddr3_dq[2]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[2]}] +set_property LOC AC14 [get_ports {ddr3_dq[2]}] + +# Bank: 32 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[3]}] +set_property SLEW FAST [get_ports {ddr3_dq[3]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[3]}] +set_property LOC AD14 [get_ports {ddr3_dq[3]}] + +# Bank: 32 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[4]}] +set_property SLEW FAST [get_ports {ddr3_dq[4]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[4]}] +set_property LOC AA17 [get_ports {ddr3_dq[4]}] + +# Bank: 32 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[5]}] +set_property SLEW FAST [get_ports {ddr3_dq[5]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[5]}] +set_property LOC AB15 [get_ports {ddr3_dq[5]}] + +# Bank: 32 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[6]}] +set_property SLEW FAST [get_ports {ddr3_dq[6]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[6]}] +set_property LOC AE15 [get_ports {ddr3_dq[6]}] + +# Bank: 32 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[7]}] +set_property SLEW FAST [get_ports {ddr3_dq[7]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[7]}] +set_property LOC Y15 [get_ports {ddr3_dq[7]}] + +# Bank: 32 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[8]}] +set_property SLEW FAST [get_ports {ddr3_dq[8]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[8]}] +set_property LOC AB19 [get_ports {ddr3_dq[8]}] + +# Bank: 32 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[9]}] +set_property SLEW FAST [get_ports {ddr3_dq[9]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[9]}] +set_property LOC AD16 [get_ports {ddr3_dq[9]}] + +# Bank: 32 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[10]}] +set_property SLEW FAST [get_ports {ddr3_dq[10]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[10]}] +set_property LOC AC19 [get_ports {ddr3_dq[10]}] + +# Bank: 32 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[11]}] +set_property SLEW FAST [get_ports {ddr3_dq[11]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[11]}] +set_property LOC AD17 [get_ports {ddr3_dq[11]}] + +# Bank: 32 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[12]}] +set_property SLEW FAST [get_ports {ddr3_dq[12]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[12]}] +set_property LOC AA18 [get_ports {ddr3_dq[12]}] + +# Bank: 32 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[13]}] +set_property SLEW FAST [get_ports {ddr3_dq[13]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[13]}] +set_property LOC AB18 [get_ports {ddr3_dq[13]}] + +# Bank: 32 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[14]}] +set_property SLEW FAST [get_ports {ddr3_dq[14]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[14]}] +set_property LOC AE18 [get_ports {ddr3_dq[14]}] + +# Bank: 32 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[15]}] +set_property SLEW FAST [get_ports {ddr3_dq[15]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[15]}] +set_property LOC AD18 [get_ports {ddr3_dq[15]}] + +# Bank: 32 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[16]}] +set_property SLEW FAST [get_ports {ddr3_dq[16]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[16]}] +set_property LOC AG19 [get_ports {ddr3_dq[16]}] + +# Bank: 32 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[17]}] +set_property SLEW FAST [get_ports {ddr3_dq[17]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[17]}] +set_property LOC AK19 [get_ports {ddr3_dq[17]}] + +# Bank: 32 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[18]}] +set_property SLEW FAST [get_ports {ddr3_dq[18]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[18]}] +set_property LOC AG18 [get_ports {ddr3_dq[18]}] + +# Bank: 32 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[19]}] +set_property SLEW FAST [get_ports {ddr3_dq[19]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[19]}] +set_property LOC AF18 [get_ports {ddr3_dq[19]}] + +# Bank: 32 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[20]}] +set_property SLEW FAST [get_ports {ddr3_dq[20]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[20]}] +set_property LOC AH19 [get_ports {ddr3_dq[20]}] + +# Bank: 32 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[21]}] +set_property SLEW FAST [get_ports {ddr3_dq[21]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[21]}] +set_property LOC AJ19 [get_ports {ddr3_dq[21]}] + +# Bank: 32 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[22]}] +set_property SLEW FAST [get_ports {ddr3_dq[22]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[22]}] +set_property LOC AE19 [get_ports {ddr3_dq[22]}] + +# Bank: 32 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[23]}] +set_property SLEW FAST [get_ports {ddr3_dq[23]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[23]}] +set_property LOC AD19 [get_ports {ddr3_dq[23]}] + +# Bank: 32 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[24]}] +set_property SLEW FAST [get_ports {ddr3_dq[24]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[24]}] +set_property LOC AK16 [get_ports {ddr3_dq[24]}] + +# Bank: 32 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[25]}] +set_property SLEW FAST [get_ports {ddr3_dq[25]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[25]}] +set_property LOC AJ17 [get_ports {ddr3_dq[25]}] + +# Bank: 32 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[26]}] +set_property SLEW FAST [get_ports {ddr3_dq[26]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[26]}] +set_property LOC AG15 [get_ports {ddr3_dq[26]}] + +# Bank: 32 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[27]}] +set_property SLEW FAST [get_ports {ddr3_dq[27]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[27]}] +set_property LOC AF15 [get_ports {ddr3_dq[27]}] + +# Bank: 32 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[28]}] +set_property SLEW FAST [get_ports {ddr3_dq[28]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[28]}] +set_property LOC AH17 [get_ports {ddr3_dq[28]}] + +# Bank: 32 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[29]}] +set_property SLEW FAST [get_ports {ddr3_dq[29]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[29]}] +set_property LOC AG14 [get_ports {ddr3_dq[29]}] + +# Bank: 32 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[30]}] +set_property SLEW FAST [get_ports {ddr3_dq[30]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[30]}] +set_property LOC AH15 [get_ports {ddr3_dq[30]}] + +# Bank: 32 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[31]}] +set_property SLEW FAST [get_ports {ddr3_dq[31]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[31]}] +set_property LOC AK15 [get_ports {ddr3_dq[31]}] + +# Bank: 34 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[32]}] +set_property SLEW FAST [get_ports {ddr3_dq[32]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[32]}] +set_property LOC AK8 [get_ports {ddr3_dq[32]}] + +# Bank: 34 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[33]}] +set_property SLEW FAST [get_ports {ddr3_dq[33]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[33]}] +set_property LOC AK6 [get_ports {ddr3_dq[33]}] + +# Bank: 34 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[34]}] +set_property SLEW FAST [get_ports {ddr3_dq[34]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[34]}] +set_property LOC AG7 [get_ports {ddr3_dq[34]}] + +# Bank: 34 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[35]}] +set_property SLEW FAST [get_ports {ddr3_dq[35]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[35]}] +set_property LOC AF7 [get_ports {ddr3_dq[35]}] + +# Bank: 34 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[36]}] +set_property SLEW FAST [get_ports {ddr3_dq[36]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[36]}] +set_property LOC AF8 [get_ports {ddr3_dq[36]}] + +# Bank: 34 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[37]}] +set_property SLEW FAST [get_ports {ddr3_dq[37]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[37]}] +set_property LOC AK4 [get_ports {ddr3_dq[37]}] + +# Bank: 34 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[38]}] +set_property SLEW FAST [get_ports {ddr3_dq[38]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[38]}] +set_property LOC AJ8 [get_ports {ddr3_dq[38]}] + +# Bank: 34 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[39]}] +set_property SLEW FAST [get_ports {ddr3_dq[39]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[39]}] +set_property LOC AJ6 [get_ports {ddr3_dq[39]}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[40]}] +set_property SLEW FAST [get_ports {ddr3_dq[40]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[40]}] +set_property LOC AH5 [get_ports {ddr3_dq[40]}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[41]}] +set_property SLEW FAST [get_ports {ddr3_dq[41]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[41]}] +set_property LOC AH6 [get_ports {ddr3_dq[41]}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[42]}] +set_property SLEW FAST [get_ports {ddr3_dq[42]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[42]}] +set_property LOC AJ2 [get_ports {ddr3_dq[42]}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[43]}] +set_property SLEW FAST [get_ports {ddr3_dq[43]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[43]}] +set_property LOC AH2 [get_ports {ddr3_dq[43]}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[44]}] +set_property SLEW FAST [get_ports {ddr3_dq[44]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[44]}] +set_property LOC AH4 [get_ports {ddr3_dq[44]}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[45]}] +set_property SLEW FAST [get_ports {ddr3_dq[45]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[45]}] +set_property LOC AJ4 [get_ports {ddr3_dq[45]}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[46]}] +set_property SLEW FAST [get_ports {ddr3_dq[46]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[46]}] +set_property LOC AK1 [get_ports {ddr3_dq[46]}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[47]}] +set_property SLEW FAST [get_ports {ddr3_dq[47]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[47]}] +set_property LOC AJ1 [get_ports {ddr3_dq[47]}] + +# Bank: 34 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[48]}] +set_property SLEW FAST [get_ports {ddr3_dq[48]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[48]}] +set_property LOC AF1 [get_ports {ddr3_dq[48]}] + +# Bank: 34 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[49]}] +set_property SLEW FAST [get_ports {ddr3_dq[49]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[49]}] +set_property LOC AF2 [get_ports {ddr3_dq[49]}] + +# Bank: 34 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[50]}] +set_property SLEW FAST [get_ports {ddr3_dq[50]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[50]}] +set_property LOC AE4 [get_ports {ddr3_dq[50]}] + +# Bank: 34 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[51]}] +set_property SLEW FAST [get_ports {ddr3_dq[51]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[51]}] +set_property LOC AE3 [get_ports {ddr3_dq[51]}] + +# Bank: 34 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[52]}] +set_property SLEW FAST [get_ports {ddr3_dq[52]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[52]}] +set_property LOC AF3 [get_ports {ddr3_dq[52]}] + +# Bank: 34 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[53]}] +set_property SLEW FAST [get_ports {ddr3_dq[53]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[53]}] +set_property LOC AF5 [get_ports {ddr3_dq[53]}] + +# Bank: 34 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[54]}] +set_property SLEW FAST [get_ports {ddr3_dq[54]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[54]}] +set_property LOC AE1 [get_ports {ddr3_dq[54]}] + +# Bank: 34 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[55]}] +set_property SLEW FAST [get_ports {ddr3_dq[55]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[55]}] +set_property LOC AE5 [get_ports {ddr3_dq[55]}] + +# Bank: 34 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[56]}] +set_property SLEW FAST [get_ports {ddr3_dq[56]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[56]}] +set_property LOC AC1 [get_ports {ddr3_dq[56]}] + +# Bank: 34 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[57]}] +set_property SLEW FAST [get_ports {ddr3_dq[57]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[57]}] +set_property LOC AD3 [get_ports {ddr3_dq[57]}] + +# Bank: 34 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[58]}] +set_property SLEW FAST [get_ports {ddr3_dq[58]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[58]}] +set_property LOC AC4 [get_ports {ddr3_dq[58]}] + +# Bank: 34 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[59]}] +set_property SLEW FAST [get_ports {ddr3_dq[59]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[59]}] +set_property LOC AC5 [get_ports {ddr3_dq[59]}] + +# Bank: 34 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[60]}] +set_property SLEW FAST [get_ports {ddr3_dq[60]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[60]}] +set_property LOC AE6 [get_ports {ddr3_dq[60]}] + +# Bank: 34 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[61]}] +set_property SLEW FAST [get_ports {ddr3_dq[61]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[61]}] +set_property LOC AD6 [get_ports {ddr3_dq[61]}] + +# Bank: 34 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[62]}] +set_property SLEW FAST [get_ports {ddr3_dq[62]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[62]}] +set_property LOC AC2 [get_ports {ddr3_dq[62]}] + +# Bank: 34 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[63]}] +set_property SLEW FAST [get_ports {ddr3_dq[63]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[63]}] +set_property LOC AD4 [get_ports {ddr3_dq[63]}] + +# Bank: 33 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[13]}] +set_property SLEW FAST [get_ports {ddr3_addr[13]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[13]}] +set_property LOC AH11 [get_ports {ddr3_addr[13]}] + +# Bank: 33 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[12]}] +set_property SLEW FAST [get_ports {ddr3_addr[12]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[12]}] +set_property LOC AJ11 [get_ports {ddr3_addr[12]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[11]}] +set_property SLEW FAST [get_ports {ddr3_addr[11]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[11]}] +set_property LOC AE13 [get_ports {ddr3_addr[11]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[10]}] +set_property SLEW FAST [get_ports {ddr3_addr[10]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[10]}] +set_property LOC AF13 [get_ports {ddr3_addr[10]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[9]}] +set_property SLEW FAST [get_ports {ddr3_addr[9]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[9]}] +set_property LOC AK14 [get_ports {ddr3_addr[9]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[8]}] +set_property SLEW FAST [get_ports {ddr3_addr[8]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[8]}] +set_property LOC AK13 [get_ports {ddr3_addr[8]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[7]}] +set_property SLEW FAST [get_ports {ddr3_addr[7]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[7]}] +set_property LOC AH14 [get_ports {ddr3_addr[7]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[6]}] +set_property SLEW FAST [get_ports {ddr3_addr[6]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[6]}] +set_property LOC AJ14 [get_ports {ddr3_addr[6]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[5]}] +set_property SLEW FAST [get_ports {ddr3_addr[5]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[5]}] +set_property LOC AJ13 [get_ports {ddr3_addr[5]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[4]}] +set_property SLEW FAST [get_ports {ddr3_addr[4]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[4]}] +set_property LOC AJ12 [get_ports {ddr3_addr[4]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[3]}] +set_property SLEW FAST [get_ports {ddr3_addr[3]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[3]}] +set_property LOC AF12 [get_ports {ddr3_addr[3]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[2]}] +set_property SLEW FAST [get_ports {ddr3_addr[2]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[2]}] +set_property LOC AG12 [get_ports {ddr3_addr[2]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[1]}] +set_property SLEW FAST [get_ports {ddr3_addr[1]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[1]}] +set_property LOC AG13 [get_ports {ddr3_addr[1]}] + +# Bank: 33 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[0]}] +set_property SLEW FAST [get_ports {ddr3_addr[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[0]}] +set_property LOC AH12 [get_ports {ddr3_addr[0]}] + +# Bank: 33 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ba[2]}] +set_property SLEW FAST [get_ports {ddr3_ba[2]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[2]}] +set_property LOC AK9 [get_ports {ddr3_ba[2]}] + +# Bank: 33 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ba[1]}] +set_property SLEW FAST [get_ports {ddr3_ba[1]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[1]}] +set_property LOC AG9 [get_ports {ddr3_ba[1]}] + +# Bank: 33 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ba[0]}] +set_property SLEW FAST [get_ports {ddr3_ba[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[0]}] +set_property LOC AH9 [get_ports {ddr3_ba[0]}] + +# Bank: 33 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ras_n}] +set_property SLEW FAST [get_ports {ddr3_ras_n}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ras_n}] +set_property LOC AD9 [get_ports {ddr3_ras_n}] + +# Bank: 33 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_cas_n}] +set_property SLEW FAST [get_ports {ddr3_cas_n}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_cas_n}] +set_property LOC AC11 [get_ports {ddr3_cas_n}] + +# Bank: 33 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_we_n}] +set_property SLEW FAST [get_ports {ddr3_we_n}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_we_n}] +set_property LOC AE9 [get_ports {ddr3_we_n}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_reset_n}] +set_property SLEW FAST [get_ports {ddr3_reset_n}] +set_property IOSTANDARD LVCMOS15 [get_ports {ddr3_reset_n}] +set_property LOC AK3 [get_ports {ddr3_reset_n}] + +# Bank: 33 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_cke[0]}] +set_property SLEW FAST [get_ports {ddr3_cke[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_cke[0]}] +set_property LOC AF10 [get_ports {ddr3_cke[0]}] + +# Bank: 33 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_odt[0]}] +set_property SLEW FAST [get_ports {ddr3_odt[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_odt[0]}] +set_property LOC AD8 [get_ports {ddr3_odt[0]}] + +# Bank: 33 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_cs_n[0]}] +set_property SLEW FAST [get_ports {ddr3_cs_n[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_cs_n[0]}] +set_property LOC AC12 [get_ports {ddr3_cs_n[0]}] + +# Bank: 32 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[0]}] +set_property SLEW FAST [get_ports {ddr3_dm[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[0]}] +set_property LOC Y16 [get_ports {ddr3_dm[0]}] + +# Bank: 32 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[1]}] +set_property SLEW FAST [get_ports {ddr3_dm[1]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[1]}] +set_property LOC AB17 [get_ports {ddr3_dm[1]}] + +# Bank: 32 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[2]}] +set_property SLEW FAST [get_ports {ddr3_dm[2]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[2]}] +set_property LOC AF17 [get_ports {ddr3_dm[2]}] + +# Bank: 32 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[3]}] +set_property SLEW FAST [get_ports {ddr3_dm[3]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[3]}] +set_property LOC AE16 [get_ports {ddr3_dm[3]}] + +# Bank: 34 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[4]}] +set_property SLEW FAST [get_ports {ddr3_dm[4]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[4]}] +set_property LOC AK5 [get_ports {ddr3_dm[4]}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[5]}] +set_property SLEW FAST [get_ports {ddr3_dm[5]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[5]}] +set_property LOC AJ3 [get_ports {ddr3_dm[5]}] + +# Bank: 34 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[6]}] +set_property SLEW FAST [get_ports {ddr3_dm[6]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[6]}] +set_property LOC AF6 [get_ports {ddr3_dm[6]}] + +# Bank: 34 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[7]}] +set_property SLEW FAST [get_ports {ddr3_dm[7]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[7]}] +set_property LOC AC7 [get_ports {ddr3_dm[7]}] + +# Bank: 32 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[0]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[0]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[0]}] +set_property LOC AC16 [get_ports {ddr3_dqs_p[0]}] + +# Bank: 32 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[0]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[0]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[0]}] +set_property LOC AC15 [get_ports {ddr3_dqs_n[0]}] + +# Bank: 32 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[1]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[1]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[1]}] +set_property LOC Y19 [get_ports {ddr3_dqs_p[1]}] + +# Bank: 32 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[1]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[1]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[1]}] +set_property LOC Y18 [get_ports {ddr3_dqs_n[1]}] + +# Bank: 32 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[2]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[2]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[2]}] +set_property LOC AJ18 [get_ports {ddr3_dqs_p[2]}] + +# Bank: 32 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[2]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[2]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[2]}] +set_property LOC AK18 [get_ports {ddr3_dqs_n[2]}] + +# Bank: 32 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[3]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[3]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[3]}] +set_property LOC AH16 [get_ports {ddr3_dqs_p[3]}] + +# Bank: 32 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[3]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[3]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[3]}] +set_property LOC AJ16 [get_ports {ddr3_dqs_n[3]}] + +# Bank: 34 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[4]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[4]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[4]}] +set_property LOC AH7 [get_ports {ddr3_dqs_p[4]}] + +# Bank: 34 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[4]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[4]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[4]}] +set_property LOC AJ7 [get_ports {ddr3_dqs_n[4]}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[5]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[5]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[5]}] +set_property LOC AG2 [get_ports {ddr3_dqs_p[5]}] + +# Bank: 34 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[5]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[5]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[5]}] +set_property LOC AH1 [get_ports {ddr3_dqs_n[5]}] + +# Bank: 34 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[6]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[6]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[6]}] +set_property LOC AG4 [get_ports {ddr3_dqs_p[6]}] + +# Bank: 34 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[6]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[6]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[6]}] +set_property LOC AG3 [get_ports {ddr3_dqs_n[6]}] + +# Bank: 34 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[7]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[7]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[7]}] +set_property LOC AD2 [get_ports {ddr3_dqs_p[7]}] + +# Bank: 34 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[7]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[7]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[7]}] +set_property LOC AD1 [get_ports {ddr3_dqs_n[7]}] + +# Bank: 33 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ck_p[0]}] +set_property SLEW FAST [get_ports {ddr3_ck_p[0]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_ck_p[0]}] +set_property LOC AG10 [get_ports {ddr3_ck_p[0]}] + +# Bank: 33 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ck_n[0]}] +set_property SLEW FAST [get_ports {ddr3_ck_n[0]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_ck_n[0]}] +set_property LOC AH10 [get_ports {ddr3_ck_n[0]}] + +# Bank: 33 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ck_p[0]}] +set_property SLEW FAST [get_ports {ddr3_ck_p[0]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_ck_p[0]}] +set_property LOC AG10 [get_ports {ddr3_ck_p[0]}] + +# Bank: 33 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ck_n[0]}] +set_property SLEW FAST [get_ports {ddr3_ck_n[0]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_ck_n[0]}] +set_property LOC AH10 [get_ports {ddr3_ck_n[0]}] diff --git a/boards/xilinx-ml605-xc6vlx240t/Makefile.inc b/boards/xilinx-ml605-xc6vlx240t/Makefile.inc index 6a259bdc..46958583 100644 --- a/boards/xilinx-ml605-xc6vlx240t/Makefile.inc +++ b/boards/xilinx-ml605-xc6vlx240t/Makefile.inc @@ -14,3 +14,10 @@ MANUFACTURER=Xilinx MGCPART=XC6VLX16$(PACKAGE) MGCTECHNOLOGY=VIRTEX-6 MGCPACKAGE=$(PACKAGE) + +# Set PlanAhead Synthesis Flow and Strategy used for build +PLANAHEAD_SYNTH_FLOW="XST 14" +PLANAHEAD_SYNTH_STRATEGY="TimingWithIOBPacking" + +# Set PlanAhead Implementation strategy +PLANAHEAD_IMPL_STRATEGY="MapLogicOptParHighExtra" diff --git a/boards/xilinx-vc707-xc7vx485t/Makefile.inc b/boards/xilinx-vc707-xc7vx485t/Makefile.inc new file mode 100644 index 00000000..54b5cafe --- /dev/null +++ b/boards/xilinx-vc707-xc7vx485t/Makefile.inc @@ -0,0 +1,29 @@ +# FPGA and Dev Board used in Design +TECHNOLOGY=Virtex7 +PART=XC7VX485T +PACKAGE=ffg1761 +PROTOBOARD=vc707 +SPEED=2 +PROMGENPAR=-x xcf08p -u 0 $(TOP).bit -p mcs -w -o $(BOARD) + +# Set Vivado Synthesis Flow and Strategy used for build +# Choose 'XST 14' or 'Vivado Synthesis 2012' +VIVADO_SYNTH_FLOW="Vivado Synthesis 2012" + +# For 'Vivado Synthesis 2012' flow set: +# 1. 'Vivado Synthesis Defaults' +# For 'XST 14'flow set: +# 1. 'TimingWithIOBPacking' +# 2. 'TimingWithoutIOBPacking' +# 3. 'AreaReduction' +# 4. 'PowerOptimization' +# 5. 'XST Defaults' +VIVADO_SYNTH_STRATEGY="Vivado Synthesis Defaults" + +# Set Vivado Implementation strategy +# 1. 'HighEffort' +# 2. 'HighEffortPhySynth' +# 3. 'Vivado Implemnation Defaults' +# 4. 'LowEffort' +# 5. 'QuickEffort' +VIVADO_IMPL_STRATEGY="HighEffort" diff --git a/boards/xilinx-vc707-xc7vx485t/mig.cgp b/boards/xilinx-vc707-xc7vx485t/mig.cgp new file mode 100644 index 00000000..f67423f4 --- /dev/null +++ b/boards/xilinx-vc707-xc7vx485t/mig.cgp @@ -0,0 +1,22 @@ +# Date: Mon Nov 12 08:12:49 2012 + +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = Verilog +SET device = xc7vx485t +SET devicefamily = virtex7 +SET flowvendor = Foundation_ISE +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ffg1761 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -2 +SET verilogsim = true +SET vhdlsim = false +SET workingdirectory = ./tmp/ + +# CRC: cd238220 diff --git a/boards/xilinx-vc707-xc7vx485t/mig.prj b/boards/xilinx-vc707-xc7vx485t/mig.prj new file mode 100644 index 00000000..21d8bfed --- /dev/null +++ b/boards/xilinx-vc707-xc7vx485t/mig.prj @@ -0,0 +1,187 @@ + + + + mig + 1 + 1 + OFF + 1024 + OFF + xc7vx485t-ffg1761/-2 + 1.6 + Differential + Use System Clock + FALSE + 0 + 50 Ohms + 0 + + DDR3_SDRAM/SODIMMs/MT8JTF12864HZ-1G6 + 2500 + 1.8V + 4:1 + 200 + 64 + 1 + 1 + Disabled + Strict + FALSE + + 14 + 10 + 3 + BANK_ROW_COLUMN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8 - Fixed + Sequential + 6 + Normal + No + Slow Exit + Enable + RZQ/7 + Disable + Enable + RZQ/4 + 0 + Disabled + Enabled + Output Buffer Enabled + Full Array + 5 + Enabled + Normal + Dynamic ODT off + NATIVE + + + diff --git a/boards/xilinx-vc707-xc7vx485t/mig.xco b/boards/xilinx-vc707-xc7vx485t/mig.xco new file mode 100644 index 00000000..d1737736 --- /dev/null +++ b/boards/xilinx-vc707-xc7vx485t/mig.xco @@ -0,0 +1,49 @@ +############################################################## +# +# Xilinx Core Generator version 14.2 +# Date: Mon Nov 12 08:14:48 2012 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:mig_7series:1.6 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = Verilog +SET device = xc7vx485t +SET devicefamily = virtex7 +SET flowvendor = Foundation_ISE +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ffg1761 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -2 +SET verilogsim = true +SET vhdlsim = false +# END Project Options +# BEGIN Select +SELECT MIG_7_Series family Xilinx,_Inc. 1.6 +# END Select +# BEGIN Parameters +CSET component_name=mig +CSET xml_input_file=./mig/mig.prj +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-07-21T06:31:03Z +# END Extra information +GENERATE +# CRC: 4975eece diff --git a/boards/xilinx-vc707-xc7vx485t/readme.txt b/boards/xilinx-vc707-xc7vx485t/readme.txt new file mode 100644 index 00000000..eb94d238 --- /dev/null +++ b/boards/xilinx-vc707-xc7vx485t/readme.txt @@ -0,0 +1,3 @@ +This directory contains fpga pinout and xilinx coregen ip setup files used by the reference designs. + +For more information please visit www.xilinx.com/vc707 \ No newline at end of file diff --git a/boards/xilinx-vc707-xc7vx485t/xilinx-vc707-xc7vx485t.xdc b/boards/xilinx-vc707-xc7vx485t/xilinx-vc707-xc7vx485t.xdc new file mode 100644 index 00000000..c052ca55 --- /dev/null +++ b/boards/xilinx-vc707-xc7vx485t/xilinx-vc707-xc7vx485t.xdc @@ -0,0 +1,784 @@ +# Define and contraint system clock +create_clock -name clk200 -period 5 [get_ports clk200p] +set_propagated_clock clk200 + +set_property PACKAGE_PIN E19 [get_ports {clk200p }] +set_property PACKAGE_PIN E18 [get_ports {clk200n }] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {clk200p}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {clk200n}] +set_property VCCAUX_IO DONTCARE [get_ports {clk200p}] +set_property VCCAUX_IO DONTCARE [get_ports {clk200n}] + + +set_property PACKAGE_PIN AV40 [get_ports {reset }] + +set_property PACKAGE_PIN AM39 [get_ports {led[0] }] +set_property PACKAGE_PIN AN39 [get_ports {led[1] }] +set_property PACKAGE_PIN AR37 [get_ports {led[2] }] +set_property PACKAGE_PIN AT37 [get_ports {led[3] }] +set_property PACKAGE_PIN AR35 [get_ports {led[4] }] +set_property PACKAGE_PIN AP41 [get_ports {led[5] }] +set_property PACKAGE_PIN AP42 [get_ports {led[6] }] + +set_property PACKAGE_PIN AM36 [get_ports {data[0] }] +set_property PACKAGE_PIN AN36 [get_ports {data[1] }] +set_property PACKAGE_PIN AJ36 [get_ports {data[2] }] +set_property PACKAGE_PIN AJ37 [get_ports {data[3] }] +set_property PACKAGE_PIN AK37 [get_ports {data[4] }] +set_property PACKAGE_PIN AL37 [get_ports {data[5] }] +set_property PACKAGE_PIN AN35 [get_ports {data[6] }] +set_property PACKAGE_PIN AP35 [get_ports {data[7] }] +set_property PACKAGE_PIN AM37 [get_ports {data[8] }] +set_property PACKAGE_PIN AG33 [get_ports {data[9] }] +set_property PACKAGE_PIN AH33 [get_ports {data[10] }] +set_property PACKAGE_PIN AK35 [get_ports {data[11] }] +set_property PACKAGE_PIN AL35 [get_ports {data[12] }] +set_property PACKAGE_PIN AJ31 [get_ports {data[13] }] +set_property PACKAGE_PIN AH34 [get_ports {data[14] }] +set_property PACKAGE_PIN AJ35 [get_ports {data[15] }] +set_property PACKAGE_PIN AW41 [get_ports {address[25] }] +set_property PACKAGE_PIN AW42 [get_ports {address[24] }] +set_property PACKAGE_PIN BB39 [get_ports {address[23] }] +set_property PACKAGE_PIN BA39 [get_ports {address[22] }] +set_property PACKAGE_PIN BA40 [get_ports {address[21] }] +set_property PACKAGE_PIN AT41 [get_ports {address[20] }] +set_property PACKAGE_PIN AU42 [get_ports {address[19] }] +set_property PACKAGE_PIN BA42 [get_ports {address[18] }] +set_property PACKAGE_PIN AU41 [get_ports {address[17] }] +set_property PACKAGE_PIN AV41 [get_ports {address[16] }] +set_property PACKAGE_PIN AM32 [get_ports {address[15] }] +set_property PACKAGE_PIN AM33 [get_ports {address[14] }] +set_property PACKAGE_PIN AN33 [get_ports {address[13] }] +set_property PACKAGE_PIN AL29 [get_ports {address[12] }] +set_property PACKAGE_PIN AL30 [get_ports {address[11] }] +set_property PACKAGE_PIN AH29 [get_ports {address[10] }] +set_property PACKAGE_PIN AH30 [get_ports {address[9] }] +set_property PACKAGE_PIN AJ30 [get_ports {address[8] }] +set_property PACKAGE_PIN AK30 [get_ports {address[7] }] +set_property PACKAGE_PIN AG29 [get_ports {address[6] }] +set_property PACKAGE_PIN AK28 [get_ports {address[5] }] +set_property PACKAGE_PIN AK29 [get_ports {address[4] }] +set_property PACKAGE_PIN AF30 [get_ports {address[3] }] +set_property PACKAGE_PIN AG31 [get_ports {address[2] }] +set_property PACKAGE_PIN AH28 [get_ports {address[1] }] +set_property PACKAGE_PIN AJ28 [get_ports {address[0] }] +set_property PACKAGE_PIN AY37 [get_ports {adv }] +set_property PACKAGE_PIN AL36 [get_ports {romsn }] +#set_property PACKAGE_PIN AM34 [get_ports {FLASH_WAIT }] +set_property PACKAGE_PIN BA41 [get_ports {oen }] +set_property PACKAGE_PIN BB41 [get_ports {writen }] +#set_property PACKAGE PIN N10 [get_ports {FLASH_CLK }] +#set_property PACKAGE PIN AG11 [get_ports {FPGA_INIT_B }] + +set_property PACKAGE_PIN AU36 [get_ports {dsurx }] +set_property PACKAGE_PIN AT32 [get_ports {dsurtsn }] +set_property PACKAGE_PIN AU33 [get_ports {dsutx }] +set_property PACKAGE_PIN AR34 [get_ports {dsuctsn }] + +set_property PACKAGE_PIN AP40 [get_ports {button[0] }] +set_property PACKAGE_PIN AR40 [get_ports {button[1] }] +set_property PACKAGE_PIN AV39 [get_ports {button[2] }] +set_property PACKAGE_PIN AU38 [get_ports {button[3] }] +set_property PACKAGE_PIN AY33 [get_ports {switch[0] }] +set_property PACKAGE_PIN BA31 [get_ports {switch[1] }] +set_property PACKAGE_PIN BA32 [get_ports {switch[2] }] +set_property PACKAGE_PIN AW30 [get_ports {switch[3] }] +set_property PACKAGE_PIN AT35 [get_ports {iic_scl }] +set_property PACKAGE_PIN AU32 [get_ports {iic_sda }] + +set_property IOSTANDARD LVCMOS18 [get_ports {dsurx }] +set_property IOSTANDARD LVCMOS18 [get_ports {dsurtsn }] +set_property IOSTANDARD LVCMOS18 [get_ports {dsutx }] +set_property IOSTANDARD LVCMOS18 [get_ports {dsuctsn }] +set_property IOSTANDARD LVCMOS18 [get_ports {led[2] }] +set_property IOSTANDARD LVCMOS18 [get_ports {led[4] }] +set_property IOSTANDARD LVCMOS18 [get_ports {led[5] }] +set_property IOSTANDARD LVCMOS18 [get_ports {led[6] }] +set_property IOSTANDARD LVCMOS18 [get_ports {button[3]}] + +############################################################## + +# Bank: 39 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[0]}] +set_property SLEW FAST [get_ports {ddr3_dq[0]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[0]}] +set_property LOC N14 [get_ports {ddr3_dq[0]}] + +# Bank: 39 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[1]}] +set_property SLEW FAST [get_ports {ddr3_dq[1]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[1]}] +set_property LOC N13 [get_ports {ddr3_dq[1]}] + +# Bank: 39 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[2]}] +set_property SLEW FAST [get_ports {ddr3_dq[2]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[2]}] +set_property LOC L14 [get_ports {ddr3_dq[2]}] + +# Bank: 39 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[3]}] +set_property SLEW FAST [get_ports {ddr3_dq[3]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[3]}] +set_property LOC M14 [get_ports {ddr3_dq[3]}] + +# Bank: 39 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[4]}] +set_property SLEW FAST [get_ports {ddr3_dq[4]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[4]}] +set_property LOC M12 [get_ports {ddr3_dq[4]}] + +# Bank: 39 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[5]}] +set_property SLEW FAST [get_ports {ddr3_dq[5]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[5]}] +set_property LOC N15 [get_ports {ddr3_dq[5]}] + +# Bank: 39 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[6]}] +set_property SLEW FAST [get_ports {ddr3_dq[6]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[6]}] +set_property LOC M11 [get_ports {ddr3_dq[6]}] + +# Bank: 39 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[7]}] +set_property SLEW FAST [get_ports {ddr3_dq[7]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[7]}] +set_property LOC L12 [get_ports {ddr3_dq[7]}] + +# Bank: 39 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[8]}] +set_property SLEW FAST [get_ports {ddr3_dq[8]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[8]}] +set_property LOC K14 [get_ports {ddr3_dq[8]}] + +# Bank: 39 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[9]}] +set_property SLEW FAST [get_ports {ddr3_dq[9]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[9]}] +set_property LOC K13 [get_ports {ddr3_dq[9]}] + +# Bank: 39 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[10]}] +set_property SLEW FAST [get_ports {ddr3_dq[10]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[10]}] +set_property LOC H13 [get_ports {ddr3_dq[10]}] + +# Bank: 39 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[11]}] +set_property SLEW FAST [get_ports {ddr3_dq[11]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[11]}] +set_property LOC J13 [get_ports {ddr3_dq[11]}] + +# Bank: 39 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[12]}] +set_property SLEW FAST [get_ports {ddr3_dq[12]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[12]}] +set_property LOC L16 [get_ports {ddr3_dq[12]}] + +# Bank: 39 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[13]}] +set_property SLEW FAST [get_ports {ddr3_dq[13]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[13]}] +set_property LOC L15 [get_ports {ddr3_dq[13]}] + +# Bank: 39 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[14]}] +set_property SLEW FAST [get_ports {ddr3_dq[14]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[14]}] +set_property LOC H14 [get_ports {ddr3_dq[14]}] + +# Bank: 39 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[15]}] +set_property SLEW FAST [get_ports {ddr3_dq[15]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[15]}] +set_property LOC J15 [get_ports {ddr3_dq[15]}] + +# Bank: 39 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[16]}] +set_property SLEW FAST [get_ports {ddr3_dq[16]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[16]}] +set_property LOC E15 [get_ports {ddr3_dq[16]}] + +# Bank: 39 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[17]}] +set_property SLEW FAST [get_ports {ddr3_dq[17]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[17]}] +set_property LOC E13 [get_ports {ddr3_dq[17]}] + +# Bank: 39 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[18]}] +set_property SLEW FAST [get_ports {ddr3_dq[18]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[18]}] +set_property LOC F15 [get_ports {ddr3_dq[18]}] + +# Bank: 39 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[19]}] +set_property SLEW FAST [get_ports {ddr3_dq[19]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[19]}] +set_property LOC E14 [get_ports {ddr3_dq[19]}] + +# Bank: 39 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[20]}] +set_property SLEW FAST [get_ports {ddr3_dq[20]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[20]}] +set_property LOC G13 [get_ports {ddr3_dq[20]}] + +# Bank: 39 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[21]}] +set_property SLEW FAST [get_ports {ddr3_dq[21]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[21]}] +set_property LOC G12 [get_ports {ddr3_dq[21]}] + +# Bank: 39 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[22]}] +set_property SLEW FAST [get_ports {ddr3_dq[22]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[22]}] +set_property LOC F14 [get_ports {ddr3_dq[22]}] + +# Bank: 39 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[23]}] +set_property SLEW FAST [get_ports {ddr3_dq[23]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[23]}] +set_property LOC G14 [get_ports {ddr3_dq[23]}] + +# Bank: 39 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[24]}] +set_property SLEW FAST [get_ports {ddr3_dq[24]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[24]}] +set_property LOC B14 [get_ports {ddr3_dq[24]}] + +# Bank: 39 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[25]}] +set_property SLEW FAST [get_ports {ddr3_dq[25]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[25]}] +set_property LOC C13 [get_ports {ddr3_dq[25]}] + +# Bank: 39 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[26]}] +set_property SLEW FAST [get_ports {ddr3_dq[26]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[26]}] +set_property LOC B16 [get_ports {ddr3_dq[26]}] + +# Bank: 39 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[27]}] +set_property SLEW FAST [get_ports {ddr3_dq[27]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[27]}] +set_property LOC D15 [get_ports {ddr3_dq[27]}] + +# Bank: 39 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[28]}] +set_property SLEW FAST [get_ports {ddr3_dq[28]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[28]}] +set_property LOC D13 [get_ports {ddr3_dq[28]}] + +# Bank: 39 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[29]}] +set_property SLEW FAST [get_ports {ddr3_dq[29]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[29]}] +set_property LOC E12 [get_ports {ddr3_dq[29]}] + +# Bank: 39 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[30]}] +set_property SLEW FAST [get_ports {ddr3_dq[30]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[30]}] +set_property LOC C16 [get_ports {ddr3_dq[30]}] + +# Bank: 39 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[31]}] +set_property SLEW FAST [get_ports {ddr3_dq[31]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[31]}] +set_property LOC D16 [get_ports {ddr3_dq[31]}] + +# Bank: 37 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[32]}] +set_property SLEW FAST [get_ports {ddr3_dq[32]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[32]}] +set_property LOC A24 [get_ports {ddr3_dq[32]}] + +# Bank: 37 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[33]}] +set_property SLEW FAST [get_ports {ddr3_dq[33]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[33]}] +set_property LOC B23 [get_ports {ddr3_dq[33]}] + +# Bank: 37 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[34]}] +set_property SLEW FAST [get_ports {ddr3_dq[34]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[34]}] +set_property LOC B27 [get_ports {ddr3_dq[34]}] + +# Bank: 37 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[35]}] +set_property SLEW FAST [get_ports {ddr3_dq[35]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[35]}] +set_property LOC B26 [get_ports {ddr3_dq[35]}] + +# Bank: 37 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[36]}] +set_property SLEW FAST [get_ports {ddr3_dq[36]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[36]}] +set_property LOC A22 [get_ports {ddr3_dq[36]}] + +# Bank: 37 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[37]}] +set_property SLEW FAST [get_ports {ddr3_dq[37]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[37]}] +set_property LOC B22 [get_ports {ddr3_dq[37]}] + +# Bank: 37 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[38]}] +set_property SLEW FAST [get_ports {ddr3_dq[38]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[38]}] +set_property LOC A25 [get_ports {ddr3_dq[38]}] + +# Bank: 37 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[39]}] +set_property SLEW FAST [get_ports {ddr3_dq[39]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[39]}] +set_property LOC C24 [get_ports {ddr3_dq[39]}] + +# Bank: 37 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[40]}] +set_property SLEW FAST [get_ports {ddr3_dq[40]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[40]}] +set_property LOC E24 [get_ports {ddr3_dq[40]}] + +# Bank: 37 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[41]}] +set_property SLEW FAST [get_ports {ddr3_dq[41]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[41]}] +set_property LOC D23 [get_ports {ddr3_dq[41]}] + +# Bank: 37 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[42]}] +set_property SLEW FAST [get_ports {ddr3_dq[42]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[42]}] +set_property LOC D26 [get_ports {ddr3_dq[42]}] + +# Bank: 37 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[43]}] +set_property SLEW FAST [get_ports {ddr3_dq[43]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[43]}] +set_property LOC C25 [get_ports {ddr3_dq[43]}] + +# Bank: 37 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[44]}] +set_property SLEW FAST [get_ports {ddr3_dq[44]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[44]}] +set_property LOC E23 [get_ports {ddr3_dq[44]}] + +# Bank: 37 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[45]}] +set_property SLEW FAST [get_ports {ddr3_dq[45]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[45]}] +set_property LOC D22 [get_ports {ddr3_dq[45]}] + +# Bank: 37 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[46]}] +set_property SLEW FAST [get_ports {ddr3_dq[46]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[46]}] +set_property LOC F22 [get_ports {ddr3_dq[46]}] + +# Bank: 37 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[47]}] +set_property SLEW FAST [get_ports {ddr3_dq[47]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[47]}] +set_property LOC E22 [get_ports {ddr3_dq[47]}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[48]}] +set_property SLEW FAST [get_ports {ddr3_dq[48]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[48]}] +set_property LOC A30 [get_ports {ddr3_dq[48]}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[49]}] +set_property SLEW FAST [get_ports {ddr3_dq[49]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[49]}] +set_property LOC D27 [get_ports {ddr3_dq[49]}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[50]}] +set_property SLEW FAST [get_ports {ddr3_dq[50]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[50]}] +set_property LOC A29 [get_ports {ddr3_dq[50]}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[51]}] +set_property SLEW FAST [get_ports {ddr3_dq[51]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[51]}] +set_property LOC C28 [get_ports {ddr3_dq[51]}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[52]}] +set_property SLEW FAST [get_ports {ddr3_dq[52]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[52]}] +set_property LOC D28 [get_ports {ddr3_dq[52]}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[53]}] +set_property SLEW FAST [get_ports {ddr3_dq[53]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[53]}] +set_property LOC B31 [get_ports {ddr3_dq[53]}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[54]}] +set_property SLEW FAST [get_ports {ddr3_dq[54]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[54]}] +set_property LOC A31 [get_ports {ddr3_dq[54]}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[55]}] +set_property SLEW FAST [get_ports {ddr3_dq[55]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[55]}] +set_property LOC A32 [get_ports {ddr3_dq[55]}] + +# Bank: 37 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[56]}] +set_property SLEW FAST [get_ports {ddr3_dq[56]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[56]}] +set_property LOC E30 [get_ports {ddr3_dq[56]}] + +# Bank: 37 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[57]}] +set_property SLEW FAST [get_ports {ddr3_dq[57]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[57]}] +set_property LOC F29 [get_ports {ddr3_dq[57]}] + +# Bank: 37 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[58]}] +set_property SLEW FAST [get_ports {ddr3_dq[58]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[58]}] +set_property LOC F30 [get_ports {ddr3_dq[58]}] + +# Bank: 37 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[59]}] +set_property SLEW FAST [get_ports {ddr3_dq[59]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[59]}] +set_property LOC F27 [get_ports {ddr3_dq[59]}] + +# Bank: 37 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[60]}] +set_property SLEW FAST [get_ports {ddr3_dq[60]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[60]}] +set_property LOC C30 [get_ports {ddr3_dq[60]}] + +# Bank: 37 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[61]}] +set_property SLEW FAST [get_ports {ddr3_dq[61]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[61]}] +set_property LOC E29 [get_ports {ddr3_dq[61]}] + +# Bank: 37 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[62]}] +set_property SLEW FAST [get_ports {ddr3_dq[62]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[62]}] +set_property LOC F26 [get_ports {ddr3_dq[62]}] + +# Bank: 37 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dq[63]}] +set_property SLEW FAST [get_ports {ddr3_dq[63]}] +set_property IOSTANDARD SSTL15_T_DCI [get_ports {ddr3_dq[63]}] +set_property LOC D30 [get_ports {ddr3_dq[63]}] + +# Bank: 38 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[13]}] +set_property SLEW FAST [get_ports {ddr3_addr[13]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[13]}] +set_property LOC A21 [get_ports {ddr3_addr[13]}] + +# Bank: 38 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[12]}] +set_property SLEW FAST [get_ports {ddr3_addr[12]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[12]}] +set_property LOC A15 [get_ports {ddr3_addr[12]}] + +# Bank: 38 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[11]}] +set_property SLEW FAST [get_ports {ddr3_addr[11]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[11]}] +set_property LOC B17 [get_ports {ddr3_addr[11]}] + +# Bank: 38 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[10]}] +set_property SLEW FAST [get_ports {ddr3_addr[10]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[10]}] +set_property LOC B21 [get_ports {ddr3_addr[10]}] + +# Bank: 38 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[9]}] +set_property SLEW FAST [get_ports {ddr3_addr[9]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[9]}] +set_property LOC C19 [get_ports {ddr3_addr[9]}] + +# Bank: 38 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[8]}] +set_property SLEW FAST [get_ports {ddr3_addr[8]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[8]}] +set_property LOC D17 [get_ports {ddr3_addr[8]}] + +# Bank: 38 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[7]}] +set_property SLEW FAST [get_ports {ddr3_addr[7]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[7]}] +set_property LOC C18 [get_ports {ddr3_addr[7]}] + +# Bank: 38 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[6]}] +set_property SLEW FAST [get_ports {ddr3_addr[6]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[6]}] +set_property LOC D20 [get_ports {ddr3_addr[6]}] + +# Bank: 38 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[5]}] +set_property SLEW FAST [get_ports {ddr3_addr[5]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[5]}] +set_property LOC A16 [get_ports {ddr3_addr[5]}] + +# Bank: 38 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[4]}] +set_property SLEW FAST [get_ports {ddr3_addr[4]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[4]}] +set_property LOC A17 [get_ports {ddr3_addr[4]}] + +# Bank: 38 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[3]}] +set_property SLEW FAST [get_ports {ddr3_addr[3]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[3]}] +set_property LOC A19 [get_ports {ddr3_addr[3]}] + +# Bank: 38 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[2]}] +set_property SLEW FAST [get_ports {ddr3_addr[2]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[2]}] +set_property LOC C20 [get_ports {ddr3_addr[2]}] + +# Bank: 38 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[1]}] +set_property SLEW FAST [get_ports {ddr3_addr[1]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[1]}] +set_property LOC B19 [get_ports {ddr3_addr[1]}] + +# Bank: 38 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_addr[0]}] +set_property SLEW FAST [get_ports {ddr3_addr[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[0]}] +set_property LOC A20 [get_ports {ddr3_addr[0]}] + +# Bank: 38 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ba[2]}] +set_property SLEW FAST [get_ports {ddr3_ba[2]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[2]}] +set_property LOC D18 [get_ports {ddr3_ba[2]}] + +# Bank: 38 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ba[1]}] +set_property SLEW FAST [get_ports {ddr3_ba[1]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[1]}] +set_property LOC C21 [get_ports {ddr3_ba[1]}] + +# Bank: 38 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ba[0]}] +set_property SLEW FAST [get_ports {ddr3_ba[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[0]}] +set_property LOC D21 [get_ports {ddr3_ba[0]}] + +# Bank: 38 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ras_n}] +set_property SLEW FAST [get_ports {ddr3_ras_n}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ras_n}] +set_property LOC E20 [get_ports {ddr3_ras_n}] + +# Bank: 38 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_cas_n}] +set_property SLEW FAST [get_ports {ddr3_cas_n}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_cas_n}] +set_property LOC K17 [get_ports {ddr3_cas_n}] + +# Bank: 38 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_we_n}] +set_property SLEW FAST [get_ports {ddr3_we_n}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_we_n}] +set_property LOC F20 [get_ports {ddr3_we_n}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_reset_n}] +set_property SLEW FAST [get_ports {ddr3_reset_n}] +set_property IOSTANDARD LVCMOS15 [get_ports {ddr3_reset_n}] +set_property LOC C29 [get_ports {ddr3_reset_n}] + +# Bank: 38 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_cke[0]}] +set_property SLEW FAST [get_ports {ddr3_cke[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_cke[0]}] +set_property LOC K19 [get_ports {ddr3_cke[0]}] + +# Bank: 38 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_odt[0]}] +set_property SLEW FAST [get_ports {ddr3_odt[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_odt[0]}] +set_property LOC H20 [get_ports {ddr3_odt[0]}] + +# Bank: 38 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_cs_n[0]}] +set_property SLEW FAST [get_ports {ddr3_cs_n[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_cs_n[0]}] +set_property LOC J17 [get_ports {ddr3_cs_n[0]}] + +# Bank: 39 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[0]}] +set_property SLEW FAST [get_ports {ddr3_dm[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[0]}] +set_property LOC M13 [get_ports {ddr3_dm[0]}] + +# Bank: 39 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[1]}] +set_property SLEW FAST [get_ports {ddr3_dm[1]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[1]}] +set_property LOC K15 [get_ports {ddr3_dm[1]}] + +# Bank: 39 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[2]}] +set_property SLEW FAST [get_ports {ddr3_dm[2]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[2]}] +set_property LOC F12 [get_ports {ddr3_dm[2]}] + +# Bank: 39 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[3]}] +set_property SLEW FAST [get_ports {ddr3_dm[3]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[3]}] +set_property LOC A14 [get_ports {ddr3_dm[3]}] + +# Bank: 37 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[4]}] +set_property SLEW FAST [get_ports {ddr3_dm[4]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[4]}] +set_property LOC C23 [get_ports {ddr3_dm[4]}] + +# Bank: 37 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[5]}] +set_property SLEW FAST [get_ports {ddr3_dm[5]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[5]}] +set_property LOC D25 [get_ports {ddr3_dm[5]}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[6]}] +set_property SLEW FAST [get_ports {ddr3_dm[6]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[6]}] +set_property LOC C31 [get_ports {ddr3_dm[6]}] + +# Bank: 37 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dm[7]}] +set_property SLEW FAST [get_ports {ddr3_dm[7]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[7]}] +set_property LOC F31 [get_ports {ddr3_dm[7]}] + +# Bank: 39 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[0]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[0]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[0]}] +set_property LOC N16 [get_ports {ddr3_dqs_p[0]}] + +# Bank: 39 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[0]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[0]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[0]}] +set_property LOC M16 [get_ports {ddr3_dqs_n[0]}] + +# Bank: 39 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[1]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[1]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[1]}] +set_property LOC K12 [get_ports {ddr3_dqs_p[1]}] + +# Bank: 39 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[1]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[1]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[1]}] +set_property LOC J12 [get_ports {ddr3_dqs_n[1]}] + +# Bank: 39 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[2]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[2]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[2]}] +set_property LOC H16 [get_ports {ddr3_dqs_p[2]}] + +# Bank: 39 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[2]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[2]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[2]}] +set_property LOC G16 [get_ports {ddr3_dqs_n[2]}] + +# Bank: 39 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[3]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[3]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[3]}] +set_property LOC C15 [get_ports {ddr3_dqs_p[3]}] + +# Bank: 39 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[3]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[3]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[3]}] +set_property LOC C14 [get_ports {ddr3_dqs_n[3]}] + +# Bank: 37 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[4]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[4]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[4]}] +set_property LOC A26 [get_ports {ddr3_dqs_p[4]}] + +# Bank: 37 - Byte T0 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[4]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[4]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[4]}] +set_property LOC A27 [get_ports {ddr3_dqs_n[4]}] + +# Bank: 37 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[5]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[5]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[5]}] +set_property LOC F25 [get_ports {ddr3_dqs_p[5]}] + +# Bank: 37 - Byte T1 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[5]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[5]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[5]}] +set_property LOC E25 [get_ports {ddr3_dqs_n[5]}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[6]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[6]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[6]}] +set_property LOC B28 [get_ports {ddr3_dqs_p[6]}] + +# Bank: 37 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[6]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[6]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[6]}] +set_property LOC B29 [get_ports {ddr3_dqs_n[6]}] + +# Bank: 37 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_p[7]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[7]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_p[7]}] +set_property LOC E27 [get_ports {ddr3_dqs_p[7]}] + +# Bank: 37 - Byte T3 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_dqs_n[7]}] +set_property SLEW FAST [get_ports {ddr3_dqs_n[7]}] +set_property IOSTANDARD DIFF_SSTL15_T_DCI [get_ports {ddr3_dqs_n[7]}] +set_property LOC E28 [get_ports {ddr3_dqs_n[7]}] + +# Bank: 38 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ck_p[0]}] +set_property SLEW FAST [get_ports {ddr3_ck_p[0]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_ck_p[0]}] +set_property LOC H19 [get_ports {ddr3_ck_p[0]}] + +# Bank: 38 - Byte T2 +set_property VCCAUX_IO NORMAL [get_ports {ddr3_ck_n[0]}] +set_property SLEW FAST [get_ports {ddr3_ck_n[0]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_ck_n[0]}] +set_property LOC G18 [get_ports {ddr3_ck_n[0]}] + diff --git a/designs/basic_passthru/.config b/designs/basic_passthru/.config deleted file mode 100644 index 7a1add1e..00000000 --- a/designs/basic_passthru/.config +++ /dev/null @@ -1,188 +0,0 @@ -# -# Automatically generated make config: don't edit -# - -# -# Synthesis -# -CONFIG_SYN_INFERRED=y -# CONFIG_SYN_STRATIX is not set -# CONFIG_SYN_STRATIXII is not set -# CONFIG_SYN_STRATIXIII is not set -# CONFIG_SYN_CYCLONEIII is not set -# CONFIG_SYN_ALTERA is not set -# CONFIG_SYN_ATC18 is not set -# CONFIG_SYN_LATTICE is not set -# CONFIG_SYN_ECLIPSE is not set -# CONFIG_SYN_UMC is not set -# CONFIG_SYN_SPARTAN2 is not set -# CONFIG_SYN_SPARTAN3 is not set -# CONFIG_SYN_SPARTAN3E is not set -# CONFIG_SYN_SPARTAN6 is not set -# CONFIG_SYN_VIRTEX is not set -# CONFIG_SYN_VIRTEXE is not set -# CONFIG_SYN_VIRTEX2 is not set -# CONFIG_SYN_VIRTEX4 is not set -# CONFIG_SYN_VIRTEX5 is not set -# CONFIG_SYN_VIRTEX6 is not set -CONFIG_MEM_INFERRED=y -# CONFIG_MEM_UMC is not set -# CONFIG_MEM_VIRAGE is not set -# CONFIG_MEM_VIRAGE90 is not set -# CONFIG_SYN_NO_ASYNC is not set -# CONFIG_SYN_SCAN is not set - -# -# Clock generation -# -CONFIG_CLK_INFERRED=y -# CONFIG_CLK_HCLKBUF is not set -# CONFIG_CLK_UT130HBD is not set -# CONFIG_CLK_ALTDLL is not set -# CONFIG_CLK_LATDLL is not set -# CONFIG_CLK_PRO3PLL is not set -# CONFIG_CLK_PRO3EPLL is not set -# CONFIG_CLK_PRO3LPLL is not set -# CONFIG_CLK_FUSPLL is not set -# CONFIG_CLK_LIB18T is not set -# CONFIG_CLK_RHUMC is not set -# CONFIG_CLK_CLKDLL is not set -# CONFIG_CLK_DCM is not set -# CONFIG_PCI_SYSCLK is not set -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 - -# -# Processor -# - -# -# Integer unit -# -CONFIG_IU_NWINDOWS=8 -# CONFIG_IU_V8MULDIV is not set -# CONFIG_IU_BP is not set -# CONFIG_IU_SVT is not set -# CONFIG_NOTAG is not set -CONFIG_IU_LDELAY=1 -CONFIG_IU_WATCHPOINTS=0 -# CONFIG_PWD is not set -CONFIG_IU_RSTADDR=00000 - -# -# Floating-point unit -# -# CONFIG_FPU_ENABLE is not set - -# -# Cache system -# -# CONFIG_ICACHE_ENABLE is not set -# CONFIG_ICACHE_LRAM is not set -# CONFIG_DCACHE_ENABLE is not set -# CONFIG_DCACHE_LRAM is not set - -# -# MMU -# -# CONFIG_MMU_ENABLE is not set - -# -# Debug Support Unit -# -# CONFIG_DSU_ENABLE is not set - -# -# Fault-tolerance -# - -# -# VHDL debug settings -# -# CONFIG_IU_DISAS is not set -# CONFIG_DEBUG_PC32 is not set - -# -# AMBA configuration -# -CONFIG_AHB_DEFMST=0 -# CONFIG_AHB_RROBIN is not set -# CONFIG_AHB_SPLIT is not set -CONFIG_AHB_IOADDR=FFF -CONFIG_APB_HADDR=800 -# CONFIG_AHB_MON is not set -# CONFIG_AHB_DTRACE is not set - -# -# Debug Link -# -# CONFIG_DSU_UART is not set -# CONFIG_DSU_JTAG is not set - -# -# Passthrough Ports -# - -# -# AHB Master Pass Through Ports -# -CONFIG_AHBM_PASSTHRU_0=y -# CONFIG_AHBM_PASSTHRU_1 is not set -# CONFIG_AHBM_PASSTHRU_2 is not set - -# -# AHB Slave Pass Through Ports -# -# CONFIG_AHBS_PASSTHRU_0 is not set -CONFIG_AHBS_PASSTHRU_1=y -# CONFIG_AHBS_PASSTHRU_2 is not set -# CONFIG_AHBS_PASSTHRU_3 is not set -# CONFIG_AHBS_PASSTHRU_4 is not set -CONFIG_AHBS0_BAR0=A00 -CONFIG_AHBS0_MASK0=00F -# CONFIG_AHBS0_BARTYPE0 is not set -# CONFIG_AHBS0_PF0 is not set -# CONFIG_AHBS0_CA0 is not set -CONFIG_AHBS0_BAR1=000 -CONFIG_AHBS0_MASK1=000 -# CONFIG_AHBS0_BARTYPE1 is not set -# CONFIG_AHBS0_PF1 is not set -# CONFIG_AHBS0_CA1 is not set -CONFIG_AHBS0_BAR2=000 -CONFIG_AHBS0_MASK2=000 -# CONFIG_AHBS0_BARTYPE2 is not set -# CONFIG_AHBS0_PF2 is not set -# CONFIG_AHBS0_CA2 is not set -CONFIG_AHBS0_BAR3=000 -CONFIG_AHBS0_MASK3=000 -# CONFIG_AHBS0_BARTYPE3 is not set -# CONFIG_AHBS0_PF3 is not set -# CONFIG_AHBS0_CA3 is not set - -# -# On-chip ROM -# -CONFIG_AHBROM_ENABLE=y -CONFIG_AHBROM_START=000 -# CONFIG_AHBROM_PIPE is not set - -# -# UART, timer, GPIO controller, and interrupt controller -# -CONFIG_UART1_ENABLE=y -CONFIG_UA1_FIFO1=y -# CONFIG_UA1_FIFO2 is not set -# CONFIG_UA1_FIFO4 is not set -# CONFIG_UA1_FIFO8 is not set -# CONFIG_UA1_FIFO16 is not set -# CONFIG_UA1_FIFO32 is not set -# CONFIG_IRQ3_ENABLE is not set -# CONFIG_GPT_ENABLE is not set -CONFIG_GRGPIO_ENABLE=y -CONFIG_GRGPIO_WIDTH=32 -CONFIG_GRGPIO_IMASK=0000 - -# -# VHDL Debugging -# -# CONFIG_DEBUG_UART is not set diff --git a/designs/basic_passthru/Makefile b/designs/basic_passthru/Makefile deleted file mode 100644 index 799addbb..00000000 --- a/designs/basic_passthru/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -include .config -GRLIB=../.. -TOP=basic_passthru -BOARD=xilinx-sp601-xc6slx16 -include $(GRLIB)/boards/$(BOARD)/Makefile.inc -DEVICE=$(PART)-$(PACKAGE)$(SPEED) -UCF=$(GRLIB)/boards/$(BOARD)/$(TOP).ucf -#ISEMAPOPT=-timing -QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf -EFFORT=high -XSTOPT=-uc basic_passthru.xcf -SYNPOPT="set_option -pipe 1; set_option -retiming 1; set_option -write_apr_constraint 0" -VHDLSYNFILES=config.vhd ahbrom.vhd leon3mp_core.vhd -VERILOGSYNFILES=basic_passthru.v -VERILOGSIMFILES=test_basic_passthru.v -SIMTOP=test_basic_passthru -SDCFILE=$(GRLIB)/boards/$(BOARD)/default.sdc -BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut -CLEAN=soft-clean - -TECHLIBS = unisim - -LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp usbhc spw eth dw02 \ - esa fmf spansion gsi cypress hynix micron -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - usb grusbhc spacewire ata haps coremp7 ascs slink hcan hasp \ - greth net ddr memctrl leon4 leon4b64 l2cache pwm gr1553b iommu -FILESKIP = grcan.vhd i2cmst.vhd i2cmst_gen.vhd ahbram.vhd -LIBADD = praesum - -include $(GRLIB)/bin/Makefile -include $(GRLIB)/software/leon3/Makefile - diff --git a/designs/basic_passthru/README.txt b/designs/basic_passthru/README.txt deleted file mode 100644 index a0e8499c..00000000 --- a/designs/basic_passthru/README.txt +++ /dev/null @@ -1,9 +0,0 @@ - -Passthru example provided by Praesum ------------------------------------- - -Modelsim should be started as follows to resolve verilog models: - - vsim test_basic_passthru -L gleichmann -L opencores - -For further details, contact Praesum. diff --git a/designs/basic_passthru/basic_passthru.v b/designs/basic_passthru/basic_passthru.v deleted file mode 100644 index 02350577..00000000 --- a/designs/basic_passthru/basic_passthru.v +++ /dev/null @@ -1,329 +0,0 @@ -//Example design with a slave pass through port and a verilog top level -module basic_passthru - ( - input [31:0] gpio_in, - input leon_clk, - input leon_clk_reset_n, - input usb_uart_rxd, - output usb_uart_txd, - input dsurx, - output dsutx, - output [31:0] gpio_out, - output [31:0] gpio_oen, - - //SPI with 8 chip-selects - output sck_o, - output mosi_o, - output [7:0] ssn_o, - input miso_i - - ); - - parameter [31:0] DATAWIDTH = 32; - parameter [31:0] CORE_ACDM = 1; - - //S0 used internally & not going to i/o ports, so declare vectors - wire [31:0] s0_haddr; - wire [1:0] s0_htrans; - wire [2:0] s0_hsize; - wire [2:0] s0_hburst; - wire [DATAWIDTH-1:0] s0_hwdata; - wire [3:0] s0_hprot; - wire [3:0] s0_hmaster; - wire [0:3] s0_hmbsel; - wire [1:0] s0_hresp; - wire [DATAWIDTH-1:0] s0_hrdata; - wire [15:0] s0_hsplit; - wire s0_hcache_o = 0; - wire s0_hirq_o = 0; - - //S1 .. S3 Unused, so declare vectors and tie off the inputs - wire [31:0] s1_haddr; - wire [1:0] s1_htrans; - wire [2:0] s1_hsize; - wire [2:0] s1_hburst; - wire [DATAWIDTH-1:0] s1_hwdata; - wire [3:0] s1_hprot; - wire [3:0] s1_hmaster; - wire [0:3] s1_hmbsel; - wire s1_hready_o = 1; - wire [1:0] s1_hresp = 0; - wire [63:0] s1_hrdata = 0; - wire [15:0] s1_hsplit = 0; - wire s1_hcache_o = 0; - wire s1_hirq_o = 0; - - wire [31:0] s2_haddr; - wire [1:0] s2_htrans; - wire [2:0] s2_hsize; - wire [2:0] s2_hburst; - wire [DATAWIDTH-1:0] s2_hwdata; - wire [3:0] s2_hprot; - wire [3:0] s2_hmaster; - wire [0:3] s2_hmbsel; - wire s2_hready_o = 1; - wire [1:0] s2_hresp = 0; - wire [63:0] s2_hrdata = 0; - wire [15:0] s2_hsplit = 0; - wire s2_hcache_o = 0; - wire s2_hirq_o = 0; - - wire [31:0] s3_haddr; - wire [1:0] s3_htrans; - wire [2:0] s3_hsize; - wire [2:0] s3_hburst; - wire [DATAWIDTH-1:0] s3_hwdata; - wire [3:0] s3_hprot; - wire [3:0] s3_hmaster; - wire [0:3] s3_hmbsel; - wire s3_hready_o = 1; - wire [1:0] s3_hresp = 0; - wire [63:0] s3_hrdata = 0; - wire [15:0] s3_hsplit = 0; - wire s3_hcache_o = 0; - wire s3_hirq_o = 0; - - //M0 .. M1 Unused, so declare vectors and tie off the inputs - wire [1:0] m0_hresp; - wire [DATAWIDTH-1:0] m0_hrdata; - wire m0_hbusreq = 0; - wire m0_hlock = 0; - wire [1:0] m0_htrans = 0; - wire [31:0] m0_haddr = 0; - wire m0_hwrite = 0; - wire [2:0] m0_hsize = 0; - wire [2:0] m0_hburst = 0; - wire [3:0] m0_hprot = 0; - wire [63:0] m0_hwdata = 0; - wire m0_hirq_o = 0; - - wire [1:0] m1_hresp; - wire [DATAWIDTH-1:0] m1_hrdata; - wire m1_hbusreq = 0; - wire m1_hlock = 0; - wire [1:0] m1_htrans = 0; - wire [31:0] m1_haddr = 0; - wire m1_hwrite = 0; - wire [2:0] m1_hsize = 0; - wire [2:0] m1_hburst = 0; - wire [3:0] m1_hprot = 0; - wire [63:0] m1_hwdata = 0; - wire m1_hirq_o = 0; - - - leon3mp_core # - ( - .CFG_AHBDW(DATAWIDTH), - .CFG_AHB_ACDM(CORE_ACDM) - ) leon3mp_core - ( - .clk (leon_clk) - ,.rstn (leon_clk_reset_n) - ,.dsurx (dsurx) - ,.rxd1 (usb_uart_rxd) - ,.dsutx (dsutx) - ,.txd1 (usb_uart_txd) - ,.dsubreak (1'b0) - ,.dsuactive () - ,.gpio_in (gpio_in) - ,.gpio_out (gpio_out) - ,.gpio_oen (gpio_oen) - - // Master #0 pass through - ,.m0_hgrant (m0_hgrant) - ,.m0_hready (m0_hready) - ,.m0_hresp (m0_hresp[1:0]) - ,.m0_hrdata (m0_hrdata[DATAWIDTH-1:0]) - ,.m0_hcache (m0_hcache) - ,.m0_hirq (m0_hirq) - ,.m0_hbusreq (m0_hbusreq) - ,.m0_hlock (m0_hlock) - ,.m0_htrans (m0_htrans[1:0]) - ,.m0_haddr (m0_haddr[31:0]) - ,.m0_hwrite (m0_hwrite) - ,.m0_hsize (m0_hsize[2:0]) - ,.m0_hburst (m0_hburst[2:0]) - ,.m0_hprot (m0_hprot[3:0]) - ,.m0_hwdata (m0_hwdata[DATAWIDTH-1:0]) - ,.m0_hirq_o (m0_hirq_o) - - // Master #1 pass through - ,.m1_hgrant (m1_hgrant) - ,.m1_hready (m1_hready) - ,.m1_hresp (m1_hresp[1:0]) - ,.m1_hrdata (m1_hrdata[DATAWIDTH-1:0]) - ,.m1_hcache (m1_hcache) - ,.m1_hirq (m1_hirq) - ,.m1_hbusreq (m1_hbusreq) - ,.m1_hlock (m1_hlock) - ,.m1_htrans (m1_htrans[1:0]) - ,.m1_haddr (m1_haddr[31:0]) - ,.m1_hwrite (m1_hwrite) - ,.m1_hsize (m1_hsize[2:0]) - ,.m1_hburst (m1_hburst[2:0]) - ,.m1_hprot (m1_hprot[3:0]) - ,.m1_hwdata (m1_hwdata[DATAWIDTH-1:0]) - ,.m1_hirq_o (m1_hirq_o) - - // Slave #0 pass through - ,.s0_hsel (s0_hsel) - ,.s0_haddr (s0_haddr[31:0]) - ,.s0_hwrite (s0_hwrite) - ,.s0_htrans (s0_htrans[1:0]) - ,.s0_hsize (s0_hsize[2:0]) - ,.s0_hburst (s0_hburst[2:0]) - ,.s0_hwdata (s0_hwdata[DATAWIDTH-1:0]) - ,.s0_hprot (s0_hprot[3:0]) - ,.s0_hready_o (s0_hready_o) - ,.s0_hmaster (s0_hmaster[3:0]) - ,.s0_hmastlock (s0_hmastlock) - ,.s0_hmbsel (s0_hmbsel[0:3]) - ,.s0_hcache_o (s0_hcache_o) - ,.s0_hirq_o (s0_hirq_o) - ,.s0_hready (s0_hready) - ,.s0_hresp (s0_hresp[1:0]) - ,.s0_hrdata (s0_hrdata[DATAWIDTH-1:0]) - ,.s0_hsplit (s0_hsplit) - ,.s0_hcache (s0_hcache) - ,.s0_hirq (s0_hirq) - - // Slave #1 pass through - ,.s1_hsel (s1_hsel) - ,.s1_haddr (s1_haddr[31:0]) - ,.s1_hwrite (s1_hwrite) - ,.s1_htrans (s1_htrans[1:0]) - ,.s1_hsize (s1_hsize[2:0]) - ,.s1_hburst (s1_hburst[2:0]) - ,.s1_hwdata (s1_hwdata[DATAWIDTH-1:0]) - ,.s1_hprot (s1_hprot[3:0]) - ,.s1_hready_o (s1_hready_o) - ,.s1_hmaster (s1_hmaster[3:0]) - ,.s1_hmastlock (s1_hmastlock) - ,.s1_hmbsel (s1_hmbsel[0:3]) - ,.s1_hcache_o (s1_hcache_o) - ,.s1_hirq_o (s1_hirq_o) - ,.s1_hready (s1_hready) - ,.s1_hresp (s1_hresp[1:0]) - ,.s1_hrdata (s1_hrdata[DATAWIDTH-1:0]) - ,.s1_hsplit (s1_hsplit) - ,.s1_hcache (s1_hcache) - ,.s1_hirq (s1_hirq) - - // Slave #2 pass through - ,.s2_hsel (s2_hsel) - ,.s2_haddr (s2_haddr[31:0]) - ,.s2_hwrite (s2_hwrite) - ,.s2_htrans (s2_htrans[1:0]) - ,.s2_hsize (s2_hsize[2:0]) - ,.s2_hburst (s2_hburst[2:0]) - ,.s2_hwdata (s2_hwdata[DATAWIDTH-1:0]) - ,.s2_hprot (s2_hprot[3:0]) - ,.s2_hready_o (s2_hready_o) - ,.s2_hmaster (s2_hmaster[3:0]) - ,.s2_hmastlock (s2_hmastlock) - ,.s2_hmbsel (s2_hmbsel[0:3]) - ,.s2_hcache_o (s2_hcache_o) - ,.s2_hirq_o (s2_hirq_o) - ,.s2_hready (s2_hready) - ,.s2_hresp (s2_hresp[1:0]) - ,.s2_hrdata (s2_hrdata[DATAWIDTH-1:0]) - ,.s2_hsplit (s2_hsplit) - ,.s2_hcache (s2_hcache) - ,.s2_hirq (s2_hirq) - - // Slave #3 pass through - ,.s3_hsel (s3_hsel) - ,.s3_haddr (s3_haddr[31:0]) - ,.s3_hwrite (s3_hwrite) - ,.s3_htrans (s3_htrans[1:0]) - ,.s3_hsize (s3_hsize[2:0]) - ,.s3_hburst (s3_hburst[2:0]) - ,.s3_hwdata (s3_hwdata[DATAWIDTH-1:0]) - ,.s3_hprot (s3_hprot[3:0]) - ,.s3_hready_o (s3_hready_o) - ,.s3_hmaster (s3_hmaster[3:0]) - ,.s3_hmastlock (s3_hmastlock) - ,.s3_hmbsel (s3_hmbsel[0:3]) - ,.s3_hcache_o (s3_hcache_o) - ,.s3_hirq_o (s3_hirq_o) - ,.s3_hready (s3_hready) - ,.s3_hresp (s3_hresp[1:0]) - ,.s3_hrdata (s3_hrdata[DATAWIDTH-1:0]) - ,.s3_hsplit (s3_hsplit) - ,.s3_hcache (s3_hcache) - ,.s3_hirq (s3_hirq) - ); - - //Wishbone signals - wire wbm_we_o; - wire wbm_stb_o; - wire wbm_cyc_o; - wire [31:0] wbm_adr_o; - wire [DATAWIDTH-1:0] wbm_dat_o; - wire [3:0] wbm_sel_o; - wire wb_inta_i; - wire wbm_ack_i; - wire wbm_rty_i; - wire wbm_err_i; - wire [DATAWIDTH-1:0] wbm_dat_i; - - ahb2wb # - ( - .HAMAX (32), - .HDMAX (DATAWIDTH) - ) ahb2wb - ( - // Outputs - .hready (s0_hready_o), - .hresp (s0_hresp[1:0] ), - .hrdata (s0_hrdata[DATAWIDTH-1:0]), - .hsplit (s0_hsplit[15:0]), - .wbm_we_o (wbm_we_o), - .wbm_stb_o (wbm_stb_o), - .wbm_cyc_o (wbm_cyc_o), - .wbm_adr_o (wbm_adr_o[31:0]), - .wbm_dat_o (wbm_dat_o[DATAWIDTH-1:0]), - .wbm_sel_o (wbm_sel_o[3:0]), - .irq_o (s0_hirq), - - // Inputs - .hclk (leon_clk), - .hresetn (leon_clk_reset_n), - .hsel (s0_hsel), - .hready_ba (s0_hready), - .hwrite (s0_hwrite), - .hmastlock (s0_hmastlock), - .haddr (s0_haddr[31:0]), - .htrans (s0_htrans[1:0]), - .hsize (s0_hsize[2:0]), - .hburst (s0_hburst[2:0]), - .hwdata (s0_hwdata[DATAWIDTH-1:0]), - .hmaster (s0_hmaster[3:0]), - .wb_inta_i (wb_inta_i), - .wbm_ack_i (wbm_ack_i), - .wbm_rty_i (wbm_rty_i), - .wbm_err_i (wbm_err_i), - .wbm_dat_i (wbm_dat_i[DATAWIDTH-1:0])); - - simple_spi_top simple_spi_top - ( - // Outputs - .prdata_o (wbm_dat_i[7:0]), - .pirq_o (wb_inta_i), - .sck_o (sck_o), - .mosi_o (mosi_o), - .ssn_o (ssn_o[7:0]), - - // Inputs - .pclk_i (leon_clk), - .prst_i (!leon_clk_reset_n), - .psel_i (wbm_cyc_o), - .penable_i (wbm_stb_o), - .paddr_i (wbm_adr_o[2:0]), - .pwrite_i (wbm_we_o), - .pwdata_i (wbm_dat_o[7:0]), - .miso_i (miso_i)); - -endmodule // basic_passthru - - diff --git a/designs/basic_passthru/config.in b/designs/basic_passthru/config.in deleted file mode 100644 index 73f13d0b..00000000 --- a/designs/basic_passthru/config.in +++ /dev/null @@ -1,44 +0,0 @@ -mainmenu_name "Leon3 Hello World with passthrough ports" - -mainmenu_option next_comment - comment 'Synthesis ' - source lib/techmap/gencomp/tech.in -endmenu - -mainmenu_option next_comment - comment 'Clock generation' - source lib/techmap/clocks/clkgen.in -endmenu - -source lib/gaisler/leon3/leon3.in -source lib/grlib/amba/amba.in - -mainmenu_option next_comment - comment 'Debug Link ' - source lib/gaisler/uart/dcom.in - source lib/gaisler/jtag/jtag.in -endmenu - - -mainmenu_option next_comment -comment 'Passthrough Ports ' - source lib/praesum/ahbpassthru/ahbpassthru.in -endmenu - -mainmenu_option next_comment -comment 'On-chip ROM ' - source lib/gaisler/misc/ahbrom.in -endmenu - -mainmenu_option next_comment -comment 'UART, timer, GPIO controller, and interrupt controller' - source lib/gaisler/uart/uart1.in - source lib/gaisler/leon3/irqmp.in - source lib/gaisler/misc/gptimer.in - source lib/gaisler/misc/grgpio.in -endmenu - -mainmenu_option next_comment -comment 'VHDL Debugging ' - source lib/grlib/util/debug.in -endmenu diff --git a/designs/basic_passthru/config.vhd b/designs/basic_passthru/config.vhd deleted file mode 100644 index 2b8b94f6..00000000 --- a/designs/basic_passthru/config.vhd +++ /dev/null @@ -1,269 +0,0 @@ - - ------------------------------------------------------------------------------ --- LEON3 Demonstration design test bench configuration --- Copyright (C) 2009 Aeroflex Gaisler ------------------------------------------------------------------------------- - - -library techmap; -use techmap.gencomp.all; - -package config is --- Technology and synthesis options - constant CFG_FABTECH : integer := inferred; - constant CFG_MEMTECH : integer := inferred; - constant CFG_PADTECH : integer := inferred; - constant CFG_NOASYNC : integer := 0; - constant CFG_SCAN : integer := 0; --- Clock generator - constant CFG_CLKTECH : integer := inferred; - constant CFG_CLKMUL : integer := 2; - constant CFG_CLKDIV : integer := 2; - constant CFG_OCLKDIV : integer := 1; - constant CFG_OCLKBDIV : integer := 0; - constant CFG_OCLKCDIV : integer := 0; - constant CFG_PCIDLL : integer := 0; - constant CFG_PCISYSCLK: integer := 0; - constant CFG_CLK_NOFB : integer := 0; --- LEON3 processor core - constant CFG_LEON3 : integer := 1; - constant CFG_NCPU : integer := (1); - constant CFG_NWIN : integer := (8); - constant CFG_V8 : integer := 0 + 4*0; - constant CFG_MAC : integer := 0; - constant CFG_BP : integer := 0; - constant CFG_SVT : integer := 0; - constant CFG_RSTADDR : integer := 16#00000#; - constant CFG_LDDEL : integer := (1); - constant CFG_NOTAG : integer := 0; - constant CFG_NWP : integer := (0); - constant CFG_PWD : integer := 0*2; - constant CFG_FPU : integer := 0 + 16*0; - constant CFG_GRFPUSH : integer := 0; - constant CFG_ICEN : integer := 0; - constant CFG_ISETS : integer := 1; - constant CFG_ISETSZ : integer := 1; - constant CFG_ILINE : integer := 8; - constant CFG_IREPL : integer := 0; - constant CFG_ILOCK : integer := 0; - constant CFG_ILRAMEN : integer := 0; - constant CFG_ILRAMADDR: integer := 16#8E#; - constant CFG_ILRAMSZ : integer := 1; - constant CFG_DCEN : integer := 0; - constant CFG_DSETS : integer := 1; - constant CFG_DSETSZ : integer := 1; - constant CFG_DLINE : integer := 8; - constant CFG_DREPL : integer := 0; - constant CFG_DLOCK : integer := 0; - constant CFG_DSNOOP : integer := 0 + 0 + 4*0; - constant CFG_DFIXED : integer := 16#0#; - constant CFG_DLRAMEN : integer := 0; - constant CFG_DLRAMADDR: integer := 16#8F#; - constant CFG_DLRAMSZ : integer := 1; - constant CFG_MMUEN : integer := 0; - constant CFG_ITLBNUM : integer := 2; - constant CFG_DTLBNUM : integer := 2; - constant CFG_TLB_TYPE : integer := 1 + 0*2; - constant CFG_TLB_REP : integer := 1; - constant CFG_MMU_PAGE : integer := 0; - constant CFG_DSU : integer := 0; - constant CFG_ITBSZ : integer := 0; - constant CFG_ATBSZ : integer := 0; - constant CFG_LEON3FT_EN : integer := 0; - constant CFG_IUFT_EN : integer := 0; - constant CFG_FPUFT_EN : integer := 0; - constant CFG_RF_ERRINJ : integer := 0; - constant CFG_CACHE_FT_EN : integer := 0; - constant CFG_CACHE_ERRINJ : integer := 0; - constant CFG_LEON3_NETLIST: integer := 0; - constant CFG_DISAS : integer := 0 + 0; - constant CFG_PCLOW : integer := 2; --- AMBA settings - constant CFG_DEFMST : integer := (0); - constant CFG_RROBIN : integer := 0; - constant CFG_SPLIT : integer := 0; - constant CFG_AHBIO : integer := 16#FFF#; - constant CFG_APBADDR : integer := 16#800#; - constant CFG_AHB_MON : integer := 0; - constant CFG_AHB_MONERR : integer := 0; - constant CFG_AHB_MONWAR : integer := 0; - constant CFG_AHB_DTRACE : integer := 0; --- DSU UART - constant CFG_AHB_UART : integer := 0; --- JTAG based DSU interface - constant CFG_AHB_JTAG : integer := 0; --- Pass through port settings - constant CFG_AHBM_PT : integer := 0; -- Number of Master pass through ports - constant CFG_AHBS_PT : integer := 1; -- Number of Slave pass through ports - constant CFG_AHBM0_BAR0 : integer := 16#000#; -- BAR0 address - constant CFG_AHBM0_MASK0 : integer := 16#000#; -- BAR0 mask - constant CFG_AHBM0_BARTYPE0 : integer := 0; -- BAR0 Type '1' = ram, '0' = I/O - constant CFG_AHBM0_PF0 : integer := 0; -- BAR0 Prefetchable - constant CFG_AHBM0_CA0 : integer := 0; -- BAR0 Cacheable - constant CFG_AHBM0_BAR1 : integer := 16#000#; -- BAR1 address - constant CFG_AHBM0_MASK1 : integer := 16#000#; -- BAR1 mask - constant CFG_AHBM0_BARTYPE1 : integer := 0; -- BAR1 Type '1' = ram, '0' = I/O - constant CFG_AHBM0_PF1 : integer := 0; -- BAR1 Prefetchable - constant CFG_AHBM0_CA1 : integer := 0; -- BAR1 Cacheable - constant CFG_AHBM0_BAR2 : integer := 16#000#; -- BAR2 address - constant CFG_AHBM0_MASK2 : integer := 16#000#; -- BAR2 mask - constant CFG_AHBM0_BARTYPE2 : integer := 0; -- BAR2 Type '1' = ram, '0' = I/O - constant CFG_AHBM0_PF2 : integer := 0; -- BAR2 Prefetchable - constant CFG_AHBM0_CA2 : integer := 0; -- BAR2 Cacheable - constant CFG_AHBM0_BAR3 : integer := 16#000#; -- BAR3 address - constant CFG_AHBM0_MASK3 : integer := 16#000#; -- BAR3 mask - constant CFG_AHBM0_BARTYPE3 : integer := 0; -- BAR3 Type '1' = ram, '0' = I/O - constant CFG_AHBM0_PF3 : integer := 0; -- BAR3 Prefetchable - constant CFG_AHBM0_CA3 : integer := 0; -- BAR3 Cacheable - constant CFG_AHBM1_BAR0 : integer := 16#000#; -- BAR0 address - constant CFG_AHBM1_MASK0 : integer := 16#000#; -- BAR0 mask - constant CFG_AHBM1_BARTYPE0 : integer := 0; -- BAR0 Type '1' = ram, '0' = I/O - constant CFG_AHBM1_PF0 : integer := 0; -- BAR0 Prefetchable - constant CFG_AHBM1_CA0 : integer := 0; -- BAR0 Cacheable - constant CFG_AHBM1_BAR1 : integer := 16#000#; -- BAR1 address - constant CFG_AHBM1_MASK1 : integer := 16#000#; -- BAR1 mask - constant CFG_AHBM1_BARTYPE1 : integer := 0; -- BAR1 Type '1' = ram, '0' = I/O - constant CFG_AHBM1_PF1 : integer := 0; -- BAR1 Prefetchable - constant CFG_AHBM1_CA1 : integer := 0; -- BAR1 Cacheable - - constant CFG_AHBM1_BAR2 : integer := 16#000#; -- BAR2 address - constant CFG_AHBM1_MASK2 : integer := 16#000#; -- BAR2 mask - constant CFG_AHBM1_BARTYPE2 : integer := 0; -- BAR2 Type '1' = ram, '0' = I/O - constant CFG_AHBM1_PF2 : integer := 0; -- BAR2 Prefetchable - constant CFG_AHBM1_CA2 : integer := 0; -- BAR2 Cacheable - - constant CFG_AHBM1_BAR3 : integer := 16#000#; -- BAR3 address - constant CFG_AHBM1_MASK3 : integer := 16#000#; -- BAR3 mask - constant CFG_AHBM1_BARTYPE3 : integer := 0; -- BAR3 Type '1' = ram, '0' = I/O - constant CFG_AHBM1_PF3 : integer := 0; -- BAR3 Prefetchable - constant CFG_AHBM1_CA3 : integer := 0; -- BAR3 Cacheable - - constant CFG_AHBS0_BAR0 : integer := 16#A00#; -- BAR0 address - constant CFG_AHBS0_MASK0 : integer := 16#00F#; -- BAR0 mask - constant CFG_AHBS0_BARTYPE0 : integer := 0; -- BAR0 Type '1' = ram, '0' = I/O - constant CFG_AHBS0_PF0 : integer := 0; -- BAR0 Prefetchable - constant CFG_AHBS0_CA0 : integer := 0; -- BAR0 Cacheable - - constant CFG_AHBS0_BAR1 : integer := 16#000#; -- BAR1 address - constant CFG_AHBS0_MASK1 : integer := 16#000#; -- BAR1 mask - constant CFG_AHBS0_BARTYPE1 : integer := 0; -- BAR1 Type '1' = ram, '0' = I/O - constant CFG_AHBS0_PF1 : integer := 0; -- BAR1 Prefetchable - constant CFG_AHBS0_CA1 : integer := 0; -- BAR1 Cacheable - - constant CFG_AHBS0_BAR2 : integer := 16#000#; -- BAR2 address - constant CFG_AHBS0_MASK2 : integer := 16#000#; -- BAR2 mask - constant CFG_AHBS0_BARTYPE2 : integer := 0; -- BAR2 Type '1' = ram, '0' = I/O - constant CFG_AHBS0_PF2 : integer := 0; -- BAR2 Prefetchable - constant CFG_AHBS0_CA2 : integer := 0; -- BAR2 Cacheable - - constant CFG_AHBS0_BAR3 : integer := 16#000#; -- BAR3 address - constant CFG_AHBS0_MASK3 : integer := 16#000#; -- BAR3 mask - constant CFG_AHBS0_BARTYPE3 : integer := 0; -- BAR3 Type '1' = ram, '0' = I/O - constant CFG_AHBS0_PF3 : integer := 0; -- BAR3 Prefetchable - constant CFG_AHBS0_CA3 : integer := 0; -- BAR3 Cacheable - - constant CFG_AHBS1_BAR0 : integer := 16#000#; -- BAR0 address - constant CFG_AHBS1_MASK0 : integer := 16#000#; -- BAR0 mask - constant CFG_AHBS1_BARTYPE0 : integer := 0; -- BAR0 Type '1' = ram, '0' = I/O - constant CFG_AHBS1_PF0 : integer := 0; -- BAR0 Prefetchable - constant CFG_AHBS1_CA0 : integer := 0; -- BAR0 Cacheable - - constant CFG_AHBS1_BAR1 : integer := 16#000#; -- BAR1 address - constant CFG_AHBS1_MASK1 : integer := 16#000#; -- BAR1 mask - constant CFG_AHBS1_BARTYPE1 : integer := 0; -- BAR1 Type '1' = ram, '0' = I/O - constant CFG_AHBS1_PF1 : integer := 0; -- BAR1 Prefetchable - constant CFG_AHBS1_CA1 : integer := 0; -- BAR1 Cacheable - - constant CFG_AHBS1_BAR2 : integer := 16#000#; -- BAR2 address - constant CFG_AHBS1_MASK2 : integer := 16#000#; -- BAR2 mask - constant CFG_AHBS1_BARTYPE2 : integer := 0; -- BAR2 Type '1' = ram, '0' = I/O - constant CFG_AHBS1_PF2 : integer := 0; -- BAR2 Prefetchable - constant CFG_AHBS1_CA2 : integer := 0; -- BAR2 Cacheable - - constant CFG_AHBS1_BAR3 : integer := 16#000#; -- BAR3 address - constant CFG_AHBS1_MASK3 : integer := 16#000#; -- BAR3 mask - constant CFG_AHBS1_BARTYPE3 : integer := 0; -- BAR3 Type '1' = ram, '0' = I/O - constant CFG_AHBS1_PF3 : integer := 0; -- BAR3 Prefetchable - constant CFG_AHBS1_CA3 : integer := 0; -- BAR3 Cacheable - - constant CFG_AHBS2_BAR0 : integer := 16#000#; -- BAR0 address - constant CFG_AHBS2_MASK0 : integer := 16#000#; -- BAR0 mask - constant CFG_AHBS2_BARTYPE0 : integer := 0; -- BAR0 Type '1' = ram, '0' = I/O - constant CFG_AHBS2_PF0 : integer := 0; -- BAR0 Prefetchable - constant CFG_AHBS2_CA0 : integer := 0; -- BAR0 Cacheable - - constant CFG_AHBS2_BAR1 : integer := 16#000#; -- BAR1 address - constant CFG_AHBS2_MASK1 : integer := 16#000#; -- BAR1 mask - constant CFG_AHBS2_BARTYPE1 : integer := 0; -- BAR1 Type '1' = ram, '0' = I/O - constant CFG_AHBS2_PF1 : integer := 0; -- BAR1 Prefetchable - constant CFG_AHBS2_CA1 : integer := 0; -- BAR1 Cacheable - - constant CFG_AHBS2_BAR2 : integer := 16#000#; -- BAR2 address - constant CFG_AHBS2_MASK2 : integer := 16#000#; -- BAR2 mask - constant CFG_AHBS2_BARTYPE2 : integer := 0; -- BAR2 Type '1' = ram, '0' = I/O - constant CFG_AHBS2_PF2 : integer := 0; -- BAR2 Prefetchable - constant CFG_AHBS2_CA2 : integer := 0; -- BAR2 Cacheable - - constant CFG_AHBS2_BAR3 : integer := 16#000#; -- BAR3 address - constant CFG_AHBS2_MASK3 : integer := 16#000#; -- BAR3 mask - constant CFG_AHBS2_BARTYPE3 : integer := 0; -- BAR3 Type '1' = ram, '0' = I/O - constant CFG_AHBS2_PF3 : integer := 0; -- BAR3 Prefetchable - constant CFG_AHBS2_CA3 : integer := 0; -- BAR3 Cacheable - - constant CFG_AHBS3_BAR0 : integer := 16#000#; -- BAR0 address - constant CFG_AHBS3_MASK0 : integer := 16#000#; -- BAR0 mask - constant CFG_AHBS3_BARTYPE0 : integer := 0; -- BAR0 Type '1' = ram, '0' = I/O - constant CFG_AHBS3_PF0 : integer := 0; -- BAR0 Prefetchable - constant CFG_AHBS3_CA0 : integer := 0; -- BAR0 Cacheable - - constant CFG_AHBS3_BAR1 : integer := 16#000#; -- BAR1 address - constant CFG_AHBS3_MASK1 : integer := 16#000#; -- BAR1 mask - constant CFG_AHBS3_BARTYPE1 : integer := 0; -- BAR1 Type '1' = ram, '0' = I/O - constant CFG_AHBS3_PF1 : integer := 0; -- BAR1 Prefetchable - constant CFG_AHBS3_CA1 : integer := 0; -- BAR1 Cacheable - - constant CFG_AHBS3_BAR2 : integer := 16#000#; -- BAR2 address - constant CFG_AHBS3_MASK2 : integer := 16#000#; -- BAR2 mask - constant CFG_AHBS3_BARTYPE2 : integer := 0; -- BAR2 Type '1' = ram, '0' = I/O - constant CFG_AHBS3_PF2 : integer := 0; -- BAR2 Prefetchable - constant CFG_AHBS3_CA2 : integer := 0; -- BAR2 Cacheable - - constant CFG_AHBS3_BAR3 : integer := 16#000#; -- BAR3 address - constant CFG_AHBS3_MASK3 : integer := 16#000#; -- BAR3 mask - constant CFG_AHBS3_BARTYPE3 : integer := 0; -- BAR3 Type '1' = ram, '0' = I/O - constant CFG_AHBS3_PF3 : integer := 0; -- BAR3 Prefetchable - constant CFG_AHBS3_CA3 : integer := 0; -- BAR3 Cacheable --- AHB ROM - constant CFG_AHBROMEN : integer := 1; - constant CFG_AHBROPIP : integer := 0; - constant CFG_AHBRODDR : integer := 16#000#; - constant CFG_ROMADDR : integer := 16#100#; - constant CFG_ROMMASK : integer := 16#E00# + 16#100#; - --- UART 1 - constant CFG_UART1_ENABLE : integer := 1; - constant CFG_UART1_FIFO : integer := 1; - --- LEON3 interrupt controller - constant CFG_IRQ3_ENABLE : integer := 0; - constant CFG_IRQ3_NSEC : integer := 0; - --- Modular timer - constant CFG_GPT_ENABLE : integer := 0; - constant CFG_GPT_NTIM : integer := 1; - constant CFG_GPT_SW : integer := 8; - constant CFG_GPT_TW : integer := 8; - constant CFG_GPT_IRQ : integer := 8; - constant CFG_GPT_SEPIRQ : integer := 0; - constant CFG_GPT_WDOGEN : integer := 0; - constant CFG_GPT_WDOG : integer := 16#0#; - --- GPIO port - constant CFG_GRGPIO_ENABLE : integer := 1; - constant CFG_GRGPIO_IMASK : integer := 16#0000#; - constant CFG_GRGPIO_WIDTH : integer := (32); - --- GRLIB debugging - constant CFG_DUART : integer := 0; -end; diff --git a/designs/basic_passthru/leon3mp_core.vhd b/designs/basic_passthru/leon3mp_core.vhd deleted file mode 100644 index 738a2115..00000000 --- a/designs/basic_passthru/leon3mp_core.vhd +++ /dev/null @@ -1,833 +0,0 @@ ------------------------------------------------------------------------------- --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------- --- Default address Mapping for the core: --- Leon3: Master address -library ieee; -use ieee.std_logic_1164.all; - -library grlib; -use grlib.amba.all; -use grlib.stdlib.all; -use grlib.devices.all; - -library gaisler; -use gaisler.leon3.all; -use gaisler.misc.all; -use gaisler.uart.all; -use gaisler.jtag.all; - -library praesum; -use praesum.ahbpassthru_vhdl.all; - -use work.config.all; - -entity leon3mp_core is - generic ( - fabtech : integer := CFG_FABTECH; - memtech : integer := CFG_MEMTECH; - padtech : integer := CFG_PADTECH; - clktech : integer := CFG_CLKTECH; - disas : integer := CFG_DISAS; -- Enable disassembly to console - pclow : integer := CFG_PCLOW; - CFG_AHBDW : integer := 64; - CFG_AHB_ACDM : integer := 1; - - ahbm_pt : integer := CFG_AHBM_PT; -- Number of master passthru ports - ahbs_pt : integer := CFG_AHBS_PT; -- Number of slave passthru ports - m0_haddr0 : integer := CFG_AHBM0_BAR0; - m0_hmask0 : integer := CFG_AHBM0_MASK0; - m0_htype0 : integer := CFG_AHBM0_BARTYPE0; - m0_pf0 : integer := CFG_AHBM0_PF0; - m0_ca0 : integer := CFG_AHBM0_CA0; - m0_haddr1 : integer := CFG_AHBM0_BAR1; - m0_hmask1 : integer := CFG_AHBM0_MASK1; - m0_htype1 : integer := CFG_AHBM0_BARTYPE1; - m0_pf1 : integer := CFG_AHBM0_PF1; - m0_ca1 : integer := CFG_AHBM0_CA1; - m0_haddr2 : integer := CFG_AHBM0_BAR2; - m0_hmask2 : integer := CFG_AHBM0_MASK2; - m0_htype2 : integer := CFG_AHBM0_BARTYPE2; - m0_pf2 : integer := CFG_AHBM0_PF2; - m0_ca2 : integer := CFG_AHBM0_CA2; - m0_haddr3 : integer := CFG_AHBM0_BAR3; - m0_hmask3 : integer := CFG_AHBM0_MASK3; - m0_htype3 : integer := CFG_AHBM0_BARTYPE3; - m0_pf3 : integer := CFG_AHBM0_PF3; - m0_ca3 : integer := CFG_AHBM0_CA3; - m1_haddr0 : integer := CFG_AHBM1_BAR0; - m1_hmask0 : integer := CFG_AHBM1_MASK0; - m1_htype0 : integer := CFG_AHBM1_BARTYPE0; - m1_pf0 : integer := CFG_AHBM1_PF0; - m1_ca0 : integer := CFG_AHBM1_CA0; - m1_haddr1 : integer := CFG_AHBM1_BAR1; - m1_hmask1 : integer := CFG_AHBM1_MASK1; - m1_htype1 : integer := CFG_AHBM1_BARTYPE1; - m1_pf1 : integer := CFG_AHBM1_PF1; - m1_ca1 : integer := CFG_AHBM1_CA1; - m1_haddr2 : integer := CFG_AHBM1_BAR2; - m1_hmask2 : integer := CFG_AHBM1_MASK2; - m1_htype2 : integer := CFG_AHBM1_BARTYPE2; - m1_pf2 : integer := CFG_AHBM1_PF2; - m1_ca2 : integer := CFG_AHBM1_CA2; - m1_haddr3 : integer := CFG_AHBM1_BAR3; - m1_hmask3 : integer := CFG_AHBM1_MASK3; - m1_htype3 : integer := CFG_AHBM1_BARTYPE3; - m1_pf3 : integer := CFG_AHBM1_PF3; - m1_ca3 : integer := CFG_AHBM1_CA3; - s0_haddr0 : integer := CFG_AHBS0_BAR0; - s0_hmask0 : integer := CFG_AHBS0_MASK0; - s0_htype0 : integer := CFG_AHBS0_BARTYPE0; - s0_pf0 : integer := CFG_AHBS0_PF0; - s0_ca0 : integer := CFG_AHBS0_CA0; - s0_haddr1 : integer := CFG_AHBS0_BAR1; - s0_hmask1 : integer := CFG_AHBS0_MASK1; - s0_htype1 : integer := CFG_AHBS0_BARTYPE1; - s0_pf1 : integer := CFG_AHBS0_PF1; - s0_ca1 : integer := CFG_AHBS0_CA1; - s0_haddr2 : integer := CFG_AHBS0_BAR2; - s0_hmask2 : integer := CFG_AHBS0_MASK2; - s0_htype2 : integer := CFG_AHBS0_BARTYPE2; - s0_pf2 : integer := CFG_AHBS0_PF2; - s0_ca2 : integer := CFG_AHBS0_CA2; - s0_haddr3 : integer := CFG_AHBS0_BAR3; - s0_hmask3 : integer := CFG_AHBS0_MASK3; - s0_htype3 : integer := CFG_AHBS0_BARTYPE3; - s0_pf3 : integer := CFG_AHBS0_PF3; - s0_ca3 : integer := CFG_AHBS0_CA3; - s1_haddr0 : integer := CFG_AHBS1_BAR0; - s1_hmask0 : integer := CFG_AHBS1_MASK0; - s1_htype0 : integer := CFG_AHBS1_BARTYPE0; - s1_pf0 : integer := CFG_AHBS1_PF0; - s1_ca0 : integer := CFG_AHBS1_CA0; - s1_haddr1 : integer := CFG_AHBS1_BAR1; - s1_hmask1 : integer := CFG_AHBS1_MASK1; - s1_htype1 : integer := CFG_AHBS1_BARTYPE1; - s1_pf1 : integer := CFG_AHBS1_PF1; - s1_ca1 : integer := CFG_AHBS1_CA1; - s1_haddr2 : integer := CFG_AHBS1_BAR2; - s1_hmask2 : integer := CFG_AHBS1_MASK2; - s1_htype2 : integer := CFG_AHBS1_BARTYPE2; - s1_pf2 : integer := CFG_AHBS1_PF2; - s1_ca2 : integer := CFG_AHBS1_CA2; - s1_haddr3 : integer := CFG_AHBS1_BAR3; - s1_hmask3 : integer := CFG_AHBS1_MASK3; - s1_htype3 : integer := CFG_AHBS1_BARTYPE3; - s1_pf3 : integer := CFG_AHBS1_PF3; - s1_ca3 : integer := CFG_AHBS1_CA3; - s2_haddr0 : integer := CFG_AHBS2_BAR0; - s2_hmask0 : integer := CFG_AHBS2_MASK0; - s2_htype0 : integer := CFG_AHBS2_BARTYPE0; - s2_pf0 : integer := CFG_AHBS2_PF0; - s2_ca0 : integer := CFG_AHBS2_CA0; - s2_haddr1 : integer := CFG_AHBS2_BAR1; - s2_hmask1 : integer := CFG_AHBS2_MASK1; - s2_htype1 : integer := CFG_AHBS2_BARTYPE1; - s2_pf1 : integer := CFG_AHBS2_PF1; - s2_ca1 : integer := CFG_AHBS2_CA1; - s2_haddr2 : integer := CFG_AHBS2_BAR2; - s2_hmask2 : integer := CFG_AHBS2_MASK2; - s2_htype2 : integer := CFG_AHBS2_BARTYPE2; - s2_pf2 : integer := CFG_AHBS2_PF2; - s2_ca2 : integer := CFG_AHBS2_CA2; - s2_haddr3 : integer := CFG_AHBS2_BAR3; - s2_hmask3 : integer := CFG_AHBS2_MASK3; - s2_htype3 : integer := CFG_AHBS2_BARTYPE3; - s2_pf3 : integer := CFG_AHBS2_PF3; - s2_ca3 : integer := CFG_AHBS2_CA3; - s3_haddr0 : integer := CFG_AHBS3_BAR0; - s3_hmask0 : integer := CFG_AHBS3_MASK0; - s3_htype0 : integer := CFG_AHBS3_BARTYPE0; - s3_pf0 : integer := CFG_AHBS3_PF0; - s3_ca0 : integer := CFG_AHBS3_CA0; - s3_haddr1 : integer := CFG_AHBS3_BAR1; - s3_hmask1 : integer := CFG_AHBS3_MASK1; - s3_htype1 : integer := CFG_AHBS3_BARTYPE1; - s3_pf1 : integer := CFG_AHBS3_PF1; - s3_ca1 : integer := CFG_AHBS3_CA1; - s3_haddr2 : integer := CFG_AHBS3_BAR2; - s3_hmask2 : integer := CFG_AHBS3_MASK2; - s3_htype2 : integer := CFG_AHBS3_BARTYPE2; - s3_pf2 : integer := CFG_AHBS3_PF2; - s3_ca2 : integer := CFG_AHBS3_CA2; - s3_haddr3 : integer := CFG_AHBS3_BAR3; - s3_hmask3 : integer := CFG_AHBS3_MASK3; - s3_htype3 : integer := CFG_AHBS3_BARTYPE3; - s3_pf3 : integer := CFG_AHBS3_PF3; - s3_ca3 : integer := CFG_AHBS3_CA3 - ); - port ( - rstn : in std_ulogic; - clk : in std_ulogic; - dsutx : out std_ulogic; -- DSU tx data - dsurx : in std_ulogic; -- DSU rx data - txd1 : out std_ulogic; -- UART1 tx data - rxd1 : in std_ulogic; -- UART1 rx data - dsubreak : in std_ulogic; -- Break signal to DSU - dsuactive : out std_ulogic; -- DSU Active indicator - gpio_in : in std_logic_vector(31 downto 0); -- GPIO In - gpio_out : out std_logic_vector(31 downto 0); -- GPIO Out - gpio_oen : out std_logic_vector(31 downto 0); -- GPIO output enable - - -- Master #0 pass through - m0_hgrant : out std_logic; --bus grant - m0_hready : out std_logic; --transfer done - m0_hresp : out std_logic_vector(1 downto 0); --response type - m0_hrdata : out std_logic_vector(AHBDW-1 downto 0); --read data bus - m0_hcache : out std_logic; --cacheable - m0_hirq : out std_logic; --interrupt - m0_hbusreq : in std_logic; --bus request - m0_hlock : in std_logic; --lock request - m0_htrans : in std_logic_vector(1 downto 0); --transfer type - m0_haddr : in std_logic_vector(31 downto 0); --address bus - m0_hwrite : in std_logic; --read/write - m0_hsize : in std_logic_vector(2 downto 0); --transfer size - m0_hburst : in std_logic_vector(2 downto 0); --burst type - m0_hprot : in std_logic_vector(3 downto 0); --protection control - m0_hwdata : in std_logic_vector(AHBDW-1 downto 0); --write data bus - m0_hirq_o : in std_logic; --interrupt - - -- Master #1 pass through - m1_hgrant : out std_logic; --bus grant - m1_hready : out std_logic; --transfer done - m1_hresp : out std_logic_vector(1 downto 0); --response type - m1_hrdata : out std_logic_vector(AHBDW-1 downto 0); --read data bus - m1_hcache : out std_logic; --cacheable - m1_hirq : out std_logic; --interrupt - m1_hbusreq : in std_logic; --bus request - m1_hlock : in std_logic; --lock request - m1_htrans : in std_logic_vector(1 downto 0); --transfer type - m1_haddr : in std_logic_vector(31 downto 0); --address bus - m1_hwrite : in std_logic; --read/write - m1_hsize : in std_logic_vector(2 downto 0); --transfer size - m1_hburst : in std_logic_vector(2 downto 0); --burst type - m1_hprot : in std_logic_vector(3 downto 0); --protection control - m1_hwdata : in std_logic_vector(AHBDW-1 downto 0); --write data bus - m1_hirq_o : in std_logic; --interrupt - - -- Slave #0 pass through - s0_hsel : out std_logic; --slave select - s0_haddr : out std_logic_vector(31 downto 0); --slave address (byte addressing) - s0_hwrite : out std_logic; --read/write - s0_htrans : out std_logic_vector(1 downto 0); --transfer type - s0_hsize : out std_logic_vector(2 downto 0); --transfer size - s0_hburst : out std_logic_vector(2 downto 0); --burst type - s0_hwdata : out std_logic_vector(AHBDW-1 downto 0); --write data - s0_hprot : out std_logic_vector(3 downto 0); --protection control - s0_hready : out std_logic; --transfer done - s0_hmaster : out std_logic_vector(3 downto 0); --current master - s0_hmastlock : out std_logic; --locked access - s0_hmbsel : out std_logic_vector(0 to NAHBAMR-1); --memory bank select - s0_hcache : out std_logic; --cacheable - s0_hirq : out std_logic; --interrupt - s0_hready_o : in std_logic; --transfer done - s0_hresp : in std_logic_vector(1 downto 0); --response type - s0_hrdata : in std_logic_vector(AHBDW-1 downto 0); --read data - s0_hsplit : in std_logic_vector(15 downto 0); --split completion - s0_hcache_o : in std_logic; --cacheable - s0_hirq_o : in std_logic; --interrupt - - -- Slave #1 pass through - s1_hsel : out std_logic; --slave select - s1_haddr : out std_logic_vector(31 downto 0); --slave address (byte addressing) - s1_hwrite : out std_logic; --read/write - s1_htrans : out std_logic_vector(1 downto 0); --transfer type - s1_hsize : out std_logic_vector(2 downto 0); --transfer size - s1_hburst : out std_logic_vector(2 downto 0); --burst type - s1_hwdata : out std_logic_vector(AHBDW-1 downto 0); --write data - s1_hprot : out std_logic_vector(3 downto 0); --protection control - s1_hready : out std_logic; --transfer done - s1_hmaster : out std_logic_vector(3 downto 0); --current master - s1_hmastlock : out std_logic; --locked access - s1_hmbsel : out std_logic_vector(0 to NAHBAMR-1); --memory bank select - s1_hcache : out std_logic; --cacheable - s1_hirq : out std_logic; --interrupt - s1_hready_o : in std_logic; --transfer done - s1_hresp : in std_logic_vector(1 downto 0); --response type - s1_hrdata : in std_logic_vector(AHBDW-1 downto 0); --read data - s1_hsplit : in std_logic_vector(15 downto 0); --split completion - s1_hcache_o : in std_logic; --cacheable - s1_hirq_o : in std_logic; --interrupt - - -- Slave #2 pass through - s2_hsel : out std_logic; --slave select - s2_haddr : out std_logic_vector(31 downto 0); --slave address (byte addressing) - s2_hwrite : out std_logic; --read/write - s2_htrans : out std_logic_vector(1 downto 0); --transfer type - s2_hsize : out std_logic_vector(2 downto 0); --transfer size - s2_hburst : out std_logic_vector(2 downto 0); --burst type - s2_hwdata : out std_logic_vector(AHBDW-1 downto 0); --write data - s2_hprot : out std_logic_vector(3 downto 0); --protection control - s2_hready : out std_logic; --transfer done - s2_hmaster : out std_logic_vector(3 downto 0); --current master - s2_hmastlock : out std_logic; --locked access - s2_hmbsel : out std_logic_vector(0 to NAHBAMR-1); --memory bank select - s2_hcache : out std_logic; --cacheable - s2_hirq : out std_logic; --interrupt - s2_hready_o : in std_logic; --transfer done - s2_hresp : in std_logic_vector(1 downto 0); --response type - s2_hrdata : in std_logic_vector(AHBDW-1 downto 0); --read data - s2_hsplit : in std_logic_vector(15 downto 0); --split completion - s2_hcache_o : in std_logic; --cacheable - s2_hirq_o : in std_logic; --interrupt - - -- Slave #3 pass through - s3_hsel : out std_logic; --slave select - s3_haddr : out std_logic_vector(31 downto 0); --slave address (byte addressing) - s3_hwrite : out std_logic; --read/write - s3_htrans : out std_logic_vector(1 downto 0); --transfer type - s3_hsize : out std_logic_vector(2 downto 0); --transfer size - s3_hburst : out std_logic_vector(2 downto 0); --burst type - s3_hwdata : out std_logic_vector(AHBDW-1 downto 0); --write data - s3_hprot : out std_logic_vector(3 downto 0); --protection control - s3_hready : out std_logic; --transfer done - s3_hmaster : out std_logic_vector(3 downto 0); --current master - s3_hmastlock : out std_logic; --locked access - s3_hmbsel : out std_logic_vector(0 to NAHBAMR-1); --memory bank select - s3_hcache : out std_logic; --cacheable - s3_hirq : out std_logic; --interrupt - s3_hready_o : in std_logic; --transfer done - s3_hresp : in std_logic_vector(1 downto 0); --response type - s3_hrdata : in std_logic_vector(AHBDW-1 downto 0); --read data - s3_hsplit : in std_logic_vector(15 downto 0); --split completion - s3_hcache_o : in std_logic; --cacheable - s3_hirq_o : in std_logic --interrupt - - ); -end; - -architecture rtl of leon3mp_core is - -constant NCPU : integer := 1; -constant nahbm : integer := ahbm_pt + 2; -- Total number of master ports -constant nahbs : integer := ahbs_pt + 7; -- Total number of slave ports - -constant m0_hindex : integer := 2; -- master passthru port #0 -constant m1_hindex : integer := 3; -- master passtrhu port #1 -constant s0_hindex : integer := 7; -- Slave passthru port #0 -constant s1_hindex : integer := 8; -- Slave passthru port #1 -constant s2_hindex : integer := 9; -- Slave passthru port #2 -constant s3_hindex : integer := 10; -- Slave passthru port #3 - -signal dsui : dsu_in_type; -signal dsuo : dsu_out_type; -signal dbgi : l3_debug_in_vector(0 to NCPU-1); -signal dbgo : l3_debug_out_vector(0 to NCPU-1); -signal apbi : apb_slv_in_type; -signal apbo : apb_slv_out_vector := (others => apb_none); -signal ahbsi : ahb_slv_in_type; -signal ahbso : ahb_slv_out_vector := (others => ahbs_none); -signal ahbmi : ahb_mst_in_type; -signal ahbmo : ahb_mst_out_vector := (others => ahbm_none); - -signal dui : uart_in_type; -signal duo : uart_out_type; - -signal tck, tms, tdi, tdo : std_ulogic; -signal irqn, lclk, gnd : std_logic; - -signal bus_error : std_logic_vector(1 downto 0); - -signal irqi : irq_in_vector(0 to NCPU-1); -signal irqo : irq_out_vector(0 to NCPU-1); - -signal gpioi : gpio_in_type; -signal gpioo : gpio_out_type; - -begin - ----------------------------------------------------------------------- ---- LEON3 processor and DSU ----------------------------------------- ----------------------------------------------------------------------- - - -- hindex 0, Master 0, no MEMBAR - l3 : if CFG_LEON3 = 1 generate - cpu : for i in 0 to NCPU-1 generate - u0 : leon3s -- LEON3 processor - generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, - 0, CFG_MAC, pclow, 0, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, - CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, - CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, - CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, - CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, NCPU-1) - port map (clk, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, - irqi(i), irqo(i), dbgi(i), dbgo(i)); - end generate; - bus_error(0) <= not dbgo(0).error; - --- hindex 2, slave 2, MEMBAR: x900, 256MByte - dsugen : if CFG_DSU = 1 generate - dsu0 : dsu3 -- LEON3 Debug Support Unit - generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#, - ncpu => NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ) - port map (rstn, clk, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo); - dsui.enable <= '1'; --- dsui.break <= gpioo.val(11); -- South Button --- led(4) <= dsuo.active; - dsui.break <= dsubreak; - dsuactive <= dsuo.active; - end generate; - end generate; - - nodsu : if CFG_DSU = 0 generate - dsuo.tstop <= '0'; dsuo.active <= '0'; - end generate; - --- hindex 0,1. APB 7 - dcomgen : if CFG_AHB_UART = 1 generate - dcom0: ahbuart -- Debug UART - generic map (hindex => NCPU, pindex => 7, paddr => 7) - port map (rstn, clk, dui, duo, apbi, apbo(7), ahbmi, ahbmo(NCPU)); - dui.rxd <= rxd1; - end generate; - txd1 <= duo.txd; - --- hindex 0, 1 - ahbjtaggen0 :if CFG_AHB_JTAG = 1 generate - ahbjtag0 : ahbjtag generic map(tech => fabtech, hindex => NCPU) - port map(rstn, clk, tck, tms, tdi, tdo, ahbmi, ahbmo(NCPU), - open, open, open, open, open, open, open, gnd); - end generate; - ------------------------------------------------------------------------ ---- AHB ROM ---------------------------------------------------------- ------------------------------------------------------------------------ - --- hindex 6, slave 6, MEMBAR: 0x000, 512MByte - bpromgen : if CFG_AHBROMEN /= 0 generate - brom : entity work.ahbrom - generic map (hindex => 6, haddr => CFG_AHBRODDR, pipe => CFG_AHBROPIP) - port map ( rstn, clk, ahbsi, ahbso(6)); - end generate; - nobpromgen : if CFG_AHBROMEN = 0 generate - ahbso(6) <= ahbs_none; - end generate; - ----------------------------------------------------------------------- ---- AHB CONTROLLER -------------------------------------------------- ----------------------------------------------------------------------- - - ahb0 : ahbctrl -- AHB arbiter/multiplexer - generic map (nahbm => nahbm, nahbs => nahbs, ioen => 0) - port map (rstn, clk, ahbmi, ahbmo, ahbsi, ahbso); - ----------------------------------------------------------------------- ---- AHB/APB Bridge ------------------------------------------------- ----------------------------------------------------------------------- - --- hindex 0, Address x800 - apb0 : apbctrl -- AHB/APB bridge - generic map (hindex => 0, haddr => 16#800#) - port map (rstn, clk, ahbsi, ahbso(0), apbi, apbo ); - - irqctrl : if CFG_IRQ3_ENABLE /= 0 generate - irqctrl0 : irqmp -- interrupt controller - generic map (pindex => 2, paddr => 2, ncpu => NCPU) - port map (rstn, clk, apbi, apbo(2), irqo, irqi); - end generate; - irq3 : if CFG_IRQ3_ENABLE = 0 generate - x : for i in 0 to NCPU-1 generate - irqi(i).irl <= "0000"; - end generate; - apbo(2) <= apb_none; - end generate; - - ----------------------------------------------------------------------- ---- GPIO on APB ----------------------------------------------------- ----------------------------------------------------------------------- - - gpio0 : if CFG_GRGPIO_ENABLE /= 0 generate -- GPIO unit - grgpio0: grgpio - generic map(pindex => 3, paddr => 3, imask => 16#00F0#, nbits => 31) - port map(rst => rstn, clk => clk, apbi => apbi, apbo => apbo(3), - gpioi => gpioi, gpioo => gpioo); - gpioi.din <= gpio_in; - gpio_out <= gpioo.dout; - gpio_oen <= gpioo.oen; - - -- type gpio_in_type is record - -- din : std_logic_vector(31 downto 0); - -- sig_in : std_logic_vector(31 downto 0); - -- sig_en : std_logic_vector(31 downto 0); - --end record; - - --type gpio_out_type is record - -- dout : std_logic_vector(31 downto 0); - -- oen : std_logic_vector(31 downto 0); - -- val : std_logic_vector(31 downto 0); - -- sig_out : std_logic_vector(31 downto 0); - --end record; - end generate; - nogpiogen: if CFG_GRGPIO_ENABLE = 0 generate - gpio_out <= (others => '0'); - gpio_oen <= (others => '0'); - end generate; - ----------------------------------------------------------------------- ---- AHB Master Passthrough ------------------------------------------ ----------------------------------------------------------------------- - - ahbpassthru_mastergen1 : if ahbm_pt >= 1 generate - - thru1 : ahbpassthru_master_vhdl - generic map (hindex_set => m0_hindex, - hbaseaddr => m0_haddr0, - hmask => m0_hmask0, - htype => m0_htype0, - PREFETCHABLE => m0_pf0, - CACHEABLE => m0_ca0, - AHBDW => AHBDW) - port map ( - -- inputs - hgrant => ahbmi.hgrant(m0_hindex), - hready => ahbmi.hready, - hresp => ahbmi.hresp, - hrdata => ahbmi.hrdata, - hcache => ahbmi.hcache, - hirq => ahbmi.hirq(m0_hindex), - -- outputs - hbusreq => ahbmo(m0_hindex).hbusreq, - hlock => ahbmo(m0_hindex).hlock, - htrans => ahbmo(m0_hindex).htrans, - haddr => ahbmo(m0_hindex).haddr, - hwrite => ahbmo(m0_hindex).hwrite, - hsize => ahbmo(m0_hindex).hsize, - hburst => ahbmo(m0_hindex).hburst, - hprot => ahbmo(m0_hindex).hprot, - hwdata => ahbmo(m0_hindex).hwdata, - hirq_o => ahbmo(m0_hindex).hirq(m0_hindex), - hconfig => ahbmo(m0_hindex).hconfig, - hindex => ahbmo(m0_hindex).hindex, - -- inputs - pt_hgrant => m0_hgrant, - pt_hready => m0_hready, - pt_hresp => m0_hresp, - pt_hrdata => m0_hrdata, - pt_hcache => m0_hcache, - pt_hirq => m0_hirq, - -- outputs - pt_hbusreq => m0_hbusreq, - pt_hlock => m0_hlock, - pt_htrans => m0_htrans, - pt_haddr => m0_haddr, - pt_hwrite => m0_hwrite, - pt_hsize => m0_hsize, - pt_hburst => m0_hburst, - pt_hprot => m0_hprot, - pt_hwdata => m0_hwdata, - pt_hirq_o => m0_hirq_o); - end generate; - - ahbpassthru_mastergen2: if ahbm_pt = 2 generate - - thru2 : ahbpassthru_master_vhdl - generic map (hindex_set => m1_hindex, - hbaseaddr => m1_haddr0, - hmask => m1_hmask0, - htype => m1_htype0, - PREFETCHABLE => m1_pf0, - CACHEABLE => m1_ca0, - AHBDW => AHBDW) - port map ( - -- inputs - hgrant => ahbmi.hgrant(m1_hindex), - hready => ahbmi.hready, - hresp => ahbmi.hresp, - hrdata => ahbmi.hrdata, - hcache => ahbmi.hcache, - hirq => ahbmi.hirq(m1_hindex), - -- outputs - hbusreq => ahbmo(m1_hindex).hbusreq, - hlock => ahbmo(m1_hindex).hlock, - htrans => ahbmo(m1_hindex).htrans, - haddr => ahbmo(m1_hindex).haddr, - hwrite => ahbmo(m1_hindex).hwrite, - hsize => ahbmo(m1_hindex).hsize, - hburst => ahbmo(m1_hindex).hburst, - hprot => ahbmo(m1_hindex).hprot, - hwdata => ahbmo(m1_hindex).hwdata, - hirq_o => ahbmo(m1_hindex).hirq(m1_hindex), - hconfig => ahbmo(m1_hindex).hconfig, - hindex => ahbmo(m1_hindex).hindex, - -- pass through outputs - pt_hgrant => m1_hgrant, - pt_hready => m1_hready, - pt_hresp => m1_hresp, - pt_hrdata => m1_hrdata, - pt_hcache => m1_hcache, - pt_hirq => m1_hirq, - -- pass through inputs - pt_hbusreq => m1_hbusreq, - pt_hlock => m1_hlock, - pt_htrans => m1_htrans, - pt_haddr => m1_haddr, - pt_hwrite => m1_hwrite, - pt_hsize => m1_hsize, - pt_hburst => m1_hburst, - pt_hprot => m1_hprot, - pt_hwdata => m1_hwdata, - pt_hirq_o => m1_hirq_o); - end generate; - - ----------------------------------------------------------------------- ---- AHB Slave Passthrough ------------------------------------------- ----------------------------------------------------------------------- - - ahbpassthru_slavegen1 : if ahbs_pt >= 1 generate - - thru1 : ahbpassthru_slave_vhdl - generic map (hindex_set => s0_hindex, - hbaseaddr => s0_haddr0, - hmask => s0_hmask0, - htype => s0_htype0, - PREFETCHABLE => s0_pf0, - CACHEABLE => s0_ca0, - NAHBAMR => NAHBAMR, - AHBDW => AHBDW) - port map ( - -- inputs - hsel => ahbsi.hsel(s0_hindex), - haddr => ahbsi.haddr, - hwrite => ahbsi.hwrite, - htrans => ahbsi.htrans, - hsize => ahbsi.hsize, - hburst => ahbsi.hburst, - hwdata => ahbsi.hwdata, - hprot => ahbsi.hprot, - hready => ahbsi.hready, - hmaster => ahbsi.hmaster, - hmastlock => ahbsi.hmastlock, - hmbsel => ahbsi.hmbsel, - hcache => ahbsi.hcache, - hirq => ahbsi.hirq(s0_hindex), - -- outputs - hready_o => ahbso(s0_hindex).hready, - hresp => ahbso(s0_hindex).hresp, - hrdata => ahbso(s0_hindex).hrdata, - hsplit => ahbso(s0_hindex).hsplit, - hcache_o => ahbso(s0_hindex).hcache, - hirq_o => ahbso(s0_hindex).hirq(s0_hindex), - hconfig => ahbso(s0_hindex).hconfig, - hindex => ahbso(s0_hindex).hindex, - -- pass through outputs - pt_hsel => s0_hsel, - pt_haddr => s0_haddr, - pt_hwrite => s0_hwrite, - pt_htrans => s0_htrans, - pt_hsize => s0_hsize, - pt_hburst => s0_hburst, - pt_hwdata => s0_hwdata, - pt_hprot => s0_hprot, - pt_hready => s0_hready, - pt_hmaster => s0_hmaster, - pt_hmastlock => s0_hmastlock, - pt_hmbsel => s0_hmbsel, - pt_hcache => s0_hcache, - pt_hirq => s0_hirq, - -- pass through inputs - pt_hready_o => s0_hready_o, - pt_hresp => s0_hresp, - pt_hrdata => s0_hrdata, - pt_hsplit => s0_hsplit, - pt_hcache_o => s0_hcache_o, - pt_hirq_o => s0_hirq_o); - - end generate; - - ahbpassthru_slavegen2: if ahbs_pt >= 2 generate - - thru2 : ahbpassthru_slave_vhdl - generic map (hindex_set => s1_hindex, - hbaseaddr => s1_haddr0, - hmask => s1_hmask0, - htype => s1_htype0, - PREFETCHABLE => s1_pf0, - CACHEABLE => s1_ca0, - NAHBAMR => NAHBAMR, - AHBDW => AHBDW) - port map ( - -- inputs - hsel => ahbsi.hsel(s1_hindex), - haddr => ahbsi.haddr, - hwrite => ahbsi.hwrite, - htrans => ahbsi.htrans, - hsize => ahbsi.hsize, - hburst => ahbsi.hburst, - hwdata => ahbsi.hwdata, - hprot => ahbsi.hprot, - hready => ahbsi.hready, - hmaster => ahbsi.hmaster, - hmastlock => ahbsi.hmastlock, - hmbsel => ahbsi.hmbsel, - hcache => ahbsi.hcache, - hirq => ahbsi.hirq(s1_hindex), - -- outputs - hready_o => ahbso(s1_hindex).hready, - hresp => ahbso(s1_hindex).hresp, - hrdata => ahbso(s1_hindex).hrdata, - hsplit => ahbso(s1_hindex).hsplit, - hcache_o => ahbso(s1_hindex).hcache, - hirq_o => ahbso(s1_hindex).hirq(s1_hindex), - hconfig => ahbso(s1_hindex).hconfig, - hindex => ahbso(s1_hindex).hindex, - -- pass through outputs - pt_hsel => s1_hsel, - pt_haddr => s1_haddr, - pt_hwrite => s1_hwrite, - pt_htrans => s1_htrans, - pt_hsize => s1_hsize, - pt_hburst => s1_hburst, - pt_hwdata => s1_hwdata, - pt_hprot => s1_hprot, - pt_hready => s1_hready, - pt_hmaster => s1_hmaster, - pt_hmastlock => s1_hmastlock, - pt_hmbsel => s1_hmbsel, - pt_hcache => s1_hcache, - pt_hirq => s1_hirq, - -- pass through inputs - pt_hready_o => s1_hready_o, - pt_hresp => s1_hresp, - pt_hrdata => s1_hrdata, - pt_hsplit => s1_hsplit, - pt_hcache_o => s1_hcache_o, - pt_hirq_o => s1_hirq_o); - end generate; - - - ahbpassthru_slavegen3: if ahbs_pt >= 3 generate - - thru3 : ahbpassthru_slave_vhdl - generic map (hindex_set => s2_hindex, - hbaseaddr => s2_haddr0, - hmask => s2_hmask0, - htype => s2_htype0, - PREFETCHABLE => s2_pf0, - CACHEABLE => s2_ca0, - NAHBAMR => NAHBAMR, - AHBDW => AHBDW) - port map ( - -- inputs - hsel => ahbsi.hsel(s2_hindex), - haddr => ahbsi.haddr, - hwrite => ahbsi.hwrite, - htrans => ahbsi.htrans, - hsize => ahbsi.hsize, - hburst => ahbsi.hburst, - hwdata => ahbsi.hwdata, - hprot => ahbsi.hprot, - hready => ahbsi.hready, - hmaster => ahbsi.hmaster, - hmastlock => ahbsi.hmastlock, - hmbsel => ahbsi.hmbsel, - hcache => ahbsi.hcache, - hirq => ahbsi.hirq(s2_hindex), - -- outputs - hready_o => ahbso(s2_hindex).hready, - hresp => ahbso(s2_hindex).hresp, - hrdata => ahbso(s2_hindex).hrdata, - hsplit => ahbso(s2_hindex).hsplit, - hcache_o => ahbso(s2_hindex).hcache, - hirq_o => ahbso(s2_hindex).hirq(s2_hindex), - hconfig => ahbso(s2_hindex).hconfig, - hindex => ahbso(s2_hindex).hindex, - -- pass through outputs - pt_hsel => s2_hsel, - pt_haddr => s2_haddr, - pt_hwrite => s2_hwrite, - pt_htrans => s2_htrans, - pt_hsize => s2_hsize, - pt_hburst => s2_hburst, - pt_hwdata => s2_hwdata, - pt_hprot => s2_hprot, - pt_hready => s2_hready, - pt_hmaster => s2_hmaster, - pt_hmastlock => s2_hmastlock, - pt_hmbsel => s2_hmbsel, - pt_hcache => s2_hcache, - pt_hirq => s2_hirq, - -- pass through inputs - pt_hready_o => s2_hready_o, - pt_hresp => s2_hresp, - pt_hrdata => s2_hrdata, - pt_hsplit => s2_hsplit, - pt_hcache_o => s2_hcache_o, - pt_hirq_o => s2_hirq_o); - end generate; - - ahbpassthru_slavegen4: if ahbs_pt = 4 generate - - thru4 : ahbpassthru_slave_vhdl - generic map (hindex_set => s3_hindex, - hbaseaddr => s3_haddr0, - hmask => s3_hmask0, - htype => s3_htype0, - PREFETCHABLE => s3_pf0, - CACHEABLE => s3_ca0, - NAHBAMR => NAHBAMR, - AHBDW => AHBDW) - port map ( - -- inputs - hsel => ahbsi.hsel(s3_hindex), - haddr => ahbsi.haddr, - hwrite => ahbsi.hwrite, - htrans => ahbsi.htrans, - hsize => ahbsi.hsize, - hburst => ahbsi.hburst, - hwdata => ahbsi.hwdata, - hprot => ahbsi.hprot, - hready => ahbsi.hready, - hmaster => ahbsi.hmaster, - hmastlock => ahbsi.hmastlock, - hmbsel => ahbsi.hmbsel, - hcache => ahbsi.hcache, - hirq => ahbsi.hirq(s3_hindex), - -- outputs - hready_o => ahbso(s3_hindex).hready, - hresp => ahbso(s3_hindex).hresp, - hrdata => ahbso(s3_hindex).hrdata, - hsplit => ahbso(s3_hindex).hsplit, - hcache_o => ahbso(s3_hindex).hcache, - hirq_o => ahbso(s3_hindex).hirq(s3_hindex), - hconfig => ahbso(s3_hindex).hconfig, - hindex => ahbso(s3_hindex).hindex, - -- pass through outputs - pt_hsel => s3_hsel, - pt_haddr => s3_haddr, - pt_hwrite => s3_hwrite, - pt_htrans => s3_htrans, - pt_hsize => s3_hsize, - pt_hburst => s3_hburst, - pt_hwdata => s3_hwdata, - pt_hprot => s3_hprot, - pt_hready => s3_hready, - pt_hmaster => s3_hmaster, - pt_hmastlock => s3_hmastlock, - pt_hmbsel => s3_hmbsel, - pt_hcache => s3_hcache, - pt_hirq => s3_hirq, - -- pass through inputs - pt_hready_o => s3_hready_o, - pt_hresp => s3_hresp, - pt_hrdata => s3_hrdata, - pt_hsplit => s3_hsplit, - pt_hcache_o => s3_hcache_o, - pt_hirq_o => s3_hirq_o); - end generate; - -end; diff --git a/designs/basic_passthru/test_basic_passthru.v b/designs/basic_passthru/test_basic_passthru.v deleted file mode 100644 index f4da0fd0..00000000 --- a/designs/basic_passthru/test_basic_passthru.v +++ /dev/null @@ -1,48 +0,0 @@ -//Testbench doesn't do anything except toggle the clock and release reset. -`timescale 1ns / 100ps -module test_basic_passthru; - - reg leon_clk; - reg leon_clk_reset_n; - reg [31:0] gpio_in; - wire [31:0] gpio_out; - wire [31:0] gpio_oen; - reg usb_uart_rxd; - reg dsurx; - reg miso_i; - wire [7:0] ssn_o; - - initial leon_clk = 0; always #5 leon_clk <= !leon_clk; //100MHz clock - initial begin - leon_clk_reset_n = 0; - gpio_in = 0; - usb_uart_rxd = 1; //UART's should be '1' when idle - dsurx = 1; - miso_i = 0; //SPI should be '0' when idle - repeat (10) @(posedge leon_clk); - leon_clk_reset_n <= 1; - repeat (10000) @(posedge leon_clk); - $stop; - end - - basic_passthru basic_passthru - ( - // Outputs - .usb_uart_txd (usb_uart_txd), - .dsutx (dsutx), - .gpio_out (gpio_out[31:0]), - .gpio_oen (gpio_oen[31:0]), - .sck_o (sck_o), - .mosi_o (mosi_o), - .ssn_o (ssn_o[7:0]), - // Inputs - .gpio_in (gpio_in[31:0]), - .leon_clk (leon_clk), - .leon_clk_reset_n (leon_clk_reset_n), - .usb_uart_rxd (usb_uart_rxd), - .dsurx (dsurx), - .miso_i (miso_i)); - -endmodule // test_basic_passthru - - \ No newline at end of file diff --git a/designs/leon3-altera-de2-ep2c35/Makefile b/designs/leon3-altera-de2-ep2c35/Makefile index aaf88511..916f6e9e 100644 --- a/designs/leon3-altera-de2-ep2c35/Makefile +++ b/designs/leon3-altera-de2-ep2c35/Makefile @@ -23,12 +23,12 @@ SYNPOPT="set_option -pipe 1; set_option -retiming 1; set_option -write_apr_const TECHLIBS = altera altera_mf stratixii LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp gleichmann fmf spansion gsi -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr ata haps \ - slink ascs coremp7 ac97 eon3ft leon4 leon4b64 l2cache \ + tmtc openchip hynix cypress ihp fmf spansion gsi +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr \ + slink ascs leon3ft leon4 leon4v0 l2cache \ spacewire usb pwm gr1553b iommu pci leon3ft hcan -FILESKIP = grcan.vhd simple_spi_top.v ata_device.v i2c_slave_model.v +FILESKIP = grcan.vhd i2c_slave_model.v include $(GRLIB)/bin/Makefile include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-altera-de2-ep2c35/clkgen_de2.vhd b/designs/leon3-altera-de2-ep2c35/clkgen_de2.vhd index 0ce1da27..e2293e4c 100644 --- a/designs/leon3-altera-de2-ep2c35/clkgen_de2.vhd +++ b/designs/leon3-altera-de2-ep2c35/clkgen_de2.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-de2-ep2c35/config.help b/designs/leon3-altera-de2-ep2c35/config.help index 076eb0b0..8fb124f5 100644 --- a/designs/leon3-altera-de2-ep2c35/config.help +++ b/designs/leon3-altera-de2-ep2c35/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. diff --git a/designs/leon3-altera-de2-ep2c35/lconfig.tk b/designs/leon3-altera-de2-ep2c35/lconfig.tk index 9ab3f222..aa130e7e 100755 --- a/designs/leon3-altera-de2-ep2c35/lconfig.tk +++ b/designs/leon3-altera-de2-ep2c35/lconfig.tk @@ -752,7 +752,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -762,7 +763,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -905,8 +908,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -925,6 +930,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1014,9 +1023,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1070,10 +1080,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1119,14 +1130,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1199,13 +1212,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1245,22 +1266,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1317,21 +1606,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1378,36 +1667,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1415,48 +1705,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1512,28 +1803,28 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_7 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x4.x.menu 3 bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1574,20 +1865,21 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1596,38 +1888,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_7 + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1684,92 +1977,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1777,18 +2070,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1829,52 +2122,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1882,162 +2176,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2093,45 +2388,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2171,18 +2468,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2190,55 +2488,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2295,24 +2598,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2352,17 +2655,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2370,37 +2674,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2456,22 +2761,22 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - global tmpvar_26 - minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_26 CONFIG_FPUFT_NONE + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" - $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN @@ -2542,26 +2847,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global tmpvar_26 + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 global CONFIG_FPUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} global CONFIG_FPUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} global CONFIG_FPUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} global CONFIG_FPUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -3462,16 +3767,16 @@ proc menu17 {w title} { bool $w.config.f 17 0 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 17 1 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_28 + minimenu $w.config.f 17 1 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" menusplit $w $w.config.f.x1.x.menu 7 hex $w.config.f 17 2 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3521,21 +3826,21 @@ proc update_menu17 {} { proc update_define_menu17 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_27 + global tmpvar_28 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3594,15 +3899,15 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_28 - minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_28 CONFIG_UA1_FIFO1 + global tmpvar_29 + minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 18 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 18 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3699,19 +4004,19 @@ proc update_menu18 {} { proc update_define_menu18 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_28 + global tmpvar_29 global CONFIG_UA1_FIFO1 - if {$tmpvar_28 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_28 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3994,7 +4299,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4004,6 +4310,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4028,6 +4336,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4040,14 +4349,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4060,28 +4374,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4091,17 +4405,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4113,12 +4427,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4128,10 +4442,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4142,7 +4456,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4154,26 +4468,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4181,27 +4497,27 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_FPUFT_NONE 0 set CONFIG_FPUFT_PAR 0 set CONFIG_FPUFT_DMR 0 @@ -4243,7 +4559,7 @@ set CONFIG_MCTRL_PROGPAGE 0 set CONFIG_AHBSTAT_ENABLE 0 set CONFIG_AHBSTAT_NFTSLV 1 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4253,7 +4569,7 @@ set CONFIG_AHBRAM_SZ32 0 set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_UART1_ENABLE 0 -set tmpvar_28 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4338,7 +4654,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4348,6 +4665,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4386,6 +4705,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4398,9 +4718,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4414,245 +4735,390 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4735,28 +5201,28 @@ proc writeconfig {file1 file2} { write_comment $cfg $autocfg "On-chip RAM/ROM " global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_28 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "UARTs, timers and I/O port " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_28 + global tmpvar_29 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4842,7 +5308,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4852,6 +5319,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4870,8 +5339,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -4954,11 +5428,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5072,8 +5548,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5092,6 +5570,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5132,310 +5614,326 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_FPUFT_NONE - if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_FPUFT_PAR - if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_FPUFT_DMR - if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_FPUFT_TMR - if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "1" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } + global tmpvar_29 + set tmpvar_29 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } } diff --git a/designs/leon3-altera-de2-ep2c35/leon3mp.vhd b/designs/leon3-altera-de2-ep2c35/leon3mp.vhd index 543972b8..28c22561 100644 --- a/designs/leon3-altera-de2-ep2c35/leon3mp.vhd +++ b/designs/leon3-altera-de2-ep2c35/leon3mp.vhd @@ -5,7 +5,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-de2-ep2c35/sdctrl16.vhd b/designs/leon3-altera-de2-ep2c35/sdctrl16.vhd index 25790d01..b39c88e3 100644 --- a/designs/leon3-altera-de2-ep2c35/sdctrl16.vhd +++ b/designs/leon3-altera-de2-ep2c35/sdctrl16.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -939,7 +939,6 @@ begin ahbso.hready <= r.hready; ahbso.hresp <= r.hresp; ahbso.hrdata <= ahbdrivedata(dout); - ahbso.hcache <= not r.hio; end process; diff --git a/designs/leon3-altera-de2-ep2c35/testbench.vhd b/designs/leon3-altera-de2-ep2c35/testbench.vhd index be75f515..9f689bc7 100644 --- a/designs/leon3-altera-de2-ep2c35/testbench.vhd +++ b/designs/leon3-altera-de2-ep2c35/testbench.vhd @@ -5,7 +5,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-de2-ep2c35/tkconfig.h b/designs/leon3-altera-de2-ep2c35/tkconfig.h index e1e14faa..cc5c8e39 100644 --- a/designs/leon3-altera-de2-ep2c35/tkconfig.h +++ b/designs/leon3-altera-de2-ep2c35/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else diff --git a/designs/leon3-altera-ep1c20/.config b/designs/leon3-altera-ep1c20/.config index 3a4c8fbd..e18c689a 100755 --- a/designs/leon3-altera-ep1c20/.config +++ b/designs/leon3-altera-ep1c20/.config @@ -160,11 +160,13 @@ CONFIG_MMU_REPARRAY=y CONFIG_MMU_I8=y # CONFIG_MMU_I16 is not set # CONFIG_MMU_I32 is not set +# CONFIG_MMU_I64 is not set # CONFIG_MMU_D2 is not set # CONFIG_MMU_D4 is not set CONFIG_MMU_D8=y # CONFIG_MMU_D16 is not set # CONFIG_MMU_D32 is not set +# CONFIG_MMU_D64 is not set CONFIG_MMU_FASTWB=y CONFIG_MMU_PAGE_4K=y # CONFIG_MMU_PAGE_8K is not set @@ -273,14 +275,6 @@ CONFIG_GRGPIO_ENABLE=y CONFIG_GRGPIO_WIDTH=2 CONFIG_GRGPIO_IMASK=000F -# -# ATA Controller -# -CONFIG_ATA_ENABLE=y -CONFIG_ATAIO=A00 -CONFIG_ATAIRQ=10 -# CONFIG_ATA_MWDMA is not set - # # VHDL Debugging # diff --git a/designs/leon3-altera-ep1c20/Makefile b/designs/leon3-altera-ep1c20/Makefile index 9f6e7cb1..6d253904 100644 --- a/designs/leon3-altera-ep1c20/Makefile +++ b/designs/leon3-altera-ep1c20/Makefile @@ -17,10 +17,10 @@ CLEAN=soft-clean TECHLIBS = altera altera_mf LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann eth hynix cypress + tmtc openchip ihp eth hynix cypress DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - ddr usbhc greth usb spacewire net haps spi ac97 grusbhc \ - slink ascs coremp7 hcan + ddr usbhc greth usb spacewire net spi grusbhc \ + slink ascs hcan leon4 leon4v0 FILESKIP = grcan.vhd include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-altera-ep1c20/ahbrom.vhd b/designs/leon3-altera-ep1c20/ahbrom.vhd index a61a155a..2091c411 100644 --- a/designs/leon3-altera-ep1c20/ahbrom.vhd +++ b/designs/leon3-altera-ep1c20/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-altera-ep1c20/clkgen_ep1c20board.vhd b/designs/leon3-altera-ep1c20/clkgen_ep1c20board.vhd index 61a151b1..4fb664c2 100644 --- a/designs/leon3-altera-ep1c20/clkgen_ep1c20board.vhd +++ b/designs/leon3-altera-ep1c20/clkgen_ep1c20board.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-ep1c20/config.help b/designs/leon3-altera-ep1c20/config.help index 78e45c56..fc8730dd 100644 --- a/designs/leon3-altera-ep1c20/config.help +++ b/designs/leon3-altera-ep1c20/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -922,32 +955,6 @@ CONFIG_GRGPIO_IMASK The I/O port interrupt mask defines which bits in the I/O port should be able to create an interrupt. -ATA interface enable -CONFIG_ATA_ENABLE - Say Y here to enable the ATA interace from OpenCores. The core has one - AHB slave interface for accessing all control registers. - -ATA register address -CONFIG_ATAIO - The control registers of the ATA core occupy 256 byte, and are - mapped in the AHB bus I/O area (0xFFF00000 - 0xFFFFF000). This setting - defines at which address in the I/O area the registers appear (HADDR[19:8]). - -ATA interrupt -CONFIG_ATAIRQ - Defines which interrupt number the ATA core will generate. - -ATA DMA support -CONFIG_ATA_MWDMA - Say yes here to enable IDE multi-word DMA support (MWDMA). - This will increase transfer rate compared to the PIO mode, - but increase area with approxiamtely 5,000 gates. Note that - DMA is not supported by legacy CF cards, so it makes no sense - to enable it on CF card sockets. - -ATA DMA FIFO depth -CONFIG_ATA_FIFO - Defines the DMA FIFO depth. Choose 8 or 16. UART debugging CONFIG_DEBUG_UART During simulation, the output from the UARTs is printed on the diff --git a/designs/leon3-altera-ep1c20/config.in b/designs/leon3-altera-ep1c20/config.in index 050d271b..c3701786 100644 --- a/designs/leon3-altera-ep1c20/config.in +++ b/designs/leon3-altera-ep1c20/config.in @@ -63,11 +63,6 @@ comment 'Peripherals ' source lib/gaisler/misc/gptimer.in source lib/gaisler/misc/grgpio.in endmenu - - mainmenu_option next_comment - comment 'ATA Controller' - source lib/gaisler/ata/ata.in - endmenu # mainmenu_option next_comment # comment 'Keybord and VGA interface' diff --git a/designs/leon3-altera-ep1c20/config.vhd b/designs/leon3-altera-ep1c20/config.vhd index f6282d4b..62e3dd09 100644 --- a/designs/leon3-altera-ep1c20/config.vhd +++ b/designs/leon3-altera-ep1c20/config.vhd @@ -147,13 +147,6 @@ package config is constant CFG_GRGPIO_IMASK : integer := 16#000F#; constant CFG_GRGPIO_WIDTH : integer := (2); --- ATA interface - constant CFG_ATA : integer := 1; - constant CFG_ATAIO : integer := 16#A00#; - constant CFG_ATAIRQ : integer := (10); - constant CFG_ATADMA : integer := 0; - constant CFG_ATAFIFO : integer := 8; - -- GRLIB debugging constant CFG_DUART : integer := 0; end; diff --git a/designs/leon3-altera-ep1c20/config.vhd.h b/designs/leon3-altera-ep1c20/config.vhd.h index b34a51f1..c8120899 100644 --- a/designs/leon3-altera-ep1c20/config.vhd.h +++ b/designs/leon3-altera-ep1c20/config.vhd.h @@ -145,13 +145,6 @@ constant CFG_GRGPIO_IMASK : integer := 16#CONFIG_GRGPIO_IMASK#; constant CFG_GRGPIO_WIDTH : integer := CONFIG_GRGPIO_WIDTH; --- ATA interface - constant CFG_ATA : integer := CONFIG_ATA_ENABLE; - constant CFG_ATAIO : integer := 16#CONFIG_ATAIO#; - constant CFG_ATAIRQ : integer := CONFIG_ATAIRQ; - constant CFG_ATADMA : integer := CONFIG_ATA_MWDMA; - constant CFG_ATAFIFO : integer := CONFIG_ATA_FIFO; - -- GRLIB debugging constant CFG_DUART : integer := CONFIG_DEBUG_UART; diff --git a/designs/leon3-altera-ep1c20/lconfig.tk b/designs/leon3-altera-ep1c20/lconfig.tk index 638e1151..c3f1da33 100755 --- a/designs/leon3-altera-ep1c20/lconfig.tk +++ b/designs/leon3-altera-ep1c20/lconfig.tk @@ -644,7 +644,7 @@ set active_menus [list] set processed_top_level 0 set ARCH sparc set menus_per_column 4 -set total_menus 20 +set total_menus 19 proc toplevel_menu {num} { if {$num == 4} then {return 3} @@ -659,7 +659,6 @@ proc toplevel_menu {num} { if {$num == 16} then {return 14} if {$num == 17} then {return 13} if {$num == 18} then {return 13} - if {$num == 19} then {return 13} return $num } @@ -753,7 +752,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -763,7 +763,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -906,8 +908,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -926,6 +930,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1015,9 +1023,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1071,10 +1080,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1120,14 +1130,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1200,13 +1212,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1246,22 +1266,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1318,21 +1606,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1379,36 +1667,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1416,48 +1705,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1513,27 +1803,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1574,16 +1864,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1592,34 +1883,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1676,92 +1968,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1769,18 +2061,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1821,52 +2113,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1874,162 +2167,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2085,45 +2379,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2163,18 +2459,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2182,55 +2479,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2287,24 +2589,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2344,17 +2646,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2362,37 +2665,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2448,16 +2752,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2505,9 +2816,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2529,21 +2838,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2950,7 +3264,6 @@ proc menu13 {w title} { submenu $w.config.f 13 0 "Memory controllers " 14 submenu $w.config.f 13 1 "On-chip RAM/ROM " 17 submenu $w.config.f 13 2 "UARTs, timers and irq control " 18 - submenu $w.config.f 13 3 "ATA Controller" 19 @@ -3152,32 +3465,32 @@ proc menu15 {w title} { int $w.config.f 15 3 "RAM waitstates" CONFIG_SRCTRL_RAMWS int $w.config.f 15 4 "IO waitstates" CONFIG_SRCTRL_IOWS bool $w.config.f 15 5 "Use read-modify-write for sub-word writes " CONFIG_SRCTRL_RMW - global tmpvar_26 - minimenu $w.config.f 15 6 "SRAM banks" tmpvar_26 CONFIG_SRCTRL_SRBANKS1 + global tmpvar_28 + minimenu $w.config.f 15 6 "SRAM banks" tmpvar_28 CONFIG_SRCTRL_SRBANKS1 menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"SRAM banks\"" - $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_26 -value "3" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_26 -value "5" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_28 -value "3" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_28 -value "5" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 - global tmpvar_27 - minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_27 CONFIG_SRCTRL_BANKSZ0 + global tmpvar_29 + minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_29 CONFIG_SRCTRL_BANKSZ0 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"SRAM bank size (kb) (0 for programmable)\"" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_27 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_27 -value "256" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_27 -value "512" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_27 -value "1024" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_27 -value "2048" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_27 -value "4096" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_27 -value "8192" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_27 -value "16384" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_27 -value "32768" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_27 -value "65536" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_29 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_29 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_29 -value "512" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_29 -value "1024" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_29 -value "2048" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_29 -value "4096" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_29 -value "8192" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_29 -value "16384" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_29 -value "32768" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_29 -value "65536" -command "update_active" menusplit $w $w.config.f.x7.x.menu 14 int $w.config.f 15 8 "PROM bank select address bit (0 - 28)" CONFIG_SRCTRL_ROMASEL @@ -3253,46 +3566,46 @@ proc update_define_menu15 {} { global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then { set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW&15]} else {set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_SRCTRL_SRBANKS1 - if {$tmpvar_26 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} global CONFIG_SRCTRL_SRBANKS2 - if {$tmpvar_26 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} global CONFIG_SRCTRL_SRBANKS3 - if {$tmpvar_26 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} + if {$tmpvar_28 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} global CONFIG_SRCTRL_SRBANKS4 - if {$tmpvar_26 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} global CONFIG_SRCTRL_SRBANKS5 - if {$tmpvar_26 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} - global tmpvar_27 + if {$tmpvar_28 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} + global tmpvar_29 global CONFIG_SRCTRL_BANKSZ0 - if {$tmpvar_27 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} + if {$tmpvar_29 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} global CONFIG_SRCTRL_BANKSZ1 - if {$tmpvar_27 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} + if {$tmpvar_29 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} global CONFIG_SRCTRL_BANKSZ2 - if {$tmpvar_27 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} + if {$tmpvar_29 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} global CONFIG_SRCTRL_BANKSZ3 - if {$tmpvar_27 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} + if {$tmpvar_29 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} global CONFIG_SRCTRL_BANKSZ4 - if {$tmpvar_27 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} + if {$tmpvar_29 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} global CONFIG_SRCTRL_BANKSZ5 - if {$tmpvar_27 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} + if {$tmpvar_29 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} global CONFIG_SRCTRL_BANKSZ6 - if {$tmpvar_27 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} + if {$tmpvar_29 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} global CONFIG_SRCTRL_BANKSZ7 - if {$tmpvar_27 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} + if {$tmpvar_29 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} global CONFIG_SRCTRL_BANKSZ8 - if {$tmpvar_27 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} + if {$tmpvar_29 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} global CONFIG_SRCTRL_BANKSZ9 - if {$tmpvar_27 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} + if {$tmpvar_29 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} global CONFIG_SRCTRL_BANKSZ10 - if {$tmpvar_27 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} + if {$tmpvar_29 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} global CONFIG_SRCTRL_BANKSZ11 - if {$tmpvar_27 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} + if {$tmpvar_29 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} global CONFIG_SRCTRL_BANKSZ12 - if {$tmpvar_27 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} + if {$tmpvar_29 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} global CONFIG_SRCTRL_BANKSZ13 - if {$tmpvar_27 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} + if {$tmpvar_29 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_ROMASEL "$CONFIG_SRCTRL_ROMASEL" 19} } @@ -3516,16 +3829,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_28 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 + global tmpvar_30 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_30 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3587,21 +3900,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_30 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_30 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3622,7 +3935,7 @@ proc menu18 {w title} { wm title $w "UARTs, timers and irq control " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu19 .menu19 \"$title\"" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; catch {destroy .menu13}; unregister_active 13; menu19 .menu19 \"$title\"" frame $w.f button $w.f.back -text "OK" \ -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18" @@ -3660,15 +3973,15 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 18 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 18 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3757,19 +4070,19 @@ proc update_menu18 {} { proc update_define_menu18 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3801,153 +4114,31 @@ proc update_define_menu18 {} { } +menu_option menu19 19 "VHDL Debugging " proc menu19 {w title} { set oldFocus [focus] - catch {focus .menu13} catch {destroy $w; unregister_active 19} toplevel $w -class Dialog wm withdraw $w global active_menus set active_menus [lsort -integer [linsert $active_menus end 19]] - message $w.m -width 400 -aspect 300 -text \ - "ATA Controller" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "ATA Controller" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 19; catch {destroy .menu13}; unregister_active 13; menu20 .menu20 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 19 0 "Enable ATA interface " CONFIG_ATA_ENABLE - hex $w.config.f 19 1 "ATA I/O area start address (haddr\[19:8\]) " CONFIG_ATAIO - int $w.config.f 19 2 "Interrupt number " CONFIG_ATAIRQ - bool $w.config.f 19 3 "Enable MWDMA support " CONFIG_ATA_MWDMA - int $w.config.f 19 4 "FIFO depth " CONFIG_ATA_FIFO - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu19 {} { - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {.menu19.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x1.l configure -state normal; } else {.menu19.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x1.l configure -state disabled} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {.menu19.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x2.l configure -state normal; } else {.menu19.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x2.l configure -state disabled} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - configure_entry .menu19.config.f.x3 normal {n l y}} else {configure_entry .menu19.config.f.x3 disabled {y n l}} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {.menu19.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x4.l configure -state normal; } else {.menu19.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x4.l configure -state disabled} -} - - -proc update_define_menu19 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {validate_hex CONFIG_ATAIO "$CONFIG_ATAIO" A00} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {validate_int CONFIG_ATAIRQ "$CONFIG_ATAIRQ" 10} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA&15]} else {set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA|16]} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {validate_int CONFIG_ATA_FIFO "$CONFIG_ATA_FIFO" 8} -} - - -menu_option menu20 20 "VHDL Debugging " -proc menu20 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 20} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 20]] message $w.m -width 400 -aspect 300 -text \ "VHDL Debugging " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "VHDL Debugging " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; break" - set nextscript "catch {focus $oldFocus}; menu21 .menu21 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; break" + set nextscript "catch {focus $oldFocus}; menu20 .menu20 \"$title\"" frame $w.f button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript $w.f.next configure -state disabled bind all "puts \"no more menus\" " button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -3975,7 +4166,7 @@ proc menu20 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 20 0 "Accelerated UART tracing " CONFIG_DEBUG_UART + bool $w.config.f 19 0 "Accelerated UART tracing " CONFIG_DEBUG_UART @@ -4011,11 +4202,11 @@ proc menu20 {w title} { } } -proc update_menu20 {} { +proc update_menu19 {} { } -proc update_define_menu20 {} { +proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES } @@ -4061,7 +4252,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4071,6 +4263,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4095,6 +4289,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4107,14 +4302,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4127,27 +4327,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4157,17 +4357,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4179,12 +4379,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4194,10 +4394,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4208,7 +4408,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4220,26 +4420,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4247,27 +4449,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4293,13 +4499,13 @@ set CONFIG_SRCTRL_PROMWS 3 set CONFIG_SRCTRL_RAMWS 0 set CONFIG_SRCTRL_IOWS 0 set CONFIG_SRCTRL_RMW 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_SRCTRL_SRBANKS1 0 set CONFIG_SRCTRL_SRBANKS2 0 set CONFIG_SRCTRL_SRBANKS3 0 set CONFIG_SRCTRL_SRBANKS4 0 set CONFIG_SRCTRL_SRBANKS5 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_SRCTRL_BANKSZ0 0 set CONFIG_SRCTRL_BANKSZ1 0 set CONFIG_SRCTRL_BANKSZ2 0 @@ -4329,7 +4535,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4339,7 +4545,7 @@ set CONFIG_AHBRAM_SZ32 0 set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4360,11 +4566,6 @@ set CONFIG_GPT_WDOG FFFF set CONFIG_GRGPIO_ENABLE 0 set CONFIG_GRGPIO_WIDTH 8 set CONFIG_GRGPIO_IMASK 0000 -set CONFIG_ATA_ENABLE 0 -set CONFIG_ATAIO A00 -set CONFIG_ATAIRQ 10 -set CONFIG_ATA_MWDMA 0 -set CONFIG_ATA_FIFO 8 set CONFIG_DEBUG_UART 0 set CONFIG_SYN_ARTISAN 4 set CONFIG_PCI_ENABLE 4 @@ -4421,7 +4622,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4431,6 +4633,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4469,6 +4673,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4481,9 +4686,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4497,239 +4703,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4786,29 +5142,29 @@ proc writeconfig {file1 file2} { if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_IOWS $CONFIG_SRCTRL_IOWS $notmod } global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_RMW $CONFIG_SRCTRL_RMW [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } - if { $tmpvar_26 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } - if { $tmpvar_26 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} - global tmpvar_27 + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } + if { $tmpvar_28 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } + if { $tmpvar_28 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} + global tmpvar_29 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } - if { $tmpvar_27 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } - if { $tmpvar_27 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } - if { $tmpvar_27 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } - if { $tmpvar_27 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } - if { $tmpvar_27 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } - if { $tmpvar_27 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } - if { $tmpvar_27 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } - if { $tmpvar_27 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } + if { $tmpvar_29 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } + if { $tmpvar_29 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } + if { $tmpvar_29 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } + if { $tmpvar_29 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } + if { $tmpvar_29 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } + if { $tmpvar_29 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } + if { $tmpvar_29 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } + if { $tmpvar_29 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_ROMASEL $CONFIG_SRCTRL_ROMASEL $notmod } write_comment $cfg $autocfg "Leon2 memory controller " @@ -4841,28 +5197,28 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_28 + global tmpvar_30 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4891,17 +5247,6 @@ proc writeconfig {file1 file2} { if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRGPIO_WIDTH $CONFIG_GRGPIO_WIDTH $notmod } global CONFIG_GRGPIO_IMASK if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_GRGPIO_IMASK $CONFIG_GRGPIO_IMASK $notmod } - write_comment $cfg $autocfg "ATA Controller" - global CONFIG_ATA_ENABLE - write_tristate $cfg $autocfg CONFIG_ATA_ENABLE $CONFIG_ATA_ENABLE [list $notmod] 2 - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_ATAIO $CONFIG_ATAIO $notmod } - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_ATAIRQ $CONFIG_ATAIRQ $notmod } - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_ATA_MWDMA $CONFIG_ATA_MWDMA [list $notmod] 2 } - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {write_int $cfg $autocfg CONFIG_ATA_FIFO $CONFIG_ATA_FIFO $notmod } write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -4946,7 +5291,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4956,6 +5302,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4974,8 +5322,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5058,11 +5411,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5083,6 +5438,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_SRCTRL_SRBANKS1; set CONFIG_SRCTRL_SRBANKS1 0 global CONFIG_SRCTRL_SRBANKS2; set CONFIG_SRCTRL_SRBANKS2 0 global CONFIG_SRCTRL_SRBANKS3; set CONFIG_SRCTRL_SRBANKS3 0 @@ -5191,8 +5550,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5211,6 +5572,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5251,342 +5616,368 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "1" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "1" global CONFIG_SRCTRL_SRBANKS1 - if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_28 "1" } global CONFIG_SRCTRL_SRBANKS2 - if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_28 "2" } global CONFIG_SRCTRL_SRBANKS3 - if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_26 "3" } + if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_28 "3" } global CONFIG_SRCTRL_SRBANKS4 - if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_28 "4" } global CONFIG_SRCTRL_SRBANKS5 - if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_26 "5" } - global tmpvar_27 - set tmpvar_27 "0" + if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_28 "5" } + global tmpvar_29 + set tmpvar_29 "0" global CONFIG_SRCTRL_BANKSZ0 - if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_29 "8" } global CONFIG_SRCTRL_BANKSZ1 - if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_29 "16" } global CONFIG_SRCTRL_BANKSZ2 - if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_29 "32" } global CONFIG_SRCTRL_BANKSZ3 - if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_27 "64" } + if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_29 "64" } global CONFIG_SRCTRL_BANKSZ4 - if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_27 "128" } + if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_29 "128" } global CONFIG_SRCTRL_BANKSZ5 - if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_27 "256" } + if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_29 "256" } global CONFIG_SRCTRL_BANKSZ6 - if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_27 "512" } + if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_29 "512" } global CONFIG_SRCTRL_BANKSZ7 - if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_27 "1024" } + if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_29 "1024" } global CONFIG_SRCTRL_BANKSZ8 - if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_27 "2048" } + if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_29 "2048" } global CONFIG_SRCTRL_BANKSZ9 - if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_27 "4096" } + if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_29 "4096" } global CONFIG_SRCTRL_BANKSZ10 - if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_27 "8192" } + if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_29 "8192" } global CONFIG_SRCTRL_BANKSZ11 - if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_27 "16384" } + if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_29 "16384" } global CONFIG_SRCTRL_BANKSZ12 - if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_27 "32768" } + if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_29 "32768" } global CONFIG_SRCTRL_BANKSZ13 - if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_27 "65536" } - global tmpvar_28 - set tmpvar_28 "4" + if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_29 "65536" } + global tmpvar_30 + set tmpvar_30 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_30 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_30 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_30 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_30 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_30 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_30 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-altera-ep1c20/leon3mp.vhd b/designs/leon3-altera-ep1c20/leon3mp.vhd index 353086f4..4210c20d 100644 --- a/designs/leon3-altera-ep1c20/leon3mp.vhd +++ b/designs/leon3-altera-ep1c20/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -34,7 +34,6 @@ use gaisler.memctrl.all; use gaisler.leon3.all; use gaisler.uart.all; use gaisler.misc.all; -use gaisler.ata.all; use gaisler.jtag.all; library esa; use esa.memoryctrl.all; @@ -96,25 +95,6 @@ entity leon3mp is -- console UART rxd1 : in std_ulogic; txd1 : out std_ulogic; - - -- ATA signals - ata_rst : out std_logic; - ata_data : inout std_logic_vector(15 downto 0); - ata_da : out std_logic_vector(2 downto 0); - ata_cs0 : out std_logic; - ata_cs1 : out std_logic; - ata_dior : out std_logic; - ata_diow : out std_logic; - ata_iordy : in std_logic; - ata_intrq : in std_logic; - ata_dmack : out std_logic; - - -- Signals nedded to use CompactFlash with ATA controller - cf_power : out std_logic; -- To turn on power to the CompactFlash - cf_gnd_da : out std_logic_vector(10 downto 3); -- grounded address lines - cf_atasel : out std_logic; -- grounded to select true IDE mode - cf_we : out std_logic; -- should be connected to VCC in true IDE mode - cf_csel : out std_logic; -- for smsc lan chip eth_aen : out std_logic; @@ -139,7 +119,7 @@ architecture rtl of leon3mp is constant blength : integer := 12; constant fifodepth : integer := 8; - constant maxahbm : integer := NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_ATA*CFG_ATADMA; + constant maxahbm : integer := NCPU+CFG_AHB_UART+CFG_AHB_JTAG; signal vcc, gnd : std_logic_vector(7 downto 0); signal memi : memory_in_type; @@ -177,10 +157,6 @@ architecture rtl of leon3mp is signal dsui : dsu_in_type; signal dsuo : dsu_out_type; - signal idei : ata_in_type; - signal ideo : ata_out_type; - signal cf : cf_out_type; - signal gpti : gptimer_in_type; signal gpioi : gpio_in_type; signal gpioo : gpio_out_type; @@ -488,64 +464,6 @@ begin end generate; end generate; - ------------------------------------------------------------------------ ---- ATA Controller --------------------------------------------------- ------------------------------------------------------------------------ - - ata0 : if CFG_ATA = 1 generate - - atac0 : atactrl - generic map(tech => 0, fdepth => CFG_ATAFIFO, mhindex => CFG_NCPU+CFG_AHB_UART+ CFG_AHB_JTAG, - shindex => 5, haddr => 16#A00#, hmask => 16#fff#, pirq => CFG_ATAIRQ, - mwdma => CFG_ATADMA, TWIDTH => 8, - -- PIO mode 0 settings (@100MHz clock) - PIO_mode0_T1 => 6, -- 70ns - PIO_mode0_T2 => 28, -- 290ns - PIO_mode0_T4 => 2, -- 30ns - PIO_mode0_Teoc => 23 -- 240ns ==> T0 - T1 - T2 = 600 - 70 - 290 = 240 - ) - port map( rst => rstn, arst => vcc(0), clk => clkm, ahbmi => ahbmi, - ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG), cfo => cf, - ahbsi => ahbsi, ahbso => ahbso(5), atai => idei, atao => ideo); - - ata_rst_pad : outpad generic map (tech => padtech) - port map (ata_rst, ideo.rstn); - ata_data_pad : iopadv generic map (tech => padtech, width => 16, oepol => 1) - port map (ata_data, ideo.ddo, ideo.oen, idei.ddi); - ata_da_pad : outpadv generic map (tech => padtech, width => 3) - port map (ata_da, ideo.da); - ata_cs0_pad : outpad generic map (tech => padtech) - port map (ata_cs0, ideo.cs0); - ata_cs1_pad : outpad generic map (tech => padtech) - port map (ata_cs1, ideo.cs1); - ata_dior_pad : outpad generic map (tech => padtech) - port map (ata_dior, ideo.dior); - ata_diow_pad : outpad generic map (tech => padtech) - port map (ata_diow, ideo.diow); - iordy_pad : inpad generic map (tech => padtech) - port map (ata_iordy, idei.iordy); - intrq_pad : inpad generic map (tech => padtech) - port map (ata_intrq, idei.intrq); --- dmarq_pad : inpad generic map (tech => padtech) --- port map (ata_dmarq, idei.dmarq); - dmack_pad : outpad generic map (tech => padtech) - port map (ata_dmack, ideo.dmack); - - -- for CompactFlach mode selection - cf_gnd_da_pad : outpadv generic map (tech => padtech, width => 8) - port map (cf_gnd_da, cf.da); - cf_atasel_pad : outpad generic map (tech => padtech) - port map (cf_atasel, cf.atasel); - cf_we_pad : outpad generic map (tech => padtech) - port map (cf_we, cf.we); - cf_power_pad : outpad generic map (tech => padtech) - port map (cf_power, cf.power); - cf_csel_pad : outpad generic map (tech => padtech) - port map (cf_csel, cf.csel); - - end generate; - ----------------------------------------------------------------------- --- AHB ROM ---------------------------------------------------------- ----------------------------------------------------------------------- @@ -574,7 +492,7 @@ begin --- Drive unused bus elements --------------------------------------- ----------------------------------------------------------------------- - nam1 : for i in (NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_ATA) to NAHBMST-1 generate + nam1 : for i in (NCPU+CFG_AHB_UART+CFG_AHB_JTAG) to NAHBMST-1 generate ahbmo(i) <= ahbm_none; end generate; nap0 : for i in 6 to NAPBSLV-1 generate apbo(i) <= apb_none; end generate; diff --git a/designs/leon3-altera-ep1c20/smc_mctrl.vhd b/designs/leon3-altera-ep1c20/smc_mctrl.vhd index 3d5069e8..4907a0c1 100644 --- a/designs/leon3-altera-ep1c20/smc_mctrl.vhd +++ b/designs/leon3-altera-ep1c20/smc_mctrl.vhd @@ -895,7 +895,6 @@ begin ribdrive <= vbdrive; risbdrive <= vsbdrive; - ahbso.hcache <= not r.area(io); memo.address <= r.address; memo.sa <= r.sa; memo.ramsn <= "111" & r.ramsn; diff --git a/designs/leon3-altera-ep1c20/testbench.vhd b/designs/leon3-altera-ep1c20/testbench.vhd index 597f798f..7a6b2d79 100644 --- a/designs/leon3-altera-ep1c20/testbench.vhd +++ b/designs/leon3-altera-ep1c20/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -108,22 +108,6 @@ component leon3mp rxd1 : in std_ulogic; -- UART1 rx data txd1 : out std_ulogic; -- UART1 tx data - ata_rst : out std_logic; - ata_data : inout std_logic_vector(15 downto 0); - ata_da : out std_logic_vector(2 downto 0); - ata_cs0 : out std_logic; - ata_cs1 : out std_logic; - ata_dior : out std_logic; - ata_diow : out std_logic; - ata_iordy : in std_logic; - ata_intrq : in std_logic; - ata_dmack : out std_logic; - cf_power : out std_logic; - cf_gnd_da : out std_logic_vector(10 downto 3); -- grounded address lines - cf_atasel : out std_logic; -- grounded to select true IDE mode - cf_we : out std_logic; -- should be connected to VCC in true IDE mode - cf_csel : out std_logic; - -- for smc lan chip eth_aen : out std_ulogic; eth_readn : out std_ulogic; @@ -196,26 +180,6 @@ constant lresp : boolean := false; signal sa : std_logic_vector(14 downto 0); signal sd : std_logic_vector(31 downto 0); --- ATA signals -signal ata_rst : std_logic; -signal ata_data : std_logic_vector(15 downto 0); -signal ata_da : std_logic_vector(2 downto 0); -signal ata_cs0 : std_logic; -signal ata_cs1 : std_logic; -signal ata_dior : std_logic; -signal ata_diow : std_logic; -signal ata_iordy : std_logic; -signal ata_intrq : std_logic; -signal ata_dmack : std_logic; -signal cf_gnd_da : std_logic_vector(10 downto 3); -signal cf_atasel : std_logic; -signal cf_we : std_logic; -signal cf_power : std_logic; -signal cf_csel : std_logic; - -signal from_ata : ata_out_type := ATAO_RESET_VECTOR; -signal to_ata : ata_in_type := ATAI_RESET_VECTOR; - begin -- clock and reset @@ -232,10 +196,7 @@ begin romsn, oen, writen, sa(11 downto 0), sd, sdclk, sdcke, sdcsn, sdwen, sdrasn, sdcasn, sddqm, sdba, dsutx, dsurx, dsubren, dsuact, - rxd1, txd1, - ata_rst, ata_data, ata_da, ata_cs0, ata_cs1, ata_dior, ata_diow, - ata_iordy, ata_intrq, ata_dmack, - cf_power, cf_gnd_da, cf_atasel, cf_we, cf_csel, + rxd1, txd1, eth_aen, eth_readn, eth_writen, eth_nbe); -- optional sdram @@ -266,16 +227,6 @@ begin rwen, ramoen); end generate; - disk: ata_device - generic map( sector_length => 512, log2_size => 14) - port map( clk => clk, rst => rst, d => ata_data, atai => to_ata, - atao => from_ata - ); - to_ata.cs(0)<=ata_cs0; to_ata.cs(1)<=ata_cs1; - to_ata.da<=ata_da; to_ata.dmack<=ata_dmack; - to_ata.dior<=ata_dior; to_ata.diow<=ata_diow; to_ata.reset<=ata_rst; - ata_intrq<=from_ata.intrq; ata_iordy<=from_ata.iordy; - error <= 'H'; -- ERROR pull-up iuerr : process diff --git a/designs/leon3-altera-ep1c20/tkconfig.h b/designs/leon3-altera-ep1c20/tkconfig.h index 837217db..61990464 100644 --- a/designs/leon3-altera-ep1c20/tkconfig.h +++ b/designs/leon3-altera-ep1c20/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -949,25 +971,6 @@ #define CONFIG_GRGPIO_WIDTH 1 #endif -#ifndef CONFIG_ATA_ENABLE -#define CONFIG_ATA_ENABLE 0 -#endif - -#ifndef CONFIG_ATAIO -#define CONFIG_ATAIO 0 -#endif - -#ifndef CONFIG_ATAIRQ -#define CONFIG_ATAIRQ 0 -#endif - -#ifndef CONFIG_ATA_MWDMA -#define CONFIG_ATA_MWDMA 0 -#endif - -#ifndef CONFIG_ATA_FIFO -#define CONFIG_ATA_FIFO 8 -#endif #ifndef CONFIG_DEBUG_UART #define CONFIG_DEBUG_UART 0 diff --git a/designs/leon3-altera-ep2s60-ddr/.config b/designs/leon3-altera-ep2s60-ddr/.config index 83154fe3..640bb710 100755 --- a/designs/leon3-altera-ep2s60-ddr/.config +++ b/designs/leon3-altera-ep2s60-ddr/.config @@ -169,11 +169,13 @@ CONFIG_MMU_REPARRAY=y CONFIG_MMU_I8=y # CONFIG_MMU_I16 is not set # CONFIG_MMU_I32 is not set +# CONFIG_MMU_I64 is not set # CONFIG_MMU_D2 is not set # CONFIG_MMU_D4 is not set CONFIG_MMU_D8=y # CONFIG_MMU_D16 is not set # CONFIG_MMU_D32 is not set +# CONFIG_MMU_D64 is not set CONFIG_MMU_FASTWB=y CONFIG_MMU_PAGE_4K=y # CONFIG_MMU_PAGE_8K is not set @@ -282,14 +284,6 @@ CONFIG_GRGPIO_ENABLE=y CONFIG_GRGPIO_WIDTH=32 CONFIG_GRGPIO_IMASK=FFFF -# -# ATA Controller -# -CONFIG_ATA_ENABLE=y -CONFIG_ATAIO=A00 -CONFIG_ATAIRQ=10 -# CONFIG_ATA_MWDMA is not set - # # VHDL Debugging # diff --git a/designs/leon3-altera-ep2s60-ddr/Makefile b/designs/leon3-altera-ep2s60-ddr/Makefile index b767b858..15303c8d 100644 --- a/designs/leon3-altera-ep2s60-ddr/Makefile +++ b/designs/leon3-altera-ep2s60-ddr/Makefile @@ -17,9 +17,9 @@ CLEAN=soft-clean TECHLIBS = altera altera_mf stratixii LIBSKIP = gsi spansion fmf core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann usbhc spw eth hynix + tmtc openchip ihp usbhc spw eth hynix DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - grusbhc spacewire usb greth net haps hcan + grusbhc spacewire usb greth net hcan leon4 leon4v0 FILESKIP = grcan.vhd include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-altera-ep2s60-ddr/ahbrom.vhd b/designs/leon3-altera-ep2s60-ddr/ahbrom.vhd index a61a155a..2091c411 100644 --- a/designs/leon3-altera-ep2s60-ddr/ahbrom.vhd +++ b/designs/leon3-altera-ep2s60-ddr/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-altera-ep2s60-ddr/config.help b/designs/leon3-altera-ep2s60-ddr/config.help index 25edf3d5..415dd9ac 100644 --- a/designs/leon3-altera-ep2s60-ddr/config.help +++ b/designs/leon3-altera-ep2s60-ddr/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -920,32 +953,6 @@ CONFIG_GRGPIO_IMASK The I/O port interrupt mask defines which bits in the I/O port should be able to create an interrupt. -ATA interface enable -CONFIG_ATA_ENABLE - Say Y here to enable the ATA interace from OpenCores. The core has one - AHB slave interface for accessing all control registers. - -ATA register address -CONFIG_ATAIO - The control registers of the ATA core occupy 256 byte, and are - mapped in the AHB bus I/O area (0xFFF00000 - 0xFFFFF000). This setting - defines at which address in the I/O area the registers appear (HADDR[19:8]). - -ATA interrupt -CONFIG_ATAIRQ - Defines which interrupt number the ATA core will generate. - -ATA DMA support -CONFIG_ATA_MWDMA - Say yes here to enable IDE multi-word DMA support (MWDMA). - This will increase transfer rate compared to the PIO mode, - but increase area with approxiamtely 5,000 gates. Note that - DMA is not supported by legacy CF cards, so it makes no sense - to enable it on CF card sockets. - -ATA DMA FIFO depth -CONFIG_ATA_FIFO - Defines the DMA FIFO depth. Choose 8 or 16. UART debugging CONFIG_DEBUG_UART During simulation, the output from the UARTs is printed on the diff --git a/designs/leon3-altera-ep2s60-ddr/config.in b/designs/leon3-altera-ep2s60-ddr/config.in index e1f5b584..e89c5936 100644 --- a/designs/leon3-altera-ep2s60-ddr/config.in +++ b/designs/leon3-altera-ep2s60-ddr/config.in @@ -52,11 +52,6 @@ comment 'Peripherals ' source lib/gaisler/misc/gptimer.in source lib/gaisler/misc/grgpio.in endmenu - - mainmenu_option next_comment - comment 'ATA Controller' - source lib/gaisler/ata/ata.in - endmenu endmenu diff --git a/designs/leon3-altera-ep2s60-ddr/config.vhd b/designs/leon3-altera-ep2s60-ddr/config.vhd index 126f4378..89982f17 100644 --- a/designs/leon3-altera-ep2s60-ddr/config.vhd +++ b/designs/leon3-altera-ep2s60-ddr/config.vhd @@ -144,13 +144,6 @@ package config is constant CFG_GRGPIO_IMASK : integer := 16#FFFF#; constant CFG_GRGPIO_WIDTH : integer := (32); --- ATA interface - constant CFG_ATA : integer := 1; - constant CFG_ATAIO : integer := 16#A00#; - constant CFG_ATAIRQ : integer := (10); - constant CFG_ATADMA : integer := 0; - constant CFG_ATAFIFO : integer := 8; - -- GRLIB debugging constant CFG_DUART : integer := 0; end; diff --git a/designs/leon3-altera-ep2s60-ddr/config.vhd.h b/designs/leon3-altera-ep2s60-ddr/config.vhd.h index a6caf7f3..20ad0ea6 100644 --- a/designs/leon3-altera-ep2s60-ddr/config.vhd.h +++ b/designs/leon3-altera-ep2s60-ddr/config.vhd.h @@ -142,13 +142,6 @@ constant CFG_GRGPIO_IMASK : integer := 16#CONFIG_GRGPIO_IMASK#; constant CFG_GRGPIO_WIDTH : integer := CONFIG_GRGPIO_WIDTH; --- ATA interface - constant CFG_ATA : integer := CONFIG_ATA_ENABLE; - constant CFG_ATAIO : integer := 16#CONFIG_ATAIO#; - constant CFG_ATAIRQ : integer := CONFIG_ATAIRQ; - constant CFG_ATADMA : integer := CONFIG_ATA_MWDMA; - constant CFG_ATAFIFO : integer := CONFIG_ATA_FIFO; - -- GRLIB debugging constant CFG_DUART : integer := CONFIG_DEBUG_UART; diff --git a/designs/leon3-altera-ep2s60-ddr/lconfig.tk b/designs/leon3-altera-ep2s60-ddr/lconfig.tk index b350d834..e20b017a 100755 --- a/designs/leon3-altera-ep2s60-ddr/lconfig.tk +++ b/designs/leon3-altera-ep2s60-ddr/lconfig.tk @@ -644,7 +644,7 @@ set active_menus [list] set processed_top_level 0 set ARCH sparc set menus_per_column 4 -set total_menus 20 +set total_menus 19 proc toplevel_menu {num} { if {$num == 4} then {return 3} @@ -659,7 +659,6 @@ proc toplevel_menu {num} { if {$num == 16} then {return 14} if {$num == 17} then {return 13} if {$num == 18} then {return 13} - if {$num == 19} then {return 13} return $num } @@ -753,7 +752,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -763,7 +763,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -906,8 +908,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -926,6 +930,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1015,9 +1023,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1071,10 +1080,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1120,14 +1130,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1200,13 +1212,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1246,22 +1266,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1318,21 +1606,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1379,36 +1667,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1416,48 +1705,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1513,27 +1803,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1574,16 +1864,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1592,34 +1883,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1676,92 +1968,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1769,18 +2061,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1821,52 +2113,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1874,162 +2167,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2085,45 +2379,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2163,18 +2459,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2182,55 +2479,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2287,24 +2589,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2344,17 +2646,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2362,37 +2665,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2448,16 +2752,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2505,9 +2816,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2529,21 +2838,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2950,7 +3264,6 @@ proc menu13 {w title} { submenu $w.config.f 13 0 "Memory controllers " 14 submenu $w.config.f 13 1 "On-chip RAM/ROM " 17 submenu $w.config.f 13 2 "UARTs, timers and irq control " 18 - submenu $w.config.f 13 3 "ATA Controller" 19 @@ -3452,16 +3765,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_26 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_26 CONFIG_AHBRAM_SZ1 + global tmpvar_28 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_26 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_26 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3523,21 +3836,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_26 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_26 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3558,7 +3871,7 @@ proc menu18 {w title} { wm title $w "UARTs, timers and irq control " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu19 .menu19 \"$title\"" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; catch {destroy .menu13}; unregister_active 13; menu19 .menu19 \"$title\"" frame $w.f button $w.f.back -text "OK" \ -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18" @@ -3596,15 +3909,15 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_27 - minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_27 CONFIG_UA1_FIFO1 + global tmpvar_29 + minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 18 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 18 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3693,19 +4006,19 @@ proc update_menu18 {} { proc update_define_menu18 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_27 + global tmpvar_29 global CONFIG_UA1_FIFO1 - if {$tmpvar_27 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_27 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_27 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_27 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_27 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_27 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3737,153 +4050,31 @@ proc update_define_menu18 {} { } +menu_option menu19 19 "VHDL Debugging " proc menu19 {w title} { set oldFocus [focus] - catch {focus .menu13} catch {destroy $w; unregister_active 19} toplevel $w -class Dialog wm withdraw $w global active_menus set active_menus [lsort -integer [linsert $active_menus end 19]] - message $w.m -width 400 -aspect 300 -text \ - "ATA Controller" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "ATA Controller" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 19; catch {destroy .menu13}; unregister_active 13; menu20 .menu20 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 19 0 "Enable ATA interface " CONFIG_ATA_ENABLE - hex $w.config.f 19 1 "ATA I/O area start address (haddr\[19:8\]) " CONFIG_ATAIO - int $w.config.f 19 2 "Interrupt number " CONFIG_ATAIRQ - bool $w.config.f 19 3 "Enable MWDMA support " CONFIG_ATA_MWDMA - int $w.config.f 19 4 "FIFO depth " CONFIG_ATA_FIFO - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu19 {} { - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {.menu19.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x1.l configure -state normal; } else {.menu19.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x1.l configure -state disabled} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {.menu19.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x2.l configure -state normal; } else {.menu19.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x2.l configure -state disabled} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - configure_entry .menu19.config.f.x3 normal {n l y}} else {configure_entry .menu19.config.f.x3 disabled {y n l}} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {.menu19.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x4.l configure -state normal; } else {.menu19.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x4.l configure -state disabled} -} - - -proc update_define_menu19 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {validate_hex CONFIG_ATAIO "$CONFIG_ATAIO" A00} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {validate_int CONFIG_ATAIRQ "$CONFIG_ATAIRQ" 10} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA&15]} else {set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA|16]} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {validate_int CONFIG_ATA_FIFO "$CONFIG_ATA_FIFO" 8} -} - - -menu_option menu20 20 "VHDL Debugging " -proc menu20 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 20} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 20]] message $w.m -width 400 -aspect 300 -text \ "VHDL Debugging " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "VHDL Debugging " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; break" - set nextscript "catch {focus $oldFocus}; menu21 .menu21 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; break" + set nextscript "catch {focus $oldFocus}; menu20 .menu20 \"$title\"" frame $w.f button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript $w.f.next configure -state disabled bind all "puts \"no more menus\" " button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -3911,7 +4102,7 @@ proc menu20 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 20 0 "Accelerated UART tracing " CONFIG_DEBUG_UART + bool $w.config.f 19 0 "Accelerated UART tracing " CONFIG_DEBUG_UART @@ -3947,11 +4138,11 @@ proc menu20 {w title} { } } -proc update_menu20 {} { +proc update_menu19 {} { } -proc update_define_menu20 {} { +proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES } @@ -3997,7 +4188,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4007,6 +4199,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4031,6 +4225,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4043,14 +4238,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4063,27 +4263,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4093,17 +4293,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4115,12 +4315,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4130,10 +4330,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4144,7 +4344,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4156,26 +4356,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4183,27 +4385,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4243,7 +4449,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4253,7 +4459,7 @@ set CONFIG_AHBRAM_SZ32 0 set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_UART1_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4274,11 +4480,6 @@ set CONFIG_GPT_WDOG FFFF set CONFIG_GRGPIO_ENABLE 0 set CONFIG_GRGPIO_WIDTH 8 set CONFIG_GRGPIO_IMASK 0000 -set CONFIG_ATA_ENABLE 0 -set CONFIG_ATAIO A00 -set CONFIG_ATAIRQ 10 -set CONFIG_ATA_MWDMA 0 -set CONFIG_ATA_FIFO 8 set CONFIG_DEBUG_UART 0 set CONFIG_SYN_ARTISAN 4 set CONFIG_PCI_ENABLE 4 @@ -4335,7 +4536,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4345,6 +4547,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4383,6 +4587,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4395,9 +4600,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4411,239 +4617,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4736,28 +5092,28 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_26 + global tmpvar_28 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_26 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_26 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4786,17 +5142,6 @@ proc writeconfig {file1 file2} { if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRGPIO_WIDTH $CONFIG_GRGPIO_WIDTH $notmod } global CONFIG_GRGPIO_IMASK if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_GRGPIO_IMASK $CONFIG_GRGPIO_IMASK $notmod } - write_comment $cfg $autocfg "ATA Controller" - global CONFIG_ATA_ENABLE - write_tristate $cfg $autocfg CONFIG_ATA_ENABLE $CONFIG_ATA_ENABLE [list $notmod] 2 - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_ATAIO $CONFIG_ATAIO $notmod } - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_ATAIRQ $CONFIG_ATAIRQ $notmod } - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_ATA_MWDMA $CONFIG_ATA_MWDMA [list $notmod] 2 } - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {write_int $cfg $autocfg CONFIG_ATA_FIFO $CONFIG_ATA_FIFO $notmod } write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -4841,7 +5186,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4851,6 +5197,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4869,8 +5217,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -4953,11 +5306,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -4978,6 +5333,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0 global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0 @@ -5067,8 +5426,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5087,6 +5448,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5127,300 +5492,326 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "4" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_26 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_26 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_26 "64" } - global tmpvar_27 - set tmpvar_27 "1" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } + global tmpvar_29 + set tmpvar_29 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } } diff --git a/designs/leon3-altera-ep2s60-ddr/leon3mp.vhd b/designs/leon3-altera-ep2s60-ddr/leon3mp.vhd index fd56c84d..311c365e 100644 --- a/designs/leon3-altera-ep2s60-ddr/leon3mp.vhd +++ b/designs/leon3-altera-ep2s60-ddr/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -35,7 +35,6 @@ use gaisler.ddrpkg.all; use gaisler.leon3.all; use gaisler.uart.all; use gaisler.misc.all; -use gaisler.ata.all; use gaisler.jtag.all; library esa; use esa.memoryctrl.all; @@ -107,25 +106,6 @@ entity leon3mp is -- console/debug UART rxd1 : in std_logic; txd1 : out std_logic; - - -- ATA signals - ata_data : inout std_logic_vector(15 downto 0); - ata_da : out std_logic_vector(2 downto 0); - ata_cs0 : out std_logic; - ata_cs1 : out std_logic; - ata_dior : out std_logic; - ata_diow : out std_logic; - ata_iordy : in std_logic; - ata_intrq : in std_logic; - ata_dmarq : in std_logic; - ata_dmack : out std_logic; - - -- Signals nedded to use CompactFlash with ATA controller - cf_power : out std_logic; -- To turn on power to the CompactFlash - cf_gnd_da : out std_logic_vector(10 downto 3); -- grounded address lines - cf_atasel : out std_logic; -- grounded to select true IDE mode - cf_we : out std_logic; -- should be connected to VCC in true IDE mode --- cf_csel : out std_logic; -- for smsc lan chip eth_aen : out std_logic; @@ -150,7 +130,7 @@ architecture rtl of leon3mp is constant blength : integer := 12; constant fifodepth : integer := 8; - constant maxahbm : integer := NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_ATA; + constant maxahbm : integer := NCPU+CFG_AHB_UART+CFG_AHB_JTAG; signal vcc, gnd : std_logic_vector(7 downto 0); signal memi, smemi : memory_in_type; @@ -202,10 +182,6 @@ architecture rtl of leon3mp is signal dsui : dsu_in_type; signal dsuo : dsu_out_type; - signal cf : cf_out_type; - signal atai : ata_in_type; - signal atao : ata_out_type; - signal gpti : gptimer_in_type; signal gpioi : gpio_in_type; signal gpioo : gpio_out_type; @@ -495,61 +471,6 @@ begin end generate; end generate; - ------------------------------------------------------------------------ ---- ATA Controller --------------------------------------------------- ------------------------------------------------------------------------ - - atac : if CFG_ATA = 1 generate - atac0 : atactrl generic map(tech => 0, fdepth => CFG_ATAFIFO, - mhindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG, - shindex => 5, haddr => CFG_ATAIO, hmask => 16#fff#, pirq => CFG_ATAIRQ, - mwdma => CFG_ATADMA, TWIDTH => 8, -- counter width - -- PIO mode 0 settings (@100MHz clock) - PIO_mode0_T1 => 6, -- 70ns - PIO_mode0_T2 => 28, -- 290ns - PIO_mode0_T4 => 2, -- 30ns - PIO_mode0_Teoc => 23 -- 240ns ==> T0 - T1 - T2 = 600 - 70 - 290 = 240 - ) - port map( rst => rstn, arst => vcc(0), clk => clkm, ahbsi => ahbsi, - ahbso => ahbso(5), ahbmi => ahbmi, ahbmo => ahbmo(NCPU+CFG_AHB_UART+CFG_AHB_JTAG), - cfo => cf, atai => atai, atao => atao); - - ata_data_pad : iopadv generic map (tech => padtech, width => 16, oepol => 1) - port map (ata_data, atao.ddo, atao.oen, atai.ddi); - ata_da_pad : outpadv generic map (tech => padtech, width => 3) - port map (ata_da, atao.da); - ata_cs0_pad : outpad generic map (tech => padtech) - port map (ata_cs0, atao.cs0); - ata_cs1_pad : outpad generic map (tech => padtech) - port map (ata_cs1, atao.cs1); - ata_dior_pad : outpad generic map (tech => padtech) - port map (ata_dior, atao.dior); - ata_diow_pad : outpad generic map (tech => padtech) - port map (ata_diow, atao.diow); - iordy_pad : inpad generic map (tech => padtech) - port map (ata_iordy, atai.iordy); - intrq_pad : inpad generic map (tech => padtech) - port map (ata_intrq, atai.intrq); - dmarq_pad : inpad generic map (tech => padtech) - port map (ata_dmarq, atai.dmarq); - dmack_pad : outpad generic map (tech => padtech) - port map (ata_dmack, atao.dmack); - - -- for CompactFlach mode selection - cf_gnd_da_pad : outpadv generic map (tech => padtech, width => 8) - port map (cf_gnd_da, cf.da); - cf_atasel_pad : outpad generic map (tech => padtech) - port map (cf_atasel, cf.atasel); - cf_we_pad : outpad generic map (tech => padtech) - port map (cf_we, cf.we); - cf_power_pad : outpad generic map (tech => padtech) - port map (cf_power, cf.power); --- cf_csel_pad : outpad generic map (tech => padtech) --- port map (cf_csel, cf.csel); - - end generate; - ----------------------------------------------------------------------- --- AHB ROM ---------------------------------------------------------- ----------------------------------------------------------------------- @@ -578,7 +499,7 @@ begin --- Drive unused bus elements --------------------------------------- ----------------------------------------------------------------------- - nam1 : for i in (NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_ATA) to NAHBMST-1 generate + nam1 : for i in (NCPU+CFG_AHB_UART+CFG_AHB_JTAG) to NAHBMST-1 generate ahbmo(i) <= ahbm_none; end generate; nap0 : for i in 6 to NAPBSLV-1 generate apbo(i) <= apb_none; end generate; diff --git a/designs/leon3-altera-ep2s60-ddr/smc_mctrl.vhd b/designs/leon3-altera-ep2s60-ddr/smc_mctrl.vhd index 3d5069e8..4907a0c1 100644 --- a/designs/leon3-altera-ep2s60-ddr/smc_mctrl.vhd +++ b/designs/leon3-altera-ep2s60-ddr/smc_mctrl.vhd @@ -895,7 +895,6 @@ begin ribdrive <= vbdrive; risbdrive <= vsbdrive; - ahbso.hcache <= not r.area(io); memo.address <= r.address; memo.sa <= r.sa; memo.ramsn <= "111" & r.ramsn; diff --git a/designs/leon3-altera-ep2s60-ddr/testbench.vhd b/designs/leon3-altera-ep2s60-ddr/testbench.vhd index b67a3d96..616ab9d0 100644 --- a/designs/leon3-altera-ep2s60-ddr/testbench.vhd +++ b/designs/leon3-altera-ep2s60-ddr/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -130,27 +130,6 @@ constant lresp : boolean := false; signal sa : std_logic_vector(14 downto 0); signal sd : std_logic_vector(31 downto 0); --- ATA signals -signal ata_rst : std_logic; -signal ata_data : std_logic_vector(15 downto 0); -signal ata_da : std_logic_vector(2 downto 0); -signal ata_cs0 : std_logic; -signal ata_cs1 : std_logic; -signal ata_dior : std_logic; -signal ata_diow : std_logic; -signal ata_iordy : std_logic; -signal ata_intrq : std_logic; -signal ata_dmarq : std_logic; -signal ata_dmack : std_logic; -signal cf_gnd_da : std_logic_vector(10 downto 3); -signal cf_atasel : std_logic; -signal cf_we : std_logic; -signal cf_power : std_logic; -signal cf_csel : std_logic; - -signal from_ata : ata_out_type := ATAO_RESET_VECTOR; -signal to_ata : ata_in_type := ATAI_RESET_VECTOR; - begin -- clock and reset @@ -177,11 +156,8 @@ begin ssram_clk, ssram_adscn, ssram_adsp_n, ssram_adv_n, iosn, ddr_clkin, ddr_clk, ddr_clkb, ddr_cke, ddr_csb, ddr_web, ddr_rasb, ddr_casb, ddr_dm, ddr_dqs2, ddr_ad, ddr_ba, ddr_dq2, - dsubren, dsuact, rxd1, txd1, - ata_data, ata_da, ata_cs0, ata_cs1, - ata_dior, ata_diow, ata_iordy, ata_intrq, ata_dmarq, ata_dmack, cf_power, - cf_gnd_da, cf_atasel, cf_we, eth_aen, eth_readn, - eth_writen, eth_nbe); + dsubren, dsuact, rxd1, txd1, + eth_aen, eth_readn, eth_writen, eth_nbe); ddr0 : mt46v16m16 generic map (index => -1, fname => sdramfile) @@ -210,30 +186,6 @@ begin port map (address(romdepth-1 downto 0), data(31 downto 24), romsn, writen, oen); --- to_ata.csel<=ata_csel; - to_ata.cs(0)<=ata_cs0; - to_ata.cs(1)<=ata_cs1; - --??to_ata.dasp<= - to_ata.da<=ata_da; - to_ata.dmack<=ata_dmack; - to_ata.dior<=ata_dior; - to_ata.diow<=ata_diow; - to_ata.reset<=rst; - - ata_dmarq<=from_ata.dmarq; - ata_intrq<=from_ata.intrq; - ata_iordy<=from_ata.iordy; - - disk: ata_device - generic map(sector_length=>512,log2_size=>14) - port map( - clk => clk, - rst => rst, - d => ata_data, - atai => to_ata, - atao => from_ata - ); - error <= 'H'; -- ERROR pull-up iuerr : process diff --git a/designs/leon3-altera-ep2s60-ddr/tkconfig.h b/designs/leon3-altera-ep2s60-ddr/tkconfig.h index f15dfb2e..8ede1cea 100644 --- a/designs/leon3-altera-ep2s60-ddr/tkconfig.h +++ b/designs/leon3-altera-ep2s60-ddr/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -897,25 +919,6 @@ #define CONFIG_GRGPIO_WIDTH 1 #endif -#ifndef CONFIG_ATA_ENABLE -#define CONFIG_ATA_ENABLE 0 -#endif - -#ifndef CONFIG_ATAIO -#define CONFIG_ATAIO 0 -#endif - -#ifndef CONFIG_ATAIRQ -#define CONFIG_ATAIRQ 0 -#endif - -#ifndef CONFIG_ATA_MWDMA -#define CONFIG_ATA_MWDMA 0 -#endif - -#ifndef CONFIG_ATA_FIFO -#define CONFIG_ATA_FIFO 8 -#endif #ifndef CONFIG_DEBUG_UART #define CONFIG_DEBUG_UART 0 diff --git a/designs/leon3-altera-ep2s60-sdr/.config b/designs/leon3-altera-ep2s60-sdr/.config index 1e9dd0de..05ceff17 100755 --- a/designs/leon3-altera-ep2s60-sdr/.config +++ b/designs/leon3-altera-ep2s60-sdr/.config @@ -170,11 +170,13 @@ CONFIG_MMU_REPARRAY=y CONFIG_MMU_I8=y # CONFIG_MMU_I16 is not set # CONFIG_MMU_I32 is not set +# CONFIG_MMU_I64 is not set # CONFIG_MMU_D2 is not set # CONFIG_MMU_D4 is not set CONFIG_MMU_D8=y # CONFIG_MMU_D16 is not set # CONFIG_MMU_D32 is not set +# CONFIG_MMU_D64 is not set CONFIG_MMU_FASTWB=y CONFIG_MMU_PAGE_4K=y # CONFIG_MMU_PAGE_8K is not set @@ -284,14 +286,6 @@ CONFIG_GRGPIO_ENABLE=y CONFIG_GRGPIO_WIDTH=32 CONFIG_GRGPIO_IMASK=FFFF -# -# ATA Controller -# -CONFIG_ATA_ENABLE=y -CONFIG_ATAIO=A00 -CONFIG_ATAIRQ=10 -# CONFIG_ATA_MWDMA is not set - # # VHDL Debugging # diff --git a/designs/leon3-altera-ep2s60-sdr/Makefile b/designs/leon3-altera-ep2s60-sdr/Makefile index 0ae43583..a0dd3664 100644 --- a/designs/leon3-altera-ep2s60-sdr/Makefile +++ b/designs/leon3-altera-ep2s60-sdr/Makefile @@ -17,11 +17,11 @@ CLEAN=soft-clean TECHLIBS = altera altera_mf stratixii LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - usbhc spw tmtc openchip hynix cypress ihp gleichmann eth \ + usbhc spw tmtc openchip hynix cypress ihp eth \ fmf spansion gsi DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr usb grusbhc spacewire \ - ddr net greth haps + ddr net greth leon4 leon4v0 include $(GRLIB)/software/leon3/Makefile include $(GRLIB)/bin/Makefile diff --git a/designs/leon3-altera-ep2s60-sdr/ahbrom.vhd b/designs/leon3-altera-ep2s60-sdr/ahbrom.vhd index a61a155a..2091c411 100644 --- a/designs/leon3-altera-ep2s60-sdr/ahbrom.vhd +++ b/designs/leon3-altera-ep2s60-sdr/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-altera-ep2s60-sdr/config.help b/designs/leon3-altera-ep2s60-sdr/config.help index 78e45c56..fc8730dd 100644 --- a/designs/leon3-altera-ep2s60-sdr/config.help +++ b/designs/leon3-altera-ep2s60-sdr/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -922,32 +955,6 @@ CONFIG_GRGPIO_IMASK The I/O port interrupt mask defines which bits in the I/O port should be able to create an interrupt. -ATA interface enable -CONFIG_ATA_ENABLE - Say Y here to enable the ATA interace from OpenCores. The core has one - AHB slave interface for accessing all control registers. - -ATA register address -CONFIG_ATAIO - The control registers of the ATA core occupy 256 byte, and are - mapped in the AHB bus I/O area (0xFFF00000 - 0xFFFFF000). This setting - defines at which address in the I/O area the registers appear (HADDR[19:8]). - -ATA interrupt -CONFIG_ATAIRQ - Defines which interrupt number the ATA core will generate. - -ATA DMA support -CONFIG_ATA_MWDMA - Say yes here to enable IDE multi-word DMA support (MWDMA). - This will increase transfer rate compared to the PIO mode, - but increase area with approxiamtely 5,000 gates. Note that - DMA is not supported by legacy CF cards, so it makes no sense - to enable it on CF card sockets. - -ATA DMA FIFO depth -CONFIG_ATA_FIFO - Defines the DMA FIFO depth. Choose 8 or 16. UART debugging CONFIG_DEBUG_UART During simulation, the output from the UARTs is printed on the diff --git a/designs/leon3-altera-ep2s60-sdr/config.in b/designs/leon3-altera-ep2s60-sdr/config.in index e3a89794..471e9c33 100644 --- a/designs/leon3-altera-ep2s60-sdr/config.in +++ b/designs/leon3-altera-ep2s60-sdr/config.in @@ -63,11 +63,6 @@ comment 'Peripherals ' source lib/gaisler/misc/gptimer.in source lib/gaisler/misc/grgpio.in endmenu - - mainmenu_option next_comment - comment 'ATA Controller' - source lib/gaisler/ata/ata.in - endmenu # mainmenu_option next_comment # comment 'Keybord and VGA interface' diff --git a/designs/leon3-altera-ep2s60-sdr/config.vhd b/designs/leon3-altera-ep2s60-sdr/config.vhd index 20512274..2feb5c5a 100644 --- a/designs/leon3-altera-ep2s60-sdr/config.vhd +++ b/designs/leon3-altera-ep2s60-sdr/config.vhd @@ -147,13 +147,6 @@ package config is constant CFG_GRGPIO_IMASK : integer := 16#FFFF#; constant CFG_GRGPIO_WIDTH : integer := (32); --- ATA interface - constant CFG_ATA : integer := 1; - constant CFG_ATAIO : integer := 16#A00#; - constant CFG_ATAIRQ : integer := (10); - constant CFG_ATADMA : integer := 0; - constant CFG_ATAFIFO : integer := 8; - -- GRLIB debugging constant CFG_DUART : integer := 0; end; diff --git a/designs/leon3-altera-ep2s60-sdr/config.vhd.h b/designs/leon3-altera-ep2s60-sdr/config.vhd.h index b34a51f1..c8120899 100644 --- a/designs/leon3-altera-ep2s60-sdr/config.vhd.h +++ b/designs/leon3-altera-ep2s60-sdr/config.vhd.h @@ -145,13 +145,6 @@ constant CFG_GRGPIO_IMASK : integer := 16#CONFIG_GRGPIO_IMASK#; constant CFG_GRGPIO_WIDTH : integer := CONFIG_GRGPIO_WIDTH; --- ATA interface - constant CFG_ATA : integer := CONFIG_ATA_ENABLE; - constant CFG_ATAIO : integer := 16#CONFIG_ATAIO#; - constant CFG_ATAIRQ : integer := CONFIG_ATAIRQ; - constant CFG_ATADMA : integer := CONFIG_ATA_MWDMA; - constant CFG_ATAFIFO : integer := CONFIG_ATA_FIFO; - -- GRLIB debugging constant CFG_DUART : integer := CONFIG_DEBUG_UART; diff --git a/designs/leon3-altera-ep2s60-sdr/lconfig.tk b/designs/leon3-altera-ep2s60-sdr/lconfig.tk index 2f628b9f..5be12b9a 100755 --- a/designs/leon3-altera-ep2s60-sdr/lconfig.tk +++ b/designs/leon3-altera-ep2s60-sdr/lconfig.tk @@ -644,7 +644,7 @@ set active_menus [list] set processed_top_level 0 set ARCH sparc set menus_per_column 4 -set total_menus 20 +set total_menus 19 proc toplevel_menu {num} { if {$num == 4} then {return 3} @@ -659,7 +659,6 @@ proc toplevel_menu {num} { if {$num == 16} then {return 14} if {$num == 17} then {return 13} if {$num == 18} then {return 13} - if {$num == 19} then {return 13} return $num } @@ -753,7 +752,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -763,7 +763,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -906,8 +908,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -926,6 +930,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1015,9 +1023,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1071,10 +1080,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1120,14 +1130,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1200,13 +1212,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1246,22 +1266,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1318,21 +1606,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1379,36 +1667,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1416,48 +1705,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1513,27 +1803,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1574,16 +1864,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1592,34 +1883,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1676,92 +1968,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1769,18 +2061,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1821,52 +2113,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1874,162 +2167,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2085,45 +2379,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2163,18 +2459,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2182,55 +2479,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2287,24 +2589,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2344,17 +2646,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2362,37 +2665,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2448,16 +2752,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2505,9 +2816,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2529,21 +2838,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2950,7 +3264,6 @@ proc menu13 {w title} { submenu $w.config.f 13 0 "Memory controllers " 14 submenu $w.config.f 13 1 "On-chip RAM/ROM " 17 submenu $w.config.f 13 2 "UARTs, timers and irq control " 18 - submenu $w.config.f 13 3 "ATA Controller" 19 @@ -3152,32 +3465,32 @@ proc menu15 {w title} { int $w.config.f 15 3 "RAM waitstates" CONFIG_SRCTRL_RAMWS int $w.config.f 15 4 "IO waitstates" CONFIG_SRCTRL_IOWS bool $w.config.f 15 5 "Use read-modify-write for sub-word writes " CONFIG_SRCTRL_RMW - global tmpvar_26 - minimenu $w.config.f 15 6 "SRAM banks" tmpvar_26 CONFIG_SRCTRL_SRBANKS1 + global tmpvar_28 + minimenu $w.config.f 15 6 "SRAM banks" tmpvar_28 CONFIG_SRCTRL_SRBANKS1 menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"SRAM banks\"" - $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_26 -value "3" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_26 -value "5" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_28 -value "3" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_28 -value "5" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 - global tmpvar_27 - minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_27 CONFIG_SRCTRL_BANKSZ0 + global tmpvar_29 + minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_29 CONFIG_SRCTRL_BANKSZ0 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"SRAM bank size (kb) (0 for programmable)\"" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_27 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_27 -value "256" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_27 -value "512" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_27 -value "1024" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_27 -value "2048" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_27 -value "4096" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_27 -value "8192" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_27 -value "16384" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_27 -value "32768" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_27 -value "65536" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_29 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_29 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_29 -value "512" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_29 -value "1024" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_29 -value "2048" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_29 -value "4096" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_29 -value "8192" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_29 -value "16384" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_29 -value "32768" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_29 -value "65536" -command "update_active" menusplit $w $w.config.f.x7.x.menu 14 int $w.config.f 15 8 "PROM bank select address bit (0 - 28)" CONFIG_SRCTRL_ROMASEL @@ -3253,46 +3566,46 @@ proc update_define_menu15 {} { global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then { set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW&15]} else {set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_SRCTRL_SRBANKS1 - if {$tmpvar_26 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} global CONFIG_SRCTRL_SRBANKS2 - if {$tmpvar_26 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} global CONFIG_SRCTRL_SRBANKS3 - if {$tmpvar_26 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} + if {$tmpvar_28 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} global CONFIG_SRCTRL_SRBANKS4 - if {$tmpvar_26 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} global CONFIG_SRCTRL_SRBANKS5 - if {$tmpvar_26 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} - global tmpvar_27 + if {$tmpvar_28 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} + global tmpvar_29 global CONFIG_SRCTRL_BANKSZ0 - if {$tmpvar_27 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} + if {$tmpvar_29 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} global CONFIG_SRCTRL_BANKSZ1 - if {$tmpvar_27 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} + if {$tmpvar_29 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} global CONFIG_SRCTRL_BANKSZ2 - if {$tmpvar_27 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} + if {$tmpvar_29 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} global CONFIG_SRCTRL_BANKSZ3 - if {$tmpvar_27 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} + if {$tmpvar_29 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} global CONFIG_SRCTRL_BANKSZ4 - if {$tmpvar_27 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} + if {$tmpvar_29 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} global CONFIG_SRCTRL_BANKSZ5 - if {$tmpvar_27 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} + if {$tmpvar_29 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} global CONFIG_SRCTRL_BANKSZ6 - if {$tmpvar_27 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} + if {$tmpvar_29 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} global CONFIG_SRCTRL_BANKSZ7 - if {$tmpvar_27 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} + if {$tmpvar_29 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} global CONFIG_SRCTRL_BANKSZ8 - if {$tmpvar_27 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} + if {$tmpvar_29 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} global CONFIG_SRCTRL_BANKSZ9 - if {$tmpvar_27 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} + if {$tmpvar_29 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} global CONFIG_SRCTRL_BANKSZ10 - if {$tmpvar_27 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} + if {$tmpvar_29 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} global CONFIG_SRCTRL_BANKSZ11 - if {$tmpvar_27 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} + if {$tmpvar_29 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} global CONFIG_SRCTRL_BANKSZ12 - if {$tmpvar_27 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} + if {$tmpvar_29 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} global CONFIG_SRCTRL_BANKSZ13 - if {$tmpvar_27 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} + if {$tmpvar_29 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_ROMASEL "$CONFIG_SRCTRL_ROMASEL" 19} } @@ -3516,16 +3829,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_28 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 + global tmpvar_30 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_30 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3587,21 +3900,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_30 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_30 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3622,7 +3935,7 @@ proc menu18 {w title} { wm title $w "UARTs, timers and irq control " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu19 .menu19 \"$title\"" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; catch {destroy .menu13}; unregister_active 13; menu19 .menu19 \"$title\"" frame $w.f button $w.f.back -text "OK" \ -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18" @@ -3660,15 +3973,15 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 18 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 18 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3757,19 +4070,19 @@ proc update_menu18 {} { proc update_define_menu18 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3801,153 +4114,31 @@ proc update_define_menu18 {} { } +menu_option menu19 19 "VHDL Debugging " proc menu19 {w title} { set oldFocus [focus] - catch {focus .menu13} catch {destroy $w; unregister_active 19} toplevel $w -class Dialog wm withdraw $w global active_menus set active_menus [lsort -integer [linsert $active_menus end 19]] - message $w.m -width 400 -aspect 300 -text \ - "ATA Controller" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "ATA Controller" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 19; catch {destroy .menu13}; unregister_active 13; menu20 .menu20 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 19 0 "Enable ATA interface " CONFIG_ATA_ENABLE - hex $w.config.f 19 1 "ATA I/O area start address (haddr\[19:8\]) " CONFIG_ATAIO - int $w.config.f 19 2 "Interrupt number " CONFIG_ATAIRQ - bool $w.config.f 19 3 "Enable MWDMA support " CONFIG_ATA_MWDMA - int $w.config.f 19 4 "FIFO depth " CONFIG_ATA_FIFO - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu19 {} { - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {.menu19.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x1.l configure -state normal; } else {.menu19.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x1.l configure -state disabled} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {.menu19.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x2.l configure -state normal; } else {.menu19.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x2.l configure -state disabled} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - configure_entry .menu19.config.f.x3 normal {n l y}} else {configure_entry .menu19.config.f.x3 disabled {y n l}} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {.menu19.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x4.l configure -state normal; } else {.menu19.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x4.l configure -state disabled} -} - - -proc update_define_menu19 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {validate_hex CONFIG_ATAIO "$CONFIG_ATAIO" A00} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {validate_int CONFIG_ATAIRQ "$CONFIG_ATAIRQ" 10} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA&15]} else {set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA|16]} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {validate_int CONFIG_ATA_FIFO "$CONFIG_ATA_FIFO" 8} -} - - -menu_option menu20 20 "VHDL Debugging " -proc menu20 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 20} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 20]] message $w.m -width 400 -aspect 300 -text \ "VHDL Debugging " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "VHDL Debugging " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; break" - set nextscript "catch {focus $oldFocus}; menu21 .menu21 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; break" + set nextscript "catch {focus $oldFocus}; menu20 .menu20 \"$title\"" frame $w.f button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript $w.f.next configure -state disabled bind all "puts \"no more menus\" " button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -3975,7 +4166,7 @@ proc menu20 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 20 0 "Accelerated UART tracing " CONFIG_DEBUG_UART + bool $w.config.f 19 0 "Accelerated UART tracing " CONFIG_DEBUG_UART @@ -4011,11 +4202,11 @@ proc menu20 {w title} { } } -proc update_menu20 {} { +proc update_menu19 {} { } -proc update_define_menu20 {} { +proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES } @@ -4061,7 +4252,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4071,6 +4263,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4095,6 +4289,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4107,14 +4302,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4127,27 +4327,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4157,17 +4357,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4179,12 +4379,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4194,10 +4394,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4208,7 +4408,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4220,26 +4420,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4247,27 +4449,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4293,13 +4499,13 @@ set CONFIG_SRCTRL_PROMWS 3 set CONFIG_SRCTRL_RAMWS 0 set CONFIG_SRCTRL_IOWS 0 set CONFIG_SRCTRL_RMW 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_SRCTRL_SRBANKS1 0 set CONFIG_SRCTRL_SRBANKS2 0 set CONFIG_SRCTRL_SRBANKS3 0 set CONFIG_SRCTRL_SRBANKS4 0 set CONFIG_SRCTRL_SRBANKS5 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_SRCTRL_BANKSZ0 0 set CONFIG_SRCTRL_BANKSZ1 0 set CONFIG_SRCTRL_BANKSZ2 0 @@ -4329,7 +4535,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4339,7 +4545,7 @@ set CONFIG_AHBRAM_SZ32 0 set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4360,11 +4566,6 @@ set CONFIG_GPT_WDOG FFFF set CONFIG_GRGPIO_ENABLE 0 set CONFIG_GRGPIO_WIDTH 8 set CONFIG_GRGPIO_IMASK 0000 -set CONFIG_ATA_ENABLE 0 -set CONFIG_ATAIO A00 -set CONFIG_ATAIRQ 10 -set CONFIG_ATA_MWDMA 0 -set CONFIG_ATA_FIFO 8 set CONFIG_DEBUG_UART 0 set CONFIG_SYN_ARTISAN 4 set CONFIG_PCI_ENABLE 4 @@ -4421,7 +4622,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4431,6 +4633,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4469,6 +4673,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4481,9 +4686,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4497,239 +4703,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4786,29 +5142,29 @@ proc writeconfig {file1 file2} { if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_IOWS $CONFIG_SRCTRL_IOWS $notmod } global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_RMW $CONFIG_SRCTRL_RMW [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } - if { $tmpvar_26 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } - if { $tmpvar_26 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} - global tmpvar_27 + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } + if { $tmpvar_28 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } + if { $tmpvar_28 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} + global tmpvar_29 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } - if { $tmpvar_27 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } - if { $tmpvar_27 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } - if { $tmpvar_27 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } - if { $tmpvar_27 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } - if { $tmpvar_27 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } - if { $tmpvar_27 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } - if { $tmpvar_27 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } - if { $tmpvar_27 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } + if { $tmpvar_29 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } + if { $tmpvar_29 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } + if { $tmpvar_29 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } + if { $tmpvar_29 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } + if { $tmpvar_29 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } + if { $tmpvar_29 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } + if { $tmpvar_29 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } + if { $tmpvar_29 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_ROMASEL $CONFIG_SRCTRL_ROMASEL $notmod } write_comment $cfg $autocfg "Leon2 memory controller " @@ -4841,28 +5197,28 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_28 + global tmpvar_30 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4891,17 +5247,6 @@ proc writeconfig {file1 file2} { if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRGPIO_WIDTH $CONFIG_GRGPIO_WIDTH $notmod } global CONFIG_GRGPIO_IMASK if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_GRGPIO_IMASK $CONFIG_GRGPIO_IMASK $notmod } - write_comment $cfg $autocfg "ATA Controller" - global CONFIG_ATA_ENABLE - write_tristate $cfg $autocfg CONFIG_ATA_ENABLE $CONFIG_ATA_ENABLE [list $notmod] 2 - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_ATAIO $CONFIG_ATAIO $notmod } - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_ATAIRQ $CONFIG_ATAIRQ $notmod } - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_ATA_MWDMA $CONFIG_ATA_MWDMA [list $notmod] 2 } - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {write_int $cfg $autocfg CONFIG_ATA_FIFO $CONFIG_ATA_FIFO $notmod } write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -4946,7 +5291,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4956,6 +5302,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4974,8 +5322,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5058,11 +5411,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5083,6 +5438,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_SRCTRL_SRBANKS1; set CONFIG_SRCTRL_SRBANKS1 0 global CONFIG_SRCTRL_SRBANKS2; set CONFIG_SRCTRL_SRBANKS2 0 global CONFIG_SRCTRL_SRBANKS3; set CONFIG_SRCTRL_SRBANKS3 0 @@ -5191,8 +5550,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5211,6 +5572,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5251,342 +5616,368 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "1" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "1" global CONFIG_SRCTRL_SRBANKS1 - if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_28 "1" } global CONFIG_SRCTRL_SRBANKS2 - if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_28 "2" } global CONFIG_SRCTRL_SRBANKS3 - if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_26 "3" } + if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_28 "3" } global CONFIG_SRCTRL_SRBANKS4 - if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_28 "4" } global CONFIG_SRCTRL_SRBANKS5 - if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_26 "5" } - global tmpvar_27 - set tmpvar_27 "0" + if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_28 "5" } + global tmpvar_29 + set tmpvar_29 "0" global CONFIG_SRCTRL_BANKSZ0 - if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_29 "8" } global CONFIG_SRCTRL_BANKSZ1 - if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_29 "16" } global CONFIG_SRCTRL_BANKSZ2 - if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_29 "32" } global CONFIG_SRCTRL_BANKSZ3 - if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_27 "64" } + if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_29 "64" } global CONFIG_SRCTRL_BANKSZ4 - if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_27 "128" } + if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_29 "128" } global CONFIG_SRCTRL_BANKSZ5 - if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_27 "256" } + if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_29 "256" } global CONFIG_SRCTRL_BANKSZ6 - if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_27 "512" } + if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_29 "512" } global CONFIG_SRCTRL_BANKSZ7 - if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_27 "1024" } + if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_29 "1024" } global CONFIG_SRCTRL_BANKSZ8 - if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_27 "2048" } + if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_29 "2048" } global CONFIG_SRCTRL_BANKSZ9 - if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_27 "4096" } + if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_29 "4096" } global CONFIG_SRCTRL_BANKSZ10 - if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_27 "8192" } + if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_29 "8192" } global CONFIG_SRCTRL_BANKSZ11 - if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_27 "16384" } + if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_29 "16384" } global CONFIG_SRCTRL_BANKSZ12 - if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_27 "32768" } + if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_29 "32768" } global CONFIG_SRCTRL_BANKSZ13 - if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_27 "65536" } - global tmpvar_28 - set tmpvar_28 "4" + if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_29 "65536" } + global tmpvar_30 + set tmpvar_30 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_30 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_30 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_30 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_30 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_30 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_30 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-altera-ep2s60-sdr/leon3mp.vhd b/designs/leon3-altera-ep2s60-sdr/leon3mp.vhd index 2773fd08..9a0dfd1c 100644 --- a/designs/leon3-altera-ep2s60-sdr/leon3mp.vhd +++ b/designs/leon3-altera-ep2s60-sdr/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -34,7 +34,6 @@ use gaisler.memctrl.all; use gaisler.leon3.all; use gaisler.uart.all; use gaisler.misc.all; -use gaisler.ata.all; use gaisler.jtag.all; library esa; use esa.memoryctrl.all; @@ -98,27 +97,6 @@ entity leon3mp is -- console UART rxd1 : in std_ulogic; txd1 : out std_ulogic; - - -- ATA signals --- pragma translate_off - ata_rst : out std_logic; --- pragma translate_on - ata_data : inout std_logic_vector(15 downto 0); - ata_da : out std_logic_vector(2 downto 0); - ata_cs0 : out std_logic; - ata_cs1 : out std_logic; - ata_dior : out std_logic; - ata_diow : out std_logic; - ata_iordy : in std_logic; - ata_intrq : in std_logic; - ata_dmack : out std_logic; - - -- Signals nedded to use CompactFlash with ATA controller - cf_power : out std_logic; -- To turn on power to the CompactFlash - cf_gnd_da : out std_logic_vector(10 downto 3); -- grounded address lines - cf_atasel : out std_logic; -- grounded to select true IDE mode - cf_we : out std_logic; -- should be connected to VCC in true IDE mode - cf_csel : out std_logic; -- for smsc lan chip eth_aen : out std_logic; @@ -143,7 +121,7 @@ architecture rtl of leon3mp is constant blength : integer := 12; constant fifodepth : integer := 8; - constant maxahbm : integer := NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_ATA; + constant maxahbm : integer := NCPU+CFG_AHB_UART+CFG_AHB_JTAG; signal vcc, gnd : std_logic_vector(7 downto 0); signal memi : memory_in_type; @@ -181,10 +159,6 @@ architecture rtl of leon3mp is signal dsui : dsu_in_type; signal dsuo : dsu_out_type; - signal cf : cf_out_type; - signal atai : ata_in_type; - signal atao : ata_out_type; - signal gpti : gptimer_in_type; signal gpioi : gpio_in_type; signal gpioo : gpio_out_type; @@ -476,65 +450,6 @@ begin end generate; end generate; - ------------------------------------------------------------------------ ---- ATA Controller --------------------------------------------------- ------------------------------------------------------------------------ - atac : if CFG_ATA = 1 generate - atac0 : atactrl - generic map(tech => 0, fdepth => CFG_ATAFIFO, - mhindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG, - shindex => 5, haddr => CFG_ATAIO, hmask => 16#fff#, pirq => CFG_ATAIRQ, - mwdma => CFG_ATADMA, TWIDTH => 8, - -- PIO mode 0 settings (@100MHz clock) - PIO_mode0_T1 => 6, -- 70ns - PIO_mode0_T2 => 28, -- 290ns - PIO_mode0_T4 => 2, -- 30ns - PIO_mode0_Teoc => 23 -- 240ns ==> T0 - T1 - T2 = 600 - 70 - 290 = 240 - ) - port map(rst => rstn, arst => vcc(0), clk => clkm, ahbsi => ahbsi, - ahbso => ahbso(5), ahbmi => ahbmi, ahbmo => ahbmo(NCPU+CFG_AHB_UART+CFG_AHB_JTAG), - cfo => cf, atai => atai, atao => atao); - --- pragma translate_off - ata_rst_pad : outpad generic map (tech => padtech) - port map (ata_rst, atao.rstn); --- pragma translate_on - ata_data_pad : iopadv generic map (tech => padtech, width => 16, oepol => 1) - port map (ata_data, atao.ddo, atao.oen, atai.ddi); - ata_da_pad : outpadv generic map (tech => padtech, width => 3) - port map (ata_da, atao.da); - ata_cs0_pad : outpad generic map (tech => padtech) - port map (ata_cs0, atao.cs0); - ata_cs1_pad : outpad generic map (tech => padtech) - port map (ata_cs1, atao.cs1); - ata_dior_pad : outpad generic map (tech => padtech) - port map (ata_dior, atao.dior); - ata_diow_pad : outpad generic map (tech => padtech) - port map (ata_diow, atao.diow); - iordy_pad : inpad generic map (tech => padtech) - port map (ata_iordy, atai.iordy); - intrq_pad : inpad generic map (tech => padtech) - port map (ata_intrq, atai.intrq); --- dmarq_pad : inpad generic map (tech => padtech) --- port map (ata_dmarq, ata.dmarq); - dmack_pad : outpad generic map (tech => padtech) - port map (ata_dmack, atao.dmack); - - -- for CompactFlach mode selection - cf_gnd_da_pad : outpadv generic map (tech => padtech, width => 8) - port map (cf_gnd_da, cf.da); - cf_atasel_pad : outpad generic map (tech => padtech) - port map (cf_atasel, cf.atasel); - cf_we_pad : outpad generic map (tech => padtech) - port map (cf_we, cf.we); - cf_power_pad : outpad generic map (tech => padtech) - port map (cf_power, cf.power); - cf_csel_pad : outpad generic map (tech => padtech) - port map (cf_csel, cf.csel); - - end generate; - ----------------------------------------------------------------------- --- AHB ROM ---------------------------------------------------------- ----------------------------------------------------------------------- @@ -563,7 +478,7 @@ begin --- Drive unused bus elements --------------------------------------- ----------------------------------------------------------------------- - nam1 : for i in (NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_ATA) to NAHBMST-1 generate + nam1 : for i in (NCPU+CFG_AHB_UART+CFG_AHB_JTAG) to NAHBMST-1 generate ahbmo(i) <= ahbm_none; end generate; nap0 : for i in 6 to NAPBSLV-1 generate apbo(i) <= apb_none; end generate; diff --git a/designs/leon3-altera-ep2s60-sdr/smc_mctrl.vhd b/designs/leon3-altera-ep2s60-sdr/smc_mctrl.vhd index 3d5069e8..4907a0c1 100644 --- a/designs/leon3-altera-ep2s60-sdr/smc_mctrl.vhd +++ b/designs/leon3-altera-ep2s60-sdr/smc_mctrl.vhd @@ -895,7 +895,6 @@ begin ribdrive <= vbdrive; risbdrive <= vsbdrive; - ahbso.hcache <= not r.area(io); memo.address <= r.address; memo.sa <= r.sa; memo.ramsn <= "111" & r.ramsn; diff --git a/designs/leon3-altera-ep2s60-sdr/testbench.vhd b/designs/leon3-altera-ep2s60-sdr/testbench.vhd index 5f494b52..f4982095 100644 --- a/designs/leon3-altera-ep2s60-sdr/testbench.vhd +++ b/designs/leon3-altera-ep2s60-sdr/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -30,8 +30,6 @@ library techmap; use techmap.gencomp.all; library micron; use micron.components.all; -library opencores; -use opencores.occomp.all; use work.debug.all; use work.config.all; -- configuration @@ -118,23 +116,6 @@ constant lresp : boolean := false; signal sa : std_logic_vector(14 downto 0); signal sd : std_logic_vector(31 downto 0); --- ATA signals -signal ata_rst : std_logic; -signal ata_data : std_logic_vector(15 downto 0); -signal ata_da : std_logic_vector(2 downto 0); -signal ata_cs0 : std_logic; -signal ata_cs1 : std_logic; -signal ata_dior : std_logic; -signal ata_diow : std_logic; -signal ata_iordy : std_logic; -signal ata_intrq : std_logic; -signal ata_dmack : std_logic; -signal cf_gnd_da : std_logic_vector(10 downto 3); -signal cf_atasel : std_logic; -signal cf_we : std_logic; -signal cf_power : std_logic; -signal cf_csel : std_logic; - begin -- clock and reset @@ -147,9 +128,7 @@ begin port map (rst, clk, error, address, data, ramsn, ramoen, rwen, mben, iosn, romsn, oen, writen, open, open, sa(11 downto 0), sd, sdclk, sdcke, sdcsn, sdwen, sdrasn, sdcasn, sddqm, sdba, dsutx, dsurx, dsubren, - dsuact, rxd1, txd1, ata_rst, ata_data, ata_da, ata_cs0, ata_cs1, - ata_dior, ata_diow, ata_iordy, ata_intrq, ata_dmack, cf_power, - cf_gnd_da, cf_atasel, cf_we, cf_csel, eth_aen, eth_readn, + dsuact, rxd1, txd1, eth_aen, eth_readn, eth_writen, eth_nbe); sd1 : if (CFG_MCTRL_SDEN = 1) and (CFG_MCTRL_SEPBUS = 1) generate @@ -177,19 +156,6 @@ begin port map (address(sramdepth+1 downto 2), data(31-i*8 downto 24-i*8), ramsn, rwen, ramoen); end generate; - - ata_dev0 : ata_device_oc - port map( - ata_rst_n => ata_rst, - ata_data => ata_data, - ata_da => ata_da, - ata_cs0 => ata_cs0, - ata_cs1 => ata_cs1, - ata_dior_n => ata_dior, - ata_diow_n => ata_diow, - ata_iordy => ata_iordy, - ata_intrq => ata_intrq - ); error <= 'H'; -- ERROR pull-up diff --git a/designs/leon3-altera-ep2s60-sdr/tkconfig.h b/designs/leon3-altera-ep2s60-sdr/tkconfig.h index 837217db..61990464 100644 --- a/designs/leon3-altera-ep2s60-sdr/tkconfig.h +++ b/designs/leon3-altera-ep2s60-sdr/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -949,25 +971,6 @@ #define CONFIG_GRGPIO_WIDTH 1 #endif -#ifndef CONFIG_ATA_ENABLE -#define CONFIG_ATA_ENABLE 0 -#endif - -#ifndef CONFIG_ATAIO -#define CONFIG_ATAIO 0 -#endif - -#ifndef CONFIG_ATAIRQ -#define CONFIG_ATAIRQ 0 -#endif - -#ifndef CONFIG_ATA_MWDMA -#define CONFIG_ATA_MWDMA 0 -#endif - -#ifndef CONFIG_ATA_FIFO -#define CONFIG_ATA_FIFO 8 -#endif #ifndef CONFIG_DEBUG_UART #define CONFIG_DEBUG_UART 0 diff --git a/designs/leon3-altera-ep2sgx90-av/Makefile b/designs/leon3-altera-ep2sgx90-av/Makefile index 919fe425..b49a86fa 100644 --- a/designs/leon3-altera-ep2sgx90-av/Makefile +++ b/designs/leon3-altera-ep2sgx90-av/Makefile @@ -17,9 +17,9 @@ CLEAN=soft-clean TECHLIBS = altera altera_mf stratixii LIBSKIP = gsi spansion fmf core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann usbhc spw + tmtc openchip ihp usbhc spw DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - grusbhc spacewire usb haps hcan + grusbhc spacewire usb hcan FILESKIP = grcan.vhd include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-altera-ep2sgx90-av/ahbrom.vhd b/designs/leon3-altera-ep2sgx90-av/ahbrom.vhd index 5d2cd2c2..a0de4872 100644 --- a/designs/leon3-altera-ep2sgx90-av/ahbrom.vhd +++ b/designs/leon3-altera-ep2sgx90-av/ahbrom.vhd @@ -85,7 +85,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-altera-ep2sgx90-av/config.help b/designs/leon3-altera-ep2sgx90-av/config.help index adde092f..43ca6c9d 100644 --- a/designs/leon3-altera-ep2sgx90-av/config.help +++ b/designs/leon3-altera-ep2sgx90-av/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-altera-ep2sgx90-av/lconfig.tk b/designs/leon3-altera-ep2sgx90-av/lconfig.tk index 91af976c..759e22f6 100755 --- a/designs/leon3-altera-ep2sgx90-av/lconfig.tk +++ b/designs/leon3-altera-ep2sgx90-av/lconfig.tk @@ -753,7 +753,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -763,7 +764,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -906,8 +909,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -926,6 +931,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1015,9 +1024,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1071,10 +1081,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1120,14 +1131,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1200,13 +1213,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1246,22 +1267,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1318,21 +1607,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1379,36 +1668,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1416,48 +1706,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1513,27 +1804,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1574,16 +1865,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1592,34 +1884,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1676,92 +1969,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1769,18 +2062,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1821,52 +2114,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1874,162 +2168,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2085,45 +2380,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2163,18 +2460,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2182,55 +2480,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2287,24 +2590,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2344,17 +2647,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2362,37 +2666,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2448,16 +2753,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2505,9 +2817,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2529,21 +2839,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2852,14 +3167,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2933,17 +3248,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3596,16 +3911,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3667,21 +3982,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3741,14 +4056,14 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 18 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3802,17 +4117,17 @@ proc update_define_menu18 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3868,15 +4183,15 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3965,19 +4280,19 @@ proc update_menu19 {} { proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4147,7 +4462,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4157,6 +4473,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4181,6 +4499,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4193,14 +4512,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4213,27 +4537,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4243,17 +4567,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4265,12 +4589,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4280,10 +4604,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4294,7 +4618,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4306,26 +4630,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4333,27 +4659,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4374,7 +4704,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4422,7 +4752,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4433,14 +4763,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4518,7 +4848,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4528,6 +4859,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4566,6 +4899,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4578,9 +4912,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4594,239 +4929,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4871,13 +5356,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -4969,38 +5454,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5073,7 +5558,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5083,6 +5569,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5101,8 +5589,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5185,11 +5678,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5210,6 +5705,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5309,8 +5808,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5329,6 +5830,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5369,324 +5874,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-altera-ep2sgx90-av/sram32.vhd b/designs/leon3-altera-ep2sgx90-av/sram32.vhd index 9a6400ad..d7dd68de 100644 --- a/designs/leon3-altera-ep2sgx90-av/sram32.vhd +++ b/designs/leon3-altera-ep2sgx90-av/sram32.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-ep2sgx90-av/testbench.vhd b/designs/leon3-altera-ep2sgx90-av/testbench.vhd index 21187872..1dd3d0e0 100644 --- a/designs/leon3-altera-ep2sgx90-av/testbench.vhd +++ b/designs/leon3-altera-ep2sgx90-av/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-ep2sgx90-av/tkconfig.h b/designs/leon3-altera-ep2sgx90-av/tkconfig.h index 06040f7e..af7f3f2c 100644 --- a/designs/leon3-altera-ep2sgx90-av/tkconfig.h +++ b/designs/leon3-altera-ep2sgx90-av/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-altera-ep3c25-eek/Makefile b/designs/leon3-altera-ep3c25-eek/Makefile index 42f25883..76db66e3 100644 --- a/designs/leon3-altera-ep3c25-eek/Makefile +++ b/designs/leon3-altera-ep3c25-eek/Makefile @@ -18,10 +18,10 @@ CLEAN=soft-clean TECHLIBS = altera altera_mf cycloneiii LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann stratixii stratixiii usbhc spw + tmtc openchip ihp stratixii stratixiii usbhc spw DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - grusbhc spacewire hcan leon4 leon4b64 l2cache iommu slink ascs pwm \ - coremp7 gr1553b haps + grusbhc spacewire hcan leon4 leon4v0 l2cache iommu slink ascs pwm \ + gr1553b FILESKIP = grcan.vhd include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-altera-ep3c25-eek/ahbrom.vhd b/designs/leon3-altera-ep3c25-eek/ahbrom.vhd index 897ffde0..9f5c8631 100644 --- a/designs/leon3-altera-ep3c25-eek/ahbrom.vhd +++ b/designs/leon3-altera-ep3c25-eek/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-altera-ep3c25-eek/altera_eek_clkgen.vhd b/designs/leon3-altera-ep3c25-eek/altera_eek_clkgen.vhd index 1232501c..b33793ad 100644 --- a/designs/leon3-altera-ep3c25-eek/altera_eek_clkgen.vhd +++ b/designs/leon3-altera-ep3c25-eek/altera_eek_clkgen.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-ep3c25-eek/config.help b/designs/leon3-altera-ep3c25-eek/config.help index c09becbb..d297348c 100644 --- a/designs/leon3-altera-ep3c25-eek/config.help +++ b/designs/leon3-altera-ep3c25-eek/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -837,7 +870,7 @@ CONFIG_SPIMCTRL_SDCARD Read command CONFIG_SPIMCTRL_READCMD - Read instruction for SPI memory device + Read instruction for SPI memory device (hex). Dummy byte CONFIG_SPIMCTRL_DUMMYBYTE @@ -847,6 +880,10 @@ Dual output CONFIG_SPIMCTRL_DUALOUTPUT Memory device supports dual output when reading data. +Address offset +CONFIG_SPIMCTRL_OFFSET + Offset that will be added by core on SPI memory address (hex). + Clock scaler CONFIG_SPIMCTRL_SCALER Selects the divisor used when dividing the system clock to produce diff --git a/designs/leon3-altera-ep3c25-eek/config.vhd.h b/designs/leon3-altera-ep3c25-eek/config.vhd.h index 82a79da9..a6fe4877 100644 --- a/designs/leon3-altera-ep3c25-eek/config.vhd.h +++ b/designs/leon3-altera-ep3c25-eek/config.vhd.h @@ -128,6 +128,7 @@ constant CFG_SPIMCTRL_SCALER : integer := CONFIG_SPIMCTRL_SCALER; constant CFG_SPIMCTRL_ASCALER : integer := CONFIG_SPIMCTRL_ASCALER; constant CFG_SPIMCTRL_PWRUPCNT : integer := CONFIG_SPIMCTRL_PWRUPCNT; + constant CFG_SPIMCTRL_OFFSET : integer := 16#CONFIG_SPIMCTRL_OFFSET#; -- AHB ROM constant CFG_AHBROMEN : integer := CONFIG_AHBROM_ENABLE; diff --git a/designs/leon3-altera-ep3c25-eek/lconfig.tk b/designs/leon3-altera-ep3c25-eek/lconfig.tk index 392a26a3..e2ac9293 100755 --- a/designs/leon3-altera-ep3c25-eek/lconfig.tk +++ b/designs/leon3-altera-ep3c25-eek/lconfig.tk @@ -758,7 +758,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -768,7 +769,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -911,8 +914,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -931,6 +936,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1020,9 +1029,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1076,10 +1086,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1125,14 +1136,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1205,13 +1218,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1251,22 +1272,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1323,21 +1612,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1384,36 +1673,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1421,48 +1711,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1518,27 +1809,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1579,16 +1870,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1597,34 +1889,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1681,92 +1974,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1774,18 +2067,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1826,52 +2119,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1879,162 +2173,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2090,45 +2385,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2168,18 +2465,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2187,55 +2485,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2292,24 +2595,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2349,17 +2652,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2367,37 +2671,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2453,16 +2758,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2510,9 +2822,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2534,21 +2844,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2857,14 +3172,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2938,17 +3253,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3635,9 +3950,10 @@ proc menu18 {w title} { hex $w.config.f 18 2 "Read instruction " CONFIG_SPIMCTRL_READCMD bool $w.config.f 18 3 "Read instruction requires dummy byte " CONFIG_SPIMCTRL_DUMMYBYTE bool $w.config.f 18 4 "Enable dual output for reads " CONFIG_SPIMCTRL_DUALOUTPUT - int $w.config.f 18 5 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER - int $w.config.f 18 6 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER - int $w.config.f 18 7 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT + hex $w.config.f 18 5 "Address offset " CONFIG_SPIMCTRL_OFFSET + int $w.config.f 18 6 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER + int $w.config.f 18 7 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER + int $w.config.f 18 8 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT @@ -3687,12 +4003,14 @@ proc update_menu18 {} { global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { configure_entry .menu18.config.f.x4 normal {n l y}} else {configure_entry .menu18.config.f.x4 disabled {y n l}} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu18.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x5.l configure -state normal; } else {.menu18.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x5.l configure -state disabled} global CONFIG_SPIMCTRL_SCALER - if {($CONFIG_SPIMCTRL == 1)} then {.menu18.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x5.l configure -state normal; } else {.menu18.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x5.l configure -state disabled} - global CONFIG_SPIMCTRL_ASCALER if {($CONFIG_SPIMCTRL == 1)} then {.menu18.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x6.l configure -state normal; } else {.menu18.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x6.l configure -state disabled} - global CONFIG_SPIMCTRL_PWRUPCNT + global CONFIG_SPIMCTRL_ASCALER if {($CONFIG_SPIMCTRL == 1)} then {.menu18.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x7.l configure -state normal; } else {.menu18.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x7.l configure -state disabled} + global CONFIG_SPIMCTRL_PWRUPCNT + if {($CONFIG_SPIMCTRL == 1)} then {.menu18.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x8.l configure -state normal; } else {.menu18.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x8.l configure -state disabled} } @@ -3711,6 +4029,8 @@ proc update_define_menu18 {} { global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT&15]} else {set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT|16]} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {validate_hex CONFIG_SPIMCTRL_OFFSET "$CONFIG_SPIMCTRL_OFFSET" 0} global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_SCALER "$CONFIG_SPIMCTRL_SCALER" 1} global CONFIG_SPIMCTRL_ASCALER @@ -3775,16 +4095,16 @@ proc menu19 {w title} { hex $w.config.f 19 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 19 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 19 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 19 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 19 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 19 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3846,21 +4166,21 @@ proc update_define_menu19 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3920,14 +4240,14 @@ proc menu20 {w title} { bool $w.config.f 20 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 20 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 20 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 20 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3981,17 +4301,17 @@ proc update_define_menu20 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -4047,15 +4367,15 @@ proc menu21 {w title} { bool $w.config.f 21 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 21 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 21 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 21 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 21 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4144,19 +4464,19 @@ proc update_menu21 {} { proc update_define_menu21 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4350,12 +4670,12 @@ proc menu23 {w title} { bool $w.config.f 23 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN int $w.config.f 23 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN bool $w.config.f 23 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_30 - minimenu $w.config.f 23 11 "Fault-tolerance" tmpvar_30 CONFIG_SPICTRL_NOFT + global tmpvar_32 + minimenu $w.config.f 23 11 "Fault-tolerance" tmpvar_32 CONFIG_SPICTRL_NOFT menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_30 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_30 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_30 -value "TMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_32 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_32 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_32 -value "TMR" -command "update_active" menusplit $w $w.config.f.x11.x.menu 3 @@ -4455,13 +4775,13 @@ proc update_define_menu23 {} { global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_30 + global tmpvar_32 global CONFIG_SPICTRL_NOFT - if {$tmpvar_30 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + if {$tmpvar_32 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} global CONFIG_SPICTRL_DMRFT - if {$tmpvar_30 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + if {$tmpvar_32 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} global CONFIG_SPICTRL_TMRFT - if {$tmpvar_30 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} + if {$tmpvar_32 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } @@ -4703,7 +5023,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4713,6 +5034,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4737,6 +5060,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4749,14 +5073,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4769,27 +5098,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4799,17 +5128,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4821,12 +5150,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4836,10 +5165,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4850,7 +5179,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4862,26 +5191,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4889,27 +5220,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4930,7 +5265,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4965,6 +5300,7 @@ set CONFIG_SPIMCTRL_SDCARD 0 set CONFIG_SPIMCTRL_READCMD 0B set CONFIG_SPIMCTRL_DUMMYBYTE 0 set CONFIG_SPIMCTRL_DUALOUTPUT 0 +set CONFIG_SPIMCTRL_OFFSET 0 set CONFIG_SPIMCTRL_SCALER 1 set CONFIG_SPIMCTRL_ASCALER 8 set CONFIG_SPIMCTRL_PWRUPCNT 0 @@ -4972,7 +5308,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4983,14 +5319,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5024,7 +5360,7 @@ set CONFIG_SPICTRL_ODMODE 0 set CONFIG_SPICTRL_TWEN 0 set CONFIG_SPICTRL_MAXWLEN 0 set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_SPICTRL_NOFT 0 set CONFIG_SPICTRL_DMRFT 0 set CONFIG_SPICTRL_TMRFT 0 @@ -5087,7 +5423,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5097,6 +5434,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5135,6 +5474,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5147,9 +5487,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5163,239 +5504,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5440,13 +5931,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5518,6 +6009,8 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUMMYBYTE $CONFIG_SPIMCTRL_DUMMYBYTE [list $notmod] 2 } global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUALOUTPUT $CONFIG_SPIMCTRL_DUALOUTPUT [list $notmod] 2 } + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_hex $cfg $autocfg CONFIG_SPIMCTRL_OFFSET $CONFIG_SPIMCTRL_OFFSET $notmod } global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_SCALER $CONFIG_SPIMCTRL_SCALER $notmod } global CONFIG_SPIMCTRL_ASCALER @@ -5533,38 +6026,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5621,11 +6114,11 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_30 + global tmpvar_32 if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_30 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_30 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_30 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_32 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "LCD and VGA DAC " global CONFIG_LCD_ENABLE write_tristate $cfg $autocfg CONFIG_LCD_ENABLE $CONFIG_LCD_ENABLE [list $notmod] 2 @@ -5677,7 +6170,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5687,6 +6181,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5705,8 +6201,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5789,11 +6290,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5814,6 +6317,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5916,8 +6423,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5936,6 +6445,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5976,332 +6489,358 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } - global tmpvar_30 - set tmpvar_30 "None" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } + global tmpvar_32 + set tmpvar_32 "None" global CONFIG_SPICTRL_NOFT - if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_30 "None" } + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_32 "None" } global CONFIG_SPICTRL_DMRFT - if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_30 "Parity-DMR" } + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_32 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT - if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_30 "TMR" } + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_32 "TMR" } } diff --git a/designs/leon3-altera-ep3c25-eek/leon3mp.vhd b/designs/leon3-altera-ep3c25-eek/leon3mp.vhd index 047553a1..2386c532 100644 --- a/designs/leon3-altera-ep3c25-eek/leon3mp.vhd +++ b/designs/leon3-altera-ep3c25-eek/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-ep3c25-eek/serializer.vhd b/designs/leon3-altera-ep3c25-eek/serializer.vhd index 2a34129b..83728b0d 100644 --- a/designs/leon3-altera-ep3c25-eek/serializer.vhd +++ b/designs/leon3-altera-ep3c25-eek/serializer.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-ep3c25-eek/testbench.vhd b/designs/leon3-altera-ep3c25-eek/testbench.vhd index 9556bdf2..57e5b30e 100644 --- a/designs/leon3-altera-ep3c25-eek/testbench.vhd +++ b/designs/leon3-altera-ep3c25-eek/testbench.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-ep3c25-eek/tkconfig.h b/designs/leon3-altera-ep3c25-eek/tkconfig.h index d0dae2a4..8da8b078 100644 --- a/designs/leon3-altera-ep3c25-eek/tkconfig.h +++ b/designs/leon3-altera-ep3c25-eek/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -845,6 +867,10 @@ #ifndef CONFIG_SPIMCTRL_PWRUPCNT #define CONFIG_SPIMCTRL_PWRUPCNT 0 #endif + +#ifndef CONFIG_SPIMCTRL_OFFSET +#define CONFIG_SPIMCTRL_OFFSET 0 +#endif #ifndef CONFIG_AHBROM_ENABLE #define CONFIG_AHBROM_ENABLE 0 #endif diff --git a/designs/leon3-altera-ep3c25/Makefile b/designs/leon3-altera-ep3c25/Makefile index 406dde07..924694d3 100644 --- a/designs/leon3-altera-ep3c25/Makefile +++ b/designs/leon3-altera-ep3c25/Makefile @@ -17,9 +17,9 @@ CLEAN=soft-clean TECHLIBS = altera altera_mf cycloneiii LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF fmf gsi \ - tmtc openchip ihp gleichmann stratixii stratixiii usbhc spw eth spansion dw02 + tmtc openchip ihp stratixii stratixiii usbhc spw eth spansion dw02 DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - grusbhc spacewire haps net greth ata usb hcan + grusbhc spacewire net greth usb hcan leon4v0 leon4 FILESKIP = grcan.vhd include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-altera-ep3c25/ahbrom.vhd b/designs/leon3-altera-ep3c25/ahbrom.vhd index a61a155a..2091c411 100644 --- a/designs/leon3-altera-ep3c25/ahbrom.vhd +++ b/designs/leon3-altera-ep3c25/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-altera-ep3c25/config.help b/designs/leon3-altera-ep3c25/config.help index be6239f8..bff81587 100644 --- a/designs/leon3-altera-ep3c25/config.help +++ b/designs/leon3-altera-ep3c25/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-altera-ep3c25/lconfig.tk b/designs/leon3-altera-ep3c25/lconfig.tk index 7279e2c9..e236a230 100755 --- a/designs/leon3-altera-ep3c25/lconfig.tk +++ b/designs/leon3-altera-ep3c25/lconfig.tk @@ -753,7 +753,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -763,7 +764,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -906,8 +909,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -926,6 +931,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1015,9 +1024,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1071,10 +1081,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1120,14 +1131,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1200,13 +1213,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1246,22 +1267,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1318,21 +1607,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1379,36 +1668,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1416,48 +1706,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1513,27 +1804,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1574,16 +1865,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1592,34 +1884,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1676,92 +1969,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1769,18 +2062,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1821,52 +2114,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1874,162 +2168,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2085,45 +2380,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2163,18 +2460,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2182,55 +2480,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2287,24 +2590,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2344,17 +2647,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2362,37 +2666,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2448,16 +2753,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2505,9 +2817,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2529,21 +2839,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -3559,16 +3874,16 @@ proc menu18 {w title} { hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_26 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_26 CONFIG_AHBRAM_SZ1 + global tmpvar_28 + minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_26 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_26 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3630,21 +3945,21 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_26 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_26 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3703,15 +4018,15 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_27 - minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_27 CONFIG_UA1_FIFO1 + global tmpvar_29 + minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3800,19 +4115,19 @@ proc update_menu19 {} { proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_27 + global tmpvar_29 global CONFIG_UA1_FIFO1 - if {$tmpvar_27 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_27 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_27 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_27 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_27 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_27 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3982,7 +4297,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -3992,6 +4308,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4016,6 +4334,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4028,14 +4347,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4048,27 +4372,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4078,17 +4402,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4100,12 +4424,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4115,10 +4439,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4129,7 +4453,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4141,26 +4465,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4168,27 +4494,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4230,7 +4560,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4240,7 +4570,7 @@ set CONFIG_AHBRAM_SZ32 0 set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_UART1_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4317,7 +4647,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4327,6 +4658,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4365,6 +4698,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4377,9 +4711,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4393,239 +4728,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4723,28 +5208,28 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_26 + global tmpvar_28 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_26 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_26 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4817,7 +5302,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4827,6 +5313,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4845,8 +5333,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -4929,11 +5422,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -4954,6 +5449,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0 global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0 @@ -5043,8 +5542,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5063,6 +5564,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5103,300 +5608,326 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "4" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_26 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_26 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_26 "64" } - global tmpvar_27 - set tmpvar_27 "1" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } + global tmpvar_29 + set tmpvar_29 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } } diff --git a/designs/leon3-altera-ep3c25/leon3mp.vhd b/designs/leon3-altera-ep3c25/leon3mp.vhd index f2d81f83..2521f6a1 100644 --- a/designs/leon3-altera-ep3c25/leon3mp.vhd +++ b/designs/leon3-altera-ep3c25/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-ep3c25/testbench.vhd b/designs/leon3-altera-ep3c25/testbench.vhd index 3dbfab93..8161779c 100644 --- a/designs/leon3-altera-ep3c25/testbench.vhd +++ b/designs/leon3-altera-ep3c25/testbench.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-ep3c25/tkconfig.h b/designs/leon3-altera-ep3c25/tkconfig.h index cbc9fa10..d14ca5fa 100644 --- a/designs/leon3-altera-ep3c25/tkconfig.h +++ b/designs/leon3-altera-ep3c25/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-altera-ep3sl150/Makefile b/designs/leon3-altera-ep3sl150/Makefile index f9ac624b..e001fba7 100644 --- a/designs/leon3-altera-ep3sl150/Makefile +++ b/designs/leon3-altera-ep3sl150/Makefile @@ -17,9 +17,9 @@ CLEAN=soft-clean TECHLIBS = altera altera_mf stratixiii LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF fmf gsi \ - tmtc openchip ihp gleichmann stratixii usbhc spw spansion + tmtc openchip ihp stratixii usbhc spw spansion DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft can \ - grusbhc spacewire haps ata usb hcan + grusbhc spacewire usb hcan FILESKIP = grcan.vhd include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-altera-ep3sl150/ahbrom.vhd b/designs/leon3-altera-ep3sl150/ahbrom.vhd index a61a155a..2091c411 100644 --- a/designs/leon3-altera-ep3sl150/ahbrom.vhd +++ b/designs/leon3-altera-ep3sl150/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-altera-ep3sl150/config.help b/designs/leon3-altera-ep3sl150/config.help index 89578fa7..972dec4b 100644 --- a/designs/leon3-altera-ep3sl150/config.help +++ b/designs/leon3-altera-ep3sl150/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-altera-ep3sl150/lconfig.tk b/designs/leon3-altera-ep3sl150/lconfig.tk index 957ecf6c..6bd980ab 100755 --- a/designs/leon3-altera-ep3sl150/lconfig.tk +++ b/designs/leon3-altera-ep3sl150/lconfig.tk @@ -754,7 +754,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -764,7 +765,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -907,8 +910,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -927,6 +932,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1016,9 +1025,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1072,10 +1082,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1121,14 +1132,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1201,13 +1214,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1247,22 +1268,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1319,21 +1608,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1380,36 +1669,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1417,48 +1707,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1514,27 +1805,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1575,16 +1866,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1593,34 +1885,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1677,92 +1970,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1770,18 +2063,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1822,52 +2115,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1875,162 +2169,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2086,45 +2381,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2164,18 +2461,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2183,55 +2481,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2288,24 +2591,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2345,17 +2648,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2363,37 +2667,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2449,16 +2754,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2506,9 +2818,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2530,21 +2840,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2853,14 +3168,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2934,17 +3249,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3705,16 +4020,16 @@ proc menu18 {w title} { hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3776,21 +4091,21 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3850,14 +4165,14 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 19 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3911,17 +4226,17 @@ proc update_define_menu19 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3977,15 +4292,15 @@ proc menu20 {w title} { bool $w.config.f 20 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 20 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 20 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4074,19 +4389,19 @@ proc update_menu20 {} { proc update_define_menu20 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4256,7 +4571,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4266,6 +4582,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4290,6 +4608,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4302,14 +4621,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4322,27 +4646,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4352,17 +4676,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4374,12 +4698,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4389,10 +4713,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4403,7 +4727,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4415,26 +4739,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4442,27 +4768,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4483,7 +4813,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4533,7 +4863,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4544,14 +4874,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4629,7 +4959,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4639,6 +4970,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4677,6 +5010,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4689,9 +5023,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4705,239 +5040,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4982,13 +5467,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5085,38 +5570,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5189,7 +5674,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5199,6 +5685,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5217,8 +5705,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5301,11 +5794,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5326,6 +5821,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5425,8 +5924,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5445,6 +5946,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5485,324 +5990,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-altera-ep3sl150/leon3mp.vhd b/designs/leon3-altera-ep3sl150/leon3mp.vhd index 268f1200..f19403f4 100644 --- a/designs/leon3-altera-ep3sl150/leon3mp.vhd +++ b/designs/leon3-altera-ep3sl150/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-ep3sl150/testbench.vhd b/designs/leon3-altera-ep3sl150/testbench.vhd index 625597c8..3b41f748 100644 --- a/designs/leon3-altera-ep3sl150/testbench.vhd +++ b/designs/leon3-altera-ep3sl150/testbench.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-altera-ep3sl150/tkconfig.h b/designs/leon3-altera-ep3sl150/tkconfig.h index cec29dcf..82ced31d 100644 --- a/designs/leon3-altera-ep3sl150/tkconfig.h +++ b/designs/leon3-altera-ep3sl150/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-arrow-bemicro-sdk/.config b/designs/leon3-arrow-bemicro-sdk/.config index 562d2eb8..36902f41 100755 --- a/designs/leon3-arrow-bemicro-sdk/.config +++ b/designs/leon3-arrow-bemicro-sdk/.config @@ -40,7 +40,8 @@ CONFIG_SYN_CYCLONEIII=y # CONFIG_SYN_TM65GPLUS is not set # CONFIG_SYN_TSMC90 is not set # CONFIG_SYN_UMC is not set -# CONFIG_SYN_SPARTAN2 is not set +# CONFIG_SYN_ARTIX7 is not set +# CONFIG_SYN_KINTEX7 is not set # CONFIG_SYN_SPARTAN3 is not set # CONFIG_SYN_SPARTAN3E is not set # CONFIG_SYN_SPARTAN6 is not set @@ -50,6 +51,8 @@ CONFIG_SYN_CYCLONEIII=y # CONFIG_SYN_VIRTEX4 is not set # CONFIG_SYN_VIRTEX5 is not set # CONFIG_SYN_VIRTEX6 is not set +# CONFIG_SYN_VIRTEX7 is not set +# CONFIG_SYN_ZYNQ7000 is not set # CONFIG_SYN_INFER_RAM is not set # CONFIG_SYN_INFER_PADS is not set # CONFIG_SYN_NO_ASYNC is not set @@ -69,17 +72,22 @@ CONFIG_CLK_ALTDLL=y # CONFIG_CLK_FUSPLL is not set # CONFIG_CLK_LIB18T is not set # CONFIG_CLK_RHUMC is not set +# CONFIG_CLK_CLKPLLE2 is not set # CONFIG_CLK_CLKDLL is not set # CONFIG_CLK_DCM is not set CONFIG_CLK_MUL=5 CONFIG_CLK_DIV=5 # CONFIG_PCI_SYSCLK is not set -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 # # Processor # +CONFIG_LEON3=y +CONFIG_PROC_NUM=1 +# CONFIG_LEON3_MIN is not set +# CONFIG_LEON3_GP is not set +# CONFIG_LEON3_HP is not set +CONFIG_LEON3_CUSTOM=y # # Integer unit @@ -160,6 +168,7 @@ CONFIG_MMU_REPINCREMENT=y CONFIG_MMU_I8=y # CONFIG_MMU_I16 is not set # CONFIG_MMU_I32 is not set +# CONFIG_MMU_I64 is not set CONFIG_MMU_PAGE_4K=y # CONFIG_MMU_PAGE_8K is not set # CONFIG_MMU_PAGE_16K is not set @@ -234,14 +243,20 @@ CONFIG_DDRSP_RSKEW=0 # # SPI memory controller # -# CONFIG_SPIMCTRL is not set +CONFIG_SPIMCTRL=y +# CONFIG_SPIMCTRL_SDCARD is not set +CONFIG_SPIMCTRL_READCMD=0b +CONFIG_SPIMCTRL_DUMMYBYTE=y +# CONFIG_SPIMCTRL_DUALOUTPUT is not set +CONFIG_SPIMCTRL_OFFSET=50000 +CONFIG_SPIMCTRL_SCALER=1 +CONFIG_SPIMCTRL_ASCALER=2 +CONFIG_SPIMCTRL_PWRUPCNT=0 # # On-chip RAM/ROM # -CONFIG_AHBROM_ENABLE=y -CONFIG_AHBROM_START=000 -# CONFIG_AHBROM_PIPE is not set +# CONFIG_AHBROM_ENABLE is not set # CONFIG_AHBRAM_ENABLE is not set # diff --git a/designs/leon3-arrow-bemicro-sdk/Makefile b/designs/leon3-arrow-bemicro-sdk/Makefile index 2ad30d81..20d5ae5d 100644 --- a/designs/leon3-arrow-bemicro-sdk/Makefile +++ b/designs/leon3-arrow-bemicro-sdk/Makefile @@ -17,11 +17,11 @@ CLEAN=soft-clean TECHLIBS = altera altera_mf cycloneiii LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann stratixii stratixiii spw \ + tmtc openchip ihp stratixii stratixiii spw \ oppencores DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - grusbhc spacewire hcan leon4 leon4b64 l2cache iommu slink ascs pwm \ - coremp7 gr1553b haps ata usb + grusbhc spacewire hcan leon4 leon4v0 l2cache iommu slink ascs pwm \ + gr1553b usb FILESKIP = grcan.vhd include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-arrow-bemicro-sdk/README.txt b/designs/leon3-arrow-bemicro-sdk/README.txt index ce3ea137..691553d4 100644 --- a/designs/leon3-arrow-bemicro-sdk/README.txt +++ b/designs/leon3-arrow-bemicro-sdk/README.txt @@ -22,21 +22,124 @@ reference config). 1. Boot ROM ----------- -The board does not have a PROM that can hold boot software. In order -to have the processor boot successfully after reset there are two -options: 1) Include an AHBROM on the device. 2) Use SPIMCTRL and place -boot software on SD card. - -For the (simulation) system test to function, the design is by default -configured to include an AHBROM. If you don't update the AHBROM with -something sensible for hardware it is better to disable it before -running synthesis. - -The SPI memory controller (SPIMCTRL) and AHBROM cores cannot both be -enabled simultaneously. If you want this, you need to edit -leon3mp.vhd. - -See comment about SPI SD Card interface below. +Boot Flash is provided via SPIMCTRL from the board's EPCS device. + +The design can also use on-chip ROM via the AHBROM core. Note that the +SPI memory controller must be disabled to include the AHBROM core in +the design. If both cores are enabled in xconfig only the AHBROM core +will be instantiated in leon3mp.vhd. + +The rest of this section explains how to work with SPIMCTRL in this +design: + +Typically the lower part of the EPCS device will hold the +configuration bitstream for the FPGA. The SPIMCTRL core is configured +with an offset value that will be added to the incoming AHB address +before the address is propagated to the EPCS device. The default +offset is 0x50000 (this value is set via xconfig and the constant is +called CFG_SPIMCTRL_OFFSET). When the processor starts after power-up +it will read address 0x0, this will be translated by SPIMCTRL to +0x50000. (See section below for how to program the FPGA configuration +bitstream into the EPCS device). + +SPIMCTRL can only add this offset to accesses made via the core's +memory area. For accesses made via the register interface the offset +must be taken into account. This means that if we want to program the +Flash with an application which is linked to address 0x0 (our typical +bootloader) then we need to add the offset 0x50000 before programming +the file with GRMON. We load the Flash with our application starting +at 0x50000 and SPIMCTRL will then translate accesses from AMBA address +0x0 + n to Flash address 0x50000 + n. + +The example below shows how to program prom.srec, which should be +present at AMBA address 0x0 to a SPI Flash device where SPIMCTRL adds +an offset to the incoming address. + +First we check which offset that SPIMCTRL adds: + +user@host$ grep SPIMCTRL_OFFSET config.vhd + constant CFG_SPIMCTRL_OFFSET : integer := 16#50000#; + +.. SPIMCTRL will add 0x50000 to the AMBA address. We now create a +S-REC file where we add this offset to our data. There are several +tools that allow us to do this (including search and replace in a text +editor) here we use srec_cat to create prom_off.srec: + +user@host$ srec_cat prom.srec -offset 0x50000 -o prom_off.srec +user@host$ srec_info prom.srec +Format: Motorola S-Record +Header: "prom.srec" +Execution Start Address: 00000000 +Data: 0000 - 022F +user@host$ srec_info prom_off.srec +Format: Motorola S-Record +Header: "prom.srec" +Execution Start Address: 00050000 +Data: 050000 - 05022F +user@host$ + +We then use GRMON2 to load the S-REC. First we check that our Flash device does not +contain data at (AMBA) address 0x0: + +grmon2> mem 0 + 0x00000000 ffffffff ffffffff ffffffff ffffffff ................ + 0x00000010 ffffffff ffffffff ffffffff ffffffff ................ + 0x00000020 ffffffff ffffffff ffffffff ffffffff ................ + 0x00000030 ffffffff ffffffff ffffffff ffffffff ................ + +If all data is not 0xff at this address then either there is +configuration data at the specified offset (and the design can be +synthesized with a larger offset), or the Flash has previously been +programmed with application data. + +If the Flash is erased (all 0xFF) we can proceed with loading our S-REC: + +grmon2> spim flash detect + Got manufacturer ID 0x20 and Device ID 0x2015 + No device match for READ ID instruction, trying RES instruction.. + Found matching device: ST/Numonyx M25P16 + +grmon2> spim flash load prom_off.srec + 00050000 prom.srec 1.4kB / 1.4kB [===============>] 100% + Total size: 560B (1.52kbit/s) + Entry point 0x50000 + Image prom_off.srec loaded + +The data has been loaded and is available at address 0x0: + +grmon2> mem 0 + 0x00000000 81d82000 03000004 821060e0 81884000 .. .......`...@. + 0x00000010 81900000 81980000 81800000 a1800000 ................ + 0x00000020 01000000 03002040 8210600f c2a00040 ...... @..`....@ + 0x00000030 84100000 01000000 01000000 01000000 ................ + +grmon2> + +The "verify" command in GRMON performs normal memory accesses. Using +this command we can check that what the processor will see matches +what we have in the (unmodified) prom.srec: + +grmon2> verify prom.srec + 00000000 prom.srec 1.5kB / 1.5kB [===============>] 100% + Total size: 560B (10.64kbit/s) + Entry point 0x0 + Image of prom.srec verified without errors + +grmon2> + +The flash can be cleared using the GRMON command "spim flash erase". +Note that this will erase the entire Flash device, including the FPGA +configuration bitstream. + +For simulation, the spi_flash simulation Model in testbench.vhd knows +about the offset and will subtract the offset value before accessing +its internal memory array. To illustrate: + +1. Processor AMBA address -> SPIMCTRL +2. SPIMCTRL creates Flash address = Amba address + CFG_SPIMCTRL_OFFSET + and sends to spi_flash +3. spi_flash calculates: Memory array address = Flash address-CFG_SPIMCTRL_OFFSET = AMBA address +4. spi_flash returns data, which is prom.srec[AMBA address] 2. Simulation -------------- @@ -228,8 +331,8 @@ Celsius. 6. SPI SD Card interface ---------------- -The design can be configured to include a SPIMCTRL core that is -connected to the SD card slot. The SPIMCTRL core allows reading from +The design can be modified to include a SPIMCTRL core that is +connected to the SD card slot. The SPIMCTRL core allows reading from a SD card without software support. This means that the SD card can be used as a boot PROM if a PROM file is written in raw mode directly to the start of card. @@ -246,11 +349,12 @@ support. If the design is configured to include more than one SPI controller, the second SPI controller will be connected to the SD card slot. -If more than one SPICTRL core is included in the design, the SPI -memory controller (SPIMCTRL) core must be disabled. - -Also note that the SPIMCTRL core cannot be enabled if the on-chip AHB -ROM is enabled. +In the current version of this design the SPIMCTRL connected to the +SD card has been commented out. To interface with the SD card either: +1) Enable both SPICTRL cores and use the second core to communicate +with the SD card, or +2) Modify leon3mp.vhd and include the instantiations of the, now +commented out, SPIMCTRL core connected to the SD card signals. 7. Ethernet interface --------------------- diff --git a/designs/leon3-arrow-bemicro-sdk/ahbrom.vhd b/designs/leon3-arrow-bemicro-sdk/ahbrom.vhd index 2918f22a..bcde6e8e 100644 --- a/designs/leon3-arrow-bemicro-sdk/ahbrom.vhd +++ b/designs/leon3-arrow-bemicro-sdk/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-arrow-bemicro-sdk/config.help b/designs/leon3-arrow-bemicro-sdk/config.help index 17521b90..a707eb59 100644 --- a/designs/leon3-arrow-bemicro-sdk/config.help +++ b/designs/leon3-arrow-bemicro-sdk/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -752,7 +785,7 @@ CONFIG_SPIMCTRL_SDCARD Read command CONFIG_SPIMCTRL_READCMD - Read instruction for SPI memory device + Read instruction for SPI memory device (hex). Dummy byte CONFIG_SPIMCTRL_DUMMYBYTE @@ -762,6 +795,10 @@ Dual output CONFIG_SPIMCTRL_DUALOUTPUT Memory device supports dual output when reading data. +Address offset +CONFIG_SPIMCTRL_OFFSET + Offset that will be added by core on SPI memory address (hex). + Clock scaler CONFIG_SPIMCTRL_SCALER Selects the divisor used when dividing the system clock to produce diff --git a/designs/leon3-arrow-bemicro-sdk/config.vhd b/designs/leon3-arrow-bemicro-sdk/config.vhd index 4413885f..048a2e28 100644 --- a/designs/leon3-arrow-bemicro-sdk/config.vhd +++ b/designs/leon3-arrow-bemicro-sdk/config.vhd @@ -111,20 +111,21 @@ package config is constant CFG_DDRSP_SIZE : integer := (8); constant CFG_DDRSP_RSKEW : integer := (0); -- SPI memory controller - constant CFG_SPIMCTRL : integer := 0; + constant CFG_SPIMCTRL : integer := 1; constant CFG_SPIMCTRL_SDCARD : integer := 0; - constant CFG_SPIMCTRL_READCMD : integer := 16#0#; - constant CFG_SPIMCTRL_DUMMYBYTE : integer := 0; + constant CFG_SPIMCTRL_READCMD : integer := 16#0b#; + constant CFG_SPIMCTRL_DUMMYBYTE : integer := 1; constant CFG_SPIMCTRL_DUALOUTPUT : integer := 0; - constant CFG_SPIMCTRL_SCALER : integer := 1; - constant CFG_SPIMCTRL_ASCALER : integer := 1; - constant CFG_SPIMCTRL_PWRUPCNT : integer := 0; + constant CFG_SPIMCTRL_SCALER : integer := (1); + constant CFG_SPIMCTRL_ASCALER : integer := (2); + constant CFG_SPIMCTRL_PWRUPCNT : integer := (0); + constant CFG_SPIMCTRL_OFFSET : integer := 16#50000#; -- AHB ROM - constant CFG_AHBROMEN : integer := 1; + constant CFG_AHBROMEN : integer := 0; constant CFG_AHBROPIP : integer := 0; constant CFG_AHBRODDR : integer := 16#000#; - constant CFG_ROMADDR : integer := 16#100#; - constant CFG_ROMMASK : integer := 16#E00# + 16#100#; + constant CFG_ROMADDR : integer := 16#000#; + constant CFG_ROMMASK : integer := 16#E00# + 16#000#; -- AHB RAM constant CFG_AHBRAMEN : integer := 0; constant CFG_AHBRSZ : integer := 1; diff --git a/designs/leon3-arrow-bemicro-sdk/config.vhd.h b/designs/leon3-arrow-bemicro-sdk/config.vhd.h index de63922f..a106c636 100644 --- a/designs/leon3-arrow-bemicro-sdk/config.vhd.h +++ b/designs/leon3-arrow-bemicro-sdk/config.vhd.h @@ -113,6 +113,7 @@ constant CFG_SPIMCTRL_SCALER : integer := CONFIG_SPIMCTRL_SCALER; constant CFG_SPIMCTRL_ASCALER : integer := CONFIG_SPIMCTRL_ASCALER; constant CFG_SPIMCTRL_PWRUPCNT : integer := CONFIG_SPIMCTRL_PWRUPCNT; + constant CFG_SPIMCTRL_OFFSET : integer := 16#CONFIG_SPIMCTRL_OFFSET#; -- AHB ROM constant CFG_AHBROMEN : integer := CONFIG_AHBROM_ENABLE; diff --git a/designs/leon3-arrow-bemicro-sdk/lconfig.tk b/designs/leon3-arrow-bemicro-sdk/lconfig.tk index 594f8d4a..ad64301c 100755 --- a/designs/leon3-arrow-bemicro-sdk/lconfig.tk +++ b/designs/leon3-arrow-bemicro-sdk/lconfig.tk @@ -754,7 +754,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -764,7 +765,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -907,8 +910,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -927,6 +932,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1016,9 +1025,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1072,10 +1082,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1121,14 +1132,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1201,13 +1214,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1247,22 +1268,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1319,21 +1608,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1380,36 +1669,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1417,48 +1707,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1514,27 +1805,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1575,16 +1866,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1593,34 +1885,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1677,92 +1970,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1770,18 +2063,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1822,52 +2115,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1875,162 +2169,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2086,45 +2381,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2164,18 +2461,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2183,55 +2481,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2288,24 +2591,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2345,17 +2648,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2363,37 +2667,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2449,16 +2754,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2506,9 +2818,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2530,21 +2840,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2853,14 +3168,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2934,17 +3249,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3358,9 +3673,10 @@ proc menu16 {w title} { hex $w.config.f 16 2 "Read instruction " CONFIG_SPIMCTRL_READCMD bool $w.config.f 16 3 "Read instruction requires dummy byte " CONFIG_SPIMCTRL_DUMMYBYTE bool $w.config.f 16 4 "Enable dual output for reads " CONFIG_SPIMCTRL_DUALOUTPUT - int $w.config.f 16 5 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER - int $w.config.f 16 6 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER - int $w.config.f 16 7 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT + hex $w.config.f 16 5 "Address offset " CONFIG_SPIMCTRL_OFFSET + int $w.config.f 16 6 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER + int $w.config.f 16 7 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER + int $w.config.f 16 8 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT @@ -3410,12 +3726,14 @@ proc update_menu16 {} { global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { configure_entry .menu16.config.f.x4 normal {n l y}} else {configure_entry .menu16.config.f.x4 disabled {y n l}} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu16.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x5.l configure -state normal; } else {.menu16.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x5.l configure -state disabled} global CONFIG_SPIMCTRL_SCALER - if {($CONFIG_SPIMCTRL == 1)} then {.menu16.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x5.l configure -state normal; } else {.menu16.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x5.l configure -state disabled} - global CONFIG_SPIMCTRL_ASCALER if {($CONFIG_SPIMCTRL == 1)} then {.menu16.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x6.l configure -state normal; } else {.menu16.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x6.l configure -state disabled} - global CONFIG_SPIMCTRL_PWRUPCNT + global CONFIG_SPIMCTRL_ASCALER if {($CONFIG_SPIMCTRL == 1)} then {.menu16.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x7.l configure -state normal; } else {.menu16.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x7.l configure -state disabled} + global CONFIG_SPIMCTRL_PWRUPCNT + if {($CONFIG_SPIMCTRL == 1)} then {.menu16.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x8.l configure -state normal; } else {.menu16.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x8.l configure -state disabled} } @@ -3434,6 +3752,8 @@ proc update_define_menu16 {} { global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT&15]} else {set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT|16]} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {validate_hex CONFIG_SPIMCTRL_OFFSET "$CONFIG_SPIMCTRL_OFFSET" 0} global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_SCALER "$CONFIG_SPIMCTRL_SCALER" 1} global CONFIG_SPIMCTRL_ASCALER @@ -3498,16 +3818,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3569,21 +3889,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3643,14 +3963,14 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 18 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3704,17 +4024,17 @@ proc update_define_menu18 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3770,15 +4090,15 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3867,19 +4187,19 @@ proc update_menu19 {} { proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3973,12 +4293,12 @@ proc menu20 {w title} { bool $w.config.f 20 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN int $w.config.f 20 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN bool $w.config.f 20 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_30 - minimenu $w.config.f 20 11 "Fault-tolerance" tmpvar_30 CONFIG_SPICTRL_NOFT + global tmpvar_32 + minimenu $w.config.f 20 11 "Fault-tolerance" tmpvar_32 CONFIG_SPICTRL_NOFT menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_30 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_30 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_30 -value "TMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_32 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_32 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_32 -value "TMR" -command "update_active" menusplit $w $w.config.f.x11.x.menu 3 @@ -4078,13 +4398,13 @@ proc update_define_menu20 {} { global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_30 + global tmpvar_32 global CONFIG_SPICTRL_NOFT - if {$tmpvar_30 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + if {$tmpvar_32 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} global CONFIG_SPICTRL_DMRFT - if {$tmpvar_30 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + if {$tmpvar_32 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} global CONFIG_SPICTRL_TMRFT - if {$tmpvar_30 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} + if {$tmpvar_32 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } @@ -4226,7 +4546,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4236,6 +4557,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4260,6 +4583,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4272,14 +4596,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4292,27 +4621,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4322,17 +4651,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4344,12 +4673,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4359,10 +4688,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4373,7 +4702,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4385,26 +4714,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4412,27 +4743,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4453,7 +4788,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4476,6 +4811,7 @@ set CONFIG_SPIMCTRL_SDCARD 0 set CONFIG_SPIMCTRL_READCMD 0B set CONFIG_SPIMCTRL_DUMMYBYTE 0 set CONFIG_SPIMCTRL_DUALOUTPUT 0 +set CONFIG_SPIMCTRL_OFFSET 0 set CONFIG_SPIMCTRL_SCALER 1 set CONFIG_SPIMCTRL_ASCALER 8 set CONFIG_SPIMCTRL_PWRUPCNT 0 @@ -4483,7 +4819,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4494,14 +4830,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4533,7 +4869,7 @@ set CONFIG_SPICTRL_ODMODE 0 set CONFIG_SPICTRL_TWEN 0 set CONFIG_SPICTRL_MAXWLEN 0 set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_SPICTRL_NOFT 0 set CONFIG_SPICTRL_DMRFT 0 set CONFIG_SPICTRL_TMRFT 0 @@ -4593,7 +4929,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4603,6 +4940,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4641,6 +4980,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4653,9 +4993,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4669,239 +5010,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4946,13 +5437,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -4998,6 +5489,8 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUMMYBYTE $CONFIG_SPIMCTRL_DUMMYBYTE [list $notmod] 2 } global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUALOUTPUT $CONFIG_SPIMCTRL_DUALOUTPUT [list $notmod] 2 } + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_hex $cfg $autocfg CONFIG_SPIMCTRL_OFFSET $CONFIG_SPIMCTRL_OFFSET $notmod } global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_SCALER $CONFIG_SPIMCTRL_SCALER $notmod } global CONFIG_SPIMCTRL_ASCALER @@ -5013,38 +5506,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5096,11 +5589,11 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_30 + global tmpvar_32 if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_30 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_30 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_30 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_32 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -5145,7 +5638,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5155,6 +5649,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5173,8 +5669,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5257,11 +5758,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5282,6 +5785,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5384,8 +5891,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5404,6 +5913,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5444,332 +5957,358 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } - global tmpvar_30 - set tmpvar_30 "None" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } + global tmpvar_32 + set tmpvar_32 "None" global CONFIG_SPICTRL_NOFT - if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_30 "None" } + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_32 "None" } global CONFIG_SPICTRL_DMRFT - if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_30 "Parity-DMR" } + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_32 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT - if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_30 "TMR" } + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_32 "TMR" } } diff --git a/designs/leon3-arrow-bemicro-sdk/leon3mp.vhd b/designs/leon3-arrow-bemicro-sdk/leon3mp.vhd index 813f0a4f..34bae86d 100644 --- a/designs/leon3-arrow-bemicro-sdk/leon3mp.vhd +++ b/designs/leon3-arrow-bemicro-sdk/leon3mp.vhd @@ -1,10 +1,10 @@ ------------------------------------------------------------------------------ -- LEON3 Demonstration design --- Copyright (C) 2011 Jan Andersson, Aeroflex Gaisler +-- Copyright (C) 2011 - 2012 Jan Andersson, Aeroflex Gaisler ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -110,7 +110,13 @@ entity leon3mp is sd_dat2 : inout std_logic; sd_dat3 : inout std_logic; sd_cmd : inout std_logic; - sd_clk : inout std_logic + sd_clk : inout std_logic; + + -- EPCS + epcs_data : in std_ulogic; + epcs_dclk : out std_ulogic; + epcs_csn : out std_ulogic; + epcs_asdi : out std_ulogic -- Expansion connector on card edge (set as reserved in design's QSF) --reset_exp_n : out std_logic; @@ -456,7 +462,7 @@ begin generic map ( hindex => 4, hirq => 9, - faddr => 16#b00#, + faddr => 16#000#, fmask => 16#f00#, ioaddr => 16#002#, iomask => 16#fff#, @@ -468,7 +474,8 @@ begin dualoutput => CFG_SPIMCTRL_DUALOUTPUT, scaler => CFG_SPIMCTRL_SCALER, altscaler => CFG_SPIMCTRL_ASCALER, - pwrupcnt => CFG_SPIMCTRL_PWRUPCNT) + pwrupcnt => CFG_SPIMCTRL_PWRUPCNT, + offset => CFG_SPIMCTRL_OFFSET) port map ( rstn => rstn, clk => clkm, @@ -476,34 +483,20 @@ begin ahbso => ahbso(4), spii => spmi, spio => spmo); - - miso_pad : inpad generic map (tech => padtech) - port map (sd_dat0, spmi.miso); - mosi_pad : outpad generic map (tech => padtech) - port map (sd_cmd, spmo.mosi); - sck_pad : outpad generic map (tech => padtech) - port map (sd_clk, spmo.sck); - slvsel0_pad : iopad generic map (tech => padtech) - port map (sd_dat3, spmo.csn, spmo.cdcsnoen, spmi.cd); end generate; + epcs_miso_pad : inpad generic map (tech => padtech) + port map (epcs_data, spmi.miso); + epcs_mosi_pad : outpad generic map (tech => padtech) + port map (epcs_asdi, spmo.mosi); + epcs_sck_pad : outpad generic map (tech => padtech) + port map (epcs_dclk, spmo.sck); + epcs_slvsel0_pad : outpad generic map (tech => padtech) + port map (epcs_csn, spmo.csn); + nospimc : if CFG_SPIMCTRL /= 1 or CFG_AHBROMEN /= 0 generate - spmo.mosi <= '0'; - spmo.mosioen <= '1'; - spmo.sck <= '0'; - spmo.csn <= '1'; - spmo.cdcsnoen <= '1'; - spmo.errorn <= '0'; - spmo.ready <= '0'; - spmo.initialized <= '0'; + spmo <= spimctrl_out_none; end generate; - - -- sd_dat1 and sd_dat2 are unused - unuseddat1_pad : iopad generic map (tech => padtech) - port map (sd_dat1, gnd(0), vcc(1), open); - unuseddat2_pad : iopad generic map (tech => padtech) - port map (sd_dat2, gnd(0), vcc(1), open); - ---------------------------------------------------------------------- --- APB Bridge and various periherals ------------------------------- @@ -714,6 +707,64 @@ begin slvsel2(0) <= '0'; end generate; + -- SPI Memory Controller + -- Example on how to connect SPI memory controller to SD card. If you want to + -- use this then you need to disable the second SPICTRL core's connections to + -- the same top-level signals above. + --spimc: if false generate + -- spimctrl0 : spimctrl + -- generic map ( + -- hindex => 4, + -- hirq => 9, + -- faddr => 16#b00#, + -- fmask => 16#f00#, + -- ioaddr => 16#002#, + -- iomask => 16#fff#, + -- spliten => CFG_SPLIT, + -- oepol => 0, + -- sdcard => CFG_SPIMCTRL_SDCARD, + -- readcmd => CFG_SPIMCTRL_READCMD, + -- dummybyte => CFG_SPIMCTRL_DUMMYBYTE, + -- dualoutput => CFG_SPIMCTRL_DUALOUTPUT, + -- scaler => CFG_SPIMCTRL_SCALER, + -- altscaler => CFG_SPIMCTRL_ASCALER, + -- pwrupcnt => CFG_SPIMCTRL_PWRUPCNT) + -- port map ( + -- rstn => rstn, + -- clk => clkm, + -- ahbsi => ahbsi, + -- ahbso => ahbso(4), + -- spii => spmi, + -- spio => spmo); + + -- miso_pad : inpad generic map (tech => padtech) + -- port map (sd_dat0, spmi.miso); + -- mosi_pad : outpad generic map (tech => padtech) + -- port map (sd_cmd, spmo.mosi); + -- sck_pad : outpad generic map (tech => padtech) + -- port map (sd_clk, spmo.sck); + -- slvsel0_pad : iopad generic map (tech => padtech) + -- port map (sd_dat3, spmo.csn, spmo.cdcsnoen, spmi.cd); + --end generate; + + --nospimc : if false generate + -- spmo.mosi <= '0'; + -- spmo.mosioen <= '1'; + -- spmo.sck <= '0'; + -- spmo.csn <= '1'; + -- spmo.cdcsnoen <= '1'; + -- spmo.errorn <= '0'; + -- spmo.ready <= '0'; + -- spmo.initialized <= '0'; + --end generate; + + + -- sd_dat1 and sd_dat2 are unused + unuseddat1_pad : iopad generic map (tech => padtech) + port map (sd_dat1, gnd(0), vcc(1), open); + unuseddat2_pad : iopad generic map (tech => padtech) + port map (sd_dat2, gnd(0), vcc(1), open); + ----------------------------------------------------------------------- --- ETHERNET --------------------------------------------------------- ----------------------------------------------------------------------- diff --git a/designs/leon3-arrow-bemicro-sdk/prom.h b/designs/leon3-arrow-bemicro-sdk/prom.h index e77f328f..93c848d9 100644 --- a/designs/leon3-arrow-bemicro-sdk/prom.h +++ b/designs/leon3-arrow-bemicro-sdk/prom.h @@ -8,5 +8,4 @@ #define IRQCTRL 0x80000200 #define RAMSTART 0x40000000 #define RAMSIZE 0x00100000 -#define STACKSIZE 0x00002000 diff --git a/designs/leon3-arrow-bemicro-sdk/prom.srec b/designs/leon3-arrow-bemicro-sdk/prom.srec index a35eb290..e310fd4d 100755 --- a/designs/leon3-arrow-bemicro-sdk/prom.srec +++ b/designs/leon3-arrow-bemicro-sdk/prom.srec @@ -29,7 +29,7 @@ S11301A00539A8038410A261C4206004050003FC7F S11301B0C420600882103860C40040008530A00C60 S11301C0030000048210600980A04002128000062F S11301D0033FFC00821061000539A81B8410A26053 -S11301E0C4204000050000088210000080A0E00048 +S11301E0C4204000050000808210000080A0E000D0 S11301F002800005010000008200400210BFFFFCE5 S11302008620E0013D1003FFBC17A3E0BC2780015A S11302109C27A0600310000081C040000100000082 diff --git a/designs/leon3-arrow-bemicro-sdk/sdram.srec b/designs/leon3-arrow-bemicro-sdk/sdram.srec index 657df588..d7093aa9 100755 --- a/designs/leon3-arrow-bemicro-sdk/sdram.srec +++ b/designs/leon3-arrow-bemicro-sdk/sdram.srec @@ -1,14 +1,14 @@ S00D0000736472616D2E7372656300 S31540000000881000000910007281C123F4010000002D -S31540000010A1480000A75000001080203DAC102001F0 +S31540000010A1480000A75000001080203EAC102001EF S3154000002091D0200001000000010000000100000006 S3154000003091D02000010000000100000001000000F6 S31540000040A14800002910007281C5232C0100000040 -S31540000050A14800002910007081C52250010000000F -S31540000060A14800002910007081C522BC0100000093 +S31540000050A14800002910007081C5226801000000F7 +S31540000060A14800002910007081C522D4010000007B S3154000007091D02000010000000100000001000000B6 S3154000008091D02000010000000100000001000000A6 -S31540000090A1480000A75000001080201DAC10200988 +S31540000090A1480000A75000001080201EAC10200987 S315400000A091D0200001000000010000000100000086 S315400000B091D0200001000000010000000100000076 S315400000C091D0200001000000010000000100000066 @@ -16,21 +16,21 @@ S315400000D091D0200001000000010000000100000056 S315400000E091D0200001000000010000000100000046 S315400000F091D0200001000000010000000100000036 S3154000010091D0200001000000010000000100000025 -S31540000110AE102001A148000010807115A7500000C4 -S31540000120AE102002A148000010807111A7500000B7 -S31540000130AE102003A14800001080710DA7500000AA -S31540000140AE102004A148000010807109A75000009D -S31540000150AE102005A148000010807105A750000090 -S31540000160AE102006A148000010807101A750000083 -S31540000170AE102007A1480000108070FDA750000077 -S31540000180AE102008A1480000108070F9A75000006A -S31540000190AE102009A1480000108070F5A75000005D -S315400001A0AE10200AA1480000108070F1A750000050 -S315400001B0AE10200BA1480000108070EDA750000043 -S315400001C0AE10200CA1480000108070E9A750000036 -S315400001D0AE10200DA1480000108070E5A750000029 -S315400001E0AE10200EA1480000108070E1A75000001C -S315400001F0AE10200FA1480000108070DDA75000000F +S31540000110AE102001A14800001080711BA7500000BE +S31540000120AE102002A148000010807117A7500000B1 +S31540000130AE102003A148000010807113A7500000A4 +S31540000140AE102004A14800001080710FA750000097 +S31540000150AE102005A14800001080710BA75000008A +S31540000160AE102006A148000010807107A75000007D +S31540000170AE102007A148000010807103A750000070 +S31540000180AE102008A1480000108070FFA750000064 +S31540000190AE102009A1480000108070FBA750000057 +S315400001A0AE10200AA1480000108070F7A75000004A +S315400001B0AE10200BA1480000108070F3A75000003D +S315400001C0AE10200CA1480000108070EFA750000030 +S315400001D0AE10200DA1480000108070EBA750000023 +S315400001E0AE10200EA1480000108070E7A750000016 +S315400001F0AE10200FA1480000108070E3A750000009 S3154000020091D0200001000000010000000100000024 S3154000021091D0200001000000010000000100000014 S3154000022091D0200001000000010000000100000004 @@ -129,10 +129,10 @@ S315400007E091D020000100000001000000010000003F S315400007F091D020000100000001000000010000002F S3154000080091D020000100000001000000010000001E S3154000081091D020000100000001000000010000000E -S31540000820A14800002910007181C5209001000000F8 -S31540000830A148000010806EBBA750000001000000D8 +S31540000820A14800002910007181C520A801000000E0 +S31540000830A148000010806EC1A750000001000000D2 S3154000084091D02000010000000100000001000000DE -S31540000850A14800002910007181C5207401000000E4 +S31540000850A14800002910007181C5208C01000000CC S3154000086091D02000010000000100000001000000BE S3154000087091D02000010000000100000001000000AE S3154000088091D020000100000001000000010000009E @@ -255,132 +255,132 @@ S31540000FC091D0200001000000010000000100000057 S31540000FD091D0200001000000010000000100000047 S31540000FE091D0200001000000010000000100000037 S31540000FF091D0200001000000010000000100000027 -S315400010009DE3BFC0051001438410A0600710014452 +S315400010009DE3BFC0051001238410A0600710012492 S315400010108610E1B8821000008620C00286A0E00853 -S3154000102036BFFFFFC038800311100144901221B82B -S31540001030C022000040006D480100000040006D489D -S315400010400100000040006EFA01000000111000741B -S315400010509012213040006848010000004000702E88 -S3154000106001000000400000430100000040006E25E2 -S315400010700100000081C7E00881E800009DE3BF98B9 -S3154000108023100143C20C606080A0600012800015EE -S315400010902110008010800005C204200C9FC3400030 -S315400010A0C224200CC204200CDA00400080A3600059 -S315400010B012BFFFFB82006004030000008210600044 -S315400010C080A060000280000682102001111000748A -S315400010D06FFFFBCC901220C082102001C22C6060B2 -S315400010E081C7E00881E800009DE3BF9881C7E0081A -S315400010F081E800009DE3BF98030000008210600075 -S31540001100111000741310014380A06000901220C09B -S3154000111002800004921260646FFFFBBA0100000077 -S315400011201B100144C20361B880A060000280000920 -S31540001130B01361B8030000008210600080A0600018 -S3154000114002800004010000006FFFFBAE81E8000052 -S315400011500100000081C7E00881E800009DE3BF98D8 -S3154000116081C7E00881E8000081C3E0080100000073 -S315400011709DE3BF984000000F212000014000014E32 -S3154000118001000000921020014000417D1120000125 -S31540001190921020024000417A9014210040003C27E2 -S315400011A0901422004000000E81E80000010000007B -S315400011B09DE3BF98400000290100000080A2200066 -S315400011C01280000503100080D80060109A1020019C -S315400011D0DA23201081C7E00891E820000310008040 -S315400011E0D80060109A102001DA23201481C3E00849 -S315400011F09010200003100080DA006010D0234000D9 -S3154000120081C3E0089010200003100080DA006010CF -S31540001210D023600881C3E0089010200003100080AE -S31540001220DA006010D023600481C3E00890102000EB -S3154000123013100080921260149010200081C3E008C1 -S31540001240D0EA4020901020001310008092126014C3 -S3154000125081C3E008D0224000914440009132201CD6 -S3154000126081C3E008900A200F81C3E008D0820020A5 -S315400012709010200C81C3E008D08200408210000804 -S3154000128080A20009148000039022000990224001A8 -S3154000129081C3E00801000000932A60028210200109 -S315400012A0C22200099810200080A3000A1680000A76 -S315400012B096102001832B2002DA02000180A0000D47 -S315400012C0826020009803200180A3000A06BFFFFA2F -S315400012D0960AC00180A2E00002BFFFF498102000E9 -S315400012E081C3E008010000009DE3BF98C2062010BC -S315400012F08330601CA0100018A400600180A4A001E7 -S315400013000280006CB0103FFF7FFFFFD40100000059 -S31540001310AA100008912A20047FFFFFBC90022007F4 -S315400013207FFFFFD40100000003020000808A000115 -S315400013300280005C010000009A05600182102001D5 -S315400013408328400D11100080C2242010901220A046 -S31540001350921000157FFFFFD19410001203100080F9 -S3154000136082106018A12D6002C0204010DA004010A3 -S31540001370A610000180A36009291001431480002BA8 -S31540001380AC1000017FFFFFAB0100000080A22000EF -S3154000139012BFFFFD01000000B010200080A6001221 -S315400013A0168000140100000010800005A2100016EF -S315400013B080A600121680000F01000000832E200236 -S315400013C0D0044010D20440017FFFFFADB00620019B -S315400013D080A2200104BFFFF7901020027FFFFF90FC -S315400013E00100000080A6001206BFFFF6832E2002F1 -S315400013F0C205207C82006001C225207C7FFFFF92CF -S3154000140001000000C204C01082006001C224C01066 -S31540001410DA04C01080A3600904BFFFDB111000800E -S31540001420108000049012205C111000809012205C05 -S31540001430921000157FFFFF9994100012832CA00292 -S3154000144082004012A0004001DA05207C80A4000DF5 -S3154000145002800004231001437FFFFF719010200398 -S31540001460C204607C80A06000048000060100000089 -S31540001470C204607C80A400011680000580A560003F -S315400014807FFFFF679010200380A56000228000093F -S31540001490B010200091D0200010800006B01020002F -S315400014A07FFFFF5F9010200110BFFFA59A056001E6 -S315400014B081C7E00881E800009DE3BF98C20620107E -S315400014C0A01000188330601C80A0600002800009D4 -S315400014D0B0103FFF7FFFFF610100000080A22000A7 -S315400014E0128000040300003F821063FFC2242010D4 -S315400014F081C7E00881E800009DE3BF98C20620103E -S315400015008330601CA400600180A4A00102800068B2 -S31540001510B0103FFF7FFFFF5101000000AA100008F6 -S31540001520912A20047FFFFF39900220077FFFFF5159 -S315400015300100000003020000808A0001028000587A -S315400015400100000011100080901220A0921000159A -S315400015507FFFFF5294100012031000808210601823 -S31540001560A12D6002C0204010DA004010A6100001F4 -S3154000157080A36009291001431480002BAC100001A0 -S315400015807FFFFF2C0100000080A2200012BFFFFD5C -S3154000159001000000B010200080A600121680001442 -S315400015A00100000010800005A210001680A600125F -S315400015B01680000F01000000832E2002D004401048 -S315400015C0D20440017FFFFF2EB006200180A22001F9 -S315400015D004BFFFF7901020027FFFFF1101000000BB -S315400015E080A6001206BFFFF6832E2002C205207C8D -S315400015F082006001C225207C7FFFFF1301000000AE -S31540001600C204C01082006001C224C010DA04C010B7 -S3154000161080A3600904BFFFDB111000801080000426 -S315400016209012205C111000809012205C92100015E0 -S315400016307FFFFF1A94100012832CA00282004012F2 -S31540001640A0004001DA05207C80A4000D0280000441 -S31540001650231001437FFFFEF290102003C204607CFA -S3154000166080A060000480000601000000C204607C87 -S3154000167080A400011680000580A560007FFFFEE87B -S315400016809010200380A5600022800009B010200041 -S3154000169091D0200010800006B01020007FFFFEE0B1 -S315400016A09010200110BFFFA91110008081C7E008EB -S315400016B081E800009DE3BF98312000009216220089 -S315400016C09410200040004535901020014000423ED5 -S315400016D090162200901623004000459A921020084A -S315400016E0B01621004000412B81E8000001000000B7 -S315400016F09DE3BF9821200000921422009410200000 -S3154000170040004526901020014000422F90142200B0 -S31540001710921000184000458B90142300B01421000D -S315400017204000411C81E8000001000000000000006C -S315400017300000000000000000000000000000000063 -S315400017400000000000000000000000000000000053 -S315400017500000000000000000000000000000000043 -S315400017600000000000000000000000000000000033 -S315400017700000000000000000000000000000000023 -S315400017800000000000000000000000000000000013 -S315400017900000000000000000000000000000000003 -S315400017A000000000000000000000000000000000F3 -S315400017B000000000000000000000000000000000E3 -S315400017C000000000000000000000000000000000D3 -S315400017D000000000000000000000000000000000C3 +S3154000102036BFFFFFC038800311100124901221B84B +S31540001030C022000040006D4E0100000040006D4E91 +S315400010400100000040006EFA010000001110007619 +S31540001050901221FC400068F30100000040007261DC +S31540001060010000004000004F0100000040006E2BD0 +S315400010700100000081C7E00881E800009DE3BFA0B1 +S3154000108021100123C20C206080A060001280002243 +S3154000109023100123C20460642710007625100076D1 +S315400010A0A614E164A414A168A4248013A53CA0025C +S315400010B0A404BFFF80A040123A80000E0300000047 +S315400010C0A21460648200600185286002C224400048 +S315400010D0C204C0029FC0400001000000C20440009C +S315400010E080A040120ABFFFF98200600103000000A1 +S315400010F08210600080A060000280000682102001FD +S31540001100111000746FFFFBBF901220A082102001C7 +S31540001110C22C206081C7E00881E800009DE3BFA0A3 +S3154000112081C7E00881E800009DE3BFA003000000FE +S315400011308210600080A06000228000081110012407 +S315400011401110007413100123901220A06FFFFBAD05 +S315400011509212606811100124C20221B880A060007A +S3154000116002800009901221B803000000821060003E +S3154000117080A0600002800004010000009FC0400083 +S315400011800100000081C7E00881E800009DE3BFA0A0 +S3154000119081C7E00881E8000081C3E0080100000043 +S315400011A09DE3BFA04000002B212000014000017CB0 +S315400011B001000000921020014000416F1120000103 +S315400011C0921020024000416C9014210040003C1FC8 +S315400011D0901422004000000381E800000100000056 +S315400011E003100080C200601084102001901020007F +S315400011F0C420601481C3E008010000000310008091 +S31540001200C20060108410000890102000C4204000E6 +S3154000121081C3E0080100000003100080C200601096 +S315400012208410000890102000C420600881C3E008A4 +S315400012300100000003100080C20060108410000806 +S3154000124090102000C420600481C3E0080100000023 +S315400012509DE3BFA0400000140100000080A22000D2 +S315400012601280000503100080C20060108410200127 +S31540001270C420601081C7E00891E820001310008068 +S31540001280921260149010200081C3E008D0EA4020FA +S3154000129090102000131000809212601481C3E00861 +S315400012A0D0224000914440009132201C81C3E00886 +S315400012B0900A200F81C3E008D08200209010200CB5 +S315400012C081C3E008D08200409DE3BFA0C206201043 +S315400012D0A01000188330601C80A0600002800009C6 +S315400012E0B0103FFF7FFFFFF00100000080A220000A +S315400012F0128000040300003F821063FFC2242010C6 +S3154000130081C7E00881E800009DE3BFA0E406201005 +S31540001310A534A01CA404A00180A4A0010280003C26 +S31540001320B0103FFF7FFFFFE001000000AA10000859 +S31540001330912A20047FFFFFB9900220077FFFFFE03C +S315400013400100000003020000808A00010280007450 +S3154000135001000000A72D60020910008088112018A6 +S315400013608210200184102001C22100138210200027 +S3154000137080A48001148000098728600280A0A00014 +S3154000138012800025821020008410200180A4800154 +S3154000139004BFFFFB87286002C601000380A000034C +S315400013A0820060018660200010BFFFF2840880033F +S315400013B0C205A080852CA003A12CA001A004000298 +S315400013C080A4000102800004010000007FFFFF9A14 +S315400013D090102003C205A08080A060000480000613 +S315400013E003100123C200608080A40001168000051E +S315400013F080A560007FFFFF909010200380A56000CD +S3154000140002800003B010200091D0200081C7E00880 +S3154000141081E8000023100080A21460A02D10012353 +S31540001420C0244013C204401380A0600914800027E2 +S3154000143009100080A815A0807FFFFF9101000000E1 +S3154000144080A2200012BFFFFD80A4A00004800013EC +S3154000145001000000A0102000C4044013832C200289 +S31540001460C204400180A08001A00420010480000342 +S31540001470862040028620800180A0E001048000058D +S3154000148080A480107FFFFF6C9010200280A4801003 +S3154000149014BFFFF201000000C20500008200600197 +S315400014A0C22500007FFFFF7B01000000C2044013FD +S315400014B082006001C2244013C204401380A0600928 +S315400014C004BFFFDE091000808811205C82102001D5 +S315400014D084102001C22100138210200080A48001C4 +S315400014E0148000098728600280A0A00012BFFFB1C7 +S315400014F0821020008410200180A4800104BFFFFBDD +S3154000150087286002C601000380A0000382006001B4 +S315400015108660200010BFFFF2840880037FFFFF46ED +S315400015209010200110BFFF8DA72D60029DE3BFA044 +S31540001530E4062010A0100018A534A01CA404A001A5 +S3154000154080A4A0010280003FB0103FFF7FFFFF56FE +S3154000155001000000AA100008912A20047FFFFF2FF7 +S31540001560900220077FFFFF560100000003020000A3 +S31540001570808A00010280007701000000A72D6002EA +S31540001580091000808811201882102001840560010E +S3154000159085284002C4242010C22100138410200153 +S315400015A08210200080A480011480000987286002F0 +S315400015B080A0A00012800025821020008410200107 +S315400015C080A4800104BFFFFB87286002C601000398 +S315400015D080A00003820060018660200010BFFFF2F9 +S315400015E084088003C205A080852CA003A12CA001FD +S315400015F0A004000280A40001028000040100000053 +S315400016007FFFFF0D90102003C205A08080A06000E0 +S315400016100480000603100123C200608080A40001FC +S315400016201680000580A560007FFFFF039010200311 +S3154000163080A5600002800003B010200091D02000F9 +S3154000164081C7E00881E8000023100080A21460A052 +S315400016502D100123C0244013C204401380A060090A +S315400016601480002709100080A815A0807FFFFF0482 +S315400016700100000080A2200012BFFFFD80A4A00050 +S315400016800480001301000000A0102000C404401391 +S31540001690832C2002C204400180A08001A0042001C6 +S315400016A004800003862040028620800180A0E0015D +S315400016B00480000580A480107FFFFEDF901020028A +S315400016C080A4801014BFFFF201000000C205000094 +S315400016D082006001C22500007FFFFEEE010000008F +S315400016E0C204401382006001C2244013C204401366 +S315400016F080A0600904BFFFDE091000808811205CCD +S315400017008210200184102001C22100138210200083 +S3154000171080A48001148000098728600280A0A00070 +S3154000172012BFFFB1821020008410200180A48001E6 +S3154000173004BFFFFB87286002C601000380A00003A8 +S31540001740820060018660200010BFFFF2840880039B +S315400017507FFFFEB99010200110BFFF8AA72D6002BF +S315400017609DE3BFA021200000941020009214220087 +S315400017704000455190102001400044099014220039 +S31540001780921000184000459590142300B014210093 +S315400017904000414581E80000010000009DE3BFA0F4 +S315400017A0312000009410200092162200400045424D +S315400017B090102001400043FA901622009016230014 +S315400017C04000458692102008B01621004000413660 +S315400017D081E8000001000000000000000000000059 S315400017E000000000000000000000000000000000B3 S315400017F000000000000000000000000000000000A3 S315400018000000000000000000000000000000000092 @@ -2049,39 +2049,39 @@ S31540007FE0000000000000000000000000000000004B S31540007FF0000000000000000000000000000000003B S315400080009DE3BF9081C7E00881E8000003000010AF S31540008010C48000408088800112BFFFFE010000003E -S315400080209DE3BF909DE3BF909DE3BF909DE3BF90CE -S315400080309DE3BF909DE3BF9021044444A0142111C9 -S3154000804023088888A2146222250CCCCCA414A3331E -S3154000805027111111A614E04429155555A815215587 -S315400080602B199999AA1562662D1DDDDDAC15A377EE -S315400080702F222222AE15E08801100000E03FBFE02B -S31540008080E43FBFE8E83FBFF0EC3FBFF88210001E78 -S315400080908220601CC0A041E082206008C0A041E070 -S315400080A082206008C0A041E082206008C0A041E074 -S315400080B0C0A002209DE3BF909DE3BF9081E80000F1 -S315400080C081E800000100000001000000E01FBFE061 -S315400080D0E41FBFE8E81FBFF0EC1FBFF8EC6FBFF826 -S315400080E0EC7FBFF8010000000100000081E80000BD +S31540008020C46FBFF89DE3BF909DE3BF909DE3BF90B3 +S315400080309DE3BF909DE3BF909DE3BF9021044444E0 +S31540008040A014211123088888A2146222250CCCCCC6 +S31540008050A414A33327111111A614E044291555552C +S31540008060A81521552B199999AA1562662D1DDDDD96 +S31540008070AC15A3772F222222AE15E088011000000E +S31540008080E03FBFE0E43FBFE8E83FBFF0EC3FBFF86A +S315400080908210001E8220601CC0A041E08220600841 +S315400080A0C0A041E082206008C0A041E08220600874 +S315400080B0C0A041E0C0A002209DE3BF909DE3BF90D9 +S315400080C081E8000081E80000010000000100000096 +S315400080D0E01FBFE0E41FBFE8E81FBFF0EC1FBFF89A +S315400080E0EC6FBFF8EC7FBFF8010000000100000014 S315400080F081E8000081E8000081E8000081E8000096 -S3154000810081C7E00881E80000A7500000AA102400BB -S31540008110A8102300EC854320EA8503202F10002079 -S31540008120AE15E158EE05C000E805C000EA05E004DA -S31540008130EC05E008AC15A000C0A58300EA250000C8 -S31540008140AE05E00C2B100020AA156158EE25400024 -S3154000815081C4400081CC8000000000000100000086 -S3154000816000000000000000000000000000000000C9 +S3154000810081E8000081C7E00881E80000A750000030 +S31540008110AA102400A8102300EC854320EA850320FA +S315400081202F100020AE15E160EE05C000E805C00046 +S31540008130EA05E004EC05E008AC15A000C0A5830004 +S31540008140EA250000AE05E00C2B100020AA15616060 +S31540008150EE25400081C4400081CC80000100000033 +S3154000816000000000010000000000000000000000C8 S3154000817000000000000000000000000000000000B9 S3154000818000000000000000000000000000000000A9 -S315400081900000000000000000000000000100000098 -S315400081A081C3E008D0A003200100000001000000C8 +S315400081900000000000000000000000000000000099 +S315400081A00000000001000000010000000100000086 S315400081B00100000001000000010000000100000075 -S315400081C09DE3BF90FC2780009007A0019410001EFD -S315400081D0D1E7816AD1E7816A9402A0019002200129 -S315400081E0D1E7816AD1E7816AD60780009622C01E10 -S315400081F0B0A2E00202800004900020017FFFE40864 -S315400082000100000081C7E00881E80000010000008D -S315400082100100000001000000010000000100000014 -S315400082200100000001000000010000000100000004 +S315400081C081C3E008D0A003200100000001000000A8 +S315400081D00100000001000000010000000100000055 +S315400081E09DE3BF90FC2780009007A0019410001EDD +S315400081F0D1E7816AD1E7816A9402A0019002200109 +S31540008200D1E7816AD1E7816AD60780009622C01EEF +S31540008210B0A2E00202800004900020017FFFE40645 +S315400082200100000081C7E00881E80000010000006D S3154000823001000000010000000100000001000000F4 S3154000824001000000010000000100000001000000E4 S3154000825001000000010000000100000001000000D4 @@ -4095,3247 +4095,3247 @@ S3154000FFC001000000010000000100000001000000E7 S3154000FFD001000000010000000100000001000000D7 S3154000FFE001000000010000000100000001000000C7 S3154000FFF001000000010000000100000001000000B7 -S315400100009DE3BF90C207A068A40060261B00003F85 -S315400100109A1363FF030000239E0C800DAC106111FF -S31540010020AB376010820D400DAC03C0169E0F400DDC -S3154001003099372010AC058001820B000DAC05800F6D -S315400100409E0F000DAC058001AC05800F8335A010D5 -S315400100508208400D9E0D800DAC03C001C207A06809 -S3154001006094006034C207A05C93286011C207A0685F -S315400100709E0863FFD607A060C207A074D420400043 -S31540010080D827BFF4EE07A070833620109935A0100B -S31540010090980B000DA136E010A336E008C22DC00032 -S315400100A0F62DE00B9A0D800D82102008B6102045E2 -S315400100B0972AE012AC03400C9612C009C22DE00CFF -S315400100C0F62DE00E9B36200899366010953660086D -S315400100D09336A0109136A008A73CA0088210204074 -S315400100E0B6102011A9376018DA2DE001F02DE00293 -S315400100F0D82DE003D42DE004F22DE005D22DE00603 -S31540010100D02DE007F42DE008E02DE009E22DE00ACC -S31540010110C22DE016F62DE017E42DE011E62DE01094 -S31540010120E82DE01AC02DE00DC02DE00FC02DE012E4 -S31540010130C02DE013C02DE014C02DE015D807A068EE -S315400101409F2BE007C207A0649612C00F92032012AC -S31540010150AC380016E407A06C9B3AE0189130601861 -S31540010160A1306010A3306008B7376008B537201852 -S31540010170B3372008B135A0089F3A6008993AE01094 -S31540010180953AE008EA2DE01BF62DE01CF42DE01E21 -S31540010190F22DE020F02DE018EC2DE019DE2DE026C1 -S315400101A0D22DE027DA2DE02CD82DE02DD42DE02ECE -S315400101B0D62DE02FD02DE030E02DE031E22DE0329A -S315400101C0C22DE033DA07A05CFA2DE01DC207BFF469 -S315400101D080A36000C22DE01FF82DE021C02DE02252 -S315400101E0C02DE023C02DE024C02DE025C02DE02800 -S315400101F0C02DE029C02DE02A0280000EC02DE02B43 -S31540010200B8102000D807A06880A7000C1A80000902 -S31540010210BA05C01CC20C801CC22F6034B80720012D -S31540010220DA07A06880A7000D0ABFFFFBBA05C01C0C -S3154001023081C7E00881E800009DE3BD1040002BD650 -S3154001024090102000B610000840002BD390102004D7 -S31540010250BA100008391001447FFFC3E7110040740A -S31540010260A01720D0A6103FDEA8103FADAA103FBE72 -S31540010270AC103FEFAE102020F02720D0E62C200412 -S31540010280E82C2005EA2C2006EC2C2007C02C20085F -S31540010290EE2C2009400002B590100010D004201029 -S315400102A092102000400001CBD40720D0A492200018 -S315400102B0068000650100000015000010D0042010E2 -S315400102C09414800A9210200040000218D60720D0CC -S315400102D0EA2FBF0082103FF2EA2FBEFAE62FBEFE9A -S315400102E0E82FBEFFEC2FBF01EE2FBF03C22FBF0584 -S315400102F0E62FBEF8E82FBEF9EC2FBEFBC02FBEFCA1 -S31540010300EE2FBEFDC02FBF02C02FBF04A010200E8E -S31540010310AA07BFF882054010E0287F00A00420010B -S3154001032080A420FF04BFFFFD82054010AC07BDF845 -S3154001033090100016400003D6921720D080A22000CC -S3154001034002BFFFFD90100016B207BEF890102100C3 -S315400103509210001940000382941720D080A22000F9 -S3154001036002BFFFFC901021009010001D9210001B4F -S315400103704000040F941720D080A2200002BFFFFC4A -S315400103809010001DC207400080A061002280001825 -S31540010390A01020007FFFC3A29010200110800014FE -S315400103A0A01020000480002380A060020280001F6C -S315400103B080A0600322800002A21000128205401034 -S315400103C0DA087F00B00C60FF80A340182280000548 -S315400103D0A00420017FFFC39290102002A0042001B7 -S315400103E080A420FF1480001C821720D0808C20031B -S315400103F012800005833C201F82058010E480402046 -S31540010400833C201F8330601E8204000182087FFCEA -S315400104108224000180A0600112BFFFE301000000B9 -S3154001042010BFFFE7A334A01010BFFFE5A334A00817 -S3154001043080A0600022BFFFE2A334A01810BFFFE1F5 -S31540010440820540107FFFC3769010200010BFFF9CAD -S3154001045015000010DA00601480A3600002800135A7 -S31540010460C20720D08200601CF480402040002B4A05 -S31540010470901021008210202AC2274000AE100008A9 -S3154001048082102004170037AB1B377BBF9A1363CC0E -S315400104909612E1BEC22DE01315003BC098103FFFF6 -S315400104A09412A020921020DE9132E0089E1020EF97 -S315400104B0A0102008A2102006A4102001A733601026 -S315400104C0A9336008821020DDD82DE005C22DE01C3D -S315400104D0DA2DE01FD82DC000D82DE001D82DE0023D -S315400104E0D82DE003D82DE004E02DE010E22DE012F6 -S315400104F0E42DE015D22DE016D02DE017D62DE018CB -S31540010500DE2DE019D42DE01BE62DE01DE82DE01E81 -S31540010510D22DE006D02DE007D62DE008DE2DE009EC -S31540010520C02DE00AD42DE00BE02DE00CE22DE00DCC -S31540010530C02DE00EE42DE00FC02DE011C02DE014DA -S31540010540C02DE01AC02DE0208336A0189B36A0109E -S315400105509936A008C22DE026DA2DE027D82DE028CD -S31540010560C02DE021C02DE022C02DE023C02DE02486 -S31540010570C02DE025F42DE0299010001640000344DB -S31540010580921720D080A2200002BFFFFD90100016D6 -S31540010590D007400092100017400002F1941720D076 -S315400105A080A2200022BFFFFCD00740009010001D12 -S315400105B09210001B4000037E941720D080A2200099 -S315400105C002BFFFFC9010001D9807BE0ED88B00207D -S315400105D0980B20FF992B20108207BE0FC28840201E -S315400105E0820860FF83286008981300019A07BE10AD -S315400105F0DA8B40209A0B60FFA213000D9607BE11BD -S31540010600D68AC020960AE0FF972AE0108207BE12DA -S31540010610C2884020820860FF832860089612C00184 -S315400106209A07BE13DA8B40209A0B60FFA612C00DC3 -S31540010630A807BD90150037AB17003BC0C023A05C8F -S31540010640C023A060E823A064C023A068C023A06C97 -S31540010650EE23A070FA23A0749412A1BE9612E02054 -S3154001066090100011921000139810001A7FFFFE653A -S315400106709A10001A9010001640000305921720D0D8 -S3154001068080A2200002BFFFFD90100016D007400057 -S3154001069092100017400002B2941720D080A2200089 -S315400106A022BFFFFCD00740009010001D9210001B96 -S315400106B04000033F941720D080A2200002BFFFFCD8 -S315400106C09010001D9807BE24D88B0020992B201826 -S315400106D08207BE25DA8840209A0B60FF9B2B60106B -S315400106E09813000D8207BE26C2884020820860FF0B -S315400106F083286008981300019A07BE27DA8B4020A9 -S315400107009A0B60FFA413000D03000080808C8001CA -S3154001071012800003A134A012A00420019A1020489F -S3154001072082102001DA23A068150037AB17003BC0C1 -S31540010730C223A05CF223A06CE023A060E823A0645E -S31540010740EE23A070FA23A0749412A1BE9612E02063 -S3154001075090100011921000139810001A7FFFFE2985 -S315400107609A10001A90100016400002C9921720D024 -S3154001077080A2200002BFFFFD90100016D007400066 -S315400107809210001740000276941720D080A22000D4 -S3154001079022BFFFFCD00740009010001D9210001BA5 -S315400107A040000303941720D080A2200002BFFFFC23 -S315400107B09010001D9A07BE25C28B4020808860029A -S315400107C022800005A00420017FFFC29590102003DE -S315400107D0A004200182102048150037AB17003BC00A -S315400107E09810001AE023A060E823A064C223A06801 -S315400107F0C023A05CC023A06CEE23A070FA23A07492 -S3154001080090100011921000139412A1BE9612E0208E -S315400108107FFFFDFC9A10001A901000164000029CC2 -S31540010820921720D080A2200002BFFFFD9010001633 -S31540010830D00740009210001740000249941720D07B -S3154001084080A2200022BFFFFCD00740009010001D6F -S315400108509210001B400002D6941720D080A220009F -S3154001086002BFFFFC9010001DC207400080A0607CC3 -S3154001087022800005A605A0347FFFC269901020049E -S31540010880A605A03410800013A01020000480002289 -S3154001089080A060020280001D80A0600322800002C9 -S315400108A0B00CA0FF82054010DA087F0080A34018F3 -S315400108B022800005A00420017FFFC2599010200527 -S315400108C0A004200180A4204714800018A604E0015A -S315400108D0808C200312800004833C201FE484C020C6 -S315400108E0833C201F8330601E8204000182087FFC06 -S315400108F08224000180A0600112BFFFE5A334A0104D -S3154001090010BFFFE9B00C60FFA334A00810BFFFE69B -S31540010910B00C60FF80A0600022BFFFE3B134A01895 -S3154001092010BFFFE28205401040002A2290100017B6 -S3154001093081C7E00891E820009DE3BF88F027A044E5 -S31540010940C207A044820040019010000140002A12D3 -S315400109500100000082100008C227BFF4DA07BFF485 -S31540010960C207A0449A034001C207A04482007FFF08 -S3154001097082380001820B4001C227BFF4C207BFF48F -S31540010980C227BFF0C027BFECC207BFEC80A0607F83 -S315400109901480000C01000000C207BFEC9B286003D5 -S315400109A0C207BFF082034001C0204000C207BFEC2E -S315400109B082006001C227BFEC10BFFFF401000000B6 -S315400109C0C207BFF4B010000181C7E00881E800000A -S315400109D09DE3BF90F027A044F227A048F427A04CFE -S315400109E0C207A04C820060109010000140000046F2 -S315400109F001000000D027BFF4C207BFF48208600897 -S31540010A0080A06000028000040100000010BFFFF5D5 -S31540010A1001000000C207A0449B28600BC207A04802 -S31540010A208208601F8328600682134001821060029B -S31540010A30C227BFF4C207A04C82006010901000018B -S31540010A40D207BFF44000002701000000C207A04CB6 -S31540010A5082006010901000014000002B0100000050 -S31540010A60D027BFF4C207BFF48208600880A06000A7 -S31540010A70028000040100000010BFFFF501000000E4 -S31540010A80C207BFF48208601080A060001280001087 -S31540010A9001000000C207A04C8200601090100001C6 -S31540010AA04000001901000000D027BFF4C207BFF47F -S31540010AB0833060101B00003F9A1363FF8208400D8C -S31540010AC0C227BFF0108000040100000082103FFFE2 -S31540010AD0C227BFF0F007BFF081C7E00881E80000F8 -S31540010AE09DE3BF98F027A044F227A048C207A0443F -S31540010AF0FA07A048FA204000B010000181C7E0087B -S31540010B0081E800009DE3BF90F027A044C207A044BE -S31540010B10C2804020C227BFF4C207BFF4B010000113 -S31540010B2081C7E00881E800009DE3BF90F027A0441B -S31540010B30F227A048F427A04CF627A050C207A050A0 -S31540010B4082006010901000017FFFFFEF010000005E -S31540010B50D027BFF4C207BFF48208600880A06000B6 -S31540010B60028000040100000010BFFFF501000000F3 -S31540010B70DA07A04C0300003F821063FF820B40015D -S31540010B809B286010C207A0448328600B9A1340013A -S31540010B90C207A0488208601F83286006821340016D -S31540010BA082106001C227BFF4C207A05082006010C4 -S31540010BB090100001D207BFF47FFFFFCA0100000079 -S31540010BC0C207A05082006010901000017FFFFFCE47 -S31540010BD001000000D027BFF4C207BFF482086008B5 -S31540010BE080A06000028000040100000010BFFFF5F4 -S31540010BF00100000081C7E00881E800009DE3BF983D -S31540010C00F027A044F227A048DA07A044C207A0482B -S31540010C10C2084000C22B6004D807A0449A102001A4 -S31540010C20C207A04882034001C2084000C22B2005EA -S31540010C30D807A0449A102002C207A0488203400167 -S31540010C40C2084000C22B2006D807A0449A102003B0 -S31540010C50C207A04882034001C2084000C22B2007B8 -S31540010C60D807A0449A102004C207A0488203400135 -S31540010C70C2084000C22B2008D807A0449A1020057C -S31540010C80C207A04882034001C2084000C22B200986 -S31540010C90C207A044C200400096006008C207A048AF -S31540010CA0C2084000820860FF992860089A10200116 -S31540010CB0C207A04882034001C2084000820860FF83 -S31540010CC0821300019010000B921000017FFFFF85F7 -S31540010CD001000000C207A044C20040009600600C1B -S31540010CE09A102002C207A04882034001C208400070 -S31540010CF0820860FF992860189A102003C207A0480D -S31540010D0082034001C2084000820860FF83286010C8 -S31540010D10981300019A102004C207A048820340019B -S31540010D20C2084000820860FF8328600898130001CA -S31540010D309A102005C207A04882034001C20840001C -S31540010D40820860FF821300019010000B921000018F -S31540010D507FFFFF640100000082102001B0100001F6 -S31540010D6081C7E00881E800009DE3BF80F027A044E9 -S31540010D70C207A044D00040007FFFFF63010000008E -S31540010D80D027BFF4DA07A044C207BFF48330601B03 -S31540010D9082086001C223600CDA07A044C207BFF48F -S31540010DA08330601F82086001C2236014C207A044D9 -S31540010DB0C200601480A06000128000130100000090 -S31540010DC0C207A044D0004000921020407FFFFF455B -S31540010DD001000000C207A044D00040007FFFFF4A47 -S31540010DE001000000D027BFF4C207BFF4820860406B -S31540010DF080A06000028000040100000010BFFFF6E1 -S31540010E0001000000C207A044C200400082006010F9 -S31540010E10901000017FFFFF3C01000000D027BFF486 -S31540010E20DA07A044C207BFF48330600B8208601F13 -S31540010E30C2236010E007A044901024007FFFFEBF4C -S31540010E4001000000D0242018E007A044901024009F -S31540010E507FFFFEBA01000000D024201CC207A04437 -S31540010E60C200400082006014DA07A04490100001DD -S31540010E70D20360187FFFFF1B01000000C207A04498 -S31540010E80C200400082006018DA07A04490100001B9 -S31540010E90D203601C7FFFFF1301000000C207A0447C -S31540010EA0C0206020C207A044C0206024C207A044DD -S31540010EB0C0206028C207A044C020602CC207A044BD -S31540010EC0C200601480A0600012800083010000000F -S31540010ED0C207A044DA07A044D00060109210200057 -S31540010EE015000020D60340007FFFFF1001000000DF -S31540010EF0C207A044DA07A044D00060109210200037 -S31540010F00D40340007FFFFEB301000000D027BFF4A9 -S31540010F10DA07BFF403000020820B400180A0600085 -S31540010F20028000040100000010BFFFF20100000032 -S31540010F30C027BFF0C207BFF41B0000048208400D62 -S31540010F4080A060000280001701000000C207A04493 -S31540010F50DA07A044D000601092102001D40340006B -S31540010F607FFFFE9C0100000082100008820860207D -S31540010F7080A060001280000B01000000C207BFF094 -S31540010F8082006001C227BFF0DA07BFF003000030DC -S31540010F908210635080A3400104BFFFED01000000B1 -S31540010FA0C207A044DA07A044D00060109210200086 -S31540010FB0D40340007FFFFE8701000000D027BFF425 -S31540010FC0C207A044C200600C80A0600002800012EB -S31540010FD001000000C207BFF41B0000088208400D53 -S31540010FE080A060001280000C01000000C207BFF41F -S31540010FF08208604080A06000028000070100000076 -S3154001100082102001C227BFE4C027BFE81080001F1D -S3154001101001000000C207BFF41B0000088208400D12 -S3154001102080A060000280000C01000000C207BFF4EE -S315400110308208604080A06000128000070100000025 -S31540011040C027BFE482102001C227BFE81080000FED -S3154001105001000000C207BFF41B0000088208400DD2 -S3154001106080A060001280000901000000C207BFF4A1 -S315400110708208604080A060001280000401000000E8 -S31540011080C027BFE4C027BFE8C207BFF4833060086A -S3154001109082086001C227BFECD807A044C207BFEC53 -S315400110A09B286004C207BFE8832860079A13400162 -S315400110B0C207BFE48328600882134001D0030000C1 -S315400110C0921000017FFFFE87010000001080001B87 -S315400110D001000000C027BFF0C207BFF080A0600238 -S315400110E01480001601000000C207A044C20040005F -S315400110F082006010901000017FFFFE830100000016 -S31540011100D027BFF4C207BFF48208600880A0600000 -S315400111100280000501000000C027BFF010BFFFEFAD -S3154001112001000000C207BFF082006001C227BFF084 -S3154001113010BFFFEA01000000C207A044820060041C -S31540011140D007A044921000017FFFFEAD01000000D0 -S31540011150B010000181C7E00881E800009DE3BF901F -S31540011160F027A044F227A048F427A04CD807A04C6A -S31540011170C207A04CC20060209B286003C20320180E -S3154001118082034001901000017FFFFE5F01000000D5 -S31540011190821000088208680080A060000280000575 -S315400111A001000000C027BFF4108000360100000096 -S315400111B0D807A04CC207A04CC20060209B28600300 -S315400111C0C20320189A034001C207A048C223600403 -S315400111D0C207A04CC200602080A0607F1280001030 -S315400111E001000000D807A04CC207A04CC2006020F5 -S315400111F09B286003C203201898034001DA07A044E4 -S315400112000300000682134001C2230000C207A04C1E -S31540011210C02060201080001001000000D807A04CBB -S31540011220C207A04CC20060209B286003C20320185D -S315400112309A034001C207A04482106800C2234000BD -S31540011240DA07A04CC207A04CC200602082006001B0 -S31540011250C2236020C207A04CE0004000C207A04C58 -S31540011260D00040007FFFFE280100000082100008E8 -S3154001127082106001C224000082102001C227BFF4FF -S31540011280F007BFF481C7E00881E800009DE3BF9005 -S31540011290F027A044F227A048D807A048C207A04893 -S315400112A0C20060249B286003C203201C82034001C4 -S315400112B0901000017FFFFE1401000000821000081B -S315400112C08208680080A060000280000501000000DD -S315400112D0C027BFF41080003301000000D807A048A2 -S315400112E0C207A048C20060249B286003C203201C99 -S315400112F09A034001C207A044C2236004C207A04822 -S31540011300C200602480A0607F1280000E01000000B0 -S31540011310D807A048C207A048C20060249B286003A2 -S31540011320C203201C9A03400103000006C223400069 -S31540011330C207A048C02060241080000F01000000B1 -S31540011340D807A048C207A048C20060249B28600372 -S31540011350C203201C9A03400182102800C223400088 -S31540011360DA07A048C207A048C20060248200600193 -S31540011370C2236024C207A048E0004000C207A0483B -S31540011380D00040007FFFFDE0010000008210000810 -S3154001139082106002C224000082102001C227BFF4DD -S315400113A0F007BFF481C7E00881E800009DE3BF90E4 -S315400113B0F027A044F227A048F427A04CD807A04C18 -S315400113C0C207A04CC200602C9B286003C203201CAC -S315400113D082034001901000017FFFFDCB0100000018 -S315400113E082100008C227BFF4C207BFF48208680012 -S315400113F080A060001280001801000000DA07A044B6 -S31540011400C207BFF4820867FFC2234000C207A04C4F -S31540011410C200602C80A0607F12800006010000009F -S31540011420C207A04CC020602C1080000701000000BC -S31540011430DA07A04CC207A04CC200602C82006001B2 -S31540011440C223602C82102001C227BFF01080000306 -S3154001145001000000C027BFF0F007BFF081C7E008D8 -S3154001146081E800009DE3BF90F027A044D807A0443F -S31540011470C207A044C20060289B286003C20320180B -S3154001148082034001901000017FFFFD9F0100000093 -S3154001149082100008C227BFF4C207BFF48208680061 -S315400114A080A060001280001401000000C207A04421 -S315400114B0C200602880A0607F128000060100000003 -S315400114C0C207A044C0206028108000070100000028 -S315400114D0DA07A044C207A044C20060288200600126 -S315400114E0C223602882102001C227BFF0108000036A -S315400114F001000000C027BFF0F007BFF081C7E00838 -S3154001150081E800009DE3BF987FFFBF409010200413 +S315400100009DE3BF8099362010D827BFE0AF36200840 +S31540010010EE27BFE4AF366008C607A05CEE27BFEC0B +S31540010020AF36E018C407A060EE27BFF499366010DA +S31540010030AF30E008D827BFE8EE27BFFC8800A026EE +S31540010040EE07A06C993920089736A010D827BFF043 +S315400100501300003F9936E008921263FFA00E800913 +S31540010060A002C010D827BFF89B36E01098090009B6 +S31540010070900EC0091F0000239E13E1119E04000F3C +S315400100809E03C00D9003C0089802000CA1332010B6 +S31540010090980B00099804000C920B00099933201023 +S315400100A0BB2F601292030009992F2011BA17400CF9 +S315400100B0C207A0689008A3FF912A20079817400815 +S315400100C0BA00A034FA25C000EE07BFE09400A012A2 +S315400100D092380009AD36A018EE284000AB36A0088C +S315400100E0A73AA008EE07BFE4F0286002A9326008EB +S315400100F09F30E018EE286001A5332018A33B20105D +S31540010100EE07BFE8A13B20089130E01080A7200010 +S31540010110EE286003EE07BFECF2286005EE28600486 +S31540010120EE07BFF0EE286010EE07BFF4EE28601A26 +S31540010130EE07BFF8C8286011C028600A88103FDE64 +S31540010140EE28601CC028600DC028600FC0286012D0 +S31540010150C828600688103FADC828600788103FBE92 +S31540010160C828600888103FEFC828600988102020F9 +S31540010170C828600B88102008C828600C88102045C4 +S31540010180C828600E88102040C0286013C828601611 +S31540010190C0286014C0286015DA28601B8810201119 +S315400101A0C8286017EE07A064F628601DEC28601E7B +S315400101B0EA286020E8286018D2286019E6286026D7 +S315400101C0D4286027E428602CE228602DE028602EA0 +S315400101D0D828602FDE286030D0286031C807BFFCA0 +S315400101E0C6286033D628601FF4286021C8286032AB +S315400101F0C0286022C0286023C0286024C02860250A +S31540010200C0286028C0286029C028602A0280000DC5 +S31540010210C028602B80A0A0000280000A8810200020 +S31540010220861020009A004004C80DC0048600E001F3 +S3154001023080A0C002C82B603412BFFFFB88100003A8 +S3154001024081C7E00881E800009DE3BD2040002C8481 +S315400102509010200025100124A2100008A814A0D453 +S3154001026040002C7F90102004A01000087FFFC3E4BB +S315400102701100407482103FDEC22D200482103FAD32 +S31540010280C22D200582103FBEC22D200682103FEFAF +S31540010290C02D2008C22D200782102020C22D200902 +S315400102A0F024A0D44000028A90100014D0052010FA +S315400102B0D404A0D4400001C292102000AC92200088 +S315400102C00680017E01000000D0052010D604A0D48E +S315400102D01500001092102000400001F89415800A84 +S315400102E082103FDEC22FBE9EC22FBE9882103FAD06 +S315400102F0C22FBE9FC22FBE9982103FBEC22FBEA043 +S31540010300C22FBE9A82103FEFC22FBEA1C22FBE9B03 +S3154001031082102020C02FBE9CC22FBEA3C22FBE9DDD +S31540010320C02FBEA282103FF2C02FBEA4C22FBEA5CF +S31540010330A607BE988210200EC22CC0018200600121 +S3154001034080A0610032BFFFFEC22CC001AA07BD9842 +S31540010350AE14A0D490100015400003C692100017A9 +S3154001036080A2200002BFFFFD9010001590102100D1 +S3154001037092100013400003729410001780A22000CF +S3154001038002BFFFFC90102100901000109210001146 +S31540010390400004019410001780A2200002BFFFFC18 +S315400103A090100010C204000080A061000280000588 +S315400103B0AE1020007FFFC3A090102001AE10200098 +S315400103C0848DE0031280000580A0A002AC05401791 +S315400103D0EC85802080A0A002028000098335A00818 +S315400103E080A0A003028000068210001680A0A00112 +S315400103F0028000038335A0108335A018C40CC017B2 +S31540010400820860FF80A0800122800005AE05E001E0 +S315400104107FFFC38990102002AE05E00180A5E1006F +S3154001042012BFFFE9848DE003C205201480A060005D +S3154001043002800120B010200003100124EE0060D498 +S31540010440AE05E01CEE85C02040002C059010210031 +S3154001045082103FFFC22A201EC22A0000C22A200162 +S31540010460C22A2002C22A2003C22A2004C22A200507 +S3154001047082103FDEC22A2016C22A200682103FADD4 +S31540010480C22A2017C22A200782103FBEC22A20183C +S31540010490C22A200882103FEFC22A2019C22A200907 +S315400104A082102020C22A201BC22A200B821020083B +S315400104B0C22A2010C22A200C82102006C22A2012EB +S315400104C0C22A200D82102001C02A200AC22A2015E4 +S315400104D0C22A200FC02A200EC02A2011C02A201469 +S315400104E0C02A201A8210202AC22400008210200429 +S315400104F08935E018C22A20138735E01082103FDD86 +S315400105008535E008C22A201C82103FEEC22A201DF2 +S3154001051082103FCCC22A201FC02A2020C82A20266A +S31540010520C62A2027C42A2028C02A2021C02A2022C0 +S31540010530C02A2023C02A2024C02A2025EE2A202989 +S31540010540AC100008A814A0D490100015400003492F +S315400105509210001480A2200002BFFFFD90100015EA +S31540010560D004000092100016400002F594100014C9 +S3154001057080A2200022BFFFFCD00400009010001092 +S3154001058092100011400003849410001480A22000B0 +S3154001059002BFFFFC90100010B807BDAEF88F0020D7 +S315400105A08607BDAFC688C0208407BDB0C4888020F9 +S315400105B00300003F8408A0FF821063FFB80F20FFAD +S315400105C08728E018B92F20108738E010BA07BDB147 +S315400105D08608C001B8170003B8170002FA8F4020F9 +S315400105E08607BDB2C688C0208407BDB3C4888020B3 +S315400105F08728E0188738E0108208C001BA0F60FFEB +S31540010600BB2F6010BA1740018208A0FFB607BF98FA +S31540010610BA174001C023A060C023A064EC23A068A0 +S31540010620E023A06CF623A05C9010001C9210001DE4 +S315400106309410001796100017981020007FFFFE7146 +S315400106409A102000901000154000030A92100014E1 +S3154001065080A2200002BFFFFD90100015D0040000CB +S3154001066092100016400002B69410001480A2200099 +S3154001067022BFFFFCD0040000901000109210001120 +S31540010680400003459410001480A2200002BFFFFCE5 +S31540010690901000108607BDC4C688C020B207BDC5EC +S315400106A0C28E40208407BDC6C4888020A807BDC726 +S315400106B0E88D0020820860FF83286010A80D20FF86 +S315400106C08728E0188528A018A81500038538A010AA +S315400106D0A81500010300003F821063FF82088001D4 +S315400106E0A815000103000080808D0001833520128A +S315400106F002800003B4006001B4100001821020485A +S31540010700F623A05CE623A064EC23A068E023A06C5A +S31540010710C223A0609010001C9210001D9410001777 +S3154001072096100017981020019A10001A7FFFFE3587 +S31540010730B014A0D490100015400002CE92100018BB +S3154001074080A2200002BFFFFD90100015D0040000DA +S31540010750921000164000027A9410001880A22000E0 +S3154001076022BFFFFCD004000090100010921000112F +S31540010770400003099410001880A2200002BFFFFC2C +S3154001078090100010F28E4020808E60021280004F41 +S315400107900100000082102048F623A05C9410001747 +S315400107A0C023A064EC23A068E023A06C9010001C39 +S315400107B09210001D9A06A001A414A0D4C223A060E1 +S315400107C0961000177FFFFE0F98102000901000151D +S315400107D0400002A89210001280A2200002BFFFFD35 +S315400107E090100015D00400009210001640000254EB +S315400107F09410001280A2200022BFFFFCD00400000A +S315400108009010001092100011400002E39410001263 +S3154001081080A2200002BFFFFC90100010C20400001D +S3154001082080A0607C02800005A207BDCC7FFFC2820A +S3154001083090102004A207BDCCA0102000848C200378 +S315400108401280000480A0A002E884402080A0A0027B +S31540010850A2046001028000098335200880A0A0031C +S31540010860028000068210001480A0A00102800003CD +S315400108708335201083352018C40CC010820860FFD0 +S3154001088080A0800122800005A00420017FFFC26A6A +S3154001089090102005A004200180A4204812BFFFE942 +S315400108A0848C20039010001640002AE6B0102000E8 +S315400108B081C7E00881E800007FFFC25F90102000F9 +S315400108C010BFFE83D00520107FFFC25B901020032E +S315400108D010BFFFB2821020489DE3BF98F027A04485 +S315400108E0C207A044C2804020C227BFFCC207BFFC4A +S315400108F0B010000181E8000081C3E008010000005A +S315400109009DE3BFA0F027A044F227A048C207A04418 +S31540010910C407A048C420400081E8000081C3E00824 +S31540010920010000009DE3BF90F027A044C207A04408 +S31540010930832860019010000140002AC9010000008F +S3154001094082100008C227BFF4C407BFF4C207A044FF +S3154001095084008001C207A0448220000182088001F0 +S31540010960C227BFF4C207BFF4C227BFF8C027BFFCE6 +S315400109701080000A01000000C207BFFC8328600303 +S31540010980C407BFF882008001C0204000C207BFFCF7 +S3154001099082006001C227BFFCC207BFFC80A0607F06 +S315400109A004BFFFF601000000C207BFF4B01000010A +S315400109B081E8000081C3E008010000009DE3BF9883 +S315400109C0F027A044F227A048F427A04CC207A04C28 +S315400109D082006010901000017FFFFFC001000000FF +S315400109E082100008C227BFFCC207BFFC820860080C +S315400109F080A0600012BFFFF601000000C207A044BC +S31540010A008528600BC207A0488208601F83286006BC +S31540010A108210800182106002C227BFFCC207A04C2F +S31540010A208200601090100001D207BFFC7FFFFFB526 +S31540010A3001000000C207A04C820060109010000126 +S31540010A407FFFFFA60100000082100008C227BFFCFD +S31540010A50C207BFFC8208600880A0600012BFFFF693 +S31540010A6001000000C207BFFC8208601080A0600040 +S31540010A701280000D01000000C207A04C82006010E8 +S31540010A80901000017FFFFF950100000082100008D1 +S31540010A90C227BFFCC207BFFC833060101080000331 +S31540010AA00100000082103FFFB010000181E8000004 +S31540010AB081C3E008010000009DE3BF98F027A044F0 +S31540010AC0F227A048F427A04CF627A050C207A05011 +S31540010AD082006010901000017FFFFF80010000003E +S31540010AE082100008C227BFFCC207BFFC820860080B +S31540010AF080A0600012BFFFF601000000C207A04CB3 +S31540010B0085286010C207A0448328600B84108001A9 +S31540010B10C207A0488208601F8328600682108001B0 +S31540010B2082106001C227BFFCC207A050820060103C +S31540010B3090100001D207BFFC7FFFFF720100000049 +S31540010B40C207A05082006010901000017FFFFF6332 +S31540010B500100000082100008C227BFFCC207BFFC8B +S31540010B608208600880A0600012BFFFF60100000005 +S31540010B7081E8000081C3E008010000009DE3BFA0B9 +S31540010B80F027A044F227A048C207A048C408400065 +S31540010B90C207A044C4286004C207A048820060017D +S31540010BA0C4084000C207A044C4286005C207A04843 +S31540010BB082006002C4084000C207A044C4286006FF +S31540010BC0C207A04882006003C4084000C207A0448F +S31540010BD0C4286007C207A04882006004C4084000D8 +S31540010BE0C207A044C4286008C207A0488200600525 +S31540010BF0C4084000C207A044C4286009C207A044F3 +S31540010C00C20040008200600884100001C207A0486B +S31540010C10C2084000820860FF87286008C207A048D2 +S31540010C2082006001C2084000820860FF8210C00154 +S31540010C3090100002921000017FFFFF320100000078 +S31540010C40C207A044C20040008200600C841000012B +S31540010C50C207A04882006002C2084000820860FFC5 +S31540010C6087286018C207A04882006003C208400076 +S31540010C70820860FF832860108610C001C207A04821 +S31540010C8082006004C2084000820860FF8328600831 +S31540010C908610C001C207A04882006005C208400014 +S31540010CA0820860FF8210C00190100002921000017C +S31540010CB07FFFFF140100000082102001B0100001E7 +S31540010CC081E8000081C3E008010000009DE3BF8880 +S31540010CD0F027A044C207A044C20040009010000182 +S31540010CE07FFFFEFE0100000082100008C227BFEC14 +S31540010CF0C207BFEC8330601B84086001C207A04471 +S31540010D00C420600CC207BFEC8530601FC207A044F7 +S31540010D10C4206014C207A044C200601480A06000D1 +S31540010D201280001401000000C207A044C200400026 +S31540010D3090100001921020407FFFFEF2010000005A +S31540010D40C207A044C2004000901000017FFFFEE3AD +S31540010D500100000082100008C227BFECC207BFECA9 +S31540010D608208604080A0600012BFFFF601000000CB +S31540010D70C207A044C20040008200601090100001EA +S31540010D807FFFFED60100000082100008C227BFEC9B +S31540010D90C207BFEC8330600B8408601FC207A044C2 +S31540010DA0C4206010901024007FFFFEDF0100000088 +S31540010DB08210000884100001C207A044C4206018B4 +S31540010DC0901024007FFFFED8010000008210000829 +S31540010DD084100001C207A044C420601CC207A0447D +S31540010DE0C20040008200601484100001C207A04482 +S31540010DF0C200601890100002921000017FFFFEC1F0 +S31540010E0001000000C207A044C200400082006018F1 +S31540010E1084100001C207A044C200601C9010000269 +S31540010E20921000017FFFFEB701000000C207A044F7 +S31540010E30C0206020C207A044C0206024C207A0444D +S31540010E40C0206028C207A044C020602CC207A0442D +S31540010E50C200601480A0600012800096010000006C +S31540010E60C207A044C200601084100001C207A0441A +S31540010E70C200400090100002921020001500002090 +S31540010E80961000017FFFFF0D01000000C207A0443C +S31540010E90C200601084100001C207A044C200400095 +S31540010EA09010000292102000941000017FFFFEC4B2 +S31540010EB00100000082100008C227BFECC407BFEC46 +S31540010EC0030000208208800180A0600012BFFFF06D +S31540010ED001000000C027BFF0C407BFEC03000004B7 +S31540010EE08208800180A060000280001F010000008E +S31540010EF01080000B01000000C207BFF082006001B4 +S31540010F00C227BFF0C407BFF0030000308210635010 +S31540010F1080A080011480001301000000C207A04494 +S31540010F20C200601084100001C207A044C200400004 +S31540010F309010000292102001941000017FFFFEA044 +S31540010F4001000000821000088208602080A0600035 +S31540010F5002BFFFEA0100000010800003010000000B +S31540010F6001000000C207A044C200601084100001C5 +S31540010F70C207A044C2004000901000029210200017 +S31540010F80941000017FFFFE8E0100000082100008D0 +S31540010F90C227BFECC207A044C200600C80A060001B +S31540010FA00280001201000000C407BFEC03000008E4 +S31540010FB08208800180A060001280000C01000000C0 +S31540010FC0C207BFEC8208604080A060000280000733 +S31540010FD00100000082102001C227BFFCC027BFF8D4 +S31540010FE01080001F01000000C407BFEC0300000889 +S31540010FF08208800180A060000280000C0100000090 +S31540011000C207BFEC8208604080A0600012800007E2 +S3154001101001000000C027BFFC82102001C227BFF893 +S315400110201080000F01000000C407BFEC0300000858 +S315400110308208800180A06000128000090100000042 +S31540011040C207BFEC8208604080A0600012800004A5 +S3154001105001000000C027BFFCC027BFF8C207BFEC94 +S315400110608330600882086001C227BFF4C207A044EA +S31540011070C200400084100001C207BFF48728600403 +S31540011080C207BFF8832860078610C001C207BFFCAC +S31540011090832860088210C00190100002921000015E +S315400110A07FFFFE18010000001080001C01000000B7 +S315400110B0C027BFF01080001501000000C207A04400 +S315400110C0C200400082006010901000017FFFFE03C5 +S315400110D00100000082100008C227BFECC207BFEC26 +S315400110E08208600880A060000280000501000000BF +S315400110F0C027BFF01080000501000000C207BFF005 +S3154001110082006001C227BFF0C207BFF080A0600223 +S3154001111004BFFFEB01000000C207A0448200600447 +S31540011120D007A044921000017FFFFE950100000008 +S3154001113081E8000081C3E008010000009DE3BFA0F3 +S31540011140F027A044F227A048F427A04CC207A04CA0 +S31540011150C4006018C207A04CC20060208328600307 +S3154001116082008001901000017FFFFDDC010000003C +S31540011170821000088208680080A060000280000595 +S31540011180010000008210200010800036010000009E +S31540011190C207A04CC4006018C207A04CC200602020 +S315400111A08328600382008001C407A048C4206004EC +S315400111B0C207A04CC200602080A0607F1280001050 +S315400111C001000000C207A04CC4006018C207A04C31 +S315400111D0C20060208328600382008001C607A044C4 +S315400111E0050000068410C002C4204000C207A04C7E +S315400111F0C02060201080001001000000C207A04CF2 +S31540011200C4006018C207A04CC20060208328600356 +S3154001121082008001C407A0448410A800C420400075 +S31540011220C207A04CC200602084006001C207A04CE6 +S31540011230C4206020C207A04CE0004000C207A04C79 +S31540011240C2004000901000017FFFFDA40100000094 +S315400112508210000882106001C22400008210200121 +S31540011260B010000181E8000081C3E00801000000E0 +S315400112709DE3BFA0F027A044F227A048C207A0489B +S31540011280C400601CC207A048C200602483286003D2 +S3154001129082008001901000017FFFFD900100000057 +S315400112A0821000088208680080A060000280000564 +S315400112B00100000082102000108000330100000070 +S315400112C0C207A048C400601CC207A048C2006024EF +S315400112D08328600382008001C407A044C4206004BF +S315400112E0C207A048C200602480A0607F1280000E21 +S315400112F001000000C207A048C400601CC207A04804 +S31540011300C200602483286003820080010500000634 +S31540011310C4204000C207A048C02060241080000FAE +S3154001132001000000C207A048C400601CC207A048D3 +S31540011330C200602483286003820080018410280053 +S31540011340C4204000C207A048C20060248400600156 +S31540011350C207A048C4206024C207A048E00040005C +S31540011360C207A048C2004000901000017FFFFD5B0C +S31540011370010000008210000882106002C2240000B1 +S3154001138082102001B010000181E8000081C3E0080D +S31540011390010000009DE3BF98F027A044F227A04832 +S315400113A0F427A04CC207A04CC400601CC207A04C45 +S315400113B0C200602C832860038200800190100001E6 +S315400113C07FFFFD460100000082100008C227BFFCD6 +S315400113D0C207BFFC8208680080A060001280001727 +S315400113E001000000C207BFFC840867FFC207A04492 +S315400113F0C4204000C207A04CC200602C80A0607F80 +S315400114001280000601000000C207A04CC020602CDB +S315400114101080000701000000C207A04CC200602CEA +S3154001142084006001C207A04CC420602C82102001B8 +S31540011430108000030100000082102000B01000015E +S3154001144081E8000081C3E008010000009DE3BF98E8 +S31540011450F027A044C207A044C4006018C207A044B4 +S31540011460C200602883286003820080019010000139 +S315400114707FFFFD1A0100000082100008C227BFFC51 +S31540011480C207BFFC8208680080A06000128000137A +S3154001149001000000C207A044C200602880A0607F0E +S315400114A01280000601000000C207A044C020602847 +S315400114B01080000701000000C207A044C200602856 +S315400114C084006001C207A044C42060288210200124 +S315400114D0108000030100000082102000B0100001BE +S315400114E081E8000081C3E0080100000003100123E8 +S315400114F0C40060848400A001C420608481C3E008E4 +S31540011500010000009DE3BFA07FFFBF44901020046F S31540011510C2060000833060148088600F0280000894 S31540011520A0062020C2060000833060148208600FA6 -S3154001153080A0600608800089010000000301DC00EC -S31540011540C2240000DA04200403000010808B40010D -S315400115501280007A01000000DA042004030000042E -S31540011560808B40011280007201000000C2042004F9 -S31540011570808868001280005801000000C2042004DF -S31540011580808864001280005A01000000C2042004D1 -S31540011590808862001280005C01000000C2042004C1 -S315400115A0808861000280005E0100000082103FFEDB -S315400115B01B02F7ABC22420189A13615598102000DC -S315400115C0832B2003832B4001C2242010C204200414 -S315400115D08088610002BFFFFE0100000098032001E0 -S315400115E080A3200304BFFFF8832B2003C20600001B -S315400115F083306008820860FF80A060031480002D5C -S3154001160001000000DA04200403000004808B40013D -S315400116100280002D01000000C2242004C2042004DF -S3154001162080A0600006BFFFFE010000009810200365 -S31540011630DA04201498833FFF1CBFFFFE010000001F -S31540011640C2042004808862001280003F010000002D -S315400116509A10200098102000C0242010C2042004B3 -S315400116608088620002BFFFFE01000000C204201410 -S31540011670833060109B2B6008820860FF980320012D -S3154001168080A3200204BFFFF59A134001030037AB44 -S315400116908210615480A340012280003482103FFFB2 -S315400116A07FFFBEDF9010200A1080003082103FFF7E -S315400116B0DA04200403000004808B400102BFFFD7F7 -S315400116C0010000007FFFBED69010200810BFFFD357 -S315400116D0030000047FFFBED290102004C204200400 -S315400116E08088640002BFFFAA010000007FFFBECCD4 -S315400116F090102005C20420048088620002BFFFA822 -S31540011700010000007FFFBEC690102006C2042004DF -S315400117108088610032BFFFA782103FFE7FFFBEC0B7 -S315400117209010200710BFFFA382103FFE7FFFBEBC73 -S315400117309010200330BFFF8E7FFFBEB9901020026C -S3154001174030BFFF867FFFBEB6901020099A10200059 -S3154001175010BFFFC2981020007FFFBEB1901020013C -S3154001176010BFFF780301DC00C2242018C02400000A -S31540011770C224200481C7E00891E820009DE3BF9878 -S315400117807FFFBE9D110040B4C20600008330601445 -S31540011790A088600FA4062020BA0622001280007E8F -S315400117A0B8062050820E6001AE3800017FFFBE9719 -S315400117B090102001C2048000AA103FFF80A0600063 -S315400117C012800083AC102000C204A00480A06000F7 -S315400117D01280008501000000C204A00880A06000BC -S315400117E01280008701000000C204A00C80A06000A6 -S315400117F01280008901000000C204A01080A0600090 -S315400118001280008B010000007FFFBE8090102002F5 -S31540011810C206000083306008A92C2014A60860FF88 -S315400118201B10C00080A5E000128000048215000D47 -S315400118300300C00082150001C2248000DA04A0041E -S3154001184003000010808B40011280008F01000000D0 -S31540011850DA04A00403000004808B40011280008753 -S3154001186001000000C204A004808868001280008044 -S3154001187001000000C204A00480886400128000793F -S3154001188001000000C204A004808862001280007238 -S3154001189001000000C204A004808861000280006744 -S315400118A001000000032AAAAAA21062AAA004E0012C -S315400118B0E224A010A0843FFF12BFFFFEA238001110 -S315400118C0C204A00480886400128000600100000008 -S315400118D0C204A0048088610002BFFFFE010000002F -S315400118E0C204A004808862000280006E01000000EC -S315400118F0E224A01003001000C224A00C1B0000101B -S31540011900C204A0048088400D02BFFFFE0100000012 -S31540011910DA04A00403000004808B40010280005DCC -S3154001192001000000032AAAAAA21062AAA010200060 -S31540011930820C401583284016DA04A0149004200E28 -S31540011940A238001180A3400102800004A0042001B6 -S315400119507FFFBE330100000080A4001304BFFFF6E1 -S31540011960820C4015C024800082103FFFC224A0048F -S3154001197080A660020280008201000000DA060000B3 -S3154001198003000100808B40010280008001000000BD -S3154001199030800047820420019A103FFF9B2B400173 -S315400119A08210200FAC204010820E6001AE3800013B -S315400119B0AA38000D7FFFBE1590102001C204800099 -S315400119C080A0600002BFFF81010000007FFFBE14BE -S315400119D090102000C204A00480A0600002BFFF7FD7 -S315400119E0010000007FFFBE0E90102001C204A00836 -S315400119F080A0600002BFFF7D010000007FFFBE089E -S31540011A0090102002C204A00C80A0600002BFFF7BA0 -S31540011A10010000007FFFBE0290102003C204A01007 -S31540011A2080A0600002BFFF79010000007FFFBDFC7E -S31540011A309010200430BFFF757FFFBDF99010200A3A -S31540011A4010BFFF9A032AAAAA7FFFBDF59010200B6B -S31540011A5030BFFFA07FFFBDF29010200930BFFF8E3F -S31540011A607FFFBDEF9010200830BFFF877FFFBDECA1 -S31540011A709010200730BFFF807FFFBDE99010200600 -S31540011A8030BFFF797FFFBDE69010200530BFFF7163 -S31540011A907FFFBDE39010200D10BFFFA4032AAAAA21 -S31540011AA07FFFBDDF9010200C30BFFF927FFFBDD777 -S31540011AB0901020030330C00880A5E0001280000486 -S31540011AC0821500010320C00882150001C22480004E -S31540011AD00337AB7CA210600DA0102000832C20029E -S31540011AE0E2274001A004200180A4200104BFFFFC9D -S31540011AF0A238001182102003C2270000C024A0246E -S31540011B00A0102002E024A020C204A0048088620024 -S31540011B1002BFFFFE0337AB7CA210600DB004E00F9D -S31540011B20B2076200A0102001820C4015DA0640007F -S31540011B308328401690100018A2380011B20660049E -S31540011B4080A3400102800004B00620017FFFBDB49E -S31540011B5001000000A0843FFF1CBFFFF5820C401529 -S31540011B60C024A020C204A0208088600202BFFFFEDC -S31540011B7001000000C0248000308000047FFFFE6227 -S31540011B809010001830BFFF7E81C7E00891E8200021 -S31540011B909DE3BF987FFFBD981100403080A2200091 -S31540011BA0128000F382102001C226200CC026200498 -S31540011BB0C0260000C026200882102002C226200826 -S31540011BC0C0260000C026000082102003C22620083D -S31540011BD09A102083DA262008A2102063C02600002E -S31540011BE0A2847FFF1CBFFFFE01000000A2102063FC -S31540011BF0C2060000A2847FFF1CBFFFFE82102002A6 -S31540011C00C2262008A4062004C2848020808860045D -S31540011C1002BFFFFE01000000C0262008C0260000CA -S31540011C20A6102001C2848020833860148208603F58 -S31540011C3080A0600122800093A604E0018210200367 -S31540011C40C2262008C2848020808860010280000765 -S31540011C5080886004C2860020C2848020808860011A -S31540011C6012BFFFFD8088600402BFFFFB80886002CF -S31540011C7002BFFFF901000000C0262008C02620044B -S31540011C8080A4E0010480000821100080C2848020E5 -S31540011C908208608080A06001028000AE01000000E1 -S31540011CA021100080DA4C20F0DA260000C284802020 -S31540011CB08208600480A060010280009A0100000051 -S31540011CC0C284802080A4E00104800020821020018B -S31540011CD0A210200180A440131680000D2B10008015 -S31540011CE0A81420F0E00560E8901000114000247827 -S31540011CF092100010C24D0008A2046001C2260000E5 -S31540011D0080A4401306BFFFFA90100011C2848020C0 -S31540011D108208608080A0600102800092010000007C -S31540011D20C2848020833860148208603F80A04013BB -S31540011D3002800004010000007FFFBD39901020069B -S31540011D40C284802082102001C226200CDA848020A1 -S31540011D50808B6001128000680100000082102083A0 -S31540011D60C226200880A4E001028000520100000042 -S31540011D70C28480208088640002BFFFFE010000000B -S31540011D80C2848020808860010280005301000000E7 -S31540011D9080A4E00124800012A2102000C284802089 -S31540011DA08330601A80A040130280000401000000C5 -S31540011DB07FFFBD1B90102009C2848020808861006E -S31540011DC00280005501000000C284802080886400A2 -S31540011DD00280004D01000000A210200080A44013A3 -S31540011DE01680001203100080A81060F02B100080AE -S31540011DF0E08600209010001140002435D20560E8AD -S31540011E00C24D0008A204600180A040100280000477 -S31540011E109010200C7FFFBD020100000080A44013FA -S31540011E2006BFFFF40100000080A4E0010480000F1A -S31540011E3001000000C2848020808861001280004237 -S31540011E4001000000C28480208330601A80A06000B7 -S31540011E501280003A01000000C2848020808864001C -S31540011E601280003301000000C28480208088600116 -S31540011E701280001D01000000C02620083080003C71 -S31540011E80C0260000C2848020833860148208603FE7 -S31540011E9080A0401322BFFFFBA604E00180A4E0011D -S31540011EA034BFFF67A604FFFF10BFFF668210200301 -S31540011EB0C28480208088600112BFFFB20100000009 -S31540011EC0C28480208088600102BFFFFA01000000C1 -S31540011ED030BFFFAC7FFFBCD29010200810BFFFAED1 -S31540011EE080A4E0017FFFBCCE9010200CC0262008C4 -S31540011EF03080001F7FFFBCCA9010200710BFFF999A -S31540011F00821020837FFFBCC69010200B10BFFFB408 -S31540011F10A21020007FFFBCC29010200A30BFFFAB49 -S31540011F207FFFBCBF9010200130BFFF667FFFBCBC66 -S31540011F309010200B30BFFFCD7FFFBCB99010200E13 -S31540011F4030BFFFC67FFFBCB69010200D30BFFFBE2D -S31540011F507FFFBCB39010200410BFFF5321100080B7 -S31540011F607FFFBCAF9010200530BFFF6E81C7E008F0 -S31540011F7091E8200017100143DA02E0849002201014 -S31540011F809B2B60029812E084D023000DC202E084AC -S31540011F9082006001C222E08481C3E00801000000A2 -S31540011FA0C0220000C022204082103FFFC222200CE6 -S31540011FB09A10200103100143DA20608481C3E008AE -S31540011FC0010000009DE3BF7803100144F020610049 -S31540011FD07FFFBC89110040347FFFFFF2901000184B -S31540011FE0A010200123100047921000104000298DB7 -S31540011FF090146374A004200180A4200F04BFFFFC49 -S3154001200092100010C20620208330601CAE00600191 -S31540012010AC10200080A58017168000ED0300003F1C -S31540012020B81063FE2B1001430300002AB61062AAC2 -S31540012030BA102001B410001CB2156084832DA00C87 -S3154001204080A5E00114800119A600401880A5A000D2 -S315400120501280010A01000000F824E008C204E008E9 -S3154001206080A0401C02800004010000007FFFBC6C80 -S3154001207090102001F824E040C204E04080A0401CBA -S3154001208002800004010000007FFFBC659010200221 -S31540012090C204E00880A0600012BFFFFE01000000FC -S315400120A0C205608480A060100280000525100143AE -S315400120B07FFFBC5B9010200325100143A010200137 -S315400120C0A414A084A2102020832C20029A2440101C -S315400120D0D8048001A004200180A3000D02800004E1 -S315400120E0901020047FFFBC4E0100000080A4200F09 -S315400120F004BFFFF7832C2002FA256084F624C00032 -S31540012100F424E040C204C00080A0401B02800004C9 -S31540012110A010001A7FFFBC4290102005C204E04087 -S3154001212080A0401002800004010000007FFFBC3CFB -S3154001213090102005F424E008C204E00880A0600065 -S3154001214012BFFFFE01000000C205608480A060103E -S3154001215002800005251001437FFFBC319010200607 -S3154001216025100143A0102001A414A084A210201F11 -S315400121709B2C2002C204800D80A04011A0042001A6 -S31540012180A2047FFE02800004901020077FFFBC243A -S315400121900100000080A4200704BFFFF79B2C20020A -S315400121A0A4066028A210201CA0102005C2048000AD -S315400121B080A04011A404A004A2047FFE0280000472 -S315400121C0901020087FFFBC1601000000A0843FFF4D -S315400121D01CBFFFF701000000FA27BFE8C207BFE8AE -S315400121E082006001C227BFECDA07BFEC9A036001A7 -S315400121F0DA27BFF0C207BFF082006001C227BFF4F1 -S315400122009A102006DA27BFD8C024C000C024E04077 -S31540012210FA256084A0102002E024E040E024E00892 -S31540012220834440008088610002800005010000006F -S31540012230805000018050000180500001C207BFD884 -S31540012240C227BFDCDA07BFD880A36006028000043C -S31540012250010000007FFFBBF29010200AE024E00855 -S3154001226001000000C207BFD8C227BFDCDA07BFD8CA -S3154001227080A3600602800004010000007FFFBBE8E6 -S315400122809010200AE024E00801000000C027BFDCCE -S31540012290C207BFDC80A060001280009601000000EA -S315400122A0C204E00880A0600012BFFFFE01000000EA -S315400122B0C205608480A06004028000050300003FDF -S315400122C07FFFBBD79010200D0300003FC024E040A4 -S315400122D0821063FEC224E008031001439A102001D4 -S315400122E0DA206084400003E401000000400003E47A -S315400122F090122F0082103FFFC224E040C204E0400A -S3154001230080A0600002BFFFFE01000000C20560849C -S3154001231080A0600202800004A01560847FFFBBC0DC -S315400123209010200EC204200480A0601F0280000489 -S31540012330010000007FFFBBBA9010200F400003CE82 -S31540012340A8100010400003CE90023F00A0102002CA -S31540012350A4102020400003C801000000400003C82B -S3154001236090023F00C2056084A204200180A0401172 -S3154001237002800004901020107FFFBBA901000000DD -S31540012380832C20029A248010D8050001A010001148 -S3154001239080A3000D02800004901020117FFFBBA096 -S315400123A00100000080A4200F04BFFFEB01000000E4 -S315400123B0C024E040AC05A00182103FFFC224E00CDE -S315400123C080A5801706BFFF1F832DA00C80A5E001C5 -S315400123D00480004B01000000C0262024C2062024B0 -S315400123E080A060001280003F01000000210400002F -S315400123F0E0262024C206202480A040100280000549 -S31540012400821020017FFFBB8690102014821020018C -S31540012410C2262020C0262024C206202480A04010A7 -S3154001242002800004010000007FFFBB7D9010201553 -S31540012430C0262020C0262024C206202480A0600079 -S31540012440128000240100000082102002C2262020B2 -S31540012450DA062020808B60020280001B010000000A -S31540012460C0262020C20620208088600202800024E7 -S3154001247001000000308000117FFFFECA901000135A -S315400124809B2DA01CDA24E024C204E0248330601C86 -S3154001249080A0401602BFFEF1010000007FFFBB6035 -S315400124A09010201230BFFEED7FFFBB5890100016F2 -S315400124B010BFFEE880A5A0007FFFBB5990102018F1 -S315400124C03080000F7FFFBB569010201730BFFFE5CD -S315400124D07FFFBB539010201610BFFFDD82102002F4 -S315400124E07FFFBB4F9010201310BFFFC22104000095 -S315400124F07FFFBB4B9010200B30BFFF6A81C7E008BE -S3154001250091E8200003100143DA0060CCC023600843 -S3154001251081C3E008901020009DE3BF902F10014435 -S31540012520E205E100A004610027100143C204200432 -S31540012530F024E0CC7FFFBB359010201003018000D2 -S31540012540DA04200482106020808B40011280010D44 -S3154001255001000000DA046100DA27BFF0C20461001D -S3154001256080A3400102800005821020017FFFBB2C21 -S315400125709010200282102001C2242004DA04610056 -S31540012580DA27BFF0C204610080A340010280012026 -S3154001259001000000C0242004DA046100DA27BFF0FC -S315400125A0C204610080A340010280000580A720008B -S315400125B07FFFBB1B9010200480A72000128000B72C -S315400125C080A72001B010200180A6001A16800017AE -S315400125D0A8102001108000052510004980A6001A88 -S315400125E016800013DA04E0CCA206C0189014A104A8 -S315400125F09210001180A4601F14BFFFF9B00620019C -S315400126004000280801000000D805E100C20320402F -S315400126109B2D00118210400DC223204080A6001A36 -S3154001262006BFFFF3A206C018DA04E0CC9606A00363 -S31540012630C0236004833AE01FC023601098103FFF17 -S315400126408330601EAA02C001D8236014D823600CCF -S31540012650A2102000AD3D600280A720000280008AC2 -S31540012660A810200180A4401C168000ECC204E0CCD6 -S3154001267080A7200104800015B010200080A5A0008D -S315400126800480001380A0001C9B2C6010832C6018D2 -S315400126908210400D992C60088210400C8210401126 -S315400126A0993D6002DA04E0CCC2236020B0062001E5 -S315400126B080A72001048000059A03600480A30018C6 -S315400126C014BFFFFA0100000080A0001CB0603FFF6C -S315400126D080A6001A16800016C204E0CC25018000AF -S315400126E080A72000028000058206C01880A720012D -S315400126F0028000848206C011C2242004D804E0CCA2 -S31540012700832D00189B3E4018C2232008808B600110 -S31540012710128000859A10000CB006200180A6001A8E -S3154001272006BFFFF180A72000C204E0CCC0206008AC -S31540012730808E600112800009B0102000B006200191 -S3154001274080A6201F14800005833E401880886001C2 -S3154001275022BFFFFCB006200180A7200002800006B0 -S315400127608206C01880A72001028000048216E0205C -S315400127708206C01182106020C2242004DA04E0CC13 -S31540012780832D0018C2236008C203600880A0600040 -S3154001279012BFFFFE01000000C204200480886020B1 -S315400127A00280009801000000DA04200403010000C1 -S315400127B0808B40010280009001000000DA04200471 -S315400127C003008000808B40010280008801000000E8 -S315400127D0C2042008C227BFF0DA04200CDA27BFF46E -S315400127E0C204E0CC992D0018D82060089A10000147 -S315400127F0C203600880A0600012BFFFFE0100000016 -S31540012800C204200480886020028000750100000017 -S31540012810DA04200403010000808B40010280006D30 -S3154001282001000000DA04200403008000808B40018F -S315400128300280006501000000DA042008C207BFF0EB -S3154001284080A0400D02800004010000007FFFBA74A1 -S315400128509010200EDA04200CC207BFF480A0400D70 -S3154001286002800005030180007FFFBA6D9010200FA2 -S3154001287003018000C224200480A7200012BFFF7AF2 -S31540012880A204600180A4600004BFFF7B80A72001F1 -S3154001289010800062C204E0CC0280003D1110004964 -S315400128A0B010200080A6001C16BFFF60A8102001B2 -S315400128B0108000052510004980A6001C16BFFF5C4C -S315400128C0DA04E0CCA206C0189014A10492100011BB -S315400128D080A4601F14BFFFF9B006200140002751B4 -S315400128E001000000D805E100C20320409B2D0011E4 -S315400128F08210400DC223204010BFFFF180A6001C6C -S31540012900F6242004D804E0CC832D00189B3E4018C1 -S31540012910C2232008808B600122BFFF81B0062001BF -S315400129209A10000CC203600880A0600012BFFFFE2F -S3154001293001000000DA04200403010000808B4001FD -S315400129400280001E01000000DA042004030080001A -S31540012950808B40010280001601000000E42420041F -S31540012960C20420048088401222BFFF6DB0062001B8 -S315400129707FFFBA2B9010200710BFFF69B0062001D8 -S315400129807FFFBA279010200130BFFEF39012210439 -S31540012990400027249210001BDA05E100832F001B1B -S315400129A0C223604010BFFF22DA04E0CC7FFFBA1C8D -S315400129B09010200630BFFFEA7FFFBA19901020051C -S315400129C030BFFFE27FFFBA169010200D30BFFF9B4C -S315400129D07FFFBA139010200C30BFFF937FFFBA10D0 -S315400129E09010200B30BFFF8B7FFFBA0D9010200A4D -S315400129F030BFFF787FFFBA0A9010200930BFFF70C1 -S31540012A007FFFBA079010200830BFFF687FFFBA04E6 -S31540012A109010200330BFFEE0C020600CDA05E100D3 -S31540012A20C023604082103FFFC223600C81C7E0088B -S31540012A3091E820009DE3BF983B100144E607610001 -S31540012A407FFFB9F290102011C024E01CC204E01CA3 -S31540012A5080A060000280004801000000C204E01C22 -S31540012A608330601B80A0401A0A80003F01000000AD -S31540012A70A410200080A4801A1A8000422D10014320 -S31540012A80AA102001AE15A084A32CA002E006401195 -S31540012A907FFFFD4490100013A804A0019B2D401216 -S31540012AA0832D20108210400DC224E01C9A103FFF56 -S31540012AB0DA24E040D80600119A10201FDA232004B8 -S31540012AC0A0043FFFDA230000A12C20048204000C5D -S31540012AD09A102005DA206010C0206014EA206018A0 -S31540012AE09A100001C203601080A0600012BFFFFE71 -S31540012AF001000000A004000CC204201080A0600068 -S31540012B0002BFFFFE01000000C0242018C205A084B8 -S31540012B1080A06002028000069A04A01190048012EF -S31540012B207FFFB9BF900220039A04A011C205E004B9 -S31540012B3080A0400D22800006A4100014900480124B -S31540012B407FFFB9B790022004A4100014C024E01CF2 -S31540012B5080A5001A0ABFFFCEA32CA0021080000A4E -S31540012B60DA0761007FFFB9AE9010200210BFFFC2A5 -S31540012B70A41020007FFFB9AA9010200130BFFFB8F2 -S31540012B80DA076100C023604082103FFFC223600C18 -S31540012B9081C7E00891E820009DE3BF987FFFB9AF68 -S31540012BA00100000080A220000280002680A62000AD -S31540012BB012800029010000007FFFB9A80100000032 -S31540012BC0912A20047FFFB991900220034000186B9F -S31540012BD00100000080A220001280002B01000000AD -S31540012BE04000182801000000400017E101000000E4 -S31540012BF0400002230100000080A6A0001280002DA3 -S31540012C00031001447FFFB995B4106104912A200253 -S31540012C10C206800880A060001280003080A6200095 -S31540012C2012800039010000004000048A01000000C2 -S31540012C3040001E0001000000400015BD81E8000073 -S31540012C407FFFB96D1100400C80A6200002BFFFDB5B -S31540012C50010000007FFFBA19901000197FFFB97F6C -S31540012C6001000000912A20047FFFB96890022003E9 -S31540012C70400018420100000080A2200002BFFFD997 -S31540012C80010000007FFFB96690102001400017FD4A -S31540012C9001000000400017B601000000400001F8A5 -S31540012CA00100000080A6A00002BFFFD70310014427 -S31540012CB040001DEB01000000031001447FFFB9678E -S31540012CC0B4106104912A2002C206800880A06000E7 -S31540012CD002BFFFD480A620007FFFB960010000003B -S31540012CE07FFFB95EA0100008912A2002C206800823 -S31540012CF09FC040009010001080A6200002BFFFCB6D -S31540012D00010000007FFFB9FD9010001940000451F9 -S31540012D100100000040001DC701000000400015846D -S31540012D2081E800000100000003100143DA0060D091 -S31540012D309A036001DA2060D081C3E00801000000F7 -S31540012D409DE3BF987FFFB92C11004044D806200867 -S31540012D5082103FFFC2262004DA060000C2060000A8 -S31540012D6080A340010280006FA60B20078210201F1E -S31540012D70C2262004C226000080A4E000028000335F -S31540012D8082100018A2100013C0206018A2847FFF91 -S31540012D9012BFFFFE82006010A210200080A44013E3 -S31540012DA01680002B80A4E001A810200FA010001867 -S31540012DB07FFFB91690100011C0242010E82420147A -S31540012DC082102006C2242018DA04201080A3600F46 -S31540012DD002800004010000007FFFB911901020031A -S31540012DE0E82420189A10200EC204201080A0400D1D -S31540012DF012BFFFFE010000009A837FFF1CBFFFFB4D -S31540012E00A4100010C204201080A0600F12BFFFFE64 -S31540012E1001000000C204201880886010028000353D -S31540012E2082102010C224A018DA042018808B60106A -S31540012E301280003801000000A204600180A4401302 -S31540012E4006BFFFDCA004201080A4E001148000101E -S31540012E5080A4E0000280000782100018A21000132F -S31540012E60C0206018A2847FFF12BFFFFE820060105F -S31540012E7021100144C204210080A060000280002D7F -S31540012E801110004B1080000D921000197FFFB8DF22 -S31540012E90901020088210200FC22620189A10202F49 -S31540012EA0DA262028C206202080A0600D12BFFFFE30 -S31540012EB080A4E00030BFFFE8400025DA90122128C7 -S31540012EC07FFFFC38D004210082102001832840195D -S31540012ED0DA042100C22360409810200FD82620141E -S31540012EE08210200DC2262018A780000030800011D4 -S31540012EF07FFFB8CB9010200482102010C224A01866 -S31540012F00DA042018808B601022BFFFCDA204600135 -S31540012F107FFFB8C39010200510BFFFC9A20460010E -S31540012F207FFFB8BF9010200110BFFF928210201F73 -S31540012F3081C7E00881E800000000000000000000B1 -S31540012F400100000001000000010000000100000036 -S31540012F50010000000100000081C3E00801000000FB -S31540012F600100000001000000010000000100000016 -S31540012F70010000000100000081C3E00801000000DB -S31540012F8001000000010000000100000001000000F6 -S31540012F90010000000100000081C3E00801000000BB -S31540012FA001000000010000000100000001000000D6 -S31540012FB0010000000100000081C3E008010000009B -S31540012FC0D482018090A2000916BFFFFE9612800BA3 -S31540012FD081C3E0089010000BD48201C090A2000981 -S31540012FE016BFFFFE9612800B81C3E0089010000BBE -S31540012FF090A22004C0A201A090A22004C0A201A0D8 -S3154001300090A22004C0A201A090A22004C0A201A0C7 -S31540013010C0A2018090A2200414BFFFF70100000066 -S3154001302081C3E0080100000090A22004C0A201E093 -S3154001303090A22004C0A201E090A22004C0A201E017 -S3154001304090A22004C0A201E0C0A201C090A2200427 -S3154001305014BFFFF70100000081C3E0080100000032 -S31540013060981000089610000A98A3200814BFFFFF85 -S31540013070D43B00099810000898A3200814BFFFFF0D -S31540013080C01B00099810000898A32004D603000924 -S3154001309080A2C00A1280000698A3200434BFFFFD17 -S315400130A0D603000981C3E00890102000901020014A -S315400130B0981000089610000A98A3200814BFFFFF35 -S315400130C0D43B00099810000898A32004D6030009B0 -S315400130D080A2C00A1280000698A3200434BFFFFDD7 -S315400130E0D603000981C3E00890102000901020010A -S315400130F09810000898A32004D2A301A0DA8301A066 -S3154001310080A340091280000698A3200414BFFFFC47 -S31540013110D2A301A081C3E0089010200090102001A5 -S315400131209A1000089AA3400AD6A34180D8834180C9 -S31540013130981B000B988B0009128000069AA3400A3F -S3154001314014BFFFFBD6A3418081C3E0089010200045 -S31540013150901020019A1000089AA3400BD8A241CDA5 -S31540013160C48241CD8418800C8488800A128000066E -S315400131709AA3400B14BFFFFBD8A241CD81C3E008FF -S315400131809010200090102001010000000100000075 -S31540013190010000001310008092126138D4024000F1 -S315400131A080A2A0011280000780A0A002D4024000A4 -S315400131B0D4024000952AA0021080000501000000BB -S315400131C03280000381E80000D402400081E0000023 -S315400131D093480000818A60202310004CA21461F8B4 -S315400131E0A40460040100000081C4400081CC800039 -S315400131F091D0200191D02001268000059000200128 -S3154001320090222001912A2001912A200281C3E008BF -S315400132100100000081C3E008D082004081C3E0087C -S31540013220D2A2004081C3E008D082018081C3E00878 -S31540013230D2A2018081C3E008D08201A081C3E00807 -S31540013240D2A201A081C3E008D08201C081C3E008B7 -S31540013250D2A201C081C3E008D08201E081C3E00867 -S31540013260D2A201E081C3E008D2A2000081C3E008F6 -S31540013270D082000081C3E00891480000818A0000A5 -S3154001328001000000010000000100000081C3E008C8 -S315400132900100000081C3E008C0A000A081C3E0088E -S315400132A0C0A000C081C3E008D01A000001000000A0 -S315400132B001000000010000000100000001000000C3 -S315400132C09DE3BF7013100074CD1A60F0CD3FBFE08F -S315400132D0111000801B100080C91B61E0C51A21D85E -S315400132E0C11FBFE095A088C4D53FBFF0D91FBFF02D -S315400132F003100080D11861E881AB0A480100000043 -S315400133000380002BC13FBFD8F91FBFD8B5A0055CCC -S31540013310F53FBFF0ED1FBFF0F11FBFF0A5A58958DE -S31540013320E91FBFE0A1A488D415100074A1A0013003 -S31540013330DD1AA0F881AC0ACE010000000D80002DF7 -S31540013340F53FBFD0C51FBFD083A018C291A0492168 -S3154001335099A01928D51FBFE091A308CA1710007478 -S3154001336091A00128FD1AE10081AA0ADE01000000B0 -S315400133700D80002F01000000400001AE0100000059 -S315400133804000020C0100000080A2200012800031A2 -S3154001339001000000400002610100000080A22000FF -S315400133A00280003501000000308000317FFFB79C6C -S315400133B090102001F91FBFD8B5A0055CF53FBFF0BD -S315400133C0ED1FBFF0F11FBFF0A5A58958E91FBFE06A -S315400133D0A1A488D415100074A1A00130DD1AA0F86B -S315400133E081AC0ACE010000001BBFFFD7F53FBFD01D -S315400133F07FFFB78B90102002C51FBFD083A018C294 -S3154001340091A0492199A01928D51FBFE091A308CAC7 -S315400134101710007491A00128FD1AE10081AA0ADE65 -S31540013420010000001BBFFFD5010000007FFFB77CF4 -S31540013430901020034000017F01000000400001DDA3 -S315400134400100000080A2200002BFFFD3010000005E -S315400134507FFFB77301000000400002300100000009 -S3154001346080A2200002800004010000007FFFB76CAB -S315400134709010200581C7E00881E800009DE3BF98D0 -S315400134807FFFFF7D210000047FFFFF7D901200102A -S315400134907FFFFF79B0102000808A00100280000B68 -S315400134A09010200040000267010000007FFFB76BCB -S315400134B001000000912A20047FFFB75490022008A2 -S315400134C07FFFFF800100000081C7E00881E800001E -S315400134D019100080981321781110020092102000D3 -S315400134E0150FF76C9412A3D7D03B0000D4232008C4 -S315400134F0C11B0000C503200887A0892201000000E6 -S3154001350089A005408DA0892281A8CA260100000014 -S3154001351033800003901020009010200181C3E00801 -S3154001352001000000C11A0000C51A400089A00842E6 -S3154001353081C3E008C93A8000C11A0000C51A40009B -S3154001354089A0094281C3E008C93A80001910008068 -S3154001355098132178D0230000D2232008C10300000C -S31540013560C303200885A00D2181C3E008C53A800028 -S31540013570C11A0000C51A400089A009C2C93A800093 -S3154001358081C3E00801000000C11A000085A0054082 -S31540013590C53A400081C3E008010000000100000077 -S315400135A001000000010000000100000001000000D0 -S315400135B001000000010000000100000001000000C0 -S315400135C001000000010000000100000001000000B0 -S315400135D001000000010000000100000001000000A0 +S3154001153080A060060880008C010000000301DC00E9 +S31540011540C226202003000010C404200480888001A4 +S315400115501280007501000000C40420040300000449 +S31540011560808880011280007701000000C2042004B7 +S31540011570808868001280007901000000C2042004BE +S31540011580808864001280006501000000C2042004C6 +S31540011590808862001280005701000000C2042004C6 +S315400115A080886100028000590100000082103FFEE0 +S315400115B0C22420180702F7AB841020008610E1559B +S315400115C08328C002C2242010C204200480886100FE +S315400115D002BFFFFE010000008400A00880A0A020F9 +S315400115E012BFFFF98328C002C2060000833060089B +S315400115F0820860FF80A06003048000300100000083 +S31540011600C404200403000004808880011280003055 +S3154001161001000000C2242004C204200480A060000E +S3154001162006BFFFFE01000000C2042014C2042014BC +S31540011630C2042014C2042014C2042004808862001B +S31540011640128000270100000084102000861020002F +S31540011650C0242010C20420048088620002BFFFFE1D +S3154001166001000000C20420148728E008833060107E +S315400116708400A001820860FF80A0A00312BFFFF58D +S315400116808610C001030037AB8210615480A0C001AF +S315400116900280000582103FFF7FFFBEE79010200ABF +S315400116A082103FFFC2242018C0262020C2242004D5 +S315400116B081C7E00891E82000C40420040300000427 +S315400116C08088800112BFFFD4010000007FFFBEDA8F +S315400116D09010200810BFFFD0030000047FFFBED644 +S315400116E0901020098410200010BFFFDA86102000D8 +S315400116F07FFFBED190102006C2042004808861007D +S3154001170032BFFFAC82103FFE7FFFBECB9010200759 +S3154001171010BFFFA882103FFE7FFFBEC79010200575 +S3154001172030BFFF9B7FFFBEC490102002C40420043B +S31540011730030000048088800102BFFF8D0100000084 +S315400117407FFFBEBD90102003C2042004808868003C +S3154001175002BFFF8B010000007FFFBEB7901020043F +S3154001176030BFFF877FFFBEB49010200110BFFF75C9 +S315400117700301DC009DE3BFA07FFFBEA1110040B481 +S31540011780E2060000A3346014A28C600F1280007F31 +S31540011790A00620207FFFBEA190102001C206202076 +S315400117A0AE0E6001A8102000AA103FFF80A0600085 +S315400117B012800083AE380017C204200480A0600066 +S315400117C01280008501000000C204200880A060004C +S315400117D01280008701000000C204200C80A0600036 +S315400117E01280008901000000C204201080A0600020 +S315400117F01280008B010000007FFFBE8890102002FE +S3154001180080A0001784602000E6060000AD2C60141D +S3154001181003100000820880010500C00082004002DA +S3154001182082104016C2262020A734E008030000108B +S31540011830C404200480888001128000CCA60CE0FFFD +S31540011840C40420040300000480888001128000C47F +S3154001185001000000C204200480886800128000BD97 +S3154001186001000000C204200480886400128000B692 +S3154001187001000000C204200480886200128000AF8B +S3154001188001000000C204200480886100028000A794 +S3154001189001000000232AAAAA82102000A21462AAEB +S315400118A0E22420108200600180A4C00116BFFFFD22 +S315400118B0A2380011C2042004808864001280009876 +S315400118C001000000C20420048088610002BFFFFEBF +S315400118D001000000C2042004808862000280008D5D +S315400118E001000000E224201003001000C224200C55 +S315400118F005000010C20420048088400202BFFFFE9A +S3154001190001000000C4042004030000048088800113 +S315400119100280007C01000000252AAAAAA21020000C +S31540011920A414A2AAC4042014820C8015832840144E +S3154001193080A0800122800005A20460017FFFBE3E97 +S315400119409004600EA204600180A4C01136BFFFF668 +S31540011950A4380012C026202082103FFFC224200452 +S3154001196080A660020280008401000000C4060000D7 +S3154001197003000100808880011280002C01000000D4 +S3154001198081C7E00891E8200082046001AA103FFF68 +S31540011990901020017FFFBE21AB2D4001C2062020C1 +S315400119A0A810200FAE0E6001AA380015A825001117 +S315400119B080A0600002BFFF81AE3800177FFFBE1EC8 +S315400119C090102000C204200480A0600002BFFF7F67 +S315400119D0010000007FFFBE1890102001C2042008BC +S315400119E080A0600002BFFF7D010000007FFFBE12A4 +S315400119F090102002C204200C80A0600002BFFF7B31 +S31540011A00010000007FFFBE0C90102003C20420108D +S31540011A1080A0600002BFFF79010000007FFFBE0683 +S31540011A209010200430BFFF757FFFBDFC901020034E +S31540011A30A406220080A00017846020000310000045 +S31540011A40820880010520C0088200400282104016AB +S31540011A50C22620200337AB7C8210600DC2262200AD +S31540011A6003085483821063F2C224A0048210200327 +S31540011A70C2262050C024202482102002C2242020C5 +S31540011A80C20420048088620002BFFFFE01000000FC +S31540011A90C404A2000337AB7C8210600D820D400165 +S31540011AA08328401480A080010280000401000000C8 +S31540011AB07FFFBDE19004E00FC204A20405085483F0 +S31540011AC08410A3F2AA0D4002A92D401480A040140F +S31540011AD002800004010000007FFFBDD79004E010A2 +S31540011AE0C0242020C20420208088600202BFFFFE5D +S31540011AF001000000C026202081C7E00891E82000AF +S31540011B007FFFBDCD9010200D10BFFF85252AAAAAC3 +S31540011B107FFFBDC99010200C30BFFF737FFFBDC64C +S31540011B209010200B30BFFF687FFFBDC39010200A85 +S31540011B3010BFFF5A232AAAAA7FFFBDBF90102009D2 +S31540011B4030BFFF517FFFBDBC9010200830BFFF4A18 +S31540011B507FFFBDB99010200730BFFF437FFFBDB661 +S31540011B609010200630BFFF3C7FFFBDB3901020058B +S31540011B7030BFFF347FFFFE649010001830BFFF7CFA +S31540011B809DE3BF987FFFBDA590102005211001243C +S31540011B90D004210480A220000280003FA20620201A +S31540011BA04000013101000000C204210484102001DB +S31540011BB085288019C42060409210001911100045F3 +S31540011BC040002A97901220ECC204600480A0600075 +S31540011BD012800027010000000310CC00C2262020FD +S31540011BE082102200C224600821100123C2042084ED +S31540011BF080A060001280001B01000000C02460101C +S31540011C00C204600480A0600006BFFFFE0100000020 +S31540011C10C2046004808862000280001C010000004A +S31540011C20C2046014C227BFFCC204600480886200FB +S31540011C301280001301000000C204208480A06001CC +S31540011C4002800004010000007FFFBD7B901020064A +S31540011C50C0246008C026202081C7E00891E8200002 +S31540011C607FFFBD759010200330BFFFE57FFFBD723A +S31540011C709010200210BFFFDA0310CC007FFFBD6E2B +S31540011C809010200530BFFFED7FFFBD6B9010200403 +S31540011C9030BFFFE47FFFBD689010200110BFFFC831 +S31540011CA0921000199DE3BFA07FFFBD551100403042 +S31540011CB080A22000128000AF82102001C226200C93 +S31540011CC0C0262004C0260000C0262008821020021B +S31540011CD0C2262008C0260000C0260000821020032C +S31540011CE0C226200882102083C226200882102000A6 +S31540011CF0C02600008200600180A0606412BFFFFD23 +S31540011D000100000082102000C4060000820060012C +S31540011D1080A0606412BFFFFD010000008210200216 +S31540011D20C2262008A0062004C284002080886004C0 +S31540011D3002BFFFFE01000000C0262008C0260000A9 +S31540011D40C284002084102001833860148208603FD9 +S31540011D5080A0600102800004A21020011080000EC4 +S31540011D6082102003C0260000A200A001C2840020E8 +S31540011D70833860148208603F80A0401122BFFFFA79 +S31540011D808410000180A4600134800002A210000288 +S31540011D9082102003C2262008C284002082086007E0 +S31540011DA080A060060280000801000000C286002073 +S31540011DB0C28400208208600780A0600612BFFFFC33 +S31540011DC001000000C0262008C026200480A460012E +S31540011DD00480000482102034C28400208210203402 +S31540011DE0C2260000C2840020C284002080A4600173 +S31540011DF0048000198210200129100076A4102001C8 +S31540011E00A815217090100012400024DC9210204148 +S31540011E10C24D0008C2260000A404A00180A480117E +S31540011E2012BFFFFA90100012C2840020C284002023 +S31540011E30833860148208603F80A04011028000040C +S31540011E40010000007FFFBCFC90102006C2840020E8 +S31540011E5082102001C226200CC284002080886001A5 +S31540011E601280005382102083C226200880A460017C +S31540011E700280004201000000C28400208088640084 +S31540011E8002BFFFFE01000000C2840020808860017D +S31540011E900280004F80A460010480005280A460004B +S31540011EA0C28400208330601A80A040110280000461 +S31540011EB0010000007FFFBCE090102009C284002091 +S31540011EC0808861000280004A01000000C28400202F +S31540011ED0808864000280004C0100000029100076D1 +S31540011EE0A4102000A8152170E686002092102041FA +S31540011EF0400024A290100012C24D000880A0401359 +S31540011F0022800005A404A0017FFFBCCB9010200CC9 +S31540011F10A404A00180A4401214BFFFF480A4600170 +S31540011F200480000F01000000C28400208088610007 +S31540011F301280003F01000000C28400208330601AF5 +S31540011F4080A060001280003701000000C28400209A +S31540011F50808864001280003001000000E084002087 +S31540011F60808C20011280000E01000000C02620084E +S31540011F7081C7E00891E82000C28400208088600182 +S31540011F8012BFFFC201000000C284002080886001A8 +S31540011F9002BFFFFA0100000030BFFFBC7FFFBCA6B5 +S31540011FA09010200CC026200830BFFFF27FFFBCA254 +S31540011FB09010200782102083C226200880A4600149 +S31540011FC012BFFFAE0100000030BFFFEC7FFFBC9A9D +S31540011FD09010200880A4600114BFFFB280A4600065 +S31540011FE034BFFFC02910007630BFFFDD7FFFBC92B2 +S31540011FF09010200AC28400208088640032BFFFB955 +S31540012000291000767FFFBC8C9010200B10BFFFB5C6 +S31540012010291000767FFFBC889010200B30BFFFD07F +S315400120207FFFBC859010200E30BFFFC97FFFBC8269 +S315400120309010200D30BFFFC103100123C4006088FA +S315400120408528A0028610608890022010D020C00208 +S31540012050C40060888400A001C420608881C3E00870 +S3154001206001000000C0220000C022204082103FFF34 +S31540012070C222200C0310012384102001C420608851 +S3154001208081C3E0080100000003100123C20060D0B3 +S3154001209090102000C020600881C3E00801000000C4 +S315400120A09DE3BFA023100124E00461047FFFBC5BD4 +S315400120B090102011C024201CC204201C80A0600066 +S315400120C00280004C01000000C204201C8330601BCA +S315400120D080A0401A0A80004E80A6A0000280003FE0 +S315400120E0C20461042B100123A6102004AA1560889E +S315400120F0BA102000A4102000AE103FFFA810200106 +S31540012100AC10201FB8102005BB2F6002C606401D2B +S31540012110C0240000C0242040EE24200CE8254000C5 +S31540012120832D0012A404A001852CA01082108001E9 +S31540012130C224201CEE2420408928E0049A00FFFF97 +S31540012140C206001D980040049B2B60048400400D8C +S31540012150EC206004EC204000F8204004C023200419 +S31540012160E820A018C400400480A0A00012BFFFFED2 +S31540012170010000008728E004C400400380A0A000BD +S3154001218002BFFFFE010000008200400DC020601822 +S31540012190C205400080A060020280000401000000E8 +S315400121A07FFFBC259004FFFFC40560048204A01094 +S315400121B080A0800102800004BA1000127FFFBC1E7D +S315400121C090100013C024201C80A6801218BFFFCF98 +S315400121D0A604E002C204610484103FFFB01020004F +S315400121E0C0206040C420600C81C7E00881E800003F +S315400121F07FFFBC1190102001C204201C8330601B5C +S3154001220080A0401A1ABFFFB680A6A0007FFFBC0A75 +S315400122109010200210BFFFB52B1001239DE3BF8014 +S315400122202310012321100124E6042104A404E10022 +S31540012230C204A004F02460D07FFFBBF890102010A8 +S31540012240C204A004050180008410A02080884002B9 +S315400122501280014501000000C404E100C204E1000E +S3154001226080A0800102800005821020017FFFBBF221 +S315400122709010200282102001C224A004C404E1006F +S31540012280C204E10080A080010280014201000000F9 +S31540012290C024A004C404E100C204E10080A080017E +S315400122A00280000580A720007FFFBBE39010200439 +S315400122B080A720001280011180A7200180A6A001DD +S315400122C00480001A2F100048A606E001AE15E088EA +S315400122D0A8102001AC14210410800005AA10200189 +S315400122E080A6801404800011A604E00180A4E01FAA +S315400122F034BFFFFCA805200192100013400028C8F6 +S3154001230090100017C2058000C4006040872D40131D +S315400123108410C002C4206040A805200180A6801414 +S3154001232014BFFFF3A604E00180A0001C84603FFFB8 +S31540012330C427BFF0C60460D082103FFFF627BFF81E +S31540012340C027BFFCC020E004C020E010C220E0143A +S31540012350C220E00C8206A0038538601F8530A01E8E +S3154001236082008001AF386002C207BFF08200401B85 +S315400123708416E020C227BFECC427BFE829100123F9 +S31540012380AC102001A81520D0310100003B0080008F +S315400123902B01800080A720000280000382102001CB +S315400123A08210001CC407BFFC80A08001168000CBB0 +S315400123B080A720010480001680A5E0000480001457 +S315400123C0C207BFFCC407BFFC892860188328601078 +S315400123D0881100018328A008881100028400E024A6 +S315400123E08811000182102001C820E02010800006DB +S315400123F080A04017C8208000820060018400A004AC +S3154001240080A0401712BFFFFC01000000C207BFF0C9 +S31540012410E827BFF480A68001A210000104800033A2 +S315400124208400E0081080000EE607BFECE624A00415 +S31540012430832D8011C220E008833E401180886001CF +S31540012440128000138400E008A204600180A6801176 +S3154001245004800026A604E001C605000080A72000EE +S3154001246002BFFFF380A7200102800079C407BFF8AD +S31540012470C424A004832D8011C220E008833E40116C +S315400124808088600102BFFFF18400E008C20080003D +S3154001249080A0600012BFFFFE01000000C204A0043C +S315400124A0808840180280006701000000C204A00431 +S315400124B08088401D0280006001000000EA24A004DB +S315400124C0C204A00480884015128000560100000015 +S315400124D0C40500008400A008A204600180A6801102 +S315400124E014BFFFDEA604E001C02080001080000575 +S315400124F0A210200080A460200280000780A720004F +S31540012500833E40118088600122BFFFFBA204600127 +S3154001251080A720001280005180A720018204401B21 +S3154001252082106020C224A004A32D8011E2208000E5 +S31540012530C200800080A0600012BFFFFE01000000C3 +S31540012540C204A004808860200280005D0100000072 +S31540012550C204A00480884018028000560100000091 +S31540012560C204A0048088401D0280004E0100000084 +S31540012570C207BFF4C4004000C204A008E604A00C90 +S315400125808600A008E220A008C400C00080A0A000E8 +S3154001259012BFFFFE01000000C404A0048088A020F1 +S315400125A02280003CC227BFE4C404A004808880186E +S315400125B022800034C227BFE4C404A0048088801D61 +S315400125C02280002CC227BFE4C404A00880A0400298 +S315400125D002800004010000007FFFBB179010200E0F +S315400125E0C204A00C80A4C00102800005C407BFF448 +S315400125F07FFFBB119010200FC407BFF4C207BFFC79 +S31540012600C6008000C407BFF8820060018400A001B3 +S31540012610EA24A004C227BFFC10BFFF5FC427BFF84E +S315400126207FFFBB0590102007C405000010BFFFAB1C +S315400126308400A0087FFFBB009010200630BFFFA09A +S315400126407FFFBAFD9010200530BFFF99F624A00404 +S3154001265010BFFF79832D80110280001CC607BFF889 +S315400126608210E020C224A00410BFFFB1A32D801127 +S315400126707FFFBAF19010200D10BFFFD4C207BFE40F +S315400126807FFFBAED9010200C10BFFFCCC207BFE40C +S315400126907FFFBAE99010200B10BFFFC4C207BFE409 +S315400126A07FFFBAE59010200A10BFFFB3C207BFF4FF +S315400126B07FFFBAE19010200930BFFFAA7FFFBADE43 +S315400126C09010200830BFFFA3C607BFE8C624A00468 +S315400126D010BFFF97A32D8011C2042104C020E00C36 +S315400126E084103FFFB0102000C0206040C420600C21 +S315400126F081C7E00881E800000280001E11100048F1 +S3154001270080A72000A610001B04BFFF08A8102000C8 +S315400127102F100048AC142104AE15E0881080000546 +S31540012720AA10200180A7001404BFFF00A604E001FF +S3154001273080A4E01F34BFFFFCA805200192100013BE +S31540012740400027B790100017C2058000C4006040C2 +S31540012750872D40138410C002C420604010BFFFF291 +S31540012760A80520017FFFBAB49010200130BFFEBBFF +S315400127709210001B400027AA90122088C20421040F +S31540012780852F001BC420604010BFFEE980A0001CBD +S315400127907FFFBAA99010200330BFFEBE9DE3BF80E4 +S315400127A00310012411004034231000487FFFBA94DE +S315400127B0F0206104C0260000C026204082103FFF61 +S315400127C0C226200C0310012384102001A0102001F1 +S315400127D0C4206088A21460389210001040002790EF +S315400127E090100011A004200180A4201012BFFFFC0C +S315400127F092100010F8062020B937201C231001231F +S315400128002D00003F3700002AB8072001A214608836 +S31540012810AC15A3FEB616E2AAA6100018AE1020000B +S31540012820B4103FFFBA102001A8102020AA10202181 +S3154001283080A720010280000580A5E0007FFFBA77CE +S315400128409010001780A5E0000280000F01000000F3 +S31540012850C024C000C024E040F424E00CFA24400027 +S31540012860832DE01CC224E024C204E0248330601C92 +S3154001287080A0401702800004010000007FFFBA6E6D +S3154001288090102012EC24E008C204E00880A0401613 +S3154001289002800004010000007FFFBA67901020010A +S315400128A0EC24E040C204E04080A0401602800004CF +S315400128B0010000007FFFBA6090102002C204E008C8 +S315400128C080A0600012BFFFFE01000000C20440006C +S315400128D080A0601002800005A01020017FFFBA563B +S315400128E090102003A0102001832C2002C204400135 +S315400128F08425001080A0800122800005A0042001CB +S315400129007FFFBA4D90102004A004200180A420101E +S3154001291012BFFFF7832C2002FA244000F624C000A0 +S31540012920EC24E040C204C00080A0401B02800004A9 +S31540012930010000007FFFBA4090102005C204E0402C +S3154001294080A0401602800004010000007FFFBA3AD1 +S3154001295090102005EC24E008C204E00880A0600045 +S3154001296012BFFFFE01000000C204400080A06010BB +S3154001297002800005A410201F7FFFBA2F9010200669 +S31540012980A410201FA0102001832C2002C204400164 +S3154001299080A0401222800005A00420017FFFBA26B4 +S315400129A090102007A004200180A4200812BFFFF741 +S315400129B0A404BFFEA410201CA010200A832C2002D0 +S315400129C0C204400180A0401222800005A0042001DB +S315400129D07FFFBA1990102008A004200180A420107E +S315400129E012BFFFF7A404BFFEFA27BFF082102002F0 +S315400129F0C407BFF08400A001C427BFF4C407BFF4D5 +S31540012A008400A001C427BFF8C407BFF88400A00111 +S31540012A10C427BFFC84102006C427BFE0C024C000E1 +S31540012A20C024E040FA244000C224E040C224E00829 +S31540012A308344400080886100028000050100000057 +S31540012A40805000018050000180500001C207BFE064 +S31540012A50C227BFE4C207BFE080A06006028000052E +S31540012A60821020027FFFB9F49010200A82102002C2 +S31540012A70C224E00801000000C207BFE0C227BFE44C +S31540012A80C207BFE080A060060280000582102002D6 +S31540012A907FFFB9E99010200A82102002C224E00883 +S31540012AA001000000C027BFE4C207BFE480A0600068 +S31540012AB01280007301000000C204E00880A060009B +S31540012AC012BFFFFE01000000C204400080A0600466 +S31540012AD002800004010000007FFFB9D79010200D4D +S31540012AE0C024E040EC24E008FA24400040000212F1 +S31540012AF0010000004000021290122F00EC24E04039 +S31540012B00C204E04080A0600002BFFFFE0100000059 +S31540012B10C204400080A0600202800004010000005F +S31540012B207FFFB9C59010200EC204600480A0601FCB +S31540012B3002800004010000007FFFB9BF9010200F02 +S31540012B40400001FDA4102002400001FD90023F001B +S31540012B50400001F901000000400001F990023F00E8 +S31540012B60C2044000A004A00180A0401022800005BC +S31540012B70A52CA0027FFFB9B090102010A52CA00271 +S31540012B80C40440128225401080A0800102800004C6 +S31540012B90A41000107FFFB9A89010201180A4201026 +S31540012BA012BFFFEC01000000C024E040F424E00C19 +S31540012BB0AE05E00180A7001714BFFF1EA624F00052 +S31540012BC080A720010480002C01000000C02620249B +S31540012BD0C206202480A060001280002C0100000063 +S31540012BE003040000C2262024C406202480A08001BC +S31540012BF002800005821020017FFFB98F90102014BA +S31540012C0082102001C2262020C02620240304000071 +S31540012C10C406202480A08001028000040100000037 +S31540012C207FFFB98590102015C0262020C02620247C +S31540012C30C206202480A060001280001B0100000013 +S31540012C4082102002C2262020C206202080886002EF +S31540012C500280001201000000C0262020C20620206A +S31540012C608088600202800004010000007FFFB97283 +S31540012C709010201881C7E00891E820007FFFB96EC7 +S31540012C809010200B30BFFF8D7FFFB96B9010201342 +S31540012C9010BFFFD5030400007FFFB96790102017CE +S31540012CA030BFFFEE7FFFB9649010201610BFFFE6DC +S31540012CB0821020029DE3BFA07FFFB97B0100000087 +S31540012CC080A220000280003B0100000080A6200077 +S31540012CD012800035010000007FFFB973010000003A +S31540012CE0912A20047FFFB94D9002200340001887A6 +S31540012CF00100000080A2200012800028010000008F +S31540012D004000182601000000400017D401000000D1 +S31540012D10400001EA0100000080A6A0001280001CCC +S31540012D20010000007FFFB96021100124912A200291 +S31540012D30A0142108C204000880A060000280000A95 +S31540012D4080A620007FFFB95801000000912A200289 +S31540012D507FFFB955E00400089FC400000100000050 +S31540012D6080A6200002800004010000007FFFB967B1 +S31540012D7090100019400004470100000040001E5613 +S31540012D8001000000400015D981E8000040001F28DD +S31540012D900100000030BFFFE47FFFB92790102001FA +S31540012DA030BFFFD87FFFB9499010001930BFFFCB24 +S31540012DB07FFFB9131100400C10BFFFC680A620004B +S31540012DC003100123C40060D48400A001C42060D450 +S31540012DD081C3E008010000009DE3BFA07FFFB90861 +S31540012DE01100404482103FFFE4062008C226200419 +S31540012DF0A40CA007C4060000C206000080A0800102 +S31540012E0002800074010000008210201FC2262004A7 +S31540012E10C226000080A4A0000280004E821020003D +S31540012E2085286004840600028200600180A0401269 +S31540012E30C020A01812BFFFFC85286004A010200006 +S31540012E40A610200FAA102006A81020107FFFB8F365 +S31540012E5090100010A2042001832C60048606000114 +S31540012E60A12C2004C026000184060010E620E004BF +S31540012E70EA20A018C206000180A0600F028000056A +S31540012E80820600107FFFB8EC9010200382060010E6 +S31540012E908410200E872C6004E6206018C2060003C9 +S31540012EA080A0400212BFFFFE010000008400BFFF68 +S31540012EB080A0BFFF12BFFFFA01000000852C60040D +S31540012EC0C206000280A0600F12BFFFFE82060010FC +S31540012ED0C20060188088601002800033A00600108E +S31540012EE0E8242018C204201880886010128000351A +S31540012EF00100000080A4801114BFFFD5A01000116D +S31540012F0080A4A0010480000C821020007FFFB8C37A +S31540012F10901020088210200FC22620188210202FE0 +S31540012F20C2262028C206202080A0600D12BFFFFEC7 +S31540012F308210200085286004840600028200600118 +S31540012F4080A04012C020A01812BFFFFC8528600453 +S31540012F5021100124C204210480A0600002800010D7 +S31540012F60921000191110004B400025AD901221C05E +S31540012F707FFFFC3DD0042104C204210484102001BA +S31540012F80B3288019F22060408210200FC2262014F7 +S31540012F908210200DC2262018A780000081C7E008B4 +S31540012FA081E800007FFFB8A490102004E82420188F +S31540012FB0C20420188088601022BFFFD080A48011EF +S31540012FC07FFFB89D9010200510BFFFCC80A48011D3 +S31540012FD07FFFB8999010200110BFFF8D8210201FEE +S31540012FE0000000000000000000000000000000009A +S31540012FF0000000000000000000000000000000008A +S315400130000100000001000000010000000100000075 +S31540013010010000000100000081C3E008010000003A +S315400130200100000001000000010000000100000055 +S31540013030010000000100000081C3E008010000001A +S315400130400100000001000000010000000100000035 +S31540013050010000000100000081C3E00801000000FA +S315400130600100000001000000010000000100000015 +S31540013070010000000100000081C3E00801000000DA +S31540013080D482018090A2000916BFFFFE9612800BE2 +S3154001309081C3E0089010000BD48201C090A20009C0 +S315400130A016BFFFFE9612800B81C3E0089010000BFD +S315400130B090A22004C0A201A090A22004C0A201A017 +S315400130C090A22004C0A201A090A22004C0A201A007 +S315400130D0C0A2018090A2200414BFFFF701000000A6 +S315400130E081C3E0080100000090A22004C0A201E0D3 +S315400130F090A22004C0A201E090A22004C0A201E057 +S3154001310090A22004C0A201E0C0A201C090A2200466 +S3154001311014BFFFF70100000081C3E0080100000071 +S31540013120981000089610000A98A3200814BFFFFFC4 +S31540013130D43B00099810000898A3200814BFFFFF4C +S31540013140C01B00099810000898A32004D603000963 +S3154001315080A2C00A1280000698A3200434BFFFFD56 +S31540013160D603000981C3E008901020009010200189 +S31540013170981000089610000A98A3200814BFFFFF74 +S31540013180D43B00099810000898A32004D6030009EF +S3154001319080A2C00A1280000698A3200434BFFFFD16 +S315400131A0D603000981C3E008901020009010200149 +S315400131B09810000898A32004D2A301A0DA8301A0A5 +S315400131C080A340091280000698A3200414BFFFFC87 +S315400131D0D2A301A081C3E0089010200090102001E5 +S315400131E09A1000089AA3400AD6A34180D883418009 +S315400131F0981B000B988B0009128000069AA3400A7F +S3154001320014BFFFFBD6A3418081C3E0089010200084 +S31540013210901020019A1000089AA3400BD8A241CDE4 +S31540013220C48241CD8418800C8488800A12800006AD +S315400132309AA3400B14BFFFFBD8A241CD81C3E0083E +S3154001324090102000901020010100000001000000B4 +S315400132500100000013100080921260E4D402400085 +S3154001326080A2A0011280000780A0A002D4024000E3 +S31540013270D4024000952AA0021080000501000000FA +S315400132803280000381E80000D402400081E0000062 +S3154001329093480000818A60202310004CA21462B832 +S315400132A0A40460040100000081C4400081CC800078 +S315400132B091D0200191D02001268000059000200167 +S315400132C090222001912A2001912A200281C3E008FF +S315400132D00100000081C3E008D082004081C3E008BC +S315400132E0D2A2004081C3E008D082018081C3E008B8 +S315400132F0D2A2018081C3E008D08201A081C3E00847 +S31540013300D2A201A081C3E008D08201C081C3E008F6 +S31540013310D2A201C081C3E008D08201E081C3E008A6 +S31540013320D2A201E081C3E008D2A2000081C3E00835 +S31540013330D082000081C3E00891480000818A0000E4 +S3154001334001000000010000000100000081C3E00807 +S315400133500100000081C3E008C0A000A081C3E008CD +S31540013360C0A000C081C3E008D01A000001000000DF +S315400133700100000001000000010000000100000002 +S315400133809DE3BF8803100076D11861B8D13FBFF0E5 +S3154001339003100080D11FBFF0D9186180031000804F +S315400133A0D518618895A308CAD53FBFF80310008098 +S315400133B0D91FBFF8D518619081AB0A4A01000000B8 +S315400133C023800038D127BFEC91A005480310007631 +S315400133D0D13FBFF8D51FBFF8D91FBFF899A3094AF6 +S315400133E0D51FBFF099A308CA99A0012CD51861C071 +S315400133F081AB0ACA010000002D800024D127BFEC11 +S3154001340091A018C891A20928D51FBFF091A01928EB +S3154001341091A208CA91A0012803100076D51861C867 +S3154001342081AA0ACA010000000D80001501000000B2 +S315400134304000019001000000400001EE0100000043 +S3154001344080A220001280000B0100000040000243D0 +S315400134500100000080A2200012800004010000004B +S3154001346081C7E00881E800007FFFB77391E8200536 +S315400134707FFFB7710100000030BFFFF57FFFB76ED8 +S315400134809010200330BFFFEBD327BFE87FFFB76A19 +S3154001349090102002D307BFE810BFFFDAD107BFEC77 +S315400134A0D327BFE87FFFB76490102001D307BFE859 +S315400134B010BFFFC6D107BFEC9DE3BFA07FFFFF9EB4 +S315400134C0210000047FFFFF9E901200107FFFFF9AAC +S315400134D001000000808A001012800004B010200014 +S315400134E081C7E00881E80000400002669010200094 +S315400134F07FFFB76D01000000912A20047FFFB74787 +S31540013500900220087FFFFF9F81E800000100000034 +S3154001351019100080981321201110020092102000EA +S31540013520150FF76C9412A3D7D03B0000D423200883 +S31540013530C11B0000C503200887A0892201000000A5 +S3154001354089A005408DA0892281A8CA2601000000D4 +S3154001355033800003901020009010200181C3E008C1 +S3154001356001000000C11A0000C51A400089A00842A6 +S3154001357081C3E008C93A8000C11A0000C51A40005B +S3154001358089A0094281C3E008C93A80001910008028 +S3154001359098132120D0230000D2232008C103000024 +S315400135A0C303200885A00D2181C3E008C53A8000E8 +S315400135B0C11A0000C51A400089A009C2C93A800053 +S315400135C081C3E00801000000C11A000085A0054042 +S315400135D0C53A400081C3E008010000000100000037 S315400135E00100000001000000010000000100000090 S315400135F00100000001000000010000000100000080 S31540013600010000000100000001000000010000006F -S3154001361001000000010000000100000081A000201F -S3154001362081C3E00801000000C11A000081C3E0081F -S3154001363001000000C51A000089A009C2C93A40002C -S3154001364081C3E008010000001310008092126178E6 -S31540013650D0224000C102400085A01900C53A400071 -S3154001366081C3E008D01A400013100080921261789D -S31540013670D0224000C102400085A01880C5224000EA -S3154001368081C3E008D0024000151000809412A17851 -S31540013690D03A8000C11A800085A01A40C522800018 -S315400136A081C3E008D0028000151000809412A178F1 -S315400136B0D0228000C102800085A01A20C522800048 -S315400136C081C3E008D0028000151000809412A178D1 -S315400136D0D0228000C102800081A01920C13A800019 -S315400136E081C3E008D01A8000151000809412A17899 -S315400136F0D03A8000C11A800081A018C0C122800042 -S3154001370081C3E008D0028000151000809412A17890 -S31540013710D0228000CB0280008DA00025CD228000E2 -S3154001372081C3E008D0028000151000809412A17870 -S31540013730D0228000CB0280008DA000A5CD22800042 -S3154001374081C3E008D0028000151000809412A17850 -S31540013750D0228000CB0280008DA00125CD228000A1 -S3154001376081C3E008D00280001910008098132178A7 -S31540013770D03B0000D43B2008C11B0000C51B2008DC -S3154001378081A80A4201000000338000099010200000 -S3154001379029800007901020012D80000590102002FD -S315400137A02F8000039010200391D0200081C3E008B0 -S315400137B0010000001910008098132178D03B0000C9 -S315400137C0D43B2008C11B0000C51B200881A80AC2A2 -S315400137D00100000033BFFFF69010200029BFFFF41F -S315400137E0901020012DBFFFF2901020022FBFFFF055 -S315400137F09010200391D02000191000809813217851 -S31540013800D0230000D2232008C1030000C3032008AF -S3154001381081A80A210100000033BFFFE59010200076 -S3154001382029BFFFE3901020012DBFFFE19010200238 -S315400138302FBFFFDF9010200391D020001910008088 -S3154001384098132178D0230000D2232008C103000019 -S31540013850C303200881A80AA10100000033BFFFD499 -S315400138609010200029BFFFD2901020012DBFFFD01C -S31540013870901020022FBFFFCE9010200391D0200040 -S315400138801910008098132178D03B0000D43B2008C2 -S31540013890C11B0000C51B200889A008C2C93B000006 -S315400138A081C3E008D01B00001910008098132178CD -S315400138B0D0230000D2232008C1030000C3032008FF -S315400138C085A00821C523000081C3E008D00300007C -S315400138D01910008098132178D0230000D2232008A4 -S315400138E0C1030000C303200885A008A1C523000029 -S315400138F081C3E008D0030000191000809813217895 -S31540013900D0230000D2232008C1030000C3032008AE -S3154001391085A00921C523000081C3E008D00300002A -S315400139201910008098132178D0230000D223200853 -S31540013930C1030000C303200885A009A1C5230000D7 -S3154001394081C3E008D0030000191000809813217844 -S31540013950D0230000C103000083A00520C32300003B -S3154001396081C3E008D00300001310008092126190D9 -S31540013970C51A6008C11A400089A0084091A108C231 -S3154001398095A209C495A2894281C3E008D53A0000AF -S3154001399013100080921261B0C1024000C30260045C -S315400139A085A0082087A088A189A0C9A289A109214B -S315400139B081C3E008C922000096102002131000803E -S315400139C092126190151000809412A190D502400088 -S315400139D0D7028000D5220000D802000013100080D3 -S315400139E0921261B096A2E00112BFFFF901000000F8 -S315400139F081C3E0080100000013100080921261901B -S31540013A00151000809412A1B0C1028000C51A601041 -S31540013A1083A0082089A088C08BA109A18DA1094254 -S31540013A208FA1492691A0054681C3E008D13A0000FD -S31540013A301110008090122188C11A0000C51A000099 -S31540013A40C91A0000CD1A0000D11A0000D51A00008B -S31540013A50D91A0000DD1A0000E11A0000E51A00003B -S31540013A60E91A0000ED1A0000F11A0000F51A0000EB -S31540013A70F91A0000FD1A000081C3E00801000000A8 -S31540013A8029100080A815215827100080A614E1C0EE -S31540013A90C12CC000E604C000A134E00EA00C2007F2 -S31540013AA0A0A42002AE1020002D100080AC15A1C0AC -S31540013AB0AE05E001AC05A008C1358000C12D00006E -S31540013AC0EA050000AB35600DAA8D600112BFFFF912 -S31540013AD001000000808000100280002F2B3C1FFF58 -S31540013AE0AA1563FFA60CC015E6250000C10D00000E -S31540013AF02B100080AA1561CC2D10004EAC15A36089 -S31540013B00AE25E001E0054000E025800081D8200097 -S31540013B10010000000100000001000000010000005A -S31540013B20010000000100000001000000010000004A -S31540013B30010000000100000001000000010000003A -S31540013B40010000000100000001000000010000002A +S31540013610010000000100000001000000010000005F +S31540013620010000000100000001000000010000004F +S31540013630010000000100000001000000010000003F +S31540013640010000000100000001000000010000002F +S3154001365001000000010000000100000081A00020DF +S3154001366081C3E00801000000C11A000081C3E008DF +S3154001367001000000C51A000089A009C2C93A4000EC +S3154001368081C3E008010000001310008092126120FE +S31540013690D0224000C102400085A01900C53A400031 +S315400136A081C3E008D01A40001310008092126120B5 +S315400136B0D0224000C102400085A01880C5224000AA +S315400136C081C3E008D0024000151000809412A12069 +S315400136D0D03A8000C11A800085A01A40C5228000D8 +S315400136E081C3E008D0028000151000809412A12009 +S315400136F0D0228000C102800085A01A20C522800008 +S3154001370081C3E008D0028000151000809412A120E8 +S31540013710D0228000C102800081A01920C13A8000D8 +S3154001372081C3E008D01A8000151000809412A120B0 +S31540013730D03A8000C11A800081A018C0C122800001 +S3154001374081C3E008D0028000151000809412A120A8 +S31540013750D0228000CB0280008DA00025CD228000A2 +S3154001376081C3E008D0028000151000809412A12088 +S31540013770D0228000CB0280008DA000A5CD22800002 +S3154001378081C3E008D0028000151000809412A12068 +S31540013790D0228000CB0280008DA00125CD22800061 +S315400137A081C3E008D00280001910008098132120BF +S315400137B0D03B0000D43B2008C11B0000C51B20089C +S315400137C081A80A42010000003380000990102000C0 +S315400137D029800007901020012D80000590102002BD +S315400137E02F8000039010200391D0200081C3E00870 +S315400137F0010000001910008098132120D03B0000E1 +S31540013800D43B2008C11B0000C51B200881A80AC261 +S315400138100100000033BFFFF69010200029BFFFF4DE +S31540013820901020012DBFFFF2901020022FBFFFF014 +S315400138309010200391D02000191000809813212068 +S31540013840D0230000D2232008C1030000C30320086F +S3154001385081A80A210100000033BFFFE59010200036 +S3154001386029BFFFE3901020012DBFFFE190102002F8 +S315400138702FBFFFDF9010200391D020001910008048 +S3154001388098132120D0230000D2232008C103000031 +S31540013890C303200881A80AA10100000033BFFFD459 +S315400138A09010200029BFFFD2901020012DBFFFD0DC +S315400138B0901020022FBFFFCE9010200391D0200000 +S315400138C01910008098132120D03B0000D43B2008DA +S315400138D0C11B0000C51B200889A008C2C93B0000C6 +S315400138E081C3E008D01B00001910008098132120E5 +S315400138F0D0230000D2232008C1030000C3032008BF +S3154001390085A00821C523000081C3E008D00300003B +S315400139101910008098132120D0230000D2232008BB +S31540013920C1030000C303200885A008A1C5230000E8 +S3154001393081C3E008D00300001910008098132120AC +S31540013940D0230000D2232008C1030000C30320086E +S3154001395085A00921C523000081C3E008D0030000EA +S315400139601910008098132120D0230000D22320086B +S31540013970C1030000C303200885A009A1C523000097 +S3154001398081C3E008D003000019100080981321205C +S31540013990D0230000C103000083A00520C3230000FB +S315400139A081C3E008D00300001310008092126138F1 +S315400139B0C51A6008C11A400089A0084091A108C2F1 +S315400139C095A209C495A2894281C3E008D53A00006F +S315400139D01310008092126158C1024000C302600474 +S315400139E085A0082087A088A189A0C9A289A109210B +S315400139F081C3E008C92200009610200213100080FE +S31540013A0092126138151000809412A138D5024000F7 +S31540013A10D7028000D5220000D80200001310008092 +S31540013A209212615896A2E00112BFFFF9010000000F +S31540013A3081C3E00801000000131000809212613832 +S31540013A40151000809412A158C1028000C51A601059 +S31540013A5083A0082089A088C08BA109A18DA1094214 +S31540013A608FA1492691A0054681C3E008D13A0000BD +S31540013A701110008090122130C11A0000C51A0000B1 +S31540013A80C91A0000CD1A0000D11A0000D51A00004B +S31540013A90D91A0000DD1A0000E11A0000E51A0000FB +S31540013AA0E91A0000ED1A0000F11A0000F51A0000AB +S31540013AB0F91A0000FD1A000081C3E0080100000068 +S31540013AC029100080A81520F827100080A614E16867 +S31540013AD0C12CC000E604C000A134E00EA00C2007B2 +S31540013AE0A0A42002AE1020002D100080AC15A168C4 +S31540013AF0AE05E001AC05A008C1358000C12D00002E +S31540013B00EA050000AB35600DAA8D600112BFFFF9D1 +S31540013B1001000000808000100280002F2B3C1FFF17 +S31540013B20AA1563FFA60CC015E6250000C10D0000CD +S31540013B302B100080AA1561742D10004EAC15A3A060 +S31540013B40AE25E001E0054000E025800081D8200057 S31540013B50010000000100000001000000010000001A -S31540013B600000000080A5C00012BFFFE6AA0560085C -S31540013B70C12D0000E60500002B03C000A614C015A8 -S31540013B80E6250000C10D000081C4400081CC8000C3 -S31540013B900100000081C4800081CCA0040100000026 -S31540013BA00100000081C3E0089158000001000000B7 -S31540013BB01110008090122158C10A0000C022000055 -S31540013BC0C10A0000C12A0000D4020000130003808C -S31540013BD0942A800980A0000A3280004D901020036B -S31540013BE01303E000D223BFA0C023BFA4C10BBFA0D3 -S31540013BF0C023BFA0151000809412A170C10280009D -S31540013C000100000001000000C10BBFA0C10BBFA411 -S31540013C1083A00520C12BBFA0D003BFA0808A22006C -S31540013C202280003B90102004901020001510008047 -S31540013C309412A140C5028000C902A008D102A00C7D -S31540013C401310008092126170C70240008DA0894412 -S31540013C5081A98AC801000000038000050100000017 -S31540013C60901020011080002A01000000C50280004A -S31540013C70C902A008D102A00C1310008092126170F3 -S31540013C80CB0240008DA0894481A98AC80100000069 -S31540013C900380000501000000901020011080001CE7 -S31540013CA00100000025100080A414A168C11C8000F9 -S31540013CB0C51C800080A000003280000685A008C097 -S31540013CC081A80AC201000000138000030100000020 -S31540013CD0901020050100000025100080A414A16861 -S31540013CE0C11C8000C51C800080A0000001000000AE -S31540013CF03280000685A008C081A80AC201000000E2 -S31540013D00138000030100000090102007010000000D -S31540013D1081C3E00801000000901020019544000095 -S31540013D209532A01E940AA00380A280000280004022 -S31540013D309010200080A2A0030280003D1310008055 -S31540013D40921261F0C11A4000C51A6008FD0260185E -S31540013D5095A0003E99A0003E9DA0003E170000C0E0 -S31540013D609612E078A182C000010000000100000027 -S31540013D7001000000010000000100000001000000F8 -S31540013D8081A0002083A0002195A0002A99A0002CA3 -S31540013D909DA0002E170000C09612E07CA182C000B3 -S31540013DA001000000010000000100000001000000C8 -S31540013DB0010000000100000085A0002287A0002329 -S31540013DC0A180000001000000010000000100000088 -S31540013DD001000000010000000100000089A0084226 -S31540013DE0A9A2883ED93A4000DD224000CD1A601092 -S31540013DF0D102600881A90A46010000000380000C37 -S31540013E0081AD0A28010000000380000993440000A7 -S31540013E109332601B920A60079010200080A2A00195 -S31540013E2002800003902260079022600481C3E0086B -S31540013E3001000000C12BBFA081C3E008D003BFA091 -S31540013E40D023BFA081C3E008C10BBFA00100000081 -S31540013E509DE3BF6040001B19B0102000913A200A33 -S31540013E60900A200380A22001128011110100000056 -S31540013E707FFFB4E69010200D190C40291B23CD1B62 -S31540013E809410200096102000981320069A13609BE8 -S31540013E90D43FBFE0D43FBFC0D43FBFE87FFFFF421E -S31540013EA0D83FBFF0900A30000328040090122080CA -S31540013EB08210600FC22200001B10004E90022004A7 -S31540013EC09A1362809A234008191000009B3B6002B6 -S31540013ED0032784009A13400C82106010C2222004EA -S31540013EE07FFFFED4DA2200007FFFFFD61103E000F8 -S31540013EF02D100080C025A1C07FFFFDD49010200069 -S31540013F00809200091280000601000000C205A1C08E -S31540013F1080A0600002800004010000007FFFB4C061 -S31540013F209010200B7FFFFDC990103FFA0330060029 -S31540013F3080A200011280000480A2600002800EDB94 -S31540013F40010000007FFFB4B69010200B7FFFFDBF3C -S31540013F509010201403100D0080A20001128000046D -S31540013F6080A2600002800ECC010000007FFFB4AC4D -S31540013F709010200B7FFFFDB5901020620310162094 -S31540013F8080A200011280000480A2600002800EBD62 -S31540013F90010000007FFFB4A29010200B7FFFFDB30C -S31540013FA0901020050310280080A20001128000060F -S31540013FB001000000C205A1C080A06000028000048B -S31540013FC0010000007FFFB4969010200B7FFFFF9DFC -S31540013FD01103C000111C00007FFFFDAC92102000B0 -S31540013FE0031FFFFF821063FF80A200011280000AB7 -S31540013FF01B000070C205A1C09A13601F1900001072 -S315400140008208400D9813201080A0400C02800005C4 -S31540014010113C00007FFFB4829010200C113C00003F -S315400140207FFFFD9A921020000320000080A200012C -S315400140301280000A1B000070C205A1C09A13601FBE -S31540014040190000108208400D9813201080A0400CE2 -S3154001405002800004010000007FFFB4719010200C23 -S31540014060C025A1C0901020007FFFFD88921020003E -S3154001407080A220001280000601000000C205A1C0F6 -S3154001408080A0600002800005110144007FFFB464F6 -S315400140909010200C11014400132840009012230275 -S315400140A07FFFFD7A9212600180A2200012800006F5 -S315400140B001000000C205A1C080A060002280000569 -S315400140C01111FFFF7FFFB4569010200C1111FFFF15 -S315400140D07FFFFD76901223FF0300007F821063FF6E -S315400140E080A200011280000601000000C205A1C0A5 -S315400140F080A06000028000052F1000857FFFB44834 -S315400141009010200C2F1000857FFFFD60D01DE0C868 -S31540014110031FFFFF821063FF80A200011280000A85 -S315400141201B000070C205A1C09A13601F1900001040 -S315400141308208400D9813201080A0400C0280000593 -S31540014140031000857FFFB4369010200C03100085C4 -S31540014150D01860D8C025A1C07FFFFD4C01000000EA -S315400141600320000080A200011280000A1B0000709B -S31540014170C205A1C09A13601F190000108208400DA4 -S315400141809813201080A0400C02800005191000856C -S315400141907FFFB4239010200C19100085C025A1C0C3 -S315400141A07FFFFD3AD01B20B8031FFFFF821063FF3C -S315400141B080A200011280000A1B000070C205A1C046 -S315400141C09A13601F190000108208400D98132010A1 -S315400141D080A0400C02800005331000857FFFB4109B -S315400141E09010200C33100085C025A1C07FFFFD270C -S315400141F0D01E60F0C205A1C08330600E8208600304 -S3154001420080A0600202800004211000807FFFB40478 -S315400142109010200C7FFFFF0B1103C00011115804B1 -S31540014220C02421C07FFFFD299012223403102B00A8 -S315400142308210624680A20001128000050320000020 -S3154001424080A2400102800FC5010000007FFFB3F448 -S315400142509010200D113C02AF7FFFFD1C901220D122 -S31540014260033180558210639A80A2000112800005B5 -S315400142700308000080A2400102800FDB010000001C -S315400142807FFFB3E79010200D1111FC007FFFFD1752 -S3154001429092102000031FE00080A200011280000A54 -S315400142A01B000070C205A1C09A13601F19000010BF -S315400142B08208400D9813200880A0400C028000051A -S315400142C011207C017FFFB3D69010200D11207C0177 -S315400142D0C025A1C0901220307FFFFD0413000100CC -S315400142E00320000080A200011280000A1B0000701A -S315400142F0C205A1C09A13601F190000108208400D23 -S315400143009813200480A0400C0280000401000000A4 -S315400143107FFFB3C39010200DC025A1C0901020008F -S315400143207FFFFCF29210200080A22000128000063E -S3154001433001000000C205A1C080A060000280000407 -S31540014340010000007FFFB3B69010200D7FFFFCE710 -S31540014350D01DE0C803100085DA0060C080A2000DC0 -S315400143601280000601000000C205A1C080A06000C5 -S31540014370028000051B1000857FFFB3A99010200D18 -S315400143801B1000857FFFFCD9D01B60D0031FE000C6 -S3154001439080A200011280000601000000C205A1C0F2 -S315400143A080A0600002800005031000857FFFB39C5A -S315400143B09010200D031000857FFFFCCCD01860B80B -S315400143C003100085DA0060A880A2000D1280000A61 -S315400143D01B000070C205A1C09A13601F190000108E -S315400143E08208400D9813201080A0400C02800004E2 -S315400143F0010000007FFFB38A9010200DC025A1C0A7 -S315400144007FFFFCBAD01E60F0C205A1C08330600EAA -S315400144108208600380A060020280000423100080AD -S315400144207FFFB37F9010200D7FFFFE861103E000D2 -S315400144302108C6AF901420DEC02461C07FFFFCB3C3 -S31540014440A01420DE80A200101280000601000000A8 -S31540014450C20461C080A06000028000052108C6AF89 -S315400144607FFFB36F9010200E2108C6AF7FFFFCB7C8 -S31540014470901420DEA01420DE80A2001012800006D7 -S3154001448001000000C205A1C080A060002280000595 -S315400144901128C6AF7FFFB3629010200E1128C6AF18 -S315400144A07FFFFCAA901220DE0308C6AF821060DEB1 -S315400144B080A200011280000601000000C205A1C0D1 -S315400144C080A06000228000051108C6AF7FFFB3546B -S315400144D09010200E1108C6AF7FFFFC94901220DE8B -S315400144E00328C6AF821060DE80A20001128000065A -S315400144F001000000C205A1C080A060002280000525 -S315400145001128C6AF7FFFB3469010200E1128C6AFC3 -S315400145107FFFFC86901220DE0308C6AF821060DE64 -S3154001452080A200011280000601000000C205A1C060 -S3154001453080A0600002800004010000007FFFB338C4 -S315400145409010200E7FFFFE3F1103E00011151BC0A6 -S315400145501310C82115351BC01710C821901221030D -S31540014560921261419412A1037FFFFC809612E141B0 -S3154001457080A220021280000601000000C205A1C0EF -S3154001458080A060000280000511351BC07FFFB32467 -S315400145909010200F11351BC01310C82115151BC0D3 -S315400145A01710C82190122103921261419412A1035E -S315400145B07FFFFC6E9612E14180A220011280000627 -S315400145C001000000C205A1C080A060000280000574 -S315400145D0901020007FFFB3129010200F9010200002 -S315400145E092102000152000007FFFFC6096102000ED -S315400145F080A220001280000601000000C205A1C071 -S3154001460080A0600002800005191000857FFFB30479 -S315400146109010200F191000851B100085D01B20D04B -S315400146207FFFFC52D41B60D880A220021280000674 -S3154001463001000000C205A1C080A060000280000503 -S3154001464011151BC07FFFB2F69010200F11151BC02C -S315400146501310C82115151BE81710C8219012210304 -S31540014660921261419412A1037FFFFC409612E141EF -S3154001467080A220011280000601000000C205A1C0EF -S3154001468080A060000280000511151BE87FFFB2E49F -S315400146909010200F11151BE81310C82115151BC0CA -S315400146A01710C82190122103921261419412A1035D -S315400146B07FFFFC2E9612E14180A220021280000665 -S315400146C001000000C205A1C080A060000280000573 -S315400146D011151BE87FFFB2D29010200F11151BE870 -S315400146E01310C82190122103921261417FFFFC1FD2 -S315400146F0D41DE0C880A220031280000601000000FC -S31540014700C205A1C080A0600002800005031000859B -S315400147107FFFB2C39010200F0310008511151BE8CF -S315400147201310C82190122103921261417FFFFC0FA1 -S31540014730D41860B880A220031280000A1B000070C2 -S31540014740C205A1C09A13601F190000108208400DCE -S315400147509813201080A0400C0280000511151BE81B -S315400147607FFFB2AF9010200F11151BE81310C8211F -S31540014770C025A1C090122103921261417FFFFBFB2C -S31540014780D41E60F080A220021280000601000000C3 -S31540014790C205A1C080A060000280000515151BE876 -S315400147A07FFFB29F9010200F15151BE81710C821E7 -S315400147B0D01E60F09412A1037FFFFBEC9612E141FB -S315400147C080A220011280000601000000C205A1C09E -S315400147D080A060000280000515151BE87FFFB2909E -S315400147E09010200F15151BE81710C821D01DE0C8E1 -S315400147F09412A1037FFFFBDD9612E14180A22003C3 -S315400148001280000601000000C205A1C080A0600020 -S3154001481002800005191000857FFFB2819010200F9C -S315400148201910008515151BE81710C821D01B20B893 -S315400148309412A1037FFFFBCD9612E14180A2200392 -S315400148401280000A1B000070C205A1C09A13601FA6 -S31540014850190000108208400D9813201080A0400CCA -S315400148600280000511151BC07FFFB26D9010200F0D -S3154001487011151BC01310C82115351BC01710C821AF -S31540014880C025A1C090122103921261419412A10345 -S315400148907FFFFBC99612E14180A2200212800006E9 -S315400148A001000000C205A1C080A060000280000591 -S315400148B011351BC07FFFB25A9010200F11351BC016 -S315400148C01310C82115151BC01710C82190122103BA -S315400148D0921261419412A1037FFFFBB79612E14107 -S315400148E080A220011280000601000000C205A1C07D -S315400148F080A0600002800005901020007FFFB24832 -S315400149009010200F901020009210200015200000DA -S315400149107FFFFBA99610200080A22000128000068E -S3154001492001000000C205A1C080A060000280000510 -S315400149301B1000857FFFB23A9010200F1B10008597 -S3154001494003100085D01B60D07FFFFB9BD41860D835 -S3154001495080A220021280000601000000C205A1C00B -S3154001496080A060000280000511151BC07FFFB22C9C -S315400149709010200F11151BC01310C82115151BE8E7 -S315400149801710C82190122103921261419412A1037A -S315400149907FFFFB899612E14180A220011280000629 -S315400149A001000000C205A1C080A060000280000590 -S315400149B011151BE87FFFB21A9010200F11151BE845 -S315400149C01310C82115151BC01710C82190122103B9 -S315400149D0921261419412A1037FFFFB779612E14146 -S315400149E080A220021280000601000000C205A1C07B -S315400149F080A060000280000511151BE87FFFB20808 -S31540014A009010200F11151BE81310C8219012210395 -S31540014A10921261417FFFFB68D41DE0C880A220034A -S31540014A201280000A1B000070C205A1C09A13601FC4 -S31540014A30190000108208400D9813201080A0400CE8 -S31540014A4002800005191000857FFFB1F59010200FF7 -S31540014A501910008511151BE81310C8219012210366 -S31540014A60921261417FFFFB54D41B20B880A22003E0 -S31540014A701280000A1B000070C205A1C09A13601F74 -S31540014A80190000108208400D9813201080A0400C98 -S31540014A900280000511151BE87FFFB1E19010200F40 -S31540014AA011151BE81310C821C025A1C0901221037E -S31540014AB0921261417FFFFB40D41E60F080A220022A -S31540014AC01280000601000000C205A1C080A060005E -S31540014AD00280000515151BE87FFFB1D19010200F0C -S31540014AE015151BE81710C821D01E60F09412A103BA -S31540014AF07FFFFB319612E14180A220011280000620 -S31540014B0001000000C205A1C080A06000028000052E -S31540014B1015151BE87FFFB1C29010200F15151BE834 -S31540014B201710C821D01DE0C89412A1037FFFFB22B4 -S31540014B309612E14180A220031280000A1B000070F8 -S31540014B40C205A1C09A13601F190000108208400DCA -S31540014B509813201080A0400C028000051B10008590 -S31540014B607FFFB1AF9010200F1B10008515151BE874 -S31540014B701710C821D01B60B89412A1037FFFFB0E0A -S31540014B809612E14180A220031280000A1B000070A8 -S31540014B90C205A1C09A13601F190000108208400D7A -S31540014BA09813201080A0400C02800005110048EAAD -S31540014BB07FFFB19B9010200F110048EA13048D1519 -S31540014BC0C025A1C0901223CD7FFFFB0C92126278C3 -S31540014BD080A220011280000601000000C205A1C08A -S31540014BE080A0600002800005110048EA7FFFB18C79 -S31540014BF09010200F110048EA13048D15901223CD11 -S31540014C007FFFFB0F9212627880A22001128000067C -S31540014C1001000000C205A1C080A06000028000041E -S31540014C20010000007FFFB17E9010200FC025A1C07A -S31540014C307FFFFC841103C000291001449007BFF097 -S31540014C409207BFE87FFFFA3894152150C207BFF09B -S31540014C50DA05215080A0400D1280000782152150AF -S31540014C60DA006004C207BFF480A0400D02800D59EE -S31540014C70010000007FFFB16A9010201037100085B7 -S31540014C809007BFF09216E0E07FFFFA279415215076 -S31540014C90C206E0E0DA05215080A340018215215089 -S31540014CA0128000079816E0E0DA006004C20320048F -S31540014CB080A3400102800D42010000007FFFB158F0 -S31540014CC0901020109007BFF09215E0C87FFFFA16AA -S31540014CD094152150C205E0C8DA05215080A3400150 -S31540014CE082152150128000079815E0C8DA00600449 -S31540014CF0C203200480A3400102800D2C0100000064 -S31540014D007FFFB1479010201003100085921060B8C4 -S31540014D109007BFF07FFFFA04941521501B000070E5 -S31540014D20C205A1C09A13601F190000108208400DE8 -S31540014D309813201080A0400C0280000421100144E9 -S31540014D407FFFB1379010201003100080C02061C052 -S31540014D507FFFFC3C901020001310008594142150D5 -S31540014D60921260B87FFFF9F09007BFF039100085C5 -S31540014D70C20720B0DA04215080A340019414215087 -S31540014D8012800007821720B0DA02A004C200600434 -S31540014D9080A3400102800004010000007FFFB12092 -S31540014DA0901020107FFFFC271103C0009007BFF031 -S31540014DB0921660F07FFFF9DC94152150C205A1C01F -S31540014DC08330600E8208600380A060022110014496 -S31540014DD002800004231000807FFFB1119010201043 -S31540014DE094142150C02461C09007BFE87FFFF9CEDB -S31540014DF09207BFF0DA042150C207BFF080A34001F9 -S31540014E001280000794142150DA02A004C207BFF4AD -S31540014E1080A3400102800D21010000007FFFB10007 -S31540014E20901020109007BFE89216E0E07FFFF9BE90 -S31540014E3094152150C206E0E0DA05215080A34001D5 -S31540014E4082152150128000079816E0E0DA006004CE -S31540014E50C203200480A3400102800D0B0100000023 -S31540014E607FFFB0EF901020109007BFE89215E0C881 -S31540014E707FFFF9AD94152150C205E0C8DA052150EE -S31540014E8080A3400182152150128000079815E0C881 -S31540014E90DA006004C203200480A3400102800CF5BD -S31540014EA0010000007FFFB0DE901020101910008530 -S31540014EB0921320B89007BFE87FFFF99B94152150C4 -S31540014EC01B000070C205A1C09A13601F1900001093 -S31540014ED08208400D9813201080A0400C02800004E7 -S31540014EE0211001447FFFB0CE901020107FFFFBD5EB -S31540014EF0901020001310008594142150921260B82E -S31540014F007FFFF9899007BFE8C20720B0DA04215034 -S31540014F1080A340019414215012800007821720B0CB -S31540014F20DA02A004C200600480A3400102800004AA -S31540014F30010000007FFFB0BA901020107FFFFBC137 -S31540014F401103C0009007BFE8921660F07FFFF97623 -S31540014F5094152150C205A1C08330600E82086003BA -S31540014F6080A06002211001440280000423100080C9 -S31540014F707FFFB0AB9010201094142150C02461C023 -S31540014F809016E0E07FFFF9689207BFF0C206E0E0C5 -S31540014F90DA04215080A34001941421501280000765 -S31540014FA08216E0E0DA02A004C200600480A3400158 -S31540014FB002800CAB010000007FFFB09990102010D9 -S31540014FC09016E0E09207BFE87FFFF957941521500C -S31540014FD0C206E0E0DA05215080A340018215215046 -S31540014FE0128000079816E0E0DA006004C20320044C -S31540014FF080A3400102800C95010000007FFFB0882C -S31540015000901020101B100085901360D0921000085C -S315400150107FFFF9459415215019100085C20320D010 -S31540015020DA05215080A340018215215012800007E4 -S31540015030981320D0DA006004C203200480A3400103 -S3154001504002800C7D010000007FFFB075901020109A -S315400150501B100085901360D8921000087FFFF9322B -S315400150609415215019100085C20320D8DA05215024 -S3154001507080A340018215215012800007981320D841 -S31540015080DA006004C203200480A3400102800C655B -S31540015090010000007FFFB062901020101B100085B8 -S315400150A003100085901360D8921060D07FFFF91EDF -S315400150B0941521501B000070C205A1C09A13601FB0 -S315400150C0190000108208400D9813201080A0400C52 -S315400150D002800004211001447FFFB051901020103E -S315400150E07FFFFB589010200011100085131000859A -S315400150F094142150901220D87FFFF90B921260D060 -S31540015100C20720B0DA04215080A3400194142150F3 -S3154001511012800007821720B0DA02A004C2006004A0 -S3154001512080A3400102800004010000007FFFB03CE3 -S31540015130901020107FFFFB431103C000191000851A -S315400151401B100085901320D0921360D8C025A1C0B2 -S315400151507FFFF8F594152150C20720B0DA0521509A -S3154001516080A340018215215012800007981720B074 -S31540015170DA006004C203200480A3400102800C1FB0 -S315400151801B0000707FFFB026901020109016E0E0C3 -S31540015190921660F07FFFF8E494152150C205A1C034 -S315400151A08330600E8208600380A0600221100144B2 -S315400151B002800004231000807FFFB0199010201058 -S315400151C094142150C02461C09015E0C87FFFF8D6E1 -S315400151D09207BFF0C205E0C8DA04215080A340011E -S315400151E094142150128000078215E0C8DA02A00407 -S315400151F0C200600480A3400102800B9C01000000B4 -S315400152007FFFB007901020109015E0C89207BFE8C5 -S315400152107FFFF8C594152150C205E0C8DA05215033 -S3154001522080A3400182152150128000079815E0C8DD -S31540015230DA006004C203200480A3400102800B8689 -S31540015240010000007FFFAFF6901020109015E0C8D6 -S315400152509216E0E07FFFF8B494152150C205E0C8EC -S31540015260DA05215080A340018215215012800007A2 -S315400152709815E0C8DA006004C203200480A3400107 -S3154001528002800B70010000007FFFAFE590102010F7 -S315400152909015E0C8921000087FFFF8A3941521509D -S315400152A0C205E0C8DA05215080A34001821521508C -S315400152B0128000079815E0C8DA006004C203200492 -S315400152C080A3400102800B5A010000007FFFAFD44A -S315400152D09010201003100085921060B89015E0C818 -S315400152E07FFFF8919415215003000070A610601FAE -S315400152F0DA05A1C0030000109A0B4013AA106010F2 -S3154001530080A3401523100085251001440280000426 -S31540015310211000807FFFAFC290102010C02421C011 -S31540015320901460B89207BFF07FFFF87F9414A150A4 -S31540015330C20421C08208401380A0401502800004A7 -S31540015340010000007FFFAFB690102010C02421C09D -S31540015350901460B89207BFE87FFFF8739414A15088 -S31540015360C20421C08208401380A040150280000477 -S31540015370010000007FFFAFAA90102010C02421C079 -S31540015380901460B89216E0E07FFFF8679414A1503C -S31540015390C20421C08208401380A040150280000546 -S315400153A0131000857FFFAF9E9010201013100085CB -S315400153B0C02421C0921260C8901460B87FFFF85A89 -S315400153C09414A150C20421C08208401380A0401504 -S315400153D002800005901460B87FFFAF9190102010B5 -S315400153E0901460B8C02421C0921000087FFFF84E87 -S315400153F09414A150C20421C08208401380A04015D4 -S3154001540002800004010000007FFFAF85901020104C -S31540015410C02421C0901460B8921660F07FFFF84214 -S315400154209414A150C20421C08330600E82086003E7 -S3154001543080A06002228000051103C0007FFFAF7883 -S31540015440901020101103C0007FFFFA7E3B100084AC -S31540015450A2176210C02421C0AA14A150A40460104E -S31540015460A0102000A6046008B010200C920400137E -S31540015470900400117FFFF82C94152150DA04801016 -S3154001548098040012C2052150A004201880A34001AF -S315400154901280000790102010DA032004C205600430 -S315400154A080A3400122800005B0863FFF7FFFAF5CAD -S315400154B001000000B0863FFF1CBFFFEE92040013BF -S315400154C0C205A1C080A060001280098901000000C8 -S315400154D01110008490122348920220087FFFF8128F -S315400154E09415215098176210C2052150DA032148BC -S315400154F080A340011280000782152150DA03214C16 -S31540015500C200600480A3400122800AAB03100080E0 -S315400155107FFFAF439010201011100084901223603A -S31540015520920220087FFFF8009415215098176210C7 -S31540015530C2052150DA03216080A340011280000791 -S3154001554082152150DA032164C200600480A3400120 -S3154001555002800AA41B0000707FFFAF31901020101B -S315400155601110008490122378920220087FFFF7EEF3 -S315400155709415215098176210C2052150DA032178FB -S3154001558080A340011280000782152150DA03217C55 -S31540015590C200600480A3400102800A9C1B00007087 -S315400155A07FFFAF1F90102010C025A1C01110000031 -S315400155B092102000150FFC007FFFF8B296102000D4 -S315400155C0030FFC0080A200011280000880A2600047 -S315400155D01280000601000000C205A1C080A0600043 -S315400155E002800005111000007FFFAF0D90102010C2 -S315400155F01110000092102000152FFC007FFFF8A12A -S31540015600961020000310020080A2000112800008BB -S3154001561080A260001280000601000000C205A1C000 -S3154001562080A0600002800005113000007FFFAEFCC3 -S31540015630901020101130000092102000150FFC0030 -S315400156407FFFF890961020000330020080A20001EF -S315400156501280000880A2600012800006010000004E -S31540015660C205A1C080A06000028000051130000083 -S315400156707FFFAEEB901020101130000092102000F9 -S31540015680152FFC007FFFF87F96102000032FFC00AA -S3154001569080A200011280000880A2600012800006EC -S315400156A001000000C205A1C080A060000280000583 -S315400156B0111000007FFFAEDA90102010111000008B -S315400156C07FFFF87A130FE0000310100080A200015B -S315400156D01280000601000000C205A1C080A0600042 -S315400156E002800005111000007FFFAECD9010201002 -S315400156F0111000007FFFF877130FE000030FE00061 -S3154001570080A200011280000601000000C205A1C06E -S3154001571080A0600022800005191000857FFFAEC081 -S315400157209010201019100085921320E8C025A1C0C1 -S315400157309007BFF07FFFF78F941521501910008510 -S31540015740C20320D8DA05215080A340018215215099 -S3154001575012800007981320D8DA006004C20320049F -S3154001576080A3400102800A461B0000707FFFAEAC59 -S31540015770901020111B100085921360D0C025A1C046 -S315400157809007BFF07FFFF77B94152150C207BFE01A -S31540015790DA05215080A3400112800007821521506D -S315400157A0DA006004C207BFE480A3400102800A3EDA -S315400157B0010000007FFFAE9A901020119007BFF0C4 -S315400157C09215E0C87FFFF76B94152150C205E0C8DA -S315400157D0DA05215080A3400182152150128000072D -S315400157E09815E0C8DA006004C203200480A3400192 -S315400157F002800A32010000007FFFAE89901020111D -S3154001580003100085921060B89007BFF07FFFF759EB -S3154001581094152150C20720B0DA05215080A34001DA -S315400158208215215012800007981720B0DA006004D3 -S31540015830C203200480A3400102800A251B00007098 -S315400158407FFFAE77901020119007BFF0921660F05F -S315400158507FFFF74894152150C205A1C01B00007077 -S315400158608208400D1900002080A0400C21100144FF -S3154001587002800004231000807FFFAE699010201142 -S3154001588094142150C02461C09007BFE87FFFF739C7 -S315400158909207BFF0DA042150C207BFE880A3400156 -S315400158A01280000794142150DA02A004C207BFEC0B -S315400158B080A3400102800A10010000007FFFAE581C -S315400158C09010201119100085901320E89207BFE02F -S315400158D07FFFF72894152150C20720B0DA052150E1 -S315400158E080A340018215215012800007981720B0ED -S315400158F0DA006004C203200480A3400102800A0347 -S315400159001B0000707FFFAE46901020111B100085D2 -S3154001591003100085901360E8921060D0C025A1C0A5 -S315400159207FFFF7149415215019100085C20320E812 -S31540015930DA05215080A340018215215012800007CB -S31540015940981320E8DA006004C203200480A34001D2 -S31540015950028009F8010000007FFFAE31901020114E -S315400159609007BFE89215E0C87FFFF70294152150D2 -S31540015970C205E0C8DA05215080A3400182152150B5 -S31540015980128000079815E0C8DA006004C2032004BB -S3154001599080A34001028009EC010000007FFFAE2098 -S315400159A0901020071B100085921360B89007BFE83E -S315400159B07FFFF6F09415215025000070D805A1C04F -S315400159C09A14A01F03000010980B000D821060105E -S315400159D080A30001211001440280000423100080AD -S315400159E07FFFAE0F90102011C02461C09007BFE821 -S315400159F0921660F07FFFF6DF94142150C20461C015 -S31540015A00820840121B00002080A0400D2280000524 -S31540015A10031000857FFFAE02901020110310008510 -S31540015A20901060D894142150C02461C07FFFF6D1F4 -S31540015A309207BFF019100085C20320D8DA0421501D -S31540015A4080A340019414215012800007821320D86C -S31540015A50DA02A004C200600480A34001028008B8B3 -S31540015A60010000007FFFADEE901020111B10008554 -S31540015A7003100085901360D8921060E87FFFF6BD51 -S31540015A809415215019100085C20320D0DA05215002 -S31540015A9080A340018215215012800007981320D01F -S31540015AA0DA006004C203200480A34001028008A9F1 -S31540015AB0010000007FFFADDA901020119016E0E062 -S31540015AC0921000087FFFF6AB94152150C20720B013 -S31540015AD0DA05215080A3400182152150128000072A -S31540015AE0981720B0DA006004C203200480A3400165 -S31540015AF00280089D1B0000707FFFADC990102011E8 -S31540015B00C025A1C09016E0E09215E0C87FFFF69946 -S31540015B1094152150C205E0C8DA05215080A3400101 -S31540015B2082152150128000079815E0C8DA006004FA -S31540015B30C203200480A340010280089401000000B2 -S31540015B407FFFADB7901020111B100085921360B8EE -S31540015B509016E0E07FFFF68794152150C20720B0EA -S31540015B60DA05215080A34001821521501280000799 -S31540015B70981720B0DA006004C203200480A34001D4 -S31540015B80028008871B0000707FFFADA59010201191 -S31540015B90C025A1C09016E0E0921660F07FFFF67531 -S31540015BA094152150C205A1C01B0000708208400D0A -S31540015BB01900002080A0400C2310008002800004C0 -S31540015BC0211001447FFFAD9690102011941421506D -S31540015BD0C02461C09015E0C87FFFF6669207BFF00A -S31540015BE0C205E0C8DA04215080A340019414215033 -S31540015BF0128000078215E0C8DA02A004C2006004E0 -S31540015C0080A340010280086F010000007FFFAD8440 -S31540015C10901020119015E0C89207BFE87FFFF65516 -S31540015C2094152150C205E0C8DA05215080A34001F0 -S31540015C3082152150128000079815E0C8DA006004E9 -S31540015C40C203200480A340010280086301000000D2 -S31540015C507FFFAD73901020119015E0C89216E0E0D9 -S31540015C607FFFF64494152150C205E0C8DA0521505C -S31540015C7080A3400182152150128000079815E0C883 -S31540015C80DA006004C203200480A340010280085761 -S31540015C90010000007FFFAD62901020119015E0C811 -S31540015CA0921000087FFFF63394152150C205E0C8D3 -S31540015CB0DA05215080A34001821521501280000748 -S31540015CC09815E0C8DA006004C203200480A34001AD -S31540015CD0028007F3010000007FFFAD5190102011B3 -S31540015CE003100085921060B89015E0C87FFFF62139 -S31540015CF094152150C20720B0DA05215080A34001F6 -S31540015D008215215012800007981720B0DA006004EE -S31540015D10C203200480A34001028007E61B000070F5 -S31540015D207FFFAD3F901020119015E0C8921660F0AC -S31540015D307FFFF61094152150C205A1C031000070B5 -S31540015D40820840183B00002080A0401D23100144DA -S31540015D5002800004211000807FFFAD319010201198 -S31540015D6019100085901320B89207BFF07FFFF60106 -S31540015D7094146150C20421C0AA16201F3500001098 -S31540015D8082084015A616A01080A040130280000488 -S31540015D90251000857FFFAD2290102011C02421C01F -S31540015DA09014A0B89207BFE87FFFF5F294146150B2 -S31540015DB0C20421C08208401580A04013028000041D -S31540015DC0010000007FFFAD1690102011C02421C0B4 -S31540015DD09014A0B89216E0E07FFFF5E69414615066 -S31540015DE0C20421C08208401580A0401302800005EC -S31540015DF0131000857FFFAD0A901020111310008506 -S31540015E00C02421C0921260C89014A0B87FFFF5D972 -S31540015E1094146150C20421C08208401580A04013E9 -S31540015E20028000059014A0B87FFFACFD90102011B0 -S31540015E309014A0B8C02421C0921000087FFFF5CD70 -S31540015E4094146150C20421C08208401580A04013B9 -S31540015E5002800005131000857FFFACF190102011E0 -S31540015E6013100085C02421C09014A0B8921260F08E -S31540015E707FFFF5C094146150C20421C082084018C6 -S31540015E8080A0401D2280000515203E837FFFACE4A3 -S31540015E909010201115203E83170021C89412A3FFAC -S31540015EA09612E3A1191FC0001B00C0009A1360B0EF -S31540015EB098132102D43FBFD0D83FBFD8C02421C0B8 -S31540015EC09007BFD89207BFD07FFFF5AA9407BFC8F6 -S31540015ED0DA07BFC8033FFC0080A340010280070BDD -S31540015EE0A207BFC87FFFACCE901020111510868344 -S31540015EF0170021C89412A3FF9612E3A1190040008E -S31540015F001B00C0009A1360B098132102D43FBFD042 -S31540015F10D83FBFD8C025A1C09007BFD89207BFD0F0 -S31540015F207FFFF5949407BFC8DA046004C207BFC86F -S31540015F308090400D1280000A1B000070C205A1C06E -S31540015F409A13601F190000108208400D981320040F -S31540015F5080A0400C22800005150FFC007FFFACB0ED -S31540015F6090102011150FFC00170281D89412A04001 -S31540015F709612E10C9A102010190006AFD43FBFD0FB -S31540015F80D83FBFD8C025A1C09007BFD89207BFD080 -S31540015F907FFFF5789407BFC8030006AEDA07BFC88E -S31540015FA08210639580A340011280000703003A9A4C -S31540015FB0DA0460048210630F80A340010280073334 -S31540015FC0010000007FFFAC9690102011150FFFFFD6 -S31540015FD0170281D89412A3409612E10C9A10201010 -S31540015FE0190006AFD43FBFD0D83FBFD8C025A1C006 -S31540015FF09007BFD89207BFD07FFFF55E9407BFC811 -S31540016000DA046004C207BFC88090400D1280000ABE -S315400160101B000070C205A1C09A13601F1900001031 -S315400160208208400D9813200480A0400C0280000491 -S31540016030010000007FFFAC7A90102011C025A1C05D -S31540016040111088007FFFF63713100100031066C94F -S31540016050821062CA80A2000112800006010000007F -S31540016060C205A1C080A06000028000051111BBFEDF -S315400160707FFFAC6B901020111111BBFE901223FFD4 -S315400160807FFFF628130C7040031527CA8210611E44 -S3154001609080A200011280000601000000C205A1C0D5 -S315400160A080A06000028000051310C7FF7FFFAC5C33 -S315400160B0901020111310C7FF921263FC7FFFF6194F -S315400160C0111E607E031D73FC8210633880A200019D -S315400160D01280000601000000C205A1C080A0600038 -S315400160E002800005130FE0007FFFAC4D9010201198 -S315400160F0130FE000921260017FFFF60A11002000A3 -S3154001610080A220001280000A1B000070C205A1C0B7 -S315400161109A13601F190000108208400D981320043D -S3154001612080A0400C02800005110FE0007FFFAC3CCF -S3154001613090102011110FE000C025A1C07FFFF5F995 -S3154001614092100008030FE00080A2000112800006B1 -S3154001615001000000C205A1C080A0600002800005C8 -S31540016160130FE0007FFFAC2E90102011130FE000BB -S31540016170921260017FFFF5EB1100200080A2200002 -S315400161801280000A1B000070C205A1C09A13601F4D -S31540016190190000108208400D9813200480A0400C7D -S315400161A0028000051B1000857FFFAC1D9010201159 -S315400161B01B100085921360E8C025A1C09007BFF06F -S315400161C07FFFF4DE9415215019100085C20320E8A3 -S315400161D0DA05215080A34001821521501280000723 -S315400161E0981320E8DA006004C203200480A340012A -S315400161F0028006BA010000007FFFAC099010201210 -S315400162001B100085921360D09007BFF07FFFF4CB3F -S315400162109415215019100085C20320D0DA0521506A -S3154001622080A340018215215012800007981320D087 -S31540016230DA006004C203200480A34001028006AC58 -S31540016240010000007FFFABF6901020129007BFF0CF -S315400162509215E0C87FFFF4B994152150C205E0C8F4 -S31540016260DA05215080A34001821521501280000792 -S315400162709815E0C8DA006004C203200480A34001F7 -S31540016280028006A0010000007FFFABE590102012BE -S315400162901B100085921360B89007BFF07FFFF4A7EB -S315400162A094152150C20720B0DA05215080A3400140 -S315400162B08215215012800007981720B0DA00600439 -S315400162C0C203200480A34001028006931B00007094 -S315400162D07FFFABD3901020129007BFF0921660F06B -S315400162E07FFFF49694152150C205A1C01B00007092 -S315400162F08208400D1900002080A0400C2110014465 -S3154001630002800004231000807FFFABC5901020124D -S3154001631094142150C02461C09007BFE87FFFF487E1 -S315400163209207BFF0DA042150C207BFE880A34001BB -S315400163301280000794142150DA02A004C207BFEC70 -S3154001634080A34001028006DE010000007FFFABB45E -S31540016350901020120310008519100085901060E8F6 -S31540016360921320D87FFFF47594152150C20720B0AF -S31540016370DA05215080A34001821521501280000781 -S31540016380981720B0DA006004C203200480A34001BC -S31540016390028006D01B0000707FFFABA19010201237 -S315400163A0C025A1C09007BFE89215E0C87FFFF463FE -S315400163B094152150C205E0C8DA05215080A3400159 -S315400163C082152150128000079815E0C8DA00600452 -S315400163D0C203200480A34001028006C701000000D9 -S315400163E07FFFAB8F901024991B100085921360B8E4 -S315400163F09007BFE87FFFF45194152150C20720B0A2 -S31540016400DA05215080A340018215215012800007F0 -S31540016410981720B0DA006004C203200480A340012B -S31540016420028006BA1B0000707FFFAB7D90102012E0 -S315400164309007BFE8921660F07FFFF4409415215013 -S31540016440C205A1C01B0000708208400D1900002042 -S3154001645080A0400C211001440280000423100080DA -S315400164607FFFAB6F9010201294142150C02461C05D -S315400164709016E0E07FFFF4319207BFF0C206E0E0FC -S31540016480DA04215080A34001941421501280000760 -S315400164908216E0E0DA02A004C200600480A3400153 -S315400164A0028006A4010000007FFFAB5D9010201220 -S315400164B09016E0E09207BFE87FFFF4209415215043 -S315400164C0C20720B0DA05215080A340018215215030 -S315400164D012800007981720B0DA006004C203200436 -S315400164E080A34001028006981B0000707FFFAB4CE1 -S315400164F090102012C025A1C09016E0E09215E0C888 -S315400165007FFFF40E94152150C205E0C8DA052150EB -S3154001651080A3400182152150128000079815E0C8DA -S31540016520DA006004C203200480A340010280068F82 -S31540016530010000007FFFAB3A901020120310008546 -S31540016540921060B89016E0E07FFFF3FC941521505D -S31540016550C20720B0DA05215080A34001821521509F -S3154001656012800007981720B0DA006004C2032004A5 -S3154001657080A34001028006821B0000707FFFAB288A -S31540016580901020129016E0E0921660F07FFFF3EB38 -S3154001659094152150C205A1C01B0000708208400D10 -S315400165A01900002080A0400C211001440280000403 -S315400165B0231000807FFFAB1A9010201294142150B3 -S315400165C0C02461C09015E0C87FFFF3DC9207BFF09D -S315400165D0C205E0C8DA04215080A340019414215039 -S315400165E0128000078215E0C8DA02A004C2006004E6 -S315400165F080A340010280061E010000007FFFAB0818 -S31540016600901020129015E0C89207BFE87FFFF3CBA8 -S3154001661094152150C205E0C8DA05215080A34001F6 -S3154001662082152150128000079815E0C8DA006004EF -S31540016630C203200480A3400102800612010000002B -S315400166407FFFAAF7901020129015E0C89216E0E05D -S315400166507FFFF3BA94152150C205E0C8DA052150EF -S3154001666080A3400182152150128000079815E0C889 -S31540016670DA006004C203200480A3400102800606BA -S31540016680010000007FFFAAE6901020129015E0C895 -S31540016690921000087FFFF3A994152150C205E0C866 -S315400166A0DA05215080A3400182152150128000074E -S315400166B09815E0C8DA006004C203200480A34001B3 -S315400166C0028005FA010000007FFFAAD59010201232 -S315400166D0191000859015E0C8921320B87FFFF397F3 -S315400166E09415215003000070A610601FDA05A1C061 -S315400166F0030000109A0B4013AA10601080A34015A6 -S3154001670025100085231001440280000421100080D9 -S315400167107FFFAAC390102012C02421C09014A0B8B4 -S315400167209207BFF07FFFF38594146150C20421C0E4 -S315400167308208401380A04015028000040100000039 -S315400167407FFFAAB790102012C02421C09014A0B890 -S315400167509207BFE87FFFF37994146150C20421C0C8 -S315400167608208401380A04015028000040100000009 -S315400167707FFFAAAB90102012C02421C09014A0B86C -S315400167809216E0E07FFFF36D94146150C20421C07C -S315400167908208401380A04015028000051310008531 -S315400167A07FFFAA9F9010201213100085C02421C09C -S315400167B0921260C89014A0B87FFFF36094146150A0 -S315400167C0C20421C08208401380A040150280000502 -S315400167D09014A0B87FFFAA92901020129014A0B8EE -S315400167E0C02421C0921000087FFFF35494146150D5 -S315400167F0C20421C08208401380A0401502800004D3 -S31540016800010000007FFFAA8690102012C02421C0FB -S315400168109014A0B8921660F07FFFF348941461502B -S31540016820C20421C08330600E8208600380A06002EA -S31540016830228000051103C0007FFFAA799010201223 -S315400168401103C0007FFFF57F3B100084A4176390BE -S31540016850AA146150C02421C0A604A008A210200099 -S31540016860B0102005A0044012920440139415215003 -S315400168707FFFF33290100010DA042010C205215038 -S31540016880A204601880A340011280000790102012D4 -S31540016890DA042014C205600480A340010280047416 -S315400168A0010000007FFFAA5E01000000B0863FFFA5 -S315400168B03CBFFFEEA004401211100085901220202B -S315400168C0920220087FFFF31D94152150981763907B -S315400168D0C2052150DA0320A080A34001128000079F -S315400168E082152150DA0320A4C200600480A340012E -S315400168F0028004DC1B0000707FFFAA499010201221 -S315400169001110008590122038C025A1C0920220089E -S315400169107FFFF30A9415215098176390C2052150C1 -S31540016920DA0320B880A34001128000078215215066 -S31540016930DA0320BCC200600480A340010280047FC8 -S315400169401B0000707FFFAA3690102012111000859F -S3154001695090122050C025A1C0920220087FFFF2F775 -S315400169609415215098176390C2052150DA0320D01F -S3154001697080A340011280000782152150DA0320D4FA -S31540016980C200600480A34001028004761B000070AF -S315400169907FFFAA23901020121110008590122068C3 -S315400169A0C025A1C0920220087FFFF2E49415215030 -S315400169B098176390C2052150DA0320E880A340016D -S315400169C01280000782152150DA0320ECC2006004D0 -S315400169D080A340010280046D1B0000707FFFAA1056 -S315400169E0901020121110008590122080C025A1C060 -S315400169F0920220087FFFF2D1941521509817639097 -S31540016A00C2052150DA03210080A34001128000070C -S31540016A1082152150DA032104C200600480A340019B -S31540016A20028004641B0000707FFFA9FD90102012B4 -S31540016A30C025A1C0111010007FFFF3B01310000054 -S31540016A400310300080A20001128000060100000000 -S31540016A50C205A1C080A0600002800005111FE000B0 -S31540016A607FFFA9EF90102012111FE00013100000C4 -S31540016A707FFFF2B794152150031FFC00DA05215020 -S31540016A8080A340011280000A82152150C200600491 -S31540016A9080A060001280000601000000C205A1C06E -S31540016AA080A0600002800005111FE0007FFFA9DC85 -S31540016AB09010201B111FE000133000007FFFF2A44D -S31540016AC094152150033FFC00DA05215080A3400173 -S31540016AD01280000A82152150C200600480A0600025 -S31540016AE01280000601000000C205A1C080A060001E -S31540016AF002800005111000007FFFA9C99010201CDB -S31540016B0011100000921020107FFFF2919415215030 -S31540016B10C205A1C01B0000708208400D190000206B -S31540016B2080A0400C21100144028000042310008003 -S31540016B307FFFA9BB9010201D94142150C02461C031 -S31540016B40110020007FFFF282130FC000DA042150AA -S31540016B50030E000080A340011280000A94142150C4 -S31540016B60C202A00480A0600012800006010000005D -S31540016B70C20461C080A0600002800005111FDFFFD2 -S31540016B807FFFA9A79010201E111FDFFF901223FF40 -S31540016B90131000007FFFF26E941521500311FFFF81 -S31540016BA0821063FFDA05215080A34001128000075D -S31540016BB082152150DA0060040338000080A34001A9 -S31540016BC002800405010000007FFFA9959010201F57 -S31540016BD0111FD000130FF0007FFFF25D9415215075 -S31540016BE00311FC80DA05215080A340011280000A7E -S31540016BF082152150C200600480A060001280000608 -S31540016C0001000000C205A1C080A06000028000050D -S31540016C10111FDFFF7FFFA98290102021111FDFFF87 -S31540016C20901223FF921000087FFFF24994152150DC -S31540016C300313FBFF821063FFDA05215080A3400155 -S31540016C401280000882152150DA00600403300000EA -S31540016C508210602080A34001028003E4010000000D -S31540016C607FFFA96F901020207FFFF4761103C000AB -S31540016C70C025A1C09007BFE07FFFF2449215215085 -S31540016C80C207BFE0DA05215080A340011280000708 -S31540016C9082152150DA006004C207BFE480A3400197 -S31540016CA0028003D7010000007FFFA95D90102013E9 -S31540016CB01B100085901360E87FFFF2349215215036 -S31540016CC003100085DA0060E8C205215080A0400D1E -S31540016CD0191000858215215012800007901320E873 -S31540016CE0DA006004C202200480A34001028003C985 -S31540016CF0010000007FFFA94A901020131B10008558 -S31540016D00901360D07FFFF221921521501910008512 -S31540016D10C20320D0DA05215080A3400182152150BB -S31540016D2012800007981320D0DA006004C2032004C1 -S31540016D3080A34001028003BC010000007FFFA93807 -S31540016D40901020131B100085901360D87FFFF20F1F -S31540016D5092152150C20720B0DA05215080A3400187 -S31540016D608215215012800007981720B0DA0060047E -S31540016D70C203200480A34001028003B01B000070BF -S31540016D807FFFA9279010201303100085901060B84B -S31540016D90C025A1C07FFFF1FD92152150C20720B049 -S31540016DA0DA05215080A34001821521501280000747 -S31540016DB0981720B0DA006004C203200480A3400182 -S31540016DC00280040F1B0000707FFFA915901020134D -S31540016DD0C025A1C09015E0C87FFFF1EC9215215066 -S31540016DE0C2052150DA05E0C880A0400D8215215028 -S31540016DF0128000079015E0C8DA006004C202200440 -S31540016E0080A3400102800407010000007FFFA9041E -S31540016E1090102013170C00089A10200019100C002E -S31540016E2015300F789612E001D83FBFF0D43FBFC06E -S31540016E309007BFF07FFFF1D5921521500310040052 -S31540016E40DA05215080A340011280000A82152150A3 -S31540016E50C200600480A060001280000601000000AC -S31540016E60C205A1C080A06000028000059007BFC096 -S31540016E707FFFA8EB901020139007BFC07FFFF1C39F -S31540016E8092152150C2052150DA0720B080A0400D4D -S31540016E908215215012800007981720B0DA0060044D -S31540016EA0C203200480A34001028003E31B0000705B -S31540016EB07FFFA8DB90102013901660F07FFFF1B39F -S31540016EC092152150C205A1C08330600E820860032D -S31540016ED080A0600202800004211000807FFFA8D0BC -S31540016EE090102013C02421C07FFFF2981111F200A7 -S31540016EF00310E80080A20001128000060100000094 -S31540016F00C20421C080A0600002800004010000008C -S31540016F107FFFA8C3901020137FFFF3CA1110000012 -S31540016F201101F5897FFFF289901221E20308E96494 -S31540016F3080A200011280000601000000C205A1C026 -S31540016F4080A0600002800004010000007FFFA8B419 -S31540016F50901020237FFFF27D1112A20803114100F8 -S31540016F6080A200011280000601000000C205A1C0F6 -S31540016F7080A0600002800004010000007FFFA8A8F5 -S31540016F80901020237FFFF3AF110010009007BFF050 -S31540016F90921660F07FFFF1649415215003100C00A6 -S31540016FA0DA05215080A340011280000A8215215042 -S31540016FB0C200600480A0600012800006010000004B -S31540016FC0C205A1C080A0600002800005901660F055 -S31540016FD07FFFA89390102014901660F09207BFC0CF -S31540016FE07FFFF1569415215003200000DA05215008 -S31540016FF080A340011280000A82152150C20060041C -S3154001700080A060001280000601000000C205A1C0F8 -S3154001701080A0600002800004010000007FFFA8807C -S31540017020901020147FFFF19190102001030FE00092 -S3154001703080A200011280000601000000C205A1C025 -S3154001704080A0600002800004010000007FFFA87458 -S31540017050901020147FFFF17D90102001030FFC005A -S3154001706080A200011280000880A260001280000602 -S3154001707001000000C205A1C080A06000028000049A -S31540017080010000007FFFA866901020147FFFF36D7A -S315400170901110100019100085D41B20D07FFFF1F983 -S315400170A0D01E60F003100085D03D2150DA0060D833 -S315400170B0C205215080A0400D19100085821521502E -S315400170C012800007901320D8DA006004C20220041F -S315400170D080A3400102800361010000007FFFA850A8 -S315400170E0901020227FFFF3571110000017040080F3 -S315400170F0150F28009612E0F09A102000190FFC0097 -S31540017100D43FBFC0D83FBFF09007BFF09207BFC082 -S315400171107FFFF10594152150030FFC00DA0521503C -S3154001712080A340011280000682152150C2006004EE -S3154001713080A0600002800004010000007FFFA838A3 -S31540017140901020157FFFF33F1120000017000040EB -S31540017150150014009612E0019A102000190FFC0048 -S31540017160D43FBFC0D83FBFF09007BFF09207BFC022 -S315400171707FFFF0ED94152150030FFC00DA052150F5 -S3154001718080A340011280000682152150C20060048E -S3154001719080A0600102800004010000007FFFA8205A -S315400171A0901020157FFFF327113000001700004093 -S315400171B0152014009612E0019A102000192FFC00A8 -S315400171C0D43FBFC0D83FBFF09007BFF09207BFC0C2 -S315400171D07FFFF0D594152150032FFC00DA0521508D -S315400171E080A340011280000682152150C20060042E -S315400171F080A0600102800004010000007FFFA80812 -S31540017200901020157FFFF30F11100000190FFC009D -S315400172109A102000D83FBFF09007BFF09216E0E0E9 -S315400172207FFFF0C194152150C206E0E0DA052150F6 -S3154001723080A3400182152150128000079816E0E094 -S31540017240DA006004C203200480A3400102800004E6 -S31540017250010000007FFFA7F2901020157FFFF2F991 -S315400172601120000017000040150014009612E0019D -S31540017270190FFC009A102000D43FBFC0D83FBFF081 -S315400172809007BFF09216E0E07FFFF0A794152150DA -S31540017290C206E0E0DA05215080A340018215215063 -S315400172A0128000079816E0E0DA006004C203200469 -S315400172B080A3400102800004010000007FFFA7D89F -S315400172C0901020157FFFF2DF1130000017000040BB -S315400172D0152014009612E0019A102000192FFC0087 -S315400172E0D43FBFC0D83FBFF09007BFF09216E0E051 -S315400172F07FFFF08D94152150C2052150DA06E0E05A -S3154001730080A0400D82152150128000079016E0E0C2 -S31540017310DA006004C202200480A340010280000416 -S31540017320010000007FFFA7BE901020157FFFF2C528 -S315400173301110000015100000961020019A1020012E -S31540017340190FFC00D43FBFC0D83FBFF09007BFF034 -S315400173509207BFC07FFFF0799415215003100000BA -S31540017360DA05215080A34001128000068215215082 -S31540017370C200600480A06002028000040100000097 -S315400173807FFFA7A7901020157FFFF2AE11200000C6 -S315400173909007BFF09207BFC07FFFF0689415215058 -S315400173A003100000DA05215080A340011280000637 -S315400173B082152150C200600480A06003028000044F -S315400173C0010000007FFFA796901020157FFFF29DD8 -S315400173D0113000009A102001192FFC00D83FBFF050 -S315400173E09007BFF09207BFC07FFFF054941521501C -S315400173F003300000DA05215080A3400112800006C7 -S3154001740082152150C200600480A0600302800004FE -S31540017410010000007FFFA782901020157FFFF289AF -S3154001742011100000150FFC04172F26159412A012F7 -S315400174309612E231190FFEAE1B1CD2E89A13601167 -S3154001744098132154D43FBFC0D83FBFF09007BFF037 -S315400174509207BFC07FFFF04794152150030FFEA747 -S3154001746082106296DA05215080A3400112800008FD -S3154001747082152150DA006004032C1B348210602FE0 -S3154001748080A3400102800004010000007FFFA76441 -S31540017490901020157FFFF26B112000009007BFF07E -S315400174A09207BFC07FFFF03394152150030FFEA70B -S315400174B082106296DA05215080A3400112800008AD -S315400174C082152150DA006004032C1B34821060308F -S315400174D080A3400102800004010000007FFFA75005 -S315400174E0901020157FFFF25711300000192FFC0430 -S315400174F01B2F26159A13623198132012D83FBFC00D -S315400175009007BFF09207BFC07FFFF01A9415215034 -S31540017510032FFEA782106296DA05215080A340010F -S315400175201280000882152150DA006004032C1B34B6 -S315400175308210603080A340010280000401000000F7 -S315400175407FFFA737901020157FFFF23E11100000F4 -S3154001755015101000961020009A10200019103800BE -S31540017560D43FBFC0D83FBFF09007BFF09207BFC01E -S315400175707FFFF0009415215003102400DA052150B5 -S3154001758080A340011280000682152150C20060048A -S3154001759080A0600002800004010000007FFFA72058 -S315400175A0901020157FFFF227112000009007BFF0B1 -S315400175B09207BFC07FFFEFEF9415215003102400BF -S315400175C0DA05215080A34001128000068215215020 -S315400175D0C200600480A06000028000040100000037 -S315400175E07FFFA70F901020157FFFF2161130000084 -S315400175F09007BFF09207BFC07FFFEFDE9415215081 -S3154001760003102400DA05215080A3400112800006B0 -S3154001761082152150C200600480A0600002800004EF -S31540017620010000007FFFA6FE901020157FFFF205A6 -S3154001763011100000210FE000110020007FFFF0B97A -S315400176409214200180A22000128001230100000033 -S315400176507FFFF1FC11200000110020007FFFF0B1F7 -S315400176609214200180A2200012800118010000001E -S315400176707FFFF1F411300000921420017FFFF0A941 -S315400176801100200080A220001280010D010000009F -S315400176907FFFF1EC111000009A102000190FFC0039 -S315400176A0D83FBFF09007BFF07FFFEFB8921521504A -S315400176B0C207BFF0DA05215080A3400112800007BE -S315400176C082152150DA006004C207BFF480A340014D -S315400176D0028002A7010000007FFFA6D1901020156D -S315400176E07FFFF1D8112000009007BFF07FFFEFA781 -S315400176F092152150C207BFF0DA05215080A34001FF -S315400177001280000782152150DA006004C207BFF4D7 -S3154001771080A340010280029B010000007FFFA6C0BA -S31540017720901020157FFFF1C7113000009007BFF080 -S315400177307FFFEF9692152150C207BFF0DA0521501F -S3154001774080A340011280000782152150DA006004AF -S31540017750C207BFF480A340010280028F01000000EE -S315400177607FFFA6AF901020157FFFF1B611100000E4 -S31540017770030FDFFF901063FF7FFFF074A010000836 -S3154001778080A2001002800004010000007FFFA6A431 -S31540017790901020157FFFF1AB112000007FFFF06BA9 -S315400177A090100010030FE00080A200010280000447 -S315400177B0010000007FFFA69A901020157FFFF1A1DE -S315400177C0113000007FFFF0619010001080A2001080 -S315400177D002800004010000007FFFA6919010201551 -S315400177E07FFFF198901020007FFFF06090152150A7 -S315400177F0032FFE00DA05215080A3400112800006C6 -S3154001780082152150C200600480A0600002800005FC -S31540017810211001447FFFA6829010201621100144B9 -S315400178207FFFF05C90142158DA042158032FF000B1 -S3154001783080A3400102800004A21421587FFFA6784C -S31540017840901020167FFFF05D90100011DA04215848 -S31540017850030FE00080A34001028000040100000004 -S315400178607FFFA66F901020167FFFF0649015215080 -S31540017870030FFBF7821063F0DA05215080A3400124 -S315400178801280000882152150DA0060040303FF12BA -S315400178908210604A80A3400102800005921660F082 -S315400178A07FFFA65F90102016921660F09007BFF0FA -S315400178B07FFFEF3094152150C205A1C08330600E81 -S315400178C08208600780A06002028000051910004D01 -S315400178D07FFFA653901020171910004D17100080F6 -S315400178E0DA02E1C88213217880A0400DE0032178B5 -S315400178F002800004A212E1C87FFFA6499010201819 -S31540017900C204600480A0401002800004010000000F -S315400179107FFFA64390102018C204600880A0600033 -S315400179201280007701000000C204600C80A0600054 -S315400179301280006C010000007FFFEEE601000000AE -S3154001794080A220010280019801000000190C402903 -S315400179501B23CD1B9A13609B98132006941020007D -S3154001796096102000D83FBFF0D43FBFC07FFFEF2F16 -S315400179709007BFF003100083A21062101B10008114 -S3154001798003100144A0136210A4106150B0102000EE -S31540017990832E2002DA044001DA27BFC09007BFC018 -S315400179A07FFFEF25921521509B2E2003D804000D11 -S315400179B0C2052150B00620019603401080A3000164 -S315400179C01280000790102019DA02E004C204A004D4 -S315400179D080A340010280000580A620FF7FFFA610FC -S315400179E00100000080A620FF04BFFFEB832E20028A -S315400179F003100083A41062101B1000800310014481 -S31540017A00A2136210A6106150B0102000A12E2002D0 -S31540017A10C2048010C227BFC0921521507FFFEEDB02 -S31540017A209007BFC0DA044010C2052150B0062002BB -S31540017A309804001180A34001128000079010201A7B -S31540017A40DA032004C204E00480A340010280000559 -S31540017A5080A620FF7FFFA5F20100000080A620FF3F -S31540017A6024BFFFECA12E200230800211C205A1C025 -S31540017A7080A0600022BFFB8FB0863FFF30BFFB8AEC -S31540017A80C205A1C080A0600002BFF145010000000F -S31540017A9030BFF141C205A1C080A0600002BFF136EE -S31540017AA00100000030BFF132C205A1C080A06000D4 -S31540017AB002BFF1270100000030BFF1237FFFA5D8A7 -S31540017AC09010201530BFFEF37FFFA5D590102015ED -S31540017AD030BFFEE87FFFA5D29010201530BFFEDDF6 -S31540017AE07FFFA5CF9010201830BFFF947FFFA5CC14 -S31540017AF09010201010BFF678111000847FFFA5C8A2 -S31540017B009010201830BFFF89C207BFCC80A060000B -S31540017B1012BFF8F501000000C20421C082084015D9 -S31540017B209A16A00880A0400D12BFF8EF0100000090 -S31540017B3010BFF8F015108683C205A1C09A13601FC5 -S31540017B40190000108208400D9813200880A0400CAF -S31540017B5012BFFB7D1110008510BFFB7F9012205094 -S31540017B60C205A1C09A13601F190000108208400D7A -S31540017B709813200880A0400C12BFFB861110008587 -S31540017B8010BFFB8890122068C205A1C09A13601FDE -S31540017B90190000108208400D9813200480A0400C63 -S31540017BA012BFFB8F1110008510BFFB9190122080F0 -S31540017BB0C205A1C09A13601F190000108208400D2A -S31540017BC09813200880A0400C12BFFB9801000000CA -S31540017BD030BFFB98C205A1C080A0600002BFFBFE7A -S31540017BE0111FD00030BFFBF9C205A1C080A06000C3 -S31540017BF002BFFC1E0100000030BFFC1AC205A1C035 -S31540017C0080A0600002BFFC2C1B10008530BFFC2702 -S31540017C10C205A1C080A0600002BFFC3A1B100085CE -S31540017C2030BFFC35C205A1C080A0600002BFFC4741 -S31540017C301B10008530BFFC42C205A1C09A13601FCC -S31540017C40190000108208400D9813201080A0400CA6 -S31540017C5012BFFC4C0310008510BFFC4E901060B85B -S31540017C60C205A1C09A13601F190000108208400D79 -S31540017C709813200480A0400C12BFFB2011100085F0 -S31540017C8010BFFB2290122038C205A1C080A060001F -S31540017C9022BFF8D0150FFFFF30BFF8CBC205A1C0F8 -S31540017CA080A0600002BFF8100310008530BFF80BBA -S31540017CB0C205A1C09A13601F190000108208400D29 -S31540017CC09813201080A0400C12BFF8169015E0C8FA -S31540017CD010BFF818921660F0C205A1C080A06000DE -S31540017CE002BFF9491B10008530BFF944C205A1C046 -S31540017CF080A0600002BFF9579007BFF030BFF9522C -S31540017D00C205A1C080A0600002BFF9631B100085B7 -S31540017D1030BFF95EC205A1C09A13601F1900001059 -S31540017D208208400D9813201080A0400C12BFF969BB -S31540017D309007BFF010BFF96B921660F0C20461C0A4 -S31540017D4080A0600002BFF74B1B10008530BFF7468D -S31540017D50C205A1C080A0600002BFF75A9016E0E0BC -S31540017D6030BFF755C205A1C09A13601F1900001014 -S31540017D708208400D9813201080A0400C12BFF75F77 -S31540017D800100000030BFF75FC205A1C080A06000BE -S31540017D9002BFF76F1B10008530BFF76AC205A1C04D -S31540017DA09A13601F190000108208400D9813201085 -S31540017DB080A0400C12BFF7750100000030BFF77577 -S31540017DC0C20461C080A0600002BFF7949015E0C86C -S31540017DD030BFF78FC205A1C080A0600002BFF7A0E7 -S31540017DE09015E0C830BFF79BC205A1C080A06000D6 -S31540017DF002BFF7AC9015E0C830BFF7A7C205A1C0D6 -S31540017E009A13601F190000108208400D9813201024 -S31540017E1080A0400C12BFFBED0100000030BFFBED1E -S31540017E20C205A1C080A0600002BFFBFC170C000880 -S31540017E3030BFFBF7C205A1C09A13601F190000109D -S31540017E408208400D9813201080A0400C12BFFC19E7 -S31540017E50901660F030BFFC1AC205A1C080A0600038 -S31540017E6002BFFCA10100000030BFFC9DC20461C0FD -S31540017E7080A0600002BFF9E59015E0C830BFF9E087 -S31540017E80C205A1C080A0600002BFF9F19015E0C80B -S31540017E9030BFF9ECC205A1C080A0600002BFF9FD68 -S31540017EA09015E0C830BFF9F8C205A1C080A06000B6 -S31540017EB002BFFA091910008530BFFA04C20461C035 -S31540017EC080A0600002BFF9250310008530BFF9206C -S31540017ED0C205A1C09A13601F190000108208400D07 -S31540017EE09813201080A0400C12BFF92C010000000D -S31540017EF030BFF92CC205A1C080A0600002BFF93C89 -S31540017F001B10008530BFF937C205A1C09A13601F07 -S31540017F10190000108208400D9813201080A0400CD3 -S31540017F2012BFF9429007BFE810BFF944921660F0BC -S31540017F30C20461C080A0600002BFF95F9016E0E014 -S31540017F4030BFF95AC205A1C09A13601F190000102B -S31540017F508208400D9813201080A0400C12BFF9648E -S31540017F600100000030BFF964C205A1C080A06000D5 -S31540017F7002BFF9740310008530BFF96FC205A1C075 -S31540017F809A13601F190000108208400D98132010A3 -S31540017F9080A0400C12BFF97A9016E0E010BFF97C40 -S31540017FA0921660F07FFFA49E9010201910BFFE69C3 -S31540017FB0190C4029D80061C01B0000709A13601F3C -S31540017FC003000010980B000D8210600880A3000189 -S31540017FD012BFF5501110008410BFF5529012236064 -S31540017FE0C205A1C09A13601F190000108208400DF6 -S31540017FF09813200480A0400C12BFF558111000843C -S3154001800010BFF55A90122378C205A1C09A13601F7A -S31540018010190000108208400D9813200480A0400CDE -S3154001802012BFF5600100000030BFF560C205A1C076 -S3154001803080A0600002BFF4A90310008530BFF4A4FC -S31540018040C205A1C080A0600002BFF4939015E0C8AC -S3154001805030BFF48EC205A1C080A0600002BFF47D8E -S315400180609015E0C830BFF478C20461C080A06000BA -S3154001807002BFF4679015E0C830BFF462C205A1C0E3 -S315400180809A13601F190000108208400D98132002B0 -S3154001809080A0400C12BFF5B61B10008510BFF5B885 -S315400180A0921360D0C205A1C080A0600002BFF5C591 -S315400180B09007BFF030BFF5C0C205A1C080A06000E7 -S315400180C002BFF5D10310008530BFF5CCC205A1C072 -S315400180D09A13601F190000108208400D9813201052 -S315400180E080A0400C12BFF5D79007BFF010BFF5D95D -S315400180F0921660F0C20461C080A0600022BFF5F311 -S315400181001910008530BFF5EEC205A1C09A13601F54 -S31540018110190000108208400D9813201080A0400CD1 -S3154001812012BFF5F91B10008510BFF5FB0310008542 -S31540018130C205A1C080A0600002BFF60B9007BFE850 -S3154001814030BFF606C205A1C080A0600002BFF61787 -S315400181501B10008530BFF612C20421C080A060000A -S3154001816022BFF03E113C02AF30BFF039C205A1C07B -S3154001817080A0600002BFFD5B0100000030BFFD57DB -S31540018180C205A1C080A0600002BFFD6701000000DA -S3154001819030BFFD63C205A1C080A0600002BFFD7370 -S315400181A00100000030BFFD6FC205A1C080A0600084 -S315400181B002BFF2D70310008530BFF2D2C205A1C07B -S315400181C080A0600002BFF2C19007BFF030BFF2BC91 -S315400181D0C205A1C080A0600002BFF2AA3710008587 -S315400181E030BFF2A5C205A1C080A0600002BFF02841 -S315400181F01111FC0030BFF023C205A1C09A13601FC4 -S31540018200190000108208400D9813201080A0400CE0 -S3154001821012BFF3DD9016E0E010BFF3DF921660F077 -S31540018220C205A1C080A0600002BFF39E1B1000855D -S3154001823030BFF399C205A1C080A0600002BFF3869A -S315400182401B10008530BFF381C205A1C080A060002C -S3154001825002BFF36E1B10008530BFF369C20461C0D3 -S3154001826080A0600002BFF3589016E0E030BFF353A0 -S31540018270C205A1C080A0600002BFF30E191000859F -S3154001828030BFF309C205A1C080A0600002BFF2F869 -S315400182909007BFE830BFF2F3C20461C080A060001E -S315400182A002BFF2E29007BFE830BFF2DD81C7E008C6 -S315400182B081E80000D27A000081C3E0080100000095 -S315400182C081C3E008900A2020933260049212600133 -S315400182D08213C0007FFFFFF89E104000010000009E -S315400182E081D8200081C3E008010000009DE3BF98CA -S315400182F07FFFFFFC0100000082102400C0A0430064 -S3154001830081C7E00881E80000833220189A100008EE -S315400183108088600F02800004901020008333601033 -S315400183209008600381C3E008010000009DE3BF9807 -S31540018330031000C01B1000C1B0106000A213600002 -S31540018340031000C21B1000C2A4106000A6136100F6 -S31540018350031000201B100020A8106160AA136000C2 -S315400183607FFFEBAD9010200C808A2008028001FE31 -S31540018370010000007FFFA3A59010200ED0800320AE -S315400183807FFFFFE2010000000310014380A22002AB -S31540018390028000C6D02060D480A22002148000E46E -S315400183A080A2200380A22001028000D182102019E0 -S315400183B0331000A02F1000A0391000A0371000A0E4 -S315400183C0351000A07FFFFFC7210100007FFFFFC8D6 -S315400183D0BA04A00C921000117FFFFFBC9010001848 -S315400183E0921000117FFFFFB99006200490100011F2 -S315400183F07FFFFFB19210200ADA06601411080000CF -S31540018400913A000DC205E010900A0001912A20021E -S3154001841013008000900200117FFFFFA79212600AAD -S31540018420DA06601411100000913A000DC205E01001 -S31540018430900A0001912A2002900200117FFFFF9EBF -S315400184409214208EDA066014111C0000913A000D38 -S31540018450C205E010900A0001912A20021301C000D2 -S31540018460900200117FFFFF949212608E9334A00414 -S315400184709004600C7FFFFF90921260019214201EBF -S315400184807FFFFF8D9004A0089010001D7FFFFF8A9B -S31540018490921020009334E004921260017FFFFF8620 -S315400184A09004A004111000C2901221087FFFFF82A0 -S315400184B092102000031000E0A010600093342004C5 -S315400184C0111000C2901221047FFFFF7B9212601AA5 -S315400184D003048D1582106278C2242004111000E035 -S315400184E015100120C0222000A2102003AC12A000CA -S315400184F0A004E00C90047FFD40000A759210200311 -S315400185001B100143C20360D48200600C932A000110 -S315400185109202401693326004901000107FFFFF666E -S315400185209212601EA204600180A4600A04BFFFF299 -S31540018530A0042004C206E008D807200C8208600186 -S315400185408328400CD605E010111000E0D406A000A7 -S31540018550DA06601498122000960AE003972AC00DA5 -S31540018560920AA002111000A0DA022004940AA00186 -S31540018570952A800D932A400D1B1000209612C001AA -S31540018580E8236158030100001B0076418210601EFA -S315400185909A1361C09212C00999332004C22520045E -S315400185A0DA2520089612C00A9E13200E91356004E2 -S315400185B01B1000C2031000C2821061049012201EDB -S315400185C0953620049813201E9A136108D625202C2F -S315400185D0D8252010D025201CD2252020DE25202874 -S315400185E0D6252014940ABFF0FA250000DA25201872 -S315400185F0C2252024C225200CA2102100D4A4432048 -S31540018600C2800320D88443209A102001A010220062 -S31540018610DAA40320D884032082102000C2A40320B8 -S31540018620DAA0032081D820007FFFBE790100000037 -S31540018630C2800320E2844320E0840320DA05E0106F -S31540018640D6066014C206E0089A0B60039B2B400BCA -S3154001865082086001D407200CD806A000111000A0A2 -S315400186608328400A980B2001D60220049A13400120 -S31540018670992B000B9A13400CC203400080A0600066 -S3154001868012800008821360041B048D15D800400037 -S315400186909A13627880A3000D02800038C205E0106B -S315400186A010800000010000008210201A331000A043 -S315400186B0C22660149810203F2F1000A0391000A048 -S315400186C0351000A09A1020148210200E151000A01B -S315400186D0371000A0DA27200CC222A004D826A00019 -S315400186E0D825E01010BFFF38D826E0089A10207F21 -S315400186F0331000A02F1000A0C2266014DA25E01026 -S315400187009810203F391000A0351000A08210201388 -S315400187109A10200D111000A0371000A0C227200C7E -S31540018720DA22200410BFFFF0D826A00012BFFF2294 -S31540018730331000A08210201CC22660149A10201506 -S315400187408210207F391000A0371000A0DA27200CB4 -S31540018750C226E0089810200F2F1000A0351000A067 -S315400187601B1000A08210203FD8236004C226A0001F -S3154001877010BFFF15D825E010DA06E008D8066014C8 -S31540018780820860039A0B6002D607200C8328400CAE -S315400187909B2B400B8210400DD80040001B1000005F -S315400187A0C203400080A3000102800004D406E00811 -S315400187B01080000001000000C205E010980AA001E7 -S315400187C0D207200CD6066014820860038328400B2A -S315400187D0992B0009940AA0039810400CDA06A000D0 -S315400187E0111000A0952A80099A0B6001D602200437 -S315400187F08210400AC20040009B2B400B9813000D8B -S315400188000321D9509813200482106321C22300000A -S31540018810DA03000080A3400102800004C206E0089A -S315400188201080000001000000D407200CDA05E0109A -S3154001883082086001D60660148328400A9A0B6003B9 -S31540018840D806A0009B2B400B151000A0D602A00411 -S31540018850980B20019A134001992B000B9813400C59 -S315400188608210000C05048D158410A278072AF37B2B -S315400188708610E301C4384000C438400003048D1516 -S31540018880DA0300008210627880A34001028000046E -S315400188908213200410800000010000001B2AF37B94 -S315400188A0D80040009A13630180A3000D12BFFFFA5E -S315400188B0C205E010D6066014D806E00882086003B7 -S315400188C0D407200C8328400B980B2001DA06A00020 -S315400188D0111000A0992B000A9A0B6003D6022004BE -S315400188E08210400C9B2B400B15100143A010400DEC -S315400188F0F002A0D4A2102003E0240000C0A0022070 -S31540018900921020034000097290047FFD8206200CDC -S3154001891098102001912A0001992B00011B1001207A -S315400189209610000182136000DA02000180A3401014 -S31540018930A204600112800088A004000C80A4600A91 -S3154001894024BFFFEFE0240000C0A002200310012055 -S31540018950A810000BAA106000A0102000A21020034E -S3154001896090047FFD4000095A92102003832C600237 -S31540018970912A0014DA04C00190020015820B60604E -S315400189809132200480A000019012201EA0400010C8 -S315400189909A0B7F9F900A3F9F80A3400812800070E8 -S315400189A0A204600180A4600A24BFFFEF90047FFD0A -S315400189B080A4200012800004C205E010108000004F -S315400189C001000000D6066014D806E008820860035C -S315400189D0D407200CDA06A000111000A08328400B12 -S315400189E0980B2001992B000AD60220049A0B6002AB -S315400189F08210400C9B2B400BAA10400D9FC5400096 -S31540018A000100000082102400C0A04300C0A0022043 -S31540018A10A0102000A21020039B2C6002C204C00DAE -S31540018A208208606080A00001A0400010A20460019D -S31540018A3080A4600A24BFFFFA9B2C600280A4200810 -S31540018A4022800004D004E0041080000001000000F0 -S31540018A50808A204002800007010000007FFFFE1946 -S31540018A600100000080A220001280000401000000E5 -S31540018A7010800000010000007FFFFE12D004A00814 -S31540018A8080A2200012800004010000001080000036 -S31540018A90010000007FFFFE0BD004E00880A2200009 -S31540018AA01280000401000000108000000100000057 -S31540018AB083480000842860808188A000010000006E -S31540018AC00100000001000000D806E008D407200C90 -S31540018AD0DA05E010980B2001D6066014992B000A9E -S31540018AE09A0B6003C206A0009B2B400B151000A0F9 -S31540018AF0D602A004820860018328400B9A13400CD9 -S31540018B009A1340019A136004C20340009210200454 -S31540018B1091D02002010000007FFFBD3D0100000011 -S31540018B20981020009A102200D8A3432082102001D9 -S31540018B30C2A34320D8A3432003100000DA80438018 -S31540018B40DAA043807FFFBD979010200081D8200096 -S31540018B5030800005108000000100000010800000F8 -S31540018B600100000081C7E00891E820009DE3BF981D -S31540018B70400007D201000000808A21000280003FA8 -S31540018B80010000007FFFA1B501000000912A2004E9 -S31540018B907FFFA19E9002200503100140821060488C -S31540018BA0DA00600480A360002280001503100140B2 -S31540018BB0B0100001C20600009B38601F818360002F -S31540018BC0DA06200401000000010000008278400D11 -S31540018BD0DA062008B006200C80A0400D0280000471 -S31540018BE0901020017FFFA18E01000000C2062004E3 -S31540018BF080A0600012BFFFF00310014082106000A8 -S31540018C00DA00600480A360000280001501000000C4 -S31540018C10B0100001C206000081800000DA0620047F -S31540018C2001000000010000009A70400D8210000D05 -S31540018C30DA062008B006200C80A0400D0280000410 -S31540018C40901020027FFFA17601000000C206200499 -S31540018C5080A0600012BFFFF001000000400008251F -S31540018C600100000080A220001280000401000000E3 -S31540018C707FFFA16B9010200381C7E00891E8200097 -S31540018C809DE3BF987FFFA17501000000912A200452 -S31540018C907FFFA15E900220044000078A0100000088 -S31540018CA080A2212302800004010000007FFFA15C15 -S31540018CB0901020014000078101000000808A2100B8 -S31540018CC00280002B0310014082106184DA006008A3 -S31540018CD080A360090280001101000000B01000016C -S31540018CE0C2060000DA062004D80620088258400D44 -S31540018CF0B006200C80A0400C028000049010200297 -S31540018D007FFFA14701000000C206200880A060093C -S31540018D1012BFFFF401000000400007770100000088 -S31540018D2080A220000280000F01000000400007637E -S31540018D3001000000808A22000280000D010000002F -S31540018D404000079F0100000080A220001280000819 -S31540018D50010000007FFFA132901020043080000402 -S31540018D607FFFA12F9010200330BFFFF181C7E0089C -S31540018D7091E82000000000009DE3BFA09410200070 -S31540018D8011100063901221AC13100063921261B06E -S31540018D90171000639612E1B819100063981321BCAD -S31540018DA093C2000081C240001080019181C2C0007F -S31540018DB081C300001080018E9402A0019402A0019B -S31540018DC080A2A0031280018A0100000087440000AE -S31540018DD08D30E00E8C89A00780A1A000028000C7DB -S31540018DE001000000AF30E00BAE0DE00780A5E000CA -S31540018DF0128000C20100000080A1A002128000354D -S31540018E000100000025100000E41C80002510000030 -S31540018E1029100000A8152104A6100012AA1000125C -S31540018E20AC100014A1802046A4100000AA10000036 -S31540018E3001000000A180204EA81021000100000081 -S31540018E40A18000000100000001000000E83CA030C4 -S31540018E5082A480131280016682A5001612800164E5 -S31540018E6001000000010000000100000087440000ED -S31540018E708D30E00B8C89A0078CA1A0051280015C86 -S31540018E80A180000001000000010000000100000077 -S31540018E90E81CA03082A500161280015582A5401219 -S31540018EA0A4100000128001520100000001000000E0 -S31540018EB0874400008D30E00B8C89A0078CA1A0036C -S31540018EC01280014B010000001080008C010000005F -S31540018ED080A1A0011280002325100000E41C80001F -S31540018EE02510000029100000A8152104A610001223 -S31540018EF0AA100012AC100014A1802046A410000054 -S31540018F00AA10000001000000A180204EA8102100F7 -S31540018F1001000000A18000000100000001000000E6 -S31540018F2001000000E83C800082A4801312800130D9 -S31540018F3082A500161280012E0100000001000000EA -S31540018F40874400008D30E00B8C89A0078CA1A002DC -S31540018F501280012701000000108000680100000016 -S31540018F6080A1A00312800065A6100000A210200E69 -S31540018F70A1844000A6100000A1800000A814E000D2 -S31540018F80AB44000001000000AC14E0000100000009 -S31540018F90AF44000080A5200012800115AA8D6E0005 -S31540018FA080A540001280011280A5A0001280011008 -S31540018FB0AF35E00BAE0DE00780A5E0011280010C54 -S31540018FC001000000A0100000A1844000A61000008E -S31540018FD0A1800000E8180000AC100000AE100000AF -S31540018FE0EC04C000EE04E00480A5001612800100E6 -S31540018FF080A54017128000FE01000000A544000034 -S31540019000A534A00BA40CA00780A4A001128000F8EF -S3154001901001000000A0100000A1844000A61000003D -S31540019020A1800000A210200AA1844000A4100000E3 -S31540019030A1800000E8180000AC100000AE1000004E -S31540019040EC04C012EE04E00480A50016128000E88C -S3154001905080A54017128000E601000000A5440000EB -S31540019060A534A00BA40CA00780A4A002068000E0B2 -S315400190700100000021100140A0142200EC1C000058 -S31540019080A0042008E81C0000A1844000A6100000AE -S31540019090A1800000A210200EA1844000A41000105F -S315400190A0AC100000AE100000A180000001000000DD -S315400190B001000000EC3C8013AC100000AE10000033 -S315400190C0E81CC01280A50016128000C980A5401771 -S315400190D0128000C701000000A5440000A534A00B82 -S315400190E0A40CA00780A4A004128000C101000000C6 -S315400190F010800002010000008B4440008A09601F75 -S3154001910080A160010280000A8C1000059DE3BFA08A -S315400191108AA1600116BFFFFE0100000081E8000040 -S315400191208CA1A00116BFFFFE010000000100000056 -S3154001913001000000A023A080A02C20078E10001063 -S31540019140A3480000E2240000C2242004C43C2008B5 -S31540019150C83C2010CC3C2018F03C2020F43C202870 -S31540019160F83C2030FC3C2038D03C2040D43C2048C0 -S31540019170D83C2050DC3C2058A5500000E424206017 -S3154001918080102008821020018410200286102003BE -S31540019190881020048A1020058C102006819000003A -S315400191A0A42C601F818C800001000000010000009A -S315400191B0010000000300404082106101841000005C -S315400191C086100000894440008809201F861000044B -S315400191D0A010000284004002A21000028400400256 -S315400191E0A410000284004002A6100002840040023E -S315400191F0A810000284004002AA1000028400400226 -S31540019200AC10000284004002AE100002840040020D -S315400192109010000284004002921000028400400235 -S31540019220941000028400400296100002840040021D -S3154001923098100002840040029A1000028400400205 -S315400192409C100002840040029E10000284004002ED -S3154001925081E0000086A0E00116BFFFDE01000000AC -S315400192600300404082106101841000008610000412 -S3154001927080A400021280003F8400400280A4400284 -S315400192801280003C8400400280A480021280003992 -S315400192908400400280A4C00212800036840040024D -S315400192A080A50002128000338400400280A540025E -S315400192B0128000308400400280A580021280002D79 -S315400192C08400400280A5C0021280002A8400400228 -S315400192D080A20002128000278400400280A2400240 -S315400192E0128000248400400280A280021280002164 -S315400192F08400400280A2C0021280001E8400400207 -S3154001930080A300021280001B8400400280A3400219 -S31540019310128000188400400280A38002128000154A -S315400193208400400280A3C0021280001284004002E1 -S3154001933081E0000086A0E00116BFFFCE01000000DB -S3154001934080A020001280000B80A0FFFF1280000940 -S3154001935080A160051280000780A1A0061280000549 -S3154001936001000000A010000710800006C024202044 -S31540019370A01000079010200110800002D024202068 -S3154001938082100007C400400081888000010000006F -S315400193900100000001000000C4186008C8186010F0 -S315400193A0CC186018F0186020F4186028F81860305E -S315400193B0FC186038D0186040D4186048D8186050FE -S315400193C0DC186058E4006060C2006004819480004B -S315400193D0010000000100000001000000A01000078C -S315400193E0F004202081C7E00881E8000010BFFFFC9F -S315400193F0B01000000100000081D8200081C3E008C0 -S31540019400010000001B100144D80361808210200135 -S315400194108328400C1B10014482007FFFD8036184DE -S3154001942082084008932A400C900040098213C000EC -S315400194307FFFE77D9E104000010000001B100144A4 -S31540019440D8036180821020018328400C1B100144FF -S3154001945082007FFFD8036184932A400C820840082A -S31540019460900040099210000A8213C0007FFFE77006 -S315400194709E104000010000001B100144D80361808A -S31540019480821020018328400C1B10014482007FFF7B -S31540019490D8036184932A400C820840089000400911 -S315400194A09210000A8213C0007FFFE7659E104000BC -S315400194B0010000001B100144D80361808210200185 -S315400194C08328400C1B10014482007FFFD80361842E -S315400194D082084008932A400C900040098213C0003C -S315400194E07FFFE7559E104000010000001B1001441C -S315400194F0D803618C821020018328400C1B10014443 -S3154001950082007FFFD803619C932A400C8208400861 -S31540019510900040099210000A8213C0007FFFE74C79 -S315400195209E104000010000001B100144D803618CCD -S31540019530821020018328400C1B10014482007FFFCA -S31540019540D803619C932A400C820840089000400948 -S315400195509210000A8213C0007FFFE7419E1040002F -S31540019560010000009DE3BF582D100144A2102000C8 -S31540019570C205A19080A440011680001BA0102000C6 -S315400195802B1001442910014427100144A410200145 -S31540019590D005618C912C8008C205219C90023FFF29 -S315400195A0832C0001900A00187FFFE72790020001F3 -S315400195B0C204E17C901E0008900A000180A00008C8 -S315400195C0A2647FFFA0042001C205A19080A40001EE -S315400195D026BFFFF1D005618C80A460001280000394 -S315400195E0B0102000B010200181C7E00881E80000DA -S315400195F01B100144D803618C821020018328400C42 -S315400196001B10014482007FFFD803619C82084008F9 -S31540019610932A400C900040098213C0007FFFE70A5D -S315400196209E104000010000001B100144D803618CCC -S31540019630821020018328400C1B10014482007FFFC9 -S31540019640D803619C82084008932A400C9000400947 -S315400196508213C0007FFFE7009E104000010000001A -S31540019660952AA00D0328000094028009D0204000CD -S315400196709422B000D420600481C3E00801000000B8 -S31540019680033FFFBF821062F89DE38001193FFFBF90 -S3154001969094132368B407BFF80310004B9606800A5B -S315400196A0821063A0C222E00C0310004B821063605B -S315400196B0C222E0041B10004B9A136340033FFFBFD5 -S315400196C0DA26800A901323803310004B8210635CA4 -S315400196D094068008981323C0921663808200401E28 -S315400196E0D222E008D4204000B006800C7FFF9EC7FE -S315400196F0901020067FFFE6C890102000920A3FF0A6 -S315400197007FFFE6C790102000210000307FFFE6C2B0 -S3154001971090102000808A001012BFFFFD010000005A -S315400197207FFFFF36210000307FFFE6BB901020000F -S31540019730808A001012BFFFFD010000007FFFE6B6E0 -S3154001974090102000030020408210600F9212000109 -S315400197507FFFE6B3901020007FFFE6AF9010200810 -S3154001976021100144D02421787FFFE6AB9010200CD4 -S31540019770A73A2010993A2014A60CE007980B200F1F -S31540019780DA042178A8230013A80520089F3B60141A -S31540019790933B60109B3B601894050013A210200177 -S315400197A0AC03200A9E0BE00F96102400AE0B60031B -S315400197B09402A00221200000992AC00C1B100144EA -S315400197C08203E00A952C400A9424000A832C400126 -S315400197D0D8236198A02400011B10014403100144C1 -S315400197E0EC23618C972AC00FAA03E00A1B1001449F -S315400197F0D620617403100144EA236184EA20618022 -S315400198001B10014403100144D423617C920A600772 -S31540019810A53A2018D0206188153FFFBF932C4009F7 -S31540019820A40CA003031001449412A358932C40099D -S31540019830A404A0013910014437100144EC20619C75 -S315400198409B2C40149402801EE0272194E426E1904B -S31540019850AA027FFFDA228000AC85E0010280000C7B -S31540019860BB2C4013033FFFBF82106368A0068001F3 -S31540019870A4100016D00400009FC20000A0042004DA -S31540019880A484BFFF32BFFFFDD00400007FFFE66224 -S3154001989090102000920A3FFC7FFFE6619010200065 -S315400198A0A410200080A4801616800022A210200059 -S315400198B0033FFFBFAE106368A610001AA010200038 -S315400198C080A4001636800018A404A001108000056B -S315400198D0A810001780A4001636800013A404A00126 -S315400198E0921000107FFFFEC8D004C014820A0015F2 -S315400198F080A0401512BFFFF8A0042001C204C01485 -S3154001990082184008DA0721948208400D80A00001A0 -S31540019910A2647FFF80A4001606BFFFF392100010D9 -S31540019920A404A00180A4801606BFFFE5A604E004B6 -S315400199307FFFE63990102000A61000089010200005 -S315400199407FFFE6379214E00380A46000028001B1F4 -S3154001995001000000833CE00C80886003128000A572 -S31540019960030048D1833CE01380886003128001AD37 -S31540019970010000007FFFFEA1210000307FFFE626A7 -S3154001998090102000808A001012BFFFFDA61000082B -S31540019990A4102000C206E19080A480011680000D2B -S315400199A0832CA00292100012901000187FFFFED067 -S315400199B094102000A404A001C206E19080A4800175 -S315400199C006BFFFFA92100012A4102000832CA002B9 -S315400199D0A404A001C026000180A4A01E04BFFFFD6F -S315400199E0832CA00282102005C22600009A10200175 -S315400199F0DA26200482102002C22620089A1020036B -S31540019A00DA26200C7FFFFED89010001880A2200095 -S31540019A10028001D301000000C206000080A060055B -S31540019A2002800004010000007FFF9DFD901020068A -S31540019A307FFFFECD9010001880A22000128001C445 -S31540019A4001000000A4102000C206E19080A480011C -S31540019A501680000F92100012A006200494102000D8 -S31540019A607FFFFEB290100018921000129010001065 -S31540019A707FFFFEAE94102000A404A001C206E1902F -S31540019A8080A4800106BFFFF6921000127FFFE5F821 -S31540019A90901000187FFFE5F6900620207FFFE5F441 -S31540019AA0900620407FFFE5F290062060A41020003A -S31540019AB0C206E19080A4800106800196A210200092 -S31540019AC07FFF9DD790102008173FFFBF8212E3C04A -S31540019AD0940680018212E35C8200401ED81A8000FF -S31540019AE0C2004000D83840009612E380C206800B7F -S31540019AF080A06005128000068206800BDA006004B1 -S31540019B0080A3600102800005A41020007FFF9DC450 -S31540019B1090102009A4102000C206E19080A4800183 -S31540019B2016800011A2102000A006200492100012F7 -S31540019B307FFFFEBE90100010901A200180A0000801 -S31540019B40A2647FFFA404A001C206E19080A4800123 -S31540019B5006BFFFF89210001280A460010280000542 -S31540019B60833CE0137FFF9DAE9010200A833CE013B7 -S31540019B70808860031280018082102005C226000081 -S31540019B809A102001DA26200482102002C2262008DB -S31540019B909A102003DA26200C1B3FFFBF9A13635805 -S31540019BA09A03401ED00340004000048D9210001DD0 -S31540019BB0032EEEEEA12A2002A21063BBE22600107C -S31540019BC07FFFFE699010001880A220001280016775 -S31540019BD001000000C206001080A04011028000056D -S31540019BE0030048D17FFF9D8E90102012030048D17B -S31540019BF0821061671B226AF3C22620209A1361EF05 -S31540019C00DA262024C20E202080A0600102800004B2 -S31540019C10010000007FFF9D829010201AC20E202174 -S31540019C2080A0602302800004010000007FFF9D7C2C -S31540019C309010201BC20E202280A0604502800004A5 -S31540019C40010000007FFF9D769010201CC20E20234C -S31540019C5080A0606702800004010000007FFF9D70C4 -S31540019C609010201DC20E202480A06089028000042D -S31540019C70010000007FFF9D6A9010201EC20E202524 -S31540019C8080A060AB02800004010000007FFF9D645C -S31540019C909010201FC20E202680A060CD02800004B5 -S31540019CA0010000007FFF9D5E90102020C20E2027FC -S31540019CB080A060EF02800004010000007FFF9D58F4 -S31540019CC090102021C2162020832860108330601016 -S31540019CD080A0612302800004010000007FFF9D50A7 -S31540019CE090102022DA1620229B2B601003000011CF -S31540019CF09B3360108210616780A34001028000049B -S31540019D00010000007FFF9D4690102023DA16202493 -S31540019D109B2B6010030000229B336010821061ABC5 -S31540019D2080A3400102800004010000007FFF9D3CAA -S31540019D3090102024DA1620269B2B60100300003356 -S31540019D409B336010821061EF80A3400102800005C1 -S31540019D50821020307FFF9D329010202582102030C6 -S31540019D60C22E2020030C08D1DA062020821061671A -S31540019D7080A3400102800005821020317FFF9D288B -S31540019D809010202782102031C22E2021030C0C5125 -S31540019D90DA0620208210616780A340010280000517 -S31540019DA0821020327FFF9D1E901020288210203283 -S31540019DB0C22E2022210C0C4CDA0620208214226766 -S31540019DC080A3400102800005821020337FFF9D144D -S31540019DD09010202982102033C22E20239A14223338 -S31540019DE0C206202080A0400D02800005821020344A -S31540019DF07FFF9D0B9010202A82102034C22E2024F2 -S31540019E00030D2AF3DA062024821061EF80A3400174 -S31540019E1002800005821020357FFF9D019010202B86 -S31540019E2082102035C22E2025030D0D73DA0620241B -S31540019E30821061EF80A34001028000058210203626 -S31540019E407FFF9CF79010202C82102036C22E2026B0 -S31540019E50210D0D4DDA062024821422EF80A3400104 -S31540019E6002800005821020377FFF9CED9010202D47 -S31540019E7082102037C22E20279A142237C206202468 -S31540019E8080A0400D02800005210000107FFF9CE468 -S31540019E909010202E2100001082142041C23620202D -S31540019EA00310104CDA0620208210623380A3400151 -S31540019EB002800005821422437FFF9CD99010202FF7 -S31540019EC082142243C236202203101050DA06202083 -S31540019ED08210624380A340010280000521000011E7 -S31540019EE07FFF9CCF90102030210000118214204525 -S31540019EF0C23620240311114DDA062024821062371E -S31540019F0080A3400102800005821422477FFF9CC442 -S31540019F109010203182142247C23620260311115156 -S31540019F20DA0620248210624780A3400102800004A1 -S31540019F30010000007FFF9CBA901020327FFFFD2F69 -S31540019F40A4102000C206E19080A48001168000156D -S31540019F501B100144D403619C96100001A0102000FF -S31540019F6080A4001D3680000CA404A001832C800A25 -S31540019F709B286002992CA01082130010C226000D66 -S31540019F80A004200180A4001D06BFFFFC9A036004C3 -S31540019F90A404A00180A4800B26BFFFF2A0102000DC -S31540019FA07FFFE49D9010200003000010808A00018D -S31540019FB012BFFFFC01000000A4102000C206E19080 -S31540019FC080A4800116800114921000127FFFFD8942 -S31540019FD09010001815100144C202A17C900A00019C -S31540019FE0820E000180A20001A404A00112BFFFF469 -S31540019FF0901020337FFF9C8A01000000C206E19049 -S3154001A00080A4800106BFFFF2921000123080010247 -S3154001A0107FFF9C839010200110BFFE50833CE00CD3 -S3154001A0207FFFE47D90102000133FFFF09212603FC6 -S3154001A030920A0009A61000087FFFE47990102000DB -S3154001A0407FFFE3D0A41020001303C0009214C0097F -S3154001A0507FFFE4739010200080A4801616800009CB -S3154001A06092100012901663807FFFFD049410200029 -S3154001A070A404A00180A4801606BFFFFB9210001223 -S3154001A0807FFFE3C0010000007FFFE46390102000E2 -S3154001A090913A200A900A200380A2200102800004FE -S3154001A0A0010000007FFF9C5E90102002010000002D -S3154001A0B092102000901663807FFFFCE194102000EF -S3154001A0C0010000007FFFE454901020001303C000FC -S3154001A0D0922A00097FFFE4529010200001000000FF -S3154001A0E07FFFE3A8010000007FFFE44B90102000B2 -S3154001A0F0913A200C900A200380A2200102BFFE1E45 -S3154001A100010000007FFF9C469010200330BFFE1ADD -S3154001A110921000127FFFFD4590100018901A2005FD -S3154001A12080A00008A2647FFFA404A001C206E190BA -S3154001A13080A4800106BFFFF89210001280A460003F -S3154001A14012BFFE63173FFFBF30BFFE5E7FFF9C34E9 -S3154001A1509010200710BFFE3DA41020007FFF9C30C9 -S3154001A1609010200530BFFE2D7FFF9C2D90102011B1 -S3154001A17030BFFE997FFFE42890102000033FFFF097 -S3154001A1808210603F920A00017FFFE4259010200073 -S3154001A190033FFFBFA010638092102000941020005F -S3154001A1A07FFFFCE2900680107FFFE41B90102000A9 -S3154001A1B00303C000921200017FFFE41990102000B2 -S3154001A1C010800006A4102000900680107FFFFCD767 -S3154001A1D094102005A404A001C206E19080A4800148 -S3154001A1E006BFFFFA92100012033FFFBFA010638023 -S3154001A1F09A102001DA2E801003004000D806801004 -S3154001A2008210600580A30001028000040100000065 -S3154001A2107FFF9C039010200B7FFFE3FF90102000EF -S3154001A220913A2006900A200380A220010280000470 -S3154001A230010000007FFF9BFA9010200C7FFFE3F6A0 -S3154001A240901020001303C000922A00097FFFE3F417 -S3154001A2509010200092102000900680107FFFFCB3E2 -S3154001A260941020007FFFE3EC901020002103C000F2 -S3154001A270921200107FFFE3EA901020007FFFE3E691 -S3154001A28090102000808A001002BFFFFDA610000832 -S3154001A290A4102000C206E19080A480011680000E21 -S3154001A2A0033FFFBF9A102001A2106380A12B401DDE -S3154001A2B092100012900680117FFFFC8D94043FFF9F -S3154001A2C0A404A001C206E19080A4800106BFFFFA62 -S3154001A2D0921000121303C000922CC0097FFFE3D0F5 -S3154001A2E0901020002103C0007FFFE3CB9010200097 -S3154001A2F0808A001012BFFFFD1B004000213FFFBFB7 -S3154001A30082142380D80680019A13600580A3000D2C -S3154001A31002800004010000007FFF9BC19010200DC8 -S3154001A3207FFFE3BD90102000913A2008900A200358 -S3154001A33080A2200122800005A01423787FFF9BB8CC -S3154001A3409010200FA01423789406801098102011A5 -S3154001A3509A102055D83A80007FFFE3AF9010200035 -S3154001A3600303C00092120001920A7F3F7FFFE3ACD4 -S3154001A37090102000A00680107FFFE3CB90100010C4 -S3154001A38010800006A4102000900420047FFFFC6783 -S3154001A39094102055A404A001C206E19080A4800136 -S3154001A3A006BFFFFA92100012113FFFBF90122378A9 -S3154001A3B07FFFE3BD9006800880A220111280000431 -S3154001A3C080A2605502800004010000007FFF9B943B -S3154001A3D0901020107FFFE39090102000833A2006D2 -S3154001A3E08208600380A0600102800004A610000874 -S3154001A3F07FFF9B8B90102010133C3FF09212603FE1 -S3154001A400920CC0097FFFE3869010200010BFFDDC4F -S3154001A410821020057FFFE380901020009212200FCA -S3154001A4207FFFE37F9010200081C7E00891E820007C -S3154001A4309DE3BF987FFFFC9301000000B010000828 -S3154001A440130020409212600F7FFFE37590102000A9 -S3154001A4500100000081C7E00881E80000033FFFBF1B -S3154001A460821063589DE380017FFFFBE401000000F9 -S3154001A47040000238010000007FFFE367901020088A -S3154001A480A21000087FFFE3649010200C7FFF9B73AE -S3154001A490A0100008912A20047FFF9B5C9002200CAB -S3154001A4A0973C6014833C6018953C2014993C2018D5 -S3154001A4B082086003960AE00F820060019602E00A74 -S3154001A4C0A33C6010A13C2010980B2003940AA00FD6 -S3154001A4D0A728400B98032001A20C6007A00C200777 -S3154001A4E09402A00A9A102001A2046002A00420024C -S3154001A4F0B12B000A03200000AB2B4011A52B4010C5 -S3154001A5009620401898057FFF822040139A04BFFF8A -S3154001A510AE130001A213400B210000307FFFE33E42 -S3154001A52090102000808A001012BFFFFD033FFFBF3D -S3154001A5309A07BFF8821063C0A00340012D155555F7 -S3154001A54090100018921000107FFFE2C69415A15595 -S3154001A55080A220001280004B292AAAAA921000103C -S3154001A560901000187FFFE2D3941522AA80A2200002 -S3154001A5701280004E010000007FFF9B380100000061 -S3154001A580912A20047FFF9B219002200A400001EE80 -S3154001A5900100000092152200920C4009901000180B -S3154001A5A094100011961000127FFFE2EB981522AA33 -S3154001A5B080A2200012800051010000009215A100E6 -S3154001A5C090100018920C4009941000119610001238 -S3154001A5D07FFFE2E19815A15580A220001280004438 -S3154001A5E0010000007FFF9B1D01000000912A20040D -S3154001A5F07FFF9B069002200B901000137FFFE2BD68 -S3154001A6009215A15580A2200012800035010000005C -S3154001A610901000137FFFE2B7921522AA80A2200074 -S3154001A6201280002C010000007FFF9B0C01000000FE -S3154001A630912A20047FFF9AF5900220099010001379 -S3154001A64092100017941000157FFFE2B6961522AAC4 -S3154001A65080A220001280001B010000009010001310 -S3154001A66092100017941000157FFFE2AE9615A15582 -S3154001A67080A2200002800025010000003080000EEB -S3154001A6807FFF9AE790102001292AAAAA921000106A -S3154001A690901000187FFFE287941522AA80A220001D -S3154001A6A002BFFFB6010000007FFF9ADD9010200235 -S3154001A6B030BFFFB27FFF9ADA901020083080001336 -S3154001A6C07FFF9AD79010200710BFFFE69010001326 -S3154001A6D07FFF9AD39010200630BFFFD47FFF9AD0D8 -S3154001A6E09010200510BFFFCC901000137FFF9ACC2D -S3154001A6F09010200430BFFFBC7FFF9AC99010200301 -S3154001A70010BFFFB09215A1007FFFFB3CB0102000A7 -S3154001A71040000190010000000100000081C7E008EF -S3154001A72081E800009DE3BF987FFF9AB31100412C59 -S3154001A730DA062004D80620049A0B6003993B2002CE -S3154001A74082102007C2262008BA036001B20B27FFF8 -S3154001A750010000009010200AC02600007FFF9AAB3E -S3154001A760010000001700020082103FFFC226000BC5 -S3154001A770032AAAAA1B155555D806000BAC10200072 -S3154001A780821062AA9A136155AA0B000180A5801D09 -S3154001A79016800038A80B000D9612E020A72E6008FF -S3154001A7A080A4E0000480000CA2102000832DA002AA -S3154001A7B082004018190002009A10000BE820400C54 -S3154001A7C0EA20400DA204601080A4C01114BFFFFC12 -S3154001A7D082006040AC05A00180A5801D06BFFFF246 -S3154001A7E080A4E000AC10200080A5801D16800021C9 -S3154001A7F003000200B8106020A72E6008AE100018B2 -S3154001A80080A4E00004800017A2102000030002008B -S3154001A810A4060001A005C01CC2048000A204601069 -S3154001A820A404A04080A0401402800004901020019E -S3154001A8307FFF9A7B01000000C2040000A004204073 -S3154001A84080A0401502800004901020017FFF9A7479 -S3154001A8500100000080A4C01114BFFFF001000000F8 -S3154001A860AC05A00180A5801D06BFFFE6AE05E0044C -S3154001A8707FFF9A669010200CAC10200080A5801DA9 -S3154001A88016800088031555559E1061551B0008001A -S3154001A890032AAAAA9A136004901062AAA72E6008F6 -S3154001A8A080A4E0000480000EA2102000832DA01396 -S3154001A8B082004018130008009410000F9610000DF6 -S3154001A8C098100008D4204009D820400BA204600209 -S3154001A8D080A4C01114BFFFFC82006008AC05A00132 -S3154001A8E080A5801D06BFFFF080A4E000AC102000CB -S3154001A8F080A5801D1680006B03155555B81061550E -S3154001A9001B000800032AAAAAB6136004B41062AA5F -S3154001A910A72E600880A4E00004800019A210200040 -S3154001A920832DA013A00040182F000800AA10001C78 -S3154001A930A810001BA410001AC2040017A20460024A -S3154001A94080A0401502800004901020037FFF9A34B6 -S3154001A95001000000C2040014A004200880A0401297 -S3154001A96002800004901020037FFF9A2D0100000011 -S3154001A97080A4C01114BFFFF101000000AC05A00185 -S3154001A98080A5801D06BFFFE580A4E000AC10200035 -S3154001A99080A5801D16800043030008009E106004B8 -S3154001A9A01B155555032AAAAA9A136155901062AAF6 -S3154001A9B0A72E600880A4E0000480000EA2102000AB -S3154001A9C0832DA01382004018130008009410000F35 -S3154001A9D09610000D98100008D620400AD82040094C -S3154001A9E0A204600280A4C01114BFFFFC820060086B -S3154001A9F0AC05A00180A5801D06BFFFF080A4E00044 -S3154001AA00AC10200080A5801D1680002603155555E3 -S3154001AA10B81061551B2AAAAA03000800A72E600890 -S3154001AA20B61362AAB410600480A4E0000480001941 -S3154001AA30A2102000832DA013A00040182F0008006B -S3154001AA40AA10001CA810001BA410001AC204001270 -S3154001AA50A204600280A040150280000490102004E8 -S3154001AA607FFF99EF01000000C2040017A0042008EF -S3154001AA7080A0401402800004901020047FFF99E8D2 -S3154001AA800100000080A4C01114BFFFF101000000C5 -S3154001AA90AC05A00180A5801D06BFFFE580A4E000AE -S3154001AAA082102005C22620081B200000DA2600005D -S3154001AAB081C7E00881E8000081C3E0089144400075 -S3154001AAC080800000151001409412A1809010200052 -S3154001AAD09210224681800000010000000100000022 -S3154001AAE001000000D00280009122400881C3E008A5 -S3154001AAF0010000008180000090102001809020011B -S3154001AB0080D020011280002C0100000080D23FFF3E -S3154001AB10168000290100000080DA3FFF93400000C3 -S3154001AB2080A27FFF128000240100000080D23FFFF7 -S3154001AB309348000093326014920A600F80A2600825 -S3154001AB401280001D0100000081800000901020014C -S3154001AB50945220049452A0049452A00496A2A04078 -S3154001AB601280001501000000818000009010200233 -S3154001AB7080A00000328000109052000880A220027E -S3154001AB801280000D0100000081800000901020021B -S3154001AB9080A00000010000003280000790520008AA -S3154001ABA080A22002128000040100000081C3E00857 -S3154001ABB09010200181C3E0089010000013155555EF -S3154001ABC092126155A582400001000000010000007B -S3154001ABD0010000009544800080A2400A1280004393 -S3154001ABE001000000923A4000A582400001000000A9 -S3154001ABF001000000010000009544800080A2400A47 -S3154001AC001280003A010000001100003F901223FF1C -S3154001AC10A5800000818000000100000001000000C5 -S3154001AC200100000093F23FFF9A10000993F23FFFA3 -S3154001AC3093F23FFF93F23FFF93F23FFF93F23FFFC1 -S3154001AC4093F23FFF93F23FFF994000009744800003 -S3154001AC50153FFC009412A00880A2400A12800023EE -S3154001AC6080A2400B1280002180A320071280001F82 -S3154001AC70113FFF809012200180A340081280001BE3 -S3154001AC801100003F901223FFA58000008180000043 -S3154001AC9001000000010000000100000093FA3FFF9F -S3154001ACA093FA3FFF93FA3FFF93FA3FFF93FA3FFF31 -S3154001ACB093FA3FFF93FA3FFF93FA3FFF9940000013 -S3154001ACC09744800080A260081280000880A2600834 -S3154001ACD01280000680A320001280000401000000BB -S3154001ACE081C3E0089010200181C3E0089010000064 -S3154001ACF0818000009010200280A000003280001068 -S3154001AD009072000880A220021280000D010000000E -S3154001AD10818000009010200280A000000100000008 -S3154001AD20328000079072000880A22002128000043F -S3154001AD300100000081C3E0089010200181C3E008B2 -S3154001AD4090100000C0A0004081C3E008010000004F -S3154001AD50110020409012200FD0A0004081C3E0088E -S3154001AD60010000009DE3BF987FFFE12B9010200872 -S3154001AD70A21000087FFFE1289010200C833C60144C -S3154001AD809B3A2014A13A2018A33C6018A20C6003F8 -S3154001AD90A00C20038208600F9A0B600F8200600AA4 -S3154001ADA09A03600AA2046001A0042001A32C400179 -S3154001ADB07FFFFFE5A12C000D7FFFE08E9010001173 -S3154001ADC07FFFE09A901000107FFFF98C0100000090 -S3154001ADD07FFFFFE081E800000100000098120009B2 -S3154001ADE0818200009AAB2FFF0280002598880000DF -S3154001ADF099230009992300099923000999230009F8 -S3154001AE0099230009992300099923000999230009E7 -S3154001AE1099230009992300099923000999230009D7 -S3154001AE2099230009992300099923000999230009C7 -S3154001AE3099230009992300099923000999230009B7 -S3154001AE4099230009992300099923000999230009A7 -S3154001AE509923000999230009992300099923000997 -S3154001AE609923000999230009992300099923000987 -S3154001AE709923000081C3E00891400000992300090D -S3154001AE809923000999230009992300099923000967 -S3154001AE909923000999230009992300099923000957 -S3154001AEA09923000999230009992300099923000050 -S3154001AEB09B400000992B200C9B33601481C3E00812 -S3154001AEC09013400C1080000B8610200080924008A1 -S3154001AED01680000886100008809240001680000403 -S3154001AEE080920000168000039220000990200008FD -S3154001AEF09A924000128000059610000891D02002D7 -S3154001AF0081C3E0089010000080A2C00D0A80009520 -S3154001AF10941000000302000080A2C0010A800028AC -S3154001AF209810000080A340011A80000D8410200172 -S3154001AF309B2B600410BFFFFC980320019A83400DB0 -S3154001AF401A8000078400A001832860049B336001B6 -S3154001AF509A034001108000078420A00180A3400B82 -S3154001AF600ABFFFF701000000028000020100000055 -S3154001AF7084A0A00106800076010000009622C00D43 -S3154001AF80941020011080000A01000000952AA001BA -S3154001AF90068000059B3360019622C00D1080000497 -S3154001AFA09402A0019602C00D9422A00184A0A001A2 -S3154001AFB016BFFFF78092C000308000659B2B60046E -S3154001AFC080A3400B08BFFFFE9883200102800065E5 -S3154001AFD0982320018092C000952AA0040680002F64 -S3154001AFE09B33600196A2C00D068000179B3360011A -S3154001AFF096A2C00D0680000B9B33600196A2C00D40 -S3154001B000068000059B33600196A2C00D108000505A -S3154001B0109402A00F9682C00D1080004D9402A00D9F -S3154001B0209682C00D068000059B33600196A2C00D35 -S3154001B030108000479402A00B9682C00D10800044F8 -S3154001B0409402A0099682C00D0680000B9B336001D5 -S3154001B05096A2C00D068000059B33600196A2C00DE5 -S3154001B0601080003B9402A0079682C00D10800038E4 -S3154001B0709402A0059682C00D068000059B336001AF -S3154001B08096A2C00D108000329402A0039682C00D94 -S3154001B0901080002F9402A0019682C00D06800017F1 -S3154001B0A09B33600196A2C00D0680000B9B33600165 -S3154001B0B096A2C00D068000059B33600196A2C00D85 -S3154001B0C0108000239402BFFF9682C00D108000209D -S3154001B0D09402BFFD9682C00D068000059B33600138 -S3154001B0E096A2C00D1080001A9402BFFB9682C00D35 -S3154001B0F0108000179402BFF99682C00D0680000B9E -S3154001B1009B33600196A2C00D068000059B3360010A -S3154001B11096A2C00D1080000E9402BFF79682C00D14 -S3154001B1201080000B9402BFF59682C00D0680000583 -S3154001B1309B33600196A2C00D108000059402BFF3B7 -S3154001B1409682C00D108000029402BFF198A320019F -S3154001B15016BFFFA28092C000268000029602C00957 -S3154001B1608090C000268000029620000B81C3E00833 -S3154001B1709010000B921000089010200094102000AF -S3154001B180961020008213C000400001E89E10400046 -S3154001B190010000009210000803100142D00063F83C -S3154001B1A08213C0004000000A9E10400001000000CA -S3154001B1B09210000803100142D00063F88213C000C8 -S3154001B1C0400002559E104000010000009DE3BF98DB -S3154001B1D08206600B80A06016A61000181880000336 -S3154001B1E0A0087FF8A010201080A400199A402000E2 -S3154001B1F08334201F8090400D128001B0B010200092 -S3154001B200400001B09010001380A421F71880001768 -S3154001B21099342009391001408217222898040001E7 -S3154001B220F003200C80A6000C0280004E9F342003C0 -S3154001B230C206200494087FFC9A06000AC2036004F1 -S3154001B24082106001D006200CD2062008D2222008A6 -S3154001B250C2236004D022600C400001A0901000136C -S3154001B26010800196B006200880A320001280002895 -S3154001B2709F342003391001409B2BE003821722287B -S3154001B2809A0340011080000AF003600C94087FFC89 -S3154001B2909622801080A2E00F1480010980A2E0006E -S3154001B2A036BFFFE79A06000AF006200C80A6000D7D -S3154001B2B032BFFFF7C20620049E03E001251001407C -S3154001B2C09814A230F003200880A6000C0280005D8D -S3154001B2D0833BE01FC206200494087FFC962280101F -S3154001B2E080A2E00F1480009F80A2E000D823200CAA -S3154001B2F006800023D82320089A06000AC203600468 -S3154001B3008210600110BFFFD5C2236004833420063A -S3154001B31080A3200408BFFFD89E00603880A3201474 -S3154001B32008BFFFD59E03205B8334200C80A32054A5 -S3154001B33008BFFFD19E00606E8334200F80A3215445 -S3154001B34008BFFFCD9E0060778334201280A3255429 -S3154001B35008BFFFC99E00607C10BFFFC79E10207EBC -S3154001B36098062008F003200C80A6000C32BFFFB2DD -S3154001B370C206200410BFFFD29E03E00280A2A1FFB5 -S3154001B380088000BE9B32A0039732A00980A2E0004C -S3154001B39022800017961722288332A00680A2E00455 -S3154001B3A0088000129A00603880A2E0140880000FDD -S3154001B3B09A02E05B8332A00C80A2E0540880000B25 -S3154001B3C09A00606E8332A00F80A2E1540880000784 -S3154001B3D09A0060778332A01280A2E5540880000368 -S3154001B3E09A00607C9A10207E96172228832B600350 -S3154001B3F09000400BD202200880A240082280010F13 -S3154001B40099336002C202600482087FFC80A0400A30 -S3154001B41028800007D002600CD202600880A2400852 -S3154001B42032BFFFFAC2026004D002600CD026200C63 -S3154001B430D2262008F022600CF0222008833BE01F30 -S3154001B4408330601E8203C001391001408338600297 -S3154001B450981722289A102001932B4001D8032004E3 -S3154001B46080A2400C1880004BAE172228808B000921 -S3154001B4701280000D03100140820BFFFC920240092D -S3154001B480808B0009128000079E0060048210000C28 -S3154001B490920240098088400902BFFFFE9E03E004F4 -S3154001B4A003100140A2106228A8100011832BE0036B -S3154001B4B0980040119010000F9A10000C1080000A5D -S3154001B4C0F003600C94087FFC9622801080A2E00F66 -S3154001B4D01480007D80A2E0003680008B9A06000A27 -S3154001B4E0F006200C80A6000D32BFFFF7C2062004ED -S3154001B4F09E03E001808BE00312BFFFF19A036008CF -S3154001B500808A200398033FF8028000D490023FFFCF -S3154001B510C203200880A0400C02BFFFFB808A2003A3 -S3154001B52092024009C205200480A2400118800018F9 -S3154001B5303910014080A260001280000680884009CF -S3154001B54010800014AE1722289E03E004808840092B -S3154001B55022BFFFFE9202400910BFFFD6832BE003B4 -S3154001B5608214200194060010C2262004D423200C04 -S3154001B570D42320088212E001D622800BD822A008CB -S3154001B580C222A00410BFFF35D822A00CAE17222834 -S3154001B590F005E008C2062004AA087FFC80A54010F9 -S3154001B5A09A4020009625401080A2E00F1480004268 -S3154001B5B0821020018093400102800027031001433D -S3154001B5C0DA0061282D1001409A04000DC205A2201F -S3154001B5D0A810001580A07FFFA2036010028000041E -S3154001B5E0A406001582046FFFA20870009010001394 -S3154001B5F0400000C09210001180A23FFF0280000867 -S3154001B600B210000880A200121A8000463B10014386 -S3154001B61080A6001722800044C20760F882172228BC -S3154001B620D8006008DA0320049A0B7FFC80A34010FF -S3154001B630984020009623401080A2E00F048000032A -S3154001B6408210200182102000809300011280009810 -S3154001B6500100000098172228F003200882142001D7 -S3154001B660C22620049A0600108212E001C223600419 -S3154001B67010BFFEFADA23200898033FF8832B6003B4 -S3154001B6809000400C9B336002821020018328400DBC -S3154001B690D2022008DA0320049A134001D026200C56 -S3154001B6A0D2262008F022600CDA23200410BFFF6462 -S3154001B6B0F022200810BFFFC08210200010BFFEFFFD -S3154001B6C09E03FFFFD006200CD20620089A142001C3 -S3154001B6D0940600108214A230D2222008D022600C97 -S3154001B6E0DA262004D420600CD42060089A12E001A6 -S3154001B6F0D622800BC222A008DA22A00410BFFED7B0 -S3154001B700C222A00CC203600482106001D006200C44 -S3154001B710D2062008C223600410BFFECFD2222008E1 -S3154001B720C20760F88200401180A640120280004F95 -S3154001B730C22760F8C205A22080A07FFF0280004593 -S3154001B740C20760F89A2640128200400DC22760F86F -S3154001B7509A8E600702800005A410200082102008FE -S3154001B760A420400DB20640129A0640119A0B6FFF73 -S3154001B770030000048220400DA404800190100013B0 -S3154001B7804000005C9210001280A23FFF2280003FE1 -S3154001B790A41020008222001990004012821722280C -S3154001B7A0DA0760F89A03401280A60001F220600889 -S3154001B7B0DA2760F8028000378212200180A5600FE7 -S3154001B7C038800005C22660048210200110BFFF9414 -S3154001B7D0C2266004C20620049A057FF4A80B7FF8AE -S3154001B7E08208600182104014C22620049A06001481 -S3154001B7F082102005C223600880A5200F18800027EB -S3154001B800C223600419100143DA0760F8C2032124F8 -S3154001B81080A3400138800002DA2321241910014314 -S3154001B820C203212080A3400138BFFF7DDA232120B6 -S3154001B83010BFFF7C821722289A102001C202E00421 -S3154001B8409B2B400C8210400D10BFFEF9C222E00432 -S3154001B85010BFFFC0F225A220C2046004822840091D -S3154001B86010BFFF30C2246004808E6FFF12BFFFB34A -S3154001B870C205A22090044014DA05E0088212200194 -S3154001B88010BFFFE1C223600410BFFFC3901000192F -S3154001B89010BFFFDDC2266004920620084000009ECC -S3154001B8A09010001310BFFFD9191001434000000B3F -S3154001B8B090100013B010200081C7E00881E8000015 -S3154001B8C011100141901222308213C0004000042A17 -S3154001B8D09E104000010000001110014190122230DB -S3154001B8E08213C0004000043C9E104000010000004D -S3154001B8F09DE3BF9821100144C02421A04000024984 -S3154001B9009010001980A23FFF12800006C20421A0B8 -S3154001B91080A060000280000301000000C2260000F2 -S3154001B92081C7E00891E800089DE3BF9823100143D1 -S3154001B930400004119014612C03100074E00061086A -S3154001B940D004214880A220002280002D9004214C61 -S3154001B950D602200480A2E01F1480001D01000000D1 -S3154001B96080A620001280000B94022088832AE002E0 -S3154001B9709A02E00182004008DA222004F22060089F -S3154001B980400004159014612C10800022B010200054 -S3154001B990821020019328400B992AE002DA02A10085 -S3154001B9A09A1340098203000AF6206080F422800C33 -S3154001B9B080A6200212BFFFEEDA22A100C202A10434 -S3154001B9C08210400910BFFFEAC222A1047FFFFDF2A7 -S3154001B9D09010219080A220000280000B961020003A -S3154001B9E0C2042148C2220000D0242148C02220049A -S3154001B9F0C022218810BFFFDBC022218C10BFFFD59A -S3154001BA00D0242148400003F49014612CB0103FFF2C -S3154001BA1081C7E00881E800009DE3BF987FFFFFA949 -S3154001BA209010001803100140A2106228DA04600841 -S3154001BA30C2036004A0087FFCB2240019B2066FEF6E -S3154001BA40B20E7000B20670009210200080A66FFF01 -S3154001BA500480000A901000187FFFFFA60100000035 -S3154001BA60C20460088200401080A04008922000195C -S3154001BA7002800005901000187FFFFF98B01020004B -S3154001BA80308000237FFFFF9B90100018822400190D -S3154001BA9080A23FFF821060019210200019100143DD -S3154001BAA00280000B90100018DA046008C22360047B -S3154001BAB0C20320F882204019901000187FFFFF87AB -S3154001BAC0C22320F810800012B01020017FFFFF89A9 -S3154001BAD00100000098100008D6046008A023000B5E -S3154001BAE09010001880A4200F04BFFFE4B214200177 -S3154001BAF003100140DA0062209A23000D031001432E -S3154001BB00DA2060F810BFFFDDF222E00481C7E008C9 -S3154001BB1081E800009DE3BF9880A660000280009DF9 -S3154001BB20A41000187FFFFF6790100018A0067FF849 -S3154001BB30D6042004900AFFFE19100140940400081F -S3154001BB40A2132228DA02A004C204600880A0400A97 -S3154001BB50028000449E0B7FFC808AE001DE22A00425 -S3154001BB601280000CB0102000F2067FF8A0240019C4 -S3154001BB7082046008DA04200880A340010280007D27 -S3154001BB8090020019D204200CDA226008D223600CFC -S3154001BB908202800FDA006004808B60011280000A05 -S3154001BBA08212200180A62000028000229002000F0E -S3154001BBB0DA02A008D202A00CDA226008D223600C75 -S3154001BBC082122001C224200480A6200002800005A2 -S3154001BBD0D0240008B01000127FFFFF4081E800002A -S3154001BBE080A221FF18800036973220099B3220031C -S3154001BBF098132228832B60039200400C9B336002EA -S3154001BC00821020018328400DD6026008DA03200401 -S3154001BC109A134001D224200CD6242008E022E00CBD -S3154001BC20DA232004E022600810BFFFECB0100012B6 -S3154001BC3003100140DA02A0088210623080A340015D -S3154001BC4032BFFFDED202A00CE023600CE023600885 -S3154001BC50DA242008DA24200C10BFFFDAB0102001C4 -S3154001BC60808AE001128000099002000FF2067FF8F7 -S3154001BC70A0240019D204200CD6042008D62260083C -S3154001BC8090020019D222E00C03100140DA0062242E -S3154001BC9098122001E024600880A2000D0ABFFFCF60 -S3154001BCA0D824200403100143D20061287FFFFF5BA3 -S3154001BCB0901000127FFFFF0981E8000080A2E0009A -S3154001BCC0028000169B3220038332200680A2E004C4 -S3154001BCD0088000129A00603880A2E0140880000FA4 -S3154001BCE09A02E05B8332200C80A2E0540880000B6C -S3154001BCF09A00606E8332200F80A2E15408800007CB -S3154001BD009A0060778332201280A2E55408800003AE -S3154001BD109A00607C9A10207E94132228832B60031C -S3154001BD209200400AD602600880A2C0090280001330 -S3154001BD3099336002C202E00482087FFC80A0400879 -S3154001BD4028800007D202E00CD602E00880A2C00992 -S3154001BD5032BFFFFAC202E004D202E00CD224200C28 -S3154001BD60D6242008E022E00C10BFFFB0E022600894 -S3154001BD7010BFFF88B01020019A102001C202A00412 -S3154001BD809B2B400C8210400D10BFFFF5C222A00430 -S3154001BD9081C7E00881E800009DE3BF98D2064000D4 -S3154001BDA080A2600012800004901000187FFFFF5AA5 -S3154001BDB081E800007FFFFFF9010000007FFFFF5689 -S3154001BDC081E80000010000009DE3BF980310014295 -S3154001BDD0DA0063F880A6000D0280004101000000F0 -S3154001BDE0D206204C80A260001280001CA0102000C8 -S3154001BDF0D206214880A260002280000FD20620543C -S3154001BE00A006214C80A240102280000BD20620546D -S3154001BE1010800005B2100009F20640007FFFFF3E88 -S3154001BE209010001880A4001912BFFFFC921000194F -S3154001BE30D206205480A26000128000250100000035 -S3154001BE40C206203880A06000028000250100000063 -S3154001BE5010800017C206203C832C2002F2024001CA -S3154001BE6080A660002280000BA004200192100019D8 -S3154001BE70F20640007FFFFF289010001880A6600060 -S3154001BE8012BFFFFC92100019D206204CA0042001DB -S3154001BE9080A4200E04BFFFF2832C20027FFFFF1EE9 -S3154001BEA09010001810BFFFD4D20621489FC0400011 -S3154001BEB090100018F20622E080A660000280000879 -S3154001BEC0010000007FFFFFB581E800007FFFFF1200 -S3154001BED09010001810BFFFDCC206203881C7E00869 -S3154001BEE081E800009DE3BF9880A620000280001DE6 -S3154001BEF003100142E406214880A4A00022800013D9 -S3154001BF00C206203CE204A004A2847FFF0C80000A02 -S3154001BF10832C600282004012A0006008C204000027 -S3154001BF209FC04000A0043FFCA2847FFF3CBFFFFDB1 -S3154001BF30C2040000E404800080A4A00032BFFFF3E5 -S3154001BF40E204A004C206203C80A0600002800007F3 -S3154001BF50010000009FC0400090100018308000038F -S3154001BF6010BFFFE5F00063F881C7E00881E80000F3 -S3154001BF701080000B86102000809240081680000831 -S3154001BF80861A400880924000168000048092000084 -S3154001BF901680000392200009902000089A924000E2 -S3154001BFA0128000059610000891D0200281C3E00856 -S3154001BFB09010000080A2C00D0A80009594100000E8 -S3154001BFC00302000080A2C0010A80002898100000E8 -S3154001BFD080A340011A80000D841020019B2B600430 -S3154001BFE010BFFFFC980320019A83400D1A80000779 -S3154001BFF08400A001832860049B3360019A034001B9 -S3154001C000108000078420A00180A3400B0ABFFFF7E0 -S3154001C01001000000028000020100000084A0A0018E -S3154001C02006800076010000009622C00D9410200182 -S3154001C0301080000A01000000952AA0010680000533 -S3154001C0409B3360019622C00D108000049402A0012A -S3154001C0509602C00D9422A00184A0A00116BFFFF74D -S3154001C0608092C000308000659B2B600480A3400B0A -S3154001C07008BFFFFE988320010280006598232001B6 -S3154001C0808092C000952AA0040680002F9B33600150 -S3154001C09096A2C00D068000179B33600196A2C00D83 -S3154001C0A00680000B9B33600196A2C00D06800005F9 -S3154001C0B09B33600196A2C00D108000509402A00FE0 -S3154001C0C09682C00D1080004D9402A00D9682C00D3F -S3154001C0D0068000059B33600196A2C00D1080004783 -S3154001C0E09402A00B9682C00D108000449402A009D0 -S3154001C0F09682C00D0680000B9B33600196A2C00D4F -S3154001C100068000059B33600196A2C00D1080003B5E -S3154001C1109402A0079682C00D108000389402A005B3 -S3154001C1209682C00D068000059B33600196A2C00D24 -S3154001C130108000329402A0039682C00D1080002F19 -S3154001C1409402A0019682C00D068000179B336001C0 -S3154001C15096A2C00D0680000B9B33600196A2C00DCE -S3154001C160068000059B33600196A2C00D1080002316 -S3154001C1709402BFFF9682C00D108000209402BFFD3D -S3154001C1809682C00D068000059B33600196A2C00DC4 -S3154001C1901080001A9402BFFB9682C00D10800017D2 -S3154001C1A09402BFF99682C00D0680000B9B33600155 -S3154001C1B096A2C00D068000059B33600196A2C00D74 -S3154001C1C01080000E9402BFF79682C00D1080000BBE -S3154001C1D09402BFF59682C00D068000059B3360012F -S3154001C1E096A2C00D108000059402BFF39682C00D41 -S3154001C1F0108000029402BFF198A3200116BFFFA24E -S3154001C2008092C000268000029422A0018090C00046 -S3154001C210268000029420000A81C3E0089010000A9B -S3154001C22019100144DA0321A480A36000128000069C -S3154001C23082034008031001449A1061B8DA2321A40D -S3154001C24082034008C22321A481C3E0089010000D57 -S3154001C250A7500000AE1000018334E00129100143CC -S3154001C260E805203CA92CC0148215000181E000009C -S3154001C2708190400001000000010000000100000023 -S3154001C280E03BA000E43BA008E83BA010EC3BA01833 -S3154001C290F03BA020F43BA028F83BA030FC3BA03863 -S3154001C2A081E800008210001781C4400081CC8000E3 -S3154001C2B0010000000100000001000000A75000003D -S3154001C2C0A92CE0012B100143EA05603CAB34C015B3 -S3154001C2D0AA154014819540000100000001000000AC -S3154001C2E00100000081E8000081E80000E01BA00099 -S3154001C2F0E41BA008E81BA010EC1BA018F01BA02013 -S3154001C300F41BA028F81BA030FC1BA03881E00000DC -S3154001C31081E0000081C4400081CC8000A75000002C -S3154001C32029100073ADC5208C010000002710014380 -S3154001C330A614E01CE024C000818C202001000000EE -S3154001C34001000000010000009DE3BFA09DE3BFA0E6 -S3154001C3509DE3BFA09DE3BFA09DE3BFA09DE3BFA01A -S3154001C3609DE3BFA081E8000081E8000081E800006C -S3154001C37081E8000081E8000081E8000081E80000D2 -S3154001C38027100143A614E01CC024C000E203A068A4 -S3154001C390A4046004E223A064E423A068108002623E -S3154001C3A0AC10000029100143A8152000C225200029 -S3154001C3B0C8252004E0252010E2252014E425201874 -S3154001C3C0E825201C81E800008348000082106F00A8 -S3154001C3D0818860200100000001000000010000008A -S3154001C3E009100143C801203C81E000008821200159 -S3154001C3F080A920FF02800003010000000100000027 -S3154001C40080A1000012BFFFF901000000091001439D -S3154001C410C801203C81E8000080A920FF028000037A -S3154001C42001000000010000008821200180A10000D8 -S3154001C43012BFFFF90100000081E00000291001430D -S3154001C440A8152000C8052004C2052000E0052010DB -S3154001C450E2052014E4052018C025201C818C20000B -S3154001C46001000000010000000100000081C48000BD -S3154001C47081CCA004A0142F00818C00000100000093 -S3154001C480010000000100000081C4800081CCA004AD -S3154001C49080A6600212800005A8142F00818D00003D -S3154001C4A0B01420203080001F80A660031280000651 -S3154001C4B0A80E2F00AA2C2F00A8154014818D00002C -S3154001C4C03080001880A6600412800008A948000048 -S3154001C4D0A8152040818D00000100000001000000E8 -S3154001C4E0010000003080000F80A660051280000820 -S3154001C4F0A9480000A82D2040818D000001000000C0 -S3154001C50001000000010000003080000680A66006A0 -S3154001C510128000030100000030BFFFA391D020002C -S3154001C52081C4800081CCA0049210200381C3E0081D -S3154001C53091D020029210200281C3E00891D02002BE -S3154001C5409210200681C3E00891D0200281C3E00801 -S3154001C5500100000081C3E0080100000081C3E0083A -S3154001C56001000000AE25A010A75000002D1000715B -S3154001C570AC15A1782910007381C522340100000051 -S3154001C5801110014390122028D2020000920260014C -S3154001C590D2220000932DE008902C2F009212000920 -S3154001C5A01110014390122020D002000080A0000803 -S3154001C5B02280000292126F00818A602001000000F1 -S3154001C5C001000000010000009010001740000031FA -S3154001C5D09203A06092142F00818A6020010000001E -S3154001C5E001000000010000001110014390122028B3 -S3154001C5F0D202000092226001D22200001080022D58 -S3154001C600AC1000001B1001449A136030912A20029D -S3154001C610C2034008C222600C81C3E008D22340080D -S3154001C6209DE3BF980310014482106030992E600249 -S3154001C6301B100143972E6004D800400C9A136230B8 -S3154001C640901000199202C00D80A6601F1480000F41 -S3154001C650821020001080000680A320002280000A5C -S3154001C660C2024000D803200C80A3200012BFFFFC69 -S3154001C67080A300097FFFFFE4F02240001080000301 -S3154001C68082102000F022400081C7E00891E80001B5 -S3154001C6909DE3BF981B1001438213602CD8006004B0 -S3154001C6A080A3001802800044C203602C80A62000AB -S3154001C6B022800002B010000C03100144A32E200278 -S3154001C6C082106030E000401180A420000280003DCD -S3154001C6D00310014310800012A41061ACD20420085B -S3154001C6E0941000199FC300009010001803100143D5 -S3154001C6F0C20061A480A060001280002B01000000EE -S3154001C700C204801182007FFFC2248011E004200C04 -S3154001C71080A420000280002B01000000D804000004 -S3154001C72080A3200022BFFFFBE004200C031001433D -S3154001C730DA00622C80A36000128000089610001275 -S3154001C74003100143821061ACDA00401180A36000FE -S3154001C75032BFFFF0E004200CDA02C011031001439E -S3154001C7609A036001C20061A880A0600002BFFFDC9D -S3154001C770DA22C0119FC0400001000000D804000029 -S3154001C780D2042008941000199FC30000901000188D -S3154001C79003100143C20061A480A0600022BFFFDAFA -S3154001C7A0C20480119FC040000100000010BFFFD6A7 -S3154001C7B0C2048011DA0060C010BFFFBDB00B601F1C -S3154001C7C081C7E00881E800008C10000FA7480000EF -S3154001C7D08B34E0188A09600F80A160030280000C47 -S3154001C7E00B1001438A116034092000008811207022 -S3154001C7F0C82140000B1001438A11605009200000F6 -S3154001C80088112040C8214000108000399010200135 -S3154001C81092102006400001DD0100000080A00008C2 -S3154001C8200280003301000000C2022010113FFC00CB -S3154001C83082084008110003FC841040089010000251 -S3154001C840921020019410200C400001E601000000E6 -S3154001C85080A000080280002601000000400001F689 -S3154001C860921000010B1001438A116034D22140001D -S3154001C870901000029210200194102011400001D91D -S3154001C8800100000080A0000802800019010000009C -S3154001C890400001E992100001920260100B10014321 -S3154001C8A08A116050D221400090100002921020015E -S3154001C8B09410200D400001CB0100000080A000082B -S3154001C8C00280000B01000000400001DB92100001D4 -S3154001C8D00B1001438A11602CD2214000D402601012 -S3154001C8E09532A010940AA00FD42160049E10000630 -S3154001C8F081C3E00801000000031001438210604833 -S3154001C9008210200191D0200081C3E008010000007F -S3154001C9109DE3BF9803100144C20060CC90100018FB -S3154001C9209210001980A0600002800005B01020001E -S3154001C9309FC0400001000000B010000881C7E00818 -S3154001C94081E800009DE3BF9803100144C20060C81E -S3154001C9509010001880A0600002800005B0102000F1 -S3154001C9609FC0400001000000B010000881C7E008E8 -S3154001C97081E800009DE3BF9803100144C20060C0F6 -S3154001C9809010001880A0600002800005B0102000C1 -S3154001C9909FC0400001000000B010000881C7E008B8 -S3154001C9A081E800009DE3BF9803100144C20060C4C2 -S3154001C9B09010001880A0600002800005B010200091 -S3154001C9C09FC0400001000000B010000881C7E00888 -S3154001C9D081E800009DE3BF9803100144C20060BC9A -S3154001C9E09010001880A0600002800005B010200061 -S3154001C9F09FC0400001000000B010000881C7E00858 -S3154001CA0081E800009DE3BF9803100144C20060B86D -S3154001CA109010001880A0600002800005B010200030 -S3154001CA209FC0400001000000B010000881C7E00827 -S3154001CA3081E800009DE3BF9803100144C20060B441 -S3154001CA409010001880A0600002800005B010200000 -S3154001CA509FC0400001000000B010000881C7E008F7 -S3154001CA6081E800009DE3BF9803100144C20060B015 -S3154001CA70901000189210001980A0600002800005F5 -S3154001CA80B01020009FC0400001000000B010000817 +S31540013B60010000000100000001000000010000000A +S31540013B7001000000010000000100000001000000FA +S31540013B8001000000010000000100000001000000EA +S31540013B9001000000010000000100000001000000DA +S31540013BA00000000080A5C00012BFFFE6AA0560081C +S31540013BB0C12D0000E60500002B03C000A614C01568 +S31540013BC0E6250000C10D000081C4400081CC800083 +S31540013BD00100000081C4800081CCA00401000000E6 +S31540013BE00100000081C3E008915800000100000077 +S31540013BF011100080901220F8C10A0000C022000076 +S31540013C00C10A0000C12A0000D4020000130003804B +S31540013C10942A800980A0000A3280004D901020032A +S31540013C201303E000D223BFA0C023BFA4C10BBFA092 +S31540013C30C023BFA0151000809412A0E8C1028000E5 +S31540013C400100000001000000C10BBFA0C10BBFA4D1 +S31540013C5083A00520C12BBFA0D003BFA0808A22002C +S31540013C602280003B90102004901020001510008007 +S31540013C709412A108C5028000C902A008D102A00C75 +S31540013C8013100080921260E8C70240008DA089445B +S31540013C9081A98AC8010000000380000501000000D7 +S31540013CA0901020011080002A01000000C50280000A +S31540013CB0C902A008D102A00C13100080921260E83C +S31540013CC0CB0240008DA0894481A98AC80100000029 +S31540013CD00380000501000000901020011080001CA7 +S31540013CE00100000025100080A414A0F0C11C800032 +S31540013CF0C51C800080A000003280000685A008C057 +S31540013D0081A80AC2010000001380000301000000DF +S31540013D10901020050100000025100080A414A0F099 +S31540013D20C11C8000C51C800080A00000010000006D +S31540013D303280000685A008C081A80AC201000000A1 +S31540013D4013800003010000009010200701000000CD +S31540013D5081C3E00801000000901020019544000055 +S31540013D609532A01E940AA00380A2800002800040E2 +S31540013D709010200080A2A0021680003D1310008002 +S31540013D8092126198C11A4000C51A6008FD02601876 +S31540013D9095A0003E99A0003E9DA0003E170000C0A0 +S31540013DA09612E078A182C0000100000001000000E7 +S31540013DB001000000010000000100000001000000B8 +S31540013DC081A0002083A0002195A0002A99A0002C63 +S31540013DD09DA0002E170000C09612E07CA182C00073 +S31540013DE00100000001000000010000000100000088 +S31540013DF0010000000100000085A0002287A00023E9 +S31540013E00A180000001000000010000000100000047 +S31540013E1001000000010000000100000089A00842E5 +S31540013E20A9A2883ED93A4000DD224000CD1A601051 +S31540013E30D102600881A90A46010000000380000CF6 +S31540013E4081AD0A2801000000038000099344000067 +S31540013E509332601B920A60079010200080A2A00155 +S31540013E6002800003902260079022600481C3E0082B +S31540013E7001000000C12BBFA081C3E008D003BFA051 +S31540013E80D023BFA081C3E008C10BBFA00100000041 +S31540013E909DE3BF6040001B94B0102000833A200A86 +S31540013EA08208600380A060010280000401000000D6 +S31540013EB081C7E00881E800007FFFB4D89010200D4B +S31540013EC0050C40290723CD1B8410A0068610E09BD4 +S31540013ED0C027BFF0C027BFF4C43FBFF8C027BFD03B +S31540013EE0C027BFD4C027BFC87FFFFF3FC027BFCC75 +S31540013EF0820A300082106080840060040728040032 +S31540013F008610E00F0910004EC6204000881122C0DD +S31540013F10071000008821000289392002861100031A +S31540013F20C62060042510008003278400821060109B +S31540013F307FFFFED0C220A0047FFFFFD21103E00025 +S31540013F4090102000C024A1687FFFFDD00100000031 +S31540013F50809200091280000601000000C204A16897 +S31540013F6080A0600002800004010000007FFFB4B21F +S31540013F709010200B7FFFFDC590103FFA03300600DD +S31540013F8080A2000102800CF880A260007FFFB4AAE3 +S31540013F909010200B7FFFFDBD9010201403100D00E3 +S31540013FA080A200010280113680A260007FFFB4A288 +S31540013FB09010200B7FFFFDB5901020620310162054 +S31540013FC080A200010280112780A260007FFFB49A7F +S31540013FD09010200B7FFFFDB590102005031028009F +S31540013FE080A2000112800CB501000000C204A16844 +S31540013FF080A0600012800CB1010000007FFFFFA18C +S315400140001103C000111C00007FFFFDB0921020007B +S31540014010031FFFFF821063FF80A200011280000B85 +S3154001402001000000C404A168030000708210601FF3 +S3154001403084088001030000108210601080A0800176 +S3154001404002800005113C00007FFFB47B9010200CDC +S31540014050113C00007FFFFD9D9210200003200000CF +S3154001406080A200011280000B01000000C404A16877 +S31540014070030000708210601F840880010300001055 +S315400140808210601080A080010280000401000000BF +S315400140907FFFB4699010200CC024A16890102000C5 +S315400140A07FFFFD8A9210200080A220001280000628 +S315400140B003100080C200616880A060000280000594 +S315400140C0110144007FFFB45C9010200C11014400A3 +S315400140D013284000901223027FFFFD7C921260015B +S315400140E080A220001280000601000000C204A168DF +S315400140F080A06000228000051111FFFF7FFFB44EB2 +S315400141009010200C1111FFFF7FFFFD78901223FFC5 +S315400141100300007F821063FF80A2000112800C63BE +S3154001412001000000C204A16880A0600012800C5FFB +S3154001413001000000271000807FFFFD64D01CE1E0F4 +S31540014140031FFFFF821063FF80A200011280000B54 +S3154001415001000000C404A168030000708210601FC2 +S3154001416084088001030000108210601080A0800145 +S3154001417002800005351000807FFFB42F9010200C7F +S3154001418035100080D01EA1D0C024A1687FFFFD4F0D +S31540014190010000000320000080A200011280000BF4 +S315400141A003100080C4006168030000708210601F24 +S315400141B084088001030000108210601080A08001F5 +S315400141C0028000052B1000807FFFB41B9010200C4D +S315400141D02B100080D01D61F0C024A1687FFFFD3BFC +S315400141E001000000031FFFFF821063FF80A2000150 +S315400141F01280000B03100080C40061680300007048 +S315400142008210601F84088001030000108210601034 +S3154001421080A08001028000052F1000807FFFB40638 +S315400142209010200C2F100080D01DE1B8C024A16849 +S315400142307FFFFD2601000000C204A1688330600EA5 +S315400142408208600380A06002028000040100000031 +S315400142507FFFB3F99010200C7FFFFF0A1103C000C6 +S3154001426011115804C024A1687FFFFD289012223401 +S3154001427003102B008210624680A200010280107159 +S31540014280032000007FFFB3EC9010200D113C02AFDC +S315400142907FFFFD1E901220D1033180558210639A13 +S315400142A080A200010280105F030800007FFFB3E295 +S315400142B09010200D1111FC007FFFFD1C9210200073 +S315400142C0031FE00080A200011280000B01000000E4 +S315400142D0C404A168030000708210601F8408800135 +S315400142E0030000108210600880A080010280000453 +S315400142F0010000007FFFB3D09010200DC024A168BB +S3154001430011207C01130001007FFFFD08901220302F +S315400143100320000080A200011280000B03100080E0 +S31540014320C4006168030000708210601F8408800128 +S31540014330030000108210600480A080010280000406 +S31540014340010000007FFFB3BC9010200DC024A1687E +S31540014350901020007FFFFCF59210200080A22000E3 +S315400143601280000603100080C200616880A06000D0 +S3154001437002800004010000007FFFB3AF9010200DC2 +S315400143807FFFFCEAD01CE1E003100080C20061E837 +S3154001439080A2000112800BC101000000C204A16885 +S315400143A080A0600012800BBD010000003710008024 +S315400143B07FFFFCDED01EE1D8031FE00080A2000192 +S315400143C012800BB301000000C204A16880A0600006 +S315400143D012800BAF010000007FFFFCD4D01D61F0BD +S315400143E003100080C200620080A200011280000B0F +S315400143F001000000C404A168030000708210601F20 +S3154001440084088001030000108210601080A08001A2 +S3154001441002800005D01DE1B87FFFB3879010200DC3 +S31540014420D01DE1B8C024A1687FFFFCC00100000097 +S31540014430C204A1688330600E8208600380A06002D6 +S3154001444002800004010000007FFFB37B9010200D25 +S315400144507FFFFE8C1103E0002108C6AFC024A1688E +S31540014460901420DE7FFFFCB9A01420DE80A200104C +S3154001447012800B8303100080C200616880A0600037 +S3154001448012800B7F010000002108C6AF901420DE88 +S315400144907FFFFCBEA01420DE80A2001012800B74A8 +S315400144A001000000C204A16880A0600012800B7068 +S315400144B0010000001128C6AF7FFFFCB4901220DE38 +S315400144C00308C6AF821060DE80A2000112800B6431 +S315400144D001000000C204A16880A0600012800B6048 +S315400144E0010000001108C6AF7FFFFCA0901220DE3C +S315400144F00328C6AF821060DE80A2000112800B54F1 +S3154001450001000000C204A16880A0600012800B5027 +S31540014510010000001128C6AF7FFFFC94901220DEF7 +S315400145200308C6AF821060DE80A2000112800B45EF +S3154001453001000000C204A16880A0600012800B4106 +S31540014540010000007FFFFE4F1103E00011151BC063 +S315400145501310C821901221039212614115351BC0D7 +S315400145601710C8219412A1037FFFFC909612E141D6 +S3154001457080A2200212800B2B01000000C204A16818 +S3154001458080A0600012800B270100000011351BC07E +S315400145901310C821901221039212614115151BC0B7 +S315400145A01710C8219412A1037FFFFC809612E141A6 +S315400145B080A2200112800B1F01000000C204A168E5 +S315400145C080A0600012800B1B0100000090102000AB +S315400145D092102000152000007FFFFC7496102000E9 +S315400145E080A220001280000601000000C204A168DA +S315400145F080A0600002800005D01EE1D87FFFB30E87 +S315400146009010200FD01EE1D87FFFFC68D41EA1D0A8 +S3154001461080A2200212800AFF01000000C204A168A4 +S3154001462080A0600012800AFB0100000011151BC02A +S315400146301310C821901221039212614115151BE8EE +S315400146401710C8219412A1037FFFFC589612E1412D +S3154001465080A2200112800AEB01000000C204A16879 +S3154001466080A0600012800AE70100000011151BE8D6 +S315400146701310C821901221039212614115151BC0D6 +S315400146801710C8219412A1037FFFFC489612E141FD +S3154001469080A2200212800AD701000000C204A1684C +S315400146A080A0600012800AD301000000D41CE1E022 +S315400146B011151BE81310C821901221037FFFFC3B03 +S315400146C09212614180A2200312800AC601000000B5 +S315400146D0C204A16880A0600012800AC201000000E5 +S315400146E0D41D61F011151BE81310C8219012210346 +S315400146F07FFFFC2E9212614180A220031280000BA3 +S3154001470001000000C404A168030000708210601F0C +S3154001471084088001030000108210601080A080018F +S3154001472002800005D41DE1B87FFFB2C39010200F6F +S31540014730D41DE1B8C024A16811151BE81310C82186 +S31540014740901221037FFFFC199212614180A220023F +S3154001475012800AA003100080C200616880A0600038 +S3154001476012800A9C01000000D01DE1B815151BE816 +S315400147701710C8219412A1037FFFFC0C9612E14148 +S3154001478080A2200112800A8B01000000C204A168A8 +S3154001479080A0600012800A8701000000D01CE1E081 +S315400147A015151BE81710C8219412A1037FFFFBFFC3 +S315400147B09612E14180A2200312800A820100000084 +S315400147C0C204A16880A0600012800A7E0100000038 +S315400147D0D01D61F015151BE81710C8219412A103CD +S315400147E07FFFFBF29612E14180A220031280000B6B +S315400147F001000000C404A168030000708210601F1C +S3154001480084088001030000108210601080A080019E +S3154001481002800004010000007FFFB2879010200F44 +S31540014820C024A16811151BC01310C8219012210381 +S315400148309212614115351BC01710C8219412A1036C +S315400148407FFFFBED9612E14180A2200212800A55BC +S3154001485003100080C200616880A0600012800A5186 +S315400148600100000011351BC01310C821901221030D +S315400148709212614115151BC01710C8219412A1034C +S315400148807FFFFBDD9612E14180A2200112800A41A1 +S3154001489001000000C204A16880A0600012800A3DA8 +S315400148A00100000090102000921020001520000009 +S315400148B07FFFFBD19610200080A2200012800006C7 +S315400148C001000000C204A16880A0600002800005CA +S315400148D0D01EE1D87FFFB2589010200FD01EE1D8EC +S315400148E07FFFFBC5D41EA1D080A2200212800A25DB +S315400148F001000000C204A16880A0600012800A2164 +S315400149000100000011151BC01310C821901221038C +S315400149109212614115151BE81710C8219412A10383 +S315400149207FFFFBB59612E14180A2200112800A1158 +S3154001493001000000C204A16880A0600012800A0D37 +S315400149400100000011151BE81310C8219012210324 +S315400149509212614115151BC01710C8219412A1036B +S315400149607FFFFBA59612E14180A22002128009FD3C +S3154001497001000000C204A16880A06000128009F90C +S3154001498001000000D41CE1E011151BE81310C821F9 +S31540014990901221037FFFFB989212614180A220036E +S315400149A01280000B01000000C404A16803000070DE +S315400149B08210601F8408800103000010821060107D +S315400149C080A0800102800005D41D61F07FFFB21AEC +S315400149D09010200FD41D61F011151BE81310C8214A +S315400149E0901221037FFFFB849212614180A2200332 +S315400149F01280000B01000000C404A168030000708E +S31540014A008210601F8408800103000010821060102C +S31540014A1080A0800102800005D41DE1B87FFFB20667 +S31540014A209010200FD41DE1B8C024A16811151BE8D0 +S31540014A301310C821901221037FFFFB6F921261412F +S31540014A4080A22002128009BF03100080C200616863 +S31540014A5080A06000128009BB01000000D01DE1B8B2 +S31540014A6015151BE81710C8219412A1037FFFFB629D +S31540014A709612E14180A22001128009B60100000090 +S31540014A80C204A16880A06000128009B20100000042 +S31540014A90D01CE1E015151BE81710C8219412A1039B +S31540014AA07FFFFB559612E14180A220031280000B45 +S31540014AB001000000C404A168030000708210601F59 +S31540014AC084088001030000108210601080A08001DC +S31540014AD002800005D01D61F07FFFB1D79010200FF5 +S31540014AE0D01D61F015151BE81710C8219412A103BA +S31540014AF07FFFFB419612E14180A220031280000B09 +S31540014B0001000000C404A168030000708210601F08 +S31540014B1084088001030000108210601080A080018B +S31540014B2002800004010000007FFFB1C39010200FF6 +S31540014B30C024A168110048EA13048D15901223CDB3 +S31540014B407FFFFB3E9212627880A220011280097992 +S31540014B5003100080C200616880A060001280097560 +S31540014B6001000000110048EA13048D15901223CD6F +S31540014B707FFFFB439212627880A220011280096A6C +S31540014B8001000000C204A16880A06000128009668D +S31540014B9001000000C024A1687FFFFCBA1103C000D8 +S31540014BA023100124A807BFF8BA07BFD090100014FC +S31540014BB09210001D7FFFFA6C94146158C20461582B +S31540014BC0C407BFF880A0800102800E0CA014615872 +S31540014BD07FFFB199901020102D1000809010001485 +S31540014BE09215A1C87FFFFA6094146158C4046158B4 +S31540014BF0C205A1C880A0800122800DF6C40420040C +S31540014C007FFFB18D90102010901000149214E1E0B6 +S31540014C107FFFFA5594146158C4046158C204E1E017 +S31540014C2080A0800102800DE1B214E1E07FFFB182F4 +S31540014C309010201090100014921561F07FFFFA4AEF +S31540014C4094146158C404A168030000708210601F67 +S31540014C5084088001030000108210601080A080014A +S31540014C6002800004010000007FFFB1739010201004 +S31540014C70C024A1687FFFFC8390102000901000148F +S31540014C80921561F07FFFFA3894146158391000800B +S31540014C90C4046158C20721F880A0800122800DBD5D +S31540014CA0C40420047FFFB164901020107FFFFC757F +S31540014CB01103C000901000149215E1B87FFFFA2A43 +S31540014CC094146158C204A1688330600E820860035F +S31540014CD080A0600202800004010000007FFFB156FF +S31540014CE090102010C024A1689010001D921000144D +S31540014CF07FFFFA1D94146158C4046158C207BFF876 +S31540014D0080A0800122800D9AC40420047FFFB14A0D +S31540014D10901020109010001D9215A1C87FFFFA1225 +S31540014D2094146158C4046158C205A1C880A0800189 +S31540014D3022800D84C40420047FFFB13F90102010CF +S31540014D409010001D9214E1E07FFFFA079414615818 +S31540014D50C4046158C204E1E080A0800122800D7044 +S31540014D60C40420047FFFB134901020109010001D20 +S31540014D70921561F07FFFF9FC94146158C404A1684F +S31540014D80030000708210601F840880010300001038 +S31540014D908210601080A080010280000401000000A2 +S31540014DA07FFFB125901020107FFFFC369010200028 +S31540014DB09010001D921561F07FFFF9EB9414615834 +S31540014DC0C4046158C20721F880A0800122800D4D9C +S31540014DD0C40420047FFFB118901020107FFFFC29E6 +S31540014DE01103C0009010001D9215E1B87FFFF9DE56 +S31540014DF094146158C204A1688330600E820860032E +S31540014E0080A0600202800004010000007FFFB10A19 +S31540014E1090102010C024A1689015A1C892100014CA +S31540014E207FFFF9D194146158C4046158C205A1C8E1 +S31540014E3080A0800122800D28C40420047FFFB0FE9B +S31540014E40901020109015A1C89210001D7FFFF9C641 +S31540014E5094146158C4046158C205A1C880A0800158 +S31540014E6022800D12C40420047FFFB0F3901020105D +S31540014E709016E1D8941461587FFFF9BB921000084F +S31540014E80C4046158C206E1D880A0800122800CFC8E +S31540014E90C40420047FFFB0E8901020109016A1D0E2 +S31540014EA0941461587FFFF9B092100008C404615808 +S31540014EB0C206A1D080A0800122800CE6C404200451 +S31540014EC07FFFB0DD901020109016A1D09216E1D848 +S31540014ED07FFFF9A594146158C404A16803000070CA +S31540014EE08210601F84088001030000108210601048 +S31540014EF080A0800102800004010000007FFFB0CE47 +S31540014F00901020107FFFFBDF901020009016A1D05B +S31540014F109216E1D87FFFF99494146158C4046158FC +S31540014F20C20721F880A0800122800CC3C40420045A +S31540014F307FFFB0C1901020107FFFFBD21103C0004C +S31540014F409016E1D8C024A1689216A1D07FFFF986B8 +S31540014F5094146158C4046158C20721F880A08001A5 +S31540014F6022800CA4C40420047FFFB0B3901020100B +S31540014F709015A1C89215E1B87FFFF97B9414615849 +S31540014F80C204A1688330600E8208600380A060027B +S31540014F9002800004010000007FFFB0A7901020109E +S31540014FA0C024A1689014E1E0921000147FFFF96ECD +S31540014FB094146158C4046158C204E1E080A08001A0 +S31540014FC022800C83C40420047FFFB09B90102010E4 +S31540014FD09014E1E09210001D7FFFF963941461582B +S31540014FE0C4046158C204E1E080A0800122800C6FB4 +S31540014FF0C40420047FFFB090901020109014E1E08B +S315400150009215A1C87FFFF95894146158C404615898 +S31540015010C204E1E080A0800122800C5BC40420042C +S315400150207FFFB085901020109014E1E094146158F0 +S315400150307FFFF94D92100008C4046158C204E1E0B3 +S3154001504080A0800122800C47C40420047FFFB07AEF +S31540015050901020109014E1E0921561F07FFFF94223 +S3154001506094146158C404A168030000708210601F43 +S3154001507084088001030000108210601080A0800126 +S3154001508002800004010000007FFFB06B90102010E9 +S31540015090C024A168901561F0921000147FFFF93287 +S315400150A094146158C404A168030000708210601F03 +S315400150B084088001030000108210601080A08001E6 +S315400150C002800004010000007FFFB05B90102010B9 +S315400150D0C024A168901561F09210001D7FFFF9224E +S315400150E094146158C404A168030000708210601FC3 +S315400150F084088001030000108210601080A08001A6 +S3154001510002800004010000007FFFB04B9010201088 +S31540015110C024A168901561F09215A1C87FFFF912CC +S3154001512094146158C404A168030000708210601F82 +S3154001513084088001030000108210601080A0800165 +S3154001514002800004010000007FFFB03B9010201058 +S31540015150C024A168901561F09214E1E07FFFF90245 +S3154001516094146158C404A168030000708210601F42 +S3154001517084088001030000108210601080A0800125 +S3154001518002800005901561F07FFFB02B9010201032 +S31540015190901561F0C024A168941461587FFFF8F21C +S315400151A092100008C404A168030000708210601FB9 +S315400151B084088001030000108210601080A08001E5 +S315400151C002800004010000007FFFB01B90102010F8 +S315400151D0C024A168901561F09215E1B87FFFF8E20D +S315400151E094146158C204A1688330600E820860033A +S315400151F080A0600202800004010000007FFFB00E23 +S31540015200901020107FFFFB1F1103C0000310008088 +S31540015210C024A1688210633010800009B0102000BC +S315400152207FFFB00590102010C207BFC4B006200111 +S3154001523080A6200D0280002282006018852E200360 +S31540015240912E200590220002051000808410A32093 +S31540015250C227BFC490008008932E20011510012457 +S31540015260920240189412A15892026001932A600357 +S315400152707FFFF8BD92008009C207BFC4C600400047 +S31540015280C404000080A0C00232BFFFE6C227BFC4EB +S31540015290C60060040910012488112158C401200464 +S315400152A080A0C00232BFFFDFC227BFC4B0062001C3 +S315400152B080A6200D12BFFFE282006018C204A168D9 +S315400152C080A0600012800BA3010000001110008134 +S315400152D094146158901220587FFFF8A39202200837 +S315400152E00310008082106320C4006148C2046158E3 +S315400152F080A0800102800B86071000807FFFAFCE21 +S315400153009010201011100081941461589012207051 +S315400153107FFFF8959202200809100080C204615867 +S3154001532088112320C401216080A0800122800B695D +S31540015330C40121647FFFAFC090102010111000817D +S3154001534094146158901220887FFFF88792022008B2 +S315400153500310008082106320C4006178C204615842 +S3154001536080A0800102800B4B071000807FFFAFB207 +S3154001537090102010C024A168111000009210200046 +S31540015380150FFC007FFFF94F96102000030FFC001C +S3154001539080A2000102800B3880A260007FFFAFA689 +S315400153A0901020101110000092102000152FFC00C3 +S315400153B07FFFF944961020000310020080A20001ED +S315400153C002800B2680A260007FFFAF9B90102010C9 +S315400153D01130000092102000150FFC007FFFF939B3 +S315400153E0961020000330020080A2000102800B14B7 +S315400153F080A260007FFFAF90901020101130000016 +S3154001540092102000152FFC007FFFF92E96102000E8 +S31540015410032FFC0080A2000102800B0280A26000E3 +S315400154207FFFAF8590102010111000007FFFF92FEC +S31540015430130FE0000310100080A20001128007B68E +S3154001544001000000C204A16880A06000128007B27A +S3154001545001000000111000007FFFF92E130FE0003C +S31540015460030FE00080A20001128007A7010000009F +S31540015470C204A16880A06000128007A30100000059 +S3154001548009100080C024A16890100014941461583A +S315400154907FFFF848921121C0C4046158C206A1D0C9 +S315400154A080A0800122800ACFC40420047FFFAF621E +S315400154B090102011C024A168901000149216E1D8D2 +S315400154C07FFFF83C94146158C4046158C207BFC8B1 +S315400154D080A0800122800ABAC40420047FFFAF560F +S315400154E090102011901000149214E1E07FFFF831E2 +S315400154F094146158C4046158C204E1E080A080015B +S3154001550022800AA6C40420047FFFAF4B90102011CD +S3154001551090100014921561F07FFFF826941461589B +S31540015520C4046158C20721F880A0800122800A8AFA +S31540015530C40420047FFFAF40901020119010001446 +S315400155409215E1B87FFFF81B94146158030000706F +S31540015550C404A168840880010300002080A0800162 +S3154001556002800004010000007FFFAF33901020113C +S31540015570C024A1689010001D921000147FFFF80D01 +S3154001558094146158C4046158C207BFD080A08001F9 +S3154001559022800A68C40420047FFFAF27901020119F +S315400155A0031000809207BFC8901061C07FFFF801C9 +S315400155B094146158C4046158C20721F880A080013F +S315400155C022800A4CC40420047FFFAF1B9010201197 +S315400155D009100080C024A168901121C09216E1D81B +S315400155E07FFFF7F494146158C40461580710008092 +S315400155F0C200E1C080A0800122800A34C404200494 +S315400156007FFFAF0D901020119010001D9214E1E024 +S315400156107FFFF7E894146158C4046158C204E1E07D +S3154001562080A0800122800A20C40420047FFFAF02AB +S31540015630901020079010001D921561F07FFFF7DD55 +S3154001564094146158C404A168030000708210601F5D +S3154001565084088001030000108210601080A0800140 +S3154001566002800004010000007FFFAEF3901020117C +S31540015670C024A1689010001D9215E1B87FFFF7CDB7 +S315400156809414615803000070C404A1688408800121 +S315400156900300002080A08001028000040100000078 +S315400156A07FFFAEE590102011C024A1689016A1D0CD +S315400156B0921000147FFFF7BF94146158C4046158D7 +S315400156C0C206A1D080A08001228009ECC404200436 +S315400156D07FFFAED990102011091000809016A1D0FD +S315400156E0921121C07FFFF7B394146158C4046158E5 +S315400156F0C206E1D880A08001228009D5C4042004D5 +S315400157007FFFAECD901020119015A1C89414615819 +S315400157107FFFF7A892100008C4046158C20721F818 +S3154001572080A08001228009BAC40420047FFFAEC252 +S3154001573090102011C024A1689015A1C89214E1E0EF +S315400157407FFFF79C94146158C4046158C204E1E098 +S3154001575080A08001228009A5C40420047FFFAEB643 +S31540015760901020119015A1C8921561F07FFFF79115 +S3154001577094146158C4046158C20721F880A080017D +S315400157802280098AC40420047FFFAEAB9010201109 +S31540015790C024A1689015A1C89215E1B87FFFF7858D +S315400157A09414615803000070C404A1688408800100 +S315400157B00300002080A08001028000040100000057 +S315400157C07FFFAE9D90102011C024A1689014E1E0A6 +S315400157D0921000147FFFF77794146158C4046158FE +S315400157E0C204E1E080A0800122800967C40420044C +S315400157F07FFFAE91901020119014E1E09210001DB0 +S315400158007FFFF76C94146158C4046158C204E1E007 +S3154001581080A0800122800953C40420047FFFAE8604 +S31540015820901020119014E1E09215A1C87FFFF76115 +S3154001583094146158C4046158C204E1E080A0800117 +S315400158402280093FC40420047FFFAE7B90102011C3 +S315400158509014E1E0941461587FFFF75692100008C6 +S31540015860C4046158C204E1E080A080012280092B72 +S31540015870C40420047FFFAE70901020119014E1E023 +S31540015880921561F07FFFF74B94146158C404615837 +S31540015890C20721F880A080012280090FC404200498 +S315400158A07FFFAE65901020119014E1E09215E1B8AA +S315400158B07FFFF7409414615803000070C404A16847 +S315400158C0840880010300002080A080010280000539 +S315400158D0901561F07FFFAE5890102011901561F040 +S315400158E0921000147FFFF73394146158C404A168E1 +S315400158F0030000708210601F8408800103000010BD +S315400159008210601080A08001028000040100000026 +S315400159107FFFAE4990102011C024A168901561F017 +S315400159209210001D7FFFF72394146158C404A168A7 +S31540015930030000708210601F84088001030000107C +S315400159408210601080A080010280000401000000E6 +S315400159507FFFAE3990102011C024A168901561F0E7 +S315400159609215A1C87FFFF71394146158C404A16826 +S31540015970030000708210601F84088001030000103C +S315400159808210601080A080010280000401000000A6 +S315400159907FFFAE2990102011C024A168901561F0B7 +S315400159A09214E1E07FFFF70394146158C404A1689F +S315400159B0030000708210601F8408800103000010FC +S315400159C08210601080A0800102800005901561F070 +S315400159D07FFFAE1990102011901561F0C024A16887 +S315400159E0941461587FFFF6F392100008C404A1682D +S315400159F0030000708210601F8408800103000010BC +S31540015A008210601080A08001028000040100000025 +S31540015A107FFFAE0990102011C024A168901561F056 +S31540015A209215E1B87FFFF6E39414615803000070C4 +S31540015A30C404A168840880010300002080A080017D +S31540015A4002800005051FC0007FFFADFB90102011AD +S31540015A50051FC0000700C0008410A1028610E0B0F7 +S31540015A60C024A168B007BFE0C43FBFE805203E831C +S31540015A70070021C88410A3FF8610E3A19007BFE861 +S31540015A8092100018C43FBFE07FFFF6CA9407BFD803 +S31540015A90C407BFD8033FFC0080A080010280088074 +S31540015AA0C207BFDC7FFFADE4901020110500400026 +S31540015AB00700C0008410A1028610E0B0C024A1688E +S31540015AC09007BFE8C43FBFE805108683070021C899 +S31540015AD08410A3FF8610E3A1921000189407BFD843 +S31540015AE07FFFF6B4C43FBFE0C207BFDCC407BFD8DF +S31540015AF0809080011280000B03100080C400616811 +S31540015B00030000708210601F8408800103000010AA +S31540015B108210600480A0800102800005050006AF66 +S31540015B207FFFADC590102011050006AF86102010ED +S31540015B30C024A1689007BFE8C43FBFE8050FFC0039 +S31540015B40070281D88410A0408610E10C92100018FB +S31540015B509407BFD87FFFF697C43FBFE0C407BFD8BD +S31540015B60030006AE8210639580A080010280084240 +S31540015B70C407BFDC7FFFADB090102011050006AF12 +S31540015B8086102010C024A1689007BFE8C43FBFE833 +S31540015B90050FFFFF070281D88410A3408610E10C50 +S31540015BA0921000189407BFD87FFFF682C43FBFE02A +S31540015BB0C207BFDCC407BFD8809080011280000BAA +S31540015BC003100080C4006168030000708210601FEA +S31540015BD084088001030000108210600480A08001C7 +S31540015BE002800004010000007FFFAD939010201158 +S31540015BF0C024A168111088007FFFF75A13100100D5 +S31540015C00031066C9821062CA80A20001128005BAD9 +S31540015C1003100080C200616880A06000128005B652 +S31540015C20010000001111BBFE130C70407FFFF74DC0 +S31540015C30901223FF031527CA8210611E80A200011C +S31540015C40128005A901000000C204A16880A060007D +S31540015C50128005A501000000111E607E1310C7FFCA +S31540015C607FFFF740921263FC031D73FC8210633879 +S31540015C7080A200011280059801000000C204A168BB +S31540015C8080A06000128005940100000011002000F0 +S31540015C90130FE0007FFFF7339212600180A22000CC +S31540015CA01280000B01000000C404A16803000070CB +S31540015CB08210601F84088001030000108210600476 +S31540015CC080A0800102800005110FE0007FFFAD5AE0 +S31540015CD090102011110FE000C024A1687FFFF72129 +S31540015CE092100008030FE00080A2000112800576A1 +S31540015CF003100080C200616880A0600012800572B6 +S31540015D000100000011002000130FE0007FFFF7158E +S31540015D109212600180A220001280000B0100000057 +S31540015D20C404A168030000708210601F84088001CA +S31540015D30030000108210600480A0800102800005EB +S31540015D40031000807FFFAD3C9010201103100080AE +S31540015D50C024A168921061C0901000147FFFF6071D +S31540015D6094146158C404615807100080C200E1C010 +S31540015D7080A08001228007B6C40420047FFFAD2E97 +S31540015D8090102012901000149216E1D87FFFF5FB77 +S31540015D9094146158C4046158C206E1D880A08001B8 +S31540015DA0228007A0C40420047FFFAD239010201257 +S31540015DB0901000149214E1E07FFFF5F094146158BD +S31540015DC0C4046158C204E1E080A080012280078CAE +S31540015DD0C40420047FFFAD189010201290100014C7 +S31540015DE0921561F07FFFF5E594146158C40461583A +S31540015DF0C20721F880A0800122800770C4042004D4 +S31540015E007FFFAD0D90102012901000149215E1B84D +S31540015E107FFFF5DA9414615803000070C404A16849 +S31540015E20840880010300002080A0800102800004D4 +S31540015E30010000007FFFAD0090102012C024A16830 +S31540015E409010001D921000147FFFF5CC94146158F8 +S31540015E50C4046158C207BFD080A080012280074E8A +S31540015E60C40420047FFFACF490102012031000807C +S31540015E709216A1D0901061C07FFFF5C0941461586D +S31540015E80C4046158C20721F880A0800122800732EC +S31540015E90C40420047FFFACE890102012C024A168FE +S31540015EA09010001D9214E1E07FFFF5B494146158FF +S31540015EB0C4046158C204E1E080A080012280071D2C +S31540015EC0C40420047FFFACDC901024999010001D7F +S31540015ED0921561F07FFFF5A994146158C404615885 +S31540015EE0C20721F880A0800122800701C404200452 +S31540015EF07FFFACD1901020129010001D9215E1B891 +S31540015F007FFFF59E9414615803000070C404A16894 +S31540015F10840880010300002080A0800102800004E3 +S31540015F20010000007FFFACC490102012C024A1687C +S31540015F309015A1C8921000147FFFF59094146158F2 +S31540015F40C4046158C205A1C880A08001228006DD33 +S31540015F50C40420047FFFACB8901020129015A1C84C +S31540015F609210001D7FFFF58594146158C404615851 +S31540015F70C20721F880A08001228006C2C404200401 +S31540015F807FFFACAD90102012C024A1689015A1C826 +S31540015F909214E1E07FFFF57994146158C404615885 +S31540015FA0C204E1E080A08001228006ADC404200441 +S31540015FB07FFFACA1901020129015A1C8921561F0F7 +S31540015FC07FFFF56E94146158C4046158C20721F8E5 +S31540015FD080A0800122800691C40420047FFFAC96F4 +S31540015FE0901020129015A1C89215E1B87FFFF56374 +S31540015FF09414615803000070C404A16884088001A8 +S315400160000300002080A080010280000401000000FE +S315400160107FFFAC8990102012C024A1689014E1E062 +S31540016020921000147FFFF55594146158C4046158C9 +S31540016030C204E1E080A080012280066FC4042004EE +S315400160407FFFAC7D901020129014E1E09210001D6C +S315400160507FFFF54A94146158C4046158C204E1E0D3 +S3154001606080A080012280065BC40420047FFFAC72BD +S31540016070901020129014E1E09215A1C87FFFF53FE0 +S3154001608094146158C4046158C204E1E080A08001BF +S3154001609022800647C40420047FFFAC67901020127B +S315400160A09014E1E0941461587FFFF5349210000892 +S315400160B0C4046158C204E1E080A080012280063315 +S315400160C0C40420047FFFAC5C901020129014E1E0E0 +S315400160D0921561F07FFFF52994146158C404A168B3 +S315400160E0030000708210601F8408800103000010C5 +S315400160F08210601080A0800102800004010000002F +S315400161007FFFAC4D90102012C024A168901561F01C +S31540016110921000147FFFF51994146158C404A168C4 +S31540016120030000708210601F840880010300001084 +S315400161308210601080A080010280000401000000EE +S315400161407FFFAC3D90102012C024A1689210001D23 +S31540016150901561F07FFFF50994146158C404A16854 +S31540016160030000708210601F840880010300001044 +S315400161708210601080A080010280000401000000AE +S315400161807FFFAC2D90102012C024A168901561F0BC +S315400161909215A1C87FFFF4F994146158C404A1680B +S315400161A0030000708210601F840880010300001004 +S315400161B08210601080A0800102800004010000006E +S315400161C07FFFAC1D90102012C024A168901561F08C +S315400161D09214E1E07FFFF4E994146158C404A16884 +S315400161E0030000708210601F8408800103000010C4 +S315400161F08210601080A0800102800005901561F038 +S315400162007FFFAC0D90102012901561F0C024A1685B +S31540016210941461587FFFF4D992100008C404A16810 +S31540016220030000708210601F840880010300001083 +S315400162308210601080A080010280000401000000ED +S315400162407FFFABFD90102012C024A168901561F02C +S315400162509215E1B87FFFF4C994146158C204A1684C +S315400162608330600E8208600380A0600202800005D0 +S315400162701103C0007FFFABF0901020121103C00044 +S315400162807FFFF70031100080B0162228C024A16894 +S3154001629010800008BA1020007FFFABE79010201253 +S315400162A0BA07600180A7600602800024B006201864 +S315400162B0832F60030910008088112218912F6005F1 +S315400162C0932F6001902200019202401D9001000827 +S315400162D09202600115100124932A60039412A15879 +S315400162E07FFFF4A692010009C4060000C204000023 +S315400162F080A0800112BFFFE907100124C4062004D3 +S315400163008610E158C200E00480A0800112BFFFE37D +S315400163100910008088112168C201000080A0600038 +S3154001632012BFFFDE01000000BA07600180A76006C8 +S3154001633012BFFFE0B0062018111000809414615876 +S31540016340901222A87FFFF48D92022008031000804C +S3154001635082106218C40060A0C204615880A0800106 +S315400163600280057A071000807FFFABB390102012A0 +S31540016370C024A1681110008094146158901222C063 +S315400163807FFFF47E9202200809100080C204615802 +S3154001639088112218C40120B880A080012280055DA1 +S315400163A0C40120BC7FFFABA490102012C024A16879 +S315400163B01110008094146158901222D87FFFF46F17 +S315400163C0920220080310008082106218C40060D037 +S315400163D0C204615880A080010280053E07100080FA +S315400163E07FFFAB9590102012C024A1681110008048 +S315400163F094146158901222F07FFFF46092022008B3 +S3154001640009100080C204615888112218C40120E88D +S3154001641080A0800122800521C40120EC7FFFAB864C +S3154001642090102012C024A168111000809414615864 +S31540016430901223087FFFF451920220080310008036 +S3154001644082106218C4006100C204615880A08001B4 +S3154001645002800502071000807FFFAB779010201263 +S31540016460C024A168111010007FFFF53413100000FD +S315400164700310300080A20001128003B70310008090 +S31540016480C200616880A06000128003B30100000071 +S31540016490111FE000131000007FFFF43D9414615872 +S315400164A0C4046158031FFC0080A08001228004E3DC +S315400164B0C20420047FFFAB609010201B111FE00037 +S315400164C0133000007FFFF43294146158C4046158BC +S315400164D0033FFC0080A08001228004D0C204200436 +S315400164E07FFFAB559010201C111000009210201018 +S315400164F07FFFF4279414615803000070C404A16817 +S31540016500840880010300002080A0800102800004ED +S31540016510010000007FFFAB489010201DC024A168F8 +S3154001652011002000130FC0007FFFF4199414615825 +S31540016530C4046158030E000080A08001228004AF8C +S31540016540C20420047FFFAB3C9010201E111FDFFFC9 +S3154001655013100000901223FF7FFFF40D941461582D +S31540016560C40461580311FFFF821063FF80A08001BC +S3154001657022800499C40420047FFFAB2F9010201F72 +S31540016580111FD000130FF0007FFFF40194146158DE +S31540016590C40461580311FC8080A0800122800486D6 +S315400165A0C20420047FFFAB2490102021111FDFFF7E +S315400165B094146158901223FF7FFFF3F5921000085F +S315400165C0C40461580313FBFF821063FF80A080015E +S315400165D02280046FC40420047FFFAB179010202053 +S315400165E07FFFF6281103C0009007BFC8C024A168E9 +S315400165F07FFFF3F692146158C4046158C207BFC8BD +S3154001660080A0800122800459C40420047FFFAB0A84 +S315400166109010201309100080921461587FFFF3EB0C +S31540016620901121C005100080C200A1C0C404615868 +S3154001663080A0800102800442071000807FFFAAFEED +S31540016640901020139016E1D87FFFF3E09214615821 +S31540016650C4046158C206E1D880A080010280042D9D +S31540016660091000807FFFAAF4901020139016A1D044 +S315400166707FFFF3D692146158C4046158C20721F8CA +S3154001668080A0800122800413C40420047FFFAAEA6B +S3154001669090102013C024A168901561F07FFFF3CBC1 +S315400166A092146158C4046158C20721F880A0800140 +S315400166B0228003F8C40420047FFFAADF9010201330 +S315400166C0C024A1689014E1E07FFFF3C092146158A1 +S315400166D0C204E1E0C404615880A08001228003E441 +S315400166E0C20660047FFFAAD49010201305100C0047 +S315400166F0861020009010001492146158C43FBFF8D0 +S3154001670005300F78070C00088610E0017FFFF3AFD4 +S31540016710C43FBFF0C40461580310040080A0800147 +S31540016720228003CBC20420047FFFAAC3901020130A +S31540016730A607BFF0921461587FFFF3A4901000138F +S31540016740C20721F8C404615880A08001028003B0C9 +S31540016750051000807FFFAAB8901020139015E1B86C +S315400167607FFFF39A92146158C204A1688330600E88 +S315400167708208600380A060020280000401000000DC +S315400167807FFFAAAD90102013C024A1687FFFF47F3C +S315400167901111F2000310E80080A20001128002EB01 +S315400167A003100080C200616880A06000128002E789 +S315400167B0010000007FFFF5B3111000001101F589BA +S315400167C07FFFF472901221E20308E96480A200017E +S315400167D0128002DB01000000C204A16880A06000B3 +S315400167E0128002D7010000007FFFF4681112A2084F +S315400167F00311410080A20001128002CE0100000077 +S31540016800C204A16880A06000128002CA0100000093 +S315400168107FFFF59C11001000901000149215E1B80D +S315400168207FFFF35194146158C404615803100C005E +S3154001683080A080012280036EC20420047FFFAA7ECD +S31540016840901020149015E1B8921000137FFFF34B7E +S3154001685094146158C40461580320000080A080014B +S315400168602280035BC20420047FFFAA739010201488 +S315400168707FFFF38E90102001030FE00080A20001FC +S31540016880128002A901000000C204A16880A0600034 +S31540016890128002A5010000007FFFF37C90102001C9 +S315400168A0030FFC0080A200010280034280A2600027 +S315400168B07FFFAA61901020147FFFF572111010001E +S315400168C0D41EE1D87FFFF3FFD01DE1B8C206A1D0A7 +S315400168D0D024615880A040080280032BD224200492 +S315400168E07FFFAA55901020227FFFF5661110000008 +S315400168F0050FFC0086102000901000149210001322 +S31540016900C43FBFF8050F2800070400808610E0F059 +S31540016910941461587FFFF314C43FBFF0C404615817 +S31540016920030FFC0080A0800122800313C2042004CF +S315400169307FFFAA41901020157FFFF55211200000DC +S31540016940050FFC00861020009010001492100013D1 +S31540016950C43FBFF805001400070000408610E0015F +S31540016960941461587FFFF300C43FBFF0C4046158DB +S31540016970030FFC0080A08001228002FBC204200498 +S315400169807FFFAA2D901020157FFFF53E11300000A4 +S31540016990052FFC0086102000901000149210001361 +S315400169A0C43FBFF805201400070000408610E001EF +S315400169B0941461587FFFF2ECC43FBFF0C4046158A0 +S315400169C0032FFC0080A08001228002E3C204200440 +S315400169D07FFFAA19901020157FFFF52A111000009C +S315400169E0050FFC0086102000901000149215A1C8D6 +S315400169F0C43FBFF87FFFF2DC94146158C404615868 +S31540016A00C205A1C880A08001228002CCC404200412 +S31540016A107FFFAA09901020157FFFF51A112000006B +S31540016A20050FFC0086102000901000149215A1C895 +S31540016A30C43FBFF805001400070000408610E0017E +S31540016A40941461587FFFF2C8C43FBFF0C404615833 +S31540016A50C205A1C880A08001228002B1C4042004DD +S31540016A607FFFA9F5901020157FFFF5061130000034 +S31540016A70052FFC0086102000901000149215A1C825 +S31540016A80C43FBFF805201400070000408610E0010E +S31540016A90941461587FFFF2B4C43FBFF0C205A1C848 +S31540016AA0C404615880A080010280029609100080CA +S31540016AB07FFFA9E1901020157FFFF4F2111000002D +S31540016AC0050FFC008610200190100014921000134F +S31540016AD0C43FBFF805100000861020019414615888 +S31540016AE07FFFF2A6C43FBFF0C40461580310000003 +S31540016AF080A080012280027FC20420047FFFA9CEAC +S31540016B00901020157FFFF4DF112000009010001433 +S31540016B10921000137FFFF29994146158C40461588E +S31540016B200310000080A080012280026EC20420046E +S31540016B307FFFA9C1901020157FFFF4D211300000CC +S31540016B40052FFC00861020019010001492100013AE +S31540016B50C43FBFF87FFFF28994146158C404615859 +S31540016B600330000080A080012280025AC204200422 +S31540016B707FFFA9B1901020157FFFF4C211100000CC +S31540016B80050FFEAE071CD2E88410A1548610E01111 +S31540016B909010001492100013C43FBFF8050FFC0477 +S31540016BA0072F26158410A0128610E23194146158DD +S31540016BB07FFFF280C43FBFF0C4046158030FFEA7B4 +S31540016BC08210629680A080012280023CC404200487 +S31540016BD07FFFA999901020157FFFF4AA112000008C +S31540016BE090100014921000137FFFF27294146158B2 +S31540016BF0C4046158030FFEA78210629680A08001EB +S31540016C0022800228C40420047FFFA98B90102015FE +S31540016C107FFFF49C11300000052FFC04072F261539 +S31540016C208410A0128610E2319010001492100013C5 +S31540016C30C43FBFF07FFFF25F94146158C4046158AA +S31540016C40032FFEA78210629680A080012280020F48 +S31540016C50C40420047FFFA978901020157FFFF48992 +S31540016C601110000005103800861020009010001405 +S31540016C7092100013C43FBFF8051010008610200083 +S31540016C80941461587FFFF24BC43FBFF0C40461586E +S31540016C900310240080A08001228001F8C204200450 +S31540016CA07FFFA965901020157FFFF4761120000023 +S31540016CB090100014921000137FFFF23E9414615815 +S31540016CC0C40461580310240080A08001228001E79A +S31540016CD0C20420047FFFA958901020157FFFF46954 +S31540016CE01130000090100014921000137FFFF23112 +S31540016CF094146158C40461580310240080A0800193 +S31540016D00228001D6C20420047FFFA94B9010201592 +S31540016D107FFFF45C1110000011002000130FE0000A +S31540016D207FFFF3109212600180A22000128001C8F9 +S31540016D30010000007FFFF4531120000011002000E4 +S31540016D40130FE0007FFFF3079212600180A220003B +S31540016D50128001BC010000007FFFF44A113000009F +S31540016D6011002000130FE0007FFFF2FE9212600136 +S31540016D7080A22000128001B0010000007FFFF44193 +S31540016D8011100000050FFC00861020009010001421 +S31540016D90921461587FFFF20DC43FBFF8C404615895 +S31540016DA0C207BFF880A080012280019AC404200452 +S31540016DB07FFFA921901020157FFFF432112000009A +S31540016DC0901000147FFFF20192146158C404615877 +S31540016DD0C207BFF880A0800122800185C404200437 +S31540016DE07FFFA915901020157FFFF4261130000072 +S31540016DF0901000147FFFF1F592146158C404615854 +S31540016E00C207BFF880A0800122800170C40420041B +S31540016E107FFFA909901020157FFFF41A1110000079 +S31540016E202B0FDFFF901563FF7FFFF2D8AA1563FF93 +S31540016E3080A2001502800004010000007FFFA8FE29 +S31540016E40901020157FFFF40F11200000110FDFFF76 +S31540016E507FFFF2CE901223FF030FE00080A20001D4 +S31540016E6002800004010000007FFFA8F39010201566 +S31540016E707FFFF404113000002B0FDFFF901563FFF5 +S31540016E807FFFF2C2AA1563FF80A2001502800004AB +S31540016E90010000007FFFA8E8901020157FFFF3F95D +S31540016EA0901020007FFFF2C190146158C4046158CC +S31540016EB0032FFE0080A0800122800140C2042004ED +S31540016EC07FFFA8DD901020162B1001247FFFF2C111 +S31540016ED090156160C4056160032FF00080A08001B8 +S31540016EE002800004010000007FFFA8D39010201605 +S31540016EF07FFFF2C290156160C4056160030FE00037 +S31540016F0080A0800102800004010000007FFFA8CA22 +S31540016F10901020167FFFF2C990146158C40461583D +S31540016F20030FFBF7821063F080A080012280011CD1 +S31540016F30C40420047FFFA8C0901020169215E1B822 +S31540016F40901000147FFFF19B94146158C204A1680C +S31540016F508330600E8208600780A0600202800005CF +S31540016F60031000807FFFA8B4901020170310008003 +S31540016F70C40061700310004DE40061B8821061B82D +S31540016F8080A0400202800005031000807FFFA8AA6E +S31540016F909010201803100080C200617480A0401236 +S31540016FA002800005031000807FFFA8A390102018DF +S31540016FB003100080C200617880A06000128000F456 +S31540016FC00100000003100080C200617C80A06000C7 +S31540016FD0128000EC010000007FFFF14E010000002D +S31540016FE080A220010280052D01000000050C4029E8 +S31540016FF00723CD1B8410A0068610E09B9010001439 +S31540017000C027BFF0C027BFF4C43FBFF82910008195 +S315400170107FFFF1962B100082AA1560A0A4102000D4 +S31540017020A81520A0AC146158BA10001510800008AC +S31540017030AE1000107FFFA88090102019A404A00470 +S3154001704080A4A400228000172B100084C2050012E0 +S31540017050C224C000901000137FFFF18792100016E2 +S31540017060832CA001C4040000C605400180A0C002D3 +S3154001707012BFFFF182074001C4006004C205E0046B +S3154001708080A0800112BFFFEC01000000A404A0040F +S3154001709080A4A40032BFFFEFC20500122B1000846A +S315400170A0A2146158AA1560A0A4102000AE100015C4 +S315400170B010800008AC1000107FFFA85F9010201AC6 +S315400170C0A404A00880A4A4000280001501000000C9 +S315400170D0C2050012C224C000921000117FFFF13B8D +S315400170E090100013C4054012C204000080A0800124 +S315400170F012BFFFF28205C012C4006004C205A0049B +S3154001710080A0800112BFFFED01000000A404A00889 +S3154001711080A4A40032BFFFF0C205001281C7E00877 +S3154001712081E800007FFFA8449010200F30BFF69AF7 +S315400171307FFFA8419010200F10BFF68C110048EA3E +S315400171407FFFA83D9010200F10BFF646D01DE1B835 +S315400171507FFFA8399010200F10BFF64FD01CE1E0F9 +S315400171607FFFA8359010200F10BFF608D41CE1E030 +S315400171707FFFA8319010200F10BFF5F411151BE8C1 +S315400171807FFFA82D9010200F10BFF5E011151BC0F1 +S315400171907FFFA8299010200F10BFF5C49010200042 +S315400171A07FFFA8259010200F10BFF5B011351BC0E9 +S315400171B07FFFA8219010200F10BFF57AD01CE1E087 +S315400171C07FFFA81D9010200F10BFF583D01D61F0E1 +S315400171D07FFFA8199010200F10BFF565D01DE1B8AB +S315400171E07FFFA8159010200F10BFF53FD41D61F009 +S315400171F07FFFA8119010200F10BFF52ED41CE1E09F +S315400172007FFFA80D9010200F10BFF51A11151BE82E +S315400172107FFFA8099010200F10BFF50611151BC05E +S315400172207FFFA8059010200F10BFF4DA11351BC05F +S315400172307FFFA8019010200F10BFF4E690102000A8 +S315400172407FFFA7FD9010200E30BFF4BF7FFFA7FA46 +S315400172509010200E10BFF4B11128C6AF7FFFA7F6DC +S315400172609010200E10BFF4A11108C6AF7FFFA7F200 +S315400172709010200E10BFF4911128C6AF7FFFA7EEE4 +S315400172809010200E10BFF4822108C6AF7FFFA7EAF7 +S315400172909010200D30BFF4517FFFA7E79010200DCD +S315400172A010BFF444371000807FFFA7E39010200CF5 +S315400172B010BFF3A2271000807FFFA7DF9010200B9D +S315400172C030BFF34F7FFFA7DC9010201110BFFA8F1C +S315400172D0110020007FFFA7D89010201110BFFA6D32 +S315400172E0110020007FFFA7D49010201110BFFA5C37 +S315400172F0111E607E7FFFA7D09010201110BFFA4B60 +S315400173001111BBFE7FFFA7CC9010201010BFF85E75 +S31540017310091000807FFFA7C89010201010BFF84FBA +S31540017320111000007FFFA7C49010201430BFFD5BF1 +S315400173307FFFA7C19010202330BFFD367FFFA7BE38 +S315400173409010202330BFFD297FFFA7BB901020134B +S3154001735030BFFD197FFFA7B89010201210BFFC4E19 +S31540017360111FE00012BFF30A01000000C204A16828 +S3154001737080A0600002BFF3080100000030BFF304A3 +S315400173807FFFA7AD9010201830BFFF147FFFA7AA3B +S315400173909010201810BFFF0D031000800303FF1249 +S315400173A08210604A80A0800112BFFEE39215E1B8C7 +S315400173B010BFFEE59010001480A0600002BFFEC41D +S315400173C02B10012430BFFEBFC207BFFC80A0800145 +S315400173D012BFFE9001000000C204A16880A06000B7 +S315400173E002BFFE8E0100000030BFFE8AC207BFFC0D +S315400173F080A0800112BFFE7B01000000C204A1688B +S3154001740080A0600002BFFE790100000030BFFE751A +S31540017410C207BFFC80A0800112BFFE6601000000CA +S31540017420C204A16880A0600002BFFE6401000000A2 +S3154001743030BFFE607FFFA7809010201530BFFE5001 +S315400174407FFFA77D9010201530BFFE447FFFA77AAE +S315400174509010201530BFFE3880A0600002BFFE2D7F +S315400174600100000030BFFE2980A0600002BFFE1C63 +S315400174700100000030BFFE1880A0600002BFFE0B75 +S315400174800100000030BFFE07032C1B348210603020 +S3154001749080A0800112BFFDF00100000030BFFDF069 +S315400174A0032C1B348210603080A0800112BFFDD7AF +S315400174B00100000030BFFDD7032C1B348210602F22 +S315400174C080A0800112BFFDC30100000030BFFDC393 +S315400174D080A0600312BFFDA70100000030BFFDA7D9 +S315400174E080A0600312BFFD930100000030BFFD93F1 +S315400174F080A0600212BFFD820100000030BFFD8204 +S31540017500C4042004881121C8C201200480A080013E +S3154001751012BFFD680100000030BFFD680710008002 +S315400175208610E1C8C200E00480A0800112BFFD4D73 +S315400175300100000030BFFD4D09100080881121C8AF +S31540017540C201200480A0800112BFFD32010000006B +S3154001755030BFFD3280A0600112BFFD1E0100000058 +S3154001756030BFFD1E80A0600112BFFD060100000074 +S3154001757030BFFD0680A0600002BFFCF001000000A4 +S3154001758030BFFCEC071000808610E1D0C200E00459 +S3154001759080A0400912BFFCD301000000C204A168CB +S315400175A080A0600002BFFCD10100000030BFFCCDCD +S315400175B012BFFCC001000000C204A16880A06000A7 +S315400175C002BFFCBE0100000030BFFCBA80A06000D3 +S315400175D012BFFCA601000000C204A16880A06000A1 +S315400175E002BFFCA40100000030BFFCA080A06000E7 +S315400175F012BFFC9301000000C204A16880A0600094 +S3154001760002BFFC929015E1B830BFFC8D8410A1F801 +S31540017610C200A004C404200480A0800112BFFC4E15 +S3154001762001000000C404A168030000708210601FBD +S3154001763084088001030000108210601080A0800140 +S3154001764012BFFC459015E1B830BFFC4680A06000F2 +S3154001765012BFFC3601000000C204A16880A0600090 +S3154001766002BFFC35A607BFF030BFFC30C40420047E +S3154001767080A0800112BFFC1C03100080C20061681B +S3154001768080A0600002BFFC1B05100C0030BFFC1639 +S3154001769009100080881121F8C201200480A08001D0 +S315400176A012BFFC0603100080C4006168030000702D +S315400176B08210601F84088001030000108210601050 +S315400176C080A0800112BFFBFD0100000030BFFBFD21 +S315400176D0071000808610E1F8C200E00480A0800116 +S315400176E012BFFBEB01000000C404A1680300007057 +S315400176F08210601F84088001030000108210601010 +S3154001770080A0800112BFFBE20100000030BFFBE216 +S31540017710C4042004881121D8C201200480A080011C +S3154001772012BFFBD101000000C204A16880A0600025 +S3154001773002BFFBD09016A1D030BFFBCBC4042004BE +S315400177408610E1C0C200E00480A0800112BFFBBCEC +S3154001775001000000C204A16880A0600002BFFBBB1B +S315400177609016E1D830BFFBB6C207BFCC80A08001DE +S3154001777012BFFBA703100080C200616880A06000B1 +S3154001778002BFFBA60910008030BFFBA103300000F9 +S315400177908210602080A0800112BFFB900100000092 +S315400177A0C204A16880A0600002BFFB8E01000000F8 +S315400177B030BFFB8A80A0600012BFFB7B0100000046 +S315400177C0C204A16880A0600002BFFB7A111FDFFFDF +S315400177D030BFFB750338000080A0800112BFFB67F4 +S315400177E001000000C204A16880A0600002BFFB66E0 +S315400177F0111FD00030BFFB6180A0600012BFFB5259 +S3154001780003100080C200616880A0600002BFFB5186 +S31540017810111FDFFF30BFFB4C80A0600012BFFB3160 +S3154001782001000000C204A16880A0600002BFFB30D5 +S315400178301110000030BFFB2B80A0600012BFFB1E61 +S3154001784001000000C204A16880A0600002BFFB1DC8 +S31540017850111FE00030BFFB18C20420048610E21855 +S31540017860C400E10480A0800112BFFAFC031000802D +S31540017870C4006168030000708210601F84088001A3 +S31540017880030000108210600880A0800112BFFAF345 +S315400178900100000030BFFAF3C204200480A0800139 +S315400178A012BFFADF03100080C40061680300007054 +S315400178B08210601F8408800103000010821060045A +S315400178C080A0800112BFFAD60100000030BFFAD66F +S315400178D0C20420048610E218C400E0D480A08001CE +S315400178E012BFFAC003100080C40061680300007033 +S315400178F08210601F84088001030000108210600816 +S3154001790080A0800112BFFAB70100000030BFFAB76C +S31540017910C204200480A0800112BFFAA30310008094 +S31540017920C4006168030000708210601F84088001F2 +S31540017930030000108210600880A0800112BFFA9AED +S315400179400100000030BFFA9AC20420048610E218F2 +S31540017950C400E0A480A0800112BFFA8401000000A7 +S31540017960C404A168030000708210601F840880016E +S31540017970030000108210600480A0800112BFFA7BD0 +S315400179800100000030BFFA7BC206600480A080017E +S3154001799012BFF9CD01000000C204A16880A06000B9 +S315400179A002BFF9CC9014E1E030BFF9C7C2066004CA +S315400179B080A0800112BFF9B901000000C204A1688C +S315400179C080A0600002BFF9B89014E1E030BFF9B37E +S315400179D0C206600480A0800112BFF9A50100000023 +S315400179E0C204A16880A0600002BFF9A49014E1E03E +S315400179F030BFF99FC206600480A0800112BFF99191 +S31540017A0003100080C200616880A0600002BFF99047 +S31540017A109014E1E030BFF98B071000808610E1F841 +S31540017A20C200E00480A0800112BFF96D0100000090 +S31540017A30C404A168030000708210601F840880019D +S31540017A40030000108210601080A0800112BFF9640B +S31540017A509015A1C810BFF9669215E1B8C206600437 +S31540017A6080A0800112BFF95303100080C2006168F3 +S31540017A7080A0600002BFF9529015A1C830BFF94DF0 +S31540017A8009100080881121F8C201200480A08001DC +S31540017A9012BFF93C01000000C404A1680300007054 +S31540017AA08210601F8408800103000010821060105C +S31540017AB080A0800112BFF9330100000030BFF933C5 +S31540017AC0071000808610E1C8C200E00480A0800152 +S31540017AD012BFF92103100080C200616880A06000D6 +S31540017AE002BFF9209015A1C830BFF91B09100080CB +S31540017AF0881121F8C201200480A0800112BFF8FD3F +S31540017B0001000000C404A168030000708210601FD8 +S31540017B1084088001030000108210601080A080015B +S31540017B2012BFF8F49010001D10BFF8F69215E1B897 +S31540017B30C206600480A0800112BFF8E303100080F2 +S31540017B40C200616880A0600002BFF8E29010001D8B +S31540017B5030BFF8DD071000808610E1F8C200E0046E +S31540017B6080A0800112BFF8CC01000000C404A168C6 +S31540017B70030000708210601F84088001030000101A +S31540017B808210601080A0800112BFF8C3010000007E +S31540017B9030BFF8C3C207BFD480A0800112BFF8B27C +S31540017BA003100080C200616880A0600002BFF8B186 +S31540017BB00310008030BFF8AC09100080881121F80D +S31540017BC0C201200480A0800112BFF88E010000008E +S31540017BD0C404A168030000708210601F84088001FC +S31540017BE0030000108210601080A0800112BFF8854A +S31540017BF09010001410BFF8879215E1B8C2066004D0 +S31540017C0080A0800112BFF87401000000C204A1687F +S31540017C1080A0600002BFF8739010001430BFF86E68 +S31540017C20071000808610E1D8C200E00480A08001E0 +S31540017C3012BFF85E01000000C204A16880A0600086 +S31540017C4002BFF85D9010001430BFF8588810E1C0AB +S31540017C50C201200480A0800112BFF84903100080B0 +S31540017C60C200616880A0600002BFF848901000140D +S31540017C7030BFF84303003A9A8210630F80A0800117 +S31540017C8012BFF7BD03100080C200616880A060008A +S31540017C9002BFF7BC050006AF30BFF7B780A0600052 +S31540017CA012BFF78103100080C400616803000070B1 +S31540017CB08210601F84088001030000108210600852 +S31540017CC080A0800112BFF7780500400010BFF77A07 +S31540017CD00700C00009100080881121F8C201200464 +S31540017CE080A0800112BFF6EF01000000C404A16824 +S31540017CF0030000708210601F840880010300001099 +S31540017D008210601080A0800112BFF6E69014E1E077 +S31540017D1010BFF6E89215E1B8C206600480A0800162 +S31540017D2012BFF6D501000000C204A16880A0600020 +S31540017D3002BFF6D49014E1E030BFF6CFC20660042C +S31540017D4080A0800112BFF6C101000000C204A168F3 +S31540017D5080A0600002BFF6C09014E1E030BFF6BBE0 +S31540017D60C206600480A0800112BFF6AD010000008A +S31540017D70C204A16880A0600002BFF6AC9014E1E0A5 +S31540017D8030BFF6A7C206600480A0800112BFF699F3 +S31540017D9003100080C200616880A0600002BFF698AF +S31540017DA09014E1E030BFF693071000808610E1F8A9 +S31540017DB0C200E00480A0800112BFF67401000000F9 +S31540017DC0C404A168030000708210601F840880010A +S31540017DD0030000108210601080A0800112BFF66B74 +S31540017DE00100000030BFF66BC206600480A080012E +S31540017DF012BFF65B03100080C200616880A060007C +S31540017E0002BFF65A9015A1C830BFF6550910008039 +S31540017E10881121F8C201200480A0800112BFF644D6 +S31540017E2001000000C404A168030000708210601FB5 +S31540017E3084088001030000108210601080A0800138 +S31540017E4012BFF63B0100000030BFF63B0710008031 +S31540017E508610E1D8C200E00480A0800112BFF62955 +S31540017E6001000000C204A16880A0600002BFF6289C +S31540017E709015A1C830BFF623071000808610E1D0C7 +S31540017E80C200E00480A0800112BFF61203100080F8 +S31540017E90C200616880A0600002BFF611091000802F +S31540017EA030BFF60CC206600480A0800112BFF5E027 +S31540017EB001000000C204A16880A0600002BFF5DF96 +S31540017EC09010001D30BFF5DA8810E1C0C2012004D0 +S31540017ED080A0800112BFF5CB03100080C20061680B +S31540017EE080A0600002BFF5CA9010001D30BFF5C5E5 +S31540017EF0071000808610E1F8C200E00480A08001EE +S31540017F0012BFF5B201000000C404A168030000706D +S31540017F108210601F840880010300001082106010E7 +S31540017F2080A0800112BFF5A90910008030BFF5AAD3 +S31540017F30C207BFD480A0800112BFF598031000800C +S31540017F40C200616880A0600002BFF59703100080FF +S31540017F5030BFF59209100080881121F8C201200432 +S31540017F6080A0800112BFF57401000000C404A1681D +S31540017F70030000708210601F840880010300001016 +S31540017F808210601080A0800112BFF56B9010001422 +S31540017F9010BFF56D9215E1B8C206600480A080015C +S31540017FA012BFF55A01000000C204A16880A060001A +S31540017FB002BFF5599010001430BFF554C207BFCC2B +S31540017FC080A0800112BFF54603100080C20061689F +S31540017FD080A0600002BFF5459010001430BFF54007 +S31540017FE0071000808610E1D0C200E00480A0800125 +S31540017FF012BFF52F03100080C400616803000070B2 +S315400180008210601F84088001030000108210600204 +S3154001801080A0800112BFF5260100000030BFF52681 +S3154001802012BFF50001000000C204A16880A06000F3 +S3154001803002BFF4FF1110000030BFF4FA12BFF4EE94 +S3154001804001000000C204A16880A0600002BFF4EDF7 +S315400180501130000030BFF4E812BFF4DC010000002B +S31540018060C204A16880A0600002BFF4DB11300000A9 +S3154001807030BFF4D612BFF4CA03100080C200616853 +S3154001808080A0600002BFF4C91110000030BFF4C4E3 +S31540018090C20420048610E320C400E17C80A0800154 +S315400180A012BFF4B301000000C404A16803000070CC +S315400180B08210601F84088001030000108210600452 +S315400180C080A0800112BFF4AA0100000030BFF4AACB +S315400180D0C204200480A0800112BFF4970100000071 +S315400180E0C404A168030000708210601F84088001E7 +S315400180F0030000108210600480A0800112BFF48E3C +S315400181001110008110BFF49094146158C2042004E8 +S315400181108610E320C400E14C80A0800112BFF478B0 +S3154001812001000000C404A168030000708210601FB2 +S3154001813084088001030000108210600880A080013D +S3154001814012BFF46F1110008110BFF471941461587D +S315400181507FFFA4399010201010BFF45E11100081EA +S31540018160C206600480A0800112BFF3B9010000007D +S31540018170C204A16880A0600002BFF3B89014E1E098 +S3154001818030BFF3B3C206600480A0800112BFF3A5DD +S3154001819001000000C204A16880A0600002BFF3A4F0 +S315400181A09014E1E030BFF39FC206600480A08001D5 +S315400181B012BFF39101000000C204A16880A06000D3 +S315400181C002BFF3909014E1E030BFF38BC206600426 +S315400181D080A0800112BFF37D03100080C200616858 +S315400181E080A0600002BFF37C9014E1E030BFF377DA +S315400181F009100080881121F8C201200480A0800165 +S3154001820012BFF35A03100080C40061680300007076 +S315400182108210601F840880010300001082106010E4 +S3154001822080A0800112BFF3519015A1C810BFF3532E +S315400182309215E1B8071000808610E1F8C200E0040B +S3154001824080A0800112BFF33B0100000030BFF33B29 +S3154001825009100080881121D0C201200480A080012C +S3154001826012BFF31801000000C204A16880A060009B +S3154001827002BFF3179016A1D030BFF312071000804A +S315400182808610E1D8C200E00480A0800112BFF3024B +S3154001829001000000C204A16880A0600002BFF30192 +S315400182A09016A1D030BFF2FC09100080881121C878 +S315400182B0C201200480A0800112BFF2EC010000003F +S315400182C0C204A16880A0600002BFF2EB9016E1D81B +S315400182D030BFF2E6071000808610E1C8C200E00414 +S315400182E080A0800112BFF2D603100080C2006168EF +S315400182F080A0600002BFF2D59015A1C830BFF2D070 +S3154001830009100080881121F8C201200480A0800153 +S3154001831012BFF2B10100000030BFF2B1C2066004E3 +S3154001832080A0800112BFF29001000000C204A16842 +S3154001833080A0600002BFF28F9010001D30BFF28A0C +S31540018340071000808610E1C8C200E00480A08001C9 +S3154001835012BFF27A01000000C204A16880A0600049 +S3154001836002BFF2799010001D30BFF274C207BFFC04 +S3154001837080A0800112BFF26603100080C2006168CE +S3154001838080A0600002BFF2659010001D30BFF26010 +S31540018390881721F8C201200480A0800112BFF24251 +S315400183A00100000030BFF242C4042004C20660044A +S315400183B080A0800112BFF21E01000000C204A16824 +S315400183C080A0600002BFF21D9010001430BFF21869 +S315400183D08615A1C8C200E00480A0800112BFF2093F +S315400183E001000000C204A16880A0600002BFF2083B +S315400183F09010001430BFF203C2042004C407BFFC2E +S3154001840080A0800112BFF1F303100080C2006168B1 +S3154001841080A0600002BFF1F22D10008030BFF1ED67 +S3154001842080A2400112BFEFA201000000C204A16870 +S3154001843080A0600002BFEFA11111FC0030BFEF9C8C +S3154001844080A2400112BFEF9003100080C200616814 +S3154001845080A0600022BFEF8F113C02AF30BFEF8A90 +S3154001846012BFEEDB01000000C204A16880A06000DB +S3154001847002BFEED90100000030BFEED512BFEECCEF +S3154001848001000000C204A16880A0600002BFEECADC +S315400184900100000030BFEEC67FFFA3679010201990 +S315400184A010BFFAD4050C402981D8200081C3E008C9 +S315400184B00100000081D8200082102400C0A04300A2 +S315400184C081C3E00801000000853220109132201856 +S315400184D0900A200F8408A00380A000088260200033 +S315400184E081C3E008900880019DE3BF887FFFEB7A56 +S315400184F09010200C808A20081280000401000000A0 +S3154001850081C7E00891E820007FFFA3449010200E28 +S31540018510C2800320853060188088A00F028000DD6C +S315400185202F100123833060108208600380A060020F +S31540018530028000E0C225E0D880A06003028000FFEF +S3154001854080A06001028000EC2910010C2310010C6F +S315400185502110010C2B10010C2710010C2510010CC8 +S3154001856081D8200081D8200082102400C0A0430079 +S31540018570031000A1051000A0821060008410A00025 +S31540018580873060048610E00188100003C8788000B7 +S315400185908800A004C67900008610200AC6784000EB +S315400185A0C8046000C60420041B00800019080000AE +S315400185B09A13600A993B0004980B0003992B2002F9 +S315400185C098030001DA7B00001B0100001710000030 +S315400185D09813608E973AC004960AC003972AE00220 +S315400185E09602C001D87AC000171C00001901C000CC +S315400185F0893AC0049813208E860900038728E00231 +S315400186008600C001D878C0003B1000A28200600CF1 +S31540018610BA176000873760048610E001C6784000CB +S315400186208213601E86076008C278C000821020004F +S315400186308807600C86100001C67900002D1000A243 +S315400186409A076004AC15A1008735A004B81000163E +S315400186508610E001C67B4000B405A008C27E8000BA +S315400186601B1000C0B605A004861360008330E004E9 +S315400186709810601AD87EC000C02360001B048D1577 +S315400186809A136278DA20E004DA05E0D83310010063 +S315400186909A03600CB21660008605A00CB01020004B +S315400186A0C627BFF8DA27BFFC9010001892102003A6 +S315400186B0C227BFF0C427BFEC40000AB0C827BFF4A9 +S315400186C0DA07BFFC992A000DC607BFF898030019BF +S315400186D0993320049813201ED878C000B006200193 +S315400186E08600E00480A62008C207BFF0C407BFEC9D +S315400186F012BFFFECC807BFF417100020DE05200C9F +S315400187008612E168C822E16809100020D005600898 +S31540018710D804A014DA04E010D2042004D404600082 +S31540018720960BE001972AC008C6212160880A60039A +S315400187308929000A8812C004960B2002972AC00D87 +S315400187409611000B8530A004D620E0209610600ECD +S31540018750D620E0289608BFF0840B20018528800D9D +S31540018760841100028210601EC420E02CC420E01453 +S31540018770050100008410A01EC220E010C420E004C0 +S31540018780F620E00CF420E018F620E02405007641BE +S31540018790031000208410A1C082106000C420E008AC +S315400187A0833060048210601EC220E01C82102100CA +S315400187B0D6A04320C4800320C280432084102001D8 +S315400187C082102200C4A04320C68043208610200088 +S315400187D0C6A04320C4A0032081D820007FFFEABE63 +S315400187E090102000913A200C808A20030280006577 +S315400187F001000000C280032082102100C280432074 +S3154001880082102200C2804320C80420048809200324 +S31540018810C2046000C605200CC4056008D404A01437 +S31540018820D604E010832900019808E0019A0AA001C4 +S31540018830992B00029B2B400B981300019A13000DB4 +S31540018840C803400080A12000028000038813600411 +S3154001885030800000D201000011048D15901222785B +S3154001886080A2400812BFFFFB111000009E08E002E3 +S31540018870D00200009F2BC0029E13C001DE03C00040 +S3154001888080A3C008228000428608E00330800000B1 +S315400188902310010C2110010CC025E0D82B10010C2E +S315400188A02910010C2710010C10BFFF2E2510010CB9 +S315400188B02110010C2910010C2510010C2310010C6B +S315400188C08210203F2B10010C2710010CC2242004DA +S315400188D0C224A014C225200C8210201AC224600092 +S315400188E082102014C22560088210200E10BFFF1D81 +S315400188F0C224E0102510010C2310010C8210203FE8 +S315400189002110010C2B10010C2710010CC225200C43 +S31540018910C224A01482102019C22460008210207F34 +S31540018920C224200482102013C22560088210200D23 +S3154001893010BFFF0CC224E0102110010C2710010CBE +S315400189402310010C8210200F2B10010C2910010C51 +S315400189502510010CC224E010C22420048210201CE0 +S31540018960C224600082102015C22560088210207F33 +S31540018970C225200C8210203F10BFFEFAC224A0144B +S315400189807FFFBDA30100000030BFFF9B8528C002C9 +S3154001899082108001C20040000321D9508210632118 +S315400189A0C2210000C401000080A0800102800003B2 +S315400189B001000000308000008210000D05048D1575 +S315400189C08410A278072AF37B8610E301C43840005D +S315400189D0C4384000C203400080A040090280000321 +S315400189E00100000030800000C4010000032AF37B2F +S315400189F08210630180A0800112BFFFFBC205E0D84F +S31540018A00940AA0038200600C972A800B84102001EF +S31540018A10AE13000B85288001B0102000EE25C00062 +S31540018A20C0A0022092102003C227BFF0C427BFEC8A +S31540018A30400009D290100018C207BFF0912A0001E8 +S31540018A40C606400880A0C01712800008C407BFECC4 +S31540018A50B006200180A6200802800005AE05C002AE +S31540018A6010BFFFF0EE25C00030800000C0A00220FC +S31540018A70AE102003B0102000852DE002C40580020F +S31540018A808608A06080A00003C227BFF0B04000184E +S31540018A90C427BFEC9005FFFD400009B892102003A2 +S31540018AA0C207BFF0C407BFEC872A00018606400310 +S31540018AB08730E0048610E01E8418C0028088BF9F7C +S31540018AC012800009AE05E00180A5E00B32BFFFEC44 +S31540018AD0852DE00280A6200012800004D805200CD6 +S31540018AE03080000030800000C8056008DA042004A8 +S31540018AF0C4046000C604A014C204E010980B20010F +S31540018B009A0B6003892B0004852B40028608E002FC +S31540018B10841100028328C001821080019FC0400059 +S31540018B200100000082102400C0A04300C0A0022022 +S31540018B308210200084072020C607200C8608E060AA +S31540018B4080A00003B80720048240000180A70002EC +S31540018B5032BFFFFBC607200C80A0600822800003BD +S31540018B60C206C00030800000808860400280000458 +S31540018B708088602032800003C20760083080000090 +S31540018B808088602032800003C20680003080000069 +S31540018B9080886020128000030100000030800000C0 +S31540018BA083480000842860808188A000010000007D +S31540018BB00100000001000000D8042004C804600040 +S31540018BC0DA05200CC4056008C604A014C204E010EE +S31540018BD0980B20039A0B6001892B0004852B4002D8 +S31540018BE08608E001841100028328C0018410A00494 +S31540018BF082108001C20040009210200491D02002D0 +S31540018C00010000007FFFE9B490102000913A200C4A +S31540018C10808A200312800005841020007FFFBCFC5F +S31540018C20010000008410200082102200C4A04320CD +S31540018C3086102001C6A04320C4A043200310000093 +S31540018C40C4804380C4A043807FFFBD5E9010200056 +S31540018C5081D8200030BFFE2B9DE3BFA040000822F3 +S31540018C6001000000808A21001280000401000000FA +S31540018C7081C7E00891E820007FFFA18B23100120E6 +S31540018C80912A20047FFFA16590022005A21460006D +S31540018C90C204600480A060000280001A8210200095 +S31540018CA0A010200084044001C8044001C600A0046D +S31540018CB0C200A0089B39201F81836000010000008B +S31540018CC001000000010000008479000380A08001BA +S31540018CD002800004A00420017FFFA15790102001CB +S31540018CE082040010820040108328600284044001FF +S31540018CF0C400A00480A0A00012BFFFEC8404400180 +S31540018D0023100120A2146138C204600480A06000CF +S31540018D100280001982102000A01020008404400126 +S31540018D20C8044001C600A004C200A00881802000FA +S31540018D3001000000010000000100000084710003F1 +S31540018D4080A0800102800004A00420017FFFA13A97 +S31540018D509010200282040010820040108328600295 +S31540018D6084044001C400A00480A0A00012BFFFED0E +S31540018D7084044001400008890100000080A22000CF +S31540018D8012BFFFBC901020037FFFA12BB010200023 +S31540018D9081C7E00881E800009DE3BFA07FFFA142B3 +S31540018DA001000000912A20047FFFA11C90022004AB +S31540018DB0400007CF0100000080A221230280000469 +S31540018DC0010000007FFFA11C90102001400007C652 +S31540018DD001000000808A2100028000292310012021 +S31540018DE0A2146180C204600880A060090280001557 +S31540018DF082102000A010200084044001C6044001D6 +S31540018E00C800A004C200A0088459000380A08001C4 +S31540018E1002800004A00420017FFFA10790102002D8 +S31540018E2082040010820040108328600284044001BD +S31540018E30C400A00880A0A00912BFFFF1840440012C +S31540018E40400007B80100000080A2200002800023F4 +S31540018E5001000000400007B30100000080A220008D +S31540018E6002800016010000004000079F010000003B +S31540018E70808A2200128000040100000081C7E008B8 +S31540018E8091E82000400007F80100000080A2200080 +S31540018E900280001A01000000400007F301000000B3 +S31540018EA080A2200012BFFFF6010000007FFFA0E272 +S31540018EB09010200430BFFFF27FFFA0DF9010200307 +S31540018EC04000078901000000808A220002BFFFECB2 +S31540018ED00100000030BFFFEC7FFFA0D790102003B8 +S31540018EE0400007900100000080A2200012BFFFDF72 +S31540018EF00100000030BFFFF17FFFA0CF901020049A +S31540018F0030BFFFE6000000009DE3BFA094102000A3 +S31540018F10111000639012233C1310006392126340B8 +S31540018F20171000639612E348191000639813234CF7 +S31540018F3093C2000081C240001080019181C2C000ED +S31540018F4081C300001080018E9402A0019402A00109 +S31540018F5080A2A0031280018A01000000874400001C +S31540018F608D30E00E8C89A00780A1A000028000C749 +S31540018F7001000000AF30E00BAE0DE00780A5E00038 +S31540018F80128000C20100000080A1A00212800035BB +S31540018F900100000025100000E41C8000251000009F +S31540018FA029100000A8152104A6100012AA100012CB +S31540018FB0AC100014A1802046A4100000AA100000A5 +S31540018FC001000000A180204EA810210001000000F0 +S31540018FD0A18000000100000001000000E83CA03033 +S31540018FE082A480131280016682A500161280016454 +S31540018FF0010000000100000001000000874400005C +S315400190008D30E00B8C89A0078CA1A0051280015CF4 +S31540019010A1800000010000000100000001000000E5 +S31540019020E81CA03082A500161280015582A5401287 +S31540019030A41000001280015201000000010000004E +S31540019040874400008D30E00B8C89A0078CA1A003DA +S315400190501280014B010000001080008C01000000CD +S3154001906080A1A0011280002325100000E41C80008D +S315400190702510000029100000A8152104A610001291 +S31540019080AA100012AC100014A1802046A4100000C2 +S31540019090AA10000001000000A180204EA810210066 +S315400190A001000000A1800000010000000100000055 +S315400190B001000000E83C800082A480131280013048 +S315400190C082A500161280012E010000000100000059 +S315400190D0874400008D30E00B8C89A0078CA1A0024B +S315400190E01280012701000000108000680100000085 +S315400190F080A1A00312800065A6100000A210200ED8 +S31540019100A1844000A6100000A1800000A814E00040 +S31540019110AB44000001000000AC14E0000100000077 +S31540019120AF44000080A5200012800115AA8D6E0073 +S3154001913080A540001280011280A5A0001280011076 +S31540019140AF35E00BAE0DE00780A5E0011280010CC2 +S3154001915001000000A0100000A1844000A6100000FC +S31540019160A1800000E8180000AC100000AE1000001D +S31540019170EC04C000EE04E00480A500161280010054 +S3154001918080A54017128000FE01000000A5440000A2 +S31540019190A534A00BA40CA00780A4A001128000F85E +S315400191A001000000A0100000A1844000A6100000AC +S315400191B0A1800000A210200AA1844000A410000052 +S315400191C0A1800000E8180000AC100000AE100000BD +S315400191D0EC04C012EE04E00480A50016128000E8FB +S315400191E080A54017128000E601000000A54400005A +S315400191F0A534A00BA40CA00780A4A002068000E021 +S315400192000100000021100120A0142200EC1C0000E6 +S31540019210A0042008E81C0000A1844000A61000001C +S31540019220A1800000A210200EA1844000A4100010CD +S31540019230AC100000AE100000A1800000010000004B +S3154001924001000000EC3C8013AC100000AE100000A1 +S31540019250E81CC01280A50016128000C980A54017DF +S31540019260128000C701000000A5440000A534A00BF0 +S31540019270A40CA00780A4A004128000C10100000034 +S3154001928010800002010000008B4440008A09601FE3 +S3154001929080A160010280000A8C1000059DE3BFA0F9 +S315400192A08AA1600116BFFFFE0100000081E80000AF +S315400192B08CA1A00116BFFFFE0100000001000000C5 +S315400192C001000000A023A080A02C20078E100010D2 +S315400192D0A3480000E2240000C2242004C43C200824 +S315400192E0C83C2010CC3C2018F03C2020F43C2028DF +S315400192F0F83C2030FC3C2038D03C2040D43C20482F +S31540019300D83C2050DC3C2058A5500000E424206085 +S31540019310801020088210200184102002861020032C +S31540019320881020048A1020058C10200681900000A8 +S31540019330A42C601F818C8000010000000100000008 +S3154001934001000000030040408210610184100000CA +S3154001935086100000894440008809201F86100004B9 +S31540019360A010000284004002A210000284004002C4 +S31540019370A410000284004002A610000284004002AC +S31540019380A810000284004002AA1000028400400294 +S31540019390AC10000284004002AE100002840040027C +S315400193A090100002840040029210000284004002A4 +S315400193B0941000028400400296100002840040028C +S315400193C098100002840040029A1000028400400274 +S315400193D09C100002840040029E100002840040025C +S315400193E081E0000086A0E00116BFFFDE010000001B +S315400193F00300404082106101841000008610000481 +S3154001940080A400021280003F8400400280A44002F2 +S315400194101280003C8400400280A480021280003900 +S315400194208400400280A4C0021280003684004002BB +S3154001943080A50002128000338400400280A54002CC +S31540019440128000308400400280A580021280002DE7 +S315400194508400400280A5C0021280002A8400400296 +S3154001946080A20002128000278400400280A24002AE +S31540019470128000248400400280A2800212800021D2 +S315400194808400400280A2C0021280001E8400400275 +S3154001949080A300021280001B8400400280A3400288 +S315400194A0128000188400400280A3800212800015B9 +S315400194B08400400280A3C002128000128400400250 +S315400194C081E0000086A0E00116BFFFCE010000004A +S315400194D080A020001280000B80A0FFFF12800009AF +S315400194E080A160051280000780A1A00612800005B8 +S315400194F001000000A010000710800006C0242020B3 +S31540019500A01000079010200110800002D0242020D6 +S3154001951082100007C40040008188800001000000DD +S315400195200100000001000000C4186008C81860105E +S31540019530CC186018F0186020F4186028F8186030CC +S31540019540FC186038D0186040D4186048D81860506C +S31540019550DC186058E4006060C200600481948000B9 +S31540019560010000000100000001000000A0100007FA +S31540019570F004202081C7E00881E8000010BFFFFC0D +S31540019580B01000000100000081D8200081C3E0082E +S31540019590010000000328000084106004952AA00DF4 +S315400195A0D0204000922270009202400AD2208000D0 +S315400195B081C3E0080100000003100124C40061A436 +S315400195C003100124C2006194852A400286102001BD +S315400195D08328C00182007FFF900A00019000800825 +S315400195E08213C0007FFFE74C9E104000010000003F +S315400195F003100124C40061A403100124C200619434 +S31540019600852A4002861020018328C00182007FFFFF +S31540019610900A0001900080088213C0007FFFE73A5C +S315400196209E104000010000009DE3BFA02D100124C3 +S31540019630C205A198A410001880A0600004800020F3 +S31540019640B01020012F1001242B100124D005E1A4D4 +S3154001965029100124AC15A198AE15E1A4AA1561946F +S31540019660A8152184A0102000A2102000A6102001D8 +S31540019670C2054000832CC00182007FFF820C80011D +S31540019680912C00087FFFE72090020001C2050000EF +S31540019690901A0012820A000180A00001C2058000D2 +S315400196A0A2647FFFA004200180A0401034BFFFF1D7 +S315400196B0D005C00080A00011B0603FFF81C7E0081F +S315400196C081E800009DE3BFA003100124C40061A40A +S315400196D003100124C2006194B32E4002841020017C +S315400196E08328800182007FFF820E00019210001ABA +S315400196F07FFFE70B9006400181C7E00881E8000043 +S315400197009DE3BFA003100124C40061A403100124FA +S31540019710C2006194B32E4002841020018328800147 +S3154001972082007FFF820E00019210001A7FFFE6F849 +S315400197309006400181C7E00881E80000031001243A +S31540019740C400618C03100124C2006188852A40024D +S31540019750861020018328C00182007FFF900A000104 +S31540019760900080088213C0007FFFE6E39E10400010 +S31540019770010000009DE3BFA003100124C400618CD9 +S3154001978003100124C2006188B32E400284102001D7 +S315400197908328800182007FFF820E00019210001A09 +S315400197A07FFFE6D79006400181C7E00881E80000C7 +S315400197B09DE3BFA003100124C400618C0310012462 +S315400197C0C2006188B32E40028410200183288001A3 +S315400197D082007FFF820E00019210001A7FFFE6C4CD +S315400197E09006400181C7E00881E80000031001248A +S315400197F0C400618C03100124C2006188852A40029D +S31540019800861020018328C00182007FFF900A000153 +S31540019810900080088213C0007FFFE6B39E1040008F +S3154001982001000000033FFFBF821063089DE38001F2 +S315400198300310004C82106020C227BFEC0310004C7D +S31540019840821060602F10004CC227BFF4AE15E000B5 +S315400198503510004CEE27BFE8B416A0409010200604 +S315400198607FFF9E6EF427BFF07FFFE69B901020009E +S31540019870213FFFBF920A3FF0A014236890102000B9 +S315400198807FFFE697A0078010230000307FFFE69216 +S3154001989090102000808A001112BFFFFD01000000D8 +S315400198A081D82000230000307FFFE68B90102000F6 +S315400198B0808A001112BFFFFD010000002310012420 +S315400198C07FFFE6859010200013002040A410000879 +S315400198D09212600F921200097FFFE68190102000DC +S315400198E07FFFE67D90102008D02461807FFFE67AD5 +S315400198F09010200C09100124C40461809938A014E9 +S3154001990013100124980B200F8603200AC6212188B3 +S31540019910091001240310012496102400C621218C2C +S31540019920893A20148809200F9401200AD42261948F +S31540019930131001242D100124D0206190D42261A45A +S3154001994015100124932AC004833A2018D222A1A0DB +S315400199501510012482086003820060011B2000006B +S315400199608801200837100124C225A19892012002BE +S31540019970821020019328400992234009D222A184D2 +S315400199801510012487284003913A20109A23400359 +S31540019990992AC00CDA26E19CD822A17CA20A20078A +S315400199A08738A018A93CA00CBA210011A408E003ED +S315400199B08538A010A88D2003AA08A007A404A001F9 +S315400199C0AB284015A3284011AB284015901000172D +S315400199D0AA057FFFA610200002800123B807BFE831 +S315400199E0A6042020030048D182106167C224C0002A +S315400199F003226AF3821061EFC2242024C20C202084 +S31540019A0080A0600102800004010000007FFF9E0AE1 +S31540019A109010201AC20C202180A0602302800004ED +S31540019A20010000007FFF9E049010201BC20C2022E3 +S31540019A3080A0604502800004010000007FFF9DFE7A +S31540019A409010201CC20C202380A060670280000475 +S31540019A50010000007FFF9DF89010201DC20C2024BC +S31540019A6080A0608902800004010000007FFF9DF212 +S31540019A709010201EC20C202580A060AB02800004FD +S31540019A80010000007FFF9DEC9010201FC20C202694 +S31540019A9080A060CD02800004010000007FFF9DE6AA +S31540019AA090102020C20C202780A060EF0280000485 +S31540019AB0010000007FFF9DE090102021C21420206C +S31540019AC0832860108330601080A0612302800004E7 +S31540019AD0010000007FFF9DD890102022C41420224F +S31540019AE08528A010030000118530A01082106167FF +S31540019AF080A0800102800004010000007FFF9DCE0E +S31540019B0090102023C41420248528A010030000228D +S31540019B108530A010821061AB80A0800102800004D4 +S31540019B20010000007FFF9DC490102024C41420260C +S31540019B308528A010030000338530A010821061EF04 +S31540019B4080A0800102800005821020307FFF9DBAEF +S31540019B509010202582102030C22C2020030C08D1E1 +S31540019B6082106167C404C00080A0800102800005A4 +S31540019B70821020317FFF9DB0901020278210203126 +S31540019B80C22C2021030C0C5182106167C404C00011 +S31540019B9080A0800102800005821020327FFF9DA6B1 +S31540019BA09010202882102032C22C2022030C0C4C0B +S31540019BB082106267C404C00080A080010280000553 +S31540019BC0821020337FFF9D9C9010202982102033E4 +S31540019BD0C22C2023030C0C4C82106233C404C000F7 +S31540019BE080A0800102800005821020347FFF9D9273 +S31540019BF09010202A82102034C22C2024030D2AF3EF +S31540019C00821061EFC404202480A0800102800005F7 +S31540019C10821020357FFF9D889010202B82102035A1 +S31540019C20C22C2025030D0D73821061EFC40420243C +S31540019C3080A0800102800005821020367FFF9D7E34 +S31540019C409010202C82102036C22C2026030D0D4D5B +S31540019C50821062EFC404202480A0800102800005A6 +S31540019C60821020377FFF9D749010202D821020375F +S31540019C70C22C2027030D0D4D82106237C4042024C7 +S31540019C8080A0800102800005030000107FFF9D6ACD +S31540019C909010202E0300001082106041C234202013 +S31540019CA00310104C82106233C404C00080A08001AE +S31540019CB002800005030000107FFF9D5F9010202F5A +S31540019CC00300001082106243C23420220310105058 +S31540019CD082106243C404C00080A080010280000556 +S31540019CE0030000117FFF9D549010203003000011A6 +S31540019CF082106045C23420240311114D821062370F +S31540019D00C404202480A080010280000503000011C4 +S31540019D107FFF9D4990102031030000118210624758 +S31540019D20C23420260311115182106247C4042024F3 +S31540019D3080A0800102800004010000007FFF9D3E5B +S31540019D409010203281D82000C205A19880A06000E1 +S31540019D500480001B80A52000251001241910012430 +S31540019D60A414A198981321A48810200080A460000F +S31540019D709B2920100480000C82102000C40300009F +S31540019D8085290002840040028528A0028610400DE4 +S31540019D9082006001C624000280A0401132BFFFF953 +S31540019DA0C4030000C20480008801200180A0400451 +S31540019DB014BFFFF080A4600080A520001280002817 +S31540019DC0230000107FFFE54490102000808A001197 +S31540019DD012BFFFFDC205A19880A060000480001B50 +S31540019DE0010000002510012427100124A414A19884 +S31540019DF0A614E18410800006A2102000A20460018E +S31540019E0080A0401104800011010000009210001151 +S31540019E107FFFFDF890100010C204C000901C00089E +S31540019E20808A000132BFFFF6C20480007FFF9D0297 +S31540019E3090102033C2048000A204600180A040112A +S31540019E4014BFFFF4921000117FFFE523901020000C +S31540019E509212200F7FFFE5229010200081C7E00873 +S31540019E6091E820009FC20000A604E00180A480136F +S31540019E7004800008832CE002D00700019FC2000045 +S31540019E80A604E00180A4801314BFFFFC832CE002EA +S31540019E907FFFE51190102000B616E19C920A3FFC27 +S31540019EA0A8102000901020007FFFE50DB81020007B +S31540019EB0B207BFE810800005A610200080A48013D9 +S31540019EC024800012A8052001921000137FFFFE484E +S31540019ED090100017820A001580A0401512BFFFF8A6 +S31540019EE0A604E001C206C000901DC008900A000108 +S31540019EF080A00008B8673FFF80A4801314BFFFF419 +S31540019F0092100013A805200180A480140480000447 +S31540019F10832D200210BFFFE8EE0640017FFFE4EEED +S31540019F2090102000A6100008901020007FFFE4EC5E +S31540019F309214E00380A72000028001830100000003 +S31540019F40A73CE013808CE0031280018501000000EC +S31540019F5081D82000250000307FFFE4DF90102000EB +S31540019F60808A001212BFFFFDAA100008C205A198FF +S31540019F7080A060000480000F053FFFBF251001242B +S31540019F80A6102000A414A19892100013901000105E +S31540019F907FFFFDDC94102000C2048000A604E0018E +S31540019FA080A0401314BFFFFA92100013053FFFBF74 +S31540019FB0821020008410A36884078002C0204002DA +S31540019FC08200600480A0607C12BFFFFD010000009A +S31540019FD082102005C224000082102001C2242004E0 +S31540019FE082102002C224200882102003C224200CA1 +S31540019FF0901000107FFFFD8DA804200480A2200050 +S3154001A0000280014A01000000C204000080A06005F0 +S3154001A01002800004010000007FFF9C87901020060B +S3154001A0207FFFFD829010001080A2200012800199CE +S3154001A030C205A19880A060000480001201000000C2 +S3154001A04025100124A6102000A414A19892100013F3 +S3154001A050941020007FFFFD9C901000109210001379 +S3154001A060901000147FFFFD9894102000C2048000D8 +S3154001A070A604E00180A0401314BFFFF6921000131E +S3154001A0807FFFE4AB90100010A60420207FFFE4A8D8 +S3154001A090901000137FFFE4A6900420407FFFE4A4C4 +S3154001A0A090042060C205A19880A0600004800180D0 +S3154001A0B0B810200025100124A414A198AE10200048 +S3154001A0C0921000177FFFFD3D90100010C2048000E2 +S3154001A0D0901A200580A00008AE05E001B8673FFF51 +S3154001A0E080A0401714BFFFF89210001780A72000E8 +S3154001A0F00280016F01000000033FFFBF82106368C9 +S3154001A100C41F8001C43FBFA8C207BFA880A0600585 +S3154001A1101280000601000000C207BFAC80A06001AA +S3154001A12002800005C205A1987FFF9C43901020093B +S3154001A130C205A19880A06000048000382510012442 +S3154001A140B8102000A414A198AE1020009210001758 +S3154001A1507FFFFD1A90100014C2048000901A20015E +S3154001A16080A00008AE05E001B8673FFF80A0401718 +S3154001A17014BFFFF89210001780A720011280002714 +S3154001A180833D6013808860031280002A010000002D +S3154001A190C2042004C224000082102005C22400000B +S3154001A1A090102001D024200482102002C2242008CD +S3154001A1B082102003C224200C92100011400003B3E8 +S3154001A1C0912A001DA52A2002032EEEEE821063BBC2 +S3154001A1D0C22400127FFFFD159010001080A22000BE +S3154001A1E01280013701000000C4040012032EEEEE76 +S3154001A1F0A93D600C821063BB80A0800102BFFDFABD +S3154001A200A80D2003901020127FFF9C0BA93D600CE6 +S3154001A21010BFFDF5A80D20037FFF9C079010200A73 +S3154001A220833D60138088600302BFFFDA01000000AE +S3154001A2307FFFE42990102000033FFFF08210603F2A +S3154001A240920A00017FFFE426901020009210200020 +S3154001A25094102000AA07BFA87FFFFD1B9010001590 +S3154001A2607FFFE41D901020000303C00092120001FD +S3154001A2707FFFE41B90102000C205A19880A06000DA +S3154001A2800480000F8210200125100124A81020000F +S3154001A290A414A19892100014901000157FFFFD0A96 +S3154001A2A094102005C2048000A805200180A0401416 +S3154001A2B014BFFFFA9210001482102001C22FBFA8CA +S3154001A2C00300400082106005C407BFA880A080013A +S3154001A2D002800004010000007FFF9BD79010200BF5 +S3154001A2E07FFFE3FD90102000833A20068208600339 +S3154001A2F080A0600102800004010000007FFF9BCE28 +S3154001A3009010200C7FFFE3F4901020000303C0005F +S3154001A31025000030922A00017FFFE3F190102000D2 +S3154001A3207FFFE3ED90102000808A001212BFFFFDEF +S3154001A33092102000941020007FFFFCE3901000153E +S3154001A3407FFFE3E5901020002503C0009212001222 +S3154001A3507FFFE3E3901020007FFFE3DF90102000B2 +S3154001A360808A001202BFFFFDAE100008C205A19807 +S3154001A37080A060000480001025100124B81020013F +S3154001A380B92F0011A414A198B8073FFFA8102000C7 +S3154001A39092100014901000157FFFFCDA9410001CF7 +S3154001A3A0C2048000A805200180A0401414BFFFFA12 +S3154001A3B0921000141303C00090102000922DC00982 +S3154001A3C07FFFE3C72503C0007FFFE3C39010200052 +S3154001A3D0808A001212BFFFFD01000000C407BFA81A +S3154001A3E0030040008210600580A0800102800004C5 +S3154001A3F0010000007FFF9B909010200D7FFFE3B688 +S3154001A40090102000833A20088208600380A06001F2 +S3154001A41002800005841020117FFF9B879010200F3A +S3154001A4208410201186102055901020002500003000 +S3154001A430C43FBFF87FFFE3A801000000033C3FFF94 +S3154001A4400503C0008210633F820A0001901020007C +S3154001A4507FFFE3A3921040027FFFE39F901020000D +S3154001A460808A001212BFFFFDAE07BFF87FFFE3BE31 +S3154001A47090100017C205A19880A060000480000FCB +S3154001A4800100000025100124AA07BFFCA414A198CD +S3154001A490A810200092100014901000157FFFFC8A2E +S3154001A4A094102055C2048000A805200180A04014C4 +S3154001A4B014BFFFFA921000147FFFE3AB9010001710 +S3154001A4C080A220110280008180A260557FFF9B5AA5 +S3154001A4D0901020107FFFE38090102000833A2006E1 +S3154001A4E08208600380A0600102800004A410000875 +S3154001A4F07FFF9B5190102010133C3FF0901020009D +S3154001A5009212603F920C80097FFFE375250000306F +S3154001A5107FFFE37190102000808A001212BFFFFD79 +S3154001A520AA10000830BFFF1B7FFF9B4390102005F8 +S3154001A530C204000080A0600512BFFEB80100000001 +S3154001A54030BFFEB87FFF9B3C90102001A73CE01333 +S3154001A550808CE00302BFFE7F010000007FFFE35EC7 +S3154001A56090102000133FFFF0AA1000089212603F9E +S3154001A570920A00097FFFE35A901020007FFFE2B163 +S3154001A580A810001A0303C000133C3FFF901020009F +S3154001A590921263FC920D4009A61020007FFFE35002 +S3154001A5A09212400192100013901000147FFFFC722A +S3154001A5B094102000A604E00180A4801334BFFFFB61 +S3154001A5C092100013901020001303C0007FFFE34454 +S3154001A5D0921540097FFFE29B010000007FFFE33EA9 +S3154001A5E090102000833A200A8208600380A060010F +S3154001A5F002800005250000307FFF9B0F901020024E +S3154001A600250000307FFFE33490102000808A00123D +S3154001A61012BFFFFD0100000001000000920A3FFC4D +S3154001A6207FFFE32F9010200090100014921020001D +S3154001A6307FFFFC6094102000010000007FFFE326AD +S3154001A64090102000033C3FFF821063FC820A000108 +S3154001A650901020007FFFE32292106003010000006A +S3154001A6607FFFE278010000007FFFE31B901020008E +S3154001A670833A200C8208600380A0600102BFFE3548 +S3154001A680010000007FFF9AEC9010200330BFFE319D +S3154001A6907FFF9AE990102007C205A19880A060002B +S3154001A6A034BFFE692510012430BFFE767FFF9AE252 +S3154001A6B09010200810BFFE92033FFFBF7FFF9ADE36 +S3154001A6C09010201130BFFEC912BFFF81010000006A +S3154001A6D030BFFF819DE3BFA07FFFFC530100000017 +S3154001A6E013002040B01000089212600F7FFFE2FC79 +S3154001A6F09010200081C7E00881E800009DE3BFA0DB +S3154001A7007FFF9ABF1100412C82102007EC062004DE +S3154001A710E0062004C2262008AC0DA003AC05A0012A +S3154001A72001000000C02600007FFF9ABC9010200A5D +S3154001A7300300020084103FFFB8060001C426000151 +S3154001A740A13C2002292AAAAAA00C27FFA81522AAC1 +S3154001A7502B155555A12C2008AA1561558810001CAA +S3154001A760C2060001A8084014AA0840159A10200004 +S3154001A77080A420002280000D9A03600186012020DA +S3154001A7808410000482102000EA208000E820C000E6 +S3154001A790820060108400A04080A0401006BFFFFBED +S3154001A7A08600E0409A03600180A5800D14BFFFF149 +S3154001A7B0880120043B000200AE102000BA17602039 +S3154001A7C0BA06001D80A4200022800017AE05E001D4 +S3154001A7D0A610001CA410001DA2102000C204C00037 +S3154001A7E080A0401502800004010000007FFF9A927C +S3154001A7F090102001C204800080A0401422800005F0 +S3154001A800A20460107FFF9A8C90102001A204601070 +S3154001A810A604E04080A4401006BFFFF1A404A04076 +S3154001A820AE05E00180A5801714BFFFE7BA076004B3 +S3154001A8307FFF9A7A9010200C2F0008001B15555562 +S3154001A840AE060017092AAAAA9A136155881122AAA7 +S3154001A85098100017961020001500020080A42000D1 +S3154001A8602280000D9602E001860320048410000C2C +S3154001A87082102000DA208000C820C00082006002D9 +S3154001A8808400A00880A0401006BFFFFB8600E008B8 +S3154001A8909602E00180A5800B14BFFFF19803000AE0 +S3154001A8A02B155555292AAAAAAA156155A81522AAD2 +S3154001A8B0BA1020003900020080A42000228000172F +S3154001A8C0BA076001A605E004A4100017A2102000F3 +S3154001A8D0C204800080A040150280000401000000EF +S3154001A8E07FFF9A5590102003C204C00080A04014F7 +S3154001A8F022800005A20460027FFF9A4F9010200338 +S3154001A900A2046002A404A00880A4401006BFFFF17F +S3154001A910A604E008BA07600180A5801D14BFFFE7C1 +S3154001A920AE05C01C2F0008001B155555AE15E00499 +S3154001A930092AAAAAAE0600179A136155881122AAB6 +S3154001A94098100017961020001500020080A42000E0 +S3154001A9502280000D9602E00186033FFC8410000C24 +S3154001A96082102000DA208000C820C00082006002E8 +S3154001A9708400A00880A0401006BFFFFB8600E008C7 +S3154001A9809602E00180A5800B14BFFFF19803000AEF +S3154001A9902B155555292AAAAAAA156155A81522AAE1 +S3154001A9A0BA1020003900020080A42000228000173E +S3154001A9B0BA076001A605FFFCA4100017A2102000EB +S3154001A9C0C204800080A040150280000401000000FE +S3154001A9D07FFF9A1990102004C204C00080A0401441 +S3154001A9E022800005A20460027FFF9A139010200482 +S3154001A9F0A2046002A404A00880A4401006BFFFF18F +S3154001AA00A604E008BA07600180A5801D14BFFFE7D0 +S3154001AA10AE05C01C82102005C22620080320000076 +S3154001AA20C226000081C7E00881E80000033FFFBF5E +S3154001AA30821063609DE380017FFFFAD425200000E8 +S3154001AA404000016E2D0000307FFFE2239010200868 +S3154001AA50AA1000087FFFE2209010200C7FFF9A1277 +S3154001AA60AE100008912A20047FFF99EC9002200C39 +S3154001AA7082102001873D60148608E00F8600E00AB7 +S3154001AA80A73D6010A13D6018853DE014A60CE00786 +S3154001AA908408A00FA604E0028400A00AA728401358 +S3154001AAA0A00C2003A93DE010A0042001A80D200719 +S3154001AAB0A12C0003A8052002AA2480108604FFFFCA +S3154001AAC0A9284014A33DE01882053FFFA20C60036C +S3154001AAD0A2046001AA154003A32C4002A4248011BC +S3154001AAE0A41480017FFFE1FC90102000808A0016AB +S3154001AAF012BFFFFD133FFFBF90100011921263C0BA +S3154001AB0015155555920780097FFFE1869412A15587 +S3154001AB1080A220001280007001000000133FFFBF99 +S3154001AB2090100011921263C0152AAAAA92078009B1 +S3154001AB307FFFE1909412A2AA80A2200012800063B6 +S3154001AB40010000007FFF99D801000000912A2004EE +S3154001AB507FFF99B29002200A4000012501000000C2 +S3154001AB60032AAAAA981062AA8210620090100011C4 +S3154001AB70920C8001941000127FFFE1A796100014F9 +S3154001AB8080A220001280004D01000000031555559A +S3154001AB9098106155821061009010001194100012B6 +S3154001ABA0961000147FFFE19C920C800180A2200048 +S3154001ABB01280003F010000007FFF99BB01000000A9 +S3154001ABC0912A20047FFF99959002200B9010001046 +S3154001ABD0131555557FFFE1779212615580A22000EA +S3154001ABE01280002F0100000090100010132AAAAA1B +S3154001ABF07FFFE170921262AA80A220001280002596 +S3154001AC00010000007FFF99A801000000912A20045D +S3154001AC107FFF998290022009901000109210001532 +S3154001AC2094100013172AAAAA7FFFE16E9612E2AA90 +S3154001AC3080A2200012800013010000009010001035 +S3154001AC409210001594100013171555557FFFE165B5 +S3154001AC509612E15580A22000028000040100000006 +S3154001AC607FFF9975901020087FFFFA48B0102000A9 +S3154001AC70400000E20100000081C7E00881E80000D1 +S3154001AC807FFF996D9010200710BFFFEE90100010C6 +S3154001AC907FFF99699010200630BFFFDB7FFF9966E1 +S3154001ACA09010200510BFFFD2901000107FFF9962CF +S3154001ACB09010200430BFFFC17FFF995F90102003A1 +S3154001ACC010BFFFB4031555557FFF995B90102002C5 +S3154001ACD030BFFF9D7FFF99589010200110BFFF9113 +S3154001ACE0133FFFBF81C3E0089144400080800000CC +S3154001ACF0151001209412A1EC9010200092102246CA +S3154001AD0081800000010000000100000001000000F8 +S3154001AD10D00280009122400881C3E0080100000072 +S3154001AD2081800000901020018090200180F0200158 +S3154001AD301280004B010000000100000001000000EC +S3154001AD40010000008090200180F82001128000441B +S3154001AD5001000000010000000100000001000000A8 +S3154001AD608090200180FA3FFF010000001680003CE0 +S3154001AD700100000001000000010000000100000088 +S3154001AD808180000090102001809020010100000088 +S3154001AD9080D0200112800032010000000100000035 +S3154001ADA0010000000100000080D220010280002C39 +S3154001ADB00100000080D23FFF1680002901000000FB +S3154001ADC080DA3FFF9340000080A27FFF128000247B +S3154001ADD00100000080D23FFF934800009332601487 +S3154001ADE0920A600F80A260081280001D01000000D7 +S3154001ADF08180000090102001945220049452A004B6 +S3154001AE009452A00496A2A0401280001501000000B1 +S3154001AE10818000009010200280A000003280001046 +S3154001AE209052000880A220021280000D010000000D +S3154001AE30818000009010200280A0000001000000E7 +S3154001AE40328000079052000880A22002128000043E +S3154001AE500100000081C3E0089010200181C3E00891 +S3154001AE60901000001315555592126155A582400068 +S3154001AE70010000000100000001000000954480002F +S3154001AE8080A2400A1280004301000000923A40002D +S3154001AE90A582400001000000010000000100000001 +S3154001AEA09544800080A2400A1280003A01000000C9 +S3154001AEB01100003F901223FFA58000008180000011 +S3154001AEC001000000010000000100000093F23FFF75 +S3154001AED09A10000993F23FFF93F23FFF93F23FFF2F +S3154001AEE093F23FFF93F23FFF93F23FFF93F23FFF0F +S3154001AEF09940000097448000153FFC009412A00839 +S3154001AF0080A2400A1280002380A2400B12800021B9 +S3154001AF1080A320071280001F113FFF80901220015D +S3154001AF2080A340081280001B1100003F901223FFAE +S3154001AF30A5800000818000000100000001000000A2 +S3154001AF400100000093FA3FFF93FA3FFF93FA3FFF58 +S3154001AF5093FA3FFF93FA3FFF93FA3FFF93FA3FFF7E +S3154001AF6093FA3FFF994000009744800080A2600811 +S3154001AF701280000880A260081280000680A320008B +S3154001AF80128000040100000081C3E00890102001F6 +S3154001AF9081C3E008901000008180000090102002DB +S3154001AFA080A00000328000109072000880A220022A +S3154001AFB01280000D010000008180000090102002E7 +S3154001AFC080A0000001000000328000079072000856 +S3154001AFD080A22002128000040100000081C3E00823 +S3154001AFE09010200181C3E00890100000C0A00040ED +S3154001AFF081C3E00801000000110020409012200F9B +S3154001B000D0A0004081C3E008010000009DE3BFA03D +S3154001B0107FFFE0B190102008A21000087FFFE0AE4C +S3154001B0209010200CA0100008C0A00040833C601482 +S3154001B0308208600F8200600A913C6018900A2003E2 +S3154001B040900220017FFFE01B912A0001833C2014DE +S3154001B0508208600F8200600A913C2018900A200302 +S3154001B060900220017FFFE021912A00017FFFF947ED +S3154001B07001000000110020409012200FD0A0004096 +S3154001B08081C7E00881E8000098120009818200002A +S3154001B0909AAB2FFF0280002598880000992300096A +S3154001B0A09923000999230009992300099923000945 +S3154001B0B09923000999230009992300099923000935 +S3154001B0C09923000999230009992300099923000925 +S3154001B0D09923000999230009992300099923000915 +S3154001B0E09923000999230009992300099923000905 +S3154001B0F099230009992300099923000999230009F5 +S3154001B10099230009992300099923000999230009E4 +S3154001B11099230009992300099923000999230000DD +S3154001B12081C3E00891400000992300099923000951 +S3154001B13099230009992300099923000999230009B4 +S3154001B14099230009992300099923000999230009A4 +S3154001B1509923000999230009992300009B40000087 +S3154001B160992B200C9B33601481C3E0089013400C4B +S3154001B1701080000B8610200080924008168000083F +S3154001B18086100008809240001680000480920000DC +S3154001B1901680000392200009902000089A924000F0 +S3154001B1A0128000059610000891D0200281C3E00864 +S3154001B1B09010000080A2C00D0A80009594100000F6 +S3154001B1C00302000080A2C0010A80002898100000F6 +S3154001B1D080A340011A80000D841020019B2B60043E +S3154001B1E010BFFFFC980320019A83400D1A80000787 +S3154001B1F08400A001832860049B3360019A034001C7 +S3154001B200108000078420A00180A3400B0ABFFFF7EE +S3154001B21001000000028000020100000084A0A0019C +S3154001B22006800076010000009622C00D9410200190 +S3154001B2301080000A01000000952AA0010680000541 +S3154001B2409B3360019622C00D108000049402A00138 +S3154001B2509602C00D9422A00184A0A00116BFFFF75B +S3154001B2608092C000308000659B2B600480A3400B18 +S3154001B27008BFFFFE988320010280006598232001C4 +S3154001B2808092C000952AA0040680002F9B3360015E +S3154001B29096A2C00D068000179B33600196A2C00D91 +S3154001B2A00680000B9B33600196A2C00D0680000507 +S3154001B2B09B33600196A2C00D108000509402A00FEE +S3154001B2C09682C00D1080004D9402A00D9682C00D4D +S3154001B2D0068000059B33600196A2C00D1080004791 +S3154001B2E09402A00B9682C00D108000449402A009DE +S3154001B2F09682C00D0680000B9B33600196A2C00D5D +S3154001B300068000059B33600196A2C00D1080003B6C +S3154001B3109402A0079682C00D108000389402A005C1 +S3154001B3209682C00D068000059B33600196A2C00D32 +S3154001B330108000329402A0039682C00D1080002F27 +S3154001B3409402A0019682C00D068000179B336001CE +S3154001B35096A2C00D0680000B9B33600196A2C00DDC +S3154001B360068000059B33600196A2C00D1080002324 +S3154001B3709402BFFF9682C00D108000209402BFFD4B +S3154001B3809682C00D068000059B33600196A2C00DD2 +S3154001B3901080001A9402BFFB9682C00D10800017E0 +S3154001B3A09402BFF99682C00D0680000B9B33600163 +S3154001B3B096A2C00D068000059B33600196A2C00D82 +S3154001B3C01080000E9402BFF79682C00D1080000BCC +S3154001B3D09402BFF59682C00D068000059B3360013D +S3154001B3E096A2C00D108000059402BFF39682C00D4F +S3154001B3F0108000029402BFF198A3200116BFFFA25C +S3154001B4008092C000268000029602C0098090C0004A +S3154001B410268000029620000B81C3E0089010000BA5 +S3154001B42092100008941020009010200096102000E1 +S3154001B4308213C000400001E39E104000010000005D +S3154001B4409210000803100121D00062A88213C000A7 +S3154001B450400002629E104000010000009210000868 +S3154001B46003100121D00062A88213C00040000003EE +S3154001B4709E104000010000009DE3BFA08410200003 +S3154001B4808206600B80A0601608800004A010201080 +S3154001B490A0087FF88534201F80A400190A80004641 +S3154001B4A08088A0FF1280004401000000400001AFE7 +S3154001B4B09010001880A421F7188000418334200998 +S3154001B4C023100120A214622082044010E400600C83 +S3154001B4D080A480010280010F99342003C604A00490 +S3154001B4E0C404A00CC204A0088608FFFC860480039D +S3154001B4F0C800E00488112001C220A008C820E00449 +S3154001B500C420600C9010001840000192B004A008BD +S3154001B51081C7E00881E80000E6046008E804E00429 +S3154001B520A80D3FFC8225001080A0600F148000D238 +S3154001B53080A40014031001232F100121EA0060FCAE +S3154001B540C205E22CAA05601080A07FFF028000049C +S3154001B550AA054010AA056FFFAA0D700090100018A9 +S3154001B560400001889210001580A23FFF0280000929 +S3154001B570A41000088404C01480A08008088000EC50 +S3154001B5802D10012380A44013028000EAC205A108C0 +S3154001B590C2046008C40060048408BFFC8220801095 +S3154001B5A080A0600F1480012280A40002400001693E +S3154001B5B09010001881C7E00891E8200099342003D3 +S3154001B5C080A060000280000F872B200380A06004CA +S3154001B5D008800092993420069800605B80A0601430 +S3154001B5E008800008872B200380A06054188001132F +S3154001B5F080A061549934200C9803206E872B200338 +S3154001B60023100120A214622086044003E400E00CCA +S3154001B61080A0C0123280000BC404A0041080001028 +S3154001B6209803200136800068C604A00CE404A00CEF +S3154001B63080A0C0122280000A98032001C404A004FD +S3154001B6408408BFFC8220801080A0600F04BFFFF6F3 +S3154001B65080A0600098033FFF980320010710012056 +S3154001B6608610E228E400E00880A0C0122280002A69 +S3154001B670C2046004C404A0048408BFFC8220801074 +S3154001B68080A0600F1480008A80A06000C620E00C74 +S3154001B69016800059C620E00880A0A1FF28800062DC +S3154001B6A08530A0038330A00980A06004188000E99A +S3154001B6B08800605B8930A006880120389B292003D9 +S3154001B6C09A04400DC203600880A0400D32800008F4 +S3154001B6D0C8006004108000E9DA04600480A34001D8 +S3154001B6E022800008C400600CC800600488093FFC41 +S3154001B6F080A080042ABFFFFAC2006008C400600C23 +S3154001B700C424A00CC224A008E420600CE420A008B4 +S3154001B710C2046004853B2002881020018929000269 +S3154001B72080A040042ABFFF7EE6046008808840046A +S3154001B7302280004B980B3FFC952B20039610000C62 +S3154001B7409404400A9A10000AE403600C80A3401254 +S3154001B7503280000BC404A004108000589602E00118 +S3154001B76036800019C604A00CE404A00C80A3401244 +S3154001B770228000529602E001C404A0048408BFFC62 +S3154001B7808220801080A0600F04BFFFF680A0600079 +S3154001B790DA04A00CC804A00884048010A014200177 +S3154001B7A0C8236008DA21200CC420E00CC420E0083C +S3154001B7B0E024A004C2208001C620A0081080001009 +S3154001B7C0C620A00CC204A00884048002C800A004BC +S3154001B7D088112001C220E008C820A004C620600CC0 +S3154001B7E090100018400000DBB004A00881C7E008B3 +S3154001B7F081E8000084048002C200A0048210600136 +S3154001B800C220A00490100018400000D2B004A00845 +S3154001B81081C7E00881E800009803203810BFFF790E +S3154001B820872B20038928A00388044004DA012008D5 +S3154001B830D6046004C824A00CDA24A0088538A002E6 +S3154001B84082102001E423600C83284002E421200871 +S3154001B8508210400B10BFFFB0C22460048929200129 +S3154001B8608088400402BFFFFE9803200410BFFFB446 +S3154001B870952B200338BFFF3103100123E4046008F0 +S3154001B88084048010A014200182106001E024A004E9 +S3154001B890C220A00490100018C4246008400000ADE6 +S3154001B8A0B004A00881C7E00881E800008404801044 +S3154001B8B010BFFFBEA0142001808AE00312BFFFA380 +S3154001B8C09A04A008808B20030280009C8202BFF864 +S3154001B8D0D400600880A2800122BFFFFB98033FFF8E +S3154001B8E0C20460048929200180A1000118BFFF0B11 +S3154001B8F080A1200022BFFF0AE6046008808900017A +S3154001B900228000928929200110BFFF8C9810000BDC +S3154001B9108204A008E400600C80A0401202BFFF50E0 +S3154001B9209803200210BFFEEFC604A004C205A10879 +S3154001B9308205400180A0801202800067C225A108CD +S3154001B940C605E22C80A0FFFF2280006B0310012177 +S3154001B9508204800184204002C425A108848CA0076A +S3154001B9600280000603000004821020088220400263 +S3154001B970A404800182207000AA048015901000184A +S3154001B980AA0D6FFFAA2040154000007E92100015B7 +S3154001B99080A23FFF028000608410200184220012B1 +S3154001B9A0840080158410A001C205A10882054001CA +S3154001B9B0C225A108C424A00480A44013028000101B +S3154001B9C0E424600880A5200F0880003A84053FF4EE +S3154001B9D08408BFF88604C002C804E004880920012F +S3154001B9E088108004C824E00488102005C820E00897 +S3154001B9F080A0A00F18800042C820E0040510012352 +S3154001BA00C600A10080A0400338800002C220A100E8 +S3154001BA1005100123C600A10480A0400338BFFEDD06 +S3154001BA20C220A10410BFFEDCC204600828BFFF95F6 +S3154001BA30E404600830BFFEDE1880001780A065541C +S3154001BA409934200F9803207710BFFEEE872B2003F1 +S3154001BA5080A0601408BFFF1B9B29200380A060546F +S3154001BA601880001780A061548930A00C8801206E8F +S3154001BA7010BFFF149B29200389392002841020011D +S3154001BA808528800484134002C424600410BFFF1D2E +S3154001BA9084100001861023F018BFFEDA9810207E2C +S3154001BAA0993420129803207C10BFFED6872B2003A1 +S3154001BAB08210200110BFFEB7C224A00418800018CE +S3154001BAC080A065548930A00F8801207710BFFEFD04 +S3154001BAD09B2920038088AFFF12BFFF9BC605E22C3E +S3154001BAE0C4046008860540148610E00110BFFFC4F7 +S3154001BAF0C620A00410BFFF9AE420622C9204E008FD +S3154001BB00400000B6901000180310012310BFFFBC7F +S3154001BB10C200610810BFFFA5AA1020009A1023F0A9 +S3154001BB2018BFFEE88810207E8930A0128801207C4B +S3154001BB3010BFFEE49B292003C2046004822840040E +S3154001BB4010BFFF68C224600410BFFF6D9602E00477 +S3154001BB5011100121901222308213C000400003A12E +S3154001BB609E10400001000000111001219012223068 +S3154001BB708213C000400003859E1040000100000072 +S3154001BB809DE3BFA02110012490100019400001A897 +S3154001BB90C02421A880A23FFF02800004C20421A83C +S3154001BBA081C7E00891E8000880A0600002BFFFFD60 +S3154001BBB001000000C226000081C7E00891E80008A4 +S3154001BBC09DE3BFA021100123400003709014213052 +S3154001BBD003100076E20061D0D004614880A22000C3 +S3154001BBE02280003D9004614CC202200480A0601F67 +S3154001BBF01480001E0100000080A620000280001271 +S3154001BC0084006002C4022004820060228600A042B1 +S3154001BC10892860028728E002C2022188F4220004B2 +S3154001BC20F6220003861020018728C00282104003B5 +S3154001BC30C222218880A620020280001982100002B9 +S3154001BC40840060028528A00282006001C22220048D +S3154001BC50F2220002B010200040000362901421300D +S3154001BC6081C7E00881E800007FFFFDFD901021902B +S3154001BC7080A220002280001A90142130C20461481B +S3154001BC80C2220000D0246148C0222004C02221885B +S3154001BC90C022218C10BFFFD982102000C202218C04 +S3154001BCA08610400382100002840060028528A002AB +S3154001BCB0C622218C82006001F2220002C2222004A7 +S3154001BCC0B0102000400003479014213081C7E0089E +S3154001BCD081E8000010BFFFC5D02461484000034100 +S3154001BCE0B0103FFF81C7E00881E800009DE3BFA097 +S3154001BCF07FFFFF9E9010001821100120A0142220E2 +S3154001BD00C2042008E2006004A20C7FFC82046FEFAB +S3154001BD10B2204019B20E7000B206700080A66FFFC5 +S3154001BD2004800009901000187FFFFF9692102000B2 +S3154001BD30C20420088200401180A20001028000074F +S3154001BD4090100018901000187FFFFF82B01020005D +S3154001BD5081C7E00881E800007FFFFF8A9220001931 +S3154001BD6080A23FFF0280000EA2244019C40420088D +S3154001BD70A214600103100123E220A00490100018D0 +S3154001BD80B0102001C4006108B22080197FFFFF7105 +S3154001BD90F220610881C7E00881E800009010001890 +S3154001BDA07FFFFF7892102000C20420088422000100 +S3154001BDB080A0A00F04BFFFE407100121C600E22CBA +S3154001BDC090220003071001238410A001D020E1082E +S3154001BDD010BFFFDDC42060049DE3BFA080A66000C4 +S3154001BDE002800050010000007FFFFF6090100018A4 +S3154001BDF084067FF8D800A004820B3FFE091001207B +S3154001BE008600800188112220DA00E004D60120084C +S3154001BE1080A2C003028000639A0B7FFCDA20E00413 +S3154001BE20808B20011280000E98102000D8067FF8E2 +S3154001BE308420800C8200400CD600A008980120087E +S3154001BE4080A2C00C0280000698102001D400A00CEC +S3154001BE50D422E00C98102000D622A0089600C00DEE +S3154001BE60D602E004808AE0013280000A8610600131 +S3154001BE7080A320000280002D8200400DDA00E008F8 +S3154001BE80C600E00CC623600CDA20E008861060018B +S3154001BE90C220800180A3200012800020C620A00479 +S3154001BEA080A061FF288000308330600387306009BD +S3154001BEB080A0E004188000529800E05B993060064B +S3154001BEC0980320389B2B20039A01000DC603600876 +S3154001BED080A0C00D32800008C800E00410800052E6 +S3154001BEE0DA01200480A3400322800008C200E00C4E +S3154001BEF0C800E00488093FFC80A040042ABFFFFA3D +S3154001BF00C600E008C200E00CC220A00CC620A00872 +S3154001BF10C420E00CC42060087FFFFF0E81E80000CA +S3154001BF2081C7E00881E80000DA00E0081710012027 +S3154001BF309612E22880A3400B32BFFFD3C600E00C25 +S3154001BF40C423600CC4236008C2208001DA20A00803 +S3154001BF5082106001DA20A00CC220A0047FFFFEFD02 +S3154001BF6081E800008728600386010003DA00E008C3 +S3154001BF70C620A00CDA20A008D8012004C423600CF6 +S3154001BF80C420E008833860028410200183288001A0 +S3154001BF9082130001C22120047FFFFEEE81E80000EA +S3154001BFA0808B20011280000982034001D8067FF868 +S3154001BFB08420800CDA00A00CC600A0088200400C48 +S3154001BFC0C6236008DA20E00CC421200886106001EF +S3154001BFD0C620A00405100121C400A22880A0400269 +S3154001BFE00ABFFFCE03100123D20060FC7FFFFF4052 +S3154001BFF0901000187FFFFED781E8000080A0E01472 +S3154001C00008BFFFB29B2B200380A0E0541880000D8F +S3154001C01080A0E1549930600C9803206E10BFFFABAD +S3154001C0209B2B2003993B2002821020018328400C40 +S3154001C03082134001C221200410BFFFB482100003C5 +S3154001C0401880000680A0E5549930600F9803207748 +S3154001C05010BFFF9E9B2B20039A1023F018BFFF9B16 +S3154001C0609810207E993060129803207C10BFFF976C +S3154001C0709B2B20039DE3BFA080A620000280001FCA +S3154001C08003100121E406214880A4A0002280001467 +S3154001C090C206203CC204A004A0807FFF2C80000C75 +S3154001C0A0E4048000A2006001A32C6002A204801176 +S3154001C0B0C20440009FC04000A2047FFCA0843FFF11 +S3154001C0C03CBFFFFDC2044000E404800080A4A00000 +S3154001C0D032BFFFF2C204A004C206203C80A0600029 +S3154001C0E002800004010000009FC04000901000182B +S3154001C0F081C7E00881E8000010BFFFE3F00062A8B5 +S3154001C1009DE3BFA0D206400080A2600002800004E9 +S3154001C110010000007FFFFFFB901000187FFFFF2FFB +S3154001C12081E80000010000009DE3BFA0031001214A +S3154001C130C20062A880A60001028000320100000010 +S3154001C140D206204C80A2600022800016E0062148DB +S3154001C150A2102000E002401180A420002280000BA2 +S3154001C160A204600492100010901000187FFFFF1B7C +S3154001C170E004000080A4200012BFFFFC92100010D2 +S3154001C180D206204CA204600480A4603C32BFFFF377 +S3154001C190E00240117FFFFF1190100018E006214890 +S3154001C1A080A420002280000ED2062054A206214CF3 +S3154001C1B080A400112280000AD20620549210001059 +S3154001C1C0901000187FFFFF05E004000080A4401096 +S3154001C1D012BFFFFC92100010D206205480A26000CC +S3154001C1E022800005C20620387FFFFEFC9010001811 +S3154001C1F0C206203880A0600032800004C206203C7E +S3154001C20081C7E00881E800009FC0400090100018F7 +S3154001C210F20622E080A6600002BFFFFA010000009C +S3154001C2207FFFFFB881E800000100000005100124EE +S3154001C230C200A1AC80A06000228000060310012448 +S3154001C24090004008D020A1AC81C3E00890100001C5 +S3154001C250821061B890004008C220A1ACD020A1ACA8 +S3154001C26081C3E00890100001A7500000AE10000104 +S3154001C2708334E00129100123E805203CA92CC01490 +S3154001C2808215000181E0000081904000010000001C +S3154001C2900100000001000000E03BA000E43BA008D3 +S3154001C2A0E83BA010EC3BA018F03BA020F43BA028B3 +S3154001C2B0F83BA030FC3BA03881E800008210001713 +S3154001C2C081C4400081CC80000100000001000000D3 +S3154001C2D001000000A7500000A92CE0012B1001230A +S3154001C2E0EA05603CAB34C015AA154014819540005F +S3154001C2F001000000010000000100000081E800008B +S3154001C30081E80000E01BA000E41BA008E81BA01088 +S3154001C310EC1BA018F01BA020F41BA028F81BA03092 +S3154001C320FC1BA03881E0000081E0000081C4400090 +S3154001C33081CC8000A750000029100073ADC520783C +S3154001C3400100000027100123A614E01CE024C000D0 +S3154001C350818C202001000000010000000100000046 +S3154001C3609DE3BFA09DE3BFA09DE3BFA09DE3BFA00A +S3154001C3709DE3BFA09DE3BFA09DE3BFA081E8000070 +S3154001C38081E8000081E8000081E8000081E80000C2 +S3154001C39081E8000081E8000027100123A614E01C73 +S3154001C3A0C024C000E203A068A4046004E223A064A0 +S3154001C3B0E423A06810800257AC1000002910012325 +S3154001C3C0A8152000C2252000C8252004E0252010FC +S3154001C3D0E2252014E4252018E825201C81E80000E8 +S3154001C3E08348000082106F008188602001000000B0 +S3154001C3F0010000000100000009100123C801203C92 +S3154001C40081E000008821200180A920FF02800003ED +S3154001C410010000000100000080A1000012BFFFF9E9 +S3154001C4200100000009100123C801203C81E80000F9 +S3154001C43080A920FF028000030100000001000000E6 +S3154001C4408821200180A1000012BFFFF901000000F0 +S3154001C45081E0000029100123A8152000C805200409 +S3154001C460C2052000E0052010E2052014E40520184D +S3154001C470C025201C818C2000010000000100000025 +S3154001C4800100000081C4800081CCA004A0142F00CB +S3154001C490818C000001000000010000000100000045 +S3154001C4A081C4800081CCA00480A660021280000570 +S3154001C4B0A8142F00818D0000B01420203080001F69 +S3154001C4C080A6600312800006A80E2F00AA2C2F001A +S3154001C4D0A8154014818D00003080001880A66004A4 +S3154001C4E012800008A9480000A8152040818D00004F +S3154001C4F00100000001000000010000003080000F33 +S3154001C50080A6600512800008A9480000A82D204099 +S3154001C510818D0000010000000100000001000000C3 +S3154001C5203080000680A660061280000301000000EC +S3154001C53030BFFFA391D0200081C4800081CCA004EC +S3154001C5409210200381C3E00891D02002921020026C +S3154001C55081C3E00891D020029210200681C3E008F1 +S3154001C56091D0200281C3E0080100000081C3E008A8 +S3154001C5700100000081C3E00801000000AE25A010C3 +S3154001C580A75000002D100071AC15A1902910007321 +S3154001C59081C522200100000011100123901220289C +S3154001C5A0D202000092026001D2220000932DE008DF +S3154001C5B0902C2F0092120009111001239012202075 +S3154001C5C0D002000080A000082280000292126F0073 +S3154001C5D0818A602001000000010000000100000086 +S3154001C5E090100017400000379203A06092142F006C +S3154001C5F0818A602001000000010000000100000066 +S3154001C6001110012390122028D202000092226001CB +S3154001C610D222000010800222AC1000009DE3BFA090 +S3154001C6201B100123892E60029A1361A480A6601F04 +S3154001C6308210200014800017C6034004B32E600404 +S3154001C6401910012380A0E000981322240280000DD6 +S3154001C6508406400C80A0C0021280000682100003AE +S3154001C6601080000EC206400C2280000CC206400C0F +S3154001C670C200600C80A0600012BFFFFC80A0800158 +S3154001C680C4234004F026400CC620A00C8210200092 +S3154001C69081C7E00891E80001F026400C81C7E00817 +S3154001C6A091E80001912A200203100123821061A41E +S3154001C6B0C4004008C422600C81C3E008D22040086F +S3154001C6C09DE3BFA0051001238210A02CC200600487 +S3154001C6D080A0401822800040C400A02C80A62000E3 +S3154001C6E022800002B0100001A32E20020310012374 +S3154001C6F0821061A4E000401180A420000280003431 +S3154001C700291001242D1001242B1001242710012466 +S3154001C710A8152024AC15A0A8AA1560AC1080001D50 +S3154001C720A614E028A41000138400A001C42480119B +S3154001C730C405800080A0A00022800006D204200803 +S3154001C7409FC0800001000000C2040000D2042008FE +S3154001C750901000189FC0400094100019C205400077 +S3154001C76080A0600022800005C20480119FC0400065 +S3154001C77001000000C204801182007FFFC2248011A3 +S3154001C780E004200C80A4200002800011010000007A +S3154001C790C204000080A0600022BFFFFBE004200C21 +S3154001C7A0C405000080A0A00012BFFFDFC404C01171 +S3154001C7B080A0A00002BFFFDDA4100013E004200CFE +S3154001C7C080A4200032BFFFF4C204000081C7E00804 +S3154001C7D081E80000F000A0C010BFFFC1B00E201FCD +S3154001C7E08C10000FA74800008B34E0188A09600FAF +S3154001C7F080A160030280000C0B1001238A11603472 +S3154001C8000920000088112070C82140000B10012327 +S3154001C8108A1160500920000088112040C82140003B +S3154001C820108000399010200192102006400001D25C +S3154001C8300100000080A000080280003301000000D2 +S3154001C840C2022010113FFC0082084008110003FC7F +S3154001C8508410400890100002921020019410200C80 +S3154001C860400001DB0100000080A000080280002694 +S3154001C87001000000400001EB921000010B10012362 +S3154001C8808A116034D221400090100002921020019A +S3154001C89094102011400001CE0100000080A0000844 +S3154001C8A00280001901000000400001DE92100001E3 +S3154001C8B0920260100B1001238A116050D221400070 +S3154001C8C090100002921020019410200D400001C0EA +S3154001C8D00100000080A000080280000B010000005A +S3154001C8E0400001D0921000010B1001238A11602CE7 +S3154001C8F0D2214000D40260109532A010940AA00FB4 +S3154001C900D42160049E10000681C3E00801000000A6 +S3154001C91003100123821060488210200191D020002B +S3154001C92081C3E008010000009DE3BFA0031001247C +S3154001C930C20060B48410001880A060000280000626 +S3154001C940B0102000901000029FC0400092100019C4 +S3154001C950B010000881C7E00881E800009DE3BFA050 +S3154001C96003100124C20060B880A060000280000567 +S3154001C970841020009FC040009010001884100008C9 +S3154001C98081C7E00891E800029DE3BFA0031001249E +S3154001C990C20060C080A060000280000584102000B3 +S3154001C9A09FC04000901000188410000881C7E0081D +S3154001C9B091E800029DE3BFA003100124C20060BCC0 +S3154001C9C080A0600002800005841020009FC04000C6 +S3154001C9D0901000188410000881C7E00891E8000211 +S3154001C9E09DE3BFA003100124C20060C480A0600083 +S3154001C9F002800005841020009FC04000901000185E +S3154001CA008410000881C7E00891E800029DE3BFA0B9 +S3154001CA1003100124C20060C880A0600002800005A6 +S3154001CA20841020009FC04000901000188410000818 +S3154001CA3081C7E00891E800029DE3BFA003100124ED +S3154001CA40C20060CC80A060000280000584102000F6 +S3154001CA509FC04000901000188410000881C7E0086C +S3154001CA6091E800029DE3BFA003100124C20060D0FB +S3154001CA708410001880A0600002800006B0102000DB +S3154001CA80901000029FC0400092100019B01000089B S3154001CA9081C7E00881E80000010000000310007230 S3154001CAA0821063689FC0400001000000031000002F S3154001CAB0821060008198400003100072821063EC7E @@ -7343,7 +7343,7 @@ S3154001CAC09FC04000010000000310007282106358AD S3154001CAD09FC04000010000008B4800008B31601868 S3154001CAE08A09600380A160031280000701000000EB S3154001CAF08B4440008B31601C80A1400012800006AF -S3154001CB00010000007FFFFF31010000007FFF919788 +S3154001CB00010000007FFFFF37010000007FFF91A376 S3154001CB10010000009C23A0407FFF913A01000000E4 S3154001CB208210200191D0200001000000290000045C S3154001CB30A68C001432800003A02C001491D0200052 @@ -7351,100 +7351,847 @@ S3154001CB40818C00000100000001000000010000008E S3154001CB5081C4800081CCA00481C3E00801000000AB S3154001CB6081C1E00801000000A74800008B34E018AD S3154001CB708A09600380A16003128000080100000059 -S3154001CB8021100143A0142044A2102003E2240000F6 -S3154001CB908B4440001080000821100143A01420441A +S3154001CB8021100123A0142044A2102003E224000016 +S3154001CB908B4440001080000821100123A01420443A S3154001CBA0A2102002E224000021200000E6042024F5 -S3154001CBB08B34E0148A09601F27100143A614E03C18 -S3154001CBC0CA24C0008A01600127100143A614E03837 -S3154001CBD0CA24C00027100143A614E0408A216002FE +S3154001CBB08B34E0148A09601F27100123A614E03C38 +S3154001CBC0CA24C0008A01600127100123A614E03857 +S3154001CBD0CA24C00027100123A614E0408A2160021E S3154001CBE0CA24C00081C3E0080100000081C3E008F7 S3154001CBF0010000008348000083306018820860030A S3154001CC0080A06003128000060100000083444000BA S3154001CC100500000882284002A380400088100000D9 -S3154001CC200910007281C1229C010000009DE3BF985A -S3154001CC30031000741B100074A01060F09A1360F08A -S3154001CC4080A4000D1A800010A210000D108000066D -S3154001CC50C204000080A400111A80000B01000000EC -S3154001CC60C204000080A0600002BFFFFBA0042004B4 -S3154001CC709FC040000100000080A400112ABFFFFAB6 -S3154001CC80C204000081C7E00881E80000AA27A0B0DD -S3154001CC90E0256060E2256064E4256068C225607431 -S3154001CCA0C43D6078C83D6080CC3D608885400000C9 -S3154001CCB0C425606CF03D6090F43D6098F83D60A0FD -S3154001CCC0FC3D60A8A8102001A92D0010808D0013FD -S3154001CCD002800013010000008534E0010710014382 -S3154001CCE0C600E03CA72CC0038414C0028408A0FF00 -S3154001CCF081E000008190A000E03BA000E43BA00859 -S3154001CD00E83BA010EC3BA018F03BA020F43BA02848 -S3154001CD10F83BA030FC3BA03881E8000081C5A00863 -S3154001CD209C100015051001438410A1A0C400800089 -S3154001CD3080A0800002800004010000009FC08000A6 -S3154001CD409203A060818C200082102002832840102B -S3154001CD5005100143C400A0388530400282104002CC -S3154001CD608550000080888001028000208328A00130 -S3154001CD7007100143C600E03C853080038210400223 -S3154001CD80820860FF81906000C203A06C81806000D0 -S3154001CD90F01BA090F41BA098F81BA0A0FC1BA0A818 -S3154001CDA0C203A074C41BA078C81BA080CC1BA0885A -S3154001CDB0E003A060E203A064E403A06881E8000008 -S3154001CDC0E01BA000E41BA008E81BA010EC1BA01868 -S3154001CDD0F01BA020F41BA028F81BA030FC1BA03898 -S3154001CDE01080000F81E00000C203A06C81806000CA -S3154001CDF0F01BA090F41BA098F81BA0A0FC1BA0A8B8 -S3154001CE00C203A074C41BA078C81BA080CC1BA088F9 -S3154001CE10E003A060E203A064E403A068818C2000E3 -S3154001CE2001000000010000000100000081C4400033 -S3154001CE3081CC8000AA27A0B0C2256074C43D607829 -S3154001CE40C83D6080CC3D608885400000C425606C4B -S3154001CE50A8102001A92D0010808D00130280001317 -S3154001CE60010000008534E00107100143C600E03CA3 -S3154001CE70A72CC0038414C0028408A0FF81E00000EF -S3154001CE808190A000E03BA000E43BA008E83BA01055 -S3154001CE90EC3BA018F03BA020F43BA028F83BA03087 -S3154001CEA0FC3BA03881E8000081C5A0089C10001514 -S3154001CEB0051001438410A1A0C400800080A0800019 -S3154001CEC002800004010000009FC080009203A06020 -S3154001CED0818C2000821020028328401005100143D6 -S3154001CEE0C400A038853040028210400285500000BF -S3154001CEF080888001028000198328A0010710014320 -S3154001CF00C600E03C8530800382104002820860FF03 -S3154001CF1081906000C203A06C81806000C203A0744E -S3154001CF20C41BA078C81BA080CC1BA08881E8000048 -S3154001CF30E01BA000E41BA008E81BA010EC1BA018F6 -S3154001CF40F01BA020F41BA028F81BA030FC1BA03826 -S3154001CF501080000881E00000C203A06C818060005F -S3154001CF60C203A074C41BA078C81BA080CC1BA08898 -S3154001CF70818C20000100000001000000010000003A -S3154001CF8081C4400081CC8000821000089A1038008C -S3154001CF9096102000912AE00598034008D4034008E2 -S3154001CFA09132A01880A20001328000089602E00169 -S3154001CFB09132A00C900A2FFF80A20009028000073F -S3154001CFC09410000C9602E00180A2E00728BFFFF30F -S3154001CFD0912AE0059410200081C3E0089010000AD0 -S3154001CFE08210000898102000912B20039A004008D7 -S3154001CFF0D60040089132E01880A20009328000082C -S3154001D000980320019132E00C900A2FFF80A2000A7A -S3154001D010028000079610000D9803200180A3200F7F -S3154001D02028BFFFF3912B20039610200081C3E0080F -S3154001D0309010000BD4022004173FFC00920A400BCB -S3154001D040900A800B9132200C921240081100003F49 -S3154001D050901223F0940A8008952AA0049412800B1A -S3154001D060920A400A81C3E008901000099DE3BF98E7 -S3154001D07003100074821060D8DA007FFC80A37FFF22 -S3154001D08002800009A0007FFC8210000D9FC0400075 -S3154001D090A0043FFCC204000080A07FFF12BFFFFC3A -S3154001D0A00100000081C7E00881E800009DE3BF98C8 -S3154001D0B081C7E00881E80000000000000000000090 -S3154001D0C00000000000000000000000000000000019 -S3154001D0D000000002FFFFFFFF00000000000000000B -S3154001D0E000000002FFFFFFFF0000000000000000FB -S3154001D0F040080000000000003CD203AF9EE75616F0 -S3154001D1003E7AD7F29ABCAF48400506A80000000017 -S3154001D110430000009DE3BFA07FFF8FF701000000A1 -S3154001D1207FFFFFD30100000081C7E00881E80000CE -S3154001D1309DE3BFA07FFF8FD20100000081C7E008B9 -S3154001D14081E800000000000000000000000000002F -S315400200000000000100000000000000004001D0E8AE +S3154001CC200910007281C1229C010000009DE3BFA052 +S3154001CC302110007623100076A0142170A214617091 +S3154001CC4080A400111A80000B01000000D0040000EE +S3154001CC5080A2200002800004A00420049FC200009C +S3154001CC600100000080A400112ABFFFFAD004000091 +S3154001CC7081C7E00881E80000AA27A0B0E0256060EE +S3154001CC80E2256064E4256068C2256074C43D60782D +S3154001CC90C83D6080CC3D608885400000C425606CFD +S3154001CCA0F03D6090F43D6098F83D60A0FC3D60A881 +S3154001CCB0A8102001A92D0010808D001302800013B9 +S3154001CCC0010000008534E00107100123C600E03C65 +S3154001CCD0A72CC0038414C0028408A0FF81E0000091 +S3154001CCE08190A000E03BA000E43BA008E83BA010F7 +S3154001CCF0EC3BA018F03BA020F43BA028F83BA03029 +S3154001CD00FC3BA03881E8000081C5A0089C100015B5 +S3154001CD10051001248410A0B0C400800080A08000CA +S3154001CD2002800004010000009FC080009203A060C1 +S3154001CD30818C200082102002832840100510012397 +S3154001CD40C400A03885304002821040028550000060 +S3154001CD5080888001028000208328A00107100123DA +S3154001CD60C600E03C8530800382104002820860FFA5 +S3154001CD7081906000C203A06C81806000F01BA0908E +S3154001CD80F41BA098F81BA0A0FC1BA0A8C203A0748A +S3154001CD90C41BA078C81BA080CC1BA088E003A06060 +S3154001CDA0E203A064E403A06881E80000E01BA00060 +S3154001CDB0E41BA008E81BA010EC1BA018F01BA02048 +S3154001CDC0F41BA028F81BA030FC1BA0381080000FD4 +S3154001CDD081E00000C203A06C81806000F01BA0903E +S3154001CDE0F41BA098F81BA0A0FC1BA0A8C203A0742A +S3154001CDF0C41BA078C81BA080CC1BA088E003A06000 +S3154001CE00E203A064E403A068818C200001000000D5 +S3154001CE10010000000100000081C4400081CC800077 +S3154001CE20AA27A0B0C2256074C43D6078C83D608021 +S3154001CE30CC3D608885400000C425606CA810200167 +S3154001CE40A92D0010808D00130280001301000000FF +S3154001CE508534E00107100123C600E03CA72CC0033E +S3154001CE608414C0028408A0FF81E000008190A000E4 +S3154001CE70E03BA000E43BA008E83BA010EC3BA01837 +S3154001CE80F03BA020F43BA028F83BA030FC3BA03867 +S3154001CE9081E8000081C5A0089C10001505100124F9 +S3154001CEA08410A0B0C400800080A0800002800004ED +S3154001CEB0010000009FC080009203A060818C200089 +S3154001CEC0821020028328401005100123C400A03897 +S3154001CED085304002821040028550000080888001E2 +S3154001CEE0028000198328A00107100123C600E03CF7 +S3154001CEF08530800382104002820860FF8190600085 +S3154001CF00C203A06C81806000C203A074C41BA078D8 +S3154001CF10C81BA080CC1BA08881E80000E01BA000B4 +S3154001CF20E41BA008E81BA010EC1BA018F01BA020D6 +S3154001CF30F41BA028F81BA030FC1BA0381080000869 +S3154001CF4081E00000C203A06C81806000C203A0742E +S3154001CF50C41BA078C81BA080CC1BA088818C200054 +S3154001CF6001000000010000000100000081C44000F2 +S3154001CF7081CC8000821000089A103800961020005B +S3154001CF80912AE00598034008D40340089132A0183D +S3154001CF9080A20001328000089602E0019132A00C85 +S3154001CFA0900A2FFF80A20009028000079410000C0E +S3154001CFB09602E00180A2E00728BFFFF3912AE0052F +S3154001CFC09410200081C3E0089010000A82100008E6 +S3154001CFD098102000912B20039A004008D600400863 +S3154001CFE09132E01880A2000932800008980320019E +S3154001CFF09132E00C900A2FFF80A2000A02800007BE +S3154001D0009610000D9803200180A3200F28BFFFF33F +S3154001D010912B20039610200081C3E0089010000B4D +S3154001D020D4022004173FFC00920A400B900A800B61 +S3154001D0309132200C921240081100003F901223F0C9 +S3154001D040940A8008952AA0049412800B920A400AF9 +S3154001D05081C3E008901000099DE3BFA0211000762E +S3154001D060A0142158C2043FFC80A07FFF0280000823 +S3154001D070A0043FFC9FC04000A0043FFCC204000046 +S3154001D08080A07FFF12BFFFFC0100000081C7E008BE +S3154001D09081E800009DE3BFA081C7E00881E8000068 +S3154001D0A00000001000000000017A5200047C0F01CC +S3154001D0B01B0C0E000000001000000018FFFE40DCB3 +S3154001D0C00000000800000000000000140000002CD1 +S3154001D0D0FFFE40D00000004000410D1E2D090F1FEC +S3154001D0E00000001000000044FFFE40F80000001C54 +S3154001D0F0000000000000001000000058FFFE410043 +S3154001D1000000001C00000000000000100000006C40 +S3154001D110FFFE41080000001C000000000000001056 +S3154001D12000000080FFFE41100000001C00000000CE +S3154001D1300000001400000094FFFE41180000002C7E +S3154001D14000410D1E2D090F1F00000018000000AC04 +S3154001D150FFFE41780000004000410D1E2D46090F9B +S3154001D1601F00000000000018000000C8FFFE419C9F +S3154001D1700000022400410D1E2D46090F1F0000002C +S3154001D18000000018000000E4FFFE43A40000023442 +S3154001D19000410D1E2D47090F1F0000000000001819 +S3154001D1A000000100FFFE45BC0000003C00410D1E91 +S3154001D1B02D43090F1F000000000000180000011C4C +S3154001D1C0FFFE45DC0000003C00410D1E2D43090FCA +S3154001D1D01F0000000000001800000138FFFF2E2448 +S3154001D1E00000024800410D1E2D5D090F1F00000081 +S3154001D1F00000001400000154FFFF3050000006906B +S3154001D20000410D1E2D090F1F000000180000016C82 +S3154001D210FFFF36C80000002800410D1E2D49090FA9 +S3154001D2201F0000000000001800000188FFFF36D4EF +S3154001D2300000002400410D1E2D48090F1F0000006B +S3154001D24000000018000001A4FFFF36DC0000009832 +S3154001D25000410D1E2D44090F1F000000000000185B +S3154001D260000001C0FFFF3758000000FC00410D1EC1 +S3154001D2702D46090F1F00000000000018000001DCC8 +S3154001D280FFFF3838000000C400410D1E2D47090F2D +S3154001D2901F00000000000018000001F8FFFF38E001 +S3154001D2A00000015000410D1E2D6E090F1F000000A8 +S3154001D2B00000001800000214FFFF3A140000047039 +S3154001D2C000410D1E2D44090F1F00000000000018EB +S3154001D2D000000230FFFF3E680000013400410D1E90 +S3154001D2E02D4A090F1F000000000000180000024CE3 +S3154001D2F0FFFF3F800000012400410D1E2D49090F0B +S3154001D3001F0000000000001800000268FFFF40886F +S3154001D310000000B800410D1E2D4A090F1F000000F4 +S3154001D3200000001800000284FFFF4124000000A015 +S3154001D33000410D1E2D48090F1F000000000000107E +S3154001D340000002A0FFFF41A80000001800000000F5 +S3154001D35000000014000002B4FFFF41AC000002705F +S3154001D36000410D1E2D090F1F00000014000002CCC4 +S3154001D370FFFF44040000040C00410D1E2D090F1F40 +S3154001D38000000014000002E4FFFF47F800000124FA +S3154001D39000410D1E2D090F1F00000014000002FC64 +S3154001D3A0FFFF49040000039400410D1E2D090F1F84 +S3154001D3B00000001000000314FFFF4C800000002C09 +S3154001D3C0000000000000001000000328FFFF4C98F9 +S3154001D3D00000002400000000000000100000033C93 +S3154001D3E0FFFF4CA8000000180000000000000018D4 +S3154001D3F000000350FFFF4CAC0000017C00410D1EB4 +S3154001D4002D42090F1F000000000000180000036CA8 +S3154001D410FFFF4E0C0000058000410D1E2D46090FF1 +S3154001D4201F0000000000001800000388FFFF537032 +S3154001D4300000051800410D1E2D43090F1F00000075 +S3154001D44000000014000003A4FFFF586C0000010C0B +S3154001D45000410D1E2D090F1F00000010000003BCE6 +S3154001D460FFFF596000000018000000000000001492 +S3154001D470000003D0FFFF59640000020800410D1E61 +S3154001D4802D090F1F00000014000003E8FFFF6A0486 +S3154001D4900000461800410D1E2D090F1F0000001007 +S3154001D4A000000400FFFFB0040000000C0000000073 +S3154001D4B00000001000000414FFFFAFFC0000001440 +S3154001D4C0000000000000001000000428FFFFAFFC30 +S3154001D4D00000002000000000000000140000043C91 +S3154001D4E0FFFFB0080000077000410D1E2D090F1FF8 +S3154001D4F00000001000000454FFFFC0900000000C23 +S3154001D500000000000000001000000468FFFFC08812 +S3154001D5100000002400000000000000100000047C10 +S3154001D520FFFFC09800000038000000000000001016 +S3154001D53000000490FFFFC0BC00000038000000005E +S3154001D54000000018000004A4FFFFC0E00000009C9A +S3154001D55000410D1E2D56090F1F0000000000001846 +S3154001D560000004C0FFFFC1600000003C00410D1EE9 +S3154001D5702D4A090F1F00000000000018000004DCBE +S3154001D580FFFFC1800000003C00410D1E2D4A090FDE +S3154001D5901F00000000000010000004F8FFFFC1A0BA +S3154001D5A00000003800000000000000180000050CD3 +S3154001D5B0FFFFC1C40000003C00410D1E2D4A090F6A +S3154001D5C01F0000000000001800000528FFFFC1E40D +S3154001D5D00000003C00410D1E2D4A090F1F000000AE +S3154001D5E00000001000000544FFFFC204000000389F +S3154001D5F0000000000000001800000558FFFFC22887 +S3154001D60000000EB000430D1E2D4C090F1F000000F7 +S3154001D6100000001400000574FFFFD0BC0000002884 +S3154001D62000410D1E2D090F1F000000140000058C3E +S3154001D630FFFFD0CC0000033000410D1E2D090F1F06 +S3154001D64000000014000005A4FFFFD3E4000002B867 +S3154001D65000430D1E2D090F1F00000010000005BCE0 +S3154001D660FFFFD98C0000000C0000000000000010F4 +S3154001D670000005D0FFFFD98400000014000000001F +S3154001D68000000014000005E4FFFFD9840000007C7F +S3154001D69000410D1E2D090F1F00000010000005FC62 +S3154001D6A0FFFFDD80000000200000000000000010A8 +S3154001D6B000000610FFFFDD8C0000001C000000008A +S3154001D6C00000001000000624FFFFDD940000001C4E +S3154001D6D0000000000000001800000638FFFFDD9C36 +S3154001D6E0000006D800410D1E2D4C090F1F000000F9 +S3154001D6F00000001000000654FFFFE4580000001827 +S3154001D700000000000000001000000668FFFFE45C16 +S3154001D7100000001800000000000000180000067C10 +S3154001D720FFFFE4600000004000410D1E2D42090F3D +S3154001D7301F0000000000001800000698FFFFE48467 +S3154001D7400000012C00410D1E2D41090F1F00000054 +S3154001D75000000014000006B4FFFFE594000000EC51 +S3154001D76000410D1E2D090F1F00000018000006CCB8 +S3154001D770FFFFE6680000029C00410D1E2D43090F84 +S3154001D7801F00000000000018000006E8FFFFE8E85F +S3154001D7900000008C00410D1E2D4F090F1F00000097 +S3154001D7A00000001800000704FFFFE95800000028A8 +S3154001D7B000410D1E2D44090F1F00000000000018F6 +S3154001D7C000000720FFFFE9640000010400410D1E2F +S3154001D7D02D45090F1F000000000000100000073C06 +S3154001D7E0FFFFEA4C0000003C00000000000000186A +S3154001D7F000000750FFFFEE280000008800410D1E83 +S3154001D8002D52090F1F000000000000100000076C98 +S3154001D810FFFFEE940000001C00000000000000180D +S3154001D82000000780FFFFEE9C0000012000410D1E15 +S3154001D8302D58090F1F000000000000100000079C32 +S3154001D840FFFFF0D8000000100000000000000018A3 +S3154001D850000007B0FFFFF0D40000003400410D1E68 +S3154001D8602D47090F1F00000000000018000007CCDB +S3154001D870FFFFF0EC0000002C00410D1E2D45090F65 +S3154001D8801F00000000000018000007E8FFFFF0FC41 +S3154001D8900000002C00410D1E2D45090F1F00000000 +S3154001D8A00000001800000804FFFFF10C0000002CE6 +S3154001D8B000410D1E2D45090F1F00000000000018F4 +S3154001D8C000000820FFFFF11C0000002C00410D1E46 +S3154001D8D02D45090F1F000000000000180000083CFC +S3154001D8E0FFFFF12C0000002C00410D1E2D45090FB4 +S3154001D8F01F0000000000001800000858FFFFF13C1F +S3154001D9000000002C00410D1E2D45090F1F0000008F +S3154001D9100000001800000874FFFFF14C00000034BD +S3154001D92000410D1E2D47090F1F0000000000001881 +S3154001D93000000890FFFFF2F80000004C00410D1E68 +S3154001D9402D47090F1F0000000000000000000000E5 +S3154001D95000000002FFFFFFFF000000000000000082 +S3154001D96000000002FFFFFFFF000000000000000072 +S3154001D970343074693934612B30796769797530355A +S3154001D9807968617035796934682B612B6969797871 +S3154001D9906869346B35396A30713930356A6B6F79FC +S3154001D9A070686F70746A72686961346979302B3452 +S3154001D9B000000000000000004008000000000000D8 +S3154001D9C03CD203AF9EE756163E7AD7F29ABCAF4891 +S3154001D9D0400486B000000000430000000000000043 +S3154001D9E09DE3BFA07FFF8DD1010000007FFFFD9B1E +S3154001D9F00100000081C7E00881E800009DE3BFA067 +S3154001DA007FFF8D9F0100000081C7E00881E800008B +S3154001DA1000000000000000000000000000000000BF +S3154001DA2000000000000000000000000000000000AF +S3154001DA30000000000000000000000000000000009F +S3154001DA40000000000000000000000000000000008F +S3154001DA50000000000000000000000000000000007F +S3154001DA60000000000000000000000000000000006F +S3154001DA70000000000000000000000000000000005F +S3154001DA80000000000000000000000000000000004F +S3154001DA90000000000000000000000000000000003F +S3154001DAA0000000000000000000000000000000002F +S3154001DAB0000000000000000000000000000000001F +S3154001DAC0000000000000000000000000000000000F +S3154001DAD000000000000000000000000000000000FF +S3154001DAE000000000000000000000000000000000EF +S3154001DAF000000000000000000000000000000000DF +S3154001DB0000000000000000000000000000000000CE +S3154001DB1000000000000000000000000000000000BE +S3154001DB2000000000000000000000000000000000AE +S3154001DB30000000000000000000000000000000009E +S3154001DB40000000000000000000000000000000008E +S3154001DB50000000000000000000000000000000007E +S3154001DB60000000000000000000000000000000006E +S3154001DB70000000000000000000000000000000005E +S3154001DB80000000000000000000000000000000004E +S3154001DB90000000000000000000000000000000003E +S3154001DBA0000000000000000000000000000000002E +S3154001DBB0000000000000000000000000000000001E +S3154001DBC0000000000000000000000000000000000E +S3154001DBD000000000000000000000000000000000FE +S3154001DBE000000000000000000000000000000000EE +S3154001DBF000000000000000000000000000000000DE +S3154001DC0000000000000000000000000000000000CD +S3154001DC1000000000000000000000000000000000BD +S3154001DC2000000000000000000000000000000000AD +S3154001DC30000000000000000000000000000000009D +S3154001DC40000000000000000000000000000000008D +S3154001DC50000000000000000000000000000000007D +S3154001DC60000000000000000000000000000000006D +S3154001DC70000000000000000000000000000000005D +S3154001DC80000000000000000000000000000000004D +S3154001DC90000000000000000000000000000000003D +S3154001DCA0000000000000000000000000000000002D +S3154001DCB0000000000000000000000000000000001D +S3154001DCC0000000000000000000000000000000000D +S3154001DCD000000000000000000000000000000000FD +S3154001DCE000000000000000000000000000000000ED +S3154001DCF000000000000000000000000000000000DD +S3154001DD0000000000000000000000000000000000CC +S3154001DD1000000000000000000000000000000000BC +S3154001DD2000000000000000000000000000000000AC +S3154001DD30000000000000000000000000000000009C +S3154001DD40000000000000000000000000000000008C +S3154001DD50000000000000000000000000000000007C +S3154001DD60000000000000000000000000000000006C +S3154001DD70000000000000000000000000000000005C +S3154001DD80000000000000000000000000000000004C +S3154001DD90000000000000000000000000000000003C +S3154001DDA0000000000000000000000000000000002C +S3154001DDB0000000000000000000000000000000001C +S3154001DDC0000000000000000000000000000000000C +S3154001DDD000000000000000000000000000000000FC +S3154001DDE000000000000000000000000000000000EC +S3154001DDF000000000000000000000000000000000DC +S3154001DE0000000000000000000000000000000000CB +S3154001DE1000000000000000000000000000000000BB +S3154001DE2000000000000000000000000000000000AB +S3154001DE30000000000000000000000000000000009B +S3154001DE40000000000000000000000000000000008B +S3154001DE50000000000000000000000000000000007B +S3154001DE60000000000000000000000000000000006B +S3154001DE70000000000000000000000000000000005B +S3154001DE80000000000000000000000000000000004B +S3154001DE90000000000000000000000000000000003B +S3154001DEA0000000000000000000000000000000002B +S3154001DEB0000000000000000000000000000000001B +S3154001DEC0000000000000000000000000000000000B +S3154001DED000000000000000000000000000000000FB +S3154001DEE000000000000000000000000000000000EB +S3154001DEF000000000000000000000000000000000DB +S3154001DF0000000000000000000000000000000000CA +S3154001DF1000000000000000000000000000000000BA +S3154001DF2000000000000000000000000000000000AA +S3154001DF30000000000000000000000000000000009A +S3154001DF40000000000000000000000000000000008A +S3154001DF50000000000000000000000000000000007A +S3154001DF60000000000000000000000000000000006A +S3154001DF70000000000000000000000000000000005A +S3154001DF80000000000000000000000000000000004A +S3154001DF90000000000000000000000000000000003A +S3154001DFA0000000000000000000000000000000002A +S3154001DFB0000000000000000000000000000000001A +S3154001DFC0000000000000000000000000000000000A +S3154001DFD000000000000000000000000000000000FA +S3154001DFE000000000000000000000000000000000EA +S3154001DFF000000000000000000000000000000000DA +S3154001E00000000000000000000000000000000000C9 +S3154001E01000000000000000000000000000000000B9 +S3154001E02000000000000000000000000000000000A9 +S3154001E0300000000000000000000000000000000099 +S3154001E0400000000000000000000000000000000089 +S3154001E0500000000000000000000000000000000079 +S3154001E0600000000000000000000000000000000069 +S3154001E0700000000000000000000000000000000059 +S3154001E0800000000000000000000000000000000049 +S3154001E0900000000000000000000000000000000039 +S3154001E0A00000000000000000000000000000000029 +S3154001E0B00000000000000000000000000000000019 +S3154001E0C00000000000000000000000000000000009 +S3154001E0D000000000000000000000000000000000F9 +S3154001E0E000000000000000000000000000000000E9 +S3154001E0F000000000000000000000000000000000D9 +S3154001E10000000000000000000000000000000000C8 +S3154001E11000000000000000000000000000000000B8 +S3154001E12000000000000000000000000000000000A8 +S3154001E1300000000000000000000000000000000098 +S3154001E1400000000000000000000000000000000088 +S3154001E1500000000000000000000000000000000078 +S3154001E1600000000000000000000000000000000068 +S3154001E1700000000000000000000000000000000058 +S3154001E1800000000000000000000000000000000048 +S3154001E1900000000000000000000000000000000038 +S3154001E1A00000000000000000000000000000000028 +S3154001E1B00000000000000000000000000000000018 +S3154001E1C00000000000000000000000000000000008 +S3154001E1D000000000000000000000000000000000F8 +S3154001E1E000000000000000000000000000000000E8 +S3154001E1F000000000000000000000000000000000D8 +S3154001E20000000000000000000000000000000000C7 +S3154001E21000000000000000000000000000000000B7 +S3154001E22000000000000000000000000000000000A7 +S3154001E2300000000000000000000000000000000097 +S3154001E2400000000000000000000000000000000087 +S3154001E2500000000000000000000000000000000077 +S3154001E2600000000000000000000000000000000067 +S3154001E2700000000000000000000000000000000057 +S3154001E2800000000000000000000000000000000047 +S3154001E2900000000000000000000000000000000037 +S3154001E2A00000000000000000000000000000000027 +S3154001E2B00000000000000000000000000000000017 +S3154001E2C00000000000000000000000000000000007 +S3154001E2D000000000000000000000000000000000F7 +S3154001E2E000000000000000000000000000000000E7 +S3154001E2F000000000000000000000000000000000D7 +S3154001E30000000000000000000000000000000000C6 +S3154001E31000000000000000000000000000000000B6 +S3154001E32000000000000000000000000000000000A6 +S3154001E3300000000000000000000000000000000096 +S3154001E3400000000000000000000000000000000086 +S3154001E3500000000000000000000000000000000076 +S3154001E3600000000000000000000000000000000066 +S3154001E3700000000000000000000000000000000056 +S3154001E3800000000000000000000000000000000046 +S3154001E3900000000000000000000000000000000036 +S3154001E3A00000000000000000000000000000000026 +S3154001E3B00000000000000000000000000000000016 +S3154001E3C00000000000000000000000000000000006 +S3154001E3D000000000000000000000000000000000F6 +S3154001E3E000000000000000000000000000000000E6 +S3154001E3F000000000000000000000000000000000D6 +S3154001E40000000000000000000000000000000000C5 +S3154001E41000000000000000000000000000000000B5 +S3154001E42000000000000000000000000000000000A5 +S3154001E4300000000000000000000000000000000095 +S3154001E4400000000000000000000000000000000085 +S3154001E4500000000000000000000000000000000075 +S3154001E4600000000000000000000000000000000065 +S3154001E4700000000000000000000000000000000055 +S3154001E4800000000000000000000000000000000045 +S3154001E4900000000000000000000000000000000035 +S3154001E4A00000000000000000000000000000000025 +S3154001E4B00000000000000000000000000000000015 +S3154001E4C00000000000000000000000000000000005 +S3154001E4D000000000000000000000000000000000F5 +S3154001E4E000000000000000000000000000000000E5 +S3154001E4F000000000000000000000000000000000D5 +S3154001E50000000000000000000000000000000000C4 +S3154001E51000000000000000000000000000000000B4 +S3154001E52000000000000000000000000000000000A4 +S3154001E5300000000000000000000000000000000094 +S3154001E5400000000000000000000000000000000084 +S3154001E5500000000000000000000000000000000074 +S3154001E5600000000000000000000000000000000064 +S3154001E5700000000000000000000000000000000054 +S3154001E5800000000000000000000000000000000044 +S3154001E5900000000000000000000000000000000034 +S3154001E5A00000000000000000000000000000000024 +S3154001E5B00000000000000000000000000000000014 +S3154001E5C00000000000000000000000000000000004 +S3154001E5D000000000000000000000000000000000F4 +S3154001E5E000000000000000000000000000000000E4 +S3154001E5F000000000000000000000000000000000D4 +S3154001E60000000000000000000000000000000000C3 +S3154001E61000000000000000000000000000000000B3 +S3154001E62000000000000000000000000000000000A3 +S3154001E6300000000000000000000000000000000093 +S3154001E6400000000000000000000000000000000083 +S3154001E6500000000000000000000000000000000073 +S3154001E6600000000000000000000000000000000063 +S3154001E6700000000000000000000000000000000053 +S3154001E6800000000000000000000000000000000043 +S3154001E6900000000000000000000000000000000033 +S3154001E6A00000000000000000000000000000000023 +S3154001E6B00000000000000000000000000000000013 +S3154001E6C00000000000000000000000000000000003 +S3154001E6D000000000000000000000000000000000F3 +S3154001E6E000000000000000000000000000000000E3 +S3154001E6F000000000000000000000000000000000D3 +S3154001E70000000000000000000000000000000000C2 +S3154001E71000000000000000000000000000000000B2 +S3154001E72000000000000000000000000000000000A2 +S3154001E7300000000000000000000000000000000092 +S3154001E7400000000000000000000000000000000082 +S3154001E7500000000000000000000000000000000072 +S3154001E7600000000000000000000000000000000062 +S3154001E7700000000000000000000000000000000052 +S3154001E7800000000000000000000000000000000042 +S3154001E7900000000000000000000000000000000032 +S3154001E7A00000000000000000000000000000000022 +S3154001E7B00000000000000000000000000000000012 +S3154001E7C00000000000000000000000000000000002 +S3154001E7D000000000000000000000000000000000F2 +S3154001E7E000000000000000000000000000000000E2 +S3154001E7F000000000000000000000000000000000D2 +S3154001E80000000000000000000000000000000000C1 +S3154001E81000000000000000000000000000000000B1 +S3154001E82000000000000000000000000000000000A1 +S3154001E8300000000000000000000000000000000091 +S3154001E8400000000000000000000000000000000081 +S3154001E8500000000000000000000000000000000071 +S3154001E8600000000000000000000000000000000061 +S3154001E8700000000000000000000000000000000051 +S3154001E8800000000000000000000000000000000041 +S3154001E8900000000000000000000000000000000031 +S3154001E8A00000000000000000000000000000000021 +S3154001E8B00000000000000000000000000000000011 +S3154001E8C00000000000000000000000000000000001 +S3154001E8D000000000000000000000000000000000F1 +S3154001E8E000000000000000000000000000000000E1 +S3154001E8F000000000000000000000000000000000D1 +S3154001E90000000000000000000000000000000000C0 +S3154001E91000000000000000000000000000000000B0 +S3154001E92000000000000000000000000000000000A0 +S3154001E9300000000000000000000000000000000090 +S3154001E9400000000000000000000000000000000080 +S3154001E9500000000000000000000000000000000070 +S3154001E9600000000000000000000000000000000060 +S3154001E9700000000000000000000000000000000050 +S3154001E9800000000000000000000000000000000040 +S3154001E9900000000000000000000000000000000030 +S3154001E9A00000000000000000000000000000000020 +S3154001E9B00000000000000000000000000000000010 +S3154001E9C00000000000000000000000000000000000 +S3154001E9D000000000000000000000000000000000F0 +S3154001E9E000000000000000000000000000000000E0 +S3154001E9F000000000000000000000000000000000D0 +S3154001EA0000000000000000000000000000000000BF +S3154001EA1000000000000000000000000000000000AF +S3154001EA20000000000000000000000000000000009F +S3154001EA30000000000000000000000000000000008F +S3154001EA40000000000000000000000000000000007F +S3154001EA50000000000000000000000000000000006F +S3154001EA60000000000000000000000000000000005F +S3154001EA70000000000000000000000000000000004F +S3154001EA80000000000000000000000000000000003F +S3154001EA90000000000000000000000000000000002F +S3154001EAA0000000000000000000000000000000001F +S3154001EAB0000000000000000000000000000000000F +S3154001EAC000000000000000000000000000000000FF +S3154001EAD000000000000000000000000000000000EF +S3154001EAE000000000000000000000000000000000DF +S3154001EAF000000000000000000000000000000000CF +S3154001EB0000000000000000000000000000000000BE +S3154001EB1000000000000000000000000000000000AE +S3154001EB20000000000000000000000000000000009E +S3154001EB30000000000000000000000000000000008E +S3154001EB40000000000000000000000000000000007E +S3154001EB50000000000000000000000000000000006E +S3154001EB60000000000000000000000000000000005E +S3154001EB70000000000000000000000000000000004E +S3154001EB80000000000000000000000000000000003E +S3154001EB90000000000000000000000000000000002E +S3154001EBA0000000000000000000000000000000001E +S3154001EBB0000000000000000000000000000000000E +S3154001EBC000000000000000000000000000000000FE +S3154001EBD000000000000000000000000000000000EE +S3154001EBE000000000000000000000000000000000DE +S3154001EBF000000000000000000000000000000000CE +S3154001EC0000000000000000000000000000000000BD +S3154001EC1000000000000000000000000000000000AD +S3154001EC20000000000000000000000000000000009D +S3154001EC30000000000000000000000000000000008D +S3154001EC40000000000000000000000000000000007D +S3154001EC50000000000000000000000000000000006D +S3154001EC60000000000000000000000000000000005D +S3154001EC70000000000000000000000000000000004D +S3154001EC80000000000000000000000000000000003D +S3154001EC90000000000000000000000000000000002D +S3154001ECA0000000000000000000000000000000001D +S3154001ECB0000000000000000000000000000000000D +S3154001ECC000000000000000000000000000000000FD +S3154001ECD000000000000000000000000000000000ED +S3154001ECE000000000000000000000000000000000DD +S3154001ECF000000000000000000000000000000000CD +S3154001ED0000000000000000000000000000000000BC +S3154001ED1000000000000000000000000000000000AC +S3154001ED20000000000000000000000000000000009C +S3154001ED30000000000000000000000000000000008C +S3154001ED40000000000000000000000000000000007C +S3154001ED50000000000000000000000000000000006C +S3154001ED60000000000000000000000000000000005C +S3154001ED70000000000000000000000000000000004C +S3154001ED80000000000000000000000000000000003C +S3154001ED90000000000000000000000000000000002C +S3154001EDA0000000000000000000000000000000001C +S3154001EDB0000000000000000000000000000000000C +S3154001EDC000000000000000000000000000000000FC +S3154001EDD000000000000000000000000000000000EC +S3154001EDE000000000000000000000000000000000DC +S3154001EDF000000000000000000000000000000000CC +S3154001EE0000000000000000000000000000000000BB +S3154001EE1000000000000000000000000000000000AB +S3154001EE20000000000000000000000000000000009B +S3154001EE30000000000000000000000000000000008B +S3154001EE40000000000000000000000000000000007B +S3154001EE50000000000000000000000000000000006B +S3154001EE60000000000000000000000000000000005B +S3154001EE70000000000000000000000000000000004B +S3154001EE80000000000000000000000000000000003B +S3154001EE90000000000000000000000000000000002B +S3154001EEA0000000000000000000000000000000001B +S3154001EEB0000000000000000000000000000000000B +S3154001EEC000000000000000000000000000000000FB +S3154001EED000000000000000000000000000000000EB +S3154001EEE000000000000000000000000000000000DB +S3154001EEF000000000000000000000000000000000CB +S3154001EF0000000000000000000000000000000000BA +S3154001EF1000000000000000000000000000000000AA +S3154001EF20000000000000000000000000000000009A +S3154001EF30000000000000000000000000000000008A +S3154001EF40000000000000000000000000000000007A +S3154001EF50000000000000000000000000000000006A +S3154001EF60000000000000000000000000000000005A +S3154001EF70000000000000000000000000000000004A +S3154001EF80000000000000000000000000000000003A +S3154001EF90000000000000000000000000000000002A +S3154001EFA0000000000000000000000000000000001A +S3154001EFB0000000000000000000000000000000000A +S3154001EFC000000000000000000000000000000000FA +S3154001EFD000000000000000000000000000000000EA +S3154001EFE000000000000000000000000000000000DA +S3154001EFF000000000000000000000000000000000CA +S3154001F00000000000000000000000000000000000B9 +S3154001F01000000000000000000000000000000000A9 +S3154001F0200000000000000000000000000000000099 +S3154001F0300000000000000000000000000000000089 +S3154001F0400000000000000000000000000000000079 +S3154001F0500000000000000000000000000000000069 +S3154001F0600000000000000000000000000000000059 +S3154001F0700000000000000000000000000000000049 +S3154001F0800000000000000000000000000000000039 +S3154001F0900000000000000000000000000000000029 +S3154001F0A00000000000000000000000000000000019 +S3154001F0B00000000000000000000000000000000009 +S3154001F0C000000000000000000000000000000000F9 +S3154001F0D000000000000000000000000000000000E9 +S3154001F0E000000000000000000000000000000000D9 +S3154001F0F000000000000000000000000000000000C9 +S3154001F10000000000000000000000000000000000B8 +S3154001F11000000000000000000000000000000000A8 +S3154001F1200000000000000000000000000000000098 +S3154001F1300000000000000000000000000000000088 +S3154001F1400000000000000000000000000000000078 +S3154001F1500000000000000000000000000000000068 +S3154001F1600000000000000000000000000000000058 +S3154001F1700000000000000000000000000000000048 +S3154001F1800000000000000000000000000000000038 +S3154001F1900000000000000000000000000000000028 +S3154001F1A00000000000000000000000000000000018 +S3154001F1B00000000000000000000000000000000008 +S3154001F1C000000000000000000000000000000000F8 +S3154001F1D000000000000000000000000000000000E8 +S3154001F1E000000000000000000000000000000000D8 +S3154001F1F000000000000000000000000000000000C8 +S3154001F20000000000000000000000000000000000B7 +S3154001F21000000000000000000000000000000000A7 +S3154001F2200000000000000000000000000000000097 +S3154001F2300000000000000000000000000000000087 +S3154001F2400000000000000000000000000000000077 +S3154001F2500000000000000000000000000000000067 +S3154001F2600000000000000000000000000000000057 +S3154001F2700000000000000000000000000000000047 +S3154001F2800000000000000000000000000000000037 +S3154001F2900000000000000000000000000000000027 +S3154001F2A00000000000000000000000000000000017 +S3154001F2B00000000000000000000000000000000007 +S3154001F2C000000000000000000000000000000000F7 +S3154001F2D000000000000000000000000000000000E7 +S3154001F2E000000000000000000000000000000000D7 +S3154001F2F000000000000000000000000000000000C7 +S3154001F30000000000000000000000000000000000B6 +S3154001F31000000000000000000000000000000000A6 +S3154001F3200000000000000000000000000000000096 +S3154001F3300000000000000000000000000000000086 +S3154001F3400000000000000000000000000000000076 +S3154001F3500000000000000000000000000000000066 +S3154001F3600000000000000000000000000000000056 +S3154001F3700000000000000000000000000000000046 +S3154001F3800000000000000000000000000000000036 +S3154001F3900000000000000000000000000000000026 +S3154001F3A00000000000000000000000000000000016 +S3154001F3B00000000000000000000000000000000006 +S3154001F3C000000000000000000000000000000000F6 +S3154001F3D000000000000000000000000000000000E6 +S3154001F3E000000000000000000000000000000000D6 +S3154001F3F000000000000000000000000000000000C6 +S3154001F40000000000000000000000000000000000B5 +S3154001F41000000000000000000000000000000000A5 +S3154001F4200000000000000000000000000000000095 +S3154001F4300000000000000000000000000000000085 +S3154001F4400000000000000000000000000000000075 +S3154001F4500000000000000000000000000000000065 +S3154001F4600000000000000000000000000000000055 +S3154001F4700000000000000000000000000000000045 +S3154001F4800000000000000000000000000000000035 +S3154001F4900000000000000000000000000000000025 +S3154001F4A00000000000000000000000000000000015 +S3154001F4B00000000000000000000000000000000005 +S3154001F4C000000000000000000000000000000000F5 +S3154001F4D000000000000000000000000000000000E5 +S3154001F4E000000000000000000000000000000000D5 +S3154001F4F000000000000000000000000000000000C5 +S3154001F50000000000000000000000000000000000B4 +S3154001F51000000000000000000000000000000000A4 +S3154001F5200000000000000000000000000000000094 +S3154001F5300000000000000000000000000000000084 +S3154001F5400000000000000000000000000000000074 +S3154001F5500000000000000000000000000000000064 +S3154001F5600000000000000000000000000000000054 +S3154001F5700000000000000000000000000000000044 +S3154001F5800000000000000000000000000000000034 +S3154001F5900000000000000000000000000000000024 +S3154001F5A00000000000000000000000000000000014 +S3154001F5B00000000000000000000000000000000004 +S3154001F5C000000000000000000000000000000000F4 +S3154001F5D000000000000000000000000000000000E4 +S3154001F5E000000000000000000000000000000000D4 +S3154001F5F000000000000000000000000000000000C4 +S3154001F60000000000000000000000000000000000B3 +S3154001F61000000000000000000000000000000000A3 +S3154001F6200000000000000000000000000000000093 +S3154001F6300000000000000000000000000000000083 +S3154001F6400000000000000000000000000000000073 +S3154001F6500000000000000000000000000000000063 +S3154001F6600000000000000000000000000000000053 +S3154001F6700000000000000000000000000000000043 +S3154001F6800000000000000000000000000000000033 +S3154001F6900000000000000000000000000000000023 +S3154001F6A00000000000000000000000000000000013 +S3154001F6B00000000000000000000000000000000003 +S3154001F6C000000000000000000000000000000000F3 +S3154001F6D000000000000000000000000000000000E3 +S3154001F6E000000000000000000000000000000000D3 +S3154001F6F000000000000000000000000000000000C3 +S3154001F70000000000000000000000000000000000B2 +S3154001F71000000000000000000000000000000000A2 +S3154001F7200000000000000000000000000000000092 +S3154001F7300000000000000000000000000000000082 +S3154001F7400000000000000000000000000000000072 +S3154001F7500000000000000000000000000000000062 +S3154001F7600000000000000000000000000000000052 +S3154001F7700000000000000000000000000000000042 +S3154001F7800000000000000000000000000000000032 +S3154001F7900000000000000000000000000000000022 +S3154001F7A00000000000000000000000000000000012 +S3154001F7B00000000000000000000000000000000002 +S3154001F7C000000000000000000000000000000000F2 +S3154001F7D000000000000000000000000000000000E2 +S3154001F7E000000000000000000000000000000000D2 +S3154001F7F000000000000000000000000000000000C2 +S3154001F80000000000000000000000000000000000B1 +S3154001F81000000000000000000000000000000000A1 +S3154001F8200000000000000000000000000000000091 +S3154001F8300000000000000000000000000000000081 +S3154001F8400000000000000000000000000000000071 +S3154001F8500000000000000000000000000000000061 +S3154001F8600000000000000000000000000000000051 +S3154001F8700000000000000000000000000000000041 +S3154001F8800000000000000000000000000000000031 +S3154001F8900000000000000000000000000000000021 +S3154001F8A00000000000000000000000000000000011 +S3154001F8B00000000000000000000000000000000001 +S3154001F8C000000000000000000000000000000000F1 +S3154001F8D000000000000000000000000000000000E1 +S3154001F8E000000000000000000000000000000000D1 +S3154001F8F000000000000000000000000000000000C1 +S3154001F90000000000000000000000000000000000B0 +S3154001F91000000000000000000000000000000000A0 +S3154001F9200000000000000000000000000000000090 +S3154001F9300000000000000000000000000000000080 +S3154001F9400000000000000000000000000000000070 +S3154001F9500000000000000000000000000000000060 +S3154001F9600000000000000000000000000000000050 +S3154001F9700000000000000000000000000000000040 +S3154001F9800000000000000000000000000000000030 +S3154001F9900000000000000000000000000000000020 +S3154001F9A00000000000000000000000000000000010 +S3154001F9B00000000000000000000000000000000000 +S3154001F9C000000000000000000000000000000000F0 +S3154001F9D000000000000000000000000000000000E0 +S3154001F9E000000000000000000000000000000000D0 +S3154001F9F000000000000000000000000000000000C0 +S3154001FA0000000000000000000000000000000000AF +S3154001FA10000000000000000000000000000000009F +S3154001FA20000000000000000000000000000000008F +S3154001FA30000000000000000000000000000000007F +S3154001FA40000000000000000000000000000000006F +S3154001FA50000000000000000000000000000000005F +S3154001FA60000000000000000000000000000000004F +S3154001FA70000000000000000000000000000000003F +S3154001FA80000000000000000000000000000000002F +S3154001FA90000000000000000000000000000000001F +S3154001FAA0000000000000000000000000000000000F +S3154001FAB000000000000000000000000000000000FF +S3154001FAC000000000000000000000000000000000EF +S3154001FAD000000000000000000000000000000000DF +S3154001FAE000000000000000000000000000000000CF +S3154001FAF000000000000000000000000000000000BF +S3154001FB0000000000000000000000000000000000AE +S3154001FB10000000000000000000000000000000009E +S3154001FB20000000000000000000000000000000008E +S3154001FB30000000000000000000000000000000007E +S3154001FB40000000000000000000000000000000006E +S3154001FB50000000000000000000000000000000005E +S3154001FB60000000000000000000000000000000004E +S3154001FB70000000000000000000000000000000003E +S3154001FB80000000000000000000000000000000002E +S3154001FB90000000000000000000000000000000001E +S3154001FBA0000000000000000000000000000000000E +S3154001FBB000000000000000000000000000000000FE +S3154001FBC000000000000000000000000000000000EE +S3154001FBD000000000000000000000000000000000DE +S3154001FBE000000000000000000000000000000000CE +S3154001FBF000000000000000000000000000000000BE +S3154001FC0000000000000000000000000000000000AD +S3154001FC10000000000000000000000000000000009D +S3154001FC20000000000000000000000000000000008D +S3154001FC30000000000000000000000000000000007D +S3154001FC40000000000000000000000000000000006D +S3154001FC50000000000000000000000000000000005D +S3154001FC60000000000000000000000000000000004D +S3154001FC70000000000000000000000000000000003D +S3154001FC80000000000000000000000000000000002D +S3154001FC90000000000000000000000000000000001D +S3154001FCA0000000000000000000000000000000000D +S3154001FCB000000000000000000000000000000000FD +S3154001FCC000000000000000000000000000000000ED +S3154001FCD000000000000000000000000000000000DD +S3154001FCE000000000000000000000000000000000CD +S3154001FCF000000000000000000000000000000000BD +S3154001FD0000000000000000000000000000000000AC +S3154001FD10000000000000000000000000000000009C +S3154001FD20000000000000000000000000000000008C +S3154001FD30000000000000000000000000000000007C +S3154001FD40000000000000000000000000000000006C +S3154001FD50000000000000000000000000000000005C +S3154001FD60000000000000000000000000000000004C +S3154001FD70000000000000000000000000000000003C +S3154001FD80000000000000000000000000000000002C +S3154001FD90000000000000000000000000000000001C +S3154001FDA0000000000000000000000000000000000C +S3154001FDB000000000000000000000000000000000FC +S3154001FDC000000000000000000000000000000000EC +S3154001FDD000000000000000000000000000000000DC +S3154001FDE000000000000000000000000000000000CC +S3154001FDF000000000000000000000000000000000BC +S3154001FE0000000000000000000000000000000000AB +S3154001FE10000000000000000000000000000000009B +S3154001FE20000000000000000000000000000000008B +S3154001FE30000000000000000000000000000000007B +S3154001FE40000000000000000000000000000000006B +S3154001FE50000000000000000000000000000000005B +S3154001FE60000000000000000000000000000000004B +S3154001FE70000000000000000000000000000000003B +S3154001FE80000000000000000000000000000000002B +S3154001FE90000000000000000000000000000000001B +S3154001FEA0000000000000000000000000000000000B +S3154001FEB000000000000000000000000000000000FB +S3154001FEC000000000000000000000000000000000EB +S3154001FED000000000000000000000000000000000DB +S3154001FEE000000000000000000000000000000000CB +S3154001FEF000000000000000000000000000000000BB +S3154001FF0000000000000000000000000000000000AA +S3154001FF10000000000000000000000000000000009A +S3154001FF20000000000000000000000000000000008A +S3154001FF30000000000000000000000000000000007A +S3154001FF40000000000000000000000000000000006A +S3154001FF50000000000000000000000000000000005A +S3154001FF60000000000000000000000000000000004A +S3154001FF70000000000000000000000000000000003A +S3154001FF80000000000000000000000000000000002A +S3154001FF90000000000000000000000000000000001A +S3154001FFA0000000000000000000000000000000000A +S3154001FFB000000000000000000000000000000000FA +S3154001FFC000000000000000000000000000000000EA +S3154001FFD000000000000000000000000000000000DA +S3154001FFE000000000000000000000000000000000CA +S3154001FFF000000000000000000000000000000000BA +S3154002000000000001000000000000000000000000A7 S315400200102000000000000000000000000000000078 S315400200200000000000000000000000000000000088 S315400200300000000000000000000000000000000078 @@ -7458,328 +8205,328 @@ S315400200A00000000000000000000000000000000008 S315400200B000000000000000000000000000000000F8 S315400200C000000000000000000000000000000000E8 S315400200D000000000000000000000000000000000D8 -S315400200E00000000100000000000000410000000086 -S315400200F0343074693934612B3079676979753035B2 -S315400201007968617035796934682B612B69697978C8 -S315400201106869346B35396A30713930356A6B6F7953 -S3154002012070686F70746A72686961346979302B34A9 -S315400201300000000000000000000000010000000076 -S3154002014040000000000000004008000000000000DF -S31540020150401800000000000080000000000000007F -S315400201600000000000000000BFF000000000000098 -S31540020170BF800000000000000000000000000000F8 -S315400201800000000000000000000000000000000027 -S315400201903FF00000000000004008000000000000A0 -S315400201A03FF0000040000000000000000000000098 -S315400201B03F800000404000000000000000000000B8 -S315400201C000000000000000000000000000000000E7 -S315400201D0000000000000000048000001000000008E -S315400201E0480000000000000046C000000000000079 -S315400201F03FF0000000000000400000000000000048 -S3154002020040080000000000003F800000000000009F -S31540020210529000000000000052900FF807F60DEBD6 -S3154002022052901FE03F61BAD052902FB8D4E30F48A4 -S3154002023052903F81F636B80C52904F3BD03C0A64FE -S3154002024052905EE68EFAD48B52906E825DA8FC2B5B -S3154002025052907E0F66AFED0752908D8DD3B1D9AADB -S3154002026052909CFDCD8ED0095290AC5F7C69A3C85A -S315400202705290BBB307ACAFDB5290CAF8960E710DE3 -S315400202805290DA304D95FB065290E95A539F492CCB -S315400202905290F876CCDF6CD952910785DD689A295F -S315400202A052911687A8AE14A35291257C5187FD0917 -S315400202B052913463FA37014E5291433EC467EFFB83 -S315400202C05291520CD1372FEB529160CE41341D746C -S315400202D052916F8334644DF952917E2BCA46BAB914 -S315400202E052918CC821D6D3E352919B58598F7C9F09 -S315400202F05291A9DC8F6DF1045291B854E0F496A064 -S315400203005291C6C16B2DB8705291D5224AAE2EE19A -S315400203105291E3779B97F4A85291F1C1799CA8FF39 -S31540020320529200000000000052920E33499A21A9CF -S3154002033052921C5B70D9F82452922A788FC76DE587 -S315400203405292388AC0059C28529246921AD4EA4959 -S315400203505292548EB9151E8552926280B347609668 -S315400203605292706821902E9A52927E451BB944C38E -S3154002037052928C17B9337834529299E01118857596 -S315400203805292A79E3A2CD2E65292B5524AE1278E13 -S315400203905292C2FC595456A75292D09C7B54E03E8C -S315400203A05292DE32C66287415292EBBF4FAFDD4B6D -S315400203B05292F9422C23C47E529306BB705AE7C32B -S315400203C05293142B30A929AB52932191811B0A4196 -S315400203D052932EEE7577041652933C42213EE0C963 -S315400203E05293498C97B10540529356CDEBC9B5E22B -S315400203F0529364063044530652937135779C8DCBA3 -S3154002040052937E5BD40F95A152938B79579D3EAB07 -S315400204105293988E1409212E5293A59A1ADBB257FB -S315400204205293B29D7D6356625293BF984CB56C7798 -S315400204305293CC8A99AF54535293D97474F76DF24E -S315400204405293E655EEFE13675293F32F17FE8D0431 -S31540020450529400000000000052940CC8B6D657C20F -S31540020460529419894C2329F052942641CF569572BB -S31540020470529432F24FB01C7A52943F9ADC3F79CE74 -S3154002048052944C3B83E57153529458D455549C1A1A -S31540020490529465655F122FF6529471EEAF76C2C6DC -S315400204A052947E7054AF098952948AEA5CBC935F37 -S315400204B05294975CD57680885294A3C7CC8A358A63 -S315400204C05294B02B4F7C0A885294BC876BA7F6ECA9 -S315400204D05294C8DC2E4239805294D529A457FCFC4A -S315400204E05294E16FDACFF9375294EDAEDE6B10FEDD -S315400204F05294F9E6BBC4ECB3529506177F5491BBAE -S3154002050052951241356CF6E052951E63EA3D95B01E -S3154002051052952A7FA9D2F8EA529536948017481006 -S31540020520529542A278D2D03652954EA99FAC8A0FA6 -S3154002053052955AAA002A9D5A529566A3A5B2E1B18E -S31540020540529572969B8B5CD852957E82ECDABE8D22 -S3154002055052958A68A4A8D9F352959647CDDF1CA531 -S315400205605295A220734903775295ADF29F948CFB24 -S315400205705295B9BE5D52A9DA5295C583B6F7AB0319 -S315400205805295D142B6DBADC55295DCFB673B05DFE2 -S315400205905295E8ADD236A58F5295F45A01D483B41A -S315400205A0529600000000000052960B9FD68A455490 -S315400205B0529617398F2AAA48529622CD337F0FE890 -S315400205C052962E5ACD0C3EBE529639E2653E421B9B -S315400205D0529645640568C1C3529650DFB6C759F470 -S315400205E052965C55827DF1D2529667C57199104BEF -S315400205F05296732F8D0E2F7752967E93DDBC0E73D5 -S31540020600529689F26C6B01D05296954B41CD4293EC -S315400206100BC0A4068F346C9B0BC093731C185447B3 -S315400206200BC083008E183C230BC072AE83A9704A5E -S315400206300BC0627C9CC166FF0BC0526A7ACE64A430 -S315400206400BC04277C0B04ADA0BC032A412B191A0B5 -S315400206500BC022EF168069500BC0135873280473DF -S315400206600BC003DFD10A08480BBFE909B3B04632D3 -S315400206700BBFCA8E711B8E880BBFAC4D32D4143061 -S315400206800BBF8E4553D34B1B0BBF7076318237EF70 -S315400206900BBF52DF2BADF99C0BBF357FA47C936C0D -S315400206A00BBF18570061F5EB0BBEFB64A61545154B -S315400206B00BBEDEA7FE865A2B0BBEC22074D37FBC6E -S315400206C00BBEA5CD763F66690BBE89AE722750F04A -S315400206D00BBE6DC2D9F976230BBE520A212B976CFB -S315400206E00BBE3683BD31CAA20BBE1B2F257575CAFA -S315400206F00BBE000BD34C7BAF0BBDE51941F097FE09 -S315400207000BBDCA56EE76E9D00BBDAFC457C7AB7325 -S315400207100BBD9560FE9616690BBD7B2C65587275AE -S315400207200BBD612610404EC00BBD474D8532E409D4 -S315400207300BBD2DA24BC19EDF0BBD1423ED22D10171 -S315400207400BBCFAD1F42A88E40BBCE1ABED438E80B4 -S315400207500BBCC8B1666884820BBCAFE1EF1D2D01AC -S315400207600BBC973D1867D0EF0BBC7EC274CAC962F8 -S315400207700BBC6671983E29FE0BBC4E4A18298BA9C2 -S315400207800BBC364B8B5DF6DB0BBC1E758A0FECBF82 -S315400207900BBC06C7ADD18E7E0BBBEF41918CE1F609 -S315400207A00BBBD7E2D17E33360BBBC0AB0B2E921BB3 -S315400207B00BBBA999DD6E6B650BBB92AEE8503CA7AD -S315400207C00BBB7BE9CD2362720BBB654A2E6F002CB5 -S315400207D00BBB4ECFAFED00FE0BBB3879F685313FF2 -S315400207E00BBB2248A8486FDE0BBB0C3B6C6BF73B3E -S315400207F00BBAF651EB44BCEE0BBAE08BCE42E7F1B4 -S315400208000BBACAE8BFED5CC00BBAB5686BDD5EDDFC -S315400208100BBAA00A7EBA475E0BBA8ACEA6354FEB12 -S315400208200BBA75B4910571DB0BBA60BBEEE358EFB8 -S315400208300BBA4BE4708569410BBA372DC79BD7FE7D -S315400208400BBA2297A6CCD68C0BBA0E21C1B0CFA03A -S315400208500BB9F9CBCCCEB6050BB9E5957D98648B31 -S315400208600BB9D17E8A670EE70BB9BD86AA77C3104C -S315400208700BB9A9AD95E7FAC40BB995F305B23CE5B8 -S315400208800BB98256B3AACE570BB96ED85A7C7206AA -S315400208900BB95B77B5A537C80BB94834817359CCC8 -S315400208A00BB9350E7B02284D0BB922056037032E54 -S315400208B00BB90F18EFBE614A0BB8FC48E908E522AE -S315400208C00BB8E9950C487EA90BB8D6FD1A6D99E886 -S315400208D00BB8C480D5245A340BB8B21FFED1E1BC42 -S315400208E00BB89FDA5A91A5260BB88DAFAC32CB0A1C -S315400208F00BB87B9FB83596F60BB869AA43C8DFE1B9 -S315400209000BB857CF14C791B50BB8460DF1B639C6D9 -S315400209100BB83466A1C09DF90BB822D8ECB75E6E0F -S315400209200BB811649B0DA16B0BB8000975D6C9595A -S315400209300BB7EEC746C434A50BB7DD9DD823075285 -S315400209400BB7CC8CF4D9FE010BB7BB9468674A50FF -S315400209500BB7AAB3FEDE78540BB799EB84E65D0C6F -S315400209600BB7893AC7B70D960BB778A19517DF0132 -S315400209700BB7681FBB5D6E910BB757B50967B24C93 -S315400209800BB747614EA011A20BB737245AF786140C -S315400209900BB726FDFEE4C3A00BB716EE0B6268E862 -S315400209A00BB706F451ED36CE0BB6F710A4824F8044 -S315400209B00BB6E742D59D7CB40BB6D78AB8377D0EC7 -S315400209C00BB6C7E81FC458720BB6B85AE031BB32F1 -S315400209D00BB6A8E2CDE557F90BB6997FBDBB50459C -S315400209E00BB68A318504A35C0BB67AF7F985A39BCD -S315400209F00BB66BD2F17471FF0BB65CC243777FCEF6 -S31540020A000BB64DC5C6A416420BB63EDD527CE4116A -S31540020A100BB63008BEF090CF0BB62147E45855EBE3 -S31540020A200BB6129A9B769D520BB60400BD75A584F1 -S31540020A300BB5F57A23E62B070BB5E706A8BE172CAE -S31540020A400BB5D8A6265733FF0BB5CA58776DE54B7B -S31540020A500BB5BC1D771FE6AB0BB5ADF500EB0E78BB -S31540020A600BB59FDEF0AC15940BB591DB229D63F27C -S31540020A700BB583E97355E1C10BB57609BFC7CD32D4 -S31540020A800BB5683BE53F94B80BB55A7FC162B5B624 -S31540020A900BB54CD5322E9F7F0BB53F3C15F79AA12D -S31540020AA00BB531B44B67B45A0BB5243DB17DAE306C -S31540020AB00BB516D8278BF18F0BB509838D37876710 -S31540020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB69 -S31540020AD00BB4E1EA1D1EA6680BB4D4D8040308E59C -S31540020AE00BB4C7D63D722B370BB4BAE4AAEBF9481E -S31540020AF00BB4AE032E3C2D7E0BB4A131A97965C948 -S31540020B000BB4946FFF043C1C0BB487BE118662364D -S31540020B100BB47B1BC3F1C0BF0BB46E88F97F999BA4 -S31540020B200BB4620595AFAD730BB455917C476454D3 -S31540020B300BB4492C9150F96C0BB43CD6B91AA9C8DE -S31540020B400BB4308FD835E60B0BB42457D3768716C1 -S31540020B500BB4182E8FF205900BB40C13F2FEB43B75 -S31540020B600BB40007E232FD1F0BB3F40A4364A167DC -S31540020B700BB3E81AFCA7FBF00BB3DC39F44F468AF9 -S31540020B800BB3D06710E9E1C30BB3C4A239439F4FFD -S31540020B900BB3B8EB54640EF10BB3AD42498DCDDFC6 -S31540020BA00BB3A1A7003DD89B0BB39619602ADF2B46 -S31540020BB00BB38A9951449BB80BB37F26BBB32B79AF -S31540020BC00BB373C187D669EA0BB368699E454E4437 -S31540020BD00BB35D1EE7CD4B2D0BB351E14D71B09872 -S31540020BE00BB346B0B86B0FC30BB33B8D1226A15A5B -S31540020BF00BB330764445ADAC0BB3256C389CF6EB63 -S31540020C000BB31A6ED934256E0BB30F7E104535F5EC -S31540020C100BB30499C83BE9D60BB2F9C1EBB53923FC -S31540020C200BB2EEF6657EC6AA0BB2E437209655D5D0 -S31540020C300BB2D984082942630BB2CEDD0793F9E79A -S31540020C400BB2C4420A6177190BB2B9B2FC4ABEDA98 -S31540020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1F9 -S31540020C600BB29A4CA48F90E30BB28FEC8BA9777997 -S31540020C700BB28597FF1D694D0BB27B4EEBAE48DD3D -S31540020C800BB271113E499CEE0BB266DEE4071AA81E -S31540020C900BB25CB7CA2831380BB2529BDE1796F7B5 -S31540020CA00BB2488B0D68D8030BB23E8545D7E65A40 -S31540020CB00BB2348A7548AB540BB22A9A89C69A97B4 -S31540020CC00BB220B5718446610BB216DB1ADAF53FD8 -S31540020CD00BB20D0B744A39100BB203466C77876C14 -S31540020CE00BB1F98BF22DD3490BB1EFDBF45D27FF44 -S31540020CF00BB1E636621A457E0BB1DC9B2A9E3DD588 -S31540020D000BB1D30A3D4613EE0BB1C98389925B817F -S31540020D100BB1C006FF26DA3F0BB1B6948DCA2A281C -S31540020D200BB1AD2C25655D0F0BB1A3CDB603A13D2D -S31540020D300BB19A792FD1E7410BB1912E831E88D2FE -S31540020D400BB187EDA058F0D60BB17EB6781144733D -S31540020D500BB17588FAF80D3A0BB16C6519DDE45D95 -S31540020D600BB1634AC5B31EEF0BB15A39EF877B28E5 -S31540020D700BB151328889CEAE0BB148348207B5DB0E -S31540020D800BB13F3FCD6D43FF0BB136545C44B49A31 -S31540020D900BB12D7220361D870BB124990B07221BEE -S31540020DA00BB11BC90E9AA72D0BB113021CF0880F6B -S31540020DB00BB10A4428254C650BB1018F2271DEE541 -S31540020DC00BB0F8E2FE2B44F40BB0F03FADC2572312 -S31540020DD00BB0E7A523C37A850BB0DF1352D65AD997 -S31540020DE00BB0D68A2DBDA58C0BB0CE09A756C589A8 -S31540020DF00BB0C591B2999FDB0BB0BD2242985115FB -S31540020E000BB0B4BB4A7EEB870BB0AC5CBD933636B7 -S31540020E1065300000653010006530200065303000D6 -S31540020E2065304000653050006530600065307000C6 -S31540020E3065308000653090006530A0006530B000B6 -S31540020E406530C0006530D0006530E0006530F000A6 -S31540020E506531000065311000653120006531300092 -S31540020E606531400065315000653160006531700082 -S31540020E7065318000653190006531A0006531B00072 -S31540020E806531C0006531D0006531E0006531F00062 -S31540020E90653200006532100065322000653230004E -S31540020EA0653240006532500065326000653270003E -S31540020EB065328000653290006532A0006532B0002E -S31540020EC06532C0006532D0006532E0006532F0001E -S31540020ED0653300006533100065332000653330000A -S31540020EE065334000653350006533600065337000FA -S31540020EF065338000653390006533A0006533B000EA -S31540020F006533C0006533D0006533E0006533F000D9 -S31540020F1065340000653410006534200065343000C5 -S31540020F2065344000653450006534600065347000B5 -S31540020F3065348000653490006534A0006534B000A5 -S31540020F406534C0006534D0006534E0006534F00095 -S31540020F506535000065351000653520006535300081 -S31540020F606535400065355000653560006535700071 -S31540020F7065358000653590006535A0006535B00061 -S31540020F806535C0006535D0006535E0006535F00051 -S31540020F90653600006536100065362000653630003D -S31540020FA0653640006536500065366000653670002D -S31540020FB065368000653690006536A0006536B0001D -S31540020FC06536C0006536D0006536E0006536F0000D -S31540020FD065370000653710006537200065373000F9 -S31540020FE065374000653750006537600065377000E9 -S31540020FF065378000653790006537A0006537B000D9 -S315400210006537C0006537D0006537E0006537F000C8 -S3154002101065380000653810006538200065383000B4 -S3154002102065384000653850006538600065387000A4 -S3154002103065388000653890006538A0006538B00094 -S315400210406538C0006538D0006538E0006538F00084 -S315400210506539000065391000653920006539300070 -S315400210606539400065395000653960006539700060 -S3154002107065398000653990006539A0006539B00050 -S315400210806539C0006539D0006539E0006539F00040 -S31540021090653A0000653A1000653A2000653A30002C -S315400210A0653A4000653A5000653A6000653A70001C -S315400210B0653A8000653A9000653AA000653AB0000C -S315400210C0653AC000653AD000653AE000653AF000FC -S315400210D0653B0000653B1000653B2000653B3000E8 -S315400210E0653B4000653B5000653B6000653B7000D8 -S315400210F0653B8000653B9000653BA000653BB000C8 -S31540021100653BC000653BD000653BE000653BF000B7 -S31540021110653C0000653C1000653C2000653C3000A3 -S31540021120653C4000653C5000653C6000653C700093 -S31540021130653C8000653C9000653CA000653CB00083 -S31540021140653CC000653CD000653CE000653CF00073 -S31540021150653D0000653D1000653D2000653D30005F -S31540021160653D4000653D5000653D6000653D70004F -S31540021170653D8000653D9000653DA000653DB0003F -S31540021180653DC000653DD000653DE000653DF0002F -S31540021190653E0000653E1000653E2000653E30001B -S315400211A0653E4000653E5000653E6000653E70000B -S315400211B0653E8000653E9000653EA000653EB000FB -S315400211C0653EC000653ED000653EE000653EF000EB -S315400211D0653F0000653F1000653F2000653F3000D7 -S315400211E0653F4000653F5000653F6000653F7000C7 -S315400211F0653F8000653F9000653FA000653FB000B7 -S31540021200653FC000653FD000653FE000653FF000A6 -S315400212104200000000000000400FFFFFFFFFFFFFFB -S315400212204200000000200000420FFFFFFFFFFFFFC9 -S3154002123040000000000000004210000000080000CC -S3154002124042000000000000013EB000000000000124 -S315400212504200000000000002420F484C0137D2080B -S31540021260C20E780F256007AB41BA079B7AF94BA0AD -S315400212704201484C0137D208420E780F256007AB2F -S315400212804217E02D934BECDA420F484C0137D20815 -S31540021290C21E780F256007ABC20DA7D249883D4EC4 -S315400212A0421F484C0137D208C20E780F256007AB61 -S315400212B042100C446E87CE32C03340AB371208918F -S315400212C00000000000000000C03340AB3712089116 -S315400212D00000000000000000C29E7A0F236007A6AD -S315400212E0C29E7A0F236007A66F3F484C0137D20849 -S315400212F06E2E780F256007AB6F3F485B3D3F64B863 -S315400213006F3F484C0137D208EE2E780F256007AB67 -S315400213106F3F483CC5303F587FE2F780AB123809F1 -S315400213207FD00000000000007FEAF780AB12380948 -S31540021330002000000000000080280000000000009D -S3154002134080100000000000007FEFF780AB123809E2 -S315400213507FEFF2010203A1117FF0000000000000BE -S315400213600010000000001000801FFFFFF203A111D1 -S315400213708000000000000000001ABCD000023809BC -S31540021380801ABCD0000001110000000000000000DD -S315400213907E71000000000000416010000000000065 -S315400213A07FE11100000000000178100000000000FB -S315400213B03E880000FFF0000000120C00C073F800E7 -S315400213C0C1EFFFFFC00020003FB3C75D224F280F89 -S315400213D0C1B3C75CFAC08192A12FFF8000001FFFF4 -S315400213E03EE0000000FF0000A01FFF8001FE18073C -S315400213F041CFFFFE0000002040303FFFFFFFFFFDD0 -S3154002140042103FFEFC00000D3FD000003FEFFFFFC1 -S31540021410BFD0000010000000BFB000004FF0003FF8 -S3154002142001701000000000003E8000011A0000001A -S3154002143000000000000000007E7C0000000000006A -S31540021440416A1000010000107FF000000000000019 -S3154002145075012034056AC000FA1009091000104FC0 -S31540021460FFF00000000000000100203040030200AF -S31540021470003020340000A00B0000000000000000F5 -S315400214807FE0001010200001400000000010200AFA -S315400214907FF00000000000003FEFDFF00FFC484AFB -S315400214A0BFF80000000000007FFF000000000000BF -S315400214B07FFFE000000000007FF400000000000013 -S315400214C07FC00000000000007FF80000000000001E -S315400214D07FF0000000000000FFF000000000000066 -S315400214E0FFF0000000000000800000000000000045 -S315400214F000000000000100000000000000000000A3 +S315400200E00000000100000001BF8000000000000087 +S315400200F0BFF0000000000000800000000000000089 +S315400201000000000000000000400000000000000067 +S3154002011040080000000000004018000000000000F7 +S315400201200000000000000000000000000000000087 +S3154002013000000000000000003FF000000000000048 +S3154002014040080000000000003FF0000040000000B0 +S3154002015000000000000000003F8000004040000018 +S315400201600000000000000000000000000000000047 +S315400201700000000000000000000000000000000037 +S315400201804800000100000000480000000000000096 +S3154002019046C00000000000003FF0000000000000E2 +S315400201A0400000000000000040080000000000007F +S315400201B03F80000000000000000000000001000037 +S315400201C08000000000000000FFF000000000000078 +S315400201D0FFF00000000000007FF000000000000079 +S315400201E07FF80000000000007FC000000000000011 +S315400201F07FF40000000000007FFFE00000000000E6 +S315400202007FFF000000000000BFF800000000000071 +S315400202103FEFDFF00FFC484A7E710000000000000D +S3154002022041601000000000007FE111000000000064 +S3154002023001781000000000003E880000FFF0000038 +S3154002024000120C00C073F800C1EFFFFFC00020008F +S315400202503FB3C75D224F280FC1B3C75CFAC0819234 +S31540020260A12FFF8000001FFF3EE0000000FF0000BC +S31540020270A01FFF8001FE180741CFFFFE00000020AD +S3154002028040303FFFFFFFFFFD42103FFEFC00000DE6 +S315400202903FD000003FEFFFFFBFD00000100000003C +S315400202A0BFB000004FF0003F017010000000000098 +S315400202B03E8000011A00000000000000000000001D +S315400202C07E7C000000000000416A10000100001020 +S315400202D07FF000000000000075012034056AC0006E +S315400202E0FA1009091000104FFFF00000000000004C +S315400202F00100203040030200003020340000A00BF1 +S3154002030000000000000000007FE000101020000105 +S31540020310400000000010200A7FF0000000000000AC +S315400203204200000000000000400FFFFFFFFFFFFFFA +S315400203304200000000200000420FFFFFFFFFFFFFC8 +S3154002034040000000000000004210000000080000CB +S3154002035042000000000000013EB000000000000123 +S315400203604200000000000002420F484C0137D2080A +S31540020370C20E780F256007AB41BA079B7AF94BA0AC +S315400203804201484C0137D208420E780F256007AB2E +S315400203904217E02D934BECDA420F484C0137D20814 +S315400203A0C21E780F256007ABC20DA7D249883D4EC3 +S315400203B0421F484C0137D208C20E780F256007AB60 +S315400203C042100C446E87CE32C03340AB371208918E +S315400203D00000000000000000C03340AB3712089115 +S315400203E00000000000000000C29E7A0F236007A6AC +S315400203F0C29E7A0F236007A66F3F484C0137D20848 +S315400204006E2E780F256007AB6F3F485B3D3F64B861 +S315400204106F3F484C0137D208EE2E780F256007AB66 +S315400204206F3F483CC5303F587FE2F780AB123809F0 +S315400204307FD00000000000007FEAF780AB12380947 +S31540020440002000000000000080280000000000009C +S3154002045080100000000000007FEFF780AB123809E1 +S315400204607FEFF2010203A1117FF0000000000000BD +S315400204700010000000001000801FFFFFF203A111D0 +S315400204808000000000000000001ABCD000023809BB +S31540020490801ABCD0000001110000000000000000DC +S315400204A06530000065301000653020006530300050 +S315400204B06530400065305000653060006530700040 +S315400204C065308000653090006530A0006530B00030 +S315400204D06530C0006530D0006530E0006530F00020 +S315400204E0653100006531100065312000653130000C +S315400204F065314000653150006531600065317000FC +S3154002050065318000653190006531A0006531B000EB +S315400205106531C0006531D0006531E0006531F000DB +S3154002052065320000653210006532200065323000C7 +S3154002053065324000653250006532600065327000B7 +S3154002054065328000653290006532A0006532B000A7 +S315400205506532C0006532D0006532E0006532F00097 +S315400205606533000065331000653320006533300083 +S315400205706533400065335000653360006533700073 +S3154002058065338000653390006533A0006533B00063 +S315400205906533C0006533D0006533E0006533F00053 +S315400205A0653400006534100065342000653430003F +S315400205B0653440006534500065346000653470002F +S315400205C065348000653490006534A0006534B0001F +S315400205D06534C0006534D0006534E0006534F0000F +S315400205E065350000653510006535200065353000FB +S315400205F065354000653550006535600065357000EB +S3154002060065358000653590006535A0006535B000DA +S315400206106535C0006535D0006535E0006535F000CA +S3154002062065360000653610006536200065363000B6 +S3154002063065364000653650006536600065367000A6 +S3154002064065368000653690006536A0006536B00096 +S315400206506536C0006536D0006536E0006536F00086 +S315400206606537000065371000653720006537300072 +S315400206706537400065375000653760006537700062 +S3154002068065378000653790006537A0006537B00052 +S315400206906537C0006537D0006537E0006537F00042 +S315400206A0653800006538100065382000653830002E +S315400206B0653840006538500065386000653870001E +S315400206C065388000653890006538A0006538B0000E +S315400206D06538C0006538D0006538E0006538F000FE +S315400206E065390000653910006539200065393000EA +S315400206F065394000653950006539600065397000DA +S3154002070065398000653990006539A0006539B000C9 +S315400207106539C0006539D0006539E0006539F000B9 +S31540020720653A0000653A1000653A2000653A3000A5 +S31540020730653A4000653A5000653A6000653A700095 +S31540020740653A8000653A9000653AA000653AB00085 +S31540020750653AC000653AD000653AE000653AF00075 +S31540020760653B0000653B1000653B2000653B300061 +S31540020770653B4000653B5000653B6000653B700051 +S31540020780653B8000653B9000653BA000653BB00041 +S31540020790653BC000653BD000653BE000653BF00031 +S315400207A0653C0000653C1000653C2000653C30001D +S315400207B0653C4000653C5000653C6000653C70000D +S315400207C0653C8000653C9000653CA000653CB000FD +S315400207D0653CC000653CD000653CE000653CF000ED +S315400207E0653D0000653D1000653D2000653D3000D9 +S315400207F0653D4000653D5000653D6000653D7000C9 +S31540020800653D8000653D9000653DA000653DB000B8 +S31540020810653DC000653DD000653DE000653DF000A8 +S31540020820653E0000653E1000653E2000653E300094 +S31540020830653E4000653E5000653E6000653E700084 +S31540020840653E8000653E9000653EA000653EB00074 +S31540020850653EC000653ED000653EE000653EF00064 +S31540020860653F0000653F1000653F2000653F300050 +S31540020870653F4000653F5000653F6000653F700040 +S31540020880653F8000653F9000653FA000653FB00030 +S31540020890653FC000653FD000653FE000653FF00020 +S315400208A00BC0A4068F346C9B0BC093731C18544721 +S315400208B00BC083008E183C230BC072AE83A9704ACC +S315400208C00BC0627C9CC166FF0BC0526A7ACE64A49E +S315400208D00BC04277C0B04ADA0BC032A412B191A023 +S315400208E00BC022EF168069500BC01358732804734D +S315400208F00BC003DFD10A08480BBFE909B3B0463241 +S315400209000BBFCA8E711B8E880BBFAC4D32D41430CE +S315400209100BBF8E4553D34B1B0BBF7076318237EFDD +S315400209200BBF52DF2BADF99C0BBF357FA47C936C7A +S315400209300BBF18570061F5EB0BBEFB64A6154515B8 +S315400209400BBEDEA7FE865A2B0BBEC22074D37FBCDB +S315400209500BBEA5CD763F66690BBE89AE722750F0B7 +S315400209600BBE6DC2D9F976230BBE520A212B976C68 +S315400209700BBE3683BD31CAA20BBE1B2F257575CA67 +S315400209800BBE000BD34C7BAF0BBDE51941F097FE76 +S315400209900BBDCA56EE76E9D00BBDAFC457C7AB7393 +S315400209A00BBD9560FE9616690BBD7B2C655872751C +S315400209B00BBD612610404EC00BBD474D8532E40942 +S315400209C00BBD2DA24BC19EDF0BBD1423ED22D101DF +S315400209D00BBCFAD1F42A88E40BBCE1ABED438E8022 +S315400209E00BBCC8B1666884820BBCAFE1EF1D2D011A +S315400209F00BBC973D1867D0EF0BBC7EC274CAC96266 +S31540020A000BBC6671983E29FE0BBC4E4A18298BA92F +S31540020A100BBC364B8B5DF6DB0BBC1E758A0FECBFEF +S31540020A200BBC06C7ADD18E7E0BBBEF41918CE1F676 +S31540020A300BBBD7E2D17E33360BBBC0AB0B2E921B20 +S31540020A400BBBA999DD6E6B650BBB92AEE8503CA71A +S31540020A500BBB7BE9CD2362720BBB654A2E6F002C22 +S31540020A600BBB4ECFAFED00FE0BBB3879F685313F5F +S31540020A700BBB2248A8486FDE0BBB0C3B6C6BF73BAB +S31540020A800BBAF651EB44BCEE0BBAE08BCE42E7F121 +S31540020A900BBACAE8BFED5CC00BBAB5686BDD5EDD6A +S31540020AA00BBAA00A7EBA475E0BBA8ACEA6354FEB80 +S31540020AB00BBA75B4910571DB0BBA60BBEEE358EF26 +S31540020AC00BBA4BE4708569410BBA372DC79BD7FEEB +S31540020AD00BBA2297A6CCD68C0BBA0E21C1B0CFA0A8 +S31540020AE00BB9F9CBCCCEB6050BB9E5957D98648B9F +S31540020AF00BB9D17E8A670EE70BB9BD86AA77C310BA +S31540020B000BB9A9AD95E7FAC40BB995F305B23CE525 +S31540020B100BB98256B3AACE570BB96ED85A7C720617 +S31540020B200BB95B77B5A537C80BB94834817359CC35 +S31540020B300BB9350E7B02284D0BB922056037032EC1 +S31540020B400BB90F18EFBE614A0BB8FC48E908E5221B +S31540020B500BB8E9950C487EA90BB8D6FD1A6D99E8F3 +S31540020B600BB8C480D5245A340BB8B21FFED1E1BCAF +S31540020B700BB89FDA5A91A5260BB88DAFAC32CB0A89 +S31540020B800BB87B9FB83596F60BB869AA43C8DFE126 +S31540020B900BB857CF14C791B50BB8460DF1B639C647 +S31540020BA00BB83466A1C09DF90BB822D8ECB75E6E7D +S31540020BB00BB811649B0DA16B0BB8000975D6C959C8 +S31540020BC00BB7EEC746C434A50BB7DD9DD8230752F3 +S31540020BD00BB7CC8CF4D9FE010BB7BB9468674A506D +S31540020BE00BB7AAB3FEDE78540BB799EB84E65D0CDD +S31540020BF00BB7893AC7B70D960BB778A19517DF01A0 +S31540020C000BB7681FBB5D6E910BB757B50967B24C00 +S31540020C100BB747614EA011A20BB737245AF7861479 +S31540020C200BB726FDFEE4C3A00BB716EE0B6268E8CF +S31540020C300BB706F451ED36CE0BB6F710A4824F80B1 +S31540020C400BB6E742D59D7CB40BB6D78AB8377D0E34 +S31540020C500BB6C7E81FC458720BB6B85AE031BB325E +S31540020C600BB6A8E2CDE557F90BB6997FBDBB504509 +S31540020C700BB68A318504A35C0BB67AF7F985A39B3A +S31540020C800BB66BD2F17471FF0BB65CC243777FCE63 +S31540020C900BB64DC5C6A416420BB63EDD527CE411D8 +S31540020CA00BB63008BEF090CF0BB62147E45855EB51 +S31540020CB00BB6129A9B769D520BB60400BD75A5845F +S31540020CC00BB5F57A23E62B070BB5E706A8BE172C1C +S31540020CD00BB5D8A6265733FF0BB5CA58776DE54BE9 +S31540020CE00BB5BC1D771FE6AB0BB5ADF500EB0E7829 +S31540020CF00BB59FDEF0AC15940BB591DB229D63F2EA +S31540020D000BB583E97355E1C10BB57609BFC7CD3241 +S31540020D100BB5683BE53F94B80BB55A7FC162B5B691 +S31540020D200BB54CD5322E9F7F0BB53F3C15F79AA19A +S31540020D300BB531B44B67B45A0BB5243DB17DAE30D9 +S31540020D400BB516D8278BF18F0BB509838D3787677D +S31540020D500BB4FC3FC27713AE0BB4EF0CA791D4BBD6 +S31540020D600BB4E1EA1D1EA6680BB4D4D8040308E509 +S31540020D700BB4C7D63D722B370BB4BAE4AAEBF9488B +S31540020D800BB4AE032E3C2D7E0BB4A131A97965C9B5 +S31540020D900BB4946FFF043C1C0BB487BE11866236BB +S31540020DA00BB47B1BC3F1C0BF0BB46E88F97F999B12 +S31540020DB00BB4620595AFAD730BB455917C47645441 +S31540020DC00BB4492C9150F96C0BB43CD6B91AA9C84C +S31540020DD00BB4308FD835E60B0BB42457D37687162F +S31540020DE00BB4182E8FF205900BB40C13F2FEB43BE3 +S31540020DF00BB40007E232FD1F0BB3F40A4364A1674A +S31540020E000BB3E81AFCA7FBF00BB3DC39F44F468A66 +S31540020E100BB3D06710E9E1C30BB3C4A239439F4F6A +S31540020E200BB3B8EB54640EF10BB3AD42498DCDDF33 +S31540020E300BB3A1A7003DD89B0BB39619602ADF2BB3 +S31540020E400BB38A9951449BB80BB37F26BBB32B791C +S31540020E500BB373C187D669EA0BB368699E454E44A4 +S31540020E600BB35D1EE7CD4B2D0BB351E14D71B098DF +S31540020E700BB346B0B86B0FC30BB33B8D1226A15AC8 +S31540020E800BB330764445ADAC0BB3256C389CF6EBD0 +S31540020E900BB31A6ED934256E0BB30F7E104535F55A +S31540020EA00BB30499C83BE9D60BB2F9C1EBB539236A +S31540020EB00BB2EEF6657EC6AA0BB2E437209655D53E +S31540020EC00BB2D984082942630BB2CEDD0793F9E708 +S31540020ED00BB2C4420A6177190BB2B9B2FC4ABEDA06 +S31540020EE00BB2AF2FC9365EFF0BB2A4B85D37EEC167 +S31540020EF00BB29A4CA48F90E30BB28FEC8BA9777905 +S31540020F000BB28597FF1D694D0BB27B4EEBAE48DDAA +S31540020F100BB271113E499CEE0BB266DEE4071AA88B +S31540020F200BB25CB7CA2831380BB2529BDE1796F722 +S31540020F300BB2488B0D68D8030BB23E8545D7E65AAD +S31540020F400BB2348A7548AB540BB22A9A89C69A9721 +S31540020F500BB220B5718446610BB216DB1ADAF53F45 +S31540020F600BB20D0B744A39100BB203466C77876C81 +S31540020F700BB1F98BF22DD3490BB1EFDBF45D27FFB1 +S31540020F800BB1E636621A457E0BB1DC9B2A9E3DD5F5 +S31540020F900BB1D30A3D4613EE0BB1C98389925B81ED +S31540020FA00BB1C006FF26DA3F0BB1B6948DCA2A288A +S31540020FB00BB1AD2C25655D0F0BB1A3CDB603A13D9B +S31540020FC00BB19A792FD1E7410BB1912E831E88D26C +S31540020FD00BB187EDA058F0D60BB17EB678114473AB +S31540020FE00BB17588FAF80D3A0BB16C6519DDE45D03 +S31540020FF00BB1634AC5B31EEF0BB15A39EF877B2853 +S315400210000BB151328889CEAE0BB148348207B5DB7B +S315400210100BB13F3FCD6D43FF0BB136545C44B49A9E +S315400210200BB12D7220361D870BB124990B07221B5B +S315400210300BB11BC90E9AA72D0BB113021CF0880FD8 +S315400210400BB10A4428254C650BB1018F2271DEE5AE +S315400210500BB0F8E2FE2B44F40BB0F03FADC257237F +S315400210600BB0E7A523C37A850BB0DF1352D65AD904 +S315400210700BB0D68A2DBDA58C0BB0CE09A756C58915 +S315400210800BB0C591B2999FDB0BB0BD224298511568 +S315400210900BB0B4BB4A7EEB870BB0AC5CBD93363625 +S315400210A0529000000000000052900FF807F60DEB38 +S315400210B052901FE03F61BAD052902FB8D4E30F4806 +S315400210C052903F81F636B80C52904F3BD03C0A6460 +S315400210D052905EE68EFAD48B52906E825DA8FC2BBD +S315400210E052907E0F66AFED0752908D8DD3B1D9AA3D +S315400210F052909CFDCD8ED0095290AC5F7C69A3C8BC +S315400211005290BBB307ACAFDB5290CAF8960E710D44 +S315400211105290DA304D95FB065290E95A539F492C2C +S315400211205290F876CCDF6CD952910785DD689A29C0 +S3154002113052911687A8AE14A35291257C5187FD0978 +S3154002114052913463FA37014E5291433EC467EFFBE4 +S315400211505291520CD1372FEB529160CE41341D74CD +S3154002116052916F8334644DF952917E2BCA46BAB975 +S3154002117052918CC821D6D3E352919B58598F7C9F6A +S315400211805291A9DC8F6DF1045291B854E0F496A0C5 +S315400211905291C6C16B2DB8705291D5224AAE2EE1FC +S315400211A05291E3779B97F4A85291F1C1799CA8FF9B +S315400211B0529200000000000052920E33499A21A931 +S315400211C052921C5B70D9F82452922A788FC76DE5E9 +S315400211D05292388AC0059C28529246921AD4EA49BB +S315400211E05292548EB9151E8552926280B3476096CA +S315400211F05292706821902E9A52927E451BB944C3F0 +S3154002120052928C17B9337834529299E011188575F7 +S315400212105292A79E3A2CD2E65292B5524AE1278E74 +S315400212205292C2FC595456A75292D09C7B54E03EED +S315400212305292DE32C66287415292EBBF4FAFDD4BCE +S315400212405292F9422C23C47E529306BB705AE7C38C +S315400212505293142B30A929AB52932191811B0A41F7 +S3154002126052932EEE7577041652933C42213EE0C9C4 +S315400212705293498C97B10540529356CDEBC9B5E28C +S31540021280529364063044530652937135779C8DCB04 +S3154002129052937E5BD40F95A152938B79579D3EAB69 +S315400212A05293988E1409212E5293A59A1ADBB2575D +S315400212B05293B29D7D6356625293BF984CB56C77FA +S315400212C05293CC8A99AF54535293D97474F76DF2B0 +S315400212D05293E655EEFE13675293F32F17FE8D0493 +S315400212E0529400000000000052940CC8B6D657C271 +S315400212F0529419894C2329F052942641CF5695721D +S31540021300529432F24FB01C7A52943F9ADC3F79CED5 +S3154002131052944C3B83E57153529458D455549C1A7B +S31540021320529465655F122FF6529471EEAF76C2C63D +S3154002133052947E7054AF098952948AEA5CBC935F98 +S315400213405294975CD57680885294A3C7CC8A358AC4 +S315400213505294B02B4F7C0A885294BC876BA7F6EC0A +S315400213605294C8DC2E4239805294D529A457FCFCAB +S315400213705294E16FDACFF9375294EDAEDE6B10FE3E +S315400213805294F9E6BBC4ECB3529506177F5491BB0F +S3154002139052951241356CF6E052951E63EA3D95B080 +S315400213A052952A7FA9D2F8EA529536948017481068 +S315400213B0529542A278D2D03652954EA99FAC8A0F08 +S315400213C052955AAA002A9D5A529566A3A5B2E1B1F0 +S315400213D0529572969B8B5CD852957E82ECDABE8D84 +S315400213E052958A68A4A8D9F352959647CDDF1CA593 +S315400213F05295A220734903775295ADF29F948CFB86 +S315400214005295B9BE5D52A9DA5295C583B6F7AB037A +S315400214105295D142B6DBADC55295DCFB673B05DF43 +S315400214205295E8ADD236A58F5295F45A01D483B47B +S31540021430529600000000000052960B9FD68A4554F1 +S31540021440529617398F2AAA48529622CD337F0FE8F1 +S3154002145052962E5ACD0C3EBE529639E2653E421BFC +S31540021460529645640568C1C3529650DFB6C759F4D1 +S3154002147052965C55827DF1D2529667C57199104B50 +S315400214805296732F8D0E2F7752967E93DDBC0E7336 +S31540021490529689F26C6B01D05296954B41CD42934E +S315400214A000000000000000000000000000000000F4 +S315400214B000000000000000000000000000000000E4 +S315400214C000000000000000000000000000000000D4 +S315400214D000000000000000000000000000000000C4 +S315400214E000000000000000000000000000000000B4 +S315400214F000000000000000000000000000000000A4 S315400215000000000000000000000000000000000093 S315400215100000000000000000000000000000000083 S315400215200000000000000000000000000000000073 @@ -9492,8 +10239,8 @@ S31540027FC00000000000000000000000000000000069 S31540027FD00000000000000000000000000000000059 S31540027FE00000000000000000000000000000000049 S31540027FF00000000000000000000000000000000039 -S315400280000000003F0000000C0000003F000000128C -S31540028010000000FF00000018000000000000000001 +S315400280000000000000000000000000000000000028 +S315400280100000000000000000000000000000000018 S315400280200000000000000000000000000000000008 S3154002803000000000000000000000000000000000F8 S3154002804000000000000000000000000000000000E8 @@ -16404,8 +17151,8 @@ S31540042FC000000000000000000000000000000000B7 S31540042FD000000000000000000000000000000000A7 S31540042FE00000000000000000000000000000000097 S31540042FF00000000000000000000000000000000087 -S315400430000000000000000000000000000000000076 -S315400430100000000000000000000000000000000066 +S3154004300000000018000000FF000000120000003F0E +S315400430100000000C0000003F00000000000000001B S315400430200000000000000000000000000000000056 S315400430300000000000000000000000000000000046 S315400430400000000000000000000000000000000036 @@ -17684,125 +18431,125 @@ S31540047FC00000000000000000000000000000000067 S31540047FD00000000000000000000000000000000057 S31540047FE00000000000000000000000000000000047 S31540047FF00000000000000000000000000000000037 -S315400480000000000000000000000000000000000026 -S315400480100000000000000000000000000000000016 -S315400480200000000000000000000000000000000006 -S3154004803000000000000000000000000000000000F6 -S3154004804000000000000000000000000000000000E6 -S3154004805000000000000000000000000000000000D6 -S3154004806000000000000000000000000000000000C6 -S3154004807000000000000000000000000000000000B6 -S3154004808000000000000000000000000000000000A6 -S315400480900000000000000000000000000000000096 -S315400480A00000000000000000000000000000000086 -S315400480B00000000000000000000000000000000076 -S315400480C00000000000000000000000000000000066 -S315400480D00000000000000000000000000000000056 -S315400480E00000000000000000000000000000000046 -S315400480F00000000000000000000000000000000036 -S315400481000000000000000000000000000000000025 -S315400481100000000000000000000000000000000015 -S315400481200000000000000000000000000000000005 -S3154004813000000000000000000000000000000000F5 -S3154004814000000000000000000000000000000000E5 -S3154004815000000000000000000000000000000000D5 -S3154004816000000000000000000000000000000000C5 -S3154004817000000000000000000000000000000000B5 -S3154004818000000000000000000000000000000000A5 -S315400481900000000000000000000000000000000095 -S315400481A00000000000000000000000000000000085 -S315400481B00000000000000000000000000000000075 -S315400481C00000000000000000000000000000000065 -S315400481D00000000000000000000000000000000055 -S315400481E00000000000000000000000000000000045 +S31540048000000000020000000300000000000000031E +S31540048010FFFFFFFEFFFFFFFF00000002FFFFFFFD23 +S315400480200000000000000000000000010000000005 +S3154004803000000000FFFFFFFF0000000000000001F9 +S31540048040FFFFFFFFFFFFFFFFFFFFFFFF00000001F1 +S31540048050FFFFFFFFFFFFFFFE0000000300000000DC +S31540048060FFFFFFFEFFFFFFFD0000000000000009C8 +S315400480700000000700000001FFFFFFF700000002B8 +S31540048080FFFFFFFCFFFFFFF800000002FFFFFFFCBD +S31540048090FFFFFFF8FFFFFFFC00000002000000089E +S315400480A0FFFFFFFCFFFFFFFEFFFFFFF8FFFFFFF8A8 +S315400480B000000001FFFFFFF8FFFFFFF7000000008C +S315400480C00000000B00000002000000050000002F25 +S315400480D0000000020000001700003039000002A72B +S315400480E000000012FFFF076C0000004DFFFFFCC6B6 +S315400480F000003039FFFFFD59FFFFFFEEFFFF076C1D +S31540048100FFFFFFB30000033A00000091FFFFE84180 +S3154004811000000000FFFFFD84FFFED02F000000009A +S315400481200000F6FA006E49810000000000000000DD +S3154004813000000000000000000000000200000003F0 +S3154004814000000000000000000000000100000000E4 +S31540048150FFFFFFFE0000000355555554FFFFFFFE89 +S315400481600000000355555554700FFFFE00000007EC +S315400481701002492400000000000000000000000036 +S315400481800000000200000003000000060000000298 +S31540048190FFFFFFFDFFFFFFFA0000000000000001A3 +S315400481A00000000000000000FFFFFFFF0000000089 +S315400481B000000001FFFFFFFFFFFFFFFFFFFFFFFF80 +S315400481C000000001FFFFFFFFFFFFFFFE000000036A +S315400481D0FFFFFFFAFFFFFFFEFFFFFFFD0000000663 +S315400481E0000000000000000000000009FFFFF0004E S315400481F00000000000000000000000000000000035 -S315400482000000000000000000000000000000000024 +S31540048200000000000000000100000002000000031E S315400482100000000000000000000000000000000014 -S315400482200000000000000000000000000000000004 -S3154004823000000000000000000000000000000000F4 -S3154004824000000000000000000000000000000000E4 -S3154004825000000000000000000000000000000000D4 -S3154004826000000000000000000000000000000000C4 -S3154004827000000000000000000000000000000000B4 -S3154004828000000000000000000000000000000000A4 -S315400482900000000000000000000000000000000094 -S315400482A00000000000000000000000000000000084 -S315400482B00000000000000000000000000000000074 -S315400482C00000000000000000000000000000000064 -S315400482D00000000000000000000000000000000054 -S315400482E00000000000000000000000000000000044 -S315400482F00000000000000000000000000000000034 -S315400483000000000000000000000000000000000023 -S315400483100000000000000000000000000000000013 -S315400483200000000000000000000000000000000003 -S3154004833000000000000000000000000000000000F3 -S3154004834000000000000000000000000000000000E3 -S3154004835000000000000000000000000000000000D3 -S3154004836000000000000000000000000000000000C3 -S3154004837000000000000000000000000000000000B3 -S3154004838000000000000000000000000000000000A3 -S315400483900000000000000000000000000000000093 -S315400483A00000000000000000000000000000000083 -S315400483B00000000000000000000000000000000073 -S315400483C00000000000000000000000000000000063 -S315400483D00000000000000000000000000000000053 -S315400483E00000000000000000000000000000000043 -S315400483F00000000000000000000000000000000033 -S315400484000000000000000000000000000000000022 -S315400484100000000000000000000000000000000012 -S315400484200000000000000000000000000000000002 -S3154004843000000000000000000000000000000000F2 -S3154004844000000000000000000000000000000000E2 -S3154004845000000000000000000000000000000000D2 -S3154004846000000000000000000000000000000000C2 -S3154004847000000000000000000000000000000000B2 -S3154004848000000000000000000000000000000000A2 -S315400484900000000000000000000000000000000092 -S315400484A00000000000000000000000000000000082 -S315400484B00000000000000000000000000000000072 -S315400484C00000000000000000000000000000000062 -S315400484D00000000000000000000000000000000052 -S315400484E00000000000000000000000000000000042 -S315400484F00000000000000000000000000000000032 -S315400485000000000000000000000000000000000021 -S315400485100000000000000000000000000000000011 -S315400485200000000000000000000000000000000001 -S3154004853000000000000000000000000000000000F1 -S3154004854000000000000000000000000000000000E1 -S3154004855000000000000000000000000000000000D1 -S3154004856000000000000000000000000000000000C1 -S3154004857000000000000000000000000000000000B1 -S3154004858000000000000000000000000000000000A1 -S315400485900000000000000000000000000000000091 -S315400485A00000000000000000000000000000000081 -S315400485B00000000000000000000000000000000071 -S315400485C00000000000000000000000000000000061 -S315400485D00000000000000000000000000000000051 -S315400485E00000000000000000000000000000000041 -S315400485F00000000000000000000000000000000031 -S315400486000000000000000000000000000000000020 -S315400486100000000000000000000000000000000010 -S315400486200000000000000000000000000000000000 -S3154004863000000000000000000000000000000000F0 -S3154004864000000000000000000000000000000000E0 +S315400482200000000000000000400482204004822038 +S31540048230400482284004822840048230400482302C +S3154004824040048238400482384004824040048240DC +S31540048250400482484004824840048250400482508C +S31540048260400482584004825840048260400482603C +S3154004827040048268400482684004827040048270EC +S31540048280400482784004827840048280400482809C +S31540048290400482884004828840048290400482904C +S315400482A04004829840048298400482A0400482A0FC +S315400482B0400482A8400482A8400482B0400482B0AC +S315400482C0400482B8400482B8400482C0400482C05C +S315400482D0400482C8400482C8400482D0400482D00C +S315400482E0400482D8400482D8400482E0400482E0BC +S315400482F0400482E8400482E8400482F0400482F06C +S31540048300400482F8400482F8400483004004830019 +S3154004831040048308400483084004831040048310C7 +S315400483204004831840048318400483204004832077 +S315400483304004832840048328400483304004833027 +S3154004834040048338400483384004834040048340D7 +S315400483504004834840048348400483504004835087 +S315400483604004835840048358400483604004836037 +S3154004837040048368400483684004837040048370E7 +S315400483804004837840048378400483804004838097 +S315400483904004838840048388400483904004839047 +S315400483A04004839840048398400483A0400483A0F7 +S315400483B0400483A8400483A8400483B0400483B0A7 +S315400483C0400483B8400483B8400483C0400483C057 +S315400483D0400483C8400483C8400483D0400483D007 +S315400483E0400483D8400483D8400483E0400483E0B7 +S315400483F0400483E8400483E8400483F0400483F067 +S31540048400400483F8400483F8400484004004840014 +S3154004841040048408400484084004841040048410C2 +S315400484204004841840048418400484204004842072 +S315400484304004842840048428400484304004843022 +S3154004844040048438400484384004844040048440D2 +S315400484504004844840048448400484504004845082 +S315400484604004845840048458400484604004846032 +S3154004847040048468400484684004847040048470E2 +S315400484804004847840048478400484804004848092 +S315400484904004848840048488400484904004849042 +S315400484A04004849840048498400484A0400484A0F2 +S315400484B0400484A8400484A8400484B0400484B0A2 +S315400484C0400484B8400484B8400484C0400484C052 +S315400484D0400484C8400484C8400484D0400484D002 +S315400484E0400484D8400484D8400484E0400484E0B2 +S315400484F0400484E8400484E8400484F0400484F062 +S31540048500400484F8400484F840048500400485000F +S3154004851040048508400485084004851040048510BD +S31540048520400485184004851840048520400485206D +S31540048530400485284004852840048530400485301D +S3154004854040048538400485384004854040048540CD +S31540048550400485484004854840048550400485507D +S31540048560400485584004855840048560400485602D +S3154004857040048568400485684004857040048570DD +S31540048580400485784004857840048580400485808D +S31540048590400485884004858840048590400485903D +S315400485A04004859840048598400485A0400485A0ED +S315400485B0400485A8400485A8400485B0400485B09D +S315400485C0400485B8400485B8400485C0400485C04D +S315400485D0400485C8400485C8400485D0400485D0FD +S315400485E0400485D8400485D8400485E0400485E0AD +S315400485F0400485E8400485E8400485F0400485F05D +S31540048600400485F8400485F840048600400486000A +S3154004861040048608400486084004861040048610B8 +S31540048620400486184004861800020000FFFFFFFF3E +S3154004863000000000400486300000000000000000F6 +S3154004864000000000000000020000000000000000DE S3154004865000000000000000000000000000000000D0 S3154004866000000000000000000000000000000000C0 S3154004867000000000000000000000000000000000B0 S3154004868000000000000000000000000000000000A0 S315400486900000000000000000000000000000000090 -S315400486A00000000000000000000000000000000080 -S315400486B00000000000000000000000000000000070 +S315400486A00000000000000000400486B00000000006 +S315400486B0000000004004899C40048A6840048B34CE S315400486C00000000000000000000000000000000060 S315400486D00000000000000000000000000000000050 -S315400486E00000000000000000000000000000000040 +S315400486E0000000004001D9D800000000000000004E S315400486F00000000000000000000000000000000030 S31540048700000000000000000000000000000000001F S31540048710000000000000000000000000000000000F S3154004872000000000000000000000000000000000FF S3154004873000000000000000000000000000000000EF S3154004874000000000000000000000000000000000DF -S3154004875000000000000000000000000000000000CF -S3154004876000000000000000000000000000000000BF +S3154004875000000000000000000000000000000001CE +S31540048760330EABCD1234E66DDEEC0005000B000093 S3154004877000000000000000000000000000000000AF S31540048780000000000000000000000000000000009F S31540048790000000000000000000000000000000008F @@ -17879,2055 +18626,7 @@ S31540048BF0000000000000000000000000000000002B S31540048C00000000000000000000000000000000001A S31540048C10000000000000000000000000000000000A S31540048C2000000000000000000000000000000000FA -S31540048C3000000000000000000000000000000000EA -S31540048C4000000000000000000000000000000000DA -S31540048C5000000000000000000000000000000000CA -S31540048C6000000000000000000000000000000000BA -S31540048C7000000000000000000000000000000000AA -S31540048C80000000000000000000000000000000009A -S31540048C90000000000000000000000000000000008A -S31540048CA0000000000000000000000000000000007A -S31540048CB0000000000000000000000000000000006A -S31540048CC0000000000000000000000000000000005A -S31540048CD0000000000000000000000000000000004A -S31540048CE0000000000000000000000000000000003A -S31540048CF0000000000000000000000000000000002A -S31540048D000000000000000000000000000000000019 -S31540048D100000000000000000000000000000000009 -S31540048D2000000000000000000000000000000000F9 -S31540048D3000000000000000000000000000000000E9 -S31540048D4000000000000000000000000000000000D9 -S31540048D5000000000000000000000000000000000C9 -S31540048D6000000000000000000000000000000000B9 -S31540048D7000000000000000000000000000000000A9 -S31540048D800000000000000000000000000000000099 -S31540048D900000000000000000000000000000000089 -S31540048DA00000000000000000000000000000000079 -S31540048DB00000000000000000000000000000000069 -S31540048DC00000000000000000000000000000000059 -S31540048DD00000000000000000000000000000000049 -S31540048DE00000000000000000000000000000000039 -S31540048DF00000000000000000000000000000000029 -S31540048E000000000000000000000000000000000018 -S31540048E100000000000000000000000000000000008 -S31540048E2000000000000000000000000000000000F8 -S31540048E3000000000000000000000000000000000E8 -S31540048E4000000000000000000000000000000000D8 -S31540048E5000000000000000000000000000000000C8 -S31540048E6000000000000000000000000000000000B8 -S31540048E7000000000000000000000000000000000A8 -S31540048E800000000000000000000000000000000098 -S31540048E900000000000000000000000000000000088 -S31540048EA00000000000000000000000000000000078 -S31540048EB00000000000000000000000000000000068 -S31540048EC00000000000000000000000000000000058 -S31540048ED00000000000000000000000000000000048 -S31540048EE00000000000000000000000000000000038 -S31540048EF00000000000000000000000000000000028 -S31540048F000000000000000000000000000000000017 -S31540048F100000000000000000000000000000000007 -S31540048F2000000000000000000000000000000000F7 -S31540048F3000000000000000000000000000000000E7 -S31540048F4000000000000000000000000000000000D7 -S31540048F5000000000000000000000000000000000C7 -S31540048F6000000000000000000000000000000000B7 -S31540048F7000000000000000000000000000000000A7 -S31540048F800000000000000000000000000000000097 -S31540048F900000000000000000000000000000000087 -S31540048FA00000000000000000000000000000000077 -S31540048FB00000000000000000000000000000000067 -S31540048FC00000000000000000000000000000000057 -S31540048FD00000000000000000000000000000000047 -S31540048FE00000000000000000000000000000000037 -S31540048FF00000000000000000000000000000000027 -S315400490000000000000000000000000000000000016 -S315400490100000000000000000000000000000000006 -S3154004902000000000000000000000000000000000F6 -S3154004903000000000000000000000000000000000E6 -S3154004904000000000000000000000000000000000D6 -S3154004905000000000000000000000000000000000C6 -S3154004906000000000000000000000000000000000B6 -S3154004907000000000000000000000000000000000A6 -S315400490800000000000000000000000000000000096 -S315400490900000000000000000000000000000000086 -S315400490A00000000000000000000000000000000076 -S315400490B00000000000000000000000000000000066 -S315400490C00000000000000000000000000000000056 -S315400490D00000000000000000000000000000000046 -S315400490E00000000000000000000000000000000036 -S315400490F00000000000000000000000000000000026 -S315400491000000000000000000000000000000000015 -S315400491100000000000000000000000000000000005 -S3154004912000000000000000000000000000000000F5 -S3154004913000000000000000000000000000000000E5 -S3154004914000000000000000000000000000000000D5 -S3154004915000000000000000000000000000000000C5 -S3154004916000000000000000000000000000000000B5 -S3154004917000000000000000000000000000000000A5 -S315400491800000000000000000000000000000000095 -S315400491900000000000000000000000000000000085 -S315400491A00000000000000000000000000000000075 -S315400491B00000000000000000000000000000000065 -S315400491C00000000000000000000000000000000055 -S315400491D00000000000000000000000000000000045 -S315400491E00000000000000000000000000000000035 -S315400491F00000000000000000000000000000000025 -S315400492000000000000000000000000000000000014 -S315400492100000000000000000000000000000000004 -S3154004922000000000000000000000000000000000F4 -S3154004923000000000000000000000000000000000E4 -S3154004924000000000000000000000000000000000D4 -S3154004925000000000000000000000000000000000C4 -S3154004926000000000000000000000000000000000B4 -S3154004927000000000000000000000000000000000A4 -S315400492800000000000000000000000000000000094 -S315400492900000000000000000000000000000000084 -S315400492A00000000000000000000000000000000074 -S315400492B00000000000000000000000000000000064 -S315400492C00000000000000000000000000000000054 -S315400492D00000000000000000000000000000000044 -S315400492E00000000000000000000000000000000034 -S315400492F00000000000000000000000000000000024 -S315400493000000000000000000000000000000000013 -S315400493100000000000000000000000000000000003 -S3154004932000000000000000000000000000000000F3 -S3154004933000000000000000000000000000000000E3 -S3154004934000000000000000000000000000000000D3 -S3154004935000000000000000000000000000000000C3 -S3154004936000000000000000000000000000000000B3 -S3154004937000000000000000000000000000000000A3 -S315400493800000000000000000000000000000000093 -S315400493900000000000000000000000000000000083 -S315400493A00000000000000000000000000000000073 -S315400493B00000000000000000000000000000000063 -S315400493C00000000000000000000000000000000053 -S315400493D00000000000000000000000000000000043 -S315400493E00000000000000000000000000000000033 -S315400493F00000000000000000000000000000000023 -S315400494000000000000000000000000000000000012 -S315400494100000000000000000000000000000000002 -S3154004942000000000000000000000000000000000F2 -S3154004943000000000000000000000000000000000E2 -S3154004944000000000000000000000000000000000D2 -S3154004945000000000000000000000000000000000C2 -S3154004946000000000000000000000000000000000B2 -S3154004947000000000000000000000000000000000A2 -S315400494800000000000000000000000000000000092 -S315400494900000000000000000000000000000000082 -S315400494A00000000000000000000000000000000072 -S315400494B00000000000000000000000000000000062 -S315400494C00000000000000000000000000000000052 -S315400494D00000000000000000000000000000000042 -S315400494E00000000000000000000000000000000032 -S315400494F00000000000000000000000000000000022 -S315400495000000000000000000000000000000000011 -S315400495100000000000000000000000000000000001 -S3154004952000000000000000000000000000000000F1 -S3154004953000000000000000000000000000000000E1 -S3154004954000000000000000000000000000000000D1 -S3154004955000000000000000000000000000000000C1 -S3154004956000000000000000000000000000000000B1 -S3154004957000000000000000000000000000000000A1 -S315400495800000000000000000000000000000000091 -S315400495900000000000000000000000000000000081 -S315400495A00000000000000000000000000000000071 -S315400495B00000000000000000000000000000000061 -S315400495C00000000000000000000000000000000051 -S315400495D00000000000000000000000000000000041 -S315400495E00000000000000000000000000000000031 -S315400495F00000000000000000000000000000000021 -S315400496000000000000000000000000000000000010 -S315400496100000000000000000000000000000000000 -S3154004962000000000000000000000000000000000F0 -S3154004963000000000000000000000000000000000E0 -S3154004964000000000000000000000000000000000D0 -S3154004965000000000000000000000000000000000C0 -S3154004966000000000000000000000000000000000B0 -S3154004967000000000000000000000000000000000A0 -S315400496800000000000000000000000000000000090 -S315400496900000000000000000000000000000000080 -S315400496A00000000000000000000000000000000070 -S315400496B00000000000000000000000000000000060 -S315400496C00000000000000000000000000000000050 -S315400496D00000000000000000000000000000000040 -S315400496E00000000000000000000000000000000030 -S315400496F00000000000000000000000000000000020 -S31540049700000000000000000000000000000000000F -S3154004971000000000000000000000000000000000FF -S3154004972000000000000000000000000000000000EF -S3154004973000000000000000000000000000000000DF -S3154004974000000000000000000000000000000000CF -S3154004975000000000000000000000000000000000BF -S3154004976000000000000000000000000000000000AF -S31540049770000000000000000000000000000000009F -S31540049780000000000000000000000000000000008F -S31540049790000000000000000000000000000000007F -S315400497A0000000000000000000000000000000006F -S315400497B0000000000000000000000000000000005F -S315400497C0000000000000000000000000000000004F -S315400497D0000000000000000000000000000000003F -S315400497E0000000000000000000000000000000002F -S315400497F0000000000000000000000000000000001F -S31540049800000000000000000000000000000000000E -S3154004981000000000000000000000000000000000FE -S3154004982000000000000000000000000000000000EE -S3154004983000000000000000000000000000000000DE -S3154004984000000000000000000000000000000000CE -S3154004985000000000000000000000000000000000BE -S3154004986000000000000000000000000000000000AE -S31540049870000000000000000000000000000000009E -S31540049880000000000000000000000000000000008E -S31540049890000000000000000000000000000000007E -S315400498A0000000000000000000000000000000006E -S315400498B0000000000000000000000000000000005E -S315400498C0000000000000000000000000000000004E -S315400498D0000000000000000000000000000000003E -S315400498E0000000000000000000000000000000002E -S315400498F0000000000000000000000000000000001E -S31540049900000000000000000000000000000000000D -S3154004991000000000000000000000000000000000FD -S3154004992000000000000000000000000000000000ED -S3154004993000000000000000000000000000000000DD -S3154004994000000000000000000000000000000000CD -S3154004995000000000000000000000000000000000BD -S3154004996000000000000000000000000000000000AD -S31540049970000000000000000000000000000000009D -S31540049980000000000000000000000000000000008D -S31540049990000000000000000000000000000000007D -S315400499A0000000000000000000000000000000006D -S315400499B0000000000000000000000000000000005D -S315400499C0000000000000000000000000000000004D -S315400499D0000000000000000000000000000000003D -S315400499E0000000000000000000000000000000002D -S315400499F0000000000000000000000000000000001D -S31540049A00000000000000000000000000000000000C -S31540049A1000000000000000000000000000000000FC -S31540049A2000000000000000000000000000000000EC -S31540049A3000000000000000000000000000000000DC -S31540049A4000000000000000000000000000000000CC -S31540049A5000000000000000000000000000000000BC -S31540049A6000000000000000000000000000000000AC -S31540049A70000000000000000000000000000000009C -S31540049A80000000000000000000000000000000008C -S31540049A90000000000000000000000000000000007C -S31540049AA0000000000000000000000000000000006C -S31540049AB0000000000000000000000000000000005C -S31540049AC0000000000000000000000000000000004C -S31540049AD0000000000000000000000000000000003C -S31540049AE0000000000000000000000000000000002C -S31540049AF0000000000000000000000000000000001C -S31540049B00000000000000000000000000000000000B -S31540049B1000000000000000000000000000000000FB -S31540049B2000000000000000000000000000000000EB -S31540049B3000000000000000000000000000000000DB -S31540049B4000000000000000000000000000000000CB -S31540049B5000000000000000000000000000000000BB -S31540049B6000000000000000000000000000000000AB -S31540049B70000000000000000000000000000000009B -S31540049B80000000000000000000000000000000008B -S31540049B90000000000000000000000000000000007B -S31540049BA0000000000000000000000000000000006B -S31540049BB0000000000000000000000000000000005B -S31540049BC0000000000000000000000000000000004B -S31540049BD0000000000000000000000000000000003B -S31540049BE0000000000000000000000000000000002B -S31540049BF0000000000000000000000000000000001B -S31540049C00000000000000000000000000000000000A -S31540049C1000000000000000000000000000000000FA -S31540049C2000000000000000000000000000000000EA -S31540049C3000000000000000000000000000000000DA -S31540049C4000000000000000000000000000000000CA -S31540049C5000000000000000000000000000000000BA -S31540049C6000000000000000000000000000000000AA -S31540049C70000000000000000000000000000000009A -S31540049C80000000000000000000000000000000008A -S31540049C90000000000000000000000000000000007A -S31540049CA0000000000000000000000000000000006A -S31540049CB0000000000000000000000000000000005A -S31540049CC0000000000000000000000000000000004A -S31540049CD0000000000000000000000000000000003A -S31540049CE0000000000000000000000000000000002A -S31540049CF0000000000000000000000000000000001A -S31540049D000000000000000000000000000000000009 -S31540049D1000000000000000000000000000000000F9 -S31540049D2000000000000000000000000000000000E9 -S31540049D3000000000000000000000000000000000D9 -S31540049D4000000000000000000000000000000000C9 -S31540049D5000000000000000000000000000000000B9 -S31540049D6000000000000000000000000000000000A9 -S31540049D700000000000000000000000000000000099 -S31540049D800000000000000000000000000000000089 -S31540049D900000000000000000000000000000000079 -S31540049DA00000000000000000000000000000000069 -S31540049DB00000000000000000000000000000000059 -S31540049DC00000000000000000000000000000000049 -S31540049DD00000000000000000000000000000000039 -S31540049DE00000000000000000000000000000000029 -S31540049DF00000000000000000000000000000000019 -S31540049E000000000000000000000000000000000008 -S31540049E1000000000000000000000000000000000F8 -S31540049E2000000000000000000000000000000000E8 -S31540049E3000000000000000000000000000000000D8 -S31540049E4000000000000000000000000000000000C8 -S31540049E5000000000000000000000000000000000B8 -S31540049E6000000000000000000000000000000000A8 -S31540049E700000000000000000000000000000000098 -S31540049E800000000000000000000000000000000088 -S31540049E900000000000000000000000000000000078 -S31540049EA00000000000000000000000000000000068 -S31540049EB00000000000000000000000000000000058 -S31540049EC00000000000000000000000000000000048 -S31540049ED00000000000000000000000000000000038 -S31540049EE00000000000000000000000000000000028 -S31540049EF00000000000000000000000000000000018 -S31540049F000000000000000000000000000000000007 -S31540049F1000000000000000000000000000000000F7 -S31540049F2000000000000000000000000000000000E7 -S31540049F3000000000000000000000000000000000D7 -S31540049F4000000000000000000000000000000000C7 -S31540049F5000000000000000000000000000000000B7 -S31540049F6000000000000000000000000000000000A7 -S31540049F700000000000000000000000000000000097 -S31540049F800000000000000000000000000000000087 -S31540049F900000000000000000000000000000000077 -S31540049FA00000000000000000000000000000000067 -S31540049FB00000000000000000000000000000000057 -S31540049FC00000000000000000000000000000000047 -S31540049FD00000000000000000000000000000000037 -S31540049FE00000000000000000000000000000000027 -S31540049FF00000000000000000000000000000000017 -S3154004A0000000000000000000000000000000000006 -S3154004A01000000000000000000000000000000000F6 -S3154004A02000000000000000000000000000000000E6 -S3154004A03000000000000000000000000000000000D6 -S3154004A04000000000000000000000000000000000C6 -S3154004A05000000000000000000000000000000000B6 -S3154004A06000000000000000000000000000000000A6 -S3154004A0700000000000000000000000000000000096 -S3154004A0800000000000000000000000000000000086 -S3154004A0900000000000000000000000000000000076 -S3154004A0A00000000000000000000000000000000066 -S3154004A0B00000000000000000000000000000000056 -S3154004A0C00000000000000000000000000000000046 -S3154004A0D00000000000000000000000000000000036 -S3154004A0E00000000000000000000000000000000026 -S3154004A0F00000000000000000000000000000000016 -S3154004A1000000000000000000000000000000000005 -S3154004A11000000000000000000000000000000000F5 -S3154004A12000000000000000000000000000000000E5 -S3154004A13000000000000000000000000000000000D5 -S3154004A14000000000000000000000000000000000C5 -S3154004A15000000000000000000000000000000000B5 -S3154004A16000000000000000000000000000000000A5 -S3154004A1700000000000000000000000000000000095 -S3154004A1800000000000000000000000000000000085 -S3154004A1900000000000000000000000000000000075 -S3154004A1A00000000000000000000000000000000065 -S3154004A1B00000000000000000000000000000000055 -S3154004A1C00000000000000000000000000000000045 -S3154004A1D00000000000000000000000000000000035 -S3154004A1E00000000000000000000000000000000025 -S3154004A1F00000000000000000000000000000000015 -S3154004A2000000000000000000000000000000000004 -S3154004A21000000000000000000000000000000000F4 -S3154004A22000000000000000000000000000000000E4 -S3154004A23000000000000000000000000000000000D4 -S3154004A24000000000000000000000000000000000C4 -S3154004A25000000000000000000000000000000000B4 -S3154004A26000000000000000000000000000000000A4 -S3154004A2700000000000000000000000000000000094 -S3154004A2800000000000000000000000000000000084 -S3154004A2900000000000000000000000000000000074 -S3154004A2A00000000000000000000000000000000064 -S3154004A2B00000000000000000000000000000000054 -S3154004A2C00000000000000000000000000000000044 -S3154004A2D00000000000000000000000000000000034 -S3154004A2E00000000000000000000000000000000024 -S3154004A2F00000000000000000000000000000000014 -S3154004A3000000000000000000000000000000000003 -S3154004A31000000000000000000000000000000000F3 -S3154004A32000000000000000000000000000000000E3 -S3154004A33000000000000000000000000000000000D3 -S3154004A34000000000000000000000000000000000C3 -S3154004A35000000000000000000000000000000000B3 -S3154004A36000000000000000000000000000000000A3 -S3154004A3700000000000000000000000000000000093 -S3154004A3800000000000000000000000000000000083 -S3154004A3900000000000000000000000000000000073 -S3154004A3A00000000000000000000000000000000063 -S3154004A3B00000000000000000000000000000000053 -S3154004A3C00000000000000000000000000000000043 -S3154004A3D00000000000000000000000000000000033 -S3154004A3E00000000000000000000000000000000023 -S3154004A3F00000000000000000000000000000000013 -S3154004A4000000000000000000000000000000000002 -S3154004A41000000000000000000000000000000000F2 -S3154004A42000000000000000000000000000000000E2 -S3154004A43000000000000000000000000000000000D2 -S3154004A44000000000000000000000000000000000C2 -S3154004A45000000000000000000000000000000000B2 -S3154004A46000000000000000000000000000000000A2 -S3154004A4700000000000000000000000000000000092 -S3154004A4800000000000000000000000000000000082 -S3154004A4900000000000000000000000000000000072 -S3154004A4A00000000000000000000000000000000062 -S3154004A4B00000000000000000000000000000000052 -S3154004A4C00000000000000000000000000000000042 -S3154004A4D00000000000000000000000000000000032 -S3154004A4E00000000000000000000000000000000022 -S3154004A4F00000000000000000000000000000000012 -S3154004A5000000000000000000000000000000000001 -S3154004A51000000000000000000000000000000000F1 -S3154004A52000000000000000000000000000000000E1 -S3154004A53000000000000000000000000000000000D1 -S3154004A54000000000000000000000000000000000C1 -S3154004A55000000000000000000000000000000000B1 -S3154004A56000000000000000000000000000000000A1 -S3154004A5700000000000000000000000000000000091 -S3154004A5800000000000000000000000000000000081 -S3154004A5900000000000000000000000000000000071 -S3154004A5A00000000000000000000000000000000061 -S3154004A5B00000000000000000000000000000000051 -S3154004A5C00000000000000000000000000000000041 -S3154004A5D00000000000000000000000000000000031 -S3154004A5E00000000000000000000000000000000021 -S3154004A5F00000000000000000000000000000000011 -S3154004A6000000000000000000000000000000000000 -S3154004A61000000000000000000000000000000000F0 -S3154004A62000000000000000000000000000000000E0 -S3154004A63000000000000000000000000000000000D0 -S3154004A64000000000000000000000000000000000C0 -S3154004A65000000000000000000000000000000000B0 -S3154004A66000000000000000000000000000000000A0 -S3154004A6700000000000000000000000000000000090 -S3154004A6800000000000000000000000000000000080 -S3154004A6900000000000000000000000000000000070 -S3154004A6A00000000000000000000000000000000060 -S3154004A6B00000000000000000000000000000000050 -S3154004A6C00000000000000000000000000000000040 -S3154004A6D00000000000000000000000000000000030 -S3154004A6E00000000000000000000000000000000020 -S3154004A6F00000000000000000000000000000000010 -S3154004A70000000000000000000000000000000000FF -S3154004A71000000000000000000000000000000000EF -S3154004A72000000000000000000000000000000000DF -S3154004A73000000000000000000000000000000000CF -S3154004A74000000000000000000000000000000000BF -S3154004A75000000000000000000000000000000000AF -S3154004A760000000000000000000000000000000009F -S3154004A770000000000000000000000000000000008F -S3154004A780000000000000000000000000000000007F -S3154004A790000000000000000000000000000000006F -S3154004A7A0000000000000000000000000000000005F -S3154004A7B0000000000000000000000000000000004F -S3154004A7C0000000000000000000000000000000003F -S3154004A7D0000000000000000000000000000000002F -S3154004A7E0000000000000000000000000000000001F -S3154004A7F0000000000000000000000000000000000F -S3154004A80000000000000000000000000000000000FE -S3154004A81000000000000000000000000000000000EE -S3154004A82000000000000000000000000000000000DE -S3154004A83000000000000000000000000000000000CE -S3154004A84000000000000000000000000000000000BE -S3154004A85000000000000000000000000000000000AE -S3154004A860000000000000000000000000000000009E -S3154004A870000000000000000000000000000000008E -S3154004A880000000000000000000000000000000007E -S3154004A890000000000000000000000000000000006E -S3154004A8A0000000000000000000000000000000005E -S3154004A8B0000000000000000000000000000000004E -S3154004A8C0000000000000000000000000000000003E -S3154004A8D0000000000000000000000000000000002E -S3154004A8E0000000000000000000000000000000001E -S3154004A8F0000000000000000000000000000000000E -S3154004A90000000000000000000000000000000000FD -S3154004A91000000000000000000000000000000000ED -S3154004A92000000000000000000000000000000000DD -S3154004A93000000000000000000000000000000000CD -S3154004A94000000000000000000000000000000000BD -S3154004A95000000000000000000000000000000000AD -S3154004A960000000000000000000000000000000009D -S3154004A970000000000000000000000000000000008D -S3154004A980000000000000000000000000000000007D -S3154004A990000000000000000000000000000000006D -S3154004A9A0000000000000000000000000000000005D -S3154004A9B0000000000000000000000000000000004D -S3154004A9C0000000000000000000000000000000003D -S3154004A9D0000000000000000000000000000000002D -S3154004A9E0000000000000000000000000000000001D -S3154004A9F0000000000000000000000000000000000D -S3154004AA0000000000000000000000000000000000FC -S3154004AA1000000000000000000000000000000000EC -S3154004AA2000000000000000000000000000000000DC -S3154004AA3000000000000000000000000000000000CC -S3154004AA4000000000000000000000000000000000BC -S3154004AA5000000000000000000000000000000000AC -S3154004AA60000000000000000000000000000000009C -S3154004AA70000000000000000000000000000000008C -S3154004AA80000000000000000000000000000000007C -S3154004AA90000000000000000000000000000000006C -S3154004AAA0000000000000000000000000000000005C -S3154004AAB0000000000000000000000000000000004C -S3154004AAC0000000000000000000000000000000003C -S3154004AAD0000000000000000000000000000000002C -S3154004AAE0000000000000000000000000000000001C -S3154004AAF0000000000000000000000000000000000C -S3154004AB0000000000000000000000000000000000FB -S3154004AB1000000000000000000000000000000000EB -S3154004AB2000000000000000000000000000000000DB -S3154004AB3000000000000000000000000000000000CB -S3154004AB4000000000000000000000000000000000BB -S3154004AB5000000000000000000000000000000000AB -S3154004AB60000000000000000000000000000000009B -S3154004AB70000000000000000000000000000000008B -S3154004AB80000000000000000000000000000000007B -S3154004AB90000000000000000000000000000000006B -S3154004ABA0000000000000000000000000000000005B -S3154004ABB0000000000000000000000000000000004B -S3154004ABC0000000000000000000000000000000003B -S3154004ABD0000000000000000000000000000000002B -S3154004ABE0000000000000000000000000000000001B -S3154004ABF0000000000000000000000000000000000B -S3154004AC0000000000000000000000000000000000FA -S3154004AC1000000000000000000000000000000000EA -S3154004AC2000000000000000000000000000000000DA -S3154004AC3000000000000000000000000000000000CA -S3154004AC4000000000000000000000000000000000BA -S3154004AC5000000000000000000000000000000000AA -S3154004AC60000000000000000000000000000000009A -S3154004AC70000000000000000000000000000000008A -S3154004AC80000000000000000000000000000000007A -S3154004AC90000000000000000000000000000000006A -S3154004ACA0000000000000000000000000000000005A -S3154004ACB0000000000000000000000000000000004A -S3154004ACC0000000000000000000000000000000003A -S3154004ACD0000000000000000000000000000000002A -S3154004ACE0000000000000000000000000000000001A -S3154004ACF0000000000000000000000000000000000A -S3154004AD0000000000000000000000000000000000F9 -S3154004AD1000000000000000000000000000000000E9 -S3154004AD2000000000000000000000000000000000D9 -S3154004AD3000000000000000000000000000000000C9 -S3154004AD4000000000000000000000000000000000B9 -S3154004AD5000000000000000000000000000000000A9 -S3154004AD600000000000000000000000000000000099 -S3154004AD700000000000000000000000000000000089 -S3154004AD800000000000000000000000000000000079 -S3154004AD900000000000000000000000000000000069 -S3154004ADA00000000000000000000000000000000059 -S3154004ADB00000000000000000000000000000000049 -S3154004ADC00000000000000000000000000000000039 -S3154004ADD00000000000000000000000000000000029 -S3154004ADE00000000000000000000000000000000019 -S3154004ADF00000000000000000000000000000000009 -S3154004AE0000000000000000000000000000000000F8 -S3154004AE1000000000000000000000000000000000E8 -S3154004AE2000000000000000000000000000000000D8 -S3154004AE3000000000000000000000000000000000C8 -S3154004AE4000000000000000000000000000000000B8 -S3154004AE5000000000000000000000000000000000A8 -S3154004AE600000000000000000000000000000000098 -S3154004AE700000000000000000000000000000000088 -S3154004AE800000000000000000000000000000000078 -S3154004AE900000000000000000000000000000000068 -S3154004AEA00000000000000000000000000000000058 -S3154004AEB00000000000000000000000000000000048 -S3154004AEC00000000000000000000000000000000038 -S3154004AED00000000000000000000000000000000028 -S3154004AEE00000000000000000000000000000000018 -S3154004AEF00000000000000000000000000000000008 -S3154004AF0000000000000000000000000000000000F7 -S3154004AF1000000000000000000000000000000000E7 -S3154004AF2000000000000000000000000000000000D7 -S3154004AF3000000000000000000000000000000000C7 -S3154004AF4000000000000000000000000000000000B7 -S3154004AF5000000000000000000000000000000000A7 -S3154004AF600000000000000000000000000000000097 -S3154004AF700000000000000000000000000000000087 -S3154004AF800000000000000000000000000000000077 -S3154004AF900000000000000000000000000000000067 -S3154004AFA00000000000000000000000000000000057 -S3154004AFB00000000000000000000000000000000047 -S3154004AFC00000000000000000000000000000000037 -S3154004AFD00000000000000000000000000000000027 -S3154004AFE00000000000000000000000000000000017 -S3154004AFF00000000000000000000000000000000007 -S3154004B00000000000000000000000000000000000F6 -S3154004B01000000000000000000000000000000000E6 -S3154004B02000000000000000000000000000000000D6 -S3154004B03000000000000000000000000000000000C6 -S3154004B04000000000000000000000000000000000B6 -S3154004B05000000000000000000000000000000000A6 -S3154004B0600000000000000000000000000000000096 -S3154004B0700000000000000000000000000000000086 -S3154004B0800000000000000000000000000000000076 -S3154004B0900000000000000000000000000000000066 -S3154004B0A00000000000000000000000000000000056 -S3154004B0B00000000000000000000000000000000046 -S3154004B0C00000000000000000000000000000000036 -S3154004B0D00000000000000000000000000000000026 -S3154004B0E00000000000000000000000000000000016 -S3154004B0F00000000000000000000000000000000006 -S3154004B10000000000000000000000000000000000F5 -S3154004B11000000000000000000000000000000000E5 -S3154004B12000000000000000000000000000000000D5 -S3154004B13000000000000000000000000000000000C5 -S3154004B14000000000000000000000000000000000B5 -S3154004B15000000000000000000000000000000000A5 -S3154004B1600000000000000000000000000000000095 -S3154004B1700000000000000000000000000000000085 -S3154004B1800000000000000000000000000000000075 -S3154004B1900000000000000000000000000000000065 -S3154004B1A00000000000000000000000000000000055 -S3154004B1B00000000000000000000000000000000045 -S3154004B1C00000000000000000000000000000000035 -S3154004B1D00000000000000000000000000000000025 -S3154004B1E00000000000000000000000000000000015 -S3154004B1F00000000000000000000000000000000005 -S3154004B20000000000000000000000000000000000F4 -S3154004B21000000000000000000000000000000000E4 -S3154004B22000000000000000000000000000000000D4 -S3154004B23000000000000000000000000000000000C4 -S3154004B24000000000000000000000000000000000B4 -S3154004B25000000000000000000000000000000000A4 -S3154004B2600000000000000000000000000000000094 -S3154004B2700000000000000000000000000000000084 -S3154004B2800000000000000000000000000000000074 -S3154004B2900000000000000000000000000000000064 -S3154004B2A00000000000000000000000000000000054 -S3154004B2B00000000000000000000000000000000044 -S3154004B2C00000000000000000000000000000000034 -S3154004B2D00000000000000000000000000000000024 -S3154004B2E00000000000000000000000000000000014 -S3154004B2F00000000000000000000000000000000004 -S3154004B30000000000000000000000000000000000F3 -S3154004B31000000000000000000000000000000000E3 -S3154004B32000000000000000000000000000000000D3 -S3154004B33000000000000000000000000000000000C3 -S3154004B34000000000000000000000000000000000B3 -S3154004B35000000000000000000000000000000000A3 -S3154004B3600000000000000000000000000000000093 -S3154004B3700000000000000000000000000000000083 -S3154004B3800000000000000000000000000000000073 -S3154004B3900000000000000000000000000000000063 -S3154004B3A00000000000000000000000000000000053 -S3154004B3B00000000000000000000000000000000043 -S3154004B3C00000000000000000000000000000000033 -S3154004B3D00000000000000000000000000000000023 -S3154004B3E00000000000000000000000000000000013 -S3154004B3F00000000000000000000000000000000003 -S3154004B40000000000000000000000000000000000F2 -S3154004B41000000000000000000000000000000000E2 -S3154004B42000000000000000000000000000000000D2 -S3154004B43000000000000000000000000000000000C2 -S3154004B44000000000000000000000000000000000B2 -S3154004B45000000000000000000000000000000000A2 -S3154004B4600000000000000000000000000000000092 -S3154004B4700000000000000000000000000000000082 -S3154004B4800000000000000000000000000000000072 -S3154004B4900000000000000000000000000000000062 -S3154004B4A00000000000000000000000000000000052 -S3154004B4B00000000000000000000000000000000042 -S3154004B4C00000000000000000000000000000000032 -S3154004B4D00000000000000000000000000000000022 -S3154004B4E00000000000000000000000000000000012 -S3154004B4F00000000000000000000000000000000002 -S3154004B50000000000000000000000000000000000F1 -S3154004B51000000000000000000000000000000000E1 -S3154004B52000000000000000000000000000000000D1 -S3154004B53000000000000000000000000000000000C1 -S3154004B54000000000000000000000000000000000B1 -S3154004B55000000000000000000000000000000000A1 -S3154004B5600000000000000000000000000000000091 -S3154004B5700000000000000000000000000000000081 -S3154004B5800000000000000000000000000000000071 -S3154004B5900000000000000000000000000000000061 -S3154004B5A00000000000000000000000000000000051 -S3154004B5B00000000000000000000000000000000041 -S3154004B5C00000000000000000000000000000000031 -S3154004B5D00000000000000000000000000000000021 -S3154004B5E00000000000000000000000000000000011 -S3154004B5F00000000000000000000000000000000001 -S3154004B60000000000000000000000000000000000F0 -S3154004B61000000000000000000000000000000000E0 -S3154004B62000000000000000000000000000000000D0 -S3154004B63000000000000000000000000000000000C0 -S3154004B64000000000000000000000000000000000B0 -S3154004B65000000000000000000000000000000000A0 -S3154004B6600000000000000000000000000000000090 -S3154004B6700000000000000000000000000000000080 -S3154004B6800000000000000000000000000000000070 -S3154004B6900000000000000000000000000000000060 -S3154004B6A00000000000000000000000000000000050 -S3154004B6B00000000000000000000000000000000040 -S3154004B6C00000000000000000000000000000000030 -S3154004B6D00000000000000000000000000000000020 -S3154004B6E00000000000000000000000000000000010 -S3154004B6F00000000000000000000000000000000000 -S3154004B70000000000000000000000000000000000EF -S3154004B71000000000000000000000000000000000DF -S3154004B72000000000000000000000000000000000CF -S3154004B73000000000000000000000000000000000BF -S3154004B74000000000000000000000000000000000AF -S3154004B750000000000000000000000000000000009F -S3154004B760000000000000000000000000000000008F -S3154004B770000000000000000000000000000000007F -S3154004B780000000000000000000000000000000006F -S3154004B790000000000000000000000000000000005F -S3154004B7A0000000000000000000000000000000004F -S3154004B7B0000000000000000000000000000000003F -S3154004B7C0000000000000000000000000000000002F -S3154004B7D0000000000000000000000000000000001F -S3154004B7E0000000000000000000000000000000000F -S3154004B7F000000000000000000000000000000000FF -S3154004B80000000000000000000000000000000000EE -S3154004B81000000000000000000000000000000000DE -S3154004B82000000000000000000000000000000000CE -S3154004B83000000000000000000000000000000000BE -S3154004B84000000000000000000000000000000000AE -S3154004B850000000000000000000000000000000009E -S3154004B860000000000000000000000000000000008E -S3154004B870000000000000000000000000000000007E -S3154004B880000000000000000000000000000000006E -S3154004B890000000000000000000000000000000005E -S3154004B8A0000000000000000000000000000000004E -S3154004B8B0000000000000000000000000000000003E -S3154004B8C0000000000000000000000000000000002E -S3154004B8D0000000000000000000000000000000001E -S3154004B8E0000000000000000000000000000000000E -S3154004B8F000000000000000000000000000000000FE -S3154004B90000000000000000000000000000000000ED -S3154004B91000000000000000000000000000000000DD -S3154004B92000000000000000000000000000000000CD -S3154004B93000000000000000000000000000000000BD -S3154004B94000000000000000000000000000000000AD -S3154004B950000000000000000000000000000000009D -S3154004B960000000000000000000000000000000008D -S3154004B970000000000000000000000000000000007D -S3154004B980000000000000000000000000000000006D -S3154004B990000000000000000000000000000000005D -S3154004B9A0000000000000000000000000000000004D -S3154004B9B0000000000000000000000000000000003D -S3154004B9C0000000000000000000000000000000002D -S3154004B9D0000000000000000000000000000000001D -S3154004B9E0000000000000000000000000000000000D -S3154004B9F000000000000000000000000000000000FD -S3154004BA0000000000000000000000000000000000EC -S3154004BA1000000000000000000000000000000000DC -S3154004BA2000000000000000000000000000000000CC -S3154004BA3000000000000000000000000000000000BC -S3154004BA4000000000000000000000000000000000AC -S3154004BA50000000000000000000000000000000009C -S3154004BA60000000000000000000000000000000008C -S3154004BA70000000000000000000000000000000007C -S3154004BA80000000000000000000000000000000006C -S3154004BA90000000000000000000000000000000005C -S3154004BAA0000000000000000000000000000000004C -S3154004BAB0000000000000000000000000000000003C -S3154004BAC0000000000000000000000000000000002C -S3154004BAD0000000000000000000000000000000001C -S3154004BAE0000000000000000000000000000000000C -S3154004BAF000000000000000000000000000000000FC -S3154004BB0000000000000000000000000000000000EB -S3154004BB1000000000000000000000000000000000DB -S3154004BB2000000000000000000000000000000000CB -S3154004BB3000000000000000000000000000000000BB -S3154004BB4000000000000000000000000000000000AB -S3154004BB50000000000000000000000000000000009B -S3154004BB60000000000000000000000000000000008B -S3154004BB70000000000000000000000000000000007B -S3154004BB80000000000000000000000000000000006B -S3154004BB90000000000000000000000000000000005B -S3154004BBA0000000000000000000000000000000004B -S3154004BBB0000000000000000000000000000000003B -S3154004BBC0000000000000000000000000000000002B -S3154004BBD0000000000000000000000000000000001B -S3154004BBE0000000000000000000000000000000000B -S3154004BBF000000000000000000000000000000000FB -S3154004BC0000000000000000000000000000000000EA -S3154004BC1000000000000000000000000000000000DA -S3154004BC2000000000000000000000000000000000CA -S3154004BC3000000000000000000000000000000000BA -S3154004BC4000000000000000000000000000000000AA -S3154004BC50000000000000000000000000000000009A -S3154004BC60000000000000000000000000000000008A -S3154004BC70000000000000000000000000000000007A -S3154004BC80000000000000000000000000000000006A -S3154004BC90000000000000000000000000000000005A -S3154004BCA0000000000000000000000000000000004A -S3154004BCB0000000000000000000000000000000003A -S3154004BCC0000000000000000000000000000000002A -S3154004BCD0000000000000000000000000000000001A -S3154004BCE0000000000000000000000000000000000A -S3154004BCF000000000000000000000000000000000FA -S3154004BD0000000000000000000000000000000000E9 -S3154004BD1000000000000000000000000000000000D9 -S3154004BD2000000000000000000000000000000000C9 -S3154004BD3000000000000000000000000000000000B9 -S3154004BD4000000000000000000000000000000000A9 -S3154004BD500000000000000000000000000000000099 -S3154004BD600000000000000000000000000000000089 -S3154004BD700000000000000000000000000000000079 -S3154004BD800000000000000000000000000000000069 -S3154004BD900000000000000000000000000000000059 -S3154004BDA00000000000000000000000000000000049 -S3154004BDB00000000000000000000000000000000039 -S3154004BDC00000000000000000000000000000000029 -S3154004BDD00000000000000000000000000000000019 -S3154004BDE00000000000000000000000000000000009 -S3154004BDF000000000000000000000000000000000F9 -S3154004BE0000000000000000000000000000000000E8 -S3154004BE1000000000000000000000000000000000D8 -S3154004BE2000000000000000000000000000000000C8 -S3154004BE3000000000000000000000000000000000B8 -S3154004BE4000000000000000000000000000000000A8 -S3154004BE500000000000000000000000000000000098 -S3154004BE600000000000000000000000000000000088 -S3154004BE700000000000000000000000000000000078 -S3154004BE800000000000000000000000000000000068 -S3154004BE900000000000000000000000000000000058 -S3154004BEA00000000000000000000000000000000048 -S3154004BEB00000000000000000000000000000000038 -S3154004BEC00000000000000000000000000000000028 -S3154004BED00000000000000000000000000000000018 -S3154004BEE00000000000000000000000000000000008 -S3154004BEF000000000000000000000000000000000F8 -S3154004BF0000000000000000000000000000000000E7 -S3154004BF1000000000000000000000000000000000D7 -S3154004BF2000000000000000000000000000000000C7 -S3154004BF3000000000000000000000000000000000B7 -S3154004BF4000000000000000000000000000000000A7 -S3154004BF500000000000000000000000000000000097 -S3154004BF600000000000000000000000000000000087 -S3154004BF700000000000000000000000000000000077 -S3154004BF800000000000000000000000000000000067 -S3154004BF900000000000000000000000000000000057 -S3154004BFA00000000000000000000000000000000047 -S3154004BFB00000000000000000000000000000000037 -S3154004BFC00000000000000000000000000000000027 -S3154004BFD00000000000000000000000000000000017 -S3154004BFE00000000000000000000000000000000007 -S3154004BFF000000000000000000000000000000000F7 -S3154004C00000000000000000000000000000000000E6 -S3154004C01000000000000000000000000000000000D6 -S3154004C02000000000000000000000000000000000C6 -S3154004C03000000000000000000000000000000000B6 -S3154004C04000000000000000000000000000000000A6 -S3154004C0500000000000000000000000000000000096 -S3154004C0600000000000000000000000000000000086 -S3154004C0700000000000000000000000000000000076 -S3154004C0800000000000000000000000000000000066 -S3154004C0900000000000000000000000000000000056 -S3154004C0A00000000000000000000000000000000046 -S3154004C0B00000000000000000000000000000000036 -S3154004C0C00000000000000000000000000000000026 -S3154004C0D00000000000000000000000000000000016 -S3154004C0E00000000000000000000000000000000006 -S3154004C0F000000000000000000000000000000000F6 -S3154004C10000000000000000000000000000000000E5 -S3154004C11000000000000000000000000000000000D5 -S3154004C12000000000000000000000000000000000C5 -S3154004C13000000000000000000000000000000000B5 -S3154004C14000000000000000000000000000000000A5 -S3154004C1500000000000000000000000000000000095 -S3154004C1600000000000000000000000000000000085 -S3154004C1700000000000000000000000000000000075 -S3154004C1800000000000000000000000000000000065 -S3154004C1900000000000000000000000000000000055 -S3154004C1A00000000000000000000000000000000045 -S3154004C1B00000000000000000000000000000000035 -S3154004C1C00000000000000000000000000000000025 -S3154004C1D00000000000000000000000000000000015 -S3154004C1E00000000000000000000000000000000005 -S3154004C1F000000000000000000000000000000000F5 -S3154004C20000000000000000000000000000000000E4 -S3154004C21000000000000000000000000000000000D4 -S3154004C22000000000000000000000000000000000C4 -S3154004C23000000000000000000000000000000000B4 -S3154004C24000000000000000000000000000000000A4 -S3154004C2500000000000000000000000000000000094 -S3154004C2600000000000000000000000000000000084 -S3154004C2700000000000000000000000000000000074 -S3154004C2800000000000000000000000000000000064 -S3154004C2900000000000000000000000000000000054 -S3154004C2A00000000000000000000000000000000044 -S3154004C2B00000000000000000000000000000000034 -S3154004C2C00000000000000000000000000000000024 -S3154004C2D00000000000000000000000000000000014 -S3154004C2E00000000000000000000000000000000004 -S3154004C2F000000000000000000000000000000000F4 -S3154004C30000000000000000000000000000000000E3 -S3154004C31000000000000000000000000000000000D3 -S3154004C32000000000000000000000000000000000C3 -S3154004C33000000000000000000000000000000000B3 -S3154004C34000000000000000000000000000000000A3 -S3154004C3500000000000000000000000000000000093 -S3154004C3600000000000000000000000000000000083 -S3154004C3700000000000000000000000000000000073 -S3154004C3800000000000000000000000000000000063 -S3154004C3900000000000000000000000000000000053 -S3154004C3A00000000000000000000000000000000043 -S3154004C3B00000000000000000000000000000000033 -S3154004C3C00000000000000000000000000000000023 -S3154004C3D00000000000000000000000000000000013 -S3154004C3E00000000000000000000000000000000003 -S3154004C3F000000000000000000000000000000000F3 -S3154004C40000000000000000000000000000000000E2 -S3154004C41000000000000000000000000000000000D2 -S3154004C42000000000000000000000000000000000C2 -S3154004C43000000000000000000000000000000000B2 -S3154004C44000000000000000000000000000000000A2 -S3154004C4500000000000000000000000000000000092 -S3154004C4600000000000000000000000000000000082 -S3154004C4700000000000000000000000000000000072 -S3154004C4800000000000000000000000000000000062 -S3154004C4900000000000000000000000000000000052 -S3154004C4A00000000000000000000000000000000042 -S3154004C4B00000000000000000000000000000000032 -S3154004C4C00000000000000000000000000000000022 -S3154004C4D00000000000000000000000000000000012 -S3154004C4E00000000000000000000000000000000002 -S3154004C4F000000000000000000000000000000000F2 -S3154004C50000000000000000000000000000000000E1 -S3154004C51000000000000000000000000000000000D1 -S3154004C52000000000000000000000000000000000C1 -S3154004C53000000000000000000000000000000000B1 -S3154004C54000000000000000000000000000000000A1 -S3154004C5500000000000000000000000000000000091 -S3154004C5600000000000000000000000000000000081 -S3154004C5700000000000000000000000000000000071 -S3154004C5800000000000000000000000000000000061 -S3154004C5900000000000000000000000000000000051 -S3154004C5A00000000000000000000000000000000041 -S3154004C5B00000000000000000000000000000000031 -S3154004C5C00000000000000000000000000000000021 -S3154004C5D00000000000000000000000000000000011 -S3154004C5E00000000000000000000000000000000001 -S3154004C5F000000000000000000000000000000000F1 -S3154004C60000000000000000000000000000000000E0 -S3154004C61000000000000000000000000000000000D0 -S3154004C62000000000000000000000000000000000C0 -S3154004C63000000000000000000000000000000000B0 -S3154004C64000000000000000000000000000000000A0 -S3154004C6500000000000000000000000000000000090 -S3154004C6600000000000000000000000000000000080 -S3154004C6700000000000000000000000000000000070 -S3154004C6800000000000000000000000000000000060 -S3154004C6900000000000000000000000000000000050 -S3154004C6A00000000000000000000000000000000040 -S3154004C6B00000000000000000000000000000000030 -S3154004C6C00000000000000000000000000000000020 -S3154004C6D00000000000000000000000000000000010 -S3154004C6E00000000000000000000000000000000000 -S3154004C6F000000000000000000000000000000000F0 -S3154004C70000000000000000000000000000000000DF -S3154004C71000000000000000000000000000000000CF -S3154004C72000000000000000000000000000000000BF -S3154004C73000000000000000000000000000000000AF -S3154004C740000000000000000000000000000000009F -S3154004C750000000000000000000000000000000008F -S3154004C760000000000000000000000000000000007F -S3154004C770000000000000000000000000000000006F -S3154004C780000000000000000000000000000000005F -S3154004C790000000000000000000000000000000004F -S3154004C7A0000000000000000000000000000000003F -S3154004C7B0000000000000000000000000000000002F -S3154004C7C0000000000000000000000000000000001F -S3154004C7D0000000000000000000000000000000000F -S3154004C7E000000000000000000000000000000000FF -S3154004C7F000000000000000000000000000000000EF -S3154004C80000000000000000000000000000000000DE -S3154004C81000000000000000000000000000000000CE -S3154004C82000000000000000000000000000000000BE -S3154004C83000000000000000000000000000000000AE -S3154004C840000000000000000000000000000000009E -S3154004C850000000000000000000000000000000008E -S3154004C860000000000000000000000000000000007E -S3154004C870000000000000000000000000000000006E -S3154004C880000000000000000000000000000000005E -S3154004C890000000000000000000000000000000004E -S3154004C8A0000000000000000000000000000000003E -S3154004C8B0000000000000000000000000000000002E -S3154004C8C0000000000000000000000000000000001E -S3154004C8D0000000000000000000000000000000000E -S3154004C8E000000000000000000000000000000000FE -S3154004C8F000000000000000000000000000000000EE -S3154004C90000000000000000000000000000000000DD -S3154004C91000000000000000000000000000000000CD -S3154004C92000000000000000000000000000000000BD -S3154004C93000000000000000000000000000000000AD -S3154004C940000000000000000000000000000000009D -S3154004C950000000000000000000000000000000008D -S3154004C960000000000000000000000000000000007D -S3154004C970000000000000000000000000000000006D -S3154004C980000000000000000000000000000000005D -S3154004C990000000000000000000000000000000004D -S3154004C9A0000000000000000000000000000000003D -S3154004C9B0000000000000000000000000000000002D -S3154004C9C0000000000000000000000000000000001D -S3154004C9D0000000000000000000000000000000000D -S3154004C9E000000000000000000000000000000000FD -S3154004C9F000000000000000000000000000000000ED -S3154004CA0000000000000000000000000000000000DC -S3154004CA1000000000000000000000000000000000CC -S3154004CA2000000000000000000000000000000000BC -S3154004CA3000000000000000000000000000000000AC -S3154004CA40000000000000000000000000000000009C -S3154004CA50000000000000000000000000000000008C -S3154004CA60000000000000000000000000000000007C -S3154004CA70000000000000000000000000000000006C -S3154004CA80000000000000000000000000000000005C -S3154004CA90000000000000000000000000000000004C -S3154004CAA0000000000000000000000000000000003C -S3154004CAB0000000000000000000000000000000002C -S3154004CAC0000000000000000000000000000000001C -S3154004CAD0000000000000000000000000000000000C -S3154004CAE000000000000000000000000000000000FC -S3154004CAF000000000000000000000000000000000EC -S3154004CB0000000000000000000000000000000000DB -S3154004CB1000000000000000000000000000000000CB -S3154004CB2000000000000000000000000000000000BB -S3154004CB3000000000000000000000000000000000AB -S3154004CB40000000000000000000000000000000009B -S3154004CB50000000000000000000000000000000008B -S3154004CB60000000000000000000000000000000007B -S3154004CB70000000000000000000000000000000006B -S3154004CB80000000000000000000000000000000005B -S3154004CB90000000000000000000000000000000004B -S3154004CBA0000000000000000000000000000000003B -S3154004CBB0000000000000000000000000000000002B -S3154004CBC0000000000000000000000000000000001B -S3154004CBD0000000000000000000000000000000000B -S3154004CBE000000000000000000000000000000000FB -S3154004CBF000000000000000000000000000000000EB -S3154004CC0000000000000000000000000000000000DA -S3154004CC1000000000000000000000000000000000CA -S3154004CC2000000000000000000000000000000000BA -S3154004CC3000000000000000000000000000000000AA -S3154004CC40000000000000000000000000000000009A -S3154004CC50000000000000000000000000000000008A -S3154004CC60000000000000000000000000000000007A -S3154004CC70000000000000000000000000000000006A -S3154004CC80000000000000000000000000000000005A -S3154004CC90000000000000000000000000000000004A -S3154004CCA0000000000000000000000000000000003A -S3154004CCB0000000000000000000000000000000002A -S3154004CCC0000000000000000000000000000000001A -S3154004CCD0000000000000000000000000000000000A -S3154004CCE000000000000000000000000000000000FA -S3154004CCF000000000000000000000000000000000EA -S3154004CD0000000000000000000000000000000000D9 -S3154004CD1000000000000000000000000000000000C9 -S3154004CD2000000000000000000000000000000000B9 -S3154004CD3000000000000000000000000000000000A9 -S3154004CD400000000000000000000000000000000099 -S3154004CD500000000000000000000000000000000089 -S3154004CD600000000000000000000000000000000079 -S3154004CD700000000000000000000000000000000069 -S3154004CD800000000000000000000000000000000059 -S3154004CD900000000000000000000000000000000049 -S3154004CDA00000000000000000000000000000000039 -S3154004CDB00000000000000000000000000000000029 -S3154004CDC00000000000000000000000000000000019 -S3154004CDD00000000000000000000000000000000009 -S3154004CDE000000000000000000000000000000000F9 -S3154004CDF000000000000000000000000000000000E9 -S3154004CE0000000000000000000000000000000000D8 -S3154004CE1000000000000000000000000000000000C8 -S3154004CE2000000000000000000000000000000000B8 -S3154004CE3000000000000000000000000000000000A8 -S3154004CE400000000000000000000000000000000098 -S3154004CE500000000000000000000000000000000088 -S3154004CE600000000000000000000000000000000078 -S3154004CE700000000000000000000000000000000068 -S3154004CE800000000000000000000000000000000058 -S3154004CE900000000000000000000000000000000048 -S3154004CEA00000000000000000000000000000000038 -S3154004CEB00000000000000000000000000000000028 -S3154004CEC00000000000000000000000000000000018 -S3154004CED00000000000000000000000000000000008 -S3154004CEE000000000000000000000000000000000F8 -S3154004CEF000000000000000000000000000000000E8 -S3154004CF0000000000000000000000000000000000D7 -S3154004CF1000000000000000000000000000000000C7 -S3154004CF2000000000000000000000000000000000B7 -S3154004CF3000000000000000000000000000000000A7 -S3154004CF400000000000000000000000000000000097 -S3154004CF500000000000000000000000000000000087 -S3154004CF600000000000000000000000000000000077 -S3154004CF700000000000000000000000000000000067 -S3154004CF800000000000000000000000000000000057 -S3154004CF900000000000000000000000000000000047 -S3154004CFA00000000000000000000000000000000037 -S3154004CFB00000000000000000000000000000000027 -S3154004CFC00000000000000000000000000000000017 -S3154004CFD00000000000000000000000000000000007 -S3154004CFE000000000000000000000000000000000F7 -S3154004CFF000000000000000000000000000000000E7 -S3154004D00000000000000000000000000000000000D6 -S3154004D01000000000000000000000000000000000C6 -S3154004D02000000000000000000000000000000000B6 -S3154004D03000000000000000000000000000000000A6 -S3154004D0400000000000000000000000000000000096 -S3154004D0500000000000000000000000000000000086 -S3154004D0600000000000000000000000000000000076 -S3154004D0700000000000000000000000000000000066 -S3154004D0800000000000000000000000000000000056 -S3154004D0900000000000000000000000000000000046 -S3154004D0A00000000000000000000000000000000036 -S3154004D0B00000000000000000000000000000000026 -S3154004D0C00000000000000000000000000000000016 -S3154004D0D00000000000000000000000000000000006 -S3154004D0E000000000000000000000000000000000F6 -S3154004D0F000000000000000000000000000000000E6 -S3154004D10000000000000000000000000000000000D5 -S3154004D11000000000000000000000000000000000C5 -S3154004D12000000000000000000000000000000000B5 -S3154004D13000000000000000000000000000000000A5 -S3154004D1400000000000000000000000000000000095 -S3154004D1500000000000000000000000000000000085 -S3154004D1600000000000000000000000000000000075 -S3154004D1700000000000000000000000000000000065 -S3154004D1800000000000000000000000000000000055 -S3154004D1900000000000000000000000000000000045 -S3154004D1A00000000000000000000000000000000035 -S3154004D1B00000000000000000000000000000000025 -S3154004D1C00000000000000000000000000000000015 -S3154004D1D00000000000000000000000000000000005 -S3154004D1E000000000000000000000000000000000F5 -S3154004D1F000000000000000000000000000000000E5 -S3154004D20000000000000000000000000000000000D4 -S3154004D21000000000000000000000000000000000C4 -S3154004D22000000000000000000000000000000000B4 -S3154004D23000000000000000000000000000000000A4 -S3154004D2400000000000000000000000000000000094 -S3154004D2500000000000000000000000000000000084 -S3154004D2600000000000000000000000000000000074 -S3154004D2700000000000000000000000000000000064 -S3154004D2800000000000000000000000000000000054 -S3154004D2900000000000000000000000000000000044 -S3154004D2A00000000000000000000000000000000034 -S3154004D2B00000000000000000000000000000000024 -S3154004D2C00000000000000000000000000000000014 -S3154004D2D00000000000000000000000000000000004 -S3154004D2E000000000000000000000000000000000F4 -S3154004D2F000000000000000000000000000000000E4 -S3154004D30000000000000000000000000000000000D3 -S3154004D31000000000000000000000000000000000C3 -S3154004D32000000000000000000000000000000000B3 -S3154004D33000000000000000000000000000000000A3 -S3154004D3400000000000000000000000000000000093 -S3154004D3500000000000000000000000000000000083 -S3154004D3600000000000000000000000000000000073 -S3154004D3700000000000000000000000000000000063 -S3154004D3800000000000000000000000000000000053 -S3154004D3900000000000000000000000000000000043 -S3154004D3A00000000000000000000000000000000033 -S3154004D3B00000000000000000000000000000000023 -S3154004D3C00000000000000000000000000000000013 -S3154004D3D00000000000000000000000000000000003 -S3154004D3E000000000000000000000000000000000F3 -S3154004D3F000000000000000000000000000000000E3 -S3154004D40000000000000000000000000000000000D2 -S3154004D41000000000000000000000000000000000C2 -S3154004D42000000000000000000000000000000000B2 -S3154004D43000000000000000000000000000000000A2 -S3154004D4400000000000000000000000000000000092 -S3154004D4500000000000000000000000000000000082 -S3154004D4600000000000000000000000000000000072 -S3154004D4700000000000000000000000000000000062 -S3154004D4800000000000000000000000000000000052 -S3154004D4900000000000000000000000000000000042 -S3154004D4A00000000000000000000000000000000032 -S3154004D4B00000000000000000000000000000000022 -S3154004D4C00000000000000000000000000000000012 -S3154004D4D00000000000000000000000000000000002 -S3154004D4E000000000000000000000000000000000F2 -S3154004D4F000000000000000000000000000000000E2 -S3154004D50000000000000000000000000000000000D1 -S3154004D51000000000000000000000000000000000C1 -S3154004D52000000000000000000000000000000000B1 -S3154004D53000000000000000000000000000000000A1 -S3154004D5400000000000000000000000000000000091 -S3154004D5500000000000000000000000000000000081 -S3154004D5600000000000000000000000000000000071 -S3154004D5700000000000000000000000000000000061 -S3154004D5800000000000000000000000000000000051 -S3154004D5900000000000000000000000000000000041 -S3154004D5A00000000000000000000000000000000031 -S3154004D5B00000000000000000000000000000000021 -S3154004D5C00000000000000000000000000000000011 -S3154004D5D00000000000000000000000000000000001 -S3154004D5E000000000000000000000000000000000F1 -S3154004D5F000000000000000000000000000000000E1 -S3154004D60000000000000000000000000000000000D0 -S3154004D61000000000000000000000000000000000C0 -S3154004D62000000000000000000000000000000000B0 -S3154004D63000000000000000000000000000000000A0 -S3154004D6400000000000000000000000000000000090 -S3154004D6500000000000000000000000000000000080 -S3154004D6600000000000000000000000000000000070 -S3154004D6700000000000000000000000000000000060 -S3154004D6800000000000000000000000000000000050 -S3154004D6900000000000000000000000000000000040 -S3154004D6A00000000000000000000000000000000030 -S3154004D6B00000000000000000000000000000000020 -S3154004D6C00000000000000000000000000000000010 -S3154004D6D00000000000000000000000000000000000 -S3154004D6E000000000000000000000000000000000F0 -S3154004D6F000000000000000000000000000000000E0 -S3154004D70000000000000000000000000000000000CF -S3154004D71000000000000000000000000000000000BF -S3154004D72000000000000000000000000000000000AF -S3154004D730000000000000000000000000000000009F -S3154004D740000000000000000000000000000000008F -S3154004D750000000000000000000000000000000007F -S3154004D760000000000000000000000000000000006F -S3154004D770000000000000000000000000000000005F -S3154004D780000000000000000000000000000000004F -S3154004D790000000000000000000000000000000003F -S3154004D7A0000000000000000000000000000000002F -S3154004D7B0000000000000000000000000000000001F -S3154004D7C0000000000000000000000000000000000F -S3154004D7D000000000000000000000000000000000FF -S3154004D7E000000000000000000000000000000000EF -S3154004D7F000000000000000000000000000000000DF -S3154004D80000000000000000000000000000000000CE -S3154004D81000000000000000000000000000000000BE -S3154004D82000000000000000000000000000000000AE -S3154004D830000000000000000000000000000000009E -S3154004D840000000000000000000000000000000008E -S3154004D850000000000000000000000000000000007E -S3154004D860000000000000000000000000000000006E -S3154004D870000000000000000000000000000000005E -S3154004D880000000000000000000000000000000004E -S3154004D890000000000000000000000000000000003E -S3154004D8A0000000000000000000000000000000002E -S3154004D8B0000000000000000000000000000000001E -S3154004D8C0000000000000000000000000000000000E -S3154004D8D000000000000000000000000000000000FE -S3154004D8E000000000000000000000000000000000EE -S3154004D8F000000000000000000000000000000000DE -S3154004D90000000000000000000000000000000000CD -S3154004D91000000000000000000000000000000000BD -S3154004D92000000000000000000000000000000000AD -S3154004D930000000000000000000000000000000009D -S3154004D940000000000000000000000000000000008D -S3154004D950000000000000000000000000000000007D -S3154004D960000000000000000000000000000000006D -S3154004D970000000000000000000000000000000005D -S3154004D980000000000000000000000000000000004D -S3154004D990000000000000000000000000000000003D -S3154004D9A0000000000000000000000000000000002D -S3154004D9B0000000000000000000000000000000001D -S3154004D9C0000000000000000000000000000000000D -S3154004D9D000000000000000000000000000000000FD -S3154004D9E000000000000000000000000000000000ED -S3154004D9F000000000000000000000000000000000DD -S3154004DA0000000000000000000000000000000000CC -S3154004DA1000000000000000000000000000000000BC -S3154004DA2000000000000000000000000000000000AC -S3154004DA30000000000000000000000000000000009C -S3154004DA40000000000000000000000000000000008C -S3154004DA50000000000000000000000000000000007C -S3154004DA60000000000000000000000000000000006C -S3154004DA70000000000000000000000000000000005C -S3154004DA80000000000000000000000000000000004C -S3154004DA90000000000000000000000000000000003C -S3154004DAA0000000000000000000000000000000002C -S3154004DAB0000000000000000000000000000000001C -S3154004DAC0000000000000000000000000000000000C -S3154004DAD000000000000000000000000000000000FC -S3154004DAE000000000000000000000000000000000EC -S3154004DAF000000000000000000000000000000000DC -S3154004DB0000000000000000000000000000000000CB -S3154004DB1000000000000000000000000000000000BB -S3154004DB2000000000000000000000000000000000AB -S3154004DB30000000000000000000000000000000009B -S3154004DB40000000000000000000000000000000008B -S3154004DB50000000000000000000000000000000007B -S3154004DB60000000000000000000000000000000006B -S3154004DB70000000000000000000000000000000005B -S3154004DB80000000000000000000000000000000004B -S3154004DB90000000000000000000000000000000003B -S3154004DBA0000000000000000000000000000000002B -S3154004DBB0000000000000000000000000000000001B -S3154004DBC0000000000000000000000000000000000B -S3154004DBD000000000000000000000000000000000FB -S3154004DBE000000000000000000000000000000000EB -S3154004DBF000000000000000000000000000000000DB -S3154004DC0000000000000000000000000000000000CA -S3154004DC1000000000000000000000000000000000BA -S3154004DC2000000000000000000000000000000000AA -S3154004DC30000000000000000000000000000000009A -S3154004DC40000000000000000000000000000000008A -S3154004DC50000000000000000000000000000000007A -S3154004DC60000000000000000000000000000000006A -S3154004DC70000000000000000000000000000000005A -S3154004DC80000000000000000000000000000000004A -S3154004DC90000000000000000000000000000000003A -S3154004DCA0000000000000000000000000000000002A -S3154004DCB0000000000000000000000000000000001A -S3154004DCC0000000000000000000000000000000000A -S3154004DCD000000000000000000000000000000000FA -S3154004DCE000000000000000000000000000000000EA -S3154004DCF000000000000000000000000000000000DA -S3154004DD0000000000000000000000000000000000C9 -S3154004DD1000000000000000000000000000000000B9 -S3154004DD2000000000000000000000000000000000A9 -S3154004DD300000000000000000000000000000000099 -S3154004DD400000000000000000000000000000000089 -S3154004DD500000000000000000000000000000000079 -S3154004DD600000000000000000000000000000000069 -S3154004DD700000000000000000000000000000000059 -S3154004DD800000000000000000000000000000000049 -S3154004DD900000000000000000000000000000000039 -S3154004DDA00000000000000000000000000000000029 -S3154004DDB00000000000000000000000000000000019 -S3154004DDC00000000000000000000000000000000009 -S3154004DDD000000000000000000000000000000000F9 -S3154004DDE000000000000000000000000000000000E9 -S3154004DDF000000000000000000000000000000000D9 -S3154004DE0000000000000000000000000000000000C8 -S3154004DE1000000000000000000000000000000000B8 -S3154004DE2000000000000000000000000000000000A8 -S3154004DE300000000000000000000000000000000098 -S3154004DE400000000000000000000000000000000088 -S3154004DE500000000000000000000000000000000078 -S3154004DE600000000000000000000000000000000068 -S3154004DE700000000000000000000000000000000058 -S3154004DE800000000000000000000000000000000048 -S3154004DE900000000000000000000000000000000038 -S3154004DEA00000000000000000000000000000000028 -S3154004DEB00000000000000000000000000000000018 -S3154004DEC00000000000000000000000000000000008 -S3154004DED000000000000000000000000000000000F8 -S3154004DEE000000000000000000000000000000000E8 -S3154004DEF000000000000000000000000000000000D8 -S3154004DF0000000000000000000000000000000000C7 -S3154004DF1000000000000000000000000000000000B7 -S3154004DF2000000000000000000000000000000000A7 -S3154004DF300000000000000000000000000000000097 -S3154004DF400000000000000000000000000000000087 -S3154004DF500000000000000000000000000000000077 -S3154004DF600000000000000000000000000000000067 -S3154004DF700000000000000000000000000000000057 -S3154004DF800000000000000000000000000000000047 -S3154004DF900000000000000000000000000000000037 -S3154004DFA00000000000000000000000000000000027 -S3154004DFB00000000000000000000000000000000017 -S3154004DFC00000000000000000000000000000000007 -S3154004DFD000000000000000000000000000000000F7 -S3154004DFE000000000000000000000000000000000E7 -S3154004DFF000000000000000000000000000000000D7 -S3154004E00000000000000000000000000000000000C6 -S3154004E01000000000000000000000000000000000B6 -S3154004E02000000000000000000000000000000000A6 -S3154004E0300000000000000000000000000000000096 -S3154004E0400000000000000000000000000000000086 -S3154004E0500000000000000000000000000000000076 -S3154004E0600000000000000000000000000000000066 -S3154004E0700000000000000000000000000000000056 -S3154004E0800000000000000000000000000000000046 -S3154004E0900000000000000000000000000000000036 -S3154004E0A00000000000000000000000000000000026 -S3154004E0B00000000000000000000000000000000016 -S3154004E0C00000000000000000000000000000000006 -S3154004E0D000000000000000000000000000000000F6 -S3154004E0E000000000000000000000000000000000E6 -S3154004E0F000000000000000000000000000000000D6 -S3154004E10000000000000000000000000000000000C5 -S3154004E11000000000000000000000000000000000B5 -S3154004E12000000000000000000000000000000000A5 -S3154004E1300000000000000000000000000000000095 -S3154004E1400000000000000000000000000000000085 -S3154004E1500000000000000000000000000000000075 -S3154004E1600000000000000000000000000000000065 -S3154004E1700000000000000000000000000000000055 -S3154004E1800000000000000000000000000000000045 -S3154004E1900000000000000000000000000000000035 -S3154004E1A00000000000000000000000000000000025 -S3154004E1B00000000000000000000000000000000015 -S3154004E1C00000000000000000000000000000000005 -S3154004E1D000000000000000000000000000000000F5 -S3154004E1E000000000000000000000000000000000E5 -S3154004E1F000000000000000000000000000000000D5 -S3154004E20000000000000000000000000000000000C4 -S3154004E21000000000000000000000000000000000B4 -S3154004E22000000000000000000000000000000000A4 -S3154004E2300000000000000000000000000000000094 -S3154004E2400000000000000000000000000000000084 -S3154004E2500000000000000000000000000000000074 -S3154004E2600000000000000000000000000000000064 -S3154004E2700000000000000000000000000000000054 -S3154004E2800000000000000000000000000000000044 -S3154004E2900000000000000000000000000000000034 -S3154004E2A00000000000000000000000000000000024 -S3154004E2B00000000000000000000000000000000014 -S3154004E2C00000000000000000000000000000000004 -S3154004E2D000000000000000000000000000000000F4 -S3154004E2E000000000000000000000000000000000E4 -S3154004E2F000000000000000000000000000000000D4 -S3154004E30000000000000000000000000000000000C3 -S3154004E31000000000000000000000000000000000B3 -S3154004E32000000000000000000000000000000000A3 -S3154004E3300000000000000000000000000000000093 -S3154004E3400000000000000000000000000000000083 -S3154004E3500000000000000000000000000000000073 -S3154004E3600000000000000000000000000000000063 -S3154004E3700000000000000000000000000000000053 -S3154004E3800000000000000000000000000000000043 -S3154004E3900000000000000000000000000000000033 -S3154004E3A00000000000000000000000000000000023 -S3154004E3B00000000000000000000000000000000013 -S3154004E3C00000000000000000000000000000000003 -S3154004E3D000000000000000000000000000000000F3 -S3154004E3E000000000000000000000000000000000E3 -S3154004E3F000000000000000000000000000000000D3 -S3154004E40000000000000000000000000000000000C2 -S3154004E41000000000000000000000000000000000B2 -S3154004E42000000000000000000000000000000000A2 -S3154004E4300000000000000000000000000000000092 -S3154004E4400000000000000000000000000000000082 -S3154004E4500000000000000000000000000000000072 -S3154004E4600000000000000000000000000000000062 -S3154004E4700000000000000000000000000000000052 -S3154004E4800000000000000000000000000000000042 -S3154004E4900000000000000000000000000000000032 -S3154004E4A00000000000000000000000000000000022 -S3154004E4B00000000000000000000000000000000012 -S3154004E4C00000000000000000000000000000000002 -S3154004E4D000000000000000000000000000000000F2 -S3154004E4E000000000000000000000000000000000E2 -S3154004E4F000000000000000000000000000000000D2 -S3154004E50000000000000000000000000000000000C1 -S3154004E51000000000000000000000000000000000B1 -S3154004E52000000000000000000000000000000000A1 -S3154004E5300000000000000000000000000000000091 -S3154004E5400000000000000000000000000000000081 -S3154004E5500000000000000000000000000000000071 -S3154004E5600000000000000000000000000000000061 -S3154004E5700000000000000000000000000000000051 -S3154004E5800000000000000000000000000000000041 -S3154004E5900000000000000000000000000000000031 -S3154004E5A00000000000000000000000000000000021 -S3154004E5B00000000000000000000000000000000011 -S3154004E5C00000000000000000000000000000000001 -S3154004E5D000000000000000000000000000000000F1 -S3154004E5E000000000000000000000000000000000E1 -S3154004E5F000000000000000000000000000000000D1 -S3154004E60000000000000000000000000000000000C0 -S3154004E61000000000000000000000000000000000B0 -S3154004E62000000000000000000000000000000000A0 -S3154004E6300000000000000000000000000000000090 -S3154004E6400000000000000000000000000000000080 -S3154004E6500000000000000000000000000000000070 -S3154004E6600000000000000000000000000000000060 -S3154004E6700000000000000000000000000000000050 -S3154004E6800000000000000000000000000000000040 -S3154004E6900000000000000000000000000000000030 -S3154004E6A00000000000000000000000000000000020 -S3154004E6B00000000000000000000000000000000010 -S3154004E6C00000000000000000000000000000000000 -S3154004E6D000000000000000000000000000000000F0 -S3154004E6E000000000000000000000000000000000E0 -S3154004E6F000000000000000000000000000000000D0 -S3154004E70000000000000000000000000000000000BF -S3154004E71000000000000000000000000000000000AF -S3154004E720000000000000000000000000000000009F -S3154004E730000000000000000000000000000000008F -S3154004E740000000000000000000000000000000007F -S3154004E750000000000000000000000000000000006F -S3154004E760000000000000000000000000000000005F -S3154004E770000000000000000000000000000000004F -S3154004E780000000000000000000000000000000003F -S3154004E790000000000000000000000000000000002F -S3154004E7A0000000000000000000000000000000001F -S3154004E7B0000000000000000000000000000000000F -S3154004E7C000000000000000000000000000000000FF -S3154004E7D000000000000000000000000000000000EF -S3154004E7E000000000000000000000000000000000DF -S3154004E7F000000000000000000000000000000000CF -S3154004E80000000000000000000000000000000000BE -S3154004E81000000000000000000000000000000000AE -S3154004E820000000000000000000000000000000009E -S3154004E830000000000000000000000000000000008E -S3154004E840000000000000000000000000000000007E -S3154004E850000000000000000000000000000000006E -S3154004E860000000000000000000000000000000005E -S3154004E870000000000000000000000000000000004E -S3154004E880000000000000000000000000000000003E -S3154004E890000000000000000000000000000000002E -S3154004E8A0000000000000000000000000000000001E -S3154004E8B0000000000000000000000000000000000E -S3154004E8C000000000000000000000000000000000FE -S3154004E8D000000000000000000000000000000000EE -S3154004E8E000000000000000000000000000000000DE -S3154004E8F000000000000000000000000000000000CE -S3154004E90000000000000000000000000000000000BD -S3154004E91000000000000000000000000000000000AD -S3154004E920000000000000000000000000000000009D -S3154004E930000000000000000000000000000000008D -S3154004E940000000000000000000000000000000007D -S3154004E950000000000000000000000000000000006D -S3154004E960000000000000000000000000000000005D -S3154004E970000000000000000000000000000000004D -S3154004E980000000000000000000000000000000003D -S3154004E990000000000000000000000000000000002D -S3154004E9A0000000000000000000000000000000001D -S3154004E9B0000000000000000000000000000000000D -S3154004E9C000000000000000000000000000000000FD -S3154004E9D000000000000000000000000000000000ED -S3154004E9E000000000000000000000000000000000DD -S3154004E9F000000000000000000000000000000000CD -S3154004EA0000000000000000000000000000000000BC -S3154004EA1000000000000000000000000000000000AC -S3154004EA20000000000000000000000000000000009C -S3154004EA30000000000000000000000000000000008C -S3154004EA40000000000000000000000000000000007C -S3154004EA50000000000000000000000000000000006C -S3154004EA60000000000000000000000000000000005C -S3154004EA70000000000000000000000000000000004C -S3154004EA80000000000000000000000000000000003C -S3154004EA90000000000000000000000000000000002C -S3154004EAA0000000000000000000000000000000001C -S3154004EAB0000000000000000000000000000000000C -S3154004EAC000000000000000000000000000000000FC -S3154004EAD000000000000000000000000000000000EC -S3154004EAE000000000000000000000000000000000DC -S3154004EAF000000000000000000000000000000000CC -S3154004EB0000000000000000000000000000000000BB -S3154004EB1000000000000000000000000000000000AB -S3154004EB20000000000000000000000000000000009B -S3154004EB30000000000000000000000000000000008B -S3154004EB40000000000000000000000000000000007B -S3154004EB50000000000000000000000000000000006B -S3154004EB60000000000000000000000000000000005B -S3154004EB70000000000000000000000000000000004B -S3154004EB80000000000000000000000000000000003B -S3154004EB90000000000000000000000000000000002B -S3154004EBA0000000000000000000000000000000001B -S3154004EBB0000000000000000000000000000000000B -S3154004EBC000000000000000000000000000000000FB -S3154004EBD000000000000000000000000000000000EB -S3154004EBE000000000000000000000000000000000DB -S3154004EBF000000000000000000000000000000000CB -S3154004EC0000000000000000000000000000000000BA -S3154004EC1000000000000000000000000000000000AA -S3154004EC20000000000000000000000000000000009A -S3154004EC30000000000000000000000000000000008A -S3154004EC40000000000000000000000000000000007A -S3154004EC50000000000000000000000000000000006A -S3154004EC60000000000000000000000000000000005A -S3154004EC70000000000000000000000000000000004A -S3154004EC80000000000000000000000000000000003A -S3154004EC90000000000000000000000000000000002A -S3154004ECA0000000000000000000000000000000001A -S3154004ECB0000000000000000000000000000000000A -S3154004ECC000000000000000000000000000000000FA -S3154004ECD000000000000000000000000000000000EA -S3154004ECE000000000000000000000000000000000DA -S3154004ECF000000000000000000000000000000000CA -S3154004ED0000000000000000000000000000000000B9 -S3154004ED1000000000000000000000000000000000A9 -S3154004ED200000000000000000000000000000000099 -S3154004ED300000000000000000000000000000000089 -S3154004ED400000000000000000000000000000000079 -S3154004ED500000000000000000000000000000000069 -S3154004ED600000000000000000000000000000000059 -S3154004ED700000000000000000000000000000000049 -S3154004ED800000000000000000000000000000000039 -S3154004ED900000000000000000000000000000000029 -S3154004EDA00000000000000000000000000000000019 -S3154004EDB00000000000000000000000000000000009 -S3154004EDC000000000000000000000000000000000F9 -S3154004EDD000000000000000000000000000000000E9 -S3154004EDE000000000000000000000000000000000D9 -S3154004EDF000000000000000000000000000000000C9 -S3154004EE0000000000000000000000000000000000B8 -S3154004EE1000000000000000000000000000000000A8 -S3154004EE200000000000000000000000000000000098 -S3154004EE300000000000000000000000000000000088 -S3154004EE400000000000000000000000000000000078 -S3154004EE500000000000000000000000000000000068 -S3154004EE600000000000000000000000000000000058 -S3154004EE700000000000000000000000000000000048 -S3154004EE800000000000000000000000000000000038 -S3154004EE900000000000000000000000000000000028 -S3154004EEA00000000000000000000000000000000018 -S3154004EEB00000000000000000000000000000000008 -S3154004EEC000000000000000000000000000000000F8 -S3154004EED000000000000000000000000000000000E8 -S3154004EEE000000000000000000000000000000000D8 -S3154004EEF000000000000000000000000000000000C8 -S3154004EF0000000000000000000000000000000000B7 -S3154004EF1000000000000000000000000000000000A7 -S3154004EF200000000000000000000000000000000097 -S3154004EF300000000000000000000000000000000087 -S3154004EF400000000000000000000000000000000077 -S3154004EF500000000000000000000000000000000067 -S3154004EF600000000000000000000000000000000057 -S3154004EF700000000000000000000000000000000047 -S3154004EF800000000000000000000000000000000037 -S3154004EF900000000000000000000000000000000027 -S3154004EFA00000000000000000000000000000000017 -S3154004EFB00000000000000000000000000000000007 -S3154004EFC000000000000000000000000000000000F7 -S3154004EFD000000000000000000000000000000000E7 -S3154004EFE000000000000000000000000000000000D7 -S3154004EFF000000000000000000000000000000000C7 -S3154004F00000000000000000000000000000000000B6 -S3154004F01000000000000000000000000000000000A6 -S3154004F0200000000000000000000000000000000096 -S3154004F0300000000000000000000000000000000086 -S3154004F0400000000000000000000000000000000076 -S3154004F0500000000000000000000000000000000066 -S3154004F0600000000000000000000000000000000056 -S3154004F0700000000000000000000000000000000046 -S3154004F0800000000000000000000000000000000036 -S3154004F0900000000000000000000000000000000026 -S3154004F0A00000000000000000000000000000000016 -S3154004F0B00000000000000000000000000000000006 -S3154004F0C000000000000000000000000000000000F6 -S3154004F0D000000000000000000000000000000000E6 -S3154004F0E000000000000000000000000000000000D6 -S3154004F0F000000000000000000000000000000000C6 -S3154004F10000000000000000000000000000000000B5 -S3154004F11000000000000000000000000000000000A5 -S3154004F1200000000000000000000000000000000095 -S3154004F1300000000000000000000000000000000085 -S3154004F1400000000000000000000000000000000075 -S3154004F1500000000000000000000000000000000065 -S3154004F1600000000000000000000000000000000055 -S3154004F1700000000000000000000000000000000045 -S3154004F1800000000000000000000000000000000035 -S3154004F1900000000000000000000000000000000025 -S3154004F1A00000000000000000000000000000000015 -S3154004F1B00000000000000000000000000000000005 -S3154004F1C000000000000000000000000000000000F5 -S3154004F1D000000000000000000000000000000000E5 -S3154004F1E000000000000000000000000000000000D5 -S3154004F1F000000000000000000000000000000000C5 -S3154004F20000000000000000000000000000000000B4 -S3154004F21000000000000000000000000000000000A4 -S3154004F2200000000000000000000000000000000094 -S3154004F2300000000000000000000000000000000084 -S3154004F2400000000000000000000000000000000074 -S3154004F2500000000000000000000000000000000064 -S3154004F2600000000000000000000000000000000054 -S3154004F2700000000000000000000000000000000044 -S3154004F2800000000000000000000000000000000034 -S3154004F2900000000000000000000000000000000024 -S3154004F2A00000000000000000000000000000000014 -S3154004F2B00000000000000000000000000000000004 -S3154004F2C000000000000000000000000000000000F4 -S3154004F2D000000000000000000000000000000000E4 -S3154004F2E000000000000000000000000000000000D4 -S3154004F2F000000000000000000000000000000000C4 -S3154004F30000000000000000000000000000000000B3 -S3154004F31000000000000000000000000000000000A3 -S3154004F3200000000000000000000000000000000093 -S3154004F3300000000000000000000000000000000083 -S3154004F3400000000000000000000000000000000073 -S3154004F3500000000000000000000000000000000063 -S3154004F3600000000000000000000000000000000053 -S3154004F3700000000000000000000000000000000043 -S3154004F3800000000000000000000000000000000033 -S3154004F3900000000000000000000000000000000023 -S3154004F3A00000000000000000000000000000000013 -S3154004F3B00000000000000000000000000000000003 -S3154004F3C000000000000000000000000000000000F3 -S3154004F3D000000000000000000000000000000000E3 -S3154004F3E000000000000000000000000000000000D3 -S3154004F3F000000000000000000000000000000000C3 -S3154004F40000000000000000000000000000000000B2 -S3154004F41000000000000000000000000000000000A2 -S3154004F4200000000000000000000000000000000092 -S3154004F4300000000000000000000000000000000082 -S3154004F4400000000000000000000000000000000072 -S3154004F4500000000000000000000000000000000062 -S3154004F4600000000000000000000000000000000052 -S3154004F4700000000000000000000000000000000042 -S3154004F4800000000000000000000000000000000032 -S3154004F4900000000000000000000000000000000022 -S3154004F4A00000000000000000000000000000000012 -S3154004F4B00000000000000000000000000000000002 -S3154004F4C000000000000000000000000000000000F2 -S3154004F4D000000000000000000000000000000000E2 -S3154004F4E000000000000000000000000000000000D2 -S3154004F4F000000000000000000000000000000000C2 -S3154004F50000000000000000000000000000000000B1 -S3154004F51000000000000000000000000000000000A1 -S3154004F5200000000000000000000000000000000091 -S3154004F5300000000000000000000000000000000081 -S3154004F5400000000000000000000000000000000071 -S3154004F5500000000000000000000000000000000061 -S3154004F5600000000000000000000000000000000051 -S3154004F5700000000000000000000000000000000041 -S3154004F5800000000000000000000000000000000031 -S3154004F5900000000000000000000000000000000021 -S3154004F5A00000000000000000000000000000000011 -S3154004F5B00000000000000000000000000000000001 -S3154004F5C000000000000000000000000000000000F1 -S3154004F5D000000000000000000000000000000000E1 -S3154004F5E000000000000000000000000000000000D1 -S3154004F5F000000000000000000000000000000000C1 -S3154004F60000000000000000000000000000000000B0 -S3154004F61000000000000000000000000000000000A0 -S3154004F6200000000000000000000000000000000090 -S3154004F6300000000000000000000000000000000080 -S3154004F6400000000000000000000000000000000070 -S3154004F6500000000000000000000000000000000060 -S3154004F6600000000000000000000000000000000050 -S3154004F6700000000000000000000000000000000040 -S3154004F6800000000000000000000000000000000030 -S3154004F6900000000000000000000000000000000020 -S3154004F6A00000000000000000000000000000000010 -S3154004F6B00000000000000000000000000000000000 -S3154004F6C000000000000000000000000000000000F0 -S3154004F6D000000000000000000000000000000000E0 -S3154004F6E000000000000000000000000000000000D0 -S3154004F6F000000000000000000000000000000000C0 -S3154004F70000000000000000000000000000000000AF -S3154004F710000000000000000000000000000000009F -S3154004F720000000000000000000000000000000008F -S3154004F730000000000000000000000000000000007F -S3154004F740000000000000000000000000000000006F -S3154004F750000000000000000000000000000000005F -S3154004F760000000000000000000000000000000004F -S3154004F770000000000000000000000000000000003F -S3154004F780000000000000000000000000000000002F -S3154004F790000000000000000000000000000000001F -S3154004F7A0000000000000000000000000000000000F -S3154004F7B000000000000000000000000000000000FF -S3154004F7C000000000000000000000000000000000EF -S3154004F7D000000000000000000000000000000000DF -S3154004F7E000000000000000000000000000000000CF -S3154004F7F000000000000000000000000000000000BF -S3154004F80000000000000000000000000000000000AE -S3154004F810000000000000000000000000000000009E -S3154004F820000000000000000000000000000000008E -S3154004F830000000000000000000000000000000007E -S3154004F840000000000000000000000000000000006E -S3154004F850000000000000000000000000000000005E -S3154004F860000000000000000000000000000000004E -S3154004F870000000000000000000000000000000003E -S3154004F880000000000000000000000000000000002E -S3154004F890000000000000000000000000000000001E -S3154004F8A0000000000000000000000000000000000E -S3154004F8B000000000000000000000000000000000FE -S3154004F8C000000000000000000000000000000000EE -S3154004F8D000000000000000000000000000000000DE -S3154004F8E000000000000000000000000000000000CE -S3154004F8F000000000000000000000000000000000BE -S3154004F90000000000000000000000000000000000AD -S3154004F910000000000000000000000000000000009D -S3154004F920000000000000000000000000000000008D -S3154004F930000000000000000000000000000000007D -S3154004F940000000000000000000000000000000006D -S3154004F950000000000000000000000000000000005D -S3154004F960000000000000000000000000000000004D -S3154004F970000000000000000000000000000000003D -S3154004F980000000000000000000000000000000002D -S3154004F990000000000000000000000000000000001D -S3154004F9A0000000000000000000000000000000000D -S3154004F9B000000000000000000000000000000000FD -S3154004F9C000000000000000000000000000000000ED -S3154004F9D000000000000000000000000000000000DD -S3154004F9E000000000000000000000000000000000CD -S3154004F9F000000000000000000000000000000000BD -S3154004FA0000000000000000000000000000000000AC -S3154004FA10000000000000000000000000000000009C -S3154004FA20000000000000000000000000000000008C -S3154004FA30000000000000000000000000000000007C -S3154004FA40000000000000000000000000000000006C -S3154004FA50000000000000000000000000000000005C -S3154004FA60000000000000000000000000000000004C -S3154004FA70000000000000000000000000000000003C -S3154004FA80000000000000000000000000000000002C -S3154004FA90000000000000000000000000000000001C -S3154004FAA0000000000000000000000000000000000C -S3154004FAB000000000000000000000000000000000FC -S3154004FAC000000000000000000000000000000000EC -S3154004FAD000000000000000000000000000000000DC -S3154004FAE000000000000000000000000000000000CC -S3154004FAF000000000000000000000000000000000BC -S3154004FB0000000000000000000000000000000000AB -S3154004FB10000000000000000000000000000000009B -S3154004FB20000000000000000000000000000000008B -S3154004FB30000000000000000000000000000000007B -S3154004FB40000000000000000000000000000000006B -S3154004FB50000000000000000000000000000000005B -S3154004FB60000000000000000000000000000000004B -S3154004FB70000000000000000000000000000000003B -S3154004FB80000000000000000000000000000000002B -S3154004FB90000000000000000000000000000000001B -S3154004FBA0000000000000000000000000000000000B -S3154004FBB000000000000000000000000000000000FB -S3154004FBC000000000000000000000000000000000EB -S3154004FBD000000000000000000000000000000000DB -S3154004FBE000000000000000000000000000000000CB -S3154004FBF000000000000000000000000000000000BB -S3154004FC0000000000000000000000000000000000AA -S3154004FC10000000000000000000000000000000009A -S3154004FC20000000000000000000000000000000008A -S3154004FC30000000000000000000000000000000007A -S3154004FC40000000000000000000000000000000006A -S3154004FC50000000000000000000000000000000005A -S3154004FC60000000000000000000000000000000004A -S3154004FC70000000000000000000000000000000003A -S3154004FC80000000000000000000000000000000002A -S3154004FC90000000000000000000000000000000001A -S3154004FCA0000000000000000000000000000000000A -S3154004FCB000000000000000000000000000000000FA -S3154004FCC000000000000000000000000000000000EA -S3154004FCD000000000000000000000000000000000DA -S3154004FCE000000000000000000000000000000000CA -S3154004FCF000000000000000000000000000000000BA -S3154004FD0000000000000000000000000000000000A9 -S3154004FD100000000000000000000000000000000099 -S3154004FD200000000000000000000000000000000089 -S3154004FD300000000000000000000000000000000079 -S3154004FD400000000000000000000000000000000069 -S3154004FD500000000000000000000000000000000059 -S3154004FD600000000000000000000000000000000049 -S3154004FD700000000000000000000000000000000039 -S3154004FD800000000000000000000000000000000029 -S3154004FD900000000000000000000000000000000019 -S3154004FDA00000000000000000000000000000000009 -S3154004FDB000000000000000000000000000000000F9 -S3154004FDC000000000000000000000000000000000E9 -S3154004FDD000000000000000000000000000000000D9 -S3154004FDE000000000000000000000000000000000C9 -S3154004FDF000000000000000000000000000000000B9 -S3154004FE0000000000000000000000000000000000A8 -S3154004FE100000000000000000000000000000000098 -S3154004FE200000000000000000000000000000000088 -S3154004FE300000000000000000000000000000000078 -S3154004FE400000000000000000000000000000000068 -S3154004FE500000000000000000000000000000000058 -S3154004FE600000000000000000000000000000000048 -S3154004FE700000000000000000000000000000000038 -S3154004FE800000000000000000000000000000000028 -S3154004FE900000000000000000000000000000000018 -S3154004FEA00000000000000000000000000000000008 -S3154004FEB000000000000000000000000000000000F8 -S3154004FEC000000000000000000000000000000000E8 -S3154004FED000000000000000000000000000000000D8 -S3154004FEE000000000000000000000000000000000C8 -S3154004FEF000000000000000000000000000000000B8 -S3154004FF0000000000000000000000000000000000A7 -S3154004FF100000000000000000000000000000000097 -S3154004FF200000000000000000000000000000000087 -S3154004FF300000000000000000000000000000000077 -S3154004FF400000000000000000000000000000000067 -S3154004FF500000000000000000000000000000000057 -S3154004FF600000000000000000000000000000000047 -S3154004FF700000000000000000000000000000000037 -S3154004FF800000000000000000000000000000000027 -S3154004FF900000000000000000000000000000000017 -S3154004FFA00000000000000000000000000000000007 -S3154004FFB000000000000000000000000000000000F7 -S3154004FFC000000000000000000000000000000000E7 -S3154004FFD000000000000000000000000000000000D7 -S3154004FFE000000000000000000000000000000000C7 -S3154004FFF000000000000000000000000000000000B7 -S3154005000000000002000000030000000000000000A0 -S315400500100000000100000000FFFFFFFE0000000396 -S3154005002055555554FFFFFFFE0000000355555554E1 -S31540050030700FFFFE00000007100249240000000073 -S315400500400000000000000000000000020000000360 -S315400500500000000000000003FFFFFFFEFFFFFFFF5B -S3154005006000000002FFFFFFFD000000000000000049 -S31540050070000000010000000000000000FFFFFFFF38 -S315400500800000000000000001FFFFFFFFFFFFFFFF2C -S31540050090FFFFFFFF00000001FFFFFFFFFFFFFFFE21 -S315400500A00000000300000000FFFFFFFEFFFFFFFD0D -S315400500B000000000000000090000000700000001E4 -S315400500C0FFFFFFF700000002FFFFFFFCFFFFFFF801 -S315400500D000000002FFFFFFFCFFFFFFF8FFFFFFFCEC -S315400500E00000000200000008FFFFFFFCFFFFFFFEC7 -S315400500F0FFFFFFF8FFFFFFF800000001FFFFFFF8D5 -S31540050100FFFFFFF7000000000000000B00000002A3 -S31540050110000000050000002F000000020000001747 -S3154005012000003039000002A700000012FFFF076CEF -S315400501300000004DFFFFFCC600003039FFFFFD59AA -S31540050140FFFFFFEEFFFF076CFFFFFFB30000033A1B -S3154005015000000091FFFFE84100000000FFFFFD841D -S31540050160FFFED02F000000000000F6FA006E498120 -S315400501700000000000000000000000000000000034 -S31540050180FFFFF0000000000200000003000000062B -S3154005019000000002FFFFFFFDFFFFFFFA0000000021 -S315400501A0000000010000000000000000FFFFFFFF07 -S315400501B00000000000000001FFFFFFFFFFFFFFFFFB -S315400501C0FFFFFFFF00000001FFFFFFFFFFFFFFFEF0 -S315400501D000000003FFFFFFFAFFFFFFFEFFFFFFFDE5 -S315400501E000000006000000000000000000000009B5 -S315400501F000000000000000000000000000000000B4 -S31540050200000000000000000100000002000000039D -S315400502100000000000000000000000000000000093 -S31540050220FFFFFFFF00020000000000000000000085 -S3154005023040050228400502284005023040050230A7 -S315400502404005023840050238400502404005024057 -S315400502504005024840050248400502504005025007 -S3154005026040050258400502584005026040050260B7 -S315400502704005026840050268400502704005027067 -S315400502804005027840050278400502804005028017 -S3154005029040050288400502884005029040050290C7 -S315400502A04005029840050298400502A0400502A077 -S315400502B0400502A8400502A8400502B0400502B027 -S315400502C0400502B8400502B8400502C0400502C0D7 -S315400502D0400502C8400502C8400502D0400502D087 -S315400502E0400502D8400502D8400502E0400502E037 -S315400502F0400502E8400502E8400502F0400502F0E7 -S31540050300400502F8400502F8400503004005030094 -S315400503104005030840050308400503104005031042 -S3154005032040050318400503184005032040050320F2 -S3154005033040050328400503284005033040050330A2 -S315400503404005033840050338400503404005034052 -S315400503504005034840050348400503504005035002 -S3154005036040050358400503584005036040050360B2 -S315400503704005036840050368400503704005037062 -S315400503804005037840050378400503804005038012 -S3154005039040050388400503884005039040050390C2 -S315400503A04005039840050398400503A0400503A072 -S315400503B0400503A8400503A8400503B0400503B022 -S315400503C0400503B8400503B8400503C0400503C0D2 -S315400503D0400503C8400503C8400503D0400503D082 -S315400503E0400503D8400503D8400503E0400503E032 -S315400503F0400503E8400503E8400503F0400503F0E2 -S31540050400400503F8400503F840050400400504008F -S31540050410400504084005040840050410400504103D -S3154005042040050418400504184005042040050420ED -S31540050430400504284005042840050430400504309D -S31540050440400504384005043840050440400504404D -S3154005045040050448400504484005045040050450FD -S3154005046040050458400504584005046040050460AD -S31540050470400504684005046840050470400504705D -S31540050480400504784005047840050480400504800D -S3154005049040050488400504884005049040050490BD -S315400504A04005049840050498400504A0400504A06D -S315400504B0400504A8400504A8400504B0400504B01D -S315400504C0400504B8400504B8400504C0400504C0CD -S315400504D0400504C8400504C8400504D0400504D07D -S315400504E0400504D8400504D8400504E0400504E02D -S315400504F0400504E8400504E8400504F0400504F0DD -S31540050500400504F8400504F840050500400505008A -S315400505104005050840050508400505104005051038 -S3154005052040050518400505184005052040050520E8 -S315400505304005052840050528400505304005053098 -S315400505404005053840050538400505404005054048 -S3154005055040050548400505484005055040050550F8 -S3154005056040050558400505584005056040050560A8 -S315400505704005056840050568400505704005057058 -S315400505804005057840050578400505804005058008 -S3154005059040050588400505884005059040050590B8 -S315400505A04005059840050598400505A0400505A068 -S315400505B0400505A8400505A8400505B0400505B018 -S315400505C0400505B8400505B8400505C0400505C0C8 -S315400505D0400505C8400505C8400505D0400505D078 -S315400505E0400505D8400505D8400505E0400505E028 -S315400505F0400505E8400505E8400505F0400505F0D8 -S31540050600400505F8400505F8400506004005060085 -S315400506104005060840050608400506104005061033 -S3154005062040050618400506184005062040050620E3 -S3154005063000000000400506300000000000000000F4 -S31540050640000000000000000200000000000000005D -S31540050650000000000000000000000000000000004F -S31540050660000000000000000000000000000000003F -S31540050670000000000000000000000000000000002F -S31540050680000000000000000000000000000000001F -S31540050690000000000000000000000000000000000F -S315400506A0000000000000000000000000400509941D -S315400506B040050A6040050B2C0000000000000000C4 -S315400506C000000000000000000000000000000000DF -S315400506D00000000000000000000000004001D110AD -S315400506E000000000000000000000000000000000BF -S315400506F000000000000000000000000000000000AF -S31540050700000000000000000000000000000000009E -S31540050710000000000000000000000000000000008E -S31540050720000000000000000000000000000000007E -S31540050730000000000000000000000000000000006E -S31540050740000000000000000000000000000000005E -S315400507500000000000000001330EABCD1234E66DFB -S31540050760DEEC0005000B0000000000000000000064 -S31540050770000000000000000000000000000000002E -S31540050780000000000000000000000000000000001E -S31540050790000000000000000000000000000000000E -S315400507A000000000000000000000000000000000FE -S315400507B000000000000000000000000000000000EE -S315400507C000000000000000000000000000000000DE -S315400507D000000000000000000000000000000000CE -S315400507E000000000000000000000000000000000BE -S315400507F000000000000000000000000000000000AE -S31540050800000000000000000000000000000000009D -S31540050810000000000000000000000000000000008D -S31540050820000000000000000000000000000000007D -S31540050830000000000000000000000000000000006D -S31540050840000000000000000000000000000000005D -S31540050850000000000000000000000000000000004D -S31540050860000000000000000000000000000000003D -S31540050870000000000000000000000000000000002D -S31540050880000000000000000000000000000000001D -S31540050890000000000000000000000000000000000D -S315400508A000000000000000000000000000000000FD -S315400508B000000000000000000000000000000000ED -S315400508C000000000000000000000000000000000DD -S315400508D000000000000000000000000000000000CD -S315400508E000000000000000000000000000000000BD -S315400508F000000000000000000000000000000000AD -S31540050900000000000000000000000000000000009C -S31540050910000000000000000000000000000000008C -S31540050920000000000000000000000000000000007C -S31540050930000000000000000000000000000000006C -S31540050940000000000000000000000000000000005C -S31540050950000000000000000000000000000000004C -S31540050960000000000000000000000000000000003C -S31540050970000000000000000000000000000000002C -S31540050980000000000000000000000000000000001C -S31540050990000000000000000000000000000000000C -S315400509A000000000000000000000000000000000FC -S315400509B000000000000000000000000000000000EC -S315400509C000000000000000000000000000000000DC -S315400509D000000000000000000000000000000000CC -S315400509E000000000000000000000000000000000BC -S315400509F000000000000000000000000000000000AC -S31540050A00000000000000000000000000000000009B -S31540050A10000000000000000000000000000000008B -S31540050A20000000000000000000000000000000007B -S31540050A30000000000000000000000000000000006B -S31540050A40000000000000000000000000000000005B -S31540050A50000000000000000000000000000000004B -S31540050A60000000000000000000000000000000003B -S31540050A70000000000000000000000000000000002B -S31540050A80000000000000000000000000000000001B -S31540050A90000000000000000000000000000000000B -S31540050AA000000000000000000000000000000000FB -S31540050AB000000000000000000000000000000000EB -S31540050AC000000000000000000000000000000000DB -S31540050AD000000000000000000000000000000000CB -S31540050AE000000000000000000000000000000000BB -S31540050AF000000000000000000000000000000000AB -S31540050B00000000000000000000000000000000009A -S31540050B10000000000000000000000000000000008A -S31540050B20000000000000000000000000000000007A -S31540050B30000000000000000000000000000000006A -S31540050B40000000000000000000000000000000005A -S31540050B50000000000000000000000000000000004A -S31540050B60000000000000000000000000000000003A -S31540050B70000000000000000000000000000000002A -S31540050B80000000000000000000000000000000001A -S31540050B90000000000000000000000000000000000A -S31540050BA000000000000000000000000000000000FA -S31540050BB000000000000000000000000000000000EA -S31540050BC000000000000000000000000000000000DA -S31540050BD000000000000000000000000000000000CA -S31540050BE000000000000000000000000000000000BA -S31540050BF00000000000000000400506A800000000B7 -S31540050C000000000000000000000000000000000099 -S31540050C100000000000000000000000000000000089 -S31540050C200000000000000000000000000000000079 -S31540050C3000000000800001000000000800000007D9 -S31540050C40000000060000000300000000FFFF8AD0F8 -S30940050C5080000310C2 +S31540048C30000000008000010000000008000000075A +S31540048C40000000060000000300000000FFFF8AD079 +S30D40048C5080000310000000003F S70540000000BA diff --git a/designs/leon3-arrow-bemicro-sdk/sram.srec b/designs/leon3-arrow-bemicro-sdk/sram.srec index 2c2ad0d2..89c3bc29 100755 --- a/designs/leon3-arrow-bemicro-sdk/sram.srec +++ b/designs/leon3-arrow-bemicro-sdk/sram.srec @@ -1,14 +1,14 @@ S00C00007372616D2E7372656365 S31540000000881000000910007281C123F4010000002D -S31540000010A1480000A75000001080203DAC102001F0 +S31540000010A1480000A75000001080203EAC102001EF S3154000002091D0200001000000010000000100000006 S3154000003091D02000010000000100000001000000F6 S31540000040A14800002910007281C5232C0100000040 -S31540000050A14800002910007081C52250010000000F -S31540000060A14800002910007081C522BC0100000093 +S31540000050A14800002910007081C5226801000000F7 +S31540000060A14800002910007081C522D4010000007B S3154000007091D02000010000000100000001000000B6 S3154000008091D02000010000000100000001000000A6 -S31540000090A1480000A75000001080201DAC10200988 +S31540000090A1480000A75000001080201EAC10200987 S315400000A091D0200001000000010000000100000086 S315400000B091D0200001000000010000000100000076 S315400000C091D0200001000000010000000100000066 @@ -16,21 +16,21 @@ S315400000D091D0200001000000010000000100000056 S315400000E091D0200001000000010000000100000046 S315400000F091D0200001000000010000000100000036 S3154000010091D0200001000000010000000100000025 -S31540000110AE102001A148000010807115A7500000C4 -S31540000120AE102002A148000010807111A7500000B7 -S31540000130AE102003A14800001080710DA7500000AA -S31540000140AE102004A148000010807109A75000009D -S31540000150AE102005A148000010807105A750000090 -S31540000160AE102006A148000010807101A750000083 -S31540000170AE102007A1480000108070FDA750000077 -S31540000180AE102008A1480000108070F9A75000006A -S31540000190AE102009A1480000108070F5A75000005D -S315400001A0AE10200AA1480000108070F1A750000050 -S315400001B0AE10200BA1480000108070EDA750000043 -S315400001C0AE10200CA1480000108070E9A750000036 -S315400001D0AE10200DA1480000108070E5A750000029 -S315400001E0AE10200EA1480000108070E1A75000001C -S315400001F0AE10200FA1480000108070DDA75000000F +S31540000110AE102001A14800001080711BA7500000BE +S31540000120AE102002A148000010807117A7500000B1 +S31540000130AE102003A148000010807113A7500000A4 +S31540000140AE102004A14800001080710FA750000097 +S31540000150AE102005A14800001080710BA75000008A +S31540000160AE102006A148000010807107A75000007D +S31540000170AE102007A148000010807103A750000070 +S31540000180AE102008A1480000108070FFA750000064 +S31540000190AE102009A1480000108070FBA750000057 +S315400001A0AE10200AA1480000108070F7A75000004A +S315400001B0AE10200BA1480000108070F3A75000003D +S315400001C0AE10200CA1480000108070EFA750000030 +S315400001D0AE10200DA1480000108070EBA750000023 +S315400001E0AE10200EA1480000108070E7A750000016 +S315400001F0AE10200FA1480000108070E3A750000009 S3154000020091D0200001000000010000000100000024 S3154000021091D0200001000000010000000100000014 S3154000022091D0200001000000010000000100000004 @@ -129,10 +129,10 @@ S315400007E091D020000100000001000000010000003F S315400007F091D020000100000001000000010000002F S3154000080091D020000100000001000000010000001E S3154000081091D020000100000001000000010000000E -S31540000820A14800002910007181C5209001000000F8 -S31540000830A148000010806EBBA750000001000000D8 +S31540000820A14800002910007181C520A801000000E0 +S31540000830A148000010806EC1A750000001000000D2 S3154000084091D02000010000000100000001000000DE -S31540000850A14800002910007181C5207401000000E4 +S31540000850A14800002910007181C5208C01000000CC S3154000086091D02000010000000100000001000000BE S3154000087091D02000010000000100000001000000AE S3154000088091D020000100000001000000010000009E @@ -255,132 +255,132 @@ S31540000FC091D0200001000000010000000100000057 S31540000FD091D0200001000000010000000100000047 S31540000FE091D0200001000000010000000100000037 S31540000FF091D0200001000000010000000100000027 -S315400010009DE3BFC0051001438410A0600710014452 +S315400010009DE3BFC0051001238410A0600710012492 S315400010108610E1B8821000008620C00286A0E00853 -S3154000102036BFFFFFC038800311100144901221B82B -S31540001030C022000040006D480100000040006D489D -S315400010400100000040006EFA01000000111000741B -S315400010509012213040006848010000004000702E88 -S3154000106001000000400000430100000040006E25E2 -S315400010700100000081C7E00881E800009DE3BF98B9 -S3154000108023100143C20C606080A0600012800015EE -S315400010902110008010800005C204200C9FC3400030 -S315400010A0C224200CC204200CDA00400080A3600059 -S315400010B012BFFFFB82006004030000008210600044 -S315400010C080A060000280000682102001111000748A -S315400010D06FFFFBCC901220C082102001C22C6060B2 -S315400010E081C7E00881E800009DE3BF9881C7E0081A -S315400010F081E800009DE3BF98030000008210600075 -S31540001100111000741310014380A06000901220C09B -S3154000111002800004921260646FFFFBBA0100000077 -S315400011201B100144C20361B880A060000280000920 -S31540001130B01361B8030000008210600080A0600018 -S3154000114002800004010000006FFFFBAE81E8000052 -S315400011500100000081C7E00881E800009DE3BF98D8 -S3154000116081C7E00881E8000081C3E0080100000073 -S315400011709DE3BF984000000F212000014000014E32 -S3154000118001000000921020014000417D1120000125 -S31540001190921020024000417A9014210040003C27E2 -S315400011A0901422004000000E81E80000010000007B -S315400011B09DE3BF98400000290100000080A2200066 -S315400011C01280000503100080D80060109A1020019C -S315400011D0DA23201081C7E00891E820000310008040 -S315400011E0D80060109A102001DA23201481C3E00849 -S315400011F09010200003100080DA006010D0234000D9 -S3154000120081C3E0089010200003100080DA006010CF -S31540001210D023600881C3E0089010200003100080AE -S31540001220DA006010D023600481C3E00890102000EB -S3154000123013100080921260149010200081C3E008C1 -S31540001240D0EA4020901020001310008092126014C3 -S3154000125081C3E008D0224000914440009132201CD6 -S3154000126081C3E008900A200F81C3E008D0820020A5 -S315400012709010200C81C3E008D08200408210000804 -S3154000128080A20009148000039022000990224001A8 -S3154000129081C3E00801000000932A60028210200109 -S315400012A0C22200099810200080A3000A1680000A76 -S315400012B096102001832B2002DA02000180A0000D47 -S315400012C0826020009803200180A3000A06BFFFFA2F -S315400012D0960AC00180A2E00002BFFFF498102000E9 -S315400012E081C3E008010000009DE3BF98C2062010BC -S315400012F08330601CA0100018A400600180A4A001E7 -S315400013000280006CB0103FFF7FFFFFD40100000059 -S31540001310AA100008912A20047FFFFFBC90022007F4 -S315400013207FFFFFD40100000003020000808A000115 -S315400013300280005C010000009A05600182102001D5 -S315400013408328400D11100080C2242010901220A046 -S31540001350921000157FFFFFD19410001203100080F9 -S3154000136082106018A12D6002C0204010DA004010A3 -S31540001370A610000180A36009291001431480002BA8 -S31540001380AC1000017FFFFFAB0100000080A22000EF -S3154000139012BFFFFD01000000B010200080A6001221 -S315400013A0168000140100000010800005A2100016EF -S315400013B080A600121680000F01000000832E200236 -S315400013C0D0044010D20440017FFFFFADB00620019B -S315400013D080A2200104BFFFF7901020027FFFFF90FC -S315400013E00100000080A6001206BFFFF6832E2002F1 -S315400013F0C205207C82006001C225207C7FFFFF92CF -S3154000140001000000C204C01082006001C224C01066 -S31540001410DA04C01080A3600904BFFFDB111000800E -S31540001420108000049012205C111000809012205C05 -S31540001430921000157FFFFF9994100012832CA00292 -S3154000144082004012A0004001DA05207C80A4000DF5 -S3154000145002800004231001437FFFFF719010200398 -S31540001460C204607C80A06000048000060100000089 -S31540001470C204607C80A400011680000580A560003F -S315400014807FFFFF679010200380A56000228000093F -S31540001490B010200091D0200010800006B01020002F -S315400014A07FFFFF5F9010200110BFFFA59A056001E6 -S315400014B081C7E00881E800009DE3BF98C20620107E -S315400014C0A01000188330601C80A0600002800009D4 -S315400014D0B0103FFF7FFFFF610100000080A22000A7 -S315400014E0128000040300003F821063FFC2242010D4 -S315400014F081C7E00881E800009DE3BF98C20620103E -S315400015008330601CA400600180A4A00102800068B2 -S31540001510B0103FFF7FFFFF5101000000AA100008F6 -S31540001520912A20047FFFFF39900220077FFFFF5159 -S315400015300100000003020000808A0001028000587A -S315400015400100000011100080901220A0921000159A -S315400015507FFFFF5294100012031000808210601823 -S31540001560A12D6002C0204010DA004010A6100001F4 -S3154000157080A36009291001431480002BAC100001A0 -S315400015807FFFFF2C0100000080A2200012BFFFFD5C -S3154000159001000000B010200080A600121680001442 -S315400015A00100000010800005A210001680A600125F -S315400015B01680000F01000000832E2002D004401048 -S315400015C0D20440017FFFFF2EB006200180A22001F9 -S315400015D004BFFFF7901020027FFFFF1101000000BB -S315400015E080A6001206BFFFF6832E2002C205207C8D -S315400015F082006001C225207C7FFFFF1301000000AE -S31540001600C204C01082006001C224C010DA04C010B7 -S3154000161080A3600904BFFFDB111000801080000426 -S315400016209012205C111000809012205C92100015E0 -S315400016307FFFFF1A94100012832CA00282004012F2 -S31540001640A0004001DA05207C80A4000D0280000441 -S31540001650231001437FFFFEF290102003C204607CFA -S3154000166080A060000480000601000000C204607C87 -S3154000167080A400011680000580A560007FFFFEE87B -S315400016809010200380A5600022800009B010200041 -S3154000169091D0200010800006B01020007FFFFEE0B1 -S315400016A09010200110BFFFA91110008081C7E008EB -S315400016B081E800009DE3BF98312000009216220089 -S315400016C09410200040004535901020014000423ED5 -S315400016D090162200901623004000459A921020084A -S315400016E0B01621004000412B81E8000001000000B7 -S315400016F09DE3BF9821200000921422009410200000 -S3154000170040004526901020014000422F90142200B0 -S31540001710921000184000458B90142300B01421000D -S315400017204000411C81E8000001000000000000006C -S315400017300000000000000000000000000000000063 -S315400017400000000000000000000000000000000053 -S315400017500000000000000000000000000000000043 -S315400017600000000000000000000000000000000033 -S315400017700000000000000000000000000000000023 -S315400017800000000000000000000000000000000013 -S315400017900000000000000000000000000000000003 -S315400017A000000000000000000000000000000000F3 -S315400017B000000000000000000000000000000000E3 -S315400017C000000000000000000000000000000000D3 -S315400017D000000000000000000000000000000000C3 +S3154000102036BFFFFFC038800311100124901221B84B +S31540001030C022000040006D4E0100000040006D4E91 +S315400010400100000040006EFA010000001110007619 +S31540001050901221FC400068F30100000040007261DC +S31540001060010000004000004F0100000040006E2BD0 +S315400010700100000081C7E00881E800009DE3BFA0B1 +S3154000108021100123C20C206080A060001280002243 +S3154000109023100123C20460642710007625100076D1 +S315400010A0A614E164A414A168A4248013A53CA0025C +S315400010B0A404BFFF80A040123A80000E0300000047 +S315400010C0A21460648200600185286002C224400048 +S315400010D0C204C0029FC0400001000000C20440009C +S315400010E080A040120ABFFFF98200600103000000A1 +S315400010F08210600080A060000280000682102001FD +S31540001100111000746FFFFBBF901220A082102001C7 +S31540001110C22C206081C7E00881E800009DE3BFA0A3 +S3154000112081C7E00881E800009DE3BFA003000000FE +S315400011308210600080A06000228000081110012407 +S315400011401110007413100123901220A06FFFFBAD05 +S315400011509212606811100124C20221B880A060007A +S3154000116002800009901221B803000000821060003E +S3154000117080A0600002800004010000009FC0400083 +S315400011800100000081C7E00881E800009DE3BFA0A0 +S3154000119081C7E00881E8000081C3E0080100000043 +S315400011A09DE3BFA04000002B212000014000017CB0 +S315400011B001000000921020014000416F1120000103 +S315400011C0921020024000416C9014210040003C1FC8 +S315400011D0901422004000000381E800000100000056 +S315400011E003100080C200601084102001901020007F +S315400011F0C420601481C3E008010000000310008091 +S31540001200C20060108410000890102000C4204000E6 +S3154000121081C3E0080100000003100080C200601096 +S315400012208410000890102000C420600881C3E008A4 +S315400012300100000003100080C20060108410000806 +S3154000124090102000C420600481C3E0080100000023 +S315400012509DE3BFA0400000140100000080A22000D2 +S315400012601280000503100080C20060108410200127 +S31540001270C420601081C7E00891E820001310008068 +S31540001280921260149010200081C3E008D0EA4020FA +S3154000129090102000131000809212601481C3E00861 +S315400012A0D0224000914440009132201C81C3E00886 +S315400012B0900A200F81C3E008D08200209010200CB5 +S315400012C081C3E008D08200409DE3BFA0C206201043 +S315400012D0A01000188330601C80A0600002800009C6 +S315400012E0B0103FFF7FFFFFF00100000080A220000A +S315400012F0128000040300003F821063FFC2242010C6 +S3154000130081C7E00881E800009DE3BFA0E406201005 +S31540001310A534A01CA404A00180A4A0010280003C26 +S31540001320B0103FFF7FFFFFE001000000AA10000859 +S31540001330912A20047FFFFFB9900220077FFFFFE03C +S315400013400100000003020000808A00010280007450 +S3154000135001000000A72D60020910008088112018A6 +S315400013608210200184102001C22100138210200027 +S3154000137080A48001148000098728600280A0A00014 +S3154000138012800025821020008410200180A4800154 +S3154000139004BFFFFB87286002C601000380A000034C +S315400013A0820060018660200010BFFFF2840880033F +S315400013B0C205A080852CA003A12CA001A004000298 +S315400013C080A4000102800004010000007FFFFF9A14 +S315400013D090102003C205A08080A060000480000613 +S315400013E003100123C200608080A40001168000051E +S315400013F080A560007FFFFF909010200380A56000CD +S3154000140002800003B010200091D0200081C7E00880 +S3154000141081E8000023100080A21460A02D10012353 +S31540001420C0244013C204401380A0600914800027E2 +S3154000143009100080A815A0807FFFFF9101000000E1 +S3154000144080A2200012BFFFFD80A4A00004800013EC +S3154000145001000000A0102000C4044013832C200289 +S31540001460C204400180A08001A00420010480000342 +S31540001470862040028620800180A0E001048000058D +S3154000148080A480107FFFFF6C9010200280A4801003 +S3154000149014BFFFF201000000C20500008200600197 +S315400014A0C22500007FFFFF7B01000000C2044013FD +S315400014B082006001C2244013C204401380A0600928 +S315400014C004BFFFDE091000808811205C82102001D5 +S315400014D084102001C22100138210200080A48001C4 +S315400014E0148000098728600280A0A00012BFFFB1C7 +S315400014F0821020008410200180A4800104BFFFFBDD +S3154000150087286002C601000380A0000382006001B4 +S315400015108660200010BFFFF2840880037FFFFF46ED +S315400015209010200110BFFF8DA72D60029DE3BFA044 +S31540001530E4062010A0100018A534A01CA404A001A5 +S3154000154080A4A0010280003FB0103FFF7FFFFF56FE +S3154000155001000000AA100008912A20047FFFFF2FF7 +S31540001560900220077FFFFF560100000003020000A3 +S31540001570808A00010280007701000000A72D6002EA +S31540001580091000808811201882102001840560010E +S3154000159085284002C4242010C22100138410200153 +S315400015A08210200080A480011480000987286002F0 +S315400015B080A0A00012800025821020008410200107 +S315400015C080A4800104BFFFFB87286002C601000398 +S315400015D080A00003820060018660200010BFFFF2F9 +S315400015E084088003C205A080852CA003A12CA001FD +S315400015F0A004000280A40001028000040100000053 +S315400016007FFFFF0D90102003C205A08080A06000E0 +S315400016100480000603100123C200608080A40001FC +S315400016201680000580A560007FFFFF039010200311 +S3154000163080A5600002800003B010200091D02000F9 +S3154000164081C7E00881E8000023100080A21460A052 +S315400016502D100123C0244013C204401380A060090A +S315400016601480002709100080A815A0807FFFFF0482 +S315400016700100000080A2200012BFFFFD80A4A00050 +S315400016800480001301000000A0102000C404401391 +S31540001690832C2002C204400180A08001A0042001C6 +S315400016A004800003862040028620800180A0E0015D +S315400016B00480000580A480107FFFFEDF901020028A +S315400016C080A4801014BFFFF201000000C205000094 +S315400016D082006001C22500007FFFFEEE010000008F +S315400016E0C204401382006001C2244013C204401366 +S315400016F080A0600904BFFFDE091000808811205CCD +S315400017008210200184102001C22100138210200083 +S3154000171080A48001148000098728600280A0A00070 +S3154000172012BFFFB1821020008410200180A48001E6 +S3154000173004BFFFFB87286002C601000380A00003A8 +S31540001740820060018660200010BFFFF2840880039B +S315400017507FFFFEB99010200110BFFF8AA72D6002BF +S315400017609DE3BFA021200000941020009214220087 +S315400017704000455190102001400044099014220039 +S31540001780921000184000459590142300B014210093 +S315400017904000414581E80000010000009DE3BFA0F4 +S315400017A0312000009410200092162200400045424D +S315400017B090102001400043FA901622009016230014 +S315400017C04000458692102008B01621004000413660 +S315400017D081E8000001000000000000000000000059 S315400017E000000000000000000000000000000000B3 S315400017F000000000000000000000000000000000A3 S315400018000000000000000000000000000000000092 @@ -2049,39 +2049,39 @@ S31540007FE0000000000000000000000000000000004B S31540007FF0000000000000000000000000000000003B S315400080009DE3BF9081C7E00881E8000003000010AF S31540008010C48000408088800112BFFFFE010000003E -S315400080209DE3BF909DE3BF909DE3BF909DE3BF90CE -S315400080309DE3BF909DE3BF9021044444A0142111C9 -S3154000804023088888A2146222250CCCCCA414A3331E -S3154000805027111111A614E04429155555A815215587 -S315400080602B199999AA1562662D1DDDDDAC15A377EE -S315400080702F222222AE15E08801100000E03FBFE02B -S31540008080E43FBFE8E83FBFF0EC3FBFF88210001E78 -S315400080908220601CC0A041E082206008C0A041E070 -S315400080A082206008C0A041E082206008C0A041E074 -S315400080B0C0A002209DE3BF909DE3BF9081E80000F1 -S315400080C081E800000100000001000000E01FBFE061 -S315400080D0E41FBFE8E81FBFF0EC1FBFF8EC6FBFF826 -S315400080E0EC7FBFF8010000000100000081E80000BD +S31540008020C46FBFF89DE3BF909DE3BF909DE3BF90B3 +S315400080309DE3BF909DE3BF909DE3BF9021044444E0 +S31540008040A014211123088888A2146222250CCCCCC6 +S31540008050A414A33327111111A614E044291555552C +S31540008060A81521552B199999AA1562662D1DDDDD96 +S31540008070AC15A3772F222222AE15E088011000000E +S31540008080E03FBFE0E43FBFE8E83FBFF0EC3FBFF86A +S315400080908210001E8220601CC0A041E08220600841 +S315400080A0C0A041E082206008C0A041E08220600874 +S315400080B0C0A041E0C0A002209DE3BF909DE3BF90D9 +S315400080C081E8000081E80000010000000100000096 +S315400080D0E01FBFE0E41FBFE8E81FBFF0EC1FBFF89A +S315400080E0EC6FBFF8EC7FBFF8010000000100000014 S315400080F081E8000081E8000081E8000081E8000096 -S3154000810081C7E00881E80000A7500000AA102400BB -S31540008110A8102300EC854320EA8503202F10002079 -S31540008120AE15E158EE05C000E805C000EA05E004DA -S31540008130EC05E008AC15A000C0A58300EA250000C8 -S31540008140AE05E00C2B100020AA156158EE25400024 -S3154000815081C4400081CC8000000000000100000086 -S3154000816000000000000000000000000000000000C9 +S3154000810081E8000081C7E00881E80000A750000030 +S31540008110AA102400A8102300EC854320EA850320FA +S315400081202F100020AE15E160EE05C000E805C00046 +S31540008130EA05E004EC05E008AC15A000C0A5830004 +S31540008140EA250000AE05E00C2B100020AA15616060 +S31540008150EE25400081C4400081CC80000100000033 +S3154000816000000000010000000000000000000000C8 S3154000817000000000000000000000000000000000B9 S3154000818000000000000000000000000000000000A9 -S315400081900000000000000000000000000100000098 -S315400081A081C3E008D0A003200100000001000000C8 +S315400081900000000000000000000000000000000099 +S315400081A00000000001000000010000000100000086 S315400081B00100000001000000010000000100000075 -S315400081C09DE3BF90FC2780009007A0019410001EFD -S315400081D0D1E7816AD1E7816A9402A0019002200129 -S315400081E0D1E7816AD1E7816AD60780009622C01E10 -S315400081F0B0A2E00202800004900020017FFFE40864 -S315400082000100000081C7E00881E80000010000008D -S315400082100100000001000000010000000100000014 -S315400082200100000001000000010000000100000004 +S315400081C081C3E008D0A003200100000001000000A8 +S315400081D00100000001000000010000000100000055 +S315400081E09DE3BF90FC2780009007A0019410001EDD +S315400081F0D1E7816AD1E7816A9402A0019002200109 +S31540008200D1E7816AD1E7816AD60780009622C01EEF +S31540008210B0A2E00202800004900020017FFFE40645 +S315400082200100000081C7E00881E80000010000006D S3154000823001000000010000000100000001000000F4 S3154000824001000000010000000100000001000000E4 S3154000825001000000010000000100000001000000D4 @@ -4095,3247 +4095,3247 @@ S3154000FFC001000000010000000100000001000000E7 S3154000FFD001000000010000000100000001000000D7 S3154000FFE001000000010000000100000001000000C7 S3154000FFF001000000010000000100000001000000B7 -S315400100009DE3BF90C207A068A40060261B00003F85 -S315400100109A1363FF030000239E0C800DAC106111FF -S31540010020AB376010820D400DAC03C0169E0F400DDC -S3154001003099372010AC058001820B000DAC05800F6D -S315400100409E0F000DAC058001AC05800F8335A010D5 -S315400100508208400D9E0D800DAC03C001C207A06809 -S3154001006094006034C207A05C93286011C207A0685F -S315400100709E0863FFD607A060C207A074D420400043 -S31540010080D827BFF4EE07A070833620109935A0100B -S31540010090980B000DA136E010A336E008C22DC00032 -S315400100A0F62DE00B9A0D800D82102008B6102045E2 -S315400100B0972AE012AC03400C9612C009C22DE00CFF -S315400100C0F62DE00E9B36200899366010953660086D -S315400100D09336A0109136A008A73CA0088210204074 -S315400100E0B6102011A9376018DA2DE001F02DE00293 -S315400100F0D82DE003D42DE004F22DE005D22DE00603 -S31540010100D02DE007F42DE008E02DE009E22DE00ACC -S31540010110C22DE016F62DE017E42DE011E62DE01094 -S31540010120E82DE01AC02DE00DC02DE00FC02DE012E4 -S31540010130C02DE013C02DE014C02DE015D807A068EE -S315400101409F2BE007C207A0649612C00F92032012AC -S31540010150AC380016E407A06C9B3AE0189130601861 -S31540010160A1306010A3306008B7376008B537201852 -S31540010170B3372008B135A0089F3A6008993AE01094 -S31540010180953AE008EA2DE01BF62DE01CF42DE01E21 -S31540010190F22DE020F02DE018EC2DE019DE2DE026C1 -S315400101A0D22DE027DA2DE02CD82DE02DD42DE02ECE -S315400101B0D62DE02FD02DE030E02DE031E22DE0329A -S315400101C0C22DE033DA07A05CFA2DE01DC207BFF469 -S315400101D080A36000C22DE01FF82DE021C02DE02252 -S315400101E0C02DE023C02DE024C02DE025C02DE02800 -S315400101F0C02DE029C02DE02A0280000EC02DE02B43 -S31540010200B8102000D807A06880A7000C1A80000902 -S31540010210BA05C01CC20C801CC22F6034B80720012D -S31540010220DA07A06880A7000D0ABFFFFBBA05C01C0C -S3154001023081C7E00881E800009DE3BD1040002BD650 -S3154001024090102000B610000840002BD390102004D7 -S31540010250BA100008391001447FFFC3E7110040740A -S31540010260A01720D0A6103FDEA8103FADAA103FBE72 -S31540010270AC103FEFAE102020F02720D0E62C200412 -S31540010280E82C2005EA2C2006EC2C2007C02C20085F -S31540010290EE2C2009400002B590100010D004201029 -S315400102A092102000400001CBD40720D0A492200018 -S315400102B0068000650100000015000010D0042010E2 -S315400102C09414800A9210200040000218D60720D0CC -S315400102D0EA2FBF0082103FF2EA2FBEFAE62FBEFE9A -S315400102E0E82FBEFFEC2FBF01EE2FBF03C22FBF0584 -S315400102F0E62FBEF8E82FBEF9EC2FBEFBC02FBEFCA1 -S31540010300EE2FBEFDC02FBF02C02FBF04A010200E8E -S31540010310AA07BFF882054010E0287F00A00420010B -S3154001032080A420FF04BFFFFD82054010AC07BDF845 -S3154001033090100016400003D6921720D080A22000CC -S3154001034002BFFFFD90100016B207BEF890102100C3 -S315400103509210001940000382941720D080A22000F9 -S3154001036002BFFFFC901021009010001D9210001B4F -S315400103704000040F941720D080A2200002BFFFFC4A -S315400103809010001DC207400080A061002280001825 -S31540010390A01020007FFFC3A29010200110800014FE -S315400103A0A01020000480002380A060020280001F6C -S315400103B080A0600322800002A21000128205401034 -S315400103C0DA087F00B00C60FF80A340182280000548 -S315400103D0A00420017FFFC39290102002A0042001B7 -S315400103E080A420FF1480001C821720D0808C20031B -S315400103F012800005833C201F82058010E480402046 -S31540010400833C201F8330601E8204000182087FFCEA -S315400104108224000180A0600112BFFFE301000000B9 -S3154001042010BFFFE7A334A01010BFFFE5A334A00817 -S3154001043080A0600022BFFFE2A334A01810BFFFE1F5 -S31540010440820540107FFFC3769010200010BFFF9CAD -S3154001045015000010DA00601480A3600002800135A7 -S31540010460C20720D08200601CF480402040002B4A05 -S31540010470901021008210202AC2274000AE100008A9 -S3154001048082102004170037AB1B377BBF9A1363CC0E -S315400104909612E1BEC22DE01315003BC098103FFFF6 -S315400104A09412A020921020DE9132E0089E1020EF97 -S315400104B0A0102008A2102006A4102001A733601026 -S315400104C0A9336008821020DDD82DE005C22DE01C3D -S315400104D0DA2DE01FD82DC000D82DE001D82DE0023D -S315400104E0D82DE003D82DE004E02DE010E22DE012F6 -S315400104F0E42DE015D22DE016D02DE017D62DE018CB -S31540010500DE2DE019D42DE01BE62DE01DE82DE01E81 -S31540010510D22DE006D02DE007D62DE008DE2DE009EC -S31540010520C02DE00AD42DE00BE02DE00CE22DE00DCC -S31540010530C02DE00EE42DE00FC02DE011C02DE014DA -S31540010540C02DE01AC02DE0208336A0189B36A0109E -S315400105509936A008C22DE026DA2DE027D82DE028CD -S31540010560C02DE021C02DE022C02DE023C02DE02486 -S31540010570C02DE025F42DE0299010001640000344DB -S31540010580921720D080A2200002BFFFFD90100016D6 -S31540010590D007400092100017400002F1941720D076 -S315400105A080A2200022BFFFFCD00740009010001D12 -S315400105B09210001B4000037E941720D080A2200099 -S315400105C002BFFFFC9010001D9807BE0ED88B00207D -S315400105D0980B20FF992B20108207BE0FC28840201E -S315400105E0820860FF83286008981300019A07BE10AD -S315400105F0DA8B40209A0B60FFA213000D9607BE11BD -S31540010600D68AC020960AE0FF972AE0108207BE12DA -S31540010610C2884020820860FF832860089612C00184 -S315400106209A07BE13DA8B40209A0B60FFA612C00DC3 -S31540010630A807BD90150037AB17003BC0C023A05C8F -S31540010640C023A060E823A064C023A068C023A06C97 -S31540010650EE23A070FA23A0749412A1BE9612E02054 -S3154001066090100011921000139810001A7FFFFE653A -S315400106709A10001A9010001640000305921720D0D8 -S3154001068080A2200002BFFFFD90100016D007400057 -S3154001069092100017400002B2941720D080A2200089 -S315400106A022BFFFFCD00740009010001D9210001B96 -S315400106B04000033F941720D080A2200002BFFFFCD8 -S315400106C09010001D9807BE24D88B0020992B201826 -S315400106D08207BE25DA8840209A0B60FF9B2B60106B -S315400106E09813000D8207BE26C2884020820860FF0B -S315400106F083286008981300019A07BE27DA8B4020A9 -S315400107009A0B60FFA413000D03000080808C8001CA -S3154001071012800003A134A012A00420019A1020489F -S3154001072082102001DA23A068150037AB17003BC0C1 -S31540010730C223A05CF223A06CE023A060E823A0645E -S31540010740EE23A070FA23A0749412A1BE9612E02063 -S3154001075090100011921000139810001A7FFFFE2985 -S315400107609A10001A90100016400002C9921720D024 -S3154001077080A2200002BFFFFD90100016D007400066 -S315400107809210001740000276941720D080A22000D4 -S3154001079022BFFFFCD00740009010001D9210001BA5 -S315400107A040000303941720D080A2200002BFFFFC23 -S315400107B09010001D9A07BE25C28B4020808860029A -S315400107C022800005A00420017FFFC29590102003DE -S315400107D0A004200182102048150037AB17003BC00A -S315400107E09810001AE023A060E823A064C223A06801 -S315400107F0C023A05CC023A06CEE23A070FA23A07492 -S3154001080090100011921000139412A1BE9612E0208E -S315400108107FFFFDFC9A10001A901000164000029CC2 -S31540010820921720D080A2200002BFFFFD9010001633 -S31540010830D00740009210001740000249941720D07B -S3154001084080A2200022BFFFFCD00740009010001D6F -S315400108509210001B400002D6941720D080A220009F -S3154001086002BFFFFC9010001DC207400080A0607CC3 -S3154001087022800005A605A0347FFFC269901020049E -S31540010880A605A03410800013A01020000480002289 -S3154001089080A060020280001D80A0600322800002C9 -S315400108A0B00CA0FF82054010DA087F0080A34018F3 -S315400108B022800005A00420017FFFC2599010200527 -S315400108C0A004200180A4204714800018A604E0015A -S315400108D0808C200312800004833C201FE484C020C6 -S315400108E0833C201F8330601E8204000182087FFC06 -S315400108F08224000180A0600112BFFFE5A334A0104D -S3154001090010BFFFE9B00C60FFA334A00810BFFFE69B -S31540010910B00C60FF80A0600022BFFFE3B134A01895 -S3154001092010BFFFE28205401040002A2290100017B6 -S3154001093081C7E00891E820009DE3BF88F027A044E5 -S31540010940C207A044820040019010000140002A12D3 -S315400109500100000082100008C227BFF4DA07BFF485 -S31540010960C207A0449A034001C207A04482007FFF08 -S3154001097082380001820B4001C227BFF4C207BFF48F -S31540010980C227BFF0C027BFECC207BFEC80A0607F83 -S315400109901480000C01000000C207BFEC9B286003D5 -S315400109A0C207BFF082034001C0204000C207BFEC2E -S315400109B082006001C227BFEC10BFFFF401000000B6 -S315400109C0C207BFF4B010000181C7E00881E800000A -S315400109D09DE3BF90F027A044F227A048F427A04CFE -S315400109E0C207A04C820060109010000140000046F2 -S315400109F001000000D027BFF4C207BFF48208600897 -S31540010A0080A06000028000040100000010BFFFF5D5 -S31540010A1001000000C207A0449B28600BC207A04802 -S31540010A208208601F8328600682134001821060029B -S31540010A30C227BFF4C207A04C82006010901000018B -S31540010A40D207BFF44000002701000000C207A04CB6 -S31540010A5082006010901000014000002B0100000050 -S31540010A60D027BFF4C207BFF48208600880A06000A7 -S31540010A70028000040100000010BFFFF501000000E4 -S31540010A80C207BFF48208601080A060001280001087 -S31540010A9001000000C207A04C8200601090100001C6 -S31540010AA04000001901000000D027BFF4C207BFF47F -S31540010AB0833060101B00003F9A1363FF8208400D8C -S31540010AC0C227BFF0108000040100000082103FFFE2 -S31540010AD0C227BFF0F007BFF081C7E00881E80000F8 -S31540010AE09DE3BF98F027A044F227A048C207A0443F -S31540010AF0FA07A048FA204000B010000181C7E0087B -S31540010B0081E800009DE3BF90F027A044C207A044BE -S31540010B10C2804020C227BFF4C207BFF4B010000113 -S31540010B2081C7E00881E800009DE3BF90F027A0441B -S31540010B30F227A048F427A04CF627A050C207A050A0 -S31540010B4082006010901000017FFFFFEF010000005E -S31540010B50D027BFF4C207BFF48208600880A06000B6 -S31540010B60028000040100000010BFFFF501000000F3 -S31540010B70DA07A04C0300003F821063FF820B40015D -S31540010B809B286010C207A0448328600B9A1340013A -S31540010B90C207A0488208601F83286006821340016D -S31540010BA082106001C227BFF4C207A05082006010C4 -S31540010BB090100001D207BFF47FFFFFCA0100000079 -S31540010BC0C207A05082006010901000017FFFFFCE47 -S31540010BD001000000D027BFF4C207BFF482086008B5 -S31540010BE080A06000028000040100000010BFFFF5F4 -S31540010BF00100000081C7E00881E800009DE3BF983D -S31540010C00F027A044F227A048DA07A044C207A0482B -S31540010C10C2084000C22B6004D807A0449A102001A4 -S31540010C20C207A04882034001C2084000C22B2005EA -S31540010C30D807A0449A102002C207A0488203400167 -S31540010C40C2084000C22B2006D807A0449A102003B0 -S31540010C50C207A04882034001C2084000C22B2007B8 -S31540010C60D807A0449A102004C207A0488203400135 -S31540010C70C2084000C22B2008D807A0449A1020057C -S31540010C80C207A04882034001C2084000C22B200986 -S31540010C90C207A044C200400096006008C207A048AF -S31540010CA0C2084000820860FF992860089A10200116 -S31540010CB0C207A04882034001C2084000820860FF83 -S31540010CC0821300019010000B921000017FFFFF85F7 -S31540010CD001000000C207A044C20040009600600C1B -S31540010CE09A102002C207A04882034001C208400070 -S31540010CF0820860FF992860189A102003C207A0480D -S31540010D0082034001C2084000820860FF83286010C8 -S31540010D10981300019A102004C207A048820340019B -S31540010D20C2084000820860FF8328600898130001CA -S31540010D309A102005C207A04882034001C20840001C -S31540010D40820860FF821300019010000B921000018F -S31540010D507FFFFF640100000082102001B0100001F6 -S31540010D6081C7E00881E800009DE3BF80F027A044E9 -S31540010D70C207A044D00040007FFFFF63010000008E -S31540010D80D027BFF4DA07A044C207BFF48330601B03 -S31540010D9082086001C223600CDA07A044C207BFF48F -S31540010DA08330601F82086001C2236014C207A044D9 -S31540010DB0C200601480A06000128000130100000090 -S31540010DC0C207A044D0004000921020407FFFFF455B -S31540010DD001000000C207A044D00040007FFFFF4A47 -S31540010DE001000000D027BFF4C207BFF4820860406B -S31540010DF080A06000028000040100000010BFFFF6E1 -S31540010E0001000000C207A044C200400082006010F9 -S31540010E10901000017FFFFF3C01000000D027BFF486 -S31540010E20DA07A044C207BFF48330600B8208601F13 -S31540010E30C2236010E007A044901024007FFFFEBF4C -S31540010E4001000000D0242018E007A044901024009F -S31540010E507FFFFEBA01000000D024201CC207A04437 -S31540010E60C200400082006014DA07A04490100001DD -S31540010E70D20360187FFFFF1B01000000C207A04498 -S31540010E80C200400082006018DA07A04490100001B9 -S31540010E90D203601C7FFFFF1301000000C207A0447C -S31540010EA0C0206020C207A044C0206024C207A044DD -S31540010EB0C0206028C207A044C020602CC207A044BD -S31540010EC0C200601480A0600012800083010000000F -S31540010ED0C207A044DA07A044D00060109210200057 -S31540010EE015000020D60340007FFFFF1001000000DF -S31540010EF0C207A044DA07A044D00060109210200037 -S31540010F00D40340007FFFFEB301000000D027BFF4A9 -S31540010F10DA07BFF403000020820B400180A0600085 -S31540010F20028000040100000010BFFFF20100000032 -S31540010F30C027BFF0C207BFF41B0000048208400D62 -S31540010F4080A060000280001701000000C207A04493 -S31540010F50DA07A044D000601092102001D40340006B -S31540010F607FFFFE9C0100000082100008820860207D -S31540010F7080A060001280000B01000000C207BFF094 -S31540010F8082006001C227BFF0DA07BFF003000030DC -S31540010F908210635080A3400104BFFFED01000000B1 -S31540010FA0C207A044DA07A044D00060109210200086 -S31540010FB0D40340007FFFFE8701000000D027BFF425 -S31540010FC0C207A044C200600C80A0600002800012EB -S31540010FD001000000C207BFF41B0000088208400D53 -S31540010FE080A060001280000C01000000C207BFF41F -S31540010FF08208604080A06000028000070100000076 -S3154001100082102001C227BFE4C027BFE81080001F1D -S3154001101001000000C207BFF41B0000088208400D12 -S3154001102080A060000280000C01000000C207BFF4EE -S315400110308208604080A06000128000070100000025 -S31540011040C027BFE482102001C227BFE81080000FED -S3154001105001000000C207BFF41B0000088208400DD2 -S3154001106080A060001280000901000000C207BFF4A1 -S315400110708208604080A060001280000401000000E8 -S31540011080C027BFE4C027BFE8C207BFF4833060086A -S3154001109082086001C227BFECD807A044C207BFEC53 -S315400110A09B286004C207BFE8832860079A13400162 -S315400110B0C207BFE48328600882134001D0030000C1 -S315400110C0921000017FFFFE87010000001080001B87 -S315400110D001000000C027BFF0C207BFF080A0600238 -S315400110E01480001601000000C207A044C20040005F -S315400110F082006010901000017FFFFE830100000016 -S31540011100D027BFF4C207BFF48208600880A0600000 -S315400111100280000501000000C027BFF010BFFFEFAD -S3154001112001000000C207BFF082006001C227BFF084 -S3154001113010BFFFEA01000000C207A044820060041C -S31540011140D007A044921000017FFFFEAD01000000D0 -S31540011150B010000181C7E00881E800009DE3BF901F -S31540011160F027A044F227A048F427A04CD807A04C6A -S31540011170C207A04CC20060209B286003C20320180E -S3154001118082034001901000017FFFFE5F01000000D5 -S31540011190821000088208680080A060000280000575 -S315400111A001000000C027BFF4108000360100000096 -S315400111B0D807A04CC207A04CC20060209B28600300 -S315400111C0C20320189A034001C207A048C223600403 -S315400111D0C207A04CC200602080A0607F1280001030 -S315400111E001000000D807A04CC207A04CC2006020F5 -S315400111F09B286003C203201898034001DA07A044E4 -S315400112000300000682134001C2230000C207A04C1E -S31540011210C02060201080001001000000D807A04CBB -S31540011220C207A04CC20060209B286003C20320185D -S315400112309A034001C207A04482106800C2234000BD -S31540011240DA07A04CC207A04CC200602082006001B0 -S31540011250C2236020C207A04CE0004000C207A04C58 -S31540011260D00040007FFFFE280100000082100008E8 -S3154001127082106001C224000082102001C227BFF4FF -S31540011280F007BFF481C7E00881E800009DE3BF9005 -S31540011290F027A044F227A048D807A048C207A04893 -S315400112A0C20060249B286003C203201C82034001C4 -S315400112B0901000017FFFFE1401000000821000081B -S315400112C08208680080A060000280000501000000DD -S315400112D0C027BFF41080003301000000D807A048A2 -S315400112E0C207A048C20060249B286003C203201C99 -S315400112F09A034001C207A044C2236004C207A04822 -S31540011300C200602480A0607F1280000E01000000B0 -S31540011310D807A048C207A048C20060249B286003A2 -S31540011320C203201C9A03400103000006C223400069 -S31540011330C207A048C02060241080000F01000000B1 -S31540011340D807A048C207A048C20060249B28600372 -S31540011350C203201C9A03400182102800C223400088 -S31540011360DA07A048C207A048C20060248200600193 -S31540011370C2236024C207A048E0004000C207A0483B -S31540011380D00040007FFFFDE0010000008210000810 -S3154001139082106002C224000082102001C227BFF4DD -S315400113A0F007BFF481C7E00881E800009DE3BF90E4 -S315400113B0F027A044F227A048F427A04CD807A04C18 -S315400113C0C207A04CC200602C9B286003C203201CAC -S315400113D082034001901000017FFFFDCB0100000018 -S315400113E082100008C227BFF4C207BFF48208680012 -S315400113F080A060001280001801000000DA07A044B6 -S31540011400C207BFF4820867FFC2234000C207A04C4F -S31540011410C200602C80A0607F12800006010000009F -S31540011420C207A04CC020602C1080000701000000BC -S31540011430DA07A04CC207A04CC200602C82006001B2 -S31540011440C223602C82102001C227BFF01080000306 -S3154001145001000000C027BFF0F007BFF081C7E008D8 -S3154001146081E800009DE3BF90F027A044D807A0443F -S31540011470C207A044C20060289B286003C20320180B -S3154001148082034001901000017FFFFD9F0100000093 -S3154001149082100008C227BFF4C207BFF48208680061 -S315400114A080A060001280001401000000C207A04421 -S315400114B0C200602880A0607F128000060100000003 -S315400114C0C207A044C0206028108000070100000028 -S315400114D0DA07A044C207A044C20060288200600126 -S315400114E0C223602882102001C227BFF0108000036A -S315400114F001000000C027BFF0F007BFF081C7E00838 -S3154001150081E800009DE3BF987FFFBF409010200413 +S315400100009DE3BF8099362010D827BFE0AF36200840 +S31540010010EE27BFE4AF366008C607A05CEE27BFEC0B +S31540010020AF36E018C407A060EE27BFF499366010DA +S31540010030AF30E008D827BFE8EE27BFFC8800A026EE +S31540010040EE07A06C993920089736A010D827BFF043 +S315400100501300003F9936E008921263FFA00E800913 +S31540010060A002C010D827BFF89B36E01098090009B6 +S31540010070900EC0091F0000239E13E1119E04000F3C +S315400100809E03C00D9003C0089802000CA1332010B6 +S31540010090980B00099804000C920B00099933201023 +S315400100A0BB2F601292030009992F2011BA17400CF9 +S315400100B0C207A0689008A3FF912A20079817400815 +S315400100C0BA00A034FA25C000EE07BFE09400A012A2 +S315400100D092380009AD36A018EE284000AB36A0088C +S315400100E0A73AA008EE07BFE4F0286002A9326008EB +S315400100F09F30E018EE286001A5332018A33B20105D +S31540010100EE07BFE8A13B20089130E01080A7200010 +S31540010110EE286003EE07BFECF2286005EE28600486 +S31540010120EE07BFF0EE286010EE07BFF4EE28601A26 +S31540010130EE07BFF8C8286011C028600A88103FDE64 +S31540010140EE28601CC028600DC028600FC0286012D0 +S31540010150C828600688103FADC828600788103FBE92 +S31540010160C828600888103FEFC828600988102020F9 +S31540010170C828600B88102008C828600C88102045C4 +S31540010180C828600E88102040C0286013C828601611 +S31540010190C0286014C0286015DA28601B8810201119 +S315400101A0C8286017EE07A064F628601DEC28601E7B +S315400101B0EA286020E8286018D2286019E6286026D7 +S315400101C0D4286027E428602CE228602DE028602EA0 +S315400101D0D828602FDE286030D0286031C807BFFCA0 +S315400101E0C6286033D628601FF4286021C8286032AB +S315400101F0C0286022C0286023C0286024C02860250A +S31540010200C0286028C0286029C028602A0280000DC5 +S31540010210C028602B80A0A0000280000A8810200020 +S31540010220861020009A004004C80DC0048600E001F3 +S3154001023080A0C002C82B603412BFFFFB88100003A8 +S3154001024081C7E00881E800009DE3BD2040002C8481 +S315400102509010200025100124A2100008A814A0D453 +S3154001026040002C7F90102004A01000087FFFC3E4BB +S315400102701100407482103FDEC22D200482103FAD32 +S31540010280C22D200582103FBEC22D200682103FEFAF +S31540010290C02D2008C22D200782102020C22D200902 +S315400102A0F024A0D44000028A90100014D0052010FA +S315400102B0D404A0D4400001C292102000AC92200088 +S315400102C00680017E01000000D0052010D604A0D48E +S315400102D01500001092102000400001F89415800A84 +S315400102E082103FDEC22FBE9EC22FBE9882103FAD06 +S315400102F0C22FBE9FC22FBE9982103FBEC22FBEA043 +S31540010300C22FBE9A82103FEFC22FBEA1C22FBE9B03 +S3154001031082102020C02FBE9CC22FBEA3C22FBE9DDD +S31540010320C02FBEA282103FF2C02FBEA4C22FBEA5CF +S31540010330A607BE988210200EC22CC0018200600121 +S3154001034080A0610032BFFFFEC22CC001AA07BD9842 +S31540010350AE14A0D490100015400003C692100017A9 +S3154001036080A2200002BFFFFD9010001590102100D1 +S3154001037092100013400003729410001780A22000CF +S3154001038002BFFFFC90102100901000109210001146 +S31540010390400004019410001780A2200002BFFFFC18 +S315400103A090100010C204000080A061000280000588 +S315400103B0AE1020007FFFC3A090102001AE10200098 +S315400103C0848DE0031280000580A0A002AC05401791 +S315400103D0EC85802080A0A002028000098335A00818 +S315400103E080A0A003028000068210001680A0A00112 +S315400103F0028000038335A0108335A018C40CC017B2 +S31540010400820860FF80A0800122800005AE05E001E0 +S315400104107FFFC38990102002AE05E00180A5E1006F +S3154001042012BFFFE9848DE003C205201480A060005D +S3154001043002800120B010200003100124EE0060D498 +S31540010440AE05E01CEE85C02040002C059010210031 +S3154001045082103FFFC22A201EC22A0000C22A200162 +S31540010460C22A2002C22A2003C22A2004C22A200507 +S3154001047082103FDEC22A2016C22A200682103FADD4 +S31540010480C22A2017C22A200782103FBEC22A20183C +S31540010490C22A200882103FEFC22A2019C22A200907 +S315400104A082102020C22A201BC22A200B821020083B +S315400104B0C22A2010C22A200C82102006C22A2012EB +S315400104C0C22A200D82102001C02A200AC22A2015E4 +S315400104D0C22A200FC02A200EC02A2011C02A201469 +S315400104E0C02A201A8210202AC22400008210200429 +S315400104F08935E018C22A20138735E01082103FDD86 +S315400105008535E008C22A201C82103FEEC22A201DF2 +S3154001051082103FCCC22A201FC02A2020C82A20266A +S31540010520C62A2027C42A2028C02A2021C02A2022C0 +S31540010530C02A2023C02A2024C02A2025EE2A202989 +S31540010540AC100008A814A0D490100015400003492F +S315400105509210001480A2200002BFFFFD90100015EA +S31540010560D004000092100016400002F594100014C9 +S3154001057080A2200022BFFFFCD00400009010001092 +S3154001058092100011400003849410001480A22000B0 +S3154001059002BFFFFC90100010B807BDAEF88F0020D7 +S315400105A08607BDAFC688C0208407BDB0C4888020F9 +S315400105B00300003F8408A0FF821063FFB80F20FFAD +S315400105C08728E018B92F20108738E010BA07BDB147 +S315400105D08608C001B8170003B8170002FA8F4020F9 +S315400105E08607BDB2C688C0208407BDB3C4888020B3 +S315400105F08728E0188738E0108208C001BA0F60FFEB +S31540010600BB2F6010BA1740018208A0FFB607BF98FA +S31540010610BA174001C023A060C023A064EC23A068A0 +S31540010620E023A06CF623A05C9010001C9210001DE4 +S315400106309410001796100017981020007FFFFE7146 +S315400106409A102000901000154000030A92100014E1 +S3154001065080A2200002BFFFFD90100015D0040000CB +S3154001066092100016400002B69410001480A2200099 +S3154001067022BFFFFCD0040000901000109210001120 +S31540010680400003459410001480A2200002BFFFFCE5 +S31540010690901000108607BDC4C688C020B207BDC5EC +S315400106A0C28E40208407BDC6C4888020A807BDC726 +S315400106B0E88D0020820860FF83286010A80D20FF86 +S315400106C08728E0188528A018A81500038538A010AA +S315400106D0A81500010300003F821063FF82088001D4 +S315400106E0A815000103000080808D0001833520128A +S315400106F002800003B4006001B4100001821020485A +S31540010700F623A05CE623A064EC23A068E023A06C5A +S31540010710C223A0609010001C9210001D9410001777 +S3154001072096100017981020019A10001A7FFFFE3587 +S31540010730B014A0D490100015400002CE92100018BB +S3154001074080A2200002BFFFFD90100015D0040000DA +S31540010750921000164000027A9410001880A22000E0 +S3154001076022BFFFFCD004000090100010921000112F +S31540010770400003099410001880A2200002BFFFFC2C +S3154001078090100010F28E4020808E60021280004F41 +S315400107900100000082102048F623A05C9410001747 +S315400107A0C023A064EC23A068E023A06C9010001C39 +S315400107B09210001D9A06A001A414A0D4C223A060E1 +S315400107C0961000177FFFFE0F98102000901000151D +S315400107D0400002A89210001280A2200002BFFFFD35 +S315400107E090100015D00400009210001640000254EB +S315400107F09410001280A2200022BFFFFCD00400000A +S315400108009010001092100011400002E39410001263 +S3154001081080A2200002BFFFFC90100010C20400001D +S3154001082080A0607C02800005A207BDCC7FFFC2820A +S3154001083090102004A207BDCCA0102000848C200378 +S315400108401280000480A0A002E884402080A0A0027B +S31540010850A2046001028000098335200880A0A0031C +S31540010860028000068210001480A0A00102800003CD +S315400108708335201083352018C40CC010820860FFD0 +S3154001088080A0800122800005A00420017FFFC26A6A +S3154001089090102005A004200180A4204812BFFFE942 +S315400108A0848C20039010001640002AE6B0102000E8 +S315400108B081C7E00881E800007FFFC25F90102000F9 +S315400108C010BFFE83D00520107FFFC25B901020032E +S315400108D010BFFFB2821020489DE3BF98F027A04485 +S315400108E0C207A044C2804020C227BFFCC207BFFC4A +S315400108F0B010000181E8000081C3E008010000005A +S315400109009DE3BFA0F027A044F227A048C207A04418 +S31540010910C407A048C420400081E8000081C3E00824 +S31540010920010000009DE3BF90F027A044C207A04408 +S31540010930832860019010000140002AC9010000008F +S3154001094082100008C227BFF4C407BFF4C207A044FF +S3154001095084008001C207A0448220000182088001F0 +S31540010960C227BFF4C207BFF4C227BFF8C027BFFCE6 +S315400109701080000A01000000C207BFFC8328600303 +S31540010980C407BFF882008001C0204000C207BFFCF7 +S3154001099082006001C227BFFCC207BFFC80A0607F06 +S315400109A004BFFFF601000000C207BFF4B01000010A +S315400109B081E8000081C3E008010000009DE3BF9883 +S315400109C0F027A044F227A048F427A04CC207A04C28 +S315400109D082006010901000017FFFFFC001000000FF +S315400109E082100008C227BFFCC207BFFC820860080C +S315400109F080A0600012BFFFF601000000C207A044BC +S31540010A008528600BC207A0488208601F83286006BC +S31540010A108210800182106002C227BFFCC207A04C2F +S31540010A208200601090100001D207BFFC7FFFFFB526 +S31540010A3001000000C207A04C820060109010000126 +S31540010A407FFFFFA60100000082100008C227BFFCFD +S31540010A50C207BFFC8208600880A0600012BFFFF693 +S31540010A6001000000C207BFFC8208601080A0600040 +S31540010A701280000D01000000C207A04C82006010E8 +S31540010A80901000017FFFFF950100000082100008D1 +S31540010A90C227BFFCC207BFFC833060101080000331 +S31540010AA00100000082103FFFB010000181E8000004 +S31540010AB081C3E008010000009DE3BF98F027A044F0 +S31540010AC0F227A048F427A04CF627A050C207A05011 +S31540010AD082006010901000017FFFFF80010000003E +S31540010AE082100008C227BFFCC207BFFC820860080B +S31540010AF080A0600012BFFFF601000000C207A04CB3 +S31540010B0085286010C207A0448328600B84108001A9 +S31540010B10C207A0488208601F8328600682108001B0 +S31540010B2082106001C227BFFCC207A050820060103C +S31540010B3090100001D207BFFC7FFFFF720100000049 +S31540010B40C207A05082006010901000017FFFFF6332 +S31540010B500100000082100008C227BFFCC207BFFC8B +S31540010B608208600880A0600012BFFFF60100000005 +S31540010B7081E8000081C3E008010000009DE3BFA0B9 +S31540010B80F027A044F227A048C207A048C408400065 +S31540010B90C207A044C4286004C207A048820060017D +S31540010BA0C4084000C207A044C4286005C207A04843 +S31540010BB082006002C4084000C207A044C4286006FF +S31540010BC0C207A04882006003C4084000C207A0448F +S31540010BD0C4286007C207A04882006004C4084000D8 +S31540010BE0C207A044C4286008C207A0488200600525 +S31540010BF0C4084000C207A044C4286009C207A044F3 +S31540010C00C20040008200600884100001C207A0486B +S31540010C10C2084000820860FF87286008C207A048D2 +S31540010C2082006001C2084000820860FF8210C00154 +S31540010C3090100002921000017FFFFF320100000078 +S31540010C40C207A044C20040008200600C841000012B +S31540010C50C207A04882006002C2084000820860FFC5 +S31540010C6087286018C207A04882006003C208400076 +S31540010C70820860FF832860108610C001C207A04821 +S31540010C8082006004C2084000820860FF8328600831 +S31540010C908610C001C207A04882006005C208400014 +S31540010CA0820860FF8210C00190100002921000017C +S31540010CB07FFFFF140100000082102001B0100001E7 +S31540010CC081E8000081C3E008010000009DE3BF8880 +S31540010CD0F027A044C207A044C20040009010000182 +S31540010CE07FFFFEFE0100000082100008C227BFEC14 +S31540010CF0C207BFEC8330601B84086001C207A04471 +S31540010D00C420600CC207BFEC8530601FC207A044F7 +S31540010D10C4206014C207A044C200601480A06000D1 +S31540010D201280001401000000C207A044C200400026 +S31540010D3090100001921020407FFFFEF2010000005A +S31540010D40C207A044C2004000901000017FFFFEE3AD +S31540010D500100000082100008C227BFECC207BFECA9 +S31540010D608208604080A0600012BFFFF601000000CB +S31540010D70C207A044C20040008200601090100001EA +S31540010D807FFFFED60100000082100008C227BFEC9B +S31540010D90C207BFEC8330600B8408601FC207A044C2 +S31540010DA0C4206010901024007FFFFEDF0100000088 +S31540010DB08210000884100001C207A044C4206018B4 +S31540010DC0901024007FFFFED8010000008210000829 +S31540010DD084100001C207A044C420601CC207A0447D +S31540010DE0C20040008200601484100001C207A04482 +S31540010DF0C200601890100002921000017FFFFEC1F0 +S31540010E0001000000C207A044C200400082006018F1 +S31540010E1084100001C207A044C200601C9010000269 +S31540010E20921000017FFFFEB701000000C207A044F7 +S31540010E30C0206020C207A044C0206024C207A0444D +S31540010E40C0206028C207A044C020602CC207A0442D +S31540010E50C200601480A0600012800096010000006C +S31540010E60C207A044C200601084100001C207A0441A +S31540010E70C200400090100002921020001500002090 +S31540010E80961000017FFFFF0D01000000C207A0443C +S31540010E90C200601084100001C207A044C200400095 +S31540010EA09010000292102000941000017FFFFEC4B2 +S31540010EB00100000082100008C227BFECC407BFEC46 +S31540010EC0030000208208800180A0600012BFFFF06D +S31540010ED001000000C027BFF0C407BFEC03000004B7 +S31540010EE08208800180A060000280001F010000008E +S31540010EF01080000B01000000C207BFF082006001B4 +S31540010F00C227BFF0C407BFF0030000308210635010 +S31540010F1080A080011480001301000000C207A04494 +S31540010F20C200601084100001C207A044C200400004 +S31540010F309010000292102001941000017FFFFEA044 +S31540010F4001000000821000088208602080A0600035 +S31540010F5002BFFFEA0100000010800003010000000B +S31540010F6001000000C207A044C200601084100001C5 +S31540010F70C207A044C2004000901000029210200017 +S31540010F80941000017FFFFE8E0100000082100008D0 +S31540010F90C227BFECC207A044C200600C80A060001B +S31540010FA00280001201000000C407BFEC03000008E4 +S31540010FB08208800180A060001280000C01000000C0 +S31540010FC0C207BFEC8208604080A060000280000733 +S31540010FD00100000082102001C227BFFCC027BFF8D4 +S31540010FE01080001F01000000C407BFEC0300000889 +S31540010FF08208800180A060000280000C0100000090 +S31540011000C207BFEC8208604080A0600012800007E2 +S3154001101001000000C027BFFC82102001C227BFF893 +S315400110201080000F01000000C407BFEC0300000858 +S315400110308208800180A06000128000090100000042 +S31540011040C207BFEC8208604080A0600012800004A5 +S3154001105001000000C027BFFCC027BFF8C207BFEC94 +S315400110608330600882086001C227BFF4C207A044EA +S31540011070C200400084100001C207BFF48728600403 +S31540011080C207BFF8832860078610C001C207BFFCAC +S31540011090832860088210C00190100002921000015E +S315400110A07FFFFE18010000001080001C01000000B7 +S315400110B0C027BFF01080001501000000C207A04400 +S315400110C0C200400082006010901000017FFFFE03C5 +S315400110D00100000082100008C227BFECC207BFEC26 +S315400110E08208600880A060000280000501000000BF +S315400110F0C027BFF01080000501000000C207BFF005 +S3154001110082006001C227BFF0C207BFF080A0600223 +S3154001111004BFFFEB01000000C207A0448200600447 +S31540011120D007A044921000017FFFFE950100000008 +S3154001113081E8000081C3E008010000009DE3BFA0F3 +S31540011140F027A044F227A048F427A04CC207A04CA0 +S31540011150C4006018C207A04CC20060208328600307 +S3154001116082008001901000017FFFFDDC010000003C +S31540011170821000088208680080A060000280000595 +S31540011180010000008210200010800036010000009E +S31540011190C207A04CC4006018C207A04CC200602020 +S315400111A08328600382008001C407A048C4206004EC +S315400111B0C207A04CC200602080A0607F1280001050 +S315400111C001000000C207A04CC4006018C207A04C31 +S315400111D0C20060208328600382008001C607A044C4 +S315400111E0050000068410C002C4204000C207A04C7E +S315400111F0C02060201080001001000000C207A04CF2 +S31540011200C4006018C207A04CC20060208328600356 +S3154001121082008001C407A0448410A800C420400075 +S31540011220C207A04CC200602084006001C207A04CE6 +S31540011230C4206020C207A04CE0004000C207A04C79 +S31540011240C2004000901000017FFFFDA40100000094 +S315400112508210000882106001C22400008210200121 +S31540011260B010000181E8000081C3E00801000000E0 +S315400112709DE3BFA0F027A044F227A048C207A0489B +S31540011280C400601CC207A048C200602483286003D2 +S3154001129082008001901000017FFFFD900100000057 +S315400112A0821000088208680080A060000280000564 +S315400112B00100000082102000108000330100000070 +S315400112C0C207A048C400601CC207A048C2006024EF +S315400112D08328600382008001C407A044C4206004BF +S315400112E0C207A048C200602480A0607F1280000E21 +S315400112F001000000C207A048C400601CC207A04804 +S31540011300C200602483286003820080010500000634 +S31540011310C4204000C207A048C02060241080000FAE +S3154001132001000000C207A048C400601CC207A048D3 +S31540011330C200602483286003820080018410280053 +S31540011340C4204000C207A048C20060248400600156 +S31540011350C207A048C4206024C207A048E00040005C +S31540011360C207A048C2004000901000017FFFFD5B0C +S31540011370010000008210000882106002C2240000B1 +S3154001138082102001B010000181E8000081C3E0080D +S31540011390010000009DE3BF98F027A044F227A04832 +S315400113A0F427A04CC207A04CC400601CC207A04C45 +S315400113B0C200602C832860038200800190100001E6 +S315400113C07FFFFD460100000082100008C227BFFCD6 +S315400113D0C207BFFC8208680080A060001280001727 +S315400113E001000000C207BFFC840867FFC207A04492 +S315400113F0C4204000C207A04CC200602C80A0607F80 +S315400114001280000601000000C207A04CC020602CDB +S315400114101080000701000000C207A04CC200602CEA +S3154001142084006001C207A04CC420602C82102001B8 +S31540011430108000030100000082102000B01000015E +S3154001144081E8000081C3E008010000009DE3BF98E8 +S31540011450F027A044C207A044C4006018C207A044B4 +S31540011460C200602883286003820080019010000139 +S315400114707FFFFD1A0100000082100008C227BFFC51 +S31540011480C207BFFC8208680080A06000128000137A +S3154001149001000000C207A044C200602880A0607F0E +S315400114A01280000601000000C207A044C020602847 +S315400114B01080000701000000C207A044C200602856 +S315400114C084006001C207A044C42060288210200124 +S315400114D0108000030100000082102000B0100001BE +S315400114E081E8000081C3E0080100000003100123E8 +S315400114F0C40060848400A001C420608481C3E008E4 +S31540011500010000009DE3BFA07FFFBF44901020046F S31540011510C2060000833060148088600F0280000894 S31540011520A0062020C2060000833060148208600FA6 -S3154001153080A0600608800089010000000301DC00EC -S31540011540C2240000DA04200403000010808B40010D -S315400115501280007A01000000DA042004030000042E -S31540011560808B40011280007201000000C2042004F9 -S31540011570808868001280005801000000C2042004DF -S31540011580808864001280005A01000000C2042004D1 -S31540011590808862001280005C01000000C2042004C1 -S315400115A0808861000280005E0100000082103FFEDB -S315400115B01B02F7ABC22420189A13615598102000DC -S315400115C0832B2003832B4001C2242010C204200414 -S315400115D08088610002BFFFFE0100000098032001E0 -S315400115E080A3200304BFFFF8832B2003C20600001B -S315400115F083306008820860FF80A060031480002D5C -S3154001160001000000DA04200403000004808B40013D -S315400116100280002D01000000C2242004C2042004DF -S3154001162080A0600006BFFFFE010000009810200365 -S31540011630DA04201498833FFF1CBFFFFE010000001F -S31540011640C2042004808862001280003F010000002D -S315400116509A10200098102000C0242010C2042004B3 -S315400116608088620002BFFFFE01000000C204201410 -S31540011670833060109B2B6008820860FF980320012D -S3154001168080A3200204BFFFF59A134001030037AB44 -S315400116908210615480A340012280003482103FFFB2 -S315400116A07FFFBEDF9010200A1080003082103FFF7E -S315400116B0DA04200403000004808B400102BFFFD7F7 -S315400116C0010000007FFFBED69010200810BFFFD357 -S315400116D0030000047FFFBED290102004C204200400 -S315400116E08088640002BFFFAA010000007FFFBECCD4 -S315400116F090102005C20420048088620002BFFFA822 -S31540011700010000007FFFBEC690102006C2042004DF -S315400117108088610032BFFFA782103FFE7FFFBEC0B7 -S315400117209010200710BFFFA382103FFE7FFFBEBC73 -S315400117309010200330BFFF8E7FFFBEB9901020026C -S3154001174030BFFF867FFFBEB6901020099A10200059 -S3154001175010BFFFC2981020007FFFBEB1901020013C -S3154001176010BFFF780301DC00C2242018C02400000A -S31540011770C224200481C7E00891E820009DE3BF9878 -S315400117807FFFBE9D110040B4C20600008330601445 -S31540011790A088600FA4062020BA0622001280007E8F -S315400117A0B8062050820E6001AE3800017FFFBE9719 -S315400117B090102001C2048000AA103FFF80A0600063 -S315400117C012800083AC102000C204A00480A06000F7 -S315400117D01280008501000000C204A00880A06000BC -S315400117E01280008701000000C204A00C80A06000A6 -S315400117F01280008901000000C204A01080A0600090 -S315400118001280008B010000007FFFBE8090102002F5 -S31540011810C206000083306008A92C2014A60860FF88 -S315400118201B10C00080A5E000128000048215000D47 -S315400118300300C00082150001C2248000DA04A0041E -S3154001184003000010808B40011280008F01000000D0 -S31540011850DA04A00403000004808B40011280008753 -S3154001186001000000C204A004808868001280008044 -S3154001187001000000C204A00480886400128000793F -S3154001188001000000C204A004808862001280007238 -S3154001189001000000C204A004808861000280006744 -S315400118A001000000032AAAAAA21062AAA004E0012C -S315400118B0E224A010A0843FFF12BFFFFEA238001110 -S315400118C0C204A00480886400128000600100000008 -S315400118D0C204A0048088610002BFFFFE010000002F -S315400118E0C204A004808862000280006E01000000EC -S315400118F0E224A01003001000C224A00C1B0000101B -S31540011900C204A0048088400D02BFFFFE0100000012 -S31540011910DA04A00403000004808B40010280005DCC -S3154001192001000000032AAAAAA21062AAA010200060 -S31540011930820C401583284016DA04A0149004200E28 -S31540011940A238001180A3400102800004A0042001B6 -S315400119507FFFBE330100000080A4001304BFFFF6E1 -S31540011960820C4015C024800082103FFFC224A0048F -S3154001197080A660020280008201000000DA060000B3 -S3154001198003000100808B40010280008001000000BD -S3154001199030800047820420019A103FFF9B2B400173 -S315400119A08210200FAC204010820E6001AE3800013B -S315400119B0AA38000D7FFFBE1590102001C204800099 -S315400119C080A0600002BFFF81010000007FFFBE14BE -S315400119D090102000C204A00480A0600002BFFF7FD7 -S315400119E0010000007FFFBE0E90102001C204A00836 -S315400119F080A0600002BFFF7D010000007FFFBE089E -S31540011A0090102002C204A00C80A0600002BFFF7BA0 -S31540011A10010000007FFFBE0290102003C204A01007 -S31540011A2080A0600002BFFF79010000007FFFBDFC7E -S31540011A309010200430BFFF757FFFBDF99010200A3A -S31540011A4010BFFF9A032AAAAA7FFFBDF59010200B6B -S31540011A5030BFFFA07FFFBDF29010200930BFFF8E3F -S31540011A607FFFBDEF9010200830BFFF877FFFBDECA1 -S31540011A709010200730BFFF807FFFBDE99010200600 -S31540011A8030BFFF797FFFBDE69010200530BFFF7163 -S31540011A907FFFBDE39010200D10BFFFA4032AAAAA21 -S31540011AA07FFFBDDF9010200C30BFFF927FFFBDD777 -S31540011AB0901020030330C00880A5E0001280000486 -S31540011AC0821500010320C00882150001C22480004E -S31540011AD00337AB7CA210600DA0102000832C20029E -S31540011AE0E2274001A004200180A4200104BFFFFC9D -S31540011AF0A238001182102003C2270000C024A0246E -S31540011B00A0102002E024A020C204A0048088620024 -S31540011B1002BFFFFE0337AB7CA210600DB004E00F9D -S31540011B20B2076200A0102001820C4015DA0640007F -S31540011B308328401690100018A2380011B20660049E -S31540011B4080A3400102800004B00620017FFFBDB49E -S31540011B5001000000A0843FFF1CBFFFF5820C401529 -S31540011B60C024A020C204A0208088600202BFFFFEDC -S31540011B7001000000C0248000308000047FFFFE6227 -S31540011B809010001830BFFF7E81C7E00891E8200021 -S31540011B909DE3BF987FFFBD981100403080A2200091 -S31540011BA0128000F382102001C226200CC026200498 -S31540011BB0C0260000C026200882102002C226200826 -S31540011BC0C0260000C026000082102003C22620083D -S31540011BD09A102083DA262008A2102063C02600002E -S31540011BE0A2847FFF1CBFFFFE01000000A2102063FC -S31540011BF0C2060000A2847FFF1CBFFFFE82102002A6 -S31540011C00C2262008A4062004C2848020808860045D -S31540011C1002BFFFFE01000000C0262008C0260000CA -S31540011C20A6102001C2848020833860148208603F58 -S31540011C3080A0600122800093A604E0018210200367 -S31540011C40C2262008C2848020808860010280000765 -S31540011C5080886004C2860020C2848020808860011A -S31540011C6012BFFFFD8088600402BFFFFB80886002CF -S31540011C7002BFFFF901000000C0262008C02620044B -S31540011C8080A4E0010480000821100080C2848020E5 -S31540011C908208608080A06001028000AE01000000E1 -S31540011CA021100080DA4C20F0DA260000C284802020 -S31540011CB08208600480A060010280009A0100000051 -S31540011CC0C284802080A4E00104800020821020018B -S31540011CD0A210200180A440131680000D2B10008015 -S31540011CE0A81420F0E00560E8901000114000247827 -S31540011CF092100010C24D0008A2046001C2260000E5 -S31540011D0080A4401306BFFFFA90100011C2848020C0 -S31540011D108208608080A0600102800092010000007C -S31540011D20C2848020833860148208603F80A04013BB -S31540011D3002800004010000007FFFBD39901020069B -S31540011D40C284802082102001C226200CDA848020A1 -S31540011D50808B6001128000680100000082102083A0 -S31540011D60C226200880A4E001028000520100000042 -S31540011D70C28480208088640002BFFFFE010000000B -S31540011D80C2848020808860010280005301000000E7 -S31540011D9080A4E00124800012A2102000C284802089 -S31540011DA08330601A80A040130280000401000000C5 -S31540011DB07FFFBD1B90102009C2848020808861006E -S31540011DC00280005501000000C284802080886400A2 -S31540011DD00280004D01000000A210200080A44013A3 -S31540011DE01680001203100080A81060F02B100080AE -S31540011DF0E08600209010001140002435D20560E8AD -S31540011E00C24D0008A204600180A040100280000477 -S31540011E109010200C7FFFBD020100000080A44013FA -S31540011E2006BFFFF40100000080A4E0010480000F1A -S31540011E3001000000C2848020808861001280004237 -S31540011E4001000000C28480208330601A80A06000B7 -S31540011E501280003A01000000C2848020808864001C -S31540011E601280003301000000C28480208088600116 -S31540011E701280001D01000000C02620083080003C71 -S31540011E80C0260000C2848020833860148208603FE7 -S31540011E9080A0401322BFFFFBA604E00180A4E0011D -S31540011EA034BFFF67A604FFFF10BFFF668210200301 -S31540011EB0C28480208088600112BFFFB20100000009 -S31540011EC0C28480208088600102BFFFFA01000000C1 -S31540011ED030BFFFAC7FFFBCD29010200810BFFFAED1 -S31540011EE080A4E0017FFFBCCE9010200CC0262008C4 -S31540011EF03080001F7FFFBCCA9010200710BFFF999A -S31540011F00821020837FFFBCC69010200B10BFFFB408 -S31540011F10A21020007FFFBCC29010200A30BFFFAB49 -S31540011F207FFFBCBF9010200130BFFF667FFFBCBC66 -S31540011F309010200B30BFFFCD7FFFBCB99010200E13 -S31540011F4030BFFFC67FFFBCB69010200D30BFFFBE2D -S31540011F507FFFBCB39010200410BFFF5321100080B7 -S31540011F607FFFBCAF9010200530BFFF6E81C7E008F0 -S31540011F7091E8200017100143DA02E0849002201014 -S31540011F809B2B60029812E084D023000DC202E084AC -S31540011F9082006001C222E08481C3E00801000000A2 -S31540011FA0C0220000C022204082103FFFC222200CE6 -S31540011FB09A10200103100143DA20608481C3E008AE -S31540011FC0010000009DE3BF7803100144F020610049 -S31540011FD07FFFBC89110040347FFFFFF2901000184B -S31540011FE0A010200123100047921000104000298DB7 -S31540011FF090146374A004200180A4200F04BFFFFC49 -S3154001200092100010C20620208330601CAE00600191 -S31540012010AC10200080A58017168000ED0300003F1C -S31540012020B81063FE2B1001430300002AB61062AAC2 -S31540012030BA102001B410001CB2156084832DA00C87 -S3154001204080A5E00114800119A600401880A5A000D2 -S315400120501280010A01000000F824E008C204E008E9 -S3154001206080A0401C02800004010000007FFFBC6C80 -S3154001207090102001F824E040C204E04080A0401CBA -S3154001208002800004010000007FFFBC659010200221 -S31540012090C204E00880A0600012BFFFFE01000000FC -S315400120A0C205608480A060100280000525100143AE -S315400120B07FFFBC5B9010200325100143A010200137 -S315400120C0A414A084A2102020832C20029A2440101C -S315400120D0D8048001A004200180A3000D02800004E1 -S315400120E0901020047FFFBC4E0100000080A4200F09 -S315400120F004BFFFF7832C2002FA256084F624C00032 -S31540012100F424E040C204C00080A0401B02800004C9 -S31540012110A010001A7FFFBC4290102005C204E04087 -S3154001212080A0401002800004010000007FFFBC3CFB -S3154001213090102005F424E008C204E00880A0600065 -S3154001214012BFFFFE01000000C205608480A060103E -S3154001215002800005251001437FFFBC319010200607 -S3154001216025100143A0102001A414A084A210201F11 -S315400121709B2C2002C204800D80A04011A0042001A6 -S31540012180A2047FFE02800004901020077FFFBC243A -S315400121900100000080A4200704BFFFF79B2C20020A -S315400121A0A4066028A210201CA0102005C2048000AD -S315400121B080A04011A404A004A2047FFE0280000472 -S315400121C0901020087FFFBC1601000000A0843FFF4D -S315400121D01CBFFFF701000000FA27BFE8C207BFE8AE -S315400121E082006001C227BFECDA07BFEC9A036001A7 -S315400121F0DA27BFF0C207BFF082006001C227BFF4F1 -S315400122009A102006DA27BFD8C024C000C024E04077 -S31540012210FA256084A0102002E024E040E024E00892 -S31540012220834440008088610002800005010000006F -S31540012230805000018050000180500001C207BFD884 -S31540012240C227BFDCDA07BFD880A36006028000043C -S31540012250010000007FFFBBF29010200AE024E00855 -S3154001226001000000C207BFD8C227BFDCDA07BFD8CA -S3154001227080A3600602800004010000007FFFBBE8E6 -S315400122809010200AE024E00801000000C027BFDCCE -S31540012290C207BFDC80A060001280009601000000EA -S315400122A0C204E00880A0600012BFFFFE01000000EA -S315400122B0C205608480A06004028000050300003FDF -S315400122C07FFFBBD79010200D0300003FC024E040A4 -S315400122D0821063FEC224E008031001439A102001D4 -S315400122E0DA206084400003E401000000400003E47A -S315400122F090122F0082103FFFC224E040C204E0400A -S3154001230080A0600002BFFFFE01000000C20560849C -S3154001231080A0600202800004A01560847FFFBBC0DC -S315400123209010200EC204200480A0601F0280000489 -S31540012330010000007FFFBBBA9010200F400003CE82 -S31540012340A8100010400003CE90023F00A0102002CA -S31540012350A4102020400003C801000000400003C82B -S3154001236090023F00C2056084A204200180A0401172 -S3154001237002800004901020107FFFBBA901000000DD -S31540012380832C20029A248010D8050001A010001148 -S3154001239080A3000D02800004901020117FFFBBA096 -S315400123A00100000080A4200F04BFFFEB01000000E4 -S315400123B0C024E040AC05A00182103FFFC224E00CDE -S315400123C080A5801706BFFF1F832DA00C80A5E001C5 -S315400123D00480004B01000000C0262024C2062024B0 -S315400123E080A060001280003F01000000210400002F -S315400123F0E0262024C206202480A040100280000549 -S31540012400821020017FFFBB8690102014821020018C -S31540012410C2262020C0262024C206202480A04010A7 -S3154001242002800004010000007FFFBB7D9010201553 -S31540012430C0262020C0262024C206202480A0600079 -S31540012440128000240100000082102002C2262020B2 -S31540012450DA062020808B60020280001B010000000A -S31540012460C0262020C20620208088600202800024E7 -S3154001247001000000308000117FFFFECA901000135A -S315400124809B2DA01CDA24E024C204E0248330601C86 -S3154001249080A0401602BFFEF1010000007FFFBB6035 -S315400124A09010201230BFFEED7FFFBB5890100016F2 -S315400124B010BFFEE880A5A0007FFFBB5990102018F1 -S315400124C03080000F7FFFBB569010201730BFFFE5CD -S315400124D07FFFBB539010201610BFFFDD82102002F4 -S315400124E07FFFBB4F9010201310BFFFC22104000095 -S315400124F07FFFBB4B9010200B30BFFF6A81C7E008BE -S3154001250091E8200003100143DA0060CCC023600843 -S3154001251081C3E008901020009DE3BF902F10014435 -S31540012520E205E100A004610027100143C204200432 -S31540012530F024E0CC7FFFBB359010201003018000D2 -S31540012540DA04200482106020808B40011280010D44 -S3154001255001000000DA046100DA27BFF0C20461001D -S3154001256080A3400102800005821020017FFFBB2C21 -S315400125709010200282102001C2242004DA04610056 -S31540012580DA27BFF0C204610080A340010280012026 -S3154001259001000000C0242004DA046100DA27BFF0FC -S315400125A0C204610080A340010280000580A720008B -S315400125B07FFFBB1B9010200480A72000128000B72C -S315400125C080A72001B010200180A6001A16800017AE -S315400125D0A8102001108000052510004980A6001A88 -S315400125E016800013DA04E0CCA206C0189014A104A8 -S315400125F09210001180A4601F14BFFFF9B00620019C -S315400126004000280801000000D805E100C20320402F -S315400126109B2D00118210400DC223204080A6001A36 -S3154001262006BFFFF3A206C018DA04E0CC9606A00363 -S31540012630C0236004833AE01FC023601098103FFF17 -S315400126408330601EAA02C001D8236014D823600CCF -S31540012650A2102000AD3D600280A720000280008AC2 -S31540012660A810200180A4401C168000ECC204E0CCD6 -S3154001267080A7200104800015B010200080A5A0008D -S315400126800480001380A0001C9B2C6010832C6018D2 -S315400126908210400D992C60088210400C8210401126 -S315400126A0993D6002DA04E0CCC2236020B0062001E5 -S315400126B080A72001048000059A03600480A30018C6 -S315400126C014BFFFFA0100000080A0001CB0603FFF6C -S315400126D080A6001A16800016C204E0CC25018000AF -S315400126E080A72000028000058206C01880A720012D -S315400126F0028000848206C011C2242004D804E0CCA2 -S31540012700832D00189B3E4018C2232008808B600110 -S31540012710128000859A10000CB006200180A6001A8E -S3154001272006BFFFF180A72000C204E0CCC0206008AC -S31540012730808E600112800009B0102000B006200191 -S3154001274080A6201F14800005833E401880886001C2 -S3154001275022BFFFFCB006200180A7200002800006B0 -S315400127608206C01880A72001028000048216E0205C -S315400127708206C01182106020C2242004DA04E0CC13 -S31540012780832D0018C2236008C203600880A0600040 -S3154001279012BFFFFE01000000C204200480886020B1 -S315400127A00280009801000000DA04200403010000C1 -S315400127B0808B40010280009001000000DA04200471 -S315400127C003008000808B40010280008801000000E8 -S315400127D0C2042008C227BFF0DA04200CDA27BFF46E -S315400127E0C204E0CC992D0018D82060089A10000147 -S315400127F0C203600880A0600012BFFFFE0100000016 -S31540012800C204200480886020028000750100000017 -S31540012810DA04200403010000808B40010280006D30 -S3154001282001000000DA04200403008000808B40018F -S315400128300280006501000000DA042008C207BFF0EB -S3154001284080A0400D02800004010000007FFFBA74A1 -S315400128509010200EDA04200CC207BFF480A0400D70 -S3154001286002800005030180007FFFBA6D9010200FA2 -S3154001287003018000C224200480A7200012BFFF7AF2 -S31540012880A204600180A4600004BFFF7B80A72001F1 -S3154001289010800062C204E0CC0280003D1110004964 -S315400128A0B010200080A6001C16BFFF60A8102001B2 -S315400128B0108000052510004980A6001C16BFFF5C4C -S315400128C0DA04E0CCA206C0189014A10492100011BB -S315400128D080A4601F14BFFFF9B006200140002751B4 -S315400128E001000000D805E100C20320409B2D0011E4 -S315400128F08210400DC223204010BFFFF180A6001C6C -S31540012900F6242004D804E0CC832D00189B3E4018C1 -S31540012910C2232008808B600122BFFF81B0062001BF -S315400129209A10000CC203600880A0600012BFFFFE2F -S3154001293001000000DA04200403010000808B4001FD -S315400129400280001E01000000DA042004030080001A -S31540012950808B40010280001601000000E42420041F -S31540012960C20420048088401222BFFF6DB0062001B8 -S315400129707FFFBA2B9010200710BFFF69B0062001D8 -S315400129807FFFBA279010200130BFFEF39012210439 -S31540012990400027249210001BDA05E100832F001B1B -S315400129A0C223604010BFFF22DA04E0CC7FFFBA1C8D -S315400129B09010200630BFFFEA7FFFBA19901020051C -S315400129C030BFFFE27FFFBA169010200D30BFFF9B4C -S315400129D07FFFBA139010200C30BFFF937FFFBA10D0 -S315400129E09010200B30BFFF8B7FFFBA0D9010200A4D -S315400129F030BFFF787FFFBA0A9010200930BFFF70C1 -S31540012A007FFFBA079010200830BFFF687FFFBA04E6 -S31540012A109010200330BFFEE0C020600CDA05E100D3 -S31540012A20C023604082103FFFC223600C81C7E0088B -S31540012A3091E820009DE3BF983B100144E607610001 -S31540012A407FFFB9F290102011C024E01CC204E01CA3 -S31540012A5080A060000280004801000000C204E01C22 -S31540012A608330601B80A0401A0A80003F01000000AD -S31540012A70A410200080A4801A1A8000422D10014320 -S31540012A80AA102001AE15A084A32CA002E006401195 -S31540012A907FFFFD4490100013A804A0019B2D401216 -S31540012AA0832D20108210400DC224E01C9A103FFF56 -S31540012AB0DA24E040D80600119A10201FDA232004B8 -S31540012AC0A0043FFFDA230000A12C20048204000C5D -S31540012AD09A102005DA206010C0206014EA206018A0 -S31540012AE09A100001C203601080A0600012BFFFFE71 -S31540012AF001000000A004000CC204201080A0600068 -S31540012B0002BFFFFE01000000C0242018C205A084B8 -S31540012B1080A06002028000069A04A01190048012EF -S31540012B207FFFB9BF900220039A04A011C205E004B9 -S31540012B3080A0400D22800006A4100014900480124B -S31540012B407FFFB9B790022004A4100014C024E01CF2 -S31540012B5080A5001A0ABFFFCEA32CA0021080000A4E -S31540012B60DA0761007FFFB9AE9010200210BFFFC2A5 -S31540012B70A41020007FFFB9AA9010200130BFFFB8F2 -S31540012B80DA076100C023604082103FFFC223600C18 -S31540012B9081C7E00891E820009DE3BF987FFFB9AF68 -S31540012BA00100000080A220000280002680A62000AD -S31540012BB012800029010000007FFFB9A80100000032 -S31540012BC0912A20047FFFB991900220034000186B9F -S31540012BD00100000080A220001280002B01000000AD -S31540012BE04000182801000000400017E101000000E4 -S31540012BF0400002230100000080A6A0001280002DA3 -S31540012C00031001447FFFB995B4106104912A200253 -S31540012C10C206800880A060001280003080A6200095 -S31540012C2012800039010000004000048A01000000C2 -S31540012C3040001E0001000000400015BD81E8000073 -S31540012C407FFFB96D1100400C80A6200002BFFFDB5B -S31540012C50010000007FFFBA19901000197FFFB97F6C -S31540012C6001000000912A20047FFFB96890022003E9 -S31540012C70400018420100000080A2200002BFFFD997 -S31540012C80010000007FFFB96690102001400017FD4A -S31540012C9001000000400017B601000000400001F8A5 -S31540012CA00100000080A6A00002BFFFD70310014427 -S31540012CB040001DEB01000000031001447FFFB9678E -S31540012CC0B4106104912A2002C206800880A06000E7 -S31540012CD002BFFFD480A620007FFFB960010000003B -S31540012CE07FFFB95EA0100008912A2002C206800823 -S31540012CF09FC040009010001080A6200002BFFFCB6D -S31540012D00010000007FFFB9FD9010001940000451F9 -S31540012D100100000040001DC701000000400015846D -S31540012D2081E800000100000003100143DA0060D091 -S31540012D309A036001DA2060D081C3E00801000000F7 -S31540012D409DE3BF987FFFB92C11004044D806200867 -S31540012D5082103FFFC2262004DA060000C2060000A8 -S31540012D6080A340010280006FA60B20078210201F1E -S31540012D70C2262004C226000080A4E000028000335F -S31540012D8082100018A2100013C0206018A2847FFF91 -S31540012D9012BFFFFE82006010A210200080A44013E3 -S31540012DA01680002B80A4E001A810200FA010001867 -S31540012DB07FFFB91690100011C0242010E82420147A -S31540012DC082102006C2242018DA04201080A3600F46 -S31540012DD002800004010000007FFFB911901020031A -S31540012DE0E82420189A10200EC204201080A0400D1D -S31540012DF012BFFFFE010000009A837FFF1CBFFFFB4D -S31540012E00A4100010C204201080A0600F12BFFFFE64 -S31540012E1001000000C204201880886010028000353D -S31540012E2082102010C224A018DA042018808B60106A -S31540012E301280003801000000A204600180A4401302 -S31540012E4006BFFFDCA004201080A4E001148000101E -S31540012E5080A4E0000280000782100018A21000132F -S31540012E60C0206018A2847FFF12BFFFFE820060105F -S31540012E7021100144C204210080A060000280002D7F -S31540012E801110004B1080000D921000197FFFB8DF22 -S31540012E90901020088210200FC22620189A10202F49 -S31540012EA0DA262028C206202080A0600D12BFFFFE30 -S31540012EB080A4E00030BFFFE8400025DA90122128C7 -S31540012EC07FFFFC38D004210082102001832840195D -S31540012ED0DA042100C22360409810200FD82620141E -S31540012EE08210200DC2262018A780000030800011D4 -S31540012EF07FFFB8CB9010200482102010C224A01866 -S31540012F00DA042018808B601022BFFFCDA204600135 -S31540012F107FFFB8C39010200510BFFFC9A20460010E -S31540012F207FFFB8BF9010200110BFFF928210201F73 -S31540012F3081C7E00881E800000000000000000000B1 -S31540012F400100000001000000010000000100000036 -S31540012F50010000000100000081C3E00801000000FB -S31540012F600100000001000000010000000100000016 -S31540012F70010000000100000081C3E00801000000DB -S31540012F8001000000010000000100000001000000F6 -S31540012F90010000000100000081C3E00801000000BB -S31540012FA001000000010000000100000001000000D6 -S31540012FB0010000000100000081C3E008010000009B -S31540012FC0D482018090A2000916BFFFFE9612800BA3 -S31540012FD081C3E0089010000BD48201C090A2000981 -S31540012FE016BFFFFE9612800B81C3E0089010000BBE -S31540012FF090A22004C0A201A090A22004C0A201A0D8 -S3154001300090A22004C0A201A090A22004C0A201A0C7 -S31540013010C0A2018090A2200414BFFFF70100000066 -S3154001302081C3E0080100000090A22004C0A201E093 -S3154001303090A22004C0A201E090A22004C0A201E017 -S3154001304090A22004C0A201E0C0A201C090A2200427 -S3154001305014BFFFF70100000081C3E0080100000032 -S31540013060981000089610000A98A3200814BFFFFF85 -S31540013070D43B00099810000898A3200814BFFFFF0D -S31540013080C01B00099810000898A32004D603000924 -S3154001309080A2C00A1280000698A3200434BFFFFD17 -S315400130A0D603000981C3E00890102000901020014A -S315400130B0981000089610000A98A3200814BFFFFF35 -S315400130C0D43B00099810000898A32004D6030009B0 -S315400130D080A2C00A1280000698A3200434BFFFFDD7 -S315400130E0D603000981C3E00890102000901020010A -S315400130F09810000898A32004D2A301A0DA8301A066 -S3154001310080A340091280000698A3200414BFFFFC47 -S31540013110D2A301A081C3E0089010200090102001A5 -S315400131209A1000089AA3400AD6A34180D8834180C9 -S31540013130981B000B988B0009128000069AA3400A3F -S3154001314014BFFFFBD6A3418081C3E0089010200045 -S31540013150901020019A1000089AA3400BD8A241CDA5 -S31540013160C48241CD8418800C8488800A128000066E -S315400131709AA3400B14BFFFFBD8A241CD81C3E008FF -S315400131809010200090102001010000000100000075 -S31540013190010000001310008092126138D4024000F1 -S315400131A080A2A0011280000780A0A002D4024000A4 -S315400131B0D4024000952AA0021080000501000000BB -S315400131C03280000381E80000D402400081E0000023 -S315400131D093480000818A60202310004CA21461F8B4 -S315400131E0A40460040100000081C4400081CC800039 -S315400131F091D0200191D02001268000059000200128 -S3154001320090222001912A2001912A200281C3E008BF -S315400132100100000081C3E008D082004081C3E0087C -S31540013220D2A2004081C3E008D082018081C3E00878 -S31540013230D2A2018081C3E008D08201A081C3E00807 -S31540013240D2A201A081C3E008D08201C081C3E008B7 -S31540013250D2A201C081C3E008D08201E081C3E00867 -S31540013260D2A201E081C3E008D2A2000081C3E008F6 -S31540013270D082000081C3E00891480000818A0000A5 -S3154001328001000000010000000100000081C3E008C8 -S315400132900100000081C3E008C0A000A081C3E0088E -S315400132A0C0A000C081C3E008D01A000001000000A0 -S315400132B001000000010000000100000001000000C3 -S315400132C09DE3BF7013100074CD1A60F0CD3FBFE08F -S315400132D0111000801B100080C91B61E0C51A21D85E -S315400132E0C11FBFE095A088C4D53FBFF0D91FBFF02D -S315400132F003100080D11861E881AB0A480100000043 -S315400133000380002BC13FBFD8F91FBFD8B5A0055CCC -S31540013310F53FBFF0ED1FBFF0F11FBFF0A5A58958DE -S31540013320E91FBFE0A1A488D415100074A1A0013003 -S31540013330DD1AA0F881AC0ACE010000000D80002DF7 -S31540013340F53FBFD0C51FBFD083A018C291A0492168 -S3154001335099A01928D51FBFE091A308CA1710007478 -S3154001336091A00128FD1AE10081AA0ADE01000000B0 -S315400133700D80002F01000000400001AE0100000059 -S315400133804000020C0100000080A2200012800031A2 -S3154001339001000000400002610100000080A22000FF -S315400133A00280003501000000308000317FFFB79C6C -S315400133B090102001F91FBFD8B5A0055CF53FBFF0BD -S315400133C0ED1FBFF0F11FBFF0A5A58958E91FBFE06A -S315400133D0A1A488D415100074A1A00130DD1AA0F86B -S315400133E081AC0ACE010000001BBFFFD7F53FBFD01D -S315400133F07FFFB78B90102002C51FBFD083A018C294 -S3154001340091A0492199A01928D51FBFE091A308CAC7 -S315400134101710007491A00128FD1AE10081AA0ADE65 -S31540013420010000001BBFFFD5010000007FFFB77CF4 -S31540013430901020034000017F01000000400001DDA3 -S315400134400100000080A2200002BFFFD3010000005E -S315400134507FFFB77301000000400002300100000009 -S3154001346080A2200002800004010000007FFFB76CAB -S315400134709010200581C7E00881E800009DE3BF98D0 -S315400134807FFFFF7D210000047FFFFF7D901200102A -S315400134907FFFFF79B0102000808A00100280000B68 -S315400134A09010200040000267010000007FFFB76BCB -S315400134B001000000912A20047FFFB75490022008A2 -S315400134C07FFFFF800100000081C7E00881E800001E -S315400134D019100080981321781110020092102000D3 -S315400134E0150FF76C9412A3D7D03B0000D4232008C4 -S315400134F0C11B0000C503200887A0892201000000E6 -S3154001350089A005408DA0892281A8CA260100000014 -S3154001351033800003901020009010200181C3E00801 -S3154001352001000000C11A0000C51A400089A00842E6 -S3154001353081C3E008C93A8000C11A0000C51A40009B -S3154001354089A0094281C3E008C93A80001910008068 -S3154001355098132178D0230000D2232008C10300000C -S31540013560C303200885A00D2181C3E008C53A800028 -S31540013570C11A0000C51A400089A009C2C93A800093 -S3154001358081C3E00801000000C11A000085A0054082 -S31540013590C53A400081C3E008010000000100000077 -S315400135A001000000010000000100000001000000D0 -S315400135B001000000010000000100000001000000C0 -S315400135C001000000010000000100000001000000B0 -S315400135D001000000010000000100000001000000A0 +S3154001153080A060060880008C010000000301DC00E9 +S31540011540C226202003000010C404200480888001A4 +S315400115501280007501000000C40420040300000449 +S31540011560808880011280007701000000C2042004B7 +S31540011570808868001280007901000000C2042004BE +S31540011580808864001280006501000000C2042004C6 +S31540011590808862001280005701000000C2042004C6 +S315400115A080886100028000590100000082103FFEE0 +S315400115B0C22420180702F7AB841020008610E1559B +S315400115C08328C002C2242010C204200480886100FE +S315400115D002BFFFFE010000008400A00880A0A020F9 +S315400115E012BFFFF98328C002C2060000833060089B +S315400115F0820860FF80A06003048000300100000083 +S31540011600C404200403000004808880011280003055 +S3154001161001000000C2242004C204200480A060000E +S3154001162006BFFFFE01000000C2042014C2042014BC +S31540011630C2042014C2042014C2042004808862001B +S31540011640128000270100000084102000861020002F +S31540011650C0242010C20420048088620002BFFFFE1D +S3154001166001000000C20420148728E008833060107E +S315400116708400A001820860FF80A0A00312BFFFF58D +S315400116808610C001030037AB8210615480A0C001AF +S315400116900280000582103FFF7FFFBEE79010200ABF +S315400116A082103FFFC2242018C0262020C2242004D5 +S315400116B081C7E00891E82000C40420040300000427 +S315400116C08088800112BFFFD4010000007FFFBEDA8F +S315400116D09010200810BFFFD0030000047FFFBED644 +S315400116E0901020098410200010BFFFDA86102000D8 +S315400116F07FFFBED190102006C2042004808861007D +S3154001170032BFFFAC82103FFE7FFFBECB9010200759 +S3154001171010BFFFA882103FFE7FFFBEC79010200575 +S3154001172030BFFF9B7FFFBEC490102002C40420043B +S31540011730030000048088800102BFFF8D0100000084 +S315400117407FFFBEBD90102003C2042004808868003C +S3154001175002BFFF8B010000007FFFBEB7901020043F +S3154001176030BFFF877FFFBEB49010200110BFFF75C9 +S315400117700301DC009DE3BFA07FFFBEA1110040B481 +S31540011780E2060000A3346014A28C600F1280007F31 +S31540011790A00620207FFFBEA190102001C206202076 +S315400117A0AE0E6001A8102000AA103FFF80A0600085 +S315400117B012800083AE380017C204200480A0600066 +S315400117C01280008501000000C204200880A060004C +S315400117D01280008701000000C204200C80A0600036 +S315400117E01280008901000000C204201080A0600020 +S315400117F01280008B010000007FFFBE8890102002FE +S3154001180080A0001784602000E6060000AD2C60141D +S3154001181003100000820880010500C00082004002DA +S3154001182082104016C2262020A734E008030000108B +S31540011830C404200480888001128000CCA60CE0FFFD +S31540011840C40420040300000480888001128000C47F +S3154001185001000000C204200480886800128000BD97 +S3154001186001000000C204200480886400128000B692 +S3154001187001000000C204200480886200128000AF8B +S3154001188001000000C204200480886100028000A794 +S3154001189001000000232AAAAA82102000A21462AAEB +S315400118A0E22420108200600180A4C00116BFFFFD22 +S315400118B0A2380011C2042004808864001280009876 +S315400118C001000000C20420048088610002BFFFFEBF +S315400118D001000000C2042004808862000280008D5D +S315400118E001000000E224201003001000C224200C55 +S315400118F005000010C20420048088400202BFFFFE9A +S3154001190001000000C4042004030000048088800113 +S315400119100280007C01000000252AAAAAA21020000C +S31540011920A414A2AAC4042014820C8015832840144E +S3154001193080A0800122800005A20460017FFFBE3E97 +S315400119409004600EA204600180A4C01136BFFFF668 +S31540011950A4380012C026202082103FFFC224200452 +S3154001196080A660020280008401000000C4060000D7 +S3154001197003000100808880011280002C01000000D4 +S3154001198081C7E00891E8200082046001AA103FFF68 +S31540011990901020017FFFBE21AB2D4001C2062020C1 +S315400119A0A810200FAE0E6001AA380015A825001117 +S315400119B080A0600002BFFF81AE3800177FFFBE1EC8 +S315400119C090102000C204200480A0600002BFFF7F67 +S315400119D0010000007FFFBE1890102001C2042008BC +S315400119E080A0600002BFFF7D010000007FFFBE12A4 +S315400119F090102002C204200C80A0600002BFFF7B31 +S31540011A00010000007FFFBE0C90102003C20420108D +S31540011A1080A0600002BFFF79010000007FFFBE0683 +S31540011A209010200430BFFF757FFFBDFC901020034E +S31540011A30A406220080A00017846020000310000045 +S31540011A40820880010520C0088200400282104016AB +S31540011A50C22620200337AB7C8210600DC2262200AD +S31540011A6003085483821063F2C224A0048210200327 +S31540011A70C2262050C024202482102002C2242020C5 +S31540011A80C20420048088620002BFFFFE01000000FC +S31540011A90C404A2000337AB7C8210600D820D400165 +S31540011AA08328401480A080010280000401000000C8 +S31540011AB07FFFBDE19004E00FC204A20405085483F0 +S31540011AC08410A3F2AA0D4002A92D401480A040140F +S31540011AD002800004010000007FFFBDD79004E010A2 +S31540011AE0C0242020C20420208088600202BFFFFE5D +S31540011AF001000000C026202081C7E00891E82000AF +S31540011B007FFFBDCD9010200D10BFFF85252AAAAAC3 +S31540011B107FFFBDC99010200C30BFFF737FFFBDC64C +S31540011B209010200B30BFFF687FFFBDC39010200A85 +S31540011B3010BFFF5A232AAAAA7FFFBDBF90102009D2 +S31540011B4030BFFF517FFFBDBC9010200830BFFF4A18 +S31540011B507FFFBDB99010200730BFFF437FFFBDB661 +S31540011B609010200630BFFF3C7FFFBDB3901020058B +S31540011B7030BFFF347FFFFE649010001830BFFF7CFA +S31540011B809DE3BF987FFFBDA590102005211001243C +S31540011B90D004210480A220000280003FA20620201A +S31540011BA04000013101000000C204210484102001DB +S31540011BB085288019C42060409210001911100045F3 +S31540011BC040002A97901220ECC204600480A0600075 +S31540011BD012800027010000000310CC00C2262020FD +S31540011BE082102200C224600821100123C2042084ED +S31540011BF080A060001280001B01000000C02460101C +S31540011C00C204600480A0600006BFFFFE0100000020 +S31540011C10C2046004808862000280001C010000004A +S31540011C20C2046014C227BFFCC204600480886200FB +S31540011C301280001301000000C204208480A06001CC +S31540011C4002800004010000007FFFBD7B901020064A +S31540011C50C0246008C026202081C7E00891E8200002 +S31540011C607FFFBD759010200330BFFFE57FFFBD723A +S31540011C709010200210BFFFDA0310CC007FFFBD6E2B +S31540011C809010200530BFFFED7FFFBD6B9010200403 +S31540011C9030BFFFE47FFFBD689010200110BFFFC831 +S31540011CA0921000199DE3BFA07FFFBD551100403042 +S31540011CB080A22000128000AF82102001C226200C93 +S31540011CC0C0262004C0260000C0262008821020021B +S31540011CD0C2262008C0260000C0260000821020032C +S31540011CE0C226200882102083C226200882102000A6 +S31540011CF0C02600008200600180A0606412BFFFFD23 +S31540011D000100000082102000C4060000820060012C +S31540011D1080A0606412BFFFFD010000008210200216 +S31540011D20C2262008A0062004C284002080886004C0 +S31540011D3002BFFFFE01000000C0262008C0260000A9 +S31540011D40C284002084102001833860148208603FD9 +S31540011D5080A0600102800004A21020011080000EC4 +S31540011D6082102003C0260000A200A001C2840020E8 +S31540011D70833860148208603F80A0401122BFFFFA79 +S31540011D808410000180A4600134800002A210000288 +S31540011D9082102003C2262008C284002082086007E0 +S31540011DA080A060060280000801000000C286002073 +S31540011DB0C28400208208600780A0600612BFFFFC33 +S31540011DC001000000C0262008C026200480A460012E +S31540011DD00480000482102034C28400208210203402 +S31540011DE0C2260000C2840020C284002080A4600173 +S31540011DF0048000198210200129100076A4102001C8 +S31540011E00A815217090100012400024DC9210204148 +S31540011E10C24D0008C2260000A404A00180A480117E +S31540011E2012BFFFFA90100012C2840020C284002023 +S31540011E30833860148208603F80A04011028000040C +S31540011E40010000007FFFBCFC90102006C2840020E8 +S31540011E5082102001C226200CC284002080886001A5 +S31540011E601280005382102083C226200880A460017C +S31540011E700280004201000000C28400208088640084 +S31540011E8002BFFFFE01000000C2840020808860017D +S31540011E900280004F80A460010480005280A460004B +S31540011EA0C28400208330601A80A040110280000461 +S31540011EB0010000007FFFBCE090102009C284002091 +S31540011EC0808861000280004A01000000C28400202F +S31540011ED0808864000280004C0100000029100076D1 +S31540011EE0A4102000A8152170E686002092102041FA +S31540011EF0400024A290100012C24D000880A0401359 +S31540011F0022800005A404A0017FFFBCCB9010200CC9 +S31540011F10A404A00180A4401214BFFFF480A4600170 +S31540011F200480000F01000000C28400208088610007 +S31540011F301280003F01000000C28400208330601AF5 +S31540011F4080A060001280003701000000C28400209A +S31540011F50808864001280003001000000E084002087 +S31540011F60808C20011280000E01000000C02620084E +S31540011F7081C7E00891E82000C28400208088600182 +S31540011F8012BFFFC201000000C284002080886001A8 +S31540011F9002BFFFFA0100000030BFFFBC7FFFBCA6B5 +S31540011FA09010200CC026200830BFFFF27FFFBCA254 +S31540011FB09010200782102083C226200880A4600149 +S31540011FC012BFFFAE0100000030BFFFEC7FFFBC9A9D +S31540011FD09010200880A4600114BFFFB280A4600065 +S31540011FE034BFFFC02910007630BFFFDD7FFFBC92B2 +S31540011FF09010200AC28400208088640032BFFFB955 +S31540012000291000767FFFBC8C9010200B10BFFFB5C6 +S31540012010291000767FFFBC889010200B30BFFFD07F +S315400120207FFFBC859010200E30BFFFC97FFFBC8269 +S315400120309010200D30BFFFC103100123C4006088FA +S315400120408528A0028610608890022010D020C00208 +S31540012050C40060888400A001C420608881C3E00870 +S3154001206001000000C0220000C022204082103FFF34 +S31540012070C222200C0310012384102001C420608851 +S3154001208081C3E0080100000003100123C20060D0B3 +S3154001209090102000C020600881C3E00801000000C4 +S315400120A09DE3BFA023100124E00461047FFFBC5BD4 +S315400120B090102011C024201CC204201C80A0600066 +S315400120C00280004C01000000C204201C8330601BCA +S315400120D080A0401A0A80004E80A6A0000280003FE0 +S315400120E0C20461042B100123A6102004AA1560889E +S315400120F0BA102000A4102000AE103FFFA810200106 +S31540012100AC10201FB8102005BB2F6002C606401D2B +S31540012110C0240000C0242040EE24200CE8254000C5 +S31540012120832D0012A404A001852CA01082108001E9 +S31540012130C224201CEE2420408928E0049A00FFFF97 +S31540012140C206001D980040049B2B60048400400D8C +S31540012150EC206004EC204000F8204004C023200419 +S31540012160E820A018C400400480A0A00012BFFFFED2 +S31540012170010000008728E004C400400380A0A000BD +S3154001218002BFFFFE010000008200400DC020601822 +S31540012190C205400080A060020280000401000000E8 +S315400121A07FFFBC259004FFFFC40560048204A01094 +S315400121B080A0800102800004BA1000127FFFBC1E7D +S315400121C090100013C024201C80A6801218BFFFCF98 +S315400121D0A604E002C204610484103FFFB01020004F +S315400121E0C0206040C420600C81C7E00881E800003F +S315400121F07FFFBC1190102001C204201C8330601B5C +S3154001220080A0401A1ABFFFB680A6A0007FFFBC0A75 +S315400122109010200210BFFFB52B1001239DE3BF8014 +S315400122202310012321100124E6042104A404E10022 +S31540012230C204A004F02460D07FFFBBF890102010A8 +S31540012240C204A004050180008410A02080884002B9 +S315400122501280014501000000C404E100C204E1000E +S3154001226080A0800102800005821020017FFFBBF221 +S315400122709010200282102001C224A004C404E1006F +S31540012280C204E10080A080010280014201000000F9 +S31540012290C024A004C404E100C204E10080A080017E +S315400122A00280000580A720007FFFBBE39010200439 +S315400122B080A720001280011180A7200180A6A001DD +S315400122C00480001A2F100048A606E001AE15E088EA +S315400122D0A8102001AC14210410800005AA10200189 +S315400122E080A6801404800011A604E00180A4E01FAA +S315400122F034BFFFFCA805200192100013400028C8F6 +S3154001230090100017C2058000C4006040872D40131D +S315400123108410C002C4206040A805200180A6801414 +S3154001232014BFFFF3A604E00180A0001C84603FFFB8 +S31540012330C427BFF0C60460D082103FFFF627BFF81E +S31540012340C027BFFCC020E004C020E010C220E0143A +S31540012350C220E00C8206A0038538601F8530A01E8E +S3154001236082008001AF386002C207BFF08200401B85 +S315400123708416E020C227BFECC427BFE829100123F9 +S31540012380AC102001A81520D0310100003B0080008F +S315400123902B01800080A720000280000382102001CB +S315400123A08210001CC407BFFC80A08001168000CBB0 +S315400123B080A720010480001680A5E0000480001457 +S315400123C0C207BFFCC407BFFC892860188328601078 +S315400123D0881100018328A008881100028400E024A6 +S315400123E08811000182102001C820E02010800006DB +S315400123F080A04017C8208000820060018400A004AC +S3154001240080A0401712BFFFFC01000000C207BFF0C9 +S31540012410E827BFF480A68001A210000104800033A2 +S315400124208400E0081080000EE607BFECE624A00415 +S31540012430832D8011C220E008833E401180886001CF +S31540012440128000138400E008A204600180A6801176 +S3154001245004800026A604E001C605000080A72000EE +S3154001246002BFFFF380A7200102800079C407BFF8AD +S31540012470C424A004832D8011C220E008833E40116C +S315400124808088600102BFFFF18400E008C20080003D +S3154001249080A0600012BFFFFE01000000C204A0043C +S315400124A0808840180280006701000000C204A00431 +S315400124B08088401D0280006001000000EA24A004DB +S315400124C0C204A00480884015128000560100000015 +S315400124D0C40500008400A008A204600180A6801102 +S315400124E014BFFFDEA604E001C02080001080000575 +S315400124F0A210200080A460200280000780A720004F +S31540012500833E40118088600122BFFFFBA204600127 +S3154001251080A720001280005180A720018204401B21 +S3154001252082106020C224A004A32D8011E2208000E5 +S31540012530C200800080A0600012BFFFFE01000000C3 +S31540012540C204A004808860200280005D0100000072 +S31540012550C204A00480884018028000560100000091 +S31540012560C204A0048088401D0280004E0100000084 +S31540012570C207BFF4C4004000C204A008E604A00C90 +S315400125808600A008E220A008C400C00080A0A000E8 +S3154001259012BFFFFE01000000C404A0048088A020F1 +S315400125A02280003CC227BFE4C404A004808880186E +S315400125B022800034C227BFE4C404A0048088801D61 +S315400125C02280002CC227BFE4C404A00880A0400298 +S315400125D002800004010000007FFFBB179010200E0F +S315400125E0C204A00C80A4C00102800005C407BFF448 +S315400125F07FFFBB119010200FC407BFF4C207BFFC79 +S31540012600C6008000C407BFF8820060018400A001B3 +S31540012610EA24A004C227BFFC10BFFF5FC427BFF84E +S315400126207FFFBB0590102007C405000010BFFFAB1C +S315400126308400A0087FFFBB009010200630BFFFA09A +S315400126407FFFBAFD9010200530BFFF99F624A00404 +S3154001265010BFFF79832D80110280001CC607BFF889 +S315400126608210E020C224A00410BFFFB1A32D801127 +S315400126707FFFBAF19010200D10BFFFD4C207BFE40F +S315400126807FFFBAED9010200C10BFFFCCC207BFE40C +S315400126907FFFBAE99010200B10BFFFC4C207BFE409 +S315400126A07FFFBAE59010200A10BFFFB3C207BFF4FF +S315400126B07FFFBAE19010200930BFFFAA7FFFBADE43 +S315400126C09010200830BFFFA3C607BFE8C624A00468 +S315400126D010BFFF97A32D8011C2042104C020E00C36 +S315400126E084103FFFB0102000C0206040C420600C21 +S315400126F081C7E00881E800000280001E11100048F1 +S3154001270080A72000A610001B04BFFF08A8102000C8 +S315400127102F100048AC142104AE15E0881080000546 +S31540012720AA10200180A7001404BFFF00A604E001FF +S3154001273080A4E01F34BFFFFCA805200192100013BE +S31540012740400027B790100017C2058000C4006040C2 +S31540012750872D40138410C002C420604010BFFFF291 +S31540012760A80520017FFFBAB49010200130BFFEBBFF +S315400127709210001B400027AA90122088C20421040F +S31540012780852F001BC420604010BFFEE980A0001CBD +S315400127907FFFBAA99010200330BFFEBE9DE3BF80E4 +S315400127A00310012411004034231000487FFFBA94DE +S315400127B0F0206104C0260000C026204082103FFF61 +S315400127C0C226200C0310012384102001A0102001F1 +S315400127D0C4206088A21460389210001040002790EF +S315400127E090100011A004200180A4201012BFFFFC0C +S315400127F092100010F8062020B937201C231001231F +S315400128002D00003F3700002AB8072001A214608836 +S31540012810AC15A3FEB616E2AAA6100018AE1020000B +S31540012820B4103FFFBA102001A8102020AA10202181 +S3154001283080A720010280000580A5E0007FFFBA77CE +S315400128409010001780A5E0000280000F01000000F3 +S31540012850C024C000C024E040F424E00CFA24400027 +S31540012860832DE01CC224E024C204E0248330601C92 +S3154001287080A0401702800004010000007FFFBA6E6D +S3154001288090102012EC24E008C204E00880A0401613 +S3154001289002800004010000007FFFBA67901020010A +S315400128A0EC24E040C204E04080A0401602800004CF +S315400128B0010000007FFFBA6090102002C204E008C8 +S315400128C080A0600012BFFFFE01000000C20440006C +S315400128D080A0601002800005A01020017FFFBA563B +S315400128E090102003A0102001832C2002C204400135 +S315400128F08425001080A0800122800005A0042001CB +S315400129007FFFBA4D90102004A004200180A420101E +S3154001291012BFFFF7832C2002FA244000F624C000A0 +S31540012920EC24E040C204C00080A0401B02800004A9 +S31540012930010000007FFFBA4090102005C204E0402C +S3154001294080A0401602800004010000007FFFBA3AD1 +S3154001295090102005EC24E008C204E00880A0600045 +S3154001296012BFFFFE01000000C204400080A06010BB +S3154001297002800005A410201F7FFFBA2F9010200669 +S31540012980A410201FA0102001832C2002C204400164 +S3154001299080A0401222800005A00420017FFFBA26B4 +S315400129A090102007A004200180A4200812BFFFF741 +S315400129B0A404BFFEA410201CA010200A832C2002D0 +S315400129C0C204400180A0401222800005A0042001DB +S315400129D07FFFBA1990102008A004200180A420107E +S315400129E012BFFFF7A404BFFEFA27BFF082102002F0 +S315400129F0C407BFF08400A001C427BFF4C407BFF4D5 +S31540012A008400A001C427BFF8C407BFF88400A00111 +S31540012A10C427BFFC84102006C427BFE0C024C000E1 +S31540012A20C024E040FA244000C224E040C224E00829 +S31540012A308344400080886100028000050100000057 +S31540012A40805000018050000180500001C207BFE064 +S31540012A50C227BFE4C207BFE080A06006028000052E +S31540012A60821020027FFFB9F49010200A82102002C2 +S31540012A70C224E00801000000C207BFE0C227BFE44C +S31540012A80C207BFE080A060060280000582102002D6 +S31540012A907FFFB9E99010200A82102002C224E00883 +S31540012AA001000000C027BFE4C207BFE480A0600068 +S31540012AB01280007301000000C204E00880A060009B +S31540012AC012BFFFFE01000000C204400080A0600466 +S31540012AD002800004010000007FFFB9D79010200D4D +S31540012AE0C024E040EC24E008FA24400040000212F1 +S31540012AF0010000004000021290122F00EC24E04039 +S31540012B00C204E04080A0600002BFFFFE0100000059 +S31540012B10C204400080A0600202800004010000005F +S31540012B207FFFB9C59010200EC204600480A0601FCB +S31540012B3002800004010000007FFFB9BF9010200F02 +S31540012B40400001FDA4102002400001FD90023F001B +S31540012B50400001F901000000400001F990023F00E8 +S31540012B60C2044000A004A00180A0401022800005BC +S31540012B70A52CA0027FFFB9B090102010A52CA00271 +S31540012B80C40440128225401080A0800102800004C6 +S31540012B90A41000107FFFB9A89010201180A4201026 +S31540012BA012BFFFEC01000000C024E040F424E00C19 +S31540012BB0AE05E00180A7001714BFFF1EA624F00052 +S31540012BC080A720010480002C01000000C02620249B +S31540012BD0C206202480A060001280002C0100000063 +S31540012BE003040000C2262024C406202480A08001BC +S31540012BF002800005821020017FFFB98F90102014BA +S31540012C0082102001C2262020C02620240304000071 +S31540012C10C406202480A08001028000040100000037 +S31540012C207FFFB98590102015C0262020C02620247C +S31540012C30C206202480A060001280001B0100000013 +S31540012C4082102002C2262020C206202080886002EF +S31540012C500280001201000000C0262020C20620206A +S31540012C608088600202800004010000007FFFB97283 +S31540012C709010201881C7E00891E820007FFFB96EC7 +S31540012C809010200B30BFFF8D7FFFB96B9010201342 +S31540012C9010BFFFD5030400007FFFB96790102017CE +S31540012CA030BFFFEE7FFFB9649010201610BFFFE6DC +S31540012CB0821020029DE3BFA07FFFB97B0100000087 +S31540012CC080A220000280003B0100000080A6200077 +S31540012CD012800035010000007FFFB973010000003A +S31540012CE0912A20047FFFB94D9002200340001887A6 +S31540012CF00100000080A2200012800028010000008F +S31540012D004000182601000000400017D401000000D1 +S31540012D10400001EA0100000080A6A0001280001CCC +S31540012D20010000007FFFB96021100124912A200291 +S31540012D30A0142108C204000880A060000280000A95 +S31540012D4080A620007FFFB95801000000912A200289 +S31540012D507FFFB955E00400089FC400000100000050 +S31540012D6080A6200002800004010000007FFFB967B1 +S31540012D7090100019400004470100000040001E5613 +S31540012D8001000000400015D981E8000040001F28DD +S31540012D900100000030BFFFE47FFFB92790102001FA +S31540012DA030BFFFD87FFFB9499010001930BFFFCB24 +S31540012DB07FFFB9131100400C10BFFFC680A620004B +S31540012DC003100123C40060D48400A001C42060D450 +S31540012DD081C3E008010000009DE3BFA07FFFB90861 +S31540012DE01100404482103FFFE4062008C226200419 +S31540012DF0A40CA007C4060000C206000080A0800102 +S31540012E0002800074010000008210201FC2262004A7 +S31540012E10C226000080A4A0000280004E821020003D +S31540012E2085286004840600028200600180A0401269 +S31540012E30C020A01812BFFFFC85286004A010200006 +S31540012E40A610200FAA102006A81020107FFFB8F365 +S31540012E5090100010A2042001832C60048606000114 +S31540012E60A12C2004C026000184060010E620E004BF +S31540012E70EA20A018C206000180A0600F028000056A +S31540012E80820600107FFFB8EC9010200382060010E6 +S31540012E908410200E872C6004E6206018C2060003C9 +S31540012EA080A0400212BFFFFE010000008400BFFF68 +S31540012EB080A0BFFF12BFFFFA01000000852C60040D +S31540012EC0C206000280A0600F12BFFFFE82060010FC +S31540012ED0C20060188088601002800033A00600108E +S31540012EE0E8242018C204201880886010128000351A +S31540012EF00100000080A4801114BFFFD5A01000116D +S31540012F0080A4A0010480000C821020007FFFB8C37A +S31540012F10901020088210200FC22620188210202FE0 +S31540012F20C2262028C206202080A0600D12BFFFFEC7 +S31540012F308210200085286004840600028200600118 +S31540012F4080A04012C020A01812BFFFFC8528600453 +S31540012F5021100124C204210480A0600002800010D7 +S31540012F60921000191110004B400025AD901221C05E +S31540012F707FFFFC3DD0042104C204210484102001BA +S31540012F80B3288019F22060408210200FC2262014F7 +S31540012F908210200DC2262018A780000081C7E008B4 +S31540012FA081E800007FFFB8A490102004E82420188F +S31540012FB0C20420188088601022BFFFD080A48011EF +S31540012FC07FFFB89D9010200510BFFFCC80A48011D3 +S31540012FD07FFFB8999010200110BFFF8D8210201FEE +S31540012FE0000000000000000000000000000000009A +S31540012FF0000000000000000000000000000000008A +S315400130000100000001000000010000000100000075 +S31540013010010000000100000081C3E008010000003A +S315400130200100000001000000010000000100000055 +S31540013030010000000100000081C3E008010000001A +S315400130400100000001000000010000000100000035 +S31540013050010000000100000081C3E00801000000FA +S315400130600100000001000000010000000100000015 +S31540013070010000000100000081C3E00801000000DA +S31540013080D482018090A2000916BFFFFE9612800BE2 +S3154001309081C3E0089010000BD48201C090A20009C0 +S315400130A016BFFFFE9612800B81C3E0089010000BFD +S315400130B090A22004C0A201A090A22004C0A201A017 +S315400130C090A22004C0A201A090A22004C0A201A007 +S315400130D0C0A2018090A2200414BFFFF701000000A6 +S315400130E081C3E0080100000090A22004C0A201E0D3 +S315400130F090A22004C0A201E090A22004C0A201E057 +S3154001310090A22004C0A201E0C0A201C090A2200466 +S3154001311014BFFFF70100000081C3E0080100000071 +S31540013120981000089610000A98A3200814BFFFFFC4 +S31540013130D43B00099810000898A3200814BFFFFF4C +S31540013140C01B00099810000898A32004D603000963 +S3154001315080A2C00A1280000698A3200434BFFFFD56 +S31540013160D603000981C3E008901020009010200189 +S31540013170981000089610000A98A3200814BFFFFF74 +S31540013180D43B00099810000898A32004D6030009EF +S3154001319080A2C00A1280000698A3200434BFFFFD16 +S315400131A0D603000981C3E008901020009010200149 +S315400131B09810000898A32004D2A301A0DA8301A0A5 +S315400131C080A340091280000698A3200414BFFFFC87 +S315400131D0D2A301A081C3E0089010200090102001E5 +S315400131E09A1000089AA3400AD6A34180D883418009 +S315400131F0981B000B988B0009128000069AA3400A7F +S3154001320014BFFFFBD6A3418081C3E0089010200084 +S31540013210901020019A1000089AA3400BD8A241CDE4 +S31540013220C48241CD8418800C8488800A12800006AD +S315400132309AA3400B14BFFFFBD8A241CD81C3E0083E +S3154001324090102000901020010100000001000000B4 +S315400132500100000013100080921260E4D402400085 +S3154001326080A2A0011280000780A0A002D4024000E3 +S31540013270D4024000952AA0021080000501000000FA +S315400132803280000381E80000D402400081E0000062 +S3154001329093480000818A60202310004CA21462B832 +S315400132A0A40460040100000081C4400081CC800078 +S315400132B091D0200191D02001268000059000200167 +S315400132C090222001912A2001912A200281C3E008FF +S315400132D00100000081C3E008D082004081C3E008BC +S315400132E0D2A2004081C3E008D082018081C3E008B8 +S315400132F0D2A2018081C3E008D08201A081C3E00847 +S31540013300D2A201A081C3E008D08201C081C3E008F6 +S31540013310D2A201C081C3E008D08201E081C3E008A6 +S31540013320D2A201E081C3E008D2A2000081C3E00835 +S31540013330D082000081C3E00891480000818A0000E4 +S3154001334001000000010000000100000081C3E00807 +S315400133500100000081C3E008C0A000A081C3E008CD +S31540013360C0A000C081C3E008D01A000001000000DF +S315400133700100000001000000010000000100000002 +S315400133809DE3BF8803100076D11861B8D13FBFF0E5 +S3154001339003100080D11FBFF0D9186180031000804F +S315400133A0D518618895A308CAD53FBFF80310008098 +S315400133B0D91FBFF8D518619081AB0A4A01000000B8 +S315400133C023800038D127BFEC91A005480310007631 +S315400133D0D13FBFF8D51FBFF8D91FBFF899A3094AF6 +S315400133E0D51FBFF099A308CA99A0012CD51861C071 +S315400133F081AB0ACA010000002D800024D127BFEC11 +S3154001340091A018C891A20928D51FBFF091A01928EB +S3154001341091A208CA91A0012803100076D51861C867 +S3154001342081AA0ACA010000000D80001501000000B2 +S315400134304000019001000000400001EE0100000043 +S3154001344080A220001280000B0100000040000243D0 +S315400134500100000080A2200012800004010000004B +S3154001346081C7E00881E800007FFFB77391E8200536 +S315400134707FFFB7710100000030BFFFF57FFFB76ED8 +S315400134809010200330BFFFEBD327BFE87FFFB76A19 +S3154001349090102002D307BFE810BFFFDAD107BFEC77 +S315400134A0D327BFE87FFFB76490102001D307BFE859 +S315400134B010BFFFC6D107BFEC9DE3BFA07FFFFF9EB4 +S315400134C0210000047FFFFF9E901200107FFFFF9AAC +S315400134D001000000808A001012800004B010200014 +S315400134E081C7E00881E80000400002669010200094 +S315400134F07FFFB76D01000000912A20047FFFB74787 +S31540013500900220087FFFFF9F81E800000100000034 +S3154001351019100080981321201110020092102000EA +S31540013520150FF76C9412A3D7D03B0000D423200883 +S31540013530C11B0000C503200887A0892201000000A5 +S3154001354089A005408DA0892281A8CA2601000000D4 +S3154001355033800003901020009010200181C3E008C1 +S3154001356001000000C11A0000C51A400089A00842A6 +S3154001357081C3E008C93A8000C11A0000C51A40005B +S3154001358089A0094281C3E008C93A80001910008028 +S3154001359098132120D0230000D2232008C103000024 +S315400135A0C303200885A00D2181C3E008C53A8000E8 +S315400135B0C11A0000C51A400089A009C2C93A800053 +S315400135C081C3E00801000000C11A000085A0054042 +S315400135D0C53A400081C3E008010000000100000037 S315400135E00100000001000000010000000100000090 S315400135F00100000001000000010000000100000080 S31540013600010000000100000001000000010000006F -S3154001361001000000010000000100000081A000201F -S3154001362081C3E00801000000C11A000081C3E0081F -S3154001363001000000C51A000089A009C2C93A40002C -S3154001364081C3E008010000001310008092126178E6 -S31540013650D0224000C102400085A01900C53A400071 -S3154001366081C3E008D01A400013100080921261789D -S31540013670D0224000C102400085A01880C5224000EA -S3154001368081C3E008D0024000151000809412A17851 -S31540013690D03A8000C11A800085A01A40C522800018 -S315400136A081C3E008D0028000151000809412A178F1 -S315400136B0D0228000C102800085A01A20C522800048 -S315400136C081C3E008D0028000151000809412A178D1 -S315400136D0D0228000C102800081A01920C13A800019 -S315400136E081C3E008D01A8000151000809412A17899 -S315400136F0D03A8000C11A800081A018C0C122800042 -S3154001370081C3E008D0028000151000809412A17890 -S31540013710D0228000CB0280008DA00025CD228000E2 -S3154001372081C3E008D0028000151000809412A17870 -S31540013730D0228000CB0280008DA000A5CD22800042 -S3154001374081C3E008D0028000151000809412A17850 -S31540013750D0228000CB0280008DA00125CD228000A1 -S3154001376081C3E008D00280001910008098132178A7 -S31540013770D03B0000D43B2008C11B0000C51B2008DC -S3154001378081A80A4201000000338000099010200000 -S3154001379029800007901020012D80000590102002FD -S315400137A02F8000039010200391D0200081C3E008B0 -S315400137B0010000001910008098132178D03B0000C9 -S315400137C0D43B2008C11B0000C51B200881A80AC2A2 -S315400137D00100000033BFFFF69010200029BFFFF41F -S315400137E0901020012DBFFFF2901020022FBFFFF055 -S315400137F09010200391D02000191000809813217851 -S31540013800D0230000D2232008C1030000C3032008AF -S3154001381081A80A210100000033BFFFE59010200076 -S3154001382029BFFFE3901020012DBFFFE19010200238 -S315400138302FBFFFDF9010200391D020001910008088 -S3154001384098132178D0230000D2232008C103000019 -S31540013850C303200881A80AA10100000033BFFFD499 -S315400138609010200029BFFFD2901020012DBFFFD01C -S31540013870901020022FBFFFCE9010200391D0200040 -S315400138801910008098132178D03B0000D43B2008C2 -S31540013890C11B0000C51B200889A008C2C93B000006 -S315400138A081C3E008D01B00001910008098132178CD -S315400138B0D0230000D2232008C1030000C3032008FF -S315400138C085A00821C523000081C3E008D00300007C -S315400138D01910008098132178D0230000D2232008A4 -S315400138E0C1030000C303200885A008A1C523000029 -S315400138F081C3E008D0030000191000809813217895 -S31540013900D0230000D2232008C1030000C3032008AE -S3154001391085A00921C523000081C3E008D00300002A -S315400139201910008098132178D0230000D223200853 -S31540013930C1030000C303200885A009A1C5230000D7 -S3154001394081C3E008D0030000191000809813217844 -S31540013950D0230000C103000083A00520C32300003B -S3154001396081C3E008D00300001310008092126190D9 -S31540013970C51A6008C11A400089A0084091A108C231 -S3154001398095A209C495A2894281C3E008D53A0000AF -S3154001399013100080921261B0C1024000C30260045C -S315400139A085A0082087A088A189A0C9A289A109214B -S315400139B081C3E008C922000096102002131000803E -S315400139C092126190151000809412A190D502400088 -S315400139D0D7028000D5220000D802000013100080D3 -S315400139E0921261B096A2E00112BFFFF901000000F8 -S315400139F081C3E0080100000013100080921261901B -S31540013A00151000809412A1B0C1028000C51A601041 -S31540013A1083A0082089A088C08BA109A18DA1094254 -S31540013A208FA1492691A0054681C3E008D13A0000FD -S31540013A301110008090122188C11A0000C51A000099 -S31540013A40C91A0000CD1A0000D11A0000D51A00008B -S31540013A50D91A0000DD1A0000E11A0000E51A00003B -S31540013A60E91A0000ED1A0000F11A0000F51A0000EB -S31540013A70F91A0000FD1A000081C3E00801000000A8 -S31540013A8029100080A815215827100080A614E1C0EE -S31540013A90C12CC000E604C000A134E00EA00C2007F2 -S31540013AA0A0A42002AE1020002D100080AC15A1C0AC -S31540013AB0AE05E001AC05A008C1358000C12D00006E -S31540013AC0EA050000AB35600DAA8D600112BFFFF912 -S31540013AD001000000808000100280002F2B3C1FFF58 -S31540013AE0AA1563FFA60CC015E6250000C10D00000E -S31540013AF02B100080AA1561CC2D10004EAC15A36089 -S31540013B00AE25E001E0054000E025800081D8200097 -S31540013B10010000000100000001000000010000005A -S31540013B20010000000100000001000000010000004A -S31540013B30010000000100000001000000010000003A -S31540013B40010000000100000001000000010000002A +S31540013610010000000100000001000000010000005F +S31540013620010000000100000001000000010000004F +S31540013630010000000100000001000000010000003F +S31540013640010000000100000001000000010000002F +S3154001365001000000010000000100000081A00020DF +S3154001366081C3E00801000000C11A000081C3E008DF +S3154001367001000000C51A000089A009C2C93A4000EC +S3154001368081C3E008010000001310008092126120FE +S31540013690D0224000C102400085A01900C53A400031 +S315400136A081C3E008D01A40001310008092126120B5 +S315400136B0D0224000C102400085A01880C5224000AA +S315400136C081C3E008D0024000151000809412A12069 +S315400136D0D03A8000C11A800085A01A40C5228000D8 +S315400136E081C3E008D0028000151000809412A12009 +S315400136F0D0228000C102800085A01A20C522800008 +S3154001370081C3E008D0028000151000809412A120E8 +S31540013710D0228000C102800081A01920C13A8000D8 +S3154001372081C3E008D01A8000151000809412A120B0 +S31540013730D03A8000C11A800081A018C0C122800001 +S3154001374081C3E008D0028000151000809412A120A8 +S31540013750D0228000CB0280008DA00025CD228000A2 +S3154001376081C3E008D0028000151000809412A12088 +S31540013770D0228000CB0280008DA000A5CD22800002 +S3154001378081C3E008D0028000151000809412A12068 +S31540013790D0228000CB0280008DA00125CD22800061 +S315400137A081C3E008D00280001910008098132120BF +S315400137B0D03B0000D43B2008C11B0000C51B20089C +S315400137C081A80A42010000003380000990102000C0 +S315400137D029800007901020012D80000590102002BD +S315400137E02F8000039010200391D0200081C3E00870 +S315400137F0010000001910008098132120D03B0000E1 +S31540013800D43B2008C11B0000C51B200881A80AC261 +S315400138100100000033BFFFF69010200029BFFFF4DE +S31540013820901020012DBFFFF2901020022FBFFFF014 +S315400138309010200391D02000191000809813212068 +S31540013840D0230000D2232008C1030000C30320086F +S3154001385081A80A210100000033BFFFE59010200036 +S3154001386029BFFFE3901020012DBFFFE190102002F8 +S315400138702FBFFFDF9010200391D020001910008048 +S3154001388098132120D0230000D2232008C103000031 +S31540013890C303200881A80AA10100000033BFFFD459 +S315400138A09010200029BFFFD2901020012DBFFFD0DC +S315400138B0901020022FBFFFCE9010200391D0200000 +S315400138C01910008098132120D03B0000D43B2008DA +S315400138D0C11B0000C51B200889A008C2C93B0000C6 +S315400138E081C3E008D01B00001910008098132120E5 +S315400138F0D0230000D2232008C1030000C3032008BF +S3154001390085A00821C523000081C3E008D00300003B +S315400139101910008098132120D0230000D2232008BB +S31540013920C1030000C303200885A008A1C5230000E8 +S3154001393081C3E008D00300001910008098132120AC +S31540013940D0230000D2232008C1030000C30320086E +S3154001395085A00921C523000081C3E008D0030000EA +S315400139601910008098132120D0230000D22320086B +S31540013970C1030000C303200885A009A1C523000097 +S3154001398081C3E008D003000019100080981321205C +S31540013990D0230000C103000083A00520C3230000FB +S315400139A081C3E008D00300001310008092126138F1 +S315400139B0C51A6008C11A400089A0084091A108C2F1 +S315400139C095A209C495A2894281C3E008D53A00006F +S315400139D01310008092126158C1024000C302600474 +S315400139E085A0082087A088A189A0C9A289A109210B +S315400139F081C3E008C92200009610200213100080FE +S31540013A0092126138151000809412A138D5024000F7 +S31540013A10D7028000D5220000D80200001310008092 +S31540013A209212615896A2E00112BFFFF9010000000F +S31540013A3081C3E00801000000131000809212613832 +S31540013A40151000809412A158C1028000C51A601059 +S31540013A5083A0082089A088C08BA109A18DA1094214 +S31540013A608FA1492691A0054681C3E008D13A0000BD +S31540013A701110008090122130C11A0000C51A0000B1 +S31540013A80C91A0000CD1A0000D11A0000D51A00004B +S31540013A90D91A0000DD1A0000E11A0000E51A0000FB +S31540013AA0E91A0000ED1A0000F11A0000F51A0000AB +S31540013AB0F91A0000FD1A000081C3E0080100000068 +S31540013AC029100080A81520F827100080A614E16867 +S31540013AD0C12CC000E604C000A134E00EA00C2007B2 +S31540013AE0A0A42002AE1020002D100080AC15A168C4 +S31540013AF0AE05E001AC05A008C1358000C12D00002E +S31540013B00EA050000AB35600DAA8D600112BFFFF9D1 +S31540013B1001000000808000100280002F2B3C1FFF17 +S31540013B20AA1563FFA60CC015E6250000C10D0000CD +S31540013B302B100080AA1561742D10004EAC15A3A060 +S31540013B40AE25E001E0054000E025800081D8200057 S31540013B50010000000100000001000000010000001A -S31540013B600000000080A5C00012BFFFE6AA0560085C -S31540013B70C12D0000E60500002B03C000A614C015A8 -S31540013B80E6250000C10D000081C4400081CC8000C3 -S31540013B900100000081C4800081CCA0040100000026 -S31540013BA00100000081C3E0089158000001000000B7 -S31540013BB01110008090122158C10A0000C022000055 -S31540013BC0C10A0000C12A0000D4020000130003808C -S31540013BD0942A800980A0000A3280004D901020036B -S31540013BE01303E000D223BFA0C023BFA4C10BBFA0D3 -S31540013BF0C023BFA0151000809412A170C10280009D -S31540013C000100000001000000C10BBFA0C10BBFA411 -S31540013C1083A00520C12BBFA0D003BFA0808A22006C -S31540013C202280003B90102004901020001510008047 -S31540013C309412A140C5028000C902A008D102A00C7D -S31540013C401310008092126170C70240008DA0894412 -S31540013C5081A98AC801000000038000050100000017 -S31540013C60901020011080002A01000000C50280004A -S31540013C70C902A008D102A00C1310008092126170F3 -S31540013C80CB0240008DA0894481A98AC80100000069 -S31540013C900380000501000000901020011080001CE7 -S31540013CA00100000025100080A414A168C11C8000F9 -S31540013CB0C51C800080A000003280000685A008C097 -S31540013CC081A80AC201000000138000030100000020 -S31540013CD0901020050100000025100080A414A16861 -S31540013CE0C11C8000C51C800080A0000001000000AE -S31540013CF03280000685A008C081A80AC201000000E2 -S31540013D00138000030100000090102007010000000D -S31540013D1081C3E00801000000901020019544000095 -S31540013D209532A01E940AA00380A280000280004022 -S31540013D309010200080A2A0030280003D1310008055 -S31540013D40921261F0C11A4000C51A6008FD0260185E -S31540013D5095A0003E99A0003E9DA0003E170000C0E0 -S31540013D609612E078A182C000010000000100000027 -S31540013D7001000000010000000100000001000000F8 -S31540013D8081A0002083A0002195A0002A99A0002CA3 -S31540013D909DA0002E170000C09612E07CA182C000B3 -S31540013DA001000000010000000100000001000000C8 -S31540013DB0010000000100000085A0002287A0002329 -S31540013DC0A180000001000000010000000100000088 -S31540013DD001000000010000000100000089A0084226 -S31540013DE0A9A2883ED93A4000DD224000CD1A601092 -S31540013DF0D102600881A90A46010000000380000C37 -S31540013E0081AD0A28010000000380000993440000A7 -S31540013E109332601B920A60079010200080A2A00195 -S31540013E2002800003902260079022600481C3E0086B -S31540013E3001000000C12BBFA081C3E008D003BFA091 -S31540013E40D023BFA081C3E008C10BBFA00100000081 -S31540013E509DE3BF6040001B19B0102000913A200A33 -S31540013E60900A200380A22001128011110100000056 -S31540013E707FFFB4E69010200D190C40291B23CD1B62 -S31540013E809410200096102000981320069A13609BE8 -S31540013E90D43FBFE0D43FBFC0D43FBFE87FFFFF421E -S31540013EA0D83FBFF0900A30000328040090122080CA -S31540013EB08210600FC22200001B10004E90022004A7 -S31540013EC09A1362809A234008191000009B3B6002B6 -S31540013ED0032784009A13400C82106010C2222004EA -S31540013EE07FFFFED4DA2200007FFFFFD61103E000F8 -S31540013EF02D100080C025A1C07FFFFDD49010200069 -S31540013F00809200091280000601000000C205A1C08E -S31540013F1080A0600002800004010000007FFFB4C061 -S31540013F209010200B7FFFFDC990103FFA0330060029 -S31540013F3080A200011280000480A2600002800EDB94 -S31540013F40010000007FFFB4B69010200B7FFFFDBF3C -S31540013F509010201403100D0080A20001128000046D -S31540013F6080A2600002800ECC010000007FFFB4AC4D -S31540013F709010200B7FFFFDB5901020620310162094 -S31540013F8080A200011280000480A2600002800EBD62 -S31540013F90010000007FFFB4A29010200B7FFFFDB30C -S31540013FA0901020050310280080A20001128000060F -S31540013FB001000000C205A1C080A06000028000048B -S31540013FC0010000007FFFB4969010200B7FFFFF9DFC -S31540013FD01103C000111C00007FFFFDAC92102000B0 -S31540013FE0031FFFFF821063FF80A200011280000AB7 -S31540013FF01B000070C205A1C09A13601F1900001072 -S315400140008208400D9813201080A0400C02800005C4 -S31540014010113C00007FFFB4829010200C113C00003F -S315400140207FFFFD9A921020000320000080A200012C -S315400140301280000A1B000070C205A1C09A13601FBE -S31540014040190000108208400D9813201080A0400CE2 -S3154001405002800004010000007FFFB4719010200C23 -S31540014060C025A1C0901020007FFFFD88921020003E -S3154001407080A220001280000601000000C205A1C0F6 -S3154001408080A0600002800005110144007FFFB464F6 -S315400140909010200C11014400132840009012230275 -S315400140A07FFFFD7A9212600180A2200012800006F5 -S315400140B001000000C205A1C080A060002280000569 -S315400140C01111FFFF7FFFB4569010200C1111FFFF15 -S315400140D07FFFFD76901223FF0300007F821063FF6E -S315400140E080A200011280000601000000C205A1C0A5 -S315400140F080A06000028000052F1000857FFFB44834 -S315400141009010200C2F1000857FFFFD60D01DE0C868 -S31540014110031FFFFF821063FF80A200011280000A85 -S315400141201B000070C205A1C09A13601F1900001040 -S315400141308208400D9813201080A0400C0280000593 -S31540014140031000857FFFB4369010200C03100085C4 -S31540014150D01860D8C025A1C07FFFFD4C01000000EA -S315400141600320000080A200011280000A1B0000709B -S31540014170C205A1C09A13601F190000108208400DA4 -S315400141809813201080A0400C02800005191000856C -S315400141907FFFB4239010200C19100085C025A1C0C3 -S315400141A07FFFFD3AD01B20B8031FFFFF821063FF3C -S315400141B080A200011280000A1B000070C205A1C046 -S315400141C09A13601F190000108208400D98132010A1 -S315400141D080A0400C02800005331000857FFFB4109B -S315400141E09010200C33100085C025A1C07FFFFD270C -S315400141F0D01E60F0C205A1C08330600E8208600304 -S3154001420080A0600202800004211000807FFFB40478 -S315400142109010200C7FFFFF0B1103C00011115804B1 -S31540014220C02421C07FFFFD299012223403102B00A8 -S315400142308210624680A20001128000050320000020 -S3154001424080A2400102800FC5010000007FFFB3F448 -S315400142509010200D113C02AF7FFFFD1C901220D122 -S31540014260033180558210639A80A2000112800005B5 -S315400142700308000080A2400102800FDB010000001C -S315400142807FFFB3E79010200D1111FC007FFFFD1752 -S3154001429092102000031FE00080A200011280000A54 -S315400142A01B000070C205A1C09A13601F19000010BF -S315400142B08208400D9813200880A0400C028000051A -S315400142C011207C017FFFB3D69010200D11207C0177 -S315400142D0C025A1C0901220307FFFFD0413000100CC -S315400142E00320000080A200011280000A1B0000701A -S315400142F0C205A1C09A13601F190000108208400D23 -S315400143009813200480A0400C0280000401000000A4 -S315400143107FFFB3C39010200DC025A1C0901020008F -S315400143207FFFFCF29210200080A22000128000063E -S3154001433001000000C205A1C080A060000280000407 -S31540014340010000007FFFB3B69010200D7FFFFCE710 -S31540014350D01DE0C803100085DA0060C080A2000DC0 -S315400143601280000601000000C205A1C080A06000C5 -S31540014370028000051B1000857FFFB3A99010200D18 -S315400143801B1000857FFFFCD9D01B60D0031FE000C6 -S3154001439080A200011280000601000000C205A1C0F2 -S315400143A080A0600002800005031000857FFFB39C5A -S315400143B09010200D031000857FFFFCCCD01860B80B -S315400143C003100085DA0060A880A2000D1280000A61 -S315400143D01B000070C205A1C09A13601F190000108E -S315400143E08208400D9813201080A0400C02800004E2 -S315400143F0010000007FFFB38A9010200DC025A1C0A7 -S315400144007FFFFCBAD01E60F0C205A1C08330600EAA -S315400144108208600380A060020280000423100080AD -S315400144207FFFB37F9010200D7FFFFE861103E000D2 -S315400144302108C6AF901420DEC02461C07FFFFCB3C3 -S31540014440A01420DE80A200101280000601000000A8 -S31540014450C20461C080A06000028000052108C6AF89 -S315400144607FFFB36F9010200E2108C6AF7FFFFCB7C8 -S31540014470901420DEA01420DE80A2001012800006D7 -S3154001448001000000C205A1C080A060002280000595 -S315400144901128C6AF7FFFB3629010200E1128C6AF18 -S315400144A07FFFFCAA901220DE0308C6AF821060DEB1 -S315400144B080A200011280000601000000C205A1C0D1 -S315400144C080A06000228000051108C6AF7FFFB3546B -S315400144D09010200E1108C6AF7FFFFC94901220DE8B -S315400144E00328C6AF821060DE80A20001128000065A -S315400144F001000000C205A1C080A060002280000525 -S315400145001128C6AF7FFFB3469010200E1128C6AFC3 -S315400145107FFFFC86901220DE0308C6AF821060DE64 -S3154001452080A200011280000601000000C205A1C060 -S3154001453080A0600002800004010000007FFFB338C4 -S315400145409010200E7FFFFE3F1103E00011151BC0A6 -S315400145501310C82115351BC01710C821901221030D -S31540014560921261419412A1037FFFFC809612E141B0 -S3154001457080A220021280000601000000C205A1C0EF -S3154001458080A060000280000511351BC07FFFB32467 -S315400145909010200F11351BC01310C82115151BC0D3 -S315400145A01710C82190122103921261419412A1035E -S315400145B07FFFFC6E9612E14180A220011280000627 -S315400145C001000000C205A1C080A060000280000574 -S315400145D0901020007FFFB3129010200F9010200002 -S315400145E092102000152000007FFFFC6096102000ED -S315400145F080A220001280000601000000C205A1C071 -S3154001460080A0600002800005191000857FFFB30479 -S315400146109010200F191000851B100085D01B20D04B -S315400146207FFFFC52D41B60D880A220021280000674 -S3154001463001000000C205A1C080A060000280000503 -S3154001464011151BC07FFFB2F69010200F11151BC02C -S315400146501310C82115151BE81710C8219012210304 -S31540014660921261419412A1037FFFFC409612E141EF -S3154001467080A220011280000601000000C205A1C0EF -S3154001468080A060000280000511151BE87FFFB2E49F -S315400146909010200F11151BE81310C82115151BC0CA -S315400146A01710C82190122103921261419412A1035D -S315400146B07FFFFC2E9612E14180A220021280000665 -S315400146C001000000C205A1C080A060000280000573 -S315400146D011151BE87FFFB2D29010200F11151BE870 -S315400146E01310C82190122103921261417FFFFC1FD2 -S315400146F0D41DE0C880A220031280000601000000FC -S31540014700C205A1C080A0600002800005031000859B -S315400147107FFFB2C39010200F0310008511151BE8CF -S315400147201310C82190122103921261417FFFFC0FA1 -S31540014730D41860B880A220031280000A1B000070C2 -S31540014740C205A1C09A13601F190000108208400DCE -S315400147509813201080A0400C0280000511151BE81B -S315400147607FFFB2AF9010200F11151BE81310C8211F -S31540014770C025A1C090122103921261417FFFFBFB2C -S31540014780D41E60F080A220021280000601000000C3 -S31540014790C205A1C080A060000280000515151BE876 -S315400147A07FFFB29F9010200F15151BE81710C821E7 -S315400147B0D01E60F09412A1037FFFFBEC9612E141FB -S315400147C080A220011280000601000000C205A1C09E -S315400147D080A060000280000515151BE87FFFB2909E -S315400147E09010200F15151BE81710C821D01DE0C8E1 -S315400147F09412A1037FFFFBDD9612E14180A22003C3 -S315400148001280000601000000C205A1C080A0600020 -S3154001481002800005191000857FFFB2819010200F9C -S315400148201910008515151BE81710C821D01B20B893 -S315400148309412A1037FFFFBCD9612E14180A2200392 -S315400148401280000A1B000070C205A1C09A13601FA6 -S31540014850190000108208400D9813201080A0400CCA -S315400148600280000511151BC07FFFB26D9010200F0D -S3154001487011151BC01310C82115351BC01710C821AF -S31540014880C025A1C090122103921261419412A10345 -S315400148907FFFFBC99612E14180A2200212800006E9 -S315400148A001000000C205A1C080A060000280000591 -S315400148B011351BC07FFFB25A9010200F11351BC016 -S315400148C01310C82115151BC01710C82190122103BA -S315400148D0921261419412A1037FFFFBB79612E14107 -S315400148E080A220011280000601000000C205A1C07D -S315400148F080A0600002800005901020007FFFB24832 -S315400149009010200F901020009210200015200000DA -S315400149107FFFFBA99610200080A22000128000068E -S3154001492001000000C205A1C080A060000280000510 -S315400149301B1000857FFFB23A9010200F1B10008597 -S3154001494003100085D01B60D07FFFFB9BD41860D835 -S3154001495080A220021280000601000000C205A1C00B -S3154001496080A060000280000511151BC07FFFB22C9C -S315400149709010200F11151BC01310C82115151BE8E7 -S315400149801710C82190122103921261419412A1037A -S315400149907FFFFB899612E14180A220011280000629 -S315400149A001000000C205A1C080A060000280000590 -S315400149B011151BE87FFFB21A9010200F11151BE845 -S315400149C01310C82115151BC01710C82190122103B9 -S315400149D0921261419412A1037FFFFB779612E14146 -S315400149E080A220021280000601000000C205A1C07B -S315400149F080A060000280000511151BE87FFFB20808 -S31540014A009010200F11151BE81310C8219012210395 -S31540014A10921261417FFFFB68D41DE0C880A220034A -S31540014A201280000A1B000070C205A1C09A13601FC4 -S31540014A30190000108208400D9813201080A0400CE8 -S31540014A4002800005191000857FFFB1F59010200FF7 -S31540014A501910008511151BE81310C8219012210366 -S31540014A60921261417FFFFB54D41B20B880A22003E0 -S31540014A701280000A1B000070C205A1C09A13601F74 -S31540014A80190000108208400D9813201080A0400C98 -S31540014A900280000511151BE87FFFB1E19010200F40 -S31540014AA011151BE81310C821C025A1C0901221037E -S31540014AB0921261417FFFFB40D41E60F080A220022A -S31540014AC01280000601000000C205A1C080A060005E -S31540014AD00280000515151BE87FFFB1D19010200F0C -S31540014AE015151BE81710C821D01E60F09412A103BA -S31540014AF07FFFFB319612E14180A220011280000620 -S31540014B0001000000C205A1C080A06000028000052E -S31540014B1015151BE87FFFB1C29010200F15151BE834 -S31540014B201710C821D01DE0C89412A1037FFFFB22B4 -S31540014B309612E14180A220031280000A1B000070F8 -S31540014B40C205A1C09A13601F190000108208400DCA -S31540014B509813201080A0400C028000051B10008590 -S31540014B607FFFB1AF9010200F1B10008515151BE874 -S31540014B701710C821D01B60B89412A1037FFFFB0E0A -S31540014B809612E14180A220031280000A1B000070A8 -S31540014B90C205A1C09A13601F190000108208400D7A -S31540014BA09813201080A0400C02800005110048EAAD -S31540014BB07FFFB19B9010200F110048EA13048D1519 -S31540014BC0C025A1C0901223CD7FFFFB0C92126278C3 -S31540014BD080A220011280000601000000C205A1C08A -S31540014BE080A0600002800005110048EA7FFFB18C79 -S31540014BF09010200F110048EA13048D15901223CD11 -S31540014C007FFFFB0F9212627880A22001128000067C -S31540014C1001000000C205A1C080A06000028000041E -S31540014C20010000007FFFB17E9010200FC025A1C07A -S31540014C307FFFFC841103C000291001449007BFF097 -S31540014C409207BFE87FFFFA3894152150C207BFF09B -S31540014C50DA05215080A0400D1280000782152150AF -S31540014C60DA006004C207BFF480A0400D02800D59EE -S31540014C70010000007FFFB16A9010201037100085B7 -S31540014C809007BFF09216E0E07FFFFA279415215076 -S31540014C90C206E0E0DA05215080A340018215215089 -S31540014CA0128000079816E0E0DA006004C20320048F -S31540014CB080A3400102800D42010000007FFFB158F0 -S31540014CC0901020109007BFF09215E0C87FFFFA16AA -S31540014CD094152150C205E0C8DA05215080A3400150 -S31540014CE082152150128000079815E0C8DA00600449 -S31540014CF0C203200480A3400102800D2C0100000064 -S31540014D007FFFB1479010201003100085921060B8C4 -S31540014D109007BFF07FFFFA04941521501B000070E5 -S31540014D20C205A1C09A13601F190000108208400DE8 -S31540014D309813201080A0400C0280000421100144E9 -S31540014D407FFFB1379010201003100080C02061C052 -S31540014D507FFFFC3C901020001310008594142150D5 -S31540014D60921260B87FFFF9F09007BFF039100085C5 -S31540014D70C20720B0DA04215080A340019414215087 -S31540014D8012800007821720B0DA02A004C200600434 -S31540014D9080A3400102800004010000007FFFB12092 -S31540014DA0901020107FFFFC271103C0009007BFF031 -S31540014DB0921660F07FFFF9DC94152150C205A1C01F -S31540014DC08330600E8208600380A060022110014496 -S31540014DD002800004231000807FFFB1119010201043 -S31540014DE094142150C02461C09007BFE87FFFF9CEDB -S31540014DF09207BFF0DA042150C207BFF080A34001F9 -S31540014E001280000794142150DA02A004C207BFF4AD -S31540014E1080A3400102800D21010000007FFFB10007 -S31540014E20901020109007BFE89216E0E07FFFF9BE90 -S31540014E3094152150C206E0E0DA05215080A34001D5 -S31540014E4082152150128000079816E0E0DA006004CE -S31540014E50C203200480A3400102800D0B0100000023 -S31540014E607FFFB0EF901020109007BFE89215E0C881 -S31540014E707FFFF9AD94152150C205E0C8DA052150EE -S31540014E8080A3400182152150128000079815E0C881 -S31540014E90DA006004C203200480A3400102800CF5BD -S31540014EA0010000007FFFB0DE901020101910008530 -S31540014EB0921320B89007BFE87FFFF99B94152150C4 -S31540014EC01B000070C205A1C09A13601F1900001093 -S31540014ED08208400D9813201080A0400C02800004E7 -S31540014EE0211001447FFFB0CE901020107FFFFBD5EB -S31540014EF0901020001310008594142150921260B82E -S31540014F007FFFF9899007BFE8C20720B0DA04215034 -S31540014F1080A340019414215012800007821720B0CB -S31540014F20DA02A004C200600480A3400102800004AA -S31540014F30010000007FFFB0BA901020107FFFFBC137 -S31540014F401103C0009007BFE8921660F07FFFF97623 -S31540014F5094152150C205A1C08330600E82086003BA -S31540014F6080A06002211001440280000423100080C9 -S31540014F707FFFB0AB9010201094142150C02461C023 -S31540014F809016E0E07FFFF9689207BFF0C206E0E0C5 -S31540014F90DA04215080A34001941421501280000765 -S31540014FA08216E0E0DA02A004C200600480A3400158 -S31540014FB002800CAB010000007FFFB09990102010D9 -S31540014FC09016E0E09207BFE87FFFF957941521500C -S31540014FD0C206E0E0DA05215080A340018215215046 -S31540014FE0128000079816E0E0DA006004C20320044C -S31540014FF080A3400102800C95010000007FFFB0882C -S31540015000901020101B100085901360D0921000085C -S315400150107FFFF9459415215019100085C20320D010 -S31540015020DA05215080A340018215215012800007E4 -S31540015030981320D0DA006004C203200480A3400103 -S3154001504002800C7D010000007FFFB075901020109A -S315400150501B100085901360D8921000087FFFF9322B -S315400150609415215019100085C20320D8DA05215024 -S3154001507080A340018215215012800007981320D841 -S31540015080DA006004C203200480A3400102800C655B -S31540015090010000007FFFB062901020101B100085B8 -S315400150A003100085901360D8921060D07FFFF91EDF -S315400150B0941521501B000070C205A1C09A13601FB0 -S315400150C0190000108208400D9813201080A0400C52 -S315400150D002800004211001447FFFB051901020103E -S315400150E07FFFFB589010200011100085131000859A -S315400150F094142150901220D87FFFF90B921260D060 -S31540015100C20720B0DA04215080A3400194142150F3 -S3154001511012800007821720B0DA02A004C2006004A0 -S3154001512080A3400102800004010000007FFFB03CE3 -S31540015130901020107FFFFB431103C000191000851A -S315400151401B100085901320D0921360D8C025A1C0B2 -S315400151507FFFF8F594152150C20720B0DA0521509A -S3154001516080A340018215215012800007981720B074 -S31540015170DA006004C203200480A3400102800C1FB0 -S315400151801B0000707FFFB026901020109016E0E0C3 -S31540015190921660F07FFFF8E494152150C205A1C034 -S315400151A08330600E8208600380A0600221100144B2 -S315400151B002800004231000807FFFB0199010201058 -S315400151C094142150C02461C09015E0C87FFFF8D6E1 -S315400151D09207BFF0C205E0C8DA04215080A340011E -S315400151E094142150128000078215E0C8DA02A00407 -S315400151F0C200600480A3400102800B9C01000000B4 -S315400152007FFFB007901020109015E0C89207BFE8C5 -S315400152107FFFF8C594152150C205E0C8DA05215033 -S3154001522080A3400182152150128000079815E0C8DD -S31540015230DA006004C203200480A3400102800B8689 -S31540015240010000007FFFAFF6901020109015E0C8D6 -S315400152509216E0E07FFFF8B494152150C205E0C8EC -S31540015260DA05215080A340018215215012800007A2 -S315400152709815E0C8DA006004C203200480A3400107 -S3154001528002800B70010000007FFFAFE590102010F7 -S315400152909015E0C8921000087FFFF8A3941521509D -S315400152A0C205E0C8DA05215080A34001821521508C -S315400152B0128000079815E0C8DA006004C203200492 -S315400152C080A3400102800B5A010000007FFFAFD44A -S315400152D09010201003100085921060B89015E0C818 -S315400152E07FFFF8919415215003000070A610601FAE -S315400152F0DA05A1C0030000109A0B4013AA106010F2 -S3154001530080A3401523100085251001440280000426 -S31540015310211000807FFFAFC290102010C02421C011 -S31540015320901460B89207BFF07FFFF87F9414A150A4 -S31540015330C20421C08208401380A0401502800004A7 -S31540015340010000007FFFAFB690102010C02421C09D -S31540015350901460B89207BFE87FFFF8739414A15088 -S31540015360C20421C08208401380A040150280000477 -S31540015370010000007FFFAFAA90102010C02421C079 -S31540015380901460B89216E0E07FFFF8679414A1503C -S31540015390C20421C08208401380A040150280000546 -S315400153A0131000857FFFAF9E9010201013100085CB -S315400153B0C02421C0921260C8901460B87FFFF85A89 -S315400153C09414A150C20421C08208401380A0401504 -S315400153D002800005901460B87FFFAF9190102010B5 -S315400153E0901460B8C02421C0921000087FFFF84E87 -S315400153F09414A150C20421C08208401380A04015D4 -S3154001540002800004010000007FFFAF85901020104C -S31540015410C02421C0901460B8921660F07FFFF84214 -S315400154209414A150C20421C08330600E82086003E7 -S3154001543080A06002228000051103C0007FFFAF7883 -S31540015440901020101103C0007FFFFA7E3B100084AC -S31540015450A2176210C02421C0AA14A150A40460104E -S31540015460A0102000A6046008B010200C920400137E -S31540015470900400117FFFF82C94152150DA04801016 -S3154001548098040012C2052150A004201880A34001AF -S315400154901280000790102010DA032004C205600430 -S315400154A080A3400122800005B0863FFF7FFFAF5CAD -S315400154B001000000B0863FFF1CBFFFEE92040013BF -S315400154C0C205A1C080A060001280098901000000C8 -S315400154D01110008490122348920220087FFFF8128F -S315400154E09415215098176210C2052150DA032148BC -S315400154F080A340011280000782152150DA03214C16 -S31540015500C200600480A3400122800AAB03100080E0 -S315400155107FFFAF439010201011100084901223603A -S31540015520920220087FFFF8009415215098176210C7 -S31540015530C2052150DA03216080A340011280000791 -S3154001554082152150DA032164C200600480A3400120 -S3154001555002800AA41B0000707FFFAF31901020101B -S315400155601110008490122378920220087FFFF7EEF3 -S315400155709415215098176210C2052150DA032178FB -S3154001558080A340011280000782152150DA03217C55 -S31540015590C200600480A3400102800A9C1B00007087 -S315400155A07FFFAF1F90102010C025A1C01110000031 -S315400155B092102000150FFC007FFFF8B296102000D4 -S315400155C0030FFC0080A200011280000880A2600047 -S315400155D01280000601000000C205A1C080A0600043 -S315400155E002800005111000007FFFAF0D90102010C2 -S315400155F01110000092102000152FFC007FFFF8A12A -S31540015600961020000310020080A2000112800008BB -S3154001561080A260001280000601000000C205A1C000 -S3154001562080A0600002800005113000007FFFAEFCC3 -S31540015630901020101130000092102000150FFC0030 -S315400156407FFFF890961020000330020080A20001EF -S315400156501280000880A2600012800006010000004E -S31540015660C205A1C080A06000028000051130000083 -S315400156707FFFAEEB901020101130000092102000F9 -S31540015680152FFC007FFFF87F96102000032FFC00AA -S3154001569080A200011280000880A2600012800006EC -S315400156A001000000C205A1C080A060000280000583 -S315400156B0111000007FFFAEDA90102010111000008B -S315400156C07FFFF87A130FE0000310100080A200015B -S315400156D01280000601000000C205A1C080A0600042 -S315400156E002800005111000007FFFAECD9010201002 -S315400156F0111000007FFFF877130FE000030FE00061 -S3154001570080A200011280000601000000C205A1C06E -S3154001571080A0600022800005191000857FFFAEC081 -S315400157209010201019100085921320E8C025A1C0C1 -S315400157309007BFF07FFFF78F941521501910008510 -S31540015740C20320D8DA05215080A340018215215099 -S3154001575012800007981320D8DA006004C20320049F -S3154001576080A3400102800A461B0000707FFFAEAC59 -S31540015770901020111B100085921360D0C025A1C046 -S315400157809007BFF07FFFF77B94152150C207BFE01A -S31540015790DA05215080A3400112800007821521506D -S315400157A0DA006004C207BFE480A3400102800A3EDA -S315400157B0010000007FFFAE9A901020119007BFF0C4 -S315400157C09215E0C87FFFF76B94152150C205E0C8DA -S315400157D0DA05215080A3400182152150128000072D -S315400157E09815E0C8DA006004C203200480A3400192 -S315400157F002800A32010000007FFFAE89901020111D -S3154001580003100085921060B89007BFF07FFFF759EB -S3154001581094152150C20720B0DA05215080A34001DA -S315400158208215215012800007981720B0DA006004D3 -S31540015830C203200480A3400102800A251B00007098 -S315400158407FFFAE77901020119007BFF0921660F05F -S315400158507FFFF74894152150C205A1C01B00007077 -S315400158608208400D1900002080A0400C21100144FF -S3154001587002800004231000807FFFAE699010201142 -S3154001588094142150C02461C09007BFE87FFFF739C7 -S315400158909207BFF0DA042150C207BFE880A3400156 -S315400158A01280000794142150DA02A004C207BFEC0B -S315400158B080A3400102800A10010000007FFFAE581C -S315400158C09010201119100085901320E89207BFE02F -S315400158D07FFFF72894152150C20720B0DA052150E1 -S315400158E080A340018215215012800007981720B0ED -S315400158F0DA006004C203200480A3400102800A0347 -S315400159001B0000707FFFAE46901020111B100085D2 -S3154001591003100085901360E8921060D0C025A1C0A5 -S315400159207FFFF7149415215019100085C20320E812 -S31540015930DA05215080A340018215215012800007CB -S31540015940981320E8DA006004C203200480A34001D2 -S31540015950028009F8010000007FFFAE31901020114E -S315400159609007BFE89215E0C87FFFF70294152150D2 -S31540015970C205E0C8DA05215080A3400182152150B5 -S31540015980128000079815E0C8DA006004C2032004BB -S3154001599080A34001028009EC010000007FFFAE2098 -S315400159A0901020071B100085921360B89007BFE83E -S315400159B07FFFF6F09415215025000070D805A1C04F -S315400159C09A14A01F03000010980B000D821060105E -S315400159D080A30001211001440280000423100080AD -S315400159E07FFFAE0F90102011C02461C09007BFE821 -S315400159F0921660F07FFFF6DF94142150C20461C015 -S31540015A00820840121B00002080A0400D2280000524 -S31540015A10031000857FFFAE02901020110310008510 -S31540015A20901060D894142150C02461C07FFFF6D1F4 -S31540015A309207BFF019100085C20320D8DA0421501D -S31540015A4080A340019414215012800007821320D86C -S31540015A50DA02A004C200600480A34001028008B8B3 -S31540015A60010000007FFFADEE901020111B10008554 -S31540015A7003100085901360D8921060E87FFFF6BD51 -S31540015A809415215019100085C20320D0DA05215002 -S31540015A9080A340018215215012800007981320D01F -S31540015AA0DA006004C203200480A34001028008A9F1 -S31540015AB0010000007FFFADDA901020119016E0E062 -S31540015AC0921000087FFFF6AB94152150C20720B013 -S31540015AD0DA05215080A3400182152150128000072A -S31540015AE0981720B0DA006004C203200480A3400165 -S31540015AF00280089D1B0000707FFFADC990102011E8 -S31540015B00C025A1C09016E0E09215E0C87FFFF69946 -S31540015B1094152150C205E0C8DA05215080A3400101 -S31540015B2082152150128000079815E0C8DA006004FA -S31540015B30C203200480A340010280089401000000B2 -S31540015B407FFFADB7901020111B100085921360B8EE -S31540015B509016E0E07FFFF68794152150C20720B0EA -S31540015B60DA05215080A34001821521501280000799 -S31540015B70981720B0DA006004C203200480A34001D4 -S31540015B80028008871B0000707FFFADA59010201191 -S31540015B90C025A1C09016E0E0921660F07FFFF67531 -S31540015BA094152150C205A1C01B0000708208400D0A -S31540015BB01900002080A0400C2310008002800004C0 -S31540015BC0211001447FFFAD9690102011941421506D -S31540015BD0C02461C09015E0C87FFFF6669207BFF00A -S31540015BE0C205E0C8DA04215080A340019414215033 -S31540015BF0128000078215E0C8DA02A004C2006004E0 -S31540015C0080A340010280086F010000007FFFAD8440 -S31540015C10901020119015E0C89207BFE87FFFF65516 -S31540015C2094152150C205E0C8DA05215080A34001F0 -S31540015C3082152150128000079815E0C8DA006004E9 -S31540015C40C203200480A340010280086301000000D2 -S31540015C507FFFAD73901020119015E0C89216E0E0D9 -S31540015C607FFFF64494152150C205E0C8DA0521505C -S31540015C7080A3400182152150128000079815E0C883 -S31540015C80DA006004C203200480A340010280085761 -S31540015C90010000007FFFAD62901020119015E0C811 -S31540015CA0921000087FFFF63394152150C205E0C8D3 -S31540015CB0DA05215080A34001821521501280000748 -S31540015CC09815E0C8DA006004C203200480A34001AD -S31540015CD0028007F3010000007FFFAD5190102011B3 -S31540015CE003100085921060B89015E0C87FFFF62139 -S31540015CF094152150C20720B0DA05215080A34001F6 -S31540015D008215215012800007981720B0DA006004EE -S31540015D10C203200480A34001028007E61B000070F5 -S31540015D207FFFAD3F901020119015E0C8921660F0AC -S31540015D307FFFF61094152150C205A1C031000070B5 -S31540015D40820840183B00002080A0401D23100144DA -S31540015D5002800004211000807FFFAD319010201198 -S31540015D6019100085901320B89207BFF07FFFF60106 -S31540015D7094146150C20421C0AA16201F3500001098 -S31540015D8082084015A616A01080A040130280000488 -S31540015D90251000857FFFAD2290102011C02421C01F -S31540015DA09014A0B89207BFE87FFFF5F294146150B2 -S31540015DB0C20421C08208401580A04013028000041D -S31540015DC0010000007FFFAD1690102011C02421C0B4 -S31540015DD09014A0B89216E0E07FFFF5E69414615066 -S31540015DE0C20421C08208401580A0401302800005EC -S31540015DF0131000857FFFAD0A901020111310008506 -S31540015E00C02421C0921260C89014A0B87FFFF5D972 -S31540015E1094146150C20421C08208401580A04013E9 -S31540015E20028000059014A0B87FFFACFD90102011B0 -S31540015E309014A0B8C02421C0921000087FFFF5CD70 -S31540015E4094146150C20421C08208401580A04013B9 -S31540015E5002800005131000857FFFACF190102011E0 -S31540015E6013100085C02421C09014A0B8921260F08E -S31540015E707FFFF5C094146150C20421C082084018C6 -S31540015E8080A0401D2280000515203E837FFFACE4A3 -S31540015E909010201115203E83170021C89412A3FFAC -S31540015EA09612E3A1191FC0001B00C0009A1360B0EF -S31540015EB098132102D43FBFD0D83FBFD8C02421C0B8 -S31540015EC09007BFD89207BFD07FFFF5AA9407BFC8F6 -S31540015ED0DA07BFC8033FFC0080A340010280070BDD -S31540015EE0A207BFC87FFFACCE901020111510868344 -S31540015EF0170021C89412A3FF9612E3A1190040008E -S31540015F001B00C0009A1360B098132102D43FBFD042 -S31540015F10D83FBFD8C025A1C09007BFD89207BFD0F0 -S31540015F207FFFF5949407BFC8DA046004C207BFC86F -S31540015F308090400D1280000A1B000070C205A1C06E -S31540015F409A13601F190000108208400D981320040F -S31540015F5080A0400C22800005150FFC007FFFACB0ED -S31540015F6090102011150FFC00170281D89412A04001 -S31540015F709612E10C9A102010190006AFD43FBFD0FB -S31540015F80D83FBFD8C025A1C09007BFD89207BFD080 -S31540015F907FFFF5789407BFC8030006AEDA07BFC88E -S31540015FA08210639580A340011280000703003A9A4C -S31540015FB0DA0460048210630F80A340010280073334 -S31540015FC0010000007FFFAC9690102011150FFFFFD6 -S31540015FD0170281D89412A3409612E10C9A10201010 -S31540015FE0190006AFD43FBFD0D83FBFD8C025A1C006 -S31540015FF09007BFD89207BFD07FFFF55E9407BFC811 -S31540016000DA046004C207BFC88090400D1280000ABE -S315400160101B000070C205A1C09A13601F1900001031 -S315400160208208400D9813200480A0400C0280000491 -S31540016030010000007FFFAC7A90102011C025A1C05D -S31540016040111088007FFFF63713100100031066C94F -S31540016050821062CA80A2000112800006010000007F -S31540016060C205A1C080A06000028000051111BBFEDF -S315400160707FFFAC6B901020111111BBFE901223FFD4 -S315400160807FFFF628130C7040031527CA8210611E44 -S3154001609080A200011280000601000000C205A1C0D5 -S315400160A080A06000028000051310C7FF7FFFAC5C33 -S315400160B0901020111310C7FF921263FC7FFFF6194F -S315400160C0111E607E031D73FC8210633880A200019D -S315400160D01280000601000000C205A1C080A0600038 -S315400160E002800005130FE0007FFFAC4D9010201198 -S315400160F0130FE000921260017FFFF60A11002000A3 -S3154001610080A220001280000A1B000070C205A1C0B7 -S315400161109A13601F190000108208400D981320043D -S3154001612080A0400C02800005110FE0007FFFAC3CCF -S3154001613090102011110FE000C025A1C07FFFF5F995 -S3154001614092100008030FE00080A2000112800006B1 -S3154001615001000000C205A1C080A0600002800005C8 -S31540016160130FE0007FFFAC2E90102011130FE000BB -S31540016170921260017FFFF5EB1100200080A2200002 -S315400161801280000A1B000070C205A1C09A13601F4D -S31540016190190000108208400D9813200480A0400C7D -S315400161A0028000051B1000857FFFAC1D9010201159 -S315400161B01B100085921360E8C025A1C09007BFF06F -S315400161C07FFFF4DE9415215019100085C20320E8A3 -S315400161D0DA05215080A34001821521501280000723 -S315400161E0981320E8DA006004C203200480A340012A -S315400161F0028006BA010000007FFFAC099010201210 -S315400162001B100085921360D09007BFF07FFFF4CB3F -S315400162109415215019100085C20320D0DA0521506A -S3154001622080A340018215215012800007981320D087 -S31540016230DA006004C203200480A34001028006AC58 -S31540016240010000007FFFABF6901020129007BFF0CF -S315400162509215E0C87FFFF4B994152150C205E0C8F4 -S31540016260DA05215080A34001821521501280000792 -S315400162709815E0C8DA006004C203200480A34001F7 -S31540016280028006A0010000007FFFABE590102012BE -S315400162901B100085921360B89007BFF07FFFF4A7EB -S315400162A094152150C20720B0DA05215080A3400140 -S315400162B08215215012800007981720B0DA00600439 -S315400162C0C203200480A34001028006931B00007094 -S315400162D07FFFABD3901020129007BFF0921660F06B -S315400162E07FFFF49694152150C205A1C01B00007092 -S315400162F08208400D1900002080A0400C2110014465 -S3154001630002800004231000807FFFABC5901020124D -S3154001631094142150C02461C09007BFE87FFFF487E1 -S315400163209207BFF0DA042150C207BFE880A34001BB -S315400163301280000794142150DA02A004C207BFEC70 -S3154001634080A34001028006DE010000007FFFABB45E -S31540016350901020120310008519100085901060E8F6 -S31540016360921320D87FFFF47594152150C20720B0AF -S31540016370DA05215080A34001821521501280000781 -S31540016380981720B0DA006004C203200480A34001BC -S31540016390028006D01B0000707FFFABA19010201237 -S315400163A0C025A1C09007BFE89215E0C87FFFF463FE -S315400163B094152150C205E0C8DA05215080A3400159 -S315400163C082152150128000079815E0C8DA00600452 -S315400163D0C203200480A34001028006C701000000D9 -S315400163E07FFFAB8F901024991B100085921360B8E4 -S315400163F09007BFE87FFFF45194152150C20720B0A2 -S31540016400DA05215080A340018215215012800007F0 -S31540016410981720B0DA006004C203200480A340012B -S31540016420028006BA1B0000707FFFAB7D90102012E0 -S315400164309007BFE8921660F07FFFF4409415215013 -S31540016440C205A1C01B0000708208400D1900002042 -S3154001645080A0400C211001440280000423100080DA -S315400164607FFFAB6F9010201294142150C02461C05D -S315400164709016E0E07FFFF4319207BFF0C206E0E0FC -S31540016480DA04215080A34001941421501280000760 -S315400164908216E0E0DA02A004C200600480A3400153 -S315400164A0028006A4010000007FFFAB5D9010201220 -S315400164B09016E0E09207BFE87FFFF4209415215043 -S315400164C0C20720B0DA05215080A340018215215030 -S315400164D012800007981720B0DA006004C203200436 -S315400164E080A34001028006981B0000707FFFAB4CE1 -S315400164F090102012C025A1C09016E0E09215E0C888 -S315400165007FFFF40E94152150C205E0C8DA052150EB -S3154001651080A3400182152150128000079815E0C8DA -S31540016520DA006004C203200480A340010280068F82 -S31540016530010000007FFFAB3A901020120310008546 -S31540016540921060B89016E0E07FFFF3FC941521505D -S31540016550C20720B0DA05215080A34001821521509F -S3154001656012800007981720B0DA006004C2032004A5 -S3154001657080A34001028006821B0000707FFFAB288A -S31540016580901020129016E0E0921660F07FFFF3EB38 -S3154001659094152150C205A1C01B0000708208400D10 -S315400165A01900002080A0400C211001440280000403 -S315400165B0231000807FFFAB1A9010201294142150B3 -S315400165C0C02461C09015E0C87FFFF3DC9207BFF09D -S315400165D0C205E0C8DA04215080A340019414215039 -S315400165E0128000078215E0C8DA02A004C2006004E6 -S315400165F080A340010280061E010000007FFFAB0818 -S31540016600901020129015E0C89207BFE87FFFF3CBA8 -S3154001661094152150C205E0C8DA05215080A34001F6 -S3154001662082152150128000079815E0C8DA006004EF -S31540016630C203200480A3400102800612010000002B -S315400166407FFFAAF7901020129015E0C89216E0E05D -S315400166507FFFF3BA94152150C205E0C8DA052150EF -S3154001666080A3400182152150128000079815E0C889 -S31540016670DA006004C203200480A3400102800606BA -S31540016680010000007FFFAAE6901020129015E0C895 -S31540016690921000087FFFF3A994152150C205E0C866 -S315400166A0DA05215080A3400182152150128000074E -S315400166B09815E0C8DA006004C203200480A34001B3 -S315400166C0028005FA010000007FFFAAD59010201232 -S315400166D0191000859015E0C8921320B87FFFF397F3 -S315400166E09415215003000070A610601FDA05A1C061 -S315400166F0030000109A0B4013AA10601080A34015A6 -S3154001670025100085231001440280000421100080D9 -S315400167107FFFAAC390102012C02421C09014A0B8B4 -S315400167209207BFF07FFFF38594146150C20421C0E4 -S315400167308208401380A04015028000040100000039 -S315400167407FFFAAB790102012C02421C09014A0B890 -S315400167509207BFE87FFFF37994146150C20421C0C8 -S315400167608208401380A04015028000040100000009 -S315400167707FFFAAAB90102012C02421C09014A0B86C -S315400167809216E0E07FFFF36D94146150C20421C07C -S315400167908208401380A04015028000051310008531 -S315400167A07FFFAA9F9010201213100085C02421C09C -S315400167B0921260C89014A0B87FFFF36094146150A0 -S315400167C0C20421C08208401380A040150280000502 -S315400167D09014A0B87FFFAA92901020129014A0B8EE -S315400167E0C02421C0921000087FFFF35494146150D5 -S315400167F0C20421C08208401380A0401502800004D3 -S31540016800010000007FFFAA8690102012C02421C0FB -S315400168109014A0B8921660F07FFFF348941461502B -S31540016820C20421C08330600E8208600380A06002EA -S31540016830228000051103C0007FFFAA799010201223 -S315400168401103C0007FFFF57F3B100084A4176390BE -S31540016850AA146150C02421C0A604A008A210200099 -S31540016860B0102005A0044012920440139415215003 -S315400168707FFFF33290100010DA042010C205215038 -S31540016880A204601880A340011280000790102012D4 -S31540016890DA042014C205600480A340010280047416 -S315400168A0010000007FFFAA5E01000000B0863FFFA5 -S315400168B03CBFFFEEA004401211100085901220202B -S315400168C0920220087FFFF31D94152150981763907B -S315400168D0C2052150DA0320A080A34001128000079F -S315400168E082152150DA0320A4C200600480A340012E -S315400168F0028004DC1B0000707FFFAA499010201221 -S315400169001110008590122038C025A1C0920220089E -S315400169107FFFF30A9415215098176390C2052150C1 -S31540016920DA0320B880A34001128000078215215066 -S31540016930DA0320BCC200600480A340010280047FC8 -S315400169401B0000707FFFAA3690102012111000859F -S3154001695090122050C025A1C0920220087FFFF2F775 -S315400169609415215098176390C2052150DA0320D01F -S3154001697080A340011280000782152150DA0320D4FA -S31540016980C200600480A34001028004761B000070AF -S315400169907FFFAA23901020121110008590122068C3 -S315400169A0C025A1C0920220087FFFF2E49415215030 -S315400169B098176390C2052150DA0320E880A340016D -S315400169C01280000782152150DA0320ECC2006004D0 -S315400169D080A340010280046D1B0000707FFFAA1056 -S315400169E0901020121110008590122080C025A1C060 -S315400169F0920220087FFFF2D1941521509817639097 -S31540016A00C2052150DA03210080A34001128000070C -S31540016A1082152150DA032104C200600480A340019B -S31540016A20028004641B0000707FFFA9FD90102012B4 -S31540016A30C025A1C0111010007FFFF3B01310000054 -S31540016A400310300080A20001128000060100000000 -S31540016A50C205A1C080A0600002800005111FE000B0 -S31540016A607FFFA9EF90102012111FE00013100000C4 -S31540016A707FFFF2B794152150031FFC00DA05215020 -S31540016A8080A340011280000A82152150C200600491 -S31540016A9080A060001280000601000000C205A1C06E -S31540016AA080A0600002800005111FE0007FFFA9DC85 -S31540016AB09010201B111FE000133000007FFFF2A44D -S31540016AC094152150033FFC00DA05215080A3400173 -S31540016AD01280000A82152150C200600480A0600025 -S31540016AE01280000601000000C205A1C080A060001E -S31540016AF002800005111000007FFFA9C99010201CDB -S31540016B0011100000921020107FFFF2919415215030 -S31540016B10C205A1C01B0000708208400D190000206B -S31540016B2080A0400C21100144028000042310008003 -S31540016B307FFFA9BB9010201D94142150C02461C031 -S31540016B40110020007FFFF282130FC000DA042150AA -S31540016B50030E000080A340011280000A94142150C4 -S31540016B60C202A00480A0600012800006010000005D -S31540016B70C20461C080A0600002800005111FDFFFD2 -S31540016B807FFFA9A79010201E111FDFFF901223FF40 -S31540016B90131000007FFFF26E941521500311FFFF81 -S31540016BA0821063FFDA05215080A34001128000075D -S31540016BB082152150DA0060040338000080A34001A9 -S31540016BC002800405010000007FFFA9959010201F57 -S31540016BD0111FD000130FF0007FFFF25D9415215075 -S31540016BE00311FC80DA05215080A340011280000A7E -S31540016BF082152150C200600480A060001280000608 -S31540016C0001000000C205A1C080A06000028000050D -S31540016C10111FDFFF7FFFA98290102021111FDFFF87 -S31540016C20901223FF921000087FFFF24994152150DC -S31540016C300313FBFF821063FFDA05215080A3400155 -S31540016C401280000882152150DA00600403300000EA -S31540016C508210602080A34001028003E4010000000D -S31540016C607FFFA96F901020207FFFF4761103C000AB -S31540016C70C025A1C09007BFE07FFFF2449215215085 -S31540016C80C207BFE0DA05215080A340011280000708 -S31540016C9082152150DA006004C207BFE480A3400197 -S31540016CA0028003D7010000007FFFA95D90102013E9 -S31540016CB01B100085901360E87FFFF2349215215036 -S31540016CC003100085DA0060E8C205215080A0400D1E -S31540016CD0191000858215215012800007901320E873 -S31540016CE0DA006004C202200480A34001028003C985 -S31540016CF0010000007FFFA94A901020131B10008558 -S31540016D00901360D07FFFF221921521501910008512 -S31540016D10C20320D0DA05215080A3400182152150BB -S31540016D2012800007981320D0DA006004C2032004C1 -S31540016D3080A34001028003BC010000007FFFA93807 -S31540016D40901020131B100085901360D87FFFF20F1F -S31540016D5092152150C20720B0DA05215080A3400187 -S31540016D608215215012800007981720B0DA0060047E -S31540016D70C203200480A34001028003B01B000070BF -S31540016D807FFFA9279010201303100085901060B84B -S31540016D90C025A1C07FFFF1FD92152150C20720B049 -S31540016DA0DA05215080A34001821521501280000747 -S31540016DB0981720B0DA006004C203200480A3400182 -S31540016DC00280040F1B0000707FFFA915901020134D -S31540016DD0C025A1C09015E0C87FFFF1EC9215215066 -S31540016DE0C2052150DA05E0C880A0400D8215215028 -S31540016DF0128000079015E0C8DA006004C202200440 -S31540016E0080A3400102800407010000007FFFA9041E -S31540016E1090102013170C00089A10200019100C002E -S31540016E2015300F789612E001D83FBFF0D43FBFC06E -S31540016E309007BFF07FFFF1D5921521500310040052 -S31540016E40DA05215080A340011280000A82152150A3 -S31540016E50C200600480A060001280000601000000AC -S31540016E60C205A1C080A06000028000059007BFC096 -S31540016E707FFFA8EB901020139007BFC07FFFF1C39F -S31540016E8092152150C2052150DA0720B080A0400D4D -S31540016E908215215012800007981720B0DA0060044D -S31540016EA0C203200480A34001028003E31B0000705B -S31540016EB07FFFA8DB90102013901660F07FFFF1B39F -S31540016EC092152150C205A1C08330600E820860032D -S31540016ED080A0600202800004211000807FFFA8D0BC -S31540016EE090102013C02421C07FFFF2981111F200A7 -S31540016EF00310E80080A20001128000060100000094 -S31540016F00C20421C080A0600002800004010000008C -S31540016F107FFFA8C3901020137FFFF3CA1110000012 -S31540016F201101F5897FFFF289901221E20308E96494 -S31540016F3080A200011280000601000000C205A1C026 -S31540016F4080A0600002800004010000007FFFA8B419 -S31540016F50901020237FFFF27D1112A20803114100F8 -S31540016F6080A200011280000601000000C205A1C0F6 -S31540016F7080A0600002800004010000007FFFA8A8F5 -S31540016F80901020237FFFF3AF110010009007BFF050 -S31540016F90921660F07FFFF1649415215003100C00A6 -S31540016FA0DA05215080A340011280000A8215215042 -S31540016FB0C200600480A0600012800006010000004B -S31540016FC0C205A1C080A0600002800005901660F055 -S31540016FD07FFFA89390102014901660F09207BFC0CF -S31540016FE07FFFF1569415215003200000DA05215008 -S31540016FF080A340011280000A82152150C20060041C -S3154001700080A060001280000601000000C205A1C0F8 -S3154001701080A0600002800004010000007FFFA8807C -S31540017020901020147FFFF19190102001030FE00092 -S3154001703080A200011280000601000000C205A1C025 -S3154001704080A0600002800004010000007FFFA87458 -S31540017050901020147FFFF17D90102001030FFC005A -S3154001706080A200011280000880A260001280000602 -S3154001707001000000C205A1C080A06000028000049A -S31540017080010000007FFFA866901020147FFFF36D7A -S315400170901110100019100085D41B20D07FFFF1F983 -S315400170A0D01E60F003100085D03D2150DA0060D833 -S315400170B0C205215080A0400D19100085821521502E -S315400170C012800007901320D8DA006004C20220041F -S315400170D080A3400102800361010000007FFFA850A8 -S315400170E0901020227FFFF3571110000017040080F3 -S315400170F0150F28009612E0F09A102000190FFC0097 -S31540017100D43FBFC0D83FBFF09007BFF09207BFC082 -S315400171107FFFF10594152150030FFC00DA0521503C -S3154001712080A340011280000682152150C2006004EE -S3154001713080A0600002800004010000007FFFA838A3 -S31540017140901020157FFFF33F1120000017000040EB -S31540017150150014009612E0019A102000190FFC0048 -S31540017160D43FBFC0D83FBFF09007BFF09207BFC022 -S315400171707FFFF0ED94152150030FFC00DA052150F5 -S3154001718080A340011280000682152150C20060048E -S3154001719080A0600102800004010000007FFFA8205A -S315400171A0901020157FFFF327113000001700004093 -S315400171B0152014009612E0019A102000192FFC00A8 -S315400171C0D43FBFC0D83FBFF09007BFF09207BFC0C2 -S315400171D07FFFF0D594152150032FFC00DA0521508D -S315400171E080A340011280000682152150C20060042E -S315400171F080A0600102800004010000007FFFA80812 -S31540017200901020157FFFF30F11100000190FFC009D -S315400172109A102000D83FBFF09007BFF09216E0E0E9 -S315400172207FFFF0C194152150C206E0E0DA052150F6 -S3154001723080A3400182152150128000079816E0E094 -S31540017240DA006004C203200480A3400102800004E6 -S31540017250010000007FFFA7F2901020157FFFF2F991 -S315400172601120000017000040150014009612E0019D -S31540017270190FFC009A102000D43FBFC0D83FBFF081 -S315400172809007BFF09216E0E07FFFF0A794152150DA -S31540017290C206E0E0DA05215080A340018215215063 -S315400172A0128000079816E0E0DA006004C203200469 -S315400172B080A3400102800004010000007FFFA7D89F -S315400172C0901020157FFFF2DF1130000017000040BB -S315400172D0152014009612E0019A102000192FFC0087 -S315400172E0D43FBFC0D83FBFF09007BFF09216E0E051 -S315400172F07FFFF08D94152150C2052150DA06E0E05A -S3154001730080A0400D82152150128000079016E0E0C2 -S31540017310DA006004C202200480A340010280000416 -S31540017320010000007FFFA7BE901020157FFFF2C528 -S315400173301110000015100000961020019A1020012E -S31540017340190FFC00D43FBFC0D83FBFF09007BFF034 -S315400173509207BFC07FFFF0799415215003100000BA -S31540017360DA05215080A34001128000068215215082 -S31540017370C200600480A06002028000040100000097 -S315400173807FFFA7A7901020157FFFF2AE11200000C6 -S315400173909007BFF09207BFC07FFFF0689415215058 -S315400173A003100000DA05215080A340011280000637 -S315400173B082152150C200600480A06003028000044F -S315400173C0010000007FFFA796901020157FFFF29DD8 -S315400173D0113000009A102001192FFC00D83FBFF050 -S315400173E09007BFF09207BFC07FFFF054941521501C -S315400173F003300000DA05215080A3400112800006C7 -S3154001740082152150C200600480A0600302800004FE -S31540017410010000007FFFA782901020157FFFF289AF -S3154001742011100000150FFC04172F26159412A012F7 -S315400174309612E231190FFEAE1B1CD2E89A13601167 -S3154001744098132154D43FBFC0D83FBFF09007BFF037 -S315400174509207BFC07FFFF04794152150030FFEA747 -S3154001746082106296DA05215080A3400112800008FD -S3154001747082152150DA006004032C1B348210602FE0 -S3154001748080A3400102800004010000007FFFA76441 -S31540017490901020157FFFF26B112000009007BFF07E -S315400174A09207BFC07FFFF03394152150030FFEA70B -S315400174B082106296DA05215080A3400112800008AD -S315400174C082152150DA006004032C1B34821060308F -S315400174D080A3400102800004010000007FFFA75005 -S315400174E0901020157FFFF25711300000192FFC0430 -S315400174F01B2F26159A13623198132012D83FBFC00D -S315400175009007BFF09207BFC07FFFF01A9415215034 -S31540017510032FFEA782106296DA05215080A340010F -S315400175201280000882152150DA006004032C1B34B6 -S315400175308210603080A340010280000401000000F7 -S315400175407FFFA737901020157FFFF23E11100000F4 -S3154001755015101000961020009A10200019103800BE -S31540017560D43FBFC0D83FBFF09007BFF09207BFC01E -S315400175707FFFF0009415215003102400DA052150B5 -S3154001758080A340011280000682152150C20060048A -S3154001759080A0600002800004010000007FFFA72058 -S315400175A0901020157FFFF227112000009007BFF0B1 -S315400175B09207BFC07FFFEFEF9415215003102400BF -S315400175C0DA05215080A34001128000068215215020 -S315400175D0C200600480A06000028000040100000037 -S315400175E07FFFA70F901020157FFFF2161130000084 -S315400175F09007BFF09207BFC07FFFEFDE9415215081 -S3154001760003102400DA05215080A3400112800006B0 -S3154001761082152150C200600480A0600002800004EF -S31540017620010000007FFFA6FE901020157FFFF205A6 -S3154001763011100000210FE000110020007FFFF0B97A -S315400176409214200180A22000128001230100000033 -S315400176507FFFF1FC11200000110020007FFFF0B1F7 -S315400176609214200180A2200012800118010000001E -S315400176707FFFF1F411300000921420017FFFF0A941 -S315400176801100200080A220001280010D010000009F -S315400176907FFFF1EC111000009A102000190FFC0039 -S315400176A0D83FBFF09007BFF07FFFEFB8921521504A -S315400176B0C207BFF0DA05215080A3400112800007BE -S315400176C082152150DA006004C207BFF480A340014D -S315400176D0028002A7010000007FFFA6D1901020156D -S315400176E07FFFF1D8112000009007BFF07FFFEFA781 -S315400176F092152150C207BFF0DA05215080A34001FF -S315400177001280000782152150DA006004C207BFF4D7 -S3154001771080A340010280029B010000007FFFA6C0BA -S31540017720901020157FFFF1C7113000009007BFF080 -S315400177307FFFEF9692152150C207BFF0DA0521501F -S3154001774080A340011280000782152150DA006004AF -S31540017750C207BFF480A340010280028F01000000EE -S315400177607FFFA6AF901020157FFFF1B611100000E4 -S31540017770030FDFFF901063FF7FFFF074A010000836 -S3154001778080A2001002800004010000007FFFA6A431 -S31540017790901020157FFFF1AB112000007FFFF06BA9 -S315400177A090100010030FE00080A200010280000447 -S315400177B0010000007FFFA69A901020157FFFF1A1DE -S315400177C0113000007FFFF0619010001080A2001080 -S315400177D002800004010000007FFFA6919010201551 -S315400177E07FFFF198901020007FFFF06090152150A7 -S315400177F0032FFE00DA05215080A3400112800006C6 -S3154001780082152150C200600480A0600002800005FC -S31540017810211001447FFFA6829010201621100144B9 -S315400178207FFFF05C90142158DA042158032FF000B1 -S3154001783080A3400102800004A21421587FFFA6784C -S31540017840901020167FFFF05D90100011DA04215848 -S31540017850030FE00080A34001028000040100000004 -S315400178607FFFA66F901020167FFFF0649015215080 -S31540017870030FFBF7821063F0DA05215080A3400124 -S315400178801280000882152150DA0060040303FF12BA -S315400178908210604A80A3400102800005921660F082 -S315400178A07FFFA65F90102016921660F09007BFF0FA -S315400178B07FFFEF3094152150C205A1C08330600E81 -S315400178C08208600780A06002028000051910004D01 -S315400178D07FFFA653901020171910004D17100080F6 -S315400178E0DA02E1C88213217880A0400DE0032178B5 -S315400178F002800004A212E1C87FFFA6499010201819 -S31540017900C204600480A0401002800004010000000F -S315400179107FFFA64390102018C204600880A0600033 -S315400179201280007701000000C204600C80A0600054 -S315400179301280006C010000007FFFEEE601000000AE -S3154001794080A220010280019801000000190C402903 -S315400179501B23CD1B9A13609B98132006941020007D -S3154001796096102000D83FBFF0D43FBFC07FFFEF2F16 -S315400179709007BFF003100083A21062101B10008114 -S3154001798003100144A0136210A4106150B0102000EE -S31540017990832E2002DA044001DA27BFC09007BFC018 -S315400179A07FFFEF25921521509B2E2003D804000D11 -S315400179B0C2052150B00620019603401080A3000164 -S315400179C01280000790102019DA02E004C204A004D4 -S315400179D080A340010280000580A620FF7FFFA610FC -S315400179E00100000080A620FF04BFFFEB832E20028A -S315400179F003100083A41062101B1000800310014481 -S31540017A00A2136210A6106150B0102000A12E2002D0 -S31540017A10C2048010C227BFC0921521507FFFEEDB02 -S31540017A209007BFC0DA044010C2052150B0062002BB -S31540017A309804001180A34001128000079010201A7B -S31540017A40DA032004C204E00480A340010280000559 -S31540017A5080A620FF7FFFA5F20100000080A620FF3F -S31540017A6024BFFFECA12E200230800211C205A1C025 -S31540017A7080A0600022BFFB8FB0863FFF30BFFB8AEC -S31540017A80C205A1C080A0600002BFF145010000000F -S31540017A9030BFF141C205A1C080A0600002BFF136EE -S31540017AA00100000030BFF132C205A1C080A06000D4 -S31540017AB002BFF1270100000030BFF1237FFFA5D8A7 -S31540017AC09010201530BFFEF37FFFA5D590102015ED -S31540017AD030BFFEE87FFFA5D29010201530BFFEDDF6 -S31540017AE07FFFA5CF9010201830BFFF947FFFA5CC14 -S31540017AF09010201010BFF678111000847FFFA5C8A2 -S31540017B009010201830BFFF89C207BFCC80A060000B -S31540017B1012BFF8F501000000C20421C082084015D9 -S31540017B209A16A00880A0400D12BFF8EF0100000090 -S31540017B3010BFF8F015108683C205A1C09A13601FC5 -S31540017B40190000108208400D9813200880A0400CAF -S31540017B5012BFFB7D1110008510BFFB7F9012205094 -S31540017B60C205A1C09A13601F190000108208400D7A -S31540017B709813200880A0400C12BFFB861110008587 -S31540017B8010BFFB8890122068C205A1C09A13601FDE -S31540017B90190000108208400D9813200480A0400C63 -S31540017BA012BFFB8F1110008510BFFB9190122080F0 -S31540017BB0C205A1C09A13601F190000108208400D2A -S31540017BC09813200880A0400C12BFFB9801000000CA -S31540017BD030BFFB98C205A1C080A0600002BFFBFE7A -S31540017BE0111FD00030BFFBF9C205A1C080A06000C3 -S31540017BF002BFFC1E0100000030BFFC1AC205A1C035 -S31540017C0080A0600002BFFC2C1B10008530BFFC2702 -S31540017C10C205A1C080A0600002BFFC3A1B100085CE -S31540017C2030BFFC35C205A1C080A0600002BFFC4741 -S31540017C301B10008530BFFC42C205A1C09A13601FCC -S31540017C40190000108208400D9813201080A0400CA6 -S31540017C5012BFFC4C0310008510BFFC4E901060B85B -S31540017C60C205A1C09A13601F190000108208400D79 -S31540017C709813200480A0400C12BFFB2011100085F0 -S31540017C8010BFFB2290122038C205A1C080A060001F -S31540017C9022BFF8D0150FFFFF30BFF8CBC205A1C0F8 -S31540017CA080A0600002BFF8100310008530BFF80BBA -S31540017CB0C205A1C09A13601F190000108208400D29 -S31540017CC09813201080A0400C12BFF8169015E0C8FA -S31540017CD010BFF818921660F0C205A1C080A06000DE -S31540017CE002BFF9491B10008530BFF944C205A1C046 -S31540017CF080A0600002BFF9579007BFF030BFF9522C -S31540017D00C205A1C080A0600002BFF9631B100085B7 -S31540017D1030BFF95EC205A1C09A13601F1900001059 -S31540017D208208400D9813201080A0400C12BFF969BB -S31540017D309007BFF010BFF96B921660F0C20461C0A4 -S31540017D4080A0600002BFF74B1B10008530BFF7468D -S31540017D50C205A1C080A0600002BFF75A9016E0E0BC -S31540017D6030BFF755C205A1C09A13601F1900001014 -S31540017D708208400D9813201080A0400C12BFF75F77 -S31540017D800100000030BFF75FC205A1C080A06000BE -S31540017D9002BFF76F1B10008530BFF76AC205A1C04D -S31540017DA09A13601F190000108208400D9813201085 -S31540017DB080A0400C12BFF7750100000030BFF77577 -S31540017DC0C20461C080A0600002BFF7949015E0C86C -S31540017DD030BFF78FC205A1C080A0600002BFF7A0E7 -S31540017DE09015E0C830BFF79BC205A1C080A06000D6 -S31540017DF002BFF7AC9015E0C830BFF7A7C205A1C0D6 -S31540017E009A13601F190000108208400D9813201024 -S31540017E1080A0400C12BFFBED0100000030BFFBED1E -S31540017E20C205A1C080A0600002BFFBFC170C000880 -S31540017E3030BFFBF7C205A1C09A13601F190000109D -S31540017E408208400D9813201080A0400C12BFFC19E7 -S31540017E50901660F030BFFC1AC205A1C080A0600038 -S31540017E6002BFFCA10100000030BFFC9DC20461C0FD -S31540017E7080A0600002BFF9E59015E0C830BFF9E087 -S31540017E80C205A1C080A0600002BFF9F19015E0C80B -S31540017E9030BFF9ECC205A1C080A0600002BFF9FD68 -S31540017EA09015E0C830BFF9F8C205A1C080A06000B6 -S31540017EB002BFFA091910008530BFFA04C20461C035 -S31540017EC080A0600002BFF9250310008530BFF9206C -S31540017ED0C205A1C09A13601F190000108208400D07 -S31540017EE09813201080A0400C12BFF92C010000000D -S31540017EF030BFF92CC205A1C080A0600002BFF93C89 -S31540017F001B10008530BFF937C205A1C09A13601F07 -S31540017F10190000108208400D9813201080A0400CD3 -S31540017F2012BFF9429007BFE810BFF944921660F0BC -S31540017F30C20461C080A0600002BFF95F9016E0E014 -S31540017F4030BFF95AC205A1C09A13601F190000102B -S31540017F508208400D9813201080A0400C12BFF9648E -S31540017F600100000030BFF964C205A1C080A06000D5 -S31540017F7002BFF9740310008530BFF96FC205A1C075 -S31540017F809A13601F190000108208400D98132010A3 -S31540017F9080A0400C12BFF97A9016E0E010BFF97C40 -S31540017FA0921660F07FFFA49E9010201910BFFE69C3 -S31540017FB0190C4029D80061C01B0000709A13601F3C -S31540017FC003000010980B000D8210600880A3000189 -S31540017FD012BFF5501110008410BFF5529012236064 -S31540017FE0C205A1C09A13601F190000108208400DF6 -S31540017FF09813200480A0400C12BFF558111000843C -S3154001800010BFF55A90122378C205A1C09A13601F7A -S31540018010190000108208400D9813200480A0400CDE -S3154001802012BFF5600100000030BFF560C205A1C076 -S3154001803080A0600002BFF4A90310008530BFF4A4FC -S31540018040C205A1C080A0600002BFF4939015E0C8AC -S3154001805030BFF48EC205A1C080A0600002BFF47D8E -S315400180609015E0C830BFF478C20461C080A06000BA -S3154001807002BFF4679015E0C830BFF462C205A1C0E3 -S315400180809A13601F190000108208400D98132002B0 -S3154001809080A0400C12BFF5B61B10008510BFF5B885 -S315400180A0921360D0C205A1C080A0600002BFF5C591 -S315400180B09007BFF030BFF5C0C205A1C080A06000E7 -S315400180C002BFF5D10310008530BFF5CCC205A1C072 -S315400180D09A13601F190000108208400D9813201052 -S315400180E080A0400C12BFF5D79007BFF010BFF5D95D -S315400180F0921660F0C20461C080A0600022BFF5F311 -S315400181001910008530BFF5EEC205A1C09A13601F54 -S31540018110190000108208400D9813201080A0400CD1 -S3154001812012BFF5F91B10008510BFF5FB0310008542 -S31540018130C205A1C080A0600002BFF60B9007BFE850 -S3154001814030BFF606C205A1C080A0600002BFF61787 -S315400181501B10008530BFF612C20421C080A060000A -S3154001816022BFF03E113C02AF30BFF039C205A1C07B -S3154001817080A0600002BFFD5B0100000030BFFD57DB -S31540018180C205A1C080A0600002BFFD6701000000DA -S3154001819030BFFD63C205A1C080A0600002BFFD7370 -S315400181A00100000030BFFD6FC205A1C080A0600084 -S315400181B002BFF2D70310008530BFF2D2C205A1C07B -S315400181C080A0600002BFF2C19007BFF030BFF2BC91 -S315400181D0C205A1C080A0600002BFF2AA3710008587 -S315400181E030BFF2A5C205A1C080A0600002BFF02841 -S315400181F01111FC0030BFF023C205A1C09A13601FC4 -S31540018200190000108208400D9813201080A0400CE0 -S3154001821012BFF3DD9016E0E010BFF3DF921660F077 -S31540018220C205A1C080A0600002BFF39E1B1000855D -S3154001823030BFF399C205A1C080A0600002BFF3869A -S315400182401B10008530BFF381C205A1C080A060002C -S3154001825002BFF36E1B10008530BFF369C20461C0D3 -S3154001826080A0600002BFF3589016E0E030BFF353A0 -S31540018270C205A1C080A0600002BFF30E191000859F -S3154001828030BFF309C205A1C080A0600002BFF2F869 -S315400182909007BFE830BFF2F3C20461C080A060001E -S315400182A002BFF2E29007BFE830BFF2DD81C7E008C6 -S315400182B081E80000D27A000081C3E0080100000095 -S315400182C081C3E008900A2020933260049212600133 -S315400182D08213C0007FFFFFF89E104000010000009E -S315400182E081D8200081C3E008010000009DE3BF98CA -S315400182F07FFFFFFC0100000082102400C0A0430064 -S3154001830081C7E00881E80000833220189A100008EE -S315400183108088600F02800004901020008333601033 -S315400183209008600381C3E008010000009DE3BF9807 -S31540018330031000C01B1000C1B0106000A213600002 -S31540018340031000C21B1000C2A4106000A6136100F6 -S31540018350031000201B100020A8106160AA136000C2 -S315400183607FFFEBAD9010200C808A2008028001FE31 -S31540018370010000007FFFA3A59010200ED0800320AE -S315400183807FFFFFE2010000000310014380A22002AB -S31540018390028000C6D02060D480A22002148000E46E -S315400183A080A2200380A22001028000D182102019E0 -S315400183B0331000A02F1000A0391000A0371000A0E4 -S315400183C0351000A07FFFFFC7210100007FFFFFC8D6 -S315400183D0BA04A00C921000117FFFFFBC9010001848 -S315400183E0921000117FFFFFB99006200490100011F2 -S315400183F07FFFFFB19210200ADA06601411080000CF -S31540018400913A000DC205E010900A0001912A20021E -S3154001841013008000900200117FFFFFA79212600AAD -S31540018420DA06601411100000913A000DC205E01001 -S31540018430900A0001912A2002900200117FFFFF9EBF -S315400184409214208EDA066014111C0000913A000D38 -S31540018450C205E010900A0001912A20021301C000D2 -S31540018460900200117FFFFF949212608E9334A00414 -S315400184709004600C7FFFFF90921260019214201EBF -S315400184807FFFFF8D9004A0089010001D7FFFFF8A9B -S31540018490921020009334E004921260017FFFFF8620 -S315400184A09004A004111000C2901221087FFFFF82A0 -S315400184B092102000031000E0A010600093342004C5 -S315400184C0111000C2901221047FFFFF7B9212601AA5 -S315400184D003048D1582106278C2242004111000E035 -S315400184E015100120C0222000A2102003AC12A000CA -S315400184F0A004E00C90047FFD40000A759210200311 -S315400185001B100143C20360D48200600C932A000110 -S315400185109202401693326004901000107FFFFF666E -S315400185209212601EA204600180A4600A04BFFFF299 -S31540018530A0042004C206E008D807200C8208600186 -S315400185408328400CD605E010111000E0D406A000A7 -S31540018550DA06601498122000960AE003972AC00DA5 -S31540018560920AA002111000A0DA022004940AA00186 -S31540018570952A800D932A400D1B1000209612C001AA -S31540018580E8236158030100001B0076418210601EFA -S315400185909A1361C09212C00999332004C22520045E -S315400185A0DA2520089612C00A9E13200E91356004E2 -S315400185B01B1000C2031000C2821061049012201EDB -S315400185C0953620049813201E9A136108D625202C2F -S315400185D0D8252010D025201CD2252020DE25202874 -S315400185E0D6252014940ABFF0FA250000DA25201872 -S315400185F0C2252024C225200CA2102100D4A4432048 -S31540018600C2800320D88443209A102001A010220062 -S31540018610DAA40320D884032082102000C2A40320B8 -S31540018620DAA0032081D820007FFFBE790100000037 -S31540018630C2800320E2844320E0840320DA05E0106F -S31540018640D6066014C206E0089A0B60039B2B400BCA -S3154001865082086001D407200CD806A000111000A0A2 -S315400186608328400A980B2001D60220049A13400120 -S31540018670992B000B9A13400CC203400080A0600066 -S3154001868012800008821360041B048D15D800400037 -S315400186909A13627880A3000D02800038C205E0106B -S315400186A010800000010000008210201A331000A043 -S315400186B0C22660149810203F2F1000A0391000A048 -S315400186C0351000A09A1020148210200E151000A01B -S315400186D0371000A0DA27200CC222A004D826A00019 -S315400186E0D825E01010BFFF38D826E0089A10207F21 -S315400186F0331000A02F1000A0C2266014DA25E01026 -S315400187009810203F391000A0351000A08210201388 -S315400187109A10200D111000A0371000A0C227200C7E -S31540018720DA22200410BFFFF0D826A00012BFFF2294 -S31540018730331000A08210201CC22660149A10201506 -S315400187408210207F391000A0371000A0DA27200CB4 -S31540018750C226E0089810200F2F1000A0351000A067 -S315400187601B1000A08210203FD8236004C226A0001F -S3154001877010BFFF15D825E010DA06E008D8066014C8 -S31540018780820860039A0B6002D607200C8328400CAE -S315400187909B2B400B8210400DD80040001B1000005F -S315400187A0C203400080A3000102800004D406E00811 -S315400187B01080000001000000C205E010980AA001E7 -S315400187C0D207200CD6066014820860038328400B2A -S315400187D0992B0009940AA0039810400CDA06A000D0 -S315400187E0111000A0952A80099A0B6001D602200437 -S315400187F08210400AC20040009B2B400B9813000D8B -S315400188000321D9509813200482106321C22300000A -S31540018810DA03000080A3400102800004C206E0089A -S315400188201080000001000000D407200CDA05E0109A -S3154001883082086001D60660148328400A9A0B6003B9 -S31540018840D806A0009B2B400B151000A0D602A00411 -S31540018850980B20019A134001992B000B9813400C59 -S315400188608210000C05048D158410A278072AF37B2B -S315400188708610E301C4384000C438400003048D1516 -S31540018880DA0300008210627880A34001028000046E -S315400188908213200410800000010000001B2AF37B94 -S315400188A0D80040009A13630180A3000D12BFFFFA5E -S315400188B0C205E010D6066014D806E00882086003B7 -S315400188C0D407200C8328400B980B2001DA06A00020 -S315400188D0111000A0992B000A9A0B6003D6022004BE -S315400188E08210400C9B2B400B15100143A010400DEC -S315400188F0F002A0D4A2102003E0240000C0A0022070 -S31540018900921020034000097290047FFD8206200CDC -S3154001891098102001912A0001992B00011B1001207A -S315400189209610000182136000DA02000180A3401014 -S31540018930A204600112800088A004000C80A4600A91 -S3154001894024BFFFEFE0240000C0A002200310012055 -S31540018950A810000BAA106000A0102000A21020034E -S3154001896090047FFD4000095A92102003832C600237 -S31540018970912A0014DA04C00190020015820B60604E -S315400189809132200480A000019012201EA0400010C8 -S315400189909A0B7F9F900A3F9F80A3400812800070E8 -S315400189A0A204600180A4600A24BFFFEF90047FFD0A -S315400189B080A4200012800004C205E010108000004F -S315400189C001000000D6066014D806E008820860035C -S315400189D0D407200CDA06A000111000A08328400B12 -S315400189E0980B2001992B000AD60220049A0B6002AB -S315400189F08210400C9B2B400BAA10400D9FC5400096 -S31540018A000100000082102400C0A04300C0A0022043 -S31540018A10A0102000A21020039B2C6002C204C00DAE -S31540018A208208606080A00001A0400010A20460019D -S31540018A3080A4600A24BFFFFA9B2C600280A4200810 -S31540018A4022800004D004E0041080000001000000F0 -S31540018A50808A204002800007010000007FFFFE1946 -S31540018A600100000080A220001280000401000000E5 -S31540018A7010800000010000007FFFFE12D004A00814 -S31540018A8080A2200012800004010000001080000036 -S31540018A90010000007FFFFE0BD004E00880A2200009 -S31540018AA01280000401000000108000000100000057 -S31540018AB083480000842860808188A000010000006E -S31540018AC00100000001000000D806E008D407200C90 -S31540018AD0DA05E010980B2001D6066014992B000A9E -S31540018AE09A0B6003C206A0009B2B400B151000A0F9 -S31540018AF0D602A004820860018328400B9A13400CD9 -S31540018B009A1340019A136004C20340009210200454 -S31540018B1091D02002010000007FFFBD3D0100000011 -S31540018B20981020009A102200D8A3432082102001D9 -S31540018B30C2A34320D8A3432003100000DA80438018 -S31540018B40DAA043807FFFBD979010200081D8200096 -S31540018B5030800005108000000100000010800000F8 -S31540018B600100000081C7E00891E820009DE3BF981D -S31540018B70400007D201000000808A21000280003FA8 -S31540018B80010000007FFFA1B501000000912A2004E9 -S31540018B907FFFA19E9002200503100140821060488C -S31540018BA0DA00600480A360002280001503100140B2 -S31540018BB0B0100001C20600009B38601F818360002F -S31540018BC0DA06200401000000010000008278400D11 -S31540018BD0DA062008B006200C80A0400D0280000471 -S31540018BE0901020017FFFA18E01000000C2062004E3 -S31540018BF080A0600012BFFFF00310014082106000A8 -S31540018C00DA00600480A360000280001501000000C4 -S31540018C10B0100001C206000081800000DA0620047F -S31540018C2001000000010000009A70400D8210000D05 -S31540018C30DA062008B006200C80A0400D0280000410 -S31540018C40901020027FFFA17601000000C206200499 -S31540018C5080A0600012BFFFF001000000400008251F -S31540018C600100000080A220001280000401000000E3 -S31540018C707FFFA16B9010200381C7E00891E8200097 -S31540018C809DE3BF987FFFA17501000000912A200452 -S31540018C907FFFA15E900220044000078A0100000088 -S31540018CA080A2212302800004010000007FFFA15C15 -S31540018CB0901020014000078101000000808A2100B8 -S31540018CC00280002B0310014082106184DA006008A3 -S31540018CD080A360090280001101000000B01000016C -S31540018CE0C2060000DA062004D80620088258400D44 -S31540018CF0B006200C80A0400C028000049010200297 -S31540018D007FFFA14701000000C206200880A060093C -S31540018D1012BFFFF401000000400007770100000088 -S31540018D2080A220000280000F01000000400007637E -S31540018D3001000000808A22000280000D010000002F -S31540018D404000079F0100000080A220001280000819 -S31540018D50010000007FFFA132901020043080000402 -S31540018D607FFFA12F9010200330BFFFF181C7E0089C -S31540018D7091E82000000000009DE3BFA09410200070 -S31540018D8011100063901221AC13100063921261B06E -S31540018D90171000639612E1B819100063981321BCAD -S31540018DA093C2000081C240001080019181C2C0007F -S31540018DB081C300001080018E9402A0019402A0019B -S31540018DC080A2A0031280018A0100000087440000AE -S31540018DD08D30E00E8C89A00780A1A000028000C7DB -S31540018DE001000000AF30E00BAE0DE00780A5E000CA -S31540018DF0128000C20100000080A1A002128000354D -S31540018E000100000025100000E41C80002510000030 -S31540018E1029100000A8152104A6100012AA1000125C -S31540018E20AC100014A1802046A4100000AA10000036 -S31540018E3001000000A180204EA81021000100000081 -S31540018E40A18000000100000001000000E83CA030C4 -S31540018E5082A480131280016682A5001612800164E5 -S31540018E6001000000010000000100000087440000ED -S31540018E708D30E00B8C89A0078CA1A0051280015C86 -S31540018E80A180000001000000010000000100000077 -S31540018E90E81CA03082A500161280015582A5401219 -S31540018EA0A4100000128001520100000001000000E0 -S31540018EB0874400008D30E00B8C89A0078CA1A0036C -S31540018EC01280014B010000001080008C010000005F -S31540018ED080A1A0011280002325100000E41C80001F -S31540018EE02510000029100000A8152104A610001223 -S31540018EF0AA100012AC100014A1802046A410000054 -S31540018F00AA10000001000000A180204EA8102100F7 -S31540018F1001000000A18000000100000001000000E6 -S31540018F2001000000E83C800082A4801312800130D9 -S31540018F3082A500161280012E0100000001000000EA -S31540018F40874400008D30E00B8C89A0078CA1A002DC -S31540018F501280012701000000108000680100000016 -S31540018F6080A1A00312800065A6100000A210200E69 -S31540018F70A1844000A6100000A1800000A814E000D2 -S31540018F80AB44000001000000AC14E0000100000009 -S31540018F90AF44000080A5200012800115AA8D6E0005 -S31540018FA080A540001280011280A5A0001280011008 -S31540018FB0AF35E00BAE0DE00780A5E0011280010C54 -S31540018FC001000000A0100000A1844000A61000008E -S31540018FD0A1800000E8180000AC100000AE100000AF -S31540018FE0EC04C000EE04E00480A5001612800100E6 -S31540018FF080A54017128000FE01000000A544000034 -S31540019000A534A00BA40CA00780A4A001128000F8EF -S3154001901001000000A0100000A1844000A61000003D -S31540019020A1800000A210200AA1844000A4100000E3 -S31540019030A1800000E8180000AC100000AE1000004E -S31540019040EC04C012EE04E00480A50016128000E88C -S3154001905080A54017128000E601000000A5440000EB -S31540019060A534A00BA40CA00780A4A002068000E0B2 -S315400190700100000021100140A0142200EC1C000058 -S31540019080A0042008E81C0000A1844000A6100000AE -S31540019090A1800000A210200EA1844000A41000105F -S315400190A0AC100000AE100000A180000001000000DD -S315400190B001000000EC3C8013AC100000AE10000033 -S315400190C0E81CC01280A50016128000C980A5401771 -S315400190D0128000C701000000A5440000A534A00B82 -S315400190E0A40CA00780A4A004128000C101000000C6 -S315400190F010800002010000008B4440008A09601F75 -S3154001910080A160010280000A8C1000059DE3BFA08A -S315400191108AA1600116BFFFFE0100000081E8000040 -S315400191208CA1A00116BFFFFE010000000100000056 -S3154001913001000000A023A080A02C20078E10001063 -S31540019140A3480000E2240000C2242004C43C2008B5 -S31540019150C83C2010CC3C2018F03C2020F43C202870 -S31540019160F83C2030FC3C2038D03C2040D43C2048C0 -S31540019170D83C2050DC3C2058A5500000E424206017 -S3154001918080102008821020018410200286102003BE -S31540019190881020048A1020058C102006819000003A -S315400191A0A42C601F818C800001000000010000009A -S315400191B0010000000300404082106101841000005C -S315400191C086100000894440008809201F861000044B -S315400191D0A010000284004002A21000028400400256 -S315400191E0A410000284004002A6100002840040023E -S315400191F0A810000284004002AA1000028400400226 -S31540019200AC10000284004002AE100002840040020D -S315400192109010000284004002921000028400400235 -S31540019220941000028400400296100002840040021D -S3154001923098100002840040029A1000028400400205 -S315400192409C100002840040029E10000284004002ED -S3154001925081E0000086A0E00116BFFFDE01000000AC -S315400192600300404082106101841000008610000412 -S3154001927080A400021280003F8400400280A4400284 -S315400192801280003C8400400280A480021280003992 -S315400192908400400280A4C00212800036840040024D -S315400192A080A50002128000338400400280A540025E -S315400192B0128000308400400280A580021280002D79 -S315400192C08400400280A5C0021280002A8400400228 -S315400192D080A20002128000278400400280A2400240 -S315400192E0128000248400400280A280021280002164 -S315400192F08400400280A2C0021280001E8400400207 -S3154001930080A300021280001B8400400280A3400219 -S31540019310128000188400400280A38002128000154A -S315400193208400400280A3C0021280001284004002E1 -S3154001933081E0000086A0E00116BFFFCE01000000DB -S3154001934080A020001280000B80A0FFFF1280000940 -S3154001935080A160051280000780A1A0061280000549 -S3154001936001000000A010000710800006C024202044 -S31540019370A01000079010200110800002D024202068 -S3154001938082100007C400400081888000010000006F -S315400193900100000001000000C4186008C8186010F0 -S315400193A0CC186018F0186020F4186028F81860305E -S315400193B0FC186038D0186040D4186048D8186050FE -S315400193C0DC186058E4006060C2006004819480004B -S315400193D0010000000100000001000000A01000078C -S315400193E0F004202081C7E00881E8000010BFFFFC9F -S315400193F0B01000000100000081D8200081C3E008C0 -S31540019400010000001B100144D80361808210200135 -S315400194108328400C1B10014482007FFFD8036184DE -S3154001942082084008932A400C900040098213C000EC -S315400194307FFFE77D9E104000010000001B100144A4 -S31540019440D8036180821020018328400C1B100144FF -S3154001945082007FFFD8036184932A400C820840082A -S31540019460900040099210000A8213C0007FFFE77006 -S315400194709E104000010000001B100144D80361808A -S31540019480821020018328400C1B10014482007FFF7B -S31540019490D8036184932A400C820840089000400911 -S315400194A09210000A8213C0007FFFE7659E104000BC -S315400194B0010000001B100144D80361808210200185 -S315400194C08328400C1B10014482007FFFD80361842E -S315400194D082084008932A400C900040098213C0003C -S315400194E07FFFE7559E104000010000001B1001441C -S315400194F0D803618C821020018328400C1B10014443 -S3154001950082007FFFD803619C932A400C8208400861 -S31540019510900040099210000A8213C0007FFFE74C79 -S315400195209E104000010000001B100144D803618CCD -S31540019530821020018328400C1B10014482007FFFCA -S31540019540D803619C932A400C820840089000400948 -S315400195509210000A8213C0007FFFE7419E1040002F -S31540019560010000009DE3BF582D100144A2102000C8 -S31540019570C205A19080A440011680001BA0102000C6 -S315400195802B1001442910014427100144A410200145 -S31540019590D005618C912C8008C205219C90023FFF29 -S315400195A0832C0001900A00187FFFE72790020001F3 -S315400195B0C204E17C901E0008900A000180A00008C8 -S315400195C0A2647FFFA0042001C205A19080A40001EE -S315400195D026BFFFF1D005618C80A460001280000394 -S315400195E0B0102000B010200181C7E00881E80000DA -S315400195F01B100144D803618C821020018328400C42 -S315400196001B10014482007FFFD803619C82084008F9 -S31540019610932A400C900040098213C0007FFFE70A5D -S315400196209E104000010000001B100144D803618CCC -S31540019630821020018328400C1B10014482007FFFC9 -S31540019640D803619C82084008932A400C9000400947 -S315400196508213C0007FFFE7009E104000010000001A -S31540019660952AA00D0328000094028009D0204000CD -S315400196709422B000D420600481C3E00801000000B8 -S31540019680033FFFBF821062F89DE38001193FFFBF90 -S3154001969094132368B407BFF80310004B9606800A5B -S315400196A0821063A0C222E00C0310004B821063605B -S315400196B0C222E0041B10004B9A136340033FFFBFD5 -S315400196C0DA26800A901323803310004B8210635CA4 -S315400196D094068008981323C0921663808200401E28 -S315400196E0D222E008D4204000B006800C7FFF9EC7FE -S315400196F0901020067FFFE6C890102000920A3FF0A6 -S315400197007FFFE6C790102000210000307FFFE6C2B0 -S3154001971090102000808A001012BFFFFD010000005A -S315400197207FFFFF36210000307FFFE6BB901020000F -S31540019730808A001012BFFFFD010000007FFFE6B6E0 -S3154001974090102000030020408210600F9212000109 -S315400197507FFFE6B3901020007FFFE6AF9010200810 -S3154001976021100144D02421787FFFE6AB9010200CD4 -S31540019770A73A2010993A2014A60CE007980B200F1F -S31540019780DA042178A8230013A80520089F3B60141A -S31540019790933B60109B3B601894050013A210200177 -S315400197A0AC03200A9E0BE00F96102400AE0B60031B -S315400197B09402A00221200000992AC00C1B100144EA -S315400197C08203E00A952C400A9424000A832C400126 -S315400197D0D8236198A02400011B10014403100144C1 -S315400197E0EC23618C972AC00FAA03E00A1B1001449F -S315400197F0D620617403100144EA236184EA20618022 -S315400198001B10014403100144D423617C920A600772 -S31540019810A53A2018D0206188153FFFBF932C4009F7 -S31540019820A40CA003031001449412A358932C40099D -S31540019830A404A0013910014437100144EC20619C75 -S315400198409B2C40149402801EE0272194E426E1904B -S31540019850AA027FFFDA228000AC85E0010280000C7B -S31540019860BB2C4013033FFFBF82106368A0068001F3 -S31540019870A4100016D00400009FC20000A0042004DA -S31540019880A484BFFF32BFFFFDD00400007FFFE66224 -S3154001989090102000920A3FFC7FFFE6619010200065 -S315400198A0A410200080A4801616800022A210200059 -S315400198B0033FFFBFAE106368A610001AA010200038 -S315400198C080A4001636800018A404A001108000056B -S315400198D0A810001780A4001636800013A404A00126 -S315400198E0921000107FFFFEC8D004C014820A0015F2 -S315400198F080A0401512BFFFF8A0042001C204C01485 -S3154001990082184008DA0721948208400D80A00001A0 -S31540019910A2647FFF80A4001606BFFFF392100010D9 -S31540019920A404A00180A4801606BFFFE5A604E004B6 -S315400199307FFFE63990102000A61000089010200005 -S315400199407FFFE6379214E00380A46000028001B1F4 -S3154001995001000000833CE00C80886003128000A572 -S31540019960030048D1833CE01380886003128001AD37 -S31540019970010000007FFFFEA1210000307FFFE626A7 -S3154001998090102000808A001012BFFFFDA61000082B -S31540019990A4102000C206E19080A480011680000D2B -S315400199A0832CA00292100012901000187FFFFED067 -S315400199B094102000A404A001C206E19080A4800175 -S315400199C006BFFFFA92100012A4102000832CA002B9 -S315400199D0A404A001C026000180A4A01E04BFFFFD6F -S315400199E0832CA00282102005C22600009A10200175 -S315400199F0DA26200482102002C22620089A1020036B -S31540019A00DA26200C7FFFFED89010001880A2200095 -S31540019A10028001D301000000C206000080A060055B -S31540019A2002800004010000007FFF9DFD901020068A -S31540019A307FFFFECD9010001880A22000128001C445 -S31540019A4001000000A4102000C206E19080A480011C -S31540019A501680000F92100012A006200494102000D8 -S31540019A607FFFFEB290100018921000129010001065 -S31540019A707FFFFEAE94102000A404A001C206E1902F -S31540019A8080A4800106BFFFF6921000127FFFE5F821 -S31540019A90901000187FFFE5F6900620207FFFE5F441 -S31540019AA0900620407FFFE5F290062060A41020003A -S31540019AB0C206E19080A4800106800196A210200092 -S31540019AC07FFF9DD790102008173FFFBF8212E3C04A -S31540019AD0940680018212E35C8200401ED81A8000FF -S31540019AE0C2004000D83840009612E380C206800B7F -S31540019AF080A06005128000068206800BDA006004B1 -S31540019B0080A3600102800005A41020007FFF9DC450 -S31540019B1090102009A4102000C206E19080A4800183 -S31540019B2016800011A2102000A006200492100012F7 -S31540019B307FFFFEBE90100010901A200180A0000801 -S31540019B40A2647FFFA404A001C206E19080A4800123 -S31540019B5006BFFFF89210001280A460010280000542 -S31540019B60833CE0137FFF9DAE9010200A833CE013B7 -S31540019B70808860031280018082102005C226000081 -S31540019B809A102001DA26200482102002C2262008DB -S31540019B909A102003DA26200C1B3FFFBF9A13635805 -S31540019BA09A03401ED00340004000048D9210001DD0 -S31540019BB0032EEEEEA12A2002A21063BBE22600107C -S31540019BC07FFFFE699010001880A220001280016775 -S31540019BD001000000C206001080A04011028000056D -S31540019BE0030048D17FFF9D8E90102012030048D17B -S31540019BF0821061671B226AF3C22620209A1361EF05 -S31540019C00DA262024C20E202080A0600102800004B2 -S31540019C10010000007FFF9D829010201AC20E202174 -S31540019C2080A0602302800004010000007FFF9D7C2C -S31540019C309010201BC20E202280A0604502800004A5 -S31540019C40010000007FFF9D769010201CC20E20234C -S31540019C5080A0606702800004010000007FFF9D70C4 -S31540019C609010201DC20E202480A06089028000042D -S31540019C70010000007FFF9D6A9010201EC20E202524 -S31540019C8080A060AB02800004010000007FFF9D645C -S31540019C909010201FC20E202680A060CD02800004B5 -S31540019CA0010000007FFF9D5E90102020C20E2027FC -S31540019CB080A060EF02800004010000007FFF9D58F4 -S31540019CC090102021C2162020832860108330601016 -S31540019CD080A0612302800004010000007FFF9D50A7 -S31540019CE090102022DA1620229B2B601003000011CF -S31540019CF09B3360108210616780A34001028000049B -S31540019D00010000007FFF9D4690102023DA16202493 -S31540019D109B2B6010030000229B336010821061ABC5 -S31540019D2080A3400102800004010000007FFF9D3CAA -S31540019D3090102024DA1620269B2B60100300003356 -S31540019D409B336010821061EF80A3400102800005C1 -S31540019D50821020307FFF9D329010202582102030C6 -S31540019D60C22E2020030C08D1DA062020821061671A -S31540019D7080A3400102800005821020317FFF9D288B -S31540019D809010202782102031C22E2021030C0C5125 -S31540019D90DA0620208210616780A340010280000517 -S31540019DA0821020327FFF9D1E901020288210203283 -S31540019DB0C22E2022210C0C4CDA0620208214226766 -S31540019DC080A3400102800005821020337FFF9D144D -S31540019DD09010202982102033C22E20239A14223338 -S31540019DE0C206202080A0400D02800005821020344A -S31540019DF07FFF9D0B9010202A82102034C22E2024F2 -S31540019E00030D2AF3DA062024821061EF80A3400174 -S31540019E1002800005821020357FFF9D019010202B86 -S31540019E2082102035C22E2025030D0D73DA0620241B -S31540019E30821061EF80A34001028000058210203626 -S31540019E407FFF9CF79010202C82102036C22E2026B0 -S31540019E50210D0D4DDA062024821422EF80A3400104 -S31540019E6002800005821020377FFF9CED9010202D47 -S31540019E7082102037C22E20279A142237C206202468 -S31540019E8080A0400D02800005210000107FFF9CE468 -S31540019E909010202E2100001082142041C23620202D -S31540019EA00310104CDA0620208210623380A3400151 -S31540019EB002800005821422437FFF9CD99010202FF7 -S31540019EC082142243C236202203101050DA06202083 -S31540019ED08210624380A340010280000521000011E7 -S31540019EE07FFF9CCF90102030210000118214204525 -S31540019EF0C23620240311114DDA062024821062371E -S31540019F0080A3400102800005821422477FFF9CC442 -S31540019F109010203182142247C23620260311115156 -S31540019F20DA0620248210624780A3400102800004A1 -S31540019F30010000007FFF9CBA901020327FFFFD2F69 -S31540019F40A4102000C206E19080A48001168000156D -S31540019F501B100144D403619C96100001A0102000FF -S31540019F6080A4001D3680000CA404A001832C800A25 -S31540019F709B286002992CA01082130010C226000D66 -S31540019F80A004200180A4001D06BFFFFC9A036004C3 -S31540019F90A404A00180A4800B26BFFFF2A0102000DC -S31540019FA07FFFE49D9010200003000010808A00018D -S31540019FB012BFFFFC01000000A4102000C206E19080 -S31540019FC080A4800116800114921000127FFFFD8942 -S31540019FD09010001815100144C202A17C900A00019C -S31540019FE0820E000180A20001A404A00112BFFFF469 -S31540019FF0901020337FFF9C8A01000000C206E19049 -S3154001A00080A4800106BFFFF2921000123080010247 -S3154001A0107FFF9C839010200110BFFE50833CE00CD3 -S3154001A0207FFFE47D90102000133FFFF09212603FC6 -S3154001A030920A0009A61000087FFFE47990102000DB -S3154001A0407FFFE3D0A41020001303C0009214C0097F -S3154001A0507FFFE4739010200080A4801616800009CB -S3154001A06092100012901663807FFFFD049410200029 -S3154001A070A404A00180A4801606BFFFFB9210001223 -S3154001A0807FFFE3C0010000007FFFE46390102000E2 -S3154001A090913A200A900A200380A2200102800004FE -S3154001A0A0010000007FFF9C5E90102002010000002D -S3154001A0B092102000901663807FFFFCE194102000EF -S3154001A0C0010000007FFFE454901020001303C000FC -S3154001A0D0922A00097FFFE4529010200001000000FF -S3154001A0E07FFFE3A8010000007FFFE44B90102000B2 -S3154001A0F0913A200C900A200380A2200102BFFE1E45 -S3154001A100010000007FFF9C469010200330BFFE1ADD -S3154001A110921000127FFFFD4590100018901A2005FD -S3154001A12080A00008A2647FFFA404A001C206E190BA -S3154001A13080A4800106BFFFF89210001280A460003F -S3154001A14012BFFE63173FFFBF30BFFE5E7FFF9C34E9 -S3154001A1509010200710BFFE3DA41020007FFF9C30C9 -S3154001A1609010200530BFFE2D7FFF9C2D90102011B1 -S3154001A17030BFFE997FFFE42890102000033FFFF097 -S3154001A1808210603F920A00017FFFE4259010200073 -S3154001A190033FFFBFA010638092102000941020005F -S3154001A1A07FFFFCE2900680107FFFE41B90102000A9 -S3154001A1B00303C000921200017FFFE41990102000B2 -S3154001A1C010800006A4102000900680107FFFFCD767 -S3154001A1D094102005A404A001C206E19080A4800148 -S3154001A1E006BFFFFA92100012033FFFBFA010638023 -S3154001A1F09A102001DA2E801003004000D806801004 -S3154001A2008210600580A30001028000040100000065 -S3154001A2107FFF9C039010200B7FFFE3FF90102000EF -S3154001A220913A2006900A200380A220010280000470 -S3154001A230010000007FFF9BFA9010200C7FFFE3F6A0 -S3154001A240901020001303C000922A00097FFFE3F417 -S3154001A2509010200092102000900680107FFFFCB3E2 -S3154001A260941020007FFFE3EC901020002103C000F2 -S3154001A270921200107FFFE3EA901020007FFFE3E691 -S3154001A28090102000808A001002BFFFFDA610000832 -S3154001A290A4102000C206E19080A480011680000E21 -S3154001A2A0033FFFBF9A102001A2106380A12B401DDE -S3154001A2B092100012900680117FFFFC8D94043FFF9F -S3154001A2C0A404A001C206E19080A4800106BFFFFA62 -S3154001A2D0921000121303C000922CC0097FFFE3D0F5 -S3154001A2E0901020002103C0007FFFE3CB9010200097 -S3154001A2F0808A001012BFFFFD1B004000213FFFBFB7 -S3154001A30082142380D80680019A13600580A3000D2C -S3154001A31002800004010000007FFF9BC19010200DC8 -S3154001A3207FFFE3BD90102000913A2008900A200358 -S3154001A33080A2200122800005A01423787FFF9BB8CC -S3154001A3409010200FA01423789406801098102011A5 -S3154001A3509A102055D83A80007FFFE3AF9010200035 -S3154001A3600303C00092120001920A7F3F7FFFE3ACD4 -S3154001A37090102000A00680107FFFE3CB90100010C4 -S3154001A38010800006A4102000900420047FFFFC6783 -S3154001A39094102055A404A001C206E19080A4800136 -S3154001A3A006BFFFFA92100012113FFFBF90122378A9 -S3154001A3B07FFFE3BD9006800880A220111280000431 -S3154001A3C080A2605502800004010000007FFF9B943B -S3154001A3D0901020107FFFE39090102000833A2006D2 -S3154001A3E08208600380A0600102800004A610000874 -S3154001A3F07FFF9B8B90102010133C3FF09212603FE1 -S3154001A400920CC0097FFFE3869010200010BFFDDC4F -S3154001A410821020057FFFE380901020009212200FCA -S3154001A4207FFFE37F9010200081C7E00891E820007C -S3154001A4309DE3BF987FFFFC9301000000B010000828 -S3154001A440130020409212600F7FFFE37590102000A9 -S3154001A4500100000081C7E00881E80000033FFFBF1B -S3154001A460821063589DE380017FFFFBE401000000F9 -S3154001A47040000238010000007FFFE367901020088A -S3154001A480A21000087FFFE3649010200C7FFF9B73AE -S3154001A490A0100008912A20047FFF9B5C9002200CAB -S3154001A4A0973C6014833C6018953C2014993C2018D5 -S3154001A4B082086003960AE00F820060019602E00A74 -S3154001A4C0A33C6010A13C2010980B2003940AA00FD6 -S3154001A4D0A728400B98032001A20C6007A00C200777 -S3154001A4E09402A00A9A102001A2046002A00420024C -S3154001A4F0B12B000A03200000AB2B4011A52B4010C5 -S3154001A5009620401898057FFF822040139A04BFFF8A -S3154001A510AE130001A213400B210000307FFFE33E42 -S3154001A52090102000808A001012BFFFFD033FFFBF3D -S3154001A5309A07BFF8821063C0A00340012D155555F7 -S3154001A54090100018921000107FFFE2C69415A15595 -S3154001A55080A220001280004B292AAAAA921000103C -S3154001A560901000187FFFE2D3941522AA80A2200002 -S3154001A5701280004E010000007FFF9B380100000061 -S3154001A580912A20047FFF9B219002200A400001EE80 -S3154001A5900100000092152200920C4009901000180B -S3154001A5A094100011961000127FFFE2EB981522AA33 -S3154001A5B080A2200012800051010000009215A100E6 -S3154001A5C090100018920C4009941000119610001238 -S3154001A5D07FFFE2E19815A15580A220001280004438 -S3154001A5E0010000007FFF9B1D01000000912A20040D -S3154001A5F07FFF9B069002200B901000137FFFE2BD68 -S3154001A6009215A15580A2200012800035010000005C -S3154001A610901000137FFFE2B7921522AA80A2200074 -S3154001A6201280002C010000007FFF9B0C01000000FE -S3154001A630912A20047FFF9AF5900220099010001379 -S3154001A64092100017941000157FFFE2B6961522AAC4 -S3154001A65080A220001280001B010000009010001310 -S3154001A66092100017941000157FFFE2AE9615A15582 -S3154001A67080A2200002800025010000003080000EEB -S3154001A6807FFF9AE790102001292AAAAA921000106A -S3154001A690901000187FFFE287941522AA80A220001D -S3154001A6A002BFFFB6010000007FFF9ADD9010200235 -S3154001A6B030BFFFB27FFF9ADA901020083080001336 -S3154001A6C07FFF9AD79010200710BFFFE69010001326 -S3154001A6D07FFF9AD39010200630BFFFD47FFF9AD0D8 -S3154001A6E09010200510BFFFCC901000137FFF9ACC2D -S3154001A6F09010200430BFFFBC7FFF9AC99010200301 -S3154001A70010BFFFB09215A1007FFFFB3CB0102000A7 -S3154001A71040000190010000000100000081C7E008EF -S3154001A72081E800009DE3BF987FFF9AB31100412C59 -S3154001A730DA062004D80620049A0B6003993B2002CE -S3154001A74082102007C2262008BA036001B20B27FFF8 -S3154001A750010000009010200AC02600007FFF9AAB3E -S3154001A760010000001700020082103FFFC226000BC5 -S3154001A770032AAAAA1B155555D806000BAC10200072 -S3154001A780821062AA9A136155AA0B000180A5801D09 -S3154001A79016800038A80B000D9612E020A72E6008FF -S3154001A7A080A4E0000480000CA2102000832DA002AA -S3154001A7B082004018190002009A10000BE820400C54 -S3154001A7C0EA20400DA204601080A4C01114BFFFFC12 -S3154001A7D082006040AC05A00180A5801D06BFFFF246 -S3154001A7E080A4E000AC10200080A5801D16800021C9 -S3154001A7F003000200B8106020A72E6008AE100018B2 -S3154001A80080A4E00004800017A2102000030002008B -S3154001A810A4060001A005C01CC2048000A204601069 -S3154001A820A404A04080A0401402800004901020019E -S3154001A8307FFF9A7B01000000C2040000A004204073 -S3154001A84080A0401502800004901020017FFF9A7479 -S3154001A8500100000080A4C01114BFFFF001000000F8 -S3154001A860AC05A00180A5801D06BFFFE6AE05E0044C -S3154001A8707FFF9A669010200CAC10200080A5801DA9 -S3154001A88016800088031555559E1061551B0008001A -S3154001A890032AAAAA9A136004901062AAA72E6008F6 -S3154001A8A080A4E0000480000EA2102000832DA01396 -S3154001A8B082004018130008009410000F9610000DF6 -S3154001A8C098100008D4204009D820400BA204600209 -S3154001A8D080A4C01114BFFFFC82006008AC05A00132 -S3154001A8E080A5801D06BFFFF080A4E000AC102000CB -S3154001A8F080A5801D1680006B03155555B81061550E -S3154001A9001B000800032AAAAAB6136004B41062AA5F -S3154001A910A72E600880A4E00004800019A210200040 -S3154001A920832DA013A00040182F000800AA10001C78 -S3154001A930A810001BA410001AC2040017A20460024A -S3154001A94080A0401502800004901020037FFF9A34B6 -S3154001A95001000000C2040014A004200880A0401297 -S3154001A96002800004901020037FFF9A2D0100000011 -S3154001A97080A4C01114BFFFF101000000AC05A00185 -S3154001A98080A5801D06BFFFE580A4E000AC10200035 -S3154001A99080A5801D16800043030008009E106004B8 -S3154001A9A01B155555032AAAAA9A136155901062AAF6 -S3154001A9B0A72E600880A4E0000480000EA2102000AB -S3154001A9C0832DA01382004018130008009410000F35 -S3154001A9D09610000D98100008D620400AD82040094C -S3154001A9E0A204600280A4C01114BFFFFC820060086B -S3154001A9F0AC05A00180A5801D06BFFFF080A4E00044 -S3154001AA00AC10200080A5801D1680002603155555E3 -S3154001AA10B81061551B2AAAAA03000800A72E600890 -S3154001AA20B61362AAB410600480A4E0000480001941 -S3154001AA30A2102000832DA013A00040182F0008006B -S3154001AA40AA10001CA810001BA410001AC204001270 -S3154001AA50A204600280A040150280000490102004E8 -S3154001AA607FFF99EF01000000C2040017A0042008EF -S3154001AA7080A0401402800004901020047FFF99E8D2 -S3154001AA800100000080A4C01114BFFFF101000000C5 -S3154001AA90AC05A00180A5801D06BFFFE580A4E000AE -S3154001AAA082102005C22620081B200000DA2600005D -S3154001AAB081C7E00881E8000081C3E0089144400075 -S3154001AAC080800000151001409412A1809010200052 -S3154001AAD09210224681800000010000000100000022 -S3154001AAE001000000D00280009122400881C3E008A5 -S3154001AAF0010000008180000090102001809020011B -S3154001AB0080D020011280002C0100000080D23FFF3E -S3154001AB10168000290100000080DA3FFF93400000C3 -S3154001AB2080A27FFF128000240100000080D23FFFF7 -S3154001AB309348000093326014920A600F80A2600825 -S3154001AB401280001D0100000081800000901020014C -S3154001AB50945220049452A0049452A00496A2A04078 -S3154001AB601280001501000000818000009010200233 -S3154001AB7080A00000328000109052000880A220027E -S3154001AB801280000D0100000081800000901020021B -S3154001AB9080A00000010000003280000790520008AA -S3154001ABA080A22002128000040100000081C3E00857 -S3154001ABB09010200181C3E0089010000013155555EF -S3154001ABC092126155A582400001000000010000007B -S3154001ABD0010000009544800080A2400A1280004393 -S3154001ABE001000000923A4000A582400001000000A9 -S3154001ABF001000000010000009544800080A2400A47 -S3154001AC001280003A010000001100003F901223FF1C -S3154001AC10A5800000818000000100000001000000C5 -S3154001AC200100000093F23FFF9A10000993F23FFFA3 -S3154001AC3093F23FFF93F23FFF93F23FFF93F23FFFC1 -S3154001AC4093F23FFF93F23FFF994000009744800003 -S3154001AC50153FFC009412A00880A2400A12800023EE -S3154001AC6080A2400B1280002180A320071280001F82 -S3154001AC70113FFF809012200180A340081280001BE3 -S3154001AC801100003F901223FFA58000008180000043 -S3154001AC9001000000010000000100000093FA3FFF9F -S3154001ACA093FA3FFF93FA3FFF93FA3FFF93FA3FFF31 -S3154001ACB093FA3FFF93FA3FFF93FA3FFF9940000013 -S3154001ACC09744800080A260081280000880A2600834 -S3154001ACD01280000680A320001280000401000000BB -S3154001ACE081C3E0089010200181C3E0089010000064 -S3154001ACF0818000009010200280A000003280001068 -S3154001AD009072000880A220021280000D010000000E -S3154001AD10818000009010200280A000000100000008 -S3154001AD20328000079072000880A22002128000043F -S3154001AD300100000081C3E0089010200181C3E008B2 -S3154001AD4090100000C0A0004081C3E008010000004F -S3154001AD50110020409012200FD0A0004081C3E0088E -S3154001AD60010000009DE3BF987FFFE12B9010200872 -S3154001AD70A21000087FFFE1289010200C833C60144C -S3154001AD809B3A2014A13A2018A33C6018A20C6003F8 -S3154001AD90A00C20038208600F9A0B600F8200600AA4 -S3154001ADA09A03600AA2046001A0042001A32C400179 -S3154001ADB07FFFFFE5A12C000D7FFFE08E9010001173 -S3154001ADC07FFFE09A901000107FFFF98C0100000090 -S3154001ADD07FFFFFE081E800000100000098120009B2 -S3154001ADE0818200009AAB2FFF0280002598880000DF -S3154001ADF099230009992300099923000999230009F8 -S3154001AE0099230009992300099923000999230009E7 -S3154001AE1099230009992300099923000999230009D7 -S3154001AE2099230009992300099923000999230009C7 -S3154001AE3099230009992300099923000999230009B7 -S3154001AE4099230009992300099923000999230009A7 -S3154001AE509923000999230009992300099923000997 -S3154001AE609923000999230009992300099923000987 -S3154001AE709923000081C3E00891400000992300090D -S3154001AE809923000999230009992300099923000967 -S3154001AE909923000999230009992300099923000957 -S3154001AEA09923000999230009992300099923000050 -S3154001AEB09B400000992B200C9B33601481C3E00812 -S3154001AEC09013400C1080000B8610200080924008A1 -S3154001AED01680000886100008809240001680000403 -S3154001AEE080920000168000039220000990200008FD -S3154001AEF09A924000128000059610000891D02002D7 -S3154001AF0081C3E0089010000080A2C00D0A80009520 -S3154001AF10941000000302000080A2C0010A800028AC -S3154001AF209810000080A340011A80000D8410200172 -S3154001AF309B2B600410BFFFFC980320019A83400DB0 -S3154001AF401A8000078400A001832860049B336001B6 -S3154001AF509A034001108000078420A00180A3400B82 -S3154001AF600ABFFFF701000000028000020100000055 -S3154001AF7084A0A00106800076010000009622C00D43 -S3154001AF80941020011080000A01000000952AA001BA -S3154001AF90068000059B3360019622C00D1080000497 -S3154001AFA09402A0019602C00D9422A00184A0A001A2 -S3154001AFB016BFFFF78092C000308000659B2B60046E -S3154001AFC080A3400B08BFFFFE9883200102800065E5 -S3154001AFD0982320018092C000952AA0040680002F64 -S3154001AFE09B33600196A2C00D068000179B3360011A -S3154001AFF096A2C00D0680000B9B33600196A2C00D40 -S3154001B000068000059B33600196A2C00D108000505A -S3154001B0109402A00F9682C00D1080004D9402A00D9F -S3154001B0209682C00D068000059B33600196A2C00D35 -S3154001B030108000479402A00B9682C00D10800044F8 -S3154001B0409402A0099682C00D0680000B9B336001D5 -S3154001B05096A2C00D068000059B33600196A2C00DE5 -S3154001B0601080003B9402A0079682C00D10800038E4 -S3154001B0709402A0059682C00D068000059B336001AF -S3154001B08096A2C00D108000329402A0039682C00D94 -S3154001B0901080002F9402A0019682C00D06800017F1 -S3154001B0A09B33600196A2C00D0680000B9B33600165 -S3154001B0B096A2C00D068000059B33600196A2C00D85 -S3154001B0C0108000239402BFFF9682C00D108000209D -S3154001B0D09402BFFD9682C00D068000059B33600138 -S3154001B0E096A2C00D1080001A9402BFFB9682C00D35 -S3154001B0F0108000179402BFF99682C00D0680000B9E -S3154001B1009B33600196A2C00D068000059B3360010A -S3154001B11096A2C00D1080000E9402BFF79682C00D14 -S3154001B1201080000B9402BFF59682C00D0680000583 -S3154001B1309B33600196A2C00D108000059402BFF3B7 -S3154001B1409682C00D108000029402BFF198A320019F -S3154001B15016BFFFA28092C000268000029602C00957 -S3154001B1608090C000268000029620000B81C3E00833 -S3154001B1709010000B921000089010200094102000AF -S3154001B180961020008213C000400001E89E10400046 -S3154001B190010000009210000803100142D00063F83C -S3154001B1A08213C0004000000A9E10400001000000CA -S3154001B1B09210000803100142D00063F88213C000C8 -S3154001B1C0400002559E104000010000009DE3BF98DB -S3154001B1D08206600B80A06016A61000181880000336 -S3154001B1E0A0087FF8A010201080A400199A402000E2 -S3154001B1F08334201F8090400D128001B0B010200092 -S3154001B200400001B09010001380A421F71880001768 -S3154001B21099342009391001408217222898040001E7 -S3154001B220F003200C80A6000C0280004E9F342003C0 -S3154001B230C206200494087FFC9A06000AC2036004F1 -S3154001B24082106001D006200CD2062008D2222008A6 -S3154001B250C2236004D022600C400001A0901000136C -S3154001B26010800196B006200880A320001280002895 -S3154001B2709F342003391001409B2BE003821722287B -S3154001B2809A0340011080000AF003600C94087FFC89 -S3154001B2909622801080A2E00F1480010980A2E0006E -S3154001B2A036BFFFE79A06000AF006200C80A6000D7D -S3154001B2B032BFFFF7C20620049E03E001251001407C -S3154001B2C09814A230F003200880A6000C0280005D8D -S3154001B2D0833BE01FC206200494087FFC962280101F -S3154001B2E080A2E00F1480009F80A2E000D823200CAA -S3154001B2F006800023D82320089A06000AC203600468 -S3154001B3008210600110BFFFD5C2236004833420063A -S3154001B31080A3200408BFFFD89E00603880A3201474 -S3154001B32008BFFFD59E03205B8334200C80A32054A5 -S3154001B33008BFFFD19E00606E8334200F80A3215445 -S3154001B34008BFFFCD9E0060778334201280A3255429 -S3154001B35008BFFFC99E00607C10BFFFC79E10207EBC -S3154001B36098062008F003200C80A6000C32BFFFB2DD -S3154001B370C206200410BFFFD29E03E00280A2A1FFB5 -S3154001B380088000BE9B32A0039732A00980A2E0004C -S3154001B39022800017961722288332A00680A2E00455 -S3154001B3A0088000129A00603880A2E0140880000FDD -S3154001B3B09A02E05B8332A00C80A2E0540880000B25 -S3154001B3C09A00606E8332A00F80A2E1540880000784 -S3154001B3D09A0060778332A01280A2E5540880000368 -S3154001B3E09A00607C9A10207E96172228832B600350 -S3154001B3F09000400BD202200880A240082280010F13 -S3154001B40099336002C202600482087FFC80A0400A30 -S3154001B41028800007D002600CD202600880A2400852 -S3154001B42032BFFFFAC2026004D002600CD026200C63 -S3154001B430D2262008F022600CF0222008833BE01F30 -S3154001B4408330601E8203C001391001408338600297 -S3154001B450981722289A102001932B4001D8032004E3 -S3154001B46080A2400C1880004BAE172228808B000921 -S3154001B4701280000D03100140820BFFFC920240092D -S3154001B480808B0009128000079E0060048210000C28 -S3154001B490920240098088400902BFFFFE9E03E004F4 -S3154001B4A003100140A2106228A8100011832BE0036B -S3154001B4B0980040119010000F9A10000C1080000A5D -S3154001B4C0F003600C94087FFC9622801080A2E00F66 -S3154001B4D01480007D80A2E0003680008B9A06000A27 -S3154001B4E0F006200C80A6000D32BFFFF7C2062004ED -S3154001B4F09E03E001808BE00312BFFFF19A036008CF -S3154001B500808A200398033FF8028000D490023FFFCF -S3154001B510C203200880A0400C02BFFFFB808A2003A3 -S3154001B52092024009C205200480A2400118800018F9 -S3154001B5303910014080A260001280000680884009CF -S3154001B54010800014AE1722289E03E004808840092B -S3154001B55022BFFFFE9202400910BFFFD6832BE003B4 -S3154001B5608214200194060010C2262004D423200C04 -S3154001B570D42320088212E001D622800BD822A008CB -S3154001B580C222A00410BFFF35D822A00CAE17222834 -S3154001B590F005E008C2062004AA087FFC80A54010F9 -S3154001B5A09A4020009625401080A2E00F1480004268 -S3154001B5B0821020018093400102800027031001433D -S3154001B5C0DA0061282D1001409A04000DC205A2201F -S3154001B5D0A810001580A07FFFA2036010028000041E -S3154001B5E0A406001582046FFFA20870009010001394 -S3154001B5F0400000C09210001180A23FFF0280000867 -S3154001B600B210000880A200121A8000463B10014386 -S3154001B61080A6001722800044C20760F882172228BC -S3154001B620D8006008DA0320049A0B7FFC80A34010FF -S3154001B630984020009623401080A2E00F048000032A -S3154001B6408210200182102000809300011280009810 -S3154001B6500100000098172228F003200882142001D7 -S3154001B660C22620049A0600108212E001C223600419 -S3154001B67010BFFEFADA23200898033FF8832B6003B4 -S3154001B6809000400C9B336002821020018328400DBC -S3154001B690D2022008DA0320049A134001D026200C56 -S3154001B6A0D2262008F022600CDA23200410BFFF6462 -S3154001B6B0F022200810BFFFC08210200010BFFEFFFD -S3154001B6C09E03FFFFD006200CD20620089A142001C3 -S3154001B6D0940600108214A230D2222008D022600C97 -S3154001B6E0DA262004D420600CD42060089A12E001A6 -S3154001B6F0D622800BC222A008DA22A00410BFFED7B0 -S3154001B700C222A00CC203600482106001D006200C44 -S3154001B710D2062008C223600410BFFECFD2222008E1 -S3154001B720C20760F88200401180A640120280004F95 -S3154001B730C22760F8C205A22080A07FFF0280004593 -S3154001B740C20760F89A2640128200400DC22760F86F -S3154001B7509A8E600702800005A410200082102008FE -S3154001B760A420400DB20640129A0640119A0B6FFF73 -S3154001B770030000048220400DA404800190100013B0 -S3154001B7804000005C9210001280A23FFF2280003FE1 -S3154001B790A41020008222001990004012821722280C -S3154001B7A0DA0760F89A03401280A60001F220600889 -S3154001B7B0DA2760F8028000378212200180A5600FE7 -S3154001B7C038800005C22660048210200110BFFF9414 -S3154001B7D0C2266004C20620049A057FF4A80B7FF8AE -S3154001B7E08208600182104014C22620049A06001481 -S3154001B7F082102005C223600880A5200F18800027EB -S3154001B800C223600419100143DA0760F8C2032124F8 -S3154001B81080A3400138800002DA2321241910014314 -S3154001B820C203212080A3400138BFFF7DDA232120B6 -S3154001B83010BFFF7C821722289A102001C202E00421 -S3154001B8409B2B400C8210400D10BFFEF9C222E00432 -S3154001B85010BFFFC0F225A220C2046004822840091D -S3154001B86010BFFF30C2246004808E6FFF12BFFFB34A -S3154001B870C205A22090044014DA05E0088212200194 -S3154001B88010BFFFE1C223600410BFFFC3901000192F -S3154001B89010BFFFDDC2266004920620084000009ECC -S3154001B8A09010001310BFFFD9191001434000000B3F -S3154001B8B090100013B010200081C7E00881E8000015 -S3154001B8C011100141901222308213C0004000042A17 -S3154001B8D09E104000010000001110014190122230DB -S3154001B8E08213C0004000043C9E104000010000004D -S3154001B8F09DE3BF9821100144C02421A04000024984 -S3154001B9009010001980A23FFF12800006C20421A0B8 -S3154001B91080A060000280000301000000C2260000F2 -S3154001B92081C7E00891E800089DE3BF9823100143D1 -S3154001B930400004119014612C03100074E00061086A -S3154001B940D004214880A220002280002D9004214C61 -S3154001B950D602200480A2E01F1480001D01000000D1 -S3154001B96080A620001280000B94022088832AE002E0 -S3154001B9709A02E00182004008DA222004F22060089F -S3154001B980400004159014612C10800022B010200054 -S3154001B990821020019328400B992AE002DA02A10085 -S3154001B9A09A1340098203000AF6206080F422800C33 -S3154001B9B080A6200212BFFFEEDA22A100C202A10434 -S3154001B9C08210400910BFFFEAC222A1047FFFFDF2A7 -S3154001B9D09010219080A220000280000B961020003A -S3154001B9E0C2042148C2220000D0242148C02220049A -S3154001B9F0C022218810BFFFDBC022218C10BFFFD59A -S3154001BA00D0242148400003F49014612CB0103FFF2C -S3154001BA1081C7E00881E800009DE3BF987FFFFFA949 -S3154001BA209010001803100140A2106228DA04600841 -S3154001BA30C2036004A0087FFCB2240019B2066FEF6E -S3154001BA40B20E7000B20670009210200080A66FFF01 -S3154001BA500480000A901000187FFFFFA60100000035 -S3154001BA60C20460088200401080A04008922000195C -S3154001BA7002800005901000187FFFFF98B01020004B -S3154001BA80308000237FFFFF9B90100018822400190D -S3154001BA9080A23FFF821060019210200019100143DD -S3154001BAA00280000B90100018DA046008C22360047B -S3154001BAB0C20320F882204019901000187FFFFF87AB -S3154001BAC0C22320F810800012B01020017FFFFF89A9 -S3154001BAD00100000098100008D6046008A023000B5E -S3154001BAE09010001880A4200F04BFFFE4B214200177 -S3154001BAF003100140DA0062209A23000D031001432E -S3154001BB00DA2060F810BFFFDDF222E00481C7E008C9 -S3154001BB1081E800009DE3BF9880A660000280009DF9 -S3154001BB20A41000187FFFFF6790100018A0067FF849 -S3154001BB30D6042004900AFFFE19100140940400081F -S3154001BB40A2132228DA02A004C204600880A0400A97 -S3154001BB50028000449E0B7FFC808AE001DE22A00425 -S3154001BB601280000CB0102000F2067FF8A0240019C4 -S3154001BB7082046008DA04200880A340010280007D27 -S3154001BB8090020019D204200CDA226008D223600CFC -S3154001BB908202800FDA006004808B60011280000A05 -S3154001BBA08212200180A62000028000229002000F0E -S3154001BBB0DA02A008D202A00CDA226008D223600C75 -S3154001BBC082122001C224200480A6200002800005A2 -S3154001BBD0D0240008B01000127FFFFF4081E800002A -S3154001BBE080A221FF18800036973220099B3220031C -S3154001BBF098132228832B60039200400C9B336002EA -S3154001BC00821020018328400DD6026008DA03200401 -S3154001BC109A134001D224200CD6242008E022E00CBD -S3154001BC20DA232004E022600810BFFFECB0100012B6 -S3154001BC3003100140DA02A0088210623080A340015D -S3154001BC4032BFFFDED202A00CE023600CE023600885 -S3154001BC50DA242008DA24200C10BFFFDAB0102001C4 -S3154001BC60808AE001128000099002000FF2067FF8F7 -S3154001BC70A0240019D204200CD6042008D62260083C -S3154001BC8090020019D222E00C03100140DA0062242E -S3154001BC9098122001E024600880A2000D0ABFFFCF60 -S3154001BCA0D824200403100143D20061287FFFFF5BA3 -S3154001BCB0901000127FFFFF0981E8000080A2E0009A -S3154001BCC0028000169B3220038332200680A2E004C4 -S3154001BCD0088000129A00603880A2E0140880000FA4 -S3154001BCE09A02E05B8332200C80A2E0540880000B6C -S3154001BCF09A00606E8332200F80A2E15408800007CB -S3154001BD009A0060778332201280A2E55408800003AE -S3154001BD109A00607C9A10207E94132228832B60031C -S3154001BD209200400AD602600880A2C0090280001330 -S3154001BD3099336002C202E00482087FFC80A0400879 -S3154001BD4028800007D202E00CD602E00880A2C00992 -S3154001BD5032BFFFFAC202E004D202E00CD224200C28 -S3154001BD60D6242008E022E00C10BFFFB0E022600894 -S3154001BD7010BFFF88B01020019A102001C202A00412 -S3154001BD809B2B400C8210400D10BFFFF5C222A00430 -S3154001BD9081C7E00881E800009DE3BF98D2064000D4 -S3154001BDA080A2600012800004901000187FFFFF5AA5 -S3154001BDB081E800007FFFFFF9010000007FFFFF5689 -S3154001BDC081E80000010000009DE3BF980310014295 -S3154001BDD0DA0063F880A6000D0280004101000000F0 -S3154001BDE0D206204C80A260001280001CA0102000C8 -S3154001BDF0D206214880A260002280000FD20620543C -S3154001BE00A006214C80A240102280000BD20620546D -S3154001BE1010800005B2100009F20640007FFFFF3E88 -S3154001BE209010001880A4001912BFFFFC921000194F -S3154001BE30D206205480A26000128000250100000035 -S3154001BE40C206203880A06000028000250100000063 -S3154001BE5010800017C206203C832C2002F2024001CA -S3154001BE6080A660002280000BA004200192100019D8 -S3154001BE70F20640007FFFFF289010001880A6600060 -S3154001BE8012BFFFFC92100019D206204CA0042001DB -S3154001BE9080A4200E04BFFFF2832C20027FFFFF1EE9 -S3154001BEA09010001810BFFFD4D20621489FC0400011 -S3154001BEB090100018F20622E080A660000280000879 -S3154001BEC0010000007FFFFFB581E800007FFFFF1200 -S3154001BED09010001810BFFFDCC206203881C7E00869 -S3154001BEE081E800009DE3BF9880A620000280001DE6 -S3154001BEF003100142E406214880A4A00022800013D9 -S3154001BF00C206203CE204A004A2847FFF0C80000A02 -S3154001BF10832C600282004012A0006008C204000027 -S3154001BF209FC04000A0043FFCA2847FFF3CBFFFFDB1 -S3154001BF30C2040000E404800080A4A00032BFFFF3E5 -S3154001BF40E204A004C206203C80A0600002800007F3 -S3154001BF50010000009FC0400090100018308000038F -S3154001BF6010BFFFE5F00063F881C7E00881E80000F3 -S3154001BF701080000B86102000809240081680000831 -S3154001BF80861A400880924000168000048092000084 -S3154001BF901680000392200009902000089A924000E2 -S3154001BFA0128000059610000891D0200281C3E00856 -S3154001BFB09010000080A2C00D0A80009594100000E8 -S3154001BFC00302000080A2C0010A80002898100000E8 -S3154001BFD080A340011A80000D841020019B2B600430 -S3154001BFE010BFFFFC980320019A83400D1A80000779 -S3154001BFF08400A001832860049B3360019A034001B9 -S3154001C000108000078420A00180A3400B0ABFFFF7E0 -S3154001C01001000000028000020100000084A0A0018E -S3154001C02006800076010000009622C00D9410200182 -S3154001C0301080000A01000000952AA0010680000533 -S3154001C0409B3360019622C00D108000049402A0012A -S3154001C0509602C00D9422A00184A0A00116BFFFF74D -S3154001C0608092C000308000659B2B600480A3400B0A -S3154001C07008BFFFFE988320010280006598232001B6 -S3154001C0808092C000952AA0040680002F9B33600150 -S3154001C09096A2C00D068000179B33600196A2C00D83 -S3154001C0A00680000B9B33600196A2C00D06800005F9 -S3154001C0B09B33600196A2C00D108000509402A00FE0 -S3154001C0C09682C00D1080004D9402A00D9682C00D3F -S3154001C0D0068000059B33600196A2C00D1080004783 -S3154001C0E09402A00B9682C00D108000449402A009D0 -S3154001C0F09682C00D0680000B9B33600196A2C00D4F -S3154001C100068000059B33600196A2C00D1080003B5E -S3154001C1109402A0079682C00D108000389402A005B3 -S3154001C1209682C00D068000059B33600196A2C00D24 -S3154001C130108000329402A0039682C00D1080002F19 -S3154001C1409402A0019682C00D068000179B336001C0 -S3154001C15096A2C00D0680000B9B33600196A2C00DCE -S3154001C160068000059B33600196A2C00D1080002316 -S3154001C1709402BFFF9682C00D108000209402BFFD3D -S3154001C1809682C00D068000059B33600196A2C00DC4 -S3154001C1901080001A9402BFFB9682C00D10800017D2 -S3154001C1A09402BFF99682C00D0680000B9B33600155 -S3154001C1B096A2C00D068000059B33600196A2C00D74 -S3154001C1C01080000E9402BFF79682C00D1080000BBE -S3154001C1D09402BFF59682C00D068000059B3360012F -S3154001C1E096A2C00D108000059402BFF39682C00D41 -S3154001C1F0108000029402BFF198A3200116BFFFA24E -S3154001C2008092C000268000029422A0018090C00046 -S3154001C210268000029420000A81C3E0089010000A9B -S3154001C22019100144DA0321A480A36000128000069C -S3154001C23082034008031001449A1061B8DA2321A40D -S3154001C24082034008C22321A481C3E0089010000D57 -S3154001C250A7500000AE1000018334E00129100143CC -S3154001C260E805203CA92CC0148215000181E000009C -S3154001C2708190400001000000010000000100000023 -S3154001C280E03BA000E43BA008E83BA010EC3BA01833 -S3154001C290F03BA020F43BA028F83BA030FC3BA03863 -S3154001C2A081E800008210001781C4400081CC8000E3 -S3154001C2B0010000000100000001000000A75000003D -S3154001C2C0A92CE0012B100143EA05603CAB34C015B3 -S3154001C2D0AA154014819540000100000001000000AC -S3154001C2E00100000081E8000081E80000E01BA00099 -S3154001C2F0E41BA008E81BA010EC1BA018F01BA02013 -S3154001C300F41BA028F81BA030FC1BA03881E00000DC -S3154001C31081E0000081C4400081CC8000A75000002C -S3154001C32029100073ADC5208C010000002710014380 -S3154001C330A614E01CE024C000818C202001000000EE -S3154001C34001000000010000009DE3BFA09DE3BFA0E6 -S3154001C3509DE3BFA09DE3BFA09DE3BFA09DE3BFA01A -S3154001C3609DE3BFA081E8000081E8000081E800006C -S3154001C37081E8000081E8000081E8000081E80000D2 -S3154001C38027100143A614E01CC024C000E203A068A4 -S3154001C390A4046004E223A064E423A068108002623E -S3154001C3A0AC10000029100143A8152000C225200029 -S3154001C3B0C8252004E0252010E2252014E425201874 -S3154001C3C0E825201C81E800008348000082106F00A8 -S3154001C3D0818860200100000001000000010000008A -S3154001C3E009100143C801203C81E000008821200159 -S3154001C3F080A920FF02800003010000000100000027 -S3154001C40080A1000012BFFFF901000000091001439D -S3154001C410C801203C81E8000080A920FF028000037A -S3154001C42001000000010000008821200180A10000D8 -S3154001C43012BFFFF90100000081E00000291001430D -S3154001C440A8152000C8052004C2052000E0052010DB -S3154001C450E2052014E4052018C025201C818C20000B -S3154001C46001000000010000000100000081C48000BD -S3154001C47081CCA004A0142F00818C00000100000093 -S3154001C480010000000100000081C4800081CCA004AD -S3154001C49080A6600212800005A8142F00818D00003D -S3154001C4A0B01420203080001F80A660031280000651 -S3154001C4B0A80E2F00AA2C2F00A8154014818D00002C -S3154001C4C03080001880A6600412800008A948000048 -S3154001C4D0A8152040818D00000100000001000000E8 -S3154001C4E0010000003080000F80A660051280000820 -S3154001C4F0A9480000A82D2040818D000001000000C0 -S3154001C50001000000010000003080000680A66006A0 -S3154001C510128000030100000030BFFFA391D020002C -S3154001C52081C4800081CCA0049210200381C3E0081D -S3154001C53091D020029210200281C3E00891D02002BE -S3154001C5409210200681C3E00891D0200281C3E00801 -S3154001C5500100000081C3E0080100000081C3E0083A -S3154001C56001000000AE25A010A75000002D1000715B -S3154001C570AC15A1782910007381C522340100000051 -S3154001C5801110014390122028D2020000920260014C -S3154001C590D2220000932DE008902C2F009212000920 -S3154001C5A01110014390122020D002000080A0000803 -S3154001C5B02280000292126F00818A602001000000F1 -S3154001C5C001000000010000009010001740000031FA -S3154001C5D09203A06092142F00818A6020010000001E -S3154001C5E001000000010000001110014390122028B3 -S3154001C5F0D202000092226001D22200001080022D58 -S3154001C600AC1000001B1001449A136030912A20029D -S3154001C610C2034008C222600C81C3E008D22340080D -S3154001C6209DE3BF980310014482106030992E600249 -S3154001C6301B100143972E6004D800400C9A136230B8 -S3154001C640901000199202C00D80A6601F1480000F41 -S3154001C650821020001080000680A320002280000A5C -S3154001C660C2024000D803200C80A3200012BFFFFC69 -S3154001C67080A300097FFFFFE4F02240001080000301 -S3154001C68082102000F022400081C7E00891E80001B5 -S3154001C6909DE3BF981B1001438213602CD8006004B0 -S3154001C6A080A3001802800044C203602C80A62000AB -S3154001C6B022800002B010000C03100144A32E200278 -S3154001C6C082106030E000401180A420000280003DCD -S3154001C6D00310014310800012A41061ACD20420085B -S3154001C6E0941000199FC300009010001803100143D5 -S3154001C6F0C20061A480A060001280002B01000000EE -S3154001C700C204801182007FFFC2248011E004200C04 -S3154001C71080A420000280002B01000000D804000004 -S3154001C72080A3200022BFFFFBE004200C031001433D -S3154001C730DA00622C80A36000128000089610001275 -S3154001C74003100143821061ACDA00401180A36000FE -S3154001C75032BFFFF0E004200CDA02C011031001439E -S3154001C7609A036001C20061A880A0600002BFFFDC9D -S3154001C770DA22C0119FC0400001000000D804000029 -S3154001C780D2042008941000199FC30000901000188D -S3154001C79003100143C20061A480A0600022BFFFDAFA -S3154001C7A0C20480119FC040000100000010BFFFD6A7 -S3154001C7B0C2048011DA0060C010BFFFBDB00B601F1C -S3154001C7C081C7E00881E800008C10000FA7480000EF -S3154001C7D08B34E0188A09600F80A160030280000C47 -S3154001C7E00B1001438A116034092000008811207022 -S3154001C7F0C82140000B1001438A11605009200000F6 -S3154001C80088112040C8214000108000399010200135 -S3154001C81092102006400001DD0100000080A00008C2 -S3154001C8200280003301000000C2022010113FFC00CB -S3154001C83082084008110003FC841040089010000251 -S3154001C840921020019410200C400001E601000000E6 -S3154001C85080A000080280002601000000400001F689 -S3154001C860921000010B1001438A116034D22140001D -S3154001C870901000029210200194102011400001D91D -S3154001C8800100000080A0000802800019010000009C -S3154001C890400001E992100001920260100B10014321 -S3154001C8A08A116050D221400090100002921020015E -S3154001C8B09410200D400001CB0100000080A000082B -S3154001C8C00280000B01000000400001DB92100001D4 -S3154001C8D00B1001438A11602CD2214000D402601012 -S3154001C8E09532A010940AA00FD42160049E10000630 -S3154001C8F081C3E00801000000031001438210604833 -S3154001C9008210200191D0200081C3E008010000007F -S3154001C9109DE3BF9803100144C20060CC90100018FB -S3154001C9209210001980A0600002800005B01020001E -S3154001C9309FC0400001000000B010000881C7E00818 -S3154001C94081E800009DE3BF9803100144C20060C81E -S3154001C9509010001880A0600002800005B0102000F1 -S3154001C9609FC0400001000000B010000881C7E008E8 -S3154001C97081E800009DE3BF9803100144C20060C0F6 -S3154001C9809010001880A0600002800005B0102000C1 -S3154001C9909FC0400001000000B010000881C7E008B8 -S3154001C9A081E800009DE3BF9803100144C20060C4C2 -S3154001C9B09010001880A0600002800005B010200091 -S3154001C9C09FC0400001000000B010000881C7E00888 -S3154001C9D081E800009DE3BF9803100144C20060BC9A -S3154001C9E09010001880A0600002800005B010200061 -S3154001C9F09FC0400001000000B010000881C7E00858 -S3154001CA0081E800009DE3BF9803100144C20060B86D -S3154001CA109010001880A0600002800005B010200030 -S3154001CA209FC0400001000000B010000881C7E00827 -S3154001CA3081E800009DE3BF9803100144C20060B441 -S3154001CA409010001880A0600002800005B010200000 -S3154001CA509FC0400001000000B010000881C7E008F7 -S3154001CA6081E800009DE3BF9803100144C20060B015 -S3154001CA70901000189210001980A0600002800005F5 -S3154001CA80B01020009FC0400001000000B010000817 +S31540013B60010000000100000001000000010000000A +S31540013B7001000000010000000100000001000000FA +S31540013B8001000000010000000100000001000000EA +S31540013B9001000000010000000100000001000000DA +S31540013BA00000000080A5C00012BFFFE6AA0560081C +S31540013BB0C12D0000E60500002B03C000A614C01568 +S31540013BC0E6250000C10D000081C4400081CC800083 +S31540013BD00100000081C4800081CCA00401000000E6 +S31540013BE00100000081C3E008915800000100000077 +S31540013BF011100080901220F8C10A0000C022000076 +S31540013C00C10A0000C12A0000D4020000130003804B +S31540013C10942A800980A0000A3280004D901020032A +S31540013C201303E000D223BFA0C023BFA4C10BBFA092 +S31540013C30C023BFA0151000809412A0E8C1028000E5 +S31540013C400100000001000000C10BBFA0C10BBFA4D1 +S31540013C5083A00520C12BBFA0D003BFA0808A22002C +S31540013C602280003B90102004901020001510008007 +S31540013C709412A108C5028000C902A008D102A00C75 +S31540013C8013100080921260E8C70240008DA089445B +S31540013C9081A98AC8010000000380000501000000D7 +S31540013CA0901020011080002A01000000C50280000A +S31540013CB0C902A008D102A00C13100080921260E83C +S31540013CC0CB0240008DA0894481A98AC80100000029 +S31540013CD00380000501000000901020011080001CA7 +S31540013CE00100000025100080A414A0F0C11C800032 +S31540013CF0C51C800080A000003280000685A008C057 +S31540013D0081A80AC2010000001380000301000000DF +S31540013D10901020050100000025100080A414A0F099 +S31540013D20C11C8000C51C800080A00000010000006D +S31540013D303280000685A008C081A80AC201000000A1 +S31540013D4013800003010000009010200701000000CD +S31540013D5081C3E00801000000901020019544000055 +S31540013D609532A01E940AA00380A2800002800040E2 +S31540013D709010200080A2A0021680003D1310008002 +S31540013D8092126198C11A4000C51A6008FD02601876 +S31540013D9095A0003E99A0003E9DA0003E170000C0A0 +S31540013DA09612E078A182C0000100000001000000E7 +S31540013DB001000000010000000100000001000000B8 +S31540013DC081A0002083A0002195A0002A99A0002C63 +S31540013DD09DA0002E170000C09612E07CA182C00073 +S31540013DE00100000001000000010000000100000088 +S31540013DF0010000000100000085A0002287A00023E9 +S31540013E00A180000001000000010000000100000047 +S31540013E1001000000010000000100000089A00842E5 +S31540013E20A9A2883ED93A4000DD224000CD1A601051 +S31540013E30D102600881A90A46010000000380000CF6 +S31540013E4081AD0A2801000000038000099344000067 +S31540013E509332601B920A60079010200080A2A00155 +S31540013E6002800003902260079022600481C3E0082B +S31540013E7001000000C12BBFA081C3E008D003BFA051 +S31540013E80D023BFA081C3E008C10BBFA00100000041 +S31540013E909DE3BF6040001B94B0102000833A200A86 +S31540013EA08208600380A060010280000401000000D6 +S31540013EB081C7E00881E800007FFFB4D89010200D4B +S31540013EC0050C40290723CD1B8410A0068610E09BD4 +S31540013ED0C027BFF0C027BFF4C43FBFF8C027BFD03B +S31540013EE0C027BFD4C027BFC87FFFFF3FC027BFCC75 +S31540013EF0820A300082106080840060040728040032 +S31540013F008610E00F0910004EC6204000881122C0DD +S31540013F10071000008821000289392002861100031A +S31540013F20C62060042510008003278400821060109B +S31540013F307FFFFED0C220A0047FFFFFD21103E00025 +S31540013F4090102000C024A1687FFFFDD00100000031 +S31540013F50809200091280000601000000C204A16897 +S31540013F6080A0600002800004010000007FFFB4B21F +S31540013F709010200B7FFFFDC590103FFA03300600DD +S31540013F8080A2000102800CF880A260007FFFB4AAE3 +S31540013F909010200B7FFFFDBD9010201403100D00E3 +S31540013FA080A200010280113680A260007FFFB4A288 +S31540013FB09010200B7FFFFDB5901020620310162054 +S31540013FC080A200010280112780A260007FFFB49A7F +S31540013FD09010200B7FFFFDB590102005031028009F +S31540013FE080A2000112800CB501000000C204A16844 +S31540013FF080A0600012800CB1010000007FFFFFA18C +S315400140001103C000111C00007FFFFDB0921020007B +S31540014010031FFFFF821063FF80A200011280000B85 +S3154001402001000000C404A168030000708210601FF3 +S3154001403084088001030000108210601080A0800176 +S3154001404002800005113C00007FFFB47B9010200CDC +S31540014050113C00007FFFFD9D9210200003200000CF +S3154001406080A200011280000B01000000C404A16877 +S31540014070030000708210601F840880010300001055 +S315400140808210601080A080010280000401000000BF +S315400140907FFFB4699010200CC024A16890102000C5 +S315400140A07FFFFD8A9210200080A220001280000628 +S315400140B003100080C200616880A060000280000594 +S315400140C0110144007FFFB45C9010200C11014400A3 +S315400140D013284000901223027FFFFD7C921260015B +S315400140E080A220001280000601000000C204A168DF +S315400140F080A06000228000051111FFFF7FFFB44EB2 +S315400141009010200C1111FFFF7FFFFD78901223FFC5 +S315400141100300007F821063FF80A2000112800C63BE +S3154001412001000000C204A16880A0600012800C5FFB +S3154001413001000000271000807FFFFD64D01CE1E0F4 +S31540014140031FFFFF821063FF80A200011280000B54 +S3154001415001000000C404A168030000708210601FC2 +S3154001416084088001030000108210601080A0800145 +S3154001417002800005351000807FFFB42F9010200C7F +S3154001418035100080D01EA1D0C024A1687FFFFD4F0D +S31540014190010000000320000080A200011280000BF4 +S315400141A003100080C4006168030000708210601F24 +S315400141B084088001030000108210601080A08001F5 +S315400141C0028000052B1000807FFFB41B9010200C4D +S315400141D02B100080D01D61F0C024A1687FFFFD3BFC +S315400141E001000000031FFFFF821063FF80A2000150 +S315400141F01280000B03100080C40061680300007048 +S315400142008210601F84088001030000108210601034 +S3154001421080A08001028000052F1000807FFFB40638 +S315400142209010200C2F100080D01DE1B8C024A16849 +S315400142307FFFFD2601000000C204A1688330600EA5 +S315400142408208600380A06002028000040100000031 +S315400142507FFFB3F99010200C7FFFFF0A1103C000C6 +S3154001426011115804C024A1687FFFFD289012223401 +S3154001427003102B008210624680A200010280107159 +S31540014280032000007FFFB3EC9010200D113C02AFDC +S315400142907FFFFD1E901220D1033180558210639A13 +S315400142A080A200010280105F030800007FFFB3E295 +S315400142B09010200D1111FC007FFFFD1C9210200073 +S315400142C0031FE00080A200011280000B01000000E4 +S315400142D0C404A168030000708210601F8408800135 +S315400142E0030000108210600880A080010280000453 +S315400142F0010000007FFFB3D09010200DC024A168BB +S3154001430011207C01130001007FFFFD08901220302F +S315400143100320000080A200011280000B03100080E0 +S31540014320C4006168030000708210601F8408800128 +S31540014330030000108210600480A080010280000406 +S31540014340010000007FFFB3BC9010200DC024A1687E +S31540014350901020007FFFFCF59210200080A22000E3 +S315400143601280000603100080C200616880A06000D0 +S3154001437002800004010000007FFFB3AF9010200DC2 +S315400143807FFFFCEAD01CE1E003100080C20061E837 +S3154001439080A2000112800BC101000000C204A16885 +S315400143A080A0600012800BBD010000003710008024 +S315400143B07FFFFCDED01EE1D8031FE00080A2000192 +S315400143C012800BB301000000C204A16880A0600006 +S315400143D012800BAF010000007FFFFCD4D01D61F0BD +S315400143E003100080C200620080A200011280000B0F +S315400143F001000000C404A168030000708210601F20 +S3154001440084088001030000108210601080A08001A2 +S3154001441002800005D01DE1B87FFFB3879010200DC3 +S31540014420D01DE1B8C024A1687FFFFCC00100000097 +S31540014430C204A1688330600E8208600380A06002D6 +S3154001444002800004010000007FFFB37B9010200D25 +S315400144507FFFFE8C1103E0002108C6AFC024A1688E +S31540014460901420DE7FFFFCB9A01420DE80A200104C +S3154001447012800B8303100080C200616880A0600037 +S3154001448012800B7F010000002108C6AF901420DE88 +S315400144907FFFFCBEA01420DE80A2001012800B74A8 +S315400144A001000000C204A16880A0600012800B7068 +S315400144B0010000001128C6AF7FFFFCB4901220DE38 +S315400144C00308C6AF821060DE80A2000112800B6431 +S315400144D001000000C204A16880A0600012800B6048 +S315400144E0010000001108C6AF7FFFFCA0901220DE3C +S315400144F00328C6AF821060DE80A2000112800B54F1 +S3154001450001000000C204A16880A0600012800B5027 +S31540014510010000001128C6AF7FFFFC94901220DEF7 +S315400145200308C6AF821060DE80A2000112800B45EF +S3154001453001000000C204A16880A0600012800B4106 +S31540014540010000007FFFFE4F1103E00011151BC063 +S315400145501310C821901221039212614115351BC0D7 +S315400145601710C8219412A1037FFFFC909612E141D6 +S3154001457080A2200212800B2B01000000C204A16818 +S3154001458080A0600012800B270100000011351BC07E +S315400145901310C821901221039212614115151BC0B7 +S315400145A01710C8219412A1037FFFFC809612E141A6 +S315400145B080A2200112800B1F01000000C204A168E5 +S315400145C080A0600012800B1B0100000090102000AB +S315400145D092102000152000007FFFFC7496102000E9 +S315400145E080A220001280000601000000C204A168DA +S315400145F080A0600002800005D01EE1D87FFFB30E87 +S315400146009010200FD01EE1D87FFFFC68D41EA1D0A8 +S3154001461080A2200212800AFF01000000C204A168A4 +S3154001462080A0600012800AFB0100000011151BC02A +S315400146301310C821901221039212614115151BE8EE +S315400146401710C8219412A1037FFFFC589612E1412D +S3154001465080A2200112800AEB01000000C204A16879 +S3154001466080A0600012800AE70100000011151BE8D6 +S315400146701310C821901221039212614115151BC0D6 +S315400146801710C8219412A1037FFFFC489612E141FD +S3154001469080A2200212800AD701000000C204A1684C +S315400146A080A0600012800AD301000000D41CE1E022 +S315400146B011151BE81310C821901221037FFFFC3B03 +S315400146C09212614180A2200312800AC601000000B5 +S315400146D0C204A16880A0600012800AC201000000E5 +S315400146E0D41D61F011151BE81310C8219012210346 +S315400146F07FFFFC2E9212614180A220031280000BA3 +S3154001470001000000C404A168030000708210601F0C +S3154001471084088001030000108210601080A080018F +S3154001472002800005D41DE1B87FFFB2C39010200F6F +S31540014730D41DE1B8C024A16811151BE81310C82186 +S31540014740901221037FFFFC199212614180A220023F +S3154001475012800AA003100080C200616880A0600038 +S3154001476012800A9C01000000D01DE1B815151BE816 +S315400147701710C8219412A1037FFFFC0C9612E14148 +S3154001478080A2200112800A8B01000000C204A168A8 +S3154001479080A0600012800A8701000000D01CE1E081 +S315400147A015151BE81710C8219412A1037FFFFBFFC3 +S315400147B09612E14180A2200312800A820100000084 +S315400147C0C204A16880A0600012800A7E0100000038 +S315400147D0D01D61F015151BE81710C8219412A103CD +S315400147E07FFFFBF29612E14180A220031280000B6B +S315400147F001000000C404A168030000708210601F1C +S3154001480084088001030000108210601080A080019E +S3154001481002800004010000007FFFB2879010200F44 +S31540014820C024A16811151BC01310C8219012210381 +S315400148309212614115351BC01710C8219412A1036C +S315400148407FFFFBED9612E14180A2200212800A55BC +S3154001485003100080C200616880A0600012800A5186 +S315400148600100000011351BC01310C821901221030D +S315400148709212614115151BC01710C8219412A1034C +S315400148807FFFFBDD9612E14180A2200112800A41A1 +S3154001489001000000C204A16880A0600012800A3DA8 +S315400148A00100000090102000921020001520000009 +S315400148B07FFFFBD19610200080A2200012800006C7 +S315400148C001000000C204A16880A0600002800005CA +S315400148D0D01EE1D87FFFB2589010200FD01EE1D8EC +S315400148E07FFFFBC5D41EA1D080A2200212800A25DB +S315400148F001000000C204A16880A0600012800A2164 +S315400149000100000011151BC01310C821901221038C +S315400149109212614115151BE81710C8219412A10383 +S315400149207FFFFBB59612E14180A2200112800A1158 +S3154001493001000000C204A16880A0600012800A0D37 +S315400149400100000011151BE81310C8219012210324 +S315400149509212614115151BC01710C8219412A1036B +S315400149607FFFFBA59612E14180A22002128009FD3C +S3154001497001000000C204A16880A06000128009F90C +S3154001498001000000D41CE1E011151BE81310C821F9 +S31540014990901221037FFFFB989212614180A220036E +S315400149A01280000B01000000C404A16803000070DE +S315400149B08210601F8408800103000010821060107D +S315400149C080A0800102800005D41D61F07FFFB21AEC +S315400149D09010200FD41D61F011151BE81310C8214A +S315400149E0901221037FFFFB849212614180A2200332 +S315400149F01280000B01000000C404A168030000708E +S31540014A008210601F8408800103000010821060102C +S31540014A1080A0800102800005D41DE1B87FFFB20667 +S31540014A209010200FD41DE1B8C024A16811151BE8D0 +S31540014A301310C821901221037FFFFB6F921261412F +S31540014A4080A22002128009BF03100080C200616863 +S31540014A5080A06000128009BB01000000D01DE1B8B2 +S31540014A6015151BE81710C8219412A1037FFFFB629D +S31540014A709612E14180A22001128009B60100000090 +S31540014A80C204A16880A06000128009B20100000042 +S31540014A90D01CE1E015151BE81710C8219412A1039B +S31540014AA07FFFFB559612E14180A220031280000B45 +S31540014AB001000000C404A168030000708210601F59 +S31540014AC084088001030000108210601080A08001DC +S31540014AD002800005D01D61F07FFFB1D79010200FF5 +S31540014AE0D01D61F015151BE81710C8219412A103BA +S31540014AF07FFFFB419612E14180A220031280000B09 +S31540014B0001000000C404A168030000708210601F08 +S31540014B1084088001030000108210601080A080018B +S31540014B2002800004010000007FFFB1C39010200FF6 +S31540014B30C024A168110048EA13048D15901223CDB3 +S31540014B407FFFFB3E9212627880A220011280097992 +S31540014B5003100080C200616880A060001280097560 +S31540014B6001000000110048EA13048D15901223CD6F +S31540014B707FFFFB439212627880A220011280096A6C +S31540014B8001000000C204A16880A06000128009668D +S31540014B9001000000C024A1687FFFFCBA1103C000D8 +S31540014BA023100124A807BFF8BA07BFD090100014FC +S31540014BB09210001D7FFFFA6C94146158C20461582B +S31540014BC0C407BFF880A0800102800E0CA014615872 +S31540014BD07FFFB199901020102D1000809010001485 +S31540014BE09215A1C87FFFFA6094146158C4046158B4 +S31540014BF0C205A1C880A0800122800DF6C40420040C +S31540014C007FFFB18D90102010901000149214E1E0B6 +S31540014C107FFFFA5594146158C4046158C204E1E017 +S31540014C2080A0800102800DE1B214E1E07FFFB182F4 +S31540014C309010201090100014921561F07FFFFA4AEF +S31540014C4094146158C404A168030000708210601F67 +S31540014C5084088001030000108210601080A080014A +S31540014C6002800004010000007FFFB1739010201004 +S31540014C70C024A1687FFFFC8390102000901000148F +S31540014C80921561F07FFFFA3894146158391000800B +S31540014C90C4046158C20721F880A0800122800DBD5D +S31540014CA0C40420047FFFB164901020107FFFFC757F +S31540014CB01103C000901000149215E1B87FFFFA2A43 +S31540014CC094146158C204A1688330600E820860035F +S31540014CD080A0600202800004010000007FFFB156FF +S31540014CE090102010C024A1689010001D921000144D +S31540014CF07FFFFA1D94146158C4046158C207BFF876 +S31540014D0080A0800122800D9AC40420047FFFB14A0D +S31540014D10901020109010001D9215A1C87FFFFA1225 +S31540014D2094146158C4046158C205A1C880A0800189 +S31540014D3022800D84C40420047FFFB13F90102010CF +S31540014D409010001D9214E1E07FFFFA079414615818 +S31540014D50C4046158C204E1E080A0800122800D7044 +S31540014D60C40420047FFFB134901020109010001D20 +S31540014D70921561F07FFFF9FC94146158C404A1684F +S31540014D80030000708210601F840880010300001038 +S31540014D908210601080A080010280000401000000A2 +S31540014DA07FFFB125901020107FFFFC369010200028 +S31540014DB09010001D921561F07FFFF9EB9414615834 +S31540014DC0C4046158C20721F880A0800122800D4D9C +S31540014DD0C40420047FFFB118901020107FFFFC29E6 +S31540014DE01103C0009010001D9215E1B87FFFF9DE56 +S31540014DF094146158C204A1688330600E820860032E +S31540014E0080A0600202800004010000007FFFB10A19 +S31540014E1090102010C024A1689015A1C892100014CA +S31540014E207FFFF9D194146158C4046158C205A1C8E1 +S31540014E3080A0800122800D28C40420047FFFB0FE9B +S31540014E40901020109015A1C89210001D7FFFF9C641 +S31540014E5094146158C4046158C205A1C880A0800158 +S31540014E6022800D12C40420047FFFB0F3901020105D +S31540014E709016E1D8941461587FFFF9BB921000084F +S31540014E80C4046158C206E1D880A0800122800CFC8E +S31540014E90C40420047FFFB0E8901020109016A1D0E2 +S31540014EA0941461587FFFF9B092100008C404615808 +S31540014EB0C206A1D080A0800122800CE6C404200451 +S31540014EC07FFFB0DD901020109016A1D09216E1D848 +S31540014ED07FFFF9A594146158C404A16803000070CA +S31540014EE08210601F84088001030000108210601048 +S31540014EF080A0800102800004010000007FFFB0CE47 +S31540014F00901020107FFFFBDF901020009016A1D05B +S31540014F109216E1D87FFFF99494146158C4046158FC +S31540014F20C20721F880A0800122800CC3C40420045A +S31540014F307FFFB0C1901020107FFFFBD21103C0004C +S31540014F409016E1D8C024A1689216A1D07FFFF986B8 +S31540014F5094146158C4046158C20721F880A08001A5 +S31540014F6022800CA4C40420047FFFB0B3901020100B +S31540014F709015A1C89215E1B87FFFF97B9414615849 +S31540014F80C204A1688330600E8208600380A060027B +S31540014F9002800004010000007FFFB0A7901020109E +S31540014FA0C024A1689014E1E0921000147FFFF96ECD +S31540014FB094146158C4046158C204E1E080A08001A0 +S31540014FC022800C83C40420047FFFB09B90102010E4 +S31540014FD09014E1E09210001D7FFFF963941461582B +S31540014FE0C4046158C204E1E080A0800122800C6FB4 +S31540014FF0C40420047FFFB090901020109014E1E08B +S315400150009215A1C87FFFF95894146158C404615898 +S31540015010C204E1E080A0800122800C5BC40420042C +S315400150207FFFB085901020109014E1E094146158F0 +S315400150307FFFF94D92100008C4046158C204E1E0B3 +S3154001504080A0800122800C47C40420047FFFB07AEF +S31540015050901020109014E1E0921561F07FFFF94223 +S3154001506094146158C404A168030000708210601F43 +S3154001507084088001030000108210601080A0800126 +S3154001508002800004010000007FFFB06B90102010E9 +S31540015090C024A168901561F0921000147FFFF93287 +S315400150A094146158C404A168030000708210601F03 +S315400150B084088001030000108210601080A08001E6 +S315400150C002800004010000007FFFB05B90102010B9 +S315400150D0C024A168901561F09210001D7FFFF9224E +S315400150E094146158C404A168030000708210601FC3 +S315400150F084088001030000108210601080A08001A6 +S3154001510002800004010000007FFFB04B9010201088 +S31540015110C024A168901561F09215A1C87FFFF912CC +S3154001512094146158C404A168030000708210601F82 +S3154001513084088001030000108210601080A0800165 +S3154001514002800004010000007FFFB03B9010201058 +S31540015150C024A168901561F09214E1E07FFFF90245 +S3154001516094146158C404A168030000708210601F42 +S3154001517084088001030000108210601080A0800125 +S3154001518002800005901561F07FFFB02B9010201032 +S31540015190901561F0C024A168941461587FFFF8F21C +S315400151A092100008C404A168030000708210601FB9 +S315400151B084088001030000108210601080A08001E5 +S315400151C002800004010000007FFFB01B90102010F8 +S315400151D0C024A168901561F09215E1B87FFFF8E20D +S315400151E094146158C204A1688330600E820860033A +S315400151F080A0600202800004010000007FFFB00E23 +S31540015200901020107FFFFB1F1103C0000310008088 +S31540015210C024A1688210633010800009B0102000BC +S315400152207FFFB00590102010C207BFC4B006200111 +S3154001523080A6200D0280002282006018852E200360 +S31540015240912E200590220002051000808410A32093 +S31540015250C227BFC490008008932E20011510012457 +S31540015260920240189412A15892026001932A600357 +S315400152707FFFF8BD92008009C207BFC4C600400047 +S31540015280C404000080A0C00232BFFFE6C227BFC4EB +S31540015290C60060040910012488112158C401200464 +S315400152A080A0C00232BFFFDFC227BFC4B0062001C3 +S315400152B080A6200D12BFFFE282006018C204A168D9 +S315400152C080A0600012800BA3010000001110008134 +S315400152D094146158901220587FFFF8A39202200837 +S315400152E00310008082106320C4006148C2046158E3 +S315400152F080A0800102800B86071000807FFFAFCE21 +S315400153009010201011100081941461589012207051 +S315400153107FFFF8959202200809100080C204615867 +S3154001532088112320C401216080A0800122800B695D +S31540015330C40121647FFFAFC090102010111000817D +S3154001534094146158901220887FFFF88792022008B2 +S315400153500310008082106320C4006178C204615842 +S3154001536080A0800102800B4B071000807FFFAFB207 +S3154001537090102010C024A168111000009210200046 +S31540015380150FFC007FFFF94F96102000030FFC001C +S3154001539080A2000102800B3880A260007FFFAFA689 +S315400153A0901020101110000092102000152FFC00C3 +S315400153B07FFFF944961020000310020080A20001ED +S315400153C002800B2680A260007FFFAF9B90102010C9 +S315400153D01130000092102000150FFC007FFFF939B3 +S315400153E0961020000330020080A2000102800B14B7 +S315400153F080A260007FFFAF90901020101130000016 +S3154001540092102000152FFC007FFFF92E96102000E8 +S31540015410032FFC0080A2000102800B0280A26000E3 +S315400154207FFFAF8590102010111000007FFFF92FEC +S31540015430130FE0000310100080A20001128007B68E +S3154001544001000000C204A16880A06000128007B27A +S3154001545001000000111000007FFFF92E130FE0003C +S31540015460030FE00080A20001128007A7010000009F +S31540015470C204A16880A06000128007A30100000059 +S3154001548009100080C024A16890100014941461583A +S315400154907FFFF848921121C0C4046158C206A1D0C9 +S315400154A080A0800122800ACFC40420047FFFAF621E +S315400154B090102011C024A168901000149216E1D8D2 +S315400154C07FFFF83C94146158C4046158C207BFC8B1 +S315400154D080A0800122800ABAC40420047FFFAF560F +S315400154E090102011901000149214E1E07FFFF831E2 +S315400154F094146158C4046158C204E1E080A080015B +S3154001550022800AA6C40420047FFFAF4B90102011CD +S3154001551090100014921561F07FFFF826941461589B +S31540015520C4046158C20721F880A0800122800A8AFA +S31540015530C40420047FFFAF40901020119010001446 +S315400155409215E1B87FFFF81B94146158030000706F +S31540015550C404A168840880010300002080A0800162 +S3154001556002800004010000007FFFAF33901020113C +S31540015570C024A1689010001D921000147FFFF80D01 +S3154001558094146158C4046158C207BFD080A08001F9 +S3154001559022800A68C40420047FFFAF27901020119F +S315400155A0031000809207BFC8901061C07FFFF801C9 +S315400155B094146158C4046158C20721F880A080013F +S315400155C022800A4CC40420047FFFAF1B9010201197 +S315400155D009100080C024A168901121C09216E1D81B +S315400155E07FFFF7F494146158C40461580710008092 +S315400155F0C200E1C080A0800122800A34C404200494 +S315400156007FFFAF0D901020119010001D9214E1E024 +S315400156107FFFF7E894146158C4046158C204E1E07D +S3154001562080A0800122800A20C40420047FFFAF02AB +S31540015630901020079010001D921561F07FFFF7DD55 +S3154001564094146158C404A168030000708210601F5D +S3154001565084088001030000108210601080A0800140 +S3154001566002800004010000007FFFAEF3901020117C +S31540015670C024A1689010001D9215E1B87FFFF7CDB7 +S315400156809414615803000070C404A1688408800121 +S315400156900300002080A08001028000040100000078 +S315400156A07FFFAEE590102011C024A1689016A1D0CD +S315400156B0921000147FFFF7BF94146158C4046158D7 +S315400156C0C206A1D080A08001228009ECC404200436 +S315400156D07FFFAED990102011091000809016A1D0FD +S315400156E0921121C07FFFF7B394146158C4046158E5 +S315400156F0C206E1D880A08001228009D5C4042004D5 +S315400157007FFFAECD901020119015A1C89414615819 +S315400157107FFFF7A892100008C4046158C20721F818 +S3154001572080A08001228009BAC40420047FFFAEC252 +S3154001573090102011C024A1689015A1C89214E1E0EF +S315400157407FFFF79C94146158C4046158C204E1E098 +S3154001575080A08001228009A5C40420047FFFAEB643 +S31540015760901020119015A1C8921561F07FFFF79115 +S3154001577094146158C4046158C20721F880A080017D +S315400157802280098AC40420047FFFAEAB9010201109 +S31540015790C024A1689015A1C89215E1B87FFFF7858D +S315400157A09414615803000070C404A1688408800100 +S315400157B00300002080A08001028000040100000057 +S315400157C07FFFAE9D90102011C024A1689014E1E0A6 +S315400157D0921000147FFFF77794146158C4046158FE +S315400157E0C204E1E080A0800122800967C40420044C +S315400157F07FFFAE91901020119014E1E09210001DB0 +S315400158007FFFF76C94146158C4046158C204E1E007 +S3154001581080A0800122800953C40420047FFFAE8604 +S31540015820901020119014E1E09215A1C87FFFF76115 +S3154001583094146158C4046158C204E1E080A0800117 +S315400158402280093FC40420047FFFAE7B90102011C3 +S315400158509014E1E0941461587FFFF75692100008C6 +S31540015860C4046158C204E1E080A080012280092B72 +S31540015870C40420047FFFAE70901020119014E1E023 +S31540015880921561F07FFFF74B94146158C404615837 +S31540015890C20721F880A080012280090FC404200498 +S315400158A07FFFAE65901020119014E1E09215E1B8AA +S315400158B07FFFF7409414615803000070C404A16847 +S315400158C0840880010300002080A080010280000539 +S315400158D0901561F07FFFAE5890102011901561F040 +S315400158E0921000147FFFF73394146158C404A168E1 +S315400158F0030000708210601F8408800103000010BD +S315400159008210601080A08001028000040100000026 +S315400159107FFFAE4990102011C024A168901561F017 +S315400159209210001D7FFFF72394146158C404A168A7 +S31540015930030000708210601F84088001030000107C +S315400159408210601080A080010280000401000000E6 +S315400159507FFFAE3990102011C024A168901561F0E7 +S315400159609215A1C87FFFF71394146158C404A16826 +S31540015970030000708210601F84088001030000103C +S315400159808210601080A080010280000401000000A6 +S315400159907FFFAE2990102011C024A168901561F0B7 +S315400159A09214E1E07FFFF70394146158C404A1689F +S315400159B0030000708210601F8408800103000010FC +S315400159C08210601080A0800102800005901561F070 +S315400159D07FFFAE1990102011901561F0C024A16887 +S315400159E0941461587FFFF6F392100008C404A1682D +S315400159F0030000708210601F8408800103000010BC +S31540015A008210601080A08001028000040100000025 +S31540015A107FFFAE0990102011C024A168901561F056 +S31540015A209215E1B87FFFF6E39414615803000070C4 +S31540015A30C404A168840880010300002080A080017D +S31540015A4002800005051FC0007FFFADFB90102011AD +S31540015A50051FC0000700C0008410A1028610E0B0F7 +S31540015A60C024A168B007BFE0C43FBFE805203E831C +S31540015A70070021C88410A3FF8610E3A19007BFE861 +S31540015A8092100018C43FBFE07FFFF6CA9407BFD803 +S31540015A90C407BFD8033FFC0080A080010280088074 +S31540015AA0C207BFDC7FFFADE4901020110500400026 +S31540015AB00700C0008410A1028610E0B0C024A1688E +S31540015AC09007BFE8C43FBFE805108683070021C899 +S31540015AD08410A3FF8610E3A1921000189407BFD843 +S31540015AE07FFFF6B4C43FBFE0C207BFDCC407BFD8DF +S31540015AF0809080011280000B03100080C400616811 +S31540015B00030000708210601F8408800103000010AA +S31540015B108210600480A0800102800005050006AF66 +S31540015B207FFFADC590102011050006AF86102010ED +S31540015B30C024A1689007BFE8C43FBFE8050FFC0039 +S31540015B40070281D88410A0408610E10C92100018FB +S31540015B509407BFD87FFFF697C43FBFE0C407BFD8BD +S31540015B60030006AE8210639580A080010280084240 +S31540015B70C407BFDC7FFFADB090102011050006AF12 +S31540015B8086102010C024A1689007BFE8C43FBFE833 +S31540015B90050FFFFF070281D88410A3408610E10C50 +S31540015BA0921000189407BFD87FFFF682C43FBFE02A +S31540015BB0C207BFDCC407BFD8809080011280000BAA +S31540015BC003100080C4006168030000708210601FEA +S31540015BD084088001030000108210600480A08001C7 +S31540015BE002800004010000007FFFAD939010201158 +S31540015BF0C024A168111088007FFFF75A13100100D5 +S31540015C00031066C9821062CA80A20001128005BAD9 +S31540015C1003100080C200616880A06000128005B652 +S31540015C20010000001111BBFE130C70407FFFF74DC0 +S31540015C30901223FF031527CA8210611E80A200011C +S31540015C40128005A901000000C204A16880A060007D +S31540015C50128005A501000000111E607E1310C7FFCA +S31540015C607FFFF740921263FC031D73FC8210633879 +S31540015C7080A200011280059801000000C204A168BB +S31540015C8080A06000128005940100000011002000F0 +S31540015C90130FE0007FFFF7339212600180A22000CC +S31540015CA01280000B01000000C404A16803000070CB +S31540015CB08210601F84088001030000108210600476 +S31540015CC080A0800102800005110FE0007FFFAD5AE0 +S31540015CD090102011110FE000C024A1687FFFF72129 +S31540015CE092100008030FE00080A2000112800576A1 +S31540015CF003100080C200616880A0600012800572B6 +S31540015D000100000011002000130FE0007FFFF7158E +S31540015D109212600180A220001280000B0100000057 +S31540015D20C404A168030000708210601F84088001CA +S31540015D30030000108210600480A0800102800005EB +S31540015D40031000807FFFAD3C9010201103100080AE +S31540015D50C024A168921061C0901000147FFFF6071D +S31540015D6094146158C404615807100080C200E1C010 +S31540015D7080A08001228007B6C40420047FFFAD2E97 +S31540015D8090102012901000149216E1D87FFFF5FB77 +S31540015D9094146158C4046158C206E1D880A08001B8 +S31540015DA0228007A0C40420047FFFAD239010201257 +S31540015DB0901000149214E1E07FFFF5F094146158BD +S31540015DC0C4046158C204E1E080A080012280078CAE +S31540015DD0C40420047FFFAD189010201290100014C7 +S31540015DE0921561F07FFFF5E594146158C40461583A +S31540015DF0C20721F880A0800122800770C4042004D4 +S31540015E007FFFAD0D90102012901000149215E1B84D +S31540015E107FFFF5DA9414615803000070C404A16849 +S31540015E20840880010300002080A0800102800004D4 +S31540015E30010000007FFFAD0090102012C024A16830 +S31540015E409010001D921000147FFFF5CC94146158F8 +S31540015E50C4046158C207BFD080A080012280074E8A +S31540015E60C40420047FFFACF490102012031000807C +S31540015E709216A1D0901061C07FFFF5C0941461586D +S31540015E80C4046158C20721F880A0800122800732EC +S31540015E90C40420047FFFACE890102012C024A168FE +S31540015EA09010001D9214E1E07FFFF5B494146158FF +S31540015EB0C4046158C204E1E080A080012280071D2C +S31540015EC0C40420047FFFACDC901024999010001D7F +S31540015ED0921561F07FFFF5A994146158C404615885 +S31540015EE0C20721F880A0800122800701C404200452 +S31540015EF07FFFACD1901020129010001D9215E1B891 +S31540015F007FFFF59E9414615803000070C404A16894 +S31540015F10840880010300002080A0800102800004E3 +S31540015F20010000007FFFACC490102012C024A1687C +S31540015F309015A1C8921000147FFFF59094146158F2 +S31540015F40C4046158C205A1C880A08001228006DD33 +S31540015F50C40420047FFFACB8901020129015A1C84C +S31540015F609210001D7FFFF58594146158C404615851 +S31540015F70C20721F880A08001228006C2C404200401 +S31540015F807FFFACAD90102012C024A1689015A1C826 +S31540015F909214E1E07FFFF57994146158C404615885 +S31540015FA0C204E1E080A08001228006ADC404200441 +S31540015FB07FFFACA1901020129015A1C8921561F0F7 +S31540015FC07FFFF56E94146158C4046158C20721F8E5 +S31540015FD080A0800122800691C40420047FFFAC96F4 +S31540015FE0901020129015A1C89215E1B87FFFF56374 +S31540015FF09414615803000070C404A16884088001A8 +S315400160000300002080A080010280000401000000FE +S315400160107FFFAC8990102012C024A1689014E1E062 +S31540016020921000147FFFF55594146158C4046158C9 +S31540016030C204E1E080A080012280066FC4042004EE +S315400160407FFFAC7D901020129014E1E09210001D6C +S315400160507FFFF54A94146158C4046158C204E1E0D3 +S3154001606080A080012280065BC40420047FFFAC72BD +S31540016070901020129014E1E09215A1C87FFFF53FE0 +S3154001608094146158C4046158C204E1E080A08001BF +S3154001609022800647C40420047FFFAC67901020127B +S315400160A09014E1E0941461587FFFF5349210000892 +S315400160B0C4046158C204E1E080A080012280063315 +S315400160C0C40420047FFFAC5C901020129014E1E0E0 +S315400160D0921561F07FFFF52994146158C404A168B3 +S315400160E0030000708210601F8408800103000010C5 +S315400160F08210601080A0800102800004010000002F +S315400161007FFFAC4D90102012C024A168901561F01C +S31540016110921000147FFFF51994146158C404A168C4 +S31540016120030000708210601F840880010300001084 +S315400161308210601080A080010280000401000000EE +S315400161407FFFAC3D90102012C024A1689210001D23 +S31540016150901561F07FFFF50994146158C404A16854 +S31540016160030000708210601F840880010300001044 +S315400161708210601080A080010280000401000000AE +S315400161807FFFAC2D90102012C024A168901561F0BC +S315400161909215A1C87FFFF4F994146158C404A1680B +S315400161A0030000708210601F840880010300001004 +S315400161B08210601080A0800102800004010000006E +S315400161C07FFFAC1D90102012C024A168901561F08C +S315400161D09214E1E07FFFF4E994146158C404A16884 +S315400161E0030000708210601F8408800103000010C4 +S315400161F08210601080A0800102800005901561F038 +S315400162007FFFAC0D90102012901561F0C024A1685B +S31540016210941461587FFFF4D992100008C404A16810 +S31540016220030000708210601F840880010300001083 +S315400162308210601080A080010280000401000000ED +S315400162407FFFABFD90102012C024A168901561F02C +S315400162509215E1B87FFFF4C994146158C204A1684C +S315400162608330600E8208600380A0600202800005D0 +S315400162701103C0007FFFABF0901020121103C00044 +S315400162807FFFF70031100080B0162228C024A16894 +S3154001629010800008BA1020007FFFABE79010201253 +S315400162A0BA07600180A7600602800024B006201864 +S315400162B0832F60030910008088112218912F6005F1 +S315400162C0932F6001902200019202401D9001000827 +S315400162D09202600115100124932A60039412A15879 +S315400162E07FFFF4A692010009C4060000C204000023 +S315400162F080A0800112BFFFE907100124C4062004D3 +S315400163008610E158C200E00480A0800112BFFFE37D +S315400163100910008088112168C201000080A0600038 +S3154001632012BFFFDE01000000BA07600180A76006C8 +S3154001633012BFFFE0B0062018111000809414615876 +S31540016340901222A87FFFF48D92022008031000804C +S3154001635082106218C40060A0C204615880A0800106 +S315400163600280057A071000807FFFABB390102012A0 +S31540016370C024A1681110008094146158901222C063 +S315400163807FFFF47E9202200809100080C204615802 +S3154001639088112218C40120B880A080012280055DA1 +S315400163A0C40120BC7FFFABA490102012C024A16879 +S315400163B01110008094146158901222D87FFFF46F17 +S315400163C0920220080310008082106218C40060D037 +S315400163D0C204615880A080010280053E07100080FA +S315400163E07FFFAB9590102012C024A1681110008048 +S315400163F094146158901222F07FFFF46092022008B3 +S3154001640009100080C204615888112218C40120E88D +S3154001641080A0800122800521C40120EC7FFFAB864C +S3154001642090102012C024A168111000809414615864 +S31540016430901223087FFFF451920220080310008036 +S3154001644082106218C4006100C204615880A08001B4 +S3154001645002800502071000807FFFAB779010201263 +S31540016460C024A168111010007FFFF53413100000FD +S315400164700310300080A20001128003B70310008090 +S31540016480C200616880A06000128003B30100000071 +S31540016490111FE000131000007FFFF43D9414615872 +S315400164A0C4046158031FFC0080A08001228004E3DC +S315400164B0C20420047FFFAB609010201B111FE00037 +S315400164C0133000007FFFF43294146158C4046158BC +S315400164D0033FFC0080A08001228004D0C204200436 +S315400164E07FFFAB559010201C111000009210201018 +S315400164F07FFFF4279414615803000070C404A16817 +S31540016500840880010300002080A0800102800004ED +S31540016510010000007FFFAB489010201DC024A168F8 +S3154001652011002000130FC0007FFFF4199414615825 +S31540016530C4046158030E000080A08001228004AF8C +S31540016540C20420047FFFAB3C9010201E111FDFFFC9 +S3154001655013100000901223FF7FFFF40D941461582D +S31540016560C40461580311FFFF821063FF80A08001BC +S3154001657022800499C40420047FFFAB2F9010201F72 +S31540016580111FD000130FF0007FFFF40194146158DE +S31540016590C40461580311FC8080A0800122800486D6 +S315400165A0C20420047FFFAB2490102021111FDFFF7E +S315400165B094146158901223FF7FFFF3F5921000085F +S315400165C0C40461580313FBFF821063FF80A080015E +S315400165D02280046FC40420047FFFAB179010202053 +S315400165E07FFFF6281103C0009007BFC8C024A168E9 +S315400165F07FFFF3F692146158C4046158C207BFC8BD +S3154001660080A0800122800459C40420047FFFAB0A84 +S315400166109010201309100080921461587FFFF3EB0C +S31540016620901121C005100080C200A1C0C404615868 +S3154001663080A0800102800442071000807FFFAAFEED +S31540016640901020139016E1D87FFFF3E09214615821 +S31540016650C4046158C206E1D880A080010280042D9D +S31540016660091000807FFFAAF4901020139016A1D044 +S315400166707FFFF3D692146158C4046158C20721F8CA +S3154001668080A0800122800413C40420047FFFAAEA6B +S3154001669090102013C024A168901561F07FFFF3CBC1 +S315400166A092146158C4046158C20721F880A0800140 +S315400166B0228003F8C40420047FFFAADF9010201330 +S315400166C0C024A1689014E1E07FFFF3C092146158A1 +S315400166D0C204E1E0C404615880A08001228003E441 +S315400166E0C20660047FFFAAD49010201305100C0047 +S315400166F0861020009010001492146158C43FBFF8D0 +S3154001670005300F78070C00088610E0017FFFF3AFD4 +S31540016710C43FBFF0C40461580310040080A0800147 +S31540016720228003CBC20420047FFFAAC3901020130A +S31540016730A607BFF0921461587FFFF3A4901000138F +S31540016740C20721F8C404615880A08001028003B0C9 +S31540016750051000807FFFAAB8901020139015E1B86C +S315400167607FFFF39A92146158C204A1688330600E88 +S315400167708208600380A060020280000401000000DC +S315400167807FFFAAAD90102013C024A1687FFFF47F3C +S315400167901111F2000310E80080A20001128002EB01 +S315400167A003100080C200616880A06000128002E789 +S315400167B0010000007FFFF5B3111000001101F589BA +S315400167C07FFFF472901221E20308E96480A200017E +S315400167D0128002DB01000000C204A16880A06000B3 +S315400167E0128002D7010000007FFFF4681112A2084F +S315400167F00311410080A20001128002CE0100000077 +S31540016800C204A16880A06000128002CA0100000093 +S315400168107FFFF59C11001000901000149215E1B80D +S315400168207FFFF35194146158C404615803100C005E +S3154001683080A080012280036EC20420047FFFAA7ECD +S31540016840901020149015E1B8921000137FFFF34B7E +S3154001685094146158C40461580320000080A080014B +S315400168602280035BC20420047FFFAA739010201488 +S315400168707FFFF38E90102001030FE00080A20001FC +S31540016880128002A901000000C204A16880A0600034 +S31540016890128002A5010000007FFFF37C90102001C9 +S315400168A0030FFC0080A200010280034280A2600027 +S315400168B07FFFAA61901020147FFFF572111010001E +S315400168C0D41EE1D87FFFF3FFD01DE1B8C206A1D0A7 +S315400168D0D024615880A040080280032BD224200492 +S315400168E07FFFAA55901020227FFFF5661110000008 +S315400168F0050FFC0086102000901000149210001322 +S31540016900C43FBFF8050F2800070400808610E0F059 +S31540016910941461587FFFF314C43FBFF0C404615817 +S31540016920030FFC0080A0800122800313C2042004CF +S315400169307FFFAA41901020157FFFF55211200000DC +S31540016940050FFC00861020009010001492100013D1 +S31540016950C43FBFF805001400070000408610E0015F +S31540016960941461587FFFF300C43FBFF0C4046158DB +S31540016970030FFC0080A08001228002FBC204200498 +S315400169807FFFAA2D901020157FFFF53E11300000A4 +S31540016990052FFC0086102000901000149210001361 +S315400169A0C43FBFF805201400070000408610E001EF +S315400169B0941461587FFFF2ECC43FBFF0C4046158A0 +S315400169C0032FFC0080A08001228002E3C204200440 +S315400169D07FFFAA19901020157FFFF52A111000009C +S315400169E0050FFC0086102000901000149215A1C8D6 +S315400169F0C43FBFF87FFFF2DC94146158C404615868 +S31540016A00C205A1C880A08001228002CCC404200412 +S31540016A107FFFAA09901020157FFFF51A112000006B +S31540016A20050FFC0086102000901000149215A1C895 +S31540016A30C43FBFF805001400070000408610E0017E +S31540016A40941461587FFFF2C8C43FBFF0C404615833 +S31540016A50C205A1C880A08001228002B1C4042004DD +S31540016A607FFFA9F5901020157FFFF5061130000034 +S31540016A70052FFC0086102000901000149215A1C825 +S31540016A80C43FBFF805201400070000408610E0010E +S31540016A90941461587FFFF2B4C43FBFF0C205A1C848 +S31540016AA0C404615880A080010280029609100080CA +S31540016AB07FFFA9E1901020157FFFF4F2111000002D +S31540016AC0050FFC008610200190100014921000134F +S31540016AD0C43FBFF805100000861020019414615888 +S31540016AE07FFFF2A6C43FBFF0C40461580310000003 +S31540016AF080A080012280027FC20420047FFFA9CEAC +S31540016B00901020157FFFF4DF112000009010001433 +S31540016B10921000137FFFF29994146158C40461588E +S31540016B200310000080A080012280026EC20420046E +S31540016B307FFFA9C1901020157FFFF4D211300000CC +S31540016B40052FFC00861020019010001492100013AE +S31540016B50C43FBFF87FFFF28994146158C404615859 +S31540016B600330000080A080012280025AC204200422 +S31540016B707FFFA9B1901020157FFFF4C211100000CC +S31540016B80050FFEAE071CD2E88410A1548610E01111 +S31540016B909010001492100013C43FBFF8050FFC0477 +S31540016BA0072F26158410A0128610E23194146158DD +S31540016BB07FFFF280C43FBFF0C4046158030FFEA7B4 +S31540016BC08210629680A080012280023CC404200487 +S31540016BD07FFFA999901020157FFFF4AA112000008C +S31540016BE090100014921000137FFFF27294146158B2 +S31540016BF0C4046158030FFEA78210629680A08001EB +S31540016C0022800228C40420047FFFA98B90102015FE +S31540016C107FFFF49C11300000052FFC04072F261539 +S31540016C208410A0128610E2319010001492100013C5 +S31540016C30C43FBFF07FFFF25F94146158C4046158AA +S31540016C40032FFEA78210629680A080012280020F48 +S31540016C50C40420047FFFA978901020157FFFF48992 +S31540016C601110000005103800861020009010001405 +S31540016C7092100013C43FBFF8051010008610200083 +S31540016C80941461587FFFF24BC43FBFF0C40461586E +S31540016C900310240080A08001228001F8C204200450 +S31540016CA07FFFA965901020157FFFF4761120000023 +S31540016CB090100014921000137FFFF23E9414615815 +S31540016CC0C40461580310240080A08001228001E79A +S31540016CD0C20420047FFFA958901020157FFFF46954 +S31540016CE01130000090100014921000137FFFF23112 +S31540016CF094146158C40461580310240080A0800193 +S31540016D00228001D6C20420047FFFA94B9010201592 +S31540016D107FFFF45C1110000011002000130FE0000A +S31540016D207FFFF3109212600180A22000128001C8F9 +S31540016D30010000007FFFF4531120000011002000E4 +S31540016D40130FE0007FFFF3079212600180A220003B +S31540016D50128001BC010000007FFFF44A113000009F +S31540016D6011002000130FE0007FFFF2FE9212600136 +S31540016D7080A22000128001B0010000007FFFF44193 +S31540016D8011100000050FFC00861020009010001421 +S31540016D90921461587FFFF20DC43FBFF8C404615895 +S31540016DA0C207BFF880A080012280019AC404200452 +S31540016DB07FFFA921901020157FFFF432112000009A +S31540016DC0901000147FFFF20192146158C404615877 +S31540016DD0C207BFF880A0800122800185C404200437 +S31540016DE07FFFA915901020157FFFF4261130000072 +S31540016DF0901000147FFFF1F592146158C404615854 +S31540016E00C207BFF880A0800122800170C40420041B +S31540016E107FFFA909901020157FFFF41A1110000079 +S31540016E202B0FDFFF901563FF7FFFF2D8AA1563FF93 +S31540016E3080A2001502800004010000007FFFA8FE29 +S31540016E40901020157FFFF40F11200000110FDFFF76 +S31540016E507FFFF2CE901223FF030FE00080A20001D4 +S31540016E6002800004010000007FFFA8F39010201566 +S31540016E707FFFF404113000002B0FDFFF901563FFF5 +S31540016E807FFFF2C2AA1563FF80A2001502800004AB +S31540016E90010000007FFFA8E8901020157FFFF3F95D +S31540016EA0901020007FFFF2C190146158C4046158CC +S31540016EB0032FFE0080A0800122800140C2042004ED +S31540016EC07FFFA8DD901020162B1001247FFFF2C111 +S31540016ED090156160C4056160032FF00080A08001B8 +S31540016EE002800004010000007FFFA8D39010201605 +S31540016EF07FFFF2C290156160C4056160030FE00037 +S31540016F0080A0800102800004010000007FFFA8CA22 +S31540016F10901020167FFFF2C990146158C40461583D +S31540016F20030FFBF7821063F080A080012280011CD1 +S31540016F30C40420047FFFA8C0901020169215E1B822 +S31540016F40901000147FFFF19B94146158C204A1680C +S31540016F508330600E8208600780A0600202800005CF +S31540016F60031000807FFFA8B4901020170310008003 +S31540016F70C40061700310004DE40061B8821061B82D +S31540016F8080A0400202800005031000807FFFA8AA6E +S31540016F909010201803100080C200617480A0401236 +S31540016FA002800005031000807FFFA8A390102018DF +S31540016FB003100080C200617880A06000128000F456 +S31540016FC00100000003100080C200617C80A06000C7 +S31540016FD0128000EC010000007FFFF14E010000002D +S31540016FE080A220010280052D01000000050C4029E8 +S31540016FF00723CD1B8410A0068610E09B9010001439 +S31540017000C027BFF0C027BFF4C43FBFF82910008195 +S315400170107FFFF1962B100082AA1560A0A4102000D4 +S31540017020A81520A0AC146158BA10001510800008AC +S31540017030AE1000107FFFA88090102019A404A00470 +S3154001704080A4A400228000172B100084C2050012E0 +S31540017050C224C000901000137FFFF18792100016E2 +S31540017060832CA001C4040000C605400180A0C002D3 +S3154001707012BFFFF182074001C4006004C205E0046B +S3154001708080A0800112BFFFEC01000000A404A0040F +S3154001709080A4A40032BFFFEFC20500122B1000846A +S315400170A0A2146158AA1560A0A4102000AE100015C4 +S315400170B010800008AC1000107FFFA85F9010201AC6 +S315400170C0A404A00880A4A4000280001501000000C9 +S315400170D0C2050012C224C000921000117FFFF13B8D +S315400170E090100013C4054012C204000080A0800124 +S315400170F012BFFFF28205C012C4006004C205A0049B +S3154001710080A0800112BFFFED01000000A404A00889 +S3154001711080A4A40032BFFFF0C205001281C7E00877 +S3154001712081E800007FFFA8449010200F30BFF69AF7 +S315400171307FFFA8419010200F10BFF68C110048EA3E +S315400171407FFFA83D9010200F10BFF646D01DE1B835 +S315400171507FFFA8399010200F10BFF64FD01CE1E0F9 +S315400171607FFFA8359010200F10BFF608D41CE1E030 +S315400171707FFFA8319010200F10BFF5F411151BE8C1 +S315400171807FFFA82D9010200F10BFF5E011151BC0F1 +S315400171907FFFA8299010200F10BFF5C49010200042 +S315400171A07FFFA8259010200F10BFF5B011351BC0E9 +S315400171B07FFFA8219010200F10BFF57AD01CE1E087 +S315400171C07FFFA81D9010200F10BFF583D01D61F0E1 +S315400171D07FFFA8199010200F10BFF565D01DE1B8AB +S315400171E07FFFA8159010200F10BFF53FD41D61F009 +S315400171F07FFFA8119010200F10BFF52ED41CE1E09F +S315400172007FFFA80D9010200F10BFF51A11151BE82E +S315400172107FFFA8099010200F10BFF50611151BC05E +S315400172207FFFA8059010200F10BFF4DA11351BC05F +S315400172307FFFA8019010200F10BFF4E690102000A8 +S315400172407FFFA7FD9010200E30BFF4BF7FFFA7FA46 +S315400172509010200E10BFF4B11128C6AF7FFFA7F6DC +S315400172609010200E10BFF4A11108C6AF7FFFA7F200 +S315400172709010200E10BFF4911128C6AF7FFFA7EEE4 +S315400172809010200E10BFF4822108C6AF7FFFA7EAF7 +S315400172909010200D30BFF4517FFFA7E79010200DCD +S315400172A010BFF444371000807FFFA7E39010200CF5 +S315400172B010BFF3A2271000807FFFA7DF9010200B9D +S315400172C030BFF34F7FFFA7DC9010201110BFFA8F1C +S315400172D0110020007FFFA7D89010201110BFFA6D32 +S315400172E0110020007FFFA7D49010201110BFFA5C37 +S315400172F0111E607E7FFFA7D09010201110BFFA4B60 +S315400173001111BBFE7FFFA7CC9010201010BFF85E75 +S31540017310091000807FFFA7C89010201010BFF84FBA +S31540017320111000007FFFA7C49010201430BFFD5BF1 +S315400173307FFFA7C19010202330BFFD367FFFA7BE38 +S315400173409010202330BFFD297FFFA7BB901020134B +S3154001735030BFFD197FFFA7B89010201210BFFC4E19 +S31540017360111FE00012BFF30A01000000C204A16828 +S3154001737080A0600002BFF3080100000030BFF304A3 +S315400173807FFFA7AD9010201830BFFF147FFFA7AA3B +S315400173909010201810BFFF0D031000800303FF1249 +S315400173A08210604A80A0800112BFFEE39215E1B8C7 +S315400173B010BFFEE59010001480A0600002BFFEC41D +S315400173C02B10012430BFFEBFC207BFFC80A0800145 +S315400173D012BFFE9001000000C204A16880A06000B7 +S315400173E002BFFE8E0100000030BFFE8AC207BFFC0D +S315400173F080A0800112BFFE7B01000000C204A1688B +S3154001740080A0600002BFFE790100000030BFFE751A +S31540017410C207BFFC80A0800112BFFE6601000000CA +S31540017420C204A16880A0600002BFFE6401000000A2 +S3154001743030BFFE607FFFA7809010201530BFFE5001 +S315400174407FFFA77D9010201530BFFE447FFFA77AAE +S315400174509010201530BFFE3880A0600002BFFE2D7F +S315400174600100000030BFFE2980A0600002BFFE1C63 +S315400174700100000030BFFE1880A0600002BFFE0B75 +S315400174800100000030BFFE07032C1B348210603020 +S3154001749080A0800112BFFDF00100000030BFFDF069 +S315400174A0032C1B348210603080A0800112BFFDD7AF +S315400174B00100000030BFFDD7032C1B348210602F22 +S315400174C080A0800112BFFDC30100000030BFFDC393 +S315400174D080A0600312BFFDA70100000030BFFDA7D9 +S315400174E080A0600312BFFD930100000030BFFD93F1 +S315400174F080A0600212BFFD820100000030BFFD8204 +S31540017500C4042004881121C8C201200480A080013E +S3154001751012BFFD680100000030BFFD680710008002 +S315400175208610E1C8C200E00480A0800112BFFD4D73 +S315400175300100000030BFFD4D09100080881121C8AF +S31540017540C201200480A0800112BFFD32010000006B +S3154001755030BFFD3280A0600112BFFD1E0100000058 +S3154001756030BFFD1E80A0600112BFFD060100000074 +S3154001757030BFFD0680A0600002BFFCF001000000A4 +S3154001758030BFFCEC071000808610E1D0C200E00459 +S3154001759080A0400912BFFCD301000000C204A168CB +S315400175A080A0600002BFFCD10100000030BFFCCDCD +S315400175B012BFFCC001000000C204A16880A06000A7 +S315400175C002BFFCBE0100000030BFFCBA80A06000D3 +S315400175D012BFFCA601000000C204A16880A06000A1 +S315400175E002BFFCA40100000030BFFCA080A06000E7 +S315400175F012BFFC9301000000C204A16880A0600094 +S3154001760002BFFC929015E1B830BFFC8D8410A1F801 +S31540017610C200A004C404200480A0800112BFFC4E15 +S3154001762001000000C404A168030000708210601FBD +S3154001763084088001030000108210601080A0800140 +S3154001764012BFFC459015E1B830BFFC4680A06000F2 +S3154001765012BFFC3601000000C204A16880A0600090 +S3154001766002BFFC35A607BFF030BFFC30C40420047E +S3154001767080A0800112BFFC1C03100080C20061681B +S3154001768080A0600002BFFC1B05100C0030BFFC1639 +S3154001769009100080881121F8C201200480A08001D0 +S315400176A012BFFC0603100080C4006168030000702D +S315400176B08210601F84088001030000108210601050 +S315400176C080A0800112BFFBFD0100000030BFFBFD21 +S315400176D0071000808610E1F8C200E00480A0800116 +S315400176E012BFFBEB01000000C404A1680300007057 +S315400176F08210601F84088001030000108210601010 +S3154001770080A0800112BFFBE20100000030BFFBE216 +S31540017710C4042004881121D8C201200480A080011C +S3154001772012BFFBD101000000C204A16880A0600025 +S3154001773002BFFBD09016A1D030BFFBCBC4042004BE +S315400177408610E1C0C200E00480A0800112BFFBBCEC +S3154001775001000000C204A16880A0600002BFFBBB1B +S315400177609016E1D830BFFBB6C207BFCC80A08001DE +S3154001777012BFFBA703100080C200616880A06000B1 +S3154001778002BFFBA60910008030BFFBA103300000F9 +S315400177908210602080A0800112BFFB900100000092 +S315400177A0C204A16880A0600002BFFB8E01000000F8 +S315400177B030BFFB8A80A0600012BFFB7B0100000046 +S315400177C0C204A16880A0600002BFFB7A111FDFFFDF +S315400177D030BFFB750338000080A0800112BFFB67F4 +S315400177E001000000C204A16880A0600002BFFB66E0 +S315400177F0111FD00030BFFB6180A0600012BFFB5259 +S3154001780003100080C200616880A0600002BFFB5186 +S31540017810111FDFFF30BFFB4C80A0600012BFFB3160 +S3154001782001000000C204A16880A0600002BFFB30D5 +S315400178301110000030BFFB2B80A0600012BFFB1E61 +S3154001784001000000C204A16880A0600002BFFB1DC8 +S31540017850111FE00030BFFB18C20420048610E21855 +S31540017860C400E10480A0800112BFFAFC031000802D +S31540017870C4006168030000708210601F84088001A3 +S31540017880030000108210600880A0800112BFFAF345 +S315400178900100000030BFFAF3C204200480A0800139 +S315400178A012BFFADF03100080C40061680300007054 +S315400178B08210601F8408800103000010821060045A +S315400178C080A0800112BFFAD60100000030BFFAD66F +S315400178D0C20420048610E218C400E0D480A08001CE +S315400178E012BFFAC003100080C40061680300007033 +S315400178F08210601F84088001030000108210600816 +S3154001790080A0800112BFFAB70100000030BFFAB76C +S31540017910C204200480A0800112BFFAA30310008094 +S31540017920C4006168030000708210601F84088001F2 +S31540017930030000108210600880A0800112BFFA9AED +S315400179400100000030BFFA9AC20420048610E218F2 +S31540017950C400E0A480A0800112BFFA8401000000A7 +S31540017960C404A168030000708210601F840880016E +S31540017970030000108210600480A0800112BFFA7BD0 +S315400179800100000030BFFA7BC206600480A080017E +S3154001799012BFF9CD01000000C204A16880A06000B9 +S315400179A002BFF9CC9014E1E030BFF9C7C2066004CA +S315400179B080A0800112BFF9B901000000C204A1688C +S315400179C080A0600002BFF9B89014E1E030BFF9B37E +S315400179D0C206600480A0800112BFF9A50100000023 +S315400179E0C204A16880A0600002BFF9A49014E1E03E +S315400179F030BFF99FC206600480A0800112BFF99191 +S31540017A0003100080C200616880A0600002BFF99047 +S31540017A109014E1E030BFF98B071000808610E1F841 +S31540017A20C200E00480A0800112BFF96D0100000090 +S31540017A30C404A168030000708210601F840880019D +S31540017A40030000108210601080A0800112BFF9640B +S31540017A509015A1C810BFF9669215E1B8C206600437 +S31540017A6080A0800112BFF95303100080C2006168F3 +S31540017A7080A0600002BFF9529015A1C830BFF94DF0 +S31540017A8009100080881121F8C201200480A08001DC +S31540017A9012BFF93C01000000C404A1680300007054 +S31540017AA08210601F8408800103000010821060105C +S31540017AB080A0800112BFF9330100000030BFF933C5 +S31540017AC0071000808610E1C8C200E00480A0800152 +S31540017AD012BFF92103100080C200616880A06000D6 +S31540017AE002BFF9209015A1C830BFF91B09100080CB +S31540017AF0881121F8C201200480A0800112BFF8FD3F +S31540017B0001000000C404A168030000708210601FD8 +S31540017B1084088001030000108210601080A080015B +S31540017B2012BFF8F49010001D10BFF8F69215E1B897 +S31540017B30C206600480A0800112BFF8E303100080F2 +S31540017B40C200616880A0600002BFF8E29010001D8B +S31540017B5030BFF8DD071000808610E1F8C200E0046E +S31540017B6080A0800112BFF8CC01000000C404A168C6 +S31540017B70030000708210601F84088001030000101A +S31540017B808210601080A0800112BFF8C3010000007E +S31540017B9030BFF8C3C207BFD480A0800112BFF8B27C +S31540017BA003100080C200616880A0600002BFF8B186 +S31540017BB00310008030BFF8AC09100080881121F80D +S31540017BC0C201200480A0800112BFF88E010000008E +S31540017BD0C404A168030000708210601F84088001FC +S31540017BE0030000108210601080A0800112BFF8854A +S31540017BF09010001410BFF8879215E1B8C2066004D0 +S31540017C0080A0800112BFF87401000000C204A1687F +S31540017C1080A0600002BFF8739010001430BFF86E68 +S31540017C20071000808610E1D8C200E00480A08001E0 +S31540017C3012BFF85E01000000C204A16880A0600086 +S31540017C4002BFF85D9010001430BFF8588810E1C0AB +S31540017C50C201200480A0800112BFF84903100080B0 +S31540017C60C200616880A0600002BFF848901000140D +S31540017C7030BFF84303003A9A8210630F80A0800117 +S31540017C8012BFF7BD03100080C200616880A060008A +S31540017C9002BFF7BC050006AF30BFF7B780A0600052 +S31540017CA012BFF78103100080C400616803000070B1 +S31540017CB08210601F84088001030000108210600852 +S31540017CC080A0800112BFF7780500400010BFF77A07 +S31540017CD00700C00009100080881121F8C201200464 +S31540017CE080A0800112BFF6EF01000000C404A16824 +S31540017CF0030000708210601F840880010300001099 +S31540017D008210601080A0800112BFF6E69014E1E077 +S31540017D1010BFF6E89215E1B8C206600480A0800162 +S31540017D2012BFF6D501000000C204A16880A0600020 +S31540017D3002BFF6D49014E1E030BFF6CFC20660042C +S31540017D4080A0800112BFF6C101000000C204A168F3 +S31540017D5080A0600002BFF6C09014E1E030BFF6BBE0 +S31540017D60C206600480A0800112BFF6AD010000008A +S31540017D70C204A16880A0600002BFF6AC9014E1E0A5 +S31540017D8030BFF6A7C206600480A0800112BFF699F3 +S31540017D9003100080C200616880A0600002BFF698AF +S31540017DA09014E1E030BFF693071000808610E1F8A9 +S31540017DB0C200E00480A0800112BFF67401000000F9 +S31540017DC0C404A168030000708210601F840880010A +S31540017DD0030000108210601080A0800112BFF66B74 +S31540017DE00100000030BFF66BC206600480A080012E +S31540017DF012BFF65B03100080C200616880A060007C +S31540017E0002BFF65A9015A1C830BFF6550910008039 +S31540017E10881121F8C201200480A0800112BFF644D6 +S31540017E2001000000C404A168030000708210601FB5 +S31540017E3084088001030000108210601080A0800138 +S31540017E4012BFF63B0100000030BFF63B0710008031 +S31540017E508610E1D8C200E00480A0800112BFF62955 +S31540017E6001000000C204A16880A0600002BFF6289C +S31540017E709015A1C830BFF623071000808610E1D0C7 +S31540017E80C200E00480A0800112BFF61203100080F8 +S31540017E90C200616880A0600002BFF611091000802F +S31540017EA030BFF60CC206600480A0800112BFF5E027 +S31540017EB001000000C204A16880A0600002BFF5DF96 +S31540017EC09010001D30BFF5DA8810E1C0C2012004D0 +S31540017ED080A0800112BFF5CB03100080C20061680B +S31540017EE080A0600002BFF5CA9010001D30BFF5C5E5 +S31540017EF0071000808610E1F8C200E00480A08001EE +S31540017F0012BFF5B201000000C404A168030000706D +S31540017F108210601F840880010300001082106010E7 +S31540017F2080A0800112BFF5A90910008030BFF5AAD3 +S31540017F30C207BFD480A0800112BFF598031000800C +S31540017F40C200616880A0600002BFF59703100080FF +S31540017F5030BFF59209100080881121F8C201200432 +S31540017F6080A0800112BFF57401000000C404A1681D +S31540017F70030000708210601F840880010300001016 +S31540017F808210601080A0800112BFF56B9010001422 +S31540017F9010BFF56D9215E1B8C206600480A080015C +S31540017FA012BFF55A01000000C204A16880A060001A +S31540017FB002BFF5599010001430BFF554C207BFCC2B +S31540017FC080A0800112BFF54603100080C20061689F +S31540017FD080A0600002BFF5459010001430BFF54007 +S31540017FE0071000808610E1D0C200E00480A0800125 +S31540017FF012BFF52F03100080C400616803000070B2 +S315400180008210601F84088001030000108210600204 +S3154001801080A0800112BFF5260100000030BFF52681 +S3154001802012BFF50001000000C204A16880A06000F3 +S3154001803002BFF4FF1110000030BFF4FA12BFF4EE94 +S3154001804001000000C204A16880A0600002BFF4EDF7 +S315400180501130000030BFF4E812BFF4DC010000002B +S31540018060C204A16880A0600002BFF4DB11300000A9 +S3154001807030BFF4D612BFF4CA03100080C200616853 +S3154001808080A0600002BFF4C91110000030BFF4C4E3 +S31540018090C20420048610E320C400E17C80A0800154 +S315400180A012BFF4B301000000C404A16803000070CC +S315400180B08210601F84088001030000108210600452 +S315400180C080A0800112BFF4AA0100000030BFF4AACB +S315400180D0C204200480A0800112BFF4970100000071 +S315400180E0C404A168030000708210601F84088001E7 +S315400180F0030000108210600480A0800112BFF48E3C +S315400181001110008110BFF49094146158C2042004E8 +S315400181108610E320C400E14C80A0800112BFF478B0 +S3154001812001000000C404A168030000708210601FB2 +S3154001813084088001030000108210600880A080013D +S3154001814012BFF46F1110008110BFF471941461587D +S315400181507FFFA4399010201010BFF45E11100081EA +S31540018160C206600480A0800112BFF3B9010000007D +S31540018170C204A16880A0600002BFF3B89014E1E098 +S3154001818030BFF3B3C206600480A0800112BFF3A5DD +S3154001819001000000C204A16880A0600002BFF3A4F0 +S315400181A09014E1E030BFF39FC206600480A08001D5 +S315400181B012BFF39101000000C204A16880A06000D3 +S315400181C002BFF3909014E1E030BFF38BC206600426 +S315400181D080A0800112BFF37D03100080C200616858 +S315400181E080A0600002BFF37C9014E1E030BFF377DA +S315400181F009100080881121F8C201200480A0800165 +S3154001820012BFF35A03100080C40061680300007076 +S315400182108210601F840880010300001082106010E4 +S3154001822080A0800112BFF3519015A1C810BFF3532E +S315400182309215E1B8071000808610E1F8C200E0040B +S3154001824080A0800112BFF33B0100000030BFF33B29 +S3154001825009100080881121D0C201200480A080012C +S3154001826012BFF31801000000C204A16880A060009B +S3154001827002BFF3179016A1D030BFF312071000804A +S315400182808610E1D8C200E00480A0800112BFF3024B +S3154001829001000000C204A16880A0600002BFF30192 +S315400182A09016A1D030BFF2FC09100080881121C878 +S315400182B0C201200480A0800112BFF2EC010000003F +S315400182C0C204A16880A0600002BFF2EB9016E1D81B +S315400182D030BFF2E6071000808610E1C8C200E00414 +S315400182E080A0800112BFF2D603100080C2006168EF +S315400182F080A0600002BFF2D59015A1C830BFF2D070 +S3154001830009100080881121F8C201200480A0800153 +S3154001831012BFF2B10100000030BFF2B1C2066004E3 +S3154001832080A0800112BFF29001000000C204A16842 +S3154001833080A0600002BFF28F9010001D30BFF28A0C +S31540018340071000808610E1C8C200E00480A08001C9 +S3154001835012BFF27A01000000C204A16880A0600049 +S3154001836002BFF2799010001D30BFF274C207BFFC04 +S3154001837080A0800112BFF26603100080C2006168CE +S3154001838080A0600002BFF2659010001D30BFF26010 +S31540018390881721F8C201200480A0800112BFF24251 +S315400183A00100000030BFF242C4042004C20660044A +S315400183B080A0800112BFF21E01000000C204A16824 +S315400183C080A0600002BFF21D9010001430BFF21869 +S315400183D08615A1C8C200E00480A0800112BFF2093F +S315400183E001000000C204A16880A0600002BFF2083B +S315400183F09010001430BFF203C2042004C407BFFC2E +S3154001840080A0800112BFF1F303100080C2006168B1 +S3154001841080A0600002BFF1F22D10008030BFF1ED67 +S3154001842080A2400112BFEFA201000000C204A16870 +S3154001843080A0600002BFEFA11111FC0030BFEF9C8C +S3154001844080A2400112BFEF9003100080C200616814 +S3154001845080A0600022BFEF8F113C02AF30BFEF8A90 +S3154001846012BFEEDB01000000C204A16880A06000DB +S3154001847002BFEED90100000030BFEED512BFEECCEF +S3154001848001000000C204A16880A0600002BFEECADC +S315400184900100000030BFEEC67FFFA3679010201990 +S315400184A010BFFAD4050C402981D8200081C3E008C9 +S315400184B00100000081D8200082102400C0A04300A2 +S315400184C081C3E00801000000853220109132201856 +S315400184D0900A200F8408A00380A000088260200033 +S315400184E081C3E008900880019DE3BF887FFFEB7A56 +S315400184F09010200C808A20081280000401000000A0 +S3154001850081C7E00891E820007FFFA3449010200E28 +S31540018510C2800320853060188088A00F028000DD6C +S315400185202F100123833060108208600380A060020F +S31540018530028000E0C225E0D880A06003028000FFEF +S3154001854080A06001028000EC2910010C2310010C6F +S315400185502110010C2B10010C2710010C2510010CC8 +S3154001856081D8200081D8200082102400C0A0430079 +S31540018570031000A1051000A0821060008410A00025 +S31540018580873060048610E00188100003C8788000B7 +S315400185908800A004C67900008610200AC6784000EB +S315400185A0C8046000C60420041B00800019080000AE +S315400185B09A13600A993B0004980B0003992B2002F9 +S315400185C098030001DA7B00001B0100001710000030 +S315400185D09813608E973AC004960AC003972AE00220 +S315400185E09602C001D87AC000171C00001901C000CC +S315400185F0893AC0049813208E860900038728E00231 +S315400186008600C001D878C0003B1000A28200600CF1 +S31540018610BA176000873760048610E001C6784000CB +S315400186208213601E86076008C278C000821020004F +S315400186308807600C86100001C67900002D1000A243 +S315400186409A076004AC15A1008735A004B81000163E +S315400186508610E001C67B4000B405A008C27E8000BA +S315400186601B1000C0B605A004861360008330E004E9 +S315400186709810601AD87EC000C02360001B048D1577 +S315400186809A136278DA20E004DA05E0D83310010063 +S315400186909A03600CB21660008605A00CB01020004B +S315400186A0C627BFF8DA27BFFC9010001892102003A6 +S315400186B0C227BFF0C427BFEC40000AB0C827BFF4A9 +S315400186C0DA07BFFC992A000DC607BFF898030019BF +S315400186D0993320049813201ED878C000B006200193 +S315400186E08600E00480A62008C207BFF0C407BFEC9D +S315400186F012BFFFECC807BFF417100020DE05200C9F +S315400187008612E168C822E16809100020D005600898 +S31540018710D804A014DA04E010D2042004D404600082 +S31540018720960BE001972AC008C6212160880A60039A +S315400187308929000A8812C004960B2002972AC00D87 +S315400187409611000B8530A004D620E0209610600ECD +S31540018750D620E0289608BFF0840B20018528800D9D +S31540018760841100028210601EC420E02CC420E01453 +S31540018770050100008410A01EC220E010C420E004C0 +S31540018780F620E00CF420E018F620E02405007641BE +S31540018790031000208410A1C082106000C420E008AC +S315400187A0833060048210601EC220E01C82102100CA +S315400187B0D6A04320C4800320C280432084102001D8 +S315400187C082102200C4A04320C68043208610200088 +S315400187D0C6A04320C4A0032081D820007FFFEABE63 +S315400187E090102000913A200C808A20030280006577 +S315400187F001000000C280032082102100C280432074 +S3154001880082102200C2804320C80420048809200324 +S31540018810C2046000C605200CC4056008D404A01437 +S31540018820D604E010832900019808E0019A0AA001C4 +S31540018830992B00029B2B400B981300019A13000DB4 +S31540018840C803400080A12000028000038813600411 +S3154001885030800000D201000011048D15901222785B +S3154001886080A2400812BFFFFB111000009E08E002E3 +S31540018870D00200009F2BC0029E13C001DE03C00040 +S3154001888080A3C008228000428608E00330800000B1 +S315400188902310010C2110010CC025E0D82B10010C2E +S315400188A02910010C2710010C10BFFF2E2510010CB9 +S315400188B02110010C2910010C2510010C2310010C6B +S315400188C08210203F2B10010C2710010CC2242004DA +S315400188D0C224A014C225200C8210201AC224600092 +S315400188E082102014C22560088210200E10BFFF1D81 +S315400188F0C224E0102510010C2310010C8210203FE8 +S315400189002110010C2B10010C2710010CC225200C43 +S31540018910C224A01482102019C22460008210207F34 +S31540018920C224200482102013C22560088210200D23 +S3154001893010BFFF0CC224E0102110010C2710010CBE +S315400189402310010C8210200F2B10010C2910010C51 +S315400189502510010CC224E010C22420048210201CE0 +S31540018960C224600082102015C22560088210207F33 +S31540018970C225200C8210203F10BFFEFAC224A0144B +S315400189807FFFBDA30100000030BFFF9B8528C002C9 +S3154001899082108001C20040000321D9508210632118 +S315400189A0C2210000C401000080A0800102800003B2 +S315400189B001000000308000008210000D05048D1575 +S315400189C08410A278072AF37B8610E301C43840005D +S315400189D0C4384000C203400080A040090280000321 +S315400189E00100000030800000C4010000032AF37B2F +S315400189F08210630180A0800112BFFFFBC205E0D84F +S31540018A00940AA0038200600C972A800B84102001EF +S31540018A10AE13000B85288001B0102000EE25C00062 +S31540018A20C0A0022092102003C227BFF0C427BFEC8A +S31540018A30400009D290100018C207BFF0912A0001E8 +S31540018A40C606400880A0C01712800008C407BFECC4 +S31540018A50B006200180A6200802800005AE05C002AE +S31540018A6010BFFFF0EE25C00030800000C0A00220FC +S31540018A70AE102003B0102000852DE002C40580020F +S31540018A808608A06080A00003C227BFF0B04000184E +S31540018A90C427BFEC9005FFFD400009B892102003A2 +S31540018AA0C207BFF0C407BFEC872A00018606400310 +S31540018AB08730E0048610E01E8418C0028088BF9F7C +S31540018AC012800009AE05E00180A5E00B32BFFFEC44 +S31540018AD0852DE00280A6200012800004D805200CD6 +S31540018AE03080000030800000C8056008DA042004A8 +S31540018AF0C4046000C604A014C204E010980B20010F +S31540018B009A0B6003892B0004852B40028608E002FC +S31540018B10841100028328C001821080019FC0400059 +S31540018B200100000082102400C0A04300C0A0022022 +S31540018B308210200084072020C607200C8608E060AA +S31540018B4080A00003B80720048240000180A70002EC +S31540018B5032BFFFFBC607200C80A0600822800003BD +S31540018B60C206C00030800000808860400280000458 +S31540018B708088602032800003C20760083080000090 +S31540018B808088602032800003C20680003080000069 +S31540018B9080886020128000030100000030800000C0 +S31540018BA083480000842860808188A000010000007D +S31540018BB00100000001000000D8042004C804600040 +S31540018BC0DA05200CC4056008C604A014C204E010EE +S31540018BD0980B20039A0B6001892B0004852B4002D8 +S31540018BE08608E001841100028328C0018410A00494 +S31540018BF082108001C20040009210200491D02002D0 +S31540018C00010000007FFFE9B490102000913A200C4A +S31540018C10808A200312800005841020007FFFBCFC5F +S31540018C20010000008410200082102200C4A04320CD +S31540018C3086102001C6A04320C4A043200310000093 +S31540018C40C4804380C4A043807FFFBD5E9010200056 +S31540018C5081D8200030BFFE2B9DE3BFA040000822F3 +S31540018C6001000000808A21001280000401000000FA +S31540018C7081C7E00891E820007FFFA18B23100120E6 +S31540018C80912A20047FFFA16590022005A21460006D +S31540018C90C204600480A060000280001A8210200095 +S31540018CA0A010200084044001C8044001C600A0046D +S31540018CB0C200A0089B39201F81836000010000008B +S31540018CC001000000010000008479000380A08001BA +S31540018CD002800004A00420017FFFA15790102001CB +S31540018CE082040010820040108328600284044001FF +S31540018CF0C400A00480A0A00012BFFFEC8404400180 +S31540018D0023100120A2146138C204600480A06000CF +S31540018D100280001982102000A01020008404400126 +S31540018D20C8044001C600A004C200A00881802000FA +S31540018D3001000000010000000100000084710003F1 +S31540018D4080A0800102800004A00420017FFFA13A97 +S31540018D509010200282040010820040108328600295 +S31540018D6084044001C400A00480A0A00012BFFFED0E +S31540018D7084044001400008890100000080A22000CF +S31540018D8012BFFFBC901020037FFFA12BB010200023 +S31540018D9081C7E00881E800009DE3BFA07FFFA142B3 +S31540018DA001000000912A20047FFFA11C90022004AB +S31540018DB0400007CF0100000080A221230280000469 +S31540018DC0010000007FFFA11C90102001400007C652 +S31540018DD001000000808A2100028000292310012021 +S31540018DE0A2146180C204600880A060090280001557 +S31540018DF082102000A010200084044001C6044001D6 +S31540018E00C800A004C200A0088459000380A08001C4 +S31540018E1002800004A00420017FFFA10790102002D8 +S31540018E2082040010820040108328600284044001BD +S31540018E30C400A00880A0A00912BFFFF1840440012C +S31540018E40400007B80100000080A2200002800023F4 +S31540018E5001000000400007B30100000080A220008D +S31540018E6002800016010000004000079F010000003B +S31540018E70808A2200128000040100000081C7E008B8 +S31540018E8091E82000400007F80100000080A2200080 +S31540018E900280001A01000000400007F301000000B3 +S31540018EA080A2200012BFFFF6010000007FFFA0E272 +S31540018EB09010200430BFFFF27FFFA0DF9010200307 +S31540018EC04000078901000000808A220002BFFFECB2 +S31540018ED00100000030BFFFEC7FFFA0D790102003B8 +S31540018EE0400007900100000080A2200012BFFFDF72 +S31540018EF00100000030BFFFF17FFFA0CF901020049A +S31540018F0030BFFFE6000000009DE3BFA094102000A3 +S31540018F10111000639012233C1310006392126340B8 +S31540018F20171000639612E348191000639813234CF7 +S31540018F3093C2000081C240001080019181C2C000ED +S31540018F4081C300001080018E9402A0019402A00109 +S31540018F5080A2A0031280018A01000000874400001C +S31540018F608D30E00E8C89A00780A1A000028000C749 +S31540018F7001000000AF30E00BAE0DE00780A5E00038 +S31540018F80128000C20100000080A1A00212800035BB +S31540018F900100000025100000E41C8000251000009F +S31540018FA029100000A8152104A6100012AA100012CB +S31540018FB0AC100014A1802046A4100000AA100000A5 +S31540018FC001000000A180204EA810210001000000F0 +S31540018FD0A18000000100000001000000E83CA03033 +S31540018FE082A480131280016682A500161280016454 +S31540018FF0010000000100000001000000874400005C +S315400190008D30E00B8C89A0078CA1A0051280015CF4 +S31540019010A1800000010000000100000001000000E5 +S31540019020E81CA03082A500161280015582A5401287 +S31540019030A41000001280015201000000010000004E +S31540019040874400008D30E00B8C89A0078CA1A003DA +S315400190501280014B010000001080008C01000000CD +S3154001906080A1A0011280002325100000E41C80008D +S315400190702510000029100000A8152104A610001291 +S31540019080AA100012AC100014A1802046A4100000C2 +S31540019090AA10000001000000A180204EA810210066 +S315400190A001000000A1800000010000000100000055 +S315400190B001000000E83C800082A480131280013048 +S315400190C082A500161280012E010000000100000059 +S315400190D0874400008D30E00B8C89A0078CA1A0024B +S315400190E01280012701000000108000680100000085 +S315400190F080A1A00312800065A6100000A210200ED8 +S31540019100A1844000A6100000A1800000A814E00040 +S31540019110AB44000001000000AC14E0000100000077 +S31540019120AF44000080A5200012800115AA8D6E0073 +S3154001913080A540001280011280A5A0001280011076 +S31540019140AF35E00BAE0DE00780A5E0011280010CC2 +S3154001915001000000A0100000A1844000A6100000FC +S31540019160A1800000E8180000AC100000AE1000001D +S31540019170EC04C000EE04E00480A500161280010054 +S3154001918080A54017128000FE01000000A5440000A2 +S31540019190A534A00BA40CA00780A4A001128000F85E +S315400191A001000000A0100000A1844000A6100000AC +S315400191B0A1800000A210200AA1844000A410000052 +S315400191C0A1800000E8180000AC100000AE100000BD +S315400191D0EC04C012EE04E00480A50016128000E8FB +S315400191E080A54017128000E601000000A54400005A +S315400191F0A534A00BA40CA00780A4A002068000E021 +S315400192000100000021100120A0142200EC1C0000E6 +S31540019210A0042008E81C0000A1844000A61000001C +S31540019220A1800000A210200EA1844000A4100010CD +S31540019230AC100000AE100000A1800000010000004B +S3154001924001000000EC3C8013AC100000AE100000A1 +S31540019250E81CC01280A50016128000C980A54017DF +S31540019260128000C701000000A5440000A534A00BF0 +S31540019270A40CA00780A4A004128000C10100000034 +S3154001928010800002010000008B4440008A09601FE3 +S3154001929080A160010280000A8C1000059DE3BFA0F9 +S315400192A08AA1600116BFFFFE0100000081E80000AF +S315400192B08CA1A00116BFFFFE0100000001000000C5 +S315400192C001000000A023A080A02C20078E100010D2 +S315400192D0A3480000E2240000C2242004C43C200824 +S315400192E0C83C2010CC3C2018F03C2020F43C2028DF +S315400192F0F83C2030FC3C2038D03C2040D43C20482F +S31540019300D83C2050DC3C2058A5500000E424206085 +S31540019310801020088210200184102002861020032C +S31540019320881020048A1020058C10200681900000A8 +S31540019330A42C601F818C8000010000000100000008 +S3154001934001000000030040408210610184100000CA +S3154001935086100000894440008809201F86100004B9 +S31540019360A010000284004002A210000284004002C4 +S31540019370A410000284004002A610000284004002AC +S31540019380A810000284004002AA1000028400400294 +S31540019390AC10000284004002AE100002840040027C +S315400193A090100002840040029210000284004002A4 +S315400193B0941000028400400296100002840040028C +S315400193C098100002840040029A1000028400400274 +S315400193D09C100002840040029E100002840040025C +S315400193E081E0000086A0E00116BFFFDE010000001B +S315400193F00300404082106101841000008610000481 +S3154001940080A400021280003F8400400280A44002F2 +S315400194101280003C8400400280A480021280003900 +S315400194208400400280A4C0021280003684004002BB +S3154001943080A50002128000338400400280A54002CC +S31540019440128000308400400280A580021280002DE7 +S315400194508400400280A5C0021280002A8400400296 +S3154001946080A20002128000278400400280A24002AE +S31540019470128000248400400280A2800212800021D2 +S315400194808400400280A2C0021280001E8400400275 +S3154001949080A300021280001B8400400280A3400288 +S315400194A0128000188400400280A3800212800015B9 +S315400194B08400400280A3C002128000128400400250 +S315400194C081E0000086A0E00116BFFFCE010000004A +S315400194D080A020001280000B80A0FFFF12800009AF +S315400194E080A160051280000780A1A00612800005B8 +S315400194F001000000A010000710800006C0242020B3 +S31540019500A01000079010200110800002D0242020D6 +S3154001951082100007C40040008188800001000000DD +S315400195200100000001000000C4186008C81860105E +S31540019530CC186018F0186020F4186028F8186030CC +S31540019540FC186038D0186040D4186048D81860506C +S31540019550DC186058E4006060C200600481948000B9 +S31540019560010000000100000001000000A0100007FA +S31540019570F004202081C7E00881E8000010BFFFFC0D +S31540019580B01000000100000081D8200081C3E0082E +S31540019590010000000328000084106004952AA00DF4 +S315400195A0D0204000922270009202400AD2208000D0 +S315400195B081C3E0080100000003100124C40061A436 +S315400195C003100124C2006194852A400286102001BD +S315400195D08328C00182007FFF900A00019000800825 +S315400195E08213C0007FFFE74C9E104000010000003F +S315400195F003100124C40061A403100124C200619434 +S31540019600852A4002861020018328C00182007FFFFF +S31540019610900A0001900080088213C0007FFFE73A5C +S315400196209E104000010000009DE3BFA02D100124C3 +S31540019630C205A198A410001880A0600004800020F3 +S31540019640B01020012F1001242B100124D005E1A4D4 +S3154001965029100124AC15A198AE15E1A4AA1561946F +S31540019660A8152184A0102000A2102000A6102001D8 +S31540019670C2054000832CC00182007FFF820C80011D +S31540019680912C00087FFFE72090020001C2050000EF +S31540019690901A0012820A000180A00001C2058000D2 +S315400196A0A2647FFFA004200180A0401034BFFFF1D7 +S315400196B0D005C00080A00011B0603FFF81C7E0081F +S315400196C081E800009DE3BFA003100124C40061A40A +S315400196D003100124C2006194B32E4002841020017C +S315400196E08328800182007FFF820E00019210001ABA +S315400196F07FFFE70B9006400181C7E00881E8000043 +S315400197009DE3BFA003100124C40061A403100124FA +S31540019710C2006194B32E4002841020018328800147 +S3154001972082007FFF820E00019210001A7FFFE6F849 +S315400197309006400181C7E00881E80000031001243A +S31540019740C400618C03100124C2006188852A40024D +S31540019750861020018328C00182007FFF900A000104 +S31540019760900080088213C0007FFFE6E39E10400010 +S31540019770010000009DE3BFA003100124C400618CD9 +S3154001978003100124C2006188B32E400284102001D7 +S315400197908328800182007FFF820E00019210001A09 +S315400197A07FFFE6D79006400181C7E00881E80000C7 +S315400197B09DE3BFA003100124C400618C0310012462 +S315400197C0C2006188B32E40028410200183288001A3 +S315400197D082007FFF820E00019210001A7FFFE6C4CD +S315400197E09006400181C7E00881E80000031001248A +S315400197F0C400618C03100124C2006188852A40029D +S31540019800861020018328C00182007FFF900A000153 +S31540019810900080088213C0007FFFE6B39E1040008F +S3154001982001000000033FFFBF821063089DE38001F2 +S315400198300310004C82106020C227BFEC0310004C7D +S31540019840821060602F10004CC227BFF4AE15E000B5 +S315400198503510004CEE27BFE8B416A0409010200604 +S315400198607FFF9E6EF427BFF07FFFE69B901020009E +S31540019870213FFFBF920A3FF0A014236890102000B9 +S315400198807FFFE697A0078010230000307FFFE69216 +S3154001989090102000808A001112BFFFFD01000000D8 +S315400198A081D82000230000307FFFE68B90102000F6 +S315400198B0808A001112BFFFFD010000002310012420 +S315400198C07FFFE6859010200013002040A410000879 +S315400198D09212600F921200097FFFE68190102000DC +S315400198E07FFFE67D90102008D02461807FFFE67AD5 +S315400198F09010200C09100124C40461809938A014E9 +S3154001990013100124980B200F8603200AC6212188B3 +S31540019910091001240310012496102400C621218C2C +S31540019920893A20148809200F9401200AD42261948F +S31540019930131001242D100124D0206190D42261A45A +S3154001994015100124932AC004833A2018D222A1A0DB +S315400199501510012482086003820060011B2000006B +S315400199608801200837100124C225A19892012002BE +S31540019970821020019328400992234009D222A184D2 +S315400199801510012487284003913A20109A23400359 +S31540019990992AC00CDA26E19CD822A17CA20A20078A +S315400199A08738A018A93CA00CBA210011A408E003ED +S315400199B08538A010A88D2003AA08A007A404A001F9 +S315400199C0AB284015A3284011AB284015901000172D +S315400199D0AA057FFFA610200002800123B807BFE831 +S315400199E0A6042020030048D182106167C224C0002A +S315400199F003226AF3821061EFC2242024C20C202084 +S31540019A0080A0600102800004010000007FFF9E0AE1 +S31540019A109010201AC20C202180A0602302800004ED +S31540019A20010000007FFF9E049010201BC20C2022E3 +S31540019A3080A0604502800004010000007FFF9DFE7A +S31540019A409010201CC20C202380A060670280000475 +S31540019A50010000007FFF9DF89010201DC20C2024BC +S31540019A6080A0608902800004010000007FFF9DF212 +S31540019A709010201EC20C202580A060AB02800004FD +S31540019A80010000007FFF9DEC9010201FC20C202694 +S31540019A9080A060CD02800004010000007FFF9DE6AA +S31540019AA090102020C20C202780A060EF0280000485 +S31540019AB0010000007FFF9DE090102021C21420206C +S31540019AC0832860108330601080A0612302800004E7 +S31540019AD0010000007FFF9DD890102022C41420224F +S31540019AE08528A010030000118530A01082106167FF +S31540019AF080A0800102800004010000007FFF9DCE0E +S31540019B0090102023C41420248528A010030000228D +S31540019B108530A010821061AB80A0800102800004D4 +S31540019B20010000007FFF9DC490102024C41420260C +S31540019B308528A010030000338530A010821061EF04 +S31540019B4080A0800102800005821020307FFF9DBAEF +S31540019B509010202582102030C22C2020030C08D1E1 +S31540019B6082106167C404C00080A0800102800005A4 +S31540019B70821020317FFF9DB0901020278210203126 +S31540019B80C22C2021030C0C5182106167C404C00011 +S31540019B9080A0800102800005821020327FFF9DA6B1 +S31540019BA09010202882102032C22C2022030C0C4C0B +S31540019BB082106267C404C00080A080010280000553 +S31540019BC0821020337FFF9D9C9010202982102033E4 +S31540019BD0C22C2023030C0C4C82106233C404C000F7 +S31540019BE080A0800102800005821020347FFF9D9273 +S31540019BF09010202A82102034C22C2024030D2AF3EF +S31540019C00821061EFC404202480A0800102800005F7 +S31540019C10821020357FFF9D889010202B82102035A1 +S31540019C20C22C2025030D0D73821061EFC40420243C +S31540019C3080A0800102800005821020367FFF9D7E34 +S31540019C409010202C82102036C22C2026030D0D4D5B +S31540019C50821062EFC404202480A0800102800005A6 +S31540019C60821020377FFF9D749010202D821020375F +S31540019C70C22C2027030D0D4D82106237C4042024C7 +S31540019C8080A0800102800005030000107FFF9D6ACD +S31540019C909010202E0300001082106041C234202013 +S31540019CA00310104C82106233C404C00080A08001AE +S31540019CB002800005030000107FFF9D5F9010202F5A +S31540019CC00300001082106243C23420220310105058 +S31540019CD082106243C404C00080A080010280000556 +S31540019CE0030000117FFF9D549010203003000011A6 +S31540019CF082106045C23420240311114D821062370F +S31540019D00C404202480A080010280000503000011C4 +S31540019D107FFF9D4990102031030000118210624758 +S31540019D20C23420260311115182106247C4042024F3 +S31540019D3080A0800102800004010000007FFF9D3E5B +S31540019D409010203281D82000C205A19880A06000E1 +S31540019D500480001B80A52000251001241910012430 +S31540019D60A414A198981321A48810200080A460000F +S31540019D709B2920100480000C82102000C40300009F +S31540019D8085290002840040028528A0028610400DE4 +S31540019D9082006001C624000280A0401132BFFFF953 +S31540019DA0C4030000C20480008801200180A0400451 +S31540019DB014BFFFF080A4600080A520001280002817 +S31540019DC0230000107FFFE54490102000808A001197 +S31540019DD012BFFFFDC205A19880A060000480001B50 +S31540019DE0010000002510012427100124A414A19884 +S31540019DF0A614E18410800006A2102000A20460018E +S31540019E0080A0401104800011010000009210001151 +S31540019E107FFFFDF890100010C204C000901C00089E +S31540019E20808A000132BFFFF6C20480007FFF9D0297 +S31540019E3090102033C2048000A204600180A040112A +S31540019E4014BFFFF4921000117FFFE523901020000C +S31540019E509212200F7FFFE5229010200081C7E00873 +S31540019E6091E820009FC20000A604E00180A480136F +S31540019E7004800008832CE002D00700019FC2000045 +S31540019E80A604E00180A4801314BFFFFC832CE002EA +S31540019E907FFFE51190102000B616E19C920A3FFC27 +S31540019EA0A8102000901020007FFFE50DB81020007B +S31540019EB0B207BFE810800005A610200080A48013D9 +S31540019EC024800012A8052001921000137FFFFE484E +S31540019ED090100017820A001580A0401512BFFFF8A6 +S31540019EE0A604E001C206C000901DC008900A000108 +S31540019EF080A00008B8673FFF80A4801314BFFFF419 +S31540019F0092100013A805200180A480140480000447 +S31540019F10832D200210BFFFE8EE0640017FFFE4EEED +S31540019F2090102000A6100008901020007FFFE4EC5E +S31540019F309214E00380A72000028001830100000003 +S31540019F40A73CE013808CE0031280018501000000EC +S31540019F5081D82000250000307FFFE4DF90102000EB +S31540019F60808A001212BFFFFDAA100008C205A198FF +S31540019F7080A060000480000F053FFFBF251001242B +S31540019F80A6102000A414A19892100013901000105E +S31540019F907FFFFDDC94102000C2048000A604E0018E +S31540019FA080A0401314BFFFFA92100013053FFFBF74 +S31540019FB0821020008410A36884078002C0204002DA +S31540019FC08200600480A0607C12BFFFFD010000009A +S31540019FD082102005C224000082102001C2242004E0 +S31540019FE082102002C224200882102003C224200CA1 +S31540019FF0901000107FFFFD8DA804200480A2200050 +S3154001A0000280014A01000000C204000080A06005F0 +S3154001A01002800004010000007FFF9C87901020060B +S3154001A0207FFFFD829010001080A2200012800199CE +S3154001A030C205A19880A060000480001201000000C2 +S3154001A04025100124A6102000A414A19892100013F3 +S3154001A050941020007FFFFD9C901000109210001379 +S3154001A060901000147FFFFD9894102000C2048000D8 +S3154001A070A604E00180A0401314BFFFF6921000131E +S3154001A0807FFFE4AB90100010A60420207FFFE4A8D8 +S3154001A090901000137FFFE4A6900420407FFFE4A4C4 +S3154001A0A090042060C205A19880A0600004800180D0 +S3154001A0B0B810200025100124A414A198AE10200048 +S3154001A0C0921000177FFFFD3D90100010C2048000E2 +S3154001A0D0901A200580A00008AE05E001B8673FFF51 +S3154001A0E080A0401714BFFFF89210001780A72000E8 +S3154001A0F00280016F01000000033FFFBF82106368C9 +S3154001A100C41F8001C43FBFA8C207BFA880A0600585 +S3154001A1101280000601000000C207BFAC80A06001AA +S3154001A12002800005C205A1987FFF9C43901020093B +S3154001A130C205A19880A06000048000382510012442 +S3154001A140B8102000A414A198AE1020009210001758 +S3154001A1507FFFFD1A90100014C2048000901A20015E +S3154001A16080A00008AE05E001B8673FFF80A0401718 +S3154001A17014BFFFF89210001780A720011280002714 +S3154001A180833D6013808860031280002A010000002D +S3154001A190C2042004C224000082102005C22400000B +S3154001A1A090102001D024200482102002C2242008CD +S3154001A1B082102003C224200C92100011400003B3E8 +S3154001A1C0912A001DA52A2002032EEEEE821063BBC2 +S3154001A1D0C22400127FFFFD159010001080A22000BE +S3154001A1E01280013701000000C4040012032EEEEE76 +S3154001A1F0A93D600C821063BB80A0800102BFFDFABD +S3154001A200A80D2003901020127FFF9C0BA93D600CE6 +S3154001A21010BFFDF5A80D20037FFF9C079010200A73 +S3154001A220833D60138088600302BFFFDA01000000AE +S3154001A2307FFFE42990102000033FFFF08210603F2A +S3154001A240920A00017FFFE426901020009210200020 +S3154001A25094102000AA07BFA87FFFFD1B9010001590 +S3154001A2607FFFE41D901020000303C00092120001FD +S3154001A2707FFFE41B90102000C205A19880A06000DA +S3154001A2800480000F8210200125100124A81020000F +S3154001A290A414A19892100014901000157FFFFD0A96 +S3154001A2A094102005C2048000A805200180A0401416 +S3154001A2B014BFFFFA9210001482102001C22FBFA8CA +S3154001A2C00300400082106005C407BFA880A080013A +S3154001A2D002800004010000007FFF9BD79010200BF5 +S3154001A2E07FFFE3FD90102000833A20068208600339 +S3154001A2F080A0600102800004010000007FFF9BCE28 +S3154001A3009010200C7FFFE3F4901020000303C0005F +S3154001A31025000030922A00017FFFE3F190102000D2 +S3154001A3207FFFE3ED90102000808A001212BFFFFDEF +S3154001A33092102000941020007FFFFCE3901000153E +S3154001A3407FFFE3E5901020002503C0009212001222 +S3154001A3507FFFE3E3901020007FFFE3DF90102000B2 +S3154001A360808A001202BFFFFDAE100008C205A19807 +S3154001A37080A060000480001025100124B81020013F +S3154001A380B92F0011A414A198B8073FFFA8102000C7 +S3154001A39092100014901000157FFFFCDA9410001CF7 +S3154001A3A0C2048000A805200180A0401414BFFFFA12 +S3154001A3B0921000141303C00090102000922DC00982 +S3154001A3C07FFFE3C72503C0007FFFE3C39010200052 +S3154001A3D0808A001212BFFFFD01000000C407BFA81A +S3154001A3E0030040008210600580A0800102800004C5 +S3154001A3F0010000007FFF9B909010200D7FFFE3B688 +S3154001A40090102000833A20088208600380A06001F2 +S3154001A41002800005841020117FFF9B879010200F3A +S3154001A4208410201186102055901020002500003000 +S3154001A430C43FBFF87FFFE3A801000000033C3FFF94 +S3154001A4400503C0008210633F820A0001901020007C +S3154001A4507FFFE3A3921040027FFFE39F901020000D +S3154001A460808A001212BFFFFDAE07BFF87FFFE3BE31 +S3154001A47090100017C205A19880A060000480000FCB +S3154001A4800100000025100124AA07BFFCA414A198CD +S3154001A490A810200092100014901000157FFFFC8A2E +S3154001A4A094102055C2048000A805200180A04014C4 +S3154001A4B014BFFFFA921000147FFFE3AB9010001710 +S3154001A4C080A220110280008180A260557FFF9B5AA5 +S3154001A4D0901020107FFFE38090102000833A2006E1 +S3154001A4E08208600380A0600102800004A410000875 +S3154001A4F07FFF9B5190102010133C3FF0901020009D +S3154001A5009212603F920C80097FFFE375250000306F +S3154001A5107FFFE37190102000808A001212BFFFFD79 +S3154001A520AA10000830BFFF1B7FFF9B4390102005F8 +S3154001A530C204000080A0600512BFFEB80100000001 +S3154001A54030BFFEB87FFF9B3C90102001A73CE01333 +S3154001A550808CE00302BFFE7F010000007FFFE35EC7 +S3154001A56090102000133FFFF0AA1000089212603F9E +S3154001A570920A00097FFFE35A901020007FFFE2B163 +S3154001A580A810001A0303C000133C3FFF901020009F +S3154001A590921263FC920D4009A61020007FFFE35002 +S3154001A5A09212400192100013901000147FFFFC722A +S3154001A5B094102000A604E00180A4801334BFFFFB61 +S3154001A5C092100013901020001303C0007FFFE34454 +S3154001A5D0921540097FFFE29B010000007FFFE33EA9 +S3154001A5E090102000833A200A8208600380A060010F +S3154001A5F002800005250000307FFF9B0F901020024E +S3154001A600250000307FFFE33490102000808A00123D +S3154001A61012BFFFFD0100000001000000920A3FFC4D +S3154001A6207FFFE32F9010200090100014921020001D +S3154001A6307FFFFC6094102000010000007FFFE326AD +S3154001A64090102000033C3FFF821063FC820A000108 +S3154001A650901020007FFFE32292106003010000006A +S3154001A6607FFFE278010000007FFFE31B901020008E +S3154001A670833A200C8208600380A0600102BFFE3548 +S3154001A680010000007FFF9AEC9010200330BFFE319D +S3154001A6907FFF9AE990102007C205A19880A060002B +S3154001A6A034BFFE692510012430BFFE767FFF9AE252 +S3154001A6B09010200810BFFE92033FFFBF7FFF9ADE36 +S3154001A6C09010201130BFFEC912BFFF81010000006A +S3154001A6D030BFFF819DE3BFA07FFFFC530100000017 +S3154001A6E013002040B01000089212600F7FFFE2FC79 +S3154001A6F09010200081C7E00881E800009DE3BFA0DB +S3154001A7007FFF9ABF1100412C82102007EC062004DE +S3154001A710E0062004C2262008AC0DA003AC05A0012A +S3154001A72001000000C02600007FFF9ABC9010200A5D +S3154001A7300300020084103FFFB8060001C426000151 +S3154001A740A13C2002292AAAAAA00C27FFA81522AAC1 +S3154001A7502B155555A12C2008AA1561558810001CAA +S3154001A760C2060001A8084014AA0840159A10200004 +S3154001A77080A420002280000D9A03600186012020DA +S3154001A7808410000482102000EA208000E820C000E6 +S3154001A790820060108400A04080A0401006BFFFFBED +S3154001A7A08600E0409A03600180A5800D14BFFFF149 +S3154001A7B0880120043B000200AE102000BA17602039 +S3154001A7C0BA06001D80A4200022800017AE05E001D4 +S3154001A7D0A610001CA410001DA2102000C204C00037 +S3154001A7E080A0401502800004010000007FFF9A927C +S3154001A7F090102001C204800080A0401422800005F0 +S3154001A800A20460107FFF9A8C90102001A204601070 +S3154001A810A604E04080A4401006BFFFF1A404A04076 +S3154001A820AE05E00180A5801714BFFFE7BA076004B3 +S3154001A8307FFF9A7A9010200C2F0008001B15555562 +S3154001A840AE060017092AAAAA9A136155881122AAA7 +S3154001A85098100017961020001500020080A42000D1 +S3154001A8602280000D9602E001860320048410000C2C +S3154001A87082102000DA208000C820C00082006002D9 +S3154001A8808400A00880A0401006BFFFFB8600E008B8 +S3154001A8909602E00180A5800B14BFFFF19803000AE0 +S3154001A8A02B155555292AAAAAAA156155A81522AAD2 +S3154001A8B0BA1020003900020080A42000228000172F +S3154001A8C0BA076001A605E004A4100017A2102000F3 +S3154001A8D0C204800080A040150280000401000000EF +S3154001A8E07FFF9A5590102003C204C00080A04014F7 +S3154001A8F022800005A20460027FFF9A4F9010200338 +S3154001A900A2046002A404A00880A4401006BFFFF17F +S3154001A910A604E008BA07600180A5801D14BFFFE7C1 +S3154001A920AE05C01C2F0008001B155555AE15E00499 +S3154001A930092AAAAAAE0600179A136155881122AAB6 +S3154001A94098100017961020001500020080A42000E0 +S3154001A9502280000D9602E00186033FFC8410000C24 +S3154001A96082102000DA208000C820C00082006002E8 +S3154001A9708400A00880A0401006BFFFFB8600E008C7 +S3154001A9809602E00180A5800B14BFFFF19803000AEF +S3154001A9902B155555292AAAAAAA156155A81522AAE1 +S3154001A9A0BA1020003900020080A42000228000173E +S3154001A9B0BA076001A605FFFCA4100017A2102000EB +S3154001A9C0C204800080A040150280000401000000FE +S3154001A9D07FFF9A1990102004C204C00080A0401441 +S3154001A9E022800005A20460027FFF9A139010200482 +S3154001A9F0A2046002A404A00880A4401006BFFFF18F +S3154001AA00A604E008BA07600180A5801D14BFFFE7D0 +S3154001AA10AE05C01C82102005C22620080320000076 +S3154001AA20C226000081C7E00881E80000033FFFBF5E +S3154001AA30821063609DE380017FFFFAD425200000E8 +S3154001AA404000016E2D0000307FFFE2239010200868 +S3154001AA50AA1000087FFFE2209010200C7FFF9A1277 +S3154001AA60AE100008912A20047FFF99EC9002200C39 +S3154001AA7082102001873D60148608E00F8600E00AB7 +S3154001AA80A73D6010A13D6018853DE014A60CE00786 +S3154001AA908408A00FA604E0028400A00AA728401358 +S3154001AAA0A00C2003A93DE010A0042001A80D200719 +S3154001AAB0A12C0003A8052002AA2480108604FFFFCA +S3154001AAC0A9284014A33DE01882053FFFA20C60036C +S3154001AAD0A2046001AA154003A32C4002A4248011BC +S3154001AAE0A41480017FFFE1FC90102000808A0016AB +S3154001AAF012BFFFFD133FFFBF90100011921263C0BA +S3154001AB0015155555920780097FFFE1869412A15587 +S3154001AB1080A220001280007001000000133FFFBF99 +S3154001AB2090100011921263C0152AAAAA92078009B1 +S3154001AB307FFFE1909412A2AA80A2200012800063B6 +S3154001AB40010000007FFF99D801000000912A2004EE +S3154001AB507FFF99B29002200A4000012501000000C2 +S3154001AB60032AAAAA981062AA8210620090100011C4 +S3154001AB70920C8001941000127FFFE1A796100014F9 +S3154001AB8080A220001280004D01000000031555559A +S3154001AB9098106155821061009010001194100012B6 +S3154001ABA0961000147FFFE19C920C800180A2200048 +S3154001ABB01280003F010000007FFF99BB01000000A9 +S3154001ABC0912A20047FFF99959002200B9010001046 +S3154001ABD0131555557FFFE1779212615580A22000EA +S3154001ABE01280002F0100000090100010132AAAAA1B +S3154001ABF07FFFE170921262AA80A220001280002596 +S3154001AC00010000007FFF99A801000000912A20045D +S3154001AC107FFF998290022009901000109210001532 +S3154001AC2094100013172AAAAA7FFFE16E9612E2AA90 +S3154001AC3080A2200012800013010000009010001035 +S3154001AC409210001594100013171555557FFFE165B5 +S3154001AC509612E15580A22000028000040100000006 +S3154001AC607FFF9975901020087FFFFA48B0102000A9 +S3154001AC70400000E20100000081C7E00881E80000D1 +S3154001AC807FFF996D9010200710BFFFEE90100010C6 +S3154001AC907FFF99699010200630BFFFDB7FFF9966E1 +S3154001ACA09010200510BFFFD2901000107FFF9962CF +S3154001ACB09010200430BFFFC17FFF995F90102003A1 +S3154001ACC010BFFFB4031555557FFF995B90102002C5 +S3154001ACD030BFFF9D7FFF99589010200110BFFF9113 +S3154001ACE0133FFFBF81C3E0089144400080800000CC +S3154001ACF0151001209412A1EC9010200092102246CA +S3154001AD0081800000010000000100000001000000F8 +S3154001AD10D00280009122400881C3E0080100000072 +S3154001AD2081800000901020018090200180F0200158 +S3154001AD301280004B010000000100000001000000EC +S3154001AD40010000008090200180F82001128000441B +S3154001AD5001000000010000000100000001000000A8 +S3154001AD608090200180FA3FFF010000001680003CE0 +S3154001AD700100000001000000010000000100000088 +S3154001AD808180000090102001809020010100000088 +S3154001AD9080D0200112800032010000000100000035 +S3154001ADA0010000000100000080D220010280002C39 +S3154001ADB00100000080D23FFF1680002901000000FB +S3154001ADC080DA3FFF9340000080A27FFF128000247B +S3154001ADD00100000080D23FFF934800009332601487 +S3154001ADE0920A600F80A260081280001D01000000D7 +S3154001ADF08180000090102001945220049452A004B6 +S3154001AE009452A00496A2A0401280001501000000B1 +S3154001AE10818000009010200280A000003280001046 +S3154001AE209052000880A220021280000D010000000D +S3154001AE30818000009010200280A0000001000000E7 +S3154001AE40328000079052000880A22002128000043E +S3154001AE500100000081C3E0089010200181C3E00891 +S3154001AE60901000001315555592126155A582400068 +S3154001AE70010000000100000001000000954480002F +S3154001AE8080A2400A1280004301000000923A40002D +S3154001AE90A582400001000000010000000100000001 +S3154001AEA09544800080A2400A1280003A01000000C9 +S3154001AEB01100003F901223FFA58000008180000011 +S3154001AEC001000000010000000100000093F23FFF75 +S3154001AED09A10000993F23FFF93F23FFF93F23FFF2F +S3154001AEE093F23FFF93F23FFF93F23FFF93F23FFF0F +S3154001AEF09940000097448000153FFC009412A00839 +S3154001AF0080A2400A1280002380A2400B12800021B9 +S3154001AF1080A320071280001F113FFF80901220015D +S3154001AF2080A340081280001B1100003F901223FFAE +S3154001AF30A5800000818000000100000001000000A2 +S3154001AF400100000093FA3FFF93FA3FFF93FA3FFF58 +S3154001AF5093FA3FFF93FA3FFF93FA3FFF93FA3FFF7E +S3154001AF6093FA3FFF994000009744800080A2600811 +S3154001AF701280000880A260081280000680A320008B +S3154001AF80128000040100000081C3E00890102001F6 +S3154001AF9081C3E008901000008180000090102002DB +S3154001AFA080A00000328000109072000880A220022A +S3154001AFB01280000D010000008180000090102002E7 +S3154001AFC080A0000001000000328000079072000856 +S3154001AFD080A22002128000040100000081C3E00823 +S3154001AFE09010200181C3E00890100000C0A00040ED +S3154001AFF081C3E00801000000110020409012200F9B +S3154001B000D0A0004081C3E008010000009DE3BFA03D +S3154001B0107FFFE0B190102008A21000087FFFE0AE4C +S3154001B0209010200CA0100008C0A00040833C601482 +S3154001B0308208600F8200600A913C6018900A2003E2 +S3154001B040900220017FFFE01B912A0001833C2014DE +S3154001B0508208600F8200600A913C2018900A200302 +S3154001B060900220017FFFE021912A00017FFFF947ED +S3154001B07001000000110020409012200FD0A0004096 +S3154001B08081C7E00881E8000098120009818200002A +S3154001B0909AAB2FFF0280002598880000992300096A +S3154001B0A09923000999230009992300099923000945 +S3154001B0B09923000999230009992300099923000935 +S3154001B0C09923000999230009992300099923000925 +S3154001B0D09923000999230009992300099923000915 +S3154001B0E09923000999230009992300099923000905 +S3154001B0F099230009992300099923000999230009F5 +S3154001B10099230009992300099923000999230009E4 +S3154001B11099230009992300099923000999230000DD +S3154001B12081C3E00891400000992300099923000951 +S3154001B13099230009992300099923000999230009B4 +S3154001B14099230009992300099923000999230009A4 +S3154001B1509923000999230009992300009B40000087 +S3154001B160992B200C9B33601481C3E0089013400C4B +S3154001B1701080000B8610200080924008168000083F +S3154001B18086100008809240001680000480920000DC +S3154001B1901680000392200009902000089A924000F0 +S3154001B1A0128000059610000891D0200281C3E00864 +S3154001B1B09010000080A2C00D0A80009594100000F6 +S3154001B1C00302000080A2C0010A80002898100000F6 +S3154001B1D080A340011A80000D841020019B2B60043E +S3154001B1E010BFFFFC980320019A83400D1A80000787 +S3154001B1F08400A001832860049B3360019A034001C7 +S3154001B200108000078420A00180A3400B0ABFFFF7EE +S3154001B21001000000028000020100000084A0A0019C +S3154001B22006800076010000009622C00D9410200190 +S3154001B2301080000A01000000952AA0010680000541 +S3154001B2409B3360019622C00D108000049402A00138 +S3154001B2509602C00D9422A00184A0A00116BFFFF75B +S3154001B2608092C000308000659B2B600480A3400B18 +S3154001B27008BFFFFE988320010280006598232001C4 +S3154001B2808092C000952AA0040680002F9B3360015E +S3154001B29096A2C00D068000179B33600196A2C00D91 +S3154001B2A00680000B9B33600196A2C00D0680000507 +S3154001B2B09B33600196A2C00D108000509402A00FEE +S3154001B2C09682C00D1080004D9402A00D9682C00D4D +S3154001B2D0068000059B33600196A2C00D1080004791 +S3154001B2E09402A00B9682C00D108000449402A009DE +S3154001B2F09682C00D0680000B9B33600196A2C00D5D +S3154001B300068000059B33600196A2C00D1080003B6C +S3154001B3109402A0079682C00D108000389402A005C1 +S3154001B3209682C00D068000059B33600196A2C00D32 +S3154001B330108000329402A0039682C00D1080002F27 +S3154001B3409402A0019682C00D068000179B336001CE +S3154001B35096A2C00D0680000B9B33600196A2C00DDC +S3154001B360068000059B33600196A2C00D1080002324 +S3154001B3709402BFFF9682C00D108000209402BFFD4B +S3154001B3809682C00D068000059B33600196A2C00DD2 +S3154001B3901080001A9402BFFB9682C00D10800017E0 +S3154001B3A09402BFF99682C00D0680000B9B33600163 +S3154001B3B096A2C00D068000059B33600196A2C00D82 +S3154001B3C01080000E9402BFF79682C00D1080000BCC +S3154001B3D09402BFF59682C00D068000059B3360013D +S3154001B3E096A2C00D108000059402BFF39682C00D4F +S3154001B3F0108000029402BFF198A3200116BFFFA25C +S3154001B4008092C000268000029602C0098090C0004A +S3154001B410268000029620000B81C3E0089010000BA5 +S3154001B42092100008941020009010200096102000E1 +S3154001B4308213C000400001E39E104000010000005D +S3154001B4409210000803100121D00062A88213C000A7 +S3154001B450400002629E104000010000009210000868 +S3154001B46003100121D00062A88213C00040000003EE +S3154001B4709E104000010000009DE3BFA08410200003 +S3154001B4808206600B80A0601608800004A010201080 +S3154001B490A0087FF88534201F80A400190A80004641 +S3154001B4A08088A0FF1280004401000000400001AFE7 +S3154001B4B09010001880A421F7188000418334200998 +S3154001B4C023100120A214622082044010E400600C83 +S3154001B4D080A480010280010F99342003C604A00490 +S3154001B4E0C404A00CC204A0088608FFFC860480039D +S3154001B4F0C800E00488112001C220A008C820E00449 +S3154001B500C420600C9010001840000192B004A008BD +S3154001B51081C7E00881E80000E6046008E804E00429 +S3154001B520A80D3FFC8225001080A0600F148000D238 +S3154001B53080A40014031001232F100121EA0060FCAE +S3154001B540C205E22CAA05601080A07FFF028000049C +S3154001B550AA054010AA056FFFAA0D700090100018A9 +S3154001B560400001889210001580A23FFF0280000929 +S3154001B570A41000088404C01480A08008088000EC50 +S3154001B5802D10012380A44013028000EAC205A108C0 +S3154001B590C2046008C40060048408BFFC8220801095 +S3154001B5A080A0600F1480012280A40002400001693E +S3154001B5B09010001881C7E00891E8200099342003D3 +S3154001B5C080A060000280000F872B200380A06004CA +S3154001B5D008800092993420069800605B80A0601430 +S3154001B5E008800008872B200380A06054188001132F +S3154001B5F080A061549934200C9803206E872B200338 +S3154001B60023100120A214622086044003E400E00CCA +S3154001B61080A0C0123280000BC404A0041080001028 +S3154001B6209803200136800068C604A00CE404A00CEF +S3154001B63080A0C0122280000A98032001C404A004FD +S3154001B6408408BFFC8220801080A0600F04BFFFF6F3 +S3154001B65080A0600098033FFF980320010710012056 +S3154001B6608610E228E400E00880A0C0122280002A69 +S3154001B670C2046004C404A0048408BFFC8220801074 +S3154001B68080A0600F1480008A80A06000C620E00C74 +S3154001B69016800059C620E00880A0A1FF28800062DC +S3154001B6A08530A0038330A00980A06004188000E99A +S3154001B6B08800605B8930A006880120389B292003D9 +S3154001B6C09A04400DC203600880A0400D32800008F4 +S3154001B6D0C8006004108000E9DA04600480A34001D8 +S3154001B6E022800008C400600CC800600488093FFC41 +S3154001B6F080A080042ABFFFFAC2006008C400600C23 +S3154001B700C424A00CC224A008E420600CE420A008B4 +S3154001B710C2046004853B2002881020018929000269 +S3154001B72080A040042ABFFF7EE6046008808840046A +S3154001B7302280004B980B3FFC952B20039610000C62 +S3154001B7409404400A9A10000AE403600C80A3401254 +S3154001B7503280000BC404A004108000589602E00118 +S3154001B76036800019C604A00CE404A00C80A3401244 +S3154001B770228000529602E001C404A0048408BFFC62 +S3154001B7808220801080A0600F04BFFFF680A0600079 +S3154001B790DA04A00CC804A00884048010A014200177 +S3154001B7A0C8236008DA21200CC420E00CC420E0083C +S3154001B7B0E024A004C2208001C620A0081080001009 +S3154001B7C0C620A00CC204A00884048002C800A004BC +S3154001B7D088112001C220E008C820A004C620600CC0 +S3154001B7E090100018400000DBB004A00881C7E008B3 +S3154001B7F081E8000084048002C200A0048210600136 +S3154001B800C220A00490100018400000D2B004A00845 +S3154001B81081C7E00881E800009803203810BFFF790E +S3154001B820872B20038928A00388044004DA012008D5 +S3154001B830D6046004C824A00CDA24A0088538A002E6 +S3154001B84082102001E423600C83284002E421200871 +S3154001B8508210400B10BFFFB0C22460048929200129 +S3154001B8608088400402BFFFFE9803200410BFFFB446 +S3154001B870952B200338BFFF3103100123E4046008F0 +S3154001B88084048010A014200182106001E024A004E9 +S3154001B890C220A00490100018C4246008400000ADE6 +S3154001B8A0B004A00881C7E00881E800008404801044 +S3154001B8B010BFFFBEA0142001808AE00312BFFFA380 +S3154001B8C09A04A008808B20030280009C8202BFF864 +S3154001B8D0D400600880A2800122BFFFFB98033FFF8E +S3154001B8E0C20460048929200180A1000118BFFF0B11 +S3154001B8F080A1200022BFFF0AE6046008808900017A +S3154001B900228000928929200110BFFF8C9810000BDC +S3154001B9108204A008E400600C80A0401202BFFF50E0 +S3154001B9209803200210BFFEEFC604A004C205A10879 +S3154001B9308205400180A0801202800067C225A108CD +S3154001B940C605E22C80A0FFFF2280006B0310012177 +S3154001B9508204800184204002C425A108848CA0076A +S3154001B9600280000603000004821020088220400263 +S3154001B970A404800182207000AA048015901000184A +S3154001B980AA0D6FFFAA2040154000007E92100015B7 +S3154001B99080A23FFF028000608410200184220012B1 +S3154001B9A0840080158410A001C205A10882054001CA +S3154001B9B0C225A108C424A00480A44013028000101B +S3154001B9C0E424600880A5200F0880003A84053FF4EE +S3154001B9D08408BFF88604C002C804E004880920012F +S3154001B9E088108004C824E00488102005C820E00897 +S3154001B9F080A0A00F18800042C820E0040510012352 +S3154001BA00C600A10080A0400338800002C220A100E8 +S3154001BA1005100123C600A10480A0400338BFFEDD06 +S3154001BA20C220A10410BFFEDCC204600828BFFF95F6 +S3154001BA30E404600830BFFEDE1880001780A065541C +S3154001BA409934200F9803207710BFFEEE872B2003F1 +S3154001BA5080A0601408BFFF1B9B29200380A060546F +S3154001BA601880001780A061548930A00C8801206E8F +S3154001BA7010BFFF149B29200389392002841020011D +S3154001BA808528800484134002C424600410BFFF1D2E +S3154001BA9084100001861023F018BFFEDA9810207E2C +S3154001BAA0993420129803207C10BFFED6872B2003A1 +S3154001BAB08210200110BFFEB7C224A00418800018CE +S3154001BAC080A065548930A00F8801207710BFFEFD04 +S3154001BAD09B2920038088AFFF12BFFF9BC605E22C3E +S3154001BAE0C4046008860540148610E00110BFFFC4F7 +S3154001BAF0C620A00410BFFF9AE420622C9204E008FD +S3154001BB00400000B6901000180310012310BFFFBC7F +S3154001BB10C200610810BFFFA5AA1020009A1023F0A9 +S3154001BB2018BFFEE88810207E8930A0128801207C4B +S3154001BB3010BFFEE49B292003C2046004822840040E +S3154001BB4010BFFF68C224600410BFFF6D9602E00477 +S3154001BB5011100121901222308213C000400003A12E +S3154001BB609E10400001000000111001219012223068 +S3154001BB708213C000400003859E1040000100000072 +S3154001BB809DE3BFA02110012490100019400001A897 +S3154001BB90C02421A880A23FFF02800004C20421A83C +S3154001BBA081C7E00891E8000880A0600002BFFFFD60 +S3154001BBB001000000C226000081C7E00891E80008A4 +S3154001BBC09DE3BFA021100123400003709014213052 +S3154001BBD003100076E20061D0D004614880A22000C3 +S3154001BBE02280003D9004614CC202200480A0601F67 +S3154001BBF01480001E0100000080A620000280001271 +S3154001BC0084006002C4022004820060228600A042B1 +S3154001BC10892860028728E002C2022188F4220004B2 +S3154001BC20F6220003861020018728C00282104003B5 +S3154001BC30C222218880A620020280001982100002B9 +S3154001BC40840060028528A00282006001C22220048D +S3154001BC50F2220002B010200040000362901421300D +S3154001BC6081C7E00881E800007FFFFDFD901021902B +S3154001BC7080A220002280001A90142130C20461481B +S3154001BC80C2220000D0246148C0222004C02221885B +S3154001BC90C022218C10BFFFD982102000C202218C04 +S3154001BCA08610400382100002840060028528A002AB +S3154001BCB0C622218C82006001F2220002C2222004A7 +S3154001BCC0B0102000400003479014213081C7E0089E +S3154001BCD081E8000010BFFFC5D02461484000034100 +S3154001BCE0B0103FFF81C7E00881E800009DE3BFA097 +S3154001BCF07FFFFF9E9010001821100120A0142220E2 +S3154001BD00C2042008E2006004A20C7FFC82046FEFAB +S3154001BD10B2204019B20E7000B206700080A66FFFC5 +S3154001BD2004800009901000187FFFFF9692102000B2 +S3154001BD30C20420088200401180A20001028000074F +S3154001BD4090100018901000187FFFFF82B01020005D +S3154001BD5081C7E00881E800007FFFFF8A9220001931 +S3154001BD6080A23FFF0280000EA2244019C40420088D +S3154001BD70A214600103100123E220A00490100018D0 +S3154001BD80B0102001C4006108B22080197FFFFF7105 +S3154001BD90F220610881C7E00881E800009010001890 +S3154001BDA07FFFFF7892102000C20420088422000100 +S3154001BDB080A0A00F04BFFFE407100121C600E22CBA +S3154001BDC090220003071001238410A001D020E1082E +S3154001BDD010BFFFDDC42060049DE3BFA080A66000C4 +S3154001BDE002800050010000007FFFFF6090100018A4 +S3154001BDF084067FF8D800A004820B3FFE091001207B +S3154001BE008600800188112220DA00E004D60120084C +S3154001BE1080A2C003028000639A0B7FFCDA20E00413 +S3154001BE20808B20011280000E98102000D8067FF8E2 +S3154001BE308420800C8200400CD600A008980120087E +S3154001BE4080A2C00C0280000698102001D400A00CEC +S3154001BE50D422E00C98102000D622A0089600C00DEE +S3154001BE60D602E004808AE0013280000A8610600131 +S3154001BE7080A320000280002D8200400DDA00E008F8 +S3154001BE80C600E00CC623600CDA20E008861060018B +S3154001BE90C220800180A3200012800020C620A00479 +S3154001BEA080A061FF288000308330600387306009BD +S3154001BEB080A0E004188000529800E05B993060064B +S3154001BEC0980320389B2B20039A01000DC603600876 +S3154001BED080A0C00D32800008C800E00410800052E6 +S3154001BEE0DA01200480A3400322800008C200E00C4E +S3154001BEF0C800E00488093FFC80A040042ABFFFFA3D +S3154001BF00C600E008C200E00CC220A00CC620A00872 +S3154001BF10C420E00CC42060087FFFFF0E81E80000CA +S3154001BF2081C7E00881E80000DA00E0081710012027 +S3154001BF309612E22880A3400B32BFFFD3C600E00C25 +S3154001BF40C423600CC4236008C2208001DA20A00803 +S3154001BF5082106001DA20A00CC220A0047FFFFEFD02 +S3154001BF6081E800008728600386010003DA00E008C3 +S3154001BF70C620A00CDA20A008D8012004C423600CF6 +S3154001BF80C420E008833860028410200183288001A0 +S3154001BF9082130001C22120047FFFFEEE81E80000EA +S3154001BFA0808B20011280000982034001D8067FF868 +S3154001BFB08420800CDA00A00CC600A0088200400C48 +S3154001BFC0C6236008DA20E00CC421200886106001EF +S3154001BFD0C620A00405100121C400A22880A0400269 +S3154001BFE00ABFFFCE03100123D20060FC7FFFFF4052 +S3154001BFF0901000187FFFFED781E8000080A0E01472 +S3154001C00008BFFFB29B2B200380A0E0541880000D8F +S3154001C01080A0E1549930600C9803206E10BFFFABAD +S3154001C0209B2B2003993B2002821020018328400C40 +S3154001C03082134001C221200410BFFFB482100003C5 +S3154001C0401880000680A0E5549930600F9803207748 +S3154001C05010BFFF9E9B2B20039A1023F018BFFF9B16 +S3154001C0609810207E993060129803207C10BFFF976C +S3154001C0709B2B20039DE3BFA080A620000280001FCA +S3154001C08003100121E406214880A4A0002280001467 +S3154001C090C206203CC204A004A0807FFF2C80000C75 +S3154001C0A0E4048000A2006001A32C6002A204801176 +S3154001C0B0C20440009FC04000A2047FFCA0843FFF11 +S3154001C0C03CBFFFFDC2044000E404800080A4A00000 +S3154001C0D032BFFFF2C204A004C206203C80A0600029 +S3154001C0E002800004010000009FC04000901000182B +S3154001C0F081C7E00881E8000010BFFFE3F00062A8B5 +S3154001C1009DE3BFA0D206400080A2600002800004E9 +S3154001C110010000007FFFFFFB901000187FFFFF2FFB +S3154001C12081E80000010000009DE3BFA0031001214A +S3154001C130C20062A880A60001028000320100000010 +S3154001C140D206204C80A2600022800016E0062148DB +S3154001C150A2102000E002401180A420002280000BA2 +S3154001C160A204600492100010901000187FFFFF1B7C +S3154001C170E004000080A4200012BFFFFC92100010D2 +S3154001C180D206204CA204600480A4603C32BFFFF377 +S3154001C190E00240117FFFFF1190100018E006214890 +S3154001C1A080A420002280000ED2062054A206214CF3 +S3154001C1B080A400112280000AD20620549210001059 +S3154001C1C0901000187FFFFF05E004000080A4401096 +S3154001C1D012BFFFFC92100010D206205480A26000CC +S3154001C1E022800005C20620387FFFFEFC9010001811 +S3154001C1F0C206203880A0600032800004C206203C7E +S3154001C20081C7E00881E800009FC0400090100018F7 +S3154001C210F20622E080A6600002BFFFFA010000009C +S3154001C2207FFFFFB881E800000100000005100124EE +S3154001C230C200A1AC80A06000228000060310012448 +S3154001C24090004008D020A1AC81C3E00890100001C5 +S3154001C250821061B890004008C220A1ACD020A1ACA8 +S3154001C26081C3E00890100001A7500000AE10000104 +S3154001C2708334E00129100123E805203CA92CC01490 +S3154001C2808215000181E0000081904000010000001C +S3154001C2900100000001000000E03BA000E43BA008D3 +S3154001C2A0E83BA010EC3BA018F03BA020F43BA028B3 +S3154001C2B0F83BA030FC3BA03881E800008210001713 +S3154001C2C081C4400081CC80000100000001000000D3 +S3154001C2D001000000A7500000A92CE0012B1001230A +S3154001C2E0EA05603CAB34C015AA154014819540005F +S3154001C2F001000000010000000100000081E800008B +S3154001C30081E80000E01BA000E41BA008E81BA01088 +S3154001C310EC1BA018F01BA020F41BA028F81BA03092 +S3154001C320FC1BA03881E0000081E0000081C4400090 +S3154001C33081CC8000A750000029100073ADC520783C +S3154001C3400100000027100123A614E01CE024C000D0 +S3154001C350818C202001000000010000000100000046 +S3154001C3609DE3BFA09DE3BFA09DE3BFA09DE3BFA00A +S3154001C3709DE3BFA09DE3BFA09DE3BFA081E8000070 +S3154001C38081E8000081E8000081E8000081E80000C2 +S3154001C39081E8000081E8000027100123A614E01C73 +S3154001C3A0C024C000E203A068A4046004E223A064A0 +S3154001C3B0E423A06810800257AC1000002910012325 +S3154001C3C0A8152000C2252000C8252004E0252010FC +S3154001C3D0E2252014E4252018E825201C81E80000E8 +S3154001C3E08348000082106F008188602001000000B0 +S3154001C3F0010000000100000009100123C801203C92 +S3154001C40081E000008821200180A920FF02800003ED +S3154001C410010000000100000080A1000012BFFFF9E9 +S3154001C4200100000009100123C801203C81E80000F9 +S3154001C43080A920FF028000030100000001000000E6 +S3154001C4408821200180A1000012BFFFF901000000F0 +S3154001C45081E0000029100123A8152000C805200409 +S3154001C460C2052000E0052010E2052014E40520184D +S3154001C470C025201C818C2000010000000100000025 +S3154001C4800100000081C4800081CCA004A0142F00CB +S3154001C490818C000001000000010000000100000045 +S3154001C4A081C4800081CCA00480A660021280000570 +S3154001C4B0A8142F00818D0000B01420203080001F69 +S3154001C4C080A6600312800006A80E2F00AA2C2F001A +S3154001C4D0A8154014818D00003080001880A66004A4 +S3154001C4E012800008A9480000A8152040818D00004F +S3154001C4F00100000001000000010000003080000F33 +S3154001C50080A6600512800008A9480000A82D204099 +S3154001C510818D0000010000000100000001000000C3 +S3154001C5203080000680A660061280000301000000EC +S3154001C53030BFFFA391D0200081C4800081CCA004EC +S3154001C5409210200381C3E00891D02002921020026C +S3154001C55081C3E00891D020029210200681C3E008F1 +S3154001C56091D0200281C3E0080100000081C3E008A8 +S3154001C5700100000081C3E00801000000AE25A010C3 +S3154001C580A75000002D100071AC15A1902910007321 +S3154001C59081C522200100000011100123901220289C +S3154001C5A0D202000092026001D2220000932DE008DF +S3154001C5B0902C2F0092120009111001239012202075 +S3154001C5C0D002000080A000082280000292126F0073 +S3154001C5D0818A602001000000010000000100000086 +S3154001C5E090100017400000379203A06092142F006C +S3154001C5F0818A602001000000010000000100000066 +S3154001C6001110012390122028D202000092226001CB +S3154001C610D222000010800222AC1000009DE3BFA090 +S3154001C6201B100123892E60029A1361A480A6601F04 +S3154001C6308210200014800017C6034004B32E600404 +S3154001C6401910012380A0E000981322240280000DD6 +S3154001C6508406400C80A0C0021280000682100003AE +S3154001C6601080000EC206400C2280000CC206400C0F +S3154001C670C200600C80A0600012BFFFFC80A0800158 +S3154001C680C4234004F026400CC620A00C8210200092 +S3154001C69081C7E00891E80001F026400C81C7E00817 +S3154001C6A091E80001912A200203100123821061A41E +S3154001C6B0C4004008C422600C81C3E008D22040086F +S3154001C6C09DE3BFA0051001238210A02CC200600487 +S3154001C6D080A0401822800040C400A02C80A62000E3 +S3154001C6E022800002B0100001A32E20020310012374 +S3154001C6F0821061A4E000401180A420000280003431 +S3154001C700291001242D1001242B1001242710012466 +S3154001C710A8152024AC15A0A8AA1560AC1080001D50 +S3154001C720A614E028A41000138400A001C42480119B +S3154001C730C405800080A0A00022800006D204200803 +S3154001C7409FC0800001000000C2040000D2042008FE +S3154001C750901000189FC0400094100019C205400077 +S3154001C76080A0600022800005C20480119FC0400065 +S3154001C77001000000C204801182007FFFC2248011A3 +S3154001C780E004200C80A4200002800011010000007A +S3154001C790C204000080A0600022BFFFFBE004200C21 +S3154001C7A0C405000080A0A00012BFFFDFC404C01171 +S3154001C7B080A0A00002BFFFDDA4100013E004200CFE +S3154001C7C080A4200032BFFFF4C204000081C7E00804 +S3154001C7D081E80000F000A0C010BFFFC1B00E201FCD +S3154001C7E08C10000FA74800008B34E0188A09600FAF +S3154001C7F080A160030280000C0B1001238A11603472 +S3154001C8000920000088112070C82140000B10012327 +S3154001C8108A1160500920000088112040C82140003B +S3154001C820108000399010200192102006400001D25C +S3154001C8300100000080A000080280003301000000D2 +S3154001C840C2022010113FFC0082084008110003FC7F +S3154001C8508410400890100002921020019410200C80 +S3154001C860400001DB0100000080A000080280002694 +S3154001C87001000000400001EB921000010B10012362 +S3154001C8808A116034D221400090100002921020019A +S3154001C89094102011400001CE0100000080A0000844 +S3154001C8A00280001901000000400001DE92100001E3 +S3154001C8B0920260100B1001238A116050D221400070 +S3154001C8C090100002921020019410200D400001C0EA +S3154001C8D00100000080A000080280000B010000005A +S3154001C8E0400001D0921000010B1001238A11602CE7 +S3154001C8F0D2214000D40260109532A010940AA00FB4 +S3154001C900D42160049E10000681C3E00801000000A6 +S3154001C91003100123821060488210200191D020002B +S3154001C92081C3E008010000009DE3BFA0031001247C +S3154001C930C20060B48410001880A060000280000626 +S3154001C940B0102000901000029FC0400092100019C4 +S3154001C950B010000881C7E00881E800009DE3BFA050 +S3154001C96003100124C20060B880A060000280000567 +S3154001C970841020009FC040009010001884100008C9 +S3154001C98081C7E00891E800029DE3BFA0031001249E +S3154001C990C20060C080A060000280000584102000B3 +S3154001C9A09FC04000901000188410000881C7E0081D +S3154001C9B091E800029DE3BFA003100124C20060BCC0 +S3154001C9C080A0600002800005841020009FC04000C6 +S3154001C9D0901000188410000881C7E00891E8000211 +S3154001C9E09DE3BFA003100124C20060C480A0600083 +S3154001C9F002800005841020009FC04000901000185E +S3154001CA008410000881C7E00891E800029DE3BFA0B9 +S3154001CA1003100124C20060C880A0600002800005A6 +S3154001CA20841020009FC04000901000188410000818 +S3154001CA3081C7E00891E800029DE3BFA003100124ED +S3154001CA40C20060CC80A060000280000584102000F6 +S3154001CA509FC04000901000188410000881C7E0086C +S3154001CA6091E800029DE3BFA003100124C20060D0FB +S3154001CA708410001880A0600002800006B0102000DB +S3154001CA80901000029FC0400092100019B01000089B S3154001CA9081C7E00881E80000010000000310007230 S3154001CAA0821063689FC0400001000000031000002F S3154001CAB0821060008198400003100072821063EC7E @@ -7343,7 +7343,7 @@ S3154001CAC09FC04000010000000310007282106358AD S3154001CAD09FC04000010000008B4800008B31601868 S3154001CAE08A09600380A160031280000701000000EB S3154001CAF08B4440008B31601C80A1400012800006AF -S3154001CB00010000007FFFFF31010000007FFF919788 +S3154001CB00010000007FFFFF37010000007FFF91A376 S3154001CB10010000009C23A0407FFF913A01000000E4 S3154001CB208210200191D0200001000000290000045C S3154001CB30A68C001432800003A02C001491D0200052 @@ -7351,100 +7351,240 @@ S3154001CB40818C00000100000001000000010000008E S3154001CB5081C4800081CCA00481C3E00801000000AB S3154001CB6081C1E00801000000A74800008B34E018AD S3154001CB708A09600380A16003128000080100000059 -S3154001CB8021100143A0142044A2102003E2240000F6 -S3154001CB908B4440001080000821100143A01420441A +S3154001CB8021100123A0142044A2102003E224000016 +S3154001CB908B4440001080000821100123A01420443A S3154001CBA0A2102002E224000021200000E6042024F5 -S3154001CBB08B34E0148A09601F27100143A614E03C18 -S3154001CBC0CA24C0008A01600127100143A614E03837 -S3154001CBD0CA24C00027100143A614E0408A216002FE +S3154001CBB08B34E0148A09601F27100123A614E03C38 +S3154001CBC0CA24C0008A01600127100123A614E03857 +S3154001CBD0CA24C00027100123A614E0408A2160021E S3154001CBE0CA24C00081C3E0080100000081C3E008F7 S3154001CBF0010000008348000083306018820860030A S3154001CC0080A06003128000060100000083444000BA S3154001CC100500000882284002A380400088100000D9 -S3154001CC200910007281C1229C010000009DE3BF985A -S3154001CC30031000741B100074A01060F09A1360F08A -S3154001CC4080A4000D1A800010A210000D108000066D -S3154001CC50C204000080A400111A80000B01000000EC -S3154001CC60C204000080A0600002BFFFFBA0042004B4 -S3154001CC709FC040000100000080A400112ABFFFFAB6 -S3154001CC80C204000081C7E00881E80000AA27A0B0DD -S3154001CC90E0256060E2256064E4256068C225607431 -S3154001CCA0C43D6078C83D6080CC3D608885400000C9 -S3154001CCB0C425606CF03D6090F43D6098F83D60A0FD -S3154001CCC0FC3D60A8A8102001A92D0010808D0013FD -S3154001CCD002800013010000008534E0010710014382 -S3154001CCE0C600E03CA72CC0038414C0028408A0FF00 -S3154001CCF081E000008190A000E03BA000E43BA00859 -S3154001CD00E83BA010EC3BA018F03BA020F43BA02848 -S3154001CD10F83BA030FC3BA03881E8000081C5A00863 -S3154001CD209C100015051001438410A1A0C400800089 -S3154001CD3080A0800002800004010000009FC08000A6 -S3154001CD409203A060818C200082102002832840102B -S3154001CD5005100143C400A0388530400282104002CC -S3154001CD608550000080888001028000208328A00130 -S3154001CD7007100143C600E03C853080038210400223 -S3154001CD80820860FF81906000C203A06C81806000D0 -S3154001CD90F01BA090F41BA098F81BA0A0FC1BA0A818 -S3154001CDA0C203A074C41BA078C81BA080CC1BA0885A -S3154001CDB0E003A060E203A064E403A06881E8000008 -S3154001CDC0E01BA000E41BA008E81BA010EC1BA01868 -S3154001CDD0F01BA020F41BA028F81BA030FC1BA03898 -S3154001CDE01080000F81E00000C203A06C81806000CA -S3154001CDF0F01BA090F41BA098F81BA0A0FC1BA0A8B8 -S3154001CE00C203A074C41BA078C81BA080CC1BA088F9 -S3154001CE10E003A060E203A064E403A068818C2000E3 -S3154001CE2001000000010000000100000081C4400033 -S3154001CE3081CC8000AA27A0B0C2256074C43D607829 -S3154001CE40C83D6080CC3D608885400000C425606C4B -S3154001CE50A8102001A92D0010808D00130280001317 -S3154001CE60010000008534E00107100143C600E03CA3 -S3154001CE70A72CC0038414C0028408A0FF81E00000EF -S3154001CE808190A000E03BA000E43BA008E83BA01055 -S3154001CE90EC3BA018F03BA020F43BA028F83BA03087 -S3154001CEA0FC3BA03881E8000081C5A0089C10001514 -S3154001CEB0051001438410A1A0C400800080A0800019 -S3154001CEC002800004010000009FC080009203A06020 -S3154001CED0818C2000821020028328401005100143D6 -S3154001CEE0C400A038853040028210400285500000BF -S3154001CEF080888001028000198328A0010710014320 -S3154001CF00C600E03C8530800382104002820860FF03 -S3154001CF1081906000C203A06C81806000C203A0744E -S3154001CF20C41BA078C81BA080CC1BA08881E8000048 -S3154001CF30E01BA000E41BA008E81BA010EC1BA018F6 -S3154001CF40F01BA020F41BA028F81BA030FC1BA03826 -S3154001CF501080000881E00000C203A06C818060005F -S3154001CF60C203A074C41BA078C81BA080CC1BA08898 -S3154001CF70818C20000100000001000000010000003A -S3154001CF8081C4400081CC8000821000089A1038008C -S3154001CF9096102000912AE00598034008D4034008E2 -S3154001CFA09132A01880A20001328000089602E00169 -S3154001CFB09132A00C900A2FFF80A20009028000073F -S3154001CFC09410000C9602E00180A2E00728BFFFF30F -S3154001CFD0912AE0059410200081C3E0089010000AD0 -S3154001CFE08210000898102000912B20039A004008D7 -S3154001CFF0D60040089132E01880A20009328000082C -S3154001D000980320019132E00C900A2FFF80A2000A7A -S3154001D010028000079610000D9803200180A3200F7F -S3154001D02028BFFFF3912B20039610200081C3E0080F -S3154001D0309010000BD4022004173FFC00920A400BCB -S3154001D040900A800B9132200C921240081100003F49 -S3154001D050901223F0940A8008952AA0049412800B1A -S3154001D060920A400A81C3E008901000099DE3BF98E7 -S3154001D07003100074821060D8DA007FFC80A37FFF22 -S3154001D08002800009A0007FFC8210000D9FC0400075 -S3154001D090A0043FFCC204000080A07FFF12BFFFFC3A -S3154001D0A00100000081C7E00881E800009DE3BF98C8 -S3154001D0B081C7E00881E80000000000000000000090 -S3154001D0C00000000000000000000000000000000019 -S3154001D0D000000002FFFFFFFF00000000000000000B -S3154001D0E000000002FFFFFFFF0000000000000000FB -S3154001D0F040080000000000003CD203AF9EE75616F0 -S3154001D1003E7AD7F29ABCAF48400506A80000000017 -S3154001D110430000009DE3BFA07FFF8FF701000000A1 -S3154001D1207FFFFFD30100000081C7E00881E80000CE -S3154001D1309DE3BFA07FFF8FD20100000081C7E008B9 -S3154001D14081E800000000000000000000000000002F -S315400200000000000100000000000000004001D0E8AE +S3154001CC200910007281C1229C010000009DE3BFA052 +S3154001CC302110007623100076A0142170A214617091 +S3154001CC4080A400111A80000B01000000D0040000EE +S3154001CC5080A2200002800004A00420049FC200009C +S3154001CC600100000080A400112ABFFFFAD004000091 +S3154001CC7081C7E00881E80000AA27A0B0E0256060EE +S3154001CC80E2256064E4256068C2256074C43D60782D +S3154001CC90C83D6080CC3D608885400000C425606CFD +S3154001CCA0F03D6090F43D6098F83D60A0FC3D60A881 +S3154001CCB0A8102001A92D0010808D001302800013B9 +S3154001CCC0010000008534E00107100123C600E03C65 +S3154001CCD0A72CC0038414C0028408A0FF81E0000091 +S3154001CCE08190A000E03BA000E43BA008E83BA010F7 +S3154001CCF0EC3BA018F03BA020F43BA028F83BA03029 +S3154001CD00FC3BA03881E8000081C5A0089C100015B5 +S3154001CD10051001248410A0B0C400800080A08000CA +S3154001CD2002800004010000009FC080009203A060C1 +S3154001CD30818C200082102002832840100510012397 +S3154001CD40C400A03885304002821040028550000060 +S3154001CD5080888001028000208328A00107100123DA +S3154001CD60C600E03C8530800382104002820860FFA5 +S3154001CD7081906000C203A06C81806000F01BA0908E +S3154001CD80F41BA098F81BA0A0FC1BA0A8C203A0748A +S3154001CD90C41BA078C81BA080CC1BA088E003A06060 +S3154001CDA0E203A064E403A06881E80000E01BA00060 +S3154001CDB0E41BA008E81BA010EC1BA018F01BA02048 +S3154001CDC0F41BA028F81BA030FC1BA0381080000FD4 +S3154001CDD081E00000C203A06C81806000F01BA0903E +S3154001CDE0F41BA098F81BA0A0FC1BA0A8C203A0742A +S3154001CDF0C41BA078C81BA080CC1BA088E003A06000 +S3154001CE00E203A064E403A068818C200001000000D5 +S3154001CE10010000000100000081C4400081CC800077 +S3154001CE20AA27A0B0C2256074C43D6078C83D608021 +S3154001CE30CC3D608885400000C425606CA810200167 +S3154001CE40A92D0010808D00130280001301000000FF +S3154001CE508534E00107100123C600E03CA72CC0033E +S3154001CE608414C0028408A0FF81E000008190A000E4 +S3154001CE70E03BA000E43BA008E83BA010EC3BA01837 +S3154001CE80F03BA020F43BA028F83BA030FC3BA03867 +S3154001CE9081E8000081C5A0089C10001505100124F9 +S3154001CEA08410A0B0C400800080A0800002800004ED +S3154001CEB0010000009FC080009203A060818C200089 +S3154001CEC0821020028328401005100123C400A03897 +S3154001CED085304002821040028550000080888001E2 +S3154001CEE0028000198328A00107100123C600E03CF7 +S3154001CEF08530800382104002820860FF8190600085 +S3154001CF00C203A06C81806000C203A074C41BA078D8 +S3154001CF10C81BA080CC1BA08881E80000E01BA000B4 +S3154001CF20E41BA008E81BA010EC1BA018F01BA020D6 +S3154001CF30F41BA028F81BA030FC1BA0381080000869 +S3154001CF4081E00000C203A06C81806000C203A0742E +S3154001CF50C41BA078C81BA080CC1BA088818C200054 +S3154001CF6001000000010000000100000081C44000F2 +S3154001CF7081CC8000821000089A103800961020005B +S3154001CF80912AE00598034008D40340089132A0183D +S3154001CF9080A20001328000089602E0019132A00C85 +S3154001CFA0900A2FFF80A20009028000079410000C0E +S3154001CFB09602E00180A2E00728BFFFF3912AE0052F +S3154001CFC09410200081C3E0089010000A82100008E6 +S3154001CFD098102000912B20039A004008D600400863 +S3154001CFE09132E01880A2000932800008980320019E +S3154001CFF09132E00C900A2FFF80A2000A02800007BE +S3154001D0009610000D9803200180A3200F28BFFFF33F +S3154001D010912B20039610200081C3E0089010000B4D +S3154001D020D4022004173FFC00920A400B900A800B61 +S3154001D0309132200C921240081100003F901223F0C9 +S3154001D040940A8008952AA0049412800B920A400AF9 +S3154001D05081C3E008901000099DE3BFA0211000762E +S3154001D060A0142158C2043FFC80A07FFF0280000823 +S3154001D070A0043FFC9FC04000A0043FFCC204000046 +S3154001D08080A07FFF12BFFFFC0100000081C7E008BE +S3154001D09081E800009DE3BFA081C7E00881E8000068 +S3154001D0A00000001000000000017A5200047C0F01CC +S3154001D0B01B0C0E000000001000000018FFFE40DCB3 +S3154001D0C00000000800000000000000140000002CD1 +S3154001D0D0FFFE40D00000004000410D1E2D090F1FEC +S3154001D0E00000001000000044FFFE40F80000001C54 +S3154001D0F0000000000000001000000058FFFE410043 +S3154001D1000000001C00000000000000100000006C40 +S3154001D110FFFE41080000001C000000000000001056 +S3154001D12000000080FFFE41100000001C00000000CE +S3154001D1300000001400000094FFFE41180000002C7E +S3154001D14000410D1E2D090F1F00000018000000AC04 +S3154001D150FFFE41780000004000410D1E2D46090F9B +S3154001D1601F00000000000018000000C8FFFE419C9F +S3154001D1700000022400410D1E2D46090F1F0000002C +S3154001D18000000018000000E4FFFE43A40000023442 +S3154001D19000410D1E2D47090F1F0000000000001819 +S3154001D1A000000100FFFE45BC0000003C00410D1E91 +S3154001D1B02D43090F1F000000000000180000011C4C +S3154001D1C0FFFE45DC0000003C00410D1E2D43090FCA +S3154001D1D01F0000000000001800000138FFFF2E2448 +S3154001D1E00000024800410D1E2D5D090F1F00000081 +S3154001D1F00000001400000154FFFF3050000006906B +S3154001D20000410D1E2D090F1F000000180000016C82 +S3154001D210FFFF36C80000002800410D1E2D49090FA9 +S3154001D2201F0000000000001800000188FFFF36D4EF +S3154001D2300000002400410D1E2D48090F1F0000006B +S3154001D24000000018000001A4FFFF36DC0000009832 +S3154001D25000410D1E2D44090F1F000000000000185B +S3154001D260000001C0FFFF3758000000FC00410D1EC1 +S3154001D2702D46090F1F00000000000018000001DCC8 +S3154001D280FFFF3838000000C400410D1E2D47090F2D +S3154001D2901F00000000000018000001F8FFFF38E001 +S3154001D2A00000015000410D1E2D6E090F1F000000A8 +S3154001D2B00000001800000214FFFF3A140000047039 +S3154001D2C000410D1E2D44090F1F00000000000018EB +S3154001D2D000000230FFFF3E680000013400410D1E90 +S3154001D2E02D4A090F1F000000000000180000024CE3 +S3154001D2F0FFFF3F800000012400410D1E2D49090F0B +S3154001D3001F0000000000001800000268FFFF40886F +S3154001D310000000B800410D1E2D4A090F1F000000F4 +S3154001D3200000001800000284FFFF4124000000A015 +S3154001D33000410D1E2D48090F1F000000000000107E +S3154001D340000002A0FFFF41A80000001800000000F5 +S3154001D35000000014000002B4FFFF41AC000002705F +S3154001D36000410D1E2D090F1F00000014000002CCC4 +S3154001D370FFFF44040000040C00410D1E2D090F1F40 +S3154001D38000000014000002E4FFFF47F800000124FA +S3154001D39000410D1E2D090F1F00000014000002FC64 +S3154001D3A0FFFF49040000039400410D1E2D090F1F84 +S3154001D3B00000001000000314FFFF4C800000002C09 +S3154001D3C0000000000000001000000328FFFF4C98F9 +S3154001D3D00000002400000000000000100000033C93 +S3154001D3E0FFFF4CA8000000180000000000000018D4 +S3154001D3F000000350FFFF4CAC0000017C00410D1EB4 +S3154001D4002D42090F1F000000000000180000036CA8 +S3154001D410FFFF4E0C0000058000410D1E2D46090FF1 +S3154001D4201F0000000000001800000388FFFF537032 +S3154001D4300000051800410D1E2D43090F1F00000075 +S3154001D44000000014000003A4FFFF586C0000010C0B +S3154001D45000410D1E2D090F1F00000010000003BCE6 +S3154001D460FFFF596000000018000000000000001492 +S3154001D470000003D0FFFF59640000020800410D1E61 +S3154001D4802D090F1F00000014000003E8FFFF6A0486 +S3154001D4900000461800410D1E2D090F1F0000001007 +S3154001D4A000000400FFFFB0040000000C0000000073 +S3154001D4B00000001000000414FFFFAFFC0000001440 +S3154001D4C0000000000000001000000428FFFFAFFC30 +S3154001D4D00000002000000000000000140000043C91 +S3154001D4E0FFFFB0080000077000410D1E2D090F1FF8 +S3154001D4F00000001000000454FFFFC0900000000C23 +S3154001D500000000000000001000000468FFFFC08812 +S3154001D5100000002400000000000000100000047C10 +S3154001D520FFFFC09800000038000000000000001016 +S3154001D53000000490FFFFC0BC00000038000000005E +S3154001D54000000018000004A4FFFFC0E00000009C9A +S3154001D55000410D1E2D56090F1F0000000000001846 +S3154001D560000004C0FFFFC1600000003C00410D1EE9 +S3154001D5702D4A090F1F00000000000018000004DCBE +S3154001D580FFFFC1800000003C00410D1E2D4A090FDE +S3154001D5901F00000000000010000004F8FFFFC1A0BA +S3154001D5A00000003800000000000000180000050CD3 +S3154001D5B0FFFFC1C40000003C00410D1E2D4A090F6A +S3154001D5C01F0000000000001800000528FFFFC1E40D +S3154001D5D00000003C00410D1E2D4A090F1F000000AE +S3154001D5E00000001000000544FFFFC204000000389F +S3154001D5F0000000000000001800000558FFFFC22887 +S3154001D60000000EB000430D1E2D4C090F1F000000F7 +S3154001D6100000001400000574FFFFD0BC0000002884 +S3154001D62000410D1E2D090F1F000000140000058C3E +S3154001D630FFFFD0CC0000033000410D1E2D090F1F06 +S3154001D64000000014000005A4FFFFD3E4000002B867 +S3154001D65000430D1E2D090F1F00000010000005BCE0 +S3154001D660FFFFD98C0000000C0000000000000010F4 +S3154001D670000005D0FFFFD98400000014000000001F +S3154001D68000000014000005E4FFFFD9840000007C7F +S3154001D69000410D1E2D090F1F00000010000005FC62 +S3154001D6A0FFFFDD80000000200000000000000010A8 +S3154001D6B000000610FFFFDD8C0000001C000000008A +S3154001D6C00000001000000624FFFFDD940000001C4E +S3154001D6D0000000000000001800000638FFFFDD9C36 +S3154001D6E0000006D800410D1E2D4C090F1F000000F9 +S3154001D6F00000001000000654FFFFE4580000001827 +S3154001D700000000000000001000000668FFFFE45C16 +S3154001D7100000001800000000000000180000067C10 +S3154001D720FFFFE4600000004000410D1E2D42090F3D +S3154001D7301F0000000000001800000698FFFFE48467 +S3154001D7400000012C00410D1E2D41090F1F00000054 +S3154001D75000000014000006B4FFFFE594000000EC51 +S3154001D76000410D1E2D090F1F00000018000006CCB8 +S3154001D770FFFFE6680000029C00410D1E2D43090F84 +S3154001D7801F00000000000018000006E8FFFFE8E85F +S3154001D7900000008C00410D1E2D4F090F1F00000097 +S3154001D7A00000001800000704FFFFE95800000028A8 +S3154001D7B000410D1E2D44090F1F00000000000018F6 +S3154001D7C000000720FFFFE9640000010400410D1E2F +S3154001D7D02D45090F1F000000000000100000073C06 +S3154001D7E0FFFFEA4C0000003C00000000000000186A +S3154001D7F000000750FFFFEE280000008800410D1E83 +S3154001D8002D52090F1F000000000000100000076C98 +S3154001D810FFFFEE940000001C00000000000000180D +S3154001D82000000780FFFFEE9C0000012000410D1E15 +S3154001D8302D58090F1F000000000000100000079C32 +S3154001D840FFFFF0D8000000100000000000000018A3 +S3154001D850000007B0FFFFF0D40000003400410D1E68 +S3154001D8602D47090F1F00000000000018000007CCDB +S3154001D870FFFFF0EC0000002C00410D1E2D45090F65 +S3154001D8801F00000000000018000007E8FFFFF0FC41 +S3154001D8900000002C00410D1E2D45090F1F00000000 +S3154001D8A00000001800000804FFFFF10C0000002CE6 +S3154001D8B000410D1E2D45090F1F00000000000018F4 +S3154001D8C000000820FFFFF11C0000002C00410D1E46 +S3154001D8D02D45090F1F000000000000180000083CFC +S3154001D8E0FFFFF12C0000002C00410D1E2D45090FB4 +S3154001D8F01F0000000000001800000858FFFFF13C1F +S3154001D9000000002C00410D1E2D45090F1F0000008F +S3154001D9100000001800000874FFFFF14C00000034BD +S3154001D92000410D1E2D47090F1F0000000000001881 +S3154001D93000000890FFFFF2F80000004C00410D1E68 +S3154001D9402D47090F1F0000000000000000000000E5 +S3154001D95000000002FFFFFFFF000000000000000082 +S3154001D96000000002FFFFFFFF000000000000000072 +S3154001D970343074693934612B30796769797530355A +S3154001D9807968617035796934682B612B6969797871 +S3154001D9906869346B35396A30713930356A6B6F79FC +S3154001D9A070686F70746A72686961346979302B3452 +S3154001D9B000000000000000004008000000000000D8 +S3154001D9C03CD203AF9EE756163E7AD7F29ABCAF4891 +S3154001D9D0400486B000000000430000000000000043 +S3154001D9E09DE3BFA07FFF8DD1010000007FFFFD9B1E +S3154001D9F00100000081C7E00881E800009DE3BFA067 +S3154001DA007FFF8D9F0100000081C7E00881E800008B +S3154002000000000001000000000000000000000000A7 S315400200102000000000000000000000000000000078 S315400200200000000000000000000000000000000088 S315400200300000000000000000000000000000000078 @@ -7458,328 +7598,328 @@ S315400200A00000000000000000000000000000000008 S315400200B000000000000000000000000000000000F8 S315400200C000000000000000000000000000000000E8 S315400200D000000000000000000000000000000000D8 -S315400200E00000000100000000000000410000000086 -S315400200F0343074693934612B3079676979753035B2 -S315400201007968617035796934682B612B69697978C8 -S315400201106869346B35396A30713930356A6B6F7953 -S3154002012070686F70746A72686961346979302B34A9 -S315400201300000000000000000000000010000000076 -S3154002014040000000000000004008000000000000DF -S31540020150401800000000000080000000000000007F -S315400201600000000000000000BFF000000000000098 -S31540020170BF800000000000000000000000000000F8 -S315400201800000000000000000000000000000000027 -S315400201903FF00000000000004008000000000000A0 -S315400201A03FF0000040000000000000000000000098 -S315400201B03F800000404000000000000000000000B8 -S315400201C000000000000000000000000000000000E7 -S315400201D0000000000000000048000001000000008E -S315400201E0480000000000000046C000000000000079 -S315400201F03FF0000000000000400000000000000048 -S3154002020040080000000000003F800000000000009F -S31540020210529000000000000052900FF807F60DEBD6 -S3154002022052901FE03F61BAD052902FB8D4E30F48A4 -S3154002023052903F81F636B80C52904F3BD03C0A64FE -S3154002024052905EE68EFAD48B52906E825DA8FC2B5B -S3154002025052907E0F66AFED0752908D8DD3B1D9AADB -S3154002026052909CFDCD8ED0095290AC5F7C69A3C85A -S315400202705290BBB307ACAFDB5290CAF8960E710DE3 -S315400202805290DA304D95FB065290E95A539F492CCB -S315400202905290F876CCDF6CD952910785DD689A295F -S315400202A052911687A8AE14A35291257C5187FD0917 -S315400202B052913463FA37014E5291433EC467EFFB83 -S315400202C05291520CD1372FEB529160CE41341D746C -S315400202D052916F8334644DF952917E2BCA46BAB914 -S315400202E052918CC821D6D3E352919B58598F7C9F09 -S315400202F05291A9DC8F6DF1045291B854E0F496A064 -S315400203005291C6C16B2DB8705291D5224AAE2EE19A -S315400203105291E3779B97F4A85291F1C1799CA8FF39 -S31540020320529200000000000052920E33499A21A9CF -S3154002033052921C5B70D9F82452922A788FC76DE587 -S315400203405292388AC0059C28529246921AD4EA4959 -S315400203505292548EB9151E8552926280B347609668 -S315400203605292706821902E9A52927E451BB944C38E -S3154002037052928C17B9337834529299E01118857596 -S315400203805292A79E3A2CD2E65292B5524AE1278E13 -S315400203905292C2FC595456A75292D09C7B54E03E8C -S315400203A05292DE32C66287415292EBBF4FAFDD4B6D -S315400203B05292F9422C23C47E529306BB705AE7C32B -S315400203C05293142B30A929AB52932191811B0A4196 -S315400203D052932EEE7577041652933C42213EE0C963 -S315400203E05293498C97B10540529356CDEBC9B5E22B -S315400203F0529364063044530652937135779C8DCBA3 -S3154002040052937E5BD40F95A152938B79579D3EAB07 -S315400204105293988E1409212E5293A59A1ADBB257FB -S315400204205293B29D7D6356625293BF984CB56C7798 -S315400204305293CC8A99AF54535293D97474F76DF24E -S315400204405293E655EEFE13675293F32F17FE8D0431 -S31540020450529400000000000052940CC8B6D657C20F -S31540020460529419894C2329F052942641CF569572BB -S31540020470529432F24FB01C7A52943F9ADC3F79CE74 -S3154002048052944C3B83E57153529458D455549C1A1A -S31540020490529465655F122FF6529471EEAF76C2C6DC -S315400204A052947E7054AF098952948AEA5CBC935F37 -S315400204B05294975CD57680885294A3C7CC8A358A63 -S315400204C05294B02B4F7C0A885294BC876BA7F6ECA9 -S315400204D05294C8DC2E4239805294D529A457FCFC4A -S315400204E05294E16FDACFF9375294EDAEDE6B10FEDD -S315400204F05294F9E6BBC4ECB3529506177F5491BBAE -S3154002050052951241356CF6E052951E63EA3D95B01E -S3154002051052952A7FA9D2F8EA529536948017481006 -S31540020520529542A278D2D03652954EA99FAC8A0FA6 -S3154002053052955AAA002A9D5A529566A3A5B2E1B18E -S31540020540529572969B8B5CD852957E82ECDABE8D22 -S3154002055052958A68A4A8D9F352959647CDDF1CA531 -S315400205605295A220734903775295ADF29F948CFB24 -S315400205705295B9BE5D52A9DA5295C583B6F7AB0319 -S315400205805295D142B6DBADC55295DCFB673B05DFE2 -S315400205905295E8ADD236A58F5295F45A01D483B41A -S315400205A0529600000000000052960B9FD68A455490 -S315400205B0529617398F2AAA48529622CD337F0FE890 -S315400205C052962E5ACD0C3EBE529639E2653E421B9B -S315400205D0529645640568C1C3529650DFB6C759F470 -S315400205E052965C55827DF1D2529667C57199104BEF -S315400205F05296732F8D0E2F7752967E93DDBC0E73D5 -S31540020600529689F26C6B01D05296954B41CD4293EC -S315400206100BC0A4068F346C9B0BC093731C185447B3 -S315400206200BC083008E183C230BC072AE83A9704A5E -S315400206300BC0627C9CC166FF0BC0526A7ACE64A430 -S315400206400BC04277C0B04ADA0BC032A412B191A0B5 -S315400206500BC022EF168069500BC0135873280473DF -S315400206600BC003DFD10A08480BBFE909B3B04632D3 -S315400206700BBFCA8E711B8E880BBFAC4D32D4143061 -S315400206800BBF8E4553D34B1B0BBF7076318237EF70 -S315400206900BBF52DF2BADF99C0BBF357FA47C936C0D -S315400206A00BBF18570061F5EB0BBEFB64A61545154B -S315400206B00BBEDEA7FE865A2B0BBEC22074D37FBC6E -S315400206C00BBEA5CD763F66690BBE89AE722750F04A -S315400206D00BBE6DC2D9F976230BBE520A212B976CFB -S315400206E00BBE3683BD31CAA20BBE1B2F257575CAFA -S315400206F00BBE000BD34C7BAF0BBDE51941F097FE09 -S315400207000BBDCA56EE76E9D00BBDAFC457C7AB7325 -S315400207100BBD9560FE9616690BBD7B2C65587275AE -S315400207200BBD612610404EC00BBD474D8532E409D4 -S315400207300BBD2DA24BC19EDF0BBD1423ED22D10171 -S315400207400BBCFAD1F42A88E40BBCE1ABED438E80B4 -S315400207500BBCC8B1666884820BBCAFE1EF1D2D01AC -S315400207600BBC973D1867D0EF0BBC7EC274CAC962F8 -S315400207700BBC6671983E29FE0BBC4E4A18298BA9C2 -S315400207800BBC364B8B5DF6DB0BBC1E758A0FECBF82 -S315400207900BBC06C7ADD18E7E0BBBEF41918CE1F609 -S315400207A00BBBD7E2D17E33360BBBC0AB0B2E921BB3 -S315400207B00BBBA999DD6E6B650BBB92AEE8503CA7AD -S315400207C00BBB7BE9CD2362720BBB654A2E6F002CB5 -S315400207D00BBB4ECFAFED00FE0BBB3879F685313FF2 -S315400207E00BBB2248A8486FDE0BBB0C3B6C6BF73B3E -S315400207F00BBAF651EB44BCEE0BBAE08BCE42E7F1B4 -S315400208000BBACAE8BFED5CC00BBAB5686BDD5EDDFC -S315400208100BBAA00A7EBA475E0BBA8ACEA6354FEB12 -S315400208200BBA75B4910571DB0BBA60BBEEE358EFB8 -S315400208300BBA4BE4708569410BBA372DC79BD7FE7D -S315400208400BBA2297A6CCD68C0BBA0E21C1B0CFA03A -S315400208500BB9F9CBCCCEB6050BB9E5957D98648B31 -S315400208600BB9D17E8A670EE70BB9BD86AA77C3104C -S315400208700BB9A9AD95E7FAC40BB995F305B23CE5B8 -S315400208800BB98256B3AACE570BB96ED85A7C7206AA -S315400208900BB95B77B5A537C80BB94834817359CCC8 -S315400208A00BB9350E7B02284D0BB922056037032E54 -S315400208B00BB90F18EFBE614A0BB8FC48E908E522AE -S315400208C00BB8E9950C487EA90BB8D6FD1A6D99E886 -S315400208D00BB8C480D5245A340BB8B21FFED1E1BC42 -S315400208E00BB89FDA5A91A5260BB88DAFAC32CB0A1C -S315400208F00BB87B9FB83596F60BB869AA43C8DFE1B9 -S315400209000BB857CF14C791B50BB8460DF1B639C6D9 -S315400209100BB83466A1C09DF90BB822D8ECB75E6E0F -S315400209200BB811649B0DA16B0BB8000975D6C9595A -S315400209300BB7EEC746C434A50BB7DD9DD823075285 -S315400209400BB7CC8CF4D9FE010BB7BB9468674A50FF -S315400209500BB7AAB3FEDE78540BB799EB84E65D0C6F -S315400209600BB7893AC7B70D960BB778A19517DF0132 -S315400209700BB7681FBB5D6E910BB757B50967B24C93 -S315400209800BB747614EA011A20BB737245AF786140C -S315400209900BB726FDFEE4C3A00BB716EE0B6268E862 -S315400209A00BB706F451ED36CE0BB6F710A4824F8044 -S315400209B00BB6E742D59D7CB40BB6D78AB8377D0EC7 -S315400209C00BB6C7E81FC458720BB6B85AE031BB32F1 -S315400209D00BB6A8E2CDE557F90BB6997FBDBB50459C -S315400209E00BB68A318504A35C0BB67AF7F985A39BCD -S315400209F00BB66BD2F17471FF0BB65CC243777FCEF6 -S31540020A000BB64DC5C6A416420BB63EDD527CE4116A -S31540020A100BB63008BEF090CF0BB62147E45855EBE3 -S31540020A200BB6129A9B769D520BB60400BD75A584F1 -S31540020A300BB5F57A23E62B070BB5E706A8BE172CAE -S31540020A400BB5D8A6265733FF0BB5CA58776DE54B7B -S31540020A500BB5BC1D771FE6AB0BB5ADF500EB0E78BB -S31540020A600BB59FDEF0AC15940BB591DB229D63F27C -S31540020A700BB583E97355E1C10BB57609BFC7CD32D4 -S31540020A800BB5683BE53F94B80BB55A7FC162B5B624 -S31540020A900BB54CD5322E9F7F0BB53F3C15F79AA12D -S31540020AA00BB531B44B67B45A0BB5243DB17DAE306C -S31540020AB00BB516D8278BF18F0BB509838D37876710 -S31540020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB69 -S31540020AD00BB4E1EA1D1EA6680BB4D4D8040308E59C -S31540020AE00BB4C7D63D722B370BB4BAE4AAEBF9481E -S31540020AF00BB4AE032E3C2D7E0BB4A131A97965C948 -S31540020B000BB4946FFF043C1C0BB487BE118662364D -S31540020B100BB47B1BC3F1C0BF0BB46E88F97F999BA4 -S31540020B200BB4620595AFAD730BB455917C476454D3 -S31540020B300BB4492C9150F96C0BB43CD6B91AA9C8DE -S31540020B400BB4308FD835E60B0BB42457D3768716C1 -S31540020B500BB4182E8FF205900BB40C13F2FEB43B75 -S31540020B600BB40007E232FD1F0BB3F40A4364A167DC -S31540020B700BB3E81AFCA7FBF00BB3DC39F44F468AF9 -S31540020B800BB3D06710E9E1C30BB3C4A239439F4FFD -S31540020B900BB3B8EB54640EF10BB3AD42498DCDDFC6 -S31540020BA00BB3A1A7003DD89B0BB39619602ADF2B46 -S31540020BB00BB38A9951449BB80BB37F26BBB32B79AF -S31540020BC00BB373C187D669EA0BB368699E454E4437 -S31540020BD00BB35D1EE7CD4B2D0BB351E14D71B09872 -S31540020BE00BB346B0B86B0FC30BB33B8D1226A15A5B -S31540020BF00BB330764445ADAC0BB3256C389CF6EB63 -S31540020C000BB31A6ED934256E0BB30F7E104535F5EC -S31540020C100BB30499C83BE9D60BB2F9C1EBB53923FC -S31540020C200BB2EEF6657EC6AA0BB2E437209655D5D0 -S31540020C300BB2D984082942630BB2CEDD0793F9E79A -S31540020C400BB2C4420A6177190BB2B9B2FC4ABEDA98 -S31540020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1F9 -S31540020C600BB29A4CA48F90E30BB28FEC8BA9777997 -S31540020C700BB28597FF1D694D0BB27B4EEBAE48DD3D -S31540020C800BB271113E499CEE0BB266DEE4071AA81E -S31540020C900BB25CB7CA2831380BB2529BDE1796F7B5 -S31540020CA00BB2488B0D68D8030BB23E8545D7E65A40 -S31540020CB00BB2348A7548AB540BB22A9A89C69A97B4 -S31540020CC00BB220B5718446610BB216DB1ADAF53FD8 -S31540020CD00BB20D0B744A39100BB203466C77876C14 -S31540020CE00BB1F98BF22DD3490BB1EFDBF45D27FF44 -S31540020CF00BB1E636621A457E0BB1DC9B2A9E3DD588 -S31540020D000BB1D30A3D4613EE0BB1C98389925B817F -S31540020D100BB1C006FF26DA3F0BB1B6948DCA2A281C -S31540020D200BB1AD2C25655D0F0BB1A3CDB603A13D2D -S31540020D300BB19A792FD1E7410BB1912E831E88D2FE -S31540020D400BB187EDA058F0D60BB17EB6781144733D -S31540020D500BB17588FAF80D3A0BB16C6519DDE45D95 -S31540020D600BB1634AC5B31EEF0BB15A39EF877B28E5 -S31540020D700BB151328889CEAE0BB148348207B5DB0E -S31540020D800BB13F3FCD6D43FF0BB136545C44B49A31 -S31540020D900BB12D7220361D870BB124990B07221BEE -S31540020DA00BB11BC90E9AA72D0BB113021CF0880F6B -S31540020DB00BB10A4428254C650BB1018F2271DEE541 -S31540020DC00BB0F8E2FE2B44F40BB0F03FADC2572312 -S31540020DD00BB0E7A523C37A850BB0DF1352D65AD997 -S31540020DE00BB0D68A2DBDA58C0BB0CE09A756C589A8 -S31540020DF00BB0C591B2999FDB0BB0BD2242985115FB -S31540020E000BB0B4BB4A7EEB870BB0AC5CBD933636B7 -S31540020E1065300000653010006530200065303000D6 -S31540020E2065304000653050006530600065307000C6 -S31540020E3065308000653090006530A0006530B000B6 -S31540020E406530C0006530D0006530E0006530F000A6 -S31540020E506531000065311000653120006531300092 -S31540020E606531400065315000653160006531700082 -S31540020E7065318000653190006531A0006531B00072 -S31540020E806531C0006531D0006531E0006531F00062 -S31540020E90653200006532100065322000653230004E -S31540020EA0653240006532500065326000653270003E -S31540020EB065328000653290006532A0006532B0002E -S31540020EC06532C0006532D0006532E0006532F0001E -S31540020ED0653300006533100065332000653330000A -S31540020EE065334000653350006533600065337000FA -S31540020EF065338000653390006533A0006533B000EA -S31540020F006533C0006533D0006533E0006533F000D9 -S31540020F1065340000653410006534200065343000C5 -S31540020F2065344000653450006534600065347000B5 -S31540020F3065348000653490006534A0006534B000A5 -S31540020F406534C0006534D0006534E0006534F00095 -S31540020F506535000065351000653520006535300081 -S31540020F606535400065355000653560006535700071 -S31540020F7065358000653590006535A0006535B00061 -S31540020F806535C0006535D0006535E0006535F00051 -S31540020F90653600006536100065362000653630003D -S31540020FA0653640006536500065366000653670002D -S31540020FB065368000653690006536A0006536B0001D -S31540020FC06536C0006536D0006536E0006536F0000D -S31540020FD065370000653710006537200065373000F9 -S31540020FE065374000653750006537600065377000E9 -S31540020FF065378000653790006537A0006537B000D9 -S315400210006537C0006537D0006537E0006537F000C8 -S3154002101065380000653810006538200065383000B4 -S3154002102065384000653850006538600065387000A4 -S3154002103065388000653890006538A0006538B00094 -S315400210406538C0006538D0006538E0006538F00084 -S315400210506539000065391000653920006539300070 -S315400210606539400065395000653960006539700060 -S3154002107065398000653990006539A0006539B00050 -S315400210806539C0006539D0006539E0006539F00040 -S31540021090653A0000653A1000653A2000653A30002C -S315400210A0653A4000653A5000653A6000653A70001C -S315400210B0653A8000653A9000653AA000653AB0000C -S315400210C0653AC000653AD000653AE000653AF000FC -S315400210D0653B0000653B1000653B2000653B3000E8 -S315400210E0653B4000653B5000653B6000653B7000D8 -S315400210F0653B8000653B9000653BA000653BB000C8 -S31540021100653BC000653BD000653BE000653BF000B7 -S31540021110653C0000653C1000653C2000653C3000A3 -S31540021120653C4000653C5000653C6000653C700093 -S31540021130653C8000653C9000653CA000653CB00083 -S31540021140653CC000653CD000653CE000653CF00073 -S31540021150653D0000653D1000653D2000653D30005F -S31540021160653D4000653D5000653D6000653D70004F -S31540021170653D8000653D9000653DA000653DB0003F -S31540021180653DC000653DD000653DE000653DF0002F -S31540021190653E0000653E1000653E2000653E30001B -S315400211A0653E4000653E5000653E6000653E70000B -S315400211B0653E8000653E9000653EA000653EB000FB -S315400211C0653EC000653ED000653EE000653EF000EB -S315400211D0653F0000653F1000653F2000653F3000D7 -S315400211E0653F4000653F5000653F6000653F7000C7 -S315400211F0653F8000653F9000653FA000653FB000B7 -S31540021200653FC000653FD000653FE000653FF000A6 -S315400212104200000000000000400FFFFFFFFFFFFFFB -S315400212204200000000200000420FFFFFFFFFFFFFC9 -S3154002123040000000000000004210000000080000CC -S3154002124042000000000000013EB000000000000124 -S315400212504200000000000002420F484C0137D2080B -S31540021260C20E780F256007AB41BA079B7AF94BA0AD -S315400212704201484C0137D208420E780F256007AB2F -S315400212804217E02D934BECDA420F484C0137D20815 -S31540021290C21E780F256007ABC20DA7D249883D4EC4 -S315400212A0421F484C0137D208C20E780F256007AB61 -S315400212B042100C446E87CE32C03340AB371208918F -S315400212C00000000000000000C03340AB3712089116 -S315400212D00000000000000000C29E7A0F236007A6AD -S315400212E0C29E7A0F236007A66F3F484C0137D20849 -S315400212F06E2E780F256007AB6F3F485B3D3F64B863 -S315400213006F3F484C0137D208EE2E780F256007AB67 -S315400213106F3F483CC5303F587FE2F780AB123809F1 -S315400213207FD00000000000007FEAF780AB12380948 -S31540021330002000000000000080280000000000009D -S3154002134080100000000000007FEFF780AB123809E2 -S315400213507FEFF2010203A1117FF0000000000000BE -S315400213600010000000001000801FFFFFF203A111D1 -S315400213708000000000000000001ABCD000023809BC -S31540021380801ABCD0000001110000000000000000DD -S315400213907E71000000000000416010000000000065 -S315400213A07FE11100000000000178100000000000FB -S315400213B03E880000FFF0000000120C00C073F800E7 -S315400213C0C1EFFFFFC00020003FB3C75D224F280F89 -S315400213D0C1B3C75CFAC08192A12FFF8000001FFFF4 -S315400213E03EE0000000FF0000A01FFF8001FE18073C -S315400213F041CFFFFE0000002040303FFFFFFFFFFDD0 -S3154002140042103FFEFC00000D3FD000003FEFFFFFC1 -S31540021410BFD0000010000000BFB000004FF0003FF8 -S3154002142001701000000000003E8000011A0000001A -S3154002143000000000000000007E7C0000000000006A -S31540021440416A1000010000107FF000000000000019 -S3154002145075012034056AC000FA1009091000104FC0 -S31540021460FFF00000000000000100203040030200AF -S31540021470003020340000A00B0000000000000000F5 -S315400214807FE0001010200001400000000010200AFA -S315400214907FF00000000000003FEFDFF00FFC484AFB -S315400214A0BFF80000000000007FFF000000000000BF -S315400214B07FFFE000000000007FF400000000000013 -S315400214C07FC00000000000007FF80000000000001E -S315400214D07FF0000000000000FFF000000000000066 -S315400214E0FFF0000000000000800000000000000045 -S315400214F000000000000100000000000000000000A3 +S315400200E00000000100000001BF8000000000000087 +S315400200F0BFF0000000000000800000000000000089 +S315400201000000000000000000400000000000000067 +S3154002011040080000000000004018000000000000F7 +S315400201200000000000000000000000000000000087 +S3154002013000000000000000003FF000000000000048 +S3154002014040080000000000003FF0000040000000B0 +S3154002015000000000000000003F8000004040000018 +S315400201600000000000000000000000000000000047 +S315400201700000000000000000000000000000000037 +S315400201804800000100000000480000000000000096 +S3154002019046C00000000000003FF0000000000000E2 +S315400201A0400000000000000040080000000000007F +S315400201B03F80000000000000000000000001000037 +S315400201C08000000000000000FFF000000000000078 +S315400201D0FFF00000000000007FF000000000000079 +S315400201E07FF80000000000007FC000000000000011 +S315400201F07FF40000000000007FFFE00000000000E6 +S315400202007FFF000000000000BFF800000000000071 +S315400202103FEFDFF00FFC484A7E710000000000000D +S3154002022041601000000000007FE111000000000064 +S3154002023001781000000000003E880000FFF0000038 +S3154002024000120C00C073F800C1EFFFFFC00020008F +S315400202503FB3C75D224F280FC1B3C75CFAC0819234 +S31540020260A12FFF8000001FFF3EE0000000FF0000BC +S31540020270A01FFF8001FE180741CFFFFE00000020AD +S3154002028040303FFFFFFFFFFD42103FFEFC00000DE6 +S315400202903FD000003FEFFFFFBFD00000100000003C +S315400202A0BFB000004FF0003F017010000000000098 +S315400202B03E8000011A00000000000000000000001D +S315400202C07E7C000000000000416A10000100001020 +S315400202D07FF000000000000075012034056AC0006E +S315400202E0FA1009091000104FFFF00000000000004C +S315400202F00100203040030200003020340000A00BF1 +S3154002030000000000000000007FE000101020000105 +S31540020310400000000010200A7FF0000000000000AC +S315400203204200000000000000400FFFFFFFFFFFFFFA +S315400203304200000000200000420FFFFFFFFFFFFFC8 +S3154002034040000000000000004210000000080000CB +S3154002035042000000000000013EB000000000000123 +S315400203604200000000000002420F484C0137D2080A +S31540020370C20E780F256007AB41BA079B7AF94BA0AC +S315400203804201484C0137D208420E780F256007AB2E +S315400203904217E02D934BECDA420F484C0137D20814 +S315400203A0C21E780F256007ABC20DA7D249883D4EC3 +S315400203B0421F484C0137D208C20E780F256007AB60 +S315400203C042100C446E87CE32C03340AB371208918E +S315400203D00000000000000000C03340AB3712089115 +S315400203E00000000000000000C29E7A0F236007A6AC +S315400203F0C29E7A0F236007A66F3F484C0137D20848 +S315400204006E2E780F256007AB6F3F485B3D3F64B861 +S315400204106F3F484C0137D208EE2E780F256007AB66 +S315400204206F3F483CC5303F587FE2F780AB123809F0 +S315400204307FD00000000000007FEAF780AB12380947 +S31540020440002000000000000080280000000000009C +S3154002045080100000000000007FEFF780AB123809E1 +S315400204607FEFF2010203A1117FF0000000000000BD +S315400204700010000000001000801FFFFFF203A111D0 +S315400204808000000000000000001ABCD000023809BB +S31540020490801ABCD0000001110000000000000000DC +S315400204A06530000065301000653020006530300050 +S315400204B06530400065305000653060006530700040 +S315400204C065308000653090006530A0006530B00030 +S315400204D06530C0006530D0006530E0006530F00020 +S315400204E0653100006531100065312000653130000C +S315400204F065314000653150006531600065317000FC +S3154002050065318000653190006531A0006531B000EB +S315400205106531C0006531D0006531E0006531F000DB +S3154002052065320000653210006532200065323000C7 +S3154002053065324000653250006532600065327000B7 +S3154002054065328000653290006532A0006532B000A7 +S315400205506532C0006532D0006532E0006532F00097 +S315400205606533000065331000653320006533300083 +S315400205706533400065335000653360006533700073 +S3154002058065338000653390006533A0006533B00063 +S315400205906533C0006533D0006533E0006533F00053 +S315400205A0653400006534100065342000653430003F +S315400205B0653440006534500065346000653470002F +S315400205C065348000653490006534A0006534B0001F +S315400205D06534C0006534D0006534E0006534F0000F +S315400205E065350000653510006535200065353000FB +S315400205F065354000653550006535600065357000EB +S3154002060065358000653590006535A0006535B000DA +S315400206106535C0006535D0006535E0006535F000CA +S3154002062065360000653610006536200065363000B6 +S3154002063065364000653650006536600065367000A6 +S3154002064065368000653690006536A0006536B00096 +S315400206506536C0006536D0006536E0006536F00086 +S315400206606537000065371000653720006537300072 +S315400206706537400065375000653760006537700062 +S3154002068065378000653790006537A0006537B00052 +S315400206906537C0006537D0006537E0006537F00042 +S315400206A0653800006538100065382000653830002E +S315400206B0653840006538500065386000653870001E +S315400206C065388000653890006538A0006538B0000E +S315400206D06538C0006538D0006538E0006538F000FE +S315400206E065390000653910006539200065393000EA +S315400206F065394000653950006539600065397000DA +S3154002070065398000653990006539A0006539B000C9 +S315400207106539C0006539D0006539E0006539F000B9 +S31540020720653A0000653A1000653A2000653A3000A5 +S31540020730653A4000653A5000653A6000653A700095 +S31540020740653A8000653A9000653AA000653AB00085 +S31540020750653AC000653AD000653AE000653AF00075 +S31540020760653B0000653B1000653B2000653B300061 +S31540020770653B4000653B5000653B6000653B700051 +S31540020780653B8000653B9000653BA000653BB00041 +S31540020790653BC000653BD000653BE000653BF00031 +S315400207A0653C0000653C1000653C2000653C30001D +S315400207B0653C4000653C5000653C6000653C70000D +S315400207C0653C8000653C9000653CA000653CB000FD +S315400207D0653CC000653CD000653CE000653CF000ED +S315400207E0653D0000653D1000653D2000653D3000D9 +S315400207F0653D4000653D5000653D6000653D7000C9 +S31540020800653D8000653D9000653DA000653DB000B8 +S31540020810653DC000653DD000653DE000653DF000A8 +S31540020820653E0000653E1000653E2000653E300094 +S31540020830653E4000653E5000653E6000653E700084 +S31540020840653E8000653E9000653EA000653EB00074 +S31540020850653EC000653ED000653EE000653EF00064 +S31540020860653F0000653F1000653F2000653F300050 +S31540020870653F4000653F5000653F6000653F700040 +S31540020880653F8000653F9000653FA000653FB00030 +S31540020890653FC000653FD000653FE000653FF00020 +S315400208A00BC0A4068F346C9B0BC093731C18544721 +S315400208B00BC083008E183C230BC072AE83A9704ACC +S315400208C00BC0627C9CC166FF0BC0526A7ACE64A49E +S315400208D00BC04277C0B04ADA0BC032A412B191A023 +S315400208E00BC022EF168069500BC01358732804734D +S315400208F00BC003DFD10A08480BBFE909B3B0463241 +S315400209000BBFCA8E711B8E880BBFAC4D32D41430CE +S315400209100BBF8E4553D34B1B0BBF7076318237EFDD +S315400209200BBF52DF2BADF99C0BBF357FA47C936C7A +S315400209300BBF18570061F5EB0BBEFB64A6154515B8 +S315400209400BBEDEA7FE865A2B0BBEC22074D37FBCDB +S315400209500BBEA5CD763F66690BBE89AE722750F0B7 +S315400209600BBE6DC2D9F976230BBE520A212B976C68 +S315400209700BBE3683BD31CAA20BBE1B2F257575CA67 +S315400209800BBE000BD34C7BAF0BBDE51941F097FE76 +S315400209900BBDCA56EE76E9D00BBDAFC457C7AB7393 +S315400209A00BBD9560FE9616690BBD7B2C655872751C +S315400209B00BBD612610404EC00BBD474D8532E40942 +S315400209C00BBD2DA24BC19EDF0BBD1423ED22D101DF +S315400209D00BBCFAD1F42A88E40BBCE1ABED438E8022 +S315400209E00BBCC8B1666884820BBCAFE1EF1D2D011A +S315400209F00BBC973D1867D0EF0BBC7EC274CAC96266 +S31540020A000BBC6671983E29FE0BBC4E4A18298BA92F +S31540020A100BBC364B8B5DF6DB0BBC1E758A0FECBFEF +S31540020A200BBC06C7ADD18E7E0BBBEF41918CE1F676 +S31540020A300BBBD7E2D17E33360BBBC0AB0B2E921B20 +S31540020A400BBBA999DD6E6B650BBB92AEE8503CA71A +S31540020A500BBB7BE9CD2362720BBB654A2E6F002C22 +S31540020A600BBB4ECFAFED00FE0BBB3879F685313F5F +S31540020A700BBB2248A8486FDE0BBB0C3B6C6BF73BAB +S31540020A800BBAF651EB44BCEE0BBAE08BCE42E7F121 +S31540020A900BBACAE8BFED5CC00BBAB5686BDD5EDD6A +S31540020AA00BBAA00A7EBA475E0BBA8ACEA6354FEB80 +S31540020AB00BBA75B4910571DB0BBA60BBEEE358EF26 +S31540020AC00BBA4BE4708569410BBA372DC79BD7FEEB +S31540020AD00BBA2297A6CCD68C0BBA0E21C1B0CFA0A8 +S31540020AE00BB9F9CBCCCEB6050BB9E5957D98648B9F +S31540020AF00BB9D17E8A670EE70BB9BD86AA77C310BA +S31540020B000BB9A9AD95E7FAC40BB995F305B23CE525 +S31540020B100BB98256B3AACE570BB96ED85A7C720617 +S31540020B200BB95B77B5A537C80BB94834817359CC35 +S31540020B300BB9350E7B02284D0BB922056037032EC1 +S31540020B400BB90F18EFBE614A0BB8FC48E908E5221B +S31540020B500BB8E9950C487EA90BB8D6FD1A6D99E8F3 +S31540020B600BB8C480D5245A340BB8B21FFED1E1BCAF +S31540020B700BB89FDA5A91A5260BB88DAFAC32CB0A89 +S31540020B800BB87B9FB83596F60BB869AA43C8DFE126 +S31540020B900BB857CF14C791B50BB8460DF1B639C647 +S31540020BA00BB83466A1C09DF90BB822D8ECB75E6E7D +S31540020BB00BB811649B0DA16B0BB8000975D6C959C8 +S31540020BC00BB7EEC746C434A50BB7DD9DD8230752F3 +S31540020BD00BB7CC8CF4D9FE010BB7BB9468674A506D +S31540020BE00BB7AAB3FEDE78540BB799EB84E65D0CDD +S31540020BF00BB7893AC7B70D960BB778A19517DF01A0 +S31540020C000BB7681FBB5D6E910BB757B50967B24C00 +S31540020C100BB747614EA011A20BB737245AF7861479 +S31540020C200BB726FDFEE4C3A00BB716EE0B6268E8CF +S31540020C300BB706F451ED36CE0BB6F710A4824F80B1 +S31540020C400BB6E742D59D7CB40BB6D78AB8377D0E34 +S31540020C500BB6C7E81FC458720BB6B85AE031BB325E +S31540020C600BB6A8E2CDE557F90BB6997FBDBB504509 +S31540020C700BB68A318504A35C0BB67AF7F985A39B3A +S31540020C800BB66BD2F17471FF0BB65CC243777FCE63 +S31540020C900BB64DC5C6A416420BB63EDD527CE411D8 +S31540020CA00BB63008BEF090CF0BB62147E45855EB51 +S31540020CB00BB6129A9B769D520BB60400BD75A5845F +S31540020CC00BB5F57A23E62B070BB5E706A8BE172C1C +S31540020CD00BB5D8A6265733FF0BB5CA58776DE54BE9 +S31540020CE00BB5BC1D771FE6AB0BB5ADF500EB0E7829 +S31540020CF00BB59FDEF0AC15940BB591DB229D63F2EA +S31540020D000BB583E97355E1C10BB57609BFC7CD3241 +S31540020D100BB5683BE53F94B80BB55A7FC162B5B691 +S31540020D200BB54CD5322E9F7F0BB53F3C15F79AA19A +S31540020D300BB531B44B67B45A0BB5243DB17DAE30D9 +S31540020D400BB516D8278BF18F0BB509838D3787677D +S31540020D500BB4FC3FC27713AE0BB4EF0CA791D4BBD6 +S31540020D600BB4E1EA1D1EA6680BB4D4D8040308E509 +S31540020D700BB4C7D63D722B370BB4BAE4AAEBF9488B +S31540020D800BB4AE032E3C2D7E0BB4A131A97965C9B5 +S31540020D900BB4946FFF043C1C0BB487BE11866236BB +S31540020DA00BB47B1BC3F1C0BF0BB46E88F97F999B12 +S31540020DB00BB4620595AFAD730BB455917C47645441 +S31540020DC00BB4492C9150F96C0BB43CD6B91AA9C84C +S31540020DD00BB4308FD835E60B0BB42457D37687162F +S31540020DE00BB4182E8FF205900BB40C13F2FEB43BE3 +S31540020DF00BB40007E232FD1F0BB3F40A4364A1674A +S31540020E000BB3E81AFCA7FBF00BB3DC39F44F468A66 +S31540020E100BB3D06710E9E1C30BB3C4A239439F4F6A +S31540020E200BB3B8EB54640EF10BB3AD42498DCDDF33 +S31540020E300BB3A1A7003DD89B0BB39619602ADF2BB3 +S31540020E400BB38A9951449BB80BB37F26BBB32B791C +S31540020E500BB373C187D669EA0BB368699E454E44A4 +S31540020E600BB35D1EE7CD4B2D0BB351E14D71B098DF +S31540020E700BB346B0B86B0FC30BB33B8D1226A15AC8 +S31540020E800BB330764445ADAC0BB3256C389CF6EBD0 +S31540020E900BB31A6ED934256E0BB30F7E104535F55A +S31540020EA00BB30499C83BE9D60BB2F9C1EBB539236A +S31540020EB00BB2EEF6657EC6AA0BB2E437209655D53E +S31540020EC00BB2D984082942630BB2CEDD0793F9E708 +S31540020ED00BB2C4420A6177190BB2B9B2FC4ABEDA06 +S31540020EE00BB2AF2FC9365EFF0BB2A4B85D37EEC167 +S31540020EF00BB29A4CA48F90E30BB28FEC8BA9777905 +S31540020F000BB28597FF1D694D0BB27B4EEBAE48DDAA +S31540020F100BB271113E499CEE0BB266DEE4071AA88B +S31540020F200BB25CB7CA2831380BB2529BDE1796F722 +S31540020F300BB2488B0D68D8030BB23E8545D7E65AAD +S31540020F400BB2348A7548AB540BB22A9A89C69A9721 +S31540020F500BB220B5718446610BB216DB1ADAF53F45 +S31540020F600BB20D0B744A39100BB203466C77876C81 +S31540020F700BB1F98BF22DD3490BB1EFDBF45D27FFB1 +S31540020F800BB1E636621A457E0BB1DC9B2A9E3DD5F5 +S31540020F900BB1D30A3D4613EE0BB1C98389925B81ED +S31540020FA00BB1C006FF26DA3F0BB1B6948DCA2A288A +S31540020FB00BB1AD2C25655D0F0BB1A3CDB603A13D9B +S31540020FC00BB19A792FD1E7410BB1912E831E88D26C +S31540020FD00BB187EDA058F0D60BB17EB678114473AB +S31540020FE00BB17588FAF80D3A0BB16C6519DDE45D03 +S31540020FF00BB1634AC5B31EEF0BB15A39EF877B2853 +S315400210000BB151328889CEAE0BB148348207B5DB7B +S315400210100BB13F3FCD6D43FF0BB136545C44B49A9E +S315400210200BB12D7220361D870BB124990B07221B5B +S315400210300BB11BC90E9AA72D0BB113021CF0880FD8 +S315400210400BB10A4428254C650BB1018F2271DEE5AE +S315400210500BB0F8E2FE2B44F40BB0F03FADC257237F +S315400210600BB0E7A523C37A850BB0DF1352D65AD904 +S315400210700BB0D68A2DBDA58C0BB0CE09A756C58915 +S315400210800BB0C591B2999FDB0BB0BD224298511568 +S315400210900BB0B4BB4A7EEB870BB0AC5CBD93363625 +S315400210A0529000000000000052900FF807F60DEB38 +S315400210B052901FE03F61BAD052902FB8D4E30F4806 +S315400210C052903F81F636B80C52904F3BD03C0A6460 +S315400210D052905EE68EFAD48B52906E825DA8FC2BBD +S315400210E052907E0F66AFED0752908D8DD3B1D9AA3D +S315400210F052909CFDCD8ED0095290AC5F7C69A3C8BC +S315400211005290BBB307ACAFDB5290CAF8960E710D44 +S315400211105290DA304D95FB065290E95A539F492C2C +S315400211205290F876CCDF6CD952910785DD689A29C0 +S3154002113052911687A8AE14A35291257C5187FD0978 +S3154002114052913463FA37014E5291433EC467EFFBE4 +S315400211505291520CD1372FEB529160CE41341D74CD +S3154002116052916F8334644DF952917E2BCA46BAB975 +S3154002117052918CC821D6D3E352919B58598F7C9F6A +S315400211805291A9DC8F6DF1045291B854E0F496A0C5 +S315400211905291C6C16B2DB8705291D5224AAE2EE1FC +S315400211A05291E3779B97F4A85291F1C1799CA8FF9B +S315400211B0529200000000000052920E33499A21A931 +S315400211C052921C5B70D9F82452922A788FC76DE5E9 +S315400211D05292388AC0059C28529246921AD4EA49BB +S315400211E05292548EB9151E8552926280B3476096CA +S315400211F05292706821902E9A52927E451BB944C3F0 +S3154002120052928C17B9337834529299E011188575F7 +S315400212105292A79E3A2CD2E65292B5524AE1278E74 +S315400212205292C2FC595456A75292D09C7B54E03EED +S315400212305292DE32C66287415292EBBF4FAFDD4BCE +S315400212405292F9422C23C47E529306BB705AE7C38C +S315400212505293142B30A929AB52932191811B0A41F7 +S3154002126052932EEE7577041652933C42213EE0C9C4 +S315400212705293498C97B10540529356CDEBC9B5E28C +S31540021280529364063044530652937135779C8DCB04 +S3154002129052937E5BD40F95A152938B79579D3EAB69 +S315400212A05293988E1409212E5293A59A1ADBB2575D +S315400212B05293B29D7D6356625293BF984CB56C77FA +S315400212C05293CC8A99AF54535293D97474F76DF2B0 +S315400212D05293E655EEFE13675293F32F17FE8D0493 +S315400212E0529400000000000052940CC8B6D657C271 +S315400212F0529419894C2329F052942641CF5695721D +S31540021300529432F24FB01C7A52943F9ADC3F79CED5 +S3154002131052944C3B83E57153529458D455549C1A7B +S31540021320529465655F122FF6529471EEAF76C2C63D +S3154002133052947E7054AF098952948AEA5CBC935F98 +S315400213405294975CD57680885294A3C7CC8A358AC4 +S315400213505294B02B4F7C0A885294BC876BA7F6EC0A +S315400213605294C8DC2E4239805294D529A457FCFCAB +S315400213705294E16FDACFF9375294EDAEDE6B10FE3E +S315400213805294F9E6BBC4ECB3529506177F5491BB0F +S3154002139052951241356CF6E052951E63EA3D95B080 +S315400213A052952A7FA9D2F8EA529536948017481068 +S315400213B0529542A278D2D03652954EA99FAC8A0F08 +S315400213C052955AAA002A9D5A529566A3A5B2E1B1F0 +S315400213D0529572969B8B5CD852957E82ECDABE8D84 +S315400213E052958A68A4A8D9F352959647CDDF1CA593 +S315400213F05295A220734903775295ADF29F948CFB86 +S315400214005295B9BE5D52A9DA5295C583B6F7AB037A +S315400214105295D142B6DBADC55295DCFB673B05DF43 +S315400214205295E8ADD236A58F5295F45A01D483B47B +S31540021430529600000000000052960B9FD68A4554F1 +S31540021440529617398F2AAA48529622CD337F0FE8F1 +S3154002145052962E5ACD0C3EBE529639E2653E421BFC +S31540021460529645640568C1C3529650DFB6C759F4D1 +S3154002147052965C55827DF1D2529667C57199104B50 +S315400214805296732F8D0E2F7752967E93DDBC0E7336 +S31540021490529689F26C6B01D05296954B41CD42934E +S315400214A000000000000000000000000000000000F4 +S315400214B000000000000000000000000000000000E4 +S315400214C000000000000000000000000000000000D4 +S315400214D000000000000000000000000000000000C4 +S315400214E000000000000000000000000000000000B4 +S315400214F000000000000000000000000000000000A4 S315400215000000000000000000000000000000000093 S315400215100000000000000000000000000000000083 S315400215200000000000000000000000000000000073 @@ -9492,8 +9632,8 @@ S31540027FC00000000000000000000000000000000069 S31540027FD00000000000000000000000000000000059 S31540027FE00000000000000000000000000000000049 S31540027FF00000000000000000000000000000000039 -S315400280000000003F0000000C0000003F000000128C -S31540028010000000FF00000018000000000000000001 +S315400280000000000000000000000000000000000028 +S315400280100000000000000000000000000000000018 S315400280200000000000000000000000000000000008 S3154002803000000000000000000000000000000000F8 S3154002804000000000000000000000000000000000E8 @@ -16404,8 +16544,8 @@ S31540042FC000000000000000000000000000000000B7 S31540042FD000000000000000000000000000000000A7 S31540042FE00000000000000000000000000000000097 S31540042FF00000000000000000000000000000000087 -S315400430000000000000000000000000000000000076 -S315400430100000000000000000000000000000000066 +S3154004300000000018000000FF000000120000003F0E +S315400430100000000C0000003F00000000000000001B S315400430200000000000000000000000000000000056 S315400430300000000000000000000000000000000046 S315400430400000000000000000000000000000000036 @@ -17684,125 +17824,125 @@ S31540047FC00000000000000000000000000000000067 S31540047FD00000000000000000000000000000000057 S31540047FE00000000000000000000000000000000047 S31540047FF00000000000000000000000000000000037 -S315400480000000000000000000000000000000000026 -S315400480100000000000000000000000000000000016 -S315400480200000000000000000000000000000000006 -S3154004803000000000000000000000000000000000F6 -S3154004804000000000000000000000000000000000E6 -S3154004805000000000000000000000000000000000D6 -S3154004806000000000000000000000000000000000C6 -S3154004807000000000000000000000000000000000B6 -S3154004808000000000000000000000000000000000A6 -S315400480900000000000000000000000000000000096 -S315400480A00000000000000000000000000000000086 -S315400480B00000000000000000000000000000000076 -S315400480C00000000000000000000000000000000066 -S315400480D00000000000000000000000000000000056 -S315400480E00000000000000000000000000000000046 -S315400480F00000000000000000000000000000000036 -S315400481000000000000000000000000000000000025 -S315400481100000000000000000000000000000000015 -S315400481200000000000000000000000000000000005 -S3154004813000000000000000000000000000000000F5 -S3154004814000000000000000000000000000000000E5 -S3154004815000000000000000000000000000000000D5 -S3154004816000000000000000000000000000000000C5 -S3154004817000000000000000000000000000000000B5 -S3154004818000000000000000000000000000000000A5 -S315400481900000000000000000000000000000000095 -S315400481A00000000000000000000000000000000085 -S315400481B00000000000000000000000000000000075 -S315400481C00000000000000000000000000000000065 -S315400481D00000000000000000000000000000000055 -S315400481E00000000000000000000000000000000045 +S31540048000000000020000000300000000000000031E +S31540048010FFFFFFFEFFFFFFFF00000002FFFFFFFD23 +S315400480200000000000000000000000010000000005 +S3154004803000000000FFFFFFFF0000000000000001F9 +S31540048040FFFFFFFFFFFFFFFFFFFFFFFF00000001F1 +S31540048050FFFFFFFFFFFFFFFE0000000300000000DC +S31540048060FFFFFFFEFFFFFFFD0000000000000009C8 +S315400480700000000700000001FFFFFFF700000002B8 +S31540048080FFFFFFFCFFFFFFF800000002FFFFFFFCBD +S31540048090FFFFFFF8FFFFFFFC00000002000000089E +S315400480A0FFFFFFFCFFFFFFFEFFFFFFF8FFFFFFF8A8 +S315400480B000000001FFFFFFF8FFFFFFF7000000008C +S315400480C00000000B00000002000000050000002F25 +S315400480D0000000020000001700003039000002A72B +S315400480E000000012FFFF076C0000004DFFFFFCC6B6 +S315400480F000003039FFFFFD59FFFFFFEEFFFF076C1D +S31540048100FFFFFFB30000033A00000091FFFFE84180 +S3154004811000000000FFFFFD84FFFED02F000000009A +S315400481200000F6FA006E49810000000000000000DD +S3154004813000000000000000000000000200000003F0 +S3154004814000000000000000000000000100000000E4 +S31540048150FFFFFFFE0000000355555554FFFFFFFE89 +S315400481600000000355555554700FFFFE00000007EC +S315400481701002492400000000000000000000000036 +S315400481800000000200000003000000060000000298 +S31540048190FFFFFFFDFFFFFFFA0000000000000001A3 +S315400481A00000000000000000FFFFFFFF0000000089 +S315400481B000000001FFFFFFFFFFFFFFFFFFFFFFFF80 +S315400481C000000001FFFFFFFFFFFFFFFE000000036A +S315400481D0FFFFFFFAFFFFFFFEFFFFFFFD0000000663 +S315400481E0000000000000000000000009FFFFF0004E S315400481F00000000000000000000000000000000035 -S315400482000000000000000000000000000000000024 +S31540048200000000000000000100000002000000031E S315400482100000000000000000000000000000000014 -S315400482200000000000000000000000000000000004 -S3154004823000000000000000000000000000000000F4 -S3154004824000000000000000000000000000000000E4 -S3154004825000000000000000000000000000000000D4 -S3154004826000000000000000000000000000000000C4 -S3154004827000000000000000000000000000000000B4 -S3154004828000000000000000000000000000000000A4 -S315400482900000000000000000000000000000000094 -S315400482A00000000000000000000000000000000084 -S315400482B00000000000000000000000000000000074 -S315400482C00000000000000000000000000000000064 -S315400482D00000000000000000000000000000000054 -S315400482E00000000000000000000000000000000044 -S315400482F00000000000000000000000000000000034 -S315400483000000000000000000000000000000000023 -S315400483100000000000000000000000000000000013 -S315400483200000000000000000000000000000000003 -S3154004833000000000000000000000000000000000F3 -S3154004834000000000000000000000000000000000E3 -S3154004835000000000000000000000000000000000D3 -S3154004836000000000000000000000000000000000C3 -S3154004837000000000000000000000000000000000B3 -S3154004838000000000000000000000000000000000A3 -S315400483900000000000000000000000000000000093 -S315400483A00000000000000000000000000000000083 -S315400483B00000000000000000000000000000000073 -S315400483C00000000000000000000000000000000063 -S315400483D00000000000000000000000000000000053 -S315400483E00000000000000000000000000000000043 -S315400483F00000000000000000000000000000000033 -S315400484000000000000000000000000000000000022 -S315400484100000000000000000000000000000000012 -S315400484200000000000000000000000000000000002 -S3154004843000000000000000000000000000000000F2 -S3154004844000000000000000000000000000000000E2 -S3154004845000000000000000000000000000000000D2 -S3154004846000000000000000000000000000000000C2 -S3154004847000000000000000000000000000000000B2 -S3154004848000000000000000000000000000000000A2 -S315400484900000000000000000000000000000000092 -S315400484A00000000000000000000000000000000082 -S315400484B00000000000000000000000000000000072 -S315400484C00000000000000000000000000000000062 -S315400484D00000000000000000000000000000000052 -S315400484E00000000000000000000000000000000042 -S315400484F00000000000000000000000000000000032 -S315400485000000000000000000000000000000000021 -S315400485100000000000000000000000000000000011 -S315400485200000000000000000000000000000000001 -S3154004853000000000000000000000000000000000F1 -S3154004854000000000000000000000000000000000E1 -S3154004855000000000000000000000000000000000D1 -S3154004856000000000000000000000000000000000C1 -S3154004857000000000000000000000000000000000B1 -S3154004858000000000000000000000000000000000A1 -S315400485900000000000000000000000000000000091 -S315400485A00000000000000000000000000000000081 -S315400485B00000000000000000000000000000000071 -S315400485C00000000000000000000000000000000061 -S315400485D00000000000000000000000000000000051 -S315400485E00000000000000000000000000000000041 -S315400485F00000000000000000000000000000000031 -S315400486000000000000000000000000000000000020 -S315400486100000000000000000000000000000000010 -S315400486200000000000000000000000000000000000 -S3154004863000000000000000000000000000000000F0 -S3154004864000000000000000000000000000000000E0 +S315400482200000000000000000400482204004822038 +S31540048230400482284004822840048230400482302C +S3154004824040048238400482384004824040048240DC +S31540048250400482484004824840048250400482508C +S31540048260400482584004825840048260400482603C +S3154004827040048268400482684004827040048270EC +S31540048280400482784004827840048280400482809C +S31540048290400482884004828840048290400482904C +S315400482A04004829840048298400482A0400482A0FC +S315400482B0400482A8400482A8400482B0400482B0AC +S315400482C0400482B8400482B8400482C0400482C05C +S315400482D0400482C8400482C8400482D0400482D00C +S315400482E0400482D8400482D8400482E0400482E0BC +S315400482F0400482E8400482E8400482F0400482F06C +S31540048300400482F8400482F8400483004004830019 +S3154004831040048308400483084004831040048310C7 +S315400483204004831840048318400483204004832077 +S315400483304004832840048328400483304004833027 +S3154004834040048338400483384004834040048340D7 +S315400483504004834840048348400483504004835087 +S315400483604004835840048358400483604004836037 +S3154004837040048368400483684004837040048370E7 +S315400483804004837840048378400483804004838097 +S315400483904004838840048388400483904004839047 +S315400483A04004839840048398400483A0400483A0F7 +S315400483B0400483A8400483A8400483B0400483B0A7 +S315400483C0400483B8400483B8400483C0400483C057 +S315400483D0400483C8400483C8400483D0400483D007 +S315400483E0400483D8400483D8400483E0400483E0B7 +S315400483F0400483E8400483E8400483F0400483F067 +S31540048400400483F8400483F8400484004004840014 +S3154004841040048408400484084004841040048410C2 +S315400484204004841840048418400484204004842072 +S315400484304004842840048428400484304004843022 +S3154004844040048438400484384004844040048440D2 +S315400484504004844840048448400484504004845082 +S315400484604004845840048458400484604004846032 +S3154004847040048468400484684004847040048470E2 +S315400484804004847840048478400484804004848092 +S315400484904004848840048488400484904004849042 +S315400484A04004849840048498400484A0400484A0F2 +S315400484B0400484A8400484A8400484B0400484B0A2 +S315400484C0400484B8400484B8400484C0400484C052 +S315400484D0400484C8400484C8400484D0400484D002 +S315400484E0400484D8400484D8400484E0400484E0B2 +S315400484F0400484E8400484E8400484F0400484F062 +S31540048500400484F8400484F840048500400485000F +S3154004851040048508400485084004851040048510BD +S31540048520400485184004851840048520400485206D +S31540048530400485284004852840048530400485301D +S3154004854040048538400485384004854040048540CD +S31540048550400485484004854840048550400485507D +S31540048560400485584004855840048560400485602D +S3154004857040048568400485684004857040048570DD +S31540048580400485784004857840048580400485808D +S31540048590400485884004858840048590400485903D +S315400485A04004859840048598400485A0400485A0ED +S315400485B0400485A8400485A8400485B0400485B09D +S315400485C0400485B8400485B8400485C0400485C04D +S315400485D0400485C8400485C8400485D0400485D0FD +S315400485E0400485D8400485D8400485E0400485E0AD +S315400485F0400485E8400485E8400485F0400485F05D +S31540048600400485F8400485F840048600400486000A +S3154004861040048608400486084004861040048610B8 +S31540048620400486184004861800020000FFFFFFFF3E +S3154004863000000000400486300000000000000000F6 +S3154004864000000000000000020000000000000000DE S3154004865000000000000000000000000000000000D0 S3154004866000000000000000000000000000000000C0 S3154004867000000000000000000000000000000000B0 S3154004868000000000000000000000000000000000A0 S315400486900000000000000000000000000000000090 -S315400486A00000000000000000000000000000000080 -S315400486B00000000000000000000000000000000070 +S315400486A00000000000000000400486B00000000006 +S315400486B0000000004004899C40048A6840048B34CE S315400486C00000000000000000000000000000000060 S315400486D00000000000000000000000000000000050 -S315400486E00000000000000000000000000000000040 +S315400486E0000000004001D9D800000000000000004E S315400486F00000000000000000000000000000000030 S31540048700000000000000000000000000000000001F S31540048710000000000000000000000000000000000F S3154004872000000000000000000000000000000000FF S3154004873000000000000000000000000000000000EF S3154004874000000000000000000000000000000000DF -S3154004875000000000000000000000000000000000CF -S3154004876000000000000000000000000000000000BF +S3154004875000000000000000000000000000000001CE +S31540048760330EABCD1234E66DDEEC0005000B000093 S3154004877000000000000000000000000000000000AF S31540048780000000000000000000000000000000009F S31540048790000000000000000000000000000000008F @@ -17879,2055 +18019,7 @@ S31540048BF0000000000000000000000000000000002B S31540048C00000000000000000000000000000000001A S31540048C10000000000000000000000000000000000A S31540048C2000000000000000000000000000000000FA -S31540048C3000000000000000000000000000000000EA -S31540048C4000000000000000000000000000000000DA -S31540048C5000000000000000000000000000000000CA -S31540048C6000000000000000000000000000000000BA -S31540048C7000000000000000000000000000000000AA -S31540048C80000000000000000000000000000000009A -S31540048C90000000000000000000000000000000008A -S31540048CA0000000000000000000000000000000007A -S31540048CB0000000000000000000000000000000006A -S31540048CC0000000000000000000000000000000005A -S31540048CD0000000000000000000000000000000004A -S31540048CE0000000000000000000000000000000003A -S31540048CF0000000000000000000000000000000002A -S31540048D000000000000000000000000000000000019 -S31540048D100000000000000000000000000000000009 -S31540048D2000000000000000000000000000000000F9 -S31540048D3000000000000000000000000000000000E9 -S31540048D4000000000000000000000000000000000D9 -S31540048D5000000000000000000000000000000000C9 -S31540048D6000000000000000000000000000000000B9 -S31540048D7000000000000000000000000000000000A9 -S31540048D800000000000000000000000000000000099 -S31540048D900000000000000000000000000000000089 -S31540048DA00000000000000000000000000000000079 -S31540048DB00000000000000000000000000000000069 -S31540048DC00000000000000000000000000000000059 -S31540048DD00000000000000000000000000000000049 -S31540048DE00000000000000000000000000000000039 -S31540048DF00000000000000000000000000000000029 -S31540048E000000000000000000000000000000000018 -S31540048E100000000000000000000000000000000008 -S31540048E2000000000000000000000000000000000F8 -S31540048E3000000000000000000000000000000000E8 -S31540048E4000000000000000000000000000000000D8 -S31540048E5000000000000000000000000000000000C8 -S31540048E6000000000000000000000000000000000B8 -S31540048E7000000000000000000000000000000000A8 -S31540048E800000000000000000000000000000000098 -S31540048E900000000000000000000000000000000088 -S31540048EA00000000000000000000000000000000078 -S31540048EB00000000000000000000000000000000068 -S31540048EC00000000000000000000000000000000058 -S31540048ED00000000000000000000000000000000048 -S31540048EE00000000000000000000000000000000038 -S31540048EF00000000000000000000000000000000028 -S31540048F000000000000000000000000000000000017 -S31540048F100000000000000000000000000000000007 -S31540048F2000000000000000000000000000000000F7 -S31540048F3000000000000000000000000000000000E7 -S31540048F4000000000000000000000000000000000D7 -S31540048F5000000000000000000000000000000000C7 -S31540048F6000000000000000000000000000000000B7 -S31540048F7000000000000000000000000000000000A7 -S31540048F800000000000000000000000000000000097 -S31540048F900000000000000000000000000000000087 -S31540048FA00000000000000000000000000000000077 -S31540048FB00000000000000000000000000000000067 -S31540048FC00000000000000000000000000000000057 -S31540048FD00000000000000000000000000000000047 -S31540048FE00000000000000000000000000000000037 -S31540048FF00000000000000000000000000000000027 -S315400490000000000000000000000000000000000016 -S315400490100000000000000000000000000000000006 -S3154004902000000000000000000000000000000000F6 -S3154004903000000000000000000000000000000000E6 -S3154004904000000000000000000000000000000000D6 -S3154004905000000000000000000000000000000000C6 -S3154004906000000000000000000000000000000000B6 -S3154004907000000000000000000000000000000000A6 -S315400490800000000000000000000000000000000096 -S315400490900000000000000000000000000000000086 -S315400490A00000000000000000000000000000000076 -S315400490B00000000000000000000000000000000066 -S315400490C00000000000000000000000000000000056 -S315400490D00000000000000000000000000000000046 -S315400490E00000000000000000000000000000000036 -S315400490F00000000000000000000000000000000026 -S315400491000000000000000000000000000000000015 -S315400491100000000000000000000000000000000005 -S3154004912000000000000000000000000000000000F5 -S3154004913000000000000000000000000000000000E5 -S3154004914000000000000000000000000000000000D5 -S3154004915000000000000000000000000000000000C5 -S3154004916000000000000000000000000000000000B5 -S3154004917000000000000000000000000000000000A5 -S315400491800000000000000000000000000000000095 -S315400491900000000000000000000000000000000085 -S315400491A00000000000000000000000000000000075 -S315400491B00000000000000000000000000000000065 -S315400491C00000000000000000000000000000000055 -S315400491D00000000000000000000000000000000045 -S315400491E00000000000000000000000000000000035 -S315400491F00000000000000000000000000000000025 -S315400492000000000000000000000000000000000014 -S315400492100000000000000000000000000000000004 -S3154004922000000000000000000000000000000000F4 -S3154004923000000000000000000000000000000000E4 -S3154004924000000000000000000000000000000000D4 -S3154004925000000000000000000000000000000000C4 -S3154004926000000000000000000000000000000000B4 -S3154004927000000000000000000000000000000000A4 -S315400492800000000000000000000000000000000094 -S315400492900000000000000000000000000000000084 -S315400492A00000000000000000000000000000000074 -S315400492B00000000000000000000000000000000064 -S315400492C00000000000000000000000000000000054 -S315400492D00000000000000000000000000000000044 -S315400492E00000000000000000000000000000000034 -S315400492F00000000000000000000000000000000024 -S315400493000000000000000000000000000000000013 -S315400493100000000000000000000000000000000003 -S3154004932000000000000000000000000000000000F3 -S3154004933000000000000000000000000000000000E3 -S3154004934000000000000000000000000000000000D3 -S3154004935000000000000000000000000000000000C3 -S3154004936000000000000000000000000000000000B3 -S3154004937000000000000000000000000000000000A3 -S315400493800000000000000000000000000000000093 -S315400493900000000000000000000000000000000083 -S315400493A00000000000000000000000000000000073 -S315400493B00000000000000000000000000000000063 -S315400493C00000000000000000000000000000000053 -S315400493D00000000000000000000000000000000043 -S315400493E00000000000000000000000000000000033 -S315400493F00000000000000000000000000000000023 -S315400494000000000000000000000000000000000012 -S315400494100000000000000000000000000000000002 -S3154004942000000000000000000000000000000000F2 -S3154004943000000000000000000000000000000000E2 -S3154004944000000000000000000000000000000000D2 -S3154004945000000000000000000000000000000000C2 -S3154004946000000000000000000000000000000000B2 -S3154004947000000000000000000000000000000000A2 -S315400494800000000000000000000000000000000092 -S315400494900000000000000000000000000000000082 -S315400494A00000000000000000000000000000000072 -S315400494B00000000000000000000000000000000062 -S315400494C00000000000000000000000000000000052 -S315400494D00000000000000000000000000000000042 -S315400494E00000000000000000000000000000000032 -S315400494F00000000000000000000000000000000022 -S315400495000000000000000000000000000000000011 -S315400495100000000000000000000000000000000001 -S3154004952000000000000000000000000000000000F1 -S3154004953000000000000000000000000000000000E1 -S3154004954000000000000000000000000000000000D1 -S3154004955000000000000000000000000000000000C1 -S3154004956000000000000000000000000000000000B1 -S3154004957000000000000000000000000000000000A1 -S315400495800000000000000000000000000000000091 -S315400495900000000000000000000000000000000081 -S315400495A00000000000000000000000000000000071 -S315400495B00000000000000000000000000000000061 -S315400495C00000000000000000000000000000000051 -S315400495D00000000000000000000000000000000041 -S315400495E00000000000000000000000000000000031 -S315400495F00000000000000000000000000000000021 -S315400496000000000000000000000000000000000010 -S315400496100000000000000000000000000000000000 -S3154004962000000000000000000000000000000000F0 -S3154004963000000000000000000000000000000000E0 -S3154004964000000000000000000000000000000000D0 -S3154004965000000000000000000000000000000000C0 -S3154004966000000000000000000000000000000000B0 -S3154004967000000000000000000000000000000000A0 -S315400496800000000000000000000000000000000090 -S315400496900000000000000000000000000000000080 -S315400496A00000000000000000000000000000000070 -S315400496B00000000000000000000000000000000060 -S315400496C00000000000000000000000000000000050 -S315400496D00000000000000000000000000000000040 -S315400496E00000000000000000000000000000000030 -S315400496F00000000000000000000000000000000020 -S31540049700000000000000000000000000000000000F -S3154004971000000000000000000000000000000000FF -S3154004972000000000000000000000000000000000EF -S3154004973000000000000000000000000000000000DF -S3154004974000000000000000000000000000000000CF -S3154004975000000000000000000000000000000000BF -S3154004976000000000000000000000000000000000AF -S31540049770000000000000000000000000000000009F -S31540049780000000000000000000000000000000008F -S31540049790000000000000000000000000000000007F -S315400497A0000000000000000000000000000000006F -S315400497B0000000000000000000000000000000005F -S315400497C0000000000000000000000000000000004F -S315400497D0000000000000000000000000000000003F -S315400497E0000000000000000000000000000000002F -S315400497F0000000000000000000000000000000001F -S31540049800000000000000000000000000000000000E -S3154004981000000000000000000000000000000000FE -S3154004982000000000000000000000000000000000EE -S3154004983000000000000000000000000000000000DE -S3154004984000000000000000000000000000000000CE -S3154004985000000000000000000000000000000000BE -S3154004986000000000000000000000000000000000AE -S31540049870000000000000000000000000000000009E -S31540049880000000000000000000000000000000008E -S31540049890000000000000000000000000000000007E -S315400498A0000000000000000000000000000000006E -S315400498B0000000000000000000000000000000005E -S315400498C0000000000000000000000000000000004E -S315400498D0000000000000000000000000000000003E -S315400498E0000000000000000000000000000000002E -S315400498F0000000000000000000000000000000001E -S31540049900000000000000000000000000000000000D -S3154004991000000000000000000000000000000000FD -S3154004992000000000000000000000000000000000ED -S3154004993000000000000000000000000000000000DD -S3154004994000000000000000000000000000000000CD -S3154004995000000000000000000000000000000000BD -S3154004996000000000000000000000000000000000AD -S31540049970000000000000000000000000000000009D -S31540049980000000000000000000000000000000008D -S31540049990000000000000000000000000000000007D -S315400499A0000000000000000000000000000000006D -S315400499B0000000000000000000000000000000005D -S315400499C0000000000000000000000000000000004D -S315400499D0000000000000000000000000000000003D -S315400499E0000000000000000000000000000000002D -S315400499F0000000000000000000000000000000001D -S31540049A00000000000000000000000000000000000C -S31540049A1000000000000000000000000000000000FC -S31540049A2000000000000000000000000000000000EC -S31540049A3000000000000000000000000000000000DC -S31540049A4000000000000000000000000000000000CC -S31540049A5000000000000000000000000000000000BC -S31540049A6000000000000000000000000000000000AC -S31540049A70000000000000000000000000000000009C -S31540049A80000000000000000000000000000000008C -S31540049A90000000000000000000000000000000007C -S31540049AA0000000000000000000000000000000006C -S31540049AB0000000000000000000000000000000005C -S31540049AC0000000000000000000000000000000004C -S31540049AD0000000000000000000000000000000003C -S31540049AE0000000000000000000000000000000002C -S31540049AF0000000000000000000000000000000001C -S31540049B00000000000000000000000000000000000B -S31540049B1000000000000000000000000000000000FB -S31540049B2000000000000000000000000000000000EB -S31540049B3000000000000000000000000000000000DB -S31540049B4000000000000000000000000000000000CB -S31540049B5000000000000000000000000000000000BB -S31540049B6000000000000000000000000000000000AB -S31540049B70000000000000000000000000000000009B -S31540049B80000000000000000000000000000000008B -S31540049B90000000000000000000000000000000007B -S31540049BA0000000000000000000000000000000006B -S31540049BB0000000000000000000000000000000005B -S31540049BC0000000000000000000000000000000004B -S31540049BD0000000000000000000000000000000003B -S31540049BE0000000000000000000000000000000002B -S31540049BF0000000000000000000000000000000001B -S31540049C00000000000000000000000000000000000A -S31540049C1000000000000000000000000000000000FA -S31540049C2000000000000000000000000000000000EA -S31540049C3000000000000000000000000000000000DA -S31540049C4000000000000000000000000000000000CA -S31540049C5000000000000000000000000000000000BA -S31540049C6000000000000000000000000000000000AA -S31540049C70000000000000000000000000000000009A -S31540049C80000000000000000000000000000000008A -S31540049C90000000000000000000000000000000007A -S31540049CA0000000000000000000000000000000006A -S31540049CB0000000000000000000000000000000005A -S31540049CC0000000000000000000000000000000004A -S31540049CD0000000000000000000000000000000003A -S31540049CE0000000000000000000000000000000002A -S31540049CF0000000000000000000000000000000001A -S31540049D000000000000000000000000000000000009 -S31540049D1000000000000000000000000000000000F9 -S31540049D2000000000000000000000000000000000E9 -S31540049D3000000000000000000000000000000000D9 -S31540049D4000000000000000000000000000000000C9 -S31540049D5000000000000000000000000000000000B9 -S31540049D6000000000000000000000000000000000A9 -S31540049D700000000000000000000000000000000099 -S31540049D800000000000000000000000000000000089 -S31540049D900000000000000000000000000000000079 -S31540049DA00000000000000000000000000000000069 -S31540049DB00000000000000000000000000000000059 -S31540049DC00000000000000000000000000000000049 -S31540049DD00000000000000000000000000000000039 -S31540049DE00000000000000000000000000000000029 -S31540049DF00000000000000000000000000000000019 -S31540049E000000000000000000000000000000000008 -S31540049E1000000000000000000000000000000000F8 -S31540049E2000000000000000000000000000000000E8 -S31540049E3000000000000000000000000000000000D8 -S31540049E4000000000000000000000000000000000C8 -S31540049E5000000000000000000000000000000000B8 -S31540049E6000000000000000000000000000000000A8 -S31540049E700000000000000000000000000000000098 -S31540049E800000000000000000000000000000000088 -S31540049E900000000000000000000000000000000078 -S31540049EA00000000000000000000000000000000068 -S31540049EB00000000000000000000000000000000058 -S31540049EC00000000000000000000000000000000048 -S31540049ED00000000000000000000000000000000038 -S31540049EE00000000000000000000000000000000028 -S31540049EF00000000000000000000000000000000018 -S31540049F000000000000000000000000000000000007 -S31540049F1000000000000000000000000000000000F7 -S31540049F2000000000000000000000000000000000E7 -S31540049F3000000000000000000000000000000000D7 -S31540049F4000000000000000000000000000000000C7 -S31540049F5000000000000000000000000000000000B7 -S31540049F6000000000000000000000000000000000A7 -S31540049F700000000000000000000000000000000097 -S31540049F800000000000000000000000000000000087 -S31540049F900000000000000000000000000000000077 -S31540049FA00000000000000000000000000000000067 -S31540049FB00000000000000000000000000000000057 -S31540049FC00000000000000000000000000000000047 -S31540049FD00000000000000000000000000000000037 -S31540049FE00000000000000000000000000000000027 -S31540049FF00000000000000000000000000000000017 -S3154004A0000000000000000000000000000000000006 -S3154004A01000000000000000000000000000000000F6 -S3154004A02000000000000000000000000000000000E6 -S3154004A03000000000000000000000000000000000D6 -S3154004A04000000000000000000000000000000000C6 -S3154004A05000000000000000000000000000000000B6 -S3154004A06000000000000000000000000000000000A6 -S3154004A0700000000000000000000000000000000096 -S3154004A0800000000000000000000000000000000086 -S3154004A0900000000000000000000000000000000076 -S3154004A0A00000000000000000000000000000000066 -S3154004A0B00000000000000000000000000000000056 -S3154004A0C00000000000000000000000000000000046 -S3154004A0D00000000000000000000000000000000036 -S3154004A0E00000000000000000000000000000000026 -S3154004A0F00000000000000000000000000000000016 -S3154004A1000000000000000000000000000000000005 -S3154004A11000000000000000000000000000000000F5 -S3154004A12000000000000000000000000000000000E5 -S3154004A13000000000000000000000000000000000D5 -S3154004A14000000000000000000000000000000000C5 -S3154004A15000000000000000000000000000000000B5 -S3154004A16000000000000000000000000000000000A5 -S3154004A1700000000000000000000000000000000095 -S3154004A1800000000000000000000000000000000085 -S3154004A1900000000000000000000000000000000075 -S3154004A1A00000000000000000000000000000000065 -S3154004A1B00000000000000000000000000000000055 -S3154004A1C00000000000000000000000000000000045 -S3154004A1D00000000000000000000000000000000035 -S3154004A1E00000000000000000000000000000000025 -S3154004A1F00000000000000000000000000000000015 -S3154004A2000000000000000000000000000000000004 -S3154004A21000000000000000000000000000000000F4 -S3154004A22000000000000000000000000000000000E4 -S3154004A23000000000000000000000000000000000D4 -S3154004A24000000000000000000000000000000000C4 -S3154004A25000000000000000000000000000000000B4 -S3154004A26000000000000000000000000000000000A4 -S3154004A2700000000000000000000000000000000094 -S3154004A2800000000000000000000000000000000084 -S3154004A2900000000000000000000000000000000074 -S3154004A2A00000000000000000000000000000000064 -S3154004A2B00000000000000000000000000000000054 -S3154004A2C00000000000000000000000000000000044 -S3154004A2D00000000000000000000000000000000034 -S3154004A2E00000000000000000000000000000000024 -S3154004A2F00000000000000000000000000000000014 -S3154004A3000000000000000000000000000000000003 -S3154004A31000000000000000000000000000000000F3 -S3154004A32000000000000000000000000000000000E3 -S3154004A33000000000000000000000000000000000D3 -S3154004A34000000000000000000000000000000000C3 -S3154004A35000000000000000000000000000000000B3 -S3154004A36000000000000000000000000000000000A3 -S3154004A3700000000000000000000000000000000093 -S3154004A3800000000000000000000000000000000083 -S3154004A3900000000000000000000000000000000073 -S3154004A3A00000000000000000000000000000000063 -S3154004A3B00000000000000000000000000000000053 -S3154004A3C00000000000000000000000000000000043 -S3154004A3D00000000000000000000000000000000033 -S3154004A3E00000000000000000000000000000000023 -S3154004A3F00000000000000000000000000000000013 -S3154004A4000000000000000000000000000000000002 -S3154004A41000000000000000000000000000000000F2 -S3154004A42000000000000000000000000000000000E2 -S3154004A43000000000000000000000000000000000D2 -S3154004A44000000000000000000000000000000000C2 -S3154004A45000000000000000000000000000000000B2 -S3154004A46000000000000000000000000000000000A2 -S3154004A4700000000000000000000000000000000092 -S3154004A4800000000000000000000000000000000082 -S3154004A4900000000000000000000000000000000072 -S3154004A4A00000000000000000000000000000000062 -S3154004A4B00000000000000000000000000000000052 -S3154004A4C00000000000000000000000000000000042 -S3154004A4D00000000000000000000000000000000032 -S3154004A4E00000000000000000000000000000000022 -S3154004A4F00000000000000000000000000000000012 -S3154004A5000000000000000000000000000000000001 -S3154004A51000000000000000000000000000000000F1 -S3154004A52000000000000000000000000000000000E1 -S3154004A53000000000000000000000000000000000D1 -S3154004A54000000000000000000000000000000000C1 -S3154004A55000000000000000000000000000000000B1 -S3154004A56000000000000000000000000000000000A1 -S3154004A5700000000000000000000000000000000091 -S3154004A5800000000000000000000000000000000081 -S3154004A5900000000000000000000000000000000071 -S3154004A5A00000000000000000000000000000000061 -S3154004A5B00000000000000000000000000000000051 -S3154004A5C00000000000000000000000000000000041 -S3154004A5D00000000000000000000000000000000031 -S3154004A5E00000000000000000000000000000000021 -S3154004A5F00000000000000000000000000000000011 -S3154004A6000000000000000000000000000000000000 -S3154004A61000000000000000000000000000000000F0 -S3154004A62000000000000000000000000000000000E0 -S3154004A63000000000000000000000000000000000D0 -S3154004A64000000000000000000000000000000000C0 -S3154004A65000000000000000000000000000000000B0 -S3154004A66000000000000000000000000000000000A0 -S3154004A6700000000000000000000000000000000090 -S3154004A6800000000000000000000000000000000080 -S3154004A6900000000000000000000000000000000070 -S3154004A6A00000000000000000000000000000000060 -S3154004A6B00000000000000000000000000000000050 -S3154004A6C00000000000000000000000000000000040 -S3154004A6D00000000000000000000000000000000030 -S3154004A6E00000000000000000000000000000000020 -S3154004A6F00000000000000000000000000000000010 -S3154004A70000000000000000000000000000000000FF -S3154004A71000000000000000000000000000000000EF -S3154004A72000000000000000000000000000000000DF -S3154004A73000000000000000000000000000000000CF -S3154004A74000000000000000000000000000000000BF -S3154004A75000000000000000000000000000000000AF -S3154004A760000000000000000000000000000000009F -S3154004A770000000000000000000000000000000008F -S3154004A780000000000000000000000000000000007F -S3154004A790000000000000000000000000000000006F -S3154004A7A0000000000000000000000000000000005F -S3154004A7B0000000000000000000000000000000004F -S3154004A7C0000000000000000000000000000000003F -S3154004A7D0000000000000000000000000000000002F -S3154004A7E0000000000000000000000000000000001F -S3154004A7F0000000000000000000000000000000000F -S3154004A80000000000000000000000000000000000FE -S3154004A81000000000000000000000000000000000EE -S3154004A82000000000000000000000000000000000DE -S3154004A83000000000000000000000000000000000CE -S3154004A84000000000000000000000000000000000BE -S3154004A85000000000000000000000000000000000AE -S3154004A860000000000000000000000000000000009E -S3154004A870000000000000000000000000000000008E -S3154004A880000000000000000000000000000000007E -S3154004A890000000000000000000000000000000006E -S3154004A8A0000000000000000000000000000000005E -S3154004A8B0000000000000000000000000000000004E -S3154004A8C0000000000000000000000000000000003E -S3154004A8D0000000000000000000000000000000002E -S3154004A8E0000000000000000000000000000000001E -S3154004A8F0000000000000000000000000000000000E -S3154004A90000000000000000000000000000000000FD -S3154004A91000000000000000000000000000000000ED -S3154004A92000000000000000000000000000000000DD -S3154004A93000000000000000000000000000000000CD -S3154004A94000000000000000000000000000000000BD -S3154004A95000000000000000000000000000000000AD -S3154004A960000000000000000000000000000000009D -S3154004A970000000000000000000000000000000008D -S3154004A980000000000000000000000000000000007D -S3154004A990000000000000000000000000000000006D -S3154004A9A0000000000000000000000000000000005D -S3154004A9B0000000000000000000000000000000004D -S3154004A9C0000000000000000000000000000000003D -S3154004A9D0000000000000000000000000000000002D -S3154004A9E0000000000000000000000000000000001D -S3154004A9F0000000000000000000000000000000000D -S3154004AA0000000000000000000000000000000000FC -S3154004AA1000000000000000000000000000000000EC -S3154004AA2000000000000000000000000000000000DC -S3154004AA3000000000000000000000000000000000CC -S3154004AA4000000000000000000000000000000000BC -S3154004AA5000000000000000000000000000000000AC -S3154004AA60000000000000000000000000000000009C -S3154004AA70000000000000000000000000000000008C -S3154004AA80000000000000000000000000000000007C -S3154004AA90000000000000000000000000000000006C -S3154004AAA0000000000000000000000000000000005C -S3154004AAB0000000000000000000000000000000004C -S3154004AAC0000000000000000000000000000000003C -S3154004AAD0000000000000000000000000000000002C -S3154004AAE0000000000000000000000000000000001C -S3154004AAF0000000000000000000000000000000000C -S3154004AB0000000000000000000000000000000000FB -S3154004AB1000000000000000000000000000000000EB -S3154004AB2000000000000000000000000000000000DB -S3154004AB3000000000000000000000000000000000CB -S3154004AB4000000000000000000000000000000000BB -S3154004AB5000000000000000000000000000000000AB -S3154004AB60000000000000000000000000000000009B -S3154004AB70000000000000000000000000000000008B -S3154004AB80000000000000000000000000000000007B -S3154004AB90000000000000000000000000000000006B -S3154004ABA0000000000000000000000000000000005B -S3154004ABB0000000000000000000000000000000004B -S3154004ABC0000000000000000000000000000000003B -S3154004ABD0000000000000000000000000000000002B -S3154004ABE0000000000000000000000000000000001B -S3154004ABF0000000000000000000000000000000000B -S3154004AC0000000000000000000000000000000000FA -S3154004AC1000000000000000000000000000000000EA -S3154004AC2000000000000000000000000000000000DA -S3154004AC3000000000000000000000000000000000CA -S3154004AC4000000000000000000000000000000000BA -S3154004AC5000000000000000000000000000000000AA -S3154004AC60000000000000000000000000000000009A -S3154004AC70000000000000000000000000000000008A -S3154004AC80000000000000000000000000000000007A -S3154004AC90000000000000000000000000000000006A -S3154004ACA0000000000000000000000000000000005A -S3154004ACB0000000000000000000000000000000004A -S3154004ACC0000000000000000000000000000000003A -S3154004ACD0000000000000000000000000000000002A -S3154004ACE0000000000000000000000000000000001A -S3154004ACF0000000000000000000000000000000000A -S3154004AD0000000000000000000000000000000000F9 -S3154004AD1000000000000000000000000000000000E9 -S3154004AD2000000000000000000000000000000000D9 -S3154004AD3000000000000000000000000000000000C9 -S3154004AD4000000000000000000000000000000000B9 -S3154004AD5000000000000000000000000000000000A9 -S3154004AD600000000000000000000000000000000099 -S3154004AD700000000000000000000000000000000089 -S3154004AD800000000000000000000000000000000079 -S3154004AD900000000000000000000000000000000069 -S3154004ADA00000000000000000000000000000000059 -S3154004ADB00000000000000000000000000000000049 -S3154004ADC00000000000000000000000000000000039 -S3154004ADD00000000000000000000000000000000029 -S3154004ADE00000000000000000000000000000000019 -S3154004ADF00000000000000000000000000000000009 -S3154004AE0000000000000000000000000000000000F8 -S3154004AE1000000000000000000000000000000000E8 -S3154004AE2000000000000000000000000000000000D8 -S3154004AE3000000000000000000000000000000000C8 -S3154004AE4000000000000000000000000000000000B8 -S3154004AE5000000000000000000000000000000000A8 -S3154004AE600000000000000000000000000000000098 -S3154004AE700000000000000000000000000000000088 -S3154004AE800000000000000000000000000000000078 -S3154004AE900000000000000000000000000000000068 -S3154004AEA00000000000000000000000000000000058 -S3154004AEB00000000000000000000000000000000048 -S3154004AEC00000000000000000000000000000000038 -S3154004AED00000000000000000000000000000000028 -S3154004AEE00000000000000000000000000000000018 -S3154004AEF00000000000000000000000000000000008 -S3154004AF0000000000000000000000000000000000F7 -S3154004AF1000000000000000000000000000000000E7 -S3154004AF2000000000000000000000000000000000D7 -S3154004AF3000000000000000000000000000000000C7 -S3154004AF4000000000000000000000000000000000B7 -S3154004AF5000000000000000000000000000000000A7 -S3154004AF600000000000000000000000000000000097 -S3154004AF700000000000000000000000000000000087 -S3154004AF800000000000000000000000000000000077 -S3154004AF900000000000000000000000000000000067 -S3154004AFA00000000000000000000000000000000057 -S3154004AFB00000000000000000000000000000000047 -S3154004AFC00000000000000000000000000000000037 -S3154004AFD00000000000000000000000000000000027 -S3154004AFE00000000000000000000000000000000017 -S3154004AFF00000000000000000000000000000000007 -S3154004B00000000000000000000000000000000000F6 -S3154004B01000000000000000000000000000000000E6 -S3154004B02000000000000000000000000000000000D6 -S3154004B03000000000000000000000000000000000C6 -S3154004B04000000000000000000000000000000000B6 -S3154004B05000000000000000000000000000000000A6 -S3154004B0600000000000000000000000000000000096 -S3154004B0700000000000000000000000000000000086 -S3154004B0800000000000000000000000000000000076 -S3154004B0900000000000000000000000000000000066 -S3154004B0A00000000000000000000000000000000056 -S3154004B0B00000000000000000000000000000000046 -S3154004B0C00000000000000000000000000000000036 -S3154004B0D00000000000000000000000000000000026 -S3154004B0E00000000000000000000000000000000016 -S3154004B0F00000000000000000000000000000000006 -S3154004B10000000000000000000000000000000000F5 -S3154004B11000000000000000000000000000000000E5 -S3154004B12000000000000000000000000000000000D5 -S3154004B13000000000000000000000000000000000C5 -S3154004B14000000000000000000000000000000000B5 -S3154004B15000000000000000000000000000000000A5 -S3154004B1600000000000000000000000000000000095 -S3154004B1700000000000000000000000000000000085 -S3154004B1800000000000000000000000000000000075 -S3154004B1900000000000000000000000000000000065 -S3154004B1A00000000000000000000000000000000055 -S3154004B1B00000000000000000000000000000000045 -S3154004B1C00000000000000000000000000000000035 -S3154004B1D00000000000000000000000000000000025 -S3154004B1E00000000000000000000000000000000015 -S3154004B1F00000000000000000000000000000000005 -S3154004B20000000000000000000000000000000000F4 -S3154004B21000000000000000000000000000000000E4 -S3154004B22000000000000000000000000000000000D4 -S3154004B23000000000000000000000000000000000C4 -S3154004B24000000000000000000000000000000000B4 -S3154004B25000000000000000000000000000000000A4 -S3154004B2600000000000000000000000000000000094 -S3154004B2700000000000000000000000000000000084 -S3154004B2800000000000000000000000000000000074 -S3154004B2900000000000000000000000000000000064 -S3154004B2A00000000000000000000000000000000054 -S3154004B2B00000000000000000000000000000000044 -S3154004B2C00000000000000000000000000000000034 -S3154004B2D00000000000000000000000000000000024 -S3154004B2E00000000000000000000000000000000014 -S3154004B2F00000000000000000000000000000000004 -S3154004B30000000000000000000000000000000000F3 -S3154004B31000000000000000000000000000000000E3 -S3154004B32000000000000000000000000000000000D3 -S3154004B33000000000000000000000000000000000C3 -S3154004B34000000000000000000000000000000000B3 -S3154004B35000000000000000000000000000000000A3 -S3154004B3600000000000000000000000000000000093 -S3154004B3700000000000000000000000000000000083 -S3154004B3800000000000000000000000000000000073 -S3154004B3900000000000000000000000000000000063 -S3154004B3A00000000000000000000000000000000053 -S3154004B3B00000000000000000000000000000000043 -S3154004B3C00000000000000000000000000000000033 -S3154004B3D00000000000000000000000000000000023 -S3154004B3E00000000000000000000000000000000013 -S3154004B3F00000000000000000000000000000000003 -S3154004B40000000000000000000000000000000000F2 -S3154004B41000000000000000000000000000000000E2 -S3154004B42000000000000000000000000000000000D2 -S3154004B43000000000000000000000000000000000C2 -S3154004B44000000000000000000000000000000000B2 -S3154004B45000000000000000000000000000000000A2 -S3154004B4600000000000000000000000000000000092 -S3154004B4700000000000000000000000000000000082 -S3154004B4800000000000000000000000000000000072 -S3154004B4900000000000000000000000000000000062 -S3154004B4A00000000000000000000000000000000052 -S3154004B4B00000000000000000000000000000000042 -S3154004B4C00000000000000000000000000000000032 -S3154004B4D00000000000000000000000000000000022 -S3154004B4E00000000000000000000000000000000012 -S3154004B4F00000000000000000000000000000000002 -S3154004B50000000000000000000000000000000000F1 -S3154004B51000000000000000000000000000000000E1 -S3154004B52000000000000000000000000000000000D1 -S3154004B53000000000000000000000000000000000C1 -S3154004B54000000000000000000000000000000000B1 -S3154004B55000000000000000000000000000000000A1 -S3154004B5600000000000000000000000000000000091 -S3154004B5700000000000000000000000000000000081 -S3154004B5800000000000000000000000000000000071 -S3154004B5900000000000000000000000000000000061 -S3154004B5A00000000000000000000000000000000051 -S3154004B5B00000000000000000000000000000000041 -S3154004B5C00000000000000000000000000000000031 -S3154004B5D00000000000000000000000000000000021 -S3154004B5E00000000000000000000000000000000011 -S3154004B5F00000000000000000000000000000000001 -S3154004B60000000000000000000000000000000000F0 -S3154004B61000000000000000000000000000000000E0 -S3154004B62000000000000000000000000000000000D0 -S3154004B63000000000000000000000000000000000C0 -S3154004B64000000000000000000000000000000000B0 -S3154004B65000000000000000000000000000000000A0 -S3154004B6600000000000000000000000000000000090 -S3154004B6700000000000000000000000000000000080 -S3154004B6800000000000000000000000000000000070 -S3154004B6900000000000000000000000000000000060 -S3154004B6A00000000000000000000000000000000050 -S3154004B6B00000000000000000000000000000000040 -S3154004B6C00000000000000000000000000000000030 -S3154004B6D00000000000000000000000000000000020 -S3154004B6E00000000000000000000000000000000010 -S3154004B6F00000000000000000000000000000000000 -S3154004B70000000000000000000000000000000000EF -S3154004B71000000000000000000000000000000000DF -S3154004B72000000000000000000000000000000000CF -S3154004B73000000000000000000000000000000000BF -S3154004B74000000000000000000000000000000000AF -S3154004B750000000000000000000000000000000009F -S3154004B760000000000000000000000000000000008F -S3154004B770000000000000000000000000000000007F -S3154004B780000000000000000000000000000000006F -S3154004B790000000000000000000000000000000005F -S3154004B7A0000000000000000000000000000000004F -S3154004B7B0000000000000000000000000000000003F -S3154004B7C0000000000000000000000000000000002F -S3154004B7D0000000000000000000000000000000001F -S3154004B7E0000000000000000000000000000000000F -S3154004B7F000000000000000000000000000000000FF -S3154004B80000000000000000000000000000000000EE -S3154004B81000000000000000000000000000000000DE -S3154004B82000000000000000000000000000000000CE -S3154004B83000000000000000000000000000000000BE -S3154004B84000000000000000000000000000000000AE -S3154004B850000000000000000000000000000000009E -S3154004B860000000000000000000000000000000008E -S3154004B870000000000000000000000000000000007E -S3154004B880000000000000000000000000000000006E -S3154004B890000000000000000000000000000000005E -S3154004B8A0000000000000000000000000000000004E -S3154004B8B0000000000000000000000000000000003E -S3154004B8C0000000000000000000000000000000002E -S3154004B8D0000000000000000000000000000000001E -S3154004B8E0000000000000000000000000000000000E -S3154004B8F000000000000000000000000000000000FE -S3154004B90000000000000000000000000000000000ED -S3154004B91000000000000000000000000000000000DD -S3154004B92000000000000000000000000000000000CD -S3154004B93000000000000000000000000000000000BD -S3154004B94000000000000000000000000000000000AD -S3154004B950000000000000000000000000000000009D -S3154004B960000000000000000000000000000000008D -S3154004B970000000000000000000000000000000007D -S3154004B980000000000000000000000000000000006D -S3154004B990000000000000000000000000000000005D -S3154004B9A0000000000000000000000000000000004D -S3154004B9B0000000000000000000000000000000003D -S3154004B9C0000000000000000000000000000000002D -S3154004B9D0000000000000000000000000000000001D -S3154004B9E0000000000000000000000000000000000D -S3154004B9F000000000000000000000000000000000FD -S3154004BA0000000000000000000000000000000000EC -S3154004BA1000000000000000000000000000000000DC -S3154004BA2000000000000000000000000000000000CC -S3154004BA3000000000000000000000000000000000BC -S3154004BA4000000000000000000000000000000000AC -S3154004BA50000000000000000000000000000000009C -S3154004BA60000000000000000000000000000000008C -S3154004BA70000000000000000000000000000000007C -S3154004BA80000000000000000000000000000000006C -S3154004BA90000000000000000000000000000000005C -S3154004BAA0000000000000000000000000000000004C -S3154004BAB0000000000000000000000000000000003C -S3154004BAC0000000000000000000000000000000002C -S3154004BAD0000000000000000000000000000000001C -S3154004BAE0000000000000000000000000000000000C -S3154004BAF000000000000000000000000000000000FC -S3154004BB0000000000000000000000000000000000EB -S3154004BB1000000000000000000000000000000000DB -S3154004BB2000000000000000000000000000000000CB -S3154004BB3000000000000000000000000000000000BB -S3154004BB4000000000000000000000000000000000AB -S3154004BB50000000000000000000000000000000009B -S3154004BB60000000000000000000000000000000008B -S3154004BB70000000000000000000000000000000007B -S3154004BB80000000000000000000000000000000006B -S3154004BB90000000000000000000000000000000005B -S3154004BBA0000000000000000000000000000000004B -S3154004BBB0000000000000000000000000000000003B -S3154004BBC0000000000000000000000000000000002B -S3154004BBD0000000000000000000000000000000001B -S3154004BBE0000000000000000000000000000000000B -S3154004BBF000000000000000000000000000000000FB -S3154004BC0000000000000000000000000000000000EA -S3154004BC1000000000000000000000000000000000DA -S3154004BC2000000000000000000000000000000000CA -S3154004BC3000000000000000000000000000000000BA -S3154004BC4000000000000000000000000000000000AA -S3154004BC50000000000000000000000000000000009A -S3154004BC60000000000000000000000000000000008A -S3154004BC70000000000000000000000000000000007A -S3154004BC80000000000000000000000000000000006A -S3154004BC90000000000000000000000000000000005A -S3154004BCA0000000000000000000000000000000004A -S3154004BCB0000000000000000000000000000000003A -S3154004BCC0000000000000000000000000000000002A -S3154004BCD0000000000000000000000000000000001A -S3154004BCE0000000000000000000000000000000000A -S3154004BCF000000000000000000000000000000000FA -S3154004BD0000000000000000000000000000000000E9 -S3154004BD1000000000000000000000000000000000D9 -S3154004BD2000000000000000000000000000000000C9 -S3154004BD3000000000000000000000000000000000B9 -S3154004BD4000000000000000000000000000000000A9 -S3154004BD500000000000000000000000000000000099 -S3154004BD600000000000000000000000000000000089 -S3154004BD700000000000000000000000000000000079 -S3154004BD800000000000000000000000000000000069 -S3154004BD900000000000000000000000000000000059 -S3154004BDA00000000000000000000000000000000049 -S3154004BDB00000000000000000000000000000000039 -S3154004BDC00000000000000000000000000000000029 -S3154004BDD00000000000000000000000000000000019 -S3154004BDE00000000000000000000000000000000009 -S3154004BDF000000000000000000000000000000000F9 -S3154004BE0000000000000000000000000000000000E8 -S3154004BE1000000000000000000000000000000000D8 -S3154004BE2000000000000000000000000000000000C8 -S3154004BE3000000000000000000000000000000000B8 -S3154004BE4000000000000000000000000000000000A8 -S3154004BE500000000000000000000000000000000098 -S3154004BE600000000000000000000000000000000088 -S3154004BE700000000000000000000000000000000078 -S3154004BE800000000000000000000000000000000068 -S3154004BE900000000000000000000000000000000058 -S3154004BEA00000000000000000000000000000000048 -S3154004BEB00000000000000000000000000000000038 -S3154004BEC00000000000000000000000000000000028 -S3154004BED00000000000000000000000000000000018 -S3154004BEE00000000000000000000000000000000008 -S3154004BEF000000000000000000000000000000000F8 -S3154004BF0000000000000000000000000000000000E7 -S3154004BF1000000000000000000000000000000000D7 -S3154004BF2000000000000000000000000000000000C7 -S3154004BF3000000000000000000000000000000000B7 -S3154004BF4000000000000000000000000000000000A7 -S3154004BF500000000000000000000000000000000097 -S3154004BF600000000000000000000000000000000087 -S3154004BF700000000000000000000000000000000077 -S3154004BF800000000000000000000000000000000067 -S3154004BF900000000000000000000000000000000057 -S3154004BFA00000000000000000000000000000000047 -S3154004BFB00000000000000000000000000000000037 -S3154004BFC00000000000000000000000000000000027 -S3154004BFD00000000000000000000000000000000017 -S3154004BFE00000000000000000000000000000000007 -S3154004BFF000000000000000000000000000000000F7 -S3154004C00000000000000000000000000000000000E6 -S3154004C01000000000000000000000000000000000D6 -S3154004C02000000000000000000000000000000000C6 -S3154004C03000000000000000000000000000000000B6 -S3154004C04000000000000000000000000000000000A6 -S3154004C0500000000000000000000000000000000096 -S3154004C0600000000000000000000000000000000086 -S3154004C0700000000000000000000000000000000076 -S3154004C0800000000000000000000000000000000066 -S3154004C0900000000000000000000000000000000056 -S3154004C0A00000000000000000000000000000000046 -S3154004C0B00000000000000000000000000000000036 -S3154004C0C00000000000000000000000000000000026 -S3154004C0D00000000000000000000000000000000016 -S3154004C0E00000000000000000000000000000000006 -S3154004C0F000000000000000000000000000000000F6 -S3154004C10000000000000000000000000000000000E5 -S3154004C11000000000000000000000000000000000D5 -S3154004C12000000000000000000000000000000000C5 -S3154004C13000000000000000000000000000000000B5 -S3154004C14000000000000000000000000000000000A5 -S3154004C1500000000000000000000000000000000095 -S3154004C1600000000000000000000000000000000085 -S3154004C1700000000000000000000000000000000075 -S3154004C1800000000000000000000000000000000065 -S3154004C1900000000000000000000000000000000055 -S3154004C1A00000000000000000000000000000000045 -S3154004C1B00000000000000000000000000000000035 -S3154004C1C00000000000000000000000000000000025 -S3154004C1D00000000000000000000000000000000015 -S3154004C1E00000000000000000000000000000000005 -S3154004C1F000000000000000000000000000000000F5 -S3154004C20000000000000000000000000000000000E4 -S3154004C21000000000000000000000000000000000D4 -S3154004C22000000000000000000000000000000000C4 -S3154004C23000000000000000000000000000000000B4 -S3154004C24000000000000000000000000000000000A4 -S3154004C2500000000000000000000000000000000094 -S3154004C2600000000000000000000000000000000084 -S3154004C2700000000000000000000000000000000074 -S3154004C2800000000000000000000000000000000064 -S3154004C2900000000000000000000000000000000054 -S3154004C2A00000000000000000000000000000000044 -S3154004C2B00000000000000000000000000000000034 -S3154004C2C00000000000000000000000000000000024 -S3154004C2D00000000000000000000000000000000014 -S3154004C2E00000000000000000000000000000000004 -S3154004C2F000000000000000000000000000000000F4 -S3154004C30000000000000000000000000000000000E3 -S3154004C31000000000000000000000000000000000D3 -S3154004C32000000000000000000000000000000000C3 -S3154004C33000000000000000000000000000000000B3 -S3154004C34000000000000000000000000000000000A3 -S3154004C3500000000000000000000000000000000093 -S3154004C3600000000000000000000000000000000083 -S3154004C3700000000000000000000000000000000073 -S3154004C3800000000000000000000000000000000063 -S3154004C3900000000000000000000000000000000053 -S3154004C3A00000000000000000000000000000000043 -S3154004C3B00000000000000000000000000000000033 -S3154004C3C00000000000000000000000000000000023 -S3154004C3D00000000000000000000000000000000013 -S3154004C3E00000000000000000000000000000000003 -S3154004C3F000000000000000000000000000000000F3 -S3154004C40000000000000000000000000000000000E2 -S3154004C41000000000000000000000000000000000D2 -S3154004C42000000000000000000000000000000000C2 -S3154004C43000000000000000000000000000000000B2 -S3154004C44000000000000000000000000000000000A2 -S3154004C4500000000000000000000000000000000092 -S3154004C4600000000000000000000000000000000082 -S3154004C4700000000000000000000000000000000072 -S3154004C4800000000000000000000000000000000062 -S3154004C4900000000000000000000000000000000052 -S3154004C4A00000000000000000000000000000000042 -S3154004C4B00000000000000000000000000000000032 -S3154004C4C00000000000000000000000000000000022 -S3154004C4D00000000000000000000000000000000012 -S3154004C4E00000000000000000000000000000000002 -S3154004C4F000000000000000000000000000000000F2 -S3154004C50000000000000000000000000000000000E1 -S3154004C51000000000000000000000000000000000D1 -S3154004C52000000000000000000000000000000000C1 -S3154004C53000000000000000000000000000000000B1 -S3154004C54000000000000000000000000000000000A1 -S3154004C5500000000000000000000000000000000091 -S3154004C5600000000000000000000000000000000081 -S3154004C5700000000000000000000000000000000071 -S3154004C5800000000000000000000000000000000061 -S3154004C5900000000000000000000000000000000051 -S3154004C5A00000000000000000000000000000000041 -S3154004C5B00000000000000000000000000000000031 -S3154004C5C00000000000000000000000000000000021 -S3154004C5D00000000000000000000000000000000011 -S3154004C5E00000000000000000000000000000000001 -S3154004C5F000000000000000000000000000000000F1 -S3154004C60000000000000000000000000000000000E0 -S3154004C61000000000000000000000000000000000D0 -S3154004C62000000000000000000000000000000000C0 -S3154004C63000000000000000000000000000000000B0 -S3154004C64000000000000000000000000000000000A0 -S3154004C6500000000000000000000000000000000090 -S3154004C6600000000000000000000000000000000080 -S3154004C6700000000000000000000000000000000070 -S3154004C6800000000000000000000000000000000060 -S3154004C6900000000000000000000000000000000050 -S3154004C6A00000000000000000000000000000000040 -S3154004C6B00000000000000000000000000000000030 -S3154004C6C00000000000000000000000000000000020 -S3154004C6D00000000000000000000000000000000010 -S3154004C6E00000000000000000000000000000000000 -S3154004C6F000000000000000000000000000000000F0 -S3154004C70000000000000000000000000000000000DF -S3154004C71000000000000000000000000000000000CF -S3154004C72000000000000000000000000000000000BF -S3154004C73000000000000000000000000000000000AF -S3154004C740000000000000000000000000000000009F -S3154004C750000000000000000000000000000000008F -S3154004C760000000000000000000000000000000007F -S3154004C770000000000000000000000000000000006F -S3154004C780000000000000000000000000000000005F -S3154004C790000000000000000000000000000000004F -S3154004C7A0000000000000000000000000000000003F -S3154004C7B0000000000000000000000000000000002F -S3154004C7C0000000000000000000000000000000001F -S3154004C7D0000000000000000000000000000000000F -S3154004C7E000000000000000000000000000000000FF -S3154004C7F000000000000000000000000000000000EF -S3154004C80000000000000000000000000000000000DE -S3154004C81000000000000000000000000000000000CE -S3154004C82000000000000000000000000000000000BE -S3154004C83000000000000000000000000000000000AE -S3154004C840000000000000000000000000000000009E -S3154004C850000000000000000000000000000000008E -S3154004C860000000000000000000000000000000007E -S3154004C870000000000000000000000000000000006E -S3154004C880000000000000000000000000000000005E -S3154004C890000000000000000000000000000000004E -S3154004C8A0000000000000000000000000000000003E -S3154004C8B0000000000000000000000000000000002E -S3154004C8C0000000000000000000000000000000001E -S3154004C8D0000000000000000000000000000000000E -S3154004C8E000000000000000000000000000000000FE -S3154004C8F000000000000000000000000000000000EE -S3154004C90000000000000000000000000000000000DD -S3154004C91000000000000000000000000000000000CD -S3154004C92000000000000000000000000000000000BD -S3154004C93000000000000000000000000000000000AD -S3154004C940000000000000000000000000000000009D -S3154004C950000000000000000000000000000000008D -S3154004C960000000000000000000000000000000007D -S3154004C970000000000000000000000000000000006D -S3154004C980000000000000000000000000000000005D -S3154004C990000000000000000000000000000000004D -S3154004C9A0000000000000000000000000000000003D -S3154004C9B0000000000000000000000000000000002D -S3154004C9C0000000000000000000000000000000001D -S3154004C9D0000000000000000000000000000000000D -S3154004C9E000000000000000000000000000000000FD -S3154004C9F000000000000000000000000000000000ED -S3154004CA0000000000000000000000000000000000DC -S3154004CA1000000000000000000000000000000000CC -S3154004CA2000000000000000000000000000000000BC -S3154004CA3000000000000000000000000000000000AC -S3154004CA40000000000000000000000000000000009C -S3154004CA50000000000000000000000000000000008C -S3154004CA60000000000000000000000000000000007C -S3154004CA70000000000000000000000000000000006C -S3154004CA80000000000000000000000000000000005C -S3154004CA90000000000000000000000000000000004C -S3154004CAA0000000000000000000000000000000003C -S3154004CAB0000000000000000000000000000000002C -S3154004CAC0000000000000000000000000000000001C -S3154004CAD0000000000000000000000000000000000C -S3154004CAE000000000000000000000000000000000FC -S3154004CAF000000000000000000000000000000000EC -S3154004CB0000000000000000000000000000000000DB -S3154004CB1000000000000000000000000000000000CB -S3154004CB2000000000000000000000000000000000BB -S3154004CB3000000000000000000000000000000000AB -S3154004CB40000000000000000000000000000000009B -S3154004CB50000000000000000000000000000000008B -S3154004CB60000000000000000000000000000000007B -S3154004CB70000000000000000000000000000000006B -S3154004CB80000000000000000000000000000000005B -S3154004CB90000000000000000000000000000000004B -S3154004CBA0000000000000000000000000000000003B -S3154004CBB0000000000000000000000000000000002B -S3154004CBC0000000000000000000000000000000001B -S3154004CBD0000000000000000000000000000000000B -S3154004CBE000000000000000000000000000000000FB -S3154004CBF000000000000000000000000000000000EB -S3154004CC0000000000000000000000000000000000DA -S3154004CC1000000000000000000000000000000000CA -S3154004CC2000000000000000000000000000000000BA -S3154004CC3000000000000000000000000000000000AA -S3154004CC40000000000000000000000000000000009A -S3154004CC50000000000000000000000000000000008A -S3154004CC60000000000000000000000000000000007A -S3154004CC70000000000000000000000000000000006A -S3154004CC80000000000000000000000000000000005A -S3154004CC90000000000000000000000000000000004A -S3154004CCA0000000000000000000000000000000003A -S3154004CCB0000000000000000000000000000000002A -S3154004CCC0000000000000000000000000000000001A -S3154004CCD0000000000000000000000000000000000A -S3154004CCE000000000000000000000000000000000FA -S3154004CCF000000000000000000000000000000000EA -S3154004CD0000000000000000000000000000000000D9 -S3154004CD1000000000000000000000000000000000C9 -S3154004CD2000000000000000000000000000000000B9 -S3154004CD3000000000000000000000000000000000A9 -S3154004CD400000000000000000000000000000000099 -S3154004CD500000000000000000000000000000000089 -S3154004CD600000000000000000000000000000000079 -S3154004CD700000000000000000000000000000000069 -S3154004CD800000000000000000000000000000000059 -S3154004CD900000000000000000000000000000000049 -S3154004CDA00000000000000000000000000000000039 -S3154004CDB00000000000000000000000000000000029 -S3154004CDC00000000000000000000000000000000019 -S3154004CDD00000000000000000000000000000000009 -S3154004CDE000000000000000000000000000000000F9 -S3154004CDF000000000000000000000000000000000E9 -S3154004CE0000000000000000000000000000000000D8 -S3154004CE1000000000000000000000000000000000C8 -S3154004CE2000000000000000000000000000000000B8 -S3154004CE3000000000000000000000000000000000A8 -S3154004CE400000000000000000000000000000000098 -S3154004CE500000000000000000000000000000000088 -S3154004CE600000000000000000000000000000000078 -S3154004CE700000000000000000000000000000000068 -S3154004CE800000000000000000000000000000000058 -S3154004CE900000000000000000000000000000000048 -S3154004CEA00000000000000000000000000000000038 -S3154004CEB00000000000000000000000000000000028 -S3154004CEC00000000000000000000000000000000018 -S3154004CED00000000000000000000000000000000008 -S3154004CEE000000000000000000000000000000000F8 -S3154004CEF000000000000000000000000000000000E8 -S3154004CF0000000000000000000000000000000000D7 -S3154004CF1000000000000000000000000000000000C7 -S3154004CF2000000000000000000000000000000000B7 -S3154004CF3000000000000000000000000000000000A7 -S3154004CF400000000000000000000000000000000097 -S3154004CF500000000000000000000000000000000087 -S3154004CF600000000000000000000000000000000077 -S3154004CF700000000000000000000000000000000067 -S3154004CF800000000000000000000000000000000057 -S3154004CF900000000000000000000000000000000047 -S3154004CFA00000000000000000000000000000000037 -S3154004CFB00000000000000000000000000000000027 -S3154004CFC00000000000000000000000000000000017 -S3154004CFD00000000000000000000000000000000007 -S3154004CFE000000000000000000000000000000000F7 -S3154004CFF000000000000000000000000000000000E7 -S3154004D00000000000000000000000000000000000D6 -S3154004D01000000000000000000000000000000000C6 -S3154004D02000000000000000000000000000000000B6 -S3154004D03000000000000000000000000000000000A6 -S3154004D0400000000000000000000000000000000096 -S3154004D0500000000000000000000000000000000086 -S3154004D0600000000000000000000000000000000076 -S3154004D0700000000000000000000000000000000066 -S3154004D0800000000000000000000000000000000056 -S3154004D0900000000000000000000000000000000046 -S3154004D0A00000000000000000000000000000000036 -S3154004D0B00000000000000000000000000000000026 -S3154004D0C00000000000000000000000000000000016 -S3154004D0D00000000000000000000000000000000006 -S3154004D0E000000000000000000000000000000000F6 -S3154004D0F000000000000000000000000000000000E6 -S3154004D10000000000000000000000000000000000D5 -S3154004D11000000000000000000000000000000000C5 -S3154004D12000000000000000000000000000000000B5 -S3154004D13000000000000000000000000000000000A5 -S3154004D1400000000000000000000000000000000095 -S3154004D1500000000000000000000000000000000085 -S3154004D1600000000000000000000000000000000075 -S3154004D1700000000000000000000000000000000065 -S3154004D1800000000000000000000000000000000055 -S3154004D1900000000000000000000000000000000045 -S3154004D1A00000000000000000000000000000000035 -S3154004D1B00000000000000000000000000000000025 -S3154004D1C00000000000000000000000000000000015 -S3154004D1D00000000000000000000000000000000005 -S3154004D1E000000000000000000000000000000000F5 -S3154004D1F000000000000000000000000000000000E5 -S3154004D20000000000000000000000000000000000D4 -S3154004D21000000000000000000000000000000000C4 -S3154004D22000000000000000000000000000000000B4 -S3154004D23000000000000000000000000000000000A4 -S3154004D2400000000000000000000000000000000094 -S3154004D2500000000000000000000000000000000084 -S3154004D2600000000000000000000000000000000074 -S3154004D2700000000000000000000000000000000064 -S3154004D2800000000000000000000000000000000054 -S3154004D2900000000000000000000000000000000044 -S3154004D2A00000000000000000000000000000000034 -S3154004D2B00000000000000000000000000000000024 -S3154004D2C00000000000000000000000000000000014 -S3154004D2D00000000000000000000000000000000004 -S3154004D2E000000000000000000000000000000000F4 -S3154004D2F000000000000000000000000000000000E4 -S3154004D30000000000000000000000000000000000D3 -S3154004D31000000000000000000000000000000000C3 -S3154004D32000000000000000000000000000000000B3 -S3154004D33000000000000000000000000000000000A3 -S3154004D3400000000000000000000000000000000093 -S3154004D3500000000000000000000000000000000083 -S3154004D3600000000000000000000000000000000073 -S3154004D3700000000000000000000000000000000063 -S3154004D3800000000000000000000000000000000053 -S3154004D3900000000000000000000000000000000043 -S3154004D3A00000000000000000000000000000000033 -S3154004D3B00000000000000000000000000000000023 -S3154004D3C00000000000000000000000000000000013 -S3154004D3D00000000000000000000000000000000003 -S3154004D3E000000000000000000000000000000000F3 -S3154004D3F000000000000000000000000000000000E3 -S3154004D40000000000000000000000000000000000D2 -S3154004D41000000000000000000000000000000000C2 -S3154004D42000000000000000000000000000000000B2 -S3154004D43000000000000000000000000000000000A2 -S3154004D4400000000000000000000000000000000092 -S3154004D4500000000000000000000000000000000082 -S3154004D4600000000000000000000000000000000072 -S3154004D4700000000000000000000000000000000062 -S3154004D4800000000000000000000000000000000052 -S3154004D4900000000000000000000000000000000042 -S3154004D4A00000000000000000000000000000000032 -S3154004D4B00000000000000000000000000000000022 -S3154004D4C00000000000000000000000000000000012 -S3154004D4D00000000000000000000000000000000002 -S3154004D4E000000000000000000000000000000000F2 -S3154004D4F000000000000000000000000000000000E2 -S3154004D50000000000000000000000000000000000D1 -S3154004D51000000000000000000000000000000000C1 -S3154004D52000000000000000000000000000000000B1 -S3154004D53000000000000000000000000000000000A1 -S3154004D5400000000000000000000000000000000091 -S3154004D5500000000000000000000000000000000081 -S3154004D5600000000000000000000000000000000071 -S3154004D5700000000000000000000000000000000061 -S3154004D5800000000000000000000000000000000051 -S3154004D5900000000000000000000000000000000041 -S3154004D5A00000000000000000000000000000000031 -S3154004D5B00000000000000000000000000000000021 -S3154004D5C00000000000000000000000000000000011 -S3154004D5D00000000000000000000000000000000001 -S3154004D5E000000000000000000000000000000000F1 -S3154004D5F000000000000000000000000000000000E1 -S3154004D60000000000000000000000000000000000D0 -S3154004D61000000000000000000000000000000000C0 -S3154004D62000000000000000000000000000000000B0 -S3154004D63000000000000000000000000000000000A0 -S3154004D6400000000000000000000000000000000090 -S3154004D6500000000000000000000000000000000080 -S3154004D6600000000000000000000000000000000070 -S3154004D6700000000000000000000000000000000060 -S3154004D6800000000000000000000000000000000050 -S3154004D6900000000000000000000000000000000040 -S3154004D6A00000000000000000000000000000000030 -S3154004D6B00000000000000000000000000000000020 -S3154004D6C00000000000000000000000000000000010 -S3154004D6D00000000000000000000000000000000000 -S3154004D6E000000000000000000000000000000000F0 -S3154004D6F000000000000000000000000000000000E0 -S3154004D70000000000000000000000000000000000CF -S3154004D71000000000000000000000000000000000BF -S3154004D72000000000000000000000000000000000AF -S3154004D730000000000000000000000000000000009F -S3154004D740000000000000000000000000000000008F -S3154004D750000000000000000000000000000000007F -S3154004D760000000000000000000000000000000006F -S3154004D770000000000000000000000000000000005F -S3154004D780000000000000000000000000000000004F -S3154004D790000000000000000000000000000000003F -S3154004D7A0000000000000000000000000000000002F -S3154004D7B0000000000000000000000000000000001F -S3154004D7C0000000000000000000000000000000000F -S3154004D7D000000000000000000000000000000000FF -S3154004D7E000000000000000000000000000000000EF -S3154004D7F000000000000000000000000000000000DF -S3154004D80000000000000000000000000000000000CE -S3154004D81000000000000000000000000000000000BE -S3154004D82000000000000000000000000000000000AE -S3154004D830000000000000000000000000000000009E -S3154004D840000000000000000000000000000000008E -S3154004D850000000000000000000000000000000007E -S3154004D860000000000000000000000000000000006E -S3154004D870000000000000000000000000000000005E -S3154004D880000000000000000000000000000000004E -S3154004D890000000000000000000000000000000003E -S3154004D8A0000000000000000000000000000000002E -S3154004D8B0000000000000000000000000000000001E -S3154004D8C0000000000000000000000000000000000E -S3154004D8D000000000000000000000000000000000FE -S3154004D8E000000000000000000000000000000000EE -S3154004D8F000000000000000000000000000000000DE -S3154004D90000000000000000000000000000000000CD -S3154004D91000000000000000000000000000000000BD -S3154004D92000000000000000000000000000000000AD -S3154004D930000000000000000000000000000000009D -S3154004D940000000000000000000000000000000008D -S3154004D950000000000000000000000000000000007D -S3154004D960000000000000000000000000000000006D -S3154004D970000000000000000000000000000000005D -S3154004D980000000000000000000000000000000004D -S3154004D990000000000000000000000000000000003D -S3154004D9A0000000000000000000000000000000002D -S3154004D9B0000000000000000000000000000000001D -S3154004D9C0000000000000000000000000000000000D -S3154004D9D000000000000000000000000000000000FD -S3154004D9E000000000000000000000000000000000ED -S3154004D9F000000000000000000000000000000000DD -S3154004DA0000000000000000000000000000000000CC -S3154004DA1000000000000000000000000000000000BC -S3154004DA2000000000000000000000000000000000AC -S3154004DA30000000000000000000000000000000009C -S3154004DA40000000000000000000000000000000008C -S3154004DA50000000000000000000000000000000007C -S3154004DA60000000000000000000000000000000006C -S3154004DA70000000000000000000000000000000005C -S3154004DA80000000000000000000000000000000004C -S3154004DA90000000000000000000000000000000003C -S3154004DAA0000000000000000000000000000000002C -S3154004DAB0000000000000000000000000000000001C -S3154004DAC0000000000000000000000000000000000C -S3154004DAD000000000000000000000000000000000FC -S3154004DAE000000000000000000000000000000000EC -S3154004DAF000000000000000000000000000000000DC -S3154004DB0000000000000000000000000000000000CB -S3154004DB1000000000000000000000000000000000BB -S3154004DB2000000000000000000000000000000000AB -S3154004DB30000000000000000000000000000000009B -S3154004DB40000000000000000000000000000000008B -S3154004DB50000000000000000000000000000000007B -S3154004DB60000000000000000000000000000000006B -S3154004DB70000000000000000000000000000000005B -S3154004DB80000000000000000000000000000000004B -S3154004DB90000000000000000000000000000000003B -S3154004DBA0000000000000000000000000000000002B -S3154004DBB0000000000000000000000000000000001B -S3154004DBC0000000000000000000000000000000000B -S3154004DBD000000000000000000000000000000000FB -S3154004DBE000000000000000000000000000000000EB -S3154004DBF000000000000000000000000000000000DB -S3154004DC0000000000000000000000000000000000CA -S3154004DC1000000000000000000000000000000000BA -S3154004DC2000000000000000000000000000000000AA -S3154004DC30000000000000000000000000000000009A -S3154004DC40000000000000000000000000000000008A -S3154004DC50000000000000000000000000000000007A -S3154004DC60000000000000000000000000000000006A -S3154004DC70000000000000000000000000000000005A -S3154004DC80000000000000000000000000000000004A -S3154004DC90000000000000000000000000000000003A -S3154004DCA0000000000000000000000000000000002A -S3154004DCB0000000000000000000000000000000001A -S3154004DCC0000000000000000000000000000000000A -S3154004DCD000000000000000000000000000000000FA -S3154004DCE000000000000000000000000000000000EA -S3154004DCF000000000000000000000000000000000DA -S3154004DD0000000000000000000000000000000000C9 -S3154004DD1000000000000000000000000000000000B9 -S3154004DD2000000000000000000000000000000000A9 -S3154004DD300000000000000000000000000000000099 -S3154004DD400000000000000000000000000000000089 -S3154004DD500000000000000000000000000000000079 -S3154004DD600000000000000000000000000000000069 -S3154004DD700000000000000000000000000000000059 -S3154004DD800000000000000000000000000000000049 -S3154004DD900000000000000000000000000000000039 -S3154004DDA00000000000000000000000000000000029 -S3154004DDB00000000000000000000000000000000019 -S3154004DDC00000000000000000000000000000000009 -S3154004DDD000000000000000000000000000000000F9 -S3154004DDE000000000000000000000000000000000E9 -S3154004DDF000000000000000000000000000000000D9 -S3154004DE0000000000000000000000000000000000C8 -S3154004DE1000000000000000000000000000000000B8 -S3154004DE2000000000000000000000000000000000A8 -S3154004DE300000000000000000000000000000000098 -S3154004DE400000000000000000000000000000000088 -S3154004DE500000000000000000000000000000000078 -S3154004DE600000000000000000000000000000000068 -S3154004DE700000000000000000000000000000000058 -S3154004DE800000000000000000000000000000000048 -S3154004DE900000000000000000000000000000000038 -S3154004DEA00000000000000000000000000000000028 -S3154004DEB00000000000000000000000000000000018 -S3154004DEC00000000000000000000000000000000008 -S3154004DED000000000000000000000000000000000F8 -S3154004DEE000000000000000000000000000000000E8 -S3154004DEF000000000000000000000000000000000D8 -S3154004DF0000000000000000000000000000000000C7 -S3154004DF1000000000000000000000000000000000B7 -S3154004DF2000000000000000000000000000000000A7 -S3154004DF300000000000000000000000000000000097 -S3154004DF400000000000000000000000000000000087 -S3154004DF500000000000000000000000000000000077 -S3154004DF600000000000000000000000000000000067 -S3154004DF700000000000000000000000000000000057 -S3154004DF800000000000000000000000000000000047 -S3154004DF900000000000000000000000000000000037 -S3154004DFA00000000000000000000000000000000027 -S3154004DFB00000000000000000000000000000000017 -S3154004DFC00000000000000000000000000000000007 -S3154004DFD000000000000000000000000000000000F7 -S3154004DFE000000000000000000000000000000000E7 -S3154004DFF000000000000000000000000000000000D7 -S3154004E00000000000000000000000000000000000C6 -S3154004E01000000000000000000000000000000000B6 -S3154004E02000000000000000000000000000000000A6 -S3154004E0300000000000000000000000000000000096 -S3154004E0400000000000000000000000000000000086 -S3154004E0500000000000000000000000000000000076 -S3154004E0600000000000000000000000000000000066 -S3154004E0700000000000000000000000000000000056 -S3154004E0800000000000000000000000000000000046 -S3154004E0900000000000000000000000000000000036 -S3154004E0A00000000000000000000000000000000026 -S3154004E0B00000000000000000000000000000000016 -S3154004E0C00000000000000000000000000000000006 -S3154004E0D000000000000000000000000000000000F6 -S3154004E0E000000000000000000000000000000000E6 -S3154004E0F000000000000000000000000000000000D6 -S3154004E10000000000000000000000000000000000C5 -S3154004E11000000000000000000000000000000000B5 -S3154004E12000000000000000000000000000000000A5 -S3154004E1300000000000000000000000000000000095 -S3154004E1400000000000000000000000000000000085 -S3154004E1500000000000000000000000000000000075 -S3154004E1600000000000000000000000000000000065 -S3154004E1700000000000000000000000000000000055 -S3154004E1800000000000000000000000000000000045 -S3154004E1900000000000000000000000000000000035 -S3154004E1A00000000000000000000000000000000025 -S3154004E1B00000000000000000000000000000000015 -S3154004E1C00000000000000000000000000000000005 -S3154004E1D000000000000000000000000000000000F5 -S3154004E1E000000000000000000000000000000000E5 -S3154004E1F000000000000000000000000000000000D5 -S3154004E20000000000000000000000000000000000C4 -S3154004E21000000000000000000000000000000000B4 -S3154004E22000000000000000000000000000000000A4 -S3154004E2300000000000000000000000000000000094 -S3154004E2400000000000000000000000000000000084 -S3154004E2500000000000000000000000000000000074 -S3154004E2600000000000000000000000000000000064 -S3154004E2700000000000000000000000000000000054 -S3154004E2800000000000000000000000000000000044 -S3154004E2900000000000000000000000000000000034 -S3154004E2A00000000000000000000000000000000024 -S3154004E2B00000000000000000000000000000000014 -S3154004E2C00000000000000000000000000000000004 -S3154004E2D000000000000000000000000000000000F4 -S3154004E2E000000000000000000000000000000000E4 -S3154004E2F000000000000000000000000000000000D4 -S3154004E30000000000000000000000000000000000C3 -S3154004E31000000000000000000000000000000000B3 -S3154004E32000000000000000000000000000000000A3 -S3154004E3300000000000000000000000000000000093 -S3154004E3400000000000000000000000000000000083 -S3154004E3500000000000000000000000000000000073 -S3154004E3600000000000000000000000000000000063 -S3154004E3700000000000000000000000000000000053 -S3154004E3800000000000000000000000000000000043 -S3154004E3900000000000000000000000000000000033 -S3154004E3A00000000000000000000000000000000023 -S3154004E3B00000000000000000000000000000000013 -S3154004E3C00000000000000000000000000000000003 -S3154004E3D000000000000000000000000000000000F3 -S3154004E3E000000000000000000000000000000000E3 -S3154004E3F000000000000000000000000000000000D3 -S3154004E40000000000000000000000000000000000C2 -S3154004E41000000000000000000000000000000000B2 -S3154004E42000000000000000000000000000000000A2 -S3154004E4300000000000000000000000000000000092 -S3154004E4400000000000000000000000000000000082 -S3154004E4500000000000000000000000000000000072 -S3154004E4600000000000000000000000000000000062 -S3154004E4700000000000000000000000000000000052 -S3154004E4800000000000000000000000000000000042 -S3154004E4900000000000000000000000000000000032 -S3154004E4A00000000000000000000000000000000022 -S3154004E4B00000000000000000000000000000000012 -S3154004E4C00000000000000000000000000000000002 -S3154004E4D000000000000000000000000000000000F2 -S3154004E4E000000000000000000000000000000000E2 -S3154004E4F000000000000000000000000000000000D2 -S3154004E50000000000000000000000000000000000C1 -S3154004E51000000000000000000000000000000000B1 -S3154004E52000000000000000000000000000000000A1 -S3154004E5300000000000000000000000000000000091 -S3154004E5400000000000000000000000000000000081 -S3154004E5500000000000000000000000000000000071 -S3154004E5600000000000000000000000000000000061 -S3154004E5700000000000000000000000000000000051 -S3154004E5800000000000000000000000000000000041 -S3154004E5900000000000000000000000000000000031 -S3154004E5A00000000000000000000000000000000021 -S3154004E5B00000000000000000000000000000000011 -S3154004E5C00000000000000000000000000000000001 -S3154004E5D000000000000000000000000000000000F1 -S3154004E5E000000000000000000000000000000000E1 -S3154004E5F000000000000000000000000000000000D1 -S3154004E60000000000000000000000000000000000C0 -S3154004E61000000000000000000000000000000000B0 -S3154004E62000000000000000000000000000000000A0 -S3154004E6300000000000000000000000000000000090 -S3154004E6400000000000000000000000000000000080 -S3154004E6500000000000000000000000000000000070 -S3154004E6600000000000000000000000000000000060 -S3154004E6700000000000000000000000000000000050 -S3154004E6800000000000000000000000000000000040 -S3154004E6900000000000000000000000000000000030 -S3154004E6A00000000000000000000000000000000020 -S3154004E6B00000000000000000000000000000000010 -S3154004E6C00000000000000000000000000000000000 -S3154004E6D000000000000000000000000000000000F0 -S3154004E6E000000000000000000000000000000000E0 -S3154004E6F000000000000000000000000000000000D0 -S3154004E70000000000000000000000000000000000BF -S3154004E71000000000000000000000000000000000AF -S3154004E720000000000000000000000000000000009F -S3154004E730000000000000000000000000000000008F -S3154004E740000000000000000000000000000000007F -S3154004E750000000000000000000000000000000006F -S3154004E760000000000000000000000000000000005F -S3154004E770000000000000000000000000000000004F -S3154004E780000000000000000000000000000000003F -S3154004E790000000000000000000000000000000002F -S3154004E7A0000000000000000000000000000000001F -S3154004E7B0000000000000000000000000000000000F -S3154004E7C000000000000000000000000000000000FF -S3154004E7D000000000000000000000000000000000EF -S3154004E7E000000000000000000000000000000000DF -S3154004E7F000000000000000000000000000000000CF -S3154004E80000000000000000000000000000000000BE -S3154004E81000000000000000000000000000000000AE -S3154004E820000000000000000000000000000000009E -S3154004E830000000000000000000000000000000008E -S3154004E840000000000000000000000000000000007E -S3154004E850000000000000000000000000000000006E -S3154004E860000000000000000000000000000000005E -S3154004E870000000000000000000000000000000004E -S3154004E880000000000000000000000000000000003E -S3154004E890000000000000000000000000000000002E -S3154004E8A0000000000000000000000000000000001E -S3154004E8B0000000000000000000000000000000000E -S3154004E8C000000000000000000000000000000000FE -S3154004E8D000000000000000000000000000000000EE -S3154004E8E000000000000000000000000000000000DE -S3154004E8F000000000000000000000000000000000CE -S3154004E90000000000000000000000000000000000BD -S3154004E91000000000000000000000000000000000AD -S3154004E920000000000000000000000000000000009D -S3154004E930000000000000000000000000000000008D -S3154004E940000000000000000000000000000000007D -S3154004E950000000000000000000000000000000006D -S3154004E960000000000000000000000000000000005D -S3154004E970000000000000000000000000000000004D -S3154004E980000000000000000000000000000000003D -S3154004E990000000000000000000000000000000002D -S3154004E9A0000000000000000000000000000000001D -S3154004E9B0000000000000000000000000000000000D -S3154004E9C000000000000000000000000000000000FD -S3154004E9D000000000000000000000000000000000ED -S3154004E9E000000000000000000000000000000000DD -S3154004E9F000000000000000000000000000000000CD -S3154004EA0000000000000000000000000000000000BC -S3154004EA1000000000000000000000000000000000AC -S3154004EA20000000000000000000000000000000009C -S3154004EA30000000000000000000000000000000008C -S3154004EA40000000000000000000000000000000007C -S3154004EA50000000000000000000000000000000006C -S3154004EA60000000000000000000000000000000005C -S3154004EA70000000000000000000000000000000004C -S3154004EA80000000000000000000000000000000003C -S3154004EA90000000000000000000000000000000002C -S3154004EAA0000000000000000000000000000000001C -S3154004EAB0000000000000000000000000000000000C -S3154004EAC000000000000000000000000000000000FC -S3154004EAD000000000000000000000000000000000EC -S3154004EAE000000000000000000000000000000000DC -S3154004EAF000000000000000000000000000000000CC -S3154004EB0000000000000000000000000000000000BB -S3154004EB1000000000000000000000000000000000AB -S3154004EB20000000000000000000000000000000009B -S3154004EB30000000000000000000000000000000008B -S3154004EB40000000000000000000000000000000007B -S3154004EB50000000000000000000000000000000006B -S3154004EB60000000000000000000000000000000005B -S3154004EB70000000000000000000000000000000004B -S3154004EB80000000000000000000000000000000003B -S3154004EB90000000000000000000000000000000002B -S3154004EBA0000000000000000000000000000000001B -S3154004EBB0000000000000000000000000000000000B -S3154004EBC000000000000000000000000000000000FB -S3154004EBD000000000000000000000000000000000EB -S3154004EBE000000000000000000000000000000000DB -S3154004EBF000000000000000000000000000000000CB -S3154004EC0000000000000000000000000000000000BA -S3154004EC1000000000000000000000000000000000AA -S3154004EC20000000000000000000000000000000009A -S3154004EC30000000000000000000000000000000008A -S3154004EC40000000000000000000000000000000007A -S3154004EC50000000000000000000000000000000006A -S3154004EC60000000000000000000000000000000005A -S3154004EC70000000000000000000000000000000004A -S3154004EC80000000000000000000000000000000003A -S3154004EC90000000000000000000000000000000002A -S3154004ECA0000000000000000000000000000000001A -S3154004ECB0000000000000000000000000000000000A -S3154004ECC000000000000000000000000000000000FA -S3154004ECD000000000000000000000000000000000EA -S3154004ECE000000000000000000000000000000000DA -S3154004ECF000000000000000000000000000000000CA -S3154004ED0000000000000000000000000000000000B9 -S3154004ED1000000000000000000000000000000000A9 -S3154004ED200000000000000000000000000000000099 -S3154004ED300000000000000000000000000000000089 -S3154004ED400000000000000000000000000000000079 -S3154004ED500000000000000000000000000000000069 -S3154004ED600000000000000000000000000000000059 -S3154004ED700000000000000000000000000000000049 -S3154004ED800000000000000000000000000000000039 -S3154004ED900000000000000000000000000000000029 -S3154004EDA00000000000000000000000000000000019 -S3154004EDB00000000000000000000000000000000009 -S3154004EDC000000000000000000000000000000000F9 -S3154004EDD000000000000000000000000000000000E9 -S3154004EDE000000000000000000000000000000000D9 -S3154004EDF000000000000000000000000000000000C9 -S3154004EE0000000000000000000000000000000000B8 -S3154004EE1000000000000000000000000000000000A8 -S3154004EE200000000000000000000000000000000098 -S3154004EE300000000000000000000000000000000088 -S3154004EE400000000000000000000000000000000078 -S3154004EE500000000000000000000000000000000068 -S3154004EE600000000000000000000000000000000058 -S3154004EE700000000000000000000000000000000048 -S3154004EE800000000000000000000000000000000038 -S3154004EE900000000000000000000000000000000028 -S3154004EEA00000000000000000000000000000000018 -S3154004EEB00000000000000000000000000000000008 -S3154004EEC000000000000000000000000000000000F8 -S3154004EED000000000000000000000000000000000E8 -S3154004EEE000000000000000000000000000000000D8 -S3154004EEF000000000000000000000000000000000C8 -S3154004EF0000000000000000000000000000000000B7 -S3154004EF1000000000000000000000000000000000A7 -S3154004EF200000000000000000000000000000000097 -S3154004EF300000000000000000000000000000000087 -S3154004EF400000000000000000000000000000000077 -S3154004EF500000000000000000000000000000000067 -S3154004EF600000000000000000000000000000000057 -S3154004EF700000000000000000000000000000000047 -S3154004EF800000000000000000000000000000000037 -S3154004EF900000000000000000000000000000000027 -S3154004EFA00000000000000000000000000000000017 -S3154004EFB00000000000000000000000000000000007 -S3154004EFC000000000000000000000000000000000F7 -S3154004EFD000000000000000000000000000000000E7 -S3154004EFE000000000000000000000000000000000D7 -S3154004EFF000000000000000000000000000000000C7 -S3154004F00000000000000000000000000000000000B6 -S3154004F01000000000000000000000000000000000A6 -S3154004F0200000000000000000000000000000000096 -S3154004F0300000000000000000000000000000000086 -S3154004F0400000000000000000000000000000000076 -S3154004F0500000000000000000000000000000000066 -S3154004F0600000000000000000000000000000000056 -S3154004F0700000000000000000000000000000000046 -S3154004F0800000000000000000000000000000000036 -S3154004F0900000000000000000000000000000000026 -S3154004F0A00000000000000000000000000000000016 -S3154004F0B00000000000000000000000000000000006 -S3154004F0C000000000000000000000000000000000F6 -S3154004F0D000000000000000000000000000000000E6 -S3154004F0E000000000000000000000000000000000D6 -S3154004F0F000000000000000000000000000000000C6 -S3154004F10000000000000000000000000000000000B5 -S3154004F11000000000000000000000000000000000A5 -S3154004F1200000000000000000000000000000000095 -S3154004F1300000000000000000000000000000000085 -S3154004F1400000000000000000000000000000000075 -S3154004F1500000000000000000000000000000000065 -S3154004F1600000000000000000000000000000000055 -S3154004F1700000000000000000000000000000000045 -S3154004F1800000000000000000000000000000000035 -S3154004F1900000000000000000000000000000000025 -S3154004F1A00000000000000000000000000000000015 -S3154004F1B00000000000000000000000000000000005 -S3154004F1C000000000000000000000000000000000F5 -S3154004F1D000000000000000000000000000000000E5 -S3154004F1E000000000000000000000000000000000D5 -S3154004F1F000000000000000000000000000000000C5 -S3154004F20000000000000000000000000000000000B4 -S3154004F21000000000000000000000000000000000A4 -S3154004F2200000000000000000000000000000000094 -S3154004F2300000000000000000000000000000000084 -S3154004F2400000000000000000000000000000000074 -S3154004F2500000000000000000000000000000000064 -S3154004F2600000000000000000000000000000000054 -S3154004F2700000000000000000000000000000000044 -S3154004F2800000000000000000000000000000000034 -S3154004F2900000000000000000000000000000000024 -S3154004F2A00000000000000000000000000000000014 -S3154004F2B00000000000000000000000000000000004 -S3154004F2C000000000000000000000000000000000F4 -S3154004F2D000000000000000000000000000000000E4 -S3154004F2E000000000000000000000000000000000D4 -S3154004F2F000000000000000000000000000000000C4 -S3154004F30000000000000000000000000000000000B3 -S3154004F31000000000000000000000000000000000A3 -S3154004F3200000000000000000000000000000000093 -S3154004F3300000000000000000000000000000000083 -S3154004F3400000000000000000000000000000000073 -S3154004F3500000000000000000000000000000000063 -S3154004F3600000000000000000000000000000000053 -S3154004F3700000000000000000000000000000000043 -S3154004F3800000000000000000000000000000000033 -S3154004F3900000000000000000000000000000000023 -S3154004F3A00000000000000000000000000000000013 -S3154004F3B00000000000000000000000000000000003 -S3154004F3C000000000000000000000000000000000F3 -S3154004F3D000000000000000000000000000000000E3 -S3154004F3E000000000000000000000000000000000D3 -S3154004F3F000000000000000000000000000000000C3 -S3154004F40000000000000000000000000000000000B2 -S3154004F41000000000000000000000000000000000A2 -S3154004F4200000000000000000000000000000000092 -S3154004F4300000000000000000000000000000000082 -S3154004F4400000000000000000000000000000000072 -S3154004F4500000000000000000000000000000000062 -S3154004F4600000000000000000000000000000000052 -S3154004F4700000000000000000000000000000000042 -S3154004F4800000000000000000000000000000000032 -S3154004F4900000000000000000000000000000000022 -S3154004F4A00000000000000000000000000000000012 -S3154004F4B00000000000000000000000000000000002 -S3154004F4C000000000000000000000000000000000F2 -S3154004F4D000000000000000000000000000000000E2 -S3154004F4E000000000000000000000000000000000D2 -S3154004F4F000000000000000000000000000000000C2 -S3154004F50000000000000000000000000000000000B1 -S3154004F51000000000000000000000000000000000A1 -S3154004F5200000000000000000000000000000000091 -S3154004F5300000000000000000000000000000000081 -S3154004F5400000000000000000000000000000000071 -S3154004F5500000000000000000000000000000000061 -S3154004F5600000000000000000000000000000000051 -S3154004F5700000000000000000000000000000000041 -S3154004F5800000000000000000000000000000000031 -S3154004F5900000000000000000000000000000000021 -S3154004F5A00000000000000000000000000000000011 -S3154004F5B00000000000000000000000000000000001 -S3154004F5C000000000000000000000000000000000F1 -S3154004F5D000000000000000000000000000000000E1 -S3154004F5E000000000000000000000000000000000D1 -S3154004F5F000000000000000000000000000000000C1 -S3154004F60000000000000000000000000000000000B0 -S3154004F61000000000000000000000000000000000A0 -S3154004F6200000000000000000000000000000000090 -S3154004F6300000000000000000000000000000000080 -S3154004F6400000000000000000000000000000000070 -S3154004F6500000000000000000000000000000000060 -S3154004F6600000000000000000000000000000000050 -S3154004F6700000000000000000000000000000000040 -S3154004F6800000000000000000000000000000000030 -S3154004F6900000000000000000000000000000000020 -S3154004F6A00000000000000000000000000000000010 -S3154004F6B00000000000000000000000000000000000 -S3154004F6C000000000000000000000000000000000F0 -S3154004F6D000000000000000000000000000000000E0 -S3154004F6E000000000000000000000000000000000D0 -S3154004F6F000000000000000000000000000000000C0 -S3154004F70000000000000000000000000000000000AF -S3154004F710000000000000000000000000000000009F -S3154004F720000000000000000000000000000000008F -S3154004F730000000000000000000000000000000007F -S3154004F740000000000000000000000000000000006F -S3154004F750000000000000000000000000000000005F -S3154004F760000000000000000000000000000000004F -S3154004F770000000000000000000000000000000003F -S3154004F780000000000000000000000000000000002F -S3154004F790000000000000000000000000000000001F -S3154004F7A0000000000000000000000000000000000F -S3154004F7B000000000000000000000000000000000FF -S3154004F7C000000000000000000000000000000000EF -S3154004F7D000000000000000000000000000000000DF -S3154004F7E000000000000000000000000000000000CF -S3154004F7F000000000000000000000000000000000BF -S3154004F80000000000000000000000000000000000AE -S3154004F810000000000000000000000000000000009E -S3154004F820000000000000000000000000000000008E -S3154004F830000000000000000000000000000000007E -S3154004F840000000000000000000000000000000006E -S3154004F850000000000000000000000000000000005E -S3154004F860000000000000000000000000000000004E -S3154004F870000000000000000000000000000000003E -S3154004F880000000000000000000000000000000002E -S3154004F890000000000000000000000000000000001E -S3154004F8A0000000000000000000000000000000000E -S3154004F8B000000000000000000000000000000000FE -S3154004F8C000000000000000000000000000000000EE -S3154004F8D000000000000000000000000000000000DE -S3154004F8E000000000000000000000000000000000CE -S3154004F8F000000000000000000000000000000000BE -S3154004F90000000000000000000000000000000000AD -S3154004F910000000000000000000000000000000009D -S3154004F920000000000000000000000000000000008D -S3154004F930000000000000000000000000000000007D -S3154004F940000000000000000000000000000000006D -S3154004F950000000000000000000000000000000005D -S3154004F960000000000000000000000000000000004D -S3154004F970000000000000000000000000000000003D -S3154004F980000000000000000000000000000000002D -S3154004F990000000000000000000000000000000001D -S3154004F9A0000000000000000000000000000000000D -S3154004F9B000000000000000000000000000000000FD -S3154004F9C000000000000000000000000000000000ED -S3154004F9D000000000000000000000000000000000DD -S3154004F9E000000000000000000000000000000000CD -S3154004F9F000000000000000000000000000000000BD -S3154004FA0000000000000000000000000000000000AC -S3154004FA10000000000000000000000000000000009C -S3154004FA20000000000000000000000000000000008C -S3154004FA30000000000000000000000000000000007C -S3154004FA40000000000000000000000000000000006C -S3154004FA50000000000000000000000000000000005C -S3154004FA60000000000000000000000000000000004C -S3154004FA70000000000000000000000000000000003C -S3154004FA80000000000000000000000000000000002C -S3154004FA90000000000000000000000000000000001C -S3154004FAA0000000000000000000000000000000000C -S3154004FAB000000000000000000000000000000000FC -S3154004FAC000000000000000000000000000000000EC -S3154004FAD000000000000000000000000000000000DC -S3154004FAE000000000000000000000000000000000CC -S3154004FAF000000000000000000000000000000000BC -S3154004FB0000000000000000000000000000000000AB -S3154004FB10000000000000000000000000000000009B -S3154004FB20000000000000000000000000000000008B -S3154004FB30000000000000000000000000000000007B -S3154004FB40000000000000000000000000000000006B -S3154004FB50000000000000000000000000000000005B -S3154004FB60000000000000000000000000000000004B -S3154004FB70000000000000000000000000000000003B -S3154004FB80000000000000000000000000000000002B -S3154004FB90000000000000000000000000000000001B -S3154004FBA0000000000000000000000000000000000B -S3154004FBB000000000000000000000000000000000FB -S3154004FBC000000000000000000000000000000000EB -S3154004FBD000000000000000000000000000000000DB -S3154004FBE000000000000000000000000000000000CB -S3154004FBF000000000000000000000000000000000BB -S3154004FC0000000000000000000000000000000000AA -S3154004FC10000000000000000000000000000000009A -S3154004FC20000000000000000000000000000000008A -S3154004FC30000000000000000000000000000000007A -S3154004FC40000000000000000000000000000000006A -S3154004FC50000000000000000000000000000000005A -S3154004FC60000000000000000000000000000000004A -S3154004FC70000000000000000000000000000000003A -S3154004FC80000000000000000000000000000000002A -S3154004FC90000000000000000000000000000000001A -S3154004FCA0000000000000000000000000000000000A -S3154004FCB000000000000000000000000000000000FA -S3154004FCC000000000000000000000000000000000EA -S3154004FCD000000000000000000000000000000000DA -S3154004FCE000000000000000000000000000000000CA -S3154004FCF000000000000000000000000000000000BA -S3154004FD0000000000000000000000000000000000A9 -S3154004FD100000000000000000000000000000000099 -S3154004FD200000000000000000000000000000000089 -S3154004FD300000000000000000000000000000000079 -S3154004FD400000000000000000000000000000000069 -S3154004FD500000000000000000000000000000000059 -S3154004FD600000000000000000000000000000000049 -S3154004FD700000000000000000000000000000000039 -S3154004FD800000000000000000000000000000000029 -S3154004FD900000000000000000000000000000000019 -S3154004FDA00000000000000000000000000000000009 -S3154004FDB000000000000000000000000000000000F9 -S3154004FDC000000000000000000000000000000000E9 -S3154004FDD000000000000000000000000000000000D9 -S3154004FDE000000000000000000000000000000000C9 -S3154004FDF000000000000000000000000000000000B9 -S3154004FE0000000000000000000000000000000000A8 -S3154004FE100000000000000000000000000000000098 -S3154004FE200000000000000000000000000000000088 -S3154004FE300000000000000000000000000000000078 -S3154004FE400000000000000000000000000000000068 -S3154004FE500000000000000000000000000000000058 -S3154004FE600000000000000000000000000000000048 -S3154004FE700000000000000000000000000000000038 -S3154004FE800000000000000000000000000000000028 -S3154004FE900000000000000000000000000000000018 -S3154004FEA00000000000000000000000000000000008 -S3154004FEB000000000000000000000000000000000F8 -S3154004FEC000000000000000000000000000000000E8 -S3154004FED000000000000000000000000000000000D8 -S3154004FEE000000000000000000000000000000000C8 -S3154004FEF000000000000000000000000000000000B8 -S3154004FF0000000000000000000000000000000000A7 -S3154004FF100000000000000000000000000000000097 -S3154004FF200000000000000000000000000000000087 -S3154004FF300000000000000000000000000000000077 -S3154004FF400000000000000000000000000000000067 -S3154004FF500000000000000000000000000000000057 -S3154004FF600000000000000000000000000000000047 -S3154004FF700000000000000000000000000000000037 -S3154004FF800000000000000000000000000000000027 -S3154004FF900000000000000000000000000000000017 -S3154004FFA00000000000000000000000000000000007 -S3154004FFB000000000000000000000000000000000F7 -S3154004FFC000000000000000000000000000000000E7 -S3154004FFD000000000000000000000000000000000D7 -S3154004FFE000000000000000000000000000000000C7 -S3154004FFF000000000000000000000000000000000B7 -S3154005000000000002000000030000000000000000A0 -S315400500100000000100000000FFFFFFFE0000000396 -S3154005002055555554FFFFFFFE0000000355555554E1 -S31540050030700FFFFE00000007100249240000000073 -S315400500400000000000000000000000020000000360 -S315400500500000000000000003FFFFFFFEFFFFFFFF5B -S3154005006000000002FFFFFFFD000000000000000049 -S31540050070000000010000000000000000FFFFFFFF38 -S315400500800000000000000001FFFFFFFFFFFFFFFF2C -S31540050090FFFFFFFF00000001FFFFFFFFFFFFFFFE21 -S315400500A00000000300000000FFFFFFFEFFFFFFFD0D -S315400500B000000000000000090000000700000001E4 -S315400500C0FFFFFFF700000002FFFFFFFCFFFFFFF801 -S315400500D000000002FFFFFFFCFFFFFFF8FFFFFFFCEC -S315400500E00000000200000008FFFFFFFCFFFFFFFEC7 -S315400500F0FFFFFFF8FFFFFFF800000001FFFFFFF8D5 -S31540050100FFFFFFF7000000000000000B00000002A3 -S31540050110000000050000002F000000020000001747 -S3154005012000003039000002A700000012FFFF076CEF -S315400501300000004DFFFFFCC600003039FFFFFD59AA -S31540050140FFFFFFEEFFFF076CFFFFFFB30000033A1B -S3154005015000000091FFFFE84100000000FFFFFD841D -S31540050160FFFED02F000000000000F6FA006E498120 -S315400501700000000000000000000000000000000034 -S31540050180FFFFF0000000000200000003000000062B -S3154005019000000002FFFFFFFDFFFFFFFA0000000021 -S315400501A0000000010000000000000000FFFFFFFF07 -S315400501B00000000000000001FFFFFFFFFFFFFFFFFB -S315400501C0FFFFFFFF00000001FFFFFFFFFFFFFFFEF0 -S315400501D000000003FFFFFFFAFFFFFFFEFFFFFFFDE5 -S315400501E000000006000000000000000000000009B5 -S315400501F000000000000000000000000000000000B4 -S31540050200000000000000000100000002000000039D -S315400502100000000000000000000000000000000093 -S31540050220FFFFFFFF00020000000000000000000085 -S3154005023040050228400502284005023040050230A7 -S315400502404005023840050238400502404005024057 -S315400502504005024840050248400502504005025007 -S3154005026040050258400502584005026040050260B7 -S315400502704005026840050268400502704005027067 -S315400502804005027840050278400502804005028017 -S3154005029040050288400502884005029040050290C7 -S315400502A04005029840050298400502A0400502A077 -S315400502B0400502A8400502A8400502B0400502B027 -S315400502C0400502B8400502B8400502C0400502C0D7 -S315400502D0400502C8400502C8400502D0400502D087 -S315400502E0400502D8400502D8400502E0400502E037 -S315400502F0400502E8400502E8400502F0400502F0E7 -S31540050300400502F8400502F8400503004005030094 -S315400503104005030840050308400503104005031042 -S3154005032040050318400503184005032040050320F2 -S3154005033040050328400503284005033040050330A2 -S315400503404005033840050338400503404005034052 -S315400503504005034840050348400503504005035002 -S3154005036040050358400503584005036040050360B2 -S315400503704005036840050368400503704005037062 -S315400503804005037840050378400503804005038012 -S3154005039040050388400503884005039040050390C2 -S315400503A04005039840050398400503A0400503A072 -S315400503B0400503A8400503A8400503B0400503B022 -S315400503C0400503B8400503B8400503C0400503C0D2 -S315400503D0400503C8400503C8400503D0400503D082 -S315400503E0400503D8400503D8400503E0400503E032 -S315400503F0400503E8400503E8400503F0400503F0E2 -S31540050400400503F8400503F840050400400504008F -S31540050410400504084005040840050410400504103D -S3154005042040050418400504184005042040050420ED -S31540050430400504284005042840050430400504309D -S31540050440400504384005043840050440400504404D -S3154005045040050448400504484005045040050450FD -S3154005046040050458400504584005046040050460AD -S31540050470400504684005046840050470400504705D -S31540050480400504784005047840050480400504800D -S3154005049040050488400504884005049040050490BD -S315400504A04005049840050498400504A0400504A06D -S315400504B0400504A8400504A8400504B0400504B01D -S315400504C0400504B8400504B8400504C0400504C0CD -S315400504D0400504C8400504C8400504D0400504D07D -S315400504E0400504D8400504D8400504E0400504E02D -S315400504F0400504E8400504E8400504F0400504F0DD -S31540050500400504F8400504F840050500400505008A -S315400505104005050840050508400505104005051038 -S3154005052040050518400505184005052040050520E8 -S315400505304005052840050528400505304005053098 -S315400505404005053840050538400505404005054048 -S3154005055040050548400505484005055040050550F8 -S3154005056040050558400505584005056040050560A8 -S315400505704005056840050568400505704005057058 -S315400505804005057840050578400505804005058008 -S3154005059040050588400505884005059040050590B8 -S315400505A04005059840050598400505A0400505A068 -S315400505B0400505A8400505A8400505B0400505B018 -S315400505C0400505B8400505B8400505C0400505C0C8 -S315400505D0400505C8400505C8400505D0400505D078 -S315400505E0400505D8400505D8400505E0400505E028 -S315400505F0400505E8400505E8400505F0400505F0D8 -S31540050600400505F8400505F8400506004005060085 -S315400506104005060840050608400506104005061033 -S3154005062040050618400506184005062040050620E3 -S3154005063000000000400506300000000000000000F4 -S31540050640000000000000000200000000000000005D -S31540050650000000000000000000000000000000004F -S31540050660000000000000000000000000000000003F -S31540050670000000000000000000000000000000002F -S31540050680000000000000000000000000000000001F -S31540050690000000000000000000000000000000000F -S315400506A0000000000000000000000000400509941D -S315400506B040050A6040050B2C0000000000000000C4 -S315400506C000000000000000000000000000000000DF -S315400506D00000000000000000000000004001D110AD -S315400506E000000000000000000000000000000000BF -S315400506F000000000000000000000000000000000AF -S31540050700000000000000000000000000000000009E -S31540050710000000000000000000000000000000008E -S31540050720000000000000000000000000000000007E -S31540050730000000000000000000000000000000006E -S31540050740000000000000000000000000000000005E -S315400507500000000000000001330EABCD1234E66DFB -S31540050760DEEC0005000B0000000000000000000064 -S31540050770000000000000000000000000000000002E -S31540050780000000000000000000000000000000001E -S31540050790000000000000000000000000000000000E -S315400507A000000000000000000000000000000000FE -S315400507B000000000000000000000000000000000EE -S315400507C000000000000000000000000000000000DE -S315400507D000000000000000000000000000000000CE -S315400507E000000000000000000000000000000000BE -S315400507F000000000000000000000000000000000AE -S31540050800000000000000000000000000000000009D -S31540050810000000000000000000000000000000008D -S31540050820000000000000000000000000000000007D -S31540050830000000000000000000000000000000006D -S31540050840000000000000000000000000000000005D -S31540050850000000000000000000000000000000004D -S31540050860000000000000000000000000000000003D -S31540050870000000000000000000000000000000002D -S31540050880000000000000000000000000000000001D -S31540050890000000000000000000000000000000000D -S315400508A000000000000000000000000000000000FD -S315400508B000000000000000000000000000000000ED -S315400508C000000000000000000000000000000000DD -S315400508D000000000000000000000000000000000CD -S315400508E000000000000000000000000000000000BD -S315400508F000000000000000000000000000000000AD -S31540050900000000000000000000000000000000009C -S31540050910000000000000000000000000000000008C -S31540050920000000000000000000000000000000007C -S31540050930000000000000000000000000000000006C -S31540050940000000000000000000000000000000005C -S31540050950000000000000000000000000000000004C -S31540050960000000000000000000000000000000003C -S31540050970000000000000000000000000000000002C -S31540050980000000000000000000000000000000001C -S31540050990000000000000000000000000000000000C -S315400509A000000000000000000000000000000000FC -S315400509B000000000000000000000000000000000EC -S315400509C000000000000000000000000000000000DC -S315400509D000000000000000000000000000000000CC -S315400509E000000000000000000000000000000000BC -S315400509F000000000000000000000000000000000AC -S31540050A00000000000000000000000000000000009B -S31540050A10000000000000000000000000000000008B -S31540050A20000000000000000000000000000000007B -S31540050A30000000000000000000000000000000006B -S31540050A40000000000000000000000000000000005B -S31540050A50000000000000000000000000000000004B -S31540050A60000000000000000000000000000000003B -S31540050A70000000000000000000000000000000002B -S31540050A80000000000000000000000000000000001B -S31540050A90000000000000000000000000000000000B -S31540050AA000000000000000000000000000000000FB -S31540050AB000000000000000000000000000000000EB -S31540050AC000000000000000000000000000000000DB -S31540050AD000000000000000000000000000000000CB -S31540050AE000000000000000000000000000000000BB -S31540050AF000000000000000000000000000000000AB -S31540050B00000000000000000000000000000000009A -S31540050B10000000000000000000000000000000008A -S31540050B20000000000000000000000000000000007A -S31540050B30000000000000000000000000000000006A -S31540050B40000000000000000000000000000000005A -S31540050B50000000000000000000000000000000004A -S31540050B60000000000000000000000000000000003A -S31540050B70000000000000000000000000000000002A -S31540050B80000000000000000000000000000000001A -S31540050B90000000000000000000000000000000000A -S31540050BA000000000000000000000000000000000FA -S31540050BB000000000000000000000000000000000EA -S31540050BC000000000000000000000000000000000DA -S31540050BD000000000000000000000000000000000CA -S31540050BE000000000000000000000000000000000BA -S31540050BF00000000000000000400506A800000000B7 -S31540050C000000000000000000000000000000000099 -S31540050C100000000000000000000000000000000089 -S31540050C200000000000000000000000000000000079 -S31540050C3000000000800001000000000800000007D9 -S31540050C40000000060000000300000000FFFF8AD0F8 -S30940050C5080000310C2 +S31540048C30000000008000010000000008000000075A +S31540048C40000000060000000300000000FFFF8AD079 +S30D40048C5080000310000000003F S70540000000BA diff --git a/designs/leon3-arrow-bemicro-sdk/testbench.vhd b/designs/leon3-arrow-bemicro-sdk/testbench.vhd index 9b683cca..f12b01c8 100644 --- a/designs/leon3-arrow-bemicro-sdk/testbench.vhd +++ b/designs/leon3-arrow-bemicro-sdk/testbench.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -114,6 +114,12 @@ architecture behav of testbench is signal txdt : std_logic_vector(7 downto 0) := (others => '0'); signal rxdt : std_logic_vector(7 downto 0) := (others => '0'); + -- EPCS + signal epcs_data : std_ulogic; + signal epcs_dclk : std_ulogic; + signal epcs_csn : std_logic; + signal epcs_asdi : std_logic; + begin -- clock and reset @@ -145,7 +151,9 @@ begin -- Reconfig SW1 and SW2 reconfig_sw, -- SD card interface - sd_dat0, sd_dat1, sd_dat2, sd_dat3, sd_cmd, sd_clk + sd_dat0, sd_dat1, sd_dat2, sd_dat3, sd_cmd, sd_clk, + -- EPCS + epcs_data, epcs_dclk, epcs_csn, epcs_asdi ); -- SD card signals @@ -154,9 +162,19 @@ begin port map (sck => sd_clk, di => sd_cmd, do => sd_dat0, csn => sd_dat3); sd_dat0 <= 'Z'; sd_cmd <= 'Z'; + -- EPCS + spi0: spi_flash + generic map ( + ftype => 4, debug => 0, fname => promfile, readcmd => CFG_SPIMCTRL_READCMD, + dummybyte => CFG_SPIMCTRL_DUMMYBYTE, dualoutput => CFG_SPIMCTRL_DUALOUTPUT, + memoffset => CFG_SPIMCTRL_OFFSET) + port map (sck => epcs_dclk, di => epcs_asdi, do => epcs_data, + csn => epcs_csn, sd_cmd_timeout => open, + sd_data_timeout => open); + -- On the BeMicro the temp_* signals are connected to a temperature sensor temp_sc <= 'H'; temp_sio <= 'H'; - + -- DDR memory ddr0 : mt46v16m16 generic map (index => -1, fname => sdramfile) diff --git a/designs/leon3-arrow-bemicro-sdk/tkconfig.h b/designs/leon3-arrow-bemicro-sdk/tkconfig.h index 51c338ce..b2ea73bb 100644 --- a/designs/leon3-arrow-bemicro-sdk/tkconfig.h +++ b/designs/leon3-arrow-bemicro-sdk/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -793,6 +815,10 @@ #ifndef CONFIG_SPIMCTRL_PWRUPCNT #define CONFIG_SPIMCTRL_PWRUPCNT 0 #endif + +#ifndef CONFIG_SPIMCTRL_OFFSET +#define CONFIG_SPIMCTRL_OFFSET 0 +#endif #ifndef CONFIG_AHBROM_ENABLE #define CONFIG_AHBROM_ENABLE 0 #endif diff --git a/designs/leon3-asic/Makefile b/designs/leon3-asic/Makefile index 34335c47..3ce4899f 100644 --- a/designs/leon3-asic/Makefile +++ b/designs/leon3-asic/Makefile @@ -19,9 +19,9 @@ DCSCRIPT=ut025crh.tcl TECHLIBS = nextreme virage atc18 artisan virage90 tsmc90 umc18 cust1 LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - openchip gleichmann gsi spansion tmtc ihp fmf cypress hynix -DIRSKIP = b1553 pcif leon2 leon2ft leon4 leon4b64 l2cache iommu coremp7 \ - usb ddr crypto ata satcan slink ascs pwm haps gr1553b ac97 + openchip gsi spansion tmtc ihp fmf cypress hynix +DIRSKIP = b1553 pcif leon2 leon2ft leon4 leon4v0 l2cache iommu \ + usb ddr crypto satcan slink ascs pwm gr1553b FILESKIP = diff --git a/designs/leon3-asic/ahbrom.vhd b/designs/leon3-asic/ahbrom.vhd index f94b8866..753697a1 100644 --- a/designs/leon3-asic/ahbrom.vhd +++ b/designs/leon3-asic/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-asic/bschain.vhd b/designs/leon3-asic/bschain.vhd index 9c8bc326..69118493 100644 --- a/designs/leon3-asic/bschain.vhd +++ b/designs/leon3-asic/bschain.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-asic/config.help b/designs/leon3-asic/config.help index e4c708b1..860479cc 100644 --- a/designs/leon3-asic/config.help +++ b/designs/leon3-asic/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -72,31 +76,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -162,6 +168,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -564,11 +598,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-asic/core.vhd b/designs/leon3-asic/core.vhd index 76f301d7..bb1a8ee7 100644 --- a/designs/leon3-asic/core.vhd +++ b/designs/leon3-asic/core.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -113,7 +113,8 @@ entity core is tck : in std_ulogic; tms : in std_ulogic; tdi : in std_ulogic; - tdo : out std_ulogic + tdo : out std_ulogic; + tdoen : out std_ulogic ); end; @@ -234,7 +235,7 @@ begin ramsn_core, ramoen_core, rwen_core, oen_core, writen_core, read_core, iosn_core, romsn_core, brdyn_core, bexcn_core, wdogn_core, gpioin_core, gpioout_core, lgpioen, prom32_core, promedac_core, spw_clksel_core, llspw_clk, spw_rxd_core, spw_rxs_core, spw_txd_core, spw_txs_core, spw_ten_core, - trst, tck, tms, tdi, tdo, + trst, tck, tms, tdi, tdo, tdoen, scanen, testen, testrst, testoen, chain_tck, chain_tdi, chain_tdo, bsshft, bscapt, bsupdi, bsupdo, bsdrive, bshighz); diff --git a/designs/leon3-asic/lconfig.tk b/designs/leon3-asic/lconfig.tk index 4e567e98..b6f88dda 100755 --- a/designs/leon3-asic/lconfig.tk +++ b/designs/leon3-asic/lconfig.tk @@ -750,7 +750,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -760,7 +761,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -904,8 +907,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -924,6 +929,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1013,9 +1022,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1069,10 +1079,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1118,14 +1129,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1198,13 +1211,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1244,22 +1265,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1316,21 +1605,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1377,36 +1666,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1414,48 +1704,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1511,27 +1802,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1572,16 +1863,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1590,34 +1882,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1674,92 +1967,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1767,18 +2060,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1819,52 +2112,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1872,162 +2166,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2083,45 +2378,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2161,18 +2458,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2180,55 +2478,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2285,24 +2588,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2342,17 +2645,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2360,37 +2664,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2446,16 +2751,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2503,9 +2815,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2527,21 +2837,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -3313,57 +3628,57 @@ proc menu16 {w title} { bool $w.config.f 16 0 "Enable Spacewire links " CONFIG_SPW_ENABLE int $w.config.f 16 1 "Number of links (1 - 3)" CONFIG_SPW_NUM - global tmpvar_26 - minimenu $w.config.f 16 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_26 CONFIG_SPW_AHBFIFO4 + global tmpvar_28 + minimenu $w.config.f 16 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_28 CONFIG_SPW_AHBFIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB RX/TX FIFO size (32-bit words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_26 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_27 - minimenu $w.config.f 16 3 "Receiver FIFO size (bytes) " tmpvar_27 CONFIG_SPW_RXFIFO16 + global tmpvar_29 + minimenu $w.config.f 16 3 "Receiver FIFO size (bytes) " tmpvar_29 CONFIG_SPW_RXFIFO16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Receiver FIFO size (bytes) \"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 16 4 "Enable RMAP protocol " CONFIG_SPW_RMAP - global tmpvar_28 - minimenu $w.config.f 16 5 "RMAP buffer size (bytes) " tmpvar_28 CONFIG_SPW_RMAPBUF2 + global tmpvar_30 + minimenu $w.config.f 16 5 "RMAP buffer size (bytes) " tmpvar_30 CONFIG_SPW_RMAPBUF2 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"RMAP buffer size (bytes) \"" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_28 -value "128" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_28 -value "192" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_28 -value "256" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_30 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_30 -value "192" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_30 -value "256" -command "update_active" menusplit $w $w.config.f.x5.x.menu 4 bool $w.config.f 16 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC bool $w.config.f 16 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL bool $w.config.f 16 8 "Spacewire FIFO protection " CONFIG_SPW_FT bool $w.config.f 16 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST int $w.config.f 16 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS - global tmpvar_29 - minimenu $w.config.f 16 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_29 CONFIG_SPW_GRSPW1 + global tmpvar_31 + minimenu $w.config.f 16 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_31 CONFIG_SPW_GRSPW1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Select GRSPW core (GRSPW1/GRSPW2) \"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" menusplit $w $w.config.f.x11.x.menu 2 int $w.config.f 16 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN bool $w.config.f 16 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME - global tmpvar_30 - minimenu $w.config.f 16 14 "Select receiver clock type " tmpvar_30 CONFIG_SPW_RX_SDR + global tmpvar_32 + minimenu $w.config.f 16 14 "Select receiver clock type " tmpvar_32 CONFIG_SPW_RX_SDR menu $w.config.f.x14.x.menu -tearoffcommand "menutitle \"Select receiver clock type \"" - $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_30 -value "SDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_30 -value "DDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_30 -value "Xor" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_30 -value "Aeroflex" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_32 -value "SDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_32 -value "DDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_32 -value "Xor" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_32 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x14.x.menu 4 - global tmpvar_31 - minimenu $w.config.f 16 15 "Select transmitter clock type " tmpvar_31 CONFIG_SPW_TX_SDR + global tmpvar_33 + minimenu $w.config.f 16 15 "Select transmitter clock type " tmpvar_33 CONFIG_SPW_TX_SDR menu $w.config.f.x15.x.menu -tearoffcommand "menutitle \"Select transmitter clock type \"" - $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_31 -value "SDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_31 -value "DDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_31 -value "Aeroflex" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_33 -value "SDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_33 -value "DDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_33 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x15.x.menu 3 @@ -3443,34 +3758,34 @@ proc update_define_menu16 {} { global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_NUM "$CONFIG_SPW_NUM" 1} - global tmpvar_26 + global tmpvar_28 global CONFIG_SPW_AHBFIFO4 - if {$tmpvar_26 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} global CONFIG_SPW_AHBFIFO8 - if {$tmpvar_26 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} global CONFIG_SPW_AHBFIFO16 - if {$tmpvar_26 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} global CONFIG_SPW_AHBFIFO32 - if {$tmpvar_26 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} - global tmpvar_27 + if {$tmpvar_28 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} + global tmpvar_29 global CONFIG_SPW_RXFIFO16 - if {$tmpvar_27 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} global CONFIG_SPW_RXFIFO32 - if {$tmpvar_27 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} global CONFIG_SPW_RXFIFO64 - if {$tmpvar_27 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP&15]} else {set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_SPW_RMAPBUF2 - if {$tmpvar_28 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} + if {$tmpvar_30 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} global CONFIG_SPW_RMAPBUF4 - if {$tmpvar_28 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} + if {$tmpvar_30 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} global CONFIG_SPW_RMAPBUF6 - if {$tmpvar_28 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} + if {$tmpvar_30 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} global CONFIG_SPW_RMAPBUF8 - if {$tmpvar_28 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} + if {$tmpvar_30 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC&15]} else {set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC|16]} @@ -3485,32 +3800,32 @@ proc update_define_menu16 {} { set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST&15]} else {set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST|16]} global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_PORTS "$CONFIG_SPW_PORTS" 1} - global tmpvar_29 + global tmpvar_31 global CONFIG_SPW_GRSPW1 - if {$tmpvar_29 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} global CONFIG_SPW_GRSPW2 - if {$tmpvar_29 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} global CONFIG_SPW_DMACHAN if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {validate_int CONFIG_SPW_DMACHAN "$CONFIG_SPW_DMACHAN" 1} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME&15]} else {set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME|16]} - global tmpvar_30 + global tmpvar_32 global CONFIG_SPW_RX_SDR - if {$tmpvar_30 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} + if {$tmpvar_32 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} global CONFIG_SPW_RX_DDR - if {$tmpvar_30 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} + if {$tmpvar_32 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} global CONFIG_SPW_RX_XOR - if {$tmpvar_30 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} + if {$tmpvar_32 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} global CONFIG_SPW_RX_AFLEX - if {$tmpvar_30 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} - global tmpvar_31 + if {$tmpvar_32 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} + global tmpvar_33 global CONFIG_SPW_TX_SDR - if {$tmpvar_31 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} + if {$tmpvar_33 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} global CONFIG_SPW_TX_DDR - if {$tmpvar_31 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} + if {$tmpvar_33 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} global CONFIG_SPW_TX_AFLEX - if {$tmpvar_31 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} + if {$tmpvar_33 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} } @@ -3566,26 +3881,26 @@ proc menu17 {w title} { bool $w.config.f 17 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_32 - minimenu $w.config.f 17 1 "UART1 FIFO depth" tmpvar_32 CONFIG_UA1_FIFO1 + global tmpvar_34 + minimenu $w.config.f 17 1 "UART1 FIFO depth" tmpvar_34 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_32 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_32 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_34 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_34 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_34 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_34 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_34 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_34 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 17 2 "Enable secondary UART " CONFIG_UART2_ENABLE - global tmpvar_33 - minimenu $w.config.f 17 3 "UART2 FIFO depth" tmpvar_33 CONFIG_UA2_FIFO1 + global tmpvar_35 + minimenu $w.config.f 17 3 "UART2 FIFO depth" tmpvar_35 CONFIG_UA2_FIFO1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_33 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_33 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_33 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_35 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_35 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_35 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_35 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_35 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_35 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 6 bool $w.config.f 17 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 17 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3676,32 +3991,32 @@ proc update_menu17 {} { proc update_define_menu17 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_32 + global tmpvar_34 global CONFIG_UA1_FIFO1 - if {$tmpvar_32 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_34 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_32 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_34 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_32 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_34 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_32 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_34 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_32 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_34 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_32 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global tmpvar_33 + if {$tmpvar_34 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + global tmpvar_35 global CONFIG_UA2_FIFO1 - if {$tmpvar_33 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} + if {$tmpvar_35 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} global CONFIG_UA2_FIFO2 - if {$tmpvar_33 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} + if {$tmpvar_35 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} global CONFIG_UA2_FIFO4 - if {$tmpvar_33 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} + if {$tmpvar_35 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} global CONFIG_UA2_FIFO8 - if {$tmpvar_33 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} + if {$tmpvar_35 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} global CONFIG_UA2_FIFO16 - if {$tmpvar_33 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} + if {$tmpvar_35 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} global CONFIG_UA2_FIFO32 - if {$tmpvar_33 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} + if {$tmpvar_35 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3871,7 +4186,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -3881,6 +4197,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -3906,6 +4224,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -3918,14 +4237,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -3938,27 +4262,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -3968,17 +4292,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -3990,12 +4314,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4005,10 +4329,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4019,7 +4343,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4031,26 +4355,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4058,27 +4384,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4112,17 +4442,17 @@ set CONFIG_AHBSTAT_ENABLE 0 set CONFIG_AHBSTAT_NFTSLV 1 set CONFIG_SPW_ENABLE 0 set CONFIG_SPW_NUM 1 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_SPW_AHBFIFO4 0 set CONFIG_SPW_AHBFIFO8 0 set CONFIG_SPW_AHBFIFO16 0 set CONFIG_SPW_AHBFIFO32 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_SPW_RXFIFO16 0 set CONFIG_SPW_RXFIFO32 0 set CONFIG_SPW_RXFIFO64 0 set CONFIG_SPW_RMAP 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_SPW_RMAPBUF2 0 set CONFIG_SPW_RMAPBUF4 0 set CONFIG_SPW_RMAPBUF6 0 @@ -4132,22 +4462,22 @@ set CONFIG_SPW_RXUNAL 0 set CONFIG_SPW_FT 0 set CONFIG_SPW_NETLIST 0 set CONFIG_SPW_PORTS 1 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_SPW_GRSPW1 0 set CONFIG_SPW_GRSPW2 0 set CONFIG_SPW_DMACHAN 1 set CONFIG_SPW_RTSAME 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_SPW_RX_SDR 0 set CONFIG_SPW_RX_DDR 0 set CONFIG_SPW_RX_XOR 0 set CONFIG_SPW_RX_AFLEX 0 -set tmpvar_31 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_SPW_TX_SDR 0 set CONFIG_SPW_TX_DDR 0 set CONFIG_SPW_TX_AFLEX 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_32 "(not set)" +set tmpvar_34 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4155,7 +4485,7 @@ set CONFIG_UA1_FIFO8 0 set CONFIG_UA1_FIFO16 0 set CONFIG_UA1_FIFO32 0 set CONFIG_UART2_ENABLE 0 -set tmpvar_33 "(not set)" +set tmpvar_35 "(not set)" set CONFIG_UA2_FIFO1 0 set CONFIG_UA2_FIFO2 0 set CONFIG_UA2_FIFO4 0 @@ -4232,7 +4562,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4242,6 +4573,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4282,6 +4615,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4294,9 +4628,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4310,239 +4645,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4616,25 +5101,25 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_SPW_ENABLE $CONFIG_SPW_ENABLE [list $notmod] 2 global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_NUM $CONFIG_SPW_NUM $notmod } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } - if { $tmpvar_26 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} - global tmpvar_27 + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } + if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} + global tmpvar_29 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAP $CONFIG_SPW_RMAP [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then { - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } - if { $tmpvar_28 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } - if { $tmpvar_28 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } - if { $tmpvar_28 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } + if { $tmpvar_30 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } + if { $tmpvar_30 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } + if { $tmpvar_30 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAPCRC $CONFIG_SPW_RMAPCRC [list $notmod] 2 } global CONFIG_SPW_RXUNAL @@ -4645,47 +5130,47 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_NETLIST $CONFIG_SPW_NETLIST [list $notmod] 2 } global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_PORTS $CONFIG_SPW_PORTS $notmod } - global tmpvar_29 + global tmpvar_31 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} global CONFIG_SPW_DMACHAN global CONFIG_SPW_GRSPW2 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_int $cfg $autocfg CONFIG_SPW_DMACHAN $CONFIG_SPW_DMACHAN $notmod } global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RTSAME $CONFIG_SPW_RTSAME [list $notmod] 2 } - global tmpvar_30 + global tmpvar_32 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_30 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } - if { $tmpvar_30 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } - if { $tmpvar_30 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } - if { $tmpvar_30 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} - global tmpvar_31 + if { $tmpvar_32 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } + if { $tmpvar_32 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } + if { $tmpvar_32 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } + if { $tmpvar_32 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} + global tmpvar_33 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_31 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } - if { $tmpvar_31 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } - if { $tmpvar_31 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} + if { $tmpvar_33 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } + if { $tmpvar_33 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } + if { $tmpvar_33 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_32 + global tmpvar_34 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_32 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_32 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_34 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_34 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_34 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_34 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_34 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_34 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_UART2_ENABLE write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2 - global tmpvar_33 + global tmpvar_35 if {($CONFIG_UART2_ENABLE == 1)} then { - if { $tmpvar_33 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_33 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_33 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_35 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_35 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_35 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_35 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_35 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_35 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4758,7 +5243,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4768,6 +5254,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4786,8 +5274,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -4870,11 +5363,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -4895,6 +5390,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_SPW_AHBFIFO4; set CONFIG_SPW_AHBFIFO4 0 global CONFIG_SPW_AHBFIFO8; set CONFIG_SPW_AHBFIFO8 0 global CONFIG_SPW_AHBFIFO16; set CONFIG_SPW_AHBFIFO16 0 @@ -5003,8 +5502,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5023,6 +5524,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5063,350 +5568,376 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "16" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "16" global CONFIG_SPW_AHBFIFO4 - if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_28 "4" } global CONFIG_SPW_AHBFIFO8 - if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_28 "8" } global CONFIG_SPW_AHBFIFO16 - if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_26 "16" } + if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_28 "16" } global CONFIG_SPW_AHBFIFO32 - if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_26 "32" } - global tmpvar_27 - set tmpvar_27 "16" + if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_28 "32" } + global tmpvar_29 + set tmpvar_29 "16" global CONFIG_SPW_RXFIFO16 - if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_29 "16" } global CONFIG_SPW_RXFIFO32 - if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_29 "32" } global CONFIG_SPW_RXFIFO64 - if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "64" + if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "64" global CONFIG_SPW_RMAPBUF2 - if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_28 "64" } + if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_30 "64" } global CONFIG_SPW_RMAPBUF4 - if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_28 "128" } + if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_30 "128" } global CONFIG_SPW_RMAPBUF6 - if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_28 "192" } + if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_30 "192" } global CONFIG_SPW_RMAPBUF8 - if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_28 "256" } - global tmpvar_29 - set tmpvar_29 "2" + if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_30 "256" } + global tmpvar_31 + set tmpvar_31 "2" global CONFIG_SPW_GRSPW1 - if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_31 "1" } global CONFIG_SPW_GRSPW2 - if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_29 "2" } - global tmpvar_30 - set tmpvar_30 "DDR" + if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_31 "2" } + global tmpvar_32 + set tmpvar_32 "DDR" global CONFIG_SPW_RX_SDR - if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_30 "SDR" } + if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_32 "SDR" } global CONFIG_SPW_RX_DDR - if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_30 "DDR" } + if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_32 "DDR" } global CONFIG_SPW_RX_XOR - if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_30 "Xor" } + if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_32 "Xor" } global CONFIG_SPW_RX_AFLEX - if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_30 "Aeroflex" } - global tmpvar_31 - set tmpvar_31 "SDR" + if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_32 "Aeroflex" } + global tmpvar_33 + set tmpvar_33 "SDR" global CONFIG_SPW_TX_SDR - if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_31 "SDR" } + if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_33 "SDR" } global CONFIG_SPW_TX_DDR - if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_31 "DDR" } + if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_33 "DDR" } global CONFIG_SPW_TX_AFLEX - if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_31 "Aeroflex" } - global tmpvar_32 - set tmpvar_32 "1" + if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_33 "Aeroflex" } + global tmpvar_34 + set tmpvar_34 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_32 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_34 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_32 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_34 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_32 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_34 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_32 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_34 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_32 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_34 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_32 "32" } - global tmpvar_33 - set tmpvar_33 "1" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_34 "32" } + global tmpvar_35 + set tmpvar_35 "1" global CONFIG_UA2_FIFO1 - if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_33 "1" } + if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_35 "1" } global CONFIG_UA2_FIFO2 - if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_33 "2" } + if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_35 "2" } global CONFIG_UA2_FIFO4 - if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_33 "4" } + if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_35 "4" } global CONFIG_UA2_FIFO8 - if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_33 "8" } + if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_35 "8" } global CONFIG_UA2_FIFO16 - if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_33 "16" } + if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_35 "16" } global CONFIG_UA2_FIFO32 - if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_33 "32" } + if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_35 "32" } } diff --git a/designs/leon3-asic/leon3core.vhd b/designs/leon3-asic/leon3core.vhd index acb7e124..964a3b95 100644 --- a/designs/leon3-asic/leon3core.vhd +++ b/designs/leon3-asic/leon3core.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -110,6 +110,7 @@ entity leon3core is tms : in std_ulogic; tdi : in std_ulogic; tdo : out std_ulogic; + tdoen : out std_ulogic; scanen : in std_ulogic; testen : in std_ulogic; @@ -251,10 +252,10 @@ begin nouah : if CFG_AHB_UART = 0 generate apbo(7) <= apb_none; end generate; ahbjtaggen0 :if CFG_AHB_JTAG = 1 generate - ahbjtag0 : ahbjtag generic map(tech => fabtech, part => JTAG_UT699RH, - hindex => CFG_NCPU+CFG_AHB_UART, scantest => scantest) + ahbjtag0 : ahbjtag generic map(tech => fabtech, part => JTAG_EXAMPLE_PART, + hindex => CFG_NCPU+CFG_AHB_UART, scantest => scantest, oepol => OEPOL) port map(rstn, clk, tck, tms, tdi, tdo, ahbmi, ahbmo(CFG_NCPU+CFG_AHB_UART), - jtck, jtdi, jinst, jrst, jcapt, jshft, jupd, jtdo, trst, open); + jtck, jtdi, jinst, jrst, jcapt, jshft, jupd, jtdo, trst, tdoen); end generate; ---------------------------------------------------------------------- @@ -371,15 +372,16 @@ begin xtapgen: if CFG_AHB_JTAG = 0 generate t0: tap - generic map (tech => fabtech, irlen => 6) + generic map (tech => fabtech, irlen => 6, scantest => scantest, oepol => OEPOL) port map (trst,tck,tms,tdi,tdo, - jtck,jtdi,jinst,jrst,jcapt,jshft,jupd,open,open,'1',jtdo,'0'); + jtck,jtdi,jinst,jrst,jcapt,jshft,jupd,open,open,'1',jtdo,'0',testen,testrst,testoen,tdoen); end generate; bc0: bscanctrl port map ( trst,jtck,jtdi,jinst,jrst,jcapt,jshft,jupd,jtdo, - chain_tdi, chain_tdo, bsshft, bscapt, bsupdi, bsupdo, bsdrive, bshighz); + chain_tdi, chain_tdo, bsshft, bscapt, bsupdi, bsupdo, bsdrive, bshighz, + gnd(0), testen, testrst); chain_tck <= jtck; diff --git a/designs/leon3-asic/leon3mp.vhd b/designs/leon3-asic/leon3mp.vhd index e8203921..d00a330e 100644 --- a/designs/leon3-asic/leon3mp.vhd +++ b/designs/leon3-asic/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -164,7 +164,7 @@ signal lspw_ten : std_logic_vector(0 to CFG_SPW_NUM-1); signal llock, lroen, lroout : std_ulogic; -signal ltrst,ltck,ltms,ltdi,ltdo: std_ulogic; +signal ltrst,ltck,ltms,ltdi,ltdo,ltdoen: std_ulogic; signal ltest, gnd : std_ulogic; signal lclk2x, lclk4x, lclkdis, lclklock : std_ulogic; @@ -192,7 +192,7 @@ begin lromsn, lbrdyn, lbexcn, lwdogn, gpioin, gpioout, gpioen, lprom32, lpromedac, lspw_clksel, lspw_clk, lspw_rxd, lspw_rxs, lspw_txd, lspw_txs, lspw_ten, lclk2x, lclk4x, lclkdis, lclklock, llock, lroen, lroout, ltest, gnd, - ltrst, ltck, ltms, ltdi, ltdo); + ltrst, ltck, ltms, ltdi, ltdo, ltdoen); core0 : entity work.core generic map (fabtech, memtech, padtech, clktech, disas, dbguart, pclow, scantest) @@ -205,6 +205,6 @@ begin lromsn, lbrdyn, lbexcn, lwdogn, gpioin, gpioout, gpioen, lprom32, lpromedac, lspw_clksel, lspw_clk, lspw_rxd, lspw_rxs, lspw_txd, lspw_txs, lspw_ten, lclk2x, lclk4x, lclkdis, lclklock, llock, lroen, lroout, ltest, gnd, - ltrst, ltck, ltms, ltdi, ltdo); + ltrst, ltck, ltms, ltdi, ltdo, ltdoen); end; diff --git a/designs/leon3-asic/pads.vhd b/designs/leon3-asic/pads.vhd index bb675b63..aab51904 100644 --- a/designs/leon3-asic/pads.vhd +++ b/designs/leon3-asic/pads.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -160,7 +160,8 @@ entity pads is ltck : out std_ulogic; ltms : out std_ulogic; ltdi : out std_ulogic; - ltdo : in std_ulogic + ltdo : in std_ulogic; + ltdoen : in std_ulogic ); @@ -193,7 +194,7 @@ begin tck_pad : inpad generic map (tech => padtech) port map (tck, ltck); tms_pad : inpad generic map (tech => padtech) port map (tms, ltms); tdi_pad : inpad generic map (tech => padtech) port map (tdi, ltdi); - tdo_pad : outpad generic map (tech => padtech) port map (tdo, ltdo); + tdo_pad : toutpad generic map (tech => padtech, oepol => OEPOL) port map (tdo, ltdo, ltdoen); clk_pad : inpad generic map (tech => clkpadtech, filter => schmitt) port map (clk, clkin); diff --git a/designs/leon3-asic/testbench.vhd b/designs/leon3-asic/testbench.vhd index 55be7fe9..f7eb2faa 100644 --- a/designs/leon3-asic/testbench.vhd +++ b/designs/leon3-asic/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-asic/testbench_netlist.vhd b/designs/leon3-asic/testbench_netlist.vhd index 6c0c1ea5..2c6eee99 100644 --- a/designs/leon3-asic/testbench_netlist.vhd +++ b/designs/leon3-asic/testbench_netlist.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-asic/tkconfig.h b/designs/leon3-asic/tkconfig.h index 67879000..7bd23c41 100644 --- a/designs/leon3-asic/tkconfig.h +++ b/designs/leon3-asic/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -147,6 +159,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -531,6 +545,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -553,6 +571,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -619,14 +641,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-avnet-3s1500/Makefile b/designs/leon3-avnet-3s1500/Makefile index 8b2ac6ff..132c917e 100644 --- a/designs/leon3-avnet-3s1500/Makefile +++ b/designs/leon3-avnet-3s1500/Makefile @@ -18,10 +18,10 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp gleichmann usbhc spw + tmtc openchip hynix cypress ihp usbhc spw DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan leon3ft ddr meiko mfpc \ - grusbhc spi ata ac97 coremp7 spacewire usb leon4 leon4b64 l2cache \ - slink ascs pwm haps gr1553b iommu + grusbhc spi spacewire usb leon4 leon4v0 l2cache \ + slink ascs pwm gr1553b iommu FILESKIP = grcan.vhd include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-avnet-3s1500/config.help b/designs/leon3-avnet-3s1500/config.help index 7148389b..412a2287 100644 --- a/designs/leon3-avnet-3s1500/config.help +++ b/designs/leon3-avnet-3s1500/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-avnet-3s1500/lconfig.tk b/designs/leon3-avnet-3s1500/lconfig.tk index 47eb59c4..fb888bd5 100755 --- a/designs/leon3-avnet-3s1500/lconfig.tk +++ b/designs/leon3-avnet-3s1500/lconfig.tk @@ -754,7 +754,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -764,7 +765,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -907,8 +910,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -927,6 +932,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1113,9 +1122,10 @@ proc menu3 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 3 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 3 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 3 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1169,10 +1179,11 @@ proc update_menu3 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x2.l configure -state normal; } else {.menu3.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu3.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x2.l configure -state normal; } else {.menu3.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x3.l configure -state normal; } else {.menu3.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1218,14 +1229,16 @@ proc update_define_menu3 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1298,13 +1311,21 @@ proc menu4 {w title} { bool $w.config.f 4 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 4 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 4 2 "Integer unit " 5 - submenu $w.config.f 4 3 "Floating-point unit" 6 - submenu $w.config.f 4 4 "Cache system" 7 - submenu $w.config.f 4 5 "MMU" 8 - submenu $w.config.f 4 6 "Debug Support Unit " 9 - submenu $w.config.f 4 7 "Fault-tolerance " 10 - submenu $w.config.f 4 8 "VHDL debug settings " 11 + global tmpvar_3 + minimenu $w.config.f 4 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 4 3 "Integer unit " 5 + submenu $w.config.f 4 4 "Floating-point unit" 6 + submenu $w.config.f 4 5 "Cache system" 7 + submenu $w.config.f 4 6 "MMU" 8 + submenu $w.config.f 4 7 "Debug Support Unit " 9 + submenu $w.config.f 4 8 "Fault-tolerance " 10 + submenu $w.config.f 4 9 "VHDL debug settings " 11 @@ -1344,22 +1365,290 @@ proc update_menu4 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x1.l configure -state normal; } else {.menu4.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x2 normal {m}} else {configure_entry .menu4.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x3 normal {m}} else {configure_entry .menu4.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x4 normal {m}} else {configure_entry .menu4.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x5 normal {m}} else {configure_entry .menu4.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x6 normal {m}} else {configure_entry .menu4.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x7 normal {m}} else {configure_entry .menu4.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x3 normal {m}} else {configure_entry .menu4.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x4 normal {m}} else {configure_entry .menu4.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x5 normal {m}} else {configure_entry .menu4.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x6 normal {m}} else {configure_entry .menu4.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x7 normal {m}} else {configure_entry .menu4.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x8 normal {m}} else {configure_entry .menu4.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x9 normal {m}} else {configure_entry .menu4.config.f.x9 disabled {m}} } proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1416,21 +1705,21 @@ proc menu5 {w title} { int $w.config.f 5 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 5 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 5 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 5 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 5 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 5 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 5 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 5 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 5 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1477,36 +1766,37 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x0.l configure -state normal; } else {.menu5.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x0.l configure -state normal; } else {.menu5.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x1 normal {n l y}} else {configure_entry .menu5.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x6 normal {n l y}} else {configure_entry .menu5.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x7 normal {n l y}} else {configure_entry .menu5.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x8.l configure -state normal; } else {.menu5.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x8.l configure -state normal; } else {.menu5.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x9.l configure -state normal; } else {.menu5.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x9.l configure -state normal; } else {.menu5.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x10 normal {n l y}} else {configure_entry .menu5.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x11.l configure -state normal; } else {.menu5.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x11.l configure -state normal; } else {.menu5.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x11.l configure -state disabled} } @@ -1514,48 +1804,49 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1611,27 +1902,27 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 6 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 6 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 6 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 6 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 6 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 6 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 6 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1672,16 +1963,17 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu6.config.f.x4 normal {n l y}} else {configure_entry .menu6.config.f.x4 disabled {y n l}} } @@ -1690,34 +1982,35 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1774,92 +2067,92 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 7 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 7 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 7 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 7 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 7 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 7 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 7 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 7 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 7 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 7 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 7 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 7 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 7 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 7 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 7 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 7 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 7 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 7 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 7 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 7 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 7 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 7 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 7 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 7 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1867,18 +2160,18 @@ proc menu7 {w title} { bool $w.config.f 7 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 7 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 7 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 7 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 7 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 7 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1919,52 +2212,53 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu7.config.f.x6 normal {n l y}} else {configure_entry .menu7.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x7 normal {x l}} else {configure_entry .menu7.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x7 normal {x l}} else {configure_entry .menu7.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu7.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x8.l configure -state normal; } else {.menu7.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu7.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x8.l configure -state normal; } else {.menu7.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x9 normal {n l y}} else {configure_entry .menu7.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x10 normal {x l}} else {configure_entry .menu7.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x11 normal {x l}} else {configure_entry .menu7.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x12 normal {x l}} else {configure_entry .menu7.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x10 normal {x l}} else {configure_entry .menu7.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x11 normal {x l}} else {configure_entry .menu7.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x12 normal {x l}} else {configure_entry .menu7.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x13 normal {x l}} else {configure_entry .menu7.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x13 normal {x l}} else {configure_entry .menu7.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu7.config.f.x14 normal {n l y}} else {configure_entry .menu7.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu7.config.f.x15 normal {n l y}} else {configure_entry .menu7.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu7.config.f.x16 normal {n l y}} else {configure_entry .menu7.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu7.config.f.x17 normal {n l y}} else {configure_entry .menu7.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu7.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x18.l configure -state normal; } else {.menu7.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu7.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x18.l configure -state normal; } else {.menu7.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu7.config.f.x19 normal {n l y}} else {configure_entry .menu7.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x20 normal {x l}} else {configure_entry .menu7.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x20 normal {x l}} else {configure_entry .menu7.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu7.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x21.l configure -state normal; } else {.menu7.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu7.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x21.l configure -state normal; } else {.menu7.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x21.l configure -state disabled} } @@ -1972,162 +2266,163 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2183,45 +2478,47 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 8 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 8 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 8 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 8 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 8 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 8 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 8 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 8 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 8 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 8 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 8 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2261,18 +2558,19 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x1 normal {x l}} else {configure_entry .menu8.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x3 normal {x l}} else {configure_entry .menu8.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x1 normal {x l}} else {configure_entry .menu8.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x3 normal {x l}} else {configure_entry .menu8.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu8.config.f.x5 normal {n l y}} else {configure_entry .menu8.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x6 normal {x l}} else {configure_entry .menu8.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x6 normal {x l}} else {configure_entry .menu8.config.f.x6 disabled {x l}} } @@ -2280,55 +2578,60 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2385,24 +2688,24 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 9 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 9 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 9 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 9 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 9 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 9 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2442,17 +2745,18 @@ proc menu9 {w title} { proc update_menu9 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu9.config.f.x1 normal {n l y}} else {configure_entry .menu9.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu9.config.f.x4 normal {x l}} else {configure_entry .menu9.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu9.config.f.x4 normal {x l}} else {configure_entry .menu9.config.f.x4 disabled {x l}} } @@ -2460,37 +2764,38 @@ proc update_define_menu9 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2546,16 +2851,23 @@ proc menu10 {w title} { bool $w.config.f 10 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 10 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 10 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 10 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 10 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 10 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 10 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 10 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2603,9 +2915,7 @@ proc update_menu10 {} { configure_entry .menu10.config.f.x0 normal {n l y}} else {configure_entry .menu10.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu10.config.f.x1 normal {x l}} else {configure_entry .menu10.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu10.config.f.x2 normal {n l y}} else {configure_entry .menu10.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu10.config.f.x2 normal {x l}} else {configure_entry .menu10.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu10.config.f.x3 normal {n l y}} else {configure_entry .menu10.config.f.x3 disabled {y n l}} @@ -2627,21 +2937,26 @@ proc update_define_menu10 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2950,14 +3265,14 @@ proc menu13 {w title} { bool $w.config.f 13 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 13 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 13 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 13 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 13 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 13 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 13 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -3031,17 +3346,17 @@ proc update_define_menu13 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3477,16 +3792,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3548,21 +3863,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3622,14 +3937,14 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 18 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3683,17 +3998,17 @@ proc update_define_menu18 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3884,29 +4199,29 @@ proc menu20 {w title} { bool $w.config.f 20 2 "PCI DMA controller " CONFIG_PCI_MASTER_TARGET_DMA hex $w.config.f 20 3 "PCI vendor ID" CONFIG_PCI_VENDORID hex $w.config.f 20 4 "PCI device ID" CONFIG_PCI_DEVICEID - global tmpvar_29 - minimenu $w.config.f 20 5 "PCI FIFO depth" tmpvar_29 CONFIG_PCI_FIFO0 + global tmpvar_31 + minimenu $w.config.f 20 5 "PCI FIFO depth" tmpvar_31 CONFIG_PCI_FIFO0 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"PCI FIFO depth\"" - $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_29 -value "None" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_29 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_31 -value "None" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_31 -value "128" -command "update_active" menusplit $w $w.config.f.x5.x.menu 6 hex $w.config.f 20 6 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR bool $w.config.f 20 7 "PCI arbiter " CONFIG_PCI_ARBITER bool $w.config.f 20 8 "PCI arbiter APB interface " CONFIG_PCI_ARBITER_APB int $w.config.f 20 9 "Number of PCI REQ/GNT pairs" CONFIG_PCI_ARBITER_NREQ bool $w.config.f 20 10 "Enable PCI trace buffer " CONFIG_PCI_TRACE - global tmpvar_30 - minimenu $w.config.f 20 11 "PCI trace buffer depth" tmpvar_30 CONFIG_PCI_TRACE256 + global tmpvar_32 + minimenu $w.config.f 20 11 "PCI trace buffer depth" tmpvar_32 CONFIG_PCI_TRACE256 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"PCI trace buffer depth\"" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_30 -value "256" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_30 -value "512" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_30 -value "1024" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_30 -value "2048" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_30 -value "4096" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_32 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_32 -value "512" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_32 -value "1024" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_32 -value "2048" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_32 -value "4096" -command "update_active" menusplit $w $w.config.f.x11.x.menu 5 @@ -3990,19 +4305,19 @@ proc update_define_menu20 {} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_VENDORID "$CONFIG_PCI_VENDORID" 1AC8} global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_DEVICEID "$CONFIG_PCI_DEVICEID" 0054} - global tmpvar_29 + global tmpvar_31 global CONFIG_PCI_FIFO0 - if {$tmpvar_29 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} + if {$tmpvar_31 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} global CONFIG_PCI_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} global CONFIG_PCI_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} global CONFIG_PCI_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} global CONFIG_PCI_FIFO64 - if {$tmpvar_29 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} + if {$tmpvar_31 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} global CONFIG_PCI_FIFO128 - if {$tmpvar_29 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} + if {$tmpvar_31 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_HADDR "$CONFIG_PCI_HADDR" E00} global CONFIG_PCI_ARBITER @@ -4011,17 +4326,17 @@ proc update_define_menu20 {} { set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB&15]} else {set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB|16]} global CONFIG_PCI_ARBITER_NREQ if {($CONFIG_PCI_ARBITER == 1)} then {validate_int CONFIG_PCI_ARBITER_NREQ "$CONFIG_PCI_ARBITER_NREQ" 4} - global tmpvar_30 + global tmpvar_32 global CONFIG_PCI_TRACE256 - if {$tmpvar_30 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} + if {$tmpvar_32 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} global CONFIG_PCI_TRACE512 - if {$tmpvar_30 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} + if {$tmpvar_32 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} global CONFIG_PCI_TRACE1024 - if {$tmpvar_30 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} + if {$tmpvar_32 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} global CONFIG_PCI_TRACE2048 - if {$tmpvar_30 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} + if {$tmpvar_32 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} global CONFIG_PCI_TRACE4096 - if {$tmpvar_30 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} + if {$tmpvar_32 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} } @@ -4077,15 +4392,15 @@ proc menu21 {w title} { bool $w.config.f 21 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_31 - minimenu $w.config.f 21 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 + global tmpvar_33 + minimenu $w.config.f 21 1 "UART1 FIFO depth" tmpvar_33 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_33 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_33 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_33 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 21 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 21 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4166,19 +4481,19 @@ proc update_menu21 {} { proc update_define_menu21 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_31 + global tmpvar_33 global CONFIG_UA1_FIFO1 - if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_33 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_33 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_33 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_33 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_33 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_33 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4451,7 +4766,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4461,6 +4777,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4486,6 +4804,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4498,14 +4817,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4518,27 +4842,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4548,17 +4872,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4570,12 +4894,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4585,10 +4909,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4599,7 +4923,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4611,26 +4935,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4638,27 +4964,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4679,7 +5009,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4705,7 +5035,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4716,7 +5046,7 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 @@ -4733,7 +5063,7 @@ set CONFIG_PCI_MASTER_TARGET 0 set CONFIG_PCI_MASTER_TARGET_DMA 0 set CONFIG_PCI_VENDORID 1AC8 set CONFIG_PCI_DEVICEID 0054 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_PCI_FIFO0 0 set CONFIG_PCI_FIFO8 0 set CONFIG_PCI_FIFO16 0 @@ -4745,14 +5075,14 @@ set CONFIG_PCI_ARBITER 0 set CONFIG_PCI_ARBITER_APB 0 set CONFIG_PCI_ARBITER_NREQ 4 set CONFIG_PCI_TRACE 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_PCI_TRACE256 0 set CONFIG_PCI_TRACE512 0 set CONFIG_PCI_TRACE1024 0 set CONFIG_PCI_TRACE2048 0 set CONFIG_PCI_TRACE4096 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_31 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4830,7 +5160,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4840,6 +5171,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4881,6 +5214,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4893,9 +5227,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4909,239 +5244,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5186,13 +5671,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5238,27 +5723,27 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "CAN " global CONFIG_CAN_ENABLE write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 @@ -5284,14 +5769,14 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_VENDORID $CONFIG_PCI_VENDORID $notmod } global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_DEVICEID $CONFIG_PCI_DEVICEID $notmod } - global tmpvar_29 + global tmpvar_31 if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then { - if { $tmpvar_29 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } - if { $tmpvar_29 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} + if { $tmpvar_31 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } + if { $tmpvar_31 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_HADDR $CONFIG_PCI_HADDR $notmod } global CONFIG_PCI_ARBITER @@ -5302,24 +5787,24 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_ARBITER == 1)} then {write_int $cfg $autocfg CONFIG_PCI_ARBITER_NREQ $CONFIG_PCI_ARBITER_NREQ $notmod } global CONFIG_PCI_TRACE write_tristate $cfg $autocfg CONFIG_PCI_TRACE $CONFIG_PCI_TRACE [list $notmod] 2 - global tmpvar_30 + global tmpvar_32 if {($CONFIG_PCI_TRACE == 1)} then { - if { $tmpvar_30 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } - if { $tmpvar_30 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } - if { $tmpvar_30 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } - if { $tmpvar_30 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } - if { $tmpvar_30 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} + if { $tmpvar_32 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } + if { $tmpvar_32 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } + if { $tmpvar_32 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } + if { $tmpvar_32 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } + if { $tmpvar_32 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_31 + global tmpvar_33 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_33 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_33 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_33 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5393,7 +5878,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5403,6 +5889,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5421,8 +5909,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5505,11 +5998,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5530,6 +6025,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5640,8 +6139,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5660,6 +6161,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5700,350 +6205,376 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "8" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "8" global CONFIG_PCI_FIFO0 - if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_29 "None" } + if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_31 "None" } global CONFIG_PCI_FIFO8 - if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_PCI_FIFO16 - if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_PCI_FIFO32 - if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_31 "32" } global CONFIG_PCI_FIFO64 - if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_29 "64" } + if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_31 "64" } global CONFIG_PCI_FIFO128 - if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_29 "128" } - global tmpvar_30 - set tmpvar_30 "256" + if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_31 "128" } + global tmpvar_32 + set tmpvar_32 "256" global CONFIG_PCI_TRACE256 - if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_30 "256" } + if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_32 "256" } global CONFIG_PCI_TRACE512 - if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_30 "512" } + if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_32 "512" } global CONFIG_PCI_TRACE1024 - if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_30 "1024" } + if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_32 "1024" } global CONFIG_PCI_TRACE2048 - if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_30 "2048" } + if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_32 "2048" } global CONFIG_PCI_TRACE4096 - if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_30 "4096" } - global tmpvar_31 - set tmpvar_31 "1" + if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_32 "4096" } + global tmpvar_33 + set tmpvar_33 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_33 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_33 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_33 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_33 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_33 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_33 "32" } } diff --git a/designs/leon3-avnet-3s1500/leon3mp.vhd b/designs/leon3-avnet-3s1500/leon3mp.vhd index fd11373a..ea3d12ec 100644 --- a/designs/leon3-avnet-3s1500/leon3mp.vhd +++ b/designs/leon3-avnet-3s1500/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-avnet-3s1500/mctrl_avnet.vhd b/designs/leon3-avnet-3s1500/mctrl_avnet.vhd index 1b648df7..38e258a4 100644 --- a/designs/leon3-avnet-3s1500/mctrl_avnet.vhd +++ b/designs/leon3-avnet-3s1500/mctrl_avnet.vhd @@ -918,7 +918,6 @@ begin ribdrive <= vbdrive; risbdrive <= vsbdrive; - ahbso.hcache <= not r.area(io); memo.address <= r.addressx; memo.ramsn <= "111" & r.ramsn; memo.ramoen <= "111" & r.ramoen; diff --git a/designs/leon3-avnet-3s1500/testbench.vhd b/designs/leon3-avnet-3s1500/testbench.vhd index 99a295ef..18eff32c 100644 --- a/designs/leon3-avnet-3s1500/testbench.vhd +++ b/designs/leon3-avnet-3s1500/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-avnet-3s1500/tkconfig.h b/designs/leon3-avnet-3s1500/tkconfig.h index 7d24349b..c166d05e 100644 --- a/designs/leon3-avnet-3s1500/tkconfig.h +++ b/designs/leon3-avnet-3s1500/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-avnet-eval-xc4vlx25/Makefile b/designs/leon3-avnet-eval-xc4vlx25/Makefile index 79fb142d..56552cc4 100644 --- a/designs/leon3-avnet-eval-xc4vlx25/Makefile +++ b/designs/leon3-avnet-eval-xc4vlx25/Makefile @@ -21,11 +21,11 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp gleichmann usbhc spw \ + tmtc openchip hynix cypress ihp usbhc spw \ fmf gsi spansion DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft \ - spacewire ambatest can grusbhc usb hasp hcan spi ata ac97 \ - leon4 leon4b64 l2cache ata slink ascs pwm haps coremp7 gr1553b iommu + spacewire ambatest can grusbhc usb hasp hcan spi \ + leon4 leon4v0 l2cache slink ascs pwm gr1553b iommu FILESKIP = grcan.vhd i2cmst.vhd diff --git a/designs/leon3-avnet-eval-xc4vlx25/ahbrom.vhd b/designs/leon3-avnet-eval-xc4vlx25/ahbrom.vhd index a61a155a..2091c411 100644 --- a/designs/leon3-avnet-eval-xc4vlx25/ahbrom.vhd +++ b/designs/leon3-avnet-eval-xc4vlx25/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-avnet-eval-xc4vlx25/config.help b/designs/leon3-avnet-eval-xc4vlx25/config.help index dcd0da0e..4f41d6e4 100644 --- a/designs/leon3-avnet-eval-xc4vlx25/config.help +++ b/designs/leon3-avnet-eval-xc4vlx25/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-avnet-eval-xc4vlx25/lconfig.tk b/designs/leon3-avnet-eval-xc4vlx25/lconfig.tk index 45edadbd..b26fb9ef 100755 --- a/designs/leon3-avnet-eval-xc4vlx25/lconfig.tk +++ b/designs/leon3-avnet-eval-xc4vlx25/lconfig.tk @@ -753,7 +753,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -763,7 +764,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -906,8 +909,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -926,6 +931,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1015,9 +1024,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1071,10 +1081,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1120,14 +1131,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1200,13 +1213,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1246,22 +1267,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1318,21 +1607,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1379,36 +1668,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1416,48 +1706,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1513,27 +1804,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1574,16 +1865,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1592,34 +1884,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1676,92 +1969,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1769,18 +2062,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1821,52 +2114,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1874,162 +2168,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2085,45 +2380,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2163,18 +2460,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2182,55 +2480,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2287,24 +2590,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2344,17 +2647,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2362,37 +2666,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2448,16 +2753,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2505,9 +2817,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2529,21 +2839,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2852,14 +3167,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2933,17 +3248,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3518,16 +3833,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3589,21 +3904,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3663,14 +3978,14 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 18 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3724,17 +4039,17 @@ proc update_define_menu18 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3790,15 +4105,15 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3887,19 +4202,19 @@ proc update_menu19 {} { proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4069,7 +4384,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4079,6 +4395,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4103,6 +4421,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4115,14 +4434,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4135,27 +4459,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4165,17 +4489,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4187,12 +4511,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4202,10 +4526,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4216,7 +4540,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4228,26 +4552,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4255,27 +4581,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4296,7 +4626,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4328,7 +4658,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4339,14 +4669,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4423,7 +4753,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4433,6 +4764,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4471,6 +4804,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4483,9 +4817,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4499,239 +4834,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4776,13 +5261,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -4847,38 +5332,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4951,7 +5436,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4961,6 +5447,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4979,8 +5467,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5063,11 +5556,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5088,6 +5583,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5187,8 +5686,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5207,6 +5708,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5247,324 +5752,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-avnet-eval-xc4vlx25/leon3mp.vhd b/designs/leon3-avnet-eval-xc4vlx25/leon3mp.vhd index 20f29c72..92208125 100644 --- a/designs/leon3-avnet-eval-xc4vlx25/leon3mp.vhd +++ b/designs/leon3-avnet-eval-xc4vlx25/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-avnet-eval-xc4vlx25/testbench.vhd b/designs/leon3-avnet-eval-xc4vlx25/testbench.vhd index 67cdfbde..ff3d56f0 100644 --- a/designs/leon3-avnet-eval-xc4vlx25/testbench.vhd +++ b/designs/leon3-avnet-eval-xc4vlx25/testbench.vhd @@ -1,6 +1,10 @@ ----------------------------------------------------------------------------- -- LEON3 Demonstration design test bench -- Copyright (C) 2004 Jiri Gaisler, Gaisler Research +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -11,6 +15,10 @@ -- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------ -- modified by Thomas Ameseder, Gleichmann Electronics 2004, 2005 to -- support the use of an external AHB slave and different HPE board versions diff --git a/designs/leon3-avnet-eval-xc4vlx25/tkconfig.h b/designs/leon3-avnet-eval-xc4vlx25/tkconfig.h index 81af6f2a..c4263d57 100644 --- a/designs/leon3-avnet-eval-xc4vlx25/tkconfig.h +++ b/designs/leon3-avnet-eval-xc4vlx25/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-avnet-eval-xc4vlx60/Makefile b/designs/leon3-avnet-eval-xc4vlx60/Makefile index e062bd93..1e6f716e 100644 --- a/designs/leon3-avnet-eval-xc4vlx60/Makefile +++ b/designs/leon3-avnet-eval-xc4vlx60/Makefile @@ -51,11 +51,11 @@ CLEAN=soft-clean VCOMOPT=-explicit TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp gleichmann usbhc spw \ + tmtc openchip hynix cypress ihp usbhc spw \ fmf gsi spansion DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft \ - spacewire ambatest can grusbhc usb hasp spi ata ac97 coremp7 \ - hcan leon4 leon4b64 l2cache slink ascs pwm haps gr1553b iommu + spacewire ambatest can grusbhc usb hasp spi \ + hcan leon4 leon4v0 l2cache slink ascs pwm gr1553b iommu FILESKIP = grcan.vhd i2cmst.vhd diff --git a/designs/leon3-avnet-eval-xc4vlx60/ahb2mig_avnet_eval.vhd b/designs/leon3-avnet-eval-xc4vlx60/ahb2mig_avnet_eval.vhd index 2d339390..709e5805 100644 --- a/designs/leon3-avnet-eval-xc4vlx60/ahb2mig_avnet_eval.vhd +++ b/designs/leon3-avnet-eval-xc4vlx60/ahb2mig_avnet_eval.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -289,7 +289,6 @@ begin ahbso.hready <= ra.hready; ahbso.hresp <= ra.hresp; ahbso.hrdata <= ahbdrivedata(ra.hrdata); - ahbso.hcache <= '1'; -- delayed reset for the MIG, will not work otherwise ... diff --git a/designs/leon3-avnet-eval-xc4vlx60/ahbrom.vhd b/designs/leon3-avnet-eval-xc4vlx60/ahbrom.vhd index a61a155a..2091c411 100644 --- a/designs/leon3-avnet-eval-xc4vlx60/ahbrom.vhd +++ b/designs/leon3-avnet-eval-xc4vlx60/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-avnet-eval-xc4vlx60/config.help b/designs/leon3-avnet-eval-xc4vlx60/config.help index dcd0da0e..4f41d6e4 100644 --- a/designs/leon3-avnet-eval-xc4vlx60/config.help +++ b/designs/leon3-avnet-eval-xc4vlx60/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-avnet-eval-xc4vlx60/lconfig.tk b/designs/leon3-avnet-eval-xc4vlx60/lconfig.tk index 907df314..155776c5 100755 --- a/designs/leon3-avnet-eval-xc4vlx60/lconfig.tk +++ b/designs/leon3-avnet-eval-xc4vlx60/lconfig.tk @@ -754,7 +754,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -764,7 +765,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -907,8 +910,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -927,6 +932,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1016,9 +1025,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1072,10 +1082,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1121,14 +1132,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1201,13 +1214,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1247,22 +1268,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1319,21 +1608,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1380,36 +1669,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1417,48 +1707,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1514,28 +1805,28 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_7 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x4.x.menu 3 bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1576,20 +1867,21 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1598,38 +1890,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_7 + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1686,92 +1979,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1779,18 +2072,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1831,52 +2124,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1884,162 +2178,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2095,45 +2390,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2173,18 +2470,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2192,55 +2490,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2297,24 +2600,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2354,17 +2657,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2372,37 +2676,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2458,16 +2763,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2515,9 +2827,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2539,21 +2849,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2862,14 +3177,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2943,17 +3258,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3654,16 +3969,16 @@ proc menu18 {w title} { hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3725,21 +4040,21 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3799,14 +4114,14 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 19 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3860,17 +4175,17 @@ proc update_define_menu19 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3926,15 +4241,15 @@ proc menu20 {w title} { bool $w.config.f 20 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 20 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 20 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4023,19 +4338,19 @@ proc update_menu20 {} { proc update_define_menu20 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4205,7 +4520,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4215,6 +4531,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4239,6 +4557,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4251,14 +4570,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4271,28 +4595,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4302,17 +4626,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4324,12 +4648,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4339,10 +4663,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4353,7 +4677,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4365,26 +4689,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4392,27 +4718,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4433,7 +4763,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4471,7 +4801,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4482,14 +4812,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4568,7 +4898,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4578,6 +4909,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4616,6 +4949,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4628,9 +4962,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4644,241 +4979,390 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4923,13 +5407,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5007,38 +5491,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5111,7 +5595,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5121,6 +5606,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5139,8 +5626,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5223,11 +5715,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5248,6 +5742,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5347,8 +5845,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5367,6 +5867,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5407,324 +5911,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-avnet-eval-xc4vlx60/leon3mp.vhd b/designs/leon3-avnet-eval-xc4vlx60/leon3mp.vhd index e563f2b6..54489e80 100644 --- a/designs/leon3-avnet-eval-xc4vlx60/leon3mp.vhd +++ b/designs/leon3-avnet-eval-xc4vlx60/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-avnet-eval-xc4vlx60/testbench.vhd b/designs/leon3-avnet-eval-xc4vlx60/testbench.vhd index f6d62a7c..97a6be0c 100644 --- a/designs/leon3-avnet-eval-xc4vlx60/testbench.vhd +++ b/designs/leon3-avnet-eval-xc4vlx60/testbench.vhd @@ -1,6 +1,10 @@ ----------------------------------------------------------------------------- -- LEON3 Demonstration design test bench -- Copyright (C) 2004 Jiri Gaisler, Gaisler Research +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -11,6 +15,10 @@ -- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------ diff --git a/designs/leon3-avnet-eval-xc4vlx60/tkconfig.h b/designs/leon3-avnet-eval-xc4vlx60/tkconfig.h index 35ff6cc1..59cb735c 100644 --- a/designs/leon3-avnet-eval-xc4vlx60/tkconfig.h +++ b/designs/leon3-avnet-eval-xc4vlx60/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -806,6 +828,10 @@ #define CONFIG_DDRSP_RSKEW 0 #endif +#ifndef CONFIG_MIG_DDR3 +#define CONFIG_MIG_DDR3 0 +#endif + #ifndef CONFIG_MIG_DDR2 #define CONFIG_MIG_DDR2 0 #endif diff --git a/designs/leon3-avnet-xc2v1500/Makefile b/designs/leon3-avnet-xc2v1500/Makefile index 377ac3c8..ce9a2a24 100644 --- a/designs/leon3-avnet-xc2v1500/Makefile +++ b/designs/leon3-avnet-xc2v1500/Makefile @@ -18,9 +18,9 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip cypress ihp gleichmann usbhc spw + tmtc openchip cypress ihp usbhc spw DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan leon3ft grusbhc usb \ - spi ata coremp7 spacewire slink ascs haps leon4 leon4b64 l2cache \ + spi spacewire slink ascs leon4 leon4v0 l2cache \ pwm gr1553b iommu FILESKIP = grcan.vhd diff --git a/designs/leon3-avnet-xc2v1500/ahbrom.vhd b/designs/leon3-avnet-xc2v1500/ahbrom.vhd index cca70b02..78dd4c83 100644 --- a/designs/leon3-avnet-xc2v1500/ahbrom.vhd +++ b/designs/leon3-avnet-xc2v1500/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-avnet-xc2v1500/config.help b/designs/leon3-avnet-xc2v1500/config.help index 9f265e5c..660333ef 100644 --- a/designs/leon3-avnet-xc2v1500/config.help +++ b/designs/leon3-avnet-xc2v1500/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-avnet-xc2v1500/lconfig.tk b/designs/leon3-avnet-xc2v1500/lconfig.tk index a8095b15..f5e1cbcf 100755 --- a/designs/leon3-avnet-xc2v1500/lconfig.tk +++ b/designs/leon3-avnet-xc2v1500/lconfig.tk @@ -753,7 +753,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -763,7 +764,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -906,8 +909,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -926,6 +931,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1015,9 +1024,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1071,10 +1081,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1120,14 +1131,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1200,13 +1213,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1246,22 +1267,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1318,21 +1607,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1379,36 +1668,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1416,48 +1706,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1513,27 +1804,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1574,16 +1865,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1592,34 +1884,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1676,92 +1969,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1769,18 +2062,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1821,52 +2114,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1874,162 +2168,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2085,45 +2380,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2163,18 +2460,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2182,55 +2480,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2287,24 +2590,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2344,17 +2647,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2362,37 +2666,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2448,16 +2753,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2505,9 +2817,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2529,21 +2839,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -3457,16 +3772,16 @@ proc menu17 {w title} { bool $w.config.f 17 0 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_26 - minimenu $w.config.f 17 1 "AHB RAM size (Kbyte)" tmpvar_26 CONFIG_AHBRAM_SZ1 + global tmpvar_28 + minimenu $w.config.f 17 1 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_26 -value "32" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "64" -variable tmpvar_26 -value "64" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" menusplit $w $w.config.f.x1.x.menu 7 hex $w.config.f 17 2 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3516,21 +3831,21 @@ proc update_menu17 {} { proc update_define_menu17 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_26 + global tmpvar_28 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_26 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_26 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3593,26 +3908,26 @@ proc menu18 {w title} { bool $w.config.f 18 2 "PCI DMA controller " CONFIG_PCI_MASTER_TARGET_DMA hex $w.config.f 18 3 "PCI vendor ID" CONFIG_PCI_VENDORID hex $w.config.f 18 4 "PCI device ID" CONFIG_PCI_DEVICEID - global tmpvar_27 - minimenu $w.config.f 18 5 "PCI FIFO depth" tmpvar_27 CONFIG_PCI_FIFO0 + global tmpvar_29 + minimenu $w.config.f 18 5 "PCI FIFO depth" tmpvar_29 CONFIG_PCI_FIFO0 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"PCI FIFO depth\"" - $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_27 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_29 -value "None" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_29 -value "128" -command "update_active" menusplit $w $w.config.f.x5.x.menu 6 hex $w.config.f 18 6 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR bool $w.config.f 18 7 "Enable PCI trace buffer " CONFIG_PCI_TRACE - global tmpvar_28 - minimenu $w.config.f 18 8 "PCI trace buffer depth" tmpvar_28 CONFIG_PCI_TRACE256 + global tmpvar_30 + minimenu $w.config.f 18 8 "PCI trace buffer depth" tmpvar_30 CONFIG_PCI_TRACE256 menu $w.config.f.x8.x.menu -tearoffcommand "menutitle \"PCI trace buffer depth\"" - $w.config.f.x8.x.menu add radiobutton -label "256" -variable tmpvar_28 -value "256" -command "update_active" - $w.config.f.x8.x.menu add radiobutton -label "512" -variable tmpvar_28 -value "512" -command "update_active" - $w.config.f.x8.x.menu add radiobutton -label "1024" -variable tmpvar_28 -value "1024" -command "update_active" - $w.config.f.x8.x.menu add radiobutton -label "2048" -variable tmpvar_28 -value "2048" -command "update_active" - $w.config.f.x8.x.menu add radiobutton -label "4096" -variable tmpvar_28 -value "4096" -command "update_active" + $w.config.f.x8.x.menu add radiobutton -label "256" -variable tmpvar_30 -value "256" -command "update_active" + $w.config.f.x8.x.menu add radiobutton -label "512" -variable tmpvar_30 -value "512" -command "update_active" + $w.config.f.x8.x.menu add radiobutton -label "1024" -variable tmpvar_30 -value "1024" -command "update_active" + $w.config.f.x8.x.menu add radiobutton -label "2048" -variable tmpvar_30 -value "2048" -command "update_active" + $w.config.f.x8.x.menu add radiobutton -label "4096" -variable tmpvar_30 -value "4096" -command "update_active" menusplit $w $w.config.f.x8.x.menu 5 @@ -3690,32 +4005,32 @@ proc update_define_menu18 {} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_VENDORID "$CONFIG_PCI_VENDORID" 1AC8} global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_DEVICEID "$CONFIG_PCI_DEVICEID" 0054} - global tmpvar_27 + global tmpvar_29 global CONFIG_PCI_FIFO0 - if {$tmpvar_27 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} + if {$tmpvar_29 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} global CONFIG_PCI_FIFO8 - if {$tmpvar_27 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} global CONFIG_PCI_FIFO16 - if {$tmpvar_27 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} global CONFIG_PCI_FIFO32 - if {$tmpvar_27 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} global CONFIG_PCI_FIFO64 - if {$tmpvar_27 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} global CONFIG_PCI_FIFO128 - if {$tmpvar_27 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} + if {$tmpvar_29 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_HADDR "$CONFIG_PCI_HADDR" E00} - global tmpvar_28 + global tmpvar_30 global CONFIG_PCI_TRACE256 - if {$tmpvar_28 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} + if {$tmpvar_30 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} global CONFIG_PCI_TRACE512 - if {$tmpvar_28 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} + if {$tmpvar_30 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} global CONFIG_PCI_TRACE1024 - if {$tmpvar_28 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} + if {$tmpvar_30 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} global CONFIG_PCI_TRACE2048 - if {$tmpvar_28 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} + if {$tmpvar_30 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} global CONFIG_PCI_TRACE4096 - if {$tmpvar_28 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} + if {$tmpvar_30 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} } @@ -3771,15 +4086,15 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3868,19 +4183,19 @@ proc update_menu19 {} { proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4050,7 +4365,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4060,6 +4376,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4084,6 +4402,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4096,14 +4415,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4116,27 +4440,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4146,17 +4470,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4168,12 +4492,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4183,10 +4507,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4197,7 +4521,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4209,26 +4533,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4236,27 +4562,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4295,7 +4625,7 @@ set CONFIG_DDRSP_RSKEW 0 set CONFIG_AHBSTAT_ENABLE 0 set CONFIG_AHBSTAT_NFTSLV 1 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4309,7 +4639,7 @@ set CONFIG_PCI_MASTER_TARGET 0 set CONFIG_PCI_MASTER_TARGET_DMA 0 set CONFIG_PCI_VENDORID 1AC8 set CONFIG_PCI_DEVICEID 0054 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_PCI_FIFO0 0 set CONFIG_PCI_FIFO8 0 set CONFIG_PCI_FIFO16 0 @@ -4318,14 +4648,14 @@ set CONFIG_PCI_FIFO64 0 set CONFIG_PCI_FIFO128 0 set CONFIG_PCI_HADDR E00 set CONFIG_PCI_TRACE 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_PCI_TRACE256 0 set CONFIG_PCI_TRACE512 0 set CONFIG_PCI_TRACE1024 0 set CONFIG_PCI_TRACE2048 0 set CONFIG_PCI_TRACE4096 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4403,7 +4733,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4413,6 +4744,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4451,6 +4784,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4463,9 +4797,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4479,239 +4814,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4802,15 +5287,15 @@ proc writeconfig {file1 file2} { write_comment $cfg $autocfg "On-chip RAM/ROM " global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_26 + global tmpvar_28 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_26 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_26 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "PCI " @@ -4825,36 +5310,36 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_VENDORID $CONFIG_PCI_VENDORID $notmod } global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_DEVICEID $CONFIG_PCI_DEVICEID $notmod } - global tmpvar_27 + global tmpvar_29 if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then { - if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } - if { $tmpvar_27 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} + if { $tmpvar_29 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } + if { $tmpvar_29 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_HADDR $CONFIG_PCI_HADDR $notmod } global CONFIG_PCI_TRACE write_tristate $cfg $autocfg CONFIG_PCI_TRACE $CONFIG_PCI_TRACE [list $notmod] 2 - global tmpvar_28 + global tmpvar_30 if {($CONFIG_PCI_TRACE == 1)} then { - if { $tmpvar_28 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } - if { $tmpvar_28 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } - if { $tmpvar_28 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } - if { $tmpvar_28 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } - if { $tmpvar_28 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} + if { $tmpvar_30 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } + if { $tmpvar_30 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } + if { $tmpvar_30 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } + if { $tmpvar_30 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } + if { $tmpvar_30 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UART, timer, I/O port and interrupt controller" global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4927,7 +5412,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4937,6 +5423,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4955,8 +5443,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5039,11 +5532,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5064,6 +5559,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0 global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0 @@ -5164,8 +5663,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5184,6 +5685,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5224,326 +5729,352 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "4" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_26 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_26 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_26 "64" } - global tmpvar_27 - set tmpvar_27 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } + global tmpvar_29 + set tmpvar_29 "8" global CONFIG_PCI_FIFO0 - if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_27 "None" } + if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_29 "None" } global CONFIG_PCI_FIFO8 - if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_29 "8" } global CONFIG_PCI_FIFO16 - if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_29 "16" } global CONFIG_PCI_FIFO32 - if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_29 "32" } global CONFIG_PCI_FIFO64 - if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_27 "64" } + if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_29 "64" } global CONFIG_PCI_FIFO128 - if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_27 "128" } - global tmpvar_28 - set tmpvar_28 "256" + if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_29 "128" } + global tmpvar_30 + set tmpvar_30 "256" global CONFIG_PCI_TRACE256 - if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_28 "256" } + if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_30 "256" } global CONFIG_PCI_TRACE512 - if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_28 "512" } + if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_30 "512" } global CONFIG_PCI_TRACE1024 - if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_28 "1024" } + if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_30 "1024" } global CONFIG_PCI_TRACE2048 - if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_28 "2048" } + if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_30 "2048" } global CONFIG_PCI_TRACE4096 - if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_28 "4096" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_30 "4096" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-avnet-xc2v1500/leon3mp.vhd b/designs/leon3-avnet-xc2v1500/leon3mp.vhd index b573daad..b2364ca6 100644 --- a/designs/leon3-avnet-xc2v1500/leon3mp.vhd +++ b/designs/leon3-avnet-xc2v1500/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-avnet-xc2v1500/testbench.vhd b/designs/leon3-avnet-xc2v1500/testbench.vhd index 242649e4..173978b7 100644 --- a/designs/leon3-avnet-xc2v1500/testbench.vhd +++ b/designs/leon3-avnet-xc2v1500/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-avnet-xc2v1500/tkconfig.h b/designs/leon3-avnet-xc2v1500/tkconfig.h index 6a1e2594..2ea2d901 100644 --- a/designs/leon3-avnet-xc2v1500/tkconfig.h +++ b/designs/leon3-avnet-xc2v1500/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-clock-gate/Makefile b/designs/leon3-clock-gate/Makefile index 3457f5bb..1e11ffba 100644 --- a/designs/leon3-clock-gate/Makefile +++ b/designs/leon3-clock-gate/Makefile @@ -16,11 +16,11 @@ BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut CLEAN=soft-clean TECHLIBS = unisim simprim -LIBSKIP = tmtc gsi fmf dare gleichmann hynix openchip cypress \ +LIBSKIP = tmtc gsi fmf dare hynix openchip cypress \ ihp core1553bbc core1553brt core1553brm corePCIF gr1553 \ spansion -DIRSKIP = b1553 usb ddr crypto ata satcan slink ascs pwm haps coremp7 gr1553b iommu \ - eon3ft leon4 leon4b64 l2cache pcif spi ac97 hcan +DIRSKIP = b1553 usb ddr crypto satcan slink ascs pwm gr1553b iommu \ + eon3ft leon4 leon4v0 l2cache pcif spi hcan include $(GRLIB)/bin/Makefile include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-clock-gate/ahbrom.vhd b/designs/leon3-clock-gate/ahbrom.vhd index 63180a44..f1bf94ce 100644 --- a/designs/leon3-clock-gate/ahbrom.vhd +++ b/designs/leon3-clock-gate/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-clock-gate/clkgate.vhd b/designs/leon3-clock-gate/clkgate.vhd index 6a6f6601..d6a5448a 100644 --- a/designs/leon3-clock-gate/clkgate.vhd +++ b/designs/leon3-clock-gate/clkgate.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-clock-gate/config.help b/designs/leon3-clock-gate/config.help index ca82d286..4cd9d3aa 100644 --- a/designs/leon3-clock-gate/config.help +++ b/designs/leon3-clock-gate/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-clock-gate/lconfig.tk b/designs/leon3-clock-gate/lconfig.tk index def181b0..13455cbd 100755 --- a/designs/leon3-clock-gate/lconfig.tk +++ b/designs/leon3-clock-gate/lconfig.tk @@ -757,7 +757,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -767,7 +768,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -910,8 +913,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -930,6 +935,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1019,9 +1028,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1075,10 +1085,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1124,14 +1135,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1204,13 +1217,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1250,22 +1271,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1322,21 +1611,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1383,36 +1672,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1420,48 +1710,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1517,27 +1808,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1578,16 +1869,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1596,34 +1888,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1680,92 +1973,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1773,18 +2066,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1825,52 +2118,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1878,162 +2172,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2089,45 +2384,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2167,18 +2464,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2186,55 +2484,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2291,24 +2594,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2348,17 +2651,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2366,37 +2670,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2452,16 +2757,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2509,9 +2821,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2533,21 +2843,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2856,14 +3171,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2937,17 +3252,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3226,32 +3541,32 @@ proc menu15 {w title} { int $w.config.f 15 3 "RAM waitstates" CONFIG_SRCTRL_RAMWS int $w.config.f 15 4 "IO waitstates" CONFIG_SRCTRL_IOWS bool $w.config.f 15 5 "Use read-modify-write for sub-word writes " CONFIG_SRCTRL_RMW - global tmpvar_27 - minimenu $w.config.f 15 6 "SRAM banks" tmpvar_27 CONFIG_SRCTRL_SRBANKS1 + global tmpvar_29 + minimenu $w.config.f 15 6 "SRAM banks" tmpvar_29 CONFIG_SRCTRL_SRBANKS1 menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"SRAM banks\"" - $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_27 -value "3" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_27 -value "5" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_29 -value "3" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_29 -value "5" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 - global tmpvar_28 - minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_28 CONFIG_SRCTRL_BANKSZ0 + global tmpvar_30 + minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_30 CONFIG_SRCTRL_BANKSZ0 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"SRAM bank size (kb) (0 for programmable)\"" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_28 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_28 -value "256" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_28 -value "512" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_28 -value "1024" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_28 -value "2048" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_28 -value "4096" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_28 -value "8192" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_28 -value "16384" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_28 -value "32768" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_28 -value "65536" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_30 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_30 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_30 -value "512" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_30 -value "1024" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_30 -value "2048" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_30 -value "4096" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_30 -value "8192" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_30 -value "16384" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_30 -value "32768" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_30 -value "65536" -command "update_active" menusplit $w $w.config.f.x7.x.menu 14 int $w.config.f 15 8 "PROM bank select address bit (0 - 28)" CONFIG_SRCTRL_ROMASEL @@ -3327,46 +3642,46 @@ proc update_define_menu15 {} { global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then { set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW&15]} else {set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_SRCTRL_SRBANKS1 - if {$tmpvar_27 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} global CONFIG_SRCTRL_SRBANKS2 - if {$tmpvar_27 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} global CONFIG_SRCTRL_SRBANKS3 - if {$tmpvar_27 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} + if {$tmpvar_29 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} global CONFIG_SRCTRL_SRBANKS4 - if {$tmpvar_27 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} global CONFIG_SRCTRL_SRBANKS5 - if {$tmpvar_27 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} - global tmpvar_28 + if {$tmpvar_29 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} + global tmpvar_30 global CONFIG_SRCTRL_BANKSZ0 - if {$tmpvar_28 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} + if {$tmpvar_30 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} global CONFIG_SRCTRL_BANKSZ1 - if {$tmpvar_28 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} + if {$tmpvar_30 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} global CONFIG_SRCTRL_BANKSZ2 - if {$tmpvar_28 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} + if {$tmpvar_30 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} global CONFIG_SRCTRL_BANKSZ3 - if {$tmpvar_28 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} + if {$tmpvar_30 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} global CONFIG_SRCTRL_BANKSZ4 - if {$tmpvar_28 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} + if {$tmpvar_30 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} global CONFIG_SRCTRL_BANKSZ5 - if {$tmpvar_28 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} + if {$tmpvar_30 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} global CONFIG_SRCTRL_BANKSZ6 - if {$tmpvar_28 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} + if {$tmpvar_30 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} global CONFIG_SRCTRL_BANKSZ7 - if {$tmpvar_28 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} + if {$tmpvar_30 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} global CONFIG_SRCTRL_BANKSZ8 - if {$tmpvar_28 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} + if {$tmpvar_30 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} global CONFIG_SRCTRL_BANKSZ9 - if {$tmpvar_28 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} + if {$tmpvar_30 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} global CONFIG_SRCTRL_BANKSZ10 - if {$tmpvar_28 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} + if {$tmpvar_30 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} global CONFIG_SRCTRL_BANKSZ11 - if {$tmpvar_28 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} + if {$tmpvar_30 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} global CONFIG_SRCTRL_BANKSZ12 - if {$tmpvar_28 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} + if {$tmpvar_30 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} global CONFIG_SRCTRL_BANKSZ13 - if {$tmpvar_28 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} + if {$tmpvar_30 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_ROMASEL "$CONFIG_SRCTRL_ROMASEL" 19} } @@ -3718,16 +4033,16 @@ proc menu18 {w title} { hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_29 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 + global tmpvar_31 + minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_31 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3789,21 +4104,21 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_29 + global tmpvar_31 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_31 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3863,14 +4178,14 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 19 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_30 - minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 + global tmpvar_32 + minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_32 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_32 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3924,17 +4239,17 @@ proc update_define_menu19 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_30 + global tmpvar_32 global CONFIG_GRETH_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_32 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_32 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_32 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_32 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_32 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -4125,29 +4440,29 @@ proc menu21 {w title} { bool $w.config.f 21 2 "PCI DMA controller " CONFIG_PCI_MASTER_TARGET_DMA hex $w.config.f 21 3 "PCI vendor ID" CONFIG_PCI_VENDORID hex $w.config.f 21 4 "PCI device ID" CONFIG_PCI_DEVICEID - global tmpvar_31 - minimenu $w.config.f 21 5 "PCI FIFO depth" tmpvar_31 CONFIG_PCI_FIFO0 + global tmpvar_33 + minimenu $w.config.f 21 5 "PCI FIFO depth" tmpvar_33 CONFIG_PCI_FIFO0 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"PCI FIFO depth\"" - $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_31 -value "None" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_31 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_33 -value "None" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_33 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_33 -value "128" -command "update_active" menusplit $w $w.config.f.x5.x.menu 6 hex $w.config.f 21 6 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR bool $w.config.f 21 7 "PCI arbiter " CONFIG_PCI_ARBITER bool $w.config.f 21 8 "PCI arbiter APB interface " CONFIG_PCI_ARBITER_APB int $w.config.f 21 9 "Number of PCI REQ/GNT pairs" CONFIG_PCI_ARBITER_NREQ bool $w.config.f 21 10 "Enable PCI trace buffer " CONFIG_PCI_TRACE - global tmpvar_32 - minimenu $w.config.f 21 11 "PCI trace buffer depth" tmpvar_32 CONFIG_PCI_TRACE256 + global tmpvar_34 + minimenu $w.config.f 21 11 "PCI trace buffer depth" tmpvar_34 CONFIG_PCI_TRACE256 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"PCI trace buffer depth\"" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_32 -value "256" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_32 -value "512" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_32 -value "1024" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_32 -value "2048" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_32 -value "4096" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_34 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_34 -value "512" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_34 -value "1024" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_34 -value "2048" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_34 -value "4096" -command "update_active" menusplit $w $w.config.f.x11.x.menu 5 @@ -4231,19 +4546,19 @@ proc update_define_menu21 {} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_VENDORID "$CONFIG_PCI_VENDORID" 1AC8} global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_DEVICEID "$CONFIG_PCI_DEVICEID" 0054} - global tmpvar_31 + global tmpvar_33 global CONFIG_PCI_FIFO0 - if {$tmpvar_31 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} + if {$tmpvar_33 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} global CONFIG_PCI_FIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} + if {$tmpvar_33 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} global CONFIG_PCI_FIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} + if {$tmpvar_33 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} global CONFIG_PCI_FIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} + if {$tmpvar_33 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} global CONFIG_PCI_FIFO64 - if {$tmpvar_31 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} + if {$tmpvar_33 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} global CONFIG_PCI_FIFO128 - if {$tmpvar_31 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} + if {$tmpvar_33 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_HADDR "$CONFIG_PCI_HADDR" E00} global CONFIG_PCI_ARBITER @@ -4252,17 +4567,17 @@ proc update_define_menu21 {} { set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB&15]} else {set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB|16]} global CONFIG_PCI_ARBITER_NREQ if {($CONFIG_PCI_ARBITER == 1)} then {validate_int CONFIG_PCI_ARBITER_NREQ "$CONFIG_PCI_ARBITER_NREQ" 4} - global tmpvar_32 + global tmpvar_34 global CONFIG_PCI_TRACE256 - if {$tmpvar_32 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} + if {$tmpvar_34 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} global CONFIG_PCI_TRACE512 - if {$tmpvar_32 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} + if {$tmpvar_34 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} global CONFIG_PCI_TRACE1024 - if {$tmpvar_32 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} + if {$tmpvar_34 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} global CONFIG_PCI_TRACE2048 - if {$tmpvar_32 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} + if {$tmpvar_34 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} global CONFIG_PCI_TRACE4096 - if {$tmpvar_32 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} + if {$tmpvar_34 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} } @@ -4319,57 +4634,57 @@ proc menu22 {w title} { bool $w.config.f 22 0 "Enable Spacewire links " CONFIG_SPW_ENABLE int $w.config.f 22 1 "Number of links (1 - 3)" CONFIG_SPW_NUM - global tmpvar_33 - minimenu $w.config.f 22 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_33 CONFIG_SPW_AHBFIFO4 + global tmpvar_35 + minimenu $w.config.f 22 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_35 CONFIG_SPW_AHBFIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB RX/TX FIFO size (32-bit words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_33 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_35 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_35 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_35 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_35 -value "32" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_34 - minimenu $w.config.f 22 3 "Receiver FIFO size (bytes) " tmpvar_34 CONFIG_SPW_RXFIFO16 + global tmpvar_36 + minimenu $w.config.f 22 3 "Receiver FIFO size (bytes) " tmpvar_36 CONFIG_SPW_RXFIFO16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Receiver FIFO size (bytes) \"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_34 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_34 -value "32" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_34 -value "64" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_36 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_36 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_36 -value "64" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 22 4 "Enable RMAP protocol " CONFIG_SPW_RMAP - global tmpvar_35 - minimenu $w.config.f 22 5 "RMAP buffer size (bytes) " tmpvar_35 CONFIG_SPW_RMAPBUF2 + global tmpvar_37 + minimenu $w.config.f 22 5 "RMAP buffer size (bytes) " tmpvar_37 CONFIG_SPW_RMAPBUF2 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"RMAP buffer size (bytes) \"" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_35 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_35 -value "128" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_35 -value "192" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_35 -value "256" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_37 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_37 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_37 -value "192" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_37 -value "256" -command "update_active" menusplit $w $w.config.f.x5.x.menu 4 bool $w.config.f 22 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC bool $w.config.f 22 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL bool $w.config.f 22 8 "Spacewire FIFO protection " CONFIG_SPW_FT bool $w.config.f 22 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST int $w.config.f 22 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS - global tmpvar_36 - minimenu $w.config.f 22 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_36 CONFIG_SPW_GRSPW1 + global tmpvar_38 + minimenu $w.config.f 22 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_38 CONFIG_SPW_GRSPW1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Select GRSPW core (GRSPW1/GRSPW2) \"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_36 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_36 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_38 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_38 -value "2" -command "update_active" menusplit $w $w.config.f.x11.x.menu 2 int $w.config.f 22 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN bool $w.config.f 22 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME - global tmpvar_37 - minimenu $w.config.f 22 14 "Select receiver clock type " tmpvar_37 CONFIG_SPW_RX_SDR + global tmpvar_39 + minimenu $w.config.f 22 14 "Select receiver clock type " tmpvar_39 CONFIG_SPW_RX_SDR menu $w.config.f.x14.x.menu -tearoffcommand "menutitle \"Select receiver clock type \"" - $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_37 -value "SDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_37 -value "DDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_37 -value "Xor" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_37 -value "Aeroflex" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_39 -value "SDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_39 -value "DDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_39 -value "Xor" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_39 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x14.x.menu 4 - global tmpvar_38 - minimenu $w.config.f 22 15 "Select transmitter clock type " tmpvar_38 CONFIG_SPW_TX_SDR + global tmpvar_40 + minimenu $w.config.f 22 15 "Select transmitter clock type " tmpvar_40 CONFIG_SPW_TX_SDR menu $w.config.f.x15.x.menu -tearoffcommand "menutitle \"Select transmitter clock type \"" - $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_38 -value "SDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_38 -value "DDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_38 -value "Aeroflex" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_40 -value "SDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_40 -value "DDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_40 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x15.x.menu 3 @@ -4449,34 +4764,34 @@ proc update_define_menu22 {} { global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_NUM "$CONFIG_SPW_NUM" 1} - global tmpvar_33 + global tmpvar_35 global CONFIG_SPW_AHBFIFO4 - if {$tmpvar_33 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} + if {$tmpvar_35 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} global CONFIG_SPW_AHBFIFO8 - if {$tmpvar_33 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} + if {$tmpvar_35 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} global CONFIG_SPW_AHBFIFO16 - if {$tmpvar_33 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} + if {$tmpvar_35 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} global CONFIG_SPW_AHBFIFO32 - if {$tmpvar_33 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} - global tmpvar_34 + if {$tmpvar_35 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} + global tmpvar_36 global CONFIG_SPW_RXFIFO16 - if {$tmpvar_34 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} + if {$tmpvar_36 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} global CONFIG_SPW_RXFIFO32 - if {$tmpvar_34 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} + if {$tmpvar_36 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} global CONFIG_SPW_RXFIFO64 - if {$tmpvar_34 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} + if {$tmpvar_36 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP&15]} else {set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP|16]} - global tmpvar_35 + global tmpvar_37 global CONFIG_SPW_RMAPBUF2 - if {$tmpvar_35 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} + if {$tmpvar_37 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} global CONFIG_SPW_RMAPBUF4 - if {$tmpvar_35 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} + if {$tmpvar_37 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} global CONFIG_SPW_RMAPBUF6 - if {$tmpvar_35 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} + if {$tmpvar_37 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} global CONFIG_SPW_RMAPBUF8 - if {$tmpvar_35 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} + if {$tmpvar_37 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC&15]} else {set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC|16]} @@ -4491,32 +4806,32 @@ proc update_define_menu22 {} { set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST&15]} else {set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST|16]} global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_PORTS "$CONFIG_SPW_PORTS" 1} - global tmpvar_36 + global tmpvar_38 global CONFIG_SPW_GRSPW1 - if {$tmpvar_36 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} + if {$tmpvar_38 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} global CONFIG_SPW_GRSPW2 - if {$tmpvar_36 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} + if {$tmpvar_38 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} global CONFIG_SPW_DMACHAN if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {validate_int CONFIG_SPW_DMACHAN "$CONFIG_SPW_DMACHAN" 1} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME&15]} else {set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME|16]} - global tmpvar_37 + global tmpvar_39 global CONFIG_SPW_RX_SDR - if {$tmpvar_37 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} + if {$tmpvar_39 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} global CONFIG_SPW_RX_DDR - if {$tmpvar_37 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} + if {$tmpvar_39 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} global CONFIG_SPW_RX_XOR - if {$tmpvar_37 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} + if {$tmpvar_39 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} global CONFIG_SPW_RX_AFLEX - if {$tmpvar_37 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} - global tmpvar_38 + if {$tmpvar_39 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} + global tmpvar_40 global CONFIG_SPW_TX_SDR - if {$tmpvar_38 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} + if {$tmpvar_40 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} global CONFIG_SPW_TX_DDR - if {$tmpvar_38 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} + if {$tmpvar_40 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} global CONFIG_SPW_TX_AFLEX - if {$tmpvar_38 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} + if {$tmpvar_40 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} } @@ -4572,26 +4887,26 @@ proc menu23 {w title} { bool $w.config.f 23 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_39 - minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_39 CONFIG_UA1_FIFO1 + global tmpvar_41 + minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_41 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_39 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_39 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_39 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_39 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_39 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_39 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_41 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_41 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_41 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_41 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_41 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_41 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 23 2 "Enable secondary UART " CONFIG_UART2_ENABLE - global tmpvar_40 - minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_40 CONFIG_UA2_FIFO1 + global tmpvar_42 + minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_42 CONFIG_UA2_FIFO1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_40 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_40 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_40 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_40 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_40 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_40 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_42 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_42 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_42 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_42 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_42 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_42 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 6 bool $w.config.f 23 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 23 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4682,32 +4997,32 @@ proc update_menu23 {} { proc update_define_menu23 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_39 + global tmpvar_41 global CONFIG_UA1_FIFO1 - if {$tmpvar_39 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_41 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_39 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_41 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_39 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_41 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_39 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_41 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_39 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_41 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_39 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global tmpvar_40 + if {$tmpvar_41 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + global tmpvar_42 global CONFIG_UA2_FIFO1 - if {$tmpvar_40 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} + if {$tmpvar_42 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} global CONFIG_UA2_FIFO2 - if {$tmpvar_40 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} + if {$tmpvar_42 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} global CONFIG_UA2_FIFO4 - if {$tmpvar_40 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} + if {$tmpvar_42 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} global CONFIG_UA2_FIFO8 - if {$tmpvar_40 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} + if {$tmpvar_42 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} global CONFIG_UA2_FIFO16 - if {$tmpvar_40 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} + if {$tmpvar_42 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} global CONFIG_UA2_FIFO32 - if {$tmpvar_40 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} + if {$tmpvar_42 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4877,7 +5192,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4887,6 +5203,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4911,6 +5229,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4923,14 +5242,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4943,27 +5267,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4973,17 +5297,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4995,12 +5319,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -5010,10 +5334,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -5024,7 +5348,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -5036,26 +5360,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -5063,27 +5389,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -5104,7 +5434,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -5122,13 +5452,13 @@ set CONFIG_SRCTRL_PROMWS 3 set CONFIG_SRCTRL_RAMWS 0 set CONFIG_SRCTRL_IOWS 0 set CONFIG_SRCTRL_RMW 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_SRCTRL_SRBANKS1 0 set CONFIG_SRCTRL_SRBANKS2 0 set CONFIG_SRCTRL_SRBANKS3 0 set CONFIG_SRCTRL_SRBANKS4 0 set CONFIG_SRCTRL_SRBANKS5 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_SRCTRL_BANKSZ0 0 set CONFIG_SRCTRL_BANKSZ1 0 set CONFIG_SRCTRL_BANKSZ2 0 @@ -5163,7 +5493,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -5174,7 +5504,7 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 @@ -5191,7 +5521,7 @@ set CONFIG_PCI_MASTER_TARGET 0 set CONFIG_PCI_MASTER_TARGET_DMA 0 set CONFIG_PCI_VENDORID 1AC8 set CONFIG_PCI_DEVICEID 0054 -set tmpvar_31 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_PCI_FIFO0 0 set CONFIG_PCI_FIFO8 0 set CONFIG_PCI_FIFO16 0 @@ -5203,7 +5533,7 @@ set CONFIG_PCI_ARBITER 0 set CONFIG_PCI_ARBITER_APB 0 set CONFIG_PCI_ARBITER_NREQ 4 set CONFIG_PCI_TRACE 0 -set tmpvar_32 "(not set)" +set tmpvar_34 "(not set)" set CONFIG_PCI_TRACE256 0 set CONFIG_PCI_TRACE512 0 set CONFIG_PCI_TRACE1024 0 @@ -5211,17 +5541,17 @@ set CONFIG_PCI_TRACE2048 0 set CONFIG_PCI_TRACE4096 0 set CONFIG_SPW_ENABLE 0 set CONFIG_SPW_NUM 1 -set tmpvar_33 "(not set)" +set tmpvar_35 "(not set)" set CONFIG_SPW_AHBFIFO4 0 set CONFIG_SPW_AHBFIFO8 0 set CONFIG_SPW_AHBFIFO16 0 set CONFIG_SPW_AHBFIFO32 0 -set tmpvar_34 "(not set)" +set tmpvar_36 "(not set)" set CONFIG_SPW_RXFIFO16 0 set CONFIG_SPW_RXFIFO32 0 set CONFIG_SPW_RXFIFO64 0 set CONFIG_SPW_RMAP 0 -set tmpvar_35 "(not set)" +set tmpvar_37 "(not set)" set CONFIG_SPW_RMAPBUF2 0 set CONFIG_SPW_RMAPBUF4 0 set CONFIG_SPW_RMAPBUF6 0 @@ -5231,22 +5561,22 @@ set CONFIG_SPW_RXUNAL 0 set CONFIG_SPW_FT 0 set CONFIG_SPW_NETLIST 0 set CONFIG_SPW_PORTS 1 -set tmpvar_36 "(not set)" +set tmpvar_38 "(not set)" set CONFIG_SPW_GRSPW1 0 set CONFIG_SPW_GRSPW2 0 set CONFIG_SPW_DMACHAN 1 set CONFIG_SPW_RTSAME 0 -set tmpvar_37 "(not set)" +set tmpvar_39 "(not set)" set CONFIG_SPW_RX_SDR 0 set CONFIG_SPW_RX_DDR 0 set CONFIG_SPW_RX_XOR 0 set CONFIG_SPW_RX_AFLEX 0 -set tmpvar_38 "(not set)" +set tmpvar_40 "(not set)" set CONFIG_SPW_TX_SDR 0 set CONFIG_SPW_TX_DDR 0 set CONFIG_SPW_TX_AFLEX 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_39 "(not set)" +set tmpvar_41 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5254,7 +5584,7 @@ set CONFIG_UA1_FIFO8 0 set CONFIG_UA1_FIFO16 0 set CONFIG_UA1_FIFO32 0 set CONFIG_UART2_ENABLE 0 -set tmpvar_40 "(not set)" +set tmpvar_42 "(not set)" set CONFIG_UA2_FIFO1 0 set CONFIG_UA2_FIFO2 0 set CONFIG_UA2_FIFO4 0 @@ -5332,7 +5662,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5342,6 +5673,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5380,6 +5713,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5392,9 +5726,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5408,239 +5743,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5685,13 +6170,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5720,29 +6205,29 @@ proc writeconfig {file1 file2} { if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_IOWS $CONFIG_SRCTRL_IOWS $notmod } global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_RMW $CONFIG_SRCTRL_RMW [list $notmod] 2 } - global tmpvar_27 + global tmpvar_29 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } - if { $tmpvar_27 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } - if { $tmpvar_27 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} - global tmpvar_28 + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } + if { $tmpvar_29 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } + if { $tmpvar_29 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} + global tmpvar_30 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } - if { $tmpvar_28 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } - if { $tmpvar_28 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } - if { $tmpvar_28 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } - if { $tmpvar_28 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } - if { $tmpvar_28 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } - if { $tmpvar_28 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } - if { $tmpvar_28 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } - if { $tmpvar_28 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } + if { $tmpvar_30 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } + if { $tmpvar_30 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } + if { $tmpvar_30 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } + if { $tmpvar_30 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } + if { $tmpvar_30 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } + if { $tmpvar_30 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } + if { $tmpvar_30 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } + if { $tmpvar_30 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } + if { $tmpvar_30 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } + if { $tmpvar_30 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_ROMASEL $CONFIG_SRCTRL_ROMASEL $notmod } write_comment $cfg $autocfg "Leon2 memory controller " @@ -5786,27 +6271,27 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_30 + global tmpvar_32 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_32 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "CAN " global CONFIG_CAN_ENABLE write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 @@ -5832,14 +6317,14 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_VENDORID $CONFIG_PCI_VENDORID $notmod } global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_DEVICEID $CONFIG_PCI_DEVICEID $notmod } - global tmpvar_31 + global tmpvar_33 if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then { - if { $tmpvar_31 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } - if { $tmpvar_31 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} + if { $tmpvar_33 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } + if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_33 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } + if { $tmpvar_33 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_HADDR $CONFIG_PCI_HADDR $notmod } global CONFIG_PCI_ARBITER @@ -5850,37 +6335,37 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_ARBITER == 1)} then {write_int $cfg $autocfg CONFIG_PCI_ARBITER_NREQ $CONFIG_PCI_ARBITER_NREQ $notmod } global CONFIG_PCI_TRACE write_tristate $cfg $autocfg CONFIG_PCI_TRACE $CONFIG_PCI_TRACE [list $notmod] 2 - global tmpvar_32 + global tmpvar_34 if {($CONFIG_PCI_TRACE == 1)} then { - if { $tmpvar_32 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } - if { $tmpvar_32 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } - if { $tmpvar_32 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } - if { $tmpvar_32 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } - if { $tmpvar_32 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} + if { $tmpvar_34 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } + if { $tmpvar_34 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } + if { $tmpvar_34 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } + if { $tmpvar_34 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } + if { $tmpvar_34 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} write_comment $cfg $autocfg "Spacewire " global CONFIG_SPW_ENABLE write_tristate $cfg $autocfg CONFIG_SPW_ENABLE $CONFIG_SPW_ENABLE [list $notmod] 2 global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_NUM $CONFIG_SPW_NUM $notmod } - global tmpvar_33 + global tmpvar_35 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_33 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } - if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } - if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } - if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} - global tmpvar_34 + if { $tmpvar_35 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } + if { $tmpvar_35 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } + if { $tmpvar_35 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } + if { $tmpvar_35 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} + global tmpvar_36 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_34 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } - if { $tmpvar_34 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } - if { $tmpvar_34 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} + if { $tmpvar_36 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } + if { $tmpvar_36 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } + if { $tmpvar_36 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAP $CONFIG_SPW_RMAP [list $notmod] 2 } - global tmpvar_35 + global tmpvar_37 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then { - if { $tmpvar_35 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } - if { $tmpvar_35 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } - if { $tmpvar_35 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } - if { $tmpvar_35 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} + if { $tmpvar_37 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } + if { $tmpvar_37 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } + if { $tmpvar_37 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } + if { $tmpvar_37 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAPCRC $CONFIG_SPW_RMAPCRC [list $notmod] 2 } global CONFIG_SPW_RXUNAL @@ -5891,47 +6376,47 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_NETLIST $CONFIG_SPW_NETLIST [list $notmod] 2 } global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_PORTS $CONFIG_SPW_PORTS $notmod } - global tmpvar_36 + global tmpvar_38 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_36 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } - if { $tmpvar_36 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} + if { $tmpvar_38 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } + if { $tmpvar_38 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} global CONFIG_SPW_DMACHAN global CONFIG_SPW_GRSPW2 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_int $cfg $autocfg CONFIG_SPW_DMACHAN $CONFIG_SPW_DMACHAN $notmod } global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RTSAME $CONFIG_SPW_RTSAME [list $notmod] 2 } - global tmpvar_37 + global tmpvar_39 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_37 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } - if { $tmpvar_37 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } - if { $tmpvar_37 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } - if { $tmpvar_37 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} - global tmpvar_38 + if { $tmpvar_39 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } + if { $tmpvar_39 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } + if { $tmpvar_39 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } + if { $tmpvar_39 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} + global tmpvar_40 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_38 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } - if { $tmpvar_38 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } - if { $tmpvar_38 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} + if { $tmpvar_40 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } + if { $tmpvar_40 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } + if { $tmpvar_40 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_39 + global tmpvar_41 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_39 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_39 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_39 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_39 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_39 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_39 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_41 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_41 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_41 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_41 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_41 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_41 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_UART2_ENABLE write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2 - global tmpvar_40 + global tmpvar_42 if {($CONFIG_UART2_ENABLE == 1)} then { - if { $tmpvar_40 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_40 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_40 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_40 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_40 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_40 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_42 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_42 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_42 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_42 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_42 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_42 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -6004,7 +6489,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -6014,6 +6500,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -6032,8 +6520,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -6116,11 +6609,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -6141,6 +6636,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -6296,8 +6795,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -6316,6 +6817,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -6356,458 +6861,484 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "1" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "1" global CONFIG_SRCTRL_SRBANKS1 - if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_29 "1" } global CONFIG_SRCTRL_SRBANKS2 - if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_29 "2" } global CONFIG_SRCTRL_SRBANKS3 - if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_27 "3" } + if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_29 "3" } global CONFIG_SRCTRL_SRBANKS4 - if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_29 "4" } global CONFIG_SRCTRL_SRBANKS5 - if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_27 "5" } - global tmpvar_28 - set tmpvar_28 "0" + if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_29 "5" } + global tmpvar_30 + set tmpvar_30 "0" global CONFIG_SRCTRL_BANKSZ0 - if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_30 "8" } global CONFIG_SRCTRL_BANKSZ1 - if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_30 "16" } global CONFIG_SRCTRL_BANKSZ2 - if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_30 "32" } global CONFIG_SRCTRL_BANKSZ3 - if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_28 "64" } + if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_30 "64" } global CONFIG_SRCTRL_BANKSZ4 - if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_28 "128" } + if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_30 "128" } global CONFIG_SRCTRL_BANKSZ5 - if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_28 "256" } + if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_30 "256" } global CONFIG_SRCTRL_BANKSZ6 - if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_28 "512" } + if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_30 "512" } global CONFIG_SRCTRL_BANKSZ7 - if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_28 "1024" } + if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_30 "1024" } global CONFIG_SRCTRL_BANKSZ8 - if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_28 "2048" } + if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_30 "2048" } global CONFIG_SRCTRL_BANKSZ9 - if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_28 "4096" } + if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_30 "4096" } global CONFIG_SRCTRL_BANKSZ10 - if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_28 "8192" } + if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_30 "8192" } global CONFIG_SRCTRL_BANKSZ11 - if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_28 "16384" } + if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_30 "16384" } global CONFIG_SRCTRL_BANKSZ12 - if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_28 "32768" } + if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_30 "32768" } global CONFIG_SRCTRL_BANKSZ13 - if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_28 "65536" } - global tmpvar_29 - set tmpvar_29 "4" + if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_30 "65536" } + global tmpvar_31 + set tmpvar_31 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_31 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_31 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_31 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_31 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_31 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_31 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } - global tmpvar_30 - set tmpvar_30 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_31 "64" } + global tmpvar_32 + set tmpvar_32 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_32 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_32 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_32 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_32 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } - global tmpvar_31 - set tmpvar_31 "8" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_32 "64" } + global tmpvar_33 + set tmpvar_33 "8" global CONFIG_PCI_FIFO0 - if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_31 "None" } + if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_33 "None" } global CONFIG_PCI_FIFO8 - if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_33 "8" } global CONFIG_PCI_FIFO16 - if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_33 "16" } global CONFIG_PCI_FIFO32 - if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_31 "32" } + if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_33 "32" } global CONFIG_PCI_FIFO64 - if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_31 "64" } + if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_33 "64" } global CONFIG_PCI_FIFO128 - if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_31 "128" } - global tmpvar_32 - set tmpvar_32 "256" + if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_33 "128" } + global tmpvar_34 + set tmpvar_34 "256" global CONFIG_PCI_TRACE256 - if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_32 "256" } + if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_34 "256" } global CONFIG_PCI_TRACE512 - if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_32 "512" } + if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_34 "512" } global CONFIG_PCI_TRACE1024 - if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_32 "1024" } + if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_34 "1024" } global CONFIG_PCI_TRACE2048 - if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_32 "2048" } + if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_34 "2048" } global CONFIG_PCI_TRACE4096 - if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_32 "4096" } - global tmpvar_33 - set tmpvar_33 "16" + if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_34 "4096" } + global tmpvar_35 + set tmpvar_35 "16" global CONFIG_SPW_AHBFIFO4 - if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_33 "4" } + if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_35 "4" } global CONFIG_SPW_AHBFIFO8 - if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_33 "8" } + if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_35 "8" } global CONFIG_SPW_AHBFIFO16 - if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_33 "16" } + if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_35 "16" } global CONFIG_SPW_AHBFIFO32 - if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_33 "32" } - global tmpvar_34 - set tmpvar_34 "16" + if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_35 "32" } + global tmpvar_36 + set tmpvar_36 "16" global CONFIG_SPW_RXFIFO16 - if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_34 "16" } + if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_36 "16" } global CONFIG_SPW_RXFIFO32 - if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_34 "32" } + if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_36 "32" } global CONFIG_SPW_RXFIFO64 - if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_34 "64" } - global tmpvar_35 - set tmpvar_35 "64" + if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_36 "64" } + global tmpvar_37 + set tmpvar_37 "64" global CONFIG_SPW_RMAPBUF2 - if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_35 "64" } + if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_37 "64" } global CONFIG_SPW_RMAPBUF4 - if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_35 "128" } + if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_37 "128" } global CONFIG_SPW_RMAPBUF6 - if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_35 "192" } + if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_37 "192" } global CONFIG_SPW_RMAPBUF8 - if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_35 "256" } - global tmpvar_36 - set tmpvar_36 "2" + if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_37 "256" } + global tmpvar_38 + set tmpvar_38 "2" global CONFIG_SPW_GRSPW1 - if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_36 "1" } + if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_38 "1" } global CONFIG_SPW_GRSPW2 - if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_36 "2" } - global tmpvar_37 - set tmpvar_37 "DDR" + if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_38 "2" } + global tmpvar_39 + set tmpvar_39 "DDR" global CONFIG_SPW_RX_SDR - if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_37 "SDR" } + if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_39 "SDR" } global CONFIG_SPW_RX_DDR - if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_37 "DDR" } + if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_39 "DDR" } global CONFIG_SPW_RX_XOR - if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_37 "Xor" } + if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_39 "Xor" } global CONFIG_SPW_RX_AFLEX - if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_37 "Aeroflex" } - global tmpvar_38 - set tmpvar_38 "SDR" + if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_39 "Aeroflex" } + global tmpvar_40 + set tmpvar_40 "SDR" global CONFIG_SPW_TX_SDR - if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_38 "SDR" } + if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_40 "SDR" } global CONFIG_SPW_TX_DDR - if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_38 "DDR" } + if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_40 "DDR" } global CONFIG_SPW_TX_AFLEX - if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_38 "Aeroflex" } - global tmpvar_39 - set tmpvar_39 "1" + if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_40 "Aeroflex" } + global tmpvar_41 + set tmpvar_41 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_39 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_41 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_39 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_41 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_39 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_41 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_39 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_41 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_39 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_41 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_39 "32" } - global tmpvar_40 - set tmpvar_40 "1" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_41 "32" } + global tmpvar_42 + set tmpvar_42 "1" global CONFIG_UA2_FIFO1 - if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_40 "1" } + if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_42 "1" } global CONFIG_UA2_FIFO2 - if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_40 "2" } + if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_42 "2" } global CONFIG_UA2_FIFO4 - if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_40 "4" } + if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_42 "4" } global CONFIG_UA2_FIFO8 - if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_40 "8" } + if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_42 "8" } global CONFIG_UA2_FIFO16 - if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_40 "16" } + if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_42 "16" } global CONFIG_UA2_FIFO32 - if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_40 "32" } + if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_42 "32" } } diff --git a/designs/leon3-clock-gate/leon3mp.vhd b/designs/leon3-clock-gate/leon3mp.vhd index ef276551..d10e2c6c 100644 --- a/designs/leon3-clock-gate/leon3mp.vhd +++ b/designs/leon3-clock-gate/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-clock-gate/testbench.vhd b/designs/leon3-clock-gate/testbench.vhd index efd41511..b031e9c1 100644 --- a/designs/leon3-clock-gate/testbench.vhd +++ b/designs/leon3-clock-gate/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-clock-gate/tkconfig.h b/designs/leon3-clock-gate/tkconfig.h index f47757f7..b839a88a 100644 --- a/designs/leon3-clock-gate/tkconfig.h +++ b/designs/leon3-clock-gate/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-digilent-xc3s1000/Makefile b/designs/leon3-digilent-xc3s1000/Makefile index 542747ea..b7ada8f0 100644 --- a/designs/leon3-digilent-xc3s1000/Makefile +++ b/designs/leon3-digilent-xc3s1000/Makefile @@ -19,10 +19,10 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF usbhc \ - tmtc openchip micron hynix cypress ihp gleichmann opencores spw + tmtc openchip micron hynix cypress ihp opencores spw DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest \ - spacewire ddr can usb ata grusbhc haps coremp7 hcan \ - leon4 leon4b64 l2cache slink ascs pwm gr1553b iommu + spacewire ddr can usb grusbhc hcan \ + leon4 leon4v0 l2cache slink ascs pwm gr1553b iommu FILESKIP = grcan.vhd i2cmst.vhd include $(GRLIB)/bin/Makefile diff --git a/designs/leon3-digilent-xc3s1000/ahbrom.vhd b/designs/leon3-digilent-xc3s1000/ahbrom.vhd index 6962b19f..5b8837dc 100644 --- a/designs/leon3-digilent-xc3s1000/ahbrom.vhd +++ b/designs/leon3-digilent-xc3s1000/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-digilent-xc3s1000/config.help b/designs/leon3-digilent-xc3s1000/config.help index a00172ae..ebf7cf80 100644 --- a/designs/leon3-digilent-xc3s1000/config.help +++ b/designs/leon3-digilent-xc3s1000/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-digilent-xc3s1000/lconfig.tk b/designs/leon3-digilent-xc3s1000/lconfig.tk index 1d11f56e..62d15276 100755 --- a/designs/leon3-digilent-xc3s1000/lconfig.tk +++ b/designs/leon3-digilent-xc3s1000/lconfig.tk @@ -752,7 +752,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -762,7 +763,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -905,8 +908,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -925,6 +930,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1014,9 +1023,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1070,10 +1080,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1119,14 +1130,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1199,13 +1212,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1245,22 +1266,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1317,21 +1606,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1378,36 +1667,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1415,48 +1705,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1512,27 +1803,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1573,16 +1864,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1591,34 +1883,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1675,92 +1968,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1768,18 +2061,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1820,52 +2113,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1873,162 +2167,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2084,45 +2379,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2162,18 +2459,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2181,55 +2479,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2286,24 +2589,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2343,17 +2646,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2361,37 +2665,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2447,16 +2752,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2504,9 +2816,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2528,21 +2838,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -3310,16 +3625,16 @@ proc menu16 {w title} { hex $w.config.f 16 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 16 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 16 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_26 - minimenu $w.config.f 16 4 "AHB RAM size (Kbyte)" tmpvar_26 CONFIG_AHBRAM_SZ1 + global tmpvar_28 + minimenu $w.config.f 16 4 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_26 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_26 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 16 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3381,21 +3696,21 @@ proc update_define_menu16 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_26 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_26 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3454,15 +3769,15 @@ proc menu17 {w title} { bool $w.config.f 17 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_27 - minimenu $w.config.f 17 1 "UART1 FIFO depth" tmpvar_27 CONFIG_UA1_FIFO1 + global tmpvar_29 + minimenu $w.config.f 17 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 17 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 17 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3551,19 +3866,19 @@ proc update_menu17 {} { proc update_define_menu17 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_27 + global tmpvar_29 global CONFIG_UA1_FIFO1 - if {$tmpvar_27 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_27 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_27 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_27 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_27 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_27 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3841,7 +4156,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -3851,6 +4167,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -3875,6 +4193,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -3887,14 +4206,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -3907,27 +4231,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -3937,17 +4261,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -3959,12 +4283,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -3974,10 +4298,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -3988,7 +4312,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4000,26 +4324,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4027,27 +4353,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4080,7 +4410,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4090,7 +4420,7 @@ set CONFIG_AHBRAM_SZ32 0 set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_UART1_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4170,7 +4500,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4180,6 +4511,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4218,6 +4551,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4230,9 +4564,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4246,239 +4581,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4550,28 +5035,28 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_26 + global tmpvar_28 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_26 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_26 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "UART, timer, I/O port and interrupt controller" global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4651,7 +5136,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4661,6 +5147,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4679,8 +5167,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -4763,11 +5256,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -4788,6 +5283,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0 global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0 @@ -4877,8 +5376,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -4897,6 +5398,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -4937,300 +5442,326 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "4" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_26 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_26 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_26 "64" } - global tmpvar_27 - set tmpvar_27 "1" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } + global tmpvar_29 + set tmpvar_29 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } } diff --git a/designs/leon3-digilent-xc3s1000/leon3mp.vhd b/designs/leon3-digilent-xc3s1000/leon3mp.vhd index f461e454..220a031e 100644 --- a/designs/leon3-digilent-xc3s1000/leon3mp.vhd +++ b/designs/leon3-digilent-xc3s1000/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-digilent-xc3s1000/testbench.vhd b/designs/leon3-digilent-xc3s1000/testbench.vhd index d5a646e7..ab7786fb 100644 --- a/designs/leon3-digilent-xc3s1000/testbench.vhd +++ b/designs/leon3-digilent-xc3s1000/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-digilent-xc3s1000/tkconfig.h b/designs/leon3-digilent-xc3s1000/tkconfig.h index 93aafaf9..e1ad096a 100644 --- a/designs/leon3-digilent-xc3s1000/tkconfig.h +++ b/designs/leon3-digilent-xc3s1000/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-digilent-xc3s1000/vga_clkgen.vhd b/designs/leon3-digilent-xc3s1000/vga_clkgen.vhd index 6f8a74d3..54adefa8 100644 --- a/designs/leon3-digilent-xc3s1000/vga_clkgen.vhd +++ b/designs/leon3-digilent-xc3s1000/vga_clkgen.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-digilent-xc3s1600e/Makefile b/designs/leon3-digilent-xc3s1600e/Makefile index 4368a002..1ab67f58 100644 --- a/designs/leon3-digilent-xc3s1600e/Makefile +++ b/designs/leon3-digilent-xc3s1600e/Makefile @@ -23,9 +23,9 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann opencores usbhc spw + tmtc openchip ihp opencores usbhc spw DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - usb grusbhc spacewire ata synplicity haps coremp7 hcan leon4 leon4b64 \ + usb grusbhc spacewire synplicity hcan leon4 leon4v0 \ l2cache slink ascs pwm hynix gr1553b iommu FILESKIP = grcan.vhd i2cmst.vhd diff --git a/designs/leon3-digilent-xc3s1600e/ahbrom.vhd b/designs/leon3-digilent-xc3s1600e/ahbrom.vhd index a61a155a..2091c411 100644 --- a/designs/leon3-digilent-xc3s1600e/ahbrom.vhd +++ b/designs/leon3-digilent-xc3s1600e/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-digilent-xc3s1600e/config.help b/designs/leon3-digilent-xc3s1600e/config.help index ff755148..47476586 100644 --- a/designs/leon3-digilent-xc3s1600e/config.help +++ b/designs/leon3-digilent-xc3s1600e/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-digilent-xc3s1600e/lconfig.tk b/designs/leon3-digilent-xc3s1600e/lconfig.tk index b4da86fa..0bc5a5f8 100755 --- a/designs/leon3-digilent-xc3s1600e/lconfig.tk +++ b/designs/leon3-digilent-xc3s1600e/lconfig.tk @@ -754,7 +754,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -764,7 +765,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -907,8 +910,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -927,6 +932,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1016,9 +1025,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1072,10 +1082,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1121,14 +1132,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1201,13 +1214,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1247,22 +1268,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1319,21 +1608,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1380,36 +1669,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1417,48 +1707,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1514,27 +1805,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1575,16 +1866,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1593,34 +1885,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1677,92 +1970,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1770,18 +2063,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1822,52 +2115,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1875,162 +2169,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2086,45 +2381,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2164,18 +2461,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2183,55 +2481,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2288,24 +2591,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2345,17 +2648,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2363,37 +2667,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2449,16 +2754,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2506,9 +2818,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2530,21 +2840,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2853,14 +3168,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2934,17 +3249,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3520,16 +3835,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3591,21 +3906,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3665,14 +3980,14 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 18 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3726,17 +4041,17 @@ proc update_define_menu18 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3792,15 +4107,15 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3889,19 +4204,19 @@ proc update_menu19 {} { proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4179,7 +4494,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4189,6 +4505,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4213,6 +4531,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4225,14 +4544,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4245,27 +4569,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4275,17 +4599,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4297,12 +4621,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4312,10 +4636,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4326,7 +4650,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4338,26 +4662,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4365,27 +4691,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4406,7 +4736,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4438,7 +4768,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4449,14 +4779,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4536,7 +4866,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4546,6 +4877,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4584,6 +4917,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4596,9 +4930,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4612,239 +4947,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4889,13 +5374,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -4960,38 +5445,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5071,7 +5556,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5081,6 +5567,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5099,8 +5587,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5183,11 +5676,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5208,6 +5703,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5307,8 +5806,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5327,6 +5828,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5367,324 +5872,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-digilent-xc3s1600e/leon3mp.vhd b/designs/leon3-digilent-xc3s1600e/leon3mp.vhd index e487cf97..5576b787 100644 --- a/designs/leon3-digilent-xc3s1600e/leon3mp.vhd +++ b/designs/leon3-digilent-xc3s1600e/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-digilent-xc3s1600e/testbench.vhd b/designs/leon3-digilent-xc3s1600e/testbench.vhd index a9653dea..5eb23b4c 100644 --- a/designs/leon3-digilent-xc3s1600e/testbench.vhd +++ b/designs/leon3-digilent-xc3s1600e/testbench.vhd @@ -1,6 +1,10 @@ ----------------------------------------------------------------------------- -- LEON3 Demonstration design test bench -- Copyright (C) 2004 Jiri Gaisler, Gaisler Research +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -11,6 +15,10 @@ -- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------ -- modified by Thomas Ameseder, Gleichmann Electronics 2004, 2005 to -- support the use of an external AHB slave and different HPE board versions diff --git a/designs/leon3-digilent-xc3s1600e/tkconfig.h b/designs/leon3-digilent-xc3s1600e/tkconfig.h index ece231a4..bbf7c9b6 100644 --- a/designs/leon3-digilent-xc3s1600e/tkconfig.h +++ b/designs/leon3-digilent-xc3s1600e/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-ge-hpe-mini-lattice/.config b/designs/leon3-digilent-xc7z020/.config old mode 100755 new mode 100644 similarity index 66% rename from designs/leon3-ge-hpe-mini-lattice/.config rename to designs/leon3-digilent-xc7z020/.config index aec65dac..36215fbc --- a/designs/leon3-ge-hpe-mini-lattice/.config +++ b/designs/leon3-digilent-xc7z020/.config @@ -31,7 +31,7 @@ # CONFIG_SYN_EASIC45 is not set # CONFIG_SYN_IHP25 is not set # CONFIG_SYN_IHP25RH is not set -CONFIG_SYN_LATTICE=y +# CONFIG_SYN_LATTICE is not set # CONFIG_SYN_ECLIPSE is not set # CONFIG_SYN_PEREGRINE is not set # CONFIG_SYN_RH_LIB18T is not set @@ -40,7 +40,8 @@ CONFIG_SYN_LATTICE=y # CONFIG_SYN_TM65GPLUS is not set # CONFIG_SYN_TSMC90 is not set # CONFIG_SYN_UMC is not set -# CONFIG_SYN_SPARTAN2 is not set +# CONFIG_SYN_ARTIX7 is not set +# CONFIG_SYN_KINTEX7 is not set # CONFIG_SYN_SPARTAN3 is not set # CONFIG_SYN_SPARTAN3E is not set # CONFIG_SYN_SPARTAN6 is not set @@ -50,8 +51,10 @@ CONFIG_SYN_LATTICE=y # CONFIG_SYN_VIRTEX4 is not set # CONFIG_SYN_VIRTEX5 is not set # CONFIG_SYN_VIRTEX6 is not set -CONFIG_SYN_INFER_RAM=y -CONFIG_SYN_INFER_PADS=y +# CONFIG_SYN_VIRTEX7 is not set +CONFIG_SYN_ZYNQ7000=y +# CONFIG_SYN_INFER_RAM is not set +# CONFIG_SYN_INFER_PADS is not set # CONFIG_SYN_NO_ASYNC is not set # CONFIG_SYN_SCAN is not set @@ -62,36 +65,49 @@ CONFIG_SYN_INFER_PADS=y # CONFIG_CLK_HCLKBUF is not set # CONFIG_CLK_UT130HBD is not set # CONFIG_CLK_ALTDLL is not set -CONFIG_CLK_LATDLL=y +# CONFIG_CLK_LATDLL is not set # CONFIG_CLK_PRO3PLL is not set # CONFIG_CLK_PRO3EPLL is not set # CONFIG_CLK_PRO3LPLL is not set # CONFIG_CLK_FUSPLL is not set # CONFIG_CLK_LIB18T is not set # CONFIG_CLK_RHUMC is not set +CONFIG_CLK_CLKPLLE2=y # CONFIG_CLK_CLKDLL is not set # CONFIG_CLK_DCM is not set -CONFIG_CLK_MUL=1 -CONFIG_CLK_DIV=1 +CONFIG_CLK_MUL=8 +CONFIG_CLK_DIV=32 # CONFIG_PCI_SYSCLK is not set -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 # # Processor # +CONFIG_LEON3=y +CONFIG_PROC_NUM=1 +# CONFIG_LEON3_MIN is not set +# CONFIG_LEON3_GP is not set +# CONFIG_LEON3_HP is not set +CONFIG_LEON3_CUSTOM=y # # Integer unit # CONFIG_IU_NWINDOWS=8 -# CONFIG_IU_V8MULDIV is not set -# CONFIG_IU_BP is not set -# CONFIG_IU_SVT is not set +CONFIG_IU_V8MULDIV=y +# CONFIG_IU_MUL_LATENCY_2 is not set +# CONFIG_IU_MUL_LATENCY_4 is not set +CONFIG_IU_MUL_LATENCY_5=y +# CONFIG_IU_MUL_MAC is not set +CONFIG_IU_MUL_INFERRED=y +# CONFIG_IU_MUL_MODGEN is not set +# CONFIG_IU_MUL_TECHSPEC is not set +# CONFIG_IU_MUL_DW is not set +CONFIG_IU_BP=y +CONFIG_IU_SVT=y # CONFIG_NOTAG is not set CONFIG_IU_LDELAY=2 -CONFIG_IU_WATCHPOINTS=0 -# CONFIG_PWD is not set +CONFIG_IU_WATCHPOINTS=2 +CONFIG_PWD=y CONFIG_IU_RSTADDR=00000 # @@ -103,24 +119,30 @@ CONFIG_IU_RSTADDR=00000 # Cache system # CONFIG_ICACHE_ENABLE=y -CONFIG_ICACHE_ASSO1=y -# CONFIG_ICACHE_ASSO2 is not set +# CONFIG_ICACHE_ASSO1 is not set +CONFIG_ICACHE_ASSO2=y # CONFIG_ICACHE_ASSO3 is not set # CONFIG_ICACHE_ASSO4 is not set # CONFIG_ICACHE_SZ1 is not set # CONFIG_ICACHE_SZ2 is not set -# CONFIG_ICACHE_SZ4 is not set -CONFIG_ICACHE_SZ8=y +CONFIG_ICACHE_SZ4=y +# CONFIG_ICACHE_SZ8 is not set # CONFIG_ICACHE_SZ16 is not set # CONFIG_ICACHE_SZ32 is not set # CONFIG_ICACHE_SZ64 is not set # CONFIG_ICACHE_SZ128 is not set # CONFIG_ICACHE_SZ256 is not set -# CONFIG_ICACHE_LZ16 is not set -CONFIG_ICACHE_LZ32=y +CONFIG_ICACHE_LZ16=y +# CONFIG_ICACHE_LZ32 is not set +CONFIG_ICACHE_ALGORND=y +# CONFIG_ICACHE_ALGODIR is not set +# CONFIG_ICACHE_ALGOLRR is not set +# CONFIG_ICACHE_ALGOLRU is not set +# CONFIG_ICACHE_LOCK is not set +# CONFIG_ICACHE_LRAM is not set CONFIG_DCACHE_ENABLE=y -CONFIG_DCACHE_ASSO1=y -# CONFIG_DCACHE_ASSO2 is not set +# CONFIG_DCACHE_ASSO1 is not set +CONFIG_DCACHE_ASSO2=y # CONFIG_DCACHE_ASSO3 is not set # CONFIG_DCACHE_ASSO4 is not set # CONFIG_DCACHE_SZ1 is not set @@ -134,35 +156,21 @@ CONFIG_DCACHE_SZ4=y # CONFIG_DCACHE_SZ256 is not set CONFIG_DCACHE_LZ16=y # CONFIG_DCACHE_LZ32 is not set +CONFIG_DCACHE_ALGORND=y +# CONFIG_DCACHE_ALGODIR is not set +# CONFIG_DCACHE_ALGOLRR is not set +# CONFIG_DCACHE_ALGOLRU is not set +# CONFIG_DCACHE_LOCK is not set CONFIG_DCACHE_SNOOP=y CONFIG_DCACHE_SNOOP_FAST=y CONFIG_DCACHE_SNOOP_SEPTAG=y CONFIG_CACHE_FIXED=0 +# CONFIG_DCACHE_LRAM is not set # # MMU # -CONFIG_MMU_ENABLE=y -# CONFIG_MMU_COMBINED is not set -CONFIG_MMU_SPLIT=y -CONFIG_MMU_REPARRAY=y -# CONFIG_MMU_REPINCREMENT is not set -# CONFIG_MMU_I2 is not set -# CONFIG_MMU_I4 is not set -CONFIG_MMU_I8=y -# CONFIG_MMU_I16 is not set -# CONFIG_MMU_I32 is not set -# CONFIG_MMU_D2 is not set -# CONFIG_MMU_D4 is not set -CONFIG_MMU_D8=y -# CONFIG_MMU_D16 is not set -# CONFIG_MMU_D32 is not set -CONFIG_MMU_FASTWB=y -CONFIG_MMU_PAGE_4K=y -# CONFIG_MMU_PAGE_8K is not set -# CONFIG_MMU_PAGE_16K is not set -# CONFIG_MMU_PAGE_32K is not set -# CONFIG_MMU_PAGE_PROG is not set +# CONFIG_MMU_ENABLE is not set # # Debug Support Unit @@ -196,7 +204,7 @@ CONFIG_DSU_ATRACESZ1=y # AMBA configuration # CONFIG_AHB_DEFMST=0 -CONFIG_AHB_RROBIN=y +# CONFIG_AHB_RROBIN is not set # CONFIG_AHB_SPLIT is not set # CONFIG_AHB_FPNPEN is not set CONFIG_AHB_IOADDR=FFF @@ -207,77 +215,39 @@ CONFIG_APB_HADDR=800 # # Debug Link # -CONFIG_DSU_UART=y -CONFIG_DSU_ETH=y -# CONFIG_DSU_ETHSZ1 is not set -CONFIG_DSU_ETHSZ2=y -# CONFIG_DSU_ETHSZ4 is not set -# CONFIG_DSU_ETHSZ8 is not set -# CONFIG_DSU_ETHSZ16 is not set -CONFIG_DSU_IPMSB=C0A8 -CONFIG_DSU_IPLSB=0040 -CONFIG_DSU_ETHMSB=020000 -CONFIG_DSU_ETHLSB=000020 -# CONFIG_DSU_ETH_PROG is not set -# CONFIG_DSU_ETH_DIS is not set +CONFIG_DSU_JTAG=y # # Peripherals # # -# Memory controllers -# - -# -# 8/32-bit PROM/SRAM controller -# -# CONFIG_SRCTRL is not set - -# -# Leon2 memory controller -# -CONFIG_MCTRL_LEON2=y -# CONFIG_MCTRL_8BIT is not set -# CONFIG_MCTRL_16BIT is not set -# CONFIG_MCTRL_5CS is not set -# CONFIG_MCTRL_SDRAM is not set - -# -# Multi-port DDR controller +# Memory controller # -# CONFIG_DDRMP is not set +# CONFIG_AHBSTAT_ENABLE is not set # # On-chip RAM/ROM # # CONFIG_AHBROM_ENABLE is not set -# CONFIG_AHBRAM_ENABLE is not set - -# -# Ethernet -# -CONFIG_GRETH_ENABLE=y -# CONFIG_GRETH_GIGA is not set -# CONFIG_GRETH_FIFO4 is not set -# CONFIG_GRETH_FIFO8 is not set -# CONFIG_GRETH_FIFO16 is not set -CONFIG_GRETH_FIFO32=y -# CONFIG_GRETH_FIFO64 is not set - -# -# ATA -# -# CONFIG_ATA_ENABLE is not set +CONFIG_AHBRAM_ENABLE=y +CONFIG_AHBRAM_SZ1=y +# CONFIG_AHBRAM_SZ2 is not set +# CONFIG_AHBRAM_SZ4 is not set +# CONFIG_AHBRAM_SZ8 is not set +# CONFIG_AHBRAM_SZ16 is not set +# CONFIG_AHBRAM_SZ32 is not set +# CONFIG_AHBRAM_SZ64 is not set +CONFIG_AHBRAM_START=A00 # # UARTs, timers and irq control # CONFIG_UART1_ENABLE=y -CONFIG_UA1_FIFO1=y +# CONFIG_UA1_FIFO1 is not set # CONFIG_UA1_FIFO2 is not set # CONFIG_UA1_FIFO4 is not set -# CONFIG_UA1_FIFO8 is not set +CONFIG_UA1_FIFO8=y # CONFIG_UA1_FIFO16 is not set # CONFIG_UA1_FIFO32 is not set CONFIG_IRQ3_ENABLE=y @@ -287,14 +257,11 @@ CONFIG_GPT_NTIM=2 CONFIG_GPT_SW=8 CONFIG_GPT_TW=32 CONFIG_GPT_IRQ=8 -CONFIG_GPT_SEPIRQ=y +# CONFIG_GPT_SEPIRQ is not set # CONFIG_GPT_WDOGEN is not set - -# -# Keybord and VGA interface -# -# CONFIG_KBD_ENABLE is not set -CONFIG_VGA_ENABLE=y +CONFIG_GRGPIO_ENABLE=y +CONFIG_GRGPIO_WIDTH=16 +CONFIG_GRGPIO_IMASK=0000 # # VHDL Debugging diff --git a/designs/leon3-digilent-xc7z020/Makefile b/designs/leon3-digilent-xc7z020/Makefile new file mode 100644 index 00000000..3a9b3b65 --- /dev/null +++ b/designs/leon3-digilent-xc7z020/Makefile @@ -0,0 +1,59 @@ +include .config + +GRLIB=../.. +TOP=leon3mp +BOARD=digilent-zedboard-xc7z020 +DESIGN=leon3-zedboard-xc7z020 +include $(GRLIB)/boards/$(BOARD)/Makefile.inc +DEVICE=$(PART)$(PACKAGE)-$(SPEED) +UCF_PLANAHEAD=$(GRLIB)/boards/$(BOARD)/$(BOARD).ucf + +VHDLSYNFILES= \ + config.vhd ahbrom.vhd leon3mp.vhd + +VHDLSIMFILES= \ + testbench.vhd leon3_zedboard_stub_sim.vhd + +SIMTOP=testbench +BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut +CLEAN=soft-clean +VCOMOPT=-explicit +VLOGOPT= +define+1Gb +define+sg125 +define+x8 +VSIMOPT= -t ps -novopt +notimingchecks $(SIMTOP) +TECHLIBS = secureip unisim + +BOPT=-DRAMSTART=0x00000000 +LDFLAGS=-Wl,-msparcleon0 + +LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ + tmtc openchip ihp usbhc spw gsi cypress hynix \ + spansion leon4 leon4v0 secureip +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci ambatest can \ + usb grusbhc spacewire ascs slink spi hcan \ + leon4 leon4v0 l2cache pwm gr1553b iommu ac97 secureip +FILESKIP = grcan.vhd ddr2.v mobile_ddr.v + +include $(GRLIB)/bin/Makefile +include $(GRLIB)/software/leon3/Makefile + +################## project specific targets ########################## + +all: help-local + +help-local: help + @echo + @echo " -----------------------------------------------------------------------------------------" + @echo " design specific targets:" + @echo + @echo " make program-zedboard : Load Leon3 Design and start clocks" + @echo + +program-zedboard: + @echo "fpga -f ./planAhead/$(DESIGN)/$(DESIGN).runs/impl_1/$(TOP).bit" > ./xmd.ini + @echo "connect arm hw" >> ./xmd.ini + @echo "source ./planAhead/$(DESIGN)/$(DESIGN).sdk/SDK/SDK_Export/hw/ps7_init.tcl" >> ./xmd.ini + @echo "ps7_init" >> ./xmd.ini + @echo "init_user" >> ./xmd.ini + @echo "exit" >> ./xmd.ini + xmd + diff --git a/designs/leon3-digilent-xc7z020/README.txt b/designs/leon3-digilent-xc7z020/README.txt new file mode 100644 index 00000000..25117c13 --- /dev/null +++ b/designs/leon3-digilent-xc7z020/README.txt @@ -0,0 +1,172 @@ +This leon3 design is tailored to the Digilent Zedboard board + +www.zedboard.org + +Simulation and synthesis +------------------------ + +please note that no system test or simulation enviroment are present at the moment +but it should be possible to compile and load the design into modelsim + +To build and load the design into the simulator: + + make vsim + make vsim-launch + +Synthesis will ONLY work with PlanAhead 14.2 installed or newer, and +the XILINX variable properly set in the shell. To synthesize the design, do + + make planAhead + +and then + + make vivado-zedboard + +to program the FPGA. + +Simulation options +------------------ + +N/A + +Design specifics +---------------- + +* Synthesis should be done using PlanAhead 14.2 or newer + +* The Leon3 processor is not able to read/write from/to external + DDR3 interface at the moment. (This will be fixed in future + releases) + +* System reset is mapped to the CPU RESET button + +* DSU break is mapped to GPIO east button + +* LED 0 indicates processor in debug mode + +* LED 1 indicates processor in error mode, execution halted + +* LED 2 UART1 RX + +* LED 3 UART1 TX + +* LED 4 GPIO 11 + +* LED 5 GPIO 12 +5 +* LED 6 GPIO 13 + +* LED 7 GPIO 14 + +* Always program the Zedboard via the make target 'program-zedboard' + +$ make program-zedboard +xmd +Xilinx Microprocessor Debugger (XMD) Engine +Xilinx EDK 14.3 Build EDK_P.40xd +Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. + +XMD% +Programming Bitstream -- ./planAhead/leon3-zedboard-xc7z020/leon3-zedboard-xc7z020.runs/impl_1/leon3mp.bit +Fpga Programming Progress ............10.........20.........30.........40.........50.........60.........70.........80.........90........Done +Successfully downloaded bit file. + +JTAG chain configuration +-------------------------------------------------- +Device ID Code IR Length Part Name + 1 4ba00477 4 Cortex-A9 + 2 03727093 6 XC7Z020 + + +JTAG chain configuration +-------------------------------------------------- +Device ID Code IR Length Part Name + 1 4ba00477 4 Cortex-A9 + 2 03727093 6 XC7Z020 + +CortexA9 Processor Configuration +------------------------------------- +Version.............................0x00000003 +User ID.............................0x00000000 +No of PC Breakpoints................6 +No of Addr/Data Watchpoints.........1 + +Connected to "arm" target. id = 64 +Starting GDB server for "arm" target (id = 64) at TCP port no 1234 +Info: Enabling level shifters and clearing fabric port resets + +* The JTAG DSU interface is enabled and accesible via the JTAG port. + Start grmon with -xilusb to connect. + +* Output from GRMON is: + + grmon -xilusb + + GRMON2 LEON debug monitor v2.0.30-194-g937ff0a internal version + + Copyright (C) 2012 Aeroflex Gaisler - All rights reserved. + For latest updates, go to http://www.gaisler.com/ + Comments or bug-reports to support@gaisler.com + + +Parsing -xilusb +Xilusb: Cable type/rev : 0x3 + JTAG chain (2): xc7x020 zynq7000_arm_dap + +Commands missing help: + debug + + GRLIB build version: 4120 + Detected frequency: 50 MHz + + Component Vendor + LEON3 SPARC V8 Processor Aeroflex Gaisler + JTAG Debug Link Aeroflex Gaisler + AHB/APB Bridge Aeroflex Gaisler + LEON3 Debug Support Unit Aeroflex Gaisler + Single-port AHB SRAM module Aeroflex Gaisler + Xilinx MIG DDR3 Controller Aeroflex Gaisler + Single-port AHB SRAM module Aeroflex Gaisler + Generic UART Aeroflex Gaisler + Multi-processor Interrupt Ctrl. Aeroflex Gaisler + Modular Timer Unit Aeroflex Gaisler + General Purpose I/O port Aeroflex Gaisler + + Use command 'info sys' to print a detailed report of attached cores + +grmon2> info sys + cpu0 Aeroflex Gaisler LEON3 SPARC V8 Processor + AHB Master 0 + ahbjtag0 Aeroflex Gaisler JTAG Debug Link + AHB Master 1 + apbmst0 Aeroflex Gaisler AHB/APB Bridge + AHB: 80000000 - 80100000 + dsu0 Aeroflex Gaisler LEON3 Debug Support Unit + AHB: 90000000 - A0000000 + AHB trace: 64 lines, 32-bit bus + CPU0: win 8, hwbp 2, V8 mul/div, lddel 2 + stack pointer 0x200003f0 + icache 2 * 4 kB, 16 B/line rnd + dcache 2 * 4 kB, 16 B/line rnd + ahbram0 Aeroflex Gaisler Single-port AHB SRAM module + AHB: 20000000 - 20100000 + 32-bit static ram: 1 kB @ 0x20000000 + adev5 Aeroflex Gaisler Xilinx MIG DDR3 Controller + AHB: 00000000 - 08000000 + ahbram1 Aeroflex Gaisler Single-port AHB SRAM module + AHB: A0000000 - A0100000 + 32-bit static ram: 1 kB @ 0xa0000000 + uart0 Aeroflex Gaisler Generic UART + APB: 80000100 - 80000200 + IRQ: 2 + Baudrate 38343 + irqmp0 Aeroflex Gaisler Multi-processor Interrupt Ctrl. + APB: 80000200 - 80000300 + gptimer0 Aeroflex Gaisler Modular Timer Unit + APB: 80000300 - 80000400 + IRQ: 8 + 8-bit scalar, 2 * 32-bit timers, divisor 50 + gpio0 Aeroflex Gaisler General Purpose I/O port + APB: 80000A00 - 80000B00 + +grmon2> diff --git a/designs/basic_passthru/ahbrom.vhd b/designs/leon3-digilent-xc7z020/ahbrom.vhd similarity index 96% rename from designs/basic_passthru/ahbrom.vhd rename to designs/leon3-digilent-xc7z020/ahbrom.vhd index 5040c91a..ac26c7b2 100644 --- a/designs/basic_passthru/ahbrom.vhd +++ b/designs/leon3-digilent-xc7z020/ahbrom.vhd @@ -1,7 +1,7 @@ ---------------------------------------------------------------------------- -- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2010 Aeroflex Gaisler +-- Copyright (C) 2009 Aeroflex Gaisler ---------------------------------------------------------------------------- -- Entity: ahbrom -- File: ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; @@ -182,10 +181,10 @@ begin when 16#00063# => romdata <= X"12800015"; when 16#00064# => romdata <= X"03200000"; when 16#00065# => romdata <= X"05040E00"; - when 16#00066# => romdata <= X"8410A1FF"; + when 16#00066# => romdata <= X"8410A033"; when 16#00067# => romdata <= X"C4204000"; - when 16#00068# => romdata <= X"0539AE03"; - when 16#00069# => romdata <= X"8410A265"; + when 16#00068# => romdata <= X"0539AE1B"; + when 16#00069# => romdata <= X"8410A260"; when 16#0006A# => romdata <= X"C4206004"; when 16#0006B# => romdata <= X"050003FC"; when 16#0006C# => romdata <= X"C4206008"; @@ -198,7 +197,7 @@ begin when 16#00073# => romdata <= X"12800005"; when 16#00074# => romdata <= X"03200000"; when 16#00075# => romdata <= X"0539A81B"; - when 16#00076# => romdata <= X"8410A265"; + when 16#00076# => romdata <= X"8410A260"; when 16#00077# => romdata <= X"C4204000"; when 16#00078# => romdata <= X"05000080"; when 16#00079# => romdata <= X"82100000"; @@ -208,7 +207,7 @@ begin when 16#0007D# => romdata <= X"82004002"; when 16#0007E# => romdata <= X"10BFFFFC"; when 16#0007F# => romdata <= X"8620E001"; - when 16#00080# => romdata <= X"3D103FFF"; + when 16#00080# => romdata <= X"3D1003FF"; when 16#00081# => romdata <= X"BC17A3E0"; when 16#00082# => romdata <= X"BC278001"; when 16#00083# => romdata <= X"9C27A060"; diff --git a/designs/leon3-lattice-latticeECP3/config.help b/designs/leon3-digilent-xc7z020/config.help similarity index 86% rename from designs/leon3-lattice-latticeECP3/config.help rename to designs/leon3-digilent-xc7z020/config.help index 82dd4b1a..2f7bb3b7 100644 --- a/designs/leon3-lattice-latticeECP3/config.help +++ b/designs/leon3-digilent-xc7z020/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -646,11 +679,6 @@ CONFIG_AHB_DTRACE Say yes here to write a trace of all AHB transfers to the simulator console. Has not impact on final netlist. -DSU enable -CONFIG_DSU_UART - Say Y to enable the AHB uart (serial-to-AHB). This is the most - commonly used debug communication link. - JTAG Enable CONFIG_DSU_JTAG Say Y to enable the JTAG debug link (JTAG-to-AHB). Debugging is done @@ -699,81 +727,16 @@ Programmable MAC/IP address CONFIG_DSU_ETH_PROG Say Y to make the LSB 4 bits of the EDCL MAC and IP address configurable using the ethi.edcladdr inputs. -Leon2 memory controller -CONFIG_MCTRL_LEON2 - Say Y here to enable the LEON2 memory controller. The controller - can access PROM, I/O, SRAM and SDRAM. The bus width for PROM - and SRAM is programmable to 8-, 16- or 32-bits. - -8-bit memory support -CONFIG_MCTRL_8BIT - If you say Y here, the PROM/SRAM memory controller will support - 8-bit mode, i.e. operate from 8-bit devices as if they were 32-bit. - Say N to save a few hundred gates. - -16-bit memory support -CONFIG_MCTRL_16BIT - If you say Y here, the PROM/SRAM memory controller will support - 16-bit mode, i.e. operate from 16-bit devices as if they were 32-bit. - Say N to save a few hundred gates. - -Write strobe feedback -CONFIG_MCTRL_WFB - If you say Y here, the PROM/SRAM write strobes (WRITEN, WEN) will - be used to enable the data bus drivers during write cycles. This - will guarantee that the data is still valid on the rising edge of - the write strobe. If you say N, the write strobes and the data bus - drivers will be clocked on the rising edge, potentially creating - a hold time problem in external memory or I/O. However, in all - practical cases, there is enough capacitance in the data bus lines - to keep the value stable for a few (many?) nano-seconds after the - buffers have been disabled, making it safe to say N and remove a - combinational path in the netlist that might be difficult to - analyze. - -Write strobe feedback -CONFIG_MCTRL_5CS - If you say Y here, the 5th (RAMSN[4]) SRAM chip select signal will - be enabled. If you don't intend to use it, say N and save some gates. - -SDRAM controller enable -CONFIG_MCTRL_SDRAM - Say Y here to enabled the PC100/PC133 SDRAM controller. If you don't - intend to use SDRAM, say N and save about 1 kgates. - -SDRAM controller inverted clock -CONFIG_MCTRL_SDRAM_INVCLK - If you say Y here, the SDRAM controller output signals will be delayed - with 1/2 clock in respect to the SDRAM clock. This will allow the used - of an SDRAM clock which in not strictly in phase with the internal - clock. This option will limit the SDRAM frequency to 40 - 50 MHz. - - On FPGA targets without SDRAM clock synchronizations through PLL/DLL, - say Y. On ASIC targets, say N and tell your foundry to balance the - SDRAM clock output. +AHB status register +CONFIG_AHBSTAT_ENABLE + Say Y here to enable the AHB status register (AHBSTAT IP). + The register will latch the AHB address and master index when + an error response is returned by any AHB slave. SDRAM separate address buses -CONFIG_MCTRL_SDRAM_SEPBUS - Say Y here if your SDRAM is connected through separate address - and data buses (SA & SD). This is the case on the GR-CPCI-XC2V6000 - board, but not on the GR-PCI-XC2V3000 or Avnet XCV1500E boards. - -64-bit data bus -CONFIG_MCTRL_SDRAM_BUS64 - Say Y here to enable 64-bit SDRAM data bus. - -Page burst enable -CONFIG_MCTRL_PAGE - Say Y here to enable SDRAM page burst operation. This will implement - read operations using page bursts rather than 8-word bursts and save - about 500 gates (100 LUTs). Note that not all SDRAM supports page - burst, so use this option with care. - -Programmable page burst enable -CONFIG_MCTRL_PROGPAGE - Say Y here to enable programmable SDRAM page burst operation. This - will allow to dynamically enable/disable page burst by setting - bit 17 in MCFG2. +CONFIG_AHBSTAT_NFTSLV + The AHB status register can also latch the AHB address on an external + input. Select here how many of such inputs are required. On-chip rom CONFIG_AHBROM_ENABLE @@ -821,24 +784,6 @@ CONFIG_AHBRAM_START a 1 Mbyte slot at the selected address. Default is A00, corresponding to AHB address 0xA0000000. -Gaisler Ethernet MAC enable -CONFIG_GRETH_ENABLE - Say Y here to enable the Gaisler Research Ethernet MAC . The MAC has - one AHB master interface to read and write packets to memory, and one - APB slave interface for accessing the control registers. - -Gaisler Ethernet 1G MAC enable -CONFIG_GRETH_GIGA - Say Y here to enable the Gaisler Research 1000 Mbit Ethernet MAC . - The 1G MAC is only available in the commercial version of GRLIB, - so do NOT enable it if you are using the GPL version. - -CONFIG_GRETH_FIFO4 - Set the depth of the receive and transmit FIFOs in the MAC core. - The MAC core will perform AHB burst read/writes with half the - size of the FIFO depth. - - UART1 enable CONFIG_UART1_ENABLE Say Y here to enable UART1, or the console UART. This is needed to @@ -916,6 +861,22 @@ Watchdog time-out value CONFIG_GPT_WDOG This value will be loaded in the watchdog timer at reset. +GPIO port +CONFIG_GRGPIO_ENABLE + Say Y here to enable a general purpose I/O port. The port can be + configured from 1 - 32 bits, whith each port signal individually + programmable as input or output. The port signals can also serve + as interrupt inputs. + +GPIO port witdth +CONFIG_GRGPIO_WIDTH + Number of bits in the I/O port. Must be in the range of 1 - 32. + +GPIO interrupt mask +CONFIG_GRGPIO_IMASK + The I/O port interrupt mask defines which bits in the I/O port + should be able to create an interrupt. + UART debugging CONFIG_DEBUG_UART During simulation, the output from the UARTs is printed on the diff --git a/designs/leon3-lattice-latticeECP3/config.in b/designs/leon3-digilent-xc7z020/config.in similarity index 75% rename from designs/leon3-lattice-latticeECP3/config.in rename to designs/leon3-digilent-xc7z020/config.in index 247c1911..9a79b8f4 100644 --- a/designs/leon3-lattice-latticeECP3/config.in +++ b/designs/leon3-digilent-xc7z020/config.in @@ -8,10 +8,10 @@ # #define_bool CONFIG_MCTRL_RMW y -define_bool CONFIG_LEON3FT_PRESENT y -define_bool CONFIG_HAS_SHARED_GRFPU y +#define_bool CONFIG_LEON3FT_PRESENT y +#define_bool CONFIG_HAS_SHARED_GRFPU y -mainmenu_name "LEON3MP LatticeECP3 Versa Design Configuration" +mainmenu_name "LEON3MP Zedboard Design Configuration" mainmenu_option next_comment comment 'Synthesis ' @@ -28,7 +28,6 @@ source lib/grlib/amba/amba.in mainmenu_option next_comment comment 'Debug Link ' - source lib/gaisler/uart/dcom.in source lib/gaisler/jtag/jtag.in source lib/gaisler/net/edcl.in endmenu @@ -37,8 +36,8 @@ mainmenu_option next_comment comment 'Peripherals ' mainmenu_option next_comment - comment 'Memory controllers ' - source lib/esa/memoryctrl/mctrl.in + comment 'Memory controller ' + source lib/gaisler/misc/ahbstat.in endmenu mainmenu_option next_comment @@ -47,16 +46,12 @@ comment 'Peripherals ' source lib/gaisler/misc/ahbram.in endmenu - mainmenu_option next_comment - comment 'Ethernet interface ' - source lib/gaisler/greth/greth.in - endmenu - mainmenu_option next_comment comment 'UARTs, timers and irq control ' source lib/gaisler/uart/uart1.in source lib/gaisler/leon3/irqmp.in source lib/gaisler/misc/gptimer.in + source lib/gaisler/misc/grgpio.in endmenu endmenu diff --git a/designs/leon3-lattice-latticeECP3/config.vhd b/designs/leon3-digilent-xc7z020/config.vhd similarity index 60% rename from designs/leon3-lattice-latticeECP3/config.vhd rename to designs/leon3-digilent-xc7z020/config.vhd index a89e8ffd..c8fa3af0 100644 --- a/designs/leon3-lattice-latticeECP3/config.vhd +++ b/designs/leon3-digilent-xc7z020/config.vhd @@ -3,7 +3,7 @@ ----------------------------------------------------------------------------- -- LEON3 Demonstration design test bench configuration --- Copyright (C) 2012 Aeroflex Gaisler +-- Copyright (C) 2009 Aeroflex Gaisler ------------------------------------------------------------------------------ @@ -12,15 +12,15 @@ use techmap.gencomp.all; package config is -- Technology and synthesis options - constant CFG_FABTECH : integer := lattice; - constant CFG_MEMTECH : integer := inferred; - constant CFG_PADTECH : integer := inferred; + constant CFG_FABTECH : integer := zynq7000; + constant CFG_MEMTECH : integer := zynq7000; + constant CFG_PADTECH : integer := zynq7000; constant CFG_NOASYNC : integer := 0; constant CFG_SCAN : integer := 0; -- Clock generator - constant CFG_CLKTECH : integer := inferred; - constant CFG_CLKMUL : integer := 2; - constant CFG_CLKDIV : integer := 2; + constant CFG_CLKTECH : integer := zynq7000; + constant CFG_CLKMUL : integer := (8); + constant CFG_CLKDIV : integer := (32); constant CFG_OCLKDIV : integer := 1; constant CFG_OCLKBDIV : integer := 0; constant CFG_OCLKCDIV : integer := 0; @@ -31,12 +31,12 @@ package config is constant CFG_LEON3 : integer := 1; constant CFG_NCPU : integer := (1); constant CFG_NWIN : integer := (8); - constant CFG_V8 : integer := 16#32# + 4*0; + constant CFG_V8 : integer := 2 + 4*0; constant CFG_MAC : integer := 0; constant CFG_BP : integer := 1; constant CFG_SVT : integer := 1; constant CFG_RSTADDR : integer := 16#00000#; - constant CFG_LDDEL : integer := (1); + constant CFG_LDDEL : integer := (2); constant CFG_NOTAG : integer := 0; constant CFG_NWP : integer := (2); constant CFG_PWD : integer := 1*2; @@ -44,9 +44,9 @@ package config is constant CFG_GRFPUSH : integer := 0; constant CFG_ICEN : integer := 1; constant CFG_ISETS : integer := 2; - constant CFG_ISETSZ : integer := 8; - constant CFG_ILINE : integer := 8; - constant CFG_IREPL : integer := 0; + constant CFG_ISETSZ : integer := 4; + constant CFG_ILINE : integer := 4; + constant CFG_IREPL : integer := 2; constant CFG_ILOCK : integer := 0; constant CFG_ILRAMEN : integer := 0; constant CFG_ILRAMADDR: integer := 16#8E#; @@ -55,22 +55,22 @@ package config is constant CFG_DSETS : integer := 2; constant CFG_DSETSZ : integer := 4; constant CFG_DLINE : integer := 4; - constant CFG_DREPL : integer := 0; + constant CFG_DREPL : integer := 2; constant CFG_DLOCK : integer := 0; constant CFG_DSNOOP : integer := 1 + 1 + 4*1; constant CFG_DFIXED : integer := 16#0#; constant CFG_DLRAMEN : integer := 0; constant CFG_DLRAMADDR: integer := 16#8F#; constant CFG_DLRAMSZ : integer := 1; - constant CFG_MMUEN : integer := 1; - constant CFG_ITLBNUM : integer := 8; - constant CFG_DTLBNUM : integer := 8; - constant CFG_TLB_TYPE : integer := 0 + 1*2; - constant CFG_TLB_REP : integer := 0; + constant CFG_MMUEN : integer := 0; + constant CFG_ITLBNUM : integer := 2; + constant CFG_DTLBNUM : integer := 2; + constant CFG_TLB_TYPE : integer := 1 + 0*2; + constant CFG_TLB_REP : integer := 1; constant CFG_MMU_PAGE : integer := 0; constant CFG_DSU : integer := 1; - constant CFG_ITBSZ : integer := 4; - constant CFG_ATBSZ : integer := 4; + constant CFG_ITBSZ : integer := 1; + constant CFG_ATBSZ : integer := 1; constant CFG_LEON3FT_EN : integer := 0; constant CFG_IUFT_EN : integer := 0; constant CFG_FPUFT_EN : integer := 0; @@ -82,8 +82,8 @@ package config is constant CFG_PCLOW : integer := 2; -- AMBA settings constant CFG_DEFMST : integer := (0); - constant CFG_RROBIN : integer := 1; - constant CFG_SPLIT : integer := 1; + constant CFG_RROBIN : integer := 0; + constant CFG_SPLIT : integer := 0; constant CFG_FPNPEN : integer := 0; constant CFG_AHBIO : integer := 16#FFF#; constant CFG_APBADDR : integer := 16#800#; @@ -91,44 +91,31 @@ package config is constant CFG_AHB_MONERR : integer := 0; constant CFG_AHB_MONWAR : integer := 0; constant CFG_AHB_DTRACE : integer := 0; --- DSU UART - constant CFG_AHB_UART : integer := 1; -- JTAG based DSU interface - constant CFG_AHB_JTAG : integer := 0; + constant CFG_AHB_JTAG : integer := 1; -- Ethernet DSU - constant CFG_DSU_ETH : integer := 1 + 0 + 0; - constant CFG_ETH_BUF : integer := 4; + constant CFG_DSU_ETH : integer := 0 + 0 + 0; + constant CFG_ETH_BUF : integer := 1; constant CFG_ETH_IPM : integer := 16#C0A8#; - constant CFG_ETH_IPL : integer := 16#0085#; + constant CFG_ETH_IPL : integer := 16#0033#; constant CFG_ETH_ENM : integer := 16#020000#; - constant CFG_ETH_ENL : integer := 16#000033#; --- LEON2 memory controller - constant CFG_MCTRL_LEON2 : integer := 1; - constant CFG_MCTRL_RAM8BIT : integer := 0; - constant CFG_MCTRL_RAM16BIT : integer := 1; - constant CFG_MCTRL_5CS : integer := 0; - constant CFG_MCTRL_SDEN : integer := 0; - constant CFG_MCTRL_SEPBUS : integer := 0; - constant CFG_MCTRL_INVCLK : integer := 0; - constant CFG_MCTRL_SD64 : integer := 0; - constant CFG_MCTRL_PAGE : integer := 0 + 0; + constant CFG_ETH_ENL : integer := 16#000009#; +-- AHB status register + constant CFG_AHBSTAT : integer := 0; + constant CFG_AHBSTATN : integer := 1; -- AHB ROM - constant CFG_AHBROMEN : integer := 1; - constant CFG_AHBROPIP : integer := 1; + constant CFG_AHBROMEN : integer := 0; + constant CFG_AHBROPIP : integer := 0; constant CFG_AHBRODDR : integer := 16#000#; - constant CFG_ROMADDR : integer := 16#100#; - constant CFG_ROMMASK : integer := 16#E00# + 16#100#; + constant CFG_ROMADDR : integer := 16#000#; + constant CFG_ROMMASK : integer := 16#E00# + 16#000#; -- AHB RAM constant CFG_AHBRAMEN : integer := 1; - constant CFG_AHBRSZ : integer := 4; + constant CFG_AHBRSZ : integer := 1; constant CFG_AHBRADDR : integer := 16#A00#; --- Gaisler Ethernet core - constant CFG_GRETH : integer := 1; - constant CFG_GRETH1G : integer := 0; - constant CFG_ETH_FIFO : integer := 32; -- UART 1 constant CFG_UART1_ENABLE : integer := 1; - constant CFG_UART1_FIFO : integer := 4; + constant CFG_UART1_FIFO : integer := 8; -- LEON3 interrupt controller constant CFG_IRQ3_ENABLE : integer := 1; constant CFG_IRQ3_NSEC : integer := 0; @@ -138,10 +125,13 @@ package config is constant CFG_GPT_SW : integer := (8); constant CFG_GPT_TW : integer := (32); constant CFG_GPT_IRQ : integer := (8); - constant CFG_GPT_SEPIRQ : integer := 1; - constant CFG_GPT_WDOGEN : integer := 1; - constant CFG_GPT_WDOG : integer := 16#FFFF#; - + constant CFG_GPT_SEPIRQ : integer := 0; + constant CFG_GPT_WDOGEN : integer := 0; + constant CFG_GPT_WDOG : integer := 16#0#; +-- GPIO port + constant CFG_GRGPIO_ENABLE : integer := 1; + constant CFG_GRGPIO_IMASK : integer := 16#0000#; + constant CFG_GRGPIO_WIDTH : integer := (16); -- GRLIB debugging - constant CFG_DUART : integer := 1; + constant CFG_DUART : integer := 0; end; diff --git a/designs/leon3-lattice-latticeECP3/config.vhd.h b/designs/leon3-digilent-xc7z020/config.vhd.h similarity index 87% rename from designs/leon3-lattice-latticeECP3/config.vhd.h rename to designs/leon3-digilent-xc7z020/config.vhd.h index db63b7c8..33bf34ac 100644 --- a/designs/leon3-lattice-latticeECP3/config.vhd.h +++ b/designs/leon3-digilent-xc7z020/config.vhd.h @@ -82,9 +82,6 @@ constant CFG_AHB_MONWAR : integer := CONFIG_AHB_MONWAR; constant CFG_AHB_DTRACE : integer := CONFIG_AHB_DTRACE; --- DSU UART - constant CFG_AHB_UART : integer := CONFIG_DSU_UART; - -- JTAG based DSU interface constant CFG_AHB_JTAG : integer := CONFIG_DSU_JTAG; @@ -96,16 +93,9 @@ constant CFG_ETH_ENM : integer := 16#CONFIG_DSU_ETHMSB#; constant CFG_ETH_ENL : integer := 16#CONFIG_DSU_ETHLSB#; --- LEON2 memory controller - constant CFG_MCTRL_LEON2 : integer := CONFIG_MCTRL_LEON2; - constant CFG_MCTRL_RAM8BIT : integer := CONFIG_MCTRL_8BIT; - constant CFG_MCTRL_RAM16BIT : integer := CONFIG_MCTRL_16BIT; - constant CFG_MCTRL_5CS : integer := CONFIG_MCTRL_5CS; - constant CFG_MCTRL_SDEN : integer := CONFIG_MCTRL_SDRAM; - constant CFG_MCTRL_SEPBUS : integer := CONFIG_MCTRL_SDRAM_SEPBUS; - constant CFG_MCTRL_INVCLK : integer := CONFIG_MCTRL_SDRAM_INVCLK; - constant CFG_MCTRL_SD64 : integer := CONFIG_MCTRL_SDRAM_BUS64; - constant CFG_MCTRL_PAGE : integer := CONFIG_MCTRL_PAGE + CONFIG_MCTRL_PROGPAGE; +-- AHB status register + constant CFG_AHBSTAT : integer := CONFIG_AHBSTAT_ENABLE; + constant CFG_AHBSTATN : integer := CONFIG_AHBSTAT_NFTSLV; -- AHB ROM constant CFG_AHBROMEN : integer := CONFIG_AHBROM_ENABLE; @@ -119,11 +109,6 @@ constant CFG_AHBRSZ : integer := CFG_AHBRAMSZ; constant CFG_AHBRADDR : integer := 16#CONFIG_AHBRAM_START#; --- Gaisler Ethernet core - constant CFG_GRETH : integer := CONFIG_GRETH_ENABLE; - constant CFG_GRETH1G : integer := CONFIG_GRETH_GIGA; - constant CFG_ETH_FIFO : integer := CFG_GRETH_FIFO; - -- UART 1 constant CFG_UART1_ENABLE : integer := CONFIG_UART1_ENABLE; constant CFG_UART1_FIFO : integer := CFG_UA1_FIFO; @@ -142,6 +127,11 @@ constant CFG_GPT_WDOGEN : integer := CONFIG_GPT_WDOGEN; constant CFG_GPT_WDOG : integer := 16#CONFIG_GPT_WDOG#; +-- GPIO port + constant CFG_GRGPIO_ENABLE : integer := CONFIG_GRGPIO_ENABLE; + constant CFG_GRGPIO_IMASK : integer := 16#CONFIG_GRGPIO_IMASK#; + constant CFG_GRGPIO_WIDTH : integer := CONFIG_GRGPIO_WIDTH; + -- GRLIB debugging constant CFG_DUART : integer := CONFIG_DEBUG_UART; diff --git a/designs/leon3-wildcard-xcv300e/config.vhd.in b/designs/leon3-digilent-xc7z020/config.vhd.in similarity index 99% rename from designs/leon3-wildcard-xcv300e/config.vhd.in rename to designs/leon3-digilent-xc7z020/config.vhd.in index 17917add..0b22306b 100644 --- a/designs/leon3-wildcard-xcv300e/config.vhd.in +++ b/designs/leon3-digilent-xc7z020/config.vhd.in @@ -1,5 +1,6 @@ #include "config.h" #include "tkconfig.h" + ----------------------------------------------------------------------------- -- LEON3 Demonstration design test bench configuration -- Copyright (C) 2009 Aeroflex Gaisler @@ -13,4 +14,6 @@ package config is #include "config.vhd.h" + + end; diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/__xps/ise/_xmsgs/.gitignore b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/__xps/ise/_xmsgs/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/__xps/ise/xmsgprops.lst b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/__xps/ise/xmsgprops.lst new file mode 100644 index 00000000..d79c9360 --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/__xps/ise/xmsgprops.lst @@ -0,0 +1,3 @@ +MessageCaptureEnabled: TRUE +MessageFilteringEnabled: FALSE +IncrementalMessagingEnabled: TRUE diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.ncf b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.ncf new file mode 100644 index 00000000..1d25821e --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.ncf @@ -0,0 +1,8 @@ +# +# pin constraints +# + +# +# additional constraints +# + diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.ucf b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.ucf new file mode 100644 index 00000000..1d25821e --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.ucf @@ -0,0 +1,8 @@ +# +# pin constraints +# + +# +# additional constraints +# + diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.xdc b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.xdc new file mode 100644 index 00000000..1d25821e --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/leon3_zedboard.xdc @@ -0,0 +1,8 @@ +# +# pin constraints +# + +# +# additional constraints +# + diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_constraints.ucf b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_constraints.ucf new file mode 100644 index 00000000..971c138d --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_constraints.ucf @@ -0,0 +1,94 @@ +############################################################################ +## +## Xilinx, Inc. 2006 www.xilinx.com +############################################################################ +## File name : data/ps7_constraints.ucf +## +## Details : Constraints file +## FPGA family: zynq +## FPGA: xc7z020clg484-1 +## Device Size: xc7z020 +## Package: clg484 +## Speedgrade: -1 +## +##Note: This is a generated file. Configuration settings should not be edited +## +############################################################################ +############################################################################ +############################################################################ +# I/O STANDARDS and Location Constraints # +############################################################################ + +NET "DDR_WEB" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "R4" ; +NET "DDR_VRP" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "N7" ; +NET "DDR_VRN" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "M7" ; +NET "DDR_RAS_n" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "R5" ; +NET "DDR_ODT" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "P5" ; +NET "DDR_DRSTB" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "F3" ; +NET "DDR_DQS[3]" IOSTANDARD = DIFF_SSTL15_T_DCI | SLEW = "FAST" | LOC = "V2" ; +NET "DDR_DQS[2]" IOSTANDARD = DIFF_SSTL15_T_DCI | SLEW = "FAST" | LOC = "N2" ; +NET "DDR_DQS[1]" IOSTANDARD = DIFF_SSTL15_T_DCI | SLEW = "FAST" | LOC = "H2" ; +NET "DDR_DQS[0]" IOSTANDARD = DIFF_SSTL15_T_DCI | SLEW = "FAST" | LOC = "C2" ; +NET "DDR_DQS_n[3]" IOSTANDARD = DIFF_SSTL15_T_DCI | SLEW = "FAST" | LOC = "W2" ; +NET "DDR_DQS_n[2]" IOSTANDARD = DIFF_SSTL15_T_DCI | SLEW = "FAST" | LOC = "P2" ; +NET "DDR_DQS_n[1]" IOSTANDARD = DIFF_SSTL15_T_DCI | SLEW = "FAST" | LOC = "J2" ; +NET "DDR_DQS_n[0]" IOSTANDARD = DIFF_SSTL15_T_DCI | SLEW = "FAST" | LOC = "D2" ; +NET "DDR_DQ[9]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "G1" ; +NET "DDR_DQ[8]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "G2" ; +NET "DDR_DQ[7]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "F1" ; +NET "DDR_DQ[6]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "F2" ; +NET "DDR_DQ[5]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "E1" ; +NET "DDR_DQ[4]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "E3" ; +NET "DDR_DQ[3]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "D3" ; +NET "DDR_DQ[31]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "Y1" ; +NET "DDR_DQ[30]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "W3" ; +NET "DDR_DQ[2]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "B2" ; +NET "DDR_DQ[29]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "Y3" ; +NET "DDR_DQ[28]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "W1" ; +NET "DDR_DQ[27]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "U2" ; +NET "DDR_DQ[26]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "AA1" ; +NET "DDR_DQ[25]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "U1" ; +NET "DDR_DQ[24]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "AA3" ; +NET "DDR_DQ[23]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "R1" ; +NET "DDR_DQ[22]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "M2" ; +NET "DDR_DQ[21]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "T2" ; +NET "DDR_DQ[20]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "R3" ; +NET "DDR_DQ[1]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "C3" ; +NET "DDR_DQ[19]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "T1" ; +NET "DDR_DQ[18]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "N3" ; +NET "DDR_DQ[17]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "T3" ; +NET "DDR_DQ[16]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "M1" ; +NET "DDR_DQ[15]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "K3" ; +NET "DDR_DQ[14]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "J1" ; +NET "DDR_DQ[13]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "K1" ; +NET "DDR_DQ[12]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "L3" ; +NET "DDR_DQ[11]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "L2" ; +NET "DDR_DQ[10]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "L1" ; +NET "DDR_DQ[0]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "D1" ; +NET "DDR_DM[3]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "AA2" ; +NET "DDR_DM[2]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "P1" ; +NET "DDR_DM[1]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "H3" ; +NET "DDR_DM[0]" IOSTANDARD = SSTL15_T_DCI | SLEW = "FAST" | LOC = "B1" ; +NET "DDR_CS_n" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "P6" ; +NET "DDR_CKE" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "V3" ; +NET "DDR_Clk" IOSTANDARD = DIFF_SSTL15 | SLEW = "FAST" | LOC = "N4" ; +NET "DDR_Clk_n" IOSTANDARD = DIFF_SSTL15 | SLEW = "FAST" | LOC = "N5" ; +NET "DDR_CAS_n" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "P3" ; +NET "DDR_BankAddr[2]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "M6" ; +NET "DDR_BankAddr[1]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "L6" ; +NET "DDR_BankAddr[0]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "L7" ; +NET "DDR_Addr[9]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "H5" ; +NET "DDR_Addr[8]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "J5" ; +NET "DDR_Addr[7]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "J6" ; +NET "DDR_Addr[6]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "J7" ; +NET "DDR_Addr[5]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "K5" ; +NET "DDR_Addr[4]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "K6" ; +NET "DDR_Addr[3]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "L4" ; +NET "DDR_Addr[2]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "K4" ; +NET "DDR_Addr[1]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "M5" ; +NET "DDR_Addr[14]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "G4" ; +NET "DDR_Addr[13]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "F4" ; +NET "DDR_Addr[12]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "H4" ; +NET "DDR_Addr[11]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "G5" ; +NET "DDR_Addr[10]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "J3" ; +NET "DDR_Addr[0]" IOSTANDARD = SSTL15 | SLEW = "FAST" | LOC = "M4" ; diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_constraints.xdc b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_constraints.xdc new file mode 100644 index 00000000..ea7e65b8 --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_constraints.xdc @@ -0,0 +1,240 @@ +############################################################################ +## +## Xilinx, Inc. 2006 www.xilinx.com +############################################################################ +## File name : data/ps7_constraints.xdc +## +## Details : Constraints file +## FPGA family: zynq +## FPGA: xc7z020clg484-1 +## Device Size: xc7z020 +## Package: clg484 +## Speedgrade: -1 +## +##Note: This is a generated file. Configuration settings should not be edited +## +############################################################################ +############################################################################ +############################################################################ +# I/O STANDARDS and Location Constraints # +############################################################################ + +set_property iostandard "SSTL15" [get_ports "DDR_WEB"] +set_property PACKAGE_PIN "R4" [get_ports "DDR_WEB"] +set_property slew "FAST" [get_ports "DDR_WEB"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_VRP"] +set_property PACKAGE_PIN "N7" [get_ports "DDR_VRP"] +set_property slew "FAST" [get_ports "DDR_VRP"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_VRN"] +set_property PACKAGE_PIN "M7" [get_ports "DDR_VRN"] +set_property slew "FAST" [get_ports "DDR_VRN"] +set_property iostandard "SSTL15" [get_ports "DDR_RAS_n"] +set_property PACKAGE_PIN "R5" [get_ports "DDR_RAS_n"] +set_property slew "FAST" [get_ports "DDR_RAS_n"] +set_property iostandard "SSTL15" [get_ports "DDR_ODT"] +set_property PACKAGE_PIN "P5" [get_ports "DDR_ODT"] +set_property slew "FAST" [get_ports "DDR_ODT"] +set_property iostandard "SSTL15" [get_ports "DDR_DRSTB"] +set_property PACKAGE_PIN "F3" [get_ports "DDR_DRSTB"] +set_property slew "FAST" [get_ports "DDR_DRSTB"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS[3]"] +set_property PACKAGE_PIN "V2" [get_ports "DDR_DQS[3]"] +set_property slew "FAST" [get_ports "DDR_DQS[3]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS[2]"] +set_property PACKAGE_PIN "N2" [get_ports "DDR_DQS[2]"] +set_property slew "FAST" [get_ports "DDR_DQS[2]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS[1]"] +set_property PACKAGE_PIN "H2" [get_ports "DDR_DQS[1]"] +set_property slew "FAST" [get_ports "DDR_DQS[1]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS[0]"] +set_property PACKAGE_PIN "C2" [get_ports "DDR_DQS[0]"] +set_property slew "FAST" [get_ports "DDR_DQS[0]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS_n[3]"] +set_property PACKAGE_PIN "W2" [get_ports "DDR_DQS_n[3]"] +set_property slew "FAST" [get_ports "DDR_DQS_n[3]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS_n[2]"] +set_property PACKAGE_PIN "P2" [get_ports "DDR_DQS_n[2]"] +set_property slew "FAST" [get_ports "DDR_DQS_n[2]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS_n[1]"] +set_property PACKAGE_PIN "J2" [get_ports "DDR_DQS_n[1]"] +set_property slew "FAST" [get_ports "DDR_DQS_n[1]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS_n[0]"] +set_property PACKAGE_PIN "D2" [get_ports "DDR_DQS_n[0]"] +set_property slew "FAST" [get_ports "DDR_DQS_n[0]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[9]"] +set_property PACKAGE_PIN "G1" [get_ports "DDR_DQ[9]"] +set_property slew "FAST" [get_ports "DDR_DQ[9]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[8]"] +set_property PACKAGE_PIN "G2" [get_ports "DDR_DQ[8]"] +set_property slew "FAST" [get_ports "DDR_DQ[8]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[7]"] +set_property PACKAGE_PIN "F1" [get_ports "DDR_DQ[7]"] +set_property slew "FAST" [get_ports "DDR_DQ[7]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[6]"] +set_property PACKAGE_PIN "F2" [get_ports "DDR_DQ[6]"] +set_property slew "FAST" [get_ports "DDR_DQ[6]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[5]"] +set_property PACKAGE_PIN "E1" [get_ports "DDR_DQ[5]"] +set_property slew "FAST" [get_ports "DDR_DQ[5]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[4]"] +set_property PACKAGE_PIN "E3" [get_ports "DDR_DQ[4]"] +set_property slew "FAST" [get_ports "DDR_DQ[4]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[3]"] +set_property PACKAGE_PIN "D3" [get_ports "DDR_DQ[3]"] +set_property slew "FAST" [get_ports "DDR_DQ[3]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[31]"] +set_property PACKAGE_PIN "Y1" [get_ports "DDR_DQ[31]"] +set_property slew "FAST" [get_ports "DDR_DQ[31]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[30]"] +set_property PACKAGE_PIN "W3" [get_ports "DDR_DQ[30]"] +set_property slew "FAST" [get_ports "DDR_DQ[30]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[2]"] +set_property PACKAGE_PIN "B2" [get_ports "DDR_DQ[2]"] +set_property slew "FAST" [get_ports "DDR_DQ[2]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[29]"] +set_property PACKAGE_PIN "Y3" [get_ports "DDR_DQ[29]"] +set_property slew "FAST" [get_ports "DDR_DQ[29]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[28]"] +set_property PACKAGE_PIN "W1" [get_ports "DDR_DQ[28]"] +set_property slew "FAST" [get_ports "DDR_DQ[28]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[27]"] +set_property PACKAGE_PIN "U2" [get_ports "DDR_DQ[27]"] +set_property slew "FAST" [get_ports "DDR_DQ[27]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[26]"] +set_property PACKAGE_PIN "AA1" [get_ports "DDR_DQ[26]"] +set_property slew "FAST" [get_ports "DDR_DQ[26]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[25]"] +set_property PACKAGE_PIN "U1" [get_ports "DDR_DQ[25]"] +set_property slew "FAST" [get_ports "DDR_DQ[25]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[24]"] +set_property PACKAGE_PIN "AA3" [get_ports "DDR_DQ[24]"] +set_property slew "FAST" [get_ports "DDR_DQ[24]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[23]"] +set_property PACKAGE_PIN "R1" [get_ports "DDR_DQ[23]"] +set_property slew "FAST" [get_ports "DDR_DQ[23]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[22]"] +set_property PACKAGE_PIN "M2" [get_ports "DDR_DQ[22]"] +set_property slew "FAST" [get_ports "DDR_DQ[22]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[21]"] +set_property PACKAGE_PIN "T2" [get_ports "DDR_DQ[21]"] +set_property slew "FAST" [get_ports "DDR_DQ[21]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[20]"] +set_property PACKAGE_PIN "R3" [get_ports "DDR_DQ[20]"] +set_property slew "FAST" [get_ports "DDR_DQ[20]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[1]"] +set_property PACKAGE_PIN "C3" [get_ports "DDR_DQ[1]"] +set_property slew "FAST" [get_ports "DDR_DQ[1]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[19]"] +set_property PACKAGE_PIN "T1" [get_ports "DDR_DQ[19]"] +set_property slew "FAST" [get_ports "DDR_DQ[19]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[18]"] +set_property PACKAGE_PIN "N3" [get_ports "DDR_DQ[18]"] +set_property slew "FAST" [get_ports "DDR_DQ[18]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[17]"] +set_property PACKAGE_PIN "T3" [get_ports "DDR_DQ[17]"] +set_property slew "FAST" [get_ports "DDR_DQ[17]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[16]"] +set_property PACKAGE_PIN "M1" [get_ports "DDR_DQ[16]"] +set_property slew "FAST" [get_ports "DDR_DQ[16]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[15]"] +set_property PACKAGE_PIN "K3" [get_ports "DDR_DQ[15]"] +set_property slew "FAST" [get_ports "DDR_DQ[15]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[14]"] +set_property PACKAGE_PIN "J1" [get_ports "DDR_DQ[14]"] +set_property slew "FAST" [get_ports "DDR_DQ[14]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[13]"] +set_property PACKAGE_PIN "K1" [get_ports "DDR_DQ[13]"] +set_property slew "FAST" [get_ports "DDR_DQ[13]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[12]"] +set_property PACKAGE_PIN "L3" [get_ports "DDR_DQ[12]"] +set_property slew "FAST" [get_ports "DDR_DQ[12]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[11]"] +set_property PACKAGE_PIN "L2" [get_ports "DDR_DQ[11]"] +set_property slew "FAST" [get_ports "DDR_DQ[11]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[10]"] +set_property PACKAGE_PIN "L1" [get_ports "DDR_DQ[10]"] +set_property slew "FAST" [get_ports "DDR_DQ[10]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[0]"] +set_property PACKAGE_PIN "D1" [get_ports "DDR_DQ[0]"] +set_property slew "FAST" [get_ports "DDR_DQ[0]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DM[3]"] +set_property PACKAGE_PIN "AA2" [get_ports "DDR_DM[3]"] +set_property slew "FAST" [get_ports "DDR_DM[3]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DM[2]"] +set_property PACKAGE_PIN "P1" [get_ports "DDR_DM[2]"] +set_property slew "FAST" [get_ports "DDR_DM[2]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DM[1]"] +set_property PACKAGE_PIN "H3" [get_ports "DDR_DM[1]"] +set_property slew "FAST" [get_ports "DDR_DM[1]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DM[0]"] +set_property PACKAGE_PIN "B1" [get_ports "DDR_DM[0]"] +set_property slew "FAST" [get_ports "DDR_DM[0]"] +set_property iostandard "SSTL15" [get_ports "DDR_CS_n"] +set_property PACKAGE_PIN "P6" [get_ports "DDR_CS_n"] +set_property slew "FAST" [get_ports "DDR_CS_n"] +set_property iostandard "SSTL15" [get_ports "DDR_CKE"] +set_property PACKAGE_PIN "V3" [get_ports "DDR_CKE"] +set_property slew "FAST" [get_ports "DDR_CKE"] +set_property iostandard "DIFF_SSTL15" [get_ports "DDR_Clk"] +set_property PACKAGE_PIN "N4" [get_ports "DDR_Clk"] +set_property slew "FAST" [get_ports "DDR_Clk"] +set_property iostandard "DIFF_SSTL15" [get_ports "DDR_Clk_n"] +set_property PACKAGE_PIN "N5" [get_ports "DDR_Clk_n"] +set_property slew "FAST" [get_ports "DDR_Clk_n"] +set_property iostandard "SSTL15" [get_ports "DDR_CAS_n"] +set_property PACKAGE_PIN "P3" [get_ports "DDR_CAS_n"] +set_property slew "FAST" [get_ports "DDR_CAS_n"] +set_property iostandard "SSTL15" [get_ports "DDR_BankAddr[2]"] +set_property PACKAGE_PIN "M6" [get_ports "DDR_BankAddr[2]"] +set_property slew "FAST" [get_ports "DDR_BankAddr[2]"] +set_property iostandard "SSTL15" [get_ports "DDR_BankAddr[1]"] +set_property PACKAGE_PIN "L6" [get_ports "DDR_BankAddr[1]"] +set_property slew "FAST" [get_ports "DDR_BankAddr[1]"] +set_property iostandard "SSTL15" [get_ports "DDR_BankAddr[0]"] +set_property PACKAGE_PIN "L7" [get_ports "DDR_BankAddr[0]"] +set_property slew "FAST" [get_ports "DDR_BankAddr[0]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[9]"] +set_property PACKAGE_PIN "H5" [get_ports "DDR_Addr[9]"] +set_property slew "FAST" [get_ports "DDR_Addr[9]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[8]"] +set_property PACKAGE_PIN "J5" [get_ports "DDR_Addr[8]"] +set_property slew "FAST" [get_ports "DDR_Addr[8]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[7]"] +set_property PACKAGE_PIN "J6" [get_ports "DDR_Addr[7]"] +set_property slew "FAST" [get_ports "DDR_Addr[7]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[6]"] +set_property PACKAGE_PIN "J7" [get_ports "DDR_Addr[6]"] +set_property slew "FAST" [get_ports "DDR_Addr[6]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[5]"] +set_property PACKAGE_PIN "K5" [get_ports "DDR_Addr[5]"] +set_property slew "FAST" [get_ports "DDR_Addr[5]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[4]"] +set_property PACKAGE_PIN "K6" [get_ports "DDR_Addr[4]"] +set_property slew "FAST" [get_ports "DDR_Addr[4]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[3]"] +set_property PACKAGE_PIN "L4" [get_ports "DDR_Addr[3]"] +set_property slew "FAST" [get_ports "DDR_Addr[3]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[2]"] +set_property PACKAGE_PIN "K4" [get_ports "DDR_Addr[2]"] +set_property slew "FAST" [get_ports "DDR_Addr[2]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[1]"] +set_property PACKAGE_PIN "M5" [get_ports "DDR_Addr[1]"] +set_property slew "FAST" [get_ports "DDR_Addr[1]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[14]"] +set_property PACKAGE_PIN "G4" [get_ports "DDR_Addr[14]"] +set_property slew "FAST" [get_ports "DDR_Addr[14]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[13]"] +set_property PACKAGE_PIN "F4" [get_ports "DDR_Addr[13]"] +set_property slew "FAST" [get_ports "DDR_Addr[13]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[12]"] +set_property PACKAGE_PIN "H4" [get_ports "DDR_Addr[12]"] +set_property slew "FAST" [get_ports "DDR_Addr[12]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[11]"] +set_property PACKAGE_PIN "G5" [get_ports "DDR_Addr[11]"] +set_property slew "FAST" [get_ports "DDR_Addr[11]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[10]"] +set_property PACKAGE_PIN "J3" [get_ports "DDR_Addr[10]"] +set_property slew "FAST" [get_ports "DDR_Addr[10]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[0]"] +set_property PACKAGE_PIN "M4" [get_ports "DDR_Addr[0]"] +set_property slew "FAST" [get_ports "DDR_Addr[0]"] diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_leon3_zedboard_prj.xml b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_leon3_zedboard_prj.xml new file mode 100644 index 00000000..f9332b59 --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/data/ps7_leon3_zedboard_prj.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/bitgen.ut b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/bitgen.ut new file mode 100644 index 00000000..1f1bbbe8 --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/bitgen.ut @@ -0,0 +1 @@ +##bitgen options for zynq architecture diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/download.cmd b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/download.cmd new file mode 100644 index 00000000..02228c1a --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/download.cmd @@ -0,0 +1,6 @@ +setMode -bscan +setCable -p auto +identify +assignfile -p 2 -file implementation/download.bit +program -p 2 +quit diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/fast_runtime.opt b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/fast_runtime.opt new file mode 100644 index 00000000..994a6d2f --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/fast_runtime.opt @@ -0,0 +1,84 @@ +FLOWTYPE = FPGA; +############################################################### +## Filename: fast_runtime.opt +## +## Option File For Xilinx FPGA Implementation Flow for Fast +## Runtime. +## +## Version: 4.1.1 +############################################################### +# +# Options for Translator +# +# Type "ngdbuild -h" for a detailed list of ngdbuild command line options +# +Program ngdbuild +-p ; # Partname to use - picked from xflow commandline +-nt timestamp; # NGO File generation. Regenerate only when + # source netlist is newer than existing + # NGO file (default) +-bm .bmm # Block RAM memory map file +; # User design - pick from xflow command line +-uc .ucf; # ucf constraints +.ngd; # Name of NGD file. Filebase same as design filebase +End Program ngdbuild + +# +# Options for Mapper +# +# Type "map -h " for a detailed list of map command line options +# +Program map +-o _map.ncd; # Output Mapped ncd file +-w; # Overwrite output files. +-pr b; # Pack internal FF/latches into IOBs +#-fp .mfp; # Floorplan file +-ol high; +-timing; +-detail; +.ngd; # Input NGD file +.pcf; # Physical constraints file +END Program map + +# +# Options for Post Map Trace +# +# Type "trce -h" for a detailed list of trce command line options +# +Program post_map_trce +-e 3; # Produce error report limited to 3 items per constraint +#-o _map.twr; # Output trace report file +-xml _map.twx; # Output XML version of the timing report +#-tsi _map.tsi; # Produce Timing Specification Interaction report +_map.ncd; # Input mapped ncd +.pcf; # Physical constraints file +END Program post_map_trce + +# +# Options for Place and Route +# +# Type "par -h" for a detailed list of par command line options +# +Program par +-w; # Overwrite existing placed and routed ncd +-ol high; # Overall effort level +_map.ncd; # Input mapped NCD file +.ncd; # Output placed and routed NCD +.pcf; # Input physical constraints file +END Program par + +# +# Options for Post Par Trace +# +# Type "trce -h" for a detailed list of trce command line options +# +Program post_par_trce +-e 3; # Produce error report limited to 3 items per constraint +#-o .twr; # Output trace report file +-xml .twx; # Output XML version of the timing report +#-tsi .tsi; # Produce Timing Specification Interaction report +.ncd; # Input placed and routed ncd +.pcf; # Physical constraints file +END Program post_par_trce + + diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/leon3_zedboard.filters b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/leon3_zedboard.filters new file mode 100644 index 00000000..63cea3a8 --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/leon3_zedboard.filters @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/leon3_zedboard.gui b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/leon3_zedboard.gui new file mode 100644 index 00000000..af84db94 --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/etc/leon3_zedboard.gui @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/leon3_zedboard.mhs b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/leon3_zedboard.mhs new file mode 100644 index 00000000..0d9f334b --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/leon3_zedboard.mhs @@ -0,0 +1,175 @@ + +# ############################################################################## +# Created by Base System Builder Wizard for Xilinx EDK 14.3 Build EDK_P.40xd +# Fri Dec 7 08:24:42 2012 +# Target Board: em.avnet.com ZedBoard Rev C +# Family: zynq +# Device: xc7z020 +# Package: clg484 +# Speed Grade: -1 +# ############################################################################## + PARAMETER VERSION = 2.1.0 + + + PORT processing_system7_0_MIO = processing_system7_0_MIO, DIR = IO, VEC = [53:0] + PORT processing_system7_0_PS_SRSTB = processing_system7_0_PS_SRSTB, DIR = I + PORT processing_system7_0_PS_CLK = processing_system7_0_PS_CLK, DIR = I, SIGIS = CLK + PORT processing_system7_0_PS_PORB = processing_system7_0_PS_PORB, DIR = I + PORT processing_system7_0_DDR_Clk = processing_system7_0_DDR_Clk, DIR = IO, SIGIS = CLK + PORT processing_system7_0_DDR_Clk_n = processing_system7_0_DDR_Clk_n, DIR = IO, SIGIS = CLK + PORT processing_system7_0_DDR_CKE = processing_system7_0_DDR_CKE, DIR = IO + PORT processing_system7_0_DDR_CS_n = processing_system7_0_DDR_CS_n, DIR = IO + PORT processing_system7_0_DDR_RAS_n = processing_system7_0_DDR_RAS_n, DIR = IO + PORT processing_system7_0_DDR_CAS_n = processing_system7_0_DDR_CAS_n, DIR = IO + PORT processing_system7_0_DDR_WEB_pin = processing_system7_0_DDR_WEB, DIR = O + PORT processing_system7_0_DDR_BankAddr = processing_system7_0_DDR_BankAddr, DIR = IO, VEC = [2:0] + PORT processing_system7_0_DDR_Addr = processing_system7_0_DDR_Addr, DIR = IO, VEC = [14:0] + PORT processing_system7_0_DDR_ODT = processing_system7_0_DDR_ODT, DIR = IO + PORT processing_system7_0_DDR_DRSTB = processing_system7_0_DDR_DRSTB, DIR = IO, SIGIS = RST + PORT processing_system7_0_DDR_DQ = processing_system7_0_DDR_DQ, DIR = IO, VEC = [31:0] + PORT processing_system7_0_DDR_DM = processing_system7_0_DDR_DM, DIR = IO, VEC = [3:0] + PORT processing_system7_0_DDR_DQS = processing_system7_0_DDR_DQS, DIR = IO, VEC = [3:0] + PORT processing_system7_0_DDR_DQS_n = processing_system7_0_DDR_DQS_n, DIR = IO, VEC = [3:0] + PORT processing_system7_0_DDR_VRN = processing_system7_0_DDR_VRN, DIR = IO + PORT processing_system7_0_DDR_VRP = processing_system7_0_DDR_VRP, DIR = IO + PORT ahblite_axi_bridge_0_S_AHB_HSEL_pin = ahblite_axi_bridge_0_S_AHB_HSEL, DIR = I + PORT ahblite_axi_bridge_0_S_AHB_HADDR_pin = ahblite_axi_bridge_0_S_AHB_HADDR, DIR = I, VEC = [31:0] + PORT ahblite_axi_bridge_0_S_AHB_HPROT_pin = ahblite_axi_bridge_0_S_AHB_HPROT, DIR = I, VEC = [3:0] + PORT ahblite_axi_bridge_0_S_AHB_HTRANS_pin = ahblite_axi_bridge_0_S_AHB_HTRANS, DIR = I, VEC = [1:0] + PORT ahblite_axi_bridge_0_S_AHB_HSIZE_pin = ahblite_axi_bridge_0_S_AHB_HSIZE, DIR = I, VEC = [2:0] + PORT ahblite_axi_bridge_0_S_AHB_HWRITE_pin = ahblite_axi_bridge_0_S_AHB_HWRITE, DIR = I + PORT ahblite_axi_bridge_0_S_AHB_HBURST_pin = ahblite_axi_bridge_0_S_AHB_HBURST, DIR = I, VEC = [2:0] + PORT ahblite_axi_bridge_0_S_AHB_HWDATA_pin = ahblite_axi_bridge_0_S_AHB_HWDATA, DIR = I, VEC = [31:0] + PORT ahblite_axi_bridge_0_S_AHB_HREADY_OUT_pin = ahblite_axi_bridge_0_S_AHB_HREADY_OUT, DIR = O + PORT ahblite_axi_bridge_0_S_AHB_HREADY_IN_pin = ahblite_axi_bridge_0_S_AHB_HREADY_IN, DIR = I + PORT ahblite_axi_bridge_0_S_AHB_HRDATA_pin = ahblite_axi_bridge_0_S_AHB_HRDATA, DIR = O, VEC = [31:0] + PORT ahblite_axi_bridge_0_S_AHB_HRESP_pin = ahblite_axi_bridge_0_S_AHB_HRESP, DIR = O + PORT processing_system7_0_FCLK_RESET0_N_pin = processing_system7_0_FCLK_RESET0_N, DIR = O, SIGIS = RST + PORT processing_system7_0_FCLK_CLKTRIG0_N_pin = processing_system7_0_FCLK_CLKTRIG0_N, DIR = I + PORT processing_system7_0_FCLK_CLK0_pin = processing_system7_0_FCLK_CLK0, DIR = O, SIGIS = CLK, CLK_FREQ = 50000000 + + +BEGIN processing_system7 + PARAMETER INSTANCE = processing_system7_0 + PARAMETER HW_VER = 4.02.a + PARAMETER C_DDR_RAM_HIGHADDR = 0x1FFFFFFF + PARAMETER C_USE_M_AXI_GP0 = 0 + PARAMETER C_EN_EMIO_CAN0 = 0 + PARAMETER C_EN_EMIO_CAN1 = 0 + PARAMETER C_EN_EMIO_ENET0 = 0 + PARAMETER C_EN_EMIO_ENET1 = 0 + PARAMETER C_EN_EMIO_I2C0 = 0 + PARAMETER C_EN_EMIO_I2C1 = 0 + PARAMETER C_EN_EMIO_PJTAG = 0 + PARAMETER C_EN_EMIO_SDIO0 = 0 + PARAMETER C_EN_EMIO_CD_SDIO0 = 0 + PARAMETER C_EN_EMIO_WP_SDIO0 = 0 + PARAMETER C_EN_EMIO_SDIO1 = 0 + PARAMETER C_EN_EMIO_CD_SDIO1 = 0 + PARAMETER C_EN_EMIO_WP_SDIO1 = 0 + PARAMETER C_EN_EMIO_SPI0 = 0 + PARAMETER C_EN_EMIO_SPI1 = 0 + PARAMETER C_EN_EMIO_SRAM_INT = 0 + PARAMETER C_EN_EMIO_TRACE = 0 + PARAMETER C_EN_EMIO_TTC0 = 0 + PARAMETER C_EN_EMIO_TTC1 = 0 + PARAMETER C_EN_EMIO_UART0 = 0 + PARAMETER C_EN_EMIO_UART1 = 0 + PARAMETER C_EN_EMIO_MODEM_UART0 = 0 + PARAMETER C_EN_EMIO_MODEM_UART1 = 0 + PARAMETER C_EN_EMIO_WDT = 0 + PARAMETER C_EN_QSPI = 0 + PARAMETER C_EN_SMC = 0 + PARAMETER C_EN_CAN0 = 0 + PARAMETER C_EN_CAN1 = 0 + PARAMETER C_EN_ENET0 = 0 + PARAMETER C_EN_ENET1 = 0 + PARAMETER C_EN_I2C0 = 0 + PARAMETER C_EN_I2C1 = 0 + PARAMETER C_EN_PJTAG = 0 + PARAMETER C_EN_SDIO0 = 0 + PARAMETER C_EN_SDIO1 = 0 + PARAMETER C_EN_SPI0 = 0 + PARAMETER C_EN_SPI1 = 0 + PARAMETER C_EN_TRACE = 0 + PARAMETER C_EN_TTC0 = 0 + PARAMETER C_EN_TTC1 = 0 + PARAMETER C_EN_UART0 = 0 + PARAMETER C_EN_UART1 = 0 + PARAMETER C_EN_MODEM_UART0 = 0 + PARAMETER C_EN_MODEM_UART1 = 0 + PARAMETER C_EN_USB0 = 0 + PARAMETER C_EN_USB1 = 0 + PARAMETER C_EN_WDT = 0 + PARAMETER C_EN_DDR = 1 + PARAMETER C_EN_GPIO = 0 + PARAMETER C_FCLK_CLK0_FREQ = 50000000 + PARAMETER C_FCLK_CLK1_FREQ = 50000000 + PARAMETER C_FCLK_CLK2_FREQ = 50000000 + PARAMETER C_FCLK_CLK3_FREQ = 50000000 + PARAMETER C_USE_FABRIC_INTERRUPT = 0 + PARAMETER C_USE_S_AXI_GP0 = 0 + PARAMETER C_USE_S_AXI_HP0 = 1 + PARAMETER C_S_AXI_HP0_DATA_WIDTH = 32 + PARAMETER C_USE_CR_FABRIC = 1 + PARAMETER C_INTERCONNECT_S_AXI_GP0_MASTERS = ahblite_axi_bridge_0.M_AXI + PARAMETER C_EN_EMIO_GPIO = 0 + PARAMETER C_EMIO_GPIO_WIDTH = 64 + PARAMETER C_INTERCONNECT_S_AXI_HP0_MASTERS = ahblite_axi_bridge_0.M_AXI + BUS_INTERFACE S_AXI_HP0 = axi_interconnect_0 + PORT MIO = processing_system7_0_MIO + PORT PS_SRSTB = processing_system7_0_PS_SRSTB + PORT PS_CLK = processing_system7_0_PS_CLK + PORT PS_PORB = processing_system7_0_PS_PORB + PORT DDR_Clk = processing_system7_0_DDR_Clk + PORT DDR_Clk_n = processing_system7_0_DDR_Clk_n + PORT DDR_CKE = processing_system7_0_DDR_CKE + PORT DDR_CS_n = processing_system7_0_DDR_CS_n + PORT DDR_RAS_n = processing_system7_0_DDR_RAS_n + PORT DDR_CAS_n = processing_system7_0_DDR_CAS_n + PORT DDR_WEB = processing_system7_0_DDR_WEB + PORT DDR_BankAddr = processing_system7_0_DDR_BankAddr + PORT DDR_Addr = processing_system7_0_DDR_Addr + PORT DDR_ODT = processing_system7_0_DDR_ODT + PORT DDR_DRSTB = processing_system7_0_DDR_DRSTB + PORT DDR_DQ = processing_system7_0_DDR_DQ + PORT DDR_DM = processing_system7_0_DDR_DM + PORT DDR_DQS = processing_system7_0_DDR_DQS + PORT DDR_DQS_n = processing_system7_0_DDR_DQS_n + PORT DDR_VRN = processing_system7_0_DDR_VRN + PORT DDR_VRP = processing_system7_0_DDR_VRP + PORT FCLK_CLK0 = processing_system7_0_FCLK_CLK0 + PORT FCLK_RESET0_N = processing_system7_0_FCLK_RESET0_N + PORT S_AXI_HP0_ACLK = processing_system7_0_FCLK_CLK0 + PORT FCLK_CLKTRIG0_N = processing_system7_0_FCLK_CLKTRIG0_N +END + +BEGIN ahblite_axi_bridge + PARAMETER INSTANCE = ahblite_axi_bridge_0 + PARAMETER HW_VER = 1.00.a + PARAMETER C_AHB_AXI_TIMEOUT = 0 + PARAMETER C_BASEADDR = 0x6c000000 + PARAMETER C_HIGHADDR = 0x6c00ffff + BUS_INTERFACE M_AXI = axi_interconnect_0 + PORT S_AHB_HCLK = processing_system7_0_FCLK_CLK0 + PORT S_AHB_HSEL = ahblite_axi_bridge_0_S_AHB_HSEL + PORT S_AHB_HADDR = ahblite_axi_bridge_0_S_AHB_HADDR + PORT S_AHB_HPROT = ahblite_axi_bridge_0_S_AHB_HPROT + PORT S_AHB_HTRANS = ahblite_axi_bridge_0_S_AHB_HTRANS + PORT S_AHB_HSIZE = ahblite_axi_bridge_0_S_AHB_HSIZE + PORT S_AHB_HWRITE = ahblite_axi_bridge_0_S_AHB_HWRITE + PORT S_AHB_HBURST = ahblite_axi_bridge_0_S_AHB_HBURST + PORT S_AHB_HWDATA = ahblite_axi_bridge_0_S_AHB_HWDATA + PORT S_AHB_HREADY_OUT = ahblite_axi_bridge_0_S_AHB_HREADY_OUT + PORT S_AHB_HREADY_IN = ahblite_axi_bridge_0_S_AHB_HREADY_IN + PORT S_AHB_HRDATA = ahblite_axi_bridge_0_S_AHB_HRDATA + PORT S_AHB_HRESP = ahblite_axi_bridge_0_S_AHB_HRESP +END + +BEGIN axi_interconnect + PARAMETER INSTANCE = axi_interconnect_0 + PARAMETER HW_VER = 1.06.a + PORT INTERCONNECT_ACLK = processing_system7_0_FCLK_CLK0 + PORT INTERCONNECT_ARESETN = processing_system7_0_FCLK_RESET0_N +END + diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/leon3_zedboard.xmp b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/leon3_zedboard.xmp new file mode 100644 index 00000000..b4fe03fc --- /dev/null +++ b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/leon3_zedboard.xmp @@ -0,0 +1,29 @@ +#Please do not modify this file by hand +XmpVersion: 14.3 +VerMgmt: 14.3 +IntStyle: default +Flow: ise +MHS File: leon3_zedboard.mhs +Architecture: zynq +Device: xc7z020 +Package: clg484 +SpeedGrade: -1 +UserCmd1: +UserCmd1Type: 0 +UserCmd2: +UserCmd2Type: 0 +GenSimTB: 0 +SdkExportBmmBit: 1 +SdkExportDir: SDK/SDK_Export +InsertNoPads: 1 +WarnForEAArch: 1 +HdlLang: vhdl +SimModel: BEHAVIORAL +ExternalMemSim: 0 +UcfFile: data/leon3_zedboard.ucf +EnableParTimingError: 1 +ShowLicenseDialog: 1 +BInfo: ZEDBOARD +Processor: processing_system7_0 +ElfImp: +ElfSim: diff --git a/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/pcores/.gitignore b/designs/leon3-digilent-xc7z020/edk_files/leon3_zedboard/pcores/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/designs/leon3-ge-hpe-mini/lconfig.tk b/designs/leon3-digilent-xc7z020/lconfig.tk similarity index 65% rename from designs/leon3-ge-hpe-mini/lconfig.tk rename to designs/leon3-digilent-xc7z020/lconfig.tk index ab9acc64..8df44c31 100755 --- a/designs/leon3-ge-hpe-mini/lconfig.tk +++ b/designs/leon3-digilent-xc7z020/lconfig.tk @@ -644,7 +644,7 @@ set active_menus [list] set processed_top_level 0 set ARCH sparc set menus_per_column 4 -set total_menus 23 +set total_menus 17 proc toplevel_menu {num} { if {$num == 4} then {return 3} @@ -655,17 +655,12 @@ proc toplevel_menu {num} { if {$num == 9} then {return 3} if {$num == 10} then {return 3} if {$num == 14} then {return 13} - if {$num == 15} then {return 14} - if {$num == 16} then {return 14} - if {$num == 17} then {return 13} - if {$num == 18} then {return 13} - if {$num == 19} then {return 13} - if {$num == 20} then {return 13} - if {$num == 21} then {return 13} + if {$num == 15} then {return 13} + if {$num == 16} then {return 13} return $num } -mainmenu_name "LEON3MINI Design Configuration" +mainmenu_name "LEON3MP Zedboard Design Configuration" menu_option menu1 1 "Synthesis " proc menu1 {w title} { set oldFocus [focus] @@ -755,7 +750,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -765,7 +761,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -908,8 +906,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -928,6 +928,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1017,9 +1021,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1073,10 +1078,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1122,14 +1128,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1202,13 +1210,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1248,22 +1264,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1320,21 +1604,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1381,36 +1665,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1418,48 +1703,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1515,27 +1801,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1576,16 +1862,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1594,34 +1881,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1678,92 +1966,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1771,18 +2059,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1823,52 +2111,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1876,162 +2165,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2087,45 +2377,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2165,18 +2457,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2184,55 +2477,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2289,24 +2587,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2346,17 +2644,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2364,37 +2663,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2450,16 +2750,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2507,9 +2814,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2531,21 +2836,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2851,24 +3161,7 @@ proc menu12 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART - bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG - bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 - hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB - hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB - hex $w.config.f 12 6 "MSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHMSB - hex $w.config.f 12 7 "LSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHLSB - bool $w.config.f 12 8 "Programmable 4-bit LSB of MAC/IP address" CONFIG_DSU_ETH_PROG - bool $w.config.f 12 9 "EDCL disable pin " CONFIG_DSU_ETH_DIS + bool $w.config.f 12 0 "JTAG Debug Link" CONFIG_DSU_JTAG @@ -2905,62 +3198,12 @@ proc menu12 {w title} { } proc update_menu12 {} { - global CONFIG_GRETH_ENABLE - global CONFIG_DSU_ETH - if {($CONFIG_GRETH_ENABLE == 1)} then { - configure_entry .menu12.config.f.x2 normal {n l y}} else {configure_entry .menu12.config.f.x2 disabled {y n l}} - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {configure_entry .menu12.config.f.x3 normal {x l}} else {configure_entry .menu12.config.f.x3 disabled {x l}} - global CONFIG_DSU_IPMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x4.l configure -state normal; } else {.menu12.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x4.l configure -state disabled} - global CONFIG_DSU_IPLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x5.l configure -state normal; } else {.menu12.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x5.l configure -state disabled} - global CONFIG_DSU_ETHMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x6.l configure -state normal; } else {.menu12.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x6.l configure -state disabled} - global CONFIG_DSU_ETHLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x7.l configure -state normal; } else {.menu12.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x7.l configure -state disabled} - global CONFIG_GRETH_GIGA - global CONFIG_DSU_ETH_PROG - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - configure_entry .menu12.config.f.x8 normal {n l y}} else {configure_entry .menu12.config.f.x8 disabled {y n l}} - global CONFIG_DSU_ETH_DIS - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - configure_entry .menu12.config.f.x9 normal {n l y}} else {configure_entry .menu12.config.f.x9 disabled {y n l}} } proc update_define_menu12 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_GRETH_ENABLE - global CONFIG_DSU_ETH - if {($CONFIG_GRETH_ENABLE == 1)} then { - set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 - global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} - global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} - global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} - global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} - global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} - global CONFIG_DSU_IPMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} - global CONFIG_DSU_IPLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPLSB "$CONFIG_DSU_IPLSB" 0033} - global CONFIG_DSU_ETHMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_ETHMSB "$CONFIG_DSU_ETHMSB" 020000} - global CONFIG_DSU_ETHLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_ETHLSB "$CONFIG_DSU_ETHLSB" 000000} - global CONFIG_GRETH_GIGA - global CONFIG_DSU_ETH_PROG - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - set CONFIG_DSU_ETH_PROG [expr $CONFIG_DSU_ETH_PROG&15]} else {set CONFIG_DSU_ETH_PROG [expr $CONFIG_DSU_ETH_PROG|16]} - global CONFIG_DSU_ETH_DIS - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - set CONFIG_DSU_ETH_DIS [expr $CONFIG_DSU_ETH_DIS&15]} else {set CONFIG_DSU_ETH_DIS [expr $CONFIG_DSU_ETH_DIS|16]} } @@ -3015,12 +3258,9 @@ proc menu13 {w title} { pack $w.config.canvas -side right -fill y - submenu $w.config.f 13 0 "Memory controllers " 14 - submenu $w.config.f 13 1 "On-chip RAM/ROM " 17 - submenu $w.config.f 13 2 "Ethernet " 18 - submenu $w.config.f 13 3 "UARTs, timers and irq control " 19 - submenu $w.config.f 13 4 "ATA Controller" 20 - submenu $w.config.f 13 5 "Keybord and VGA interface" 21 + submenu $w.config.f 13 0 "Memory controller " 14 + submenu $w.config.f 13 1 "On-chip RAM/ROM " 15 + submenu $w.config.f 13 2 "UARTs, timers and irq control " 16 @@ -3075,12 +3315,12 @@ proc menu14 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 14]] message $w.m -width 400 -aspect 300 -text \ - "Memory controllers " -relief raised + "Memory controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "Memory controllers " + wm title $w "Memory controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 14; break" - set nextscript "catch {focus $oldFocus}; menu15 .menu15 \"$title\"" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 14; menu15 .menu15 \"$title\"" frame $w.f button $w.f.back -text "OK" \ -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 14" @@ -3117,8 +3357,8 @@ proc menu14 {w title} { pack $w.config.canvas -side right -fill y - submenu $w.config.f 14 0 "8/32-bit PROM/SRAM controller " 15 - submenu $w.config.f 14 1 "Leon2 memory controller " 16 + bool $w.config.f 14 0 "Enable AHB Status Register " CONFIG_AHBSTAT_ENABLE + int $w.config.f 14 1 "Number of correctable-error slaves " CONFIG_AHBSTAT_NFTSLV @@ -3156,27 +3396,33 @@ proc menu14 {w title} { } proc update_menu14 {} { + global CONFIG_AHBSTAT_ENABLE + global CONFIG_AHBSTAT_NFTSLV + if {($CONFIG_AHBSTAT_ENABLE == 1)} then {.menu14.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu14.config.f.x1.l configure -state normal; } else {.menu14.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu14.config.f.x1.l configure -state disabled} } proc update_define_menu14 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_AHBSTAT_ENABLE + global CONFIG_AHBSTAT_NFTSLV + if {($CONFIG_AHBSTAT_ENABLE == 1)} then {validate_int CONFIG_AHBSTAT_NFTSLV "$CONFIG_AHBSTAT_NFTSLV" 1} } proc menu15 {w title} { set oldFocus [focus] - catch {focus .menu14} + catch {focus .menu13} catch {destroy $w; unregister_active 15} toplevel $w -class Dialog wm withdraw $w global active_menus set active_menus [lsort -integer [linsert $active_menus end 15]] message $w.m -width 400 -aspect 300 -text \ - "8/32-bit PROM/SRAM controller " -relief raised + "On-chip RAM/ROM " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "8/32-bit PROM/SRAM controller " + wm title $w "On-chip RAM/ROM " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 15; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 15; menu16 .menu16 \"$title\"" @@ -3216,48 +3462,30 @@ proc menu15 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 15 0 "Enable 8/32-bit PROM/SRAM controller " CONFIG_SRCTRL - bool $w.config.f 15 1 "8-bit PROM interface " CONFIG_SRCTRL_8BIT - int $w.config.f 15 2 "PROM waitstates" CONFIG_SRCTRL_PROMWS - int $w.config.f 15 3 "RAM waitstates" CONFIG_SRCTRL_RAMWS - int $w.config.f 15 4 "IO waitstates" CONFIG_SRCTRL_IOWS - bool $w.config.f 15 5 "Use read-modify-write for sub-word writes " CONFIG_SRCTRL_RMW - global tmpvar_27 - minimenu $w.config.f 15 6 "SRAM banks" tmpvar_27 CONFIG_SRCTRL_SRBANKS1 - menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"SRAM banks\"" - $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_27 -value "3" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_27 -value "5" -command "update_active" - menusplit $w $w.config.f.x6.x.menu 5 - global tmpvar_28 - minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_28 CONFIG_SRCTRL_BANKSZ0 - menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"SRAM bank size (kb) (0 for programmable)\"" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_28 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_28 -value "256" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_28 -value "512" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_28 -value "1024" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_28 -value "2048" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_28 -value "4096" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_28 -value "8192" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_28 -value "16384" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_28 -value "32768" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_28 -value "65536" -command "update_active" - menusplit $w $w.config.f.x7.x.menu 14 - int $w.config.f 15 8 "PROM bank select address bit (0 - 28)" CONFIG_SRCTRL_ROMASEL + bool $w.config.f 15 0 "On-chip AHB ROM " CONFIG_AHBROM_ENABLE + hex $w.config.f 15 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START + bool $w.config.f 15 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE + bool $w.config.f 15 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE + global tmpvar_29 + minimenu $w.config.f 15 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 + menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 7 + hex $w.config.f 15 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START focus $w update_active global winx; global winy - if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers "} - set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30] + if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} + set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f @@ -3287,102 +3515,64 @@ proc menu15 {w title} { } proc update_menu15 {} { - global CONFIG_SRCTRL - global CONFIG_SRCTRL_8BIT - if {($CONFIG_SRCTRL == 1)} then { - configure_entry .menu15.config.f.x1 normal {n l y}} else {configure_entry .menu15.config.f.x1 disabled {y n l}} - global CONFIG_SRCTRL_PROMWS - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x2.l configure -state normal; } else {.menu15.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x2.l configure -state disabled} - global CONFIG_SRCTRL_RAMWS - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x3.l configure -state normal; } else {.menu15.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x3.l configure -state disabled} - global CONFIG_SRCTRL_IOWS - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x4.l configure -state normal; } else {.menu15.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x4.l configure -state disabled} - global CONFIG_SRCTRL_RMW - if {($CONFIG_SRCTRL == 1)} then { - configure_entry .menu15.config.f.x5 normal {n l y}} else {configure_entry .menu15.config.f.x5 disabled {y n l}} - if {($CONFIG_SRCTRL == 1)} then {configure_entry .menu15.config.f.x6 normal {x l}} else {configure_entry .menu15.config.f.x6 disabled {x l}} - if {($CONFIG_SRCTRL == 1)} then {configure_entry .menu15.config.f.x7 normal {x l}} else {configure_entry .menu15.config.f.x7 disabled {x l}} - global CONFIG_SRCTRL_ROMASEL - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x8.l configure -state normal; } else {.menu15.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x8.l configure -state disabled} + global CONFIG_AHBROM_ENABLE + global CONFIG_AHBROM_START + if {($CONFIG_AHBROM_ENABLE == 1)} then {.menu15.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x1.l configure -state normal; } else {.menu15.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x1.l configure -state disabled} + global CONFIG_AHBROM_PIPE + if {($CONFIG_AHBROM_ENABLE == 1)} then { + configure_entry .menu15.config.f.x2 normal {n l y}} else {configure_entry .menu15.config.f.x2 disabled {y n l}} + global CONFIG_AHBRAM_ENABLE + if {($CONFIG_AHBRAM_ENABLE == 1)} then {configure_entry .menu15.config.f.x4 normal {x l}} else {configure_entry .menu15.config.f.x4 disabled {x l}} + global CONFIG_AHBRAM_START + if {($CONFIG_AHBRAM_ENABLE == 1)} then {.menu15.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x5.l configure -state normal; } else {.menu15.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x5.l configure -state disabled} } proc update_define_menu15 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_SRCTRL - global CONFIG_SRCTRL_8BIT - if {($CONFIG_SRCTRL == 1)} then { - set CONFIG_SRCTRL_8BIT [expr $CONFIG_SRCTRL_8BIT&15]} else {set CONFIG_SRCTRL_8BIT [expr $CONFIG_SRCTRL_8BIT|16]} - global CONFIG_SRCTRL_PROMWS - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_PROMWS "$CONFIG_SRCTRL_PROMWS" 3} - global CONFIG_SRCTRL_RAMWS - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_RAMWS "$CONFIG_SRCTRL_RAMWS" 0} - global CONFIG_SRCTRL_IOWS - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_IOWS "$CONFIG_SRCTRL_IOWS" 0} - global CONFIG_SRCTRL_RMW - if {($CONFIG_SRCTRL == 1)} then { - set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW&15]} else {set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW|16]} - global tmpvar_27 - global CONFIG_SRCTRL_SRBANKS1 - if {$tmpvar_27 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} - global CONFIG_SRCTRL_SRBANKS2 - if {$tmpvar_27 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} - global CONFIG_SRCTRL_SRBANKS3 - if {$tmpvar_27 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} - global CONFIG_SRCTRL_SRBANKS4 - if {$tmpvar_27 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} - global CONFIG_SRCTRL_SRBANKS5 - if {$tmpvar_27 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} - global tmpvar_28 - global CONFIG_SRCTRL_BANKSZ0 - if {$tmpvar_28 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} - global CONFIG_SRCTRL_BANKSZ1 - if {$tmpvar_28 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} - global CONFIG_SRCTRL_BANKSZ2 - if {$tmpvar_28 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} - global CONFIG_SRCTRL_BANKSZ3 - if {$tmpvar_28 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} - global CONFIG_SRCTRL_BANKSZ4 - if {$tmpvar_28 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} - global CONFIG_SRCTRL_BANKSZ5 - if {$tmpvar_28 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} - global CONFIG_SRCTRL_BANKSZ6 - if {$tmpvar_28 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} - global CONFIG_SRCTRL_BANKSZ7 - if {$tmpvar_28 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} - global CONFIG_SRCTRL_BANKSZ8 - if {$tmpvar_28 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} - global CONFIG_SRCTRL_BANKSZ9 - if {$tmpvar_28 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} - global CONFIG_SRCTRL_BANKSZ10 - if {$tmpvar_28 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} - global CONFIG_SRCTRL_BANKSZ11 - if {$tmpvar_28 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} - global CONFIG_SRCTRL_BANKSZ12 - if {$tmpvar_28 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} - global CONFIG_SRCTRL_BANKSZ13 - if {$tmpvar_28 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} - global CONFIG_SRCTRL_ROMASEL - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_ROMASEL "$CONFIG_SRCTRL_ROMASEL" 19} + global CONFIG_AHBROM_ENABLE + global CONFIG_AHBROM_START + if {($CONFIG_AHBROM_ENABLE == 1)} then {validate_hex CONFIG_AHBROM_START "$CONFIG_AHBROM_START" 000} + global CONFIG_AHBROM_PIPE + if {($CONFIG_AHBROM_ENABLE == 1)} then { + set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} + global tmpvar_29 + global CONFIG_AHBRAM_SZ1 + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + global CONFIG_AHBRAM_SZ2 + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + global CONFIG_AHBRAM_SZ4 + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + global CONFIG_AHBRAM_SZ8 + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + global CONFIG_AHBRAM_SZ16 + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + global CONFIG_AHBRAM_SZ32 + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + global CONFIG_AHBRAM_SZ64 + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + global CONFIG_AHBRAM_ENABLE + global CONFIG_AHBRAM_START + if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} } proc menu16 {w title} { set oldFocus [focus] - catch {focus .menu14} + catch {focus .menu13} catch {destroy $w; unregister_active 16} toplevel $w -class Dialog wm withdraw $w global active_menus set active_menus [lsort -integer [linsert $active_menus end 16]] message $w.m -width 400 -aspect 300 -text \ - "Leon2 memory controller " -relief raised + "UARTs, timers and irq control " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "Leon2 memory controller " + wm title $w "UARTs, timers and irq control " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 16; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 16; catch {destroy .menu14}; unregister_active 14; menu17 .menu17 \"$title\"" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 16; catch {destroy .menu13}; unregister_active 13; menu17 .menu17 \"$title\"" frame $w.f button $w.f.back -text "OK" \ -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 16" @@ -3419,24 +3609,39 @@ proc menu16 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 16 0 "Enable Leon2 memory controller " CONFIG_MCTRL_LEON2 - bool $w.config.f 16 1 "8-bit PROM/SRAM bus support " CONFIG_MCTRL_8BIT - bool $w.config.f 16 2 "16-bit PROM/SRAM bus support " CONFIG_MCTRL_16BIT - bool $w.config.f 16 3 "5th SRAM chip-select " CONFIG_MCTRL_5CS - bool $w.config.f 16 4 "SDRAM controller " CONFIG_MCTRL_SDRAM - bool $w.config.f 16 5 "Separate address and data buses" CONFIG_MCTRL_SDRAM_SEPBUS - bool $w.config.f 16 6 "64-bit SDRAM data bus" CONFIG_MCTRL_SDRAM_BUS64 - bool $w.config.f 16 7 "Unsynchronized sdclock" CONFIG_MCTRL_SDRAM_INVCLK - bool $w.config.f 16 8 "Enable page burst operation " CONFIG_MCTRL_PAGE - bool $w.config.f 16 9 "Enable programmable page burst " CONFIG_MCTRL_PROGPAGE + bool $w.config.f 16 0 "Enable console UART " CONFIG_UART1_ENABLE + global tmpvar_30 + minimenu $w.config.f 16 1 "UART1 FIFO depth" tmpvar_30 CONFIG_UA1_FIFO1 + menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + menusplit $w $w.config.f.x1.x.menu 6 + bool $w.config.f 16 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE + bool $w.config.f 16 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC + int $w.config.f 16 4 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC + bool $w.config.f 16 5 "Enable Timer Unit " CONFIG_GPT_ENABLE + int $w.config.f 16 6 "Number of timers (1 - 7) " CONFIG_GPT_NTIM + int $w.config.f 16 7 "Scaler width (2 - 16) " CONFIG_GPT_SW + int $w.config.f 16 8 "Timer width (2 - 32) " CONFIG_GPT_TW + int $w.config.f 16 9 "Timer unit interrupt " CONFIG_GPT_IRQ + bool $w.config.f 16 10 "Separate interrupts " CONFIG_GPT_SEPIRQ + bool $w.config.f 16 11 "Watchdog enable " CONFIG_GPT_WDOGEN + hex $w.config.f 16 12 "Initial watchdog time-out value " CONFIG_GPT_WDOG + bool $w.config.f 16 13 "Enable generic GPIO port " CONFIG_GRGPIO_ENABLE + int $w.config.f 16 14 "GPIO width " CONFIG_GRGPIO_WIDTH + hex $w.config.f 16 15 "GPIO interrupt mask " CONFIG_GRGPIO_IMASK focus $w update_active global winx; global winy - if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers "} - set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30] + if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} + set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f @@ -3466,879 +3671,111 @@ proc menu16 {w title} { } proc update_menu16 {} { - global CONFIG_MCTRL_LEON2 - global CONFIG_MCTRL_8BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu16.config.f.x1 normal {n l y}} else {configure_entry .menu16.config.f.x1 disabled {y n l}} - global CONFIG_MCTRL_16BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu16.config.f.x2 normal {n l y}} else {configure_entry .menu16.config.f.x2 disabled {y n l}} - global CONFIG_MCTRL_5CS - if {($CONFIG_MCTRL_LEON2 == 1)} then { + global CONFIG_UART1_ENABLE + if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu16.config.f.x1 normal {x l}} else {configure_entry .menu16.config.f.x1 disabled {x l}} + global CONFIG_IRQ3_ENABLE + global CONFIG_IRQ3_SEC + if {($CONFIG_IRQ3_ENABLE == 1)} then { configure_entry .menu16.config.f.x3 normal {n l y}} else {configure_entry .menu16.config.f.x3 disabled {y n l}} - global CONFIG_MCTRL_SDRAM - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu16.config.f.x4 normal {n l y}} else {configure_entry .menu16.config.f.x4 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_SEPBUS - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - configure_entry .menu16.config.f.x5 normal {n l y}} else {configure_entry .menu16.config.f.x5 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_BUS64 - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - configure_entry .menu16.config.f.x6 normal {n l y}} else {configure_entry .menu16.config.f.x6 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_INVCLK - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - configure_entry .menu16.config.f.x7 normal {n l y}} else {configure_entry .menu16.config.f.x7 disabled {y n l}} - global CONFIG_MCTRL_PAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - configure_entry .menu16.config.f.x8 normal {n l y}} else {configure_entry .menu16.config.f.x8 disabled {y n l}} - global CONFIG_MCTRL_PROGPAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { - configure_entry .menu16.config.f.x9 normal {n l y}} else {configure_entry .menu16.config.f.x9 disabled {y n l}} + global CONFIG_IRQ3_NSEC + if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu16.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x4.l configure -state normal; } else {.menu16.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x4.l configure -state disabled} + global CONFIG_GPT_ENABLE + global CONFIG_GPT_NTIM + if {($CONFIG_GPT_ENABLE == 1)} then {.menu16.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x6.l configure -state normal; } else {.menu16.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x6.l configure -state disabled} + global CONFIG_GPT_SW + if {($CONFIG_GPT_ENABLE == 1)} then {.menu16.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x7.l configure -state normal; } else {.menu16.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x7.l configure -state disabled} + global CONFIG_GPT_TW + if {($CONFIG_GPT_ENABLE == 1)} then {.menu16.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x8.l configure -state normal; } else {.menu16.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x8.l configure -state disabled} + global CONFIG_GPT_IRQ + if {($CONFIG_GPT_ENABLE == 1)} then {.menu16.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x9.l configure -state normal; } else {.menu16.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x9.l configure -state disabled} + global CONFIG_GPT_SEPIRQ + if {($CONFIG_GPT_ENABLE == 1)} then { + configure_entry .menu16.config.f.x10 normal {n l y}} else {configure_entry .menu16.config.f.x10 disabled {y n l}} + global CONFIG_GPT_WDOGEN + if {($CONFIG_GPT_ENABLE == 1)} then { + configure_entry .menu16.config.f.x11 normal {n l y}} else {configure_entry .menu16.config.f.x11 disabled {y n l}} + global CONFIG_GPT_WDOG + if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu16.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x12.l configure -state normal; } else {.menu16.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x12.l configure -state disabled} + global CONFIG_GRGPIO_ENABLE + global CONFIG_GRGPIO_WIDTH + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu16.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x14.l configure -state normal; } else {.menu16.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x14.l configure -state disabled} + global CONFIG_GRGPIO_IMASK + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu16.config.f.x15.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x15.l configure -state normal; } else {.menu16.config.f.x15.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x15.l configure -state disabled} } proc update_define_menu16 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_MCTRL_LEON2 - global CONFIG_MCTRL_8BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT&15]} else {set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT|16]} - global CONFIG_MCTRL_16BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT&15]} else {set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT|16]} - global CONFIG_MCTRL_5CS - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS&15]} else {set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS|16]} - global CONFIG_MCTRL_SDRAM - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM&15]} else {set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM|16]} - global CONFIG_MCTRL_SDRAM_SEPBUS - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS&15]} else {set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS|16]} - global CONFIG_MCTRL_SDRAM_BUS64 - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64&15]} else {set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64|16]} - global CONFIG_MCTRL_SDRAM_INVCLK - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK&15]} else {set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK|16]} - global CONFIG_MCTRL_PAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE&15]} else {set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE|16]} - global CONFIG_MCTRL_PROGPAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { - set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE&15]} else {set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE|16]} -} - - -proc menu17 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 17} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 17]] - message $w.m -width 400 -aspect 300 -text \ - "On-chip RAM/ROM " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "On-chip RAM/ROM " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 17; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 17; menu18 .menu18 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 17" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 17; menu16 .menu16 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 17; menu16 .menu16 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 17 0 "On-chip AHB ROM " CONFIG_AHBROM_ENABLE - hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START - bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE - bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_29 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 7 - hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu17 {} { - global CONFIG_AHBROM_ENABLE - global CONFIG_AHBROM_START - if {($CONFIG_AHBROM_ENABLE == 1)} then {.menu17.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x1.l configure -state normal; } else {.menu17.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x1.l configure -state disabled} - global CONFIG_AHBROM_PIPE - if {($CONFIG_AHBROM_ENABLE == 1)} then { - configure_entry .menu17.config.f.x2 normal {n l y}} else {configure_entry .menu17.config.f.x2 disabled {y n l}} - global CONFIG_AHBRAM_ENABLE - if {($CONFIG_AHBRAM_ENABLE == 1)} then {configure_entry .menu17.config.f.x4 normal {x l}} else {configure_entry .menu17.config.f.x4 disabled {x l}} - global CONFIG_AHBRAM_START - if {($CONFIG_AHBRAM_ENABLE == 1)} then {.menu17.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x5.l configure -state normal; } else {.menu17.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x5.l configure -state disabled} -} - - -proc update_define_menu17 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_AHBROM_ENABLE - global CONFIG_AHBROM_START - if {($CONFIG_AHBROM_ENABLE == 1)} then {validate_hex CONFIG_AHBROM_START "$CONFIG_AHBROM_START" 000} - global CONFIG_AHBROM_PIPE - if {($CONFIG_AHBROM_ENABLE == 1)} then { - set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_29 - global CONFIG_AHBRAM_SZ1 - if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} - global CONFIG_AHBRAM_SZ2 - if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} - global CONFIG_AHBRAM_SZ4 - if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} - global CONFIG_AHBRAM_SZ8 - if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} - global CONFIG_AHBRAM_SZ16 - if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} - global CONFIG_AHBRAM_SZ32 - if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} - global CONFIG_AHBRAM_SZ64 - if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} - global CONFIG_AHBRAM_ENABLE - global CONFIG_AHBRAM_START - if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} -} - - -proc menu18 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 18} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 18]] - message $w.m -width 400 -aspect 300 -text \ - "Ethernet " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Ethernet " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu19 .menu19 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu17 .menu17 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu17 .menu17 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 18 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE - bool $w.config.f 18 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_30 - minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 5 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu18 {} { - global CONFIG_GRETH_ENABLE - global CONFIG_GRETH_GIGA - if {($CONFIG_GRETH_ENABLE == 1)} then { - configure_entry .menu18.config.f.x1 normal {n l y}} else {configure_entry .menu18.config.f.x1 disabled {y n l}} - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then {configure_entry .menu18.config.f.x2 normal {x l}} else {configure_entry .menu18.config.f.x2 disabled {x l}} -} - - -proc update_define_menu18 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_GRETH_ENABLE - global CONFIG_GRETH_GIGA - if {($CONFIG_GRETH_ENABLE == 1)} then { - set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_30 - global CONFIG_GRETH_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} - global CONFIG_GRETH_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} - global CONFIG_GRETH_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} - global CONFIG_GRETH_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} - global CONFIG_GRETH_FIFO64 - if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} -} - - -proc menu19 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 19} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 19]] - message $w.m -width 400 -aspect 300 -text \ - "UARTs, timers and irq control " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "UARTs, timers and irq control " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu20 .menu20 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_31 - minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 6 - bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE - bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC - int $w.config.f 19 4 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC - bool $w.config.f 19 5 "Enable Timer Unit " CONFIG_GPT_ENABLE - int $w.config.f 19 6 "Number of timers (1 - 7) " CONFIG_GPT_NTIM - int $w.config.f 19 7 "Scaler width (2 - 16) " CONFIG_GPT_SW - int $w.config.f 19 8 "Timer width (2 - 32) " CONFIG_GPT_TW - int $w.config.f 19 9 "Timer unit interrupt " CONFIG_GPT_IRQ - bool $w.config.f 19 10 "Separate interrupts " CONFIG_GPT_SEPIRQ - bool $w.config.f 19 11 "Watchdog enable " CONFIG_GPT_WDOGEN - hex $w.config.f 19 12 "Initial watchdog time-out value " CONFIG_GPT_WDOG - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu19 {} { - global CONFIG_UART1_ENABLE - if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu19.config.f.x1 normal {x l}} else {configure_entry .menu19.config.f.x1 disabled {x l}} - global CONFIG_IRQ3_ENABLE - global CONFIG_IRQ3_SEC - if {($CONFIG_IRQ3_ENABLE == 1)} then { - configure_entry .menu19.config.f.x3 normal {n l y}} else {configure_entry .menu19.config.f.x3 disabled {y n l}} - global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu19.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x4.l configure -state normal; } else {.menu19.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x4.l configure -state disabled} - global CONFIG_GPT_ENABLE - global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {.menu19.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x6.l configure -state normal; } else {.menu19.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x6.l configure -state disabled} - global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu19.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x7.l configure -state normal; } else {.menu19.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x7.l configure -state disabled} - global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu19.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x8.l configure -state normal; } else {.menu19.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x8.l configure -state disabled} - global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {.menu19.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x9.l configure -state normal; } else {.menu19.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x9.l configure -state disabled} - global CONFIG_GPT_SEPIRQ - if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu19.config.f.x10 normal {n l y}} else {configure_entry .menu19.config.f.x10 disabled {y n l}} - global CONFIG_GPT_WDOGEN - if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu19.config.f.x11 normal {n l y}} else {configure_entry .menu19.config.f.x11 disabled {y n l}} - global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu19.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x12.l configure -state normal; } else {.menu19.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x12.l configure -state disabled} -} - - -proc update_define_menu19 {} { - update_define_mainmenu - global CONFIG_MODULES - global tmpvar_31 - global CONFIG_UA1_FIFO1 - if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} - global CONFIG_UA1_FIFO2 - if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} - global CONFIG_UA1_FIFO4 - if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} - global CONFIG_UA1_FIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} - global CONFIG_UA1_FIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} - global CONFIG_UA1_FIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global CONFIG_IRQ3_ENABLE - global CONFIG_IRQ3_SEC - if {($CONFIG_IRQ3_ENABLE == 1)} then { - set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC&15]} else {set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC|16]} - global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {validate_int CONFIG_IRQ3_NSEC "$CONFIG_IRQ3_NSEC" 12} - global CONFIG_GPT_ENABLE - global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_NTIM "$CONFIG_GPT_NTIM" 2} - global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_SW "$CONFIG_GPT_SW" 8} - global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_TW "$CONFIG_GPT_TW" 32} - global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_IRQ "$CONFIG_GPT_IRQ" 8} - global CONFIG_GPT_SEPIRQ - if {($CONFIG_GPT_ENABLE == 1)} then { - set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ&15]} else {set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ|16]} - global CONFIG_GPT_WDOGEN - if {($CONFIG_GPT_ENABLE == 1)} then { - set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN&15]} else {set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN|16]} - global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {validate_hex CONFIG_GPT_WDOG "$CONFIG_GPT_WDOG" FFFF} -} - - -proc menu20 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 20} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 20]] - message $w.m -width 400 -aspect 300 -text \ - "ATA Controller" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "ATA Controller" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu21 .menu21 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 20 0 "Enable ATA interface " CONFIG_ATA_ENABLE - hex $w.config.f 20 1 "ATA I/O area start address (haddr\[19:8\]) " CONFIG_ATAIO - int $w.config.f 20 2 "Interrupt number " CONFIG_ATAIRQ - bool $w.config.f 20 3 "Enable MWDMA support " CONFIG_ATA_MWDMA - int $w.config.f 20 4 "FIFO depth " CONFIG_ATA_FIFO - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu20 {} { - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {.menu20.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x1.l configure -state normal; } else {.menu20.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x1.l configure -state disabled} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {.menu20.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x2.l configure -state normal; } else {.menu20.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x2.l configure -state disabled} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - configure_entry .menu20.config.f.x3 normal {n l y}} else {configure_entry .menu20.config.f.x3 disabled {y n l}} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {.menu20.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x4.l configure -state normal; } else {.menu20.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x4.l configure -state disabled} -} - - -proc update_define_menu20 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {validate_hex CONFIG_ATAIO "$CONFIG_ATAIO" A00} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {validate_int CONFIG_ATAIRQ "$CONFIG_ATAIRQ" 10} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA&15]} else {set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA|16]} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {validate_int CONFIG_ATA_FIFO "$CONFIG_ATA_FIFO" 8} -} - - -proc menu21 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 21} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 21]] - message $w.m -width 400 -aspect 300 -text \ - "Keybord and VGA interface" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Keybord and VGA interface" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 21; catch {destroy .menu13}; unregister_active 13; menu22 .menu22 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 21 0 "Keyboard/mouse (PS2) interface " CONFIG_KBD_ENABLE - bool $w.config.f 21 1 "Text-based VGA interface " CONFIG_VGA_ENABLE - bool $w.config.f 21 2 "SVGA graphical frame buffer " CONFIG_SVGA_ENABLE - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu21 {} { - global CONFIG_VGA_ENABLE - global CONFIG_SVGA_ENABLE - if {($CONFIG_VGA_ENABLE == 0)} then { - configure_entry .menu21.config.f.x2 normal {n l y}} else {configure_entry .menu21.config.f.x2 disabled {y n l}} -} - - -proc update_define_menu21 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_VGA_ENABLE - global CONFIG_SVGA_ENABLE - if {($CONFIG_VGA_ENABLE == 0)} then { - set CONFIG_SVGA_ENABLE [expr $CONFIG_SVGA_ENABLE&15]} else {set CONFIG_SVGA_ENABLE [expr $CONFIG_SVGA_ENABLE|16]} -} - - -menu_option menu22 22 "Gleichmann Options " -proc menu22 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 22} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 22]] - message $w.m -width 400 -aspect 300 -text \ - "Gleichmann Options " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Gleichmann Options " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu23 .menu23 \"$title\"" - frame $w.f - button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 22 0 "AHB2HPI Bridge" CONFIG_AHB2HPI_ENABLE - bool $w.config.f 22 1 "DAC AHB" CONFIG_DAC_AHB_ENABLE - - - - focus $w - update_active - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu22 {} { -} - - -proc update_define_menu22 {} { - update_define_mainmenu - global CONFIG_MODULES + global tmpvar_30 + global CONFIG_UA1_FIFO1 + if {$tmpvar_30 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + global CONFIG_UA1_FIFO2 + if {$tmpvar_30 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + global CONFIG_UA1_FIFO4 + if {$tmpvar_30 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + global CONFIG_UA1_FIFO8 + if {$tmpvar_30 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + global CONFIG_UA1_FIFO16 + if {$tmpvar_30 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + global CONFIG_UA1_FIFO32 + if {$tmpvar_30 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + global CONFIG_IRQ3_ENABLE + global CONFIG_IRQ3_SEC + if {($CONFIG_IRQ3_ENABLE == 1)} then { + set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC&15]} else {set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC|16]} + global CONFIG_IRQ3_NSEC + if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {validate_int CONFIG_IRQ3_NSEC "$CONFIG_IRQ3_NSEC" 12} + global CONFIG_GPT_ENABLE + global CONFIG_GPT_NTIM + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_NTIM "$CONFIG_GPT_NTIM" 2} + global CONFIG_GPT_SW + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_SW "$CONFIG_GPT_SW" 8} + global CONFIG_GPT_TW + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_TW "$CONFIG_GPT_TW" 32} + global CONFIG_GPT_IRQ + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_IRQ "$CONFIG_GPT_IRQ" 8} + global CONFIG_GPT_SEPIRQ + if {($CONFIG_GPT_ENABLE == 1)} then { + set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ&15]} else {set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ|16]} + global CONFIG_GPT_WDOGEN + if {($CONFIG_GPT_ENABLE == 1)} then { + set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN&15]} else {set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN|16]} + global CONFIG_GPT_WDOG + if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {validate_hex CONFIG_GPT_WDOG "$CONFIG_GPT_WDOG" FFFF} + global CONFIG_GRGPIO_ENABLE + global CONFIG_GRGPIO_WIDTH + if {($CONFIG_GRGPIO_ENABLE == 1)} then {validate_int CONFIG_GRGPIO_WIDTH "$CONFIG_GRGPIO_WIDTH" 8} + global CONFIG_GRGPIO_IMASK + if {($CONFIG_GRGPIO_ENABLE == 1)} then {validate_hex CONFIG_GRGPIO_IMASK "$CONFIG_GRGPIO_IMASK" 0000} } -menu_option menu23 23 "VHDL Debugging " -proc menu23 {w title} { +menu_option menu17 17 "VHDL Debugging " +proc menu17 {w title} { set oldFocus [focus] - catch {destroy $w; unregister_active 23} + catch {destroy $w; unregister_active 17} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 23]] + set active_menus [lsort -integer [linsert $active_menus end 17]] message $w.m -width 400 -aspect 300 -text \ "VHDL Debugging " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "VHDL Debugging " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; break" - set nextscript "catch {focus $oldFocus}; menu24 .menu24 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 17; break" + set nextscript "catch {focus $oldFocus}; menu18 .menu18 \"$title\"" frame $w.f button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 17" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript $w.f.next configure -state disabled bind all "puts \"no more menus\" " button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 17; menu16 .menu16 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 17; menu16 .menu16 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4366,7 +3803,7 @@ proc menu23 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 23 0 "Accelerated UART tracing " CONFIG_DEBUG_UART + bool $w.config.f 17 0 "Accelerated UART tracing " CONFIG_DEBUG_UART @@ -4402,11 +3839,11 @@ proc menu23 {w title} { } } -proc update_menu23 {} { +proc update_menu17 {} { } -proc update_define_menu23 {} { +proc update_define_menu17 {} { update_define_mainmenu global CONFIG_MODULES } @@ -4452,7 +3889,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4462,6 +3900,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4486,6 +3926,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4498,14 +3939,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4518,27 +3964,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4548,17 +3994,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4570,12 +4016,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4585,10 +4031,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4599,7 +4045,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4611,26 +4057,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4638,27 +4086,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4676,59 +4128,9 @@ set CONFIG_AHB_MON 0 set CONFIG_AHB_MONERR 0 set CONFIG_AHB_MONWAR 0 set CONFIG_AHB_DTRACE 0 -set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 -set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" -set CONFIG_DSU_ETHSZ1 0 -set CONFIG_DSU_ETHSZ2 0 -set CONFIG_DSU_ETHSZ4 0 -set CONFIG_DSU_ETHSZ8 0 -set CONFIG_DSU_ETHSZ16 0 -set CONFIG_DSU_IPMSB C0A8 -set CONFIG_DSU_IPLSB 0033 -set CONFIG_DSU_ETHMSB 020000 -set CONFIG_DSU_ETHLSB 000000 -set CONFIG_DSU_ETH_PROG 0 -set CONFIG_DSU_ETH_DIS 0 -set CONFIG_SRCTRL 0 -set CONFIG_SRCTRL_8BIT 0 -set CONFIG_SRCTRL_PROMWS 3 -set CONFIG_SRCTRL_RAMWS 0 -set CONFIG_SRCTRL_IOWS 0 -set CONFIG_SRCTRL_RMW 0 -set tmpvar_27 "(not set)" -set CONFIG_SRCTRL_SRBANKS1 0 -set CONFIG_SRCTRL_SRBANKS2 0 -set CONFIG_SRCTRL_SRBANKS3 0 -set CONFIG_SRCTRL_SRBANKS4 0 -set CONFIG_SRCTRL_SRBANKS5 0 -set tmpvar_28 "(not set)" -set CONFIG_SRCTRL_BANKSZ0 0 -set CONFIG_SRCTRL_BANKSZ1 0 -set CONFIG_SRCTRL_BANKSZ2 0 -set CONFIG_SRCTRL_BANKSZ3 0 -set CONFIG_SRCTRL_BANKSZ4 0 -set CONFIG_SRCTRL_BANKSZ5 0 -set CONFIG_SRCTRL_BANKSZ6 0 -set CONFIG_SRCTRL_BANKSZ7 0 -set CONFIG_SRCTRL_BANKSZ8 0 -set CONFIG_SRCTRL_BANKSZ9 0 -set CONFIG_SRCTRL_BANKSZ10 0 -set CONFIG_SRCTRL_BANKSZ11 0 -set CONFIG_SRCTRL_BANKSZ12 0 -set CONFIG_SRCTRL_BANKSZ13 0 -set CONFIG_SRCTRL_ROMASEL 19 -set CONFIG_MCTRL_LEON2 0 -set CONFIG_MCTRL_8BIT 0 -set CONFIG_MCTRL_16BIT 0 -set CONFIG_MCTRL_5CS 0 -set CONFIG_MCTRL_SDRAM 0 -set CONFIG_MCTRL_SDRAM_SEPBUS 0 -set CONFIG_MCTRL_SDRAM_BUS64 0 -set CONFIG_MCTRL_SDRAM_INVCLK 0 -set CONFIG_MCTRL_PAGE 0 -set CONFIG_MCTRL_PROGPAGE 0 +set CONFIG_AHBSTAT_ENABLE 0 +set CONFIG_AHBSTAT_NFTSLV 1 set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 @@ -4742,16 +4144,8 @@ set CONFIG_AHBRAM_SZ16 0 set CONFIG_AHBRAM_SZ32 0 set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 -set CONFIG_GRETH_ENABLE 0 -set CONFIG_GRETH_GIGA 0 -set tmpvar_30 "(not set)" -set CONFIG_GRETH_FIFO4 0 -set CONFIG_GRETH_FIFO8 0 -set CONFIG_GRETH_FIFO16 0 -set CONFIG_GRETH_FIFO32 0 -set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_31 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4769,21 +4163,28 @@ set CONFIG_GPT_IRQ 8 set CONFIG_GPT_SEPIRQ 0 set CONFIG_GPT_WDOGEN 0 set CONFIG_GPT_WDOG FFFF -set CONFIG_ATA_ENABLE 0 -set CONFIG_ATAIO A00 -set CONFIG_ATAIRQ 10 -set CONFIG_ATA_MWDMA 0 -set CONFIG_ATA_FIFO 8 -set CONFIG_KBD_ENABLE 0 -set CONFIG_VGA_ENABLE 0 -set CONFIG_SVGA_ENABLE 0 -set CONFIG_AHB2HPI_ENABLE 0 -set CONFIG_DAC_AHB_ENABLE 0 +set CONFIG_GRGPIO_ENABLE 0 +set CONFIG_GRGPIO_WIDTH 8 +set CONFIG_GRGPIO_IMASK 0000 set CONFIG_DEBUG_UART 0 set CONFIG_SYN_ARTISAN 4 set CONFIG_PCI_ENABLE 4 set CONFIG_HAS_SHARED_GRFPU 4 set CONFIG_FPU_GRFPU_SH 4 +set CONFIG_GRETH_ENABLE 4 +set CONFIG_DSU_ETH 4 +set CONFIG_DSU_ETHSZ1 4 +set CONFIG_DSU_ETHSZ2 4 +set CONFIG_DSU_ETHSZ4 4 +set CONFIG_DSU_ETHSZ8 4 +set CONFIG_DSU_ETHSZ16 4 +set CONFIG_DSU_IPMSB 4 +set CONFIG_DSU_IPLSB 4 +set CONFIG_DSU_ETHMSB 4 +set CONFIG_DSU_ETHLSB 4 +set CONFIG_GRETH_GIGA 4 +set CONFIG_DSU_ETH_PROG 4 +set CONFIG_DSU_ETH_DIS 4 set CONFIG_MODULES 4 proc writeconfig {file1 file2} { set cfg [open $file1 w] @@ -4835,7 +4236,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4845,6 +4247,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4883,6 +4287,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4895,9 +4300,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4911,239 +4317,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5181,94 +4737,14 @@ proc writeconfig {file1 file2} { global CONFIG_AHB_DTRACE write_tristate $cfg $autocfg CONFIG_AHB_DTRACE $CONFIG_AHB_DTRACE [list $notmod] 2 write_comment $cfg $autocfg "Debug Link " - global CONFIG_DSU_UART - write_tristate $cfg $autocfg CONFIG_DSU_UART $CONFIG_DSU_UART [list $notmod] 2 global CONFIG_DSU_JTAG write_tristate $cfg $autocfg CONFIG_DSU_JTAG $CONFIG_DSU_JTAG [list $notmod] 2 - global CONFIG_DSU_ETH - global CONFIG_GRETH_ENABLE - if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_IPMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } - global CONFIG_DSU_IPLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPLSB $CONFIG_DSU_IPLSB $notmod } - global CONFIG_DSU_ETHMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_ETHMSB $CONFIG_DSU_ETHMSB $notmod } - global CONFIG_DSU_ETHLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_ETHLSB $CONFIG_DSU_ETHLSB $notmod } - global CONFIG_DSU_ETH_PROG - global CONFIG_GRETH_GIGA - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH_PROG $CONFIG_DSU_ETH_PROG [list $notmod] 2 } - global CONFIG_DSU_ETH_DIS - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH_DIS $CONFIG_DSU_ETH_DIS [list $notmod] 2 } write_comment $cfg $autocfg "Peripherals " - write_comment $cfg $autocfg "Memory controllers " - write_comment $cfg $autocfg "8/32-bit PROM/SRAM controller " - global CONFIG_SRCTRL - write_tristate $cfg $autocfg CONFIG_SRCTRL $CONFIG_SRCTRL [list $notmod] 2 - global CONFIG_SRCTRL_8BIT - if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_8BIT $CONFIG_SRCTRL_8BIT [list $notmod] 2 } - global CONFIG_SRCTRL_PROMWS - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_PROMWS $CONFIG_SRCTRL_PROMWS $notmod } - global CONFIG_SRCTRL_RAMWS - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_RAMWS $CONFIG_SRCTRL_RAMWS $notmod } - global CONFIG_SRCTRL_IOWS - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_IOWS $CONFIG_SRCTRL_IOWS $notmod } - global CONFIG_SRCTRL_RMW - if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_RMW $CONFIG_SRCTRL_RMW [list $notmod] 2 } - global tmpvar_27 - if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } - if { $tmpvar_27 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } - if { $tmpvar_27 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} - global tmpvar_28 - if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } - if { $tmpvar_28 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } - if { $tmpvar_28 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } - if { $tmpvar_28 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } - if { $tmpvar_28 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } - if { $tmpvar_28 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } - if { $tmpvar_28 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } - if { $tmpvar_28 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } - if { $tmpvar_28 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} - global CONFIG_SRCTRL_ROMASEL - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_ROMASEL $CONFIG_SRCTRL_ROMASEL $notmod } - write_comment $cfg $autocfg "Leon2 memory controller " - global CONFIG_MCTRL_LEON2 - write_tristate $cfg $autocfg CONFIG_MCTRL_LEON2 $CONFIG_MCTRL_LEON2 [list $notmod] 2 - global CONFIG_MCTRL_8BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_8BIT $CONFIG_MCTRL_8BIT [list $notmod] 2 } - global CONFIG_MCTRL_16BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_16BIT $CONFIG_MCTRL_16BIT [list $notmod] 2 } - global CONFIG_MCTRL_5CS - if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_5CS $CONFIG_MCTRL_5CS [list $notmod] 2 } - global CONFIG_MCTRL_SDRAM - if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM $CONFIG_MCTRL_SDRAM [list $notmod] 2 } - global CONFIG_MCTRL_SDRAM_SEPBUS - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM_SEPBUS $CONFIG_MCTRL_SDRAM_SEPBUS [list $notmod] 2 } - global CONFIG_MCTRL_SDRAM_BUS64 - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM_BUS64 $CONFIG_MCTRL_SDRAM_BUS64 [list $notmod] 2 } - global CONFIG_MCTRL_SDRAM_INVCLK - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM_INVCLK $CONFIG_MCTRL_SDRAM_INVCLK [list $notmod] 2 } - global CONFIG_MCTRL_PAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PAGE $CONFIG_MCTRL_PAGE [list $notmod] 2 } - global CONFIG_MCTRL_PROGPAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PROGPAGE $CONFIG_MCTRL_PROGPAGE [list $notmod] 2 } + write_comment $cfg $autocfg "Memory controller " + global CONFIG_AHBSTAT_ENABLE + write_tristate $cfg $autocfg CONFIG_AHBSTAT_ENABLE $CONFIG_AHBSTAT_ENABLE [list $notmod] 2 + global CONFIG_AHBSTAT_NFTSLV + if {($CONFIG_AHBSTAT_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_AHBSTAT_NFTSLV $CONFIG_AHBSTAT_NFTSLV $notmod } write_comment $cfg $autocfg "On-chip RAM/ROM " global CONFIG_AHBROM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBROM_ENABLE $CONFIG_AHBROM_ENABLE [list $notmod] 2 @@ -5289,27 +4765,17 @@ proc writeconfig {file1 file2} { if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } - write_comment $cfg $autocfg "Ethernet " - write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 - if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_30 - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_31 + global tmpvar_30 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5332,29 +4798,12 @@ proc writeconfig {file1 file2} { if {($CONFIG_GPT_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GPT_WDOGEN $CONFIG_GPT_WDOGEN [list $notmod] 2 } global CONFIG_GPT_WDOG if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {write_hex $cfg $autocfg CONFIG_GPT_WDOG $CONFIG_GPT_WDOG $notmod } - write_comment $cfg $autocfg "ATA Controller" - global CONFIG_ATA_ENABLE - write_tristate $cfg $autocfg CONFIG_ATA_ENABLE $CONFIG_ATA_ENABLE [list $notmod] 2 - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_ATAIO $CONFIG_ATAIO $notmod } - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_ATAIRQ $CONFIG_ATAIRQ $notmod } - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_ATA_MWDMA $CONFIG_ATA_MWDMA [list $notmod] 2 } - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {write_int $cfg $autocfg CONFIG_ATA_FIFO $CONFIG_ATA_FIFO $notmod } - write_comment $cfg $autocfg "Keybord and VGA interface" - global CONFIG_KBD_ENABLE - write_tristate $cfg $autocfg CONFIG_KBD_ENABLE $CONFIG_KBD_ENABLE [list $notmod] 2 - global CONFIG_VGA_ENABLE - write_tristate $cfg $autocfg CONFIG_VGA_ENABLE $CONFIG_VGA_ENABLE [list $notmod] 2 - global CONFIG_SVGA_ENABLE - if {($CONFIG_VGA_ENABLE == 0)} then {write_tristate $cfg $autocfg CONFIG_SVGA_ENABLE $CONFIG_SVGA_ENABLE [list $notmod] 2 } - write_comment $cfg $autocfg "Gleichmann Options " - global CONFIG_AHB2HPI_ENABLE - write_tristate $cfg $autocfg CONFIG_AHB2HPI_ENABLE $CONFIG_AHB2HPI_ENABLE [list $notmod] 2 - global CONFIG_DAC_AHB_ENABLE - write_tristate $cfg $autocfg CONFIG_DAC_AHB_ENABLE $CONFIG_DAC_AHB_ENABLE [list $notmod] 2 + global CONFIG_GRGPIO_ENABLE + write_tristate $cfg $autocfg CONFIG_GRGPIO_ENABLE $CONFIG_GRGPIO_ENABLE [list $notmod] 2 + global CONFIG_GRGPIO_WIDTH + if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRGPIO_WIDTH $CONFIG_GRGPIO_WIDTH $notmod } + global CONFIG_GRGPIO_IMASK + if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_GRGPIO_IMASK $CONFIG_GRGPIO_IMASK $notmod } write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -5399,7 +4848,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5409,6 +4859,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5427,8 +4879,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5511,11 +4968,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5536,30 +4995,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 - global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 - global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 - global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 - global CONFIG_DSU_ETHSZ8; set CONFIG_DSU_ETHSZ8 0 - global CONFIG_DSU_ETHSZ16; set CONFIG_DSU_ETHSZ16 0 - global CONFIG_SRCTRL_SRBANKS1; set CONFIG_SRCTRL_SRBANKS1 0 - global CONFIG_SRCTRL_SRBANKS2; set CONFIG_SRCTRL_SRBANKS2 0 - global CONFIG_SRCTRL_SRBANKS3; set CONFIG_SRCTRL_SRBANKS3 0 - global CONFIG_SRCTRL_SRBANKS4; set CONFIG_SRCTRL_SRBANKS4 0 - global CONFIG_SRCTRL_SRBANKS5; set CONFIG_SRCTRL_SRBANKS5 0 - global CONFIG_SRCTRL_BANKSZ0; set CONFIG_SRCTRL_BANKSZ0 0 - global CONFIG_SRCTRL_BANKSZ1; set CONFIG_SRCTRL_BANKSZ1 0 - global CONFIG_SRCTRL_BANKSZ2; set CONFIG_SRCTRL_BANKSZ2 0 - global CONFIG_SRCTRL_BANKSZ3; set CONFIG_SRCTRL_BANKSZ3 0 - global CONFIG_SRCTRL_BANKSZ4; set CONFIG_SRCTRL_BANKSZ4 0 - global CONFIG_SRCTRL_BANKSZ5; set CONFIG_SRCTRL_BANKSZ5 0 - global CONFIG_SRCTRL_BANKSZ6; set CONFIG_SRCTRL_BANKSZ6 0 - global CONFIG_SRCTRL_BANKSZ7; set CONFIG_SRCTRL_BANKSZ7 0 - global CONFIG_SRCTRL_BANKSZ8; set CONFIG_SRCTRL_BANKSZ8 0 - global CONFIG_SRCTRL_BANKSZ9; set CONFIG_SRCTRL_BANKSZ9 0 - global CONFIG_SRCTRL_BANKSZ10; set CONFIG_SRCTRL_BANKSZ10 0 - global CONFIG_SRCTRL_BANKSZ11; set CONFIG_SRCTRL_BANKSZ11 0 - global CONFIG_SRCTRL_BANKSZ12; set CONFIG_SRCTRL_BANKSZ12 0 - global CONFIG_SRCTRL_BANKSZ13; set CONFIG_SRCTRL_BANKSZ13 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0 global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0 @@ -5567,11 +5006,6 @@ proc clear_choices { } { global CONFIG_AHBRAM_SZ16; set CONFIG_AHBRAM_SZ16 0 global CONFIG_AHBRAM_SZ32; set CONFIG_AHBRAM_SZ32 0 global CONFIG_AHBRAM_SZ64; set CONFIG_AHBRAM_SZ64 0 - global CONFIG_GRETH_FIFO4; set CONFIG_GRETH_FIFO4 0 - global CONFIG_GRETH_FIFO8; set CONFIG_GRETH_FIFO8 0 - global CONFIG_GRETH_FIFO16; set CONFIG_GRETH_FIFO16 0 - global CONFIG_GRETH_FIFO32; set CONFIG_GRETH_FIFO32 0 - global CONFIG_GRETH_FIFO64; set CONFIG_GRETH_FIFO64 0 global CONFIG_UA1_FIFO1; set CONFIG_UA1_FIFO1 0 global CONFIG_UA1_FIFO2; set CONFIG_UA1_FIFO2 0 global CONFIG_UA1_FIFO4; set CONFIG_UA1_FIFO4 0 @@ -5654,8 +5088,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5674,6 +5110,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5714,324 +5154,296 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" - global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } - global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } - global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } - global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } - global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } global tmpvar_27 - set tmpvar_27 "1" - global CONFIG_SRCTRL_SRBANKS1 - if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_27 "1" } - global CONFIG_SRCTRL_SRBANKS2 - if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_27 "2" } - global CONFIG_SRCTRL_SRBANKS3 - if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_27 "3" } - global CONFIG_SRCTRL_SRBANKS4 - if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_27 "4" } - global CONFIG_SRCTRL_SRBANKS5 - if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_27 "5" } - global tmpvar_28 - set tmpvar_28 "0" - global CONFIG_SRCTRL_BANKSZ0 - if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_28 "8" } - global CONFIG_SRCTRL_BANKSZ1 - if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_28 "16" } - global CONFIG_SRCTRL_BANKSZ2 - if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_28 "32" } - global CONFIG_SRCTRL_BANKSZ3 - if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_28 "64" } - global CONFIG_SRCTRL_BANKSZ4 - if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_28 "128" } - global CONFIG_SRCTRL_BANKSZ5 - if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_28 "256" } - global CONFIG_SRCTRL_BANKSZ6 - if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_28 "512" } - global CONFIG_SRCTRL_BANKSZ7 - if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_28 "1024" } - global CONFIG_SRCTRL_BANKSZ8 - if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_28 "2048" } - global CONFIG_SRCTRL_BANKSZ9 - if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_28 "4096" } - global CONFIG_SRCTRL_BANKSZ10 - if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_28 "8192" } - global CONFIG_SRCTRL_BANKSZ11 - if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_28 "16384" } - global CONFIG_SRCTRL_BANKSZ12 - if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_28 "32768" } - global CONFIG_SRCTRL_BANKSZ13 - if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_28 "65536" } + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } global tmpvar_29 set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 @@ -6049,31 +5461,19 @@ proc update_choices { } { global CONFIG_AHBRAM_SZ64 if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } global tmpvar_30 - set tmpvar_30 "8" - global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } - global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } - global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } - global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } - global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } - global tmpvar_31 - set tmpvar_31 "1" + set tmpvar_30 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_30 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_30 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_30 "32" } } diff --git a/designs/leon3-digilent-xc7z020/leon3_zedboard_stub_sim.vhd b/designs/leon3-digilent-xc7z020/leon3_zedboard_stub_sim.vhd new file mode 100644 index 00000000..26f00a95 --- /dev/null +++ b/designs/leon3-digilent-xc7z020/leon3_zedboard_stub_sim.vhd @@ -0,0 +1,65 @@ +------------------------------------------------------------------------------- +-- leon3_zedboard_stub.vhd +------------------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; + +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; + +entity leon3_zedboard_stub is + port ( + processing_system7_0_MIO : inout std_logic_vector(53 downto 0); + processing_system7_0_PS_SRSTB : in std_logic; + processing_system7_0_PS_CLK : in std_logic; + processing_system7_0_PS_PORB : in std_logic; + processing_system7_0_DDR_Clk : inout std_logic; + processing_system7_0_DDR_Clk_n : inout std_logic; + processing_system7_0_DDR_CKE : inout std_logic; + processing_system7_0_DDR_CS_n : inout std_logic; + processing_system7_0_DDR_RAS_n : inout std_logic; + processing_system7_0_DDR_CAS_n : inout std_logic; + processing_system7_0_DDR_WEB_pin : out std_logic; + processing_system7_0_DDR_BankAddr : inout std_logic_vector(2 downto 0); + processing_system7_0_DDR_Addr : inout std_logic_vector(14 downto 0); + processing_system7_0_DDR_ODT : inout std_logic; + processing_system7_0_DDR_DRSTB : inout std_logic; + processing_system7_0_DDR_DQ : inout std_logic_vector(31 downto 0); + processing_system7_0_DDR_DM : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_DQS : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_DQS_n : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_VRN : inout std_logic; + processing_system7_0_DDR_VRP : inout std_logic; + ahblite_axi_bridge_0_S_AHB_HSEL_pin : in std_logic; + ahblite_axi_bridge_0_S_AHB_HADDR_pin : in std_logic_vector(31 downto 0); + ahblite_axi_bridge_0_S_AHB_HPROT_pin : in std_logic_vector(3 downto 0); + ahblite_axi_bridge_0_S_AHB_HTRANS_pin : in std_logic_vector(1 downto 0); + ahblite_axi_bridge_0_S_AHB_HSIZE_pin : in std_logic_vector(2 downto 0); + ahblite_axi_bridge_0_S_AHB_HWRITE_pin : in std_logic; + ahblite_axi_bridge_0_S_AHB_HBURST_pin : in std_logic_vector(2 downto 0); + ahblite_axi_bridge_0_S_AHB_HWDATA_pin : in std_logic_vector(31 downto 0); + ahblite_axi_bridge_0_S_AHB_HREADY_OUT_pin : out std_logic; + ahblite_axi_bridge_0_S_AHB_HREADY_IN_pin : in std_logic; + ahblite_axi_bridge_0_S_AHB_HRDATA_pin : out std_logic_vector(31 downto 0); + ahblite_axi_bridge_0_S_AHB_HRESP_pin : out std_logic; + processing_system7_0_FCLK_CLK0_pin : out std_logic; + processing_system7_0_FCLK_RESET0_N_pin : out std_logic; + processing_system7_0_FCLK_CLKTRIG0_N_pin : in std_logic + ); +end leon3_zedboard_stub; + +architecture STRUCTURE of leon3_zedboard_stub is + +signal gclk : std_logic := '0'; +signal rst : std_logic := '0'; + +begin + + gclk <= not gclk after 10.0 ns; + rst <= '1' after 1 us; + + processing_system7_0_FCLK_CLK0_pin <= gclk; + processing_system7_0_FCLK_RESET0_N_pin <= rst; + +end architecture STRUCTURE; + diff --git a/designs/leon3-digilent-xc7z020/leon3mp.vhd b/designs/leon3-digilent-xc7z020/leon3mp.vhd new file mode 100644 index 00000000..3c127c5e --- /dev/null +++ b/designs/leon3-digilent-xc7z020/leon3mp.vhd @@ -0,0 +1,457 @@ +----------------------------------------------------------------------------- +-- LEON3 Zedboard Demonstration design +-- Copyright (C) 2012 Fredrik Ringhage, Aeroflex Gaisler +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler +-- +-- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +------------------------------------------------------------------------------ + +library ieee; +use ieee.std_logic_1164.all; +library grlib, techmap; +use grlib.amba.all; +use grlib.stdlib.all; +use grlib.devices.all; +use grlib.config_types.all; +use grlib.config.all; +use techmap.gencomp.all; +use techmap.allclkgen.all; +library gaisler; +use gaisler.leon3.all; +use gaisler.uart.all; +use gaisler.misc.all; +use gaisler.i2c.all; +use gaisler.net.all; +use gaisler.jtag.all; +-- pragma translate_off +use gaisler.sim.all; +library unisim; +use unisim.all; +-- pragma translate_on + +use work.config.all; + +entity leon3mp is + generic ( + fabtech : integer := CFG_FABTECH; + memtech : integer := CFG_MEMTECH; + padtech : integer := CFG_PADTECH; + clktech : integer := CFG_CLKTECH; + disas : integer := CFG_DISAS; -- Enable disassembly to console + dbguart : integer := CFG_DUART; -- Print UART on console + pclow : integer := CFG_PCLOW; + testahb : boolean := false + ); + port ( + processing_system7_0_MIO : inout std_logic_vector(53 downto 0); + processing_system7_0_PS_SRSTB : in std_logic; + processing_system7_0_PS_CLK : in std_logic; + processing_system7_0_PS_PORB : in std_logic; + processing_system7_0_DDR_Clk : inout std_logic; + processing_system7_0_DDR_Clk_n : inout std_logic; + processing_system7_0_DDR_CKE : inout std_logic; + processing_system7_0_DDR_CS_n : inout std_logic; + processing_system7_0_DDR_RAS_n : inout std_logic; + processing_system7_0_DDR_CAS_n : inout std_logic; + processing_system7_0_DDR_WEB_pin : out std_logic; + processing_system7_0_DDR_BankAddr : inout std_logic_vector(2 downto 0); + processing_system7_0_DDR_Addr : inout std_logic_vector(14 downto 0); + processing_system7_0_DDR_ODT : inout std_logic; + processing_system7_0_DDR_DRSTB : inout std_logic; + processing_system7_0_DDR_DQ : inout std_logic_vector(31 downto 0); + processing_system7_0_DDR_DM : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_DQS : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_DQS_n : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_VRN : inout std_logic; + processing_system7_0_DDR_VRP : inout std_logic; + button : in std_logic_vector(3 downto 0); + switch : inout std_logic_vector(7 downto 0); + led : out std_logic_vector(7 downto 0) + ); +end; + +architecture rtl of leon3mp is + +constant use_ps_block : boolean := true; + +constant hconfig : ahb_config_type := ( + 0 => ahb_device_reg ( VENDOR_GAISLER, GAISLER_MIG_SERIES7, 0, 0, 0), + 4 => ahb_membar(16#000#, '1', '1', 16#F80#), + others => zero32); + +constant maxahbm : integer := CFG_NCPU+CFG_AHB_JTAG; +constant maxahbs : integer := 1+CFG_DSU+CFG_AHBROMEN+CFG_AHBRAMEN+1+2; +constant maxapbs : integer := CFG_IRQ3_ENABLE+CFG_GPT_ENABLE+CFG_GRGPIO_ENABLE+CFG_AHBSTAT; + +signal vcc, gnd : std_logic; + +signal apbi : apb_slv_in_type; +signal apbo : apb_slv_out_vector := (others => apb_none); +signal ahbsi : ahb_slv_in_type; +signal ahbso : ahb_slv_out_vector := (others => ahbs_none); +signal ahbmi : ahb_mst_in_type; +signal vahbmi : ahb_mst_in_type; +signal ahbmo : ahb_mst_out_vector := (others => ahbm_none); +signal vahbmo : ahb_mst_out_type; + +signal clkm, rstn, rstraw, sdclkl : std_ulogic; + +signal cgi, cgi2 : clkgen_in_type; +signal cgo, cgo2 : clkgen_out_type; +signal u1i, u2i, dui : uart_in_type; +signal u1o, u2o, duo : uart_out_type; + +signal irqi : irq_in_vector(0 to CFG_NCPU-1); +signal irqo : irq_out_vector(0 to CFG_NCPU-1); + +signal dbgi : l3_debug_in_vector(0 to CFG_NCPU-1); +signal dbgo : l3_debug_out_vector(0 to CFG_NCPU-1); + +signal dsui : dsu_in_type; +signal dsuo : dsu_out_type; + +signal rxd1 : std_logic; +signal txd1 : std_logic; + +signal ethi : eth_in_type; +signal etho : eth_out_type; +signal egtx_clk :std_ulogic; +signal negtx_clk :std_ulogic; + +signal gpti : gptimer_in_type; +signal gpto : gptimer_out_type; + +signal gpioi : gpio_in_type; +signal gpioo : gpio_out_type; + +signal clklock, elock, ulock : std_ulogic; + +signal lock, calib_done, clkml, lclk, rst, ndsuact : std_ulogic; +signal tck, tckn, tms, tdi, tdo : std_ulogic; + +signal lcd_datal : std_logic_vector(11 downto 0); +signal lcd_hsyncl, lcd_vsyncl, lcd_del, lcd_reset_bl : std_ulogic; + +signal i2ci, dvi_i2ci : i2c_in_type; +signal i2co, dvi_i2co : i2c_out_type; + +constant BOARD_FREQ : integer := 50000; -- input frequency in KHz +constant CPU_FREQ : integer := BOARD_FREQ * CFG_CLKMUL / CFG_CLKDIV; -- cpu frequency in KHz + +signal stati : ahbstat_in_type; + +component leon3_zedboard_stub + port ( + processing_system7_0_MIO : inout std_logic_vector(53 downto 0); + processing_system7_0_PS_SRSTB : in std_logic; + processing_system7_0_PS_CLK : in std_logic; + processing_system7_0_PS_PORB : in std_logic; + processing_system7_0_DDR_Clk : inout std_logic; + processing_system7_0_DDR_Clk_n : inout std_logic; + processing_system7_0_DDR_CKE : inout std_logic; + processing_system7_0_DDR_CS_n : inout std_logic; + processing_system7_0_DDR_RAS_n : inout std_logic; + processing_system7_0_DDR_CAS_n : inout std_logic; + processing_system7_0_DDR_WEB_pin : out std_logic; + processing_system7_0_DDR_BankAddr : inout std_logic_vector(2 downto 0); + processing_system7_0_DDR_Addr : inout std_logic_vector(14 downto 0); + processing_system7_0_DDR_ODT : inout std_logic; + processing_system7_0_DDR_DRSTB : inout std_logic; + processing_system7_0_DDR_DQ : inout std_logic_vector(31 downto 0); + processing_system7_0_DDR_DM : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_DQS : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_DQS_n : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_VRN : inout std_logic; + processing_system7_0_DDR_VRP : inout std_logic; + ahblite_axi_bridge_0_S_AHB_HSEL_pin : in std_logic; + ahblite_axi_bridge_0_S_AHB_HADDR_pin : in std_logic_vector(31 downto 0); + ahblite_axi_bridge_0_S_AHB_HPROT_pin : in std_logic_vector(3 downto 0); + ahblite_axi_bridge_0_S_AHB_HTRANS_pin : in std_logic_vector(1 downto 0); + ahblite_axi_bridge_0_S_AHB_HSIZE_pin : in std_logic_vector(2 downto 0); + ahblite_axi_bridge_0_S_AHB_HWRITE_pin : in std_logic; + ahblite_axi_bridge_0_S_AHB_HBURST_pin : in std_logic_vector(2 downto 0); + ahblite_axi_bridge_0_S_AHB_HWDATA_pin : in std_logic_vector(31 downto 0); + ahblite_axi_bridge_0_S_AHB_HREADY_OUT_pin : out std_logic; + ahblite_axi_bridge_0_S_AHB_HREADY_IN_pin : in std_logic; + ahblite_axi_bridge_0_S_AHB_HRDATA_pin : out std_logic_vector(31 downto 0); + ahblite_axi_bridge_0_S_AHB_HRESP_pin : out std_logic; + processing_system7_0_FCLK_CLK0_pin : out std_logic; + processing_system7_0_FCLK_RESET0_N_pin : out std_logic; + processing_system7_0_FCLK_CLKTRIG0_N_pin : in std_logic + ); +end component; + +begin + +---------------------------------------------------------------------- +--- Reset and Clock generation ------------------------------------- +---------------------------------------------------------------------- + + vcc <= '1'; gnd <= '0'; + + lock <= calib_done ; +---------------------------------------------------------------------- +--- AHB CONTROLLER -------------------------------------------------- +---------------------------------------------------------------------- + + ahb0 : ahbctrl -- AHB arbiter/multiplexer + generic map (defmast => CFG_DEFMST, split => CFG_SPLIT, + rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO, fpnpen => CFG_FPNPEN, + nahbm => maxahbm, nahbs => maxahbs) + port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso); + +---------------------------------------------------------------------- +--- LEON3 processor and DSU ----------------------------------------- +---------------------------------------------------------------------- + + nosh : if CFG_GRFPUSH = 0 generate + cpu : for i in 0 to CFG_NCPU-1 generate + l3ft : if CFG_LEON3FT_EN /= 0 generate + leon3ft0 : leon3ft -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, + CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, + CFG_IUFT_EN, CFG_FPUFT_EN, CFG_CACHE_FT_EN, CFG_RF_ERRINJ, + CFG_CACHE_ERRINJ, CFG_DFIXED, CFG_LEON3_NETLIST, CFG_SCAN, CFG_MMU_PAGE) + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + irqi(i), irqo(i), dbgi(i), dbgo(i), clkm); + end generate; + + l3s : if CFG_LEON3FT_EN = 0 generate + u0 : leon3s -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, + CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, + CFG_DFIXED, CFG_SCAN, CFG_MMU_PAGE, CFG_BP) + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + irqi(i), irqo(i), dbgi(i), dbgo(i)); + end generate; + end generate; + end generate; + + led1_pad : outpad generic map (tech => padtech, level => cmos, voltage => x33v) port map (led(1), dbgo(0).error); + + dsugen : if CFG_DSU = 1 generate + dsu0 : dsu3 -- LEON3 Debug Support Unit + generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#, + ncpu => CFG_NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ) + port map (rstn, clkm, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo); + dsui.enable <= '1'; + dsui_break_pad : inpad generic map (level => cmos, voltage => x18v, tech => padtech) port map (button(0), dsui.break); + dsuact_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) port map (led(0), ndsuact); + ndsuact <= not dsuo.active; + end generate; + + nodsu : if CFG_DSU = 0 generate + dsuo.tstop <= '0'; dsuo.active <= '0'; ahbso(2) <= ahbs_none; + end generate; + + ahbjtaggen0 :if CFG_AHB_JTAG = 1 generate + ahbjtag0 : ahbjtag generic map(tech => fabtech, hindex => 1) + port map(rstn, clkm, tck, tms, tdi, tdo, ahbmi, ahbmo(1), + open, open, open, open, open, open, open, gnd); + end generate; + + nojtag : if CFG_AHB_JTAG = 0 generate apbo(1) <= apb_none; end generate; + + leon3_zedboard_stub_i : leon3_zedboard_stub + port map ( + processing_system7_0_MIO => processing_system7_0_MIO, + processing_system7_0_PS_SRSTB => processing_system7_0_PS_SRSTB, + processing_system7_0_PS_CLK => processing_system7_0_PS_CLK, + processing_system7_0_PS_PORB => processing_system7_0_PS_PORB, + processing_system7_0_DDR_Clk => processing_system7_0_DDR_Clk, + processing_system7_0_DDR_Clk_n => processing_system7_0_DDR_Clk_n, + processing_system7_0_DDR_CKE => processing_system7_0_DDR_CKE, + processing_system7_0_DDR_CS_n => processing_system7_0_DDR_CS_n, + processing_system7_0_DDR_RAS_n => processing_system7_0_DDR_RAS_n, + processing_system7_0_DDR_CAS_n => processing_system7_0_DDR_CAS_n, + processing_system7_0_DDR_WEB_pin => processing_system7_0_DDR_WEB_pin, + processing_system7_0_DDR_BankAddr => processing_system7_0_DDR_BankAddr, + processing_system7_0_DDR_Addr => processing_system7_0_DDR_Addr, + processing_system7_0_DDR_ODT => processing_system7_0_DDR_ODT, + processing_system7_0_DDR_DRSTB => processing_system7_0_DDR_DRSTB, + processing_system7_0_DDR_DQ => processing_system7_0_DDR_DQ, + processing_system7_0_DDR_DM => processing_system7_0_DDR_DM, + processing_system7_0_DDR_DQS => processing_system7_0_DDR_DQS, + processing_system7_0_DDR_DQS_n => processing_system7_0_DDR_DQS_n, + processing_system7_0_DDR_VRN => processing_system7_0_DDR_VRN, + processing_system7_0_DDR_VRP => processing_system7_0_DDR_VRP, + ahblite_axi_bridge_0_S_AHB_HSEL_pin => ahbsi.hsel(4), + ahblite_axi_bridge_0_S_AHB_HADDR_pin => ahbsi.haddr, + ahblite_axi_bridge_0_S_AHB_HPROT_pin => ahbsi.hprot, + ahblite_axi_bridge_0_S_AHB_HTRANS_pin => ahbsi.htrans, + ahblite_axi_bridge_0_S_AHB_HSIZE_pin => ahbsi.hsize, + ahblite_axi_bridge_0_S_AHB_HWRITE_pin => ahbsi.hwrite, + ahblite_axi_bridge_0_S_AHB_HBURST_pin => ahbsi.hburst, + ahblite_axi_bridge_0_S_AHB_HWDATA_pin => ahbsi.hwdata, + ahblite_axi_bridge_0_S_AHB_HREADY_OUT_pin => ahbso(4).hready, + ahblite_axi_bridge_0_S_AHB_HREADY_IN_pin => ahbsi.hready, + ahblite_axi_bridge_0_S_AHB_HRDATA_pin => ahbso(4).hrdata, + ahblite_axi_bridge_0_S_AHB_HRESP_pin => ahbso(4).hresp(0), + processing_system7_0_FCLK_CLK0_pin => clkm, + processing_system7_0_FCLK_RESET0_N_pin => rstn, + processing_system7_0_FCLK_CLKTRIG0_N_pin => '0' + ); + + calib_done <= '1'; + ahbso(4).hresp(1) <= '0'; + ahbso(4).hconfig <= hconfig; + ahbso(4).hirq <= (others => '0'); + ahbso(4).hindex <= 4; + ahbso(4).hsplit <= (others => '0'); + +---------------------------------------------------------------------- +--- APB Bridge and various periherals ------------------------------- +---------------------------------------------------------------------- + + apb0 : apbctrl -- AHB/APB bridge + generic map (hindex => 1, haddr => CFG_APBADDR, nslaves => 16) + port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo ); + + irqctrl : if CFG_IRQ3_ENABLE /= 0 generate + irqctrl0 : irqmp -- interrupt controller + generic map (pindex => 2, paddr => 2, ncpu => CFG_NCPU) + port map (rstn, clkm, apbi, apbo(2), irqo, irqi); + end generate; + irq3 : if CFG_IRQ3_ENABLE = 0 generate + x : for i in 0 to CFG_NCPU-1 generate + irqi(i).irl <= "0000"; + end generate; + apbo(2) <= apb_none; + end generate; + + gpt : if CFG_GPT_ENABLE /= 0 generate + timer0 : gptimer -- timer unit + generic map (pindex => 3, paddr => 3, pirq => CFG_GPT_IRQ, + sepirq => CFG_GPT_SEPIRQ, sbits => CFG_GPT_SW, ntimers => CFG_GPT_NTIM, + nbits => CFG_GPT_TW, wdog => 0) + port map (rstn, clkm, apbi, apbo(3), gpti, gpto); + gpti.dhalt <= dsuo.tstop; gpti.extclk <= '0'; + end generate; + + nogpt : if CFG_GPT_ENABLE = 0 generate apbo(3) <= apb_none; end generate; + + gpio0 : if CFG_GRGPIO_ENABLE /= 0 generate -- GPIO unit + grgpio0: grgpio + generic map(pindex => 10, paddr => 10, imask => CFG_GRGPIO_IMASK, nbits => CFG_GRGPIO_WIDTH) + port map(rst => rstn, clk => clkm, apbi => apbi, apbo => apbo(10), + gpioi => gpioi, gpioo => gpioo); + pio_pads : for i in 0 to 7 generate + pio_pad : iopad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (switch(i), gpioo.dout(i), gpioo.oen(i), gpioi.din(i)); + end generate; + pio_pads2 : for i in 8 to 10 generate + pio_pad : inpad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (button(i-8+1), gpioi.din(i)); + end generate; + pio_pads3 : for i in 11 to 14 generate + pio_pad : outpad generic map (tech => padtech, level => cmos, voltage => x33v) + port map (led(i-11+4), gpioo.dout(i)); + end generate; + end generate; + + ua1 : if CFG_UART1_ENABLE /= 0 generate + uart1 : apbuart -- UART 1 + generic map (pindex => 1, paddr => 1, pirq => 2, console => dbguart, + fifosize => CFG_UART1_FIFO) + port map (rstn, clkm, apbi, apbo(1), u1i, u1o); + u1i.rxd <= rxd1; + u1i.ctsn <= '0'; + u1i.extclk <= '0'; + txd1 <= u1o.txd; + serrx_pad : outpad generic map (level => cmos, voltage => x33v, tech => padtech) + port map (led(2), rxd1); + sertx_pad : outpad generic map (level => cmos, voltage => x33v, tech => padtech) + port map (led(3), txd1); + end generate; + noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate; + + ahbs : if CFG_AHBSTAT = 1 generate -- AHB status register + ahbstat0 : ahbstat generic map (pindex => 15, paddr => 15, pirq => 7, + nftslv => CFG_AHBSTATN) + port map (rstn, clkm, ahbmi, ahbsi, stati, apbi, apbo(15)); + end generate; + +----------------------------------------------------------------------- +--- AHB ROM ---------------------------------------------------------- +----------------------------------------------------------------------- + + bpromgen : if CFG_AHBROMEN /= 0 generate + brom : entity work.ahbrom + generic map (hindex => 7, haddr => CFG_AHBRODDR, pipe => CFG_AHBROPIP) + port map ( rstn, clkm, ahbsi, ahbso(7)); + end generate; + +----------------------------------------------------------------------- +--- AHB RAM ---------------------------------------------------------- +----------------------------------------------------------------------- + + ocram : if CFG_AHBRAMEN = 1 generate + ahbram0 : ahbram generic map (hindex => 5, haddr => CFG_AHBRADDR, + tech => CFG_MEMTECH, kbytes => CFG_AHBRSZ) + port map ( rstn, clkm, ahbsi, ahbso(5)); + end generate; + +----------------------------------------------------------------------- +--- Test report module ---------------------------------------------- +----------------------------------------------------------------------- + + -- pragma translate_off + test0_gen : if (testahb = true) generate + test0 : ahbrep generic map (hindex => 3, haddr => 16#200#) + port map (rstn, clkm, ahbsi, ahbso(3)); + end generate; + -- pragma translate_on + + test1_gen : if (testahb = false) generate + ahbram0 : ahbram generic map (hindex => 3, haddr => 16#200#, + tech => CFG_MEMTECH, kbytes => CFG_AHBRSZ) + port map ( rstn, clkm, ahbsi, ahbso(3)); + end generate; + + ----------------------------------------------------------------------- + --- Drive unused bus elements --------------------------------------- + ----------------------------------------------------------------------- + + nam1 : for i in (maxahbs+1) to NAHBMST-1 generate + ahbmo(i) <= ahbm_none; + end generate; + + ----------------------------------------------------------------------- + --- Boot message ---------------------------------------------------- + ----------------------------------------------------------------------- + + -- pragma translate_off + x : report_version + generic map ( + msg1 => "LEON3 Xilinx Zedboard Demonstration design", + msg2 => "GRLIB Version " & tost(LIBVHDL_VERSION/1000) & "." & tost((LIBVHDL_VERSION mod 1000)/100) + & "." & tost(LIBVHDL_VERSION mod 100) & ", build " & tost(LIBVHDL_BUILD), + msg3 => "Target technology: " & tech_table(fabtech) & ", memory library: " & tech_table(memtech), + mdel => 1 + ); + -- pragma translate_on + end; + diff --git a/designs/leon3-digilent-xc7z020/testbench.vhd b/designs/leon3-digilent-xc7z020/testbench.vhd new file mode 100644 index 00000000..c4831e7f --- /dev/null +++ b/designs/leon3-digilent-xc7z020/testbench.vhd @@ -0,0 +1,179 @@ +----------------------------------------------------------------------------- +-- LEON3 Demonstration design test bench +-- Copyright (C) 2012 Fredrik Ringhage, Gaisler Research +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler +-- +-- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +------------------------------------------------------------------------------ + +library ieee; +use ieee.std_logic_1164.all; +library gaisler; +use gaisler.libdcom.all; +use gaisler.sim.all; +library grlib; +use grlib.amba.all; +use grlib.stdlib.all; +use grlib.devices.all; +library micron; +use micron.all; +library techmap; +use techmap.gencomp.all; +use work.debug.all; + +use work.config.all; + +entity testbench is + generic ( + fabtech : integer := CFG_FABTECH; + memtech : integer := CFG_MEMTECH; + padtech : integer := CFG_PADTECH; + clktech : integer := CFG_CLKTECH; + disas : integer := CFG_DISAS; -- Enable disassembly to console + dbguart : integer := CFG_DUART; -- Print UART on console + pclow : integer := CFG_PCLOW; + testahb : boolean := true + ); +end; + +architecture behav of testbench is + +constant promfile : string := "prom.srec"; -- rom contents +constant sramfile : string := "sram.srec"; -- ram contents +constant sdramfile : string := "sdram.srec"; -- sdram contents + +signal GND : std_ulogic := '0'; +signal VCC : std_ulogic := '1'; +signal NC : std_ulogic := 'Z'; +signal gclk : std_logic := '0'; +signal rst : std_logic := '0'; +signal button : std_logic_vector(3 downto 0) := (others => '0'); +signal switch : std_logic_vector(7 downto 0); -- I/O port +signal led : std_logic_vector(7 downto 0); -- I/O port + +signal processing_system7_0_MIO : std_logic_vector(53 downto 0); +signal processing_system7_0_PS_SRSTB : std_logic; +signal processing_system7_0_PS_CLK : std_logic; +signal processing_system7_0_PS_PORB : std_logic; +signal processing_system7_0_DDR_Clk : std_logic; +signal processing_system7_0_DDR_Clk_n : std_logic; +signal processing_system7_0_DDR_CKE : std_logic; +signal processing_system7_0_DDR_CS_n : std_logic; +signal processing_system7_0_DDR_RAS_n : std_logic; +signal processing_system7_0_DDR_CAS_n : std_logic; +signal processing_system7_0_DDR_WEB_pin : std_logic; +signal processing_system7_0_DDR_BankAddr : std_logic_vector(2 downto 0); +signal processing_system7_0_DDR_Addr : std_logic_vector(14 downto 0); +signal processing_system7_0_DDR_ODT : std_logic; +signal processing_system7_0_DDR_DRSTB : std_logic; +signal processing_system7_0_DDR_DQ : std_logic_vector(31 downto 0); +signal processing_system7_0_DDR_DM : std_logic_vector(3 downto 0); +signal processing_system7_0_DDR_DQS : std_logic_vector(3 downto 0); +signal processing_system7_0_DDR_DQS_n : std_logic_vector(3 downto 0); +signal processing_system7_0_DDR_VRN : std_logic; +signal processing_system7_0_DDR_VRP : std_logic; + + + +component leon3mp is + generic ( + fabtech : integer := CFG_FABTECH; + memtech : integer := CFG_MEMTECH; + padtech : integer := CFG_PADTECH; + clktech : integer := CFG_CLKTECH; + disas : integer := CFG_DISAS; -- Enable disassembly to console + dbguart : integer := CFG_DUART; -- Print UART on console + pclow : integer := CFG_PCLOW; + testahb : boolean := false + ); + port ( + processing_system7_0_MIO : inout std_logic_vector(53 downto 0); + processing_system7_0_PS_SRSTB : in std_logic; + processing_system7_0_PS_CLK : in std_logic; + processing_system7_0_PS_PORB : in std_logic; + processing_system7_0_DDR_Clk : inout std_logic; + processing_system7_0_DDR_Clk_n : inout std_logic; + processing_system7_0_DDR_CKE : inout std_logic; + processing_system7_0_DDR_CS_n : inout std_logic; + processing_system7_0_DDR_RAS_n : inout std_logic; + processing_system7_0_DDR_CAS_n : inout std_logic; + processing_system7_0_DDR_WEB_pin : out std_logic; + processing_system7_0_DDR_BankAddr : inout std_logic_vector(2 downto 0); + processing_system7_0_DDR_Addr : inout std_logic_vector(14 downto 0); + processing_system7_0_DDR_ODT : inout std_logic; + processing_system7_0_DDR_DRSTB : inout std_logic; + processing_system7_0_DDR_DQ : inout std_logic_vector(31 downto 0); + processing_system7_0_DDR_DM : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_DQS : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_DQS_n : inout std_logic_vector(3 downto 0); + processing_system7_0_DDR_VRN : inout std_logic; + processing_system7_0_DDR_VRP : inout std_logic; + button : in std_logic_vector(3 downto 0); + switch : inout std_logic_vector(7 downto 0); + led : out std_logic_vector(7 downto 0) + ); +end component; + +begin + + -- clock, reset and misc + gclk <= not gclk after 5.0 ns; + rst <= '1' after 1 us; + button <= (others => '0'); + switch <= (others => '0'); + + cpu : leon3mp + generic map ( + fabtech => fabtech, + memtech => memtech, + padtech => padtech, + clktech => clktech, + disas => disas, + dbguart => dbguart, + pclow => pclow, + testahb => testahb + ) + port map ( + processing_system7_0_MIO => processing_system7_0_MIO, + processing_system7_0_PS_SRSTB => processing_system7_0_PS_SRSTB, + processing_system7_0_PS_CLK => processing_system7_0_PS_CLK, + processing_system7_0_PS_PORB => processing_system7_0_PS_PORB, + processing_system7_0_DDR_Clk => processing_system7_0_DDR_Clk, + processing_system7_0_DDR_Clk_n => processing_system7_0_DDR_Clk_n, + processing_system7_0_DDR_CKE => processing_system7_0_DDR_CKE, + processing_system7_0_DDR_CS_n => processing_system7_0_DDR_CS_n, + processing_system7_0_DDR_RAS_n => processing_system7_0_DDR_RAS_n, + processing_system7_0_DDR_CAS_n => processing_system7_0_DDR_CAS_n, + processing_system7_0_DDR_WEB_pin => processing_system7_0_DDR_WEB_pin, + processing_system7_0_DDR_BankAddr => processing_system7_0_DDR_BankAddr, + processing_system7_0_DDR_Addr => processing_system7_0_DDR_Addr, + processing_system7_0_DDR_ODT => processing_system7_0_DDR_ODT, + processing_system7_0_DDR_DRSTB => processing_system7_0_DDR_DRSTB, + processing_system7_0_DDR_DQ => processing_system7_0_DDR_DQ, + processing_system7_0_DDR_DM => processing_system7_0_DDR_DM, + processing_system7_0_DDR_DQS => processing_system7_0_DDR_DQS, + processing_system7_0_DDR_DQS_n => processing_system7_0_DDR_DQS_n, + processing_system7_0_DDR_VRN => processing_system7_0_DDR_VRN, + processing_system7_0_DDR_VRP => processing_system7_0_DDR_VRP, + button => button, + switch => switch, + led => led + ); + +end ; + diff --git a/designs/leon3-lattice-latticeECP3/tkconfig.h b/designs/leon3-digilent-xc7z020/tkconfig.h similarity index 93% rename from designs/leon3-lattice-latticeECP3/tkconfig.h rename to designs/leon3-digilent-xc7z020/tkconfig.h index e445f2e3..df1cd987 100644 --- a/designs/leon3-lattice-latticeECP3/tkconfig.h +++ b/designs/leon3-digilent-xc7z020/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -685,11 +707,6 @@ #define CONFIG_AHB_DTRACE 0 #endif -#ifndef CONFIG_DSU_UART -#define CONFIG_DSU_UART 0 -#endif - - #ifndef CONFIG_DSU_JTAG #define CONFIG_DSU_JTAG 0 #endif @@ -738,48 +755,12 @@ #define CONFIG_DSU_ETH_DIS 0 #endif -#ifndef CONFIG_MCTRL_LEON2 -#define CONFIG_MCTRL_LEON2 0 -#endif - -#ifndef CONFIG_MCTRL_SDRAM -#define CONFIG_MCTRL_SDRAM 0 -#endif - -#ifndef CONFIG_MCTRL_SDRAM_SEPBUS -#define CONFIG_MCTRL_SDRAM_SEPBUS 0 -#endif - -#ifndef CONFIG_MCTRL_SDRAM_INVCLK -#define CONFIG_MCTRL_SDRAM_INVCLK 0 -#endif - -#ifndef CONFIG_MCTRL_SDRAM_BUS64 -#define CONFIG_MCTRL_SDRAM_BUS64 0 +#ifndef CONFIG_AHBSTAT_ENABLE +#define CONFIG_AHBSTAT_ENABLE 0 #endif -#ifndef CONFIG_MCTRL_8BIT -#define CONFIG_MCTRL_8BIT 0 -#endif - -#ifndef CONFIG_MCTRL_16BIT -#define CONFIG_MCTRL_16BIT 0 -#endif - -#ifndef CONFIG_MCTRL_5CS -#define CONFIG_MCTRL_5CS 0 -#endif - -#ifndef CONFIG_MCTRL_EDAC -#define CONFIG_MCTRL_EDAC 0 -#endif - -#ifndef CONFIG_MCTRL_PAGE -#define CONFIG_MCTRL_PAGE 0 -#endif - -#ifndef CONFIG_MCTRL_PROGPAGE -#define CONFIG_MCTRL_PROGPAGE 0 +#ifndef CONFIG_AHBSTAT_NFTSLV +#define CONFIG_AHBSTAT_NFTSLV 1 #endif #ifndef CONFIG_AHBROM_ENABLE @@ -827,28 +808,6 @@ #define CFG_AHBRAMSZ 1 #endif -#ifndef CONFIG_GRETH_ENABLE -#define CONFIG_GRETH_ENABLE 0 -#endif - -#ifndef CONFIG_GRETH_GIGA -#define CONFIG_GRETH_GIGA 0 -#endif - -#if defined CONFIG_GRETH_FIFO4 -#define CFG_GRETH_FIFO 4 -#elif defined CONFIG_GRETH_FIFO8 -#define CFG_GRETH_FIFO 8 -#elif defined CONFIG_GRETH_FIFO16 -#define CFG_GRETH_FIFO 16 -#elif defined CONFIG_GRETH_FIFO32 -#define CFG_GRETH_FIFO 32 -#elif defined CONFIG_GRETH_FIFO64 -#define CFG_GRETH_FIFO 64 -#else -#define CFG_GRETH_FIFO 8 -#endif - #ifndef CONFIG_UART1_ENABLE #define CONFIG_UART1_ENABLE 0 #endif @@ -930,6 +889,16 @@ #define CONFIG_GPT_WDOG 0 #endif +#ifndef CONFIG_GRGPIO_ENABLE +#define CONFIG_GRGPIO_ENABLE 0 +#endif +#ifndef CONFIG_GRGPIO_IMASK +#define CONFIG_GRGPIO_IMASK 0000 +#endif +#ifndef CONFIG_GRGPIO_WIDTH +#define CONFIG_GRGPIO_WIDTH 1 +#endif + #ifndef CONFIG_DEBUG_UART #define CONFIG_DEBUG_UART 0 diff --git a/designs/leon3-digilent-xup/Makefile b/designs/leon3-digilent-xup/Makefile index e76d3b5e..f0d7c556 100644 --- a/designs/leon3-digilent-xup/Makefile +++ b/designs/leon3-digilent-xup/Makefile @@ -20,10 +20,10 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF usbhc hynix \ - tmtc openchip cypress ihp gleichmann opencores spw fmf gsi spansion + tmtc openchip cypress ihp opencores spw fmf gsi spansion DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest \ - ata can usb spacewire grusbhc hcan leon4 leon4b64 l2cache \ - slink ascs pwm haps coremp7 gr1553b iommu + can usb spacewire grusbhc hcan leon4 leon4v0 l2cache \ + slink ascs pwm gr1553b iommu FILESKIP = grcan.vhd i2cmst.vhd include $(GRLIB)/bin/Makefile diff --git a/designs/leon3-digilent-xup/ahbrom.vhd b/designs/leon3-digilent-xup/ahbrom.vhd index a56e5a05..9fcdde4d 100644 --- a/designs/leon3-digilent-xup/ahbrom.vhd +++ b/designs/leon3-digilent-xup/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-digilent-xup/config.help b/designs/leon3-digilent-xup/config.help index 28641694..9e839fd0 100644 --- a/designs/leon3-digilent-xup/config.help +++ b/designs/leon3-digilent-xup/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-digilent-xup/lconfig.tk b/designs/leon3-digilent-xup/lconfig.tk index f41ce1f2..3d97c098 100755 --- a/designs/leon3-digilent-xup/lconfig.tk +++ b/designs/leon3-digilent-xup/lconfig.tk @@ -753,7 +753,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -763,7 +764,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -906,8 +909,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -926,6 +931,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1015,9 +1024,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1071,10 +1081,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1120,14 +1131,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1200,13 +1213,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1246,22 +1267,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1318,21 +1607,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1379,36 +1668,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1416,48 +1706,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1513,27 +1804,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1574,16 +1865,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1592,34 +1884,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1676,92 +1969,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1769,18 +2062,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1821,52 +2114,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1874,162 +2168,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2085,45 +2380,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2163,18 +2460,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2182,55 +2480,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2287,24 +2590,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2344,17 +2647,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2362,37 +2666,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2448,16 +2753,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2505,9 +2817,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2529,21 +2839,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2852,14 +3167,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2933,17 +3248,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3258,16 +3573,16 @@ proc menu15 {w title} { hex $w.config.f 15 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 15 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 15 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 15 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 15 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 15 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3329,21 +3644,21 @@ proc update_define_menu15 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3403,14 +3718,14 @@ proc menu16 {w title} { bool $w.config.f 16 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 16 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 16 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 16 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3464,17 +3779,17 @@ proc update_define_menu16 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3530,15 +3845,15 @@ proc menu17 {w title} { bool $w.config.f 17 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 17 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 17 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 17 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 17 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3619,19 +3934,19 @@ proc update_menu17 {} { proc update_define_menu17 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4002,7 +4317,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4012,6 +4328,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4036,6 +4354,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4048,14 +4367,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4068,27 +4392,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4098,17 +4422,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4120,12 +4444,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4135,10 +4459,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4149,7 +4473,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4161,26 +4485,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4188,27 +4514,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4229,7 +4559,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4251,7 +4581,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4262,14 +4592,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4347,7 +4677,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4357,6 +4688,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4395,6 +4728,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4407,9 +4741,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4423,239 +4758,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4700,13 +5185,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -4749,38 +5234,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UART, timer, I/O port and interrupt controller" global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4857,7 +5342,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4867,6 +5353,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4885,8 +5373,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -4969,11 +5462,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -4994,6 +5489,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5093,8 +5592,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5113,6 +5614,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5153,324 +5658,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-digilent-xup/leon3mp.vhd b/designs/leon3-digilent-xup/leon3mp.vhd index 46e20438..f0926f2b 100644 --- a/designs/leon3-digilent-xup/leon3mp.vhd +++ b/designs/leon3-digilent-xup/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-digilent-xup/testbench.vhd b/designs/leon3-digilent-xup/testbench.vhd index 08555704..f669e862 100644 --- a/designs/leon3-digilent-xup/testbench.vhd +++ b/designs/leon3-digilent-xup/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-digilent-xup/tkconfig.h b/designs/leon3-digilent-xup/tkconfig.h index d7b015ed..6b6db5cf 100644 --- a/designs/leon3-digilent-xup/tkconfig.h +++ b/designs/leon3-digilent-xup/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-ge-hpe-midi-ep2s180/Makefile b/designs/leon3-ge-hpe-midi-ep2s180/Makefile deleted file mode 100644 index 66830817..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/Makefile +++ /dev/null @@ -1,131 +0,0 @@ -GRLIB=../.. -TOP=leon3hpe - -BOARD=ge-hpe-midi-ep2s180 - -include $(GRLIB)/boards/$(BOARD)/Makefile.inc -DEVICE=$(PART)-$(PACKAGE)$(SPEED) -UCF=$(GRLIB)/boards/$(BOARD)/$(TOP).ucf -QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf -EFFORT=1 -XSTOPT= -VHDLSYNFILES=config.vhd ahbrom.vhd leon3hpe.vhd -VHDLSIMFILES=testbench.vhd -VLOGSIMFILES=spi_slave_model.v -SIMTOP=testbench -SDCFILE=$(GRLIB)/boards/$(BOARD)/default.sdc -BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut -CLEAN=soft-clean quartus-cpf-clean mkprom-clean - -TECHLIBS = altera altera_mf stratixii -LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp grusbhc ec ecp2 -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest ddr \ - slink ascs haps coremp7 spacewire - -include $(GRLIB)/bin/Makefile - -include $(GRLIB)/software/leon3/Makefile - -# Select your cable type here. -# Make sure it has been installed via the programmer GUI -# in Quartus. -# -# Examples: -# USB-Blaster -# ByteBlasterMV -CABLE=USB-Blaster -QUARTUS_PGM=quartus_pgm - - -# flags for compilation with gcc -CFLAGS=-O1 -g -msoft-float - -################## project specific targets ########################## - -INCLUDEFILES=$(VPATH)/hpi_functions.c - -# C files needed for building the hpe_test program -HPE_INCLUDE_FILES=hpe_test MIO memtest spi sdcard hpi_functions flash_functions adcdac adda_func tests -# testpc testpc_prog - -# C files needed for building the hpe_test program -TESTPC_INCLUDE_FILES=MIO memtest flash_functions testpc adcdac adda_func testpc_prog - -# C header files needed for building the hpe_test program -HPE_HEADER_FILES=Leon3MHe.h MIO.h memtest.h flash_functions.h tests.h testpc.h spi.h sdcard.h adc_dac.h adda_func.h hpi_functions.h - -# directory where the hpe_test source files reside in -HPE_INCLUDE_DIR=../../software/gleichmann - -# C program files -# ############### - -# an object file shall be rebuilt if either the corresponding c file -# or one of the header files has changed -%.o: $(HPE_INCLUDE_DIR)/%.c $(foreach elem, $(HPE_HEADER_FILES), $(HPE_INCLUDE_DIR)/$(elem) ) - $(XAS) -DHPE_MIDI -DEXP_CONN_TEST $(CFLAGS) -I. $< -o $@ - - -# mkprom targets -# ############## - -# change the settings below to reflect your hardware -# the frequency is set in the Makefile found in the boards directory -RAMSIZE=1024 -ROMSIZE=32768 -ROMWS=3 -BAUD=38400 -FREQ=40 - -# ROM version of the test program -hpe_test.mkprom: hpe_test.exe #$(addsuffix .o, $(HPE_INCLUDE_FILES)) - sparc-elf-mkprom -dump -baud $(BAUD) -freq $(FREQ) $^ -msoft-float -romws $(ROMWS) -romsize $(ROMSIZE) -rmw -ramsize $(RAMSIZE) -v -o $@ - -mkprom-clean: - -rm -f hpe_test.mkprom - -### HPI TEST PROGRAM ################################################### - -HPI_INCLUDE_FILES= hpi_test hpi_functions -HPI_HEADER_FILES= hpi_functions.h hpi_defs.h -HPI_INCLUDE_DIR=../../software/gleichmann - - -%.o: $(HPI_INCLUDE_DIR)/%.c $(foreach elem, $(HPI_HEADER_FILES), $(HPI_INCLUDE_DIR)/$(elem) ) - $(XAS) -DHPE_MIDI $(XCFLAGS) -I. $< -o $@ - -hpi_test.exe: $(addsuffix .o, $(HPI_INCLUDE_FILES)) - $(XCC) $(XCFLAGS) -Ttext=0x40000000 -o hpi_test.exe $(addsuffix .o, $(HPI_INCLUDE_FILES)) - -# QUARTUS configuration -# ##################### - -# FPGA programming -quartus-pgm: - $(QUARTUS_PGM) -c $(CABLE) -m JTAG -o p\;$(TOP).sof\;@2 - -# JTAG indirect programming of the serial configuration device -# use upper connector on the module for that -quartus-cfg-jic: $(TOP).jic - $(QUARTUS_PGM) -c $(CABLE) -m JTAG -o pvbi\;$(TOP).jic - -# Active serial programming of the serial configuration device -# use lower connector on the module for that -quartus-cfg-pof: $(TOP).pof - $(QUARTUS_PGM) -c $(CABLE) -m ASC -o pl\;$(TOP).pof - -quartus_cpf.opt: - echo BITSTREAM_COMPRESSION=ON > quartus_cpf.opt - -$(TOP).jic: quartus_cpf.opt $(TOP).sof - quartus_cpf -c --option=quartus_cpf.opt -d $(CONFDEVICE) -s $(PART) $(TOP).sof $(TOP).jic - -$(TOP).pof: quartus_cpf.opt $(TOP).sof - quartus_cpf -c --option=quartus_cpf.opt -d $(CONFDEVICE) $(TOP).sof $(TOP).pof - -quartus-cpf: $(TOP).jic $(TOP).pof - -quartus-cpf-clean: - -rm -f quartus_cpf.opt $(TOP).jic $(TOP).pof - diff --git a/designs/leon3-ge-hpe-midi-ep2s180/README.txt b/designs/leon3-ge-hpe-midi-ep2s180/README.txt deleted file mode 100644 index 0b49f259..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/README.txt +++ /dev/null @@ -1,6 +0,0 @@ -This leon3 design is tailored to the Hpe-midi board from -Gleichmann Electronics: - -http://www.ge-research.com - -If you intend to use the ep2s_90 or ep2s_60 please change the value BOARD to the appropriate value. diff --git a/designs/leon3-ge-hpe-midi-ep2s180/ahbrom.vhd b/designs/leon3-ge-hpe-midi-ep2s180/ahbrom.vhd deleted file mode 100644 index bdcbb21a..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/ahbrom.vhd +++ /dev/null @@ -1,184 +0,0 @@ - ----------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2004 GAISLER RESEARCH --- --- 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. --- --- See the file COPYING for the full details of the license. --- ------------------------------------------------------------------------------ --- Entity: ahbrom --- File: ahbrom.vhd --- Author: Jiri Gaisler - Gaisler Research --- Description: AHB rom. 0/1-waitstate read ------------------------------------------------------------------------------- -library ieee; -use ieee.std_logic_1164.all; -library grlib; -use grlib.amba.all; -use grlib.stdlib.all; -use grlib.devices.all; - -entity ahbrom is - generic ( - hindex : integer := 0; - haddr : integer := 0; - hmask : integer := 16#fff#; - pipe : integer := 0; - tech : integer := 0; - kbytes : integer := 1); - port ( - rst : in std_ulogic; - clk : in std_ulogic; - ahbsi : in ahb_slv_in_type; - ahbso : out ahb_slv_out_type - ); -end; - -architecture rtl of ahbrom is -constant abits : integer := 9; -constant bytes : integer := 336; - -constant hconfig : ahb_config_type := ( - 0 => ahb_device_reg ( VENDOR_GAISLER, GAISLER_AHBROM, 0, 0, 0), - 4 => ahb_membar(haddr, '1', '1', hmask), others => zero32); - -signal romdata : std_logic_vector(31 downto 0); -signal addr : std_logic_vector(abits-1 downto 2); -signal hsel, hready : std_ulogic; - -begin - - ahbso.hresp <= "00"; - ahbso.hsplit <= (others => '0'); - ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; - ahbso.hconfig <= hconfig; - ahbso.hindex <= hindex; - - reg : process (clk) - begin - if rising_edge(clk) then - addr <= ahbsi.haddr(abits-1 downto 2); - end if; - end process; - - p0 : if pipe = 0 generate - ahbso.hrdata <= ahbdrivedata(romdata); - ahbso.hready <= '1'; - end generate; - - p1 : if pipe = 1 generate - reg2 : process (clk) - begin - if rising_edge(clk) then - hsel <= ahbsi.hsel(hindex) and ahbsi.htrans(1); - hready <= ahbsi.hready; - ahbso.hready <= (not rst) or (hsel and hready) or - (ahbsi.hsel(hindex) and not ahbsi.htrans(1) and ahbsi.hready); - ahbso.hrdata <= ahbdrivedata(romdata); - end if; - end process; - end generate; - - comb : process (addr) - begin - case conv_integer(addr) is - when 16#00000# => romdata <= X"81D82000"; - when 16#00001# => romdata <= X"03000004"; - when 16#00002# => romdata <= X"821060E0"; - when 16#00003# => romdata <= X"81884000"; - when 16#00004# => romdata <= X"81900000"; - when 16#00005# => romdata <= X"81980000"; - when 16#00006# => romdata <= X"81800000"; - when 16#00007# => romdata <= X"01000000"; - when 16#00008# => romdata <= X"03002040"; - when 16#00009# => romdata <= X"8210600F"; - when 16#0000A# => romdata <= X"C2A00040"; - when 16#0000B# => romdata <= X"87444000"; - when 16#0000C# => romdata <= X"8608E01F"; - when 16#0000D# => romdata <= X"88100000"; - when 16#0000E# => romdata <= X"8A100000"; - when 16#0000F# => romdata <= X"8C100000"; - when 16#00010# => romdata <= X"8E100000"; - when 16#00011# => romdata <= X"A0100000"; - when 16#00012# => romdata <= X"A2100000"; - when 16#00013# => romdata <= X"A4100000"; - when 16#00014# => romdata <= X"A6100000"; - when 16#00015# => romdata <= X"A8100000"; - when 16#00016# => romdata <= X"AA100000"; - when 16#00017# => romdata <= X"AC100000"; - when 16#00018# => romdata <= X"AE100000"; - when 16#00019# => romdata <= X"90100000"; - when 16#0001A# => romdata <= X"92100000"; - when 16#0001B# => romdata <= X"94100000"; - when 16#0001C# => romdata <= X"96100000"; - when 16#0001D# => romdata <= X"98100000"; - when 16#0001E# => romdata <= X"9A100000"; - when 16#0001F# => romdata <= X"9C100000"; - when 16#00020# => romdata <= X"9E100000"; - when 16#00021# => romdata <= X"86A0E001"; - when 16#00022# => romdata <= X"16BFFFEF"; - when 16#00023# => romdata <= X"81E00000"; - when 16#00024# => romdata <= X"82102002"; - when 16#00025# => romdata <= X"81904000"; - when 16#00026# => romdata <= X"03000004"; - when 16#00027# => romdata <= X"821060E0"; - when 16#00028# => romdata <= X"81884000"; - when 16#00029# => romdata <= X"01000000"; - when 16#0002A# => romdata <= X"01000000"; - when 16#0002B# => romdata <= X"01000000"; - when 16#0002C# => romdata <= X"87444000"; - when 16#0002D# => romdata <= X"8730E01C"; - when 16#0002E# => romdata <= X"8688E00F"; - when 16#0002F# => romdata <= X"12800016"; - when 16#00030# => romdata <= X"03200000"; - when 16#00031# => romdata <= X"05040E00"; - when 16#00032# => romdata <= X"8410A233"; - when 16#00033# => romdata <= X"C4204000"; - when 16#00034# => romdata <= X"0539A81B"; - when 16#00035# => romdata <= X"8410A260"; - when 16#00036# => romdata <= X"C4206004"; - when 16#00037# => romdata <= X"050003FC"; - when 16#00038# => romdata <= X"C4206008"; - when 16#00039# => romdata <= X"82103860"; - when 16#0003A# => romdata <= X"C4004000"; - when 16#0003B# => romdata <= X"8530A00C"; - when 16#0003C# => romdata <= X"03000004"; - when 16#0003D# => romdata <= X"82106009"; - when 16#0003E# => romdata <= X"80A04002"; - when 16#0003F# => romdata <= X"12800006"; - when 16#00040# => romdata <= X"033FFC00"; - when 16#00041# => romdata <= X"82106100"; - when 16#00042# => romdata <= X"0539A81B"; - when 16#00043# => romdata <= X"8410A260"; - when 16#00044# => romdata <= X"C4204000"; - when 16#00045# => romdata <= X"3D1003FF"; - when 16#00046# => romdata <= X"BC17A3E0"; - when 16#00047# => romdata <= X"9C27A060"; - when 16#00048# => romdata <= X"03100000"; - when 16#00049# => romdata <= X"81C04000"; - when 16#0004A# => romdata <= X"01000000"; - when 16#0004B# => romdata <= X"01000000"; - when 16#0004C# => romdata <= X"01000000"; - when 16#0004D# => romdata <= X"01000000"; - when 16#0004E# => romdata <= X"01000000"; - when 16#0004F# => romdata <= X"01000000"; - when 16#00050# => romdata <= X"00000000"; - when 16#00051# => romdata <= X"00000000"; - when 16#00052# => romdata <= X"00000000"; - when 16#00053# => romdata <= X"00000000"; - when 16#00054# => romdata <= X"00000000"; - when others => romdata <= (others => '-'); - end case; - end process; - -- pragma translate_off - bootmsg : report_version - generic map ("ahbrom" & tost(hindex) & - ": 32-bit AHB ROM Module, " & tost(bytes/4) & " words, " & tost(abits-2) & " address bits" ); - -- pragma translate_on - end; diff --git a/designs/leon3-ge-hpe-midi-ep2s180/config.in b/designs/leon3-ge-hpe-midi-ep2s180/config.in deleted file mode 100644 index ba4baf28..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/config.in +++ /dev/null @@ -1,92 +0,0 @@ -# -# LEON3 configuration written in linux configuration language -# -# Written by Jiri Gaisler, Gaisler Research -# -# Comments and bug reports to jiri@gaisler.com -# -# - -define_bool CONFIG_MCTRL_RMW y - -mainmenu_name "LEON3MIDI Design Configuration" - -mainmenu_option next_comment - comment 'Synthesis ' - source lib/techmap/gencomp/tech.in -endmenu - -mainmenu_option next_comment - comment 'Clock generation' - source lib/techmap/clocks/clkgen.in -endmenu - -source lib/gaisler/leon3/leon3.in -source lib/grlib/amba/amba.in - -mainmenu_option next_comment - comment 'Debug Link ' - source lib/gaisler/uart/dcom.in - source lib/gaisler/jtag/jtag.in - source lib/gaisler/net/edcl.in - source lib/gaisler/usb/grusb_dcl.in -endmenu - -mainmenu_option next_comment -comment 'Peripherals ' - - mainmenu_option next_comment - comment 'Memory controllers ' - source lib/gaisler/memctrl/srctrl.in - source lib/esa/memoryctrl/mctrl.in - source lib/gaisler/memctrl/sdctrl.in - endmenu - - mainmenu_option next_comment - comment 'On-chip RAM/ROM ' - source lib/gaisler/misc/ahbrom.in - source lib/gaisler/misc/ahbram.in - endmenu - - mainmenu_option next_comment - comment 'Ethernet ' - source lib/gaisler/greth/greth.in - endmenu - - mainmenu_option next_comment - comment 'CAN ' - source lib/gaisler/can/can_oc.in - endmenu - - mainmenu_option next_comment - comment 'SPI ' - source lib/gaisler/spi/spictrl.in - endmenu - - mainmenu_option next_comment - comment 'UARTs, timers and irq control ' - source lib/gaisler/uart/uart1.in -# source lib/gaisler/uart/uart2.in - source lib/gaisler/leon3/irqmp.in - source lib/gaisler/misc/gptimer.in - endmenu - - mainmenu_option next_comment - comment 'Keybord and VGA interface' - source lib/gaisler/misc/ps2vga.in - endmenu - -endmenu - -mainmenu_option next_comment -comment 'Gleichmann Options ' - source lib/gleichmann/ahb2hpi/ahb2hpi.in - source lib/gleichmann/dac/adcdac.in - source lib/gleichmann/spi/spi_oc.in - source lib/gleichmann/multiio/multiio.in - source lib/gleichmann/ac97/ac97_oc.in -endmenu -mainmenu_option next_comment -comment 'VHDL Debugging ' - source lib/grlib/util/debug.in -endmenu diff --git a/designs/leon3-ge-hpe-midi-ep2s180/config.vhd.in b/designs/leon3-ge-hpe-midi-ep2s180/config.vhd.in deleted file mode 100644 index f30ad69c..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/config.vhd.in +++ /dev/null @@ -1,53 +0,0 @@ -#include "config.h" -#include "tkconfig.h" -#include "leon3hpe.h" - ------------------------------------------------------------------------------ --- LEON3 Demonstration design test bench configuration --- Copyright (C) 2009 Aeroflex Gaisler ------------------------------------------------------------------------------- - - -library techmap; -use techmap.gencomp.all; -library gleichmann; -use gleichmann.miscellaneous.all; - -package config is - - ----------------------------------------------------------------------------- - -- GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- - - -- HPE board version - -- for valid options see package miscellaneous - constant CFG_HPEVER : integer := midi; - - -- provide ahb signals for an external slave - -- slave number can be defined below - -- numbers 8 to 15 can be used safely, numbers below - -- might be used by other LEON cores depending on configuration - constant CFG_EXTAHB : integer := CONFIG_EXTAHB_ENABLE; - - constant CFG_EXTAHB_ADDR : integer := 16#CONFIG_EXTAHB_BASE#; - - -- interrupt number the external slave is assigned to - -- unused at the moment - constant CFG_EXTAHB_IRQ : integer := CONFIG_EXTAHB_INT; - - -- AHB slave number the external slave is assigned to - constant CFG_EXTAHB_NR : integer := 8; - - -- index number the external slave is assigned to - constant CFG_EXTAHB_ID : integer := 8; - - -- lsb sdram address to bit - constant CFG_SDSHIFT : integer := CFG_SDRAM_SHIFT; - - ----------------------------------------------------------------------------- - -- END GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- - -#include "config.vhd.h" - -end; diff --git a/designs/leon3-ge-hpe-midi-ep2s180/defconfig b/designs/leon3-ge-hpe-midi-ep2s180/defconfig deleted file mode 100644 index 79a59abf..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/defconfig +++ /dev/null @@ -1,239 +0,0 @@ -# -# Automatically generated make config: don't edit -# - -# -# Synthesis -# -# CONFIG_SYN_INFERRED is not set -CONFIG_SYN_ALTERA=y -# CONFIG_SYN_AXCEL is not set -# CONFIG_SYN_PROASIC is not set -# CONFIG_SYN_PROASICPLUS is not set -# CONFIG_SYN_PROASIC3 is not set -# CONFIG_SYN_ATC18 is not set -# CONFIG_SYN_IHP25 is not set -# CONFIG_SYN_LATTICE is not set -# CONFIG_SYN_RH_LIB18T is not set -# CONFIG_SYN_RHUMC is not set -# CONFIG_SYN_SPARTAN2 is not set -# CONFIG_SYN_SPARTAN3 is not set -# CONFIG_SYN_VIRTEX is not set -# CONFIG_SYN_VIRTEXE is not set -# CONFIG_SYN_VIRTEX2 is not set -# CONFIG_SYN_VIRTEX4 is not set -# CONFIG_SYN_INFER_RAM is not set -CONFIG_SYN_INFER_PADS=y -# CONFIG_SYN_NO_ASYNC is not set - -# -# Clock generation -# -# CONFIG_CLK_INFERRED is not set -# CONFIG_CLK_HCLKBUF is not set -CONFIG_CLK_ALTDLL=y -# CONFIG_CLK_LATDLL is not set -# CONFIG_CLK_LIB18T is not set -# CONFIG_CLK_CLKDLL is not set -# CONFIG_CLK_DCM is not set -CONFIG_CLK_MUL=2 -CONFIG_CLK_DIV=2 -# CONFIG_PCI_SYSCLK is not set -CONFIG_PROC_NUM=1 - -# -# Processor -# - -# -# Integer unit -# -CONFIG_IU_NWINDOWS=8 -CONFIG_IU_V8MULDIV=y -# CONFIG_IU_MUL_LATENCY_4 is not set -CONFIG_IU_MUL_LATENCY_5=y -# CONFIG_IU_MUL_MAC is not set -# CONFIG_IU_SVT is not set -CONFIG_IU_LDELAY=1 -CONFIG_IU_WATCHPOINTS=0 -# CONFIG_PWD is not set -CONFIG_IU_RSTADDR=00000 - -# -# Floating-point unit -# -# CONFIG_FPU_ENABLE is not set - -# -# Cache system -# -CONFIG_ICACHE_ENABLE=y -CONFIG_ICACHE_ASSO1=y -# CONFIG_ICACHE_ASSO2 is not set -# CONFIG_ICACHE_ASSO3 is not set -# CONFIG_ICACHE_ASSO4 is not set -# CONFIG_ICACHE_SZ1 is not set -# CONFIG_ICACHE_SZ2 is not set -CONFIG_ICACHE_SZ4=y -# CONFIG_ICACHE_SZ8 is not set -# CONFIG_ICACHE_SZ16 is not set -# CONFIG_ICACHE_SZ32 is not set -# CONFIG_ICACHE_SZ64 is not set -# CONFIG_ICACHE_SZ128 is not set -# CONFIG_ICACHE_SZ256 is not set -# CONFIG_ICACHE_LZ16 is not set -CONFIG_ICACHE_LZ32=y -CONFIG_DCACHE_ENABLE=y -CONFIG_DCACHE_ASSO1=y -# CONFIG_DCACHE_ASSO2 is not set -# CONFIG_DCACHE_ASSO3 is not set -# CONFIG_DCACHE_ASSO4 is not set -# CONFIG_DCACHE_SZ1 is not set -# CONFIG_DCACHE_SZ2 is not set -CONFIG_DCACHE_SZ4=y -# CONFIG_DCACHE_SZ8 is not set -# CONFIG_DCACHE_SZ16 is not set -# CONFIG_DCACHE_SZ32 is not set -# CONFIG_DCACHE_SZ64 is not set -# CONFIG_DCACHE_SZ128 is not set -# CONFIG_DCACHE_SZ256 is not set -# CONFIG_DCACHE_LZ16 is not set -CONFIG_DCACHE_LZ32=y -CONFIG_DCACHE_SNOOP=y -# CONFIG_DCACHE_SNOOP_FAST is not set -CONFIG_CACHE_FIXED=0 - -# -# MMU -# -CONFIG_MMU_ENABLE=y -CONFIG_MMU_COMBINED=y -# CONFIG_MMU_SPLIT is not set -# CONFIG_MMU_REPARRAY is not set -CONFIG_MMU_REPINCREMENT=y -# CONFIG_MMU_I2 is not set -# CONFIG_MMU_I4 is not set -CONFIG_MMU_I8=y -# CONFIG_MMU_I16 is not set -# CONFIG_MMU_I32 is not set - -# -# Debug Support Unit -# -CONFIG_DSU_ENABLE=y -CONFIG_DSU_ITRACE=y -CONFIG_DSU_ITRACESZ1=y -# CONFIG_DSU_ITRACESZ2 is not set -# CONFIG_DSU_ITRACESZ4 is not set -# CONFIG_DSU_ITRACESZ8 is not set -# CONFIG_DSU_ITRACESZ16 is not set -CONFIG_DSU_ATRACE=y -CONFIG_DSU_ATRACESZ1=y -# CONFIG_DSU_ATRACESZ2 is not set -# CONFIG_DSU_ATRACESZ4 is not set -# CONFIG_DSU_ATRACESZ8 is not set -# CONFIG_DSU_ATRACESZ16 is not set - -# -# VHDL debug settings -# -# CONFIG_IU_DISAS is not set -# CONFIG_DEBUG_PC32 is not set - -# -# AMBA configuration -# -CONFIG_AHB_DEFMST=0 -CONFIG_AHB_RROBIN=y -# CONFIG_AHB_SPLIT is not set -CONFIG_AHB_IOADDR=FFF -CONFIG_APB_HADDR=800 - -# -# Debug Link -# -CONFIG_DSU_UART=y -CONFIG_DSU_ETH=y -# CONFIG_DSU_ETHSZ1 is not set -CONFIG_DSU_ETHSZ2=y -# CONFIG_DSU_ETHSZ4 is not set -# CONFIG_DSU_ETHSZ8 is not set -# CONFIG_DSU_ETHSZ16 is not set -CONFIG_DSU_IPMSB=C0A8 -CONFIG_DSU_IPLSB=0044 -CONFIG_DSU_ETHMSB=00007A -CONFIG_DSU_ETHLSB=CC0044 - -# -# Peripherals -# - -# -# Memory controllers -# - -# -# 8/32-bit PROM/SRAM controller -# -# CONFIG_SRCTRL is not set - -# -# Leon2 memory controller -# -CONFIG_MCTRL_LEON2=y -# CONFIG_MCTRL_8BIT is not set -# CONFIG_MCTRL_16BIT is not set -# CONFIG_MCTRL_5CS is not set -CONFIG_MCTRL_SDRAM=y -# CONFIG_MCTRL_SDRAM_SEPBUS is not set - -# -# On-chip RAM/ROM -# -# CONFIG_AHBROM_ENABLE is not set -# CONFIG_AHBRAM_ENABLE is not set - -# -# Ethernet -# -CONFIG_GRETH_ENABLE=y -# CONFIG_GRETH_FIFO4 is not set -# CONFIG_GRETH_FIFO8 is not set -# CONFIG_GRETH_FIFO16 is not set -# CONFIG_GRETH_FIFO32 is not set -CONFIG_GRETH_FIFO64=y - -# -# UARTs, timers and irq control -# -CONFIG_UART1_ENABLE=y -CONFIG_UA1_FIFO1=y -# CONFIG_UA1_FIFO2 is not set -# CONFIG_UA1_FIFO4 is not set -# CONFIG_UA1_FIFO8 is not set -# CONFIG_UA1_FIFO16 is not set -# CONFIG_UA1_FIFO32 is not set -CONFIG_IRQ3_ENABLE=y -CONFIG_GPT_ENABLE=y -CONFIG_GPT_NTIM=2 -CONFIG_GPT_SW=8 -CONFIG_GPT_TW=32 -CONFIG_GPT_IRQ=8 -CONFIG_GPT_SEPIRQ=y -# CONFIG_GPT_WDOGEN is not set - -# -# ATA Controller -# -# CONFIG_ATA_ENABLE is not set - -# -# Keybord and VGA interface -# -CONFIG_KBD_ENABLE=y -CONFIG_VGA_ENABLE=y - -# -# VHDL Debugging -# -CONFIG_DEBUG_UART=y diff --git a/designs/leon3-ge-hpe-midi-ep2s180/indata b/designs/leon3-ge-hpe-midi-ep2s180/indata deleted file mode 100644 index 5c12629a..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/indata +++ /dev/null @@ -1,176 +0,0 @@ -start -0101 -0100 -0011 -0010 -0001 -0000 -1000 -0111 -0110 -0101 -0100 -0011 -0010 -0001 -new-72byte-field -0000 -1111 -1110 -1101 -1100 -1011 -1010 -1001 -1000 -0111 -0110 -0101 -0100 -0011 -0010 -0001 -0000 -1111 -1110 -1101 -1100 -1011 -1010 -1001 -1000 -0111 -0110 -0101 -0100 -0011 -0010 -0001 -0000 -1111 -1110 -1101 -1100 -1011 -1010 -1001 -1000 -0111 -0110 -0101 -0100 -0011 -0010 -0001 -0000 -1111 -1110 -1101 -1100 -1011 -1010 -1001 -1000 -0111 -0110 -0101 -0100 -0011 -0010 -0001 -0000 -1111 -1110 -1101 -1100 -1011 -1010 -1001 -1000 -0111 -0110 -0101 -0100 -0011 -0010 -0001 -0000 -1111 -1110 -1101 -1100 -1011 -1010 -1001 -1000 -0111 -0110 -0101 -0100 -0011 -0010 -0001 -0000 -1111 -1110 -1101 -1100 -1011 -1010 -1001 -1000 -0111 -0110 -0101 -0100 -0011 -0010 -0001 -0000 -1111 -1110 -1101 -1100 -1011 -1010 -1001 -1000 -0111 -0110 -0101 -0100 -0011 -0010 -0001 -0000 -1111 -1110 -1101 -1100 -1011 -1010 -1001 -1000 -0111 -0110 -0101 -0100 -0011 -0010 -0001 -new -0000 -0000 -0000 -1111 -1111 -1111 -1111 -1111 -1111 -1000 -0000 -0011 -1110 -1110 -end \ No newline at end of file diff --git a/designs/leon3-ge-hpe-midi-ep2s180/leon3hpe.h b/designs/leon3-ge-hpe-midi-ep2s180/leon3hpe.h deleted file mode 100644 index a9fc7d62..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/leon3hpe.h +++ /dev/null @@ -1,16 +0,0 @@ - -#ifndef CONFIG_EXTAHB_ENABLE -#define CONFIG_EXTAHB_ENABLE 0 -#endif - -#ifndef CONFIG_EXTAHB_INT -#define CONFIG_EXTAHB_INT 0 -#endif - -#ifndef CFG_SDRAM_SHIFT -#define CFG_SDRAM_SHIFT 0 -#endif - -#ifndef CONFIG_EXTAHB_BASE -#define CONFIG_EXTAHB_BASE 0 -#endif diff --git a/designs/leon3-ge-hpe-midi-ep2s180/leon3hpe.vhd b/designs/leon3-ge-hpe-midi-ep2s180/leon3hpe.vhd deleted file mode 100644 index 938b0553..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/leon3hpe.vhd +++ /dev/null @@ -1,1207 +0,0 @@ ------------------------------------------------------------------------------- --- LEON3 Demonstration design --- Copyright (C) 2004 Jiri Gaisler, Gaisler Research --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------- --- maintained by Florian Wex, Gleichmann Electronics 2007 --- updated to grlib-eval-1.0.16 in , September 2007 ------------------------------------------------------------------------------- - ------------------------------------------------------------------------------------------ - -library ieee; -use ieee.std_logic_1164.all; -library grlib; -use grlib.amba.all; -use grlib.stdlib.all; -use grlib.devices.all; -library techmap; -use techmap.gencomp.all; -library gaisler; -use gaisler.memctrl.all; -use gaisler.leon3.all; -use gaisler.uart.all; -use gaisler.misc.all; -use gaisler.spi.all; -use gaisler.can.all; -use gaisler.net.all; -use gaisler.grusb.all; -use gaisler.jtag.all; -library esa; -use esa.memoryctrl.all; -library gleichmann; -use gleichmann.hpi.all; -use gleichmann.miscellaneous.all; -use gleichmann.multiio.all; -use gleichmann.dac.all; -use gleichmann.sspi.all; -use gleichmann.ge_clkgen.all; -use gleichmann.ac97.all; -library work; -use work.config.all; - - - -entity leon3hpe is - generic ( - fabtech : integer := CFG_FABTECH; - memtech : integer := CFG_MEMTECH; - padtech : integer := CFG_PADTECH; - clktech : integer := CFG_CLKTECH; - disas : integer := CFG_DISAS; -- Enable disassembly to console - dbguart : integer := CFG_DUART; -- Print UART on console - pclow : integer := CFG_PCLOW - ); - port ( - resetn : in std_logic; - resoutn : out std_logic; - - clk : in std_logic; - - errorn : out std_logic; - address : out std_logic_vector(27 downto 0); - data : inout std_logic_vector(31 downto 0); - ramsn : out std_logic_vector (4 downto 0); - ramoen : out std_logic_vector (4 downto 0); - rwen : inout std_logic_vector (3 downto 0); - -- ram byte enable for hpe board - -- necessary because individual bytes have to - -- be selected for reading as well - rben : out std_logic_vector(3 downto 0); - romsn : out std_logic_vector (1 downto 0); - iosn : out std_logic; - oen : out std_logic; - read : out std_logic; - writen : out std_logic; - - -- SDRAM interface - sdclk : out std_logic_vector(1 downto 0); - sdcke : out std_logic_vector(1 downto 0); -- sdram clock enable - sdaddr : out std_logic_vector(12 downto 0); - sddq : inout std_logic_vector(63 downto 0); - sddqm : out std_logic_vector(7 downto 0); -- sdram dqm - sdwen : out std_logic; -- sdram write enable - sdcasn : out std_logic; -- sdram cas - sdrasn : out std_logic; -- sdram ras - sdcsn : out std_logic_vector (1 downto 0); -- sdram chip select - sdba : out std_logic_vector(1 downto 0); -- sdram bank address - - -- debug support unit - dsutx : out std_logic; -- DSU tx data - dsurx : in std_logic; -- DSU rx data - dsubre : in std_logic; - dsuactn : out std_logic; - - -- console UART - rxd1 : in std_logic; - txd1 : out std_logic; - - -- ethernet signals - emdio : inout std_logic; -- ethernet PHY interface - etx_clk : in std_logic; - erx_clk : in std_logic; - erxd : in std_logic_vector(3 downto 0); - erx_dv : in std_logic; - erx_er : in std_logic; - erx_col : in std_logic; - erx_crs : in std_logic; - etxd : out std_logic_vector(3 downto 0); - etx_en : out std_logic; - etx_er : out std_logic; - emdc : out std_logic; - ereset : out std_logic; - - -- CAN receive and transmit signals - can_txd : out std_logic; - can_rxd : in std_logic; - can_stb : out std_logic; - - ------------------------------------------------------------------------------------- - -- IO SECTION - ------------------------------------------------------------------------------------- - dsw : in std_logic_vector(7 downto 0); - - led_enable : out std_logic; - - sevensegment : out std_logic_vector(9 downto 0); -- 7-segments and 2 strobes - - lcd_enable : out std_logic; - lcd_regsel : out std_logic; - lcd_rw : out std_logic; - - -- keyboard - tst_col : out std_logic_vector(2 downto 0); -- column outputs - tst_row : in std_logic_vector(3 downto 0); -- row inputs - - -- only one PS/2 interface possible due to routing problems - -- see instantiation of the interface below - ps2_clk : inout std_logic_vector(1 downto 0); - ps2_data : inout std_logic_vector(1 downto 0); - - -- expansion connector signals - exp_datao : out std_logic_vector(19 downto 0); - exp_datai : in std_logic_vector(19 downto 0); - - --------------------------------------------------------------------------- - -- VGA interface - --------------------------------------------------------------------------- - vga_clk : out std_logic; - vga_syncn : out std_logic; - vga_blankn : out std_logic; - vga_vsync : out std_logic; - vga_hsync : out std_logic; - vga_rd : out std_logic_vector(7 downto 0); - vga_gr : out std_logic_vector(7 downto 0); - vga_bl : out std_logic_vector(7 downto 0); - - --------------------------------------------------------------------------- - -- AC97 AUDIO CODEC - --------------------------------------------------------------------------- - - ac97_bit_clk : in std_logic; - ac97_sync : out std_logic; - ac97_sdata_out : out std_logic; - ac97_sdata_in : in std_logic; - -- when no crystal is assembled, drive this signal with a 24.5 (or 25) MHz clock - ac97_ext_clk : out std_logic; - ac97_resetn : out std_logic; - - ------------------------------------------------------------------------------------- - -- USB DEBUG INTERFACE - ------------------------------------------------------------------------------------- - usb_clkout : in std_logic; - usb_d : inout std_logic_vector(15 downto 0); - usb_linestate : in std_logic_vector(1 downto 0); - usb_opmode : out std_logic_vector(1 downto 0); - usb_reset : out std_logic; - usb_rxactive : in std_logic; - usb_rxerror : in std_logic; - usb_rxvalid : in std_logic; - usb_suspend : out std_logic; - usb_termsel : out std_logic; - usb_txready : in std_logic; - usb_txvalid : out std_logic; - usb_validh : inout std_logic; - usb_xcvrsel : out std_logic; - usb_vbus : in std_logic; - usb_dbus16 : out std_logic; - usb_unidir : out std_logic; - - --------------------------------------------------------------------------- - -- ADC/DAC INTERFACE - --------------------------------------------------------------------------- - adc_dout : in std_logic; - adc_ain : out std_logic; - dac_out : out std_logic; - - ------------------------------------------------------------------------------------- - -- SDCARD interface (SPI mode) - ------------------------------------------------------------------------------------- - sdcard_cs : out std_logic; - sdcard_di : out std_logic; - sdcard_sclk : out std_logic; - sdcard_do : in std_logic; - - ------------------------------------------------------------------------------- - -- HPI PORT - ------------------------------------------------------------------------------- - hpiaddr : out std_logic_vector(1 downto 0); - hpidata : inout std_logic_vector(15 downto 0); - hpicsn : out std_logic; - hpiwrn : out std_logic; - hpirdn : out std_logic; - hpiint : in std_logic - ); -end; - -architecture rtl of leon3hpe is - - constant blength : integer := 12; - constant fifodepth : integer := 8; - - signal reset : std_logic; - signal vcc, gnd : std_logic_vector(4 downto 0); - signal memi : memory_in_type; - signal memo : memory_out_type; - signal wpo : wprot_out_type; - - signal sdi : sdctrl_in_type; - signal sdo : sdram_out_type; - signal sdo2 : sdctrl_out_type; - signal sdo3 : sdctrl_out_type; - - signal apbi : apb_slv_in_type; - signal apbo : apb_slv_out_vector := (others => apb_none); - signal ahbsi : ahb_slv_in_type; - signal ahbso : ahb_slv_out_vector := (others => ahbs_none); - signal ahbmi : ahb_mst_in_type; - signal ahbmo : ahb_mst_out_vector := (others => ahbm_none); - - signal clkm, clk_25MHz, rstn, sdclkl : std_logic; - -- signal clkvga : std_logic; - signal cgi : clkgen_in_type; - signal cgo : clkgen_out_type; - signal u1i, dui : uart_in_type; - signal u1o, duo : uart_out_type; - - signal irqi : irq_in_vector(0 to CFG_NCPU-1); - signal irqo : irq_out_vector(0 to CFG_NCPU-1); - - signal dbgi : l3_debug_in_vector(0 to CFG_NCPU-1); - signal dbgo : l3_debug_out_vector(0 to CFG_NCPU-1); - - signal dsui : dsu_in_type; - signal dsuo : dsu_out_type; - - signal ethi, ethi1, ethi2 : eth_in_type; - signal etho, etho1, etho2 : eth_out_type; - - signal gpti : gptimer_in_type; - - signal emddis : std_logic; - signal epwrdwn : std_logic; - signal esleep : std_logic; - signal epause : std_logic; - - - --- Adaptions for HPE Compact - - signal dsuact : std_logic; - signal oen_ctrl : std_logic; - signal sdram_selected : std_logic; - signal sd_clk : std_logic; - signal s_ramsn : std_logic_vector (4 downto 0); - signal s_sddqm : std_logic_vector (7 downto 0); - - signal shortcut : std_logic; - signal rx : std_logic; - signal tx : std_logic; - - - constant BOARD_FREQ : integer := 100_000; -- input frequency in KHz - constant CPU_FREQ : integer := BOARD_FREQ * CFG_CLKMUL / CFG_CLKDIV * 1_000; -- cpu frequency in KHz - constant PS2_SCALER : integer := CPU_FREQ / 10_000; -- PS2 Freq = 10 kHz - constant IOAEN : integer := 1; --CFG_ETH + CFG_CAN; - - signal mioi : MultiIO_in_type; - signal mioo : MultiIO_out_type; - - signal kbdi0, kbdi1 : ps2_in_type; - signal kbdo0, kbdo1 : ps2_out_type; - - -- VGA interface - signal vgao : apbvga_out_type; - - signal uclk : std_logic; - signal usbi : grusb_in_type; - signal usbo : grusb_out_type; - - -- simple SPI controller - signal spii : sspi_in_type; - signal spio : sspi_out_type; - signal gspii : spi_in_type; - signal gspio : spi_out_type; - - -- ADC/DAC - signal adcdaci : adcdac_in_type; - signal adcdaco : adcdac_out_type; - - --------------------------------------------------------------------------------------- - -- AC97 AUDIO CODEC - --------------------------------------------------------------------------------------- - - signal dma_ack : std_logic_vector(8 downto 0); - signal int : std_logic; - signal dma_req : std_logic_vector(8 downto 0); - signal suspended : std_logic; - - -- intermediate signals for outputs in order to be able - -- to propagate to two signal sinks - signal ac97_int_sync : std_logic; - signal ac97_int_sdata_out : std_logic; - signal ac97_int_resetn : std_logic; - signal ac97_int_irq : std_logic; - - --------------------------------------------------------------------------------------- - -- HPI SIGNALS - --------------------------------------------------------------------------------------- - signal hpiwriten : std_logic; -- intermediate signal - signal hpirdata : std_logic_vector(15 downto 0); - signal hpiwdata : std_logic_vector(15 downto 0); - signal drive_bus : std_logic; - - signal dbg_equal : std_logic; - signal sample_clk : std_logic; - - --------------------------------------------------------------------------------------- - -begin - ----------------------------------------------------------------------- ---- Reset and Clock generation ------------------------------------- ----------------------------------------------------------------------- - - reset <= not resetn; - - vcc <= (others => '1'); gnd <= (others => '0'); - cgi.pllctrl <= "00"; cgi.pllrst <= resetn; - cgi.pllref <= clk; - - vga_clk_gen : if (CFG_VGA_ENABLE /= 0) generate - no_vga_clk_gen : if ((CFG_CLKDIV/CFG_CLKMUL) = 4) generate - clk_25MHz <= clkm; - end generate; - vga_clk_gen : if ((CFG_CLKDIV/CFG_CLKMUL) /= 4) generate - vga_clk_gen_inst : clkgen - generic map ( - tech => clktech, - clk_mul => 1, - clk_div => 4, - sdramen => 0, - noclkfb => 1, - pcien => 0, - pcidll => 0, - pcisysclk => 0, - freq => BOARD_FREQ, - clk2xen => 0) - port map ( - clkin => clk, - clk => clk_25MHz, - pciclkin => gnd(0), - cgi => cgi, - cgo => open); - end generate; - end generate; - - clkgen_1 : clkgen - generic map ( - tech => clktech, - clk_mul => CFG_CLKMUL, - clk_div => CFG_CLKDIV, - sdramen => CFG_SDCTRL + CFG_MCTRL_SDEN, - noclkfb => CFG_CLK_NOFB, - pcien => 0, - pcidll => 0, - pcisysclk => 0, - freq => BOARD_FREQ, - clk2xen => 1) - port map ( - clkin => clk, - pciclkin => gnd(0), - clk => clkm, - clkn => open, - clk2x => sample_clk, - sdclk => sdclkl, - pciclk => open, - cgi => cgi, - cgo => cgo, - clk4x => open); - - rst0 : rstgen -- reset generator - port map (resetn, clkm, cgo.clklock, rstn); - ----------------------------------------------------------------------- ---- AHB CONTROLLER -------------------------------------------------- ----------------------------------------------------------------------- - - ahb0 : ahbctrl -- AHB arbiter/multiplexer - generic map (defmast => CFG_DEFMST, split => CFG_SPLIT, - rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO, ioen => IOAEN, - nahbm => CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_GRUSB_DCL+CFG_AHB_JTAG, - nahbs => 9) - port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso); - ----------------------------------------------------------------------- ---- LEON3 processor and DSU ----------------------------------------- ----------------------------------------------------------------------- - - cpu : for i in 0 to CFG_NCPU-1 generate - u0 : leon3s -- LEON3 processor - generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, - 0, CFG_MAC, pclow, 0, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, - CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, - CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, - CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, - CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1) - port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, - irqi(i), irqo(i), dbgi(i), dbgo(i)); - end generate; - errorn_pad : odpad generic map (tech => padtech) port map (errorn, dbgo(0).error); - - dsugen : if CFG_DSU = 1 generate - dsu0 : dsu3 -- LEON3 Debug Support Unit - generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#, - ncpu => CFG_NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ) - port map (rstn, clkm, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo); - dsuen_pad : inpad generic map (tech => padtech) port map (vcc(0), dsui.enable); - dsubre_pad : inpad generic map (tech => padtech) port map (dsubre, dsui.break); - dsuact_pad : outpad generic map (tech => padtech) port map (dsuact, dsuo.active); - end generate; - nodsu : if CFG_DSU = 0 generate - ahbso(2) <= ahbs_none; dsuo.tstop <= '0'; dsuo.active <= '0'; - end generate; - - dcomgen : if CFG_AHB_UART = 1 generate - dcom0 : ahbuart -- Debug UART - generic map (hindex => CFG_NCPU, pindex => 7, paddr => 7) - port map (rstn, clkm, dui, duo, apbi, apbo(7), ahbmi, ahbmo(CFG_NCPU)); - dsurx_pad : inpad generic map (tech => padtech) port map (dsurx, dui.rxd); - dsutx_pad : outpad generic map (tech => padtech) port map (dsutx, duo.txd); - end generate; - nouah : if CFG_AHB_UART = 0 generate apbo(7) <= apb_none; end generate; - - ahbjtaggen0 : if CFG_AHB_JTAG = 1 generate - ahbjtag0 : ahbjtag generic map(tech => fabtech, hindex => CFG_NCPU+CFG_AHB_UART) - port map(rstn, clkm, gnd(0), gnd(0), gnd(0), open, ahbmi, ahbmo(CFG_NCPU+CFG_AHB_UART), - open, open, open, open, open, open, open, gnd(0)); - end generate; - ------------------------------------------------------------------------ ---- USB DEBUG LINK -------------------------------------------------- ------------------------------------------------------------------------ - - usb0 : if CFG_GRUSB_DCL = 1 generate - usb_d_pads : for i in 0 to 15 generate - usb_d_pad : iopad generic map(tech => padtech) - port map (usb_d(i), usbo.dataout(i), usbo.oen, usbi.datain(i)); - end generate; - - usb_h_pad : iopad generic map(tech => padtech) - port map (usb_validh, usbo.txvalidh, usbo.oen, usbi.rxvalidh); - - usb_i0_pad : inpad generic map (tech => padtech) port map (usb_txready, usbi.txready); - usb_i1_pad : inpad generic map (tech => padtech) port map (usb_rxvalid, usbi.rxvalid); - usb_i2_pad : inpad generic map (tech => padtech) port map (usb_rxerror, usbi.rxerror); - usb_i3_pad : inpad generic map (tech => padtech) port map (usb_rxactive, usbi.rxactive); - usb_i4_pad : inpad generic map (tech => padtech) port map (usb_linestate(0), usbi.linestate(0)); - usb_i5_pad : inpad generic map (tech => padtech) port map (usb_linestate(1), usbi.linestate(1)); - - usb_i6_pad : inpad generic map (tech => padtech) port map (usb_vbus, usbi.vbusvalid); - usb_o0_pad : outpad generic map (tech => padtech) port map (usb_reset, usbo.reset); - - usb_o1_pad : outpad generic map (tech => padtech) port map (usb_suspend, usbo.suspendm); - usb_o2_pad : outpad generic map (tech => padtech) port map (usb_termsel, usbo.termselect); - usb_o3_pad : outpad generic map (tech => padtech) port map (usb_xcvrsel, usbo.xcvrselect(0)); - usb_o4_pad : outpad generic map (tech => padtech) port map (usb_opmode(0), usbo.opmode(0)); - usb_o5_pad : outpad generic map (tech => padtech) port map (usb_opmode(1), usbo.opmode(1)); - usb_o6_pad : outpad generic map (tech => padtech) port map (usb_txvalid, usbo.txvalid); - - usb_clk_pad : clkpad generic map (tech => padtech) port map (usb_clkout, uclk); - - -- USB transceiver shall operate in 8-bit mode - usb_dbus16 <= not dsw(1); - -- USB transceiver shall use 8-bit data bus bidirectionally - -- (bits 15 downto 8 are undriven) - usb_unidir <= not dsw(2); - - usb_ctrl : grusb_dcl - generic map (hindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG, memtech => memtech) - port map (uclk, usbi, usbo, clkm, rstn, ahbmi, ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG)); - end generate; - ----------------------------------------------------------------------- ---- Memory controllers ---------------------------------------------- ----------------------------------------------------------------------- - - mg1 : if CFG_SRCTRL = 1 generate -- 32-bit PROM/SRAM controller - sr0 : srctrl generic map (hindex => 0, - ramws => CFG_SRCTRL_RAMWS, romws => CFG_SRCTRL_PROMWS, - ramaddr => 16#400#, rmw => 1) - port map (rstn, clkm, ahbsi, ahbso(0), memi, memo, sdo3); - apbo(0) <= apb_none; - end generate; - - mg2 : if CFG_MCTRL_LEON2 = 1 generate -- LEON2 memory controller - sr1 : mctrl generic map ( - hindex => 0, pindex => 0, - paddr => 0, srbanks => 2, sden => CFG_MCTRL_SDEN, - invclk => CFG_MCTRL_INVCLK, sdlsb => CFG_SDSHIFT, - sepbus => CFG_MCTRL_SEPBUS, sdbits => 32 + 32*CFG_MCTRL_SD64 - ) - port map (rstn, clkm, memi, memo, ahbsi, ahbso(0), apbi, apbo(0), wpo, sdo); - - sdpads : if CFG_MCTRL_SDEN = 1 generate -- SDRAM controller - sd2 : if CFG_MCTRL_SEPBUS = 1 generate - sa_pad : outpadv generic map (width => 13) port map (sdaddr, memo.sa(12 downto 0)); - ba_pad : outpadv generic map (width => 2) port map (sdba, memo.sa(14 downto 13)); - bdr : for i in 0 to 3 generate - sddq_pad : iopadv generic map (tech => padtech, width => 8) - port map (sddq(31-i*8 downto 24-i*8), memo.data(31-i*8 downto 24-i*8), - memo.bdrive(i), memi.sd(31-i*8 downto 24-i*8)); - sddq2 : if CFG_MCTRL_SD64 = 1 generate - sddq_pad2 : iopadv generic map (tech => padtech, width => 8) - port map (sddq(31-i*8+32 downto 24-i*8+32), memo.data(31-i*8 downto 24-i*8), - memo.bdrive(i), memi.sd(31-i*8+32 downto 24-i*8+32)); - end generate; - end generate; - end generate; - sdwen_pad : outpad generic map (tech => padtech) - port map (sdwen, sdo.sdwen); - sdras_pad : outpad generic map (tech => padtech) - port map (sdrasn, sdo.rasn); - sdcas_pad : outpad generic map (tech => padtech) - port map (sdcasn, sdo.casn); - sddqm_pad : outpadv generic map (width => 8, tech => padtech) - port map (sddqm, sdo.dqm); - sdcke_pad : outpadv generic map (width => 2, tech => padtech) - port map (sdcke, sdo.sdcke); - sdcsn_pad : outpadv generic map (width => 2, tech => padtech) - port map (sdcsn, sdo.sdcsn); - end generate; - end generate; - - - sdclk_pad : outpad generic map (tech => padtech, slew => 1) port map (sdclk(0), sdclkl); - sdclk_pad2 : outpad generic map (tech => padtech, slew => 1) port map (sdclk(1), gnd(0)); - - sd_controller : if CFG_SDCTRL /= 0 generate - sdctrl_1 : sdctrl - generic map ( - hindex => 5, - haddr => 16#600#, - hmask => 16#F00#, - ioaddr => 16#500#, - iomask => 16#FFF#, - wprot => 0, - invclk => CFG_SDCTRL_INVCLK, - fast => 0, - pwron => 0, - sdbits => 32 + 32*CFG_SDCTRL_SD64) - port map ( - rst => rstn, - clk => clkm, - ahbsi => ahbsi, - ahbso => ahbso(5), - sdi => sdi, - sdo => sdo2); - - -- output signals - sdaddr <= sdo2.address(14 downto 2); - sdba <= sdo2.address(16 downto 15); - sdcke <= sdo2.sdcke; - sdwen <= sdo2.sdwen; - sdcsn <= sdo2.sdcsn; - sdrasn <= sdo2.rasn; - sdcasn <= sdo2.casn; - sddqm <= sdo2.dqm(7 downto 0); - - query_64_bit : if (CFG_SDCTRL_SD64 /= 0) generate - sd_pad : iopadv generic map (width => 32) - port map (sddq(63 downto 32), - sdo2.data(63 downto 32), - sdo2.bdrive, - sdi.data(63 downto 32)); - end generate; - - sd_pad2 : iopadv generic map (width => 32) - port map (sddq(31 downto 0), - sdo2.data(31 downto 0), - sdo2.bdrive, - sdi.data(31 downto 0)); - end generate sd_controller; - - nosd0 : if (CFG_MCTRL_SDEN = 0 and CFG_SDCTRL = 0) generate -- no SDRAM controller - sdclk_pad : outpad generic map (tech => padtech, slew => 1) port map (sd_clk, sdclkl); - sdcke_pad : outpadv generic map (width => 2, tech => padtech) - port map (sdcke, sdo3.sdcke); - sdcsn_pad : outpadv generic map (width => 2, tech => padtech) - port map (sdcsn, sdo3.sdcsn); - end generate; - - memi.brdyn <= '1'; memi.bexcn <= '1'; - memi.writen <= '1'; memi.wrn <= "1111"; memi.bwidth <= "10"; - - mg0 : if (CFG_MCTRL_LEON2 = 0) and (CFG_SRCTRL = 0) generate -- no prom/sram controller - apbo(0) <= apb_none; ahbso(0) <= ahbs_none; - rams_pad : outpadv generic map (width => 5, tech => padtech) - port map (ramsn, vcc); - roms_pad : outpadv generic map (width => 2, tech => padtech) - port map (romsn, vcc(1 downto 0)); - end generate; - - mgpads : if not ((CFG_MCTRL_LEON2 = 0) and (CFG_SRCTRL = 0)) generate -- prom/sram controller - addr_pad : outpadv generic map (width => 28, tech => padtech) - port map (address, memo.address(27 downto 0)); - rams_pad : outpadv generic map (width => 5, tech => padtech) - port map (ramsn, s_ramsn); - roms_pad : outpadv generic map (width => 2, tech => padtech) - port map (romsn, memo.romsn(1 downto 0)); - oen_pad : outpad generic map (tech => padtech) - port map (oen, memo.oen); - rwen_pad : outpadv generic map (width => 4, tech => padtech) - port map (rwen, memo.wrn); - roen_pad : outpadv generic map (width => 5, tech => padtech) - port map (ramoen, memo.ramoen(4 downto 0)); - wri_pad : outpad generic map (tech => padtech) - port map (writen, memo.writen); - read_pad : outpad generic map (tech => padtech) - port map (read, memo.read); - iosn_pad : outpad generic map (tech => padtech) - port map (iosn, memo.iosn); - bdr : for i in 0 to 3 generate - data_pad : iopadv generic map (tech => padtech, width => 8) - port map (data(31-i*8 downto 24-i*8), memo.data(31-i*8 downto 24-i*8), - memo.bdrive(i), memi.data(31-i*8 downto 24-i*8)); - end generate; - end generate; - ----------------------------------------------------------------------- ---- APB Bridge and various peripherals ------------------------------- ----------------------------------------------------------------------- - - bpromgen : if CFG_AHBROMEN /= 0 generate - brom : entity work.ahbrom - generic map (hindex => 3, haddr => CFG_AHBRODDR, pipe => CFG_AHBROPIP) - port map (rstn, clkm, ahbsi, ahbso(3)); - end generate; - nobpromgen : if CFG_AHBROMEN = 0 generate - ahbso(3) <= ahbs_none; - end generate; - ----------------------------------------------------------------------- ---- APB Bridge and various periherals ------------------------------- ----------------------------------------------------------------------- - - apb0 : apbctrl -- AHB/APB bridge - generic map (hindex => 1, haddr => CFG_APBADDR) - port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo); - - -- APB uart - ua1 : if CFG_UART1_ENABLE /= 0 generate - uart1 : apbuart -- UART 1 - generic map (pindex => 1, paddr => 1, pirq => 2, console => dbguart, - fifosize => CFG_UART1_FIFO) - port map (rstn, clkm, apbi, apbo(1), u1i, u1o); - u1i.rxd <= rxd1; u1i.ctsn <= '0'; u1i.extclk <= '0'; txd1 <= u1o.txd; - end generate; - noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate; - - -- interrupt controller - irqctrl : if CFG_IRQ3_ENABLE /= 0 generate - irqctrl0 : irqmp -- interrupt controller - generic map (pindex => 2, paddr => 2, ncpu => CFG_NCPU) - port map (rstn, clkm, apbi, apbo(2), irqo, irqi); - end generate; - irq3 : if CFG_IRQ3_ENABLE = 0 generate - x : for i in 0 to CFG_NCPU-1 generate - irqi(i).irl <= "0000"; - end generate; - apbo(2) <= apb_none; - end generate; - - -- general purpose timer - gpt : if CFG_GPT_ENABLE /= 0 generate - timer0 : gptimer -- timer unit - generic map (pindex => 3, paddr => 3, pirq => CFG_GPT_IRQ, - sepirq => CFG_GPT_SEPIRQ, sbits => CFG_GPT_SW, ntimers => CFG_GPT_NTIM, - nbits => CFG_GPT_TW) - port map (rstn, clkm, apbi, apbo(3), gpti, open); - gpti.dhalt <= dsuo.tstop; gpti.extclk <= '0'; - end generate; - notim : if CFG_GPT_ENABLE = 0 generate apbo(3) <= apb_none; end generate; - - -- VGA interface - vga : if CFG_VGA_ENABLE /= 0 generate - vga0 : apbvga generic map(memtech => memtech, pindex => 4, paddr => 4) - port map(rstn, clkm, clk_25MHz, apbi, apbo(4), vgao); - -- port map(rstn, clkm, clkm, apbi, apbo(4), vgao); - end generate; - - novga : if CFG_VGA_ENABLE = 0 generate apbo(4) <= apb_none; vgao <= vgao_none; end generate; - - vert_sync_pad : outpad generic map (tech => padtech) - port map (vga_vsync, vgao.vsync); - horiz_sync_pad : outpad generic map (tech => padtech) - port map (vga_hsync, vgao.hsync); - video_out_r_pad : outpadv generic map (width => 8, tech => padtech) - port map (vga_rd, vgao.video_out_r(7 downto 0)); - video_out_g_pad : outpadv generic map (width => 8, tech => padtech) - port map (vga_gr, vgao.video_out_g(7 downto 0)); - video_out_b_pad : outpadv generic map (width => 8, tech => padtech) - port map (vga_bl, vgao.video_out_b(7 downto 0)); - -- pixel clock = system clock - vga_clk_pad : outpad generic map (tech => padtech) - port map (vga_clk, clk_25MHz); - -- port map (vga_clk, clkm); - -- via syncn, additional sync information could be transported - -- on the green colour channel - -- connecting it to ground disables this feature - vga_syncn_pad : outpad generic map (tech => padtech) - port map (vga_syncn, gnd(0)); - -- don't disable output - vga_blankn_pad : outpad generic map (tech => padtech) - port map (vga_blankn, vcc(0)); - ------------------------------------------------------------------------ ---- MULTIIO SECTION -------------------------------------------------- ------------------------------------------------------------------------ - MULTIIO : if CFG_MULTIIO /= 0 generate - -- human interface controller - mio : MultiIO_APB - generic map ( - pindex => 6, - paddr => 6, - pmask => 16#fff#, - pirq => 6, - clk_freq_in => CPU_FREQ, - hpe_version => midi, - led7act => '0', - ledact => '0', - switchact => '0', -- switch polarity is inverse to Hpe_compact - buttonact => '1') - port map ( - rst_n => rstn, - clk => clkm, - apbi => apbi, - apbo => apbo(6), - MultiIO_in => mioi, - MultiIO_out => mioo); - - mioi.switch_in <= dsw; - mioi.row_in <= tst_row; - - -- expansion connector - mioi.exp_in <= exp_datai; - exp_datao <= mioo.exp_out; - - sevensegment <= mioo.led_ca_out(1) & -- 9 - mioo.led_ca_out(0) & -- 8 - mioo.led_dp_out & -- . - mioo.led_g_out & -- . - mioo.led_f_out & -- . - mioo.led_e_out & - mioo.led_d_out & - mioo.led_c_out & - mioo.led_b_out & - mioo.led_a_out; -- 0 - tst_col <= mioo.column_out; - - lcd_regsel <= mioo.lcd_regsel; - lcd_rw <= mioo.lcd_rw; - lcd_enable <= mioo.lcd_enable; - - end generate; - - nMULTIIO : if CFG_MULTIIO = 0 generate - apbo(6) <= apb_none; - end generate; - ------------------------------------------------------------------------ ---- ETHERNET --------------------------------------------------------- ------------------------------------------------------------------------ - - eth0 : if CFG_GRETH = 1 generate -- Gaisler ethernet MAC - e1 : greth generic map(hindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRUSB_DCL, - pindex => 15, paddr => 15, pirq => 12, memtech => memtech, - mdcscaler => CPU_FREQ/1000000, enable_mdio => 1, fifosize => CFG_ETH_FIFO, - nsync => 1, edcl => CFG_DSU_ETH, edclbufsz => CFG_ETH_BUF, - macaddrh => CFG_ETH_ENM, macaddrl => CFG_ETH_ENL, - ipaddrh => CFG_ETH_IPM, ipaddrl => CFG_ETH_IPL) - port map(rst => rstn, clk => clkm, ahbmi => ahbmi, - ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRUSB_DCL), apbi => apbi, - apbo => apbo(15), ethi => ethi, etho => etho); - - emdio_pad : iopad generic map (tech => padtech) - port map (emdio, etho.mdio_o, etho.mdio_oe, ethi.mdio_i); - etxc_pad : inpad generic map (tech => padtech) - port map (etx_clk, ethi.tx_clk); - erxc_pad : inpad generic map (tech => padtech) - port map (erx_clk, ethi.rx_clk); - erxd_pad : inpadv generic map (tech => padtech, width => 4) - port map (erxd, ethi.rxd(3 downto 0)); - erxdv_pad : inpad generic map (tech => padtech) - port map (erx_dv, ethi.rx_dv); - erxer_pad : inpad generic map (tech => padtech) - port map (erx_er, ethi.rx_er); - erxco_pad : inpad generic map (tech => padtech) - port map (erx_col, ethi.rx_col); - erxcr_pad : inpad generic map (tech => padtech) - port map (erx_crs, ethi.rx_crs); - - etxd_pad : outpadv generic map (tech => padtech, width => 4) - port map (etxd, etho.txd(3 downto 0)); - etxen_pad : outpad generic map (tech => padtech) - port map (etx_en, etho.tx_en); - etxer_pad : outpad generic map (tech => padtech) - port map (etx_er, etho.tx_er); - emdc_pad : outpad generic map (tech => padtech) - port map (emdc, etho.mdc); - - emdis_pad : outpad generic map (tech => padtech) - port map (emddis, vcc(0)); - eepwrdwn_pad : outpad generic map (tech => padtech) - port map (epwrdwn, gnd(0)); - esleep_pad : outpad generic map (tech => padtech) - port map (esleep, gnd(0)); - epause_pad : outpad generic map (tech => padtech) - port map (epause, gnd(0)); - ereset_pad : outpad generic map (tech => padtech) - port map (ereset, rstn); - - end generate; - - ------------------------------------------------------------------------ ---- CAN -------------------------------------------------------------- ------------------------------------------------------------------------ - - can1 : if CFG_CAN /= 0 generate -- Opencores can MAC - can0 : can_oc - generic map ( - slvndx => 6, - ioaddr => CFG_CANIO, - iomask => 16#FF0#, - irq => 13) - port map ( - resetn => rstn, - clk => clkm, - ahbsi => ahbsi, - ahbso => ahbso(6), - can_rxi => rx, - can_txo => tx - ); - end generate; - - ncan : if CFG_CAN = 0 generate - ahbso(6) <= ahbs_none; - end generate; - - -- CAN Transceiver mode (phy) - -- Can stb = 0 operating - -- Can stb = 1 standby - CAN_STB <= '0'; - - -- Can rx and tx must be hot-wired in case of testing can - test_can : if CFG_CANLOOP = 1 generate - rx <= tx; - end generate; - - normal_can : if CFG_CANLOOP = 0 generate - rx <= CAN_RXD; - CAN_TXD <= tx; - end generate; - ------------------------------------------------------------------------ ---- AHB RAM ---------------------------------------------------------- ------------------------------------------------------------------------ - - ocram : if CFG_AHBRAMEN = 1 generate - ahbram0 : ahbram generic map (hindex => 7, haddr => CFG_AHBRADDR, - tech => CFG_MEMTECH, kbytes => CFG_AHBRSZ) - port map (rstn, clkm, ahbsi, ahbso(7)); - end generate; - nram : if CFG_AHBRAMEN = 0 generate ahbso(7) <= ahbs_none; end generate; - ------------------------------------------------------------------------ ---- Drive unused bus elements --------------------------------------- ------------------------------------------------------------------------ - - nam1 : for i in (CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_GRUSB_DCL+CFG_AHB_JTAG) to NAHBMST-1 generate - ahbmo(i) <= ahbm_none; - end generate; - - nap0 : for i in 11 to NAPBSLV-1-CFG_GRETH generate apbo(i) <= apb_none; end generate; - - nah0 : for i in 9 to NAHBSLV-1 generate ahbso(i) <= ahbs_none; end generate; - ------------------------------------------------------------------------ ---- Adaptions for HPE midi ---------------------------------------- ------------------------------------------------------------------------ - - -- rben vector is pulled down entirely while reading, - -- selected vector elements pulled down while writing - rben <= (others => '0') when memo.ramoen(0) = '0' else - memo.wrn; - -- invert signal for input via a key - -- invert dsuact signal for output on LED - dsuactn <= not dsuact; - - s_ramsn <= memo.ramsn(4 downto 0); - - -- drive reset signal for peripherals like ethernet, flash etc. - -- use USB reset for USB DCL (experimental) - -- USB reset needs to be decoupled from general resout signal - resoutn <= rstn; -- reset signal for USB host chip, exp. - -- connector - - - --------------------------------------------------------------------------------------- - -- PS/2 interface - --------------------------------------------------------------------------------------- - - -- INTERFACE 0 CANNOT BE USED, SINCE THE OUTPUT SIGNAL PS2CLOCK(0) - -- WOULD HAVE TO BE ASSIGNED TO FPGA INPUT PIN U30!! - - ps2_0if : if CFG_KBD_ENABLE /= 0 generate - -- PS/2 interface 0 (keyboard, bottom connector) - apbps2_0 : apbps2 - generic map ( - pindex => 10, - paddr => 10, - pirq => 4, - fKHz => PS2_SCALER, --CPU_FREQ/15, -- clock divider for APB clock (13.3 kHz selected) - fixed => 0) -- clock can be programmed via timer reload reg - port map ( - rst => rstn, - clk => clkm, - apbi => apbi, - apbo => apbo(10), - ps2i => kbdi0, - ps2o => kbdo0); - end generate ps2_0if; - - no_ps2_1if : if CFG_KBD_ENABLE = 0 generate - apbo(10) <= apb_none; - kbdo0 <= ps2o_none; - end generate no_ps2_1if; - - kbd0_clk_pad : iopad generic map (tech => padtech) - port map (ps2_clk(0), kbdo0.ps2_clk_o, kbdo0.ps2_clk_oe, kbdi0.ps2_clk_i); - - kbd0_data_pad : iopad generic map (tech => padtech) - port map (ps2_data(0), kbdo0.ps2_data_o, kbdo0.ps2_data_oe, kbdi0.ps2_data_i); - - - ps2_1if : if CFG_KBD_ENABLE /= 0 generate - -- PS/2 interface 1 (keyboard, top connector) - apbps2_1 : apbps2 - generic map ( - pindex => 5, - paddr => 5, - pirq => 4, - fKHz => PS2_SCALER, -- CPU_FREQ/15, - fixed => 0) - port map ( - rst => rstn, - clk => clkm, - apbi => apbi, - apbo => apbo(5), - ps2i => kbdi1, - ps2o => kbdo1); - end generate ps2_1if; - - no_ps2_if : if CFG_KBD_ENABLE = 0 generate - apbo(5) <= apb_none; - kbdo1 <= ps2o_none; - end generate no_ps2_if; - - kbd1_clk_pad : iopad generic map (tech => padtech) - port map (ps2_clk(1), kbdo1.ps2_clk_o, kbdo1.ps2_clk_oe, kbdi1.ps2_clk_i); - - kbd1_data_pad : iopad generic map (tech => padtech) - port map (ps2_data(1), kbdo1.ps2_data_o, kbdo1.ps2_data_oe, kbdi1.ps2_data_i); - - ----------------------------------------------------------------------------- - -- ADC/DAC interface - ----------------------------------------------------------------------------- - - adcdac_inst : if CFG_ADCDAC /= 0 generate - adcdac_1 : adcdac - generic map ( - pindex => 9, - paddr => 9, - pmask => 16#FFF#, - nbits => 10) - port map ( - rst => rstn, - clk => clkm, - apbi => apbi, - apbo => apbo(9), - adcdaci => adcdaci, - adcdaco => adcdaco); - - adcdaci.adc_in <= adc_dout; - adc_ain <= adcdaco.adc_fb; - dac_out <= adcdaco.dac_out; - - end generate; - - nadcdac_inst : if CFG_ADCDAC = 0 generate - apbo(9) <= apb_none; - end generate; - - - ----------------------------------------------------------------------------- - -- HPI SECTION - ----------------------------------------------------------------------------- - - ahb2hpi_inst : if CFG_AHB2HPI /= 0 generate - ahb2hpi2_1 : ahb2hpi2 - generic map ( - counter_width => 4, - data_width => 16, - address_width => 2, - hindex => 8, - haddr => 16#240#, - hmask => 16#fff#) - port map ( - HCLK => clkm, - HRESETn => rstn, - ahbso => ahbso(8), - ahbsi => ahbsi, - ADDR => hpiaddr, - WDATA => hpiwdata, - RDATA => hpirdata, - nCS => hpicsn, - nWR => hpiwriten, - nRD => hpirdn, - INT => hpiint, - drive_bus => drive_bus, - dbg_equal => dbg_equal - ); - - hpidata <= hpiwdata when drive_bus = '1' else - (others => 'Z'); - - hpirdata <= hpidata; - - hpiwrn <= hpiwriten; - - end generate; - nahb2hpi_inst : if CFG_AHB2HPI = 0 generate - ahbso(8) <= ahbs_none; - end generate; - - --------------------------------------------------------------------------------------- - -- Simple SPI Controller - --------------------------------------------------------------------------------------- - spi_oc_inst : if CFG_SPI_OC /= 0 generate - spi_oc_1 : spi_oc - generic map ( - pindex => 8, - paddr => 8, - pmask => 16#FFF#, - pirq => 5) - port map ( - rstn => rstn, - clk => clkm, - apbi => apbi, - apbo => apbo(8), - spi_in => spii, - spi_out => spio); - - -- inputs from SD card - spii.miso <= sdcard_do; - - -- outputs to SD card - sdcard_cs <= spio.ssn(0); - sdcard_di <= spio.mosi; - sdcard_sclk <= spio.sck; - - end generate; - - gspi_inst : if CFG_SPICTRL_ENABLE /= 0 and CFG_SPI_OC = 0 generate - gspi_1 : spictrl - generic map ( - pindex => 8, - paddr => 8, - pmask => 16#FFF#, - pirq => 5, - fdepth => CFG_SPICTRL_FIFO, -- FIFO depth is 2^fdepth - slvselen => CFG_SPICTRL_SLVREG, -- Slave select register enable - slvselsz => CFG_SPICTRL_SLVS, -- Number of slave select signal - netlist => 0, - syncram => CFG_SPICTRL_SYNCRAM, - ft => CFG_SPICTRL_FT) - port map ( - rstn => rstn, - clk => clkm, - apbi => apbi, - apbo => apbo(8), - spii => gspii, - spio => gspio); - - -- inputs from SD card - gspii.miso <= sdcard_do; - - -- outputs to SD card - sdcard_cs <= gspio.ssn(0); - sdcard_di <= gspio.mosi; - sdcard_sclk <= gspio.sck; - - end generate; - - nspi_inst : if CFG_SPI_OC = 0 and CFG_SPICTRL_ENABLE = 0 generate - apbo(8) <= apb_none; - end generate; - - - ----------------------------------------------------------------------------- - -- AUDIO CODEC - ----------------------------------------------------------------------------- - ac97_oc_inst : if CFG_AC97_OC /= 0 generate - - -- DMA not used at the moment - dma_ack <= (others => '0'); - - -- drive AC97 external clock with 25 MHz - ac97_ext_clk <= clk_25MHz; - - ac97_oc_1 : ac97_oc - generic map ( - slvndx => 4, - ioaddr => 16#300#, - iomask => 16#FFF#, - irq => 7) - port map ( - resetn => rstn, - clk => clkm, - ahbsi => ahbsi, - ahbso => ahbso(4), - - -- AC97 interface - bit_clk_pad_i => ac97_bit_clk, - sdata_pad_i => ac97_sdata_in, - -- output signals have to go via - -- intermediate signals - sync_pad_o => ac97_int_sync, - sdata_pad_o => ac97_int_sdata_out, - ac97_reset_padn_o => ac97_int_resetn, - - int_o => ac97_int_irq, - dma_req_o => open, - dma_ack_i => dma_ack, - suspended_o => open, - int_pol => vcc(0) -- interrupts active high - ); - - -- drive AC97 outputs from intermediate signals - ac97_sync <= ac97_int_sync; - ac97_sdata_out <= ac97_int_sdata_out; - ac97_resetn <= ac97_int_resetn; - - end generate; - nac97_oc_inst : if CFG_AC97_OC = 0 generate - ahbso(4) <= ahbs_none; - end generate; - - ------------------------------------------------------------------------ ---- Boot message ---------------------------------------------------- ------------------------------------------------------------------------ - --- pragma translate_off - x : report_version - generic map ( - msg1 => "LEON3 Demonstration design for Hpe-midi with module AS1-180", - msg2 => "GRLIB Version " & tost(LIBVHDL_VERSION/100) & "." & tost((LIBVHDL_VERSION mod 10)/10) - & "." & tost(LIBVHDL_VERSION mod 100), - msg3 => "Target technology: " & tech_table(fabtech) & ", memory library: " & tech_table(memtech), - mdel => 1 - ); --- pragma translate_on -end; diff --git a/designs/leon3-ge-hpe-midi-ep2s180/linkprom b/designs/leon3-ge-hpe-midi-ep2s180/linkprom deleted file mode 100644 index 1805994a..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/linkprom +++ /dev/null @@ -1,155 +0,0 @@ -/* linkcmds - * - * $Id: linkcmds,v 1.8.2.1 2000/05/24 17:06:38 joel Exp $ - */ - -OUTPUT_ARCH(sparc) -__DYNAMIC = 0; - -/* - * The memory map looks like this: - * +--------------------+ <- low memory - * | .text | - * | etext | - * | ctor list | the ctor and dtor lists are for - * | dtor list | C++ support - * | _endtext | - * +--------------------+ - * | .data | initialized data goes here - * | _sdata | - * | _edata | - * +--------------------+ - * | .bss | - * | __bss_start | start of bss, cleared by crt0 - * | _end | start of heap, used by sbrk() - * +--------------------+ - * | heap space | - * | _ENDHEAP | - * | stack space | - * | __stack | top of stack - * +--------------------+ <- high memory - */ - - -/* Default values, can be overridden */ - -_PROM_SIZE = 2M; -_RAM_SIZE = 4M; - -_RAM_START = 0x02000000; -_RAM_END = _RAM_START + _RAM_SIZE; - -_PROM_START = 0x00000000; -_PROM_END = _PROM_START + _PROM_SIZE; - -/* - * Alternate names without leading _. - */ - -PROM_START = _PROM_START; -PROM_SIZE = _PROM_SIZE; -PROM_END = _PROM_END; - -RAM_START = _RAM_START; -RAM_SIZE = _RAM_SIZE; -RAM_END = _RAM_END; - -_LEON_REG = 0x80000000; -LEON_REG = 0x80000000; - -/* these are the maximum values */ - -MEMORY -{ - rom : ORIGIN = 0x00000000, LENGTH = 16M - ram : ORIGIN = 0x40000000, LENGTH = 1024M -} - -SECTIONS -{ - .text : - { - CREATE_OBJECT_SYMBOLS - text_start = .; - _text_start = .; - *(.text) - . = ALIGN (16); - - *(.eh_frame) - . = ALIGN (16); - - *(.gnu.linkonce.t*) - - /* - * C++ constructors - */ - __CTOR_LIST__ = .; - LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) - *(.ctors) - LONG(0) - __CTOR_END__ = .; - __DTOR_LIST__ = .; - LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) - *(.dtors) - LONG(0) - __DTOR_END__ = .; - - _rodata_start = . ; - *(.rodata*) - *(.gnu.linkonce.r*) - _erodata = ALIGN( 0x10 ) ; - - etext = ALIGN(0x10); - _etext = .; - *(.init) - *(.fini) - *(.lit) - *(.shdata) - . = ALIGN (16); - _endtext = .; - } > rom - .dynamic : { *(.dynamic) } >ram - .got : { *(.got) } >ram - .plt : { *(.plt) } >ram - .hash : { *(.hash) } >ram - .dynrel : { *(.dynrel) } >ram - .dynsym : { *(.dynsym) } >ram - .dynstr : { *(.dynstr) } >ram - .hash : { *(.hash) } >ram - .data : - { - data_start = .; - _data_start = .; - _sdata = . ; - *(.data) - *(.gnu.linkonce.d*) - *(.gcc_except_table) - . = ALIGN(0x10); - edata = .; - _edata = .; - } > ram - .shbss : - { - *(.shbss) - } > ram - .bss : - { - __bss_start = ALIGN(0x8); - _bss_start = .; - bss_start = .; - *(.bss) - *(COMMON) - end = .; - _end = ALIGN(0x8); - __end = ALIGN(0x8); - } > ram - .jcr . (NOLOAD) : { *(.jcr) } - .stab . (NOLOAD) : - { - [ .stab ] - } - .stabstr . (NOLOAD) : - { - [ .stabstr ] - } -} diff --git a/designs/leon3-ge-hpe-midi-ep2s180/prom.h b/designs/leon3-ge-hpe-midi-ep2s180/prom.h deleted file mode 100644 index 1ea7e2e1..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/prom.h +++ /dev/null @@ -1,10 +0,0 @@ -#define MCFG1 0x10380233 -#define MCFG2 0xe6A06e60 -#define MCFG3 0x000ff000 -#define ASDCFG 0xfff00100 -#define DSDCFG 0xe6A06e60 -#define L2MCTRLIO 0x80000000 -#define IRQCTRL 0x80000200 -#define RAMSTART 0x40000000 -#define RAMSIZE 0x00100000 - diff --git a/designs/leon3-ge-hpe-midi-ep2s180/sram.srec b/designs/leon3-ge-hpe-midi-ep2s180/sram.srec deleted file mode 100755 index b60046fb..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/sram.srec +++ /dev/null @@ -1,19492 +0,0 @@ -S00C00007372616D2E7372656365 -S31540000000881000000910006C81C1206C01000000BE -S31540000010A1480000A75000001080203BAC102001F2 -S3154000002091D0200001000000010000000100000006 -S3154000003091D02000010000000100000001000000F6 -S31540000040A14800002910006B81C523A401000000CF -S31540000050A14800002910006981C522C8010000009E -S31540000060A14800002910006981C523340100000021 -S3154000007091D02000010000000100000001000000B6 -S3154000008091D02000010000000100000001000000A6 -S31540000090A1480000A75000001080201BAC1020098A -S315400000A091D0200001000000010000000100000086 -S315400000B091D0200001000000010000000100000076 -S315400000C091D0200001000000010000000100000066 -S315400000D091D0200001000000010000000100000056 -S315400000E091D0200001000000010000000100000046 -S315400000F091D0200001000000010000000100000036 -S3154000010091D0200001000000010000000100000025 -S31540000110AE102001A148000010806A33A7500000AD -S31540000120AE102002A148000010806A2FA7500000A0 -S31540000130AE102003A148000010806A2BA750000093 -S31540000140AE102004A148000010806A27A750000086 -S31540000150AE102005A148000010806A23A750000079 -S31540000160AE102006A148000010806A1FA75000006C -S31540000170AE102007A148000010806A1BA75000005F -S31540000180AE102008A148000010806A17A750000052 -S31540000190AE102009A148000010806A13A750000045 -S315400001A0AE10200AA148000010806A0FA750000038 -S315400001B0AE10200BA148000010806A0BA75000002B -S315400001C0AE10200CA148000010806A07A75000001E -S315400001D0AE10200DA148000010806A03A750000011 -S315400001E0AE10200EA1480000108069FFA750000005 -S315400001F0AE10200FA1480000108069FBA7500000F8 -S3154000020091D0200001000000010000000100000024 -S3154000021091D0200001000000010000000100000014 -S3154000022091D0200001000000010000000100000004 -S3154000023091D02000010000000100000001000000F4 -S3154000024091D02000010000000100000001000000E4 -S3154000025091D02000010000000100000001000000D4 -S3154000026091D02000010000000100000001000000C4 -S3154000027091D02000010000000100000001000000B4 -S3154000028091D02000010000000100000001000000A4 -S3154000029091D0200001000000010000000100000094 -S315400002A091D0200001000000010000000100000084 -S315400002B091D0200001000000010000000100000074 -S315400002C091D0200001000000010000000100000064 -S315400002D091D0200001000000010000000100000054 -S315400002E091D0200001000000010000000100000044 -S315400002F091D0200001000000010000000100000034 -S3154000030091D0200001000000010000000100000023 -S3154000031091D0200001000000010000000100000013 -S3154000032091D0200001000000010000000100000003 -S3154000033091D02000010000000100000001000000F3 -S3154000034091D02000010000000100000001000000E3 -S3154000035091D02000010000000100000001000000D3 -S3154000036091D02000010000000100000001000000C3 -S3154000037091D02000010000000100000001000000B3 -S3154000038091D02000010000000100000001000000A3 -S3154000039091D0200001000000010000000100000093 -S315400003A091D0200001000000010000000100000083 -S315400003B091D0200001000000010000000100000073 -S315400003C091D0200001000000010000000100000063 -S315400003D091D0200001000000010000000100000053 -S315400003E091D0200001000000010000000100000043 -S315400003F091D0200001000000010000000100000033 -S3154000040091D0200001000000010000000100000022 -S3154000041091D0200001000000010000000100000012 -S3154000042091D0200001000000010000000100000002 -S3154000043091D02000010000000100000001000000F2 -S3154000044091D02000010000000100000001000000E2 -S3154000045091D02000010000000100000001000000D2 -S3154000046091D02000010000000100000001000000C2 -S3154000047091D02000010000000100000001000000B2 -S3154000048091D02000010000000100000001000000A2 -S3154000049091D0200001000000010000000100000092 -S315400004A091D0200001000000010000000100000082 -S315400004B091D0200001000000010000000100000072 -S315400004C091D0200001000000010000000100000062 -S315400004D091D0200001000000010000000100000052 -S315400004E091D0200001000000010000000100000042 -S315400004F091D0200001000000010000000100000032 -S3154000050091D0200001000000010000000100000021 -S3154000051091D0200001000000010000000100000011 -S3154000052091D0200001000000010000000100000001 -S3154000053091D02000010000000100000001000000F1 -S3154000054091D02000010000000100000001000000E1 -S3154000055091D02000010000000100000001000000D1 -S3154000056091D02000010000000100000001000000C1 -S3154000057091D02000010000000100000001000000B1 -S3154000058091D02000010000000100000001000000A1 -S3154000059091D0200001000000010000000100000091 -S315400005A091D0200001000000010000000100000081 -S315400005B091D0200001000000010000000100000071 -S315400005C091D0200001000000010000000100000061 -S315400005D091D0200001000000010000000100000051 -S315400005E091D0200001000000010000000100000041 -S315400005F091D0200001000000010000000100000031 -S3154000060091D0200001000000010000000100000020 -S3154000061091D0200001000000010000000100000010 -S3154000062091D0200001000000010000000100000000 -S3154000063091D02000010000000100000001000000F0 -S3154000064091D02000010000000100000001000000E0 -S3154000065091D02000010000000100000001000000D0 -S3154000066091D02000010000000100000001000000C0 -S3154000067091D02000010000000100000001000000B0 -S3154000068091D02000010000000100000001000000A0 -S3154000069091D0200001000000010000000100000090 -S315400006A091D0200001000000010000000100000080 -S315400006B091D0200001000000010000000100000070 -S315400006C091D0200001000000010000000100000060 -S315400006D091D0200001000000010000000100000050 -S315400006E091D0200001000000010000000100000040 -S315400006F091D0200001000000010000000100000030 -S3154000070091D020000100000001000000010000001F -S3154000071091D020000100000001000000010000000F -S3154000072091D02000010000000100000001000000FF -S3154000073091D02000010000000100000001000000EF -S3154000074091D02000010000000100000001000000DF -S3154000075091D02000010000000100000001000000CF -S3154000076091D02000010000000100000001000000BF -S3154000077091D02000010000000100000001000000AF -S3154000078091D020000100000001000000010000009F -S3154000079091D020000100000001000000010000008F -S315400007A091D020000100000001000000010000007F -S315400007B091D020000100000001000000010000006F -S315400007C091D020000100000001000000010000005F -S315400007D091D020000100000001000000010000004F -S315400007E091D020000100000001000000010000003F -S315400007F091D020000100000001000000010000002F -S3154000080091D020000100000001000000010000001E -S3154000081091D020000100000001000000010000000E -S31540000820A14800002910006A81C521080100000086 -S31540000830A1480000108067D9A750000001000000C1 -S3154000084091D02000010000000100000001000000DE -S31540000850A14800002910006A81C520EC0100000073 -S3154000086091D02000010000000100000001000000BE -S3154000087091D02000010000000100000001000000AE -S3154000088091D020000100000001000000010000009E -S3154000089091D020000100000001000000010000008E -S315400008A091D020000100000001000000010000007E -S315400008B091D020000100000001000000010000006E -S315400008C091D020000100000001000000010000005E -S315400008D091D020000100000001000000010000004E -S315400008E091D020000100000001000000010000003E -S315400008F091D020000100000001000000010000002E -S3154000090091D020000100000001000000010000001D -S3154000091091D020000100000001000000010000000D -S3154000092091D02000010000000100000001000000FD -S3154000093091D02000010000000100000001000000ED -S3154000094091D02000010000000100000001000000DD -S3154000095091D02000010000000100000001000000CD -S3154000096091D02000010000000100000001000000BD -S3154000097091D02000010000000100000001000000AD -S3154000098091D020000100000001000000010000009D -S3154000099091D020000100000001000000010000008D -S315400009A091D020000100000001000000010000007D -S315400009B091D020000100000001000000010000006D -S315400009C091D020000100000001000000010000005D -S315400009D091D020000100000001000000010000004D -S315400009E091D020000100000001000000010000003D -S315400009F091D020000100000001000000010000002D -S31540000A0091D020000100000001000000010000001C -S31540000A1091D020000100000001000000010000000C -S31540000A2091D02000010000000100000001000000FC -S31540000A3091D02000010000000100000001000000EC -S31540000A4091D02000010000000100000001000000DC -S31540000A5091D02000010000000100000001000000CC -S31540000A6091D02000010000000100000001000000BC -S31540000A7091D02000010000000100000001000000AC -S31540000A8091D020000100000001000000010000009C -S31540000A9091D020000100000001000000010000008C -S31540000AA091D020000100000001000000010000007C -S31540000AB091D020000100000001000000010000006C -S31540000AC091D020000100000001000000010000005C -S31540000AD091D020000100000001000000010000004C -S31540000AE091D020000100000001000000010000003C -S31540000AF091D020000100000001000000010000002C -S31540000B0091D020000100000001000000010000001B -S31540000B1091D020000100000001000000010000000B -S31540000B2091D02000010000000100000001000000FB -S31540000B3091D02000010000000100000001000000EB -S31540000B4091D02000010000000100000001000000DB -S31540000B5091D02000010000000100000001000000CB -S31540000B6091D02000010000000100000001000000BB -S31540000B7091D02000010000000100000001000000AB -S31540000B8091D020000100000001000000010000009B -S31540000B9091D020000100000001000000010000008B -S31540000BA091D020000100000001000000010000007B -S31540000BB091D020000100000001000000010000006B -S31540000BC091D020000100000001000000010000005B -S31540000BD091D020000100000001000000010000004B -S31540000BE091D020000100000001000000010000003B -S31540000BF091D020000100000001000000010000002B -S31540000C0091D020000100000001000000010000001A -S31540000C1091D020000100000001000000010000000A -S31540000C2091D02000010000000100000001000000FA -S31540000C3091D02000010000000100000001000000EA -S31540000C4091D02000010000000100000001000000DA -S31540000C5091D02000010000000100000001000000CA -S31540000C6091D02000010000000100000001000000BA -S31540000C7091D02000010000000100000001000000AA -S31540000C8091D020000100000001000000010000009A -S31540000C9091D020000100000001000000010000008A -S31540000CA091D020000100000001000000010000007A -S31540000CB091D020000100000001000000010000006A -S31540000CC091D020000100000001000000010000005A -S31540000CD091D020000100000001000000010000004A -S31540000CE091D020000100000001000000010000003A -S31540000CF091D020000100000001000000010000002A -S31540000D0091D0200001000000010000000100000019 -S31540000D1091D0200001000000010000000100000009 -S31540000D2091D02000010000000100000001000000F9 -S31540000D3091D02000010000000100000001000000E9 -S31540000D4091D02000010000000100000001000000D9 -S31540000D5091D02000010000000100000001000000C9 -S31540000D6091D02000010000000100000001000000B9 -S31540000D7091D02000010000000100000001000000A9 -S31540000D8091D0200001000000010000000100000099 -S31540000D9091D0200001000000010000000100000089 -S31540000DA091D0200001000000010000000100000079 -S31540000DB091D0200001000000010000000100000069 -S31540000DC091D0200001000000010000000100000059 -S31540000DD091D0200001000000010000000100000049 -S31540000DE091D0200001000000010000000100000039 -S31540000DF091D0200001000000010000000100000029 -S31540000E0091D0200001000000010000000100000018 -S31540000E1091D0200001000000010000000100000008 -S31540000E2091D02000010000000100000001000000F8 -S31540000E3091D02000010000000100000001000000E8 -S31540000E4091D02000010000000100000001000000D8 -S31540000E5091D02000010000000100000001000000C8 -S31540000E6091D02000010000000100000001000000B8 -S31540000E7091D02000010000000100000001000000A8 -S31540000E8091D0200001000000010000000100000098 -S31540000E9091D0200001000000010000000100000088 -S31540000EA091D0200001000000010000000100000078 -S31540000EB091D0200001000000010000000100000068 -S31540000EC091D0200001000000010000000100000058 -S31540000ED091D0200001000000010000000100000048 -S31540000EE091D0200001000000010000000100000038 -S31540000EF091D0200001000000010000000100000028 -S31540000F0091D0200001000000010000000100000017 -S31540000F1091D0200001000000010000000100000007 -S31540000F2091D02000010000000100000001000000F7 -S31540000F3091D02000010000000100000001000000E7 -S31540000F4091D02000010000000100000001000000D7 -S31540000F5091D02000010000000100000001000000C7 -S31540000F6091D02000010000000100000001000000B7 -S31540000F7091D02000010000000100000001000000A7 -S31540000F8091D0200001000000010000000100000097 -S31540000F9091D0200001000000010000000100000087 -S31540000FA091D0200001000000010000000100000077 -S31540000FB091D0200001000000010000000100000067 -S31540000FC091D0200001000000010000000100000057 -S31540000FD091D0200001000000010000000100000047 -S31540000FE091D0200001000000010000000100000037 -S31540000FF091D0200001000000010000000100000027 -S315400010009DE3BFC0051001438410A0600710014452 -S315400010108610E188821000008620C00286A0E00883 -S3154000102036BFFFFFC038800311100144901221885B -S31540001030C02200004000666601000000400066666F -S315400010400100000040006818010000001110006D0A -S31540001050901221A040006166010000004000694AEC -S3154000106001000000400000430100000040006743CB -S315400010700100000081C7E00881E800009DE3BF98B9 -S3154000108023100143C20C606080A0600012800015EE -S315400010902110008010800005C204200C9FC3400030 -S315400010A0C224200CC204200CDA00400080A3600059 -S315400010B012BFFFFB82006004030000008210600044 -S315400010C080A0600002800006821020011110006D91 -S315400010D06FFFFBCC9012213082102001C22C606041 -S315400010E081C7E00881E800009DE3BF9881C7E0081A -S315400010F081E800009DE3BF98030000008210600075 -S315400011001110006D1310014380A060009012213031 -S3154000111002800004921260646FFFFBBA0100000077 -S315400011201B100144C203618880A060000280000950 -S31540001130B0136188030000008210600080A0600048 -S3154000114002800004010000006FFFFBAE81E8000052 -S315400011500100000081C7E00881E800009DE3BF98D8 -S3154000116081C7E00881E8000081C3E0080100000073 -S315400011709DE3BF9840000007010000004000014683 -S31540001180010000004000000E81E800000100000060 -S315400011909DE3BF98400000290100000080A2200086 -S315400011A01280000503100080D80060109A102001BC -S315400011B0DA23201081C7E00891E820000310008060 -S315400011C0D80060109A102001DA23201481C3E00869 -S315400011D09010200003100080DA006010D0234000F9 -S315400011E081C3E0089010200003100080DA006010F0 -S315400011F0D023600881C3E0089010200003100080CF -S31540001200DA006010D023600481C3E008901020000B -S3154000121013100080921260149010200081C3E008E1 -S31540001220D0EA4020901020001310008092126014E3 -S3154000123081C3E008D0224000914440009132201CF6 -S3154000124081C3E008900A200F81C3E008D0820020C5 -S315400012509010200C81C3E008D08200408210000824 -S3154000126080A20009148000039022000990224001C8 -S3154000127081C3E00801000000932A60028210200129 -S31540001280C22200099810200080A3000A1680000A96 -S3154000129096102001832B2002DA02000180A0000D67 -S315400012A0826020009803200180A3000A06BFFFFA4F -S315400012B0960AC00180A2E00002BFFFF49810200009 -S315400012C081C3E008010000009DE3BF98C2062010DC -S315400012D08330601CA0100018A400600180A4A00107 -S315400012E00280006CB0103FFF7FFFFFD4010000007A -S315400012F0AA100008912A20047FFFFFBC9002200715 -S315400013007FFFFFD40100000003020000808A000135 -S315400013100280005C010000009A05600182102001F5 -S315400013208328400D11100080C2242010901220A066 -S31540001330921000157FFFFFD1941000120310008019 -S3154000134082106018A12D6002C0204010DA004010C3 -S31540001350A610000180A36009291001431480002BC8 -S31540001360AC1000017FFFFFAB0100000080A220000F -S3154000137012BFFFFD01000000B010200080A6001241 -S31540001380168000140100000010800005A21000160F -S3154000139080A600121680000F01000000832E200256 -S315400013A0D0044010D20440017FFFFFADB0062001BB -S315400013B080A2200104BFFFF7901020027FFFFF901C -S315400013C00100000080A6001206BFFFF6832E200211 -S315400013D0C205207C82006001C225207C7FFFFF92EF -S315400013E001000000C204C01082006001C224C01087 -S315400013F0DA04C01080A3600904BFFFDB111000802F -S31540001400108000049012205C111000809012205C25 -S31540001410921000157FFFFF9994100012832CA002B2 -S3154000142082004012A0004001DA05207C80A4000D15 -S3154000143002800004231001437FFFFF7190102003B8 -S31540001440C204607C80A060000480000601000000A9 -S31540001450C204607C80A400011680000580A560005F -S315400014607FFFFF679010200380A56000228000095F -S31540001470B010200091D0200010800006B01020004F -S315400014807FFFFF5F9010200110BFFFA59A05600106 -S3154000149081C7E00881E800009DE3BF98C20620109E -S315400014A0A01000188330601C80A0600002800009F4 -S315400014B0B0103FFF7FFFFF610100000080A22000C7 -S315400014C0128000040300003F821063FFC2242010F4 -S315400014D081C7E00881E800009DE3BF98C20620105E -S315400014E08330601CA400600180A4A00102800068D3 -S315400014F0B0103FFF7FFFFF5101000000AA10000817 -S31540001500912A20047FFFFF39900220077FFFFF5179 -S315400015100100000003020000808A0001028000589A -S315400015200100000011100080901220A092100015BA -S315400015307FFFFF5294100012031000808210601843 -S31540001540A12D6002C0204010DA004010A610000114 -S3154000155080A36009291001431480002BAC100001C0 -S315400015607FFFFF2C0100000080A2200012BFFFFD7C -S3154000157001000000B010200080A600121680001462 -S315400015800100000010800005A210001680A600127F -S315400015901680000F01000000832E2002D004401068 -S315400015A0D20440017FFFFF2EB006200180A2200119 -S315400015B004BFFFF7901020027FFFFF1101000000DB -S315400015C080A6001206BFFFF6832E2002C205207CAD -S315400015D082006001C225207C7FFFFF1301000000CE -S315400015E0C204C01082006001C224C010DA04C010D8 -S315400015F080A3600904BFFFDB111000801080000447 -S315400016009012205C111000809012205C9210001500 -S315400016107FFFFF1A94100012832CA0028200401212 -S31540001620A0004001DA05207C80A4000D0280000461 -S31540001630231001437FFFFEF290102003C204607C1A -S3154000164080A060000480000601000000C204607CA7 -S3154000165080A400011680000580A560007FFFFEE89B -S315400016609010200380A5600022800009B010200061 -S3154000167091D0200010800006B01020007FFFFEE0D1 -S315400016809010200110BFFFA91110008081C7E0080B -S3154000169081E800009DE3BF983120000092162200A9 -S315400016A09410200040003E599010200140003B62BB -S315400016B0901622009016230040003EBE921020084D -S315400016C0B016210040003A4F81E8000001000000BA -S315400016D09DE3BF9821200000921422009410200020 -S315400016E040003E4A9010200140003B539014220097 -S315400016F09210001840003EAF90142300B014210011 -S3154000170040003A4081E8000001000000000000006F -S315400017100000000000000000000000000000000083 -S315400017200000000000000000000000000000000073 -S315400017300000000000000000000000000000000063 -S315400017400000000000000000000000000000000053 -S315400017500000000000000000000000000000000043 -S315400017600000000000000000000000000000000033 -S315400017700000000000000000000000000000000023 -S315400017800000000000000000000000000000000013 -S315400017900000000000000000000000000000000003 -S315400017A000000000000000000000000000000000F3 -S315400017B000000000000000000000000000000000E3 -S315400017C000000000000000000000000000000000D3 -S315400017D000000000000000000000000000000000C3 -S315400017E000000000000000000000000000000000B3 -S315400017F000000000000000000000000000000000A3 -S315400018000000000000000000000000000000000092 -S315400018100000000000000000000000000000000082 -S315400018200000000000000000000000000000000072 -S315400018300000000000000000000000000000000062 -S315400018400000000000000000000000000000000052 -S315400018500000000000000000000000000000000042 -S315400018600000000000000000000000000000000032 -S315400018700000000000000000000000000000000022 -S315400018800000000000000000000000000000000012 -S315400018900000000000000000000000000000000002 -S315400018A000000000000000000000000000000000F2 -S315400018B000000000000000000000000000000000E2 -S315400018C000000000000000000000000000000000D2 -S315400018D000000000000000000000000000000000C2 -S315400018E000000000000000000000000000000000B2 -S315400018F000000000000000000000000000000000A2 -S315400019000000000000000000000000000000000091 -S315400019100000000000000000000000000000000081 -S315400019200000000000000000000000000000000071 -S315400019300000000000000000000000000000000061 -S315400019400000000000000000000000000000000051 -S315400019500000000000000000000000000000000041 -S315400019600000000000000000000000000000000031 -S315400019700000000000000000000000000000000021 -S315400019800000000000000000000000000000000011 -S315400019900000000000000000000000000000000001 -S315400019A000000000000000000000000000000000F1 -S315400019B000000000000000000000000000000000E1 -S315400019C000000000000000000000000000000000D1 -S315400019D000000000000000000000000000000000C1 -S315400019E000000000000000000000000000000000B1 -S315400019F000000000000000000000000000000000A1 -S31540001A000000000000000000000000000000000090 -S31540001A100000000000000000000000000000000080 -S31540001A200000000000000000000000000000000070 -S31540001A300000000000000000000000000000000060 -S31540001A400000000000000000000000000000000050 -S31540001A500000000000000000000000000000000040 -S31540001A600000000000000000000000000000000030 -S31540001A700000000000000000000000000000000020 -S31540001A800000000000000000000000000000000010 -S31540001A900000000000000000000000000000000000 -S31540001AA000000000000000000000000000000000F0 -S31540001AB000000000000000000000000000000000E0 -S31540001AC000000000000000000000000000000000D0 -S31540001AD000000000000000000000000000000000C0 -S31540001AE000000000000000000000000000000000B0 -S31540001AF000000000000000000000000000000000A0 -S31540001B00000000000000000000000000000000008F -S31540001B10000000000000000000000000000000007F -S31540001B20000000000000000000000000000000006F -S31540001B30000000000000000000000000000000005F -S31540001B40000000000000000000000000000000004F -S31540001B50000000000000000000000000000000003F -S31540001B60000000000000000000000000000000002F -S31540001B70000000000000000000000000000000001F -S31540001B80000000000000000000000000000000000F -S31540001B9000000000000000000000000000000000FF -S31540001BA000000000000000000000000000000000EF -S31540001BB000000000000000000000000000000000DF -S31540001BC000000000000000000000000000000000CF -S31540001BD000000000000000000000000000000000BF -S31540001BE000000000000000000000000000000000AF -S31540001BF0000000000000000000000000000000009F -S31540001C00000000000000000000000000000000008E -S31540001C10000000000000000000000000000000007E -S31540001C20000000000000000000000000000000006E -S31540001C30000000000000000000000000000000005E -S31540001C40000000000000000000000000000000004E -S31540001C50000000000000000000000000000000003E -S31540001C60000000000000000000000000000000002E -S31540001C70000000000000000000000000000000001E -S31540001C80000000000000000000000000000000000E -S31540001C9000000000000000000000000000000000FE -S31540001CA000000000000000000000000000000000EE -S31540001CB000000000000000000000000000000000DE -S31540001CC000000000000000000000000000000000CE -S31540001CD000000000000000000000000000000000BE -S31540001CE000000000000000000000000000000000AE -S31540001CF0000000000000000000000000000000009E -S31540001D00000000000000000000000000000000008D -S31540001D10000000000000000000000000000000007D -S31540001D20000000000000000000000000000000006D -S31540001D30000000000000000000000000000000005D -S31540001D40000000000000000000000000000000004D -S31540001D50000000000000000000000000000000003D -S31540001D60000000000000000000000000000000002D -S31540001D70000000000000000000000000000000001D -S31540001D80000000000000000000000000000000000D -S31540001D9000000000000000000000000000000000FD -S31540001DA000000000000000000000000000000000ED -S31540001DB000000000000000000000000000000000DD -S31540001DC000000000000000000000000000000000CD -S31540001DD000000000000000000000000000000000BD -S31540001DE000000000000000000000000000000000AD -S31540001DF0000000000000000000000000000000009D -S31540001E00000000000000000000000000000000008C -S31540001E10000000000000000000000000000000007C -S31540001E20000000000000000000000000000000006C -S31540001E30000000000000000000000000000000005C -S31540001E40000000000000000000000000000000004C -S31540001E50000000000000000000000000000000003C -S31540001E60000000000000000000000000000000002C -S31540001E70000000000000000000000000000000001C -S31540001E80000000000000000000000000000000000C -S31540001E9000000000000000000000000000000000FC -S31540001EA000000000000000000000000000000000EC -S31540001EB000000000000000000000000000000000DC -S31540001EC000000000000000000000000000000000CC -S31540001ED000000000000000000000000000000000BC -S31540001EE000000000000000000000000000000000AC -S31540001EF0000000000000000000000000000000009C -S31540001F00000000000000000000000000000000008B -S31540001F10000000000000000000000000000000007B -S31540001F20000000000000000000000000000000006B -S31540001F30000000000000000000000000000000005B -S31540001F40000000000000000000000000000000004B -S31540001F50000000000000000000000000000000003B -S31540001F60000000000000000000000000000000002B -S31540001F70000000000000000000000000000000001B -S31540001F80000000000000000000000000000000000B -S31540001F9000000000000000000000000000000000FB -S31540001FA000000000000000000000000000000000EB -S31540001FB000000000000000000000000000000000DB -S31540001FC000000000000000000000000000000000CB -S31540001FD000000000000000000000000000000000BB -S31540001FE000000000000000000000000000000000AB -S31540001FF0000000000000000000000000000000009B -S31540002000000000000000000000000000000000008A -S31540002010000000000000000000000000000000007A -S31540002020000000000000000000000000000000006A -S31540002030000000000000000000000000000000005A -S31540002040000000000000000000000000000000004A -S31540002050000000000000000000000000000000003A -S31540002060000000000000000000000000000000002A -S31540002070000000000000000000000000000000001A -S31540002080000000000000000000000000000000000A -S3154000209000000000000000000000000000000000FA -S315400020A000000000000000000000000000000000EA -S315400020B000000000000000000000000000000000DA -S315400020C000000000000000000000000000000000CA -S315400020D000000000000000000000000000000000BA -S315400020E000000000000000000000000000000000AA -S315400020F0000000000000000000000000000000009A -S315400021000000000000000000000000000000000089 -S315400021100000000000000000000000000000000079 -S315400021200000000000000000000000000000000069 -S315400021300000000000000000000000000000000059 -S315400021400000000000000000000000000000000049 -S315400021500000000000000000000000000000000039 -S315400021600000000000000000000000000000000029 -S315400021700000000000000000000000000000000019 -S315400021800000000000000000000000000000000009 -S3154000219000000000000000000000000000000000F9 -S315400021A000000000000000000000000000000000E9 -S315400021B000000000000000000000000000000000D9 -S315400021C000000000000000000000000000000000C9 -S315400021D000000000000000000000000000000000B9 -S315400021E000000000000000000000000000000000A9 -S315400021F00000000000000000000000000000000099 -S315400022000000000000000000000000000000000088 -S315400022100000000000000000000000000000000078 -S315400022200000000000000000000000000000000068 -S315400022300000000000000000000000000000000058 -S315400022400000000000000000000000000000000048 -S315400022500000000000000000000000000000000038 -S315400022600000000000000000000000000000000028 -S315400022700000000000000000000000000000000018 -S315400022800000000000000000000000000000000008 -S3154000229000000000000000000000000000000000F8 -S315400022A000000000000000000000000000000000E8 -S315400022B000000000000000000000000000000000D8 -S315400022C000000000000000000000000000000000C8 -S315400022D000000000000000000000000000000000B8 -S315400022E000000000000000000000000000000000A8 -S315400022F00000000000000000000000000000000098 -S315400023000000000000000000000000000000000087 -S315400023100000000000000000000000000000000077 -S315400023200000000000000000000000000000000067 -S315400023300000000000000000000000000000000057 -S315400023400000000000000000000000000000000047 -S315400023500000000000000000000000000000000037 -S315400023600000000000000000000000000000000027 -S315400023700000000000000000000000000000000017 -S315400023800000000000000000000000000000000007 -S3154000239000000000000000000000000000000000F7 -S315400023A000000000000000000000000000000000E7 -S315400023B000000000000000000000000000000000D7 -S315400023C000000000000000000000000000000000C7 -S315400023D000000000000000000000000000000000B7 -S315400023E000000000000000000000000000000000A7 -S315400023F00000000000000000000000000000000097 -S315400024000000000000000000000000000000000086 -S315400024100000000000000000000000000000000076 -S315400024200000000000000000000000000000000066 -S315400024300000000000000000000000000000000056 -S315400024400000000000000000000000000000000046 -S315400024500000000000000000000000000000000036 -S315400024600000000000000000000000000000000026 -S315400024700000000000000000000000000000000016 -S315400024800000000000000000000000000000000006 -S3154000249000000000000000000000000000000000F6 -S315400024A000000000000000000000000000000000E6 -S315400024B000000000000000000000000000000000D6 -S315400024C000000000000000000000000000000000C6 -S315400024D000000000000000000000000000000000B6 -S315400024E000000000000000000000000000000000A6 -S315400024F00000000000000000000000000000000096 -S315400025000000000000000000000000000000000085 -S315400025100000000000000000000000000000000075 -S315400025200000000000000000000000000000000065 -S315400025300000000000000000000000000000000055 -S315400025400000000000000000000000000000000045 -S315400025500000000000000000000000000000000035 -S315400025600000000000000000000000000000000025 -S315400025700000000000000000000000000000000015 -S315400025800000000000000000000000000000000005 -S3154000259000000000000000000000000000000000F5 -S315400025A000000000000000000000000000000000E5 -S315400025B000000000000000000000000000000000D5 -S315400025C000000000000000000000000000000000C5 -S315400025D000000000000000000000000000000000B5 -S315400025E000000000000000000000000000000000A5 -S315400025F00000000000000000000000000000000095 -S315400026000000000000000000000000000000000084 -S315400026100000000000000000000000000000000074 -S315400026200000000000000000000000000000000064 -S315400026300000000000000000000000000000000054 -S315400026400000000000000000000000000000000044 -S315400026500000000000000000000000000000000034 -S315400026600000000000000000000000000000000024 -S315400026700000000000000000000000000000000014 -S315400026800000000000000000000000000000000004 -S3154000269000000000000000000000000000000000F4 -S315400026A000000000000000000000000000000000E4 -S315400026B000000000000000000000000000000000D4 -S315400026C000000000000000000000000000000000C4 -S315400026D000000000000000000000000000000000B4 -S315400026E000000000000000000000000000000000A4 -S315400026F00000000000000000000000000000000094 -S315400027000000000000000000000000000000000083 -S315400027100000000000000000000000000000000073 -S315400027200000000000000000000000000000000063 -S315400027300000000000000000000000000000000053 -S315400027400000000000000000000000000000000043 -S315400027500000000000000000000000000000000033 -S315400027600000000000000000000000000000000023 -S315400027700000000000000000000000000000000013 -S315400027800000000000000000000000000000000003 -S3154000279000000000000000000000000000000000F3 -S315400027A000000000000000000000000000000000E3 -S315400027B000000000000000000000000000000000D3 -S315400027C000000000000000000000000000000000C3 -S315400027D000000000000000000000000000000000B3 -S315400027E000000000000000000000000000000000A3 -S315400027F00000000000000000000000000000000093 -S315400028000000000000000000000000000000000082 -S315400028100000000000000000000000000000000072 -S315400028200000000000000000000000000000000062 -S315400028300000000000000000000000000000000052 -S315400028400000000000000000000000000000000042 -S315400028500000000000000000000000000000000032 -S315400028600000000000000000000000000000000022 -S315400028700000000000000000000000000000000012 -S315400028800000000000000000000000000000000002 -S3154000289000000000000000000000000000000000F2 -S315400028A000000000000000000000000000000000E2 -S315400028B000000000000000000000000000000000D2 -S315400028C000000000000000000000000000000000C2 -S315400028D000000000000000000000000000000000B2 -S315400028E000000000000000000000000000000000A2 -S315400028F00000000000000000000000000000000092 -S315400029000000000000000000000000000000000081 -S315400029100000000000000000000000000000000071 -S315400029200000000000000000000000000000000061 -S315400029300000000000000000000000000000000051 -S315400029400000000000000000000000000000000041 -S315400029500000000000000000000000000000000031 -S315400029600000000000000000000000000000000021 -S315400029700000000000000000000000000000000011 -S315400029800000000000000000000000000000000001 -S3154000299000000000000000000000000000000000F1 -S315400029A000000000000000000000000000000000E1 -S315400029B000000000000000000000000000000000D1 -S315400029C000000000000000000000000000000000C1 -S315400029D000000000000000000000000000000000B1 -S315400029E000000000000000000000000000000000A1 -S315400029F00000000000000000000000000000000091 -S31540002A000000000000000000000000000000000080 -S31540002A100000000000000000000000000000000070 -S31540002A200000000000000000000000000000000060 -S31540002A300000000000000000000000000000000050 -S31540002A400000000000000000000000000000000040 -S31540002A500000000000000000000000000000000030 -S31540002A600000000000000000000000000000000020 -S31540002A700000000000000000000000000000000010 -S31540002A800000000000000000000000000000000000 -S31540002A9000000000000000000000000000000000F0 -S31540002AA000000000000000000000000000000000E0 -S31540002AB000000000000000000000000000000000D0 -S31540002AC000000000000000000000000000000000C0 -S31540002AD000000000000000000000000000000000B0 -S31540002AE000000000000000000000000000000000A0 -S31540002AF00000000000000000000000000000000090 -S31540002B00000000000000000000000000000000007F -S31540002B10000000000000000000000000000000006F -S31540002B20000000000000000000000000000000005F -S31540002B30000000000000000000000000000000004F -S31540002B40000000000000000000000000000000003F -S31540002B50000000000000000000000000000000002F -S31540002B60000000000000000000000000000000001F -S31540002B70000000000000000000000000000000000F -S31540002B8000000000000000000000000000000000FF -S31540002B9000000000000000000000000000000000EF -S31540002BA000000000000000000000000000000000DF -S31540002BB000000000000000000000000000000000CF -S31540002BC000000000000000000000000000000000BF -S31540002BD000000000000000000000000000000000AF -S31540002BE0000000000000000000000000000000009F -S31540002BF0000000000000000000000000000000008F -S31540002C00000000000000000000000000000000007E -S31540002C10000000000000000000000000000000006E -S31540002C20000000000000000000000000000000005E -S31540002C30000000000000000000000000000000004E -S31540002C40000000000000000000000000000000003E -S31540002C50000000000000000000000000000000002E -S31540002C60000000000000000000000000000000001E -S31540002C70000000000000000000000000000000000E -S31540002C8000000000000000000000000000000000FE -S31540002C9000000000000000000000000000000000EE -S31540002CA000000000000000000000000000000000DE -S31540002CB000000000000000000000000000000000CE -S31540002CC000000000000000000000000000000000BE -S31540002CD000000000000000000000000000000000AE -S31540002CE0000000000000000000000000000000009E -S31540002CF0000000000000000000000000000000008E -S31540002D00000000000000000000000000000000007D -S31540002D10000000000000000000000000000000006D -S31540002D20000000000000000000000000000000005D -S31540002D30000000000000000000000000000000004D -S31540002D40000000000000000000000000000000003D -S31540002D50000000000000000000000000000000002D -S31540002D60000000000000000000000000000000001D -S31540002D70000000000000000000000000000000000D -S31540002D8000000000000000000000000000000000FD -S31540002D9000000000000000000000000000000000ED -S31540002DA000000000000000000000000000000000DD -S31540002DB000000000000000000000000000000000CD -S31540002DC000000000000000000000000000000000BD -S31540002DD000000000000000000000000000000000AD -S31540002DE0000000000000000000000000000000009D -S31540002DF0000000000000000000000000000000008D -S31540002E00000000000000000000000000000000007C -S31540002E10000000000000000000000000000000006C -S31540002E20000000000000000000000000000000005C -S31540002E30000000000000000000000000000000004C -S31540002E40000000000000000000000000000000003C -S31540002E50000000000000000000000000000000002C -S31540002E60000000000000000000000000000000001C -S31540002E70000000000000000000000000000000000C -S31540002E8000000000000000000000000000000000FC -S31540002E9000000000000000000000000000000000EC -S31540002EA000000000000000000000000000000000DC -S31540002EB000000000000000000000000000000000CC -S31540002EC000000000000000000000000000000000BC -S31540002ED000000000000000000000000000000000AC -S31540002EE0000000000000000000000000000000009C -S31540002EF0000000000000000000000000000000008C -S31540002F00000000000000000000000000000000007B -S31540002F10000000000000000000000000000000006B -S31540002F20000000000000000000000000000000005B -S31540002F30000000000000000000000000000000004B -S31540002F40000000000000000000000000000000003B -S31540002F50000000000000000000000000000000002B -S31540002F60000000000000000000000000000000001B -S31540002F70000000000000000000000000000000000B -S31540002F8000000000000000000000000000000000FB -S31540002F9000000000000000000000000000000000EB -S31540002FA000000000000000000000000000000000DB -S31540002FB000000000000000000000000000000000CB -S31540002FC000000000000000000000000000000000BB -S31540002FD000000000000000000000000000000000AB -S31540002FE0000000000000000000000000000000009B -S31540002FF0000000000000000000000000000000008B -S31540003000000000000000000000000000000000007A -S31540003010000000000000000000000000000000006A -S31540003020000000000000000000000000000000005A -S31540003030000000000000000000000000000000004A -S31540003040000000000000000000000000000000003A -S31540003050000000000000000000000000000000002A -S31540003060000000000000000000000000000000001A -S31540003070000000000000000000000000000000000A -S3154000308000000000000000000000000000000000FA -S3154000309000000000000000000000000000000000EA -S315400030A000000000000000000000000000000000DA -S315400030B000000000000000000000000000000000CA -S315400030C000000000000000000000000000000000BA -S315400030D000000000000000000000000000000000AA -S315400030E0000000000000000000000000000000009A -S315400030F0000000000000000000000000000000008A -S315400031000000000000000000000000000000000079 -S315400031100000000000000000000000000000000069 -S315400031200000000000000000000000000000000059 -S315400031300000000000000000000000000000000049 -S315400031400000000000000000000000000000000039 -S315400031500000000000000000000000000000000029 -S315400031600000000000000000000000000000000019 -S315400031700000000000000000000000000000000009 -S3154000318000000000000000000000000000000000F9 -S3154000319000000000000000000000000000000000E9 -S315400031A000000000000000000000000000000000D9 -S315400031B000000000000000000000000000000000C9 -S315400031C000000000000000000000000000000000B9 -S315400031D000000000000000000000000000000000A9 -S315400031E00000000000000000000000000000000099 -S315400031F00000000000000000000000000000000089 -S315400032000000000000000000000000000000000078 -S315400032100000000000000000000000000000000068 -S315400032200000000000000000000000000000000058 -S315400032300000000000000000000000000000000048 -S315400032400000000000000000000000000000000038 -S315400032500000000000000000000000000000000028 -S315400032600000000000000000000000000000000018 -S315400032700000000000000000000000000000000008 -S3154000328000000000000000000000000000000000F8 -S3154000329000000000000000000000000000000000E8 -S315400032A000000000000000000000000000000000D8 -S315400032B000000000000000000000000000000000C8 -S315400032C000000000000000000000000000000000B8 -S315400032D000000000000000000000000000000000A8 -S315400032E00000000000000000000000000000000098 -S315400032F00000000000000000000000000000000088 -S315400033000000000000000000000000000000000077 -S315400033100000000000000000000000000000000067 -S315400033200000000000000000000000000000000057 -S315400033300000000000000000000000000000000047 -S315400033400000000000000000000000000000000037 -S315400033500000000000000000000000000000000027 -S315400033600000000000000000000000000000000017 -S315400033700000000000000000000000000000000007 -S3154000338000000000000000000000000000000000F7 -S3154000339000000000000000000000000000000000E7 -S315400033A000000000000000000000000000000000D7 -S315400033B000000000000000000000000000000000C7 -S315400033C000000000000000000000000000000000B7 -S315400033D000000000000000000000000000000000A7 -S315400033E00000000000000000000000000000000097 -S315400033F00000000000000000000000000000000087 -S315400034000000000000000000000000000000000076 -S315400034100000000000000000000000000000000066 -S315400034200000000000000000000000000000000056 -S315400034300000000000000000000000000000000046 -S315400034400000000000000000000000000000000036 -S315400034500000000000000000000000000000000026 -S315400034600000000000000000000000000000000016 -S315400034700000000000000000000000000000000006 -S3154000348000000000000000000000000000000000F6 -S3154000349000000000000000000000000000000000E6 -S315400034A000000000000000000000000000000000D6 -S315400034B000000000000000000000000000000000C6 -S315400034C000000000000000000000000000000000B6 -S315400034D000000000000000000000000000000000A6 -S315400034E00000000000000000000000000000000096 -S315400034F00000000000000000000000000000000086 -S315400035000000000000000000000000000000000075 -S315400035100000000000000000000000000000000065 -S315400035200000000000000000000000000000000055 -S315400035300000000000000000000000000000000045 -S315400035400000000000000000000000000000000035 -S315400035500000000000000000000000000000000025 -S315400035600000000000000000000000000000000015 -S315400035700000000000000000000000000000000005 -S3154000358000000000000000000000000000000000F5 -S3154000359000000000000000000000000000000000E5 -S315400035A000000000000000000000000000000000D5 -S315400035B000000000000000000000000000000000C5 -S315400035C000000000000000000000000000000000B5 -S315400035D000000000000000000000000000000000A5 -S315400035E00000000000000000000000000000000095 -S315400035F00000000000000000000000000000000085 -S315400036000000000000000000000000000000000074 -S315400036100000000000000000000000000000000064 -S315400036200000000000000000000000000000000054 -S315400036300000000000000000000000000000000044 -S315400036400000000000000000000000000000000034 -S315400036500000000000000000000000000000000024 -S315400036600000000000000000000000000000000014 -S315400036700000000000000000000000000000000004 -S3154000368000000000000000000000000000000000F4 -S3154000369000000000000000000000000000000000E4 -S315400036A000000000000000000000000000000000D4 -S315400036B000000000000000000000000000000000C4 -S315400036C000000000000000000000000000000000B4 -S315400036D000000000000000000000000000000000A4 -S315400036E00000000000000000000000000000000094 -S315400036F00000000000000000000000000000000084 -S315400037000000000000000000000000000000000073 -S315400037100000000000000000000000000000000063 -S315400037200000000000000000000000000000000053 -S315400037300000000000000000000000000000000043 -S315400037400000000000000000000000000000000033 -S315400037500000000000000000000000000000000023 -S315400037600000000000000000000000000000000013 -S315400037700000000000000000000000000000000003 -S3154000378000000000000000000000000000000000F3 -S3154000379000000000000000000000000000000000E3 -S315400037A000000000000000000000000000000000D3 -S315400037B000000000000000000000000000000000C3 -S315400037C000000000000000000000000000000000B3 -S315400037D000000000000000000000000000000000A3 -S315400037E00000000000000000000000000000000093 -S315400037F00000000000000000000000000000000083 -S315400038000000000000000000000000000000000072 -S315400038100000000000000000000000000000000062 -S315400038200000000000000000000000000000000052 -S315400038300000000000000000000000000000000042 -S315400038400000000000000000000000000000000032 -S315400038500000000000000000000000000000000022 -S315400038600000000000000000000000000000000012 -S315400038700000000000000000000000000000000002 -S3154000388000000000000000000000000000000000F2 -S3154000389000000000000000000000000000000000E2 -S315400038A000000000000000000000000000000000D2 -S315400038B000000000000000000000000000000000C2 -S315400038C000000000000000000000000000000000B2 -S315400038D000000000000000000000000000000000A2 -S315400038E00000000000000000000000000000000092 -S315400038F00000000000000000000000000000000082 -S315400039000000000000000000000000000000000071 -S315400039100000000000000000000000000000000061 -S315400039200000000000000000000000000000000051 -S315400039300000000000000000000000000000000041 -S315400039400000000000000000000000000000000031 -S315400039500000000000000000000000000000000021 -S315400039600000000000000000000000000000000011 -S315400039700000000000000000000000000000000001 -S3154000398000000000000000000000000000000000F1 -S3154000399000000000000000000000000000000000E1 -S315400039A000000000000000000000000000000000D1 -S315400039B000000000000000000000000000000000C1 -S315400039C000000000000000000000000000000000B1 -S315400039D000000000000000000000000000000000A1 -S315400039E00000000000000000000000000000000091 -S315400039F00000000000000000000000000000000081 -S31540003A000000000000000000000000000000000070 -S31540003A100000000000000000000000000000000060 -S31540003A200000000000000000000000000000000050 -S31540003A300000000000000000000000000000000040 -S31540003A400000000000000000000000000000000030 -S31540003A500000000000000000000000000000000020 -S31540003A600000000000000000000000000000000010 -S31540003A700000000000000000000000000000000000 -S31540003A8000000000000000000000000000000000F0 -S31540003A9000000000000000000000000000000000E0 -S31540003AA000000000000000000000000000000000D0 -S31540003AB000000000000000000000000000000000C0 -S31540003AC000000000000000000000000000000000B0 -S31540003AD000000000000000000000000000000000A0 -S31540003AE00000000000000000000000000000000090 -S31540003AF00000000000000000000000000000000080 -S31540003B00000000000000000000000000000000006F -S31540003B10000000000000000000000000000000005F -S31540003B20000000000000000000000000000000004F -S31540003B30000000000000000000000000000000003F -S31540003B40000000000000000000000000000000002F -S31540003B50000000000000000000000000000000001F -S31540003B60000000000000000000000000000000000F -S31540003B7000000000000000000000000000000000FF -S31540003B8000000000000000000000000000000000EF -S31540003B9000000000000000000000000000000000DF -S31540003BA000000000000000000000000000000000CF -S31540003BB000000000000000000000000000000000BF -S31540003BC000000000000000000000000000000000AF -S31540003BD0000000000000000000000000000000009F -S31540003BE0000000000000000000000000000000008F -S31540003BF0000000000000000000000000000000007F -S31540003C00000000000000000000000000000000006E -S31540003C10000000000000000000000000000000005E -S31540003C20000000000000000000000000000000004E -S31540003C30000000000000000000000000000000003E -S31540003C40000000000000000000000000000000002E -S31540003C50000000000000000000000000000000001E -S31540003C60000000000000000000000000000000000E -S31540003C7000000000000000000000000000000000FE -S31540003C8000000000000000000000000000000000EE -S31540003C9000000000000000000000000000000000DE -S31540003CA000000000000000000000000000000000CE -S31540003CB000000000000000000000000000000000BE -S31540003CC000000000000000000000000000000000AE -S31540003CD0000000000000000000000000000000009E -S31540003CE0000000000000000000000000000000008E -S31540003CF0000000000000000000000000000000007E -S31540003D00000000000000000000000000000000006D -S31540003D10000000000000000000000000000000005D -S31540003D20000000000000000000000000000000004D -S31540003D30000000000000000000000000000000003D -S31540003D40000000000000000000000000000000002D -S31540003D50000000000000000000000000000000001D -S31540003D60000000000000000000000000000000000D -S31540003D7000000000000000000000000000000000FD -S31540003D8000000000000000000000000000000000ED -S31540003D9000000000000000000000000000000000DD -S31540003DA000000000000000000000000000000000CD -S31540003DB000000000000000000000000000000000BD -S31540003DC000000000000000000000000000000000AD -S31540003DD0000000000000000000000000000000009D -S31540003DE0000000000000000000000000000000008D -S31540003DF0000000000000000000000000000000007D -S31540003E00000000000000000000000000000000006C -S31540003E10000000000000000000000000000000005C -S31540003E20000000000000000000000000000000004C -S31540003E30000000000000000000000000000000003C -S31540003E40000000000000000000000000000000002C -S31540003E50000000000000000000000000000000001C -S31540003E60000000000000000000000000000000000C -S31540003E7000000000000000000000000000000000FC -S31540003E8000000000000000000000000000000000EC -S31540003E9000000000000000000000000000000000DC -S31540003EA000000000000000000000000000000000CC -S31540003EB000000000000000000000000000000000BC -S31540003EC000000000000000000000000000000000AC -S31540003ED0000000000000000000000000000000009C -S31540003EE0000000000000000000000000000000008C -S31540003EF0000000000000000000000000000000007C -S31540003F00000000000000000000000000000000006B -S31540003F10000000000000000000000000000000005B -S31540003F20000000000000000000000000000000004B -S31540003F30000000000000000000000000000000003B -S31540003F40000000000000000000000000000000002B -S31540003F50000000000000000000000000000000001B -S31540003F60000000000000000000000000000000000B -S31540003F7000000000000000000000000000000000FB -S31540003F8000000000000000000000000000000000EB -S31540003F9000000000000000000000000000000000DB -S31540003FA000000000000000000000000000000000CB -S31540003FB000000000000000000000000000000000BB -S31540003FC000000000000000000000000000000000AB -S31540003FD0000000000000000000000000000000009B -S31540003FE0000000000000000000000000000000008B -S31540003FF0000000000000000000000000000000007B -S31540004000000000000000000000000000000000006A -S31540004010000000000000000000000000000000005A -S31540004020000000000000000000000000000000004A -S31540004030000000000000000000000000000000003A -S31540004040000000000000000000000000000000002A -S31540004050000000000000000000000000000000001A -S31540004060000000000000000000000000000000000A -S3154000407000000000000000000000000000000000FA -S3154000408000000000000000000000000000000000EA -S3154000409000000000000000000000000000000000DA -S315400040A000000000000000000000000000000000CA -S315400040B000000000000000000000000000000000BA -S315400040C000000000000000000000000000000000AA -S315400040D0000000000000000000000000000000009A -S315400040E0000000000000000000000000000000008A -S315400040F0000000000000000000000000000000007A -S315400041000000000000000000000000000000000069 -S315400041100000000000000000000000000000000059 -S315400041200000000000000000000000000000000049 -S315400041300000000000000000000000000000000039 -S315400041400000000000000000000000000000000029 -S315400041500000000000000000000000000000000019 -S315400041600000000000000000000000000000000009 -S3154000417000000000000000000000000000000000F9 -S3154000418000000000000000000000000000000000E9 -S3154000419000000000000000000000000000000000D9 -S315400041A000000000000000000000000000000000C9 -S315400041B000000000000000000000000000000000B9 -S315400041C000000000000000000000000000000000A9 -S315400041D00000000000000000000000000000000099 -S315400041E00000000000000000000000000000000089 -S315400041F00000000000000000000000000000000079 -S315400042000000000000000000000000000000000068 -S315400042100000000000000000000000000000000058 -S315400042200000000000000000000000000000000048 -S315400042300000000000000000000000000000000038 -S315400042400000000000000000000000000000000028 -S315400042500000000000000000000000000000000018 -S315400042600000000000000000000000000000000008 -S3154000427000000000000000000000000000000000F8 -S3154000428000000000000000000000000000000000E8 -S3154000429000000000000000000000000000000000D8 -S315400042A000000000000000000000000000000000C8 -S315400042B000000000000000000000000000000000B8 -S315400042C000000000000000000000000000000000A8 -S315400042D00000000000000000000000000000000098 -S315400042E00000000000000000000000000000000088 -S315400042F00000000000000000000000000000000078 -S315400043000000000000000000000000000000000067 -S315400043100000000000000000000000000000000057 -S315400043200000000000000000000000000000000047 -S315400043300000000000000000000000000000000037 -S315400043400000000000000000000000000000000027 -S315400043500000000000000000000000000000000017 -S315400043600000000000000000000000000000000007 -S3154000437000000000000000000000000000000000F7 -S3154000438000000000000000000000000000000000E7 -S3154000439000000000000000000000000000000000D7 -S315400043A000000000000000000000000000000000C7 -S315400043B000000000000000000000000000000000B7 -S315400043C000000000000000000000000000000000A7 -S315400043D00000000000000000000000000000000097 -S315400043E00000000000000000000000000000000087 -S315400043F00000000000000000000000000000000077 -S315400044000000000000000000000000000000000066 -S315400044100000000000000000000000000000000056 -S315400044200000000000000000000000000000000046 -S315400044300000000000000000000000000000000036 -S315400044400000000000000000000000000000000026 -S315400044500000000000000000000000000000000016 -S315400044600000000000000000000000000000000006 -S3154000447000000000000000000000000000000000F6 -S3154000448000000000000000000000000000000000E6 -S3154000449000000000000000000000000000000000D6 -S315400044A000000000000000000000000000000000C6 -S315400044B000000000000000000000000000000000B6 -S315400044C000000000000000000000000000000000A6 -S315400044D00000000000000000000000000000000096 -S315400044E00000000000000000000000000000000086 -S315400044F00000000000000000000000000000000076 -S315400045000000000000000000000000000000000065 -S315400045100000000000000000000000000000000055 -S315400045200000000000000000000000000000000045 -S315400045300000000000000000000000000000000035 -S315400045400000000000000000000000000000000025 -S315400045500000000000000000000000000000000015 -S315400045600000000000000000000000000000000005 -S3154000457000000000000000000000000000000000F5 -S3154000458000000000000000000000000000000000E5 -S3154000459000000000000000000000000000000000D5 -S315400045A000000000000000000000000000000000C5 -S315400045B000000000000000000000000000000000B5 -S315400045C000000000000000000000000000000000A5 -S315400045D00000000000000000000000000000000095 -S315400045E00000000000000000000000000000000085 -S315400045F00000000000000000000000000000000075 -S315400046000000000000000000000000000000000064 -S315400046100000000000000000000000000000000054 -S315400046200000000000000000000000000000000044 -S315400046300000000000000000000000000000000034 -S315400046400000000000000000000000000000000024 -S315400046500000000000000000000000000000000014 -S315400046600000000000000000000000000000000004 -S3154000467000000000000000000000000000000000F4 -S3154000468000000000000000000000000000000000E4 -S3154000469000000000000000000000000000000000D4 -S315400046A000000000000000000000000000000000C4 -S315400046B000000000000000000000000000000000B4 -S315400046C000000000000000000000000000000000A4 -S315400046D00000000000000000000000000000000094 -S315400046E00000000000000000000000000000000084 -S315400046F00000000000000000000000000000000074 -S315400047000000000000000000000000000000000063 -S315400047100000000000000000000000000000000053 -S315400047200000000000000000000000000000000043 -S315400047300000000000000000000000000000000033 -S315400047400000000000000000000000000000000023 -S315400047500000000000000000000000000000000013 -S315400047600000000000000000000000000000000003 -S3154000477000000000000000000000000000000000F3 -S3154000478000000000000000000000000000000000E3 -S3154000479000000000000000000000000000000000D3 -S315400047A000000000000000000000000000000000C3 -S315400047B000000000000000000000000000000000B3 -S315400047C000000000000000000000000000000000A3 -S315400047D00000000000000000000000000000000093 -S315400047E00000000000000000000000000000000083 -S315400047F00000000000000000000000000000000073 -S315400048000000000000000000000000000000000062 -S315400048100000000000000000000000000000000052 -S315400048200000000000000000000000000000000042 -S315400048300000000000000000000000000000000032 -S315400048400000000000000000000000000000000022 -S315400048500000000000000000000000000000000012 -S315400048600000000000000000000000000000000002 -S3154000487000000000000000000000000000000000F2 -S3154000488000000000000000000000000000000000E2 -S3154000489000000000000000000000000000000000D2 -S315400048A000000000000000000000000000000000C2 -S315400048B000000000000000000000000000000000B2 -S315400048C000000000000000000000000000000000A2 -S315400048D00000000000000000000000000000000092 -S315400048E00000000000000000000000000000000082 -S315400048F00000000000000000000000000000000072 -S315400049000000000000000000000000000000000061 -S315400049100000000000000000000000000000000051 -S315400049200000000000000000000000000000000041 -S315400049300000000000000000000000000000000031 -S315400049400000000000000000000000000000000021 -S315400049500000000000000000000000000000000011 -S315400049600000000000000000000000000000000001 -S3154000497000000000000000000000000000000000F1 -S3154000498000000000000000000000000000000000E1 -S3154000499000000000000000000000000000000000D1 -S315400049A000000000000000000000000000000000C1 -S315400049B000000000000000000000000000000000B1 -S315400049C000000000000000000000000000000000A1 -S315400049D00000000000000000000000000000000091 -S315400049E00000000000000000000000000000000081 -S315400049F00000000000000000000000000000000071 -S31540004A000000000000000000000000000000000060 -S31540004A100000000000000000000000000000000050 -S31540004A200000000000000000000000000000000040 -S31540004A300000000000000000000000000000000030 -S31540004A400000000000000000000000000000000020 -S31540004A500000000000000000000000000000000010 -S31540004A600000000000000000000000000000000000 -S31540004A7000000000000000000000000000000000F0 -S31540004A8000000000000000000000000000000000E0 -S31540004A9000000000000000000000000000000000D0 -S31540004AA000000000000000000000000000000000C0 -S31540004AB000000000000000000000000000000000B0 -S31540004AC000000000000000000000000000000000A0 -S31540004AD00000000000000000000000000000000090 -S31540004AE00000000000000000000000000000000080 -S31540004AF00000000000000000000000000000000070 -S31540004B00000000000000000000000000000000005F -S31540004B10000000000000000000000000000000004F -S31540004B20000000000000000000000000000000003F -S31540004B30000000000000000000000000000000002F -S31540004B40000000000000000000000000000000001F -S31540004B50000000000000000000000000000000000F -S31540004B6000000000000000000000000000000000FF -S31540004B7000000000000000000000000000000000EF -S31540004B8000000000000000000000000000000000DF -S31540004B9000000000000000000000000000000000CF -S31540004BA000000000000000000000000000000000BF -S31540004BB000000000000000000000000000000000AF -S31540004BC0000000000000000000000000000000009F -S31540004BD0000000000000000000000000000000008F -S31540004BE0000000000000000000000000000000007F -S31540004BF0000000000000000000000000000000006F -S31540004C00000000000000000000000000000000005E -S31540004C10000000000000000000000000000000004E -S31540004C20000000000000000000000000000000003E -S31540004C30000000000000000000000000000000002E -S31540004C40000000000000000000000000000000001E -S31540004C50000000000000000000000000000000000E -S31540004C6000000000000000000000000000000000FE -S31540004C7000000000000000000000000000000000EE -S31540004C8000000000000000000000000000000000DE -S31540004C9000000000000000000000000000000000CE -S31540004CA000000000000000000000000000000000BE -S31540004CB000000000000000000000000000000000AE -S31540004CC0000000000000000000000000000000009E -S31540004CD0000000000000000000000000000000008E -S31540004CE0000000000000000000000000000000007E -S31540004CF0000000000000000000000000000000006E -S31540004D00000000000000000000000000000000005D -S31540004D10000000000000000000000000000000004D -S31540004D20000000000000000000000000000000003D -S31540004D30000000000000000000000000000000002D -S31540004D40000000000000000000000000000000001D -S31540004D50000000000000000000000000000000000D -S31540004D6000000000000000000000000000000000FD -S31540004D7000000000000000000000000000000000ED -S31540004D8000000000000000000000000000000000DD -S31540004D9000000000000000000000000000000000CD -S31540004DA000000000000000000000000000000000BD -S31540004DB000000000000000000000000000000000AD -S31540004DC0000000000000000000000000000000009D -S31540004DD0000000000000000000000000000000008D -S31540004DE0000000000000000000000000000000007D -S31540004DF0000000000000000000000000000000006D -S31540004E00000000000000000000000000000000005C -S31540004E10000000000000000000000000000000004C -S31540004E20000000000000000000000000000000003C -S31540004E30000000000000000000000000000000002C -S31540004E40000000000000000000000000000000001C -S31540004E50000000000000000000000000000000000C -S31540004E6000000000000000000000000000000000FC -S31540004E7000000000000000000000000000000000EC -S31540004E8000000000000000000000000000000000DC -S31540004E9000000000000000000000000000000000CC -S31540004EA000000000000000000000000000000000BC -S31540004EB000000000000000000000000000000000AC -S31540004EC0000000000000000000000000000000009C -S31540004ED0000000000000000000000000000000008C -S31540004EE0000000000000000000000000000000007C -S31540004EF0000000000000000000000000000000006C -S31540004F00000000000000000000000000000000005B -S31540004F10000000000000000000000000000000004B -S31540004F20000000000000000000000000000000003B -S31540004F30000000000000000000000000000000002B -S31540004F40000000000000000000000000000000001B -S31540004F50000000000000000000000000000000000B -S31540004F6000000000000000000000000000000000FB -S31540004F7000000000000000000000000000000000EB -S31540004F8000000000000000000000000000000000DB -S31540004F9000000000000000000000000000000000CB -S31540004FA000000000000000000000000000000000BB -S31540004FB000000000000000000000000000000000AB -S31540004FC0000000000000000000000000000000009B -S31540004FD0000000000000000000000000000000008B -S31540004FE0000000000000000000000000000000007B -S31540004FF0000000000000000000000000000000006B -S31540005000000000000000000000000000000000005A -S31540005010000000000000000000000000000000004A -S31540005020000000000000000000000000000000003A -S31540005030000000000000000000000000000000002A -S31540005040000000000000000000000000000000001A -S31540005050000000000000000000000000000000000A -S3154000506000000000000000000000000000000000FA -S3154000507000000000000000000000000000000000EA -S3154000508000000000000000000000000000000000DA -S3154000509000000000000000000000000000000000CA -S315400050A000000000000000000000000000000000BA -S315400050B000000000000000000000000000000000AA -S315400050C0000000000000000000000000000000009A -S315400050D0000000000000000000000000000000008A -S315400050E0000000000000000000000000000000007A -S315400050F0000000000000000000000000000000006A -S315400051000000000000000000000000000000000059 -S315400051100000000000000000000000000000000049 -S315400051200000000000000000000000000000000039 -S315400051300000000000000000000000000000000029 -S315400051400000000000000000000000000000000019 -S315400051500000000000000000000000000000000009 -S3154000516000000000000000000000000000000000F9 -S3154000517000000000000000000000000000000000E9 -S3154000518000000000000000000000000000000000D9 -S3154000519000000000000000000000000000000000C9 -S315400051A000000000000000000000000000000000B9 -S315400051B000000000000000000000000000000000A9 -S315400051C00000000000000000000000000000000099 -S315400051D00000000000000000000000000000000089 -S315400051E00000000000000000000000000000000079 -S315400051F00000000000000000000000000000000069 -S315400052000000000000000000000000000000000058 -S315400052100000000000000000000000000000000048 -S315400052200000000000000000000000000000000038 -S315400052300000000000000000000000000000000028 -S315400052400000000000000000000000000000000018 -S315400052500000000000000000000000000000000008 -S3154000526000000000000000000000000000000000F8 -S3154000527000000000000000000000000000000000E8 -S3154000528000000000000000000000000000000000D8 -S3154000529000000000000000000000000000000000C8 -S315400052A000000000000000000000000000000000B8 -S315400052B000000000000000000000000000000000A8 -S315400052C00000000000000000000000000000000098 -S315400052D00000000000000000000000000000000088 -S315400052E00000000000000000000000000000000078 -S315400052F00000000000000000000000000000000068 -S315400053000000000000000000000000000000000057 -S315400053100000000000000000000000000000000047 -S315400053200000000000000000000000000000000037 -S315400053300000000000000000000000000000000027 -S315400053400000000000000000000000000000000017 -S315400053500000000000000000000000000000000007 -S3154000536000000000000000000000000000000000F7 -S3154000537000000000000000000000000000000000E7 -S3154000538000000000000000000000000000000000D7 -S3154000539000000000000000000000000000000000C7 -S315400053A000000000000000000000000000000000B7 -S315400053B000000000000000000000000000000000A7 -S315400053C00000000000000000000000000000000097 -S315400053D00000000000000000000000000000000087 -S315400053E00000000000000000000000000000000077 -S315400053F00000000000000000000000000000000067 -S315400054000000000000000000000000000000000056 -S315400054100000000000000000000000000000000046 -S315400054200000000000000000000000000000000036 -S315400054300000000000000000000000000000000026 -S315400054400000000000000000000000000000000016 -S315400054500000000000000000000000000000000006 -S3154000546000000000000000000000000000000000F6 -S3154000547000000000000000000000000000000000E6 -S3154000548000000000000000000000000000000000D6 -S3154000549000000000000000000000000000000000C6 -S315400054A000000000000000000000000000000000B6 -S315400054B000000000000000000000000000000000A6 -S315400054C00000000000000000000000000000000096 -S315400054D00000000000000000000000000000000086 -S315400054E00000000000000000000000000000000076 -S315400054F00000000000000000000000000000000066 -S315400055000000000000000000000000000000000055 -S315400055100000000000000000000000000000000045 -S315400055200000000000000000000000000000000035 -S315400055300000000000000000000000000000000025 -S315400055400000000000000000000000000000000015 -S315400055500000000000000000000000000000000005 -S3154000556000000000000000000000000000000000F5 -S3154000557000000000000000000000000000000000E5 -S3154000558000000000000000000000000000000000D5 -S3154000559000000000000000000000000000000000C5 -S315400055A000000000000000000000000000000000B5 -S315400055B000000000000000000000000000000000A5 -S315400055C00000000000000000000000000000000095 -S315400055D00000000000000000000000000000000085 -S315400055E00000000000000000000000000000000075 -S315400055F00000000000000000000000000000000065 -S315400056000000000000000000000000000000000054 -S315400056100000000000000000000000000000000044 -S315400056200000000000000000000000000000000034 -S315400056300000000000000000000000000000000024 -S315400056400000000000000000000000000000000014 -S315400056500000000000000000000000000000000004 -S3154000566000000000000000000000000000000000F4 -S3154000567000000000000000000000000000000000E4 -S3154000568000000000000000000000000000000000D4 -S3154000569000000000000000000000000000000000C4 -S315400056A000000000000000000000000000000000B4 -S315400056B000000000000000000000000000000000A4 -S315400056C00000000000000000000000000000000094 -S315400056D00000000000000000000000000000000084 -S315400056E00000000000000000000000000000000074 -S315400056F00000000000000000000000000000000064 -S315400057000000000000000000000000000000000053 -S315400057100000000000000000000000000000000043 -S315400057200000000000000000000000000000000033 -S315400057300000000000000000000000000000000023 -S315400057400000000000000000000000000000000013 -S315400057500000000000000000000000000000000003 -S3154000576000000000000000000000000000000000F3 -S3154000577000000000000000000000000000000000E3 -S3154000578000000000000000000000000000000000D3 -S3154000579000000000000000000000000000000000C3 -S315400057A000000000000000000000000000000000B3 -S315400057B000000000000000000000000000000000A3 -S315400057C00000000000000000000000000000000093 -S315400057D00000000000000000000000000000000083 -S315400057E00000000000000000000000000000000073 -S315400057F00000000000000000000000000000000063 -S315400058000000000000000000000000000000000052 -S315400058100000000000000000000000000000000042 -S315400058200000000000000000000000000000000032 -S315400058300000000000000000000000000000000022 -S315400058400000000000000000000000000000000012 -S315400058500000000000000000000000000000000002 -S3154000586000000000000000000000000000000000F2 -S3154000587000000000000000000000000000000000E2 -S3154000588000000000000000000000000000000000D2 -S3154000589000000000000000000000000000000000C2 -S315400058A000000000000000000000000000000000B2 -S315400058B000000000000000000000000000000000A2 -S315400058C00000000000000000000000000000000092 -S315400058D00000000000000000000000000000000082 -S315400058E00000000000000000000000000000000072 -S315400058F00000000000000000000000000000000062 -S315400059000000000000000000000000000000000051 -S315400059100000000000000000000000000000000041 -S315400059200000000000000000000000000000000031 -S315400059300000000000000000000000000000000021 -S315400059400000000000000000000000000000000011 -S315400059500000000000000000000000000000000001 -S3154000596000000000000000000000000000000000F1 -S3154000597000000000000000000000000000000000E1 -S3154000598000000000000000000000000000000000D1 -S3154000599000000000000000000000000000000000C1 -S315400059A000000000000000000000000000000000B1 -S315400059B000000000000000000000000000000000A1 -S315400059C00000000000000000000000000000000091 -S315400059D00000000000000000000000000000000081 -S315400059E00000000000000000000000000000000071 -S315400059F00000000000000000000000000000000061 -S31540005A000000000000000000000000000000000050 -S31540005A100000000000000000000000000000000040 -S31540005A200000000000000000000000000000000030 -S31540005A300000000000000000000000000000000020 -S31540005A400000000000000000000000000000000010 -S31540005A500000000000000000000000000000000000 -S31540005A6000000000000000000000000000000000F0 -S31540005A7000000000000000000000000000000000E0 -S31540005A8000000000000000000000000000000000D0 -S31540005A9000000000000000000000000000000000C0 -S31540005AA000000000000000000000000000000000B0 -S31540005AB000000000000000000000000000000000A0 -S31540005AC00000000000000000000000000000000090 -S31540005AD00000000000000000000000000000000080 -S31540005AE00000000000000000000000000000000070 -S31540005AF00000000000000000000000000000000060 -S31540005B00000000000000000000000000000000004F -S31540005B10000000000000000000000000000000003F -S31540005B20000000000000000000000000000000002F -S31540005B30000000000000000000000000000000001F -S31540005B40000000000000000000000000000000000F -S31540005B5000000000000000000000000000000000FF -S31540005B6000000000000000000000000000000000EF -S31540005B7000000000000000000000000000000000DF -S31540005B8000000000000000000000000000000000CF -S31540005B9000000000000000000000000000000000BF -S31540005BA000000000000000000000000000000000AF -S31540005BB0000000000000000000000000000000009F -S31540005BC0000000000000000000000000000000008F -S31540005BD0000000000000000000000000000000007F -S31540005BE0000000000000000000000000000000006F -S31540005BF0000000000000000000000000000000005F -S31540005C00000000000000000000000000000000004E -S31540005C10000000000000000000000000000000003E -S31540005C20000000000000000000000000000000002E -S31540005C30000000000000000000000000000000001E -S31540005C40000000000000000000000000000000000E -S31540005C5000000000000000000000000000000000FE -S31540005C6000000000000000000000000000000000EE -S31540005C7000000000000000000000000000000000DE -S31540005C8000000000000000000000000000000000CE -S31540005C9000000000000000000000000000000000BE -S31540005CA000000000000000000000000000000000AE -S31540005CB0000000000000000000000000000000009E -S31540005CC0000000000000000000000000000000008E -S31540005CD0000000000000000000000000000000007E -S31540005CE0000000000000000000000000000000006E -S31540005CF0000000000000000000000000000000005E -S31540005D00000000000000000000000000000000004D -S31540005D10000000000000000000000000000000003D -S31540005D20000000000000000000000000000000002D -S31540005D30000000000000000000000000000000001D -S31540005D40000000000000000000000000000000000D -S31540005D5000000000000000000000000000000000FD -S31540005D6000000000000000000000000000000000ED -S31540005D7000000000000000000000000000000000DD -S31540005D8000000000000000000000000000000000CD -S31540005D9000000000000000000000000000000000BD -S31540005DA000000000000000000000000000000000AD -S31540005DB0000000000000000000000000000000009D -S31540005DC0000000000000000000000000000000008D -S31540005DD0000000000000000000000000000000007D -S31540005DE0000000000000000000000000000000006D -S31540005DF0000000000000000000000000000000005D -S31540005E00000000000000000000000000000000004C -S31540005E10000000000000000000000000000000003C -S31540005E20000000000000000000000000000000002C -S31540005E30000000000000000000000000000000001C -S31540005E40000000000000000000000000000000000C -S31540005E5000000000000000000000000000000000FC -S31540005E6000000000000000000000000000000000EC -S31540005E7000000000000000000000000000000000DC -S31540005E8000000000000000000000000000000000CC -S31540005E9000000000000000000000000000000000BC -S31540005EA000000000000000000000000000000000AC -S31540005EB0000000000000000000000000000000009C -S31540005EC0000000000000000000000000000000008C -S31540005ED0000000000000000000000000000000007C -S31540005EE0000000000000000000000000000000006C -S31540005EF0000000000000000000000000000000005C -S31540005F00000000000000000000000000000000004B -S31540005F10000000000000000000000000000000003B -S31540005F20000000000000000000000000000000002B -S31540005F30000000000000000000000000000000001B -S31540005F40000000000000000000000000000000000B -S31540005F5000000000000000000000000000000000FB -S31540005F6000000000000000000000000000000000EB -S31540005F7000000000000000000000000000000000DB -S31540005F8000000000000000000000000000000000CB -S31540005F9000000000000000000000000000000000BB -S31540005FA000000000000000000000000000000000AB -S31540005FB0000000000000000000000000000000009B -S31540005FC0000000000000000000000000000000008B -S31540005FD0000000000000000000000000000000007B -S31540005FE0000000000000000000000000000000006B -S31540005FF0000000000000000000000000000000005B -S31540006000000000000000000000000000000000004A -S31540006010000000000000000000000000000000003A -S31540006020000000000000000000000000000000002A -S31540006030000000000000000000000000000000001A -S31540006040000000000000000000000000000000000A -S3154000605000000000000000000000000000000000FA -S3154000606000000000000000000000000000000000EA -S3154000607000000000000000000000000000000000DA -S3154000608000000000000000000000000000000000CA -S3154000609000000000000000000000000000000000BA -S315400060A000000000000000000000000000000000AA -S315400060B0000000000000000000000000000000009A -S315400060C0000000000000000000000000000000008A -S315400060D0000000000000000000000000000000007A -S315400060E0000000000000000000000000000000006A -S315400060F0000000000000000000000000000000005A -S315400061000000000000000000000000000000000049 -S315400061100000000000000000000000000000000039 -S315400061200000000000000000000000000000000029 -S315400061300000000000000000000000000000000019 -S315400061400000000000000000000000000000000009 -S3154000615000000000000000000000000000000000F9 -S3154000616000000000000000000000000000000000E9 -S3154000617000000000000000000000000000000000D9 -S3154000618000000000000000000000000000000000C9 -S3154000619000000000000000000000000000000000B9 -S315400061A000000000000000000000000000000000A9 -S315400061B00000000000000000000000000000000099 -S315400061C00000000000000000000000000000000089 -S315400061D00000000000000000000000000000000079 -S315400061E00000000000000000000000000000000069 -S315400061F00000000000000000000000000000000059 -S315400062000000000000000000000000000000000048 -S315400062100000000000000000000000000000000038 -S315400062200000000000000000000000000000000028 -S315400062300000000000000000000000000000000018 -S315400062400000000000000000000000000000000008 -S3154000625000000000000000000000000000000000F8 -S3154000626000000000000000000000000000000000E8 -S3154000627000000000000000000000000000000000D8 -S3154000628000000000000000000000000000000000C8 -S3154000629000000000000000000000000000000000B8 -S315400062A000000000000000000000000000000000A8 -S315400062B00000000000000000000000000000000098 -S315400062C00000000000000000000000000000000088 -S315400062D00000000000000000000000000000000078 -S315400062E00000000000000000000000000000000068 -S315400062F00000000000000000000000000000000058 -S315400063000000000000000000000000000000000047 -S315400063100000000000000000000000000000000037 -S315400063200000000000000000000000000000000027 -S315400063300000000000000000000000000000000017 -S315400063400000000000000000000000000000000007 -S3154000635000000000000000000000000000000000F7 -S3154000636000000000000000000000000000000000E7 -S3154000637000000000000000000000000000000000D7 -S3154000638000000000000000000000000000000000C7 -S3154000639000000000000000000000000000000000B7 -S315400063A000000000000000000000000000000000A7 -S315400063B00000000000000000000000000000000097 -S315400063C00000000000000000000000000000000087 -S315400063D00000000000000000000000000000000077 -S315400063E00000000000000000000000000000000067 -S315400063F00000000000000000000000000000000057 -S315400064000000000000000000000000000000000046 -S315400064100000000000000000000000000000000036 -S315400064200000000000000000000000000000000026 -S315400064300000000000000000000000000000000016 -S315400064400000000000000000000000000000000006 -S3154000645000000000000000000000000000000000F6 -S3154000646000000000000000000000000000000000E6 -S3154000647000000000000000000000000000000000D6 -S3154000648000000000000000000000000000000000C6 -S3154000649000000000000000000000000000000000B6 -S315400064A000000000000000000000000000000000A6 -S315400064B00000000000000000000000000000000096 -S315400064C00000000000000000000000000000000086 -S315400064D00000000000000000000000000000000076 -S315400064E00000000000000000000000000000000066 -S315400064F00000000000000000000000000000000056 -S315400065000000000000000000000000000000000045 -S315400065100000000000000000000000000000000035 -S315400065200000000000000000000000000000000025 -S315400065300000000000000000000000000000000015 -S315400065400000000000000000000000000000000005 -S3154000655000000000000000000000000000000000F5 -S3154000656000000000000000000000000000000000E5 -S3154000657000000000000000000000000000000000D5 -S3154000658000000000000000000000000000000000C5 -S3154000659000000000000000000000000000000000B5 -S315400065A000000000000000000000000000000000A5 -S315400065B00000000000000000000000000000000095 -S315400065C00000000000000000000000000000000085 -S315400065D00000000000000000000000000000000075 -S315400065E00000000000000000000000000000000065 -S315400065F00000000000000000000000000000000055 -S315400066000000000000000000000000000000000044 -S315400066100000000000000000000000000000000034 -S315400066200000000000000000000000000000000024 -S315400066300000000000000000000000000000000014 -S315400066400000000000000000000000000000000004 -S3154000665000000000000000000000000000000000F4 -S3154000666000000000000000000000000000000000E4 -S3154000667000000000000000000000000000000000D4 -S3154000668000000000000000000000000000000000C4 -S3154000669000000000000000000000000000000000B4 -S315400066A000000000000000000000000000000000A4 -S315400066B00000000000000000000000000000000094 -S315400066C00000000000000000000000000000000084 -S315400066D00000000000000000000000000000000074 -S315400066E00000000000000000000000000000000064 -S315400066F00000000000000000000000000000000054 -S315400067000000000000000000000000000000000043 -S315400067100000000000000000000000000000000033 -S315400067200000000000000000000000000000000023 -S315400067300000000000000000000000000000000013 -S315400067400000000000000000000000000000000003 -S3154000675000000000000000000000000000000000F3 -S3154000676000000000000000000000000000000000E3 -S3154000677000000000000000000000000000000000D3 -S3154000678000000000000000000000000000000000C3 -S3154000679000000000000000000000000000000000B3 -S315400067A000000000000000000000000000000000A3 -S315400067B00000000000000000000000000000000093 -S315400067C00000000000000000000000000000000083 -S315400067D00000000000000000000000000000000073 -S315400067E00000000000000000000000000000000063 -S315400067F00000000000000000000000000000000053 -S315400068000000000000000000000000000000000042 -S315400068100000000000000000000000000000000032 -S315400068200000000000000000000000000000000022 -S315400068300000000000000000000000000000000012 -S315400068400000000000000000000000000000000002 -S3154000685000000000000000000000000000000000F2 -S3154000686000000000000000000000000000000000E2 -S3154000687000000000000000000000000000000000D2 -S3154000688000000000000000000000000000000000C2 -S3154000689000000000000000000000000000000000B2 -S315400068A000000000000000000000000000000000A2 -S315400068B00000000000000000000000000000000092 -S315400068C00000000000000000000000000000000082 -S315400068D00000000000000000000000000000000072 -S315400068E00000000000000000000000000000000062 -S315400068F00000000000000000000000000000000052 -S315400069000000000000000000000000000000000041 -S315400069100000000000000000000000000000000031 -S315400069200000000000000000000000000000000021 -S315400069300000000000000000000000000000000011 -S315400069400000000000000000000000000000000001 -S3154000695000000000000000000000000000000000F1 -S3154000696000000000000000000000000000000000E1 -S3154000697000000000000000000000000000000000D1 -S3154000698000000000000000000000000000000000C1 -S3154000699000000000000000000000000000000000B1 -S315400069A000000000000000000000000000000000A1 -S315400069B00000000000000000000000000000000091 -S315400069C00000000000000000000000000000000081 -S315400069D00000000000000000000000000000000071 -S315400069E00000000000000000000000000000000061 -S315400069F00000000000000000000000000000000051 -S31540006A000000000000000000000000000000000040 -S31540006A100000000000000000000000000000000030 -S31540006A200000000000000000000000000000000020 -S31540006A300000000000000000000000000000000010 -S31540006A400000000000000000000000000000000000 -S31540006A5000000000000000000000000000000000F0 -S31540006A6000000000000000000000000000000000E0 -S31540006A7000000000000000000000000000000000D0 -S31540006A8000000000000000000000000000000000C0 -S31540006A9000000000000000000000000000000000B0 -S31540006AA000000000000000000000000000000000A0 -S31540006AB00000000000000000000000000000000090 -S31540006AC00000000000000000000000000000000080 -S31540006AD00000000000000000000000000000000070 -S31540006AE00000000000000000000000000000000060 -S31540006AF00000000000000000000000000000000050 -S31540006B00000000000000000000000000000000003F -S31540006B10000000000000000000000000000000002F -S31540006B20000000000000000000000000000000001F -S31540006B30000000000000000000000000000000000F -S31540006B4000000000000000000000000000000000FF -S31540006B5000000000000000000000000000000000EF -S31540006B6000000000000000000000000000000000DF -S31540006B7000000000000000000000000000000000CF -S31540006B8000000000000000000000000000000000BF -S31540006B9000000000000000000000000000000000AF -S31540006BA0000000000000000000000000000000009F -S31540006BB0000000000000000000000000000000008F -S31540006BC0000000000000000000000000000000007F -S31540006BD0000000000000000000000000000000006F -S31540006BE0000000000000000000000000000000005F -S31540006BF0000000000000000000000000000000004F -S31540006C00000000000000000000000000000000003E -S31540006C10000000000000000000000000000000002E -S31540006C20000000000000000000000000000000001E -S31540006C30000000000000000000000000000000000E -S31540006C4000000000000000000000000000000000FE -S31540006C5000000000000000000000000000000000EE -S31540006C6000000000000000000000000000000000DE -S31540006C7000000000000000000000000000000000CE -S31540006C8000000000000000000000000000000000BE -S31540006C9000000000000000000000000000000000AE -S31540006CA0000000000000000000000000000000009E -S31540006CB0000000000000000000000000000000008E -S31540006CC0000000000000000000000000000000007E -S31540006CD0000000000000000000000000000000006E -S31540006CE0000000000000000000000000000000005E -S31540006CF0000000000000000000000000000000004E -S31540006D00000000000000000000000000000000003D -S31540006D10000000000000000000000000000000002D -S31540006D20000000000000000000000000000000001D -S31540006D30000000000000000000000000000000000D -S31540006D4000000000000000000000000000000000FD -S31540006D5000000000000000000000000000000000ED -S31540006D6000000000000000000000000000000000DD -S31540006D7000000000000000000000000000000000CD -S31540006D8000000000000000000000000000000000BD -S31540006D9000000000000000000000000000000000AD -S31540006DA0000000000000000000000000000000009D -S31540006DB0000000000000000000000000000000008D -S31540006DC0000000000000000000000000000000007D -S31540006DD0000000000000000000000000000000006D -S31540006DE0000000000000000000000000000000005D -S31540006DF0000000000000000000000000000000004D -S31540006E00000000000000000000000000000000003C -S31540006E10000000000000000000000000000000002C -S31540006E20000000000000000000000000000000001C -S31540006E30000000000000000000000000000000000C -S31540006E4000000000000000000000000000000000FC -S31540006E5000000000000000000000000000000000EC -S31540006E6000000000000000000000000000000000DC -S31540006E7000000000000000000000000000000000CC -S31540006E8000000000000000000000000000000000BC -S31540006E9000000000000000000000000000000000AC -S31540006EA0000000000000000000000000000000009C -S31540006EB0000000000000000000000000000000008C -S31540006EC0000000000000000000000000000000007C -S31540006ED0000000000000000000000000000000006C -S31540006EE0000000000000000000000000000000005C -S31540006EF0000000000000000000000000000000004C -S31540006F00000000000000000000000000000000003B -S31540006F10000000000000000000000000000000002B -S31540006F20000000000000000000000000000000001B -S31540006F30000000000000000000000000000000000B -S31540006F4000000000000000000000000000000000FB -S31540006F5000000000000000000000000000000000EB -S31540006F6000000000000000000000000000000000DB -S31540006F7000000000000000000000000000000000CB -S31540006F8000000000000000000000000000000000BB -S31540006F9000000000000000000000000000000000AB -S31540006FA0000000000000000000000000000000009B -S31540006FB0000000000000000000000000000000008B -S31540006FC0000000000000000000000000000000007B -S31540006FD0000000000000000000000000000000006B -S31540006FE0000000000000000000000000000000005B -S31540006FF0000000000000000000000000000000004B -S31540007000000000000000000000000000000000003A -S31540007010000000000000000000000000000000002A -S31540007020000000000000000000000000000000001A -S31540007030000000000000000000000000000000000A -S3154000704000000000000000000000000000000000FA -S3154000705000000000000000000000000000000000EA -S3154000706000000000000000000000000000000000DA -S3154000707000000000000000000000000000000000CA -S3154000708000000000000000000000000000000000BA -S3154000709000000000000000000000000000000000AA -S315400070A0000000000000000000000000000000009A -S315400070B0000000000000000000000000000000008A -S315400070C0000000000000000000000000000000007A -S315400070D0000000000000000000000000000000006A -S315400070E0000000000000000000000000000000005A -S315400070F0000000000000000000000000000000004A -S315400071000000000000000000000000000000000039 -S315400071100000000000000000000000000000000029 -S315400071200000000000000000000000000000000019 -S315400071300000000000000000000000000000000009 -S3154000714000000000000000000000000000000000F9 -S3154000715000000000000000000000000000000000E9 -S3154000716000000000000000000000000000000000D9 -S3154000717000000000000000000000000000000000C9 -S3154000718000000000000000000000000000000000B9 -S3154000719000000000000000000000000000000000A9 -S315400071A00000000000000000000000000000000099 -S315400071B00000000000000000000000000000000089 -S315400071C00000000000000000000000000000000079 -S315400071D00000000000000000000000000000000069 -S315400071E00000000000000000000000000000000059 -S315400071F00000000000000000000000000000000049 -S315400072000000000000000000000000000000000038 -S315400072100000000000000000000000000000000028 -S315400072200000000000000000000000000000000018 -S315400072300000000000000000000000000000000008 -S3154000724000000000000000000000000000000000F8 -S3154000725000000000000000000000000000000000E8 -S3154000726000000000000000000000000000000000D8 -S3154000727000000000000000000000000000000000C8 -S3154000728000000000000000000000000000000000B8 -S3154000729000000000000000000000000000000000A8 -S315400072A00000000000000000000000000000000098 -S315400072B00000000000000000000000000000000088 -S315400072C00000000000000000000000000000000078 -S315400072D00000000000000000000000000000000068 -S315400072E00000000000000000000000000000000058 -S315400072F00000000000000000000000000000000048 -S315400073000000000000000000000000000000000037 -S315400073100000000000000000000000000000000027 -S315400073200000000000000000000000000000000017 -S315400073300000000000000000000000000000000007 -S3154000734000000000000000000000000000000000F7 -S3154000735000000000000000000000000000000000E7 -S3154000736000000000000000000000000000000000D7 -S3154000737000000000000000000000000000000000C7 -S3154000738000000000000000000000000000000000B7 -S3154000739000000000000000000000000000000000A7 -S315400073A00000000000000000000000000000000097 -S315400073B00000000000000000000000000000000087 -S315400073C00000000000000000000000000000000077 -S315400073D00000000000000000000000000000000067 -S315400073E00000000000000000000000000000000057 -S315400073F00000000000000000000000000000000047 -S315400074000000000000000000000000000000000036 -S315400074100000000000000000000000000000000026 -S315400074200000000000000000000000000000000016 -S315400074300000000000000000000000000000000006 -S3154000744000000000000000000000000000000000F6 -S3154000745000000000000000000000000000000000E6 -S3154000746000000000000000000000000000000000D6 -S3154000747000000000000000000000000000000000C6 -S3154000748000000000000000000000000000000000B6 -S3154000749000000000000000000000000000000000A6 -S315400074A00000000000000000000000000000000096 -S315400074B00000000000000000000000000000000086 -S315400074C00000000000000000000000000000000076 -S315400074D00000000000000000000000000000000066 -S315400074E00000000000000000000000000000000056 -S315400074F00000000000000000000000000000000046 -S315400075000000000000000000000000000000000035 -S315400075100000000000000000000000000000000025 -S315400075200000000000000000000000000000000015 -S315400075300000000000000000000000000000000005 -S3154000754000000000000000000000000000000000F5 -S3154000755000000000000000000000000000000000E5 -S3154000756000000000000000000000000000000000D5 -S3154000757000000000000000000000000000000000C5 -S3154000758000000000000000000000000000000000B5 -S3154000759000000000000000000000000000000000A5 -S315400075A00000000000000000000000000000000095 -S315400075B00000000000000000000000000000000085 -S315400075C00000000000000000000000000000000075 -S315400075D00000000000000000000000000000000065 -S315400075E00000000000000000000000000000000055 -S315400075F00000000000000000000000000000000045 -S315400076000000000000000000000000000000000034 -S315400076100000000000000000000000000000000024 -S315400076200000000000000000000000000000000014 -S315400076300000000000000000000000000000000004 -S3154000764000000000000000000000000000000000F4 -S3154000765000000000000000000000000000000000E4 -S3154000766000000000000000000000000000000000D4 -S3154000767000000000000000000000000000000000C4 -S3154000768000000000000000000000000000000000B4 -S3154000769000000000000000000000000000000000A4 -S315400076A00000000000000000000000000000000094 -S315400076B00000000000000000000000000000000084 -S315400076C00000000000000000000000000000000074 -S315400076D00000000000000000000000000000000064 -S315400076E00000000000000000000000000000000054 -S315400076F00000000000000000000000000000000044 -S315400077000000000000000000000000000000000033 -S315400077100000000000000000000000000000000023 -S315400077200000000000000000000000000000000013 -S315400077300000000000000000000000000000000003 -S3154000774000000000000000000000000000000000F3 -S3154000775000000000000000000000000000000000E3 -S3154000776000000000000000000000000000000000D3 -S3154000777000000000000000000000000000000000C3 -S3154000778000000000000000000000000000000000B3 -S3154000779000000000000000000000000000000000A3 -S315400077A00000000000000000000000000000000093 -S315400077B00000000000000000000000000000000083 -S315400077C00000000000000000000000000000000073 -S315400077D00000000000000000000000000000000063 -S315400077E00000000000000000000000000000000053 -S315400077F00000000000000000000000000000000043 -S315400078000000000000000000000000000000000032 -S315400078100000000000000000000000000000000022 -S315400078200000000000000000000000000000000012 -S315400078300000000000000000000000000000000002 -S3154000784000000000000000000000000000000000F2 -S3154000785000000000000000000000000000000000E2 -S3154000786000000000000000000000000000000000D2 -S3154000787000000000000000000000000000000000C2 -S3154000788000000000000000000000000000000000B2 -S3154000789000000000000000000000000000000000A2 -S315400078A00000000000000000000000000000000092 -S315400078B00000000000000000000000000000000082 -S315400078C00000000000000000000000000000000072 -S315400078D00000000000000000000000000000000062 -S315400078E00000000000000000000000000000000052 -S315400078F00000000000000000000000000000000042 -S315400079000000000000000000000000000000000031 -S315400079100000000000000000000000000000000021 -S315400079200000000000000000000000000000000011 -S315400079300000000000000000000000000000000001 -S3154000794000000000000000000000000000000000F1 -S3154000795000000000000000000000000000000000E1 -S3154000796000000000000000000000000000000000D1 -S3154000797000000000000000000000000000000000C1 -S3154000798000000000000000000000000000000000B1 -S3154000799000000000000000000000000000000000A1 -S315400079A00000000000000000000000000000000091 -S315400079B00000000000000000000000000000000081 -S315400079C00000000000000000000000000000000071 -S315400079D00000000000000000000000000000000061 -S315400079E00000000000000000000000000000000051 -S315400079F00000000000000000000000000000000041 -S31540007A000000000000000000000000000000000030 -S31540007A100000000000000000000000000000000020 -S31540007A200000000000000000000000000000000010 -S31540007A300000000000000000000000000000000000 -S31540007A4000000000000000000000000000000000F0 -S31540007A5000000000000000000000000000000000E0 -S31540007A6000000000000000000000000000000000D0 -S31540007A7000000000000000000000000000000000C0 -S31540007A8000000000000000000000000000000000B0 -S31540007A9000000000000000000000000000000000A0 -S31540007AA00000000000000000000000000000000090 -S31540007AB00000000000000000000000000000000080 -S31540007AC00000000000000000000000000000000070 -S31540007AD00000000000000000000000000000000060 -S31540007AE00000000000000000000000000000000050 -S31540007AF00000000000000000000000000000000040 -S31540007B00000000000000000000000000000000002F -S31540007B10000000000000000000000000000000001F -S31540007B20000000000000000000000000000000000F -S31540007B3000000000000000000000000000000000FF -S31540007B4000000000000000000000000000000000EF -S31540007B5000000000000000000000000000000000DF -S31540007B6000000000000000000000000000000000CF -S31540007B7000000000000000000000000000000000BF -S31540007B8000000000000000000000000000000000AF -S31540007B90000000000000000000000000000000009F -S31540007BA0000000000000000000000000000000008F -S31540007BB0000000000000000000000000000000007F -S31540007BC0000000000000000000000000000000006F -S31540007BD0000000000000000000000000000000005F -S31540007BE0000000000000000000000000000000004F -S31540007BF0000000000000000000000000000000003F -S31540007C00000000000000000000000000000000002E -S31540007C10000000000000000000000000000000001E -S31540007C20000000000000000000000000000000000E -S31540007C3000000000000000000000000000000000FE -S31540007C4000000000000000000000000000000000EE -S31540007C5000000000000000000000000000000000DE -S31540007C6000000000000000000000000000000000CE -S31540007C7000000000000000000000000000000000BE -S31540007C8000000000000000000000000000000000AE -S31540007C90000000000000000000000000000000009E -S31540007CA0000000000000000000000000000000008E -S31540007CB0000000000000000000000000000000007E -S31540007CC0000000000000000000000000000000006E -S31540007CD0000000000000000000000000000000005E -S31540007CE0000000000000000000000000000000004E -S31540007CF0000000000000000000000000000000003E -S31540007D00000000000000000000000000000000002D -S31540007D10000000000000000000000000000000001D -S31540007D20000000000000000000000000000000000D -S31540007D3000000000000000000000000000000000FD -S31540007D4000000000000000000000000000000000ED -S31540007D5000000000000000000000000000000000DD -S31540007D6000000000000000000000000000000000CD -S31540007D7000000000000000000000000000000000BD -S31540007D8000000000000000000000000000000000AD -S31540007D90000000000000000000000000000000009D -S31540007DA0000000000000000000000000000000008D -S31540007DB0000000000000000000000000000000007D -S31540007DC0000000000000000000000000000000006D -S31540007DD0000000000000000000000000000000005D -S31540007DE0000000000000000000000000000000004D -S31540007DF0000000000000000000000000000000003D -S31540007E00000000000000000000000000000000002C -S31540007E10000000000000000000000000000000001C -S31540007E20000000000000000000000000000000000C -S31540007E3000000000000000000000000000000000FC -S31540007E4000000000000000000000000000000000EC -S31540007E5000000000000000000000000000000000DC -S31540007E6000000000000000000000000000000000CC -S31540007E7000000000000000000000000000000000BC -S31540007E8000000000000000000000000000000000AC -S31540007E90000000000000000000000000000000009C -S31540007EA0000000000000000000000000000000008C -S31540007EB0000000000000000000000000000000007C -S31540007EC0000000000000000000000000000000006C -S31540007ED0000000000000000000000000000000005C -S31540007EE0000000000000000000000000000000004C -S31540007EF0000000000000000000000000000000003C -S31540007F00000000000000000000000000000000002B -S31540007F10000000000000000000000000000000001B -S31540007F20000000000000000000000000000000000B -S31540007F3000000000000000000000000000000000FB -S31540007F4000000000000000000000000000000000EB -S31540007F5000000000000000000000000000000000DB -S31540007F6000000000000000000000000000000000CB -S31540007F7000000000000000000000000000000000BB -S31540007F8000000000000000000000000000000000AB -S31540007F90000000000000000000000000000000009B -S31540007FA0000000000000000000000000000000008B -S31540007FB0000000000000000000000000000000007B -S31540007FC0000000000000000000000000000000006B -S31540007FD0000000000000000000000000000000005B -S31540007FE0000000000000000000000000000000004B -S31540007FF0000000000000000000000000000000003B -S315400080009DE3BF9081C7E00881E8000003000010AF -S31540008010C48000408088800112BFFFFE010000003E -S315400080209DE3BF909DE3BF909DE3BF909DE3BF90CE -S315400080309DE3BF909DE3BF9021044444A0142111C9 -S3154000804023088888A2146222250CCCCCA414A3331E -S3154000805027111111A614E04429155555A815215587 -S315400080602B199999AA1562662D1DDDDDAC15A377EE -S315400080702F222222AE15E08801100000E03FBFE02B -S31540008080E43FBFE8E83FBFF0EC3FBFF88210001E78 -S315400080908220601CC0A041E082206008C0A041E070 -S315400080A082206008C0A041E082206008C0A041E074 -S315400080B0C0A002209DE3BF909DE3BF9081E80000F1 -S315400080C081E800000100000001000000E01FBFE061 -S315400080D0E41FBFE8E81FBFF0EC1FBFF80100000037 -S315400080E00100000081E8000081E8000081E800000E -S315400080F081E8000081E8000081C7E00881E80000CF -S31540008100A7500000AA102400A8102300EC854320A5 -S31540008110EA8503202F100020AE15E150EE05C00081 -S31540008120E805C000EA05E004EC05E008AC15A0004F -S31540008130C0A58300EA250000AE05E00C2B10002008 -S31540008140AA156150EE25400081C4400081CC8000D4 -S3154000815000000000010000000000000000000000D8 -S3154000816000000000000000000000000000000000C9 -S3154000817000000000000000000000000000000000B9 -S3154000818000000000000000000000000000000000A9 -S315400081900000000001000000010000000100000096 -S315400081A00100000001000000010000000100000085 -S315400081B00100000001000000010000000100000075 -S315400081C00100000001000000010000000100000065 -S315400081D00100000001000000010000000100000055 -S315400081E00100000001000000010000000100000045 -S315400081F00100000001000000010000000100000035 -S315400082000100000001000000010000000100000024 -S315400082100100000001000000010000000100000014 -S315400082200100000001000000010000000100000004 -S3154000823001000000010000000100000001000000F4 -S3154000824001000000010000000100000001000000E4 -S3154000825001000000010000000100000001000000D4 -S3154000826001000000010000000100000001000000C4 -S3154000827001000000010000000100000001000000B4 -S3154000828001000000010000000100000001000000A4 -S315400082900100000001000000010000000100000094 -S315400082A00100000001000000010000000100000084 -S315400082B00100000001000000010000000100000074 -S315400082C00100000001000000010000000100000064 -S315400082D00100000001000000010000000100000054 -S315400082E00100000001000000010000000100000044 -S315400082F00100000001000000010000000100000034 -S315400083000100000001000000010000000100000023 -S315400083100100000001000000010000000100000013 -S315400083200100000001000000010000000100000003 -S3154000833001000000010000000100000001000000F3 -S3154000834001000000010000000100000001000000E3 -S3154000835001000000010000000100000001000000D3 -S3154000836001000000010000000100000001000000C3 -S3154000837001000000010000000100000001000000B3 -S3154000838001000000010000000100000001000000A3 -S315400083900100000001000000010000000100000093 -S315400083A00100000001000000010000000100000083 -S315400083B00100000001000000010000000100000073 -S315400083C00100000001000000010000000100000063 -S315400083D00100000001000000010000000100000053 -S315400083E00100000001000000010000000100000043 -S315400083F00100000001000000010000000100000033 -S315400084000100000001000000010000000100000022 -S315400084100100000001000000010000000100000012 -S315400084200100000001000000010000000100000002 -S3154000843001000000010000000100000001000000F2 -S3154000844001000000010000000100000001000000E2 -S3154000845001000000010000000100000001000000D2 -S3154000846001000000010000000100000001000000C2 -S3154000847001000000010000000100000001000000B2 -S3154000848001000000010000000100000001000000A2 -S315400084900100000001000000010000000100000092 -S315400084A00100000001000000010000000100000082 -S315400084B00100000001000000010000000100000072 -S315400084C00100000001000000010000000100000062 -S315400084D00100000001000000010000000100000052 -S315400084E00100000001000000010000000100000042 -S315400084F00100000001000000010000000100000032 -S315400085000100000001000000010000000100000021 -S315400085100100000001000000010000000100000011 -S315400085200100000001000000010000000100000001 -S3154000853001000000010000000100000001000000F1 -S3154000854001000000010000000100000001000000E1 -S3154000855001000000010000000100000001000000D1 -S3154000856001000000010000000100000001000000C1 -S3154000857001000000010000000100000001000000B1 -S3154000858001000000010000000100000001000000A1 -S315400085900100000001000000010000000100000091 -S315400085A00100000001000000010000000100000081 -S315400085B00100000001000000010000000100000071 -S315400085C00100000001000000010000000100000061 -S315400085D00100000001000000010000000100000051 -S315400085E00100000001000000010000000100000041 -S315400085F00100000001000000010000000100000031 -S315400086000100000001000000010000000100000020 -S315400086100100000001000000010000000100000010 -S315400086200100000001000000010000000100000000 -S3154000863001000000010000000100000001000000F0 -S3154000864001000000010000000100000001000000E0 -S3154000865001000000010000000100000001000000D0 -S3154000866001000000010000000100000001000000C0 -S3154000867001000000010000000100000001000000B0 -S3154000868001000000010000000100000001000000A0 -S315400086900100000001000000010000000100000090 -S315400086A00100000001000000010000000100000080 -S315400086B00100000001000000010000000100000070 -S315400086C00100000001000000010000000100000060 -S315400086D00100000001000000010000000100000050 -S315400086E00100000001000000010000000100000040 -S315400086F00100000001000000010000000100000030 -S31540008700010000000100000001000000010000001F -S31540008710010000000100000001000000010000000F -S3154000872001000000010000000100000001000000FF -S3154000873001000000010000000100000001000000EF -S3154000874001000000010000000100000001000000DF -S3154000875001000000010000000100000001000000CF -S3154000876001000000010000000100000001000000BF -S3154000877001000000010000000100000001000000AF -S31540008780010000000100000001000000010000009F -S31540008790010000000100000001000000010000008F -S315400087A0010000000100000001000000010000007F -S315400087B0010000000100000001000000010000006F -S315400087C0010000000100000001000000010000005F -S315400087D0010000000100000001000000010000004F -S315400087E0010000000100000001000000010000003F -S315400087F0010000000100000001000000010000002F -S31540008800010000000100000001000000010000001E -S31540008810010000000100000001000000010000000E -S3154000882001000000010000000100000001000000FE -S3154000883001000000010000000100000001000000EE -S3154000884001000000010000000100000001000000DE -S3154000885001000000010000000100000001000000CE -S3154000886001000000010000000100000001000000BE -S3154000887001000000010000000100000001000000AE -S31540008880010000000100000001000000010000009E -S31540008890010000000100000001000000010000008E -S315400088A0010000000100000001000000010000007E -S315400088B0010000000100000001000000010000006E -S315400088C0010000000100000001000000010000005E -S315400088D0010000000100000001000000010000004E -S315400088E0010000000100000001000000010000003E -S315400088F0010000000100000001000000010000002E -S31540008900010000000100000001000000010000001D -S31540008910010000000100000001000000010000000D -S3154000892001000000010000000100000001000000FD -S3154000893001000000010000000100000001000000ED -S3154000894001000000010000000100000001000000DD -S3154000895001000000010000000100000001000000CD -S3154000896001000000010000000100000001000000BD -S3154000897001000000010000000100000001000000AD -S31540008980010000000100000001000000010000009D -S31540008990010000000100000001000000010000008D -S315400089A0010000000100000001000000010000007D -S315400089B0010000000100000001000000010000006D -S315400089C0010000000100000001000000010000005D -S315400089D0010000000100000001000000010000004D -S315400089E0010000000100000001000000010000003D -S315400089F0010000000100000001000000010000002D -S31540008A00010000000100000001000000010000001C -S31540008A10010000000100000001000000010000000C -S31540008A2001000000010000000100000001000000FC -S31540008A3001000000010000000100000001000000EC -S31540008A4001000000010000000100000001000000DC -S31540008A5001000000010000000100000001000000CC -S31540008A6001000000010000000100000001000000BC -S31540008A7001000000010000000100000001000000AC -S31540008A80010000000100000001000000010000009C -S31540008A90010000000100000001000000010000008C -S31540008AA0010000000100000001000000010000007C -S31540008AB0010000000100000001000000010000006C -S31540008AC0010000000100000001000000010000005C -S31540008AD0010000000100000001000000010000004C -S31540008AE0010000000100000001000000010000003C -S31540008AF0010000000100000001000000010000002C -S31540008B00010000000100000001000000010000001B -S31540008B10010000000100000001000000010000000B -S31540008B2001000000010000000100000001000000FB -S31540008B3001000000010000000100000001000000EB -S31540008B4001000000010000000100000001000000DB -S31540008B5001000000010000000100000001000000CB -S31540008B6001000000010000000100000001000000BB -S31540008B7001000000010000000100000001000000AB -S31540008B80010000000100000001000000010000009B -S31540008B90010000000100000001000000010000008B -S31540008BA0010000000100000001000000010000007B -S31540008BB0010000000100000001000000010000006B -S31540008BC0010000000100000001000000010000005B -S31540008BD0010000000100000001000000010000004B -S31540008BE0010000000100000001000000010000003B -S31540008BF0010000000100000001000000010000002B -S31540008C00010000000100000001000000010000001A -S31540008C10010000000100000001000000010000000A -S31540008C2001000000010000000100000001000000FA -S31540008C3001000000010000000100000001000000EA -S31540008C4001000000010000000100000001000000DA -S31540008C5001000000010000000100000001000000CA -S31540008C6001000000010000000100000001000000BA -S31540008C7001000000010000000100000001000000AA -S31540008C80010000000100000001000000010000009A -S31540008C90010000000100000001000000010000008A -S31540008CA0010000000100000001000000010000007A -S31540008CB0010000000100000001000000010000006A -S31540008CC0010000000100000001000000010000005A -S31540008CD0010000000100000001000000010000004A -S31540008CE0010000000100000001000000010000003A -S31540008CF0010000000100000001000000010000002A -S31540008D000100000001000000010000000100000019 -S31540008D100100000001000000010000000100000009 -S31540008D2001000000010000000100000001000000F9 -S31540008D3001000000010000000100000001000000E9 -S31540008D4001000000010000000100000001000000D9 -S31540008D5001000000010000000100000001000000C9 -S31540008D6001000000010000000100000001000000B9 -S31540008D7001000000010000000100000001000000A9 -S31540008D800100000001000000010000000100000099 -S31540008D900100000001000000010000000100000089 -S31540008DA00100000001000000010000000100000079 -S31540008DB00100000001000000010000000100000069 -S31540008DC00100000001000000010000000100000059 -S31540008DD00100000001000000010000000100000049 -S31540008DE00100000001000000010000000100000039 -S31540008DF00100000001000000010000000100000029 -S31540008E000100000001000000010000000100000018 -S31540008E100100000001000000010000000100000008 -S31540008E2001000000010000000100000001000000F8 -S31540008E3001000000010000000100000001000000E8 -S31540008E4001000000010000000100000001000000D8 -S31540008E5001000000010000000100000001000000C8 -S31540008E6001000000010000000100000001000000B8 -S31540008E7001000000010000000100000001000000A8 -S31540008E800100000001000000010000000100000098 -S31540008E900100000001000000010000000100000088 -S31540008EA00100000001000000010000000100000078 -S31540008EB00100000001000000010000000100000068 -S31540008EC00100000001000000010000000100000058 -S31540008ED00100000001000000010000000100000048 -S31540008EE00100000001000000010000000100000038 -S31540008EF00100000001000000010000000100000028 -S31540008F000100000001000000010000000100000017 -S31540008F100100000001000000010000000100000007 -S31540008F2001000000010000000100000001000000F7 -S31540008F3001000000010000000100000001000000E7 -S31540008F4001000000010000000100000001000000D7 -S31540008F5001000000010000000100000001000000C7 -S31540008F6001000000010000000100000001000000B7 -S31540008F7001000000010000000100000001000000A7 -S31540008F800100000001000000010000000100000097 -S31540008F900100000001000000010000000100000087 -S31540008FA00100000001000000010000000100000077 -S31540008FB00100000001000000010000000100000067 -S31540008FC00100000001000000010000000100000057 -S31540008FD00100000001000000010000000100000047 -S31540008FE00100000001000000010000000100000037 -S31540008FF00100000001000000010000000100000027 -S315400090000100000001000000010000000100000016 -S315400090100100000001000000010000000100000006 -S3154000902001000000010000000100000001000000F6 -S3154000903001000000010000000100000001000000E6 -S3154000904001000000010000000100000001000000D6 -S3154000905001000000010000000100000001000000C6 -S3154000906001000000010000000100000001000000B6 -S3154000907001000000010000000100000001000000A6 -S315400090800100000001000000010000000100000096 -S315400090900100000001000000010000000100000086 -S315400090A00100000001000000010000000100000076 -S315400090B00100000001000000010000000100000066 -S315400090C00100000001000000010000000100000056 -S315400090D00100000001000000010000000100000046 -S315400090E00100000001000000010000000100000036 -S315400090F00100000001000000010000000100000026 -S315400091000100000001000000010000000100000015 -S315400091100100000001000000010000000100000005 -S3154000912001000000010000000100000001000000F5 -S3154000913001000000010000000100000001000000E5 -S3154000914001000000010000000100000001000000D5 -S3154000915001000000010000000100000001000000C5 -S3154000916001000000010000000100000001000000B5 -S3154000917001000000010000000100000001000000A5 -S315400091800100000001000000010000000100000095 -S315400091900100000001000000010000000100000085 -S315400091A00100000001000000010000000100000075 -S315400091B00100000001000000010000000100000065 -S315400091C00100000001000000010000000100000055 -S315400091D00100000001000000010000000100000045 -S315400091E00100000001000000010000000100000035 -S315400091F00100000001000000010000000100000025 -S315400092000100000001000000010000000100000014 -S315400092100100000001000000010000000100000004 -S3154000922001000000010000000100000001000000F4 -S3154000923001000000010000000100000001000000E4 -S3154000924001000000010000000100000001000000D4 -S3154000925001000000010000000100000001000000C4 -S3154000926001000000010000000100000001000000B4 -S3154000927001000000010000000100000001000000A4 -S315400092800100000001000000010000000100000094 -S315400092900100000001000000010000000100000084 -S315400092A00100000001000000010000000100000074 -S315400092B00100000001000000010000000100000064 -S315400092C00100000001000000010000000100000054 -S315400092D00100000001000000010000000100000044 -S315400092E00100000001000000010000000100000034 -S315400092F00100000001000000010000000100000024 -S315400093000100000001000000010000000100000013 -S315400093100100000001000000010000000100000003 -S3154000932001000000010000000100000001000000F3 -S3154000933001000000010000000100000001000000E3 -S3154000934001000000010000000100000001000000D3 -S3154000935001000000010000000100000001000000C3 -S3154000936001000000010000000100000001000000B3 -S3154000937001000000010000000100000001000000A3 -S315400093800100000001000000010000000100000093 -S315400093900100000001000000010000000100000083 -S315400093A00100000001000000010000000100000073 -S315400093B00100000001000000010000000100000063 -S315400093C00100000001000000010000000100000053 -S315400093D00100000001000000010000000100000043 -S315400093E00100000001000000010000000100000033 -S315400093F00100000001000000010000000100000023 -S315400094000100000001000000010000000100000012 -S315400094100100000001000000010000000100000002 -S3154000942001000000010000000100000001000000F2 -S3154000943001000000010000000100000001000000E2 -S3154000944001000000010000000100000001000000D2 -S3154000945001000000010000000100000001000000C2 -S3154000946001000000010000000100000001000000B2 -S3154000947001000000010000000100000001000000A2 -S315400094800100000001000000010000000100000092 -S315400094900100000001000000010000000100000082 -S315400094A00100000001000000010000000100000072 -S315400094B00100000001000000010000000100000062 -S315400094C00100000001000000010000000100000052 -S315400094D00100000001000000010000000100000042 -S315400094E00100000001000000010000000100000032 -S315400094F00100000001000000010000000100000022 -S315400095000100000001000000010000000100000011 -S315400095100100000001000000010000000100000001 -S3154000952001000000010000000100000001000000F1 -S3154000953001000000010000000100000001000000E1 -S3154000954001000000010000000100000001000000D1 -S3154000955001000000010000000100000001000000C1 -S3154000956001000000010000000100000001000000B1 -S3154000957001000000010000000100000001000000A1 -S315400095800100000001000000010000000100000091 -S315400095900100000001000000010000000100000081 -S315400095A00100000001000000010000000100000071 -S315400095B00100000001000000010000000100000061 -S315400095C00100000001000000010000000100000051 -S315400095D00100000001000000010000000100000041 -S315400095E00100000001000000010000000100000031 -S315400095F00100000001000000010000000100000021 -S315400096000100000001000000010000000100000010 -S315400096100100000001000000010000000100000000 -S3154000962001000000010000000100000001000000F0 -S3154000963001000000010000000100000001000000E0 -S3154000964001000000010000000100000001000000D0 -S3154000965001000000010000000100000001000000C0 -S3154000966001000000010000000100000001000000B0 -S3154000967001000000010000000100000001000000A0 -S315400096800100000001000000010000000100000090 -S315400096900100000001000000010000000100000080 -S315400096A00100000001000000010000000100000070 -S315400096B00100000001000000010000000100000060 -S315400096C00100000001000000010000000100000050 -S315400096D00100000001000000010000000100000040 -S315400096E00100000001000000010000000100000030 -S315400096F00100000001000000010000000100000020 -S31540009700010000000100000001000000010000000F -S3154000971001000000010000000100000001000000FF -S3154000972001000000010000000100000001000000EF -S3154000973001000000010000000100000001000000DF -S3154000974001000000010000000100000001000000CF -S3154000975001000000010000000100000001000000BF -S3154000976001000000010000000100000001000000AF -S31540009770010000000100000001000000010000009F -S31540009780010000000100000001000000010000008F -S31540009790010000000100000001000000010000007F -S315400097A0010000000100000001000000010000006F -S315400097B0010000000100000001000000010000005F -S315400097C0010000000100000001000000010000004F -S315400097D0010000000100000001000000010000003F -S315400097E0010000000100000001000000010000002F -S315400097F0010000000100000001000000010000001F -S31540009800010000000100000001000000010000000E -S3154000981001000000010000000100000001000000FE -S3154000982001000000010000000100000001000000EE -S3154000983001000000010000000100000001000000DE -S3154000984001000000010000000100000001000000CE -S3154000985001000000010000000100000001000000BE -S3154000986001000000010000000100000001000000AE -S31540009870010000000100000001000000010000009E -S31540009880010000000100000001000000010000008E -S31540009890010000000100000001000000010000007E -S315400098A0010000000100000001000000010000006E -S315400098B0010000000100000001000000010000005E -S315400098C0010000000100000001000000010000004E -S315400098D0010000000100000001000000010000003E -S315400098E0010000000100000001000000010000002E -S315400098F0010000000100000001000000010000001E -S31540009900010000000100000001000000010000000D -S3154000991001000000010000000100000001000000FD -S3154000992001000000010000000100000001000000ED -S3154000993001000000010000000100000001000000DD -S3154000994001000000010000000100000001000000CD -S3154000995001000000010000000100000001000000BD -S3154000996001000000010000000100000001000000AD -S31540009970010000000100000001000000010000009D -S31540009980010000000100000001000000010000008D -S31540009990010000000100000001000000010000007D -S315400099A0010000000100000001000000010000006D -S315400099B0010000000100000001000000010000005D -S315400099C0010000000100000001000000010000004D -S315400099D0010000000100000001000000010000003D -S315400099E0010000000100000001000000010000002D -S315400099F0010000000100000001000000010000001D -S31540009A00010000000100000001000000010000000C -S31540009A1001000000010000000100000001000000FC -S31540009A2001000000010000000100000001000000EC -S31540009A3001000000010000000100000001000000DC -S31540009A4001000000010000000100000001000000CC -S31540009A5001000000010000000100000001000000BC -S31540009A6001000000010000000100000001000000AC -S31540009A70010000000100000001000000010000009C -S31540009A80010000000100000001000000010000008C -S31540009A90010000000100000001000000010000007C -S31540009AA0010000000100000001000000010000006C -S31540009AB0010000000100000001000000010000005C -S31540009AC0010000000100000001000000010000004C -S31540009AD0010000000100000001000000010000003C -S31540009AE0010000000100000001000000010000002C -S31540009AF0010000000100000001000000010000001C -S31540009B00010000000100000001000000010000000B -S31540009B1001000000010000000100000001000000FB -S31540009B2001000000010000000100000001000000EB -S31540009B3001000000010000000100000001000000DB -S31540009B4001000000010000000100000001000000CB -S31540009B5001000000010000000100000001000000BB -S31540009B6001000000010000000100000001000000AB -S31540009B70010000000100000001000000010000009B -S31540009B80010000000100000001000000010000008B -S31540009B90010000000100000001000000010000007B -S31540009BA0010000000100000001000000010000006B -S31540009BB0010000000100000001000000010000005B -S31540009BC0010000000100000001000000010000004B -S31540009BD0010000000100000001000000010000003B -S31540009BE0010000000100000001000000010000002B -S31540009BF0010000000100000001000000010000001B -S31540009C00010000000100000001000000010000000A -S31540009C1001000000010000000100000001000000FA -S31540009C2001000000010000000100000001000000EA -S31540009C3001000000010000000100000001000000DA -S31540009C4001000000010000000100000001000000CA -S31540009C5001000000010000000100000001000000BA -S31540009C6001000000010000000100000001000000AA -S31540009C70010000000100000001000000010000009A -S31540009C80010000000100000001000000010000008A -S31540009C90010000000100000001000000010000007A -S31540009CA0010000000100000001000000010000006A -S31540009CB0010000000100000001000000010000005A -S31540009CC0010000000100000001000000010000004A -S31540009CD0010000000100000001000000010000003A -S31540009CE0010000000100000001000000010000002A -S31540009CF0010000000100000001000000010000001A -S31540009D000100000001000000010000000100000009 -S31540009D1001000000010000000100000001000000F9 -S31540009D2001000000010000000100000001000000E9 -S31540009D3001000000010000000100000001000000D9 -S31540009D4001000000010000000100000001000000C9 -S31540009D5001000000010000000100000001000000B9 -S31540009D6001000000010000000100000001000000A9 -S31540009D700100000001000000010000000100000099 -S31540009D800100000001000000010000000100000089 -S31540009D900100000001000000010000000100000079 -S31540009DA00100000001000000010000000100000069 -S31540009DB00100000001000000010000000100000059 -S31540009DC00100000001000000010000000100000049 -S31540009DD00100000001000000010000000100000039 -S31540009DE00100000001000000010000000100000029 -S31540009DF00100000001000000010000000100000019 -S31540009E000100000001000000010000000100000008 -S31540009E1001000000010000000100000001000000F8 -S31540009E2001000000010000000100000001000000E8 -S31540009E3001000000010000000100000001000000D8 -S31540009E4001000000010000000100000001000000C8 -S31540009E5001000000010000000100000001000000B8 -S31540009E6001000000010000000100000001000000A8 -S31540009E700100000001000000010000000100000098 -S31540009E800100000001000000010000000100000088 -S31540009E900100000001000000010000000100000078 -S31540009EA00100000001000000010000000100000068 -S31540009EB00100000001000000010000000100000058 -S31540009EC00100000001000000010000000100000048 -S31540009ED00100000001000000010000000100000038 -S31540009EE00100000001000000010000000100000028 -S31540009EF00100000001000000010000000100000018 -S31540009F000100000001000000010000000100000007 -S31540009F1001000000010000000100000001000000F7 -S31540009F2001000000010000000100000001000000E7 -S31540009F3001000000010000000100000001000000D7 -S31540009F4001000000010000000100000001000000C7 -S31540009F5001000000010000000100000001000000B7 -S31540009F6001000000010000000100000001000000A7 -S31540009F700100000001000000010000000100000097 -S31540009F800100000001000000010000000100000087 -S31540009F900100000001000000010000000100000077 -S31540009FA00100000001000000010000000100000067 -S31540009FB00100000001000000010000000100000057 -S31540009FC00100000001000000010000000100000047 -S31540009FD00100000001000000010000000100000037 -S31540009FE00100000001000000010000000100000027 -S31540009FF00100000001000000010000000100000017 -S3154000A0000100000001000000010000000100000006 -S3154000A01001000000010000000100000001000000F6 -S3154000A02001000000010000000100000001000000E6 -S3154000A03001000000010000000100000001000000D6 -S3154000A04001000000010000000100000001000000C6 -S3154000A05001000000010000000100000001000000B6 -S3154000A06001000000010000000100000001000000A6 -S3154000A0700100000001000000010000000100000096 -S3154000A0800100000001000000010000000100000086 -S3154000A0900100000001000000010000000100000076 -S3154000A0A00100000001000000010000000100000066 -S3154000A0B00100000001000000010000000100000056 -S3154000A0C00100000001000000010000000100000046 -S3154000A0D00100000001000000010000000100000036 -S3154000A0E00100000001000000010000000100000026 -S3154000A0F00100000001000000010000000100000016 -S3154000A1000100000001000000010000000100000005 -S3154000A11001000000010000000100000001000000F5 -S3154000A12001000000010000000100000001000000E5 -S3154000A13001000000010000000100000001000000D5 -S3154000A14001000000010000000100000001000000C5 -S3154000A15001000000010000000100000001000000B5 -S3154000A16001000000010000000100000001000000A5 -S3154000A1700100000001000000010000000100000095 -S3154000A1800100000001000000010000000100000085 -S3154000A1900100000001000000010000000100000075 -S3154000A1A00100000001000000010000000100000065 -S3154000A1B00100000001000000010000000100000055 -S3154000A1C00100000001000000010000000100000045 -S3154000A1D00100000001000000010000000100000035 -S3154000A1E00100000001000000010000000100000025 -S3154000A1F00100000001000000010000000100000015 -S3154000A2000100000001000000010000000100000004 -S3154000A21001000000010000000100000001000000F4 -S3154000A22001000000010000000100000001000000E4 -S3154000A23001000000010000000100000001000000D4 -S3154000A24001000000010000000100000001000000C4 -S3154000A25001000000010000000100000001000000B4 -S3154000A26001000000010000000100000001000000A4 -S3154000A2700100000001000000010000000100000094 -S3154000A2800100000001000000010000000100000084 -S3154000A2900100000001000000010000000100000074 -S3154000A2A00100000001000000010000000100000064 -S3154000A2B00100000001000000010000000100000054 -S3154000A2C00100000001000000010000000100000044 -S3154000A2D00100000001000000010000000100000034 -S3154000A2E00100000001000000010000000100000024 -S3154000A2F00100000001000000010000000100000014 -S3154000A3000100000001000000010000000100000003 -S3154000A31001000000010000000100000001000000F3 -S3154000A32001000000010000000100000001000000E3 -S3154000A33001000000010000000100000001000000D3 -S3154000A34001000000010000000100000001000000C3 -S3154000A35001000000010000000100000001000000B3 -S3154000A36001000000010000000100000001000000A3 -S3154000A3700100000001000000010000000100000093 -S3154000A3800100000001000000010000000100000083 -S3154000A3900100000001000000010000000100000073 -S3154000A3A00100000001000000010000000100000063 -S3154000A3B00100000001000000010000000100000053 -S3154000A3C00100000001000000010000000100000043 -S3154000A3D00100000001000000010000000100000033 -S3154000A3E00100000001000000010000000100000023 -S3154000A3F00100000001000000010000000100000013 -S3154000A4000100000001000000010000000100000002 -S3154000A41001000000010000000100000001000000F2 -S3154000A42001000000010000000100000001000000E2 -S3154000A43001000000010000000100000001000000D2 -S3154000A44001000000010000000100000001000000C2 -S3154000A45001000000010000000100000001000000B2 -S3154000A46001000000010000000100000001000000A2 -S3154000A4700100000001000000010000000100000092 -S3154000A4800100000001000000010000000100000082 -S3154000A4900100000001000000010000000100000072 -S3154000A4A00100000001000000010000000100000062 -S3154000A4B00100000001000000010000000100000052 -S3154000A4C00100000001000000010000000100000042 -S3154000A4D00100000001000000010000000100000032 -S3154000A4E00100000001000000010000000100000022 -S3154000A4F00100000001000000010000000100000012 -S3154000A5000100000001000000010000000100000001 -S3154000A51001000000010000000100000001000000F1 -S3154000A52001000000010000000100000001000000E1 -S3154000A53001000000010000000100000001000000D1 -S3154000A54001000000010000000100000001000000C1 -S3154000A55001000000010000000100000001000000B1 -S3154000A56001000000010000000100000001000000A1 -S3154000A5700100000001000000010000000100000091 -S3154000A5800100000001000000010000000100000081 -S3154000A5900100000001000000010000000100000071 -S3154000A5A00100000001000000010000000100000061 -S3154000A5B00100000001000000010000000100000051 -S3154000A5C00100000001000000010000000100000041 -S3154000A5D00100000001000000010000000100000031 -S3154000A5E00100000001000000010000000100000021 -S3154000A5F00100000001000000010000000100000011 -S3154000A6000100000001000000010000000100000000 -S3154000A61001000000010000000100000001000000F0 -S3154000A62001000000010000000100000001000000E0 -S3154000A63001000000010000000100000001000000D0 -S3154000A64001000000010000000100000001000000C0 -S3154000A65001000000010000000100000001000000B0 -S3154000A66001000000010000000100000001000000A0 -S3154000A6700100000001000000010000000100000090 -S3154000A6800100000001000000010000000100000080 -S3154000A6900100000001000000010000000100000070 -S3154000A6A00100000001000000010000000100000060 -S3154000A6B00100000001000000010000000100000050 -S3154000A6C00100000001000000010000000100000040 -S3154000A6D00100000001000000010000000100000030 -S3154000A6E00100000001000000010000000100000020 -S3154000A6F00100000001000000010000000100000010 -S3154000A70001000000010000000100000001000000FF -S3154000A71001000000010000000100000001000000EF -S3154000A72001000000010000000100000001000000DF -S3154000A73001000000010000000100000001000000CF -S3154000A74001000000010000000100000001000000BF -S3154000A75001000000010000000100000001000000AF -S3154000A760010000000100000001000000010000009F -S3154000A770010000000100000001000000010000008F -S3154000A780010000000100000001000000010000007F -S3154000A790010000000100000001000000010000006F -S3154000A7A0010000000100000001000000010000005F -S3154000A7B0010000000100000001000000010000004F -S3154000A7C0010000000100000001000000010000003F -S3154000A7D0010000000100000001000000010000002F -S3154000A7E0010000000100000001000000010000001F -S3154000A7F0010000000100000001000000010000000F -S3154000A80001000000010000000100000001000000FE -S3154000A81001000000010000000100000001000000EE -S3154000A82001000000010000000100000001000000DE -S3154000A83001000000010000000100000001000000CE -S3154000A84001000000010000000100000001000000BE -S3154000A85001000000010000000100000001000000AE -S3154000A860010000000100000001000000010000009E -S3154000A870010000000100000001000000010000008E -S3154000A880010000000100000001000000010000007E -S3154000A890010000000100000001000000010000006E -S3154000A8A0010000000100000001000000010000005E -S3154000A8B0010000000100000001000000010000004E -S3154000A8C0010000000100000001000000010000003E -S3154000A8D0010000000100000001000000010000002E -S3154000A8E0010000000100000001000000010000001E -S3154000A8F0010000000100000001000000010000000E -S3154000A90001000000010000000100000001000000FD -S3154000A91001000000010000000100000001000000ED -S3154000A92001000000010000000100000001000000DD -S3154000A93001000000010000000100000001000000CD -S3154000A94001000000010000000100000001000000BD -S3154000A95001000000010000000100000001000000AD -S3154000A960010000000100000001000000010000009D -S3154000A970010000000100000001000000010000008D -S3154000A980010000000100000001000000010000007D -S3154000A990010000000100000001000000010000006D -S3154000A9A0010000000100000001000000010000005D -S3154000A9B0010000000100000001000000010000004D -S3154000A9C0010000000100000001000000010000003D -S3154000A9D0010000000100000001000000010000002D -S3154000A9E0010000000100000001000000010000001D -S3154000A9F0010000000100000001000000010000000D -S3154000AA0001000000010000000100000001000000FC -S3154000AA1001000000010000000100000001000000EC -S3154000AA2001000000010000000100000001000000DC -S3154000AA3001000000010000000100000001000000CC -S3154000AA4001000000010000000100000001000000BC -S3154000AA5001000000010000000100000001000000AC -S3154000AA60010000000100000001000000010000009C -S3154000AA70010000000100000001000000010000008C -S3154000AA80010000000100000001000000010000007C -S3154000AA90010000000100000001000000010000006C -S3154000AAA0010000000100000001000000010000005C -S3154000AAB0010000000100000001000000010000004C -S3154000AAC0010000000100000001000000010000003C -S3154000AAD0010000000100000001000000010000002C -S3154000AAE0010000000100000001000000010000001C -S3154000AAF0010000000100000001000000010000000C -S3154000AB0001000000010000000100000001000000FB -S3154000AB1001000000010000000100000001000000EB -S3154000AB2001000000010000000100000001000000DB -S3154000AB3001000000010000000100000001000000CB -S3154000AB4001000000010000000100000001000000BB -S3154000AB5001000000010000000100000001000000AB -S3154000AB60010000000100000001000000010000009B -S3154000AB70010000000100000001000000010000008B -S3154000AB80010000000100000001000000010000007B -S3154000AB90010000000100000001000000010000006B -S3154000ABA0010000000100000001000000010000005B -S3154000ABB0010000000100000001000000010000004B -S3154000ABC0010000000100000001000000010000003B -S3154000ABD0010000000100000001000000010000002B -S3154000ABE0010000000100000001000000010000001B -S3154000ABF0010000000100000001000000010000000B -S3154000AC0001000000010000000100000001000000FA -S3154000AC1001000000010000000100000001000000EA -S3154000AC2001000000010000000100000001000000DA -S3154000AC3001000000010000000100000001000000CA -S3154000AC4001000000010000000100000001000000BA -S3154000AC5001000000010000000100000001000000AA -S3154000AC60010000000100000001000000010000009A -S3154000AC70010000000100000001000000010000008A -S3154000AC80010000000100000001000000010000007A -S3154000AC90010000000100000001000000010000006A -S3154000ACA0010000000100000001000000010000005A -S3154000ACB0010000000100000001000000010000004A -S3154000ACC0010000000100000001000000010000003A -S3154000ACD0010000000100000001000000010000002A -S3154000ACE0010000000100000001000000010000001A -S3154000ACF0010000000100000001000000010000000A -S3154000AD0001000000010000000100000001000000F9 -S3154000AD1001000000010000000100000001000000E9 -S3154000AD2001000000010000000100000001000000D9 -S3154000AD3001000000010000000100000001000000C9 -S3154000AD4001000000010000000100000001000000B9 -S3154000AD5001000000010000000100000001000000A9 -S3154000AD600100000001000000010000000100000099 -S3154000AD700100000001000000010000000100000089 -S3154000AD800100000001000000010000000100000079 -S3154000AD900100000001000000010000000100000069 -S3154000ADA00100000001000000010000000100000059 -S3154000ADB00100000001000000010000000100000049 -S3154000ADC00100000001000000010000000100000039 -S3154000ADD00100000001000000010000000100000029 -S3154000ADE00100000001000000010000000100000019 -S3154000ADF00100000001000000010000000100000009 -S3154000AE0001000000010000000100000001000000F8 -S3154000AE1001000000010000000100000001000000E8 -S3154000AE2001000000010000000100000001000000D8 -S3154000AE3001000000010000000100000001000000C8 -S3154000AE4001000000010000000100000001000000B8 -S3154000AE5001000000010000000100000001000000A8 -S3154000AE600100000001000000010000000100000098 -S3154000AE700100000001000000010000000100000088 -S3154000AE800100000001000000010000000100000078 -S3154000AE900100000001000000010000000100000068 -S3154000AEA00100000001000000010000000100000058 -S3154000AEB00100000001000000010000000100000048 -S3154000AEC00100000001000000010000000100000038 -S3154000AED00100000001000000010000000100000028 -S3154000AEE00100000001000000010000000100000018 -S3154000AEF00100000001000000010000000100000008 -S3154000AF0001000000010000000100000001000000F7 -S3154000AF1001000000010000000100000001000000E7 -S3154000AF2001000000010000000100000001000000D7 -S3154000AF3001000000010000000100000001000000C7 -S3154000AF4001000000010000000100000001000000B7 -S3154000AF5001000000010000000100000001000000A7 -S3154000AF600100000001000000010000000100000097 -S3154000AF700100000001000000010000000100000087 -S3154000AF800100000001000000010000000100000077 -S3154000AF900100000001000000010000000100000067 -S3154000AFA00100000001000000010000000100000057 -S3154000AFB00100000001000000010000000100000047 -S3154000AFC00100000001000000010000000100000037 -S3154000AFD00100000001000000010000000100000027 -S3154000AFE00100000001000000010000000100000017 -S3154000AFF00100000001000000010000000100000007 -S3154000B00001000000010000000100000001000000F6 -S3154000B01001000000010000000100000001000000E6 -S3154000B02001000000010000000100000001000000D6 -S3154000B03001000000010000000100000001000000C6 -S3154000B04001000000010000000100000001000000B6 -S3154000B05001000000010000000100000001000000A6 -S3154000B0600100000001000000010000000100000096 -S3154000B0700100000001000000010000000100000086 -S3154000B0800100000001000000010000000100000076 -S3154000B0900100000001000000010000000100000066 -S3154000B0A00100000001000000010000000100000056 -S3154000B0B00100000001000000010000000100000046 -S3154000B0C00100000001000000010000000100000036 -S3154000B0D00100000001000000010000000100000026 -S3154000B0E00100000001000000010000000100000016 -S3154000B0F00100000001000000010000000100000006 -S3154000B10001000000010000000100000001000000F5 -S3154000B11001000000010000000100000001000000E5 -S3154000B12001000000010000000100000001000000D5 -S3154000B13001000000010000000100000001000000C5 -S3154000B14001000000010000000100000001000000B5 -S3154000B15001000000010000000100000001000000A5 -S3154000B1600100000001000000010000000100000095 -S3154000B1700100000001000000010000000100000085 -S3154000B1800100000001000000010000000100000075 -S3154000B1900100000001000000010000000100000065 -S3154000B1A00100000001000000010000000100000055 -S3154000B1B00100000001000000010000000100000045 -S3154000B1C00100000001000000010000000100000035 -S3154000B1D00100000001000000010000000100000025 -S3154000B1E00100000001000000010000000100000015 -S3154000B1F00100000001000000010000000100000005 -S3154000B20001000000010000000100000001000000F4 -S3154000B21001000000010000000100000001000000E4 -S3154000B22001000000010000000100000001000000D4 -S3154000B23001000000010000000100000001000000C4 -S3154000B24001000000010000000100000001000000B4 -S3154000B25001000000010000000100000001000000A4 -S3154000B2600100000001000000010000000100000094 -S3154000B2700100000001000000010000000100000084 -S3154000B2800100000001000000010000000100000074 -S3154000B2900100000001000000010000000100000064 -S3154000B2A00100000001000000010000000100000054 -S3154000B2B00100000001000000010000000100000044 -S3154000B2C00100000001000000010000000100000034 -S3154000B2D00100000001000000010000000100000024 -S3154000B2E00100000001000000010000000100000014 -S3154000B2F00100000001000000010000000100000004 -S3154000B30001000000010000000100000001000000F3 -S3154000B31001000000010000000100000001000000E3 -S3154000B32001000000010000000100000001000000D3 -S3154000B33001000000010000000100000001000000C3 -S3154000B34001000000010000000100000001000000B3 -S3154000B35001000000010000000100000001000000A3 -S3154000B3600100000001000000010000000100000093 -S3154000B3700100000001000000010000000100000083 -S3154000B3800100000001000000010000000100000073 -S3154000B3900100000001000000010000000100000063 -S3154000B3A00100000001000000010000000100000053 -S3154000B3B00100000001000000010000000100000043 -S3154000B3C00100000001000000010000000100000033 -S3154000B3D00100000001000000010000000100000023 -S3154000B3E00100000001000000010000000100000013 -S3154000B3F00100000001000000010000000100000003 -S3154000B40001000000010000000100000001000000F2 -S3154000B41001000000010000000100000001000000E2 -S3154000B42001000000010000000100000001000000D2 -S3154000B43001000000010000000100000001000000C2 -S3154000B44001000000010000000100000001000000B2 -S3154000B45001000000010000000100000001000000A2 -S3154000B4600100000001000000010000000100000092 -S3154000B4700100000001000000010000000100000082 -S3154000B4800100000001000000010000000100000072 -S3154000B4900100000001000000010000000100000062 -S3154000B4A00100000001000000010000000100000052 -S3154000B4B00100000001000000010000000100000042 -S3154000B4C00100000001000000010000000100000032 -S3154000B4D00100000001000000010000000100000022 -S3154000B4E00100000001000000010000000100000012 -S3154000B4F00100000001000000010000000100000002 -S3154000B50001000000010000000100000001000000F1 -S3154000B51001000000010000000100000001000000E1 -S3154000B52001000000010000000100000001000000D1 -S3154000B53001000000010000000100000001000000C1 -S3154000B54001000000010000000100000001000000B1 -S3154000B55001000000010000000100000001000000A1 -S3154000B5600100000001000000010000000100000091 -S3154000B5700100000001000000010000000100000081 -S3154000B5800100000001000000010000000100000071 -S3154000B5900100000001000000010000000100000061 -S3154000B5A00100000001000000010000000100000051 -S3154000B5B00100000001000000010000000100000041 -S3154000B5C00100000001000000010000000100000031 -S3154000B5D00100000001000000010000000100000021 -S3154000B5E00100000001000000010000000100000011 -S3154000B5F00100000001000000010000000100000001 -S3154000B60001000000010000000100000001000000F0 -S3154000B61001000000010000000100000001000000E0 -S3154000B62001000000010000000100000001000000D0 -S3154000B63001000000010000000100000001000000C0 -S3154000B64001000000010000000100000001000000B0 -S3154000B65001000000010000000100000001000000A0 -S3154000B6600100000001000000010000000100000090 -S3154000B6700100000001000000010000000100000080 -S3154000B6800100000001000000010000000100000070 -S3154000B6900100000001000000010000000100000060 -S3154000B6A00100000001000000010000000100000050 -S3154000B6B00100000001000000010000000100000040 -S3154000B6C00100000001000000010000000100000030 -S3154000B6D00100000001000000010000000100000020 -S3154000B6E00100000001000000010000000100000010 -S3154000B6F00100000001000000010000000100000000 -S3154000B70001000000010000000100000001000000EF -S3154000B71001000000010000000100000001000000DF -S3154000B72001000000010000000100000001000000CF -S3154000B73001000000010000000100000001000000BF -S3154000B74001000000010000000100000001000000AF -S3154000B750010000000100000001000000010000009F -S3154000B760010000000100000001000000010000008F -S3154000B770010000000100000001000000010000007F -S3154000B780010000000100000001000000010000006F -S3154000B790010000000100000001000000010000005F -S3154000B7A0010000000100000001000000010000004F -S3154000B7B0010000000100000001000000010000003F -S3154000B7C0010000000100000001000000010000002F -S3154000B7D0010000000100000001000000010000001F -S3154000B7E0010000000100000001000000010000000F -S3154000B7F001000000010000000100000001000000FF -S3154000B80001000000010000000100000001000000EE -S3154000B81001000000010000000100000001000000DE -S3154000B82001000000010000000100000001000000CE -S3154000B83001000000010000000100000001000000BE -S3154000B84001000000010000000100000001000000AE -S3154000B850010000000100000001000000010000009E -S3154000B860010000000100000001000000010000008E -S3154000B870010000000100000001000000010000007E -S3154000B880010000000100000001000000010000006E -S3154000B890010000000100000001000000010000005E -S3154000B8A0010000000100000001000000010000004E -S3154000B8B0010000000100000001000000010000003E -S3154000B8C0010000000100000001000000010000002E -S3154000B8D0010000000100000001000000010000001E -S3154000B8E0010000000100000001000000010000000E -S3154000B8F001000000010000000100000001000000FE -S3154000B90001000000010000000100000001000000ED -S3154000B91001000000010000000100000001000000DD -S3154000B92001000000010000000100000001000000CD -S3154000B93001000000010000000100000001000000BD -S3154000B94001000000010000000100000001000000AD -S3154000B950010000000100000001000000010000009D -S3154000B960010000000100000001000000010000008D -S3154000B970010000000100000001000000010000007D -S3154000B980010000000100000001000000010000006D -S3154000B990010000000100000001000000010000005D -S3154000B9A0010000000100000001000000010000004D -S3154000B9B0010000000100000001000000010000003D -S3154000B9C0010000000100000001000000010000002D -S3154000B9D0010000000100000001000000010000001D -S3154000B9E0010000000100000001000000010000000D -S3154000B9F001000000010000000100000001000000FD -S3154000BA0001000000010000000100000001000000EC -S3154000BA1001000000010000000100000001000000DC -S3154000BA2001000000010000000100000001000000CC -S3154000BA3001000000010000000100000001000000BC -S3154000BA4001000000010000000100000001000000AC -S3154000BA50010000000100000001000000010000009C -S3154000BA60010000000100000001000000010000008C -S3154000BA70010000000100000001000000010000007C -S3154000BA80010000000100000001000000010000006C -S3154000BA90010000000100000001000000010000005C -S3154000BAA0010000000100000001000000010000004C -S3154000BAB0010000000100000001000000010000003C -S3154000BAC0010000000100000001000000010000002C -S3154000BAD0010000000100000001000000010000001C -S3154000BAE0010000000100000001000000010000000C -S3154000BAF001000000010000000100000001000000FC -S3154000BB0001000000010000000100000001000000EB -S3154000BB1001000000010000000100000001000000DB -S3154000BB2001000000010000000100000001000000CB -S3154000BB3001000000010000000100000001000000BB -S3154000BB4001000000010000000100000001000000AB -S3154000BB50010000000100000001000000010000009B -S3154000BB60010000000100000001000000010000008B -S3154000BB70010000000100000001000000010000007B -S3154000BB80010000000100000001000000010000006B -S3154000BB90010000000100000001000000010000005B -S3154000BBA0010000000100000001000000010000004B -S3154000BBB0010000000100000001000000010000003B -S3154000BBC0010000000100000001000000010000002B -S3154000BBD0010000000100000001000000010000001B -S3154000BBE0010000000100000001000000010000000B -S3154000BBF001000000010000000100000001000000FB -S3154000BC0001000000010000000100000001000000EA -S3154000BC1001000000010000000100000001000000DA -S3154000BC2001000000010000000100000001000000CA -S3154000BC3001000000010000000100000001000000BA -S3154000BC4001000000010000000100000001000000AA -S3154000BC50010000000100000001000000010000009A -S3154000BC60010000000100000001000000010000008A -S3154000BC70010000000100000001000000010000007A -S3154000BC80010000000100000001000000010000006A -S3154000BC90010000000100000001000000010000005A -S3154000BCA0010000000100000001000000010000004A -S3154000BCB0010000000100000001000000010000003A -S3154000BCC0010000000100000001000000010000002A -S3154000BCD0010000000100000001000000010000001A -S3154000BCE0010000000100000001000000010000000A -S3154000BCF001000000010000000100000001000000FA -S3154000BD0001000000010000000100000001000000E9 -S3154000BD1001000000010000000100000001000000D9 -S3154000BD2001000000010000000100000001000000C9 -S3154000BD3001000000010000000100000001000000B9 -S3154000BD4001000000010000000100000001000000A9 -S3154000BD500100000001000000010000000100000099 -S3154000BD600100000001000000010000000100000089 -S3154000BD700100000001000000010000000100000079 -S3154000BD800100000001000000010000000100000069 -S3154000BD900100000001000000010000000100000059 -S3154000BDA00100000001000000010000000100000049 -S3154000BDB00100000001000000010000000100000039 -S3154000BDC00100000001000000010000000100000029 -S3154000BDD00100000001000000010000000100000019 -S3154000BDE00100000001000000010000000100000009 -S3154000BDF001000000010000000100000001000000F9 -S3154000BE0001000000010000000100000001000000E8 -S3154000BE1001000000010000000100000001000000D8 -S3154000BE2001000000010000000100000001000000C8 -S3154000BE3001000000010000000100000001000000B8 -S3154000BE4001000000010000000100000001000000A8 -S3154000BE500100000001000000010000000100000098 -S3154000BE600100000001000000010000000100000088 -S3154000BE700100000001000000010000000100000078 -S3154000BE800100000001000000010000000100000068 -S3154000BE900100000001000000010000000100000058 -S3154000BEA00100000001000000010000000100000048 -S3154000BEB00100000001000000010000000100000038 -S3154000BEC00100000001000000010000000100000028 -S3154000BED00100000001000000010000000100000018 -S3154000BEE00100000001000000010000000100000008 -S3154000BEF001000000010000000100000001000000F8 -S3154000BF0001000000010000000100000001000000E7 -S3154000BF1001000000010000000100000001000000D7 -S3154000BF2001000000010000000100000001000000C7 -S3154000BF3001000000010000000100000001000000B7 -S3154000BF4001000000010000000100000001000000A7 -S3154000BF500100000001000000010000000100000097 -S3154000BF600100000001000000010000000100000087 -S3154000BF700100000001000000010000000100000077 -S3154000BF800100000001000000010000000100000067 -S3154000BF900100000001000000010000000100000057 -S3154000BFA00100000001000000010000000100000047 -S3154000BFB00100000001000000010000000100000037 -S3154000BFC00100000001000000010000000100000027 -S3154000BFD00100000001000000010000000100000017 -S3154000BFE00100000001000000010000000100000007 -S3154000BFF001000000010000000100000001000000F7 -S3154000C00001000000010000000100000001000000E6 -S3154000C01001000000010000000100000001000000D6 -S3154000C02001000000010000000100000001000000C6 -S3154000C03001000000010000000100000001000000B6 -S3154000C04001000000010000000100000001000000A6 -S3154000C0500100000001000000010000000100000096 -S3154000C0600100000001000000010000000100000086 -S3154000C0700100000001000000010000000100000076 -S3154000C0800100000001000000010000000100000066 -S3154000C0900100000001000000010000000100000056 -S3154000C0A00100000001000000010000000100000046 -S3154000C0B00100000001000000010000000100000036 -S3154000C0C00100000001000000010000000100000026 -S3154000C0D00100000001000000010000000100000016 -S3154000C0E00100000001000000010000000100000006 -S3154000C0F001000000010000000100000001000000F6 -S3154000C10001000000010000000100000001000000E5 -S3154000C11001000000010000000100000001000000D5 -S3154000C12001000000010000000100000001000000C5 -S3154000C13001000000010000000100000001000000B5 -S3154000C14001000000010000000100000001000000A5 -S3154000C1500100000001000000010000000100000095 -S3154000C1600100000001000000010000000100000085 -S3154000C1700100000001000000010000000100000075 -S3154000C1800100000001000000010000000100000065 -S3154000C1900100000001000000010000000100000055 -S3154000C1A00100000001000000010000000100000045 -S3154000C1B00100000001000000010000000100000035 -S3154000C1C00100000001000000010000000100000025 -S3154000C1D00100000001000000010000000100000015 -S3154000C1E00100000001000000010000000100000005 -S3154000C1F001000000010000000100000001000000F5 -S3154000C20001000000010000000100000001000000E4 -S3154000C21001000000010000000100000001000000D4 -S3154000C22001000000010000000100000001000000C4 -S3154000C23001000000010000000100000001000000B4 -S3154000C24001000000010000000100000001000000A4 -S3154000C2500100000001000000010000000100000094 -S3154000C2600100000001000000010000000100000084 -S3154000C2700100000001000000010000000100000074 -S3154000C2800100000001000000010000000100000064 -S3154000C2900100000001000000010000000100000054 -S3154000C2A00100000001000000010000000100000044 -S3154000C2B00100000001000000010000000100000034 -S3154000C2C00100000001000000010000000100000024 -S3154000C2D00100000001000000010000000100000014 -S3154000C2E00100000001000000010000000100000004 -S3154000C2F001000000010000000100000001000000F4 -S3154000C30001000000010000000100000001000000E3 -S3154000C31001000000010000000100000001000000D3 -S3154000C32001000000010000000100000001000000C3 -S3154000C33001000000010000000100000001000000B3 -S3154000C34001000000010000000100000001000000A3 -S3154000C3500100000001000000010000000100000093 -S3154000C3600100000001000000010000000100000083 -S3154000C3700100000001000000010000000100000073 -S3154000C3800100000001000000010000000100000063 -S3154000C3900100000001000000010000000100000053 -S3154000C3A00100000001000000010000000100000043 -S3154000C3B00100000001000000010000000100000033 -S3154000C3C00100000001000000010000000100000023 -S3154000C3D00100000001000000010000000100000013 -S3154000C3E00100000001000000010000000100000003 -S3154000C3F001000000010000000100000001000000F3 -S3154000C40001000000010000000100000001000000E2 -S3154000C41001000000010000000100000001000000D2 -S3154000C42001000000010000000100000001000000C2 -S3154000C43001000000010000000100000001000000B2 -S3154000C44001000000010000000100000001000000A2 -S3154000C4500100000001000000010000000100000092 -S3154000C4600100000001000000010000000100000082 -S3154000C4700100000001000000010000000100000072 -S3154000C4800100000001000000010000000100000062 -S3154000C4900100000001000000010000000100000052 -S3154000C4A00100000001000000010000000100000042 -S3154000C4B00100000001000000010000000100000032 -S3154000C4C00100000001000000010000000100000022 -S3154000C4D00100000001000000010000000100000012 -S3154000C4E00100000001000000010000000100000002 -S3154000C4F001000000010000000100000001000000F2 -S3154000C50001000000010000000100000001000000E1 -S3154000C51001000000010000000100000001000000D1 -S3154000C52001000000010000000100000001000000C1 -S3154000C53001000000010000000100000001000000B1 -S3154000C54001000000010000000100000001000000A1 -S3154000C5500100000001000000010000000100000091 -S3154000C5600100000001000000010000000100000081 -S3154000C5700100000001000000010000000100000071 -S3154000C5800100000001000000010000000100000061 -S3154000C5900100000001000000010000000100000051 -S3154000C5A00100000001000000010000000100000041 -S3154000C5B00100000001000000010000000100000031 -S3154000C5C00100000001000000010000000100000021 -S3154000C5D00100000001000000010000000100000011 -S3154000C5E00100000001000000010000000100000001 -S3154000C5F001000000010000000100000001000000F1 -S3154000C60001000000010000000100000001000000E0 -S3154000C61001000000010000000100000001000000D0 -S3154000C62001000000010000000100000001000000C0 -S3154000C63001000000010000000100000001000000B0 -S3154000C64001000000010000000100000001000000A0 -S3154000C6500100000001000000010000000100000090 -S3154000C6600100000001000000010000000100000080 -S3154000C6700100000001000000010000000100000070 -S3154000C6800100000001000000010000000100000060 -S3154000C6900100000001000000010000000100000050 -S3154000C6A00100000001000000010000000100000040 -S3154000C6B00100000001000000010000000100000030 -S3154000C6C00100000001000000010000000100000020 -S3154000C6D00100000001000000010000000100000010 -S3154000C6E00100000001000000010000000100000000 -S3154000C6F001000000010000000100000001000000F0 -S3154000C70001000000010000000100000001000000DF -S3154000C71001000000010000000100000001000000CF -S3154000C72001000000010000000100000001000000BF -S3154000C73001000000010000000100000001000000AF -S3154000C740010000000100000001000000010000009F -S3154000C750010000000100000001000000010000008F -S3154000C760010000000100000001000000010000007F -S3154000C770010000000100000001000000010000006F -S3154000C780010000000100000001000000010000005F -S3154000C790010000000100000001000000010000004F -S3154000C7A0010000000100000001000000010000003F -S3154000C7B0010000000100000001000000010000002F -S3154000C7C0010000000100000001000000010000001F -S3154000C7D0010000000100000001000000010000000F -S3154000C7E001000000010000000100000001000000FF -S3154000C7F001000000010000000100000001000000EF -S3154000C80001000000010000000100000001000000DE -S3154000C81001000000010000000100000001000000CE -S3154000C82001000000010000000100000001000000BE -S3154000C83001000000010000000100000001000000AE -S3154000C840010000000100000001000000010000009E -S3154000C850010000000100000001000000010000008E -S3154000C860010000000100000001000000010000007E -S3154000C870010000000100000001000000010000006E -S3154000C880010000000100000001000000010000005E -S3154000C890010000000100000001000000010000004E -S3154000C8A0010000000100000001000000010000003E -S3154000C8B0010000000100000001000000010000002E -S3154000C8C0010000000100000001000000010000001E -S3154000C8D0010000000100000001000000010000000E -S3154000C8E001000000010000000100000001000000FE -S3154000C8F001000000010000000100000001000000EE -S3154000C90001000000010000000100000001000000DD -S3154000C91001000000010000000100000001000000CD -S3154000C92001000000010000000100000001000000BD -S3154000C93001000000010000000100000001000000AD -S3154000C940010000000100000001000000010000009D -S3154000C950010000000100000001000000010000008D -S3154000C960010000000100000001000000010000007D -S3154000C970010000000100000001000000010000006D -S3154000C980010000000100000001000000010000005D -S3154000C990010000000100000001000000010000004D -S3154000C9A0010000000100000001000000010000003D -S3154000C9B0010000000100000001000000010000002D -S3154000C9C0010000000100000001000000010000001D -S3154000C9D0010000000100000001000000010000000D -S3154000C9E001000000010000000100000001000000FD -S3154000C9F001000000010000000100000001000000ED -S3154000CA0001000000010000000100000001000000DC -S3154000CA1001000000010000000100000001000000CC -S3154000CA2001000000010000000100000001000000BC -S3154000CA3001000000010000000100000001000000AC -S3154000CA40010000000100000001000000010000009C -S3154000CA50010000000100000001000000010000008C -S3154000CA60010000000100000001000000010000007C -S3154000CA70010000000100000001000000010000006C -S3154000CA80010000000100000001000000010000005C -S3154000CA90010000000100000001000000010000004C -S3154000CAA0010000000100000001000000010000003C -S3154000CAB0010000000100000001000000010000002C -S3154000CAC0010000000100000001000000010000001C -S3154000CAD0010000000100000001000000010000000C -S3154000CAE001000000010000000100000001000000FC -S3154000CAF001000000010000000100000001000000EC -S3154000CB0001000000010000000100000001000000DB -S3154000CB1001000000010000000100000001000000CB -S3154000CB2001000000010000000100000001000000BB -S3154000CB3001000000010000000100000001000000AB -S3154000CB40010000000100000001000000010000009B -S3154000CB50010000000100000001000000010000008B -S3154000CB60010000000100000001000000010000007B -S3154000CB70010000000100000001000000010000006B -S3154000CB80010000000100000001000000010000005B -S3154000CB90010000000100000001000000010000004B -S3154000CBA0010000000100000001000000010000003B -S3154000CBB0010000000100000001000000010000002B -S3154000CBC0010000000100000001000000010000001B -S3154000CBD0010000000100000001000000010000000B -S3154000CBE001000000010000000100000001000000FB -S3154000CBF001000000010000000100000001000000EB -S3154000CC0001000000010000000100000001000000DA -S3154000CC1001000000010000000100000001000000CA -S3154000CC2001000000010000000100000001000000BA -S3154000CC3001000000010000000100000001000000AA -S3154000CC40010000000100000001000000010000009A -S3154000CC50010000000100000001000000010000008A -S3154000CC60010000000100000001000000010000007A -S3154000CC70010000000100000001000000010000006A -S3154000CC80010000000100000001000000010000005A -S3154000CC90010000000100000001000000010000004A -S3154000CCA0010000000100000001000000010000003A -S3154000CCB0010000000100000001000000010000002A -S3154000CCC0010000000100000001000000010000001A -S3154000CCD0010000000100000001000000010000000A -S3154000CCE001000000010000000100000001000000FA -S3154000CCF001000000010000000100000001000000EA -S3154000CD0001000000010000000100000001000000D9 -S3154000CD1001000000010000000100000001000000C9 -S3154000CD2001000000010000000100000001000000B9 -S3154000CD3001000000010000000100000001000000A9 -S3154000CD400100000001000000010000000100000099 -S3154000CD500100000001000000010000000100000089 -S3154000CD600100000001000000010000000100000079 -S3154000CD700100000001000000010000000100000069 -S3154000CD800100000001000000010000000100000059 -S3154000CD900100000001000000010000000100000049 -S3154000CDA00100000001000000010000000100000039 -S3154000CDB00100000001000000010000000100000029 -S3154000CDC00100000001000000010000000100000019 -S3154000CDD00100000001000000010000000100000009 -S3154000CDE001000000010000000100000001000000F9 -S3154000CDF001000000010000000100000001000000E9 -S3154000CE0001000000010000000100000001000000D8 -S3154000CE1001000000010000000100000001000000C8 -S3154000CE2001000000010000000100000001000000B8 -S3154000CE3001000000010000000100000001000000A8 -S3154000CE400100000001000000010000000100000098 -S3154000CE500100000001000000010000000100000088 -S3154000CE600100000001000000010000000100000078 -S3154000CE700100000001000000010000000100000068 -S3154000CE800100000001000000010000000100000058 -S3154000CE900100000001000000010000000100000048 -S3154000CEA00100000001000000010000000100000038 -S3154000CEB00100000001000000010000000100000028 -S3154000CEC00100000001000000010000000100000018 -S3154000CED00100000001000000010000000100000008 -S3154000CEE001000000010000000100000001000000F8 -S3154000CEF001000000010000000100000001000000E8 -S3154000CF0001000000010000000100000001000000D7 -S3154000CF1001000000010000000100000001000000C7 -S3154000CF2001000000010000000100000001000000B7 -S3154000CF3001000000010000000100000001000000A7 -S3154000CF400100000001000000010000000100000097 -S3154000CF500100000001000000010000000100000087 -S3154000CF600100000001000000010000000100000077 -S3154000CF700100000001000000010000000100000067 -S3154000CF800100000001000000010000000100000057 -S3154000CF900100000001000000010000000100000047 -S3154000CFA00100000001000000010000000100000037 -S3154000CFB00100000001000000010000000100000027 -S3154000CFC00100000001000000010000000100000017 -S3154000CFD00100000001000000010000000100000007 -S3154000CFE001000000010000000100000001000000F7 -S3154000CFF001000000010000000100000001000000E7 -S3154000D00001000000010000000100000001000000D6 -S3154000D01001000000010000000100000001000000C6 -S3154000D02001000000010000000100000001000000B6 -S3154000D03001000000010000000100000001000000A6 -S3154000D0400100000001000000010000000100000096 -S3154000D0500100000001000000010000000100000086 -S3154000D0600100000001000000010000000100000076 -S3154000D0700100000001000000010000000100000066 -S3154000D0800100000001000000010000000100000056 -S3154000D0900100000001000000010000000100000046 -S3154000D0A00100000001000000010000000100000036 -S3154000D0B00100000001000000010000000100000026 -S3154000D0C00100000001000000010000000100000016 -S3154000D0D00100000001000000010000000100000006 -S3154000D0E001000000010000000100000001000000F6 -S3154000D0F001000000010000000100000001000000E6 -S3154000D10001000000010000000100000001000000D5 -S3154000D11001000000010000000100000001000000C5 -S3154000D12001000000010000000100000001000000B5 -S3154000D13001000000010000000100000001000000A5 -S3154000D1400100000001000000010000000100000095 -S3154000D1500100000001000000010000000100000085 -S3154000D1600100000001000000010000000100000075 -S3154000D1700100000001000000010000000100000065 -S3154000D1800100000001000000010000000100000055 -S3154000D1900100000001000000010000000100000045 -S3154000D1A00100000001000000010000000100000035 -S3154000D1B00100000001000000010000000100000025 -S3154000D1C00100000001000000010000000100000015 -S3154000D1D00100000001000000010000000100000005 -S3154000D1E001000000010000000100000001000000F5 -S3154000D1F001000000010000000100000001000000E5 -S3154000D20001000000010000000100000001000000D4 -S3154000D21001000000010000000100000001000000C4 -S3154000D22001000000010000000100000001000000B4 -S3154000D23001000000010000000100000001000000A4 -S3154000D2400100000001000000010000000100000094 -S3154000D2500100000001000000010000000100000084 -S3154000D2600100000001000000010000000100000074 -S3154000D2700100000001000000010000000100000064 -S3154000D2800100000001000000010000000100000054 -S3154000D2900100000001000000010000000100000044 -S3154000D2A00100000001000000010000000100000034 -S3154000D2B00100000001000000010000000100000024 -S3154000D2C00100000001000000010000000100000014 -S3154000D2D00100000001000000010000000100000004 -S3154000D2E001000000010000000100000001000000F4 -S3154000D2F001000000010000000100000001000000E4 -S3154000D30001000000010000000100000001000000D3 -S3154000D31001000000010000000100000001000000C3 -S3154000D32001000000010000000100000001000000B3 -S3154000D33001000000010000000100000001000000A3 -S3154000D3400100000001000000010000000100000093 -S3154000D3500100000001000000010000000100000083 -S3154000D3600100000001000000010000000100000073 -S3154000D3700100000001000000010000000100000063 -S3154000D3800100000001000000010000000100000053 -S3154000D3900100000001000000010000000100000043 -S3154000D3A00100000001000000010000000100000033 -S3154000D3B00100000001000000010000000100000023 -S3154000D3C00100000001000000010000000100000013 -S3154000D3D00100000001000000010000000100000003 -S3154000D3E001000000010000000100000001000000F3 -S3154000D3F001000000010000000100000001000000E3 -S3154000D40001000000010000000100000001000000D2 -S3154000D41001000000010000000100000001000000C2 -S3154000D42001000000010000000100000001000000B2 -S3154000D43001000000010000000100000001000000A2 -S3154000D4400100000001000000010000000100000092 -S3154000D4500100000001000000010000000100000082 -S3154000D4600100000001000000010000000100000072 -S3154000D4700100000001000000010000000100000062 -S3154000D4800100000001000000010000000100000052 -S3154000D4900100000001000000010000000100000042 -S3154000D4A00100000001000000010000000100000032 -S3154000D4B00100000001000000010000000100000022 -S3154000D4C00100000001000000010000000100000012 -S3154000D4D00100000001000000010000000100000002 -S3154000D4E001000000010000000100000001000000F2 -S3154000D4F001000000010000000100000001000000E2 -S3154000D50001000000010000000100000001000000D1 -S3154000D51001000000010000000100000001000000C1 -S3154000D52001000000010000000100000001000000B1 -S3154000D53001000000010000000100000001000000A1 -S3154000D5400100000001000000010000000100000091 -S3154000D5500100000001000000010000000100000081 -S3154000D5600100000001000000010000000100000071 -S3154000D5700100000001000000010000000100000061 -S3154000D5800100000001000000010000000100000051 -S3154000D5900100000001000000010000000100000041 -S3154000D5A00100000001000000010000000100000031 -S3154000D5B00100000001000000010000000100000021 -S3154000D5C00100000001000000010000000100000011 -S3154000D5D00100000001000000010000000100000001 -S3154000D5E001000000010000000100000001000000F1 -S3154000D5F001000000010000000100000001000000E1 -S3154000D60001000000010000000100000001000000D0 -S3154000D61001000000010000000100000001000000C0 -S3154000D62001000000010000000100000001000000B0 -S3154000D63001000000010000000100000001000000A0 -S3154000D6400100000001000000010000000100000090 -S3154000D6500100000001000000010000000100000080 -S3154000D6600100000001000000010000000100000070 -S3154000D6700100000001000000010000000100000060 -S3154000D6800100000001000000010000000100000050 -S3154000D6900100000001000000010000000100000040 -S3154000D6A00100000001000000010000000100000030 -S3154000D6B00100000001000000010000000100000020 -S3154000D6C00100000001000000010000000100000010 -S3154000D6D00100000001000000010000000100000000 -S3154000D6E001000000010000000100000001000000F0 -S3154000D6F001000000010000000100000001000000E0 -S3154000D70001000000010000000100000001000000CF -S3154000D71001000000010000000100000001000000BF -S3154000D72001000000010000000100000001000000AF -S3154000D730010000000100000001000000010000009F -S3154000D740010000000100000001000000010000008F -S3154000D750010000000100000001000000010000007F -S3154000D760010000000100000001000000010000006F -S3154000D770010000000100000001000000010000005F -S3154000D780010000000100000001000000010000004F -S3154000D790010000000100000001000000010000003F -S3154000D7A0010000000100000001000000010000002F -S3154000D7B0010000000100000001000000010000001F -S3154000D7C0010000000100000001000000010000000F -S3154000D7D001000000010000000100000001000000FF -S3154000D7E001000000010000000100000001000000EF -S3154000D7F001000000010000000100000001000000DF -S3154000D80001000000010000000100000001000000CE -S3154000D81001000000010000000100000001000000BE -S3154000D82001000000010000000100000001000000AE -S3154000D830010000000100000001000000010000009E -S3154000D840010000000100000001000000010000008E -S3154000D850010000000100000001000000010000007E -S3154000D860010000000100000001000000010000006E -S3154000D870010000000100000001000000010000005E -S3154000D880010000000100000001000000010000004E -S3154000D890010000000100000001000000010000003E -S3154000D8A0010000000100000001000000010000002E -S3154000D8B0010000000100000001000000010000001E -S3154000D8C0010000000100000001000000010000000E -S3154000D8D001000000010000000100000001000000FE -S3154000D8E001000000010000000100000001000000EE -S3154000D8F001000000010000000100000001000000DE -S3154000D90001000000010000000100000001000000CD -S3154000D91001000000010000000100000001000000BD -S3154000D92001000000010000000100000001000000AD -S3154000D930010000000100000001000000010000009D -S3154000D940010000000100000001000000010000008D -S3154000D950010000000100000001000000010000007D -S3154000D960010000000100000001000000010000006D -S3154000D970010000000100000001000000010000005D -S3154000D980010000000100000001000000010000004D -S3154000D990010000000100000001000000010000003D -S3154000D9A0010000000100000001000000010000002D -S3154000D9B0010000000100000001000000010000001D -S3154000D9C0010000000100000001000000010000000D -S3154000D9D001000000010000000100000001000000FD -S3154000D9E001000000010000000100000001000000ED -S3154000D9F001000000010000000100000001000000DD -S3154000DA0001000000010000000100000001000000CC -S3154000DA1001000000010000000100000001000000BC -S3154000DA2001000000010000000100000001000000AC -S3154000DA30010000000100000001000000010000009C -S3154000DA40010000000100000001000000010000008C -S3154000DA50010000000100000001000000010000007C -S3154000DA60010000000100000001000000010000006C -S3154000DA70010000000100000001000000010000005C -S3154000DA80010000000100000001000000010000004C -S3154000DA90010000000100000001000000010000003C -S3154000DAA0010000000100000001000000010000002C -S3154000DAB0010000000100000001000000010000001C -S3154000DAC0010000000100000001000000010000000C -S3154000DAD001000000010000000100000001000000FC -S3154000DAE001000000010000000100000001000000EC -S3154000DAF001000000010000000100000001000000DC -S3154000DB0001000000010000000100000001000000CB -S3154000DB1001000000010000000100000001000000BB -S3154000DB2001000000010000000100000001000000AB -S3154000DB30010000000100000001000000010000009B -S3154000DB40010000000100000001000000010000008B -S3154000DB50010000000100000001000000010000007B -S3154000DB60010000000100000001000000010000006B -S3154000DB70010000000100000001000000010000005B -S3154000DB80010000000100000001000000010000004B -S3154000DB90010000000100000001000000010000003B -S3154000DBA0010000000100000001000000010000002B -S3154000DBB0010000000100000001000000010000001B -S3154000DBC0010000000100000001000000010000000B -S3154000DBD001000000010000000100000001000000FB -S3154000DBE001000000010000000100000001000000EB -S3154000DBF001000000010000000100000001000000DB -S3154000DC0001000000010000000100000001000000CA -S3154000DC1001000000010000000100000001000000BA -S3154000DC2001000000010000000100000001000000AA -S3154000DC30010000000100000001000000010000009A -S3154000DC40010000000100000001000000010000008A -S3154000DC50010000000100000001000000010000007A -S3154000DC60010000000100000001000000010000006A -S3154000DC70010000000100000001000000010000005A -S3154000DC80010000000100000001000000010000004A -S3154000DC90010000000100000001000000010000003A -S3154000DCA0010000000100000001000000010000002A -S3154000DCB0010000000100000001000000010000001A -S3154000DCC0010000000100000001000000010000000A -S3154000DCD001000000010000000100000001000000FA -S3154000DCE001000000010000000100000001000000EA -S3154000DCF001000000010000000100000001000000DA -S3154000DD0001000000010000000100000001000000C9 -S3154000DD1001000000010000000100000001000000B9 -S3154000DD2001000000010000000100000001000000A9 -S3154000DD300100000001000000010000000100000099 -S3154000DD400100000001000000010000000100000089 -S3154000DD500100000001000000010000000100000079 -S3154000DD600100000001000000010000000100000069 -S3154000DD700100000001000000010000000100000059 -S3154000DD800100000001000000010000000100000049 -S3154000DD900100000001000000010000000100000039 -S3154000DDA00100000001000000010000000100000029 -S3154000DDB00100000001000000010000000100000019 -S3154000DDC00100000001000000010000000100000009 -S3154000DDD001000000010000000100000001000000F9 -S3154000DDE001000000010000000100000001000000E9 -S3154000DDF001000000010000000100000001000000D9 -S3154000DE0001000000010000000100000001000000C8 -S3154000DE1001000000010000000100000001000000B8 -S3154000DE2001000000010000000100000001000000A8 -S3154000DE300100000001000000010000000100000098 -S3154000DE400100000001000000010000000100000088 -S3154000DE500100000001000000010000000100000078 -S3154000DE600100000001000000010000000100000068 -S3154000DE700100000001000000010000000100000058 -S3154000DE800100000001000000010000000100000048 -S3154000DE900100000001000000010000000100000038 -S3154000DEA00100000001000000010000000100000028 -S3154000DEB00100000001000000010000000100000018 -S3154000DEC00100000001000000010000000100000008 -S3154000DED001000000010000000100000001000000F8 -S3154000DEE001000000010000000100000001000000E8 -S3154000DEF001000000010000000100000001000000D8 -S3154000DF0001000000010000000100000001000000C7 -S3154000DF1001000000010000000100000001000000B7 -S3154000DF2001000000010000000100000001000000A7 -S3154000DF300100000001000000010000000100000097 -S3154000DF400100000001000000010000000100000087 -S3154000DF500100000001000000010000000100000077 -S3154000DF600100000001000000010000000100000067 -S3154000DF700100000001000000010000000100000057 -S3154000DF800100000001000000010000000100000047 -S3154000DF900100000001000000010000000100000037 -S3154000DFA00100000001000000010000000100000027 -S3154000DFB00100000001000000010000000100000017 -S3154000DFC00100000001000000010000000100000007 -S3154000DFD001000000010000000100000001000000F7 -S3154000DFE001000000010000000100000001000000E7 -S3154000DFF001000000010000000100000001000000D7 -S3154000E00001000000010000000100000001000000C6 -S3154000E01001000000010000000100000001000000B6 -S3154000E02001000000010000000100000001000000A6 -S3154000E0300100000001000000010000000100000096 -S3154000E0400100000001000000010000000100000086 -S3154000E0500100000001000000010000000100000076 -S3154000E0600100000001000000010000000100000066 -S3154000E0700100000001000000010000000100000056 -S3154000E0800100000001000000010000000100000046 -S3154000E0900100000001000000010000000100000036 -S3154000E0A00100000001000000010000000100000026 -S3154000E0B00100000001000000010000000100000016 -S3154000E0C00100000001000000010000000100000006 -S3154000E0D001000000010000000100000001000000F6 -S3154000E0E001000000010000000100000001000000E6 -S3154000E0F001000000010000000100000001000000D6 -S3154000E10001000000010000000100000001000000C5 -S3154000E11001000000010000000100000001000000B5 -S3154000E12001000000010000000100000001000000A5 -S3154000E1300100000001000000010000000100000095 -S3154000E1400100000001000000010000000100000085 -S3154000E1500100000001000000010000000100000075 -S3154000E1600100000001000000010000000100000065 -S3154000E1700100000001000000010000000100000055 -S3154000E1800100000001000000010000000100000045 -S3154000E1900100000001000000010000000100000035 -S3154000E1A00100000001000000010000000100000025 -S3154000E1B00100000001000000010000000100000015 -S3154000E1C00100000001000000010000000100000005 -S3154000E1D001000000010000000100000001000000F5 -S3154000E1E001000000010000000100000001000000E5 -S3154000E1F001000000010000000100000001000000D5 -S3154000E20001000000010000000100000001000000C4 -S3154000E21001000000010000000100000001000000B4 -S3154000E22001000000010000000100000001000000A4 -S3154000E2300100000001000000010000000100000094 -S3154000E2400100000001000000010000000100000084 -S3154000E2500100000001000000010000000100000074 -S3154000E2600100000001000000010000000100000064 -S3154000E2700100000001000000010000000100000054 -S3154000E2800100000001000000010000000100000044 -S3154000E2900100000001000000010000000100000034 -S3154000E2A00100000001000000010000000100000024 -S3154000E2B00100000001000000010000000100000014 -S3154000E2C00100000001000000010000000100000004 -S3154000E2D001000000010000000100000001000000F4 -S3154000E2E001000000010000000100000001000000E4 -S3154000E2F001000000010000000100000001000000D4 -S3154000E30001000000010000000100000001000000C3 -S3154000E31001000000010000000100000001000000B3 -S3154000E32001000000010000000100000001000000A3 -S3154000E3300100000001000000010000000100000093 -S3154000E3400100000001000000010000000100000083 -S3154000E3500100000001000000010000000100000073 -S3154000E3600100000001000000010000000100000063 -S3154000E3700100000001000000010000000100000053 -S3154000E3800100000001000000010000000100000043 -S3154000E3900100000001000000010000000100000033 -S3154000E3A00100000001000000010000000100000023 -S3154000E3B00100000001000000010000000100000013 -S3154000E3C00100000001000000010000000100000003 -S3154000E3D001000000010000000100000001000000F3 -S3154000E3E001000000010000000100000001000000E3 -S3154000E3F001000000010000000100000001000000D3 -S3154000E40001000000010000000100000001000000C2 -S3154000E41001000000010000000100000001000000B2 -S3154000E42001000000010000000100000001000000A2 -S3154000E4300100000001000000010000000100000092 -S3154000E4400100000001000000010000000100000082 -S3154000E4500100000001000000010000000100000072 -S3154000E4600100000001000000010000000100000062 -S3154000E4700100000001000000010000000100000052 -S3154000E4800100000001000000010000000100000042 -S3154000E4900100000001000000010000000100000032 -S3154000E4A00100000001000000010000000100000022 -S3154000E4B00100000001000000010000000100000012 -S3154000E4C00100000001000000010000000100000002 -S3154000E4D001000000010000000100000001000000F2 -S3154000E4E001000000010000000100000001000000E2 -S3154000E4F001000000010000000100000001000000D2 -S3154000E50001000000010000000100000001000000C1 -S3154000E51001000000010000000100000001000000B1 -S3154000E52001000000010000000100000001000000A1 -S3154000E5300100000001000000010000000100000091 -S3154000E5400100000001000000010000000100000081 -S3154000E5500100000001000000010000000100000071 -S3154000E5600100000001000000010000000100000061 -S3154000E5700100000001000000010000000100000051 -S3154000E5800100000001000000010000000100000041 -S3154000E5900100000001000000010000000100000031 -S3154000E5A00100000001000000010000000100000021 -S3154000E5B00100000001000000010000000100000011 -S3154000E5C00100000001000000010000000100000001 -S3154000E5D001000000010000000100000001000000F1 -S3154000E5E001000000010000000100000001000000E1 -S3154000E5F001000000010000000100000001000000D1 -S3154000E60001000000010000000100000001000000C0 -S3154000E61001000000010000000100000001000000B0 -S3154000E62001000000010000000100000001000000A0 -S3154000E6300100000001000000010000000100000090 -S3154000E6400100000001000000010000000100000080 -S3154000E6500100000001000000010000000100000070 -S3154000E6600100000001000000010000000100000060 -S3154000E6700100000001000000010000000100000050 -S3154000E6800100000001000000010000000100000040 -S3154000E6900100000001000000010000000100000030 -S3154000E6A00100000001000000010000000100000020 -S3154000E6B00100000001000000010000000100000010 -S3154000E6C00100000001000000010000000100000000 -S3154000E6D001000000010000000100000001000000F0 -S3154000E6E001000000010000000100000001000000E0 -S3154000E6F001000000010000000100000001000000D0 -S3154000E70001000000010000000100000001000000BF -S3154000E71001000000010000000100000001000000AF -S3154000E720010000000100000001000000010000009F -S3154000E730010000000100000001000000010000008F -S3154000E740010000000100000001000000010000007F -S3154000E750010000000100000001000000010000006F -S3154000E760010000000100000001000000010000005F -S3154000E770010000000100000001000000010000004F -S3154000E780010000000100000001000000010000003F -S3154000E790010000000100000001000000010000002F -S3154000E7A0010000000100000001000000010000001F -S3154000E7B0010000000100000001000000010000000F -S3154000E7C001000000010000000100000001000000FF -S3154000E7D001000000010000000100000001000000EF -S3154000E7E001000000010000000100000001000000DF -S3154000E7F001000000010000000100000001000000CF -S3154000E80001000000010000000100000001000000BE -S3154000E81001000000010000000100000001000000AE -S3154000E820010000000100000001000000010000009E -S3154000E830010000000100000001000000010000008E -S3154000E840010000000100000001000000010000007E -S3154000E850010000000100000001000000010000006E -S3154000E860010000000100000001000000010000005E -S3154000E870010000000100000001000000010000004E -S3154000E880010000000100000001000000010000003E -S3154000E890010000000100000001000000010000002E -S3154000E8A0010000000100000001000000010000001E -S3154000E8B0010000000100000001000000010000000E -S3154000E8C001000000010000000100000001000000FE -S3154000E8D001000000010000000100000001000000EE -S3154000E8E001000000010000000100000001000000DE -S3154000E8F001000000010000000100000001000000CE -S3154000E90001000000010000000100000001000000BD -S3154000E91001000000010000000100000001000000AD -S3154000E920010000000100000001000000010000009D -S3154000E930010000000100000001000000010000008D -S3154000E940010000000100000001000000010000007D -S3154000E950010000000100000001000000010000006D -S3154000E960010000000100000001000000010000005D -S3154000E970010000000100000001000000010000004D -S3154000E980010000000100000001000000010000003D -S3154000E990010000000100000001000000010000002D -S3154000E9A0010000000100000001000000010000001D -S3154000E9B0010000000100000001000000010000000D -S3154000E9C001000000010000000100000001000000FD -S3154000E9D001000000010000000100000001000000ED -S3154000E9E001000000010000000100000001000000DD -S3154000E9F001000000010000000100000001000000CD -S3154000EA0001000000010000000100000001000000BC -S3154000EA1001000000010000000100000001000000AC -S3154000EA20010000000100000001000000010000009C -S3154000EA30010000000100000001000000010000008C -S3154000EA40010000000100000001000000010000007C -S3154000EA50010000000100000001000000010000006C -S3154000EA60010000000100000001000000010000005C -S3154000EA70010000000100000001000000010000004C -S3154000EA80010000000100000001000000010000003C -S3154000EA90010000000100000001000000010000002C -S3154000EAA0010000000100000001000000010000001C -S3154000EAB0010000000100000001000000010000000C -S3154000EAC001000000010000000100000001000000FC -S3154000EAD001000000010000000100000001000000EC -S3154000EAE001000000010000000100000001000000DC -S3154000EAF001000000010000000100000001000000CC -S3154000EB0001000000010000000100000001000000BB -S3154000EB1001000000010000000100000001000000AB -S3154000EB20010000000100000001000000010000009B -S3154000EB30010000000100000001000000010000008B -S3154000EB40010000000100000001000000010000007B -S3154000EB50010000000100000001000000010000006B -S3154000EB60010000000100000001000000010000005B -S3154000EB70010000000100000001000000010000004B -S3154000EB80010000000100000001000000010000003B -S3154000EB90010000000100000001000000010000002B -S3154000EBA0010000000100000001000000010000001B -S3154000EBB0010000000100000001000000010000000B -S3154000EBC001000000010000000100000001000000FB -S3154000EBD001000000010000000100000001000000EB -S3154000EBE001000000010000000100000001000000DB -S3154000EBF001000000010000000100000001000000CB -S3154000EC0001000000010000000100000001000000BA -S3154000EC1001000000010000000100000001000000AA -S3154000EC20010000000100000001000000010000009A -S3154000EC30010000000100000001000000010000008A -S3154000EC40010000000100000001000000010000007A -S3154000EC50010000000100000001000000010000006A -S3154000EC60010000000100000001000000010000005A -S3154000EC70010000000100000001000000010000004A -S3154000EC80010000000100000001000000010000003A -S3154000EC90010000000100000001000000010000002A -S3154000ECA0010000000100000001000000010000001A -S3154000ECB0010000000100000001000000010000000A -S3154000ECC001000000010000000100000001000000FA -S3154000ECD001000000010000000100000001000000EA -S3154000ECE001000000010000000100000001000000DA -S3154000ECF001000000010000000100000001000000CA -S3154000ED0001000000010000000100000001000000B9 -S3154000ED1001000000010000000100000001000000A9 -S3154000ED200100000001000000010000000100000099 -S3154000ED300100000001000000010000000100000089 -S3154000ED400100000001000000010000000100000079 -S3154000ED500100000001000000010000000100000069 -S3154000ED600100000001000000010000000100000059 -S3154000ED700100000001000000010000000100000049 -S3154000ED800100000001000000010000000100000039 -S3154000ED900100000001000000010000000100000029 -S3154000EDA00100000001000000010000000100000019 -S3154000EDB00100000001000000010000000100000009 -S3154000EDC001000000010000000100000001000000F9 -S3154000EDD001000000010000000100000001000000E9 -S3154000EDE001000000010000000100000001000000D9 -S3154000EDF001000000010000000100000001000000C9 -S3154000EE0001000000010000000100000001000000B8 -S3154000EE1001000000010000000100000001000000A8 -S3154000EE200100000001000000010000000100000098 -S3154000EE300100000001000000010000000100000088 -S3154000EE400100000001000000010000000100000078 -S3154000EE500100000001000000010000000100000068 -S3154000EE600100000001000000010000000100000058 -S3154000EE700100000001000000010000000100000048 -S3154000EE800100000001000000010000000100000038 -S3154000EE900100000001000000010000000100000028 -S3154000EEA00100000001000000010000000100000018 -S3154000EEB00100000001000000010000000100000008 -S3154000EEC001000000010000000100000001000000F8 -S3154000EED001000000010000000100000001000000E8 -S3154000EEE001000000010000000100000001000000D8 -S3154000EEF001000000010000000100000001000000C8 -S3154000EF0001000000010000000100000001000000B7 -S3154000EF1001000000010000000100000001000000A7 -S3154000EF200100000001000000010000000100000097 -S3154000EF300100000001000000010000000100000087 -S3154000EF400100000001000000010000000100000077 -S3154000EF500100000001000000010000000100000067 -S3154000EF600100000001000000010000000100000057 -S3154000EF700100000001000000010000000100000047 -S3154000EF800100000001000000010000000100000037 -S3154000EF900100000001000000010000000100000027 -S3154000EFA00100000001000000010000000100000017 -S3154000EFB00100000001000000010000000100000007 -S3154000EFC001000000010000000100000001000000F7 -S3154000EFD001000000010000000100000001000000E7 -S3154000EFE001000000010000000100000001000000D7 -S3154000EFF001000000010000000100000001000000C7 -S3154000F00001000000010000000100000001000000B6 -S3154000F01001000000010000000100000001000000A6 -S3154000F0200100000001000000010000000100000096 -S3154000F0300100000001000000010000000100000086 -S3154000F0400100000001000000010000000100000076 -S3154000F0500100000001000000010000000100000066 -S3154000F0600100000001000000010000000100000056 -S3154000F0700100000001000000010000000100000046 -S3154000F0800100000001000000010000000100000036 -S3154000F0900100000001000000010000000100000026 -S3154000F0A00100000001000000010000000100000016 -S3154000F0B00100000001000000010000000100000006 -S3154000F0C001000000010000000100000001000000F6 -S3154000F0D001000000010000000100000001000000E6 -S3154000F0E001000000010000000100000001000000D6 -S3154000F0F001000000010000000100000001000000C6 -S3154000F10001000000010000000100000001000000B5 -S3154000F11001000000010000000100000001000000A5 -S3154000F1200100000001000000010000000100000095 -S3154000F1300100000001000000010000000100000085 -S3154000F1400100000001000000010000000100000075 -S3154000F1500100000001000000010000000100000065 -S3154000F1600100000001000000010000000100000055 -S3154000F1700100000001000000010000000100000045 -S3154000F1800100000001000000010000000100000035 -S3154000F1900100000001000000010000000100000025 -S3154000F1A00100000001000000010000000100000015 -S3154000F1B00100000001000000010000000100000005 -S3154000F1C001000000010000000100000001000000F5 -S3154000F1D001000000010000000100000001000000E5 -S3154000F1E001000000010000000100000001000000D5 -S3154000F1F001000000010000000100000001000000C5 -S3154000F20001000000010000000100000001000000B4 -S3154000F21001000000010000000100000001000000A4 -S3154000F2200100000001000000010000000100000094 -S3154000F2300100000001000000010000000100000084 -S3154000F2400100000001000000010000000100000074 -S3154000F2500100000001000000010000000100000064 -S3154000F2600100000001000000010000000100000054 -S3154000F2700100000001000000010000000100000044 -S3154000F2800100000001000000010000000100000034 -S3154000F2900100000001000000010000000100000024 -S3154000F2A00100000001000000010000000100000014 -S3154000F2B00100000001000000010000000100000004 -S3154000F2C001000000010000000100000001000000F4 -S3154000F2D001000000010000000100000001000000E4 -S3154000F2E001000000010000000100000001000000D4 -S3154000F2F001000000010000000100000001000000C4 -S3154000F30001000000010000000100000001000000B3 -S3154000F31001000000010000000100000001000000A3 -S3154000F3200100000001000000010000000100000093 -S3154000F3300100000001000000010000000100000083 -S3154000F3400100000001000000010000000100000073 -S3154000F3500100000001000000010000000100000063 -S3154000F3600100000001000000010000000100000053 -S3154000F3700100000001000000010000000100000043 -S3154000F3800100000001000000010000000100000033 -S3154000F3900100000001000000010000000100000023 -S3154000F3A00100000001000000010000000100000013 -S3154000F3B00100000001000000010000000100000003 -S3154000F3C001000000010000000100000001000000F3 -S3154000F3D001000000010000000100000001000000E3 -S3154000F3E001000000010000000100000001000000D3 -S3154000F3F001000000010000000100000001000000C3 -S3154000F40001000000010000000100000001000000B2 -S3154000F41001000000010000000100000001000000A2 -S3154000F4200100000001000000010000000100000092 -S3154000F4300100000001000000010000000100000082 -S3154000F4400100000001000000010000000100000072 -S3154000F4500100000001000000010000000100000062 -S3154000F4600100000001000000010000000100000052 -S3154000F4700100000001000000010000000100000042 -S3154000F4800100000001000000010000000100000032 -S3154000F4900100000001000000010000000100000022 -S3154000F4A00100000001000000010000000100000012 -S3154000F4B00100000001000000010000000100000002 -S3154000F4C001000000010000000100000001000000F2 -S3154000F4D001000000010000000100000001000000E2 -S3154000F4E001000000010000000100000001000000D2 -S3154000F4F001000000010000000100000001000000C2 -S3154000F50001000000010000000100000001000000B1 -S3154000F51001000000010000000100000001000000A1 -S3154000F5200100000001000000010000000100000091 -S3154000F5300100000001000000010000000100000081 -S3154000F5400100000001000000010000000100000071 -S3154000F5500100000001000000010000000100000061 -S3154000F5600100000001000000010000000100000051 -S3154000F5700100000001000000010000000100000041 -S3154000F5800100000001000000010000000100000031 -S3154000F5900100000001000000010000000100000021 -S3154000F5A00100000001000000010000000100000011 -S3154000F5B00100000001000000010000000100000001 -S3154000F5C001000000010000000100000001000000F1 -S3154000F5D001000000010000000100000001000000E1 -S3154000F5E001000000010000000100000001000000D1 -S3154000F5F001000000010000000100000001000000C1 -S3154000F60001000000010000000100000001000000B0 -S3154000F61001000000010000000100000001000000A0 -S3154000F6200100000001000000010000000100000090 -S3154000F6300100000001000000010000000100000080 -S3154000F6400100000001000000010000000100000070 -S3154000F6500100000001000000010000000100000060 -S3154000F6600100000001000000010000000100000050 -S3154000F6700100000001000000010000000100000040 -S3154000F6800100000001000000010000000100000030 -S3154000F6900100000001000000010000000100000020 -S3154000F6A00100000001000000010000000100000010 -S3154000F6B00100000001000000010000000100000000 -S3154000F6C001000000010000000100000001000000F0 -S3154000F6D001000000010000000100000001000000E0 -S3154000F6E001000000010000000100000001000000D0 -S3154000F6F001000000010000000100000001000000C0 -S3154000F70001000000010000000100000001000000AF -S3154000F710010000000100000001000000010000009F -S3154000F720010000000100000001000000010000008F -S3154000F730010000000100000001000000010000007F -S3154000F740010000000100000001000000010000006F -S3154000F750010000000100000001000000010000005F -S3154000F760010000000100000001000000010000004F -S3154000F770010000000100000001000000010000003F -S3154000F780010000000100000001000000010000002F -S3154000F790010000000100000001000000010000001F -S3154000F7A0010000000100000001000000010000000F -S3154000F7B001000000010000000100000001000000FF -S3154000F7C001000000010000000100000001000000EF -S3154000F7D001000000010000000100000001000000DF -S3154000F7E001000000010000000100000001000000CF -S3154000F7F001000000010000000100000001000000BF -S3154000F80001000000010000000100000001000000AE -S3154000F810010000000100000001000000010000009E -S3154000F820010000000100000001000000010000008E -S3154000F830010000000100000001000000010000007E -S3154000F840010000000100000001000000010000006E -S3154000F850010000000100000001000000010000005E -S3154000F860010000000100000001000000010000004E -S3154000F870010000000100000001000000010000003E -S3154000F880010000000100000001000000010000002E -S3154000F890010000000100000001000000010000001E -S3154000F8A0010000000100000001000000010000000E -S3154000F8B001000000010000000100000001000000FE -S3154000F8C001000000010000000100000001000000EE -S3154000F8D001000000010000000100000001000000DE -S3154000F8E001000000010000000100000001000000CE -S3154000F8F001000000010000000100000001000000BE -S3154000F90001000000010000000100000001000000AD -S3154000F910010000000100000001000000010000009D -S3154000F920010000000100000001000000010000008D -S3154000F930010000000100000001000000010000007D -S3154000F940010000000100000001000000010000006D -S3154000F950010000000100000001000000010000005D -S3154000F960010000000100000001000000010000004D -S3154000F970010000000100000001000000010000003D -S3154000F980010000000100000001000000010000002D -S3154000F990010000000100000001000000010000001D -S3154000F9A0010000000100000001000000010000000D -S3154000F9B001000000010000000100000001000000FD -S3154000F9C001000000010000000100000001000000ED -S3154000F9D001000000010000000100000001000000DD -S3154000F9E001000000010000000100000001000000CD -S3154000F9F001000000010000000100000001000000BD -S3154000FA0001000000010000000100000001000000AC -S3154000FA10010000000100000001000000010000009C -S3154000FA20010000000100000001000000010000008C -S3154000FA30010000000100000001000000010000007C -S3154000FA40010000000100000001000000010000006C -S3154000FA50010000000100000001000000010000005C -S3154000FA60010000000100000001000000010000004C -S3154000FA70010000000100000001000000010000003C -S3154000FA80010000000100000001000000010000002C -S3154000FA90010000000100000001000000010000001C -S3154000FAA0010000000100000001000000010000000C -S3154000FAB001000000010000000100000001000000FC -S3154000FAC001000000010000000100000001000000EC -S3154000FAD001000000010000000100000001000000DC -S3154000FAE001000000010000000100000001000000CC -S3154000FAF001000000010000000100000001000000BC -S3154000FB0001000000010000000100000001000000AB -S3154000FB10010000000100000001000000010000009B -S3154000FB20010000000100000001000000010000008B -S3154000FB30010000000100000001000000010000007B -S3154000FB40010000000100000001000000010000006B -S3154000FB50010000000100000001000000010000005B -S3154000FB60010000000100000001000000010000004B -S3154000FB70010000000100000001000000010000003B -S3154000FB80010000000100000001000000010000002B -S3154000FB90010000000100000001000000010000001B -S3154000FBA0010000000100000001000000010000000B -S3154000FBB001000000010000000100000001000000FB -S3154000FBC001000000010000000100000001000000EB -S3154000FBD001000000010000000100000001000000DB -S3154000FBE001000000010000000100000001000000CB -S3154000FBF001000000010000000100000001000000BB -S3154000FC0001000000010000000100000001000000AA -S3154000FC10010000000100000001000000010000009A -S3154000FC20010000000100000001000000010000008A -S3154000FC30010000000100000001000000010000007A -S3154000FC40010000000100000001000000010000006A -S3154000FC50010000000100000001000000010000005A -S3154000FC60010000000100000001000000010000004A -S3154000FC70010000000100000001000000010000003A -S3154000FC80010000000100000001000000010000002A -S3154000FC90010000000100000001000000010000001A -S3154000FCA0010000000100000001000000010000000A -S3154000FCB001000000010000000100000001000000FA -S3154000FCC001000000010000000100000001000000EA -S3154000FCD001000000010000000100000001000000DA -S3154000FCE001000000010000000100000001000000CA -S3154000FCF001000000010000000100000001000000BA -S3154000FD0001000000010000000100000001000000A9 -S3154000FD100100000001000000010000000100000099 -S3154000FD200100000001000000010000000100000089 -S3154000FD300100000001000000010000000100000079 -S3154000FD400100000001000000010000000100000069 -S3154000FD500100000001000000010000000100000059 -S3154000FD600100000001000000010000000100000049 -S3154000FD700100000001000000010000000100000039 -S3154000FD800100000001000000010000000100000029 -S3154000FD900100000001000000010000000100000019 -S3154000FDA00100000001000000010000000100000009 -S3154000FDB001000000010000000100000001000000F9 -S3154000FDC001000000010000000100000001000000E9 -S3154000FDD001000000010000000100000001000000D9 -S3154000FDE001000000010000000100000001000000C9 -S3154000FDF001000000010000000100000001000000B9 -S3154000FE0001000000010000000100000001000000A8 -S3154000FE100100000001000000010000000100000098 -S3154000FE200100000001000000010000000100000088 -S3154000FE300100000001000000010000000100000078 -S3154000FE400100000001000000010000000100000068 -S3154000FE500100000001000000010000000100000058 -S3154000FE600100000001000000010000000100000048 -S3154000FE700100000001000000010000000100000038 -S3154000FE800100000001000000010000000100000028 -S3154000FE900100000001000000010000000100000018 -S3154000FEA00100000001000000010000000100000008 -S3154000FEB001000000010000000100000001000000F8 -S3154000FEC001000000010000000100000001000000E8 -S3154000FED001000000010000000100000001000000D8 -S3154000FEE001000000010000000100000001000000C8 -S3154000FEF001000000010000000100000001000000B8 -S3154000FF0001000000010000000100000001000000A7 -S3154000FF100100000001000000010000000100000097 -S3154000FF200100000001000000010000000100000087 -S3154000FF300100000001000000010000000100000077 -S3154000FF400100000001000000010000000100000067 -S3154000FF500100000001000000010000000100000057 -S3154000FF600100000001000000010000000100000047 -S3154000FF700100000001000000010000000100000037 -S3154000FF800100000001000000010000000100000027 -S3154000FF900100000001000000010000000100000017 -S3154000FFA00100000001000000010000000100000007 -S3154000FFB001000000010000000100000001000000F7 -S3154000FFC001000000010000000100000001000000E7 -S3154000FFD001000000010000000100000001000000D7 -S3154000FFE001000000010000000100000001000000C7 -S3154000FFF001000000010000000100000001000000B7 -S315400100009DE3BF987FFFC4741100403080A2200059 -S31540010010128000F382102001C226200CC026200443 -S31540010020C0260000C026200882102002C2262008D1 -S31540010030C0260000C026000082102003C2262008E8 -S315400100409A102083DA262008A2102063C0260000D9 -S31540010050A2847FFF1CBFFFFE01000000A2102063A7 -S31540010060C2060000A2847FFF1CBFFFFE8210200251 -S31540010070C2262008A4062004C28480208088600409 -S3154001008002BFFFFE01000000C0262008C026000076 -S31540010090A6102001C2848020833860148208603F04 -S315400100A080A0600122800093A604E0018210200313 -S315400100B0C2262008C2848020808860010280000711 -S315400100C080886004C2860020C284802080886001C6 -S315400100D012BFFFFD8088600402BFFFFB808860027B -S315400100E002BFFFF901000000C0262008C0262004F7 -S315400100F080A4E0010480000821100080C284802091 -S315400101008208608080A06001028000AE010000008C -S3154001011021100080DA4C20F0DA260000C2848020CB -S315400101208208600480A060010280009A01000000FC -S31540010130C284802080A4E001048000208210200136 -S31540010140A210200180A440131680000D2B100080C0 -S31540010150A81420F0E00560E8901000114000247AD0 -S3154001016092100010C24D0008A2046001C226000090 -S3154001017080A4401306BFFFFA90100011C28480206C -S315400101808208608080A06001028000920100000028 -S31540010190C2848020833860148208603F80A0401367 -S315400101A002800004010000007FFFC4159010200664 -S315400101B0C284802082102001C226200CDA8480204D -S315400101C0808B60011280006801000000821020834C -S315400101D0C226200880A4E0010280005201000000EE -S315400101E0C28480208088640002BFFFFE01000000B7 -S315400101F0C284802080886001028000530100000093 -S3154001020080A4E00124800012A2102000C284802034 -S315400102108330601A80A04013028000040100000070 -S315400102207FFFC3F790102009C28480208088610037 -S315400102300280005501000000C2848020808864004D -S315400102400280004D01000000A210200080A440134E -S315400102501680001203100080A81060F02B10008059 -S31540010260E08600209010001140002437D20560E856 -S31540010270C24D0008A204600180A040100280000423 -S315400102809010200C7FFFC3DE0100000080A44013C4 -S3154001029006BFFFF40100000080A4E0010480000FC6 -S315400102A001000000C28480208088610012800042E3 -S315400102B001000000C28480208330601A80A0600063 -S315400102C01280003A01000000C284802080886400C8 -S315400102D01280003301000000C284802080886001C2 -S315400102E01280001D01000000C02620083080003C1D -S315400102F0C0260000C2848020833860148208603F93 -S3154001030080A0401322BFFFFBA604E00180A4E001C8 -S3154001031034BFFF67A604FFFF10BFFF6682102003AC -S31540010320C28480208088600112BFFFB201000000B4 -S31540010330C28480208088600102BFFFFA010000006C -S3154001034030BFFFAC7FFFC3AE9010200810BFFFAE99 -S3154001035080A4E0017FFFC3AA9010200CC02620088C -S315400103603080001F7FFFC3A69010200710BFFF9962 -S31540010370821020837FFFC3A29010200B10BFFFB4D1 -S31540010380A21020007FFFC39E9010200A30BFFFAB12 -S315400103907FFFC39B9010200130BFFF667FFFC3984C -S315400103A09010200B30BFFFCD7FFFC3959010200EDC -S315400103B030BFFFC67FFFC3929010200D30BFFFBEF6 -S315400103C07FFFC38F9010200410BFFF532110008080 -S315400103D07FFFC38B9010200530BFFF6E81C7E008B9 -S315400103E091E8200017100143DA02E08090022010C4 -S315400103F09B2B60029812E080D023000DC202E08060 -S3154001040082006001C222E08081C3E0080100000051 -S31540010410C0220000C022204082103FFFC222200C91 -S315400104209A10200103100143DA20608081C3E0085D -S31540010430010000009DE3BF7803100144F02060CC29 -S315400104407FFFC365110040347FFFFFF29010001813 -S31540010450A010200123100040921000104000298F67 -S31540010460901463E4A004200180A4200F04BFFFFC84 -S3154001047092100010C20620208330601CAE0060013D -S31540010480AC10200080A58017168000ED0300003FC8 -S31540010490B81063FE2B1001430300002AB61062AA6E -S315400104A0BA102001B410001CB2156080832DA00C37 -S315400104B080A5E00114800119A600401880A5A0007E -S315400104C01280010A01000000F824E008C204E00895 -S315400104D080A0401C02800004010000007FFFC34849 -S315400104E090102001F824E040C204E04080A0401C66 -S315400104F002800004010000007FFFC34190102002EA -S31540010500C204E00880A0600012BFFFFE01000000A7 -S31540010510C205608080A0601002800005251001435D -S315400105207FFFC3379010200325100143A0102001FF -S31540010530A414A080A2102020832C20029A244010CB -S31540010540D8048001A004200180A3000D028000048C -S31540010550901020047FFFC32A0100000080A4200FD1 -S3154001056004BFFFF7832C2002FA256080F624C000E1 -S31540010570F424E040C204C00080A0401B0280000475 -S31540010580A010001A7FFFC31E90102005C204E04050 -S3154001059080A0401002800004010000007FFFC318C4 -S315400105A090102005F424E008C204E00880A0600011 -S315400105B012BFFFFE01000000C205608080A06010EE -S315400105C002800005251001437FFFC30D90102006D0 -S315400105D025100143A0102001A414A080A210201FC1 -S315400105E09B2C2002C204800D80A04011A004200152 -S315400105F0A2047FFE02800004901020077FFFC30003 -S315400106000100000080A4200704BFFFF79B2C2002B5 -S31540010610A4066028A210201CA0102005C204800058 -S3154001062080A04011A404A004A2047FFE028000041D -S31540010630901020087FFFC2F201000000A0843FFF16 -S315400106401CBFFFF701000000FA27BFE8C207BFE859 -S3154001065082006001C227BFECDA07BFEC9A03600152 -S31540010660DA27BFF0C207BFF082006001C227BFF49C -S315400106709A102006DA27BFD8C024C000C024E04023 -S31540010680FA256080A0102002E024E040E024E00842 -S31540010690834440008088610002800005010000001B -S315400106A0805000018050000180500001C207BFD830 -S315400106B0C227BFDCDA07BFD880A3600602800004E8 -S315400106C0010000007FFFC2CE9010200AE024E0081E -S315400106D001000000C207BFD8C227BFDCDA07BFD876 -S315400106E080A3600602800004010000007FFFC2C4AF -S315400106F09010200AE024E00801000000C027BFDC7A -S31540010700C207BFDC80A06000128000960100000095 -S31540010710C204E00880A0600012BFFFFE0100000095 -S31540010720C205608080A06004028000050300003F8E -S315400107307FFFC2B39010200D0300003FC024E0406C -S31540010740821063FEC224E008031001439A1020017F -S31540010750DA206080400003E801000000400003E821 -S3154001076090122F0082103FFFC224E040C204E040B5 -S3154001077080A0600002BFFFFE01000000C20560804C -S3154001078080A0600202800004A01560807FFFC29CA9 -S315400107909010200EC204200480A0601F0280000435 -S315400107A0010000007FFFC2969010200F400003D247 -S315400107B0A8100010400003D290023F00A010200272 -S315400107C0A4102020400003CC01000000400003CCCF -S315400107D090023F00C2056080A204200180A0401122 -S315400107E002800004901020107FFFC28501000000A6 -S315400107F0832C20029A248010D8050001A0100011F4 -S3154001080080A3000D02800004901020117FFFC27C5E -S315400108100100000080A4200F04BFFFEB010000008F -S31540010820C024E040AC05A00182103FFFC224E00C89 -S3154001083080A5801706BFFF1F832DA00C80A5E00170 -S315400108400480004B01000000C0262024C20620245B -S3154001085080A060001280003F0100000021040000DA -S31540010860E0262024C206202480A0401002800005F4 -S31540010870821020017FFFC262901020148210200155 -S31540010880C2262020C0262024C206202480A0401053 -S3154001089002800004010000007FFFC259901020151C -S315400108A0C0262020C0262024C206202480A0600025 -S315400108B0128000240100000082102002C22620205E -S315400108C0DA062020808B60020280001B01000000B6 -S315400108D0C0262020C2062020808860020280002493 -S315400108E001000000308000117FFFFECA9010001306 -S315400108F09B2DA01CDA24E024C204E0248330601C32 -S3154001090080A0401602BFFEF1010000007FFFC23CFD -S315400109109010201230BFFEED7FFFC23490100016BA -S3154001092010BFFEE880A5A0007FFFC23590102018B9 -S315400109303080000F7FFFC2329010201730BFFFE595 -S315400109407FFFC22F9010201610BFFFDD82102002BC -S315400109507FFFC22B9010201310BFFFC2210400005D -S315400109607FFFC2279010200B30BFFF6A81C7E00886 -S3154001097091E8200003100143DA0060C8C0236008F3 -S3154001098081C3E008901020009DE3BF902F100144E1 -S31540010990E205E0CCA004610027100143C204200413 -S315400109A0F024E0C87FFFC21190102010030180009F -S315400109B0DA04200482106020808B40011280010DF0 -S315400109C001000000DA046100DA27BFF0C2046100C9 -S315400109D080A3400102800005821020017FFFC208EA -S315400109E09010200282102001C2242004DA04610002 -S315400109F0DA27BFF0C204610080A3400102800120D2 -S31540010A0001000000C0242004DA046100DA27BFF0A7 -S31540010A10C204610080A340010280000580A7200036 -S31540010A207FFFC1F79010200480A72000128000B7F5 -S31540010A3080A72001B010200180A6001A1680001759 -S31540010A40A8102001108000052510004280A6001A3A -S31540010A5016800013DA04E0C8A206C0189014A174E7 -S31540010A609210001180A4601F14BFFFF9B006200147 -S31540010A704000280A01000000D805E0CCC20320400E -S31540010A809B2D00118210400DC223204080A6001AE2 -S31540010A9006BFFFF3A206C018DA04E0C89606A00313 -S31540010AA0C0236004833AE01FC023601098103FFFC3 -S31540010AB08330601EAA02C001D8236014D823600C7B -S31540010AC0A2102000AD3D600280A720000280008A6E -S31540010AD0A810200180A4401C168000ECC204E0C886 -S31540010AE080A7200104800015B010200080A5A00039 -S31540010AF00480001380A0001C9B2C6010832C60187E -S31540010B008210400D992C60088210400C82104011D1 -S31540010B10993D6002DA04E0C8C2236020B006200194 -S31540010B2080A72001048000059A03600480A3001871 -S31540010B3014BFFFFA0100000080A0001CB0603FFF17 -S31540010B4080A6001A16800016C204E0C8250180005E -S31540010B5080A72000028000058206C01880A72001D8 -S31540010B60028000848206C011C2242004D804E0C851 -S31540010B70832D00189B3E4018C2232008808B6001BC -S31540010B80128000859A10000CB006200180A6001A3A -S31540010B9006BFFFF180A72000C204E0C8C02060085C -S31540010BA0808E600112800009B0102000B00620013D -S31540010BB080A6201F14800005833E4018808860016E -S31540010BC022BFFFFCB006200180A72000028000065C -S31540010BD08206C01880A72001028000048216E02008 -S31540010BE08206C01182106020C2242004DA04E0C8C3 -S31540010BF0832D0018C2236008C203600880A06000EC -S31540010C0012BFFFFE01000000C2042004808860205C -S31540010C100280009801000000DA042004030100006C -S31540010C20808B40010280009001000000DA0420041C -S31540010C3003008000808B4001028000880100000093 -S31540010C40C2042008C227BFF0DA04200CDA27BFF419 -S31540010C50C204E0C8992D0018D82060089A100001F6 -S31540010C60C203600880A0600012BFFFFE01000000C1 -S31540010C70C2042004808860200280007501000000C3 -S31540010C80DA04200403010000808B40010280006DDC -S31540010C9001000000DA04200403008000808B40013B -S31540010CA00280006501000000DA042008C207BFF097 -S31540010CB080A0400D02800004010000007FFFC1506A -S31540010CC09010200EDA04200CC207BFF480A0400D1C -S31540010CD002800005030180007FFFC1499010200F6B -S31540010CE003018000C224200480A7200012BFFF7A9E -S31540010CF0A204600180A4600004BFFF7B80A720019D -S31540010D0010800062C204E0C80280003D111000421A -S31540010D10B010200080A6001C16BFFF60A81020015D -S31540010D20108000052510004280A6001C16BFFF5CFE -S31540010D30DA04E0C8A206C0189014A17492100011FA -S31540010D4080A4601F14BFFFF9B0062001400027535D -S31540010D5001000000D805E0CCC20320409B2D0011C4 -S31540010D608210400DC223204010BFFFF180A6001C17 -S31540010D70F6242004D804E0C8832D00189B3E401871 -S31540010D80C2232008808B600122BFFF81B00620016B -S31540010D909A10000CC203600880A0600012BFFFFEDB -S31540010DA001000000DA04200403010000808B4001A9 -S31540010DB00280001E01000000DA04200403008000C6 -S31540010DC0808B40010280001601000000E4242004CB -S31540010DD0C20420048088401222BFFF6DB006200164 -S31540010DE07FFFC1079010200710BFFF69B0062001A1 -S31540010DF07FFFC1039010200130BFFEF39012217492 -S31540010E00400027269210001BDA05E0CC832F001BF9 -S31540010E10C223604010BFFF22DA04E0C87FFFC0F85A -S31540010E209010200630BFFFEA7FFFC0F590102005E5 -S31540010E3030BFFFE27FFFC0F29010200D30BFFF9B15 -S31540010E407FFFC0EF9010200C30BFFF937FFFC0ECB7 -S31540010E509010200B30BFFF8B7FFFC0E99010200A16 -S31540010E6030BFFF787FFFC0E69010200930BFFF708A -S31540010E707FFFC0E39010200830BFFF687FFFC0E0CE -S31540010E809010200330BFFEE0C020600CDA05E0CCB4 -S31540010E90C023604082103FFFC223600C81C7E00837 -S31540010EA091E820009DE3BF983B100144E60760CCE2 -S31540010EB07FFFC0CE90102011C024E01CC204E01C6C -S31540010EC080A060000280004801000000C204E01CCE -S31540010ED08330601B80A0401A0A80003F0100000059 -S31540010EE0A410200080A4801A1A8000422D100143CC -S31540010EF0AA102001AE15A080A32CA002E006401145 -S31540010F007FFFFD4490100013A804A0019B2D4012C1 -S31540010F10832D20108210400DC224E01C9A103FFF01 -S31540010F20DA24E040D80600119A10201FDA23200463 -S31540010F30A0043FFFDA230000A12C20048204000C08 -S31540010F409A102005DA206010C0206014EA2060184B -S31540010F509A100001C203601080A0600012BFFFFE1C -S31540010F6001000000A004000CC204201080A0600013 -S31540010F7002BFFFFE01000000C0242018C205A08068 -S31540010F8080A06002028000069A04A011900480129B -S31540010F907FFFC09B900220039A04A011C205E00482 -S31540010FA080A0400D22800006A410001490048012F7 -S31540010FB07FFFC09390022004A4100014C024E01CBB -S31540010FC080A5001A0ABFFFCEA32CA0021080000AFA -S31540010FD0DA0760CC7FFFC08A9010200210BFFFC2A3 -S31540010FE0A41020007FFFC0869010200130BFFFB8BB -S31540010FF0DA0760CCC023604082103FFFC223600CF9 -S3154001100081C7E00891E820009DE3BF987FFFC08B30 -S315400110100100000080A220000280002680A6200058 -S3154001102012800029010000007FFFC08401000000FA -S31540011030912A20047FFFC06D900220034000186D65 -S315400110400100000080A220001280002B0100000058 -S315400110504000182B01000000400017E40100000089 -S31540011060400002270100000080A6A0001280002D4A -S31540011070031001447FFFC071B41060D0912A200251 -S31540011080C206800880A060001280003080A6200041 -S3154001109012800039010000004000048E010000006A -S315400110A040001E0201000000400015C181E8000019 -S315400110B07FFFC0491100400C80A6200002BFFFDB24 -S315400110C0010000007FFFC0F5901000197FFFC05B53 -S315400110D001000000912A20047FFFC04490022003B2 -S315400110E0400018440100000080A2200002BFFFD941 -S315400110F0010000007FFFC04290102001400018000F -S3154001110001000000400017B901000000400001FC49 -S315400111100100000080A6A00002BFFFD703100144D2 -S3154001112040001DED01000000031001447FFFC04354 -S31540011130B41060D0912A2002C206800880A06000C7 -S3154001114002BFFFD480A620007FFFC03C0100000003 -S315400111507FFFC03AA0100008912A2002C2068008EB -S315400111609FC040009010001080A6200002BFFFCB18 -S31540011170010000007FFFC0D99010001940000455BE -S315400111800100000040001DC9010000004000158813 -S3154001119081E800000100000003100143DA0060CC41 -S315400111A09A036001DA2060CC81C3E00801000000A7 -S315400111B09DE3BF987FFFC00811004044D806200830 -S315400111C082103FFFC2262004DA060000C206000054 -S315400111D080A340010280006FA60B20078210201FCA -S315400111E0C2262004C226000080A4E000028000330B -S315400111F082100018A2100013C0206018A2847FFF3D -S3154001120012BFFFFE82006010A210200080A440138E -S315400112101680002B80A4E001A810200FA010001812 -S315400112207FFFBFF290100011C0242010E824201443 -S3154001123082102006C2242018DA04201080A3600FF1 -S3154001124002800004010000007FFFBFED90102003E3 -S31540011250E82420189A10200EC204201080A0400DC8 -S3154001126012BFFFFE010000009A837FFF1CBFFFFBF8 -S31540011270A4100010C204201080A0600F12BFFFFE10 -S3154001128001000000C20420188088601002800035E9 -S3154001129082102010C224A018DA042018808B601016 -S315400112A01280003801000000A204600180A44013AE -S315400112B006BFFFDCA004201080A4E00114800010CA -S315400112C080A4E0000280000782100018A2100013DB -S315400112D0C0206018A2847FFF12BFFFFE820060100B -S315400112E021100144C20420CC80A060000280002D60 -S315400112F0111000441080000D921000197FFFBFBBF2 -S31540011300901020088210200FC22620189A10202FF4 -S31540011310DA262028C206202080A0600D12BFFFFEDB -S3154001132080A4E00030BFFFE8400025DC9012219800 -S315400113307FFFFC38D00420CC82102001832840193D -S31540011340DA0420CCC22360409810200FD8262014FE -S315400113508210200DC2262018A7800000308000117F -S315400113607FFFBFA79010200482102010C224A0182E -S31540011370DA042018808B601022BFFFCDA2046001E1 -S315400113807FFFBF9F9010200510BFFFC9A2046001D7 -S315400113907FFFBF9B9010200110BFFF928210201F3C -S315400113A081C7E00881E8000000000000000000005D -S315400113B000000000000000000000000000000000E6 -S315400113C001000000010000000100000001000000D2 -S315400113D0010000000100000081C3E0080100000097 -S315400113E001000000010000000100000001000000B2 -S315400113F0010000000100000081C3E0080100000077 -S315400114000100000001000000010000000100000091 -S31540011410010000000100000081C3E0080100000056 -S315400114200100000001000000010000000100000071 -S31540011430010000000100000081C3E0080100000036 -S31540011440D482018090A2000916BFFFFE9612800B3E -S3154001145081C3E0089010000BD48201C090A200091C -S3154001146016BFFFFE9612800B81C3E0089010000B59 -S3154001147090A22004C0A201A090A22004C0A201A073 -S3154001148090A22004C0A201A090A22004C0A201A063 -S31540011490C0A2018090A2200414BFFFF70100000002 -S315400114A081C3E0080100000090A22004C0A201E02F -S315400114B090A22004C0A201E090A22004C0A201E0B3 -S315400114C090A22004C0A201E0C0A201C090A22004C3 -S315400114D014BFFFF70100000081C3E00801000000CE -S315400114E0981000089610000A98A3200814BFFFFF21 -S315400114F0D43B00099810000898A3200814BFFFFFA9 -S31540011500C01B00099810000898A32004D6030009BF -S3154001151080A2C00A1280000698A3200434BFFFFDB2 -S31540011520D603000981C3E0089010200090102001E5 -S31540011530981000089610000A98A3200814BFFFFFD0 -S31540011540D43B00099810000898A32004D60300094B -S3154001155080A2C00A1280000698A3200434BFFFFD72 -S31540011560D603000981C3E0089010200090102001A5 -S315400115709810000898A32004D2A301A0DA8301A001 -S3154001158080A340091280000698A3200414BFFFFCE3 -S31540011590D2A301A081C3E008901020009010200141 -S315400115A09A1000089AA3400AD6A34180D883418065 -S315400115B0981B000B988B0009128000069AA3400ADB -S315400115C014BFFFFBD6A3418081C3E00890102000E1 -S315400115D0901020019A1000089AA3400BD8A241CD41 -S315400115E0C48241CD8418800C8488800A128000060A -S315400115F09AA3400B14BFFFFBD8A241CD81C3E0089B -S315400116009010200090102001010000000100000010 -S31540011610010000001310008092126138D40240008C -S3154001162080A2A0011280000780A0A002D40240003F -S31540011630D4024000952AA002108000050100000056 -S315400116403280000381E80000D402400081E00000BE -S3154001165093480000818A602023100045A2146278D5 -S31540011660A40460040100000081C4400081CC8000D4 -S3154001167091D0200191D020012680000590002001C3 -S3154001168090222001912A2001912A200281C3E0085B -S315400116900100000081C3E008D082004081C3E00818 -S315400116A0D2A2004081C3E008D082018081C3E00814 -S315400116B0D2A2018081C3E008D08201A081C3E008A3 -S315400116C0D2A201A081C3E008D08201C081C3E00853 -S315400116D0D2A201C081C3E008D08201E081C3E00803 -S315400116E0D2A201E081C3E008D2A2000081C3E00892 -S315400116F0D082000081C3E00891480000818A000041 -S3154001170001000000010000000100000081C3E00863 -S315400117100100000081C3E008C0A000A081C3E00829 -S31540011720C0A000C081C3E008D01A0000010000003B -S31540011730010000000100000001000000010000005E -S315400117409DE3BF701310006DCD1A6160CD3FBFE0C0 -S31540011750111000801B100080C91B61E0C51A21D8F9 -S31540011760C11FBFE095A088C4D53FBFF0D91FBFF0C8 -S3154001177003100080D11861E881AB0A4801000000DE -S315400117800380002BC13FBFD8F91FBFD8B5A0055C68 -S31540011790F53FBFF0ED1FBFF0F11FBFF0A5A589587A -S315400117A0E91FBFE0A1A488D41510006DA1A00130A6 -S315400117B0DD1AA16881AC0ACE010000000D80002D22 -S315400117C0F53FBFD0C51FBFD083A018C291A0492104 -S315400117D099A01928D51FBFE091A308CA1710006D1B -S315400117E091A00128FD1AE17081AA0ADE01000000DC -S315400117F00D80002F01000000400001AE01000000F5 -S315400118004000020C0100000080A22000128000313D -S3154001181001000000400002610100000080A220009A -S315400118200280003501000000308000317FFFBE7428 -S3154001183090102001F91FBFD8B5A0055CF53FBFF058 -S31540011840ED1FBFF0F11FBFF0A5A58958E91FBFE005 -S31540011850A1A488D41510006DA1A00130DD1AA1689C -S3154001186081AC0ACE010000001BBFFFD7F53FBFD0B8 -S315400118707FFFBE6390102002C51FBFD083A018C250 -S3154001188091A0492199A01928D51FBFE091A308CA63 -S315400118901710006D91A00128FD1AE17081AA0ADE98 -S315400118A0010000001BBFFFD5010000007FFFBE54B1 -S315400118B0901020034000017F01000000400001DD3F -S315400118C00100000080A2200002BFFFD301000000FA -S315400118D07FFFBE4B010000004000023001000000C6 -S315400118E080A2200002800004010000007FFFBE4468 -S315400118F09010200581C7E00881E800009DE3BF986C -S315400119007FFFFF7D210000047FFFFF7D90120010C5 -S315400119107FFFFF79B0102000808A00100280000B03 -S315400119209010200040000267010000007FFFBE4387 -S3154001193001000000912A20047FFFBE2C900220085E -S315400119407FFFFF800100000081C7E00881E80000B9 -S31540011950191000809813217811100200921020006E -S31540011960150FF76C9412A3D7D03B0000D42320085F -S31540011970C11B0000C503200887A089220100000081 -S3154001198089A005408DA0892281A8CA2601000000B0 -S3154001199033800003901020009010200181C3E0089D -S315400119A001000000C11A0000C51A400089A0084282 -S315400119B081C3E008C93A8000C11A0000C51A400037 -S315400119C089A0094281C3E008C93A80001910008004 -S315400119D098132178D0230000D2232008C1030000A8 -S315400119E0C303200885A00D2181C3E008C53A8000C4 -S315400119F0C11A0000C51A400089A009C2C93A80002F -S31540011A0081C3E00801000000C11A000085A005401D -S31540011A10C53A400081C3E008010000000100000012 -S31540011A20010000000100000001000000010000006B -S31540011A30010000000100000001000000010000005B -S31540011A40010000000100000001000000010000004B -S31540011A50010000000100000001000000010000003B -S31540011A60010000000100000001000000010000002B -S31540011A70010000000100000001000000010000001B -S31540011A80010000000100000001000000010000000B -S31540011A9001000000010000000100000081A00020BB -S31540011AA081C3E00801000000C11A000081C3E008BB -S31540011AB001000000C51A000089A009C2C93A4000C8 -S31540011AC081C3E00801000000131000809212617882 -S31540011AD0D0224000C102400085A01900C53A40000D -S31540011AE081C3E008D01A4000131000809212617839 -S31540011AF0D0224000C102400085A01880C522400086 -S31540011B0081C3E008D0024000151000809412A178EC -S31540011B10D03A8000C11A800085A01A40C5228000B3 -S31540011B2081C3E008D0028000151000809412A1788C -S31540011B30D0228000C102800085A01A20C5228000E3 -S31540011B4081C3E008D0028000151000809412A1786C -S31540011B50D0228000C102800081A01920C13A8000B4 -S31540011B6081C3E008D01A8000151000809412A17834 -S31540011B70D03A8000C11A800081A018C0C1228000DD -S31540011B8081C3E008D0028000151000809412A1782C -S31540011B90D0228000CB0280008DA00025CD2280007E -S31540011BA081C3E008D0028000151000809412A1780C -S31540011BB0D0228000CB0280008DA000A5CD228000DE -S31540011BC081C3E008D0028000151000809412A178EC -S31540011BD0D0228000CB0280008DA00125CD2280003D -S31540011BE081C3E008D0028000191000809813217843 -S31540011BF0D03B0000D43B2008C11B0000C51B200878 -S31540011C0081A80A420100000033800009901020009B -S31540011C1029800007901020012D8000059010200298 -S31540011C202F8000039010200391D0200081C3E0084B -S31540011C30010000001910008098132178D03B000064 -S31540011C40D43B2008C11B0000C51B200881A80AC23D -S31540011C500100000033BFFFF69010200029BFFFF4BA -S31540011C60901020012DBFFFF2901020022FBFFFF0F0 -S31540011C709010200391D020001910008098132178EC -S31540011C80D0230000D2232008C1030000C30320084B -S31540011C9081A80A210100000033BFFFE59010200012 -S31540011CA029BFFFE3901020012DBFFFE190102002D4 -S31540011CB02FBFFFDF9010200391D020001910008024 -S31540011CC098132178D0230000D2232008C1030000B5 -S31540011CD0C303200881A80AA10100000033BFFFD435 -S31540011CE09010200029BFFFD2901020012DBFFFD0B8 -S31540011CF0901020022FBFFFCE9010200391D02000DC -S31540011D001910008098132178D03B0000D43B20085D -S31540011D10C11B0000C51B200889A008C2C93B0000A1 -S31540011D2081C3E008D01B0000191000809813217868 -S31540011D30D0230000D2232008C1030000C30320089A -S31540011D4085A00821C523000081C3E008D003000017 -S31540011D501910008098132178D0230000D22320083F -S31540011D60C1030000C303200885A008A1C5230000C4 -S31540011D7081C3E008D0030000191000809813217830 -S31540011D80D0230000D2232008C1030000C30320084A -S31540011D9085A00921C523000081C3E008D0030000C6 -S31540011DA01910008098132178D0230000D2232008EF -S31540011DB0C1030000C303200885A009A1C523000073 -S31540011DC081C3E008D00300001910008098132178E0 -S31540011DD0D0230000C103000083A00520C3230000D7 -S31540011DE081C3E008D0030000131000809212619075 -S31540011DF0C51A6008C11A400089A0084091A108C2CD -S31540011E0095A209C495A2894281C3E008D53A00004A -S31540011E1013100080921261B0C1024000C3026004F7 -S31540011E2085A0082087A088A189A0C9A289A10921E6 -S31540011E3081C3E008C92200009610200213100080D9 -S31540011E4092126190151000809412A190D502400023 -S31540011E50D7028000D5220000D8020000131000806E -S31540011E60921261B096A2E00112BFFFF90100000093 -S31540011E7081C3E008010000001310008092126190B6 -S31540011E80151000809412A1B0C1028000C51A6010DD -S31540011E9083A0082089A088C08BA109A18DA10942F0 -S31540011EA08FA1492691A0054681C3E008D13A000099 -S31540011EB01110008090122188C11A0000C51A000035 -S31540011EC0C91A0000CD1A0000D11A0000D51A000027 -S31540011ED0D91A0000DD1A0000E11A0000E51A0000D7 -S31540011EE0E91A0000ED1A0000F11A0000F51A000087 -S31540011EF0F91A0000FD1A000081C3E0080100000044 -S31540011F0029100080A815215827100080A614E1C089 -S31540011F10C12CC000E604C000A134E00EA00C20078D -S31540011F20A0A42002AE1020002D100080AC15A1C047 -S31540011F30AE05E001AC05A008C1358000C12D000009 -S31540011F40EA050000AB35600DAA8D600112BFFFF9AD -S31540011F5001000000808000100280002F2B3C1FFFF3 -S31540011F60AA1563FFA60CC015E6250000C10D0000A9 -S31540011F702B100080AA1561CC2D100047AC15A3E0AB -S31540011F80AE25E001E0054000E025800081D8200033 -S31540011F9001000000010000000100000001000000F6 -S31540011FA001000000010000000100000001000000E6 -S31540011FB001000000010000000100000001000000D6 -S31540011FC001000000010000000100000001000000C6 -S31540011FD001000000010000000100000001000000B6 -S31540011FE00000000080A5C00012BFFFE6AA056008F8 -S31540011FF0C12D0000E60500002B03C000A614C01544 -S31540012000E6250000C10D000081C4400081CC80005E -S315400120100100000081C4800081CCA00401000000C1 -S315400120200100000081C3E008915800000100000052 -S315400120301110008090122158C10A0000C0220000F0 -S31540012040C10A0000C12A0000D40200001300038027 -S31540012050942A800980A0000A3280004D9010200306 -S315400120601303E000D223BFA0C023BFA4C10BBFA06E -S31540012070C023BFA0151000809412A170C102800038 -S315400120800100000001000000C10BBFA0C10BBFA4AD -S3154001209083A00520C12BBFA0D003BFA0808A220008 -S315400120A02280003B901020049010200015100080E3 -S315400120B09412A140C5028000C902A008D102A00C19 -S315400120C01310008092126170C70240008DA08944AE -S315400120D081A98AC8010000000380000501000000B3 -S315400120E0901020011080002A01000000C5028000E6 -S315400120F0C902A008D102A00C13100080921261708F -S31540012100CB0240008DA0894481A98AC80100000004 -S315400121100380000501000000901020011080001C82 -S315400121200100000025100080A414A168C11C800094 -S31540012130C51C800080A000003280000685A008C032 -S3154001214081A80AC2010000001380000301000000BB -S31540012150901020050100000025100080A414A168FC -S31540012160C11C8000C51C800080A000000100000049 -S315400121703280000685A008C081A80AC2010000007D -S3154001218013800003010000009010200701000000A9 -S3154001219081C3E00801000000901020019544000031 -S315400121A09532A01E940AA00380A2800002800040BE -S315400121B09010200080A2A0030280003D13100080F1 -S315400121C0921261F0C11A4000C51A6008FD026018FA -S315400121D095A0003E99A0003E9DA0003E170000C07C -S315400121E09612E078A182C0000100000001000000C3 -S315400121F00100000001000000010000000100000094 -S3154001220081A0002083A0002195A0002A99A0002C3E -S315400122109DA0002E170000C09612E07CA182C0004E -S315400122200100000001000000010000000100000063 -S31540012230010000000100000085A0002287A00023C4 -S31540012240A180000001000000010000000100000023 -S3154001225001000000010000000100000089A00842C1 -S31540012260A9A2883ED93A4000DD224000CD1A60102D -S31540012270D102600881A90A46010000000380000CD2 -S3154001228081AD0A2801000000038000099344000043 -S315400122909332601B920A60079010200080A2A00131 -S315400122A002800003902260079022600481C3E00807 -S315400122B001000000C12BBFA081C3E008D003BFA02D -S315400122C0D023BFA081C3E008C10BBFA0010000001D -S315400122D09DE3BF6040001B17B0102000913A200AD1 -S315400122E0900A200380A220011280111101000000F2 -S315400122F07FFFBBBE9010200D190C40291B23CD1B1F -S315400123009410200096102000981320069A13609B83 -S31540012310D43FBFE0D43FBFC0D43FBFE87FFFFF42B9 -S31540012320D83FBFF0900A3000032804009012208065 -S315400123308210600FC22200001B1000479002200449 -S315400123409A1363009A234008191000009B3B6002D0 -S31540012350032784009A13400C82106010C222200485 -S315400123607FFFFED4DA2200007FFFFFD61103E00093 -S315400123702D100080C025A1C07FFFFDD49010200004 -S31540012380809200091280000601000000C205A1C02A -S3154001239080A0600002800004010000007FFFBB981E -S315400123A09010200B7FFFFDC990103FFA03300600C5 -S315400123B080A200011280000480A2600002800EDB30 -S315400123C0010000007FFFBB8E9010200B7FFFFDBFF9 -S315400123D09010201403100D0080A200011280000409 -S315400123E080A2600002800ECC010000007FFFBB840A -S315400123F09010200B7FFFFDB5901020620310162030 -S3154001240080A200011280000480A2600002800EBDFD -S31540012410010000007FFFBB7A9010200B7FFFFDB3C8 -S31540012420901020050310280080A2000112800006AA -S3154001243001000000C205A1C080A060000280000426 -S31540012440010000007FFFBB6E9010200B7FFFFF9DB8 -S315400124501103C000111C00007FFFFDAC921020004B -S31540012460031FFFFF821063FF80A200011280000A52 -S315400124701B000070C205A1C09A13601F190000100D -S315400124808208400D9813201080A0400C0280000560 -S31540012490113C00007FFFBB5A9010200C113C0000FC -S315400124A07FFFFD9A921020000320000080A20001C8 -S315400124B01280000A1B000070C205A1C09A13601F5A -S315400124C0190000108208400D9813201080A0400C7E -S315400124D002800004010000007FFFBB499010200CE0 -S315400124E0C025A1C0901020007FFFFD8892102000DA -S315400124F080A220001280000601000000C205A1C092 -S3154001250080A0600002800005110144007FFFBB3CB2 -S315400125109010200C11014400132840009012230210 -S315400125207FFFFD7A9212600180A220001280000690 -S3154001253001000000C205A1C080A060002280000504 -S315400125401111FFFF7FFFBB2E9010200C1111FFFFD1 -S315400125507FFFFD76901223FF0300007F821063FF09 -S3154001256080A200011280000601000000C205A1C040 -S3154001257080A06000028000052F1000857FFFBB20F0 -S315400125809010200C2F1000857FFFFD60D01DE0C804 -S31540012590031FFFFF821063FF80A200011280000A21 -S315400125A01B000070C205A1C09A13601F19000010DC -S315400125B08208400D9813201080A0400C028000052F -S315400125C0031000857FFFBB0E9010200C0310008581 -S315400125D0D01860D8C025A1C07FFFFD4C0100000086 -S315400125E00320000080A200011280000A1B00007037 -S315400125F0C205A1C09A13601F190000108208400D40 -S315400126009813201080A0400C028000051910008507 -S315400126107FFFBAFB9010200C19100085C025A1C080 -S315400126207FFFFD3AD01B20B8031FFFFF821063FFD7 -S3154001263080A200011280000A1B000070C205A1C0E1 -S315400126409A13601F190000108208400D981320103C -S3154001265080A0400C02800005331000857FFFBAE858 -S315400126609010200C33100085C025A1C07FFFFD27A7 -S31540012670D01E60F0C205A1C08330600E820860039F -S3154001268080A0600202800004211000807FFFBADC36 -S315400126909010200C7FFFFF0B1103C000111158044D -S315400126A0C02421C07FFFFD299012223403102B0044 -S315400126B08210624680A200011280000503200000BC -S315400126C080A2400102800FC5010000007FFFBACC05 -S315400126D09010200D113C02AF7FFFFD1C901220D1BE -S315400126E0033180558210639A80A200011280000551 -S315400126F00308000080A2400102800FDB01000000B8 -S315400127007FFFBABF9010200D1111FC007FFFFD170E -S3154001271092102000031FE00080A200011280000AEF -S315400127201B000070C205A1C09A13601F190000105A -S315400127308208400D9813200880A0400C02800005B5 -S3154001274011207C017FFFBAAE9010200D11207C0133 -S31540012750C025A1C0901220307FFFFD041300010067 -S315400127600320000080A200011280000A1B000070B5 -S31540012770C205A1C09A13601F190000108208400DBE -S315400127809813200480A0400C028000040100000040 -S315400127907FFFBA9B9010200DC025A1C0901020004C -S315400127A07FFFFCF29210200080A2200012800006DA -S315400127B001000000C205A1C080A0600002800004A3 -S315400127C0010000007FFFBA8E9010200D7FFFFCE7CD -S315400127D0D01DE0C803100085DA0060C080A2000D5C -S315400127E01280000601000000C205A1C080A0600061 -S315400127F0028000051B1000857FFFBA819010200DD5 -S315400128001B1000857FFFFCD9D01B60D0031FE00061 -S3154001281080A200011280000601000000C205A1C08D -S3154001282080A0600002800005031000857FFFBA7416 -S315400128309010200D031000857FFFFCCCD01860B8A6 -S3154001284003100085DA0060A880A2000D1280000AFC -S315400128501B000070C205A1C09A13601F1900001029 -S315400128608208400D9813201080A0400C028000047D -S31540012870010000007FFFBA629010200DC025A1C063 -S315400128807FFFFCBAD01E60F0C205A1C08330600E46 -S315400128908208600380A06002028000042310008049 -S315400128A07FFFBA579010200D7FFFFE861103E0008F -S315400128B02108C6AF901420DEC02461C07FFFFCB35F -S315400128C0A01420DE80A20010128000060100000044 -S315400128D0C20461C080A06000028000052108C6AF25 -S315400128E07FFFBA479010200E2108C6AF7FFFFCB785 -S315400128F0901420DEA01420DE80A200101280000673 -S3154001290001000000C205A1C080A060002280000530 -S315400129101128C6AF7FFFBA3A9010200E1128C6AFD4 -S315400129207FFFFCAA901220DE0308C6AF821060DE4C -S3154001293080A200011280000601000000C205A1C06C -S3154001294080A06000228000051108C6AF7FFFBA2C27 -S315400129509010200E1108C6AF7FFFFC94901220DE26 -S315400129600328C6AF821060DE80A2000112800006F5 -S3154001297001000000C205A1C080A0600022800005C0 -S315400129801128C6AF7FFFBA1E9010200E1128C6AF80 -S315400129907FFFFC86901220DE0308C6AF821060DE00 -S315400129A080A200011280000601000000C205A1C0FC -S315400129B080A0600002800004010000007FFFBA1081 -S315400129C09010200E7FFFFE3F1103E00011151BC042 -S315400129D01310C82115351BC01710C82190122103A9 -S315400129E0921261419412A1037FFFFC809612E1414C -S315400129F080A220021280000601000000C205A1C08B -S31540012A0080A060000280000511351BC07FFFB9FC24 -S31540012A109010200F11351BC01310C82115151BC06E -S31540012A201710C82190122103921261419412A103F9 -S31540012A307FFFFC6E9612E14180A2200112800006C2 -S31540012A4001000000C205A1C080A06000028000050F -S31540012A50901020007FFFB9EA9010200F90102000BF -S31540012A6092102000152000007FFFFC609610200088 -S31540012A7080A220001280000601000000C205A1C00C -S31540012A8080A0600002800005191000857FFFB9DC37 -S31540012A909010200F191000851B100085D01B20D0E7 -S31540012AA07FFFFC52D41B60D880A220021280000610 -S31540012AB001000000C205A1C080A06000028000059F -S31540012AC011151BC07FFFB9CE9010200F11151BC0E9 -S31540012AD01310C82115151BE81710C82190122103A0 -S31540012AE0921261419412A1037FFFFC409612E1418B -S31540012AF080A220011280000601000000C205A1C08B -S31540012B0080A060000280000511151BE87FFFB9BC5B -S31540012B109010200F11151BE81310C82115151BC065 -S31540012B201710C82190122103921261419412A103F8 -S31540012B307FFFFC2E9612E14180A220021280000600 -S31540012B4001000000C205A1C080A06000028000050E -S31540012B5011151BE87FFFB9AA9010200F11151BE82C -S31540012B601310C82190122103921261417FFFFC1F6D -S31540012B70D41DE0C880A22003128000060100000097 -S31540012B80C205A1C080A06000028000050310008537 -S31540012B907FFFB99B9010200F0310008511151BE88C -S31540012BA01310C82190122103921261417FFFFC0F3D -S31540012BB0D41860B880A220031280000A1B0000705E -S31540012BC0C205A1C09A13601F190000108208400D6A -S31540012BD09813201080A0400C0280000511151BE8B7 -S31540012BE07FFFB9879010200F11151BE81310C821DC -S31540012BF0C025A1C090122103921261417FFFFBFBC8 -S31540012C00D41E60F080A2200212800006010000005E -S31540012C10C205A1C080A060000280000515151BE811 -S31540012C207FFFB9779010200F15151BE81710C821A3 -S31540012C30D01E60F09412A1037FFFFBEC9612E14196 -S31540012C4080A220011280000601000000C205A1C039 -S31540012C5080A060000280000515151BE87FFFB9685A -S31540012C609010200F15151BE81710C821D01DE0C87C -S31540012C709412A1037FFFFBDD9612E14180A220035E -S31540012C801280000601000000C205A1C080A06000BC -S31540012C9002800005191000857FFFB9599010200F59 -S31540012CA01910008515151BE81710C821D01B20B82F -S31540012CB09412A1037FFFFBCD9612E14180A220032E -S31540012CC01280000A1B000070C205A1C09A13601F42 -S31540012CD0190000108208400D9813201080A0400C66 -S31540012CE00280000511151BC07FFFB9459010200FCA -S31540012CF011151BC01310C82115351BC01710C8214B -S31540012D00C025A1C090122103921261419412A103E0 -S31540012D107FFFFBC99612E14180A220021280000684 -S31540012D2001000000C205A1C080A06000028000052C -S31540012D3011351BC07FFFB9329010200F11351BC0D2 -S31540012D401310C82115151BC01710C8219012210355 -S31540012D50921261419412A1037FFFFBB79612E141A2 -S31540012D6080A220011280000601000000C205A1C018 -S31540012D7080A0600002800005901020007FFFB920EE -S31540012D809010200F90102000921020001520000076 -S31540012D907FFFFBA99610200080A22000128000062A -S31540012DA001000000C205A1C080A0600002800005AC -S31540012DB01B1000857FFFB9129010200F1B10008554 -S31540012DC003100085D01B60D07FFFFB9BD41860D8D1 -S31540012DD080A220021280000601000000C205A1C0A7 -S31540012DE080A060000280000511151BC07FFFB90459 -S31540012DF09010200F11151BC01310C82115151BE883 -S31540012E001710C82190122103921261419412A10315 -S31540012E107FFFFB899612E14180A2200112800006C4 -S31540012E2001000000C205A1C080A06000028000052B -S31540012E3011151BE87FFFB8F29010200F11151BE802 -S31540012E401310C82115151BC01710C8219012210354 -S31540012E50921261419412A1037FFFFB779612E141E1 -S31540012E6080A220021280000601000000C205A1C016 -S31540012E7080A060000280000511151BE87FFFB8E0C5 -S31540012E809010200F11151BE81310C8219012210331 -S31540012E90921261417FFFFB68D41DE0C880A22003E6 -S31540012EA01280000A1B000070C205A1C09A13601F60 -S31540012EB0190000108208400D9813201080A0400C84 -S31540012EC002800005191000857FFFB8CD9010200FB4 -S31540012ED01910008511151BE81310C8219012210302 -S31540012EE0921261417FFFFB54D41B20B880A220037C -S31540012EF01280000A1B000070C205A1C09A13601F10 -S31540012F00190000108208400D9813201080A0400C33 -S31540012F100280000511151BE87FFFB8B99010200FFC -S31540012F2011151BE81310C821C025A1C09012210319 -S31540012F30921261417FFFFB40D41E60F080A22002C5 -S31540012F401280000601000000C205A1C080A06000F9 -S31540012F500280000515151BE87FFFB8A99010200FC8 -S31540012F6015151BE81710C821D01E60F09412A10355 -S31540012F707FFFFB319612E14180A2200112800006BB -S31540012F8001000000C205A1C080A0600002800005CA -S31540012F9015151BE87FFFB89A9010200F15151BE8F1 -S31540012FA01710C821D01DE0C89412A1037FFFFB2250 -S31540012FB09612E14180A220031280000A1B00007094 -S31540012FC0C205A1C09A13601F190000108208400D66 -S31540012FD09813201080A0400C028000051B1000852C -S31540012FE07FFFB8879010200F1B10008515151BE831 -S31540012FF01710C821D01B60B89412A1037FFFFB0EA6 -S315400130009612E14180A220031280000A1B00007043 -S31540013010C205A1C09A13601F190000108208400D15 -S315400130209813201080A0400C02800005110048EA48 -S315400130307FFFB8739010200F110048EA13048D15D5 -S31540013040C025A1C0901223CD7FFFFB0C921262785E -S3154001305080A220011280000601000000C205A1C025 -S3154001306080A0600002800005110048EA7FFFB86435 -S315400130709010200F110048EA13048D15901223CDAC -S315400130807FFFFB0F9212627880A220011280000618 -S3154001309001000000C205A1C080A0600002800004BA -S315400130A0010000007FFFB8569010200FC025A1C037 -S315400130B07FFFFC841103C000291001449007BFF033 -S315400130C09207BFE87FFFFA3894152120C207BFF067 -S315400130D0DA05212080A0400D1280000782152120AB -S315400130E0DA006004C207BFF480A0400D02800D598A -S315400130F0010000007FFFB842901020103710008574 -S315400131009007BFF09216E0E07FFFFA279415212041 -S31540013110C206E0E0DA05212080A340018215212084 -S31540013120128000079816E0E0DA006004C20320042A -S3154001313080A3400102800D42010000007FFFB830AC -S31540013140901020109007BFF09215E0C87FFFFA1645 -S3154001315094152120C205E0C8DA05212080A340014B -S3154001316082152120128000079815E0C8DA00600414 -S31540013170C203200480A3400102800D2C01000000FF -S315400131807FFFB81F9010201003100085921060B881 -S315400131909007BFF07FFFFA04941521201B000070B1 -S315400131A0C205A1C09A13601F190000108208400D84 -S315400131B09813201080A0400C028000042110014485 -S315400131C07FFFB80F9010201003100080C02061C00F -S315400131D07FFFFC3C901020001310008594142120A1 -S315400131E0921260B87FFFF9F09007BFF03910008561 -S315400131F0C20720B0DA04212080A340019414212083 -S3154001320012800007821720B0DA02A004C2006004CF -S3154001321080A3400102800004010000007FFFB7F84F -S31540013220901020107FFFFC271103C0009007BFF0CC -S31540013230921660F07FFFF9DC94152120C205A1C0EA -S315400132408330600E8208600380A060022110014431 -S3154001325002800004231000807FFFB7E99010201000 -S3154001326094142120C02461C09007BFE87FFFF9CEA6 -S315400132709207BFF0DA042120C207BFF080A34001C4 -S315400132801280000794142120DA02A004C207BFF479 -S3154001329080A3400102800D21010000007FFFB7D8C5 -S315400132A0901020109007BFE89216E0E07FFFF9BE2C -S315400132B094152120C206E0E0DA05212080A34001D1 -S315400132C082152120128000079816E0E0DA0060049A -S315400132D0C203200480A3400102800D0B01000000BF -S315400132E07FFFB7C7901020109007BFE89215E0C83E -S315400132F07FFFF9AD94152120C205E0C8DA052120EA -S3154001330080A3400182152120128000079815E0C84C -S31540013310DA006004C203200480A3400102800CF558 -S31540013320010000007FFFB7B69010201019100085EC -S31540013330921320B89007BFE87FFFF99B941521208F -S315400133401B000070C205A1C09A13601F190000102E -S315400133508208400D9813201080A0400C0280000482 -S31540013360211001447FFFB7A6901020107FFFFBD5A7 -S31540013370901020001310008594142120921260B8F9 -S315400133807FFFF9899007BFE8C20720B0DA04212000 -S3154001339080A340019414212012800007821720B097 -S315400133A0DA02A004C200600480A340010280000446 -S315400133B0010000007FFFB792901020107FFFFBC1F4 -S315400133C01103C0009007BFE8921660F07FFFF976BF -S315400133D094152120C205A1C08330600E8208600386 -S315400133E080A0600221100144028000042310008065 -S315400133F07FFFB7839010201094142120C02461C010 -S315400134009016E0E07FFFF9689207BFF0C206E0E060 -S31540013410DA04212080A34001941421201280000760 -S315400134208216E0E0DA02A004C200600480A34001F3 -S3154001343002800CAB010000007FFFB7719010201095 -S315400134409016E0E09207BFE87FFFF95794152120D7 -S31540013450C206E0E0DA05212080A340018215212041 -S31540013460128000079816E0E0DA006004C2032004E7 -S3154001347080A3400102800C95010000007FFFB760E8 -S31540013480901020101B100085901360D092100008F8 -S315400134907FFFF9459415212019100085C20320D0DC -S315400134A0DA05212080A340018215212012800007E0 -S315400134B0981320D0DA006004C203200480A340019F -S315400134C002800C7D010000007FFFB74D9010201057 -S315400134D01B100085901360D8921000087FFFF932C7 -S315400134E09415212019100085C20320D8DA05212020 -S315400134F080A340018215212012800007981320D80D -S31540013500DA006004C203200480A3400102800C65F6 -S31540013510010000007FFFB73A901020101B10008574 -S3154001352003100085901360D8921060D07FFFF91E7A -S31540013530941521201B000070C205A1C09A13601F7B -S31540013540190000108208400D9813201080A0400CED -S3154001355002800004211001447FFFB72990102010FA -S315400135607FFFFB5890102000111000851310008535 -S3154001357094142120901220D87FFFF90B921260D02B -S31540013580C20720B0DA04212080A3400194142120EF -S3154001359012800007821720B0DA02A004C20060043C -S315400135A080A3400102800004010000007FFFB714A0 -S315400135B0901020107FFFFB431103C00019100085B6 -S315400135C01B100085901320D0921360D8C025A1C04E -S315400135D07FFFF8F594152120C20720B0DA05212096 -S315400135E080A340018215212012800007981720B040 -S315400135F0DA006004C203200480A3400102800C1F4C -S315400136001B0000707FFFB6FE901020109016E0E080 -S31540013610921660F07FFFF8E494152120C205A1C0FF -S315400136208330600E8208600380A06002211001444D -S3154001363002800004231000807FFFB6F19010201015 -S3154001364094142120C02461C09015E0C87FFFF8D6AC -S315400136509207BFF0C205E0C8DA04212080A34001E9 -S3154001366094142120128000078215E0C8DA02A004D2 -S31540013670C200600480A3400102800B9C010000004F -S315400136807FFFB6DF901020109015E0C89207BFE883 -S315400136907FFFF8C594152120C205E0C8DA0521202F -S315400136A080A3400182152120128000079815E0C8A9 -S315400136B0DA006004C203200480A3400102800B8625 -S315400136C0010000007FFFB6CE901020109015E0C893 -S315400136D09216E0E07FFFF8B494152120C205E0C8B8 -S315400136E0DA05212080A3400182152120128000079E -S315400136F09815E0C8DA006004C203200480A34001A3 -S3154001370002800B70010000007FFFB6BD90102010B3 -S315400137109015E0C8921000087FFFF8A39415212068 -S31540013720C205E0C8DA05212080A340018215212087 -S31540013730128000079815E0C8DA006004C20320042D -S3154001374080A3400102800B5A010000007FFFB6AC06 -S315400137509010201003100085921060B89015E0C8B3 -S315400137607FFFF8919415212003000070A610601F79 -S31540013770DA05A1C0030000109A0B4013AA1060108D -S3154001378080A34015231000852510014402800004C2 -S31540013790211000807FFFB69A90102010C02421C0CE -S315400137A0901460B89207BFF07FFFF87F9414A12070 -S315400137B0C20421C08208401380A040150280000443 -S315400137C0010000007FFFB68E90102010C02421C05A -S315400137D0901460B89207BFE87FFFF8739414A12054 -S315400137E0C20421C08208401380A040150280000413 -S315400137F0010000007FFFB68290102010C02421C036 -S31540013800901460B89216E0E07FFFF8679414A12007 -S31540013810C20421C08208401380A0401502800005E1 -S31540013820131000857FFFB676901020101310008587 -S31540013830C02421C0921260C8901460B87FFFF85A24 -S315400138409414A120C20421C08208401380A04015CF -S3154001385002800005901460B87FFFB6699010201071 -S31540013860901460B8C02421C0921000087FFFF84E22 -S315400138709414A120C20421C08208401380A040159F -S3154001388002800004010000007FFFB65D9010201009 -S31540013890C02421C0901460B8921660F07FFFF842B0 -S315400138A09414A120C20421C08330600E82086003B3 -S315400138B080A06002228000051103C0007FFFB65040 -S315400138C0901020101103C0007FFFFA7E3B10008448 -S315400138D0A2176210C02421C0AA14A120A40460101A -S315400138E0A0102000A6046008B010200C920400131A -S315400138F0900400117FFFF82C94152120DA048010E2 -S3154001390098040012C2052120A004201880A340017A -S315400139101280000790102010DA032004C2056004CB -S3154001392080A3400122800005B0863FFF7FFFB63469 -S3154001393001000000B0863FFF1CBFFFEE920400135A -S31540013940C205A1C080A06000128009890100000063 -S315400139501110008490122348920220087FFFF8122A -S315400139609415212098176210C2052120DA032148B7 -S3154001397080A340011280000782152120DA03214CE1 -S31540013980C200600480A3400122800AAB031000807C -S315400139907FFFB61B901020101110008490122360F7 -S315400139A0920220087FFFF800941521209817621093 -S315400139B0C2052120DA03216080A34001128000075D -S315400139C082152120DA032164C200600480A34001EC -S315400139D002800AA41B0000707FFFB60990102010D8 -S315400139E01110008490122378920220087FFFF7EE8F -S315400139F09415212098176210C2052120DA032178F7 -S31540013A0080A340011280000782152120DA03217C20 -S31540013A10C200600480A3400102800A9C1B00007022 -S31540013A207FFFB5F790102010C025A1C011100000EE -S31540013A3092102000150FFC007FFFF8B2961020006F -S31540013A40030FFC0080A200011280000880A26000E2 -S31540013A501280000601000000C205A1C080A06000DE -S31540013A6002800005111000007FFFB5E5901020107F -S31540013A701110000092102000152FFC007FFFF8A1C5 -S31540013A80961020000310020080A200011280000857 -S31540013A9080A260001280000601000000C205A1C09C -S31540013AA080A0600002800005113000007FFFB5D480 -S31540013AB0901020101130000092102000150FFC00CC -S31540013AC07FFFF890961020000330020080A200018B -S31540013AD01280000880A260001280000601000000EA -S31540013AE0C205A1C080A0600002800005113000001F -S31540013AF07FFFB5C3901020101130000092102000B6 -S31540013B00152FFC007FFFF87F96102000032FFC0045 -S31540013B1080A200011280000880A260001280000687 -S31540013B2001000000C205A1C080A06000028000051E -S31540013B30111000007FFFB5B2901020101110000047 -S31540013B407FFFF87A130FE0000310100080A20001F6 -S31540013B501280000601000000C205A1C080A06000DD -S31540013B6002800005111000007FFFB5A590102010BE -S31540013B70111000007FFFF877130FE000030FE000FC -S31540013B8080A200011280000601000000C205A1C00A -S31540013B9080A0600022800005191000857FFFB5983E -S31540013BA09010201019100085921320E8C025A1C05D -S31540013BB09007BFF07FFFF78F9415212019100085DC -S31540013BC0C20320D8DA05212080A340018215212095 -S31540013BD012800007981320D8DA006004C20320043B -S31540013BE080A3400102800A461B0000707FFFB58416 -S31540013BF0901020111B100085921360D0C025A1C0E2 -S31540013C009007BFF07FFFF77B94152120C207BFE0E5 -S31540013C10DA05212080A34001128000078215212068 -S31540013C20DA006004C207BFE480A3400102800A3E75 -S31540013C30010000007FFFB572901020119007BFF080 -S31540013C409215E0C87FFFF76B94152120C205E0C8A5 -S31540013C50DA05212080A34001821521201280000728 -S31540013C609815E0C8DA006004C203200480A340012D -S31540013C7002800A32010000007FFFB56190102011D9 -S31540013C8003100085921060B89007BFF07FFFF75987 -S31540013C9094152120C20720B0DA05212080A34001D6 -S31540013CA08215212012800007981720B0DA0060049F -S31540013CB0C203200480A3400102800A251B00007034 -S31540013CC07FFFB54F901020119007BFF0921660F01C -S31540013CD07FFFF74894152120C205A1C01B00007043 -S31540013CE08208400D1900002080A0400C211001449B -S31540013CF002800004231000807FFFB54190102011FF -S31540013D0094142120C02461C09007BFE87FFFF73992 -S31540013D109207BFF0DA042120C207BFE880A3400121 -S31540013D201280000794142120DA02A004C207BFECD6 -S31540013D3080A3400102800A10010000007FFFB530D8 -S31540013D409010201119100085901320E89207BFE0CA -S31540013D507FFFF72894152120C20720B0DA052120DC -S31540013D6080A340018215212012800007981720B0B8 -S31540013D70DA006004C203200480A3400102800A03E2 -S31540013D801B0000707FFFB51E901020111B1000858F -S31540013D9003100085901360E8921060D0C025A1C041 -S31540013DA07FFFF7149415212019100085C20320E8DE -S31540013DB0DA05212080A340018215212012800007C7 -S31540013DC0981320E8DA006004C203200480A340016E -S31540013DD0028009F8010000007FFFB509901020110B -S31540013DE09007BFE89215E0C87FFFF702941521209E -S31540013DF0C205E0C8DA05212080A3400182152120B1 -S31540013E00128000079815E0C8DA006004C203200456 -S31540013E1080A34001028009EC010000007FFFB4F855 -S31540013E20901020071B100085921360B89007BFE8D9 -S31540013E307FFFF6F09415212025000070D805A1C01A -S31540013E409A14A01F03000010980B000D82106010F9 -S31540013E5080A3000121100144028000042310008048 -S31540013E607FFFB4E790102011C02461C09007BFE8DE -S31540013E70921660F07FFFF6DF94142120C20461C0E0 -S31540013E80820840121B00002080A0400D22800005C0 -S31540013E90031000857FFFB4DA9010201103100085CE -S31540013EA0901060D894142120C02461C07FFFF6D1C0 -S31540013EB09207BFF019100085C20320D8DA042120E9 -S31540013EC080A340019414212012800007821320D838 -S31540013ED0DA02A004C200600480A34001028008B84F -S31540013EE0010000007FFFB4C6901020111B10008511 -S31540013EF003100085901360D8921060E87FFFF6BDED -S31540013F009415212019100085C20320D0DA052120FD -S31540013F1080A340018215212012800007981320D0EA -S31540013F20DA006004C203200480A34001028008A98C -S31540013F30010000007FFFB4B2901020119016E0E01E -S31540013F40921000087FFFF6AB94152120C20720B0DE -S31540013F50DA05212080A34001821521201280000725 -S31540013F60981720B0DA006004C203200480A3400100 -S31540013F700280089D1B0000707FFFB4A190102011A4 -S31540013F80C025A1C09016E0E09215E0C87FFFF699E2 -S31540013F9094152120C205E0C8DA05212080A34001FD -S31540013FA082152120128000079815E0C8DA006004C6 -S31540013FB0C203200480A3400102800894010000004E -S31540013FC07FFFB48F901020111B100085921360B8AB -S31540013FD09016E0E07FFFF68794152120C20720B0B6 -S31540013FE0DA05212080A34001821521201280000795 -S31540013FF0981720B0DA006004C203200480A3400170 -S31540014000028008871B0000707FFFB47D901020114D -S31540014010C025A1C09016E0E0921660F07FFFF675CC -S3154001402094152120C205A1C01B0000708208400DD5 -S315400140301900002080A0400C23100080028000045B -S31540014040211001447FFFB46E901020119414212059 -S31540014050C02461C09015E0C87FFFF6669207BFF0A5 -S31540014060C205E0C8DA04212080A34001941421202E -S31540014070128000078215E0C8DA02A004C20060047B -S3154001408080A340010280086F010000007FFFB45CFD -S31540014090901020119015E0C89207BFE87FFFF655B2 -S315400140A094152120C205E0C8DA05212080A34001EC -S315400140B082152120128000079815E0C8DA006004B5 -S315400140C0C203200480A3400102800863010000006E -S315400140D07FFFB44B901020119015E0C89216E0E096 -S315400140E07FFFF64494152120C205E0C8DA05212058 -S315400140F080A3400182152120128000079815E0C84F -S31540014100DA006004C203200480A3400102800857FC -S31540014110010000007FFFB43A901020119015E0C8CD -S31540014120921000087FFFF63394152120C205E0C89E -S31540014130DA05212080A34001821521201280000743 -S315400141409815E0C8DA006004C203200480A3400148 -S31540014150028007F3010000007FFFB429901020116F -S3154001416003100085921060B89015E0C87FFFF621D4 -S3154001417094152120C20720B0DA05212080A34001F1 -S315400141808215212012800007981720B0DA006004BA -S31540014190C203200480A34001028007E61B00007091 -S315400141A07FFFB417901020119015E0C8921660F069 -S315400141B07FFFF61094152120C205A1C03100007081 -S315400141C0820840183B00002080A0401D2310014476 -S315400141D002800004211000807FFFB4099010201155 -S315400141E019100085901320B89207BFF07FFFF601A2 -S315400141F094146120C20421C0AA16201F3500001064 -S3154001420082084015A616A01080A040130280000423 -S31540014210251000857FFFB3FA90102011C02421C0DC -S315400142209014A0B89207BFE87FFFF5F2941461207D -S31540014230C20421C08208401580A0401302800004B8 -S31540014240010000007FFFB3EE90102011C02421C071 -S315400142509014A0B89216E0E07FFFF5E69414612031 -S31540014260C20421C08208401580A040130280000587 -S31540014270131000857FFFB3E29010201113100085C3 -S31540014280C02421C0921260C89014A0B87FFFF5D90E -S3154001429094146120C20421C08208401580A04013B5 -S315400142A0028000059014A0B87FFFB3D5901020116D -S315400142B09014A0B8C02421C0921000087FFFF5CD0C -S315400142C094146120C20421C08208401580A0401385 -S315400142D002800005131000857FFFB3C9901020119D -S315400142E013100085C02421C09014A0B8921260F02A -S315400142F07FFFF5C094146120C20421C08208401892 -S3154001430080A0401D2280000515203E837FFFB3BC5F -S315400143109010201115203E83170021C89412A3FF47 -S315400143209612E3A1191FC0001B00C0009A1360B08A -S3154001433098132102D43FBFD0D83FBFD8C02421C053 -S315400143409007BFD89207BFD07FFFF5AA9407BFC891 -S31540014350DA07BFC8033FFC0080A340010280070B78 -S31540014360A207BFC87FFFB3A6901020111510868300 -S31540014370170021C89412A3FF9612E3A11900400029 -S315400143801B00C0009A1360B098132102D43FBFD0DE -S31540014390D83FBFD8C025A1C09007BFD89207BFD08C -S315400143A07FFFF5949407BFC8DA046004C207BFC80B -S315400143B08090400D1280000A1B000070C205A1C00A -S315400143C09A13601F190000108208400D98132004AB -S315400143D080A0400C22800005150FFC007FFFB388AA -S315400143E090102011150FFC00170281D89412A0409D -S315400143F09612E10C9A102010190006AFD43FBFD097 -S31540014400D83FBFD8C025A1C09007BFD89207BFD01B -S315400144107FFFF5789407BFC8030006AEDA07BFC829 -S315400144208210639580A340011280000703003A9AE7 -S31540014430DA0460048210630F80A3400102800733CF -S31540014440010000007FFFB36E90102011150FFFFF92 -S31540014450170281D89412A3409612E10C9A102010AB -S31540014460190006AFD43FBFD0D83FBFD8C025A1C0A1 -S315400144709007BFD89207BFD07FFFF55E9407BFC8AC -S31540014480DA046004C207BFC88090400D1280000A5A -S315400144901B000070C205A1C09A13601F19000010CD -S315400144A08208400D9813200480A0400C028000042D -S315400144B0010000007FFFB35290102011C025A1C01A -S315400144C0111088007FFFF63713100100031066C9EB -S315400144D0821062CA80A2000112800006010000001B -S315400144E0C205A1C080A06000028000051111BBFE7B -S315400144F07FFFB343901020111111BBFE901223FF91 -S315400145007FFFF628130C7040031527CA8210611EDF -S3154001451080A200011280000601000000C205A1C070 -S3154001452080A06000028000051310C7FF7FFFB334EF -S31540014530901020111310C7FF921263FC7FFFF619EA -S31540014540111E607E031D73FC8210633880A2000138 -S315400145501280000601000000C205A1C080A06000D3 -S3154001456002800005130FE0007FFFB3259010201154 -S31540014570130FE000921260017FFFF60A110020003E -S3154001458080A220001280000A1B000070C205A1C053 -S315400145909A13601F190000108208400D98132004D9 -S315400145A080A0400C02800005110FE0007FFFB3148C -S315400145B090102011110FE000C025A1C07FFFF5F931 -S315400145C092100008030FE00080A20001128000064D -S315400145D001000000C205A1C080A060000280000564 -S315400145E0130FE0007FFFB30690102011130FE00078 -S315400145F0921260017FFFF5EB1100200080A220009E -S315400146001280000A1B000070C205A1C09A13601FE8 -S31540014610190000108208400D9813200480A0400C18 -S31540014620028000051B1000857FFFB2F59010201116 -S315400146301B100085921360E8C025A1C09007BFF00A -S315400146407FFFF4DE9415212019100085C20320E86E -S31540014650DA05212080A3400182152120128000071E -S31540014660981320E8DA006004C203200480A34001C5 -S31540014670028006BA010000007FFFB2E190102012CD -S315400146801B100085921360D09007BFF07FFFF4CBDB -S315400146909415212019100085C20320D0DA05212066 -S315400146A080A340018215212012800007981320D053 -S315400146B0DA006004C203200480A34001028006ACF4 -S315400146C0010000007FFFB2CE901020129007BFF08C -S315400146D09215E0C87FFFF4B994152120C205E0C8C0 -S315400146E0DA05212080A3400182152120128000078E -S315400146F09815E0C8DA006004C203200480A3400193 -S31540014700028006A0010000007FFFB2BD901020127A -S315400147101B100085921360B89007BFF07FFFF4A786 -S3154001472094152120C20720B0DA05212080A340013B -S315400147308215212012800007981720B0DA00600404 -S31540014740C203200480A34001028006931B0000702F -S315400147507FFFB2AB901020129007BFF0921660F027 -S315400147607FFFF49694152120C205A1C01B0000705D -S315400147708208400D1900002080A0400C2110014400 -S3154001478002800004231000807FFFB29D901020120A -S3154001479094142120C02461C09007BFE87FFFF487AD -S315400147A09207BFF0DA042120C207BFE880A3400187 -S315400147B01280000794142120DA02A004C207BFEC3C -S315400147C080A34001028006DE010000007FFFB28C1B -S315400147D0901020120310008519100085901060E892 -S315400147E0921320D87FFFF47594152120C20720B07B -S315400147F0DA05212080A3400182152120128000077D -S31540014800981720B0DA006004C203200480A3400157 -S31540014810028006D01B0000707FFFB27990102012F3 -S31540014820C025A1C09007BFE89215E0C87FFFF46399 -S3154001483094152120C205E0C8DA05212080A3400154 -S3154001484082152120128000079815E0C8DA0060041D -S31540014850C203200480A34001028006C70100000074 -S315400148607FFFB267901024991B100085921360B8A0 -S315400148709007BFE87FFFF45194152120C20720B06D -S31540014880DA05212080A340018215212012800007EC -S31540014890981720B0DA006004C203200480A34001C7 -S315400148A0028006BA1B0000707FFFB255901020129D -S315400148B09007BFE8921660F07FFFF44094152120DF -S315400148C0C205A1C01B0000708208400D19000020DE -S315400148D080A0400C21100144028000042310008076 -S315400148E07FFFB2479010201294142120C02461C04A -S315400148F09016E0E07FFFF4319207BFF0C206E0E098 -S31540014900DA04212080A3400194142120128000075B -S315400149108216E0E0DA02A004C200600480A34001EE -S31540014920028006A4010000007FFFB23590102012DC -S315400149309016E0E09207BFE87FFFF420941521200E -S31540014940C20720B0DA05212080A34001821521202B -S3154001495012800007981720B0DA006004C2032004D1 -S3154001496080A34001028006981B0000707FFFB2249D -S3154001497090102012C025A1C09016E0E09215E0C823 -S315400149807FFFF40E94152120C205E0C8DA052120E7 -S3154001499080A3400182152120128000079815E0C8A6 -S315400149A0DA006004C203200480A340010280068F1E -S315400149B0010000007FFFB212901020120310008503 -S315400149C0921060B89016E0E07FFFF3FC9415212029 -S315400149D0C20720B0DA05212080A34001821521209B -S315400149E012800007981720B0DA006004C203200441 -S315400149F080A34001028006821B0000707FFFB20047 -S31540014A00901020129016E0E0921660F07FFFF3EBD3 -S31540014A1094152120C205A1C01B0000708208400DDB -S31540014A201900002080A0400C21100144028000049E -S31540014A30231000807FFFB1F29010201294142120A0 -S31540014A40C02461C09015E0C87FFFF3DC9207BFF038 -S31540014A50C205E0C8DA04212080A340019414212034 -S31540014A60128000078215E0C8DA02A004C200600481 -S31540014A7080A340010280061E010000007FFFB1E0D5 -S31540014A80901020129015E0C89207BFE87FFFF3CB44 -S31540014A9094152120C205E0C8DA05212080A34001F2 -S31540014AA082152120128000079815E0C8DA006004BB -S31540014AB0C203200480A340010280061201000000C7 -S31540014AC07FFFB1CF901020129015E0C89216E0E01A -S31540014AD07FFFF3BA94152120C205E0C8DA052120EB -S31540014AE080A3400182152120128000079815E0C855 -S31540014AF0DA006004C203200480A340010280060656 -S31540014B00010000007FFFB1BE901020129015E0C851 -S31540014B10921000087FFFF3A994152120C205E0C831 -S31540014B20DA05212080A34001821521201280000749 -S31540014B309815E0C8DA006004C203200480A340014E -S31540014B40028005FA010000007FFFB1AD90102012EE -S31540014B50191000859015E0C8921320B87FFFF3978E -S31540014B609415212003000070A610601FDA05A1C02C -S31540014B70030000109A0B4013AA10601080A3401541 -S31540014B802510008523100144028000042110008075 -S31540014B907FFFB19B90102012C02421C09014A0B871 -S31540014BA09207BFF07FFFF38594146120C20421C0B0 -S31540014BB08208401380A040150280000401000000D5 -S31540014BC07FFFB18F90102012C02421C09014A0B84D -S31540014BD09207BFE87FFFF37994146120C20421C094 -S31540014BE08208401380A040150280000401000000A5 -S31540014BF07FFFB18390102012C02421C09014A0B829 -S31540014C009216E0E07FFFF36D94146120C20421C047 -S31540014C108208401380A040150280000513100085CC -S31540014C207FFFB1779010201213100085C02421C058 -S31540014C30921260C89014A0B87FFFF360941461206B -S31540014C40C20421C08208401380A04015028000059D -S31540014C509014A0B87FFFB16A901020129014A0B8AA -S31540014C60C02421C0921000087FFFF35494146120A0 -S31540014C70C20421C08208401380A04015028000046E -S31540014C80010000007FFFB15E90102012C02421C0B8 -S31540014C909014A0B8921660F07FFFF34894146120F7 -S31540014CA0C20421C08330600E8208600380A0600286 -S31540014CB0228000051103C0007FFFB15190102012E0 -S31540014CC01103C0007FFFF57F3B100084A41763905A -S31540014CD0AA146120C02421C0A604A008A210200065 -S31540014CE0B0102005A00440129204401394152120CF -S31540014CF07FFFF33290100010DA042010C205212004 -S31540014D00A204601880A3400112800007901020126F -S31540014D10DA042014C205600480A3400102800474B1 -S31540014D20010000007FFFB13601000000B0863FFF61 -S31540014D303CBFFFEEA00440121110008590122020C6 -S31540014D40920220087FFFF31D941521209817639046 -S31540014D50C2052120DA0320A080A34001128000076A -S31540014D6082152120DA0320A4C200600480A34001F9 -S31540014D70028004DC1B0000707FFFB12190102012DD -S31540014D801110008590122038C025A1C0920220083A -S31540014D907FFFF30A9415212098176390C2052120BD -S31540014DA0DA0320B880A34001128000078215212032 -S31540014DB0DA0320BCC200600480A340010280047F64 -S31540014DC01B0000707FFFB10E90102012111000855C -S31540014DD090122050C025A1C0920220087FFFF2F711 -S31540014DE09415212098176390C2052120DA0320D01B -S31540014DF080A340011280000782152120DA0320D4C6 -S31540014E00C200600480A34001028004761B0000704A -S31540014E107FFFB0FB90102012111000859012206880 -S31540014E20C025A1C0920220087FFFF2E494152120FB -S31540014E3098176390C2052120DA0320E880A3400138 -S31540014E401280000782152120DA0320ECC20060049B -S31540014E5080A340010280046D1B0000707FFFB0E813 -S31540014E60901020121110008590122080C025A1C0FB -S31540014E70920220087FFFF2D1941521209817639062 -S31540014E80C2052120DA03210080A3400112800007D8 -S31540014E9082152120DA032104C200600480A3400167 -S31540014EA0028004641B0000707FFFB0D59010201271 -S31540014EB0C025A1C0111010007FFFF3B013100000F0 -S31540014EC00310300080A2000112800006010000009C -S31540014ED0C205A1C080A0600002800005111FE0004C -S31540014EE07FFFB0C790102012111FE0001310000081 -S31540014EF07FFFF2B794152120031FFC00DA0521201C -S31540014F0080A340011280000A82152120C20060045C -S31540014F1080A060001280000601000000C205A1C009 -S31540014F2080A0600002800005111FE0007FFFB0B441 -S31540014F309010201B111FE000133000007FFFF2A4E8 -S31540014F4094152120033FFC00DA05212080A340016E -S31540014F501280000A82152120C200600480A06000F0 -S31540014F601280000601000000C205A1C080A06000B9 -S31540014F7002800005111000007FFFB0A19010201C97 -S31540014F8011100000921020107FFFF29194152120FC -S31540014F90C205A1C01B0000708208400D1900002007 -S31540014FA080A0400C2110014402800004231000809F -S31540014FB07FFFB0939010201D94142120C02461C01E -S31540014FC0110020007FFFF282130FC000DA04212076 -S31540014FD0030E000080A340011280000A9414212090 -S31540014FE0C202A00480A060001280000601000000F9 -S31540014FF0C20461C080A0600002800005111FDFFF6E -S315400150007FFFB07F9010201E111FDFFF901223FFFC -S31540015010131000007FFFF26E941521200311FFFF4C -S31540015020821063FFDA05212080A340011280000728 -S3154001503082152120DA0060040338000080A3400174 -S3154001504002800405010000007FFFB06D9010201F13 -S31540015050111FD000130FF0007FFFF25D9415212040 -S315400150600311FC80DA05212080A340011280000A49 -S3154001507082152120C200600480A0600012800006D3 -S3154001508001000000C205A1C080A0600002800005A9 -S31540015090111FDFFF7FFFB05A90102021111FDFFF44 -S315400150A0901223FF921000087FFFF24994152120A8 -S315400150B00313FBFF821063FFDA05212080A3400121 -S315400150C01280000882152120DA00600403300000B6 -S315400150D08210602080A34001028003E401000000A9 -S315400150E07FFFB047901020207FFFF4761103C00068 -S315400150F0C025A1C09007BFE07FFFF2449215212051 -S31540015100C207BFE0DA05212080A3400112800007D3 -S3154001511082152120DA006004C207BFE480A3400162 -S31540015120028003D7010000007FFFB03590102013A5 -S315400151301B100085901360E87FFFF2349215212001 -S3154001514003100085DA0060E8C205212080A0400DE9 -S31540015150191000858215212012800007901320E83E -S31540015160DA006004C202200480A34001028003C920 -S31540015170010000007FFFB022901020131B10008514 -S31540015180901360D07FFFF2219215212019100085DE -S31540015190C20320D0DA05212080A3400182152120B7 -S315400151A012800007981320D0DA006004C20320045D -S315400151B080A34001028003BC010000007FFFB010C4 -S315400151C0901020131B100085901360D87FFFF20FBB -S315400151D092152120C20720B0DA05212080A3400183 -S315400151E08215212012800007981720B0DA0060044A -S315400151F0C203200480A34001028003B01B0000705B -S315400152007FFFAFFF9010201303100085901060B808 -S31540015210C025A1C07FFFF1FD92152120C20720B014 -S31540015220DA05212080A34001821521201280000742 -S31540015230981720B0DA006004C203200480A340011D -S315400152400280040F1B0000707FFFAFED901020130A -S31540015250C025A1C09015E0C87FFFF1EC9215212031 -S31540015260C2052120DA05E0C880A0400D8215212023 -S31540015270128000079015E0C8DA006004C2022004DB -S3154001528080A3400102800407010000007FFFAFDCDC -S3154001529090102013170C00089A10200019100C00CA -S315400152A015300F789612E001D83FBFF0D43FBFC00A -S315400152B09007BFF07FFFF1D592152120031004001E -S315400152C0DA05212080A340011280000A821521209F -S315400152D0C200600480A06000128000060100000048 -S315400152E0C205A1C080A06000028000059007BFC032 -S315400152F07FFFAFC3901020139007BFC07FFFF1C35C -S3154001530092152120C2052120DA0720B080A0400D48 -S315400153108215212012800007981720B0DA00600418 -S31540015320C203200480A34001028003E31B000070F6 -S315400153307FFFAFB390102013901660F07FFFF1B35B -S3154001534092152120C205A1C08330600E82086003F8 -S3154001535080A0600202800004211000807FFFAFA878 -S3154001536090102013C02421C07FFFF2981111F20042 -S315400153700310E80080A2000112800006010000002F -S31540015380C20421C080A06000028000040100000028 -S315400153907FFFAF9B901020137FFFF3CA11100000CF -S315400153A01101F5897FFFF289901221E20308E96430 -S315400153B080A200011280000601000000C205A1C0C2 -S315400153C080A0600002800004010000007FFFAF8CD6 -S315400153D0901020237FFFF27D1112A2080311410094 -S315400153E080A200011280000601000000C205A1C092 -S315400153F080A0600002800004010000007FFFAF80B2 -S31540015400901020237FFFF3AF110010009007BFF0EB -S31540015410921660F07FFFF1649415212003100C0071 -S31540015420DA05212080A340011280000A821521203D -S31540015430C200600480A060001280000601000000E6 -S31540015440C205A1C080A0600002800005901660F0F0 -S315400154507FFFAF6B90102014901660F09207BFC08B -S315400154607FFFF1569415212003200000DA05212003 -S3154001547080A340011280000A82152120C2006004E7 -S3154001548080A060001280000601000000C205A1C094 -S3154001549080A0600002800004010000007FFFAF5839 -S315400154A0901020147FFFF19190102001030FE0002E -S315400154B080A200011280000601000000C205A1C0C1 -S315400154C080A0600002800004010000007FFFAF4C15 -S315400154D0901020147FFFF17D90102001030FFC00F6 -S315400154E080A200011280000880A26000128000069E -S315400154F001000000C205A1C080A060000280000436 -S31540015500010000007FFFAF3E901020147FFFF36D36 -S315400155101110100019100085D41B20D07FFFF1F91E -S31540015520D01E60F003100085D03D2120DA0060D8FE -S31540015530C205212080A0400D191000858215212029 -S3154001554012800007901320D8DA006004C2022004BA -S3154001555080A3400102800361010000007FFFAF2864 -S31540015560901020227FFFF35711100000170400808E -S31540015570150F28009612E0F09A102000190FFC0032 -S31540015580D43FBFC0D83FBFF09007BFF09207BFC01E -S315400155907FFFF10594152120030FFC00DA05212038 -S315400155A080A340011280000682152120C2006004BA -S315400155B080A0600002800004010000007FFFAF1060 -S315400155C0901020157FFFF33F112000001700004087 -S315400155D0150014009612E0019A102000190FFC00E4 -S315400155E0D43FBFC0D83FBFF09007BFF09207BFC0BE -S315400155F07FFFF0ED94152120030FFC00DA052120F1 -S3154001560080A340011280000682152120C200600459 -S3154001561080A0600102800004010000007FFFAEF817 -S31540015620901020157FFFF32711300000170000402E -S31540015630152014009612E0019A102000192FFC0043 -S31540015640D43FBFC0D83FBFF09007BFF09207BFC05D -S315400156507FFFF0D594152120032FFC00DA05212088 -S3154001566080A340011280000682152120C2006004F9 -S3154001567080A0600102800004010000007FFFAEE0CF -S31540015680901020157FFFF30F11100000190FFC0039 -S315400156909A102000D83FBFF09007BFF09216E0E085 -S315400156A07FFFF0C194152120C206E0E0DA052120F2 -S315400156B080A3400182152120128000079816E0E060 -S315400156C0DA006004C203200480A340010280000482 -S315400156D0010000007FFFAECA901020157FFFF2F94E -S315400156E01120000017000040150014009612E00139 -S315400156F0190FFC009A102000D43FBFC0D83FBFF01D -S315400157009007BFF09216E0E07FFFF0A794152120A5 -S31540015710C206E0E0DA05212080A34001821521205E -S31540015720128000079816E0E0DA006004C203200404 -S3154001573080A3400102800004010000007FFFAEB05B -S31540015740901020157FFFF2DF113000001700004056 -S31540015750152014009612E0019A102000192FFC0022 -S31540015760D43FBFC0D83FBFF09007BFF09216E0E0EC -S315400157707FFFF08D94152120C2052120DA06E0E055 -S3154001578080A0400D82152120128000079016E0E08E -S31540015790DA006004C202200480A3400102800004B2 -S315400157A0010000007FFFAE96901020157FFFF2C5E5 -S315400157B01110000015100000961020019A102001CA -S315400157C0190FFC00D43FBFC0D83FBFF09007BFF0D0 -S315400157D09207BFC07FFFF079941521200310000086 -S315400157E0DA05212080A3400112800006821521207E -S315400157F0C200600480A06002028000040100000033 -S315400158007FFFAE7F901020157FFFF2AE1120000082 -S315400158109007BFF09207BFC07FFFF0689415212023 -S3154001582003100000DA05212080A340011280000602 -S3154001583082152120C200600480A06003028000041A -S31540015840010000007FFFAE6E901020157FFFF29D94 -S31540015850113000009A102001192FFC00D83FBFF0EB -S315400158609007BFF09207BFC07FFFF05494152120E7 -S3154001587003300000DA05212080A340011280000692 -S3154001588082152120C200600480A0600302800004CA -S31540015890010000007FFFAE5A901020157FFFF2896C -S315400158A011100000150FFC04172F26159412A01293 -S315400158B09612E231190FFEAE1B1CD2E89A13601103 -S315400158C098132154D43FBFC0D83FBFF09007BFF0D3 -S315400158D09207BFC07FFFF04794152120030FFEA713 -S315400158E082106296DA05212080A3400112800008C9 -S315400158F082152120DA006004032C1B348210602FAC -S3154001590080A3400102800004010000007FFFAE3CFD -S31540015910901020157FFFF26B112000009007BFF019 -S315400159209207BFC07FFFF03394152120030FFEA7D6 -S3154001593082106296DA05212080A340011280000878 -S3154001594082152120DA006004032C1B34821060305A -S3154001595080A3400102800004010000007FFFAE28C1 -S31540015960901020157FFFF25711300000192FFC04CB -S315400159701B2F26159A13623198132012D83FBFC0A8 -S315400159809007BFF09207BFC07FFFF01A9415212000 -S31540015990032FFEA782106296DA05212080A34001DB -S315400159A01280000882152120DA006004032C1B3482 -S315400159B08210603080A34001028000040100000093 -S315400159C07FFFAE0F901020157FFFF23E11100000B1 -S315400159D015101000961020009A102000191038005A -S315400159E0D43FBFC0D83FBFF09007BFF09207BFC0BA -S315400159F07FFFF0009415212003102400DA052120B1 -S31540015A0080A340011280000682152120C200600455 -S31540015A1080A0600002800004010000007FFFADF815 -S31540015A20901020157FFFF227112000009007BFF04C -S31540015A309207BFC07FFFEFEF94152120031024008A -S31540015A40DA05212080A3400112800006821521201B -S31540015A50C200600480A060000280000401000000D2 -S31540015A607FFFADE7901020157FFFF2161130000041 -S31540015A709007BFF09207BFC07FFFEFDE941521204C -S31540015A8003102400DA05212080A34001128000067C -S31540015A9082152120C200600480A0600002800004BB -S31540015AA0010000007FFFADD6901020157FFFF20563 -S31540015AB011100000210FE000110020007FFFF0B916 -S31540015AC09214200180A220001280012301000000CF -S31540015AD07FFFF1FC11200000110020007FFFF0B193 -S31540015AE09214200180A220001280011801000000BA -S31540015AF07FFFF1F411300000921420017FFFF0A9DD -S31540015B001100200080A220001280010D010000003A -S31540015B107FFFF1EC111000009A102000190FFC00D4 -S31540015B20D83FBFF09007BFF07FFFEFB89215212015 -S31540015B30C207BFF0DA05212080A340011280000789 -S31540015B4082152120DA006004C207BFF480A3400118 -S31540015B50028002A7010000007FFFADA99010201529 -S31540015B607FFFF1D8112000009007BFF07FFFEFA71C -S31540015B7092152120C207BFF0DA05212080A34001FA -S31540015B801280000782152120DA006004C207BFF4A3 -S31540015B9080A340010280029B010000007FFFAD9877 -S31540015BA0901020157FFFF1C7113000009007BFF01C -S31540015BB07FFFEF9692152120C207BFF0DA0521201B -S31540015BC080A340011280000782152120DA0060047B -S31540015BD0C207BFF480A340010280028F010000008A -S31540015BE07FFFAD87901020157FFFF1B611100000A1 -S31540015BF0030FDFFF901063FF7FFFF074A0100008D2 -S31540015C0080A2001002800004010000007FFFAD7CED -S31540015C10901020157FFFF1AB112000007FFFF06B44 -S31540015C2090100010030FE00080A2000102800004E2 -S31540015C30010000007FFFAD72901020157FFFF1A19A -S31540015C40113000007FFFF0619010001080A200101B -S31540015C5002800004010000007FFFAD69901020150D -S31540015C607FFFF198901020007FFFF0609015212072 -S31540015C70032FFE00DA05212080A340011280000691 -S31540015C8082152120C200600480A0600002800005C8 -S31540015C90211001447FFFAD5A901020162110014476 -S31540015CA07FFFF05C90142128DA042128032FF000AD -S31540015CB080A3400102800004A21421287FFFAD5039 -S31540015CC0901020167FFFF05D90100011DA04212814 -S31540015CD0030FE00080A340010280000401000000A0 -S31540015CE07FFFAD47901020167FFFF064901521206D -S31540015CF0030FFBF7821063F0DA05212080A34001F0 -S31540015D001280000882152120DA0060040303FF1285 -S31540015D108210604A80A3400102800005921660F01D -S31540015D207FFFAD3790102016921660F09007BFF0B6 -S31540015D307FFFEF3094152120C205A1C08330600E4C -S31540015D408208600780A060020280000519100046A3 -S31540015D507FFFAD2B901020171910004617100080B9 -S31540015D60DA02E1C8821321F880A0400DE00321F850 -S31540015D7002800004A212E1C87FFFAD2190102018D5 -S31540015D80C204600480A040100280000401000000AB -S31540015D907FFFAD1B90102018C204600880A06000F0 -S31540015DA01280007701000000C204600C80A06000F0 -S31540015DB01280006C010000007FFFEEE6010000004A -S31540015DC080A220010280019801000000190C40299F -S31540015DD01B23CD1B9A13609B981320069410200019 -S31540015DE096102000D83FBFF0D43FBFC07FFFEF2FB2 -S31540015DF09007BFF003100083A21062101B100081B0 -S31540015E0003100144A0136210A4106120B0102000B9 -S31540015E10832E2002DA044001DA27BFC09007BFC0B3 -S31540015E207FFFEF25921521209B2E2003D804000DDC -S31540015E30C2052120B00620019603401080A300012F -S31540015E401280000790102019DA02E004C204A0046F -S31540015E5080A340010280000580A620FF7FFFACE8B9 -S31540015E600100000080A620FF04BFFFEB832E200225 -S31540015E7003100083A41062101B100080031001441C -S31540015E80A2136210A6106120B0102000A12E20029C -S31540015E90C2048010C227BFC0921521207FFFEEDBCE -S31540015EA09007BFC0DA044010C2052120B006200287 -S31540015EB09804001180A34001128000079010201A17 -S31540015EC0DA032004C204E00480A3400102800005F5 -S31540015ED080A620FF7FFFACCA0100000080A620FFFC -S31540015EE024BFFFECA12E200230800211C205A1C0C1 -S31540015EF080A0600022BFFB8FB0863FFF30BFFB8A88 -S31540015F00C205A1C080A0600002BFF14501000000AA -S31540015F1030BFF141C205A1C080A0600002BFF13689 -S31540015F200100000030BFF132C205A1C080A060006F -S31540015F3002BFF1270100000030BFF1237FFFACB063 -S31540015F409010201530BFFEF37FFFACAD90102015A9 -S31540015F5030BFFEE87FFFACAA9010201530BFFEDDB2 -S31540015F607FFFACA79010201830BFFF947FFFACA4F1 -S31540015F709010201010BFF678111000847FFFACA05E -S31540015F809010201830BFFF89C207BFCC80A06000A7 -S31540015F9012BFF8F501000000C20421C08208401575 -S31540015FA09A16A00880A0400D12BFF8EF010000002C -S31540015FB010BFF8F015108683C205A1C09A13601F61 -S31540015FC0190000108208400D9813200880A0400C4B -S31540015FD012BFFB7D1110008510BFFB7F9012205030 -S31540015FE0C205A1C09A13601F190000108208400D16 -S31540015FF09813200880A0400C12BFFB861110008523 -S3154001600010BFFB8890122068C205A1C09A13601F79 -S31540016010190000108208400D9813200480A0400CFE -S3154001602012BFFB8F1110008510BFFB91901220808B -S31540016030C205A1C09A13601F190000108208400DC5 -S315400160409813200880A0400C12BFFB980100000065 -S3154001605030BFFB98C205A1C080A0600002BFFBFE15 -S31540016060111FD00030BFFBF9C205A1C080A060005E -S3154001607002BFFC1E0100000030BFFC1AC205A1C0D0 -S3154001608080A0600002BFFC2C1B10008530BFFC279E -S31540016090C205A1C080A0600002BFFC3A1B1000856A -S315400160A030BFFC35C205A1C080A0600002BFFC47DD -S315400160B01B10008530BFFC42C205A1C09A13601F68 -S315400160C0190000108208400D9813201080A0400C42 -S315400160D012BFFC4C0310008510BFFC4E901060B8F7 -S315400160E0C205A1C09A13601F190000108208400D15 -S315400160F09813200480A0400C12BFFB20111000858C -S3154001610010BFFB2290122038C205A1C080A06000BA -S3154001611022BFF8D0150FFFFF30BFF8CBC205A1C093 -S3154001612080A0600002BFF8100310008530BFF80B55 -S31540016130C205A1C09A13601F190000108208400DC4 -S315400161409813201080A0400C12BFF8169015E0C895 -S3154001615010BFF818921660F0C205A1C080A0600079 -S3154001616002BFF9491B10008530BFF944C205A1C0E1 -S3154001617080A0600002BFF9579007BFF030BFF952C7 -S31540016180C205A1C080A0600002BFF9631B10008553 -S3154001619030BFF95EC205A1C09A13601F19000010F5 -S315400161A08208400D9813201080A0400C12BFF96957 -S315400161B09007BFF010BFF96B921660F0C20461C040 -S315400161C080A0600002BFF74B1B10008530BFF74629 -S315400161D0C205A1C080A0600002BFF75A9016E0E058 -S315400161E030BFF755C205A1C09A13601F19000010B0 -S315400161F08208400D9813201080A0400C12BFF75F13 -S315400162000100000030BFF75FC205A1C080A0600059 -S3154001621002BFF76F1B10008530BFF76AC205A1C0E8 -S315400162209A13601F190000108208400D9813201020 -S3154001623080A0400C12BFF7750100000030BFF77512 -S31540016240C20461C080A0600002BFF7949015E0C807 -S3154001625030BFF78FC205A1C080A0600002BFF7A082 -S315400162609015E0C830BFF79BC205A1C080A0600071 -S3154001627002BFF7AC9015E0C830BFF7A7C205A1C071 -S315400162809A13601F190000108208400D98132010C0 -S3154001629080A0400C12BFFBED0100000030BFFBEDBA -S315400162A0C205A1C080A0600002BFFBFC170C00081C -S315400162B030BFFBF7C205A1C09A13601F1900001039 -S315400162C08208400D9813201080A0400C12BFFC1983 -S315400162D0901660F030BFFC1AC205A1C080A06000D4 -S315400162E002BFFCA10100000030BFFC9DC20461C099 -S315400162F080A0600002BFF9E59015E0C830BFF9E023 -S31540016300C205A1C080A0600002BFF9F19015E0C8A6 -S3154001631030BFF9ECC205A1C080A0600002BFF9FD03 -S315400163209015E0C830BFF9F8C205A1C080A0600051 -S3154001633002BFFA091910008530BFFA04C20461C0D0 -S3154001634080A0600002BFF9250310008530BFF92007 -S31540016350C205A1C09A13601F190000108208400DA2 -S315400163609813201080A0400C12BFF92C01000000A8 -S3154001637030BFF92CC205A1C080A0600002BFF93C24 -S315400163801B10008530BFF937C205A1C09A13601FA3 -S31540016390190000108208400D9813201080A0400C6F -S315400163A012BFF9429007BFE810BFF944921660F058 -S315400163B0C20461C080A0600002BFF95F9016E0E0B0 -S315400163C030BFF95AC205A1C09A13601F19000010C7 -S315400163D08208400D9813201080A0400C12BFF9642A -S315400163E00100000030BFF964C205A1C080A0600071 -S315400163F002BFF9740310008530BFF96FC205A1C011 -S315400164009A13601F190000108208400D981320103E -S3154001641080A0400C12BFF97A9016E0E010BFF97CDB -S31540016420921660F07FFFAB769010201910BFFE697F -S31540016430190C4029D80061C01B0000709A13601FD7 -S3154001644003000010980B000D8210600880A3000124 -S3154001645012BFF5501110008410BFF55290122360FF -S31540016460C205A1C09A13601F190000108208400D91 -S315400164709813200480A0400C12BFF55811100084D7 -S3154001648010BFF55A90122378C205A1C09A13601F16 -S31540016490190000108208400D9813200480A0400C7A -S315400164A012BFF5600100000030BFF560C205A1C012 -S315400164B080A0600002BFF4A90310008530BFF4A498 -S315400164C0C205A1C080A0600002BFF4939015E0C848 -S315400164D030BFF48EC205A1C080A0600002BFF47D2A -S315400164E09015E0C830BFF478C20461C080A0600056 -S315400164F002BFF4679015E0C830BFF462C205A1C07F -S315400165009A13601F190000108208400D981320024B -S3154001651080A0400C12BFF5B61B10008510BFF5B820 -S31540016520921360D0C205A1C080A0600002BFF5C52C -S315400165309007BFF030BFF5C0C205A1C080A0600082 -S3154001654002BFF5D10310008530BFF5CCC205A1C00D -S315400165509A13601F190000108208400D98132010ED -S3154001656080A0400C12BFF5D79007BFF010BFF5D9F8 -S31540016570921660F0C20461C080A0600022BFF5F3AC -S315400165801910008530BFF5EEC205A1C09A13601FF0 -S31540016590190000108208400D9813201080A0400C6D -S315400165A012BFF5F91B10008510BFF5FB03100085DE -S315400165B0C205A1C080A0600002BFF60B9007BFE8EC -S315400165C030BFF606C205A1C080A0600002BFF61723 -S315400165D01B10008530BFF612C20421C080A06000A6 -S315400165E022BFF03E113C02AF30BFF039C205A1C017 -S315400165F080A0600002BFFD5B0100000030BFFD5777 -S31540016600C205A1C080A0600002BFFD670100000075 -S3154001661030BFFD63C205A1C080A0600002BFFD730B -S315400166200100000030BFFD6FC205A1C080A060001F -S3154001663002BFF2D70310008530BFF2D2C205A1C016 -S3154001664080A0600002BFF2C19007BFF030BFF2BC2C -S31540016650C205A1C080A0600002BFF2AA3710008522 -S3154001666030BFF2A5C205A1C080A0600002BFF028DC -S315400166701111FC0030BFF023C205A1C09A13601F5F -S31540016680190000108208400D9813201080A0400C7C -S3154001669012BFF3DD9016E0E010BFF3DF921660F013 -S315400166A0C205A1C080A0600002BFF39E1B100085F9 -S315400166B030BFF399C205A1C080A0600002BFF38636 -S315400166C01B10008530BFF381C205A1C080A06000C8 -S315400166D002BFF36E1B10008530BFF369C20461C06F -S315400166E080A0600002BFF3589016E0E030BFF3533C -S315400166F0C205A1C080A0600002BFF30E191000853B -S3154001670030BFF309C205A1C080A0600002BFF2F804 -S315400167109007BFE830BFF2F3C20461C080A06000B9 -S3154001672002BFF2E29007BFE830BFF2DD81C7E00861 -S3154001673081E80000D27A000081C3E0080100000030 -S3154001674081C3E008900A20209332600492126001CE -S315400167508213C0007FFFFFF89E1040000100000039 -S3154001676081D8200081C3E008010000009DE3BF9865 -S315400167707FFFFFFC0100000082102400C0A04300FF -S3154001678081C7E00881E80000833220189A1000088A -S315400167908088600F028000049010200083336010CF -S315400167A09008600381C3E008010000009DE3BF98A3 -S315400167B0031000C01B1000C1B0106000A21360009E -S315400167C0031000C21B1000C2A4106000A613610092 -S315400167D0031000201B100020A8106158AA13600066 -S315400167E07FFFEBAD9010200C808A2008028001FDCE -S315400167F0010000007FFFAA7D9010200ED08003206B -S315400168007FFFFFE2010000000310014380A2200246 -S31540016810028000C6D02060D080A22002148000E40D -S3154001682080A2200380A22001028000D1821020197B -S31540016830331000A02F1000A0391000A0371000A07F -S31540016840351000A07FFFFFC7210100007FFFFFC871 -S31540016850BA04A00C921000117FFFFFBC90100018E3 -S31540016860921000117FFFFFB990062004901000118D -S315400168707FFFFFB19210200ADA066014110800006A -S31540016880913A000DC205E010900A0001912A2002BA -S3154001689013008000900200117FFFFFA79212600A49 -S315400168A0DA06601411100000913A000DC205E0109D -S315400168B0900A0001912A2002900200117FFFFF9E5B -S315400168C09214208EDA066014111C0000913A000DD4 -S315400168D0C205E010900A0001912A20021301C0006E -S315400168E0900200117FFFFF949212608E9334A004B0 -S315400168F09004600C7FFFFF90921260019214201E5B -S315400169007FFFFF8D9004A0089010001D7FFFFF8A36 -S31540016910921020009334E004921260017FFFFF86BB -S315400169209004A004111000C2901221087FFFFF823B -S3154001693092102000031000E0A01060009334200460 -S31540016940111000C2901221047FFFFF7B9212601A40 -S3154001695003048D1582106278C2242004111000E0D0 -S3154001696015100120C0222000A2102003AC12A00065 -S31540016970A004E00C90047FFD40000A7392102003AE -S315400169801B100143C20360D08200600C932A0001B0 -S315400169909202401693326004901000107FFFFF660A -S315400169A09212601EA204600180A4600A04BFFFF235 -S315400169B0A0042004C206E008D807200C8208600122 -S315400169C08328400CD605E010111000E0D406A00043 -S315400169D0DA06601498122000960AE003972AC00D41 -S315400169E0920AA002111000A0DA022004940AA00122 -S315400169F0952A800D932A400D1B1000209612C00146 -S31540016A00E8236150030100001B0076418210601E9D -S31540016A109A1361C09212C00999332004C2252004F9 -S31540016A20DA2520089612C00A9E13200E913560047D -S31540016A301B1000C2031000C2821061049012201E76 -S31540016A40953620049813201E9A136108D625202CCA -S31540016A50D8252010D025201CD2252020DE2520280F -S31540016A60D6252014940ABFF0FA250000DA2520180D -S31540016A70C2252024C225200CA2102100D4A44320E3 -S31540016A80C2800320D88443209A102001A0102200FE -S31540016A90DAA40320D884032082102000C2A4032054 -S31540016AA0DAA0032081D820007FFFC55901000000EC -S31540016AB0C2800320E2844320E0840320DA05E0100B -S31540016AC0D6066014C206E0089A0B60039B2B400B66 -S31540016AD082086001D407200CD806A000111000A03E -S31540016AE08328400A980B2001D60220049A134001BC -S31540016AF0992B000B9A13400CC203400080A0600002 -S31540016B0012800008821360041B048D15D8004000D2 -S31540016B109A13627880A3000D02800038C205E01006 -S31540016B2010800000010000008210201A331000A0DE -S31540016B30C22660149810203F2F1000A0391000A0E3 -S31540016B40351000A09A1020148210200E151000A0B6 -S31540016B50371000A0DA27200CC222A004D826A000B4 -S31540016B60D825E01010BFFF38D826E0089A10207FBC -S31540016B70331000A02F1000A0C2266014DA25E010C1 -S31540016B809810203F391000A0351000A08210201324 -S31540016B909A10200D111000A0371000A0C227200C1A -S31540016BA0DA22200410BFFFF0D826A00012BFFF2230 -S31540016BB0331000A08210201CC22660149A102015A2 -S31540016BC08210207F391000A0371000A0DA27200C50 -S31540016BD0C226E0089810200F2F1000A0351000A003 -S31540016BE01B1000A08210203FD8236004C226A000BB -S31540016BF010BFFF15D825E010DA06E008D806601464 -S31540016C00820860039A0B6002D607200C8328400C49 -S31540016C109B2B400B8210400DD80040001B100000FA -S31540016C20C203400080A3000102800004D406E008AC -S31540016C301080000001000000C205E010980AA00182 -S31540016C40D207200CD6066014820860038328400BC5 -S31540016C50992B0009940AA0039810400CDA06A0006B -S31540016C60111000A0952A80099A0B6001D6022004D2 -S31540016C708210400AC20040009B2B400B9813000D26 -S31540016C800321D9509813200482106321C2230000A6 -S31540016C90DA03000080A3400102800004C206E00836 -S31540016CA01080000001000000D407200CDA05E01036 -S31540016CB082086001D60660148328400A9A0B600355 -S31540016CC0D806A0009B2B400B151000A0D602A004AD -S31540016CD0980B20019A134001992B000B9813400CF5 -S31540016CE08210000C05048D158410A278072AF37BC7 -S31540016CF08610E301C4384000C438400003048D15B2 -S31540016D00DA0300008210627880A340010280000409 -S31540016D108213200410800000010000001B2AF37B2F -S31540016D20D80040009A13630180A3000D12BFFFFAF9 -S31540016D30C205E010D6066014D806E0088208600352 -S31540016D40D407200C8328400B980B2001DA06A000BB -S31540016D50111000A0992B000A9A0B6003D602200459 -S31540016D608210400C9B2B400B15100143A010400D87 -S31540016D70F002A0D0A2102003E0240000C0A002200F -S31540016D80921020034000097090047FFD8206200C7A -S31540016D9098102001912A0001992B00011B10012016 -S31540016DA09610000182136000DA02000180A34010B0 -S31540016DB0A204600112800087A004000C80A4600A2E -S31540016DC024BFFFEFE0240000C0A0022003100120F1 -S31540016DD0A810000BAA106000A0102000A2102003EA -S31540016DE090047FFD4000095892102003832C6002D5 -S31540016DF0912A0014DA04C00190020015820B6060EA -S31540016E009132200480A000019012201EA040001063 -S31540016E109A0B7F9F900A3F9F80A340081280006F84 -S31540016E20A204600180A4600A24BFFFEF90047FFDA5 -S31540016E3080A4200012800004C205E01010800000EA -S31540016E4001000000D6066014D806E00882086003F7 -S31540016E50D407200CDA06A000111000A08328400BAD -S31540016E60980B2001992B000AD60220049A0B600246 -S31540016E708210400C9B2B400BAA10400D9FC5400031 -S31540016E800100000082102400C0A04300C0A00220DF -S31540016E90A0102000A21020039B2C6002C204C00D4A -S31540016EA08208606080A00001A0400010A204600139 -S31540016EB080A4600A24BFFFFA9B2C600280A42008AC -S31540016EC022800004D004E00410800000010000008C -S31540016ED0808A204002800007010000007FFFFE19E2 -S31540016EE00100000080A22000128000040100000081 -S31540016EF010800000010000007FFFFE12D004A008B0 -S31540016F0080A22000128000040100000010800000D1 -S31540016F10010000007FFFFE0BD004E00880A22000A4 -S31540016F2012800004010000001080000001000000F2 -S31540016F3083480000842860808188A0000100000009 -S31540016F400100000001000000D806E008D407200C2B -S31540016F50DA05E010980B2001D6066014992B000A39 -S31540016F609A0B6003C206A0009B2B400B151000A094 -S31540016F70D602A004820860018328400B9A13400C74 -S31540016F809A1340019A136004C203400092102004F0 -S31540016F9091D02002010000007FFFC41D01000000C6 -S31540016FA0981020009A102200D8A343208210200175 -S31540016FB0C2A34320D8A3432003100000DA804380B4 -S31540016FC0DAA04380D8A0032081D820003080000574 -S31540016FD01080000001000000108000000100000048 -S31540016FE081C7E00891E820009DE3BF98400007D1A2 -S31540016FF001000000808A21000280003F010000005C -S315400170007FFFA88E01000000912A20047FFFA87708 -S31540017010900220050310014082106048DA006004A6 -S3154001702080A360002280001503100140B0100001CA -S31540017030C20600009B38601F81836000DA06200487 -S3154001704001000000010000008278400DDA062008A8 -S31540017050B006200C80A0400D028000049010200153 -S315400170607FFFA86701000000C206200480A06000DF -S3154001707012BFFFF00310014082106000DA00600485 -S3154001708080A360000280001501000000B0100001DD -S31540017090C206000081800000DA06200401000000DB -S315400170A0010000009A70400D8210000DDA0620089A -S315400170B0B006200C80A0400D0280000490102002F2 -S315400170C07FFFA84F01000000C206200480A0600097 -S315400170D012BFFFF00100000040000824010000003B -S315400170E080A2200012800004010000007FFFA84416 -S315400170F09010200381C7E00891E820009DE3BF98E6 -S315400171007FFFA84E01000000912A20047FFFA83787 -S3154001711090022004400007890100000080A221233B -S3154001712002800004010000007FFFA8359010200175 -S315400171304000078001000000808A21000280002B68 -S315400171400310014082106184DA00600880A360095F -S315400171500280001101000000B0100001C2060000CB -S31540017160DA062004D80620088258400DB006200CC5 -S3154001717080A0400C02800004901020027FFFA820CE -S3154001718001000000C206200880A0600912BFFFF47A -S3154001719001000000400007760100000080A22000A7 -S315400171A00280000F0100000040000762010000005C -S315400171B0808A22000280000D010000004000079EE7 -S315400171C00100000080A2200012800008010000009A -S315400171D07FFFA80B90102004308000047FFFA80891 -S315400171E09010200330BFFFF181C7E00891E82000ED -S315400171F09DE3BFA0941020001110005C9012222440 -S315400172001310005C921262281710005C9612E2304D -S315400172101910005C9813223493C2000081C24000C9 -S315400172201080019181C2C00081C300001080018E8F -S315400172309402A0019402A00180A2A0031280018AB7 -S3154001724001000000874400008D30E00E8C89A007C4 -S3154001725080A1A000028000C701000000AF30E00B12 -S31540017260AE0DE00780A5E000128000C201000000DB -S3154001727080A1A00212800035010000002510000007 -S31540017280E41C80002510000029100000A8152104E7 -S31540017290A6100012AA100012AC100014A1802046BC -S315400172A0A4100000AA10000001000000A180204E99 -S315400172B0A810210001000000A1800000010000008B -S315400172C001000000E83CA03082A4801312800166D0 -S315400172D082A5001612800164010000000100000031 -S315400172E001000000874400008D30E00B8C89A00727 -S315400172F08CA1A0051280015CA18000000100000064 -S315400173000100000001000000E81CA03082A5001623 -S315400173101280015582A54012A4100000128001522C -S315400173200100000001000000874400008D30E00BA1 -S315400173308C89A0078CA1A0031280014B010000009B -S315400173401080008C0100000080A1A0011280002362 -S3154001735025100000E41C80002510000029100000C3 -S31540017360A8152104A6100012AA100012AC10001490 -S31540017370A1802046A4100000AA10000001000000D0 -S31540017380A180204EA810210001000000A18000002C -S31540017390010000000100000001000000E83C8000FF -S315400173A082A480131280013082A500161280012E1C -S315400173B00100000001000000874400008D30E00B11 -S315400173C08C89A0078CA1A002128001270100000030 -S315400173D0108000680100000080A1A00312800065B2 -S315400173E0A6100000A210200EA1844000A6100000A5 -S315400173F0A1800000A814E000AB4400000100000099 -S31540017400AC14E00001000000AF44000080A520005C -S3154001741012800115AA8D6E0080A5400012800112CE -S3154001742080A5A00012800110AF35E00BAE0DE0073C -S3154001743080A5E0011280010C01000000A0100000AF -S31540017440A1844000A6100000A1800000E8180000B9 -S31540017450AC100000AE100000EC04C000EE04E004E5 -S3154001746080A500161280010080A54017128000FEFB -S3154001747001000000A5440000A534A00BA40CA00700 -S3154001748080A4A001128000F801000000A0100000B5 -S31540017490A1844000A6100000A1800000A210200A8D -S315400174A0A1844000A4100000A1800000E81800005B -S315400174B0AC100000AE100000EC04C012EE04E00473 -S315400174C080A50016128000E880A54017128000E6CC -S315400174D001000000A5440000A534A00BA40CA007A0 -S315400174E080A4A002068000E00100000021100140B6 -S315400174F0A0142200EC1C0000A0042008E81C000097 -S31540017500A1844000A6100000A1800000A210200E18 -S31540017510A1844000A4100010AC100000AE10000081 -S31540017520A18000000100000001000000EC3C801336 -S31540017530AC100000AE100000E81CC01280A5001679 -S31540017540128000C980A54017128000C701000000C3 -S31540017550A5440000A534A00BA40CA00780A4A00458 -S31540017560128000C1010000001080000201000000ED -S315400175708B4440008A09601F80A160010280000A95 -S315400175808C1000059DE3BFA08AA1600116BFFFFED6 -S315400175900100000081E800008CA1A00116BFFFFE9A -S315400175A0010000000100000001000000A023A080AE -S315400175B0A02C20078E100010A3480000E2240000F2 -S315400175C0C2242004C43C2008C83C2010CC3C2018CE -S315400175D0F03C2020F43C2028F83C2030FC3C20386C -S315400175E0D03C2040D43C2048D83C2050DC3C20585C -S315400175F0A5500000E424206080102008821020015C -S315400176008410200286102003881020048A10200549 -S315400176108C10200681900000A42C601F818C800074 -S31540017620010000000100000001000000030040408D -S3154001763082106101841000008610000089444000D8 -S315400176408809201F86100004A01000028400400211 -S31540017650A210000284004002A410000284004002ED -S31540017660A610000284004002A810000284004002D5 -S31540017670AA10000284004002AC10000284004002BD -S31540017680AE100002840040029010000284004002C5 -S3154001769092100002840040029410000284004002CD -S315400176A096100002840040029810000284004002B5 -S315400176B09A100002840040029C100002840040029D -S315400176C09E1000028400400281E0000086A0E00195 -S315400176D016BFFFDE01000000030040408210610139 -S315400176E0841000008610000480A400021280003F2E -S315400176F08400400280A440021280003C8400400283 -S3154001770080A48002128000398400400280A4C00215 -S31540017710128000368400400280A5000212800033A8 -S315400177208400400280A5400212800030840040025D -S3154001773080A580021280002D8400400280A5C002EF -S315400177401280002A8400400280A200021280002793 -S315400177508400400280A2400212800024840040023C -S3154001776080A28002128000218400400280A2C002D1 -S315400177701280001E8400400280A300021280001B7A -S315400177808400400280A34002128000188400400217 -S3154001779080A38002128000158400400280A3C002AB -S315400177A0128000128400400281E0000086A0E001C0 -S315400177B016BFFFCE0100000080A020001280000B02 -S315400177C080A0FFFF1280000980A16005128000079A -S315400177D080A1A0061280000501000000A01000074C -S315400177E010800006C0242020A01000079010200120 -S315400177F010800002D024202082100007C4004000DF -S3154001780081888000010000000100000001000000A5 -S31540017810C4186008C8186010CC186018F0186020A9 -S31540017820F4186028F8186030FC186038D0186040A9 -S31540017830D4186048D8186050DC186058E40060607D -S31540017840C200600481948000010000000100000034 -S3154001785001000000A0100007F004202081C7E008C5 -S3154001786081E8000010BFFFFCB010000001000000DD -S3154001787081D8200081C3E008010000001B100144AB -S31540017880D8036150821020018328400C1B1001440B -S3154001789082007FFFD803615482084008932A400C36 -S315400178A0900040098213C0007FFFE77F9E10400091 -S315400178B0010000001B100144D803615082102001D1 -S315400178C08328400C1B10014482007FFFD80361547A -S315400178D0932A400C82084008900040099210000A01 -S315400178E08213C0007FFFE7729E1040000100000036 -S315400178F01B100144D8036150821020018328400C9B -S315400179001B10014482007FFFD8036154932A400C27 -S3154001791082084008900040099210000A8213C00074 -S315400179207FFFE7679E104000010000001B100144E5 -S31540017930D8036150821020018328400C1B1001445A -S3154001794082007FFFD803615482084008932A400C85 -S31540017950900040098213C0007FFFE7579E10400008 -S31540017960010000001B100144D803615C8210200114 -S315400179708328400C1B10014482007FFFD803616CB1 -S31540017980932A400C82084008900040099210000A50 -S315400179908213C0007FFFE74E9E10400001000000A9 -S315400179A01B100144D803615C821020018328400CDE -S315400179B01B10014482007FFFD803616C932A400C5F -S315400179C082084008900040099210000A8213C000C4 -S315400179D07FFFE7439E104000010000009DE3BF5832 -S315400179E02D100144A2102000C205A16080A44001CF -S315400179F01680001BA01020002B10014429100144C1 -S31540017A0027100144A4102001D005615C912C800807 -S31540017A10C205216C90023FFF832C0001900A001899 -S31540017A207FFFE72990020001C204E14C901E000845 -S31540017A30900A000180A00008A2647FFFA0042001F3 -S31540017A40C205A16080A4000126BFFFF1D005615C9B -S31540017A5080A4600012800003B0102000B010200105 -S31540017A6081C7E00881E800001B100144D803615C2E -S31540017A70821020018328400C1B10014482007FFFA5 -S31540017A80D803616C82084008932A400C9000400953 -S31540017A908213C0007FFFE70C9E10400001000000EA -S31540017AA01B100144D803615C821020018328400CDD -S31540017AB01B10014482007FFFD803616C8208400895 -S31540017AC0932A400C900040098213C0007FFFE702D1 -S31540017AD09E10400001000000952AA00D03280000D9 -S31540017AE094028009D02040009422B000D420600442 -S31540017AF081C3E00801000000033FFFBF821062F826 -S31540017B009DE38001193FFFBF94132368B407BFF873 -S31540017B10031000459606800A82106020C222E00CBE -S31540017B2003100044821063E0C222E0041B100044AB -S31540017B309A1363C0033FFFBFDA26800A901323805E -S31540017B40331000458210635C94068008981323C065 -S31540017B50921660008200401ED222E008D4204000E6 -S31540017B60B006800C7FFFA5A1901020067FFFE6CAD4 -S31540017B7090102000920A3FF07FFFE6C99010200046 -S31540017B80210000307FFFE6C490102000808A00105B -S31540017B9012BFFFFD010000007FFFFF3621000030CC -S31540017BA07FFFE6BD90102000808A001012BFFFFDC6 -S31540017BB0010000007FFFE6B890102000030020403E -S31540017BC08210600F921200017FFFE6B590102000EF -S31540017BD07FFFE6B19010200821100144D0242148AE -S31540017BE07FFFE6AD9010200CA73A2010993A201459 -S31540017BF0A60CE007980B200FDA042148A8230013AE -S31540017C00A80520089F3B6014933B60109B3B60187E -S31540017C1094050013A2102001AC03200A9E0BE00F2D -S31540017C2096102400AE0B60039402A00221200000AE -S31540017C30992AC00C1B1001448203E00A952C400A84 -S31540017C409424000A832C4001D8236168A0240001B2 -S31540017C501B10014403100144EC23615C972AC00FB9 -S31540017C60AA03E00A1B100144D620614403100144D3 -S31540017C70EA236154EA2061501B1001440310014478 -S31540017C80D423614C920A6007A53A2018D020615846 -S31540017C90153FFFBF932C4009A40CA00303100144D8 -S31540017CA09412A358932C4009A404A001391001440D -S31540017CB037100144EC20616C9B2C40149402801EC9 -S31540017CC0E0272164E426E160AA027FFFDA228000F0 -S31540017CD0AC85E0010280000CBB2C4013033FFFBF83 -S31540017CE082106368A0068001A4100016D00400002B -S31540017CF09FC20000A0042004A484BFFF32BFFFFD41 -S31540017D00D00400007FFFE66490102000920A3FFCF9 -S31540017D107FFFE66390102000A410200080A4801607 -S31540017D2016800022A2102000033FFFBFAE106368F9 -S31540017D30A610001AA010200080A400163680001854 -S31540017D40A404A00110800005A810001780A4001605 -S31540017D5036800013A404A001921000107FFFFEC8D4 -S31540017D60D004C014820A001580A0401512BFFFF846 -S31540017D70A0042001C204C01482184008DA07216415 -S31540017D808208400D80A00001A2647FFF80A40016F6 -S31540017D9006BFFFF392100010A404A00180A4801630 -S31540017DA006BFFFE5A604E0047FFFE63B90102000F6 -S31540017DB0A6100008901020007FFFE6399214E003D8 -S31540017DC080A46000028001B101000000833CE00C08 -S31540017DD080886003128000A5030048D1833CE013EC -S31540017DE080886003128001AD010000007FFFFEA183 -S31540017DF0210000307FFFE62890102000808A001085 -S31540017E0012BFFFFDA6100008A4102000C206E160C3 -S31540017E1080A480011680000D832CA00292100012CE -S31540017E20901000187FFFFED094102000A404A001FA -S31540017E30C206E16080A4800106BFFFFA92100012DB -S31540017E40A4102000832CA002A404A001C026000196 -S31540017E5080A4A01E04BFFFFD832CA0028210200532 -S31540017E60C22600009A102001DA2620048210200240 -S31540017E70C22620089A102003DA26200C7FFFFED85E -S31540017E809010001880A22000028001D3010000005A -S31540017E90C206000080A060050280000401000000C7 -S31540017EA07FFFA4D7901020067FFFFECD90100018CB -S31540017EB080A22000128001C401000000A41020000D -S31540017EC0C206E16080A480011680000F9210001264 -S31540017ED0A0062004941020007FFFFEB290100018E7 -S31540017EE092100012901000107FFFFEAE94102000F9 -S31540017EF0A404A001C206E16080A4800106BFFFF68A -S31540017F00921000127FFFE5FA901000187FFFE5F806 -S31540017F10900620207FFFE5F6900620407FFFE5F49E -S31540017F2090062060A4102000C206E16080A4800172 -S31540017F3006800196A21020007FFFA4B19010200870 -S31540017F40173FFFBF8212E3C0940680018212E35CB1 -S31540017F508200401ED81A8000C2004000D838400036 -S31540017F609612E380C206800B80A06005128000064F -S31540017F708206800BDA00600480A36001028000055E -S31540017F80A41020007FFFA49E90102009A410200079 -S31540017F90C206E16080A4800116800011A210200073 -S31540017FA0A0062004921000127FFFFEBE9010001022 -S31540017FB0901A200180A00008A2647FFFA404A001BA -S31540017FC0C206E16080A4800106BFFFF8921000124C -S31540017FD080A4600102800005833CE0137FFFA488F2 -S31540017FE09010200A833CE013808860031280018050 -S31540017FF082102005C22600009A102001DA262004AC -S3154001800082102002C22620089A102003DA26200C6C -S315400180101B3FFFBF9A1363589A03401ED00340008B -S315400180204000048D9210001D032EEEEEA12A20027F -S31540018030A21063BBE22600107FFFFE699010001874 -S3154001804080A220001280016701000000C2060010D4 -S3154001805080A0401102800005030048D17FFFA4683B -S3154001806090102012030048D1821061671B226AF3E7 -S31540018070C22620209A1361EFDA262024C20E202040 -S3154001808080A0600102800004010000007FFFA45C23 -S315400180909010201AC20E202180A060230280000485 -S315400180A0010000007FFFA4569010201BC20E202223 -S315400180B080A0604502800004010000007FFFA450BB -S315400180C09010201CC20E202380A06067028000040D -S315400180D0010000007FFFA44A9010201DC20E2024FB -S315400180E080A0608902800004010000007FFFA44453 -S315400180F09010201EC20E202580A060AB0280000495 -S31540018100010000007FFFA43E9010201FC20E2026D2 -S3154001811080A060CD02800004010000007FFFA438EA -S3154001812090102020C20E202780A060EF028000041C -S31540018130010000007FFFA43290102021C2162020AA -S31540018140832860108330601080A061230280000480 -S31540018150010000007FFFA42A90102022DA16202277 -S315400181609B2B6010030000119B33601082106167E6 -S3154001817080A3400102800004010000007FFFA4208B -S3154001818090102023DA1620249B2B60100300002236 -S315400181909B336010821061AB80A3400102800004D2 -S315400181A0010000007FFFA41690102024DA16202635 -S315400181B09B2B6010030000339B336010821061EFEC -S315400181C080A3400102800005821020307FFFA40C6D -S315400181D09010202582102030C22E2020030C08D179 -S315400181E0DA0620208210616780A3400102800005E3 -S315400181F0821020317FFFA402901020278210203167 -S31540018200C22E2021030C0C51DA0620208210616710 -S3154001821080A3400102800005821020327FFFA3F82F -S315400182209010202882102032C22E2022210C0C4C84 -S31540018230DA0620208214226780A3400102800005CD -S31540018240821020337FFFA3EE901020298210203325 -S31540018250C22E20239A142233C206202080A0400D2C -S3154001826002800005821020347FFFA3E59010202A6A -S3154001827082102034C22E2024030D2AF3DA0620244C -S31540018280821061EF80A340010280000582102035F3 -S315400182907FFFA3DB9010202B82102035C22E202594 -S315400182A0030D0D73DA062024821061EF80A340018D -S315400182B002800005821020367FFFA3D19010202C2A -S315400182C082102036C22E2026210D0D4DDA0620249D -S315400182D0821422EF80A340010280000582102037DC -S315400182E07FFFA3C79010202D82102037C22E202752 -S315400182F09A142237C206202480A0400D0280000530 -S31540018300210000107FFFA3BE9010202E21000010F7 -S3154001831082142041C23620200310104CDA06202058 -S315400183208210623380A340010280000582142243F9 -S315400183307FFFA3B39010202F82142243C2362022FE -S3154001834003101050DA0620208210624380A34001B8 -S3154001835002800005210000117FFFA3A99010203063 -S315400183602100001182142045C23620240311114DEB -S31540018370DA0620248210623780A34001028000057C -S31540018380821422477FFFA39E9010203182142247F8 -S31540018390C236202603111151DA0620248210624783 -S315400183A080A3400102800004010000007FFFA394E6 -S315400183B0901020327FFFFD2FA4102000C206E160FD -S315400183C080A48001168000151B100144D403616C02 -S315400183D096100001A010200080A4001D3680000CDC -S315400183E0A404A001832C800A9B286002992CA0102A -S315400183F082130010C226000DA004200180A4001D96 -S3154001840006BFFFFC9A036004A404A00180A4800B6C -S3154001841026BFFFF2A01020007FFFE49F90102000AE -S3154001842003000010808A000112BFFFFC010000001A -S31540018430A4102000C206E16080A4800116800114C8 -S31540018440921000127FFFFD8990100018151001440B -S31540018450C202A14C900A0001820E000180A20001D5 -S31540018460A404A00112BFFFF4901020337FFFA36440 -S3154001847001000000C206E16080A4800106BFFFF250 -S3154001848092100012308001027FFFA35D90102001FF -S3154001849010BFFE50833CE00C7FFFE47F901020002C -S315400184A0133FFFF09212603F920A0009A61000089E -S315400184B07FFFE47B901020007FFFE3D2A4102000D1 -S315400184C01303C0009214C0097FFFE4759010200089 -S315400184D080A4801616800009921000129016600042 -S315400184E07FFFFD0494102000A404A00180A48016FF -S315400184F006BFFFFB921000127FFFE3C2010000009E -S315400185007FFFE46590102000913A200A900A2003EB -S3154001851080A2200102800004010000007FFFA338F1 -S315400185209010200201000000921020009016600079 -S315400185307FFFFCE194102000010000007FFFE4561C -S31540018540901020001303C000922A00097FFFE454D3 -S3154001855090102000010000007FFFE3AA0100000007 -S315400185607FFFE44D90102000913A200C900A2003A1 -S3154001857080A2200102BFFE1E010000007FFFA32052 -S315400185809010200330BFFE1A921000127FFFFD4566 -S3154001859090100018901A200580A00008A2647FFF61 -S315400185A0A404A001C206E16080A4800106BFFFF8D1 -S315400185B09210001280A4600012BFFE63173FFFBFF6 -S315400185C030BFFE5E7FFFA30E9010200710BFFE3D19 -S315400185D0A41020007FFFA30A9010200530BFFE2D76 -S315400185E07FFFA3079010201130BFFE997FFFE42A39 -S315400185F090102000033FFFF08210603F920A000175 -S315400186007FFFE42790102000033FFFBFA010638047 -S3154001861092102000941020007FFFFCE2900680100B -S315400186207FFFE41D901020000303C0009212000159 -S315400186307FFFE41B9010200010800006A41020004C -S31540018640900680107FFFFCD794102005A404A0015A -S31540018650C206E16080A4800106BFFFFA92100012B3 -S31540018660033FFFBFA01063809A102001DA2E8010CD -S3154001867003004000D80680108210600580A30001E7 -S3154001868002800004010000007FFFA2DD9010200B54 -S315400186907FFFE40190102000913A2006900A2003C2 -S315400186A080A2200102800004010000007FFFA2D4C5 -S315400186B09010200C7FFFE3F8901020001303C000B8 -S315400186C0922A00097FFFE3F69010200092102000C5 -S315400186D0900680107FFFFCB3941020007FFFE3EEED -S315400186E0901020002103C000921200107FFFE3EC9E -S315400186F0901020007FFFE3E890102000808A001050 -S3154001870002BFFFFDA6100008A4102000C206E160CA -S3154001871080A480011680000E033FFFBF9A102001FE -S31540018720A2106380A12B401D921000129006801169 -S315400187307FFFFC8D94043FFFA404A001C206E160C3 -S3154001874080A4800106BFFFFA921000121303C000F5 -S31540018750922CC0097FFFE3D2901020002103C00074 -S315400187607FFFE3CD90102000808A001012BFFFFDED -S315400187701B004000213FFFBF82142380D8068001A1 -S315400187809A13600580A3000D0280000401000000D9 -S315400187907FFFA29B9010200D7FFFE3BF901020002A -S315400187A0913A2008900A200380A2200122800005E8 -S315400187B0A01423787FFFA2929010200FA014237853 -S315400187C094068010981020119A102055D83A8000AE -S315400187D07FFFE3B1901020000303C0009212000115 -S315400187E0920A7F3F7FFFE3AE90102000A0068010E3 -S315400187F07FFFE3CD9010001010800006A4102000EA -S31540018800900420047FFFFC6794102055A404A00126 -S31540018810C206E16080A4800106BFFFFA92100012F1 -S31540018820113FFFBF901223787FFFE3BF9006800878 -S3154001883080A220111280000480A2605502800004AB -S31540018840010000007FFFA26E901020107FFFE3928F -S3154001885090102000833A20068208600380A06001C0 -S3154001886002800004A61000087FFFA2659010201028 -S31540018870133C3FF09212603F920CC0097FFFE388A0 -S315400188809010200010BFFDDC821020057FFFE3829F -S31540018890901020009212200F7FFFE381901020005C -S315400188A081C7E00891E820009DE3BF987FFFFC93D4 -S315400188B001000000B0100008130020409212600F22 -S315400188C07FFFE377901020000100000081C7E00898 -S315400188D081E80000033FFFBF821063589DE380019A -S315400188E07FFFFBE401000000400002380100000068 -S315400188F07FFFE36990102008A21000087FFFE3661E -S315400189009010200C7FFFA24DA0100008912A200450 -S315400189107FFFA2369002200C973C6014833C60187E -S31540018920953C2014993C201882086003960AE00F72 -S31540018930820060019602E00AA33C6010A13C20102F -S31540018940980B2003940AA00FA728400B98032001F7 -S31540018950A20C6007A00C20079402A00A9A102001DD -S31540018960A2046002A0042002B12B000A03200000E9 -S31540018970AB2B4011A52B40109620401898057FFF40 -S31540018980822040139A04BFFFAE130001A213400B8D -S31540018990210000307FFFE34090102000808A0010C4 -S315400189A012BFFFFD033FFFBF9A07BFF8821063C0A6 -S315400189B0A00340012D155555901000189210001036 -S315400189C07FFFE2C89415A15580A220001280004B7A -S315400189D0292AAAAA92100010901000187FFFE2D50A -S315400189E0941522AA80A220001280004E01000000A8 -S315400189F07FFFA21201000000912A20047FFFA1FB04 -S31540018A009002200A400001EE01000000921522006A -S31540018A10920C400990100018941000119610001203 -S31540018A207FFFE2ED981522AA80A220001280005114 -S31540018A30010000009215A10090100018920C400907 -S31540018A4094100011961000127FFFE2E39815A1558C -S31540018A5080A2200012800044010000007FFFA1F7A0 -S31540018A6001000000912A20047FFFA1E09002200B23 -S31540018A70901000137FFFE2BF9215A15580A22000FE -S31540018A801280003501000000901000137FFFE2B90B -S31540018A90921522AA80A220001280002C010000001B -S31540018AA07FFFA1E601000000912A20047FFFA1CFAC -S31540018AB0900220099010001392100017941000158F -S31540018AC07FFFE2B8961522AA80A220001280001BE1 -S31540018AD00100000090100013921000179410001529 -S31540018AE07FFFE2B09615A15580A2200002800025A5 -S31540018AF0010000003080000E7FFFA1C190102001CF -S31540018B00292AAAAA92100010901000187FFFE28924 -S31540018B10941522AA80A2200002BFFFB601000000E0 -S31540018B207FFFA1B79010200230BFFFB27FFFA1B4F3 -S31540018B3090102008308000137FFFA1B190102007CC -S31540018B4010BFFFE6901000137FFFA1AD90102006E5 -S31540018B5030BFFFD47FFFA1AA9010200510BFFFCCE4 -S31540018B60901000137FFFA1A69010200430BFFFBCD8 -S31540018B707FFFA1A39010200310BFFFB09215A10063 -S31540018B807FFFFB3CB0102000400001900100000037 -S31540018B900100000081C7E00881E800009DE3BF981D -S31540018BA07FFFA18D1100412CDA062004D80620044E -S31540018BB09A0B6003993B200282102007C2262008A7 -S31540018BC0BA036001B20B27FF010000009010200A92 -S31540018BD0C02600007FFFA1850100000017000200AA -S31540018BE082103FFFC226000B032AAAAA1B15555520 -S31540018BF0D806000BAC102000821062AA9A13615568 -S31540018C00AA0B000180A5801D16800038A80B000D17 -S31540018C109612E020A72E600880A4E0000480000C94 -S31540018C20A2102000832DA0028200401819000200E4 -S31540018C309A10000BE820400CEA20400DA204601077 -S31540018C4080A4C01114BFFFFC82006040AC05A001A6 -S31540018C5080A5801D06BFFFF280A4E000AC10200075 -S31540018C6080A5801D1680002103000200B8106020F7 -S31540018C70A72E6008AE10001880A4E00004800017FB -S31540018C80A210200003000200A4060001A005C01C9A -S31540018C90C2048000A2046010A404A04080A0401435 -S31540018CA002800004901020017FFFA15501000000C1 -S31540018CB0C2040000A004204080A0401502800004A8 -S31540018CC0901020017FFFA14E0100000080A4C01139 -S31540018CD014BFFFF001000000AC05A00180A5801D76 -S31540018CE006BFFFE6AE05E0047FFFA1409010200CD1 -S31540018CF0AC10200080A5801D1680008803155555AF -S31540018D009E1061551B000800032AAAAA9A13600403 -S31540018D10901062AAA72E600880A4E0000480000E8D -S31540018D20A2102000832DA0138200401813000800D2 -S31540018D309410000F9610000D98100008D420400999 -S31540018D40D820400BA204600280A4C01114BFFFFCCE -S31540018D5082006008AC05A00180A5801D06BFFFF01A -S31540018D6080A4E000AC10200080A5801D1680006B19 -S31540018D7003155555B81061551B000800032AAAAAC8 -S31540018D80B6136004B41062AAA72E600880A4E0005E -S31540018D9004800019A2102000832DA013A0004018C2 -S31540018DA02F000800AA10001CA810001BA410001ACE -S31540018DB0C2040017A204600280A04015028000048C -S31540018DC0901020037FFFA10E01000000C204001491 -S31540018DD0A004200880A040120280000490102003C5 -S31540018DE07FFFA1070100000080A4C01114BFFFF15D -S31540018DF001000000AC05A00180A5801D06BFFFE56E -S31540018E0080A4E000AC10200080A5801D16800043A0 -S31540018E10030008009E1060041B155555032AAAAA93 -S31540018E209A136155901062AAA72E600880A4E000AB -S31540018E300480000EA2102000832DA013820040184A -S31540018E40130008009410000F9610000D98100008AA -S31540018E50D620400AD8204009A204600280A4C0114D -S31540018E6014BFFFFC82006008AC05A00180A5801DEF -S31540018E7006BFFFF080A4E000AC10200080A5801D55 -S31540018E801680002603155555B81061551B2AAAAA06 -S31540018E9003000800A72E6008B61362AAB410600446 -S31540018EA080A4E00004800019A2102000832DA013A5 -S31540018EB0A00040182F000800AA10001CA810001B93 -S31540018EC0A410001AC2040012A204600280A0401538 -S31540018ED002800004901020047FFFA0C90100000019 -S31540018EE0C2040017A004200880A040140280000498 -S31540018EF0901020047FFFA0C20100000080A4C01191 -S31540018F0014BFFFF101000000AC05A00180A5801D42 -S31540018F1006BFFFE580A4E00082102005C226200896 -S31540018F201B200000DA26000081C7E00881E8000026 -S31540018F3081C3E00891444000808000001510014043 -S31540018F409412A18090102000921022468180000048 -S31540018F50010000000100000001000000D002800075 -S31540018F609122400881C3E008010000008180000091 -S31540018F70901020018090200180D020011280002C89 -S31540018F800100000080D23FFF168000290100000049 -S31540018F9080DA3FFF9340000080A27FFF12800024C9 -S31540018FA00100000080D23FFF9348000093326014D5 -S31540018FB0920A600F80A260081280001D0100000025 -S31540018FC08180000090102001945220049452A00404 -S31540018FD09452A00496A2A040128000150100000000 -S31540018FE0818000009010200280A000003280001095 -S31540018FF09052000880A220021280000D010000005C -S31540019000818000009010200280A000000100000035 -S31540019010328000079052000880A22002128000048C -S315400190200100000081C3E0089010200181C3E008DF -S31540019030901000001315555592126155A5824000B6 -S31540019040010000000100000001000000954480007D -S3154001905080A2400A1280004301000000923A40007B -S31540019060A58240000100000001000000010000004F -S315400190709544800080A2400A1280003A0100000017 -S315400190801100003F901223FFA5800000818000005F -S3154001909001000000010000000100000093F23FFFC3 -S315400190A09A10000993F23FFF93F23FFF93F23FFF7D -S315400190B093F23FFF93F23FFF93F23FFF93F23FFF5D -S315400190C09940000097448000153FFC009412A00887 -S315400190D080A2400A1280002380A2400B1280002108 -S315400190E080A320071280001F113FFF8090122001AC -S315400190F080A340081280001B1100003F901223FFFD -S31540019100A5800000818000000100000001000000F0 -S315400191100100000093FA3FFF93FA3FFF93FA3FFFA6 -S3154001912093FA3FFF93FA3FFF93FA3FFF93FA3FFFCC -S3154001913093FA3FFF994000009744800080A260085F -S315400191401280000880A260081280000680A32000D9 -S31540019150128000040100000081C3E0089010200144 -S3154001916081C3E00890100000818000009010200229 -S3154001917080A00000328000109072000880A2200278 -S315400191801280000D01000000818000009010200235 -S3154001919080A00000010000003280000790720008A4 -S315400191A080A22002128000040100000081C3E00871 -S315400191B09010200181C3E00890100000C0A000403B -S315400191C081C3E00801000000110020409012200FE9 -S315400191D0D0A0004081C3E008010000009DE3BF9894 -S315400191E07FFFE12D90102008A21000087FFFE12AA1 -S315400191F09010200C833C60149B3A2014A13A20180D -S31540019200A33C6018A20C6003A00C20038208600FE7 -S315400192109A0B600F8200600A9A03600AA2046001F9 -S31540019220A0042001A32C40017FFFFFE5A12C000DE6 -S315400192307FFFE090901000117FFFE09C901000109E -S315400192407FFFF98C010000007FFFFFE081E800000D -S315400192500100000098120009818200009AAB2FFF9D -S315400192600280002598880000992300099923000966 -S315400192709923000999230009992300099923000993 -S315400192809923000999230009992300099923000983 -S315400192909923000999230009992300099923000973 -S315400192A09923000999230009992300099923000963 -S315400192B09923000999230009992300099923000953 -S315400192C09923000999230009992300099923000943 -S315400192D09923000999230009992300099923000933 -S315400192E099230009992300099923000081C3E008C5 -S315400192F09140000099230009992300099923000907 -S315400193009923000999230009992300099923000902 -S3154001931099230009992300099923000999230009F2 -S3154001932099230009992300009B400000992B200CAA -S315400193309B33601481C3E0089013400C1080000BEE -S31540019340861020008092400816800008861000088A -S31540019350809240001680000480920000168000032F -S3154001936092200009902000089A9240001280000540 -S315400193709610000891D0200281C3E00890100000A9 -S3154001938080A2C00D0A8000959410000003020000DF -S3154001939080A2C0010A8000289810000080A34001E5 -S315400193A01A80000D841020019B2B600410BFFFFC26 -S315400193B0980320019A83400D1A8000078400A0017A -S315400193C0832860049B3360019A03400110800007A3 -S315400193D08420A00180A3400B0ABFFFF701000000D3 -S315400193E0028000020100000084A0A00106800076F0 -S315400193F0010000009622C00D941020011080000A41 -S3154001940001000000952AA001068000059B336001FA -S315400194109622C00D108000049402A0019602C00D50 -S315400194209422A00184A0A00116BFFFF78092C0003C -S31540019430308000659B2B600480A3400B08BFFFFE74 -S315400194409883200102800065982320018092C00004 -S31540019450952AA0040680002F9B33600196A2C00D79 -S31540019460068000179B33600196A2C00D0680000B53 -S315400194709B33600196A2C00D068000059B336001B7 -S3154001948096A2C00D108000509402A00F9682C00D86 -S315400194901080004D9402A00D9682C00D06800005F5 -S315400194A09B33600196A2C00D108000479402A00B29 -S315400194B09682C00D108000449402A0099682C00D88 -S315400194C00680000B9B33600196A2C00D0680000505 -S315400194D09B33600196A2C00D1080003B9402A00709 -S315400194E09682C00D108000389402A0059682C00D68 -S315400194F0068000059B33600196A2C00D10800032A4 -S315400195009402A0039682C00D1080002F9402A00100 -S315400195109682C00D068000179B33600196A2C00D4E -S315400195200680000B9B33600196A2C00D06800005A4 -S315400195309B33600196A2C00D108000239402BFFFA9 -S315400195409682C00D108000209402BFFD9682C00D08 -S31540019550068000059B33600196A2C00D1080001A5B -S315400195609402BFFB9682C00D108000179402BFF98A -S315400195709682C00D0680000B9B33600196A2C00DFA -S31540019580068000059B33600196A2C00D1080000E37 -S315400195909402BFF79682C00D1080000B9402BFF56E -S315400195A09682C00D068000059B33600196A2C00DD0 -S315400195B0108000059402BFF39682C00D1080000210 -S315400195C09402BFF198A3200116BFFFA28092C0006A -S315400195D0268000029602C0098090C00026800002C3 -S315400195E09620000B81C3E0089010000B92100008F2 -S315400195F09010200094102000961020008213C00085 -S31540019600400000039E104000010000009DE3BF980A -S3154001961023100143400005F6901460F40310006DD9 -S31540019620E0006178D004214880A220002280002DEC -S315400196309004214CD602200480A2E01F1480001D14 -S315400196400100000080A620001280000B94022088B1 -S31540019650832AE0029A02E00182004008DA222004CD -S31540019660F2206008400005FA901460F41080002250 -S31540019670B0102000821020019328400B992AE00265 -S31540019680DA02A1009A1340098203000AF62060809B -S31540019690F422800C80A6200212BFFFEEDA22A1003E -S315400196A0C202A1048210400910BFFFEAC222A104EE -S315400196B0400000139010219080A220000280000BF0 -S315400196C096102000C2042148C2220000D02421481D -S315400196D0C0222004C022218810BFFFDBC022218C7A -S315400196E010BFFFD5D0242148400005D9901460F41D -S315400196F0B0103FFF81C7E00881E8000092100008E2 -S3154001970003100141D00063708213C0004000000A7B -S315400197109E10400001000000921000080310014114 -S31540019720D00063708213C000400002199E104000B1 -S31540019730010000009DE3BF988206600B80A0601681 -S31540019740A610001818800003A0087FF8A01020106A -S3154001975080A400199A4020008334201F8090400D38 -S31540019760128001B0B0102000400001B090100013EB -S3154001977080A421F718800017993420093910014136 -S315400197808217238098040001F003200C80A6000C68 -S315400197900280004E9F342003C206200494087FFCB9 -S315400197A09A06000AC203600482106001D006200CAA -S315400197B0D2062008D2222008C2236004D022600C9F -S315400197C0400001A09010001310800196B0062008B9 -S315400197D080A32000128000289F34200339100141C4 -S315400197E09B2BE003821723809A0340011080000AD5 -S315400197F0F003600C94087FFC9622801080A2E00F53 -S315400198001480010980A2E00036BFFFE79A06000AEC -S31540019810F006200C80A6000D32BFFFF7C2062004D9 -S315400198209E03E001251001419814A388F003200806 -S3154001983080A6000C0280005D833BE01FC206200427 -S3154001984094087FFC9622801080A2E00F1480009F2E -S3154001985080A2E000D823200C06800023D8232008CC -S315400198609A06000AC20360048210600110BFFFD548 -S31540019870C22360048334200680A3200408BFFFD896 -S315400198809E00603880A3201408BFFFD59E03205B4D -S315400198908334200C80A3205408BFFFD19E00606E04 -S315400198A08334200F80A3215408BFFFCD9E006077EB -S315400198B08334201280A3255408BFFFC99E00607CD3 -S315400198C010BFFFC79E10207E98062008F003200C8B -S315400198D080A6000C32BFFFB2C206200410BFFFD2E1 -S315400198E09E03E00280A2A1FF088000BE9B32A00336 -S315400198F09732A00980A2E0002280001796172380A4 -S315400199008332A00680A2E004088000129A006038E3 -S3154001991080A2E0140880000F9A02E05B8332A00C1B -S3154001992080A2E0540880000B9A00606E8332A00F3B -S3154001993080A2E154088000079A0060778332A01222 -S3154001994080A2E554088000039A00607C9A10207E2C -S3154001995096172380832B60039000400BD202200888 -S3154001996080A240082280010F99336002C20260043E -S3154001997082087FFC80A0400A28800007D002600C44 -S31540019980D202600880A2400832BFFFFAC2026004D8 -S31540019990D002600CD026200CD2262008F022600C82 -S315400199A0F0222008833BE01F8330601E8203C00102 -S315400199B03910014183386002981723809A1020019B -S315400199C0932B4001D803200480A2400C1880004B01 -S315400199D0AE172380808B00091280000D03100141D0 -S315400199E0820BFFFC92024009808B0009128000071E -S315400199F09E0060048210000C920240098088400952 -S31540019A0002BFFFFE9E03E00403100141A2106380E2 -S31540019A10A8100011832BE003980040119010000F0D -S31540019A209A10000C1080000AF003600C94087FFC29 -S31540019A309622801080A2E00F1480007D80A2E00073 -S31540019A403680008B9A06000AF006200C80A6000D8F -S31540019A5032BFFFF7C20620049E03E001808BE0037C -S31540019A6012BFFFF19A036008808A200398033FF8EA -S31540019A70028000D490023FFFC203200880A0400C20 -S31540019A8002BFFFFB808A200392024009C2052004DF -S31540019A9080A24001188000183910014180A260005F -S31540019AA0128000068088400910800014AE1723807A -S31540019AB09E03E0048088400922BFFFFE92024009CE -S31540019AC010BFFFD6832BE0038214200194060010B9 -S31540019AD0C2262004D423200CD42320088212E0017C -S31540019AE0D622800BD822A008C222A00410BFFF357F -S31540019AF0D822A00CAE172380F005E008C206200448 -S31540019B00AA087FFC80A540109A4020009625401067 -S31540019B1080A2E00F14800042821020018093400110 -S31540019B200280002703100143DA0061982D1001419C -S31540019B309A04000DC205A378A810001580A07FFFE6 -S31540019B40A203601002800004A406001582046FFF80 -S31540019B50A208700090100013400000C0921000113E -S31540019B6080A23FFF02800008B210000880A20012C6 -S31540019B701A8000463B10014380A60017228000440C -S31540019B80C207616882172380D8006008DA0320047F -S31540019B909A0B7FFC80A340109840200096234010EA -S31540019BA080A2E00F04800003821020018210200071 -S31540019BB080930001128000980100000098172380CD -S31540019BC0F003200882142001C22620049A060010C0 -S31540019BD08212E001C223600410BFFEFADA23200894 -S31540019BE098033FF8832B60039000400C9B3360023F -S31540019BF0821020018328400DD2022008DA03200476 -S31540019C009A134001D026200CD2262008F022600C5F -S31540019C10DA23200410BFFF64F022200810BFFFC0E2 -S31540019C208210200010BFFEFF9E03FFFFD006200CCE -S31540019C30D20620089A142001940600108214A388A3 -S31540019C40D2222008D022600CDA262004D420600CCF -S31540019C50D42060089A12E001D622800BC222A008C5 -S31540019C60DA22A00410BFFED7C222A00CC2036004B0 -S31540019C7082106001D006200CD2062008C22360045F -S31540019C8010BFFECFD2222008C20761688200401170 -S31540019C9080A640120280004FC2276168C205A378A0 -S31540019CA080A07FFF02800045C20761689A26401264 -S31540019CB08200400DC22761689A8E600702800005C6 -S31540019CC0A410200082102008A420400DB2064012A4 -S31540019CD09A0640119A0B6FFF030000048220400D43 -S31540019CE0A4048001901000134000005C9210001201 -S31540019CF080A23FFF2280003FA4102000822200194B -S31540019D009000401282172380DA0761689A03401255 -S31540019D1080A60001F2206008DA27616802800037D8 -S31540019D208212200180A5600F38800005C22660049A -S31540019D308210200110BFFF94C2266004C20620048F -S31540019D409A057FF4A80B7FF88208600182104014BF -S31540019D50C22620049A06001482102005C2236008F8 -S31540019D6080A5200F18800027C223600419100143E3 -S31540019D70DA076168C203219480A34001388000025A -S31540019D80DA23219419100143C203219080A3400193 -S31540019D9038BFFF7DDA23219010BFFF7C82172380D5 -S31540019DA09A102001C202E0049B2B400C8210400D08 -S31540019DB010BFFEF9C222E00410BFFFC0F225A3780E -S31540019DC0C20460048228400910BFFF30C2246004E7 -S31540019DD0808E6FFF12BFFFB3C205A3789004401473 -S31540019DE0DA05E0088212200110BFFFE1C2236004B8 -S31540019DF010BFFFC39010001910BFFFDDC2266004DB -S31540019E0092062008400000629010001310BFFFD94F -S31540019E10191001434000000B90100013B0102000B0 -S31540019E2081C7E00881E800001110014290122388A1 -S31540019E308213C000400003EE9E1040000100000066 -S31540019E4011100142901223888213C0004000040081 -S31540019E509E104000010000009DE3BF98211001447F -S31540019E60C02421704000020D9010001980A23FFFCE -S31540019E7012800006C204217080A0600002800003A7 -S31540019E8001000000C226000081C7E00891E80008F1 -S31540019E909DE3BF987FFFFFE5901000180310014135 -S31540019EA0A2106380DA046008C2036004A0087FFC44 -S31540019EB0B2240019B2066FEFB20E7000B2067000FE -S31540019EC09210200080A66FFF0480000A90100018AF -S31540019ED07FFFFFE201000000C204600882004010DB -S31540019EE080A04008922000190280000590100018B9 -S31540019EF07FFFFFD4B0102000308000237FFFFFD7C3 -S31540019F00901000188224001980A23FFF8210600140 -S31540019F1092102000191001430280000B9010001886 -S31540019F20DA046008C2236004C20321688220401912 -S31540019F30901000187FFFFFC3C223216810800012D2 -S31540019F40B01020017FFFFFC50100000098100008F6 -S31540019F50D6046008A023000B9010001880A4200F9F -S31540019F6004BFFFE4B214200103100141DA00637813 -S31540019F709A23000D03100143DA20616810BFFFDD0B -S31540019F80F222E00481C7E00881E800009DE3BF9822 -S31540019F9080A660000280009DA41000187FFFFFA3E9 -S31540019FA090100018A0067FF8D6042004900AFFFE00 -S31540019FB01910014194040008A2132380DA02A00477 -S31540019FC0C204600880A0400A028000449E0B7FFCC8 -S31540019FD0808AE001DE22A0041280000CB01020002D -S31540019FE0F2067FF8A024001982046008DA042008EA -S31540019FF080A340010280007D90020019D204200C0A -S3154001A000DA226008D223600C8202800FDA006004F3 -S3154001A010808B60011280000A8212200180A62000F6 -S3154001A020028000229002000FDA02A008D202A00CA0 -S3154001A030DA226008D223600C82122001C224200455 -S3154001A04080A6200002800005D0240008B01000122E -S3154001A0507FFFFF7C81E8000080A221FF1880003647 -S3154001A060973220099B32200398132380832B600368 -S3154001A0709200400C9B336002821020018328400DE0 -S3154001A080D6026008DA0320049A134001D224200C38 -S3154001A090D6242008E022E00CDA232004E0226008DE -S3154001A0A010BFFFECB010001203100141DA02A00804 -S3154001A0B08210638880A3400132BFFFDED202A00C2A -S3154001A0C0E023600CE0236008DA242008DA24200C1F -S3154001A0D010BFFFDAB0102001808AE001128000092A -S3154001A0E09002000FF2067FF8A0240019D204200C3A -S3154001A0F0D6042008D622600890020019D222E00C2C -S3154001A10003100141DA00637C98122001E0246008C3 -S3154001A11080A2000D0ABFFFCFD824200403100143BB -S3154001A120D20061987FFFFF5B901000127FFFFF45D1 -S3154001A13081E8000080A2E000028000169B322003E5 -S3154001A1408332200680A2E004088000129A0060381B -S3154001A15080A2E0140880000F9A02E05B8332200C53 -S3154001A16080A2E0540880000B9A00606E8332200F73 -S3154001A17080A2E154088000079A006077833220125A -S3154001A18080A2E554088000039A00607C9A10207EE4 -S3154001A19094132380832B60039200400AD602600801 -S3154001A1A080A2C0090280001399336002C202E00412 -S3154001A1B082087FFC80A0400828800007D202E00C7C -S3154001A1C0D602E00880A2C00932BFFFFAC202E0040B -S3154001A1D0D202E00CD224200CD6242008E022E00C46 -S3154001A1E010BFFFB0E022600810BFFF88B010200109 -S3154001A1F09A102001C202A0049B2B400C8210400DF4 -S3154001A20010BFFFF5C222A00481C7E00881E8000023 -S3154001A2109DE3BF98D206400080A2600012800004F0 -S3154001A220901000187FFFFF5A81E800007FFFFFF979 -S3154001A230010000007FFFFF5681E800000100000099 -S3154001A2409DE3BF9803100141DA00637080A6000DBB -S3154001A2500280004101000000D206204C80A260002D -S3154001A2601280001CA0102000D206214880A2600066 -S3154001A2702280000FD2062054A006214C80A2401015 -S3154001A2802280000BD206205410800005B21000092E -S3154001A290F20640007FFFFF3E9010001880A400198F -S3154001A2A012BFFFFC92100019D206205480A2600012 -S3154001A2B01280002501000000C206203880A06000FF -S3154001A2C0028000250100000010800017C206203CD4 -S3154001A2D0832C2002F202400180A660002280000BFE -S3154001A2E0A004200192100019F20640007FFFFF28CA -S3154001A2F09010001880A6600012BFFFFC9210001952 -S3154001A300D206204CA004200180A4200E04BFFFF2F7 -S3154001A310832C20027FFFFF1E9010001810BFFFD430 -S3154001A320D20621489FC0400090100018F20622E054 -S3154001A33080A6600002800008010000007FFFFFB593 -S3154001A34081E800007FFFFF129010001810BFFFDC6C -S3154001A350C206203881C7E00881E800009DE3BF9826 -S3154001A36080A620000280001D03100141E406214819 -S3154001A37080A4A00022800013C206203CE204A0046F -S3154001A380A2847FFF0C80000A832C60028200401267 -S3154001A390A0006008C20400009FC04000A0043FFC2A -S3154001A3A0A2847FFF3CBFFFFDC2040000E40480009D -S3154001A3B080A4A00032BFFFF3E204A004C206203C01 -S3154001A3C080A0600002800007010000009FC040009D -S3154001A3D0901000183080000310BFFFE5F000637055 -S3154001A3E081C7E00881E800001080000B861020003C -S3154001A3F08092400816800008861A400880924000E4 -S3154001A4001680000480920000168000039220000905 -S3154001A410902000089A92400012800005961000088C -S3154001A42091D0200281C3E0089010000080A2C00DA7 -S3154001A4300A800095941000000302000080A2C0012A -S3154001A4400A8000289810000080A340011A80000D60 -S3154001A450841020019B2B600410BFFFFC9803200150 -S3154001A4609A83400D1A8000078400A0018328600466 -S3154001A4709B3360019A034001108000078420A001AC -S3154001A48080A3400B0ABFFFF70100000002800002D3 -S3154001A4900100000084A0A0010680007601000000B2 -S3154001A4A09622C00D941020011080000A0100000080 -S3154001A4B0952AA001068000059B3360019622C00DB6 -S3154001A4C0108000049402A0019602C00D9422A001BE -S3154001A4D084A0A00116BFFFF78092C00030800065BE -S3154001A4E09B2B600480A3400B08BFFFFE988320018D -S3154001A4F002800065982320018092C000952AA0041D -S3154001A5000680002F9B33600196A2C00D068000177E -S3154001A5109B33600196A2C00D0680000B9B33600100 -S3154001A52096A2C00D068000059B33600196A2C00D20 -S3154001A530108000509402A00F9682C00D1080004DED -S3154001A5409402A00D9682C00D068000059B336001E2 -S3154001A55096A2C00D108000479402A00B9682C00DB2 -S3154001A560108000449402A0099682C00D0680000B1B -S3154001A5709B33600196A2C00D068000059B336001A6 -S3154001A58096A2C00D1080003B9402A0079682C00D92 -S3154001A590108000389402A0059682C00D0680000501 -S3154001A5A09B33600196A2C00D108000329402A00335 -S3154001A5B09682C00D1080002F9402A0019682C00D94 -S3154001A5C0068000179B33600196A2C00D0680000BE2 -S3154001A5D09B33600196A2C00D068000059B33600146 -S3154001A5E096A2C00D108000239402BFFF9682C00D33 -S3154001A5F0108000209402BFFD9682C00D06800005A2 -S3154001A6009B33600196A2C00D1080001A9402BFFBD5 -S3154001A6109682C00D108000179402BFF99682C00D34 -S3154001A6200680000B9B33600196A2C00D0680000593 -S3154001A6309B33600196A2C00D1080000E9402BFF7B5 -S3154001A6409682C00D1080000B9402BFF59682C00D14 -S3154001A650068000059B33600196A2C00D108000055F -S3154001A6609402BFF39682C00D108000029402BFF19E -S3154001A67098A3200116BFFFA28092C0002680000247 -S3154001A6809422A0018090C000268000029420000AF6 -S3154001A69081C3E0089010000A19100144DA032174BD -S3154001A6A080A3600012800006820340080310014423 -S3154001A6B09A106188DA23217482034008C2232174E7 -S3154001A6C081C3E0089010000DA7500000AE100001B4 -S3154001A6D08334E00129100143E8052038A92CC01430 -S3154001A6E08215000181E000008190400001000000D8 -S3154001A6F00100000001000000E03BA000E43BA0088F -S3154001A700E83BA010EC3BA018F03BA020F43BA0286E -S3154001A710F83BA030FC3BA03881E8000082100017CE -S3154001A72081C4400081CC800001000000010000008E -S3154001A73001000000A7500000A92CE0012B100143A5 -S3154001A740EA056038AB34C015AA154014819540001E -S3154001A75001000000010000000100000081E8000046 -S3154001A76081E80000E01BA000E41BA008E81BA01044 -S3154001A770EC1BA018F01BA020F41BA028F81BA0304E -S3154001A780FC1BA03881E0000081E0000081C440004C -S3154001A79081CC8000A75000002910006CADC5210472 -S3154001A7A00100000027100143A614E018E024C00070 -S3154001A7B0818C202001000000010000000100000002 -S3154001A7C09DE3BFA09DE3BFA09DE3BFA09DE3BFA0C6 -S3154001A7D09DE3BFA09DE3BFA09DE3BFA081E800002C -S3154001A7E081E8000081E8000081E8000081E800007E -S3154001A7F081E8000081E8000027100143A614E01813 -S3154001A800C024C000E203A068A4046004E223A0645B -S3154001A810E423A06810800262AC10000029100142B6 -S3154001A820A81523FCC2252000C8252004E0252010B8 -S3154001A830E2252014E4252018E825201C81E80000A3 -S3154001A8408348000082106F0081886020010000006B -S3154001A850010000000100000009100143C801203831 -S3154001A86081E000008821200180A920FF02800003A9 -S3154001A870010000000100000080A1000012BFFFF9A5 -S3154001A8800100000009100143C801203881E8000099 -S3154001A89080A920FF028000030100000001000000A2 -S3154001A8A08821200180A1000012BFFFF901000000AC -S3154001A8B081E0000029100142A81523FCC8052004A7 -S3154001A8C0C2052000E0052010E2052014E405201809 -S3154001A8D0C025201C818C20000100000001000000E1 -S3154001A8E00100000081C4800081CCA004A0142F0087 -S3154001A8F0818C000001000000010000000100000001 -S3154001A90081C4800081CCA00480A66002128000052B -S3154001A910A8142F00818D0000B01420203080001F24 -S3154001A92080A6600312800006A80E2F00AA2C2F00D5 -S3154001A930A8154014818D00003080001880A660045F -S3154001A94012800008A9480000A8152040818D00000A -S3154001A9500100000001000000010000003080000FEE -S3154001A96080A6600512800008A9480000A82D204055 -S3154001A970818D00000100000001000000010000007F -S3154001A9803080000680A660061280000301000000A8 -S3154001A99030BFFFA391D0200081C4800081CCA004A8 -S3154001A9A09210200381C3E00891D020029210200228 -S3154001A9B081C3E00891D020029210200681C3E008AD -S3154001A9C091D0200281C3E0080100000081C3E00864 -S3154001A9D00100000081C3E00801000000AE25A0107F -S3154001A9E0A75000002D10006AAC15A1F02910006C8B -S3154001A9F081C522AC010000001110014390122024B0 -S3154001AA00D202000092026001D2220000932DE0089A -S3154001AA10902C2F0092120009111001439012201C14 -S3154001AA20D002000080A000082280000292126F002E -S3154001AA30818A602001000000010000000100000041 -S3154001AA4090100017400000319203A06092142F002D -S3154001AA50818A602001000000010000000100000021 -S3154001AA601110014390122024D2020000922260016B -S3154001AA70D22200001080022DAC1000001B100144B0 -S3154001AA809A13602C912A2002C2034008C222600C0C -S3154001AA9081C3E008D22340089DE3BF9803100144D7 -S3154001AAA08210602C992E60021B100143972E600480 -S3154001AAB0D800400C9A13622C901000199202C00DD6 -S3154001AAC080A6601F1480000F8210200010800006AF -S3154001AAD080A320002280000AC2024000D803200C35 -S3154001AAE080A3200012BFFFFC80A300097FFFFFE483 -S3154001AAF0F02240001080000382102000F022400026 -S3154001AB0081C7E00891E800019DE3BF981B1001430E -S3154001AB1082136028D800600480A300180280004494 -S3154001AB20C203602880A6200022800002B010000CDB -S3154001AB3003100144A32E20028210602CE000401134 -S3154001AB4080A420000280003D0310014310800012C2 -S3154001AB50A41061A8D2042008941000199FC30000D4 -S3154001AB609010001803100143C20061A080A060004C -S3154001AB701280002B01000000C204801182007FFF79 -S3154001AB80C2248011E004200C80A420000280002B06 -S3154001AB9001000000D804000080A3200022BFFFFB73 -S3154001ABA0E004200C03100143DA00622880A3600010 -S3154001ABB0128000089610001203100143821061A80A -S3154001ABC0DA00401180A3600032BFFFF0E004200CA0 -S3154001ABD0DA02C011031001439A036001C20061A465 -S3154001ABE080A0600002BFFFDCDA22C0119FC0400096 -S3154001ABF001000000D8040000D20420089410001976 -S3154001AC009FC300009010001803100143C20061A0C9 -S3154001AC1080A0600022BFFFDAC20480119FC04000BD -S3154001AC200100000010BFFFD6C2048011DA0060C0E7 -S3154001AC3010BFFFBDB00B601F81C7E00881E800006F -S3154001AC408C10000FA74800008B34E0188A09600F6A -S3154001AC5080A160030280000C0B1001438A11603011 -S3154001AC600920000088112070C82140000B100143C3 -S3154001AC708A1160500920000088112040C8214000F7 -S3154001AC80108000399010200192102006400001DD0D -S3154001AC900100000080A0000802800033010000008E -S3154001ACA0C2022010113FFC0082084008110003FC3B -S3154001ACB08410400890100002921020019410200C3C -S3154001ACC0400001E60100000080A000080280002645 -S3154001ACD001000000400001F6921000010B100143F3 -S3154001ACE08A116030D221400090100002921020015A -S3154001ACF094102011400001D90100000080A00008F5 -S3154001AD000280001901000000400001E99210000193 -S3154001AD10920260100B1001438A116050D22140000B -S3154001AD2090100002921020019410200D400001CB9A -S3154001AD300100000080A000080280000B0100000015 -S3154001AD40400001DB921000010B1001438A1160287B -S3154001AD50D2214000D40260109532A010940AA00F6F -S3154001AD60D42160049E10000681C3E0080100000062 -S3154001AD7003100143821060488210200191D02000C7 -S3154001AD8081C3E008010000009DE3BF980310014420 -S3154001AD90C20060C8901000189210001980A060008F -S3154001ADA002800005B01020009FC040000100000055 -S3154001ADB0B010000881C7E00881E800009DE3BF9814 -S3154001ADC003100144C20060C49010001880A06000C6 -S3154001ADD002800005B01020009FC040000100000025 -S3154001ADE0B010000881C7E00881E800009DE3BF98E4 -S3154001ADF003100144C20060BC9010001880A060009E -S3154001AE0002800005B01020009FC0400001000000F4 -S3154001AE10B010000881C7E00881E800009DE3BF98B3 -S3154001AE2003100144C20060C09010001880A0600069 -S3154001AE3002800005B01020009FC0400001000000C4 -S3154001AE40B010000881C7E00881E800009DE3BF9883 -S3154001AE5003100144C20060B89010001880A0600041 -S3154001AE6002800005B01020009FC040000100000094 -S3154001AE70B010000881C7E00881E800009DE3BF9853 -S3154001AE8003100144C20060B49010001880A0600015 -S3154001AE9002800005B01020009FC040000100000064 -S3154001AEA0B010000881C7E00881E800009DE3BF9823 -S3154001AEB003100144C20060B09010001880A06000E9 -S3154001AEC002800005B01020009FC040000100000034 -S3154001AED0B010000881C7E00881E800009DE3BF98F3 -S3154001AEE003100144C20060AC901000189210001982 -S3154001AEF080A0600002800005B01020009FC0400085 -S3154001AF0001000000B010000881C7E00881E8000098 -S3154001AF10010000000310006B821063E09FC04000F7 -S3154001AF20010000000310000082106000819840007B -S3154001AF300310006C821060649FC040000100000055 -S3154001AF400310006B821063D09FC0400001000000D7 -S3154001AF508B4800008B3160188A09600380A1600329 -S3154001AF6012800007010000008B4440008B31601CB9 -S3154001AF7080A1400012800006010000007FFFFF31E2 -S3154001AF80010000007FFF9879010000009C23A0404A -S3154001AF907FFF981C010000008210200191D0200003 -S3154001AFA00100000029000004A68C00143280000331 -S3154001AFB0A02C001491D02000818C000001000000DB -S3154001AFC0010000000100000081C4800081CCA00482 -S3154001AFD081C3E0080100000081C1E00801000000D2 -S3154001AFE0A74800008B34E0188A09600380A16003FA -S3154001AFF0128000080100000021100143A0142040E6 -S3154001B000A2102003E22400008B4440001080000877 -S3154001B01021100143A0142040A2102002E224000086 -S3154001B02021200000E60420248B34E0148A09601FA5 -S3154001B03027100143A614E038CA24C0008A016001E2 -S3154001B04027100143A614E034CA24C0002710014347 -S3154001B050A614E03C8A216002CA24C00081C3E008EC -S3154001B0600100000081C3E0080100000083480000A0 -S3154001B070833060188208600380A060031280000656 -S3154001B0800100000083444000050000088228400278 -S3154001B090A3804000881000000910006B81C1231471 -S3154001B0A0010000009DE3BF980310006D1B10006D69 -S3154001B0B0A01061609A13616080A4000D1A8000108F -S3154001B0C0A210000D10800006C204000080A40011E9 -S3154001B0D01A80000B01000000C204000080A060003D -S3154001B0E002BFFFFBA00420049FC0400001000000F6 -S3154001B0F080A400112ABFFFFAC204000081C7E008FC -S3154001B10081E80000AA27A0B0E0256060E2256064DE -S3154001B110E4256068C2256074C43D6078C83D60809E -S3154001B120CC3D608885400000C425606CF03D609050 -S3154001B130F43D6098F83D60A0FC3D60A8A810200150 -S3154001B140A92D0010808D001302800013010000001C -S3154001B1508534E00107100143C600E038A72CC0033F -S3154001B1608414C0028408A0FF81E000008190A00001 -S3154001B170E03BA000E43BA008E83BA010EC3BA01854 -S3154001B180F03BA020F43BA028F83BA030FC3BA03884 -S3154001B19081E8000081C5A0089C10001505100143F7 -S3154001B1A08410A19CC400800080A08000028000041D -S3154001B1B0010000009FC080009203A060818C2000A6 -S3154001B1C0821020028328401005100143C400A03498 -S3154001B1D085304002821040028550000080888001FF -S3154001B1E0028000208328A00107100143C600E038F1 -S3154001B1F08530800382104002820860FF81906000A2 -S3154001B200C203A06C81806000F01BA090F41BA09843 -S3154001B210F81BA0A0FC1BA0A8C203A074C41BA07865 -S3154001B220C81BA080CC1BA088E003A060E203A064F9 -S3154001B230E403A06881E80000E01BA000E41BA0082D -S3154001B240E81BA010EC1BA018F01BA020F41BA028A3 -S3154001B250F81BA030FC1BA0381080000F81E00000D5 -S3154001B260C203A06C81806000F01BA090F41BA098E3 -S3154001B270F81BA0A0FC1BA0A8C203A074C41BA07805 -S3154001B280C81BA080CC1BA088E003A060E203A06499 -S3154001B290E403A068818C2000010000000100000049 -S3154001B2A00100000081C4400081CC8000AA27A0B0E3 -S3154001B2B0C2256074C43D6078C83D6080CC3D6088DD -S3154001B2C085400000C425606CA8102001A92D0010FE -S3154001B2D0808D001302800013010000008534E001D7 -S3154001B2E007100143C600E038A72CC0038414C002EE -S3154001B2F08408A0FF81E000008190A000E03BA0000F -S3154001B300E43BA008E83BA010EC3BA018F03BA02092 -S3154001B310F43BA028F83BA030FC3BA03881E8000074 -S3154001B32081C5A0089C100015051001438410A19CFD -S3154001B330C400800080A0800002800004010000005B -S3154001B3409FC080009203A060818C20008210200261 -S3154001B3508328401005100143C400A03485304002C3 -S3154001B36082104002855000008088800102800019C9 -S3154001B3708328A00107100143C600E03885308003C9 -S3154001B38082104002820860FF81906000C203A06C77 -S3154001B39081806000C203A074C41BA078C81BA08032 -S3154001B3A0CC1BA08881E80000E01BA000E41BA0089C -S3154001B3B0E81BA010EC1BA018F01BA020F41BA02832 -S3154001B3C0F81BA030FC1BA0381080000881E000006B -S3154001B3D0C203A06C81806000C203A074C41BA07824 -S3154001B3E0C81BA080CC1BA088818C200001000000D6 -S3154001B3F0010000000100000081C4400081CC8000B2 -S3154001B400821000089A10380096102000912AE00513 -S3154001B41098034008D40340089132A01880A2000145 -S3154001B420328000089602E0019132A00C900A2FFF6B -S3154001B43080A20009028000079410000C9602E001E8 -S3154001B44080A2E00728BFFFF3912AE005941020006F -S3154001B45081C3E0089010000A82100008981020006D -S3154001B460912B20039A004008D60040089132E018FB -S3154001B47080A2000932800008980320019132E00C35 -S3154001B480900A2FFF80A2000A028000079610000D45 -S3154001B4909803200180A3200F28BFFFF3912B20039F -S3154001B4A09610200081C3E0089010000BD4022004BE -S3154001B4B0173FFC00920A400B900A800B9132200CF8 -S3154001B4C0921240081100003F901223F0940A80081E -S3154001B4D0952AA0049412800B920A400A81C3E0087F -S3154001B4E0901000099DE3BF980310006D82106148DA -S3154001B4F0DA007FFC80A37FFF02800009A0007FFC69 -S3154001B5008210000D9FC04000A0043FFCC204000011 -S3154001B51080A07FFF12BFFFFC0100000081C7E00849 -S3154001B52081E800009DE3BF9881C7E00881E80000FB -S3154001B53000000000000000000000000000000000C4 -S3154001B54000000002FFFFFFFF0000000000000000B6 -S3154001B55000000002FFFFFFFF0000000000000000A6 -S3154001B56040080000000000003CD203AF9EE756169B -S3154001B5703E7AD7F29ABCAF4840050220000000004F -S3154001B580430000009DE3BFA07FFF96DB0100000062 -S3154001B5907FFFFFD50100000081C7E00881E8000078 -S3154001B5A09DE3BFA07FFF96B60100000081C7E0087A -S3154001B5B081E80000000000000000000000000000DB -S315400200000000000100000000000000004001B55859 -S315400200102000000000000000000000000000000078 -S315400200200000000000000000000000000000000088 -S315400200300000000000000000000000000000000078 -S315400200400000000000000000000000000000000068 -S315400200500000000000000000000000010000000057 -S315400200600000000000000000000000000000000048 -S315400200700000000000000000000000000000000038 -S315400200800000000000000000000000000000000028 -S315400200900000000000000000000000000000000117 -S315400200A00000000000000000000000000000000008 -S315400200B000000000000000000000000000000000F8 -S315400200C000000000000000000000000000000000E8 -S315400200D000000000000000000000000000000000D8 -S315400200E00000000100000000000000410000000086 -S315400200F0343074693934612B3079676979753035B2 -S315400201007968617035796934682B612B69697978C8 -S315400201106869346B35396A30713930356A6B6F7953 -S3154002012070686F70746A72686961346979302B34A9 -S315400201300000000000000000000000010000000076 -S3154002014040000000000000004008000000000000DF -S31540020150401800000000000080000000000000007F -S315400201600000000000000000BFF000000000000098 -S31540020170BF800000000000000000000000000000F8 -S315400201800000000000000000000000000000000027 -S315400201903FF00000000000004008000000000000A0 -S315400201A03FF0000040000000000000000000000098 -S315400201B03F800000404000000000000000000000B8 -S315400201C000000000000000000000000000000000E7 -S315400201D0000000000000000048000001000000008E -S315400201E0480000000000000046C000000000000079 -S315400201F03FF0000000000000400000000000000048 -S3154002020040080000000000003F800000000000009F -S31540020210529000000000000052900FF807F60DEBD6 -S3154002022052901FE03F61BAD052902FB8D4E30F48A4 -S3154002023052903F81F636B80C52904F3BD03C0A64FE -S3154002024052905EE68EFAD48B52906E825DA8FC2B5B -S3154002025052907E0F66AFED0752908D8DD3B1D9AADB -S3154002026052909CFDCD8ED0095290AC5F7C69A3C85A -S315400202705290BBB307ACAFDB5290CAF8960E710DE3 -S315400202805290DA304D95FB065290E95A539F492CCB -S315400202905290F876CCDF6CD952910785DD689A295F -S315400202A052911687A8AE14A35291257C5187FD0917 -S315400202B052913463FA37014E5291433EC467EFFB83 -S315400202C05291520CD1372FEB529160CE41341D746C -S315400202D052916F8334644DF952917E2BCA46BAB914 -S315400202E052918CC821D6D3E352919B58598F7C9F09 -S315400202F05291A9DC8F6DF1045291B854E0F496A064 -S315400203005291C6C16B2DB8705291D5224AAE2EE19A -S315400203105291E3779B97F4A85291F1C1799CA8FF39 -S31540020320529200000000000052920E33499A21A9CF -S3154002033052921C5B70D9F82452922A788FC76DE587 -S315400203405292388AC0059C28529246921AD4EA4959 -S315400203505292548EB9151E8552926280B347609668 -S315400203605292706821902E9A52927E451BB944C38E -S3154002037052928C17B9337834529299E01118857596 -S315400203805292A79E3A2CD2E65292B5524AE1278E13 -S315400203905292C2FC595456A75292D09C7B54E03E8C -S315400203A05292DE32C66287415292EBBF4FAFDD4B6D -S315400203B05292F9422C23C47E529306BB705AE7C32B -S315400203C05293142B30A929AB52932191811B0A4196 -S315400203D052932EEE7577041652933C42213EE0C963 -S315400203E05293498C97B10540529356CDEBC9B5E22B -S315400203F0529364063044530652937135779C8DCBA3 -S3154002040052937E5BD40F95A152938B79579D3EAB07 -S315400204105293988E1409212E5293A59A1ADBB257FB -S315400204205293B29D7D6356625293BF984CB56C7798 -S315400204305293CC8A99AF54535293D97474F76DF24E -S315400204405293E655EEFE13675293F32F17FE8D0431 -S31540020450529400000000000052940CC8B6D657C20F -S31540020460529419894C2329F052942641CF569572BB -S31540020470529432F24FB01C7A52943F9ADC3F79CE74 -S3154002048052944C3B83E57153529458D455549C1A1A -S31540020490529465655F122FF6529471EEAF76C2C6DC -S315400204A052947E7054AF098952948AEA5CBC935F37 -S315400204B05294975CD57680885294A3C7CC8A358A63 -S315400204C05294B02B4F7C0A885294BC876BA7F6ECA9 -S315400204D05294C8DC2E4239805294D529A457FCFC4A -S315400204E05294E16FDACFF9375294EDAEDE6B10FEDD -S315400204F05294F9E6BBC4ECB3529506177F5491BBAE -S3154002050052951241356CF6E052951E63EA3D95B01E -S3154002051052952A7FA9D2F8EA529536948017481006 -S31540020520529542A278D2D03652954EA99FAC8A0FA6 -S3154002053052955AAA002A9D5A529566A3A5B2E1B18E -S31540020540529572969B8B5CD852957E82ECDABE8D22 -S3154002055052958A68A4A8D9F352959647CDDF1CA531 -S315400205605295A220734903775295ADF29F948CFB24 -S315400205705295B9BE5D52A9DA5295C583B6F7AB0319 -S315400205805295D142B6DBADC55295DCFB673B05DFE2 -S315400205905295E8ADD236A58F5295F45A01D483B41A -S315400205A0529600000000000052960B9FD68A455490 -S315400205B0529617398F2AAA48529622CD337F0FE890 -S315400205C052962E5ACD0C3EBE529639E2653E421B9B -S315400205D0529645640568C1C3529650DFB6C759F470 -S315400205E052965C55827DF1D2529667C57199104BEF -S315400205F05296732F8D0E2F7752967E93DDBC0E73D5 -S31540020600529689F26C6B01D05296954B41CD4293EC -S315400206100BC0A4068F346C9B0BC093731C185447B3 -S315400206200BC083008E183C230BC072AE83A9704A5E -S315400206300BC0627C9CC166FF0BC0526A7ACE64A430 -S315400206400BC04277C0B04ADA0BC032A412B191A0B5 -S315400206500BC022EF168069500BC0135873280473DF -S315400206600BC003DFD10A08480BBFE909B3B04632D3 -S315400206700BBFCA8E711B8E880BBFAC4D32D4143061 -S315400206800BBF8E4553D34B1B0BBF7076318237EF70 -S315400206900BBF52DF2BADF99C0BBF357FA47C936C0D -S315400206A00BBF18570061F5EB0BBEFB64A61545154B -S315400206B00BBEDEA7FE865A2B0BBEC22074D37FBC6E -S315400206C00BBEA5CD763F66690BBE89AE722750F04A -S315400206D00BBE6DC2D9F976230BBE520A212B976CFB -S315400206E00BBE3683BD31CAA20BBE1B2F257575CAFA -S315400206F00BBE000BD34C7BAF0BBDE51941F097FE09 -S315400207000BBDCA56EE76E9D00BBDAFC457C7AB7325 -S315400207100BBD9560FE9616690BBD7B2C65587275AE -S315400207200BBD612610404EC00BBD474D8532E409D4 -S315400207300BBD2DA24BC19EDF0BBD1423ED22D10171 -S315400207400BBCFAD1F42A88E40BBCE1ABED438E80B4 -S315400207500BBCC8B1666884820BBCAFE1EF1D2D01AC -S315400207600BBC973D1867D0EF0BBC7EC274CAC962F8 -S315400207700BBC6671983E29FE0BBC4E4A18298BA9C2 -S315400207800BBC364B8B5DF6DB0BBC1E758A0FECBF82 -S315400207900BBC06C7ADD18E7E0BBBEF41918CE1F609 -S315400207A00BBBD7E2D17E33360BBBC0AB0B2E921BB3 -S315400207B00BBBA999DD6E6B650BBB92AEE8503CA7AD -S315400207C00BBB7BE9CD2362720BBB654A2E6F002CB5 -S315400207D00BBB4ECFAFED00FE0BBB3879F685313FF2 -S315400207E00BBB2248A8486FDE0BBB0C3B6C6BF73B3E -S315400207F00BBAF651EB44BCEE0BBAE08BCE42E7F1B4 -S315400208000BBACAE8BFED5CC00BBAB5686BDD5EDDFC -S315400208100BBAA00A7EBA475E0BBA8ACEA6354FEB12 -S315400208200BBA75B4910571DB0BBA60BBEEE358EFB8 -S315400208300BBA4BE4708569410BBA372DC79BD7FE7D -S315400208400BBA2297A6CCD68C0BBA0E21C1B0CFA03A -S315400208500BB9F9CBCCCEB6050BB9E5957D98648B31 -S315400208600BB9D17E8A670EE70BB9BD86AA77C3104C -S315400208700BB9A9AD95E7FAC40BB995F305B23CE5B8 -S315400208800BB98256B3AACE570BB96ED85A7C7206AA -S315400208900BB95B77B5A537C80BB94834817359CCC8 -S315400208A00BB9350E7B02284D0BB922056037032E54 -S315400208B00BB90F18EFBE614A0BB8FC48E908E522AE -S315400208C00BB8E9950C487EA90BB8D6FD1A6D99E886 -S315400208D00BB8C480D5245A340BB8B21FFED1E1BC42 -S315400208E00BB89FDA5A91A5260BB88DAFAC32CB0A1C -S315400208F00BB87B9FB83596F60BB869AA43C8DFE1B9 -S315400209000BB857CF14C791B50BB8460DF1B639C6D9 -S315400209100BB83466A1C09DF90BB822D8ECB75E6E0F -S315400209200BB811649B0DA16B0BB8000975D6C9595A -S315400209300BB7EEC746C434A50BB7DD9DD823075285 -S315400209400BB7CC8CF4D9FE010BB7BB9468674A50FF -S315400209500BB7AAB3FEDE78540BB799EB84E65D0C6F -S315400209600BB7893AC7B70D960BB778A19517DF0132 -S315400209700BB7681FBB5D6E910BB757B50967B24C93 -S315400209800BB747614EA011A20BB737245AF786140C -S315400209900BB726FDFEE4C3A00BB716EE0B6268E862 -S315400209A00BB706F451ED36CE0BB6F710A4824F8044 -S315400209B00BB6E742D59D7CB40BB6D78AB8377D0EC7 -S315400209C00BB6C7E81FC458720BB6B85AE031BB32F1 -S315400209D00BB6A8E2CDE557F90BB6997FBDBB50459C -S315400209E00BB68A318504A35C0BB67AF7F985A39BCD -S315400209F00BB66BD2F17471FF0BB65CC243777FCEF6 -S31540020A000BB64DC5C6A416420BB63EDD527CE4116A -S31540020A100BB63008BEF090CF0BB62147E45855EBE3 -S31540020A200BB6129A9B769D520BB60400BD75A584F1 -S31540020A300BB5F57A23E62B070BB5E706A8BE172CAE -S31540020A400BB5D8A6265733FF0BB5CA58776DE54B7B -S31540020A500BB5BC1D771FE6AB0BB5ADF500EB0E78BB -S31540020A600BB59FDEF0AC15940BB591DB229D63F27C -S31540020A700BB583E97355E1C10BB57609BFC7CD32D4 -S31540020A800BB5683BE53F94B80BB55A7FC162B5B624 -S31540020A900BB54CD5322E9F7F0BB53F3C15F79AA12D -S31540020AA00BB531B44B67B45A0BB5243DB17DAE306C -S31540020AB00BB516D8278BF18F0BB509838D37876710 -S31540020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB69 -S31540020AD00BB4E1EA1D1EA6680BB4D4D8040308E59C -S31540020AE00BB4C7D63D722B370BB4BAE4AAEBF9481E -S31540020AF00BB4AE032E3C2D7E0BB4A131A97965C948 -S31540020B000BB4946FFF043C1C0BB487BE118662364D -S31540020B100BB47B1BC3F1C0BF0BB46E88F97F999BA4 -S31540020B200BB4620595AFAD730BB455917C476454D3 -S31540020B300BB4492C9150F96C0BB43CD6B91AA9C8DE -S31540020B400BB4308FD835E60B0BB42457D3768716C1 -S31540020B500BB4182E8FF205900BB40C13F2FEB43B75 -S31540020B600BB40007E232FD1F0BB3F40A4364A167DC -S31540020B700BB3E81AFCA7FBF00BB3DC39F44F468AF9 -S31540020B800BB3D06710E9E1C30BB3C4A239439F4FFD -S31540020B900BB3B8EB54640EF10BB3AD42498DCDDFC6 -S31540020BA00BB3A1A7003DD89B0BB39619602ADF2B46 -S31540020BB00BB38A9951449BB80BB37F26BBB32B79AF -S31540020BC00BB373C187D669EA0BB368699E454E4437 -S31540020BD00BB35D1EE7CD4B2D0BB351E14D71B09872 -S31540020BE00BB346B0B86B0FC30BB33B8D1226A15A5B -S31540020BF00BB330764445ADAC0BB3256C389CF6EB63 -S31540020C000BB31A6ED934256E0BB30F7E104535F5EC -S31540020C100BB30499C83BE9D60BB2F9C1EBB53923FC -S31540020C200BB2EEF6657EC6AA0BB2E437209655D5D0 -S31540020C300BB2D984082942630BB2CEDD0793F9E79A -S31540020C400BB2C4420A6177190BB2B9B2FC4ABEDA98 -S31540020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1F9 -S31540020C600BB29A4CA48F90E30BB28FEC8BA9777997 -S31540020C700BB28597FF1D694D0BB27B4EEBAE48DD3D -S31540020C800BB271113E499CEE0BB266DEE4071AA81E -S31540020C900BB25CB7CA2831380BB2529BDE1796F7B5 -S31540020CA00BB2488B0D68D8030BB23E8545D7E65A40 -S31540020CB00BB2348A7548AB540BB22A9A89C69A97B4 -S31540020CC00BB220B5718446610BB216DB1ADAF53FD8 -S31540020CD00BB20D0B744A39100BB203466C77876C14 -S31540020CE00BB1F98BF22DD3490BB1EFDBF45D27FF44 -S31540020CF00BB1E636621A457E0BB1DC9B2A9E3DD588 -S31540020D000BB1D30A3D4613EE0BB1C98389925B817F -S31540020D100BB1C006FF26DA3F0BB1B6948DCA2A281C -S31540020D200BB1AD2C25655D0F0BB1A3CDB603A13D2D -S31540020D300BB19A792FD1E7410BB1912E831E88D2FE -S31540020D400BB187EDA058F0D60BB17EB6781144733D -S31540020D500BB17588FAF80D3A0BB16C6519DDE45D95 -S31540020D600BB1634AC5B31EEF0BB15A39EF877B28E5 -S31540020D700BB151328889CEAE0BB148348207B5DB0E -S31540020D800BB13F3FCD6D43FF0BB136545C44B49A31 -S31540020D900BB12D7220361D870BB124990B07221BEE -S31540020DA00BB11BC90E9AA72D0BB113021CF0880F6B -S31540020DB00BB10A4428254C650BB1018F2271DEE541 -S31540020DC00BB0F8E2FE2B44F40BB0F03FADC2572312 -S31540020DD00BB0E7A523C37A850BB0DF1352D65AD997 -S31540020DE00BB0D68A2DBDA58C0BB0CE09A756C589A8 -S31540020DF00BB0C591B2999FDB0BB0BD2242985115FB -S31540020E000BB0B4BB4A7EEB870BB0AC5CBD933636B7 -S31540020E1065300000653010006530200065303000D6 -S31540020E2065304000653050006530600065307000C6 -S31540020E3065308000653090006530A0006530B000B6 -S31540020E406530C0006530D0006530E0006530F000A6 -S31540020E506531000065311000653120006531300092 -S31540020E606531400065315000653160006531700082 -S31540020E7065318000653190006531A0006531B00072 -S31540020E806531C0006531D0006531E0006531F00062 -S31540020E90653200006532100065322000653230004E -S31540020EA0653240006532500065326000653270003E -S31540020EB065328000653290006532A0006532B0002E -S31540020EC06532C0006532D0006532E0006532F0001E -S31540020ED0653300006533100065332000653330000A -S31540020EE065334000653350006533600065337000FA -S31540020EF065338000653390006533A0006533B000EA -S31540020F006533C0006533D0006533E0006533F000D9 -S31540020F1065340000653410006534200065343000C5 -S31540020F2065344000653450006534600065347000B5 -S31540020F3065348000653490006534A0006534B000A5 -S31540020F406534C0006534D0006534E0006534F00095 -S31540020F506535000065351000653520006535300081 -S31540020F606535400065355000653560006535700071 -S31540020F7065358000653590006535A0006535B00061 -S31540020F806535C0006535D0006535E0006535F00051 -S31540020F90653600006536100065362000653630003D -S31540020FA0653640006536500065366000653670002D -S31540020FB065368000653690006536A0006536B0001D -S31540020FC06536C0006536D0006536E0006536F0000D -S31540020FD065370000653710006537200065373000F9 -S31540020FE065374000653750006537600065377000E9 -S31540020FF065378000653790006537A0006537B000D9 -S315400210006537C0006537D0006537E0006537F000C8 -S3154002101065380000653810006538200065383000B4 -S3154002102065384000653850006538600065387000A4 -S3154002103065388000653890006538A0006538B00094 -S315400210406538C0006538D0006538E0006538F00084 -S315400210506539000065391000653920006539300070 -S315400210606539400065395000653960006539700060 -S3154002107065398000653990006539A0006539B00050 -S315400210806539C0006539D0006539E0006539F00040 -S31540021090653A0000653A1000653A2000653A30002C -S315400210A0653A4000653A5000653A6000653A70001C -S315400210B0653A8000653A9000653AA000653AB0000C -S315400210C0653AC000653AD000653AE000653AF000FC -S315400210D0653B0000653B1000653B2000653B3000E8 -S315400210E0653B4000653B5000653B6000653B7000D8 -S315400210F0653B8000653B9000653BA000653BB000C8 -S31540021100653BC000653BD000653BE000653BF000B7 -S31540021110653C0000653C1000653C2000653C3000A3 -S31540021120653C4000653C5000653C6000653C700093 -S31540021130653C8000653C9000653CA000653CB00083 -S31540021140653CC000653CD000653CE000653CF00073 -S31540021150653D0000653D1000653D2000653D30005F -S31540021160653D4000653D5000653D6000653D70004F -S31540021170653D8000653D9000653DA000653DB0003F -S31540021180653DC000653DD000653DE000653DF0002F -S31540021190653E0000653E1000653E2000653E30001B -S315400211A0653E4000653E5000653E6000653E70000B -S315400211B0653E8000653E9000653EA000653EB000FB -S315400211C0653EC000653ED000653EE000653EF000EB -S315400211D0653F0000653F1000653F2000653F3000D7 -S315400211E0653F4000653F5000653F6000653F7000C7 -S315400211F0653F8000653F9000653FA000653FB000B7 -S31540021200653FC000653FD000653FE000653FF000A6 -S315400212104200000000000000400FFFFFFFFFFFFFFB -S315400212204200000000200000420FFFFFFFFFFFFFC9 -S3154002123040000000000000004210000000080000CC -S3154002124042000000000000013EB000000000000124 -S315400212504200000000000002420F484C0137D2080B -S31540021260C20E780F256007AB41BA079B7AF94BA0AD -S315400212704201484C0137D208420E780F256007AB2F -S315400212804217E02D934BECDA420F484C0137D20815 -S31540021290C21E780F256007ABC20DA7D249883D4EC4 -S315400212A0421F484C0137D208C20E780F256007AB61 -S315400212B042100C446E87CE32C03340AB371208918F -S315400212C00000000000000000C03340AB3712089116 -S315400212D00000000000000000C29E7A0F236007A6AD -S315400212E0C29E7A0F236007A66F3F484C0137D20849 -S315400212F06E2E780F256007AB6F3F485B3D3F64B863 -S315400213006F3F484C0137D208EE2E780F256007AB67 -S315400213106F3F483CC5303F587FE2F780AB123809F1 -S315400213207FD00000000000007FEAF780AB12380948 -S31540021330002000000000000080280000000000009D -S3154002134080100000000000007FEFF780AB123809E2 -S315400213507FEFF2010203A1117FF0000000000000BE -S315400213600010000000001000801FFFFFF203A111D1 -S315400213708000000000000000001ABCD000023809BC -S31540021380801ABCD0000001110000000000000000DD -S315400213907E71000000000000416010000000000065 -S315400213A07FE11100000000000178100000000000FB -S315400213B03E880000FFF0000000120C00C073F800E7 -S315400213C0C1EFFFFFC00020003FB3C75D224F280F89 -S315400213D0C1B3C75CFAC08192A12FFF8000001FFFF4 -S315400213E03EE0000000FF0000A01FFF8001FE18073C -S315400213F041CFFFFE0000002040303FFFFFFFFFFDD0 -S3154002140042103FFEFC00000D3FD000003FEFFFFFC1 -S31540021410BFD0000010000000BFB000004FF0003FF8 -S3154002142001701000000000003E8000011A0000001A -S3154002143000000000000000007E7C0000000000006A -S31540021440416A1000010000107FF000000000000019 -S3154002145075012034056AC000FA1009091000104FC0 -S31540021460FFF00000000000000100203040030200AF -S31540021470003020340000A00B0000000000000000F5 -S315400214807FE0001010200001400000000010200AFA -S315400214907FF00000000000003FEFDFF00FFC484AFB -S315400214A0BFF80000000000007FFF000000000000BF -S315400214B07FFFE000000000007FF400000000000013 -S315400214C07FC00000000000007FF80000000000001E -S315400214D07FF0000000000000FFF000000000000066 -S315400214E0FFF0000000000000800000000000000045 -S315400214F000000000000100000000000000000000A3 -S315400215000000000000000000000000000000000093 -S315400215100000000000000000000000000000000083 -S315400215200000000000000000000000000000000073 -S315400215300000000000000000000000000000000063 -S315400215400000000000000000000000000000000053 -S315400215500000000000000000000000000000000043 -S315400215600000000000000000000000000000000033 -S315400215700000000000000000000000000000000023 -S315400215800000000000000000000000000000000013 -S315400215900000000000000000000000000000000003 -S315400215A000000000000000000000000000000000F3 -S315400215B000000000000000000000000000000000E3 -S315400215C000000000000000000000000000000000D3 -S315400215D000000000000000000000000000000000C3 -S315400215E000000000000000000000000000000000B3 -S315400215F000000000000000000000000000000000A3 -S315400216000000000000000000000000000000000092 -S315400216100000000000000000000000000000000082 -S315400216200000000000000000000000000000000072 -S315400216300000000000000000000000000000000062 -S315400216400000000000000000000000000000000052 -S315400216500000000000000000000000000000000042 -S315400216600000000000000000000000000000000032 -S315400216700000000000000000000000000000000022 -S315400216800000000000000000000000000000000012 -S315400216900000000000000000000000000000000002 -S315400216A000000000000000000000000000000000F2 -S315400216B000000000000000000000000000000000E2 -S315400216C000000000000000000000000000000000D2 -S315400216D000000000000000000000000000000000C2 -S315400216E000000000000000000000000000000000B2 -S315400216F000000000000000000000000000000000A2 -S315400217000000000000000000000000000000000091 -S315400217100000000000000000000000000000000081 -S315400217200000000000000000000000000000000071 -S315400217300000000000000000000000000000000061 -S315400217400000000000000000000000000000000051 -S315400217500000000000000000000000000000000041 -S315400217600000000000000000000000000000000031 -S315400217700000000000000000000000000000000021 -S315400217800000000000000000000000000000000011 -S315400217900000000000000000000000000000000001 -S315400217A000000000000000000000000000000000F1 -S315400217B000000000000000000000000000000000E1 -S315400217C000000000000000000000000000000000D1 -S315400217D000000000000000000000000000000000C1 -S315400217E000000000000000000000000000000000B1 -S315400217F000000000000000000000000000000000A1 -S315400218000000000000000000000000000000000090 -S315400218100000000000000000000000000000000080 -S315400218200000000000000000000000000000000070 -S315400218300000000000000000000000000000000060 -S315400218400000000000000000000000000000000050 -S315400218500000000000000000000000000000000040 -S315400218600000000000000000000000000000000030 -S315400218700000000000000000000000000000000020 -S315400218800000000000000000000000000000000010 -S315400218900000000000000000000000000000000000 -S315400218A000000000000000000000000000000000F0 -S315400218B000000000000000000000000000000000E0 -S315400218C000000000000000000000000000000000D0 -S315400218D000000000000000000000000000000000C0 -S315400218E000000000000000000000000000000000B0 -S315400218F000000000000000000000000000000000A0 -S31540021900000000000000000000000000000000008F -S31540021910000000000000000000000000000000007F -S31540021920000000000000000000000000000000006F -S31540021930000000000000000000000000000000005F -S31540021940000000000000000000000000000000004F -S31540021950000000000000000000000000000000003F -S31540021960000000000000000000000000000000002F -S31540021970000000000000000000000000000000001F -S31540021980000000000000000000000000000000000F -S3154002199000000000000000000000000000000000FF -S315400219A000000000000000000000000000000000EF -S315400219B000000000000000000000000000000000DF -S315400219C000000000000000000000000000000000CF -S315400219D000000000000000000000000000000000BF -S315400219E000000000000000000000000000000000AF -S315400219F0000000000000000000000000000000009F -S31540021A00000000000000000000000000000000008E -S31540021A10000000000000000000000000000000007E -S31540021A20000000000000000000000000000000006E -S31540021A30000000000000000000000000000000005E -S31540021A40000000000000000000000000000000004E -S31540021A50000000000000000000000000000000003E -S31540021A60000000000000000000000000000000002E -S31540021A70000000000000000000000000000000001E -S31540021A80000000000000000000000000000000000E -S31540021A9000000000000000000000000000000000FE -S31540021AA000000000000000000000000000000000EE -S31540021AB000000000000000000000000000000000DE -S31540021AC000000000000000000000000000000000CE -S31540021AD000000000000000000000000000000000BE -S31540021AE000000000000000000000000000000000AE -S31540021AF0000000000000000000000000000000009E -S31540021B00000000000000000000000000000000008D -S31540021B10000000000000000000000000000000007D -S31540021B20000000000000000000000000000000006D -S31540021B30000000000000000000000000000000005D -S31540021B40000000000000000000000000000000004D -S31540021B50000000000000000000000000000000003D -S31540021B60000000000000000000000000000000002D -S31540021B70000000000000000000000000000000001D -S31540021B80000000000000000000000000000000000D -S31540021B9000000000000000000000000000000000FD -S31540021BA000000000000000000000000000000000ED -S31540021BB000000000000000000000000000000000DD -S31540021BC000000000000000000000000000000000CD -S31540021BD000000000000000000000000000000000BD -S31540021BE000000000000000000000000000000000AD -S31540021BF0000000000000000000000000000000009D -S31540021C00000000000000000000000000000000008C -S31540021C10000000000000000000000000000000007C -S31540021C20000000000000000000000000000000006C -S31540021C30000000000000000000000000000000005C -S31540021C40000000000000000000000000000000004C -S31540021C50000000000000000000000000000000003C -S31540021C60000000000000000000000000000000002C -S31540021C70000000000000000000000000000000001C -S31540021C80000000000000000000000000000000000C -S31540021C9000000000000000000000000000000000FC -S31540021CA000000000000000000000000000000000EC -S31540021CB000000000000000000000000000000000DC -S31540021CC000000000000000000000000000000000CC -S31540021CD000000000000000000000000000000000BC -S31540021CE000000000000000000000000000000000AC -S31540021CF0000000000000000000000000000000009C -S31540021D00000000000000000000000000000000008B -S31540021D10000000000000000000000000000000007B -S31540021D20000000000000000000000000000000006B -S31540021D30000000000000000000000000000000005B -S31540021D40000000000000000000000000000000004B -S31540021D50000000000000000000000000000000003B -S31540021D60000000000000000000000000000000002B -S31540021D70000000000000000000000000000000001B -S31540021D80000000000000000000000000000000000B -S31540021D9000000000000000000000000000000000FB -S31540021DA000000000000000000000000000000000EB -S31540021DB000000000000000000000000000000000DB -S31540021DC000000000000000000000000000000000CB -S31540021DD000000000000000000000000000000000BB -S31540021DE000000000000000000000000000000000AB -S31540021DF0000000000000000000000000000000009B -S31540021E00000000000000000000000000000000008A -S31540021E10000000000000000000000000000000007A -S31540021E20000000000000000000000000000000006A -S31540021E30000000000000000000000000000000005A -S31540021E40000000000000000000000000000000004A -S31540021E50000000000000000000000000000000003A -S31540021E60000000000000000000000000000000002A -S31540021E70000000000000000000000000000000001A -S31540021E80000000000000000000000000000000000A -S31540021E9000000000000000000000000000000000FA -S31540021EA000000000000000000000000000000000EA -S31540021EB000000000000000000000000000000000DA -S31540021EC000000000000000000000000000000000CA -S31540021ED000000000000000000000000000000000BA -S31540021EE000000000000000000000000000000000AA -S31540021EF0000000000000000000000000000000009A -S31540021F000000000000000000000000000000000089 -S31540021F100000000000000000000000000000000079 -S31540021F200000000000000000000000000000000069 -S31540021F300000000000000000000000000000000059 -S31540021F400000000000000000000000000000000049 -S31540021F500000000000000000000000000000000039 -S31540021F600000000000000000000000000000000029 -S31540021F700000000000000000000000000000000019 -S31540021F800000000000000000000000000000000009 -S31540021F9000000000000000000000000000000000F9 -S31540021FA000000000000000000000000000000000E9 -S31540021FB000000000000000000000000000000000D9 -S31540021FC000000000000000000000000000000000C9 -S31540021FD000000000000000000000000000000000B9 -S31540021FE000000000000000000000000000000000A9 -S31540021FF00000000000000000000000000000000099 -S315400220000000000000000000000000000000000088 -S315400220100000000000000000000000000000000078 -S315400220200000000000000000000000000000000068 -S315400220300000000000000000000000000000000058 -S315400220400000000000000000000000000000000048 -S315400220500000000000000000000000000000000038 -S315400220600000000000000000000000000000000028 -S315400220700000000000000000000000000000000018 -S315400220800000000000000000000000000000000008 -S3154002209000000000000000000000000000000000F8 -S315400220A000000000000000000000000000000000E8 -S315400220B000000000000000000000000000000000D8 -S315400220C000000000000000000000000000000000C8 -S315400220D000000000000000000000000000000000B8 -S315400220E000000000000000000000000000000000A8 -S315400220F00000000000000000000000000000000098 -S315400221000000000000000000000000000000000087 -S315400221100000000000000000000000000000000077 -S315400221200000000000000000000000000000000067 -S315400221300000000000000000000000000000000057 -S315400221400000000000000000000000000000000047 -S315400221500000000000000000000000000000000037 -S315400221600000000000000000000000000000000027 -S315400221700000000000000000000000000000000017 -S315400221800000000000000000000000000000000007 -S3154002219000000000000000000000000000000000F7 -S315400221A000000000000000000000000000000000E7 -S315400221B000000000000000000000000000000000D7 -S315400221C000000000000000000000000000000000C7 -S315400221D000000000000000000000000000000000B7 -S315400221E000000000000000000000000000000000A7 -S315400221F00000000000000000000000000000000097 -S315400222000000000000000000000000000000000086 -S315400222100000000000000000000000000000000076 -S315400222200000000000000000000000000000000066 -S315400222300000000000000000000000000000000056 -S315400222400000000000000000000000000000000046 -S315400222500000000000000000000000000000000036 -S315400222600000000000000000000000000000000026 -S315400222700000000000000000000000000000000016 -S315400222800000000000000000000000000000000006 -S3154002229000000000000000000000000000000000F6 -S315400222A000000000000000000000000000000000E6 -S315400222B000000000000000000000000000000000D6 -S315400222C000000000000000000000000000000000C6 -S315400222D000000000000000000000000000000000B6 -S315400222E000000000000000000000000000000000A6 -S315400222F00000000000000000000000000000000096 -S315400223000000000000000000000000000000000085 -S315400223100000000000000000000000000000000075 -S315400223200000000000000000000000000000000065 -S315400223300000000000000000000000000000000055 -S315400223400000000000000000000000000000000045 -S315400223500000000000000000000000000000000035 -S315400223600000000000000000000000000000000025 -S315400223700000000000000000000000000000000015 -S315400223800000000000000000000000000000000005 -S3154002239000000000000000000000000000000000F5 -S315400223A000000000000000000000000000000000E5 -S315400223B000000000000000000000000000000000D5 -S315400223C000000000000000000000000000000000C5 -S315400223D000000000000000000000000000000000B5 -S315400223E000000000000000000000000000000000A5 -S315400223F00000000000000000000000000000000095 -S315400224000000000000000000000000000000000084 -S315400224100000000000000000000000000000000074 -S315400224200000000000000000000000000000000064 -S315400224300000000000000000000000000000000054 -S315400224400000000000000000000000000000000044 -S315400224500000000000000000000000000000000034 -S315400224600000000000000000000000000000000024 -S315400224700000000000000000000000000000000014 -S315400224800000000000000000000000000000000004 -S3154002249000000000000000000000000000000000F4 -S315400224A000000000000000000000000000000000E4 -S315400224B000000000000000000000000000000000D4 -S315400224C000000000000000000000000000000000C4 -S315400224D000000000000000000000000000000000B4 -S315400224E000000000000000000000000000000000A4 -S315400224F00000000000000000000000000000000094 -S315400225000000000000000000000000000000000083 -S315400225100000000000000000000000000000000073 -S315400225200000000000000000000000000000000063 -S315400225300000000000000000000000000000000053 -S315400225400000000000000000000000000000000043 -S315400225500000000000000000000000000000000033 -S315400225600000000000000000000000000000000023 -S315400225700000000000000000000000000000000013 -S315400225800000000000000000000000000000000003 -S3154002259000000000000000000000000000000000F3 -S315400225A000000000000000000000000000000000E3 -S315400225B000000000000000000000000000000000D3 -S315400225C000000000000000000000000000000000C3 -S315400225D000000000000000000000000000000000B3 -S315400225E000000000000000000000000000000000A3 -S315400225F00000000000000000000000000000000093 -S315400226000000000000000000000000000000000082 -S315400226100000000000000000000000000000000072 -S315400226200000000000000000000000000000000062 -S315400226300000000000000000000000000000000052 -S315400226400000000000000000000000000000000042 -S315400226500000000000000000000000000000000032 -S315400226600000000000000000000000000000000022 -S315400226700000000000000000000000000000000012 -S315400226800000000000000000000000000000000002 -S3154002269000000000000000000000000000000000F2 -S315400226A000000000000000000000000000000000E2 -S315400226B000000000000000000000000000000000D2 -S315400226C000000000000000000000000000000000C2 -S315400226D000000000000000000000000000000000B2 -S315400226E000000000000000000000000000000000A2 -S315400226F00000000000000000000000000000000092 -S315400227000000000000000000000000000000000081 -S315400227100000000000000000000000000000000071 -S315400227200000000000000000000000000000000061 -S315400227300000000000000000000000000000000051 -S315400227400000000000000000000000000000000041 -S315400227500000000000000000000000000000000031 -S315400227600000000000000000000000000000000021 -S315400227700000000000000000000000000000000011 -S315400227800000000000000000000000000000000001 -S3154002279000000000000000000000000000000000F1 -S315400227A000000000000000000000000000000000E1 -S315400227B000000000000000000000000000000000D1 -S315400227C000000000000000000000000000000000C1 -S315400227D000000000000000000000000000000000B1 -S315400227E000000000000000000000000000000000A1 -S315400227F00000000000000000000000000000000091 -S315400228000000000000000000000000000000000080 -S315400228100000000000000000000000000000000070 -S315400228200000000000000000000000000000000060 -S315400228300000000000000000000000000000000050 -S315400228400000000000000000000000000000000040 -S315400228500000000000000000000000000000000030 -S315400228600000000000000000000000000000000020 -S315400228700000000000000000000000000000000010 -S315400228800000000000000000000000000000000000 -S3154002289000000000000000000000000000000000F0 -S315400228A000000000000000000000000000000000E0 -S315400228B000000000000000000000000000000000D0 -S315400228C000000000000000000000000000000000C0 -S315400228D000000000000000000000000000000000B0 -S315400228E000000000000000000000000000000000A0 -S315400228F00000000000000000000000000000000090 -S31540022900000000000000000000000000000000007F -S31540022910000000000000000000000000000000006F -S31540022920000000000000000000000000000000005F -S31540022930000000000000000000000000000000004F -S31540022940000000000000000000000000000000003F -S31540022950000000000000000000000000000000002F -S31540022960000000000000000000000000000000001F -S31540022970000000000000000000000000000000000F -S3154002298000000000000000000000000000000000FF -S3154002299000000000000000000000000000000000EF -S315400229A000000000000000000000000000000000DF -S315400229B000000000000000000000000000000000CF -S315400229C000000000000000000000000000000000BF -S315400229D000000000000000000000000000000000AF -S315400229E0000000000000000000000000000000009F -S315400229F0000000000000000000000000000000008F -S31540022A00000000000000000000000000000000007E -S31540022A10000000000000000000000000000000006E -S31540022A20000000000000000000000000000000005E -S31540022A30000000000000000000000000000000004E -S31540022A40000000000000000000000000000000003E -S31540022A50000000000000000000000000000000002E -S31540022A60000000000000000000000000000000001E -S31540022A70000000000000000000000000000000000E -S31540022A8000000000000000000000000000000000FE -S31540022A9000000000000000000000000000000000EE -S31540022AA000000000000000000000000000000000DE -S31540022AB000000000000000000000000000000000CE -S31540022AC000000000000000000000000000000000BE -S31540022AD000000000000000000000000000000000AE -S31540022AE0000000000000000000000000000000009E -S31540022AF0000000000000000000000000000000008E -S31540022B00000000000000000000000000000000007D -S31540022B10000000000000000000000000000000006D -S31540022B20000000000000000000000000000000005D -S31540022B30000000000000000000000000000000004D -S31540022B40000000000000000000000000000000003D -S31540022B50000000000000000000000000000000002D -S31540022B60000000000000000000000000000000001D -S31540022B70000000000000000000000000000000000D -S31540022B8000000000000000000000000000000000FD -S31540022B9000000000000000000000000000000000ED -S31540022BA000000000000000000000000000000000DD -S31540022BB000000000000000000000000000000000CD -S31540022BC000000000000000000000000000000000BD -S31540022BD000000000000000000000000000000000AD -S31540022BE0000000000000000000000000000000009D -S31540022BF0000000000000000000000000000000008D -S31540022C00000000000000000000000000000000007C -S31540022C10000000000000000000000000000000006C -S31540022C20000000000000000000000000000000005C -S31540022C30000000000000000000000000000000004C -S31540022C40000000000000000000000000000000003C -S31540022C50000000000000000000000000000000002C -S31540022C60000000000000000000000000000000001C -S31540022C70000000000000000000000000000000000C -S31540022C8000000000000000000000000000000000FC -S31540022C9000000000000000000000000000000000EC -S31540022CA000000000000000000000000000000000DC -S31540022CB000000000000000000000000000000000CC -S31540022CC000000000000000000000000000000000BC -S31540022CD000000000000000000000000000000000AC -S31540022CE0000000000000000000000000000000009C -S31540022CF0000000000000000000000000000000008C -S31540022D00000000000000000000000000000000007B -S31540022D10000000000000000000000000000000006B -S31540022D20000000000000000000000000000000005B -S31540022D30000000000000000000000000000000004B -S31540022D40000000000000000000000000000000003B -S31540022D50000000000000000000000000000000002B -S31540022D60000000000000000000000000000000001B -S31540022D70000000000000000000000000000000000B -S31540022D8000000000000000000000000000000000FB -S31540022D9000000000000000000000000000000000EB -S31540022DA000000000000000000000000000000000DB -S31540022DB000000000000000000000000000000000CB -S31540022DC000000000000000000000000000000000BB -S31540022DD000000000000000000000000000000000AB -S31540022DE0000000000000000000000000000000009B -S31540022DF0000000000000000000000000000000008B -S31540022E00000000000000000000000000000000007A -S31540022E10000000000000000000000000000000006A -S31540022E20000000000000000000000000000000005A -S31540022E30000000000000000000000000000000004A -S31540022E40000000000000000000000000000000003A -S31540022E50000000000000000000000000000000002A -S31540022E60000000000000000000000000000000001A -S31540022E70000000000000000000000000000000000A -S31540022E8000000000000000000000000000000000FA -S31540022E9000000000000000000000000000000000EA -S31540022EA000000000000000000000000000000000DA -S31540022EB000000000000000000000000000000000CA -S31540022EC000000000000000000000000000000000BA -S31540022ED000000000000000000000000000000000AA -S31540022EE0000000000000000000000000000000009A -S31540022EF0000000000000000000000000000000008A -S31540022F000000000000000000000000000000000079 -S31540022F100000000000000000000000000000000069 -S31540022F200000000000000000000000000000000059 -S31540022F300000000000000000000000000000000049 -S31540022F400000000000000000000000000000000039 -S31540022F500000000000000000000000000000000029 -S31540022F600000000000000000000000000000000019 -S31540022F700000000000000000000000000000000009 -S31540022F8000000000000000000000000000000000F9 -S31540022F9000000000000000000000000000000000E9 -S31540022FA000000000000000000000000000000000D9 -S31540022FB000000000000000000000000000000000C9 -S31540022FC000000000000000000000000000000000B9 -S31540022FD000000000000000000000000000000000A9 -S31540022FE00000000000000000000000000000000099 -S31540022FF00000000000000000000000000000000089 -S315400230000000000000000000000000000000000078 -S315400230100000000000000000000000000000000068 -S315400230200000000000000000000000000000000058 -S315400230300000000000000000000000000000000048 -S315400230400000000000000000000000000000000038 -S315400230500000000000000000000000000000000028 -S315400230600000000000000000000000000000000018 -S315400230700000000000000000000000000000000008 -S3154002308000000000000000000000000000000000F8 -S3154002309000000000000000000000000000000000E8 -S315400230A000000000000000000000000000000000D8 -S315400230B000000000000000000000000000000000C8 -S315400230C000000000000000000000000000000000B8 -S315400230D000000000000000000000000000000000A8 -S315400230E00000000000000000000000000000000098 -S315400230F00000000000000000000000000000000088 -S315400231000000000000000000000000000000000077 -S315400231100000000000000000000000000000000067 -S315400231200000000000000000000000000000000057 -S315400231300000000000000000000000000000000047 -S315400231400000000000000000000000000000000037 -S315400231500000000000000000000000000000000027 -S315400231600000000000000000000000000000000017 -S315400231700000000000000000000000000000000007 -S3154002318000000000000000000000000000000000F7 -S3154002319000000000000000000000000000000000E7 -S315400231A000000000000000000000000000000000D7 -S315400231B000000000000000000000000000000000C7 -S315400231C000000000000000000000000000000000B7 -S315400231D000000000000000000000000000000000A7 -S315400231E00000000000000000000000000000000097 -S315400231F00000000000000000000000000000000087 -S315400232000000000000000000000000000000000076 -S315400232100000000000000000000000000000000066 -S315400232200000000000000000000000000000000056 -S315400232300000000000000000000000000000000046 -S315400232400000000000000000000000000000000036 -S315400232500000000000000000000000000000000026 -S315400232600000000000000000000000000000000016 -S315400232700000000000000000000000000000000006 -S3154002328000000000000000000000000000000000F6 -S3154002329000000000000000000000000000000000E6 -S315400232A000000000000000000000000000000000D6 -S315400232B000000000000000000000000000000000C6 -S315400232C000000000000000000000000000000000B6 -S315400232D000000000000000000000000000000000A6 -S315400232E00000000000000000000000000000000096 -S315400232F00000000000000000000000000000000086 -S315400233000000000000000000000000000000000075 -S315400233100000000000000000000000000000000065 -S315400233200000000000000000000000000000000055 -S315400233300000000000000000000000000000000045 -S315400233400000000000000000000000000000000035 -S315400233500000000000000000000000000000000025 -S315400233600000000000000000000000000000000015 -S315400233700000000000000000000000000000000005 -S3154002338000000000000000000000000000000000F5 -S3154002339000000000000000000000000000000000E5 -S315400233A000000000000000000000000000000000D5 -S315400233B000000000000000000000000000000000C5 -S315400233C000000000000000000000000000000000B5 -S315400233D000000000000000000000000000000000A5 -S315400233E00000000000000000000000000000000095 -S315400233F00000000000000000000000000000000085 -S315400234000000000000000000000000000000000074 -S315400234100000000000000000000000000000000064 -S315400234200000000000000000000000000000000054 -S315400234300000000000000000000000000000000044 -S315400234400000000000000000000000000000000034 -S315400234500000000000000000000000000000000024 -S315400234600000000000000000000000000000000014 -S315400234700000000000000000000000000000000004 -S3154002348000000000000000000000000000000000F4 -S3154002349000000000000000000000000000000000E4 -S315400234A000000000000000000000000000000000D4 -S315400234B000000000000000000000000000000000C4 -S315400234C000000000000000000000000000000000B4 -S315400234D000000000000000000000000000000000A4 -S315400234E00000000000000000000000000000000094 -S315400234F00000000000000000000000000000000084 -S315400235000000000000000000000000000000000073 -S315400235100000000000000000000000000000000063 -S315400235200000000000000000000000000000000053 -S315400235300000000000000000000000000000000043 -S315400235400000000000000000000000000000000033 -S315400235500000000000000000000000000000000023 -S315400235600000000000000000000000000000000013 -S315400235700000000000000000000000000000000003 -S3154002358000000000000000000000000000000000F3 -S3154002359000000000000000000000000000000000E3 -S315400235A000000000000000000000000000000000D3 -S315400235B000000000000000000000000000000000C3 -S315400235C000000000000000000000000000000000B3 -S315400235D000000000000000000000000000000000A3 -S315400235E00000000000000000000000000000000093 -S315400235F00000000000000000000000000000000083 -S315400236000000000000000000000000000000000072 -S315400236100000000000000000000000000000000062 -S315400236200000000000000000000000000000000052 -S315400236300000000000000000000000000000000042 -S315400236400000000000000000000000000000000032 -S315400236500000000000000000000000000000000022 -S315400236600000000000000000000000000000000012 -S315400236700000000000000000000000000000000002 -S3154002368000000000000000000000000000000000F2 -S3154002369000000000000000000000000000000000E2 -S315400236A000000000000000000000000000000000D2 -S315400236B000000000000000000000000000000000C2 -S315400236C000000000000000000000000000000000B2 -S315400236D000000000000000000000000000000000A2 -S315400236E00000000000000000000000000000000092 -S315400236F00000000000000000000000000000000082 -S315400237000000000000000000000000000000000071 -S315400237100000000000000000000000000000000061 -S315400237200000000000000000000000000000000051 -S315400237300000000000000000000000000000000041 -S315400237400000000000000000000000000000000031 -S315400237500000000000000000000000000000000021 -S315400237600000000000000000000000000000000011 -S315400237700000000000000000000000000000000001 -S3154002378000000000000000000000000000000000F1 -S3154002379000000000000000000000000000000000E1 -S315400237A000000000000000000000000000000000D1 -S315400237B000000000000000000000000000000000C1 -S315400237C000000000000000000000000000000000B1 -S315400237D000000000000000000000000000000000A1 -S315400237E00000000000000000000000000000000091 -S315400237F00000000000000000000000000000000081 -S315400238000000000000000000000000000000000070 -S315400238100000000000000000000000000000000060 -S315400238200000000000000000000000000000000050 -S315400238300000000000000000000000000000000040 -S315400238400000000000000000000000000000000030 -S315400238500000000000000000000000000000000020 -S315400238600000000000000000000000000000000010 -S315400238700000000000000000000000000000000000 -S3154002388000000000000000000000000000000000F0 -S3154002389000000000000000000000000000000000E0 -S315400238A000000000000000000000000000000000D0 -S315400238B000000000000000000000000000000000C0 -S315400238C000000000000000000000000000000000B0 -S315400238D000000000000000000000000000000000A0 -S315400238E00000000000000000000000000000000090 -S315400238F00000000000000000000000000000000080 -S31540023900000000000000000000000000000000006F -S31540023910000000000000000000000000000000005F -S31540023920000000000000000000000000000000004F -S31540023930000000000000000000000000000000003F -S31540023940000000000000000000000000000000002F -S31540023950000000000000000000000000000000001F -S31540023960000000000000000000000000000000000F -S3154002397000000000000000000000000000000000FF -S3154002398000000000000000000000000000000000EF -S3154002399000000000000000000000000000000000DF -S315400239A000000000000000000000000000000000CF -S315400239B000000000000000000000000000000000BF -S315400239C000000000000000000000000000000000AF -S315400239D0000000000000000000000000000000009F -S315400239E0000000000000000000000000000000008F -S315400239F0000000000000000000000000000000007F -S31540023A00000000000000000000000000000000006E -S31540023A10000000000000000000000000000000005E -S31540023A20000000000000000000000000000000004E -S31540023A30000000000000000000000000000000003E -S31540023A40000000000000000000000000000000002E -S31540023A50000000000000000000000000000000001E -S31540023A60000000000000000000000000000000000E -S31540023A7000000000000000000000000000000000FE -S31540023A8000000000000000000000000000000000EE -S31540023A9000000000000000000000000000000000DE -S31540023AA000000000000000000000000000000000CE -S31540023AB000000000000000000000000000000000BE -S31540023AC000000000000000000000000000000000AE -S31540023AD0000000000000000000000000000000009E -S31540023AE0000000000000000000000000000000008E -S31540023AF0000000000000000000000000000000007E -S31540023B00000000000000000000000000000000006D -S31540023B10000000000000000000000000000000005D -S31540023B20000000000000000000000000000000004D -S31540023B30000000000000000000000000000000003D -S31540023B40000000000000000000000000000000002D -S31540023B50000000000000000000000000000000001D -S31540023B60000000000000000000000000000000000D -S31540023B7000000000000000000000000000000000FD -S31540023B8000000000000000000000000000000000ED -S31540023B9000000000000000000000000000000000DD -S31540023BA000000000000000000000000000000000CD -S31540023BB000000000000000000000000000000000BD -S31540023BC000000000000000000000000000000000AD -S31540023BD0000000000000000000000000000000009D -S31540023BE0000000000000000000000000000000008D -S31540023BF0000000000000000000000000000000007D -S31540023C00000000000000000000000000000000006C -S31540023C10000000000000000000000000000000005C -S31540023C20000000000000000000000000000000004C -S31540023C30000000000000000000000000000000003C -S31540023C40000000000000000000000000000000002C -S31540023C50000000000000000000000000000000001C -S31540023C60000000000000000000000000000000000C -S31540023C7000000000000000000000000000000000FC -S31540023C8000000000000000000000000000000000EC -S31540023C9000000000000000000000000000000000DC -S31540023CA000000000000000000000000000000000CC -S31540023CB000000000000000000000000000000000BC -S31540023CC000000000000000000000000000000000AC -S31540023CD0000000000000000000000000000000009C -S31540023CE0000000000000000000000000000000008C -S31540023CF0000000000000000000000000000000007C -S31540023D00000000000000000000000000000000006B -S31540023D10000000000000000000000000000000005B -S31540023D20000000000000000000000000000000004B -S31540023D30000000000000000000000000000000003B -S31540023D40000000000000000000000000000000002B -S31540023D50000000000000000000000000000000001B -S31540023D60000000000000000000000000000000000B -S31540023D7000000000000000000000000000000000FB -S31540023D8000000000000000000000000000000000EB -S31540023D9000000000000000000000000000000000DB -S31540023DA000000000000000000000000000000000CB -S31540023DB000000000000000000000000000000000BB -S31540023DC000000000000000000000000000000000AB -S31540023DD0000000000000000000000000000000009B -S31540023DE0000000000000000000000000000000008B -S31540023DF0000000000000000000000000000000007B -S31540023E00000000000000000000000000000000006A -S31540023E10000000000000000000000000000000005A -S31540023E20000000000000000000000000000000004A -S31540023E30000000000000000000000000000000003A -S31540023E40000000000000000000000000000000002A -S31540023E50000000000000000000000000000000001A -S31540023E60000000000000000000000000000000000A -S31540023E7000000000000000000000000000000000FA -S31540023E8000000000000000000000000000000000EA -S31540023E9000000000000000000000000000000000DA -S31540023EA000000000000000000000000000000000CA -S31540023EB000000000000000000000000000000000BA -S31540023EC000000000000000000000000000000000AA -S31540023ED0000000000000000000000000000000009A -S31540023EE0000000000000000000000000000000008A -S31540023EF0000000000000000000000000000000007A -S31540023F000000000000000000000000000000000069 -S31540023F100000000000000000000000000000000059 -S31540023F200000000000000000000000000000000049 -S31540023F300000000000000000000000000000000039 -S31540023F400000000000000000000000000000000029 -S31540023F500000000000000000000000000000000019 -S31540023F600000000000000000000000000000000009 -S31540023F7000000000000000000000000000000000F9 -S31540023F8000000000000000000000000000000000E9 -S31540023F9000000000000000000000000000000000D9 -S31540023FA000000000000000000000000000000000C9 -S31540023FB000000000000000000000000000000000B9 -S31540023FC000000000000000000000000000000000A9 -S31540023FD00000000000000000000000000000000099 -S31540023FE00000000000000000000000000000000089 -S31540023FF00000000000000000000000000000000079 -S315400240000000000000000000000000000000000068 -S315400240100000000000000000000000000000000058 -S315400240200000000000000000000000000000000048 -S315400240300000000000000000000000000000000038 -S315400240400000000000000000000000000000000028 -S315400240500000000000000000000000000000000018 -S315400240600000000000000000000000000000000008 -S3154002407000000000000000000000000000000000F8 -S3154002408000000000000000000000000000000000E8 -S3154002409000000000000000000000000000000000D8 -S315400240A000000000000000000000000000000000C8 -S315400240B000000000000000000000000000000000B8 -S315400240C000000000000000000000000000000000A8 -S315400240D00000000000000000000000000000000098 -S315400240E00000000000000000000000000000000088 -S315400240F00000000000000000000000000000000078 -S315400241000000000000000000000000000000000067 -S315400241100000000000000000000000000000000057 -S315400241200000000000000000000000000000000047 -S315400241300000000000000000000000000000000037 -S315400241400000000000000000000000000000000027 -S315400241500000000000000000000000000000000017 -S315400241600000000000000000000000000000000007 -S3154002417000000000000000000000000000000000F7 -S3154002418000000000000000000000000000000000E7 -S3154002419000000000000000000000000000000000D7 -S315400241A000000000000000000000000000000000C7 -S315400241B000000000000000000000000000000000B7 -S315400241C000000000000000000000000000000000A7 -S315400241D00000000000000000000000000000000097 -S315400241E00000000000000000000000000000000087 -S315400241F00000000000000000000000000000000077 -S315400242000000000000000000000000000000000066 -S315400242100000000000000000000000000000000056 -S315400242200000000000000000000000000000000046 -S315400242300000000000000000000000000000000036 -S315400242400000000000000000000000000000000026 -S315400242500000000000000000000000000000000016 -S315400242600000000000000000000000000000000006 -S3154002427000000000000000000000000000000000F6 -S3154002428000000000000000000000000000000000E6 -S3154002429000000000000000000000000000000000D6 -S315400242A000000000000000000000000000000000C6 -S315400242B000000000000000000000000000000000B6 -S315400242C000000000000000000000000000000000A6 -S315400242D00000000000000000000000000000000096 -S315400242E00000000000000000000000000000000086 -S315400242F00000000000000000000000000000000076 -S315400243000000000000000000000000000000000065 -S315400243100000000000000000000000000000000055 -S315400243200000000000000000000000000000000045 -S315400243300000000000000000000000000000000035 -S315400243400000000000000000000000000000000025 -S315400243500000000000000000000000000000000015 -S315400243600000000000000000000000000000000005 -S3154002437000000000000000000000000000000000F5 -S3154002438000000000000000000000000000000000E5 -S3154002439000000000000000000000000000000000D5 -S315400243A000000000000000000000000000000000C5 -S315400243B000000000000000000000000000000000B5 -S315400243C000000000000000000000000000000000A5 -S315400243D00000000000000000000000000000000095 -S315400243E00000000000000000000000000000000085 -S315400243F00000000000000000000000000000000075 -S315400244000000000000000000000000000000000064 -S315400244100000000000000000000000000000000054 -S315400244200000000000000000000000000000000044 -S315400244300000000000000000000000000000000034 -S315400244400000000000000000000000000000000024 -S315400244500000000000000000000000000000000014 -S315400244600000000000000000000000000000000004 -S3154002447000000000000000000000000000000000F4 -S3154002448000000000000000000000000000000000E4 -S3154002449000000000000000000000000000000000D4 -S315400244A000000000000000000000000000000000C4 -S315400244B000000000000000000000000000000000B4 -S315400244C000000000000000000000000000000000A4 -S315400244D00000000000000000000000000000000094 -S315400244E00000000000000000000000000000000084 -S315400244F00000000000000000000000000000000074 -S315400245000000000000000000000000000000000063 -S315400245100000000000000000000000000000000053 -S315400245200000000000000000000000000000000043 -S315400245300000000000000000000000000000000033 -S315400245400000000000000000000000000000000023 -S315400245500000000000000000000000000000000013 -S315400245600000000000000000000000000000000003 -S3154002457000000000000000000000000000000000F3 -S3154002458000000000000000000000000000000000E3 -S3154002459000000000000000000000000000000000D3 -S315400245A000000000000000000000000000000000C3 -S315400245B000000000000000000000000000000000B3 -S315400245C000000000000000000000000000000000A3 -S315400245D00000000000000000000000000000000093 -S315400245E00000000000000000000000000000000083 -S315400245F00000000000000000000000000000000073 -S315400246000000000000000000000000000000000062 -S315400246100000000000000000000000000000000052 -S315400246200000000000000000000000000000000042 -S315400246300000000000000000000000000000000032 -S315400246400000000000000000000000000000000022 -S315400246500000000000000000000000000000000012 -S315400246600000000000000000000000000000000002 -S3154002467000000000000000000000000000000000F2 -S3154002468000000000000000000000000000000000E2 -S3154002469000000000000000000000000000000000D2 -S315400246A000000000000000000000000000000000C2 -S315400246B000000000000000000000000000000000B2 -S315400246C000000000000000000000000000000000A2 -S315400246D00000000000000000000000000000000092 -S315400246E00000000000000000000000000000000082 -S315400246F00000000000000000000000000000000072 -S315400247000000000000000000000000000000000061 -S315400247100000000000000000000000000000000051 -S315400247200000000000000000000000000000000041 -S315400247300000000000000000000000000000000031 -S315400247400000000000000000000000000000000021 -S315400247500000000000000000000000000000000011 -S315400247600000000000000000000000000000000001 -S3154002477000000000000000000000000000000000F1 -S3154002478000000000000000000000000000000000E1 -S3154002479000000000000000000000000000000000D1 -S315400247A000000000000000000000000000000000C1 -S315400247B000000000000000000000000000000000B1 -S315400247C000000000000000000000000000000000A1 -S315400247D00000000000000000000000000000000091 -S315400247E00000000000000000000000000000000081 -S315400247F00000000000000000000000000000000071 -S315400248000000000000000000000000000000000060 -S315400248100000000000000000000000000000000050 -S315400248200000000000000000000000000000000040 -S315400248300000000000000000000000000000000030 -S315400248400000000000000000000000000000000020 -S315400248500000000000000000000000000000000010 -S315400248600000000000000000000000000000000000 -S3154002487000000000000000000000000000000000F0 -S3154002488000000000000000000000000000000000E0 -S3154002489000000000000000000000000000000000D0 -S315400248A000000000000000000000000000000000C0 -S315400248B000000000000000000000000000000000B0 -S315400248C000000000000000000000000000000000A0 -S315400248D00000000000000000000000000000000090 -S315400248E00000000000000000000000000000000080 -S315400248F00000000000000000000000000000000070 -S31540024900000000000000000000000000000000005F -S31540024910000000000000000000000000000000004F -S31540024920000000000000000000000000000000003F -S31540024930000000000000000000000000000000002F -S31540024940000000000000000000000000000000001F -S31540024950000000000000000000000000000000000F -S3154002496000000000000000000000000000000000FF -S3154002497000000000000000000000000000000000EF -S3154002498000000000000000000000000000000000DF -S3154002499000000000000000000000000000000000CF -S315400249A000000000000000000000000000000000BF -S315400249B000000000000000000000000000000000AF -S315400249C0000000000000000000000000000000009F -S315400249D0000000000000000000000000000000008F -S315400249E0000000000000000000000000000000007F -S315400249F0000000000000000000000000000000006F -S31540024A00000000000000000000000000000000005E -S31540024A10000000000000000000000000000000004E -S31540024A20000000000000000000000000000000003E -S31540024A30000000000000000000000000000000002E -S31540024A40000000000000000000000000000000001E -S31540024A50000000000000000000000000000000000E -S31540024A6000000000000000000000000000000000FE -S31540024A7000000000000000000000000000000000EE -S31540024A8000000000000000000000000000000000DE -S31540024A9000000000000000000000000000000000CE -S31540024AA000000000000000000000000000000000BE -S31540024AB000000000000000000000000000000000AE -S31540024AC0000000000000000000000000000000009E -S31540024AD0000000000000000000000000000000008E -S31540024AE0000000000000000000000000000000007E -S31540024AF0000000000000000000000000000000006E -S31540024B00000000000000000000000000000000005D -S31540024B10000000000000000000000000000000004D -S31540024B20000000000000000000000000000000003D -S31540024B30000000000000000000000000000000002D -S31540024B40000000000000000000000000000000001D -S31540024B50000000000000000000000000000000000D -S31540024B6000000000000000000000000000000000FD -S31540024B7000000000000000000000000000000000ED -S31540024B8000000000000000000000000000000000DD -S31540024B9000000000000000000000000000000000CD -S31540024BA000000000000000000000000000000000BD -S31540024BB000000000000000000000000000000000AD -S31540024BC0000000000000000000000000000000009D -S31540024BD0000000000000000000000000000000008D -S31540024BE0000000000000000000000000000000007D -S31540024BF0000000000000000000000000000000006D -S31540024C00000000000000000000000000000000005C -S31540024C10000000000000000000000000000000004C -S31540024C20000000000000000000000000000000003C -S31540024C30000000000000000000000000000000002C -S31540024C40000000000000000000000000000000001C -S31540024C50000000000000000000000000000000000C -S31540024C6000000000000000000000000000000000FC -S31540024C7000000000000000000000000000000000EC -S31540024C8000000000000000000000000000000000DC -S31540024C9000000000000000000000000000000000CC -S31540024CA000000000000000000000000000000000BC -S31540024CB000000000000000000000000000000000AC -S31540024CC0000000000000000000000000000000009C -S31540024CD0000000000000000000000000000000008C -S31540024CE0000000000000000000000000000000007C -S31540024CF0000000000000000000000000000000006C -S31540024D00000000000000000000000000000000005B -S31540024D10000000000000000000000000000000004B -S31540024D20000000000000000000000000000000003B -S31540024D30000000000000000000000000000000002B -S31540024D40000000000000000000000000000000001B -S31540024D50000000000000000000000000000000000B -S31540024D6000000000000000000000000000000000FB -S31540024D7000000000000000000000000000000000EB -S31540024D8000000000000000000000000000000000DB -S31540024D9000000000000000000000000000000000CB -S31540024DA000000000000000000000000000000000BB -S31540024DB000000000000000000000000000000000AB -S31540024DC0000000000000000000000000000000009B -S31540024DD0000000000000000000000000000000008B -S31540024DE0000000000000000000000000000000007B -S31540024DF0000000000000000000000000000000006B -S31540024E00000000000000000000000000000000005A -S31540024E10000000000000000000000000000000004A -S31540024E20000000000000000000000000000000003A -S31540024E30000000000000000000000000000000002A -S31540024E40000000000000000000000000000000001A -S31540024E50000000000000000000000000000000000A -S31540024E6000000000000000000000000000000000FA -S31540024E7000000000000000000000000000000000EA -S31540024E8000000000000000000000000000000000DA -S31540024E9000000000000000000000000000000000CA -S31540024EA000000000000000000000000000000000BA -S31540024EB000000000000000000000000000000000AA -S31540024EC0000000000000000000000000000000009A -S31540024ED0000000000000000000000000000000008A -S31540024EE0000000000000000000000000000000007A -S31540024EF0000000000000000000000000000000006A -S31540024F000000000000000000000000000000000059 -S31540024F100000000000000000000000000000000049 -S31540024F200000000000000000000000000000000039 -S31540024F300000000000000000000000000000000029 -S31540024F400000000000000000000000000000000019 -S31540024F500000000000000000000000000000000009 -S31540024F6000000000000000000000000000000000F9 -S31540024F7000000000000000000000000000000000E9 -S31540024F8000000000000000000000000000000000D9 -S31540024F9000000000000000000000000000000000C9 -S31540024FA000000000000000000000000000000000B9 -S31540024FB000000000000000000000000000000000A9 -S31540024FC00000000000000000000000000000000099 -S31540024FD00000000000000000000000000000000089 -S31540024FE00000000000000000000000000000000079 -S31540024FF00000000000000000000000000000000069 -S315400250000000000000000000000000000000000058 -S315400250100000000000000000000000000000000048 -S315400250200000000000000000000000000000000038 -S315400250300000000000000000000000000000000028 -S315400250400000000000000000000000000000000018 -S315400250500000000000000000000000000000000008 -S3154002506000000000000000000000000000000000F8 -S3154002507000000000000000000000000000000000E8 -S3154002508000000000000000000000000000000000D8 -S3154002509000000000000000000000000000000000C8 -S315400250A000000000000000000000000000000000B8 -S315400250B000000000000000000000000000000000A8 -S315400250C00000000000000000000000000000000098 -S315400250D00000000000000000000000000000000088 -S315400250E00000000000000000000000000000000078 -S315400250F00000000000000000000000000000000068 -S315400251000000000000000000000000000000000057 -S315400251100000000000000000000000000000000047 -S315400251200000000000000000000000000000000037 -S315400251300000000000000000000000000000000027 -S315400251400000000000000000000000000000000017 -S315400251500000000000000000000000000000000007 -S3154002516000000000000000000000000000000000F7 -S3154002517000000000000000000000000000000000E7 -S3154002518000000000000000000000000000000000D7 -S3154002519000000000000000000000000000000000C7 -S315400251A000000000000000000000000000000000B7 -S315400251B000000000000000000000000000000000A7 -S315400251C00000000000000000000000000000000097 -S315400251D00000000000000000000000000000000087 -S315400251E00000000000000000000000000000000077 -S315400251F00000000000000000000000000000000067 -S315400252000000000000000000000000000000000056 -S315400252100000000000000000000000000000000046 -S315400252200000000000000000000000000000000036 -S315400252300000000000000000000000000000000026 -S315400252400000000000000000000000000000000016 -S315400252500000000000000000000000000000000006 -S3154002526000000000000000000000000000000000F6 -S3154002527000000000000000000000000000000000E6 -S3154002528000000000000000000000000000000000D6 -S3154002529000000000000000000000000000000000C6 -S315400252A000000000000000000000000000000000B6 -S315400252B000000000000000000000000000000000A6 -S315400252C00000000000000000000000000000000096 -S315400252D00000000000000000000000000000000086 -S315400252E00000000000000000000000000000000076 -S315400252F00000000000000000000000000000000066 -S315400253000000000000000000000000000000000055 -S315400253100000000000000000000000000000000045 -S315400253200000000000000000000000000000000035 -S315400253300000000000000000000000000000000025 -S315400253400000000000000000000000000000000015 -S315400253500000000000000000000000000000000005 -S3154002536000000000000000000000000000000000F5 -S3154002537000000000000000000000000000000000E5 -S3154002538000000000000000000000000000000000D5 -S3154002539000000000000000000000000000000000C5 -S315400253A000000000000000000000000000000000B5 -S315400253B000000000000000000000000000000000A5 -S315400253C00000000000000000000000000000000095 -S315400253D00000000000000000000000000000000085 -S315400253E00000000000000000000000000000000075 -S315400253F00000000000000000000000000000000065 -S315400254000000000000000000000000000000000054 -S315400254100000000000000000000000000000000044 -S315400254200000000000000000000000000000000034 -S315400254300000000000000000000000000000000024 -S315400254400000000000000000000000000000000014 -S315400254500000000000000000000000000000000004 -S3154002546000000000000000000000000000000000F4 -S3154002547000000000000000000000000000000000E4 -S3154002548000000000000000000000000000000000D4 -S3154002549000000000000000000000000000000000C4 -S315400254A000000000000000000000000000000000B4 -S315400254B000000000000000000000000000000000A4 -S315400254C00000000000000000000000000000000094 -S315400254D00000000000000000000000000000000084 -S315400254E00000000000000000000000000000000074 -S315400254F00000000000000000000000000000000064 -S315400255000000000000000000000000000000000053 -S315400255100000000000000000000000000000000043 -S315400255200000000000000000000000000000000033 -S315400255300000000000000000000000000000000023 -S315400255400000000000000000000000000000000013 -S315400255500000000000000000000000000000000003 -S3154002556000000000000000000000000000000000F3 -S3154002557000000000000000000000000000000000E3 -S3154002558000000000000000000000000000000000D3 -S3154002559000000000000000000000000000000000C3 -S315400255A000000000000000000000000000000000B3 -S315400255B000000000000000000000000000000000A3 -S315400255C00000000000000000000000000000000093 -S315400255D00000000000000000000000000000000083 -S315400255E00000000000000000000000000000000073 -S315400255F00000000000000000000000000000000063 -S315400256000000000000000000000000000000000052 -S315400256100000000000000000000000000000000042 -S315400256200000000000000000000000000000000032 -S315400256300000000000000000000000000000000022 -S315400256400000000000000000000000000000000012 -S315400256500000000000000000000000000000000002 -S3154002566000000000000000000000000000000000F2 -S3154002567000000000000000000000000000000000E2 -S3154002568000000000000000000000000000000000D2 -S3154002569000000000000000000000000000000000C2 -S315400256A000000000000000000000000000000000B2 -S315400256B000000000000000000000000000000000A2 -S315400256C00000000000000000000000000000000092 -S315400256D00000000000000000000000000000000082 -S315400256E00000000000000000000000000000000072 -S315400256F00000000000000000000000000000000062 -S315400257000000000000000000000000000000000051 -S315400257100000000000000000000000000000000041 -S315400257200000000000000000000000000000000031 -S315400257300000000000000000000000000000000021 -S315400257400000000000000000000000000000000011 -S315400257500000000000000000000000000000000001 -S3154002576000000000000000000000000000000000F1 -S3154002577000000000000000000000000000000000E1 -S3154002578000000000000000000000000000000000D1 -S3154002579000000000000000000000000000000000C1 -S315400257A000000000000000000000000000000000B1 -S315400257B000000000000000000000000000000000A1 -S315400257C00000000000000000000000000000000091 -S315400257D00000000000000000000000000000000081 -S315400257E00000000000000000000000000000000071 -S315400257F00000000000000000000000000000000061 -S315400258000000000000000000000000000000000050 -S315400258100000000000000000000000000000000040 -S315400258200000000000000000000000000000000030 -S315400258300000000000000000000000000000000020 -S315400258400000000000000000000000000000000010 -S315400258500000000000000000000000000000000000 -S3154002586000000000000000000000000000000000F0 -S3154002587000000000000000000000000000000000E0 -S3154002588000000000000000000000000000000000D0 -S3154002589000000000000000000000000000000000C0 -S315400258A000000000000000000000000000000000B0 -S315400258B000000000000000000000000000000000A0 -S315400258C00000000000000000000000000000000090 -S315400258D00000000000000000000000000000000080 -S315400258E00000000000000000000000000000000070 -S315400258F00000000000000000000000000000000060 -S31540025900000000000000000000000000000000004F -S31540025910000000000000000000000000000000003F -S31540025920000000000000000000000000000000002F -S31540025930000000000000000000000000000000001F -S31540025940000000000000000000000000000000000F -S3154002595000000000000000000000000000000000FF -S3154002596000000000000000000000000000000000EF -S3154002597000000000000000000000000000000000DF -S3154002598000000000000000000000000000000000CF -S3154002599000000000000000000000000000000000BF -S315400259A000000000000000000000000000000000AF -S315400259B0000000000000000000000000000000009F -S315400259C0000000000000000000000000000000008F -S315400259D0000000000000000000000000000000007F -S315400259E0000000000000000000000000000000006F -S315400259F0000000000000000000000000000000005F -S31540025A00000000000000000000000000000000004E -S31540025A10000000000000000000000000000000003E -S31540025A20000000000000000000000000000000002E -S31540025A30000000000000000000000000000000001E -S31540025A40000000000000000000000000000000000E -S31540025A5000000000000000000000000000000000FE -S31540025A6000000000000000000000000000000000EE -S31540025A7000000000000000000000000000000000DE -S31540025A8000000000000000000000000000000000CE -S31540025A9000000000000000000000000000000000BE -S31540025AA000000000000000000000000000000000AE -S31540025AB0000000000000000000000000000000009E -S31540025AC0000000000000000000000000000000008E -S31540025AD0000000000000000000000000000000007E -S31540025AE0000000000000000000000000000000006E -S31540025AF0000000000000000000000000000000005E -S31540025B00000000000000000000000000000000004D -S31540025B10000000000000000000000000000000003D -S31540025B20000000000000000000000000000000002D -S31540025B30000000000000000000000000000000001D -S31540025B40000000000000000000000000000000000D -S31540025B5000000000000000000000000000000000FD -S31540025B6000000000000000000000000000000000ED -S31540025B7000000000000000000000000000000000DD -S31540025B8000000000000000000000000000000000CD -S31540025B9000000000000000000000000000000000BD -S31540025BA000000000000000000000000000000000AD -S31540025BB0000000000000000000000000000000009D -S31540025BC0000000000000000000000000000000008D -S31540025BD0000000000000000000000000000000007D -S31540025BE0000000000000000000000000000000006D -S31540025BF0000000000000000000000000000000005D -S31540025C00000000000000000000000000000000004C -S31540025C10000000000000000000000000000000003C -S31540025C20000000000000000000000000000000002C -S31540025C30000000000000000000000000000000001C -S31540025C40000000000000000000000000000000000C -S31540025C5000000000000000000000000000000000FC -S31540025C6000000000000000000000000000000000EC -S31540025C7000000000000000000000000000000000DC -S31540025C8000000000000000000000000000000000CC -S31540025C9000000000000000000000000000000000BC -S31540025CA000000000000000000000000000000000AC -S31540025CB0000000000000000000000000000000009C -S31540025CC0000000000000000000000000000000008C -S31540025CD0000000000000000000000000000000007C -S31540025CE0000000000000000000000000000000006C -S31540025CF0000000000000000000000000000000005C -S31540025D00000000000000000000000000000000004B -S31540025D10000000000000000000000000000000003B -S31540025D20000000000000000000000000000000002B -S31540025D30000000000000000000000000000000001B -S31540025D40000000000000000000000000000000000B -S31540025D5000000000000000000000000000000000FB -S31540025D6000000000000000000000000000000000EB -S31540025D7000000000000000000000000000000000DB -S31540025D8000000000000000000000000000000000CB -S31540025D9000000000000000000000000000000000BB -S31540025DA000000000000000000000000000000000AB -S31540025DB0000000000000000000000000000000009B -S31540025DC0000000000000000000000000000000008B -S31540025DD0000000000000000000000000000000007B -S31540025DE0000000000000000000000000000000006B -S31540025DF0000000000000000000000000000000005B -S31540025E00000000000000000000000000000000004A -S31540025E10000000000000000000000000000000003A -S31540025E20000000000000000000000000000000002A -S31540025E30000000000000000000000000000000001A -S31540025E40000000000000000000000000000000000A -S31540025E5000000000000000000000000000000000FA -S31540025E6000000000000000000000000000000000EA -S31540025E7000000000000000000000000000000000DA -S31540025E8000000000000000000000000000000000CA -S31540025E9000000000000000000000000000000000BA -S31540025EA000000000000000000000000000000000AA -S31540025EB0000000000000000000000000000000009A -S31540025EC0000000000000000000000000000000008A -S31540025ED0000000000000000000000000000000007A -S31540025EE0000000000000000000000000000000006A -S31540025EF0000000000000000000000000000000005A -S31540025F000000000000000000000000000000000049 -S31540025F100000000000000000000000000000000039 -S31540025F200000000000000000000000000000000029 -S31540025F300000000000000000000000000000000019 -S31540025F400000000000000000000000000000000009 -S31540025F5000000000000000000000000000000000F9 -S31540025F6000000000000000000000000000000000E9 -S31540025F7000000000000000000000000000000000D9 -S31540025F8000000000000000000000000000000000C9 -S31540025F9000000000000000000000000000000000B9 -S31540025FA000000000000000000000000000000000A9 -S31540025FB00000000000000000000000000000000099 -S31540025FC00000000000000000000000000000000089 -S31540025FD00000000000000000000000000000000079 -S31540025FE00000000000000000000000000000000069 -S31540025FF00000000000000000000000000000000059 -S315400260000000000000000000000000000000000048 -S315400260100000000000000000000000000000000038 -S315400260200000000000000000000000000000000028 -S315400260300000000000000000000000000000000018 -S315400260400000000000000000000000000000000008 -S3154002605000000000000000000000000000000000F8 -S3154002606000000000000000000000000000000000E8 -S3154002607000000000000000000000000000000000D8 -S3154002608000000000000000000000000000000000C8 -S3154002609000000000000000000000000000000000B8 -S315400260A000000000000000000000000000000000A8 -S315400260B00000000000000000000000000000000098 -S315400260C00000000000000000000000000000000088 -S315400260D00000000000000000000000000000000078 -S315400260E00000000000000000000000000000000068 -S315400260F00000000000000000000000000000000058 -S315400261000000000000000000000000000000000047 -S315400261100000000000000000000000000000000037 -S315400261200000000000000000000000000000000027 -S315400261300000000000000000000000000000000017 -S315400261400000000000000000000000000000000007 -S3154002615000000000000000000000000000000000F7 -S3154002616000000000000000000000000000000000E7 -S3154002617000000000000000000000000000000000D7 -S3154002618000000000000000000000000000000000C7 -S3154002619000000000000000000000000000000000B7 -S315400261A000000000000000000000000000000000A7 -S315400261B00000000000000000000000000000000097 -S315400261C00000000000000000000000000000000087 -S315400261D00000000000000000000000000000000077 -S315400261E00000000000000000000000000000000067 -S315400261F00000000000000000000000000000000057 -S315400262000000000000000000000000000000000046 -S315400262100000000000000000000000000000000036 -S315400262200000000000000000000000000000000026 -S315400262300000000000000000000000000000000016 -S315400262400000000000000000000000000000000006 -S3154002625000000000000000000000000000000000F6 -S3154002626000000000000000000000000000000000E6 -S3154002627000000000000000000000000000000000D6 -S3154002628000000000000000000000000000000000C6 -S3154002629000000000000000000000000000000000B6 -S315400262A000000000000000000000000000000000A6 -S315400262B00000000000000000000000000000000096 -S315400262C00000000000000000000000000000000086 -S315400262D00000000000000000000000000000000076 -S315400262E00000000000000000000000000000000066 -S315400262F00000000000000000000000000000000056 -S315400263000000000000000000000000000000000045 -S315400263100000000000000000000000000000000035 -S315400263200000000000000000000000000000000025 -S315400263300000000000000000000000000000000015 -S315400263400000000000000000000000000000000005 -S3154002635000000000000000000000000000000000F5 -S3154002636000000000000000000000000000000000E5 -S3154002637000000000000000000000000000000000D5 -S3154002638000000000000000000000000000000000C5 -S3154002639000000000000000000000000000000000B5 -S315400263A000000000000000000000000000000000A5 -S315400263B00000000000000000000000000000000095 -S315400263C00000000000000000000000000000000085 -S315400263D00000000000000000000000000000000075 -S315400263E00000000000000000000000000000000065 -S315400263F00000000000000000000000000000000055 -S315400264000000000000000000000000000000000044 -S315400264100000000000000000000000000000000034 -S315400264200000000000000000000000000000000024 -S315400264300000000000000000000000000000000014 -S315400264400000000000000000000000000000000004 -S3154002645000000000000000000000000000000000F4 -S3154002646000000000000000000000000000000000E4 -S3154002647000000000000000000000000000000000D4 -S3154002648000000000000000000000000000000000C4 -S3154002649000000000000000000000000000000000B4 -S315400264A000000000000000000000000000000000A4 -S315400264B00000000000000000000000000000000094 -S315400264C00000000000000000000000000000000084 -S315400264D00000000000000000000000000000000074 -S315400264E00000000000000000000000000000000064 -S315400264F00000000000000000000000000000000054 -S315400265000000000000000000000000000000000043 -S315400265100000000000000000000000000000000033 -S315400265200000000000000000000000000000000023 -S315400265300000000000000000000000000000000013 -S315400265400000000000000000000000000000000003 -S3154002655000000000000000000000000000000000F3 -S3154002656000000000000000000000000000000000E3 -S3154002657000000000000000000000000000000000D3 -S3154002658000000000000000000000000000000000C3 -S3154002659000000000000000000000000000000000B3 -S315400265A000000000000000000000000000000000A3 -S315400265B00000000000000000000000000000000093 -S315400265C00000000000000000000000000000000083 -S315400265D00000000000000000000000000000000073 -S315400265E00000000000000000000000000000000063 -S315400265F00000000000000000000000000000000053 -S315400266000000000000000000000000000000000042 -S315400266100000000000000000000000000000000032 -S315400266200000000000000000000000000000000022 -S315400266300000000000000000000000000000000012 -S315400266400000000000000000000000000000000002 -S3154002665000000000000000000000000000000000F2 -S3154002666000000000000000000000000000000000E2 -S3154002667000000000000000000000000000000000D2 -S3154002668000000000000000000000000000000000C2 -S3154002669000000000000000000000000000000000B2 -S315400266A000000000000000000000000000000000A2 -S315400266B00000000000000000000000000000000092 -S315400266C00000000000000000000000000000000082 -S315400266D00000000000000000000000000000000072 -S315400266E00000000000000000000000000000000062 -S315400266F00000000000000000000000000000000052 -S315400267000000000000000000000000000000000041 -S315400267100000000000000000000000000000000031 -S315400267200000000000000000000000000000000021 -S315400267300000000000000000000000000000000011 -S315400267400000000000000000000000000000000001 -S3154002675000000000000000000000000000000000F1 -S3154002676000000000000000000000000000000000E1 -S3154002677000000000000000000000000000000000D1 -S3154002678000000000000000000000000000000000C1 -S3154002679000000000000000000000000000000000B1 -S315400267A000000000000000000000000000000000A1 -S315400267B00000000000000000000000000000000091 -S315400267C00000000000000000000000000000000081 -S315400267D00000000000000000000000000000000071 -S315400267E00000000000000000000000000000000061 -S315400267F00000000000000000000000000000000051 -S315400268000000000000000000000000000000000040 -S315400268100000000000000000000000000000000030 -S315400268200000000000000000000000000000000020 -S315400268300000000000000000000000000000000010 -S315400268400000000000000000000000000000000000 -S3154002685000000000000000000000000000000000F0 -S3154002686000000000000000000000000000000000E0 -S3154002687000000000000000000000000000000000D0 -S3154002688000000000000000000000000000000000C0 -S3154002689000000000000000000000000000000000B0 -S315400268A000000000000000000000000000000000A0 -S315400268B00000000000000000000000000000000090 -S315400268C00000000000000000000000000000000080 -S315400268D00000000000000000000000000000000070 -S315400268E00000000000000000000000000000000060 -S315400268F00000000000000000000000000000000050 -S31540026900000000000000000000000000000000003F -S31540026910000000000000000000000000000000002F -S31540026920000000000000000000000000000000001F -S31540026930000000000000000000000000000000000F -S3154002694000000000000000000000000000000000FF -S3154002695000000000000000000000000000000000EF -S3154002696000000000000000000000000000000000DF -S3154002697000000000000000000000000000000000CF -S3154002698000000000000000000000000000000000BF -S3154002699000000000000000000000000000000000AF -S315400269A0000000000000000000000000000000009F -S315400269B0000000000000000000000000000000008F -S315400269C0000000000000000000000000000000007F -S315400269D0000000000000000000000000000000006F -S315400269E0000000000000000000000000000000005F -S315400269F0000000000000000000000000000000004F -S31540026A00000000000000000000000000000000003E -S31540026A10000000000000000000000000000000002E -S31540026A20000000000000000000000000000000001E -S31540026A30000000000000000000000000000000000E -S31540026A4000000000000000000000000000000000FE -S31540026A5000000000000000000000000000000000EE -S31540026A6000000000000000000000000000000000DE -S31540026A7000000000000000000000000000000000CE -S31540026A8000000000000000000000000000000000BE -S31540026A9000000000000000000000000000000000AE -S31540026AA0000000000000000000000000000000009E -S31540026AB0000000000000000000000000000000008E -S31540026AC0000000000000000000000000000000007E -S31540026AD0000000000000000000000000000000006E -S31540026AE0000000000000000000000000000000005E -S31540026AF0000000000000000000000000000000004E -S31540026B00000000000000000000000000000000003D -S31540026B10000000000000000000000000000000002D -S31540026B20000000000000000000000000000000001D -S31540026B30000000000000000000000000000000000D -S31540026B4000000000000000000000000000000000FD -S31540026B5000000000000000000000000000000000ED -S31540026B6000000000000000000000000000000000DD -S31540026B7000000000000000000000000000000000CD -S31540026B8000000000000000000000000000000000BD -S31540026B9000000000000000000000000000000000AD -S31540026BA0000000000000000000000000000000009D -S31540026BB0000000000000000000000000000000008D -S31540026BC0000000000000000000000000000000007D -S31540026BD0000000000000000000000000000000006D -S31540026BE0000000000000000000000000000000005D -S31540026BF0000000000000000000000000000000004D -S31540026C00000000000000000000000000000000003C -S31540026C10000000000000000000000000000000002C -S31540026C20000000000000000000000000000000001C -S31540026C30000000000000000000000000000000000C -S31540026C4000000000000000000000000000000000FC -S31540026C5000000000000000000000000000000000EC -S31540026C6000000000000000000000000000000000DC -S31540026C7000000000000000000000000000000000CC -S31540026C8000000000000000000000000000000000BC -S31540026C9000000000000000000000000000000000AC -S31540026CA0000000000000000000000000000000009C -S31540026CB0000000000000000000000000000000008C -S31540026CC0000000000000000000000000000000007C -S31540026CD0000000000000000000000000000000006C -S31540026CE0000000000000000000000000000000005C -S31540026CF0000000000000000000000000000000004C -S31540026D00000000000000000000000000000000003B -S31540026D10000000000000000000000000000000002B -S31540026D20000000000000000000000000000000001B -S31540026D30000000000000000000000000000000000B -S31540026D4000000000000000000000000000000000FB -S31540026D5000000000000000000000000000000000EB -S31540026D6000000000000000000000000000000000DB -S31540026D7000000000000000000000000000000000CB -S31540026D8000000000000000000000000000000000BB -S31540026D9000000000000000000000000000000000AB -S31540026DA0000000000000000000000000000000009B -S31540026DB0000000000000000000000000000000008B -S31540026DC0000000000000000000000000000000007B -S31540026DD0000000000000000000000000000000006B -S31540026DE0000000000000000000000000000000005B -S31540026DF0000000000000000000000000000000004B -S31540026E00000000000000000000000000000000003A -S31540026E10000000000000000000000000000000002A -S31540026E20000000000000000000000000000000001A -S31540026E30000000000000000000000000000000000A -S31540026E4000000000000000000000000000000000FA -S31540026E5000000000000000000000000000000000EA -S31540026E6000000000000000000000000000000000DA -S31540026E7000000000000000000000000000000000CA -S31540026E8000000000000000000000000000000000BA -S31540026E9000000000000000000000000000000000AA -S31540026EA0000000000000000000000000000000009A -S31540026EB0000000000000000000000000000000008A -S31540026EC0000000000000000000000000000000007A -S31540026ED0000000000000000000000000000000006A -S31540026EE0000000000000000000000000000000005A -S31540026EF0000000000000000000000000000000004A -S31540026F000000000000000000000000000000000039 -S31540026F100000000000000000000000000000000029 -S31540026F200000000000000000000000000000000019 -S31540026F300000000000000000000000000000000009 -S31540026F4000000000000000000000000000000000F9 -S31540026F5000000000000000000000000000000000E9 -S31540026F6000000000000000000000000000000000D9 -S31540026F7000000000000000000000000000000000C9 -S31540026F8000000000000000000000000000000000B9 -S31540026F9000000000000000000000000000000000A9 -S31540026FA00000000000000000000000000000000099 -S31540026FB00000000000000000000000000000000089 -S31540026FC00000000000000000000000000000000079 -S31540026FD00000000000000000000000000000000069 -S31540026FE00000000000000000000000000000000059 -S31540026FF00000000000000000000000000000000049 -S315400270000000000000000000000000000000000038 -S315400270100000000000000000000000000000000028 -S315400270200000000000000000000000000000000018 -S315400270300000000000000000000000000000000008 -S3154002704000000000000000000000000000000000F8 -S3154002705000000000000000000000000000000000E8 -S3154002706000000000000000000000000000000000D8 -S3154002707000000000000000000000000000000000C8 -S3154002708000000000000000000000000000000000B8 -S3154002709000000000000000000000000000000000A8 -S315400270A00000000000000000000000000000000098 -S315400270B00000000000000000000000000000000088 -S315400270C00000000000000000000000000000000078 -S315400270D00000000000000000000000000000000068 -S315400270E00000000000000000000000000000000058 -S315400270F00000000000000000000000000000000048 -S315400271000000000000000000000000000000000037 -S315400271100000000000000000000000000000000027 -S315400271200000000000000000000000000000000017 -S315400271300000000000000000000000000000000007 -S3154002714000000000000000000000000000000000F7 -S3154002715000000000000000000000000000000000E7 -S3154002716000000000000000000000000000000000D7 -S3154002717000000000000000000000000000000000C7 -S3154002718000000000000000000000000000000000B7 -S3154002719000000000000000000000000000000000A7 -S315400271A00000000000000000000000000000000097 -S315400271B00000000000000000000000000000000087 -S315400271C00000000000000000000000000000000077 -S315400271D00000000000000000000000000000000067 -S315400271E00000000000000000000000000000000057 -S315400271F00000000000000000000000000000000047 -S315400272000000000000000000000000000000000036 -S315400272100000000000000000000000000000000026 -S315400272200000000000000000000000000000000016 -S315400272300000000000000000000000000000000006 -S3154002724000000000000000000000000000000000F6 -S3154002725000000000000000000000000000000000E6 -S3154002726000000000000000000000000000000000D6 -S3154002727000000000000000000000000000000000C6 -S3154002728000000000000000000000000000000000B6 -S3154002729000000000000000000000000000000000A6 -S315400272A00000000000000000000000000000000096 -S315400272B00000000000000000000000000000000086 -S315400272C00000000000000000000000000000000076 -S315400272D00000000000000000000000000000000066 -S315400272E00000000000000000000000000000000056 -S315400272F00000000000000000000000000000000046 -S315400273000000000000000000000000000000000035 -S315400273100000000000000000000000000000000025 -S315400273200000000000000000000000000000000015 -S315400273300000000000000000000000000000000005 -S3154002734000000000000000000000000000000000F5 -S3154002735000000000000000000000000000000000E5 -S3154002736000000000000000000000000000000000D5 -S3154002737000000000000000000000000000000000C5 -S3154002738000000000000000000000000000000000B5 -S3154002739000000000000000000000000000000000A5 -S315400273A00000000000000000000000000000000095 -S315400273B00000000000000000000000000000000085 -S315400273C00000000000000000000000000000000075 -S315400273D00000000000000000000000000000000065 -S315400273E00000000000000000000000000000000055 -S315400273F00000000000000000000000000000000045 -S315400274000000000000000000000000000000000034 -S315400274100000000000000000000000000000000024 -S315400274200000000000000000000000000000000014 -S315400274300000000000000000000000000000000004 -S3154002744000000000000000000000000000000000F4 -S3154002745000000000000000000000000000000000E4 -S3154002746000000000000000000000000000000000D4 -S3154002747000000000000000000000000000000000C4 -S3154002748000000000000000000000000000000000B4 -S3154002749000000000000000000000000000000000A4 -S315400274A00000000000000000000000000000000094 -S315400274B00000000000000000000000000000000084 -S315400274C00000000000000000000000000000000074 -S315400274D00000000000000000000000000000000064 -S315400274E00000000000000000000000000000000054 -S315400274F00000000000000000000000000000000044 -S315400275000000000000000000000000000000000033 -S315400275100000000000000000000000000000000023 -S315400275200000000000000000000000000000000013 -S315400275300000000000000000000000000000000003 -S3154002754000000000000000000000000000000000F3 -S3154002755000000000000000000000000000000000E3 -S3154002756000000000000000000000000000000000D3 -S3154002757000000000000000000000000000000000C3 -S3154002758000000000000000000000000000000000B3 -S3154002759000000000000000000000000000000000A3 -S315400275A00000000000000000000000000000000093 -S315400275B00000000000000000000000000000000083 -S315400275C00000000000000000000000000000000073 -S315400275D00000000000000000000000000000000063 -S315400275E00000000000000000000000000000000053 -S315400275F00000000000000000000000000000000043 -S315400276000000000000000000000000000000000032 -S315400276100000000000000000000000000000000022 -S315400276200000000000000000000000000000000012 -S315400276300000000000000000000000000000000002 -S3154002764000000000000000000000000000000000F2 -S3154002765000000000000000000000000000000000E2 -S3154002766000000000000000000000000000000000D2 -S3154002767000000000000000000000000000000000C2 -S3154002768000000000000000000000000000000000B2 -S3154002769000000000000000000000000000000000A2 -S315400276A00000000000000000000000000000000092 -S315400276B00000000000000000000000000000000082 -S315400276C00000000000000000000000000000000072 -S315400276D00000000000000000000000000000000062 -S315400276E00000000000000000000000000000000052 -S315400276F00000000000000000000000000000000042 -S315400277000000000000000000000000000000000031 -S315400277100000000000000000000000000000000021 -S315400277200000000000000000000000000000000011 -S315400277300000000000000000000000000000000001 -S3154002774000000000000000000000000000000000F1 -S3154002775000000000000000000000000000000000E1 -S3154002776000000000000000000000000000000000D1 -S3154002777000000000000000000000000000000000C1 -S3154002778000000000000000000000000000000000B1 -S3154002779000000000000000000000000000000000A1 -S315400277A00000000000000000000000000000000091 -S315400277B00000000000000000000000000000000081 -S315400277C00000000000000000000000000000000071 -S315400277D00000000000000000000000000000000061 -S315400277E00000000000000000000000000000000051 -S315400277F00000000000000000000000000000000041 -S315400278000000000000000000000000000000000030 -S315400278100000000000000000000000000000000020 -S315400278200000000000000000000000000000000010 -S315400278300000000000000000000000000000000000 -S3154002784000000000000000000000000000000000F0 -S3154002785000000000000000000000000000000000E0 -S3154002786000000000000000000000000000000000D0 -S3154002787000000000000000000000000000000000C0 -S3154002788000000000000000000000000000000000B0 -S3154002789000000000000000000000000000000000A0 -S315400278A00000000000000000000000000000000090 -S315400278B00000000000000000000000000000000080 -S315400278C00000000000000000000000000000000070 -S315400278D00000000000000000000000000000000060 -S315400278E00000000000000000000000000000000050 -S315400278F00000000000000000000000000000000040 -S31540027900000000000000000000000000000000002F -S31540027910000000000000000000000000000000001F -S31540027920000000000000000000000000000000000F -S3154002793000000000000000000000000000000000FF -S3154002794000000000000000000000000000000000EF -S3154002795000000000000000000000000000000000DF -S3154002796000000000000000000000000000000000CF -S3154002797000000000000000000000000000000000BF -S3154002798000000000000000000000000000000000AF -S31540027990000000000000000000000000000000009F -S315400279A0000000000000000000000000000000008F -S315400279B0000000000000000000000000000000007F -S315400279C0000000000000000000000000000000006F -S315400279D0000000000000000000000000000000005F -S315400279E0000000000000000000000000000000004F -S315400279F0000000000000000000000000000000003F -S31540027A00000000000000000000000000000000002E -S31540027A10000000000000000000000000000000001E -S31540027A20000000000000000000000000000000000E -S31540027A3000000000000000000000000000000000FE -S31540027A4000000000000000000000000000000000EE -S31540027A5000000000000000000000000000000000DE -S31540027A6000000000000000000000000000000000CE -S31540027A7000000000000000000000000000000000BE -S31540027A8000000000000000000000000000000000AE -S31540027A90000000000000000000000000000000009E -S31540027AA0000000000000000000000000000000008E -S31540027AB0000000000000000000000000000000007E -S31540027AC0000000000000000000000000000000006E -S31540027AD0000000000000000000000000000000005E -S31540027AE0000000000000000000000000000000004E -S31540027AF0000000000000000000000000000000003E -S31540027B00000000000000000000000000000000002D -S31540027B10000000000000000000000000000000001D -S31540027B20000000000000000000000000000000000D -S31540027B3000000000000000000000000000000000FD -S31540027B4000000000000000000000000000000000ED -S31540027B5000000000000000000000000000000000DD -S31540027B6000000000000000000000000000000000CD -S31540027B7000000000000000000000000000000000BD -S31540027B8000000000000000000000000000000000AD -S31540027B90000000000000000000000000000000009D -S31540027BA0000000000000000000000000000000008D -S31540027BB0000000000000000000000000000000007D -S31540027BC0000000000000000000000000000000006D -S31540027BD0000000000000000000000000000000005D -S31540027BE0000000000000000000000000000000004D -S31540027BF0000000000000000000000000000000003D -S31540027C00000000000000000000000000000000002C -S31540027C10000000000000000000000000000000001C -S31540027C20000000000000000000000000000000000C -S31540027C3000000000000000000000000000000000FC -S31540027C4000000000000000000000000000000000EC -S31540027C5000000000000000000000000000000000DC -S31540027C6000000000000000000000000000000000CC -S31540027C7000000000000000000000000000000000BC -S31540027C8000000000000000000000000000000000AC -S31540027C90000000000000000000000000000000009C -S31540027CA0000000000000000000000000000000008C -S31540027CB0000000000000000000000000000000007C -S31540027CC0000000000000000000000000000000006C -S31540027CD0000000000000000000000000000000005C -S31540027CE0000000000000000000000000000000004C -S31540027CF0000000000000000000000000000000003C -S31540027D00000000000000000000000000000000002B -S31540027D10000000000000000000000000000000001B -S31540027D20000000000000000000000000000000000B -S31540027D3000000000000000000000000000000000FB -S31540027D4000000000000000000000000000000000EB -S31540027D5000000000000000000000000000000000DB -S31540027D6000000000000000000000000000000000CB -S31540027D7000000000000000000000000000000000BB -S31540027D8000000000000000000000000000000000AB -S31540027D90000000000000000000000000000000009B -S31540027DA0000000000000000000000000000000008B -S31540027DB0000000000000000000000000000000007B -S31540027DC0000000000000000000000000000000006B -S31540027DD0000000000000000000000000000000005B -S31540027DE0000000000000000000000000000000004B -S31540027DF0000000000000000000000000000000003B -S31540027E00000000000000000000000000000000002A -S31540027E10000000000000000000000000000000001A -S31540027E20000000000000000000000000000000000A -S31540027E3000000000000000000000000000000000FA -S31540027E4000000000000000000000000000000000EA -S31540027E5000000000000000000000000000000000DA -S31540027E6000000000000000000000000000000000CA -S31540027E7000000000000000000000000000000000BA -S31540027E8000000000000000000000000000000000AA -S31540027E90000000000000000000000000000000009A -S31540027EA0000000000000000000000000000000008A -S31540027EB0000000000000000000000000000000007A -S31540027EC0000000000000000000000000000000006A -S31540027ED0000000000000000000000000000000005A -S31540027EE0000000000000000000000000000000004A -S31540027EF0000000000000000000000000000000003A -S31540027F000000000000000000000000000000000029 -S31540027F100000000000000000000000000000000019 -S31540027F200000000000000000000000000000000009 -S31540027F3000000000000000000000000000000000F9 -S31540027F4000000000000000000000000000000000E9 -S31540027F5000000000000000000000000000000000D9 -S31540027F6000000000000000000000000000000000C9 -S31540027F7000000000000000000000000000000000B9 -S31540027F8000000000000000000000000000000000A9 -S31540027F900000000000000000000000000000000099 -S31540027FA00000000000000000000000000000000089 -S31540027FB00000000000000000000000000000000079 -S31540027FC00000000000000000000000000000000069 -S31540027FD00000000000000000000000000000000059 -S31540027FE00000000000000000000000000000000049 -S31540027FF00000000000000000000000000000000039 -S315400280000000003F0000000C0000003F000000128C -S31540028010000000FF00000018000000000000000001 -S315400280200000000000000000000000000000000008 -S3154002803000000000000000000000000000000000F8 -S3154002804000000000000000000000000000000000E8 -S3154002805000000000000000000000000000000000D8 -S3154002806000000000000000000000000000000000C8 -S3154002807000000000000000000000000000000000B8 -S3154002808000000000000000000000000000000000A8 -S315400280900000000000000000000000000000000098 -S315400280A00000000000000000000000000000000088 -S315400280B00000000000000000000000000000000078 -S315400280C00000000000000000000000000000000068 -S315400280D00000000000000000000000000000000058 -S315400280E00000000000000000000000000000000048 -S315400280F00000000000000000000000000000000038 -S315400281000000000000000000000000000000000027 -S315400281100000000000000000000000000000000017 -S315400281200000000000000000000000000000000007 -S3154002813000000000000000000000000000000000F7 -S3154002814000000000000000000000000000000000E7 -S3154002815000000000000000000000000000000000D7 -S3154002816000000000000000000000000000000000C7 -S3154002817000000000000000000000000000000000B7 -S3154002818000000000000000000000000000000000A7 -S315400281900000000000000000000000000000000097 -S315400281A00000000000000000000000000000000087 -S315400281B00000000000000000000000000000000077 -S315400281C00000000000000000000000000000000067 -S315400281D00000000000000000000000000000000057 -S315400281E00000000000000000000000000000000047 -S315400281F00000000000000000000000000000000037 -S315400282000000000000000000000000000000000026 -S315400282100000000000000000000000000000000016 -S315400282200000000000000000000000000000000006 -S3154002823000000000000000000000000000000000F6 -S3154002824000000000000000000000000000000000E6 -S3154002825000000000000000000000000000000000D6 -S3154002826000000000000000000000000000000000C6 -S3154002827000000000000000000000000000000000B6 -S3154002828000000000000000000000000000000000A6 -S315400282900000000000000000000000000000000096 -S315400282A00000000000000000000000000000000086 -S315400282B00000000000000000000000000000000076 -S315400282C00000000000000000000000000000000066 -S315400282D00000000000000000000000000000000056 -S315400282E00000000000000000000000000000000046 -S315400282F00000000000000000000000000000000036 -S315400283000000000000000000000000000000000025 -S315400283100000000000000000000000000000000015 -S315400283200000000000000000000000000000000005 -S3154002833000000000000000000000000000000000F5 -S3154002834000000000000000000000000000000000E5 -S3154002835000000000000000000000000000000000D5 -S3154002836000000000000000000000000000000000C5 -S3154002837000000000000000000000000000000000B5 -S3154002838000000000000000000000000000000000A5 -S315400283900000000000000000000000000000000095 -S315400283A00000000000000000000000000000000085 -S315400283B00000000000000000000000000000000075 -S315400283C00000000000000000000000000000000065 -S315400283D00000000000000000000000000000000055 -S315400283E00000000000000000000000000000000045 -S315400283F00000000000000000000000000000000035 -S315400284000000000000000000000000000000000024 -S315400284100000000000000000000000000000000014 -S315400284200000000000000000000000000000000004 -S3154002843000000000000000000000000000000000F4 -S3154002844000000000000000000000000000000000E4 -S3154002845000000000000000000000000000000000D4 -S3154002846000000000000000000000000000000000C4 -S3154002847000000000000000000000000000000000B4 -S3154002848000000000000000000000000000000000A4 -S315400284900000000000000000000000000000000094 -S315400284A00000000000000000000000000000000084 -S315400284B00000000000000000000000000000000074 -S315400284C00000000000000000000000000000000064 -S315400284D00000000000000000000000000000000054 -S315400284E00000000000000000000000000000000044 -S315400284F00000000000000000000000000000000034 -S315400285000000000000000000000000000000000023 -S315400285100000000000000000000000000000000013 -S315400285200000000000000000000000000000000003 -S3154002853000000000000000000000000000000000F3 -S3154002854000000000000000000000000000000000E3 -S3154002855000000000000000000000000000000000D3 -S3154002856000000000000000000000000000000000C3 -S3154002857000000000000000000000000000000000B3 -S3154002858000000000000000000000000000000000A3 -S315400285900000000000000000000000000000000093 -S315400285A00000000000000000000000000000000083 -S315400285B00000000000000000000000000000000073 -S315400285C00000000000000000000000000000000063 -S315400285D00000000000000000000000000000000053 -S315400285E00000000000000000000000000000000043 -S315400285F00000000000000000000000000000000033 -S315400286000000000000000000000000000000000022 -S315400286100000000000000000000000000000000012 -S315400286200000000000000000000000000000000002 -S3154002863000000000000000000000000000000000F2 -S3154002864000000000000000000000000000000000E2 -S3154002865000000000000000000000000000000000D2 -S3154002866000000000000000000000000000000000C2 -S3154002867000000000000000000000000000000000B2 -S3154002868000000000000000000000000000000000A2 -S315400286900000000000000000000000000000000092 -S315400286A00000000000000000000000000000000082 -S315400286B00000000000000000000000000000000072 -S315400286C00000000000000000000000000000000062 -S315400286D00000000000000000000000000000000052 -S315400286E00000000000000000000000000000000042 -S315400286F00000000000000000000000000000000032 -S315400287000000000000000000000000000000000021 -S315400287100000000000000000000000000000000011 -S315400287200000000000000000000000000000000001 -S3154002873000000000000000000000000000000000F1 -S3154002874000000000000000000000000000000000E1 -S3154002875000000000000000000000000000000000D1 -S3154002876000000000000000000000000000000000C1 -S3154002877000000000000000000000000000000000B1 -S3154002878000000000000000000000000000000000A1 -S315400287900000000000000000000000000000000091 -S315400287A00000000000000000000000000000000081 -S315400287B00000000000000000000000000000000071 -S315400287C00000000000000000000000000000000061 -S315400287D00000000000000000000000000000000051 -S315400287E00000000000000000000000000000000041 -S315400287F00000000000000000000000000000000031 -S315400288000000000000000000000000000000000020 -S315400288100000000000000000000000000000000010 -S315400288200000000000000000000000000000000000 -S3154002883000000000000000000000000000000000F0 -S3154002884000000000000000000000000000000000E0 -S3154002885000000000000000000000000000000000D0 -S3154002886000000000000000000000000000000000C0 -S3154002887000000000000000000000000000000000B0 -S3154002888000000000000000000000000000000000A0 -S315400288900000000000000000000000000000000090 -S315400288A00000000000000000000000000000000080 -S315400288B00000000000000000000000000000000070 -S315400288C00000000000000000000000000000000060 -S315400288D00000000000000000000000000000000050 -S315400288E00000000000000000000000000000000040 -S315400288F00000000000000000000000000000000030 -S31540028900000000000000000000000000000000001F -S31540028910000000000000000000000000000000000F -S3154002892000000000000000000000000000000000FF -S3154002893000000000000000000000000000000000EF -S3154002894000000000000000000000000000000000DF -S3154002895000000000000000000000000000000000CF -S3154002896000000000000000000000000000000000BF -S3154002897000000000000000000000000000000000AF -S31540028980000000000000000000000000000000009F -S31540028990000000000000000000000000000000008F -S315400289A0000000000000000000000000000000007F -S315400289B0000000000000000000000000000000006F -S315400289C0000000000000000000000000000000005F -S315400289D0000000000000000000000000000000004F -S315400289E0000000000000000000000000000000003F -S315400289F0000000000000000000000000000000002F -S31540028A00000000000000000000000000000000001E -S31540028A10000000000000000000000000000000000E -S31540028A2000000000000000000000000000000000FE -S31540028A3000000000000000000000000000000000EE -S31540028A4000000000000000000000000000000000DE -S31540028A5000000000000000000000000000000000CE -S31540028A6000000000000000000000000000000000BE -S31540028A7000000000000000000000000000000000AE -S31540028A80000000000000000000000000000000009E -S31540028A90000000000000000000000000000000008E -S31540028AA0000000000000000000000000000000007E -S31540028AB0000000000000000000000000000000006E -S31540028AC0000000000000000000000000000000005E -S31540028AD0000000000000000000000000000000004E -S31540028AE0000000000000000000000000000000003E -S31540028AF0000000000000000000000000000000002E -S31540028B00000000000000000000000000000000001D -S31540028B10000000000000000000000000000000000D -S31540028B2000000000000000000000000000000000FD -S31540028B3000000000000000000000000000000000ED -S31540028B4000000000000000000000000000000000DD -S31540028B5000000000000000000000000000000000CD -S31540028B6000000000000000000000000000000000BD -S31540028B7000000000000000000000000000000000AD -S31540028B80000000000000000000000000000000009D -S31540028B90000000000000000000000000000000008D -S31540028BA0000000000000000000000000000000007D -S31540028BB0000000000000000000000000000000006D -S31540028BC0000000000000000000000000000000005D -S31540028BD0000000000000000000000000000000004D -S31540028BE0000000000000000000000000000000003D -S31540028BF0000000000000000000000000000000002D -S31540028C00000000000000000000000000000000001C -S31540028C10000000000000000000000000000000000C -S31540028C2000000000000000000000000000000000FC -S31540028C3000000000000000000000000000000000EC -S31540028C4000000000000000000000000000000000DC -S31540028C5000000000000000000000000000000000CC -S31540028C6000000000000000000000000000000000BC -S31540028C7000000000000000000000000000000000AC -S31540028C80000000000000000000000000000000009C -S31540028C90000000000000000000000000000000008C -S31540028CA0000000000000000000000000000000007C -S31540028CB0000000000000000000000000000000006C -S31540028CC0000000000000000000000000000000005C -S31540028CD0000000000000000000000000000000004C -S31540028CE0000000000000000000000000000000003C -S31540028CF0000000000000000000000000000000002C -S31540028D00000000000000000000000000000000001B -S31540028D10000000000000000000000000000000000B -S31540028D2000000000000000000000000000000000FB -S31540028D3000000000000000000000000000000000EB -S31540028D4000000000000000000000000000000000DB -S31540028D5000000000000000000000000000000000CB -S31540028D6000000000000000000000000000000000BB -S31540028D7000000000000000000000000000000000AB -S31540028D80000000000000000000000000000000009B -S31540028D90000000000000000000000000000000008B -S31540028DA0000000000000000000000000000000007B -S31540028DB0000000000000000000000000000000006B -S31540028DC0000000000000000000000000000000005B -S31540028DD0000000000000000000000000000000004B -S31540028DE0000000000000000000000000000000003B -S31540028DF0000000000000000000000000000000002B -S31540028E00000000000000000000000000000000001A -S31540028E10000000000000000000000000000000000A -S31540028E2000000000000000000000000000000000FA -S31540028E3000000000000000000000000000000000EA -S31540028E4000000000000000000000000000000000DA -S31540028E5000000000000000000000000000000000CA -S31540028E6000000000000000000000000000000000BA -S31540028E7000000000000000000000000000000000AA -S31540028E80000000000000000000000000000000009A -S31540028E90000000000000000000000000000000008A -S31540028EA0000000000000000000000000000000007A -S31540028EB0000000000000000000000000000000006A -S31540028EC0000000000000000000000000000000005A -S31540028ED0000000000000000000000000000000004A -S31540028EE0000000000000000000000000000000003A -S31540028EF0000000000000000000000000000000002A -S31540028F000000000000000000000000000000000019 -S31540028F100000000000000000000000000000000009 -S31540028F2000000000000000000000000000000000F9 -S31540028F3000000000000000000000000000000000E9 -S31540028F4000000000000000000000000000000000D9 -S31540028F5000000000000000000000000000000000C9 -S31540028F6000000000000000000000000000000000B9 -S31540028F7000000000000000000000000000000000A9 -S31540028F800000000000000000000000000000000099 -S31540028F900000000000000000000000000000000089 -S31540028FA00000000000000000000000000000000079 -S31540028FB00000000000000000000000000000000069 -S31540028FC00000000000000000000000000000000059 -S31540028FD00000000000000000000000000000000049 -S31540028FE00000000000000000000000000000000039 -S31540028FF00000000000000000000000000000000029 -S315400290000000000000000000000000000000000018 -S315400290100000000000000000000000000000000008 -S3154002902000000000000000000000000000000000F8 -S3154002903000000000000000000000000000000000E8 -S3154002904000000000000000000000000000000000D8 -S3154002905000000000000000000000000000000000C8 -S3154002906000000000000000000000000000000000B8 -S3154002907000000000000000000000000000000000A8 -S315400290800000000000000000000000000000000098 -S315400290900000000000000000000000000000000088 -S315400290A00000000000000000000000000000000078 -S315400290B00000000000000000000000000000000068 -S315400290C00000000000000000000000000000000058 -S315400290D00000000000000000000000000000000048 -S315400290E00000000000000000000000000000000038 -S315400290F00000000000000000000000000000000028 -S315400291000000000000000000000000000000000017 -S315400291100000000000000000000000000000000007 -S3154002912000000000000000000000000000000000F7 -S3154002913000000000000000000000000000000000E7 -S3154002914000000000000000000000000000000000D7 -S3154002915000000000000000000000000000000000C7 -S3154002916000000000000000000000000000000000B7 -S3154002917000000000000000000000000000000000A7 -S315400291800000000000000000000000000000000097 -S315400291900000000000000000000000000000000087 -S315400291A00000000000000000000000000000000077 -S315400291B00000000000000000000000000000000067 -S315400291C00000000000000000000000000000000057 -S315400291D00000000000000000000000000000000047 -S315400291E00000000000000000000000000000000037 -S315400291F00000000000000000000000000000000027 -S315400292000000000000000000000000000000000016 -S315400292100000000000000000000000000000000006 -S3154002922000000000000000000000000000000000F6 -S3154002923000000000000000000000000000000000E6 -S3154002924000000000000000000000000000000000D6 -S3154002925000000000000000000000000000000000C6 -S3154002926000000000000000000000000000000000B6 -S3154002927000000000000000000000000000000000A6 -S315400292800000000000000000000000000000000096 -S315400292900000000000000000000000000000000086 -S315400292A00000000000000000000000000000000076 -S315400292B00000000000000000000000000000000066 -S315400292C00000000000000000000000000000000056 -S315400292D00000000000000000000000000000000046 -S315400292E00000000000000000000000000000000036 -S315400292F00000000000000000000000000000000026 -S315400293000000000000000000000000000000000015 -S315400293100000000000000000000000000000000005 -S3154002932000000000000000000000000000000000F5 -S3154002933000000000000000000000000000000000E5 -S3154002934000000000000000000000000000000000D5 -S3154002935000000000000000000000000000000000C5 -S3154002936000000000000000000000000000000000B5 -S3154002937000000000000000000000000000000000A5 -S315400293800000000000000000000000000000000095 -S315400293900000000000000000000000000000000085 -S315400293A00000000000000000000000000000000075 -S315400293B00000000000000000000000000000000065 -S315400293C00000000000000000000000000000000055 -S315400293D00000000000000000000000000000000045 -S315400293E00000000000000000000000000000000035 -S315400293F00000000000000000000000000000000025 -S315400294000000000000000000000000000000000014 -S315400294100000000000000000000000000000000004 -S3154002942000000000000000000000000000000000F4 -S3154002943000000000000000000000000000000000E4 -S3154002944000000000000000000000000000000000D4 -S3154002945000000000000000000000000000000000C4 -S3154002946000000000000000000000000000000000B4 -S3154002947000000000000000000000000000000000A4 -S315400294800000000000000000000000000000000094 -S315400294900000000000000000000000000000000084 -S315400294A00000000000000000000000000000000074 -S315400294B00000000000000000000000000000000064 -S315400294C00000000000000000000000000000000054 -S315400294D00000000000000000000000000000000044 -S315400294E00000000000000000000000000000000034 -S315400294F00000000000000000000000000000000024 -S315400295000000000000000000000000000000000013 -S315400295100000000000000000000000000000000003 -S3154002952000000000000000000000000000000000F3 -S3154002953000000000000000000000000000000000E3 -S3154002954000000000000000000000000000000000D3 -S3154002955000000000000000000000000000000000C3 -S3154002956000000000000000000000000000000000B3 -S3154002957000000000000000000000000000000000A3 -S315400295800000000000000000000000000000000093 -S315400295900000000000000000000000000000000083 -S315400295A00000000000000000000000000000000073 -S315400295B00000000000000000000000000000000063 -S315400295C00000000000000000000000000000000053 -S315400295D00000000000000000000000000000000043 -S315400295E00000000000000000000000000000000033 -S315400295F00000000000000000000000000000000023 -S315400296000000000000000000000000000000000012 -S315400296100000000000000000000000000000000002 -S3154002962000000000000000000000000000000000F2 -S3154002963000000000000000000000000000000000E2 -S3154002964000000000000000000000000000000000D2 -S3154002965000000000000000000000000000000000C2 -S3154002966000000000000000000000000000000000B2 -S3154002967000000000000000000000000000000000A2 -S315400296800000000000000000000000000000000092 -S315400296900000000000000000000000000000000082 -S315400296A00000000000000000000000000000000072 -S315400296B00000000000000000000000000000000062 -S315400296C00000000000000000000000000000000052 -S315400296D00000000000000000000000000000000042 -S315400296E00000000000000000000000000000000032 -S315400296F00000000000000000000000000000000022 -S315400297000000000000000000000000000000000011 -S315400297100000000000000000000000000000000001 -S3154002972000000000000000000000000000000000F1 -S3154002973000000000000000000000000000000000E1 -S3154002974000000000000000000000000000000000D1 -S3154002975000000000000000000000000000000000C1 -S3154002976000000000000000000000000000000000B1 -S3154002977000000000000000000000000000000000A1 -S315400297800000000000000000000000000000000091 -S315400297900000000000000000000000000000000081 -S315400297A00000000000000000000000000000000071 -S315400297B00000000000000000000000000000000061 -S315400297C00000000000000000000000000000000051 -S315400297D00000000000000000000000000000000041 -S315400297E00000000000000000000000000000000031 -S315400297F00000000000000000000000000000000021 -S315400298000000000000000000000000000000000010 -S315400298100000000000000000000000000000000000 -S3154002982000000000000000000000000000000000F0 -S3154002983000000000000000000000000000000000E0 -S3154002984000000000000000000000000000000000D0 -S3154002985000000000000000000000000000000000C0 -S3154002986000000000000000000000000000000000B0 -S3154002987000000000000000000000000000000000A0 -S315400298800000000000000000000000000000000090 -S315400298900000000000000000000000000000000080 -S315400298A00000000000000000000000000000000070 -S315400298B00000000000000000000000000000000060 -S315400298C00000000000000000000000000000000050 -S315400298D00000000000000000000000000000000040 -S315400298E00000000000000000000000000000000030 -S315400298F00000000000000000000000000000000020 -S31540029900000000000000000000000000000000000F -S3154002991000000000000000000000000000000000FF -S3154002992000000000000000000000000000000000EF -S3154002993000000000000000000000000000000000DF -S3154002994000000000000000000000000000000000CF -S3154002995000000000000000000000000000000000BF -S3154002996000000000000000000000000000000000AF -S31540029970000000000000000000000000000000009F -S31540029980000000000000000000000000000000008F -S31540029990000000000000000000000000000000007F -S315400299A0000000000000000000000000000000006F -S315400299B0000000000000000000000000000000005F -S315400299C0000000000000000000000000000000004F -S315400299D0000000000000000000000000000000003F -S315400299E0000000000000000000000000000000002F -S315400299F0000000000000000000000000000000001F -S31540029A00000000000000000000000000000000000E -S31540029A1000000000000000000000000000000000FE -S31540029A2000000000000000000000000000000000EE -S31540029A3000000000000000000000000000000000DE -S31540029A4000000000000000000000000000000000CE -S31540029A5000000000000000000000000000000000BE -S31540029A6000000000000000000000000000000000AE -S31540029A70000000000000000000000000000000009E -S31540029A80000000000000000000000000000000008E -S31540029A90000000000000000000000000000000007E -S31540029AA0000000000000000000000000000000006E -S31540029AB0000000000000000000000000000000005E -S31540029AC0000000000000000000000000000000004E -S31540029AD0000000000000000000000000000000003E -S31540029AE0000000000000000000000000000000002E -S31540029AF0000000000000000000000000000000001E -S31540029B00000000000000000000000000000000000D -S31540029B1000000000000000000000000000000000FD -S31540029B2000000000000000000000000000000000ED -S31540029B3000000000000000000000000000000000DD -S31540029B4000000000000000000000000000000000CD -S31540029B5000000000000000000000000000000000BD -S31540029B6000000000000000000000000000000000AD -S31540029B70000000000000000000000000000000009D -S31540029B80000000000000000000000000000000008D -S31540029B90000000000000000000000000000000007D -S31540029BA0000000000000000000000000000000006D -S31540029BB0000000000000000000000000000000005D -S31540029BC0000000000000000000000000000000004D -S31540029BD0000000000000000000000000000000003D -S31540029BE0000000000000000000000000000000002D -S31540029BF0000000000000000000000000000000001D -S31540029C00000000000000000000000000000000000C -S31540029C1000000000000000000000000000000000FC -S31540029C2000000000000000000000000000000000EC -S31540029C3000000000000000000000000000000000DC -S31540029C4000000000000000000000000000000000CC -S31540029C5000000000000000000000000000000000BC -S31540029C6000000000000000000000000000000000AC -S31540029C70000000000000000000000000000000009C -S31540029C80000000000000000000000000000000008C -S31540029C90000000000000000000000000000000007C -S31540029CA0000000000000000000000000000000006C -S31540029CB0000000000000000000000000000000005C -S31540029CC0000000000000000000000000000000004C -S31540029CD0000000000000000000000000000000003C -S31540029CE0000000000000000000000000000000002C -S31540029CF0000000000000000000000000000000001C -S31540029D00000000000000000000000000000000000B -S31540029D1000000000000000000000000000000000FB -S31540029D2000000000000000000000000000000000EB -S31540029D3000000000000000000000000000000000DB -S31540029D4000000000000000000000000000000000CB -S31540029D5000000000000000000000000000000000BB -S31540029D6000000000000000000000000000000000AB -S31540029D70000000000000000000000000000000009B -S31540029D80000000000000000000000000000000008B -S31540029D90000000000000000000000000000000007B -S31540029DA0000000000000000000000000000000006B -S31540029DB0000000000000000000000000000000005B -S31540029DC0000000000000000000000000000000004B -S31540029DD0000000000000000000000000000000003B -S31540029DE0000000000000000000000000000000002B -S31540029DF0000000000000000000000000000000001B -S31540029E00000000000000000000000000000000000A -S31540029E1000000000000000000000000000000000FA -S31540029E2000000000000000000000000000000000EA -S31540029E3000000000000000000000000000000000DA -S31540029E4000000000000000000000000000000000CA -S31540029E5000000000000000000000000000000000BA -S31540029E6000000000000000000000000000000000AA -S31540029E70000000000000000000000000000000009A -S31540029E80000000000000000000000000000000008A -S31540029E90000000000000000000000000000000007A -S31540029EA0000000000000000000000000000000006A -S31540029EB0000000000000000000000000000000005A -S31540029EC0000000000000000000000000000000004A -S31540029ED0000000000000000000000000000000003A -S31540029EE0000000000000000000000000000000002A -S31540029EF0000000000000000000000000000000001A -S31540029F000000000000000000000000000000000009 -S31540029F1000000000000000000000000000000000F9 -S31540029F2000000000000000000000000000000000E9 -S31540029F3000000000000000000000000000000000D9 -S31540029F4000000000000000000000000000000000C9 -S31540029F5000000000000000000000000000000000B9 -S31540029F6000000000000000000000000000000000A9 -S31540029F700000000000000000000000000000000099 -S31540029F800000000000000000000000000000000089 -S31540029F900000000000000000000000000000000079 -S31540029FA00000000000000000000000000000000069 -S31540029FB00000000000000000000000000000000059 -S31540029FC00000000000000000000000000000000049 -S31540029FD00000000000000000000000000000000039 -S31540029FE00000000000000000000000000000000029 -S31540029FF00000000000000000000000000000000019 -S3154002A0000000000000000000000000000000000008 -S3154002A01000000000000000000000000000000000F8 -S3154002A02000000000000000000000000000000000E8 -S3154002A03000000000000000000000000000000000D8 -S3154002A04000000000000000000000000000000000C8 -S3154002A05000000000000000000000000000000000B8 -S3154002A06000000000000000000000000000000000A8 -S3154002A0700000000000000000000000000000000098 -S3154002A0800000000000000000000000000000000088 -S3154002A0900000000000000000000000000000000078 -S3154002A0A00000000000000000000000000000000068 -S3154002A0B00000000000000000000000000000000058 -S3154002A0C00000000000000000000000000000000048 -S3154002A0D00000000000000000000000000000000038 -S3154002A0E00000000000000000000000000000000028 -S3154002A0F00000000000000000000000000000000018 -S3154002A1000000000000000000000000000000000007 -S3154002A11000000000000000000000000000000000F7 -S3154002A12000000000000000000000000000000000E7 -S3154002A13000000000000000000000000000000000D7 -S3154002A14000000000000000000000000000000000C7 -S3154002A15000000000000000000000000000000000B7 -S3154002A16000000000000000000000000000000000A7 -S3154002A1700000000000000000000000000000000097 -S3154002A1800000000000000000000000000000000087 -S3154002A1900000000000000000000000000000000077 -S3154002A1A00000000000000000000000000000000067 -S3154002A1B00000000000000000000000000000000057 -S3154002A1C00000000000000000000000000000000047 -S3154002A1D00000000000000000000000000000000037 -S3154002A1E00000000000000000000000000000000027 -S3154002A1F00000000000000000000000000000000017 -S3154002A2000000000000000000000000000000000006 -S3154002A21000000000000000000000000000000000F6 -S3154002A22000000000000000000000000000000000E6 -S3154002A23000000000000000000000000000000000D6 -S3154002A24000000000000000000000000000000000C6 -S3154002A25000000000000000000000000000000000B6 -S3154002A26000000000000000000000000000000000A6 -S3154002A2700000000000000000000000000000000096 -S3154002A2800000000000000000000000000000000086 -S3154002A2900000000000000000000000000000000076 -S3154002A2A00000000000000000000000000000000066 -S3154002A2B00000000000000000000000000000000056 -S3154002A2C00000000000000000000000000000000046 -S3154002A2D00000000000000000000000000000000036 -S3154002A2E00000000000000000000000000000000026 -S3154002A2F00000000000000000000000000000000016 -S3154002A3000000000000000000000000000000000005 -S3154002A31000000000000000000000000000000000F5 -S3154002A32000000000000000000000000000000000E5 -S3154002A33000000000000000000000000000000000D5 -S3154002A34000000000000000000000000000000000C5 -S3154002A35000000000000000000000000000000000B5 -S3154002A36000000000000000000000000000000000A5 -S3154002A3700000000000000000000000000000000095 -S3154002A3800000000000000000000000000000000085 -S3154002A3900000000000000000000000000000000075 -S3154002A3A00000000000000000000000000000000065 -S3154002A3B00000000000000000000000000000000055 -S3154002A3C00000000000000000000000000000000045 -S3154002A3D00000000000000000000000000000000035 -S3154002A3E00000000000000000000000000000000025 -S3154002A3F00000000000000000000000000000000015 -S3154002A4000000000000000000000000000000000004 -S3154002A41000000000000000000000000000000000F4 -S3154002A42000000000000000000000000000000000E4 -S3154002A43000000000000000000000000000000000D4 -S3154002A44000000000000000000000000000000000C4 -S3154002A45000000000000000000000000000000000B4 -S3154002A46000000000000000000000000000000000A4 -S3154002A4700000000000000000000000000000000094 -S3154002A4800000000000000000000000000000000084 -S3154002A4900000000000000000000000000000000074 -S3154002A4A00000000000000000000000000000000064 -S3154002A4B00000000000000000000000000000000054 -S3154002A4C00000000000000000000000000000000044 -S3154002A4D00000000000000000000000000000000034 -S3154002A4E00000000000000000000000000000000024 -S3154002A4F00000000000000000000000000000000014 -S3154002A5000000000000000000000000000000000003 -S3154002A51000000000000000000000000000000000F3 -S3154002A52000000000000000000000000000000000E3 -S3154002A53000000000000000000000000000000000D3 -S3154002A54000000000000000000000000000000000C3 -S3154002A55000000000000000000000000000000000B3 -S3154002A56000000000000000000000000000000000A3 -S3154002A5700000000000000000000000000000000093 -S3154002A5800000000000000000000000000000000083 -S3154002A5900000000000000000000000000000000073 -S3154002A5A00000000000000000000000000000000063 -S3154002A5B00000000000000000000000000000000053 -S3154002A5C00000000000000000000000000000000043 -S3154002A5D00000000000000000000000000000000033 -S3154002A5E00000000000000000000000000000000023 -S3154002A5F00000000000000000000000000000000013 -S3154002A6000000000000000000000000000000000002 -S3154002A61000000000000000000000000000000000F2 -S3154002A62000000000000000000000000000000000E2 -S3154002A63000000000000000000000000000000000D2 -S3154002A64000000000000000000000000000000000C2 -S3154002A65000000000000000000000000000000000B2 -S3154002A66000000000000000000000000000000000A2 -S3154002A6700000000000000000000000000000000092 -S3154002A6800000000000000000000000000000000082 -S3154002A6900000000000000000000000000000000072 -S3154002A6A00000000000000000000000000000000062 -S3154002A6B00000000000000000000000000000000052 -S3154002A6C00000000000000000000000000000000042 -S3154002A6D00000000000000000000000000000000032 -S3154002A6E00000000000000000000000000000000022 -S3154002A6F00000000000000000000000000000000012 -S3154002A7000000000000000000000000000000000001 -S3154002A71000000000000000000000000000000000F1 -S3154002A72000000000000000000000000000000000E1 -S3154002A73000000000000000000000000000000000D1 -S3154002A74000000000000000000000000000000000C1 -S3154002A75000000000000000000000000000000000B1 -S3154002A76000000000000000000000000000000000A1 -S3154002A7700000000000000000000000000000000091 -S3154002A7800000000000000000000000000000000081 -S3154002A7900000000000000000000000000000000071 -S3154002A7A00000000000000000000000000000000061 -S3154002A7B00000000000000000000000000000000051 -S3154002A7C00000000000000000000000000000000041 -S3154002A7D00000000000000000000000000000000031 -S3154002A7E00000000000000000000000000000000021 -S3154002A7F00000000000000000000000000000000011 -S3154002A8000000000000000000000000000000000000 -S3154002A81000000000000000000000000000000000F0 -S3154002A82000000000000000000000000000000000E0 -S3154002A83000000000000000000000000000000000D0 -S3154002A84000000000000000000000000000000000C0 -S3154002A85000000000000000000000000000000000B0 -S3154002A86000000000000000000000000000000000A0 -S3154002A8700000000000000000000000000000000090 -S3154002A8800000000000000000000000000000000080 -S3154002A8900000000000000000000000000000000070 -S3154002A8A00000000000000000000000000000000060 -S3154002A8B00000000000000000000000000000000050 -S3154002A8C00000000000000000000000000000000040 -S3154002A8D00000000000000000000000000000000030 -S3154002A8E00000000000000000000000000000000020 -S3154002A8F00000000000000000000000000000000010 -S3154002A90000000000000000000000000000000000FF -S3154002A91000000000000000000000000000000000EF -S3154002A92000000000000000000000000000000000DF -S3154002A93000000000000000000000000000000000CF -S3154002A94000000000000000000000000000000000BF -S3154002A95000000000000000000000000000000000AF -S3154002A960000000000000000000000000000000009F -S3154002A970000000000000000000000000000000008F -S3154002A980000000000000000000000000000000007F -S3154002A990000000000000000000000000000000006F -S3154002A9A0000000000000000000000000000000005F -S3154002A9B0000000000000000000000000000000004F -S3154002A9C0000000000000000000000000000000003F -S3154002A9D0000000000000000000000000000000002F -S3154002A9E0000000000000000000000000000000001F -S3154002A9F0000000000000000000000000000000000F -S3154002AA0000000000000000000000000000000000FE -S3154002AA1000000000000000000000000000000000EE -S3154002AA2000000000000000000000000000000000DE -S3154002AA3000000000000000000000000000000000CE -S3154002AA4000000000000000000000000000000000BE -S3154002AA5000000000000000000000000000000000AE -S3154002AA60000000000000000000000000000000009E -S3154002AA70000000000000000000000000000000008E -S3154002AA80000000000000000000000000000000007E -S3154002AA90000000000000000000000000000000006E -S3154002AAA0000000000000000000000000000000005E -S3154002AAB0000000000000000000000000000000004E -S3154002AAC0000000000000000000000000000000003E -S3154002AAD0000000000000000000000000000000002E -S3154002AAE0000000000000000000000000000000001E -S3154002AAF0000000000000000000000000000000000E -S3154002AB0000000000000000000000000000000000FD -S3154002AB1000000000000000000000000000000000ED -S3154002AB2000000000000000000000000000000000DD -S3154002AB3000000000000000000000000000000000CD -S3154002AB4000000000000000000000000000000000BD -S3154002AB5000000000000000000000000000000000AD -S3154002AB60000000000000000000000000000000009D -S3154002AB70000000000000000000000000000000008D -S3154002AB80000000000000000000000000000000007D -S3154002AB90000000000000000000000000000000006D -S3154002ABA0000000000000000000000000000000005D -S3154002ABB0000000000000000000000000000000004D -S3154002ABC0000000000000000000000000000000003D -S3154002ABD0000000000000000000000000000000002D -S3154002ABE0000000000000000000000000000000001D -S3154002ABF0000000000000000000000000000000000D -S3154002AC0000000000000000000000000000000000FC -S3154002AC1000000000000000000000000000000000EC -S3154002AC2000000000000000000000000000000000DC -S3154002AC3000000000000000000000000000000000CC -S3154002AC4000000000000000000000000000000000BC -S3154002AC5000000000000000000000000000000000AC -S3154002AC60000000000000000000000000000000009C -S3154002AC70000000000000000000000000000000008C -S3154002AC80000000000000000000000000000000007C -S3154002AC90000000000000000000000000000000006C -S3154002ACA0000000000000000000000000000000005C -S3154002ACB0000000000000000000000000000000004C -S3154002ACC0000000000000000000000000000000003C -S3154002ACD0000000000000000000000000000000002C -S3154002ACE0000000000000000000000000000000001C -S3154002ACF0000000000000000000000000000000000C -S3154002AD0000000000000000000000000000000000FB -S3154002AD1000000000000000000000000000000000EB -S3154002AD2000000000000000000000000000000000DB -S3154002AD3000000000000000000000000000000000CB -S3154002AD4000000000000000000000000000000000BB -S3154002AD5000000000000000000000000000000000AB -S3154002AD60000000000000000000000000000000009B -S3154002AD70000000000000000000000000000000008B -S3154002AD80000000000000000000000000000000007B -S3154002AD90000000000000000000000000000000006B -S3154002ADA0000000000000000000000000000000005B -S3154002ADB0000000000000000000000000000000004B -S3154002ADC0000000000000000000000000000000003B -S3154002ADD0000000000000000000000000000000002B -S3154002ADE0000000000000000000000000000000001B -S3154002ADF0000000000000000000000000000000000B -S3154002AE0000000000000000000000000000000000FA -S3154002AE1000000000000000000000000000000000EA -S3154002AE2000000000000000000000000000000000DA -S3154002AE3000000000000000000000000000000000CA -S3154002AE4000000000000000000000000000000000BA -S3154002AE5000000000000000000000000000000000AA -S3154002AE60000000000000000000000000000000009A -S3154002AE70000000000000000000000000000000008A -S3154002AE80000000000000000000000000000000007A -S3154002AE90000000000000000000000000000000006A -S3154002AEA0000000000000000000000000000000005A -S3154002AEB0000000000000000000000000000000004A -S3154002AEC0000000000000000000000000000000003A -S3154002AED0000000000000000000000000000000002A -S3154002AEE0000000000000000000000000000000001A -S3154002AEF0000000000000000000000000000000000A -S3154002AF0000000000000000000000000000000000F9 -S3154002AF1000000000000000000000000000000000E9 -S3154002AF2000000000000000000000000000000000D9 -S3154002AF3000000000000000000000000000000000C9 -S3154002AF4000000000000000000000000000000000B9 -S3154002AF5000000000000000000000000000000000A9 -S3154002AF600000000000000000000000000000000099 -S3154002AF700000000000000000000000000000000089 -S3154002AF800000000000000000000000000000000079 -S3154002AF900000000000000000000000000000000069 -S3154002AFA00000000000000000000000000000000059 -S3154002AFB00000000000000000000000000000000049 -S3154002AFC00000000000000000000000000000000039 -S3154002AFD00000000000000000000000000000000029 -S3154002AFE00000000000000000000000000000000019 -S3154002AFF00000000000000000000000000000000009 -S3154002B00000000000000000000000000000000000F8 -S3154002B01000000000000000000000000000000000E8 -S3154002B02000000000000000000000000000000000D8 -S3154002B03000000000000000000000000000000000C8 -S3154002B04000000000000000000000000000000000B8 -S3154002B05000000000000000000000000000000000A8 -S3154002B0600000000000000000000000000000000098 -S3154002B0700000000000000000000000000000000088 -S3154002B0800000000000000000000000000000000078 -S3154002B0900000000000000000000000000000000068 -S3154002B0A00000000000000000000000000000000058 -S3154002B0B00000000000000000000000000000000048 -S3154002B0C00000000000000000000000000000000038 -S3154002B0D00000000000000000000000000000000028 -S3154002B0E00000000000000000000000000000000018 -S3154002B0F00000000000000000000000000000000008 -S3154002B10000000000000000000000000000000000F7 -S3154002B11000000000000000000000000000000000E7 -S3154002B12000000000000000000000000000000000D7 -S3154002B13000000000000000000000000000000000C7 -S3154002B14000000000000000000000000000000000B7 -S3154002B15000000000000000000000000000000000A7 -S3154002B1600000000000000000000000000000000097 -S3154002B1700000000000000000000000000000000087 -S3154002B1800000000000000000000000000000000077 -S3154002B1900000000000000000000000000000000067 -S3154002B1A00000000000000000000000000000000057 -S3154002B1B00000000000000000000000000000000047 -S3154002B1C00000000000000000000000000000000037 -S3154002B1D00000000000000000000000000000000027 -S3154002B1E00000000000000000000000000000000017 -S3154002B1F00000000000000000000000000000000007 -S3154002B20000000000000000000000000000000000F6 -S3154002B21000000000000000000000000000000000E6 -S3154002B22000000000000000000000000000000000D6 -S3154002B23000000000000000000000000000000000C6 -S3154002B24000000000000000000000000000000000B6 -S3154002B25000000000000000000000000000000000A6 -S3154002B2600000000000000000000000000000000096 -S3154002B2700000000000000000000000000000000086 -S3154002B2800000000000000000000000000000000076 -S3154002B2900000000000000000000000000000000066 -S3154002B2A00000000000000000000000000000000056 -S3154002B2B00000000000000000000000000000000046 -S3154002B2C00000000000000000000000000000000036 -S3154002B2D00000000000000000000000000000000026 -S3154002B2E00000000000000000000000000000000016 -S3154002B2F00000000000000000000000000000000006 -S3154002B30000000000000000000000000000000000F5 -S3154002B31000000000000000000000000000000000E5 -S3154002B32000000000000000000000000000000000D5 -S3154002B33000000000000000000000000000000000C5 -S3154002B34000000000000000000000000000000000B5 -S3154002B35000000000000000000000000000000000A5 -S3154002B3600000000000000000000000000000000095 -S3154002B3700000000000000000000000000000000085 -S3154002B3800000000000000000000000000000000075 -S3154002B3900000000000000000000000000000000065 -S3154002B3A00000000000000000000000000000000055 -S3154002B3B00000000000000000000000000000000045 -S3154002B3C00000000000000000000000000000000035 -S3154002B3D00000000000000000000000000000000025 -S3154002B3E00000000000000000000000000000000015 -S3154002B3F00000000000000000000000000000000005 -S3154002B40000000000000000000000000000000000F4 -S3154002B41000000000000000000000000000000000E4 -S3154002B42000000000000000000000000000000000D4 -S3154002B43000000000000000000000000000000000C4 -S3154002B44000000000000000000000000000000000B4 -S3154002B45000000000000000000000000000000000A4 -S3154002B4600000000000000000000000000000000094 -S3154002B4700000000000000000000000000000000084 -S3154002B4800000000000000000000000000000000074 -S3154002B4900000000000000000000000000000000064 -S3154002B4A00000000000000000000000000000000054 -S3154002B4B00000000000000000000000000000000044 -S3154002B4C00000000000000000000000000000000034 -S3154002B4D00000000000000000000000000000000024 -S3154002B4E00000000000000000000000000000000014 -S3154002B4F00000000000000000000000000000000004 -S3154002B50000000000000000000000000000000000F3 -S3154002B51000000000000000000000000000000000E3 -S3154002B52000000000000000000000000000000000D3 -S3154002B53000000000000000000000000000000000C3 -S3154002B54000000000000000000000000000000000B3 -S3154002B55000000000000000000000000000000000A3 -S3154002B5600000000000000000000000000000000093 -S3154002B5700000000000000000000000000000000083 -S3154002B5800000000000000000000000000000000073 -S3154002B5900000000000000000000000000000000063 -S3154002B5A00000000000000000000000000000000053 -S3154002B5B00000000000000000000000000000000043 -S3154002B5C00000000000000000000000000000000033 -S3154002B5D00000000000000000000000000000000023 -S3154002B5E00000000000000000000000000000000013 -S3154002B5F00000000000000000000000000000000003 -S3154002B60000000000000000000000000000000000F2 -S3154002B61000000000000000000000000000000000E2 -S3154002B62000000000000000000000000000000000D2 -S3154002B63000000000000000000000000000000000C2 -S3154002B64000000000000000000000000000000000B2 -S3154002B65000000000000000000000000000000000A2 -S3154002B6600000000000000000000000000000000092 -S3154002B6700000000000000000000000000000000082 -S3154002B6800000000000000000000000000000000072 -S3154002B6900000000000000000000000000000000062 -S3154002B6A00000000000000000000000000000000052 -S3154002B6B00000000000000000000000000000000042 -S3154002B6C00000000000000000000000000000000032 -S3154002B6D00000000000000000000000000000000022 -S3154002B6E00000000000000000000000000000000012 -S3154002B6F00000000000000000000000000000000002 -S3154002B70000000000000000000000000000000000F1 -S3154002B71000000000000000000000000000000000E1 -S3154002B72000000000000000000000000000000000D1 -S3154002B73000000000000000000000000000000000C1 -S3154002B74000000000000000000000000000000000B1 -S3154002B75000000000000000000000000000000000A1 -S3154002B7600000000000000000000000000000000091 -S3154002B7700000000000000000000000000000000081 -S3154002B7800000000000000000000000000000000071 -S3154002B7900000000000000000000000000000000061 -S3154002B7A00000000000000000000000000000000051 -S3154002B7B00000000000000000000000000000000041 -S3154002B7C00000000000000000000000000000000031 -S3154002B7D00000000000000000000000000000000021 -S3154002B7E00000000000000000000000000000000011 -S3154002B7F00000000000000000000000000000000001 -S3154002B80000000000000000000000000000000000F0 -S3154002B81000000000000000000000000000000000E0 -S3154002B82000000000000000000000000000000000D0 -S3154002B83000000000000000000000000000000000C0 -S3154002B84000000000000000000000000000000000B0 -S3154002B85000000000000000000000000000000000A0 -S3154002B8600000000000000000000000000000000090 -S3154002B8700000000000000000000000000000000080 -S3154002B8800000000000000000000000000000000070 -S3154002B8900000000000000000000000000000000060 -S3154002B8A00000000000000000000000000000000050 -S3154002B8B00000000000000000000000000000000040 -S3154002B8C00000000000000000000000000000000030 -S3154002B8D00000000000000000000000000000000020 -S3154002B8E00000000000000000000000000000000010 -S3154002B8F00000000000000000000000000000000000 -S3154002B90000000000000000000000000000000000EF -S3154002B91000000000000000000000000000000000DF -S3154002B92000000000000000000000000000000000CF -S3154002B93000000000000000000000000000000000BF -S3154002B94000000000000000000000000000000000AF -S3154002B950000000000000000000000000000000009F -S3154002B960000000000000000000000000000000008F -S3154002B970000000000000000000000000000000007F -S3154002B980000000000000000000000000000000006F -S3154002B990000000000000000000000000000000005F -S3154002B9A0000000000000000000000000000000004F -S3154002B9B0000000000000000000000000000000003F -S3154002B9C0000000000000000000000000000000002F -S3154002B9D0000000000000000000000000000000001F -S3154002B9E0000000000000000000000000000000000F -S3154002B9F000000000000000000000000000000000FF -S3154002BA0000000000000000000000000000000000EE -S3154002BA1000000000000000000000000000000000DE -S3154002BA2000000000000000000000000000000000CE -S3154002BA3000000000000000000000000000000000BE -S3154002BA4000000000000000000000000000000000AE -S3154002BA50000000000000000000000000000000009E -S3154002BA60000000000000000000000000000000008E -S3154002BA70000000000000000000000000000000007E -S3154002BA80000000000000000000000000000000006E -S3154002BA90000000000000000000000000000000005E -S3154002BAA0000000000000000000000000000000004E -S3154002BAB0000000000000000000000000000000003E -S3154002BAC0000000000000000000000000000000002E -S3154002BAD0000000000000000000000000000000001E -S3154002BAE0000000000000000000000000000000000E -S3154002BAF000000000000000000000000000000000FE -S3154002BB0000000000000000000000000000000000ED -S3154002BB1000000000000000000000000000000000DD -S3154002BB2000000000000000000000000000000000CD -S3154002BB3000000000000000000000000000000000BD -S3154002BB4000000000000000000000000000000000AD -S3154002BB50000000000000000000000000000000009D -S3154002BB60000000000000000000000000000000008D -S3154002BB70000000000000000000000000000000007D -S3154002BB80000000000000000000000000000000006D -S3154002BB90000000000000000000000000000000005D -S3154002BBA0000000000000000000000000000000004D -S3154002BBB0000000000000000000000000000000003D -S3154002BBC0000000000000000000000000000000002D -S3154002BBD0000000000000000000000000000000001D -S3154002BBE0000000000000000000000000000000000D -S3154002BBF000000000000000000000000000000000FD -S3154002BC0000000000000000000000000000000000EC -S3154002BC1000000000000000000000000000000000DC -S3154002BC2000000000000000000000000000000000CC -S3154002BC3000000000000000000000000000000000BC -S3154002BC4000000000000000000000000000000000AC -S3154002BC50000000000000000000000000000000009C -S3154002BC60000000000000000000000000000000008C -S3154002BC70000000000000000000000000000000007C -S3154002BC80000000000000000000000000000000006C -S3154002BC90000000000000000000000000000000005C -S3154002BCA0000000000000000000000000000000004C -S3154002BCB0000000000000000000000000000000003C -S3154002BCC0000000000000000000000000000000002C -S3154002BCD0000000000000000000000000000000001C -S3154002BCE0000000000000000000000000000000000C -S3154002BCF000000000000000000000000000000000FC -S3154002BD0000000000000000000000000000000000EB -S3154002BD1000000000000000000000000000000000DB -S3154002BD2000000000000000000000000000000000CB -S3154002BD3000000000000000000000000000000000BB -S3154002BD4000000000000000000000000000000000AB -S3154002BD50000000000000000000000000000000009B -S3154002BD60000000000000000000000000000000008B -S3154002BD70000000000000000000000000000000007B -S3154002BD80000000000000000000000000000000006B -S3154002BD90000000000000000000000000000000005B -S3154002BDA0000000000000000000000000000000004B -S3154002BDB0000000000000000000000000000000003B -S3154002BDC0000000000000000000000000000000002B -S3154002BDD0000000000000000000000000000000001B -S3154002BDE0000000000000000000000000000000000B -S3154002BDF000000000000000000000000000000000FB -S3154002BE0000000000000000000000000000000000EA -S3154002BE1000000000000000000000000000000000DA -S3154002BE2000000000000000000000000000000000CA -S3154002BE3000000000000000000000000000000000BA -S3154002BE4000000000000000000000000000000000AA -S3154002BE50000000000000000000000000000000009A -S3154002BE60000000000000000000000000000000008A -S3154002BE70000000000000000000000000000000007A -S3154002BE80000000000000000000000000000000006A -S3154002BE90000000000000000000000000000000005A -S3154002BEA0000000000000000000000000000000004A -S3154002BEB0000000000000000000000000000000003A -S3154002BEC0000000000000000000000000000000002A -S3154002BED0000000000000000000000000000000001A -S3154002BEE0000000000000000000000000000000000A -S3154002BEF000000000000000000000000000000000FA -S3154002BF0000000000000000000000000000000000E9 -S3154002BF1000000000000000000000000000000000D9 -S3154002BF2000000000000000000000000000000000C9 -S3154002BF3000000000000000000000000000000000B9 -S3154002BF4000000000000000000000000000000000A9 -S3154002BF500000000000000000000000000000000099 -S3154002BF600000000000000000000000000000000089 -S3154002BF700000000000000000000000000000000079 -S3154002BF800000000000000000000000000000000069 -S3154002BF900000000000000000000000000000000059 -S3154002BFA00000000000000000000000000000000049 -S3154002BFB00000000000000000000000000000000039 -S3154002BFC00000000000000000000000000000000029 -S3154002BFD00000000000000000000000000000000019 -S3154002BFE00000000000000000000000000000000009 -S3154002BFF000000000000000000000000000000000F9 -S3154002C00000000000000000000000000000000000E8 -S3154002C01000000000000000000000000000000000D8 -S3154002C02000000000000000000000000000000000C8 -S3154002C03000000000000000000000000000000000B8 -S3154002C04000000000000000000000000000000000A8 -S3154002C0500000000000000000000000000000000098 -S3154002C0600000000000000000000000000000000088 -S3154002C0700000000000000000000000000000000078 -S3154002C0800000000000000000000000000000000068 -S3154002C0900000000000000000000000000000000058 -S3154002C0A00000000000000000000000000000000048 -S3154002C0B00000000000000000000000000000000038 -S3154002C0C00000000000000000000000000000000028 -S3154002C0D00000000000000000000000000000000018 -S3154002C0E00000000000000000000000000000000008 -S3154002C0F000000000000000000000000000000000F8 -S3154002C10000000000000000000000000000000000E7 -S3154002C11000000000000000000000000000000000D7 -S3154002C12000000000000000000000000000000000C7 -S3154002C13000000000000000000000000000000000B7 -S3154002C14000000000000000000000000000000000A7 -S3154002C1500000000000000000000000000000000097 -S3154002C1600000000000000000000000000000000087 -S3154002C1700000000000000000000000000000000077 -S3154002C1800000000000000000000000000000000067 -S3154002C1900000000000000000000000000000000057 -S3154002C1A00000000000000000000000000000000047 -S3154002C1B00000000000000000000000000000000037 -S3154002C1C00000000000000000000000000000000027 -S3154002C1D00000000000000000000000000000000017 -S3154002C1E00000000000000000000000000000000007 -S3154002C1F000000000000000000000000000000000F7 -S3154002C20000000000000000000000000000000000E6 -S3154002C21000000000000000000000000000000000D6 -S3154002C22000000000000000000000000000000000C6 -S3154002C23000000000000000000000000000000000B6 -S3154002C24000000000000000000000000000000000A6 -S3154002C2500000000000000000000000000000000096 -S3154002C2600000000000000000000000000000000086 -S3154002C2700000000000000000000000000000000076 -S3154002C2800000000000000000000000000000000066 -S3154002C2900000000000000000000000000000000056 -S3154002C2A00000000000000000000000000000000046 -S3154002C2B00000000000000000000000000000000036 -S3154002C2C00000000000000000000000000000000026 -S3154002C2D00000000000000000000000000000000016 -S3154002C2E00000000000000000000000000000000006 -S3154002C2F000000000000000000000000000000000F6 -S3154002C30000000000000000000000000000000000E5 -S3154002C31000000000000000000000000000000000D5 -S3154002C32000000000000000000000000000000000C5 -S3154002C33000000000000000000000000000000000B5 -S3154002C34000000000000000000000000000000000A5 -S3154002C3500000000000000000000000000000000095 -S3154002C3600000000000000000000000000000000085 -S3154002C3700000000000000000000000000000000075 -S3154002C3800000000000000000000000000000000065 -S3154002C3900000000000000000000000000000000055 -S3154002C3A00000000000000000000000000000000045 -S3154002C3B00000000000000000000000000000000035 -S3154002C3C00000000000000000000000000000000025 -S3154002C3D00000000000000000000000000000000015 -S3154002C3E00000000000000000000000000000000005 -S3154002C3F000000000000000000000000000000000F5 -S3154002C40000000000000000000000000000000000E4 -S3154002C41000000000000000000000000000000000D4 -S3154002C42000000000000000000000000000000000C4 -S3154002C43000000000000000000000000000000000B4 -S3154002C44000000000000000000000000000000000A4 -S3154002C4500000000000000000000000000000000094 -S3154002C4600000000000000000000000000000000084 -S3154002C4700000000000000000000000000000000074 -S3154002C4800000000000000000000000000000000064 -S3154002C4900000000000000000000000000000000054 -S3154002C4A00000000000000000000000000000000044 -S3154002C4B00000000000000000000000000000000034 -S3154002C4C00000000000000000000000000000000024 -S3154002C4D00000000000000000000000000000000014 -S3154002C4E00000000000000000000000000000000004 -S3154002C4F000000000000000000000000000000000F4 -S3154002C50000000000000000000000000000000000E3 -S3154002C51000000000000000000000000000000000D3 -S3154002C52000000000000000000000000000000000C3 -S3154002C53000000000000000000000000000000000B3 -S3154002C54000000000000000000000000000000000A3 -S3154002C5500000000000000000000000000000000093 -S3154002C5600000000000000000000000000000000083 -S3154002C5700000000000000000000000000000000073 -S3154002C5800000000000000000000000000000000063 -S3154002C5900000000000000000000000000000000053 -S3154002C5A00000000000000000000000000000000043 -S3154002C5B00000000000000000000000000000000033 -S3154002C5C00000000000000000000000000000000023 -S3154002C5D00000000000000000000000000000000013 -S3154002C5E00000000000000000000000000000000003 -S3154002C5F000000000000000000000000000000000F3 -S3154002C60000000000000000000000000000000000E2 -S3154002C61000000000000000000000000000000000D2 -S3154002C62000000000000000000000000000000000C2 -S3154002C63000000000000000000000000000000000B2 -S3154002C64000000000000000000000000000000000A2 -S3154002C6500000000000000000000000000000000092 -S3154002C6600000000000000000000000000000000082 -S3154002C6700000000000000000000000000000000072 -S3154002C6800000000000000000000000000000000062 -S3154002C6900000000000000000000000000000000052 -S3154002C6A00000000000000000000000000000000042 -S3154002C6B00000000000000000000000000000000032 -S3154002C6C00000000000000000000000000000000022 -S3154002C6D00000000000000000000000000000000012 -S3154002C6E00000000000000000000000000000000002 -S3154002C6F000000000000000000000000000000000F2 -S3154002C70000000000000000000000000000000000E1 -S3154002C71000000000000000000000000000000000D1 -S3154002C72000000000000000000000000000000000C1 -S3154002C73000000000000000000000000000000000B1 -S3154002C74000000000000000000000000000000000A1 -S3154002C7500000000000000000000000000000000091 -S3154002C7600000000000000000000000000000000081 -S3154002C7700000000000000000000000000000000071 -S3154002C7800000000000000000000000000000000061 -S3154002C7900000000000000000000000000000000051 -S3154002C7A00000000000000000000000000000000041 -S3154002C7B00000000000000000000000000000000031 -S3154002C7C00000000000000000000000000000000021 -S3154002C7D00000000000000000000000000000000011 -S3154002C7E00000000000000000000000000000000001 -S3154002C7F000000000000000000000000000000000F1 -S3154002C80000000000000000000000000000000000E0 -S3154002C81000000000000000000000000000000000D0 -S3154002C82000000000000000000000000000000000C0 -S3154002C83000000000000000000000000000000000B0 -S3154002C84000000000000000000000000000000000A0 -S3154002C8500000000000000000000000000000000090 -S3154002C8600000000000000000000000000000000080 -S3154002C8700000000000000000000000000000000070 -S3154002C8800000000000000000000000000000000060 -S3154002C8900000000000000000000000000000000050 -S3154002C8A00000000000000000000000000000000040 -S3154002C8B00000000000000000000000000000000030 -S3154002C8C00000000000000000000000000000000020 -S3154002C8D00000000000000000000000000000000010 -S3154002C8E00000000000000000000000000000000000 -S3154002C8F000000000000000000000000000000000F0 -S3154002C90000000000000000000000000000000000DF -S3154002C91000000000000000000000000000000000CF -S3154002C92000000000000000000000000000000000BF -S3154002C93000000000000000000000000000000000AF -S3154002C940000000000000000000000000000000009F -S3154002C950000000000000000000000000000000008F -S3154002C960000000000000000000000000000000007F -S3154002C970000000000000000000000000000000006F -S3154002C980000000000000000000000000000000005F -S3154002C990000000000000000000000000000000004F -S3154002C9A0000000000000000000000000000000003F -S3154002C9B0000000000000000000000000000000002F -S3154002C9C0000000000000000000000000000000001F -S3154002C9D0000000000000000000000000000000000F -S3154002C9E000000000000000000000000000000000FF -S3154002C9F000000000000000000000000000000000EF -S3154002CA0000000000000000000000000000000000DE -S3154002CA1000000000000000000000000000000000CE -S3154002CA2000000000000000000000000000000000BE -S3154002CA3000000000000000000000000000000000AE -S3154002CA40000000000000000000000000000000009E -S3154002CA50000000000000000000000000000000008E -S3154002CA60000000000000000000000000000000007E -S3154002CA70000000000000000000000000000000006E -S3154002CA80000000000000000000000000000000005E -S3154002CA90000000000000000000000000000000004E -S3154002CAA0000000000000000000000000000000003E -S3154002CAB0000000000000000000000000000000002E -S3154002CAC0000000000000000000000000000000001E -S3154002CAD0000000000000000000000000000000000E -S3154002CAE000000000000000000000000000000000FE -S3154002CAF000000000000000000000000000000000EE -S3154002CB0000000000000000000000000000000000DD -S3154002CB1000000000000000000000000000000000CD -S3154002CB2000000000000000000000000000000000BD -S3154002CB3000000000000000000000000000000000AD -S3154002CB40000000000000000000000000000000009D -S3154002CB50000000000000000000000000000000008D -S3154002CB60000000000000000000000000000000007D -S3154002CB70000000000000000000000000000000006D -S3154002CB80000000000000000000000000000000005D -S3154002CB90000000000000000000000000000000004D -S3154002CBA0000000000000000000000000000000003D -S3154002CBB0000000000000000000000000000000002D -S3154002CBC0000000000000000000000000000000001D -S3154002CBD0000000000000000000000000000000000D -S3154002CBE000000000000000000000000000000000FD -S3154002CBF000000000000000000000000000000000ED -S3154002CC0000000000000000000000000000000000DC -S3154002CC1000000000000000000000000000000000CC -S3154002CC2000000000000000000000000000000000BC -S3154002CC3000000000000000000000000000000000AC -S3154002CC40000000000000000000000000000000009C -S3154002CC50000000000000000000000000000000008C -S3154002CC60000000000000000000000000000000007C -S3154002CC70000000000000000000000000000000006C -S3154002CC80000000000000000000000000000000005C -S3154002CC90000000000000000000000000000000004C -S3154002CCA0000000000000000000000000000000003C -S3154002CCB0000000000000000000000000000000002C -S3154002CCC0000000000000000000000000000000001C -S3154002CCD0000000000000000000000000000000000C -S3154002CCE000000000000000000000000000000000FC -S3154002CCF000000000000000000000000000000000EC -S3154002CD0000000000000000000000000000000000DB -S3154002CD1000000000000000000000000000000000CB -S3154002CD2000000000000000000000000000000000BB -S3154002CD3000000000000000000000000000000000AB -S3154002CD40000000000000000000000000000000009B -S3154002CD50000000000000000000000000000000008B -S3154002CD60000000000000000000000000000000007B -S3154002CD70000000000000000000000000000000006B -S3154002CD80000000000000000000000000000000005B -S3154002CD90000000000000000000000000000000004B -S3154002CDA0000000000000000000000000000000003B -S3154002CDB0000000000000000000000000000000002B -S3154002CDC0000000000000000000000000000000001B -S3154002CDD0000000000000000000000000000000000B -S3154002CDE000000000000000000000000000000000FB -S3154002CDF000000000000000000000000000000000EB -S3154002CE0000000000000000000000000000000000DA -S3154002CE1000000000000000000000000000000000CA -S3154002CE2000000000000000000000000000000000BA -S3154002CE3000000000000000000000000000000000AA -S3154002CE40000000000000000000000000000000009A -S3154002CE50000000000000000000000000000000008A -S3154002CE60000000000000000000000000000000007A -S3154002CE70000000000000000000000000000000006A -S3154002CE80000000000000000000000000000000005A -S3154002CE90000000000000000000000000000000004A -S3154002CEA0000000000000000000000000000000003A -S3154002CEB0000000000000000000000000000000002A -S3154002CEC0000000000000000000000000000000001A -S3154002CED0000000000000000000000000000000000A -S3154002CEE000000000000000000000000000000000FA -S3154002CEF000000000000000000000000000000000EA -S3154002CF0000000000000000000000000000000000D9 -S3154002CF1000000000000000000000000000000000C9 -S3154002CF2000000000000000000000000000000000B9 -S3154002CF3000000000000000000000000000000000A9 -S3154002CF400000000000000000000000000000000099 -S3154002CF500000000000000000000000000000000089 -S3154002CF600000000000000000000000000000000079 -S3154002CF700000000000000000000000000000000069 -S3154002CF800000000000000000000000000000000059 -S3154002CF900000000000000000000000000000000049 -S3154002CFA00000000000000000000000000000000039 -S3154002CFB00000000000000000000000000000000029 -S3154002CFC00000000000000000000000000000000019 -S3154002CFD00000000000000000000000000000000009 -S3154002CFE000000000000000000000000000000000F9 -S3154002CFF000000000000000000000000000000000E9 -S3154002D00000000000000000000000000000000000D8 -S3154002D01000000000000000000000000000000000C8 -S3154002D02000000000000000000000000000000000B8 -S3154002D03000000000000000000000000000000000A8 -S3154002D0400000000000000000000000000000000098 -S3154002D0500000000000000000000000000000000088 -S3154002D0600000000000000000000000000000000078 -S3154002D0700000000000000000000000000000000068 -S3154002D0800000000000000000000000000000000058 -S3154002D0900000000000000000000000000000000048 -S3154002D0A00000000000000000000000000000000038 -S3154002D0B00000000000000000000000000000000028 -S3154002D0C00000000000000000000000000000000018 -S3154002D0D00000000000000000000000000000000008 -S3154002D0E000000000000000000000000000000000F8 -S3154002D0F000000000000000000000000000000000E8 -S3154002D10000000000000000000000000000000000D7 -S3154002D11000000000000000000000000000000000C7 -S3154002D12000000000000000000000000000000000B7 -S3154002D13000000000000000000000000000000000A7 -S3154002D1400000000000000000000000000000000097 -S3154002D1500000000000000000000000000000000087 -S3154002D1600000000000000000000000000000000077 -S3154002D1700000000000000000000000000000000067 -S3154002D1800000000000000000000000000000000057 -S3154002D1900000000000000000000000000000000047 -S3154002D1A00000000000000000000000000000000037 -S3154002D1B00000000000000000000000000000000027 -S3154002D1C00000000000000000000000000000000017 -S3154002D1D00000000000000000000000000000000007 -S3154002D1E000000000000000000000000000000000F7 -S3154002D1F000000000000000000000000000000000E7 -S3154002D20000000000000000000000000000000000D6 -S3154002D21000000000000000000000000000000000C6 -S3154002D22000000000000000000000000000000000B6 -S3154002D23000000000000000000000000000000000A6 -S3154002D2400000000000000000000000000000000096 -S3154002D2500000000000000000000000000000000086 -S3154002D2600000000000000000000000000000000076 -S3154002D2700000000000000000000000000000000066 -S3154002D2800000000000000000000000000000000056 -S3154002D2900000000000000000000000000000000046 -S3154002D2A00000000000000000000000000000000036 -S3154002D2B00000000000000000000000000000000026 -S3154002D2C00000000000000000000000000000000016 -S3154002D2D00000000000000000000000000000000006 -S3154002D2E000000000000000000000000000000000F6 -S3154002D2F000000000000000000000000000000000E6 -S3154002D30000000000000000000000000000000000D5 -S3154002D31000000000000000000000000000000000C5 -S3154002D32000000000000000000000000000000000B5 -S3154002D33000000000000000000000000000000000A5 -S3154002D3400000000000000000000000000000000095 -S3154002D3500000000000000000000000000000000085 -S3154002D3600000000000000000000000000000000075 -S3154002D3700000000000000000000000000000000065 -S3154002D3800000000000000000000000000000000055 -S3154002D3900000000000000000000000000000000045 -S3154002D3A00000000000000000000000000000000035 -S3154002D3B00000000000000000000000000000000025 -S3154002D3C00000000000000000000000000000000015 -S3154002D3D00000000000000000000000000000000005 -S3154002D3E000000000000000000000000000000000F5 -S3154002D3F000000000000000000000000000000000E5 -S3154002D40000000000000000000000000000000000D4 -S3154002D41000000000000000000000000000000000C4 -S3154002D42000000000000000000000000000000000B4 -S3154002D43000000000000000000000000000000000A4 -S3154002D4400000000000000000000000000000000094 -S3154002D4500000000000000000000000000000000084 -S3154002D4600000000000000000000000000000000074 -S3154002D4700000000000000000000000000000000064 -S3154002D4800000000000000000000000000000000054 -S3154002D4900000000000000000000000000000000044 -S3154002D4A00000000000000000000000000000000034 -S3154002D4B00000000000000000000000000000000024 -S3154002D4C00000000000000000000000000000000014 -S3154002D4D00000000000000000000000000000000004 -S3154002D4E000000000000000000000000000000000F4 -S3154002D4F000000000000000000000000000000000E4 -S3154002D50000000000000000000000000000000000D3 -S3154002D51000000000000000000000000000000000C3 -S3154002D52000000000000000000000000000000000B3 -S3154002D53000000000000000000000000000000000A3 -S3154002D5400000000000000000000000000000000093 -S3154002D5500000000000000000000000000000000083 -S3154002D5600000000000000000000000000000000073 -S3154002D5700000000000000000000000000000000063 -S3154002D5800000000000000000000000000000000053 -S3154002D5900000000000000000000000000000000043 -S3154002D5A00000000000000000000000000000000033 -S3154002D5B00000000000000000000000000000000023 -S3154002D5C00000000000000000000000000000000013 -S3154002D5D00000000000000000000000000000000003 -S3154002D5E000000000000000000000000000000000F3 -S3154002D5F000000000000000000000000000000000E3 -S3154002D60000000000000000000000000000000000D2 -S3154002D61000000000000000000000000000000000C2 -S3154002D62000000000000000000000000000000000B2 -S3154002D63000000000000000000000000000000000A2 -S3154002D6400000000000000000000000000000000092 -S3154002D6500000000000000000000000000000000082 -S3154002D6600000000000000000000000000000000072 -S3154002D6700000000000000000000000000000000062 -S3154002D6800000000000000000000000000000000052 -S3154002D6900000000000000000000000000000000042 -S3154002D6A00000000000000000000000000000000032 -S3154002D6B00000000000000000000000000000000022 -S3154002D6C00000000000000000000000000000000012 -S3154002D6D00000000000000000000000000000000002 -S3154002D6E000000000000000000000000000000000F2 -S3154002D6F000000000000000000000000000000000E2 -S3154002D70000000000000000000000000000000000D1 -S3154002D71000000000000000000000000000000000C1 -S3154002D72000000000000000000000000000000000B1 -S3154002D73000000000000000000000000000000000A1 -S3154002D7400000000000000000000000000000000091 -S3154002D7500000000000000000000000000000000081 -S3154002D7600000000000000000000000000000000071 -S3154002D7700000000000000000000000000000000061 -S3154002D7800000000000000000000000000000000051 -S3154002D7900000000000000000000000000000000041 -S3154002D7A00000000000000000000000000000000031 -S3154002D7B00000000000000000000000000000000021 -S3154002D7C00000000000000000000000000000000011 -S3154002D7D00000000000000000000000000000000001 -S3154002D7E000000000000000000000000000000000F1 -S3154002D7F000000000000000000000000000000000E1 -S3154002D80000000000000000000000000000000000D0 -S3154002D81000000000000000000000000000000000C0 -S3154002D82000000000000000000000000000000000B0 -S3154002D83000000000000000000000000000000000A0 -S3154002D8400000000000000000000000000000000090 -S3154002D8500000000000000000000000000000000080 -S3154002D8600000000000000000000000000000000070 -S3154002D8700000000000000000000000000000000060 -S3154002D8800000000000000000000000000000000050 -S3154002D8900000000000000000000000000000000040 -S3154002D8A00000000000000000000000000000000030 -S3154002D8B00000000000000000000000000000000020 -S3154002D8C00000000000000000000000000000000010 -S3154002D8D00000000000000000000000000000000000 -S3154002D8E000000000000000000000000000000000F0 -S3154002D8F000000000000000000000000000000000E0 -S3154002D90000000000000000000000000000000000CF -S3154002D91000000000000000000000000000000000BF -S3154002D92000000000000000000000000000000000AF -S3154002D930000000000000000000000000000000009F -S3154002D940000000000000000000000000000000008F -S3154002D950000000000000000000000000000000007F -S3154002D960000000000000000000000000000000006F -S3154002D970000000000000000000000000000000005F -S3154002D980000000000000000000000000000000004F -S3154002D990000000000000000000000000000000003F -S3154002D9A0000000000000000000000000000000002F -S3154002D9B0000000000000000000000000000000001F -S3154002D9C0000000000000000000000000000000000F -S3154002D9D000000000000000000000000000000000FF -S3154002D9E000000000000000000000000000000000EF -S3154002D9F000000000000000000000000000000000DF -S3154002DA0000000000000000000000000000000000CE -S3154002DA1000000000000000000000000000000000BE -S3154002DA2000000000000000000000000000000000AE -S3154002DA30000000000000000000000000000000009E -S3154002DA40000000000000000000000000000000008E -S3154002DA50000000000000000000000000000000007E -S3154002DA60000000000000000000000000000000006E -S3154002DA70000000000000000000000000000000005E -S3154002DA80000000000000000000000000000000004E -S3154002DA90000000000000000000000000000000003E -S3154002DAA0000000000000000000000000000000002E -S3154002DAB0000000000000000000000000000000001E -S3154002DAC0000000000000000000000000000000000E -S3154002DAD000000000000000000000000000000000FE -S3154002DAE000000000000000000000000000000000EE -S3154002DAF000000000000000000000000000000000DE -S3154002DB0000000000000000000000000000000000CD -S3154002DB1000000000000000000000000000000000BD -S3154002DB2000000000000000000000000000000000AD -S3154002DB30000000000000000000000000000000009D -S3154002DB40000000000000000000000000000000008D -S3154002DB50000000000000000000000000000000007D -S3154002DB60000000000000000000000000000000006D -S3154002DB70000000000000000000000000000000005D -S3154002DB80000000000000000000000000000000004D -S3154002DB90000000000000000000000000000000003D -S3154002DBA0000000000000000000000000000000002D -S3154002DBB0000000000000000000000000000000001D -S3154002DBC0000000000000000000000000000000000D -S3154002DBD000000000000000000000000000000000FD -S3154002DBE000000000000000000000000000000000ED -S3154002DBF000000000000000000000000000000000DD -S3154002DC0000000000000000000000000000000000CC -S3154002DC1000000000000000000000000000000000BC -S3154002DC2000000000000000000000000000000000AC -S3154002DC30000000000000000000000000000000009C -S3154002DC40000000000000000000000000000000008C -S3154002DC50000000000000000000000000000000007C -S3154002DC60000000000000000000000000000000006C -S3154002DC70000000000000000000000000000000005C -S3154002DC80000000000000000000000000000000004C -S3154002DC90000000000000000000000000000000003C -S3154002DCA0000000000000000000000000000000002C -S3154002DCB0000000000000000000000000000000001C -S3154002DCC0000000000000000000000000000000000C -S3154002DCD000000000000000000000000000000000FC -S3154002DCE000000000000000000000000000000000EC -S3154002DCF000000000000000000000000000000000DC -S3154002DD0000000000000000000000000000000000CB -S3154002DD1000000000000000000000000000000000BB -S3154002DD2000000000000000000000000000000000AB -S3154002DD30000000000000000000000000000000009B -S3154002DD40000000000000000000000000000000008B -S3154002DD50000000000000000000000000000000007B -S3154002DD60000000000000000000000000000000006B -S3154002DD70000000000000000000000000000000005B -S3154002DD80000000000000000000000000000000004B -S3154002DD90000000000000000000000000000000003B -S3154002DDA0000000000000000000000000000000002B -S3154002DDB0000000000000000000000000000000001B -S3154002DDC0000000000000000000000000000000000B -S3154002DDD000000000000000000000000000000000FB -S3154002DDE000000000000000000000000000000000EB -S3154002DDF000000000000000000000000000000000DB -S3154002DE0000000000000000000000000000000000CA -S3154002DE1000000000000000000000000000000000BA -S3154002DE2000000000000000000000000000000000AA -S3154002DE30000000000000000000000000000000009A -S3154002DE40000000000000000000000000000000008A -S3154002DE50000000000000000000000000000000007A -S3154002DE60000000000000000000000000000000006A -S3154002DE70000000000000000000000000000000005A -S3154002DE80000000000000000000000000000000004A -S3154002DE90000000000000000000000000000000003A -S3154002DEA0000000000000000000000000000000002A -S3154002DEB0000000000000000000000000000000001A -S3154002DEC0000000000000000000000000000000000A -S3154002DED000000000000000000000000000000000FA -S3154002DEE000000000000000000000000000000000EA -S3154002DEF000000000000000000000000000000000DA -S3154002DF0000000000000000000000000000000000C9 -S3154002DF1000000000000000000000000000000000B9 -S3154002DF2000000000000000000000000000000000A9 -S3154002DF300000000000000000000000000000000099 -S3154002DF400000000000000000000000000000000089 -S3154002DF500000000000000000000000000000000079 -S3154002DF600000000000000000000000000000000069 -S3154002DF700000000000000000000000000000000059 -S3154002DF800000000000000000000000000000000049 -S3154002DF900000000000000000000000000000000039 -S3154002DFA00000000000000000000000000000000029 -S3154002DFB00000000000000000000000000000000019 -S3154002DFC00000000000000000000000000000000009 -S3154002DFD000000000000000000000000000000000F9 -S3154002DFE000000000000000000000000000000000E9 -S3154002DFF000000000000000000000000000000000D9 -S3154002E00000000000000000000000000000000000C8 -S3154002E01000000000000000000000000000000000B8 -S3154002E02000000000000000000000000000000000A8 -S3154002E0300000000000000000000000000000000098 -S3154002E0400000000000000000000000000000000088 -S3154002E0500000000000000000000000000000000078 -S3154002E0600000000000000000000000000000000068 -S3154002E0700000000000000000000000000000000058 -S3154002E0800000000000000000000000000000000048 -S3154002E0900000000000000000000000000000000038 -S3154002E0A00000000000000000000000000000000028 -S3154002E0B00000000000000000000000000000000018 -S3154002E0C00000000000000000000000000000000008 -S3154002E0D000000000000000000000000000000000F8 -S3154002E0E000000000000000000000000000000000E8 -S3154002E0F000000000000000000000000000000000D8 -S3154002E10000000000000000000000000000000000C7 -S3154002E11000000000000000000000000000000000B7 -S3154002E12000000000000000000000000000000000A7 -S3154002E1300000000000000000000000000000000097 -S3154002E1400000000000000000000000000000000087 -S3154002E1500000000000000000000000000000000077 -S3154002E1600000000000000000000000000000000067 -S3154002E1700000000000000000000000000000000057 -S3154002E1800000000000000000000000000000000047 -S3154002E1900000000000000000000000000000000037 -S3154002E1A00000000000000000000000000000000027 -S3154002E1B00000000000000000000000000000000017 -S3154002E1C00000000000000000000000000000000007 -S3154002E1D000000000000000000000000000000000F7 -S3154002E1E000000000000000000000000000000000E7 -S3154002E1F000000000000000000000000000000000D7 -S3154002E20000000000000000000000000000000000C6 -S3154002E21000000000000000000000000000000000B6 -S3154002E22000000000000000000000000000000000A6 -S3154002E2300000000000000000000000000000000096 -S3154002E2400000000000000000000000000000000086 -S3154002E2500000000000000000000000000000000076 -S3154002E2600000000000000000000000000000000066 -S3154002E2700000000000000000000000000000000056 -S3154002E2800000000000000000000000000000000046 -S3154002E2900000000000000000000000000000000036 -S3154002E2A00000000000000000000000000000000026 -S3154002E2B00000000000000000000000000000000016 -S3154002E2C00000000000000000000000000000000006 -S3154002E2D000000000000000000000000000000000F6 -S3154002E2E000000000000000000000000000000000E6 -S3154002E2F000000000000000000000000000000000D6 -S3154002E30000000000000000000000000000000000C5 -S3154002E31000000000000000000000000000000000B5 -S3154002E32000000000000000000000000000000000A5 -S3154002E3300000000000000000000000000000000095 -S3154002E3400000000000000000000000000000000085 -S3154002E3500000000000000000000000000000000075 -S3154002E3600000000000000000000000000000000065 -S3154002E3700000000000000000000000000000000055 -S3154002E3800000000000000000000000000000000045 -S3154002E3900000000000000000000000000000000035 -S3154002E3A00000000000000000000000000000000025 -S3154002E3B00000000000000000000000000000000015 -S3154002E3C00000000000000000000000000000000005 -S3154002E3D000000000000000000000000000000000F5 -S3154002E3E000000000000000000000000000000000E5 -S3154002E3F000000000000000000000000000000000D5 -S3154002E40000000000000000000000000000000000C4 -S3154002E41000000000000000000000000000000000B4 -S3154002E42000000000000000000000000000000000A4 -S3154002E4300000000000000000000000000000000094 -S3154002E4400000000000000000000000000000000084 -S3154002E4500000000000000000000000000000000074 -S3154002E4600000000000000000000000000000000064 -S3154002E4700000000000000000000000000000000054 -S3154002E4800000000000000000000000000000000044 -S3154002E4900000000000000000000000000000000034 -S3154002E4A00000000000000000000000000000000024 -S3154002E4B00000000000000000000000000000000014 -S3154002E4C00000000000000000000000000000000004 -S3154002E4D000000000000000000000000000000000F4 -S3154002E4E000000000000000000000000000000000E4 -S3154002E4F000000000000000000000000000000000D4 -S3154002E50000000000000000000000000000000000C3 -S3154002E51000000000000000000000000000000000B3 -S3154002E52000000000000000000000000000000000A3 -S3154002E5300000000000000000000000000000000093 -S3154002E5400000000000000000000000000000000083 -S3154002E5500000000000000000000000000000000073 -S3154002E5600000000000000000000000000000000063 -S3154002E5700000000000000000000000000000000053 -S3154002E5800000000000000000000000000000000043 -S3154002E5900000000000000000000000000000000033 -S3154002E5A00000000000000000000000000000000023 -S3154002E5B00000000000000000000000000000000013 -S3154002E5C00000000000000000000000000000000003 -S3154002E5D000000000000000000000000000000000F3 -S3154002E5E000000000000000000000000000000000E3 -S3154002E5F000000000000000000000000000000000D3 -S3154002E60000000000000000000000000000000000C2 -S3154002E61000000000000000000000000000000000B2 -S3154002E62000000000000000000000000000000000A2 -S3154002E6300000000000000000000000000000000092 -S3154002E6400000000000000000000000000000000082 -S3154002E6500000000000000000000000000000000072 -S3154002E6600000000000000000000000000000000062 -S3154002E6700000000000000000000000000000000052 -S3154002E6800000000000000000000000000000000042 -S3154002E6900000000000000000000000000000000032 -S3154002E6A00000000000000000000000000000000022 -S3154002E6B00000000000000000000000000000000012 -S3154002E6C00000000000000000000000000000000002 -S3154002E6D000000000000000000000000000000000F2 -S3154002E6E000000000000000000000000000000000E2 -S3154002E6F000000000000000000000000000000000D2 -S3154002E70000000000000000000000000000000000C1 -S3154002E71000000000000000000000000000000000B1 -S3154002E72000000000000000000000000000000000A1 -S3154002E7300000000000000000000000000000000091 -S3154002E7400000000000000000000000000000000081 -S3154002E7500000000000000000000000000000000071 -S3154002E7600000000000000000000000000000000061 -S3154002E7700000000000000000000000000000000051 -S3154002E7800000000000000000000000000000000041 -S3154002E7900000000000000000000000000000000031 -S3154002E7A00000000000000000000000000000000021 -S3154002E7B00000000000000000000000000000000011 -S3154002E7C00000000000000000000000000000000001 -S3154002E7D000000000000000000000000000000000F1 -S3154002E7E000000000000000000000000000000000E1 -S3154002E7F000000000000000000000000000000000D1 -S3154002E80000000000000000000000000000000000C0 -S3154002E81000000000000000000000000000000000B0 -S3154002E82000000000000000000000000000000000A0 -S3154002E8300000000000000000000000000000000090 -S3154002E8400000000000000000000000000000000080 -S3154002E8500000000000000000000000000000000070 -S3154002E8600000000000000000000000000000000060 -S3154002E8700000000000000000000000000000000050 -S3154002E8800000000000000000000000000000000040 -S3154002E8900000000000000000000000000000000030 -S3154002E8A00000000000000000000000000000000020 -S3154002E8B00000000000000000000000000000000010 -S3154002E8C00000000000000000000000000000000000 -S3154002E8D000000000000000000000000000000000F0 -S3154002E8E000000000000000000000000000000000E0 -S3154002E8F000000000000000000000000000000000D0 -S3154002E90000000000000000000000000000000000BF -S3154002E91000000000000000000000000000000000AF -S3154002E920000000000000000000000000000000009F -S3154002E930000000000000000000000000000000008F -S3154002E940000000000000000000000000000000007F -S3154002E950000000000000000000000000000000006F -S3154002E960000000000000000000000000000000005F -S3154002E970000000000000000000000000000000004F -S3154002E980000000000000000000000000000000003F -S3154002E990000000000000000000000000000000002F -S3154002E9A0000000000000000000000000000000001F -S3154002E9B0000000000000000000000000000000000F -S3154002E9C000000000000000000000000000000000FF -S3154002E9D000000000000000000000000000000000EF -S3154002E9E000000000000000000000000000000000DF -S3154002E9F000000000000000000000000000000000CF -S3154002EA0000000000000000000000000000000000BE -S3154002EA1000000000000000000000000000000000AE -S3154002EA20000000000000000000000000000000009E -S3154002EA30000000000000000000000000000000008E -S3154002EA40000000000000000000000000000000007E -S3154002EA50000000000000000000000000000000006E -S3154002EA60000000000000000000000000000000005E -S3154002EA70000000000000000000000000000000004E -S3154002EA80000000000000000000000000000000003E -S3154002EA90000000000000000000000000000000002E -S3154002EAA0000000000000000000000000000000001E -S3154002EAB0000000000000000000000000000000000E -S3154002EAC000000000000000000000000000000000FE -S3154002EAD000000000000000000000000000000000EE -S3154002EAE000000000000000000000000000000000DE -S3154002EAF000000000000000000000000000000000CE -S3154002EB0000000000000000000000000000000000BD -S3154002EB1000000000000000000000000000000000AD -S3154002EB20000000000000000000000000000000009D -S3154002EB30000000000000000000000000000000008D -S3154002EB40000000000000000000000000000000007D -S3154002EB50000000000000000000000000000000006D -S3154002EB60000000000000000000000000000000005D -S3154002EB70000000000000000000000000000000004D -S3154002EB80000000000000000000000000000000003D -S3154002EB90000000000000000000000000000000002D -S3154002EBA0000000000000000000000000000000001D -S3154002EBB0000000000000000000000000000000000D -S3154002EBC000000000000000000000000000000000FD -S3154002EBD000000000000000000000000000000000ED -S3154002EBE000000000000000000000000000000000DD -S3154002EBF000000000000000000000000000000000CD -S3154002EC0000000000000000000000000000000000BC -S3154002EC1000000000000000000000000000000000AC -S3154002EC20000000000000000000000000000000009C -S3154002EC30000000000000000000000000000000008C -S3154002EC40000000000000000000000000000000007C -S3154002EC50000000000000000000000000000000006C -S3154002EC60000000000000000000000000000000005C -S3154002EC70000000000000000000000000000000004C -S3154002EC80000000000000000000000000000000003C -S3154002EC90000000000000000000000000000000002C -S3154002ECA0000000000000000000000000000000001C -S3154002ECB0000000000000000000000000000000000C -S3154002ECC000000000000000000000000000000000FC -S3154002ECD000000000000000000000000000000000EC -S3154002ECE000000000000000000000000000000000DC -S3154002ECF000000000000000000000000000000000CC -S3154002ED0000000000000000000000000000000000BB -S3154002ED1000000000000000000000000000000000AB -S3154002ED20000000000000000000000000000000009B -S3154002ED30000000000000000000000000000000008B -S3154002ED40000000000000000000000000000000007B -S3154002ED50000000000000000000000000000000006B -S3154002ED60000000000000000000000000000000005B -S3154002ED70000000000000000000000000000000004B -S3154002ED80000000000000000000000000000000003B -S3154002ED90000000000000000000000000000000002B -S3154002EDA0000000000000000000000000000000001B -S3154002EDB0000000000000000000000000000000000B -S3154002EDC000000000000000000000000000000000FB -S3154002EDD000000000000000000000000000000000EB -S3154002EDE000000000000000000000000000000000DB -S3154002EDF000000000000000000000000000000000CB -S3154002EE0000000000000000000000000000000000BA -S3154002EE1000000000000000000000000000000000AA -S3154002EE20000000000000000000000000000000009A -S3154002EE30000000000000000000000000000000008A -S3154002EE40000000000000000000000000000000007A -S3154002EE50000000000000000000000000000000006A -S3154002EE60000000000000000000000000000000005A -S3154002EE70000000000000000000000000000000004A -S3154002EE80000000000000000000000000000000003A -S3154002EE90000000000000000000000000000000002A -S3154002EEA0000000000000000000000000000000001A -S3154002EEB0000000000000000000000000000000000A -S3154002EEC000000000000000000000000000000000FA -S3154002EED000000000000000000000000000000000EA -S3154002EEE000000000000000000000000000000000DA -S3154002EEF000000000000000000000000000000000CA -S3154002EF0000000000000000000000000000000000B9 -S3154002EF1000000000000000000000000000000000A9 -S3154002EF200000000000000000000000000000000099 -S3154002EF300000000000000000000000000000000089 -S3154002EF400000000000000000000000000000000079 -S3154002EF500000000000000000000000000000000069 -S3154002EF600000000000000000000000000000000059 -S3154002EF700000000000000000000000000000000049 -S3154002EF800000000000000000000000000000000039 -S3154002EF900000000000000000000000000000000029 -S3154002EFA00000000000000000000000000000000019 -S3154002EFB00000000000000000000000000000000009 -S3154002EFC000000000000000000000000000000000F9 -S3154002EFD000000000000000000000000000000000E9 -S3154002EFE000000000000000000000000000000000D9 -S3154002EFF000000000000000000000000000000000C9 -S3154002F00000000000000000000000000000000000B8 -S3154002F01000000000000000000000000000000000A8 -S3154002F0200000000000000000000000000000000098 -S3154002F0300000000000000000000000000000000088 -S3154002F0400000000000000000000000000000000078 -S3154002F0500000000000000000000000000000000068 -S3154002F0600000000000000000000000000000000058 -S3154002F0700000000000000000000000000000000048 -S3154002F0800000000000000000000000000000000038 -S3154002F0900000000000000000000000000000000028 -S3154002F0A00000000000000000000000000000000018 -S3154002F0B00000000000000000000000000000000008 -S3154002F0C000000000000000000000000000000000F8 -S3154002F0D000000000000000000000000000000000E8 -S3154002F0E000000000000000000000000000000000D8 -S3154002F0F000000000000000000000000000000000C8 -S3154002F10000000000000000000000000000000000B7 -S3154002F11000000000000000000000000000000000A7 -S3154002F1200000000000000000000000000000000097 -S3154002F1300000000000000000000000000000000087 -S3154002F1400000000000000000000000000000000077 -S3154002F1500000000000000000000000000000000067 -S3154002F1600000000000000000000000000000000057 -S3154002F1700000000000000000000000000000000047 -S3154002F1800000000000000000000000000000000037 -S3154002F1900000000000000000000000000000000027 -S3154002F1A00000000000000000000000000000000017 -S3154002F1B00000000000000000000000000000000007 -S3154002F1C000000000000000000000000000000000F7 -S3154002F1D000000000000000000000000000000000E7 -S3154002F1E000000000000000000000000000000000D7 -S3154002F1F000000000000000000000000000000000C7 -S3154002F20000000000000000000000000000000000B6 -S3154002F21000000000000000000000000000000000A6 -S3154002F2200000000000000000000000000000000096 -S3154002F2300000000000000000000000000000000086 -S3154002F2400000000000000000000000000000000076 -S3154002F2500000000000000000000000000000000066 -S3154002F2600000000000000000000000000000000056 -S3154002F2700000000000000000000000000000000046 -S3154002F2800000000000000000000000000000000036 -S3154002F2900000000000000000000000000000000026 -S3154002F2A00000000000000000000000000000000016 -S3154002F2B00000000000000000000000000000000006 -S3154002F2C000000000000000000000000000000000F6 -S3154002F2D000000000000000000000000000000000E6 -S3154002F2E000000000000000000000000000000000D6 -S3154002F2F000000000000000000000000000000000C6 -S3154002F30000000000000000000000000000000000B5 -S3154002F31000000000000000000000000000000000A5 -S3154002F3200000000000000000000000000000000095 -S3154002F3300000000000000000000000000000000085 -S3154002F3400000000000000000000000000000000075 -S3154002F3500000000000000000000000000000000065 -S3154002F3600000000000000000000000000000000055 -S3154002F3700000000000000000000000000000000045 -S3154002F3800000000000000000000000000000000035 -S3154002F3900000000000000000000000000000000025 -S3154002F3A00000000000000000000000000000000015 -S3154002F3B00000000000000000000000000000000005 -S3154002F3C000000000000000000000000000000000F5 -S3154002F3D000000000000000000000000000000000E5 -S3154002F3E000000000000000000000000000000000D5 -S3154002F3F000000000000000000000000000000000C5 -S3154002F40000000000000000000000000000000000B4 -S3154002F41000000000000000000000000000000000A4 -S3154002F4200000000000000000000000000000000094 -S3154002F4300000000000000000000000000000000084 -S3154002F4400000000000000000000000000000000074 -S3154002F4500000000000000000000000000000000064 -S3154002F4600000000000000000000000000000000054 -S3154002F4700000000000000000000000000000000044 -S3154002F4800000000000000000000000000000000034 -S3154002F4900000000000000000000000000000000024 -S3154002F4A00000000000000000000000000000000014 -S3154002F4B00000000000000000000000000000000004 -S3154002F4C000000000000000000000000000000000F4 -S3154002F4D000000000000000000000000000000000E4 -S3154002F4E000000000000000000000000000000000D4 -S3154002F4F000000000000000000000000000000000C4 -S3154002F50000000000000000000000000000000000B3 -S3154002F51000000000000000000000000000000000A3 -S3154002F5200000000000000000000000000000000093 -S3154002F5300000000000000000000000000000000083 -S3154002F5400000000000000000000000000000000073 -S3154002F5500000000000000000000000000000000063 -S3154002F5600000000000000000000000000000000053 -S3154002F5700000000000000000000000000000000043 -S3154002F5800000000000000000000000000000000033 -S3154002F5900000000000000000000000000000000023 -S3154002F5A00000000000000000000000000000000013 -S3154002F5B00000000000000000000000000000000003 -S3154002F5C000000000000000000000000000000000F3 -S3154002F5D000000000000000000000000000000000E3 -S3154002F5E000000000000000000000000000000000D3 -S3154002F5F000000000000000000000000000000000C3 -S3154002F60000000000000000000000000000000000B2 -S3154002F61000000000000000000000000000000000A2 -S3154002F6200000000000000000000000000000000092 -S3154002F6300000000000000000000000000000000082 -S3154002F6400000000000000000000000000000000072 -S3154002F6500000000000000000000000000000000062 -S3154002F6600000000000000000000000000000000052 -S3154002F6700000000000000000000000000000000042 -S3154002F6800000000000000000000000000000000032 -S3154002F6900000000000000000000000000000000022 -S3154002F6A00000000000000000000000000000000012 -S3154002F6B00000000000000000000000000000000002 -S3154002F6C000000000000000000000000000000000F2 -S3154002F6D000000000000000000000000000000000E2 -S3154002F6E000000000000000000000000000000000D2 -S3154002F6F000000000000000000000000000000000C2 -S3154002F70000000000000000000000000000000000B1 -S3154002F71000000000000000000000000000000000A1 -S3154002F7200000000000000000000000000000000091 -S3154002F7300000000000000000000000000000000081 -S3154002F7400000000000000000000000000000000071 -S3154002F7500000000000000000000000000000000061 -S3154002F7600000000000000000000000000000000051 -S3154002F7700000000000000000000000000000000041 -S3154002F7800000000000000000000000000000000031 -S3154002F7900000000000000000000000000000000021 -S3154002F7A00000000000000000000000000000000011 -S3154002F7B00000000000000000000000000000000001 -S3154002F7C000000000000000000000000000000000F1 -S3154002F7D000000000000000000000000000000000E1 -S3154002F7E000000000000000000000000000000000D1 -S3154002F7F000000000000000000000000000000000C1 -S3154002F80000000000000000000000000000000000B0 -S3154002F81000000000000000000000000000000000A0 -S3154002F8200000000000000000000000000000000090 -S3154002F8300000000000000000000000000000000080 -S3154002F8400000000000000000000000000000000070 -S3154002F8500000000000000000000000000000000060 -S3154002F8600000000000000000000000000000000050 -S3154002F8700000000000000000000000000000000040 -S3154002F8800000000000000000000000000000000030 -S3154002F8900000000000000000000000000000000020 -S3154002F8A00000000000000000000000000000000010 -S3154002F8B00000000000000000000000000000000000 -S3154002F8C000000000000000000000000000000000F0 -S3154002F8D000000000000000000000000000000000E0 -S3154002F8E000000000000000000000000000000000D0 -S3154002F8F000000000000000000000000000000000C0 -S3154002F90000000000000000000000000000000000AF -S3154002F910000000000000000000000000000000009F -S3154002F920000000000000000000000000000000008F -S3154002F930000000000000000000000000000000007F -S3154002F940000000000000000000000000000000006F -S3154002F950000000000000000000000000000000005F -S3154002F960000000000000000000000000000000004F -S3154002F970000000000000000000000000000000003F -S3154002F980000000000000000000000000000000002F -S3154002F990000000000000000000000000000000001F -S3154002F9A0000000000000000000000000000000000F -S3154002F9B000000000000000000000000000000000FF -S3154002F9C000000000000000000000000000000000EF -S3154002F9D000000000000000000000000000000000DF -S3154002F9E000000000000000000000000000000000CF -S3154002F9F000000000000000000000000000000000BF -S3154002FA0000000000000000000000000000000000AE -S3154002FA10000000000000000000000000000000009E -S3154002FA20000000000000000000000000000000008E -S3154002FA30000000000000000000000000000000007E -S3154002FA40000000000000000000000000000000006E -S3154002FA50000000000000000000000000000000005E -S3154002FA60000000000000000000000000000000004E -S3154002FA70000000000000000000000000000000003E -S3154002FA80000000000000000000000000000000002E -S3154002FA90000000000000000000000000000000001E -S3154002FAA0000000000000000000000000000000000E -S3154002FAB000000000000000000000000000000000FE -S3154002FAC000000000000000000000000000000000EE -S3154002FAD000000000000000000000000000000000DE -S3154002FAE000000000000000000000000000000000CE -S3154002FAF000000000000000000000000000000000BE -S3154002FB0000000000000000000000000000000000AD -S3154002FB10000000000000000000000000000000009D -S3154002FB20000000000000000000000000000000008D -S3154002FB30000000000000000000000000000000007D -S3154002FB40000000000000000000000000000000006D -S3154002FB50000000000000000000000000000000005D -S3154002FB60000000000000000000000000000000004D -S3154002FB70000000000000000000000000000000003D -S3154002FB80000000000000000000000000000000002D -S3154002FB90000000000000000000000000000000001D -S3154002FBA0000000000000000000000000000000000D -S3154002FBB000000000000000000000000000000000FD -S3154002FBC000000000000000000000000000000000ED -S3154002FBD000000000000000000000000000000000DD -S3154002FBE000000000000000000000000000000000CD -S3154002FBF000000000000000000000000000000000BD -S3154002FC0000000000000000000000000000000000AC -S3154002FC10000000000000000000000000000000009C -S3154002FC20000000000000000000000000000000008C -S3154002FC30000000000000000000000000000000007C -S3154002FC40000000000000000000000000000000006C -S3154002FC50000000000000000000000000000000005C -S3154002FC60000000000000000000000000000000004C -S3154002FC70000000000000000000000000000000003C -S3154002FC80000000000000000000000000000000002C -S3154002FC90000000000000000000000000000000001C -S3154002FCA0000000000000000000000000000000000C -S3154002FCB000000000000000000000000000000000FC -S3154002FCC000000000000000000000000000000000EC -S3154002FCD000000000000000000000000000000000DC -S3154002FCE000000000000000000000000000000000CC -S3154002FCF000000000000000000000000000000000BC -S3154002FD0000000000000000000000000000000000AB -S3154002FD10000000000000000000000000000000009B -S3154002FD20000000000000000000000000000000008B -S3154002FD30000000000000000000000000000000007B -S3154002FD40000000000000000000000000000000006B -S3154002FD50000000000000000000000000000000005B -S3154002FD60000000000000000000000000000000004B -S3154002FD70000000000000000000000000000000003B -S3154002FD80000000000000000000000000000000002B -S3154002FD90000000000000000000000000000000001B -S3154002FDA0000000000000000000000000000000000B -S3154002FDB000000000000000000000000000000000FB -S3154002FDC000000000000000000000000000000000EB -S3154002FDD000000000000000000000000000000000DB -S3154002FDE000000000000000000000000000000000CB -S3154002FDF000000000000000000000000000000000BB -S3154002FE0000000000000000000000000000000000AA -S3154002FE10000000000000000000000000000000009A -S3154002FE20000000000000000000000000000000008A -S3154002FE30000000000000000000000000000000007A -S3154002FE40000000000000000000000000000000006A -S3154002FE50000000000000000000000000000000005A -S3154002FE60000000000000000000000000000000004A -S3154002FE70000000000000000000000000000000003A -S3154002FE80000000000000000000000000000000002A -S3154002FE90000000000000000000000000000000001A -S3154002FEA0000000000000000000000000000000000A -S3154002FEB000000000000000000000000000000000FA -S3154002FEC000000000000000000000000000000000EA -S3154002FED000000000000000000000000000000000DA -S3154002FEE000000000000000000000000000000000CA -S3154002FEF000000000000000000000000000000000BA -S3154002FF0000000000000000000000000000000000A9 -S3154002FF100000000000000000000000000000000099 -S3154002FF200000000000000000000000000000000089 -S3154002FF300000000000000000000000000000000079 -S3154002FF400000000000000000000000000000000069 -S3154002FF500000000000000000000000000000000059 -S3154002FF600000000000000000000000000000000049 -S3154002FF700000000000000000000000000000000039 -S3154002FF800000000000000000000000000000000029 -S3154002FF900000000000000000000000000000000019 -S3154002FFA00000000000000000000000000000000009 -S3154002FFB000000000000000000000000000000000F9 -S3154002FFC000000000000000000000000000000000E9 -S3154002FFD000000000000000000000000000000000D9 -S3154002FFE000000000000000000000000000000000C9 -S3154002FFF000000000000000000000000000000000B9 -S3154003000000000000000000000000000000000000A7 -S315400300100000000000000000000000000000000097 -S315400300200000000000000000000000000000000087 -S315400300300000000000000000000000000000000077 -S315400300400000000000000000000000000000000067 -S315400300500000000000000000000000000000000057 -S315400300600000000000000000000000000000000047 -S315400300700000000000000000000000000000000037 -S315400300800000000000000000000000000000000027 -S315400300900000000000000000000000000000000017 -S315400300A00000000000000000000000000000000007 -S315400300B000000000000000000000000000000000F7 -S315400300C000000000000000000000000000000000E7 -S315400300D000000000000000000000000000000000D7 -S315400300E000000000000000000000000000000000C7 -S315400300F000000000000000000000000000000000B7 -S3154003010000000000000000000000000000000000A6 -S315400301100000000000000000000000000000000096 -S315400301200000000000000000000000000000000086 -S315400301300000000000000000000000000000000076 -S315400301400000000000000000000000000000000066 -S315400301500000000000000000000000000000000056 -S315400301600000000000000000000000000000000046 -S315400301700000000000000000000000000000000036 -S315400301800000000000000000000000000000000026 -S315400301900000000000000000000000000000000016 -S315400301A00000000000000000000000000000000006 -S315400301B000000000000000000000000000000000F6 -S315400301C000000000000000000000000000000000E6 -S315400301D000000000000000000000000000000000D6 -S315400301E000000000000000000000000000000000C6 -S315400301F000000000000000000000000000000000B6 -S3154003020000000000000000000000000000000000A5 -S315400302100000000000000000000000000000000095 -S315400302200000000000000000000000000000000085 -S315400302300000000000000000000000000000000075 -S315400302400000000000000000000000000000000065 -S315400302500000000000000000000000000000000055 -S315400302600000000000000000000000000000000045 -S315400302700000000000000000000000000000000035 -S315400302800000000000000000000000000000000025 -S315400302900000000000000000000000000000000015 -S315400302A00000000000000000000000000000000005 -S315400302B000000000000000000000000000000000F5 -S315400302C000000000000000000000000000000000E5 -S315400302D000000000000000000000000000000000D5 -S315400302E000000000000000000000000000000000C5 -S315400302F000000000000000000000000000000000B5 -S3154003030000000000000000000000000000000000A4 -S315400303100000000000000000000000000000000094 -S315400303200000000000000000000000000000000084 -S315400303300000000000000000000000000000000074 -S315400303400000000000000000000000000000000064 -S315400303500000000000000000000000000000000054 -S315400303600000000000000000000000000000000044 -S315400303700000000000000000000000000000000034 -S315400303800000000000000000000000000000000024 -S315400303900000000000000000000000000000000014 -S315400303A00000000000000000000000000000000004 -S315400303B000000000000000000000000000000000F4 -S315400303C000000000000000000000000000000000E4 -S315400303D000000000000000000000000000000000D4 -S315400303E000000000000000000000000000000000C4 -S315400303F000000000000000000000000000000000B4 -S3154003040000000000000000000000000000000000A3 -S315400304100000000000000000000000000000000093 -S315400304200000000000000000000000000000000083 -S315400304300000000000000000000000000000000073 -S315400304400000000000000000000000000000000063 -S315400304500000000000000000000000000000000053 -S315400304600000000000000000000000000000000043 -S315400304700000000000000000000000000000000033 -S315400304800000000000000000000000000000000023 -S315400304900000000000000000000000000000000013 -S315400304A00000000000000000000000000000000003 -S315400304B000000000000000000000000000000000F3 -S315400304C000000000000000000000000000000000E3 -S315400304D000000000000000000000000000000000D3 -S315400304E000000000000000000000000000000000C3 -S315400304F000000000000000000000000000000000B3 -S3154003050000000000000000000000000000000000A2 -S315400305100000000000000000000000000000000092 -S315400305200000000000000000000000000000000082 -S315400305300000000000000000000000000000000072 -S315400305400000000000000000000000000000000062 -S315400305500000000000000000000000000000000052 -S315400305600000000000000000000000000000000042 -S315400305700000000000000000000000000000000032 -S315400305800000000000000000000000000000000022 -S315400305900000000000000000000000000000000012 -S315400305A00000000000000000000000000000000002 -S315400305B000000000000000000000000000000000F2 -S315400305C000000000000000000000000000000000E2 -S315400305D000000000000000000000000000000000D2 -S315400305E000000000000000000000000000000000C2 -S315400305F000000000000000000000000000000000B2 -S3154003060000000000000000000000000000000000A1 -S315400306100000000000000000000000000000000091 -S315400306200000000000000000000000000000000081 -S315400306300000000000000000000000000000000071 -S315400306400000000000000000000000000000000061 -S315400306500000000000000000000000000000000051 -S315400306600000000000000000000000000000000041 -S315400306700000000000000000000000000000000031 -S315400306800000000000000000000000000000000021 -S315400306900000000000000000000000000000000011 -S315400306A00000000000000000000000000000000001 -S315400306B000000000000000000000000000000000F1 -S315400306C000000000000000000000000000000000E1 -S315400306D000000000000000000000000000000000D1 -S315400306E000000000000000000000000000000000C1 -S315400306F000000000000000000000000000000000B1 -S3154003070000000000000000000000000000000000A0 -S315400307100000000000000000000000000000000090 -S315400307200000000000000000000000000000000080 -S315400307300000000000000000000000000000000070 -S315400307400000000000000000000000000000000060 -S315400307500000000000000000000000000000000050 -S315400307600000000000000000000000000000000040 -S315400307700000000000000000000000000000000030 -S315400307800000000000000000000000000000000020 -S315400307900000000000000000000000000000000010 -S315400307A00000000000000000000000000000000000 -S315400307B000000000000000000000000000000000F0 -S315400307C000000000000000000000000000000000E0 -S315400307D000000000000000000000000000000000D0 -S315400307E000000000000000000000000000000000C0 -S315400307F000000000000000000000000000000000B0 -S31540030800000000000000000000000000000000009F -S31540030810000000000000000000000000000000008F -S31540030820000000000000000000000000000000007F -S31540030830000000000000000000000000000000006F -S31540030840000000000000000000000000000000005F -S31540030850000000000000000000000000000000004F -S31540030860000000000000000000000000000000003F -S31540030870000000000000000000000000000000002F -S31540030880000000000000000000000000000000001F -S31540030890000000000000000000000000000000000F -S315400308A000000000000000000000000000000000FF -S315400308B000000000000000000000000000000000EF -S315400308C000000000000000000000000000000000DF -S315400308D000000000000000000000000000000000CF -S315400308E000000000000000000000000000000000BF -S315400308F000000000000000000000000000000000AF -S31540030900000000000000000000000000000000009E -S31540030910000000000000000000000000000000008E -S31540030920000000000000000000000000000000007E -S31540030930000000000000000000000000000000006E -S31540030940000000000000000000000000000000005E -S31540030950000000000000000000000000000000004E -S31540030960000000000000000000000000000000003E -S31540030970000000000000000000000000000000002E -S31540030980000000000000000000000000000000001E -S31540030990000000000000000000000000000000000E -S315400309A000000000000000000000000000000000FE -S315400309B000000000000000000000000000000000EE -S315400309C000000000000000000000000000000000DE -S315400309D000000000000000000000000000000000CE -S315400309E000000000000000000000000000000000BE -S315400309F000000000000000000000000000000000AE -S31540030A00000000000000000000000000000000009D -S31540030A10000000000000000000000000000000008D -S31540030A20000000000000000000000000000000007D -S31540030A30000000000000000000000000000000006D -S31540030A40000000000000000000000000000000005D -S31540030A50000000000000000000000000000000004D -S31540030A60000000000000000000000000000000003D -S31540030A70000000000000000000000000000000002D -S31540030A80000000000000000000000000000000001D -S31540030A90000000000000000000000000000000000D -S31540030AA000000000000000000000000000000000FD -S31540030AB000000000000000000000000000000000ED -S31540030AC000000000000000000000000000000000DD -S31540030AD000000000000000000000000000000000CD -S31540030AE000000000000000000000000000000000BD -S31540030AF000000000000000000000000000000000AD -S31540030B00000000000000000000000000000000009C -S31540030B10000000000000000000000000000000008C -S31540030B20000000000000000000000000000000007C -S31540030B30000000000000000000000000000000006C -S31540030B40000000000000000000000000000000005C -S31540030B50000000000000000000000000000000004C -S31540030B60000000000000000000000000000000003C -S31540030B70000000000000000000000000000000002C -S31540030B80000000000000000000000000000000001C -S31540030B90000000000000000000000000000000000C -S31540030BA000000000000000000000000000000000FC -S31540030BB000000000000000000000000000000000EC -S31540030BC000000000000000000000000000000000DC -S31540030BD000000000000000000000000000000000CC -S31540030BE000000000000000000000000000000000BC -S31540030BF000000000000000000000000000000000AC -S31540030C00000000000000000000000000000000009B -S31540030C10000000000000000000000000000000008B -S31540030C20000000000000000000000000000000007B -S31540030C30000000000000000000000000000000006B -S31540030C40000000000000000000000000000000005B -S31540030C50000000000000000000000000000000004B -S31540030C60000000000000000000000000000000003B -S31540030C70000000000000000000000000000000002B -S31540030C80000000000000000000000000000000001B -S31540030C90000000000000000000000000000000000B -S31540030CA000000000000000000000000000000000FB -S31540030CB000000000000000000000000000000000EB -S31540030CC000000000000000000000000000000000DB -S31540030CD000000000000000000000000000000000CB -S31540030CE000000000000000000000000000000000BB -S31540030CF000000000000000000000000000000000AB -S31540030D00000000000000000000000000000000009A -S31540030D10000000000000000000000000000000008A -S31540030D20000000000000000000000000000000007A -S31540030D30000000000000000000000000000000006A -S31540030D40000000000000000000000000000000005A -S31540030D50000000000000000000000000000000004A -S31540030D60000000000000000000000000000000003A -S31540030D70000000000000000000000000000000002A -S31540030D80000000000000000000000000000000001A -S31540030D90000000000000000000000000000000000A -S31540030DA000000000000000000000000000000000FA -S31540030DB000000000000000000000000000000000EA -S31540030DC000000000000000000000000000000000DA -S31540030DD000000000000000000000000000000000CA -S31540030DE000000000000000000000000000000000BA -S31540030DF000000000000000000000000000000000AA -S31540030E000000000000000000000000000000000099 -S31540030E100000000000000000000000000000000089 -S31540030E200000000000000000000000000000000079 -S31540030E300000000000000000000000000000000069 -S31540030E400000000000000000000000000000000059 -S31540030E500000000000000000000000000000000049 -S31540030E600000000000000000000000000000000039 -S31540030E700000000000000000000000000000000029 -S31540030E800000000000000000000000000000000019 -S31540030E900000000000000000000000000000000009 -S31540030EA000000000000000000000000000000000F9 -S31540030EB000000000000000000000000000000000E9 -S31540030EC000000000000000000000000000000000D9 -S31540030ED000000000000000000000000000000000C9 -S31540030EE000000000000000000000000000000000B9 -S31540030EF000000000000000000000000000000000A9 -S31540030F000000000000000000000000000000000098 -S31540030F100000000000000000000000000000000088 -S31540030F200000000000000000000000000000000078 -S31540030F300000000000000000000000000000000068 -S31540030F400000000000000000000000000000000058 -S31540030F500000000000000000000000000000000048 -S31540030F600000000000000000000000000000000038 -S31540030F700000000000000000000000000000000028 -S31540030F800000000000000000000000000000000018 -S31540030F900000000000000000000000000000000008 -S31540030FA000000000000000000000000000000000F8 -S31540030FB000000000000000000000000000000000E8 -S31540030FC000000000000000000000000000000000D8 -S31540030FD000000000000000000000000000000000C8 -S31540030FE000000000000000000000000000000000B8 -S31540030FF000000000000000000000000000000000A8 -S315400310000000000000000000000000000000000097 -S315400310100000000000000000000000000000000087 -S315400310200000000000000000000000000000000077 -S315400310300000000000000000000000000000000067 -S315400310400000000000000000000000000000000057 -S315400310500000000000000000000000000000000047 -S315400310600000000000000000000000000000000037 -S315400310700000000000000000000000000000000027 -S315400310800000000000000000000000000000000017 -S315400310900000000000000000000000000000000007 -S315400310A000000000000000000000000000000000F7 -S315400310B000000000000000000000000000000000E7 -S315400310C000000000000000000000000000000000D7 -S315400310D000000000000000000000000000000000C7 -S315400310E000000000000000000000000000000000B7 -S315400310F000000000000000000000000000000000A7 -S315400311000000000000000000000000000000000096 -S315400311100000000000000000000000000000000086 -S315400311200000000000000000000000000000000076 -S315400311300000000000000000000000000000000066 -S315400311400000000000000000000000000000000056 -S315400311500000000000000000000000000000000046 -S315400311600000000000000000000000000000000036 -S315400311700000000000000000000000000000000026 -S315400311800000000000000000000000000000000016 -S315400311900000000000000000000000000000000006 -S315400311A000000000000000000000000000000000F6 -S315400311B000000000000000000000000000000000E6 -S315400311C000000000000000000000000000000000D6 -S315400311D000000000000000000000000000000000C6 -S315400311E000000000000000000000000000000000B6 -S315400311F000000000000000000000000000000000A6 -S315400312000000000000000000000000000000000095 -S315400312100000000000000000000000000000000085 -S315400312200000000000000000000000000000000075 -S315400312300000000000000000000000000000000065 -S315400312400000000000000000000000000000000055 -S315400312500000000000000000000000000000000045 -S315400312600000000000000000000000000000000035 -S315400312700000000000000000000000000000000025 -S315400312800000000000000000000000000000000015 -S315400312900000000000000000000000000000000005 -S315400312A000000000000000000000000000000000F5 -S315400312B000000000000000000000000000000000E5 -S315400312C000000000000000000000000000000000D5 -S315400312D000000000000000000000000000000000C5 -S315400312E000000000000000000000000000000000B5 -S315400312F000000000000000000000000000000000A5 -S315400313000000000000000000000000000000000094 -S315400313100000000000000000000000000000000084 -S315400313200000000000000000000000000000000074 -S315400313300000000000000000000000000000000064 -S315400313400000000000000000000000000000000054 -S315400313500000000000000000000000000000000044 -S315400313600000000000000000000000000000000034 -S315400313700000000000000000000000000000000024 -S315400313800000000000000000000000000000000014 -S315400313900000000000000000000000000000000004 -S315400313A000000000000000000000000000000000F4 -S315400313B000000000000000000000000000000000E4 -S315400313C000000000000000000000000000000000D4 -S315400313D000000000000000000000000000000000C4 -S315400313E000000000000000000000000000000000B4 -S315400313F000000000000000000000000000000000A4 -S315400314000000000000000000000000000000000093 -S315400314100000000000000000000000000000000083 -S315400314200000000000000000000000000000000073 -S315400314300000000000000000000000000000000063 -S315400314400000000000000000000000000000000053 -S315400314500000000000000000000000000000000043 -S315400314600000000000000000000000000000000033 -S315400314700000000000000000000000000000000023 -S315400314800000000000000000000000000000000013 -S315400314900000000000000000000000000000000003 -S315400314A000000000000000000000000000000000F3 -S315400314B000000000000000000000000000000000E3 -S315400314C000000000000000000000000000000000D3 -S315400314D000000000000000000000000000000000C3 -S315400314E000000000000000000000000000000000B3 -S315400314F000000000000000000000000000000000A3 -S315400315000000000000000000000000000000000092 -S315400315100000000000000000000000000000000082 -S315400315200000000000000000000000000000000072 -S315400315300000000000000000000000000000000062 -S315400315400000000000000000000000000000000052 -S315400315500000000000000000000000000000000042 -S315400315600000000000000000000000000000000032 -S315400315700000000000000000000000000000000022 -S315400315800000000000000000000000000000000012 -S315400315900000000000000000000000000000000002 -S315400315A000000000000000000000000000000000F2 -S315400315B000000000000000000000000000000000E2 -S315400315C000000000000000000000000000000000D2 -S315400315D000000000000000000000000000000000C2 -S315400315E000000000000000000000000000000000B2 -S315400315F000000000000000000000000000000000A2 -S315400316000000000000000000000000000000000091 -S315400316100000000000000000000000000000000081 -S315400316200000000000000000000000000000000071 -S315400316300000000000000000000000000000000061 -S315400316400000000000000000000000000000000051 -S315400316500000000000000000000000000000000041 -S315400316600000000000000000000000000000000031 -S315400316700000000000000000000000000000000021 -S315400316800000000000000000000000000000000011 -S315400316900000000000000000000000000000000001 -S315400316A000000000000000000000000000000000F1 -S315400316B000000000000000000000000000000000E1 -S315400316C000000000000000000000000000000000D1 -S315400316D000000000000000000000000000000000C1 -S315400316E000000000000000000000000000000000B1 -S315400316F000000000000000000000000000000000A1 -S315400317000000000000000000000000000000000090 -S315400317100000000000000000000000000000000080 -S315400317200000000000000000000000000000000070 -S315400317300000000000000000000000000000000060 -S315400317400000000000000000000000000000000050 -S315400317500000000000000000000000000000000040 -S315400317600000000000000000000000000000000030 -S315400317700000000000000000000000000000000020 -S315400317800000000000000000000000000000000010 -S315400317900000000000000000000000000000000000 -S315400317A000000000000000000000000000000000F0 -S315400317B000000000000000000000000000000000E0 -S315400317C000000000000000000000000000000000D0 -S315400317D000000000000000000000000000000000C0 -S315400317E000000000000000000000000000000000B0 -S315400317F000000000000000000000000000000000A0 -S31540031800000000000000000000000000000000008F -S31540031810000000000000000000000000000000007F -S31540031820000000000000000000000000000000006F -S31540031830000000000000000000000000000000005F -S31540031840000000000000000000000000000000004F -S31540031850000000000000000000000000000000003F -S31540031860000000000000000000000000000000002F -S31540031870000000000000000000000000000000001F -S31540031880000000000000000000000000000000000F -S3154003189000000000000000000000000000000000FF -S315400318A000000000000000000000000000000000EF -S315400318B000000000000000000000000000000000DF -S315400318C000000000000000000000000000000000CF -S315400318D000000000000000000000000000000000BF -S315400318E000000000000000000000000000000000AF -S315400318F0000000000000000000000000000000009F -S31540031900000000000000000000000000000000008E -S31540031910000000000000000000000000000000007E -S31540031920000000000000000000000000000000006E -S31540031930000000000000000000000000000000005E -S31540031940000000000000000000000000000000004E -S31540031950000000000000000000000000000000003E -S31540031960000000000000000000000000000000002E -S31540031970000000000000000000000000000000001E -S31540031980000000000000000000000000000000000E -S3154003199000000000000000000000000000000000FE -S315400319A000000000000000000000000000000000EE -S315400319B000000000000000000000000000000000DE -S315400319C000000000000000000000000000000000CE -S315400319D000000000000000000000000000000000BE -S315400319E000000000000000000000000000000000AE -S315400319F0000000000000000000000000000000009E -S31540031A00000000000000000000000000000000008D -S31540031A10000000000000000000000000000000007D -S31540031A20000000000000000000000000000000006D -S31540031A30000000000000000000000000000000005D -S31540031A40000000000000000000000000000000004D -S31540031A50000000000000000000000000000000003D -S31540031A60000000000000000000000000000000002D -S31540031A70000000000000000000000000000000001D -S31540031A80000000000000000000000000000000000D -S31540031A9000000000000000000000000000000000FD -S31540031AA000000000000000000000000000000000ED -S31540031AB000000000000000000000000000000000DD -S31540031AC000000000000000000000000000000000CD -S31540031AD000000000000000000000000000000000BD -S31540031AE000000000000000000000000000000000AD -S31540031AF0000000000000000000000000000000009D -S31540031B00000000000000000000000000000000008C -S31540031B10000000000000000000000000000000007C -S31540031B20000000000000000000000000000000006C -S31540031B30000000000000000000000000000000005C -S31540031B40000000000000000000000000000000004C -S31540031B50000000000000000000000000000000003C -S31540031B60000000000000000000000000000000002C -S31540031B70000000000000000000000000000000001C -S31540031B80000000000000000000000000000000000C -S31540031B9000000000000000000000000000000000FC -S31540031BA000000000000000000000000000000000EC -S31540031BB000000000000000000000000000000000DC -S31540031BC000000000000000000000000000000000CC -S31540031BD000000000000000000000000000000000BC -S31540031BE000000000000000000000000000000000AC -S31540031BF0000000000000000000000000000000009C -S31540031C00000000000000000000000000000000008B -S31540031C10000000000000000000000000000000007B -S31540031C20000000000000000000000000000000006B -S31540031C30000000000000000000000000000000005B -S31540031C40000000000000000000000000000000004B -S31540031C50000000000000000000000000000000003B -S31540031C60000000000000000000000000000000002B -S31540031C70000000000000000000000000000000001B -S31540031C80000000000000000000000000000000000B -S31540031C9000000000000000000000000000000000FB -S31540031CA000000000000000000000000000000000EB -S31540031CB000000000000000000000000000000000DB -S31540031CC000000000000000000000000000000000CB -S31540031CD000000000000000000000000000000000BB -S31540031CE000000000000000000000000000000000AB -S31540031CF0000000000000000000000000000000009B -S31540031D00000000000000000000000000000000008A -S31540031D10000000000000000000000000000000007A -S31540031D20000000000000000000000000000000006A -S31540031D30000000000000000000000000000000005A -S31540031D40000000000000000000000000000000004A -S31540031D50000000000000000000000000000000003A -S31540031D60000000000000000000000000000000002A -S31540031D70000000000000000000000000000000001A -S31540031D80000000000000000000000000000000000A -S31540031D9000000000000000000000000000000000FA -S31540031DA000000000000000000000000000000000EA -S31540031DB000000000000000000000000000000000DA -S31540031DC000000000000000000000000000000000CA -S31540031DD000000000000000000000000000000000BA -S31540031DE000000000000000000000000000000000AA -S31540031DF0000000000000000000000000000000009A -S31540031E000000000000000000000000000000000089 -S31540031E100000000000000000000000000000000079 -S31540031E200000000000000000000000000000000069 -S31540031E300000000000000000000000000000000059 -S31540031E400000000000000000000000000000000049 -S31540031E500000000000000000000000000000000039 -S31540031E600000000000000000000000000000000029 -S31540031E700000000000000000000000000000000019 -S31540031E800000000000000000000000000000000009 -S31540031E9000000000000000000000000000000000F9 -S31540031EA000000000000000000000000000000000E9 -S31540031EB000000000000000000000000000000000D9 -S31540031EC000000000000000000000000000000000C9 -S31540031ED000000000000000000000000000000000B9 -S31540031EE000000000000000000000000000000000A9 -S31540031EF00000000000000000000000000000000099 -S31540031F000000000000000000000000000000000088 -S31540031F100000000000000000000000000000000078 -S31540031F200000000000000000000000000000000068 -S31540031F300000000000000000000000000000000058 -S31540031F400000000000000000000000000000000048 -S31540031F500000000000000000000000000000000038 -S31540031F600000000000000000000000000000000028 -S31540031F700000000000000000000000000000000018 -S31540031F800000000000000000000000000000000008 -S31540031F9000000000000000000000000000000000F8 -S31540031FA000000000000000000000000000000000E8 -S31540031FB000000000000000000000000000000000D8 -S31540031FC000000000000000000000000000000000C8 -S31540031FD000000000000000000000000000000000B8 -S31540031FE000000000000000000000000000000000A8 -S31540031FF00000000000000000000000000000000098 -S315400320000000000000000000000000000000000087 -S315400320100000000000000000000000000000000077 -S315400320200000000000000000000000000000000067 -S315400320300000000000000000000000000000000057 -S315400320400000000000000000000000000000000047 -S315400320500000000000000000000000000000000037 -S315400320600000000000000000000000000000000027 -S315400320700000000000000000000000000000000017 -S315400320800000000000000000000000000000000007 -S3154003209000000000000000000000000000000000F7 -S315400320A000000000000000000000000000000000E7 -S315400320B000000000000000000000000000000000D7 -S315400320C000000000000000000000000000000000C7 -S315400320D000000000000000000000000000000000B7 -S315400320E000000000000000000000000000000000A7 -S315400320F00000000000000000000000000000000097 -S315400321000000000000000000000000000000000086 -S315400321100000000000000000000000000000000076 -S315400321200000000000000000000000000000000066 -S315400321300000000000000000000000000000000056 -S315400321400000000000000000000000000000000046 -S315400321500000000000000000000000000000000036 -S315400321600000000000000000000000000000000026 -S315400321700000000000000000000000000000000016 -S315400321800000000000000000000000000000000006 -S3154003219000000000000000000000000000000000F6 -S315400321A000000000000000000000000000000000E6 -S315400321B000000000000000000000000000000000D6 -S315400321C000000000000000000000000000000000C6 -S315400321D000000000000000000000000000000000B6 -S315400321E000000000000000000000000000000000A6 -S315400321F00000000000000000000000000000000096 -S315400322000000000000000000000000000000000085 -S315400322100000000000000000000000000000000075 -S315400322200000000000000000000000000000000065 -S315400322300000000000000000000000000000000055 -S315400322400000000000000000000000000000000045 -S315400322500000000000000000000000000000000035 -S315400322600000000000000000000000000000000025 -S315400322700000000000000000000000000000000015 -S315400322800000000000000000000000000000000005 -S3154003229000000000000000000000000000000000F5 -S315400322A000000000000000000000000000000000E5 -S315400322B000000000000000000000000000000000D5 -S315400322C000000000000000000000000000000000C5 -S315400322D000000000000000000000000000000000B5 -S315400322E000000000000000000000000000000000A5 -S315400322F00000000000000000000000000000000095 -S315400323000000000000000000000000000000000084 -S315400323100000000000000000000000000000000074 -S315400323200000000000000000000000000000000064 -S315400323300000000000000000000000000000000054 -S315400323400000000000000000000000000000000044 -S315400323500000000000000000000000000000000034 -S315400323600000000000000000000000000000000024 -S315400323700000000000000000000000000000000014 -S315400323800000000000000000000000000000000004 -S3154003239000000000000000000000000000000000F4 -S315400323A000000000000000000000000000000000E4 -S315400323B000000000000000000000000000000000D4 -S315400323C000000000000000000000000000000000C4 -S315400323D000000000000000000000000000000000B4 -S315400323E000000000000000000000000000000000A4 -S315400323F00000000000000000000000000000000094 -S315400324000000000000000000000000000000000083 -S315400324100000000000000000000000000000000073 -S315400324200000000000000000000000000000000063 -S315400324300000000000000000000000000000000053 -S315400324400000000000000000000000000000000043 -S315400324500000000000000000000000000000000033 -S315400324600000000000000000000000000000000023 -S315400324700000000000000000000000000000000013 -S315400324800000000000000000000000000000000003 -S3154003249000000000000000000000000000000000F3 -S315400324A000000000000000000000000000000000E3 -S315400324B000000000000000000000000000000000D3 -S315400324C000000000000000000000000000000000C3 -S315400324D000000000000000000000000000000000B3 -S315400324E000000000000000000000000000000000A3 -S315400324F00000000000000000000000000000000093 -S315400325000000000000000000000000000000000082 -S315400325100000000000000000000000000000000072 -S315400325200000000000000000000000000000000062 -S315400325300000000000000000000000000000000052 -S315400325400000000000000000000000000000000042 -S315400325500000000000000000000000000000000032 -S315400325600000000000000000000000000000000022 -S315400325700000000000000000000000000000000012 -S315400325800000000000000000000000000000000002 -S3154003259000000000000000000000000000000000F2 -S315400325A000000000000000000000000000000000E2 -S315400325B000000000000000000000000000000000D2 -S315400325C000000000000000000000000000000000C2 -S315400325D000000000000000000000000000000000B2 -S315400325E000000000000000000000000000000000A2 -S315400325F00000000000000000000000000000000092 -S315400326000000000000000000000000000000000081 -S315400326100000000000000000000000000000000071 -S315400326200000000000000000000000000000000061 -S315400326300000000000000000000000000000000051 -S315400326400000000000000000000000000000000041 -S315400326500000000000000000000000000000000031 -S315400326600000000000000000000000000000000021 -S315400326700000000000000000000000000000000011 -S315400326800000000000000000000000000000000001 -S3154003269000000000000000000000000000000000F1 -S315400326A000000000000000000000000000000000E1 -S315400326B000000000000000000000000000000000D1 -S315400326C000000000000000000000000000000000C1 -S315400326D000000000000000000000000000000000B1 -S315400326E000000000000000000000000000000000A1 -S315400326F00000000000000000000000000000000091 -S315400327000000000000000000000000000000000080 -S315400327100000000000000000000000000000000070 -S315400327200000000000000000000000000000000060 -S315400327300000000000000000000000000000000050 -S315400327400000000000000000000000000000000040 -S315400327500000000000000000000000000000000030 -S315400327600000000000000000000000000000000020 -S315400327700000000000000000000000000000000010 -S315400327800000000000000000000000000000000000 -S3154003279000000000000000000000000000000000F0 -S315400327A000000000000000000000000000000000E0 -S315400327B000000000000000000000000000000000D0 -S315400327C000000000000000000000000000000000C0 -S315400327D000000000000000000000000000000000B0 -S315400327E000000000000000000000000000000000A0 -S315400327F00000000000000000000000000000000090 -S31540032800000000000000000000000000000000007F -S31540032810000000000000000000000000000000006F -S31540032820000000000000000000000000000000005F -S31540032830000000000000000000000000000000004F -S31540032840000000000000000000000000000000003F -S31540032850000000000000000000000000000000002F -S31540032860000000000000000000000000000000001F -S31540032870000000000000000000000000000000000F -S3154003288000000000000000000000000000000000FF -S3154003289000000000000000000000000000000000EF -S315400328A000000000000000000000000000000000DF -S315400328B000000000000000000000000000000000CF -S315400328C000000000000000000000000000000000BF -S315400328D000000000000000000000000000000000AF -S315400328E0000000000000000000000000000000009F -S315400328F0000000000000000000000000000000008F -S31540032900000000000000000000000000000000007E -S31540032910000000000000000000000000000000006E -S31540032920000000000000000000000000000000005E -S31540032930000000000000000000000000000000004E -S31540032940000000000000000000000000000000003E -S31540032950000000000000000000000000000000002E -S31540032960000000000000000000000000000000001E -S31540032970000000000000000000000000000000000E -S3154003298000000000000000000000000000000000FE -S3154003299000000000000000000000000000000000EE -S315400329A000000000000000000000000000000000DE -S315400329B000000000000000000000000000000000CE -S315400329C000000000000000000000000000000000BE -S315400329D000000000000000000000000000000000AE -S315400329E0000000000000000000000000000000009E -S315400329F0000000000000000000000000000000008E -S31540032A00000000000000000000000000000000007D -S31540032A10000000000000000000000000000000006D -S31540032A20000000000000000000000000000000005D -S31540032A30000000000000000000000000000000004D -S31540032A40000000000000000000000000000000003D -S31540032A50000000000000000000000000000000002D -S31540032A60000000000000000000000000000000001D -S31540032A70000000000000000000000000000000000D -S31540032A8000000000000000000000000000000000FD -S31540032A9000000000000000000000000000000000ED -S31540032AA000000000000000000000000000000000DD -S31540032AB000000000000000000000000000000000CD -S31540032AC000000000000000000000000000000000BD -S31540032AD000000000000000000000000000000000AD -S31540032AE0000000000000000000000000000000009D -S31540032AF0000000000000000000000000000000008D -S31540032B00000000000000000000000000000000007C -S31540032B10000000000000000000000000000000006C -S31540032B20000000000000000000000000000000005C -S31540032B30000000000000000000000000000000004C -S31540032B40000000000000000000000000000000003C -S31540032B50000000000000000000000000000000002C -S31540032B60000000000000000000000000000000001C -S31540032B70000000000000000000000000000000000C -S31540032B8000000000000000000000000000000000FC -S31540032B9000000000000000000000000000000000EC -S31540032BA000000000000000000000000000000000DC -S31540032BB000000000000000000000000000000000CC -S31540032BC000000000000000000000000000000000BC -S31540032BD000000000000000000000000000000000AC -S31540032BE0000000000000000000000000000000009C -S31540032BF0000000000000000000000000000000008C -S31540032C00000000000000000000000000000000007B -S31540032C10000000000000000000000000000000006B -S31540032C20000000000000000000000000000000005B -S31540032C30000000000000000000000000000000004B -S31540032C40000000000000000000000000000000003B -S31540032C50000000000000000000000000000000002B -S31540032C60000000000000000000000000000000001B -S31540032C70000000000000000000000000000000000B -S31540032C8000000000000000000000000000000000FB -S31540032C9000000000000000000000000000000000EB -S31540032CA000000000000000000000000000000000DB -S31540032CB000000000000000000000000000000000CB -S31540032CC000000000000000000000000000000000BB -S31540032CD000000000000000000000000000000000AB -S31540032CE0000000000000000000000000000000009B -S31540032CF0000000000000000000000000000000008B -S31540032D00000000000000000000000000000000007A -S31540032D10000000000000000000000000000000006A -S31540032D20000000000000000000000000000000005A -S31540032D30000000000000000000000000000000004A -S31540032D40000000000000000000000000000000003A -S31540032D50000000000000000000000000000000002A -S31540032D60000000000000000000000000000000001A -S31540032D70000000000000000000000000000000000A -S31540032D8000000000000000000000000000000000FA -S31540032D9000000000000000000000000000000000EA -S31540032DA000000000000000000000000000000000DA -S31540032DB000000000000000000000000000000000CA -S31540032DC000000000000000000000000000000000BA -S31540032DD000000000000000000000000000000000AA -S31540032DE0000000000000000000000000000000009A -S31540032DF0000000000000000000000000000000008A -S31540032E000000000000000000000000000000000079 -S31540032E100000000000000000000000000000000069 -S31540032E200000000000000000000000000000000059 -S31540032E300000000000000000000000000000000049 -S31540032E400000000000000000000000000000000039 -S31540032E500000000000000000000000000000000029 -S31540032E600000000000000000000000000000000019 -S31540032E700000000000000000000000000000000009 -S31540032E8000000000000000000000000000000000F9 -S31540032E9000000000000000000000000000000000E9 -S31540032EA000000000000000000000000000000000D9 -S31540032EB000000000000000000000000000000000C9 -S31540032EC000000000000000000000000000000000B9 -S31540032ED000000000000000000000000000000000A9 -S31540032EE00000000000000000000000000000000099 -S31540032EF00000000000000000000000000000000089 -S31540032F000000000000000000000000000000000078 -S31540032F100000000000000000000000000000000068 -S31540032F200000000000000000000000000000000058 -S31540032F300000000000000000000000000000000048 -S31540032F400000000000000000000000000000000038 -S31540032F500000000000000000000000000000000028 -S31540032F600000000000000000000000000000000018 -S31540032F700000000000000000000000000000000008 -S31540032F8000000000000000000000000000000000F8 -S31540032F9000000000000000000000000000000000E8 -S31540032FA000000000000000000000000000000000D8 -S31540032FB000000000000000000000000000000000C8 -S31540032FC000000000000000000000000000000000B8 -S31540032FD000000000000000000000000000000000A8 -S31540032FE00000000000000000000000000000000098 -S31540032FF00000000000000000000000000000000088 -S315400330000000000000000000000000000000000077 -S315400330100000000000000000000000000000000067 -S315400330200000000000000000000000000000000057 -S315400330300000000000000000000000000000000047 -S315400330400000000000000000000000000000000037 -S315400330500000000000000000000000000000000027 -S315400330600000000000000000000000000000000017 -S315400330700000000000000000000000000000000007 -S3154003308000000000000000000000000000000000F7 -S3154003309000000000000000000000000000000000E7 -S315400330A000000000000000000000000000000000D7 -S315400330B000000000000000000000000000000000C7 -S315400330C000000000000000000000000000000000B7 -S315400330D000000000000000000000000000000000A7 -S315400330E00000000000000000000000000000000097 -S315400330F00000000000000000000000000000000087 -S315400331000000000000000000000000000000000076 -S315400331100000000000000000000000000000000066 -S315400331200000000000000000000000000000000056 -S315400331300000000000000000000000000000000046 -S315400331400000000000000000000000000000000036 -S315400331500000000000000000000000000000000026 -S315400331600000000000000000000000000000000016 -S315400331700000000000000000000000000000000006 -S3154003318000000000000000000000000000000000F6 -S3154003319000000000000000000000000000000000E6 -S315400331A000000000000000000000000000000000D6 -S315400331B000000000000000000000000000000000C6 -S315400331C000000000000000000000000000000000B6 -S315400331D000000000000000000000000000000000A6 -S315400331E00000000000000000000000000000000096 -S315400331F00000000000000000000000000000000086 -S315400332000000000000000000000000000000000075 -S315400332100000000000000000000000000000000065 -S315400332200000000000000000000000000000000055 -S315400332300000000000000000000000000000000045 -S315400332400000000000000000000000000000000035 -S315400332500000000000000000000000000000000025 -S315400332600000000000000000000000000000000015 -S315400332700000000000000000000000000000000005 -S3154003328000000000000000000000000000000000F5 -S3154003329000000000000000000000000000000000E5 -S315400332A000000000000000000000000000000000D5 -S315400332B000000000000000000000000000000000C5 -S315400332C000000000000000000000000000000000B5 -S315400332D000000000000000000000000000000000A5 -S315400332E00000000000000000000000000000000095 -S315400332F00000000000000000000000000000000085 -S315400333000000000000000000000000000000000074 -S315400333100000000000000000000000000000000064 -S315400333200000000000000000000000000000000054 -S315400333300000000000000000000000000000000044 -S315400333400000000000000000000000000000000034 -S315400333500000000000000000000000000000000024 -S315400333600000000000000000000000000000000014 -S315400333700000000000000000000000000000000004 -S3154003338000000000000000000000000000000000F4 -S3154003339000000000000000000000000000000000E4 -S315400333A000000000000000000000000000000000D4 -S315400333B000000000000000000000000000000000C4 -S315400333C000000000000000000000000000000000B4 -S315400333D000000000000000000000000000000000A4 -S315400333E00000000000000000000000000000000094 -S315400333F00000000000000000000000000000000084 -S315400334000000000000000000000000000000000073 -S315400334100000000000000000000000000000000063 -S315400334200000000000000000000000000000000053 -S315400334300000000000000000000000000000000043 -S315400334400000000000000000000000000000000033 -S315400334500000000000000000000000000000000023 -S315400334600000000000000000000000000000000013 -S315400334700000000000000000000000000000000003 -S3154003348000000000000000000000000000000000F3 -S3154003349000000000000000000000000000000000E3 -S315400334A000000000000000000000000000000000D3 -S315400334B000000000000000000000000000000000C3 -S315400334C000000000000000000000000000000000B3 -S315400334D000000000000000000000000000000000A3 -S315400334E00000000000000000000000000000000093 -S315400334F00000000000000000000000000000000083 -S315400335000000000000000000000000000000000072 -S315400335100000000000000000000000000000000062 -S315400335200000000000000000000000000000000052 -S315400335300000000000000000000000000000000042 -S315400335400000000000000000000000000000000032 -S315400335500000000000000000000000000000000022 -S315400335600000000000000000000000000000000012 -S315400335700000000000000000000000000000000002 -S3154003358000000000000000000000000000000000F2 -S3154003359000000000000000000000000000000000E2 -S315400335A000000000000000000000000000000000D2 -S315400335B000000000000000000000000000000000C2 -S315400335C000000000000000000000000000000000B2 -S315400335D000000000000000000000000000000000A2 -S315400335E00000000000000000000000000000000092 -S315400335F00000000000000000000000000000000082 -S315400336000000000000000000000000000000000071 -S315400336100000000000000000000000000000000061 -S315400336200000000000000000000000000000000051 -S315400336300000000000000000000000000000000041 -S315400336400000000000000000000000000000000031 -S315400336500000000000000000000000000000000021 -S315400336600000000000000000000000000000000011 -S315400336700000000000000000000000000000000001 -S3154003368000000000000000000000000000000000F1 -S3154003369000000000000000000000000000000000E1 -S315400336A000000000000000000000000000000000D1 -S315400336B000000000000000000000000000000000C1 -S315400336C000000000000000000000000000000000B1 -S315400336D000000000000000000000000000000000A1 -S315400336E00000000000000000000000000000000091 -S315400336F00000000000000000000000000000000081 -S315400337000000000000000000000000000000000070 -S315400337100000000000000000000000000000000060 -S315400337200000000000000000000000000000000050 -S315400337300000000000000000000000000000000040 -S315400337400000000000000000000000000000000030 -S315400337500000000000000000000000000000000020 -S315400337600000000000000000000000000000000010 -S315400337700000000000000000000000000000000000 -S3154003378000000000000000000000000000000000F0 -S3154003379000000000000000000000000000000000E0 -S315400337A000000000000000000000000000000000D0 -S315400337B000000000000000000000000000000000C0 -S315400337C000000000000000000000000000000000B0 -S315400337D000000000000000000000000000000000A0 -S315400337E00000000000000000000000000000000090 -S315400337F00000000000000000000000000000000080 -S31540033800000000000000000000000000000000006F -S31540033810000000000000000000000000000000005F -S31540033820000000000000000000000000000000004F -S31540033830000000000000000000000000000000003F -S31540033840000000000000000000000000000000002F -S31540033850000000000000000000000000000000001F -S31540033860000000000000000000000000000000000F -S3154003387000000000000000000000000000000000FF -S3154003388000000000000000000000000000000000EF -S3154003389000000000000000000000000000000000DF -S315400338A000000000000000000000000000000000CF -S315400338B000000000000000000000000000000000BF -S315400338C000000000000000000000000000000000AF -S315400338D0000000000000000000000000000000009F -S315400338E0000000000000000000000000000000008F -S315400338F0000000000000000000000000000000007F -S31540033900000000000000000000000000000000006E -S31540033910000000000000000000000000000000005E -S31540033920000000000000000000000000000000004E -S31540033930000000000000000000000000000000003E -S31540033940000000000000000000000000000000002E -S31540033950000000000000000000000000000000001E -S31540033960000000000000000000000000000000000E -S3154003397000000000000000000000000000000000FE -S3154003398000000000000000000000000000000000EE -S3154003399000000000000000000000000000000000DE -S315400339A000000000000000000000000000000000CE -S315400339B000000000000000000000000000000000BE -S315400339C000000000000000000000000000000000AE -S315400339D0000000000000000000000000000000009E -S315400339E0000000000000000000000000000000008E -S315400339F0000000000000000000000000000000007E -S31540033A00000000000000000000000000000000006D -S31540033A10000000000000000000000000000000005D -S31540033A20000000000000000000000000000000004D -S31540033A30000000000000000000000000000000003D -S31540033A40000000000000000000000000000000002D -S31540033A50000000000000000000000000000000001D -S31540033A60000000000000000000000000000000000D -S31540033A7000000000000000000000000000000000FD -S31540033A8000000000000000000000000000000000ED -S31540033A9000000000000000000000000000000000DD -S31540033AA000000000000000000000000000000000CD -S31540033AB000000000000000000000000000000000BD -S31540033AC000000000000000000000000000000000AD -S31540033AD0000000000000000000000000000000009D -S31540033AE0000000000000000000000000000000008D -S31540033AF0000000000000000000000000000000007D -S31540033B00000000000000000000000000000000006C -S31540033B10000000000000000000000000000000005C -S31540033B20000000000000000000000000000000004C -S31540033B30000000000000000000000000000000003C -S31540033B40000000000000000000000000000000002C -S31540033B50000000000000000000000000000000001C -S31540033B60000000000000000000000000000000000C -S31540033B7000000000000000000000000000000000FC -S31540033B8000000000000000000000000000000000EC -S31540033B9000000000000000000000000000000000DC -S31540033BA000000000000000000000000000000000CC -S31540033BB000000000000000000000000000000000BC -S31540033BC000000000000000000000000000000000AC -S31540033BD0000000000000000000000000000000009C -S31540033BE0000000000000000000000000000000008C -S31540033BF0000000000000000000000000000000007C -S31540033C00000000000000000000000000000000006B -S31540033C10000000000000000000000000000000005B -S31540033C20000000000000000000000000000000004B -S31540033C30000000000000000000000000000000003B -S31540033C40000000000000000000000000000000002B -S31540033C50000000000000000000000000000000001B -S31540033C60000000000000000000000000000000000B -S31540033C7000000000000000000000000000000000FB -S31540033C8000000000000000000000000000000000EB -S31540033C9000000000000000000000000000000000DB -S31540033CA000000000000000000000000000000000CB -S31540033CB000000000000000000000000000000000BB -S31540033CC000000000000000000000000000000000AB -S31540033CD0000000000000000000000000000000009B -S31540033CE0000000000000000000000000000000008B -S31540033CF0000000000000000000000000000000007B -S31540033D00000000000000000000000000000000006A -S31540033D10000000000000000000000000000000005A -S31540033D20000000000000000000000000000000004A -S31540033D30000000000000000000000000000000003A -S31540033D40000000000000000000000000000000002A -S31540033D50000000000000000000000000000000001A -S31540033D60000000000000000000000000000000000A -S31540033D7000000000000000000000000000000000FA -S31540033D8000000000000000000000000000000000EA -S31540033D9000000000000000000000000000000000DA -S31540033DA000000000000000000000000000000000CA -S31540033DB000000000000000000000000000000000BA -S31540033DC000000000000000000000000000000000AA -S31540033DD0000000000000000000000000000000009A -S31540033DE0000000000000000000000000000000008A -S31540033DF0000000000000000000000000000000007A -S31540033E000000000000000000000000000000000069 -S31540033E100000000000000000000000000000000059 -S31540033E200000000000000000000000000000000049 -S31540033E300000000000000000000000000000000039 -S31540033E400000000000000000000000000000000029 -S31540033E500000000000000000000000000000000019 -S31540033E600000000000000000000000000000000009 -S31540033E7000000000000000000000000000000000F9 -S31540033E8000000000000000000000000000000000E9 -S31540033E9000000000000000000000000000000000D9 -S31540033EA000000000000000000000000000000000C9 -S31540033EB000000000000000000000000000000000B9 -S31540033EC000000000000000000000000000000000A9 -S31540033ED00000000000000000000000000000000099 -S31540033EE00000000000000000000000000000000089 -S31540033EF00000000000000000000000000000000079 -S31540033F000000000000000000000000000000000068 -S31540033F100000000000000000000000000000000058 -S31540033F200000000000000000000000000000000048 -S31540033F300000000000000000000000000000000038 -S31540033F400000000000000000000000000000000028 -S31540033F500000000000000000000000000000000018 -S31540033F600000000000000000000000000000000008 -S31540033F7000000000000000000000000000000000F8 -S31540033F8000000000000000000000000000000000E8 -S31540033F9000000000000000000000000000000000D8 -S31540033FA000000000000000000000000000000000C8 -S31540033FB000000000000000000000000000000000B8 -S31540033FC000000000000000000000000000000000A8 -S31540033FD00000000000000000000000000000000098 -S31540033FE00000000000000000000000000000000088 -S31540033FF00000000000000000000000000000000078 -S315400340000000000000000000000000000000000067 -S315400340100000000000000000000000000000000057 -S315400340200000000000000000000000000000000047 -S315400340300000000000000000000000000000000037 -S315400340400000000000000000000000000000000027 -S315400340500000000000000000000000000000000017 -S315400340600000000000000000000000000000000007 -S3154003407000000000000000000000000000000000F7 -S3154003408000000000000000000000000000000000E7 -S3154003409000000000000000000000000000000000D7 -S315400340A000000000000000000000000000000000C7 -S315400340B000000000000000000000000000000000B7 -S315400340C000000000000000000000000000000000A7 -S315400340D00000000000000000000000000000000097 -S315400340E00000000000000000000000000000000087 -S315400340F00000000000000000000000000000000077 -S315400341000000000000000000000000000000000066 -S315400341100000000000000000000000000000000056 -S315400341200000000000000000000000000000000046 -S315400341300000000000000000000000000000000036 -S315400341400000000000000000000000000000000026 -S315400341500000000000000000000000000000000016 -S315400341600000000000000000000000000000000006 -S3154003417000000000000000000000000000000000F6 -S3154003418000000000000000000000000000000000E6 -S3154003419000000000000000000000000000000000D6 -S315400341A000000000000000000000000000000000C6 -S315400341B000000000000000000000000000000000B6 -S315400341C000000000000000000000000000000000A6 -S315400341D00000000000000000000000000000000096 -S315400341E00000000000000000000000000000000086 -S315400341F00000000000000000000000000000000076 -S315400342000000000000000000000000000000000065 -S315400342100000000000000000000000000000000055 -S315400342200000000000000000000000000000000045 -S315400342300000000000000000000000000000000035 -S315400342400000000000000000000000000000000025 -S315400342500000000000000000000000000000000015 -S315400342600000000000000000000000000000000005 -S3154003427000000000000000000000000000000000F5 -S3154003428000000000000000000000000000000000E5 -S3154003429000000000000000000000000000000000D5 -S315400342A000000000000000000000000000000000C5 -S315400342B000000000000000000000000000000000B5 -S315400342C000000000000000000000000000000000A5 -S315400342D00000000000000000000000000000000095 -S315400342E00000000000000000000000000000000085 -S315400342F00000000000000000000000000000000075 -S315400343000000000000000000000000000000000064 -S315400343100000000000000000000000000000000054 -S315400343200000000000000000000000000000000044 -S315400343300000000000000000000000000000000034 -S315400343400000000000000000000000000000000024 -S315400343500000000000000000000000000000000014 -S315400343600000000000000000000000000000000004 -S3154003437000000000000000000000000000000000F4 -S3154003438000000000000000000000000000000000E4 -S3154003439000000000000000000000000000000000D4 -S315400343A000000000000000000000000000000000C4 -S315400343B000000000000000000000000000000000B4 -S315400343C000000000000000000000000000000000A4 -S315400343D00000000000000000000000000000000094 -S315400343E00000000000000000000000000000000084 -S315400343F00000000000000000000000000000000074 -S315400344000000000000000000000000000000000063 -S315400344100000000000000000000000000000000053 -S315400344200000000000000000000000000000000043 -S315400344300000000000000000000000000000000033 -S315400344400000000000000000000000000000000023 -S315400344500000000000000000000000000000000013 -S315400344600000000000000000000000000000000003 -S3154003447000000000000000000000000000000000F3 -S3154003448000000000000000000000000000000000E3 -S3154003449000000000000000000000000000000000D3 -S315400344A000000000000000000000000000000000C3 -S315400344B000000000000000000000000000000000B3 -S315400344C000000000000000000000000000000000A3 -S315400344D00000000000000000000000000000000093 -S315400344E00000000000000000000000000000000083 -S315400344F00000000000000000000000000000000073 -S315400345000000000000000000000000000000000062 -S315400345100000000000000000000000000000000052 -S315400345200000000000000000000000000000000042 -S315400345300000000000000000000000000000000032 -S315400345400000000000000000000000000000000022 -S315400345500000000000000000000000000000000012 -S315400345600000000000000000000000000000000002 -S3154003457000000000000000000000000000000000F2 -S3154003458000000000000000000000000000000000E2 -S3154003459000000000000000000000000000000000D2 -S315400345A000000000000000000000000000000000C2 -S315400345B000000000000000000000000000000000B2 -S315400345C000000000000000000000000000000000A2 -S315400345D00000000000000000000000000000000092 -S315400345E00000000000000000000000000000000082 -S315400345F00000000000000000000000000000000072 -S315400346000000000000000000000000000000000061 -S315400346100000000000000000000000000000000051 -S315400346200000000000000000000000000000000041 -S315400346300000000000000000000000000000000031 -S315400346400000000000000000000000000000000021 -S315400346500000000000000000000000000000000011 -S315400346600000000000000000000000000000000001 -S3154003467000000000000000000000000000000000F1 -S3154003468000000000000000000000000000000000E1 -S3154003469000000000000000000000000000000000D1 -S315400346A000000000000000000000000000000000C1 -S315400346B000000000000000000000000000000000B1 -S315400346C000000000000000000000000000000000A1 -S315400346D00000000000000000000000000000000091 -S315400346E00000000000000000000000000000000081 -S315400346F00000000000000000000000000000000071 -S315400347000000000000000000000000000000000060 -S315400347100000000000000000000000000000000050 -S315400347200000000000000000000000000000000040 -S315400347300000000000000000000000000000000030 -S315400347400000000000000000000000000000000020 -S315400347500000000000000000000000000000000010 -S315400347600000000000000000000000000000000000 -S3154003477000000000000000000000000000000000F0 -S3154003478000000000000000000000000000000000E0 -S3154003479000000000000000000000000000000000D0 -S315400347A000000000000000000000000000000000C0 -S315400347B000000000000000000000000000000000B0 -S315400347C000000000000000000000000000000000A0 -S315400347D00000000000000000000000000000000090 -S315400347E00000000000000000000000000000000080 -S315400347F00000000000000000000000000000000070 -S31540034800000000000000000000000000000000005F -S31540034810000000000000000000000000000000004F -S31540034820000000000000000000000000000000003F -S31540034830000000000000000000000000000000002F -S31540034840000000000000000000000000000000001F -S31540034850000000000000000000000000000000000F -S3154003486000000000000000000000000000000000FF -S3154003487000000000000000000000000000000000EF -S3154003488000000000000000000000000000000000DF -S3154003489000000000000000000000000000000000CF -S315400348A000000000000000000000000000000000BF -S315400348B000000000000000000000000000000000AF -S315400348C0000000000000000000000000000000009F -S315400348D0000000000000000000000000000000008F -S315400348E0000000000000000000000000000000007F -S315400348F0000000000000000000000000000000006F -S31540034900000000000000000000000000000000005E -S31540034910000000000000000000000000000000004E -S31540034920000000000000000000000000000000003E -S31540034930000000000000000000000000000000002E -S31540034940000000000000000000000000000000001E -S31540034950000000000000000000000000000000000E -S3154003496000000000000000000000000000000000FE -S3154003497000000000000000000000000000000000EE -S3154003498000000000000000000000000000000000DE -S3154003499000000000000000000000000000000000CE -S315400349A000000000000000000000000000000000BE -S315400349B000000000000000000000000000000000AE -S315400349C0000000000000000000000000000000009E -S315400349D0000000000000000000000000000000008E -S315400349E0000000000000000000000000000000007E -S315400349F0000000000000000000000000000000006E -S31540034A00000000000000000000000000000000005D -S31540034A10000000000000000000000000000000004D -S31540034A20000000000000000000000000000000003D -S31540034A30000000000000000000000000000000002D -S31540034A40000000000000000000000000000000001D -S31540034A50000000000000000000000000000000000D -S31540034A6000000000000000000000000000000000FD -S31540034A7000000000000000000000000000000000ED -S31540034A8000000000000000000000000000000000DD -S31540034A9000000000000000000000000000000000CD -S31540034AA000000000000000000000000000000000BD -S31540034AB000000000000000000000000000000000AD -S31540034AC0000000000000000000000000000000009D -S31540034AD0000000000000000000000000000000008D -S31540034AE0000000000000000000000000000000007D -S31540034AF0000000000000000000000000000000006D -S31540034B00000000000000000000000000000000005C -S31540034B10000000000000000000000000000000004C -S31540034B20000000000000000000000000000000003C -S31540034B30000000000000000000000000000000002C -S31540034B40000000000000000000000000000000001C -S31540034B50000000000000000000000000000000000C -S31540034B6000000000000000000000000000000000FC -S31540034B7000000000000000000000000000000000EC -S31540034B8000000000000000000000000000000000DC -S31540034B9000000000000000000000000000000000CC -S31540034BA000000000000000000000000000000000BC -S31540034BB000000000000000000000000000000000AC -S31540034BC0000000000000000000000000000000009C -S31540034BD0000000000000000000000000000000008C -S31540034BE0000000000000000000000000000000007C -S31540034BF0000000000000000000000000000000006C -S31540034C00000000000000000000000000000000005B -S31540034C10000000000000000000000000000000004B -S31540034C20000000000000000000000000000000003B -S31540034C30000000000000000000000000000000002B -S31540034C40000000000000000000000000000000001B -S31540034C50000000000000000000000000000000000B -S31540034C6000000000000000000000000000000000FB -S31540034C7000000000000000000000000000000000EB -S31540034C8000000000000000000000000000000000DB -S31540034C9000000000000000000000000000000000CB -S31540034CA000000000000000000000000000000000BB -S31540034CB000000000000000000000000000000000AB -S31540034CC0000000000000000000000000000000009B -S31540034CD0000000000000000000000000000000008B -S31540034CE0000000000000000000000000000000007B -S31540034CF0000000000000000000000000000000006B -S31540034D00000000000000000000000000000000005A -S31540034D10000000000000000000000000000000004A -S31540034D20000000000000000000000000000000003A -S31540034D30000000000000000000000000000000002A -S31540034D40000000000000000000000000000000001A -S31540034D50000000000000000000000000000000000A -S31540034D6000000000000000000000000000000000FA -S31540034D7000000000000000000000000000000000EA -S31540034D8000000000000000000000000000000000DA -S31540034D9000000000000000000000000000000000CA -S31540034DA000000000000000000000000000000000BA -S31540034DB000000000000000000000000000000000AA -S31540034DC0000000000000000000000000000000009A -S31540034DD0000000000000000000000000000000008A -S31540034DE0000000000000000000000000000000007A -S31540034DF0000000000000000000000000000000006A -S31540034E000000000000000000000000000000000059 -S31540034E100000000000000000000000000000000049 -S31540034E200000000000000000000000000000000039 -S31540034E300000000000000000000000000000000029 -S31540034E400000000000000000000000000000000019 -S31540034E500000000000000000000000000000000009 -S31540034E6000000000000000000000000000000000F9 -S31540034E7000000000000000000000000000000000E9 -S31540034E8000000000000000000000000000000000D9 -S31540034E9000000000000000000000000000000000C9 -S31540034EA000000000000000000000000000000000B9 -S31540034EB000000000000000000000000000000000A9 -S31540034EC00000000000000000000000000000000099 -S31540034ED00000000000000000000000000000000089 -S31540034EE00000000000000000000000000000000079 -S31540034EF00000000000000000000000000000000069 -S31540034F000000000000000000000000000000000058 -S31540034F100000000000000000000000000000000048 -S31540034F200000000000000000000000000000000038 -S31540034F300000000000000000000000000000000028 -S31540034F400000000000000000000000000000000018 -S31540034F500000000000000000000000000000000008 -S31540034F6000000000000000000000000000000000F8 -S31540034F7000000000000000000000000000000000E8 -S31540034F8000000000000000000000000000000000D8 -S31540034F9000000000000000000000000000000000C8 -S31540034FA000000000000000000000000000000000B8 -S31540034FB000000000000000000000000000000000A8 -S31540034FC00000000000000000000000000000000098 -S31540034FD00000000000000000000000000000000088 -S31540034FE00000000000000000000000000000000078 -S31540034FF00000000000000000000000000000000068 -S315400350000000000000000000000000000000000057 -S315400350100000000000000000000000000000000047 -S315400350200000000000000000000000000000000037 -S315400350300000000000000000000000000000000027 -S315400350400000000000000000000000000000000017 -S315400350500000000000000000000000000000000007 -S3154003506000000000000000000000000000000000F7 -S3154003507000000000000000000000000000000000E7 -S3154003508000000000000000000000000000000000D7 -S3154003509000000000000000000000000000000000C7 -S315400350A000000000000000000000000000000000B7 -S315400350B000000000000000000000000000000000A7 -S315400350C00000000000000000000000000000000097 -S315400350D00000000000000000000000000000000087 -S315400350E00000000000000000000000000000000077 -S315400350F00000000000000000000000000000000067 -S315400351000000000000000000000000000000000056 -S315400351100000000000000000000000000000000046 -S315400351200000000000000000000000000000000036 -S315400351300000000000000000000000000000000026 -S315400351400000000000000000000000000000000016 -S315400351500000000000000000000000000000000006 -S3154003516000000000000000000000000000000000F6 -S3154003517000000000000000000000000000000000E6 -S3154003518000000000000000000000000000000000D6 -S3154003519000000000000000000000000000000000C6 -S315400351A000000000000000000000000000000000B6 -S315400351B000000000000000000000000000000000A6 -S315400351C00000000000000000000000000000000096 -S315400351D00000000000000000000000000000000086 -S315400351E00000000000000000000000000000000076 -S315400351F00000000000000000000000000000000066 -S315400352000000000000000000000000000000000055 -S315400352100000000000000000000000000000000045 -S315400352200000000000000000000000000000000035 -S315400352300000000000000000000000000000000025 -S315400352400000000000000000000000000000000015 -S315400352500000000000000000000000000000000005 -S3154003526000000000000000000000000000000000F5 -S3154003527000000000000000000000000000000000E5 -S3154003528000000000000000000000000000000000D5 -S3154003529000000000000000000000000000000000C5 -S315400352A000000000000000000000000000000000B5 -S315400352B000000000000000000000000000000000A5 -S315400352C00000000000000000000000000000000095 -S315400352D00000000000000000000000000000000085 -S315400352E00000000000000000000000000000000075 -S315400352F00000000000000000000000000000000065 -S315400353000000000000000000000000000000000054 -S315400353100000000000000000000000000000000044 -S315400353200000000000000000000000000000000034 -S315400353300000000000000000000000000000000024 -S315400353400000000000000000000000000000000014 -S315400353500000000000000000000000000000000004 -S3154003536000000000000000000000000000000000F4 -S3154003537000000000000000000000000000000000E4 -S3154003538000000000000000000000000000000000D4 -S3154003539000000000000000000000000000000000C4 -S315400353A000000000000000000000000000000000B4 -S315400353B000000000000000000000000000000000A4 -S315400353C00000000000000000000000000000000094 -S315400353D00000000000000000000000000000000084 -S315400353E00000000000000000000000000000000074 -S315400353F00000000000000000000000000000000064 -S315400354000000000000000000000000000000000053 -S315400354100000000000000000000000000000000043 -S315400354200000000000000000000000000000000033 -S315400354300000000000000000000000000000000023 -S315400354400000000000000000000000000000000013 -S315400354500000000000000000000000000000000003 -S3154003546000000000000000000000000000000000F3 -S3154003547000000000000000000000000000000000E3 -S3154003548000000000000000000000000000000000D3 -S3154003549000000000000000000000000000000000C3 -S315400354A000000000000000000000000000000000B3 -S315400354B000000000000000000000000000000000A3 -S315400354C00000000000000000000000000000000093 -S315400354D00000000000000000000000000000000083 -S315400354E00000000000000000000000000000000073 -S315400354F00000000000000000000000000000000063 -S315400355000000000000000000000000000000000052 -S315400355100000000000000000000000000000000042 -S315400355200000000000000000000000000000000032 -S315400355300000000000000000000000000000000022 -S315400355400000000000000000000000000000000012 -S315400355500000000000000000000000000000000002 -S3154003556000000000000000000000000000000000F2 -S3154003557000000000000000000000000000000000E2 -S3154003558000000000000000000000000000000000D2 -S3154003559000000000000000000000000000000000C2 -S315400355A000000000000000000000000000000000B2 -S315400355B000000000000000000000000000000000A2 -S315400355C00000000000000000000000000000000092 -S315400355D00000000000000000000000000000000082 -S315400355E00000000000000000000000000000000072 -S315400355F00000000000000000000000000000000062 -S315400356000000000000000000000000000000000051 -S315400356100000000000000000000000000000000041 -S315400356200000000000000000000000000000000031 -S315400356300000000000000000000000000000000021 -S315400356400000000000000000000000000000000011 -S315400356500000000000000000000000000000000001 -S3154003566000000000000000000000000000000000F1 -S3154003567000000000000000000000000000000000E1 -S3154003568000000000000000000000000000000000D1 -S3154003569000000000000000000000000000000000C1 -S315400356A000000000000000000000000000000000B1 -S315400356B000000000000000000000000000000000A1 -S315400356C00000000000000000000000000000000091 -S315400356D00000000000000000000000000000000081 -S315400356E00000000000000000000000000000000071 -S315400356F00000000000000000000000000000000061 -S315400357000000000000000000000000000000000050 -S315400357100000000000000000000000000000000040 -S315400357200000000000000000000000000000000030 -S315400357300000000000000000000000000000000020 -S315400357400000000000000000000000000000000010 -S315400357500000000000000000000000000000000000 -S3154003576000000000000000000000000000000000F0 -S3154003577000000000000000000000000000000000E0 -S3154003578000000000000000000000000000000000D0 -S3154003579000000000000000000000000000000000C0 -S315400357A000000000000000000000000000000000B0 -S315400357B000000000000000000000000000000000A0 -S315400357C00000000000000000000000000000000090 -S315400357D00000000000000000000000000000000080 -S315400357E00000000000000000000000000000000070 -S315400357F00000000000000000000000000000000060 -S31540035800000000000000000000000000000000004F -S31540035810000000000000000000000000000000003F -S31540035820000000000000000000000000000000002F -S31540035830000000000000000000000000000000001F -S31540035840000000000000000000000000000000000F -S3154003585000000000000000000000000000000000FF -S3154003586000000000000000000000000000000000EF -S3154003587000000000000000000000000000000000DF -S3154003588000000000000000000000000000000000CF -S3154003589000000000000000000000000000000000BF -S315400358A000000000000000000000000000000000AF -S315400358B0000000000000000000000000000000009F -S315400358C0000000000000000000000000000000008F -S315400358D0000000000000000000000000000000007F -S315400358E0000000000000000000000000000000006F -S315400358F0000000000000000000000000000000005F -S31540035900000000000000000000000000000000004E -S31540035910000000000000000000000000000000003E -S31540035920000000000000000000000000000000002E -S31540035930000000000000000000000000000000001E -S31540035940000000000000000000000000000000000E -S3154003595000000000000000000000000000000000FE -S3154003596000000000000000000000000000000000EE -S3154003597000000000000000000000000000000000DE -S3154003598000000000000000000000000000000000CE -S3154003599000000000000000000000000000000000BE -S315400359A000000000000000000000000000000000AE -S315400359B0000000000000000000000000000000009E -S315400359C0000000000000000000000000000000008E -S315400359D0000000000000000000000000000000007E -S315400359E0000000000000000000000000000000006E -S315400359F0000000000000000000000000000000005E -S31540035A00000000000000000000000000000000004D -S31540035A10000000000000000000000000000000003D -S31540035A20000000000000000000000000000000002D -S31540035A30000000000000000000000000000000001D -S31540035A40000000000000000000000000000000000D -S31540035A5000000000000000000000000000000000FD -S31540035A6000000000000000000000000000000000ED -S31540035A7000000000000000000000000000000000DD -S31540035A8000000000000000000000000000000000CD -S31540035A9000000000000000000000000000000000BD -S31540035AA000000000000000000000000000000000AD -S31540035AB0000000000000000000000000000000009D -S31540035AC0000000000000000000000000000000008D -S31540035AD0000000000000000000000000000000007D -S31540035AE0000000000000000000000000000000006D -S31540035AF0000000000000000000000000000000005D -S31540035B00000000000000000000000000000000004C -S31540035B10000000000000000000000000000000003C -S31540035B20000000000000000000000000000000002C -S31540035B30000000000000000000000000000000001C -S31540035B40000000000000000000000000000000000C -S31540035B5000000000000000000000000000000000FC -S31540035B6000000000000000000000000000000000EC -S31540035B7000000000000000000000000000000000DC -S31540035B8000000000000000000000000000000000CC -S31540035B9000000000000000000000000000000000BC -S31540035BA000000000000000000000000000000000AC -S31540035BB0000000000000000000000000000000009C -S31540035BC0000000000000000000000000000000008C -S31540035BD0000000000000000000000000000000007C -S31540035BE0000000000000000000000000000000006C -S31540035BF0000000000000000000000000000000005C -S31540035C00000000000000000000000000000000004B -S31540035C10000000000000000000000000000000003B -S31540035C20000000000000000000000000000000002B -S31540035C30000000000000000000000000000000001B -S31540035C40000000000000000000000000000000000B -S31540035C5000000000000000000000000000000000FB -S31540035C6000000000000000000000000000000000EB -S31540035C7000000000000000000000000000000000DB -S31540035C8000000000000000000000000000000000CB -S31540035C9000000000000000000000000000000000BB -S31540035CA000000000000000000000000000000000AB -S31540035CB0000000000000000000000000000000009B -S31540035CC0000000000000000000000000000000008B -S31540035CD0000000000000000000000000000000007B -S31540035CE0000000000000000000000000000000006B -S31540035CF0000000000000000000000000000000005B -S31540035D00000000000000000000000000000000004A -S31540035D10000000000000000000000000000000003A -S31540035D20000000000000000000000000000000002A -S31540035D30000000000000000000000000000000001A -S31540035D40000000000000000000000000000000000A -S31540035D5000000000000000000000000000000000FA -S31540035D6000000000000000000000000000000000EA -S31540035D7000000000000000000000000000000000DA -S31540035D8000000000000000000000000000000000CA -S31540035D9000000000000000000000000000000000BA -S31540035DA000000000000000000000000000000000AA -S31540035DB0000000000000000000000000000000009A -S31540035DC0000000000000000000000000000000008A -S31540035DD0000000000000000000000000000000007A -S31540035DE0000000000000000000000000000000006A -S31540035DF0000000000000000000000000000000005A -S31540035E000000000000000000000000000000000049 -S31540035E100000000000000000000000000000000039 -S31540035E200000000000000000000000000000000029 -S31540035E300000000000000000000000000000000019 -S31540035E400000000000000000000000000000000009 -S31540035E5000000000000000000000000000000000F9 -S31540035E6000000000000000000000000000000000E9 -S31540035E7000000000000000000000000000000000D9 -S31540035E8000000000000000000000000000000000C9 -S31540035E9000000000000000000000000000000000B9 -S31540035EA000000000000000000000000000000000A9 -S31540035EB00000000000000000000000000000000099 -S31540035EC00000000000000000000000000000000089 -S31540035ED00000000000000000000000000000000079 -S31540035EE00000000000000000000000000000000069 -S31540035EF00000000000000000000000000000000059 -S31540035F000000000000000000000000000000000048 -S31540035F100000000000000000000000000000000038 -S31540035F200000000000000000000000000000000028 -S31540035F300000000000000000000000000000000018 -S31540035F400000000000000000000000000000000008 -S31540035F5000000000000000000000000000000000F8 -S31540035F6000000000000000000000000000000000E8 -S31540035F7000000000000000000000000000000000D8 -S31540035F8000000000000000000000000000000000C8 -S31540035F9000000000000000000000000000000000B8 -S31540035FA000000000000000000000000000000000A8 -S31540035FB00000000000000000000000000000000098 -S31540035FC00000000000000000000000000000000088 -S31540035FD00000000000000000000000000000000078 -S31540035FE00000000000000000000000000000000068 -S31540035FF00000000000000000000000000000000058 -S315400360000000000000000000000000000000000047 -S315400360100000000000000000000000000000000037 -S315400360200000000000000000000000000000000027 -S315400360300000000000000000000000000000000017 -S315400360400000000000000000000000000000000007 -S3154003605000000000000000000000000000000000F7 -S3154003606000000000000000000000000000000000E7 -S3154003607000000000000000000000000000000000D7 -S3154003608000000000000000000000000000000000C7 -S3154003609000000000000000000000000000000000B7 -S315400360A000000000000000000000000000000000A7 -S315400360B00000000000000000000000000000000097 -S315400360C00000000000000000000000000000000087 -S315400360D00000000000000000000000000000000077 -S315400360E00000000000000000000000000000000067 -S315400360F00000000000000000000000000000000057 -S315400361000000000000000000000000000000000046 -S315400361100000000000000000000000000000000036 -S315400361200000000000000000000000000000000026 -S315400361300000000000000000000000000000000016 -S315400361400000000000000000000000000000000006 -S3154003615000000000000000000000000000000000F6 -S3154003616000000000000000000000000000000000E6 -S3154003617000000000000000000000000000000000D6 -S3154003618000000000000000000000000000000000C6 -S3154003619000000000000000000000000000000000B6 -S315400361A000000000000000000000000000000000A6 -S315400361B00000000000000000000000000000000096 -S315400361C00000000000000000000000000000000086 -S315400361D00000000000000000000000000000000076 -S315400361E00000000000000000000000000000000066 -S315400361F00000000000000000000000000000000056 -S315400362000000000000000000000000000000000045 -S315400362100000000000000000000000000000000035 -S315400362200000000000000000000000000000000025 -S315400362300000000000000000000000000000000015 -S315400362400000000000000000000000000000000005 -S3154003625000000000000000000000000000000000F5 -S3154003626000000000000000000000000000000000E5 -S3154003627000000000000000000000000000000000D5 -S3154003628000000000000000000000000000000000C5 -S3154003629000000000000000000000000000000000B5 -S315400362A000000000000000000000000000000000A5 -S315400362B00000000000000000000000000000000095 -S315400362C00000000000000000000000000000000085 -S315400362D00000000000000000000000000000000075 -S315400362E00000000000000000000000000000000065 -S315400362F00000000000000000000000000000000055 -S315400363000000000000000000000000000000000044 -S315400363100000000000000000000000000000000034 -S315400363200000000000000000000000000000000024 -S315400363300000000000000000000000000000000014 -S315400363400000000000000000000000000000000004 -S3154003635000000000000000000000000000000000F4 -S3154003636000000000000000000000000000000000E4 -S3154003637000000000000000000000000000000000D4 -S3154003638000000000000000000000000000000000C4 -S3154003639000000000000000000000000000000000B4 -S315400363A000000000000000000000000000000000A4 -S315400363B00000000000000000000000000000000094 -S315400363C00000000000000000000000000000000084 -S315400363D00000000000000000000000000000000074 -S315400363E00000000000000000000000000000000064 -S315400363F00000000000000000000000000000000054 -S315400364000000000000000000000000000000000043 -S315400364100000000000000000000000000000000033 -S315400364200000000000000000000000000000000023 -S315400364300000000000000000000000000000000013 -S315400364400000000000000000000000000000000003 -S3154003645000000000000000000000000000000000F3 -S3154003646000000000000000000000000000000000E3 -S3154003647000000000000000000000000000000000D3 -S3154003648000000000000000000000000000000000C3 -S3154003649000000000000000000000000000000000B3 -S315400364A000000000000000000000000000000000A3 -S315400364B00000000000000000000000000000000093 -S315400364C00000000000000000000000000000000083 -S315400364D00000000000000000000000000000000073 -S315400364E00000000000000000000000000000000063 -S315400364F00000000000000000000000000000000053 -S315400365000000000000000000000000000000000042 -S315400365100000000000000000000000000000000032 -S315400365200000000000000000000000000000000022 -S315400365300000000000000000000000000000000012 -S315400365400000000000000000000000000000000002 -S3154003655000000000000000000000000000000000F2 -S3154003656000000000000000000000000000000000E2 -S3154003657000000000000000000000000000000000D2 -S3154003658000000000000000000000000000000000C2 -S3154003659000000000000000000000000000000000B2 -S315400365A000000000000000000000000000000000A2 -S315400365B00000000000000000000000000000000092 -S315400365C00000000000000000000000000000000082 -S315400365D00000000000000000000000000000000072 -S315400365E00000000000000000000000000000000062 -S315400365F00000000000000000000000000000000052 -S315400366000000000000000000000000000000000041 -S315400366100000000000000000000000000000000031 -S315400366200000000000000000000000000000000021 -S315400366300000000000000000000000000000000011 -S315400366400000000000000000000000000000000001 -S3154003665000000000000000000000000000000000F1 -S3154003666000000000000000000000000000000000E1 -S3154003667000000000000000000000000000000000D1 -S3154003668000000000000000000000000000000000C1 -S3154003669000000000000000000000000000000000B1 -S315400366A000000000000000000000000000000000A1 -S315400366B00000000000000000000000000000000091 -S315400366C00000000000000000000000000000000081 -S315400366D00000000000000000000000000000000071 -S315400366E00000000000000000000000000000000061 -S315400366F00000000000000000000000000000000051 -S315400367000000000000000000000000000000000040 -S315400367100000000000000000000000000000000030 -S315400367200000000000000000000000000000000020 -S315400367300000000000000000000000000000000010 -S315400367400000000000000000000000000000000000 -S3154003675000000000000000000000000000000000F0 -S3154003676000000000000000000000000000000000E0 -S3154003677000000000000000000000000000000000D0 -S3154003678000000000000000000000000000000000C0 -S3154003679000000000000000000000000000000000B0 -S315400367A000000000000000000000000000000000A0 -S315400367B00000000000000000000000000000000090 -S315400367C00000000000000000000000000000000080 -S315400367D00000000000000000000000000000000070 -S315400367E00000000000000000000000000000000060 -S315400367F00000000000000000000000000000000050 -S31540036800000000000000000000000000000000003F -S31540036810000000000000000000000000000000002F -S31540036820000000000000000000000000000000001F -S31540036830000000000000000000000000000000000F -S3154003684000000000000000000000000000000000FF -S3154003685000000000000000000000000000000000EF -S3154003686000000000000000000000000000000000DF -S3154003687000000000000000000000000000000000CF -S3154003688000000000000000000000000000000000BF -S3154003689000000000000000000000000000000000AF -S315400368A0000000000000000000000000000000009F -S315400368B0000000000000000000000000000000008F -S315400368C0000000000000000000000000000000007F -S315400368D0000000000000000000000000000000006F -S315400368E0000000000000000000000000000000005F -S315400368F0000000000000000000000000000000004F -S31540036900000000000000000000000000000000003E -S31540036910000000000000000000000000000000002E -S31540036920000000000000000000000000000000001E -S31540036930000000000000000000000000000000000E -S3154003694000000000000000000000000000000000FE -S3154003695000000000000000000000000000000000EE -S3154003696000000000000000000000000000000000DE -S3154003697000000000000000000000000000000000CE -S3154003698000000000000000000000000000000000BE -S3154003699000000000000000000000000000000000AE -S315400369A0000000000000000000000000000000009E -S315400369B0000000000000000000000000000000008E -S315400369C0000000000000000000000000000000007E -S315400369D0000000000000000000000000000000006E -S315400369E0000000000000000000000000000000005E -S315400369F0000000000000000000000000000000004E -S31540036A00000000000000000000000000000000003D -S31540036A10000000000000000000000000000000002D -S31540036A20000000000000000000000000000000001D -S31540036A30000000000000000000000000000000000D -S31540036A4000000000000000000000000000000000FD -S31540036A5000000000000000000000000000000000ED -S31540036A6000000000000000000000000000000000DD -S31540036A7000000000000000000000000000000000CD -S31540036A8000000000000000000000000000000000BD -S31540036A9000000000000000000000000000000000AD -S31540036AA0000000000000000000000000000000009D -S31540036AB0000000000000000000000000000000008D -S31540036AC0000000000000000000000000000000007D -S31540036AD0000000000000000000000000000000006D -S31540036AE0000000000000000000000000000000005D -S31540036AF0000000000000000000000000000000004D -S31540036B00000000000000000000000000000000003C -S31540036B10000000000000000000000000000000002C -S31540036B20000000000000000000000000000000001C -S31540036B30000000000000000000000000000000000C -S31540036B4000000000000000000000000000000000FC -S31540036B5000000000000000000000000000000000EC -S31540036B6000000000000000000000000000000000DC -S31540036B7000000000000000000000000000000000CC -S31540036B8000000000000000000000000000000000BC -S31540036B9000000000000000000000000000000000AC -S31540036BA0000000000000000000000000000000009C -S31540036BB0000000000000000000000000000000008C -S31540036BC0000000000000000000000000000000007C -S31540036BD0000000000000000000000000000000006C -S31540036BE0000000000000000000000000000000005C -S31540036BF0000000000000000000000000000000004C -S31540036C00000000000000000000000000000000003B -S31540036C10000000000000000000000000000000002B -S31540036C20000000000000000000000000000000001B -S31540036C30000000000000000000000000000000000B -S31540036C4000000000000000000000000000000000FB -S31540036C5000000000000000000000000000000000EB -S31540036C6000000000000000000000000000000000DB -S31540036C7000000000000000000000000000000000CB -S31540036C8000000000000000000000000000000000BB -S31540036C9000000000000000000000000000000000AB -S31540036CA0000000000000000000000000000000009B -S31540036CB0000000000000000000000000000000008B -S31540036CC0000000000000000000000000000000007B -S31540036CD0000000000000000000000000000000006B -S31540036CE0000000000000000000000000000000005B -S31540036CF0000000000000000000000000000000004B -S31540036D00000000000000000000000000000000003A -S31540036D10000000000000000000000000000000002A -S31540036D20000000000000000000000000000000001A -S31540036D30000000000000000000000000000000000A -S31540036D4000000000000000000000000000000000FA -S31540036D5000000000000000000000000000000000EA -S31540036D6000000000000000000000000000000000DA -S31540036D7000000000000000000000000000000000CA -S31540036D8000000000000000000000000000000000BA -S31540036D9000000000000000000000000000000000AA -S31540036DA0000000000000000000000000000000009A -S31540036DB0000000000000000000000000000000008A -S31540036DC0000000000000000000000000000000007A -S31540036DD0000000000000000000000000000000006A -S31540036DE0000000000000000000000000000000005A -S31540036DF0000000000000000000000000000000004A -S31540036E000000000000000000000000000000000039 -S31540036E100000000000000000000000000000000029 -S31540036E200000000000000000000000000000000019 -S31540036E300000000000000000000000000000000009 -S31540036E4000000000000000000000000000000000F9 -S31540036E5000000000000000000000000000000000E9 -S31540036E6000000000000000000000000000000000D9 -S31540036E7000000000000000000000000000000000C9 -S31540036E8000000000000000000000000000000000B9 -S31540036E9000000000000000000000000000000000A9 -S31540036EA00000000000000000000000000000000099 -S31540036EB00000000000000000000000000000000089 -S31540036EC00000000000000000000000000000000079 -S31540036ED00000000000000000000000000000000069 -S31540036EE00000000000000000000000000000000059 -S31540036EF00000000000000000000000000000000049 -S31540036F000000000000000000000000000000000038 -S31540036F100000000000000000000000000000000028 -S31540036F200000000000000000000000000000000018 -S31540036F300000000000000000000000000000000008 -S31540036F4000000000000000000000000000000000F8 -S31540036F5000000000000000000000000000000000E8 -S31540036F6000000000000000000000000000000000D8 -S31540036F7000000000000000000000000000000000C8 -S31540036F8000000000000000000000000000000000B8 -S31540036F9000000000000000000000000000000000A8 -S31540036FA00000000000000000000000000000000098 -S31540036FB00000000000000000000000000000000088 -S31540036FC00000000000000000000000000000000078 -S31540036FD00000000000000000000000000000000068 -S31540036FE00000000000000000000000000000000058 -S31540036FF00000000000000000000000000000000048 -S315400370000000000000000000000000000000000037 -S315400370100000000000000000000000000000000027 -S315400370200000000000000000000000000000000017 -S315400370300000000000000000000000000000000007 -S3154003704000000000000000000000000000000000F7 -S3154003705000000000000000000000000000000000E7 -S3154003706000000000000000000000000000000000D7 -S3154003707000000000000000000000000000000000C7 -S3154003708000000000000000000000000000000000B7 -S3154003709000000000000000000000000000000000A7 -S315400370A00000000000000000000000000000000097 -S315400370B00000000000000000000000000000000087 -S315400370C00000000000000000000000000000000077 -S315400370D00000000000000000000000000000000067 -S315400370E00000000000000000000000000000000057 -S315400370F00000000000000000000000000000000047 -S315400371000000000000000000000000000000000036 -S315400371100000000000000000000000000000000026 -S315400371200000000000000000000000000000000016 -S315400371300000000000000000000000000000000006 -S3154003714000000000000000000000000000000000F6 -S3154003715000000000000000000000000000000000E6 -S3154003716000000000000000000000000000000000D6 -S3154003717000000000000000000000000000000000C6 -S3154003718000000000000000000000000000000000B6 -S3154003719000000000000000000000000000000000A6 -S315400371A00000000000000000000000000000000096 -S315400371B00000000000000000000000000000000086 -S315400371C00000000000000000000000000000000076 -S315400371D00000000000000000000000000000000066 -S315400371E00000000000000000000000000000000056 -S315400371F00000000000000000000000000000000046 -S315400372000000000000000000000000000000000035 -S315400372100000000000000000000000000000000025 -S315400372200000000000000000000000000000000015 -S315400372300000000000000000000000000000000005 -S3154003724000000000000000000000000000000000F5 -S3154003725000000000000000000000000000000000E5 -S3154003726000000000000000000000000000000000D5 -S3154003727000000000000000000000000000000000C5 -S3154003728000000000000000000000000000000000B5 -S3154003729000000000000000000000000000000000A5 -S315400372A00000000000000000000000000000000095 -S315400372B00000000000000000000000000000000085 -S315400372C00000000000000000000000000000000075 -S315400372D00000000000000000000000000000000065 -S315400372E00000000000000000000000000000000055 -S315400372F00000000000000000000000000000000045 -S315400373000000000000000000000000000000000034 -S315400373100000000000000000000000000000000024 -S315400373200000000000000000000000000000000014 -S315400373300000000000000000000000000000000004 -S3154003734000000000000000000000000000000000F4 -S3154003735000000000000000000000000000000000E4 -S3154003736000000000000000000000000000000000D4 -S3154003737000000000000000000000000000000000C4 -S3154003738000000000000000000000000000000000B4 -S3154003739000000000000000000000000000000000A4 -S315400373A00000000000000000000000000000000094 -S315400373B00000000000000000000000000000000084 -S315400373C00000000000000000000000000000000074 -S315400373D00000000000000000000000000000000064 -S315400373E00000000000000000000000000000000054 -S315400373F00000000000000000000000000000000044 -S315400374000000000000000000000000000000000033 -S315400374100000000000000000000000000000000023 -S315400374200000000000000000000000000000000013 -S315400374300000000000000000000000000000000003 -S3154003744000000000000000000000000000000000F3 -S3154003745000000000000000000000000000000000E3 -S3154003746000000000000000000000000000000000D3 -S3154003747000000000000000000000000000000000C3 -S3154003748000000000000000000000000000000000B3 -S3154003749000000000000000000000000000000000A3 -S315400374A00000000000000000000000000000000093 -S315400374B00000000000000000000000000000000083 -S315400374C00000000000000000000000000000000073 -S315400374D00000000000000000000000000000000063 -S315400374E00000000000000000000000000000000053 -S315400374F00000000000000000000000000000000043 -S315400375000000000000000000000000000000000032 -S315400375100000000000000000000000000000000022 -S315400375200000000000000000000000000000000012 -S315400375300000000000000000000000000000000002 -S3154003754000000000000000000000000000000000F2 -S3154003755000000000000000000000000000000000E2 -S3154003756000000000000000000000000000000000D2 -S3154003757000000000000000000000000000000000C2 -S3154003758000000000000000000000000000000000B2 -S3154003759000000000000000000000000000000000A2 -S315400375A00000000000000000000000000000000092 -S315400375B00000000000000000000000000000000082 -S315400375C00000000000000000000000000000000072 -S315400375D00000000000000000000000000000000062 -S315400375E00000000000000000000000000000000052 -S315400375F00000000000000000000000000000000042 -S315400376000000000000000000000000000000000031 -S315400376100000000000000000000000000000000021 -S315400376200000000000000000000000000000000011 -S315400376300000000000000000000000000000000001 -S3154003764000000000000000000000000000000000F1 -S3154003765000000000000000000000000000000000E1 -S3154003766000000000000000000000000000000000D1 -S3154003767000000000000000000000000000000000C1 -S3154003768000000000000000000000000000000000B1 -S3154003769000000000000000000000000000000000A1 -S315400376A00000000000000000000000000000000091 -S315400376B00000000000000000000000000000000081 -S315400376C00000000000000000000000000000000071 -S315400376D00000000000000000000000000000000061 -S315400376E00000000000000000000000000000000051 -S315400376F00000000000000000000000000000000041 -S315400377000000000000000000000000000000000030 -S315400377100000000000000000000000000000000020 -S315400377200000000000000000000000000000000010 -S315400377300000000000000000000000000000000000 -S3154003774000000000000000000000000000000000F0 -S3154003775000000000000000000000000000000000E0 -S3154003776000000000000000000000000000000000D0 -S3154003777000000000000000000000000000000000C0 -S3154003778000000000000000000000000000000000B0 -S3154003779000000000000000000000000000000000A0 -S315400377A00000000000000000000000000000000090 -S315400377B00000000000000000000000000000000080 -S315400377C00000000000000000000000000000000070 -S315400377D00000000000000000000000000000000060 -S315400377E00000000000000000000000000000000050 -S315400377F00000000000000000000000000000000040 -S31540037800000000000000000000000000000000002F -S31540037810000000000000000000000000000000001F -S31540037820000000000000000000000000000000000F -S3154003783000000000000000000000000000000000FF -S3154003784000000000000000000000000000000000EF -S3154003785000000000000000000000000000000000DF -S3154003786000000000000000000000000000000000CF -S3154003787000000000000000000000000000000000BF -S3154003788000000000000000000000000000000000AF -S31540037890000000000000000000000000000000009F -S315400378A0000000000000000000000000000000008F -S315400378B0000000000000000000000000000000007F -S315400378C0000000000000000000000000000000006F -S315400378D0000000000000000000000000000000005F -S315400378E0000000000000000000000000000000004F -S315400378F0000000000000000000000000000000003F -S31540037900000000000000000000000000000000002E -S31540037910000000000000000000000000000000001E -S31540037920000000000000000000000000000000000E -S3154003793000000000000000000000000000000000FE -S3154003794000000000000000000000000000000000EE -S3154003795000000000000000000000000000000000DE -S3154003796000000000000000000000000000000000CE -S3154003797000000000000000000000000000000000BE -S3154003798000000000000000000000000000000000AE -S31540037990000000000000000000000000000000009E -S315400379A0000000000000000000000000000000008E -S315400379B0000000000000000000000000000000007E -S315400379C0000000000000000000000000000000006E -S315400379D0000000000000000000000000000000005E -S315400379E0000000000000000000000000000000004E -S315400379F0000000000000000000000000000000003E -S31540037A00000000000000000000000000000000002D -S31540037A10000000000000000000000000000000001D -S31540037A20000000000000000000000000000000000D -S31540037A3000000000000000000000000000000000FD -S31540037A4000000000000000000000000000000000ED -S31540037A5000000000000000000000000000000000DD -S31540037A6000000000000000000000000000000000CD -S31540037A7000000000000000000000000000000000BD -S31540037A8000000000000000000000000000000000AD -S31540037A90000000000000000000000000000000009D -S31540037AA0000000000000000000000000000000008D -S31540037AB0000000000000000000000000000000007D -S31540037AC0000000000000000000000000000000006D -S31540037AD0000000000000000000000000000000005D -S31540037AE0000000000000000000000000000000004D -S31540037AF0000000000000000000000000000000003D -S31540037B00000000000000000000000000000000002C -S31540037B10000000000000000000000000000000001C -S31540037B20000000000000000000000000000000000C -S31540037B3000000000000000000000000000000000FC -S31540037B4000000000000000000000000000000000EC -S31540037B5000000000000000000000000000000000DC -S31540037B6000000000000000000000000000000000CC -S31540037B7000000000000000000000000000000000BC -S31540037B8000000000000000000000000000000000AC -S31540037B90000000000000000000000000000000009C -S31540037BA0000000000000000000000000000000008C -S31540037BB0000000000000000000000000000000007C -S31540037BC0000000000000000000000000000000006C -S31540037BD0000000000000000000000000000000005C -S31540037BE0000000000000000000000000000000004C -S31540037BF0000000000000000000000000000000003C -S31540037C00000000000000000000000000000000002B -S31540037C10000000000000000000000000000000001B -S31540037C20000000000000000000000000000000000B -S31540037C3000000000000000000000000000000000FB -S31540037C4000000000000000000000000000000000EB -S31540037C5000000000000000000000000000000000DB -S31540037C6000000000000000000000000000000000CB -S31540037C7000000000000000000000000000000000BB -S31540037C8000000000000000000000000000000000AB -S31540037C90000000000000000000000000000000009B -S31540037CA0000000000000000000000000000000008B -S31540037CB0000000000000000000000000000000007B -S31540037CC0000000000000000000000000000000006B -S31540037CD0000000000000000000000000000000005B -S31540037CE0000000000000000000000000000000004B -S31540037CF0000000000000000000000000000000003B -S31540037D00000000000000000000000000000000002A -S31540037D10000000000000000000000000000000001A -S31540037D20000000000000000000000000000000000A -S31540037D3000000000000000000000000000000000FA -S31540037D4000000000000000000000000000000000EA -S31540037D5000000000000000000000000000000000DA -S31540037D6000000000000000000000000000000000CA -S31540037D7000000000000000000000000000000000BA -S31540037D8000000000000000000000000000000000AA -S31540037D90000000000000000000000000000000009A -S31540037DA0000000000000000000000000000000008A -S31540037DB0000000000000000000000000000000007A -S31540037DC0000000000000000000000000000000006A -S31540037DD0000000000000000000000000000000005A -S31540037DE0000000000000000000000000000000004A -S31540037DF0000000000000000000000000000000003A -S31540037E000000000000000000000000000000000029 -S31540037E100000000000000000000000000000000019 -S31540037E200000000000000000000000000000000009 -S31540037E3000000000000000000000000000000000F9 -S31540037E4000000000000000000000000000000000E9 -S31540037E5000000000000000000000000000000000D9 -S31540037E6000000000000000000000000000000000C9 -S31540037E7000000000000000000000000000000000B9 -S31540037E8000000000000000000000000000000000A9 -S31540037E900000000000000000000000000000000099 -S31540037EA00000000000000000000000000000000089 -S31540037EB00000000000000000000000000000000079 -S31540037EC00000000000000000000000000000000069 -S31540037ED00000000000000000000000000000000059 -S31540037EE00000000000000000000000000000000049 -S31540037EF00000000000000000000000000000000039 -S31540037F000000000000000000000000000000000028 -S31540037F100000000000000000000000000000000018 -S31540037F200000000000000000000000000000000008 -S31540037F3000000000000000000000000000000000F8 -S31540037F4000000000000000000000000000000000E8 -S31540037F5000000000000000000000000000000000D8 -S31540037F6000000000000000000000000000000000C8 -S31540037F7000000000000000000000000000000000B8 -S31540037F8000000000000000000000000000000000A8 -S31540037F900000000000000000000000000000000098 -S31540037FA00000000000000000000000000000000088 -S31540037FB00000000000000000000000000000000078 -S31540037FC00000000000000000000000000000000068 -S31540037FD00000000000000000000000000000000058 -S31540037FE00000000000000000000000000000000048 -S31540037FF00000000000000000000000000000000038 -S315400380000000000000000000000000000000000027 -S315400380100000000000000000000000000000000017 -S315400380200000000000000000000000000000000007 -S3154003803000000000000000000000000000000000F7 -S3154003804000000000000000000000000000000000E7 -S3154003805000000000000000000000000000000000D7 -S3154003806000000000000000000000000000000000C7 -S3154003807000000000000000000000000000000000B7 -S3154003808000000000000000000000000000000000A7 -S315400380900000000000000000000000000000000097 -S315400380A00000000000000000000000000000000087 -S315400380B00000000000000000000000000000000077 -S315400380C00000000000000000000000000000000067 -S315400380D00000000000000000000000000000000057 -S315400380E00000000000000000000000000000000047 -S315400380F00000000000000000000000000000000037 -S315400381000000000000000000000000000000000026 -S315400381100000000000000000000000000000000016 -S315400381200000000000000000000000000000000006 -S3154003813000000000000000000000000000000000F6 -S3154003814000000000000000000000000000000000E6 -S3154003815000000000000000000000000000000000D6 -S3154003816000000000000000000000000000000000C6 -S3154003817000000000000000000000000000000000B6 -S3154003818000000000000000000000000000000000A6 -S315400381900000000000000000000000000000000096 -S315400381A00000000000000000000000000000000086 -S315400381B00000000000000000000000000000000076 -S315400381C00000000000000000000000000000000066 -S315400381D00000000000000000000000000000000056 -S315400381E00000000000000000000000000000000046 -S315400381F00000000000000000000000000000000036 -S315400382000000000000000000000000000000000025 -S315400382100000000000000000000000000000000015 -S315400382200000000000000000000000000000000005 -S3154003823000000000000000000000000000000000F5 -S3154003824000000000000000000000000000000000E5 -S3154003825000000000000000000000000000000000D5 -S3154003826000000000000000000000000000000000C5 -S3154003827000000000000000000000000000000000B5 -S3154003828000000000000000000000000000000000A5 -S315400382900000000000000000000000000000000095 -S315400382A00000000000000000000000000000000085 -S315400382B00000000000000000000000000000000075 -S315400382C00000000000000000000000000000000065 -S315400382D00000000000000000000000000000000055 -S315400382E00000000000000000000000000000000045 -S315400382F00000000000000000000000000000000035 -S315400383000000000000000000000000000000000024 -S315400383100000000000000000000000000000000014 -S315400383200000000000000000000000000000000004 -S3154003833000000000000000000000000000000000F4 -S3154003834000000000000000000000000000000000E4 -S3154003835000000000000000000000000000000000D4 -S3154003836000000000000000000000000000000000C4 -S3154003837000000000000000000000000000000000B4 -S3154003838000000000000000000000000000000000A4 -S315400383900000000000000000000000000000000094 -S315400383A00000000000000000000000000000000084 -S315400383B00000000000000000000000000000000074 -S315400383C00000000000000000000000000000000064 -S315400383D00000000000000000000000000000000054 -S315400383E00000000000000000000000000000000044 -S315400383F00000000000000000000000000000000034 -S315400384000000000000000000000000000000000023 -S315400384100000000000000000000000000000000013 -S315400384200000000000000000000000000000000003 -S3154003843000000000000000000000000000000000F3 -S3154003844000000000000000000000000000000000E3 -S3154003845000000000000000000000000000000000D3 -S3154003846000000000000000000000000000000000C3 -S3154003847000000000000000000000000000000000B3 -S3154003848000000000000000000000000000000000A3 -S315400384900000000000000000000000000000000093 -S315400384A00000000000000000000000000000000083 -S315400384B00000000000000000000000000000000073 -S315400384C00000000000000000000000000000000063 -S315400384D00000000000000000000000000000000053 -S315400384E00000000000000000000000000000000043 -S315400384F00000000000000000000000000000000033 -S315400385000000000000000000000000000000000022 -S315400385100000000000000000000000000000000012 -S315400385200000000000000000000000000000000002 -S3154003853000000000000000000000000000000000F2 -S3154003854000000000000000000000000000000000E2 -S3154003855000000000000000000000000000000000D2 -S3154003856000000000000000000000000000000000C2 -S3154003857000000000000000000000000000000000B2 -S3154003858000000000000000000000000000000000A2 -S315400385900000000000000000000000000000000092 -S315400385A00000000000000000000000000000000082 -S315400385B00000000000000000000000000000000072 -S315400385C00000000000000000000000000000000062 -S315400385D00000000000000000000000000000000052 -S315400385E00000000000000000000000000000000042 -S315400385F00000000000000000000000000000000032 -S315400386000000000000000000000000000000000021 -S315400386100000000000000000000000000000000011 -S315400386200000000000000000000000000000000001 -S3154003863000000000000000000000000000000000F1 -S3154003864000000000000000000000000000000000E1 -S3154003865000000000000000000000000000000000D1 -S3154003866000000000000000000000000000000000C1 -S3154003867000000000000000000000000000000000B1 -S3154003868000000000000000000000000000000000A1 -S315400386900000000000000000000000000000000091 -S315400386A00000000000000000000000000000000081 -S315400386B00000000000000000000000000000000071 -S315400386C00000000000000000000000000000000061 -S315400386D00000000000000000000000000000000051 -S315400386E00000000000000000000000000000000041 -S315400386F00000000000000000000000000000000031 -S315400387000000000000000000000000000000000020 -S315400387100000000000000000000000000000000010 -S315400387200000000000000000000000000000000000 -S3154003873000000000000000000000000000000000F0 -S3154003874000000000000000000000000000000000E0 -S3154003875000000000000000000000000000000000D0 -S3154003876000000000000000000000000000000000C0 -S3154003877000000000000000000000000000000000B0 -S3154003878000000000000000000000000000000000A0 -S315400387900000000000000000000000000000000090 -S315400387A00000000000000000000000000000000080 -S315400387B00000000000000000000000000000000070 -S315400387C00000000000000000000000000000000060 -S315400387D00000000000000000000000000000000050 -S315400387E00000000000000000000000000000000040 -S315400387F00000000000000000000000000000000030 -S31540038800000000000000000000000000000000001F -S31540038810000000000000000000000000000000000F -S3154003882000000000000000000000000000000000FF -S3154003883000000000000000000000000000000000EF -S3154003884000000000000000000000000000000000DF -S3154003885000000000000000000000000000000000CF -S3154003886000000000000000000000000000000000BF -S3154003887000000000000000000000000000000000AF -S31540038880000000000000000000000000000000009F -S31540038890000000000000000000000000000000008F -S315400388A0000000000000000000000000000000007F -S315400388B0000000000000000000000000000000006F -S315400388C0000000000000000000000000000000005F -S315400388D0000000000000000000000000000000004F -S315400388E0000000000000000000000000000000003F -S315400388F0000000000000000000000000000000002F -S31540038900000000000000000000000000000000001E -S31540038910000000000000000000000000000000000E -S3154003892000000000000000000000000000000000FE -S3154003893000000000000000000000000000000000EE -S3154003894000000000000000000000000000000000DE -S3154003895000000000000000000000000000000000CE -S3154003896000000000000000000000000000000000BE -S3154003897000000000000000000000000000000000AE -S31540038980000000000000000000000000000000009E -S31540038990000000000000000000000000000000008E -S315400389A0000000000000000000000000000000007E -S315400389B0000000000000000000000000000000006E -S315400389C0000000000000000000000000000000005E -S315400389D0000000000000000000000000000000004E -S315400389E0000000000000000000000000000000003E -S315400389F0000000000000000000000000000000002E -S31540038A00000000000000000000000000000000001D -S31540038A10000000000000000000000000000000000D -S31540038A2000000000000000000000000000000000FD -S31540038A3000000000000000000000000000000000ED -S31540038A4000000000000000000000000000000000DD -S31540038A5000000000000000000000000000000000CD -S31540038A6000000000000000000000000000000000BD -S31540038A7000000000000000000000000000000000AD -S31540038A80000000000000000000000000000000009D -S31540038A90000000000000000000000000000000008D -S31540038AA0000000000000000000000000000000007D -S31540038AB0000000000000000000000000000000006D -S31540038AC0000000000000000000000000000000005D -S31540038AD0000000000000000000000000000000004D -S31540038AE0000000000000000000000000000000003D -S31540038AF0000000000000000000000000000000002D -S31540038B00000000000000000000000000000000001C -S31540038B10000000000000000000000000000000000C -S31540038B2000000000000000000000000000000000FC -S31540038B3000000000000000000000000000000000EC -S31540038B4000000000000000000000000000000000DC -S31540038B5000000000000000000000000000000000CC -S31540038B6000000000000000000000000000000000BC -S31540038B7000000000000000000000000000000000AC -S31540038B80000000000000000000000000000000009C -S31540038B90000000000000000000000000000000008C -S31540038BA0000000000000000000000000000000007C -S31540038BB0000000000000000000000000000000006C -S31540038BC0000000000000000000000000000000005C -S31540038BD0000000000000000000000000000000004C -S31540038BE0000000000000000000000000000000003C -S31540038BF0000000000000000000000000000000002C -S31540038C00000000000000000000000000000000001B -S31540038C10000000000000000000000000000000000B -S31540038C2000000000000000000000000000000000FB -S31540038C3000000000000000000000000000000000EB -S31540038C4000000000000000000000000000000000DB -S31540038C5000000000000000000000000000000000CB -S31540038C6000000000000000000000000000000000BB -S31540038C7000000000000000000000000000000000AB -S31540038C80000000000000000000000000000000009B -S31540038C90000000000000000000000000000000008B -S31540038CA0000000000000000000000000000000007B -S31540038CB0000000000000000000000000000000006B -S31540038CC0000000000000000000000000000000005B -S31540038CD0000000000000000000000000000000004B -S31540038CE0000000000000000000000000000000003B -S31540038CF0000000000000000000000000000000002B -S31540038D00000000000000000000000000000000001A -S31540038D10000000000000000000000000000000000A -S31540038D2000000000000000000000000000000000FA -S31540038D3000000000000000000000000000000000EA -S31540038D4000000000000000000000000000000000DA -S31540038D5000000000000000000000000000000000CA -S31540038D6000000000000000000000000000000000BA -S31540038D7000000000000000000000000000000000AA -S31540038D80000000000000000000000000000000009A -S31540038D90000000000000000000000000000000008A -S31540038DA0000000000000000000000000000000007A -S31540038DB0000000000000000000000000000000006A -S31540038DC0000000000000000000000000000000005A -S31540038DD0000000000000000000000000000000004A -S31540038DE0000000000000000000000000000000003A -S31540038DF0000000000000000000000000000000002A -S31540038E000000000000000000000000000000000019 -S31540038E100000000000000000000000000000000009 -S31540038E2000000000000000000000000000000000F9 -S31540038E3000000000000000000000000000000000E9 -S31540038E4000000000000000000000000000000000D9 -S31540038E5000000000000000000000000000000000C9 -S31540038E6000000000000000000000000000000000B9 -S31540038E7000000000000000000000000000000000A9 -S31540038E800000000000000000000000000000000099 -S31540038E900000000000000000000000000000000089 -S31540038EA00000000000000000000000000000000079 -S31540038EB00000000000000000000000000000000069 -S31540038EC00000000000000000000000000000000059 -S31540038ED00000000000000000000000000000000049 -S31540038EE00000000000000000000000000000000039 -S31540038EF00000000000000000000000000000000029 -S31540038F000000000000000000000000000000000018 -S31540038F100000000000000000000000000000000008 -S31540038F2000000000000000000000000000000000F8 -S31540038F3000000000000000000000000000000000E8 -S31540038F4000000000000000000000000000000000D8 -S31540038F5000000000000000000000000000000000C8 -S31540038F6000000000000000000000000000000000B8 -S31540038F7000000000000000000000000000000000A8 -S31540038F800000000000000000000000000000000098 -S31540038F900000000000000000000000000000000088 -S31540038FA00000000000000000000000000000000078 -S31540038FB00000000000000000000000000000000068 -S31540038FC00000000000000000000000000000000058 -S31540038FD00000000000000000000000000000000048 -S31540038FE00000000000000000000000000000000038 -S31540038FF00000000000000000000000000000000028 -S315400390000000000000000000000000000000000017 -S315400390100000000000000000000000000000000007 -S3154003902000000000000000000000000000000000F7 -S3154003903000000000000000000000000000000000E7 -S3154003904000000000000000000000000000000000D7 -S3154003905000000000000000000000000000000000C7 -S3154003906000000000000000000000000000000000B7 -S3154003907000000000000000000000000000000000A7 -S315400390800000000000000000000000000000000097 -S315400390900000000000000000000000000000000087 -S315400390A00000000000000000000000000000000077 -S315400390B00000000000000000000000000000000067 -S315400390C00000000000000000000000000000000057 -S315400390D00000000000000000000000000000000047 -S315400390E00000000000000000000000000000000037 -S315400390F00000000000000000000000000000000027 -S315400391000000000000000000000000000000000016 -S315400391100000000000000000000000000000000006 -S3154003912000000000000000000000000000000000F6 -S3154003913000000000000000000000000000000000E6 -S3154003914000000000000000000000000000000000D6 -S3154003915000000000000000000000000000000000C6 -S3154003916000000000000000000000000000000000B6 -S3154003917000000000000000000000000000000000A6 -S315400391800000000000000000000000000000000096 -S315400391900000000000000000000000000000000086 -S315400391A00000000000000000000000000000000076 -S315400391B00000000000000000000000000000000066 -S315400391C00000000000000000000000000000000056 -S315400391D00000000000000000000000000000000046 -S315400391E00000000000000000000000000000000036 -S315400391F00000000000000000000000000000000026 -S315400392000000000000000000000000000000000015 -S315400392100000000000000000000000000000000005 -S3154003922000000000000000000000000000000000F5 -S3154003923000000000000000000000000000000000E5 -S3154003924000000000000000000000000000000000D5 -S3154003925000000000000000000000000000000000C5 -S3154003926000000000000000000000000000000000B5 -S3154003927000000000000000000000000000000000A5 -S315400392800000000000000000000000000000000095 -S315400392900000000000000000000000000000000085 -S315400392A00000000000000000000000000000000075 -S315400392B00000000000000000000000000000000065 -S315400392C00000000000000000000000000000000055 -S315400392D00000000000000000000000000000000045 -S315400392E00000000000000000000000000000000035 -S315400392F00000000000000000000000000000000025 -S315400393000000000000000000000000000000000014 -S315400393100000000000000000000000000000000004 -S3154003932000000000000000000000000000000000F4 -S3154003933000000000000000000000000000000000E4 -S3154003934000000000000000000000000000000000D4 -S3154003935000000000000000000000000000000000C4 -S3154003936000000000000000000000000000000000B4 -S3154003937000000000000000000000000000000000A4 -S315400393800000000000000000000000000000000094 -S315400393900000000000000000000000000000000084 -S315400393A00000000000000000000000000000000074 -S315400393B00000000000000000000000000000000064 -S315400393C00000000000000000000000000000000054 -S315400393D00000000000000000000000000000000044 -S315400393E00000000000000000000000000000000034 -S315400393F00000000000000000000000000000000024 -S315400394000000000000000000000000000000000013 -S315400394100000000000000000000000000000000003 -S3154003942000000000000000000000000000000000F3 -S3154003943000000000000000000000000000000000E3 -S3154003944000000000000000000000000000000000D3 -S3154003945000000000000000000000000000000000C3 -S3154003946000000000000000000000000000000000B3 -S3154003947000000000000000000000000000000000A3 -S315400394800000000000000000000000000000000093 -S315400394900000000000000000000000000000000083 -S315400394A00000000000000000000000000000000073 -S315400394B00000000000000000000000000000000063 -S315400394C00000000000000000000000000000000053 -S315400394D00000000000000000000000000000000043 -S315400394E00000000000000000000000000000000033 -S315400394F00000000000000000000000000000000023 -S315400395000000000000000000000000000000000012 -S315400395100000000000000000000000000000000002 -S3154003952000000000000000000000000000000000F2 -S3154003953000000000000000000000000000000000E2 -S3154003954000000000000000000000000000000000D2 -S3154003955000000000000000000000000000000000C2 -S3154003956000000000000000000000000000000000B2 -S3154003957000000000000000000000000000000000A2 -S315400395800000000000000000000000000000000092 -S315400395900000000000000000000000000000000082 -S315400395A00000000000000000000000000000000072 -S315400395B00000000000000000000000000000000062 -S315400395C00000000000000000000000000000000052 -S315400395D00000000000000000000000000000000042 -S315400395E00000000000000000000000000000000032 -S315400395F00000000000000000000000000000000022 -S315400396000000000000000000000000000000000011 -S315400396100000000000000000000000000000000001 -S3154003962000000000000000000000000000000000F1 -S3154003963000000000000000000000000000000000E1 -S3154003964000000000000000000000000000000000D1 -S3154003965000000000000000000000000000000000C1 -S3154003966000000000000000000000000000000000B1 -S3154003967000000000000000000000000000000000A1 -S315400396800000000000000000000000000000000091 -S315400396900000000000000000000000000000000081 -S315400396A00000000000000000000000000000000071 -S315400396B00000000000000000000000000000000061 -S315400396C00000000000000000000000000000000051 -S315400396D00000000000000000000000000000000041 -S315400396E00000000000000000000000000000000031 -S315400396F00000000000000000000000000000000021 -S315400397000000000000000000000000000000000010 -S315400397100000000000000000000000000000000000 -S3154003972000000000000000000000000000000000F0 -S3154003973000000000000000000000000000000000E0 -S3154003974000000000000000000000000000000000D0 -S3154003975000000000000000000000000000000000C0 -S3154003976000000000000000000000000000000000B0 -S3154003977000000000000000000000000000000000A0 -S315400397800000000000000000000000000000000090 -S315400397900000000000000000000000000000000080 -S315400397A00000000000000000000000000000000070 -S315400397B00000000000000000000000000000000060 -S315400397C00000000000000000000000000000000050 -S315400397D00000000000000000000000000000000040 -S315400397E00000000000000000000000000000000030 -S315400397F00000000000000000000000000000000020 -S31540039800000000000000000000000000000000000F -S3154003981000000000000000000000000000000000FF -S3154003982000000000000000000000000000000000EF -S3154003983000000000000000000000000000000000DF -S3154003984000000000000000000000000000000000CF -S3154003985000000000000000000000000000000000BF -S3154003986000000000000000000000000000000000AF -S31540039870000000000000000000000000000000009F -S31540039880000000000000000000000000000000008F -S31540039890000000000000000000000000000000007F -S315400398A0000000000000000000000000000000006F -S315400398B0000000000000000000000000000000005F -S315400398C0000000000000000000000000000000004F -S315400398D0000000000000000000000000000000003F -S315400398E0000000000000000000000000000000002F -S315400398F0000000000000000000000000000000001F -S31540039900000000000000000000000000000000000E -S3154003991000000000000000000000000000000000FE -S3154003992000000000000000000000000000000000EE -S3154003993000000000000000000000000000000000DE -S3154003994000000000000000000000000000000000CE -S3154003995000000000000000000000000000000000BE -S3154003996000000000000000000000000000000000AE -S31540039970000000000000000000000000000000009E -S31540039980000000000000000000000000000000008E -S31540039990000000000000000000000000000000007E -S315400399A0000000000000000000000000000000006E -S315400399B0000000000000000000000000000000005E -S315400399C0000000000000000000000000000000004E -S315400399D0000000000000000000000000000000003E -S315400399E0000000000000000000000000000000002E -S315400399F0000000000000000000000000000000001E -S31540039A00000000000000000000000000000000000D -S31540039A1000000000000000000000000000000000FD -S31540039A2000000000000000000000000000000000ED -S31540039A3000000000000000000000000000000000DD -S31540039A4000000000000000000000000000000000CD -S31540039A5000000000000000000000000000000000BD -S31540039A6000000000000000000000000000000000AD -S31540039A70000000000000000000000000000000009D -S31540039A80000000000000000000000000000000008D -S31540039A90000000000000000000000000000000007D -S31540039AA0000000000000000000000000000000006D -S31540039AB0000000000000000000000000000000005D -S31540039AC0000000000000000000000000000000004D -S31540039AD0000000000000000000000000000000003D -S31540039AE0000000000000000000000000000000002D -S31540039AF0000000000000000000000000000000001D -S31540039B00000000000000000000000000000000000C -S31540039B1000000000000000000000000000000000FC -S31540039B2000000000000000000000000000000000EC -S31540039B3000000000000000000000000000000000DC -S31540039B4000000000000000000000000000000000CC -S31540039B5000000000000000000000000000000000BC -S31540039B6000000000000000000000000000000000AC -S31540039B70000000000000000000000000000000009C -S31540039B80000000000000000000000000000000008C -S31540039B90000000000000000000000000000000007C -S31540039BA0000000000000000000000000000000006C -S31540039BB0000000000000000000000000000000005C -S31540039BC0000000000000000000000000000000004C -S31540039BD0000000000000000000000000000000003C -S31540039BE0000000000000000000000000000000002C -S31540039BF0000000000000000000000000000000001C -S31540039C00000000000000000000000000000000000B -S31540039C1000000000000000000000000000000000FB -S31540039C2000000000000000000000000000000000EB -S31540039C3000000000000000000000000000000000DB -S31540039C4000000000000000000000000000000000CB -S31540039C5000000000000000000000000000000000BB -S31540039C6000000000000000000000000000000000AB -S31540039C70000000000000000000000000000000009B -S31540039C80000000000000000000000000000000008B -S31540039C90000000000000000000000000000000007B -S31540039CA0000000000000000000000000000000006B -S31540039CB0000000000000000000000000000000005B -S31540039CC0000000000000000000000000000000004B -S31540039CD0000000000000000000000000000000003B -S31540039CE0000000000000000000000000000000002B -S31540039CF0000000000000000000000000000000001B -S31540039D00000000000000000000000000000000000A -S31540039D1000000000000000000000000000000000FA -S31540039D2000000000000000000000000000000000EA -S31540039D3000000000000000000000000000000000DA -S31540039D4000000000000000000000000000000000CA -S31540039D5000000000000000000000000000000000BA -S31540039D6000000000000000000000000000000000AA -S31540039D70000000000000000000000000000000009A -S31540039D80000000000000000000000000000000008A -S31540039D90000000000000000000000000000000007A -S31540039DA0000000000000000000000000000000006A -S31540039DB0000000000000000000000000000000005A -S31540039DC0000000000000000000000000000000004A -S31540039DD0000000000000000000000000000000003A -S31540039DE0000000000000000000000000000000002A -S31540039DF0000000000000000000000000000000001A -S31540039E000000000000000000000000000000000009 -S31540039E1000000000000000000000000000000000F9 -S31540039E2000000000000000000000000000000000E9 -S31540039E3000000000000000000000000000000000D9 -S31540039E4000000000000000000000000000000000C9 -S31540039E5000000000000000000000000000000000B9 -S31540039E6000000000000000000000000000000000A9 -S31540039E700000000000000000000000000000000099 -S31540039E800000000000000000000000000000000089 -S31540039E900000000000000000000000000000000079 -S31540039EA00000000000000000000000000000000069 -S31540039EB00000000000000000000000000000000059 -S31540039EC00000000000000000000000000000000049 -S31540039ED00000000000000000000000000000000039 -S31540039EE00000000000000000000000000000000029 -S31540039EF00000000000000000000000000000000019 -S31540039F000000000000000000000000000000000008 -S31540039F1000000000000000000000000000000000F8 -S31540039F2000000000000000000000000000000000E8 -S31540039F3000000000000000000000000000000000D8 -S31540039F4000000000000000000000000000000000C8 -S31540039F5000000000000000000000000000000000B8 -S31540039F6000000000000000000000000000000000A8 -S31540039F700000000000000000000000000000000098 -S31540039F800000000000000000000000000000000088 -S31540039F900000000000000000000000000000000078 -S31540039FA00000000000000000000000000000000068 -S31540039FB00000000000000000000000000000000058 -S31540039FC00000000000000000000000000000000048 -S31540039FD00000000000000000000000000000000038 -S31540039FE00000000000000000000000000000000028 -S31540039FF00000000000000000000000000000000018 -S3154003A0000000000000000000000000000000000007 -S3154003A01000000000000000000000000000000000F7 -S3154003A02000000000000000000000000000000000E7 -S3154003A03000000000000000000000000000000000D7 -S3154003A04000000000000000000000000000000000C7 -S3154003A05000000000000000000000000000000000B7 -S3154003A06000000000000000000000000000000000A7 -S3154003A0700000000000000000000000000000000097 -S3154003A0800000000000000000000000000000000087 -S3154003A0900000000000000000000000000000000077 -S3154003A0A00000000000000000000000000000000067 -S3154003A0B00000000000000000000000000000000057 -S3154003A0C00000000000000000000000000000000047 -S3154003A0D00000000000000000000000000000000037 -S3154003A0E00000000000000000000000000000000027 -S3154003A0F00000000000000000000000000000000017 -S3154003A1000000000000000000000000000000000006 -S3154003A11000000000000000000000000000000000F6 -S3154003A12000000000000000000000000000000000E6 -S3154003A13000000000000000000000000000000000D6 -S3154003A14000000000000000000000000000000000C6 -S3154003A15000000000000000000000000000000000B6 -S3154003A16000000000000000000000000000000000A6 -S3154003A1700000000000000000000000000000000096 -S3154003A1800000000000000000000000000000000086 -S3154003A1900000000000000000000000000000000076 -S3154003A1A00000000000000000000000000000000066 -S3154003A1B00000000000000000000000000000000056 -S3154003A1C00000000000000000000000000000000046 -S3154003A1D00000000000000000000000000000000036 -S3154003A1E00000000000000000000000000000000026 -S3154003A1F00000000000000000000000000000000016 -S3154003A2000000000000000000000000000000000005 -S3154003A21000000000000000000000000000000000F5 -S3154003A22000000000000000000000000000000000E5 -S3154003A23000000000000000000000000000000000D5 -S3154003A24000000000000000000000000000000000C5 -S3154003A25000000000000000000000000000000000B5 -S3154003A26000000000000000000000000000000000A5 -S3154003A2700000000000000000000000000000000095 -S3154003A2800000000000000000000000000000000085 -S3154003A2900000000000000000000000000000000075 -S3154003A2A00000000000000000000000000000000065 -S3154003A2B00000000000000000000000000000000055 -S3154003A2C00000000000000000000000000000000045 -S3154003A2D00000000000000000000000000000000035 -S3154003A2E00000000000000000000000000000000025 -S3154003A2F00000000000000000000000000000000015 -S3154003A3000000000000000000000000000000000004 -S3154003A31000000000000000000000000000000000F4 -S3154003A32000000000000000000000000000000000E4 -S3154003A33000000000000000000000000000000000D4 -S3154003A34000000000000000000000000000000000C4 -S3154003A35000000000000000000000000000000000B4 -S3154003A36000000000000000000000000000000000A4 -S3154003A3700000000000000000000000000000000094 -S3154003A3800000000000000000000000000000000084 -S3154003A3900000000000000000000000000000000074 -S3154003A3A00000000000000000000000000000000064 -S3154003A3B00000000000000000000000000000000054 -S3154003A3C00000000000000000000000000000000044 -S3154003A3D00000000000000000000000000000000034 -S3154003A3E00000000000000000000000000000000024 -S3154003A3F00000000000000000000000000000000014 -S3154003A4000000000000000000000000000000000003 -S3154003A41000000000000000000000000000000000F3 -S3154003A42000000000000000000000000000000000E3 -S3154003A43000000000000000000000000000000000D3 -S3154003A44000000000000000000000000000000000C3 -S3154003A45000000000000000000000000000000000B3 -S3154003A46000000000000000000000000000000000A3 -S3154003A4700000000000000000000000000000000093 -S3154003A4800000000000000000000000000000000083 -S3154003A4900000000000000000000000000000000073 -S3154003A4A00000000000000000000000000000000063 -S3154003A4B00000000000000000000000000000000053 -S3154003A4C00000000000000000000000000000000043 -S3154003A4D00000000000000000000000000000000033 -S3154003A4E00000000000000000000000000000000023 -S3154003A4F00000000000000000000000000000000013 -S3154003A5000000000000000000000000000000000002 -S3154003A51000000000000000000000000000000000F2 -S3154003A52000000000000000000000000000000000E2 -S3154003A53000000000000000000000000000000000D2 -S3154003A54000000000000000000000000000000000C2 -S3154003A55000000000000000000000000000000000B2 -S3154003A56000000000000000000000000000000000A2 -S3154003A5700000000000000000000000000000000092 -S3154003A5800000000000000000000000000000000082 -S3154003A5900000000000000000000000000000000072 -S3154003A5A00000000000000000000000000000000062 -S3154003A5B00000000000000000000000000000000052 -S3154003A5C00000000000000000000000000000000042 -S3154003A5D00000000000000000000000000000000032 -S3154003A5E00000000000000000000000000000000022 -S3154003A5F00000000000000000000000000000000012 -S3154003A6000000000000000000000000000000000001 -S3154003A61000000000000000000000000000000000F1 -S3154003A62000000000000000000000000000000000E1 -S3154003A63000000000000000000000000000000000D1 -S3154003A64000000000000000000000000000000000C1 -S3154003A65000000000000000000000000000000000B1 -S3154003A66000000000000000000000000000000000A1 -S3154003A6700000000000000000000000000000000091 -S3154003A6800000000000000000000000000000000081 -S3154003A6900000000000000000000000000000000071 -S3154003A6A00000000000000000000000000000000061 -S3154003A6B00000000000000000000000000000000051 -S3154003A6C00000000000000000000000000000000041 -S3154003A6D00000000000000000000000000000000031 -S3154003A6E00000000000000000000000000000000021 -S3154003A6F00000000000000000000000000000000011 -S3154003A7000000000000000000000000000000000000 -S3154003A71000000000000000000000000000000000F0 -S3154003A72000000000000000000000000000000000E0 -S3154003A73000000000000000000000000000000000D0 -S3154003A74000000000000000000000000000000000C0 -S3154003A75000000000000000000000000000000000B0 -S3154003A76000000000000000000000000000000000A0 -S3154003A7700000000000000000000000000000000090 -S3154003A7800000000000000000000000000000000080 -S3154003A7900000000000000000000000000000000070 -S3154003A7A00000000000000000000000000000000060 -S3154003A7B00000000000000000000000000000000050 -S3154003A7C00000000000000000000000000000000040 -S3154003A7D00000000000000000000000000000000030 -S3154003A7E00000000000000000000000000000000020 -S3154003A7F00000000000000000000000000000000010 -S3154003A80000000000000000000000000000000000FF -S3154003A81000000000000000000000000000000000EF -S3154003A82000000000000000000000000000000000DF -S3154003A83000000000000000000000000000000000CF -S3154003A84000000000000000000000000000000000BF -S3154003A85000000000000000000000000000000000AF -S3154003A860000000000000000000000000000000009F -S3154003A870000000000000000000000000000000008F -S3154003A880000000000000000000000000000000007F -S3154003A890000000000000000000000000000000006F -S3154003A8A0000000000000000000000000000000005F -S3154003A8B0000000000000000000000000000000004F -S3154003A8C0000000000000000000000000000000003F -S3154003A8D0000000000000000000000000000000002F -S3154003A8E0000000000000000000000000000000001F -S3154003A8F0000000000000000000000000000000000F -S3154003A90000000000000000000000000000000000FE -S3154003A91000000000000000000000000000000000EE -S3154003A92000000000000000000000000000000000DE -S3154003A93000000000000000000000000000000000CE -S3154003A94000000000000000000000000000000000BE -S3154003A95000000000000000000000000000000000AE -S3154003A960000000000000000000000000000000009E -S3154003A970000000000000000000000000000000008E -S3154003A980000000000000000000000000000000007E -S3154003A990000000000000000000000000000000006E -S3154003A9A0000000000000000000000000000000005E -S3154003A9B0000000000000000000000000000000004E -S3154003A9C0000000000000000000000000000000003E -S3154003A9D0000000000000000000000000000000002E -S3154003A9E0000000000000000000000000000000001E -S3154003A9F0000000000000000000000000000000000E -S3154003AA0000000000000000000000000000000000FD -S3154003AA1000000000000000000000000000000000ED -S3154003AA2000000000000000000000000000000000DD -S3154003AA3000000000000000000000000000000000CD -S3154003AA4000000000000000000000000000000000BD -S3154003AA5000000000000000000000000000000000AD -S3154003AA60000000000000000000000000000000009D -S3154003AA70000000000000000000000000000000008D -S3154003AA80000000000000000000000000000000007D -S3154003AA90000000000000000000000000000000006D -S3154003AAA0000000000000000000000000000000005D -S3154003AAB0000000000000000000000000000000004D -S3154003AAC0000000000000000000000000000000003D -S3154003AAD0000000000000000000000000000000002D -S3154003AAE0000000000000000000000000000000001D -S3154003AAF0000000000000000000000000000000000D -S3154003AB0000000000000000000000000000000000FC -S3154003AB1000000000000000000000000000000000EC -S3154003AB2000000000000000000000000000000000DC -S3154003AB3000000000000000000000000000000000CC -S3154003AB4000000000000000000000000000000000BC -S3154003AB5000000000000000000000000000000000AC -S3154003AB60000000000000000000000000000000009C -S3154003AB70000000000000000000000000000000008C -S3154003AB80000000000000000000000000000000007C -S3154003AB90000000000000000000000000000000006C -S3154003ABA0000000000000000000000000000000005C -S3154003ABB0000000000000000000000000000000004C -S3154003ABC0000000000000000000000000000000003C -S3154003ABD0000000000000000000000000000000002C -S3154003ABE0000000000000000000000000000000001C -S3154003ABF0000000000000000000000000000000000C -S3154003AC0000000000000000000000000000000000FB -S3154003AC1000000000000000000000000000000000EB -S3154003AC2000000000000000000000000000000000DB -S3154003AC3000000000000000000000000000000000CB -S3154003AC4000000000000000000000000000000000BB -S3154003AC5000000000000000000000000000000000AB -S3154003AC60000000000000000000000000000000009B -S3154003AC70000000000000000000000000000000008B -S3154003AC80000000000000000000000000000000007B -S3154003AC90000000000000000000000000000000006B -S3154003ACA0000000000000000000000000000000005B -S3154003ACB0000000000000000000000000000000004B -S3154003ACC0000000000000000000000000000000003B -S3154003ACD0000000000000000000000000000000002B -S3154003ACE0000000000000000000000000000000001B -S3154003ACF0000000000000000000000000000000000B -S3154003AD0000000000000000000000000000000000FA -S3154003AD1000000000000000000000000000000000EA -S3154003AD2000000000000000000000000000000000DA -S3154003AD3000000000000000000000000000000000CA -S3154003AD4000000000000000000000000000000000BA -S3154003AD5000000000000000000000000000000000AA -S3154003AD60000000000000000000000000000000009A -S3154003AD70000000000000000000000000000000008A -S3154003AD80000000000000000000000000000000007A -S3154003AD90000000000000000000000000000000006A -S3154003ADA0000000000000000000000000000000005A -S3154003ADB0000000000000000000000000000000004A -S3154003ADC0000000000000000000000000000000003A -S3154003ADD0000000000000000000000000000000002A -S3154003ADE0000000000000000000000000000000001A -S3154003ADF0000000000000000000000000000000000A -S3154003AE0000000000000000000000000000000000F9 -S3154003AE1000000000000000000000000000000000E9 -S3154003AE2000000000000000000000000000000000D9 -S3154003AE3000000000000000000000000000000000C9 -S3154003AE4000000000000000000000000000000000B9 -S3154003AE5000000000000000000000000000000000A9 -S3154003AE600000000000000000000000000000000099 -S3154003AE700000000000000000000000000000000089 -S3154003AE800000000000000000000000000000000079 -S3154003AE900000000000000000000000000000000069 -S3154003AEA00000000000000000000000000000000059 -S3154003AEB00000000000000000000000000000000049 -S3154003AEC00000000000000000000000000000000039 -S3154003AED00000000000000000000000000000000029 -S3154003AEE00000000000000000000000000000000019 -S3154003AEF00000000000000000000000000000000009 -S3154003AF0000000000000000000000000000000000F8 -S3154003AF1000000000000000000000000000000000E8 -S3154003AF2000000000000000000000000000000000D8 -S3154003AF3000000000000000000000000000000000C8 -S3154003AF4000000000000000000000000000000000B8 -S3154003AF5000000000000000000000000000000000A8 -S3154003AF600000000000000000000000000000000098 -S3154003AF700000000000000000000000000000000088 -S3154003AF800000000000000000000000000000000078 -S3154003AF900000000000000000000000000000000068 -S3154003AFA00000000000000000000000000000000058 -S3154003AFB00000000000000000000000000000000048 -S3154003AFC00000000000000000000000000000000038 -S3154003AFD00000000000000000000000000000000028 -S3154003AFE00000000000000000000000000000000018 -S3154003AFF00000000000000000000000000000000008 -S3154003B00000000000000000000000000000000000F7 -S3154003B01000000000000000000000000000000000E7 -S3154003B02000000000000000000000000000000000D7 -S3154003B03000000000000000000000000000000000C7 -S3154003B04000000000000000000000000000000000B7 -S3154003B05000000000000000000000000000000000A7 -S3154003B0600000000000000000000000000000000097 -S3154003B0700000000000000000000000000000000087 -S3154003B0800000000000000000000000000000000077 -S3154003B0900000000000000000000000000000000067 -S3154003B0A00000000000000000000000000000000057 -S3154003B0B00000000000000000000000000000000047 -S3154003B0C00000000000000000000000000000000037 -S3154003B0D00000000000000000000000000000000027 -S3154003B0E00000000000000000000000000000000017 -S3154003B0F00000000000000000000000000000000007 -S3154003B10000000000000000000000000000000000F6 -S3154003B11000000000000000000000000000000000E6 -S3154003B12000000000000000000000000000000000D6 -S3154003B13000000000000000000000000000000000C6 -S3154003B14000000000000000000000000000000000B6 -S3154003B15000000000000000000000000000000000A6 -S3154003B1600000000000000000000000000000000096 -S3154003B1700000000000000000000000000000000086 -S3154003B1800000000000000000000000000000000076 -S3154003B1900000000000000000000000000000000066 -S3154003B1A00000000000000000000000000000000056 -S3154003B1B00000000000000000000000000000000046 -S3154003B1C00000000000000000000000000000000036 -S3154003B1D00000000000000000000000000000000026 -S3154003B1E00000000000000000000000000000000016 -S3154003B1F00000000000000000000000000000000006 -S3154003B20000000000000000000000000000000000F5 -S3154003B21000000000000000000000000000000000E5 -S3154003B22000000000000000000000000000000000D5 -S3154003B23000000000000000000000000000000000C5 -S3154003B24000000000000000000000000000000000B5 -S3154003B25000000000000000000000000000000000A5 -S3154003B2600000000000000000000000000000000095 -S3154003B2700000000000000000000000000000000085 -S3154003B2800000000000000000000000000000000075 -S3154003B2900000000000000000000000000000000065 -S3154003B2A00000000000000000000000000000000055 -S3154003B2B00000000000000000000000000000000045 -S3154003B2C00000000000000000000000000000000035 -S3154003B2D00000000000000000000000000000000025 -S3154003B2E00000000000000000000000000000000015 -S3154003B2F00000000000000000000000000000000005 -S3154003B30000000000000000000000000000000000F4 -S3154003B31000000000000000000000000000000000E4 -S3154003B32000000000000000000000000000000000D4 -S3154003B33000000000000000000000000000000000C4 -S3154003B34000000000000000000000000000000000B4 -S3154003B35000000000000000000000000000000000A4 -S3154003B3600000000000000000000000000000000094 -S3154003B3700000000000000000000000000000000084 -S3154003B3800000000000000000000000000000000074 -S3154003B3900000000000000000000000000000000064 -S3154003B3A00000000000000000000000000000000054 -S3154003B3B00000000000000000000000000000000044 -S3154003B3C00000000000000000000000000000000034 -S3154003B3D00000000000000000000000000000000024 -S3154003B3E00000000000000000000000000000000014 -S3154003B3F00000000000000000000000000000000004 -S3154003B40000000000000000000000000000000000F3 -S3154003B41000000000000000000000000000000000E3 -S3154003B42000000000000000000000000000000000D3 -S3154003B43000000000000000000000000000000000C3 -S3154003B44000000000000000000000000000000000B3 -S3154003B45000000000000000000000000000000000A3 -S3154003B4600000000000000000000000000000000093 -S3154003B4700000000000000000000000000000000083 -S3154003B4800000000000000000000000000000000073 -S3154003B4900000000000000000000000000000000063 -S3154003B4A00000000000000000000000000000000053 -S3154003B4B00000000000000000000000000000000043 -S3154003B4C00000000000000000000000000000000033 -S3154003B4D00000000000000000000000000000000023 -S3154003B4E00000000000000000000000000000000013 -S3154003B4F00000000000000000000000000000000003 -S3154003B50000000000000000000000000000000000F2 -S3154003B51000000000000000000000000000000000E2 -S3154003B52000000000000000000000000000000000D2 -S3154003B53000000000000000000000000000000000C2 -S3154003B54000000000000000000000000000000000B2 -S3154003B55000000000000000000000000000000000A2 -S3154003B5600000000000000000000000000000000092 -S3154003B5700000000000000000000000000000000082 -S3154003B5800000000000000000000000000000000072 -S3154003B5900000000000000000000000000000000062 -S3154003B5A00000000000000000000000000000000052 -S3154003B5B00000000000000000000000000000000042 -S3154003B5C00000000000000000000000000000000032 -S3154003B5D00000000000000000000000000000000022 -S3154003B5E00000000000000000000000000000000012 -S3154003B5F00000000000000000000000000000000002 -S3154003B60000000000000000000000000000000000F1 -S3154003B61000000000000000000000000000000000E1 -S3154003B62000000000000000000000000000000000D1 -S3154003B63000000000000000000000000000000000C1 -S3154003B64000000000000000000000000000000000B1 -S3154003B65000000000000000000000000000000000A1 -S3154003B6600000000000000000000000000000000091 -S3154003B6700000000000000000000000000000000081 -S3154003B6800000000000000000000000000000000071 -S3154003B6900000000000000000000000000000000061 -S3154003B6A00000000000000000000000000000000051 -S3154003B6B00000000000000000000000000000000041 -S3154003B6C00000000000000000000000000000000031 -S3154003B6D00000000000000000000000000000000021 -S3154003B6E00000000000000000000000000000000011 -S3154003B6F00000000000000000000000000000000001 -S3154003B70000000000000000000000000000000000F0 -S3154003B71000000000000000000000000000000000E0 -S3154003B72000000000000000000000000000000000D0 -S3154003B73000000000000000000000000000000000C0 -S3154003B74000000000000000000000000000000000B0 -S3154003B75000000000000000000000000000000000A0 -S3154003B7600000000000000000000000000000000090 -S3154003B7700000000000000000000000000000000080 -S3154003B7800000000000000000000000000000000070 -S3154003B7900000000000000000000000000000000060 -S3154003B7A00000000000000000000000000000000050 -S3154003B7B00000000000000000000000000000000040 -S3154003B7C00000000000000000000000000000000030 -S3154003B7D00000000000000000000000000000000020 -S3154003B7E00000000000000000000000000000000010 -S3154003B7F00000000000000000000000000000000000 -S3154003B80000000000000000000000000000000000EF -S3154003B81000000000000000000000000000000000DF -S3154003B82000000000000000000000000000000000CF -S3154003B83000000000000000000000000000000000BF -S3154003B84000000000000000000000000000000000AF -S3154003B850000000000000000000000000000000009F -S3154003B860000000000000000000000000000000008F -S3154003B870000000000000000000000000000000007F -S3154003B880000000000000000000000000000000006F -S3154003B890000000000000000000000000000000005F -S3154003B8A0000000000000000000000000000000004F -S3154003B8B0000000000000000000000000000000003F -S3154003B8C0000000000000000000000000000000002F -S3154003B8D0000000000000000000000000000000001F -S3154003B8E0000000000000000000000000000000000F -S3154003B8F000000000000000000000000000000000FF -S3154003B90000000000000000000000000000000000EE -S3154003B91000000000000000000000000000000000DE -S3154003B92000000000000000000000000000000000CE -S3154003B93000000000000000000000000000000000BE -S3154003B94000000000000000000000000000000000AE -S3154003B950000000000000000000000000000000009E -S3154003B960000000000000000000000000000000008E -S3154003B970000000000000000000000000000000007E -S3154003B980000000000000000000000000000000006E -S3154003B990000000000000000000000000000000005E -S3154003B9A0000000000000000000000000000000004E -S3154003B9B0000000000000000000000000000000003E -S3154003B9C0000000000000000000000000000000002E -S3154003B9D0000000000000000000000000000000001E -S3154003B9E0000000000000000000000000000000000E -S3154003B9F000000000000000000000000000000000FE -S3154003BA0000000000000000000000000000000000ED -S3154003BA1000000000000000000000000000000000DD -S3154003BA2000000000000000000000000000000000CD -S3154003BA3000000000000000000000000000000000BD -S3154003BA4000000000000000000000000000000000AD -S3154003BA50000000000000000000000000000000009D -S3154003BA60000000000000000000000000000000008D -S3154003BA70000000000000000000000000000000007D -S3154003BA80000000000000000000000000000000006D -S3154003BA90000000000000000000000000000000005D -S3154003BAA0000000000000000000000000000000004D -S3154003BAB0000000000000000000000000000000003D -S3154003BAC0000000000000000000000000000000002D -S3154003BAD0000000000000000000000000000000001D -S3154003BAE0000000000000000000000000000000000D -S3154003BAF000000000000000000000000000000000FD -S3154003BB0000000000000000000000000000000000EC -S3154003BB1000000000000000000000000000000000DC -S3154003BB2000000000000000000000000000000000CC -S3154003BB3000000000000000000000000000000000BC -S3154003BB4000000000000000000000000000000000AC -S3154003BB50000000000000000000000000000000009C -S3154003BB60000000000000000000000000000000008C -S3154003BB70000000000000000000000000000000007C -S3154003BB80000000000000000000000000000000006C -S3154003BB90000000000000000000000000000000005C -S3154003BBA0000000000000000000000000000000004C -S3154003BBB0000000000000000000000000000000003C -S3154003BBC0000000000000000000000000000000002C -S3154003BBD0000000000000000000000000000000001C -S3154003BBE0000000000000000000000000000000000C -S3154003BBF000000000000000000000000000000000FC -S3154003BC0000000000000000000000000000000000EB -S3154003BC1000000000000000000000000000000000DB -S3154003BC2000000000000000000000000000000000CB -S3154003BC3000000000000000000000000000000000BB -S3154003BC4000000000000000000000000000000000AB -S3154003BC50000000000000000000000000000000009B -S3154003BC60000000000000000000000000000000008B -S3154003BC70000000000000000000000000000000007B -S3154003BC80000000000000000000000000000000006B -S3154003BC90000000000000000000000000000000005B -S3154003BCA0000000000000000000000000000000004B -S3154003BCB0000000000000000000000000000000003B -S3154003BCC0000000000000000000000000000000002B -S3154003BCD0000000000000000000000000000000001B -S3154003BCE0000000000000000000000000000000000B -S3154003BCF000000000000000000000000000000000FB -S3154003BD0000000000000000000000000000000000EA -S3154003BD1000000000000000000000000000000000DA -S3154003BD2000000000000000000000000000000000CA -S3154003BD3000000000000000000000000000000000BA -S3154003BD4000000000000000000000000000000000AA -S3154003BD50000000000000000000000000000000009A -S3154003BD60000000000000000000000000000000008A -S3154003BD70000000000000000000000000000000007A -S3154003BD80000000000000000000000000000000006A -S3154003BD90000000000000000000000000000000005A -S3154003BDA0000000000000000000000000000000004A -S3154003BDB0000000000000000000000000000000003A -S3154003BDC0000000000000000000000000000000002A -S3154003BDD0000000000000000000000000000000001A -S3154003BDE0000000000000000000000000000000000A -S3154003BDF000000000000000000000000000000000FA -S3154003BE0000000000000000000000000000000000E9 -S3154003BE1000000000000000000000000000000000D9 -S3154003BE2000000000000000000000000000000000C9 -S3154003BE3000000000000000000000000000000000B9 -S3154003BE4000000000000000000000000000000000A9 -S3154003BE500000000000000000000000000000000099 -S3154003BE600000000000000000000000000000000089 -S3154003BE700000000000000000000000000000000079 -S3154003BE800000000000000000000000000000000069 -S3154003BE900000000000000000000000000000000059 -S3154003BEA00000000000000000000000000000000049 -S3154003BEB00000000000000000000000000000000039 -S3154003BEC00000000000000000000000000000000029 -S3154003BED00000000000000000000000000000000019 -S3154003BEE00000000000000000000000000000000009 -S3154003BEF000000000000000000000000000000000F9 -S3154003BF0000000000000000000000000000000000E8 -S3154003BF1000000000000000000000000000000000D8 -S3154003BF2000000000000000000000000000000000C8 -S3154003BF3000000000000000000000000000000000B8 -S3154003BF4000000000000000000000000000000000A8 -S3154003BF500000000000000000000000000000000098 -S3154003BF600000000000000000000000000000000088 -S3154003BF700000000000000000000000000000000078 -S3154003BF800000000000000000000000000000000068 -S3154003BF900000000000000000000000000000000058 -S3154003BFA00000000000000000000000000000000048 -S3154003BFB00000000000000000000000000000000038 -S3154003BFC00000000000000000000000000000000028 -S3154003BFD00000000000000000000000000000000018 -S3154003BFE00000000000000000000000000000000008 -S3154003BFF000000000000000000000000000000000F8 -S3154003C00000000000000000000000000000000000E7 -S3154003C01000000000000000000000000000000000D7 -S3154003C02000000000000000000000000000000000C7 -S3154003C03000000000000000000000000000000000B7 -S3154003C04000000000000000000000000000000000A7 -S3154003C0500000000000000000000000000000000097 -S3154003C0600000000000000000000000000000000087 -S3154003C0700000000000000000000000000000000077 -S3154003C0800000000000000000000000000000000067 -S3154003C0900000000000000000000000000000000057 -S3154003C0A00000000000000000000000000000000047 -S3154003C0B00000000000000000000000000000000037 -S3154003C0C00000000000000000000000000000000027 -S3154003C0D00000000000000000000000000000000017 -S3154003C0E00000000000000000000000000000000007 -S3154003C0F000000000000000000000000000000000F7 -S3154003C10000000000000000000000000000000000E6 -S3154003C11000000000000000000000000000000000D6 -S3154003C12000000000000000000000000000000000C6 -S3154003C13000000000000000000000000000000000B6 -S3154003C14000000000000000000000000000000000A6 -S3154003C1500000000000000000000000000000000096 -S3154003C1600000000000000000000000000000000086 -S3154003C1700000000000000000000000000000000076 -S3154003C1800000000000000000000000000000000066 -S3154003C1900000000000000000000000000000000056 -S3154003C1A00000000000000000000000000000000046 -S3154003C1B00000000000000000000000000000000036 -S3154003C1C00000000000000000000000000000000026 -S3154003C1D00000000000000000000000000000000016 -S3154003C1E00000000000000000000000000000000006 -S3154003C1F000000000000000000000000000000000F6 -S3154003C20000000000000000000000000000000000E5 -S3154003C21000000000000000000000000000000000D5 -S3154003C22000000000000000000000000000000000C5 -S3154003C23000000000000000000000000000000000B5 -S3154003C24000000000000000000000000000000000A5 -S3154003C2500000000000000000000000000000000095 -S3154003C2600000000000000000000000000000000085 -S3154003C2700000000000000000000000000000000075 -S3154003C2800000000000000000000000000000000065 -S3154003C2900000000000000000000000000000000055 -S3154003C2A00000000000000000000000000000000045 -S3154003C2B00000000000000000000000000000000035 -S3154003C2C00000000000000000000000000000000025 -S3154003C2D00000000000000000000000000000000015 -S3154003C2E00000000000000000000000000000000005 -S3154003C2F000000000000000000000000000000000F5 -S3154003C30000000000000000000000000000000000E4 -S3154003C31000000000000000000000000000000000D4 -S3154003C32000000000000000000000000000000000C4 -S3154003C33000000000000000000000000000000000B4 -S3154003C34000000000000000000000000000000000A4 -S3154003C3500000000000000000000000000000000094 -S3154003C3600000000000000000000000000000000084 -S3154003C3700000000000000000000000000000000074 -S3154003C3800000000000000000000000000000000064 -S3154003C3900000000000000000000000000000000054 -S3154003C3A00000000000000000000000000000000044 -S3154003C3B00000000000000000000000000000000034 -S3154003C3C00000000000000000000000000000000024 -S3154003C3D00000000000000000000000000000000014 -S3154003C3E00000000000000000000000000000000004 -S3154003C3F000000000000000000000000000000000F4 -S3154003C40000000000000000000000000000000000E3 -S3154003C41000000000000000000000000000000000D3 -S3154003C42000000000000000000000000000000000C3 -S3154003C43000000000000000000000000000000000B3 -S3154003C44000000000000000000000000000000000A3 -S3154003C4500000000000000000000000000000000093 -S3154003C4600000000000000000000000000000000083 -S3154003C4700000000000000000000000000000000073 -S3154003C4800000000000000000000000000000000063 -S3154003C4900000000000000000000000000000000053 -S3154003C4A00000000000000000000000000000000043 -S3154003C4B00000000000000000000000000000000033 -S3154003C4C00000000000000000000000000000000023 -S3154003C4D00000000000000000000000000000000013 -S3154003C4E00000000000000000000000000000000003 -S3154003C4F000000000000000000000000000000000F3 -S3154003C50000000000000000000000000000000000E2 -S3154003C51000000000000000000000000000000000D2 -S3154003C52000000000000000000000000000000000C2 -S3154003C53000000000000000000000000000000000B2 -S3154003C54000000000000000000000000000000000A2 -S3154003C5500000000000000000000000000000000092 -S3154003C5600000000000000000000000000000000082 -S3154003C5700000000000000000000000000000000072 -S3154003C5800000000000000000000000000000000062 -S3154003C5900000000000000000000000000000000052 -S3154003C5A00000000000000000000000000000000042 -S3154003C5B00000000000000000000000000000000032 -S3154003C5C00000000000000000000000000000000022 -S3154003C5D00000000000000000000000000000000012 -S3154003C5E00000000000000000000000000000000002 -S3154003C5F000000000000000000000000000000000F2 -S3154003C60000000000000000000000000000000000E1 -S3154003C61000000000000000000000000000000000D1 -S3154003C62000000000000000000000000000000000C1 -S3154003C63000000000000000000000000000000000B1 -S3154003C64000000000000000000000000000000000A1 -S3154003C6500000000000000000000000000000000091 -S3154003C6600000000000000000000000000000000081 -S3154003C6700000000000000000000000000000000071 -S3154003C6800000000000000000000000000000000061 -S3154003C6900000000000000000000000000000000051 -S3154003C6A00000000000000000000000000000000041 -S3154003C6B00000000000000000000000000000000031 -S3154003C6C00000000000000000000000000000000021 -S3154003C6D00000000000000000000000000000000011 -S3154003C6E00000000000000000000000000000000001 -S3154003C6F000000000000000000000000000000000F1 -S3154003C70000000000000000000000000000000000E0 -S3154003C71000000000000000000000000000000000D0 -S3154003C72000000000000000000000000000000000C0 -S3154003C73000000000000000000000000000000000B0 -S3154003C74000000000000000000000000000000000A0 -S3154003C7500000000000000000000000000000000090 -S3154003C7600000000000000000000000000000000080 -S3154003C7700000000000000000000000000000000070 -S3154003C7800000000000000000000000000000000060 -S3154003C7900000000000000000000000000000000050 -S3154003C7A00000000000000000000000000000000040 -S3154003C7B00000000000000000000000000000000030 -S3154003C7C00000000000000000000000000000000020 -S3154003C7D00000000000000000000000000000000010 -S3154003C7E00000000000000000000000000000000000 -S3154003C7F000000000000000000000000000000000F0 -S3154003C80000000000000000000000000000000000DF -S3154003C81000000000000000000000000000000000CF -S3154003C82000000000000000000000000000000000BF -S3154003C83000000000000000000000000000000000AF -S3154003C840000000000000000000000000000000009F -S3154003C850000000000000000000000000000000008F -S3154003C860000000000000000000000000000000007F -S3154003C870000000000000000000000000000000006F -S3154003C880000000000000000000000000000000005F -S3154003C890000000000000000000000000000000004F -S3154003C8A0000000000000000000000000000000003F -S3154003C8B0000000000000000000000000000000002F -S3154003C8C0000000000000000000000000000000001F -S3154003C8D0000000000000000000000000000000000F -S3154003C8E000000000000000000000000000000000FF -S3154003C8F000000000000000000000000000000000EF -S3154003C90000000000000000000000000000000000DE -S3154003C91000000000000000000000000000000000CE -S3154003C92000000000000000000000000000000000BE -S3154003C93000000000000000000000000000000000AE -S3154003C940000000000000000000000000000000009E -S3154003C950000000000000000000000000000000008E -S3154003C960000000000000000000000000000000007E -S3154003C970000000000000000000000000000000006E -S3154003C980000000000000000000000000000000005E -S3154003C990000000000000000000000000000000004E -S3154003C9A0000000000000000000000000000000003E -S3154003C9B0000000000000000000000000000000002E -S3154003C9C0000000000000000000000000000000001E -S3154003C9D0000000000000000000000000000000000E -S3154003C9E000000000000000000000000000000000FE -S3154003C9F000000000000000000000000000000000EE -S3154003CA0000000000000000000000000000000000DD -S3154003CA1000000000000000000000000000000000CD -S3154003CA2000000000000000000000000000000000BD -S3154003CA3000000000000000000000000000000000AD -S3154003CA40000000000000000000000000000000009D -S3154003CA50000000000000000000000000000000008D -S3154003CA60000000000000000000000000000000007D -S3154003CA70000000000000000000000000000000006D -S3154003CA80000000000000000000000000000000005D -S3154003CA90000000000000000000000000000000004D -S3154003CAA0000000000000000000000000000000003D -S3154003CAB0000000000000000000000000000000002D -S3154003CAC0000000000000000000000000000000001D -S3154003CAD0000000000000000000000000000000000D -S3154003CAE000000000000000000000000000000000FD -S3154003CAF000000000000000000000000000000000ED -S3154003CB0000000000000000000000000000000000DC -S3154003CB1000000000000000000000000000000000CC -S3154003CB2000000000000000000000000000000000BC -S3154003CB3000000000000000000000000000000000AC -S3154003CB40000000000000000000000000000000009C -S3154003CB50000000000000000000000000000000008C -S3154003CB60000000000000000000000000000000007C -S3154003CB70000000000000000000000000000000006C -S3154003CB80000000000000000000000000000000005C -S3154003CB90000000000000000000000000000000004C -S3154003CBA0000000000000000000000000000000003C -S3154003CBB0000000000000000000000000000000002C -S3154003CBC0000000000000000000000000000000001C -S3154003CBD0000000000000000000000000000000000C -S3154003CBE000000000000000000000000000000000FC -S3154003CBF000000000000000000000000000000000EC -S3154003CC0000000000000000000000000000000000DB -S3154003CC1000000000000000000000000000000000CB -S3154003CC2000000000000000000000000000000000BB -S3154003CC3000000000000000000000000000000000AB -S3154003CC40000000000000000000000000000000009B -S3154003CC50000000000000000000000000000000008B -S3154003CC60000000000000000000000000000000007B -S3154003CC70000000000000000000000000000000006B -S3154003CC80000000000000000000000000000000005B -S3154003CC90000000000000000000000000000000004B -S3154003CCA0000000000000000000000000000000003B -S3154003CCB0000000000000000000000000000000002B -S3154003CCC0000000000000000000000000000000001B -S3154003CCD0000000000000000000000000000000000B -S3154003CCE000000000000000000000000000000000FB -S3154003CCF000000000000000000000000000000000EB -S3154003CD0000000000000000000000000000000000DA -S3154003CD1000000000000000000000000000000000CA -S3154003CD2000000000000000000000000000000000BA -S3154003CD3000000000000000000000000000000000AA -S3154003CD40000000000000000000000000000000009A -S3154003CD50000000000000000000000000000000008A -S3154003CD60000000000000000000000000000000007A -S3154003CD70000000000000000000000000000000006A -S3154003CD80000000000000000000000000000000005A -S3154003CD90000000000000000000000000000000004A -S3154003CDA0000000000000000000000000000000003A -S3154003CDB0000000000000000000000000000000002A -S3154003CDC0000000000000000000000000000000001A -S3154003CDD0000000000000000000000000000000000A -S3154003CDE000000000000000000000000000000000FA -S3154003CDF000000000000000000000000000000000EA -S3154003CE0000000000000000000000000000000000D9 -S3154003CE1000000000000000000000000000000000C9 -S3154003CE2000000000000000000000000000000000B9 -S3154003CE3000000000000000000000000000000000A9 -S3154003CE400000000000000000000000000000000099 -S3154003CE500000000000000000000000000000000089 -S3154003CE600000000000000000000000000000000079 -S3154003CE700000000000000000000000000000000069 -S3154003CE800000000000000000000000000000000059 -S3154003CE900000000000000000000000000000000049 -S3154003CEA00000000000000000000000000000000039 -S3154003CEB00000000000000000000000000000000029 -S3154003CEC00000000000000000000000000000000019 -S3154003CED00000000000000000000000000000000009 -S3154003CEE000000000000000000000000000000000F9 -S3154003CEF000000000000000000000000000000000E9 -S3154003CF0000000000000000000000000000000000D8 -S3154003CF1000000000000000000000000000000000C8 -S3154003CF2000000000000000000000000000000000B8 -S3154003CF3000000000000000000000000000000000A8 -S3154003CF400000000000000000000000000000000098 -S3154003CF500000000000000000000000000000000088 -S3154003CF600000000000000000000000000000000078 -S3154003CF700000000000000000000000000000000068 -S3154003CF800000000000000000000000000000000058 -S3154003CF900000000000000000000000000000000048 -S3154003CFA00000000000000000000000000000000038 -S3154003CFB00000000000000000000000000000000028 -S3154003CFC00000000000000000000000000000000018 -S3154003CFD00000000000000000000000000000000008 -S3154003CFE000000000000000000000000000000000F8 -S3154003CFF000000000000000000000000000000000E8 -S3154003D00000000000000000000000000000000000D7 -S3154003D01000000000000000000000000000000000C7 -S3154003D02000000000000000000000000000000000B7 -S3154003D03000000000000000000000000000000000A7 -S3154003D0400000000000000000000000000000000097 -S3154003D0500000000000000000000000000000000087 -S3154003D0600000000000000000000000000000000077 -S3154003D0700000000000000000000000000000000067 -S3154003D0800000000000000000000000000000000057 -S3154003D0900000000000000000000000000000000047 -S3154003D0A00000000000000000000000000000000037 -S3154003D0B00000000000000000000000000000000027 -S3154003D0C00000000000000000000000000000000017 -S3154003D0D00000000000000000000000000000000007 -S3154003D0E000000000000000000000000000000000F7 -S3154003D0F000000000000000000000000000000000E7 -S3154003D10000000000000000000000000000000000D6 -S3154003D11000000000000000000000000000000000C6 -S3154003D12000000000000000000000000000000000B6 -S3154003D13000000000000000000000000000000000A6 -S3154003D1400000000000000000000000000000000096 -S3154003D1500000000000000000000000000000000086 -S3154003D1600000000000000000000000000000000076 -S3154003D1700000000000000000000000000000000066 -S3154003D1800000000000000000000000000000000056 -S3154003D1900000000000000000000000000000000046 -S3154003D1A00000000000000000000000000000000036 -S3154003D1B00000000000000000000000000000000026 -S3154003D1C00000000000000000000000000000000016 -S3154003D1D00000000000000000000000000000000006 -S3154003D1E000000000000000000000000000000000F6 -S3154003D1F000000000000000000000000000000000E6 -S3154003D20000000000000000000000000000000000D5 -S3154003D21000000000000000000000000000000000C5 -S3154003D22000000000000000000000000000000000B5 -S3154003D23000000000000000000000000000000000A5 -S3154003D2400000000000000000000000000000000095 -S3154003D2500000000000000000000000000000000085 -S3154003D2600000000000000000000000000000000075 -S3154003D2700000000000000000000000000000000065 -S3154003D2800000000000000000000000000000000055 -S3154003D2900000000000000000000000000000000045 -S3154003D2A00000000000000000000000000000000035 -S3154003D2B00000000000000000000000000000000025 -S3154003D2C00000000000000000000000000000000015 -S3154003D2D00000000000000000000000000000000005 -S3154003D2E000000000000000000000000000000000F5 -S3154003D2F000000000000000000000000000000000E5 -S3154003D30000000000000000000000000000000000D4 -S3154003D31000000000000000000000000000000000C4 -S3154003D32000000000000000000000000000000000B4 -S3154003D33000000000000000000000000000000000A4 -S3154003D3400000000000000000000000000000000094 -S3154003D3500000000000000000000000000000000084 -S3154003D3600000000000000000000000000000000074 -S3154003D3700000000000000000000000000000000064 -S3154003D3800000000000000000000000000000000054 -S3154003D3900000000000000000000000000000000044 -S3154003D3A00000000000000000000000000000000034 -S3154003D3B00000000000000000000000000000000024 -S3154003D3C00000000000000000000000000000000014 -S3154003D3D00000000000000000000000000000000004 -S3154003D3E000000000000000000000000000000000F4 -S3154003D3F000000000000000000000000000000000E4 -S3154003D40000000000000000000000000000000000D3 -S3154003D41000000000000000000000000000000000C3 -S3154003D42000000000000000000000000000000000B3 -S3154003D43000000000000000000000000000000000A3 -S3154003D4400000000000000000000000000000000093 -S3154003D4500000000000000000000000000000000083 -S3154003D4600000000000000000000000000000000073 -S3154003D4700000000000000000000000000000000063 -S3154003D4800000000000000000000000000000000053 -S3154003D4900000000000000000000000000000000043 -S3154003D4A00000000000000000000000000000000033 -S3154003D4B00000000000000000000000000000000023 -S3154003D4C00000000000000000000000000000000013 -S3154003D4D00000000000000000000000000000000003 -S3154003D4E000000000000000000000000000000000F3 -S3154003D4F000000000000000000000000000000000E3 -S3154003D50000000000000000000000000000000000D2 -S3154003D51000000000000000000000000000000000C2 -S3154003D52000000000000000000000000000000000B2 -S3154003D53000000000000000000000000000000000A2 -S3154003D5400000000000000000000000000000000092 -S3154003D5500000000000000000000000000000000082 -S3154003D5600000000000000000000000000000000072 -S3154003D5700000000000000000000000000000000062 -S3154003D5800000000000000000000000000000000052 -S3154003D5900000000000000000000000000000000042 -S3154003D5A00000000000000000000000000000000032 -S3154003D5B00000000000000000000000000000000022 -S3154003D5C00000000000000000000000000000000012 -S3154003D5D00000000000000000000000000000000002 -S3154003D5E000000000000000000000000000000000F2 -S3154003D5F000000000000000000000000000000000E2 -S3154003D60000000000000000000000000000000000D1 -S3154003D61000000000000000000000000000000000C1 -S3154003D62000000000000000000000000000000000B1 -S3154003D63000000000000000000000000000000000A1 -S3154003D6400000000000000000000000000000000091 -S3154003D6500000000000000000000000000000000081 -S3154003D6600000000000000000000000000000000071 -S3154003D6700000000000000000000000000000000061 -S3154003D6800000000000000000000000000000000051 -S3154003D6900000000000000000000000000000000041 -S3154003D6A00000000000000000000000000000000031 -S3154003D6B00000000000000000000000000000000021 -S3154003D6C00000000000000000000000000000000011 -S3154003D6D00000000000000000000000000000000001 -S3154003D6E000000000000000000000000000000000F1 -S3154003D6F000000000000000000000000000000000E1 -S3154003D70000000000000000000000000000000000D0 -S3154003D71000000000000000000000000000000000C0 -S3154003D72000000000000000000000000000000000B0 -S3154003D73000000000000000000000000000000000A0 -S3154003D7400000000000000000000000000000000090 -S3154003D7500000000000000000000000000000000080 -S3154003D7600000000000000000000000000000000070 -S3154003D7700000000000000000000000000000000060 -S3154003D7800000000000000000000000000000000050 -S3154003D7900000000000000000000000000000000040 -S3154003D7A00000000000000000000000000000000030 -S3154003D7B00000000000000000000000000000000020 -S3154003D7C00000000000000000000000000000000010 -S3154003D7D00000000000000000000000000000000000 -S3154003D7E000000000000000000000000000000000F0 -S3154003D7F000000000000000000000000000000000E0 -S3154003D80000000000000000000000000000000000CF -S3154003D81000000000000000000000000000000000BF -S3154003D82000000000000000000000000000000000AF -S3154003D830000000000000000000000000000000009F -S3154003D840000000000000000000000000000000008F -S3154003D850000000000000000000000000000000007F -S3154003D860000000000000000000000000000000006F -S3154003D870000000000000000000000000000000005F -S3154003D880000000000000000000000000000000004F -S3154003D890000000000000000000000000000000003F -S3154003D8A0000000000000000000000000000000002F -S3154003D8B0000000000000000000000000000000001F -S3154003D8C0000000000000000000000000000000000F -S3154003D8D000000000000000000000000000000000FF -S3154003D8E000000000000000000000000000000000EF -S3154003D8F000000000000000000000000000000000DF -S3154003D90000000000000000000000000000000000CE -S3154003D91000000000000000000000000000000000BE -S3154003D92000000000000000000000000000000000AE -S3154003D930000000000000000000000000000000009E -S3154003D940000000000000000000000000000000008E -S3154003D950000000000000000000000000000000007E -S3154003D960000000000000000000000000000000006E -S3154003D970000000000000000000000000000000005E -S3154003D980000000000000000000000000000000004E -S3154003D990000000000000000000000000000000003E -S3154003D9A0000000000000000000000000000000002E -S3154003D9B0000000000000000000000000000000001E -S3154003D9C0000000000000000000000000000000000E -S3154003D9D000000000000000000000000000000000FE -S3154003D9E000000000000000000000000000000000EE -S3154003D9F000000000000000000000000000000000DE -S3154003DA0000000000000000000000000000000000CD -S3154003DA1000000000000000000000000000000000BD -S3154003DA2000000000000000000000000000000000AD -S3154003DA30000000000000000000000000000000009D -S3154003DA40000000000000000000000000000000008D -S3154003DA50000000000000000000000000000000007D -S3154003DA60000000000000000000000000000000006D -S3154003DA70000000000000000000000000000000005D -S3154003DA80000000000000000000000000000000004D -S3154003DA90000000000000000000000000000000003D -S3154003DAA0000000000000000000000000000000002D -S3154003DAB0000000000000000000000000000000001D -S3154003DAC0000000000000000000000000000000000D -S3154003DAD000000000000000000000000000000000FD -S3154003DAE000000000000000000000000000000000ED -S3154003DAF000000000000000000000000000000000DD -S3154003DB0000000000000000000000000000000000CC -S3154003DB1000000000000000000000000000000000BC -S3154003DB2000000000000000000000000000000000AC -S3154003DB30000000000000000000000000000000009C -S3154003DB40000000000000000000000000000000008C -S3154003DB50000000000000000000000000000000007C -S3154003DB60000000000000000000000000000000006C -S3154003DB70000000000000000000000000000000005C -S3154003DB80000000000000000000000000000000004C -S3154003DB90000000000000000000000000000000003C -S3154003DBA0000000000000000000000000000000002C -S3154003DBB0000000000000000000000000000000001C -S3154003DBC0000000000000000000000000000000000C -S3154003DBD000000000000000000000000000000000FC -S3154003DBE000000000000000000000000000000000EC -S3154003DBF000000000000000000000000000000000DC -S3154003DC0000000000000000000000000000000000CB -S3154003DC1000000000000000000000000000000000BB -S3154003DC2000000000000000000000000000000000AB -S3154003DC30000000000000000000000000000000009B -S3154003DC40000000000000000000000000000000008B -S3154003DC50000000000000000000000000000000007B -S3154003DC60000000000000000000000000000000006B -S3154003DC70000000000000000000000000000000005B -S3154003DC80000000000000000000000000000000004B -S3154003DC90000000000000000000000000000000003B -S3154003DCA0000000000000000000000000000000002B -S3154003DCB0000000000000000000000000000000001B -S3154003DCC0000000000000000000000000000000000B -S3154003DCD000000000000000000000000000000000FB -S3154003DCE000000000000000000000000000000000EB -S3154003DCF000000000000000000000000000000000DB -S3154003DD0000000000000000000000000000000000CA -S3154003DD1000000000000000000000000000000000BA -S3154003DD2000000000000000000000000000000000AA -S3154003DD30000000000000000000000000000000009A -S3154003DD40000000000000000000000000000000008A -S3154003DD50000000000000000000000000000000007A -S3154003DD60000000000000000000000000000000006A -S3154003DD70000000000000000000000000000000005A -S3154003DD80000000000000000000000000000000004A -S3154003DD90000000000000000000000000000000003A -S3154003DDA0000000000000000000000000000000002A -S3154003DDB0000000000000000000000000000000001A -S3154003DDC0000000000000000000000000000000000A -S3154003DDD000000000000000000000000000000000FA -S3154003DDE000000000000000000000000000000000EA -S3154003DDF000000000000000000000000000000000DA -S3154003DE0000000000000000000000000000000000C9 -S3154003DE1000000000000000000000000000000000B9 -S3154003DE2000000000000000000000000000000000A9 -S3154003DE300000000000000000000000000000000099 -S3154003DE400000000000000000000000000000000089 -S3154003DE500000000000000000000000000000000079 -S3154003DE600000000000000000000000000000000069 -S3154003DE700000000000000000000000000000000059 -S3154003DE800000000000000000000000000000000049 -S3154003DE900000000000000000000000000000000039 -S3154003DEA00000000000000000000000000000000029 -S3154003DEB00000000000000000000000000000000019 -S3154003DEC00000000000000000000000000000000009 -S3154003DED000000000000000000000000000000000F9 -S3154003DEE000000000000000000000000000000000E9 -S3154003DEF000000000000000000000000000000000D9 -S3154003DF0000000000000000000000000000000000C8 -S3154003DF1000000000000000000000000000000000B8 -S3154003DF2000000000000000000000000000000000A8 -S3154003DF300000000000000000000000000000000098 -S3154003DF400000000000000000000000000000000088 -S3154003DF500000000000000000000000000000000078 -S3154003DF600000000000000000000000000000000068 -S3154003DF700000000000000000000000000000000058 -S3154003DF800000000000000000000000000000000048 -S3154003DF900000000000000000000000000000000038 -S3154003DFA00000000000000000000000000000000028 -S3154003DFB00000000000000000000000000000000018 -S3154003DFC00000000000000000000000000000000008 -S3154003DFD000000000000000000000000000000000F8 -S3154003DFE000000000000000000000000000000000E8 -S3154003DFF000000000000000000000000000000000D8 -S3154003E00000000000000000000000000000000000C7 -S3154003E01000000000000000000000000000000000B7 -S3154003E02000000000000000000000000000000000A7 -S3154003E0300000000000000000000000000000000097 -S3154003E0400000000000000000000000000000000087 -S3154003E0500000000000000000000000000000000077 -S3154003E0600000000000000000000000000000000067 -S3154003E0700000000000000000000000000000000057 -S3154003E0800000000000000000000000000000000047 -S3154003E0900000000000000000000000000000000037 -S3154003E0A00000000000000000000000000000000027 -S3154003E0B00000000000000000000000000000000017 -S3154003E0C00000000000000000000000000000000007 -S3154003E0D000000000000000000000000000000000F7 -S3154003E0E000000000000000000000000000000000E7 -S3154003E0F000000000000000000000000000000000D7 -S3154003E10000000000000000000000000000000000C6 -S3154003E11000000000000000000000000000000000B6 -S3154003E12000000000000000000000000000000000A6 -S3154003E1300000000000000000000000000000000096 -S3154003E1400000000000000000000000000000000086 -S3154003E1500000000000000000000000000000000076 -S3154003E1600000000000000000000000000000000066 -S3154003E1700000000000000000000000000000000056 -S3154003E1800000000000000000000000000000000046 -S3154003E1900000000000000000000000000000000036 -S3154003E1A00000000000000000000000000000000026 -S3154003E1B00000000000000000000000000000000016 -S3154003E1C00000000000000000000000000000000006 -S3154003E1D000000000000000000000000000000000F6 -S3154003E1E000000000000000000000000000000000E6 -S3154003E1F000000000000000000000000000000000D6 -S3154003E20000000000000000000000000000000000C5 -S3154003E21000000000000000000000000000000000B5 -S3154003E22000000000000000000000000000000000A5 -S3154003E2300000000000000000000000000000000095 -S3154003E2400000000000000000000000000000000085 -S3154003E2500000000000000000000000000000000075 -S3154003E2600000000000000000000000000000000065 -S3154003E2700000000000000000000000000000000055 -S3154003E2800000000000000000000000000000000045 -S3154003E2900000000000000000000000000000000035 -S3154003E2A00000000000000000000000000000000025 -S3154003E2B00000000000000000000000000000000015 -S3154003E2C00000000000000000000000000000000005 -S3154003E2D000000000000000000000000000000000F5 -S3154003E2E000000000000000000000000000000000E5 -S3154003E2F000000000000000000000000000000000D5 -S3154003E30000000000000000000000000000000000C4 -S3154003E31000000000000000000000000000000000B4 -S3154003E32000000000000000000000000000000000A4 -S3154003E3300000000000000000000000000000000094 -S3154003E3400000000000000000000000000000000084 -S3154003E3500000000000000000000000000000000074 -S3154003E3600000000000000000000000000000000064 -S3154003E3700000000000000000000000000000000054 -S3154003E3800000000000000000000000000000000044 -S3154003E3900000000000000000000000000000000034 -S3154003E3A00000000000000000000000000000000024 -S3154003E3B00000000000000000000000000000000014 -S3154003E3C00000000000000000000000000000000004 -S3154003E3D000000000000000000000000000000000F4 -S3154003E3E000000000000000000000000000000000E4 -S3154003E3F000000000000000000000000000000000D4 -S3154003E40000000000000000000000000000000000C3 -S3154003E41000000000000000000000000000000000B3 -S3154003E42000000000000000000000000000000000A3 -S3154003E4300000000000000000000000000000000093 -S3154003E4400000000000000000000000000000000083 -S3154003E4500000000000000000000000000000000073 -S3154003E4600000000000000000000000000000000063 -S3154003E4700000000000000000000000000000000053 -S3154003E4800000000000000000000000000000000043 -S3154003E4900000000000000000000000000000000033 -S3154003E4A00000000000000000000000000000000023 -S3154003E4B00000000000000000000000000000000013 -S3154003E4C00000000000000000000000000000000003 -S3154003E4D000000000000000000000000000000000F3 -S3154003E4E000000000000000000000000000000000E3 -S3154003E4F000000000000000000000000000000000D3 -S3154003E50000000000000000000000000000000000C2 -S3154003E51000000000000000000000000000000000B2 -S3154003E52000000000000000000000000000000000A2 -S3154003E5300000000000000000000000000000000092 -S3154003E5400000000000000000000000000000000082 -S3154003E5500000000000000000000000000000000072 -S3154003E5600000000000000000000000000000000062 -S3154003E5700000000000000000000000000000000052 -S3154003E5800000000000000000000000000000000042 -S3154003E5900000000000000000000000000000000032 -S3154003E5A00000000000000000000000000000000022 -S3154003E5B00000000000000000000000000000000012 -S3154003E5C00000000000000000000000000000000002 -S3154003E5D000000000000000000000000000000000F2 -S3154003E5E000000000000000000000000000000000E2 -S3154003E5F000000000000000000000000000000000D2 -S3154003E60000000000000000000000000000000000C1 -S3154003E61000000000000000000000000000000000B1 -S3154003E62000000000000000000000000000000000A1 -S3154003E6300000000000000000000000000000000091 -S3154003E6400000000000000000000000000000000081 -S3154003E6500000000000000000000000000000000071 -S3154003E6600000000000000000000000000000000061 -S3154003E6700000000000000000000000000000000051 -S3154003E6800000000000000000000000000000000041 -S3154003E6900000000000000000000000000000000031 -S3154003E6A00000000000000000000000000000000021 -S3154003E6B00000000000000000000000000000000011 -S3154003E6C00000000000000000000000000000000001 -S3154003E6D000000000000000000000000000000000F1 -S3154003E6E000000000000000000000000000000000E1 -S3154003E6F000000000000000000000000000000000D1 -S3154003E70000000000000000000000000000000000C0 -S3154003E71000000000000000000000000000000000B0 -S3154003E72000000000000000000000000000000000A0 -S3154003E7300000000000000000000000000000000090 -S3154003E7400000000000000000000000000000000080 -S3154003E7500000000000000000000000000000000070 -S3154003E7600000000000000000000000000000000060 -S3154003E7700000000000000000000000000000000050 -S3154003E7800000000000000000000000000000000040 -S3154003E7900000000000000000000000000000000030 -S3154003E7A00000000000000000000000000000000020 -S3154003E7B00000000000000000000000000000000010 -S3154003E7C00000000000000000000000000000000000 -S3154003E7D000000000000000000000000000000000F0 -S3154003E7E000000000000000000000000000000000E0 -S3154003E7F000000000000000000000000000000000D0 -S3154003E80000000000000000000000000000000000BF -S3154003E81000000000000000000000000000000000AF -S3154003E820000000000000000000000000000000009F -S3154003E830000000000000000000000000000000008F -S3154003E840000000000000000000000000000000007F -S3154003E850000000000000000000000000000000006F -S3154003E860000000000000000000000000000000005F -S3154003E870000000000000000000000000000000004F -S3154003E880000000000000000000000000000000003F -S3154003E890000000000000000000000000000000002F -S3154003E8A0000000000000000000000000000000001F -S3154003E8B0000000000000000000000000000000000F -S3154003E8C000000000000000000000000000000000FF -S3154003E8D000000000000000000000000000000000EF -S3154003E8E000000000000000000000000000000000DF -S3154003E8F000000000000000000000000000000000CF -S3154003E90000000000000000000000000000000000BE -S3154003E91000000000000000000000000000000000AE -S3154003E920000000000000000000000000000000009E -S3154003E930000000000000000000000000000000008E -S3154003E940000000000000000000000000000000007E -S3154003E950000000000000000000000000000000006E -S3154003E960000000000000000000000000000000005E -S3154003E970000000000000000000000000000000004E -S3154003E980000000000000000000000000000000003E -S3154003E990000000000000000000000000000000002E -S3154003E9A0000000000000000000000000000000001E -S3154003E9B0000000000000000000000000000000000E -S3154003E9C000000000000000000000000000000000FE -S3154003E9D000000000000000000000000000000000EE -S3154003E9E000000000000000000000000000000000DE -S3154003E9F000000000000000000000000000000000CE -S3154003EA0000000000000000000000000000000000BD -S3154003EA1000000000000000000000000000000000AD -S3154003EA20000000000000000000000000000000009D -S3154003EA30000000000000000000000000000000008D -S3154003EA40000000000000000000000000000000007D -S3154003EA50000000000000000000000000000000006D -S3154003EA60000000000000000000000000000000005D -S3154003EA70000000000000000000000000000000004D -S3154003EA80000000000000000000000000000000003D -S3154003EA90000000000000000000000000000000002D -S3154003EAA0000000000000000000000000000000001D -S3154003EAB0000000000000000000000000000000000D -S3154003EAC000000000000000000000000000000000FD -S3154003EAD000000000000000000000000000000000ED -S3154003EAE000000000000000000000000000000000DD -S3154003EAF000000000000000000000000000000000CD -S3154003EB0000000000000000000000000000000000BC -S3154003EB1000000000000000000000000000000000AC -S3154003EB20000000000000000000000000000000009C -S3154003EB30000000000000000000000000000000008C -S3154003EB40000000000000000000000000000000007C -S3154003EB50000000000000000000000000000000006C -S3154003EB60000000000000000000000000000000005C -S3154003EB70000000000000000000000000000000004C -S3154003EB80000000000000000000000000000000003C -S3154003EB90000000000000000000000000000000002C -S3154003EBA0000000000000000000000000000000001C -S3154003EBB0000000000000000000000000000000000C -S3154003EBC000000000000000000000000000000000FC -S3154003EBD000000000000000000000000000000000EC -S3154003EBE000000000000000000000000000000000DC -S3154003EBF000000000000000000000000000000000CC -S3154003EC0000000000000000000000000000000000BB -S3154003EC1000000000000000000000000000000000AB -S3154003EC20000000000000000000000000000000009B -S3154003EC30000000000000000000000000000000008B -S3154003EC40000000000000000000000000000000007B -S3154003EC50000000000000000000000000000000006B -S3154003EC60000000000000000000000000000000005B -S3154003EC70000000000000000000000000000000004B -S3154003EC80000000000000000000000000000000003B -S3154003EC90000000000000000000000000000000002B -S3154003ECA0000000000000000000000000000000001B -S3154003ECB0000000000000000000000000000000000B -S3154003ECC000000000000000000000000000000000FB -S3154003ECD000000000000000000000000000000000EB -S3154003ECE000000000000000000000000000000000DB -S3154003ECF000000000000000000000000000000000CB -S3154003ED0000000000000000000000000000000000BA -S3154003ED1000000000000000000000000000000000AA -S3154003ED20000000000000000000000000000000009A -S3154003ED30000000000000000000000000000000008A -S3154003ED40000000000000000000000000000000007A -S3154003ED50000000000000000000000000000000006A -S3154003ED60000000000000000000000000000000005A -S3154003ED70000000000000000000000000000000004A -S3154003ED80000000000000000000000000000000003A -S3154003ED90000000000000000000000000000000002A -S3154003EDA0000000000000000000000000000000001A -S3154003EDB0000000000000000000000000000000000A -S3154003EDC000000000000000000000000000000000FA -S3154003EDD000000000000000000000000000000000EA -S3154003EDE000000000000000000000000000000000DA -S3154003EDF000000000000000000000000000000000CA -S3154003EE0000000000000000000000000000000000B9 -S3154003EE1000000000000000000000000000000000A9 -S3154003EE200000000000000000000000000000000099 -S3154003EE300000000000000000000000000000000089 -S3154003EE400000000000000000000000000000000079 -S3154003EE500000000000000000000000000000000069 -S3154003EE600000000000000000000000000000000059 -S3154003EE700000000000000000000000000000000049 -S3154003EE800000000000000000000000000000000039 -S3154003EE900000000000000000000000000000000029 -S3154003EEA00000000000000000000000000000000019 -S3154003EEB00000000000000000000000000000000009 -S3154003EEC000000000000000000000000000000000F9 -S3154003EED000000000000000000000000000000000E9 -S3154003EEE000000000000000000000000000000000D9 -S3154003EEF000000000000000000000000000000000C9 -S3154003EF0000000000000000000000000000000000B8 -S3154003EF1000000000000000000000000000000000A8 -S3154003EF200000000000000000000000000000000098 -S3154003EF300000000000000000000000000000000088 -S3154003EF400000000000000000000000000000000078 -S3154003EF500000000000000000000000000000000068 -S3154003EF600000000000000000000000000000000058 -S3154003EF700000000000000000000000000000000048 -S3154003EF800000000000000000000000000000000038 -S3154003EF900000000000000000000000000000000028 -S3154003EFA00000000000000000000000000000000018 -S3154003EFB00000000000000000000000000000000008 -S3154003EFC000000000000000000000000000000000F8 -S3154003EFD000000000000000000000000000000000E8 -S3154003EFE000000000000000000000000000000000D8 -S3154003EFF000000000000000000000000000000000C8 -S3154003F00000000000000000000000000000000000B7 -S3154003F01000000000000000000000000000000000A7 -S3154003F0200000000000000000000000000000000097 -S3154003F0300000000000000000000000000000000087 -S3154003F0400000000000000000000000000000000077 -S3154003F0500000000000000000000000000000000067 -S3154003F0600000000000000000000000000000000057 -S3154003F0700000000000000000000000000000000047 -S3154003F0800000000000000000000000000000000037 -S3154003F0900000000000000000000000000000000027 -S3154003F0A00000000000000000000000000000000017 -S3154003F0B00000000000000000000000000000000007 -S3154003F0C000000000000000000000000000000000F7 -S3154003F0D000000000000000000000000000000000E7 -S3154003F0E000000000000000000000000000000000D7 -S3154003F0F000000000000000000000000000000000C7 -S3154003F10000000000000000000000000000000000B6 -S3154003F11000000000000000000000000000000000A6 -S3154003F1200000000000000000000000000000000096 -S3154003F1300000000000000000000000000000000086 -S3154003F1400000000000000000000000000000000076 -S3154003F1500000000000000000000000000000000066 -S3154003F1600000000000000000000000000000000056 -S3154003F1700000000000000000000000000000000046 -S3154003F1800000000000000000000000000000000036 -S3154003F1900000000000000000000000000000000026 -S3154003F1A00000000000000000000000000000000016 -S3154003F1B00000000000000000000000000000000006 -S3154003F1C000000000000000000000000000000000F6 -S3154003F1D000000000000000000000000000000000E6 -S3154003F1E000000000000000000000000000000000D6 -S3154003F1F000000000000000000000000000000000C6 -S3154003F20000000000000000000000000000000000B5 -S3154003F21000000000000000000000000000000000A5 -S3154003F2200000000000000000000000000000000095 -S3154003F2300000000000000000000000000000000085 -S3154003F2400000000000000000000000000000000075 -S3154003F2500000000000000000000000000000000065 -S3154003F2600000000000000000000000000000000055 -S3154003F2700000000000000000000000000000000045 -S3154003F2800000000000000000000000000000000035 -S3154003F2900000000000000000000000000000000025 -S3154003F2A00000000000000000000000000000000015 -S3154003F2B00000000000000000000000000000000005 -S3154003F2C000000000000000000000000000000000F5 -S3154003F2D000000000000000000000000000000000E5 -S3154003F2E000000000000000000000000000000000D5 -S3154003F2F000000000000000000000000000000000C5 -S3154003F30000000000000000000000000000000000B4 -S3154003F31000000000000000000000000000000000A4 -S3154003F3200000000000000000000000000000000094 -S3154003F3300000000000000000000000000000000084 -S3154003F3400000000000000000000000000000000074 -S3154003F3500000000000000000000000000000000064 -S3154003F3600000000000000000000000000000000054 -S3154003F3700000000000000000000000000000000044 -S3154003F3800000000000000000000000000000000034 -S3154003F3900000000000000000000000000000000024 -S3154003F3A00000000000000000000000000000000014 -S3154003F3B00000000000000000000000000000000004 -S3154003F3C000000000000000000000000000000000F4 -S3154003F3D000000000000000000000000000000000E4 -S3154003F3E000000000000000000000000000000000D4 -S3154003F3F000000000000000000000000000000000C4 -S3154003F40000000000000000000000000000000000B3 -S3154003F41000000000000000000000000000000000A3 -S3154003F4200000000000000000000000000000000093 -S3154003F4300000000000000000000000000000000083 -S3154003F4400000000000000000000000000000000073 -S3154003F4500000000000000000000000000000000063 -S3154003F4600000000000000000000000000000000053 -S3154003F4700000000000000000000000000000000043 -S3154003F4800000000000000000000000000000000033 -S3154003F4900000000000000000000000000000000023 -S3154003F4A00000000000000000000000000000000013 -S3154003F4B00000000000000000000000000000000003 -S3154003F4C000000000000000000000000000000000F3 -S3154003F4D000000000000000000000000000000000E3 -S3154003F4E000000000000000000000000000000000D3 -S3154003F4F000000000000000000000000000000000C3 -S3154003F50000000000000000000000000000000000B2 -S3154003F51000000000000000000000000000000000A2 -S3154003F5200000000000000000000000000000000092 -S3154003F5300000000000000000000000000000000082 -S3154003F5400000000000000000000000000000000072 -S3154003F5500000000000000000000000000000000062 -S3154003F5600000000000000000000000000000000052 -S3154003F5700000000000000000000000000000000042 -S3154003F5800000000000000000000000000000000032 -S3154003F5900000000000000000000000000000000022 -S3154003F5A00000000000000000000000000000000012 -S3154003F5B00000000000000000000000000000000002 -S3154003F5C000000000000000000000000000000000F2 -S3154003F5D000000000000000000000000000000000E2 -S3154003F5E000000000000000000000000000000000D2 -S3154003F5F000000000000000000000000000000000C2 -S3154003F60000000000000000000000000000000000B1 -S3154003F61000000000000000000000000000000000A1 -S3154003F6200000000000000000000000000000000091 -S3154003F6300000000000000000000000000000000081 -S3154003F6400000000000000000000000000000000071 -S3154003F6500000000000000000000000000000000061 -S3154003F6600000000000000000000000000000000051 -S3154003F6700000000000000000000000000000000041 -S3154003F6800000000000000000000000000000000031 -S3154003F6900000000000000000000000000000000021 -S3154003F6A00000000000000000000000000000000011 -S3154003F6B00000000000000000000000000000000001 -S3154003F6C000000000000000000000000000000000F1 -S3154003F6D000000000000000000000000000000000E1 -S3154003F6E000000000000000000000000000000000D1 -S3154003F6F000000000000000000000000000000000C1 -S3154003F70000000000000000000000000000000000B0 -S3154003F71000000000000000000000000000000000A0 -S3154003F7200000000000000000000000000000000090 -S3154003F7300000000000000000000000000000000080 -S3154003F7400000000000000000000000000000000070 -S3154003F7500000000000000000000000000000000060 -S3154003F7600000000000000000000000000000000050 -S3154003F7700000000000000000000000000000000040 -S3154003F7800000000000000000000000000000000030 -S3154003F7900000000000000000000000000000000020 -S3154003F7A00000000000000000000000000000000010 -S3154003F7B00000000000000000000000000000000000 -S3154003F7C000000000000000000000000000000000F0 -S3154003F7D000000000000000000000000000000000E0 -S3154003F7E000000000000000000000000000000000D0 -S3154003F7F000000000000000000000000000000000C0 -S3154003F80000000000000000000000000000000000AF -S3154003F810000000000000000000000000000000009F -S3154003F820000000000000000000000000000000008F -S3154003F830000000000000000000000000000000007F -S3154003F840000000000000000000000000000000006F -S3154003F850000000000000000000000000000000005F -S3154003F860000000000000000000000000000000004F -S3154003F870000000000000000000000000000000003F -S3154003F880000000000000000000000000000000002F -S3154003F890000000000000000000000000000000001F -S3154003F8A0000000000000000000000000000000000F -S3154003F8B000000000000000000000000000000000FF -S3154003F8C000000000000000000000000000000000EF -S3154003F8D000000000000000000000000000000000DF -S3154003F8E000000000000000000000000000000000CF -S3154003F8F000000000000000000000000000000000BF -S3154003F90000000000000000000000000000000000AE -S3154003F910000000000000000000000000000000009E -S3154003F920000000000000000000000000000000008E -S3154003F930000000000000000000000000000000007E -S3154003F940000000000000000000000000000000006E -S3154003F950000000000000000000000000000000005E -S3154003F960000000000000000000000000000000004E -S3154003F970000000000000000000000000000000003E -S3154003F980000000000000000000000000000000002E -S3154003F990000000000000000000000000000000001E -S3154003F9A0000000000000000000000000000000000E -S3154003F9B000000000000000000000000000000000FE -S3154003F9C000000000000000000000000000000000EE -S3154003F9D000000000000000000000000000000000DE -S3154003F9E000000000000000000000000000000000CE -S3154003F9F000000000000000000000000000000000BE -S3154003FA0000000000000000000000000000000000AD -S3154003FA10000000000000000000000000000000009D -S3154003FA20000000000000000000000000000000008D -S3154003FA30000000000000000000000000000000007D -S3154003FA40000000000000000000000000000000006D -S3154003FA50000000000000000000000000000000005D -S3154003FA60000000000000000000000000000000004D -S3154003FA70000000000000000000000000000000003D -S3154003FA80000000000000000000000000000000002D -S3154003FA90000000000000000000000000000000001D -S3154003FAA0000000000000000000000000000000000D -S3154003FAB000000000000000000000000000000000FD -S3154003FAC000000000000000000000000000000000ED -S3154003FAD000000000000000000000000000000000DD -S3154003FAE000000000000000000000000000000000CD -S3154003FAF000000000000000000000000000000000BD -S3154003FB0000000000000000000000000000000000AC -S3154003FB10000000000000000000000000000000009C -S3154003FB20000000000000000000000000000000008C -S3154003FB30000000000000000000000000000000007C -S3154003FB40000000000000000000000000000000006C -S3154003FB50000000000000000000000000000000005C -S3154003FB60000000000000000000000000000000004C -S3154003FB70000000000000000000000000000000003C -S3154003FB80000000000000000000000000000000002C -S3154003FB90000000000000000000000000000000001C -S3154003FBA0000000000000000000000000000000000C -S3154003FBB000000000000000000000000000000000FC -S3154003FBC000000000000000000000000000000000EC -S3154003FBD000000000000000000000000000000000DC -S3154003FBE000000000000000000000000000000000CC -S3154003FBF000000000000000000000000000000000BC -S3154003FC0000000000000000000000000000000000AB -S3154003FC10000000000000000000000000000000009B -S3154003FC20000000000000000000000000000000008B -S3154003FC30000000000000000000000000000000007B -S3154003FC40000000000000000000000000000000006B -S3154003FC50000000000000000000000000000000005B -S3154003FC60000000000000000000000000000000004B -S3154003FC70000000000000000000000000000000003B -S3154003FC80000000000000000000000000000000002B -S3154003FC90000000000000000000000000000000001B -S3154003FCA0000000000000000000000000000000000B -S3154003FCB000000000000000000000000000000000FB -S3154003FCC000000000000000000000000000000000EB -S3154003FCD000000000000000000000000000000000DB -S3154003FCE000000000000000000000000000000000CB -S3154003FCF000000000000000000000000000000000BB -S3154003FD0000000000000000000000000000000000AA -S3154003FD10000000000000000000000000000000009A -S3154003FD20000000000000000000000000000000008A -S3154003FD30000000000000000000000000000000007A -S3154003FD40000000000000000000000000000000006A -S3154003FD50000000000000000000000000000000005A -S3154003FD60000000000000000000000000000000004A -S3154003FD70000000000000000000000000000000003A -S3154003FD80000000000000000000000000000000002A -S3154003FD90000000000000000000000000000000001A -S3154003FDA0000000000000000000000000000000000A -S3154003FDB000000000000000000000000000000000FA -S3154003FDC000000000000000000000000000000000EA -S3154003FDD000000000000000000000000000000000DA -S3154003FDE000000000000000000000000000000000CA -S3154003FDF000000000000000000000000000000000BA -S3154003FE0000000000000000000000000000000000A9 -S3154003FE100000000000000000000000000000000099 -S3154003FE200000000000000000000000000000000089 -S3154003FE300000000000000000000000000000000079 -S3154003FE400000000000000000000000000000000069 -S3154003FE500000000000000000000000000000000059 -S3154003FE600000000000000000000000000000000049 -S3154003FE700000000000000000000000000000000039 -S3154003FE800000000000000000000000000000000029 -S3154003FE900000000000000000000000000000000019 -S3154003FEA00000000000000000000000000000000009 -S3154003FEB000000000000000000000000000000000F9 -S3154003FEC000000000000000000000000000000000E9 -S3154003FED000000000000000000000000000000000D9 -S3154003FEE000000000000000000000000000000000C9 -S3154003FEF000000000000000000000000000000000B9 -S3154003FF0000000000000000000000000000000000A8 -S3154003FF100000000000000000000000000000000098 -S3154003FF200000000000000000000000000000000088 -S3154003FF300000000000000000000000000000000078 -S3154003FF400000000000000000000000000000000068 -S3154003FF500000000000000000000000000000000058 -S3154003FF600000000000000000000000000000000048 -S3154003FF700000000000000000000000000000000038 -S3154003FF800000000000000000000000000000000028 -S3154003FF900000000000000000000000000000000018 -S3154003FFA00000000000000000000000000000000008 -S3154003FFB000000000000000000000000000000000F8 -S3154003FFC000000000000000000000000000000000E8 -S3154003FFD000000000000000000000000000000000D8 -S3154003FFE000000000000000000000000000000000C8 -S3154003FFF000000000000000000000000000000000B8 -S3154004000000000000000000000000000000000000A6 -S315400400100000000000000000000000000000000096 -S315400400200000000000000000000000000000000086 -S315400400300000000000000000000000000000000076 -S315400400400000000000000000000000000000000066 -S315400400500000000000000000000000000000000056 -S315400400600000000000000000000000000000000046 -S315400400700000000000000000000000000000000036 -S315400400800000000000000000000000000000000026 -S315400400900000000000000000000000000000000016 -S315400400A00000000000000000000000000000000006 -S315400400B000000000000000000000000000000000F6 -S315400400C000000000000000000000000000000000E6 -S315400400D000000000000000000000000000000000D6 -S315400400E000000000000000000000000000000000C6 -S315400400F000000000000000000000000000000000B6 -S3154004010000000000000000000000000000000000A5 -S315400401100000000000000000000000000000000095 -S315400401200000000000000000000000000000000085 -S315400401300000000000000000000000000000000075 -S315400401400000000000000000000000000000000065 -S315400401500000000000000000000000000000000055 -S315400401600000000000000000000000000000000045 -S315400401700000000000000000000000000000000035 -S315400401800000000000000000000000000000000025 -S315400401900000000000000000000000000000000015 -S315400401A00000000000000000000000000000000005 -S315400401B000000000000000000000000000000000F5 -S315400401C000000000000000000000000000000000E5 -S315400401D000000000000000000000000000000000D5 -S315400401E000000000000000000000000000000000C5 -S315400401F000000000000000000000000000000000B5 -S3154004020000000000000000000000000000000000A4 -S315400402100000000000000000000000000000000094 -S315400402200000000000000000000000000000000084 -S315400402300000000000000000000000000000000074 -S315400402400000000000000000000000000000000064 -S315400402500000000000000000000000000000000054 -S315400402600000000000000000000000000000000044 -S315400402700000000000000000000000000000000034 -S315400402800000000000000000000000000000000024 -S315400402900000000000000000000000000000000014 -S315400402A00000000000000000000000000000000004 -S315400402B000000000000000000000000000000000F4 -S315400402C000000000000000000000000000000000E4 -S315400402D000000000000000000000000000000000D4 -S315400402E000000000000000000000000000000000C4 -S315400402F000000000000000000000000000000000B4 -S3154004030000000000000000000000000000000000A3 -S315400403100000000000000000000000000000000093 -S315400403200000000000000000000000000000000083 -S315400403300000000000000000000000000000000073 -S315400403400000000000000000000000000000000063 -S315400403500000000000000000000000000000000053 -S315400403600000000000000000000000000000000043 -S315400403700000000000000000000000000000000033 -S315400403800000000000000000000000000000000023 -S315400403900000000000000000000000000000000013 -S315400403A00000000000000000000000000000000003 -S315400403B000000000000000000000000000000000F3 -S315400403C000000000000000000000000000000000E3 -S315400403D000000000000000000000000000000000D3 -S315400403E000000000000000000000000000000000C3 -S315400403F000000000000000000000000000000000B3 -S3154004040000000000000000000000000000000000A2 -S315400404100000000000000000000000000000000092 -S315400404200000000000000000000000000000000082 -S315400404300000000000000000000000000000000072 -S315400404400000000000000000000000000000000062 -S315400404500000000000000000000000000000000052 -S315400404600000000000000000000000000000000042 -S315400404700000000000000000000000000000000032 -S315400404800000000000000000000000000000000022 -S315400404900000000000000000000000000000000012 -S315400404A00000000000000000000000000000000002 -S315400404B000000000000000000000000000000000F2 -S315400404C000000000000000000000000000000000E2 -S315400404D000000000000000000000000000000000D2 -S315400404E000000000000000000000000000000000C2 -S315400404F000000000000000000000000000000000B2 -S3154004050000000000000000000000000000000000A1 -S315400405100000000000000000000000000000000091 -S315400405200000000000000000000000000000000081 -S315400405300000000000000000000000000000000071 -S315400405400000000000000000000000000000000061 -S315400405500000000000000000000000000000000051 -S315400405600000000000000000000000000000000041 -S315400405700000000000000000000000000000000031 -S315400405800000000000000000000000000000000021 -S315400405900000000000000000000000000000000011 -S315400405A00000000000000000000000000000000001 -S315400405B000000000000000000000000000000000F1 -S315400405C000000000000000000000000000000000E1 -S315400405D000000000000000000000000000000000D1 -S315400405E000000000000000000000000000000000C1 -S315400405F000000000000000000000000000000000B1 -S3154004060000000000000000000000000000000000A0 -S315400406100000000000000000000000000000000090 -S315400406200000000000000000000000000000000080 -S315400406300000000000000000000000000000000070 -S315400406400000000000000000000000000000000060 -S315400406500000000000000000000000000000000050 -S315400406600000000000000000000000000000000040 -S315400406700000000000000000000000000000000030 -S315400406800000000000000000000000000000000020 -S315400406900000000000000000000000000000000010 -S315400406A00000000000000000000000000000000000 -S315400406B000000000000000000000000000000000F0 -S315400406C000000000000000000000000000000000E0 -S315400406D000000000000000000000000000000000D0 -S315400406E000000000000000000000000000000000C0 -S315400406F000000000000000000000000000000000B0 -S31540040700000000000000000000000000000000009F -S31540040710000000000000000000000000000000008F -S31540040720000000000000000000000000000000007F -S31540040730000000000000000000000000000000006F -S31540040740000000000000000000000000000000005F -S31540040750000000000000000000000000000000004F -S31540040760000000000000000000000000000000003F -S31540040770000000000000000000000000000000002F -S31540040780000000000000000000000000000000001F -S31540040790000000000000000000000000000000000F -S315400407A000000000000000000000000000000000FF -S315400407B000000000000000000000000000000000EF -S315400407C000000000000000000000000000000000DF -S315400407D000000000000000000000000000000000CF -S315400407E000000000000000000000000000000000BF -S315400407F000000000000000000000000000000000AF -S31540040800000000000000000000000000000000009E -S31540040810000000000000000000000000000000008E -S31540040820000000000000000000000000000000007E -S31540040830000000000000000000000000000000006E -S31540040840000000000000000000000000000000005E -S31540040850000000000000000000000000000000004E -S31540040860000000000000000000000000000000003E -S31540040870000000000000000000000000000000002E -S31540040880000000000000000000000000000000001E -S31540040890000000000000000000000000000000000E -S315400408A000000000000000000000000000000000FE -S315400408B000000000000000000000000000000000EE -S315400408C000000000000000000000000000000000DE -S315400408D000000000000000000000000000000000CE -S315400408E000000000000000000000000000000000BE -S315400408F000000000000000000000000000000000AE -S31540040900000000000000000000000000000000009D -S31540040910000000000000000000000000000000008D -S31540040920000000000000000000000000000000007D -S31540040930000000000000000000000000000000006D -S31540040940000000000000000000000000000000005D -S31540040950000000000000000000000000000000004D -S31540040960000000000000000000000000000000003D -S31540040970000000000000000000000000000000002D -S31540040980000000000000000000000000000000001D -S31540040990000000000000000000000000000000000D -S315400409A000000000000000000000000000000000FD -S315400409B000000000000000000000000000000000ED -S315400409C000000000000000000000000000000000DD -S315400409D000000000000000000000000000000000CD -S315400409E000000000000000000000000000000000BD -S315400409F000000000000000000000000000000000AD -S31540040A00000000000000000000000000000000009C -S31540040A10000000000000000000000000000000008C -S31540040A20000000000000000000000000000000007C -S31540040A30000000000000000000000000000000006C -S31540040A40000000000000000000000000000000005C -S31540040A50000000000000000000000000000000004C -S31540040A60000000000000000000000000000000003C -S31540040A70000000000000000000000000000000002C -S31540040A80000000000000000000000000000000001C -S31540040A90000000000000000000000000000000000C -S31540040AA000000000000000000000000000000000FC -S31540040AB000000000000000000000000000000000EC -S31540040AC000000000000000000000000000000000DC -S31540040AD000000000000000000000000000000000CC -S31540040AE000000000000000000000000000000000BC -S31540040AF000000000000000000000000000000000AC -S31540040B00000000000000000000000000000000009B -S31540040B10000000000000000000000000000000008B -S31540040B20000000000000000000000000000000007B -S31540040B30000000000000000000000000000000006B -S31540040B40000000000000000000000000000000005B -S31540040B50000000000000000000000000000000004B -S31540040B60000000000000000000000000000000003B -S31540040B70000000000000000000000000000000002B -S31540040B80000000000000000000000000000000001B -S31540040B90000000000000000000000000000000000B -S31540040BA000000000000000000000000000000000FB -S31540040BB000000000000000000000000000000000EB -S31540040BC000000000000000000000000000000000DB -S31540040BD000000000000000000000000000000000CB -S31540040BE000000000000000000000000000000000BB -S31540040BF000000000000000000000000000000000AB -S31540040C00000000000000000000000000000000009A -S31540040C10000000000000000000000000000000008A -S31540040C20000000000000000000000000000000007A -S31540040C30000000000000000000000000000000006A -S31540040C40000000000000000000000000000000005A -S31540040C50000000000000000000000000000000004A -S31540040C60000000000000000000000000000000003A -S31540040C70000000000000000000000000000000002A -S31540040C80000000000000000000000000000000001A -S31540040C90000000000000000000000000000000000A -S31540040CA000000000000000000000000000000000FA -S31540040CB000000000000000000000000000000000EA -S31540040CC000000000000000000000000000000000DA -S31540040CD000000000000000000000000000000000CA -S31540040CE000000000000000000000000000000000BA -S31540040CF000000000000000000000000000000000AA -S31540040D000000000000000000000000000000000099 -S31540040D100000000000000000000000000000000089 -S31540040D200000000000000000000000000000000079 -S31540040D300000000000000000000000000000000069 -S31540040D400000000000000000000000000000000059 -S31540040D500000000000000000000000000000000049 -S31540040D600000000000000000000000000000000039 -S31540040D700000000000000000000000000000000029 -S31540040D800000000000000000000000000000000019 -S31540040D900000000000000000000000000000000009 -S31540040DA000000000000000000000000000000000F9 -S31540040DB000000000000000000000000000000000E9 -S31540040DC000000000000000000000000000000000D9 -S31540040DD000000000000000000000000000000000C9 -S31540040DE000000000000000000000000000000000B9 -S31540040DF000000000000000000000000000000000A9 -S31540040E000000000000000000000000000000000098 -S31540040E100000000000000000000000000000000088 -S31540040E200000000000000000000000000000000078 -S31540040E300000000000000000000000000000000068 -S31540040E400000000000000000000000000000000058 -S31540040E500000000000000000000000000000000048 -S31540040E600000000000000000000000000000000038 -S31540040E700000000000000000000000000000000028 -S31540040E800000000000000000000000000000000018 -S31540040E900000000000000000000000000000000008 -S31540040EA000000000000000000000000000000000F8 -S31540040EB000000000000000000000000000000000E8 -S31540040EC000000000000000000000000000000000D8 -S31540040ED000000000000000000000000000000000C8 -S31540040EE000000000000000000000000000000000B8 -S31540040EF000000000000000000000000000000000A8 -S31540040F000000000000000000000000000000000097 -S31540040F100000000000000000000000000000000087 -S31540040F200000000000000000000000000000000077 -S31540040F300000000000000000000000000000000067 -S31540040F400000000000000000000000000000000057 -S31540040F500000000000000000000000000000000047 -S31540040F600000000000000000000000000000000037 -S31540040F700000000000000000000000000000000027 -S31540040F800000000000000000000000000000000017 -S31540040F900000000000000000000000000000000007 -S31540040FA000000000000000000000000000000000F7 -S31540040FB000000000000000000000000000000000E7 -S31540040FC000000000000000000000000000000000D7 -S31540040FD000000000000000000000000000000000C7 -S31540040FE000000000000000000000000000000000B7 -S31540040FF000000000000000000000000000000000A7 -S315400410000000000000000000000000000000000096 -S315400410100000000000000000000000000000000086 -S315400410200000000000000000000000000000000076 -S315400410300000000000000000000000000000000066 -S315400410400000000000000000000000000000000056 -S315400410500000000000000000000000000000000046 -S315400410600000000000000000000000000000000036 -S315400410700000000000000000000000000000000026 -S315400410800000000000000000000000000000000016 -S315400410900000000000000000000000000000000006 -S315400410A000000000000000000000000000000000F6 -S315400410B000000000000000000000000000000000E6 -S315400410C000000000000000000000000000000000D6 -S315400410D000000000000000000000000000000000C6 -S315400410E000000000000000000000000000000000B6 -S315400410F000000000000000000000000000000000A6 -S315400411000000000000000000000000000000000095 -S315400411100000000000000000000000000000000085 -S315400411200000000000000000000000000000000075 -S315400411300000000000000000000000000000000065 -S315400411400000000000000000000000000000000055 -S315400411500000000000000000000000000000000045 -S315400411600000000000000000000000000000000035 -S315400411700000000000000000000000000000000025 -S315400411800000000000000000000000000000000015 -S315400411900000000000000000000000000000000005 -S315400411A000000000000000000000000000000000F5 -S315400411B000000000000000000000000000000000E5 -S315400411C000000000000000000000000000000000D5 -S315400411D000000000000000000000000000000000C5 -S315400411E000000000000000000000000000000000B5 -S315400411F000000000000000000000000000000000A5 -S315400412000000000000000000000000000000000094 -S315400412100000000000000000000000000000000084 -S315400412200000000000000000000000000000000074 -S315400412300000000000000000000000000000000064 -S315400412400000000000000000000000000000000054 -S315400412500000000000000000000000000000000044 -S315400412600000000000000000000000000000000034 -S315400412700000000000000000000000000000000024 -S315400412800000000000000000000000000000000014 -S315400412900000000000000000000000000000000004 -S315400412A000000000000000000000000000000000F4 -S315400412B000000000000000000000000000000000E4 -S315400412C000000000000000000000000000000000D4 -S315400412D000000000000000000000000000000000C4 -S315400412E000000000000000000000000000000000B4 -S315400412F000000000000000000000000000000000A4 -S315400413000000000000000000000000000000000093 -S315400413100000000000000000000000000000000083 -S315400413200000000000000000000000000000000073 -S315400413300000000000000000000000000000000063 -S315400413400000000000000000000000000000000053 -S315400413500000000000000000000000000000000043 -S315400413600000000000000000000000000000000033 -S315400413700000000000000000000000000000000023 -S315400413800000000000000000000000000000000013 -S315400413900000000000000000000000000000000003 -S315400413A000000000000000000000000000000000F3 -S315400413B000000000000000000000000000000000E3 -S315400413C000000000000000000000000000000000D3 -S315400413D000000000000000000000000000000000C3 -S315400413E000000000000000000000000000000000B3 -S315400413F000000000000000000000000000000000A3 -S315400414000000000000000000000000000000000092 -S315400414100000000000000000000000000000000082 -S315400414200000000000000000000000000000000072 -S315400414300000000000000000000000000000000062 -S315400414400000000000000000000000000000000052 -S315400414500000000000000000000000000000000042 -S315400414600000000000000000000000000000000032 -S315400414700000000000000000000000000000000022 -S315400414800000000000000000000000000000000012 -S315400414900000000000000000000000000000000002 -S315400414A000000000000000000000000000000000F2 -S315400414B000000000000000000000000000000000E2 -S315400414C000000000000000000000000000000000D2 -S315400414D000000000000000000000000000000000C2 -S315400414E000000000000000000000000000000000B2 -S315400414F000000000000000000000000000000000A2 -S315400415000000000000000000000000000000000091 -S315400415100000000000000000000000000000000081 -S315400415200000000000000000000000000000000071 -S315400415300000000000000000000000000000000061 -S315400415400000000000000000000000000000000051 -S315400415500000000000000000000000000000000041 -S315400415600000000000000000000000000000000031 -S315400415700000000000000000000000000000000021 -S315400415800000000000000000000000000000000011 -S315400415900000000000000000000000000000000001 -S315400415A000000000000000000000000000000000F1 -S315400415B000000000000000000000000000000000E1 -S315400415C000000000000000000000000000000000D1 -S315400415D000000000000000000000000000000000C1 -S315400415E000000000000000000000000000000000B1 -S315400415F000000000000000000000000000000000A1 -S315400416000000000000000000000000000000000090 -S315400416100000000000000000000000000000000080 -S315400416200000000000000000000000000000000070 -S315400416300000000000000000000000000000000060 -S315400416400000000000000000000000000000000050 -S315400416500000000000000000000000000000000040 -S315400416600000000000000000000000000000000030 -S315400416700000000000000000000000000000000020 -S315400416800000000000000000000000000000000010 -S315400416900000000000000000000000000000000000 -S315400416A000000000000000000000000000000000F0 -S315400416B000000000000000000000000000000000E0 -S315400416C000000000000000000000000000000000D0 -S315400416D000000000000000000000000000000000C0 -S315400416E000000000000000000000000000000000B0 -S315400416F000000000000000000000000000000000A0 -S31540041700000000000000000000000000000000008F -S31540041710000000000000000000000000000000007F -S31540041720000000000000000000000000000000006F -S31540041730000000000000000000000000000000005F -S31540041740000000000000000000000000000000004F -S31540041750000000000000000000000000000000003F -S31540041760000000000000000000000000000000002F -S31540041770000000000000000000000000000000001F -S31540041780000000000000000000000000000000000F -S3154004179000000000000000000000000000000000FF -S315400417A000000000000000000000000000000000EF -S315400417B000000000000000000000000000000000DF -S315400417C000000000000000000000000000000000CF -S315400417D000000000000000000000000000000000BF -S315400417E000000000000000000000000000000000AF -S315400417F0000000000000000000000000000000009F -S31540041800000000000000000000000000000000008E -S31540041810000000000000000000000000000000007E -S31540041820000000000000000000000000000000006E -S31540041830000000000000000000000000000000005E -S31540041840000000000000000000000000000000004E -S31540041850000000000000000000000000000000003E -S31540041860000000000000000000000000000000002E -S31540041870000000000000000000000000000000001E -S31540041880000000000000000000000000000000000E -S3154004189000000000000000000000000000000000FE -S315400418A000000000000000000000000000000000EE -S315400418B000000000000000000000000000000000DE -S315400418C000000000000000000000000000000000CE -S315400418D000000000000000000000000000000000BE -S315400418E000000000000000000000000000000000AE -S315400418F0000000000000000000000000000000009E -S31540041900000000000000000000000000000000008D -S31540041910000000000000000000000000000000007D -S31540041920000000000000000000000000000000006D -S31540041930000000000000000000000000000000005D -S31540041940000000000000000000000000000000004D -S31540041950000000000000000000000000000000003D -S31540041960000000000000000000000000000000002D -S31540041970000000000000000000000000000000001D -S31540041980000000000000000000000000000000000D -S3154004199000000000000000000000000000000000FD -S315400419A000000000000000000000000000000000ED -S315400419B000000000000000000000000000000000DD -S315400419C000000000000000000000000000000000CD -S315400419D000000000000000000000000000000000BD -S315400419E000000000000000000000000000000000AD -S315400419F0000000000000000000000000000000009D -S31540041A00000000000000000000000000000000008C -S31540041A10000000000000000000000000000000007C -S31540041A20000000000000000000000000000000006C -S31540041A30000000000000000000000000000000005C -S31540041A40000000000000000000000000000000004C -S31540041A50000000000000000000000000000000003C -S31540041A60000000000000000000000000000000002C -S31540041A70000000000000000000000000000000001C -S31540041A80000000000000000000000000000000000C -S31540041A9000000000000000000000000000000000FC -S31540041AA000000000000000000000000000000000EC -S31540041AB000000000000000000000000000000000DC -S31540041AC000000000000000000000000000000000CC -S31540041AD000000000000000000000000000000000BC -S31540041AE000000000000000000000000000000000AC -S31540041AF0000000000000000000000000000000009C -S31540041B00000000000000000000000000000000008B -S31540041B10000000000000000000000000000000007B -S31540041B20000000000000000000000000000000006B -S31540041B30000000000000000000000000000000005B -S31540041B40000000000000000000000000000000004B -S31540041B50000000000000000000000000000000003B -S31540041B60000000000000000000000000000000002B -S31540041B70000000000000000000000000000000001B -S31540041B80000000000000000000000000000000000B -S31540041B9000000000000000000000000000000000FB -S31540041BA000000000000000000000000000000000EB -S31540041BB000000000000000000000000000000000DB -S31540041BC000000000000000000000000000000000CB -S31540041BD000000000000000000000000000000000BB -S31540041BE000000000000000000000000000000000AB -S31540041BF0000000000000000000000000000000009B -S31540041C00000000000000000000000000000000008A -S31540041C10000000000000000000000000000000007A -S31540041C20000000000000000000000000000000006A -S31540041C30000000000000000000000000000000005A -S31540041C40000000000000000000000000000000004A -S31540041C50000000000000000000000000000000003A -S31540041C60000000000000000000000000000000002A -S31540041C70000000000000000000000000000000001A -S31540041C80000000000000000000000000000000000A -S31540041C9000000000000000000000000000000000FA -S31540041CA000000000000000000000000000000000EA -S31540041CB000000000000000000000000000000000DA -S31540041CC000000000000000000000000000000000CA -S31540041CD000000000000000000000000000000000BA -S31540041CE000000000000000000000000000000000AA -S31540041CF0000000000000000000000000000000009A -S31540041D000000000000000000000000000000000089 -S31540041D100000000000000000000000000000000079 -S31540041D200000000000000000000000000000000069 -S31540041D300000000000000000000000000000000059 -S31540041D400000000000000000000000000000000049 -S31540041D500000000000000000000000000000000039 -S31540041D600000000000000000000000000000000029 -S31540041D700000000000000000000000000000000019 -S31540041D800000000000000000000000000000000009 -S31540041D9000000000000000000000000000000000F9 -S31540041DA000000000000000000000000000000000E9 -S31540041DB000000000000000000000000000000000D9 -S31540041DC000000000000000000000000000000000C9 -S31540041DD000000000000000000000000000000000B9 -S31540041DE000000000000000000000000000000000A9 -S31540041DF00000000000000000000000000000000099 -S31540041E000000000000000000000000000000000088 -S31540041E100000000000000000000000000000000078 -S31540041E200000000000000000000000000000000068 -S31540041E300000000000000000000000000000000058 -S31540041E400000000000000000000000000000000048 -S31540041E500000000000000000000000000000000038 -S31540041E600000000000000000000000000000000028 -S31540041E700000000000000000000000000000000018 -S31540041E800000000000000000000000000000000008 -S31540041E9000000000000000000000000000000000F8 -S31540041EA000000000000000000000000000000000E8 -S31540041EB000000000000000000000000000000000D8 -S31540041EC000000000000000000000000000000000C8 -S31540041ED000000000000000000000000000000000B8 -S31540041EE000000000000000000000000000000000A8 -S31540041EF00000000000000000000000000000000098 -S31540041F000000000000000000000000000000000087 -S31540041F100000000000000000000000000000000077 -S31540041F200000000000000000000000000000000067 -S31540041F300000000000000000000000000000000057 -S31540041F400000000000000000000000000000000047 -S31540041F500000000000000000000000000000000037 -S31540041F600000000000000000000000000000000027 -S31540041F700000000000000000000000000000000017 -S31540041F800000000000000000000000000000000007 -S31540041F9000000000000000000000000000000000F7 -S31540041FA000000000000000000000000000000000E7 -S31540041FB000000000000000000000000000000000D7 -S31540041FC000000000000000000000000000000000C7 -S31540041FD000000000000000000000000000000000B7 -S31540041FE000000000000000000000000000000000A7 -S31540041FF00000000000000000000000000000000097 -S315400420000000000000000000000000000000000086 -S315400420100000000000000000000000000000000076 -S315400420200000000000000000000000000000000066 -S315400420300000000000000000000000000000000056 -S315400420400000000000000000000000000000000046 -S315400420500000000000000000000000000000000036 -S315400420600000000000000000000000000000000026 -S315400420700000000000000000000000000000000016 -S315400420800000000000000000000000000000000006 -S3154004209000000000000000000000000000000000F6 -S315400420A000000000000000000000000000000000E6 -S315400420B000000000000000000000000000000000D6 -S315400420C000000000000000000000000000000000C6 -S315400420D000000000000000000000000000000000B6 -S315400420E000000000000000000000000000000000A6 -S315400420F00000000000000000000000000000000096 -S315400421000000000000000000000000000000000085 -S315400421100000000000000000000000000000000075 -S315400421200000000000000000000000000000000065 -S315400421300000000000000000000000000000000055 -S315400421400000000000000000000000000000000045 -S315400421500000000000000000000000000000000035 -S315400421600000000000000000000000000000000025 -S315400421700000000000000000000000000000000015 -S315400421800000000000000000000000000000000005 -S3154004219000000000000000000000000000000000F5 -S315400421A000000000000000000000000000000000E5 -S315400421B000000000000000000000000000000000D5 -S315400421C000000000000000000000000000000000C5 -S315400421D000000000000000000000000000000000B5 -S315400421E000000000000000000000000000000000A5 -S315400421F00000000000000000000000000000000095 -S315400422000000000000000000000000000000000084 -S315400422100000000000000000000000000000000074 -S315400422200000000000000000000000000000000064 -S315400422300000000000000000000000000000000054 -S315400422400000000000000000000000000000000044 -S315400422500000000000000000000000000000000034 -S315400422600000000000000000000000000000000024 -S315400422700000000000000000000000000000000014 -S315400422800000000000000000000000000000000004 -S3154004229000000000000000000000000000000000F4 -S315400422A000000000000000000000000000000000E4 -S315400422B000000000000000000000000000000000D4 -S315400422C000000000000000000000000000000000C4 -S315400422D000000000000000000000000000000000B4 -S315400422E000000000000000000000000000000000A4 -S315400422F00000000000000000000000000000000094 -S315400423000000000000000000000000000000000083 -S315400423100000000000000000000000000000000073 -S315400423200000000000000000000000000000000063 -S315400423300000000000000000000000000000000053 -S315400423400000000000000000000000000000000043 -S315400423500000000000000000000000000000000033 -S315400423600000000000000000000000000000000023 -S315400423700000000000000000000000000000000013 -S315400423800000000000000000000000000000000003 -S3154004239000000000000000000000000000000000F3 -S315400423A000000000000000000000000000000000E3 -S315400423B000000000000000000000000000000000D3 -S315400423C000000000000000000000000000000000C3 -S315400423D000000000000000000000000000000000B3 -S315400423E000000000000000000000000000000000A3 -S315400423F00000000000000000000000000000000093 -S315400424000000000000000000000000000000000082 -S315400424100000000000000000000000000000000072 -S315400424200000000000000000000000000000000062 -S315400424300000000000000000000000000000000052 -S315400424400000000000000000000000000000000042 -S315400424500000000000000000000000000000000032 -S315400424600000000000000000000000000000000022 -S315400424700000000000000000000000000000000012 -S315400424800000000000000000000000000000000002 -S3154004249000000000000000000000000000000000F2 -S315400424A000000000000000000000000000000000E2 -S315400424B000000000000000000000000000000000D2 -S315400424C000000000000000000000000000000000C2 -S315400424D000000000000000000000000000000000B2 -S315400424E000000000000000000000000000000000A2 -S315400424F00000000000000000000000000000000092 -S315400425000000000000000000000000000000000081 -S315400425100000000000000000000000000000000071 -S315400425200000000000000000000000000000000061 -S315400425300000000000000000000000000000000051 -S315400425400000000000000000000000000000000041 -S315400425500000000000000000000000000000000031 -S315400425600000000000000000000000000000000021 -S315400425700000000000000000000000000000000011 -S315400425800000000000000000000000000000000001 -S3154004259000000000000000000000000000000000F1 -S315400425A000000000000000000000000000000000E1 -S315400425B000000000000000000000000000000000D1 -S315400425C000000000000000000000000000000000C1 -S315400425D000000000000000000000000000000000B1 -S315400425E000000000000000000000000000000000A1 -S315400425F00000000000000000000000000000000091 -S315400426000000000000000000000000000000000080 -S315400426100000000000000000000000000000000070 -S315400426200000000000000000000000000000000060 -S315400426300000000000000000000000000000000050 -S315400426400000000000000000000000000000000040 -S315400426500000000000000000000000000000000030 -S315400426600000000000000000000000000000000020 -S315400426700000000000000000000000000000000010 -S315400426800000000000000000000000000000000000 -S3154004269000000000000000000000000000000000F0 -S315400426A000000000000000000000000000000000E0 -S315400426B000000000000000000000000000000000D0 -S315400426C000000000000000000000000000000000C0 -S315400426D000000000000000000000000000000000B0 -S315400426E000000000000000000000000000000000A0 -S315400426F00000000000000000000000000000000090 -S31540042700000000000000000000000000000000007F -S31540042710000000000000000000000000000000006F -S31540042720000000000000000000000000000000005F -S31540042730000000000000000000000000000000004F -S31540042740000000000000000000000000000000003F -S31540042750000000000000000000000000000000002F -S31540042760000000000000000000000000000000001F -S31540042770000000000000000000000000000000000F -S3154004278000000000000000000000000000000000FF -S3154004279000000000000000000000000000000000EF -S315400427A000000000000000000000000000000000DF -S315400427B000000000000000000000000000000000CF -S315400427C000000000000000000000000000000000BF -S315400427D000000000000000000000000000000000AF -S315400427E0000000000000000000000000000000009F -S315400427F0000000000000000000000000000000008F -S31540042800000000000000000000000000000000007E -S31540042810000000000000000000000000000000006E -S31540042820000000000000000000000000000000005E -S31540042830000000000000000000000000000000004E -S31540042840000000000000000000000000000000003E -S31540042850000000000000000000000000000000002E -S31540042860000000000000000000000000000000001E -S31540042870000000000000000000000000000000000E -S3154004288000000000000000000000000000000000FE -S3154004289000000000000000000000000000000000EE -S315400428A000000000000000000000000000000000DE -S315400428B000000000000000000000000000000000CE -S315400428C000000000000000000000000000000000BE -S315400428D000000000000000000000000000000000AE -S315400428E0000000000000000000000000000000009E -S315400428F0000000000000000000000000000000008E -S31540042900000000000000000000000000000000007D -S31540042910000000000000000000000000000000006D -S31540042920000000000000000000000000000000005D -S31540042930000000000000000000000000000000004D -S31540042940000000000000000000000000000000003D -S31540042950000000000000000000000000000000002D -S31540042960000000000000000000000000000000001D -S31540042970000000000000000000000000000000000D -S3154004298000000000000000000000000000000000FD -S3154004299000000000000000000000000000000000ED -S315400429A000000000000000000000000000000000DD -S315400429B000000000000000000000000000000000CD -S315400429C000000000000000000000000000000000BD -S315400429D000000000000000000000000000000000AD -S315400429E0000000000000000000000000000000009D -S315400429F0000000000000000000000000000000008D -S31540042A00000000000000000000000000000000007C -S31540042A10000000000000000000000000000000006C -S31540042A20000000000000000000000000000000005C -S31540042A30000000000000000000000000000000004C -S31540042A40000000000000000000000000000000003C -S31540042A50000000000000000000000000000000002C -S31540042A60000000000000000000000000000000001C -S31540042A70000000000000000000000000000000000C -S31540042A8000000000000000000000000000000000FC -S31540042A9000000000000000000000000000000000EC -S31540042AA000000000000000000000000000000000DC -S31540042AB000000000000000000000000000000000CC -S31540042AC000000000000000000000000000000000BC -S31540042AD000000000000000000000000000000000AC -S31540042AE0000000000000000000000000000000009C -S31540042AF0000000000000000000000000000000008C -S31540042B00000000000000000000000000000000007B -S31540042B10000000000000000000000000000000006B -S31540042B20000000000000000000000000000000005B -S31540042B30000000000000000000000000000000004B -S31540042B40000000000000000000000000000000003B -S31540042B50000000000000000000000000000000002B -S31540042B60000000000000000000000000000000001B -S31540042B70000000000000000000000000000000000B -S31540042B8000000000000000000000000000000000FB -S31540042B9000000000000000000000000000000000EB -S31540042BA000000000000000000000000000000000DB -S31540042BB000000000000000000000000000000000CB -S31540042BC000000000000000000000000000000000BB -S31540042BD000000000000000000000000000000000AB -S31540042BE0000000000000000000000000000000009B -S31540042BF0000000000000000000000000000000008B -S31540042C00000000000000000000000000000000007A -S31540042C10000000000000000000000000000000006A -S31540042C20000000000000000000000000000000005A -S31540042C30000000000000000000000000000000004A -S31540042C40000000000000000000000000000000003A -S31540042C50000000000000000000000000000000002A -S31540042C60000000000000000000000000000000001A -S31540042C70000000000000000000000000000000000A -S31540042C8000000000000000000000000000000000FA -S31540042C9000000000000000000000000000000000EA -S31540042CA000000000000000000000000000000000DA -S31540042CB000000000000000000000000000000000CA -S31540042CC000000000000000000000000000000000BA -S31540042CD000000000000000000000000000000000AA -S31540042CE0000000000000000000000000000000009A -S31540042CF0000000000000000000000000000000008A -S31540042D000000000000000000000000000000000079 -S31540042D100000000000000000000000000000000069 -S31540042D200000000000000000000000000000000059 -S31540042D300000000000000000000000000000000049 -S31540042D400000000000000000000000000000000039 -S31540042D500000000000000000000000000000000029 -S31540042D600000000000000000000000000000000019 -S31540042D700000000000000000000000000000000009 -S31540042D8000000000000000000000000000000000F9 -S31540042D9000000000000000000000000000000000E9 -S31540042DA000000000000000000000000000000000D9 -S31540042DB000000000000000000000000000000000C9 -S31540042DC000000000000000000000000000000000B9 -S31540042DD000000000000000000000000000000000A9 -S31540042DE00000000000000000000000000000000099 -S31540042DF00000000000000000000000000000000089 -S31540042E000000000000000000000000000000000078 -S31540042E100000000000000000000000000000000068 -S31540042E200000000000000000000000000000000058 -S31540042E300000000000000000000000000000000048 -S31540042E400000000000000000000000000000000038 -S31540042E500000000000000000000000000000000028 -S31540042E600000000000000000000000000000000018 -S31540042E700000000000000000000000000000000008 -S31540042E8000000000000000000000000000000000F8 -S31540042E9000000000000000000000000000000000E8 -S31540042EA000000000000000000000000000000000D8 -S31540042EB000000000000000000000000000000000C8 -S31540042EC000000000000000000000000000000000B8 -S31540042ED000000000000000000000000000000000A8 -S31540042EE00000000000000000000000000000000098 -S31540042EF00000000000000000000000000000000088 -S31540042F000000000000000000000000000000000077 -S31540042F100000000000000000000000000000000067 -S31540042F200000000000000000000000000000000057 -S31540042F300000000000000000000000000000000047 -S31540042F400000000000000000000000000000000037 -S31540042F500000000000000000000000000000000027 -S31540042F600000000000000000000000000000000017 -S31540042F700000000000000000000000000000000007 -S31540042F8000000000000000000000000000000000F7 -S31540042F9000000000000000000000000000000000E7 -S31540042FA000000000000000000000000000000000D7 -S31540042FB000000000000000000000000000000000C7 -S31540042FC000000000000000000000000000000000B7 -S31540042FD000000000000000000000000000000000A7 -S31540042FE00000000000000000000000000000000097 -S31540042FF00000000000000000000000000000000087 -S315400430000000000000000000000000000000000076 -S315400430100000000000000000000000000000000066 -S315400430200000000000000000000000000000000056 -S315400430300000000000000000000000000000000046 -S315400430400000000000000000000000000000000036 -S315400430500000000000000000000000000000000026 -S315400430600000000000000000000000000000000016 -S315400430700000000000000000000000000000000006 -S3154004308000000000000000000000000000000000F6 -S3154004309000000000000000000000000000000000E6 -S315400430A000000000000000000000000000000000D6 -S315400430B000000000000000000000000000000000C6 -S315400430C000000000000000000000000000000000B6 -S315400430D000000000000000000000000000000000A6 -S315400430E00000000000000000000000000000000096 -S315400430F00000000000000000000000000000000086 -S315400431000000000000000000000000000000000075 -S315400431100000000000000000000000000000000065 -S315400431200000000000000000000000000000000055 -S315400431300000000000000000000000000000000045 -S315400431400000000000000000000000000000000035 -S315400431500000000000000000000000000000000025 -S315400431600000000000000000000000000000000015 -S315400431700000000000000000000000000000000005 -S3154004318000000000000000000000000000000000F5 -S3154004319000000000000000000000000000000000E5 -S315400431A000000000000000000000000000000000D5 -S315400431B000000000000000000000000000000000C5 -S315400431C000000000000000000000000000000000B5 -S315400431D000000000000000000000000000000000A5 -S315400431E00000000000000000000000000000000095 -S315400431F00000000000000000000000000000000085 -S315400432000000000000000000000000000000000074 -S315400432100000000000000000000000000000000064 -S315400432200000000000000000000000000000000054 -S315400432300000000000000000000000000000000044 -S315400432400000000000000000000000000000000034 -S315400432500000000000000000000000000000000024 -S315400432600000000000000000000000000000000014 -S315400432700000000000000000000000000000000004 -S3154004328000000000000000000000000000000000F4 -S3154004329000000000000000000000000000000000E4 -S315400432A000000000000000000000000000000000D4 -S315400432B000000000000000000000000000000000C4 -S315400432C000000000000000000000000000000000B4 -S315400432D000000000000000000000000000000000A4 -S315400432E00000000000000000000000000000000094 -S315400432F00000000000000000000000000000000084 -S315400433000000000000000000000000000000000073 -S315400433100000000000000000000000000000000063 -S315400433200000000000000000000000000000000053 -S315400433300000000000000000000000000000000043 -S315400433400000000000000000000000000000000033 -S315400433500000000000000000000000000000000023 -S315400433600000000000000000000000000000000013 -S315400433700000000000000000000000000000000003 -S3154004338000000000000000000000000000000000F3 -S3154004339000000000000000000000000000000000E3 -S315400433A000000000000000000000000000000000D3 -S315400433B000000000000000000000000000000000C3 -S315400433C000000000000000000000000000000000B3 -S315400433D000000000000000000000000000000000A3 -S315400433E00000000000000000000000000000000093 -S315400433F00000000000000000000000000000000083 -S315400434000000000000000000000000000000000072 -S315400434100000000000000000000000000000000062 -S315400434200000000000000000000000000000000052 -S315400434300000000000000000000000000000000042 -S315400434400000000000000000000000000000000032 -S315400434500000000000000000000000000000000022 -S315400434600000000000000000000000000000000012 -S315400434700000000000000000000000000000000002 -S3154004348000000000000000000000000000000000F2 -S3154004349000000000000000000000000000000000E2 -S315400434A000000000000000000000000000000000D2 -S315400434B000000000000000000000000000000000C2 -S315400434C000000000000000000000000000000000B2 -S315400434D000000000000000000000000000000000A2 -S315400434E00000000000000000000000000000000092 -S315400434F00000000000000000000000000000000082 -S315400435000000000000000000000000000000000071 -S315400435100000000000000000000000000000000061 -S315400435200000000000000000000000000000000051 -S315400435300000000000000000000000000000000041 -S315400435400000000000000000000000000000000031 -S315400435500000000000000000000000000000000021 -S315400435600000000000000000000000000000000011 -S315400435700000000000000000000000000000000001 -S3154004358000000000000000000000000000000000F1 -S3154004359000000000000000000000000000000000E1 -S315400435A000000000000000000000000000000000D1 -S315400435B000000000000000000000000000000000C1 -S315400435C000000000000000000000000000000000B1 -S315400435D000000000000000000000000000000000A1 -S315400435E00000000000000000000000000000000091 -S315400435F00000000000000000000000000000000081 -S315400436000000000000000000000000000000000070 -S315400436100000000000000000000000000000000060 -S315400436200000000000000000000000000000000050 -S315400436300000000000000000000000000000000040 -S315400436400000000000000000000000000000000030 -S315400436500000000000000000000000000000000020 -S315400436600000000000000000000000000000000010 -S315400436700000000000000000000000000000000000 -S3154004368000000000000000000000000000000000F0 -S3154004369000000000000000000000000000000000E0 -S315400436A000000000000000000000000000000000D0 -S315400436B000000000000000000000000000000000C0 -S315400436C000000000000000000000000000000000B0 -S315400436D000000000000000000000000000000000A0 -S315400436E00000000000000000000000000000000090 -S315400436F00000000000000000000000000000000080 -S31540043700000000000000000000000000000000006F -S31540043710000000000000000000000000000000005F -S31540043720000000000000000000000000000000004F -S31540043730000000000000000000000000000000003F -S31540043740000000000000000000000000000000002F -S31540043750000000000000000000000000000000001F -S31540043760000000000000000000000000000000000F -S3154004377000000000000000000000000000000000FF -S3154004378000000000000000000000000000000000EF -S3154004379000000000000000000000000000000000DF -S315400437A000000000000000000000000000000000CF -S315400437B000000000000000000000000000000000BF -S315400437C000000000000000000000000000000000AF -S315400437D0000000000000000000000000000000009F -S315400437E0000000000000000000000000000000008F -S315400437F0000000000000000000000000000000007F -S31540043800000000000000000000000000000000006E -S31540043810000000000000000000000000000000005E -S31540043820000000000000000000000000000000004E -S31540043830000000000000000000000000000000003E -S31540043840000000000000000000000000000000002E -S31540043850000000000000000000000000000000001E -S31540043860000000000000000000000000000000000E -S3154004387000000000000000000000000000000000FE -S3154004388000000000000000000000000000000000EE -S3154004389000000000000000000000000000000000DE -S315400438A000000000000000000000000000000000CE -S315400438B000000000000000000000000000000000BE -S315400438C000000000000000000000000000000000AE -S315400438D0000000000000000000000000000000009E -S315400438E0000000000000000000000000000000008E -S315400438F0000000000000000000000000000000007E -S31540043900000000000000000000000000000000006D -S31540043910000000000000000000000000000000005D -S31540043920000000000000000000000000000000004D -S31540043930000000000000000000000000000000003D -S31540043940000000000000000000000000000000002D -S31540043950000000000000000000000000000000001D -S31540043960000000000000000000000000000000000D -S3154004397000000000000000000000000000000000FD -S3154004398000000000000000000000000000000000ED -S3154004399000000000000000000000000000000000DD -S315400439A000000000000000000000000000000000CD -S315400439B000000000000000000000000000000000BD -S315400439C000000000000000000000000000000000AD -S315400439D0000000000000000000000000000000009D -S315400439E0000000000000000000000000000000008D -S315400439F0000000000000000000000000000000007D -S31540043A00000000000000000000000000000000006C -S31540043A10000000000000000000000000000000005C -S31540043A20000000000000000000000000000000004C -S31540043A30000000000000000000000000000000003C -S31540043A40000000000000000000000000000000002C -S31540043A50000000000000000000000000000000001C -S31540043A60000000000000000000000000000000000C -S31540043A7000000000000000000000000000000000FC -S31540043A8000000000000000000000000000000000EC -S31540043A9000000000000000000000000000000000DC -S31540043AA000000000000000000000000000000000CC -S31540043AB000000000000000000000000000000000BC -S31540043AC000000000000000000000000000000000AC -S31540043AD0000000000000000000000000000000009C -S31540043AE0000000000000000000000000000000008C -S31540043AF0000000000000000000000000000000007C -S31540043B00000000000000000000000000000000006B -S31540043B10000000000000000000000000000000005B -S31540043B20000000000000000000000000000000004B -S31540043B30000000000000000000000000000000003B -S31540043B40000000000000000000000000000000002B -S31540043B50000000000000000000000000000000001B -S31540043B60000000000000000000000000000000000B -S31540043B7000000000000000000000000000000000FB -S31540043B8000000000000000000000000000000000EB -S31540043B9000000000000000000000000000000000DB -S31540043BA000000000000000000000000000000000CB -S31540043BB000000000000000000000000000000000BB -S31540043BC000000000000000000000000000000000AB -S31540043BD0000000000000000000000000000000009B -S31540043BE0000000000000000000000000000000008B -S31540043BF0000000000000000000000000000000007B -S31540043C00000000000000000000000000000000006A -S31540043C10000000000000000000000000000000005A -S31540043C20000000000000000000000000000000004A -S31540043C30000000000000000000000000000000003A -S31540043C40000000000000000000000000000000002A -S31540043C50000000000000000000000000000000001A -S31540043C60000000000000000000000000000000000A -S31540043C7000000000000000000000000000000000FA -S31540043C8000000000000000000000000000000000EA -S31540043C9000000000000000000000000000000000DA -S31540043CA000000000000000000000000000000000CA -S31540043CB000000000000000000000000000000000BA -S31540043CC000000000000000000000000000000000AA -S31540043CD0000000000000000000000000000000009A -S31540043CE0000000000000000000000000000000008A -S31540043CF0000000000000000000000000000000007A -S31540043D000000000000000000000000000000000069 -S31540043D100000000000000000000000000000000059 -S31540043D200000000000000000000000000000000049 -S31540043D300000000000000000000000000000000039 -S31540043D400000000000000000000000000000000029 -S31540043D500000000000000000000000000000000019 -S31540043D600000000000000000000000000000000009 -S31540043D7000000000000000000000000000000000F9 -S31540043D8000000000000000000000000000000000E9 -S31540043D9000000000000000000000000000000000D9 -S31540043DA000000000000000000000000000000000C9 -S31540043DB000000000000000000000000000000000B9 -S31540043DC000000000000000000000000000000000A9 -S31540043DD00000000000000000000000000000000099 -S31540043DE00000000000000000000000000000000089 -S31540043DF00000000000000000000000000000000079 -S31540043E000000000000000000000000000000000068 -S31540043E100000000000000000000000000000000058 -S31540043E200000000000000000000000000000000048 -S31540043E300000000000000000000000000000000038 -S31540043E400000000000000000000000000000000028 -S31540043E500000000000000000000000000000000018 -S31540043E600000000000000000000000000000000008 -S31540043E7000000000000000000000000000000000F8 -S31540043E8000000000000000000000000000000000E8 -S31540043E9000000000000000000000000000000000D8 -S31540043EA000000000000000000000000000000000C8 -S31540043EB000000000000000000000000000000000B8 -S31540043EC000000000000000000000000000000000A8 -S31540043ED00000000000000000000000000000000098 -S31540043EE00000000000000000000000000000000088 -S31540043EF00000000000000000000000000000000078 -S31540043F000000000000000000000000000000000067 -S31540043F100000000000000000000000000000000057 -S31540043F200000000000000000000000000000000047 -S31540043F300000000000000000000000000000000037 -S31540043F400000000000000000000000000000000027 -S31540043F500000000000000000000000000000000017 -S31540043F600000000000000000000000000000000007 -S31540043F7000000000000000000000000000000000F7 -S31540043F8000000000000000000000000000000000E7 -S31540043F9000000000000000000000000000000000D7 -S31540043FA000000000000000000000000000000000C7 -S31540043FB000000000000000000000000000000000B7 -S31540043FC000000000000000000000000000000000A7 -S31540043FD00000000000000000000000000000000097 -S31540043FE00000000000000000000000000000000087 -S31540043FF00000000000000000000000000000000077 -S315400440000000000000000000000000000000000066 -S315400440100000000000000000000000000000000056 -S315400440200000000000000000000000000000000046 -S315400440300000000000000000000000000000000036 -S315400440400000000000000000000000000000000026 -S315400440500000000000000000000000000000000016 -S315400440600000000000000000000000000000000006 -S3154004407000000000000000000000000000000000F6 -S3154004408000000000000000000000000000000000E6 -S3154004409000000000000000000000000000000000D6 -S315400440A000000000000000000000000000000000C6 -S315400440B000000000000000000000000000000000B6 -S315400440C000000000000000000000000000000000A6 -S315400440D00000000000000000000000000000000096 -S315400440E00000000000000000000000000000000086 -S315400440F00000000000000000000000000000000076 -S315400441000000000000000000000000000000000065 -S315400441100000000000000000000000000000000055 -S315400441200000000000000000000000000000000045 -S315400441300000000000000000000000000000000035 -S315400441400000000000000000000000000000000025 -S315400441500000000000000000000000000000000015 -S315400441600000000000000000000000000000000005 -S3154004417000000000000000000000000000000000F5 -S3154004418000000000000000000000000000000000E5 -S3154004419000000000000000000000000000000000D5 -S315400441A000000000000000000000000000000000C5 -S315400441B000000000000000000000000000000000B5 -S315400441C000000000000000000000000000000000A5 -S315400441D00000000000000000000000000000000095 -S315400441E00000000000000000000000000000000085 -S315400441F00000000000000000000000000000000075 -S315400442000000000000000000000000000000000064 -S315400442100000000000000000000000000000000054 -S315400442200000000000000000000000000000000044 -S315400442300000000000000000000000000000000034 -S315400442400000000000000000000000000000000024 -S315400442500000000000000000000000000000000014 -S315400442600000000000000000000000000000000004 -S3154004427000000000000000000000000000000000F4 -S3154004428000000000000000000000000000000000E4 -S3154004429000000000000000000000000000000000D4 -S315400442A000000000000000000000000000000000C4 -S315400442B000000000000000000000000000000000B4 -S315400442C000000000000000000000000000000000A4 -S315400442D00000000000000000000000000000000094 -S315400442E00000000000000000000000000000000084 -S315400442F00000000000000000000000000000000074 -S315400443000000000000000000000000000000000063 -S315400443100000000000000000000000000000000053 -S315400443200000000000000000000000000000000043 -S315400443300000000000000000000000000000000033 -S315400443400000000000000000000000000000000023 -S315400443500000000000000000000000000000000013 -S315400443600000000000000000000000000000000003 -S3154004437000000000000000000000000000000000F3 -S3154004438000000000000000000000000000000000E3 -S3154004439000000000000000000000000000000000D3 -S315400443A000000000000000000000000000000000C3 -S315400443B000000000000000000000000000000000B3 -S315400443C000000000000000000000000000000000A3 -S315400443D00000000000000000000000000000000093 -S315400443E00000000000000000000000000000000083 -S315400443F00000000000000000000000000000000073 -S315400444000000000000000000000000000000000062 -S315400444100000000000000000000000000000000052 -S315400444200000000000000000000000000000000042 -S315400444300000000000000000000000000000000032 -S315400444400000000000000000000000000000000022 -S315400444500000000000000000000000000000000012 -S315400444600000000000000000000000000000000002 -S3154004447000000000000000000000000000000000F2 -S3154004448000000000000000000000000000000000E2 -S3154004449000000000000000000000000000000000D2 -S315400444A000000000000000000000000000000000C2 -S315400444B000000000000000000000000000000000B2 -S315400444C000000000000000000000000000000000A2 -S315400444D00000000000000000000000000000000092 -S315400444E00000000000000000000000000000000082 -S315400444F00000000000000000000000000000000072 -S315400445000000000000000000000000000000000061 -S315400445100000000000000000000000000000000051 -S315400445200000000000000000000000000000000041 -S315400445300000000000000000000000000000000031 -S315400445400000000000000000000000000000000021 -S315400445500000000000000000000000000000000011 -S315400445600000000000000000000000000000000001 -S3154004457000000000000000000000000000000000F1 -S3154004458000000000000000000000000000000000E1 -S3154004459000000000000000000000000000000000D1 -S315400445A000000000000000000000000000000000C1 -S315400445B000000000000000000000000000000000B1 -S315400445C000000000000000000000000000000000A1 -S315400445D00000000000000000000000000000000091 -S315400445E00000000000000000000000000000000081 -S315400445F00000000000000000000000000000000071 -S315400446000000000000000000000000000000000060 -S315400446100000000000000000000000000000000050 -S315400446200000000000000000000000000000000040 -S315400446300000000000000000000000000000000030 -S315400446400000000000000000000000000000000020 -S315400446500000000000000000000000000000000010 -S315400446600000000000000000000000000000000000 -S3154004467000000000000000000000000000000000F0 -S3154004468000000000000000000000000000000000E0 -S3154004469000000000000000000000000000000000D0 -S315400446A000000000000000000000000000000000C0 -S315400446B000000000000000000000000000000000B0 -S315400446C000000000000000000000000000000000A0 -S315400446D00000000000000000000000000000000090 -S315400446E00000000000000000000000000000000080 -S315400446F00000000000000000000000000000000070 -S31540044700000000000000000000000000000000005F -S31540044710000000000000000000000000000000004F -S31540044720000000000000000000000000000000003F -S31540044730000000000000000000000000000000002F -S31540044740000000000000000000000000000000001F -S31540044750000000000000000000000000000000000F -S3154004476000000000000000000000000000000000FF -S3154004477000000000000000000000000000000000EF -S3154004478000000000000000000000000000000000DF -S3154004479000000000000000000000000000000000CF -S315400447A000000000000000000000000000000000BF -S315400447B000000000000000000000000000000000AF -S315400447C0000000000000000000000000000000009F -S315400447D0000000000000000000000000000000008F -S315400447E0000000000000000000000000000000007F -S315400447F0000000000000000000000000000000006F -S31540044800000000000000000000000000000000005E -S31540044810000000000000000000000000000000004E -S31540044820000000000000000000000000000000003E -S31540044830000000000000000000000000000000002E -S31540044840000000000000000000000000000000001E -S31540044850000000000000000000000000000000000E -S3154004486000000000000000000000000000000000FE -S3154004487000000000000000000000000000000000EE -S3154004488000000000000000000000000000000000DE -S3154004489000000000000000000000000000000000CE -S315400448A000000000000000000000000000000000BE -S315400448B000000000000000000000000000000000AE -S315400448C0000000000000000000000000000000009E -S315400448D0000000000000000000000000000000008E -S315400448E0000000000000000000000000000000007E -S315400448F0000000000000000000000000000000006E -S31540044900000000000000000000000000000000005D -S31540044910000000000000000000000000000000004D -S31540044920000000000000000000000000000000003D -S31540044930000000000000000000000000000000002D -S31540044940000000000000000000000000000000001D -S31540044950000000000000000000000000000000000D -S3154004496000000000000000000000000000000000FD -S3154004497000000000000000000000000000000000ED -S3154004498000000000000000000000000000000000DD -S3154004499000000000000000000000000000000000CD -S315400449A000000000000000000000000000000000BD -S315400449B000000000000000000000000000000000AD -S315400449C0000000000000000000000000000000009D -S315400449D0000000000000000000000000000000008D -S315400449E0000000000000000000000000000000007D -S315400449F0000000000000000000000000000000006D -S31540044A00000000000000000000000000000000005C -S31540044A10000000000000000000000000000000004C -S31540044A20000000000000000000000000000000003C -S31540044A30000000000000000000000000000000002C -S31540044A40000000000000000000000000000000001C -S31540044A50000000000000000000000000000000000C -S31540044A6000000000000000000000000000000000FC -S31540044A7000000000000000000000000000000000EC -S31540044A8000000000000000000000000000000000DC -S31540044A9000000000000000000000000000000000CC -S31540044AA000000000000000000000000000000000BC -S31540044AB000000000000000000000000000000000AC -S31540044AC0000000000000000000000000000000009C -S31540044AD0000000000000000000000000000000008C -S31540044AE0000000000000000000000000000000007C -S31540044AF0000000000000000000000000000000006C -S31540044B00000000000000000000000000000000005B -S31540044B10000000000000000000000000000000004B -S31540044B20000000000000000000000000000000003B -S31540044B30000000000000000000000000000000002B -S31540044B40000000000000000000000000000000001B -S31540044B50000000000000000000000000000000000B -S31540044B6000000000000000000000000000000000FB -S31540044B7000000000000000000000000000000000EB -S31540044B8000000000000000000000000000000000DB -S31540044B9000000000000000000000000000000000CB -S31540044BA000000000000000000000000000000000BB -S31540044BB000000000000000000000000000000000AB -S31540044BC0000000000000000000000000000000009B -S31540044BD0000000000000000000000000000000008B -S31540044BE0000000000000000000000000000000007B -S31540044BF0000000000000000000000000000000006B -S31540044C00000000000000000000000000000000005A -S31540044C10000000000000000000000000000000004A -S31540044C20000000000000000000000000000000003A -S31540044C30000000000000000000000000000000002A -S31540044C40000000000000000000000000000000001A -S31540044C50000000000000000000000000000000000A -S31540044C6000000000000000000000000000000000FA -S31540044C7000000000000000000000000000000000EA -S31540044C8000000000000000000000000000000000DA -S31540044C9000000000000000000000000000000000CA -S31540044CA000000000000000000000000000000000BA -S31540044CB000000000000000000000000000000000AA -S31540044CC0000000000000000000000000000000009A -S31540044CD0000000000000000000000000000000008A -S31540044CE0000000000000000000000000000000007A -S31540044CF0000000000000000000000000000000006A -S31540044D000000000000000000000000000000000059 -S31540044D100000000000000000000000000000000049 -S31540044D200000000000000000000000000000000039 -S31540044D300000000000000000000000000000000029 -S31540044D400000000000000000000000000000000019 -S31540044D500000000000000000000000000000000009 -S31540044D6000000000000000000000000000000000F9 -S31540044D7000000000000000000000000000000000E9 -S31540044D8000000000000000000000000000000000D9 -S31540044D9000000000000000000000000000000000C9 -S31540044DA000000000000000000000000000000000B9 -S31540044DB000000000000000000000000000000000A9 -S31540044DC00000000000000000000000000000000099 -S31540044DD00000000000000000000000000000000089 -S31540044DE00000000000000000000000000000000079 -S31540044DF00000000000000000000000000000000069 -S31540044E000000000000000000000000000000000058 -S31540044E100000000000000000000000000000000048 -S31540044E200000000000000000000000000000000038 -S31540044E300000000000000000000000000000000028 -S31540044E400000000000000000000000000000000018 -S31540044E500000000000000000000000000000000008 -S31540044E6000000000000000000000000000000000F8 -S31540044E7000000000000000000000000000000000E8 -S31540044E8000000000000000000000000000000000D8 -S31540044E9000000000000000000000000000000000C8 -S31540044EA000000000000000000000000000000000B8 -S31540044EB000000000000000000000000000000000A8 -S31540044EC00000000000000000000000000000000098 -S31540044ED00000000000000000000000000000000088 -S31540044EE00000000000000000000000000000000078 -S31540044EF00000000000000000000000000000000068 -S31540044F000000000000000000000000000000000057 -S31540044F100000000000000000000000000000000047 -S31540044F200000000000000000000000000000000037 -S31540044F300000000000000000000000000000000027 -S31540044F400000000000000000000000000000000017 -S31540044F500000000000000000000000000000000007 -S31540044F6000000000000000000000000000000000F7 -S31540044F7000000000000000000000000000000000E7 -S31540044F8000000000000000000000000000000000D7 -S31540044F9000000000000000000000000000000000C7 -S31540044FA000000000000000000000000000000000B7 -S31540044FB000000000000000000000000000000000A7 -S31540044FC00000000000000000000000000000000097 -S31540044FD00000000000000000000000000000000087 -S31540044FE00000000000000000000000000000000077 -S31540044FF00000000000000000000000000000000067 -S315400450000000000000000000000000000000000056 -S315400450100000000000000000000000000000000046 -S315400450200000000000000000000000000000000036 -S315400450300000000000000000000000000000000026 -S315400450400000000000000000000000000000000016 -S315400450500000000000000000000000000000000006 -S3154004506000000000000000000000000000000000F6 -S3154004507000000000000000000000000000000000E6 -S3154004508000000000000000000000000000000000D6 -S3154004509000000000000000000000000000000000C6 -S315400450A000000000000000000000000000000000B6 -S315400450B000000000000000000000000000000000A6 -S315400450C00000000000000000000000000000000096 -S315400450D00000000000000000000000000000000086 -S315400450E00000000000000000000000000000000076 -S315400450F00000000000000000000000000000000066 -S315400451000000000000000000000000000000000055 -S315400451100000000000000000000000000000000045 -S315400451200000000000000000000000000000000035 -S315400451300000000000000000000000000000000025 -S315400451400000000000000000000000000000000015 -S315400451500000000000000000000000000000000005 -S3154004516000000000000000000000000000000000F5 -S3154004517000000000000000000000000000000000E5 -S3154004518000000000000000000000000000000000D5 -S3154004519000000000000000000000000000000000C5 -S315400451A000000000000000000000000000000000B5 -S315400451B000000000000000000000000000000000A5 -S315400451C00000000000000000000000000000000095 -S315400451D00000000000000000000000000000000085 -S315400451E00000000000000000000000000000000075 -S315400451F00000000000000000000000000000000065 -S315400452000000000000000000000000000000000054 -S315400452100000000000000000000000000000000044 -S315400452200000000000000000000000000000000034 -S315400452300000000000000000000000000000000024 -S315400452400000000000000000000000000000000014 -S315400452500000000000000000000000000000000004 -S3154004526000000000000000000000000000000000F4 -S3154004527000000000000000000000000000000000E4 -S3154004528000000000000000000000000000000000D4 -S3154004529000000000000000000000000000000000C4 -S315400452A000000000000000000000000000000000B4 -S315400452B000000000000000000000000000000000A4 -S315400452C00000000000000000000000000000000094 -S315400452D00000000000000000000000000000000084 -S315400452E00000000000000000000000000000000074 -S315400452F00000000000000000000000000000000064 -S315400453000000000000000000000000000000000053 -S315400453100000000000000000000000000000000043 -S315400453200000000000000000000000000000000033 -S315400453300000000000000000000000000000000023 -S315400453400000000000000000000000000000000013 -S315400453500000000000000000000000000000000003 -S3154004536000000000000000000000000000000000F3 -S3154004537000000000000000000000000000000000E3 -S3154004538000000000000000000000000000000000D3 -S3154004539000000000000000000000000000000000C3 -S315400453A000000000000000000000000000000000B3 -S315400453B000000000000000000000000000000000A3 -S315400453C00000000000000000000000000000000093 -S315400453D00000000000000000000000000000000083 -S315400453E00000000000000000000000000000000073 -S315400453F00000000000000000000000000000000063 -S315400454000000000000000000000000000000000052 -S315400454100000000000000000000000000000000042 -S315400454200000000000000000000000000000000032 -S315400454300000000000000000000000000000000022 -S315400454400000000000000000000000000000000012 -S315400454500000000000000000000000000000000002 -S3154004546000000000000000000000000000000000F2 -S3154004547000000000000000000000000000000000E2 -S3154004548000000000000000000000000000000000D2 -S3154004549000000000000000000000000000000000C2 -S315400454A000000000000000000000000000000000B2 -S315400454B000000000000000000000000000000000A2 -S315400454C00000000000000000000000000000000092 -S315400454D00000000000000000000000000000000082 -S315400454E00000000000000000000000000000000072 -S315400454F00000000000000000000000000000000062 -S315400455000000000000000000000000000000000051 -S315400455100000000000000000000000000000000041 -S315400455200000000000000000000000000000000031 -S315400455300000000000000000000000000000000021 -S315400455400000000000000000000000000000000011 -S315400455500000000000000000000000000000000001 -S3154004556000000000000000000000000000000000F1 -S3154004557000000000000000000000000000000000E1 -S3154004558000000000000000000000000000000000D1 -S3154004559000000000000000000000000000000000C1 -S315400455A000000000000000000000000000000000B1 -S315400455B000000000000000000000000000000000A1 -S315400455C00000000000000000000000000000000091 -S315400455D00000000000000000000000000000000081 -S315400455E00000000000000000000000000000000071 -S315400455F00000000000000000000000000000000061 -S315400456000000000000000000000000000000000050 -S315400456100000000000000000000000000000000040 -S315400456200000000000000000000000000000000030 -S315400456300000000000000000000000000000000020 -S315400456400000000000000000000000000000000010 -S315400456500000000000000000000000000000000000 -S3154004566000000000000000000000000000000000F0 -S3154004567000000000000000000000000000000000E0 -S3154004568000000000000000000000000000000000D0 -S3154004569000000000000000000000000000000000C0 -S315400456A000000000000000000000000000000000B0 -S315400456B000000000000000000000000000000000A0 -S315400456C00000000000000000000000000000000090 -S315400456D00000000000000000000000000000000080 -S315400456E00000000000000000000000000000000070 -S315400456F00000000000000000000000000000000060 -S31540045700000000000000000000000000000000004F -S31540045710000000000000000000000000000000003F -S31540045720000000000000000000000000000000002F -S31540045730000000000000000000000000000000001F -S31540045740000000000000000000000000000000000F -S3154004575000000000000000000000000000000000FF -S3154004576000000000000000000000000000000000EF -S3154004577000000000000000000000000000000000DF -S3154004578000000000000000000000000000000000CF -S3154004579000000000000000000000000000000000BF -S315400457A000000000000000000000000000000000AF -S315400457B0000000000000000000000000000000009F -S315400457C0000000000000000000000000000000008F -S315400457D0000000000000000000000000000000007F -S315400457E0000000000000000000000000000000006F -S315400457F0000000000000000000000000000000005F -S31540045800000000000000000000000000000000004E -S31540045810000000000000000000000000000000003E -S31540045820000000000000000000000000000000002E -S31540045830000000000000000000000000000000001E -S31540045840000000000000000000000000000000000E -S3154004585000000000000000000000000000000000FE -S3154004586000000000000000000000000000000000EE -S3154004587000000000000000000000000000000000DE -S3154004588000000000000000000000000000000000CE -S3154004589000000000000000000000000000000000BE -S315400458A000000000000000000000000000000000AE -S315400458B0000000000000000000000000000000009E -S315400458C0000000000000000000000000000000008E -S315400458D0000000000000000000000000000000007E -S315400458E0000000000000000000000000000000006E -S315400458F0000000000000000000000000000000005E -S31540045900000000000000000000000000000000004D -S31540045910000000000000000000000000000000003D -S31540045920000000000000000000000000000000002D -S31540045930000000000000000000000000000000001D -S31540045940000000000000000000000000000000000D -S3154004595000000000000000000000000000000000FD -S3154004596000000000000000000000000000000000ED -S3154004597000000000000000000000000000000000DD -S3154004598000000000000000000000000000000000CD -S3154004599000000000000000000000000000000000BD -S315400459A000000000000000000000000000000000AD -S315400459B0000000000000000000000000000000009D -S315400459C0000000000000000000000000000000008D -S315400459D0000000000000000000000000000000007D -S315400459E0000000000000000000000000000000006D -S315400459F0000000000000000000000000000000005D -S31540045A00000000000000000000000000000000004C -S31540045A10000000000000000000000000000000003C -S31540045A20000000000000000000000000000000002C -S31540045A30000000000000000000000000000000001C -S31540045A40000000000000000000000000000000000C -S31540045A5000000000000000000000000000000000FC -S31540045A6000000000000000000000000000000000EC -S31540045A7000000000000000000000000000000000DC -S31540045A8000000000000000000000000000000000CC -S31540045A9000000000000000000000000000000000BC -S31540045AA000000000000000000000000000000000AC -S31540045AB0000000000000000000000000000000009C -S31540045AC0000000000000000000000000000000008C -S31540045AD0000000000000000000000000000000007C -S31540045AE0000000000000000000000000000000006C -S31540045AF0000000000000000000000000000000005C -S31540045B00000000000000000000000000000000004B -S31540045B10000000000000000000000000000000003B -S31540045B20000000000000000000000000000000002B -S31540045B30000000000000000000000000000000001B -S31540045B40000000000000000000000000000000000B -S31540045B5000000000000000000000000000000000FB -S31540045B6000000000000000000000000000000000EB -S31540045B7000000000000000000000000000000000DB -S31540045B8000000000000000000000000000000000CB -S31540045B9000000000000000000000000000000000BB -S31540045BA000000000000000000000000000000000AB -S31540045BB0000000000000000000000000000000009B -S31540045BC0000000000000000000000000000000008B -S31540045BD0000000000000000000000000000000007B -S31540045BE0000000000000000000000000000000006B -S31540045BF0000000000000000000000000000000005B -S31540045C00000000000000000000000000000000004A -S31540045C10000000000000000000000000000000003A -S31540045C20000000000000000000000000000000002A -S31540045C30000000000000000000000000000000001A -S31540045C40000000000000000000000000000000000A -S31540045C5000000000000000000000000000000000FA -S31540045C6000000000000000000000000000000000EA -S31540045C7000000000000000000000000000000000DA -S31540045C8000000000000000000000000000000000CA -S31540045C9000000000000000000000000000000000BA -S31540045CA000000000000000000000000000000000AA -S31540045CB0000000000000000000000000000000009A -S31540045CC0000000000000000000000000000000008A -S31540045CD0000000000000000000000000000000007A -S31540045CE0000000000000000000000000000000006A -S31540045CF0000000000000000000000000000000005A -S31540045D000000000000000000000000000000000049 -S31540045D100000000000000000000000000000000039 -S31540045D200000000000000000000000000000000029 -S31540045D300000000000000000000000000000000019 -S31540045D400000000000000000000000000000000009 -S31540045D5000000000000000000000000000000000F9 -S31540045D6000000000000000000000000000000000E9 -S31540045D7000000000000000000000000000000000D9 -S31540045D8000000000000000000000000000000000C9 -S31540045D9000000000000000000000000000000000B9 -S31540045DA000000000000000000000000000000000A9 -S31540045DB00000000000000000000000000000000099 -S31540045DC00000000000000000000000000000000089 -S31540045DD00000000000000000000000000000000079 -S31540045DE00000000000000000000000000000000069 -S31540045DF00000000000000000000000000000000059 -S31540045E000000000000000000000000000000000048 -S31540045E100000000000000000000000000000000038 -S31540045E200000000000000000000000000000000028 -S31540045E300000000000000000000000000000000018 -S31540045E400000000000000000000000000000000008 -S31540045E5000000000000000000000000000000000F8 -S31540045E6000000000000000000000000000000000E8 -S31540045E7000000000000000000000000000000000D8 -S31540045E8000000000000000000000000000000000C8 -S31540045E9000000000000000000000000000000000B8 -S31540045EA000000000000000000000000000000000A8 -S31540045EB00000000000000000000000000000000098 -S31540045EC00000000000000000000000000000000088 -S31540045ED00000000000000000000000000000000078 -S31540045EE00000000000000000000000000000000068 -S31540045EF00000000000000000000000000000000058 -S31540045F000000000000000000000000000000000047 -S31540045F100000000000000000000000000000000037 -S31540045F200000000000000000000000000000000027 -S31540045F300000000000000000000000000000000017 -S31540045F400000000000000000000000000000000007 -S31540045F5000000000000000000000000000000000F7 -S31540045F6000000000000000000000000000000000E7 -S31540045F7000000000000000000000000000000000D7 -S31540045F8000000000000000000000000000000000C7 -S31540045F9000000000000000000000000000000000B7 -S31540045FA000000000000000000000000000000000A7 -S31540045FB00000000000000000000000000000000097 -S31540045FC00000000000000000000000000000000087 -S31540045FD00000000000000000000000000000000077 -S31540045FE00000000000000000000000000000000067 -S31540045FF00000000000000000000000000000000057 -S315400460000000000000000000000000000000000046 -S315400460100000000000000000000000000000000036 -S315400460200000000000000000000000000000000026 -S315400460300000000000000000000000000000000016 -S315400460400000000000000000000000000000000006 -S3154004605000000000000000000000000000000000F6 -S3154004606000000000000000000000000000000000E6 -S3154004607000000000000000000000000000000000D6 -S3154004608000000000000000000000000000000000C6 -S3154004609000000000000000000000000000000000B6 -S315400460A000000000000000000000000000000000A6 -S315400460B00000000000000000000000000000000096 -S315400460C00000000000000000000000000000000086 -S315400460D00000000000000000000000000000000076 -S315400460E00000000000000000000000000000000066 -S315400460F00000000000000000000000000000000056 -S315400461000000000000000000000000000000000045 -S315400461100000000000000000000000000000000035 -S315400461200000000000000000000000000000000025 -S315400461300000000000000000000000000000000015 -S315400461400000000000000000000000000000000005 -S3154004615000000000000000000000000000000000F5 -S3154004616000000000000000000000000000000000E5 -S3154004617000000000000000000000000000000000D5 -S3154004618000000000000000000000000000000000C5 -S3154004619000000000000000000000000000000000B5 -S315400461A000000000000000000000000000000000A5 -S315400461B00000000000000000000000000000000095 -S315400461C00000000000000000000000000000000085 -S315400461D00000000000000000000000000000000075 -S315400461E00000000000000000000000000000000065 -S315400461F00000000000000000000000000000000055 -S315400462000000000000000000000000000000000044 -S315400462100000000000000000000000000000000034 -S315400462200000000000000000000000000000000024 -S315400462300000000000000000000000000000000014 -S315400462400000000000000000000000000000000004 -S3154004625000000000000000000000000000000000F4 -S3154004626000000000000000000000000000000000E4 -S3154004627000000000000000000000000000000000D4 -S3154004628000000000000000000000000000000000C4 -S3154004629000000000000000000000000000000000B4 -S315400462A000000000000000000000000000000000A4 -S315400462B00000000000000000000000000000000094 -S315400462C00000000000000000000000000000000084 -S315400462D00000000000000000000000000000000074 -S315400462E00000000000000000000000000000000064 -S315400462F00000000000000000000000000000000054 -S315400463000000000000000000000000000000000043 -S315400463100000000000000000000000000000000033 -S315400463200000000000000000000000000000000023 -S315400463300000000000000000000000000000000013 -S315400463400000000000000000000000000000000003 -S3154004635000000000000000000000000000000000F3 -S3154004636000000000000000000000000000000000E3 -S3154004637000000000000000000000000000000000D3 -S3154004638000000000000000000000000000000000C3 -S3154004639000000000000000000000000000000000B3 -S315400463A000000000000000000000000000000000A3 -S315400463B00000000000000000000000000000000093 -S315400463C00000000000000000000000000000000083 -S315400463D00000000000000000000000000000000073 -S315400463E00000000000000000000000000000000063 -S315400463F00000000000000000000000000000000053 -S315400464000000000000000000000000000000000042 -S315400464100000000000000000000000000000000032 -S315400464200000000000000000000000000000000022 -S315400464300000000000000000000000000000000012 -S315400464400000000000000000000000000000000002 -S3154004645000000000000000000000000000000000F2 -S3154004646000000000000000000000000000000000E2 -S3154004647000000000000000000000000000000000D2 -S3154004648000000000000000000000000000000000C2 -S3154004649000000000000000000000000000000000B2 -S315400464A000000000000000000000000000000000A2 -S315400464B00000000000000000000000000000000092 -S315400464C00000000000000000000000000000000082 -S315400464D00000000000000000000000000000000072 -S315400464E00000000000000000000000000000000062 -S315400464F00000000000000000000000000000000052 -S315400465000000000000000000000000000000000041 -S315400465100000000000000000000000000000000031 -S315400465200000000000000000000000000000000021 -S315400465300000000000000000000000000000000011 -S315400465400000000000000000000000000000000001 -S3154004655000000000000000000000000000000000F1 -S3154004656000000000000000000000000000000000E1 -S3154004657000000000000000000000000000000000D1 -S3154004658000000000000000000000000000000000C1 -S3154004659000000000000000000000000000000000B1 -S315400465A000000000000000000000000000000000A1 -S315400465B00000000000000000000000000000000091 -S315400465C00000000000000000000000000000000081 -S315400465D00000000000000000000000000000000071 -S315400465E00000000000000000000000000000000061 -S315400465F00000000000000000000000000000000051 -S315400466000000000000000000000000000000000040 -S315400466100000000000000000000000000000000030 -S315400466200000000000000000000000000000000020 -S315400466300000000000000000000000000000000010 -S315400466400000000000000000000000000000000000 -S3154004665000000000000000000000000000000000F0 -S3154004666000000000000000000000000000000000E0 -S3154004667000000000000000000000000000000000D0 -S3154004668000000000000000000000000000000000C0 -S3154004669000000000000000000000000000000000B0 -S315400466A000000000000000000000000000000000A0 -S315400466B00000000000000000000000000000000090 -S315400466C00000000000000000000000000000000080 -S315400466D00000000000000000000000000000000070 -S315400466E00000000000000000000000000000000060 -S315400466F00000000000000000000000000000000050 -S31540046700000000000000000000000000000000003F -S31540046710000000000000000000000000000000002F -S31540046720000000000000000000000000000000001F -S31540046730000000000000000000000000000000000F -S3154004674000000000000000000000000000000000FF -S3154004675000000000000000000000000000000000EF -S3154004676000000000000000000000000000000000DF -S3154004677000000000000000000000000000000000CF -S3154004678000000000000000000000000000000000BF -S3154004679000000000000000000000000000000000AF -S315400467A0000000000000000000000000000000009F -S315400467B0000000000000000000000000000000008F -S315400467C0000000000000000000000000000000007F -S315400467D0000000000000000000000000000000006F -S315400467E0000000000000000000000000000000005F -S315400467F0000000000000000000000000000000004F -S31540046800000000000000000000000000000000003E -S31540046810000000000000000000000000000000002E -S31540046820000000000000000000000000000000001E -S31540046830000000000000000000000000000000000E -S3154004684000000000000000000000000000000000FE -S3154004685000000000000000000000000000000000EE -S3154004686000000000000000000000000000000000DE -S3154004687000000000000000000000000000000000CE -S3154004688000000000000000000000000000000000BE -S3154004689000000000000000000000000000000000AE -S315400468A0000000000000000000000000000000009E -S315400468B0000000000000000000000000000000008E -S315400468C0000000000000000000000000000000007E -S315400468D0000000000000000000000000000000006E -S315400468E0000000000000000000000000000000005E -S315400468F0000000000000000000000000000000004E -S31540046900000000000000000000000000000000003D -S31540046910000000000000000000000000000000002D -S31540046920000000000000000000000000000000001D -S31540046930000000000000000000000000000000000D -S3154004694000000000000000000000000000000000FD -S3154004695000000000000000000000000000000000ED -S3154004696000000000000000000000000000000000DD -S3154004697000000000000000000000000000000000CD -S3154004698000000000000000000000000000000000BD -S3154004699000000000000000000000000000000000AD -S315400469A0000000000000000000000000000000009D -S315400469B0000000000000000000000000000000008D -S315400469C0000000000000000000000000000000007D -S315400469D0000000000000000000000000000000006D -S315400469E0000000000000000000000000000000005D -S315400469F0000000000000000000000000000000004D -S31540046A00000000000000000000000000000000003C -S31540046A10000000000000000000000000000000002C -S31540046A20000000000000000000000000000000001C -S31540046A30000000000000000000000000000000000C -S31540046A4000000000000000000000000000000000FC -S31540046A5000000000000000000000000000000000EC -S31540046A6000000000000000000000000000000000DC -S31540046A7000000000000000000000000000000000CC -S31540046A8000000000000000000000000000000000BC -S31540046A9000000000000000000000000000000000AC -S31540046AA0000000000000000000000000000000009C -S31540046AB0000000000000000000000000000000008C -S31540046AC0000000000000000000000000000000007C -S31540046AD0000000000000000000000000000000006C -S31540046AE0000000000000000000000000000000005C -S31540046AF0000000000000000000000000000000004C -S31540046B00000000000000000000000000000000003B -S31540046B10000000000000000000000000000000002B -S31540046B20000000000000000000000000000000001B -S31540046B30000000000000000000000000000000000B -S31540046B4000000000000000000000000000000000FB -S31540046B5000000000000000000000000000000000EB -S31540046B6000000000000000000000000000000000DB -S31540046B7000000000000000000000000000000000CB -S31540046B8000000000000000000000000000000000BB -S31540046B9000000000000000000000000000000000AB -S31540046BA0000000000000000000000000000000009B -S31540046BB0000000000000000000000000000000008B -S31540046BC0000000000000000000000000000000007B -S31540046BD0000000000000000000000000000000006B -S31540046BE0000000000000000000000000000000005B -S31540046BF0000000000000000000000000000000004B -S31540046C00000000000000000000000000000000003A -S31540046C10000000000000000000000000000000002A -S31540046C20000000000000000000000000000000001A -S31540046C30000000000000000000000000000000000A -S31540046C4000000000000000000000000000000000FA -S31540046C5000000000000000000000000000000000EA -S31540046C6000000000000000000000000000000000DA -S31540046C7000000000000000000000000000000000CA -S31540046C8000000000000000000000000000000000BA -S31540046C9000000000000000000000000000000000AA -S31540046CA0000000000000000000000000000000009A -S31540046CB0000000000000000000000000000000008A -S31540046CC0000000000000000000000000000000007A -S31540046CD0000000000000000000000000000000006A -S31540046CE0000000000000000000000000000000005A -S31540046CF0000000000000000000000000000000004A -S31540046D000000000000000000000000000000000039 -S31540046D100000000000000000000000000000000029 -S31540046D200000000000000000000000000000000019 -S31540046D300000000000000000000000000000000009 -S31540046D4000000000000000000000000000000000F9 -S31540046D5000000000000000000000000000000000E9 -S31540046D6000000000000000000000000000000000D9 -S31540046D7000000000000000000000000000000000C9 -S31540046D8000000000000000000000000000000000B9 -S31540046D9000000000000000000000000000000000A9 -S31540046DA00000000000000000000000000000000099 -S31540046DB00000000000000000000000000000000089 -S31540046DC00000000000000000000000000000000079 -S31540046DD00000000000000000000000000000000069 -S31540046DE00000000000000000000000000000000059 -S31540046DF00000000000000000000000000000000049 -S31540046E000000000000000000000000000000000038 -S31540046E100000000000000000000000000000000028 -S31540046E200000000000000000000000000000000018 -S31540046E300000000000000000000000000000000008 -S31540046E4000000000000000000000000000000000F8 -S31540046E5000000000000000000000000000000000E8 -S31540046E6000000000000000000000000000000000D8 -S31540046E7000000000000000000000000000000000C8 -S31540046E8000000000000000000000000000000000B8 -S31540046E9000000000000000000000000000000000A8 -S31540046EA00000000000000000000000000000000098 -S31540046EB00000000000000000000000000000000088 -S31540046EC00000000000000000000000000000000078 -S31540046ED00000000000000000000000000000000068 -S31540046EE00000000000000000000000000000000058 -S31540046EF00000000000000000000000000000000048 -S31540046F000000000000000000000000000000000037 -S31540046F100000000000000000000000000000000027 -S31540046F200000000000000000000000000000000017 -S31540046F300000000000000000000000000000000007 -S31540046F4000000000000000000000000000000000F7 -S31540046F5000000000000000000000000000000000E7 -S31540046F6000000000000000000000000000000000D7 -S31540046F7000000000000000000000000000000000C7 -S31540046F8000000000000000000000000000000000B7 -S31540046F9000000000000000000000000000000000A7 -S31540046FA00000000000000000000000000000000097 -S31540046FB00000000000000000000000000000000087 -S31540046FC00000000000000000000000000000000077 -S31540046FD00000000000000000000000000000000067 -S31540046FE00000000000000000000000000000000057 -S31540046FF00000000000000000000000000000000047 -S315400470000000000000000000000000000000000036 -S315400470100000000000000000000000000000000026 -S315400470200000000000000000000000000000000016 -S315400470300000000000000000000000000000000006 -S3154004704000000000000000000000000000000000F6 -S3154004705000000000000000000000000000000000E6 -S3154004706000000000000000000000000000000000D6 -S3154004707000000000000000000000000000000000C6 -S3154004708000000000000000000000000000000000B6 -S3154004709000000000000000000000000000000000A6 -S315400470A00000000000000000000000000000000096 -S315400470B00000000000000000000000000000000086 -S315400470C00000000000000000000000000000000076 -S315400470D00000000000000000000000000000000066 -S315400470E00000000000000000000000000000000056 -S315400470F00000000000000000000000000000000046 -S315400471000000000000000000000000000000000035 -S315400471100000000000000000000000000000000025 -S315400471200000000000000000000000000000000015 -S315400471300000000000000000000000000000000005 -S3154004714000000000000000000000000000000000F5 -S3154004715000000000000000000000000000000000E5 -S3154004716000000000000000000000000000000000D5 -S3154004717000000000000000000000000000000000C5 -S3154004718000000000000000000000000000000000B5 -S3154004719000000000000000000000000000000000A5 -S315400471A00000000000000000000000000000000095 -S315400471B00000000000000000000000000000000085 -S315400471C00000000000000000000000000000000075 -S315400471D00000000000000000000000000000000065 -S315400471E00000000000000000000000000000000055 -S315400471F00000000000000000000000000000000045 -S315400472000000000000000000000000000000000034 -S315400472100000000000000000000000000000000024 -S315400472200000000000000000000000000000000014 -S315400472300000000000000000000000000000000004 -S3154004724000000000000000000000000000000000F4 -S3154004725000000000000000000000000000000000E4 -S3154004726000000000000000000000000000000000D4 -S3154004727000000000000000000000000000000000C4 -S3154004728000000000000000000000000000000000B4 -S3154004729000000000000000000000000000000000A4 -S315400472A00000000000000000000000000000000094 -S315400472B00000000000000000000000000000000084 -S315400472C00000000000000000000000000000000074 -S315400472D00000000000000000000000000000000064 -S315400472E00000000000000000000000000000000054 -S315400472F00000000000000000000000000000000044 -S315400473000000000000000000000000000000000033 -S315400473100000000000000000000000000000000023 -S315400473200000000000000000000000000000000013 -S315400473300000000000000000000000000000000003 -S3154004734000000000000000000000000000000000F3 -S3154004735000000000000000000000000000000000E3 -S3154004736000000000000000000000000000000000D3 -S3154004737000000000000000000000000000000000C3 -S3154004738000000000000000000000000000000000B3 -S3154004739000000000000000000000000000000000A3 -S315400473A00000000000000000000000000000000093 -S315400473B00000000000000000000000000000000083 -S315400473C00000000000000000000000000000000073 -S315400473D00000000000000000000000000000000063 -S315400473E00000000000000000000000000000000053 -S315400473F00000000000000000000000000000000043 -S315400474000000000000000000000000000000000032 -S315400474100000000000000000000000000000000022 -S315400474200000000000000000000000000000000012 -S315400474300000000000000000000000000000000002 -S3154004744000000000000000000000000000000000F2 -S3154004745000000000000000000000000000000000E2 -S3154004746000000000000000000000000000000000D2 -S3154004747000000000000000000000000000000000C2 -S3154004748000000000000000000000000000000000B2 -S3154004749000000000000000000000000000000000A2 -S315400474A00000000000000000000000000000000092 -S315400474B00000000000000000000000000000000082 -S315400474C00000000000000000000000000000000072 -S315400474D00000000000000000000000000000000062 -S315400474E00000000000000000000000000000000052 -S315400474F00000000000000000000000000000000042 -S315400475000000000000000000000000000000000031 -S315400475100000000000000000000000000000000021 -S315400475200000000000000000000000000000000011 -S315400475300000000000000000000000000000000001 -S3154004754000000000000000000000000000000000F1 -S3154004755000000000000000000000000000000000E1 -S3154004756000000000000000000000000000000000D1 -S3154004757000000000000000000000000000000000C1 -S3154004758000000000000000000000000000000000B1 -S3154004759000000000000000000000000000000000A1 -S315400475A00000000000000000000000000000000091 -S315400475B00000000000000000000000000000000081 -S315400475C00000000000000000000000000000000071 -S315400475D00000000000000000000000000000000061 -S315400475E00000000000000000000000000000000051 -S315400475F00000000000000000000000000000000041 -S315400476000000000000000000000000000000000030 -S315400476100000000000000000000000000000000020 -S315400476200000000000000000000000000000000010 -S315400476300000000000000000000000000000000000 -S3154004764000000000000000000000000000000000F0 -S3154004765000000000000000000000000000000000E0 -S3154004766000000000000000000000000000000000D0 -S3154004767000000000000000000000000000000000C0 -S3154004768000000000000000000000000000000000B0 -S3154004769000000000000000000000000000000000A0 -S315400476A00000000000000000000000000000000090 -S315400476B00000000000000000000000000000000080 -S315400476C00000000000000000000000000000000070 -S315400476D00000000000000000000000000000000060 -S315400476E00000000000000000000000000000000050 -S315400476F00000000000000000000000000000000040 -S31540047700000000000000000000000000000000002F -S31540047710000000000000000000000000000000001F -S31540047720000000000000000000000000000000000F -S3154004773000000000000000000000000000000000FF -S3154004774000000000000000000000000000000000EF -S3154004775000000000000000000000000000000000DF -S3154004776000000000000000000000000000000000CF -S3154004777000000000000000000000000000000000BF -S3154004778000000000000000000000000000000000AF -S31540047790000000000000000000000000000000009F -S315400477A0000000000000000000000000000000008F -S315400477B0000000000000000000000000000000007F -S315400477C0000000000000000000000000000000006F -S315400477D0000000000000000000000000000000005F -S315400477E0000000000000000000000000000000004F -S315400477F0000000000000000000000000000000003F -S31540047800000000000000000000000000000000002E -S31540047810000000000000000000000000000000001E -S31540047820000000000000000000000000000000000E -S3154004783000000000000000000000000000000000FE -S3154004784000000000000000000000000000000000EE -S3154004785000000000000000000000000000000000DE -S3154004786000000000000000000000000000000000CE -S3154004787000000000000000000000000000000000BE -S3154004788000000000000000000000000000000000AE -S31540047890000000000000000000000000000000009E -S315400478A0000000000000000000000000000000008E -S315400478B0000000000000000000000000000000007E -S315400478C0000000000000000000000000000000006E -S315400478D0000000000000000000000000000000005E -S315400478E0000000000000000000000000000000004E -S315400478F0000000000000000000000000000000003E -S31540047900000000000000000000000000000000002D -S31540047910000000000000000000000000000000001D -S31540047920000000000000000000000000000000000D -S3154004793000000000000000000000000000000000FD -S3154004794000000000000000000000000000000000ED -S3154004795000000000000000000000000000000000DD -S3154004796000000000000000000000000000000000CD -S3154004797000000000000000000000000000000000BD -S3154004798000000000000000000000000000000000AD -S31540047990000000000000000000000000000000009D -S315400479A0000000000000000000000000000000008D -S315400479B0000000000000000000000000000000007D -S315400479C0000000000000000000000000000000006D -S315400479D0000000000000000000000000000000005D -S315400479E0000000000000000000000000000000004D -S315400479F0000000000000000000000000000000003D -S31540047A00000000000000000000000000000000002C -S31540047A10000000000000000000000000000000001C -S31540047A20000000000000000000000000000000000C -S31540047A3000000000000000000000000000000000FC -S31540047A4000000000000000000000000000000000EC -S31540047A5000000000000000000000000000000000DC -S31540047A6000000000000000000000000000000000CC -S31540047A7000000000000000000000000000000000BC -S31540047A8000000000000000000000000000000000AC -S31540047A90000000000000000000000000000000009C -S31540047AA0000000000000000000000000000000008C -S31540047AB0000000000000000000000000000000007C -S31540047AC0000000000000000000000000000000006C -S31540047AD0000000000000000000000000000000005C -S31540047AE0000000000000000000000000000000004C -S31540047AF0000000000000000000000000000000003C -S31540047B00000000000000000000000000000000002B -S31540047B10000000000000000000000000000000001B -S31540047B20000000000000000000000000000000000B -S31540047B3000000000000000000000000000000000FB -S31540047B4000000000000000000000000000000000EB -S31540047B5000000000000000000000000000000000DB -S31540047B6000000000000000000000000000000000CB -S31540047B7000000000000000000000000000000000BB -S31540047B8000000000000000000000000000000000AB -S31540047B90000000000000000000000000000000009B -S31540047BA0000000000000000000000000000000008B -S31540047BB0000000000000000000000000000000007B -S31540047BC0000000000000000000000000000000006B -S31540047BD0000000000000000000000000000000005B -S31540047BE0000000000000000000000000000000004B -S31540047BF0000000000000000000000000000000003B -S31540047C00000000000000000000000000000000002A -S31540047C10000000000000000000000000000000001A -S31540047C20000000000000000000000000000000000A -S31540047C3000000000000000000000000000000000FA -S31540047C4000000000000000000000000000000000EA -S31540047C5000000000000000000000000000000000DA -S31540047C6000000000000000000000000000000000CA -S31540047C7000000000000000000000000000000000BA -S31540047C8000000000000000000000000000000000AA -S31540047C90000000000000000000000000000000009A -S31540047CA0000000000000000000000000000000008A -S31540047CB0000000000000000000000000000000007A -S31540047CC0000000000000000000000000000000006A -S31540047CD0000000000000000000000000000000005A -S31540047CE0000000000000000000000000000000004A -S31540047CF0000000000000000000000000000000003A -S31540047D000000000000000000000000000000000029 -S31540047D100000000000000000000000000000000019 -S31540047D200000000000000000000000000000000009 -S31540047D3000000000000000000000000000000000F9 -S31540047D4000000000000000000000000000000000E9 -S31540047D5000000000000000000000000000000000D9 -S31540047D6000000000000000000000000000000000C9 -S31540047D7000000000000000000000000000000000B9 -S31540047D8000000000000000000000000000000000A9 -S31540047D900000000000000000000000000000000099 -S31540047DA00000000000000000000000000000000089 -S31540047DB00000000000000000000000000000000079 -S31540047DC00000000000000000000000000000000069 -S31540047DD00000000000000000000000000000000059 -S31540047DE00000000000000000000000000000000049 -S31540047DF00000000000000000000000000000000039 -S31540047E000000000000000000000000000000000028 -S31540047E100000000000000000000000000000000018 -S31540047E200000000000000000000000000000000008 -S31540047E3000000000000000000000000000000000F8 -S31540047E4000000000000000000000000000000000E8 -S31540047E5000000000000000000000000000000000D8 -S31540047E6000000000000000000000000000000000C8 -S31540047E7000000000000000000000000000000000B8 -S31540047E8000000000000000000000000000000000A8 -S31540047E900000000000000000000000000000000098 -S31540047EA00000000000000000000000000000000088 -S31540047EB00000000000000000000000000000000078 -S31540047EC00000000000000000000000000000000068 -S31540047ED00000000000000000000000000000000058 -S31540047EE00000000000000000000000000000000048 -S31540047EF00000000000000000000000000000000038 -S31540047F000000000000000000000000000000000027 -S31540047F100000000000000000000000000000000017 -S31540047F200000000000000000000000000000000007 -S31540047F3000000000000000000000000000000000F7 -S31540047F4000000000000000000000000000000000E7 -S31540047F5000000000000000000000000000000000D7 -S31540047F6000000000000000000000000000000000C7 -S31540047F7000000000000000000000000000000000B7 -S31540047F8000000000000000000000000000000000A7 -S31540047F900000000000000000000000000000000097 -S31540047FA00000000000000000000000000000000087 -S31540047FB00000000000000000000000000000000077 -S31540047FC00000000000000000000000000000000067 -S31540047FD00000000000000000000000000000000057 -S31540047FE00000000000000000000000000000000047 -S31540047FF00000000000000000000000000000000037 -S315400480000000000000000000000000000000000026 -S315400480100000000000000000000000000000000016 -S315400480200000000000000000000000000000000006 -S3154004803000000000000000000000000000000000F6 -S3154004804000000000000000000000000000000000E6 -S3154004805000000000000000000000000000000000D6 -S3154004806000000000000000000000000000000000C6 -S3154004807000000000000000000000000000000000B6 -S3154004808000000000000000000000000000000000A6 -S315400480900000000000000000000000000000000096 -S315400480A00000000000000000000000000000000086 -S315400480B00000000000000000000000000000000076 -S315400480C00000000000000000000000000000000066 -S315400480D00000000000000000000000000000000056 -S315400480E00000000000000000000000000000000046 -S315400480F00000000000000000000000000000000036 -S315400481000000000000000000000000000000000025 -S315400481100000000000000000000000000000000015 -S315400481200000000000000000000000000000000005 -S3154004813000000000000000000000000000000000F5 -S3154004814000000000000000000000000000000000E5 -S3154004815000000000000000000000000000000000D5 -S3154004816000000000000000000000000000000000C5 -S3154004817000000000000000000000000000000000B5 -S3154004818000000000000000000000000000000000A5 -S315400481900000000000000000000000000000000095 -S315400481A00000000000000000000000000000000085 -S315400481B00000000000000000000000000000000075 -S315400481C00000000000000000000000000000000065 -S315400481D00000000000000000000000000000000055 -S315400481E00000000000000000000000000000000045 -S315400481F00000000000000000000000000000000035 -S315400482000000000000000000000000000000000024 -S315400482100000000000000000000000000000000014 -S315400482200000000000000000000000000000000004 -S3154004823000000000000000000000000000000000F4 -S3154004824000000000000000000000000000000000E4 -S3154004825000000000000000000000000000000000D4 -S3154004826000000000000000000000000000000000C4 -S3154004827000000000000000000000000000000000B4 -S3154004828000000000000000000000000000000000A4 -S315400482900000000000000000000000000000000094 -S315400482A00000000000000000000000000000000084 -S315400482B00000000000000000000000000000000074 -S315400482C00000000000000000000000000000000064 -S315400482D00000000000000000000000000000000054 -S315400482E00000000000000000000000000000000044 -S315400482F00000000000000000000000000000000034 -S315400483000000000000000000000000000000000023 -S315400483100000000000000000000000000000000013 -S315400483200000000000000000000000000000000003 -S3154004833000000000000000000000000000000000F3 -S3154004834000000000000000000000000000000000E3 -S3154004835000000000000000000000000000000000D3 -S3154004836000000000000000000000000000000000C3 -S3154004837000000000000000000000000000000000B3 -S3154004838000000000000000000000000000000000A3 -S315400483900000000000000000000000000000000093 -S315400483A00000000000000000000000000000000083 -S315400483B00000000000000000000000000000000073 -S315400483C00000000000000000000000000000000063 -S315400483D00000000000000000000000000000000053 -S315400483E00000000000000000000000000000000043 -S315400483F00000000000000000000000000000000033 -S315400484000000000000000000000000000000000022 -S315400484100000000000000000000000000000000012 -S315400484200000000000000000000000000000000002 -S3154004843000000000000000000000000000000000F2 -S3154004844000000000000000000000000000000000E2 -S3154004845000000000000000000000000000000000D2 -S3154004846000000000000000000000000000000000C2 -S3154004847000000000000000000000000000000000B2 -S3154004848000000000000000000000000000000000A2 -S315400484900000000000000000000000000000000092 -S315400484A00000000000000000000000000000000082 -S315400484B00000000000000000000000000000000072 -S315400484C00000000000000000000000000000000062 -S315400484D00000000000000000000000000000000052 -S315400484E00000000000000000000000000000000042 -S315400484F00000000000000000000000000000000032 -S315400485000000000000000000000000000000000021 -S315400485100000000000000000000000000000000011 -S315400485200000000000000000000000000000000001 -S3154004853000000000000000000000000000000000F1 -S3154004854000000000000000000000000000000000E1 -S3154004855000000000000000000000000000000000D1 -S3154004856000000000000000000000000000000000C1 -S3154004857000000000000000000000000000000000B1 -S3154004858000000000000000000000000000000000A1 -S315400485900000000000000000000000000000000091 -S315400485A00000000000000000000000000000000081 -S315400485B00000000000000000000000000000000071 -S315400485C00000000000000000000000000000000061 -S315400485D00000000000000000000000000000000051 -S315400485E00000000000000000000000000000000041 -S315400485F00000000000000000000000000000000031 -S315400486000000000000000000000000000000000020 -S315400486100000000000000000000000000000000010 -S315400486200000000000000000000000000000000000 -S3154004863000000000000000000000000000000000F0 -S3154004864000000000000000000000000000000000E0 -S3154004865000000000000000000000000000000000D0 -S3154004866000000000000000000000000000000000C0 -S3154004867000000000000000000000000000000000B0 -S3154004868000000000000000000000000000000000A0 -S315400486900000000000000000000000000000000090 -S315400486A00000000000000000000000000000000080 -S315400486B00000000000000000000000000000000070 -S315400486C00000000000000000000000000000000060 -S315400486D00000000000000000000000000000000050 -S315400486E00000000000000000000000000000000040 -S315400486F00000000000000000000000000000000030 -S31540048700000000000000000000000000000000001F -S31540048710000000000000000000000000000000000F -S3154004872000000000000000000000000000000000FF -S3154004873000000000000000000000000000000000EF -S3154004874000000000000000000000000000000000DF -S3154004875000000000000000000000000000000000CF -S3154004876000000000000000000000000000000000BF -S3154004877000000000000000000000000000000000AF -S31540048780000000000000000000000000000000009F -S31540048790000000000000000000000000000000008F -S315400487A0000000000000000000000000000000007F -S315400487B0000000000000000000000000000000006F -S315400487C0000000000000000000000000000000005F -S315400487D0000000000000000000000000000000004F -S315400487E0000000000000000000000000000000003F -S315400487F0000000000000000000000000000000002F -S31540048800000000000000000000000000000000001E -S31540048810000000000000000000000000000000000E -S3154004882000000000000000000000000000000000FE -S3154004883000000000000000000000000000000000EE -S3154004884000000000000000000000000000000000DE -S3154004885000000000000000000000000000000000CE -S3154004886000000000000000000000000000000000BE -S3154004887000000000000000000000000000000000AE -S31540048880000000000000000000000000000000009E -S31540048890000000000000000000000000000000008E -S315400488A0000000000000000000000000000000007E -S315400488B0000000000000000000000000000000006E -S315400488C0000000000000000000000000000000005E -S315400488D0000000000000000000000000000000004E -S315400488E0000000000000000000000000000000003E -S315400488F0000000000000000000000000000000002E -S31540048900000000000000000000000000000000001D -S31540048910000000000000000000000000000000000D -S3154004892000000000000000000000000000000000FD -S3154004893000000000000000000000000000000000ED -S3154004894000000000000000000000000000000000DD -S3154004895000000000000000000000000000000000CD -S3154004896000000000000000000000000000000000BD -S3154004897000000000000000000000000000000000AD -S31540048980000000000000000000000000000000009D -S31540048990000000000000000000000000000000008D -S315400489A0000000000000000000000000000000007D -S315400489B0000000000000000000000000000000006D -S315400489C0000000000000000000000000000000005D -S315400489D0000000000000000000000000000000004D -S315400489E0000000000000000000000000000000003D -S315400489F0000000000000000000000000000000002D -S31540048A00000000000000000000000000000000001C -S31540048A10000000000000000000000000000000000C -S31540048A2000000000000000000000000000000000FC -S31540048A3000000000000000000000000000000000EC -S31540048A4000000000000000000000000000000000DC -S31540048A5000000000000000000000000000000000CC -S31540048A6000000000000000000000000000000000BC -S31540048A7000000000000000000000000000000000AC -S31540048A80000000000000000000000000000000009C -S31540048A90000000000000000000000000000000008C -S31540048AA0000000000000000000000000000000007C -S31540048AB0000000000000000000000000000000006C -S31540048AC0000000000000000000000000000000005C -S31540048AD0000000000000000000000000000000004C -S31540048AE0000000000000000000000000000000003C -S31540048AF0000000000000000000000000000000002C -S31540048B00000000000000000000000000000000001B -S31540048B10000000000000000000000000000000000B -S31540048B2000000000000000000000000000000000FB -S31540048B3000000000000000000000000000000000EB -S31540048B4000000000000000000000000000000000DB -S31540048B5000000000000000000000000000000000CB -S31540048B6000000000000000000000000000000000BB -S31540048B7000000000000000000000000000000000AB -S31540048B80000000000000000000000000000000009B -S31540048B90000000000000000000000000000000008B -S31540048BA0000000000000000000000000000000007B -S31540048BB0000000000000000000000000000000006B -S31540048BC0000000000000000000000000000000005B -S31540048BD0000000000000000000000000000000004B -S31540048BE0000000000000000000000000000000003B -S31540048BF0000000000000000000000000000000002B -S31540048C00000000000000000000000000000000001A -S31540048C10000000000000000000000000000000000A -S31540048C2000000000000000000000000000000000FA -S31540048C3000000000000000000000000000000000EA -S31540048C4000000000000000000000000000000000DA -S31540048C5000000000000000000000000000000000CA -S31540048C6000000000000000000000000000000000BA -S31540048C7000000000000000000000000000000000AA -S31540048C80000000000000000000000000000000009A -S31540048C90000000000000000000000000000000008A -S31540048CA0000000000000000000000000000000007A -S31540048CB0000000000000000000000000000000006A -S31540048CC0000000000000000000000000000000005A -S31540048CD0000000000000000000000000000000004A -S31540048CE0000000000000000000000000000000003A -S31540048CF0000000000000000000000000000000002A -S31540048D000000000000000000000000000000000019 -S31540048D100000000000000000000000000000000009 -S31540048D2000000000000000000000000000000000F9 -S31540048D3000000000000000000000000000000000E9 -S31540048D4000000000000000000000000000000000D9 -S31540048D5000000000000000000000000000000000C9 -S31540048D6000000000000000000000000000000000B9 -S31540048D7000000000000000000000000000000000A9 -S31540048D800000000000000000000000000000000099 -S31540048D900000000000000000000000000000000089 -S31540048DA00000000000000000000000000000000079 -S31540048DB00000000000000000000000000000000069 -S31540048DC00000000000000000000000000000000059 -S31540048DD00000000000000000000000000000000049 -S31540048DE00000000000000000000000000000000039 -S31540048DF00000000000000000000000000000000029 -S31540048E000000000000000000000000000000000018 -S31540048E100000000000000000000000000000000008 -S31540048E2000000000000000000000000000000000F8 -S31540048E3000000000000000000000000000000000E8 -S31540048E4000000000000000000000000000000000D8 -S31540048E5000000000000000000000000000000000C8 -S31540048E6000000000000000000000000000000000B8 -S31540048E7000000000000000000000000000000000A8 -S31540048E800000000000000000000000000000000098 -S31540048E900000000000000000000000000000000088 -S31540048EA00000000000000000000000000000000078 -S31540048EB00000000000000000000000000000000068 -S31540048EC00000000000000000000000000000000058 -S31540048ED00000000000000000000000000000000048 -S31540048EE00000000000000000000000000000000038 -S31540048EF00000000000000000000000000000000028 -S31540048F000000000000000000000000000000000017 -S31540048F100000000000000000000000000000000007 -S31540048F2000000000000000000000000000000000F7 -S31540048F3000000000000000000000000000000000E7 -S31540048F4000000000000000000000000000000000D7 -S31540048F5000000000000000000000000000000000C7 -S31540048F6000000000000000000000000000000000B7 -S31540048F7000000000000000000000000000000000A7 -S31540048F800000000000000000000000000000000097 -S31540048F900000000000000000000000000000000087 -S31540048FA00000000000000000000000000000000077 -S31540048FB00000000000000000000000000000000067 -S31540048FC00000000000000000000000000000000057 -S31540048FD00000000000000000000000000000000047 -S31540048FE00000000000000000000000000000000037 -S31540048FF00000000000000000000000000000000027 -S315400490000000000000000000000000000000000016 -S315400490100000000000000000000000000000000006 -S3154004902000000000000000000000000000000000F6 -S3154004903000000000000000000000000000000000E6 -S3154004904000000000000000000000000000000000D6 -S3154004905000000000000000000000000000000000C6 -S3154004906000000000000000000000000000000000B6 -S3154004907000000000000000000000000000000000A6 -S315400490800000000000000000000000000000000096 -S315400490900000000000000000000000000000000086 -S315400490A00000000000000000000000000000000076 -S315400490B00000000000000000000000000000000066 -S315400490C00000000000000000000000000000000056 -S315400490D00000000000000000000000000000000046 -S315400490E00000000000000000000000000000000036 -S315400490F00000000000000000000000000000000026 -S315400491000000000000000000000000000000000015 -S315400491100000000000000000000000000000000005 -S3154004912000000000000000000000000000000000F5 -S3154004913000000000000000000000000000000000E5 -S3154004914000000000000000000000000000000000D5 -S3154004915000000000000000000000000000000000C5 -S3154004916000000000000000000000000000000000B5 -S3154004917000000000000000000000000000000000A5 -S315400491800000000000000000000000000000000095 -S315400491900000000000000000000000000000000085 -S315400491A00000000000000000000000000000000075 -S315400491B00000000000000000000000000000000065 -S315400491C00000000000000000000000000000000055 -S315400491D00000000000000000000000000000000045 -S315400491E00000000000000000000000000000000035 -S315400491F00000000000000000000000000000000025 -S315400492000000000000000000000000000000000014 -S315400492100000000000000000000000000000000004 -S3154004922000000000000000000000000000000000F4 -S3154004923000000000000000000000000000000000E4 -S3154004924000000000000000000000000000000000D4 -S3154004925000000000000000000000000000000000C4 -S3154004926000000000000000000000000000000000B4 -S3154004927000000000000000000000000000000000A4 -S315400492800000000000000000000000000000000094 -S315400492900000000000000000000000000000000084 -S315400492A00000000000000000000000000000000074 -S315400492B00000000000000000000000000000000064 -S315400492C00000000000000000000000000000000054 -S315400492D00000000000000000000000000000000044 -S315400492E00000000000000000000000000000000034 -S315400492F00000000000000000000000000000000024 -S315400493000000000000000000000000000000000013 -S315400493100000000000000000000000000000000003 -S3154004932000000000000000000000000000000000F3 -S3154004933000000000000000000000000000000000E3 -S3154004934000000000000000000000000000000000D3 -S3154004935000000000000000000000000000000000C3 -S3154004936000000000000000000000000000000000B3 -S3154004937000000000000000000000000000000000A3 -S315400493800000000000000000000000000000000093 -S315400493900000000000000000000000000000000083 -S315400493A00000000000000000000000000000000073 -S315400493B00000000000000000000000000000000063 -S315400493C00000000000000000000000000000000053 -S315400493D00000000000000000000000000000000043 -S315400493E00000000000000000000000000000000033 -S315400493F00000000000000000000000000000000023 -S315400494000000000000000000000000000000000012 -S315400494100000000000000000000000000000000002 -S3154004942000000000000000000000000000000000F2 -S3154004943000000000000000000000000000000000E2 -S3154004944000000000000000000000000000000000D2 -S3154004945000000000000000000000000000000000C2 -S3154004946000000000000000000000000000000000B2 -S3154004947000000000000000000000000000000000A2 -S315400494800000000000000000000000000000000092 -S315400494900000000000000000000000000000000082 -S315400494A00000000000000000000000000000000072 -S315400494B00000000000000000000000000000000062 -S315400494C00000000000000000000000000000000052 -S315400494D00000000000000000000000000000000042 -S315400494E00000000000000000000000000000000032 -S315400494F00000000000000000000000000000000022 -S315400495000000000000000000000000000000000011 -S315400495100000000000000000000000000000000001 -S3154004952000000000000000000000000000000000F1 -S3154004953000000000000000000000000000000000E1 -S3154004954000000000000000000000000000000000D1 -S3154004955000000000000000000000000000000000C1 -S3154004956000000000000000000000000000000000B1 -S3154004957000000000000000000000000000000000A1 -S315400495800000000000000000000000000000000091 -S315400495900000000000000000000000000000000081 -S315400495A00000000000000000000000000000000071 -S315400495B00000000000000000000000000000000061 -S315400495C00000000000000000000000000000000051 -S315400495D00000000000000000000000000000000041 -S315400495E00000000000000000000000000000000031 -S315400495F00000000000000000000000000000000021 -S315400496000000000000000000000000000000000010 -S315400496100000000000000000000000000000000000 -S3154004962000000000000000000000000000000000F0 -S3154004963000000000000000000000000000000000E0 -S3154004964000000000000000000000000000000000D0 -S3154004965000000000000000000000000000000000C0 -S3154004966000000000000000000000000000000000B0 -S3154004967000000000000000000000000000000000A0 -S315400496800000000000000000000000000000000090 -S315400496900000000000000000000000000000000080 -S315400496A00000000000000000000000000000000070 -S315400496B00000000000000000000000000000000060 -S315400496C00000000000000000000000000000000050 -S315400496D00000000000000000000000000000000040 -S315400496E00000000000000000000000000000000030 -S315400496F00000000000000000000000000000000020 -S31540049700000000000000000000000000000000000F -S3154004971000000000000000000000000000000000FF -S3154004972000000000000000000000000000000000EF -S3154004973000000000000000000000000000000000DF -S3154004974000000000000000000000000000000000CF -S3154004975000000000000000000000000000000000BF -S3154004976000000000000000000000000000000000AF -S31540049770000000000000000000000000000000009F -S31540049780000000000000000000000000000000008F -S31540049790000000000000000000000000000000007F -S315400497A0000000000000000000000000000000006F -S315400497B0000000000000000000000000000000005F -S315400497C0000000000000000000000000000000004F -S315400497D0000000000000000000000000000000003F -S315400497E0000000000000000000000000000000002F -S315400497F0000000000000000000000000000000001F -S31540049800000000000000000000000000000000000E -S3154004981000000000000000000000000000000000FE -S3154004982000000000000000000000000000000000EE -S3154004983000000000000000000000000000000000DE -S3154004984000000000000000000000000000000000CE -S3154004985000000000000000000000000000000000BE -S3154004986000000000000000000000000000000000AE -S31540049870000000000000000000000000000000009E -S31540049880000000000000000000000000000000008E -S31540049890000000000000000000000000000000007E -S315400498A0000000000000000000000000000000006E -S315400498B0000000000000000000000000000000005E -S315400498C0000000000000000000000000000000004E -S315400498D0000000000000000000000000000000003E -S315400498E0000000000000000000000000000000002E -S315400498F0000000000000000000000000000000001E -S31540049900000000000000000000000000000000000D -S3154004991000000000000000000000000000000000FD -S3154004992000000000000000000000000000000000ED -S3154004993000000000000000000000000000000000DD -S3154004994000000000000000000000000000000000CD -S3154004995000000000000000000000000000000000BD -S3154004996000000000000000000000000000000000AD -S31540049970000000000000000000000000000000009D -S31540049980000000000000000000000000000000008D -S31540049990000000000000000000000000000000007D -S315400499A0000000000000000000000000000000006D -S315400499B0000000000000000000000000000000005D -S315400499C0000000000000000000000000000000004D -S315400499D0000000000000000000000000000000003D -S315400499E0000000000000000000000000000000002D -S315400499F0000000000000000000000000000000001D -S31540049A00000000000000000000000000000000000C -S31540049A1000000000000000000000000000000000FC -S31540049A2000000000000000000000000000000000EC -S31540049A3000000000000000000000000000000000DC -S31540049A4000000000000000000000000000000000CC -S31540049A5000000000000000000000000000000000BC -S31540049A6000000000000000000000000000000000AC -S31540049A70000000000000000000000000000000009C -S31540049A80000000000000000000000000000000008C -S31540049A90000000000000000000000000000000007C -S31540049AA0000000000000000000000000000000006C -S31540049AB0000000000000000000000000000000005C -S31540049AC0000000000000000000000000000000004C -S31540049AD0000000000000000000000000000000003C -S31540049AE0000000000000000000000000000000002C -S31540049AF0000000000000000000000000000000001C -S31540049B00000000000000000000000000000000000B -S31540049B1000000000000000000000000000000000FB -S31540049B2000000000000000000000000000000000EB -S31540049B3000000000000000000000000000000000DB -S31540049B4000000000000000000000000000000000CB -S31540049B5000000000000000000000000000000000BB -S31540049B6000000000000000000000000000000000AB -S31540049B70000000000000000000000000000000009B -S31540049B80000000000000000000000000000000008B -S31540049B90000000000000000000000000000000007B -S31540049BA0000000000000000000000000000000006B -S31540049BB0000000000000000000000000000000005B -S31540049BC0000000000000000000000000000000004B -S31540049BD0000000000000000000000000000000003B -S31540049BE0000000000000000000000000000000002B -S31540049BF0000000000000000000000000000000001B -S31540049C00000000000000000000000000000000000A -S31540049C1000000000000000000000000000000000FA -S31540049C2000000000000000000000000000000000EA -S31540049C3000000000000000000000000000000000DA -S31540049C4000000000000000000000000000000000CA -S31540049C5000000000000000000000000000000000BA -S31540049C6000000000000000000000000000000000AA -S31540049C70000000000000000000000000000000009A -S31540049C80000000000000000000000000000000008A -S31540049C90000000000000000000000000000000007A -S31540049CA0000000000000000000000000000000006A -S31540049CB0000000000000000000000000000000005A -S31540049CC0000000000000000000000000000000004A -S31540049CD0000000000000000000000000000000003A -S31540049CE0000000000000000000000000000000002A -S31540049CF0000000000000000000000000000000001A -S31540049D000000000000000000000000000000000009 -S31540049D1000000000000000000000000000000000F9 -S31540049D2000000000000000000000000000000000E9 -S31540049D3000000000000000000000000000000000D9 -S31540049D4000000000000000000000000000000000C9 -S31540049D5000000000000000000000000000000000B9 -S31540049D6000000000000000000000000000000000A9 -S31540049D700000000000000000000000000000000099 -S31540049D800000000000000000000000000000000089 -S31540049D900000000000000000000000000000000079 -S31540049DA00000000000000000000000000000000069 -S31540049DB00000000000000000000000000000000059 -S31540049DC00000000000000000000000000000000049 -S31540049DD00000000000000000000000000000000039 -S31540049DE00000000000000000000000000000000029 -S31540049DF00000000000000000000000000000000019 -S31540049E000000000000000000000000000000000008 -S31540049E1000000000000000000000000000000000F8 -S31540049E2000000000000000000000000000000000E8 -S31540049E3000000000000000000000000000000000D8 -S31540049E4000000000000000000000000000000000C8 -S31540049E5000000000000000000000000000000000B8 -S31540049E6000000000000000000000000000000000A8 -S31540049E700000000000000000000000000000000098 -S31540049E800000000000000000000000000000000088 -S31540049E900000000000000000000000000000000078 -S31540049EA00000000000000000000000000000000068 -S31540049EB00000000000000000000000000000000058 -S31540049EC00000000000000000000000000000000048 -S31540049ED00000000000000000000000000000000038 -S31540049EE00000000000000000000000000000000028 -S31540049EF00000000000000000000000000000000018 -S31540049F000000000000000000000000000000000007 -S31540049F1000000000000000000000000000000000F7 -S31540049F2000000000000000000000000000000000E7 -S31540049F3000000000000000000000000000000000D7 -S31540049F4000000000000000000000000000000000C7 -S31540049F5000000000000000000000000000000000B7 -S31540049F6000000000000000000000000000000000A7 -S31540049F700000000000000000000000000000000097 -S31540049F800000000000000000000000000000000087 -S31540049F900000000000000000000000000000000077 -S31540049FA00000000000000000000000000000000067 -S31540049FB00000000000000000000000000000000057 -S31540049FC00000000000000000000000000000000047 -S31540049FD00000000000000000000000000000000037 -S31540049FE00000000000000000000000000000000027 -S31540049FF00000000000000000000000000000000017 -S3154004A0000000000000000000000000000000000006 -S3154004A01000000000000000000000000000000000F6 -S3154004A02000000000000000000000000000000000E6 -S3154004A03000000000000000000000000000000000D6 -S3154004A04000000000000000000000000000000000C6 -S3154004A05000000000000000000000000000000000B6 -S3154004A06000000000000000000000000000000000A6 -S3154004A0700000000000000000000000000000000096 -S3154004A0800000000000000000000000000000000086 -S3154004A0900000000000000000000000000000000076 -S3154004A0A00000000000000000000000000000000066 -S3154004A0B00000000000000000000000000000000056 -S3154004A0C00000000000000000000000000000000046 -S3154004A0D00000000000000000000000000000000036 -S3154004A0E00000000000000000000000000000000026 -S3154004A0F00000000000000000000000000000000016 -S3154004A1000000000000000000000000000000000005 -S3154004A11000000000000000000000000000000000F5 -S3154004A12000000000000000000000000000000000E5 -S3154004A13000000000000000000000000000000000D5 -S3154004A14000000000000000000000000000000000C5 -S3154004A15000000000000000000000000000000000B5 -S3154004A16000000000000000000000000000000000A5 -S3154004A1700000000000000000000000000000000095 -S3154004A1800000000000000000000000000000000085 -S3154004A1900000000000000000000000000000000075 -S3154004A1A00000000000000000000000000000000065 -S3154004A1B00000000000000000000000000000000055 -S3154004A1C00000000000000000000000000000000045 -S3154004A1D00000000000000000000000000000000035 -S3154004A1E00000000000000000000000000000000025 -S3154004A1F00000000000000000000000000000000015 -S3154004A2000000000000000000000000000000000004 -S3154004A21000000000000000000000000000000000F4 -S3154004A22000000000000000000000000000000000E4 -S3154004A23000000000000000000000000000000000D4 -S3154004A24000000000000000000000000000000000C4 -S3154004A25000000000000000000000000000000000B4 -S3154004A26000000000000000000000000000000000A4 -S3154004A2700000000000000000000000000000000094 -S3154004A2800000000000000000000000000000000084 -S3154004A2900000000000000000000000000000000074 -S3154004A2A00000000000000000000000000000000064 -S3154004A2B00000000000000000000000000000000054 -S3154004A2C00000000000000000000000000000000044 -S3154004A2D00000000000000000000000000000000034 -S3154004A2E00000000000000000000000000000000024 -S3154004A2F00000000000000000000000000000000014 -S3154004A3000000000000000000000000000000000003 -S3154004A31000000000000000000000000000000000F3 -S3154004A32000000000000000000000000000000000E3 -S3154004A33000000000000000000000000000000000D3 -S3154004A34000000000000000000000000000000000C3 -S3154004A35000000000000000000000000000000000B3 -S3154004A36000000000000000000000000000000000A3 -S3154004A3700000000000000000000000000000000093 -S3154004A3800000000000000000000000000000000083 -S3154004A3900000000000000000000000000000000073 -S3154004A3A00000000000000000000000000000000063 -S3154004A3B00000000000000000000000000000000053 -S3154004A3C00000000000000000000000000000000043 -S3154004A3D00000000000000000000000000000000033 -S3154004A3E00000000000000000000000000000000023 -S3154004A3F00000000000000000000000000000000013 -S3154004A4000000000000000000000000000000000002 -S3154004A41000000000000000000000000000000000F2 -S3154004A42000000000000000000000000000000000E2 -S3154004A43000000000000000000000000000000000D2 -S3154004A44000000000000000000000000000000000C2 -S3154004A45000000000000000000000000000000000B2 -S3154004A46000000000000000000000000000000000A2 -S3154004A4700000000000000000000000000000000092 -S3154004A4800000000000000000000000000000000082 -S3154004A4900000000000000000000000000000000072 -S3154004A4A00000000000000000000000000000000062 -S3154004A4B00000000000000000000000000000000052 -S3154004A4C00000000000000000000000000000000042 -S3154004A4D00000000000000000000000000000000032 -S3154004A4E00000000000000000000000000000000022 -S3154004A4F00000000000000000000000000000000012 -S3154004A5000000000000000000000000000000000001 -S3154004A51000000000000000000000000000000000F1 -S3154004A52000000000000000000000000000000000E1 -S3154004A53000000000000000000000000000000000D1 -S3154004A54000000000000000000000000000000000C1 -S3154004A55000000000000000000000000000000000B1 -S3154004A56000000000000000000000000000000000A1 -S3154004A5700000000000000000000000000000000091 -S3154004A5800000000000000000000000000000000081 -S3154004A5900000000000000000000000000000000071 -S3154004A5A00000000000000000000000000000000061 -S3154004A5B00000000000000000000000000000000051 -S3154004A5C00000000000000000000000000000000041 -S3154004A5D00000000000000000000000000000000031 -S3154004A5E00000000000000000000000000000000021 -S3154004A5F00000000000000000000000000000000011 -S3154004A6000000000000000000000000000000000000 -S3154004A61000000000000000000000000000000000F0 -S3154004A62000000000000000000000000000000000E0 -S3154004A63000000000000000000000000000000000D0 -S3154004A64000000000000000000000000000000000C0 -S3154004A65000000000000000000000000000000000B0 -S3154004A66000000000000000000000000000000000A0 -S3154004A6700000000000000000000000000000000090 -S3154004A6800000000000000000000000000000000080 -S3154004A6900000000000000000000000000000000070 -S3154004A6A00000000000000000000000000000000060 -S3154004A6B00000000000000000000000000000000050 -S3154004A6C00000000000000000000000000000000040 -S3154004A6D00000000000000000000000000000000030 -S3154004A6E00000000000000000000000000000000020 -S3154004A6F00000000000000000000000000000000010 -S3154004A70000000000000000000000000000000000FF -S3154004A71000000000000000000000000000000000EF -S3154004A72000000000000000000000000000000000DF -S3154004A73000000000000000000000000000000000CF -S3154004A74000000000000000000000000000000000BF -S3154004A75000000000000000000000000000000000AF -S3154004A760000000000000000000000000000000009F -S3154004A770000000000000000000000000000000008F -S3154004A780000000000000000000000000000000007F -S3154004A790000000000000000000000000000000006F -S3154004A7A0000000000000000000000000000000005F -S3154004A7B0000000000000000000000000000000004F -S3154004A7C0000000000000000000000000000000003F -S3154004A7D0000000000000000000000000000000002F -S3154004A7E0000000000000000000000000000000001F -S3154004A7F0000000000000000000000000000000000F -S3154004A80000000000000000000000000000000000FE -S3154004A81000000000000000000000000000000000EE -S3154004A82000000000000000000000000000000000DE -S3154004A83000000000000000000000000000000000CE -S3154004A84000000000000000000000000000000000BE -S3154004A85000000000000000000000000000000000AE -S3154004A860000000000000000000000000000000009E -S3154004A870000000000000000000000000000000008E -S3154004A880000000000000000000000000000000007E -S3154004A890000000000000000000000000000000006E -S3154004A8A0000000000000000000000000000000005E -S3154004A8B0000000000000000000000000000000004E -S3154004A8C0000000000000000000000000000000003E -S3154004A8D0000000000000000000000000000000002E -S3154004A8E0000000000000000000000000000000001E -S3154004A8F0000000000000000000000000000000000E -S3154004A90000000000000000000000000000000000FD -S3154004A91000000000000000000000000000000000ED -S3154004A92000000000000000000000000000000000DD -S3154004A93000000000000000000000000000000000CD -S3154004A94000000000000000000000000000000000BD -S3154004A95000000000000000000000000000000000AD -S3154004A960000000000000000000000000000000009D -S3154004A970000000000000000000000000000000008D -S3154004A980000000000000000000000000000000007D -S3154004A990000000000000000000000000000000006D -S3154004A9A0000000000000000000000000000000005D -S3154004A9B0000000000000000000000000000000004D -S3154004A9C0000000000000000000000000000000003D -S3154004A9D0000000000000000000000000000000002D -S3154004A9E0000000000000000000000000000000001D -S3154004A9F0000000000000000000000000000000000D -S3154004AA0000000000000000000000000000000000FC -S3154004AA1000000000000000000000000000000000EC -S3154004AA2000000000000000000000000000000000DC -S3154004AA3000000000000000000000000000000000CC -S3154004AA4000000000000000000000000000000000BC -S3154004AA5000000000000000000000000000000000AC -S3154004AA60000000000000000000000000000000009C -S3154004AA70000000000000000000000000000000008C -S3154004AA80000000000000000000000000000000007C -S3154004AA90000000000000000000000000000000006C -S3154004AAA0000000000000000000000000000000005C -S3154004AAB0000000000000000000000000000000004C -S3154004AAC0000000000000000000000000000000003C -S3154004AAD0000000000000000000000000000000002C -S3154004AAE0000000000000000000000000000000001C -S3154004AAF0000000000000000000000000000000000C -S3154004AB0000000000000000000000000000000000FB -S3154004AB1000000000000000000000000000000000EB -S3154004AB2000000000000000000000000000000000DB -S3154004AB3000000000000000000000000000000000CB -S3154004AB4000000000000000000000000000000000BB -S3154004AB5000000000000000000000000000000000AB -S3154004AB60000000000000000000000000000000009B -S3154004AB70000000000000000000000000000000008B -S3154004AB80000000000000000000000000000000007B -S3154004AB90000000000000000000000000000000006B -S3154004ABA0000000000000000000000000000000005B -S3154004ABB0000000000000000000000000000000004B -S3154004ABC0000000000000000000000000000000003B -S3154004ABD0000000000000000000000000000000002B -S3154004ABE0000000000000000000000000000000001B -S3154004ABF0000000000000000000000000000000000B -S3154004AC0000000000000000000000000000000000FA -S3154004AC1000000000000000000000000000000000EA -S3154004AC2000000000000000000000000000000000DA -S3154004AC3000000000000000000000000000000000CA -S3154004AC4000000000000000000000000000000000BA -S3154004AC5000000000000000000000000000000000AA -S3154004AC60000000000000000000000000000000009A -S3154004AC70000000000000000000000000000000008A -S3154004AC80000000000000000000000000000000007A -S3154004AC90000000000000000000000000000000006A -S3154004ACA0000000000000000000000000000000005A -S3154004ACB0000000000000000000000000000000004A -S3154004ACC0000000000000000000000000000000003A -S3154004ACD0000000000000000000000000000000002A -S3154004ACE0000000000000000000000000000000001A -S3154004ACF0000000000000000000000000000000000A -S3154004AD0000000000000000000000000000000000F9 -S3154004AD1000000000000000000000000000000000E9 -S3154004AD2000000000000000000000000000000000D9 -S3154004AD3000000000000000000000000000000000C9 -S3154004AD4000000000000000000000000000000000B9 -S3154004AD5000000000000000000000000000000000A9 -S3154004AD600000000000000000000000000000000099 -S3154004AD700000000000000000000000000000000089 -S3154004AD800000000000000000000000000000000079 -S3154004AD900000000000000000000000000000000069 -S3154004ADA00000000000000000000000000000000059 -S3154004ADB00000000000000000000000000000000049 -S3154004ADC00000000000000000000000000000000039 -S3154004ADD00000000000000000000000000000000029 -S3154004ADE00000000000000000000000000000000019 -S3154004ADF00000000000000000000000000000000009 -S3154004AE0000000000000000000000000000000000F8 -S3154004AE1000000000000000000000000000000000E8 -S3154004AE2000000000000000000000000000000000D8 -S3154004AE3000000000000000000000000000000000C8 -S3154004AE4000000000000000000000000000000000B8 -S3154004AE5000000000000000000000000000000000A8 -S3154004AE600000000000000000000000000000000098 -S3154004AE700000000000000000000000000000000088 -S3154004AE800000000000000000000000000000000078 -S3154004AE900000000000000000000000000000000068 -S3154004AEA00000000000000000000000000000000058 -S3154004AEB00000000000000000000000000000000048 -S3154004AEC00000000000000000000000000000000038 -S3154004AED00000000000000000000000000000000028 -S3154004AEE00000000000000000000000000000000018 -S3154004AEF00000000000000000000000000000000008 -S3154004AF0000000000000000000000000000000000F7 -S3154004AF1000000000000000000000000000000000E7 -S3154004AF2000000000000000000000000000000000D7 -S3154004AF3000000000000000000000000000000000C7 -S3154004AF4000000000000000000000000000000000B7 -S3154004AF5000000000000000000000000000000000A7 -S3154004AF600000000000000000000000000000000097 -S3154004AF700000000000000000000000000000000087 -S3154004AF800000000000000000000000000000000077 -S3154004AF900000000000000000000000000000000067 -S3154004AFA00000000000000000000000000000000057 -S3154004AFB00000000000000000000000000000000047 -S3154004AFC00000000000000000000000000000000037 -S3154004AFD00000000000000000000000000000000027 -S3154004AFE00000000000000000000000000000000017 -S3154004AFF00000000000000000000000000000000007 -S3154004B00000000000000000000000000000000000F6 -S3154004B01000000000000000000000000000000000E6 -S3154004B02000000000000000000000000000000000D6 -S3154004B03000000000000000000000000000000000C6 -S3154004B04000000000000000000000000000000000B6 -S3154004B05000000000000000000000000000000000A6 -S3154004B0600000000000000000000000000000000096 -S3154004B0700000000000000000000000000000000086 -S3154004B0800000000000000000000000000000000076 -S3154004B0900000000000000000000000000000000066 -S3154004B0A00000000000000000000000000000000056 -S3154004B0B00000000000000000000000000000000046 -S3154004B0C00000000000000000000000000000000036 -S3154004B0D00000000000000000000000000000000026 -S3154004B0E00000000000000000000000000000000016 -S3154004B0F00000000000000000000000000000000006 -S3154004B10000000000000000000000000000000000F5 -S3154004B11000000000000000000000000000000000E5 -S3154004B12000000000000000000000000000000000D5 -S3154004B13000000000000000000000000000000000C5 -S3154004B14000000000000000000000000000000000B5 -S3154004B15000000000000000000000000000000000A5 -S3154004B1600000000000000000000000000000000095 -S3154004B1700000000000000000000000000000000085 -S3154004B1800000000000000000000000000000000075 -S3154004B1900000000000000000000000000000000065 -S3154004B1A00000000000000000000000000000000055 -S3154004B1B00000000000000000000000000000000045 -S3154004B1C00000000000000000000000000000000035 -S3154004B1D00000000000000000000000000000000025 -S3154004B1E00000000000000000000000000000000015 -S3154004B1F00000000000000000000000000000000005 -S3154004B20000000000000000000000000000000000F4 -S3154004B21000000000000000000000000000000000E4 -S3154004B22000000000000000000000000000000000D4 -S3154004B23000000000000000000000000000000000C4 -S3154004B24000000000000000000000000000000000B4 -S3154004B25000000000000000000000000000000000A4 -S3154004B2600000000000000000000000000000000094 -S3154004B2700000000000000000000000000000000084 -S3154004B2800000000000000000000000000000000074 -S3154004B2900000000000000000000000000000000064 -S3154004B2A00000000000000000000000000000000054 -S3154004B2B00000000000000000000000000000000044 -S3154004B2C00000000000000000000000000000000034 -S3154004B2D00000000000000000000000000000000024 -S3154004B2E00000000000000000000000000000000014 -S3154004B2F00000000000000000000000000000000004 -S3154004B30000000000000000000000000000000000F3 -S3154004B31000000000000000000000000000000000E3 -S3154004B32000000000000000000000000000000000D3 -S3154004B33000000000000000000000000000000000C3 -S3154004B34000000000000000000000000000000000B3 -S3154004B35000000000000000000000000000000000A3 -S3154004B3600000000000000000000000000000000093 -S3154004B3700000000000000000000000000000000083 -S3154004B3800000000000000000000000000000000073 -S3154004B3900000000000000000000000000000000063 -S3154004B3A00000000000000000000000000000000053 -S3154004B3B00000000000000000000000000000000043 -S3154004B3C00000000000000000000000000000000033 -S3154004B3D00000000000000000000000000000000023 -S3154004B3E00000000000000000000000000000000013 -S3154004B3F00000000000000000000000000000000003 -S3154004B40000000000000000000000000000000000F2 -S3154004B41000000000000000000000000000000000E2 -S3154004B42000000000000000000000000000000000D2 -S3154004B43000000000000000000000000000000000C2 -S3154004B44000000000000000000000000000000000B2 -S3154004B45000000000000000000000000000000000A2 -S3154004B4600000000000000000000000000000000092 -S3154004B4700000000000000000000000000000000082 -S3154004B4800000000000000000000000000000000072 -S3154004B4900000000000000000000000000000000062 -S3154004B4A00000000000000000000000000000000052 -S3154004B4B00000000000000000000000000000000042 -S3154004B4C00000000000000000000000000000000032 -S3154004B4D00000000000000000000000000000000022 -S3154004B4E00000000000000000000000000000000012 -S3154004B4F00000000000000000000000000000000002 -S3154004B50000000000000000000000000000000000F1 -S3154004B51000000000000000000000000000000000E1 -S3154004B52000000000000000000000000000000000D1 -S3154004B53000000000000000000000000000000000C1 -S3154004B54000000000000000000000000000000000B1 -S3154004B55000000000000000000000000000000000A1 -S3154004B5600000000000000000000000000000000091 -S3154004B5700000000000000000000000000000000081 -S3154004B5800000000000000000000000000000000071 -S3154004B5900000000000000000000000000000000061 -S3154004B5A00000000000000000000000000000000051 -S3154004B5B00000000000000000000000000000000041 -S3154004B5C00000000000000000000000000000000031 -S3154004B5D00000000000000000000000000000000021 -S3154004B5E00000000000000000000000000000000011 -S3154004B5F00000000000000000000000000000000001 -S3154004B60000000000000000000000000000000000F0 -S3154004B61000000000000000000000000000000000E0 -S3154004B62000000000000000000000000000000000D0 -S3154004B63000000000000000000000000000000000C0 -S3154004B64000000000000000000000000000000000B0 -S3154004B65000000000000000000000000000000000A0 -S3154004B6600000000000000000000000000000000090 -S3154004B6700000000000000000000000000000000080 -S3154004B6800000000000000000000000000000000070 -S3154004B6900000000000000000000000000000000060 -S3154004B6A00000000000000000000000000000000050 -S3154004B6B00000000000000000000000000000000040 -S3154004B6C00000000000000000000000000000000030 -S3154004B6D00000000000000000000000000000000020 -S3154004B6E00000000000000000000000000000000010 -S3154004B6F00000000000000000000000000000000000 -S3154004B70000000000000000000000000000000000EF -S3154004B71000000000000000000000000000000000DF -S3154004B72000000000000000000000000000000000CF -S3154004B73000000000000000000000000000000000BF -S3154004B74000000000000000000000000000000000AF -S3154004B750000000000000000000000000000000009F -S3154004B760000000000000000000000000000000008F -S3154004B770000000000000000000000000000000007F -S3154004B780000000000000000000000000000000006F -S3154004B790000000000000000000000000000000005F -S3154004B7A0000000000000000000000000000000004F -S3154004B7B0000000000000000000000000000000003F -S3154004B7C0000000000000000000000000000000002F -S3154004B7D0000000000000000000000000000000001F -S3154004B7E0000000000000000000000000000000000F -S3154004B7F000000000000000000000000000000000FF -S3154004B80000000000000000000000000000000000EE -S3154004B81000000000000000000000000000000000DE -S3154004B82000000000000000000000000000000000CE -S3154004B83000000000000000000000000000000000BE -S3154004B84000000000000000000000000000000000AE -S3154004B850000000000000000000000000000000009E -S3154004B860000000000000000000000000000000008E -S3154004B870000000000000000000000000000000007E -S3154004B880000000000000000000000000000000006E -S3154004B890000000000000000000000000000000005E -S3154004B8A0000000000000000000000000000000004E -S3154004B8B0000000000000000000000000000000003E -S3154004B8C0000000000000000000000000000000002E -S3154004B8D0000000000000000000000000000000001E -S3154004B8E0000000000000000000000000000000000E -S3154004B8F000000000000000000000000000000000FE -S3154004B90000000000000000000000000000000000ED -S3154004B91000000000000000000000000000000000DD -S3154004B92000000000000000000000000000000000CD -S3154004B93000000000000000000000000000000000BD -S3154004B94000000000000000000000000000000000AD -S3154004B950000000000000000000000000000000009D -S3154004B960000000000000000000000000000000008D -S3154004B970000000000000000000000000000000007D -S3154004B980000000000000000000000000000000006D -S3154004B990000000000000000000000000000000005D -S3154004B9A0000000000000000000000000000000004D -S3154004B9B0000000000000000000000000000000003D -S3154004B9C0000000000000000000000000000000002D -S3154004B9D0000000000000000000000000000000001D -S3154004B9E0000000000000000000000000000000000D -S3154004B9F000000000000000000000000000000000FD -S3154004BA0000000000000000000000000000000000EC -S3154004BA1000000000000000000000000000000000DC -S3154004BA2000000000000000000000000000000000CC -S3154004BA3000000000000000000000000000000000BC -S3154004BA4000000000000000000000000000000000AC -S3154004BA50000000000000000000000000000000009C -S3154004BA60000000000000000000000000000000008C -S3154004BA70000000000000000000000000000000007C -S3154004BA80000000000000000000000000000000006C -S3154004BA90000000000000000000000000000000005C -S3154004BAA0000000000000000000000000000000004C -S3154004BAB0000000000000000000000000000000003C -S3154004BAC0000000000000000000000000000000002C -S3154004BAD0000000000000000000000000000000001C -S3154004BAE0000000000000000000000000000000000C -S3154004BAF000000000000000000000000000000000FC -S3154004BB0000000000000000000000000000000000EB -S3154004BB1000000000000000000000000000000000DB -S3154004BB2000000000000000000000000000000000CB -S3154004BB3000000000000000000000000000000000BB -S3154004BB4000000000000000000000000000000000AB -S3154004BB50000000000000000000000000000000009B -S3154004BB60000000000000000000000000000000008B -S3154004BB70000000000000000000000000000000007B -S3154004BB80000000000000000000000000000000006B -S3154004BB90000000000000000000000000000000005B -S3154004BBA0000000000000000000000000000000004B -S3154004BBB0000000000000000000000000000000003B -S3154004BBC0000000000000000000000000000000002B -S3154004BBD0000000000000000000000000000000001B -S3154004BBE0000000000000000000000000000000000B -S3154004BBF000000000000000000000000000000000FB -S3154004BC0000000000000000000000000000000000EA -S3154004BC1000000000000000000000000000000000DA -S3154004BC2000000000000000000000000000000000CA -S3154004BC3000000000000000000000000000000000BA -S3154004BC4000000000000000000000000000000000AA -S3154004BC50000000000000000000000000000000009A -S3154004BC60000000000000000000000000000000008A -S3154004BC70000000000000000000000000000000007A -S3154004BC80000000000000000000000000000000006A -S3154004BC90000000000000000000000000000000005A -S3154004BCA0000000000000000000000000000000004A -S3154004BCB0000000000000000000000000000000003A -S3154004BCC0000000000000000000000000000000002A -S3154004BCD0000000000000000000000000000000001A -S3154004BCE0000000000000000000000000000000000A -S3154004BCF000000000000000000000000000000000FA -S3154004BD0000000000000000000000000000000000E9 -S3154004BD1000000000000000000000000000000000D9 -S3154004BD2000000000000000000000000000000000C9 -S3154004BD3000000000000000000000000000000000B9 -S3154004BD4000000000000000000000000000000000A9 -S3154004BD500000000000000000000000000000000099 -S3154004BD600000000000000000000000000000000089 -S3154004BD700000000000000000000000000000000079 -S3154004BD800000000000000000000000000000000069 -S3154004BD900000000000000000000000000000000059 -S3154004BDA00000000000000000000000000000000049 -S3154004BDB00000000000000000000000000000000039 -S3154004BDC00000000000000000000000000000000029 -S3154004BDD00000000000000000000000000000000019 -S3154004BDE00000000000000000000000000000000009 -S3154004BDF000000000000000000000000000000000F9 -S3154004BE0000000000000000000000000000000000E8 -S3154004BE1000000000000000000000000000000000D8 -S3154004BE2000000000000000000000000000000000C8 -S3154004BE3000000000000000000000000000000000B8 -S3154004BE4000000000000000000000000000000000A8 -S3154004BE500000000000000000000000000000000098 -S3154004BE600000000000000000000000000000000088 -S3154004BE700000000000000000000000000000000078 -S3154004BE800000000000000000000000000000000068 -S3154004BE900000000000000000000000000000000058 -S3154004BEA00000000000000000000000000000000048 -S3154004BEB00000000000000000000000000000000038 -S3154004BEC00000000000000000000000000000000028 -S3154004BED00000000000000000000000000000000018 -S3154004BEE00000000000000000000000000000000008 -S3154004BEF000000000000000000000000000000000F8 -S3154004BF0000000000000000000000000000000000E7 -S3154004BF1000000000000000000000000000000000D7 -S3154004BF2000000000000000000000000000000000C7 -S3154004BF3000000000000000000000000000000000B7 -S3154004BF4000000000000000000000000000000000A7 -S3154004BF500000000000000000000000000000000097 -S3154004BF600000000000000000000000000000000087 -S3154004BF700000000000000000000000000000000077 -S3154004BF800000000000000000000000000000000067 -S3154004BF900000000000000000000000000000000057 -S3154004BFA00000000000000000000000000000000047 -S3154004BFB00000000000000000000000000000000037 -S3154004BFC00000000000000000000000000000000027 -S3154004BFD00000000000000000000000000000000017 -S3154004BFE00000000000000000000000000000000007 -S3154004BFF000000000000000000000000000000000F7 -S3154004C00000000000000000000000000000000000E6 -S3154004C01000000000000000000000000000000000D6 -S3154004C02000000000000000000000000000000000C6 -S3154004C03000000000000000000000000000000000B6 -S3154004C04000000000000000000000000000000000A6 -S3154004C0500000000000000000000000000000000096 -S3154004C0600000000000000000000000000000000086 -S3154004C0700000000000000000000000000000000076 -S3154004C0800000000000000000000000000000000066 -S3154004C0900000000000000000000000000000000056 -S3154004C0A00000000000000000000000000000000046 -S3154004C0B00000000000000000000000000000000036 -S3154004C0C00000000000000000000000000000000026 -S3154004C0D00000000000000000000000000000000016 -S3154004C0E00000000000000000000000000000000006 -S3154004C0F000000000000000000000000000000000F6 -S3154004C10000000000000000000000000000000000E5 -S3154004C11000000000000000000000000000000000D5 -S3154004C12000000000000000000000000000000000C5 -S3154004C13000000000000000000000000000000000B5 -S3154004C14000000000000000000000000000000000A5 -S3154004C1500000000000000000000000000000000095 -S3154004C1600000000000000000000000000000000085 -S3154004C1700000000000000000000000000000000075 -S3154004C1800000000000000000000000000000000065 -S3154004C1900000000000000000000000000000000055 -S3154004C1A00000000000000000000000000000000045 -S3154004C1B00000000000000000000000000000000035 -S3154004C1C00000000000000000000000000000000025 -S3154004C1D00000000000000000000000000000000015 -S3154004C1E00000000000000000000000000000000005 -S3154004C1F000000000000000000000000000000000F5 -S3154004C20000000000000000000000000000000000E4 -S3154004C21000000000000000000000000000000000D4 -S3154004C22000000000000000000000000000000000C4 -S3154004C23000000000000000000000000000000000B4 -S3154004C24000000000000000000000000000000000A4 -S3154004C2500000000000000000000000000000000094 -S3154004C2600000000000000000000000000000000084 -S3154004C2700000000000000000000000000000000074 -S3154004C2800000000000000000000000000000000064 -S3154004C2900000000000000000000000000000000054 -S3154004C2A00000000000000000000000000000000044 -S3154004C2B00000000000000000000000000000000034 -S3154004C2C00000000000000000000000000000000024 -S3154004C2D00000000000000000000000000000000014 -S3154004C2E00000000000000000000000000000000004 -S3154004C2F000000000000000000000000000000000F4 -S3154004C30000000000000000000000000000000000E3 -S3154004C31000000000000000000000000000000000D3 -S3154004C32000000000000000000000000000000000C3 -S3154004C33000000000000000000000000000000000B3 -S3154004C34000000000000000000000000000000000A3 -S3154004C3500000000000000000000000000000000093 -S3154004C3600000000000000000000000000000000083 -S3154004C3700000000000000000000000000000000073 -S3154004C3800000000000000000000000000000000063 -S3154004C3900000000000000000000000000000000053 -S3154004C3A00000000000000000000000000000000043 -S3154004C3B00000000000000000000000000000000033 -S3154004C3C00000000000000000000000000000000023 -S3154004C3D00000000000000000000000000000000013 -S3154004C3E00000000000000000000000000000000003 -S3154004C3F000000000000000000000000000000000F3 -S3154004C40000000000000000000000000000000000E2 -S3154004C41000000000000000000000000000000000D2 -S3154004C42000000000000000000000000000000000C2 -S3154004C43000000000000000000000000000000000B2 -S3154004C44000000000000000000000000000000000A2 -S3154004C4500000000000000000000000000000000092 -S3154004C4600000000000000000000000000000000082 -S3154004C4700000000000000000000000000000000072 -S3154004C4800000000000000000000000000000000062 -S3154004C4900000000000000000000000000000000052 -S3154004C4A00000000000000000000000000000000042 -S3154004C4B00000000000000000000000000000000032 -S3154004C4C00000000000000000000000000000000022 -S3154004C4D00000000000000000000000000000000012 -S3154004C4E00000000000000000000000000000000002 -S3154004C4F000000000000000000000000000000000F2 -S3154004C50000000000000000000000000000000000E1 -S3154004C51000000000000000000000000000000000D1 -S3154004C52000000000000000000000000000000000C1 -S3154004C53000000000000000000000000000000000B1 -S3154004C54000000000000000000000000000000000A1 -S3154004C5500000000000000000000000000000000091 -S3154004C5600000000000000000000000000000000081 -S3154004C5700000000000000000000000000000000071 -S3154004C5800000000000000000000000000000000061 -S3154004C5900000000000000000000000000000000051 -S3154004C5A00000000000000000000000000000000041 -S3154004C5B00000000000000000000000000000000031 -S3154004C5C00000000000000000000000000000000021 -S3154004C5D00000000000000000000000000000000011 -S3154004C5E00000000000000000000000000000000001 -S3154004C5F000000000000000000000000000000000F1 -S3154004C60000000000000000000000000000000000E0 -S3154004C61000000000000000000000000000000000D0 -S3154004C62000000000000000000000000000000000C0 -S3154004C63000000000000000000000000000000000B0 -S3154004C64000000000000000000000000000000000A0 -S3154004C6500000000000000000000000000000000090 -S3154004C6600000000000000000000000000000000080 -S3154004C6700000000000000000000000000000000070 -S3154004C6800000000000000000000000000000000060 -S3154004C6900000000000000000000000000000000050 -S3154004C6A00000000000000000000000000000000040 -S3154004C6B00000000000000000000000000000000030 -S3154004C6C00000000000000000000000000000000020 -S3154004C6D00000000000000000000000000000000010 -S3154004C6E00000000000000000000000000000000000 -S3154004C6F000000000000000000000000000000000F0 -S3154004C70000000000000000000000000000000000DF -S3154004C71000000000000000000000000000000000CF -S3154004C72000000000000000000000000000000000BF -S3154004C73000000000000000000000000000000000AF -S3154004C740000000000000000000000000000000009F -S3154004C750000000000000000000000000000000008F -S3154004C760000000000000000000000000000000007F -S3154004C770000000000000000000000000000000006F -S3154004C780000000000000000000000000000000005F -S3154004C790000000000000000000000000000000004F -S3154004C7A0000000000000000000000000000000003F -S3154004C7B0000000000000000000000000000000002F -S3154004C7C0000000000000000000000000000000001F -S3154004C7D0000000000000000000000000000000000F -S3154004C7E000000000000000000000000000000000FF -S3154004C7F000000000000000000000000000000000EF -S3154004C80000000000000000000000000000000000DE -S3154004C81000000000000000000000000000000000CE -S3154004C82000000000000000000000000000000000BE -S3154004C83000000000000000000000000000000000AE -S3154004C840000000000000000000000000000000009E -S3154004C850000000000000000000000000000000008E -S3154004C860000000000000000000000000000000007E -S3154004C870000000000000000000000000000000006E -S3154004C880000000000000000000000000000000005E -S3154004C890000000000000000000000000000000004E -S3154004C8A0000000000000000000000000000000003E -S3154004C8B0000000000000000000000000000000002E -S3154004C8C0000000000000000000000000000000001E -S3154004C8D0000000000000000000000000000000000E -S3154004C8E000000000000000000000000000000000FE -S3154004C8F000000000000000000000000000000000EE -S3154004C90000000000000000000000000000000000DD -S3154004C91000000000000000000000000000000000CD -S3154004C92000000000000000000000000000000000BD -S3154004C93000000000000000000000000000000000AD -S3154004C940000000000000000000000000000000009D -S3154004C950000000000000000000000000000000008D -S3154004C960000000000000000000000000000000007D -S3154004C970000000000000000000000000000000006D -S3154004C980000000000000000000000000000000005D -S3154004C990000000000000000000000000000000004D -S3154004C9A0000000000000000000000000000000003D -S3154004C9B0000000000000000000000000000000002D -S3154004C9C0000000000000000000000000000000001D -S3154004C9D0000000000000000000000000000000000D -S3154004C9E000000000000000000000000000000000FD -S3154004C9F000000000000000000000000000000000ED -S3154004CA0000000000000000000000000000000000DC -S3154004CA1000000000000000000000000000000000CC -S3154004CA2000000000000000000000000000000000BC -S3154004CA3000000000000000000000000000000000AC -S3154004CA40000000000000000000000000000000009C -S3154004CA50000000000000000000000000000000008C -S3154004CA60000000000000000000000000000000007C -S3154004CA70000000000000000000000000000000006C -S3154004CA80000000000000000000000000000000005C -S3154004CA90000000000000000000000000000000004C -S3154004CAA0000000000000000000000000000000003C -S3154004CAB0000000000000000000000000000000002C -S3154004CAC0000000000000000000000000000000001C -S3154004CAD0000000000000000000000000000000000C -S3154004CAE000000000000000000000000000000000FC -S3154004CAF000000000000000000000000000000000EC -S3154004CB0000000000000000000000000000000000DB -S3154004CB1000000000000000000000000000000000CB -S3154004CB2000000000000000000000000000000000BB -S3154004CB3000000000000000000000000000000000AB -S3154004CB40000000000000000000000000000000009B -S3154004CB50000000000000000000000000000000008B -S3154004CB60000000000000000000000000000000007B -S3154004CB70000000000000000000000000000000006B -S3154004CB80000000000000000000000000000000005B -S3154004CB90000000000000000000000000000000004B -S3154004CBA0000000000000000000000000000000003B -S3154004CBB0000000000000000000000000000000002B -S3154004CBC0000000000000000000000000000000001B -S3154004CBD0000000000000000000000000000000000B -S3154004CBE000000000000000000000000000000000FB -S3154004CBF000000000000000000000000000000000EB -S3154004CC0000000000000000000000000000000000DA -S3154004CC1000000000000000000000000000000000CA -S3154004CC2000000000000000000000000000000000BA -S3154004CC3000000000000000000000000000000000AA -S3154004CC40000000000000000000000000000000009A -S3154004CC50000000000000000000000000000000008A -S3154004CC60000000000000000000000000000000007A -S3154004CC70000000000000000000000000000000006A -S3154004CC80000000000000000000000000000000005A -S3154004CC90000000000000000000000000000000004A -S3154004CCA0000000000000000000000000000000003A -S3154004CCB0000000000000000000000000000000002A -S3154004CCC0000000000000000000000000000000001A -S3154004CCD0000000000000000000000000000000000A -S3154004CCE000000000000000000000000000000000FA -S3154004CCF000000000000000000000000000000000EA -S3154004CD0000000000000000000000000000000000D9 -S3154004CD1000000000000000000000000000000000C9 -S3154004CD2000000000000000000000000000000000B9 -S3154004CD3000000000000000000000000000000000A9 -S3154004CD400000000000000000000000000000000099 -S3154004CD500000000000000000000000000000000089 -S3154004CD600000000000000000000000000000000079 -S3154004CD700000000000000000000000000000000069 -S3154004CD800000000000000000000000000000000059 -S3154004CD900000000000000000000000000000000049 -S3154004CDA00000000000000000000000000000000039 -S3154004CDB00000000000000000000000000000000029 -S3154004CDC00000000000000000000000000000000019 -S3154004CDD00000000000000000000000000000000009 -S3154004CDE000000000000000000000000000000000F9 -S3154004CDF000000000000000000000000000000000E9 -S3154004CE0000000000000000000000000000000000D8 -S3154004CE1000000000000000000000000000000000C8 -S3154004CE2000000000000000000000000000000000B8 -S3154004CE3000000000000000000000000000000000A8 -S3154004CE400000000000000000000000000000000098 -S3154004CE500000000000000000000000000000000088 -S3154004CE600000000000000000000000000000000078 -S3154004CE700000000000000000000000000000000068 -S3154004CE800000000000000000000000000000000058 -S3154004CE900000000000000000000000000000000048 -S3154004CEA00000000000000000000000000000000038 -S3154004CEB00000000000000000000000000000000028 -S3154004CEC00000000000000000000000000000000018 -S3154004CED00000000000000000000000000000000008 -S3154004CEE000000000000000000000000000000000F8 -S3154004CEF000000000000000000000000000000000E8 -S3154004CF0000000000000000000000000000000000D7 -S3154004CF1000000000000000000000000000000000C7 -S3154004CF2000000000000000000000000000000000B7 -S3154004CF3000000000000000000000000000000000A7 -S3154004CF400000000000000000000000000000000097 -S3154004CF500000000000000000000000000000000087 -S3154004CF600000000000000000000000000000000077 -S3154004CF700000000000000000000000000000000067 -S3154004CF800000000000000000000000000000000057 -S3154004CF900000000000000000000000000000000047 -S3154004CFA00000000000000000000000000000000037 -S3154004CFB00000000000000000000000000000000027 -S3154004CFC00000000000000000000000000000000017 -S3154004CFD00000000000000000000000000000000007 -S3154004CFE000000000000000000000000000000000F7 -S3154004CFF000000000000000000000000000000000E7 -S3154004D00000000000000000000000000000000000D6 -S3154004D01000000000000000000000000000000000C6 -S3154004D02000000000000000000000000000000000B6 -S3154004D03000000000000000000000000000000000A6 -S3154004D0400000000000000000000000000000000096 -S3154004D0500000000000000000000000000000000086 -S3154004D0600000000000000000000000000000000076 -S3154004D0700000000000000000000000000000000066 -S3154004D0800000000000000000000000000000000056 -S3154004D0900000000000000000000000000000000046 -S3154004D0A00000000000000000000000000000000036 -S3154004D0B00000000000000000000000000000000026 -S3154004D0C00000000000000000000000000000000016 -S3154004D0D00000000000000000000000000000000006 -S3154004D0E000000000000000000000000000000000F6 -S3154004D0F000000000000000000000000000000000E6 -S3154004D10000000000000000000000000000000000D5 -S3154004D11000000000000000000000000000000000C5 -S3154004D12000000000000000000000000000000000B5 -S3154004D13000000000000000000000000000000000A5 -S3154004D1400000000000000000000000000000000095 -S3154004D1500000000000000000000000000000000085 -S3154004D1600000000000000000000000000000000075 -S3154004D1700000000000000000000000000000000065 -S3154004D1800000000000000000000000000000000055 -S3154004D1900000000000000000000000000000000045 -S3154004D1A00000000000000000000000000000000035 -S3154004D1B00000000000000000000000000000000025 -S3154004D1C00000000000000000000000000000000015 -S3154004D1D00000000000000000000000000000000005 -S3154004D1E000000000000000000000000000000000F5 -S3154004D1F000000000000000000000000000000000E5 -S3154004D20000000000000000000000000000000000D4 -S3154004D21000000000000000000000000000000000C4 -S3154004D22000000000000000000000000000000000B4 -S3154004D23000000000000000000000000000000000A4 -S3154004D2400000000000000000000000000000000094 -S3154004D2500000000000000000000000000000000084 -S3154004D2600000000000000000000000000000000074 -S3154004D2700000000000000000000000000000000064 -S3154004D2800000000000000000000000000000000054 -S3154004D2900000000000000000000000000000000044 -S3154004D2A00000000000000000000000000000000034 -S3154004D2B00000000000000000000000000000000024 -S3154004D2C00000000000000000000000000000000014 -S3154004D2D00000000000000000000000000000000004 -S3154004D2E000000000000000000000000000000000F4 -S3154004D2F000000000000000000000000000000000E4 -S3154004D30000000000000000000000000000000000D3 -S3154004D31000000000000000000000000000000000C3 -S3154004D32000000000000000000000000000000000B3 -S3154004D33000000000000000000000000000000000A3 -S3154004D3400000000000000000000000000000000093 -S3154004D3500000000000000000000000000000000083 -S3154004D3600000000000000000000000000000000073 -S3154004D3700000000000000000000000000000000063 -S3154004D3800000000000000000000000000000000053 -S3154004D3900000000000000000000000000000000043 -S3154004D3A00000000000000000000000000000000033 -S3154004D3B00000000000000000000000000000000023 -S3154004D3C00000000000000000000000000000000013 -S3154004D3D00000000000000000000000000000000003 -S3154004D3E000000000000000000000000000000000F3 -S3154004D3F000000000000000000000000000000000E3 -S3154004D40000000000000000000000000000000000D2 -S3154004D41000000000000000000000000000000000C2 -S3154004D42000000000000000000000000000000000B2 -S3154004D43000000000000000000000000000000000A2 -S3154004D4400000000000000000000000000000000092 -S3154004D4500000000000000000000000000000000082 -S3154004D4600000000000000000000000000000000072 -S3154004D4700000000000000000000000000000000062 -S3154004D4800000000000000000000000000000000052 -S3154004D4900000000000000000000000000000000042 -S3154004D4A00000000000000000000000000000000032 -S3154004D4B00000000000000000000000000000000022 -S3154004D4C00000000000000000000000000000000012 -S3154004D4D00000000000000000000000000000000002 -S3154004D4E000000000000000000000000000000000F2 -S3154004D4F000000000000000000000000000000000E2 -S3154004D50000000000000000000000000000000000D1 -S3154004D51000000000000000000000000000000000C1 -S3154004D52000000000000000000000000000000000B1 -S3154004D53000000000000000000000000000000000A1 -S3154004D5400000000000000000000000000000000091 -S3154004D5500000000000000000000000000000000081 -S3154004D5600000000000000000000000000000000071 -S3154004D5700000000000000000000000000000000061 -S3154004D5800000000000000000000000000000000051 -S3154004D5900000000000000000000000000000000041 -S3154004D5A00000000000000000000000000000000031 -S3154004D5B00000000000000000000000000000000021 -S3154004D5C00000000000000000000000000000000011 -S3154004D5D00000000000000000000000000000000001 -S3154004D5E000000000000000000000000000000000F1 -S3154004D5F000000000000000000000000000000000E1 -S3154004D60000000000000000000000000000000000D0 -S3154004D61000000000000000000000000000000000C0 -S3154004D62000000000000000000000000000000000B0 -S3154004D63000000000000000000000000000000000A0 -S3154004D6400000000000000000000000000000000090 -S3154004D6500000000000000000000000000000000080 -S3154004D6600000000000000000000000000000000070 -S3154004D6700000000000000000000000000000000060 -S3154004D6800000000000000000000000000000000050 -S3154004D6900000000000000000000000000000000040 -S3154004D6A00000000000000000000000000000000030 -S3154004D6B00000000000000000000000000000000020 -S3154004D6C00000000000000000000000000000000010 -S3154004D6D00000000000000000000000000000000000 -S3154004D6E000000000000000000000000000000000F0 -S3154004D6F000000000000000000000000000000000E0 -S3154004D70000000000000000000000000000000000CF -S3154004D71000000000000000000000000000000000BF -S3154004D72000000000000000000000000000000000AF -S3154004D730000000000000000000000000000000009F -S3154004D740000000000000000000000000000000008F -S3154004D750000000000000000000000000000000007F -S3154004D760000000000000000000000000000000006F -S3154004D770000000000000000000000000000000005F -S3154004D780000000000000000000000000000000004F -S3154004D790000000000000000000000000000000003F -S3154004D7A0000000000000000000000000000000002F -S3154004D7B0000000000000000000000000000000001F -S3154004D7C0000000000000000000000000000000000F -S3154004D7D000000000000000000000000000000000FF -S3154004D7E000000000000000000000000000000000EF -S3154004D7F000000000000000000000000000000000DF -S3154004D80000000000000000000000000000000000CE -S3154004D81000000000000000000000000000000000BE -S3154004D82000000000000000000000000000000000AE -S3154004D830000000000000000000000000000000009E -S3154004D840000000000000000000000000000000008E -S3154004D850000000000000000000000000000000007E -S3154004D860000000000000000000000000000000006E -S3154004D870000000000000000000000000000000005E -S3154004D880000000000000000000000000000000004E -S3154004D890000000000000000000000000000000003E -S3154004D8A0000000000000000000000000000000002E -S3154004D8B0000000000000000000000000000000001E -S3154004D8C0000000000000000000000000000000000E -S3154004D8D000000000000000000000000000000000FE -S3154004D8E000000000000000000000000000000000EE -S3154004D8F000000000000000000000000000000000DE -S3154004D90000000000000000000000000000000000CD -S3154004D91000000000000000000000000000000000BD -S3154004D92000000000000000000000000000000000AD -S3154004D930000000000000000000000000000000009D -S3154004D940000000000000000000000000000000008D -S3154004D950000000000000000000000000000000007D -S3154004D960000000000000000000000000000000006D -S3154004D970000000000000000000000000000000005D -S3154004D980000000000000000000000000000000004D -S3154004D990000000000000000000000000000000003D -S3154004D9A0000000000000000000000000000000002D -S3154004D9B0000000000000000000000000000000001D -S3154004D9C0000000000000000000000000000000000D -S3154004D9D000000000000000000000000000000000FD -S3154004D9E000000000000000000000000000000000ED -S3154004D9F000000000000000000000000000000000DD -S3154004DA0000000000000000000000000000000000CC -S3154004DA1000000000000000000000000000000000BC -S3154004DA2000000000000000000000000000000000AC -S3154004DA30000000000000000000000000000000009C -S3154004DA40000000000000000000000000000000008C -S3154004DA50000000000000000000000000000000007C -S3154004DA60000000000000000000000000000000006C -S3154004DA70000000000000000000000000000000005C -S3154004DA80000000000000000000000000000000004C -S3154004DA90000000000000000000000000000000003C -S3154004DAA0000000000000000000000000000000002C -S3154004DAB0000000000000000000000000000000001C -S3154004DAC0000000000000000000000000000000000C -S3154004DAD000000000000000000000000000000000FC -S3154004DAE000000000000000000000000000000000EC -S3154004DAF000000000000000000000000000000000DC -S3154004DB0000000000000000000000000000000000CB -S3154004DB1000000000000000000000000000000000BB -S3154004DB2000000000000000000000000000000000AB -S3154004DB30000000000000000000000000000000009B -S3154004DB40000000000000000000000000000000008B -S3154004DB50000000000000000000000000000000007B -S3154004DB60000000000000000000000000000000006B -S3154004DB70000000000000000000000000000000005B -S3154004DB80000000000000000000000000000000004B -S3154004DB90000000000000000000000000000000003B -S3154004DBA0000000000000000000000000000000002B -S3154004DBB0000000000000000000000000000000001B -S3154004DBC0000000000000000000000000000000000B -S3154004DBD000000000000000000000000000000000FB -S3154004DBE000000000000000000000000000000000EB -S3154004DBF000000000000000000000000000000000DB -S3154004DC0000000000000000000000000000000000CA -S3154004DC1000000000000000000000000000000000BA -S3154004DC2000000000000000000000000000000000AA -S3154004DC30000000000000000000000000000000009A -S3154004DC40000000000000000000000000000000008A -S3154004DC50000000000000000000000000000000007A -S3154004DC60000000000000000000000000000000006A -S3154004DC70000000000000000000000000000000005A -S3154004DC80000000000000000000000000000000004A -S3154004DC90000000000000000000000000000000003A -S3154004DCA0000000000000000000000000000000002A -S3154004DCB0000000000000000000000000000000001A -S3154004DCC0000000000000000000000000000000000A -S3154004DCD000000000000000000000000000000000FA -S3154004DCE000000000000000000000000000000000EA -S3154004DCF000000000000000000000000000000000DA -S3154004DD0000000000000000000000000000000000C9 -S3154004DD1000000000000000000000000000000000B9 -S3154004DD2000000000000000000000000000000000A9 -S3154004DD300000000000000000000000000000000099 -S3154004DD400000000000000000000000000000000089 -S3154004DD500000000000000000000000000000000079 -S3154004DD600000000000000000000000000000000069 -S3154004DD700000000000000000000000000000000059 -S3154004DD800000000000000000000000000000000049 -S3154004DD900000000000000000000000000000000039 -S3154004DDA00000000000000000000000000000000029 -S3154004DDB00000000000000000000000000000000019 -S3154004DDC00000000000000000000000000000000009 -S3154004DDD000000000000000000000000000000000F9 -S3154004DDE000000000000000000000000000000000E9 -S3154004DDF000000000000000000000000000000000D9 -S3154004DE0000000000000000000000000000000000C8 -S3154004DE1000000000000000000000000000000000B8 -S3154004DE2000000000000000000000000000000000A8 -S3154004DE300000000000000000000000000000000098 -S3154004DE400000000000000000000000000000000088 -S3154004DE500000000000000000000000000000000078 -S3154004DE600000000000000000000000000000000068 -S3154004DE700000000000000000000000000000000058 -S3154004DE800000000000000000000000000000000048 -S3154004DE900000000000000000000000000000000038 -S3154004DEA00000000000000000000000000000000028 -S3154004DEB00000000000000000000000000000000018 -S3154004DEC00000000000000000000000000000000008 -S3154004DED000000000000000000000000000000000F8 -S3154004DEE000000000000000000000000000000000E8 -S3154004DEF000000000000000000000000000000000D8 -S3154004DF0000000000000000000000000000000000C7 -S3154004DF1000000000000000000000000000000000B7 -S3154004DF2000000000000000000000000000000000A7 -S3154004DF300000000000000000000000000000000097 -S3154004DF400000000000000000000000000000000087 -S3154004DF500000000000000000000000000000000077 -S3154004DF600000000000000000000000000000000067 -S3154004DF700000000000000000000000000000000057 -S3154004DF800000000000000000000000000000000047 -S3154004DF900000000000000000000000000000000037 -S3154004DFA00000000000000000000000000000000027 -S3154004DFB00000000000000000000000000000000017 -S3154004DFC00000000000000000000000000000000007 -S3154004DFD000000000000000000000000000000000F7 -S3154004DFE000000000000000000000000000000000E7 -S3154004DFF000000000000000000000000000000000D7 -S3154004E00000000000000000000000000000000000C6 -S3154004E01000000000000000000000000000000000B6 -S3154004E02000000000000000000000000000000000A6 -S3154004E0300000000000000000000000000000000096 -S3154004E0400000000000000000000000000000000086 -S3154004E0500000000000000000000000000000000076 -S3154004E0600000000000000000000000000000000066 -S3154004E0700000000000000000000000000000000056 -S3154004E0800000000000000000000000000000000046 -S3154004E0900000000000000000000000000000000036 -S3154004E0A00000000000000000000000000000000026 -S3154004E0B00000000000000000000000000000000016 -S3154004E0C00000000000000000000000000000000006 -S3154004E0D000000000000000000000000000000000F6 -S3154004E0E000000000000000000000000000000000E6 -S3154004E0F000000000000000000000000000000000D6 -S3154004E10000000000000000000000000000000000C5 -S3154004E11000000000000000000000000000000000B5 -S3154004E12000000000000000000000000000000000A5 -S3154004E1300000000000000000000000000000000095 -S3154004E1400000000000000000000000000000000085 -S3154004E1500000000000000000000000000000000075 -S3154004E1600000000000000000000000000000000065 -S3154004E1700000000000000000000000000000000055 -S3154004E1800000000000000000000000000000000045 -S3154004E1900000000000000000000000000000000035 -S3154004E1A00000000000000000000000000000000025 -S3154004E1B00000000000000000000000000000000015 -S3154004E1C00000000000000000000000000000000005 -S3154004E1D000000000000000000000000000000000F5 -S3154004E1E000000000000000000000000000000000E5 -S3154004E1F000000000000000000000000000000000D5 -S3154004E20000000000000000000000000000000000C4 -S3154004E21000000000000000000000000000000000B4 -S3154004E22000000000000000000000000000000000A4 -S3154004E2300000000000000000000000000000000094 -S3154004E2400000000000000000000000000000000084 -S3154004E2500000000000000000000000000000000074 -S3154004E2600000000000000000000000000000000064 -S3154004E2700000000000000000000000000000000054 -S3154004E2800000000000000000000000000000000044 -S3154004E2900000000000000000000000000000000034 -S3154004E2A00000000000000000000000000000000024 -S3154004E2B00000000000000000000000000000000014 -S3154004E2C00000000000000000000000000000000004 -S3154004E2D000000000000000000000000000000000F4 -S3154004E2E000000000000000000000000000000000E4 -S3154004E2F000000000000000000000000000000000D4 -S3154004E30000000000000000000000000000000000C3 -S3154004E31000000000000000000000000000000000B3 -S3154004E32000000000000000000000000000000000A3 -S3154004E3300000000000000000000000000000000093 -S3154004E3400000000000000000000000000000000083 -S3154004E3500000000000000000000000000000000073 -S3154004E3600000000000000000000000000000000063 -S3154004E3700000000000000000000000000000000053 -S3154004E3800000000000000000000000000000000043 -S3154004E3900000000000000000000000000000000033 -S3154004E3A00000000000000000000000000000000023 -S3154004E3B00000000000000000000000000000000013 -S3154004E3C00000000000000000000000000000000003 -S3154004E3D000000000000000000000000000000000F3 -S3154004E3E000000000000000000000000000000000E3 -S3154004E3F000000000000000000000000000000000D3 -S3154004E40000000000000000000000000000000000C2 -S3154004E41000000000000000000000000000000000B2 -S3154004E42000000000000000000000000000000000A2 -S3154004E4300000000000000000000000000000000092 -S3154004E4400000000000000000000000000000000082 -S3154004E4500000000000000000000000000000000072 -S3154004E4600000000000000000000000000000000062 -S3154004E4700000000000000000000000000000000052 -S3154004E4800000000000000000000000000000000042 -S3154004E4900000000000000000000000000000000032 -S3154004E4A00000000000000000000000000000000022 -S3154004E4B00000000000000000000000000000000012 -S3154004E4C00000000000000000000000000000000002 -S3154004E4D000000000000000000000000000000000F2 -S3154004E4E000000000000000000000000000000000E2 -S3154004E4F000000000000000000000000000000000D2 -S3154004E50000000000000000000000000000000000C1 -S3154004E51000000000000000000000000000000000B1 -S3154004E52000000000000000000000000000000000A1 -S3154004E5300000000000000000000000000000000091 -S3154004E5400000000000000000000000000000000081 -S3154004E5500000000000000000000000000000000071 -S3154004E5600000000000000000000000000000000061 -S3154004E5700000000000000000000000000000000051 -S3154004E5800000000000000000000000000000000041 -S3154004E5900000000000000000000000000000000031 -S3154004E5A00000000000000000000000000000000021 -S3154004E5B00000000000000000000000000000000011 -S3154004E5C00000000000000000000000000000000001 -S3154004E5D000000000000000000000000000000000F1 -S3154004E5E000000000000000000000000000000000E1 -S3154004E5F000000000000000000000000000000000D1 -S3154004E60000000000000000000000000000000000C0 -S3154004E61000000000000000000000000000000000B0 -S3154004E62000000000000000000000000000000000A0 -S3154004E6300000000000000000000000000000000090 -S3154004E6400000000000000000000000000000000080 -S3154004E6500000000000000000000000000000000070 -S3154004E6600000000000000000000000000000000060 -S3154004E6700000000000000000000000000000000050 -S3154004E6800000000000000000000000000000000040 -S3154004E6900000000000000000000000000000000030 -S3154004E6A00000000000000000000000000000000020 -S3154004E6B00000000000000000000000000000000010 -S3154004E6C00000000000000000000000000000000000 -S3154004E6D000000000000000000000000000000000F0 -S3154004E6E000000000000000000000000000000000E0 -S3154004E6F000000000000000000000000000000000D0 -S3154004E70000000000000000000000000000000000BF -S3154004E71000000000000000000000000000000000AF -S3154004E720000000000000000000000000000000009F -S3154004E730000000000000000000000000000000008F -S3154004E740000000000000000000000000000000007F -S3154004E750000000000000000000000000000000006F -S3154004E760000000000000000000000000000000005F -S3154004E770000000000000000000000000000000004F -S3154004E780000000000000000000000000000000003F -S3154004E790000000000000000000000000000000002F -S3154004E7A0000000000000000000000000000000001F -S3154004E7B0000000000000000000000000000000000F -S3154004E7C000000000000000000000000000000000FF -S3154004E7D000000000000000000000000000000000EF -S3154004E7E000000000000000000000000000000000DF -S3154004E7F000000000000000000000000000000000CF -S3154004E80000000000000000000000000000000000BE -S3154004E81000000000000000000000000000000000AE -S3154004E820000000000000000000000000000000009E -S3154004E830000000000000000000000000000000008E -S3154004E840000000000000000000000000000000007E -S3154004E850000000000000000000000000000000006E -S3154004E860000000000000000000000000000000005E -S3154004E870000000000000000000000000000000004E -S3154004E880000000000000000000000000000000003E -S3154004E890000000000000000000000000000000002E -S3154004E8A0000000000000000000000000000000001E -S3154004E8B0000000000000000000000000000000000E -S3154004E8C000000000000000000000000000000000FE -S3154004E8D000000000000000000000000000000000EE -S3154004E8E000000000000000000000000000000000DE -S3154004E8F000000000000000000000000000000000CE -S3154004E90000000000000000000000000000000000BD -S3154004E91000000000000000000000000000000000AD -S3154004E920000000000000000000000000000000009D -S3154004E930000000000000000000000000000000008D -S3154004E940000000000000000000000000000000007D -S3154004E950000000000000000000000000000000006D -S3154004E960000000000000000000000000000000005D -S3154004E970000000000000000000000000000000004D -S3154004E980000000000000000000000000000000003D -S3154004E990000000000000000000000000000000002D -S3154004E9A0000000000000000000000000000000001D -S3154004E9B0000000000000000000000000000000000D -S3154004E9C000000000000000000000000000000000FD -S3154004E9D000000000000000000000000000000000ED -S3154004E9E000000000000000000000000000000000DD -S3154004E9F000000000000000000000000000000000CD -S3154004EA0000000000000000000000000000000000BC -S3154004EA1000000000000000000000000000000000AC -S3154004EA20000000000000000000000000000000009C -S3154004EA30000000000000000000000000000000008C -S3154004EA40000000000000000000000000000000007C -S3154004EA50000000000000000000000000000000006C -S3154004EA60000000000000000000000000000000005C -S3154004EA70000000000000000000000000000000004C -S3154004EA80000000000000000000000000000000003C -S3154004EA90000000000000000000000000000000002C -S3154004EAA0000000000000000000000000000000001C -S3154004EAB0000000000000000000000000000000000C -S3154004EAC000000000000000000000000000000000FC -S3154004EAD000000000000000000000000000000000EC -S3154004EAE000000000000000000000000000000000DC -S3154004EAF000000000000000000000000000000000CC -S3154004EB0000000000000000000000000000000000BB -S3154004EB1000000000000000000000000000000000AB -S3154004EB20000000000000000000000000000000009B -S3154004EB30000000000000000000000000000000008B -S3154004EB40000000000000000000000000000000007B -S3154004EB50000000000000000000000000000000006B -S3154004EB60000000000000000000000000000000005B -S3154004EB70000000000000000000000000000000004B -S3154004EB80000000000000000000000000000000003B -S3154004EB90000000000000000000000000000000002B -S3154004EBA0000000000000000000000000000000001B -S3154004EBB0000000000000000000000000000000000B -S3154004EBC000000000000000000000000000000000FB -S3154004EBD000000000000000000000000000000000EB -S3154004EBE000000000000000000000000000000000DB -S3154004EBF000000000000000000000000000000000CB -S3154004EC0000000000000000000000000000000000BA -S3154004EC1000000000000000000000000000000000AA -S3154004EC20000000000000000000000000000000009A -S3154004EC30000000000000000000000000000000008A -S3154004EC40000000000000000000000000000000007A -S3154004EC50000000000000000000000000000000006A -S3154004EC60000000000000000000000000000000005A -S3154004EC70000000000000000000000000000000004A -S3154004EC80000000000000000000000000000000003A -S3154004EC90000000000000000000000000000000002A -S3154004ECA0000000000000000000000000000000001A -S3154004ECB0000000000000000000000000000000000A -S3154004ECC000000000000000000000000000000000FA -S3154004ECD000000000000000000000000000000000EA -S3154004ECE000000000000000000000000000000000DA -S3154004ECF000000000000000000000000000000000CA -S3154004ED0000000000000000000000000000000000B9 -S3154004ED1000000000000000000000000000000000A9 -S3154004ED200000000000000000000000000000000099 -S3154004ED300000000000000000000000000000000089 -S3154004ED400000000000000000000000000000000079 -S3154004ED500000000000000000000000000000000069 -S3154004ED600000000000000000000000000000000059 -S3154004ED700000000000000000000000000000000049 -S3154004ED800000000000000000000000000000000039 -S3154004ED900000000000000000000000000000000029 -S3154004EDA00000000000000000000000000000000019 -S3154004EDB00000000000000000000000000000000009 -S3154004EDC000000000000000000000000000000000F9 -S3154004EDD000000000000000000000000000000000E9 -S3154004EDE000000000000000000000000000000000D9 -S3154004EDF000000000000000000000000000000000C9 -S3154004EE0000000000000000000000000000000000B8 -S3154004EE1000000000000000000000000000000000A8 -S3154004EE200000000000000000000000000000000098 -S3154004EE300000000000000000000000000000000088 -S3154004EE400000000000000000000000000000000078 -S3154004EE500000000000000000000000000000000068 -S3154004EE600000000000000000000000000000000058 -S3154004EE700000000000000000000000000000000048 -S3154004EE800000000000000000000000000000000038 -S3154004EE900000000000000000000000000000000028 -S3154004EEA00000000000000000000000000000000018 -S3154004EEB00000000000000000000000000000000008 -S3154004EEC000000000000000000000000000000000F8 -S3154004EED000000000000000000000000000000000E8 -S3154004EEE000000000000000000000000000000000D8 -S3154004EEF000000000000000000000000000000000C8 -S3154004EF0000000000000000000000000000000000B7 -S3154004EF1000000000000000000000000000000000A7 -S3154004EF200000000000000000000000000000000097 -S3154004EF300000000000000000000000000000000087 -S3154004EF400000000000000000000000000000000077 -S3154004EF500000000000000000000000000000000067 -S3154004EF600000000000000000000000000000000057 -S3154004EF700000000000000000000000000000000047 -S3154004EF800000000000000000000000000000000037 -S3154004EF900000000000000000000000000000000027 -S3154004EFA00000000000000000000000000000000017 -S3154004EFB00000000000000000000000000000000007 -S3154004EFC000000000000000000000000000000000F7 -S3154004EFD000000000000000000000000000000000E7 -S3154004EFE000000000000000000000000000000000D7 -S3154004EFF000000000000000000000000000000000C7 -S3154004F00000000000000000000000000000000000B6 -S3154004F01000000000000000000000000000000000A6 -S3154004F0200000000000000000000000000000000096 -S3154004F0300000000000000000000000000000000086 -S3154004F0400000000000000000000000000000000076 -S3154004F0500000000000000000000000000000000066 -S3154004F0600000000000000000000000000000000056 -S3154004F0700000000000000000000000000000000046 -S3154004F0800000000000000000000000000000000036 -S3154004F0900000000000000000000000000000000026 -S3154004F0A00000000000000000000000000000000016 -S3154004F0B00000000000000000000000000000000006 -S3154004F0C000000000000000000000000000000000F6 -S3154004F0D000000000000000000000000000000000E6 -S3154004F0E000000000000000000000000000000000D6 -S3154004F0F000000000000000000000000000000000C6 -S3154004F10000000000000000000000000000000000B5 -S3154004F11000000000000000000000000000000000A5 -S3154004F1200000000000000000000000000000000095 -S3154004F1300000000000000000000000000000000085 -S3154004F1400000000000000000000000000000000075 -S3154004F1500000000000000000000000000000000065 -S3154004F1600000000000000000000000000000000055 -S3154004F1700000000000000000000000000000000045 -S3154004F1800000000000000000000000000000000035 -S3154004F1900000000000000000000000000000000025 -S3154004F1A00000000000000000000000000000000015 -S3154004F1B00000000000000000000000000000000005 -S3154004F1C000000000000000000000000000000000F5 -S3154004F1D000000000000000000000000000000000E5 -S3154004F1E000000000000000000000000000000000D5 -S3154004F1F000000000000000000000000000000000C5 -S3154004F20000000000000000000000000000000000B4 -S3154004F21000000000000000000000000000000000A4 -S3154004F2200000000000000000000000000000000094 -S3154004F2300000000000000000000000000000000084 -S3154004F2400000000000000000000000000000000074 -S3154004F2500000000000000000000000000000000064 -S3154004F2600000000000000000000000000000000054 -S3154004F2700000000000000000000000000000000044 -S3154004F2800000000000000000000000000000000034 -S3154004F2900000000000000000000000000000000024 -S3154004F2A00000000000000000000000000000000014 -S3154004F2B00000000000000000000000000000000004 -S3154004F2C000000000000000000000000000000000F4 -S3154004F2D000000000000000000000000000000000E4 -S3154004F2E000000000000000000000000000000000D4 -S3154004F2F000000000000000000000000000000000C4 -S3154004F30000000000000000000000000000000000B3 -S3154004F31000000000000000000000000000000000A3 -S3154004F3200000000000000000000000000000000093 -S3154004F3300000000000000000000000000000000083 -S3154004F3400000000000000000000000000000000073 -S3154004F3500000000000000000000000000000000063 -S3154004F3600000000000000000000000000000000053 -S3154004F3700000000000000000000000000000000043 -S3154004F3800000000000000000000000000000000033 -S3154004F3900000000000000000000000000000000023 -S3154004F3A00000000000000000000000000000000013 -S3154004F3B00000000000000000000000000000000003 -S3154004F3C000000000000000000000000000000000F3 -S3154004F3D000000000000000000000000000000000E3 -S3154004F3E000000000000000000000000000000000D3 -S3154004F3F000000000000000000000000000000000C3 -S3154004F40000000000000000000000000000000000B2 -S3154004F41000000000000000000000000000000000A2 -S3154004F4200000000000000000000000000000000092 -S3154004F4300000000000000000000000000000000082 -S3154004F4400000000000000000000000000000000072 -S3154004F4500000000000000000000000000000000062 -S3154004F4600000000000000000000000000000000052 -S3154004F4700000000000000000000000000000000042 -S3154004F4800000000000000000000000000000000032 -S3154004F4900000000000000000000000000000000022 -S3154004F4A00000000000000000000000000000000012 -S3154004F4B00000000000000000000000000000000002 -S3154004F4C000000000000000000000000000000000F2 -S3154004F4D000000000000000000000000000000000E2 -S3154004F4E000000000000000000000000000000000D2 -S3154004F4F000000000000000000000000000000000C2 -S3154004F50000000000000000000000000000000000B1 -S3154004F51000000000000000000000000000000000A1 -S3154004F5200000000000000000000000000000000091 -S3154004F5300000000000000000000000000000000081 -S3154004F5400000000000000000000000000000000071 -S3154004F5500000000000000000000000000000000061 -S3154004F5600000000000000000000000000000000051 -S3154004F5700000000000000000000000000000000041 -S3154004F5800000000000000000000000000000000031 -S3154004F5900000000000000000000000000000000021 -S3154004F5A00000000000000000000000000000000011 -S3154004F5B00000000000000000000000000000000001 -S3154004F5C000000000000000000000000000000000F1 -S3154004F5D000000000000000000000000000000000E1 -S3154004F5E000000000000000000000000000000000D1 -S3154004F5F000000000000000000000000000000000C1 -S3154004F60000000000000000000000000000000000B0 -S3154004F61000000000000000000000000000000000A0 -S3154004F6200000000000000000000000000000000090 -S3154004F6300000000000000000000000000000000080 -S3154004F6400000000000000000000000000000000070 -S3154004F6500000000000000000000000000000000060 -S3154004F6600000000000000000000000000000000050 -S3154004F6700000000000000000000000000000000040 -S3154004F6800000000000000000000000000000000030 -S3154004F6900000000000000000000000000000000020 -S3154004F6A00000000000000000000000000000000010 -S3154004F6B00000000000000000000000000000000000 -S3154004F6C000000000000000000000000000000000F0 -S3154004F6D000000000000000000000000000000000E0 -S3154004F6E000000000000000000000000000000000D0 -S3154004F6F000000000000000000000000000000000C0 -S3154004F70000000000000000000000000000000000AF -S3154004F710000000000000000000000000000000009F -S3154004F720000000000000000000000000000000008F -S3154004F730000000000000000000000000000000007F -S3154004F740000000000000000000000000000000006F -S3154004F750000000000000000000000000000000005F -S3154004F760000000000000000000000000000000004F -S3154004F770000000000000000000000000000000003F -S3154004F780000000000000000000000000000000002F -S3154004F790000000000000000000000000000000001F -S3154004F7A0000000000000000000000000000000000F -S3154004F7B000000000000000000000000000000000FF -S3154004F7C000000000000000000000000000000000EF -S3154004F7D000000000000000000000000000000000DF -S3154004F7E000000000000000000000000000000000CF -S3154004F7F000000000000000000000000000000000BF -S3154004F80000000000000000000000000000000000AE -S3154004F810000000000000000000000000000000009E -S3154004F820000000000000000000000000000000008E -S3154004F830000000000000000000000000000000007E -S3154004F840000000000000000000000000000000006E -S3154004F850000000000000000000000000000000005E -S3154004F860000000000000000000000000000000004E -S3154004F870000000000000000000000000000000003E -S3154004F880000000000000000000000000000000002E -S3154004F890000000000000000000000000000000001E -S3154004F8A0000000000000000000000000000000000E -S3154004F8B000000000000000000000000000000000FE -S3154004F8C000000000000000000000000000000000EE -S3154004F8D000000000000000000000000000000000DE -S3154004F8E000000000000000000000000000000000CE -S3154004F8F000000000000000000000000000000000BE -S3154004F90000000000000000000000000000000000AD -S3154004F910000000000000000000000000000000009D -S3154004F920000000000000000000000000000000008D -S3154004F930000000000000000000000000000000007D -S3154004F940000000000000000000000000000000006D -S3154004F950000000000000000000000000000000005D -S3154004F960000000000000000000000000000000004D -S3154004F970000000000000000000000000000000003D -S3154004F980000000000000000000000000000000002D -S3154004F990000000000000000000000000000000001D -S3154004F9A0000000000000000000000000000000000D -S3154004F9B000000000000000000000000000000000FD -S3154004F9C000000000000000000000000000000000ED -S3154004F9D000000000000000000000000000000000DD -S3154004F9E000000000000000000000000000000000CD -S3154004F9F000000000000000000000000000000000BD -S3154004FA0000000000000000000000000000000000AC -S3154004FA10000000000000000000000000000000009C -S3154004FA20000000000000000000000000000000008C -S3154004FA30000000000000000000000000000000007C -S3154004FA40000000000000000000000000000000006C -S3154004FA50000000000000000000000000000000005C -S3154004FA60000000000000000000000000000000004C -S3154004FA70000000000000000000000000000000003C -S3154004FA80000000000000000000000000000000002C -S3154004FA90000000000000000000000000000000001C -S3154004FAA0000000000000000000000000000000000C -S3154004FAB000000000000000000000000000000000FC -S3154004FAC000000000000000000000000000000000EC -S3154004FAD000000000000000000000000000000000DC -S3154004FAE000000000000000000000000000000000CC -S3154004FAF000000000000000000000000000000000BC -S3154004FB0000000000000000000000000000000000AB -S3154004FB10000000000000000000000000000000009B -S3154004FB20000000000000000000000000000000008B -S3154004FB30000000000000000000000000000000007B -S3154004FB40000000000000000000000000000000006B -S3154004FB50000000000000000000000000000000005B -S3154004FB60000000000000000000000000000000004B -S3154004FB70000000000000000000000000000000003B -S3154004FB80000000000000000000000000000000002B -S3154004FB90000000000000000000000000000000001B -S3154004FBA0000000000000000000000000000000000B -S3154004FBB000000000000000000000000000000000FB -S3154004FBC000000000000000000000000000000000EB -S3154004FBD000000000000000000000000000000000DB -S3154004FBE000000000000000000000000000000000CB -S3154004FBF000000000000000000000000000000000BB -S3154004FC0000000000000000000000000000000000AA -S3154004FC10000000000000000000000000000000009A -S3154004FC20000000000000000000000000000000008A -S3154004FC30000000000000000000000000000000007A -S3154004FC40000000000000000000000000000000006A -S3154004FC50000000000000000000000000000000005A -S3154004FC60000000000000000000000000000000004A -S3154004FC70000000000000000000000000000000003A -S3154004FC80000000000000000000000000000000002A -S3154004FC90000000000000000000000000000000001A -S3154004FCA0000000000000000000000000000000000A -S3154004FCB000000000000000000000000000000000FA -S3154004FCC000000000000000000000000000000000EA -S3154004FCD000000000000000000000000000000000DA -S3154004FCE000000000000000000000000000000000CA -S3154004FCF000000000000000000000000000000000BA -S3154004FD0000000000000000000000000000000000A9 -S3154004FD100000000000000000000000000000000099 -S3154004FD200000000000000000000000000000000089 -S3154004FD300000000000000000000000000000000079 -S3154004FD400000000000000000000000000000000069 -S3154004FD500000000000000000000000000000000059 -S3154004FD600000000000000000000000000000000049 -S3154004FD700000000000000000000000000000000039 -S3154004FD800000000000000000000000000000000029 -S3154004FD900000000000000000000000000000000019 -S3154004FDA00000000000000000000000000000000009 -S3154004FDB000000000000000000000000000000000F9 -S3154004FDC000000000000000000000000000000000E9 -S3154004FDD000000000000000000000000000000000D9 -S3154004FDE000000000000000000000000000000000C9 -S3154004FDF000000000000000000000000000000000B9 -S3154004FE0000000000000000000000000000000000A8 -S3154004FE100000000000000000000000000000000098 -S3154004FE200000000000000000000000000000000088 -S3154004FE300000000000000000000000000000000078 -S3154004FE400000000000000000000000000000000068 -S3154004FE500000000000000000000000000000000058 -S3154004FE600000000000000000000000000000000048 -S3154004FE700000000000000000000000000000000038 -S3154004FE800000000000000000000000000000000028 -S3154004FE900000000000000000000000000000000018 -S3154004FEA00000000000000000000000000000000008 -S3154004FEB000000000000000000000000000000000F8 -S3154004FEC000000000000000000000000000000000E8 -S3154004FED000000000000000000000000000000000D8 -S3154004FEE000000000000000000000000000000000C8 -S3154004FEF000000000000000000000000000000000B8 -S3154004FF0000000000000000000000000000000000A7 -S3154004FF100000000000000000000000000000000097 -S3154004FF200000000000000000000000000000000087 -S3154004FF300000000000000000000000000000000077 -S3154004FF400000000000000000000000000000000067 -S3154004FF500000000000000000000000000000000057 -S3154004FF600000000000000000000000000000000047 -S3154004FF700000000000000000000000000000000037 -S3154004FF800000000000000000000000000000000027 -S3154004FF900000000000000000000000000000000017 -S3154004FFA00000000000000000000000000000000007 -S3154004FFB000000000000000000000000000000000F7 -S3154004FFC000000000000000000000000000000000E7 -S3154004FFD000000000000000000000000000000000D7 -S3154004FFE000000000000000000000000000000000C7 -S3154004FFF000000000000000000000000000000000B7 -S3154005000000000002000000030000000000000000A0 -S315400500100000000100000000FFFFFFFE0000000396 -S3154005002055555554FFFFFFFE0000000355555554E1 -S31540050030700FFFFE00000007100249240000000073 -S315400500400000000000000000000000020000000360 -S315400500500000000000000003FFFFFFFEFFFFFFFF5B -S3154005006000000002FFFFFFFD000000000000000049 -S31540050070000000010000000000000000FFFFFFFF38 -S315400500800000000000000001FFFFFFFFFFFFFFFF2C -S31540050090FFFFFFFF00000001FFFFFFFFFFFFFFFE21 -S315400500A00000000300000000FFFFFFFEFFFFFFFD0D -S315400500B000000000000000090000000700000001E4 -S315400500C0FFFFFFF700000002FFFFFFFCFFFFFFF801 -S315400500D000000002FFFFFFFCFFFFFFF8FFFFFFFCEC -S315400500E00000000200000008FFFFFFFCFFFFFFFEC7 -S315400500F0FFFFFFF8FFFFFFF800000001FFFFFFF8D5 -S31540050100FFFFFFF7000000000000000B00000002A3 -S31540050110000000050000002F000000020000001747 -S3154005012000003039000002A700000012FFFF076CEF -S315400501300000004DFFFFFCC600003039FFFFFD59AA -S31540050140FFFFFFEEFFFF076CFFFFFFB30000033A1B -S3154005015000000091FFFFE84100000000FFFFFD841D -S31540050160FFFED02F000000000000F6FA006E498120 -S315400501700000000000000000000000000000000034 -S31540050180FFFFF0000000000200000003000000062B -S3154005019000000002FFFFFFFDFFFFFFFA0000000021 -S315400501A0000000010000000000000000FFFFFFFF07 -S315400501B00000000000000001FFFFFFFFFFFFFFFFFB -S315400501C0FFFFFFFF00000001FFFFFFFFFFFFFFFEF0 -S315400501D000000003FFFFFFFAFFFFFFFEFFFFFFFDE5 -S315400501E000000006000000000000000000000009B5 -S315400501F000000000000000000000000000000000B4 -S31540050200000000000000000100000002000000039D -S315400502100000000000000000000000000000000093 -S31540050220000000004005050C400505D8400506A41C -S315400502300000000000000000000000000000000073 -S315400502400000000000000000000000000000000063 -S31540050250000000004001B5800000000000000000DD -S315400502600000000000000000000000000000000043 -S315400502700000000000000000000000000000000033 -S315400502800000000000000000000000000000000023 -S315400502900000000000000000000000000000000013 -S315400502A00000000000000000000000000000000003 -S315400502B000000000000000000000000000000000F3 -S315400502C000000000000000000000000000000001E2 -S315400502D0330EABCD1234E66DDEEC0005000B0000A7 -S315400502E000000000000000000000000000000000C3 -S315400502F000000000000000000000000000000000B3 -S3154005030000000000000000000000000000000000A2 -S315400503100000000000000000000000000000000092 -S315400503200000000000000000000000000000000082 -S315400503300000000000000000000000000000000072 -S315400503400000000000000000000000000000000062 -S315400503500000000000000000000000000000000052 -S315400503600000000000000000000000000000000042 -S315400503700000000000000000000000000000000032 -S315400503800000000000000000000000000000000022 -S315400503900000000000000000000000000000000012 -S315400503A00000000000000000000000000000000002 -S315400503B000000000000000000000000000000000F2 -S315400503C000000000000000000000000000000000E2 -S315400503D000000000000000000000000000000000D2 -S315400503E000000000000000000000000000000000C2 -S315400503F000000000000000000000000000000000B2 -S3154005040000000000000000000000000000000000A1 -S315400504100000000000000000000000000000000091 -S315400504200000000000000000000000000000000081 -S315400504300000000000000000000000000000000071 -S315400504400000000000000000000000000000000061 -S315400504500000000000000000000000000000000051 -S315400504600000000000000000000000000000000041 -S315400504700000000000000000000000000000000031 -S315400504800000000000000000000000000000000021 -S315400504900000000000000000000000000000000011 -S315400504A00000000000000000000000000000000001 -S315400504B000000000000000000000000000000000F1 -S315400504C000000000000000000000000000000000E1 -S315400504D000000000000000000000000000000000D1 -S315400504E000000000000000000000000000000000C1 -S315400504F000000000000000000000000000000000B1 -S3154005050000000000000000000000000000000000A0 -S315400505100000000000000000000000000000000090 -S315400505200000000000000000000000000000000080 -S315400505300000000000000000000000000000000070 -S315400505400000000000000000000000000000000060 -S315400505500000000000000000000000000000000050 -S315400505600000000000000000000000000000000040 -S315400505700000000000000000000000000000000030 -S315400505800000000000000000000000000000000020 -S315400505900000000000000000000000000000000010 -S315400505A00000000000000000000000000000000000 -S315400505B000000000000000000000000000000000F0 -S315400505C000000000000000000000000000000000E0 -S315400505D000000000000000000000000000000000D0 -S315400505E000000000000000000000000000000000C0 -S315400505F000000000000000000000000000000000B0 -S31540050600000000000000000000000000000000009F -S31540050610000000000000000000000000000000008F -S31540050620000000000000000000000000000000007F -S31540050630000000000000000000000000000000006F -S31540050640000000000000000000000000000000005F -S31540050650000000000000000000000000000000004F -S31540050660000000000000000000000000000000003F -S31540050670000000000000000000000000000000002F -S31540050680000000000000000000000000000000001F -S31540050690000000000000000000000000000000000F -S315400506A000000000000000000000000000000000FF -S315400506B000000000000000000000000000000000EF -S315400506C000000000000000000000000000000000DF -S315400506D000000000000000000000000000000000CF -S315400506E000000000000000000000000000000000BF -S315400506F000000000000000000000000000000000AF -S31540050700000000000000000000000000000000009E -S31540050710000000000000000000000000000000008E -S31540050720000000000000000000000000000000007E -S31540050730000000000000000000000000000000006E -S31540050740000000000000000000000000000000005E -S31540050750000000000000000000000000000000004E -S31540050760000000000000000000000000000000003E -S315400507704005022000000000FFFFFFFF00020000C9 -S315400507800000000000000000400507804005078086 -S3154005079040050788400507884005079040050790AE -S315400507A04005079840050798400507A0400507A05E -S315400507B0400507A8400507A8400507B0400507B00E -S315400507C0400507B8400507B8400507C0400507C0BE -S315400507D0400507C8400507C8400507D0400507D06E -S315400507E0400507D8400507D8400507E0400507E01E -S315400507F0400507E8400507E8400507F0400507F0CE -S31540050800400507F8400507F840050800400508007B -S315400508104005080840050808400508104005081029 -S3154005082040050818400508184005082040050820D9 -S315400508304005082840050828400508304005083089 -S315400508404005083840050838400508404005084039 -S3154005085040050848400508484005085040050850E9 -S315400508604005085840050858400508604005086099 -S315400508704005086840050868400508704005087049 -S3154005088040050878400508784005088040050880F9 -S3154005089040050888400508884005089040050890A9 -S315400508A04005089840050898400508A0400508A059 -S315400508B0400508A8400508A8400508B0400508B009 -S315400508C0400508B8400508B8400508C0400508C0B9 -S315400508D0400508C8400508C8400508D0400508D069 -S315400508E0400508D8400508D8400508E0400508E019 -S315400508F0400508E8400508E8400508F0400508F0C9 -S31540050900400508F8400508F8400509004005090076 -S315400509104005090840050908400509104005091024 -S3154005092040050918400509184005092040050920D4 -S315400509304005092840050928400509304005093084 -S315400509404005093840050938400509404005094034 -S3154005095040050948400509484005095040050950E4 -S315400509604005095840050958400509604005096094 -S315400509704005096840050968400509704005097044 -S3154005098040050978400509784005098040050980F4 -S3154005099040050988400509884005099040050990A4 -S315400509A04005099840050998400509A0400509A054 -S315400509B0400509A8400509A8400509B0400509B004 -S315400509C0400509B8400509B8400509C0400509C0B4 -S315400509D0400509C8400509C8400509D0400509D064 -S315400509E0400509D8400509D8400509E0400509E014 -S315400509F0400509E8400509E8400509F0400509F0C4 -S31540050A00400509F8400509F840050A0040050A0071 -S31540050A1040050A0840050A0840050A1040050A101F -S31540050A2040050A1840050A1840050A2040050A20CF -S31540050A3040050A2840050A2840050A3040050A307F -S31540050A4040050A3840050A3840050A4040050A402F -S31540050A5040050A4840050A4840050A5040050A50DF -S31540050A6040050A5840050A5840050A6040050A608F -S31540050A7040050A6840050A6840050A7040050A703F -S31540050A8040050A7840050A7840050A8040050A80EF -S31540050A9040050A8840050A8840050A9040050A909F -S31540050AA040050A9840050A9840050AA040050AA04F -S31540050AB040050AA840050AA840050AB040050AB0FF -S31540050AC040050AB840050AB840050AC040050AC0AF -S31540050AD040050AC840050AC840050AD040050AD05F -S31540050AE040050AD840050AD840050AE040050AE00F -S31540050AF040050AE840050AE840050AF040050AF0BF -S31540050B0040050AF840050AF840050B0040050B006C -S31540050B1040050B0840050B0840050B1040050B101A -S31540050B2040050B1840050B1840050B2040050B20CA -S31540050B3040050B2840050B2840050B3040050B307A -S31540050B4040050B3840050B3840050B4040050B402A -S31540050B5040050B4840050B4840050B5040050B50DA -S31540050B6040050B5840050B5840050B6040050B608A -S31540050B7040050B6840050B6840050B7040050B703A -S31540050B8040050B7840050B780000000040050B88B2 -S31540050B900000000000000000000000000000000208 -S31540050BA000000000000000000000000000000000FA -S31540050BB000000000000000000000000000000000EA -S31540050BC000000000000000000000000000000000DA -S31540050BD000000000000000000000000000000000CA -S31540050BE000000000000000000000000000000000BA -S31540050BF000000000000000000000000000000000AA -S31540050C000000000000000000000000000000000099 -S31540050C100000000000000000000000000000000089 -S31540050C200000000000000000000000000000000079 -S31540050C3080000100000000080000000700000006D3 -S31540050C40000000030000000000000000FFFF8AD0FE -S30940050C5080000310C2 -S70540000000BA diff --git a/designs/leon3-ge-hpe-midi-ep2s180/systest.c b/designs/leon3-ge-hpe-midi-ep2s180/systest.c deleted file mode 100644 index 100c2697..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/systest.c +++ /dev/null @@ -1,10 +0,0 @@ - -main() - -{ - report_start(); - - base_test(); - - report_end(); -} diff --git a/designs/leon3-ge-hpe-midi-ep2s180/testbench.vhd b/designs/leon3-ge-hpe-midi-ep2s180/testbench.vhd deleted file mode 100644 index 45bd0b32..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/testbench.vhd +++ /dev/null @@ -1,733 +0,0 @@ ------------------------------------------------------------------------------ --- LEON3 Demonstration design test bench --- Copyright (C) 2004 Jiri Gaisler, Gaisler Research ------------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; - -library gaisler; -use gaisler.libdcom.all; -use gaisler.sim.all; ---use gaisler.jtagtst.all; - -library techmap; -use techmap.gencomp.all; - -library micron; -use micron.components.all; - -library gleichmann; -use gleichmann.hpi.all; --- modified version of the JTAG test package --- use gleichmann.jtagtst.all; - -library work; -use work.debug.all; -use work.config.all; -- configuration - - -entity testbench is - generic ( - fabtech : integer := CFG_FABTECH; - memtech : integer := CFG_MEMTECH; - padtech : integer := CFG_PADTECH; - clktech : integer := CFG_CLKTECH; - disas : integer := CFG_DISAS; -- Enable disassembly to console - dbguart : integer := CFG_DUART; -- Print UART on console - pclow : integer := CFG_PCLOW; - - clkperiod : integer := 25; -- system clock period - romwidth : integer := 32; -- rom data width (8/32) - romdepth : integer := 16; -- rom address depth - sramwidth : integer := 32; -- ram data width (8/16/32) - sramdepth : integer := 16; -- ram address depth - srambanks : integer := 2); -- number of ram banks - port ( - pci_rst : in std_logic; -- PCI bus - pci_clk : in std_logic; - pci_gnt : in std_logic; - pci_idsel : in std_logic; - pci_lock : inout std_logic; - pci_ad : inout std_logic_vector(31 downto 0); - pci_cbe : inout std_logic_vector(3 downto 0); - pci_frame : inout std_logic; - pci_irdy : inout std_logic; - pci_trdy : inout std_logic; - pci_devsel : inout std_logic; - pci_stop : inout std_logic; - pci_perr : inout std_logic; - pci_par : inout std_logic; - pci_req : inout std_logic; - pci_serr : inout std_logic; - pci_host : in std_logic; - pci_66 : in std_logic); -end testbench; - - -architecture behav of testbench is - - constant promfile : string := "prom.srec"; -- rom contents - constant sramfile : string := "sram.srec"; -- ram contents - constant sdramfile : string := "sdram.srec"; -- sdram contents - - - signal clk : std_logic := '0'; - signal Rst : std_logic := '0'; -- Reset - constant ct : integer := clkperiod/2; - - signal address : std_logic_vector(27 downto 0); - signal data : std_logic_vector(31 downto 0); - - signal ramsn : std_logic_vector(4 downto 0); - signal ramoen : std_logic_vector(4 downto 0); - signal rwen : std_logic_vector(3 downto 0); - signal rwenx : std_logic_vector(3 downto 0); - signal romsn : std_logic_vector(1 downto 0); - signal iosn : std_logic; - signal oen : std_logic; - signal read : std_logic; - signal writen : std_logic; - signal brdyn : std_logic; - signal bexcn : std_logic; - signal wdog : std_logic; - signal dsuen, dsutx, dsurx, dsubre, dsuact : std_logic; - signal dsurst : std_logic; - signal test : std_logic; - - signal error : std_logic; - alias errorn : std_logic is error; - - signal pio : std_logic_vector(15 downto 0); - signal GND : std_logic := '0'; - signal VCC : std_logic := '1'; - signal NC : std_logic := 'Z'; - signal clk2 : std_logic := '1'; - --- sdram - signal sdclk : std_logic_vector(1 downto 0); --- signal sdclk : std_logic; --- alias sdclk : std_logic is sd_clk(0); - signal sdcke : std_logic_vector (1 downto 0); -- clk en - signal sa : std_logic_vector(14 downto 0); - signal sd : std_logic_vector(63 downto 0); - signal sddqm : std_logic_vector (7 downto 0); -- data i/o mask - signal sdwen : std_logic; -- write en - signal sdcasn : std_logic; -- col addr stb - signal sdrasn : std_logic; -- row addr stb - signal sdcsn : std_logic_vector (1 downto 0); -- chip sel - - signal plllock : std_logic; - --- pulled up high, therefore std_logic - signal txd1, rxd1 : std_logic; - - signal etx_clk, erx_clk, erx_dv, erx_er, erx_col, erx_crs, etx_en, etx_er : std_logic := '0'; - signal erxd, etxd : std_logic_vector(3 downto 0) := (others => '0'); - signal emdc, emdio : std_logic; --dummy signal for the mdc,mdio in the phy which is not used - - signal emddis : std_logic; - signal epwrdwn : std_logic; - signal ereset : std_logic; - signal esleep : std_logic; - signal epause : std_logic; - signal tp_out : std_logic_vector(7 downto 0); - signal led_cfg : std_logic_vector(2 downto 0); - - constant lresp : boolean := false; - - - --- Added for Hpe - - signal resoutn : std_logic; - signal disrams : std_logic; - signal rben : std_logic_vector(3 downto 0); - signal sdclk0 : std_logic; - signal sdclk1 : std_logic; - signal sdba0 : std_logic; -- bank address zero - signal sdba1 : std_logic; -- bank address one - signal dsubren : std_logic; - signal dsuactn : std_logic; - signal bufdir : std_logic; - signal bufoen : std_logic; - signal s_sddqm : std_logic_vector (3 downto 0); - - signal HRESETn : std_logic; - signal HSEL : std_logic; - signal HREADY_ba : std_logic; -- hready input signal - signal HADDR : std_logic_vector(31 downto 0); - signal HWRITE : std_logic; - signal HTRANS : std_logic_vector(1 downto 0); - signal HSIZE : std_logic_vector(2 downto 0); - signal HBURST : std_logic_vector(2 downto 0); - signal HWDATA : std_logic_vector(31 downto 0); - signal HMASTER : std_logic_vector(3 downto 0); - signal HMASTLOCK : std_logic; - signal HREADY : std_logic; - signal HRESP : std_logic_vector(1 downto 0); - signal HRDATA : std_logic_vector(31 downto 0); - signal HSPLIT : std_logic_vector(15 downto 0); - - signal clk_ctrl : std_logic_vector(1 downto 0); -- cpld - signal CAN_RXD : std_logic; - signal CAN_TXD : std_logic; - signal CAN_STB : std_logic; - signal CAN_TXD_delayed : std_logic := '1'; - signal gpio : std_logic_vector(7 downto 0); - - subtype sd_address_range is natural range 24 downto 12; - subtype sd_ba_range is natural range 26 downto 25; - - --------------------------------------------------------------------------------------- - -- HPI SIGNALS - --------------------------------------------------------------------------------------- - signal hpiaddr : std_logic_vector(1 downto 0); - signal hpidata : std_logic_vector(15 downto 0); - signal hpicsn : std_logic; - signal hpiwrn : std_logic; - signal hpiint : std_logic; - signal hpirdn : std_logic; --- signal hpirdata : std_logic_vector(15 downto 0); --- signal hpiwdata : std_logic_vector(15 downto 0); - --- signal dbg_rdata : std_logic_vector(15 downto 0); --- signal dbg_wdata : std_logic_vector(15 downto 0); ---------------------------------------------------------------------------------------- - -component hpi_ram - generic ( - abits : integer; - dbits : integer); - port ( - clk : in std_logic; - address : in std_logic_vector(1 downto 0); - datain : in std_logic_vector(dbits-1 downto 0); - dataout : out std_logic_vector(dbits-1 downto 0); - writen : in std_logic; - readn : in std_logic; - csn : in std_logic); -end component; - ------------------------------------------------------------------------------------------ --- IO SECTION ------------------------------------------------------------------------------------------ - signal dsw : std_logic_vector(7 downto 0) := "00000001"; - signal led : std_logic_vector(7 downto 0); - signal sevensegment : std_logic_vector(9 downto 0); - signal tst_col : std_logic_vector(2 downto 0); - signal tst_row : std_logic_vector(3 downto 0); - signal lcd_enable : std_logic; - signal lcd_regsel : std_logic; - signal lcd_rw : std_logic; - - signal ac97_bit_clk : std_logic := '0'; - signal ac97_sync : std_logic; - signal ac97_sdata_out : std_logic; - signal ac97_sdata_in : std_logic; - signal ac97_resetn : std_logic; - signal ac97_ext_clk : std_logic; - - signal vga_clk : std_logic; - signal vga_syncn : std_logic; - signal vga_blankn : std_logic; - signal vga_vsync : std_logic; - signal vga_hsync : std_logic; - signal vga_rd : std_logic_vector(7 downto 0); - signal vga_gr : std_logic_vector(7 downto 0); - signal vga_bl : std_logic_vector(7 downto 0); - - signal ps2_clk : std_logic_vector(1 downto 0); - signal ps2_data : std_logic_vector(1 downto 0); - - signal exp_datao : std_logic_vector(19 downto 0); - signal exp_datai : std_logic_vector(19 downto 0); - - signal cb4_datao : std_logic_vector(35 downto 0); - signal cb4_datai : std_logic_vector(35 downto 0); - - signal sdcard_cs : std_logic; - signal sdcard_di : std_logic; - signal sdcard_sclk : std_logic; - signal sdcard_do : std_logic; - - component spi_slave_model - port( - csn : in std_logic; - sck : in std_logic; - di : in std_logic; - do : out std_logic - ); - end component; - ------------------------------------------------------------------------------------------ --- USB DEBUG LINK ------------------------------------------------------------------------------------------ - signal usb_clkout : std_logic; - signal usb_d : std_logic_vector(15 downto 0); - signal usb_linestate : std_logic_vector(1 downto 0); - signal usb_opmode : std_logic_vector(1 downto 0); - signal usb_reset : std_logic; - signal usb_rxactive : std_logic; - signal usb_rxerror : std_logic; - signal usb_rxvalid : std_logic; - signal usb_suspend : std_logic; - signal usb_termsel : std_logic; - signal usb_txready : std_logic; - signal usb_txvalid : std_logic; - signal usb_validh : std_logic; - signal usb_xcvrsel : std_logic; - signal usb_vbus : std_logic; - signal usb_dbus16 : std_logic; - signal usb_unidir : std_logic; - ------------------------------------------------------------------------------------------ --- ADC/DAC ------------------------------------------------------------------------------------------ - signal adc_dout : std_logic; - signal adc_ain : std_logic; - signal dac_out : std_logic; - --------------------------------------------------------------------------------- --- MISC TEST BENCH SIGNALS --------------------------------------------------------------------------------- - signal clock_cycle_counter : integer; --- UART test bench module - signal rts_internal : std_logic; - signal cts_internal : std_logic; - -begin - - dsubren <= not dsubre; - disrams <= '0'; - --- clock and reset - - clk <= not clk after ct * 1 ns; - rst <= '1', '0' after 10 ns, '1' after 100 ns; - - dsuen <= '1'; dsubre <= '0'; rxd1 <= 'H'; - led_cfg <= "011"; -- put the phy in base100f mode - - clk_count_seq : process (rst, clk) is - begin - if rst = '0' then - clock_cycle_counter <= 0; - elsif rising_edge(clk) then - clock_cycle_counter <= clock_cycle_counter + 1; - end if; - end process; - - d3 : entity work.leon3hpe --- generic map ( --- fabtech => fabtech, --- memtech => memtech, --- padtech => padtech, --- clktech => clktech, --- disas => disas, --- dbguart => dbguart, --- pclow => pclow) - port map ( - resetn => rst, - resoutn => resoutn, - clk => clk, --- pllref => clk, - errorn => errorn, - address => address, - data => data, - - sdclk => sdclk, - sdcke => sdcke, - sdaddr => sa(12 downto 0), - sddq => sd, - sddqm => sddqm, -- topmost bits are undriven - sdwen => sdwen, - sdcasn => sdcasn, - sdrasn => sdrasn, - sdcsn => sdcsn, - sdba => sa(14 downto 13), - - dsutx => dsutx, - dsurx => dsurx, --- dsuen => dsuen, - dsubre => dsubre, - dsuactn => dsuactn, - - txd1 => txd1, - rxd1 => rxd1, - --- gpio => gpio, - - ramsn => ramsn, - ramoen => ramoen, - oen => oen, - rben => rben, - rwen => rwen, - writen => writen, - read => read, - iosn => iosn, - romsn => romsn, - - emdio => emdio, - etx_clk => etx_clk, - erx_clk => erx_clk, - erxd => erxd, - erx_dv => erx_dv, - erx_er => erx_er, - erx_col => erx_col, - erx_crs => erx_crs, - etxd => etxd, - etx_en => etx_en, - etx_er => etx_er, - emdc => emdc, - - can_txd => can_txd, - can_rxd => can_rxd, - can_stb => can_stb, - - dsw => dsw, --- led => led, - sevensegment => sevensegment, - tst_col => tst_col, - tst_row => tst_row, - lcd_enable => lcd_enable, - lcd_regsel => lcd_regsel, - lcd_rw => lcd_rw, - - ps2_clk => ps2_clk, - ps2_data => ps2_data, - exp_datao => exp_datao, - exp_datai => exp_datai, - - ----------------------------------------------------------------------------------- - -- FOR TEST PURPOSES WITH THE AHB2HPI CORE - ----------------------------------------------------------------------------------- - - hpiint => gnd, - - hpiaddr => hpiaddr, - hpidata => hpidata, - hpicsn => hpicsn, - hpiwrn => hpiwrn, - hpirdn => hpirdn, - - vga_clk => vga_clk, - vga_syncn => vga_syncn, - vga_blankn => vga_blankn, - vga_vsync => vga_vsync, - vga_hsync => vga_hsync, - vga_rd => vga_rd, - vga_gr => vga_gr, - vga_bl => vga_bl, - - ac97_bit_clk => ac97_bit_clk, - ac97_sync => ac97_sync, - ac97_sdata_out => ac97_sdata_out, - ac97_sdata_in => ac97_sdata_in, - ac97_resetn => ac97_resetn, --- ac97_ext_clk => ac97_ext_clk - - usb_clkout => usb_clkout, - usb_d => usb_d, - usb_linestate => usb_linestate, - usb_opmode => usb_opmode, --- usb_reset => usb_reset, - usb_rxactive => usb_rxactive, - usb_rxerror => usb_rxerror, - usb_rxvalid => usb_rxvalid, - usb_suspend => usb_suspend, - usb_termsel => usb_termsel, - usb_txready => usb_txready, - usb_txvalid => usb_txvalid, - usb_validh => usb_validh, - usb_xcvrsel => usb_xcvrsel, - usb_vbus => usb_vbus, - usb_dbus16 => usb_dbus16, - usb_unidir => usb_unidir, - - adc_dout => adc_dout, - adc_ain => adc_ain, - dac_out => dac_out, - - sdcard_cs => sdcard_cs, - sdcard_di => sdcard_di, - sdcard_sclk => sdcard_sclk, - sdcard_do => sdcard_do - - ); - - - spi_slave_model_1 : spi_slave_model - port map ( - csn => sdcard_cs, - sck => sdcard_sclk, - di => sdcard_di, - do => sdcard_do); - - - hpi_ram_1 : hpi_ram - generic map ( - abits => 10, - dbits => 16) - port map ( - clk => clk, - address => hpiaddr, - datain => hpidata, - dataout => hpidata, - writen => hpiwrn, - readn => hpirdn, - csn => hpicsn); - - - sd0 : if (CFG_MCTRL_SDEN = 1) and (CFG_MCTRL_SEPBUS = 0) generate - u0 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile) - port map( - Dq => data(31 downto 16), Addr => address(14 downto 2), - Ba => address(16 downto 15), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(3 downto 2)); - u1 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile) - port map( - Dq => data(15 downto 0), Addr => address(14 downto 2), - Ba => address(16 downto 15), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(1 downto 0)); - u2 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile) - port map( - Dq => data(31 downto 16), Addr => address(14 downto 2), - Ba => address(16 downto 15), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(3 downto 2)); - u3 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile) - port map( - Dq => data(15 downto 0), Addr => address(14 downto 2), - Ba => address(16 downto 15), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(1 downto 0)); - end generate; - - sd1 : if (CFG_MCTRL_SDEN = 1) and (CFG_MCTRL_SEPBUS = 1) generate - u0 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile) - port map( - Dq => sd(31 downto 16), Addr => sa(12 downto 0), - Ba => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(3 downto 2)); - u1 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile) - port map( - Dq => sd(15 downto 0), Addr => sa(12 downto 0), - Ba => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(1 downto 0)); - u2 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile) - port map( - Dq => sd(31 downto 16), Addr => sa(12 downto 0), - Ba => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(3 downto 2)); - u3 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile) - port map( - Dq => sd(15 downto 0), Addr => sa(12 downto 0), - Ba => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(1 downto 0)); - sd64 : if (CFG_MCTRL_SD64 = 1) generate - u4 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile) - port map( - Dq => sd(63 downto 48), Addr => sa(12 downto 0), - Ba => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(7 downto 6)); - u5 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile) - port map( - Dq => sd(47 downto 32), Addr => sa(12 downto 0), - Ba => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(5 downto 4)); - u6 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile) - port map( - Dq => sd(63 downto 48), Addr => sa(12 downto 0), - Ba => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(7 downto 6)); - u7 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile) - port map( - Dq => sd(47 downto 32), Addr => sa(12 downto 0), - Ba => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0), - Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(5 downto 4)); - end generate; - end generate; - - - extbprom : if CFG_AHBROMEN = 0 generate - prom0 : for i in 0 to (romwidth/8)-1 generate - sr0 : sram generic map (index => i, abits => romdepth, fname => promfile) - port map (address(romdepth+1 downto 2), data(31-i*8 downto 24-i*8), romsn(0), - rwen(i), oen); - end generate; - end generate extbprom; - - - sram0 : for i in 0 to (sramwidth/8)-1 generate - sr0 : sram generic map (index => i, abits => sramdepth, fname => sramfile) - port map (address(sramdepth+1 downto 2), data(31-i*8 downto 24-i*8), ramsn(0), - rwen(0), ramoen(0)); - end generate; - - error <= 'H'; -- ERROR pull-up - - iuerr : process - begin - wait for 2500 ns; - if to_x01(error) = '1' then wait on error; end if; - assert (to_x01(error) = '1') - report "*** IU in error mode, simulation halted ***" - severity failure; - end process; - - data <= buskeep(data) after 5 ns; - sd <= buskeep(sd) after 5 ns; - - can01 : if CFG_CAN /= 0 generate - -- CAN_TXD_delayed <= CAN_TXD after 160 ns; - CAN_TXD_delayed <= CAN_TXD; - CAN_RXD <= '1' and CAN_TXD_delayed; - end generate; - can00 : if CFG_CAN = 0 generate - CAN_RXD <= '1'; - end generate; - - test0 : grtestmod - port map (rst, clk, error, address(21 downto 2), data, - iosn, oen, writen, brdyn); - - - dcomstart : if CFG_AHBROMEN = 0 generate - dsucom : process - procedure dsucfg(signal dsurx : in std_logic; signal dsutx : out std_logic) is - variable w32 : std_logic_vector(31 downto 0); - variable c8 : std_logic_vector(7 downto 0); - constant txp : time := 160 * 1 ns; - begin - dsutx <= '1'; - dsurst <= '1'; - wait; - wait for 5000 ns; - txc(dsutx, 16#55#, txp); -- sync uart - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#ef#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); - txa(dsutx, 16#00#, 16#00#, 16#ff#, 16#ff#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#40#, 16#00#, 16#48#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#12#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#40#, 16#00#, 16#60#, txp); - txa(dsutx, 16#00#, 16#00#, 16#12#, 16#10#, txp); - - txc(dsutx, 16#80#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); - rxi(dsurx, w32, txp, lresp); - - txc(dsutx, 16#a0#, txp); - txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); - rxi(dsurx, w32, txp, lresp); - - end; - - begin - dsucfg(dsutx, dsurx); - wait; - end process; - end generate dcomstart; - - - altstimuli : if CFG_AHBROMEN = 1 generate - stimuli : process - begin - dsurx <= '1'; - -- rxd1 <= 'H'; --already defined above - txd1 <= 'H'; - - - wait; - end process STIMULI; - end generate altstimuli; - - ----------------------------------------------------------------------------- - -- ARC testbench modules - ----------------------------------------------------------------------------- - - phy0 : if CFG_GRETH > 0 generate - p0 : entity gleichmann.phy_ext - generic map ( - infile_name => "indata", - outfile_name => "outdata", - logfile_name => "logfile_phy", - win_size => 3) - port map ( - resetn => rst, - led_cfg => led_cfg, - log_en => VCC, - cycle_num => clock_cycle_counter, - mdio => emdio, - tx_clk => etx_clk, - rx_clk => erx_clk, - rxd => erxd, - rx_dv => erx_dv, - rx_er => erx_er, - rx_col => erx_col, - rx_crs => erx_crs, - txd => etxd, - tx_en => etx_en, - tx_er => etx_er, - mdc => emdc); - end generate; - - uart0 : if CFG_UART1_ENABLE > 0 generate - rts_internal <= '0', - '1' after 1000 ns, - '0' after 1150 ns, - 'Z' after 1500 ns; - - uart_ext_1 : entity gleichmann.uart_ext - generic map ( - logfile_name => "logfile_uart", - t_delay => 5 ns) - port map ( - resetn => rst, - log_en => VCC, - cycle_num => clock_cycle_counter, - cts => cts_internal, - rxd => rxd1, - txd => txd1, - rts => rts_internal); - end generate uart0; -end architecture behav; - - diff --git a/designs/leon3-ge-hpe-midi-ep2s180/wave.do b/designs/leon3-ge-hpe-midi-ep2s180/wave.do deleted file mode 100644 index 6a269488..00000000 --- a/designs/leon3-ge-hpe-midi-ep2s180/wave.do +++ /dev/null @@ -1,44 +0,0 @@ -onerror {resume} -quietly WaveActivateNextPane {} 0 -add wave -noupdate -format Logic /testbench/clk -add wave -noupdate -format Logic /testbench/rst -add wave -noupdate -format Literal -radix hexadecimal /testbench/address -add wave -noupdate -format Literal -radix hexadecimal /testbench/data -add wave -noupdate -format Literal /testbench/ramsn -add wave -noupdate -format Literal /testbench/ramoen -add wave -noupdate -format Literal /testbench/rwen -add wave -noupdate -format Literal /testbench/rwenx -add wave -noupdate -format Literal /testbench/romsn -add wave -noupdate -format Logic /testbench/iosn -add wave -noupdate -format Logic /testbench/oen -add wave -noupdate -format Logic /testbench/read -add wave -noupdate -format Logic /testbench/writen -add wave -noupdate -format Literal /testbench/sdcke -add wave -noupdate -format Literal /testbench/sdcsn -add wave -noupdate -format Logic /testbench/sdwen -add wave -noupdate -format Logic /testbench/sdrasn -add wave -noupdate -format Logic /testbench/sdcasn -add wave -noupdate -format Literal /testbench/sddqm -add wave -noupdate -format Logic /testbench/sdclk -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/apbi -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/apbo -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/ahbsi -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/ahbso -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/ahbmi -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/ahbmo -TreeUpdate [SetDefaultTree] -WaveRestoreCursors {{Cursor 1} {39252698 ps} 0} -configure wave -namecolwidth 189 -configure wave -valuecolwidth 40 -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 0 -update -WaveRestoreZoom {37002043 ps} {71398707 ps} diff --git a/designs/leon3-ge-hpe-mini-lattice/Makefile b/designs/leon3-ge-hpe-mini-lattice/Makefile deleted file mode 100755 index 2766b318..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -GRLIB=../.. -TOP=leon3mini -BOARD=ge-hpe-mini-lattice -include $(GRLIB)/boards/$(BOARD)/Makefile.inc -DEVICE=$(PART)-$(PACKAGE)$(SPEED) -UCF=$(GRLIB)/boards/$(BOARD)/$(TOP).lpf -QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf -EFFORT=1 -XSTOPT= -VHDLSYNFILES=config.vhd ahbrom.vhd clkgen_lattice_ea.vhd leon3mini.vhd -VHDLSIMFILES=testbench.vhd -SIMTOP=testbench -SDCFILE=$(GRLIB)/boards/$(BOARD)/default.sdc -BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut -CLEAN=soft-clean - -TECHLIBS = ec -LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip cypress ihp usbhc hynix spansion gsi fmf -DIRSKIP = pcif leon2 leon2ft crypto pci ambatest usb grusbhc b1553 satcan usbhc \ - leon3ft leon4 leon4b64 l2cache spacewire slink ascs pwm haps coremp7 \ - gr1553b iommu grlfpc4 grfpcft grlfpcft ac97 hcan ddr -DIRADD = ddrv1 -FILEADD = ddrrec.vhd ddrctrl.vhd - -FILESKIP = vgaclkgen.vhd - -include $(GRLIB)/bin/Makefile -include $(GRLIB)/software/leon3/Makefile -XLDFLAGS=-L./ lib3tests.a -Ttext=0x60000000 - - -################## project specific targets ########################## diff --git a/designs/leon3-ge-hpe-mini-lattice/README.txt b/designs/leon3-ge-hpe-mini-lattice/README.txt deleted file mode 100644 index 0293a131..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/README.txt +++ /dev/null @@ -1,9 +0,0 @@ - -This leon3 design is tailored to the HPE_mini board from -Gleichmann Electronics: - -http://www.ger-fae.com/hpe_mini_lec.html - - -NOTE: This design is no longer maintained, and needs to be -updated to work with the current grlib version. diff --git a/designs/leon3-ge-hpe-mini-lattice/ahbrom.vhd b/designs/leon3-ge-hpe-mini-lattice/ahbrom.vhd deleted file mode 100644 index a61a155a..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/ahbrom.vhd +++ /dev/null @@ -1,172 +0,0 @@ - ----------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2004 GAISLER RESEARCH --- --- 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. --- --- See the file COPYING for the full details of the license. --- ------------------------------------------------------------------------------ --- Entity: ahbrom --- File: ahbrom.vhd --- Author: Jiri Gaisler - Gaisler Research --- Description: AHB rom. 0/1-waitstate read ------------------------------------------------------------------------------- -library ieee; -use ieee.std_logic_1164.all; -library grlib; -use grlib.amba.all; -use grlib.stdlib.all; -use grlib.devices.all; - -entity ahbrom is - generic ( - hindex : integer := 0; - haddr : integer := 0; - hmask : integer := 16#fff#; - pipe : integer := 0; - tech : integer := 0; - kbytes : integer := 1); - port ( - rst : in std_ulogic; - clk : in std_ulogic; - ahbsi : in ahb_slv_in_type; - ahbso : out ahb_slv_out_type - ); -end; - -architecture rtl of ahbrom is -constant abits : integer := 9; -constant bytes : integer := 288; - -constant hconfig : ahb_config_type := ( - 0 => ahb_device_reg ( VENDOR_GAISLER, GAISLER_AHBROM, 0, 0, 0), - 4 => ahb_membar(haddr, '1', '1', hmask), others => zero32); - -signal romdata : std_logic_vector(31 downto 0); -signal addr : std_logic_vector(abits-1 downto 2); -signal hsel, hready : std_ulogic; - -begin - - ahbso.hresp <= "00"; - ahbso.hsplit <= (others => '0'); - ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; - ahbso.hconfig <= hconfig; - ahbso.hindex <= hindex; - - reg : process (clk) - begin - if rising_edge(clk) then - addr <= ahbsi.haddr(abits-1 downto 2); - end if; - end process; - - p0 : if pipe = 0 generate - ahbso.hrdata <= ahbdrivedata(romdata); - ahbso.hready <= '1'; - end generate; - - p1 : if pipe = 1 generate - reg2 : process (clk) - begin - if rising_edge(clk) then - hsel <= ahbsi.hsel(hindex) and ahbsi.htrans(1); - hready <= ahbsi.hready; - ahbso.hready <= (not rst) or (hsel and hready) or - (ahbsi.hsel(hindex) and not ahbsi.htrans(1) and ahbsi.hready); - ahbso.hrdata <= ahbdrivedata(romdata); - end if; - end process; - end generate; - - comb : process (addr) - begin - case conv_integer(addr) is - when 16#00000# => romdata <= X"81D82000"; - when 16#00001# => romdata <= X"03000004"; - when 16#00002# => romdata <= X"821060C0"; - when 16#00003# => romdata <= X"81884000"; - when 16#00004# => romdata <= X"81900000"; - when 16#00005# => romdata <= X"81980000"; - when 16#00006# => romdata <= X"81800000"; - when 16#00007# => romdata <= X"01000000"; - when 16#00008# => romdata <= X"03000040"; - when 16#00009# => romdata <= X"8210600F"; - when 16#0000A# => romdata <= X"C2A00040"; - when 16#0000B# => romdata <= X"87444000"; - when 16#0000C# => romdata <= X"8608E01F"; - when 16#0000D# => romdata <= X"88100000"; - when 16#0000E# => romdata <= X"8A100000"; - when 16#0000F# => romdata <= X"8C100000"; - when 16#00010# => romdata <= X"8E100000"; - when 16#00011# => romdata <= X"A0100000"; - when 16#00012# => romdata <= X"A2100000"; - when 16#00013# => romdata <= X"A4100000"; - when 16#00014# => romdata <= X"A6100000"; - when 16#00015# => romdata <= X"A8100000"; - when 16#00016# => romdata <= X"AA100000"; - when 16#00017# => romdata <= X"AC100000"; - when 16#00018# => romdata <= X"AE100000"; - when 16#00019# => romdata <= X"90100000"; - when 16#0001A# => romdata <= X"92100000"; - when 16#0001B# => romdata <= X"94100000"; - when 16#0001C# => romdata <= X"96100000"; - when 16#0001D# => romdata <= X"98100000"; - when 16#0001E# => romdata <= X"9A100000"; - when 16#0001F# => romdata <= X"9C100000"; - when 16#00020# => romdata <= X"9E100000"; - when 16#00021# => romdata <= X"86A0E001"; - when 16#00022# => romdata <= X"16BFFFEF"; - when 16#00023# => romdata <= X"81E00000"; - when 16#00024# => romdata <= X"82102002"; - when 16#00025# => romdata <= X"81904000"; - when 16#00026# => romdata <= X"03000004"; - when 16#00027# => romdata <= X"821060E0"; - when 16#00028# => romdata <= X"81884000"; - when 16#00029# => romdata <= X"01000000"; - when 16#0002A# => romdata <= X"01000000"; - when 16#0002B# => romdata <= X"01000000"; - when 16#0002C# => romdata <= X"03200000"; - when 16#0002D# => romdata <= X"84102233"; - when 16#0002E# => romdata <= X"C4204000"; - when 16#0002F# => romdata <= X"0539AE13"; - when 16#00030# => romdata <= X"8410A260"; - when 16#00031# => romdata <= X"C4206004"; - when 16#00032# => romdata <= X"050003FC"; - when 16#00033# => romdata <= X"C4206008"; - when 16#00034# => romdata <= X"3D1003FF"; - when 16#00035# => romdata <= X"BC17A3E0"; - when 16#00036# => romdata <= X"9C27A060"; - when 16#00037# => romdata <= X"03100000"; - when 16#00038# => romdata <= X"81C04000"; - when 16#00039# => romdata <= X"01000000"; - when 16#0003A# => romdata <= X"01000000"; - when 16#0003B# => romdata <= X"01000000"; - when 16#0003C# => romdata <= X"01000000"; - when 16#0003D# => romdata <= X"01000000"; - when 16#0003E# => romdata <= X"01000000"; - when 16#0003F# => romdata <= X"01000000"; - when 16#00040# => romdata <= X"00000004"; - when 16#00041# => romdata <= X"00000000"; - when 16#00042# => romdata <= X"00000004"; - when 16#00043# => romdata <= X"00000000"; - when 16#00044# => romdata <= X"FFFFFFFC"; - when 16#00045# => romdata <= X"00000000"; - when 16#00046# => romdata <= X"FFFFFFFC"; - when 16#00047# => romdata <= X"00000000"; - when 16#00048# => romdata <= X"00000000"; - when others => romdata <= (others => '-'); - end case; - end process; - -- pragma translate_off - bootmsg : report_version - generic map ("ahbrom" & tost(hindex) & - ": 32-bit AHB ROM Module, " & tost(bytes/4) & " words, " & tost(abits-2) & " address bits" ); - -- pragma translate_on - end; diff --git a/designs/leon3-ge-hpe-mini-lattice/clkgen_lattice_ea.vhd b/designs/leon3-ge-hpe-mini-lattice/clkgen_lattice_ea.vhd deleted file mode 100644 index 636f0c3f..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/clkgen_lattice_ea.vhd +++ /dev/null @@ -1,154 +0,0 @@ ------------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------ --- Entity: clkgen_lattice --- File: clkgen_lattice.vhd --- Author: Nils-Johan Wessman - Gaisler Research --- Description: Clock generators for Lattice fpgas ------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; --- pragma translate_off -library grlib; -use grlib.stdlib.all; ---library unisim; --- pragma translate_on -library techmap; -use techmap.gencomp.all; - -library ec; -use ec.components.all; - ------------------------------------------------------------------- --- LEC clock generator --------------------------------------- ------------------------------------------------------------------- - -entity clkgen_lattice is - generic ( - clk_mul : string := "2"; - clk_div : string := "1"; - freq : string := "25"; -- clock frequency in MHz - ddrclk_mul : string := "4"; - ddrclk_div : string := "1"); - port ( - clkin : in std_logic; - clk0 : out std_logic; -- main clock - clk180 : out std_logic; -- main clock phase 180 - clk270 : out std_logic; -- main clock phase 270 - - ddrclk : out std_logic; - ddrclkb : out std_logic; - - clkm : out std_logic; - - cgi : in clkgen_in_type; - cgo : out clkgen_out_type); -end; - -architecture struct of clkgen_lattice is -constant VERSION : integer := 1; -signal clkin200, clkin_fb, clk0_fb, clkm_fb, clk180_fb, clk_270 : std_logic; -signal pllinlock, pll0lock, pll1lock, pll2lock : std_logic; -signal pllinrst, pllrst : std_logic_vector(0 to 5); - -attribute FB_MODE : string; -attribute FB_MODE of pllm : label is "INTERNAL"; -- INTERNAL CLOCKTREE -attribute FB_MODE of pllddr1 : label is "INTERNAL"; -attribute FB_MODE of pllddr2 : label is "INTERNAL"; - -begin -pllm : EHXPLLB - generic map( - FIN => freq, CLKI_DIV => clk_div, CLKOP_DIV => "16", - CLKFB_DIV => clk_mul, FDEL => "0", CLKOK_DIV => "2", - WAKE_ON_LOCK => "off", DELAY_CNTL => "STATIC", PHASEADJ => "0", DUTY => "4") - port map( - CLKI => clkin, CLKFB => clkm_fb, RST => pllrst(0), - CLKOP => clkm_fb, CLKOS => clkm, CLKOK => open, LOCK => pll0lock, - - -- Static - DDAMODE => '0', DDAIZR => '0', DDAILAG => '0', DDAIDEL0 => '0', DDAIDEL1 => '0', DDAIDEL2 => '0', - DDAOZR => open, DDAOLAG => open, DDAODEL0 => open, DDAODEL1 => open, DDAODEL2 => open - ); - -pllddr1 : EHXPLLB - generic map( - FIN => freq, CLKI_DIV => ddrclk_div, CLKOP_DIV => "8", - CLKFB_DIV => ddrclk_mul, FDEL => "0", CLKOK_DIV => "2", - WAKE_ON_LOCK => "off", DELAY_CNTL => "STATIC", PHASEADJ => "180", DUTY => "4") - port map( - CLKI => clkin, CLKFB => clk180_fb, RST => pllrst(0), - CLKOP => clk180_fb, CLKOS => clk180, CLKOK => open, LOCK => pll1lock, - - -- Static - DDAMODE => '0', DDAIZR => '0', DDAILAG => '0', DDAIDEL0 => '0', DDAIDEL1 => '0', DDAIDEL2 => '0', - DDAOZR => open, DDAOLAG => open, DDAODEL0 => open, DDAODEL1 => open, DDAODEL2 => open - ); - -pllddr2 : EHXPLLB - generic map( - FIN => freq, CLKI_DIV => ddrclk_div, CLKOP_DIV => "8", - CLKFB_DIV => ddrclk_mul, FDEL => "0", CLKOK_DIV => "2", - WAKE_ON_LOCK => "off", DELAY_CNTL => "STATIC", PHASEADJ => "270", DUTY => "4") - port map( - CLKI => clkin, CLKFB => clk0_fb, RST => pllrst(0), - CLKOP => clk0_fb, CLKOS => clk_270, CLKOK => open, LOCK => pll2lock, - - -- Static - DDAMODE => '0', DDAIZR => '0', DDAILAG => '0', DDAIDEL0 => '0', DDAIDEL1 => '0', DDAIDEL2 => '0', - DDAOZR => open, DDAOLAG => open, DDAODEL0 => open, DDAODEL1 => open, DDAODEL2 => open - ); - --- ddrclk_reg : ODDRXB --- port map(DA => '1', DB => '0', CLK => clk_270, LSR => '0', Q => ddrclk); --- ddrclkb_reg : ODDRXB --- port map(DA => '0', DB => '1', CLK => clk_270, LSR => '0', Q => ddrclkb); - -- invert DDR memory clock - ddrclk_reg : ODDRXB - port map(DA => '0', DB => '1', CLK => clk_270, LSR => '0', Q => ddrclk); - ddrclkb_reg : ODDRXB - port map(DA => '1', DB => '0', CLK => clk_270, LSR => '0', Q => ddrclkb); - - - clk0 <= clk0_fb; - clk270 <= clk_270; --- pllinrst <= cgi.pllrst; - - rstdel : process (clkin, cgi.pllrst) - begin - if cgi.pllrst = '1' then pllrst <= (others => '1'); - elsif rising_edge(clkin) then - pllrst <= pllrst(1 to 5) & '0'; - end if; - end process; - - cgo.clklock <= pll0lock and pll1lock and pll2lock; - - -- cgo.pcilock <= dll2lock; - --- pragma translate_off - bootmsg : report_version - generic map ( - "clkgen_lattice" & ": lattice clock generator, version " & tost(VERSION), - "clkgen_lattice" & ": Frequency " & freq & " MHz, PLL divisor " & clk_mul & "/" & clk_div & ddrclk_mul & "/" & ddrclk_div); --- pragma translate_on - -end; - diff --git a/designs/leon3-ge-hpe-mini-lattice/config.help b/designs/leon3-ge-hpe-mini-lattice/config.help deleted file mode 100644 index baf5cd33..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/config.help +++ /dev/null @@ -1,1034 +0,0 @@ - - -Prompt for target technology -CONFIG_SYN_INFERRED - Selects the target technology for memory and pads. - The following are available: - - - Inferred: Generic FPGA or ASIC targets if your synthesis tool - is capable of inferring RAMs and pads automatically. - - - Actel ProAsic/P/3, IGLOO and Axcelerator FPGAs - - Aeroflex UT25CRH Rad-Hard 0.25 um CMOS - - Altera: Most Altera FPGA families - - Altera-Stratix: Altera Stratix FPGA family - - Altera-StratixII: Altera Stratix-II FPGA family - - ATC18: Atmel-Nantes 0.18 um rad-hard CMOS - - IHP25: IHP 0.25 um CMOS - - IHP25RH: IHP Rad-Hard 0.25 um CMOS - - Lattice : EC/ECP/XP FPGAs - - Quicklogic : Eclipse/E/II FPGAs - - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries - - Xilinx-Spartan3E: Xilinx Spartan3E libraries - - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries - - -Ram library -CONFIG_MEM_VIRAGE - Select RAM generators for ASIC targets. - -Infer ram -CONFIG_SYN_INFER_RAM - Say Y here if you want the synthesis tool to infer your - RAM automatically. Say N to directly instantiate technology- - specific RAM cells for the selected target technology package. - -Infer pads -CONFIG_SYN_INFER_PADS - Say Y here if you want the synthesis tool to infer pads. - Say N to directly instantiate technology-specific pads from - the selected target technology package. - -No async reset -CONFIG_SYN_NO_ASYNC - Say Y here if you disable asynchronous reset in some of the IP cores. - Might be necessary if the target library does not have cells with - asynchronous set/reset. - -Scan support -CONFIG_SYN_SCAN - Say Y here to enable scan support in some cores. This will enable - the scan support generics where available and add logic to make - the design testable using full-scan. - -Use Virtex CLKDLL for clock synchronisation -CONFIG_CLK_INFERRED - Certain target technologies include clock generators to scale or - phase-adjust the system and SDRAM clocks. This is currently supported - for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you - can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. - -Clock multiplier -CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - - WARNING: The resulting clock must be within the limits specified - by the target FPGA family. - -Clock divider -CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - - WARNING: The resulting clock must be within the limits specified - by the target FPGA family. - -Output clock divider -CONFIG_OCLK_DIV - When using the Proasic3 PLL, the system clock is generated by three - parameters: input clock multiplication, input clock division and - output clock division. Only certain values of these parameters - are allowed, but unfortunately this is not documented by Actel. - To find the correct values, run the Libero Smartgen tool and - insert you desired input and output clock frequencies in the - Static PLL configurator. The mul/div factors can then be read - out from tool. - -Output clock divider, 2nd clock -CONFIG_OCLKB_DIV - See help for 'Ouput division factor'. Set this to 0 to disable the - second clock output. - -Output clock divider, 3rd clock -CONFIG_OCLKC_DIV - See help for 'Ouput division factor'. Set this to 0 to disable the - third clock output. - -System clock multiplier -CONFIG_CLKDLL_1_2 - The Xilinx CLKDLL can scale the input clock with a factor of 0.5, 1.0, - or 2.0. Useful when the target board has an oscillator with a too high - (or low) frequency for your design. The divided clock will be used as the - main clock for the whole processor (except PCI and ethernet clocks). - -System clock multiplier -CONFIG_DCM_2_3 - The Xilinx DCM and Altera ALTDLL can scale the input clock with a large - range of factors. Useful when the target board has an oscillator with a - too high (or low) frequency for your design. The divided clock will - be used as the main clock for the whole processor (except PCI and - ethernet clocks). NOTE: the resulting frequency must be at least - 24 MHz or the DCM and ALTDLL might not work. - -Enable CLKDLL for PCI clock -CONFIG_PCI_CLKDLL - Say Y here to re-synchronize the PCI clock using a - Virtex BUFGDLL macro. Will improve PCI clock-to-output - delays on the expense of input-setup requirements. - -Use PCI clock system clock -CONFIG_PCI_SYSCLK - Say Y here to the PCI clock to generate the system clock. - The PCI clock can be scaled using the DCM or CLKDLL to - generate a suitable processor clock. - -External SDRAM clock feedback -CONFIG_CLK_NOFB - Say Y here to disable the external clock feedback to synchronize the - SDRAM clock. This option is necessary if your board or design does not - have an external clock feedback that is connected to the pllref input - of the clock generator. - -Number of processors -CONFIG_PROC_NUM - The number of processor cores. The LEON3MP design can accomodate - up to 4 LEON3 processor cores. Use 1 unless you know what you are - doing ... - -Number of SPARC register windows -CONFIG_IU_NWINDOWS - The SPARC architecture (and LEON) allows 2 - 32 register windows. - However, any number except 8 will require that you modify and - recompile your run-time system or kernel. Unless you know what - you are doing, use 8. - -SPARC V8 multiply and divide instruction -CONFIG_IU_V8MULDIV - If you say Y here, the SPARC V8 multiply and divide instructions - will be implemented. The instructions are: UMUL, UMULCC, SMUL, - SMULCC, UDIV, UDIVCC, SDIV, SDIVCC. In code containing frequent - integer multiplications and divisions, significant performance - increase can be achieved. Emulated floating-point operations will - also benefit from this option. - - By default, the gcc compiler does not emit multiply or divide - instructions and your code must be compiled with -mv8 to see any - performance increase. On the other hand, code compiled with -mv8 - will generate an illegal instruction trap when executed on processors - with this option disabled. - - The divider consumes approximately 2 kgates, the multiplier 6 kgates. - -Multiplier latency -CONFIG_IU_MUL_LATENCY_2 - Implementation options for the integer multiplier. - - Type Implementation issue-rate/latency - 2-clocks 32x32 pipelined multiplier 1/2 - 4-clocks 16x16 standard multiplier 4/4 - 5-clocks 16x16 pipelined multiplier 4/5 - -MAC operation -CONFIG_IU_MUL_MAC - If you say Y here, the SPARC V8e UMAC/SMAC (multiply-accumulate) - instructions will be enabled. The instructions implement a - single-cycle 16x16->32 bits multiply with a 40-bits accumulator. - The details of these instructions can be found in the LEON manual, - This option is only available when 16x16 multiplier is used. - -Multiplier structure -CONFIG_IU_MUL_INFERRED - Structure options for the integer multiplier. The multiplier - can be implemented with the following structures: - - * Inferred by the synthesis tool - * Generated using Module Generators from NTNU - * Using technology specific netlists (TechSpec) - * Using Synopsys Designware (DW02_mult and DW_mult_pipe) - -Branch prediction -CONFIG_IU_BP - Enabling branch prediction will improve performance with - up to 20%, depending on application. The timing and area - overhead are minor, so it is recommended to always enable - this option. - -Single vector trapping -CONFIG_IU_SVT - Single-vector trapping is a SPARC V8e option to reduce code-size - in small applications. If enabled, the processor will jump to - the address of trap 0 (tt = 0x00) for all traps. No trap table - is then needed. The trap type is present in %psr.tt and must - be decoded by the O/S. Saves 4 Kbyte of code, but increases - trap and interrupt overhead. Currently, the only O/S supporting - this option is eCos. To enable SVT, the O/S must also set bit 13 - in %asr17. - -Load latency -CONFIG_IU_LDELAY - Defines the pipeline load delay (= pipeline cycles before the data - from a load instruction is available for the next instruction). - One cycle gives best performance, but might create a critical path - on targets with slow (data) cache memories. A 2-cycle delay can - improve timing but will reduce performance with about 5%. - -Reset address -CONFIG_IU_RSTADDR - By default, a SPARC processor starts execution at address 0. - With this option, any 4-kbyte aligned reset start address can be - choosen. Keep at 0 unless you really know what you are doing. - -No tagged arithmetic -CONFIG_NOTAG - Say Y here to disable tagged arithmetic and the CASA instructions. - This will save some area in minimal systems that do not need - these features. - -Power-down -CONFIG_PWD - Say Y here to enable the power-down feature of the processor. - Might reduce the maximum frequency slightly on FPGA targets. - For details on the power-down operation, see the LEON3 manual. - -Hardware watchpoints -CONFIG_IU_WATCHPOINTS - The processor can have up to 4 hardware watchpoints, allowing to - create both data and instruction breakpoints at any memory location, - also in PROM. Each watchpoint will use approximately 500 gates. - Use 0 to disable the watchpoint function. - -Floating-point enable -CONFIG_FPU_ENABLE - Say Y here to enable the floating-point interface for the MEIKO - or GRFPU. Note that no FPU's are provided with the GPL version - of GRLIB. Both the Gaisler GRFPU and the Meiko FPU are commercial - cores and must be obtained separately. - -FPU selection -CONFIG_FPU_GRFPU - Select between Gaisler Research's GRFPU and GRFPU-lite FPUs or the Sun - Meiko FPU core. All cores are fully IEEE-754 compatible and support - all SPARC FPU instructions. - -GRFPU Multiplier -CONFIG_FPU_GRFPU_INFMUL - On FPGA targets choose inferred multiplier. For ASIC implementations - choose between Synopsys Design Ware (DW) multiplier or Module - Generator (ModGen) multiplier. The DW multiplier gives better results - (smaller area and better timing) but requires a DW license. - The ModGen multiplier is part of GRLIB and does not require a license. - The Technology Specific multiplier option selects a pre-designed - multiplier using technology specific macrocells when available, else - an inferred multiplier is used. - -Shared GRFPU -CONFIG_FPU_GRFPU_SH - If enabled multiple CPU cores will share one GRFPU. - -GRFPC Configuration -CONFIG_FPU_GRFPC0 - Configures the GRFPU-LITE controller. - - In simple configuration controller executes FP instructions - in parallel with integer instructions. FP operands are fetched - in the register file stage and the result is written in the write - stage. This option uses least area resources. - - Data forwarding configuration gives ~ 10 % higher FP performance than - the simple configuration by adding data forwarding between the pipeline - stages. - - Non-blocking controller allows FP load and store instructions to - execute in parallel with FP instructions. The performance increase is - ~ 20 % for FP applications. This option uses most logic resources and - is suitable for ASIC implementations. - -Floating-point netlist -CONFIG_FPU_NETLIST - Say Y here to use a VHDL netlist of the GRFPU-Lite. This is - only available in certain versions of grlib. - -Enable Instruction cache -CONFIG_ICACHE_ENABLE - The instruction cache should always be enabled to allow - maximum performance. Some low-end system might want to - save area and disable the cache, but this will reduce - the performance with a factor of 2 - 3. - -Enable Data cache -CONFIG_DCACHE_ENABLE - The data cache should always be enabled to allow - maximum performance. Some low-end system might want to - save area and disable the cache, but this will reduce - the performance with a factor of 2 at least. - -Instruction cache associativity -CONFIG_ICACHE_ASSO1 - The instruction cache can be implemented as a multi-way cache with - 1 - 4 ways. Higher associativity usually increases the cache hit - rate and thereby the performance. The downside is higher power - consumption and increased gate-count for tag comparators. - - Note that a 1-way cache is effectively a direct-mapped cache. - -Instruction cache way size -CONFIG_ICACHE_SZ1 - The size of each way in the instuction cache (kbytes). Valid values - are 1 - 64 in binary steps. Note that the full range is only supported - by the generic and virtex2 targets. Most target packages are limited - to 2 - 16 kbyte. Large way size gives higher performance but might - affect the maximum frequency (on ASIC targets). The total instruction - cache size is the number of way multiplied with the way size. - -Instruction cache line size -CONFIG_ICACHE_LZ16 - The instruction cache line size. Can be set to either 16 or 32 - bytes per line. Instruction caches typically benefit from larger - line sizes, but on small caches it migh be better with 16 bytes/line - to limit eviction miss rate. - -Instruction cache replacement algorithm -CONFIG_ICACHE_ALGORND - Cache replacement algorithm for caches with 2 - 4 ways. The 'random' - algorithm selects the way to evict randomly. The least-recently-replaced - (LRR) algorithm evicts the way least recently replaced. The least- - recently-used (LRU) algorithm evicts the way least recently accessed. - The random algorithm uses a simple 1- or 2-bit counter to select - the eviction way and has low area overhead. The LRR scheme uses one - extra bit in the tag ram and has therefore also low area overhead. - However, the LRR scheme can only be used with 2-way caches. The LRU - scheme has typically the best performance but also highest area overhead. - A 2-way LRU uses 1 flip-flop per line, a 3-way LRU uses 3 flip-flops - per line, and a 4-way LRU uses 5 flip-flops per line to store the access - history. - -Instruction cache locking -CONFIG_ICACHE_LOCK - Say Y here to enable cache locking in the instruction cache. - Locking can be done on cache-line level, but will increase the - width of the tag ram with one bit. If you don't know what - locking is good for, it is safe to say N. - -Data cache associativity -CONFIG_DCACHE_ASSO1 - The data cache can be implemented as a multi-way cache with - 1 - 4 ways. Higher associativity usually increases the cache hit - rate and thereby the performance. The downside is higher power - consumption and increased gate-count for tag comparators. - - Note that a 1-way cache is effectively a direct-mapped cache. - -Data cache way size -CONFIG_DCACHE_SZ1 - The size of each way in the data cache (kbytes). Valid values are - 1 - 64 in binary steps. Note that the full range is only supported - by the generic and virtex2 targets. Most target packages are limited - to 2 - 16 kbyte. A large cache gives higher performance but the - data cache is timing critical an a too large setting might affect - the maximum frequency (on ASIC targets). The total data cache size - is the number of way multiplied with the way size. - -Data cache line size -CONFIG_DCACHE_LZ16 - The data cache line size. Can be set to either 16 or 32 bytes per - line. A smaller line size gives better associativity and higher - cache hit rate, but requires a larger tag memory. - -Data cache replacement algorithm -CONFIG_DCACHE_ALGORND - See the explanation for instruction cache replacement algorithm. - -Data cache locking -CONFIG_DCACHE_LOCK - Say Y here to enable cache locking in the data cache. - Locking can be done on cache-line level, but will increase the - width of the tag ram with one bit. If you don't know what - locking is good for, it is safe to say N. - -Data cache snooping -CONFIG_DCACHE_SNOOP - Say Y here to enable data cache snooping on the AHB bus. Is only - useful if you have additional AHB masters such as the DSU or a - target PCI interface. Note that the target technology must support - dual-port RAMs for this option to be enabled. Dual-port RAMS are - currently supported on Virtex/2, Virage and Actel targets. - -Data cache snooping implementation -CONFIG_DCACHE_SNOOP_FAST - The default snooping implementation is 'slow', which works if you - don't have AHB slaves in cacheable areas capable of zero-waitstates - non-sequential write accesses. Otherwise use 'fast' and suffer a - few kgates extra area. This option is currently only needed in - multi-master systems with the SSRAM or DDR memory controllers. - -Separate snoop tags -CONFIG_DCACHE_SNOOP_SEPTAG - Enable a separate memory to store the data tags used for snooping. - This is necessary when snooping support is wanted in systems - with MMU, typically for SMP systems. In this case, the snoop - tags will contain the physical tag address while the normal - tags contain the virtual tag address. This option can also be - together with the 'fast snooping' option to enable snooping - support on technologies without dual-port RAMs. In such case, - the snoop tag RAM will be implemented using a two-port RAM. - -Fixed cacheability map -CONFIG_CACHE_FIXED - If this variable is 0, the cacheable memory regions are defined - by the AHB plug&play information (default). To overriden the - plug&play settings, this variable can be set to indicate which - areas should be cached. The value is treated as a 16-bit hex value - with each bit defining if a 256 Mbyte segment should be cached or not. - The right-most (LSB) bit defines the cacheability of AHB address - 0 - 256 MByte, while the left-most bit (MSB) defines AHB address - 3840 - 4096 MByte. If the bit is set, the corresponding area is - cacheable. A value of 00F3 defines address 0 - 0x20000000 and - 0x40000000 - 0x80000000 as cacheable. - -Local data ram -CONFIG_DCACHE_LRAM - Say Y here to add a local ram to the data cache controller. - Accesses to the ram (load/store) will be performed at 0 waitstates - and store data will never be written back to the AHB bus. - -Size of local data ram -CONFIG_DCACHE_LRAM_SZ1 - Defines the size of the local data ram in Kbytes. Note that most - technology libraries do not support larger rams than 16 Kbyte. - -Start address of local data ram -CONFIG_DCACHE_LRSTART - Defines the 8 MSB bits of start address of the local data ram. - By default set to 8f (start address = 0x8f000000), but any value - (except 0) is possible. Note that the local data ram 'shadows' - a 16 Mbyte block of the address space. - -MMU enable -CONFIG_MMU_ENABLE - Say Y here to enable the Memory Management Unit. - -MMU split icache/dcache table lookaside buffer -CONFIG_MMU_COMBINED - Select "combined" for a combined icache/dcache table lookaside buffer, - "split" for a split icache/dcache table lookaside buffer - -MMU tlb replacement scheme -CONFIG_MMU_REPARRAY - Select "LRU" to use the "least recently used" algorithm for TLB - replacement, or "Increment" for a simple incremental replacement - scheme. - -Combined i/dcache tlb -CONFIG_MMU_I2 - Select the number of entries for the instruction TLB, or the - combined icache/dcache TLB if such is used. - -Split tlb, dcache -CONFIG_MMU_D2 - Select the number of entries for the dcache TLB. - -Fast writebuffer -CONFIG_MMU_FASTWB - Only selectable if split tlb is enabled. In case fast writebuffer is - enabled the tlb hit will be made concurrent to the cache hit. This - leads to higher store performance, but increased power and area. - -MMU pagesize -CONFIG_MMU_PAGE_4K - The deafult SPARC V8 SRMMU page size is 4 Kbyte. This limits the - cache way size to 4 Kbyte, and total data cache size to 16 Kbyte, - when the MMU is used. To increase the maximum data cache size, - the MMU pages size can be increased to up 32 Kbyte. This will - give a maximum data cache size of 128 Kbyte. - - Note that an MMU page size different than 4 Kbyte will require - a special linux tool-chain if glibc is used. If you don't know - what you are doing, stay with 4 Kbyte ... - -DSU enable -CONFIG_DSU_ENABLE - The debug support unit (DSU) allows non-intrusive debugging and tracing - of both executed instructions and AHB transfers. If you want to enable - the DSU, say Y here and select the configuration below. - -Trace buffer enable -CONFIG_DSU_TRACEBUF - Say Y to enable the trace buffer. The buffer is not necessary for - debugging, only for tracing instructions and data transfers. - -Enable instruction tracing -CONFIG_DSU_ITRACE - If you say Y here, an instruction trace buffer will be implemented - in each processor. The trace buffer will trace executed instructions - and their results, and place them in a circular buffer. The buffer - can be read out by any AHB master, and in particular by the debug - communication link. - -Size of trace buffer -CONFIG_DSU_ITRACESZ1 - Select the buffer size (in kbytes) for the instruction trace buffer. - Each line in the buffer needs 16 bytes. A 128-entry buffer will thus - need 2 kbyte. - -Enable AHB tracing -CONFIG_DSU_ATRACE - If you say Y here, an AHB trace buffer will be implemented in the - debug support unit processor. The AHB buffer will trace all transfers - on the AHB bus and save them in a circular buffer. The trace buffer - can be read out by any AHB master, and in particular by the debug - communication link. - -Size of trace buffer -CONFIG_DSU_ATRACESZ1 - Select the buffer size (in kbytes) for the AHB trace buffer. - Each line in the buffer needs 16 bytes. A 128-entry buffer will thus - need 2 kbyte. - - -LEON3FT enable -CONFIG_LEON3FT_EN - Say Y here to use the fault-tolerant LEON3FT core instead of the - standard non-FT LEON3. - -IU Register file protection -CONFIG_IUFT_NONE - Select the FT implementation in the LEON3FT integer unit - register file. The options include parity, parity with - sparing, 7-bit BCH and TMR. - -FPU Register file protection -CONFIG_FPUFT_EN - Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. - -Cache memory error injection -CONFIG_RF_ERRINJ - Say Y here to enable error injection in to the IU/FPU regfiles. - Affects only simulation. - -Cache memory protection -CONFIG_CACHE_FT_EN - Enable SEU error-correction in the cache memories. - -Cache memory error injection -CONFIG_CACHE_ERRINJ - Say Y here to enable error injection in to the cache memories. - Affects only simulation. - -Leon3ft netlist -CONFIG_LEON3_NETLIST - Say Y here to use a VHDL netlist of the LEON3FT. This is - only available in certain versions of grlib. - -IU assembly printing -CONFIG_IU_DISAS - Enable printing of executed instructions to the console. - -IU assembly printing in netlist -CONFIG_IU_DISAS_NET - Enable printing of executed instructions to the console also - when simulating a netlist. NOTE: with this option enabled, it - will not be possible to pass place&route. - -32-bit program counters -CONFIG_DEBUG_PC32 - Since the LSB 2 bits of the program counters always are zero, they are - normally not implemented. If you say Y here, the program counters will - be implemented with full 32 bits, making debugging of the VHDL model - much easier. Turn of this option for synthesis or you will be wasting - area. -CONFIG_AHB_DEFMST - Sets the default AHB master (see AMBA 2.0 specification for definition). - Should not be set to a value larger than the number of AHB masters - 1. - For highest processor performance, leave it at 0. - -Default AHB master -CONFIG_AHB_RROBIN - Say Y here to enable round-robin arbitration of the AHB bus. A N will - select fixed priority, with the master with the highest bus index having - the highest priority. - -Support AHB split-transactions -CONFIG_AHB_SPLIT - Say Y here to enable AHB split-transaction support in the AHB arbiter. - Unless you actually have an AHB slave that can generate AHB split - responses, say N and save some gates. - -Enable full PnP decoding -CONFIG_AHB_FPNPEN - Say Y here to enable full decoding of the PnP configuration records in - in the AHB arbiter. When disabled the user-defined registers in the - PnP configuration records are not mapped in the configuration area. - -IO area start address -CONFIG_AHB_IOADDR - Selects the MSB adddress (HADDR[31:20]) of the AHB IO area, as defined - in the plug&play extentions of the AMBA bus. Should be kept to FFF - unless you really know what you are doing. - -APB bridge address -CONFIG_APB_HADDR - Selects the MSB adddress (HADDR[31:20]) of the APB bridge. Should be - kept at 800 for software compatibility. - -AHB monitor -CONFIG_AHB_MON - Say Y to enable the AHB bus monitor. The monitor will check for - illegal AHB transactions during simulation. It has no impact on - synthesis. - -Report AHB errors -CONFIG_AHB_MONERR - Print out detected AHB violations on console. - -Report AHB warnings -CONFIG_AHB_MONWAR - Print out detected AHB warnings on console. - -Write trace to console -CONFIG_AHB_DTRACE - Say yes here to write a trace of all AHB transfers to the - simulator console. Has not impact on final netlist. - -DSU enable -CONFIG_DSU_UART - Say Y to enable the AHB uart (serial-to-AHB). This is the most - commonly used debug communication link. - -Ethernet DSU enable -CONFIG_DSU_ETH - Say Y to enable the Ethernet Debug Communication Link (EDCL). The link - provides a DSU gateway between ethernet and the AHB bus. Debugging is - done at 10 or 100 Mbit/s, using the GRMON debug monitor. You must - enable the GRETH Ethernet MAC for this option to become active. - -Size of EDCL trace buffer -CONFIG_DSU_ETHSZ1 - Select the buffer size (in kbytes) for the EDCL. 1 or 2 kbyte is - usually enough, while a larger buffer will increase the transfer rate. - When operating at 100 Mbit, use a buffer size of at least 8 kbyte for - maximum throughput. - -MSB IP address -CONFIG_DSU_IPMSB - Set the MSB 16 bits of the IP address of the EDCL. - -LSB IP address -CONFIG_DSU_IPLSB - Set the LSB 16 bits of the IP address of the EDCL. - -MSB ethernet address -CONFIG_DSU_ETHMSB - Set the MSB 24 bits of the ethernet address of the EDCL. - -LSB ethernet address -CONFIG_DSU_ETHLSB - Set the LSB 24 bits of the ethernet address of the EDCL. - -Programmable MAC/IP address -CONFIG_DSU_ETH_PROG - Say Y to make the LSB 4 bits of the EDCL MAC and IP address - configurable using the ethi.edcladdr inputs. -PROM/SRAM memory controller -CONFIG_SRCTRL - Say Y here to enable a simple (and small) PROM/SRAM memory controller. - The controller has a fixed number of waitstates, and is primarily - intended for FPGA implementations. The RAM data bus is always 32 bits, - the PROM can be configured to either 8 or 32 bits (hardwired). - -8-bit memory support -CONFIG_SRCTRL_8BIT - If you say Y here, the simple PROM/SRAM memory controller will - implement 8-bit PROM mode. - -PROM waitstates -CONFIG_SRCTRL_PROMWS - Select the number of waitstates for PROM access. - -RAM waitstates -CONFIG_SRCTRL_RAMWS - Select the number of waitstates for RAM access. - -IO waitstates -CONFIG_SRCTRL_IOWS - Select the number of waitstates for IO access. - -Read-modify-write support -CONFIG_SRCTRL_RMW - Say Y here to perform byte- and half-word writes as a - read-modify-write sequence. This is necessary if your - SRAM does not have individual byte enables. If you are - unsure, it is safe to say Y. - -SRAM bank select -CONFIG_SRCTRL_SRBANKS - Select number of SRAM banks. - -SRAM bank size select -CONFIG_SRCTRL_BANKSZ - Select size of SRAM banks in kBytes. - -PROM address bit select -CONFIG_SRCTRL_ROMASEL - Select address bit for PROM bank decoding. -Leon2 memory controller -CONFIG_MCTRL_LEON2 - Say Y here to enable the LEON2 memory controller. The controller - can access PROM, I/O, SRAM and SDRAM. The bus width for PROM - and SRAM is programmable to 8-, 16- or 32-bits. - -8-bit memory support -CONFIG_MCTRL_8BIT - If you say Y here, the PROM/SRAM memory controller will support - 8-bit mode, i.e. operate from 8-bit devices as if they were 32-bit. - Say N to save a few hundred gates. - -16-bit memory support -CONFIG_MCTRL_16BIT - If you say Y here, the PROM/SRAM memory controller will support - 16-bit mode, i.e. operate from 16-bit devices as if they were 32-bit. - Say N to save a few hundred gates. - -Write strobe feedback -CONFIG_MCTRL_WFB - If you say Y here, the PROM/SRAM write strobes (WRITEN, WEN) will - be used to enable the data bus drivers during write cycles. This - will guarantee that the data is still valid on the rising edge of - the write strobe. If you say N, the write strobes and the data bus - drivers will be clocked on the rising edge, potentially creating - a hold time problem in external memory or I/O. However, in all - practical cases, there is enough capacitance in the data bus lines - to keep the value stable for a few (many?) nano-seconds after the - buffers have been disabled, making it safe to say N and remove a - combinational path in the netlist that might be difficult to - analyze. - -Write strobe feedback -CONFIG_MCTRL_5CS - If you say Y here, the 5th (RAMSN[4]) SRAM chip select signal will - be enabled. If you don't intend to use it, say N and save some gates. - -SDRAM controller enable -CONFIG_MCTRL_SDRAM - Say Y here to enabled the PC100/PC133 SDRAM controller. If you don't - intend to use SDRAM, say N and save about 1 kgates. - -SDRAM controller inverted clock -CONFIG_MCTRL_SDRAM_INVCLK - If you say Y here, the SDRAM controller output signals will be delayed - with 1/2 clock in respect to the SDRAM clock. This will allow the used - of an SDRAM clock which in not strictly in phase with the internal - clock. This option will limit the SDRAM frequency to 40 - 50 MHz. - - On FPGA targets without SDRAM clock synchronizations through PLL/DLL, - say Y. On ASIC targets, say N and tell your foundry to balance the - SDRAM clock output. - -SDRAM separate address buses -CONFIG_MCTRL_SDRAM_SEPBUS - Say Y here if your SDRAM is connected through separate address - and data buses (SA & SD). This is the case on the GR-CPCI-XC2V6000 - board, but not on the GR-PCI-XC2V3000 or Avnet XCV1500E boards. - -64-bit data bus -CONFIG_MCTRL_SDRAM_BUS64 - Say Y here to enable 64-bit SDRAM data bus. - -Page burst enable -CONFIG_MCTRL_PAGE - Say Y here to enable SDRAM page burst operation. This will implement - read operations using page bursts rather than 8-word bursts and save - about 500 gates (100 LUTs). Note that not all SDRAM supports page - burst, so use this option with care. - -Programmable page burst enable -CONFIG_MCTRL_PROGPAGE - Say Y here to enable programmable SDRAM page burst operation. This - will allow to dynamically enable/disable page burst by setting - bit 17 in MCFG2. - -SDRAM controller enable -CONFIG_DDRMP - Say Y here to enabled a 32-bit DDR SDRAM controller. - -DDR chip selects -CONFIG_DDRMP_NCS - The number of chip selects the DDR controller should supply (1 - 2). - -DDR devices per bank -CONFIG_DDRMP_NDEV - The number of DDR devices per bank (chip select). Must be one - of 1, 2, 4, 8 or 16. - -DDR device data width -CONFIG_DDRMP_NBITS - The data width of each DDR device. Must be 4, 8 or 16 bits. - -DDR device density -CONFIG_DDRMP_MBITS - The density in Mbit of each DDR device. Must be 64, 128, 256, - 512 or 1024 Mbit. - -DDR frequency -CONFIG_DDRMP_FREQ - The DDR clock frequency in MHz. - -Secondary AHB port -CONFIG_DDRMP_EN2P - Say Y here to enable the second AHB port - -On-chip rom -CONFIG_AHBROM_ENABLE - Say Y here to add a block on on-chip rom to the AHB bus. The ram - provides 0-waitstates read access, burst support, and 8-, 16- - and 32-bit data size. The rom will be syntheised into block rams - on Xilinx and Altera FPGA devices, and into gates on ASIC - technologies. GRLIB includes a utility to automatically create - the rom VHDL model (ahbrom.vhd) from an ELF file. Refer to the GRLIB - documentation for details. - -On-chip rom address -CONFIG_AHBROM_START - Set the start address of AHB ROM (HADDR[31:20]). The ROM will occupy - a 1 Mbyte slot at the selected address. Default is 000, corresponding - to AHB address 0x00000000. When address 0x0 is selected, the rom area - of any other memory controller is set to 0x10000000 to avoid conflicts. - -Enable pipeline register for on-chip rom -CONFIG_AHBROM_PIPE - Say Y here to add a data pipeline register to the on-chip rom. - This should be done when the rom is implemenented in (ASIC) gates, - or in logic cells on FPGAs. Do not use this option when the rom is - implemented in block rams. If enabled, the rom will operate with - one waitstate. - -On-chip ram -CONFIG_AHBRAM_ENABLE - Say Y here to add a block on on-chip ram to the AHB bus. The ram - provides 0-waitstates read access and 0/1 waitstates write access. - All AHB burst types are supported, as well as 8-, 16- and 32-bit - data size. - -On-chip ram size -CONFIG_AHBRAM_SZ1 - Set the size of the on-chip AHB ram. The ram is infered/instantiated - as four byte-wide ram slices to allow byte and half-word write - accesses. It is therefore essential that the target package can - infer byte-wide rams. This is currently supported on the generic, - virtex, virtex2, proasic and axellerator targets. - -On-chip ram address -CONFIG_AHBRAM_START - Set the start address of AHB RAM (HADDR[31:20]). The RAM will occupy - a 1 Mbyte slot at the selected address. Default is A00, corresponding - to AHB address 0xA0000000. - -Gaisler Ethernet MAC enable -CONFIG_GRETH_ENABLE - Say Y here to enable the Gaisler Research Ethernet MAC . The MAC has - one AHB master interface to read and write packets to memory, and one - APB slave interface for accessing the control registers. - -Gaisler Ethernet 1G MAC enable -CONFIG_GRETH_GIGA - Say Y here to enable the Gaisler Research 1000 Mbit Ethernet MAC . - The 1G MAC is only available in the commercial version of GRLIB, - so do NOT enable it if you are using the GPL version. - -CONFIG_GRETH_FIFO4 - Set the depth of the receive and transmit FIFOs in the MAC core. - The MAC core will perform AHB burst read/writes with half the - size of the FIFO depth. - - -ATA interface enable -CONFIG_ATA_ENABLE - Say Y here to enable the ATA interace from OpenCores. The core has one - AHB slave interface for accessing all control registers. - -ATA register address -CONFIG_ATAIO - The control registers of the ATA core occupy 256 byte, and are - mapped in the AHB bus I/O area (0xFFF00000 - 0xFFFFF000). This setting - defines at which address in the I/O area the registers appear (HADDR[19:8]). - -ATA interrupt -CONFIG_ATAIRQ - Defines which interrupt number the ATA core will generate. - -ATA DMA support -CONFIG_ATA_MWDMA - Say yes here to enable IDE multi-word DMA support (MWDMA). - This will increase transfer rate compared to the PIO mode, - but increase area with approxiamtely 5,000 gates. Note that - DMA is not supported by legacy CF cards, so it makes no sense - to enable it on CF card sockets. - -ATA DMA FIFO depth -CONFIG_ATA_FIFO - Defines the DMA FIFO depth. Choose 8 or 16. -UART1 enable -CONFIG_UART1_ENABLE - Say Y here to enable UART1, or the console UART. This is needed to - get any print-out from LEON3 systems regardless of operating system. - -UART1 FIFO -CONFIG_UA1_FIFO1 - The UART has configurable transmitt and receive FIFO's, which can - be set to 1 - 32 bytes. Use 1 for minimum area, or 8 - 32 for - maximum throughput. - - -LEON3 interrupt controller -CONFIG_IRQ3_ENABLE - Say Y here to enable the LEON3 interrupt controller. This is needed - if you want to be able to receive interrupts. Operating systems like - Linux, RTEMS and eCos needs this option to be enabled. If you intend - to use the Bare-C run-time and not use interrupts, you could disable - the interrupt controller and save about 500 gates. - -LEON3 interrupt controller broadcast -CONFIG_IRQ3_BROADCAST_ENABLE - If enabled the broadcast register is used to determine which - interrupt should be sent to all cpus instead of just the first - one that consumes it. - -Secondary interrupts -CONFIG_IRQ3_SEC - The interrupt controller handles 15 interrupts by default (1 - 15). - These correspond to the 15 SPARC asyncronous traps (0x11 - 0x1F), - and AMBA interrupts 1 - 15. This option will enable 16 additional - (secondary) interrupts, corresponding to AMBA interrupts 16 - 31. - The secondary interrupts will be multiplexed onto one of the first - 15 interrupts. The total number of handled interrupts can then - be up to 30 (14 primary and 16 secondary). - -Number of interrupts -CONFIG_IRQ3_NSEC - Defines which of the first 15 interrupts should be used for the - secondary (16 - 31) interrupts. Interrupt 15 should be avoided - since it is not maskable by the processor. -Timer module enable -CONFIG_GPT_ENABLE - Say Y here to enable the Modular Timer Unit. The timer unit consists - of one common scaler and up to 7 independent timers. The timer unit - is needed for Linux, RTEMS, eCos and the Bare-C run-times. - -Timer module enable -CONFIG_GPT_NTIM - Set the number of timers in the timer unit (1 - 7). - -Scaler width -CONFIG_GPT_SW - Set the width if the common pre-scaler (2 - 16 bits). The scaler - is used to divide the system clock down to 1 MHz, so 8 bits should - be sufficient for most implementations (allows clocks up to 256 MHz). - -Timer width -CONFIG_GPT_TW - Set the width if the timers (2 - 32 bits). 32 bits is recommended - for the Bare-C run-time, lower values (e.g. 16 bits) can work with - RTEMS and Linux. - -Timer Interrupt -CONFIG_GPT_IRQ - Set the interrupt number for the first timer. Remaining timers will - have incrementing interrupts, unless the separate-interrupts option - below is disabled. - -Watchdog enable -CONFIG_GPT_WDOGEN - Say Y here to enable the watchdog functionality in the timer unit. - -Watchdog time-out value -CONFIG_GPT_WDOG - This value will be loaded in the watchdog timer at reset. - -Text-mode VGA -CONFIG_VGA_ENABLE - Say Y here to enable a simple text-mode VGA controller. The controller - generate 48x36 characters on a 640x480 pixel screen. The pixel clock - is 25 MHz. - -SVGA frame buffer -CONFIG_SVGA_ENABLE - Say Y here to enable a graphical frame buffer. The frame buffer - can be configured up to 1024x768 pixels and 8-, 16- or 32-bit - colour depth. - -PS2 KBD interface -CONFIG_KBD_ENABLE - Say Y here to enable a PS/2 keyboard or mouse interface. - -UART debugging -CONFIG_DEBUG_UART - During simulation, the output from the UARTs is printed on the - simulator console. Since the ratio between the system clock and - UART baud-rate is quite high, simulating UART output will be very - slow. If you say Y here, the UARTs will print a character as soon - as it is stored in the transmitter data register. The transmitter - ready flag will be permanently set, speeding up simulation. However, - the output on the UART tx line will be garbled. Has not impact on - synthesis, but will cause the LEON test bench to fail. - -FPU register tracing -CONFIG_DEBUG_FPURF - If you say Y here, all writes to the floating-point unit register file - will be printed on the simulator console. - diff --git a/designs/leon3-ge-hpe-mini-lattice/config.vhd b/designs/leon3-ge-hpe-mini-lattice/config.vhd deleted file mode 100644 index 6743eb32..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/config.vhd +++ /dev/null @@ -1,212 +0,0 @@ - - - - ------------------------------------------------------------------------------ --- LEON3 Demonstration design test bench configuration --- Copyright (C) 2009 Aeroflex Gaisler ------------------------------------------------------------------------------- - - -library techmap; -use techmap.gencomp.all; - -package config is - - ----------------------------------------------------------------------------- - -- GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- - - -- boot prom source - -- 0: external - -- 1: internal - constant CFG_BOOTOPT : integer := 0; - - -- HPE board version - -- 1: version 1 - -- /= 1: version 2 - constant CFG_HPEVER : integer := 2; - - -- provide ahb signals for an external slave - -- slave number can be defined below - -- numbers 8 to 15 can be used safely, numbers below - -- might be used by other LEON cores depending on configuration - constant CFG_EXTAHB : integer := 0; - - constant CFG_EXTAHB_ADDR : integer := 16#A00#; - - -- interrupt number the external slave is assigned to - -- unused at the moment - constant CFG_EXTAHB_IRQ : integer := 6; - - -- AHB slave number the external slave is assigned to - constant CFG_EXTAHB_NR : integer := 8; - - -- index number the external slave is assigned to - constant CFG_EXTAHB_ID : integer := 8; - - -- shift sdram address to bits 12+ - constant CFG_SDSHIFT : integer := 0; - - ----------------------------------------------------------------------------- - -- END GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- --- Technology and synthesis options - constant CFG_FABTECH : integer := lattice; - constant CFG_MEMTECH : integer := inferred; - constant CFG_PADTECH : integer := inferred; - constant CFG_NOASYNC : integer := 0; - constant CFG_SCAN : integer := 0; --- Clock generator - constant CFG_CLKTECH : integer := lattice; - constant CFG_CLKMUL : integer := (1); - constant CFG_CLKDIV : integer := (1); - constant CFG_OCLKDIV : integer := 1; - constant CFG_OCLKBDIV : integer := 0; - constant CFG_OCLKCDIV : integer := 0; - constant CFG_PCIDLL : integer := 0; - constant CFG_PCISYSCLK: integer := 0; - constant CFG_CLK_NOFB : integer := 0; --- LEON3 processor core - constant CFG_LEON3 : integer := 1; - constant CFG_NCPU : integer := (1); - constant CFG_NWIN : integer := (8); - constant CFG_V8 : integer := 0 + 4*0; - constant CFG_MAC : integer := 0; - constant CFG_BP : integer := 0; - constant CFG_SVT : integer := 0; - constant CFG_RSTADDR : integer := 16#00000#; - constant CFG_LDDEL : integer := (2); - constant CFG_NOTAG : integer := 0; - constant CFG_NWP : integer := (0); - constant CFG_PWD : integer := 0*2; - constant CFG_FPU : integer := 0 + 16*0 + 32*0; - constant CFG_GRFPUSH : integer := 0; - constant CFG_ICEN : integer := 1; - constant CFG_ISETS : integer := 1; - constant CFG_ISETSZ : integer := 8; - constant CFG_ILINE : integer := 8; - constant CFG_IREPL : integer := 0; - constant CFG_ILOCK : integer := 0; - constant CFG_ILRAMEN : integer := 0; - constant CFG_ILRAMADDR: integer := 16#8E#; - constant CFG_ILRAMSZ : integer := 1; - constant CFG_DCEN : integer := 1; - constant CFG_DSETS : integer := 1; - constant CFG_DSETSZ : integer := 4; - constant CFG_DLINE : integer := 4; - constant CFG_DREPL : integer := 0; - constant CFG_DLOCK : integer := 0; - constant CFG_DSNOOP : integer := 1 + 1 + 4*1; - constant CFG_DFIXED : integer := 16#0#; - constant CFG_DLRAMEN : integer := 0; - constant CFG_DLRAMADDR: integer := 16#8F#; - constant CFG_DLRAMSZ : integer := 1; - constant CFG_MMUEN : integer := 1; - constant CFG_ITLBNUM : integer := 8; - constant CFG_DTLBNUM : integer := 8; - constant CFG_TLB_TYPE : integer := 0 + 1*2; - constant CFG_TLB_REP : integer := 0; - constant CFG_MMU_PAGE : integer := 0; - constant CFG_DSU : integer := 1; - constant CFG_ITBSZ : integer := 1; - constant CFG_ATBSZ : integer := 1; - constant CFG_LEON3FT_EN : integer := 0; - constant CFG_IUFT_EN : integer := 0; - constant CFG_FPUFT_EN : integer := 0; - constant CFG_RF_ERRINJ : integer := 0; - constant CFG_CACHE_FT_EN : integer := 0; - constant CFG_CACHE_ERRINJ : integer := 0; - constant CFG_LEON3_NETLIST: integer := 0; - constant CFG_DISAS : integer := 0 + 0; - constant CFG_PCLOW : integer := 2; --- AMBA settings - constant CFG_DEFMST : integer := (0); - constant CFG_RROBIN : integer := 1; - constant CFG_SPLIT : integer := 0; - constant CFG_FPNPEN : integer := 0; - constant CFG_AHBIO : integer := 16#FFF#; - constant CFG_APBADDR : integer := 16#800#; - constant CFG_AHB_MON : integer := 0; - constant CFG_AHB_MONERR : integer := 0; - constant CFG_AHB_MONWAR : integer := 0; - constant CFG_AHB_DTRACE : integer := 0; --- DSU UART - constant CFG_AHB_UART : integer := 1; --- Ethernet DSU - constant CFG_DSU_ETH : integer := 1 + 0 + 0; - constant CFG_ETH_BUF : integer := 2; - constant CFG_ETH_IPM : integer := 16#C0A8#; - constant CFG_ETH_IPL : integer := 16#0040#; - constant CFG_ETH_ENM : integer := 16#020000#; - constant CFG_ETH_ENL : integer := 16#000020#; --- PROM/SRAM controller - constant CFG_SRCTRL : integer := 0; - constant CFG_SRCTRL_PROMWS : integer := 0; - constant CFG_SRCTRL_RAMWS : integer := 0; - constant CFG_SRCTRL_IOWS : integer := 0; - constant CFG_SRCTRL_RMW : integer := 0; - constant CFG_SRCTRL_8BIT : integer := 0; - constant CFG_SRCTRL_SRBANKS : integer := 1; - constant CFG_SRCTRL_BANKSZ : integer := 0; - constant CFG_SRCTRL_ROMASEL : integer := 0; --- LEON2 memory controller - constant CFG_MCTRL_LEON2 : integer := 1; - constant CFG_MCTRL_RAM8BIT : integer := 0; - constant CFG_MCTRL_RAM16BIT : integer := 0; - constant CFG_MCTRL_5CS : integer := 0; - constant CFG_MCTRL_SDEN : integer := 0; - constant CFG_MCTRL_SEPBUS : integer := 0; - constant CFG_MCTRL_INVCLK : integer := 0; - constant CFG_MCTRL_SD64 : integer := 0; - constant CFG_MCTRL_PAGE : integer := 0 + 0; --- DDRMP controller - constant CFG_DDRMP_EN : integer := 0; - constant CFG_DDRMP_EN2P : integer := 0; - constant CFG_DDRMP_NCS : integer := 1; - constant CFG_DDRMP_NDEV : integer := 2; - constant CFG_DDRMP_NBITS : integer := 16; - constant CFG_DDRMP_MBITS : integer := 64; - constant CFG_DDRMP_PERIOD : integer := 1000/100; --- AHB ROM - constant CFG_AHBROMEN : integer := 0; - constant CFG_AHBROPIP : integer := 0; - constant CFG_AHBRODDR : integer := 16#000#; - constant CFG_ROMADDR : integer := 16#000#; - constant CFG_ROMMASK : integer := 16#E00# + 16#000#; --- AHB RAM - constant CFG_AHBRAMEN : integer := 0; - constant CFG_AHBRSZ : integer := 1; - constant CFG_AHBRADDR : integer := 16#A00#; --- Gaisler Ethernet core - constant CFG_GRETH : integer := 1; - constant CFG_GRETH1G : integer := 0; - constant CFG_ETH_FIFO : integer := 32; --- ATA interface - constant CFG_ATA : integer := 0; - constant CFG_ATAIO : integer := 16#0#; - constant CFG_ATAIRQ : integer := 0; - constant CFG_ATADMA : integer := 0; - constant CFG_ATAFIFO : integer := 8; --- UART 1 - constant CFG_UART1_ENABLE : integer := 1; - constant CFG_UART1_FIFO : integer := 1; --- LEON3 interrupt controller - constant CFG_IRQ3_ENABLE : integer := 1; - constant CFG_IRQ3_NSEC : integer := 0; --- Modular timer - constant CFG_GPT_ENABLE : integer := 1; - constant CFG_GPT_NTIM : integer := (2); - constant CFG_GPT_SW : integer := (8); - constant CFG_GPT_TW : integer := (32); - constant CFG_GPT_IRQ : integer := (8); - constant CFG_GPT_SEPIRQ : integer := 1; - constant CFG_GPT_WDOGEN : integer := 0; - constant CFG_GPT_WDOG : integer := 16#0#; --- VGA and PS2/ interface - constant CFG_KBD_ENABLE : integer := 0; - constant CFG_VGA_ENABLE : integer := 1; - constant CFG_SVGA_ENABLE : integer := 0; --- GRLIB debugging - constant CFG_DUART : integer := 0; -end; diff --git a/designs/leon3-ge-hpe-mini-lattice/config.vhd.h b/designs/leon3-ge-hpe-mini-lattice/config.vhd.h deleted file mode 100644 index 0331827a..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/config.vhd.h +++ /dev/null @@ -1,176 +0,0 @@ --- Technology and synthesis options - constant CFG_FABTECH : integer := CONFIG_SYN_TECH; - constant CFG_MEMTECH : integer := CFG_RAM_TECH; - constant CFG_PADTECH : integer := CFG_PAD_TECH; - constant CFG_NOASYNC : integer := CONFIG_SYN_NO_ASYNC; - constant CFG_SCAN : integer := CONFIG_SYN_SCAN; - --- Clock generator - constant CFG_CLKTECH : integer := CFG_CLK_TECH; - constant CFG_CLKMUL : integer := CONFIG_CLK_MUL; - constant CFG_CLKDIV : integer := CONFIG_CLK_DIV; - constant CFG_OCLKDIV : integer := CONFIG_OCLK_DIV; - constant CFG_OCLKBDIV : integer := CONFIG_OCLKB_DIV; - constant CFG_OCLKCDIV : integer := CONFIG_OCLKC_DIV; - constant CFG_PCIDLL : integer := CONFIG_PCI_CLKDLL; - constant CFG_PCISYSCLK: integer := CONFIG_PCI_SYSCLK; - constant CFG_CLK_NOFB : integer := CONFIG_CLK_NOFB; - --- LEON3 processor core - constant CFG_LEON3 : integer := CONFIG_LEON3; - constant CFG_NCPU : integer := CONFIG_PROC_NUM; - constant CFG_NWIN : integer := CONFIG_IU_NWINDOWS; - constant CFG_V8 : integer := CFG_IU_V8 + 4*CFG_IU_MUL_STRUCT; - constant CFG_MAC : integer := CONFIG_IU_MUL_MAC; - constant CFG_BP : integer := CONFIG_IU_BP; - constant CFG_SVT : integer := CONFIG_IU_SVT; - constant CFG_RSTADDR : integer := 16#CONFIG_IU_RSTADDR#; - constant CFG_LDDEL : integer := CONFIG_IU_LDELAY; - constant CFG_NOTAG : integer := CONFIG_NOTAG; - constant CFG_NWP : integer := CONFIG_IU_WATCHPOINTS; - constant CFG_PWD : integer := CONFIG_PWD*2; - constant CFG_FPU : integer := CONFIG_FPU + 16*CONFIG_FPU_NETLIST + 32*CONFIG_FPU_GRFPU_SHARED; - constant CFG_GRFPUSH : integer := CONFIG_FPU_GRFPU_SHARED; - constant CFG_ICEN : integer := CONFIG_ICACHE_ENABLE; - constant CFG_ISETS : integer := CFG_IU_ISETS; - constant CFG_ISETSZ : integer := CFG_ICACHE_SZ; - constant CFG_ILINE : integer := CFG_ILINE_SZ; - constant CFG_IREPL : integer := CFG_ICACHE_ALGORND; - constant CFG_ILOCK : integer := CONFIG_ICACHE_LOCK; - constant CFG_ILRAMEN : integer := CONFIG_ICACHE_LRAM; - constant CFG_ILRAMADDR: integer := 16#CONFIG_ICACHE_LRSTART#; - constant CFG_ILRAMSZ : integer := CFG_ILRAM_SIZE; - constant CFG_DCEN : integer := CONFIG_DCACHE_ENABLE; - constant CFG_DSETS : integer := CFG_IU_DSETS; - constant CFG_DSETSZ : integer := CFG_DCACHE_SZ; - constant CFG_DLINE : integer := CFG_DLINE_SZ; - constant CFG_DREPL : integer := CFG_DCACHE_ALGORND; - constant CFG_DLOCK : integer := CONFIG_DCACHE_LOCK; - constant CFG_DSNOOP : integer := CONFIG_DCACHE_SNOOP + CONFIG_DCACHE_SNOOP_FAST + 4*CONFIG_DCACHE_SNOOP_SEPTAG; - constant CFG_DFIXED : integer := 16#CONFIG_CACHE_FIXED#; - constant CFG_DLRAMEN : integer := CONFIG_DCACHE_LRAM; - constant CFG_DLRAMADDR: integer := 16#CONFIG_DCACHE_LRSTART#; - constant CFG_DLRAMSZ : integer := CFG_DLRAM_SIZE; - constant CFG_MMUEN : integer := CONFIG_MMUEN; - constant CFG_ITLBNUM : integer := CONFIG_ITLBNUM; - constant CFG_DTLBNUM : integer := CONFIG_DTLBNUM; - constant CFG_TLB_TYPE : integer := CONFIG_TLB_TYPE + CFG_MMU_FASTWB*2; - constant CFG_TLB_REP : integer := CONFIG_TLB_REP; - constant CFG_MMU_PAGE : integer := CONFIG_MMU_PAGE; - constant CFG_DSU : integer := CONFIG_DSU_ENABLE; - constant CFG_ITBSZ : integer := CFG_DSU_ITB; - constant CFG_ATBSZ : integer := CFG_DSU_ATB; - constant CFG_LEON3FT_EN : integer := CONFIG_LEON3FT_EN; - constant CFG_IUFT_EN : integer := CONFIG_IUFT_EN; - constant CFG_FPUFT_EN : integer := CONFIG_FPUFT; - constant CFG_RF_ERRINJ : integer := CONFIG_RF_ERRINJ; - constant CFG_CACHE_FT_EN : integer := CONFIG_CACHE_FT_EN; - constant CFG_CACHE_ERRINJ : integer := CONFIG_CACHE_ERRINJ; - constant CFG_LEON3_NETLIST: integer := CONFIG_LEON3_NETLIST; - constant CFG_DISAS : integer := CONFIG_IU_DISAS + CONFIG_IU_DISAS_NET; - constant CFG_PCLOW : integer := CFG_DEBUG_PC32; - --- AMBA settings - constant CFG_DEFMST : integer := CONFIG_AHB_DEFMST; - constant CFG_RROBIN : integer := CONFIG_AHB_RROBIN; - constant CFG_SPLIT : integer := CONFIG_AHB_SPLIT; - constant CFG_FPNPEN : integer := CONFIG_AHB_FPNPEN; - constant CFG_AHBIO : integer := 16#CONFIG_AHB_IOADDR#; - constant CFG_APBADDR : integer := 16#CONFIG_APB_HADDR#; - constant CFG_AHB_MON : integer := CONFIG_AHB_MON; - constant CFG_AHB_MONERR : integer := CONFIG_AHB_MONERR; - constant CFG_AHB_MONWAR : integer := CONFIG_AHB_MONWAR; - constant CFG_AHB_DTRACE : integer := CONFIG_AHB_DTRACE; - --- DSU UART - constant CFG_AHB_UART : integer := CONFIG_DSU_UART; - --- Ethernet DSU - constant CFG_DSU_ETH : integer := CONFIG_DSU_ETH + CONFIG_DSU_ETH_PROG + CONFIG_DSU_ETH_DIS; - constant CFG_ETH_BUF : integer := CFG_DSU_ETHB; - constant CFG_ETH_IPM : integer := 16#CONFIG_DSU_IPMSB#; - constant CFG_ETH_IPL : integer := 16#CONFIG_DSU_IPLSB#; - constant CFG_ETH_ENM : integer := 16#CONFIG_DSU_ETHMSB#; - constant CFG_ETH_ENL : integer := 16#CONFIG_DSU_ETHLSB#; - --- PROM/SRAM controller - constant CFG_SRCTRL : integer := CONFIG_SRCTRL; - constant CFG_SRCTRL_PROMWS : integer := CONFIG_SRCTRL_PROMWS; - constant CFG_SRCTRL_RAMWS : integer := CONFIG_SRCTRL_RAMWS; - constant CFG_SRCTRL_IOWS : integer := CONFIG_SRCTRL_IOWS; - constant CFG_SRCTRL_RMW : integer := CONFIG_SRCTRL_RMW; - constant CFG_SRCTRL_8BIT : integer := CONFIG_SRCTRL_8BIT; - - constant CFG_SRCTRL_SRBANKS : integer := CFG_SR_CTRL_SRBANKS; - constant CFG_SRCTRL_BANKSZ : integer := CFG_SR_CTRL_BANKSZ; - constant CFG_SRCTRL_ROMASEL : integer := CONFIG_SRCTRL_ROMASEL; --- LEON2 memory controller - constant CFG_MCTRL_LEON2 : integer := CONFIG_MCTRL_LEON2; - constant CFG_MCTRL_RAM8BIT : integer := CONFIG_MCTRL_8BIT; - constant CFG_MCTRL_RAM16BIT : integer := CONFIG_MCTRL_16BIT; - constant CFG_MCTRL_5CS : integer := CONFIG_MCTRL_5CS; - constant CFG_MCTRL_SDEN : integer := CONFIG_MCTRL_SDRAM; - constant CFG_MCTRL_SEPBUS : integer := CONFIG_MCTRL_SDRAM_SEPBUS; - constant CFG_MCTRL_INVCLK : integer := CONFIG_MCTRL_SDRAM_INVCLK; - constant CFG_MCTRL_SD64 : integer := CONFIG_MCTRL_SDRAM_BUS64; - constant CFG_MCTRL_PAGE : integer := CONFIG_MCTRL_PAGE + CONFIG_MCTRL_PROGPAGE; - --- DDRMP controller - constant CFG_DDRMP_EN : integer := CONFIG_DDRMP; - constant CFG_DDRMP_EN2P : integer := CONFIG_DDRMP_EN2P; - constant CFG_DDRMP_NCS : integer := CONFIG_DDRMP_NCS; - constant CFG_DDRMP_NDEV : integer := CONFIG_DDRMP_NDEV; - constant CFG_DDRMP_NBITS : integer := CONFIG_DDRMP_NBITS; - constant CFG_DDRMP_MBITS : integer := CONFIG_DDRMP_MBITS; - constant CFG_DDRMP_PERIOD : integer := 1000/CONFIG_DDRMP_FREQ; - --- AHB ROM - constant CFG_AHBROMEN : integer := CONFIG_AHBROM_ENABLE; - constant CFG_AHBROPIP : integer := CONFIG_AHBROM_PIPE; - constant CFG_AHBRODDR : integer := 16#CONFIG_AHBROM_START#; - constant CFG_ROMADDR : integer := 16#CONFIG_ROM_START#; - constant CFG_ROMMASK : integer := 16#E00# + 16#CONFIG_ROM_START#; - --- AHB RAM - constant CFG_AHBRAMEN : integer := CONFIG_AHBRAM_ENABLE; - constant CFG_AHBRSZ : integer := CFG_AHBRAMSZ; - constant CFG_AHBRADDR : integer := 16#CONFIG_AHBRAM_START#; - --- Gaisler Ethernet core - constant CFG_GRETH : integer := CONFIG_GRETH_ENABLE; - constant CFG_GRETH1G : integer := CONFIG_GRETH_GIGA; - constant CFG_ETH_FIFO : integer := CFG_GRETH_FIFO; - --- ATA interface - constant CFG_ATA : integer := CONFIG_ATA_ENABLE; - constant CFG_ATAIO : integer := 16#CONFIG_ATAIO#; - constant CFG_ATAIRQ : integer := CONFIG_ATAIRQ; - constant CFG_ATADMA : integer := CONFIG_ATA_MWDMA; - constant CFG_ATAFIFO : integer := CONFIG_ATA_FIFO; - --- UART 1 - constant CFG_UART1_ENABLE : integer := CONFIG_UART1_ENABLE; - constant CFG_UART1_FIFO : integer := CFG_UA1_FIFO; - --- LEON3 interrupt controller - constant CFG_IRQ3_ENABLE : integer := CONFIG_IRQ3_ENABLE; - constant CFG_IRQ3_NSEC : integer := CONFIG_IRQ3_NSEC; - --- Modular timer - constant CFG_GPT_ENABLE : integer := CONFIG_GPT_ENABLE; - constant CFG_GPT_NTIM : integer := CONFIG_GPT_NTIM; - constant CFG_GPT_SW : integer := CONFIG_GPT_SW; - constant CFG_GPT_TW : integer := CONFIG_GPT_TW; - constant CFG_GPT_IRQ : integer := CONFIG_GPT_IRQ; - constant CFG_GPT_SEPIRQ : integer := CONFIG_GPT_SEPIRQ; - constant CFG_GPT_WDOGEN : integer := CONFIG_GPT_WDOGEN; - constant CFG_GPT_WDOG : integer := 16#CONFIG_GPT_WDOG#; - --- VGA and PS2/ interface - constant CFG_KBD_ENABLE : integer := CONFIG_KBD_ENABLE; - constant CFG_VGA_ENABLE : integer := CONFIG_VGA_ENABLE; - constant CFG_SVGA_ENABLE : integer := CONFIG_SVGA_ENABLE; - --- GRLIB debugging - constant CFG_DUART : integer := CONFIG_DEBUG_UART; - diff --git a/designs/leon3-ge-hpe-mini-lattice/config.vhd.in b/designs/leon3-ge-hpe-mini-lattice/config.vhd.in deleted file mode 100644 index 70ef3ddb..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/config.vhd.in +++ /dev/null @@ -1,57 +0,0 @@ -#include "config.h" -#include "tkconfig.h" -#include "leon3mini.h" - ------------------------------------------------------------------------------ --- LEON3 Demonstration design test bench configuration --- Copyright (C) 2009 Aeroflex Gaisler ------------------------------------------------------------------------------- - - -library techmap; -use techmap.gencomp.all; - -package config is - - ----------------------------------------------------------------------------- - -- GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- - - -- boot prom source - -- 0: external - -- 1: internal - constant CFG_BOOTOPT : integer := CONFIG_BOOTOPT; - - -- HPE board version - -- 1: version 1 - -- /= 1: version 2 - constant CFG_HPEVER : integer := CONFIG_HPEVER; - - -- provide ahb signals for an external slave - -- slave number can be defined below - -- numbers 8 to 15 can be used safely, numbers below - -- might be used by other LEON cores depending on configuration - constant CFG_EXTAHB : integer := CONFIG_EXTAHB_ENABLE; - - constant CFG_EXTAHB_ADDR : integer := 16#CONFIG_EXTAHB_BASE#; - - -- interrupt number the external slave is assigned to - -- unused at the moment - constant CFG_EXTAHB_IRQ : integer := CONFIG_EXTAHB_INT; - - -- AHB slave number the external slave is assigned to - constant CFG_EXTAHB_NR : integer := 8; - - -- index number the external slave is assigned to - constant CFG_EXTAHB_ID : integer := 8; - - -- shift sdram address to bits 12+ - constant CFG_SDSHIFT : integer := CONFIG_SDRAM_SHIFT; - - ----------------------------------------------------------------------------- - -- END GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- - -#include "config.vhd.h" - -end; diff --git a/designs/leon3-ge-hpe-mini-lattice/defconfig b/designs/leon3-ge-hpe-mini-lattice/defconfig deleted file mode 100755 index 852d3dc0..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/defconfig +++ /dev/null @@ -1,252 +0,0 @@ -# -# Automatically generated make config: don't edit -# - -# -# Synthesis -# -# CONFIG_SYN_INFERRED is not set -# CONFIG_SYN_ALTERA is not set -# CONFIG_SYN_AXCEL is not set -# CONFIG_SYN_PROASIC is not set -# CONFIG_SYN_PROASICPLUS is not set -# CONFIG_SYN_PROASIC3 is not set -# CONFIG_SYN_ATC18 is not set -# CONFIG_SYN_IHP25 is not set -CONFIG_SYN_LATTICE=y -# CONFIG_SYN_RH_LIB18T is not set -# CONFIG_SYN_RHUMC is not set -# CONFIG_SYN_SPARTAN2 is not set -# CONFIG_SYN_SPARTAN3 is not set -# CONFIG_SYN_VIRTEX is not set -# CONFIG_SYN_VIRTEXE is not set -# CONFIG_SYN_VIRTEX2 is not set -# CONFIG_SYN_VIRTEX4 is not set -# CONFIG_SYN_INFER_RAM is not set -# CONFIG_SYN_INFER_PADS is not set -# CONFIG_SYN_NO_ASYNC is not set - -# -# Clock generation -# -# CONFIG_CLK_INFERRED is not set -# CONFIG_CLK_HCLKBUF is not set -# CONFIG_CLK_ALTDLL is not set -CONFIG_CLK_LATDLL=y -# CONFIG_CLK_LIB18T is not set -# CONFIG_CLK_CLKDLL is not set -# CONFIG_CLK_DCM is not set -CONFIG_CLK_MUL=1 -CONFIG_CLK_DIV=1 -# CONFIG_PCI_SYSCLK is not set -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 - -# -# Processor -# - -# -# Integer unit -# -CONFIG_IU_NWINDOWS=8 -# CONFIG_IU_V8MULDIV is not set -# CONFIG_IU_SVT is not set -CONFIG_IU_LDELAY=2 -CONFIG_IU_WATCHPOINTS=0 -# CONFIG_PWD is not set -CONFIG_IU_RSTADDR=00000 - -# -# Floating-point unit -# -# CONFIG_FPU_ENABLE is not set - -# -# Cache system -# -CONFIG_ICACHE_ENABLE=y -CONFIG_ICACHE_ASSO1=y -# CONFIG_ICACHE_ASSO2 is not set -# CONFIG_ICACHE_ASSO3 is not set -# CONFIG_ICACHE_ASSO4 is not set -# CONFIG_ICACHE_SZ1 is not set -# CONFIG_ICACHE_SZ2 is not set -# CONFIG_ICACHE_SZ4 is not set -CONFIG_ICACHE_SZ8=y -# CONFIG_ICACHE_SZ16 is not set -# CONFIG_ICACHE_SZ32 is not set -# CONFIG_ICACHE_SZ64 is not set -# CONFIG_ICACHE_SZ128 is not set -# CONFIG_ICACHE_SZ256 is not set -# CONFIG_ICACHE_LZ16 is not set -CONFIG_ICACHE_LZ32=y -CONFIG_DCACHE_ENABLE=y -CONFIG_DCACHE_ASSO1=y -# CONFIG_DCACHE_ASSO2 is not set -# CONFIG_DCACHE_ASSO3 is not set -# CONFIG_DCACHE_ASSO4 is not set -# CONFIG_DCACHE_SZ1 is not set -# CONFIG_DCACHE_SZ2 is not set -CONFIG_DCACHE_SZ4=y -# CONFIG_DCACHE_SZ8 is not set -# CONFIG_DCACHE_SZ16 is not set -# CONFIG_DCACHE_SZ32 is not set -# CONFIG_DCACHE_SZ64 is not set -# CONFIG_DCACHE_SZ128 is not set -# CONFIG_DCACHE_SZ256 is not set -CONFIG_DCACHE_LZ16=y -# CONFIG_DCACHE_LZ32 is not set -CONFIG_DCACHE_SNOOP=y -# CONFIG_DCACHE_SNOOP_FAST is not set -CONFIG_CACHE_FIXED=0 - -# -# MMU -# -CONFIG_MMU_ENABLE=y -# CONFIG_MMU_COMBINED is not set -CONFIG_MMU_SPLIT=y -CONFIG_MMU_REPARRAY=y -# CONFIG_MMU_REPINCREMENT is not set -# CONFIG_MMU_I2 is not set -# CONFIG_MMU_I4 is not set -CONFIG_MMU_I8=y -# CONFIG_MMU_I16 is not set -# CONFIG_MMU_I32 is not set -# CONFIG_MMU_D2 is not set -# CONFIG_MMU_D4 is not set -CONFIG_MMU_D8=y -# CONFIG_MMU_D16 is not set -# CONFIG_MMU_D32 is not set - -# -# Debug Support Unit -# -CONFIG_DSU_ENABLE=y -CONFIG_DSU_ITRACE=y -CONFIG_DSU_ITRACESZ1=y -# CONFIG_DSU_ITRACESZ2 is not set -# CONFIG_DSU_ITRACESZ4 is not set -# CONFIG_DSU_ITRACESZ8 is not set -# CONFIG_DSU_ITRACESZ16 is not set -CONFIG_DSU_ATRACE=y -CONFIG_DSU_ATRACESZ1=y -# CONFIG_DSU_ATRACESZ2 is not set -# CONFIG_DSU_ATRACESZ4 is not set -# CONFIG_DSU_ATRACESZ8 is not set -# CONFIG_DSU_ATRACESZ16 is not set - -# -# VHDL debug settings -# -# CONFIG_IU_DISAS is not set -# CONFIG_DEBUG_PC32 is not set - -# -# AMBA configuration -# -CONFIG_AHB_DEFMST=0 -CONFIG_AHB_RROBIN=y -# CONFIG_AHB_SPLIT is not set -CONFIG_AHB_IOADDR=FFF -CONFIG_APB_HADDR=800 - -# -# Debug Link -# -CONFIG_DSU_UART=y -CONFIG_DSU_ETH=y -# CONFIG_DSU_ETHSZ1 is not set -CONFIG_DSU_ETHSZ2=y -# CONFIG_DSU_ETHSZ4 is not set -# CONFIG_DSU_ETHSZ8 is not set -# CONFIG_DSU_ETHSZ16 is not set -CONFIG_DSU_IPMSB=C0A8 -CONFIG_DSU_IPLSB=0040 -CONFIG_DSU_ETHMSB=00007A -CONFIG_DSU_ETHLSB=CC0040 - -# -# Peripherals -# - -# -# Memory controllers -# - -# -# 8/32-bit PROM/SRAM controller -# -# CONFIG_SRCTRL is not set - -# -# Leon2 memory controller -# -CONFIG_MCTRL_LEON2=y -# CONFIG_MCTRL_8BIT is not set -# CONFIG_MCTRL_16BIT is not set -# CONFIG_MCTRL_5CS is not set -# CONFIG_MCTRL_SDRAM is not set - -# -# Multi-port DDR controller -# -CONFIG_DDRMP=y -CONFIG_DDRMP_NCS=1 -CONFIG_DDRMP_NDEV=2 -CONFIG_DDRMP_NBITS=16 -CONFIG_DDRMP_MBITS=256 - -# -# On-chip RAM/ROM -# -# CONFIG_AHBROM_ENABLE is not set -# CONFIG_AHBRAM_ENABLE is not set - -# -# Ethernet -# -CONFIG_GRETH_ENABLE=y -# CONFIG_GRETH_FIFO4 is not set -# CONFIG_GRETH_FIFO8 is not set -# CONFIG_GRETH_FIFO16 is not set -CONFIG_GRETH_FIFO32=y -# CONFIG_GRETH_FIFO64 is not set - -# -# ATA -# -CONFIG_ATA_ENABLE=y -CONFIG_ATAIO=A00 -CONFIG_ATAIRQ=10 - -# -# UARTs, timers and irq control -# -CONFIG_UART1_ENABLE=y -CONFIG_UA1_FIFO1=y -# CONFIG_UA1_FIFO2 is not set -# CONFIG_UA1_FIFO4 is not set -# CONFIG_UA1_FIFO8 is not set -# CONFIG_UA1_FIFO16 is not set -# CONFIG_UA1_FIFO32 is not set -CONFIG_IRQ3_ENABLE=y -CONFIG_GPT_ENABLE=y -CONFIG_GPT_NTIM=2 -CONFIG_GPT_SW=8 -CONFIG_GPT_TW=32 -CONFIG_GPT_IRQ=8 -CONFIG_GPT_SEPIRQ=y -# CONFIG_GPT_WDOGEN is not set - -# -# Keybord and VGA interface -# -# CONFIG_KBD_ENABLE is not set -# CONFIG_VGA_ENABLE is not set - -# -# VHDL Debugging -# -# CONFIG_DEBUG_UART is not set diff --git a/designs/leon3-ge-hpe-mini-lattice/leon3mini.h b/designs/leon3-ge-hpe-mini-lattice/leon3mini.h deleted file mode 100644 index 60343996..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/leon3mini.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef CONFIG_EXTAHB_ENABLE -#define CONFIG_EXTAHB_ENABLE 0 -#define CONFIG_EXTAHB_BASE A00 -#define CONFIG_EXTAHB_INT 6 -#endif - -#ifndef CONFIG_SDRAM_SHIFT -#define CONFIG_SDRAM_SHIFT 0 -#endif - -#ifdef CONFIG_BOOTOPT_INT -#define CONFIG_BOOTOPT 1 -#else -#define CONFIG_BOOTOPT 0 -#endif - -#ifdef CONFIG_HPEVER_1 -#define CONFIG_HPEVER 1 -#else -#define CONFIG_HPEVER 2 -#endif - diff --git a/designs/leon3-ge-hpe-mini-lattice/leon3mini.vhd b/designs/leon3-ge-hpe-mini-lattice/leon3mini.vhd deleted file mode 100644 index a6d333df..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/leon3mini.vhd +++ /dev/null @@ -1,794 +0,0 @@ ------------------------------------------------------------------------------- --- LEON3 Demonstration design --- Copyright (C) 2004 Jiri Gaisler, Gaisler Research --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------- --- modified by Thomas Ameseder, Gleichmann Electronics 2004, 2005 to --- support the use of an external AHB slave and different HPE board versions ------------------------------------------------------------------------------- --- further adapted from Hpe_compact to Hpe_mini (Feb. 2005) ------------------------------------------------------------------------------- - - -library ieee; -use ieee.std_logic_1164.all; -library grlib; -use grlib.amba.all; -use grlib.stdlib.all; -use grlib.devices.all; -library techmap; -use techmap.gencomp.all; -library gaisler; -use gaisler.memctrl.all; -use gaisler.ddrpkg.all; -use gaisler.leon3.all; -use gaisler.uart.all; -use gaisler.misc.all; -use gaisler.net.all; -library esa; -use esa.memoryctrl.all; -library gleichmann; -use gleichmann.hpi.all; -use gleichmann.multiio.all; -use gleichmann.dac.all; -use gleichmann.ge_clkgen.all; -library ec; -use ec.components.all; - -use work.config.all; - - -entity leon3mini is - generic ( - fabtech : integer := CFG_FABTECH; - memtech : integer := CFG_MEMTECH; - padtech : integer := CFG_PADTECH; - clktech : integer := CFG_CLKTECH; - disas : integer := CFG_DISAS; -- Enable disassembly to console - dbguart : integer := CFG_DUART; -- Print UART on console - pclow : integer := CFG_PCLOW; - ddrfreq : integer := 100000; -- frequency of ddr clock in kHz - cpufreq : integer := 50000; -- frequency of cpu/ahb clock in kHz - boardfreq : string := "25" -- frequency of ddr clock in MHz - ); - port ( - resetn : in std_ulogic; - resoutn : out std_logic; - clk : in std_ulogic; - - errorn : out std_ulogic; - address : out std_logic_vector(24 downto 2); - data : inout std_logic_vector(31 downto 0); - - ramsn : out std_ulogic; - rben : out std_logic_vector(3 downto 0); - - romsn : out std_ulogic; --- iosn : out std_ulogic; - oen : out std_ulogic; - -- read : out std_ulogic; - writen : out std_ulogic; - romwpn : out std_ulogic; - romrstn : out std_ulogic; - - -- ddr memory - ddr_clk0 : out std_logic; - ddr_clk0b : out std_logic; - ddr_clk_fb : in std_logic; - ddr_cke0 : out std_logic; - ddr_cs0b : out std_logic; - ddr_web : out std_ulogic; -- ddr write enable - ddr_rasb : out std_ulogic; -- ddr ras - ddr_casb : out std_ulogic; -- ddr cas - ddr_dm : out std_logic_vector (3 downto 0); -- ddr dm - ddr_dqs : inout std_logic_vector (3 downto 0); -- ddr dqs - ddr_ad : out std_logic_vector (12 downto 0); -- ddr address - ddr_ba : out std_logic_vector (1 downto 0); -- ddr bank address - ddr_dq : inout std_logic_vector (31 downto 0); -- ddr data - ddr_clk1 : out std_logic; -- ddr module 1 - ddr_clk1b : out std_logic; -- ddr module 1 - ddr_cke1 : out std_logic; -- ddr module 1 - ddr_cs1b : out std_logic; -- ddr module 1 - - -- debug support unit - -- dsuen : in std_ulogic; - dsubre : in std_ulogic; - -- dsuactn : out std_ulogic; - - -- UART for serial DCL/console I/O - serrx : in std_ulogic; - sertx : out std_ulogic; - - -- ethernet signals - emdio : inout std_logic; -- ethernet PHY interface - etx_clk : in std_ulogic; - erx_clk : in std_ulogic; - erxd : in std_logic_vector(3 downto 0); - erx_dv : in std_ulogic; - erx_er : in std_ulogic; - erx_col : in std_ulogic; - erx_crs : in std_ulogic; - etxd : out std_logic_vector(3 downto 0); - etx_en : out std_ulogic; - etx_er : out std_ulogic; - emdc : out std_ulogic; - --- sample_clock : out std_ulogic; - -------------------------------------------------------------------------------- --- HPI PORT -------------------------------------------------------------------------------- - hpiaddr : out std_logic_vector(1 downto 0); - hpidata : inout std_logic_vector(15 downto 0); - hpicsn : out std_ulogic; - hpiwrn : out std_ulogic; - hpirdn : out std_ulogic; - hpiint : in std_ulogic; - - -- equality flag for R/W data --- dbg_equal : out std_ulogic; -------------------------------------------------------------------------------- - - ------------------------------------------------------------------------------------- - -- IO SECTION - ------------------------------------------------------------------------------------- - dsw : in std_logic_vector(3 downto 0); - led : out std_logic_vector(7 downto 0); -- 8 leds - - sevensegment : out std_logic_vector(9 downto 0); -- 7-segments and 2 strobes - - lcd_enable : out std_logic; - lcd_regsel : out std_logic; - lcd_rw : out std_logic; - - -- keyboard - tst_col : out std_logic_vector(2 downto 0); -- column outputs - tst_row : in std_logic_vector(3 downto 0); -- row inputs - - -- expansion connector signals - exp_datao : out std_logic_vector(19 downto 0); - exp_datai : in std_logic_vector(19 downto 0); - - -- audio codec - codec_mode : out std_ulogic; - codec_mclk : out std_ulogic; - codec_sclk : out std_ulogic; - codec_cs : out std_ulogic; - codec_sdin : out std_ulogic; - codec_din : out std_ulogic; -- I2S format serial data input to the sigma-delta stereo DAC - codec_bclk : out std_ulogic; -- I2S serial-bit clock --- codec_dout : in std_ulogic; -- I2S format serial data output from the sigma-delta stereo ADC - codec_lrcin : out std_ulogic; -- I2S DAC-word clock signal - codec_lrcout : out std_ulogic; -- I2S ADC-word clock signal - - dac : out std_ulogic; - vga_vsync : out std_ulogic; - vga_hsync : out std_ulogic; - vga_rd : out std_logic_vector(1 downto 0); - vga_gr : out std_logic_vector(1 downto 0); - vga_bl : out std_logic_vector(1 downto 0) - - ); -end; - -architecture rtl of leon3mini is - - - component clkgen_lattice - generic ( - clk_mul : string := "2"; - clk_div : string := "1"; - freq : string := "25"; -- clock frequency in MHz - ddrclk_mul : string := "4"; - ddrclk_div : string := "1"); - port ( - clkin : in std_logic; - clk0 : out std_logic; -- main clock - clk180 : out std_logic; -- main clock phase 180 - clk270 : out std_logic; -- main clock phase 270 - ddrclk : out std_logic; - ddrclkb : out std_logic; - clkm : out std_logic; - cgi : in clkgen_in_type; - cgo : out clkgen_out_type); - end component; - - - constant blength : integer := 12; - constant fifodepth : integer := 8; - constant CFG_MULTIIO : integer := 0; - constant CFG_AHB2HPI : integer := 0; - constant CFG_DAC_AHB : integer := 0; - - signal vcc, gnd : std_logic_vector(4 downto 0); - signal memi : memory_in_type; - signal memo : memory_out_type; - signal wpo : wprot_out_type; - signal sdi : sdctrl_in_type; - signal sdo : sdram_out_type; - signal sdo2, sdo3 : sdctrl_out_type; - - signal apbi : apb_slv_in_type; - signal apbo : apb_slv_out_vector := (others => apb_none); - signal ahbsi : ahb_slv_in_type; - signal ahbso : ahb_slv_out_vector := (others => ahbs_none); - signal ahbmi : ahb_mst_in_type; - signal ahbmo : ahb_mst_out_vector := (others => ahbm_none); - - signal ddrclk0, ddrclk90, ddrclk180, ddrclk270, ddrclk, ddrclkb : std_ulogic; - signal clkm, rstn, sdclkl : std_ulogic; - signal cgi : clkgen_in_type; - signal cgo : clkgen_out_type; - signal u1i, dui : uart_in_type; - signal u1o, duo : uart_out_type; - - signal irqi : irq_in_vector(0 to CFG_NCPU-1); - signal irqo : irq_out_vector(0 to CFG_NCPU-1); - - signal dbgi : l3_debug_in_vector(0 to CFG_NCPU-1); - signal dbgo : l3_debug_out_vector(0 to CFG_NCPU-1); - - signal dsui : dsu_in_type; - signal dsuo : dsu_out_type; - - signal ethi, ethi1, ethi2 : eth_in_type; - signal etho, etho1, etho2 : eth_out_type; - - signal gpti : gptimer_in_type; - - --- Adaptions for HPE Compact - --- signal dsubre : std_logic; - signal dsuact : std_logic; - signal oen_ctrl : std_logic; - - signal shortcut : std_logic; - signal rx : std_logic; - signal tx : std_logic; - signal duart, ldsuen : std_logic; - signal rsertx, rserrx, rdsuen : std_logic; - - -- ram write enable, not needed on the port - signal rwen : std_logic_vector(3 downto 0); - - signal rxd1 : std_logic; - signal txd1 : std_logic; - signal dsutx : std_ulogic; -- DSU tx data - signal dsurx : std_ulogic; -- DSU rx data - - --------------------------------------------------------------------------------------- - -- HPI SIGNALS - --------------------------------------------------------------------------------------- --- signal hpiaddr : std_logic_vector(1 downto 0); --- signal hpidata : std_logic_vector(15 downto 0); --- signal hpicsn : std_ulogic; --- signal hpiwrn : std_ulogic; --- signal hpirdn : std_ulogic; --- signal hpiint : std_ulogic; - - signal hpiwriten : std_ulogic; -- intermediate signal - signal hpirdata : std_logic_vector(15 downto 0); - signal hpiwdata : std_logic_vector(15 downto 0); - signal drive_bus : std_ulogic; - - signal dbg_rdata : std_logic_vector(15 downto 0); - signal dbg_wdata : std_logic_vector(15 downto 0); - --------------------------------------------------------------------------------------- - - signal vgao : apbvga_out_type; - signal ddsi : ddrmem_in_type; - signal ddso : ddrmem_out_type; - - constant modbanks : integer := CFG_DDRMP_NCS; -- Allowed: 1,2 (banks on module) - constant numchips : integer := CFG_DDRMP_NDEV; -- Allowed: 1, 2, 4, 8, 16 - constant chipbits : integer := CFG_DDRMP_NBITS; -- Allowed: 4, 8, 16 - constant chipsize : integer := CFG_DDRMP_MBITS; -- Allowed: 64, 128, 256, 512, 1024 (Mbit) - --- attribute syn_useioff : boolean; --- attribute syn_useioff of rtl : architecture is false; - - --------------------------------------------------------------------------------------- - -- IO SECTION - --------------------------------------------------------------------------------------- - - signal mioi : MultiIO_in_type; - signal mioo : MultiIO_out_type; - - signal dsuactn : std_ulogic; --- signal errorn : std_ulogic; - - -- synplify attribute to flatten netlist - attribute syn_netlist_hierarchy : boolean; - attribute syn_netlist_hierarchy of rtl : architecture is false; - -begin - - romwpn <= '1'; - romrstn <= rstn; - ----------------------------------------------------------------------- ---- Reset and Clock generation ------------------------------------- ----------------------------------------------------------------------- - - vcc <= (others => '1'); gnd <= (others => '0'); - cgi.pllctrl <= "00"; cgi.pllrst <= not resetn; - ddrclk90 <= '0'; sdclkl <= clkm; - - -- do not change the generics (ddr requirements) - clkgen0 : clkgen_lattice -- clock generator - generic map (freq => boardfreq, - clk_mul => "1", - clk_div => "1", - ddrclk_mul => "4", - ddrclk_div => "1") -- 25 MHz cpu clock and 100 MHz DDR clock - port map (clkin => clk, clkm => clkm, clk0 => ddrclk0, clk180 => ddrclk180, - clk270 => ddrclk270, ddrclk => ddrclk, ddrclkb => ddrclkb, - cgi => cgi, cgo => cgo); - - ddrclk_pad : outpad generic map (tech => padtech, level => sstl2_i) - port map (ddr_clk0, ddrclk); - ddrclkn_pad : outpad generic map (tech => padtech, level => sstl2_i) - port map (ddr_clk0b, ddrclkb); - - rst0 : rstgen port map (resetn, clkm, cgo.clklock, rstn); - ----------------------------------------------------------------------- ---- AHB CONTROLLER -------------------------------------------------- ----------------------------------------------------------------------- - - ahb0 : ahbctrl -- AHB arbiter/multiplexer - generic map (defmast => CFG_DEFMST, split => CFG_SPLIT, - rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO, - ioen => 1, nahbm => 4, nahbs => 8) - port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso); - ----------------------------------------------------------------------- ---- LEON3 processor and DSU ----------------------------------------- ----------------------------------------------------------------------- - - l3 : if CFG_LEON3 = 1 generate - cpu : for i in 0 to CFG_NCPU-1 generate - u0 : leon3s -- LEON3 processor - generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, - 0, CFG_MAC, pclow, 0, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, - CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, - CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, - CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, - CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, - CFG_NCPU-1) - port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, - irqi(i), irqo(i), dbgi(i), dbgo(i)); - end generate; - errorn_pad : odpad generic map (tech => padtech) port map (errorn, dbgo(0).error); - - dsugen : if CFG_DSU = 1 generate - dsu0 : dsu3 -- LEON3 Debug Support Unit - generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#, - ncpu => CFG_NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ) - port map (rstn, clkm, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo); - -- dsuen_pad : inpad generic map (tech => padtech) port map (dsuen, dsui.enable); - dsui.enable <= '1'; - -- **** tame: do not use inversion - dsubre_pad : inpad generic map (tech => padtech) port map (dsubre, dsui.break); - dsuact_pad : outpad generic map (tech => padtech) port map (dsuact, dsuo.active); - end generate; - end generate; - nodsu : if CFG_DSU = 0 generate - ahbso(2) <= ahbs_none; dsuo.tstop <= '0'; dsuo.active <= '0'; - end generate; - - dcomgen : if CFG_AHB_UART = 1 generate - dcom0 : ahbuart -- Debug UART - generic map (hindex => CFG_NCPU, pindex => 4, paddr => 7) - port map (rstn, clkm, dui, duo, apbi, apbo(4), ahbmi, ahbmo(CFG_NCPU)); - dsurx_pad : inpad generic map (tech => padtech) port map (dsurx, dui.rxd); - dsutx_pad : outpad generic map (tech => padtech) port map (dsutx, duo.txd); - end generate; - nouah : if CFG_AHB_UART = 0 generate apbo(4) <= apb_none; end generate; - ----------------------------------------------------------------------- ---- Memory controllers ---------------------------------------------- ----------------------------------------------------------------------- - - mg1 : if CFG_SRCTRL = 1 generate -- 32-bit PROM/SRAM controller - sr0 : srctrl generic map (hindex => 5, ramws => CFG_SRCTRL_RAMWS, - romws => CFG_SRCTRL_PROMWS, ramaddr => 16#400#, rmw => 1) - port map (rstn, clkm, ahbsi, ahbso(5), memi, memo, sdo3); - apbo(0) <= apb_none; - end generate; - - mg2 : if CFG_MCTRL_LEON2 = 1 generate -- LEON2 memory controller - sr1 : mctrl generic map (hindex => 5, pindex => 0, - paddr => 0, srbanks => 1, ramaddr => 16#600#, sden => 0) - port map (rstn, clkm, memi, memo, ahbsi, ahbso(5), apbi, apbo(0), wpo, sdo); - end generate; - - memi.brdyn <= '1'; memi.bexcn <= '1'; - memi.writen <= '1'; memi.wrn <= "1111"; memi.bwidth <= "10"; - - mg0 : if (CFG_MCTRL_LEON2 = 0) and (CFG_SRCTRL = 0) generate - apbo(0) <= apb_none; ahbso(0) <= ahbs_none; - rams_pad : outpad generic map (tech => padtech) - port map (ramsn, vcc(0)); - roms_pad : outpad generic map (tech => padtech) - port map (romsn, vcc(0)); - end generate; - - mgpads : if not ((CFG_MCTRL_LEON2 = 0) and (CFG_SRCTRL = 0)) generate - addr_pad : outpadv generic map (width => 23, tech => padtech) - port map (address, memo.address(24 downto 2)); - rams_pad : outpad generic map (tech => padtech) - port map (ramsn, memo.ramsn(0)); - roms_pad : outpad generic map (tech => padtech) - port map (romsn, memo.romsn(0)); - oen_pad : outpad generic map (tech => padtech) - port map (oen, memo.oen); - rwen_pad : outpadv generic map (width => 4, tech => padtech) - port map (rwen, memo.wrn); - rben_pad : outpadv generic map (width => 4, tech => padtech) - port map (rben, memo.mben); --- roen_pad : outpad generic map (tech => padtech) --- port map (ramoen, memo.ramoen(0)); - wri_pad : outpad generic map (tech => padtech) - port map (writen, memo.writen); - -- read_pad : outpad generic map (tech => padtech) - -- port map (read, memo.read); - -- iosn_pad : outpad generic map (tech => padtech) - -- port map (iosn, memo.iosn); - bdr : for i in 0 to 3 generate - data_pad : iopadv generic map (tech => padtech, width => 8) - port map (data(31-i*8 downto 24-i*8), memo.data(31-i*8 downto 24-i*8), - memo.bdrive(i), memi.data(31-i*8 downto 24-i*8)); - end generate; - end generate; - ----------------------------------------------------------------------- ---- DDR memory controller ------------------------------------------- ----------------------------------------------------------------------- - - -- not tested/working at the moment - - ddr0 : if CFG_DDRMP_EN = 1 generate - ddrc : ddrctrl - generic map( - hindex1 => 0, haddr1 => 16#600#, hmask1 => 16#FC0#, - hindex2 => 7, haddr2 => 16#D00#, hmask2 => 16#FC0#, - pindex => 8, paddr => 8, numahb => 1, - ahb1sepclk => 1, ahb2sepclk => 1, modbanks => modbanks, - numchips => numchips, chipbits => chipbits, chipsize => chipsize, - plldelay => 1, tech => fabtech, clkperiod => (1000000/ddrfreq)) - port map(rst => rstn, clk0 => ddrclk0, clk90 => ddrclk90, - clk180 => ddrclk180, clk270 => ddrclk270, hclk1 => clkm, hclk2 => clkm, - pclk => clkm, ahb1si => ahbsi, ahb1so => ahbso(0), ahb2si => ahbsi, - ahb2so => open, apbsi => apbi, apbso => apbo(8), ddsi => ddsi, - ddso => ddso); - - -- Outpads - ddr_cke_pad : outpad generic map (tech => padtech, level => sstl2_i) port map (ddr_cke0, ddsi.cke); - ddr_csb_pad : outpad generic map (tech => padtech, level => sstl2_i) port map (ddr_cs0b, ddsi.cs(0)); - ddr_web_pad : outpad generic map (tech => padtech, level => sstl2_i) port map (ddr_web, ddsi.control(0)); - ddr_casb_pad : outpad generic map (tech => padtech, level => sstl2_i) port map (ddr_casb, ddsi.control(1)); - ddr_rasb_pad : outpad generic map (tech => padtech, level => sstl2_i) port map (ddr_rasb, ddsi.control(2)); - ddr_dm_pad : outpadv generic map (tech => padtech, level => sstl2_i, width => 4) port map (ddr_dm, ddsi.dm(3 downto 0)); - ddr_ad_pad : outpadv generic map (tech => padtech, level => sstl2_i, width => 13) port map (ddr_ad, ddsi.adr(12 downto 0)); - ddr_ba_pad : outpadv generic map (tech => padtech, level => sstl2_i, width => 2) port map (ddr_ba, ddsi.ba); - - -- InOut-pads - - ddr_dq_pad : for i in 0 to 31 generate - dq_pad : iopad generic map (tech => padtech, level => sstl2_ii) - port map (pad => ddr_dq(i), i => ddsi.dq(i), en => ddsi.dq_oe(i), o => ddso.dq(i)); - end generate; - - - ddr_dqs_pad : for i in 0 to 3 generate - dqs_pad : iopad generic map (tech => padtech, level => sstl2_ii) - port map (pad => ddr_dqs(i), i => ddsi.dqs(i), en => ddsi.dqs_oe(i), o => ddso.dqs(i)); - end generate; - - -- ddr module 1 - ddr_clk1 <= '0'; ddr_clk1b <= '0'; ddr_cke1 <= '0'; ddr_cs1b <= '1'; - end generate; - ----------------------------------------------------------------------- ---- APB Bridge and various periherals ------------------------------- ----------------------------------------------------------------------- - - apb0 : apbctrl -- AHB/APB bridge - generic map (hindex => 1, haddr => CFG_APBADDR) - port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo); - - ua1 : if CFG_UART1_ENABLE /= 0 generate - uart1 : apbuart -- UART 1 - generic map (pindex => 1, paddr => 1, pirq => 2, console => dbguart, - fifosize => CFG_UART1_FIFO) - port map (rstn, clkm, apbi, apbo(1), u1i, u1o); - u1i.rxd <= rxd1; u1i.ctsn <= '0'; u1i.extclk <= '0'; txd1 <= u1o.txd; - end generate; - noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate; - - irqctrl : if CFG_IRQ3_ENABLE /= 0 generate - irqctrl0 : irqmp -- interrupt controller - generic map (pindex => 2, paddr => 2, ncpu => CFG_NCPU) - port map (rstn, clkm, apbi, apbo(2), irqo, irqi); - end generate; - irq3 : if CFG_IRQ3_ENABLE = 0 generate - x : for i in 0 to CFG_NCPU-1 generate - irqi(i).irl <= "0000"; - end generate; - apbo(2) <= apb_none; - end generate; - - gpt : if CFG_GPT_ENABLE /= 0 generate - timer0 : gptimer -- timer unit - generic map (pindex => 3, paddr => 3, pirq => CFG_GPT_IRQ, - sepirq => CFG_GPT_SEPIRQ, sbits => CFG_GPT_SW, ntimers => CFG_GPT_NTIM, - nbits => CFG_GPT_TW) - port map (rstn, clkm, apbi, apbo(3), gpti, open); - gpti.dhalt <= dsuo.tstop; gpti.extclk <= '0'; - end generate; - notim : if CFG_GPT_ENABLE = 0 generate apbo(3) <= apb_none; end generate; - - vga : if CFG_VGA_ENABLE /= 0 generate - vga0 : apbvga generic map(memtech => memtech, pindex => 5, paddr => 5) - port map(rstn, clkm, clk, apbi, apbo(5), vgao); - end generate; - novga : if CFG_VGA_ENABLE = 0 generate apbo(5) <= apb_none; vgao <= vgao_none; end generate; - vert_sync_pad : outpad generic map (tech => padtech) - port map (vga_vsync, vgao.vsync); - horiz_sync_pad : outpad generic map (tech => padtech) - port map (vga_hsync, vgao.hsync); - video_out_r_pad : outpadv generic map (width => 2, tech => padtech) - port map (vga_rd, vgao.video_out_r(7 downto 6)); - video_out_g_pad : outpadv generic map (width => 2, tech => padtech) - port map (vga_gr, vgao.video_out_g(7 downto 6)); - video_out_b_pad : outpadv generic map (width => 2, tech => padtech) - port map (vga_bl, vgao.video_out_b(7 downto 6)); - ------------------------------------------------------------------------ ---- MULTIIO SECTION -------------------------------------------------- ------------------------------------------------------------------------ - MULTIIO : if CFG_MULTIIO /= 0 generate - -- human interface controller - mio : MultiIO_APB - generic map ( - pindex => 6, - paddr => 6, - pmask => 16#fff#, - pirq => 6, - clk_freq_in => cpufreq, - led7act => '0', - ledact => '0', - switchact => '0', -- switch polarity is inverse to Hpe_compact - buttonact => '1') - port map ( - rst_n => rstn, - clk => clkm, - apbi => apbi, - apbo => apbo(6), - MultiIO_in => mioi, - MultiIO_out => mioo); - - mioi.switch_in <= "0000" & dsw; - mioi.row_in <= tst_row; - sevensegment <= mioo.led_ca_out(1) & -- 9 - mioo.led_ca_out(0) & -- 8 - mioo.led_dp_out & -- . - mioo.led_g_out & -- . - mioo.led_f_out & -- . - mioo.led_e_out & - mioo.led_d_out & - mioo.led_c_out & - mioo.led_b_out & - mioo.led_a_out; -- 0 - tst_col <= mioo.column_out; - led <= mioo.led_out when dsubre = '0' else - vcc(4 downto 0) & vcc(0) & (not dsuact) & dbgo(0).error; - - lcd_regsel <= mioo.lcd_regsel; - lcd_rw <= mioo.lcd_rw; - lcd_enable <= mioo.lcd_enable; - - -- expansion connector - exp_datao <= mioo.exp_out; - mioi.exp_in <= exp_datai; - - codec_mode <= mioo.codec_mode; - codec_mclk <= mioo.codec_mclk; - codec_sclk <= mioo.codec_sclk; - codec_sdin <= mioo.codec_sdin; - codec_cs <= mioo.codec_cs; - codec_din <= mioo.codec_din; - codec_bclk <= mioo.codec_bclk; - codec_lrcin <= mioo.codec_lrcin; - codec_lrcout <= mioo.codec_lrcout; - - end generate; - - nMULTIIO : if CFG_MULTIIO = 0 generate - apbo(6) <= apb_none; - end generate; - ------------------------------------------------------------------------ ---- ETHERNET --------------------------------------------------------- ------------------------------------------------------------------------ - - eth0 : if CFG_GRETH = 1 generate -- Gaisler ethernet MAC - e1 : greth generic map(hindex => CFG_NCPU+CFG_AHB_UART, - pindex => 15, paddr => 15, pirq => 12, memtech => memtech, - mdcscaler => cpufreq/1000, enable_mdio => 1, fifosize => CFG_ETH_FIFO, - nsync => 1, edcl => CFG_DSU_ETH, edclbufsz => CFG_ETH_BUF, - macaddrh => CFG_ETH_ENM, macaddrl => CFG_ETH_ENL, - ipaddrh => CFG_ETH_IPM, ipaddrl => CFG_ETH_IPL) - port map(rst => rstn, clk => clkm, ahbmi => ahbmi, - ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART), apbi => apbi, - apbo => apbo(15), ethi => ethi, etho => etho); - - emdio_pad : iopad generic map (tech => padtech) - port map (emdio, etho.mdio_o, etho.mdio_oe, ethi.mdio_i); - etxc_pad : inpad generic map (tech => padtech) - port map (etx_clk, ethi.tx_clk); - erxc_pad : inpad generic map (tech => padtech) - port map (erx_clk, ethi.rx_clk); - erxd_pad : inpadv generic map (tech => padtech, width => 4) - port map (erxd, ethi.rxd(3 downto 0)); - erxdv_pad : inpad generic map (tech => padtech) - port map (erx_dv, ethi.rx_dv); - erxer_pad : inpad generic map (tech => padtech) - port map (erx_er, ethi.rx_er); - erxco_pad : inpad generic map (tech => padtech) - port map (erx_col, ethi.rx_col); - erxcr_pad : inpad generic map (tech => padtech) - port map (erx_crs, ethi.rx_crs); - - etxd_pad : outpadv generic map (tech => padtech, width => 4) - port map (etxd, etho.txd(3 downto 0)); - etxen_pad : outpad generic map (tech => padtech) - port map (etx_en, etho.tx_en); - etxer_pad : outpad generic map (tech => padtech) - port map (etx_er, etho.tx_er); - emdc_pad : outpad generic map (tech => padtech) - port map (emdc, etho.mdc); - - end generate; - - - ----------------------------------------------------------------------------- - -- HPI SECTION - ----------------------------------------------------------------------------- - - ahb2hpi_inst : if CFG_AHB2HPI /= 0 generate - ahb2hpi2_1 : ahb2hpi2 - generic map ( - counter_width => 4, - data_width => 16, - address_width => 2, - hindex => 8, - haddr => 16#240#, - hmask => 16#fff#) - port map ( - HCLK => clkm, - HRESETn => rstn, - ahbso => ahbso(8), - ahbsi => ahbsi, - ADDR => hpiaddr, - WDATA => hpiwdata, - RDATA => hpirdata, - nCS => hpicsn, - nWR => hpiwriten, - nRD => hpirdn, - INT => hpiint, - drive_bus => drive_bus); - - hpidata <= hpiwdata when drive_bus = '1' else - (others => 'Z'); - - hpirdata <= hpidata; - - hpiwrn <= hpiwriten; - - end generate; - nahb2hpi_inst : if CFG_AHB2HPI = 0 generate - ahbso(8) <= ahbs_none; - end generate; - ------------------------------------------------------------------------ ---- AHB ROM ---------------------------------------------------------- ------------------------------------------------------------------------ - - bpromgen : if CFG_AHBROMEN /= 0 generate - brom : entity work.ahbrom - generic map (hindex => 6, haddr => CFG_AHBRODDR, pipe => CFG_AHBROPIP) - port map (rstn, clkm, ahbsi, ahbso(6)); - end generate; - nobpromgen : if CFG_AHBROMEN = 0 generate - ahbso(6) <= ahbs_none; - end generate; - ------------------------------------------------------------------------ ---- AHB RAM ---------------------------------------------------------- ------------------------------------------------------------------------ - - ahbramgen : if CFG_AHBRAMEN = 1 generate - ahbram0 : ahbram generic map (hindex => 3, haddr => CFG_AHBRADDR, - tech => CFG_MEMTECH, kbytes => CFG_AHBRSZ) - port map (rstn, clkm, ahbsi, ahbso(3)); - end generate; - nram : if CFG_AHBRAMEN = 0 generate ahbso(3) <= ahbs_none; end generate; - ------------------------------------------------------------------------ ---- AHB DAC IF ------------------------------------------------------- ------------------------------------------------------------------------ - - dac_ahb_inst : if CFG_DAC_AHB /= 0 generate - dac_ahb_1 : dac_ahb - generic map(length => 16, hindex => 4, haddr => 16#010#, hmask => 16#FFF#, tech => fabtech, kbytes => 1) - port map(rst => rstn, clk => clkm, ahbsi => ahbsi, ahbso => ahbso(4), dac_out => dac); - end generate; - ndac_ahb_inst : if CFG_DAC_AHB = 0 generate - ahbso(4) <= ahbs_none; - end generate; - - ------------------------------------------------------------------------ ---- Drive unused bus elements --------------------------------------- ------------------------------------------------------------------------ - - nam1 : for i in (CFG_NCPU+CFG_AHB_UART+CFG_GRETH) to NAHBMST-1 generate - ahbmo(i) <= ahbm_none; - end generate; - nap0 : for i in 9 to NAPBSLV-1-CFG_GRETH generate apbo(i) <= apb_none; end generate; - nah0 : for i in 9 to NAHBSLV-1 generate ahbso(i) <= ahbs_none; end generate; - ------------------------------------------------------------------------ ---- Adaptions for HPE Mini ---------------------------------------- ------------------------------------------------------------------------ - - -- invert dsuact signal for output on LED - dsuactn <= not dsuact; - - resoutn <= rstn; - ------------------------------------------------------------------------ ---- Boot message ---------------------------------------------------- ------------------------------------------------------------------------ - --- pragma translate_off - x : report_version - generic map ( - msg1 => "LEON3 Demonstration design for HPE_mini board", - msg2 => "GRLIB Version " & tost(LIBVHDL_VERSION/100) & "." & tost((LIBVHDL_VERSION mod 10)/10) - & "." & tost(LIBVHDL_VERSION mod 100), - msg3 => "Target technology: " & tech_table(fabtech) & ", memory library: " & tech_table(memtech), - mdel => 1 - ); --- pragma translate_on - - dsuen_pad : inpad generic map (tech => padtech) port map ('1', ldsuen); - duart <= rdsuen when CFG_AHB_UART /= 0 else '0'; - rxd1 <= txd1 when duart = '1' else rserrx; - rsertx <= dsutx when duart = '1' else txd1; - dsurx <= rserrx when duart = '1' else '1'; - - p1 : process(clkm) - begin - if rising_edge(clkm) then - sertx <= rsertx; rserrx <= serrx; rdsuen <= ldsuen; - end if; - end process; - -end rtl; diff --git a/designs/leon3-ge-hpe-mini-lattice/linkprom b/designs/leon3-ge-hpe-mini-lattice/linkprom deleted file mode 100755 index 1805994a..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/linkprom +++ /dev/null @@ -1,155 +0,0 @@ -/* linkcmds - * - * $Id: linkcmds,v 1.8.2.1 2000/05/24 17:06:38 joel Exp $ - */ - -OUTPUT_ARCH(sparc) -__DYNAMIC = 0; - -/* - * The memory map looks like this: - * +--------------------+ <- low memory - * | .text | - * | etext | - * | ctor list | the ctor and dtor lists are for - * | dtor list | C++ support - * | _endtext | - * +--------------------+ - * | .data | initialized data goes here - * | _sdata | - * | _edata | - * +--------------------+ - * | .bss | - * | __bss_start | start of bss, cleared by crt0 - * | _end | start of heap, used by sbrk() - * +--------------------+ - * | heap space | - * | _ENDHEAP | - * | stack space | - * | __stack | top of stack - * +--------------------+ <- high memory - */ - - -/* Default values, can be overridden */ - -_PROM_SIZE = 2M; -_RAM_SIZE = 4M; - -_RAM_START = 0x02000000; -_RAM_END = _RAM_START + _RAM_SIZE; - -_PROM_START = 0x00000000; -_PROM_END = _PROM_START + _PROM_SIZE; - -/* - * Alternate names without leading _. - */ - -PROM_START = _PROM_START; -PROM_SIZE = _PROM_SIZE; -PROM_END = _PROM_END; - -RAM_START = _RAM_START; -RAM_SIZE = _RAM_SIZE; -RAM_END = _RAM_END; - -_LEON_REG = 0x80000000; -LEON_REG = 0x80000000; - -/* these are the maximum values */ - -MEMORY -{ - rom : ORIGIN = 0x00000000, LENGTH = 16M - ram : ORIGIN = 0x40000000, LENGTH = 1024M -} - -SECTIONS -{ - .text : - { - CREATE_OBJECT_SYMBOLS - text_start = .; - _text_start = .; - *(.text) - . = ALIGN (16); - - *(.eh_frame) - . = ALIGN (16); - - *(.gnu.linkonce.t*) - - /* - * C++ constructors - */ - __CTOR_LIST__ = .; - LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) - *(.ctors) - LONG(0) - __CTOR_END__ = .; - __DTOR_LIST__ = .; - LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) - *(.dtors) - LONG(0) - __DTOR_END__ = .; - - _rodata_start = . ; - *(.rodata*) - *(.gnu.linkonce.r*) - _erodata = ALIGN( 0x10 ) ; - - etext = ALIGN(0x10); - _etext = .; - *(.init) - *(.fini) - *(.lit) - *(.shdata) - . = ALIGN (16); - _endtext = .; - } > rom - .dynamic : { *(.dynamic) } >ram - .got : { *(.got) } >ram - .plt : { *(.plt) } >ram - .hash : { *(.hash) } >ram - .dynrel : { *(.dynrel) } >ram - .dynsym : { *(.dynsym) } >ram - .dynstr : { *(.dynstr) } >ram - .hash : { *(.hash) } >ram - .data : - { - data_start = .; - _data_start = .; - _sdata = . ; - *(.data) - *(.gnu.linkonce.d*) - *(.gcc_except_table) - . = ALIGN(0x10); - edata = .; - _edata = .; - } > ram - .shbss : - { - *(.shbss) - } > ram - .bss : - { - __bss_start = ALIGN(0x8); - _bss_start = .; - bss_start = .; - *(.bss) - *(COMMON) - end = .; - _end = ALIGN(0x8); - __end = ALIGN(0x8); - } > ram - .jcr . (NOLOAD) : { *(.jcr) } - .stab . (NOLOAD) : - { - [ .stab ] - } - .stabstr . (NOLOAD) : - { - [ .stabstr ] - } -} diff --git a/designs/leon3-ge-hpe-mini-lattice/prom.h b/designs/leon3-ge-hpe-mini-lattice/prom.h deleted file mode 100644 index 5514ce56..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/prom.h +++ /dev/null @@ -1,10 +0,0 @@ -#define MCFG1 0x10380233 -#define MCFG2 0xe6B80e60 -#define MCFG3 0x000ff000 -#define ASDCFG 0xfff00100 -#define DSDCFG 0xe6A06e60 -#define L2MCTRLIO 0x80000000 -#define IRQCTRL 0x80000200 -#define RAMSTART 0x60000000 -#define RAMSIZE 0x00100000 - diff --git a/designs/leon3-ge-hpe-mini-lattice/prom.srec b/designs/leon3-ge-hpe-mini-lattice/prom.srec deleted file mode 100755 index c1439b8d..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/prom.srec +++ /dev/null @@ -1,37 +0,0 @@ -S00C000070726F6D2E737265635A -S113000081D8200003000004821060E08188400051 -S1130010819000008198000081800000A180000090 -S113002001000000030020408210600FC2A00040C5 -S11300308410000001000000010000000100000025 -S11300400100000001000000801080020100000097 -S11300500100000001000000010000000100000098 -S1130060874440008608E01F881000008A100000C2 -S11300708C1000008E100000A0100000A2100000E0 -S1130080A4100000A6100000A8100000AA10000090 -S1130090AC100000AE1000009010000092100000A0 -S11300A09410000096100000981000009A100000B0 -S11300B09C1000009E10000086A0E00116BFFFEF18 -S11300C081E00000821020028190400003000004BF -S11300D0821060E0818840000100000001000000FF -S11300E001000000834800008330600C80886001B8 -S11300F00280002401000000070000008610E1785F -S1130100C108C000C118C000C518C000C918C0008B -S1130110CD18C000D118C000D518C000D918C0002F -S1130120DD18C000E118C000E518C000E918C000DF -S1130130ED18C000F118C000F518C000F918C0008F -S1130140FD18C000010000000100000001000000D3 -S1130150010000000100000089A008420100000025 -S113016001000000010000000100000010800005F3 -S11301700100000001000000000000000000000079 -S1130180874440008730E01C8688E00F1280001608 -S11301900320000005040E008410A233C420400094 -S11301A00539AE038410A260C4206004050003FC7A -S11301B0C420600882103860C40040008530A00C60 -S11301C0030000048210600980A04002128000062F -S11301D0033FFC00821061000539A81B8410A26053 -S11301E0C4204000050000808210000080A0E000D0 -S11301F002800005010000008200400210BFFFFCE5 -S11302008620E0013D1803FFBC17A3E0BC27800152 -S11302109C27A0600318000081C04000010000007A -S113022000000000000000000000000000000000CA -S9030000FC diff --git a/designs/leon3-ge-hpe-mini-lattice/sdram.srec b/designs/leon3-ge-hpe-mini-lattice/sdram.srec deleted file mode 100755 index 0507f4a2..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/sdram.srec +++ /dev/null @@ -1,19492 +0,0 @@ -S00D0000736472616D2E7372656300 -S31560000000881000000918006C81C1206C0100000096 -S31560000010A1480000A75000001080203BAC102001D2 -S3156000002091D02000010000000100000001000000E6 -S3156000003091D02000010000000100000001000000D6 -S31560000040A14800002918006B81C523A401000000A7 -S31560000050A14800002918006981C522C80100000076 -S31560000060A14800002918006981C5233401000000F9 -S3156000007091D0200001000000010000000100000096 -S3156000008091D0200001000000010000000100000086 -S31560000090A1480000A75000001080201BAC1020096A -S315600000A091D0200001000000010000000100000066 -S315600000B091D0200001000000010000000100000056 -S315600000C091D0200001000000010000000100000046 -S315600000D091D0200001000000010000000100000036 -S315600000E091D0200001000000010000000100000026 -S315600000F091D0200001000000010000000100000016 -S3156000010091D0200001000000010000000100000005 -S31560000110AE102001A148000010806A33A75000008D -S31560000120AE102002A148000010806A2FA750000080 -S31560000130AE102003A148000010806A2BA750000073 -S31560000140AE102004A148000010806A27A750000066 -S31560000150AE102005A148000010806A23A750000059 -S31560000160AE102006A148000010806A1FA75000004C -S31560000170AE102007A148000010806A1BA75000003F -S31560000180AE102008A148000010806A17A750000032 -S31560000190AE102009A148000010806A13A750000025 -S315600001A0AE10200AA148000010806A0FA750000018 -S315600001B0AE10200BA148000010806A0BA75000000B -S315600001C0AE10200CA148000010806A07A7500000FE -S315600001D0AE10200DA148000010806A03A7500000F1 -S315600001E0AE10200EA1480000108069FFA7500000E5 -S315600001F0AE10200FA1480000108069FBA7500000D8 -S3156000020091D0200001000000010000000100000004 -S3156000021091D02000010000000100000001000000F4 -S3156000022091D02000010000000100000001000000E4 -S3156000023091D02000010000000100000001000000D4 -S3156000024091D02000010000000100000001000000C4 -S3156000025091D02000010000000100000001000000B4 -S3156000026091D02000010000000100000001000000A4 -S3156000027091D0200001000000010000000100000094 -S3156000028091D0200001000000010000000100000084 -S3156000029091D0200001000000010000000100000074 -S315600002A091D0200001000000010000000100000064 -S315600002B091D0200001000000010000000100000054 -S315600002C091D0200001000000010000000100000044 -S315600002D091D0200001000000010000000100000034 -S315600002E091D0200001000000010000000100000024 -S315600002F091D0200001000000010000000100000014 -S3156000030091D0200001000000010000000100000003 -S3156000031091D02000010000000100000001000000F3 -S3156000032091D02000010000000100000001000000E3 -S3156000033091D02000010000000100000001000000D3 -S3156000034091D02000010000000100000001000000C3 -S3156000035091D02000010000000100000001000000B3 -S3156000036091D02000010000000100000001000000A3 -S3156000037091D0200001000000010000000100000093 -S3156000038091D0200001000000010000000100000083 -S3156000039091D0200001000000010000000100000073 -S315600003A091D0200001000000010000000100000063 -S315600003B091D0200001000000010000000100000053 -S315600003C091D0200001000000010000000100000043 -S315600003D091D0200001000000010000000100000033 -S315600003E091D0200001000000010000000100000023 -S315600003F091D0200001000000010000000100000013 -S3156000040091D0200001000000010000000100000002 -S3156000041091D02000010000000100000001000000F2 -S3156000042091D02000010000000100000001000000E2 -S3156000043091D02000010000000100000001000000D2 -S3156000044091D02000010000000100000001000000C2 -S3156000045091D02000010000000100000001000000B2 -S3156000046091D02000010000000100000001000000A2 -S3156000047091D0200001000000010000000100000092 -S3156000048091D0200001000000010000000100000082 -S3156000049091D0200001000000010000000100000072 -S315600004A091D0200001000000010000000100000062 -S315600004B091D0200001000000010000000100000052 -S315600004C091D0200001000000010000000100000042 -S315600004D091D0200001000000010000000100000032 -S315600004E091D0200001000000010000000100000022 -S315600004F091D0200001000000010000000100000012 -S3156000050091D0200001000000010000000100000001 -S3156000051091D02000010000000100000001000000F1 -S3156000052091D02000010000000100000001000000E1 -S3156000053091D02000010000000100000001000000D1 -S3156000054091D02000010000000100000001000000C1 -S3156000055091D02000010000000100000001000000B1 -S3156000056091D02000010000000100000001000000A1 -S3156000057091D0200001000000010000000100000091 -S3156000058091D0200001000000010000000100000081 -S3156000059091D0200001000000010000000100000071 -S315600005A091D0200001000000010000000100000061 -S315600005B091D0200001000000010000000100000051 -S315600005C091D0200001000000010000000100000041 -S315600005D091D0200001000000010000000100000031 -S315600005E091D0200001000000010000000100000021 -S315600005F091D0200001000000010000000100000011 -S3156000060091D0200001000000010000000100000000 -S3156000061091D02000010000000100000001000000F0 -S3156000062091D02000010000000100000001000000E0 -S3156000063091D02000010000000100000001000000D0 -S3156000064091D02000010000000100000001000000C0 -S3156000065091D02000010000000100000001000000B0 -S3156000066091D02000010000000100000001000000A0 -S3156000067091D0200001000000010000000100000090 -S3156000068091D0200001000000010000000100000080 -S3156000069091D0200001000000010000000100000070 -S315600006A091D0200001000000010000000100000060 -S315600006B091D0200001000000010000000100000050 -S315600006C091D0200001000000010000000100000040 -S315600006D091D0200001000000010000000100000030 -S315600006E091D0200001000000010000000100000020 -S315600006F091D0200001000000010000000100000010 -S3156000070091D02000010000000100000001000000FF -S3156000071091D02000010000000100000001000000EF -S3156000072091D02000010000000100000001000000DF -S3156000073091D02000010000000100000001000000CF -S3156000074091D02000010000000100000001000000BF -S3156000075091D02000010000000100000001000000AF -S3156000076091D020000100000001000000010000009F -S3156000077091D020000100000001000000010000008F -S3156000078091D020000100000001000000010000007F -S3156000079091D020000100000001000000010000006F -S315600007A091D020000100000001000000010000005F -S315600007B091D020000100000001000000010000004F -S315600007C091D020000100000001000000010000003F -S315600007D091D020000100000001000000010000002F -S315600007E091D020000100000001000000010000001F -S315600007F091D020000100000001000000010000000F -S3156000080091D02000010000000100000001000000FE -S3156000081091D02000010000000100000001000000EE -S31560000820A14800002918006A81C52108010000005E -S31560000830A1480000108067D9A750000001000000A1 -S3156000084091D02000010000000100000001000000BE -S31560000850A14800002918006A81C520EC010000004B -S3156000086091D020000100000001000000010000009E -S3156000087091D020000100000001000000010000008E -S3156000088091D020000100000001000000010000007E -S3156000089091D020000100000001000000010000006E -S315600008A091D020000100000001000000010000005E -S315600008B091D020000100000001000000010000004E -S315600008C091D020000100000001000000010000003E -S315600008D091D020000100000001000000010000002E -S315600008E091D020000100000001000000010000001E -S315600008F091D020000100000001000000010000000E -S3156000090091D02000010000000100000001000000FD -S3156000091091D02000010000000100000001000000ED -S3156000092091D02000010000000100000001000000DD -S3156000093091D02000010000000100000001000000CD -S3156000094091D02000010000000100000001000000BD -S3156000095091D02000010000000100000001000000AD -S3156000096091D020000100000001000000010000009D -S3156000097091D020000100000001000000010000008D -S3156000098091D020000100000001000000010000007D -S3156000099091D020000100000001000000010000006D -S315600009A091D020000100000001000000010000005D -S315600009B091D020000100000001000000010000004D -S315600009C091D020000100000001000000010000003D -S315600009D091D020000100000001000000010000002D -S315600009E091D020000100000001000000010000001D -S315600009F091D020000100000001000000010000000D -S31560000A0091D02000010000000100000001000000FC -S31560000A1091D02000010000000100000001000000EC -S31560000A2091D02000010000000100000001000000DC -S31560000A3091D02000010000000100000001000000CC -S31560000A4091D02000010000000100000001000000BC -S31560000A5091D02000010000000100000001000000AC -S31560000A6091D020000100000001000000010000009C -S31560000A7091D020000100000001000000010000008C -S31560000A8091D020000100000001000000010000007C -S31560000A9091D020000100000001000000010000006C -S31560000AA091D020000100000001000000010000005C -S31560000AB091D020000100000001000000010000004C -S31560000AC091D020000100000001000000010000003C -S31560000AD091D020000100000001000000010000002C -S31560000AE091D020000100000001000000010000001C -S31560000AF091D020000100000001000000010000000C -S31560000B0091D02000010000000100000001000000FB -S31560000B1091D02000010000000100000001000000EB -S31560000B2091D02000010000000100000001000000DB -S31560000B3091D02000010000000100000001000000CB -S31560000B4091D02000010000000100000001000000BB -S31560000B5091D02000010000000100000001000000AB -S31560000B6091D020000100000001000000010000009B -S31560000B7091D020000100000001000000010000008B -S31560000B8091D020000100000001000000010000007B -S31560000B9091D020000100000001000000010000006B -S31560000BA091D020000100000001000000010000005B -S31560000BB091D020000100000001000000010000004B -S31560000BC091D020000100000001000000010000003B -S31560000BD091D020000100000001000000010000002B -S31560000BE091D020000100000001000000010000001B -S31560000BF091D020000100000001000000010000000B -S31560000C0091D02000010000000100000001000000FA -S31560000C1091D02000010000000100000001000000EA -S31560000C2091D02000010000000100000001000000DA -S31560000C3091D02000010000000100000001000000CA -S31560000C4091D02000010000000100000001000000BA -S31560000C5091D02000010000000100000001000000AA -S31560000C6091D020000100000001000000010000009A -S31560000C7091D020000100000001000000010000008A -S31560000C8091D020000100000001000000010000007A -S31560000C9091D020000100000001000000010000006A -S31560000CA091D020000100000001000000010000005A -S31560000CB091D020000100000001000000010000004A -S31560000CC091D020000100000001000000010000003A -S31560000CD091D020000100000001000000010000002A -S31560000CE091D020000100000001000000010000001A -S31560000CF091D020000100000001000000010000000A -S31560000D0091D02000010000000100000001000000F9 -S31560000D1091D02000010000000100000001000000E9 -S31560000D2091D02000010000000100000001000000D9 -S31560000D3091D02000010000000100000001000000C9 -S31560000D4091D02000010000000100000001000000B9 -S31560000D5091D02000010000000100000001000000A9 -S31560000D6091D0200001000000010000000100000099 -S31560000D7091D0200001000000010000000100000089 -S31560000D8091D0200001000000010000000100000079 -S31560000D9091D0200001000000010000000100000069 -S31560000DA091D0200001000000010000000100000059 -S31560000DB091D0200001000000010000000100000049 -S31560000DC091D0200001000000010000000100000039 -S31560000DD091D0200001000000010000000100000029 -S31560000DE091D0200001000000010000000100000019 -S31560000DF091D0200001000000010000000100000009 -S31560000E0091D02000010000000100000001000000F8 -S31560000E1091D02000010000000100000001000000E8 -S31560000E2091D02000010000000100000001000000D8 -S31560000E3091D02000010000000100000001000000C8 -S31560000E4091D02000010000000100000001000000B8 -S31560000E5091D02000010000000100000001000000A8 -S31560000E6091D0200001000000010000000100000098 -S31560000E7091D0200001000000010000000100000088 -S31560000E8091D0200001000000010000000100000078 -S31560000E9091D0200001000000010000000100000068 -S31560000EA091D0200001000000010000000100000058 -S31560000EB091D0200001000000010000000100000048 -S31560000EC091D0200001000000010000000100000038 -S31560000ED091D0200001000000010000000100000028 -S31560000EE091D0200001000000010000000100000018 -S31560000EF091D0200001000000010000000100000008 -S31560000F0091D02000010000000100000001000000F7 -S31560000F1091D02000010000000100000001000000E7 -S31560000F2091D02000010000000100000001000000D7 -S31560000F3091D02000010000000100000001000000C7 -S31560000F4091D02000010000000100000001000000B7 -S31560000F5091D02000010000000100000001000000A7 -S31560000F6091D0200001000000010000000100000097 -S31560000F7091D0200001000000010000000100000087 -S31560000F8091D0200001000000010000000100000077 -S31560000F9091D0200001000000010000000100000067 -S31560000FA091D0200001000000010000000100000057 -S31560000FB091D0200001000000010000000100000047 -S31560000FC091D0200001000000010000000100000037 -S31560000FD091D0200001000000010000000100000027 -S31560000FE091D0200001000000010000000100000017 -S31560000FF091D0200001000000010000000100000007 -S315600010009DE3BFC0051801438410A0600718014422 -S315600010108610E188821000008620C00286A0E00863 -S3156000102036BFFFFFC0388003111801449012218833 -S31560001030C02200004000666601000000400066664F -S315600010400100000040006818010000001118006DE2 -S31560001050901221A040006166010000004000694ACC -S3156000106001000000400000430100000040006743AB -S315600010700100000081C7E00881E800009DE3BF9899 -S3156000108023180143C20C606080A0600012800015C6 -S315600010902118008010800005C204200C9FC3400008 -S315600010A0C224200CC204200CDA00400080A3600039 -S315600010B012BFFFFB82006004030000008210600024 -S315600010C080A0600002800006821020011118006D69 -S315600010D067FFFBCC9012213082102001C22C606029 -S315600010E081C7E00881E800009DE3BF9881C7E008FA -S315600010F081E800009DE3BF98030000008210600055 -S315600011001118006D1318014380A060009012213001 -S31560001110028000049212606467FFFBBA010000005F -S315600011201B180144C203618880A060000280000928 -S31560001130B0136188030000008210600080A0600028 -S31560001140028000040100000067FFFBAE81E800003A -S315600011500100000081C7E00881E800009DE3BF98B8 -S3156000116081C7E00881E8000081C3E0080100000053 -S315600011709DE3BF9840000007010000004000014663 -S31560001180010000004000000E81E800000100000040 -S315600011909DE3BF98400000290100000080A2200066 -S315600011A01280000503180080D80060109A10200194 -S315600011B0DA23201081C7E00891E820000318008038 -S315600011C0D80060109A102001DA23201481C3E00849 -S315600011D09010200003180080DA006010D0234000D1 -S315600011E081C3E0089010200003180080DA006010C8 -S315600011F0D023600881C3E0089010200003180080A7 -S31560001200DA006010D023600481C3E00890102000EB -S3156000121013180080921260149010200081C3E008B9 -S31560001220D0EA4020901020001318008092126014BB -S3156000123081C3E008D0224000914440009132201CD6 -S3156000124081C3E008900A200F81C3E008D0820020A5 -S315600012509010200C81C3E008D08200408210000804 -S3156000126080A20009148000039022000990224001A8 -S3156000127081C3E00801000000932A60028210200109 -S31560001280C22200099810200080A3000A1680000A76 -S3156000129096102001832B2002DA02000180A0000D47 -S315600012A0826020009803200180A3000A06BFFFFA2F -S315600012B0960AC00180A2E00002BFFFF498102000E9 -S315600012C081C3E008010000009DE3BF98C2062010BC -S315600012D08330601CA0100018A400600180A4A001E7 -S315600012E00280006CB0103FFF7FFFFFD4010000005A -S315600012F0AA100008912A20047FFFFFBC90022007F5 -S315600013007FFFFFD40100000003020000808A000115 -S315600013100280005C010000009A05600182102001D5 -S315600013208328400D11180080C2242010901220A03E -S31560001330921000157FFFFFD19410001203180080F1 -S3156000134082106018A12D6002C0204010DA004010A3 -S31560001350A610000180A36009291801431480002BA0 -S31560001360AC1000017FFFFFAB0100000080A22000EF -S3156000137012BFFFFD01000000B010200080A6001221 -S31560001380168000140100000010800005A2100016EF -S3156000139080A600121680000F01000000832E200236 -S315600013A0D0044010D20440017FFFFFADB00620019B -S315600013B080A2200104BFFFF7901020027FFFFF90FC -S315600013C00100000080A6001206BFFFF6832E2002F1 -S315600013D0C205207C82006001C225207C7FFFFF92CF -S315600013E001000000C204C01082006001C224C01067 -S315600013F0DA04C01080A3600904BFFFDB1118008007 -S31560001400108000049012205C111800809012205CFD -S31560001410921000157FFFFF9994100012832CA00292 -S3156000142082004012A0004001DA05207C80A4000DF5 -S3156000143002800004231801437FFFFF719010200390 -S31560001440C204607C80A06000048000060100000089 -S31560001450C204607C80A400011680000580A560003F -S315600014607FFFFF679010200380A56000228000093F -S31560001470B010200091D0200010800006B01020002F -S315600014807FFFFF5F9010200110BFFFA59A056001E6 -S3156000149081C7E00881E800009DE3BF98C20620107E -S315600014A0A01000188330601C80A0600002800009D4 -S315600014B0B0103FFF7FFFFF610100000080A22000A7 -S315600014C0128000040300003F821063FFC2242010D4 -S315600014D081C7E00881E800009DE3BF98C20620103E -S315600014E08330601CA400600180A4A00102800068B3 -S315600014F0B0103FFF7FFFFF5101000000AA100008F7 -S31560001500912A20047FFFFF39900220077FFFFF5159 -S315600015100100000003020000808A0001028000587A -S315600015200100000011180080901220A09210001592 -S315600015307FFFFF529410001203180080821060181B -S31560001540A12D6002C0204010DA004010A6100001F4 -S3156000155080A36009291801431480002BAC10000198 -S315600015607FFFFF2C0100000080A2200012BFFFFD5C -S3156000157001000000B010200080A600121680001442 -S315600015800100000010800005A210001680A600125F -S315600015901680000F01000000832E2002D004401048 -S315600015A0D20440017FFFFF2EB006200180A22001F9 -S315600015B004BFFFF7901020027FFFFF1101000000BB -S315600015C080A6001206BFFFF6832E2002C205207C8D -S315600015D082006001C225207C7FFFFF1301000000AE -S315600015E0C204C01082006001C224C010DA04C010B8 -S315600015F080A3600904BFFFDB11180080108000041F -S315600016009012205C111800809012205C92100015D8 -S315600016107FFFFF1A94100012832CA00282004012F2 -S31560001620A0004001DA05207C80A4000D0280000441 -S31560001630231801437FFFFEF290102003C204607CF2 -S3156000164080A060000480000601000000C204607C87 -S3156000165080A400011680000580A560007FFFFEE87B -S315600016609010200380A5600022800009B010200041 -S3156000167091D0200010800006B01020007FFFFEE0B1 -S315600016809010200110BFFFA91118008081C7E008E3 -S3156000169081E800009DE3BF98312000009216220089 -S315600016A09410200040003E599010200140003B629B -S315600016B0901622009016230040003EBE921020082D -S315600016C0B016210040003A4F81E80000010000009A -S315600016D09DE3BF9821200000921422009410200000 -S315600016E040003E4A9010200140003B539014220077 -S315600016F09210001840003EAF90142300B0142100F1 -S3156000170040003A4081E8000001000000000000004F -S315600017100000000000000000000000000000000063 -S315600017200000000000000000000000000000000053 -S315600017300000000000000000000000000000000043 -S315600017400000000000000000000000000000000033 -S315600017500000000000000000000000000000000023 -S315600017600000000000000000000000000000000013 -S315600017700000000000000000000000000000000003 -S3156000178000000000000000000000000000000000F3 -S3156000179000000000000000000000000000000000E3 -S315600017A000000000000000000000000000000000D3 -S315600017B000000000000000000000000000000000C3 -S315600017C000000000000000000000000000000000B3 -S315600017D000000000000000000000000000000000A3 -S315600017E00000000000000000000000000000000093 -S315600017F00000000000000000000000000000000083 -S315600018000000000000000000000000000000000072 -S315600018100000000000000000000000000000000062 -S315600018200000000000000000000000000000000052 -S315600018300000000000000000000000000000000042 -S315600018400000000000000000000000000000000032 -S315600018500000000000000000000000000000000022 -S315600018600000000000000000000000000000000012 -S315600018700000000000000000000000000000000002 -S3156000188000000000000000000000000000000000F2 -S3156000189000000000000000000000000000000000E2 -S315600018A000000000000000000000000000000000D2 -S315600018B000000000000000000000000000000000C2 -S315600018C000000000000000000000000000000000B2 -S315600018D000000000000000000000000000000000A2 -S315600018E00000000000000000000000000000000092 -S315600018F00000000000000000000000000000000082 -S315600019000000000000000000000000000000000071 -S315600019100000000000000000000000000000000061 -S315600019200000000000000000000000000000000051 -S315600019300000000000000000000000000000000041 -S315600019400000000000000000000000000000000031 -S315600019500000000000000000000000000000000021 -S315600019600000000000000000000000000000000011 -S315600019700000000000000000000000000000000001 -S3156000198000000000000000000000000000000000F1 -S3156000199000000000000000000000000000000000E1 -S315600019A000000000000000000000000000000000D1 -S315600019B000000000000000000000000000000000C1 -S315600019C000000000000000000000000000000000B1 -S315600019D000000000000000000000000000000000A1 -S315600019E00000000000000000000000000000000091 -S315600019F00000000000000000000000000000000081 -S31560001A000000000000000000000000000000000070 -S31560001A100000000000000000000000000000000060 -S31560001A200000000000000000000000000000000050 -S31560001A300000000000000000000000000000000040 -S31560001A400000000000000000000000000000000030 -S31560001A500000000000000000000000000000000020 -S31560001A600000000000000000000000000000000010 -S31560001A700000000000000000000000000000000000 -S31560001A8000000000000000000000000000000000F0 -S31560001A9000000000000000000000000000000000E0 -S31560001AA000000000000000000000000000000000D0 -S31560001AB000000000000000000000000000000000C0 -S31560001AC000000000000000000000000000000000B0 -S31560001AD000000000000000000000000000000000A0 -S31560001AE00000000000000000000000000000000090 -S31560001AF00000000000000000000000000000000080 -S31560001B00000000000000000000000000000000006F -S31560001B10000000000000000000000000000000005F -S31560001B20000000000000000000000000000000004F -S31560001B30000000000000000000000000000000003F -S31560001B40000000000000000000000000000000002F -S31560001B50000000000000000000000000000000001F -S31560001B60000000000000000000000000000000000F -S31560001B7000000000000000000000000000000000FF -S31560001B8000000000000000000000000000000000EF -S31560001B9000000000000000000000000000000000DF -S31560001BA000000000000000000000000000000000CF -S31560001BB000000000000000000000000000000000BF -S31560001BC000000000000000000000000000000000AF -S31560001BD0000000000000000000000000000000009F -S31560001BE0000000000000000000000000000000008F -S31560001BF0000000000000000000000000000000007F -S31560001C00000000000000000000000000000000006E -S31560001C10000000000000000000000000000000005E -S31560001C20000000000000000000000000000000004E -S31560001C30000000000000000000000000000000003E -S31560001C40000000000000000000000000000000002E -S31560001C50000000000000000000000000000000001E -S31560001C60000000000000000000000000000000000E -S31560001C7000000000000000000000000000000000FE -S31560001C8000000000000000000000000000000000EE -S31560001C9000000000000000000000000000000000DE -S31560001CA000000000000000000000000000000000CE -S31560001CB000000000000000000000000000000000BE -S31560001CC000000000000000000000000000000000AE -S31560001CD0000000000000000000000000000000009E -S31560001CE0000000000000000000000000000000008E -S31560001CF0000000000000000000000000000000007E -S31560001D00000000000000000000000000000000006D -S31560001D10000000000000000000000000000000005D -S31560001D20000000000000000000000000000000004D -S31560001D30000000000000000000000000000000003D -S31560001D40000000000000000000000000000000002D -S31560001D50000000000000000000000000000000001D -S31560001D60000000000000000000000000000000000D -S31560001D7000000000000000000000000000000000FD -S31560001D8000000000000000000000000000000000ED -S31560001D9000000000000000000000000000000000DD -S31560001DA000000000000000000000000000000000CD -S31560001DB000000000000000000000000000000000BD -S31560001DC000000000000000000000000000000000AD -S31560001DD0000000000000000000000000000000009D -S31560001DE0000000000000000000000000000000008D -S31560001DF0000000000000000000000000000000007D -S31560001E00000000000000000000000000000000006C -S31560001E10000000000000000000000000000000005C -S31560001E20000000000000000000000000000000004C -S31560001E30000000000000000000000000000000003C -S31560001E40000000000000000000000000000000002C -S31560001E50000000000000000000000000000000001C -S31560001E60000000000000000000000000000000000C -S31560001E7000000000000000000000000000000000FC -S31560001E8000000000000000000000000000000000EC -S31560001E9000000000000000000000000000000000DC -S31560001EA000000000000000000000000000000000CC -S31560001EB000000000000000000000000000000000BC -S31560001EC000000000000000000000000000000000AC -S31560001ED0000000000000000000000000000000009C -S31560001EE0000000000000000000000000000000008C -S31560001EF0000000000000000000000000000000007C -S31560001F00000000000000000000000000000000006B -S31560001F10000000000000000000000000000000005B -S31560001F20000000000000000000000000000000004B -S31560001F30000000000000000000000000000000003B -S31560001F40000000000000000000000000000000002B -S31560001F50000000000000000000000000000000001B -S31560001F60000000000000000000000000000000000B -S31560001F7000000000000000000000000000000000FB -S31560001F8000000000000000000000000000000000EB -S31560001F9000000000000000000000000000000000DB -S31560001FA000000000000000000000000000000000CB -S31560001FB000000000000000000000000000000000BB -S31560001FC000000000000000000000000000000000AB -S31560001FD0000000000000000000000000000000009B -S31560001FE0000000000000000000000000000000008B -S31560001FF0000000000000000000000000000000007B -S31560002000000000000000000000000000000000006A -S31560002010000000000000000000000000000000005A -S31560002020000000000000000000000000000000004A -S31560002030000000000000000000000000000000003A -S31560002040000000000000000000000000000000002A -S31560002050000000000000000000000000000000001A -S31560002060000000000000000000000000000000000A -S3156000207000000000000000000000000000000000FA -S3156000208000000000000000000000000000000000EA -S3156000209000000000000000000000000000000000DA -S315600020A000000000000000000000000000000000CA -S315600020B000000000000000000000000000000000BA -S315600020C000000000000000000000000000000000AA -S315600020D0000000000000000000000000000000009A -S315600020E0000000000000000000000000000000008A -S315600020F0000000000000000000000000000000007A -S315600021000000000000000000000000000000000069 -S315600021100000000000000000000000000000000059 -S315600021200000000000000000000000000000000049 -S315600021300000000000000000000000000000000039 -S315600021400000000000000000000000000000000029 -S315600021500000000000000000000000000000000019 -S315600021600000000000000000000000000000000009 -S3156000217000000000000000000000000000000000F9 -S3156000218000000000000000000000000000000000E9 -S3156000219000000000000000000000000000000000D9 -S315600021A000000000000000000000000000000000C9 -S315600021B000000000000000000000000000000000B9 -S315600021C000000000000000000000000000000000A9 -S315600021D00000000000000000000000000000000099 -S315600021E00000000000000000000000000000000089 -S315600021F00000000000000000000000000000000079 -S315600022000000000000000000000000000000000068 -S315600022100000000000000000000000000000000058 -S315600022200000000000000000000000000000000048 -S315600022300000000000000000000000000000000038 -S315600022400000000000000000000000000000000028 -S315600022500000000000000000000000000000000018 -S315600022600000000000000000000000000000000008 -S3156000227000000000000000000000000000000000F8 -S3156000228000000000000000000000000000000000E8 -S3156000229000000000000000000000000000000000D8 -S315600022A000000000000000000000000000000000C8 -S315600022B000000000000000000000000000000000B8 -S315600022C000000000000000000000000000000000A8 -S315600022D00000000000000000000000000000000098 -S315600022E00000000000000000000000000000000088 -S315600022F00000000000000000000000000000000078 -S315600023000000000000000000000000000000000067 -S315600023100000000000000000000000000000000057 -S315600023200000000000000000000000000000000047 -S315600023300000000000000000000000000000000037 -S315600023400000000000000000000000000000000027 -S315600023500000000000000000000000000000000017 -S315600023600000000000000000000000000000000007 -S3156000237000000000000000000000000000000000F7 -S3156000238000000000000000000000000000000000E7 -S3156000239000000000000000000000000000000000D7 -S315600023A000000000000000000000000000000000C7 -S315600023B000000000000000000000000000000000B7 -S315600023C000000000000000000000000000000000A7 -S315600023D00000000000000000000000000000000097 -S315600023E00000000000000000000000000000000087 -S315600023F00000000000000000000000000000000077 -S315600024000000000000000000000000000000000066 -S315600024100000000000000000000000000000000056 -S315600024200000000000000000000000000000000046 -S315600024300000000000000000000000000000000036 -S315600024400000000000000000000000000000000026 -S315600024500000000000000000000000000000000016 -S315600024600000000000000000000000000000000006 -S3156000247000000000000000000000000000000000F6 -S3156000248000000000000000000000000000000000E6 -S3156000249000000000000000000000000000000000D6 -S315600024A000000000000000000000000000000000C6 -S315600024B000000000000000000000000000000000B6 -S315600024C000000000000000000000000000000000A6 -S315600024D00000000000000000000000000000000096 -S315600024E00000000000000000000000000000000086 -S315600024F00000000000000000000000000000000076 -S315600025000000000000000000000000000000000065 -S315600025100000000000000000000000000000000055 -S315600025200000000000000000000000000000000045 -S315600025300000000000000000000000000000000035 -S315600025400000000000000000000000000000000025 -S315600025500000000000000000000000000000000015 -S315600025600000000000000000000000000000000005 -S3156000257000000000000000000000000000000000F5 -S3156000258000000000000000000000000000000000E5 -S3156000259000000000000000000000000000000000D5 -S315600025A000000000000000000000000000000000C5 -S315600025B000000000000000000000000000000000B5 -S315600025C000000000000000000000000000000000A5 -S315600025D00000000000000000000000000000000095 -S315600025E00000000000000000000000000000000085 -S315600025F00000000000000000000000000000000075 -S315600026000000000000000000000000000000000064 -S315600026100000000000000000000000000000000054 -S315600026200000000000000000000000000000000044 -S315600026300000000000000000000000000000000034 -S315600026400000000000000000000000000000000024 -S315600026500000000000000000000000000000000014 -S315600026600000000000000000000000000000000004 -S3156000267000000000000000000000000000000000F4 -S3156000268000000000000000000000000000000000E4 -S3156000269000000000000000000000000000000000D4 -S315600026A000000000000000000000000000000000C4 -S315600026B000000000000000000000000000000000B4 -S315600026C000000000000000000000000000000000A4 -S315600026D00000000000000000000000000000000094 -S315600026E00000000000000000000000000000000084 -S315600026F00000000000000000000000000000000074 -S315600027000000000000000000000000000000000063 -S315600027100000000000000000000000000000000053 -S315600027200000000000000000000000000000000043 -S315600027300000000000000000000000000000000033 -S315600027400000000000000000000000000000000023 -S315600027500000000000000000000000000000000013 -S315600027600000000000000000000000000000000003 -S3156000277000000000000000000000000000000000F3 -S3156000278000000000000000000000000000000000E3 -S3156000279000000000000000000000000000000000D3 -S315600027A000000000000000000000000000000000C3 -S315600027B000000000000000000000000000000000B3 -S315600027C000000000000000000000000000000000A3 -S315600027D00000000000000000000000000000000093 -S315600027E00000000000000000000000000000000083 -S315600027F00000000000000000000000000000000073 -S315600028000000000000000000000000000000000062 -S315600028100000000000000000000000000000000052 -S315600028200000000000000000000000000000000042 -S315600028300000000000000000000000000000000032 -S315600028400000000000000000000000000000000022 -S315600028500000000000000000000000000000000012 -S315600028600000000000000000000000000000000002 -S3156000287000000000000000000000000000000000F2 -S3156000288000000000000000000000000000000000E2 -S3156000289000000000000000000000000000000000D2 -S315600028A000000000000000000000000000000000C2 -S315600028B000000000000000000000000000000000B2 -S315600028C000000000000000000000000000000000A2 -S315600028D00000000000000000000000000000000092 -S315600028E00000000000000000000000000000000082 -S315600028F00000000000000000000000000000000072 -S315600029000000000000000000000000000000000061 -S315600029100000000000000000000000000000000051 -S315600029200000000000000000000000000000000041 -S315600029300000000000000000000000000000000031 -S315600029400000000000000000000000000000000021 -S315600029500000000000000000000000000000000011 -S315600029600000000000000000000000000000000001 -S3156000297000000000000000000000000000000000F1 -S3156000298000000000000000000000000000000000E1 -S3156000299000000000000000000000000000000000D1 -S315600029A000000000000000000000000000000000C1 -S315600029B000000000000000000000000000000000B1 -S315600029C000000000000000000000000000000000A1 -S315600029D00000000000000000000000000000000091 -S315600029E00000000000000000000000000000000081 -S315600029F00000000000000000000000000000000071 -S31560002A000000000000000000000000000000000060 -S31560002A100000000000000000000000000000000050 -S31560002A200000000000000000000000000000000040 -S31560002A300000000000000000000000000000000030 -S31560002A400000000000000000000000000000000020 -S31560002A500000000000000000000000000000000010 -S31560002A600000000000000000000000000000000000 -S31560002A7000000000000000000000000000000000F0 -S31560002A8000000000000000000000000000000000E0 -S31560002A9000000000000000000000000000000000D0 -S31560002AA000000000000000000000000000000000C0 -S31560002AB000000000000000000000000000000000B0 -S31560002AC000000000000000000000000000000000A0 -S31560002AD00000000000000000000000000000000090 -S31560002AE00000000000000000000000000000000080 -S31560002AF00000000000000000000000000000000070 -S31560002B00000000000000000000000000000000005F -S31560002B10000000000000000000000000000000004F -S31560002B20000000000000000000000000000000003F -S31560002B30000000000000000000000000000000002F -S31560002B40000000000000000000000000000000001F -S31560002B50000000000000000000000000000000000F -S31560002B6000000000000000000000000000000000FF -S31560002B7000000000000000000000000000000000EF -S31560002B8000000000000000000000000000000000DF -S31560002B9000000000000000000000000000000000CF -S31560002BA000000000000000000000000000000000BF -S31560002BB000000000000000000000000000000000AF -S31560002BC0000000000000000000000000000000009F -S31560002BD0000000000000000000000000000000008F -S31560002BE0000000000000000000000000000000007F -S31560002BF0000000000000000000000000000000006F -S31560002C00000000000000000000000000000000005E -S31560002C10000000000000000000000000000000004E -S31560002C20000000000000000000000000000000003E -S31560002C30000000000000000000000000000000002E -S31560002C40000000000000000000000000000000001E -S31560002C50000000000000000000000000000000000E -S31560002C6000000000000000000000000000000000FE -S31560002C7000000000000000000000000000000000EE -S31560002C8000000000000000000000000000000000DE -S31560002C9000000000000000000000000000000000CE -S31560002CA000000000000000000000000000000000BE -S31560002CB000000000000000000000000000000000AE -S31560002CC0000000000000000000000000000000009E -S31560002CD0000000000000000000000000000000008E -S31560002CE0000000000000000000000000000000007E -S31560002CF0000000000000000000000000000000006E -S31560002D00000000000000000000000000000000005D -S31560002D10000000000000000000000000000000004D -S31560002D20000000000000000000000000000000003D -S31560002D30000000000000000000000000000000002D -S31560002D40000000000000000000000000000000001D -S31560002D50000000000000000000000000000000000D -S31560002D6000000000000000000000000000000000FD -S31560002D7000000000000000000000000000000000ED -S31560002D8000000000000000000000000000000000DD -S31560002D9000000000000000000000000000000000CD -S31560002DA000000000000000000000000000000000BD -S31560002DB000000000000000000000000000000000AD -S31560002DC0000000000000000000000000000000009D -S31560002DD0000000000000000000000000000000008D -S31560002DE0000000000000000000000000000000007D -S31560002DF0000000000000000000000000000000006D -S31560002E00000000000000000000000000000000005C -S31560002E10000000000000000000000000000000004C -S31560002E20000000000000000000000000000000003C -S31560002E30000000000000000000000000000000002C -S31560002E40000000000000000000000000000000001C -S31560002E50000000000000000000000000000000000C -S31560002E6000000000000000000000000000000000FC -S31560002E7000000000000000000000000000000000EC -S31560002E8000000000000000000000000000000000DC -S31560002E9000000000000000000000000000000000CC -S31560002EA000000000000000000000000000000000BC -S31560002EB000000000000000000000000000000000AC -S31560002EC0000000000000000000000000000000009C -S31560002ED0000000000000000000000000000000008C -S31560002EE0000000000000000000000000000000007C -S31560002EF0000000000000000000000000000000006C -S31560002F00000000000000000000000000000000005B -S31560002F10000000000000000000000000000000004B -S31560002F20000000000000000000000000000000003B -S31560002F30000000000000000000000000000000002B -S31560002F40000000000000000000000000000000001B -S31560002F50000000000000000000000000000000000B -S31560002F6000000000000000000000000000000000FB -S31560002F7000000000000000000000000000000000EB -S31560002F8000000000000000000000000000000000DB -S31560002F9000000000000000000000000000000000CB -S31560002FA000000000000000000000000000000000BB -S31560002FB000000000000000000000000000000000AB -S31560002FC0000000000000000000000000000000009B -S31560002FD0000000000000000000000000000000008B -S31560002FE0000000000000000000000000000000007B -S31560002FF0000000000000000000000000000000006B -S31560003000000000000000000000000000000000005A -S31560003010000000000000000000000000000000004A -S31560003020000000000000000000000000000000003A -S31560003030000000000000000000000000000000002A -S31560003040000000000000000000000000000000001A -S31560003050000000000000000000000000000000000A -S3156000306000000000000000000000000000000000FA -S3156000307000000000000000000000000000000000EA -S3156000308000000000000000000000000000000000DA -S3156000309000000000000000000000000000000000CA -S315600030A000000000000000000000000000000000BA -S315600030B000000000000000000000000000000000AA -S315600030C0000000000000000000000000000000009A -S315600030D0000000000000000000000000000000008A -S315600030E0000000000000000000000000000000007A -S315600030F0000000000000000000000000000000006A -S315600031000000000000000000000000000000000059 -S315600031100000000000000000000000000000000049 -S315600031200000000000000000000000000000000039 -S315600031300000000000000000000000000000000029 -S315600031400000000000000000000000000000000019 -S315600031500000000000000000000000000000000009 -S3156000316000000000000000000000000000000000F9 -S3156000317000000000000000000000000000000000E9 -S3156000318000000000000000000000000000000000D9 -S3156000319000000000000000000000000000000000C9 -S315600031A000000000000000000000000000000000B9 -S315600031B000000000000000000000000000000000A9 -S315600031C00000000000000000000000000000000099 -S315600031D00000000000000000000000000000000089 -S315600031E00000000000000000000000000000000079 -S315600031F00000000000000000000000000000000069 -S315600032000000000000000000000000000000000058 -S315600032100000000000000000000000000000000048 -S315600032200000000000000000000000000000000038 -S315600032300000000000000000000000000000000028 -S315600032400000000000000000000000000000000018 -S315600032500000000000000000000000000000000008 -S3156000326000000000000000000000000000000000F8 -S3156000327000000000000000000000000000000000E8 -S3156000328000000000000000000000000000000000D8 -S3156000329000000000000000000000000000000000C8 -S315600032A000000000000000000000000000000000B8 -S315600032B000000000000000000000000000000000A8 -S315600032C00000000000000000000000000000000098 -S315600032D00000000000000000000000000000000088 -S315600032E00000000000000000000000000000000078 -S315600032F00000000000000000000000000000000068 -S315600033000000000000000000000000000000000057 -S315600033100000000000000000000000000000000047 -S315600033200000000000000000000000000000000037 -S315600033300000000000000000000000000000000027 -S315600033400000000000000000000000000000000017 -S315600033500000000000000000000000000000000007 -S3156000336000000000000000000000000000000000F7 -S3156000337000000000000000000000000000000000E7 -S3156000338000000000000000000000000000000000D7 -S3156000339000000000000000000000000000000000C7 -S315600033A000000000000000000000000000000000B7 -S315600033B000000000000000000000000000000000A7 -S315600033C00000000000000000000000000000000097 -S315600033D00000000000000000000000000000000087 -S315600033E00000000000000000000000000000000077 -S315600033F00000000000000000000000000000000067 -S315600034000000000000000000000000000000000056 -S315600034100000000000000000000000000000000046 -S315600034200000000000000000000000000000000036 -S315600034300000000000000000000000000000000026 -S315600034400000000000000000000000000000000016 -S315600034500000000000000000000000000000000006 -S3156000346000000000000000000000000000000000F6 -S3156000347000000000000000000000000000000000E6 -S3156000348000000000000000000000000000000000D6 -S3156000349000000000000000000000000000000000C6 -S315600034A000000000000000000000000000000000B6 -S315600034B000000000000000000000000000000000A6 -S315600034C00000000000000000000000000000000096 -S315600034D00000000000000000000000000000000086 -S315600034E00000000000000000000000000000000076 -S315600034F00000000000000000000000000000000066 -S315600035000000000000000000000000000000000055 -S315600035100000000000000000000000000000000045 -S315600035200000000000000000000000000000000035 -S315600035300000000000000000000000000000000025 -S315600035400000000000000000000000000000000015 -S315600035500000000000000000000000000000000005 -S3156000356000000000000000000000000000000000F5 -S3156000357000000000000000000000000000000000E5 -S3156000358000000000000000000000000000000000D5 -S3156000359000000000000000000000000000000000C5 -S315600035A000000000000000000000000000000000B5 -S315600035B000000000000000000000000000000000A5 -S315600035C00000000000000000000000000000000095 -S315600035D00000000000000000000000000000000085 -S315600035E00000000000000000000000000000000075 -S315600035F00000000000000000000000000000000065 -S315600036000000000000000000000000000000000054 -S315600036100000000000000000000000000000000044 -S315600036200000000000000000000000000000000034 -S315600036300000000000000000000000000000000024 -S315600036400000000000000000000000000000000014 -S315600036500000000000000000000000000000000004 -S3156000366000000000000000000000000000000000F4 -S3156000367000000000000000000000000000000000E4 -S3156000368000000000000000000000000000000000D4 -S3156000369000000000000000000000000000000000C4 -S315600036A000000000000000000000000000000000B4 -S315600036B000000000000000000000000000000000A4 -S315600036C00000000000000000000000000000000094 -S315600036D00000000000000000000000000000000084 -S315600036E00000000000000000000000000000000074 -S315600036F00000000000000000000000000000000064 -S315600037000000000000000000000000000000000053 -S315600037100000000000000000000000000000000043 -S315600037200000000000000000000000000000000033 -S315600037300000000000000000000000000000000023 -S315600037400000000000000000000000000000000013 -S315600037500000000000000000000000000000000003 -S3156000376000000000000000000000000000000000F3 -S3156000377000000000000000000000000000000000E3 -S3156000378000000000000000000000000000000000D3 -S3156000379000000000000000000000000000000000C3 -S315600037A000000000000000000000000000000000B3 -S315600037B000000000000000000000000000000000A3 -S315600037C00000000000000000000000000000000093 -S315600037D00000000000000000000000000000000083 -S315600037E00000000000000000000000000000000073 -S315600037F00000000000000000000000000000000063 -S315600038000000000000000000000000000000000052 -S315600038100000000000000000000000000000000042 -S315600038200000000000000000000000000000000032 -S315600038300000000000000000000000000000000022 -S315600038400000000000000000000000000000000012 -S315600038500000000000000000000000000000000002 -S3156000386000000000000000000000000000000000F2 -S3156000387000000000000000000000000000000000E2 -S3156000388000000000000000000000000000000000D2 -S3156000389000000000000000000000000000000000C2 -S315600038A000000000000000000000000000000000B2 -S315600038B000000000000000000000000000000000A2 -S315600038C00000000000000000000000000000000092 -S315600038D00000000000000000000000000000000082 -S315600038E00000000000000000000000000000000072 -S315600038F00000000000000000000000000000000062 -S315600039000000000000000000000000000000000051 -S315600039100000000000000000000000000000000041 -S315600039200000000000000000000000000000000031 -S315600039300000000000000000000000000000000021 -S315600039400000000000000000000000000000000011 -S315600039500000000000000000000000000000000001 -S3156000396000000000000000000000000000000000F1 -S3156000397000000000000000000000000000000000E1 -S3156000398000000000000000000000000000000000D1 -S3156000399000000000000000000000000000000000C1 -S315600039A000000000000000000000000000000000B1 -S315600039B000000000000000000000000000000000A1 -S315600039C00000000000000000000000000000000091 -S315600039D00000000000000000000000000000000081 -S315600039E00000000000000000000000000000000071 -S315600039F00000000000000000000000000000000061 -S31560003A000000000000000000000000000000000050 -S31560003A100000000000000000000000000000000040 -S31560003A200000000000000000000000000000000030 -S31560003A300000000000000000000000000000000020 -S31560003A400000000000000000000000000000000010 -S31560003A500000000000000000000000000000000000 -S31560003A6000000000000000000000000000000000F0 -S31560003A7000000000000000000000000000000000E0 -S31560003A8000000000000000000000000000000000D0 -S31560003A9000000000000000000000000000000000C0 -S31560003AA000000000000000000000000000000000B0 -S31560003AB000000000000000000000000000000000A0 -S31560003AC00000000000000000000000000000000090 -S31560003AD00000000000000000000000000000000080 -S31560003AE00000000000000000000000000000000070 -S31560003AF00000000000000000000000000000000060 -S31560003B00000000000000000000000000000000004F -S31560003B10000000000000000000000000000000003F -S31560003B20000000000000000000000000000000002F -S31560003B30000000000000000000000000000000001F -S31560003B40000000000000000000000000000000000F -S31560003B5000000000000000000000000000000000FF -S31560003B6000000000000000000000000000000000EF -S31560003B7000000000000000000000000000000000DF -S31560003B8000000000000000000000000000000000CF -S31560003B9000000000000000000000000000000000BF -S31560003BA000000000000000000000000000000000AF -S31560003BB0000000000000000000000000000000009F -S31560003BC0000000000000000000000000000000008F -S31560003BD0000000000000000000000000000000007F -S31560003BE0000000000000000000000000000000006F -S31560003BF0000000000000000000000000000000005F -S31560003C00000000000000000000000000000000004E -S31560003C10000000000000000000000000000000003E -S31560003C20000000000000000000000000000000002E -S31560003C30000000000000000000000000000000001E -S31560003C40000000000000000000000000000000000E -S31560003C5000000000000000000000000000000000FE -S31560003C6000000000000000000000000000000000EE -S31560003C7000000000000000000000000000000000DE -S31560003C8000000000000000000000000000000000CE -S31560003C9000000000000000000000000000000000BE -S31560003CA000000000000000000000000000000000AE -S31560003CB0000000000000000000000000000000009E -S31560003CC0000000000000000000000000000000008E -S31560003CD0000000000000000000000000000000007E -S31560003CE0000000000000000000000000000000006E -S31560003CF0000000000000000000000000000000005E -S31560003D00000000000000000000000000000000004D -S31560003D10000000000000000000000000000000003D -S31560003D20000000000000000000000000000000002D -S31560003D30000000000000000000000000000000001D -S31560003D40000000000000000000000000000000000D -S31560003D5000000000000000000000000000000000FD -S31560003D6000000000000000000000000000000000ED -S31560003D7000000000000000000000000000000000DD -S31560003D8000000000000000000000000000000000CD -S31560003D9000000000000000000000000000000000BD -S31560003DA000000000000000000000000000000000AD -S31560003DB0000000000000000000000000000000009D -S31560003DC0000000000000000000000000000000008D -S31560003DD0000000000000000000000000000000007D -S31560003DE0000000000000000000000000000000006D -S31560003DF0000000000000000000000000000000005D -S31560003E00000000000000000000000000000000004C -S31560003E10000000000000000000000000000000003C -S31560003E20000000000000000000000000000000002C -S31560003E30000000000000000000000000000000001C -S31560003E40000000000000000000000000000000000C -S31560003E5000000000000000000000000000000000FC -S31560003E6000000000000000000000000000000000EC -S31560003E7000000000000000000000000000000000DC -S31560003E8000000000000000000000000000000000CC -S31560003E9000000000000000000000000000000000BC -S31560003EA000000000000000000000000000000000AC -S31560003EB0000000000000000000000000000000009C -S31560003EC0000000000000000000000000000000008C -S31560003ED0000000000000000000000000000000007C -S31560003EE0000000000000000000000000000000006C -S31560003EF0000000000000000000000000000000005C -S31560003F00000000000000000000000000000000004B -S31560003F10000000000000000000000000000000003B -S31560003F20000000000000000000000000000000002B -S31560003F30000000000000000000000000000000001B -S31560003F40000000000000000000000000000000000B -S31560003F5000000000000000000000000000000000FB -S31560003F6000000000000000000000000000000000EB -S31560003F7000000000000000000000000000000000DB -S31560003F8000000000000000000000000000000000CB -S31560003F9000000000000000000000000000000000BB -S31560003FA000000000000000000000000000000000AB -S31560003FB0000000000000000000000000000000009B -S31560003FC0000000000000000000000000000000008B -S31560003FD0000000000000000000000000000000007B -S31560003FE0000000000000000000000000000000006B -S31560003FF0000000000000000000000000000000005B -S31560004000000000000000000000000000000000004A -S31560004010000000000000000000000000000000003A -S31560004020000000000000000000000000000000002A -S31560004030000000000000000000000000000000001A -S31560004040000000000000000000000000000000000A -S3156000405000000000000000000000000000000000FA -S3156000406000000000000000000000000000000000EA -S3156000407000000000000000000000000000000000DA -S3156000408000000000000000000000000000000000CA -S3156000409000000000000000000000000000000000BA -S315600040A000000000000000000000000000000000AA -S315600040B0000000000000000000000000000000009A -S315600040C0000000000000000000000000000000008A -S315600040D0000000000000000000000000000000007A -S315600040E0000000000000000000000000000000006A -S315600040F0000000000000000000000000000000005A -S315600041000000000000000000000000000000000049 -S315600041100000000000000000000000000000000039 -S315600041200000000000000000000000000000000029 -S315600041300000000000000000000000000000000019 -S315600041400000000000000000000000000000000009 -S3156000415000000000000000000000000000000000F9 -S3156000416000000000000000000000000000000000E9 -S3156000417000000000000000000000000000000000D9 -S3156000418000000000000000000000000000000000C9 -S3156000419000000000000000000000000000000000B9 -S315600041A000000000000000000000000000000000A9 -S315600041B00000000000000000000000000000000099 -S315600041C00000000000000000000000000000000089 -S315600041D00000000000000000000000000000000079 -S315600041E00000000000000000000000000000000069 -S315600041F00000000000000000000000000000000059 -S315600042000000000000000000000000000000000048 -S315600042100000000000000000000000000000000038 -S315600042200000000000000000000000000000000028 -S315600042300000000000000000000000000000000018 -S315600042400000000000000000000000000000000008 -S3156000425000000000000000000000000000000000F8 -S3156000426000000000000000000000000000000000E8 -S3156000427000000000000000000000000000000000D8 -S3156000428000000000000000000000000000000000C8 -S3156000429000000000000000000000000000000000B8 -S315600042A000000000000000000000000000000000A8 -S315600042B00000000000000000000000000000000098 -S315600042C00000000000000000000000000000000088 -S315600042D00000000000000000000000000000000078 -S315600042E00000000000000000000000000000000068 -S315600042F00000000000000000000000000000000058 -S315600043000000000000000000000000000000000047 -S315600043100000000000000000000000000000000037 -S315600043200000000000000000000000000000000027 -S315600043300000000000000000000000000000000017 -S315600043400000000000000000000000000000000007 -S3156000435000000000000000000000000000000000F7 -S3156000436000000000000000000000000000000000E7 -S3156000437000000000000000000000000000000000D7 -S3156000438000000000000000000000000000000000C7 -S3156000439000000000000000000000000000000000B7 -S315600043A000000000000000000000000000000000A7 -S315600043B00000000000000000000000000000000097 -S315600043C00000000000000000000000000000000087 -S315600043D00000000000000000000000000000000077 -S315600043E00000000000000000000000000000000067 -S315600043F00000000000000000000000000000000057 -S315600044000000000000000000000000000000000046 -S315600044100000000000000000000000000000000036 -S315600044200000000000000000000000000000000026 -S315600044300000000000000000000000000000000016 -S315600044400000000000000000000000000000000006 -S3156000445000000000000000000000000000000000F6 -S3156000446000000000000000000000000000000000E6 -S3156000447000000000000000000000000000000000D6 -S3156000448000000000000000000000000000000000C6 -S3156000449000000000000000000000000000000000B6 -S315600044A000000000000000000000000000000000A6 -S315600044B00000000000000000000000000000000096 -S315600044C00000000000000000000000000000000086 -S315600044D00000000000000000000000000000000076 -S315600044E00000000000000000000000000000000066 -S315600044F00000000000000000000000000000000056 -S315600045000000000000000000000000000000000045 -S315600045100000000000000000000000000000000035 -S315600045200000000000000000000000000000000025 -S315600045300000000000000000000000000000000015 -S315600045400000000000000000000000000000000005 -S3156000455000000000000000000000000000000000F5 -S3156000456000000000000000000000000000000000E5 -S3156000457000000000000000000000000000000000D5 -S3156000458000000000000000000000000000000000C5 -S3156000459000000000000000000000000000000000B5 -S315600045A000000000000000000000000000000000A5 -S315600045B00000000000000000000000000000000095 -S315600045C00000000000000000000000000000000085 -S315600045D00000000000000000000000000000000075 -S315600045E00000000000000000000000000000000065 -S315600045F00000000000000000000000000000000055 -S315600046000000000000000000000000000000000044 -S315600046100000000000000000000000000000000034 -S315600046200000000000000000000000000000000024 -S315600046300000000000000000000000000000000014 -S315600046400000000000000000000000000000000004 -S3156000465000000000000000000000000000000000F4 -S3156000466000000000000000000000000000000000E4 -S3156000467000000000000000000000000000000000D4 -S3156000468000000000000000000000000000000000C4 -S3156000469000000000000000000000000000000000B4 -S315600046A000000000000000000000000000000000A4 -S315600046B00000000000000000000000000000000094 -S315600046C00000000000000000000000000000000084 -S315600046D00000000000000000000000000000000074 -S315600046E00000000000000000000000000000000064 -S315600046F00000000000000000000000000000000054 -S315600047000000000000000000000000000000000043 -S315600047100000000000000000000000000000000033 -S315600047200000000000000000000000000000000023 -S315600047300000000000000000000000000000000013 -S315600047400000000000000000000000000000000003 -S3156000475000000000000000000000000000000000F3 -S3156000476000000000000000000000000000000000E3 -S3156000477000000000000000000000000000000000D3 -S3156000478000000000000000000000000000000000C3 -S3156000479000000000000000000000000000000000B3 -S315600047A000000000000000000000000000000000A3 -S315600047B00000000000000000000000000000000093 -S315600047C00000000000000000000000000000000083 -S315600047D00000000000000000000000000000000073 -S315600047E00000000000000000000000000000000063 -S315600047F00000000000000000000000000000000053 -S315600048000000000000000000000000000000000042 -S315600048100000000000000000000000000000000032 -S315600048200000000000000000000000000000000022 -S315600048300000000000000000000000000000000012 -S315600048400000000000000000000000000000000002 -S3156000485000000000000000000000000000000000F2 -S3156000486000000000000000000000000000000000E2 -S3156000487000000000000000000000000000000000D2 -S3156000488000000000000000000000000000000000C2 -S3156000489000000000000000000000000000000000B2 -S315600048A000000000000000000000000000000000A2 -S315600048B00000000000000000000000000000000092 -S315600048C00000000000000000000000000000000082 -S315600048D00000000000000000000000000000000072 -S315600048E00000000000000000000000000000000062 -S315600048F00000000000000000000000000000000052 -S315600049000000000000000000000000000000000041 -S315600049100000000000000000000000000000000031 -S315600049200000000000000000000000000000000021 -S315600049300000000000000000000000000000000011 -S315600049400000000000000000000000000000000001 -S3156000495000000000000000000000000000000000F1 -S3156000496000000000000000000000000000000000E1 -S3156000497000000000000000000000000000000000D1 -S3156000498000000000000000000000000000000000C1 -S3156000499000000000000000000000000000000000B1 -S315600049A000000000000000000000000000000000A1 -S315600049B00000000000000000000000000000000091 -S315600049C00000000000000000000000000000000081 -S315600049D00000000000000000000000000000000071 -S315600049E00000000000000000000000000000000061 -S315600049F00000000000000000000000000000000051 -S31560004A000000000000000000000000000000000040 -S31560004A100000000000000000000000000000000030 -S31560004A200000000000000000000000000000000020 -S31560004A300000000000000000000000000000000010 -S31560004A400000000000000000000000000000000000 -S31560004A5000000000000000000000000000000000F0 -S31560004A6000000000000000000000000000000000E0 -S31560004A7000000000000000000000000000000000D0 -S31560004A8000000000000000000000000000000000C0 -S31560004A9000000000000000000000000000000000B0 -S31560004AA000000000000000000000000000000000A0 -S31560004AB00000000000000000000000000000000090 -S31560004AC00000000000000000000000000000000080 -S31560004AD00000000000000000000000000000000070 -S31560004AE00000000000000000000000000000000060 -S31560004AF00000000000000000000000000000000050 -S31560004B00000000000000000000000000000000003F -S31560004B10000000000000000000000000000000002F -S31560004B20000000000000000000000000000000001F -S31560004B30000000000000000000000000000000000F -S31560004B4000000000000000000000000000000000FF -S31560004B5000000000000000000000000000000000EF -S31560004B6000000000000000000000000000000000DF -S31560004B7000000000000000000000000000000000CF -S31560004B8000000000000000000000000000000000BF -S31560004B9000000000000000000000000000000000AF -S31560004BA0000000000000000000000000000000009F -S31560004BB0000000000000000000000000000000008F -S31560004BC0000000000000000000000000000000007F -S31560004BD0000000000000000000000000000000006F -S31560004BE0000000000000000000000000000000005F -S31560004BF0000000000000000000000000000000004F -S31560004C00000000000000000000000000000000003E -S31560004C10000000000000000000000000000000002E -S31560004C20000000000000000000000000000000001E -S31560004C30000000000000000000000000000000000E -S31560004C4000000000000000000000000000000000FE -S31560004C5000000000000000000000000000000000EE -S31560004C6000000000000000000000000000000000DE -S31560004C7000000000000000000000000000000000CE -S31560004C8000000000000000000000000000000000BE -S31560004C9000000000000000000000000000000000AE -S31560004CA0000000000000000000000000000000009E -S31560004CB0000000000000000000000000000000008E -S31560004CC0000000000000000000000000000000007E -S31560004CD0000000000000000000000000000000006E -S31560004CE0000000000000000000000000000000005E -S31560004CF0000000000000000000000000000000004E -S31560004D00000000000000000000000000000000003D -S31560004D10000000000000000000000000000000002D -S31560004D20000000000000000000000000000000001D -S31560004D30000000000000000000000000000000000D -S31560004D4000000000000000000000000000000000FD -S31560004D5000000000000000000000000000000000ED -S31560004D6000000000000000000000000000000000DD -S31560004D7000000000000000000000000000000000CD -S31560004D8000000000000000000000000000000000BD -S31560004D9000000000000000000000000000000000AD -S31560004DA0000000000000000000000000000000009D -S31560004DB0000000000000000000000000000000008D -S31560004DC0000000000000000000000000000000007D -S31560004DD0000000000000000000000000000000006D -S31560004DE0000000000000000000000000000000005D -S31560004DF0000000000000000000000000000000004D -S31560004E00000000000000000000000000000000003C -S31560004E10000000000000000000000000000000002C -S31560004E20000000000000000000000000000000001C -S31560004E30000000000000000000000000000000000C -S31560004E4000000000000000000000000000000000FC -S31560004E5000000000000000000000000000000000EC -S31560004E6000000000000000000000000000000000DC -S31560004E7000000000000000000000000000000000CC -S31560004E8000000000000000000000000000000000BC -S31560004E9000000000000000000000000000000000AC -S31560004EA0000000000000000000000000000000009C -S31560004EB0000000000000000000000000000000008C -S31560004EC0000000000000000000000000000000007C -S31560004ED0000000000000000000000000000000006C -S31560004EE0000000000000000000000000000000005C -S31560004EF0000000000000000000000000000000004C -S31560004F00000000000000000000000000000000003B -S31560004F10000000000000000000000000000000002B -S31560004F20000000000000000000000000000000001B -S31560004F30000000000000000000000000000000000B -S31560004F4000000000000000000000000000000000FB -S31560004F5000000000000000000000000000000000EB -S31560004F6000000000000000000000000000000000DB -S31560004F7000000000000000000000000000000000CB -S31560004F8000000000000000000000000000000000BB -S31560004F9000000000000000000000000000000000AB -S31560004FA0000000000000000000000000000000009B -S31560004FB0000000000000000000000000000000008B -S31560004FC0000000000000000000000000000000007B -S31560004FD0000000000000000000000000000000006B -S31560004FE0000000000000000000000000000000005B -S31560004FF0000000000000000000000000000000004B -S31560005000000000000000000000000000000000003A -S31560005010000000000000000000000000000000002A -S31560005020000000000000000000000000000000001A -S31560005030000000000000000000000000000000000A -S3156000504000000000000000000000000000000000FA -S3156000505000000000000000000000000000000000EA -S3156000506000000000000000000000000000000000DA -S3156000507000000000000000000000000000000000CA -S3156000508000000000000000000000000000000000BA -S3156000509000000000000000000000000000000000AA -S315600050A0000000000000000000000000000000009A -S315600050B0000000000000000000000000000000008A -S315600050C0000000000000000000000000000000007A -S315600050D0000000000000000000000000000000006A -S315600050E0000000000000000000000000000000005A -S315600050F0000000000000000000000000000000004A -S315600051000000000000000000000000000000000039 -S315600051100000000000000000000000000000000029 -S315600051200000000000000000000000000000000019 -S315600051300000000000000000000000000000000009 -S3156000514000000000000000000000000000000000F9 -S3156000515000000000000000000000000000000000E9 -S3156000516000000000000000000000000000000000D9 -S3156000517000000000000000000000000000000000C9 -S3156000518000000000000000000000000000000000B9 -S3156000519000000000000000000000000000000000A9 -S315600051A00000000000000000000000000000000099 -S315600051B00000000000000000000000000000000089 -S315600051C00000000000000000000000000000000079 -S315600051D00000000000000000000000000000000069 -S315600051E00000000000000000000000000000000059 -S315600051F00000000000000000000000000000000049 -S315600052000000000000000000000000000000000038 -S315600052100000000000000000000000000000000028 -S315600052200000000000000000000000000000000018 -S315600052300000000000000000000000000000000008 -S3156000524000000000000000000000000000000000F8 -S3156000525000000000000000000000000000000000E8 -S3156000526000000000000000000000000000000000D8 -S3156000527000000000000000000000000000000000C8 -S3156000528000000000000000000000000000000000B8 -S3156000529000000000000000000000000000000000A8 -S315600052A00000000000000000000000000000000098 -S315600052B00000000000000000000000000000000088 -S315600052C00000000000000000000000000000000078 -S315600052D00000000000000000000000000000000068 -S315600052E00000000000000000000000000000000058 -S315600052F00000000000000000000000000000000048 -S315600053000000000000000000000000000000000037 -S315600053100000000000000000000000000000000027 -S315600053200000000000000000000000000000000017 -S315600053300000000000000000000000000000000007 -S3156000534000000000000000000000000000000000F7 -S3156000535000000000000000000000000000000000E7 -S3156000536000000000000000000000000000000000D7 -S3156000537000000000000000000000000000000000C7 -S3156000538000000000000000000000000000000000B7 -S3156000539000000000000000000000000000000000A7 -S315600053A00000000000000000000000000000000097 -S315600053B00000000000000000000000000000000087 -S315600053C00000000000000000000000000000000077 -S315600053D00000000000000000000000000000000067 -S315600053E00000000000000000000000000000000057 -S315600053F00000000000000000000000000000000047 -S315600054000000000000000000000000000000000036 -S315600054100000000000000000000000000000000026 -S315600054200000000000000000000000000000000016 -S315600054300000000000000000000000000000000006 -S3156000544000000000000000000000000000000000F6 -S3156000545000000000000000000000000000000000E6 -S3156000546000000000000000000000000000000000D6 -S3156000547000000000000000000000000000000000C6 -S3156000548000000000000000000000000000000000B6 -S3156000549000000000000000000000000000000000A6 -S315600054A00000000000000000000000000000000096 -S315600054B00000000000000000000000000000000086 -S315600054C00000000000000000000000000000000076 -S315600054D00000000000000000000000000000000066 -S315600054E00000000000000000000000000000000056 -S315600054F00000000000000000000000000000000046 -S315600055000000000000000000000000000000000035 -S315600055100000000000000000000000000000000025 -S315600055200000000000000000000000000000000015 -S315600055300000000000000000000000000000000005 -S3156000554000000000000000000000000000000000F5 -S3156000555000000000000000000000000000000000E5 -S3156000556000000000000000000000000000000000D5 -S3156000557000000000000000000000000000000000C5 -S3156000558000000000000000000000000000000000B5 -S3156000559000000000000000000000000000000000A5 -S315600055A00000000000000000000000000000000095 -S315600055B00000000000000000000000000000000085 -S315600055C00000000000000000000000000000000075 -S315600055D00000000000000000000000000000000065 -S315600055E00000000000000000000000000000000055 -S315600055F00000000000000000000000000000000045 -S315600056000000000000000000000000000000000034 -S315600056100000000000000000000000000000000024 -S315600056200000000000000000000000000000000014 -S315600056300000000000000000000000000000000004 -S3156000564000000000000000000000000000000000F4 -S3156000565000000000000000000000000000000000E4 -S3156000566000000000000000000000000000000000D4 -S3156000567000000000000000000000000000000000C4 -S3156000568000000000000000000000000000000000B4 -S3156000569000000000000000000000000000000000A4 -S315600056A00000000000000000000000000000000094 -S315600056B00000000000000000000000000000000084 -S315600056C00000000000000000000000000000000074 -S315600056D00000000000000000000000000000000064 -S315600056E00000000000000000000000000000000054 -S315600056F00000000000000000000000000000000044 -S315600057000000000000000000000000000000000033 -S315600057100000000000000000000000000000000023 -S315600057200000000000000000000000000000000013 -S315600057300000000000000000000000000000000003 -S3156000574000000000000000000000000000000000F3 -S3156000575000000000000000000000000000000000E3 -S3156000576000000000000000000000000000000000D3 -S3156000577000000000000000000000000000000000C3 -S3156000578000000000000000000000000000000000B3 -S3156000579000000000000000000000000000000000A3 -S315600057A00000000000000000000000000000000093 -S315600057B00000000000000000000000000000000083 -S315600057C00000000000000000000000000000000073 -S315600057D00000000000000000000000000000000063 -S315600057E00000000000000000000000000000000053 -S315600057F00000000000000000000000000000000043 -S315600058000000000000000000000000000000000032 -S315600058100000000000000000000000000000000022 -S315600058200000000000000000000000000000000012 -S315600058300000000000000000000000000000000002 -S3156000584000000000000000000000000000000000F2 -S3156000585000000000000000000000000000000000E2 -S3156000586000000000000000000000000000000000D2 -S3156000587000000000000000000000000000000000C2 -S3156000588000000000000000000000000000000000B2 -S3156000589000000000000000000000000000000000A2 -S315600058A00000000000000000000000000000000092 -S315600058B00000000000000000000000000000000082 -S315600058C00000000000000000000000000000000072 -S315600058D00000000000000000000000000000000062 -S315600058E00000000000000000000000000000000052 -S315600058F00000000000000000000000000000000042 -S315600059000000000000000000000000000000000031 -S315600059100000000000000000000000000000000021 -S315600059200000000000000000000000000000000011 -S315600059300000000000000000000000000000000001 -S3156000594000000000000000000000000000000000F1 -S3156000595000000000000000000000000000000000E1 -S3156000596000000000000000000000000000000000D1 -S3156000597000000000000000000000000000000000C1 -S3156000598000000000000000000000000000000000B1 -S3156000599000000000000000000000000000000000A1 -S315600059A00000000000000000000000000000000091 -S315600059B00000000000000000000000000000000081 -S315600059C00000000000000000000000000000000071 -S315600059D00000000000000000000000000000000061 -S315600059E00000000000000000000000000000000051 -S315600059F00000000000000000000000000000000041 -S31560005A000000000000000000000000000000000030 -S31560005A100000000000000000000000000000000020 -S31560005A200000000000000000000000000000000010 -S31560005A300000000000000000000000000000000000 -S31560005A4000000000000000000000000000000000F0 -S31560005A5000000000000000000000000000000000E0 -S31560005A6000000000000000000000000000000000D0 -S31560005A7000000000000000000000000000000000C0 -S31560005A8000000000000000000000000000000000B0 -S31560005A9000000000000000000000000000000000A0 -S31560005AA00000000000000000000000000000000090 -S31560005AB00000000000000000000000000000000080 -S31560005AC00000000000000000000000000000000070 -S31560005AD00000000000000000000000000000000060 -S31560005AE00000000000000000000000000000000050 -S31560005AF00000000000000000000000000000000040 -S31560005B00000000000000000000000000000000002F -S31560005B10000000000000000000000000000000001F -S31560005B20000000000000000000000000000000000F -S31560005B3000000000000000000000000000000000FF -S31560005B4000000000000000000000000000000000EF -S31560005B5000000000000000000000000000000000DF -S31560005B6000000000000000000000000000000000CF -S31560005B7000000000000000000000000000000000BF -S31560005B8000000000000000000000000000000000AF -S31560005B90000000000000000000000000000000009F -S31560005BA0000000000000000000000000000000008F -S31560005BB0000000000000000000000000000000007F -S31560005BC0000000000000000000000000000000006F -S31560005BD0000000000000000000000000000000005F -S31560005BE0000000000000000000000000000000004F -S31560005BF0000000000000000000000000000000003F -S31560005C00000000000000000000000000000000002E -S31560005C10000000000000000000000000000000001E -S31560005C20000000000000000000000000000000000E -S31560005C3000000000000000000000000000000000FE -S31560005C4000000000000000000000000000000000EE -S31560005C5000000000000000000000000000000000DE -S31560005C6000000000000000000000000000000000CE -S31560005C7000000000000000000000000000000000BE -S31560005C8000000000000000000000000000000000AE -S31560005C90000000000000000000000000000000009E -S31560005CA0000000000000000000000000000000008E -S31560005CB0000000000000000000000000000000007E -S31560005CC0000000000000000000000000000000006E -S31560005CD0000000000000000000000000000000005E -S31560005CE0000000000000000000000000000000004E -S31560005CF0000000000000000000000000000000003E -S31560005D00000000000000000000000000000000002D -S31560005D10000000000000000000000000000000001D -S31560005D20000000000000000000000000000000000D -S31560005D3000000000000000000000000000000000FD -S31560005D4000000000000000000000000000000000ED -S31560005D5000000000000000000000000000000000DD -S31560005D6000000000000000000000000000000000CD -S31560005D7000000000000000000000000000000000BD -S31560005D8000000000000000000000000000000000AD -S31560005D90000000000000000000000000000000009D -S31560005DA0000000000000000000000000000000008D -S31560005DB0000000000000000000000000000000007D -S31560005DC0000000000000000000000000000000006D -S31560005DD0000000000000000000000000000000005D -S31560005DE0000000000000000000000000000000004D -S31560005DF0000000000000000000000000000000003D -S31560005E00000000000000000000000000000000002C -S31560005E10000000000000000000000000000000001C -S31560005E20000000000000000000000000000000000C -S31560005E3000000000000000000000000000000000FC -S31560005E4000000000000000000000000000000000EC -S31560005E5000000000000000000000000000000000DC -S31560005E6000000000000000000000000000000000CC -S31560005E7000000000000000000000000000000000BC -S31560005E8000000000000000000000000000000000AC -S31560005E90000000000000000000000000000000009C -S31560005EA0000000000000000000000000000000008C -S31560005EB0000000000000000000000000000000007C -S31560005EC0000000000000000000000000000000006C -S31560005ED0000000000000000000000000000000005C -S31560005EE0000000000000000000000000000000004C -S31560005EF0000000000000000000000000000000003C -S31560005F00000000000000000000000000000000002B -S31560005F10000000000000000000000000000000001B -S31560005F20000000000000000000000000000000000B -S31560005F3000000000000000000000000000000000FB -S31560005F4000000000000000000000000000000000EB -S31560005F5000000000000000000000000000000000DB -S31560005F6000000000000000000000000000000000CB -S31560005F7000000000000000000000000000000000BB -S31560005F8000000000000000000000000000000000AB -S31560005F90000000000000000000000000000000009B -S31560005FA0000000000000000000000000000000008B -S31560005FB0000000000000000000000000000000007B -S31560005FC0000000000000000000000000000000006B -S31560005FD0000000000000000000000000000000005B -S31560005FE0000000000000000000000000000000004B -S31560005FF0000000000000000000000000000000003B -S31560006000000000000000000000000000000000002A -S31560006010000000000000000000000000000000001A -S31560006020000000000000000000000000000000000A -S3156000603000000000000000000000000000000000FA -S3156000604000000000000000000000000000000000EA -S3156000605000000000000000000000000000000000DA -S3156000606000000000000000000000000000000000CA -S3156000607000000000000000000000000000000000BA -S3156000608000000000000000000000000000000000AA -S31560006090000000000000000000000000000000009A -S315600060A0000000000000000000000000000000008A -S315600060B0000000000000000000000000000000007A -S315600060C0000000000000000000000000000000006A -S315600060D0000000000000000000000000000000005A -S315600060E0000000000000000000000000000000004A -S315600060F0000000000000000000000000000000003A -S315600061000000000000000000000000000000000029 -S315600061100000000000000000000000000000000019 -S315600061200000000000000000000000000000000009 -S3156000613000000000000000000000000000000000F9 -S3156000614000000000000000000000000000000000E9 -S3156000615000000000000000000000000000000000D9 -S3156000616000000000000000000000000000000000C9 -S3156000617000000000000000000000000000000000B9 -S3156000618000000000000000000000000000000000A9 -S315600061900000000000000000000000000000000099 -S315600061A00000000000000000000000000000000089 -S315600061B00000000000000000000000000000000079 -S315600061C00000000000000000000000000000000069 -S315600061D00000000000000000000000000000000059 -S315600061E00000000000000000000000000000000049 -S315600061F00000000000000000000000000000000039 -S315600062000000000000000000000000000000000028 -S315600062100000000000000000000000000000000018 -S315600062200000000000000000000000000000000008 -S3156000623000000000000000000000000000000000F8 -S3156000624000000000000000000000000000000000E8 -S3156000625000000000000000000000000000000000D8 -S3156000626000000000000000000000000000000000C8 -S3156000627000000000000000000000000000000000B8 -S3156000628000000000000000000000000000000000A8 -S315600062900000000000000000000000000000000098 -S315600062A00000000000000000000000000000000088 -S315600062B00000000000000000000000000000000078 -S315600062C00000000000000000000000000000000068 -S315600062D00000000000000000000000000000000058 -S315600062E00000000000000000000000000000000048 -S315600062F00000000000000000000000000000000038 -S315600063000000000000000000000000000000000027 -S315600063100000000000000000000000000000000017 -S315600063200000000000000000000000000000000007 -S3156000633000000000000000000000000000000000F7 -S3156000634000000000000000000000000000000000E7 -S3156000635000000000000000000000000000000000D7 -S3156000636000000000000000000000000000000000C7 -S3156000637000000000000000000000000000000000B7 -S3156000638000000000000000000000000000000000A7 -S315600063900000000000000000000000000000000097 -S315600063A00000000000000000000000000000000087 -S315600063B00000000000000000000000000000000077 -S315600063C00000000000000000000000000000000067 -S315600063D00000000000000000000000000000000057 -S315600063E00000000000000000000000000000000047 -S315600063F00000000000000000000000000000000037 -S315600064000000000000000000000000000000000026 -S315600064100000000000000000000000000000000016 -S315600064200000000000000000000000000000000006 -S3156000643000000000000000000000000000000000F6 -S3156000644000000000000000000000000000000000E6 -S3156000645000000000000000000000000000000000D6 -S3156000646000000000000000000000000000000000C6 -S3156000647000000000000000000000000000000000B6 -S3156000648000000000000000000000000000000000A6 -S315600064900000000000000000000000000000000096 -S315600064A00000000000000000000000000000000086 -S315600064B00000000000000000000000000000000076 -S315600064C00000000000000000000000000000000066 -S315600064D00000000000000000000000000000000056 -S315600064E00000000000000000000000000000000046 -S315600064F00000000000000000000000000000000036 -S315600065000000000000000000000000000000000025 -S315600065100000000000000000000000000000000015 -S315600065200000000000000000000000000000000005 -S3156000653000000000000000000000000000000000F5 -S3156000654000000000000000000000000000000000E5 -S3156000655000000000000000000000000000000000D5 -S3156000656000000000000000000000000000000000C5 -S3156000657000000000000000000000000000000000B5 -S3156000658000000000000000000000000000000000A5 -S315600065900000000000000000000000000000000095 -S315600065A00000000000000000000000000000000085 -S315600065B00000000000000000000000000000000075 -S315600065C00000000000000000000000000000000065 -S315600065D00000000000000000000000000000000055 -S315600065E00000000000000000000000000000000045 -S315600065F00000000000000000000000000000000035 -S315600066000000000000000000000000000000000024 -S315600066100000000000000000000000000000000014 -S315600066200000000000000000000000000000000004 -S3156000663000000000000000000000000000000000F4 -S3156000664000000000000000000000000000000000E4 -S3156000665000000000000000000000000000000000D4 -S3156000666000000000000000000000000000000000C4 -S3156000667000000000000000000000000000000000B4 -S3156000668000000000000000000000000000000000A4 -S315600066900000000000000000000000000000000094 -S315600066A00000000000000000000000000000000084 -S315600066B00000000000000000000000000000000074 -S315600066C00000000000000000000000000000000064 -S315600066D00000000000000000000000000000000054 -S315600066E00000000000000000000000000000000044 -S315600066F00000000000000000000000000000000034 -S315600067000000000000000000000000000000000023 -S315600067100000000000000000000000000000000013 -S315600067200000000000000000000000000000000003 -S3156000673000000000000000000000000000000000F3 -S3156000674000000000000000000000000000000000E3 -S3156000675000000000000000000000000000000000D3 -S3156000676000000000000000000000000000000000C3 -S3156000677000000000000000000000000000000000B3 -S3156000678000000000000000000000000000000000A3 -S315600067900000000000000000000000000000000093 -S315600067A00000000000000000000000000000000083 -S315600067B00000000000000000000000000000000073 -S315600067C00000000000000000000000000000000063 -S315600067D00000000000000000000000000000000053 -S315600067E00000000000000000000000000000000043 -S315600067F00000000000000000000000000000000033 -S315600068000000000000000000000000000000000022 -S315600068100000000000000000000000000000000012 -S315600068200000000000000000000000000000000002 -S3156000683000000000000000000000000000000000F2 -S3156000684000000000000000000000000000000000E2 -S3156000685000000000000000000000000000000000D2 -S3156000686000000000000000000000000000000000C2 -S3156000687000000000000000000000000000000000B2 -S3156000688000000000000000000000000000000000A2 -S315600068900000000000000000000000000000000092 -S315600068A00000000000000000000000000000000082 -S315600068B00000000000000000000000000000000072 -S315600068C00000000000000000000000000000000062 -S315600068D00000000000000000000000000000000052 -S315600068E00000000000000000000000000000000042 -S315600068F00000000000000000000000000000000032 -S315600069000000000000000000000000000000000021 -S315600069100000000000000000000000000000000011 -S315600069200000000000000000000000000000000001 -S3156000693000000000000000000000000000000000F1 -S3156000694000000000000000000000000000000000E1 -S3156000695000000000000000000000000000000000D1 -S3156000696000000000000000000000000000000000C1 -S3156000697000000000000000000000000000000000B1 -S3156000698000000000000000000000000000000000A1 -S315600069900000000000000000000000000000000091 -S315600069A00000000000000000000000000000000081 -S315600069B00000000000000000000000000000000071 -S315600069C00000000000000000000000000000000061 -S315600069D00000000000000000000000000000000051 -S315600069E00000000000000000000000000000000041 -S315600069F00000000000000000000000000000000031 -S31560006A000000000000000000000000000000000020 -S31560006A100000000000000000000000000000000010 -S31560006A200000000000000000000000000000000000 -S31560006A3000000000000000000000000000000000F0 -S31560006A4000000000000000000000000000000000E0 -S31560006A5000000000000000000000000000000000D0 -S31560006A6000000000000000000000000000000000C0 -S31560006A7000000000000000000000000000000000B0 -S31560006A8000000000000000000000000000000000A0 -S31560006A900000000000000000000000000000000090 -S31560006AA00000000000000000000000000000000080 -S31560006AB00000000000000000000000000000000070 -S31560006AC00000000000000000000000000000000060 -S31560006AD00000000000000000000000000000000050 -S31560006AE00000000000000000000000000000000040 -S31560006AF00000000000000000000000000000000030 -S31560006B00000000000000000000000000000000001F -S31560006B10000000000000000000000000000000000F -S31560006B2000000000000000000000000000000000FF -S31560006B3000000000000000000000000000000000EF -S31560006B4000000000000000000000000000000000DF -S31560006B5000000000000000000000000000000000CF -S31560006B6000000000000000000000000000000000BF -S31560006B7000000000000000000000000000000000AF -S31560006B80000000000000000000000000000000009F -S31560006B90000000000000000000000000000000008F -S31560006BA0000000000000000000000000000000007F -S31560006BB0000000000000000000000000000000006F -S31560006BC0000000000000000000000000000000005F -S31560006BD0000000000000000000000000000000004F -S31560006BE0000000000000000000000000000000003F -S31560006BF0000000000000000000000000000000002F -S31560006C00000000000000000000000000000000001E -S31560006C10000000000000000000000000000000000E -S31560006C2000000000000000000000000000000000FE -S31560006C3000000000000000000000000000000000EE -S31560006C4000000000000000000000000000000000DE -S31560006C5000000000000000000000000000000000CE -S31560006C6000000000000000000000000000000000BE -S31560006C7000000000000000000000000000000000AE -S31560006C80000000000000000000000000000000009E -S31560006C90000000000000000000000000000000008E -S31560006CA0000000000000000000000000000000007E -S31560006CB0000000000000000000000000000000006E -S31560006CC0000000000000000000000000000000005E -S31560006CD0000000000000000000000000000000004E -S31560006CE0000000000000000000000000000000003E -S31560006CF0000000000000000000000000000000002E -S31560006D00000000000000000000000000000000001D -S31560006D10000000000000000000000000000000000D -S31560006D2000000000000000000000000000000000FD -S31560006D3000000000000000000000000000000000ED -S31560006D4000000000000000000000000000000000DD -S31560006D5000000000000000000000000000000000CD -S31560006D6000000000000000000000000000000000BD -S31560006D7000000000000000000000000000000000AD -S31560006D80000000000000000000000000000000009D -S31560006D90000000000000000000000000000000008D -S31560006DA0000000000000000000000000000000007D -S31560006DB0000000000000000000000000000000006D -S31560006DC0000000000000000000000000000000005D -S31560006DD0000000000000000000000000000000004D -S31560006DE0000000000000000000000000000000003D -S31560006DF0000000000000000000000000000000002D -S31560006E00000000000000000000000000000000001C -S31560006E10000000000000000000000000000000000C -S31560006E2000000000000000000000000000000000FC -S31560006E3000000000000000000000000000000000EC -S31560006E4000000000000000000000000000000000DC -S31560006E5000000000000000000000000000000000CC -S31560006E6000000000000000000000000000000000BC -S31560006E7000000000000000000000000000000000AC -S31560006E80000000000000000000000000000000009C -S31560006E90000000000000000000000000000000008C -S31560006EA0000000000000000000000000000000007C -S31560006EB0000000000000000000000000000000006C -S31560006EC0000000000000000000000000000000005C -S31560006ED0000000000000000000000000000000004C -S31560006EE0000000000000000000000000000000003C -S31560006EF0000000000000000000000000000000002C -S31560006F00000000000000000000000000000000001B -S31560006F10000000000000000000000000000000000B -S31560006F2000000000000000000000000000000000FB -S31560006F3000000000000000000000000000000000EB -S31560006F4000000000000000000000000000000000DB -S31560006F5000000000000000000000000000000000CB -S31560006F6000000000000000000000000000000000BB -S31560006F7000000000000000000000000000000000AB -S31560006F80000000000000000000000000000000009B -S31560006F90000000000000000000000000000000008B -S31560006FA0000000000000000000000000000000007B -S31560006FB0000000000000000000000000000000006B -S31560006FC0000000000000000000000000000000005B -S31560006FD0000000000000000000000000000000004B -S31560006FE0000000000000000000000000000000003B -S31560006FF0000000000000000000000000000000002B -S31560007000000000000000000000000000000000001A -S31560007010000000000000000000000000000000000A -S3156000702000000000000000000000000000000000FA -S3156000703000000000000000000000000000000000EA -S3156000704000000000000000000000000000000000DA -S3156000705000000000000000000000000000000000CA -S3156000706000000000000000000000000000000000BA -S3156000707000000000000000000000000000000000AA -S31560007080000000000000000000000000000000009A -S31560007090000000000000000000000000000000008A -S315600070A0000000000000000000000000000000007A -S315600070B0000000000000000000000000000000006A -S315600070C0000000000000000000000000000000005A -S315600070D0000000000000000000000000000000004A -S315600070E0000000000000000000000000000000003A -S315600070F0000000000000000000000000000000002A -S315600071000000000000000000000000000000000019 -S315600071100000000000000000000000000000000009 -S3156000712000000000000000000000000000000000F9 -S3156000713000000000000000000000000000000000E9 -S3156000714000000000000000000000000000000000D9 -S3156000715000000000000000000000000000000000C9 -S3156000716000000000000000000000000000000000B9 -S3156000717000000000000000000000000000000000A9 -S315600071800000000000000000000000000000000099 -S315600071900000000000000000000000000000000089 -S315600071A00000000000000000000000000000000079 -S315600071B00000000000000000000000000000000069 -S315600071C00000000000000000000000000000000059 -S315600071D00000000000000000000000000000000049 -S315600071E00000000000000000000000000000000039 -S315600071F00000000000000000000000000000000029 -S315600072000000000000000000000000000000000018 -S315600072100000000000000000000000000000000008 -S3156000722000000000000000000000000000000000F8 -S3156000723000000000000000000000000000000000E8 -S3156000724000000000000000000000000000000000D8 -S3156000725000000000000000000000000000000000C8 -S3156000726000000000000000000000000000000000B8 -S3156000727000000000000000000000000000000000A8 -S315600072800000000000000000000000000000000098 -S315600072900000000000000000000000000000000088 -S315600072A00000000000000000000000000000000078 -S315600072B00000000000000000000000000000000068 -S315600072C00000000000000000000000000000000058 -S315600072D00000000000000000000000000000000048 -S315600072E00000000000000000000000000000000038 -S315600072F00000000000000000000000000000000028 -S315600073000000000000000000000000000000000017 -S315600073100000000000000000000000000000000007 -S3156000732000000000000000000000000000000000F7 -S3156000733000000000000000000000000000000000E7 -S3156000734000000000000000000000000000000000D7 -S3156000735000000000000000000000000000000000C7 -S3156000736000000000000000000000000000000000B7 -S3156000737000000000000000000000000000000000A7 -S315600073800000000000000000000000000000000097 -S315600073900000000000000000000000000000000087 -S315600073A00000000000000000000000000000000077 -S315600073B00000000000000000000000000000000067 -S315600073C00000000000000000000000000000000057 -S315600073D00000000000000000000000000000000047 -S315600073E00000000000000000000000000000000037 -S315600073F00000000000000000000000000000000027 -S315600074000000000000000000000000000000000016 -S315600074100000000000000000000000000000000006 -S3156000742000000000000000000000000000000000F6 -S3156000743000000000000000000000000000000000E6 -S3156000744000000000000000000000000000000000D6 -S3156000745000000000000000000000000000000000C6 -S3156000746000000000000000000000000000000000B6 -S3156000747000000000000000000000000000000000A6 -S315600074800000000000000000000000000000000096 -S315600074900000000000000000000000000000000086 -S315600074A00000000000000000000000000000000076 -S315600074B00000000000000000000000000000000066 -S315600074C00000000000000000000000000000000056 -S315600074D00000000000000000000000000000000046 -S315600074E00000000000000000000000000000000036 -S315600074F00000000000000000000000000000000026 -S315600075000000000000000000000000000000000015 -S315600075100000000000000000000000000000000005 -S3156000752000000000000000000000000000000000F5 -S3156000753000000000000000000000000000000000E5 -S3156000754000000000000000000000000000000000D5 -S3156000755000000000000000000000000000000000C5 -S3156000756000000000000000000000000000000000B5 -S3156000757000000000000000000000000000000000A5 -S315600075800000000000000000000000000000000095 -S315600075900000000000000000000000000000000085 -S315600075A00000000000000000000000000000000075 -S315600075B00000000000000000000000000000000065 -S315600075C00000000000000000000000000000000055 -S315600075D00000000000000000000000000000000045 -S315600075E00000000000000000000000000000000035 -S315600075F00000000000000000000000000000000025 -S315600076000000000000000000000000000000000014 -S315600076100000000000000000000000000000000004 -S3156000762000000000000000000000000000000000F4 -S3156000763000000000000000000000000000000000E4 -S3156000764000000000000000000000000000000000D4 -S3156000765000000000000000000000000000000000C4 -S3156000766000000000000000000000000000000000B4 -S3156000767000000000000000000000000000000000A4 -S315600076800000000000000000000000000000000094 -S315600076900000000000000000000000000000000084 -S315600076A00000000000000000000000000000000074 -S315600076B00000000000000000000000000000000064 -S315600076C00000000000000000000000000000000054 -S315600076D00000000000000000000000000000000044 -S315600076E00000000000000000000000000000000034 -S315600076F00000000000000000000000000000000024 -S315600077000000000000000000000000000000000013 -S315600077100000000000000000000000000000000003 -S3156000772000000000000000000000000000000000F3 -S3156000773000000000000000000000000000000000E3 -S3156000774000000000000000000000000000000000D3 -S3156000775000000000000000000000000000000000C3 -S3156000776000000000000000000000000000000000B3 -S3156000777000000000000000000000000000000000A3 -S315600077800000000000000000000000000000000093 -S315600077900000000000000000000000000000000083 -S315600077A00000000000000000000000000000000073 -S315600077B00000000000000000000000000000000063 -S315600077C00000000000000000000000000000000053 -S315600077D00000000000000000000000000000000043 -S315600077E00000000000000000000000000000000033 -S315600077F00000000000000000000000000000000023 -S315600078000000000000000000000000000000000012 -S315600078100000000000000000000000000000000002 -S3156000782000000000000000000000000000000000F2 -S3156000783000000000000000000000000000000000E2 -S3156000784000000000000000000000000000000000D2 -S3156000785000000000000000000000000000000000C2 -S3156000786000000000000000000000000000000000B2 -S3156000787000000000000000000000000000000000A2 -S315600078800000000000000000000000000000000092 -S315600078900000000000000000000000000000000082 -S315600078A00000000000000000000000000000000072 -S315600078B00000000000000000000000000000000062 -S315600078C00000000000000000000000000000000052 -S315600078D00000000000000000000000000000000042 -S315600078E00000000000000000000000000000000032 -S315600078F00000000000000000000000000000000022 -S315600079000000000000000000000000000000000011 -S315600079100000000000000000000000000000000001 -S3156000792000000000000000000000000000000000F1 -S3156000793000000000000000000000000000000000E1 -S3156000794000000000000000000000000000000000D1 -S3156000795000000000000000000000000000000000C1 -S3156000796000000000000000000000000000000000B1 -S3156000797000000000000000000000000000000000A1 -S315600079800000000000000000000000000000000091 -S315600079900000000000000000000000000000000081 -S315600079A00000000000000000000000000000000071 -S315600079B00000000000000000000000000000000061 -S315600079C00000000000000000000000000000000051 -S315600079D00000000000000000000000000000000041 -S315600079E00000000000000000000000000000000031 -S315600079F00000000000000000000000000000000021 -S31560007A000000000000000000000000000000000010 -S31560007A100000000000000000000000000000000000 -S31560007A2000000000000000000000000000000000F0 -S31560007A3000000000000000000000000000000000E0 -S31560007A4000000000000000000000000000000000D0 -S31560007A5000000000000000000000000000000000C0 -S31560007A6000000000000000000000000000000000B0 -S31560007A7000000000000000000000000000000000A0 -S31560007A800000000000000000000000000000000090 -S31560007A900000000000000000000000000000000080 -S31560007AA00000000000000000000000000000000070 -S31560007AB00000000000000000000000000000000060 -S31560007AC00000000000000000000000000000000050 -S31560007AD00000000000000000000000000000000040 -S31560007AE00000000000000000000000000000000030 -S31560007AF00000000000000000000000000000000020 -S31560007B00000000000000000000000000000000000F -S31560007B1000000000000000000000000000000000FF -S31560007B2000000000000000000000000000000000EF -S31560007B3000000000000000000000000000000000DF -S31560007B4000000000000000000000000000000000CF -S31560007B5000000000000000000000000000000000BF -S31560007B6000000000000000000000000000000000AF -S31560007B70000000000000000000000000000000009F -S31560007B80000000000000000000000000000000008F -S31560007B90000000000000000000000000000000007F -S31560007BA0000000000000000000000000000000006F -S31560007BB0000000000000000000000000000000005F -S31560007BC0000000000000000000000000000000004F -S31560007BD0000000000000000000000000000000003F -S31560007BE0000000000000000000000000000000002F -S31560007BF0000000000000000000000000000000001F -S31560007C00000000000000000000000000000000000E -S31560007C1000000000000000000000000000000000FE -S31560007C2000000000000000000000000000000000EE -S31560007C3000000000000000000000000000000000DE -S31560007C4000000000000000000000000000000000CE -S31560007C5000000000000000000000000000000000BE -S31560007C6000000000000000000000000000000000AE -S31560007C70000000000000000000000000000000009E -S31560007C80000000000000000000000000000000008E -S31560007C90000000000000000000000000000000007E -S31560007CA0000000000000000000000000000000006E -S31560007CB0000000000000000000000000000000005E -S31560007CC0000000000000000000000000000000004E -S31560007CD0000000000000000000000000000000003E -S31560007CE0000000000000000000000000000000002E -S31560007CF0000000000000000000000000000000001E -S31560007D00000000000000000000000000000000000D -S31560007D1000000000000000000000000000000000FD -S31560007D2000000000000000000000000000000000ED -S31560007D3000000000000000000000000000000000DD -S31560007D4000000000000000000000000000000000CD -S31560007D5000000000000000000000000000000000BD -S31560007D6000000000000000000000000000000000AD -S31560007D70000000000000000000000000000000009D -S31560007D80000000000000000000000000000000008D -S31560007D90000000000000000000000000000000007D -S31560007DA0000000000000000000000000000000006D -S31560007DB0000000000000000000000000000000005D -S31560007DC0000000000000000000000000000000004D -S31560007DD0000000000000000000000000000000003D -S31560007DE0000000000000000000000000000000002D -S31560007DF0000000000000000000000000000000001D -S31560007E00000000000000000000000000000000000C -S31560007E1000000000000000000000000000000000FC -S31560007E2000000000000000000000000000000000EC -S31560007E3000000000000000000000000000000000DC -S31560007E4000000000000000000000000000000000CC -S31560007E5000000000000000000000000000000000BC -S31560007E6000000000000000000000000000000000AC -S31560007E70000000000000000000000000000000009C -S31560007E80000000000000000000000000000000008C -S31560007E90000000000000000000000000000000007C -S31560007EA0000000000000000000000000000000006C -S31560007EB0000000000000000000000000000000005C -S31560007EC0000000000000000000000000000000004C -S31560007ED0000000000000000000000000000000003C -S31560007EE0000000000000000000000000000000002C -S31560007EF0000000000000000000000000000000001C -S31560007F00000000000000000000000000000000000B -S31560007F1000000000000000000000000000000000FB -S31560007F2000000000000000000000000000000000EB -S31560007F3000000000000000000000000000000000DB -S31560007F4000000000000000000000000000000000CB -S31560007F5000000000000000000000000000000000BB -S31560007F6000000000000000000000000000000000AB -S31560007F70000000000000000000000000000000009B -S31560007F80000000000000000000000000000000008B -S31560007F90000000000000000000000000000000007B -S31560007FA0000000000000000000000000000000006B -S31560007FB0000000000000000000000000000000005B -S31560007FC0000000000000000000000000000000004B -S31560007FD0000000000000000000000000000000003B -S31560007FE0000000000000000000000000000000002B -S31560007FF0000000000000000000000000000000001B -S315600080009DE3BF9081C7E00881E80000030000108F -S31560008010C48000408088800112BFFFFE010000001E -S315600080209DE3BF909DE3BF909DE3BF909DE3BF90AE -S315600080309DE3BF909DE3BF9021044444A0142111A9 -S3156000804023088888A2146222250CCCCCA414A333FE -S3156000805027111111A614E04429155555A815215567 -S315600080602B199999AA1562662D1DDDDDAC15A377CE -S315600080702F222222AE15E08801100000E03FBFE00B -S31560008080E43FBFE8E83FBFF0EC3FBFF88210001E58 -S315600080908220601CC0A041E082206008C0A041E050 -S315600080A082206008C0A041E082206008C0A041E054 -S315600080B0C0A002209DE3BF909DE3BF9081E80000D1 -S315600080C081E800000100000001000000E01FBFE041 -S315600080D0E41FBFE8E81FBFF0EC1FBFF80100000017 -S315600080E00100000081E8000081E8000081E80000EE -S315600080F081E8000081E8000081C7E00881E80000AF -S31560008100A7500000AA102400A8102300EC85432085 -S31560008110EA8503202F180020AE15E150EE05C00059 -S31560008120E805C000EA05E004EC05E008AC15A0002F -S31560008130C0A58300EA250000AE05E00C2B180020E0 -S31560008140AA156150EE25400081C4400081CC8000B4 -S3156000815000000000010000000000000000000000B8 -S3156000816000000000000000000000000000000000A9 -S315600081700000000000000000000000000000000099 -S315600081800000000000000000000000000000000089 -S315600081900000000001000000010000000100000076 -S315600081A00100000001000000010000000100000065 -S315600081B00100000001000000010000000100000055 -S315600081C00100000001000000010000000100000045 -S315600081D00100000001000000010000000100000035 -S315600081E00100000001000000010000000100000025 -S315600081F00100000001000000010000000100000015 -S315600082000100000001000000010000000100000004 -S3156000821001000000010000000100000001000000F4 -S3156000822001000000010000000100000001000000E4 -S3156000823001000000010000000100000001000000D4 -S3156000824001000000010000000100000001000000C4 -S3156000825001000000010000000100000001000000B4 -S3156000826001000000010000000100000001000000A4 -S315600082700100000001000000010000000100000094 -S315600082800100000001000000010000000100000084 -S315600082900100000001000000010000000100000074 -S315600082A00100000001000000010000000100000064 -S315600082B00100000001000000010000000100000054 -S315600082C00100000001000000010000000100000044 -S315600082D00100000001000000010000000100000034 -S315600082E00100000001000000010000000100000024 -S315600082F00100000001000000010000000100000014 -S315600083000100000001000000010000000100000003 -S3156000831001000000010000000100000001000000F3 -S3156000832001000000010000000100000001000000E3 -S3156000833001000000010000000100000001000000D3 -S3156000834001000000010000000100000001000000C3 -S3156000835001000000010000000100000001000000B3 -S3156000836001000000010000000100000001000000A3 -S315600083700100000001000000010000000100000093 -S315600083800100000001000000010000000100000083 -S315600083900100000001000000010000000100000073 -S315600083A00100000001000000010000000100000063 -S315600083B00100000001000000010000000100000053 -S315600083C00100000001000000010000000100000043 -S315600083D00100000001000000010000000100000033 -S315600083E00100000001000000010000000100000023 -S315600083F00100000001000000010000000100000013 -S315600084000100000001000000010000000100000002 -S3156000841001000000010000000100000001000000F2 -S3156000842001000000010000000100000001000000E2 -S3156000843001000000010000000100000001000000D2 -S3156000844001000000010000000100000001000000C2 -S3156000845001000000010000000100000001000000B2 -S3156000846001000000010000000100000001000000A2 -S315600084700100000001000000010000000100000092 -S315600084800100000001000000010000000100000082 -S315600084900100000001000000010000000100000072 -S315600084A00100000001000000010000000100000062 -S315600084B00100000001000000010000000100000052 -S315600084C00100000001000000010000000100000042 -S315600084D00100000001000000010000000100000032 -S315600084E00100000001000000010000000100000022 -S315600084F00100000001000000010000000100000012 -S315600085000100000001000000010000000100000001 -S3156000851001000000010000000100000001000000F1 -S3156000852001000000010000000100000001000000E1 -S3156000853001000000010000000100000001000000D1 -S3156000854001000000010000000100000001000000C1 -S3156000855001000000010000000100000001000000B1 -S3156000856001000000010000000100000001000000A1 -S315600085700100000001000000010000000100000091 -S315600085800100000001000000010000000100000081 -S315600085900100000001000000010000000100000071 -S315600085A00100000001000000010000000100000061 -S315600085B00100000001000000010000000100000051 -S315600085C00100000001000000010000000100000041 -S315600085D00100000001000000010000000100000031 -S315600085E00100000001000000010000000100000021 -S315600085F00100000001000000010000000100000011 -S315600086000100000001000000010000000100000000 -S3156000861001000000010000000100000001000000F0 -S3156000862001000000010000000100000001000000E0 -S3156000863001000000010000000100000001000000D0 -S3156000864001000000010000000100000001000000C0 -S3156000865001000000010000000100000001000000B0 -S3156000866001000000010000000100000001000000A0 -S315600086700100000001000000010000000100000090 -S315600086800100000001000000010000000100000080 -S315600086900100000001000000010000000100000070 -S315600086A00100000001000000010000000100000060 -S315600086B00100000001000000010000000100000050 -S315600086C00100000001000000010000000100000040 -S315600086D00100000001000000010000000100000030 -S315600086E00100000001000000010000000100000020 -S315600086F00100000001000000010000000100000010 -S3156000870001000000010000000100000001000000FF -S3156000871001000000010000000100000001000000EF -S3156000872001000000010000000100000001000000DF -S3156000873001000000010000000100000001000000CF -S3156000874001000000010000000100000001000000BF -S3156000875001000000010000000100000001000000AF -S31560008760010000000100000001000000010000009F -S31560008770010000000100000001000000010000008F -S31560008780010000000100000001000000010000007F -S31560008790010000000100000001000000010000006F -S315600087A0010000000100000001000000010000005F -S315600087B0010000000100000001000000010000004F -S315600087C0010000000100000001000000010000003F -S315600087D0010000000100000001000000010000002F -S315600087E0010000000100000001000000010000001F -S315600087F0010000000100000001000000010000000F -S3156000880001000000010000000100000001000000FE -S3156000881001000000010000000100000001000000EE -S3156000882001000000010000000100000001000000DE -S3156000883001000000010000000100000001000000CE -S3156000884001000000010000000100000001000000BE -S3156000885001000000010000000100000001000000AE -S31560008860010000000100000001000000010000009E -S31560008870010000000100000001000000010000008E -S31560008880010000000100000001000000010000007E -S31560008890010000000100000001000000010000006E -S315600088A0010000000100000001000000010000005E -S315600088B0010000000100000001000000010000004E -S315600088C0010000000100000001000000010000003E -S315600088D0010000000100000001000000010000002E -S315600088E0010000000100000001000000010000001E -S315600088F0010000000100000001000000010000000E -S3156000890001000000010000000100000001000000FD -S3156000891001000000010000000100000001000000ED -S3156000892001000000010000000100000001000000DD -S3156000893001000000010000000100000001000000CD -S3156000894001000000010000000100000001000000BD -S3156000895001000000010000000100000001000000AD -S31560008960010000000100000001000000010000009D -S31560008970010000000100000001000000010000008D -S31560008980010000000100000001000000010000007D -S31560008990010000000100000001000000010000006D -S315600089A0010000000100000001000000010000005D -S315600089B0010000000100000001000000010000004D -S315600089C0010000000100000001000000010000003D -S315600089D0010000000100000001000000010000002D -S315600089E0010000000100000001000000010000001D -S315600089F0010000000100000001000000010000000D -S31560008A0001000000010000000100000001000000FC -S31560008A1001000000010000000100000001000000EC -S31560008A2001000000010000000100000001000000DC -S31560008A3001000000010000000100000001000000CC -S31560008A4001000000010000000100000001000000BC -S31560008A5001000000010000000100000001000000AC -S31560008A60010000000100000001000000010000009C -S31560008A70010000000100000001000000010000008C -S31560008A80010000000100000001000000010000007C -S31560008A90010000000100000001000000010000006C -S31560008AA0010000000100000001000000010000005C -S31560008AB0010000000100000001000000010000004C -S31560008AC0010000000100000001000000010000003C -S31560008AD0010000000100000001000000010000002C -S31560008AE0010000000100000001000000010000001C -S31560008AF0010000000100000001000000010000000C -S31560008B0001000000010000000100000001000000FB -S31560008B1001000000010000000100000001000000EB -S31560008B2001000000010000000100000001000000DB -S31560008B3001000000010000000100000001000000CB -S31560008B4001000000010000000100000001000000BB -S31560008B5001000000010000000100000001000000AB -S31560008B60010000000100000001000000010000009B -S31560008B70010000000100000001000000010000008B -S31560008B80010000000100000001000000010000007B -S31560008B90010000000100000001000000010000006B -S31560008BA0010000000100000001000000010000005B -S31560008BB0010000000100000001000000010000004B -S31560008BC0010000000100000001000000010000003B -S31560008BD0010000000100000001000000010000002B -S31560008BE0010000000100000001000000010000001B -S31560008BF0010000000100000001000000010000000B -S31560008C0001000000010000000100000001000000FA -S31560008C1001000000010000000100000001000000EA -S31560008C2001000000010000000100000001000000DA -S31560008C3001000000010000000100000001000000CA -S31560008C4001000000010000000100000001000000BA -S31560008C5001000000010000000100000001000000AA -S31560008C60010000000100000001000000010000009A -S31560008C70010000000100000001000000010000008A -S31560008C80010000000100000001000000010000007A -S31560008C90010000000100000001000000010000006A -S31560008CA0010000000100000001000000010000005A -S31560008CB0010000000100000001000000010000004A -S31560008CC0010000000100000001000000010000003A -S31560008CD0010000000100000001000000010000002A -S31560008CE0010000000100000001000000010000001A -S31560008CF0010000000100000001000000010000000A -S31560008D0001000000010000000100000001000000F9 -S31560008D1001000000010000000100000001000000E9 -S31560008D2001000000010000000100000001000000D9 -S31560008D3001000000010000000100000001000000C9 -S31560008D4001000000010000000100000001000000B9 -S31560008D5001000000010000000100000001000000A9 -S31560008D600100000001000000010000000100000099 -S31560008D700100000001000000010000000100000089 -S31560008D800100000001000000010000000100000079 -S31560008D900100000001000000010000000100000069 -S31560008DA00100000001000000010000000100000059 -S31560008DB00100000001000000010000000100000049 -S31560008DC00100000001000000010000000100000039 -S31560008DD00100000001000000010000000100000029 -S31560008DE00100000001000000010000000100000019 -S31560008DF00100000001000000010000000100000009 -S31560008E0001000000010000000100000001000000F8 -S31560008E1001000000010000000100000001000000E8 -S31560008E2001000000010000000100000001000000D8 -S31560008E3001000000010000000100000001000000C8 -S31560008E4001000000010000000100000001000000B8 -S31560008E5001000000010000000100000001000000A8 -S31560008E600100000001000000010000000100000098 -S31560008E700100000001000000010000000100000088 -S31560008E800100000001000000010000000100000078 -S31560008E900100000001000000010000000100000068 -S31560008EA00100000001000000010000000100000058 -S31560008EB00100000001000000010000000100000048 -S31560008EC00100000001000000010000000100000038 -S31560008ED00100000001000000010000000100000028 -S31560008EE00100000001000000010000000100000018 -S31560008EF00100000001000000010000000100000008 -S31560008F0001000000010000000100000001000000F7 -S31560008F1001000000010000000100000001000000E7 -S31560008F2001000000010000000100000001000000D7 -S31560008F3001000000010000000100000001000000C7 -S31560008F4001000000010000000100000001000000B7 -S31560008F5001000000010000000100000001000000A7 -S31560008F600100000001000000010000000100000097 -S31560008F700100000001000000010000000100000087 -S31560008F800100000001000000010000000100000077 -S31560008F900100000001000000010000000100000067 -S31560008FA00100000001000000010000000100000057 -S31560008FB00100000001000000010000000100000047 -S31560008FC00100000001000000010000000100000037 -S31560008FD00100000001000000010000000100000027 -S31560008FE00100000001000000010000000100000017 -S31560008FF00100000001000000010000000100000007 -S3156000900001000000010000000100000001000000F6 -S3156000901001000000010000000100000001000000E6 -S3156000902001000000010000000100000001000000D6 -S3156000903001000000010000000100000001000000C6 -S3156000904001000000010000000100000001000000B6 -S3156000905001000000010000000100000001000000A6 -S315600090600100000001000000010000000100000096 -S315600090700100000001000000010000000100000086 -S315600090800100000001000000010000000100000076 -S315600090900100000001000000010000000100000066 -S315600090A00100000001000000010000000100000056 -S315600090B00100000001000000010000000100000046 -S315600090C00100000001000000010000000100000036 -S315600090D00100000001000000010000000100000026 -S315600090E00100000001000000010000000100000016 -S315600090F00100000001000000010000000100000006 -S3156000910001000000010000000100000001000000F5 -S3156000911001000000010000000100000001000000E5 -S3156000912001000000010000000100000001000000D5 -S3156000913001000000010000000100000001000000C5 -S3156000914001000000010000000100000001000000B5 -S3156000915001000000010000000100000001000000A5 -S315600091600100000001000000010000000100000095 -S315600091700100000001000000010000000100000085 -S315600091800100000001000000010000000100000075 -S315600091900100000001000000010000000100000065 -S315600091A00100000001000000010000000100000055 -S315600091B00100000001000000010000000100000045 -S315600091C00100000001000000010000000100000035 -S315600091D00100000001000000010000000100000025 -S315600091E00100000001000000010000000100000015 -S315600091F00100000001000000010000000100000005 -S3156000920001000000010000000100000001000000F4 -S3156000921001000000010000000100000001000000E4 -S3156000922001000000010000000100000001000000D4 -S3156000923001000000010000000100000001000000C4 -S3156000924001000000010000000100000001000000B4 -S3156000925001000000010000000100000001000000A4 -S315600092600100000001000000010000000100000094 -S315600092700100000001000000010000000100000084 -S315600092800100000001000000010000000100000074 -S315600092900100000001000000010000000100000064 -S315600092A00100000001000000010000000100000054 -S315600092B00100000001000000010000000100000044 -S315600092C00100000001000000010000000100000034 -S315600092D00100000001000000010000000100000024 -S315600092E00100000001000000010000000100000014 -S315600092F00100000001000000010000000100000004 -S3156000930001000000010000000100000001000000F3 -S3156000931001000000010000000100000001000000E3 -S3156000932001000000010000000100000001000000D3 -S3156000933001000000010000000100000001000000C3 -S3156000934001000000010000000100000001000000B3 -S3156000935001000000010000000100000001000000A3 -S315600093600100000001000000010000000100000093 -S315600093700100000001000000010000000100000083 -S315600093800100000001000000010000000100000073 -S315600093900100000001000000010000000100000063 -S315600093A00100000001000000010000000100000053 -S315600093B00100000001000000010000000100000043 -S315600093C00100000001000000010000000100000033 -S315600093D00100000001000000010000000100000023 -S315600093E00100000001000000010000000100000013 -S315600093F00100000001000000010000000100000003 -S3156000940001000000010000000100000001000000F2 -S3156000941001000000010000000100000001000000E2 -S3156000942001000000010000000100000001000000D2 -S3156000943001000000010000000100000001000000C2 -S3156000944001000000010000000100000001000000B2 -S3156000945001000000010000000100000001000000A2 -S315600094600100000001000000010000000100000092 -S315600094700100000001000000010000000100000082 -S315600094800100000001000000010000000100000072 -S315600094900100000001000000010000000100000062 -S315600094A00100000001000000010000000100000052 -S315600094B00100000001000000010000000100000042 -S315600094C00100000001000000010000000100000032 -S315600094D00100000001000000010000000100000022 -S315600094E00100000001000000010000000100000012 -S315600094F00100000001000000010000000100000002 -S3156000950001000000010000000100000001000000F1 -S3156000951001000000010000000100000001000000E1 -S3156000952001000000010000000100000001000000D1 -S3156000953001000000010000000100000001000000C1 -S3156000954001000000010000000100000001000000B1 -S3156000955001000000010000000100000001000000A1 -S315600095600100000001000000010000000100000091 -S315600095700100000001000000010000000100000081 -S315600095800100000001000000010000000100000071 -S315600095900100000001000000010000000100000061 -S315600095A00100000001000000010000000100000051 -S315600095B00100000001000000010000000100000041 -S315600095C00100000001000000010000000100000031 -S315600095D00100000001000000010000000100000021 -S315600095E00100000001000000010000000100000011 -S315600095F00100000001000000010000000100000001 -S3156000960001000000010000000100000001000000F0 -S3156000961001000000010000000100000001000000E0 -S3156000962001000000010000000100000001000000D0 -S3156000963001000000010000000100000001000000C0 -S3156000964001000000010000000100000001000000B0 -S3156000965001000000010000000100000001000000A0 -S315600096600100000001000000010000000100000090 -S315600096700100000001000000010000000100000080 -S315600096800100000001000000010000000100000070 -S315600096900100000001000000010000000100000060 -S315600096A00100000001000000010000000100000050 -S315600096B00100000001000000010000000100000040 -S315600096C00100000001000000010000000100000030 -S315600096D00100000001000000010000000100000020 -S315600096E00100000001000000010000000100000010 -S315600096F00100000001000000010000000100000000 -S3156000970001000000010000000100000001000000EF -S3156000971001000000010000000100000001000000DF -S3156000972001000000010000000100000001000000CF -S3156000973001000000010000000100000001000000BF -S3156000974001000000010000000100000001000000AF -S31560009750010000000100000001000000010000009F -S31560009760010000000100000001000000010000008F -S31560009770010000000100000001000000010000007F -S31560009780010000000100000001000000010000006F -S31560009790010000000100000001000000010000005F -S315600097A0010000000100000001000000010000004F -S315600097B0010000000100000001000000010000003F -S315600097C0010000000100000001000000010000002F -S315600097D0010000000100000001000000010000001F -S315600097E0010000000100000001000000010000000F -S315600097F001000000010000000100000001000000FF -S3156000980001000000010000000100000001000000EE -S3156000981001000000010000000100000001000000DE -S3156000982001000000010000000100000001000000CE -S3156000983001000000010000000100000001000000BE -S3156000984001000000010000000100000001000000AE -S31560009850010000000100000001000000010000009E -S31560009860010000000100000001000000010000008E -S31560009870010000000100000001000000010000007E -S31560009880010000000100000001000000010000006E -S31560009890010000000100000001000000010000005E -S315600098A0010000000100000001000000010000004E -S315600098B0010000000100000001000000010000003E -S315600098C0010000000100000001000000010000002E -S315600098D0010000000100000001000000010000001E -S315600098E0010000000100000001000000010000000E -S315600098F001000000010000000100000001000000FE -S3156000990001000000010000000100000001000000ED -S3156000991001000000010000000100000001000000DD -S3156000992001000000010000000100000001000000CD -S3156000993001000000010000000100000001000000BD -S3156000994001000000010000000100000001000000AD -S31560009950010000000100000001000000010000009D -S31560009960010000000100000001000000010000008D -S31560009970010000000100000001000000010000007D -S31560009980010000000100000001000000010000006D -S31560009990010000000100000001000000010000005D -S315600099A0010000000100000001000000010000004D -S315600099B0010000000100000001000000010000003D -S315600099C0010000000100000001000000010000002D -S315600099D0010000000100000001000000010000001D -S315600099E0010000000100000001000000010000000D -S315600099F001000000010000000100000001000000FD -S31560009A0001000000010000000100000001000000EC -S31560009A1001000000010000000100000001000000DC -S31560009A2001000000010000000100000001000000CC -S31560009A3001000000010000000100000001000000BC -S31560009A4001000000010000000100000001000000AC -S31560009A50010000000100000001000000010000009C -S31560009A60010000000100000001000000010000008C -S31560009A70010000000100000001000000010000007C -S31560009A80010000000100000001000000010000006C -S31560009A90010000000100000001000000010000005C -S31560009AA0010000000100000001000000010000004C -S31560009AB0010000000100000001000000010000003C -S31560009AC0010000000100000001000000010000002C -S31560009AD0010000000100000001000000010000001C -S31560009AE0010000000100000001000000010000000C -S31560009AF001000000010000000100000001000000FC -S31560009B0001000000010000000100000001000000EB -S31560009B1001000000010000000100000001000000DB -S31560009B2001000000010000000100000001000000CB -S31560009B3001000000010000000100000001000000BB -S31560009B4001000000010000000100000001000000AB -S31560009B50010000000100000001000000010000009B -S31560009B60010000000100000001000000010000008B -S31560009B70010000000100000001000000010000007B -S31560009B80010000000100000001000000010000006B -S31560009B90010000000100000001000000010000005B -S31560009BA0010000000100000001000000010000004B -S31560009BB0010000000100000001000000010000003B -S31560009BC0010000000100000001000000010000002B -S31560009BD0010000000100000001000000010000001B -S31560009BE0010000000100000001000000010000000B -S31560009BF001000000010000000100000001000000FB -S31560009C0001000000010000000100000001000000EA -S31560009C1001000000010000000100000001000000DA -S31560009C2001000000010000000100000001000000CA -S31560009C3001000000010000000100000001000000BA -S31560009C4001000000010000000100000001000000AA -S31560009C50010000000100000001000000010000009A -S31560009C60010000000100000001000000010000008A -S31560009C70010000000100000001000000010000007A -S31560009C80010000000100000001000000010000006A -S31560009C90010000000100000001000000010000005A -S31560009CA0010000000100000001000000010000004A -S31560009CB0010000000100000001000000010000003A -S31560009CC0010000000100000001000000010000002A -S31560009CD0010000000100000001000000010000001A -S31560009CE0010000000100000001000000010000000A -S31560009CF001000000010000000100000001000000FA -S31560009D0001000000010000000100000001000000E9 -S31560009D1001000000010000000100000001000000D9 -S31560009D2001000000010000000100000001000000C9 -S31560009D3001000000010000000100000001000000B9 -S31560009D4001000000010000000100000001000000A9 -S31560009D500100000001000000010000000100000099 -S31560009D600100000001000000010000000100000089 -S31560009D700100000001000000010000000100000079 -S31560009D800100000001000000010000000100000069 -S31560009D900100000001000000010000000100000059 -S31560009DA00100000001000000010000000100000049 -S31560009DB00100000001000000010000000100000039 -S31560009DC00100000001000000010000000100000029 -S31560009DD00100000001000000010000000100000019 -S31560009DE00100000001000000010000000100000009 -S31560009DF001000000010000000100000001000000F9 -S31560009E0001000000010000000100000001000000E8 -S31560009E1001000000010000000100000001000000D8 -S31560009E2001000000010000000100000001000000C8 -S31560009E3001000000010000000100000001000000B8 -S31560009E4001000000010000000100000001000000A8 -S31560009E500100000001000000010000000100000098 -S31560009E600100000001000000010000000100000088 -S31560009E700100000001000000010000000100000078 -S31560009E800100000001000000010000000100000068 -S31560009E900100000001000000010000000100000058 -S31560009EA00100000001000000010000000100000048 -S31560009EB00100000001000000010000000100000038 -S31560009EC00100000001000000010000000100000028 -S31560009ED00100000001000000010000000100000018 -S31560009EE00100000001000000010000000100000008 -S31560009EF001000000010000000100000001000000F8 -S31560009F0001000000010000000100000001000000E7 -S31560009F1001000000010000000100000001000000D7 -S31560009F2001000000010000000100000001000000C7 -S31560009F3001000000010000000100000001000000B7 -S31560009F4001000000010000000100000001000000A7 -S31560009F500100000001000000010000000100000097 -S31560009F600100000001000000010000000100000087 -S31560009F700100000001000000010000000100000077 -S31560009F800100000001000000010000000100000067 -S31560009F900100000001000000010000000100000057 -S31560009FA00100000001000000010000000100000047 -S31560009FB00100000001000000010000000100000037 -S31560009FC00100000001000000010000000100000027 -S31560009FD00100000001000000010000000100000017 -S31560009FE00100000001000000010000000100000007 -S31560009FF001000000010000000100000001000000F7 -S3156000A00001000000010000000100000001000000E6 -S3156000A01001000000010000000100000001000000D6 -S3156000A02001000000010000000100000001000000C6 -S3156000A03001000000010000000100000001000000B6 -S3156000A04001000000010000000100000001000000A6 -S3156000A0500100000001000000010000000100000096 -S3156000A0600100000001000000010000000100000086 -S3156000A0700100000001000000010000000100000076 -S3156000A0800100000001000000010000000100000066 -S3156000A0900100000001000000010000000100000056 -S3156000A0A00100000001000000010000000100000046 -S3156000A0B00100000001000000010000000100000036 -S3156000A0C00100000001000000010000000100000026 -S3156000A0D00100000001000000010000000100000016 -S3156000A0E00100000001000000010000000100000006 -S3156000A0F001000000010000000100000001000000F6 -S3156000A10001000000010000000100000001000000E5 -S3156000A11001000000010000000100000001000000D5 -S3156000A12001000000010000000100000001000000C5 -S3156000A13001000000010000000100000001000000B5 -S3156000A14001000000010000000100000001000000A5 -S3156000A1500100000001000000010000000100000095 -S3156000A1600100000001000000010000000100000085 -S3156000A1700100000001000000010000000100000075 -S3156000A1800100000001000000010000000100000065 -S3156000A1900100000001000000010000000100000055 -S3156000A1A00100000001000000010000000100000045 -S3156000A1B00100000001000000010000000100000035 -S3156000A1C00100000001000000010000000100000025 -S3156000A1D00100000001000000010000000100000015 -S3156000A1E00100000001000000010000000100000005 -S3156000A1F001000000010000000100000001000000F5 -S3156000A20001000000010000000100000001000000E4 -S3156000A21001000000010000000100000001000000D4 -S3156000A22001000000010000000100000001000000C4 -S3156000A23001000000010000000100000001000000B4 -S3156000A24001000000010000000100000001000000A4 -S3156000A2500100000001000000010000000100000094 -S3156000A2600100000001000000010000000100000084 -S3156000A2700100000001000000010000000100000074 -S3156000A2800100000001000000010000000100000064 -S3156000A2900100000001000000010000000100000054 -S3156000A2A00100000001000000010000000100000044 -S3156000A2B00100000001000000010000000100000034 -S3156000A2C00100000001000000010000000100000024 -S3156000A2D00100000001000000010000000100000014 -S3156000A2E00100000001000000010000000100000004 -S3156000A2F001000000010000000100000001000000F4 -S3156000A30001000000010000000100000001000000E3 -S3156000A31001000000010000000100000001000000D3 -S3156000A32001000000010000000100000001000000C3 -S3156000A33001000000010000000100000001000000B3 -S3156000A34001000000010000000100000001000000A3 -S3156000A3500100000001000000010000000100000093 -S3156000A3600100000001000000010000000100000083 -S3156000A3700100000001000000010000000100000073 -S3156000A3800100000001000000010000000100000063 -S3156000A3900100000001000000010000000100000053 -S3156000A3A00100000001000000010000000100000043 -S3156000A3B00100000001000000010000000100000033 -S3156000A3C00100000001000000010000000100000023 -S3156000A3D00100000001000000010000000100000013 -S3156000A3E00100000001000000010000000100000003 -S3156000A3F001000000010000000100000001000000F3 -S3156000A40001000000010000000100000001000000E2 -S3156000A41001000000010000000100000001000000D2 -S3156000A42001000000010000000100000001000000C2 -S3156000A43001000000010000000100000001000000B2 -S3156000A44001000000010000000100000001000000A2 -S3156000A4500100000001000000010000000100000092 -S3156000A4600100000001000000010000000100000082 -S3156000A4700100000001000000010000000100000072 -S3156000A4800100000001000000010000000100000062 -S3156000A4900100000001000000010000000100000052 -S3156000A4A00100000001000000010000000100000042 -S3156000A4B00100000001000000010000000100000032 -S3156000A4C00100000001000000010000000100000022 -S3156000A4D00100000001000000010000000100000012 -S3156000A4E00100000001000000010000000100000002 -S3156000A4F001000000010000000100000001000000F2 -S3156000A50001000000010000000100000001000000E1 -S3156000A51001000000010000000100000001000000D1 -S3156000A52001000000010000000100000001000000C1 -S3156000A53001000000010000000100000001000000B1 -S3156000A54001000000010000000100000001000000A1 -S3156000A5500100000001000000010000000100000091 -S3156000A5600100000001000000010000000100000081 -S3156000A5700100000001000000010000000100000071 -S3156000A5800100000001000000010000000100000061 -S3156000A5900100000001000000010000000100000051 -S3156000A5A00100000001000000010000000100000041 -S3156000A5B00100000001000000010000000100000031 -S3156000A5C00100000001000000010000000100000021 -S3156000A5D00100000001000000010000000100000011 -S3156000A5E00100000001000000010000000100000001 -S3156000A5F001000000010000000100000001000000F1 -S3156000A60001000000010000000100000001000000E0 -S3156000A61001000000010000000100000001000000D0 -S3156000A62001000000010000000100000001000000C0 -S3156000A63001000000010000000100000001000000B0 -S3156000A64001000000010000000100000001000000A0 -S3156000A6500100000001000000010000000100000090 -S3156000A6600100000001000000010000000100000080 -S3156000A6700100000001000000010000000100000070 -S3156000A6800100000001000000010000000100000060 -S3156000A6900100000001000000010000000100000050 -S3156000A6A00100000001000000010000000100000040 -S3156000A6B00100000001000000010000000100000030 -S3156000A6C00100000001000000010000000100000020 -S3156000A6D00100000001000000010000000100000010 -S3156000A6E00100000001000000010000000100000000 -S3156000A6F001000000010000000100000001000000F0 -S3156000A70001000000010000000100000001000000DF -S3156000A71001000000010000000100000001000000CF -S3156000A72001000000010000000100000001000000BF -S3156000A73001000000010000000100000001000000AF -S3156000A740010000000100000001000000010000009F -S3156000A750010000000100000001000000010000008F -S3156000A760010000000100000001000000010000007F -S3156000A770010000000100000001000000010000006F -S3156000A780010000000100000001000000010000005F -S3156000A790010000000100000001000000010000004F -S3156000A7A0010000000100000001000000010000003F -S3156000A7B0010000000100000001000000010000002F -S3156000A7C0010000000100000001000000010000001F -S3156000A7D0010000000100000001000000010000000F -S3156000A7E001000000010000000100000001000000FF -S3156000A7F001000000010000000100000001000000EF -S3156000A80001000000010000000100000001000000DE -S3156000A81001000000010000000100000001000000CE -S3156000A82001000000010000000100000001000000BE -S3156000A83001000000010000000100000001000000AE -S3156000A840010000000100000001000000010000009E -S3156000A850010000000100000001000000010000008E -S3156000A860010000000100000001000000010000007E -S3156000A870010000000100000001000000010000006E -S3156000A880010000000100000001000000010000005E -S3156000A890010000000100000001000000010000004E -S3156000A8A0010000000100000001000000010000003E -S3156000A8B0010000000100000001000000010000002E -S3156000A8C0010000000100000001000000010000001E -S3156000A8D0010000000100000001000000010000000E -S3156000A8E001000000010000000100000001000000FE -S3156000A8F001000000010000000100000001000000EE -S3156000A90001000000010000000100000001000000DD -S3156000A91001000000010000000100000001000000CD -S3156000A92001000000010000000100000001000000BD -S3156000A93001000000010000000100000001000000AD -S3156000A940010000000100000001000000010000009D -S3156000A950010000000100000001000000010000008D -S3156000A960010000000100000001000000010000007D -S3156000A970010000000100000001000000010000006D -S3156000A980010000000100000001000000010000005D -S3156000A990010000000100000001000000010000004D -S3156000A9A0010000000100000001000000010000003D -S3156000A9B0010000000100000001000000010000002D -S3156000A9C0010000000100000001000000010000001D -S3156000A9D0010000000100000001000000010000000D -S3156000A9E001000000010000000100000001000000FD -S3156000A9F001000000010000000100000001000000ED -S3156000AA0001000000010000000100000001000000DC -S3156000AA1001000000010000000100000001000000CC -S3156000AA2001000000010000000100000001000000BC -S3156000AA3001000000010000000100000001000000AC -S3156000AA40010000000100000001000000010000009C -S3156000AA50010000000100000001000000010000008C -S3156000AA60010000000100000001000000010000007C -S3156000AA70010000000100000001000000010000006C -S3156000AA80010000000100000001000000010000005C -S3156000AA90010000000100000001000000010000004C -S3156000AAA0010000000100000001000000010000003C -S3156000AAB0010000000100000001000000010000002C -S3156000AAC0010000000100000001000000010000001C -S3156000AAD0010000000100000001000000010000000C -S3156000AAE001000000010000000100000001000000FC -S3156000AAF001000000010000000100000001000000EC -S3156000AB0001000000010000000100000001000000DB -S3156000AB1001000000010000000100000001000000CB -S3156000AB2001000000010000000100000001000000BB -S3156000AB3001000000010000000100000001000000AB -S3156000AB40010000000100000001000000010000009B -S3156000AB50010000000100000001000000010000008B -S3156000AB60010000000100000001000000010000007B -S3156000AB70010000000100000001000000010000006B -S3156000AB80010000000100000001000000010000005B -S3156000AB90010000000100000001000000010000004B -S3156000ABA0010000000100000001000000010000003B -S3156000ABB0010000000100000001000000010000002B -S3156000ABC0010000000100000001000000010000001B -S3156000ABD0010000000100000001000000010000000B -S3156000ABE001000000010000000100000001000000FB -S3156000ABF001000000010000000100000001000000EB -S3156000AC0001000000010000000100000001000000DA -S3156000AC1001000000010000000100000001000000CA -S3156000AC2001000000010000000100000001000000BA -S3156000AC3001000000010000000100000001000000AA -S3156000AC40010000000100000001000000010000009A -S3156000AC50010000000100000001000000010000008A -S3156000AC60010000000100000001000000010000007A -S3156000AC70010000000100000001000000010000006A -S3156000AC80010000000100000001000000010000005A -S3156000AC90010000000100000001000000010000004A -S3156000ACA0010000000100000001000000010000003A -S3156000ACB0010000000100000001000000010000002A -S3156000ACC0010000000100000001000000010000001A -S3156000ACD0010000000100000001000000010000000A -S3156000ACE001000000010000000100000001000000FA -S3156000ACF001000000010000000100000001000000EA -S3156000AD0001000000010000000100000001000000D9 -S3156000AD1001000000010000000100000001000000C9 -S3156000AD2001000000010000000100000001000000B9 -S3156000AD3001000000010000000100000001000000A9 -S3156000AD400100000001000000010000000100000099 -S3156000AD500100000001000000010000000100000089 -S3156000AD600100000001000000010000000100000079 -S3156000AD700100000001000000010000000100000069 -S3156000AD800100000001000000010000000100000059 -S3156000AD900100000001000000010000000100000049 -S3156000ADA00100000001000000010000000100000039 -S3156000ADB00100000001000000010000000100000029 -S3156000ADC00100000001000000010000000100000019 -S3156000ADD00100000001000000010000000100000009 -S3156000ADE001000000010000000100000001000000F9 -S3156000ADF001000000010000000100000001000000E9 -S3156000AE0001000000010000000100000001000000D8 -S3156000AE1001000000010000000100000001000000C8 -S3156000AE2001000000010000000100000001000000B8 -S3156000AE3001000000010000000100000001000000A8 -S3156000AE400100000001000000010000000100000098 -S3156000AE500100000001000000010000000100000088 -S3156000AE600100000001000000010000000100000078 -S3156000AE700100000001000000010000000100000068 -S3156000AE800100000001000000010000000100000058 -S3156000AE900100000001000000010000000100000048 -S3156000AEA00100000001000000010000000100000038 -S3156000AEB00100000001000000010000000100000028 -S3156000AEC00100000001000000010000000100000018 -S3156000AED00100000001000000010000000100000008 -S3156000AEE001000000010000000100000001000000F8 -S3156000AEF001000000010000000100000001000000E8 -S3156000AF0001000000010000000100000001000000D7 -S3156000AF1001000000010000000100000001000000C7 -S3156000AF2001000000010000000100000001000000B7 -S3156000AF3001000000010000000100000001000000A7 -S3156000AF400100000001000000010000000100000097 -S3156000AF500100000001000000010000000100000087 -S3156000AF600100000001000000010000000100000077 -S3156000AF700100000001000000010000000100000067 -S3156000AF800100000001000000010000000100000057 -S3156000AF900100000001000000010000000100000047 -S3156000AFA00100000001000000010000000100000037 -S3156000AFB00100000001000000010000000100000027 -S3156000AFC00100000001000000010000000100000017 -S3156000AFD00100000001000000010000000100000007 -S3156000AFE001000000010000000100000001000000F7 -S3156000AFF001000000010000000100000001000000E7 -S3156000B00001000000010000000100000001000000D6 -S3156000B01001000000010000000100000001000000C6 -S3156000B02001000000010000000100000001000000B6 -S3156000B03001000000010000000100000001000000A6 -S3156000B0400100000001000000010000000100000096 -S3156000B0500100000001000000010000000100000086 -S3156000B0600100000001000000010000000100000076 -S3156000B0700100000001000000010000000100000066 -S3156000B0800100000001000000010000000100000056 -S3156000B0900100000001000000010000000100000046 -S3156000B0A00100000001000000010000000100000036 -S3156000B0B00100000001000000010000000100000026 -S3156000B0C00100000001000000010000000100000016 -S3156000B0D00100000001000000010000000100000006 -S3156000B0E001000000010000000100000001000000F6 -S3156000B0F001000000010000000100000001000000E6 -S3156000B10001000000010000000100000001000000D5 -S3156000B11001000000010000000100000001000000C5 -S3156000B12001000000010000000100000001000000B5 -S3156000B13001000000010000000100000001000000A5 -S3156000B1400100000001000000010000000100000095 -S3156000B1500100000001000000010000000100000085 -S3156000B1600100000001000000010000000100000075 -S3156000B1700100000001000000010000000100000065 -S3156000B1800100000001000000010000000100000055 -S3156000B1900100000001000000010000000100000045 -S3156000B1A00100000001000000010000000100000035 -S3156000B1B00100000001000000010000000100000025 -S3156000B1C00100000001000000010000000100000015 -S3156000B1D00100000001000000010000000100000005 -S3156000B1E001000000010000000100000001000000F5 -S3156000B1F001000000010000000100000001000000E5 -S3156000B20001000000010000000100000001000000D4 -S3156000B21001000000010000000100000001000000C4 -S3156000B22001000000010000000100000001000000B4 -S3156000B23001000000010000000100000001000000A4 -S3156000B2400100000001000000010000000100000094 -S3156000B2500100000001000000010000000100000084 -S3156000B2600100000001000000010000000100000074 -S3156000B2700100000001000000010000000100000064 -S3156000B2800100000001000000010000000100000054 -S3156000B2900100000001000000010000000100000044 -S3156000B2A00100000001000000010000000100000034 -S3156000B2B00100000001000000010000000100000024 -S3156000B2C00100000001000000010000000100000014 -S3156000B2D00100000001000000010000000100000004 -S3156000B2E001000000010000000100000001000000F4 -S3156000B2F001000000010000000100000001000000E4 -S3156000B30001000000010000000100000001000000D3 -S3156000B31001000000010000000100000001000000C3 -S3156000B32001000000010000000100000001000000B3 -S3156000B33001000000010000000100000001000000A3 -S3156000B3400100000001000000010000000100000093 -S3156000B3500100000001000000010000000100000083 -S3156000B3600100000001000000010000000100000073 -S3156000B3700100000001000000010000000100000063 -S3156000B3800100000001000000010000000100000053 -S3156000B3900100000001000000010000000100000043 -S3156000B3A00100000001000000010000000100000033 -S3156000B3B00100000001000000010000000100000023 -S3156000B3C00100000001000000010000000100000013 -S3156000B3D00100000001000000010000000100000003 -S3156000B3E001000000010000000100000001000000F3 -S3156000B3F001000000010000000100000001000000E3 -S3156000B40001000000010000000100000001000000D2 -S3156000B41001000000010000000100000001000000C2 -S3156000B42001000000010000000100000001000000B2 -S3156000B43001000000010000000100000001000000A2 -S3156000B4400100000001000000010000000100000092 -S3156000B4500100000001000000010000000100000082 -S3156000B4600100000001000000010000000100000072 -S3156000B4700100000001000000010000000100000062 -S3156000B4800100000001000000010000000100000052 -S3156000B4900100000001000000010000000100000042 -S3156000B4A00100000001000000010000000100000032 -S3156000B4B00100000001000000010000000100000022 -S3156000B4C00100000001000000010000000100000012 -S3156000B4D00100000001000000010000000100000002 -S3156000B4E001000000010000000100000001000000F2 -S3156000B4F001000000010000000100000001000000E2 -S3156000B50001000000010000000100000001000000D1 -S3156000B51001000000010000000100000001000000C1 -S3156000B52001000000010000000100000001000000B1 -S3156000B53001000000010000000100000001000000A1 -S3156000B5400100000001000000010000000100000091 -S3156000B5500100000001000000010000000100000081 -S3156000B5600100000001000000010000000100000071 -S3156000B5700100000001000000010000000100000061 -S3156000B5800100000001000000010000000100000051 -S3156000B5900100000001000000010000000100000041 -S3156000B5A00100000001000000010000000100000031 -S3156000B5B00100000001000000010000000100000021 -S3156000B5C00100000001000000010000000100000011 -S3156000B5D00100000001000000010000000100000001 -S3156000B5E001000000010000000100000001000000F1 -S3156000B5F001000000010000000100000001000000E1 -S3156000B60001000000010000000100000001000000D0 -S3156000B61001000000010000000100000001000000C0 -S3156000B62001000000010000000100000001000000B0 -S3156000B63001000000010000000100000001000000A0 -S3156000B6400100000001000000010000000100000090 -S3156000B6500100000001000000010000000100000080 -S3156000B6600100000001000000010000000100000070 -S3156000B6700100000001000000010000000100000060 -S3156000B6800100000001000000010000000100000050 -S3156000B6900100000001000000010000000100000040 -S3156000B6A00100000001000000010000000100000030 -S3156000B6B00100000001000000010000000100000020 -S3156000B6C00100000001000000010000000100000010 -S3156000B6D00100000001000000010000000100000000 -S3156000B6E001000000010000000100000001000000F0 -S3156000B6F001000000010000000100000001000000E0 -S3156000B70001000000010000000100000001000000CF -S3156000B71001000000010000000100000001000000BF -S3156000B72001000000010000000100000001000000AF -S3156000B730010000000100000001000000010000009F -S3156000B740010000000100000001000000010000008F -S3156000B750010000000100000001000000010000007F -S3156000B760010000000100000001000000010000006F -S3156000B770010000000100000001000000010000005F -S3156000B780010000000100000001000000010000004F -S3156000B790010000000100000001000000010000003F -S3156000B7A0010000000100000001000000010000002F -S3156000B7B0010000000100000001000000010000001F -S3156000B7C0010000000100000001000000010000000F -S3156000B7D001000000010000000100000001000000FF -S3156000B7E001000000010000000100000001000000EF -S3156000B7F001000000010000000100000001000000DF -S3156000B80001000000010000000100000001000000CE -S3156000B81001000000010000000100000001000000BE -S3156000B82001000000010000000100000001000000AE -S3156000B830010000000100000001000000010000009E -S3156000B840010000000100000001000000010000008E -S3156000B850010000000100000001000000010000007E -S3156000B860010000000100000001000000010000006E -S3156000B870010000000100000001000000010000005E -S3156000B880010000000100000001000000010000004E -S3156000B890010000000100000001000000010000003E -S3156000B8A0010000000100000001000000010000002E -S3156000B8B0010000000100000001000000010000001E -S3156000B8C0010000000100000001000000010000000E -S3156000B8D001000000010000000100000001000000FE -S3156000B8E001000000010000000100000001000000EE -S3156000B8F001000000010000000100000001000000DE -S3156000B90001000000010000000100000001000000CD -S3156000B91001000000010000000100000001000000BD -S3156000B92001000000010000000100000001000000AD -S3156000B930010000000100000001000000010000009D -S3156000B940010000000100000001000000010000008D -S3156000B950010000000100000001000000010000007D -S3156000B960010000000100000001000000010000006D -S3156000B970010000000100000001000000010000005D -S3156000B980010000000100000001000000010000004D -S3156000B990010000000100000001000000010000003D -S3156000B9A0010000000100000001000000010000002D -S3156000B9B0010000000100000001000000010000001D -S3156000B9C0010000000100000001000000010000000D -S3156000B9D001000000010000000100000001000000FD -S3156000B9E001000000010000000100000001000000ED -S3156000B9F001000000010000000100000001000000DD -S3156000BA0001000000010000000100000001000000CC -S3156000BA1001000000010000000100000001000000BC -S3156000BA2001000000010000000100000001000000AC -S3156000BA30010000000100000001000000010000009C -S3156000BA40010000000100000001000000010000008C -S3156000BA50010000000100000001000000010000007C -S3156000BA60010000000100000001000000010000006C -S3156000BA70010000000100000001000000010000005C -S3156000BA80010000000100000001000000010000004C -S3156000BA90010000000100000001000000010000003C -S3156000BAA0010000000100000001000000010000002C -S3156000BAB0010000000100000001000000010000001C -S3156000BAC0010000000100000001000000010000000C -S3156000BAD001000000010000000100000001000000FC -S3156000BAE001000000010000000100000001000000EC -S3156000BAF001000000010000000100000001000000DC -S3156000BB0001000000010000000100000001000000CB -S3156000BB1001000000010000000100000001000000BB -S3156000BB2001000000010000000100000001000000AB -S3156000BB30010000000100000001000000010000009B -S3156000BB40010000000100000001000000010000008B -S3156000BB50010000000100000001000000010000007B -S3156000BB60010000000100000001000000010000006B -S3156000BB70010000000100000001000000010000005B -S3156000BB80010000000100000001000000010000004B -S3156000BB90010000000100000001000000010000003B -S3156000BBA0010000000100000001000000010000002B -S3156000BBB0010000000100000001000000010000001B -S3156000BBC0010000000100000001000000010000000B -S3156000BBD001000000010000000100000001000000FB -S3156000BBE001000000010000000100000001000000EB -S3156000BBF001000000010000000100000001000000DB -S3156000BC0001000000010000000100000001000000CA -S3156000BC1001000000010000000100000001000000BA -S3156000BC2001000000010000000100000001000000AA -S3156000BC30010000000100000001000000010000009A -S3156000BC40010000000100000001000000010000008A -S3156000BC50010000000100000001000000010000007A -S3156000BC60010000000100000001000000010000006A -S3156000BC70010000000100000001000000010000005A -S3156000BC80010000000100000001000000010000004A -S3156000BC90010000000100000001000000010000003A -S3156000BCA0010000000100000001000000010000002A -S3156000BCB0010000000100000001000000010000001A -S3156000BCC0010000000100000001000000010000000A -S3156000BCD001000000010000000100000001000000FA -S3156000BCE001000000010000000100000001000000EA -S3156000BCF001000000010000000100000001000000DA -S3156000BD0001000000010000000100000001000000C9 -S3156000BD1001000000010000000100000001000000B9 -S3156000BD2001000000010000000100000001000000A9 -S3156000BD300100000001000000010000000100000099 -S3156000BD400100000001000000010000000100000089 -S3156000BD500100000001000000010000000100000079 -S3156000BD600100000001000000010000000100000069 -S3156000BD700100000001000000010000000100000059 -S3156000BD800100000001000000010000000100000049 -S3156000BD900100000001000000010000000100000039 -S3156000BDA00100000001000000010000000100000029 -S3156000BDB00100000001000000010000000100000019 -S3156000BDC00100000001000000010000000100000009 -S3156000BDD001000000010000000100000001000000F9 -S3156000BDE001000000010000000100000001000000E9 -S3156000BDF001000000010000000100000001000000D9 -S3156000BE0001000000010000000100000001000000C8 -S3156000BE1001000000010000000100000001000000B8 -S3156000BE2001000000010000000100000001000000A8 -S3156000BE300100000001000000010000000100000098 -S3156000BE400100000001000000010000000100000088 -S3156000BE500100000001000000010000000100000078 -S3156000BE600100000001000000010000000100000068 -S3156000BE700100000001000000010000000100000058 -S3156000BE800100000001000000010000000100000048 -S3156000BE900100000001000000010000000100000038 -S3156000BEA00100000001000000010000000100000028 -S3156000BEB00100000001000000010000000100000018 -S3156000BEC00100000001000000010000000100000008 -S3156000BED001000000010000000100000001000000F8 -S3156000BEE001000000010000000100000001000000E8 -S3156000BEF001000000010000000100000001000000D8 -S3156000BF0001000000010000000100000001000000C7 -S3156000BF1001000000010000000100000001000000B7 -S3156000BF2001000000010000000100000001000000A7 -S3156000BF300100000001000000010000000100000097 -S3156000BF400100000001000000010000000100000087 -S3156000BF500100000001000000010000000100000077 -S3156000BF600100000001000000010000000100000067 -S3156000BF700100000001000000010000000100000057 -S3156000BF800100000001000000010000000100000047 -S3156000BF900100000001000000010000000100000037 -S3156000BFA00100000001000000010000000100000027 -S3156000BFB00100000001000000010000000100000017 -S3156000BFC00100000001000000010000000100000007 -S3156000BFD001000000010000000100000001000000F7 -S3156000BFE001000000010000000100000001000000E7 -S3156000BFF001000000010000000100000001000000D7 -S3156000C00001000000010000000100000001000000C6 -S3156000C01001000000010000000100000001000000B6 -S3156000C02001000000010000000100000001000000A6 -S3156000C0300100000001000000010000000100000096 -S3156000C0400100000001000000010000000100000086 -S3156000C0500100000001000000010000000100000076 -S3156000C0600100000001000000010000000100000066 -S3156000C0700100000001000000010000000100000056 -S3156000C0800100000001000000010000000100000046 -S3156000C0900100000001000000010000000100000036 -S3156000C0A00100000001000000010000000100000026 -S3156000C0B00100000001000000010000000100000016 -S3156000C0C00100000001000000010000000100000006 -S3156000C0D001000000010000000100000001000000F6 -S3156000C0E001000000010000000100000001000000E6 -S3156000C0F001000000010000000100000001000000D6 -S3156000C10001000000010000000100000001000000C5 -S3156000C11001000000010000000100000001000000B5 -S3156000C12001000000010000000100000001000000A5 -S3156000C1300100000001000000010000000100000095 -S3156000C1400100000001000000010000000100000085 -S3156000C1500100000001000000010000000100000075 -S3156000C1600100000001000000010000000100000065 -S3156000C1700100000001000000010000000100000055 -S3156000C1800100000001000000010000000100000045 -S3156000C1900100000001000000010000000100000035 -S3156000C1A00100000001000000010000000100000025 -S3156000C1B00100000001000000010000000100000015 -S3156000C1C00100000001000000010000000100000005 -S3156000C1D001000000010000000100000001000000F5 -S3156000C1E001000000010000000100000001000000E5 -S3156000C1F001000000010000000100000001000000D5 -S3156000C20001000000010000000100000001000000C4 -S3156000C21001000000010000000100000001000000B4 -S3156000C22001000000010000000100000001000000A4 -S3156000C2300100000001000000010000000100000094 -S3156000C2400100000001000000010000000100000084 -S3156000C2500100000001000000010000000100000074 -S3156000C2600100000001000000010000000100000064 -S3156000C2700100000001000000010000000100000054 -S3156000C2800100000001000000010000000100000044 -S3156000C2900100000001000000010000000100000034 -S3156000C2A00100000001000000010000000100000024 -S3156000C2B00100000001000000010000000100000014 -S3156000C2C00100000001000000010000000100000004 -S3156000C2D001000000010000000100000001000000F4 -S3156000C2E001000000010000000100000001000000E4 -S3156000C2F001000000010000000100000001000000D4 -S3156000C30001000000010000000100000001000000C3 -S3156000C31001000000010000000100000001000000B3 -S3156000C32001000000010000000100000001000000A3 -S3156000C3300100000001000000010000000100000093 -S3156000C3400100000001000000010000000100000083 -S3156000C3500100000001000000010000000100000073 -S3156000C3600100000001000000010000000100000063 -S3156000C3700100000001000000010000000100000053 -S3156000C3800100000001000000010000000100000043 -S3156000C3900100000001000000010000000100000033 -S3156000C3A00100000001000000010000000100000023 -S3156000C3B00100000001000000010000000100000013 -S3156000C3C00100000001000000010000000100000003 -S3156000C3D001000000010000000100000001000000F3 -S3156000C3E001000000010000000100000001000000E3 -S3156000C3F001000000010000000100000001000000D3 -S3156000C40001000000010000000100000001000000C2 -S3156000C41001000000010000000100000001000000B2 -S3156000C42001000000010000000100000001000000A2 -S3156000C4300100000001000000010000000100000092 -S3156000C4400100000001000000010000000100000082 -S3156000C4500100000001000000010000000100000072 -S3156000C4600100000001000000010000000100000062 -S3156000C4700100000001000000010000000100000052 -S3156000C4800100000001000000010000000100000042 -S3156000C4900100000001000000010000000100000032 -S3156000C4A00100000001000000010000000100000022 -S3156000C4B00100000001000000010000000100000012 -S3156000C4C00100000001000000010000000100000002 -S3156000C4D001000000010000000100000001000000F2 -S3156000C4E001000000010000000100000001000000E2 -S3156000C4F001000000010000000100000001000000D2 -S3156000C50001000000010000000100000001000000C1 -S3156000C51001000000010000000100000001000000B1 -S3156000C52001000000010000000100000001000000A1 -S3156000C5300100000001000000010000000100000091 -S3156000C5400100000001000000010000000100000081 -S3156000C5500100000001000000010000000100000071 -S3156000C5600100000001000000010000000100000061 -S3156000C5700100000001000000010000000100000051 -S3156000C5800100000001000000010000000100000041 -S3156000C5900100000001000000010000000100000031 -S3156000C5A00100000001000000010000000100000021 -S3156000C5B00100000001000000010000000100000011 -S3156000C5C00100000001000000010000000100000001 -S3156000C5D001000000010000000100000001000000F1 -S3156000C5E001000000010000000100000001000000E1 -S3156000C5F001000000010000000100000001000000D1 -S3156000C60001000000010000000100000001000000C0 -S3156000C61001000000010000000100000001000000B0 -S3156000C62001000000010000000100000001000000A0 -S3156000C6300100000001000000010000000100000090 -S3156000C6400100000001000000010000000100000080 -S3156000C6500100000001000000010000000100000070 -S3156000C6600100000001000000010000000100000060 -S3156000C6700100000001000000010000000100000050 -S3156000C6800100000001000000010000000100000040 -S3156000C6900100000001000000010000000100000030 -S3156000C6A00100000001000000010000000100000020 -S3156000C6B00100000001000000010000000100000010 -S3156000C6C00100000001000000010000000100000000 -S3156000C6D001000000010000000100000001000000F0 -S3156000C6E001000000010000000100000001000000E0 -S3156000C6F001000000010000000100000001000000D0 -S3156000C70001000000010000000100000001000000BF -S3156000C71001000000010000000100000001000000AF -S3156000C720010000000100000001000000010000009F -S3156000C730010000000100000001000000010000008F -S3156000C740010000000100000001000000010000007F -S3156000C750010000000100000001000000010000006F -S3156000C760010000000100000001000000010000005F -S3156000C770010000000100000001000000010000004F -S3156000C780010000000100000001000000010000003F -S3156000C790010000000100000001000000010000002F -S3156000C7A0010000000100000001000000010000001F -S3156000C7B0010000000100000001000000010000000F -S3156000C7C001000000010000000100000001000000FF -S3156000C7D001000000010000000100000001000000EF -S3156000C7E001000000010000000100000001000000DF -S3156000C7F001000000010000000100000001000000CF -S3156000C80001000000010000000100000001000000BE -S3156000C81001000000010000000100000001000000AE -S3156000C820010000000100000001000000010000009E -S3156000C830010000000100000001000000010000008E -S3156000C840010000000100000001000000010000007E -S3156000C850010000000100000001000000010000006E -S3156000C860010000000100000001000000010000005E -S3156000C870010000000100000001000000010000004E -S3156000C880010000000100000001000000010000003E -S3156000C890010000000100000001000000010000002E -S3156000C8A0010000000100000001000000010000001E -S3156000C8B0010000000100000001000000010000000E -S3156000C8C001000000010000000100000001000000FE -S3156000C8D001000000010000000100000001000000EE -S3156000C8E001000000010000000100000001000000DE -S3156000C8F001000000010000000100000001000000CE -S3156000C90001000000010000000100000001000000BD -S3156000C91001000000010000000100000001000000AD -S3156000C920010000000100000001000000010000009D -S3156000C930010000000100000001000000010000008D -S3156000C940010000000100000001000000010000007D -S3156000C950010000000100000001000000010000006D -S3156000C960010000000100000001000000010000005D -S3156000C970010000000100000001000000010000004D -S3156000C980010000000100000001000000010000003D -S3156000C990010000000100000001000000010000002D -S3156000C9A0010000000100000001000000010000001D -S3156000C9B0010000000100000001000000010000000D -S3156000C9C001000000010000000100000001000000FD -S3156000C9D001000000010000000100000001000000ED -S3156000C9E001000000010000000100000001000000DD -S3156000C9F001000000010000000100000001000000CD -S3156000CA0001000000010000000100000001000000BC -S3156000CA1001000000010000000100000001000000AC -S3156000CA20010000000100000001000000010000009C -S3156000CA30010000000100000001000000010000008C -S3156000CA40010000000100000001000000010000007C -S3156000CA50010000000100000001000000010000006C -S3156000CA60010000000100000001000000010000005C -S3156000CA70010000000100000001000000010000004C -S3156000CA80010000000100000001000000010000003C -S3156000CA90010000000100000001000000010000002C -S3156000CAA0010000000100000001000000010000001C -S3156000CAB0010000000100000001000000010000000C -S3156000CAC001000000010000000100000001000000FC -S3156000CAD001000000010000000100000001000000EC -S3156000CAE001000000010000000100000001000000DC -S3156000CAF001000000010000000100000001000000CC -S3156000CB0001000000010000000100000001000000BB -S3156000CB1001000000010000000100000001000000AB -S3156000CB20010000000100000001000000010000009B -S3156000CB30010000000100000001000000010000008B -S3156000CB40010000000100000001000000010000007B -S3156000CB50010000000100000001000000010000006B -S3156000CB60010000000100000001000000010000005B -S3156000CB70010000000100000001000000010000004B -S3156000CB80010000000100000001000000010000003B -S3156000CB90010000000100000001000000010000002B -S3156000CBA0010000000100000001000000010000001B -S3156000CBB0010000000100000001000000010000000B -S3156000CBC001000000010000000100000001000000FB -S3156000CBD001000000010000000100000001000000EB -S3156000CBE001000000010000000100000001000000DB -S3156000CBF001000000010000000100000001000000CB -S3156000CC0001000000010000000100000001000000BA -S3156000CC1001000000010000000100000001000000AA -S3156000CC20010000000100000001000000010000009A -S3156000CC30010000000100000001000000010000008A -S3156000CC40010000000100000001000000010000007A -S3156000CC50010000000100000001000000010000006A -S3156000CC60010000000100000001000000010000005A -S3156000CC70010000000100000001000000010000004A -S3156000CC80010000000100000001000000010000003A -S3156000CC90010000000100000001000000010000002A -S3156000CCA0010000000100000001000000010000001A -S3156000CCB0010000000100000001000000010000000A -S3156000CCC001000000010000000100000001000000FA -S3156000CCD001000000010000000100000001000000EA -S3156000CCE001000000010000000100000001000000DA -S3156000CCF001000000010000000100000001000000CA -S3156000CD0001000000010000000100000001000000B9 -S3156000CD1001000000010000000100000001000000A9 -S3156000CD200100000001000000010000000100000099 -S3156000CD300100000001000000010000000100000089 -S3156000CD400100000001000000010000000100000079 -S3156000CD500100000001000000010000000100000069 -S3156000CD600100000001000000010000000100000059 -S3156000CD700100000001000000010000000100000049 -S3156000CD800100000001000000010000000100000039 -S3156000CD900100000001000000010000000100000029 -S3156000CDA00100000001000000010000000100000019 -S3156000CDB00100000001000000010000000100000009 -S3156000CDC001000000010000000100000001000000F9 -S3156000CDD001000000010000000100000001000000E9 -S3156000CDE001000000010000000100000001000000D9 -S3156000CDF001000000010000000100000001000000C9 -S3156000CE0001000000010000000100000001000000B8 -S3156000CE1001000000010000000100000001000000A8 -S3156000CE200100000001000000010000000100000098 -S3156000CE300100000001000000010000000100000088 -S3156000CE400100000001000000010000000100000078 -S3156000CE500100000001000000010000000100000068 -S3156000CE600100000001000000010000000100000058 -S3156000CE700100000001000000010000000100000048 -S3156000CE800100000001000000010000000100000038 -S3156000CE900100000001000000010000000100000028 -S3156000CEA00100000001000000010000000100000018 -S3156000CEB00100000001000000010000000100000008 -S3156000CEC001000000010000000100000001000000F8 -S3156000CED001000000010000000100000001000000E8 -S3156000CEE001000000010000000100000001000000D8 -S3156000CEF001000000010000000100000001000000C8 -S3156000CF0001000000010000000100000001000000B7 -S3156000CF1001000000010000000100000001000000A7 -S3156000CF200100000001000000010000000100000097 -S3156000CF300100000001000000010000000100000087 -S3156000CF400100000001000000010000000100000077 -S3156000CF500100000001000000010000000100000067 -S3156000CF600100000001000000010000000100000057 -S3156000CF700100000001000000010000000100000047 -S3156000CF800100000001000000010000000100000037 -S3156000CF900100000001000000010000000100000027 -S3156000CFA00100000001000000010000000100000017 -S3156000CFB00100000001000000010000000100000007 -S3156000CFC001000000010000000100000001000000F7 -S3156000CFD001000000010000000100000001000000E7 -S3156000CFE001000000010000000100000001000000D7 -S3156000CFF001000000010000000100000001000000C7 -S3156000D00001000000010000000100000001000000B6 -S3156000D01001000000010000000100000001000000A6 -S3156000D0200100000001000000010000000100000096 -S3156000D0300100000001000000010000000100000086 -S3156000D0400100000001000000010000000100000076 -S3156000D0500100000001000000010000000100000066 -S3156000D0600100000001000000010000000100000056 -S3156000D0700100000001000000010000000100000046 -S3156000D0800100000001000000010000000100000036 -S3156000D0900100000001000000010000000100000026 -S3156000D0A00100000001000000010000000100000016 -S3156000D0B00100000001000000010000000100000006 -S3156000D0C001000000010000000100000001000000F6 -S3156000D0D001000000010000000100000001000000E6 -S3156000D0E001000000010000000100000001000000D6 -S3156000D0F001000000010000000100000001000000C6 -S3156000D10001000000010000000100000001000000B5 -S3156000D11001000000010000000100000001000000A5 -S3156000D1200100000001000000010000000100000095 -S3156000D1300100000001000000010000000100000085 -S3156000D1400100000001000000010000000100000075 -S3156000D1500100000001000000010000000100000065 -S3156000D1600100000001000000010000000100000055 -S3156000D1700100000001000000010000000100000045 -S3156000D1800100000001000000010000000100000035 -S3156000D1900100000001000000010000000100000025 -S3156000D1A00100000001000000010000000100000015 -S3156000D1B00100000001000000010000000100000005 -S3156000D1C001000000010000000100000001000000F5 -S3156000D1D001000000010000000100000001000000E5 -S3156000D1E001000000010000000100000001000000D5 -S3156000D1F001000000010000000100000001000000C5 -S3156000D20001000000010000000100000001000000B4 -S3156000D21001000000010000000100000001000000A4 -S3156000D2200100000001000000010000000100000094 -S3156000D2300100000001000000010000000100000084 -S3156000D2400100000001000000010000000100000074 -S3156000D2500100000001000000010000000100000064 -S3156000D2600100000001000000010000000100000054 -S3156000D2700100000001000000010000000100000044 -S3156000D2800100000001000000010000000100000034 -S3156000D2900100000001000000010000000100000024 -S3156000D2A00100000001000000010000000100000014 -S3156000D2B00100000001000000010000000100000004 -S3156000D2C001000000010000000100000001000000F4 -S3156000D2D001000000010000000100000001000000E4 -S3156000D2E001000000010000000100000001000000D4 -S3156000D2F001000000010000000100000001000000C4 -S3156000D30001000000010000000100000001000000B3 -S3156000D31001000000010000000100000001000000A3 -S3156000D3200100000001000000010000000100000093 -S3156000D3300100000001000000010000000100000083 -S3156000D3400100000001000000010000000100000073 -S3156000D3500100000001000000010000000100000063 -S3156000D3600100000001000000010000000100000053 -S3156000D3700100000001000000010000000100000043 -S3156000D3800100000001000000010000000100000033 -S3156000D3900100000001000000010000000100000023 -S3156000D3A00100000001000000010000000100000013 -S3156000D3B00100000001000000010000000100000003 -S3156000D3C001000000010000000100000001000000F3 -S3156000D3D001000000010000000100000001000000E3 -S3156000D3E001000000010000000100000001000000D3 -S3156000D3F001000000010000000100000001000000C3 -S3156000D40001000000010000000100000001000000B2 -S3156000D41001000000010000000100000001000000A2 -S3156000D4200100000001000000010000000100000092 -S3156000D4300100000001000000010000000100000082 -S3156000D4400100000001000000010000000100000072 -S3156000D4500100000001000000010000000100000062 -S3156000D4600100000001000000010000000100000052 -S3156000D4700100000001000000010000000100000042 -S3156000D4800100000001000000010000000100000032 -S3156000D4900100000001000000010000000100000022 -S3156000D4A00100000001000000010000000100000012 -S3156000D4B00100000001000000010000000100000002 -S3156000D4C001000000010000000100000001000000F2 -S3156000D4D001000000010000000100000001000000E2 -S3156000D4E001000000010000000100000001000000D2 -S3156000D4F001000000010000000100000001000000C2 -S3156000D50001000000010000000100000001000000B1 -S3156000D51001000000010000000100000001000000A1 -S3156000D5200100000001000000010000000100000091 -S3156000D5300100000001000000010000000100000081 -S3156000D5400100000001000000010000000100000071 -S3156000D5500100000001000000010000000100000061 -S3156000D5600100000001000000010000000100000051 -S3156000D5700100000001000000010000000100000041 -S3156000D5800100000001000000010000000100000031 -S3156000D5900100000001000000010000000100000021 -S3156000D5A00100000001000000010000000100000011 -S3156000D5B00100000001000000010000000100000001 -S3156000D5C001000000010000000100000001000000F1 -S3156000D5D001000000010000000100000001000000E1 -S3156000D5E001000000010000000100000001000000D1 -S3156000D5F001000000010000000100000001000000C1 -S3156000D60001000000010000000100000001000000B0 -S3156000D61001000000010000000100000001000000A0 -S3156000D6200100000001000000010000000100000090 -S3156000D6300100000001000000010000000100000080 -S3156000D6400100000001000000010000000100000070 -S3156000D6500100000001000000010000000100000060 -S3156000D6600100000001000000010000000100000050 -S3156000D6700100000001000000010000000100000040 -S3156000D6800100000001000000010000000100000030 -S3156000D6900100000001000000010000000100000020 -S3156000D6A00100000001000000010000000100000010 -S3156000D6B00100000001000000010000000100000000 -S3156000D6C001000000010000000100000001000000F0 -S3156000D6D001000000010000000100000001000000E0 -S3156000D6E001000000010000000100000001000000D0 -S3156000D6F001000000010000000100000001000000C0 -S3156000D70001000000010000000100000001000000AF -S3156000D710010000000100000001000000010000009F -S3156000D720010000000100000001000000010000008F -S3156000D730010000000100000001000000010000007F -S3156000D740010000000100000001000000010000006F -S3156000D750010000000100000001000000010000005F -S3156000D760010000000100000001000000010000004F -S3156000D770010000000100000001000000010000003F -S3156000D780010000000100000001000000010000002F -S3156000D790010000000100000001000000010000001F -S3156000D7A0010000000100000001000000010000000F -S3156000D7B001000000010000000100000001000000FF -S3156000D7C001000000010000000100000001000000EF -S3156000D7D001000000010000000100000001000000DF -S3156000D7E001000000010000000100000001000000CF -S3156000D7F001000000010000000100000001000000BF -S3156000D80001000000010000000100000001000000AE -S3156000D810010000000100000001000000010000009E -S3156000D820010000000100000001000000010000008E -S3156000D830010000000100000001000000010000007E -S3156000D840010000000100000001000000010000006E -S3156000D850010000000100000001000000010000005E -S3156000D860010000000100000001000000010000004E -S3156000D870010000000100000001000000010000003E -S3156000D880010000000100000001000000010000002E -S3156000D890010000000100000001000000010000001E -S3156000D8A0010000000100000001000000010000000E -S3156000D8B001000000010000000100000001000000FE -S3156000D8C001000000010000000100000001000000EE -S3156000D8D001000000010000000100000001000000DE -S3156000D8E001000000010000000100000001000000CE -S3156000D8F001000000010000000100000001000000BE -S3156000D90001000000010000000100000001000000AD -S3156000D910010000000100000001000000010000009D -S3156000D920010000000100000001000000010000008D -S3156000D930010000000100000001000000010000007D -S3156000D940010000000100000001000000010000006D -S3156000D950010000000100000001000000010000005D -S3156000D960010000000100000001000000010000004D -S3156000D970010000000100000001000000010000003D -S3156000D980010000000100000001000000010000002D -S3156000D990010000000100000001000000010000001D -S3156000D9A0010000000100000001000000010000000D -S3156000D9B001000000010000000100000001000000FD -S3156000D9C001000000010000000100000001000000ED -S3156000D9D001000000010000000100000001000000DD -S3156000D9E001000000010000000100000001000000CD -S3156000D9F001000000010000000100000001000000BD -S3156000DA0001000000010000000100000001000000AC -S3156000DA10010000000100000001000000010000009C -S3156000DA20010000000100000001000000010000008C -S3156000DA30010000000100000001000000010000007C -S3156000DA40010000000100000001000000010000006C -S3156000DA50010000000100000001000000010000005C -S3156000DA60010000000100000001000000010000004C -S3156000DA70010000000100000001000000010000003C -S3156000DA80010000000100000001000000010000002C -S3156000DA90010000000100000001000000010000001C -S3156000DAA0010000000100000001000000010000000C -S3156000DAB001000000010000000100000001000000FC -S3156000DAC001000000010000000100000001000000EC -S3156000DAD001000000010000000100000001000000DC -S3156000DAE001000000010000000100000001000000CC -S3156000DAF001000000010000000100000001000000BC -S3156000DB0001000000010000000100000001000000AB -S3156000DB10010000000100000001000000010000009B -S3156000DB20010000000100000001000000010000008B -S3156000DB30010000000100000001000000010000007B -S3156000DB40010000000100000001000000010000006B -S3156000DB50010000000100000001000000010000005B -S3156000DB60010000000100000001000000010000004B -S3156000DB70010000000100000001000000010000003B -S3156000DB80010000000100000001000000010000002B -S3156000DB90010000000100000001000000010000001B -S3156000DBA0010000000100000001000000010000000B -S3156000DBB001000000010000000100000001000000FB -S3156000DBC001000000010000000100000001000000EB -S3156000DBD001000000010000000100000001000000DB -S3156000DBE001000000010000000100000001000000CB -S3156000DBF001000000010000000100000001000000BB -S3156000DC0001000000010000000100000001000000AA -S3156000DC10010000000100000001000000010000009A -S3156000DC20010000000100000001000000010000008A -S3156000DC30010000000100000001000000010000007A -S3156000DC40010000000100000001000000010000006A -S3156000DC50010000000100000001000000010000005A -S3156000DC60010000000100000001000000010000004A -S3156000DC70010000000100000001000000010000003A -S3156000DC80010000000100000001000000010000002A -S3156000DC90010000000100000001000000010000001A -S3156000DCA0010000000100000001000000010000000A -S3156000DCB001000000010000000100000001000000FA -S3156000DCC001000000010000000100000001000000EA -S3156000DCD001000000010000000100000001000000DA -S3156000DCE001000000010000000100000001000000CA -S3156000DCF001000000010000000100000001000000BA -S3156000DD0001000000010000000100000001000000A9 -S3156000DD100100000001000000010000000100000099 -S3156000DD200100000001000000010000000100000089 -S3156000DD300100000001000000010000000100000079 -S3156000DD400100000001000000010000000100000069 -S3156000DD500100000001000000010000000100000059 -S3156000DD600100000001000000010000000100000049 -S3156000DD700100000001000000010000000100000039 -S3156000DD800100000001000000010000000100000029 -S3156000DD900100000001000000010000000100000019 -S3156000DDA00100000001000000010000000100000009 -S3156000DDB001000000010000000100000001000000F9 -S3156000DDC001000000010000000100000001000000E9 -S3156000DDD001000000010000000100000001000000D9 -S3156000DDE001000000010000000100000001000000C9 -S3156000DDF001000000010000000100000001000000B9 -S3156000DE0001000000010000000100000001000000A8 -S3156000DE100100000001000000010000000100000098 -S3156000DE200100000001000000010000000100000088 -S3156000DE300100000001000000010000000100000078 -S3156000DE400100000001000000010000000100000068 -S3156000DE500100000001000000010000000100000058 -S3156000DE600100000001000000010000000100000048 -S3156000DE700100000001000000010000000100000038 -S3156000DE800100000001000000010000000100000028 -S3156000DE900100000001000000010000000100000018 -S3156000DEA00100000001000000010000000100000008 -S3156000DEB001000000010000000100000001000000F8 -S3156000DEC001000000010000000100000001000000E8 -S3156000DED001000000010000000100000001000000D8 -S3156000DEE001000000010000000100000001000000C8 -S3156000DEF001000000010000000100000001000000B8 -S3156000DF0001000000010000000100000001000000A7 -S3156000DF100100000001000000010000000100000097 -S3156000DF200100000001000000010000000100000087 -S3156000DF300100000001000000010000000100000077 -S3156000DF400100000001000000010000000100000067 -S3156000DF500100000001000000010000000100000057 -S3156000DF600100000001000000010000000100000047 -S3156000DF700100000001000000010000000100000037 -S3156000DF800100000001000000010000000100000027 -S3156000DF900100000001000000010000000100000017 -S3156000DFA00100000001000000010000000100000007 -S3156000DFB001000000010000000100000001000000F7 -S3156000DFC001000000010000000100000001000000E7 -S3156000DFD001000000010000000100000001000000D7 -S3156000DFE001000000010000000100000001000000C7 -S3156000DFF001000000010000000100000001000000B7 -S3156000E00001000000010000000100000001000000A6 -S3156000E0100100000001000000010000000100000096 -S3156000E0200100000001000000010000000100000086 -S3156000E0300100000001000000010000000100000076 -S3156000E0400100000001000000010000000100000066 -S3156000E0500100000001000000010000000100000056 -S3156000E0600100000001000000010000000100000046 -S3156000E0700100000001000000010000000100000036 -S3156000E0800100000001000000010000000100000026 -S3156000E0900100000001000000010000000100000016 -S3156000E0A00100000001000000010000000100000006 -S3156000E0B001000000010000000100000001000000F6 -S3156000E0C001000000010000000100000001000000E6 -S3156000E0D001000000010000000100000001000000D6 -S3156000E0E001000000010000000100000001000000C6 -S3156000E0F001000000010000000100000001000000B6 -S3156000E10001000000010000000100000001000000A5 -S3156000E1100100000001000000010000000100000095 -S3156000E1200100000001000000010000000100000085 -S3156000E1300100000001000000010000000100000075 -S3156000E1400100000001000000010000000100000065 -S3156000E1500100000001000000010000000100000055 -S3156000E1600100000001000000010000000100000045 -S3156000E1700100000001000000010000000100000035 -S3156000E1800100000001000000010000000100000025 -S3156000E1900100000001000000010000000100000015 -S3156000E1A00100000001000000010000000100000005 -S3156000E1B001000000010000000100000001000000F5 -S3156000E1C001000000010000000100000001000000E5 -S3156000E1D001000000010000000100000001000000D5 -S3156000E1E001000000010000000100000001000000C5 -S3156000E1F001000000010000000100000001000000B5 -S3156000E20001000000010000000100000001000000A4 -S3156000E2100100000001000000010000000100000094 -S3156000E2200100000001000000010000000100000084 -S3156000E2300100000001000000010000000100000074 -S3156000E2400100000001000000010000000100000064 -S3156000E2500100000001000000010000000100000054 -S3156000E2600100000001000000010000000100000044 -S3156000E2700100000001000000010000000100000034 -S3156000E2800100000001000000010000000100000024 -S3156000E2900100000001000000010000000100000014 -S3156000E2A00100000001000000010000000100000004 -S3156000E2B001000000010000000100000001000000F4 -S3156000E2C001000000010000000100000001000000E4 -S3156000E2D001000000010000000100000001000000D4 -S3156000E2E001000000010000000100000001000000C4 -S3156000E2F001000000010000000100000001000000B4 -S3156000E30001000000010000000100000001000000A3 -S3156000E3100100000001000000010000000100000093 -S3156000E3200100000001000000010000000100000083 -S3156000E3300100000001000000010000000100000073 -S3156000E3400100000001000000010000000100000063 -S3156000E3500100000001000000010000000100000053 -S3156000E3600100000001000000010000000100000043 -S3156000E3700100000001000000010000000100000033 -S3156000E3800100000001000000010000000100000023 -S3156000E3900100000001000000010000000100000013 -S3156000E3A00100000001000000010000000100000003 -S3156000E3B001000000010000000100000001000000F3 -S3156000E3C001000000010000000100000001000000E3 -S3156000E3D001000000010000000100000001000000D3 -S3156000E3E001000000010000000100000001000000C3 -S3156000E3F001000000010000000100000001000000B3 -S3156000E40001000000010000000100000001000000A2 -S3156000E4100100000001000000010000000100000092 -S3156000E4200100000001000000010000000100000082 -S3156000E4300100000001000000010000000100000072 -S3156000E4400100000001000000010000000100000062 -S3156000E4500100000001000000010000000100000052 -S3156000E4600100000001000000010000000100000042 -S3156000E4700100000001000000010000000100000032 -S3156000E4800100000001000000010000000100000022 -S3156000E4900100000001000000010000000100000012 -S3156000E4A00100000001000000010000000100000002 -S3156000E4B001000000010000000100000001000000F2 -S3156000E4C001000000010000000100000001000000E2 -S3156000E4D001000000010000000100000001000000D2 -S3156000E4E001000000010000000100000001000000C2 -S3156000E4F001000000010000000100000001000000B2 -S3156000E50001000000010000000100000001000000A1 -S3156000E5100100000001000000010000000100000091 -S3156000E5200100000001000000010000000100000081 -S3156000E5300100000001000000010000000100000071 -S3156000E5400100000001000000010000000100000061 -S3156000E5500100000001000000010000000100000051 -S3156000E5600100000001000000010000000100000041 -S3156000E5700100000001000000010000000100000031 -S3156000E5800100000001000000010000000100000021 -S3156000E5900100000001000000010000000100000011 -S3156000E5A00100000001000000010000000100000001 -S3156000E5B001000000010000000100000001000000F1 -S3156000E5C001000000010000000100000001000000E1 -S3156000E5D001000000010000000100000001000000D1 -S3156000E5E001000000010000000100000001000000C1 -S3156000E5F001000000010000000100000001000000B1 -S3156000E60001000000010000000100000001000000A0 -S3156000E6100100000001000000010000000100000090 -S3156000E6200100000001000000010000000100000080 -S3156000E6300100000001000000010000000100000070 -S3156000E6400100000001000000010000000100000060 -S3156000E6500100000001000000010000000100000050 -S3156000E6600100000001000000010000000100000040 -S3156000E6700100000001000000010000000100000030 -S3156000E6800100000001000000010000000100000020 -S3156000E6900100000001000000010000000100000010 -S3156000E6A00100000001000000010000000100000000 -S3156000E6B001000000010000000100000001000000F0 -S3156000E6C001000000010000000100000001000000E0 -S3156000E6D001000000010000000100000001000000D0 -S3156000E6E001000000010000000100000001000000C0 -S3156000E6F001000000010000000100000001000000B0 -S3156000E700010000000100000001000000010000009F -S3156000E710010000000100000001000000010000008F -S3156000E720010000000100000001000000010000007F -S3156000E730010000000100000001000000010000006F -S3156000E740010000000100000001000000010000005F -S3156000E750010000000100000001000000010000004F -S3156000E760010000000100000001000000010000003F -S3156000E770010000000100000001000000010000002F -S3156000E780010000000100000001000000010000001F -S3156000E790010000000100000001000000010000000F -S3156000E7A001000000010000000100000001000000FF -S3156000E7B001000000010000000100000001000000EF -S3156000E7C001000000010000000100000001000000DF -S3156000E7D001000000010000000100000001000000CF -S3156000E7E001000000010000000100000001000000BF -S3156000E7F001000000010000000100000001000000AF -S3156000E800010000000100000001000000010000009E -S3156000E810010000000100000001000000010000008E -S3156000E820010000000100000001000000010000007E -S3156000E830010000000100000001000000010000006E -S3156000E840010000000100000001000000010000005E -S3156000E850010000000100000001000000010000004E -S3156000E860010000000100000001000000010000003E -S3156000E870010000000100000001000000010000002E -S3156000E880010000000100000001000000010000001E -S3156000E890010000000100000001000000010000000E -S3156000E8A001000000010000000100000001000000FE -S3156000E8B001000000010000000100000001000000EE -S3156000E8C001000000010000000100000001000000DE -S3156000E8D001000000010000000100000001000000CE -S3156000E8E001000000010000000100000001000000BE -S3156000E8F001000000010000000100000001000000AE -S3156000E900010000000100000001000000010000009D -S3156000E910010000000100000001000000010000008D -S3156000E920010000000100000001000000010000007D -S3156000E930010000000100000001000000010000006D -S3156000E940010000000100000001000000010000005D -S3156000E950010000000100000001000000010000004D -S3156000E960010000000100000001000000010000003D -S3156000E970010000000100000001000000010000002D -S3156000E980010000000100000001000000010000001D -S3156000E990010000000100000001000000010000000D -S3156000E9A001000000010000000100000001000000FD -S3156000E9B001000000010000000100000001000000ED -S3156000E9C001000000010000000100000001000000DD -S3156000E9D001000000010000000100000001000000CD -S3156000E9E001000000010000000100000001000000BD -S3156000E9F001000000010000000100000001000000AD -S3156000EA00010000000100000001000000010000009C -S3156000EA10010000000100000001000000010000008C -S3156000EA20010000000100000001000000010000007C -S3156000EA30010000000100000001000000010000006C -S3156000EA40010000000100000001000000010000005C -S3156000EA50010000000100000001000000010000004C -S3156000EA60010000000100000001000000010000003C -S3156000EA70010000000100000001000000010000002C -S3156000EA80010000000100000001000000010000001C -S3156000EA90010000000100000001000000010000000C -S3156000EAA001000000010000000100000001000000FC -S3156000EAB001000000010000000100000001000000EC -S3156000EAC001000000010000000100000001000000DC -S3156000EAD001000000010000000100000001000000CC -S3156000EAE001000000010000000100000001000000BC -S3156000EAF001000000010000000100000001000000AC -S3156000EB00010000000100000001000000010000009B -S3156000EB10010000000100000001000000010000008B -S3156000EB20010000000100000001000000010000007B -S3156000EB30010000000100000001000000010000006B -S3156000EB40010000000100000001000000010000005B -S3156000EB50010000000100000001000000010000004B -S3156000EB60010000000100000001000000010000003B -S3156000EB70010000000100000001000000010000002B -S3156000EB80010000000100000001000000010000001B -S3156000EB90010000000100000001000000010000000B -S3156000EBA001000000010000000100000001000000FB -S3156000EBB001000000010000000100000001000000EB -S3156000EBC001000000010000000100000001000000DB -S3156000EBD001000000010000000100000001000000CB -S3156000EBE001000000010000000100000001000000BB -S3156000EBF001000000010000000100000001000000AB -S3156000EC00010000000100000001000000010000009A -S3156000EC10010000000100000001000000010000008A -S3156000EC20010000000100000001000000010000007A -S3156000EC30010000000100000001000000010000006A -S3156000EC40010000000100000001000000010000005A -S3156000EC50010000000100000001000000010000004A -S3156000EC60010000000100000001000000010000003A -S3156000EC70010000000100000001000000010000002A -S3156000EC80010000000100000001000000010000001A -S3156000EC90010000000100000001000000010000000A -S3156000ECA001000000010000000100000001000000FA -S3156000ECB001000000010000000100000001000000EA -S3156000ECC001000000010000000100000001000000DA -S3156000ECD001000000010000000100000001000000CA -S3156000ECE001000000010000000100000001000000BA -S3156000ECF001000000010000000100000001000000AA -S3156000ED000100000001000000010000000100000099 -S3156000ED100100000001000000010000000100000089 -S3156000ED200100000001000000010000000100000079 -S3156000ED300100000001000000010000000100000069 -S3156000ED400100000001000000010000000100000059 -S3156000ED500100000001000000010000000100000049 -S3156000ED600100000001000000010000000100000039 -S3156000ED700100000001000000010000000100000029 -S3156000ED800100000001000000010000000100000019 -S3156000ED900100000001000000010000000100000009 -S3156000EDA001000000010000000100000001000000F9 -S3156000EDB001000000010000000100000001000000E9 -S3156000EDC001000000010000000100000001000000D9 -S3156000EDD001000000010000000100000001000000C9 -S3156000EDE001000000010000000100000001000000B9 -S3156000EDF001000000010000000100000001000000A9 -S3156000EE000100000001000000010000000100000098 -S3156000EE100100000001000000010000000100000088 -S3156000EE200100000001000000010000000100000078 -S3156000EE300100000001000000010000000100000068 -S3156000EE400100000001000000010000000100000058 -S3156000EE500100000001000000010000000100000048 -S3156000EE600100000001000000010000000100000038 -S3156000EE700100000001000000010000000100000028 -S3156000EE800100000001000000010000000100000018 -S3156000EE900100000001000000010000000100000008 -S3156000EEA001000000010000000100000001000000F8 -S3156000EEB001000000010000000100000001000000E8 -S3156000EEC001000000010000000100000001000000D8 -S3156000EED001000000010000000100000001000000C8 -S3156000EEE001000000010000000100000001000000B8 -S3156000EEF001000000010000000100000001000000A8 -S3156000EF000100000001000000010000000100000097 -S3156000EF100100000001000000010000000100000087 -S3156000EF200100000001000000010000000100000077 -S3156000EF300100000001000000010000000100000067 -S3156000EF400100000001000000010000000100000057 -S3156000EF500100000001000000010000000100000047 -S3156000EF600100000001000000010000000100000037 -S3156000EF700100000001000000010000000100000027 -S3156000EF800100000001000000010000000100000017 -S3156000EF900100000001000000010000000100000007 -S3156000EFA001000000010000000100000001000000F7 -S3156000EFB001000000010000000100000001000000E7 -S3156000EFC001000000010000000100000001000000D7 -S3156000EFD001000000010000000100000001000000C7 -S3156000EFE001000000010000000100000001000000B7 -S3156000EFF001000000010000000100000001000000A7 -S3156000F0000100000001000000010000000100000096 -S3156000F0100100000001000000010000000100000086 -S3156000F0200100000001000000010000000100000076 -S3156000F0300100000001000000010000000100000066 -S3156000F0400100000001000000010000000100000056 -S3156000F0500100000001000000010000000100000046 -S3156000F0600100000001000000010000000100000036 -S3156000F0700100000001000000010000000100000026 -S3156000F0800100000001000000010000000100000016 -S3156000F0900100000001000000010000000100000006 -S3156000F0A001000000010000000100000001000000F6 -S3156000F0B001000000010000000100000001000000E6 -S3156000F0C001000000010000000100000001000000D6 -S3156000F0D001000000010000000100000001000000C6 -S3156000F0E001000000010000000100000001000000B6 -S3156000F0F001000000010000000100000001000000A6 -S3156000F1000100000001000000010000000100000095 -S3156000F1100100000001000000010000000100000085 -S3156000F1200100000001000000010000000100000075 -S3156000F1300100000001000000010000000100000065 -S3156000F1400100000001000000010000000100000055 -S3156000F1500100000001000000010000000100000045 -S3156000F1600100000001000000010000000100000035 -S3156000F1700100000001000000010000000100000025 -S3156000F1800100000001000000010000000100000015 -S3156000F1900100000001000000010000000100000005 -S3156000F1A001000000010000000100000001000000F5 -S3156000F1B001000000010000000100000001000000E5 -S3156000F1C001000000010000000100000001000000D5 -S3156000F1D001000000010000000100000001000000C5 -S3156000F1E001000000010000000100000001000000B5 -S3156000F1F001000000010000000100000001000000A5 -S3156000F2000100000001000000010000000100000094 -S3156000F2100100000001000000010000000100000084 -S3156000F2200100000001000000010000000100000074 -S3156000F2300100000001000000010000000100000064 -S3156000F2400100000001000000010000000100000054 -S3156000F2500100000001000000010000000100000044 -S3156000F2600100000001000000010000000100000034 -S3156000F2700100000001000000010000000100000024 -S3156000F2800100000001000000010000000100000014 -S3156000F2900100000001000000010000000100000004 -S3156000F2A001000000010000000100000001000000F4 -S3156000F2B001000000010000000100000001000000E4 -S3156000F2C001000000010000000100000001000000D4 -S3156000F2D001000000010000000100000001000000C4 -S3156000F2E001000000010000000100000001000000B4 -S3156000F2F001000000010000000100000001000000A4 -S3156000F3000100000001000000010000000100000093 -S3156000F3100100000001000000010000000100000083 -S3156000F3200100000001000000010000000100000073 -S3156000F3300100000001000000010000000100000063 -S3156000F3400100000001000000010000000100000053 -S3156000F3500100000001000000010000000100000043 -S3156000F3600100000001000000010000000100000033 -S3156000F3700100000001000000010000000100000023 -S3156000F3800100000001000000010000000100000013 -S3156000F3900100000001000000010000000100000003 -S3156000F3A001000000010000000100000001000000F3 -S3156000F3B001000000010000000100000001000000E3 -S3156000F3C001000000010000000100000001000000D3 -S3156000F3D001000000010000000100000001000000C3 -S3156000F3E001000000010000000100000001000000B3 -S3156000F3F001000000010000000100000001000000A3 -S3156000F4000100000001000000010000000100000092 -S3156000F4100100000001000000010000000100000082 -S3156000F4200100000001000000010000000100000072 -S3156000F4300100000001000000010000000100000062 -S3156000F4400100000001000000010000000100000052 -S3156000F4500100000001000000010000000100000042 -S3156000F4600100000001000000010000000100000032 -S3156000F4700100000001000000010000000100000022 -S3156000F4800100000001000000010000000100000012 -S3156000F4900100000001000000010000000100000002 -S3156000F4A001000000010000000100000001000000F2 -S3156000F4B001000000010000000100000001000000E2 -S3156000F4C001000000010000000100000001000000D2 -S3156000F4D001000000010000000100000001000000C2 -S3156000F4E001000000010000000100000001000000B2 -S3156000F4F001000000010000000100000001000000A2 -S3156000F5000100000001000000010000000100000091 -S3156000F5100100000001000000010000000100000081 -S3156000F5200100000001000000010000000100000071 -S3156000F5300100000001000000010000000100000061 -S3156000F5400100000001000000010000000100000051 -S3156000F5500100000001000000010000000100000041 -S3156000F5600100000001000000010000000100000031 -S3156000F5700100000001000000010000000100000021 -S3156000F5800100000001000000010000000100000011 -S3156000F5900100000001000000010000000100000001 -S3156000F5A001000000010000000100000001000000F1 -S3156000F5B001000000010000000100000001000000E1 -S3156000F5C001000000010000000100000001000000D1 -S3156000F5D001000000010000000100000001000000C1 -S3156000F5E001000000010000000100000001000000B1 -S3156000F5F001000000010000000100000001000000A1 -S3156000F6000100000001000000010000000100000090 -S3156000F6100100000001000000010000000100000080 -S3156000F6200100000001000000010000000100000070 -S3156000F6300100000001000000010000000100000060 -S3156000F6400100000001000000010000000100000050 -S3156000F6500100000001000000010000000100000040 -S3156000F6600100000001000000010000000100000030 -S3156000F6700100000001000000010000000100000020 -S3156000F6800100000001000000010000000100000010 -S3156000F6900100000001000000010000000100000000 -S3156000F6A001000000010000000100000001000000F0 -S3156000F6B001000000010000000100000001000000E0 -S3156000F6C001000000010000000100000001000000D0 -S3156000F6D001000000010000000100000001000000C0 -S3156000F6E001000000010000000100000001000000B0 -S3156000F6F001000000010000000100000001000000A0 -S3156000F700010000000100000001000000010000008F -S3156000F710010000000100000001000000010000007F -S3156000F720010000000100000001000000010000006F -S3156000F730010000000100000001000000010000005F -S3156000F740010000000100000001000000010000004F -S3156000F750010000000100000001000000010000003F -S3156000F760010000000100000001000000010000002F -S3156000F770010000000100000001000000010000001F -S3156000F780010000000100000001000000010000000F -S3156000F79001000000010000000100000001000000FF -S3156000F7A001000000010000000100000001000000EF -S3156000F7B001000000010000000100000001000000DF -S3156000F7C001000000010000000100000001000000CF -S3156000F7D001000000010000000100000001000000BF -S3156000F7E001000000010000000100000001000000AF -S3156000F7F0010000000100000001000000010000009F -S3156000F800010000000100000001000000010000008E -S3156000F810010000000100000001000000010000007E -S3156000F820010000000100000001000000010000006E -S3156000F830010000000100000001000000010000005E -S3156000F840010000000100000001000000010000004E -S3156000F850010000000100000001000000010000003E -S3156000F860010000000100000001000000010000002E -S3156000F870010000000100000001000000010000001E -S3156000F880010000000100000001000000010000000E -S3156000F89001000000010000000100000001000000FE -S3156000F8A001000000010000000100000001000000EE -S3156000F8B001000000010000000100000001000000DE -S3156000F8C001000000010000000100000001000000CE -S3156000F8D001000000010000000100000001000000BE -S3156000F8E001000000010000000100000001000000AE -S3156000F8F0010000000100000001000000010000009E -S3156000F900010000000100000001000000010000008D -S3156000F910010000000100000001000000010000007D -S3156000F920010000000100000001000000010000006D -S3156000F930010000000100000001000000010000005D -S3156000F940010000000100000001000000010000004D -S3156000F950010000000100000001000000010000003D -S3156000F960010000000100000001000000010000002D -S3156000F970010000000100000001000000010000001D -S3156000F980010000000100000001000000010000000D -S3156000F99001000000010000000100000001000000FD -S3156000F9A001000000010000000100000001000000ED -S3156000F9B001000000010000000100000001000000DD -S3156000F9C001000000010000000100000001000000CD -S3156000F9D001000000010000000100000001000000BD -S3156000F9E001000000010000000100000001000000AD -S3156000F9F0010000000100000001000000010000009D -S3156000FA00010000000100000001000000010000008C -S3156000FA10010000000100000001000000010000007C -S3156000FA20010000000100000001000000010000006C -S3156000FA30010000000100000001000000010000005C -S3156000FA40010000000100000001000000010000004C -S3156000FA50010000000100000001000000010000003C -S3156000FA60010000000100000001000000010000002C -S3156000FA70010000000100000001000000010000001C -S3156000FA80010000000100000001000000010000000C -S3156000FA9001000000010000000100000001000000FC -S3156000FAA001000000010000000100000001000000EC -S3156000FAB001000000010000000100000001000000DC -S3156000FAC001000000010000000100000001000000CC -S3156000FAD001000000010000000100000001000000BC -S3156000FAE001000000010000000100000001000000AC -S3156000FAF0010000000100000001000000010000009C -S3156000FB00010000000100000001000000010000008B -S3156000FB10010000000100000001000000010000007B -S3156000FB20010000000100000001000000010000006B -S3156000FB30010000000100000001000000010000005B -S3156000FB40010000000100000001000000010000004B -S3156000FB50010000000100000001000000010000003B -S3156000FB60010000000100000001000000010000002B -S3156000FB70010000000100000001000000010000001B -S3156000FB80010000000100000001000000010000000B -S3156000FB9001000000010000000100000001000000FB -S3156000FBA001000000010000000100000001000000EB -S3156000FBB001000000010000000100000001000000DB -S3156000FBC001000000010000000100000001000000CB -S3156000FBD001000000010000000100000001000000BB -S3156000FBE001000000010000000100000001000000AB -S3156000FBF0010000000100000001000000010000009B -S3156000FC00010000000100000001000000010000008A -S3156000FC10010000000100000001000000010000007A -S3156000FC20010000000100000001000000010000006A -S3156000FC30010000000100000001000000010000005A -S3156000FC40010000000100000001000000010000004A -S3156000FC50010000000100000001000000010000003A -S3156000FC60010000000100000001000000010000002A -S3156000FC70010000000100000001000000010000001A -S3156000FC80010000000100000001000000010000000A -S3156000FC9001000000010000000100000001000000FA -S3156000FCA001000000010000000100000001000000EA -S3156000FCB001000000010000000100000001000000DA -S3156000FCC001000000010000000100000001000000CA -S3156000FCD001000000010000000100000001000000BA -S3156000FCE001000000010000000100000001000000AA -S3156000FCF0010000000100000001000000010000009A -S3156000FD000100000001000000010000000100000089 -S3156000FD100100000001000000010000000100000079 -S3156000FD200100000001000000010000000100000069 -S3156000FD300100000001000000010000000100000059 -S3156000FD400100000001000000010000000100000049 -S3156000FD500100000001000000010000000100000039 -S3156000FD600100000001000000010000000100000029 -S3156000FD700100000001000000010000000100000019 -S3156000FD800100000001000000010000000100000009 -S3156000FD9001000000010000000100000001000000F9 -S3156000FDA001000000010000000100000001000000E9 -S3156000FDB001000000010000000100000001000000D9 -S3156000FDC001000000010000000100000001000000C9 -S3156000FDD001000000010000000100000001000000B9 -S3156000FDE001000000010000000100000001000000A9 -S3156000FDF00100000001000000010000000100000099 -S3156000FE000100000001000000010000000100000088 -S3156000FE100100000001000000010000000100000078 -S3156000FE200100000001000000010000000100000068 -S3156000FE300100000001000000010000000100000058 -S3156000FE400100000001000000010000000100000048 -S3156000FE500100000001000000010000000100000038 -S3156000FE600100000001000000010000000100000028 -S3156000FE700100000001000000010000000100000018 -S3156000FE800100000001000000010000000100000008 -S3156000FE9001000000010000000100000001000000F8 -S3156000FEA001000000010000000100000001000000E8 -S3156000FEB001000000010000000100000001000000D8 -S3156000FEC001000000010000000100000001000000C8 -S3156000FED001000000010000000100000001000000B8 -S3156000FEE001000000010000000100000001000000A8 -S3156000FEF00100000001000000010000000100000098 -S3156000FF000100000001000000010000000100000087 -S3156000FF100100000001000000010000000100000077 -S3156000FF200100000001000000010000000100000067 -S3156000FF300100000001000000010000000100000057 -S3156000FF400100000001000000010000000100000047 -S3156000FF500100000001000000010000000100000037 -S3156000FF600100000001000000010000000100000027 -S3156000FF700100000001000000010000000100000017 -S3156000FF800100000001000000010000000100000007 -S3156000FF9001000000010000000100000001000000F7 -S3156000FFA001000000010000000100000001000000E7 -S3156000FFB001000000010000000100000001000000D7 -S3156000FFC001000000010000000100000001000000C7 -S3156000FFD001000000010000000100000001000000B7 -S3156000FFE001000000010000000100000001000000A7 -S3156000FFF00100000001000000010000000100000097 -S315600100009DE3BF987FFFC4741100403080A2200039 -S31560010010128000F382102001C226200CC026200423 -S31560010020C0260000C026200882102002C2262008B1 -S31560010030C0260000C026000082102003C2262008C8 -S315600100409A102083DA262008A2102063C0260000B9 -S31560010050A2847FFF1CBFFFFE01000000A210206387 -S31560010060C2060000A2847FFF1CBFFFFE8210200231 -S31560010070C2262008A4062004C284802080886004E9 -S3156001008002BFFFFE01000000C0262008C026000056 -S31560010090A6102001C2848020833860148208603FE4 -S315600100A080A0600122800093A604E00182102003F3 -S315600100B0C2262008C28480208088600102800007F1 -S315600100C080886004C2860020C284802080886001A6 -S315600100D012BFFFFD8088600402BFFFFB808860025B -S315600100E002BFFFF901000000C0262008C0262004D7 -S315600100F080A4E0010480000821180080C284802069 -S315600101008208608080A06001028000AE010000006C -S3156001011021180080DA4C20F0DA260000C2848020A3 -S315600101208208600480A060010280009A01000000DC -S31560010130C284802080A4E001048000208210200116 -S31560010140A210200180A440131680000D2B18008098 -S31560010150A81420F0E00560E8901000114000247AB0 -S3156001016092100010C24D0008A2046001C226000070 -S3156001017080A4401306BFFFFA90100011C28480204C -S315600101808208608080A06001028000920100000008 -S31560010190C2848020833860148208603F80A0401347 -S315600101A002800004010000007FFFC4159010200644 -S315600101B0C284802082102001C226200CDA8480202D -S315600101C0808B60011280006801000000821020832C -S315600101D0C226200880A4E0010280005201000000CE -S315600101E0C28480208088640002BFFFFE0100000097 -S315600101F0C284802080886001028000530100000073 -S3156001020080A4E00124800012A2102000C284802014 -S315600102108330601A80A04013028000040100000050 -S315600102207FFFC3F790102009C28480208088610017 -S315600102300280005501000000C2848020808864002D -S315600102400280004D01000000A210200080A440132E -S315600102501680001203180080A81060F02B18008029 -S31560010260E08600209010001140002437D20560E836 -S31560010270C24D0008A204600180A040100280000403 -S315600102809010200C7FFFC3DE0100000080A44013A4 -S3156001029006BFFFF40100000080A4E0010480000FA6 -S315600102A001000000C28480208088610012800042C3 -S315600102B001000000C28480208330601A80A0600043 -S315600102C01280003A01000000C284802080886400A8 -S315600102D01280003301000000C284802080886001A2 -S315600102E01280001D01000000C02620083080003CFD -S315600102F0C0260000C2848020833860148208603F73 -S3156001030080A0401322BFFFFBA604E00180A4E001A8 -S3156001031034BFFF67A604FFFF10BFFF66821020038C -S31560010320C28480208088600112BFFFB20100000094 -S31560010330C28480208088600102BFFFFA010000004C -S3156001034030BFFFAC7FFFC3AE9010200810BFFFAE79 -S3156001035080A4E0017FFFC3AA9010200CC02620086C -S315600103603080001F7FFFC3A69010200710BFFF9942 -S31560010370821020837FFFC3A29010200B10BFFFB4B1 -S31560010380A21020007FFFC39E9010200A30BFFFABF2 -S315600103907FFFC39B9010200130BFFF667FFFC3982C -S315600103A09010200B30BFFFCD7FFFC3959010200EBC -S315600103B030BFFFC67FFFC3929010200D30BFFFBED6 -S315600103C07FFFC38F9010200410BFFF532118008058 -S315600103D07FFFC38B9010200530BFFF6E81C7E00899 -S315600103E091E8200017180143DA02E080900220109C -S315600103F09B2B60029812E080D023000DC202E08040 -S3156001040082006001C222E08081C3E0080100000031 -S31560010410C0220000C022204082103FFFC222200C71 -S315600104209A10200103180143DA20608081C3E00835 -S31560010430010000009DE3BF7803180144F02060CC01 -S315600104407FFFC365110040347FFFFFF290100018F3 -S31560010450A010200123180040921000104000298F3F -S31560010460901463E4A004200180A4200F04BFFFFC64 -S3156001047092100010C20620208330601CAE0060011D -S31560010480AC10200080A58017168000ED0300003FA8 -S31560010490B81063FE2B1801430300002AB61062AA46 -S315600104A0BA102001B410001CB2156080832DA00C17 -S315600104B080A5E00114800119A600401880A5A0005E -S315600104C01280010A01000000F824E008C204E00875 -S315600104D080A0401C02800004010000007FFFC34829 -S315600104E090102001F824E040C204E04080A0401C46 -S315600104F002800004010000007FFFC34190102002CA -S31560010500C204E00880A0600012BFFFFE0100000087 -S31560010510C205608080A06010028000052518014335 -S315600105207FFFC3379010200325180143A0102001D7 -S31560010530A414A080A2102020832C20029A244010AB -S31560010540D8048001A004200180A3000D028000046C -S31560010550901020047FFFC32A0100000080A4200FB1 -S3156001056004BFFFF7832C2002FA256080F624C000C1 -S31560010570F424E040C204C00080A0401B0280000455 -S31560010580A010001A7FFFC31E90102005C204E04030 -S3156001059080A0401002800004010000007FFFC318A4 -S315600105A090102005F424E008C204E00880A06000F1 -S315600105B012BFFFFE01000000C205608080A06010CE -S315600105C002800005251801437FFFC30D90102006A8 -S315600105D025180143A0102001A414A080A210201F99 -S315600105E09B2C2002C204800D80A04011A004200132 -S315600105F0A2047FFE02800004901020077FFFC300E3 -S315600106000100000080A4200704BFFFF79B2C200295 -S31560010610A4066028A210201CA0102005C204800038 -S3156001062080A04011A404A004A2047FFE02800004FD -S31560010630901020087FFFC2F201000000A0843FFFF6 -S315600106401CBFFFF701000000FA27BFE8C207BFE839 -S3156001065082006001C227BFECDA07BFEC9A03600132 -S31560010660DA27BFF0C207BFF082006001C227BFF47C -S315600106709A102006DA27BFD8C024C000C024E04003 -S31560010680FA256080A0102002E024E040E024E00822 -S3156001069083444000808861000280000501000000FB -S315600106A0805000018050000180500001C207BFD810 -S315600106B0C227BFDCDA07BFD880A3600602800004C8 -S315600106C0010000007FFFC2CE9010200AE024E008FE -S315600106D001000000C207BFD8C227BFDCDA07BFD856 -S315600106E080A3600602800004010000007FFFC2C48F -S315600106F09010200AE024E00801000000C027BFDC5A -S31560010700C207BFDC80A06000128000960100000075 -S31560010710C204E00880A0600012BFFFFE0100000075 -S31560010720C205608080A06004028000050300003F6E -S315600107307FFFC2B39010200D0300003FC024E0404C -S31560010740821063FEC224E008031801439A10200157 -S31560010750DA206080400003E801000000400003E801 -S3156001076090122F0082103FFFC224E040C204E04095 -S3156001077080A0600002BFFFFE01000000C20560802C -S3156001078080A0600202800004A01560807FFFC29C89 -S315600107909010200EC204200480A0601F0280000415 -S315600107A0010000007FFFC2969010200F400003D227 -S315600107B0A8100010400003D290023F00A010200252 -S315600107C0A4102020400003CC01000000400003CCAF -S315600107D090023F00C2056080A204200180A0401102 -S315600107E002800004901020107FFFC2850100000086 -S315600107F0832C20029A248010D8050001A0100011D4 -S3156001080080A3000D02800004901020117FFFC27C3E -S315600108100100000080A4200F04BFFFEB010000006F -S31560010820C024E040AC05A00182103FFFC224E00C69 -S3156001083080A5801706BFFF1F832DA00C80A5E00150 -S315600108400480004B01000000C0262024C20620243B -S3156001085080A060001280003F0100000021040000BA -S31560010860E0262024C206202480A0401002800005D4 -S31560010870821020017FFFC262901020148210200135 -S31560010880C2262020C0262024C206202480A0401033 -S3156001089002800004010000007FFFC25990102015FC -S315600108A0C0262020C0262024C206202480A0600005 -S315600108B0128000240100000082102002C22620203E -S315600108C0DA062020808B60020280001B0100000096 -S315600108D0C0262020C2062020808860020280002473 -S315600108E001000000308000117FFFFECA90100013E6 -S315600108F09B2DA01CDA24E024C204E0248330601C12 -S3156001090080A0401602BFFEF1010000007FFFC23CDD -S315600109109010201230BFFEED7FFFC234901000169A -S3156001092010BFFEE880A5A0007FFFC2359010201899 -S315600109303080000F7FFFC2329010201730BFFFE575 -S315600109407FFFC22F9010201610BFFFDD821020029C -S315600109507FFFC22B9010201310BFFFC2210400003D -S315600109607FFFC2279010200B30BFFF6A81C7E00866 -S3156001097091E8200003180143DA0060C8C0236008CB -S3156001098081C3E008901020009DE3BF902F180144B9 -S31560010990E205E0CCA004610027180143C2042004EB -S315600109A0F024E0C87FFFC21190102010030180007F -S315600109B0DA04200482106020808B40011280010DD0 -S315600109C001000000DA046100DA27BFF0C2046100A9 -S315600109D080A3400102800005821020017FFFC208CA -S315600109E09010200282102001C2242004DA046100E2 -S315600109F0DA27BFF0C204610080A3400102800120B2 -S31560010A0001000000C0242004DA046100DA27BFF087 -S31560010A10C204610080A340010280000580A7200016 -S31560010A207FFFC1F79010200480A72000128000B7D5 -S31560010A3080A72001B010200180A6001A1680001739 -S31560010A40A8102001108000052518004280A6001A12 -S31560010A5016800013DA04E0C8A206C0189014A174C7 -S31560010A609210001180A4601F14BFFFF9B006200127 -S31560010A704000280A01000000D805E0CCC2032040EE -S31560010A809B2D00118210400DC223204080A6001AC2 -S31560010A9006BFFFF3A206C018DA04E0C89606A003F3 -S31560010AA0C0236004833AE01FC023601098103FFFA3 -S31560010AB08330601EAA02C001D8236014D823600C5B -S31560010AC0A2102000AD3D600280A720000280008A4E -S31560010AD0A810200180A4401C168000ECC204E0C866 -S31560010AE080A7200104800015B010200080A5A00019 -S31560010AF00480001380A0001C9B2C6010832C60185E -S31560010B008210400D992C60088210400C82104011B1 -S31560010B10993D6002DA04E0C8C2236020B006200174 -S31560010B2080A72001048000059A03600480A3001851 -S31560010B3014BFFFFA0100000080A0001CB0603FFFF7 -S31560010B4080A6001A16800016C204E0C8250180003E -S31560010B5080A72000028000058206C01880A72001B8 -S31560010B60028000848206C011C2242004D804E0C831 -S31560010B70832D00189B3E4018C2232008808B60019C -S31560010B80128000859A10000CB006200180A6001A1A -S31560010B9006BFFFF180A72000C204E0C8C02060083C -S31560010BA0808E600112800009B0102000B00620011D -S31560010BB080A6201F14800005833E4018808860014E -S31560010BC022BFFFFCB006200180A72000028000063C -S31560010BD08206C01880A72001028000048216E020E8 -S31560010BE08206C01182106020C2242004DA04E0C8A3 -S31560010BF0832D0018C2236008C203600880A06000CC -S31560010C0012BFFFFE01000000C2042004808860203C -S31560010C100280009801000000DA042004030100004C -S31560010C20808B40010280009001000000DA042004FC -S31560010C3003008000808B4001028000880100000073 -S31560010C40C2042008C227BFF0DA04200CDA27BFF4F9 -S31560010C50C204E0C8992D0018D82060089A100001D6 -S31560010C60C203600880A0600012BFFFFE01000000A1 -S31560010C70C2042004808860200280007501000000A3 -S31560010C80DA04200403010000808B40010280006DBC -S31560010C9001000000DA04200403008000808B40011B -S31560010CA00280006501000000DA042008C207BFF077 -S31560010CB080A0400D02800004010000007FFFC1504A -S31560010CC09010200EDA04200CC207BFF480A0400DFC -S31560010CD002800005030180007FFFC1499010200F4B -S31560010CE003018000C224200480A7200012BFFF7A7E -S31560010CF0A204600180A4600004BFFF7B80A720017D -S31560010D0010800062C204E0C80280003D11180042F2 -S31560010D10B010200080A6001C16BFFF60A81020013D -S31560010D20108000052518004280A6001C16BFFF5CD6 -S31560010D30DA04E0C8A206C0189014A17492100011DA -S31560010D4080A4601F14BFFFF9B0062001400027533D -S31560010D5001000000D805E0CCC20320409B2D0011A4 -S31560010D608210400DC223204010BFFFF180A6001CF7 -S31560010D70F6242004D804E0C8832D00189B3E401851 -S31560010D80C2232008808B600122BFFF81B00620014B -S31560010D909A10000CC203600880A0600012BFFFFEBB -S31560010DA001000000DA04200403010000808B400189 -S31560010DB00280001E01000000DA04200403008000A6 -S31560010DC0808B40010280001601000000E4242004AB -S31560010DD0C20420048088401222BFFF6DB006200144 -S31560010DE07FFFC1079010200710BFFF69B006200181 -S31560010DF07FFFC1039010200130BFFEF39012217472 -S31560010E00400027269210001BDA05E0CC832F001BD9 -S31560010E10C223604010BFFF22DA04E0C87FFFC0F83A -S31560010E209010200630BFFFEA7FFFC0F590102005C5 -S31560010E3030BFFFE27FFFC0F29010200D30BFFF9BF5 -S31560010E407FFFC0EF9010200C30BFFF937FFFC0EC97 -S31560010E509010200B30BFFF8B7FFFC0E99010200AF6 -S31560010E6030BFFF787FFFC0E69010200930BFFF706A -S31560010E707FFFC0E39010200830BFFF687FFFC0E0AE -S31560010E809010200330BFFEE0C020600CDA05E0CC94 -S31560010E90C023604082103FFFC223600C81C7E00817 -S31560010EA091E820009DE3BF983B180144E60760CCBA -S31560010EB07FFFC0CE90102011C024E01CC204E01C4C -S31560010EC080A060000280004801000000C204E01CAE -S31560010ED08330601B80A0401A0A80003F0100000039 -S31560010EE0A410200080A4801A1A8000422D180143A4 -S31560010EF0AA102001AE15A080A32CA002E006401125 -S31560010F007FFFFD4490100013A804A0019B2D4012A1 -S31560010F10832D20108210400DC224E01C9A103FFFE1 -S31560010F20DA24E040D80600119A10201FDA23200443 -S31560010F30A0043FFFDA230000A12C20048204000CE8 -S31560010F409A102005DA206010C0206014EA2060182B -S31560010F509A100001C203601080A0600012BFFFFEFC -S31560010F6001000000A004000CC204201080A06000F3 -S31560010F7002BFFFFE01000000C0242018C205A08048 -S31560010F8080A06002028000069A04A011900480127B -S31560010F907FFFC09B900220039A04A011C205E00462 -S31560010FA080A0400D22800006A410001490048012D7 -S31560010FB07FFFC09390022004A4100014C024E01C9B -S31560010FC080A5001A0ABFFFCEA32CA0021080000ADA -S31560010FD0DA0760CC7FFFC08A9010200210BFFFC283 -S31560010FE0A41020007FFFC0869010200130BFFFB89B -S31560010FF0DA0760CCC023604082103FFFC223600CD9 -S3156001100081C7E00891E820009DE3BF987FFFC08B10 -S315600110100100000080A220000280002680A6200038 -S3156001102012800029010000007FFFC08401000000DA -S31560011030912A20047FFFC06D900220034000186D45 -S315600110400100000080A220001280002B0100000038 -S315600110504000182B01000000400017E40100000069 -S31560011060400002270100000080A6A0001280002D2A -S31560011070031801447FFFC071B41060D0912A200229 -S31560011080C206800880A060001280003080A6200021 -S3156001109012800039010000004000048E010000004A -S315600110A040001E0201000000400015C181E80000F9 -S315600110B07FFFC0491100400C80A6200002BFFFDB04 -S315600110C0010000007FFFC0F5901000197FFFC05B33 -S315600110D001000000912A20047FFFC0449002200392 -S315600110E0400018440100000080A2200002BFFFD921 -S315600110F0010000007FFFC0429010200140001800EF -S3156001110001000000400017B901000000400001FC29 -S315600111100100000080A6A00002BFFFD703180144AA -S3156001112040001DED01000000031801447FFFC0432C -S31560011130B41060D0912A2002C206800880A06000A7 -S3156001114002BFFFD480A620007FFFC03C01000000E3 -S315600111507FFFC03AA0100008912A2002C2068008CB -S315600111609FC040009010001080A6200002BFFFCBF8 -S31560011170010000007FFFC0D990100019400004559E -S315600111800100000040001DC90100000040001588F3 -S3156001119081E800000100000003180143DA0060CC19 -S315600111A09A036001DA2060CC81C3E0080100000087 -S315600111B09DE3BF987FFFC00811004044D806200810 -S315600111C082103FFFC2262004DA060000C206000034 -S315600111D080A340010280006FA60B20078210201FAA -S315600111E0C2262004C226000080A4E00002800033EB -S315600111F082100018A2100013C0206018A2847FFF1D -S3156001120012BFFFFE82006010A210200080A440136E -S315600112101680002B80A4E001A810200FA0100018F2 -S315600112207FFFBFF290100011C0242010E824201423 -S3156001123082102006C2242018DA04201080A3600FD1 -S3156001124002800004010000007FFFBFED90102003C3 -S31560011250E82420189A10200EC204201080A0400DA8 -S3156001126012BFFFFE010000009A837FFF1CBFFFFBD8 -S31560011270A4100010C204201080A0600F12BFFFFEF0 -S3156001128001000000C20420188088601002800035C9 -S3156001129082102010C224A018DA042018808B6010F6 -S315600112A01280003801000000A204600180A440138E -S315600112B006BFFFDCA004201080A4E00114800010AA -S315600112C080A4E0000280000782100018A2100013BB -S315600112D0C0206018A2847FFF12BFFFFE82006010EB -S315600112E021180144C20420CC80A060000280002D38 -S315600112F0111800441080000D921000197FFFBFBBCA -S31560011300901020088210200FC22620189A10202FD4 -S31560011310DA262028C206202080A0600D12BFFFFEBB -S3156001132080A4E00030BFFFE8400025DC90122198E0 -S315600113307FFFFC38D00420CC82102001832840191D -S31560011340DA0420CCC22360409810200FD8262014DE -S315600113508210200DC2262018A7800000308000115F -S315600113607FFFBFA79010200482102010C224A0180E -S31560011370DA042018808B601022BFFFCDA2046001C1 -S315600113807FFFBF9F9010200510BFFFC9A2046001B7 -S315600113907FFFBF9B9010200110BFFF928210201F1C -S315600113A081C7E00881E8000000000000000000003D -S315600113B000000000000000000000000000000000C6 -S315600113C001000000010000000100000001000000B2 -S315600113D0010000000100000081C3E0080100000077 -S315600113E00100000001000000010000000100000092 -S315600113F0010000000100000081C3E0080100000057 -S315600114000100000001000000010000000100000071 -S31560011410010000000100000081C3E0080100000036 -S315600114200100000001000000010000000100000051 -S31560011430010000000100000081C3E0080100000016 -S31560011440D482018090A2000916BFFFFE9612800B1E -S3156001145081C3E0089010000BD48201C090A20009FC -S3156001146016BFFFFE9612800B81C3E0089010000B39 -S3156001147090A22004C0A201A090A22004C0A201A053 -S3156001148090A22004C0A201A090A22004C0A201A043 -S31560011490C0A2018090A2200414BFFFF701000000E2 -S315600114A081C3E0080100000090A22004C0A201E00F -S315600114B090A22004C0A201E090A22004C0A201E093 -S315600114C090A22004C0A201E0C0A201C090A22004A3 -S315600114D014BFFFF70100000081C3E00801000000AE -S315600114E0981000089610000A98A3200814BFFFFF01 -S315600114F0D43B00099810000898A3200814BFFFFF89 -S31560011500C01B00099810000898A32004D60300099F -S3156001151080A2C00A1280000698A3200434BFFFFD92 -S31560011520D603000981C3E0089010200090102001C5 -S31560011530981000089610000A98A3200814BFFFFFB0 -S31560011540D43B00099810000898A32004D60300092B -S3156001155080A2C00A1280000698A3200434BFFFFD52 -S31560011560D603000981C3E008901020009010200185 -S315600115709810000898A32004D2A301A0DA8301A0E1 -S3156001158080A340091280000698A3200414BFFFFCC3 -S31560011590D2A301A081C3E008901020009010200121 -S315600115A09A1000089AA3400AD6A34180D883418045 -S315600115B0981B000B988B0009128000069AA3400ABB -S315600115C014BFFFFBD6A3418081C3E00890102000C1 -S315600115D0901020019A1000089AA3400BD8A241CD21 -S315600115E0C48241CD8418800C8488800A12800006EA -S315600115F09AA3400B14BFFFFBD8A241CD81C3E0087B -S3156001160090102000901020010100000001000000F0 -S31560011610010000001318008092126138D402400064 -S3156001162080A2A0011280000780A0A002D40240001F -S31560011630D4024000952AA002108000050100000036 -S315600116403280000381E80000D402400081E000009E -S3156001165093480000818A602023180045A2146278AD -S31560011660A40460040100000081C4400081CC8000B4 -S3156001167091D0200191D020012680000590002001A3 -S3156001168090222001912A2001912A200281C3E0083B -S315600116900100000081C3E008D082004081C3E008F8 -S315600116A0D2A2004081C3E008D082018081C3E008F4 -S315600116B0D2A2018081C3E008D08201A081C3E00883 -S315600116C0D2A201A081C3E008D08201C081C3E00833 -S315600116D0D2A201C081C3E008D08201E081C3E008E3 -S315600116E0D2A201E081C3E008D2A2000081C3E00872 -S315600116F0D082000081C3E00891480000818A000021 -S3156001170001000000010000000100000081C3E00843 -S315600117100100000081C3E008C0A000A081C3E00809 -S31560011720C0A000C081C3E008D01A0000010000001B -S31560011730010000000100000001000000010000003E -S315600117409DE3BF701318006DCD1A6160CD3FBFE098 -S31560011750111800801B180080C91B61E0C51A21D8C9 -S31560011760C11FBFE095A088C4D53FBFF0D91FBFF0A8 -S3156001177003180080D11861E881AB0A4801000000B6 -S315600117800380002BC13FBFD8F91FBFD8B5A0055C48 -S31560011790F53FBFF0ED1FBFF0F11FBFF0A5A589585A -S315600117A0E91FBFE0A1A488D41518006DA1A001307E -S315600117B0DD1AA16881AC0ACE010000000D80002D02 -S315600117C0F53FBFD0C51FBFD083A018C291A04921E4 -S315600117D099A01928D51FBFE091A308CA1718006DF3 -S315600117E091A00128FD1AE17081AA0ADE01000000BC -S315600117F00D80002F01000000400001AE01000000D5 -S315600118004000020C0100000080A22000128000311D -S3156001181001000000400002610100000080A220007A -S315600118200280003501000000308000317FFFBE7408 -S3156001183090102001F91FBFD8B5A0055CF53FBFF038 -S31560011840ED1FBFF0F11FBFF0A5A58958E91FBFE0E5 -S31560011850A1A488D41518006DA1A00130DD1AA16874 -S3156001186081AC0ACE010000001BBFFFD7F53FBFD098 -S315600118707FFFBE6390102002C51FBFD083A018C230 -S3156001188091A0492199A01928D51FBFE091A308CA43 -S315600118901718006D91A00128FD1AE17081AA0ADE70 -S315600118A0010000001BBFFFD5010000007FFFBE5491 -S315600118B0901020034000017F01000000400001DD1F -S315600118C00100000080A2200002BFFFD301000000DA -S315600118D07FFFBE4B010000004000023001000000A6 -S315600118E080A2200002800004010000007FFFBE4448 -S315600118F09010200581C7E00881E800009DE3BF984C -S315600119007FFFFF7D210000047FFFFF7D90120010A5 -S315600119107FFFFF79B0102000808A00100280000BE3 -S315600119209010200040000267010000007FFFBE4367 -S3156001193001000000912A20047FFFBE2C900220083E -S315600119407FFFFF800100000081C7E00881E8000099 -S315600119501918008098132178111002009210200046 -S31560011960150FF76C9412A3D7D03B0000D42320083F -S31560011970C11B0000C503200887A089220100000061 -S3156001198089A005408DA0892281A8CA260100000090 -S3156001199033800003901020009010200181C3E0087D -S315600119A001000000C11A0000C51A400089A0084262 -S315600119B081C3E008C93A8000C11A0000C51A400017 -S315600119C089A0094281C3E008C93A800019180080DC -S315600119D098132178D0230000D2232008C103000088 -S315600119E0C303200885A00D2181C3E008C53A8000A4 -S315600119F0C11A0000C51A400089A009C2C93A80000F -S31560011A0081C3E00801000000C11A000085A00540FD -S31560011A10C53A400081C3E0080100000001000000F2 -S31560011A20010000000100000001000000010000004B -S31560011A30010000000100000001000000010000003B -S31560011A40010000000100000001000000010000002B -S31560011A50010000000100000001000000010000001B -S31560011A60010000000100000001000000010000000B -S31560011A7001000000010000000100000001000000FB -S31560011A8001000000010000000100000001000000EB -S31560011A9001000000010000000100000081A000209B -S31560011AA081C3E00801000000C11A000081C3E0089B -S31560011AB001000000C51A000089A009C2C93A4000A8 -S31560011AC081C3E0080100000013180080921261785A -S31560011AD0D0224000C102400085A01900C53A4000ED -S31560011AE081C3E008D01A4000131800809212617811 -S31560011AF0D0224000C102400085A01880C522400066 -S31560011B0081C3E008D0024000151800809412A178C4 -S31560011B10D03A8000C11A800085A01A40C522800093 -S31560011B2081C3E008D0028000151800809412A17864 -S31560011B30D0228000C102800085A01A20C5228000C3 -S31560011B4081C3E008D0028000151800809412A17844 -S31560011B50D0228000C102800081A01920C13A800094 -S31560011B6081C3E008D01A8000151800809412A1780C -S31560011B70D03A8000C11A800081A018C0C1228000BD -S31560011B8081C3E008D0028000151800809412A17804 -S31560011B90D0228000CB0280008DA00025CD2280005E -S31560011BA081C3E008D0028000151800809412A178E4 -S31560011BB0D0228000CB0280008DA000A5CD228000BE -S31560011BC081C3E008D0028000151800809412A178C4 -S31560011BD0D0228000CB0280008DA00125CD2280001D -S31560011BE081C3E008D002800019180080981321781B -S31560011BF0D03B0000D43B2008C11B0000C51B200858 -S31560011C0081A80A420100000033800009901020007B -S31560011C1029800007901020012D8000059010200278 -S31560011C202F8000039010200391D0200081C3E0082B -S31560011C30010000001918008098132178D03B00003C -S31560011C40D43B2008C11B0000C51B200881A80AC21D -S31560011C500100000033BFFFF69010200029BFFFF49A -S31560011C60901020012DBFFFF2901020022FBFFFF0D0 -S31560011C709010200391D020001918008098132178C4 -S31560011C80D0230000D2232008C1030000C30320082B -S31560011C9081A80A210100000033BFFFE590102000F2 -S31560011CA029BFFFE3901020012DBFFFE190102002B4 -S31560011CB02FBFFFDF9010200391D0200019180080FC -S31560011CC098132178D0230000D2232008C103000095 -S31560011CD0C303200881A80AA10100000033BFFFD415 -S31560011CE09010200029BFFFD2901020012DBFFFD098 -S31560011CF0901020022FBFFFCE9010200391D02000BC -S31560011D001918008098132178D03B0000D43B200835 -S31560011D10C11B0000C51B200889A008C2C93B000081 -S31560011D2081C3E008D01B0000191800809813217840 -S31560011D30D0230000D2232008C1030000C30320087A -S31560011D4085A00821C523000081C3E008D0030000F7 -S31560011D501918008098132178D0230000D223200817 -S31560011D60C1030000C303200885A008A1C5230000A4 -S31560011D7081C3E008D0030000191800809813217808 -S31560011D80D0230000D2232008C1030000C30320082A -S31560011D9085A00921C523000081C3E008D0030000A6 -S31560011DA01918008098132178D0230000D2232008C7 -S31560011DB0C1030000C303200885A009A1C523000053 -S31560011DC081C3E008D00300001918008098132178B8 -S31560011DD0D0230000C103000083A00520C3230000B7 -S31560011DE081C3E008D003000013180080921261904D -S31560011DF0C51A6008C11A400089A0084091A108C2AD -S31560011E0095A209C495A2894281C3E008D53A00002A -S31560011E1013180080921261B0C1024000C3026004CF -S31560011E2085A0082087A088A189A0C9A289A10921C6 -S31560011E3081C3E008C92200009610200213180080B1 -S31560011E4092126190151800809412A190D5024000FB -S31560011E50D7028000D5220000D80200001318008046 -S31560011E60921261B096A2E00112BFFFF90100000073 -S31560011E7081C3E0080100000013180080921261908E -S31560011E80151800809412A1B0C1028000C51A6010B5 -S31560011E9083A0082089A088C08BA109A18DA10942D0 -S31560011EA08FA1492691A0054681C3E008D13A000079 -S31560011EB01118008090122188C11A0000C51A00000D -S31560011EC0C91A0000CD1A0000D11A0000D51A000007 -S31560011ED0D91A0000DD1A0000E11A0000E51A0000B7 -S31560011EE0E91A0000ED1A0000F11A0000F51A000067 -S31560011EF0F91A0000FD1A000081C3E0080100000024 -S31560011F0029180080A815215827180080A614E1C059 -S31560011F10C12CC000E604C000A134E00EA00C20076D -S31560011F20A0A42002AE1020002D180080AC15A1C01F -S31560011F30AE05E001AC05A008C1358000C12D0000E9 -S31560011F40EA050000AB35600DAA8D600112BFFFF98D -S31560011F5001000000808000100280002F2B3C1FFFD3 -S31560011F60AA1563FFA60CC015E6250000C10D000089 -S31560011F702B180080AA1561CC2D180047AC15A3E07B -S31560011F80AE25E001E0054000E025800081D8200013 -S31560011F9001000000010000000100000001000000D6 -S31560011FA001000000010000000100000001000000C6 -S31560011FB001000000010000000100000001000000B6 -S31560011FC001000000010000000100000001000000A6 -S31560011FD00100000001000000010000000100000096 -S31560011FE00000000080A5C00012BFFFE6AA056008D8 -S31560011FF0C12D0000E60500002B03C000A614C01524 -S31560012000E6250000C10D000081C4400081CC80003E -S315600120100100000081C4800081CCA00401000000A1 -S315600120200100000081C3E008915800000100000032 -S315600120301118008090122158C10A0000C0220000C8 -S31560012040C10A0000C12A0000D40200001300038007 -S31560012050942A800980A0000A3280004D90102003E6 -S315600120601303E000D223BFA0C023BFA4C10BBFA04E -S31560012070C023BFA0151800809412A170C102800010 -S315600120800100000001000000C10BBFA0C10BBFA48D -S3156001209083A00520C12BBFA0D003BFA0808A2200E8 -S315600120A02280003B901020049010200015180080BB -S315600120B09412A140C5028000C902A008D102A00CF9 -S315600120C01318008092126170C70240008DA0894486 -S315600120D081A98AC801000000038000050100000093 -S315600120E0901020011080002A01000000C5028000C6 -S315600120F0C902A008D102A00C131800809212617067 -S31560012100CB0240008DA0894481A98AC801000000E4 -S315600121100380000501000000901020011080001C62 -S315600121200100000025180080A414A168C11C80006C -S31560012130C51C800080A000003280000685A008C012 -S3156001214081A80AC20100000013800003010000009B -S31560012150901020050100000025180080A414A168D4 -S31560012160C11C8000C51C800080A000000100000029 -S315600121703280000685A008C081A80AC2010000005D -S315600121801380000301000000901020070100000089 -S3156001219081C3E00801000000901020019544000011 -S315600121A09532A01E940AA00380A28000028000409E -S315600121B09010200080A2A0030280003D13180080C9 -S315600121C0921261F0C11A4000C51A6008FD026018DA -S315600121D095A0003E99A0003E9DA0003E170000C05C -S315600121E09612E078A182C0000100000001000000A3 -S315600121F00100000001000000010000000100000074 -S3156001220081A0002083A0002195A0002A99A0002C1E -S315600122109DA0002E170000C09612E07CA182C0002E -S315600122200100000001000000010000000100000043 -S31560012230010000000100000085A0002287A00023A4 -S31560012240A180000001000000010000000100000003 -S3156001225001000000010000000100000089A00842A1 -S31560012260A9A2883ED93A4000DD224000CD1A60100D -S31560012270D102600881A90A46010000000380000CB2 -S3156001228081AD0A2801000000038000099344000023 -S315600122909332601B920A60079010200080A2A00111 -S315600122A002800003902260079022600481C3E008E7 -S315600122B001000000C12BBFA081C3E008D003BFA00D -S315600122C0D023BFA081C3E008C10BBFA001000000FD -S315600122D09DE3BF6040001B17B0102000913A200AB1 -S315600122E0900A200380A220011280111101000000D2 -S315600122F07FFFBBBE9010200D190C40291B23CD1BFF -S315600123009410200096102000981320069A13609B63 -S31560012310D43FBFE0D43FBFC0D43FBFE87FFFFF4299 -S31560012320D83FBFF0900A3000032804009012208045 -S315600123308210600FC22200001B1800479002200421 -S315600123409A1363009A234008191000009B3B6002B0 -S31560012350032784009A13400C82106010C222200465 -S315600123607FFFFED4DA2200007FFFFFD61103E00073 -S315600123702D180080C025A1C07FFFFDD490102000DC -S31560012380809200091280000601000000C205A1C00A -S3156001239080A0600002800004010000007FFFBB98FE -S315600123A09010200B7FFFFDC990103FFA03300600A5 -S315600123B080A200011280000480A2600002800EDB10 -S315600123C0010000007FFFBB8E9010200B7FFFFDBFD9 -S315600123D09010201403100D0080A2000112800004E9 -S315600123E080A2600002800ECC010000007FFFBB84EA -S315600123F09010200B7FFFFDB5901020620310162010 -S3156001240080A200011280000480A2600002800EBDDD -S31560012410010000007FFFBB7A9010200B7FFFFDB3A8 -S31560012420901020050310280080A20001128000068A -S3156001243001000000C205A1C080A060000280000406 -S31560012440010000007FFFBB6E9010200B7FFFFF9D98 -S315600124501103C000111C00007FFFFDAC921020002B -S31560012460031FFFFF821063FF80A200011280000A32 -S315600124701B000070C205A1C09A13601F19000010ED -S315600124808208400D9813201080A0400C0280000540 -S31560012490113C00007FFFBB5A9010200C113C0000DC -S315600124A07FFFFD9A921020000320000080A20001A8 -S315600124B01280000A1B000070C205A1C09A13601F3A -S315600124C0190000108208400D9813201080A0400C5E -S315600124D002800004010000007FFFBB499010200CC0 -S315600124E0C025A1C0901020007FFFFD8892102000BA -S315600124F080A220001280000601000000C205A1C072 -S3156001250080A0600002800005110144007FFFBB3C92 -S315600125109010200C110144001328400090122302F0 -S315600125207FFFFD7A9212600180A220001280000670 -S3156001253001000000C205A1C080A0600022800005E4 -S315600125401111FFFF7FFFBB2E9010200C1111FFFFB1 -S315600125507FFFFD76901223FF0300007F821063FFE9 -S3156001256080A200011280000601000000C205A1C020 -S3156001257080A06000028000052F1800857FFFBB20C8 -S315600125809010200C2F1800857FFFFD60D01DE0C8DC -S31560012590031FFFFF821063FF80A200011280000A01 -S315600125A01B000070C205A1C09A13601F19000010BC -S315600125B08208400D9813201080A0400C028000050F -S315600125C0031800857FFFBB0E9010200C0318008551 -S315600125D0D01860D8C025A1C07FFFFD4C0100000066 -S315600125E00320000080A200011280000A1B00007017 -S315600125F0C205A1C09A13601F190000108208400D20 -S315600126009813201080A0400C0280000519180085DF -S315600126107FFFBAFB9010200C19180085C025A1C058 -S315600126207FFFFD3AD01B20B8031FFFFF821063FFB7 -S3156001263080A200011280000A1B000070C205A1C0C1 -S315600126409A13601F190000108208400D981320101C -S3156001265080A0400C02800005331800857FFFBAE830 -S315600126609010200C33180085C025A1C07FFFFD277F -S31560012670D01E60F0C205A1C08330600E820860037F -S3156001268080A0600202800004211800807FFFBADC0E -S315600126909010200C7FFFFF0B1103C000111158042D -S315600126A0C02421C07FFFFD299012223403102B0024 -S315600126B08210624680A2000112800005032000009C -S315600126C080A2400102800FC5010000007FFFBACCE5 -S315600126D09010200D113C02AF7FFFFD1C901220D19E -S315600126E0033180558210639A80A200011280000531 -S315600126F00308000080A2400102800FDB0100000098 -S315600127007FFFBABF9010200D1111FC007FFFFD17EE -S3156001271092102000031FE00080A200011280000ACF -S315600127201B000070C205A1C09A13601F190000103A -S315600127308208400D9813200880A0400C0280000595 -S3156001274011207C017FFFBAAE9010200D11207C0113 -S31560012750C025A1C0901220307FFFFD041300010047 -S315600127600320000080A200011280000A1B00007095 -S31560012770C205A1C09A13601F190000108208400D9E -S315600127809813200480A0400C028000040100000020 -S315600127907FFFBA9B9010200DC025A1C0901020002C -S315600127A07FFFFCF29210200080A2200012800006BA -S315600127B001000000C205A1C080A060000280000483 -S315600127C0010000007FFFBA8E9010200D7FFFFCE7AD -S315600127D0D01DE0C803180085DA0060C080A2000D34 -S315600127E01280000601000000C205A1C080A0600041 -S315600127F0028000051B1800857FFFBA819010200DAD -S315600128001B1800857FFFFCD9D01B60D0031FE00039 -S3156001281080A200011280000601000000C205A1C06D -S3156001282080A0600002800005031800857FFFBA74EE -S315600128309010200D031800857FFFFCCCD01860B87E -S3156001284003180085DA0060A880A2000D1280000AD4 -S315600128501B000070C205A1C09A13601F1900001009 -S315600128608208400D9813201080A0400C028000045D -S31560012870010000007FFFBA629010200DC025A1C043 -S315600128807FFFFCBAD01E60F0C205A1C08330600E26 -S315600128908208600380A06002028000042318008021 -S315600128A07FFFBA579010200D7FFFFE861103E0006F -S315600128B02108C6AF901420DEC02461C07FFFFCB33F -S315600128C0A01420DE80A20010128000060100000024 -S315600128D0C20461C080A06000028000052108C6AF05 -S315600128E07FFFBA479010200E2108C6AF7FFFFCB765 -S315600128F0901420DEA01420DE80A200101280000653 -S3156001290001000000C205A1C080A060002280000510 -S315600129101128C6AF7FFFBA3A9010200E1128C6AFB4 -S315600129207FFFFCAA901220DE0308C6AF821060DE2C -S3156001293080A200011280000601000000C205A1C04C -S3156001294080A06000228000051108C6AF7FFFBA2C07 -S315600129509010200E1108C6AF7FFFFC94901220DE06 -S315600129600328C6AF821060DE80A2000112800006D5 -S3156001297001000000C205A1C080A0600022800005A0 -S315600129801128C6AF7FFFBA1E9010200E1128C6AF60 -S315600129907FFFFC86901220DE0308C6AF821060DEE0 -S315600129A080A200011280000601000000C205A1C0DC -S315600129B080A0600002800004010000007FFFBA1061 -S315600129C09010200E7FFFFE3F1103E00011151BC022 -S315600129D01310C82115351BC01710C8219012210389 -S315600129E0921261419412A1037FFFFC809612E1412C -S315600129F080A220021280000601000000C205A1C06B -S31560012A0080A060000280000511351BC07FFFB9FC04 -S31560012A109010200F11351BC01310C82115151BC04E -S31560012A201710C82190122103921261419412A103D9 -S31560012A307FFFFC6E9612E14180A2200112800006A2 -S31560012A4001000000C205A1C080A0600002800005EF -S31560012A50901020007FFFB9EA9010200F901020009F -S31560012A6092102000152000007FFFFC609610200068 -S31560012A7080A220001280000601000000C205A1C0EC -S31560012A8080A0600002800005191800857FFFB9DC0F -S31560012A909010200F191800851B180085D01B20D0B7 -S31560012AA07FFFFC52D41B60D880A2200212800006F0 -S31560012AB001000000C205A1C080A06000028000057F -S31560012AC011151BC07FFFB9CE9010200F11151BC0C9 -S31560012AD01310C82115151BE81710C8219012210380 -S31560012AE0921261419412A1037FFFFC409612E1416B -S31560012AF080A220011280000601000000C205A1C06B -S31560012B0080A060000280000511151BE87FFFB9BC3B -S31560012B109010200F11151BE81310C82115151BC045 -S31560012B201710C82190122103921261419412A103D8 -S31560012B307FFFFC2E9612E14180A2200212800006E0 -S31560012B4001000000C205A1C080A0600002800005EE -S31560012B5011151BE87FFFB9AA9010200F11151BE80C -S31560012B601310C82190122103921261417FFFFC1F4D -S31560012B70D41DE0C880A22003128000060100000077 -S31560012B80C205A1C080A0600002800005031800850F -S31560012B907FFFB99B9010200F0318008511151BE864 -S31560012BA01310C82190122103921261417FFFFC0F1D -S31560012BB0D41860B880A220031280000A1B0000703E -S31560012BC0C205A1C09A13601F190000108208400D4A -S31560012BD09813201080A0400C0280000511151BE897 -S31560012BE07FFFB9879010200F11151BE81310C821BC -S31560012BF0C025A1C090122103921261417FFFFBFBA8 -S31560012C00D41E60F080A2200212800006010000003E -S31560012C10C205A1C080A060000280000515151BE8F1 -S31560012C207FFFB9779010200F15151BE81710C82183 -S31560012C30D01E60F09412A1037FFFFBEC9612E14176 -S31560012C4080A220011280000601000000C205A1C019 -S31560012C5080A060000280000515151BE87FFFB9683A -S31560012C609010200F15151BE81710C821D01DE0C85C -S31560012C709412A1037FFFFBDD9612E14180A220033E -S31560012C801280000601000000C205A1C080A060009C -S31560012C9002800005191800857FFFB9599010200F31 -S31560012CA01918008515151BE81710C821D01B20B807 -S31560012CB09412A1037FFFFBCD9612E14180A220030E -S31560012CC01280000A1B000070C205A1C09A13601F22 -S31560012CD0190000108208400D9813201080A0400C46 -S31560012CE00280000511151BC07FFFB9459010200FAA -S31560012CF011151BC01310C82115351BC01710C8212B -S31560012D00C025A1C090122103921261419412A103C0 -S31560012D107FFFFBC99612E14180A220021280000664 -S31560012D2001000000C205A1C080A06000028000050C -S31560012D3011351BC07FFFB9329010200F11351BC0B2 -S31560012D401310C82115151BC01710C8219012210335 -S31560012D50921261419412A1037FFFFBB79612E14182 -S31560012D6080A220011280000601000000C205A1C0F8 -S31560012D7080A0600002800005901020007FFFB920CE -S31560012D809010200F90102000921020001520000056 -S31560012D907FFFFBA99610200080A22000128000060A -S31560012DA001000000C205A1C080A06000028000058C -S31560012DB01B1800857FFFB9129010200F1B18008524 -S31560012DC003180085D01B60D07FFFFB9BD41860D8A9 -S31560012DD080A220021280000601000000C205A1C087 -S31560012DE080A060000280000511151BC07FFFB90439 -S31560012DF09010200F11151BC01310C82115151BE863 -S31560012E001710C82190122103921261419412A103F5 -S31560012E107FFFFB899612E14180A2200112800006A4 -S31560012E2001000000C205A1C080A06000028000050B -S31560012E3011151BE87FFFB8F29010200F11151BE8E2 -S31560012E401310C82115151BC01710C8219012210334 -S31560012E50921261419412A1037FFFFB779612E141C1 -S31560012E6080A220021280000601000000C205A1C0F6 -S31560012E7080A060000280000511151BE87FFFB8E0A5 -S31560012E809010200F11151BE81310C8219012210311 -S31560012E90921261417FFFFB68D41DE0C880A22003C6 -S31560012EA01280000A1B000070C205A1C09A13601F40 -S31560012EB0190000108208400D9813201080A0400C64 -S31560012EC002800005191800857FFFB8CD9010200F8C -S31560012ED01918008511151BE81310C82190122103DA -S31560012EE0921261417FFFFB54D41B20B880A220035C -S31560012EF01280000A1B000070C205A1C09A13601FF0 -S31560012F00190000108208400D9813201080A0400C13 -S31560012F100280000511151BE87FFFB8B99010200FDC -S31560012F2011151BE81310C821C025A1C090122103F9 -S31560012F30921261417FFFFB40D41E60F080A22002A5 -S31560012F401280000601000000C205A1C080A06000D9 -S31560012F500280000515151BE87FFFB8A99010200FA8 -S31560012F6015151BE81710C821D01E60F09412A10335 -S31560012F707FFFFB319612E14180A22001128000069B -S31560012F8001000000C205A1C080A0600002800005AA -S31560012F9015151BE87FFFB89A9010200F15151BE8D1 -S31560012FA01710C821D01DE0C89412A1037FFFFB2230 -S31560012FB09612E14180A220031280000A1B00007074 -S31560012FC0C205A1C09A13601F190000108208400D46 -S31560012FD09813201080A0400C028000051B18008504 -S31560012FE07FFFB8879010200F1B18008515151BE809 -S31560012FF01710C821D01B60B89412A1037FFFFB0E86 -S315600130009612E14180A220031280000A1B00007023 -S31560013010C205A1C09A13601F190000108208400DF5 -S315600130209813201080A0400C02800005110048EA28 -S315600130307FFFB8739010200F110048EA13048D15B5 -S31560013040C025A1C0901223CD7FFFFB0C921262783E -S3156001305080A220011280000601000000C205A1C005 -S3156001306080A0600002800005110048EA7FFFB86415 -S315600130709010200F110048EA13048D15901223CD8C -S315600130807FFFFB0F9212627880A2200112800006F8 -S3156001309001000000C205A1C080A06000028000049A -S315600130A0010000007FFFB8569010200FC025A1C017 -S315600130B07FFFFC841103C000291801449007BFF00B -S315600130C09207BFE87FFFFA3894152120C207BFF047 -S315600130D0DA05212080A0400D12800007821521208B -S315600130E0DA006004C207BFF480A0400D02800D596A -S315600130F0010000007FFFB84290102010371800854C -S315600131009007BFF09216E0E07FFFFA279415212021 -S31560013110C206E0E0DA05212080A340018215212064 -S31560013120128000079816E0E0DA006004C20320040A -S3156001313080A3400102800D42010000007FFFB8308C -S31560013140901020109007BFF09215E0C87FFFFA1625 -S3156001315094152120C205E0C8DA05212080A340012B -S3156001316082152120128000079815E0C8DA006004F4 -S31560013170C203200480A3400102800D2C01000000DF -S315600131807FFFB81F9010201003180085921060B859 -S315600131909007BFF07FFFFA04941521201B00007091 -S315600131A0C205A1C09A13601F190000108208400D64 -S315600131B09813201080A0400C02800004211801445D -S315600131C07FFFB80F9010201003180080C02061C0E7 -S315600131D07FFFFC3C90102000131800859414212079 -S315600131E0921260B87FFFF9F09007BFF03918008539 -S315600131F0C20720B0DA04212080A340019414212063 -S3156001320012800007821720B0DA02A004C2006004AF -S3156001321080A3400102800004010000007FFFB7F82F -S31560013220901020107FFFFC271103C0009007BFF0AC -S31560013230921660F07FFFF9DC94152120C205A1C0CA -S315600132408330600E8208600380A060022118014409 -S3156001325002800004231800807FFFB7E990102010D8 -S3156001326094142120C02461C09007BFE87FFFF9CE86 -S315600132709207BFF0DA042120C207BFF080A34001A4 -S315600132801280000794142120DA02A004C207BFF459 -S3156001329080A3400102800D21010000007FFFB7D8A5 -S315600132A0901020109007BFE89216E0E07FFFF9BE0C -S315600132B094152120C206E0E0DA05212080A34001B1 -S315600132C082152120128000079816E0E0DA0060047A -S315600132D0C203200480A3400102800D0B010000009F -S315600132E07FFFB7C7901020109007BFE89215E0C81E -S315600132F07FFFF9AD94152120C205E0C8DA052120CA -S3156001330080A3400182152120128000079815E0C82C -S31560013310DA006004C203200480A3400102800CF538 -S31560013320010000007FFFB7B69010201019180085C4 -S31560013330921320B89007BFE87FFFF99B941521206F -S315600133401B000070C205A1C09A13601F190000100E -S315600133508208400D9813201080A0400C0280000462 -S31560013360211801447FFFB7A6901020107FFFFBD57F -S31560013370901020001318008594142120921260B8D1 -S315600133807FFFF9899007BFE8C20720B0DA042120E0 -S3156001339080A340019414212012800007821720B077 -S315600133A0DA02A004C200600480A340010280000426 -S315600133B0010000007FFFB792901020107FFFFBC1D4 -S315600133C01103C0009007BFE8921660F07FFFF9769F -S315600133D094152120C205A1C08330600E8208600366 -S315600133E080A0600221180144028000042318008035 -S315600133F07FFFB7839010201094142120C02461C0F0 -S315600134009016E0E07FFFF9689207BFF0C206E0E040 -S31560013410DA04212080A34001941421201280000740 -S315600134208216E0E0DA02A004C200600480A34001D3 -S3156001343002800CAB010000007FFFB7719010201075 -S315600134409016E0E09207BFE87FFFF95794152120B7 -S31560013450C206E0E0DA05212080A340018215212021 -S31560013460128000079816E0E0DA006004C2032004C7 -S3156001347080A3400102800C95010000007FFFB760C8 -S31560013480901020101B180085901360D092100008D0 -S315600134907FFFF9459415212019180085C20320D0B4 -S315600134A0DA05212080A340018215212012800007C0 -S315600134B0981320D0DA006004C203200480A340017F -S315600134C002800C7D010000007FFFB74D9010201037 -S315600134D01B180085901360D8921000087FFFF9329F -S315600134E09415212019180085C20320D8DA052120F8 -S315600134F080A340018215212012800007981320D8ED -S31560013500DA006004C203200480A3400102800C65D6 -S31560013510010000007FFFB73A901020101B1800854C -S3156001352003180085901360D8921060D07FFFF91E52 -S31560013530941521201B000070C205A1C09A13601F5B -S31560013540190000108208400D9813201080A0400CCD -S3156001355002800004211801447FFFB72990102010D2 -S315600135607FFFFB5890102000111800851318008505 -S3156001357094142120901220D87FFFF90B921260D00B -S31560013580C20720B0DA04212080A3400194142120CF -S3156001359012800007821720B0DA02A004C20060041C -S315600135A080A3400102800004010000007FFFB71480 -S315600135B0901020107FFFFB431103C000191800858E -S315600135C01B180085901320D0921360D8C025A1C026 -S315600135D07FFFF8F594152120C20720B0DA05212076 -S315600135E080A340018215212012800007981720B020 -S315600135F0DA006004C203200480A3400102800C1F2C -S315600136001B0000707FFFB6FE901020109016E0E060 -S31560013610921660F07FFFF8E494152120C205A1C0DF -S315600136208330600E8208600380A060022118014425 -S3156001363002800004231800807FFFB6F190102010ED -S3156001364094142120C02461C09015E0C87FFFF8D68C -S315600136509207BFF0C205E0C8DA04212080A34001C9 -S3156001366094142120128000078215E0C8DA02A004B2 -S31560013670C200600480A3400102800B9C010000002F -S315600136807FFFB6DF901020109015E0C89207BFE863 -S315600136907FFFF8C594152120C205E0C8DA0521200F -S315600136A080A3400182152120128000079815E0C889 -S315600136B0DA006004C203200480A3400102800B8605 -S315600136C0010000007FFFB6CE901020109015E0C873 -S315600136D09216E0E07FFFF8B494152120C205E0C898 -S315600136E0DA05212080A3400182152120128000077E -S315600136F09815E0C8DA006004C203200480A3400183 -S3156001370002800B70010000007FFFB6BD9010201093 -S315600137109015E0C8921000087FFFF8A39415212048 -S31560013720C205E0C8DA05212080A340018215212067 -S31560013730128000079815E0C8DA006004C20320040D -S3156001374080A3400102800B5A010000007FFFB6ACE6 -S315600137509010201003180085921060B89015E0C88B -S315600137607FFFF8919415212003000070A610601F59 -S31560013770DA05A1C0030000109A0B4013AA1060106D -S3156001378080A3401523180085251801440280000492 -S31560013790211800807FFFB69A90102010C02421C0A6 -S315600137A0901460B89207BFF07FFFF87F9414A12050 -S315600137B0C20421C08208401380A040150280000423 -S315600137C0010000007FFFB68E90102010C02421C03A -S315600137D0901460B89207BFE87FFFF8739414A12034 -S315600137E0C20421C08208401380A0401502800004F3 -S315600137F0010000007FFFB68290102010C02421C016 -S31560013800901460B89216E0E07FFFF8679414A120E7 -S31560013810C20421C08208401380A0401502800005C1 -S31560013820131800857FFFB676901020101318008557 -S31560013830C02421C0921260C8901460B87FFFF85A04 -S315600138409414A120C20421C08208401380A04015AF -S3156001385002800005901460B87FFFB6699010201051 -S31560013860901460B8C02421C0921000087FFFF84E02 -S315600138709414A120C20421C08208401380A040157F -S3156001388002800004010000007FFFB65D90102010E9 -S31560013890C02421C0901460B8921660F07FFFF84290 -S315600138A09414A120C20421C08330600E8208600393 -S315600138B080A06002228000051103C0007FFFB65020 -S315600138C0901020101103C0007FFFFA7E3B18008420 -S315600138D0A2176210C02421C0AA14A120A4046010FA -S315600138E0A0102000A6046008B010200C92040013FA -S315600138F0900400117FFFF82C94152120DA048010C2 -S3156001390098040012C2052120A004201880A340015A -S315600139101280000790102010DA032004C2056004AB -S3156001392080A3400122800005B0863FFF7FFFB63449 -S3156001393001000000B0863FFF1CBFFFEE920400133A -S31560013940C205A1C080A06000128009890100000043 -S315600139501118008490122348920220087FFFF81202 -S315600139609415212098176210C2052120DA03214897 -S3156001397080A340011280000782152120DA03214CC1 -S31560013980C200600480A3400122800AAB0318008054 -S315600139907FFFB61B901020101118008490122360CF -S315600139A0920220087FFFF800941521209817621073 -S315600139B0C2052120DA03216080A34001128000073D -S315600139C082152120DA032164C200600480A34001CC -S315600139D002800AA41B0000707FFFB60990102010B8 -S315600139E01118008490122378920220087FFFF7EE67 -S315600139F09415212098176210C2052120DA032178D7 -S31560013A0080A340011280000782152120DA03217C00 -S31560013A10C200600480A3400102800A9C1B00007002 -S31560013A207FFFB5F790102010C025A1C011100000CE -S31560013A3092102000150FFC007FFFF8B2961020004F -S31560013A40030FFC0080A200011280000880A26000C2 -S31560013A501280000601000000C205A1C080A06000BE -S31560013A6002800005111000007FFFB5E5901020105F -S31560013A701110000092102000152FFC007FFFF8A1A5 -S31560013A80961020000310020080A200011280000837 -S31560013A9080A260001280000601000000C205A1C07C -S31560013AA080A0600002800005113000007FFFB5D460 -S31560013AB0901020101130000092102000150FFC00AC -S31560013AC07FFFF890961020000330020080A200016B -S31560013AD01280000880A260001280000601000000CA -S31560013AE0C205A1C080A060000280000511300000FF -S31560013AF07FFFB5C390102010113000009210200096 -S31560013B00152FFC007FFFF87F96102000032FFC0025 -S31560013B1080A200011280000880A260001280000667 -S31560013B2001000000C205A1C080A0600002800005FE -S31560013B30111000007FFFB5B2901020101110000027 -S31560013B407FFFF87A130FE0000310100080A20001D6 -S31560013B501280000601000000C205A1C080A06000BD -S31560013B6002800005111000007FFFB5A5901020109E -S31560013B70111000007FFFF877130FE000030FE000DC -S31560013B8080A200011280000601000000C205A1C0EA -S31560013B9080A0600022800005191800857FFFB59816 -S31560013BA09010201019180085921320E8C025A1C035 -S31560013BB09007BFF07FFFF78F9415212019180085B4 -S31560013BC0C20320D8DA05212080A340018215212075 -S31560013BD012800007981320D8DA006004C20320041B -S31560013BE080A3400102800A461B0000707FFFB584F6 -S31560013BF0901020111B180085921360D0C025A1C0BA -S31560013C009007BFF07FFFF77B94152120C207BFE0C5 -S31560013C10DA05212080A34001128000078215212048 -S31560013C20DA006004C207BFE480A3400102800A3E55 -S31560013C30010000007FFFB572901020119007BFF060 -S31560013C409215E0C87FFFF76B94152120C205E0C885 -S31560013C50DA05212080A34001821521201280000708 -S31560013C609815E0C8DA006004C203200480A340010D -S31560013C7002800A32010000007FFFB56190102011B9 -S31560013C8003180085921060B89007BFF07FFFF7595F -S31560013C9094152120C20720B0DA05212080A34001B6 -S31560013CA08215212012800007981720B0DA0060047F -S31560013CB0C203200480A3400102800A251B00007014 -S31560013CC07FFFB54F901020119007BFF0921660F0FC -S31560013CD07FFFF74894152120C205A1C01B00007023 -S31560013CE08208400D1900002080A0400C2118014473 -S31560013CF002800004231800807FFFB54190102011D7 -S31560013D0094142120C02461C09007BFE87FFFF73972 -S31560013D109207BFF0DA042120C207BFE880A3400101 -S31560013D201280000794142120DA02A004C207BFECB6 -S31560013D3080A3400102800A10010000007FFFB530B8 -S31560013D409010201119180085901320E89207BFE0A2 -S31560013D507FFFF72894152120C20720B0DA052120BC -S31560013D6080A340018215212012800007981720B098 -S31560013D70DA006004C203200480A3400102800A03C2 -S31560013D801B0000707FFFB51E901020111B18008567 -S31560013D9003180085901360E8921060D0C025A1C019 -S31560013DA07FFFF7149415212019180085C20320E8B6 -S31560013DB0DA05212080A340018215212012800007A7 -S31560013DC0981320E8DA006004C203200480A340014E -S31560013DD0028009F8010000007FFFB50990102011EB -S31560013DE09007BFE89215E0C87FFFF702941521207E -S31560013DF0C205E0C8DA05212080A340018215212091 -S31560013E00128000079815E0C8DA006004C203200436 -S31560013E1080A34001028009EC010000007FFFB4F835 -S31560013E20901020071B180085921360B89007BFE8B1 -S31560013E307FFFF6F09415212025000070D805A1C0FA -S31560013E409A14A01F03000010980B000D82106010D9 -S31560013E5080A3000121180144028000042318008018 -S31560013E607FFFB4E790102011C02461C09007BFE8BE -S31560013E70921660F07FFFF6DF94142120C20461C0C0 -S31560013E80820840121B00002080A0400D22800005A0 -S31560013E90031800857FFFB4DA90102011031800859E -S31560013EA0901060D894142120C02461C07FFFF6D1A0 -S31560013EB09207BFF019180085C20320D8DA042120C1 -S31560013EC080A340019414212012800007821320D818 -S31560013ED0DA02A004C200600480A34001028008B82F -S31560013EE0010000007FFFB4C6901020111B180085E9 -S31560013EF003180085901360D8921060E87FFFF6BDC5 -S31560013F009415212019180085C20320D0DA052120D5 -S31560013F1080A340018215212012800007981320D0CA -S31560013F20DA006004C203200480A34001028008A96C -S31560013F30010000007FFFB4B2901020119016E0E0FE -S31560013F40921000087FFFF6AB94152120C20720B0BE -S31560013F50DA05212080A34001821521201280000705 -S31560013F60981720B0DA006004C203200480A34001E0 -S31560013F700280089D1B0000707FFFB4A19010201184 -S31560013F80C025A1C09016E0E09215E0C87FFFF699C2 -S31560013F9094152120C205E0C8DA05212080A34001DD -S31560013FA082152120128000079815E0C8DA006004A6 -S31560013FB0C203200480A3400102800894010000002E -S31560013FC07FFFB48F901020111B180085921360B883 -S31560013FD09016E0E07FFFF68794152120C20720B096 -S31560013FE0DA05212080A34001821521201280000775 -S31560013FF0981720B0DA006004C203200480A3400150 -S31560014000028008871B0000707FFFB47D901020112D -S31560014010C025A1C09016E0E0921660F07FFFF675AC -S3156001402094152120C205A1C01B0000708208400DB5 -S315600140301900002080A0400C231800800280000433 -S31560014040211801447FFFB46E901020119414212031 -S31560014050C02461C09015E0C87FFFF6669207BFF085 -S31560014060C205E0C8DA04212080A34001941421200E -S31560014070128000078215E0C8DA02A004C20060045B -S3156001408080A340010280086F010000007FFFB45CDD -S31560014090901020119015E0C89207BFE87FFFF65592 -S315600140A094152120C205E0C8DA05212080A34001CC -S315600140B082152120128000079815E0C8DA00600495 -S315600140C0C203200480A3400102800863010000004E -S315600140D07FFFB44B901020119015E0C89216E0E076 -S315600140E07FFFF64494152120C205E0C8DA05212038 -S315600140F080A3400182152120128000079815E0C82F -S31560014100DA006004C203200480A3400102800857DC -S31560014110010000007FFFB43A901020119015E0C8AD -S31560014120921000087FFFF63394152120C205E0C87E -S31560014130DA05212080A34001821521201280000723 -S315600141409815E0C8DA006004C203200480A3400128 -S31560014150028007F3010000007FFFB429901020114F -S3156001416003180085921060B89015E0C87FFFF621AC -S3156001417094152120C20720B0DA05212080A34001D1 -S315600141808215212012800007981720B0DA0060049A -S31560014190C203200480A34001028007E61B00007071 -S315600141A07FFFB417901020119015E0C8921660F049 -S315600141B07FFFF61094152120C205A1C03100007061 -S315600141C0820840183B00002080A0401D231801444E -S315600141D002800004211800807FFFB409901020112D -S315600141E019180085901320B89207BFF07FFFF6017A -S315600141F094146120C20421C0AA16201F3500001044 -S3156001420082084015A616A01080A040130280000403 -S31560014210251800857FFFB3FA90102011C02421C0B4 -S315600142209014A0B89207BFE87FFFF5F2941461205D -S31560014230C20421C08208401580A040130280000498 -S31560014240010000007FFFB3EE90102011C02421C051 -S315600142509014A0B89216E0E07FFFF5E69414612011 -S31560014260C20421C08208401580A040130280000567 -S31560014270131800857FFFB3E2901020111318008593 -S31560014280C02421C0921260C89014A0B87FFFF5D9EE -S3156001429094146120C20421C08208401580A0401395 -S315600142A0028000059014A0B87FFFB3D5901020114D -S315600142B09014A0B8C02421C0921000087FFFF5CDEC -S315600142C094146120C20421C08208401580A0401365 -S315600142D002800005131800857FFFB3C99010201175 -S315600142E013180085C02421C09014A0B8921260F002 -S315600142F07FFFF5C094146120C20421C08208401872 -S3156001430080A0401D2280000515203E837FFFB3BC3F -S315600143109010201115203E83170021C89412A3FF27 -S315600143209612E3A1191FC0001B00C0009A1360B06A -S3156001433098132102D43FBFD0D83FBFD8C02421C033 -S315600143409007BFD89207BFD07FFFF5AA9407BFC871 -S31560014350DA07BFC8033FFC0080A340010280070B58 -S31560014360A207BFC87FFFB3A69010201115108683E0 -S31560014370170021C89412A3FF9612E3A11900400009 -S315600143801B00C0009A1360B098132102D43FBFD0BE -S31560014390D83FBFD8C025A1C09007BFD89207BFD06C -S315600143A07FFFF5949407BFC8DA046004C207BFC8EB -S315600143B08090400D1280000A1B000070C205A1C0EA -S315600143C09A13601F190000108208400D981320048B -S315600143D080A0400C22800005150FFC007FFFB3888A -S315600143E090102011150FFC00170281D89412A0407D -S315600143F09612E10C9A102010190006AFD43FBFD077 -S31560014400D83FBFD8C025A1C09007BFD89207BFD0FB -S315600144107FFFF5789407BFC8030006AEDA07BFC809 -S315600144208210639580A340011280000703003A9AC7 -S31560014430DA0460048210630F80A3400102800733AF -S31560014440010000007FFFB36E90102011150FFFFF72 -S31560014450170281D89412A3409612E10C9A1020108B -S31560014460190006AFD43FBFD0D83FBFD8C025A1C081 -S315600144709007BFD89207BFD07FFFF55E9407BFC88C -S31560014480DA046004C207BFC88090400D1280000A3A -S315600144901B000070C205A1C09A13601F19000010AD -S315600144A08208400D9813200480A0400C028000040D -S315600144B0010000007FFFB35290102011C025A1C0FA -S315600144C0111088007FFFF63713100100031066C9CB -S315600144D0821062CA80A200011280000601000000FB -S315600144E0C205A1C080A06000028000051111BBFE5B -S315600144F07FFFB343901020111111BBFE901223FF71 -S315600145007FFFF628130C7040031527CA8210611EBF -S3156001451080A200011280000601000000C205A1C050 -S3156001452080A06000028000051310C7FF7FFFB334CF -S31560014530901020111310C7FF921263FC7FFFF619CA -S31560014540111E607E031D73FC8210633880A2000118 -S315600145501280000601000000C205A1C080A06000B3 -S3156001456002800005130FE0007FFFB3259010201134 -S31560014570130FE000921260017FFFF60A110020001E -S3156001458080A220001280000A1B000070C205A1C033 -S315600145909A13601F190000108208400D98132004B9 -S315600145A080A0400C02800005110FE0007FFFB3146C -S315600145B090102011110FE000C025A1C07FFFF5F911 -S315600145C092100008030FE00080A20001128000062D -S315600145D001000000C205A1C080A060000280000544 -S315600145E0130FE0007FFFB30690102011130FE00058 -S315600145F0921260017FFFF5EB1100200080A220007E -S315600146001280000A1B000070C205A1C09A13601FC8 -S31560014610190000108208400D9813200480A0400CF8 -S31560014620028000051B1800857FFFB2F590102011EE -S315600146301B180085921360E8C025A1C09007BFF0E2 -S315600146407FFFF4DE9415212019180085C20320E846 -S31560014650DA05212080A340018215212012800007FE -S31560014660981320E8DA006004C203200480A34001A5 -S31560014670028006BA010000007FFFB2E190102012AD -S315600146801B180085921360D09007BFF07FFFF4CBB3 -S315600146909415212019180085C20320D0DA0521203E -S315600146A080A340018215212012800007981320D033 -S315600146B0DA006004C203200480A34001028006ACD4 -S315600146C0010000007FFFB2CE901020129007BFF06C -S315600146D09215E0C87FFFF4B994152120C205E0C8A0 -S315600146E0DA05212080A3400182152120128000076E -S315600146F09815E0C8DA006004C203200480A3400173 -S31560014700028006A0010000007FFFB2BD901020125A -S315600147101B180085921360B89007BFF07FFFF4A75E -S3156001472094152120C20720B0DA05212080A340011B -S315600147308215212012800007981720B0DA006004E4 -S31560014740C203200480A34001028006931B0000700F -S315600147507FFFB2AB901020129007BFF0921660F007 -S315600147607FFFF49694152120C205A1C01B0000703D -S315600147708208400D1900002080A0400C21180144D8 -S3156001478002800004231800807FFFB29D90102012E2 -S3156001479094142120C02461C09007BFE87FFFF4878D -S315600147A09207BFF0DA042120C207BFE880A3400167 -S315600147B01280000794142120DA02A004C207BFEC1C -S315600147C080A34001028006DE010000007FFFB28CFB -S315600147D0901020120318008519180085901060E862 -S315600147E0921320D87FFFF47594152120C20720B05B -S315600147F0DA05212080A3400182152120128000075D -S31560014800981720B0DA006004C203200480A3400137 -S31560014810028006D01B0000707FFFB27990102012D3 -S31560014820C025A1C09007BFE89215E0C87FFFF46379 -S3156001483094152120C205E0C8DA05212080A3400134 -S3156001484082152120128000079815E0C8DA006004FD -S31560014850C203200480A34001028006C70100000054 -S315600148607FFFB267901024991B180085921360B878 -S315600148709007BFE87FFFF45194152120C20720B04D -S31560014880DA05212080A340018215212012800007CC -S31560014890981720B0DA006004C203200480A34001A7 -S315600148A0028006BA1B0000707FFFB255901020127D -S315600148B09007BFE8921660F07FFFF44094152120BF -S315600148C0C205A1C01B0000708208400D19000020BE -S315600148D080A0400C21180144028000042318008046 -S315600148E07FFFB2479010201294142120C02461C02A -S315600148F09016E0E07FFFF4319207BFF0C206E0E078 -S31560014900DA04212080A3400194142120128000073B -S315600149108216E0E0DA02A004C200600480A34001CE -S31560014920028006A4010000007FFFB23590102012BC -S315600149309016E0E09207BFE87FFFF42094152120EE -S31560014940C20720B0DA05212080A34001821521200B -S3156001495012800007981720B0DA006004C2032004B1 -S3156001496080A34001028006981B0000707FFFB2247D -S3156001497090102012C025A1C09016E0E09215E0C803 -S315600149807FFFF40E94152120C205E0C8DA052120C7 -S3156001499080A3400182152120128000079815E0C886 -S315600149A0DA006004C203200480A340010280068FFE -S315600149B0010000007FFFB2129010201203180085DB -S315600149C0921060B89016E0E07FFFF3FC9415212009 -S315600149D0C20720B0DA05212080A34001821521207B -S315600149E012800007981720B0DA006004C203200421 -S315600149F080A34001028006821B0000707FFFB20027 -S31560014A00901020129016E0E0921660F07FFFF3EBB3 -S31560014A1094152120C205A1C01B0000708208400DBB -S31560014A201900002080A0400C211801440280000476 -S31560014A30231800807FFFB1F2901020129414212078 -S31560014A40C02461C09015E0C87FFFF3DC9207BFF018 -S31560014A50C205E0C8DA04212080A340019414212014 -S31560014A60128000078215E0C8DA02A004C200600461 -S31560014A7080A340010280061E010000007FFFB1E0B5 -S31560014A80901020129015E0C89207BFE87FFFF3CB24 -S31560014A9094152120C205E0C8DA05212080A34001D2 -S31560014AA082152120128000079815E0C8DA0060049B -S31560014AB0C203200480A340010280061201000000A7 -S31560014AC07FFFB1CF901020129015E0C89216E0E0FA -S31560014AD07FFFF3BA94152120C205E0C8DA052120CB -S31560014AE080A3400182152120128000079815E0C835 -S31560014AF0DA006004C203200480A340010280060636 -S31560014B00010000007FFFB1BE901020129015E0C831 -S31560014B10921000087FFFF3A994152120C205E0C811 -S31560014B20DA05212080A34001821521201280000729 -S31560014B309815E0C8DA006004C203200480A340012E -S31560014B40028005FA010000007FFFB1AD90102012CE -S31560014B50191800859015E0C8921320B87FFFF39766 -S31560014B609415212003000070A610601FDA05A1C00C -S31560014B70030000109A0B4013AA10601080A3401521 -S31560014B80251800852318014402800004211800803D -S31560014B907FFFB19B90102012C02421C09014A0B851 -S31560014BA09207BFF07FFFF38594146120C20421C090 -S31560014BB08208401380A040150280000401000000B5 -S31560014BC07FFFB18F90102012C02421C09014A0B82D -S31560014BD09207BFE87FFFF37994146120C20421C074 -S31560014BE08208401380A04015028000040100000085 -S31560014BF07FFFB18390102012C02421C09014A0B809 -S31560014C009216E0E07FFFF36D94146120C20421C027 -S31560014C108208401380A040150280000513180085A4 -S31560014C207FFFB1779010201213180085C02421C030 -S31560014C30921260C89014A0B87FFFF360941461204B -S31560014C40C20421C08208401380A04015028000057D -S31560014C509014A0B87FFFB16A901020129014A0B88A -S31560014C60C02421C0921000087FFFF3549414612080 -S31560014C70C20421C08208401380A04015028000044E -S31560014C80010000007FFFB15E90102012C02421C098 -S31560014C909014A0B8921660F07FFFF34894146120D7 -S31560014CA0C20421C08330600E8208600380A0600266 -S31560014CB0228000051103C0007FFFB15190102012C0 -S31560014CC01103C0007FFFF57F3B180084A417639032 -S31560014CD0AA146120C02421C0A604A008A210200045 -S31560014CE0B0102005A00440129204401394152120AF -S31560014CF07FFFF33290100010DA042010C2052120E4 -S31560014D00A204601880A3400112800007901020124F -S31560014D10DA042014C205600480A340010280047491 -S31560014D20010000007FFFB13601000000B0863FFF41 -S31560014D303CBFFFEEA004401211180085901220209E -S31560014D40920220087FFFF31D941521209817639026 -S31560014D50C2052120DA0320A080A34001128000074A -S31560014D6082152120DA0320A4C200600480A34001D9 -S31560014D70028004DC1B0000707FFFB12190102012BD -S31560014D801118008590122038C025A1C09202200812 -S31560014D907FFFF30A9415212098176390C20521209D -S31560014DA0DA0320B880A34001128000078215212012 -S31560014DB0DA0320BCC200600480A340010280047F44 -S31560014DC01B0000707FFFB10E901020121118008534 -S31560014DD090122050C025A1C0920220087FFFF2F7F1 -S31560014DE09415212098176390C2052120DA0320D0FB -S31560014DF080A340011280000782152120DA0320D4A6 -S31560014E00C200600480A34001028004761B0000702A -S31560014E107FFFB0FB90102012111800859012206858 -S31560014E20C025A1C0920220087FFFF2E494152120DB -S31560014E3098176390C2052120DA0320E880A3400118 -S31560014E401280000782152120DA0320ECC20060047B -S31560014E5080A340010280046D1B0000707FFFB0E8F3 -S31560014E60901020121118008590122080C025A1C0D3 -S31560014E70920220087FFFF2D1941521209817639042 -S31560014E80C2052120DA03210080A3400112800007B8 -S31560014E9082152120DA032104C200600480A3400147 -S31560014EA0028004641B0000707FFFB0D59010201251 -S31560014EB0C025A1C0111010007FFFF3B013100000D0 -S31560014EC00310300080A2000112800006010000007C -S31560014ED0C205A1C080A0600002800005111FE0002C -S31560014EE07FFFB0C790102012111FE0001310000061 -S31560014EF07FFFF2B794152120031FFC00DA052120FC -S31560014F0080A340011280000A82152120C20060043C -S31560014F1080A060001280000601000000C205A1C0E9 -S31560014F2080A0600002800005111FE0007FFFB0B421 -S31560014F309010201B111FE000133000007FFFF2A4C8 -S31560014F4094152120033FFC00DA05212080A340014E -S31560014F501280000A82152120C200600480A06000D0 -S31560014F601280000601000000C205A1C080A0600099 -S31560014F7002800005111000007FFFB0A19010201C77 -S31560014F8011100000921020107FFFF29194152120DC -S31560014F90C205A1C01B0000708208400D19000020E7 -S31560014FA080A0400C2118014402800004231800806F -S31560014FB07FFFB0939010201D94142120C02461C0FE -S31560014FC0110020007FFFF282130FC000DA04212056 -S31560014FD0030E000080A340011280000A9414212070 -S31560014FE0C202A00480A060001280000601000000D9 -S31560014FF0C20461C080A0600002800005111FDFFF4E -S315600150007FFFB07F9010201E111FDFFF901223FFDC -S31560015010131000007FFFF26E941521200311FFFF2C -S31560015020821063FFDA05212080A340011280000708 -S3156001503082152120DA0060040338000080A3400154 -S3156001504002800405010000007FFFB06D9010201FF3 -S31560015050111FD000130FF0007FFFF25D9415212020 -S315600150600311FC80DA05212080A340011280000A29 -S3156001507082152120C200600480A0600012800006B3 -S3156001508001000000C205A1C080A060000280000589 -S31560015090111FDFFF7FFFB05A90102021111FDFFF24 -S315600150A0901223FF921000087FFFF2499415212088 -S315600150B00313FBFF821063FFDA05212080A3400101 -S315600150C01280000882152120DA0060040330000096 -S315600150D08210602080A34001028003E40100000089 -S315600150E07FFFB047901020207FFFF4761103C00048 -S315600150F0C025A1C09007BFE07FFFF2449215212031 -S31560015100C207BFE0DA05212080A3400112800007B3 -S3156001511082152120DA006004C207BFE480A3400142 -S31560015120028003D7010000007FFFB0359010201385 -S315600151301B180085901360E87FFFF23492152120D9 -S3156001514003180085DA0060E8C205212080A0400DC1 -S31560015150191800858215212012800007901320E816 -S31560015160DA006004C202200480A34001028003C900 -S31560015170010000007FFFB022901020131B180085EC -S31560015180901360D07FFFF2219215212019180085B6 -S31560015190C20320D0DA05212080A340018215212097 -S315600151A012800007981320D0DA006004C20320043D -S315600151B080A34001028003BC010000007FFFB010A4 -S315600151C0901020131B180085901360D87FFFF20F93 -S315600151D092152120C20720B0DA05212080A3400163 -S315600151E08215212012800007981720B0DA0060042A -S315600151F0C203200480A34001028003B01B0000703B -S315600152007FFFAFFF9010201303180085901060B8E0 -S31560015210C025A1C07FFFF1FD92152120C20720B0F4 -S31560015220DA05212080A34001821521201280000722 -S31560015230981720B0DA006004C203200480A34001FD -S315600152400280040F1B0000707FFFAFED90102013EA -S31560015250C025A1C09015E0C87FFFF1EC9215212011 -S31560015260C2052120DA05E0C880A0400D8215212003 -S31560015270128000079015E0C8DA006004C2022004BB -S3156001528080A3400102800407010000007FFFAFDCBC -S3156001529090102013170C00089A10200019100C00AA -S315600152A015300F789612E001D83FBFF0D43FBFC0EA -S315600152B09007BFF07FFFF1D59215212003100400FE -S315600152C0DA05212080A340011280000A821521207F -S315600152D0C200600480A06000128000060100000028 -S315600152E0C205A1C080A06000028000059007BFC012 -S315600152F07FFFAFC3901020139007BFC07FFFF1C33C -S3156001530092152120C2052120DA0720B080A0400D28 -S315600153108215212012800007981720B0DA006004F8 -S31560015320C203200480A34001028003E31B000070D6 -S315600153307FFFAFB390102013901660F07FFFF1B33B -S3156001534092152120C205A1C08330600E82086003D8 -S3156001535080A0600202800004211800807FFFAFA850 -S3156001536090102013C02421C07FFFF2981111F20022 -S315600153700310E80080A2000112800006010000000F -S31560015380C20421C080A06000028000040100000008 -S315600153907FFFAF9B901020137FFFF3CA11100000AF -S315600153A01101F5897FFFF289901221E20308E96410 -S315600153B080A200011280000601000000C205A1C0A2 -S315600153C080A0600002800004010000007FFFAF8CB6 -S315600153D0901020237FFFF27D1112A2080311410074 -S315600153E080A200011280000601000000C205A1C072 -S315600153F080A0600002800004010000007FFFAF8092 -S31560015400901020237FFFF3AF110010009007BFF0CB -S31560015410921660F07FFFF1649415212003100C0051 -S31560015420DA05212080A340011280000A821521201D -S31560015430C200600480A060001280000601000000C6 -S31560015440C205A1C080A0600002800005901660F0D0 -S315600154507FFFAF6B90102014901660F09207BFC06B -S315600154607FFFF1569415212003200000DA052120E3 -S3156001547080A340011280000A82152120C2006004C7 -S3156001548080A060001280000601000000C205A1C074 -S3156001549080A0600002800004010000007FFFAF5819 -S315600154A0901020147FFFF19190102001030FE0000E -S315600154B080A200011280000601000000C205A1C0A1 -S315600154C080A0600002800004010000007FFFAF4CF5 -S315600154D0901020147FFFF17D90102001030FFC00D6 -S315600154E080A200011280000880A26000128000067E -S315600154F001000000C205A1C080A060000280000416 -S31560015500010000007FFFAF3E901020147FFFF36D16 -S315600155101110100019180085D41B20D07FFFF1F9F6 -S31560015520D01E60F003180085D03D2120DA0060D8D6 -S31560015530C205212080A0400D191800858215212001 -S3156001554012800007901320D8DA006004C20220049A -S3156001555080A3400102800361010000007FFFAF2844 -S31560015560901020227FFFF35711100000170400806E -S31560015570150F28009612E0F09A102000190FFC0012 -S31560015580D43FBFC0D83FBFF09007BFF09207BFC0FE -S315600155907FFFF10594152120030FFC00DA05212018 -S315600155A080A340011280000682152120C20060049A -S315600155B080A0600002800004010000007FFFAF1040 -S315600155C0901020157FFFF33F112000001700004067 -S315600155D0150014009612E0019A102000190FFC00C4 -S315600155E0D43FBFC0D83FBFF09007BFF09207BFC09E -S315600155F07FFFF0ED94152120030FFC00DA052120D1 -S3156001560080A340011280000682152120C200600439 -S3156001561080A0600102800004010000007FFFAEF8F7 -S31560015620901020157FFFF32711300000170000400E -S31560015630152014009612E0019A102000192FFC0023 -S31560015640D43FBFC0D83FBFF09007BFF09207BFC03D -S315600156507FFFF0D594152120032FFC00DA05212068 -S3156001566080A340011280000682152120C2006004D9 -S3156001567080A0600102800004010000007FFFAEE0AF -S31560015680901020157FFFF30F11100000190FFC0019 -S315600156909A102000D83FBFF09007BFF09216E0E065 -S315600156A07FFFF0C194152120C206E0E0DA052120D2 -S315600156B080A3400182152120128000079816E0E040 -S315600156C0DA006004C203200480A340010280000462 -S315600156D0010000007FFFAECA901020157FFFF2F92E -S315600156E01120000017000040150014009612E00119 -S315600156F0190FFC009A102000D43FBFC0D83FBFF0FD -S315600157009007BFF09216E0E07FFFF0A79415212085 -S31560015710C206E0E0DA05212080A34001821521203E -S31560015720128000079816E0E0DA006004C2032004E4 -S3156001573080A3400102800004010000007FFFAEB03B -S31560015740901020157FFFF2DF113000001700004036 -S31560015750152014009612E0019A102000192FFC0002 -S31560015760D43FBFC0D83FBFF09007BFF09216E0E0CC -S315600157707FFFF08D94152120C2052120DA06E0E035 -S3156001578080A0400D82152120128000079016E0E06E -S31560015790DA006004C202200480A340010280000492 -S315600157A0010000007FFFAE96901020157FFFF2C5C5 -S315600157B01110000015100000961020019A102001AA -S315600157C0190FFC00D43FBFC0D83FBFF09007BFF0B0 -S315600157D09207BFC07FFFF079941521200310000066 -S315600157E0DA05212080A3400112800006821521205E -S315600157F0C200600480A06002028000040100000013 -S315600158007FFFAE7F901020157FFFF2AE1120000062 -S315600158109007BFF09207BFC07FFFF0689415212003 -S3156001582003100000DA05212080A3400112800006E2 -S3156001583082152120C200600480A0600302800004FA -S31560015840010000007FFFAE6E901020157FFFF29D74 -S31560015850113000009A102001192FFC00D83FBFF0CB -S315600158609007BFF09207BFC07FFFF05494152120C7 -S3156001587003300000DA05212080A340011280000672 -S3156001588082152120C200600480A0600302800004AA -S31560015890010000007FFFAE5A901020157FFFF2894C -S315600158A011100000150FFC04172F26159412A01273 -S315600158B09612E231190FFEAE1B1CD2E89A136011E3 -S315600158C098132154D43FBFC0D83FBFF09007BFF0B3 -S315600158D09207BFC07FFFF04794152120030FFEA7F3 -S315600158E082106296DA05212080A3400112800008A9 -S315600158F082152120DA006004032C1B348210602F8C -S3156001590080A3400102800004010000007FFFAE3CDD -S31560015910901020157FFFF26B112000009007BFF0F9 -S315600159209207BFC07FFFF03394152120030FFEA7B6 -S3156001593082106296DA05212080A340011280000858 -S3156001594082152120DA006004032C1B34821060303A -S3156001595080A3400102800004010000007FFFAE28A1 -S31560015960901020157FFFF25711300000192FFC04AB -S315600159701B2F26159A13623198132012D83FBFC088 -S315600159809007BFF09207BFC07FFFF01A94152120E0 -S31560015990032FFEA782106296DA05212080A34001BB -S315600159A01280000882152120DA006004032C1B3462 -S315600159B08210603080A34001028000040100000073 -S315600159C07FFFAE0F901020157FFFF23E1110000091 -S315600159D015101000961020009A102000191038003A -S315600159E0D43FBFC0D83FBFF09007BFF09207BFC09A -S315600159F07FFFF0009415212003102400DA05212091 -S31560015A0080A340011280000682152120C200600435 -S31560015A1080A0600002800004010000007FFFADF8F5 -S31560015A20901020157FFFF227112000009007BFF02C -S31560015A309207BFC07FFFEFEF94152120031024006A -S31560015A40DA05212080A340011280000682152120FB -S31560015A50C200600480A060000280000401000000B2 -S31560015A607FFFADE7901020157FFFF2161130000021 -S31560015A709007BFF09207BFC07FFFEFDE941521202C -S31560015A8003102400DA05212080A34001128000065C -S31560015A9082152120C200600480A06000028000049B -S31560015AA0010000007FFFADD6901020157FFFF20543 -S31560015AB011100000210FE000110020007FFFF0B9F6 -S31560015AC09214200180A220001280012301000000AF -S31560015AD07FFFF1FC11200000110020007FFFF0B173 -S31560015AE09214200180A2200012800118010000009A -S31560015AF07FFFF1F411300000921420017FFFF0A9BD -S31560015B001100200080A220001280010D010000001A -S31560015B107FFFF1EC111000009A102000190FFC00B4 -S31560015B20D83FBFF09007BFF07FFFEFB892152120F5 -S31560015B30C207BFF0DA05212080A340011280000769 -S31560015B4082152120DA006004C207BFF480A34001F8 -S31560015B50028002A7010000007FFFADA99010201509 -S31560015B607FFFF1D8112000009007BFF07FFFEFA7FC -S31560015B7092152120C207BFF0DA05212080A34001DA -S31560015B801280000782152120DA006004C207BFF483 -S31560015B9080A340010280029B010000007FFFAD9857 -S31560015BA0901020157FFFF1C7113000009007BFF0FC -S31560015BB07FFFEF9692152120C207BFF0DA052120FB -S31560015BC080A340011280000782152120DA0060045B -S31560015BD0C207BFF480A340010280028F010000006A -S31560015BE07FFFAD87901020157FFFF1B61110000081 -S31560015BF0030FDFFF901063FF7FFFF074A0100008B2 -S31560015C0080A2001002800004010000007FFFAD7CCD -S31560015C10901020157FFFF1AB112000007FFFF06B24 -S31560015C2090100010030FE00080A2000102800004C2 -S31560015C30010000007FFFAD72901020157FFFF1A17A -S31560015C40113000007FFFF0619010001080A20010FB -S31560015C5002800004010000007FFFAD6990102015ED -S31560015C607FFFF198901020007FFFF0609015212052 -S31560015C70032FFE00DA05212080A340011280000671 -S31560015C8082152120C200600480A0600002800005A8 -S31560015C90211801447FFFAD5A901020162118014446 -S31560015CA07FFFF05C90142128DA042128032FF0008D -S31560015CB080A3400102800004A21421287FFFAD5019 -S31560015CC0901020167FFFF05D90100011DA042128F4 -S31560015CD0030FE00080A34001028000040100000080 -S31560015CE07FFFAD47901020167FFFF064901521204D -S31560015CF0030FFBF7821063F0DA05212080A34001D0 -S31560015D001280000882152120DA0060040303FF1265 -S31560015D108210604A80A3400102800005921660F0FD -S31560015D207FFFAD3790102016921660F09007BFF096 -S31560015D307FFFEF3094152120C205A1C08330600E2C -S31560015D408208600780A0600202800005191800467B -S31560015D507FFFAD2B90102017191800461718008089 -S31560015D60DA02E1C8821321F880A0400DE00321F830 -S31560015D7002800004A212E1C87FFFAD2190102018B5 -S31560015D80C204600480A0401002800004010000008B -S31560015D907FFFAD1B90102018C204600880A06000D0 -S31560015DA01280007701000000C204600C80A06000D0 -S31560015DB01280006C010000007FFFEEE6010000002A -S31560015DC080A220010280019801000000190C40297F -S31560015DD01B23CD1B9A13609B9813200694102000F9 -S31560015DE096102000D83FBFF0D43FBFC07FFFEF2F92 -S31560015DF09007BFF003180083A21062101B18008180 -S31560015E0003180144A0136210A4106120B010200091 -S31560015E10832E2002DA044001DA27BFC09007BFC093 -S31560015E207FFFEF25921521209B2E2003D804000DBC -S31560015E30C2052120B00620019603401080A300010F -S31560015E401280000790102019DA02E004C204A0044F -S31560015E5080A340010280000580A620FF7FFFACE899 -S31560015E600100000080A620FF04BFFFEB832E200205 -S31560015E7003180083A41062101B18008003180144E4 -S31560015E80A2136210A6106120B0102000A12E20027C -S31560015E90C2048010C227BFC0921521207FFFEEDBAE -S31560015EA09007BFC0DA044010C2052120B006200267 -S31560015EB09804001180A34001128000079010201AF7 -S31560015EC0DA032004C204E00480A3400102800005D5 -S31560015ED080A620FF7FFFACCA0100000080A620FFDC -S31560015EE024BFFFECA12E200230800211C205A1C0A1 -S31560015EF080A0600022BFFB8FB0863FFF30BFFB8A68 -S31560015F00C205A1C080A0600002BFF145010000008A -S31560015F1030BFF141C205A1C080A0600002BFF13669 -S31560015F200100000030BFF132C205A1C080A060004F -S31560015F3002BFF1270100000030BFF1237FFFACB043 -S31560015F409010201530BFFEF37FFFACAD9010201589 -S31560015F5030BFFEE87FFFACAA9010201530BFFEDD92 -S31560015F607FFFACA79010201830BFFF947FFFACA4D1 -S31560015F709010201010BFF678111800847FFFACA036 -S31560015F809010201830BFFF89C207BFCC80A0600087 -S31560015F9012BFF8F501000000C20421C08208401555 -S31560015FA09A16A00880A0400D12BFF8EF010000000C -S31560015FB010BFF8F015108683C205A1C09A13601F41 -S31560015FC0190000108208400D9813200880A0400C2B -S31560015FD012BFFB7D1118008510BFFB7F9012205008 -S31560015FE0C205A1C09A13601F190000108208400DF6 -S31560015FF09813200880A0400C12BFFB8611180085FB -S3156001600010BFFB8890122068C205A1C09A13601F59 -S31560016010190000108208400D9813200480A0400CDE -S3156001602012BFFB8F1118008510BFFB919012208063 -S31560016030C205A1C09A13601F190000108208400DA5 -S315600160409813200880A0400C12BFFB980100000045 -S3156001605030BFFB98C205A1C080A0600002BFFBFEF5 -S31560016060111FD00030BFFBF9C205A1C080A060003E -S3156001607002BFFC1E0100000030BFFC1AC205A1C0B0 -S3156001608080A0600002BFFC2C1B18008530BFFC2776 -S31560016090C205A1C080A0600002BFFC3A1B18008542 -S315600160A030BFFC35C205A1C080A0600002BFFC47BD -S315600160B01B18008530BFFC42C205A1C09A13601F40 -S315600160C0190000108208400D9813201080A0400C22 -S315600160D012BFFC4C0318008510BFFC4E901060B8CF -S315600160E0C205A1C09A13601F190000108208400DF5 -S315600160F09813200480A0400C12BFFB201118008564 -S3156001610010BFFB2290122038C205A1C080A060009A -S3156001611022BFF8D0150FFFFF30BFF8CBC205A1C073 -S3156001612080A0600002BFF8100318008530BFF80B2D -S31560016130C205A1C09A13601F190000108208400DA4 -S315600161409813201080A0400C12BFF8169015E0C875 -S3156001615010BFF818921660F0C205A1C080A0600059 -S3156001616002BFF9491B18008530BFF944C205A1C0B9 -S3156001617080A0600002BFF9579007BFF030BFF952A7 -S31560016180C205A1C080A0600002BFF9631B1800852B -S3156001619030BFF95EC205A1C09A13601F19000010D5 -S315600161A08208400D9813201080A0400C12BFF96937 -S315600161B09007BFF010BFF96B921660F0C20461C020 -S315600161C080A0600002BFF74B1B18008530BFF74601 -S315600161D0C205A1C080A0600002BFF75A9016E0E038 -S315600161E030BFF755C205A1C09A13601F1900001090 -S315600161F08208400D9813201080A0400C12BFF75FF3 -S315600162000100000030BFF75FC205A1C080A0600039 -S3156001621002BFF76F1B18008530BFF76AC205A1C0C0 -S315600162209A13601F190000108208400D9813201000 -S3156001623080A0400C12BFF7750100000030BFF775F2 -S31560016240C20461C080A0600002BFF7949015E0C8E7 -S3156001625030BFF78FC205A1C080A0600002BFF7A062 -S315600162609015E0C830BFF79BC205A1C080A0600051 -S3156001627002BFF7AC9015E0C830BFF7A7C205A1C051 -S315600162809A13601F190000108208400D98132010A0 -S3156001629080A0400C12BFFBED0100000030BFFBED9A -S315600162A0C205A1C080A0600002BFFBFC170C0008FC -S315600162B030BFFBF7C205A1C09A13601F1900001019 -S315600162C08208400D9813201080A0400C12BFFC1963 -S315600162D0901660F030BFFC1AC205A1C080A06000B4 -S315600162E002BFFCA10100000030BFFC9DC20461C079 -S315600162F080A0600002BFF9E59015E0C830BFF9E003 -S31560016300C205A1C080A0600002BFF9F19015E0C886 -S3156001631030BFF9ECC205A1C080A0600002BFF9FDE3 -S315600163209015E0C830BFF9F8C205A1C080A0600031 -S3156001633002BFFA091918008530BFFA04C20461C0A8 -S3156001634080A0600002BFF9250318008530BFF920DF -S31560016350C205A1C09A13601F190000108208400D82 -S315600163609813201080A0400C12BFF92C0100000088 -S3156001637030BFF92CC205A1C080A0600002BFF93C04 -S315600163801B18008530BFF937C205A1C09A13601F7B -S31560016390190000108208400D9813201080A0400C4F -S315600163A012BFF9429007BFE810BFF944921660F038 -S315600163B0C20461C080A0600002BFF95F9016E0E090 -S315600163C030BFF95AC205A1C09A13601F19000010A7 -S315600163D08208400D9813201080A0400C12BFF9640A -S315600163E00100000030BFF964C205A1C080A0600051 -S315600163F002BFF9740318008530BFF96FC205A1C0E9 -S315600164009A13601F190000108208400D981320101E -S3156001641080A0400C12BFF97A9016E0E010BFF97CBB -S31560016420921660F07FFFAB769010201910BFFE695F -S31560016430190C4029D80061C01B0000709A13601FB7 -S3156001644003000010980B000D8210600880A3000104 -S3156001645012BFF5501118008410BFF55290122360D7 -S31560016460C205A1C09A13601F190000108208400D71 -S315600164709813200480A0400C12BFF55811180084AF -S3156001648010BFF55A90122378C205A1C09A13601FF6 -S31560016490190000108208400D9813200480A0400C5A -S315600164A012BFF5600100000030BFF560C205A1C0F2 -S315600164B080A0600002BFF4A90318008530BFF4A470 -S315600164C0C205A1C080A0600002BFF4939015E0C828 -S315600164D030BFF48EC205A1C080A0600002BFF47D0A -S315600164E09015E0C830BFF478C20461C080A0600036 -S315600164F002BFF4679015E0C830BFF462C205A1C05F -S315600165009A13601F190000108208400D981320022B -S3156001651080A0400C12BFF5B61B18008510BFF5B8F8 -S31560016520921360D0C205A1C080A0600002BFF5C50C -S315600165309007BFF030BFF5C0C205A1C080A0600062 -S3156001654002BFF5D10318008530BFF5CCC205A1C0E5 -S315600165509A13601F190000108208400D98132010CD -S3156001656080A0400C12BFF5D79007BFF010BFF5D9D8 -S31560016570921660F0C20461C080A0600022BFF5F38C -S315600165801918008530BFF5EEC205A1C09A13601FC8 -S31560016590190000108208400D9813201080A0400C4D -S315600165A012BFF5F91B18008510BFF5FB03180085AE -S315600165B0C205A1C080A0600002BFF60B9007BFE8CC -S315600165C030BFF606C205A1C080A0600002BFF61703 -S315600165D01B18008530BFF612C20421C080A060007E -S315600165E022BFF03E113C02AF30BFF039C205A1C0F7 -S315600165F080A0600002BFFD5B0100000030BFFD5757 -S31560016600C205A1C080A0600002BFFD670100000055 -S3156001661030BFFD63C205A1C080A0600002BFFD73EB -S315600166200100000030BFFD6FC205A1C080A06000FF -S3156001663002BFF2D70318008530BFF2D2C205A1C0EE -S3156001664080A0600002BFF2C19007BFF030BFF2BC0C -S31560016650C205A1C080A0600002BFF2AA37180085FA -S3156001666030BFF2A5C205A1C080A0600002BFF028BC -S315600166701111FC0030BFF023C205A1C09A13601F3F -S31560016680190000108208400D9813201080A0400C5C -S3156001669012BFF3DD9016E0E010BFF3DF921660F0F3 -S315600166A0C205A1C080A0600002BFF39E1B180085D1 -S315600166B030BFF399C205A1C080A0600002BFF38616 -S315600166C01B18008530BFF381C205A1C080A06000A0 -S315600166D002BFF36E1B18008530BFF369C20461C047 -S315600166E080A0600002BFF3589016E0E030BFF3531C -S315600166F0C205A1C080A0600002BFF30E1918008513 -S3156001670030BFF309C205A1C080A0600002BFF2F8E4 -S315600167109007BFE830BFF2F3C20461C080A0600099 -S3156001672002BFF2E29007BFE830BFF2DD81C7E00841 -S3156001673081E80000D27A000081C3E0080100000010 -S3156001674081C3E008900A20209332600492126001AE -S315600167508213C0007FFFFFF89E1040000100000019 -S3156001676081D8200081C3E008010000009DE3BF9845 -S315600167707FFFFFFC0100000082102400C0A04300DF -S3156001678081C7E00881E80000833220189A1000086A -S315600167908088600F028000049010200083336010AF -S315600167A09008600381C3E008010000009DE3BF9883 -S315600167B0031800C01B1800C1B0106000A21360006E -S315600167C0031800C21B1800C2A4106000A613610062 -S315600167D0031800201B180020A8106158AA13600036 -S315600167E07FFFEBAD9010200C808A2008028001FDAE -S315600167F0010000007FFFAA7D9010200ED08003204B -S315600168007FFFFFE2010000000318014380A220021E -S31560016810028000C6D02060D080A22002148000E4ED -S3156001682080A2200380A22001028000D1821020195B -S31560016830331800A02F1800A0391800A0371800A03F -S31560016840351800A07FFFFFC7210100007FFFFFC849 -S31560016850BA04A00C921000117FFFFFBC90100018C3 -S31560016860921000117FFFFFB990062004901000116D -S315600168707FFFFFB19210200ADA066014110800004A -S31560016880913A000DC205E010900A0001912A20029A -S3156001689013008000900200117FFFFFA79212600A29 -S315600168A0DA06601411100000913A000DC205E0107D -S315600168B0900A0001912A2002900200117FFFFF9E3B -S315600168C09214208EDA066014111C0000913A000DB4 -S315600168D0C205E010900A0001912A20021301C0004E -S315600168E0900200117FFFFF949212608E9334A00490 -S315600168F09004600C7FFFFF90921260019214201E3B -S315600169007FFFFF8D9004A0089010001D7FFFFF8A16 -S31560016910921020009334E004921260017FFFFF869B -S315600169209004A004111800C2901221087FFFFF8213 -S3156001693092102000031800E0A01060009334200438 -S31560016940111800C2901221047FFFFF7B9212601A18 -S3156001695003048D1582106278C2242004111800E0A8 -S3156001696015180120C0222000A2102003AC12A0003D -S31560016970A004E00C90047FFD40000A73921020038E -S315600169801B180143C20360D08200600C932A000188 -S315600169909202401693326004901000107FFFFF66EA -S315600169A09212601EA204600180A4600A04BFFFF215 -S315600169B0A0042004C206E008D807200C8208600102 -S315600169C08328400CD605E010111800E0D406A0001B -S315600169D0DA06601498122000960AE003972AC00D21 -S315600169E0920AA002111800A0DA022004940AA001FA -S315600169F0952A800D932A400D1B1800209612C0011E -S31560016A00E8236150030100001B0076418210601E7D -S31560016A109A1361C09212C00999332004C2252004D9 -S31560016A20DA2520089612C00A9E13200E913560045D -S31560016A301B1800C2031800C2821061049012201E46 -S31560016A40953620049813201E9A136108D625202CAA -S31560016A50D8252010D025201CD2252020DE252028EF -S31560016A60D6252014940ABFF0FA250000DA252018ED -S31560016A70C2252024C225200CA2102100D4A44320C3 -S31560016A80C2800320D88443209A102001A0102200DE -S31560016A90DAA40320D884032082102000C2A4032034 -S31560016AA0DAA0032081D820007FFFC55901000000CC -S31560016AB0C2800320E2844320E0840320DA05E010EB -S31560016AC0D6066014C206E0089A0B60039B2B400B46 -S31560016AD082086001D407200CD806A000111800A016 -S31560016AE08328400A980B2001D60220049A1340019C -S31560016AF0992B000B9A13400CC203400080A06000E2 -S31560016B0012800008821360041B048D15D8004000B2 -S31560016B109A13627880A3000D02800038C205E010E6 -S31560016B2010800000010000008210201A331800A0B6 -S31560016B30C22660149810203F2F1800A0391800A0B3 -S31560016B40351800A09A1020148210200E151800A086 -S31560016B50371800A0DA27200CC222A004D826A0008C -S31560016B60D825E01010BFFF38D826E0089A10207F9C -S31560016B70331800A02F1800A0C2266014DA25E01091 -S31560016B809810203F391800A0351800A082102013F4 -S31560016B909A10200D111800A0371800A0C227200CEA -S31560016BA0DA22200410BFFFF0D826A00012BFFF2210 -S31560016BB0331800A08210201CC22660149A1020157A -S31560016BC08210207F391800A0371800A0DA27200C20 -S31560016BD0C226E0089810200F2F1800A0351800A0D3 -S31560016BE01B1800A08210203FD8236004C226A00093 -S31560016BF010BFFF15D825E010DA06E008D806601444 -S31560016C00820860039A0B6002D607200C8328400C29 -S31560016C109B2B400B8210400DD80040001B100000DA -S31560016C20C203400080A3000102800004D406E0088C -S31560016C301080000001000000C205E010980AA00162 -S31560016C40D207200CD6066014820860038328400BA5 -S31560016C50992B0009940AA0039810400CDA06A0004B -S31560016C60111800A0952A80099A0B6001D6022004AA -S31560016C708210400AC20040009B2B400B9813000D06 -S31560016C800321D9509813200482106321C223000086 -S31560016C90DA03000080A3400102800004C206E00816 -S31560016CA01080000001000000D407200CDA05E01016 -S31560016CB082086001D60660148328400A9A0B600335 -S31560016CC0D806A0009B2B400B151800A0D602A00485 -S31560016CD0980B20019A134001992B000B9813400CD5 -S31560016CE08210000C05048D158410A278072AF37BA7 -S31560016CF08610E301C4384000C438400003048D1592 -S31560016D00DA0300008210627880A3400102800004E9 -S31560016D108213200410800000010000001B2AF37B0F -S31560016D20D80040009A13630180A3000D12BFFFFAD9 -S31560016D30C205E010D6066014D806E0088208600332 -S31560016D40D407200C8328400B980B2001DA06A0009B -S31560016D50111800A0992B000A9A0B6003D602200431 -S31560016D608210400C9B2B400B15180143A010400D5F -S31560016D70F002A0D0A2102003E0240000C0A00220EF -S31560016D80921020034000097090047FFD8206200C5A -S31560016D9098102001912A0001992B00011B180120EE -S31560016DA09610000182136000DA02000180A3401090 -S31560016DB0A204600112800087A004000C80A4600A0E -S31560016DC024BFFFEFE0240000C0A0022003180120C9 -S31560016DD0A810000BAA106000A0102000A2102003CA -S31560016DE090047FFD4000095892102003832C6002B5 -S31560016DF0912A0014DA04C00190020015820B6060CA -S31560016E009132200480A000019012201EA040001043 -S31560016E109A0B7F9F900A3F9F80A340081280006F64 -S31560016E20A204600180A4600A24BFFFEF90047FFD85 -S31560016E3080A4200012800004C205E01010800000CA -S31560016E4001000000D6066014D806E00882086003D7 -S31560016E50D407200CDA06A000111800A08328400B85 -S31560016E60980B2001992B000AD60220049A0B600226 -S31560016E708210400C9B2B400BAA10400D9FC5400011 -S31560016E800100000082102400C0A04300C0A00220BF -S31560016E90A0102000A21020039B2C6002C204C00D2A -S31560016EA08208606080A00001A0400010A204600119 -S31560016EB080A4600A24BFFFFA9B2C600280A420088C -S31560016EC022800004D004E00410800000010000006C -S31560016ED0808A204002800007010000007FFFFE19C2 -S31560016EE00100000080A22000128000040100000061 -S31560016EF010800000010000007FFFFE12D004A00890 -S31560016F0080A22000128000040100000010800000B1 -S31560016F10010000007FFFFE0BD004E00880A2200084 -S31560016F2012800004010000001080000001000000D2 -S31560016F3083480000842860808188A00001000000E9 -S31560016F400100000001000000D806E008D407200C0B -S31560016F50DA05E010980B2001D6066014992B000A19 -S31560016F609A0B6003C206A0009B2B400B151800A06C -S31560016F70D602A004820860018328400B9A13400C54 -S31560016F809A1340019A136004C203400092102004D0 -S31560016F9091D02002010000007FFFC41D01000000A6 -S31560016FA0981020009A102200D8A343208210200155 -S31560016FB0C2A34320D8A3432003100000DA80438094 -S31560016FC0DAA04380D8A0032081D820003080000554 -S31560016FD01080000001000000108000000100000028 -S31560016FE081C7E00891E820009DE3BF98400007D182 -S31560016FF001000000808A21000280003F010000003C -S315600170007FFFA88E01000000912A20047FFFA877E8 -S31560017010900220050318014082106048DA0060047E -S3156001702080A360002280001503180140B0100001A2 -S31560017030C20600009B38601F81836000DA06200467 -S3156001704001000000010000008278400DDA06200888 -S31560017050B006200C80A0400D028000049010200133 -S315600170607FFFA86701000000C206200480A06000BF -S3156001707012BFFFF00318014082106000DA0060045D -S3156001708080A360000280001501000000B0100001BD -S31560017090C206000081800000DA06200401000000BB -S315600170A0010000009A70400D8210000DDA0620087A -S315600170B0B006200C80A0400D0280000490102002D2 -S315600170C07FFFA84F01000000C206200480A0600077 -S315600170D012BFFFF00100000040000824010000001B -S315600170E080A2200012800004010000007FFFA844F6 -S315600170F09010200381C7E00891E820009DE3BF98C6 -S315600171007FFFA84E01000000912A20047FFFA83767 -S3156001711090022004400007890100000080A221231B -S3156001712002800004010000007FFFA8359010200155 -S315600171304000078001000000808A21000280002B48 -S315600171400318014082106184DA00600880A3600937 -S315600171500280001101000000B0100001C2060000AB -S31560017160DA062004D80620088258400DB006200CA5 -S3156001717080A0400C02800004901020027FFFA820AE -S3156001718001000000C206200880A0600912BFFFF45A -S3156001719001000000400007760100000080A2200087 -S315600171A00280000F0100000040000762010000003C -S315600171B0808A22000280000D010000004000079EC7 -S315600171C00100000080A2200012800008010000007A -S315600171D07FFFA80B90102004308000047FFFA80871 -S315600171E09010200330BFFFF181C7E00891E82000CD -S315600171F09DE3BFA0941020001118005C9012222418 -S315600172001318005C921262281718005C9612E2301D -S315600172101918005C9813223493C2000081C24000A1 -S315600172201080019181C2C00081C300001080018E6F -S315600172309402A0019402A00180A2A0031280018A97 -S3156001724001000000874400008D30E00E8C89A007A4 -S3156001725080A1A000028000C701000000AF30E00BF2 -S31560017260AE0DE00780A5E000128000C201000000BB -S3156001727080A1A002128000350100000025100000E7 -S31560017280E41C80002510000029100000A8152104C7 -S31560017290A6100012AA100012AC100014A18020469C -S315600172A0A4100000AA10000001000000A180204E79 -S315600172B0A810210001000000A1800000010000006B -S315600172C001000000E83CA03082A4801312800166B0 -S315600172D082A5001612800164010000000100000011 -S315600172E001000000874400008D30E00B8C89A00707 -S315600172F08CA1A0051280015CA18000000100000044 -S315600173000100000001000000E81CA03082A5001603 -S315600173101280015582A54012A4100000128001520C -S315600173200100000001000000874400008D30E00B81 -S315600173308C89A0078CA1A0031280014B010000007B -S315600173401080008C0100000080A1A0011280002342 -S3156001735025100000E41C80002510000029100000A3 -S31560017360A8152104A6100012AA100012AC10001470 -S31560017370A1802046A4100000AA10000001000000B0 -S31560017380A180204EA810210001000000A18000000C -S31560017390010000000100000001000000E83C8000DF -S315600173A082A480131280013082A500161280012EFC -S315600173B00100000001000000874400008D30E00BF1 -S315600173C08C89A0078CA1A002128001270100000010 -S315600173D0108000680100000080A1A0031280006592 -S315600173E0A6100000A210200EA1844000A610000085 -S315600173F0A1800000A814E000AB4400000100000079 -S31560017400AC14E00001000000AF44000080A520003C -S3156001741012800115AA8D6E0080A5400012800112AE -S3156001742080A5A00012800110AF35E00BAE0DE0071C -S3156001743080A5E0011280010C01000000A01000008F -S31560017440A1844000A6100000A1800000E818000099 -S31560017450AC100000AE100000EC04C000EE04E004C5 -S3156001746080A500161280010080A54017128000FEDB -S3156001747001000000A5440000A534A00BA40CA007E0 -S3156001748080A4A001128000F801000000A010000095 -S31560017490A1844000A6100000A1800000A210200A6D -S315600174A0A1844000A4100000A1800000E81800003B -S315600174B0AC100000AE100000EC04C012EE04E00453 -S315600174C080A50016128000E880A54017128000E6AC -S315600174D001000000A5440000A534A00BA40CA00780 -S315600174E080A4A002068000E001000000211801408E -S315600174F0A0142200EC1C0000A0042008E81C000077 -S31560017500A1844000A6100000A1800000A210200EF8 -S31560017510A1844000A4100010AC100000AE10000061 -S31560017520A18000000100000001000000EC3C801316 -S31560017530AC100000AE100000E81CC01280A5001659 -S31560017540128000C980A54017128000C701000000A3 -S31560017550A5440000A534A00BA40CA00780A4A00438 -S31560017560128000C1010000001080000201000000CD -S315600175708B4440008A09601F80A160010280000A75 -S315600175808C1000059DE3BFA08AA1600116BFFFFEB6 -S315600175900100000081E800008CA1A00116BFFFFE7A -S315600175A0010000000100000001000000A023A0808E -S315600175B0A02C20078E100010A3480000E2240000D2 -S315600175C0C2242004C43C2008C83C2010CC3C2018AE -S315600175D0F03C2020F43C2028F83C2030FC3C20384C -S315600175E0D03C2040D43C2048D83C2050DC3C20583C -S315600175F0A5500000E424206080102008821020013C -S315600176008410200286102003881020048A10200529 -S315600176108C10200681900000A42C601F818C800054 -S31560017620010000000100000001000000030040406D -S3156001763082106101841000008610000089444000B8 -S315600176408809201F86100004A010000284004002F1 -S31560017650A210000284004002A410000284004002CD -S31560017660A610000284004002A810000284004002B5 -S31560017670AA10000284004002AC100002840040029D -S31560017680AE100002840040029010000284004002A5 -S3156001769092100002840040029410000284004002AD -S315600176A09610000284004002981000028400400295 -S315600176B09A100002840040029C100002840040027D -S315600176C09E1000028400400281E0000086A0E00175 -S315600176D016BFFFDE01000000030040408210610119 -S315600176E0841000008610000480A400021280003F0E -S315600176F08400400280A440021280003C8400400263 -S3156001770080A48002128000398400400280A4C002F5 -S31560017710128000368400400280A500021280003388 -S315600177208400400280A5400212800030840040023D -S3156001773080A580021280002D8400400280A5C002CF -S315600177401280002A8400400280A200021280002773 -S315600177508400400280A2400212800024840040021C -S3156001776080A28002128000218400400280A2C002B1 -S315600177701280001E8400400280A300021280001B5A -S315600177808400400280A340021280001884004002F7 -S3156001779080A38002128000158400400280A3C0028B -S315600177A0128000128400400281E0000086A0E001A0 -S315600177B016BFFFCE0100000080A020001280000BE2 -S315600177C080A0FFFF1280000980A16005128000077A -S315600177D080A1A0061280000501000000A01000072C -S315600177E010800006C0242020A01000079010200100 -S315600177F010800002D024202082100007C4004000BF -S315600178008188800001000000010000000100000085 -S31560017810C4186008C8186010CC186018F018602089 -S31560017820F4186028F8186030FC186038D018604089 -S31560017830D4186048D8186050DC186058E40060605D -S31560017840C200600481948000010000000100000014 -S3156001785001000000A0100007F004202081C7E008A5 -S3156001786081E8000010BFFFFCB010000001000000BD -S3156001787081D8200081C3E008010000001B18014483 -S31560017880D8036150821020018328400C1B180144E3 -S3156001789082007FFFD803615482084008932A400C16 -S315600178A0900040098213C0007FFFE77F9E10400071 -S315600178B0010000001B180144D803615082102001A9 -S315600178C08328400C1B18014482007FFFD803615452 -S315600178D0932A400C82084008900040099210000AE1 -S315600178E08213C0007FFFE7729E1040000100000016 -S315600178F01B180144D8036150821020018328400C73 -S315600179001B18014482007FFFD8036154932A400CFF -S3156001791082084008900040099210000A8213C00054 -S315600179207FFFE7679E104000010000001B180144BD -S31560017930D8036150821020018328400C1B18014432 -S3156001794082007FFFD803615482084008932A400C65 -S31560017950900040098213C0007FFFE7579E104000E8 -S31560017960010000001B180144D803615C82102001EC -S315600179708328400C1B18014482007FFFD803616C89 -S31560017980932A400C82084008900040099210000A30 -S315600179908213C0007FFFE74E9E1040000100000089 -S315600179A01B180144D803615C821020018328400CB6 -S315600179B01B18014482007FFFD803616C932A400C37 -S315600179C082084008900040099210000A8213C000A4 -S315600179D07FFFE7439E104000010000009DE3BF5812 -S315600179E02D180144A2102000C205A16080A44001A7 -S315600179F01680001BA01020002B1801442918014491 -S31560017A0027180144A4102001D005615C912C8008DF -S31560017A10C205216C90023FFF832C0001900A001879 -S31560017A207FFFE72990020001C204E14C901E000825 -S31560017A30900A000180A00008A2647FFFA0042001D3 -S31560017A40C205A16080A4000126BFFFF1D005615C7B -S31560017A5080A4600012800003B0102000B0102001E5 -S31560017A6081C7E00881E800001B180144D803615C06 -S31560017A70821020018328400C1B18014482007FFF7D -S31560017A80D803616C82084008932A400C9000400933 -S31560017A908213C0007FFFE70C9E10400001000000CA -S31560017AA01B180144D803615C821020018328400CB5 -S31560017AB01B18014482007FFFD803616C820840086D -S31560017AC0932A400C900040098213C0007FFFE702B1 -S31560017AD09E10400001000000952AA00D03280000B9 -S31560017AE094028009D02040009422B000D420600422 -S31560017AF081C3E00801000000033FFFBF821062F806 -S31560017B009DE38001193FFFBF94132368B407BFF853 -S31560017B10031800459606800A82106020C222E00C96 -S31560017B2003180044821063E0C222E0041B1800447B -S31560017B309A1363C0033FFFBFDA26800A901323803E -S31560017B40331800458210635C94068008981323C03D -S31560017B50921660008200401ED222E008D4204000C6 -S31560017B60B006800C7FFFA5A1901020067FFFE6CAB4 -S31560017B7090102000920A3FF07FFFE6C99010200026 -S31560017B80210000307FFFE6C490102000808A00103B -S31560017B9012BFFFFD010000007FFFFF3621000030AC -S31560017BA07FFFE6BD90102000808A001012BFFFFDA6 -S31560017BB0010000007FFFE6B890102000030020401E -S31560017BC08210600F921200017FFFE6B590102000CF -S31560017BD07FFFE6B19010200821180144D024214886 -S31560017BE07FFFE6AD9010200CA73A2010993A201439 -S31560017BF0A60CE007980B200FDA042148A82300138E -S31560017C00A80520089F3B6014933B60109B3B60185E -S31560017C1094050013A2102001AC03200A9E0BE00F0D -S31560017C2096102400AE0B60039402A002212000008E -S31560017C30992AC00C1B1801448203E00A952C400A5C -S31560017C409424000A832C4001D8236168A024000192 -S31560017C501B18014403180144EC23615C972AC00F89 -S31560017C60AA03E00A1B180144D620614403180144A3 -S31560017C70EA236154EA2061501B1801440318014448 -S31560017C80D423614C920A6007A53A2018D020615826 -S31560017C90153FFFBF932C4009A40CA00303180144B0 -S31560017CA09412A358932C4009A404A00139180144E5 -S31560017CB037180144EC20616C9B2C40149402801EA1 -S31560017CC0E0272164E426E160AA027FFFDA228000D0 -S31560017CD0AC85E0010280000CBB2C4013033FFFBF63 -S31560017CE082106368A0068001A4100016D00400000B -S31560017CF09FC20000A0042004A484BFFF32BFFFFD21 -S31560017D00D00400007FFFE66490102000920A3FFCD9 -S31560017D107FFFE66390102000A410200080A48016E7 -S31560017D2016800022A2102000033FFFBFAE106368D9 -S31560017D30A610001AA010200080A400163680001834 -S31560017D40A404A00110800005A810001780A40016E5 -S31560017D5036800013A404A001921000107FFFFEC8B4 -S31560017D60D004C014820A001580A0401512BFFFF826 -S31560017D70A0042001C204C01482184008DA072164F5 -S31560017D808208400D80A00001A2647FFF80A40016D6 -S31560017D9006BFFFF392100010A404A00180A4801610 -S31560017DA006BFFFE5A604E0047FFFE63B90102000D6 -S31560017DB0A6100008901020007FFFE6399214E003B8 -S31560017DC080A46000028001B101000000833CE00CE8 -S31560017DD080886003128000A5030048D1833CE013CC -S31560017DE080886003128001AD010000007FFFFEA163 -S31560017DF0210000307FFFE62890102000808A001065 -S31560017E0012BFFFFDA6100008A4102000C206E160A3 -S31560017E1080A480011680000D832CA00292100012AE -S31560017E20901000187FFFFED094102000A404A001DA -S31560017E30C206E16080A4800106BFFFFA92100012BB -S31560017E40A4102000832CA002A404A001C026000176 -S31560017E5080A4A01E04BFFFFD832CA0028210200512 -S31560017E60C22600009A102001DA2620048210200220 -S31560017E70C22620089A102003DA26200C7FFFFED83E -S31560017E809010001880A22000028001D3010000003A -S31560017E90C206000080A060050280000401000000A7 -S31560017EA07FFFA4D7901020067FFFFECD90100018AB -S31560017EB080A22000128001C401000000A4102000ED -S31560017EC0C206E16080A480011680000F9210001244 -S31560017ED0A0062004941020007FFFFEB290100018C7 -S31560017EE092100012901000107FFFFEAE94102000D9 -S31560017EF0A404A001C206E16080A4800106BFFFF66A -S31560017F00921000127FFFE5FA901000187FFFE5F8E6 -S31560017F10900620207FFFE5F6900620407FFFE5F47E -S31560017F2090062060A4102000C206E16080A4800152 -S31560017F3006800196A21020007FFFA4B19010200850 -S31560017F40173FFFBF8212E3C0940680018212E35C91 -S31560017F508200401ED81A8000C2004000D838400016 -S31560017F609612E380C206800B80A06005128000062F -S31560017F708206800BDA00600480A36001028000053E -S31560017F80A41020007FFFA49E90102009A410200059 -S31560017F90C206E16080A4800116800011A210200053 -S31560017FA0A0062004921000127FFFFEBE9010001002 -S31560017FB0901A200180A00008A2647FFFA404A0019A -S31560017FC0C206E16080A4800106BFFFF8921000122C -S31560017FD080A4600102800005833CE0137FFFA488D2 -S31560017FE09010200A833CE013808860031280018030 -S31560017FF082102005C22600009A102001DA2620048C -S3156001800082102002C22620089A102003DA26200C4C -S315600180101B3FFFBF9A1363589A03401ED00340006B -S315600180204000048D9210001D032EEEEEA12A20025F -S31560018030A21063BBE22600107FFFFE699010001854 -S3156001804080A220001280016701000000C2060010B4 -S3156001805080A0401102800005030048D17FFFA4681B -S3156001806090102012030048D1821061671B226AF3C7 -S31560018070C22620209A1361EFDA262024C20E202020 -S3156001808080A0600102800004010000007FFFA45C03 -S315600180909010201AC20E202180A060230280000465 -S315600180A0010000007FFFA4569010201BC20E202203 -S315600180B080A0604502800004010000007FFFA4509B -S315600180C09010201CC20E202380A0606702800004ED -S315600180D0010000007FFFA44A9010201DC20E2024DB -S315600180E080A0608902800004010000007FFFA44433 -S315600180F09010201EC20E202580A060AB0280000475 -S31560018100010000007FFFA43E9010201FC20E2026B2 -S3156001811080A060CD02800004010000007FFFA438CA -S3156001812090102020C20E202780A060EF02800004FC -S31560018130010000007FFFA43290102021C21620208A -S31560018140832860108330601080A061230280000460 -S31560018150010000007FFFA42A90102022DA16202257 -S315600181609B2B6010030000119B33601082106167C6 -S3156001817080A3400102800004010000007FFFA4206B -S3156001818090102023DA1620249B2B60100300002216 -S315600181909B336010821061AB80A3400102800004B2 -S315600181A0010000007FFFA41690102024DA16202615 -S315600181B09B2B6010030000339B336010821061EFCC -S315600181C080A3400102800005821020307FFFA40C4D -S315600181D09010202582102030C22E2020030C08D159 -S315600181E0DA0620208210616780A3400102800005C3 -S315600181F0821020317FFFA402901020278210203147 -S31560018200C22E2021030C0C51DA06202082106167F0 -S3156001821080A3400102800005821020327FFFA3F80F -S315600182209010202882102032C22E2022210C0C4C64 -S31560018230DA0620208214226780A3400102800005AD -S31560018240821020337FFFA3EE901020298210203305 -S31560018250C22E20239A142233C206202080A0400D0C -S3156001826002800005821020347FFFA3E59010202A4A -S3156001827082102034C22E2024030D2AF3DA0620242C -S31560018280821061EF80A340010280000582102035D3 -S315600182907FFFA3DB9010202B82102035C22E202574 -S315600182A0030D0D73DA062024821061EF80A340016D -S315600182B002800005821020367FFFA3D19010202C0A -S315600182C082102036C22E2026210D0D4DDA0620247D -S315600182D0821422EF80A340010280000582102037BC -S315600182E07FFFA3C79010202D82102037C22E202732 -S315600182F09A142237C206202480A0400D0280000510 -S31560018300210000107FFFA3BE9010202E21000010D7 -S3156001831082142041C23620200310104CDA06202038 -S315600183208210623380A340010280000582142243D9 -S315600183307FFFA3B39010202F82142243C2362022DE -S3156001834003101050DA0620208210624380A3400198 -S3156001835002800005210000117FFFA3A99010203043 -S315600183602100001182142045C23620240311114DCB -S31560018370DA0620248210623780A34001028000055C -S31560018380821422477FFFA39E9010203182142247D8 -S31560018390C236202603111151DA0620248210624763 -S315600183A080A3400102800004010000007FFFA394C6 -S315600183B0901020327FFFFD2FA4102000C206E160DD -S315600183C080A48001168000151B180144D403616CDA -S315600183D096100001A010200080A4001D3680000CBC -S315600183E0A404A001832C800A9B286002992CA0100A -S315600183F082130010C226000DA004200180A4001D76 -S3156001840006BFFFFC9A036004A404A00180A4800B4C -S3156001841026BFFFF2A01020007FFFE49F901020008E -S3156001842003000010808A000112BFFFFC01000000FA -S31560018430A4102000C206E16080A4800116800114A8 -S31560018440921000127FFFFD899010001815180144E3 -S31560018450C202A14C900A0001820E000180A20001B5 -S31560018460A404A00112BFFFF4901020337FFFA36420 -S3156001847001000000C206E16080A4800106BFFFF230 -S3156001848092100012308001027FFFA35D90102001DF -S3156001849010BFFE50833CE00C7FFFE47F901020000C -S315600184A0133FFFF09212603F920A0009A61000087E -S315600184B07FFFE47B901020007FFFE3D2A4102000B1 -S315600184C01303C0009214C0097FFFE4759010200069 -S315600184D080A4801616800009921000129016600022 -S315600184E07FFFFD0494102000A404A00180A48016DF -S315600184F006BFFFFB921000127FFFE3C2010000007E -S315600185007FFFE46590102000913A200A900A2003CB -S3156001851080A2200102800004010000007FFFA338D1 -S315600185209010200201000000921020009016600059 -S315600185307FFFFCE194102000010000007FFFE456FC -S31560018540901020001303C000922A00097FFFE454B3 -S3156001855090102000010000007FFFE3AA01000000E7 -S315600185607FFFE44D90102000913A200C900A200381 -S3156001857080A2200102BFFE1E010000007FFFA32032 -S315600185809010200330BFFE1A921000127FFFFD4546 -S3156001859090100018901A200580A00008A2647FFF41 -S315600185A0A404A001C206E16080A4800106BFFFF8B1 -S315600185B09210001280A4600012BFFE63173FFFBFD6 -S315600185C030BFFE5E7FFFA30E9010200710BFFE3DF9 -S315600185D0A41020007FFFA30A9010200530BFFE2D56 -S315600185E07FFFA3079010201130BFFE997FFFE42A19 -S315600185F090102000033FFFF08210603F920A000155 -S315600186007FFFE42790102000033FFFBFA010638027 -S3156001861092102000941020007FFFFCE290068010EB -S315600186207FFFE41D901020000303C0009212000139 -S315600186307FFFE41B9010200010800006A41020002C -S31560018640900680107FFFFCD794102005A404A0013A -S31560018650C206E16080A4800106BFFFFA9210001293 -S31560018660033FFFBFA01063809A102001DA2E8010AD -S3156001867003004000D80680108210600580A30001C7 -S3156001868002800004010000007FFFA2DD9010200B34 -S315600186907FFFE40190102000913A2006900A2003A2 -S315600186A080A2200102800004010000007FFFA2D4A5 -S315600186B09010200C7FFFE3F8901020001303C00098 -S315600186C0922A00097FFFE3F69010200092102000A5 -S315600186D0900680107FFFFCB3941020007FFFE3EECD -S315600186E0901020002103C000921200107FFFE3EC7E -S315600186F0901020007FFFE3E890102000808A001030 -S3156001870002BFFFFDA6100008A4102000C206E160AA -S3156001871080A480011680000E033FFFBF9A102001DE -S31560018720A2106380A12B401D921000129006801149 -S315600187307FFFFC8D94043FFFA404A001C206E160A3 -S3156001874080A4800106BFFFFA921000121303C000D5 -S31560018750922CC0097FFFE3D2901020002103C00054 -S315600187607FFFE3CD90102000808A001012BFFFFDCD -S315600187701B004000213FFFBF82142380D806800181 -S315600187809A13600580A3000D0280000401000000B9 -S315600187907FFFA29B9010200D7FFFE3BF901020000A -S315600187A0913A2008900A200380A2200122800005C8 -S315600187B0A01423787FFFA2929010200FA014237833 -S315600187C094068010981020119A102055D83A80008E -S315600187D07FFFE3B1901020000303C00092120001F5 -S315600187E0920A7F3F7FFFE3AE90102000A0068010C3 -S315600187F07FFFE3CD9010001010800006A4102000CA -S31560018800900420047FFFFC6794102055A404A00106 -S31560018810C206E16080A4800106BFFFFA92100012D1 -S31560018820113FFFBF901223787FFFE3BF9006800858 -S3156001883080A220111280000480A26055028000048B -S31560018840010000007FFFA26E901020107FFFE3926F -S3156001885090102000833A20068208600380A06001A0 -S3156001886002800004A61000087FFFA2659010201008 -S31560018870133C3FF09212603F920CC0097FFFE38880 -S315600188809010200010BFFDDC821020057FFFE3827F -S31560018890901020009212200F7FFFE381901020003C -S315600188A081C7E00891E820009DE3BF987FFFFC93B4 -S315600188B001000000B0100008130020409212600F02 -S315600188C07FFFE377901020000100000081C7E00878 -S315600188D081E80000033FFFBF821063589DE380017A -S315600188E07FFFFBE401000000400002380100000048 -S315600188F07FFFE36990102008A21000087FFFE366FE -S315600189009010200C7FFFA24DA0100008912A200430 -S315600189107FFFA2369002200C973C6014833C60185E -S31560018920953C2014993C201882086003960AE00F52 -S31560018930820060019602E00AA33C6010A13C20100F -S31560018940980B2003940AA00FA728400B98032001D7 -S31560018950A20C6007A00C20079402A00A9A102001BD -S31560018960A2046002A0042002B12B000A03200000C9 -S31560018970AB2B4011A52B40109620401898057FFF20 -S31560018980822040139A04BFFFAE130001A213400B6D -S31560018990210000307FFFE34090102000808A0010A4 -S315600189A012BFFFFD033FFFBF9A07BFF8821063C086 -S315600189B0A00340012D155555901000189210001016 -S315600189C07FFFE2C89415A15580A220001280004B5A -S315600189D0292AAAAA92100010901000187FFFE2D5EA -S315600189E0941522AA80A220001280004E0100000088 -S315600189F07FFFA21201000000912A20047FFFA1FBE4 -S31560018A009002200A400001EE01000000921522004A -S31560018A10920C4009901000189410001196100012E3 -S31560018A207FFFE2ED981522AA80A2200012800051F4 -S31560018A30010000009215A10090100018920C4009E7 -S31560018A4094100011961000127FFFE2E39815A1556C -S31560018A5080A2200012800044010000007FFFA1F780 -S31560018A6001000000912A20047FFFA1E09002200B03 -S31560018A70901000137FFFE2BF9215A15580A22000DE -S31560018A801280003501000000901000137FFFE2B9EB -S31560018A90921522AA80A220001280002C01000000FB -S31560018AA07FFFA1E601000000912A20047FFFA1CF8C -S31560018AB0900220099010001392100017941000156F -S31560018AC07FFFE2B8961522AA80A220001280001BC1 -S31560018AD00100000090100013921000179410001509 -S31560018AE07FFFE2B09615A15580A220000280002585 -S31560018AF0010000003080000E7FFFA1C190102001AF -S31560018B00292AAAAA92100010901000187FFFE28904 -S31560018B10941522AA80A2200002BFFFB601000000C0 -S31560018B207FFFA1B79010200230BFFFB27FFFA1B4D3 -S31560018B3090102008308000137FFFA1B190102007AC -S31560018B4010BFFFE6901000137FFFA1AD90102006C5 -S31560018B5030BFFFD47FFFA1AA9010200510BFFFCCC4 -S31560018B60901000137FFFA1A69010200430BFFFBCB8 -S31560018B707FFFA1A39010200310BFFFB09215A10043 -S31560018B807FFFFB3CB0102000400001900100000017 -S31560018B900100000081C7E00881E800009DE3BF98FD -S31560018BA07FFFA18D1100412CDA062004D80620042E -S31560018BB09A0B6003993B200282102007C226200887 -S31560018BC0BA036001B20B27FF010000009010200A72 -S31560018BD0C02600007FFFA18501000000170002008A -S31560018BE082103FFFC226000B032AAAAA1B15555500 -S31560018BF0D806000BAC102000821062AA9A13615548 -S31560018C00AA0B000180A5801D16800038A80B000DF7 -S31560018C109612E020A72E600880A4E0000480000C74 -S31560018C20A2102000832DA0028200401819000200C4 -S31560018C309A10000BE820400CEA20400DA204601057 -S31560018C4080A4C01114BFFFFC82006040AC05A00186 -S31560018C5080A5801D06BFFFF280A4E000AC10200055 -S31560018C6080A5801D1680002103000200B8106020D7 -S31560018C70A72E6008AE10001880A4E00004800017DB -S31560018C80A210200003000200A4060001A005C01C7A -S31560018C90C2048000A2046010A404A04080A0401415 -S31560018CA002800004901020017FFFA15501000000A1 -S31560018CB0C2040000A004204080A040150280000488 -S31560018CC0901020017FFFA14E0100000080A4C01119 -S31560018CD014BFFFF001000000AC05A00180A5801D56 -S31560018CE006BFFFE6AE05E0047FFFA1409010200CB1 -S31560018CF0AC10200080A5801D16800088031555558F -S31560018D009E1061551B000800032AAAAA9A136004E3 -S31560018D10901062AAA72E600880A4E0000480000E6D -S31560018D20A2102000832DA0138200401813000800B2 -S31560018D309410000F9610000D98100008D420400979 -S31560018D40D820400BA204600280A4C01114BFFFFCAE -S31560018D5082006008AC05A00180A5801D06BFFFF0FA -S31560018D6080A4E000AC10200080A5801D1680006BF9 -S31560018D7003155555B81061551B000800032AAAAAA8 -S31560018D80B6136004B41062AAA72E600880A4E0003E -S31560018D9004800019A2102000832DA013A0004018A2 -S31560018DA02F000800AA10001CA810001BA410001AAE -S31560018DB0C2040017A204600280A04015028000046C -S31560018DC0901020037FFFA10E01000000C204001471 -S31560018DD0A004200880A040120280000490102003A5 -S31560018DE07FFFA1070100000080A4C01114BFFFF13D -S31560018DF001000000AC05A00180A5801D06BFFFE54E -S31560018E0080A4E000AC10200080A5801D1680004380 -S31560018E10030008009E1060041B155555032AAAAA73 -S31560018E209A136155901062AAA72E600880A4E0008B -S31560018E300480000EA2102000832DA013820040182A -S31560018E40130008009410000F9610000D981000088A -S31560018E50D620400AD8204009A204600280A4C0112D -S31560018E6014BFFFFC82006008AC05A00180A5801DCF -S31560018E7006BFFFF080A4E000AC10200080A5801D35 -S31560018E801680002603155555B81061551B2AAAAAE6 -S31560018E9003000800A72E6008B61362AAB410600426 -S31560018EA080A4E00004800019A2102000832DA01385 -S31560018EB0A00040182F000800AA10001CA810001B73 -S31560018EC0A410001AC2040012A204600280A0401518 -S31560018ED002800004901020047FFFA0C901000000F9 -S31560018EE0C2040017A004200880A040140280000478 -S31560018EF0901020047FFFA0C20100000080A4C01171 -S31560018F0014BFFFF101000000AC05A00180A5801D22 -S31560018F1006BFFFE580A4E00082102005C226200876 -S31560018F201B200000DA26000081C7E00881E8000006 -S31560018F3081C3E0089144400080800000151801401B -S31560018F409412A18090102000921022468180000028 -S31560018F50010000000100000001000000D002800055 -S31560018F609122400881C3E008010000008180000071 -S31560018F70901020018090200180D020011280002C69 -S31560018F800100000080D23FFF168000290100000029 -S31560018F9080DA3FFF9340000080A27FFF12800024A9 -S31560018FA00100000080D23FFF9348000093326014B5 -S31560018FB0920A600F80A260081280001D0100000005 -S31560018FC08180000090102001945220049452A004E4 -S31560018FD09452A00496A2A0401280001501000000E0 -S31560018FE0818000009010200280A000003280001075 -S31560018FF09052000880A220021280000D010000003C -S31560019000818000009010200280A000000100000015 -S31560019010328000079052000880A22002128000046C -S315600190200100000081C3E0089010200181C3E008BF -S31560019030901000001315555592126155A582400096 -S31560019040010000000100000001000000954480005D -S3156001905080A2400A1280004301000000923A40005B -S31560019060A58240000100000001000000010000002F -S315600190709544800080A2400A1280003A01000000F7 -S315600190801100003F901223FFA5800000818000003F -S3156001909001000000010000000100000093F23FFFA3 -S315600190A09A10000993F23FFF93F23FFF93F23FFF5D -S315600190B093F23FFF93F23FFF93F23FFF93F23FFF3D -S315600190C09940000097448000153FFC009412A00867 -S315600190D080A2400A1280002380A2400B12800021E8 -S315600190E080A320071280001F113FFF80901220018C -S315600190F080A340081280001B1100003F901223FFDD -S31560019100A5800000818000000100000001000000D0 -S315600191100100000093FA3FFF93FA3FFF93FA3FFF86 -S3156001912093FA3FFF93FA3FFF93FA3FFF93FA3FFFAC -S3156001913093FA3FFF994000009744800080A260083F -S315600191401280000880A260081280000680A32000B9 -S31560019150128000040100000081C3E0089010200124 -S3156001916081C3E00890100000818000009010200209 -S3156001917080A00000328000109072000880A2200258 -S315600191801280000D01000000818000009010200215 -S3156001919080A0000001000000328000079072000884 -S315600191A080A22002128000040100000081C3E00851 -S315600191B09010200181C3E00890100000C0A000401B -S315600191C081C3E00801000000110020409012200FC9 -S315600191D0D0A0004081C3E008010000009DE3BF9874 -S315600191E07FFFE12D90102008A21000087FFFE12A81 -S315600191F09010200C833C60149B3A2014A13A2018ED -S31560019200A33C6018A20C6003A00C20038208600FC7 -S315600192109A0B600F8200600A9A03600AA2046001D9 -S31560019220A0042001A32C40017FFFFFE5A12C000DC6 -S315600192307FFFE090901000117FFFE09C901000107E -S315600192407FFFF98C010000007FFFFFE081E80000ED -S315600192500100000098120009818200009AAB2FFF7D -S315600192600280002598880000992300099923000946 -S315600192709923000999230009992300099923000973 -S315600192809923000999230009992300099923000963 -S315600192909923000999230009992300099923000953 -S315600192A09923000999230009992300099923000943 -S315600192B09923000999230009992300099923000933 -S315600192C09923000999230009992300099923000923 -S315600192D09923000999230009992300099923000913 -S315600192E099230009992300099923000081C3E008A5 -S315600192F091400000992300099923000999230009E7 -S3156001930099230009992300099923000999230009E2 -S3156001931099230009992300099923000999230009D2 -S3156001932099230009992300009B400000992B200C8A -S315600193309B33601481C3E0089013400C1080000BCE -S31560019340861020008092400816800008861000086A -S31560019350809240001680000480920000168000030F -S3156001936092200009902000089A9240001280000520 -S315600193709610000891D0200281C3E0089010000089 -S3156001938080A2C00D0A8000959410000003020000BF -S3156001939080A2C0010A8000289810000080A34001C5 -S315600193A01A80000D841020019B2B600410BFFFFC06 -S315600193B0980320019A83400D1A8000078400A0015A -S315600193C0832860049B3360019A0340011080000783 -S315600193D08420A00180A3400B0ABFFFF701000000B3 -S315600193E0028000020100000084A0A00106800076D0 -S315600193F0010000009622C00D941020011080000A21 -S3156001940001000000952AA001068000059B336001DA -S315600194109622C00D108000049402A0019602C00D30 -S315600194209422A00184A0A00116BFFFF78092C0001C -S31560019430308000659B2B600480A3400B08BFFFFE54 -S315600194409883200102800065982320018092C000E4 -S31560019450952AA0040680002F9B33600196A2C00D59 -S31560019460068000179B33600196A2C00D0680000B33 -S315600194709B33600196A2C00D068000059B33600197 -S3156001948096A2C00D108000509402A00F9682C00D66 -S315600194901080004D9402A00D9682C00D06800005D5 -S315600194A09B33600196A2C00D108000479402A00B09 -S315600194B09682C00D108000449402A0099682C00D68 -S315600194C00680000B9B33600196A2C00D06800005E5 -S315600194D09B33600196A2C00D1080003B9402A007E9 -S315600194E09682C00D108000389402A0059682C00D48 -S315600194F0068000059B33600196A2C00D1080003284 -S315600195009402A0039682C00D1080002F9402A001E0 -S315600195109682C00D068000179B33600196A2C00D2E -S315600195200680000B9B33600196A2C00D0680000584 -S315600195309B33600196A2C00D108000239402BFFF89 -S315600195409682C00D108000209402BFFD9682C00DE8 -S31560019550068000059B33600196A2C00D1080001A3B -S315600195609402BFFB9682C00D108000179402BFF96A -S315600195709682C00D0680000B9B33600196A2C00DDA -S31560019580068000059B33600196A2C00D1080000E17 -S315600195909402BFF79682C00D1080000B9402BFF54E -S315600195A09682C00D068000059B33600196A2C00DB0 -S315600195B0108000059402BFF39682C00D10800002F0 -S315600195C09402BFF198A3200116BFFFA28092C0004A -S315600195D0268000029602C0098090C00026800002A3 -S315600195E09620000B81C3E0089010000B92100008D2 -S315600195F09010200094102000961020008213C00065 -S31560019600400000039E104000010000009DE3BF98EA -S3156001961023180143400005F6901460F40318006DA9 -S31560019620E0006178D004214880A220002280002DCC -S315600196309004214CD602200480A2E01F1480001DF4 -S315600196400100000080A620001280000B9402208891 -S31560019650832AE0029A02E00182004008DA222004AD -S31560019660F2206008400005FA901460F41080002230 -S31560019670B0102000821020019328400B992AE00245 -S31560019680DA02A1009A1340098203000AF62060807B -S31560019690F422800C80A6200212BFFFEEDA22A1001E -S315600196A0C202A1048210400910BFFFEAC222A104CE -S315600196B0400000139010219080A220000280000BD0 -S315600196C096102000C2042148C2220000D0242148FD -S315600196D0C0222004C022218810BFFFDBC022218C5A -S315600196E010BFFFD5D0242148400005D9901460F4FD -S315600196F0B0103FFF81C7E00881E8000092100008C2 -S3156001970003180141D00063708213C0004000000A53 -S315600197109E104000010000009210000803180141EC -S31560019720D00063708213C000400002199E10400091 -S31560019730010000009DE3BF988206600B80A0601661 -S31560019740A610001818800003A0087FF8A01020104A -S3156001975080A400199A4020008334201F8090400D18 -S31560019760128001B0B0102000400001B090100013CB -S3156001977080A421F71880001799342009391801410E -S315600197808217238098040001F003200C80A6000C48 -S315600197900280004E9F342003C206200494087FFC99 -S315600197A09A06000AC203600482106001D006200C8A -S315600197B0D2062008D2222008C2236004D022600C7F -S315600197C0400001A09010001310800196B006200899 -S315600197D080A32000128000289F342003391801419C -S315600197E09B2BE003821723809A0340011080000AB5 -S315600197F0F003600C94087FFC9622801080A2E00F33 -S315600198001480010980A2E00036BFFFE79A06000ACC -S31560019810F006200C80A6000D32BFFFF7C2062004B9 -S315600198209E03E001251801419814A388F0032008DE -S3156001983080A6000C0280005D833BE01FC206200407 -S3156001984094087FFC9622801080A2E00F1480009F0E -S3156001985080A2E000D823200C06800023D8232008AC -S315600198609A06000AC20360048210600110BFFFD528 -S31560019870C22360048334200680A3200408BFFFD876 -S315600198809E00603880A3201408BFFFD59E03205B2D -S315600198908334200C80A3205408BFFFD19E00606EE4 -S315600198A08334200F80A3215408BFFFCD9E006077CB -S315600198B08334201280A3255408BFFFC99E00607CB3 -S315600198C010BFFFC79E10207E98062008F003200C6B -S315600198D080A6000C32BFFFB2C206200410BFFFD2C1 -S315600198E09E03E00280A2A1FF088000BE9B32A00316 -S315600198F09732A00980A2E000228000179617238084 -S315600199008332A00680A2E004088000129A006038C3 -S3156001991080A2E0140880000F9A02E05B8332A00CFB -S3156001992080A2E0540880000B9A00606E8332A00F1B -S3156001993080A2E154088000079A0060778332A01202 -S3156001994080A2E554088000039A00607C9A10207E0C -S3156001995096172380832B60039000400BD202200868 -S3156001996080A240082280010F99336002C20260041E -S3156001997082087FFC80A0400A28800007D002600C24 -S31560019980D202600880A2400832BFFFFAC2026004B8 -S31560019990D002600CD026200CD2262008F022600C62 -S315600199A0F0222008833BE01F8330601E8203C001E2 -S315600199B03918014183386002981723809A10200173 -S315600199C0932B4001D803200480A2400C1880004BE1 -S315600199D0AE172380808B00091280000D03180141A8 -S315600199E0820BFFFC92024009808B000912800007FE -S315600199F09E0060048210000C920240098088400932 -S31560019A0002BFFFFE9E03E00403180141A2106380BA -S31560019A10A8100011832BE003980040119010000FED -S31560019A209A10000C1080000AF003600C94087FFC09 -S31560019A309622801080A2E00F1480007D80A2E00053 -S31560019A403680008B9A06000AF006200C80A6000D6F -S31560019A5032BFFFF7C20620049E03E001808BE0035C -S31560019A6012BFFFF19A036008808A200398033FF8CA -S31560019A70028000D490023FFFC203200880A0400C00 -S31560019A8002BFFFFB808A200392024009C2052004BF -S31560019A9080A24001188000183918014180A2600037 -S31560019AA0128000068088400910800014AE1723805A -S31560019AB09E03E0048088400922BFFFFE92024009AE -S31560019AC010BFFFD6832BE003821420019406001099 -S31560019AD0C2262004D423200CD42320088212E0015C -S31560019AE0D622800BD822A008C222A00410BFFF355F -S31560019AF0D822A00CAE172380F005E008C206200428 -S31560019B00AA087FFC80A540109A4020009625401047 -S31560019B1080A2E00F148000428210200180934001F0 -S31560019B200280002703180143DA0061982D1801416C -S31560019B309A04000DC205A378A810001580A07FFFC6 -S31560019B40A203601002800004A406001582046FFF60 -S31560019B50A208700090100013400000C0921000111E -S31560019B6080A23FFF02800008B210000880A20012A6 -S31560019B701A8000463B18014380A6001722800044E4 -S31560019B80C207616882172380D8006008DA0320045F -S31560019B909A0B7FFC80A340109840200096234010CA -S31560019BA080A2E00F04800003821020018210200051 -S31560019BB080930001128000980100000098172380AD -S31560019BC0F003200882142001C22620049A060010A0 -S31560019BD08212E001C223600410BFFEFADA23200874 -S31560019BE098033FF8832B60039000400C9B3360021F -S31560019BF0821020018328400DD2022008DA03200456 -S31560019C009A134001D026200CD2262008F022600C3F -S31560019C10DA23200410BFFF64F022200810BFFFC0C2 -S31560019C208210200010BFFEFF9E03FFFFD006200CAE -S31560019C30D20620089A142001940600108214A38883 -S31560019C40D2222008D022600CDA262004D420600CAF -S31560019C50D42060089A12E001D622800BC222A008A5 -S31560019C60DA22A00410BFFED7C222A00CC203600490 -S31560019C7082106001D006200CD2062008C22360043F -S31560019C8010BFFECFD2222008C20761688200401150 -S31560019C9080A640120280004FC2276168C205A37880 -S31560019CA080A07FFF02800045C20761689A26401244 -S31560019CB08200400DC22761689A8E600702800005A6 -S31560019CC0A410200082102008A420400DB206401284 -S31560019CD09A0640119A0B6FFF030000048220400D23 -S31560019CE0A4048001901000134000005C92100012E1 -S31560019CF080A23FFF2280003FA4102000822200192B -S31560019D009000401282172380DA0761689A03401235 -S31560019D1080A60001F2206008DA27616802800037B8 -S31560019D208212200180A5600F38800005C22660047A -S31560019D308210200110BFFF94C2266004C20620046F -S31560019D409A057FF4A80B7FF882086001821040149F -S31560019D50C22620049A06001482102005C2236008D8 -S31560019D6080A5200F18800027C223600419180143BB -S31560019D70DA076168C203219480A34001388000023A -S31560019D80DA23219419180143C203219080A340016B -S31560019D9038BFFF7DDA23219010BFFF7C82172380B5 -S31560019DA09A102001C202E0049B2B400C8210400DE8 -S31560019DB010BFFEF9C222E00410BFFFC0F225A378EE -S31560019DC0C20460048228400910BFFF30C2246004C7 -S31560019DD0808E6FFF12BFFFB3C205A3789004401453 -S31560019DE0DA05E0088212200110BFFFE1C223600498 -S31560019DF010BFFFC39010001910BFFFDDC2266004BB -S31560019E0092062008400000629010001310BFFFD92F -S31560019E10191801434000000B90100013B010200088 -S31560019E2081C7E00881E80000111801429012238879 -S31560019E308213C000400003EE9E1040000100000046 -S31560019E4011180142901223888213C0004000040059 -S31560019E509E104000010000009DE3BF982118014457 -S31560019E60C02421704000020D9010001980A23FFFAE -S31560019E7012800006C204217080A060000280000387 -S31560019E8001000000C226000081C7E00891E80008D1 -S31560019E909DE3BF987FFFFFE590100018031801410D -S31560019EA0A2106380DA046008C2036004A0087FFC24 -S31560019EB0B2240019B2066FEFB20E7000B2067000DE -S31560019EC09210200080A66FFF0480000A901000188F -S31560019ED07FFFFFE201000000C204600882004010BB -S31560019EE080A0400892200019028000059010001899 -S31560019EF07FFFFFD4B0102000308000237FFFFFD7A3 -S31560019F00901000188224001980A23FFF8210600120 -S31560019F1092102000191801430280000B901000185E -S31560019F20DA046008C2236004C203216882204019F2 -S31560019F30901000187FFFFFC3C223216810800012B2 -S31560019F40B01020017FFFFFC50100000098100008D6 -S31560019F50D6046008A023000B9010001880A4200F7F -S31560019F6004BFFFE4B214200103180141DA006378EB -S31560019F709A23000D03180143DA20616810BFFFDDE3 -S31560019F80F222E00481C7E00881E800009DE3BF9802 -S31560019F9080A660000280009DA41000187FFFFFA3C9 -S31560019FA090100018A0067FF8D6042004900AFFFEE0 -S31560019FB01918014194040008A2132380DA02A0044F -S31560019FC0C204600880A0400A028000449E0B7FFCA8 -S31560019FD0808AE001DE22A0041280000CB01020000D -S31560019FE0F2067FF8A024001982046008DA042008CA -S31560019FF080A340010280007D90020019D204200CEA -S3156001A000DA226008D223600C8202800FDA006004D3 -S3156001A010808B60011280000A8212200180A62000D6 -S3156001A020028000229002000FDA02A008D202A00C80 -S3156001A030DA226008D223600C82122001C224200435 -S3156001A04080A6200002800005D0240008B01000120E -S3156001A0507FFFFF7C81E8000080A221FF1880003627 -S3156001A060973220099B32200398132380832B600348 -S3156001A0709200400C9B336002821020018328400DC0 -S3156001A080D6026008DA0320049A134001D224200C18 -S3156001A090D6242008E022E00CDA232004E0226008BE -S3156001A0A010BFFFECB010001203180141DA02A008DC -S3156001A0B08210638880A3400132BFFFDED202A00C0A -S3156001A0C0E023600CE0236008DA242008DA24200CFF -S3156001A0D010BFFFDAB0102001808AE001128000090A -S3156001A0E09002000FF2067FF8A0240019D204200C1A -S3156001A0F0D6042008D622600890020019D222E00C0C -S3156001A10003180141DA00637C98122001E02460089B -S3156001A11080A2000D0ABFFFCFD82420040318014393 -S3156001A120D20061987FFFFF5B901000127FFFFF45B1 -S3156001A13081E8000080A2E000028000169B322003C5 -S3156001A1408332200680A2E004088000129A006038FB -S3156001A15080A2E0140880000F9A02E05B8332200C33 -S3156001A16080A2E0540880000B9A00606E8332200F53 -S3156001A17080A2E154088000079A006077833220123A -S3156001A18080A2E554088000039A00607C9A10207EC4 -S3156001A19094132380832B60039200400AD6026008E1 -S3156001A1A080A2C0090280001399336002C202E004F2 -S3156001A1B082087FFC80A0400828800007D202E00C5C -S3156001A1C0D602E00880A2C00932BFFFFAC202E004EB -S3156001A1D0D202E00CD224200CD6242008E022E00C26 -S3156001A1E010BFFFB0E022600810BFFF88B0102001E9 -S3156001A1F09A102001C202A0049B2B400C8210400DD4 -S3156001A20010BFFFF5C222A00481C7E00881E8000003 -S3156001A2109DE3BF98D206400080A2600012800004D0 -S3156001A220901000187FFFFF5A81E800007FFFFFF959 -S3156001A230010000007FFFFF5681E800000100000079 -S3156001A2409DE3BF9803180141DA00637080A6000D93 -S3156001A2500280004101000000D206204C80A260000D -S3156001A2601280001CA0102000D206214880A2600046 -S3156001A2702280000FD2062054A006214C80A24010F5 -S3156001A2802280000BD206205410800005B21000090E -S3156001A290F20640007FFFFF3E9010001880A400196F -S3156001A2A012BFFFFC92100019D206205480A26000F2 -S3156001A2B01280002501000000C206203880A06000DF -S3156001A2C0028000250100000010800017C206203CB4 -S3156001A2D0832C2002F202400180A660002280000BDE -S3156001A2E0A004200192100019F20640007FFFFF28AA -S3156001A2F09010001880A6600012BFFFFC9210001932 -S3156001A300D206204CA004200180A4200E04BFFFF2D7 -S3156001A310832C20027FFFFF1E9010001810BFFFD410 -S3156001A320D20621489FC0400090100018F20622E034 -S3156001A33080A6600002800008010000007FFFFFB573 -S3156001A34081E800007FFFFF129010001810BFFFDC4C -S3156001A350C206203881C7E00881E800009DE3BF9806 -S3156001A36080A620000280001D03180141E4062148F1 -S3156001A37080A4A00022800013C206203CE204A0044F -S3156001A380A2847FFF0C80000A832C60028200401247 -S3156001A390A0006008C20400009FC04000A0043FFC0A -S3156001A3A0A2847FFF3CBFFFFDC2040000E40480007D -S3156001A3B080A4A00032BFFFF3E204A004C206203CE1 -S3156001A3C080A0600002800007010000009FC040007D -S3156001A3D0901000183080000310BFFFE5F000637035 -S3156001A3E081C7E00881E800001080000B861020001C -S3156001A3F08092400816800008861A400880924000C4 -S3156001A40016800004809200001680000392200009E5 -S3156001A410902000089A92400012800005961000086C -S3156001A42091D0200281C3E0089010000080A2C00D87 -S3156001A4300A800095941000000302000080A2C0010A -S3156001A4400A8000289810000080A340011A80000D40 -S3156001A450841020019B2B600410BFFFFC9803200130 -S3156001A4609A83400D1A8000078400A0018328600446 -S3156001A4709B3360019A034001108000078420A0018C -S3156001A48080A3400B0ABFFFF70100000002800002B3 -S3156001A4900100000084A0A001068000760100000092 -S3156001A4A09622C00D941020011080000A0100000060 -S3156001A4B0952AA001068000059B3360019622C00D96 -S3156001A4C0108000049402A0019602C00D9422A0019E -S3156001A4D084A0A00116BFFFF78092C000308000659E -S3156001A4E09B2B600480A3400B08BFFFFE988320016D -S3156001A4F002800065982320018092C000952AA004FD -S3156001A5000680002F9B33600196A2C00D068000175E -S3156001A5109B33600196A2C00D0680000B9B336001E0 -S3156001A52096A2C00D068000059B33600196A2C00D00 -S3156001A530108000509402A00F9682C00D1080004DCD -S3156001A5409402A00D9682C00D068000059B336001C2 -S3156001A55096A2C00D108000479402A00B9682C00D92 -S3156001A560108000449402A0099682C00D0680000BFB -S3156001A5709B33600196A2C00D068000059B33600186 -S3156001A58096A2C00D1080003B9402A0079682C00D72 -S3156001A590108000389402A0059682C00D06800005E1 -S3156001A5A09B33600196A2C00D108000329402A00315 -S3156001A5B09682C00D1080002F9402A0019682C00D74 -S3156001A5C0068000179B33600196A2C00D0680000BC2 -S3156001A5D09B33600196A2C00D068000059B33600126 -S3156001A5E096A2C00D108000239402BFFF9682C00D13 -S3156001A5F0108000209402BFFD9682C00D0680000582 -S3156001A6009B33600196A2C00D1080001A9402BFFBB5 -S3156001A6109682C00D108000179402BFF99682C00D14 -S3156001A6200680000B9B33600196A2C00D0680000573 -S3156001A6309B33600196A2C00D1080000E9402BFF795 -S3156001A6409682C00D1080000B9402BFF59682C00DF4 -S3156001A650068000059B33600196A2C00D108000053F -S3156001A6609402BFF39682C00D108000029402BFF17E -S3156001A67098A3200116BFFFA28092C0002680000227 -S3156001A6809422A0018090C000268000029420000AD6 -S3156001A69081C3E0089010000A19180144DA03217495 -S3156001A6A080A36000128000068203400803180144FB -S3156001A6B09A106188DA23217482034008C2232174C7 -S3156001A6C081C3E0089010000DA7500000AE10000194 -S3156001A6D08334E00129180143E8052038A92CC01408 -S3156001A6E08215000181E000008190400001000000B8 -S3156001A6F00100000001000000E03BA000E43BA0086F -S3156001A700E83BA010EC3BA018F03BA020F43BA0284E -S3156001A710F83BA030FC3BA03881E8000082100017AE -S3156001A72081C4400081CC800001000000010000006E -S3156001A73001000000A7500000A92CE0012B1801437D -S3156001A740EA056038AB34C015AA15401481954000FE -S3156001A75001000000010000000100000081E8000026 -S3156001A76081E80000E01BA000E41BA008E81BA01024 -S3156001A770EC1BA018F01BA020F41BA028F81BA0302E -S3156001A780FC1BA03881E0000081E0000081C440002C -S3156001A79081CC8000A75000002918006CADC521044A -S3156001A7A00100000027180143A614E018E024C00048 -S3156001A7B0818C2020010000000100000001000000E2 -S3156001A7C09DE3BFA09DE3BFA09DE3BFA09DE3BFA0A6 -S3156001A7D09DE3BFA09DE3BFA09DE3BFA081E800000C -S3156001A7E081E8000081E8000081E8000081E800005E -S3156001A7F081E8000081E8000027180143A614E018EB -S3156001A800C024C000E203A068A4046004E223A0643B -S3156001A810E423A06810800262AC100000291801428E -S3156001A820A81523FCC2252000C8252004E025201098 -S3156001A830E2252014E4252018E825201C81E8000083 -S3156001A8408348000082106F0081886020010000004B -S3156001A850010000000100000009180143C801203809 -S3156001A86081E000008821200180A920FF0280000389 -S3156001A870010000000100000080A1000012BFFFF985 -S3156001A8800100000009180143C801203881E8000071 -S3156001A89080A920FF02800003010000000100000082 -S3156001A8A08821200180A1000012BFFFF9010000008C -S3156001A8B081E0000029180142A81523FCC80520047F -S3156001A8C0C2052000E0052010E2052014E4052018E9 -S3156001A8D0C025201C818C20000100000001000000C1 -S3156001A8E00100000081C4800081CCA004A0142F0067 -S3156001A8F0818C0000010000000100000001000000E1 -S3156001A90081C4800081CCA00480A66002128000050B -S3156001A910A8142F00818D0000B01420203080001F04 -S3156001A92080A6600312800006A80E2F00AA2C2F00B5 -S3156001A930A8154014818D00003080001880A660043F -S3156001A94012800008A9480000A8152040818D0000EA -S3156001A9500100000001000000010000003080000FCE -S3156001A96080A6600512800008A9480000A82D204035 -S3156001A970818D00000100000001000000010000005F -S3156001A9803080000680A66006128000030100000088 -S3156001A99030BFFFA391D0200081C4800081CCA00488 -S3156001A9A09210200381C3E00891D020029210200208 -S3156001A9B081C3E00891D020029210200681C3E0088D -S3156001A9C091D0200281C3E0080100000081C3E00844 -S3156001A9D00100000081C3E00801000000AE25A0105F -S3156001A9E0A75000002D18006AAC15A1F02918006C5B -S3156001A9F081C522AC01000000111801439012202488 -S3156001AA00D202000092026001D2220000932DE0087A -S3156001AA10902C2F0092120009111801439012201CEC -S3156001AA20D002000080A000082280000292126F000E -S3156001AA30818A602001000000010000000100000021 -S3156001AA4090100017400000319203A06092142F000D -S3156001AA50818A602001000000010000000100000001 -S3156001AA601118014390122024D20200009222600143 -S3156001AA70D22200001080022DAC1000001B18014488 -S3156001AA809A13602C912A2002C2034008C222600CEC -S3156001AA9081C3E008D22340089DE3BF9803180144AF -S3156001AAA08210602C992E60021B180143972E600458 -S3156001AAB0D800400C9A13622C901000199202C00DB6 -S3156001AAC080A6601F1480000F82102000108000068F -S3156001AAD080A320002280000AC2024000D803200C15 -S3156001AAE080A3200012BFFFFC80A300097FFFFFE463 -S3156001AAF0F02240001080000382102000F022400006 -S3156001AB0081C7E00891E800019DE3BF981B180143E6 -S3156001AB1082136028D800600480A300180280004474 -S3156001AB20C203602880A6200022800002B010000CBB -S3156001AB3003180144A32E20028210602CE00040110C -S3156001AB4080A420000280003D03180143108000129A -S3156001AB50A41061A8D2042008941000199FC30000B4 -S3156001AB609010001803180143C20061A080A0600024 -S3156001AB701280002B01000000C204801182007FFF59 -S3156001AB80C2248011E004200C80A420000280002BE6 -S3156001AB9001000000D804000080A3200022BFFFFB53 -S3156001ABA0E004200C03180143DA00622880A36000E8 -S3156001ABB0128000089610001203180143821061A8E2 -S3156001ABC0DA00401180A3600032BFFFF0E004200C80 -S3156001ABD0DA02C011031801439A036001C20061A43D -S3156001ABE080A0600002BFFFDCDA22C0119FC0400076 -S3156001ABF001000000D8040000D20420089410001956 -S3156001AC009FC300009010001803180143C20061A0A1 -S3156001AC1080A0600022BFFFDAC20480119FC040009D -S3156001AC200100000010BFFFD6C2048011DA0060C0C7 -S3156001AC3010BFFFBDB00B601F81C7E00881E800004F -S3156001AC408C10000FA74800008B34E0188A09600F4A -S3156001AC5080A160030280000C0B1801438A116030E9 -S3156001AC600920000088112070C82140000B1801439B -S3156001AC708A1160500920000088112040C8214000D7 -S3156001AC80108000399010200192102006400001DDED -S3156001AC900100000080A0000802800033010000006E -S3156001ACA0C2022010113FFC0082084008110003FC1B -S3156001ACB08410400890100002921020019410200C1C -S3156001ACC0400001E60100000080A000080280002625 -S3156001ACD001000000400001F6921000010B180143CB -S3156001ACE08A116030D221400090100002921020013A -S3156001ACF094102011400001D90100000080A00008D5 -S3156001AD000280001901000000400001E99210000173 -S3156001AD10920260100B1801438A116050D2214000E3 -S3156001AD2090100002921020019410200D400001CB7A -S3156001AD300100000080A000080280000B01000000F5 -S3156001AD40400001DB921000010B1801438A11602853 -S3156001AD50D2214000D40260109532A010940AA00F4F -S3156001AD60D42160049E10000681C3E0080100000042 -S3156001AD7003180143821060488210200191D020009F -S3156001AD8081C3E008010000009DE3BF9803180144F8 -S3156001AD90C20060C8901000189210001980A060006F -S3156001ADA002800005B01020009FC040000100000035 -S3156001ADB0B010000881C7E00881E800009DE3BF98F4 -S3156001ADC003180144C20060C49010001880A060009E -S3156001ADD002800005B01020009FC040000100000005 -S3156001ADE0B010000881C7E00881E800009DE3BF98C4 -S3156001ADF003180144C20060BC9010001880A0600076 -S3156001AE0002800005B01020009FC0400001000000D4 -S3156001AE10B010000881C7E00881E800009DE3BF9893 -S3156001AE2003180144C20060C09010001880A0600041 -S3156001AE3002800005B01020009FC0400001000000A4 -S3156001AE40B010000881C7E00881E800009DE3BF9863 -S3156001AE5003180144C20060B89010001880A0600019 -S3156001AE6002800005B01020009FC040000100000074 -S3156001AE70B010000881C7E00881E800009DE3BF9833 -S3156001AE8003180144C20060B49010001880A06000ED -S3156001AE9002800005B01020009FC040000100000044 -S3156001AEA0B010000881C7E00881E800009DE3BF9803 -S3156001AEB003180144C20060B09010001880A06000C1 -S3156001AEC002800005B01020009FC040000100000014 -S3156001AED0B010000881C7E00881E800009DE3BF98D3 -S3156001AEE003180144C20060AC90100018921000195A -S3156001AEF080A0600002800005B01020009FC0400065 -S3156001AF0001000000B010000881C7E00881E8000078 -S3156001AF10010000000318006B821063E09FC04000CF -S3156001AF200100000003180000821060008198400053 -S3156001AF300318006C821060649FC04000010000002D -S3156001AF400318006B821063D09FC0400001000000AF -S3156001AF508B4800008B3160188A09600380A1600309 -S3156001AF6012800007010000008B4440008B31601C99 -S3156001AF7080A1400012800006010000007FFFFF31C2 -S3156001AF80010000007FFF9879010000009C23A0402A -S3156001AF907FFF981C010000008210200191D02000E3 -S3156001AFA00100000029000004A68C00143280000311 -S3156001AFB0A02C001491D02000818C000001000000BB -S3156001AFC0010000000100000081C4800081CCA00462 -S3156001AFD081C3E0080100000081C1E00801000000B2 -S3156001AFE0A74800008B34E0188A09600380A16003DA -S3156001AFF0128000080100000021180143A0142040BE -S3156001B000A2102003E22400008B4440001080000857 -S3156001B01021180143A0142040A2102002E22400005E -S3156001B02021200000E60420248B34E0148A09601F85 -S3156001B03027180143A614E038CA24C0008A016001BA -S3156001B04027180143A614E034CA24C0002718014317 -S3156001B050A614E03C8A216002CA24C00081C3E008CC -S3156001B0600100000081C3E008010000008348000080 -S3156001B070833060188208600380A060031280000636 -S3156001B0800100000083444000050000088228400258 -S3156001B090A3804000881000000918006B81C1231449 -S3156001B0A0010000009DE3BF980318006D1B18006D39 -S3156001B0B0A01061609A13616080A4000D1A8000106F -S3156001B0C0A210000D10800006C204000080A40011C9 -S3156001B0D01A80000B01000000C204000080A060001D -S3156001B0E002BFFFFBA00420049FC0400001000000D6 -S3156001B0F080A400112ABFFFFAC204000081C7E008DC -S3156001B10081E80000AA27A0B0E0256060E2256064BE -S3156001B110E4256068C2256074C43D6078C83D60807E -S3156001B120CC3D608885400000C425606CF03D609030 -S3156001B130F43D6098F83D60A0FC3D60A8A810200130 -S3156001B140A92D0010808D00130280001301000000FC -S3156001B1508534E00107180143C600E038A72CC00317 -S3156001B1608414C0028408A0FF81E000008190A000E1 -S3156001B170E03BA000E43BA008E83BA010EC3BA01834 -S3156001B180F03BA020F43BA028F83BA030FC3BA03864 -S3156001B19081E8000081C5A0089C10001505180143CF -S3156001B1A08410A19CC400800080A0800002800004FD -S3156001B1B0010000009FC080009203A060818C200086 -S3156001B1C0821020028328401005180143C400A03470 -S3156001B1D085304002821040028550000080888001DF -S3156001B1E0028000208328A00107180143C600E038C9 -S3156001B1F08530800382104002820860FF8190600082 -S3156001B200C203A06C81806000F01BA090F41BA09823 -S3156001B210F81BA0A0FC1BA0A8C203A074C41BA07845 -S3156001B220C81BA080CC1BA088E003A060E203A064D9 -S3156001B230E403A06881E80000E01BA000E41BA0080D -S3156001B240E81BA010EC1BA018F01BA020F41BA02883 -S3156001B250F81BA030FC1BA0381080000F81E00000B5 -S3156001B260C203A06C81806000F01BA090F41BA098C3 -S3156001B270F81BA0A0FC1BA0A8C203A074C41BA078E5 -S3156001B280C81BA080CC1BA088E003A060E203A06479 -S3156001B290E403A068818C2000010000000100000029 -S3156001B2A00100000081C4400081CC8000AA27A0B0C3 -S3156001B2B0C2256074C43D6078C83D6080CC3D6088BD -S3156001B2C085400000C425606CA8102001A92D0010DE -S3156001B2D0808D001302800013010000008534E001B7 -S3156001B2E007180143C600E038A72CC0038414C002C6 -S3156001B2F08408A0FF81E000008190A000E03BA000EF -S3156001B300E43BA008E83BA010EC3BA018F03BA02072 -S3156001B310F43BA028F83BA030FC3BA03881E8000054 -S3156001B32081C5A0089C100015051801438410A19CD5 -S3156001B330C400800080A0800002800004010000003B -S3156001B3409FC080009203A060818C20008210200241 -S3156001B3508328401005180143C400A034853040029B -S3156001B36082104002855000008088800102800019A9 -S3156001B3708328A00107180143C600E03885308003A1 -S3156001B38082104002820860FF81906000C203A06C57 -S3156001B39081806000C203A074C41BA078C81BA08012 -S3156001B3A0CC1BA08881E80000E01BA000E41BA0087C -S3156001B3B0E81BA010EC1BA018F01BA020F41BA02812 -S3156001B3C0F81BA030FC1BA0381080000881E000004B -S3156001B3D0C203A06C81806000C203A074C41BA07804 -S3156001B3E0C81BA080CC1BA088818C200001000000B6 -S3156001B3F0010000000100000081C4400081CC800092 -S3156001B400821000089A10380096102000912AE005F3 -S3156001B41098034008D40340089132A01880A2000125 -S3156001B420328000089602E0019132A00C900A2FFF4B -S3156001B43080A20009028000079410000C9602E001C8 -S3156001B44080A2E00728BFFFF3912AE005941020004F -S3156001B45081C3E0089010000A82100008981020004D -S3156001B460912B20039A004008D60040089132E018DB -S3156001B47080A2000932800008980320019132E00C15 -S3156001B480900A2FFF80A2000A028000079610000D25 -S3156001B4909803200180A3200F28BFFFF3912B20037F -S3156001B4A09610200081C3E0089010000BD40220049E -S3156001B4B0173FFC00920A400B900A800B9132200CD8 -S3156001B4C0921240081100003F901223F0940A8008FE -S3156001B4D0952AA0049412800B920A400A81C3E0085F -S3156001B4E0901000099DE3BF980318006D82106148B2 -S3156001B4F0DA007FFC80A37FFF02800009A0007FFC49 -S3156001B5008210000D9FC04000A0043FFCC2040000F1 -S3156001B51080A07FFF12BFFFFC0100000081C7E00829 -S3156001B52081E800009DE3BF9881C7E00881E80000DB -S3156001B53000000000000000000000000000000000A4 -S3156001B54000000002FFFFFFFF000000000000000096 -S3156001B55000000002FFFFFFFF000000000000000086 -S3156001B56040080000000000003CD203AF9EE756167B -S3156001B5703E7AD7F29ABCAF4860050220000000000F -S3156001B580430000009DE3BFA07FFF96DB0100000042 -S3156001B5907FFFFFD50100000081C7E00881E8000058 -S3156001B5A09DE3BFA07FFF96B60100000081C7E0085A -S3156001B5B081E80000000000000000000000000000BB -S315600200000000000100000000000000006001B55819 -S315600200102000000000000000000000000000000058 -S315600200200000000000000000000000000000000068 -S315600200300000000000000000000000000000000058 -S315600200400000000000000000000000000000000048 -S315600200500000000000000000000000010000000037 -S315600200600000000000000000000000000000000028 -S315600200700000000000000000000000000000000018 -S315600200800000000000000000000000000000000008 -S3156002009000000000000000000000000000000001F7 -S315600200A000000000000000000000000000000000E8 -S315600200B000000000000000000000000000000000D8 -S315600200C000000000000000000000000000000000C8 -S315600200D000000000000000000000000000000000B8 -S315600200E00000000100000000000000410000000066 -S315600200F0343074693934612B307967697975303592 -S315600201007968617035796934682B612B69697978A8 -S315600201106869346B35396A30713930356A6B6F7933 -S3156002012070686F70746A72686961346979302B3489 -S315600201300000000000000000000000010000000056 -S3156002014040000000000000004008000000000000BF -S31560020150401800000000000080000000000000005F -S315600201600000000000000000BFF000000000000078 -S31560020170BF800000000000000000000000000000D8 -S315600201800000000000000000000000000000000007 -S315600201903FF0000000000000400800000000000080 -S315600201A03FF0000040000000000000000000000078 -S315600201B03F80000040400000000000000000000098 -S315600201C000000000000000000000000000000000C7 -S315600201D0000000000000000048000001000000006E -S315600201E0480000000000000046C000000000000059 -S315600201F03FF0000000000000400000000000000028 -S3156002020040080000000000003F800000000000007F -S31560020210529000000000000052900FF807F60DEBB6 -S3156002022052901FE03F61BAD052902FB8D4E30F4884 -S3156002023052903F81F636B80C52904F3BD03C0A64DE -S3156002024052905EE68EFAD48B52906E825DA8FC2B3B -S3156002025052907E0F66AFED0752908D8DD3B1D9AABB -S3156002026052909CFDCD8ED0095290AC5F7C69A3C83A -S315600202705290BBB307ACAFDB5290CAF8960E710DC3 -S315600202805290DA304D95FB065290E95A539F492CAB -S315600202905290F876CCDF6CD952910785DD689A293F -S315600202A052911687A8AE14A35291257C5187FD09F7 -S315600202B052913463FA37014E5291433EC467EFFB63 -S315600202C05291520CD1372FEB529160CE41341D744C -S315600202D052916F8334644DF952917E2BCA46BAB9F4 -S315600202E052918CC821D6D3E352919B58598F7C9FE9 -S315600202F05291A9DC8F6DF1045291B854E0F496A044 -S315600203005291C6C16B2DB8705291D5224AAE2EE17A -S315600203105291E3779B97F4A85291F1C1799CA8FF19 -S31560020320529200000000000052920E33499A21A9AF -S3156002033052921C5B70D9F82452922A788FC76DE567 -S315600203405292388AC0059C28529246921AD4EA4939 -S315600203505292548EB9151E8552926280B347609648 -S315600203605292706821902E9A52927E451BB944C36E -S3156002037052928C17B9337834529299E01118857576 -S315600203805292A79E3A2CD2E65292B5524AE1278EF3 -S315600203905292C2FC595456A75292D09C7B54E03E6C -S315600203A05292DE32C66287415292EBBF4FAFDD4B4D -S315600203B05292F9422C23C47E529306BB705AE7C30B -S315600203C05293142B30A929AB52932191811B0A4176 -S315600203D052932EEE7577041652933C42213EE0C943 -S315600203E05293498C97B10540529356CDEBC9B5E20B -S315600203F0529364063044530652937135779C8DCB83 -S3156002040052937E5BD40F95A152938B79579D3EABE7 -S315600204105293988E1409212E5293A59A1ADBB257DB -S315600204205293B29D7D6356625293BF984CB56C7778 -S315600204305293CC8A99AF54535293D97474F76DF22E -S315600204405293E655EEFE13675293F32F17FE8D0411 -S31560020450529400000000000052940CC8B6D657C2EF -S31560020460529419894C2329F052942641CF5695729B -S31560020470529432F24FB01C7A52943F9ADC3F79CE54 -S3156002048052944C3B83E57153529458D455549C1AFA -S31560020490529465655F122FF6529471EEAF76C2C6BC -S315600204A052947E7054AF098952948AEA5CBC935F17 -S315600204B05294975CD57680885294A3C7CC8A358A43 -S315600204C05294B02B4F7C0A885294BC876BA7F6EC89 -S315600204D05294C8DC2E4239805294D529A457FCFC2A -S315600204E05294E16FDACFF9375294EDAEDE6B10FEBD -S315600204F05294F9E6BBC4ECB3529506177F5491BB8E -S3156002050052951241356CF6E052951E63EA3D95B0FE -S3156002051052952A7FA9D2F8EA5295369480174810E6 -S31560020520529542A278D2D03652954EA99FAC8A0F86 -S3156002053052955AAA002A9D5A529566A3A5B2E1B16E -S31560020540529572969B8B5CD852957E82ECDABE8D02 -S3156002055052958A68A4A8D9F352959647CDDF1CA511 -S315600205605295A220734903775295ADF29F948CFB04 -S315600205705295B9BE5D52A9DA5295C583B6F7AB03F9 -S315600205805295D142B6DBADC55295DCFB673B05DFC2 -S315600205905295E8ADD236A58F5295F45A01D483B4FA -S315600205A0529600000000000052960B9FD68A455470 -S315600205B0529617398F2AAA48529622CD337F0FE870 -S315600205C052962E5ACD0C3EBE529639E2653E421B7B -S315600205D0529645640568C1C3529650DFB6C759F450 -S315600205E052965C55827DF1D2529667C57199104BCF -S315600205F05296732F8D0E2F7752967E93DDBC0E73B5 -S31560020600529689F26C6B01D05296954B41CD4293CC -S315600206100BC0A4068F346C9B0BC093731C18544793 -S315600206200BC083008E183C230BC072AE83A9704A3E -S315600206300BC0627C9CC166FF0BC0526A7ACE64A410 -S315600206400BC04277C0B04ADA0BC032A412B191A095 -S315600206500BC022EF168069500BC0135873280473BF -S315600206600BC003DFD10A08480BBFE909B3B04632B3 -S315600206700BBFCA8E711B8E880BBFAC4D32D4143041 -S315600206800BBF8E4553D34B1B0BBF7076318237EF50 -S315600206900BBF52DF2BADF99C0BBF357FA47C936CED -S315600206A00BBF18570061F5EB0BBEFB64A61545152B -S315600206B00BBEDEA7FE865A2B0BBEC22074D37FBC4E -S315600206C00BBEA5CD763F66690BBE89AE722750F02A -S315600206D00BBE6DC2D9F976230BBE520A212B976CDB -S315600206E00BBE3683BD31CAA20BBE1B2F257575CADA -S315600206F00BBE000BD34C7BAF0BBDE51941F097FEE9 -S315600207000BBDCA56EE76E9D00BBDAFC457C7AB7305 -S315600207100BBD9560FE9616690BBD7B2C655872758E -S315600207200BBD612610404EC00BBD474D8532E409B4 -S315600207300BBD2DA24BC19EDF0BBD1423ED22D10151 -S315600207400BBCFAD1F42A88E40BBCE1ABED438E8094 -S315600207500BBCC8B1666884820BBCAFE1EF1D2D018C -S315600207600BBC973D1867D0EF0BBC7EC274CAC962D8 -S315600207700BBC6671983E29FE0BBC4E4A18298BA9A2 -S315600207800BBC364B8B5DF6DB0BBC1E758A0FECBF62 -S315600207900BBC06C7ADD18E7E0BBBEF41918CE1F6E9 -S315600207A00BBBD7E2D17E33360BBBC0AB0B2E921B93 -S315600207B00BBBA999DD6E6B650BBB92AEE8503CA78D -S315600207C00BBB7BE9CD2362720BBB654A2E6F002C95 -S315600207D00BBB4ECFAFED00FE0BBB3879F685313FD2 -S315600207E00BBB2248A8486FDE0BBB0C3B6C6BF73B1E -S315600207F00BBAF651EB44BCEE0BBAE08BCE42E7F194 -S315600208000BBACAE8BFED5CC00BBAB5686BDD5EDDDC -S315600208100BBAA00A7EBA475E0BBA8ACEA6354FEBF2 -S315600208200BBA75B4910571DB0BBA60BBEEE358EF98 -S315600208300BBA4BE4708569410BBA372DC79BD7FE5D -S315600208400BBA2297A6CCD68C0BBA0E21C1B0CFA01A -S315600208500BB9F9CBCCCEB6050BB9E5957D98648B11 -S315600208600BB9D17E8A670EE70BB9BD86AA77C3102C -S315600208700BB9A9AD95E7FAC40BB995F305B23CE598 -S315600208800BB98256B3AACE570BB96ED85A7C72068A -S315600208900BB95B77B5A537C80BB94834817359CCA8 -S315600208A00BB9350E7B02284D0BB922056037032E34 -S315600208B00BB90F18EFBE614A0BB8FC48E908E5228E -S315600208C00BB8E9950C487EA90BB8D6FD1A6D99E866 -S315600208D00BB8C480D5245A340BB8B21FFED1E1BC22 -S315600208E00BB89FDA5A91A5260BB88DAFAC32CB0AFC -S315600208F00BB87B9FB83596F60BB869AA43C8DFE199 -S315600209000BB857CF14C791B50BB8460DF1B639C6B9 -S315600209100BB83466A1C09DF90BB822D8ECB75E6EEF -S315600209200BB811649B0DA16B0BB8000975D6C9593A -S315600209300BB7EEC746C434A50BB7DD9DD823075265 -S315600209400BB7CC8CF4D9FE010BB7BB9468674A50DF -S315600209500BB7AAB3FEDE78540BB799EB84E65D0C4F -S315600209600BB7893AC7B70D960BB778A19517DF0112 -S315600209700BB7681FBB5D6E910BB757B50967B24C73 -S315600209800BB747614EA011A20BB737245AF78614EC -S315600209900BB726FDFEE4C3A00BB716EE0B6268E842 -S315600209A00BB706F451ED36CE0BB6F710A4824F8024 -S315600209B00BB6E742D59D7CB40BB6D78AB8377D0EA7 -S315600209C00BB6C7E81FC458720BB6B85AE031BB32D1 -S315600209D00BB6A8E2CDE557F90BB6997FBDBB50457C -S315600209E00BB68A318504A35C0BB67AF7F985A39BAD -S315600209F00BB66BD2F17471FF0BB65CC243777FCED6 -S31560020A000BB64DC5C6A416420BB63EDD527CE4114A -S31560020A100BB63008BEF090CF0BB62147E45855EBC3 -S31560020A200BB6129A9B769D520BB60400BD75A584D1 -S31560020A300BB5F57A23E62B070BB5E706A8BE172C8E -S31560020A400BB5D8A6265733FF0BB5CA58776DE54B5B -S31560020A500BB5BC1D771FE6AB0BB5ADF500EB0E789B -S31560020A600BB59FDEF0AC15940BB591DB229D63F25C -S31560020A700BB583E97355E1C10BB57609BFC7CD32B4 -S31560020A800BB5683BE53F94B80BB55A7FC162B5B604 -S31560020A900BB54CD5322E9F7F0BB53F3C15F79AA10D -S31560020AA00BB531B44B67B45A0BB5243DB17DAE304C -S31560020AB00BB516D8278BF18F0BB509838D378767F0 -S31560020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB49 -S31560020AD00BB4E1EA1D1EA6680BB4D4D8040308E57C -S31560020AE00BB4C7D63D722B370BB4BAE4AAEBF948FE -S31560020AF00BB4AE032E3C2D7E0BB4A131A97965C928 -S31560020B000BB4946FFF043C1C0BB487BE118662362D -S31560020B100BB47B1BC3F1C0BF0BB46E88F97F999B84 -S31560020B200BB4620595AFAD730BB455917C476454B3 -S31560020B300BB4492C9150F96C0BB43CD6B91AA9C8BE -S31560020B400BB4308FD835E60B0BB42457D3768716A1 -S31560020B500BB4182E8FF205900BB40C13F2FEB43B55 -S31560020B600BB40007E232FD1F0BB3F40A4364A167BC -S31560020B700BB3E81AFCA7FBF00BB3DC39F44F468AD9 -S31560020B800BB3D06710E9E1C30BB3C4A239439F4FDD -S31560020B900BB3B8EB54640EF10BB3AD42498DCDDFA6 -S31560020BA00BB3A1A7003DD89B0BB39619602ADF2B26 -S31560020BB00BB38A9951449BB80BB37F26BBB32B798F -S31560020BC00BB373C187D669EA0BB368699E454E4417 -S31560020BD00BB35D1EE7CD4B2D0BB351E14D71B09852 -S31560020BE00BB346B0B86B0FC30BB33B8D1226A15A3B -S31560020BF00BB330764445ADAC0BB3256C389CF6EB43 -S31560020C000BB31A6ED934256E0BB30F7E104535F5CC -S31560020C100BB30499C83BE9D60BB2F9C1EBB53923DC -S31560020C200BB2EEF6657EC6AA0BB2E437209655D5B0 -S31560020C300BB2D984082942630BB2CEDD0793F9E77A -S31560020C400BB2C4420A6177190BB2B9B2FC4ABEDA78 -S31560020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1D9 -S31560020C600BB29A4CA48F90E30BB28FEC8BA9777977 -S31560020C700BB28597FF1D694D0BB27B4EEBAE48DD1D -S31560020C800BB271113E499CEE0BB266DEE4071AA8FE -S31560020C900BB25CB7CA2831380BB2529BDE1796F795 -S31560020CA00BB2488B0D68D8030BB23E8545D7E65A20 -S31560020CB00BB2348A7548AB540BB22A9A89C69A9794 -S31560020CC00BB220B5718446610BB216DB1ADAF53FB8 -S31560020CD00BB20D0B744A39100BB203466C77876CF4 -S31560020CE00BB1F98BF22DD3490BB1EFDBF45D27FF24 -S31560020CF00BB1E636621A457E0BB1DC9B2A9E3DD568 -S31560020D000BB1D30A3D4613EE0BB1C98389925B815F -S31560020D100BB1C006FF26DA3F0BB1B6948DCA2A28FC -S31560020D200BB1AD2C25655D0F0BB1A3CDB603A13D0D -S31560020D300BB19A792FD1E7410BB1912E831E88D2DE -S31560020D400BB187EDA058F0D60BB17EB6781144731D -S31560020D500BB17588FAF80D3A0BB16C6519DDE45D75 -S31560020D600BB1634AC5B31EEF0BB15A39EF877B28C5 -S31560020D700BB151328889CEAE0BB148348207B5DBEE -S31560020D800BB13F3FCD6D43FF0BB136545C44B49A11 -S31560020D900BB12D7220361D870BB124990B07221BCE -S31560020DA00BB11BC90E9AA72D0BB113021CF0880F4B -S31560020DB00BB10A4428254C650BB1018F2271DEE521 -S31560020DC00BB0F8E2FE2B44F40BB0F03FADC25723F2 -S31560020DD00BB0E7A523C37A850BB0DF1352D65AD977 -S31560020DE00BB0D68A2DBDA58C0BB0CE09A756C58988 -S31560020DF00BB0C591B2999FDB0BB0BD2242985115DB -S31560020E000BB0B4BB4A7EEB870BB0AC5CBD93363697 -S31560020E1065300000653010006530200065303000B6 -S31560020E2065304000653050006530600065307000A6 -S31560020E3065308000653090006530A0006530B00096 -S31560020E406530C0006530D0006530E0006530F00086 -S31560020E506531000065311000653120006531300072 -S31560020E606531400065315000653160006531700062 -S31560020E7065318000653190006531A0006531B00052 -S31560020E806531C0006531D0006531E0006531F00042 -S31560020E90653200006532100065322000653230002E -S31560020EA0653240006532500065326000653270001E -S31560020EB065328000653290006532A0006532B0000E -S31560020EC06532C0006532D0006532E0006532F000FE -S31560020ED065330000653310006533200065333000EA -S31560020EE065334000653350006533600065337000DA -S31560020EF065338000653390006533A0006533B000CA -S31560020F006533C0006533D0006533E0006533F000B9 -S31560020F1065340000653410006534200065343000A5 -S31560020F206534400065345000653460006534700095 -S31560020F3065348000653490006534A0006534B00085 -S31560020F406534C0006534D0006534E0006534F00075 -S31560020F506535000065351000653520006535300061 -S31560020F606535400065355000653560006535700051 -S31560020F7065358000653590006535A0006535B00041 -S31560020F806535C0006535D0006535E0006535F00031 -S31560020F90653600006536100065362000653630001D -S31560020FA0653640006536500065366000653670000D -S31560020FB065368000653690006536A0006536B000FD -S31560020FC06536C0006536D0006536E0006536F000ED -S31560020FD065370000653710006537200065373000D9 -S31560020FE065374000653750006537600065377000C9 -S31560020FF065378000653790006537A0006537B000B9 -S315600210006537C0006537D0006537E0006537F000A8 -S315600210106538000065381000653820006538300094 -S315600210206538400065385000653860006538700084 -S3156002103065388000653890006538A0006538B00074 -S315600210406538C0006538D0006538E0006538F00064 -S315600210506539000065391000653920006539300050 -S315600210606539400065395000653960006539700040 -S3156002107065398000653990006539A0006539B00030 -S315600210806539C0006539D0006539E0006539F00020 -S31560021090653A0000653A1000653A2000653A30000C -S315600210A0653A4000653A5000653A6000653A7000FC -S315600210B0653A8000653A9000653AA000653AB000EC -S315600210C0653AC000653AD000653AE000653AF000DC -S315600210D0653B0000653B1000653B2000653B3000C8 -S315600210E0653B4000653B5000653B6000653B7000B8 -S315600210F0653B8000653B9000653BA000653BB000A8 -S31560021100653BC000653BD000653BE000653BF00097 -S31560021110653C0000653C1000653C2000653C300083 -S31560021120653C4000653C5000653C6000653C700073 -S31560021130653C8000653C9000653CA000653CB00063 -S31560021140653CC000653CD000653CE000653CF00053 -S31560021150653D0000653D1000653D2000653D30003F -S31560021160653D4000653D5000653D6000653D70002F -S31560021170653D8000653D9000653DA000653DB0001F -S31560021180653DC000653DD000653DE000653DF0000F -S31560021190653E0000653E1000653E2000653E3000FB -S315600211A0653E4000653E5000653E6000653E7000EB -S315600211B0653E8000653E9000653EA000653EB000DB -S315600211C0653EC000653ED000653EE000653EF000CB -S315600211D0653F0000653F1000653F2000653F3000B7 -S315600211E0653F4000653F5000653F6000653F7000A7 -S315600211F0653F8000653F9000653FA000653FB00097 -S31560021200653FC000653FD000653FE000653FF00086 -S315600212104200000000000000400FFFFFFFFFFFFFDB -S315600212204200000000200000420FFFFFFFFFFFFFA9 -S3156002123040000000000000004210000000080000AC -S3156002124042000000000000013EB000000000000104 -S315600212504200000000000002420F484C0137D208EB -S31560021260C20E780F256007AB41BA079B7AF94BA08D -S315600212704201484C0137D208420E780F256007AB0F -S315600212804217E02D934BECDA420F484C0137D208F5 -S31560021290C21E780F256007ABC20DA7D249883D4EA4 -S315600212A0421F484C0137D208C20E780F256007AB41 -S315600212B042100C446E87CE32C03340AB371208916F -S315600212C00000000000000000C03340AB37120891F6 -S315600212D00000000000000000C29E7A0F236007A68D -S315600212E0C29E7A0F236007A66F3F484C0137D20829 -S315600212F06E2E780F256007AB6F3F485B3D3F64B843 -S315600213006F3F484C0137D208EE2E780F256007AB47 -S315600213106F3F483CC5303F587FE2F780AB123809D1 -S315600213207FD00000000000007FEAF780AB12380928 -S31560021330002000000000000080280000000000007D -S3156002134080100000000000007FEFF780AB123809C2 -S315600213507FEFF2010203A1117FF00000000000009E -S315600213600010000000001000801FFFFFF203A111B1 -S315600213708000000000000000001ABCD0000238099C -S31560021380801ABCD0000001110000000000000000BD -S315600213907E71000000000000416010000000000045 -S315600213A07FE11100000000000178100000000000DB -S315600213B03E880000FFF0000000120C00C073F800C7 -S315600213C0C1EFFFFFC00020003FB3C75D224F280F69 -S315600213D0C1B3C75CFAC08192A12FFF8000001FFFD4 -S315600213E03EE0000000FF0000A01FFF8001FE18071C -S315600213F041CFFFFE0000002040303FFFFFFFFFFDB0 -S3156002140042103FFEFC00000D3FD000003FEFFFFFA1 -S31560021410BFD0000010000000BFB000004FF0003FD8 -S3156002142001701000000000003E8000011A000000FA -S3156002143000000000000000007E7C0000000000004A -S31560021440416A1000010000107FF0000000000000F9 -S3156002145075012034056AC000FA1009091000104FA0 -S31560021460FFF000000000000001002030400302008F -S31560021470003020340000A00B0000000000000000D5 -S315600214807FE0001010200001400000000010200ADA -S315600214907FF00000000000003FEFDFF00FFC484ADB -S315600214A0BFF80000000000007FFF0000000000009F -S315600214B07FFFE000000000007FF4000000000000F3 -S315600214C07FC00000000000007FF8000000000000FE -S315600214D07FF0000000000000FFF000000000000046 -S315600214E0FFF0000000000000800000000000000025 -S315600214F00000000000010000000000000000000083 -S315600215000000000000000000000000000000000073 -S315600215100000000000000000000000000000000063 -S315600215200000000000000000000000000000000053 -S315600215300000000000000000000000000000000043 -S315600215400000000000000000000000000000000033 -S315600215500000000000000000000000000000000023 -S315600215600000000000000000000000000000000013 -S315600215700000000000000000000000000000000003 -S3156002158000000000000000000000000000000000F3 -S3156002159000000000000000000000000000000000E3 -S315600215A000000000000000000000000000000000D3 -S315600215B000000000000000000000000000000000C3 -S315600215C000000000000000000000000000000000B3 -S315600215D000000000000000000000000000000000A3 -S315600215E00000000000000000000000000000000093 -S315600215F00000000000000000000000000000000083 -S315600216000000000000000000000000000000000072 -S315600216100000000000000000000000000000000062 -S315600216200000000000000000000000000000000052 -S315600216300000000000000000000000000000000042 -S315600216400000000000000000000000000000000032 -S315600216500000000000000000000000000000000022 -S315600216600000000000000000000000000000000012 -S315600216700000000000000000000000000000000002 -S3156002168000000000000000000000000000000000F2 -S3156002169000000000000000000000000000000000E2 -S315600216A000000000000000000000000000000000D2 -S315600216B000000000000000000000000000000000C2 -S315600216C000000000000000000000000000000000B2 -S315600216D000000000000000000000000000000000A2 -S315600216E00000000000000000000000000000000092 -S315600216F00000000000000000000000000000000082 -S315600217000000000000000000000000000000000071 -S315600217100000000000000000000000000000000061 -S315600217200000000000000000000000000000000051 -S315600217300000000000000000000000000000000041 -S315600217400000000000000000000000000000000031 -S315600217500000000000000000000000000000000021 -S315600217600000000000000000000000000000000011 -S315600217700000000000000000000000000000000001 -S3156002178000000000000000000000000000000000F1 -S3156002179000000000000000000000000000000000E1 -S315600217A000000000000000000000000000000000D1 -S315600217B000000000000000000000000000000000C1 -S315600217C000000000000000000000000000000000B1 -S315600217D000000000000000000000000000000000A1 -S315600217E00000000000000000000000000000000091 -S315600217F00000000000000000000000000000000081 -S315600218000000000000000000000000000000000070 -S315600218100000000000000000000000000000000060 -S315600218200000000000000000000000000000000050 -S315600218300000000000000000000000000000000040 -S315600218400000000000000000000000000000000030 -S315600218500000000000000000000000000000000020 -S315600218600000000000000000000000000000000010 -S315600218700000000000000000000000000000000000 -S3156002188000000000000000000000000000000000F0 -S3156002189000000000000000000000000000000000E0 -S315600218A000000000000000000000000000000000D0 -S315600218B000000000000000000000000000000000C0 -S315600218C000000000000000000000000000000000B0 -S315600218D000000000000000000000000000000000A0 -S315600218E00000000000000000000000000000000090 -S315600218F00000000000000000000000000000000080 -S31560021900000000000000000000000000000000006F -S31560021910000000000000000000000000000000005F -S31560021920000000000000000000000000000000004F -S31560021930000000000000000000000000000000003F -S31560021940000000000000000000000000000000002F -S31560021950000000000000000000000000000000001F -S31560021960000000000000000000000000000000000F -S3156002197000000000000000000000000000000000FF -S3156002198000000000000000000000000000000000EF -S3156002199000000000000000000000000000000000DF -S315600219A000000000000000000000000000000000CF -S315600219B000000000000000000000000000000000BF -S315600219C000000000000000000000000000000000AF -S315600219D0000000000000000000000000000000009F -S315600219E0000000000000000000000000000000008F -S315600219F0000000000000000000000000000000007F -S31560021A00000000000000000000000000000000006E -S31560021A10000000000000000000000000000000005E -S31560021A20000000000000000000000000000000004E -S31560021A30000000000000000000000000000000003E -S31560021A40000000000000000000000000000000002E -S31560021A50000000000000000000000000000000001E -S31560021A60000000000000000000000000000000000E -S31560021A7000000000000000000000000000000000FE -S31560021A8000000000000000000000000000000000EE -S31560021A9000000000000000000000000000000000DE -S31560021AA000000000000000000000000000000000CE -S31560021AB000000000000000000000000000000000BE -S31560021AC000000000000000000000000000000000AE -S31560021AD0000000000000000000000000000000009E -S31560021AE0000000000000000000000000000000008E -S31560021AF0000000000000000000000000000000007E -S31560021B00000000000000000000000000000000006D -S31560021B10000000000000000000000000000000005D -S31560021B20000000000000000000000000000000004D -S31560021B30000000000000000000000000000000003D -S31560021B40000000000000000000000000000000002D -S31560021B50000000000000000000000000000000001D -S31560021B60000000000000000000000000000000000D -S31560021B7000000000000000000000000000000000FD -S31560021B8000000000000000000000000000000000ED -S31560021B9000000000000000000000000000000000DD -S31560021BA000000000000000000000000000000000CD -S31560021BB000000000000000000000000000000000BD -S31560021BC000000000000000000000000000000000AD -S31560021BD0000000000000000000000000000000009D -S31560021BE0000000000000000000000000000000008D -S31560021BF0000000000000000000000000000000007D -S31560021C00000000000000000000000000000000006C -S31560021C10000000000000000000000000000000005C -S31560021C20000000000000000000000000000000004C -S31560021C30000000000000000000000000000000003C -S31560021C40000000000000000000000000000000002C -S31560021C50000000000000000000000000000000001C -S31560021C60000000000000000000000000000000000C -S31560021C7000000000000000000000000000000000FC -S31560021C8000000000000000000000000000000000EC -S31560021C9000000000000000000000000000000000DC -S31560021CA000000000000000000000000000000000CC -S31560021CB000000000000000000000000000000000BC -S31560021CC000000000000000000000000000000000AC -S31560021CD0000000000000000000000000000000009C -S31560021CE0000000000000000000000000000000008C -S31560021CF0000000000000000000000000000000007C -S31560021D00000000000000000000000000000000006B -S31560021D10000000000000000000000000000000005B -S31560021D20000000000000000000000000000000004B -S31560021D30000000000000000000000000000000003B -S31560021D40000000000000000000000000000000002B -S31560021D50000000000000000000000000000000001B -S31560021D60000000000000000000000000000000000B -S31560021D7000000000000000000000000000000000FB -S31560021D8000000000000000000000000000000000EB -S31560021D9000000000000000000000000000000000DB -S31560021DA000000000000000000000000000000000CB -S31560021DB000000000000000000000000000000000BB -S31560021DC000000000000000000000000000000000AB -S31560021DD0000000000000000000000000000000009B -S31560021DE0000000000000000000000000000000008B -S31560021DF0000000000000000000000000000000007B -S31560021E00000000000000000000000000000000006A -S31560021E10000000000000000000000000000000005A -S31560021E20000000000000000000000000000000004A -S31560021E30000000000000000000000000000000003A -S31560021E40000000000000000000000000000000002A -S31560021E50000000000000000000000000000000001A -S31560021E60000000000000000000000000000000000A -S31560021E7000000000000000000000000000000000FA -S31560021E8000000000000000000000000000000000EA -S31560021E9000000000000000000000000000000000DA -S31560021EA000000000000000000000000000000000CA -S31560021EB000000000000000000000000000000000BA -S31560021EC000000000000000000000000000000000AA -S31560021ED0000000000000000000000000000000009A -S31560021EE0000000000000000000000000000000008A -S31560021EF0000000000000000000000000000000007A -S31560021F000000000000000000000000000000000069 -S31560021F100000000000000000000000000000000059 -S31560021F200000000000000000000000000000000049 -S31560021F300000000000000000000000000000000039 -S31560021F400000000000000000000000000000000029 -S31560021F500000000000000000000000000000000019 -S31560021F600000000000000000000000000000000009 -S31560021F7000000000000000000000000000000000F9 -S31560021F8000000000000000000000000000000000E9 -S31560021F9000000000000000000000000000000000D9 -S31560021FA000000000000000000000000000000000C9 -S31560021FB000000000000000000000000000000000B9 -S31560021FC000000000000000000000000000000000A9 -S31560021FD00000000000000000000000000000000099 -S31560021FE00000000000000000000000000000000089 -S31560021FF00000000000000000000000000000000079 -S315600220000000000000000000000000000000000068 -S315600220100000000000000000000000000000000058 -S315600220200000000000000000000000000000000048 -S315600220300000000000000000000000000000000038 -S315600220400000000000000000000000000000000028 -S315600220500000000000000000000000000000000018 -S315600220600000000000000000000000000000000008 -S3156002207000000000000000000000000000000000F8 -S3156002208000000000000000000000000000000000E8 -S3156002209000000000000000000000000000000000D8 -S315600220A000000000000000000000000000000000C8 -S315600220B000000000000000000000000000000000B8 -S315600220C000000000000000000000000000000000A8 -S315600220D00000000000000000000000000000000098 -S315600220E00000000000000000000000000000000088 -S315600220F00000000000000000000000000000000078 -S315600221000000000000000000000000000000000067 -S315600221100000000000000000000000000000000057 -S315600221200000000000000000000000000000000047 -S315600221300000000000000000000000000000000037 -S315600221400000000000000000000000000000000027 -S315600221500000000000000000000000000000000017 -S315600221600000000000000000000000000000000007 -S3156002217000000000000000000000000000000000F7 -S3156002218000000000000000000000000000000000E7 -S3156002219000000000000000000000000000000000D7 -S315600221A000000000000000000000000000000000C7 -S315600221B000000000000000000000000000000000B7 -S315600221C000000000000000000000000000000000A7 -S315600221D00000000000000000000000000000000097 -S315600221E00000000000000000000000000000000087 -S315600221F00000000000000000000000000000000077 -S315600222000000000000000000000000000000000066 -S315600222100000000000000000000000000000000056 -S315600222200000000000000000000000000000000046 -S315600222300000000000000000000000000000000036 -S315600222400000000000000000000000000000000026 -S315600222500000000000000000000000000000000016 -S315600222600000000000000000000000000000000006 -S3156002227000000000000000000000000000000000F6 -S3156002228000000000000000000000000000000000E6 -S3156002229000000000000000000000000000000000D6 -S315600222A000000000000000000000000000000000C6 -S315600222B000000000000000000000000000000000B6 -S315600222C000000000000000000000000000000000A6 -S315600222D00000000000000000000000000000000096 -S315600222E00000000000000000000000000000000086 -S315600222F00000000000000000000000000000000076 -S315600223000000000000000000000000000000000065 -S315600223100000000000000000000000000000000055 -S315600223200000000000000000000000000000000045 -S315600223300000000000000000000000000000000035 -S315600223400000000000000000000000000000000025 -S315600223500000000000000000000000000000000015 -S315600223600000000000000000000000000000000005 -S3156002237000000000000000000000000000000000F5 -S3156002238000000000000000000000000000000000E5 -S3156002239000000000000000000000000000000000D5 -S315600223A000000000000000000000000000000000C5 -S315600223B000000000000000000000000000000000B5 -S315600223C000000000000000000000000000000000A5 -S315600223D00000000000000000000000000000000095 -S315600223E00000000000000000000000000000000085 -S315600223F00000000000000000000000000000000075 -S315600224000000000000000000000000000000000064 -S315600224100000000000000000000000000000000054 -S315600224200000000000000000000000000000000044 -S315600224300000000000000000000000000000000034 -S315600224400000000000000000000000000000000024 -S315600224500000000000000000000000000000000014 -S315600224600000000000000000000000000000000004 -S3156002247000000000000000000000000000000000F4 -S3156002248000000000000000000000000000000000E4 -S3156002249000000000000000000000000000000000D4 -S315600224A000000000000000000000000000000000C4 -S315600224B000000000000000000000000000000000B4 -S315600224C000000000000000000000000000000000A4 -S315600224D00000000000000000000000000000000094 -S315600224E00000000000000000000000000000000084 -S315600224F00000000000000000000000000000000074 -S315600225000000000000000000000000000000000063 -S315600225100000000000000000000000000000000053 -S315600225200000000000000000000000000000000043 -S315600225300000000000000000000000000000000033 -S315600225400000000000000000000000000000000023 -S315600225500000000000000000000000000000000013 -S315600225600000000000000000000000000000000003 -S3156002257000000000000000000000000000000000F3 -S3156002258000000000000000000000000000000000E3 -S3156002259000000000000000000000000000000000D3 -S315600225A000000000000000000000000000000000C3 -S315600225B000000000000000000000000000000000B3 -S315600225C000000000000000000000000000000000A3 -S315600225D00000000000000000000000000000000093 -S315600225E00000000000000000000000000000000083 -S315600225F00000000000000000000000000000000073 -S315600226000000000000000000000000000000000062 -S315600226100000000000000000000000000000000052 -S315600226200000000000000000000000000000000042 -S315600226300000000000000000000000000000000032 -S315600226400000000000000000000000000000000022 -S315600226500000000000000000000000000000000012 -S315600226600000000000000000000000000000000002 -S3156002267000000000000000000000000000000000F2 -S3156002268000000000000000000000000000000000E2 -S3156002269000000000000000000000000000000000D2 -S315600226A000000000000000000000000000000000C2 -S315600226B000000000000000000000000000000000B2 -S315600226C000000000000000000000000000000000A2 -S315600226D00000000000000000000000000000000092 -S315600226E00000000000000000000000000000000082 -S315600226F00000000000000000000000000000000072 -S315600227000000000000000000000000000000000061 -S315600227100000000000000000000000000000000051 -S315600227200000000000000000000000000000000041 -S315600227300000000000000000000000000000000031 -S315600227400000000000000000000000000000000021 -S315600227500000000000000000000000000000000011 -S315600227600000000000000000000000000000000001 -S3156002277000000000000000000000000000000000F1 -S3156002278000000000000000000000000000000000E1 -S3156002279000000000000000000000000000000000D1 -S315600227A000000000000000000000000000000000C1 -S315600227B000000000000000000000000000000000B1 -S315600227C000000000000000000000000000000000A1 -S315600227D00000000000000000000000000000000091 -S315600227E00000000000000000000000000000000081 -S315600227F00000000000000000000000000000000071 -S315600228000000000000000000000000000000000060 -S315600228100000000000000000000000000000000050 -S315600228200000000000000000000000000000000040 -S315600228300000000000000000000000000000000030 -S315600228400000000000000000000000000000000020 -S315600228500000000000000000000000000000000010 -S315600228600000000000000000000000000000000000 -S3156002287000000000000000000000000000000000F0 -S3156002288000000000000000000000000000000000E0 -S3156002289000000000000000000000000000000000D0 -S315600228A000000000000000000000000000000000C0 -S315600228B000000000000000000000000000000000B0 -S315600228C000000000000000000000000000000000A0 -S315600228D00000000000000000000000000000000090 -S315600228E00000000000000000000000000000000080 -S315600228F00000000000000000000000000000000070 -S31560022900000000000000000000000000000000005F -S31560022910000000000000000000000000000000004F -S31560022920000000000000000000000000000000003F -S31560022930000000000000000000000000000000002F -S31560022940000000000000000000000000000000001F -S31560022950000000000000000000000000000000000F -S3156002296000000000000000000000000000000000FF -S3156002297000000000000000000000000000000000EF -S3156002298000000000000000000000000000000000DF -S3156002299000000000000000000000000000000000CF -S315600229A000000000000000000000000000000000BF -S315600229B000000000000000000000000000000000AF -S315600229C0000000000000000000000000000000009F -S315600229D0000000000000000000000000000000008F -S315600229E0000000000000000000000000000000007F -S315600229F0000000000000000000000000000000006F -S31560022A00000000000000000000000000000000005E -S31560022A10000000000000000000000000000000004E -S31560022A20000000000000000000000000000000003E -S31560022A30000000000000000000000000000000002E -S31560022A40000000000000000000000000000000001E -S31560022A50000000000000000000000000000000000E -S31560022A6000000000000000000000000000000000FE -S31560022A7000000000000000000000000000000000EE -S31560022A8000000000000000000000000000000000DE -S31560022A9000000000000000000000000000000000CE -S31560022AA000000000000000000000000000000000BE -S31560022AB000000000000000000000000000000000AE -S31560022AC0000000000000000000000000000000009E -S31560022AD0000000000000000000000000000000008E -S31560022AE0000000000000000000000000000000007E -S31560022AF0000000000000000000000000000000006E -S31560022B00000000000000000000000000000000005D -S31560022B10000000000000000000000000000000004D -S31560022B20000000000000000000000000000000003D -S31560022B30000000000000000000000000000000002D -S31560022B40000000000000000000000000000000001D -S31560022B50000000000000000000000000000000000D -S31560022B6000000000000000000000000000000000FD -S31560022B7000000000000000000000000000000000ED -S31560022B8000000000000000000000000000000000DD -S31560022B9000000000000000000000000000000000CD -S31560022BA000000000000000000000000000000000BD -S31560022BB000000000000000000000000000000000AD -S31560022BC0000000000000000000000000000000009D -S31560022BD0000000000000000000000000000000008D -S31560022BE0000000000000000000000000000000007D -S31560022BF0000000000000000000000000000000006D -S31560022C00000000000000000000000000000000005C -S31560022C10000000000000000000000000000000004C -S31560022C20000000000000000000000000000000003C -S31560022C30000000000000000000000000000000002C -S31560022C40000000000000000000000000000000001C -S31560022C50000000000000000000000000000000000C -S31560022C6000000000000000000000000000000000FC -S31560022C7000000000000000000000000000000000EC -S31560022C8000000000000000000000000000000000DC -S31560022C9000000000000000000000000000000000CC -S31560022CA000000000000000000000000000000000BC -S31560022CB000000000000000000000000000000000AC -S31560022CC0000000000000000000000000000000009C -S31560022CD0000000000000000000000000000000008C -S31560022CE0000000000000000000000000000000007C -S31560022CF0000000000000000000000000000000006C -S31560022D00000000000000000000000000000000005B -S31560022D10000000000000000000000000000000004B -S31560022D20000000000000000000000000000000003B -S31560022D30000000000000000000000000000000002B -S31560022D40000000000000000000000000000000001B -S31560022D50000000000000000000000000000000000B -S31560022D6000000000000000000000000000000000FB -S31560022D7000000000000000000000000000000000EB -S31560022D8000000000000000000000000000000000DB -S31560022D9000000000000000000000000000000000CB -S31560022DA000000000000000000000000000000000BB -S31560022DB000000000000000000000000000000000AB -S31560022DC0000000000000000000000000000000009B -S31560022DD0000000000000000000000000000000008B -S31560022DE0000000000000000000000000000000007B -S31560022DF0000000000000000000000000000000006B -S31560022E00000000000000000000000000000000005A -S31560022E10000000000000000000000000000000004A -S31560022E20000000000000000000000000000000003A -S31560022E30000000000000000000000000000000002A -S31560022E40000000000000000000000000000000001A -S31560022E50000000000000000000000000000000000A -S31560022E6000000000000000000000000000000000FA -S31560022E7000000000000000000000000000000000EA -S31560022E8000000000000000000000000000000000DA -S31560022E9000000000000000000000000000000000CA -S31560022EA000000000000000000000000000000000BA -S31560022EB000000000000000000000000000000000AA -S31560022EC0000000000000000000000000000000009A -S31560022ED0000000000000000000000000000000008A -S31560022EE0000000000000000000000000000000007A -S31560022EF0000000000000000000000000000000006A -S31560022F000000000000000000000000000000000059 -S31560022F100000000000000000000000000000000049 -S31560022F200000000000000000000000000000000039 -S31560022F300000000000000000000000000000000029 -S31560022F400000000000000000000000000000000019 -S31560022F500000000000000000000000000000000009 -S31560022F6000000000000000000000000000000000F9 -S31560022F7000000000000000000000000000000000E9 -S31560022F8000000000000000000000000000000000D9 -S31560022F9000000000000000000000000000000000C9 -S31560022FA000000000000000000000000000000000B9 -S31560022FB000000000000000000000000000000000A9 -S31560022FC00000000000000000000000000000000099 -S31560022FD00000000000000000000000000000000089 -S31560022FE00000000000000000000000000000000079 -S31560022FF00000000000000000000000000000000069 -S315600230000000000000000000000000000000000058 -S315600230100000000000000000000000000000000048 -S315600230200000000000000000000000000000000038 -S315600230300000000000000000000000000000000028 -S315600230400000000000000000000000000000000018 -S315600230500000000000000000000000000000000008 -S3156002306000000000000000000000000000000000F8 -S3156002307000000000000000000000000000000000E8 -S3156002308000000000000000000000000000000000D8 -S3156002309000000000000000000000000000000000C8 -S315600230A000000000000000000000000000000000B8 -S315600230B000000000000000000000000000000000A8 -S315600230C00000000000000000000000000000000098 -S315600230D00000000000000000000000000000000088 -S315600230E00000000000000000000000000000000078 -S315600230F00000000000000000000000000000000068 -S315600231000000000000000000000000000000000057 -S315600231100000000000000000000000000000000047 -S315600231200000000000000000000000000000000037 -S315600231300000000000000000000000000000000027 -S315600231400000000000000000000000000000000017 -S315600231500000000000000000000000000000000007 -S3156002316000000000000000000000000000000000F7 -S3156002317000000000000000000000000000000000E7 -S3156002318000000000000000000000000000000000D7 -S3156002319000000000000000000000000000000000C7 -S315600231A000000000000000000000000000000000B7 -S315600231B000000000000000000000000000000000A7 -S315600231C00000000000000000000000000000000097 -S315600231D00000000000000000000000000000000087 -S315600231E00000000000000000000000000000000077 -S315600231F00000000000000000000000000000000067 -S315600232000000000000000000000000000000000056 -S315600232100000000000000000000000000000000046 -S315600232200000000000000000000000000000000036 -S315600232300000000000000000000000000000000026 -S315600232400000000000000000000000000000000016 -S315600232500000000000000000000000000000000006 -S3156002326000000000000000000000000000000000F6 -S3156002327000000000000000000000000000000000E6 -S3156002328000000000000000000000000000000000D6 -S3156002329000000000000000000000000000000000C6 -S315600232A000000000000000000000000000000000B6 -S315600232B000000000000000000000000000000000A6 -S315600232C00000000000000000000000000000000096 -S315600232D00000000000000000000000000000000086 -S315600232E00000000000000000000000000000000076 -S315600232F00000000000000000000000000000000066 -S315600233000000000000000000000000000000000055 -S315600233100000000000000000000000000000000045 -S315600233200000000000000000000000000000000035 -S315600233300000000000000000000000000000000025 -S315600233400000000000000000000000000000000015 -S315600233500000000000000000000000000000000005 -S3156002336000000000000000000000000000000000F5 -S3156002337000000000000000000000000000000000E5 -S3156002338000000000000000000000000000000000D5 -S3156002339000000000000000000000000000000000C5 -S315600233A000000000000000000000000000000000B5 -S315600233B000000000000000000000000000000000A5 -S315600233C00000000000000000000000000000000095 -S315600233D00000000000000000000000000000000085 -S315600233E00000000000000000000000000000000075 -S315600233F00000000000000000000000000000000065 -S315600234000000000000000000000000000000000054 -S315600234100000000000000000000000000000000044 -S315600234200000000000000000000000000000000034 -S315600234300000000000000000000000000000000024 -S315600234400000000000000000000000000000000014 -S315600234500000000000000000000000000000000004 -S3156002346000000000000000000000000000000000F4 -S3156002347000000000000000000000000000000000E4 -S3156002348000000000000000000000000000000000D4 -S3156002349000000000000000000000000000000000C4 -S315600234A000000000000000000000000000000000B4 -S315600234B000000000000000000000000000000000A4 -S315600234C00000000000000000000000000000000094 -S315600234D00000000000000000000000000000000084 -S315600234E00000000000000000000000000000000074 -S315600234F00000000000000000000000000000000064 -S315600235000000000000000000000000000000000053 -S315600235100000000000000000000000000000000043 -S315600235200000000000000000000000000000000033 -S315600235300000000000000000000000000000000023 -S315600235400000000000000000000000000000000013 -S315600235500000000000000000000000000000000003 -S3156002356000000000000000000000000000000000F3 -S3156002357000000000000000000000000000000000E3 -S3156002358000000000000000000000000000000000D3 -S3156002359000000000000000000000000000000000C3 -S315600235A000000000000000000000000000000000B3 -S315600235B000000000000000000000000000000000A3 -S315600235C00000000000000000000000000000000093 -S315600235D00000000000000000000000000000000083 -S315600235E00000000000000000000000000000000073 -S315600235F00000000000000000000000000000000063 -S315600236000000000000000000000000000000000052 -S315600236100000000000000000000000000000000042 -S315600236200000000000000000000000000000000032 -S315600236300000000000000000000000000000000022 -S315600236400000000000000000000000000000000012 -S315600236500000000000000000000000000000000002 -S3156002366000000000000000000000000000000000F2 -S3156002367000000000000000000000000000000000E2 -S3156002368000000000000000000000000000000000D2 -S3156002369000000000000000000000000000000000C2 -S315600236A000000000000000000000000000000000B2 -S315600236B000000000000000000000000000000000A2 -S315600236C00000000000000000000000000000000092 -S315600236D00000000000000000000000000000000082 -S315600236E00000000000000000000000000000000072 -S315600236F00000000000000000000000000000000062 -S315600237000000000000000000000000000000000051 -S315600237100000000000000000000000000000000041 -S315600237200000000000000000000000000000000031 -S315600237300000000000000000000000000000000021 -S315600237400000000000000000000000000000000011 -S315600237500000000000000000000000000000000001 -S3156002376000000000000000000000000000000000F1 -S3156002377000000000000000000000000000000000E1 -S3156002378000000000000000000000000000000000D1 -S3156002379000000000000000000000000000000000C1 -S315600237A000000000000000000000000000000000B1 -S315600237B000000000000000000000000000000000A1 -S315600237C00000000000000000000000000000000091 -S315600237D00000000000000000000000000000000081 -S315600237E00000000000000000000000000000000071 -S315600237F00000000000000000000000000000000061 -S315600238000000000000000000000000000000000050 -S315600238100000000000000000000000000000000040 -S315600238200000000000000000000000000000000030 -S315600238300000000000000000000000000000000020 -S315600238400000000000000000000000000000000010 -S315600238500000000000000000000000000000000000 -S3156002386000000000000000000000000000000000F0 -S3156002387000000000000000000000000000000000E0 -S3156002388000000000000000000000000000000000D0 -S3156002389000000000000000000000000000000000C0 -S315600238A000000000000000000000000000000000B0 -S315600238B000000000000000000000000000000000A0 -S315600238C00000000000000000000000000000000090 -S315600238D00000000000000000000000000000000080 -S315600238E00000000000000000000000000000000070 -S315600238F00000000000000000000000000000000060 -S31560023900000000000000000000000000000000004F -S31560023910000000000000000000000000000000003F -S31560023920000000000000000000000000000000002F -S31560023930000000000000000000000000000000001F -S31560023940000000000000000000000000000000000F -S3156002395000000000000000000000000000000000FF -S3156002396000000000000000000000000000000000EF -S3156002397000000000000000000000000000000000DF -S3156002398000000000000000000000000000000000CF -S3156002399000000000000000000000000000000000BF -S315600239A000000000000000000000000000000000AF -S315600239B0000000000000000000000000000000009F -S315600239C0000000000000000000000000000000008F -S315600239D0000000000000000000000000000000007F -S315600239E0000000000000000000000000000000006F -S315600239F0000000000000000000000000000000005F -S31560023A00000000000000000000000000000000004E -S31560023A10000000000000000000000000000000003E -S31560023A20000000000000000000000000000000002E -S31560023A30000000000000000000000000000000001E -S31560023A40000000000000000000000000000000000E -S31560023A5000000000000000000000000000000000FE -S31560023A6000000000000000000000000000000000EE -S31560023A7000000000000000000000000000000000DE -S31560023A8000000000000000000000000000000000CE -S31560023A9000000000000000000000000000000000BE -S31560023AA000000000000000000000000000000000AE -S31560023AB0000000000000000000000000000000009E -S31560023AC0000000000000000000000000000000008E -S31560023AD0000000000000000000000000000000007E -S31560023AE0000000000000000000000000000000006E -S31560023AF0000000000000000000000000000000005E -S31560023B00000000000000000000000000000000004D -S31560023B10000000000000000000000000000000003D -S31560023B20000000000000000000000000000000002D -S31560023B30000000000000000000000000000000001D -S31560023B40000000000000000000000000000000000D -S31560023B5000000000000000000000000000000000FD -S31560023B6000000000000000000000000000000000ED -S31560023B7000000000000000000000000000000000DD -S31560023B8000000000000000000000000000000000CD -S31560023B9000000000000000000000000000000000BD -S31560023BA000000000000000000000000000000000AD -S31560023BB0000000000000000000000000000000009D -S31560023BC0000000000000000000000000000000008D -S31560023BD0000000000000000000000000000000007D -S31560023BE0000000000000000000000000000000006D -S31560023BF0000000000000000000000000000000005D -S31560023C00000000000000000000000000000000004C -S31560023C10000000000000000000000000000000003C -S31560023C20000000000000000000000000000000002C -S31560023C30000000000000000000000000000000001C -S31560023C40000000000000000000000000000000000C -S31560023C5000000000000000000000000000000000FC -S31560023C6000000000000000000000000000000000EC -S31560023C7000000000000000000000000000000000DC -S31560023C8000000000000000000000000000000000CC -S31560023C9000000000000000000000000000000000BC -S31560023CA000000000000000000000000000000000AC -S31560023CB0000000000000000000000000000000009C -S31560023CC0000000000000000000000000000000008C -S31560023CD0000000000000000000000000000000007C -S31560023CE0000000000000000000000000000000006C -S31560023CF0000000000000000000000000000000005C -S31560023D00000000000000000000000000000000004B -S31560023D10000000000000000000000000000000003B -S31560023D20000000000000000000000000000000002B -S31560023D30000000000000000000000000000000001B -S31560023D40000000000000000000000000000000000B -S31560023D5000000000000000000000000000000000FB -S31560023D6000000000000000000000000000000000EB -S31560023D7000000000000000000000000000000000DB -S31560023D8000000000000000000000000000000000CB -S31560023D9000000000000000000000000000000000BB -S31560023DA000000000000000000000000000000000AB -S31560023DB0000000000000000000000000000000009B -S31560023DC0000000000000000000000000000000008B -S31560023DD0000000000000000000000000000000007B -S31560023DE0000000000000000000000000000000006B -S31560023DF0000000000000000000000000000000005B -S31560023E00000000000000000000000000000000004A -S31560023E10000000000000000000000000000000003A -S31560023E20000000000000000000000000000000002A -S31560023E30000000000000000000000000000000001A -S31560023E40000000000000000000000000000000000A -S31560023E5000000000000000000000000000000000FA -S31560023E6000000000000000000000000000000000EA -S31560023E7000000000000000000000000000000000DA -S31560023E8000000000000000000000000000000000CA -S31560023E9000000000000000000000000000000000BA -S31560023EA000000000000000000000000000000000AA -S31560023EB0000000000000000000000000000000009A -S31560023EC0000000000000000000000000000000008A -S31560023ED0000000000000000000000000000000007A -S31560023EE0000000000000000000000000000000006A -S31560023EF0000000000000000000000000000000005A -S31560023F000000000000000000000000000000000049 -S31560023F100000000000000000000000000000000039 -S31560023F200000000000000000000000000000000029 -S31560023F300000000000000000000000000000000019 -S31560023F400000000000000000000000000000000009 -S31560023F5000000000000000000000000000000000F9 -S31560023F6000000000000000000000000000000000E9 -S31560023F7000000000000000000000000000000000D9 -S31560023F8000000000000000000000000000000000C9 -S31560023F9000000000000000000000000000000000B9 -S31560023FA000000000000000000000000000000000A9 -S31560023FB00000000000000000000000000000000099 -S31560023FC00000000000000000000000000000000089 -S31560023FD00000000000000000000000000000000079 -S31560023FE00000000000000000000000000000000069 -S31560023FF00000000000000000000000000000000059 -S315600240000000000000000000000000000000000048 -S315600240100000000000000000000000000000000038 -S315600240200000000000000000000000000000000028 -S315600240300000000000000000000000000000000018 -S315600240400000000000000000000000000000000008 -S3156002405000000000000000000000000000000000F8 -S3156002406000000000000000000000000000000000E8 -S3156002407000000000000000000000000000000000D8 -S3156002408000000000000000000000000000000000C8 -S3156002409000000000000000000000000000000000B8 -S315600240A000000000000000000000000000000000A8 -S315600240B00000000000000000000000000000000098 -S315600240C00000000000000000000000000000000088 -S315600240D00000000000000000000000000000000078 -S315600240E00000000000000000000000000000000068 -S315600240F00000000000000000000000000000000058 -S315600241000000000000000000000000000000000047 -S315600241100000000000000000000000000000000037 -S315600241200000000000000000000000000000000027 -S315600241300000000000000000000000000000000017 -S315600241400000000000000000000000000000000007 -S3156002415000000000000000000000000000000000F7 -S3156002416000000000000000000000000000000000E7 -S3156002417000000000000000000000000000000000D7 -S3156002418000000000000000000000000000000000C7 -S3156002419000000000000000000000000000000000B7 -S315600241A000000000000000000000000000000000A7 -S315600241B00000000000000000000000000000000097 -S315600241C00000000000000000000000000000000087 -S315600241D00000000000000000000000000000000077 -S315600241E00000000000000000000000000000000067 -S315600241F00000000000000000000000000000000057 -S315600242000000000000000000000000000000000046 -S315600242100000000000000000000000000000000036 -S315600242200000000000000000000000000000000026 -S315600242300000000000000000000000000000000016 -S315600242400000000000000000000000000000000006 -S3156002425000000000000000000000000000000000F6 -S3156002426000000000000000000000000000000000E6 -S3156002427000000000000000000000000000000000D6 -S3156002428000000000000000000000000000000000C6 -S3156002429000000000000000000000000000000000B6 -S315600242A000000000000000000000000000000000A6 -S315600242B00000000000000000000000000000000096 -S315600242C00000000000000000000000000000000086 -S315600242D00000000000000000000000000000000076 -S315600242E00000000000000000000000000000000066 -S315600242F00000000000000000000000000000000056 -S315600243000000000000000000000000000000000045 -S315600243100000000000000000000000000000000035 -S315600243200000000000000000000000000000000025 -S315600243300000000000000000000000000000000015 -S315600243400000000000000000000000000000000005 -S3156002435000000000000000000000000000000000F5 -S3156002436000000000000000000000000000000000E5 -S3156002437000000000000000000000000000000000D5 -S3156002438000000000000000000000000000000000C5 -S3156002439000000000000000000000000000000000B5 -S315600243A000000000000000000000000000000000A5 -S315600243B00000000000000000000000000000000095 -S315600243C00000000000000000000000000000000085 -S315600243D00000000000000000000000000000000075 -S315600243E00000000000000000000000000000000065 -S315600243F00000000000000000000000000000000055 -S315600244000000000000000000000000000000000044 -S315600244100000000000000000000000000000000034 -S315600244200000000000000000000000000000000024 -S315600244300000000000000000000000000000000014 -S315600244400000000000000000000000000000000004 -S3156002445000000000000000000000000000000000F4 -S3156002446000000000000000000000000000000000E4 -S3156002447000000000000000000000000000000000D4 -S3156002448000000000000000000000000000000000C4 -S3156002449000000000000000000000000000000000B4 -S315600244A000000000000000000000000000000000A4 -S315600244B00000000000000000000000000000000094 -S315600244C00000000000000000000000000000000084 -S315600244D00000000000000000000000000000000074 -S315600244E00000000000000000000000000000000064 -S315600244F00000000000000000000000000000000054 -S315600245000000000000000000000000000000000043 -S315600245100000000000000000000000000000000033 -S315600245200000000000000000000000000000000023 -S315600245300000000000000000000000000000000013 -S315600245400000000000000000000000000000000003 -S3156002455000000000000000000000000000000000F3 -S3156002456000000000000000000000000000000000E3 -S3156002457000000000000000000000000000000000D3 -S3156002458000000000000000000000000000000000C3 -S3156002459000000000000000000000000000000000B3 -S315600245A000000000000000000000000000000000A3 -S315600245B00000000000000000000000000000000093 -S315600245C00000000000000000000000000000000083 -S315600245D00000000000000000000000000000000073 -S315600245E00000000000000000000000000000000063 -S315600245F00000000000000000000000000000000053 -S315600246000000000000000000000000000000000042 -S315600246100000000000000000000000000000000032 -S315600246200000000000000000000000000000000022 -S315600246300000000000000000000000000000000012 -S315600246400000000000000000000000000000000002 -S3156002465000000000000000000000000000000000F2 -S3156002466000000000000000000000000000000000E2 -S3156002467000000000000000000000000000000000D2 -S3156002468000000000000000000000000000000000C2 -S3156002469000000000000000000000000000000000B2 -S315600246A000000000000000000000000000000000A2 -S315600246B00000000000000000000000000000000092 -S315600246C00000000000000000000000000000000082 -S315600246D00000000000000000000000000000000072 -S315600246E00000000000000000000000000000000062 -S315600246F00000000000000000000000000000000052 -S315600247000000000000000000000000000000000041 -S315600247100000000000000000000000000000000031 -S315600247200000000000000000000000000000000021 -S315600247300000000000000000000000000000000011 -S315600247400000000000000000000000000000000001 -S3156002475000000000000000000000000000000000F1 -S3156002476000000000000000000000000000000000E1 -S3156002477000000000000000000000000000000000D1 -S3156002478000000000000000000000000000000000C1 -S3156002479000000000000000000000000000000000B1 -S315600247A000000000000000000000000000000000A1 -S315600247B00000000000000000000000000000000091 -S315600247C00000000000000000000000000000000081 -S315600247D00000000000000000000000000000000071 -S315600247E00000000000000000000000000000000061 -S315600247F00000000000000000000000000000000051 -S315600248000000000000000000000000000000000040 -S315600248100000000000000000000000000000000030 -S315600248200000000000000000000000000000000020 -S315600248300000000000000000000000000000000010 -S315600248400000000000000000000000000000000000 -S3156002485000000000000000000000000000000000F0 -S3156002486000000000000000000000000000000000E0 -S3156002487000000000000000000000000000000000D0 -S3156002488000000000000000000000000000000000C0 -S3156002489000000000000000000000000000000000B0 -S315600248A000000000000000000000000000000000A0 -S315600248B00000000000000000000000000000000090 -S315600248C00000000000000000000000000000000080 -S315600248D00000000000000000000000000000000070 -S315600248E00000000000000000000000000000000060 -S315600248F00000000000000000000000000000000050 -S31560024900000000000000000000000000000000003F -S31560024910000000000000000000000000000000002F -S31560024920000000000000000000000000000000001F -S31560024930000000000000000000000000000000000F -S3156002494000000000000000000000000000000000FF -S3156002495000000000000000000000000000000000EF -S3156002496000000000000000000000000000000000DF -S3156002497000000000000000000000000000000000CF -S3156002498000000000000000000000000000000000BF -S3156002499000000000000000000000000000000000AF -S315600249A0000000000000000000000000000000009F -S315600249B0000000000000000000000000000000008F -S315600249C0000000000000000000000000000000007F -S315600249D0000000000000000000000000000000006F -S315600249E0000000000000000000000000000000005F -S315600249F0000000000000000000000000000000004F -S31560024A00000000000000000000000000000000003E -S31560024A10000000000000000000000000000000002E -S31560024A20000000000000000000000000000000001E -S31560024A30000000000000000000000000000000000E -S31560024A4000000000000000000000000000000000FE -S31560024A5000000000000000000000000000000000EE -S31560024A6000000000000000000000000000000000DE -S31560024A7000000000000000000000000000000000CE -S31560024A8000000000000000000000000000000000BE -S31560024A9000000000000000000000000000000000AE -S31560024AA0000000000000000000000000000000009E -S31560024AB0000000000000000000000000000000008E -S31560024AC0000000000000000000000000000000007E -S31560024AD0000000000000000000000000000000006E -S31560024AE0000000000000000000000000000000005E -S31560024AF0000000000000000000000000000000004E -S31560024B00000000000000000000000000000000003D -S31560024B10000000000000000000000000000000002D -S31560024B20000000000000000000000000000000001D -S31560024B30000000000000000000000000000000000D -S31560024B4000000000000000000000000000000000FD -S31560024B5000000000000000000000000000000000ED -S31560024B6000000000000000000000000000000000DD -S31560024B7000000000000000000000000000000000CD -S31560024B8000000000000000000000000000000000BD -S31560024B9000000000000000000000000000000000AD -S31560024BA0000000000000000000000000000000009D -S31560024BB0000000000000000000000000000000008D -S31560024BC0000000000000000000000000000000007D -S31560024BD0000000000000000000000000000000006D -S31560024BE0000000000000000000000000000000005D -S31560024BF0000000000000000000000000000000004D -S31560024C00000000000000000000000000000000003C -S31560024C10000000000000000000000000000000002C -S31560024C20000000000000000000000000000000001C -S31560024C30000000000000000000000000000000000C -S31560024C4000000000000000000000000000000000FC -S31560024C5000000000000000000000000000000000EC -S31560024C6000000000000000000000000000000000DC -S31560024C7000000000000000000000000000000000CC -S31560024C8000000000000000000000000000000000BC -S31560024C9000000000000000000000000000000000AC -S31560024CA0000000000000000000000000000000009C -S31560024CB0000000000000000000000000000000008C -S31560024CC0000000000000000000000000000000007C -S31560024CD0000000000000000000000000000000006C -S31560024CE0000000000000000000000000000000005C -S31560024CF0000000000000000000000000000000004C -S31560024D00000000000000000000000000000000003B -S31560024D10000000000000000000000000000000002B -S31560024D20000000000000000000000000000000001B -S31560024D30000000000000000000000000000000000B -S31560024D4000000000000000000000000000000000FB -S31560024D5000000000000000000000000000000000EB -S31560024D6000000000000000000000000000000000DB -S31560024D7000000000000000000000000000000000CB -S31560024D8000000000000000000000000000000000BB -S31560024D9000000000000000000000000000000000AB -S31560024DA0000000000000000000000000000000009B -S31560024DB0000000000000000000000000000000008B -S31560024DC0000000000000000000000000000000007B -S31560024DD0000000000000000000000000000000006B -S31560024DE0000000000000000000000000000000005B -S31560024DF0000000000000000000000000000000004B -S31560024E00000000000000000000000000000000003A -S31560024E10000000000000000000000000000000002A -S31560024E20000000000000000000000000000000001A -S31560024E30000000000000000000000000000000000A -S31560024E4000000000000000000000000000000000FA -S31560024E5000000000000000000000000000000000EA -S31560024E6000000000000000000000000000000000DA -S31560024E7000000000000000000000000000000000CA -S31560024E8000000000000000000000000000000000BA -S31560024E9000000000000000000000000000000000AA -S31560024EA0000000000000000000000000000000009A -S31560024EB0000000000000000000000000000000008A -S31560024EC0000000000000000000000000000000007A -S31560024ED0000000000000000000000000000000006A -S31560024EE0000000000000000000000000000000005A -S31560024EF0000000000000000000000000000000004A -S31560024F000000000000000000000000000000000039 -S31560024F100000000000000000000000000000000029 -S31560024F200000000000000000000000000000000019 -S31560024F300000000000000000000000000000000009 -S31560024F4000000000000000000000000000000000F9 -S31560024F5000000000000000000000000000000000E9 -S31560024F6000000000000000000000000000000000D9 -S31560024F7000000000000000000000000000000000C9 -S31560024F8000000000000000000000000000000000B9 -S31560024F9000000000000000000000000000000000A9 -S31560024FA00000000000000000000000000000000099 -S31560024FB00000000000000000000000000000000089 -S31560024FC00000000000000000000000000000000079 -S31560024FD00000000000000000000000000000000069 -S31560024FE00000000000000000000000000000000059 -S31560024FF00000000000000000000000000000000049 -S315600250000000000000000000000000000000000038 -S315600250100000000000000000000000000000000028 -S315600250200000000000000000000000000000000018 -S315600250300000000000000000000000000000000008 -S3156002504000000000000000000000000000000000F8 -S3156002505000000000000000000000000000000000E8 -S3156002506000000000000000000000000000000000D8 -S3156002507000000000000000000000000000000000C8 -S3156002508000000000000000000000000000000000B8 -S3156002509000000000000000000000000000000000A8 -S315600250A00000000000000000000000000000000098 -S315600250B00000000000000000000000000000000088 -S315600250C00000000000000000000000000000000078 -S315600250D00000000000000000000000000000000068 -S315600250E00000000000000000000000000000000058 -S315600250F00000000000000000000000000000000048 -S315600251000000000000000000000000000000000037 -S315600251100000000000000000000000000000000027 -S315600251200000000000000000000000000000000017 -S315600251300000000000000000000000000000000007 -S3156002514000000000000000000000000000000000F7 -S3156002515000000000000000000000000000000000E7 -S3156002516000000000000000000000000000000000D7 -S3156002517000000000000000000000000000000000C7 -S3156002518000000000000000000000000000000000B7 -S3156002519000000000000000000000000000000000A7 -S315600251A00000000000000000000000000000000097 -S315600251B00000000000000000000000000000000087 -S315600251C00000000000000000000000000000000077 -S315600251D00000000000000000000000000000000067 -S315600251E00000000000000000000000000000000057 -S315600251F00000000000000000000000000000000047 -S315600252000000000000000000000000000000000036 -S315600252100000000000000000000000000000000026 -S315600252200000000000000000000000000000000016 -S315600252300000000000000000000000000000000006 -S3156002524000000000000000000000000000000000F6 -S3156002525000000000000000000000000000000000E6 -S3156002526000000000000000000000000000000000D6 -S3156002527000000000000000000000000000000000C6 -S3156002528000000000000000000000000000000000B6 -S3156002529000000000000000000000000000000000A6 -S315600252A00000000000000000000000000000000096 -S315600252B00000000000000000000000000000000086 -S315600252C00000000000000000000000000000000076 -S315600252D00000000000000000000000000000000066 -S315600252E00000000000000000000000000000000056 -S315600252F00000000000000000000000000000000046 -S315600253000000000000000000000000000000000035 -S315600253100000000000000000000000000000000025 -S315600253200000000000000000000000000000000015 -S315600253300000000000000000000000000000000005 -S3156002534000000000000000000000000000000000F5 -S3156002535000000000000000000000000000000000E5 -S3156002536000000000000000000000000000000000D5 -S3156002537000000000000000000000000000000000C5 -S3156002538000000000000000000000000000000000B5 -S3156002539000000000000000000000000000000000A5 -S315600253A00000000000000000000000000000000095 -S315600253B00000000000000000000000000000000085 -S315600253C00000000000000000000000000000000075 -S315600253D00000000000000000000000000000000065 -S315600253E00000000000000000000000000000000055 -S315600253F00000000000000000000000000000000045 -S315600254000000000000000000000000000000000034 -S315600254100000000000000000000000000000000024 -S315600254200000000000000000000000000000000014 -S315600254300000000000000000000000000000000004 -S3156002544000000000000000000000000000000000F4 -S3156002545000000000000000000000000000000000E4 -S3156002546000000000000000000000000000000000D4 -S3156002547000000000000000000000000000000000C4 -S3156002548000000000000000000000000000000000B4 -S3156002549000000000000000000000000000000000A4 -S315600254A00000000000000000000000000000000094 -S315600254B00000000000000000000000000000000084 -S315600254C00000000000000000000000000000000074 -S315600254D00000000000000000000000000000000064 -S315600254E00000000000000000000000000000000054 -S315600254F00000000000000000000000000000000044 -S315600255000000000000000000000000000000000033 -S315600255100000000000000000000000000000000023 -S315600255200000000000000000000000000000000013 -S315600255300000000000000000000000000000000003 -S3156002554000000000000000000000000000000000F3 -S3156002555000000000000000000000000000000000E3 -S3156002556000000000000000000000000000000000D3 -S3156002557000000000000000000000000000000000C3 -S3156002558000000000000000000000000000000000B3 -S3156002559000000000000000000000000000000000A3 -S315600255A00000000000000000000000000000000093 -S315600255B00000000000000000000000000000000083 -S315600255C00000000000000000000000000000000073 -S315600255D00000000000000000000000000000000063 -S315600255E00000000000000000000000000000000053 -S315600255F00000000000000000000000000000000043 -S315600256000000000000000000000000000000000032 -S315600256100000000000000000000000000000000022 -S315600256200000000000000000000000000000000012 -S315600256300000000000000000000000000000000002 -S3156002564000000000000000000000000000000000F2 -S3156002565000000000000000000000000000000000E2 -S3156002566000000000000000000000000000000000D2 -S3156002567000000000000000000000000000000000C2 -S3156002568000000000000000000000000000000000B2 -S3156002569000000000000000000000000000000000A2 -S315600256A00000000000000000000000000000000092 -S315600256B00000000000000000000000000000000082 -S315600256C00000000000000000000000000000000072 -S315600256D00000000000000000000000000000000062 -S315600256E00000000000000000000000000000000052 -S315600256F00000000000000000000000000000000042 -S315600257000000000000000000000000000000000031 -S315600257100000000000000000000000000000000021 -S315600257200000000000000000000000000000000011 -S315600257300000000000000000000000000000000001 -S3156002574000000000000000000000000000000000F1 -S3156002575000000000000000000000000000000000E1 -S3156002576000000000000000000000000000000000D1 -S3156002577000000000000000000000000000000000C1 -S3156002578000000000000000000000000000000000B1 -S3156002579000000000000000000000000000000000A1 -S315600257A00000000000000000000000000000000091 -S315600257B00000000000000000000000000000000081 -S315600257C00000000000000000000000000000000071 -S315600257D00000000000000000000000000000000061 -S315600257E00000000000000000000000000000000051 -S315600257F00000000000000000000000000000000041 -S315600258000000000000000000000000000000000030 -S315600258100000000000000000000000000000000020 -S315600258200000000000000000000000000000000010 -S315600258300000000000000000000000000000000000 -S3156002584000000000000000000000000000000000F0 -S3156002585000000000000000000000000000000000E0 -S3156002586000000000000000000000000000000000D0 -S3156002587000000000000000000000000000000000C0 -S3156002588000000000000000000000000000000000B0 -S3156002589000000000000000000000000000000000A0 -S315600258A00000000000000000000000000000000090 -S315600258B00000000000000000000000000000000080 -S315600258C00000000000000000000000000000000070 -S315600258D00000000000000000000000000000000060 -S315600258E00000000000000000000000000000000050 -S315600258F00000000000000000000000000000000040 -S31560025900000000000000000000000000000000002F -S31560025910000000000000000000000000000000001F -S31560025920000000000000000000000000000000000F -S3156002593000000000000000000000000000000000FF -S3156002594000000000000000000000000000000000EF -S3156002595000000000000000000000000000000000DF -S3156002596000000000000000000000000000000000CF -S3156002597000000000000000000000000000000000BF -S3156002598000000000000000000000000000000000AF -S31560025990000000000000000000000000000000009F -S315600259A0000000000000000000000000000000008F -S315600259B0000000000000000000000000000000007F -S315600259C0000000000000000000000000000000006F -S315600259D0000000000000000000000000000000005F -S315600259E0000000000000000000000000000000004F -S315600259F0000000000000000000000000000000003F -S31560025A00000000000000000000000000000000002E -S31560025A10000000000000000000000000000000001E -S31560025A20000000000000000000000000000000000E -S31560025A3000000000000000000000000000000000FE -S31560025A4000000000000000000000000000000000EE -S31560025A5000000000000000000000000000000000DE -S31560025A6000000000000000000000000000000000CE -S31560025A7000000000000000000000000000000000BE -S31560025A8000000000000000000000000000000000AE -S31560025A90000000000000000000000000000000009E -S31560025AA0000000000000000000000000000000008E -S31560025AB0000000000000000000000000000000007E -S31560025AC0000000000000000000000000000000006E -S31560025AD0000000000000000000000000000000005E -S31560025AE0000000000000000000000000000000004E -S31560025AF0000000000000000000000000000000003E -S31560025B00000000000000000000000000000000002D -S31560025B10000000000000000000000000000000001D -S31560025B20000000000000000000000000000000000D -S31560025B3000000000000000000000000000000000FD -S31560025B4000000000000000000000000000000000ED -S31560025B5000000000000000000000000000000000DD -S31560025B6000000000000000000000000000000000CD -S31560025B7000000000000000000000000000000000BD -S31560025B8000000000000000000000000000000000AD -S31560025B90000000000000000000000000000000009D -S31560025BA0000000000000000000000000000000008D -S31560025BB0000000000000000000000000000000007D -S31560025BC0000000000000000000000000000000006D -S31560025BD0000000000000000000000000000000005D -S31560025BE0000000000000000000000000000000004D -S31560025BF0000000000000000000000000000000003D -S31560025C00000000000000000000000000000000002C -S31560025C10000000000000000000000000000000001C -S31560025C20000000000000000000000000000000000C -S31560025C3000000000000000000000000000000000FC -S31560025C4000000000000000000000000000000000EC -S31560025C5000000000000000000000000000000000DC -S31560025C6000000000000000000000000000000000CC -S31560025C7000000000000000000000000000000000BC -S31560025C8000000000000000000000000000000000AC -S31560025C90000000000000000000000000000000009C -S31560025CA0000000000000000000000000000000008C -S31560025CB0000000000000000000000000000000007C -S31560025CC0000000000000000000000000000000006C -S31560025CD0000000000000000000000000000000005C -S31560025CE0000000000000000000000000000000004C -S31560025CF0000000000000000000000000000000003C -S31560025D00000000000000000000000000000000002B -S31560025D10000000000000000000000000000000001B -S31560025D20000000000000000000000000000000000B -S31560025D3000000000000000000000000000000000FB -S31560025D4000000000000000000000000000000000EB -S31560025D5000000000000000000000000000000000DB -S31560025D6000000000000000000000000000000000CB -S31560025D7000000000000000000000000000000000BB -S31560025D8000000000000000000000000000000000AB -S31560025D90000000000000000000000000000000009B -S31560025DA0000000000000000000000000000000008B -S31560025DB0000000000000000000000000000000007B -S31560025DC0000000000000000000000000000000006B -S31560025DD0000000000000000000000000000000005B -S31560025DE0000000000000000000000000000000004B -S31560025DF0000000000000000000000000000000003B -S31560025E00000000000000000000000000000000002A -S31560025E10000000000000000000000000000000001A -S31560025E20000000000000000000000000000000000A -S31560025E3000000000000000000000000000000000FA -S31560025E4000000000000000000000000000000000EA -S31560025E5000000000000000000000000000000000DA -S31560025E6000000000000000000000000000000000CA -S31560025E7000000000000000000000000000000000BA -S31560025E8000000000000000000000000000000000AA -S31560025E90000000000000000000000000000000009A -S31560025EA0000000000000000000000000000000008A -S31560025EB0000000000000000000000000000000007A -S31560025EC0000000000000000000000000000000006A -S31560025ED0000000000000000000000000000000005A -S31560025EE0000000000000000000000000000000004A -S31560025EF0000000000000000000000000000000003A -S31560025F000000000000000000000000000000000029 -S31560025F100000000000000000000000000000000019 -S31560025F200000000000000000000000000000000009 -S31560025F3000000000000000000000000000000000F9 -S31560025F4000000000000000000000000000000000E9 -S31560025F5000000000000000000000000000000000D9 -S31560025F6000000000000000000000000000000000C9 -S31560025F7000000000000000000000000000000000B9 -S31560025F8000000000000000000000000000000000A9 -S31560025F900000000000000000000000000000000099 -S31560025FA00000000000000000000000000000000089 -S31560025FB00000000000000000000000000000000079 -S31560025FC00000000000000000000000000000000069 -S31560025FD00000000000000000000000000000000059 -S31560025FE00000000000000000000000000000000049 -S31560025FF00000000000000000000000000000000039 -S315600260000000000000000000000000000000000028 -S315600260100000000000000000000000000000000018 -S315600260200000000000000000000000000000000008 -S3156002603000000000000000000000000000000000F8 -S3156002604000000000000000000000000000000000E8 -S3156002605000000000000000000000000000000000D8 -S3156002606000000000000000000000000000000000C8 -S3156002607000000000000000000000000000000000B8 -S3156002608000000000000000000000000000000000A8 -S315600260900000000000000000000000000000000098 -S315600260A00000000000000000000000000000000088 -S315600260B00000000000000000000000000000000078 -S315600260C00000000000000000000000000000000068 -S315600260D00000000000000000000000000000000058 -S315600260E00000000000000000000000000000000048 -S315600260F00000000000000000000000000000000038 -S315600261000000000000000000000000000000000027 -S315600261100000000000000000000000000000000017 -S315600261200000000000000000000000000000000007 -S3156002613000000000000000000000000000000000F7 -S3156002614000000000000000000000000000000000E7 -S3156002615000000000000000000000000000000000D7 -S3156002616000000000000000000000000000000000C7 -S3156002617000000000000000000000000000000000B7 -S3156002618000000000000000000000000000000000A7 -S315600261900000000000000000000000000000000097 -S315600261A00000000000000000000000000000000087 -S315600261B00000000000000000000000000000000077 -S315600261C00000000000000000000000000000000067 -S315600261D00000000000000000000000000000000057 -S315600261E00000000000000000000000000000000047 -S315600261F00000000000000000000000000000000037 -S315600262000000000000000000000000000000000026 -S315600262100000000000000000000000000000000016 -S315600262200000000000000000000000000000000006 -S3156002623000000000000000000000000000000000F6 -S3156002624000000000000000000000000000000000E6 -S3156002625000000000000000000000000000000000D6 -S3156002626000000000000000000000000000000000C6 -S3156002627000000000000000000000000000000000B6 -S3156002628000000000000000000000000000000000A6 -S315600262900000000000000000000000000000000096 -S315600262A00000000000000000000000000000000086 -S315600262B00000000000000000000000000000000076 -S315600262C00000000000000000000000000000000066 -S315600262D00000000000000000000000000000000056 -S315600262E00000000000000000000000000000000046 -S315600262F00000000000000000000000000000000036 -S315600263000000000000000000000000000000000025 -S315600263100000000000000000000000000000000015 -S315600263200000000000000000000000000000000005 -S3156002633000000000000000000000000000000000F5 -S3156002634000000000000000000000000000000000E5 -S3156002635000000000000000000000000000000000D5 -S3156002636000000000000000000000000000000000C5 -S3156002637000000000000000000000000000000000B5 -S3156002638000000000000000000000000000000000A5 -S315600263900000000000000000000000000000000095 -S315600263A00000000000000000000000000000000085 -S315600263B00000000000000000000000000000000075 -S315600263C00000000000000000000000000000000065 -S315600263D00000000000000000000000000000000055 -S315600263E00000000000000000000000000000000045 -S315600263F00000000000000000000000000000000035 -S315600264000000000000000000000000000000000024 -S315600264100000000000000000000000000000000014 -S315600264200000000000000000000000000000000004 -S3156002643000000000000000000000000000000000F4 -S3156002644000000000000000000000000000000000E4 -S3156002645000000000000000000000000000000000D4 -S3156002646000000000000000000000000000000000C4 -S3156002647000000000000000000000000000000000B4 -S3156002648000000000000000000000000000000000A4 -S315600264900000000000000000000000000000000094 -S315600264A00000000000000000000000000000000084 -S315600264B00000000000000000000000000000000074 -S315600264C00000000000000000000000000000000064 -S315600264D00000000000000000000000000000000054 -S315600264E00000000000000000000000000000000044 -S315600264F00000000000000000000000000000000034 -S315600265000000000000000000000000000000000023 -S315600265100000000000000000000000000000000013 -S315600265200000000000000000000000000000000003 -S3156002653000000000000000000000000000000000F3 -S3156002654000000000000000000000000000000000E3 -S3156002655000000000000000000000000000000000D3 -S3156002656000000000000000000000000000000000C3 -S3156002657000000000000000000000000000000000B3 -S3156002658000000000000000000000000000000000A3 -S315600265900000000000000000000000000000000093 -S315600265A00000000000000000000000000000000083 -S315600265B00000000000000000000000000000000073 -S315600265C00000000000000000000000000000000063 -S315600265D00000000000000000000000000000000053 -S315600265E00000000000000000000000000000000043 -S315600265F00000000000000000000000000000000033 -S315600266000000000000000000000000000000000022 -S315600266100000000000000000000000000000000012 -S315600266200000000000000000000000000000000002 -S3156002663000000000000000000000000000000000F2 -S3156002664000000000000000000000000000000000E2 -S3156002665000000000000000000000000000000000D2 -S3156002666000000000000000000000000000000000C2 -S3156002667000000000000000000000000000000000B2 -S3156002668000000000000000000000000000000000A2 -S315600266900000000000000000000000000000000092 -S315600266A00000000000000000000000000000000082 -S315600266B00000000000000000000000000000000072 -S315600266C00000000000000000000000000000000062 -S315600266D00000000000000000000000000000000052 -S315600266E00000000000000000000000000000000042 -S315600266F00000000000000000000000000000000032 -S315600267000000000000000000000000000000000021 -S315600267100000000000000000000000000000000011 -S315600267200000000000000000000000000000000001 -S3156002673000000000000000000000000000000000F1 -S3156002674000000000000000000000000000000000E1 -S3156002675000000000000000000000000000000000D1 -S3156002676000000000000000000000000000000000C1 -S3156002677000000000000000000000000000000000B1 -S3156002678000000000000000000000000000000000A1 -S315600267900000000000000000000000000000000091 -S315600267A00000000000000000000000000000000081 -S315600267B00000000000000000000000000000000071 -S315600267C00000000000000000000000000000000061 -S315600267D00000000000000000000000000000000051 -S315600267E00000000000000000000000000000000041 -S315600267F00000000000000000000000000000000031 -S315600268000000000000000000000000000000000020 -S315600268100000000000000000000000000000000010 -S315600268200000000000000000000000000000000000 -S3156002683000000000000000000000000000000000F0 -S3156002684000000000000000000000000000000000E0 -S3156002685000000000000000000000000000000000D0 -S3156002686000000000000000000000000000000000C0 -S3156002687000000000000000000000000000000000B0 -S3156002688000000000000000000000000000000000A0 -S315600268900000000000000000000000000000000090 -S315600268A00000000000000000000000000000000080 -S315600268B00000000000000000000000000000000070 -S315600268C00000000000000000000000000000000060 -S315600268D00000000000000000000000000000000050 -S315600268E00000000000000000000000000000000040 -S315600268F00000000000000000000000000000000030 -S31560026900000000000000000000000000000000001F -S31560026910000000000000000000000000000000000F -S3156002692000000000000000000000000000000000FF -S3156002693000000000000000000000000000000000EF -S3156002694000000000000000000000000000000000DF -S3156002695000000000000000000000000000000000CF -S3156002696000000000000000000000000000000000BF -S3156002697000000000000000000000000000000000AF -S31560026980000000000000000000000000000000009F -S31560026990000000000000000000000000000000008F -S315600269A0000000000000000000000000000000007F -S315600269B0000000000000000000000000000000006F -S315600269C0000000000000000000000000000000005F -S315600269D0000000000000000000000000000000004F -S315600269E0000000000000000000000000000000003F -S315600269F0000000000000000000000000000000002F -S31560026A00000000000000000000000000000000001E -S31560026A10000000000000000000000000000000000E -S31560026A2000000000000000000000000000000000FE -S31560026A3000000000000000000000000000000000EE -S31560026A4000000000000000000000000000000000DE -S31560026A5000000000000000000000000000000000CE -S31560026A6000000000000000000000000000000000BE -S31560026A7000000000000000000000000000000000AE -S31560026A80000000000000000000000000000000009E -S31560026A90000000000000000000000000000000008E -S31560026AA0000000000000000000000000000000007E -S31560026AB0000000000000000000000000000000006E -S31560026AC0000000000000000000000000000000005E -S31560026AD0000000000000000000000000000000004E -S31560026AE0000000000000000000000000000000003E -S31560026AF0000000000000000000000000000000002E -S31560026B00000000000000000000000000000000001D -S31560026B10000000000000000000000000000000000D -S31560026B2000000000000000000000000000000000FD -S31560026B3000000000000000000000000000000000ED -S31560026B4000000000000000000000000000000000DD -S31560026B5000000000000000000000000000000000CD -S31560026B6000000000000000000000000000000000BD -S31560026B7000000000000000000000000000000000AD -S31560026B80000000000000000000000000000000009D -S31560026B90000000000000000000000000000000008D -S31560026BA0000000000000000000000000000000007D -S31560026BB0000000000000000000000000000000006D -S31560026BC0000000000000000000000000000000005D -S31560026BD0000000000000000000000000000000004D -S31560026BE0000000000000000000000000000000003D -S31560026BF0000000000000000000000000000000002D -S31560026C00000000000000000000000000000000001C -S31560026C10000000000000000000000000000000000C -S31560026C2000000000000000000000000000000000FC -S31560026C3000000000000000000000000000000000EC -S31560026C4000000000000000000000000000000000DC -S31560026C5000000000000000000000000000000000CC -S31560026C6000000000000000000000000000000000BC -S31560026C7000000000000000000000000000000000AC -S31560026C80000000000000000000000000000000009C -S31560026C90000000000000000000000000000000008C -S31560026CA0000000000000000000000000000000007C -S31560026CB0000000000000000000000000000000006C -S31560026CC0000000000000000000000000000000005C -S31560026CD0000000000000000000000000000000004C -S31560026CE0000000000000000000000000000000003C -S31560026CF0000000000000000000000000000000002C -S31560026D00000000000000000000000000000000001B -S31560026D10000000000000000000000000000000000B -S31560026D2000000000000000000000000000000000FB -S31560026D3000000000000000000000000000000000EB -S31560026D4000000000000000000000000000000000DB -S31560026D5000000000000000000000000000000000CB -S31560026D6000000000000000000000000000000000BB -S31560026D7000000000000000000000000000000000AB -S31560026D80000000000000000000000000000000009B -S31560026D90000000000000000000000000000000008B -S31560026DA0000000000000000000000000000000007B -S31560026DB0000000000000000000000000000000006B -S31560026DC0000000000000000000000000000000005B -S31560026DD0000000000000000000000000000000004B -S31560026DE0000000000000000000000000000000003B -S31560026DF0000000000000000000000000000000002B -S31560026E00000000000000000000000000000000001A -S31560026E10000000000000000000000000000000000A -S31560026E2000000000000000000000000000000000FA -S31560026E3000000000000000000000000000000000EA -S31560026E4000000000000000000000000000000000DA -S31560026E5000000000000000000000000000000000CA -S31560026E6000000000000000000000000000000000BA -S31560026E7000000000000000000000000000000000AA -S31560026E80000000000000000000000000000000009A -S31560026E90000000000000000000000000000000008A -S31560026EA0000000000000000000000000000000007A -S31560026EB0000000000000000000000000000000006A -S31560026EC0000000000000000000000000000000005A -S31560026ED0000000000000000000000000000000004A -S31560026EE0000000000000000000000000000000003A -S31560026EF0000000000000000000000000000000002A -S31560026F000000000000000000000000000000000019 -S31560026F100000000000000000000000000000000009 -S31560026F2000000000000000000000000000000000F9 -S31560026F3000000000000000000000000000000000E9 -S31560026F4000000000000000000000000000000000D9 -S31560026F5000000000000000000000000000000000C9 -S31560026F6000000000000000000000000000000000B9 -S31560026F7000000000000000000000000000000000A9 -S31560026F800000000000000000000000000000000099 -S31560026F900000000000000000000000000000000089 -S31560026FA00000000000000000000000000000000079 -S31560026FB00000000000000000000000000000000069 -S31560026FC00000000000000000000000000000000059 -S31560026FD00000000000000000000000000000000049 -S31560026FE00000000000000000000000000000000039 -S31560026FF00000000000000000000000000000000029 -S315600270000000000000000000000000000000000018 -S315600270100000000000000000000000000000000008 -S3156002702000000000000000000000000000000000F8 -S3156002703000000000000000000000000000000000E8 -S3156002704000000000000000000000000000000000D8 -S3156002705000000000000000000000000000000000C8 -S3156002706000000000000000000000000000000000B8 -S3156002707000000000000000000000000000000000A8 -S315600270800000000000000000000000000000000098 -S315600270900000000000000000000000000000000088 -S315600270A00000000000000000000000000000000078 -S315600270B00000000000000000000000000000000068 -S315600270C00000000000000000000000000000000058 -S315600270D00000000000000000000000000000000048 -S315600270E00000000000000000000000000000000038 -S315600270F00000000000000000000000000000000028 -S315600271000000000000000000000000000000000017 -S315600271100000000000000000000000000000000007 -S3156002712000000000000000000000000000000000F7 -S3156002713000000000000000000000000000000000E7 -S3156002714000000000000000000000000000000000D7 -S3156002715000000000000000000000000000000000C7 -S3156002716000000000000000000000000000000000B7 -S3156002717000000000000000000000000000000000A7 -S315600271800000000000000000000000000000000097 -S315600271900000000000000000000000000000000087 -S315600271A00000000000000000000000000000000077 -S315600271B00000000000000000000000000000000067 -S315600271C00000000000000000000000000000000057 -S315600271D00000000000000000000000000000000047 -S315600271E00000000000000000000000000000000037 -S315600271F00000000000000000000000000000000027 -S315600272000000000000000000000000000000000016 -S315600272100000000000000000000000000000000006 -S3156002722000000000000000000000000000000000F6 -S3156002723000000000000000000000000000000000E6 -S3156002724000000000000000000000000000000000D6 -S3156002725000000000000000000000000000000000C6 -S3156002726000000000000000000000000000000000B6 -S3156002727000000000000000000000000000000000A6 -S315600272800000000000000000000000000000000096 -S315600272900000000000000000000000000000000086 -S315600272A00000000000000000000000000000000076 -S315600272B00000000000000000000000000000000066 -S315600272C00000000000000000000000000000000056 -S315600272D00000000000000000000000000000000046 -S315600272E00000000000000000000000000000000036 -S315600272F00000000000000000000000000000000026 -S315600273000000000000000000000000000000000015 -S315600273100000000000000000000000000000000005 -S3156002732000000000000000000000000000000000F5 -S3156002733000000000000000000000000000000000E5 -S3156002734000000000000000000000000000000000D5 -S3156002735000000000000000000000000000000000C5 -S3156002736000000000000000000000000000000000B5 -S3156002737000000000000000000000000000000000A5 -S315600273800000000000000000000000000000000095 -S315600273900000000000000000000000000000000085 -S315600273A00000000000000000000000000000000075 -S315600273B00000000000000000000000000000000065 -S315600273C00000000000000000000000000000000055 -S315600273D00000000000000000000000000000000045 -S315600273E00000000000000000000000000000000035 -S315600273F00000000000000000000000000000000025 -S315600274000000000000000000000000000000000014 -S315600274100000000000000000000000000000000004 -S3156002742000000000000000000000000000000000F4 -S3156002743000000000000000000000000000000000E4 -S3156002744000000000000000000000000000000000D4 -S3156002745000000000000000000000000000000000C4 -S3156002746000000000000000000000000000000000B4 -S3156002747000000000000000000000000000000000A4 -S315600274800000000000000000000000000000000094 -S315600274900000000000000000000000000000000084 -S315600274A00000000000000000000000000000000074 -S315600274B00000000000000000000000000000000064 -S315600274C00000000000000000000000000000000054 -S315600274D00000000000000000000000000000000044 -S315600274E00000000000000000000000000000000034 -S315600274F00000000000000000000000000000000024 -S315600275000000000000000000000000000000000013 -S315600275100000000000000000000000000000000003 -S3156002752000000000000000000000000000000000F3 -S3156002753000000000000000000000000000000000E3 -S3156002754000000000000000000000000000000000D3 -S3156002755000000000000000000000000000000000C3 -S3156002756000000000000000000000000000000000B3 -S3156002757000000000000000000000000000000000A3 -S315600275800000000000000000000000000000000093 -S315600275900000000000000000000000000000000083 -S315600275A00000000000000000000000000000000073 -S315600275B00000000000000000000000000000000063 -S315600275C00000000000000000000000000000000053 -S315600275D00000000000000000000000000000000043 -S315600275E00000000000000000000000000000000033 -S315600275F00000000000000000000000000000000023 -S315600276000000000000000000000000000000000012 -S315600276100000000000000000000000000000000002 -S3156002762000000000000000000000000000000000F2 -S3156002763000000000000000000000000000000000E2 -S3156002764000000000000000000000000000000000D2 -S3156002765000000000000000000000000000000000C2 -S3156002766000000000000000000000000000000000B2 -S3156002767000000000000000000000000000000000A2 -S315600276800000000000000000000000000000000092 -S315600276900000000000000000000000000000000082 -S315600276A00000000000000000000000000000000072 -S315600276B00000000000000000000000000000000062 -S315600276C00000000000000000000000000000000052 -S315600276D00000000000000000000000000000000042 -S315600276E00000000000000000000000000000000032 -S315600276F00000000000000000000000000000000022 -S315600277000000000000000000000000000000000011 -S315600277100000000000000000000000000000000001 -S3156002772000000000000000000000000000000000F1 -S3156002773000000000000000000000000000000000E1 -S3156002774000000000000000000000000000000000D1 -S3156002775000000000000000000000000000000000C1 -S3156002776000000000000000000000000000000000B1 -S3156002777000000000000000000000000000000000A1 -S315600277800000000000000000000000000000000091 -S315600277900000000000000000000000000000000081 -S315600277A00000000000000000000000000000000071 -S315600277B00000000000000000000000000000000061 -S315600277C00000000000000000000000000000000051 -S315600277D00000000000000000000000000000000041 -S315600277E00000000000000000000000000000000031 -S315600277F00000000000000000000000000000000021 -S315600278000000000000000000000000000000000010 -S315600278100000000000000000000000000000000000 -S3156002782000000000000000000000000000000000F0 -S3156002783000000000000000000000000000000000E0 -S3156002784000000000000000000000000000000000D0 -S3156002785000000000000000000000000000000000C0 -S3156002786000000000000000000000000000000000B0 -S3156002787000000000000000000000000000000000A0 -S315600278800000000000000000000000000000000090 -S315600278900000000000000000000000000000000080 -S315600278A00000000000000000000000000000000070 -S315600278B00000000000000000000000000000000060 -S315600278C00000000000000000000000000000000050 -S315600278D00000000000000000000000000000000040 -S315600278E00000000000000000000000000000000030 -S315600278F00000000000000000000000000000000020 -S31560027900000000000000000000000000000000000F -S3156002791000000000000000000000000000000000FF -S3156002792000000000000000000000000000000000EF -S3156002793000000000000000000000000000000000DF -S3156002794000000000000000000000000000000000CF -S3156002795000000000000000000000000000000000BF -S3156002796000000000000000000000000000000000AF -S31560027970000000000000000000000000000000009F -S31560027980000000000000000000000000000000008F -S31560027990000000000000000000000000000000007F -S315600279A0000000000000000000000000000000006F -S315600279B0000000000000000000000000000000005F -S315600279C0000000000000000000000000000000004F -S315600279D0000000000000000000000000000000003F -S315600279E0000000000000000000000000000000002F -S315600279F0000000000000000000000000000000001F -S31560027A00000000000000000000000000000000000E -S31560027A1000000000000000000000000000000000FE -S31560027A2000000000000000000000000000000000EE -S31560027A3000000000000000000000000000000000DE -S31560027A4000000000000000000000000000000000CE -S31560027A5000000000000000000000000000000000BE -S31560027A6000000000000000000000000000000000AE -S31560027A70000000000000000000000000000000009E -S31560027A80000000000000000000000000000000008E -S31560027A90000000000000000000000000000000007E -S31560027AA0000000000000000000000000000000006E -S31560027AB0000000000000000000000000000000005E -S31560027AC0000000000000000000000000000000004E -S31560027AD0000000000000000000000000000000003E -S31560027AE0000000000000000000000000000000002E -S31560027AF0000000000000000000000000000000001E -S31560027B00000000000000000000000000000000000D -S31560027B1000000000000000000000000000000000FD -S31560027B2000000000000000000000000000000000ED -S31560027B3000000000000000000000000000000000DD -S31560027B4000000000000000000000000000000000CD -S31560027B5000000000000000000000000000000000BD -S31560027B6000000000000000000000000000000000AD -S31560027B70000000000000000000000000000000009D -S31560027B80000000000000000000000000000000008D -S31560027B90000000000000000000000000000000007D -S31560027BA0000000000000000000000000000000006D -S31560027BB0000000000000000000000000000000005D -S31560027BC0000000000000000000000000000000004D -S31560027BD0000000000000000000000000000000003D -S31560027BE0000000000000000000000000000000002D -S31560027BF0000000000000000000000000000000001D -S31560027C00000000000000000000000000000000000C -S31560027C1000000000000000000000000000000000FC -S31560027C2000000000000000000000000000000000EC -S31560027C3000000000000000000000000000000000DC -S31560027C4000000000000000000000000000000000CC -S31560027C5000000000000000000000000000000000BC -S31560027C6000000000000000000000000000000000AC -S31560027C70000000000000000000000000000000009C -S31560027C80000000000000000000000000000000008C -S31560027C90000000000000000000000000000000007C -S31560027CA0000000000000000000000000000000006C -S31560027CB0000000000000000000000000000000005C -S31560027CC0000000000000000000000000000000004C -S31560027CD0000000000000000000000000000000003C -S31560027CE0000000000000000000000000000000002C -S31560027CF0000000000000000000000000000000001C -S31560027D00000000000000000000000000000000000B -S31560027D1000000000000000000000000000000000FB -S31560027D2000000000000000000000000000000000EB -S31560027D3000000000000000000000000000000000DB -S31560027D4000000000000000000000000000000000CB -S31560027D5000000000000000000000000000000000BB -S31560027D6000000000000000000000000000000000AB -S31560027D70000000000000000000000000000000009B -S31560027D80000000000000000000000000000000008B -S31560027D90000000000000000000000000000000007B -S31560027DA0000000000000000000000000000000006B -S31560027DB0000000000000000000000000000000005B -S31560027DC0000000000000000000000000000000004B -S31560027DD0000000000000000000000000000000003B -S31560027DE0000000000000000000000000000000002B -S31560027DF0000000000000000000000000000000001B -S31560027E00000000000000000000000000000000000A -S31560027E1000000000000000000000000000000000FA -S31560027E2000000000000000000000000000000000EA -S31560027E3000000000000000000000000000000000DA -S31560027E4000000000000000000000000000000000CA -S31560027E5000000000000000000000000000000000BA -S31560027E6000000000000000000000000000000000AA -S31560027E70000000000000000000000000000000009A -S31560027E80000000000000000000000000000000008A -S31560027E90000000000000000000000000000000007A -S31560027EA0000000000000000000000000000000006A -S31560027EB0000000000000000000000000000000005A -S31560027EC0000000000000000000000000000000004A -S31560027ED0000000000000000000000000000000003A -S31560027EE0000000000000000000000000000000002A -S31560027EF0000000000000000000000000000000001A -S31560027F000000000000000000000000000000000009 -S31560027F1000000000000000000000000000000000F9 -S31560027F2000000000000000000000000000000000E9 -S31560027F3000000000000000000000000000000000D9 -S31560027F4000000000000000000000000000000000C9 -S31560027F5000000000000000000000000000000000B9 -S31560027F6000000000000000000000000000000000A9 -S31560027F700000000000000000000000000000000099 -S31560027F800000000000000000000000000000000089 -S31560027F900000000000000000000000000000000079 -S31560027FA00000000000000000000000000000000069 -S31560027FB00000000000000000000000000000000059 -S31560027FC00000000000000000000000000000000049 -S31560027FD00000000000000000000000000000000039 -S31560027FE00000000000000000000000000000000029 -S31560027FF00000000000000000000000000000000019 -S315600280000000003F0000000C0000003F000000126C -S31560028010000000FF000000180000000000000000E1 -S3156002802000000000000000000000000000000000E8 -S3156002803000000000000000000000000000000000D8 -S3156002804000000000000000000000000000000000C8 -S3156002805000000000000000000000000000000000B8 -S3156002806000000000000000000000000000000000A8 -S315600280700000000000000000000000000000000098 -S315600280800000000000000000000000000000000088 -S315600280900000000000000000000000000000000078 -S315600280A00000000000000000000000000000000068 -S315600280B00000000000000000000000000000000058 -S315600280C00000000000000000000000000000000048 -S315600280D00000000000000000000000000000000038 -S315600280E00000000000000000000000000000000028 -S315600280F00000000000000000000000000000000018 -S315600281000000000000000000000000000000000007 -S3156002811000000000000000000000000000000000F7 -S3156002812000000000000000000000000000000000E7 -S3156002813000000000000000000000000000000000D7 -S3156002814000000000000000000000000000000000C7 -S3156002815000000000000000000000000000000000B7 -S3156002816000000000000000000000000000000000A7 -S315600281700000000000000000000000000000000097 -S315600281800000000000000000000000000000000087 -S315600281900000000000000000000000000000000077 -S315600281A00000000000000000000000000000000067 -S315600281B00000000000000000000000000000000057 -S315600281C00000000000000000000000000000000047 -S315600281D00000000000000000000000000000000037 -S315600281E00000000000000000000000000000000027 -S315600281F00000000000000000000000000000000017 -S315600282000000000000000000000000000000000006 -S3156002821000000000000000000000000000000000F6 -S3156002822000000000000000000000000000000000E6 -S3156002823000000000000000000000000000000000D6 -S3156002824000000000000000000000000000000000C6 -S3156002825000000000000000000000000000000000B6 -S3156002826000000000000000000000000000000000A6 -S315600282700000000000000000000000000000000096 -S315600282800000000000000000000000000000000086 -S315600282900000000000000000000000000000000076 -S315600282A00000000000000000000000000000000066 -S315600282B00000000000000000000000000000000056 -S315600282C00000000000000000000000000000000046 -S315600282D00000000000000000000000000000000036 -S315600282E00000000000000000000000000000000026 -S315600282F00000000000000000000000000000000016 -S315600283000000000000000000000000000000000005 -S3156002831000000000000000000000000000000000F5 -S3156002832000000000000000000000000000000000E5 -S3156002833000000000000000000000000000000000D5 -S3156002834000000000000000000000000000000000C5 -S3156002835000000000000000000000000000000000B5 -S3156002836000000000000000000000000000000000A5 -S315600283700000000000000000000000000000000095 -S315600283800000000000000000000000000000000085 -S315600283900000000000000000000000000000000075 -S315600283A00000000000000000000000000000000065 -S315600283B00000000000000000000000000000000055 -S315600283C00000000000000000000000000000000045 -S315600283D00000000000000000000000000000000035 -S315600283E00000000000000000000000000000000025 -S315600283F00000000000000000000000000000000015 -S315600284000000000000000000000000000000000004 -S3156002841000000000000000000000000000000000F4 -S3156002842000000000000000000000000000000000E4 -S3156002843000000000000000000000000000000000D4 -S3156002844000000000000000000000000000000000C4 -S3156002845000000000000000000000000000000000B4 -S3156002846000000000000000000000000000000000A4 -S315600284700000000000000000000000000000000094 -S315600284800000000000000000000000000000000084 -S315600284900000000000000000000000000000000074 -S315600284A00000000000000000000000000000000064 -S315600284B00000000000000000000000000000000054 -S315600284C00000000000000000000000000000000044 -S315600284D00000000000000000000000000000000034 -S315600284E00000000000000000000000000000000024 -S315600284F00000000000000000000000000000000014 -S315600285000000000000000000000000000000000003 -S3156002851000000000000000000000000000000000F3 -S3156002852000000000000000000000000000000000E3 -S3156002853000000000000000000000000000000000D3 -S3156002854000000000000000000000000000000000C3 -S3156002855000000000000000000000000000000000B3 -S3156002856000000000000000000000000000000000A3 -S315600285700000000000000000000000000000000093 -S315600285800000000000000000000000000000000083 -S315600285900000000000000000000000000000000073 -S315600285A00000000000000000000000000000000063 -S315600285B00000000000000000000000000000000053 -S315600285C00000000000000000000000000000000043 -S315600285D00000000000000000000000000000000033 -S315600285E00000000000000000000000000000000023 -S315600285F00000000000000000000000000000000013 -S315600286000000000000000000000000000000000002 -S3156002861000000000000000000000000000000000F2 -S3156002862000000000000000000000000000000000E2 -S3156002863000000000000000000000000000000000D2 -S3156002864000000000000000000000000000000000C2 -S3156002865000000000000000000000000000000000B2 -S3156002866000000000000000000000000000000000A2 -S315600286700000000000000000000000000000000092 -S315600286800000000000000000000000000000000082 -S315600286900000000000000000000000000000000072 -S315600286A00000000000000000000000000000000062 -S315600286B00000000000000000000000000000000052 -S315600286C00000000000000000000000000000000042 -S315600286D00000000000000000000000000000000032 -S315600286E00000000000000000000000000000000022 -S315600286F00000000000000000000000000000000012 -S315600287000000000000000000000000000000000001 -S3156002871000000000000000000000000000000000F1 -S3156002872000000000000000000000000000000000E1 -S3156002873000000000000000000000000000000000D1 -S3156002874000000000000000000000000000000000C1 -S3156002875000000000000000000000000000000000B1 -S3156002876000000000000000000000000000000000A1 -S315600287700000000000000000000000000000000091 -S315600287800000000000000000000000000000000081 -S315600287900000000000000000000000000000000071 -S315600287A00000000000000000000000000000000061 -S315600287B00000000000000000000000000000000051 -S315600287C00000000000000000000000000000000041 -S315600287D00000000000000000000000000000000031 -S315600287E00000000000000000000000000000000021 -S315600287F00000000000000000000000000000000011 -S315600288000000000000000000000000000000000000 -S3156002881000000000000000000000000000000000F0 -S3156002882000000000000000000000000000000000E0 -S3156002883000000000000000000000000000000000D0 -S3156002884000000000000000000000000000000000C0 -S3156002885000000000000000000000000000000000B0 -S3156002886000000000000000000000000000000000A0 -S315600288700000000000000000000000000000000090 -S315600288800000000000000000000000000000000080 -S315600288900000000000000000000000000000000070 -S315600288A00000000000000000000000000000000060 -S315600288B00000000000000000000000000000000050 -S315600288C00000000000000000000000000000000040 -S315600288D00000000000000000000000000000000030 -S315600288E00000000000000000000000000000000020 -S315600288F00000000000000000000000000000000010 -S3156002890000000000000000000000000000000000FF -S3156002891000000000000000000000000000000000EF -S3156002892000000000000000000000000000000000DF -S3156002893000000000000000000000000000000000CF -S3156002894000000000000000000000000000000000BF -S3156002895000000000000000000000000000000000AF -S31560028960000000000000000000000000000000009F -S31560028970000000000000000000000000000000008F -S31560028980000000000000000000000000000000007F -S31560028990000000000000000000000000000000006F -S315600289A0000000000000000000000000000000005F -S315600289B0000000000000000000000000000000004F -S315600289C0000000000000000000000000000000003F -S315600289D0000000000000000000000000000000002F -S315600289E0000000000000000000000000000000001F -S315600289F0000000000000000000000000000000000F -S31560028A0000000000000000000000000000000000FE -S31560028A1000000000000000000000000000000000EE -S31560028A2000000000000000000000000000000000DE -S31560028A3000000000000000000000000000000000CE -S31560028A4000000000000000000000000000000000BE -S31560028A5000000000000000000000000000000000AE -S31560028A60000000000000000000000000000000009E -S31560028A70000000000000000000000000000000008E -S31560028A80000000000000000000000000000000007E -S31560028A90000000000000000000000000000000006E -S31560028AA0000000000000000000000000000000005E -S31560028AB0000000000000000000000000000000004E -S31560028AC0000000000000000000000000000000003E -S31560028AD0000000000000000000000000000000002E -S31560028AE0000000000000000000000000000000001E -S31560028AF0000000000000000000000000000000000E -S31560028B0000000000000000000000000000000000FD -S31560028B1000000000000000000000000000000000ED -S31560028B2000000000000000000000000000000000DD -S31560028B3000000000000000000000000000000000CD -S31560028B4000000000000000000000000000000000BD -S31560028B5000000000000000000000000000000000AD -S31560028B60000000000000000000000000000000009D -S31560028B70000000000000000000000000000000008D -S31560028B80000000000000000000000000000000007D -S31560028B90000000000000000000000000000000006D -S31560028BA0000000000000000000000000000000005D -S31560028BB0000000000000000000000000000000004D -S31560028BC0000000000000000000000000000000003D -S31560028BD0000000000000000000000000000000002D -S31560028BE0000000000000000000000000000000001D -S31560028BF0000000000000000000000000000000000D -S31560028C0000000000000000000000000000000000FC -S31560028C1000000000000000000000000000000000EC -S31560028C2000000000000000000000000000000000DC -S31560028C3000000000000000000000000000000000CC -S31560028C4000000000000000000000000000000000BC -S31560028C5000000000000000000000000000000000AC -S31560028C60000000000000000000000000000000009C -S31560028C70000000000000000000000000000000008C -S31560028C80000000000000000000000000000000007C -S31560028C90000000000000000000000000000000006C -S31560028CA0000000000000000000000000000000005C -S31560028CB0000000000000000000000000000000004C -S31560028CC0000000000000000000000000000000003C -S31560028CD0000000000000000000000000000000002C -S31560028CE0000000000000000000000000000000001C -S31560028CF0000000000000000000000000000000000C -S31560028D0000000000000000000000000000000000FB -S31560028D1000000000000000000000000000000000EB -S31560028D2000000000000000000000000000000000DB -S31560028D3000000000000000000000000000000000CB -S31560028D4000000000000000000000000000000000BB -S31560028D5000000000000000000000000000000000AB -S31560028D60000000000000000000000000000000009B -S31560028D70000000000000000000000000000000008B -S31560028D80000000000000000000000000000000007B -S31560028D90000000000000000000000000000000006B -S31560028DA0000000000000000000000000000000005B -S31560028DB0000000000000000000000000000000004B -S31560028DC0000000000000000000000000000000003B -S31560028DD0000000000000000000000000000000002B -S31560028DE0000000000000000000000000000000001B -S31560028DF0000000000000000000000000000000000B -S31560028E0000000000000000000000000000000000FA -S31560028E1000000000000000000000000000000000EA -S31560028E2000000000000000000000000000000000DA -S31560028E3000000000000000000000000000000000CA -S31560028E4000000000000000000000000000000000BA -S31560028E5000000000000000000000000000000000AA -S31560028E60000000000000000000000000000000009A -S31560028E70000000000000000000000000000000008A -S31560028E80000000000000000000000000000000007A -S31560028E90000000000000000000000000000000006A -S31560028EA0000000000000000000000000000000005A -S31560028EB0000000000000000000000000000000004A -S31560028EC0000000000000000000000000000000003A -S31560028ED0000000000000000000000000000000002A -S31560028EE0000000000000000000000000000000001A -S31560028EF0000000000000000000000000000000000A -S31560028F0000000000000000000000000000000000F9 -S31560028F1000000000000000000000000000000000E9 -S31560028F2000000000000000000000000000000000D9 -S31560028F3000000000000000000000000000000000C9 -S31560028F4000000000000000000000000000000000B9 -S31560028F5000000000000000000000000000000000A9 -S31560028F600000000000000000000000000000000099 -S31560028F700000000000000000000000000000000089 -S31560028F800000000000000000000000000000000079 -S31560028F900000000000000000000000000000000069 -S31560028FA00000000000000000000000000000000059 -S31560028FB00000000000000000000000000000000049 -S31560028FC00000000000000000000000000000000039 -S31560028FD00000000000000000000000000000000029 -S31560028FE00000000000000000000000000000000019 -S31560028FF00000000000000000000000000000000009 -S3156002900000000000000000000000000000000000F8 -S3156002901000000000000000000000000000000000E8 -S3156002902000000000000000000000000000000000D8 -S3156002903000000000000000000000000000000000C8 -S3156002904000000000000000000000000000000000B8 -S3156002905000000000000000000000000000000000A8 -S315600290600000000000000000000000000000000098 -S315600290700000000000000000000000000000000088 -S315600290800000000000000000000000000000000078 -S315600290900000000000000000000000000000000068 -S315600290A00000000000000000000000000000000058 -S315600290B00000000000000000000000000000000048 -S315600290C00000000000000000000000000000000038 -S315600290D00000000000000000000000000000000028 -S315600290E00000000000000000000000000000000018 -S315600290F00000000000000000000000000000000008 -S3156002910000000000000000000000000000000000F7 -S3156002911000000000000000000000000000000000E7 -S3156002912000000000000000000000000000000000D7 -S3156002913000000000000000000000000000000000C7 -S3156002914000000000000000000000000000000000B7 -S3156002915000000000000000000000000000000000A7 -S315600291600000000000000000000000000000000097 -S315600291700000000000000000000000000000000087 -S315600291800000000000000000000000000000000077 -S315600291900000000000000000000000000000000067 -S315600291A00000000000000000000000000000000057 -S315600291B00000000000000000000000000000000047 -S315600291C00000000000000000000000000000000037 -S315600291D00000000000000000000000000000000027 -S315600291E00000000000000000000000000000000017 -S315600291F00000000000000000000000000000000007 -S3156002920000000000000000000000000000000000F6 -S3156002921000000000000000000000000000000000E6 -S3156002922000000000000000000000000000000000D6 -S3156002923000000000000000000000000000000000C6 -S3156002924000000000000000000000000000000000B6 -S3156002925000000000000000000000000000000000A6 -S315600292600000000000000000000000000000000096 -S315600292700000000000000000000000000000000086 -S315600292800000000000000000000000000000000076 -S315600292900000000000000000000000000000000066 -S315600292A00000000000000000000000000000000056 -S315600292B00000000000000000000000000000000046 -S315600292C00000000000000000000000000000000036 -S315600292D00000000000000000000000000000000026 -S315600292E00000000000000000000000000000000016 -S315600292F00000000000000000000000000000000006 -S3156002930000000000000000000000000000000000F5 -S3156002931000000000000000000000000000000000E5 -S3156002932000000000000000000000000000000000D5 -S3156002933000000000000000000000000000000000C5 -S3156002934000000000000000000000000000000000B5 -S3156002935000000000000000000000000000000000A5 -S315600293600000000000000000000000000000000095 -S315600293700000000000000000000000000000000085 -S315600293800000000000000000000000000000000075 -S315600293900000000000000000000000000000000065 -S315600293A00000000000000000000000000000000055 -S315600293B00000000000000000000000000000000045 -S315600293C00000000000000000000000000000000035 -S315600293D00000000000000000000000000000000025 -S315600293E00000000000000000000000000000000015 -S315600293F00000000000000000000000000000000005 -S3156002940000000000000000000000000000000000F4 -S3156002941000000000000000000000000000000000E4 -S3156002942000000000000000000000000000000000D4 -S3156002943000000000000000000000000000000000C4 -S3156002944000000000000000000000000000000000B4 -S3156002945000000000000000000000000000000000A4 -S315600294600000000000000000000000000000000094 -S315600294700000000000000000000000000000000084 -S315600294800000000000000000000000000000000074 -S315600294900000000000000000000000000000000064 -S315600294A00000000000000000000000000000000054 -S315600294B00000000000000000000000000000000044 -S315600294C00000000000000000000000000000000034 -S315600294D00000000000000000000000000000000024 -S315600294E00000000000000000000000000000000014 -S315600294F00000000000000000000000000000000004 -S3156002950000000000000000000000000000000000F3 -S3156002951000000000000000000000000000000000E3 -S3156002952000000000000000000000000000000000D3 -S3156002953000000000000000000000000000000000C3 -S3156002954000000000000000000000000000000000B3 -S3156002955000000000000000000000000000000000A3 -S315600295600000000000000000000000000000000093 -S315600295700000000000000000000000000000000083 -S315600295800000000000000000000000000000000073 -S315600295900000000000000000000000000000000063 -S315600295A00000000000000000000000000000000053 -S315600295B00000000000000000000000000000000043 -S315600295C00000000000000000000000000000000033 -S315600295D00000000000000000000000000000000023 -S315600295E00000000000000000000000000000000013 -S315600295F00000000000000000000000000000000003 -S3156002960000000000000000000000000000000000F2 -S3156002961000000000000000000000000000000000E2 -S3156002962000000000000000000000000000000000D2 -S3156002963000000000000000000000000000000000C2 -S3156002964000000000000000000000000000000000B2 -S3156002965000000000000000000000000000000000A2 -S315600296600000000000000000000000000000000092 -S315600296700000000000000000000000000000000082 -S315600296800000000000000000000000000000000072 -S315600296900000000000000000000000000000000062 -S315600296A00000000000000000000000000000000052 -S315600296B00000000000000000000000000000000042 -S315600296C00000000000000000000000000000000032 -S315600296D00000000000000000000000000000000022 -S315600296E00000000000000000000000000000000012 -S315600296F00000000000000000000000000000000002 -S3156002970000000000000000000000000000000000F1 -S3156002971000000000000000000000000000000000E1 -S3156002972000000000000000000000000000000000D1 -S3156002973000000000000000000000000000000000C1 -S3156002974000000000000000000000000000000000B1 -S3156002975000000000000000000000000000000000A1 -S315600297600000000000000000000000000000000091 -S315600297700000000000000000000000000000000081 -S315600297800000000000000000000000000000000071 -S315600297900000000000000000000000000000000061 -S315600297A00000000000000000000000000000000051 -S315600297B00000000000000000000000000000000041 -S315600297C00000000000000000000000000000000031 -S315600297D00000000000000000000000000000000021 -S315600297E00000000000000000000000000000000011 -S315600297F00000000000000000000000000000000001 -S3156002980000000000000000000000000000000000F0 -S3156002981000000000000000000000000000000000E0 -S3156002982000000000000000000000000000000000D0 -S3156002983000000000000000000000000000000000C0 -S3156002984000000000000000000000000000000000B0 -S3156002985000000000000000000000000000000000A0 -S315600298600000000000000000000000000000000090 -S315600298700000000000000000000000000000000080 -S315600298800000000000000000000000000000000070 -S315600298900000000000000000000000000000000060 -S315600298A00000000000000000000000000000000050 -S315600298B00000000000000000000000000000000040 -S315600298C00000000000000000000000000000000030 -S315600298D00000000000000000000000000000000020 -S315600298E00000000000000000000000000000000010 -S315600298F00000000000000000000000000000000000 -S3156002990000000000000000000000000000000000EF -S3156002991000000000000000000000000000000000DF -S3156002992000000000000000000000000000000000CF -S3156002993000000000000000000000000000000000BF -S3156002994000000000000000000000000000000000AF -S31560029950000000000000000000000000000000009F -S31560029960000000000000000000000000000000008F -S31560029970000000000000000000000000000000007F -S31560029980000000000000000000000000000000006F -S31560029990000000000000000000000000000000005F -S315600299A0000000000000000000000000000000004F -S315600299B0000000000000000000000000000000003F -S315600299C0000000000000000000000000000000002F -S315600299D0000000000000000000000000000000001F -S315600299E0000000000000000000000000000000000F -S315600299F000000000000000000000000000000000FF -S31560029A0000000000000000000000000000000000EE -S31560029A1000000000000000000000000000000000DE -S31560029A2000000000000000000000000000000000CE -S31560029A3000000000000000000000000000000000BE -S31560029A4000000000000000000000000000000000AE -S31560029A50000000000000000000000000000000009E -S31560029A60000000000000000000000000000000008E -S31560029A70000000000000000000000000000000007E -S31560029A80000000000000000000000000000000006E -S31560029A90000000000000000000000000000000005E -S31560029AA0000000000000000000000000000000004E -S31560029AB0000000000000000000000000000000003E -S31560029AC0000000000000000000000000000000002E -S31560029AD0000000000000000000000000000000001E -S31560029AE0000000000000000000000000000000000E -S31560029AF000000000000000000000000000000000FE -S31560029B0000000000000000000000000000000000ED -S31560029B1000000000000000000000000000000000DD -S31560029B2000000000000000000000000000000000CD -S31560029B3000000000000000000000000000000000BD -S31560029B4000000000000000000000000000000000AD -S31560029B50000000000000000000000000000000009D -S31560029B60000000000000000000000000000000008D -S31560029B70000000000000000000000000000000007D -S31560029B80000000000000000000000000000000006D -S31560029B90000000000000000000000000000000005D -S31560029BA0000000000000000000000000000000004D -S31560029BB0000000000000000000000000000000003D -S31560029BC0000000000000000000000000000000002D -S31560029BD0000000000000000000000000000000001D -S31560029BE0000000000000000000000000000000000D -S31560029BF000000000000000000000000000000000FD -S31560029C0000000000000000000000000000000000EC -S31560029C1000000000000000000000000000000000DC -S31560029C2000000000000000000000000000000000CC -S31560029C3000000000000000000000000000000000BC -S31560029C4000000000000000000000000000000000AC -S31560029C50000000000000000000000000000000009C -S31560029C60000000000000000000000000000000008C -S31560029C70000000000000000000000000000000007C -S31560029C80000000000000000000000000000000006C -S31560029C90000000000000000000000000000000005C -S31560029CA0000000000000000000000000000000004C -S31560029CB0000000000000000000000000000000003C -S31560029CC0000000000000000000000000000000002C -S31560029CD0000000000000000000000000000000001C -S31560029CE0000000000000000000000000000000000C -S31560029CF000000000000000000000000000000000FC -S31560029D0000000000000000000000000000000000EB -S31560029D1000000000000000000000000000000000DB -S31560029D2000000000000000000000000000000000CB -S31560029D3000000000000000000000000000000000BB -S31560029D4000000000000000000000000000000000AB -S31560029D50000000000000000000000000000000009B -S31560029D60000000000000000000000000000000008B -S31560029D70000000000000000000000000000000007B -S31560029D80000000000000000000000000000000006B -S31560029D90000000000000000000000000000000005B -S31560029DA0000000000000000000000000000000004B -S31560029DB0000000000000000000000000000000003B -S31560029DC0000000000000000000000000000000002B -S31560029DD0000000000000000000000000000000001B -S31560029DE0000000000000000000000000000000000B -S31560029DF000000000000000000000000000000000FB -S31560029E0000000000000000000000000000000000EA -S31560029E1000000000000000000000000000000000DA -S31560029E2000000000000000000000000000000000CA -S31560029E3000000000000000000000000000000000BA -S31560029E4000000000000000000000000000000000AA -S31560029E50000000000000000000000000000000009A -S31560029E60000000000000000000000000000000008A -S31560029E70000000000000000000000000000000007A -S31560029E80000000000000000000000000000000006A -S31560029E90000000000000000000000000000000005A -S31560029EA0000000000000000000000000000000004A -S31560029EB0000000000000000000000000000000003A -S31560029EC0000000000000000000000000000000002A -S31560029ED0000000000000000000000000000000001A -S31560029EE0000000000000000000000000000000000A -S31560029EF000000000000000000000000000000000FA -S31560029F0000000000000000000000000000000000E9 -S31560029F1000000000000000000000000000000000D9 -S31560029F2000000000000000000000000000000000C9 -S31560029F3000000000000000000000000000000000B9 -S31560029F4000000000000000000000000000000000A9 -S31560029F500000000000000000000000000000000099 -S31560029F600000000000000000000000000000000089 -S31560029F700000000000000000000000000000000079 -S31560029F800000000000000000000000000000000069 -S31560029F900000000000000000000000000000000059 -S31560029FA00000000000000000000000000000000049 -S31560029FB00000000000000000000000000000000039 -S31560029FC00000000000000000000000000000000029 -S31560029FD00000000000000000000000000000000019 -S31560029FE00000000000000000000000000000000009 -S31560029FF000000000000000000000000000000000F9 -S3156002A00000000000000000000000000000000000E8 -S3156002A01000000000000000000000000000000000D8 -S3156002A02000000000000000000000000000000000C8 -S3156002A03000000000000000000000000000000000B8 -S3156002A04000000000000000000000000000000000A8 -S3156002A0500000000000000000000000000000000098 -S3156002A0600000000000000000000000000000000088 -S3156002A0700000000000000000000000000000000078 -S3156002A0800000000000000000000000000000000068 -S3156002A0900000000000000000000000000000000058 -S3156002A0A00000000000000000000000000000000048 -S3156002A0B00000000000000000000000000000000038 -S3156002A0C00000000000000000000000000000000028 -S3156002A0D00000000000000000000000000000000018 -S3156002A0E00000000000000000000000000000000008 -S3156002A0F000000000000000000000000000000000F8 -S3156002A10000000000000000000000000000000000E7 -S3156002A11000000000000000000000000000000000D7 -S3156002A12000000000000000000000000000000000C7 -S3156002A13000000000000000000000000000000000B7 -S3156002A14000000000000000000000000000000000A7 -S3156002A1500000000000000000000000000000000097 -S3156002A1600000000000000000000000000000000087 -S3156002A1700000000000000000000000000000000077 -S3156002A1800000000000000000000000000000000067 -S3156002A1900000000000000000000000000000000057 -S3156002A1A00000000000000000000000000000000047 -S3156002A1B00000000000000000000000000000000037 -S3156002A1C00000000000000000000000000000000027 -S3156002A1D00000000000000000000000000000000017 -S3156002A1E00000000000000000000000000000000007 -S3156002A1F000000000000000000000000000000000F7 -S3156002A20000000000000000000000000000000000E6 -S3156002A21000000000000000000000000000000000D6 -S3156002A22000000000000000000000000000000000C6 -S3156002A23000000000000000000000000000000000B6 -S3156002A24000000000000000000000000000000000A6 -S3156002A2500000000000000000000000000000000096 -S3156002A2600000000000000000000000000000000086 -S3156002A2700000000000000000000000000000000076 -S3156002A2800000000000000000000000000000000066 -S3156002A2900000000000000000000000000000000056 -S3156002A2A00000000000000000000000000000000046 -S3156002A2B00000000000000000000000000000000036 -S3156002A2C00000000000000000000000000000000026 -S3156002A2D00000000000000000000000000000000016 -S3156002A2E00000000000000000000000000000000006 -S3156002A2F000000000000000000000000000000000F6 -S3156002A30000000000000000000000000000000000E5 -S3156002A31000000000000000000000000000000000D5 -S3156002A32000000000000000000000000000000000C5 -S3156002A33000000000000000000000000000000000B5 -S3156002A34000000000000000000000000000000000A5 -S3156002A3500000000000000000000000000000000095 -S3156002A3600000000000000000000000000000000085 -S3156002A3700000000000000000000000000000000075 -S3156002A3800000000000000000000000000000000065 -S3156002A3900000000000000000000000000000000055 -S3156002A3A00000000000000000000000000000000045 -S3156002A3B00000000000000000000000000000000035 -S3156002A3C00000000000000000000000000000000025 -S3156002A3D00000000000000000000000000000000015 -S3156002A3E00000000000000000000000000000000005 -S3156002A3F000000000000000000000000000000000F5 -S3156002A40000000000000000000000000000000000E4 -S3156002A41000000000000000000000000000000000D4 -S3156002A42000000000000000000000000000000000C4 -S3156002A43000000000000000000000000000000000B4 -S3156002A44000000000000000000000000000000000A4 -S3156002A4500000000000000000000000000000000094 -S3156002A4600000000000000000000000000000000084 -S3156002A4700000000000000000000000000000000074 -S3156002A4800000000000000000000000000000000064 -S3156002A4900000000000000000000000000000000054 -S3156002A4A00000000000000000000000000000000044 -S3156002A4B00000000000000000000000000000000034 -S3156002A4C00000000000000000000000000000000024 -S3156002A4D00000000000000000000000000000000014 -S3156002A4E00000000000000000000000000000000004 -S3156002A4F000000000000000000000000000000000F4 -S3156002A50000000000000000000000000000000000E3 -S3156002A51000000000000000000000000000000000D3 -S3156002A52000000000000000000000000000000000C3 -S3156002A53000000000000000000000000000000000B3 -S3156002A54000000000000000000000000000000000A3 -S3156002A5500000000000000000000000000000000093 -S3156002A5600000000000000000000000000000000083 -S3156002A5700000000000000000000000000000000073 -S3156002A5800000000000000000000000000000000063 -S3156002A5900000000000000000000000000000000053 -S3156002A5A00000000000000000000000000000000043 -S3156002A5B00000000000000000000000000000000033 -S3156002A5C00000000000000000000000000000000023 -S3156002A5D00000000000000000000000000000000013 -S3156002A5E00000000000000000000000000000000003 -S3156002A5F000000000000000000000000000000000F3 -S3156002A60000000000000000000000000000000000E2 -S3156002A61000000000000000000000000000000000D2 -S3156002A62000000000000000000000000000000000C2 -S3156002A63000000000000000000000000000000000B2 -S3156002A64000000000000000000000000000000000A2 -S3156002A6500000000000000000000000000000000092 -S3156002A6600000000000000000000000000000000082 -S3156002A6700000000000000000000000000000000072 -S3156002A6800000000000000000000000000000000062 -S3156002A6900000000000000000000000000000000052 -S3156002A6A00000000000000000000000000000000042 -S3156002A6B00000000000000000000000000000000032 -S3156002A6C00000000000000000000000000000000022 -S3156002A6D00000000000000000000000000000000012 -S3156002A6E00000000000000000000000000000000002 -S3156002A6F000000000000000000000000000000000F2 -S3156002A70000000000000000000000000000000000E1 -S3156002A71000000000000000000000000000000000D1 -S3156002A72000000000000000000000000000000000C1 -S3156002A73000000000000000000000000000000000B1 -S3156002A74000000000000000000000000000000000A1 -S3156002A7500000000000000000000000000000000091 -S3156002A7600000000000000000000000000000000081 -S3156002A7700000000000000000000000000000000071 -S3156002A7800000000000000000000000000000000061 -S3156002A7900000000000000000000000000000000051 -S3156002A7A00000000000000000000000000000000041 -S3156002A7B00000000000000000000000000000000031 -S3156002A7C00000000000000000000000000000000021 -S3156002A7D00000000000000000000000000000000011 -S3156002A7E00000000000000000000000000000000001 -S3156002A7F000000000000000000000000000000000F1 -S3156002A80000000000000000000000000000000000E0 -S3156002A81000000000000000000000000000000000D0 -S3156002A82000000000000000000000000000000000C0 -S3156002A83000000000000000000000000000000000B0 -S3156002A84000000000000000000000000000000000A0 -S3156002A8500000000000000000000000000000000090 -S3156002A8600000000000000000000000000000000080 -S3156002A8700000000000000000000000000000000070 -S3156002A8800000000000000000000000000000000060 -S3156002A8900000000000000000000000000000000050 -S3156002A8A00000000000000000000000000000000040 -S3156002A8B00000000000000000000000000000000030 -S3156002A8C00000000000000000000000000000000020 -S3156002A8D00000000000000000000000000000000010 -S3156002A8E00000000000000000000000000000000000 -S3156002A8F000000000000000000000000000000000F0 -S3156002A90000000000000000000000000000000000DF -S3156002A91000000000000000000000000000000000CF -S3156002A92000000000000000000000000000000000BF -S3156002A93000000000000000000000000000000000AF -S3156002A940000000000000000000000000000000009F -S3156002A950000000000000000000000000000000008F -S3156002A960000000000000000000000000000000007F -S3156002A970000000000000000000000000000000006F -S3156002A980000000000000000000000000000000005F -S3156002A990000000000000000000000000000000004F -S3156002A9A0000000000000000000000000000000003F -S3156002A9B0000000000000000000000000000000002F -S3156002A9C0000000000000000000000000000000001F -S3156002A9D0000000000000000000000000000000000F -S3156002A9E000000000000000000000000000000000FF -S3156002A9F000000000000000000000000000000000EF -S3156002AA0000000000000000000000000000000000DE -S3156002AA1000000000000000000000000000000000CE -S3156002AA2000000000000000000000000000000000BE -S3156002AA3000000000000000000000000000000000AE -S3156002AA40000000000000000000000000000000009E -S3156002AA50000000000000000000000000000000008E -S3156002AA60000000000000000000000000000000007E -S3156002AA70000000000000000000000000000000006E -S3156002AA80000000000000000000000000000000005E -S3156002AA90000000000000000000000000000000004E -S3156002AAA0000000000000000000000000000000003E -S3156002AAB0000000000000000000000000000000002E -S3156002AAC0000000000000000000000000000000001E -S3156002AAD0000000000000000000000000000000000E -S3156002AAE000000000000000000000000000000000FE -S3156002AAF000000000000000000000000000000000EE -S3156002AB0000000000000000000000000000000000DD -S3156002AB1000000000000000000000000000000000CD -S3156002AB2000000000000000000000000000000000BD -S3156002AB3000000000000000000000000000000000AD -S3156002AB40000000000000000000000000000000009D -S3156002AB50000000000000000000000000000000008D -S3156002AB60000000000000000000000000000000007D -S3156002AB70000000000000000000000000000000006D -S3156002AB80000000000000000000000000000000005D -S3156002AB90000000000000000000000000000000004D -S3156002ABA0000000000000000000000000000000003D -S3156002ABB0000000000000000000000000000000002D -S3156002ABC0000000000000000000000000000000001D -S3156002ABD0000000000000000000000000000000000D -S3156002ABE000000000000000000000000000000000FD -S3156002ABF000000000000000000000000000000000ED -S3156002AC0000000000000000000000000000000000DC -S3156002AC1000000000000000000000000000000000CC -S3156002AC2000000000000000000000000000000000BC -S3156002AC3000000000000000000000000000000000AC -S3156002AC40000000000000000000000000000000009C -S3156002AC50000000000000000000000000000000008C -S3156002AC60000000000000000000000000000000007C -S3156002AC70000000000000000000000000000000006C -S3156002AC80000000000000000000000000000000005C -S3156002AC90000000000000000000000000000000004C -S3156002ACA0000000000000000000000000000000003C -S3156002ACB0000000000000000000000000000000002C -S3156002ACC0000000000000000000000000000000001C -S3156002ACD0000000000000000000000000000000000C -S3156002ACE000000000000000000000000000000000FC -S3156002ACF000000000000000000000000000000000EC -S3156002AD0000000000000000000000000000000000DB -S3156002AD1000000000000000000000000000000000CB -S3156002AD2000000000000000000000000000000000BB -S3156002AD3000000000000000000000000000000000AB -S3156002AD40000000000000000000000000000000009B -S3156002AD50000000000000000000000000000000008B -S3156002AD60000000000000000000000000000000007B -S3156002AD70000000000000000000000000000000006B -S3156002AD80000000000000000000000000000000005B -S3156002AD90000000000000000000000000000000004B -S3156002ADA0000000000000000000000000000000003B -S3156002ADB0000000000000000000000000000000002B -S3156002ADC0000000000000000000000000000000001B -S3156002ADD0000000000000000000000000000000000B -S3156002ADE000000000000000000000000000000000FB -S3156002ADF000000000000000000000000000000000EB -S3156002AE0000000000000000000000000000000000DA -S3156002AE1000000000000000000000000000000000CA -S3156002AE2000000000000000000000000000000000BA -S3156002AE3000000000000000000000000000000000AA -S3156002AE40000000000000000000000000000000009A -S3156002AE50000000000000000000000000000000008A -S3156002AE60000000000000000000000000000000007A -S3156002AE70000000000000000000000000000000006A -S3156002AE80000000000000000000000000000000005A -S3156002AE90000000000000000000000000000000004A -S3156002AEA0000000000000000000000000000000003A -S3156002AEB0000000000000000000000000000000002A -S3156002AEC0000000000000000000000000000000001A -S3156002AED0000000000000000000000000000000000A -S3156002AEE000000000000000000000000000000000FA -S3156002AEF000000000000000000000000000000000EA -S3156002AF0000000000000000000000000000000000D9 -S3156002AF1000000000000000000000000000000000C9 -S3156002AF2000000000000000000000000000000000B9 -S3156002AF3000000000000000000000000000000000A9 -S3156002AF400000000000000000000000000000000099 -S3156002AF500000000000000000000000000000000089 -S3156002AF600000000000000000000000000000000079 -S3156002AF700000000000000000000000000000000069 -S3156002AF800000000000000000000000000000000059 -S3156002AF900000000000000000000000000000000049 -S3156002AFA00000000000000000000000000000000039 -S3156002AFB00000000000000000000000000000000029 -S3156002AFC00000000000000000000000000000000019 -S3156002AFD00000000000000000000000000000000009 -S3156002AFE000000000000000000000000000000000F9 -S3156002AFF000000000000000000000000000000000E9 -S3156002B00000000000000000000000000000000000D8 -S3156002B01000000000000000000000000000000000C8 -S3156002B02000000000000000000000000000000000B8 -S3156002B03000000000000000000000000000000000A8 -S3156002B0400000000000000000000000000000000098 -S3156002B0500000000000000000000000000000000088 -S3156002B0600000000000000000000000000000000078 -S3156002B0700000000000000000000000000000000068 -S3156002B0800000000000000000000000000000000058 -S3156002B0900000000000000000000000000000000048 -S3156002B0A00000000000000000000000000000000038 -S3156002B0B00000000000000000000000000000000028 -S3156002B0C00000000000000000000000000000000018 -S3156002B0D00000000000000000000000000000000008 -S3156002B0E000000000000000000000000000000000F8 -S3156002B0F000000000000000000000000000000000E8 -S3156002B10000000000000000000000000000000000D7 -S3156002B11000000000000000000000000000000000C7 -S3156002B12000000000000000000000000000000000B7 -S3156002B13000000000000000000000000000000000A7 -S3156002B1400000000000000000000000000000000097 -S3156002B1500000000000000000000000000000000087 -S3156002B1600000000000000000000000000000000077 -S3156002B1700000000000000000000000000000000067 -S3156002B1800000000000000000000000000000000057 -S3156002B1900000000000000000000000000000000047 -S3156002B1A00000000000000000000000000000000037 -S3156002B1B00000000000000000000000000000000027 -S3156002B1C00000000000000000000000000000000017 -S3156002B1D00000000000000000000000000000000007 -S3156002B1E000000000000000000000000000000000F7 -S3156002B1F000000000000000000000000000000000E7 -S3156002B20000000000000000000000000000000000D6 -S3156002B21000000000000000000000000000000000C6 -S3156002B22000000000000000000000000000000000B6 -S3156002B23000000000000000000000000000000000A6 -S3156002B2400000000000000000000000000000000096 -S3156002B2500000000000000000000000000000000086 -S3156002B2600000000000000000000000000000000076 -S3156002B2700000000000000000000000000000000066 -S3156002B2800000000000000000000000000000000056 -S3156002B2900000000000000000000000000000000046 -S3156002B2A00000000000000000000000000000000036 -S3156002B2B00000000000000000000000000000000026 -S3156002B2C00000000000000000000000000000000016 -S3156002B2D00000000000000000000000000000000006 -S3156002B2E000000000000000000000000000000000F6 -S3156002B2F000000000000000000000000000000000E6 -S3156002B30000000000000000000000000000000000D5 -S3156002B31000000000000000000000000000000000C5 -S3156002B32000000000000000000000000000000000B5 -S3156002B33000000000000000000000000000000000A5 -S3156002B3400000000000000000000000000000000095 -S3156002B3500000000000000000000000000000000085 -S3156002B3600000000000000000000000000000000075 -S3156002B3700000000000000000000000000000000065 -S3156002B3800000000000000000000000000000000055 -S3156002B3900000000000000000000000000000000045 -S3156002B3A00000000000000000000000000000000035 -S3156002B3B00000000000000000000000000000000025 -S3156002B3C00000000000000000000000000000000015 -S3156002B3D00000000000000000000000000000000005 -S3156002B3E000000000000000000000000000000000F5 -S3156002B3F000000000000000000000000000000000E5 -S3156002B40000000000000000000000000000000000D4 -S3156002B41000000000000000000000000000000000C4 -S3156002B42000000000000000000000000000000000B4 -S3156002B43000000000000000000000000000000000A4 -S3156002B4400000000000000000000000000000000094 -S3156002B4500000000000000000000000000000000084 -S3156002B4600000000000000000000000000000000074 -S3156002B4700000000000000000000000000000000064 -S3156002B4800000000000000000000000000000000054 -S3156002B4900000000000000000000000000000000044 -S3156002B4A00000000000000000000000000000000034 -S3156002B4B00000000000000000000000000000000024 -S3156002B4C00000000000000000000000000000000014 -S3156002B4D00000000000000000000000000000000004 -S3156002B4E000000000000000000000000000000000F4 -S3156002B4F000000000000000000000000000000000E4 -S3156002B50000000000000000000000000000000000D3 -S3156002B51000000000000000000000000000000000C3 -S3156002B52000000000000000000000000000000000B3 -S3156002B53000000000000000000000000000000000A3 -S3156002B5400000000000000000000000000000000093 -S3156002B5500000000000000000000000000000000083 -S3156002B5600000000000000000000000000000000073 -S3156002B5700000000000000000000000000000000063 -S3156002B5800000000000000000000000000000000053 -S3156002B5900000000000000000000000000000000043 -S3156002B5A00000000000000000000000000000000033 -S3156002B5B00000000000000000000000000000000023 -S3156002B5C00000000000000000000000000000000013 -S3156002B5D00000000000000000000000000000000003 -S3156002B5E000000000000000000000000000000000F3 -S3156002B5F000000000000000000000000000000000E3 -S3156002B60000000000000000000000000000000000D2 -S3156002B61000000000000000000000000000000000C2 -S3156002B62000000000000000000000000000000000B2 -S3156002B63000000000000000000000000000000000A2 -S3156002B6400000000000000000000000000000000092 -S3156002B6500000000000000000000000000000000082 -S3156002B6600000000000000000000000000000000072 -S3156002B6700000000000000000000000000000000062 -S3156002B6800000000000000000000000000000000052 -S3156002B6900000000000000000000000000000000042 -S3156002B6A00000000000000000000000000000000032 -S3156002B6B00000000000000000000000000000000022 -S3156002B6C00000000000000000000000000000000012 -S3156002B6D00000000000000000000000000000000002 -S3156002B6E000000000000000000000000000000000F2 -S3156002B6F000000000000000000000000000000000E2 -S3156002B70000000000000000000000000000000000D1 -S3156002B71000000000000000000000000000000000C1 -S3156002B72000000000000000000000000000000000B1 -S3156002B73000000000000000000000000000000000A1 -S3156002B7400000000000000000000000000000000091 -S3156002B7500000000000000000000000000000000081 -S3156002B7600000000000000000000000000000000071 -S3156002B7700000000000000000000000000000000061 -S3156002B7800000000000000000000000000000000051 -S3156002B7900000000000000000000000000000000041 -S3156002B7A00000000000000000000000000000000031 -S3156002B7B00000000000000000000000000000000021 -S3156002B7C00000000000000000000000000000000011 -S3156002B7D00000000000000000000000000000000001 -S3156002B7E000000000000000000000000000000000F1 -S3156002B7F000000000000000000000000000000000E1 -S3156002B80000000000000000000000000000000000D0 -S3156002B81000000000000000000000000000000000C0 -S3156002B82000000000000000000000000000000000B0 -S3156002B83000000000000000000000000000000000A0 -S3156002B8400000000000000000000000000000000090 -S3156002B8500000000000000000000000000000000080 -S3156002B8600000000000000000000000000000000070 -S3156002B8700000000000000000000000000000000060 -S3156002B8800000000000000000000000000000000050 -S3156002B8900000000000000000000000000000000040 -S3156002B8A00000000000000000000000000000000030 -S3156002B8B00000000000000000000000000000000020 -S3156002B8C00000000000000000000000000000000010 -S3156002B8D00000000000000000000000000000000000 -S3156002B8E000000000000000000000000000000000F0 -S3156002B8F000000000000000000000000000000000E0 -S3156002B90000000000000000000000000000000000CF -S3156002B91000000000000000000000000000000000BF -S3156002B92000000000000000000000000000000000AF -S3156002B930000000000000000000000000000000009F -S3156002B940000000000000000000000000000000008F -S3156002B950000000000000000000000000000000007F -S3156002B960000000000000000000000000000000006F -S3156002B970000000000000000000000000000000005F -S3156002B980000000000000000000000000000000004F -S3156002B990000000000000000000000000000000003F -S3156002B9A0000000000000000000000000000000002F -S3156002B9B0000000000000000000000000000000001F -S3156002B9C0000000000000000000000000000000000F -S3156002B9D000000000000000000000000000000000FF -S3156002B9E000000000000000000000000000000000EF -S3156002B9F000000000000000000000000000000000DF -S3156002BA0000000000000000000000000000000000CE -S3156002BA1000000000000000000000000000000000BE -S3156002BA2000000000000000000000000000000000AE -S3156002BA30000000000000000000000000000000009E -S3156002BA40000000000000000000000000000000008E -S3156002BA50000000000000000000000000000000007E -S3156002BA60000000000000000000000000000000006E -S3156002BA70000000000000000000000000000000005E -S3156002BA80000000000000000000000000000000004E -S3156002BA90000000000000000000000000000000003E -S3156002BAA0000000000000000000000000000000002E -S3156002BAB0000000000000000000000000000000001E -S3156002BAC0000000000000000000000000000000000E -S3156002BAD000000000000000000000000000000000FE -S3156002BAE000000000000000000000000000000000EE -S3156002BAF000000000000000000000000000000000DE -S3156002BB0000000000000000000000000000000000CD -S3156002BB1000000000000000000000000000000000BD -S3156002BB2000000000000000000000000000000000AD -S3156002BB30000000000000000000000000000000009D -S3156002BB40000000000000000000000000000000008D -S3156002BB50000000000000000000000000000000007D -S3156002BB60000000000000000000000000000000006D -S3156002BB70000000000000000000000000000000005D -S3156002BB80000000000000000000000000000000004D -S3156002BB90000000000000000000000000000000003D -S3156002BBA0000000000000000000000000000000002D -S3156002BBB0000000000000000000000000000000001D -S3156002BBC0000000000000000000000000000000000D -S3156002BBD000000000000000000000000000000000FD -S3156002BBE000000000000000000000000000000000ED -S3156002BBF000000000000000000000000000000000DD -S3156002BC0000000000000000000000000000000000CC -S3156002BC1000000000000000000000000000000000BC -S3156002BC2000000000000000000000000000000000AC -S3156002BC30000000000000000000000000000000009C -S3156002BC40000000000000000000000000000000008C -S3156002BC50000000000000000000000000000000007C -S3156002BC60000000000000000000000000000000006C -S3156002BC70000000000000000000000000000000005C -S3156002BC80000000000000000000000000000000004C -S3156002BC90000000000000000000000000000000003C -S3156002BCA0000000000000000000000000000000002C -S3156002BCB0000000000000000000000000000000001C -S3156002BCC0000000000000000000000000000000000C -S3156002BCD000000000000000000000000000000000FC -S3156002BCE000000000000000000000000000000000EC -S3156002BCF000000000000000000000000000000000DC -S3156002BD0000000000000000000000000000000000CB -S3156002BD1000000000000000000000000000000000BB -S3156002BD2000000000000000000000000000000000AB -S3156002BD30000000000000000000000000000000009B -S3156002BD40000000000000000000000000000000008B -S3156002BD50000000000000000000000000000000007B -S3156002BD60000000000000000000000000000000006B -S3156002BD70000000000000000000000000000000005B -S3156002BD80000000000000000000000000000000004B -S3156002BD90000000000000000000000000000000003B -S3156002BDA0000000000000000000000000000000002B -S3156002BDB0000000000000000000000000000000001B -S3156002BDC0000000000000000000000000000000000B -S3156002BDD000000000000000000000000000000000FB -S3156002BDE000000000000000000000000000000000EB -S3156002BDF000000000000000000000000000000000DB -S3156002BE0000000000000000000000000000000000CA -S3156002BE1000000000000000000000000000000000BA -S3156002BE2000000000000000000000000000000000AA -S3156002BE30000000000000000000000000000000009A -S3156002BE40000000000000000000000000000000008A -S3156002BE50000000000000000000000000000000007A -S3156002BE60000000000000000000000000000000006A -S3156002BE70000000000000000000000000000000005A -S3156002BE80000000000000000000000000000000004A -S3156002BE90000000000000000000000000000000003A -S3156002BEA0000000000000000000000000000000002A -S3156002BEB0000000000000000000000000000000001A -S3156002BEC0000000000000000000000000000000000A -S3156002BED000000000000000000000000000000000FA -S3156002BEE000000000000000000000000000000000EA -S3156002BEF000000000000000000000000000000000DA -S3156002BF0000000000000000000000000000000000C9 -S3156002BF1000000000000000000000000000000000B9 -S3156002BF2000000000000000000000000000000000A9 -S3156002BF300000000000000000000000000000000099 -S3156002BF400000000000000000000000000000000089 -S3156002BF500000000000000000000000000000000079 -S3156002BF600000000000000000000000000000000069 -S3156002BF700000000000000000000000000000000059 -S3156002BF800000000000000000000000000000000049 -S3156002BF900000000000000000000000000000000039 -S3156002BFA00000000000000000000000000000000029 -S3156002BFB00000000000000000000000000000000019 -S3156002BFC00000000000000000000000000000000009 -S3156002BFD000000000000000000000000000000000F9 -S3156002BFE000000000000000000000000000000000E9 -S3156002BFF000000000000000000000000000000000D9 -S3156002C00000000000000000000000000000000000C8 -S3156002C01000000000000000000000000000000000B8 -S3156002C02000000000000000000000000000000000A8 -S3156002C0300000000000000000000000000000000098 -S3156002C0400000000000000000000000000000000088 -S3156002C0500000000000000000000000000000000078 -S3156002C0600000000000000000000000000000000068 -S3156002C0700000000000000000000000000000000058 -S3156002C0800000000000000000000000000000000048 -S3156002C0900000000000000000000000000000000038 -S3156002C0A00000000000000000000000000000000028 -S3156002C0B00000000000000000000000000000000018 -S3156002C0C00000000000000000000000000000000008 -S3156002C0D000000000000000000000000000000000F8 -S3156002C0E000000000000000000000000000000000E8 -S3156002C0F000000000000000000000000000000000D8 -S3156002C10000000000000000000000000000000000C7 -S3156002C11000000000000000000000000000000000B7 -S3156002C12000000000000000000000000000000000A7 -S3156002C1300000000000000000000000000000000097 -S3156002C1400000000000000000000000000000000087 -S3156002C1500000000000000000000000000000000077 -S3156002C1600000000000000000000000000000000067 -S3156002C1700000000000000000000000000000000057 -S3156002C1800000000000000000000000000000000047 -S3156002C1900000000000000000000000000000000037 -S3156002C1A00000000000000000000000000000000027 -S3156002C1B00000000000000000000000000000000017 -S3156002C1C00000000000000000000000000000000007 -S3156002C1D000000000000000000000000000000000F7 -S3156002C1E000000000000000000000000000000000E7 -S3156002C1F000000000000000000000000000000000D7 -S3156002C20000000000000000000000000000000000C6 -S3156002C21000000000000000000000000000000000B6 -S3156002C22000000000000000000000000000000000A6 -S3156002C2300000000000000000000000000000000096 -S3156002C2400000000000000000000000000000000086 -S3156002C2500000000000000000000000000000000076 -S3156002C2600000000000000000000000000000000066 -S3156002C2700000000000000000000000000000000056 -S3156002C2800000000000000000000000000000000046 -S3156002C2900000000000000000000000000000000036 -S3156002C2A00000000000000000000000000000000026 -S3156002C2B00000000000000000000000000000000016 -S3156002C2C00000000000000000000000000000000006 -S3156002C2D000000000000000000000000000000000F6 -S3156002C2E000000000000000000000000000000000E6 -S3156002C2F000000000000000000000000000000000D6 -S3156002C30000000000000000000000000000000000C5 -S3156002C31000000000000000000000000000000000B5 -S3156002C32000000000000000000000000000000000A5 -S3156002C3300000000000000000000000000000000095 -S3156002C3400000000000000000000000000000000085 -S3156002C3500000000000000000000000000000000075 -S3156002C3600000000000000000000000000000000065 -S3156002C3700000000000000000000000000000000055 -S3156002C3800000000000000000000000000000000045 -S3156002C3900000000000000000000000000000000035 -S3156002C3A00000000000000000000000000000000025 -S3156002C3B00000000000000000000000000000000015 -S3156002C3C00000000000000000000000000000000005 -S3156002C3D000000000000000000000000000000000F5 -S3156002C3E000000000000000000000000000000000E5 -S3156002C3F000000000000000000000000000000000D5 -S3156002C40000000000000000000000000000000000C4 -S3156002C41000000000000000000000000000000000B4 -S3156002C42000000000000000000000000000000000A4 -S3156002C4300000000000000000000000000000000094 -S3156002C4400000000000000000000000000000000084 -S3156002C4500000000000000000000000000000000074 -S3156002C4600000000000000000000000000000000064 -S3156002C4700000000000000000000000000000000054 -S3156002C4800000000000000000000000000000000044 -S3156002C4900000000000000000000000000000000034 -S3156002C4A00000000000000000000000000000000024 -S3156002C4B00000000000000000000000000000000014 -S3156002C4C00000000000000000000000000000000004 -S3156002C4D000000000000000000000000000000000F4 -S3156002C4E000000000000000000000000000000000E4 -S3156002C4F000000000000000000000000000000000D4 -S3156002C50000000000000000000000000000000000C3 -S3156002C51000000000000000000000000000000000B3 -S3156002C52000000000000000000000000000000000A3 -S3156002C5300000000000000000000000000000000093 -S3156002C5400000000000000000000000000000000083 -S3156002C5500000000000000000000000000000000073 -S3156002C5600000000000000000000000000000000063 -S3156002C5700000000000000000000000000000000053 -S3156002C5800000000000000000000000000000000043 -S3156002C5900000000000000000000000000000000033 -S3156002C5A00000000000000000000000000000000023 -S3156002C5B00000000000000000000000000000000013 -S3156002C5C00000000000000000000000000000000003 -S3156002C5D000000000000000000000000000000000F3 -S3156002C5E000000000000000000000000000000000E3 -S3156002C5F000000000000000000000000000000000D3 -S3156002C60000000000000000000000000000000000C2 -S3156002C61000000000000000000000000000000000B2 -S3156002C62000000000000000000000000000000000A2 -S3156002C6300000000000000000000000000000000092 -S3156002C6400000000000000000000000000000000082 -S3156002C6500000000000000000000000000000000072 -S3156002C6600000000000000000000000000000000062 -S3156002C6700000000000000000000000000000000052 -S3156002C6800000000000000000000000000000000042 -S3156002C6900000000000000000000000000000000032 -S3156002C6A00000000000000000000000000000000022 -S3156002C6B00000000000000000000000000000000012 -S3156002C6C00000000000000000000000000000000002 -S3156002C6D000000000000000000000000000000000F2 -S3156002C6E000000000000000000000000000000000E2 -S3156002C6F000000000000000000000000000000000D2 -S3156002C70000000000000000000000000000000000C1 -S3156002C71000000000000000000000000000000000B1 -S3156002C72000000000000000000000000000000000A1 -S3156002C7300000000000000000000000000000000091 -S3156002C7400000000000000000000000000000000081 -S3156002C7500000000000000000000000000000000071 -S3156002C7600000000000000000000000000000000061 -S3156002C7700000000000000000000000000000000051 -S3156002C7800000000000000000000000000000000041 -S3156002C7900000000000000000000000000000000031 -S3156002C7A00000000000000000000000000000000021 -S3156002C7B00000000000000000000000000000000011 -S3156002C7C00000000000000000000000000000000001 -S3156002C7D000000000000000000000000000000000F1 -S3156002C7E000000000000000000000000000000000E1 -S3156002C7F000000000000000000000000000000000D1 -S3156002C80000000000000000000000000000000000C0 -S3156002C81000000000000000000000000000000000B0 -S3156002C82000000000000000000000000000000000A0 -S3156002C8300000000000000000000000000000000090 -S3156002C8400000000000000000000000000000000080 -S3156002C8500000000000000000000000000000000070 -S3156002C8600000000000000000000000000000000060 -S3156002C8700000000000000000000000000000000050 -S3156002C8800000000000000000000000000000000040 -S3156002C8900000000000000000000000000000000030 -S3156002C8A00000000000000000000000000000000020 -S3156002C8B00000000000000000000000000000000010 -S3156002C8C00000000000000000000000000000000000 -S3156002C8D000000000000000000000000000000000F0 -S3156002C8E000000000000000000000000000000000E0 -S3156002C8F000000000000000000000000000000000D0 -S3156002C90000000000000000000000000000000000BF -S3156002C91000000000000000000000000000000000AF -S3156002C920000000000000000000000000000000009F -S3156002C930000000000000000000000000000000008F -S3156002C940000000000000000000000000000000007F -S3156002C950000000000000000000000000000000006F -S3156002C960000000000000000000000000000000005F -S3156002C970000000000000000000000000000000004F -S3156002C980000000000000000000000000000000003F -S3156002C990000000000000000000000000000000002F -S3156002C9A0000000000000000000000000000000001F -S3156002C9B0000000000000000000000000000000000F -S3156002C9C000000000000000000000000000000000FF -S3156002C9D000000000000000000000000000000000EF -S3156002C9E000000000000000000000000000000000DF -S3156002C9F000000000000000000000000000000000CF -S3156002CA0000000000000000000000000000000000BE -S3156002CA1000000000000000000000000000000000AE -S3156002CA20000000000000000000000000000000009E -S3156002CA30000000000000000000000000000000008E -S3156002CA40000000000000000000000000000000007E -S3156002CA50000000000000000000000000000000006E -S3156002CA60000000000000000000000000000000005E -S3156002CA70000000000000000000000000000000004E -S3156002CA80000000000000000000000000000000003E -S3156002CA90000000000000000000000000000000002E -S3156002CAA0000000000000000000000000000000001E -S3156002CAB0000000000000000000000000000000000E -S3156002CAC000000000000000000000000000000000FE -S3156002CAD000000000000000000000000000000000EE -S3156002CAE000000000000000000000000000000000DE -S3156002CAF000000000000000000000000000000000CE -S3156002CB0000000000000000000000000000000000BD -S3156002CB1000000000000000000000000000000000AD -S3156002CB20000000000000000000000000000000009D -S3156002CB30000000000000000000000000000000008D -S3156002CB40000000000000000000000000000000007D -S3156002CB50000000000000000000000000000000006D -S3156002CB60000000000000000000000000000000005D -S3156002CB70000000000000000000000000000000004D -S3156002CB80000000000000000000000000000000003D -S3156002CB90000000000000000000000000000000002D -S3156002CBA0000000000000000000000000000000001D -S3156002CBB0000000000000000000000000000000000D -S3156002CBC000000000000000000000000000000000FD -S3156002CBD000000000000000000000000000000000ED -S3156002CBE000000000000000000000000000000000DD -S3156002CBF000000000000000000000000000000000CD -S3156002CC0000000000000000000000000000000000BC -S3156002CC1000000000000000000000000000000000AC -S3156002CC20000000000000000000000000000000009C -S3156002CC30000000000000000000000000000000008C -S3156002CC40000000000000000000000000000000007C -S3156002CC50000000000000000000000000000000006C -S3156002CC60000000000000000000000000000000005C -S3156002CC70000000000000000000000000000000004C -S3156002CC80000000000000000000000000000000003C -S3156002CC90000000000000000000000000000000002C -S3156002CCA0000000000000000000000000000000001C -S3156002CCB0000000000000000000000000000000000C -S3156002CCC000000000000000000000000000000000FC -S3156002CCD000000000000000000000000000000000EC -S3156002CCE000000000000000000000000000000000DC -S3156002CCF000000000000000000000000000000000CC -S3156002CD0000000000000000000000000000000000BB -S3156002CD1000000000000000000000000000000000AB -S3156002CD20000000000000000000000000000000009B -S3156002CD30000000000000000000000000000000008B -S3156002CD40000000000000000000000000000000007B -S3156002CD50000000000000000000000000000000006B -S3156002CD60000000000000000000000000000000005B -S3156002CD70000000000000000000000000000000004B -S3156002CD80000000000000000000000000000000003B -S3156002CD90000000000000000000000000000000002B -S3156002CDA0000000000000000000000000000000001B -S3156002CDB0000000000000000000000000000000000B -S3156002CDC000000000000000000000000000000000FB -S3156002CDD000000000000000000000000000000000EB -S3156002CDE000000000000000000000000000000000DB -S3156002CDF000000000000000000000000000000000CB -S3156002CE0000000000000000000000000000000000BA -S3156002CE1000000000000000000000000000000000AA -S3156002CE20000000000000000000000000000000009A -S3156002CE30000000000000000000000000000000008A -S3156002CE40000000000000000000000000000000007A -S3156002CE50000000000000000000000000000000006A -S3156002CE60000000000000000000000000000000005A -S3156002CE70000000000000000000000000000000004A -S3156002CE80000000000000000000000000000000003A -S3156002CE90000000000000000000000000000000002A -S3156002CEA0000000000000000000000000000000001A -S3156002CEB0000000000000000000000000000000000A -S3156002CEC000000000000000000000000000000000FA -S3156002CED000000000000000000000000000000000EA -S3156002CEE000000000000000000000000000000000DA -S3156002CEF000000000000000000000000000000000CA -S3156002CF0000000000000000000000000000000000B9 -S3156002CF1000000000000000000000000000000000A9 -S3156002CF200000000000000000000000000000000099 -S3156002CF300000000000000000000000000000000089 -S3156002CF400000000000000000000000000000000079 -S3156002CF500000000000000000000000000000000069 -S3156002CF600000000000000000000000000000000059 -S3156002CF700000000000000000000000000000000049 -S3156002CF800000000000000000000000000000000039 -S3156002CF900000000000000000000000000000000029 -S3156002CFA00000000000000000000000000000000019 -S3156002CFB00000000000000000000000000000000009 -S3156002CFC000000000000000000000000000000000F9 -S3156002CFD000000000000000000000000000000000E9 -S3156002CFE000000000000000000000000000000000D9 -S3156002CFF000000000000000000000000000000000C9 -S3156002D00000000000000000000000000000000000B8 -S3156002D01000000000000000000000000000000000A8 -S3156002D0200000000000000000000000000000000098 -S3156002D0300000000000000000000000000000000088 -S3156002D0400000000000000000000000000000000078 -S3156002D0500000000000000000000000000000000068 -S3156002D0600000000000000000000000000000000058 -S3156002D0700000000000000000000000000000000048 -S3156002D0800000000000000000000000000000000038 -S3156002D0900000000000000000000000000000000028 -S3156002D0A00000000000000000000000000000000018 -S3156002D0B00000000000000000000000000000000008 -S3156002D0C000000000000000000000000000000000F8 -S3156002D0D000000000000000000000000000000000E8 -S3156002D0E000000000000000000000000000000000D8 -S3156002D0F000000000000000000000000000000000C8 -S3156002D10000000000000000000000000000000000B7 -S3156002D11000000000000000000000000000000000A7 -S3156002D1200000000000000000000000000000000097 -S3156002D1300000000000000000000000000000000087 -S3156002D1400000000000000000000000000000000077 -S3156002D1500000000000000000000000000000000067 -S3156002D1600000000000000000000000000000000057 -S3156002D1700000000000000000000000000000000047 -S3156002D1800000000000000000000000000000000037 -S3156002D1900000000000000000000000000000000027 -S3156002D1A00000000000000000000000000000000017 -S3156002D1B00000000000000000000000000000000007 -S3156002D1C000000000000000000000000000000000F7 -S3156002D1D000000000000000000000000000000000E7 -S3156002D1E000000000000000000000000000000000D7 -S3156002D1F000000000000000000000000000000000C7 -S3156002D20000000000000000000000000000000000B6 -S3156002D21000000000000000000000000000000000A6 -S3156002D2200000000000000000000000000000000096 -S3156002D2300000000000000000000000000000000086 -S3156002D2400000000000000000000000000000000076 -S3156002D2500000000000000000000000000000000066 -S3156002D2600000000000000000000000000000000056 -S3156002D2700000000000000000000000000000000046 -S3156002D2800000000000000000000000000000000036 -S3156002D2900000000000000000000000000000000026 -S3156002D2A00000000000000000000000000000000016 -S3156002D2B00000000000000000000000000000000006 -S3156002D2C000000000000000000000000000000000F6 -S3156002D2D000000000000000000000000000000000E6 -S3156002D2E000000000000000000000000000000000D6 -S3156002D2F000000000000000000000000000000000C6 -S3156002D30000000000000000000000000000000000B5 -S3156002D31000000000000000000000000000000000A5 -S3156002D3200000000000000000000000000000000095 -S3156002D3300000000000000000000000000000000085 -S3156002D3400000000000000000000000000000000075 -S3156002D3500000000000000000000000000000000065 -S3156002D3600000000000000000000000000000000055 -S3156002D3700000000000000000000000000000000045 -S3156002D3800000000000000000000000000000000035 -S3156002D3900000000000000000000000000000000025 -S3156002D3A00000000000000000000000000000000015 -S3156002D3B00000000000000000000000000000000005 -S3156002D3C000000000000000000000000000000000F5 -S3156002D3D000000000000000000000000000000000E5 -S3156002D3E000000000000000000000000000000000D5 -S3156002D3F000000000000000000000000000000000C5 -S3156002D40000000000000000000000000000000000B4 -S3156002D41000000000000000000000000000000000A4 -S3156002D4200000000000000000000000000000000094 -S3156002D4300000000000000000000000000000000084 -S3156002D4400000000000000000000000000000000074 -S3156002D4500000000000000000000000000000000064 -S3156002D4600000000000000000000000000000000054 -S3156002D4700000000000000000000000000000000044 -S3156002D4800000000000000000000000000000000034 -S3156002D4900000000000000000000000000000000024 -S3156002D4A00000000000000000000000000000000014 -S3156002D4B00000000000000000000000000000000004 -S3156002D4C000000000000000000000000000000000F4 -S3156002D4D000000000000000000000000000000000E4 -S3156002D4E000000000000000000000000000000000D4 -S3156002D4F000000000000000000000000000000000C4 -S3156002D50000000000000000000000000000000000B3 -S3156002D51000000000000000000000000000000000A3 -S3156002D5200000000000000000000000000000000093 -S3156002D5300000000000000000000000000000000083 -S3156002D5400000000000000000000000000000000073 -S3156002D5500000000000000000000000000000000063 -S3156002D5600000000000000000000000000000000053 -S3156002D5700000000000000000000000000000000043 -S3156002D5800000000000000000000000000000000033 -S3156002D5900000000000000000000000000000000023 -S3156002D5A00000000000000000000000000000000013 -S3156002D5B00000000000000000000000000000000003 -S3156002D5C000000000000000000000000000000000F3 -S3156002D5D000000000000000000000000000000000E3 -S3156002D5E000000000000000000000000000000000D3 -S3156002D5F000000000000000000000000000000000C3 -S3156002D60000000000000000000000000000000000B2 -S3156002D61000000000000000000000000000000000A2 -S3156002D6200000000000000000000000000000000092 -S3156002D6300000000000000000000000000000000082 -S3156002D6400000000000000000000000000000000072 -S3156002D6500000000000000000000000000000000062 -S3156002D6600000000000000000000000000000000052 -S3156002D6700000000000000000000000000000000042 -S3156002D6800000000000000000000000000000000032 -S3156002D6900000000000000000000000000000000022 -S3156002D6A00000000000000000000000000000000012 -S3156002D6B00000000000000000000000000000000002 -S3156002D6C000000000000000000000000000000000F2 -S3156002D6D000000000000000000000000000000000E2 -S3156002D6E000000000000000000000000000000000D2 -S3156002D6F000000000000000000000000000000000C2 -S3156002D70000000000000000000000000000000000B1 -S3156002D71000000000000000000000000000000000A1 -S3156002D7200000000000000000000000000000000091 -S3156002D7300000000000000000000000000000000081 -S3156002D7400000000000000000000000000000000071 -S3156002D7500000000000000000000000000000000061 -S3156002D7600000000000000000000000000000000051 -S3156002D7700000000000000000000000000000000041 -S3156002D7800000000000000000000000000000000031 -S3156002D7900000000000000000000000000000000021 -S3156002D7A00000000000000000000000000000000011 -S3156002D7B00000000000000000000000000000000001 -S3156002D7C000000000000000000000000000000000F1 -S3156002D7D000000000000000000000000000000000E1 -S3156002D7E000000000000000000000000000000000D1 -S3156002D7F000000000000000000000000000000000C1 -S3156002D80000000000000000000000000000000000B0 -S3156002D81000000000000000000000000000000000A0 -S3156002D8200000000000000000000000000000000090 -S3156002D8300000000000000000000000000000000080 -S3156002D8400000000000000000000000000000000070 -S3156002D8500000000000000000000000000000000060 -S3156002D8600000000000000000000000000000000050 -S3156002D8700000000000000000000000000000000040 -S3156002D8800000000000000000000000000000000030 -S3156002D8900000000000000000000000000000000020 -S3156002D8A00000000000000000000000000000000010 -S3156002D8B00000000000000000000000000000000000 -S3156002D8C000000000000000000000000000000000F0 -S3156002D8D000000000000000000000000000000000E0 -S3156002D8E000000000000000000000000000000000D0 -S3156002D8F000000000000000000000000000000000C0 -S3156002D90000000000000000000000000000000000AF -S3156002D910000000000000000000000000000000009F -S3156002D920000000000000000000000000000000008F -S3156002D930000000000000000000000000000000007F -S3156002D940000000000000000000000000000000006F -S3156002D950000000000000000000000000000000005F -S3156002D960000000000000000000000000000000004F -S3156002D970000000000000000000000000000000003F -S3156002D980000000000000000000000000000000002F -S3156002D990000000000000000000000000000000001F -S3156002D9A0000000000000000000000000000000000F -S3156002D9B000000000000000000000000000000000FF -S3156002D9C000000000000000000000000000000000EF -S3156002D9D000000000000000000000000000000000DF -S3156002D9E000000000000000000000000000000000CF -S3156002D9F000000000000000000000000000000000BF -S3156002DA0000000000000000000000000000000000AE -S3156002DA10000000000000000000000000000000009E -S3156002DA20000000000000000000000000000000008E -S3156002DA30000000000000000000000000000000007E -S3156002DA40000000000000000000000000000000006E -S3156002DA50000000000000000000000000000000005E -S3156002DA60000000000000000000000000000000004E -S3156002DA70000000000000000000000000000000003E -S3156002DA80000000000000000000000000000000002E -S3156002DA90000000000000000000000000000000001E -S3156002DAA0000000000000000000000000000000000E -S3156002DAB000000000000000000000000000000000FE -S3156002DAC000000000000000000000000000000000EE -S3156002DAD000000000000000000000000000000000DE -S3156002DAE000000000000000000000000000000000CE -S3156002DAF000000000000000000000000000000000BE -S3156002DB0000000000000000000000000000000000AD -S3156002DB10000000000000000000000000000000009D -S3156002DB20000000000000000000000000000000008D -S3156002DB30000000000000000000000000000000007D -S3156002DB40000000000000000000000000000000006D -S3156002DB50000000000000000000000000000000005D -S3156002DB60000000000000000000000000000000004D -S3156002DB70000000000000000000000000000000003D -S3156002DB80000000000000000000000000000000002D -S3156002DB90000000000000000000000000000000001D -S3156002DBA0000000000000000000000000000000000D -S3156002DBB000000000000000000000000000000000FD -S3156002DBC000000000000000000000000000000000ED -S3156002DBD000000000000000000000000000000000DD -S3156002DBE000000000000000000000000000000000CD -S3156002DBF000000000000000000000000000000000BD -S3156002DC0000000000000000000000000000000000AC -S3156002DC10000000000000000000000000000000009C -S3156002DC20000000000000000000000000000000008C -S3156002DC30000000000000000000000000000000007C -S3156002DC40000000000000000000000000000000006C -S3156002DC50000000000000000000000000000000005C -S3156002DC60000000000000000000000000000000004C -S3156002DC70000000000000000000000000000000003C -S3156002DC80000000000000000000000000000000002C -S3156002DC90000000000000000000000000000000001C -S3156002DCA0000000000000000000000000000000000C -S3156002DCB000000000000000000000000000000000FC -S3156002DCC000000000000000000000000000000000EC -S3156002DCD000000000000000000000000000000000DC -S3156002DCE000000000000000000000000000000000CC -S3156002DCF000000000000000000000000000000000BC -S3156002DD0000000000000000000000000000000000AB -S3156002DD10000000000000000000000000000000009B -S3156002DD20000000000000000000000000000000008B -S3156002DD30000000000000000000000000000000007B -S3156002DD40000000000000000000000000000000006B -S3156002DD50000000000000000000000000000000005B -S3156002DD60000000000000000000000000000000004B -S3156002DD70000000000000000000000000000000003B -S3156002DD80000000000000000000000000000000002B -S3156002DD90000000000000000000000000000000001B -S3156002DDA0000000000000000000000000000000000B -S3156002DDB000000000000000000000000000000000FB -S3156002DDC000000000000000000000000000000000EB -S3156002DDD000000000000000000000000000000000DB -S3156002DDE000000000000000000000000000000000CB -S3156002DDF000000000000000000000000000000000BB -S3156002DE0000000000000000000000000000000000AA -S3156002DE10000000000000000000000000000000009A -S3156002DE20000000000000000000000000000000008A -S3156002DE30000000000000000000000000000000007A -S3156002DE40000000000000000000000000000000006A -S3156002DE50000000000000000000000000000000005A -S3156002DE60000000000000000000000000000000004A -S3156002DE70000000000000000000000000000000003A -S3156002DE80000000000000000000000000000000002A -S3156002DE90000000000000000000000000000000001A -S3156002DEA0000000000000000000000000000000000A -S3156002DEB000000000000000000000000000000000FA -S3156002DEC000000000000000000000000000000000EA -S3156002DED000000000000000000000000000000000DA -S3156002DEE000000000000000000000000000000000CA -S3156002DEF000000000000000000000000000000000BA -S3156002DF0000000000000000000000000000000000A9 -S3156002DF100000000000000000000000000000000099 -S3156002DF200000000000000000000000000000000089 -S3156002DF300000000000000000000000000000000079 -S3156002DF400000000000000000000000000000000069 -S3156002DF500000000000000000000000000000000059 -S3156002DF600000000000000000000000000000000049 -S3156002DF700000000000000000000000000000000039 -S3156002DF800000000000000000000000000000000029 -S3156002DF900000000000000000000000000000000019 -S3156002DFA00000000000000000000000000000000009 -S3156002DFB000000000000000000000000000000000F9 -S3156002DFC000000000000000000000000000000000E9 -S3156002DFD000000000000000000000000000000000D9 -S3156002DFE000000000000000000000000000000000C9 -S3156002DFF000000000000000000000000000000000B9 -S3156002E00000000000000000000000000000000000A8 -S3156002E0100000000000000000000000000000000098 -S3156002E0200000000000000000000000000000000088 -S3156002E0300000000000000000000000000000000078 -S3156002E0400000000000000000000000000000000068 -S3156002E0500000000000000000000000000000000058 -S3156002E0600000000000000000000000000000000048 -S3156002E0700000000000000000000000000000000038 -S3156002E0800000000000000000000000000000000028 -S3156002E0900000000000000000000000000000000018 -S3156002E0A00000000000000000000000000000000008 -S3156002E0B000000000000000000000000000000000F8 -S3156002E0C000000000000000000000000000000000E8 -S3156002E0D000000000000000000000000000000000D8 -S3156002E0E000000000000000000000000000000000C8 -S3156002E0F000000000000000000000000000000000B8 -S3156002E10000000000000000000000000000000000A7 -S3156002E1100000000000000000000000000000000097 -S3156002E1200000000000000000000000000000000087 -S3156002E1300000000000000000000000000000000077 -S3156002E1400000000000000000000000000000000067 -S3156002E1500000000000000000000000000000000057 -S3156002E1600000000000000000000000000000000047 -S3156002E1700000000000000000000000000000000037 -S3156002E1800000000000000000000000000000000027 -S3156002E1900000000000000000000000000000000017 -S3156002E1A00000000000000000000000000000000007 -S3156002E1B000000000000000000000000000000000F7 -S3156002E1C000000000000000000000000000000000E7 -S3156002E1D000000000000000000000000000000000D7 -S3156002E1E000000000000000000000000000000000C7 -S3156002E1F000000000000000000000000000000000B7 -S3156002E20000000000000000000000000000000000A6 -S3156002E2100000000000000000000000000000000096 -S3156002E2200000000000000000000000000000000086 -S3156002E2300000000000000000000000000000000076 -S3156002E2400000000000000000000000000000000066 -S3156002E2500000000000000000000000000000000056 -S3156002E2600000000000000000000000000000000046 -S3156002E2700000000000000000000000000000000036 -S3156002E2800000000000000000000000000000000026 -S3156002E2900000000000000000000000000000000016 -S3156002E2A00000000000000000000000000000000006 -S3156002E2B000000000000000000000000000000000F6 -S3156002E2C000000000000000000000000000000000E6 -S3156002E2D000000000000000000000000000000000D6 -S3156002E2E000000000000000000000000000000000C6 -S3156002E2F000000000000000000000000000000000B6 -S3156002E30000000000000000000000000000000000A5 -S3156002E3100000000000000000000000000000000095 -S3156002E3200000000000000000000000000000000085 -S3156002E3300000000000000000000000000000000075 -S3156002E3400000000000000000000000000000000065 -S3156002E3500000000000000000000000000000000055 -S3156002E3600000000000000000000000000000000045 -S3156002E3700000000000000000000000000000000035 -S3156002E3800000000000000000000000000000000025 -S3156002E3900000000000000000000000000000000015 -S3156002E3A00000000000000000000000000000000005 -S3156002E3B000000000000000000000000000000000F5 -S3156002E3C000000000000000000000000000000000E5 -S3156002E3D000000000000000000000000000000000D5 -S3156002E3E000000000000000000000000000000000C5 -S3156002E3F000000000000000000000000000000000B5 -S3156002E40000000000000000000000000000000000A4 -S3156002E4100000000000000000000000000000000094 -S3156002E4200000000000000000000000000000000084 -S3156002E4300000000000000000000000000000000074 -S3156002E4400000000000000000000000000000000064 -S3156002E4500000000000000000000000000000000054 -S3156002E4600000000000000000000000000000000044 -S3156002E4700000000000000000000000000000000034 -S3156002E4800000000000000000000000000000000024 -S3156002E4900000000000000000000000000000000014 -S3156002E4A00000000000000000000000000000000004 -S3156002E4B000000000000000000000000000000000F4 -S3156002E4C000000000000000000000000000000000E4 -S3156002E4D000000000000000000000000000000000D4 -S3156002E4E000000000000000000000000000000000C4 -S3156002E4F000000000000000000000000000000000B4 -S3156002E50000000000000000000000000000000000A3 -S3156002E5100000000000000000000000000000000093 -S3156002E5200000000000000000000000000000000083 -S3156002E5300000000000000000000000000000000073 -S3156002E5400000000000000000000000000000000063 -S3156002E5500000000000000000000000000000000053 -S3156002E5600000000000000000000000000000000043 -S3156002E5700000000000000000000000000000000033 -S3156002E5800000000000000000000000000000000023 -S3156002E5900000000000000000000000000000000013 -S3156002E5A00000000000000000000000000000000003 -S3156002E5B000000000000000000000000000000000F3 -S3156002E5C000000000000000000000000000000000E3 -S3156002E5D000000000000000000000000000000000D3 -S3156002E5E000000000000000000000000000000000C3 -S3156002E5F000000000000000000000000000000000B3 -S3156002E60000000000000000000000000000000000A2 -S3156002E6100000000000000000000000000000000092 -S3156002E6200000000000000000000000000000000082 -S3156002E6300000000000000000000000000000000072 -S3156002E6400000000000000000000000000000000062 -S3156002E6500000000000000000000000000000000052 -S3156002E6600000000000000000000000000000000042 -S3156002E6700000000000000000000000000000000032 -S3156002E6800000000000000000000000000000000022 -S3156002E6900000000000000000000000000000000012 -S3156002E6A00000000000000000000000000000000002 -S3156002E6B000000000000000000000000000000000F2 -S3156002E6C000000000000000000000000000000000E2 -S3156002E6D000000000000000000000000000000000D2 -S3156002E6E000000000000000000000000000000000C2 -S3156002E6F000000000000000000000000000000000B2 -S3156002E70000000000000000000000000000000000A1 -S3156002E7100000000000000000000000000000000091 -S3156002E7200000000000000000000000000000000081 -S3156002E7300000000000000000000000000000000071 -S3156002E7400000000000000000000000000000000061 -S3156002E7500000000000000000000000000000000051 -S3156002E7600000000000000000000000000000000041 -S3156002E7700000000000000000000000000000000031 -S3156002E7800000000000000000000000000000000021 -S3156002E7900000000000000000000000000000000011 -S3156002E7A00000000000000000000000000000000001 -S3156002E7B000000000000000000000000000000000F1 -S3156002E7C000000000000000000000000000000000E1 -S3156002E7D000000000000000000000000000000000D1 -S3156002E7E000000000000000000000000000000000C1 -S3156002E7F000000000000000000000000000000000B1 -S3156002E80000000000000000000000000000000000A0 -S3156002E8100000000000000000000000000000000090 -S3156002E8200000000000000000000000000000000080 -S3156002E8300000000000000000000000000000000070 -S3156002E8400000000000000000000000000000000060 -S3156002E8500000000000000000000000000000000050 -S3156002E8600000000000000000000000000000000040 -S3156002E8700000000000000000000000000000000030 -S3156002E8800000000000000000000000000000000020 -S3156002E8900000000000000000000000000000000010 -S3156002E8A00000000000000000000000000000000000 -S3156002E8B000000000000000000000000000000000F0 -S3156002E8C000000000000000000000000000000000E0 -S3156002E8D000000000000000000000000000000000D0 -S3156002E8E000000000000000000000000000000000C0 -S3156002E8F000000000000000000000000000000000B0 -S3156002E900000000000000000000000000000000009F -S3156002E910000000000000000000000000000000008F -S3156002E920000000000000000000000000000000007F -S3156002E930000000000000000000000000000000006F -S3156002E940000000000000000000000000000000005F -S3156002E950000000000000000000000000000000004F -S3156002E960000000000000000000000000000000003F -S3156002E970000000000000000000000000000000002F -S3156002E980000000000000000000000000000000001F -S3156002E990000000000000000000000000000000000F -S3156002E9A000000000000000000000000000000000FF -S3156002E9B000000000000000000000000000000000EF -S3156002E9C000000000000000000000000000000000DF -S3156002E9D000000000000000000000000000000000CF -S3156002E9E000000000000000000000000000000000BF -S3156002E9F000000000000000000000000000000000AF -S3156002EA00000000000000000000000000000000009E -S3156002EA10000000000000000000000000000000008E -S3156002EA20000000000000000000000000000000007E -S3156002EA30000000000000000000000000000000006E -S3156002EA40000000000000000000000000000000005E -S3156002EA50000000000000000000000000000000004E -S3156002EA60000000000000000000000000000000003E -S3156002EA70000000000000000000000000000000002E -S3156002EA80000000000000000000000000000000001E -S3156002EA90000000000000000000000000000000000E -S3156002EAA000000000000000000000000000000000FE -S3156002EAB000000000000000000000000000000000EE -S3156002EAC000000000000000000000000000000000DE -S3156002EAD000000000000000000000000000000000CE -S3156002EAE000000000000000000000000000000000BE -S3156002EAF000000000000000000000000000000000AE -S3156002EB00000000000000000000000000000000009D -S3156002EB10000000000000000000000000000000008D -S3156002EB20000000000000000000000000000000007D -S3156002EB30000000000000000000000000000000006D -S3156002EB40000000000000000000000000000000005D -S3156002EB50000000000000000000000000000000004D -S3156002EB60000000000000000000000000000000003D -S3156002EB70000000000000000000000000000000002D -S3156002EB80000000000000000000000000000000001D -S3156002EB90000000000000000000000000000000000D -S3156002EBA000000000000000000000000000000000FD -S3156002EBB000000000000000000000000000000000ED -S3156002EBC000000000000000000000000000000000DD -S3156002EBD000000000000000000000000000000000CD -S3156002EBE000000000000000000000000000000000BD -S3156002EBF000000000000000000000000000000000AD -S3156002EC00000000000000000000000000000000009C -S3156002EC10000000000000000000000000000000008C -S3156002EC20000000000000000000000000000000007C -S3156002EC30000000000000000000000000000000006C -S3156002EC40000000000000000000000000000000005C -S3156002EC50000000000000000000000000000000004C -S3156002EC60000000000000000000000000000000003C -S3156002EC70000000000000000000000000000000002C -S3156002EC80000000000000000000000000000000001C -S3156002EC90000000000000000000000000000000000C -S3156002ECA000000000000000000000000000000000FC -S3156002ECB000000000000000000000000000000000EC -S3156002ECC000000000000000000000000000000000DC -S3156002ECD000000000000000000000000000000000CC -S3156002ECE000000000000000000000000000000000BC -S3156002ECF000000000000000000000000000000000AC -S3156002ED00000000000000000000000000000000009B -S3156002ED10000000000000000000000000000000008B -S3156002ED20000000000000000000000000000000007B -S3156002ED30000000000000000000000000000000006B -S3156002ED40000000000000000000000000000000005B -S3156002ED50000000000000000000000000000000004B -S3156002ED60000000000000000000000000000000003B -S3156002ED70000000000000000000000000000000002B -S3156002ED80000000000000000000000000000000001B -S3156002ED90000000000000000000000000000000000B -S3156002EDA000000000000000000000000000000000FB -S3156002EDB000000000000000000000000000000000EB -S3156002EDC000000000000000000000000000000000DB -S3156002EDD000000000000000000000000000000000CB -S3156002EDE000000000000000000000000000000000BB -S3156002EDF000000000000000000000000000000000AB -S3156002EE00000000000000000000000000000000009A -S3156002EE10000000000000000000000000000000008A -S3156002EE20000000000000000000000000000000007A -S3156002EE30000000000000000000000000000000006A -S3156002EE40000000000000000000000000000000005A -S3156002EE50000000000000000000000000000000004A -S3156002EE60000000000000000000000000000000003A -S3156002EE70000000000000000000000000000000002A -S3156002EE80000000000000000000000000000000001A -S3156002EE90000000000000000000000000000000000A -S3156002EEA000000000000000000000000000000000FA -S3156002EEB000000000000000000000000000000000EA -S3156002EEC000000000000000000000000000000000DA -S3156002EED000000000000000000000000000000000CA -S3156002EEE000000000000000000000000000000000BA -S3156002EEF000000000000000000000000000000000AA -S3156002EF000000000000000000000000000000000099 -S3156002EF100000000000000000000000000000000089 -S3156002EF200000000000000000000000000000000079 -S3156002EF300000000000000000000000000000000069 -S3156002EF400000000000000000000000000000000059 -S3156002EF500000000000000000000000000000000049 -S3156002EF600000000000000000000000000000000039 -S3156002EF700000000000000000000000000000000029 -S3156002EF800000000000000000000000000000000019 -S3156002EF900000000000000000000000000000000009 -S3156002EFA000000000000000000000000000000000F9 -S3156002EFB000000000000000000000000000000000E9 -S3156002EFC000000000000000000000000000000000D9 -S3156002EFD000000000000000000000000000000000C9 -S3156002EFE000000000000000000000000000000000B9 -S3156002EFF000000000000000000000000000000000A9 -S3156002F0000000000000000000000000000000000098 -S3156002F0100000000000000000000000000000000088 -S3156002F0200000000000000000000000000000000078 -S3156002F0300000000000000000000000000000000068 -S3156002F0400000000000000000000000000000000058 -S3156002F0500000000000000000000000000000000048 -S3156002F0600000000000000000000000000000000038 -S3156002F0700000000000000000000000000000000028 -S3156002F0800000000000000000000000000000000018 -S3156002F0900000000000000000000000000000000008 -S3156002F0A000000000000000000000000000000000F8 -S3156002F0B000000000000000000000000000000000E8 -S3156002F0C000000000000000000000000000000000D8 -S3156002F0D000000000000000000000000000000000C8 -S3156002F0E000000000000000000000000000000000B8 -S3156002F0F000000000000000000000000000000000A8 -S3156002F1000000000000000000000000000000000097 -S3156002F1100000000000000000000000000000000087 -S3156002F1200000000000000000000000000000000077 -S3156002F1300000000000000000000000000000000067 -S3156002F1400000000000000000000000000000000057 -S3156002F1500000000000000000000000000000000047 -S3156002F1600000000000000000000000000000000037 -S3156002F1700000000000000000000000000000000027 -S3156002F1800000000000000000000000000000000017 -S3156002F1900000000000000000000000000000000007 -S3156002F1A000000000000000000000000000000000F7 -S3156002F1B000000000000000000000000000000000E7 -S3156002F1C000000000000000000000000000000000D7 -S3156002F1D000000000000000000000000000000000C7 -S3156002F1E000000000000000000000000000000000B7 -S3156002F1F000000000000000000000000000000000A7 -S3156002F2000000000000000000000000000000000096 -S3156002F2100000000000000000000000000000000086 -S3156002F2200000000000000000000000000000000076 -S3156002F2300000000000000000000000000000000066 -S3156002F2400000000000000000000000000000000056 -S3156002F2500000000000000000000000000000000046 -S3156002F2600000000000000000000000000000000036 -S3156002F2700000000000000000000000000000000026 -S3156002F2800000000000000000000000000000000016 -S3156002F2900000000000000000000000000000000006 -S3156002F2A000000000000000000000000000000000F6 -S3156002F2B000000000000000000000000000000000E6 -S3156002F2C000000000000000000000000000000000D6 -S3156002F2D000000000000000000000000000000000C6 -S3156002F2E000000000000000000000000000000000B6 -S3156002F2F000000000000000000000000000000000A6 -S3156002F3000000000000000000000000000000000095 -S3156002F3100000000000000000000000000000000085 -S3156002F3200000000000000000000000000000000075 -S3156002F3300000000000000000000000000000000065 -S3156002F3400000000000000000000000000000000055 -S3156002F3500000000000000000000000000000000045 -S3156002F3600000000000000000000000000000000035 -S3156002F3700000000000000000000000000000000025 -S3156002F3800000000000000000000000000000000015 -S3156002F3900000000000000000000000000000000005 -S3156002F3A000000000000000000000000000000000F5 -S3156002F3B000000000000000000000000000000000E5 -S3156002F3C000000000000000000000000000000000D5 -S3156002F3D000000000000000000000000000000000C5 -S3156002F3E000000000000000000000000000000000B5 -S3156002F3F000000000000000000000000000000000A5 -S3156002F4000000000000000000000000000000000094 -S3156002F4100000000000000000000000000000000084 -S3156002F4200000000000000000000000000000000074 -S3156002F4300000000000000000000000000000000064 -S3156002F4400000000000000000000000000000000054 -S3156002F4500000000000000000000000000000000044 -S3156002F4600000000000000000000000000000000034 -S3156002F4700000000000000000000000000000000024 -S3156002F4800000000000000000000000000000000014 -S3156002F4900000000000000000000000000000000004 -S3156002F4A000000000000000000000000000000000F4 -S3156002F4B000000000000000000000000000000000E4 -S3156002F4C000000000000000000000000000000000D4 -S3156002F4D000000000000000000000000000000000C4 -S3156002F4E000000000000000000000000000000000B4 -S3156002F4F000000000000000000000000000000000A4 -S3156002F5000000000000000000000000000000000093 -S3156002F5100000000000000000000000000000000083 -S3156002F5200000000000000000000000000000000073 -S3156002F5300000000000000000000000000000000063 -S3156002F5400000000000000000000000000000000053 -S3156002F5500000000000000000000000000000000043 -S3156002F5600000000000000000000000000000000033 -S3156002F5700000000000000000000000000000000023 -S3156002F5800000000000000000000000000000000013 -S3156002F5900000000000000000000000000000000003 -S3156002F5A000000000000000000000000000000000F3 -S3156002F5B000000000000000000000000000000000E3 -S3156002F5C000000000000000000000000000000000D3 -S3156002F5D000000000000000000000000000000000C3 -S3156002F5E000000000000000000000000000000000B3 -S3156002F5F000000000000000000000000000000000A3 -S3156002F6000000000000000000000000000000000092 -S3156002F6100000000000000000000000000000000082 -S3156002F6200000000000000000000000000000000072 -S3156002F6300000000000000000000000000000000062 -S3156002F6400000000000000000000000000000000052 -S3156002F6500000000000000000000000000000000042 -S3156002F6600000000000000000000000000000000032 -S3156002F6700000000000000000000000000000000022 -S3156002F6800000000000000000000000000000000012 -S3156002F6900000000000000000000000000000000002 -S3156002F6A000000000000000000000000000000000F2 -S3156002F6B000000000000000000000000000000000E2 -S3156002F6C000000000000000000000000000000000D2 -S3156002F6D000000000000000000000000000000000C2 -S3156002F6E000000000000000000000000000000000B2 -S3156002F6F000000000000000000000000000000000A2 -S3156002F7000000000000000000000000000000000091 -S3156002F7100000000000000000000000000000000081 -S3156002F7200000000000000000000000000000000071 -S3156002F7300000000000000000000000000000000061 -S3156002F7400000000000000000000000000000000051 -S3156002F7500000000000000000000000000000000041 -S3156002F7600000000000000000000000000000000031 -S3156002F7700000000000000000000000000000000021 -S3156002F7800000000000000000000000000000000011 -S3156002F7900000000000000000000000000000000001 -S3156002F7A000000000000000000000000000000000F1 -S3156002F7B000000000000000000000000000000000E1 -S3156002F7C000000000000000000000000000000000D1 -S3156002F7D000000000000000000000000000000000C1 -S3156002F7E000000000000000000000000000000000B1 -S3156002F7F000000000000000000000000000000000A1 -S3156002F8000000000000000000000000000000000090 -S3156002F8100000000000000000000000000000000080 -S3156002F8200000000000000000000000000000000070 -S3156002F8300000000000000000000000000000000060 -S3156002F8400000000000000000000000000000000050 -S3156002F8500000000000000000000000000000000040 -S3156002F8600000000000000000000000000000000030 -S3156002F8700000000000000000000000000000000020 -S3156002F8800000000000000000000000000000000010 -S3156002F8900000000000000000000000000000000000 -S3156002F8A000000000000000000000000000000000F0 -S3156002F8B000000000000000000000000000000000E0 -S3156002F8C000000000000000000000000000000000D0 -S3156002F8D000000000000000000000000000000000C0 -S3156002F8E000000000000000000000000000000000B0 -S3156002F8F000000000000000000000000000000000A0 -S3156002F900000000000000000000000000000000008F -S3156002F910000000000000000000000000000000007F -S3156002F920000000000000000000000000000000006F -S3156002F930000000000000000000000000000000005F -S3156002F940000000000000000000000000000000004F -S3156002F950000000000000000000000000000000003F -S3156002F960000000000000000000000000000000002F -S3156002F970000000000000000000000000000000001F -S3156002F980000000000000000000000000000000000F -S3156002F99000000000000000000000000000000000FF -S3156002F9A000000000000000000000000000000000EF -S3156002F9B000000000000000000000000000000000DF -S3156002F9C000000000000000000000000000000000CF -S3156002F9D000000000000000000000000000000000BF -S3156002F9E000000000000000000000000000000000AF -S3156002F9F0000000000000000000000000000000009F -S3156002FA00000000000000000000000000000000008E -S3156002FA10000000000000000000000000000000007E -S3156002FA20000000000000000000000000000000006E -S3156002FA30000000000000000000000000000000005E -S3156002FA40000000000000000000000000000000004E -S3156002FA50000000000000000000000000000000003E -S3156002FA60000000000000000000000000000000002E -S3156002FA70000000000000000000000000000000001E -S3156002FA80000000000000000000000000000000000E -S3156002FA9000000000000000000000000000000000FE -S3156002FAA000000000000000000000000000000000EE -S3156002FAB000000000000000000000000000000000DE -S3156002FAC000000000000000000000000000000000CE -S3156002FAD000000000000000000000000000000000BE -S3156002FAE000000000000000000000000000000000AE -S3156002FAF0000000000000000000000000000000009E -S3156002FB00000000000000000000000000000000008D -S3156002FB10000000000000000000000000000000007D -S3156002FB20000000000000000000000000000000006D -S3156002FB30000000000000000000000000000000005D -S3156002FB40000000000000000000000000000000004D -S3156002FB50000000000000000000000000000000003D -S3156002FB60000000000000000000000000000000002D -S3156002FB70000000000000000000000000000000001D -S3156002FB80000000000000000000000000000000000D -S3156002FB9000000000000000000000000000000000FD -S3156002FBA000000000000000000000000000000000ED -S3156002FBB000000000000000000000000000000000DD -S3156002FBC000000000000000000000000000000000CD -S3156002FBD000000000000000000000000000000000BD -S3156002FBE000000000000000000000000000000000AD -S3156002FBF0000000000000000000000000000000009D -S3156002FC00000000000000000000000000000000008C -S3156002FC10000000000000000000000000000000007C -S3156002FC20000000000000000000000000000000006C -S3156002FC30000000000000000000000000000000005C -S3156002FC40000000000000000000000000000000004C -S3156002FC50000000000000000000000000000000003C -S3156002FC60000000000000000000000000000000002C -S3156002FC70000000000000000000000000000000001C -S3156002FC80000000000000000000000000000000000C -S3156002FC9000000000000000000000000000000000FC -S3156002FCA000000000000000000000000000000000EC -S3156002FCB000000000000000000000000000000000DC -S3156002FCC000000000000000000000000000000000CC -S3156002FCD000000000000000000000000000000000BC -S3156002FCE000000000000000000000000000000000AC -S3156002FCF0000000000000000000000000000000009C -S3156002FD00000000000000000000000000000000008B -S3156002FD10000000000000000000000000000000007B -S3156002FD20000000000000000000000000000000006B -S3156002FD30000000000000000000000000000000005B -S3156002FD40000000000000000000000000000000004B -S3156002FD50000000000000000000000000000000003B -S3156002FD60000000000000000000000000000000002B -S3156002FD70000000000000000000000000000000001B -S3156002FD80000000000000000000000000000000000B -S3156002FD9000000000000000000000000000000000FB -S3156002FDA000000000000000000000000000000000EB -S3156002FDB000000000000000000000000000000000DB -S3156002FDC000000000000000000000000000000000CB -S3156002FDD000000000000000000000000000000000BB -S3156002FDE000000000000000000000000000000000AB -S3156002FDF0000000000000000000000000000000009B -S3156002FE00000000000000000000000000000000008A -S3156002FE10000000000000000000000000000000007A -S3156002FE20000000000000000000000000000000006A -S3156002FE30000000000000000000000000000000005A -S3156002FE40000000000000000000000000000000004A -S3156002FE50000000000000000000000000000000003A -S3156002FE60000000000000000000000000000000002A -S3156002FE70000000000000000000000000000000001A -S3156002FE80000000000000000000000000000000000A -S3156002FE9000000000000000000000000000000000FA -S3156002FEA000000000000000000000000000000000EA -S3156002FEB000000000000000000000000000000000DA -S3156002FEC000000000000000000000000000000000CA -S3156002FED000000000000000000000000000000000BA -S3156002FEE000000000000000000000000000000000AA -S3156002FEF0000000000000000000000000000000009A -S3156002FF000000000000000000000000000000000089 -S3156002FF100000000000000000000000000000000079 -S3156002FF200000000000000000000000000000000069 -S3156002FF300000000000000000000000000000000059 -S3156002FF400000000000000000000000000000000049 -S3156002FF500000000000000000000000000000000039 -S3156002FF600000000000000000000000000000000029 -S3156002FF700000000000000000000000000000000019 -S3156002FF800000000000000000000000000000000009 -S3156002FF9000000000000000000000000000000000F9 -S3156002FFA000000000000000000000000000000000E9 -S3156002FFB000000000000000000000000000000000D9 -S3156002FFC000000000000000000000000000000000C9 -S3156002FFD000000000000000000000000000000000B9 -S3156002FFE000000000000000000000000000000000A9 -S3156002FFF00000000000000000000000000000000099 -S315600300000000000000000000000000000000000087 -S315600300100000000000000000000000000000000077 -S315600300200000000000000000000000000000000067 -S315600300300000000000000000000000000000000057 -S315600300400000000000000000000000000000000047 -S315600300500000000000000000000000000000000037 -S315600300600000000000000000000000000000000027 -S315600300700000000000000000000000000000000017 -S315600300800000000000000000000000000000000007 -S3156003009000000000000000000000000000000000F7 -S315600300A000000000000000000000000000000000E7 -S315600300B000000000000000000000000000000000D7 -S315600300C000000000000000000000000000000000C7 -S315600300D000000000000000000000000000000000B7 -S315600300E000000000000000000000000000000000A7 -S315600300F00000000000000000000000000000000097 -S315600301000000000000000000000000000000000086 -S315600301100000000000000000000000000000000076 -S315600301200000000000000000000000000000000066 -S315600301300000000000000000000000000000000056 -S315600301400000000000000000000000000000000046 -S315600301500000000000000000000000000000000036 -S315600301600000000000000000000000000000000026 -S315600301700000000000000000000000000000000016 -S315600301800000000000000000000000000000000006 -S3156003019000000000000000000000000000000000F6 -S315600301A000000000000000000000000000000000E6 -S315600301B000000000000000000000000000000000D6 -S315600301C000000000000000000000000000000000C6 -S315600301D000000000000000000000000000000000B6 -S315600301E000000000000000000000000000000000A6 -S315600301F00000000000000000000000000000000096 -S315600302000000000000000000000000000000000085 -S315600302100000000000000000000000000000000075 -S315600302200000000000000000000000000000000065 -S315600302300000000000000000000000000000000055 -S315600302400000000000000000000000000000000045 -S315600302500000000000000000000000000000000035 -S315600302600000000000000000000000000000000025 -S315600302700000000000000000000000000000000015 -S315600302800000000000000000000000000000000005 -S3156003029000000000000000000000000000000000F5 -S315600302A000000000000000000000000000000000E5 -S315600302B000000000000000000000000000000000D5 -S315600302C000000000000000000000000000000000C5 -S315600302D000000000000000000000000000000000B5 -S315600302E000000000000000000000000000000000A5 -S315600302F00000000000000000000000000000000095 -S315600303000000000000000000000000000000000084 -S315600303100000000000000000000000000000000074 -S315600303200000000000000000000000000000000064 -S315600303300000000000000000000000000000000054 -S315600303400000000000000000000000000000000044 -S315600303500000000000000000000000000000000034 -S315600303600000000000000000000000000000000024 -S315600303700000000000000000000000000000000014 -S315600303800000000000000000000000000000000004 -S3156003039000000000000000000000000000000000F4 -S315600303A000000000000000000000000000000000E4 -S315600303B000000000000000000000000000000000D4 -S315600303C000000000000000000000000000000000C4 -S315600303D000000000000000000000000000000000B4 -S315600303E000000000000000000000000000000000A4 -S315600303F00000000000000000000000000000000094 -S315600304000000000000000000000000000000000083 -S315600304100000000000000000000000000000000073 -S315600304200000000000000000000000000000000063 -S315600304300000000000000000000000000000000053 -S315600304400000000000000000000000000000000043 -S315600304500000000000000000000000000000000033 -S315600304600000000000000000000000000000000023 -S315600304700000000000000000000000000000000013 -S315600304800000000000000000000000000000000003 -S3156003049000000000000000000000000000000000F3 -S315600304A000000000000000000000000000000000E3 -S315600304B000000000000000000000000000000000D3 -S315600304C000000000000000000000000000000000C3 -S315600304D000000000000000000000000000000000B3 -S315600304E000000000000000000000000000000000A3 -S315600304F00000000000000000000000000000000093 -S315600305000000000000000000000000000000000082 -S315600305100000000000000000000000000000000072 -S315600305200000000000000000000000000000000062 -S315600305300000000000000000000000000000000052 -S315600305400000000000000000000000000000000042 -S315600305500000000000000000000000000000000032 -S315600305600000000000000000000000000000000022 -S315600305700000000000000000000000000000000012 -S315600305800000000000000000000000000000000002 -S3156003059000000000000000000000000000000000F2 -S315600305A000000000000000000000000000000000E2 -S315600305B000000000000000000000000000000000D2 -S315600305C000000000000000000000000000000000C2 -S315600305D000000000000000000000000000000000B2 -S315600305E000000000000000000000000000000000A2 -S315600305F00000000000000000000000000000000092 -S315600306000000000000000000000000000000000081 -S315600306100000000000000000000000000000000071 -S315600306200000000000000000000000000000000061 -S315600306300000000000000000000000000000000051 -S315600306400000000000000000000000000000000041 -S315600306500000000000000000000000000000000031 -S315600306600000000000000000000000000000000021 -S315600306700000000000000000000000000000000011 -S315600306800000000000000000000000000000000001 -S3156003069000000000000000000000000000000000F1 -S315600306A000000000000000000000000000000000E1 -S315600306B000000000000000000000000000000000D1 -S315600306C000000000000000000000000000000000C1 -S315600306D000000000000000000000000000000000B1 -S315600306E000000000000000000000000000000000A1 -S315600306F00000000000000000000000000000000091 -S315600307000000000000000000000000000000000080 -S315600307100000000000000000000000000000000070 -S315600307200000000000000000000000000000000060 -S315600307300000000000000000000000000000000050 -S315600307400000000000000000000000000000000040 -S315600307500000000000000000000000000000000030 -S315600307600000000000000000000000000000000020 -S315600307700000000000000000000000000000000010 -S315600307800000000000000000000000000000000000 -S3156003079000000000000000000000000000000000F0 -S315600307A000000000000000000000000000000000E0 -S315600307B000000000000000000000000000000000D0 -S315600307C000000000000000000000000000000000C0 -S315600307D000000000000000000000000000000000B0 -S315600307E000000000000000000000000000000000A0 -S315600307F00000000000000000000000000000000090 -S31560030800000000000000000000000000000000007F -S31560030810000000000000000000000000000000006F -S31560030820000000000000000000000000000000005F -S31560030830000000000000000000000000000000004F -S31560030840000000000000000000000000000000003F -S31560030850000000000000000000000000000000002F -S31560030860000000000000000000000000000000001F -S31560030870000000000000000000000000000000000F -S3156003088000000000000000000000000000000000FF -S3156003089000000000000000000000000000000000EF -S315600308A000000000000000000000000000000000DF -S315600308B000000000000000000000000000000000CF -S315600308C000000000000000000000000000000000BF -S315600308D000000000000000000000000000000000AF -S315600308E0000000000000000000000000000000009F -S315600308F0000000000000000000000000000000008F -S31560030900000000000000000000000000000000007E -S31560030910000000000000000000000000000000006E -S31560030920000000000000000000000000000000005E -S31560030930000000000000000000000000000000004E -S31560030940000000000000000000000000000000003E -S31560030950000000000000000000000000000000002E -S31560030960000000000000000000000000000000001E -S31560030970000000000000000000000000000000000E -S3156003098000000000000000000000000000000000FE -S3156003099000000000000000000000000000000000EE -S315600309A000000000000000000000000000000000DE -S315600309B000000000000000000000000000000000CE -S315600309C000000000000000000000000000000000BE -S315600309D000000000000000000000000000000000AE -S315600309E0000000000000000000000000000000009E -S315600309F0000000000000000000000000000000008E -S31560030A00000000000000000000000000000000007D -S31560030A10000000000000000000000000000000006D -S31560030A20000000000000000000000000000000005D -S31560030A30000000000000000000000000000000004D -S31560030A40000000000000000000000000000000003D -S31560030A50000000000000000000000000000000002D -S31560030A60000000000000000000000000000000001D -S31560030A70000000000000000000000000000000000D -S31560030A8000000000000000000000000000000000FD -S31560030A9000000000000000000000000000000000ED -S31560030AA000000000000000000000000000000000DD -S31560030AB000000000000000000000000000000000CD -S31560030AC000000000000000000000000000000000BD -S31560030AD000000000000000000000000000000000AD -S31560030AE0000000000000000000000000000000009D -S31560030AF0000000000000000000000000000000008D -S31560030B00000000000000000000000000000000007C -S31560030B10000000000000000000000000000000006C -S31560030B20000000000000000000000000000000005C -S31560030B30000000000000000000000000000000004C -S31560030B40000000000000000000000000000000003C -S31560030B50000000000000000000000000000000002C -S31560030B60000000000000000000000000000000001C -S31560030B70000000000000000000000000000000000C -S31560030B8000000000000000000000000000000000FC -S31560030B9000000000000000000000000000000000EC -S31560030BA000000000000000000000000000000000DC -S31560030BB000000000000000000000000000000000CC -S31560030BC000000000000000000000000000000000BC -S31560030BD000000000000000000000000000000000AC -S31560030BE0000000000000000000000000000000009C -S31560030BF0000000000000000000000000000000008C -S31560030C00000000000000000000000000000000007B -S31560030C10000000000000000000000000000000006B -S31560030C20000000000000000000000000000000005B -S31560030C30000000000000000000000000000000004B -S31560030C40000000000000000000000000000000003B -S31560030C50000000000000000000000000000000002B -S31560030C60000000000000000000000000000000001B -S31560030C70000000000000000000000000000000000B -S31560030C8000000000000000000000000000000000FB -S31560030C9000000000000000000000000000000000EB -S31560030CA000000000000000000000000000000000DB -S31560030CB000000000000000000000000000000000CB -S31560030CC000000000000000000000000000000000BB -S31560030CD000000000000000000000000000000000AB -S31560030CE0000000000000000000000000000000009B -S31560030CF0000000000000000000000000000000008B -S31560030D00000000000000000000000000000000007A -S31560030D10000000000000000000000000000000006A -S31560030D20000000000000000000000000000000005A -S31560030D30000000000000000000000000000000004A -S31560030D40000000000000000000000000000000003A -S31560030D50000000000000000000000000000000002A -S31560030D60000000000000000000000000000000001A -S31560030D70000000000000000000000000000000000A -S31560030D8000000000000000000000000000000000FA -S31560030D9000000000000000000000000000000000EA -S31560030DA000000000000000000000000000000000DA -S31560030DB000000000000000000000000000000000CA -S31560030DC000000000000000000000000000000000BA -S31560030DD000000000000000000000000000000000AA -S31560030DE0000000000000000000000000000000009A -S31560030DF0000000000000000000000000000000008A -S31560030E000000000000000000000000000000000079 -S31560030E100000000000000000000000000000000069 -S31560030E200000000000000000000000000000000059 -S31560030E300000000000000000000000000000000049 -S31560030E400000000000000000000000000000000039 -S31560030E500000000000000000000000000000000029 -S31560030E600000000000000000000000000000000019 -S31560030E700000000000000000000000000000000009 -S31560030E8000000000000000000000000000000000F9 -S31560030E9000000000000000000000000000000000E9 -S31560030EA000000000000000000000000000000000D9 -S31560030EB000000000000000000000000000000000C9 -S31560030EC000000000000000000000000000000000B9 -S31560030ED000000000000000000000000000000000A9 -S31560030EE00000000000000000000000000000000099 -S31560030EF00000000000000000000000000000000089 -S31560030F000000000000000000000000000000000078 -S31560030F100000000000000000000000000000000068 -S31560030F200000000000000000000000000000000058 -S31560030F300000000000000000000000000000000048 -S31560030F400000000000000000000000000000000038 -S31560030F500000000000000000000000000000000028 -S31560030F600000000000000000000000000000000018 -S31560030F700000000000000000000000000000000008 -S31560030F8000000000000000000000000000000000F8 -S31560030F9000000000000000000000000000000000E8 -S31560030FA000000000000000000000000000000000D8 -S31560030FB000000000000000000000000000000000C8 -S31560030FC000000000000000000000000000000000B8 -S31560030FD000000000000000000000000000000000A8 -S31560030FE00000000000000000000000000000000098 -S31560030FF00000000000000000000000000000000088 -S315600310000000000000000000000000000000000077 -S315600310100000000000000000000000000000000067 -S315600310200000000000000000000000000000000057 -S315600310300000000000000000000000000000000047 -S315600310400000000000000000000000000000000037 -S315600310500000000000000000000000000000000027 -S315600310600000000000000000000000000000000017 -S315600310700000000000000000000000000000000007 -S3156003108000000000000000000000000000000000F7 -S3156003109000000000000000000000000000000000E7 -S315600310A000000000000000000000000000000000D7 -S315600310B000000000000000000000000000000000C7 -S315600310C000000000000000000000000000000000B7 -S315600310D000000000000000000000000000000000A7 -S315600310E00000000000000000000000000000000097 -S315600310F00000000000000000000000000000000087 -S315600311000000000000000000000000000000000076 -S315600311100000000000000000000000000000000066 -S315600311200000000000000000000000000000000056 -S315600311300000000000000000000000000000000046 -S315600311400000000000000000000000000000000036 -S315600311500000000000000000000000000000000026 -S315600311600000000000000000000000000000000016 -S315600311700000000000000000000000000000000006 -S3156003118000000000000000000000000000000000F6 -S3156003119000000000000000000000000000000000E6 -S315600311A000000000000000000000000000000000D6 -S315600311B000000000000000000000000000000000C6 -S315600311C000000000000000000000000000000000B6 -S315600311D000000000000000000000000000000000A6 -S315600311E00000000000000000000000000000000096 -S315600311F00000000000000000000000000000000086 -S315600312000000000000000000000000000000000075 -S315600312100000000000000000000000000000000065 -S315600312200000000000000000000000000000000055 -S315600312300000000000000000000000000000000045 -S315600312400000000000000000000000000000000035 -S315600312500000000000000000000000000000000025 -S315600312600000000000000000000000000000000015 -S315600312700000000000000000000000000000000005 -S3156003128000000000000000000000000000000000F5 -S3156003129000000000000000000000000000000000E5 -S315600312A000000000000000000000000000000000D5 -S315600312B000000000000000000000000000000000C5 -S315600312C000000000000000000000000000000000B5 -S315600312D000000000000000000000000000000000A5 -S315600312E00000000000000000000000000000000095 -S315600312F00000000000000000000000000000000085 -S315600313000000000000000000000000000000000074 -S315600313100000000000000000000000000000000064 -S315600313200000000000000000000000000000000054 -S315600313300000000000000000000000000000000044 -S315600313400000000000000000000000000000000034 -S315600313500000000000000000000000000000000024 -S315600313600000000000000000000000000000000014 -S315600313700000000000000000000000000000000004 -S3156003138000000000000000000000000000000000F4 -S3156003139000000000000000000000000000000000E4 -S315600313A000000000000000000000000000000000D4 -S315600313B000000000000000000000000000000000C4 -S315600313C000000000000000000000000000000000B4 -S315600313D000000000000000000000000000000000A4 -S315600313E00000000000000000000000000000000094 -S315600313F00000000000000000000000000000000084 -S315600314000000000000000000000000000000000073 -S315600314100000000000000000000000000000000063 -S315600314200000000000000000000000000000000053 -S315600314300000000000000000000000000000000043 -S315600314400000000000000000000000000000000033 -S315600314500000000000000000000000000000000023 -S315600314600000000000000000000000000000000013 -S315600314700000000000000000000000000000000003 -S3156003148000000000000000000000000000000000F3 -S3156003149000000000000000000000000000000000E3 -S315600314A000000000000000000000000000000000D3 -S315600314B000000000000000000000000000000000C3 -S315600314C000000000000000000000000000000000B3 -S315600314D000000000000000000000000000000000A3 -S315600314E00000000000000000000000000000000093 -S315600314F00000000000000000000000000000000083 -S315600315000000000000000000000000000000000072 -S315600315100000000000000000000000000000000062 -S315600315200000000000000000000000000000000052 -S315600315300000000000000000000000000000000042 -S315600315400000000000000000000000000000000032 -S315600315500000000000000000000000000000000022 -S315600315600000000000000000000000000000000012 -S315600315700000000000000000000000000000000002 -S3156003158000000000000000000000000000000000F2 -S3156003159000000000000000000000000000000000E2 -S315600315A000000000000000000000000000000000D2 -S315600315B000000000000000000000000000000000C2 -S315600315C000000000000000000000000000000000B2 -S315600315D000000000000000000000000000000000A2 -S315600315E00000000000000000000000000000000092 -S315600315F00000000000000000000000000000000082 -S315600316000000000000000000000000000000000071 -S315600316100000000000000000000000000000000061 -S315600316200000000000000000000000000000000051 -S315600316300000000000000000000000000000000041 -S315600316400000000000000000000000000000000031 -S315600316500000000000000000000000000000000021 -S315600316600000000000000000000000000000000011 -S315600316700000000000000000000000000000000001 -S3156003168000000000000000000000000000000000F1 -S3156003169000000000000000000000000000000000E1 -S315600316A000000000000000000000000000000000D1 -S315600316B000000000000000000000000000000000C1 -S315600316C000000000000000000000000000000000B1 -S315600316D000000000000000000000000000000000A1 -S315600316E00000000000000000000000000000000091 -S315600316F00000000000000000000000000000000081 -S315600317000000000000000000000000000000000070 -S315600317100000000000000000000000000000000060 -S315600317200000000000000000000000000000000050 -S315600317300000000000000000000000000000000040 -S315600317400000000000000000000000000000000030 -S315600317500000000000000000000000000000000020 -S315600317600000000000000000000000000000000010 -S315600317700000000000000000000000000000000000 -S3156003178000000000000000000000000000000000F0 -S3156003179000000000000000000000000000000000E0 -S315600317A000000000000000000000000000000000D0 -S315600317B000000000000000000000000000000000C0 -S315600317C000000000000000000000000000000000B0 -S315600317D000000000000000000000000000000000A0 -S315600317E00000000000000000000000000000000090 -S315600317F00000000000000000000000000000000080 -S31560031800000000000000000000000000000000006F -S31560031810000000000000000000000000000000005F -S31560031820000000000000000000000000000000004F -S31560031830000000000000000000000000000000003F -S31560031840000000000000000000000000000000002F -S31560031850000000000000000000000000000000001F -S31560031860000000000000000000000000000000000F -S3156003187000000000000000000000000000000000FF -S3156003188000000000000000000000000000000000EF -S3156003189000000000000000000000000000000000DF -S315600318A000000000000000000000000000000000CF -S315600318B000000000000000000000000000000000BF -S315600318C000000000000000000000000000000000AF -S315600318D0000000000000000000000000000000009F -S315600318E0000000000000000000000000000000008F -S315600318F0000000000000000000000000000000007F -S31560031900000000000000000000000000000000006E -S31560031910000000000000000000000000000000005E -S31560031920000000000000000000000000000000004E -S31560031930000000000000000000000000000000003E -S31560031940000000000000000000000000000000002E -S31560031950000000000000000000000000000000001E -S31560031960000000000000000000000000000000000E -S3156003197000000000000000000000000000000000FE -S3156003198000000000000000000000000000000000EE -S3156003199000000000000000000000000000000000DE -S315600319A000000000000000000000000000000000CE -S315600319B000000000000000000000000000000000BE -S315600319C000000000000000000000000000000000AE -S315600319D0000000000000000000000000000000009E -S315600319E0000000000000000000000000000000008E -S315600319F0000000000000000000000000000000007E -S31560031A00000000000000000000000000000000006D -S31560031A10000000000000000000000000000000005D -S31560031A20000000000000000000000000000000004D -S31560031A30000000000000000000000000000000003D -S31560031A40000000000000000000000000000000002D -S31560031A50000000000000000000000000000000001D -S31560031A60000000000000000000000000000000000D -S31560031A7000000000000000000000000000000000FD -S31560031A8000000000000000000000000000000000ED -S31560031A9000000000000000000000000000000000DD -S31560031AA000000000000000000000000000000000CD -S31560031AB000000000000000000000000000000000BD -S31560031AC000000000000000000000000000000000AD -S31560031AD0000000000000000000000000000000009D -S31560031AE0000000000000000000000000000000008D -S31560031AF0000000000000000000000000000000007D -S31560031B00000000000000000000000000000000006C -S31560031B10000000000000000000000000000000005C -S31560031B20000000000000000000000000000000004C -S31560031B30000000000000000000000000000000003C -S31560031B40000000000000000000000000000000002C -S31560031B50000000000000000000000000000000001C -S31560031B60000000000000000000000000000000000C -S31560031B7000000000000000000000000000000000FC -S31560031B8000000000000000000000000000000000EC -S31560031B9000000000000000000000000000000000DC -S31560031BA000000000000000000000000000000000CC -S31560031BB000000000000000000000000000000000BC -S31560031BC000000000000000000000000000000000AC -S31560031BD0000000000000000000000000000000009C -S31560031BE0000000000000000000000000000000008C -S31560031BF0000000000000000000000000000000007C -S31560031C00000000000000000000000000000000006B -S31560031C10000000000000000000000000000000005B -S31560031C20000000000000000000000000000000004B -S31560031C30000000000000000000000000000000003B -S31560031C40000000000000000000000000000000002B -S31560031C50000000000000000000000000000000001B -S31560031C60000000000000000000000000000000000B -S31560031C7000000000000000000000000000000000FB -S31560031C8000000000000000000000000000000000EB -S31560031C9000000000000000000000000000000000DB -S31560031CA000000000000000000000000000000000CB -S31560031CB000000000000000000000000000000000BB -S31560031CC000000000000000000000000000000000AB -S31560031CD0000000000000000000000000000000009B -S31560031CE0000000000000000000000000000000008B -S31560031CF0000000000000000000000000000000007B -S31560031D00000000000000000000000000000000006A -S31560031D10000000000000000000000000000000005A -S31560031D20000000000000000000000000000000004A -S31560031D30000000000000000000000000000000003A -S31560031D40000000000000000000000000000000002A -S31560031D50000000000000000000000000000000001A -S31560031D60000000000000000000000000000000000A -S31560031D7000000000000000000000000000000000FA -S31560031D8000000000000000000000000000000000EA -S31560031D9000000000000000000000000000000000DA -S31560031DA000000000000000000000000000000000CA -S31560031DB000000000000000000000000000000000BA -S31560031DC000000000000000000000000000000000AA -S31560031DD0000000000000000000000000000000009A -S31560031DE0000000000000000000000000000000008A -S31560031DF0000000000000000000000000000000007A -S31560031E000000000000000000000000000000000069 -S31560031E100000000000000000000000000000000059 -S31560031E200000000000000000000000000000000049 -S31560031E300000000000000000000000000000000039 -S31560031E400000000000000000000000000000000029 -S31560031E500000000000000000000000000000000019 -S31560031E600000000000000000000000000000000009 -S31560031E7000000000000000000000000000000000F9 -S31560031E8000000000000000000000000000000000E9 -S31560031E9000000000000000000000000000000000D9 -S31560031EA000000000000000000000000000000000C9 -S31560031EB000000000000000000000000000000000B9 -S31560031EC000000000000000000000000000000000A9 -S31560031ED00000000000000000000000000000000099 -S31560031EE00000000000000000000000000000000089 -S31560031EF00000000000000000000000000000000079 -S31560031F000000000000000000000000000000000068 -S31560031F100000000000000000000000000000000058 -S31560031F200000000000000000000000000000000048 -S31560031F300000000000000000000000000000000038 -S31560031F400000000000000000000000000000000028 -S31560031F500000000000000000000000000000000018 -S31560031F600000000000000000000000000000000008 -S31560031F7000000000000000000000000000000000F8 -S31560031F8000000000000000000000000000000000E8 -S31560031F9000000000000000000000000000000000D8 -S31560031FA000000000000000000000000000000000C8 -S31560031FB000000000000000000000000000000000B8 -S31560031FC000000000000000000000000000000000A8 -S31560031FD00000000000000000000000000000000098 -S31560031FE00000000000000000000000000000000088 -S31560031FF00000000000000000000000000000000078 -S315600320000000000000000000000000000000000067 -S315600320100000000000000000000000000000000057 -S315600320200000000000000000000000000000000047 -S315600320300000000000000000000000000000000037 -S315600320400000000000000000000000000000000027 -S315600320500000000000000000000000000000000017 -S315600320600000000000000000000000000000000007 -S3156003207000000000000000000000000000000000F7 -S3156003208000000000000000000000000000000000E7 -S3156003209000000000000000000000000000000000D7 -S315600320A000000000000000000000000000000000C7 -S315600320B000000000000000000000000000000000B7 -S315600320C000000000000000000000000000000000A7 -S315600320D00000000000000000000000000000000097 -S315600320E00000000000000000000000000000000087 -S315600320F00000000000000000000000000000000077 -S315600321000000000000000000000000000000000066 -S315600321100000000000000000000000000000000056 -S315600321200000000000000000000000000000000046 -S315600321300000000000000000000000000000000036 -S315600321400000000000000000000000000000000026 -S315600321500000000000000000000000000000000016 -S315600321600000000000000000000000000000000006 -S3156003217000000000000000000000000000000000F6 -S3156003218000000000000000000000000000000000E6 -S3156003219000000000000000000000000000000000D6 -S315600321A000000000000000000000000000000000C6 -S315600321B000000000000000000000000000000000B6 -S315600321C000000000000000000000000000000000A6 -S315600321D00000000000000000000000000000000096 -S315600321E00000000000000000000000000000000086 -S315600321F00000000000000000000000000000000076 -S315600322000000000000000000000000000000000065 -S315600322100000000000000000000000000000000055 -S315600322200000000000000000000000000000000045 -S315600322300000000000000000000000000000000035 -S315600322400000000000000000000000000000000025 -S315600322500000000000000000000000000000000015 -S315600322600000000000000000000000000000000005 -S3156003227000000000000000000000000000000000F5 -S3156003228000000000000000000000000000000000E5 -S3156003229000000000000000000000000000000000D5 -S315600322A000000000000000000000000000000000C5 -S315600322B000000000000000000000000000000000B5 -S315600322C000000000000000000000000000000000A5 -S315600322D00000000000000000000000000000000095 -S315600322E00000000000000000000000000000000085 -S315600322F00000000000000000000000000000000075 -S315600323000000000000000000000000000000000064 -S315600323100000000000000000000000000000000054 -S315600323200000000000000000000000000000000044 -S315600323300000000000000000000000000000000034 -S315600323400000000000000000000000000000000024 -S315600323500000000000000000000000000000000014 -S315600323600000000000000000000000000000000004 -S3156003237000000000000000000000000000000000F4 -S3156003238000000000000000000000000000000000E4 -S3156003239000000000000000000000000000000000D4 -S315600323A000000000000000000000000000000000C4 -S315600323B000000000000000000000000000000000B4 -S315600323C000000000000000000000000000000000A4 -S315600323D00000000000000000000000000000000094 -S315600323E00000000000000000000000000000000084 -S315600323F00000000000000000000000000000000074 -S315600324000000000000000000000000000000000063 -S315600324100000000000000000000000000000000053 -S315600324200000000000000000000000000000000043 -S315600324300000000000000000000000000000000033 -S315600324400000000000000000000000000000000023 -S315600324500000000000000000000000000000000013 -S315600324600000000000000000000000000000000003 -S3156003247000000000000000000000000000000000F3 -S3156003248000000000000000000000000000000000E3 -S3156003249000000000000000000000000000000000D3 -S315600324A000000000000000000000000000000000C3 -S315600324B000000000000000000000000000000000B3 -S315600324C000000000000000000000000000000000A3 -S315600324D00000000000000000000000000000000093 -S315600324E00000000000000000000000000000000083 -S315600324F00000000000000000000000000000000073 -S315600325000000000000000000000000000000000062 -S315600325100000000000000000000000000000000052 -S315600325200000000000000000000000000000000042 -S315600325300000000000000000000000000000000032 -S315600325400000000000000000000000000000000022 -S315600325500000000000000000000000000000000012 -S315600325600000000000000000000000000000000002 -S3156003257000000000000000000000000000000000F2 -S3156003258000000000000000000000000000000000E2 -S3156003259000000000000000000000000000000000D2 -S315600325A000000000000000000000000000000000C2 -S315600325B000000000000000000000000000000000B2 -S315600325C000000000000000000000000000000000A2 -S315600325D00000000000000000000000000000000092 -S315600325E00000000000000000000000000000000082 -S315600325F00000000000000000000000000000000072 -S315600326000000000000000000000000000000000061 -S315600326100000000000000000000000000000000051 -S315600326200000000000000000000000000000000041 -S315600326300000000000000000000000000000000031 -S315600326400000000000000000000000000000000021 -S315600326500000000000000000000000000000000011 -S315600326600000000000000000000000000000000001 -S3156003267000000000000000000000000000000000F1 -S3156003268000000000000000000000000000000000E1 -S3156003269000000000000000000000000000000000D1 -S315600326A000000000000000000000000000000000C1 -S315600326B000000000000000000000000000000000B1 -S315600326C000000000000000000000000000000000A1 -S315600326D00000000000000000000000000000000091 -S315600326E00000000000000000000000000000000081 -S315600326F00000000000000000000000000000000071 -S315600327000000000000000000000000000000000060 -S315600327100000000000000000000000000000000050 -S315600327200000000000000000000000000000000040 -S315600327300000000000000000000000000000000030 -S315600327400000000000000000000000000000000020 -S315600327500000000000000000000000000000000010 -S315600327600000000000000000000000000000000000 -S3156003277000000000000000000000000000000000F0 -S3156003278000000000000000000000000000000000E0 -S3156003279000000000000000000000000000000000D0 -S315600327A000000000000000000000000000000000C0 -S315600327B000000000000000000000000000000000B0 -S315600327C000000000000000000000000000000000A0 -S315600327D00000000000000000000000000000000090 -S315600327E00000000000000000000000000000000080 -S315600327F00000000000000000000000000000000070 -S31560032800000000000000000000000000000000005F -S31560032810000000000000000000000000000000004F -S31560032820000000000000000000000000000000003F -S31560032830000000000000000000000000000000002F -S31560032840000000000000000000000000000000001F -S31560032850000000000000000000000000000000000F -S3156003286000000000000000000000000000000000FF -S3156003287000000000000000000000000000000000EF -S3156003288000000000000000000000000000000000DF -S3156003289000000000000000000000000000000000CF -S315600328A000000000000000000000000000000000BF -S315600328B000000000000000000000000000000000AF -S315600328C0000000000000000000000000000000009F -S315600328D0000000000000000000000000000000008F -S315600328E0000000000000000000000000000000007F -S315600328F0000000000000000000000000000000006F -S31560032900000000000000000000000000000000005E -S31560032910000000000000000000000000000000004E -S31560032920000000000000000000000000000000003E -S31560032930000000000000000000000000000000002E -S31560032940000000000000000000000000000000001E -S31560032950000000000000000000000000000000000E -S3156003296000000000000000000000000000000000FE -S3156003297000000000000000000000000000000000EE -S3156003298000000000000000000000000000000000DE -S3156003299000000000000000000000000000000000CE -S315600329A000000000000000000000000000000000BE -S315600329B000000000000000000000000000000000AE -S315600329C0000000000000000000000000000000009E -S315600329D0000000000000000000000000000000008E -S315600329E0000000000000000000000000000000007E -S315600329F0000000000000000000000000000000006E -S31560032A00000000000000000000000000000000005D -S31560032A10000000000000000000000000000000004D -S31560032A20000000000000000000000000000000003D -S31560032A30000000000000000000000000000000002D -S31560032A40000000000000000000000000000000001D -S31560032A50000000000000000000000000000000000D -S31560032A6000000000000000000000000000000000FD -S31560032A7000000000000000000000000000000000ED -S31560032A8000000000000000000000000000000000DD -S31560032A9000000000000000000000000000000000CD -S31560032AA000000000000000000000000000000000BD -S31560032AB000000000000000000000000000000000AD -S31560032AC0000000000000000000000000000000009D -S31560032AD0000000000000000000000000000000008D -S31560032AE0000000000000000000000000000000007D -S31560032AF0000000000000000000000000000000006D -S31560032B00000000000000000000000000000000005C -S31560032B10000000000000000000000000000000004C -S31560032B20000000000000000000000000000000003C -S31560032B30000000000000000000000000000000002C -S31560032B40000000000000000000000000000000001C -S31560032B50000000000000000000000000000000000C -S31560032B6000000000000000000000000000000000FC -S31560032B7000000000000000000000000000000000EC -S31560032B8000000000000000000000000000000000DC -S31560032B9000000000000000000000000000000000CC -S31560032BA000000000000000000000000000000000BC -S31560032BB000000000000000000000000000000000AC -S31560032BC0000000000000000000000000000000009C -S31560032BD0000000000000000000000000000000008C -S31560032BE0000000000000000000000000000000007C -S31560032BF0000000000000000000000000000000006C -S31560032C00000000000000000000000000000000005B -S31560032C10000000000000000000000000000000004B -S31560032C20000000000000000000000000000000003B -S31560032C30000000000000000000000000000000002B -S31560032C40000000000000000000000000000000001B -S31560032C50000000000000000000000000000000000B -S31560032C6000000000000000000000000000000000FB -S31560032C7000000000000000000000000000000000EB -S31560032C8000000000000000000000000000000000DB -S31560032C9000000000000000000000000000000000CB -S31560032CA000000000000000000000000000000000BB -S31560032CB000000000000000000000000000000000AB -S31560032CC0000000000000000000000000000000009B -S31560032CD0000000000000000000000000000000008B -S31560032CE0000000000000000000000000000000007B -S31560032CF0000000000000000000000000000000006B -S31560032D00000000000000000000000000000000005A -S31560032D10000000000000000000000000000000004A -S31560032D20000000000000000000000000000000003A -S31560032D30000000000000000000000000000000002A -S31560032D40000000000000000000000000000000001A -S31560032D50000000000000000000000000000000000A -S31560032D6000000000000000000000000000000000FA -S31560032D7000000000000000000000000000000000EA -S31560032D8000000000000000000000000000000000DA -S31560032D9000000000000000000000000000000000CA -S31560032DA000000000000000000000000000000000BA -S31560032DB000000000000000000000000000000000AA -S31560032DC0000000000000000000000000000000009A -S31560032DD0000000000000000000000000000000008A -S31560032DE0000000000000000000000000000000007A -S31560032DF0000000000000000000000000000000006A -S31560032E000000000000000000000000000000000059 -S31560032E100000000000000000000000000000000049 -S31560032E200000000000000000000000000000000039 -S31560032E300000000000000000000000000000000029 -S31560032E400000000000000000000000000000000019 -S31560032E500000000000000000000000000000000009 -S31560032E6000000000000000000000000000000000F9 -S31560032E7000000000000000000000000000000000E9 -S31560032E8000000000000000000000000000000000D9 -S31560032E9000000000000000000000000000000000C9 -S31560032EA000000000000000000000000000000000B9 -S31560032EB000000000000000000000000000000000A9 -S31560032EC00000000000000000000000000000000099 -S31560032ED00000000000000000000000000000000089 -S31560032EE00000000000000000000000000000000079 -S31560032EF00000000000000000000000000000000069 -S31560032F000000000000000000000000000000000058 -S31560032F100000000000000000000000000000000048 -S31560032F200000000000000000000000000000000038 -S31560032F300000000000000000000000000000000028 -S31560032F400000000000000000000000000000000018 -S31560032F500000000000000000000000000000000008 -S31560032F6000000000000000000000000000000000F8 -S31560032F7000000000000000000000000000000000E8 -S31560032F8000000000000000000000000000000000D8 -S31560032F9000000000000000000000000000000000C8 -S31560032FA000000000000000000000000000000000B8 -S31560032FB000000000000000000000000000000000A8 -S31560032FC00000000000000000000000000000000098 -S31560032FD00000000000000000000000000000000088 -S31560032FE00000000000000000000000000000000078 -S31560032FF00000000000000000000000000000000068 -S315600330000000000000000000000000000000000057 -S315600330100000000000000000000000000000000047 -S315600330200000000000000000000000000000000037 -S315600330300000000000000000000000000000000027 -S315600330400000000000000000000000000000000017 -S315600330500000000000000000000000000000000007 -S3156003306000000000000000000000000000000000F7 -S3156003307000000000000000000000000000000000E7 -S3156003308000000000000000000000000000000000D7 -S3156003309000000000000000000000000000000000C7 -S315600330A000000000000000000000000000000000B7 -S315600330B000000000000000000000000000000000A7 -S315600330C00000000000000000000000000000000097 -S315600330D00000000000000000000000000000000087 -S315600330E00000000000000000000000000000000077 -S315600330F00000000000000000000000000000000067 -S315600331000000000000000000000000000000000056 -S315600331100000000000000000000000000000000046 -S315600331200000000000000000000000000000000036 -S315600331300000000000000000000000000000000026 -S315600331400000000000000000000000000000000016 -S315600331500000000000000000000000000000000006 -S3156003316000000000000000000000000000000000F6 -S3156003317000000000000000000000000000000000E6 -S3156003318000000000000000000000000000000000D6 -S3156003319000000000000000000000000000000000C6 -S315600331A000000000000000000000000000000000B6 -S315600331B000000000000000000000000000000000A6 -S315600331C00000000000000000000000000000000096 -S315600331D00000000000000000000000000000000086 -S315600331E00000000000000000000000000000000076 -S315600331F00000000000000000000000000000000066 -S315600332000000000000000000000000000000000055 -S315600332100000000000000000000000000000000045 -S315600332200000000000000000000000000000000035 -S315600332300000000000000000000000000000000025 -S315600332400000000000000000000000000000000015 -S315600332500000000000000000000000000000000005 -S3156003326000000000000000000000000000000000F5 -S3156003327000000000000000000000000000000000E5 -S3156003328000000000000000000000000000000000D5 -S3156003329000000000000000000000000000000000C5 -S315600332A000000000000000000000000000000000B5 -S315600332B000000000000000000000000000000000A5 -S315600332C00000000000000000000000000000000095 -S315600332D00000000000000000000000000000000085 -S315600332E00000000000000000000000000000000075 -S315600332F00000000000000000000000000000000065 -S315600333000000000000000000000000000000000054 -S315600333100000000000000000000000000000000044 -S315600333200000000000000000000000000000000034 -S315600333300000000000000000000000000000000024 -S315600333400000000000000000000000000000000014 -S315600333500000000000000000000000000000000004 -S3156003336000000000000000000000000000000000F4 -S3156003337000000000000000000000000000000000E4 -S3156003338000000000000000000000000000000000D4 -S3156003339000000000000000000000000000000000C4 -S315600333A000000000000000000000000000000000B4 -S315600333B000000000000000000000000000000000A4 -S315600333C00000000000000000000000000000000094 -S315600333D00000000000000000000000000000000084 -S315600333E00000000000000000000000000000000074 -S315600333F00000000000000000000000000000000064 -S315600334000000000000000000000000000000000053 -S315600334100000000000000000000000000000000043 -S315600334200000000000000000000000000000000033 -S315600334300000000000000000000000000000000023 -S315600334400000000000000000000000000000000013 -S315600334500000000000000000000000000000000003 -S3156003346000000000000000000000000000000000F3 -S3156003347000000000000000000000000000000000E3 -S3156003348000000000000000000000000000000000D3 -S3156003349000000000000000000000000000000000C3 -S315600334A000000000000000000000000000000000B3 -S315600334B000000000000000000000000000000000A3 -S315600334C00000000000000000000000000000000093 -S315600334D00000000000000000000000000000000083 -S315600334E00000000000000000000000000000000073 -S315600334F00000000000000000000000000000000063 -S315600335000000000000000000000000000000000052 -S315600335100000000000000000000000000000000042 -S315600335200000000000000000000000000000000032 -S315600335300000000000000000000000000000000022 -S315600335400000000000000000000000000000000012 -S315600335500000000000000000000000000000000002 -S3156003356000000000000000000000000000000000F2 -S3156003357000000000000000000000000000000000E2 -S3156003358000000000000000000000000000000000D2 -S3156003359000000000000000000000000000000000C2 -S315600335A000000000000000000000000000000000B2 -S315600335B000000000000000000000000000000000A2 -S315600335C00000000000000000000000000000000092 -S315600335D00000000000000000000000000000000082 -S315600335E00000000000000000000000000000000072 -S315600335F00000000000000000000000000000000062 -S315600336000000000000000000000000000000000051 -S315600336100000000000000000000000000000000041 -S315600336200000000000000000000000000000000031 -S315600336300000000000000000000000000000000021 -S315600336400000000000000000000000000000000011 -S315600336500000000000000000000000000000000001 -S3156003366000000000000000000000000000000000F1 -S3156003367000000000000000000000000000000000E1 -S3156003368000000000000000000000000000000000D1 -S3156003369000000000000000000000000000000000C1 -S315600336A000000000000000000000000000000000B1 -S315600336B000000000000000000000000000000000A1 -S315600336C00000000000000000000000000000000091 -S315600336D00000000000000000000000000000000081 -S315600336E00000000000000000000000000000000071 -S315600336F00000000000000000000000000000000061 -S315600337000000000000000000000000000000000050 -S315600337100000000000000000000000000000000040 -S315600337200000000000000000000000000000000030 -S315600337300000000000000000000000000000000020 -S315600337400000000000000000000000000000000010 -S315600337500000000000000000000000000000000000 -S3156003376000000000000000000000000000000000F0 -S3156003377000000000000000000000000000000000E0 -S3156003378000000000000000000000000000000000D0 -S3156003379000000000000000000000000000000000C0 -S315600337A000000000000000000000000000000000B0 -S315600337B000000000000000000000000000000000A0 -S315600337C00000000000000000000000000000000090 -S315600337D00000000000000000000000000000000080 -S315600337E00000000000000000000000000000000070 -S315600337F00000000000000000000000000000000060 -S31560033800000000000000000000000000000000004F -S31560033810000000000000000000000000000000003F -S31560033820000000000000000000000000000000002F -S31560033830000000000000000000000000000000001F -S31560033840000000000000000000000000000000000F -S3156003385000000000000000000000000000000000FF -S3156003386000000000000000000000000000000000EF -S3156003387000000000000000000000000000000000DF -S3156003388000000000000000000000000000000000CF -S3156003389000000000000000000000000000000000BF -S315600338A000000000000000000000000000000000AF -S315600338B0000000000000000000000000000000009F -S315600338C0000000000000000000000000000000008F -S315600338D0000000000000000000000000000000007F -S315600338E0000000000000000000000000000000006F -S315600338F0000000000000000000000000000000005F -S31560033900000000000000000000000000000000004E -S31560033910000000000000000000000000000000003E -S31560033920000000000000000000000000000000002E -S31560033930000000000000000000000000000000001E -S31560033940000000000000000000000000000000000E -S3156003395000000000000000000000000000000000FE -S3156003396000000000000000000000000000000000EE -S3156003397000000000000000000000000000000000DE -S3156003398000000000000000000000000000000000CE -S3156003399000000000000000000000000000000000BE -S315600339A000000000000000000000000000000000AE -S315600339B0000000000000000000000000000000009E -S315600339C0000000000000000000000000000000008E -S315600339D0000000000000000000000000000000007E -S315600339E0000000000000000000000000000000006E -S315600339F0000000000000000000000000000000005E -S31560033A00000000000000000000000000000000004D -S31560033A10000000000000000000000000000000003D -S31560033A20000000000000000000000000000000002D -S31560033A30000000000000000000000000000000001D -S31560033A40000000000000000000000000000000000D -S31560033A5000000000000000000000000000000000FD -S31560033A6000000000000000000000000000000000ED -S31560033A7000000000000000000000000000000000DD -S31560033A8000000000000000000000000000000000CD -S31560033A9000000000000000000000000000000000BD -S31560033AA000000000000000000000000000000000AD -S31560033AB0000000000000000000000000000000009D -S31560033AC0000000000000000000000000000000008D -S31560033AD0000000000000000000000000000000007D -S31560033AE0000000000000000000000000000000006D -S31560033AF0000000000000000000000000000000005D -S31560033B00000000000000000000000000000000004C -S31560033B10000000000000000000000000000000003C -S31560033B20000000000000000000000000000000002C -S31560033B30000000000000000000000000000000001C -S31560033B40000000000000000000000000000000000C -S31560033B5000000000000000000000000000000000FC -S31560033B6000000000000000000000000000000000EC -S31560033B7000000000000000000000000000000000DC -S31560033B8000000000000000000000000000000000CC -S31560033B9000000000000000000000000000000000BC -S31560033BA000000000000000000000000000000000AC -S31560033BB0000000000000000000000000000000009C -S31560033BC0000000000000000000000000000000008C -S31560033BD0000000000000000000000000000000007C -S31560033BE0000000000000000000000000000000006C -S31560033BF0000000000000000000000000000000005C -S31560033C00000000000000000000000000000000004B -S31560033C10000000000000000000000000000000003B -S31560033C20000000000000000000000000000000002B -S31560033C30000000000000000000000000000000001B -S31560033C40000000000000000000000000000000000B -S31560033C5000000000000000000000000000000000FB -S31560033C6000000000000000000000000000000000EB -S31560033C7000000000000000000000000000000000DB -S31560033C8000000000000000000000000000000000CB -S31560033C9000000000000000000000000000000000BB -S31560033CA000000000000000000000000000000000AB -S31560033CB0000000000000000000000000000000009B -S31560033CC0000000000000000000000000000000008B -S31560033CD0000000000000000000000000000000007B -S31560033CE0000000000000000000000000000000006B -S31560033CF0000000000000000000000000000000005B -S31560033D00000000000000000000000000000000004A -S31560033D10000000000000000000000000000000003A -S31560033D20000000000000000000000000000000002A -S31560033D30000000000000000000000000000000001A -S31560033D40000000000000000000000000000000000A -S31560033D5000000000000000000000000000000000FA -S31560033D6000000000000000000000000000000000EA -S31560033D7000000000000000000000000000000000DA -S31560033D8000000000000000000000000000000000CA -S31560033D9000000000000000000000000000000000BA -S31560033DA000000000000000000000000000000000AA -S31560033DB0000000000000000000000000000000009A -S31560033DC0000000000000000000000000000000008A -S31560033DD0000000000000000000000000000000007A -S31560033DE0000000000000000000000000000000006A -S31560033DF0000000000000000000000000000000005A -S31560033E000000000000000000000000000000000049 -S31560033E100000000000000000000000000000000039 -S31560033E200000000000000000000000000000000029 -S31560033E300000000000000000000000000000000019 -S31560033E400000000000000000000000000000000009 -S31560033E5000000000000000000000000000000000F9 -S31560033E6000000000000000000000000000000000E9 -S31560033E7000000000000000000000000000000000D9 -S31560033E8000000000000000000000000000000000C9 -S31560033E9000000000000000000000000000000000B9 -S31560033EA000000000000000000000000000000000A9 -S31560033EB00000000000000000000000000000000099 -S31560033EC00000000000000000000000000000000089 -S31560033ED00000000000000000000000000000000079 -S31560033EE00000000000000000000000000000000069 -S31560033EF00000000000000000000000000000000059 -S31560033F000000000000000000000000000000000048 -S31560033F100000000000000000000000000000000038 -S31560033F200000000000000000000000000000000028 -S31560033F300000000000000000000000000000000018 -S31560033F400000000000000000000000000000000008 -S31560033F5000000000000000000000000000000000F8 -S31560033F6000000000000000000000000000000000E8 -S31560033F7000000000000000000000000000000000D8 -S31560033F8000000000000000000000000000000000C8 -S31560033F9000000000000000000000000000000000B8 -S31560033FA000000000000000000000000000000000A8 -S31560033FB00000000000000000000000000000000098 -S31560033FC00000000000000000000000000000000088 -S31560033FD00000000000000000000000000000000078 -S31560033FE00000000000000000000000000000000068 -S31560033FF00000000000000000000000000000000058 -S315600340000000000000000000000000000000000047 -S315600340100000000000000000000000000000000037 -S315600340200000000000000000000000000000000027 -S315600340300000000000000000000000000000000017 -S315600340400000000000000000000000000000000007 -S3156003405000000000000000000000000000000000F7 -S3156003406000000000000000000000000000000000E7 -S3156003407000000000000000000000000000000000D7 -S3156003408000000000000000000000000000000000C7 -S3156003409000000000000000000000000000000000B7 -S315600340A000000000000000000000000000000000A7 -S315600340B00000000000000000000000000000000097 -S315600340C00000000000000000000000000000000087 -S315600340D00000000000000000000000000000000077 -S315600340E00000000000000000000000000000000067 -S315600340F00000000000000000000000000000000057 -S315600341000000000000000000000000000000000046 -S315600341100000000000000000000000000000000036 -S315600341200000000000000000000000000000000026 -S315600341300000000000000000000000000000000016 -S315600341400000000000000000000000000000000006 -S3156003415000000000000000000000000000000000F6 -S3156003416000000000000000000000000000000000E6 -S3156003417000000000000000000000000000000000D6 -S3156003418000000000000000000000000000000000C6 -S3156003419000000000000000000000000000000000B6 -S315600341A000000000000000000000000000000000A6 -S315600341B00000000000000000000000000000000096 -S315600341C00000000000000000000000000000000086 -S315600341D00000000000000000000000000000000076 -S315600341E00000000000000000000000000000000066 -S315600341F00000000000000000000000000000000056 -S315600342000000000000000000000000000000000045 -S315600342100000000000000000000000000000000035 -S315600342200000000000000000000000000000000025 -S315600342300000000000000000000000000000000015 -S315600342400000000000000000000000000000000005 -S3156003425000000000000000000000000000000000F5 -S3156003426000000000000000000000000000000000E5 -S3156003427000000000000000000000000000000000D5 -S3156003428000000000000000000000000000000000C5 -S3156003429000000000000000000000000000000000B5 -S315600342A000000000000000000000000000000000A5 -S315600342B00000000000000000000000000000000095 -S315600342C00000000000000000000000000000000085 -S315600342D00000000000000000000000000000000075 -S315600342E00000000000000000000000000000000065 -S315600342F00000000000000000000000000000000055 -S315600343000000000000000000000000000000000044 -S315600343100000000000000000000000000000000034 -S315600343200000000000000000000000000000000024 -S315600343300000000000000000000000000000000014 -S315600343400000000000000000000000000000000004 -S3156003435000000000000000000000000000000000F4 -S3156003436000000000000000000000000000000000E4 -S3156003437000000000000000000000000000000000D4 -S3156003438000000000000000000000000000000000C4 -S3156003439000000000000000000000000000000000B4 -S315600343A000000000000000000000000000000000A4 -S315600343B00000000000000000000000000000000094 -S315600343C00000000000000000000000000000000084 -S315600343D00000000000000000000000000000000074 -S315600343E00000000000000000000000000000000064 -S315600343F00000000000000000000000000000000054 -S315600344000000000000000000000000000000000043 -S315600344100000000000000000000000000000000033 -S315600344200000000000000000000000000000000023 -S315600344300000000000000000000000000000000013 -S315600344400000000000000000000000000000000003 -S3156003445000000000000000000000000000000000F3 -S3156003446000000000000000000000000000000000E3 -S3156003447000000000000000000000000000000000D3 -S3156003448000000000000000000000000000000000C3 -S3156003449000000000000000000000000000000000B3 -S315600344A000000000000000000000000000000000A3 -S315600344B00000000000000000000000000000000093 -S315600344C00000000000000000000000000000000083 -S315600344D00000000000000000000000000000000073 -S315600344E00000000000000000000000000000000063 -S315600344F00000000000000000000000000000000053 -S315600345000000000000000000000000000000000042 -S315600345100000000000000000000000000000000032 -S315600345200000000000000000000000000000000022 -S315600345300000000000000000000000000000000012 -S315600345400000000000000000000000000000000002 -S3156003455000000000000000000000000000000000F2 -S3156003456000000000000000000000000000000000E2 -S3156003457000000000000000000000000000000000D2 -S3156003458000000000000000000000000000000000C2 -S3156003459000000000000000000000000000000000B2 -S315600345A000000000000000000000000000000000A2 -S315600345B00000000000000000000000000000000092 -S315600345C00000000000000000000000000000000082 -S315600345D00000000000000000000000000000000072 -S315600345E00000000000000000000000000000000062 -S315600345F00000000000000000000000000000000052 -S315600346000000000000000000000000000000000041 -S315600346100000000000000000000000000000000031 -S315600346200000000000000000000000000000000021 -S315600346300000000000000000000000000000000011 -S315600346400000000000000000000000000000000001 -S3156003465000000000000000000000000000000000F1 -S3156003466000000000000000000000000000000000E1 -S3156003467000000000000000000000000000000000D1 -S3156003468000000000000000000000000000000000C1 -S3156003469000000000000000000000000000000000B1 -S315600346A000000000000000000000000000000000A1 -S315600346B00000000000000000000000000000000091 -S315600346C00000000000000000000000000000000081 -S315600346D00000000000000000000000000000000071 -S315600346E00000000000000000000000000000000061 -S315600346F00000000000000000000000000000000051 -S315600347000000000000000000000000000000000040 -S315600347100000000000000000000000000000000030 -S315600347200000000000000000000000000000000020 -S315600347300000000000000000000000000000000010 -S315600347400000000000000000000000000000000000 -S3156003475000000000000000000000000000000000F0 -S3156003476000000000000000000000000000000000E0 -S3156003477000000000000000000000000000000000D0 -S3156003478000000000000000000000000000000000C0 -S3156003479000000000000000000000000000000000B0 -S315600347A000000000000000000000000000000000A0 -S315600347B00000000000000000000000000000000090 -S315600347C00000000000000000000000000000000080 -S315600347D00000000000000000000000000000000070 -S315600347E00000000000000000000000000000000060 -S315600347F00000000000000000000000000000000050 -S31560034800000000000000000000000000000000003F -S31560034810000000000000000000000000000000002F -S31560034820000000000000000000000000000000001F -S31560034830000000000000000000000000000000000F -S3156003484000000000000000000000000000000000FF -S3156003485000000000000000000000000000000000EF -S3156003486000000000000000000000000000000000DF -S3156003487000000000000000000000000000000000CF -S3156003488000000000000000000000000000000000BF -S3156003489000000000000000000000000000000000AF -S315600348A0000000000000000000000000000000009F -S315600348B0000000000000000000000000000000008F -S315600348C0000000000000000000000000000000007F -S315600348D0000000000000000000000000000000006F -S315600348E0000000000000000000000000000000005F -S315600348F0000000000000000000000000000000004F -S31560034900000000000000000000000000000000003E -S31560034910000000000000000000000000000000002E -S31560034920000000000000000000000000000000001E -S31560034930000000000000000000000000000000000E -S3156003494000000000000000000000000000000000FE -S3156003495000000000000000000000000000000000EE -S3156003496000000000000000000000000000000000DE -S3156003497000000000000000000000000000000000CE -S3156003498000000000000000000000000000000000BE -S3156003499000000000000000000000000000000000AE -S315600349A0000000000000000000000000000000009E -S315600349B0000000000000000000000000000000008E -S315600349C0000000000000000000000000000000007E -S315600349D0000000000000000000000000000000006E -S315600349E0000000000000000000000000000000005E -S315600349F0000000000000000000000000000000004E -S31560034A00000000000000000000000000000000003D -S31560034A10000000000000000000000000000000002D -S31560034A20000000000000000000000000000000001D -S31560034A30000000000000000000000000000000000D -S31560034A4000000000000000000000000000000000FD -S31560034A5000000000000000000000000000000000ED -S31560034A6000000000000000000000000000000000DD -S31560034A7000000000000000000000000000000000CD -S31560034A8000000000000000000000000000000000BD -S31560034A9000000000000000000000000000000000AD -S31560034AA0000000000000000000000000000000009D -S31560034AB0000000000000000000000000000000008D -S31560034AC0000000000000000000000000000000007D -S31560034AD0000000000000000000000000000000006D -S31560034AE0000000000000000000000000000000005D -S31560034AF0000000000000000000000000000000004D -S31560034B00000000000000000000000000000000003C -S31560034B10000000000000000000000000000000002C -S31560034B20000000000000000000000000000000001C -S31560034B30000000000000000000000000000000000C -S31560034B4000000000000000000000000000000000FC -S31560034B5000000000000000000000000000000000EC -S31560034B6000000000000000000000000000000000DC -S31560034B7000000000000000000000000000000000CC -S31560034B8000000000000000000000000000000000BC -S31560034B9000000000000000000000000000000000AC -S31560034BA0000000000000000000000000000000009C -S31560034BB0000000000000000000000000000000008C -S31560034BC0000000000000000000000000000000007C -S31560034BD0000000000000000000000000000000006C -S31560034BE0000000000000000000000000000000005C -S31560034BF0000000000000000000000000000000004C -S31560034C00000000000000000000000000000000003B -S31560034C10000000000000000000000000000000002B -S31560034C20000000000000000000000000000000001B -S31560034C30000000000000000000000000000000000B -S31560034C4000000000000000000000000000000000FB -S31560034C5000000000000000000000000000000000EB -S31560034C6000000000000000000000000000000000DB -S31560034C7000000000000000000000000000000000CB -S31560034C8000000000000000000000000000000000BB -S31560034C9000000000000000000000000000000000AB -S31560034CA0000000000000000000000000000000009B -S31560034CB0000000000000000000000000000000008B -S31560034CC0000000000000000000000000000000007B -S31560034CD0000000000000000000000000000000006B -S31560034CE0000000000000000000000000000000005B -S31560034CF0000000000000000000000000000000004B -S31560034D00000000000000000000000000000000003A -S31560034D10000000000000000000000000000000002A -S31560034D20000000000000000000000000000000001A -S31560034D30000000000000000000000000000000000A -S31560034D4000000000000000000000000000000000FA -S31560034D5000000000000000000000000000000000EA -S31560034D6000000000000000000000000000000000DA -S31560034D7000000000000000000000000000000000CA -S31560034D8000000000000000000000000000000000BA -S31560034D9000000000000000000000000000000000AA -S31560034DA0000000000000000000000000000000009A -S31560034DB0000000000000000000000000000000008A -S31560034DC0000000000000000000000000000000007A -S31560034DD0000000000000000000000000000000006A -S31560034DE0000000000000000000000000000000005A -S31560034DF0000000000000000000000000000000004A -S31560034E000000000000000000000000000000000039 -S31560034E100000000000000000000000000000000029 -S31560034E200000000000000000000000000000000019 -S31560034E300000000000000000000000000000000009 -S31560034E4000000000000000000000000000000000F9 -S31560034E5000000000000000000000000000000000E9 -S31560034E6000000000000000000000000000000000D9 -S31560034E7000000000000000000000000000000000C9 -S31560034E8000000000000000000000000000000000B9 -S31560034E9000000000000000000000000000000000A9 -S31560034EA00000000000000000000000000000000099 -S31560034EB00000000000000000000000000000000089 -S31560034EC00000000000000000000000000000000079 -S31560034ED00000000000000000000000000000000069 -S31560034EE00000000000000000000000000000000059 -S31560034EF00000000000000000000000000000000049 -S31560034F000000000000000000000000000000000038 -S31560034F100000000000000000000000000000000028 -S31560034F200000000000000000000000000000000018 -S31560034F300000000000000000000000000000000008 -S31560034F4000000000000000000000000000000000F8 -S31560034F5000000000000000000000000000000000E8 -S31560034F6000000000000000000000000000000000D8 -S31560034F7000000000000000000000000000000000C8 -S31560034F8000000000000000000000000000000000B8 -S31560034F9000000000000000000000000000000000A8 -S31560034FA00000000000000000000000000000000098 -S31560034FB00000000000000000000000000000000088 -S31560034FC00000000000000000000000000000000078 -S31560034FD00000000000000000000000000000000068 -S31560034FE00000000000000000000000000000000058 -S31560034FF00000000000000000000000000000000048 -S315600350000000000000000000000000000000000037 -S315600350100000000000000000000000000000000027 -S315600350200000000000000000000000000000000017 -S315600350300000000000000000000000000000000007 -S3156003504000000000000000000000000000000000F7 -S3156003505000000000000000000000000000000000E7 -S3156003506000000000000000000000000000000000D7 -S3156003507000000000000000000000000000000000C7 -S3156003508000000000000000000000000000000000B7 -S3156003509000000000000000000000000000000000A7 -S315600350A00000000000000000000000000000000097 -S315600350B00000000000000000000000000000000087 -S315600350C00000000000000000000000000000000077 -S315600350D00000000000000000000000000000000067 -S315600350E00000000000000000000000000000000057 -S315600350F00000000000000000000000000000000047 -S315600351000000000000000000000000000000000036 -S315600351100000000000000000000000000000000026 -S315600351200000000000000000000000000000000016 -S315600351300000000000000000000000000000000006 -S3156003514000000000000000000000000000000000F6 -S3156003515000000000000000000000000000000000E6 -S3156003516000000000000000000000000000000000D6 -S3156003517000000000000000000000000000000000C6 -S3156003518000000000000000000000000000000000B6 -S3156003519000000000000000000000000000000000A6 -S315600351A00000000000000000000000000000000096 -S315600351B00000000000000000000000000000000086 -S315600351C00000000000000000000000000000000076 -S315600351D00000000000000000000000000000000066 -S315600351E00000000000000000000000000000000056 -S315600351F00000000000000000000000000000000046 -S315600352000000000000000000000000000000000035 -S315600352100000000000000000000000000000000025 -S315600352200000000000000000000000000000000015 -S315600352300000000000000000000000000000000005 -S3156003524000000000000000000000000000000000F5 -S3156003525000000000000000000000000000000000E5 -S3156003526000000000000000000000000000000000D5 -S3156003527000000000000000000000000000000000C5 -S3156003528000000000000000000000000000000000B5 -S3156003529000000000000000000000000000000000A5 -S315600352A00000000000000000000000000000000095 -S315600352B00000000000000000000000000000000085 -S315600352C00000000000000000000000000000000075 -S315600352D00000000000000000000000000000000065 -S315600352E00000000000000000000000000000000055 -S315600352F00000000000000000000000000000000045 -S315600353000000000000000000000000000000000034 -S315600353100000000000000000000000000000000024 -S315600353200000000000000000000000000000000014 -S315600353300000000000000000000000000000000004 -S3156003534000000000000000000000000000000000F4 -S3156003535000000000000000000000000000000000E4 -S3156003536000000000000000000000000000000000D4 -S3156003537000000000000000000000000000000000C4 -S3156003538000000000000000000000000000000000B4 -S3156003539000000000000000000000000000000000A4 -S315600353A00000000000000000000000000000000094 -S315600353B00000000000000000000000000000000084 -S315600353C00000000000000000000000000000000074 -S315600353D00000000000000000000000000000000064 -S315600353E00000000000000000000000000000000054 -S315600353F00000000000000000000000000000000044 -S315600354000000000000000000000000000000000033 -S315600354100000000000000000000000000000000023 -S315600354200000000000000000000000000000000013 -S315600354300000000000000000000000000000000003 -S3156003544000000000000000000000000000000000F3 -S3156003545000000000000000000000000000000000E3 -S3156003546000000000000000000000000000000000D3 -S3156003547000000000000000000000000000000000C3 -S3156003548000000000000000000000000000000000B3 -S3156003549000000000000000000000000000000000A3 -S315600354A00000000000000000000000000000000093 -S315600354B00000000000000000000000000000000083 -S315600354C00000000000000000000000000000000073 -S315600354D00000000000000000000000000000000063 -S315600354E00000000000000000000000000000000053 -S315600354F00000000000000000000000000000000043 -S315600355000000000000000000000000000000000032 -S315600355100000000000000000000000000000000022 -S315600355200000000000000000000000000000000012 -S315600355300000000000000000000000000000000002 -S3156003554000000000000000000000000000000000F2 -S3156003555000000000000000000000000000000000E2 -S3156003556000000000000000000000000000000000D2 -S3156003557000000000000000000000000000000000C2 -S3156003558000000000000000000000000000000000B2 -S3156003559000000000000000000000000000000000A2 -S315600355A00000000000000000000000000000000092 -S315600355B00000000000000000000000000000000082 -S315600355C00000000000000000000000000000000072 -S315600355D00000000000000000000000000000000062 -S315600355E00000000000000000000000000000000052 -S315600355F00000000000000000000000000000000042 -S315600356000000000000000000000000000000000031 -S315600356100000000000000000000000000000000021 -S315600356200000000000000000000000000000000011 -S315600356300000000000000000000000000000000001 -S3156003564000000000000000000000000000000000F1 -S3156003565000000000000000000000000000000000E1 -S3156003566000000000000000000000000000000000D1 -S3156003567000000000000000000000000000000000C1 -S3156003568000000000000000000000000000000000B1 -S3156003569000000000000000000000000000000000A1 -S315600356A00000000000000000000000000000000091 -S315600356B00000000000000000000000000000000081 -S315600356C00000000000000000000000000000000071 -S315600356D00000000000000000000000000000000061 -S315600356E00000000000000000000000000000000051 -S315600356F00000000000000000000000000000000041 -S315600357000000000000000000000000000000000030 -S315600357100000000000000000000000000000000020 -S315600357200000000000000000000000000000000010 -S315600357300000000000000000000000000000000000 -S3156003574000000000000000000000000000000000F0 -S3156003575000000000000000000000000000000000E0 -S3156003576000000000000000000000000000000000D0 -S3156003577000000000000000000000000000000000C0 -S3156003578000000000000000000000000000000000B0 -S3156003579000000000000000000000000000000000A0 -S315600357A00000000000000000000000000000000090 -S315600357B00000000000000000000000000000000080 -S315600357C00000000000000000000000000000000070 -S315600357D00000000000000000000000000000000060 -S315600357E00000000000000000000000000000000050 -S315600357F00000000000000000000000000000000040 -S31560035800000000000000000000000000000000002F -S31560035810000000000000000000000000000000001F -S31560035820000000000000000000000000000000000F -S3156003583000000000000000000000000000000000FF -S3156003584000000000000000000000000000000000EF -S3156003585000000000000000000000000000000000DF -S3156003586000000000000000000000000000000000CF -S3156003587000000000000000000000000000000000BF -S3156003588000000000000000000000000000000000AF -S31560035890000000000000000000000000000000009F -S315600358A0000000000000000000000000000000008F -S315600358B0000000000000000000000000000000007F -S315600358C0000000000000000000000000000000006F -S315600358D0000000000000000000000000000000005F -S315600358E0000000000000000000000000000000004F -S315600358F0000000000000000000000000000000003F -S31560035900000000000000000000000000000000002E -S31560035910000000000000000000000000000000001E -S31560035920000000000000000000000000000000000E -S3156003593000000000000000000000000000000000FE -S3156003594000000000000000000000000000000000EE -S3156003595000000000000000000000000000000000DE -S3156003596000000000000000000000000000000000CE -S3156003597000000000000000000000000000000000BE -S3156003598000000000000000000000000000000000AE -S31560035990000000000000000000000000000000009E -S315600359A0000000000000000000000000000000008E -S315600359B0000000000000000000000000000000007E -S315600359C0000000000000000000000000000000006E -S315600359D0000000000000000000000000000000005E -S315600359E0000000000000000000000000000000004E -S315600359F0000000000000000000000000000000003E -S31560035A00000000000000000000000000000000002D -S31560035A10000000000000000000000000000000001D -S31560035A20000000000000000000000000000000000D -S31560035A3000000000000000000000000000000000FD -S31560035A4000000000000000000000000000000000ED -S31560035A5000000000000000000000000000000000DD -S31560035A6000000000000000000000000000000000CD -S31560035A7000000000000000000000000000000000BD -S31560035A8000000000000000000000000000000000AD -S31560035A90000000000000000000000000000000009D -S31560035AA0000000000000000000000000000000008D -S31560035AB0000000000000000000000000000000007D -S31560035AC0000000000000000000000000000000006D -S31560035AD0000000000000000000000000000000005D -S31560035AE0000000000000000000000000000000004D -S31560035AF0000000000000000000000000000000003D -S31560035B00000000000000000000000000000000002C -S31560035B10000000000000000000000000000000001C -S31560035B20000000000000000000000000000000000C -S31560035B3000000000000000000000000000000000FC -S31560035B4000000000000000000000000000000000EC -S31560035B5000000000000000000000000000000000DC -S31560035B6000000000000000000000000000000000CC -S31560035B7000000000000000000000000000000000BC -S31560035B8000000000000000000000000000000000AC -S31560035B90000000000000000000000000000000009C -S31560035BA0000000000000000000000000000000008C -S31560035BB0000000000000000000000000000000007C -S31560035BC0000000000000000000000000000000006C -S31560035BD0000000000000000000000000000000005C -S31560035BE0000000000000000000000000000000004C -S31560035BF0000000000000000000000000000000003C -S31560035C00000000000000000000000000000000002B -S31560035C10000000000000000000000000000000001B -S31560035C20000000000000000000000000000000000B -S31560035C3000000000000000000000000000000000FB -S31560035C4000000000000000000000000000000000EB -S31560035C5000000000000000000000000000000000DB -S31560035C6000000000000000000000000000000000CB -S31560035C7000000000000000000000000000000000BB -S31560035C8000000000000000000000000000000000AB -S31560035C90000000000000000000000000000000009B -S31560035CA0000000000000000000000000000000008B -S31560035CB0000000000000000000000000000000007B -S31560035CC0000000000000000000000000000000006B -S31560035CD0000000000000000000000000000000005B -S31560035CE0000000000000000000000000000000004B -S31560035CF0000000000000000000000000000000003B -S31560035D00000000000000000000000000000000002A -S31560035D10000000000000000000000000000000001A -S31560035D20000000000000000000000000000000000A -S31560035D3000000000000000000000000000000000FA -S31560035D4000000000000000000000000000000000EA -S31560035D5000000000000000000000000000000000DA -S31560035D6000000000000000000000000000000000CA -S31560035D7000000000000000000000000000000000BA -S31560035D8000000000000000000000000000000000AA -S31560035D90000000000000000000000000000000009A -S31560035DA0000000000000000000000000000000008A -S31560035DB0000000000000000000000000000000007A -S31560035DC0000000000000000000000000000000006A -S31560035DD0000000000000000000000000000000005A -S31560035DE0000000000000000000000000000000004A -S31560035DF0000000000000000000000000000000003A -S31560035E000000000000000000000000000000000029 -S31560035E100000000000000000000000000000000019 -S31560035E200000000000000000000000000000000009 -S31560035E3000000000000000000000000000000000F9 -S31560035E4000000000000000000000000000000000E9 -S31560035E5000000000000000000000000000000000D9 -S31560035E6000000000000000000000000000000000C9 -S31560035E7000000000000000000000000000000000B9 -S31560035E8000000000000000000000000000000000A9 -S31560035E900000000000000000000000000000000099 -S31560035EA00000000000000000000000000000000089 -S31560035EB00000000000000000000000000000000079 -S31560035EC00000000000000000000000000000000069 -S31560035ED00000000000000000000000000000000059 -S31560035EE00000000000000000000000000000000049 -S31560035EF00000000000000000000000000000000039 -S31560035F000000000000000000000000000000000028 -S31560035F100000000000000000000000000000000018 -S31560035F200000000000000000000000000000000008 -S31560035F3000000000000000000000000000000000F8 -S31560035F4000000000000000000000000000000000E8 -S31560035F5000000000000000000000000000000000D8 -S31560035F6000000000000000000000000000000000C8 -S31560035F7000000000000000000000000000000000B8 -S31560035F8000000000000000000000000000000000A8 -S31560035F900000000000000000000000000000000098 -S31560035FA00000000000000000000000000000000088 -S31560035FB00000000000000000000000000000000078 -S31560035FC00000000000000000000000000000000068 -S31560035FD00000000000000000000000000000000058 -S31560035FE00000000000000000000000000000000048 -S31560035FF00000000000000000000000000000000038 -S315600360000000000000000000000000000000000027 -S315600360100000000000000000000000000000000017 -S315600360200000000000000000000000000000000007 -S3156003603000000000000000000000000000000000F7 -S3156003604000000000000000000000000000000000E7 -S3156003605000000000000000000000000000000000D7 -S3156003606000000000000000000000000000000000C7 -S3156003607000000000000000000000000000000000B7 -S3156003608000000000000000000000000000000000A7 -S315600360900000000000000000000000000000000097 -S315600360A00000000000000000000000000000000087 -S315600360B00000000000000000000000000000000077 -S315600360C00000000000000000000000000000000067 -S315600360D00000000000000000000000000000000057 -S315600360E00000000000000000000000000000000047 -S315600360F00000000000000000000000000000000037 -S315600361000000000000000000000000000000000026 -S315600361100000000000000000000000000000000016 -S315600361200000000000000000000000000000000006 -S3156003613000000000000000000000000000000000F6 -S3156003614000000000000000000000000000000000E6 -S3156003615000000000000000000000000000000000D6 -S3156003616000000000000000000000000000000000C6 -S3156003617000000000000000000000000000000000B6 -S3156003618000000000000000000000000000000000A6 -S315600361900000000000000000000000000000000096 -S315600361A00000000000000000000000000000000086 -S315600361B00000000000000000000000000000000076 -S315600361C00000000000000000000000000000000066 -S315600361D00000000000000000000000000000000056 -S315600361E00000000000000000000000000000000046 -S315600361F00000000000000000000000000000000036 -S315600362000000000000000000000000000000000025 -S315600362100000000000000000000000000000000015 -S315600362200000000000000000000000000000000005 -S3156003623000000000000000000000000000000000F5 -S3156003624000000000000000000000000000000000E5 -S3156003625000000000000000000000000000000000D5 -S3156003626000000000000000000000000000000000C5 -S3156003627000000000000000000000000000000000B5 -S3156003628000000000000000000000000000000000A5 -S315600362900000000000000000000000000000000095 -S315600362A00000000000000000000000000000000085 -S315600362B00000000000000000000000000000000075 -S315600362C00000000000000000000000000000000065 -S315600362D00000000000000000000000000000000055 -S315600362E00000000000000000000000000000000045 -S315600362F00000000000000000000000000000000035 -S315600363000000000000000000000000000000000024 -S315600363100000000000000000000000000000000014 -S315600363200000000000000000000000000000000004 -S3156003633000000000000000000000000000000000F4 -S3156003634000000000000000000000000000000000E4 -S3156003635000000000000000000000000000000000D4 -S3156003636000000000000000000000000000000000C4 -S3156003637000000000000000000000000000000000B4 -S3156003638000000000000000000000000000000000A4 -S315600363900000000000000000000000000000000094 -S315600363A00000000000000000000000000000000084 -S315600363B00000000000000000000000000000000074 -S315600363C00000000000000000000000000000000064 -S315600363D00000000000000000000000000000000054 -S315600363E00000000000000000000000000000000044 -S315600363F00000000000000000000000000000000034 -S315600364000000000000000000000000000000000023 -S315600364100000000000000000000000000000000013 -S315600364200000000000000000000000000000000003 -S3156003643000000000000000000000000000000000F3 -S3156003644000000000000000000000000000000000E3 -S3156003645000000000000000000000000000000000D3 -S3156003646000000000000000000000000000000000C3 -S3156003647000000000000000000000000000000000B3 -S3156003648000000000000000000000000000000000A3 -S315600364900000000000000000000000000000000093 -S315600364A00000000000000000000000000000000083 -S315600364B00000000000000000000000000000000073 -S315600364C00000000000000000000000000000000063 -S315600364D00000000000000000000000000000000053 -S315600364E00000000000000000000000000000000043 -S315600364F00000000000000000000000000000000033 -S315600365000000000000000000000000000000000022 -S315600365100000000000000000000000000000000012 -S315600365200000000000000000000000000000000002 -S3156003653000000000000000000000000000000000F2 -S3156003654000000000000000000000000000000000E2 -S3156003655000000000000000000000000000000000D2 -S3156003656000000000000000000000000000000000C2 -S3156003657000000000000000000000000000000000B2 -S3156003658000000000000000000000000000000000A2 -S315600365900000000000000000000000000000000092 -S315600365A00000000000000000000000000000000082 -S315600365B00000000000000000000000000000000072 -S315600365C00000000000000000000000000000000062 -S315600365D00000000000000000000000000000000052 -S315600365E00000000000000000000000000000000042 -S315600365F00000000000000000000000000000000032 -S315600366000000000000000000000000000000000021 -S315600366100000000000000000000000000000000011 -S315600366200000000000000000000000000000000001 -S3156003663000000000000000000000000000000000F1 -S3156003664000000000000000000000000000000000E1 -S3156003665000000000000000000000000000000000D1 -S3156003666000000000000000000000000000000000C1 -S3156003667000000000000000000000000000000000B1 -S3156003668000000000000000000000000000000000A1 -S315600366900000000000000000000000000000000091 -S315600366A00000000000000000000000000000000081 -S315600366B00000000000000000000000000000000071 -S315600366C00000000000000000000000000000000061 -S315600366D00000000000000000000000000000000051 -S315600366E00000000000000000000000000000000041 -S315600366F00000000000000000000000000000000031 -S315600367000000000000000000000000000000000020 -S315600367100000000000000000000000000000000010 -S315600367200000000000000000000000000000000000 -S3156003673000000000000000000000000000000000F0 -S3156003674000000000000000000000000000000000E0 -S3156003675000000000000000000000000000000000D0 -S3156003676000000000000000000000000000000000C0 -S3156003677000000000000000000000000000000000B0 -S3156003678000000000000000000000000000000000A0 -S315600367900000000000000000000000000000000090 -S315600367A00000000000000000000000000000000080 -S315600367B00000000000000000000000000000000070 -S315600367C00000000000000000000000000000000060 -S315600367D00000000000000000000000000000000050 -S315600367E00000000000000000000000000000000040 -S315600367F00000000000000000000000000000000030 -S31560036800000000000000000000000000000000001F -S31560036810000000000000000000000000000000000F -S3156003682000000000000000000000000000000000FF -S3156003683000000000000000000000000000000000EF -S3156003684000000000000000000000000000000000DF -S3156003685000000000000000000000000000000000CF -S3156003686000000000000000000000000000000000BF -S3156003687000000000000000000000000000000000AF -S31560036880000000000000000000000000000000009F -S31560036890000000000000000000000000000000008F -S315600368A0000000000000000000000000000000007F -S315600368B0000000000000000000000000000000006F -S315600368C0000000000000000000000000000000005F -S315600368D0000000000000000000000000000000004F -S315600368E0000000000000000000000000000000003F -S315600368F0000000000000000000000000000000002F -S31560036900000000000000000000000000000000001E -S31560036910000000000000000000000000000000000E -S3156003692000000000000000000000000000000000FE -S3156003693000000000000000000000000000000000EE -S3156003694000000000000000000000000000000000DE -S3156003695000000000000000000000000000000000CE -S3156003696000000000000000000000000000000000BE -S3156003697000000000000000000000000000000000AE -S31560036980000000000000000000000000000000009E -S31560036990000000000000000000000000000000008E -S315600369A0000000000000000000000000000000007E -S315600369B0000000000000000000000000000000006E -S315600369C0000000000000000000000000000000005E -S315600369D0000000000000000000000000000000004E -S315600369E0000000000000000000000000000000003E -S315600369F0000000000000000000000000000000002E -S31560036A00000000000000000000000000000000001D -S31560036A10000000000000000000000000000000000D -S31560036A2000000000000000000000000000000000FD -S31560036A3000000000000000000000000000000000ED -S31560036A4000000000000000000000000000000000DD -S31560036A5000000000000000000000000000000000CD -S31560036A6000000000000000000000000000000000BD -S31560036A7000000000000000000000000000000000AD -S31560036A80000000000000000000000000000000009D -S31560036A90000000000000000000000000000000008D -S31560036AA0000000000000000000000000000000007D -S31560036AB0000000000000000000000000000000006D -S31560036AC0000000000000000000000000000000005D -S31560036AD0000000000000000000000000000000004D -S31560036AE0000000000000000000000000000000003D -S31560036AF0000000000000000000000000000000002D -S31560036B00000000000000000000000000000000001C -S31560036B10000000000000000000000000000000000C -S31560036B2000000000000000000000000000000000FC -S31560036B3000000000000000000000000000000000EC -S31560036B4000000000000000000000000000000000DC -S31560036B5000000000000000000000000000000000CC -S31560036B6000000000000000000000000000000000BC -S31560036B7000000000000000000000000000000000AC -S31560036B80000000000000000000000000000000009C -S31560036B90000000000000000000000000000000008C -S31560036BA0000000000000000000000000000000007C -S31560036BB0000000000000000000000000000000006C -S31560036BC0000000000000000000000000000000005C -S31560036BD0000000000000000000000000000000004C -S31560036BE0000000000000000000000000000000003C -S31560036BF0000000000000000000000000000000002C -S31560036C00000000000000000000000000000000001B -S31560036C10000000000000000000000000000000000B -S31560036C2000000000000000000000000000000000FB -S31560036C3000000000000000000000000000000000EB -S31560036C4000000000000000000000000000000000DB -S31560036C5000000000000000000000000000000000CB -S31560036C6000000000000000000000000000000000BB -S31560036C7000000000000000000000000000000000AB -S31560036C80000000000000000000000000000000009B -S31560036C90000000000000000000000000000000008B -S31560036CA0000000000000000000000000000000007B -S31560036CB0000000000000000000000000000000006B -S31560036CC0000000000000000000000000000000005B -S31560036CD0000000000000000000000000000000004B -S31560036CE0000000000000000000000000000000003B -S31560036CF0000000000000000000000000000000002B -S31560036D00000000000000000000000000000000001A -S31560036D10000000000000000000000000000000000A -S31560036D2000000000000000000000000000000000FA -S31560036D3000000000000000000000000000000000EA -S31560036D4000000000000000000000000000000000DA -S31560036D5000000000000000000000000000000000CA -S31560036D6000000000000000000000000000000000BA -S31560036D7000000000000000000000000000000000AA -S31560036D80000000000000000000000000000000009A -S31560036D90000000000000000000000000000000008A -S31560036DA0000000000000000000000000000000007A -S31560036DB0000000000000000000000000000000006A -S31560036DC0000000000000000000000000000000005A -S31560036DD0000000000000000000000000000000004A -S31560036DE0000000000000000000000000000000003A -S31560036DF0000000000000000000000000000000002A -S31560036E000000000000000000000000000000000019 -S31560036E100000000000000000000000000000000009 -S31560036E2000000000000000000000000000000000F9 -S31560036E3000000000000000000000000000000000E9 -S31560036E4000000000000000000000000000000000D9 -S31560036E5000000000000000000000000000000000C9 -S31560036E6000000000000000000000000000000000B9 -S31560036E7000000000000000000000000000000000A9 -S31560036E800000000000000000000000000000000099 -S31560036E900000000000000000000000000000000089 -S31560036EA00000000000000000000000000000000079 -S31560036EB00000000000000000000000000000000069 -S31560036EC00000000000000000000000000000000059 -S31560036ED00000000000000000000000000000000049 -S31560036EE00000000000000000000000000000000039 -S31560036EF00000000000000000000000000000000029 -S31560036F000000000000000000000000000000000018 -S31560036F100000000000000000000000000000000008 -S31560036F2000000000000000000000000000000000F8 -S31560036F3000000000000000000000000000000000E8 -S31560036F4000000000000000000000000000000000D8 -S31560036F5000000000000000000000000000000000C8 -S31560036F6000000000000000000000000000000000B8 -S31560036F7000000000000000000000000000000000A8 -S31560036F800000000000000000000000000000000098 -S31560036F900000000000000000000000000000000088 -S31560036FA00000000000000000000000000000000078 -S31560036FB00000000000000000000000000000000068 -S31560036FC00000000000000000000000000000000058 -S31560036FD00000000000000000000000000000000048 -S31560036FE00000000000000000000000000000000038 -S31560036FF00000000000000000000000000000000028 -S315600370000000000000000000000000000000000017 -S315600370100000000000000000000000000000000007 -S3156003702000000000000000000000000000000000F7 -S3156003703000000000000000000000000000000000E7 -S3156003704000000000000000000000000000000000D7 -S3156003705000000000000000000000000000000000C7 -S3156003706000000000000000000000000000000000B7 -S3156003707000000000000000000000000000000000A7 -S315600370800000000000000000000000000000000097 -S315600370900000000000000000000000000000000087 -S315600370A00000000000000000000000000000000077 -S315600370B00000000000000000000000000000000067 -S315600370C00000000000000000000000000000000057 -S315600370D00000000000000000000000000000000047 -S315600370E00000000000000000000000000000000037 -S315600370F00000000000000000000000000000000027 -S315600371000000000000000000000000000000000016 -S315600371100000000000000000000000000000000006 -S3156003712000000000000000000000000000000000F6 -S3156003713000000000000000000000000000000000E6 -S3156003714000000000000000000000000000000000D6 -S3156003715000000000000000000000000000000000C6 -S3156003716000000000000000000000000000000000B6 -S3156003717000000000000000000000000000000000A6 -S315600371800000000000000000000000000000000096 -S315600371900000000000000000000000000000000086 -S315600371A00000000000000000000000000000000076 -S315600371B00000000000000000000000000000000066 -S315600371C00000000000000000000000000000000056 -S315600371D00000000000000000000000000000000046 -S315600371E00000000000000000000000000000000036 -S315600371F00000000000000000000000000000000026 -S315600372000000000000000000000000000000000015 -S315600372100000000000000000000000000000000005 -S3156003722000000000000000000000000000000000F5 -S3156003723000000000000000000000000000000000E5 -S3156003724000000000000000000000000000000000D5 -S3156003725000000000000000000000000000000000C5 -S3156003726000000000000000000000000000000000B5 -S3156003727000000000000000000000000000000000A5 -S315600372800000000000000000000000000000000095 -S315600372900000000000000000000000000000000085 -S315600372A00000000000000000000000000000000075 -S315600372B00000000000000000000000000000000065 -S315600372C00000000000000000000000000000000055 -S315600372D00000000000000000000000000000000045 -S315600372E00000000000000000000000000000000035 -S315600372F00000000000000000000000000000000025 -S315600373000000000000000000000000000000000014 -S315600373100000000000000000000000000000000004 -S3156003732000000000000000000000000000000000F4 -S3156003733000000000000000000000000000000000E4 -S3156003734000000000000000000000000000000000D4 -S3156003735000000000000000000000000000000000C4 -S3156003736000000000000000000000000000000000B4 -S3156003737000000000000000000000000000000000A4 -S315600373800000000000000000000000000000000094 -S315600373900000000000000000000000000000000084 -S315600373A00000000000000000000000000000000074 -S315600373B00000000000000000000000000000000064 -S315600373C00000000000000000000000000000000054 -S315600373D00000000000000000000000000000000044 -S315600373E00000000000000000000000000000000034 -S315600373F00000000000000000000000000000000024 -S315600374000000000000000000000000000000000013 -S315600374100000000000000000000000000000000003 -S3156003742000000000000000000000000000000000F3 -S3156003743000000000000000000000000000000000E3 -S3156003744000000000000000000000000000000000D3 -S3156003745000000000000000000000000000000000C3 -S3156003746000000000000000000000000000000000B3 -S3156003747000000000000000000000000000000000A3 -S315600374800000000000000000000000000000000093 -S315600374900000000000000000000000000000000083 -S315600374A00000000000000000000000000000000073 -S315600374B00000000000000000000000000000000063 -S315600374C00000000000000000000000000000000053 -S315600374D00000000000000000000000000000000043 -S315600374E00000000000000000000000000000000033 -S315600374F00000000000000000000000000000000023 -S315600375000000000000000000000000000000000012 -S315600375100000000000000000000000000000000002 -S3156003752000000000000000000000000000000000F2 -S3156003753000000000000000000000000000000000E2 -S3156003754000000000000000000000000000000000D2 -S3156003755000000000000000000000000000000000C2 -S3156003756000000000000000000000000000000000B2 -S3156003757000000000000000000000000000000000A2 -S315600375800000000000000000000000000000000092 -S315600375900000000000000000000000000000000082 -S315600375A00000000000000000000000000000000072 -S315600375B00000000000000000000000000000000062 -S315600375C00000000000000000000000000000000052 -S315600375D00000000000000000000000000000000042 -S315600375E00000000000000000000000000000000032 -S315600375F00000000000000000000000000000000022 -S315600376000000000000000000000000000000000011 -S315600376100000000000000000000000000000000001 -S3156003762000000000000000000000000000000000F1 -S3156003763000000000000000000000000000000000E1 -S3156003764000000000000000000000000000000000D1 -S3156003765000000000000000000000000000000000C1 -S3156003766000000000000000000000000000000000B1 -S3156003767000000000000000000000000000000000A1 -S315600376800000000000000000000000000000000091 -S315600376900000000000000000000000000000000081 -S315600376A00000000000000000000000000000000071 -S315600376B00000000000000000000000000000000061 -S315600376C00000000000000000000000000000000051 -S315600376D00000000000000000000000000000000041 -S315600376E00000000000000000000000000000000031 -S315600376F00000000000000000000000000000000021 -S315600377000000000000000000000000000000000010 -S315600377100000000000000000000000000000000000 -S3156003772000000000000000000000000000000000F0 -S3156003773000000000000000000000000000000000E0 -S3156003774000000000000000000000000000000000D0 -S3156003775000000000000000000000000000000000C0 -S3156003776000000000000000000000000000000000B0 -S3156003777000000000000000000000000000000000A0 -S315600377800000000000000000000000000000000090 -S315600377900000000000000000000000000000000080 -S315600377A00000000000000000000000000000000070 -S315600377B00000000000000000000000000000000060 -S315600377C00000000000000000000000000000000050 -S315600377D00000000000000000000000000000000040 -S315600377E00000000000000000000000000000000030 -S315600377F00000000000000000000000000000000020 -S31560037800000000000000000000000000000000000F -S3156003781000000000000000000000000000000000FF -S3156003782000000000000000000000000000000000EF -S3156003783000000000000000000000000000000000DF -S3156003784000000000000000000000000000000000CF -S3156003785000000000000000000000000000000000BF -S3156003786000000000000000000000000000000000AF -S31560037870000000000000000000000000000000009F -S31560037880000000000000000000000000000000008F -S31560037890000000000000000000000000000000007F -S315600378A0000000000000000000000000000000006F -S315600378B0000000000000000000000000000000005F -S315600378C0000000000000000000000000000000004F -S315600378D0000000000000000000000000000000003F -S315600378E0000000000000000000000000000000002F -S315600378F0000000000000000000000000000000001F -S31560037900000000000000000000000000000000000E -S3156003791000000000000000000000000000000000FE -S3156003792000000000000000000000000000000000EE -S3156003793000000000000000000000000000000000DE -S3156003794000000000000000000000000000000000CE -S3156003795000000000000000000000000000000000BE -S3156003796000000000000000000000000000000000AE -S31560037970000000000000000000000000000000009E -S31560037980000000000000000000000000000000008E -S31560037990000000000000000000000000000000007E -S315600379A0000000000000000000000000000000006E -S315600379B0000000000000000000000000000000005E -S315600379C0000000000000000000000000000000004E -S315600379D0000000000000000000000000000000003E -S315600379E0000000000000000000000000000000002E -S315600379F0000000000000000000000000000000001E -S31560037A00000000000000000000000000000000000D -S31560037A1000000000000000000000000000000000FD -S31560037A2000000000000000000000000000000000ED -S31560037A3000000000000000000000000000000000DD -S31560037A4000000000000000000000000000000000CD -S31560037A5000000000000000000000000000000000BD -S31560037A6000000000000000000000000000000000AD -S31560037A70000000000000000000000000000000009D -S31560037A80000000000000000000000000000000008D -S31560037A90000000000000000000000000000000007D -S31560037AA0000000000000000000000000000000006D -S31560037AB0000000000000000000000000000000005D -S31560037AC0000000000000000000000000000000004D -S31560037AD0000000000000000000000000000000003D -S31560037AE0000000000000000000000000000000002D -S31560037AF0000000000000000000000000000000001D -S31560037B00000000000000000000000000000000000C -S31560037B1000000000000000000000000000000000FC -S31560037B2000000000000000000000000000000000EC -S31560037B3000000000000000000000000000000000DC -S31560037B4000000000000000000000000000000000CC -S31560037B5000000000000000000000000000000000BC -S31560037B6000000000000000000000000000000000AC -S31560037B70000000000000000000000000000000009C -S31560037B80000000000000000000000000000000008C -S31560037B90000000000000000000000000000000007C -S31560037BA0000000000000000000000000000000006C -S31560037BB0000000000000000000000000000000005C -S31560037BC0000000000000000000000000000000004C -S31560037BD0000000000000000000000000000000003C -S31560037BE0000000000000000000000000000000002C -S31560037BF0000000000000000000000000000000001C -S31560037C00000000000000000000000000000000000B -S31560037C1000000000000000000000000000000000FB -S31560037C2000000000000000000000000000000000EB -S31560037C3000000000000000000000000000000000DB -S31560037C4000000000000000000000000000000000CB -S31560037C5000000000000000000000000000000000BB -S31560037C6000000000000000000000000000000000AB -S31560037C70000000000000000000000000000000009B -S31560037C80000000000000000000000000000000008B -S31560037C90000000000000000000000000000000007B -S31560037CA0000000000000000000000000000000006B -S31560037CB0000000000000000000000000000000005B -S31560037CC0000000000000000000000000000000004B -S31560037CD0000000000000000000000000000000003B -S31560037CE0000000000000000000000000000000002B -S31560037CF0000000000000000000000000000000001B -S31560037D00000000000000000000000000000000000A -S31560037D1000000000000000000000000000000000FA -S31560037D2000000000000000000000000000000000EA -S31560037D3000000000000000000000000000000000DA -S31560037D4000000000000000000000000000000000CA -S31560037D5000000000000000000000000000000000BA -S31560037D6000000000000000000000000000000000AA -S31560037D70000000000000000000000000000000009A -S31560037D80000000000000000000000000000000008A -S31560037D90000000000000000000000000000000007A -S31560037DA0000000000000000000000000000000006A -S31560037DB0000000000000000000000000000000005A -S31560037DC0000000000000000000000000000000004A -S31560037DD0000000000000000000000000000000003A -S31560037DE0000000000000000000000000000000002A -S31560037DF0000000000000000000000000000000001A -S31560037E000000000000000000000000000000000009 -S31560037E1000000000000000000000000000000000F9 -S31560037E2000000000000000000000000000000000E9 -S31560037E3000000000000000000000000000000000D9 -S31560037E4000000000000000000000000000000000C9 -S31560037E5000000000000000000000000000000000B9 -S31560037E6000000000000000000000000000000000A9 -S31560037E700000000000000000000000000000000099 -S31560037E800000000000000000000000000000000089 -S31560037E900000000000000000000000000000000079 -S31560037EA00000000000000000000000000000000069 -S31560037EB00000000000000000000000000000000059 -S31560037EC00000000000000000000000000000000049 -S31560037ED00000000000000000000000000000000039 -S31560037EE00000000000000000000000000000000029 -S31560037EF00000000000000000000000000000000019 -S31560037F000000000000000000000000000000000008 -S31560037F1000000000000000000000000000000000F8 -S31560037F2000000000000000000000000000000000E8 -S31560037F3000000000000000000000000000000000D8 -S31560037F4000000000000000000000000000000000C8 -S31560037F5000000000000000000000000000000000B8 -S31560037F6000000000000000000000000000000000A8 -S31560037F700000000000000000000000000000000098 -S31560037F800000000000000000000000000000000088 -S31560037F900000000000000000000000000000000078 -S31560037FA00000000000000000000000000000000068 -S31560037FB00000000000000000000000000000000058 -S31560037FC00000000000000000000000000000000048 -S31560037FD00000000000000000000000000000000038 -S31560037FE00000000000000000000000000000000028 -S31560037FF00000000000000000000000000000000018 -S315600380000000000000000000000000000000000007 -S3156003801000000000000000000000000000000000F7 -S3156003802000000000000000000000000000000000E7 -S3156003803000000000000000000000000000000000D7 -S3156003804000000000000000000000000000000000C7 -S3156003805000000000000000000000000000000000B7 -S3156003806000000000000000000000000000000000A7 -S315600380700000000000000000000000000000000097 -S315600380800000000000000000000000000000000087 -S315600380900000000000000000000000000000000077 -S315600380A00000000000000000000000000000000067 -S315600380B00000000000000000000000000000000057 -S315600380C00000000000000000000000000000000047 -S315600380D00000000000000000000000000000000037 -S315600380E00000000000000000000000000000000027 -S315600380F00000000000000000000000000000000017 -S315600381000000000000000000000000000000000006 -S3156003811000000000000000000000000000000000F6 -S3156003812000000000000000000000000000000000E6 -S3156003813000000000000000000000000000000000D6 -S3156003814000000000000000000000000000000000C6 -S3156003815000000000000000000000000000000000B6 -S3156003816000000000000000000000000000000000A6 -S315600381700000000000000000000000000000000096 -S315600381800000000000000000000000000000000086 -S315600381900000000000000000000000000000000076 -S315600381A00000000000000000000000000000000066 -S315600381B00000000000000000000000000000000056 -S315600381C00000000000000000000000000000000046 -S315600381D00000000000000000000000000000000036 -S315600381E00000000000000000000000000000000026 -S315600381F00000000000000000000000000000000016 -S315600382000000000000000000000000000000000005 -S3156003821000000000000000000000000000000000F5 -S3156003822000000000000000000000000000000000E5 -S3156003823000000000000000000000000000000000D5 -S3156003824000000000000000000000000000000000C5 -S3156003825000000000000000000000000000000000B5 -S3156003826000000000000000000000000000000000A5 -S315600382700000000000000000000000000000000095 -S315600382800000000000000000000000000000000085 -S315600382900000000000000000000000000000000075 -S315600382A00000000000000000000000000000000065 -S315600382B00000000000000000000000000000000055 -S315600382C00000000000000000000000000000000045 -S315600382D00000000000000000000000000000000035 -S315600382E00000000000000000000000000000000025 -S315600382F00000000000000000000000000000000015 -S315600383000000000000000000000000000000000004 -S3156003831000000000000000000000000000000000F4 -S3156003832000000000000000000000000000000000E4 -S3156003833000000000000000000000000000000000D4 -S3156003834000000000000000000000000000000000C4 -S3156003835000000000000000000000000000000000B4 -S3156003836000000000000000000000000000000000A4 -S315600383700000000000000000000000000000000094 -S315600383800000000000000000000000000000000084 -S315600383900000000000000000000000000000000074 -S315600383A00000000000000000000000000000000064 -S315600383B00000000000000000000000000000000054 -S315600383C00000000000000000000000000000000044 -S315600383D00000000000000000000000000000000034 -S315600383E00000000000000000000000000000000024 -S315600383F00000000000000000000000000000000014 -S315600384000000000000000000000000000000000003 -S3156003841000000000000000000000000000000000F3 -S3156003842000000000000000000000000000000000E3 -S3156003843000000000000000000000000000000000D3 -S3156003844000000000000000000000000000000000C3 -S3156003845000000000000000000000000000000000B3 -S3156003846000000000000000000000000000000000A3 -S315600384700000000000000000000000000000000093 -S315600384800000000000000000000000000000000083 -S315600384900000000000000000000000000000000073 -S315600384A00000000000000000000000000000000063 -S315600384B00000000000000000000000000000000053 -S315600384C00000000000000000000000000000000043 -S315600384D00000000000000000000000000000000033 -S315600384E00000000000000000000000000000000023 -S315600384F00000000000000000000000000000000013 -S315600385000000000000000000000000000000000002 -S3156003851000000000000000000000000000000000F2 -S3156003852000000000000000000000000000000000E2 -S3156003853000000000000000000000000000000000D2 -S3156003854000000000000000000000000000000000C2 -S3156003855000000000000000000000000000000000B2 -S3156003856000000000000000000000000000000000A2 -S315600385700000000000000000000000000000000092 -S315600385800000000000000000000000000000000082 -S315600385900000000000000000000000000000000072 -S315600385A00000000000000000000000000000000062 -S315600385B00000000000000000000000000000000052 -S315600385C00000000000000000000000000000000042 -S315600385D00000000000000000000000000000000032 -S315600385E00000000000000000000000000000000022 -S315600385F00000000000000000000000000000000012 -S315600386000000000000000000000000000000000001 -S3156003861000000000000000000000000000000000F1 -S3156003862000000000000000000000000000000000E1 -S3156003863000000000000000000000000000000000D1 -S3156003864000000000000000000000000000000000C1 -S3156003865000000000000000000000000000000000B1 -S3156003866000000000000000000000000000000000A1 -S315600386700000000000000000000000000000000091 -S315600386800000000000000000000000000000000081 -S315600386900000000000000000000000000000000071 -S315600386A00000000000000000000000000000000061 -S315600386B00000000000000000000000000000000051 -S315600386C00000000000000000000000000000000041 -S315600386D00000000000000000000000000000000031 -S315600386E00000000000000000000000000000000021 -S315600386F00000000000000000000000000000000011 -S315600387000000000000000000000000000000000000 -S3156003871000000000000000000000000000000000F0 -S3156003872000000000000000000000000000000000E0 -S3156003873000000000000000000000000000000000D0 -S3156003874000000000000000000000000000000000C0 -S3156003875000000000000000000000000000000000B0 -S3156003876000000000000000000000000000000000A0 -S315600387700000000000000000000000000000000090 -S315600387800000000000000000000000000000000080 -S315600387900000000000000000000000000000000070 -S315600387A00000000000000000000000000000000060 -S315600387B00000000000000000000000000000000050 -S315600387C00000000000000000000000000000000040 -S315600387D00000000000000000000000000000000030 -S315600387E00000000000000000000000000000000020 -S315600387F00000000000000000000000000000000010 -S3156003880000000000000000000000000000000000FF -S3156003881000000000000000000000000000000000EF -S3156003882000000000000000000000000000000000DF -S3156003883000000000000000000000000000000000CF -S3156003884000000000000000000000000000000000BF -S3156003885000000000000000000000000000000000AF -S31560038860000000000000000000000000000000009F -S31560038870000000000000000000000000000000008F -S31560038880000000000000000000000000000000007F -S31560038890000000000000000000000000000000006F -S315600388A0000000000000000000000000000000005F -S315600388B0000000000000000000000000000000004F -S315600388C0000000000000000000000000000000003F -S315600388D0000000000000000000000000000000002F -S315600388E0000000000000000000000000000000001F -S315600388F0000000000000000000000000000000000F -S3156003890000000000000000000000000000000000FE -S3156003891000000000000000000000000000000000EE -S3156003892000000000000000000000000000000000DE -S3156003893000000000000000000000000000000000CE -S3156003894000000000000000000000000000000000BE -S3156003895000000000000000000000000000000000AE -S31560038960000000000000000000000000000000009E -S31560038970000000000000000000000000000000008E -S31560038980000000000000000000000000000000007E -S31560038990000000000000000000000000000000006E -S315600389A0000000000000000000000000000000005E -S315600389B0000000000000000000000000000000004E -S315600389C0000000000000000000000000000000003E -S315600389D0000000000000000000000000000000002E -S315600389E0000000000000000000000000000000001E -S315600389F0000000000000000000000000000000000E -S31560038A0000000000000000000000000000000000FD -S31560038A1000000000000000000000000000000000ED -S31560038A2000000000000000000000000000000000DD -S31560038A3000000000000000000000000000000000CD -S31560038A4000000000000000000000000000000000BD -S31560038A5000000000000000000000000000000000AD -S31560038A60000000000000000000000000000000009D -S31560038A70000000000000000000000000000000008D -S31560038A80000000000000000000000000000000007D -S31560038A90000000000000000000000000000000006D -S31560038AA0000000000000000000000000000000005D -S31560038AB0000000000000000000000000000000004D -S31560038AC0000000000000000000000000000000003D -S31560038AD0000000000000000000000000000000002D -S31560038AE0000000000000000000000000000000001D -S31560038AF0000000000000000000000000000000000D -S31560038B0000000000000000000000000000000000FC -S31560038B1000000000000000000000000000000000EC -S31560038B2000000000000000000000000000000000DC -S31560038B3000000000000000000000000000000000CC -S31560038B4000000000000000000000000000000000BC -S31560038B5000000000000000000000000000000000AC -S31560038B60000000000000000000000000000000009C -S31560038B70000000000000000000000000000000008C -S31560038B80000000000000000000000000000000007C -S31560038B90000000000000000000000000000000006C -S31560038BA0000000000000000000000000000000005C -S31560038BB0000000000000000000000000000000004C -S31560038BC0000000000000000000000000000000003C -S31560038BD0000000000000000000000000000000002C -S31560038BE0000000000000000000000000000000001C -S31560038BF0000000000000000000000000000000000C -S31560038C0000000000000000000000000000000000FB -S31560038C1000000000000000000000000000000000EB -S31560038C2000000000000000000000000000000000DB -S31560038C3000000000000000000000000000000000CB -S31560038C4000000000000000000000000000000000BB -S31560038C5000000000000000000000000000000000AB -S31560038C60000000000000000000000000000000009B -S31560038C70000000000000000000000000000000008B -S31560038C80000000000000000000000000000000007B -S31560038C90000000000000000000000000000000006B -S31560038CA0000000000000000000000000000000005B -S31560038CB0000000000000000000000000000000004B -S31560038CC0000000000000000000000000000000003B -S31560038CD0000000000000000000000000000000002B -S31560038CE0000000000000000000000000000000001B -S31560038CF0000000000000000000000000000000000B -S31560038D0000000000000000000000000000000000FA -S31560038D1000000000000000000000000000000000EA -S31560038D2000000000000000000000000000000000DA -S31560038D3000000000000000000000000000000000CA -S31560038D4000000000000000000000000000000000BA -S31560038D5000000000000000000000000000000000AA -S31560038D60000000000000000000000000000000009A -S31560038D70000000000000000000000000000000008A -S31560038D80000000000000000000000000000000007A -S31560038D90000000000000000000000000000000006A -S31560038DA0000000000000000000000000000000005A -S31560038DB0000000000000000000000000000000004A -S31560038DC0000000000000000000000000000000003A -S31560038DD0000000000000000000000000000000002A -S31560038DE0000000000000000000000000000000001A -S31560038DF0000000000000000000000000000000000A -S31560038E0000000000000000000000000000000000F9 -S31560038E1000000000000000000000000000000000E9 -S31560038E2000000000000000000000000000000000D9 -S31560038E3000000000000000000000000000000000C9 -S31560038E4000000000000000000000000000000000B9 -S31560038E5000000000000000000000000000000000A9 -S31560038E600000000000000000000000000000000099 -S31560038E700000000000000000000000000000000089 -S31560038E800000000000000000000000000000000079 -S31560038E900000000000000000000000000000000069 -S31560038EA00000000000000000000000000000000059 -S31560038EB00000000000000000000000000000000049 -S31560038EC00000000000000000000000000000000039 -S31560038ED00000000000000000000000000000000029 -S31560038EE00000000000000000000000000000000019 -S31560038EF00000000000000000000000000000000009 -S31560038F0000000000000000000000000000000000F8 -S31560038F1000000000000000000000000000000000E8 -S31560038F2000000000000000000000000000000000D8 -S31560038F3000000000000000000000000000000000C8 -S31560038F4000000000000000000000000000000000B8 -S31560038F5000000000000000000000000000000000A8 -S31560038F600000000000000000000000000000000098 -S31560038F700000000000000000000000000000000088 -S31560038F800000000000000000000000000000000078 -S31560038F900000000000000000000000000000000068 -S31560038FA00000000000000000000000000000000058 -S31560038FB00000000000000000000000000000000048 -S31560038FC00000000000000000000000000000000038 -S31560038FD00000000000000000000000000000000028 -S31560038FE00000000000000000000000000000000018 -S31560038FF00000000000000000000000000000000008 -S3156003900000000000000000000000000000000000F7 -S3156003901000000000000000000000000000000000E7 -S3156003902000000000000000000000000000000000D7 -S3156003903000000000000000000000000000000000C7 -S3156003904000000000000000000000000000000000B7 -S3156003905000000000000000000000000000000000A7 -S315600390600000000000000000000000000000000097 -S315600390700000000000000000000000000000000087 -S315600390800000000000000000000000000000000077 -S315600390900000000000000000000000000000000067 -S315600390A00000000000000000000000000000000057 -S315600390B00000000000000000000000000000000047 -S315600390C00000000000000000000000000000000037 -S315600390D00000000000000000000000000000000027 -S315600390E00000000000000000000000000000000017 -S315600390F00000000000000000000000000000000007 -S3156003910000000000000000000000000000000000F6 -S3156003911000000000000000000000000000000000E6 -S3156003912000000000000000000000000000000000D6 -S3156003913000000000000000000000000000000000C6 -S3156003914000000000000000000000000000000000B6 -S3156003915000000000000000000000000000000000A6 -S315600391600000000000000000000000000000000096 -S315600391700000000000000000000000000000000086 -S315600391800000000000000000000000000000000076 -S315600391900000000000000000000000000000000066 -S315600391A00000000000000000000000000000000056 -S315600391B00000000000000000000000000000000046 -S315600391C00000000000000000000000000000000036 -S315600391D00000000000000000000000000000000026 -S315600391E00000000000000000000000000000000016 -S315600391F00000000000000000000000000000000006 -S3156003920000000000000000000000000000000000F5 -S3156003921000000000000000000000000000000000E5 -S3156003922000000000000000000000000000000000D5 -S3156003923000000000000000000000000000000000C5 -S3156003924000000000000000000000000000000000B5 -S3156003925000000000000000000000000000000000A5 -S315600392600000000000000000000000000000000095 -S315600392700000000000000000000000000000000085 -S315600392800000000000000000000000000000000075 -S315600392900000000000000000000000000000000065 -S315600392A00000000000000000000000000000000055 -S315600392B00000000000000000000000000000000045 -S315600392C00000000000000000000000000000000035 -S315600392D00000000000000000000000000000000025 -S315600392E00000000000000000000000000000000015 -S315600392F00000000000000000000000000000000005 -S3156003930000000000000000000000000000000000F4 -S3156003931000000000000000000000000000000000E4 -S3156003932000000000000000000000000000000000D4 -S3156003933000000000000000000000000000000000C4 -S3156003934000000000000000000000000000000000B4 -S3156003935000000000000000000000000000000000A4 -S315600393600000000000000000000000000000000094 -S315600393700000000000000000000000000000000084 -S315600393800000000000000000000000000000000074 -S315600393900000000000000000000000000000000064 -S315600393A00000000000000000000000000000000054 -S315600393B00000000000000000000000000000000044 -S315600393C00000000000000000000000000000000034 -S315600393D00000000000000000000000000000000024 -S315600393E00000000000000000000000000000000014 -S315600393F00000000000000000000000000000000004 -S3156003940000000000000000000000000000000000F3 -S3156003941000000000000000000000000000000000E3 -S3156003942000000000000000000000000000000000D3 -S3156003943000000000000000000000000000000000C3 -S3156003944000000000000000000000000000000000B3 -S3156003945000000000000000000000000000000000A3 -S315600394600000000000000000000000000000000093 -S315600394700000000000000000000000000000000083 -S315600394800000000000000000000000000000000073 -S315600394900000000000000000000000000000000063 -S315600394A00000000000000000000000000000000053 -S315600394B00000000000000000000000000000000043 -S315600394C00000000000000000000000000000000033 -S315600394D00000000000000000000000000000000023 -S315600394E00000000000000000000000000000000013 -S315600394F00000000000000000000000000000000003 -S3156003950000000000000000000000000000000000F2 -S3156003951000000000000000000000000000000000E2 -S3156003952000000000000000000000000000000000D2 -S3156003953000000000000000000000000000000000C2 -S3156003954000000000000000000000000000000000B2 -S3156003955000000000000000000000000000000000A2 -S315600395600000000000000000000000000000000092 -S315600395700000000000000000000000000000000082 -S315600395800000000000000000000000000000000072 -S315600395900000000000000000000000000000000062 -S315600395A00000000000000000000000000000000052 -S315600395B00000000000000000000000000000000042 -S315600395C00000000000000000000000000000000032 -S315600395D00000000000000000000000000000000022 -S315600395E00000000000000000000000000000000012 -S315600395F00000000000000000000000000000000002 -S3156003960000000000000000000000000000000000F1 -S3156003961000000000000000000000000000000000E1 -S3156003962000000000000000000000000000000000D1 -S3156003963000000000000000000000000000000000C1 -S3156003964000000000000000000000000000000000B1 -S3156003965000000000000000000000000000000000A1 -S315600396600000000000000000000000000000000091 -S315600396700000000000000000000000000000000081 -S315600396800000000000000000000000000000000071 -S315600396900000000000000000000000000000000061 -S315600396A00000000000000000000000000000000051 -S315600396B00000000000000000000000000000000041 -S315600396C00000000000000000000000000000000031 -S315600396D00000000000000000000000000000000021 -S315600396E00000000000000000000000000000000011 -S315600396F00000000000000000000000000000000001 -S3156003970000000000000000000000000000000000F0 -S3156003971000000000000000000000000000000000E0 -S3156003972000000000000000000000000000000000D0 -S3156003973000000000000000000000000000000000C0 -S3156003974000000000000000000000000000000000B0 -S3156003975000000000000000000000000000000000A0 -S315600397600000000000000000000000000000000090 -S315600397700000000000000000000000000000000080 -S315600397800000000000000000000000000000000070 -S315600397900000000000000000000000000000000060 -S315600397A00000000000000000000000000000000050 -S315600397B00000000000000000000000000000000040 -S315600397C00000000000000000000000000000000030 -S315600397D00000000000000000000000000000000020 -S315600397E00000000000000000000000000000000010 -S315600397F00000000000000000000000000000000000 -S3156003980000000000000000000000000000000000EF -S3156003981000000000000000000000000000000000DF -S3156003982000000000000000000000000000000000CF -S3156003983000000000000000000000000000000000BF -S3156003984000000000000000000000000000000000AF -S31560039850000000000000000000000000000000009F -S31560039860000000000000000000000000000000008F -S31560039870000000000000000000000000000000007F -S31560039880000000000000000000000000000000006F -S31560039890000000000000000000000000000000005F -S315600398A0000000000000000000000000000000004F -S315600398B0000000000000000000000000000000003F -S315600398C0000000000000000000000000000000002F -S315600398D0000000000000000000000000000000001F -S315600398E0000000000000000000000000000000000F -S315600398F000000000000000000000000000000000FF -S3156003990000000000000000000000000000000000EE -S3156003991000000000000000000000000000000000DE -S3156003992000000000000000000000000000000000CE -S3156003993000000000000000000000000000000000BE -S3156003994000000000000000000000000000000000AE -S31560039950000000000000000000000000000000009E -S31560039960000000000000000000000000000000008E -S31560039970000000000000000000000000000000007E -S31560039980000000000000000000000000000000006E -S31560039990000000000000000000000000000000005E -S315600399A0000000000000000000000000000000004E -S315600399B0000000000000000000000000000000003E -S315600399C0000000000000000000000000000000002E -S315600399D0000000000000000000000000000000001E -S315600399E0000000000000000000000000000000000E -S315600399F000000000000000000000000000000000FE -S31560039A0000000000000000000000000000000000ED -S31560039A1000000000000000000000000000000000DD -S31560039A2000000000000000000000000000000000CD -S31560039A3000000000000000000000000000000000BD -S31560039A4000000000000000000000000000000000AD -S31560039A50000000000000000000000000000000009D -S31560039A60000000000000000000000000000000008D -S31560039A70000000000000000000000000000000007D -S31560039A80000000000000000000000000000000006D -S31560039A90000000000000000000000000000000005D -S31560039AA0000000000000000000000000000000004D -S31560039AB0000000000000000000000000000000003D -S31560039AC0000000000000000000000000000000002D -S31560039AD0000000000000000000000000000000001D -S31560039AE0000000000000000000000000000000000D -S31560039AF000000000000000000000000000000000FD -S31560039B0000000000000000000000000000000000EC -S31560039B1000000000000000000000000000000000DC -S31560039B2000000000000000000000000000000000CC -S31560039B3000000000000000000000000000000000BC -S31560039B4000000000000000000000000000000000AC -S31560039B50000000000000000000000000000000009C -S31560039B60000000000000000000000000000000008C -S31560039B70000000000000000000000000000000007C -S31560039B80000000000000000000000000000000006C -S31560039B90000000000000000000000000000000005C -S31560039BA0000000000000000000000000000000004C -S31560039BB0000000000000000000000000000000003C -S31560039BC0000000000000000000000000000000002C -S31560039BD0000000000000000000000000000000001C -S31560039BE0000000000000000000000000000000000C -S31560039BF000000000000000000000000000000000FC -S31560039C0000000000000000000000000000000000EB -S31560039C1000000000000000000000000000000000DB -S31560039C2000000000000000000000000000000000CB -S31560039C3000000000000000000000000000000000BB -S31560039C4000000000000000000000000000000000AB -S31560039C50000000000000000000000000000000009B -S31560039C60000000000000000000000000000000008B -S31560039C70000000000000000000000000000000007B -S31560039C80000000000000000000000000000000006B -S31560039C90000000000000000000000000000000005B -S31560039CA0000000000000000000000000000000004B -S31560039CB0000000000000000000000000000000003B -S31560039CC0000000000000000000000000000000002B -S31560039CD0000000000000000000000000000000001B -S31560039CE0000000000000000000000000000000000B -S31560039CF000000000000000000000000000000000FB -S31560039D0000000000000000000000000000000000EA -S31560039D1000000000000000000000000000000000DA -S31560039D2000000000000000000000000000000000CA -S31560039D3000000000000000000000000000000000BA -S31560039D4000000000000000000000000000000000AA -S31560039D50000000000000000000000000000000009A -S31560039D60000000000000000000000000000000008A -S31560039D70000000000000000000000000000000007A -S31560039D80000000000000000000000000000000006A -S31560039D90000000000000000000000000000000005A -S31560039DA0000000000000000000000000000000004A -S31560039DB0000000000000000000000000000000003A -S31560039DC0000000000000000000000000000000002A -S31560039DD0000000000000000000000000000000001A -S31560039DE0000000000000000000000000000000000A -S31560039DF000000000000000000000000000000000FA -S31560039E0000000000000000000000000000000000E9 -S31560039E1000000000000000000000000000000000D9 -S31560039E2000000000000000000000000000000000C9 -S31560039E3000000000000000000000000000000000B9 -S31560039E4000000000000000000000000000000000A9 -S31560039E500000000000000000000000000000000099 -S31560039E600000000000000000000000000000000089 -S31560039E700000000000000000000000000000000079 -S31560039E800000000000000000000000000000000069 -S31560039E900000000000000000000000000000000059 -S31560039EA00000000000000000000000000000000049 -S31560039EB00000000000000000000000000000000039 -S31560039EC00000000000000000000000000000000029 -S31560039ED00000000000000000000000000000000019 -S31560039EE00000000000000000000000000000000009 -S31560039EF000000000000000000000000000000000F9 -S31560039F0000000000000000000000000000000000E8 -S31560039F1000000000000000000000000000000000D8 -S31560039F2000000000000000000000000000000000C8 -S31560039F3000000000000000000000000000000000B8 -S31560039F4000000000000000000000000000000000A8 -S31560039F500000000000000000000000000000000098 -S31560039F600000000000000000000000000000000088 -S31560039F700000000000000000000000000000000078 -S31560039F800000000000000000000000000000000068 -S31560039F900000000000000000000000000000000058 -S31560039FA00000000000000000000000000000000048 -S31560039FB00000000000000000000000000000000038 -S31560039FC00000000000000000000000000000000028 -S31560039FD00000000000000000000000000000000018 -S31560039FE00000000000000000000000000000000008 -S31560039FF000000000000000000000000000000000F8 -S3156003A00000000000000000000000000000000000E7 -S3156003A01000000000000000000000000000000000D7 -S3156003A02000000000000000000000000000000000C7 -S3156003A03000000000000000000000000000000000B7 -S3156003A04000000000000000000000000000000000A7 -S3156003A0500000000000000000000000000000000097 -S3156003A0600000000000000000000000000000000087 -S3156003A0700000000000000000000000000000000077 -S3156003A0800000000000000000000000000000000067 -S3156003A0900000000000000000000000000000000057 -S3156003A0A00000000000000000000000000000000047 -S3156003A0B00000000000000000000000000000000037 -S3156003A0C00000000000000000000000000000000027 -S3156003A0D00000000000000000000000000000000017 -S3156003A0E00000000000000000000000000000000007 -S3156003A0F000000000000000000000000000000000F7 -S3156003A10000000000000000000000000000000000E6 -S3156003A11000000000000000000000000000000000D6 -S3156003A12000000000000000000000000000000000C6 -S3156003A13000000000000000000000000000000000B6 -S3156003A14000000000000000000000000000000000A6 -S3156003A1500000000000000000000000000000000096 -S3156003A1600000000000000000000000000000000086 -S3156003A1700000000000000000000000000000000076 -S3156003A1800000000000000000000000000000000066 -S3156003A1900000000000000000000000000000000056 -S3156003A1A00000000000000000000000000000000046 -S3156003A1B00000000000000000000000000000000036 -S3156003A1C00000000000000000000000000000000026 -S3156003A1D00000000000000000000000000000000016 -S3156003A1E00000000000000000000000000000000006 -S3156003A1F000000000000000000000000000000000F6 -S3156003A20000000000000000000000000000000000E5 -S3156003A21000000000000000000000000000000000D5 -S3156003A22000000000000000000000000000000000C5 -S3156003A23000000000000000000000000000000000B5 -S3156003A24000000000000000000000000000000000A5 -S3156003A2500000000000000000000000000000000095 -S3156003A2600000000000000000000000000000000085 -S3156003A2700000000000000000000000000000000075 -S3156003A2800000000000000000000000000000000065 -S3156003A2900000000000000000000000000000000055 -S3156003A2A00000000000000000000000000000000045 -S3156003A2B00000000000000000000000000000000035 -S3156003A2C00000000000000000000000000000000025 -S3156003A2D00000000000000000000000000000000015 -S3156003A2E00000000000000000000000000000000005 -S3156003A2F000000000000000000000000000000000F5 -S3156003A30000000000000000000000000000000000E4 -S3156003A31000000000000000000000000000000000D4 -S3156003A32000000000000000000000000000000000C4 -S3156003A33000000000000000000000000000000000B4 -S3156003A34000000000000000000000000000000000A4 -S3156003A3500000000000000000000000000000000094 -S3156003A3600000000000000000000000000000000084 -S3156003A3700000000000000000000000000000000074 -S3156003A3800000000000000000000000000000000064 -S3156003A3900000000000000000000000000000000054 -S3156003A3A00000000000000000000000000000000044 -S3156003A3B00000000000000000000000000000000034 -S3156003A3C00000000000000000000000000000000024 -S3156003A3D00000000000000000000000000000000014 -S3156003A3E00000000000000000000000000000000004 -S3156003A3F000000000000000000000000000000000F4 -S3156003A40000000000000000000000000000000000E3 -S3156003A41000000000000000000000000000000000D3 -S3156003A42000000000000000000000000000000000C3 -S3156003A43000000000000000000000000000000000B3 -S3156003A44000000000000000000000000000000000A3 -S3156003A4500000000000000000000000000000000093 -S3156003A4600000000000000000000000000000000083 -S3156003A4700000000000000000000000000000000073 -S3156003A4800000000000000000000000000000000063 -S3156003A4900000000000000000000000000000000053 -S3156003A4A00000000000000000000000000000000043 -S3156003A4B00000000000000000000000000000000033 -S3156003A4C00000000000000000000000000000000023 -S3156003A4D00000000000000000000000000000000013 -S3156003A4E00000000000000000000000000000000003 -S3156003A4F000000000000000000000000000000000F3 -S3156003A50000000000000000000000000000000000E2 -S3156003A51000000000000000000000000000000000D2 -S3156003A52000000000000000000000000000000000C2 -S3156003A53000000000000000000000000000000000B2 -S3156003A54000000000000000000000000000000000A2 -S3156003A5500000000000000000000000000000000092 -S3156003A5600000000000000000000000000000000082 -S3156003A5700000000000000000000000000000000072 -S3156003A5800000000000000000000000000000000062 -S3156003A5900000000000000000000000000000000052 -S3156003A5A00000000000000000000000000000000042 -S3156003A5B00000000000000000000000000000000032 -S3156003A5C00000000000000000000000000000000022 -S3156003A5D00000000000000000000000000000000012 -S3156003A5E00000000000000000000000000000000002 -S3156003A5F000000000000000000000000000000000F2 -S3156003A60000000000000000000000000000000000E1 -S3156003A61000000000000000000000000000000000D1 -S3156003A62000000000000000000000000000000000C1 -S3156003A63000000000000000000000000000000000B1 -S3156003A64000000000000000000000000000000000A1 -S3156003A6500000000000000000000000000000000091 -S3156003A6600000000000000000000000000000000081 -S3156003A6700000000000000000000000000000000071 -S3156003A6800000000000000000000000000000000061 -S3156003A6900000000000000000000000000000000051 -S3156003A6A00000000000000000000000000000000041 -S3156003A6B00000000000000000000000000000000031 -S3156003A6C00000000000000000000000000000000021 -S3156003A6D00000000000000000000000000000000011 -S3156003A6E00000000000000000000000000000000001 -S3156003A6F000000000000000000000000000000000F1 -S3156003A70000000000000000000000000000000000E0 -S3156003A71000000000000000000000000000000000D0 -S3156003A72000000000000000000000000000000000C0 -S3156003A73000000000000000000000000000000000B0 -S3156003A74000000000000000000000000000000000A0 -S3156003A7500000000000000000000000000000000090 -S3156003A7600000000000000000000000000000000080 -S3156003A7700000000000000000000000000000000070 -S3156003A7800000000000000000000000000000000060 -S3156003A7900000000000000000000000000000000050 -S3156003A7A00000000000000000000000000000000040 -S3156003A7B00000000000000000000000000000000030 -S3156003A7C00000000000000000000000000000000020 -S3156003A7D00000000000000000000000000000000010 -S3156003A7E00000000000000000000000000000000000 -S3156003A7F000000000000000000000000000000000F0 -S3156003A80000000000000000000000000000000000DF -S3156003A81000000000000000000000000000000000CF -S3156003A82000000000000000000000000000000000BF -S3156003A83000000000000000000000000000000000AF -S3156003A840000000000000000000000000000000009F -S3156003A850000000000000000000000000000000008F -S3156003A860000000000000000000000000000000007F -S3156003A870000000000000000000000000000000006F -S3156003A880000000000000000000000000000000005F -S3156003A890000000000000000000000000000000004F -S3156003A8A0000000000000000000000000000000003F -S3156003A8B0000000000000000000000000000000002F -S3156003A8C0000000000000000000000000000000001F -S3156003A8D0000000000000000000000000000000000F -S3156003A8E000000000000000000000000000000000FF -S3156003A8F000000000000000000000000000000000EF -S3156003A90000000000000000000000000000000000DE -S3156003A91000000000000000000000000000000000CE -S3156003A92000000000000000000000000000000000BE -S3156003A93000000000000000000000000000000000AE -S3156003A940000000000000000000000000000000009E -S3156003A950000000000000000000000000000000008E -S3156003A960000000000000000000000000000000007E -S3156003A970000000000000000000000000000000006E -S3156003A980000000000000000000000000000000005E -S3156003A990000000000000000000000000000000004E -S3156003A9A0000000000000000000000000000000003E -S3156003A9B0000000000000000000000000000000002E -S3156003A9C0000000000000000000000000000000001E -S3156003A9D0000000000000000000000000000000000E -S3156003A9E000000000000000000000000000000000FE -S3156003A9F000000000000000000000000000000000EE -S3156003AA0000000000000000000000000000000000DD -S3156003AA1000000000000000000000000000000000CD -S3156003AA2000000000000000000000000000000000BD -S3156003AA3000000000000000000000000000000000AD -S3156003AA40000000000000000000000000000000009D -S3156003AA50000000000000000000000000000000008D -S3156003AA60000000000000000000000000000000007D -S3156003AA70000000000000000000000000000000006D -S3156003AA80000000000000000000000000000000005D -S3156003AA90000000000000000000000000000000004D -S3156003AAA0000000000000000000000000000000003D -S3156003AAB0000000000000000000000000000000002D -S3156003AAC0000000000000000000000000000000001D -S3156003AAD0000000000000000000000000000000000D -S3156003AAE000000000000000000000000000000000FD -S3156003AAF000000000000000000000000000000000ED -S3156003AB0000000000000000000000000000000000DC -S3156003AB1000000000000000000000000000000000CC -S3156003AB2000000000000000000000000000000000BC -S3156003AB3000000000000000000000000000000000AC -S3156003AB40000000000000000000000000000000009C -S3156003AB50000000000000000000000000000000008C -S3156003AB60000000000000000000000000000000007C -S3156003AB70000000000000000000000000000000006C -S3156003AB80000000000000000000000000000000005C -S3156003AB90000000000000000000000000000000004C -S3156003ABA0000000000000000000000000000000003C -S3156003ABB0000000000000000000000000000000002C -S3156003ABC0000000000000000000000000000000001C -S3156003ABD0000000000000000000000000000000000C -S3156003ABE000000000000000000000000000000000FC -S3156003ABF000000000000000000000000000000000EC -S3156003AC0000000000000000000000000000000000DB -S3156003AC1000000000000000000000000000000000CB -S3156003AC2000000000000000000000000000000000BB -S3156003AC3000000000000000000000000000000000AB -S3156003AC40000000000000000000000000000000009B -S3156003AC50000000000000000000000000000000008B -S3156003AC60000000000000000000000000000000007B -S3156003AC70000000000000000000000000000000006B -S3156003AC80000000000000000000000000000000005B -S3156003AC90000000000000000000000000000000004B -S3156003ACA0000000000000000000000000000000003B -S3156003ACB0000000000000000000000000000000002B -S3156003ACC0000000000000000000000000000000001B -S3156003ACD0000000000000000000000000000000000B -S3156003ACE000000000000000000000000000000000FB -S3156003ACF000000000000000000000000000000000EB -S3156003AD0000000000000000000000000000000000DA -S3156003AD1000000000000000000000000000000000CA -S3156003AD2000000000000000000000000000000000BA -S3156003AD3000000000000000000000000000000000AA -S3156003AD40000000000000000000000000000000009A -S3156003AD50000000000000000000000000000000008A -S3156003AD60000000000000000000000000000000007A -S3156003AD70000000000000000000000000000000006A -S3156003AD80000000000000000000000000000000005A -S3156003AD90000000000000000000000000000000004A -S3156003ADA0000000000000000000000000000000003A -S3156003ADB0000000000000000000000000000000002A -S3156003ADC0000000000000000000000000000000001A -S3156003ADD0000000000000000000000000000000000A -S3156003ADE000000000000000000000000000000000FA -S3156003ADF000000000000000000000000000000000EA -S3156003AE0000000000000000000000000000000000D9 -S3156003AE1000000000000000000000000000000000C9 -S3156003AE2000000000000000000000000000000000B9 -S3156003AE3000000000000000000000000000000000A9 -S3156003AE400000000000000000000000000000000099 -S3156003AE500000000000000000000000000000000089 -S3156003AE600000000000000000000000000000000079 -S3156003AE700000000000000000000000000000000069 -S3156003AE800000000000000000000000000000000059 -S3156003AE900000000000000000000000000000000049 -S3156003AEA00000000000000000000000000000000039 -S3156003AEB00000000000000000000000000000000029 -S3156003AEC00000000000000000000000000000000019 -S3156003AED00000000000000000000000000000000009 -S3156003AEE000000000000000000000000000000000F9 -S3156003AEF000000000000000000000000000000000E9 -S3156003AF0000000000000000000000000000000000D8 -S3156003AF1000000000000000000000000000000000C8 -S3156003AF2000000000000000000000000000000000B8 -S3156003AF3000000000000000000000000000000000A8 -S3156003AF400000000000000000000000000000000098 -S3156003AF500000000000000000000000000000000088 -S3156003AF600000000000000000000000000000000078 -S3156003AF700000000000000000000000000000000068 -S3156003AF800000000000000000000000000000000058 -S3156003AF900000000000000000000000000000000048 -S3156003AFA00000000000000000000000000000000038 -S3156003AFB00000000000000000000000000000000028 -S3156003AFC00000000000000000000000000000000018 -S3156003AFD00000000000000000000000000000000008 -S3156003AFE000000000000000000000000000000000F8 -S3156003AFF000000000000000000000000000000000E8 -S3156003B00000000000000000000000000000000000D7 -S3156003B01000000000000000000000000000000000C7 -S3156003B02000000000000000000000000000000000B7 -S3156003B03000000000000000000000000000000000A7 -S3156003B0400000000000000000000000000000000097 -S3156003B0500000000000000000000000000000000087 -S3156003B0600000000000000000000000000000000077 -S3156003B0700000000000000000000000000000000067 -S3156003B0800000000000000000000000000000000057 -S3156003B0900000000000000000000000000000000047 -S3156003B0A00000000000000000000000000000000037 -S3156003B0B00000000000000000000000000000000027 -S3156003B0C00000000000000000000000000000000017 -S3156003B0D00000000000000000000000000000000007 -S3156003B0E000000000000000000000000000000000F7 -S3156003B0F000000000000000000000000000000000E7 -S3156003B10000000000000000000000000000000000D6 -S3156003B11000000000000000000000000000000000C6 -S3156003B12000000000000000000000000000000000B6 -S3156003B13000000000000000000000000000000000A6 -S3156003B1400000000000000000000000000000000096 -S3156003B1500000000000000000000000000000000086 -S3156003B1600000000000000000000000000000000076 -S3156003B1700000000000000000000000000000000066 -S3156003B1800000000000000000000000000000000056 -S3156003B1900000000000000000000000000000000046 -S3156003B1A00000000000000000000000000000000036 -S3156003B1B00000000000000000000000000000000026 -S3156003B1C00000000000000000000000000000000016 -S3156003B1D00000000000000000000000000000000006 -S3156003B1E000000000000000000000000000000000F6 -S3156003B1F000000000000000000000000000000000E6 -S3156003B20000000000000000000000000000000000D5 -S3156003B21000000000000000000000000000000000C5 -S3156003B22000000000000000000000000000000000B5 -S3156003B23000000000000000000000000000000000A5 -S3156003B2400000000000000000000000000000000095 -S3156003B2500000000000000000000000000000000085 -S3156003B2600000000000000000000000000000000075 -S3156003B2700000000000000000000000000000000065 -S3156003B2800000000000000000000000000000000055 -S3156003B2900000000000000000000000000000000045 -S3156003B2A00000000000000000000000000000000035 -S3156003B2B00000000000000000000000000000000025 -S3156003B2C00000000000000000000000000000000015 -S3156003B2D00000000000000000000000000000000005 -S3156003B2E000000000000000000000000000000000F5 -S3156003B2F000000000000000000000000000000000E5 -S3156003B30000000000000000000000000000000000D4 -S3156003B31000000000000000000000000000000000C4 -S3156003B32000000000000000000000000000000000B4 -S3156003B33000000000000000000000000000000000A4 -S3156003B3400000000000000000000000000000000094 -S3156003B3500000000000000000000000000000000084 -S3156003B3600000000000000000000000000000000074 -S3156003B3700000000000000000000000000000000064 -S3156003B3800000000000000000000000000000000054 -S3156003B3900000000000000000000000000000000044 -S3156003B3A00000000000000000000000000000000034 -S3156003B3B00000000000000000000000000000000024 -S3156003B3C00000000000000000000000000000000014 -S3156003B3D00000000000000000000000000000000004 -S3156003B3E000000000000000000000000000000000F4 -S3156003B3F000000000000000000000000000000000E4 -S3156003B40000000000000000000000000000000000D3 -S3156003B41000000000000000000000000000000000C3 -S3156003B42000000000000000000000000000000000B3 -S3156003B43000000000000000000000000000000000A3 -S3156003B4400000000000000000000000000000000093 -S3156003B4500000000000000000000000000000000083 -S3156003B4600000000000000000000000000000000073 -S3156003B4700000000000000000000000000000000063 -S3156003B4800000000000000000000000000000000053 -S3156003B4900000000000000000000000000000000043 -S3156003B4A00000000000000000000000000000000033 -S3156003B4B00000000000000000000000000000000023 -S3156003B4C00000000000000000000000000000000013 -S3156003B4D00000000000000000000000000000000003 -S3156003B4E000000000000000000000000000000000F3 -S3156003B4F000000000000000000000000000000000E3 -S3156003B50000000000000000000000000000000000D2 -S3156003B51000000000000000000000000000000000C2 -S3156003B52000000000000000000000000000000000B2 -S3156003B53000000000000000000000000000000000A2 -S3156003B5400000000000000000000000000000000092 -S3156003B5500000000000000000000000000000000082 -S3156003B5600000000000000000000000000000000072 -S3156003B5700000000000000000000000000000000062 -S3156003B5800000000000000000000000000000000052 -S3156003B5900000000000000000000000000000000042 -S3156003B5A00000000000000000000000000000000032 -S3156003B5B00000000000000000000000000000000022 -S3156003B5C00000000000000000000000000000000012 -S3156003B5D00000000000000000000000000000000002 -S3156003B5E000000000000000000000000000000000F2 -S3156003B5F000000000000000000000000000000000E2 -S3156003B60000000000000000000000000000000000D1 -S3156003B61000000000000000000000000000000000C1 -S3156003B62000000000000000000000000000000000B1 -S3156003B63000000000000000000000000000000000A1 -S3156003B6400000000000000000000000000000000091 -S3156003B6500000000000000000000000000000000081 -S3156003B6600000000000000000000000000000000071 -S3156003B6700000000000000000000000000000000061 -S3156003B6800000000000000000000000000000000051 -S3156003B6900000000000000000000000000000000041 -S3156003B6A00000000000000000000000000000000031 -S3156003B6B00000000000000000000000000000000021 -S3156003B6C00000000000000000000000000000000011 -S3156003B6D00000000000000000000000000000000001 -S3156003B6E000000000000000000000000000000000F1 -S3156003B6F000000000000000000000000000000000E1 -S3156003B70000000000000000000000000000000000D0 -S3156003B71000000000000000000000000000000000C0 -S3156003B72000000000000000000000000000000000B0 -S3156003B73000000000000000000000000000000000A0 -S3156003B7400000000000000000000000000000000090 -S3156003B7500000000000000000000000000000000080 -S3156003B7600000000000000000000000000000000070 -S3156003B7700000000000000000000000000000000060 -S3156003B7800000000000000000000000000000000050 -S3156003B7900000000000000000000000000000000040 -S3156003B7A00000000000000000000000000000000030 -S3156003B7B00000000000000000000000000000000020 -S3156003B7C00000000000000000000000000000000010 -S3156003B7D00000000000000000000000000000000000 -S3156003B7E000000000000000000000000000000000F0 -S3156003B7F000000000000000000000000000000000E0 -S3156003B80000000000000000000000000000000000CF -S3156003B81000000000000000000000000000000000BF -S3156003B82000000000000000000000000000000000AF -S3156003B830000000000000000000000000000000009F -S3156003B840000000000000000000000000000000008F -S3156003B850000000000000000000000000000000007F -S3156003B860000000000000000000000000000000006F -S3156003B870000000000000000000000000000000005F -S3156003B880000000000000000000000000000000004F -S3156003B890000000000000000000000000000000003F -S3156003B8A0000000000000000000000000000000002F -S3156003B8B0000000000000000000000000000000001F -S3156003B8C0000000000000000000000000000000000F -S3156003B8D000000000000000000000000000000000FF -S3156003B8E000000000000000000000000000000000EF -S3156003B8F000000000000000000000000000000000DF -S3156003B90000000000000000000000000000000000CE -S3156003B91000000000000000000000000000000000BE -S3156003B92000000000000000000000000000000000AE -S3156003B930000000000000000000000000000000009E -S3156003B940000000000000000000000000000000008E -S3156003B950000000000000000000000000000000007E -S3156003B960000000000000000000000000000000006E -S3156003B970000000000000000000000000000000005E -S3156003B980000000000000000000000000000000004E -S3156003B990000000000000000000000000000000003E -S3156003B9A0000000000000000000000000000000002E -S3156003B9B0000000000000000000000000000000001E -S3156003B9C0000000000000000000000000000000000E -S3156003B9D000000000000000000000000000000000FE -S3156003B9E000000000000000000000000000000000EE -S3156003B9F000000000000000000000000000000000DE -S3156003BA0000000000000000000000000000000000CD -S3156003BA1000000000000000000000000000000000BD -S3156003BA2000000000000000000000000000000000AD -S3156003BA30000000000000000000000000000000009D -S3156003BA40000000000000000000000000000000008D -S3156003BA50000000000000000000000000000000007D -S3156003BA60000000000000000000000000000000006D -S3156003BA70000000000000000000000000000000005D -S3156003BA80000000000000000000000000000000004D -S3156003BA90000000000000000000000000000000003D -S3156003BAA0000000000000000000000000000000002D -S3156003BAB0000000000000000000000000000000001D -S3156003BAC0000000000000000000000000000000000D -S3156003BAD000000000000000000000000000000000FD -S3156003BAE000000000000000000000000000000000ED -S3156003BAF000000000000000000000000000000000DD -S3156003BB0000000000000000000000000000000000CC -S3156003BB1000000000000000000000000000000000BC -S3156003BB2000000000000000000000000000000000AC -S3156003BB30000000000000000000000000000000009C -S3156003BB40000000000000000000000000000000008C -S3156003BB50000000000000000000000000000000007C -S3156003BB60000000000000000000000000000000006C -S3156003BB70000000000000000000000000000000005C -S3156003BB80000000000000000000000000000000004C -S3156003BB90000000000000000000000000000000003C -S3156003BBA0000000000000000000000000000000002C -S3156003BBB0000000000000000000000000000000001C -S3156003BBC0000000000000000000000000000000000C -S3156003BBD000000000000000000000000000000000FC -S3156003BBE000000000000000000000000000000000EC -S3156003BBF000000000000000000000000000000000DC -S3156003BC0000000000000000000000000000000000CB -S3156003BC1000000000000000000000000000000000BB -S3156003BC2000000000000000000000000000000000AB -S3156003BC30000000000000000000000000000000009B -S3156003BC40000000000000000000000000000000008B -S3156003BC50000000000000000000000000000000007B -S3156003BC60000000000000000000000000000000006B -S3156003BC70000000000000000000000000000000005B -S3156003BC80000000000000000000000000000000004B -S3156003BC90000000000000000000000000000000003B -S3156003BCA0000000000000000000000000000000002B -S3156003BCB0000000000000000000000000000000001B -S3156003BCC0000000000000000000000000000000000B -S3156003BCD000000000000000000000000000000000FB -S3156003BCE000000000000000000000000000000000EB -S3156003BCF000000000000000000000000000000000DB -S3156003BD0000000000000000000000000000000000CA -S3156003BD1000000000000000000000000000000000BA -S3156003BD2000000000000000000000000000000000AA -S3156003BD30000000000000000000000000000000009A -S3156003BD40000000000000000000000000000000008A -S3156003BD50000000000000000000000000000000007A -S3156003BD60000000000000000000000000000000006A -S3156003BD70000000000000000000000000000000005A -S3156003BD80000000000000000000000000000000004A -S3156003BD90000000000000000000000000000000003A -S3156003BDA0000000000000000000000000000000002A -S3156003BDB0000000000000000000000000000000001A -S3156003BDC0000000000000000000000000000000000A -S3156003BDD000000000000000000000000000000000FA -S3156003BDE000000000000000000000000000000000EA -S3156003BDF000000000000000000000000000000000DA -S3156003BE0000000000000000000000000000000000C9 -S3156003BE1000000000000000000000000000000000B9 -S3156003BE2000000000000000000000000000000000A9 -S3156003BE300000000000000000000000000000000099 -S3156003BE400000000000000000000000000000000089 -S3156003BE500000000000000000000000000000000079 -S3156003BE600000000000000000000000000000000069 -S3156003BE700000000000000000000000000000000059 -S3156003BE800000000000000000000000000000000049 -S3156003BE900000000000000000000000000000000039 -S3156003BEA00000000000000000000000000000000029 -S3156003BEB00000000000000000000000000000000019 -S3156003BEC00000000000000000000000000000000009 -S3156003BED000000000000000000000000000000000F9 -S3156003BEE000000000000000000000000000000000E9 -S3156003BEF000000000000000000000000000000000D9 -S3156003BF0000000000000000000000000000000000C8 -S3156003BF1000000000000000000000000000000000B8 -S3156003BF2000000000000000000000000000000000A8 -S3156003BF300000000000000000000000000000000098 -S3156003BF400000000000000000000000000000000088 -S3156003BF500000000000000000000000000000000078 -S3156003BF600000000000000000000000000000000068 -S3156003BF700000000000000000000000000000000058 -S3156003BF800000000000000000000000000000000048 -S3156003BF900000000000000000000000000000000038 -S3156003BFA00000000000000000000000000000000028 -S3156003BFB00000000000000000000000000000000018 -S3156003BFC00000000000000000000000000000000008 -S3156003BFD000000000000000000000000000000000F8 -S3156003BFE000000000000000000000000000000000E8 -S3156003BFF000000000000000000000000000000000D8 -S3156003C00000000000000000000000000000000000C7 -S3156003C01000000000000000000000000000000000B7 -S3156003C02000000000000000000000000000000000A7 -S3156003C0300000000000000000000000000000000097 -S3156003C0400000000000000000000000000000000087 -S3156003C0500000000000000000000000000000000077 -S3156003C0600000000000000000000000000000000067 -S3156003C0700000000000000000000000000000000057 -S3156003C0800000000000000000000000000000000047 -S3156003C0900000000000000000000000000000000037 -S3156003C0A00000000000000000000000000000000027 -S3156003C0B00000000000000000000000000000000017 -S3156003C0C00000000000000000000000000000000007 -S3156003C0D000000000000000000000000000000000F7 -S3156003C0E000000000000000000000000000000000E7 -S3156003C0F000000000000000000000000000000000D7 -S3156003C10000000000000000000000000000000000C6 -S3156003C11000000000000000000000000000000000B6 -S3156003C12000000000000000000000000000000000A6 -S3156003C1300000000000000000000000000000000096 -S3156003C1400000000000000000000000000000000086 -S3156003C1500000000000000000000000000000000076 -S3156003C1600000000000000000000000000000000066 -S3156003C1700000000000000000000000000000000056 -S3156003C1800000000000000000000000000000000046 -S3156003C1900000000000000000000000000000000036 -S3156003C1A00000000000000000000000000000000026 -S3156003C1B00000000000000000000000000000000016 -S3156003C1C00000000000000000000000000000000006 -S3156003C1D000000000000000000000000000000000F6 -S3156003C1E000000000000000000000000000000000E6 -S3156003C1F000000000000000000000000000000000D6 -S3156003C20000000000000000000000000000000000C5 -S3156003C21000000000000000000000000000000000B5 -S3156003C22000000000000000000000000000000000A5 -S3156003C2300000000000000000000000000000000095 -S3156003C2400000000000000000000000000000000085 -S3156003C2500000000000000000000000000000000075 -S3156003C2600000000000000000000000000000000065 -S3156003C2700000000000000000000000000000000055 -S3156003C2800000000000000000000000000000000045 -S3156003C2900000000000000000000000000000000035 -S3156003C2A00000000000000000000000000000000025 -S3156003C2B00000000000000000000000000000000015 -S3156003C2C00000000000000000000000000000000005 -S3156003C2D000000000000000000000000000000000F5 -S3156003C2E000000000000000000000000000000000E5 -S3156003C2F000000000000000000000000000000000D5 -S3156003C30000000000000000000000000000000000C4 -S3156003C31000000000000000000000000000000000B4 -S3156003C32000000000000000000000000000000000A4 -S3156003C3300000000000000000000000000000000094 -S3156003C3400000000000000000000000000000000084 -S3156003C3500000000000000000000000000000000074 -S3156003C3600000000000000000000000000000000064 -S3156003C3700000000000000000000000000000000054 -S3156003C3800000000000000000000000000000000044 -S3156003C3900000000000000000000000000000000034 -S3156003C3A00000000000000000000000000000000024 -S3156003C3B00000000000000000000000000000000014 -S3156003C3C00000000000000000000000000000000004 -S3156003C3D000000000000000000000000000000000F4 -S3156003C3E000000000000000000000000000000000E4 -S3156003C3F000000000000000000000000000000000D4 -S3156003C40000000000000000000000000000000000C3 -S3156003C41000000000000000000000000000000000B3 -S3156003C42000000000000000000000000000000000A3 -S3156003C4300000000000000000000000000000000093 -S3156003C4400000000000000000000000000000000083 -S3156003C4500000000000000000000000000000000073 -S3156003C4600000000000000000000000000000000063 -S3156003C4700000000000000000000000000000000053 -S3156003C4800000000000000000000000000000000043 -S3156003C4900000000000000000000000000000000033 -S3156003C4A00000000000000000000000000000000023 -S3156003C4B00000000000000000000000000000000013 -S3156003C4C00000000000000000000000000000000003 -S3156003C4D000000000000000000000000000000000F3 -S3156003C4E000000000000000000000000000000000E3 -S3156003C4F000000000000000000000000000000000D3 -S3156003C50000000000000000000000000000000000C2 -S3156003C51000000000000000000000000000000000B2 -S3156003C52000000000000000000000000000000000A2 -S3156003C5300000000000000000000000000000000092 -S3156003C5400000000000000000000000000000000082 -S3156003C5500000000000000000000000000000000072 -S3156003C5600000000000000000000000000000000062 -S3156003C5700000000000000000000000000000000052 -S3156003C5800000000000000000000000000000000042 -S3156003C5900000000000000000000000000000000032 -S3156003C5A00000000000000000000000000000000022 -S3156003C5B00000000000000000000000000000000012 -S3156003C5C00000000000000000000000000000000002 -S3156003C5D000000000000000000000000000000000F2 -S3156003C5E000000000000000000000000000000000E2 -S3156003C5F000000000000000000000000000000000D2 -S3156003C60000000000000000000000000000000000C1 -S3156003C61000000000000000000000000000000000B1 -S3156003C62000000000000000000000000000000000A1 -S3156003C6300000000000000000000000000000000091 -S3156003C6400000000000000000000000000000000081 -S3156003C6500000000000000000000000000000000071 -S3156003C6600000000000000000000000000000000061 -S3156003C6700000000000000000000000000000000051 -S3156003C6800000000000000000000000000000000041 -S3156003C6900000000000000000000000000000000031 -S3156003C6A00000000000000000000000000000000021 -S3156003C6B00000000000000000000000000000000011 -S3156003C6C00000000000000000000000000000000001 -S3156003C6D000000000000000000000000000000000F1 -S3156003C6E000000000000000000000000000000000E1 -S3156003C6F000000000000000000000000000000000D1 -S3156003C70000000000000000000000000000000000C0 -S3156003C71000000000000000000000000000000000B0 -S3156003C72000000000000000000000000000000000A0 -S3156003C7300000000000000000000000000000000090 -S3156003C7400000000000000000000000000000000080 -S3156003C7500000000000000000000000000000000070 -S3156003C7600000000000000000000000000000000060 -S3156003C7700000000000000000000000000000000050 -S3156003C7800000000000000000000000000000000040 -S3156003C7900000000000000000000000000000000030 -S3156003C7A00000000000000000000000000000000020 -S3156003C7B00000000000000000000000000000000010 -S3156003C7C00000000000000000000000000000000000 -S3156003C7D000000000000000000000000000000000F0 -S3156003C7E000000000000000000000000000000000E0 -S3156003C7F000000000000000000000000000000000D0 -S3156003C80000000000000000000000000000000000BF -S3156003C81000000000000000000000000000000000AF -S3156003C820000000000000000000000000000000009F -S3156003C830000000000000000000000000000000008F -S3156003C840000000000000000000000000000000007F -S3156003C850000000000000000000000000000000006F -S3156003C860000000000000000000000000000000005F -S3156003C870000000000000000000000000000000004F -S3156003C880000000000000000000000000000000003F -S3156003C890000000000000000000000000000000002F -S3156003C8A0000000000000000000000000000000001F -S3156003C8B0000000000000000000000000000000000F -S3156003C8C000000000000000000000000000000000FF -S3156003C8D000000000000000000000000000000000EF -S3156003C8E000000000000000000000000000000000DF -S3156003C8F000000000000000000000000000000000CF -S3156003C90000000000000000000000000000000000BE -S3156003C91000000000000000000000000000000000AE -S3156003C920000000000000000000000000000000009E -S3156003C930000000000000000000000000000000008E -S3156003C940000000000000000000000000000000007E -S3156003C950000000000000000000000000000000006E -S3156003C960000000000000000000000000000000005E -S3156003C970000000000000000000000000000000004E -S3156003C980000000000000000000000000000000003E -S3156003C990000000000000000000000000000000002E -S3156003C9A0000000000000000000000000000000001E -S3156003C9B0000000000000000000000000000000000E -S3156003C9C000000000000000000000000000000000FE -S3156003C9D000000000000000000000000000000000EE -S3156003C9E000000000000000000000000000000000DE -S3156003C9F000000000000000000000000000000000CE -S3156003CA0000000000000000000000000000000000BD -S3156003CA1000000000000000000000000000000000AD -S3156003CA20000000000000000000000000000000009D -S3156003CA30000000000000000000000000000000008D -S3156003CA40000000000000000000000000000000007D -S3156003CA50000000000000000000000000000000006D -S3156003CA60000000000000000000000000000000005D -S3156003CA70000000000000000000000000000000004D -S3156003CA80000000000000000000000000000000003D -S3156003CA90000000000000000000000000000000002D -S3156003CAA0000000000000000000000000000000001D -S3156003CAB0000000000000000000000000000000000D -S3156003CAC000000000000000000000000000000000FD -S3156003CAD000000000000000000000000000000000ED -S3156003CAE000000000000000000000000000000000DD -S3156003CAF000000000000000000000000000000000CD -S3156003CB0000000000000000000000000000000000BC -S3156003CB1000000000000000000000000000000000AC -S3156003CB20000000000000000000000000000000009C -S3156003CB30000000000000000000000000000000008C -S3156003CB40000000000000000000000000000000007C -S3156003CB50000000000000000000000000000000006C -S3156003CB60000000000000000000000000000000005C -S3156003CB70000000000000000000000000000000004C -S3156003CB80000000000000000000000000000000003C -S3156003CB90000000000000000000000000000000002C -S3156003CBA0000000000000000000000000000000001C -S3156003CBB0000000000000000000000000000000000C -S3156003CBC000000000000000000000000000000000FC -S3156003CBD000000000000000000000000000000000EC -S3156003CBE000000000000000000000000000000000DC -S3156003CBF000000000000000000000000000000000CC -S3156003CC0000000000000000000000000000000000BB -S3156003CC1000000000000000000000000000000000AB -S3156003CC20000000000000000000000000000000009B -S3156003CC30000000000000000000000000000000008B -S3156003CC40000000000000000000000000000000007B -S3156003CC50000000000000000000000000000000006B -S3156003CC60000000000000000000000000000000005B -S3156003CC70000000000000000000000000000000004B -S3156003CC80000000000000000000000000000000003B -S3156003CC90000000000000000000000000000000002B -S3156003CCA0000000000000000000000000000000001B -S3156003CCB0000000000000000000000000000000000B -S3156003CCC000000000000000000000000000000000FB -S3156003CCD000000000000000000000000000000000EB -S3156003CCE000000000000000000000000000000000DB -S3156003CCF000000000000000000000000000000000CB -S3156003CD0000000000000000000000000000000000BA -S3156003CD1000000000000000000000000000000000AA -S3156003CD20000000000000000000000000000000009A -S3156003CD30000000000000000000000000000000008A -S3156003CD40000000000000000000000000000000007A -S3156003CD50000000000000000000000000000000006A -S3156003CD60000000000000000000000000000000005A -S3156003CD70000000000000000000000000000000004A -S3156003CD80000000000000000000000000000000003A -S3156003CD90000000000000000000000000000000002A -S3156003CDA0000000000000000000000000000000001A -S3156003CDB0000000000000000000000000000000000A -S3156003CDC000000000000000000000000000000000FA -S3156003CDD000000000000000000000000000000000EA -S3156003CDE000000000000000000000000000000000DA -S3156003CDF000000000000000000000000000000000CA -S3156003CE0000000000000000000000000000000000B9 -S3156003CE1000000000000000000000000000000000A9 -S3156003CE200000000000000000000000000000000099 -S3156003CE300000000000000000000000000000000089 -S3156003CE400000000000000000000000000000000079 -S3156003CE500000000000000000000000000000000069 -S3156003CE600000000000000000000000000000000059 -S3156003CE700000000000000000000000000000000049 -S3156003CE800000000000000000000000000000000039 -S3156003CE900000000000000000000000000000000029 -S3156003CEA00000000000000000000000000000000019 -S3156003CEB00000000000000000000000000000000009 -S3156003CEC000000000000000000000000000000000F9 -S3156003CED000000000000000000000000000000000E9 -S3156003CEE000000000000000000000000000000000D9 -S3156003CEF000000000000000000000000000000000C9 -S3156003CF0000000000000000000000000000000000B8 -S3156003CF1000000000000000000000000000000000A8 -S3156003CF200000000000000000000000000000000098 -S3156003CF300000000000000000000000000000000088 -S3156003CF400000000000000000000000000000000078 -S3156003CF500000000000000000000000000000000068 -S3156003CF600000000000000000000000000000000058 -S3156003CF700000000000000000000000000000000048 -S3156003CF800000000000000000000000000000000038 -S3156003CF900000000000000000000000000000000028 -S3156003CFA00000000000000000000000000000000018 -S3156003CFB00000000000000000000000000000000008 -S3156003CFC000000000000000000000000000000000F8 -S3156003CFD000000000000000000000000000000000E8 -S3156003CFE000000000000000000000000000000000D8 -S3156003CFF000000000000000000000000000000000C8 -S3156003D00000000000000000000000000000000000B7 -S3156003D01000000000000000000000000000000000A7 -S3156003D0200000000000000000000000000000000097 -S3156003D0300000000000000000000000000000000087 -S3156003D0400000000000000000000000000000000077 -S3156003D0500000000000000000000000000000000067 -S3156003D0600000000000000000000000000000000057 -S3156003D0700000000000000000000000000000000047 -S3156003D0800000000000000000000000000000000037 -S3156003D0900000000000000000000000000000000027 -S3156003D0A00000000000000000000000000000000017 -S3156003D0B00000000000000000000000000000000007 -S3156003D0C000000000000000000000000000000000F7 -S3156003D0D000000000000000000000000000000000E7 -S3156003D0E000000000000000000000000000000000D7 -S3156003D0F000000000000000000000000000000000C7 -S3156003D10000000000000000000000000000000000B6 -S3156003D11000000000000000000000000000000000A6 -S3156003D1200000000000000000000000000000000096 -S3156003D1300000000000000000000000000000000086 -S3156003D1400000000000000000000000000000000076 -S3156003D1500000000000000000000000000000000066 -S3156003D1600000000000000000000000000000000056 -S3156003D1700000000000000000000000000000000046 -S3156003D1800000000000000000000000000000000036 -S3156003D1900000000000000000000000000000000026 -S3156003D1A00000000000000000000000000000000016 -S3156003D1B00000000000000000000000000000000006 -S3156003D1C000000000000000000000000000000000F6 -S3156003D1D000000000000000000000000000000000E6 -S3156003D1E000000000000000000000000000000000D6 -S3156003D1F000000000000000000000000000000000C6 -S3156003D20000000000000000000000000000000000B5 -S3156003D21000000000000000000000000000000000A5 -S3156003D2200000000000000000000000000000000095 -S3156003D2300000000000000000000000000000000085 -S3156003D2400000000000000000000000000000000075 -S3156003D2500000000000000000000000000000000065 -S3156003D2600000000000000000000000000000000055 -S3156003D2700000000000000000000000000000000045 -S3156003D2800000000000000000000000000000000035 -S3156003D2900000000000000000000000000000000025 -S3156003D2A00000000000000000000000000000000015 -S3156003D2B00000000000000000000000000000000005 -S3156003D2C000000000000000000000000000000000F5 -S3156003D2D000000000000000000000000000000000E5 -S3156003D2E000000000000000000000000000000000D5 -S3156003D2F000000000000000000000000000000000C5 -S3156003D30000000000000000000000000000000000B4 -S3156003D31000000000000000000000000000000000A4 -S3156003D3200000000000000000000000000000000094 -S3156003D3300000000000000000000000000000000084 -S3156003D3400000000000000000000000000000000074 -S3156003D3500000000000000000000000000000000064 -S3156003D3600000000000000000000000000000000054 -S3156003D3700000000000000000000000000000000044 -S3156003D3800000000000000000000000000000000034 -S3156003D3900000000000000000000000000000000024 -S3156003D3A00000000000000000000000000000000014 -S3156003D3B00000000000000000000000000000000004 -S3156003D3C000000000000000000000000000000000F4 -S3156003D3D000000000000000000000000000000000E4 -S3156003D3E000000000000000000000000000000000D4 -S3156003D3F000000000000000000000000000000000C4 -S3156003D40000000000000000000000000000000000B3 -S3156003D41000000000000000000000000000000000A3 -S3156003D4200000000000000000000000000000000093 -S3156003D4300000000000000000000000000000000083 -S3156003D4400000000000000000000000000000000073 -S3156003D4500000000000000000000000000000000063 -S3156003D4600000000000000000000000000000000053 -S3156003D4700000000000000000000000000000000043 -S3156003D4800000000000000000000000000000000033 -S3156003D4900000000000000000000000000000000023 -S3156003D4A00000000000000000000000000000000013 -S3156003D4B00000000000000000000000000000000003 -S3156003D4C000000000000000000000000000000000F3 -S3156003D4D000000000000000000000000000000000E3 -S3156003D4E000000000000000000000000000000000D3 -S3156003D4F000000000000000000000000000000000C3 -S3156003D50000000000000000000000000000000000B2 -S3156003D51000000000000000000000000000000000A2 -S3156003D5200000000000000000000000000000000092 -S3156003D5300000000000000000000000000000000082 -S3156003D5400000000000000000000000000000000072 -S3156003D5500000000000000000000000000000000062 -S3156003D5600000000000000000000000000000000052 -S3156003D5700000000000000000000000000000000042 -S3156003D5800000000000000000000000000000000032 -S3156003D5900000000000000000000000000000000022 -S3156003D5A00000000000000000000000000000000012 -S3156003D5B00000000000000000000000000000000002 -S3156003D5C000000000000000000000000000000000F2 -S3156003D5D000000000000000000000000000000000E2 -S3156003D5E000000000000000000000000000000000D2 -S3156003D5F000000000000000000000000000000000C2 -S3156003D60000000000000000000000000000000000B1 -S3156003D61000000000000000000000000000000000A1 -S3156003D6200000000000000000000000000000000091 -S3156003D6300000000000000000000000000000000081 -S3156003D6400000000000000000000000000000000071 -S3156003D6500000000000000000000000000000000061 -S3156003D6600000000000000000000000000000000051 -S3156003D6700000000000000000000000000000000041 -S3156003D6800000000000000000000000000000000031 -S3156003D6900000000000000000000000000000000021 -S3156003D6A00000000000000000000000000000000011 -S3156003D6B00000000000000000000000000000000001 -S3156003D6C000000000000000000000000000000000F1 -S3156003D6D000000000000000000000000000000000E1 -S3156003D6E000000000000000000000000000000000D1 -S3156003D6F000000000000000000000000000000000C1 -S3156003D70000000000000000000000000000000000B0 -S3156003D71000000000000000000000000000000000A0 -S3156003D7200000000000000000000000000000000090 -S3156003D7300000000000000000000000000000000080 -S3156003D7400000000000000000000000000000000070 -S3156003D7500000000000000000000000000000000060 -S3156003D7600000000000000000000000000000000050 -S3156003D7700000000000000000000000000000000040 -S3156003D7800000000000000000000000000000000030 -S3156003D7900000000000000000000000000000000020 -S3156003D7A00000000000000000000000000000000010 -S3156003D7B00000000000000000000000000000000000 -S3156003D7C000000000000000000000000000000000F0 -S3156003D7D000000000000000000000000000000000E0 -S3156003D7E000000000000000000000000000000000D0 -S3156003D7F000000000000000000000000000000000C0 -S3156003D80000000000000000000000000000000000AF -S3156003D810000000000000000000000000000000009F -S3156003D820000000000000000000000000000000008F -S3156003D830000000000000000000000000000000007F -S3156003D840000000000000000000000000000000006F -S3156003D850000000000000000000000000000000005F -S3156003D860000000000000000000000000000000004F -S3156003D870000000000000000000000000000000003F -S3156003D880000000000000000000000000000000002F -S3156003D890000000000000000000000000000000001F -S3156003D8A0000000000000000000000000000000000F -S3156003D8B000000000000000000000000000000000FF -S3156003D8C000000000000000000000000000000000EF -S3156003D8D000000000000000000000000000000000DF -S3156003D8E000000000000000000000000000000000CF -S3156003D8F000000000000000000000000000000000BF -S3156003D90000000000000000000000000000000000AE -S3156003D910000000000000000000000000000000009E -S3156003D920000000000000000000000000000000008E -S3156003D930000000000000000000000000000000007E -S3156003D940000000000000000000000000000000006E -S3156003D950000000000000000000000000000000005E -S3156003D960000000000000000000000000000000004E -S3156003D970000000000000000000000000000000003E -S3156003D980000000000000000000000000000000002E -S3156003D990000000000000000000000000000000001E -S3156003D9A0000000000000000000000000000000000E -S3156003D9B000000000000000000000000000000000FE -S3156003D9C000000000000000000000000000000000EE -S3156003D9D000000000000000000000000000000000DE -S3156003D9E000000000000000000000000000000000CE -S3156003D9F000000000000000000000000000000000BE -S3156003DA0000000000000000000000000000000000AD -S3156003DA10000000000000000000000000000000009D -S3156003DA20000000000000000000000000000000008D -S3156003DA30000000000000000000000000000000007D -S3156003DA40000000000000000000000000000000006D -S3156003DA50000000000000000000000000000000005D -S3156003DA60000000000000000000000000000000004D -S3156003DA70000000000000000000000000000000003D -S3156003DA80000000000000000000000000000000002D -S3156003DA90000000000000000000000000000000001D -S3156003DAA0000000000000000000000000000000000D -S3156003DAB000000000000000000000000000000000FD -S3156003DAC000000000000000000000000000000000ED -S3156003DAD000000000000000000000000000000000DD -S3156003DAE000000000000000000000000000000000CD -S3156003DAF000000000000000000000000000000000BD -S3156003DB0000000000000000000000000000000000AC -S3156003DB10000000000000000000000000000000009C -S3156003DB20000000000000000000000000000000008C -S3156003DB30000000000000000000000000000000007C -S3156003DB40000000000000000000000000000000006C -S3156003DB50000000000000000000000000000000005C -S3156003DB60000000000000000000000000000000004C -S3156003DB70000000000000000000000000000000003C -S3156003DB80000000000000000000000000000000002C -S3156003DB90000000000000000000000000000000001C -S3156003DBA0000000000000000000000000000000000C -S3156003DBB000000000000000000000000000000000FC -S3156003DBC000000000000000000000000000000000EC -S3156003DBD000000000000000000000000000000000DC -S3156003DBE000000000000000000000000000000000CC -S3156003DBF000000000000000000000000000000000BC -S3156003DC0000000000000000000000000000000000AB -S3156003DC10000000000000000000000000000000009B -S3156003DC20000000000000000000000000000000008B -S3156003DC30000000000000000000000000000000007B -S3156003DC40000000000000000000000000000000006B -S3156003DC50000000000000000000000000000000005B -S3156003DC60000000000000000000000000000000004B -S3156003DC70000000000000000000000000000000003B -S3156003DC80000000000000000000000000000000002B -S3156003DC90000000000000000000000000000000001B -S3156003DCA0000000000000000000000000000000000B -S3156003DCB000000000000000000000000000000000FB -S3156003DCC000000000000000000000000000000000EB -S3156003DCD000000000000000000000000000000000DB -S3156003DCE000000000000000000000000000000000CB -S3156003DCF000000000000000000000000000000000BB -S3156003DD0000000000000000000000000000000000AA -S3156003DD10000000000000000000000000000000009A -S3156003DD20000000000000000000000000000000008A -S3156003DD30000000000000000000000000000000007A -S3156003DD40000000000000000000000000000000006A -S3156003DD50000000000000000000000000000000005A -S3156003DD60000000000000000000000000000000004A -S3156003DD70000000000000000000000000000000003A -S3156003DD80000000000000000000000000000000002A -S3156003DD90000000000000000000000000000000001A -S3156003DDA0000000000000000000000000000000000A -S3156003DDB000000000000000000000000000000000FA -S3156003DDC000000000000000000000000000000000EA -S3156003DDD000000000000000000000000000000000DA -S3156003DDE000000000000000000000000000000000CA -S3156003DDF000000000000000000000000000000000BA -S3156003DE0000000000000000000000000000000000A9 -S3156003DE100000000000000000000000000000000099 -S3156003DE200000000000000000000000000000000089 -S3156003DE300000000000000000000000000000000079 -S3156003DE400000000000000000000000000000000069 -S3156003DE500000000000000000000000000000000059 -S3156003DE600000000000000000000000000000000049 -S3156003DE700000000000000000000000000000000039 -S3156003DE800000000000000000000000000000000029 -S3156003DE900000000000000000000000000000000019 -S3156003DEA00000000000000000000000000000000009 -S3156003DEB000000000000000000000000000000000F9 -S3156003DEC000000000000000000000000000000000E9 -S3156003DED000000000000000000000000000000000D9 -S3156003DEE000000000000000000000000000000000C9 -S3156003DEF000000000000000000000000000000000B9 -S3156003DF0000000000000000000000000000000000A8 -S3156003DF100000000000000000000000000000000098 -S3156003DF200000000000000000000000000000000088 -S3156003DF300000000000000000000000000000000078 -S3156003DF400000000000000000000000000000000068 -S3156003DF500000000000000000000000000000000058 -S3156003DF600000000000000000000000000000000048 -S3156003DF700000000000000000000000000000000038 -S3156003DF800000000000000000000000000000000028 -S3156003DF900000000000000000000000000000000018 -S3156003DFA00000000000000000000000000000000008 -S3156003DFB000000000000000000000000000000000F8 -S3156003DFC000000000000000000000000000000000E8 -S3156003DFD000000000000000000000000000000000D8 -S3156003DFE000000000000000000000000000000000C8 -S3156003DFF000000000000000000000000000000000B8 -S3156003E00000000000000000000000000000000000A7 -S3156003E0100000000000000000000000000000000097 -S3156003E0200000000000000000000000000000000087 -S3156003E0300000000000000000000000000000000077 -S3156003E0400000000000000000000000000000000067 -S3156003E0500000000000000000000000000000000057 -S3156003E0600000000000000000000000000000000047 -S3156003E0700000000000000000000000000000000037 -S3156003E0800000000000000000000000000000000027 -S3156003E0900000000000000000000000000000000017 -S3156003E0A00000000000000000000000000000000007 -S3156003E0B000000000000000000000000000000000F7 -S3156003E0C000000000000000000000000000000000E7 -S3156003E0D000000000000000000000000000000000D7 -S3156003E0E000000000000000000000000000000000C7 -S3156003E0F000000000000000000000000000000000B7 -S3156003E10000000000000000000000000000000000A6 -S3156003E1100000000000000000000000000000000096 -S3156003E1200000000000000000000000000000000086 -S3156003E1300000000000000000000000000000000076 -S3156003E1400000000000000000000000000000000066 -S3156003E1500000000000000000000000000000000056 -S3156003E1600000000000000000000000000000000046 -S3156003E1700000000000000000000000000000000036 -S3156003E1800000000000000000000000000000000026 -S3156003E1900000000000000000000000000000000016 -S3156003E1A00000000000000000000000000000000006 -S3156003E1B000000000000000000000000000000000F6 -S3156003E1C000000000000000000000000000000000E6 -S3156003E1D000000000000000000000000000000000D6 -S3156003E1E000000000000000000000000000000000C6 -S3156003E1F000000000000000000000000000000000B6 -S3156003E20000000000000000000000000000000000A5 -S3156003E2100000000000000000000000000000000095 -S3156003E2200000000000000000000000000000000085 -S3156003E2300000000000000000000000000000000075 -S3156003E2400000000000000000000000000000000065 -S3156003E2500000000000000000000000000000000055 -S3156003E2600000000000000000000000000000000045 -S3156003E2700000000000000000000000000000000035 -S3156003E2800000000000000000000000000000000025 -S3156003E2900000000000000000000000000000000015 -S3156003E2A00000000000000000000000000000000005 -S3156003E2B000000000000000000000000000000000F5 -S3156003E2C000000000000000000000000000000000E5 -S3156003E2D000000000000000000000000000000000D5 -S3156003E2E000000000000000000000000000000000C5 -S3156003E2F000000000000000000000000000000000B5 -S3156003E30000000000000000000000000000000000A4 -S3156003E3100000000000000000000000000000000094 -S3156003E3200000000000000000000000000000000084 -S3156003E3300000000000000000000000000000000074 -S3156003E3400000000000000000000000000000000064 -S3156003E3500000000000000000000000000000000054 -S3156003E3600000000000000000000000000000000044 -S3156003E3700000000000000000000000000000000034 -S3156003E3800000000000000000000000000000000024 -S3156003E3900000000000000000000000000000000014 -S3156003E3A00000000000000000000000000000000004 -S3156003E3B000000000000000000000000000000000F4 -S3156003E3C000000000000000000000000000000000E4 -S3156003E3D000000000000000000000000000000000D4 -S3156003E3E000000000000000000000000000000000C4 -S3156003E3F000000000000000000000000000000000B4 -S3156003E40000000000000000000000000000000000A3 -S3156003E4100000000000000000000000000000000093 -S3156003E4200000000000000000000000000000000083 -S3156003E4300000000000000000000000000000000073 -S3156003E4400000000000000000000000000000000063 -S3156003E4500000000000000000000000000000000053 -S3156003E4600000000000000000000000000000000043 -S3156003E4700000000000000000000000000000000033 -S3156003E4800000000000000000000000000000000023 -S3156003E4900000000000000000000000000000000013 -S3156003E4A00000000000000000000000000000000003 -S3156003E4B000000000000000000000000000000000F3 -S3156003E4C000000000000000000000000000000000E3 -S3156003E4D000000000000000000000000000000000D3 -S3156003E4E000000000000000000000000000000000C3 -S3156003E4F000000000000000000000000000000000B3 -S3156003E50000000000000000000000000000000000A2 -S3156003E5100000000000000000000000000000000092 -S3156003E5200000000000000000000000000000000082 -S3156003E5300000000000000000000000000000000072 -S3156003E5400000000000000000000000000000000062 -S3156003E5500000000000000000000000000000000052 -S3156003E5600000000000000000000000000000000042 -S3156003E5700000000000000000000000000000000032 -S3156003E5800000000000000000000000000000000022 -S3156003E5900000000000000000000000000000000012 -S3156003E5A00000000000000000000000000000000002 -S3156003E5B000000000000000000000000000000000F2 -S3156003E5C000000000000000000000000000000000E2 -S3156003E5D000000000000000000000000000000000D2 -S3156003E5E000000000000000000000000000000000C2 -S3156003E5F000000000000000000000000000000000B2 -S3156003E60000000000000000000000000000000000A1 -S3156003E6100000000000000000000000000000000091 -S3156003E6200000000000000000000000000000000081 -S3156003E6300000000000000000000000000000000071 -S3156003E6400000000000000000000000000000000061 -S3156003E6500000000000000000000000000000000051 -S3156003E6600000000000000000000000000000000041 -S3156003E6700000000000000000000000000000000031 -S3156003E6800000000000000000000000000000000021 -S3156003E6900000000000000000000000000000000011 -S3156003E6A00000000000000000000000000000000001 -S3156003E6B000000000000000000000000000000000F1 -S3156003E6C000000000000000000000000000000000E1 -S3156003E6D000000000000000000000000000000000D1 -S3156003E6E000000000000000000000000000000000C1 -S3156003E6F000000000000000000000000000000000B1 -S3156003E70000000000000000000000000000000000A0 -S3156003E7100000000000000000000000000000000090 -S3156003E7200000000000000000000000000000000080 -S3156003E7300000000000000000000000000000000070 -S3156003E7400000000000000000000000000000000060 -S3156003E7500000000000000000000000000000000050 -S3156003E7600000000000000000000000000000000040 -S3156003E7700000000000000000000000000000000030 -S3156003E7800000000000000000000000000000000020 -S3156003E7900000000000000000000000000000000010 -S3156003E7A00000000000000000000000000000000000 -S3156003E7B000000000000000000000000000000000F0 -S3156003E7C000000000000000000000000000000000E0 -S3156003E7D000000000000000000000000000000000D0 -S3156003E7E000000000000000000000000000000000C0 -S3156003E7F000000000000000000000000000000000B0 -S3156003E800000000000000000000000000000000009F -S3156003E810000000000000000000000000000000008F -S3156003E820000000000000000000000000000000007F -S3156003E830000000000000000000000000000000006F -S3156003E840000000000000000000000000000000005F -S3156003E850000000000000000000000000000000004F -S3156003E860000000000000000000000000000000003F -S3156003E870000000000000000000000000000000002F -S3156003E880000000000000000000000000000000001F -S3156003E890000000000000000000000000000000000F -S3156003E8A000000000000000000000000000000000FF -S3156003E8B000000000000000000000000000000000EF -S3156003E8C000000000000000000000000000000000DF -S3156003E8D000000000000000000000000000000000CF -S3156003E8E000000000000000000000000000000000BF -S3156003E8F000000000000000000000000000000000AF -S3156003E900000000000000000000000000000000009E -S3156003E910000000000000000000000000000000008E -S3156003E920000000000000000000000000000000007E -S3156003E930000000000000000000000000000000006E -S3156003E940000000000000000000000000000000005E -S3156003E950000000000000000000000000000000004E -S3156003E960000000000000000000000000000000003E -S3156003E970000000000000000000000000000000002E -S3156003E980000000000000000000000000000000001E -S3156003E990000000000000000000000000000000000E -S3156003E9A000000000000000000000000000000000FE -S3156003E9B000000000000000000000000000000000EE -S3156003E9C000000000000000000000000000000000DE -S3156003E9D000000000000000000000000000000000CE -S3156003E9E000000000000000000000000000000000BE -S3156003E9F000000000000000000000000000000000AE -S3156003EA00000000000000000000000000000000009D -S3156003EA10000000000000000000000000000000008D -S3156003EA20000000000000000000000000000000007D -S3156003EA30000000000000000000000000000000006D -S3156003EA40000000000000000000000000000000005D -S3156003EA50000000000000000000000000000000004D -S3156003EA60000000000000000000000000000000003D -S3156003EA70000000000000000000000000000000002D -S3156003EA80000000000000000000000000000000001D -S3156003EA90000000000000000000000000000000000D -S3156003EAA000000000000000000000000000000000FD -S3156003EAB000000000000000000000000000000000ED -S3156003EAC000000000000000000000000000000000DD -S3156003EAD000000000000000000000000000000000CD -S3156003EAE000000000000000000000000000000000BD -S3156003EAF000000000000000000000000000000000AD -S3156003EB00000000000000000000000000000000009C -S3156003EB10000000000000000000000000000000008C -S3156003EB20000000000000000000000000000000007C -S3156003EB30000000000000000000000000000000006C -S3156003EB40000000000000000000000000000000005C -S3156003EB50000000000000000000000000000000004C -S3156003EB60000000000000000000000000000000003C -S3156003EB70000000000000000000000000000000002C -S3156003EB80000000000000000000000000000000001C -S3156003EB90000000000000000000000000000000000C -S3156003EBA000000000000000000000000000000000FC -S3156003EBB000000000000000000000000000000000EC -S3156003EBC000000000000000000000000000000000DC -S3156003EBD000000000000000000000000000000000CC -S3156003EBE000000000000000000000000000000000BC -S3156003EBF000000000000000000000000000000000AC -S3156003EC00000000000000000000000000000000009B -S3156003EC10000000000000000000000000000000008B -S3156003EC20000000000000000000000000000000007B -S3156003EC30000000000000000000000000000000006B -S3156003EC40000000000000000000000000000000005B -S3156003EC50000000000000000000000000000000004B -S3156003EC60000000000000000000000000000000003B -S3156003EC70000000000000000000000000000000002B -S3156003EC80000000000000000000000000000000001B -S3156003EC90000000000000000000000000000000000B -S3156003ECA000000000000000000000000000000000FB -S3156003ECB000000000000000000000000000000000EB -S3156003ECC000000000000000000000000000000000DB -S3156003ECD000000000000000000000000000000000CB -S3156003ECE000000000000000000000000000000000BB -S3156003ECF000000000000000000000000000000000AB -S3156003ED00000000000000000000000000000000009A -S3156003ED10000000000000000000000000000000008A -S3156003ED20000000000000000000000000000000007A -S3156003ED30000000000000000000000000000000006A -S3156003ED40000000000000000000000000000000005A -S3156003ED50000000000000000000000000000000004A -S3156003ED60000000000000000000000000000000003A -S3156003ED70000000000000000000000000000000002A -S3156003ED80000000000000000000000000000000001A -S3156003ED90000000000000000000000000000000000A -S3156003EDA000000000000000000000000000000000FA -S3156003EDB000000000000000000000000000000000EA -S3156003EDC000000000000000000000000000000000DA -S3156003EDD000000000000000000000000000000000CA -S3156003EDE000000000000000000000000000000000BA -S3156003EDF000000000000000000000000000000000AA -S3156003EE000000000000000000000000000000000099 -S3156003EE100000000000000000000000000000000089 -S3156003EE200000000000000000000000000000000079 -S3156003EE300000000000000000000000000000000069 -S3156003EE400000000000000000000000000000000059 -S3156003EE500000000000000000000000000000000049 -S3156003EE600000000000000000000000000000000039 -S3156003EE700000000000000000000000000000000029 -S3156003EE800000000000000000000000000000000019 -S3156003EE900000000000000000000000000000000009 -S3156003EEA000000000000000000000000000000000F9 -S3156003EEB000000000000000000000000000000000E9 -S3156003EEC000000000000000000000000000000000D9 -S3156003EED000000000000000000000000000000000C9 -S3156003EEE000000000000000000000000000000000B9 -S3156003EEF000000000000000000000000000000000A9 -S3156003EF000000000000000000000000000000000098 -S3156003EF100000000000000000000000000000000088 -S3156003EF200000000000000000000000000000000078 -S3156003EF300000000000000000000000000000000068 -S3156003EF400000000000000000000000000000000058 -S3156003EF500000000000000000000000000000000048 -S3156003EF600000000000000000000000000000000038 -S3156003EF700000000000000000000000000000000028 -S3156003EF800000000000000000000000000000000018 -S3156003EF900000000000000000000000000000000008 -S3156003EFA000000000000000000000000000000000F8 -S3156003EFB000000000000000000000000000000000E8 -S3156003EFC000000000000000000000000000000000D8 -S3156003EFD000000000000000000000000000000000C8 -S3156003EFE000000000000000000000000000000000B8 -S3156003EFF000000000000000000000000000000000A8 -S3156003F0000000000000000000000000000000000097 -S3156003F0100000000000000000000000000000000087 -S3156003F0200000000000000000000000000000000077 -S3156003F0300000000000000000000000000000000067 -S3156003F0400000000000000000000000000000000057 -S3156003F0500000000000000000000000000000000047 -S3156003F0600000000000000000000000000000000037 -S3156003F0700000000000000000000000000000000027 -S3156003F0800000000000000000000000000000000017 -S3156003F0900000000000000000000000000000000007 -S3156003F0A000000000000000000000000000000000F7 -S3156003F0B000000000000000000000000000000000E7 -S3156003F0C000000000000000000000000000000000D7 -S3156003F0D000000000000000000000000000000000C7 -S3156003F0E000000000000000000000000000000000B7 -S3156003F0F000000000000000000000000000000000A7 -S3156003F1000000000000000000000000000000000096 -S3156003F1100000000000000000000000000000000086 -S3156003F1200000000000000000000000000000000076 -S3156003F1300000000000000000000000000000000066 -S3156003F1400000000000000000000000000000000056 -S3156003F1500000000000000000000000000000000046 -S3156003F1600000000000000000000000000000000036 -S3156003F1700000000000000000000000000000000026 -S3156003F1800000000000000000000000000000000016 -S3156003F1900000000000000000000000000000000006 -S3156003F1A000000000000000000000000000000000F6 -S3156003F1B000000000000000000000000000000000E6 -S3156003F1C000000000000000000000000000000000D6 -S3156003F1D000000000000000000000000000000000C6 -S3156003F1E000000000000000000000000000000000B6 -S3156003F1F000000000000000000000000000000000A6 -S3156003F2000000000000000000000000000000000095 -S3156003F2100000000000000000000000000000000085 -S3156003F2200000000000000000000000000000000075 -S3156003F2300000000000000000000000000000000065 -S3156003F2400000000000000000000000000000000055 -S3156003F2500000000000000000000000000000000045 -S3156003F2600000000000000000000000000000000035 -S3156003F2700000000000000000000000000000000025 -S3156003F2800000000000000000000000000000000015 -S3156003F2900000000000000000000000000000000005 -S3156003F2A000000000000000000000000000000000F5 -S3156003F2B000000000000000000000000000000000E5 -S3156003F2C000000000000000000000000000000000D5 -S3156003F2D000000000000000000000000000000000C5 -S3156003F2E000000000000000000000000000000000B5 -S3156003F2F000000000000000000000000000000000A5 -S3156003F3000000000000000000000000000000000094 -S3156003F3100000000000000000000000000000000084 -S3156003F3200000000000000000000000000000000074 -S3156003F3300000000000000000000000000000000064 -S3156003F3400000000000000000000000000000000054 -S3156003F3500000000000000000000000000000000044 -S3156003F3600000000000000000000000000000000034 -S3156003F3700000000000000000000000000000000024 -S3156003F3800000000000000000000000000000000014 -S3156003F3900000000000000000000000000000000004 -S3156003F3A000000000000000000000000000000000F4 -S3156003F3B000000000000000000000000000000000E4 -S3156003F3C000000000000000000000000000000000D4 -S3156003F3D000000000000000000000000000000000C4 -S3156003F3E000000000000000000000000000000000B4 -S3156003F3F000000000000000000000000000000000A4 -S3156003F4000000000000000000000000000000000093 -S3156003F4100000000000000000000000000000000083 -S3156003F4200000000000000000000000000000000073 -S3156003F4300000000000000000000000000000000063 -S3156003F4400000000000000000000000000000000053 -S3156003F4500000000000000000000000000000000043 -S3156003F4600000000000000000000000000000000033 -S3156003F4700000000000000000000000000000000023 -S3156003F4800000000000000000000000000000000013 -S3156003F4900000000000000000000000000000000003 -S3156003F4A000000000000000000000000000000000F3 -S3156003F4B000000000000000000000000000000000E3 -S3156003F4C000000000000000000000000000000000D3 -S3156003F4D000000000000000000000000000000000C3 -S3156003F4E000000000000000000000000000000000B3 -S3156003F4F000000000000000000000000000000000A3 -S3156003F5000000000000000000000000000000000092 -S3156003F5100000000000000000000000000000000082 -S3156003F5200000000000000000000000000000000072 -S3156003F5300000000000000000000000000000000062 -S3156003F5400000000000000000000000000000000052 -S3156003F5500000000000000000000000000000000042 -S3156003F5600000000000000000000000000000000032 -S3156003F5700000000000000000000000000000000022 -S3156003F5800000000000000000000000000000000012 -S3156003F5900000000000000000000000000000000002 -S3156003F5A000000000000000000000000000000000F2 -S3156003F5B000000000000000000000000000000000E2 -S3156003F5C000000000000000000000000000000000D2 -S3156003F5D000000000000000000000000000000000C2 -S3156003F5E000000000000000000000000000000000B2 -S3156003F5F000000000000000000000000000000000A2 -S3156003F6000000000000000000000000000000000091 -S3156003F6100000000000000000000000000000000081 -S3156003F6200000000000000000000000000000000071 -S3156003F6300000000000000000000000000000000061 -S3156003F6400000000000000000000000000000000051 -S3156003F6500000000000000000000000000000000041 -S3156003F6600000000000000000000000000000000031 -S3156003F6700000000000000000000000000000000021 -S3156003F6800000000000000000000000000000000011 -S3156003F6900000000000000000000000000000000001 -S3156003F6A000000000000000000000000000000000F1 -S3156003F6B000000000000000000000000000000000E1 -S3156003F6C000000000000000000000000000000000D1 -S3156003F6D000000000000000000000000000000000C1 -S3156003F6E000000000000000000000000000000000B1 -S3156003F6F000000000000000000000000000000000A1 -S3156003F7000000000000000000000000000000000090 -S3156003F7100000000000000000000000000000000080 -S3156003F7200000000000000000000000000000000070 -S3156003F7300000000000000000000000000000000060 -S3156003F7400000000000000000000000000000000050 -S3156003F7500000000000000000000000000000000040 -S3156003F7600000000000000000000000000000000030 -S3156003F7700000000000000000000000000000000020 -S3156003F7800000000000000000000000000000000010 -S3156003F7900000000000000000000000000000000000 -S3156003F7A000000000000000000000000000000000F0 -S3156003F7B000000000000000000000000000000000E0 -S3156003F7C000000000000000000000000000000000D0 -S3156003F7D000000000000000000000000000000000C0 -S3156003F7E000000000000000000000000000000000B0 -S3156003F7F000000000000000000000000000000000A0 -S3156003F800000000000000000000000000000000008F -S3156003F810000000000000000000000000000000007F -S3156003F820000000000000000000000000000000006F -S3156003F830000000000000000000000000000000005F -S3156003F840000000000000000000000000000000004F -S3156003F850000000000000000000000000000000003F -S3156003F860000000000000000000000000000000002F -S3156003F870000000000000000000000000000000001F -S3156003F880000000000000000000000000000000000F -S3156003F89000000000000000000000000000000000FF -S3156003F8A000000000000000000000000000000000EF -S3156003F8B000000000000000000000000000000000DF -S3156003F8C000000000000000000000000000000000CF -S3156003F8D000000000000000000000000000000000BF -S3156003F8E000000000000000000000000000000000AF -S3156003F8F0000000000000000000000000000000009F -S3156003F900000000000000000000000000000000008E -S3156003F910000000000000000000000000000000007E -S3156003F920000000000000000000000000000000006E -S3156003F930000000000000000000000000000000005E -S3156003F940000000000000000000000000000000004E -S3156003F950000000000000000000000000000000003E -S3156003F960000000000000000000000000000000002E -S3156003F970000000000000000000000000000000001E -S3156003F980000000000000000000000000000000000E -S3156003F99000000000000000000000000000000000FE -S3156003F9A000000000000000000000000000000000EE -S3156003F9B000000000000000000000000000000000DE -S3156003F9C000000000000000000000000000000000CE -S3156003F9D000000000000000000000000000000000BE -S3156003F9E000000000000000000000000000000000AE -S3156003F9F0000000000000000000000000000000009E -S3156003FA00000000000000000000000000000000008D -S3156003FA10000000000000000000000000000000007D -S3156003FA20000000000000000000000000000000006D -S3156003FA30000000000000000000000000000000005D -S3156003FA40000000000000000000000000000000004D -S3156003FA50000000000000000000000000000000003D -S3156003FA60000000000000000000000000000000002D -S3156003FA70000000000000000000000000000000001D -S3156003FA80000000000000000000000000000000000D -S3156003FA9000000000000000000000000000000000FD -S3156003FAA000000000000000000000000000000000ED -S3156003FAB000000000000000000000000000000000DD -S3156003FAC000000000000000000000000000000000CD -S3156003FAD000000000000000000000000000000000BD -S3156003FAE000000000000000000000000000000000AD -S3156003FAF0000000000000000000000000000000009D -S3156003FB00000000000000000000000000000000008C -S3156003FB10000000000000000000000000000000007C -S3156003FB20000000000000000000000000000000006C -S3156003FB30000000000000000000000000000000005C -S3156003FB40000000000000000000000000000000004C -S3156003FB50000000000000000000000000000000003C -S3156003FB60000000000000000000000000000000002C -S3156003FB70000000000000000000000000000000001C -S3156003FB80000000000000000000000000000000000C -S3156003FB9000000000000000000000000000000000FC -S3156003FBA000000000000000000000000000000000EC -S3156003FBB000000000000000000000000000000000DC -S3156003FBC000000000000000000000000000000000CC -S3156003FBD000000000000000000000000000000000BC -S3156003FBE000000000000000000000000000000000AC -S3156003FBF0000000000000000000000000000000009C -S3156003FC00000000000000000000000000000000008B -S3156003FC10000000000000000000000000000000007B -S3156003FC20000000000000000000000000000000006B -S3156003FC30000000000000000000000000000000005B -S3156003FC40000000000000000000000000000000004B -S3156003FC50000000000000000000000000000000003B -S3156003FC60000000000000000000000000000000002B -S3156003FC70000000000000000000000000000000001B -S3156003FC80000000000000000000000000000000000B -S3156003FC9000000000000000000000000000000000FB -S3156003FCA000000000000000000000000000000000EB -S3156003FCB000000000000000000000000000000000DB -S3156003FCC000000000000000000000000000000000CB -S3156003FCD000000000000000000000000000000000BB -S3156003FCE000000000000000000000000000000000AB -S3156003FCF0000000000000000000000000000000009B -S3156003FD00000000000000000000000000000000008A -S3156003FD10000000000000000000000000000000007A -S3156003FD20000000000000000000000000000000006A -S3156003FD30000000000000000000000000000000005A -S3156003FD40000000000000000000000000000000004A -S3156003FD50000000000000000000000000000000003A -S3156003FD60000000000000000000000000000000002A -S3156003FD70000000000000000000000000000000001A -S3156003FD80000000000000000000000000000000000A -S3156003FD9000000000000000000000000000000000FA -S3156003FDA000000000000000000000000000000000EA -S3156003FDB000000000000000000000000000000000DA -S3156003FDC000000000000000000000000000000000CA -S3156003FDD000000000000000000000000000000000BA -S3156003FDE000000000000000000000000000000000AA -S3156003FDF0000000000000000000000000000000009A -S3156003FE000000000000000000000000000000000089 -S3156003FE100000000000000000000000000000000079 -S3156003FE200000000000000000000000000000000069 -S3156003FE300000000000000000000000000000000059 -S3156003FE400000000000000000000000000000000049 -S3156003FE500000000000000000000000000000000039 -S3156003FE600000000000000000000000000000000029 -S3156003FE700000000000000000000000000000000019 -S3156003FE800000000000000000000000000000000009 -S3156003FE9000000000000000000000000000000000F9 -S3156003FEA000000000000000000000000000000000E9 -S3156003FEB000000000000000000000000000000000D9 -S3156003FEC000000000000000000000000000000000C9 -S3156003FED000000000000000000000000000000000B9 -S3156003FEE000000000000000000000000000000000A9 -S3156003FEF00000000000000000000000000000000099 -S3156003FF000000000000000000000000000000000088 -S3156003FF100000000000000000000000000000000078 -S3156003FF200000000000000000000000000000000068 -S3156003FF300000000000000000000000000000000058 -S3156003FF400000000000000000000000000000000048 -S3156003FF500000000000000000000000000000000038 -S3156003FF600000000000000000000000000000000028 -S3156003FF700000000000000000000000000000000018 -S3156003FF800000000000000000000000000000000008 -S3156003FF9000000000000000000000000000000000F8 -S3156003FFA000000000000000000000000000000000E8 -S3156003FFB000000000000000000000000000000000D8 -S3156003FFC000000000000000000000000000000000C8 -S3156003FFD000000000000000000000000000000000B8 -S3156003FFE000000000000000000000000000000000A8 -S3156003FFF00000000000000000000000000000000098 -S315600400000000000000000000000000000000000086 -S315600400100000000000000000000000000000000076 -S315600400200000000000000000000000000000000066 -S315600400300000000000000000000000000000000056 -S315600400400000000000000000000000000000000046 -S315600400500000000000000000000000000000000036 -S315600400600000000000000000000000000000000026 -S315600400700000000000000000000000000000000016 -S315600400800000000000000000000000000000000006 -S3156004009000000000000000000000000000000000F6 -S315600400A000000000000000000000000000000000E6 -S315600400B000000000000000000000000000000000D6 -S315600400C000000000000000000000000000000000C6 -S315600400D000000000000000000000000000000000B6 -S315600400E000000000000000000000000000000000A6 -S315600400F00000000000000000000000000000000096 -S315600401000000000000000000000000000000000085 -S315600401100000000000000000000000000000000075 -S315600401200000000000000000000000000000000065 -S315600401300000000000000000000000000000000055 -S315600401400000000000000000000000000000000045 -S315600401500000000000000000000000000000000035 -S315600401600000000000000000000000000000000025 -S315600401700000000000000000000000000000000015 -S315600401800000000000000000000000000000000005 -S3156004019000000000000000000000000000000000F5 -S315600401A000000000000000000000000000000000E5 -S315600401B000000000000000000000000000000000D5 -S315600401C000000000000000000000000000000000C5 -S315600401D000000000000000000000000000000000B5 -S315600401E000000000000000000000000000000000A5 -S315600401F00000000000000000000000000000000095 -S315600402000000000000000000000000000000000084 -S315600402100000000000000000000000000000000074 -S315600402200000000000000000000000000000000064 -S315600402300000000000000000000000000000000054 -S315600402400000000000000000000000000000000044 -S315600402500000000000000000000000000000000034 -S315600402600000000000000000000000000000000024 -S315600402700000000000000000000000000000000014 -S315600402800000000000000000000000000000000004 -S3156004029000000000000000000000000000000000F4 -S315600402A000000000000000000000000000000000E4 -S315600402B000000000000000000000000000000000D4 -S315600402C000000000000000000000000000000000C4 -S315600402D000000000000000000000000000000000B4 -S315600402E000000000000000000000000000000000A4 -S315600402F00000000000000000000000000000000094 -S315600403000000000000000000000000000000000083 -S315600403100000000000000000000000000000000073 -S315600403200000000000000000000000000000000063 -S315600403300000000000000000000000000000000053 -S315600403400000000000000000000000000000000043 -S315600403500000000000000000000000000000000033 -S315600403600000000000000000000000000000000023 -S315600403700000000000000000000000000000000013 -S315600403800000000000000000000000000000000003 -S3156004039000000000000000000000000000000000F3 -S315600403A000000000000000000000000000000000E3 -S315600403B000000000000000000000000000000000D3 -S315600403C000000000000000000000000000000000C3 -S315600403D000000000000000000000000000000000B3 -S315600403E000000000000000000000000000000000A3 -S315600403F00000000000000000000000000000000093 -S315600404000000000000000000000000000000000082 -S315600404100000000000000000000000000000000072 -S315600404200000000000000000000000000000000062 -S315600404300000000000000000000000000000000052 -S315600404400000000000000000000000000000000042 -S315600404500000000000000000000000000000000032 -S315600404600000000000000000000000000000000022 -S315600404700000000000000000000000000000000012 -S315600404800000000000000000000000000000000002 -S3156004049000000000000000000000000000000000F2 -S315600404A000000000000000000000000000000000E2 -S315600404B000000000000000000000000000000000D2 -S315600404C000000000000000000000000000000000C2 -S315600404D000000000000000000000000000000000B2 -S315600404E000000000000000000000000000000000A2 -S315600404F00000000000000000000000000000000092 -S315600405000000000000000000000000000000000081 -S315600405100000000000000000000000000000000071 -S315600405200000000000000000000000000000000061 -S315600405300000000000000000000000000000000051 -S315600405400000000000000000000000000000000041 -S315600405500000000000000000000000000000000031 -S315600405600000000000000000000000000000000021 -S315600405700000000000000000000000000000000011 -S315600405800000000000000000000000000000000001 -S3156004059000000000000000000000000000000000F1 -S315600405A000000000000000000000000000000000E1 -S315600405B000000000000000000000000000000000D1 -S315600405C000000000000000000000000000000000C1 -S315600405D000000000000000000000000000000000B1 -S315600405E000000000000000000000000000000000A1 -S315600405F00000000000000000000000000000000091 -S315600406000000000000000000000000000000000080 -S315600406100000000000000000000000000000000070 -S315600406200000000000000000000000000000000060 -S315600406300000000000000000000000000000000050 -S315600406400000000000000000000000000000000040 -S315600406500000000000000000000000000000000030 -S315600406600000000000000000000000000000000020 -S315600406700000000000000000000000000000000010 -S315600406800000000000000000000000000000000000 -S3156004069000000000000000000000000000000000F0 -S315600406A000000000000000000000000000000000E0 -S315600406B000000000000000000000000000000000D0 -S315600406C000000000000000000000000000000000C0 -S315600406D000000000000000000000000000000000B0 -S315600406E000000000000000000000000000000000A0 -S315600406F00000000000000000000000000000000090 -S31560040700000000000000000000000000000000007F -S31560040710000000000000000000000000000000006F -S31560040720000000000000000000000000000000005F -S31560040730000000000000000000000000000000004F -S31560040740000000000000000000000000000000003F -S31560040750000000000000000000000000000000002F -S31560040760000000000000000000000000000000001F -S31560040770000000000000000000000000000000000F -S3156004078000000000000000000000000000000000FF -S3156004079000000000000000000000000000000000EF -S315600407A000000000000000000000000000000000DF -S315600407B000000000000000000000000000000000CF -S315600407C000000000000000000000000000000000BF -S315600407D000000000000000000000000000000000AF -S315600407E0000000000000000000000000000000009F -S315600407F0000000000000000000000000000000008F -S31560040800000000000000000000000000000000007E -S31560040810000000000000000000000000000000006E -S31560040820000000000000000000000000000000005E -S31560040830000000000000000000000000000000004E -S31560040840000000000000000000000000000000003E -S31560040850000000000000000000000000000000002E -S31560040860000000000000000000000000000000001E -S31560040870000000000000000000000000000000000E -S3156004088000000000000000000000000000000000FE -S3156004089000000000000000000000000000000000EE -S315600408A000000000000000000000000000000000DE -S315600408B000000000000000000000000000000000CE -S315600408C000000000000000000000000000000000BE -S315600408D000000000000000000000000000000000AE -S315600408E0000000000000000000000000000000009E -S315600408F0000000000000000000000000000000008E -S31560040900000000000000000000000000000000007D -S31560040910000000000000000000000000000000006D -S31560040920000000000000000000000000000000005D -S31560040930000000000000000000000000000000004D -S31560040940000000000000000000000000000000003D -S31560040950000000000000000000000000000000002D -S31560040960000000000000000000000000000000001D -S31560040970000000000000000000000000000000000D -S3156004098000000000000000000000000000000000FD -S3156004099000000000000000000000000000000000ED -S315600409A000000000000000000000000000000000DD -S315600409B000000000000000000000000000000000CD -S315600409C000000000000000000000000000000000BD -S315600409D000000000000000000000000000000000AD -S315600409E0000000000000000000000000000000009D -S315600409F0000000000000000000000000000000008D -S31560040A00000000000000000000000000000000007C -S31560040A10000000000000000000000000000000006C -S31560040A20000000000000000000000000000000005C -S31560040A30000000000000000000000000000000004C -S31560040A40000000000000000000000000000000003C -S31560040A50000000000000000000000000000000002C -S31560040A60000000000000000000000000000000001C -S31560040A70000000000000000000000000000000000C -S31560040A8000000000000000000000000000000000FC -S31560040A9000000000000000000000000000000000EC -S31560040AA000000000000000000000000000000000DC -S31560040AB000000000000000000000000000000000CC -S31560040AC000000000000000000000000000000000BC -S31560040AD000000000000000000000000000000000AC -S31560040AE0000000000000000000000000000000009C -S31560040AF0000000000000000000000000000000008C -S31560040B00000000000000000000000000000000007B -S31560040B10000000000000000000000000000000006B -S31560040B20000000000000000000000000000000005B -S31560040B30000000000000000000000000000000004B -S31560040B40000000000000000000000000000000003B -S31560040B50000000000000000000000000000000002B -S31560040B60000000000000000000000000000000001B -S31560040B70000000000000000000000000000000000B -S31560040B8000000000000000000000000000000000FB -S31560040B9000000000000000000000000000000000EB -S31560040BA000000000000000000000000000000000DB -S31560040BB000000000000000000000000000000000CB -S31560040BC000000000000000000000000000000000BB -S31560040BD000000000000000000000000000000000AB -S31560040BE0000000000000000000000000000000009B -S31560040BF0000000000000000000000000000000008B -S31560040C00000000000000000000000000000000007A -S31560040C10000000000000000000000000000000006A -S31560040C20000000000000000000000000000000005A -S31560040C30000000000000000000000000000000004A -S31560040C40000000000000000000000000000000003A -S31560040C50000000000000000000000000000000002A -S31560040C60000000000000000000000000000000001A -S31560040C70000000000000000000000000000000000A -S31560040C8000000000000000000000000000000000FA -S31560040C9000000000000000000000000000000000EA -S31560040CA000000000000000000000000000000000DA -S31560040CB000000000000000000000000000000000CA -S31560040CC000000000000000000000000000000000BA -S31560040CD000000000000000000000000000000000AA -S31560040CE0000000000000000000000000000000009A -S31560040CF0000000000000000000000000000000008A -S31560040D000000000000000000000000000000000079 -S31560040D100000000000000000000000000000000069 -S31560040D200000000000000000000000000000000059 -S31560040D300000000000000000000000000000000049 -S31560040D400000000000000000000000000000000039 -S31560040D500000000000000000000000000000000029 -S31560040D600000000000000000000000000000000019 -S31560040D700000000000000000000000000000000009 -S31560040D8000000000000000000000000000000000F9 -S31560040D9000000000000000000000000000000000E9 -S31560040DA000000000000000000000000000000000D9 -S31560040DB000000000000000000000000000000000C9 -S31560040DC000000000000000000000000000000000B9 -S31560040DD000000000000000000000000000000000A9 -S31560040DE00000000000000000000000000000000099 -S31560040DF00000000000000000000000000000000089 -S31560040E000000000000000000000000000000000078 -S31560040E100000000000000000000000000000000068 -S31560040E200000000000000000000000000000000058 -S31560040E300000000000000000000000000000000048 -S31560040E400000000000000000000000000000000038 -S31560040E500000000000000000000000000000000028 -S31560040E600000000000000000000000000000000018 -S31560040E700000000000000000000000000000000008 -S31560040E8000000000000000000000000000000000F8 -S31560040E9000000000000000000000000000000000E8 -S31560040EA000000000000000000000000000000000D8 -S31560040EB000000000000000000000000000000000C8 -S31560040EC000000000000000000000000000000000B8 -S31560040ED000000000000000000000000000000000A8 -S31560040EE00000000000000000000000000000000098 -S31560040EF00000000000000000000000000000000088 -S31560040F000000000000000000000000000000000077 -S31560040F100000000000000000000000000000000067 -S31560040F200000000000000000000000000000000057 -S31560040F300000000000000000000000000000000047 -S31560040F400000000000000000000000000000000037 -S31560040F500000000000000000000000000000000027 -S31560040F600000000000000000000000000000000017 -S31560040F700000000000000000000000000000000007 -S31560040F8000000000000000000000000000000000F7 -S31560040F9000000000000000000000000000000000E7 -S31560040FA000000000000000000000000000000000D7 -S31560040FB000000000000000000000000000000000C7 -S31560040FC000000000000000000000000000000000B7 -S31560040FD000000000000000000000000000000000A7 -S31560040FE00000000000000000000000000000000097 -S31560040FF00000000000000000000000000000000087 -S315600410000000000000000000000000000000000076 -S315600410100000000000000000000000000000000066 -S315600410200000000000000000000000000000000056 -S315600410300000000000000000000000000000000046 -S315600410400000000000000000000000000000000036 -S315600410500000000000000000000000000000000026 -S315600410600000000000000000000000000000000016 -S315600410700000000000000000000000000000000006 -S3156004108000000000000000000000000000000000F6 -S3156004109000000000000000000000000000000000E6 -S315600410A000000000000000000000000000000000D6 -S315600410B000000000000000000000000000000000C6 -S315600410C000000000000000000000000000000000B6 -S315600410D000000000000000000000000000000000A6 -S315600410E00000000000000000000000000000000096 -S315600410F00000000000000000000000000000000086 -S315600411000000000000000000000000000000000075 -S315600411100000000000000000000000000000000065 -S315600411200000000000000000000000000000000055 -S315600411300000000000000000000000000000000045 -S315600411400000000000000000000000000000000035 -S315600411500000000000000000000000000000000025 -S315600411600000000000000000000000000000000015 -S315600411700000000000000000000000000000000005 -S3156004118000000000000000000000000000000000F5 -S3156004119000000000000000000000000000000000E5 -S315600411A000000000000000000000000000000000D5 -S315600411B000000000000000000000000000000000C5 -S315600411C000000000000000000000000000000000B5 -S315600411D000000000000000000000000000000000A5 -S315600411E00000000000000000000000000000000095 -S315600411F00000000000000000000000000000000085 -S315600412000000000000000000000000000000000074 -S315600412100000000000000000000000000000000064 -S315600412200000000000000000000000000000000054 -S315600412300000000000000000000000000000000044 -S315600412400000000000000000000000000000000034 -S315600412500000000000000000000000000000000024 -S315600412600000000000000000000000000000000014 -S315600412700000000000000000000000000000000004 -S3156004128000000000000000000000000000000000F4 -S3156004129000000000000000000000000000000000E4 -S315600412A000000000000000000000000000000000D4 -S315600412B000000000000000000000000000000000C4 -S315600412C000000000000000000000000000000000B4 -S315600412D000000000000000000000000000000000A4 -S315600412E00000000000000000000000000000000094 -S315600412F00000000000000000000000000000000084 -S315600413000000000000000000000000000000000073 -S315600413100000000000000000000000000000000063 -S315600413200000000000000000000000000000000053 -S315600413300000000000000000000000000000000043 -S315600413400000000000000000000000000000000033 -S315600413500000000000000000000000000000000023 -S315600413600000000000000000000000000000000013 -S315600413700000000000000000000000000000000003 -S3156004138000000000000000000000000000000000F3 -S3156004139000000000000000000000000000000000E3 -S315600413A000000000000000000000000000000000D3 -S315600413B000000000000000000000000000000000C3 -S315600413C000000000000000000000000000000000B3 -S315600413D000000000000000000000000000000000A3 -S315600413E00000000000000000000000000000000093 -S315600413F00000000000000000000000000000000083 -S315600414000000000000000000000000000000000072 -S315600414100000000000000000000000000000000062 -S315600414200000000000000000000000000000000052 -S315600414300000000000000000000000000000000042 -S315600414400000000000000000000000000000000032 -S315600414500000000000000000000000000000000022 -S315600414600000000000000000000000000000000012 -S315600414700000000000000000000000000000000002 -S3156004148000000000000000000000000000000000F2 -S3156004149000000000000000000000000000000000E2 -S315600414A000000000000000000000000000000000D2 -S315600414B000000000000000000000000000000000C2 -S315600414C000000000000000000000000000000000B2 -S315600414D000000000000000000000000000000000A2 -S315600414E00000000000000000000000000000000092 -S315600414F00000000000000000000000000000000082 -S315600415000000000000000000000000000000000071 -S315600415100000000000000000000000000000000061 -S315600415200000000000000000000000000000000051 -S315600415300000000000000000000000000000000041 -S315600415400000000000000000000000000000000031 -S315600415500000000000000000000000000000000021 -S315600415600000000000000000000000000000000011 -S315600415700000000000000000000000000000000001 -S3156004158000000000000000000000000000000000F1 -S3156004159000000000000000000000000000000000E1 -S315600415A000000000000000000000000000000000D1 -S315600415B000000000000000000000000000000000C1 -S315600415C000000000000000000000000000000000B1 -S315600415D000000000000000000000000000000000A1 -S315600415E00000000000000000000000000000000091 -S315600415F00000000000000000000000000000000081 -S315600416000000000000000000000000000000000070 -S315600416100000000000000000000000000000000060 -S315600416200000000000000000000000000000000050 -S315600416300000000000000000000000000000000040 -S315600416400000000000000000000000000000000030 -S315600416500000000000000000000000000000000020 -S315600416600000000000000000000000000000000010 -S315600416700000000000000000000000000000000000 -S3156004168000000000000000000000000000000000F0 -S3156004169000000000000000000000000000000000E0 -S315600416A000000000000000000000000000000000D0 -S315600416B000000000000000000000000000000000C0 -S315600416C000000000000000000000000000000000B0 -S315600416D000000000000000000000000000000000A0 -S315600416E00000000000000000000000000000000090 -S315600416F00000000000000000000000000000000080 -S31560041700000000000000000000000000000000006F -S31560041710000000000000000000000000000000005F -S31560041720000000000000000000000000000000004F -S31560041730000000000000000000000000000000003F -S31560041740000000000000000000000000000000002F -S31560041750000000000000000000000000000000001F -S31560041760000000000000000000000000000000000F -S3156004177000000000000000000000000000000000FF -S3156004178000000000000000000000000000000000EF -S3156004179000000000000000000000000000000000DF -S315600417A000000000000000000000000000000000CF -S315600417B000000000000000000000000000000000BF -S315600417C000000000000000000000000000000000AF -S315600417D0000000000000000000000000000000009F -S315600417E0000000000000000000000000000000008F -S315600417F0000000000000000000000000000000007F -S31560041800000000000000000000000000000000006E -S31560041810000000000000000000000000000000005E -S31560041820000000000000000000000000000000004E -S31560041830000000000000000000000000000000003E -S31560041840000000000000000000000000000000002E -S31560041850000000000000000000000000000000001E -S31560041860000000000000000000000000000000000E -S3156004187000000000000000000000000000000000FE -S3156004188000000000000000000000000000000000EE -S3156004189000000000000000000000000000000000DE -S315600418A000000000000000000000000000000000CE -S315600418B000000000000000000000000000000000BE -S315600418C000000000000000000000000000000000AE -S315600418D0000000000000000000000000000000009E -S315600418E0000000000000000000000000000000008E -S315600418F0000000000000000000000000000000007E -S31560041900000000000000000000000000000000006D -S31560041910000000000000000000000000000000005D -S31560041920000000000000000000000000000000004D -S31560041930000000000000000000000000000000003D -S31560041940000000000000000000000000000000002D -S31560041950000000000000000000000000000000001D -S31560041960000000000000000000000000000000000D -S3156004197000000000000000000000000000000000FD -S3156004198000000000000000000000000000000000ED -S3156004199000000000000000000000000000000000DD -S315600419A000000000000000000000000000000000CD -S315600419B000000000000000000000000000000000BD -S315600419C000000000000000000000000000000000AD -S315600419D0000000000000000000000000000000009D -S315600419E0000000000000000000000000000000008D -S315600419F0000000000000000000000000000000007D -S31560041A00000000000000000000000000000000006C -S31560041A10000000000000000000000000000000005C -S31560041A20000000000000000000000000000000004C -S31560041A30000000000000000000000000000000003C -S31560041A40000000000000000000000000000000002C -S31560041A50000000000000000000000000000000001C -S31560041A60000000000000000000000000000000000C -S31560041A7000000000000000000000000000000000FC -S31560041A8000000000000000000000000000000000EC -S31560041A9000000000000000000000000000000000DC -S31560041AA000000000000000000000000000000000CC -S31560041AB000000000000000000000000000000000BC -S31560041AC000000000000000000000000000000000AC -S31560041AD0000000000000000000000000000000009C -S31560041AE0000000000000000000000000000000008C -S31560041AF0000000000000000000000000000000007C -S31560041B00000000000000000000000000000000006B -S31560041B10000000000000000000000000000000005B -S31560041B20000000000000000000000000000000004B -S31560041B30000000000000000000000000000000003B -S31560041B40000000000000000000000000000000002B -S31560041B50000000000000000000000000000000001B -S31560041B60000000000000000000000000000000000B -S31560041B7000000000000000000000000000000000FB -S31560041B8000000000000000000000000000000000EB -S31560041B9000000000000000000000000000000000DB -S31560041BA000000000000000000000000000000000CB -S31560041BB000000000000000000000000000000000BB -S31560041BC000000000000000000000000000000000AB -S31560041BD0000000000000000000000000000000009B -S31560041BE0000000000000000000000000000000008B -S31560041BF0000000000000000000000000000000007B -S31560041C00000000000000000000000000000000006A -S31560041C10000000000000000000000000000000005A -S31560041C20000000000000000000000000000000004A -S31560041C30000000000000000000000000000000003A -S31560041C40000000000000000000000000000000002A -S31560041C50000000000000000000000000000000001A -S31560041C60000000000000000000000000000000000A -S31560041C7000000000000000000000000000000000FA -S31560041C8000000000000000000000000000000000EA -S31560041C9000000000000000000000000000000000DA -S31560041CA000000000000000000000000000000000CA -S31560041CB000000000000000000000000000000000BA -S31560041CC000000000000000000000000000000000AA -S31560041CD0000000000000000000000000000000009A -S31560041CE0000000000000000000000000000000008A -S31560041CF0000000000000000000000000000000007A -S31560041D000000000000000000000000000000000069 -S31560041D100000000000000000000000000000000059 -S31560041D200000000000000000000000000000000049 -S31560041D300000000000000000000000000000000039 -S31560041D400000000000000000000000000000000029 -S31560041D500000000000000000000000000000000019 -S31560041D600000000000000000000000000000000009 -S31560041D7000000000000000000000000000000000F9 -S31560041D8000000000000000000000000000000000E9 -S31560041D9000000000000000000000000000000000D9 -S31560041DA000000000000000000000000000000000C9 -S31560041DB000000000000000000000000000000000B9 -S31560041DC000000000000000000000000000000000A9 -S31560041DD00000000000000000000000000000000099 -S31560041DE00000000000000000000000000000000089 -S31560041DF00000000000000000000000000000000079 -S31560041E000000000000000000000000000000000068 -S31560041E100000000000000000000000000000000058 -S31560041E200000000000000000000000000000000048 -S31560041E300000000000000000000000000000000038 -S31560041E400000000000000000000000000000000028 -S31560041E500000000000000000000000000000000018 -S31560041E600000000000000000000000000000000008 -S31560041E7000000000000000000000000000000000F8 -S31560041E8000000000000000000000000000000000E8 -S31560041E9000000000000000000000000000000000D8 -S31560041EA000000000000000000000000000000000C8 -S31560041EB000000000000000000000000000000000B8 -S31560041EC000000000000000000000000000000000A8 -S31560041ED00000000000000000000000000000000098 -S31560041EE00000000000000000000000000000000088 -S31560041EF00000000000000000000000000000000078 -S31560041F000000000000000000000000000000000067 -S31560041F100000000000000000000000000000000057 -S31560041F200000000000000000000000000000000047 -S31560041F300000000000000000000000000000000037 -S31560041F400000000000000000000000000000000027 -S31560041F500000000000000000000000000000000017 -S31560041F600000000000000000000000000000000007 -S31560041F7000000000000000000000000000000000F7 -S31560041F8000000000000000000000000000000000E7 -S31560041F9000000000000000000000000000000000D7 -S31560041FA000000000000000000000000000000000C7 -S31560041FB000000000000000000000000000000000B7 -S31560041FC000000000000000000000000000000000A7 -S31560041FD00000000000000000000000000000000097 -S31560041FE00000000000000000000000000000000087 -S31560041FF00000000000000000000000000000000077 -S315600420000000000000000000000000000000000066 -S315600420100000000000000000000000000000000056 -S315600420200000000000000000000000000000000046 -S315600420300000000000000000000000000000000036 -S315600420400000000000000000000000000000000026 -S315600420500000000000000000000000000000000016 -S315600420600000000000000000000000000000000006 -S3156004207000000000000000000000000000000000F6 -S3156004208000000000000000000000000000000000E6 -S3156004209000000000000000000000000000000000D6 -S315600420A000000000000000000000000000000000C6 -S315600420B000000000000000000000000000000000B6 -S315600420C000000000000000000000000000000000A6 -S315600420D00000000000000000000000000000000096 -S315600420E00000000000000000000000000000000086 -S315600420F00000000000000000000000000000000076 -S315600421000000000000000000000000000000000065 -S315600421100000000000000000000000000000000055 -S315600421200000000000000000000000000000000045 -S315600421300000000000000000000000000000000035 -S315600421400000000000000000000000000000000025 -S315600421500000000000000000000000000000000015 -S315600421600000000000000000000000000000000005 -S3156004217000000000000000000000000000000000F5 -S3156004218000000000000000000000000000000000E5 -S3156004219000000000000000000000000000000000D5 -S315600421A000000000000000000000000000000000C5 -S315600421B000000000000000000000000000000000B5 -S315600421C000000000000000000000000000000000A5 -S315600421D00000000000000000000000000000000095 -S315600421E00000000000000000000000000000000085 -S315600421F00000000000000000000000000000000075 -S315600422000000000000000000000000000000000064 -S315600422100000000000000000000000000000000054 -S315600422200000000000000000000000000000000044 -S315600422300000000000000000000000000000000034 -S315600422400000000000000000000000000000000024 -S315600422500000000000000000000000000000000014 -S315600422600000000000000000000000000000000004 -S3156004227000000000000000000000000000000000F4 -S3156004228000000000000000000000000000000000E4 -S3156004229000000000000000000000000000000000D4 -S315600422A000000000000000000000000000000000C4 -S315600422B000000000000000000000000000000000B4 -S315600422C000000000000000000000000000000000A4 -S315600422D00000000000000000000000000000000094 -S315600422E00000000000000000000000000000000084 -S315600422F00000000000000000000000000000000074 -S315600423000000000000000000000000000000000063 -S315600423100000000000000000000000000000000053 -S315600423200000000000000000000000000000000043 -S315600423300000000000000000000000000000000033 -S315600423400000000000000000000000000000000023 -S315600423500000000000000000000000000000000013 -S315600423600000000000000000000000000000000003 -S3156004237000000000000000000000000000000000F3 -S3156004238000000000000000000000000000000000E3 -S3156004239000000000000000000000000000000000D3 -S315600423A000000000000000000000000000000000C3 -S315600423B000000000000000000000000000000000B3 -S315600423C000000000000000000000000000000000A3 -S315600423D00000000000000000000000000000000093 -S315600423E00000000000000000000000000000000083 -S315600423F00000000000000000000000000000000073 -S315600424000000000000000000000000000000000062 -S315600424100000000000000000000000000000000052 -S315600424200000000000000000000000000000000042 -S315600424300000000000000000000000000000000032 -S315600424400000000000000000000000000000000022 -S315600424500000000000000000000000000000000012 -S315600424600000000000000000000000000000000002 -S3156004247000000000000000000000000000000000F2 -S3156004248000000000000000000000000000000000E2 -S3156004249000000000000000000000000000000000D2 -S315600424A000000000000000000000000000000000C2 -S315600424B000000000000000000000000000000000B2 -S315600424C000000000000000000000000000000000A2 -S315600424D00000000000000000000000000000000092 -S315600424E00000000000000000000000000000000082 -S315600424F00000000000000000000000000000000072 -S315600425000000000000000000000000000000000061 -S315600425100000000000000000000000000000000051 -S315600425200000000000000000000000000000000041 -S315600425300000000000000000000000000000000031 -S315600425400000000000000000000000000000000021 -S315600425500000000000000000000000000000000011 -S315600425600000000000000000000000000000000001 -S3156004257000000000000000000000000000000000F1 -S3156004258000000000000000000000000000000000E1 -S3156004259000000000000000000000000000000000D1 -S315600425A000000000000000000000000000000000C1 -S315600425B000000000000000000000000000000000B1 -S315600425C000000000000000000000000000000000A1 -S315600425D00000000000000000000000000000000091 -S315600425E00000000000000000000000000000000081 -S315600425F00000000000000000000000000000000071 -S315600426000000000000000000000000000000000060 -S315600426100000000000000000000000000000000050 -S315600426200000000000000000000000000000000040 -S315600426300000000000000000000000000000000030 -S315600426400000000000000000000000000000000020 -S315600426500000000000000000000000000000000010 -S315600426600000000000000000000000000000000000 -S3156004267000000000000000000000000000000000F0 -S3156004268000000000000000000000000000000000E0 -S3156004269000000000000000000000000000000000D0 -S315600426A000000000000000000000000000000000C0 -S315600426B000000000000000000000000000000000B0 -S315600426C000000000000000000000000000000000A0 -S315600426D00000000000000000000000000000000090 -S315600426E00000000000000000000000000000000080 -S315600426F00000000000000000000000000000000070 -S31560042700000000000000000000000000000000005F -S31560042710000000000000000000000000000000004F -S31560042720000000000000000000000000000000003F -S31560042730000000000000000000000000000000002F -S31560042740000000000000000000000000000000001F -S31560042750000000000000000000000000000000000F -S3156004276000000000000000000000000000000000FF -S3156004277000000000000000000000000000000000EF -S3156004278000000000000000000000000000000000DF -S3156004279000000000000000000000000000000000CF -S315600427A000000000000000000000000000000000BF -S315600427B000000000000000000000000000000000AF -S315600427C0000000000000000000000000000000009F -S315600427D0000000000000000000000000000000008F -S315600427E0000000000000000000000000000000007F -S315600427F0000000000000000000000000000000006F -S31560042800000000000000000000000000000000005E -S31560042810000000000000000000000000000000004E -S31560042820000000000000000000000000000000003E -S31560042830000000000000000000000000000000002E -S31560042840000000000000000000000000000000001E -S31560042850000000000000000000000000000000000E -S3156004286000000000000000000000000000000000FE -S3156004287000000000000000000000000000000000EE -S3156004288000000000000000000000000000000000DE -S3156004289000000000000000000000000000000000CE -S315600428A000000000000000000000000000000000BE -S315600428B000000000000000000000000000000000AE -S315600428C0000000000000000000000000000000009E -S315600428D0000000000000000000000000000000008E -S315600428E0000000000000000000000000000000007E -S315600428F0000000000000000000000000000000006E -S31560042900000000000000000000000000000000005D -S31560042910000000000000000000000000000000004D -S31560042920000000000000000000000000000000003D -S31560042930000000000000000000000000000000002D -S31560042940000000000000000000000000000000001D -S31560042950000000000000000000000000000000000D -S3156004296000000000000000000000000000000000FD -S3156004297000000000000000000000000000000000ED -S3156004298000000000000000000000000000000000DD -S3156004299000000000000000000000000000000000CD -S315600429A000000000000000000000000000000000BD -S315600429B000000000000000000000000000000000AD -S315600429C0000000000000000000000000000000009D -S315600429D0000000000000000000000000000000008D -S315600429E0000000000000000000000000000000007D -S315600429F0000000000000000000000000000000006D -S31560042A00000000000000000000000000000000005C -S31560042A10000000000000000000000000000000004C -S31560042A20000000000000000000000000000000003C -S31560042A30000000000000000000000000000000002C -S31560042A40000000000000000000000000000000001C -S31560042A50000000000000000000000000000000000C -S31560042A6000000000000000000000000000000000FC -S31560042A7000000000000000000000000000000000EC -S31560042A8000000000000000000000000000000000DC -S31560042A9000000000000000000000000000000000CC -S31560042AA000000000000000000000000000000000BC -S31560042AB000000000000000000000000000000000AC -S31560042AC0000000000000000000000000000000009C -S31560042AD0000000000000000000000000000000008C -S31560042AE0000000000000000000000000000000007C -S31560042AF0000000000000000000000000000000006C -S31560042B00000000000000000000000000000000005B -S31560042B10000000000000000000000000000000004B -S31560042B20000000000000000000000000000000003B -S31560042B30000000000000000000000000000000002B -S31560042B40000000000000000000000000000000001B -S31560042B50000000000000000000000000000000000B -S31560042B6000000000000000000000000000000000FB -S31560042B7000000000000000000000000000000000EB -S31560042B8000000000000000000000000000000000DB -S31560042B9000000000000000000000000000000000CB -S31560042BA000000000000000000000000000000000BB -S31560042BB000000000000000000000000000000000AB -S31560042BC0000000000000000000000000000000009B -S31560042BD0000000000000000000000000000000008B -S31560042BE0000000000000000000000000000000007B -S31560042BF0000000000000000000000000000000006B -S31560042C00000000000000000000000000000000005A -S31560042C10000000000000000000000000000000004A -S31560042C20000000000000000000000000000000003A -S31560042C30000000000000000000000000000000002A -S31560042C40000000000000000000000000000000001A -S31560042C50000000000000000000000000000000000A -S31560042C6000000000000000000000000000000000FA -S31560042C7000000000000000000000000000000000EA -S31560042C8000000000000000000000000000000000DA -S31560042C9000000000000000000000000000000000CA -S31560042CA000000000000000000000000000000000BA -S31560042CB000000000000000000000000000000000AA -S31560042CC0000000000000000000000000000000009A -S31560042CD0000000000000000000000000000000008A -S31560042CE0000000000000000000000000000000007A -S31560042CF0000000000000000000000000000000006A -S31560042D000000000000000000000000000000000059 -S31560042D100000000000000000000000000000000049 -S31560042D200000000000000000000000000000000039 -S31560042D300000000000000000000000000000000029 -S31560042D400000000000000000000000000000000019 -S31560042D500000000000000000000000000000000009 -S31560042D6000000000000000000000000000000000F9 -S31560042D7000000000000000000000000000000000E9 -S31560042D8000000000000000000000000000000000D9 -S31560042D9000000000000000000000000000000000C9 -S31560042DA000000000000000000000000000000000B9 -S31560042DB000000000000000000000000000000000A9 -S31560042DC00000000000000000000000000000000099 -S31560042DD00000000000000000000000000000000089 -S31560042DE00000000000000000000000000000000079 -S31560042DF00000000000000000000000000000000069 -S31560042E000000000000000000000000000000000058 -S31560042E100000000000000000000000000000000048 -S31560042E200000000000000000000000000000000038 -S31560042E300000000000000000000000000000000028 -S31560042E400000000000000000000000000000000018 -S31560042E500000000000000000000000000000000008 -S31560042E6000000000000000000000000000000000F8 -S31560042E7000000000000000000000000000000000E8 -S31560042E8000000000000000000000000000000000D8 -S31560042E9000000000000000000000000000000000C8 -S31560042EA000000000000000000000000000000000B8 -S31560042EB000000000000000000000000000000000A8 -S31560042EC00000000000000000000000000000000098 -S31560042ED00000000000000000000000000000000088 -S31560042EE00000000000000000000000000000000078 -S31560042EF00000000000000000000000000000000068 -S31560042F000000000000000000000000000000000057 -S31560042F100000000000000000000000000000000047 -S31560042F200000000000000000000000000000000037 -S31560042F300000000000000000000000000000000027 -S31560042F400000000000000000000000000000000017 -S31560042F500000000000000000000000000000000007 -S31560042F6000000000000000000000000000000000F7 -S31560042F7000000000000000000000000000000000E7 -S31560042F8000000000000000000000000000000000D7 -S31560042F9000000000000000000000000000000000C7 -S31560042FA000000000000000000000000000000000B7 -S31560042FB000000000000000000000000000000000A7 -S31560042FC00000000000000000000000000000000097 -S31560042FD00000000000000000000000000000000087 -S31560042FE00000000000000000000000000000000077 -S31560042FF00000000000000000000000000000000067 -S315600430000000000000000000000000000000000056 -S315600430100000000000000000000000000000000046 -S315600430200000000000000000000000000000000036 -S315600430300000000000000000000000000000000026 -S315600430400000000000000000000000000000000016 -S315600430500000000000000000000000000000000006 -S3156004306000000000000000000000000000000000F6 -S3156004307000000000000000000000000000000000E6 -S3156004308000000000000000000000000000000000D6 -S3156004309000000000000000000000000000000000C6 -S315600430A000000000000000000000000000000000B6 -S315600430B000000000000000000000000000000000A6 -S315600430C00000000000000000000000000000000096 -S315600430D00000000000000000000000000000000086 -S315600430E00000000000000000000000000000000076 -S315600430F00000000000000000000000000000000066 -S315600431000000000000000000000000000000000055 -S315600431100000000000000000000000000000000045 -S315600431200000000000000000000000000000000035 -S315600431300000000000000000000000000000000025 -S315600431400000000000000000000000000000000015 -S315600431500000000000000000000000000000000005 -S3156004316000000000000000000000000000000000F5 -S3156004317000000000000000000000000000000000E5 -S3156004318000000000000000000000000000000000D5 -S3156004319000000000000000000000000000000000C5 -S315600431A000000000000000000000000000000000B5 -S315600431B000000000000000000000000000000000A5 -S315600431C00000000000000000000000000000000095 -S315600431D00000000000000000000000000000000085 -S315600431E00000000000000000000000000000000075 -S315600431F00000000000000000000000000000000065 -S315600432000000000000000000000000000000000054 -S315600432100000000000000000000000000000000044 -S315600432200000000000000000000000000000000034 -S315600432300000000000000000000000000000000024 -S315600432400000000000000000000000000000000014 -S315600432500000000000000000000000000000000004 -S3156004326000000000000000000000000000000000F4 -S3156004327000000000000000000000000000000000E4 -S3156004328000000000000000000000000000000000D4 -S3156004329000000000000000000000000000000000C4 -S315600432A000000000000000000000000000000000B4 -S315600432B000000000000000000000000000000000A4 -S315600432C00000000000000000000000000000000094 -S315600432D00000000000000000000000000000000084 -S315600432E00000000000000000000000000000000074 -S315600432F00000000000000000000000000000000064 -S315600433000000000000000000000000000000000053 -S315600433100000000000000000000000000000000043 -S315600433200000000000000000000000000000000033 -S315600433300000000000000000000000000000000023 -S315600433400000000000000000000000000000000013 -S315600433500000000000000000000000000000000003 -S3156004336000000000000000000000000000000000F3 -S3156004337000000000000000000000000000000000E3 -S3156004338000000000000000000000000000000000D3 -S3156004339000000000000000000000000000000000C3 -S315600433A000000000000000000000000000000000B3 -S315600433B000000000000000000000000000000000A3 -S315600433C00000000000000000000000000000000093 -S315600433D00000000000000000000000000000000083 -S315600433E00000000000000000000000000000000073 -S315600433F00000000000000000000000000000000063 -S315600434000000000000000000000000000000000052 -S315600434100000000000000000000000000000000042 -S315600434200000000000000000000000000000000032 -S315600434300000000000000000000000000000000022 -S315600434400000000000000000000000000000000012 -S315600434500000000000000000000000000000000002 -S3156004346000000000000000000000000000000000F2 -S3156004347000000000000000000000000000000000E2 -S3156004348000000000000000000000000000000000D2 -S3156004349000000000000000000000000000000000C2 -S315600434A000000000000000000000000000000000B2 -S315600434B000000000000000000000000000000000A2 -S315600434C00000000000000000000000000000000092 -S315600434D00000000000000000000000000000000082 -S315600434E00000000000000000000000000000000072 -S315600434F00000000000000000000000000000000062 -S315600435000000000000000000000000000000000051 -S315600435100000000000000000000000000000000041 -S315600435200000000000000000000000000000000031 -S315600435300000000000000000000000000000000021 -S315600435400000000000000000000000000000000011 -S315600435500000000000000000000000000000000001 -S3156004356000000000000000000000000000000000F1 -S3156004357000000000000000000000000000000000E1 -S3156004358000000000000000000000000000000000D1 -S3156004359000000000000000000000000000000000C1 -S315600435A000000000000000000000000000000000B1 -S315600435B000000000000000000000000000000000A1 -S315600435C00000000000000000000000000000000091 -S315600435D00000000000000000000000000000000081 -S315600435E00000000000000000000000000000000071 -S315600435F00000000000000000000000000000000061 -S315600436000000000000000000000000000000000050 -S315600436100000000000000000000000000000000040 -S315600436200000000000000000000000000000000030 -S315600436300000000000000000000000000000000020 -S315600436400000000000000000000000000000000010 -S315600436500000000000000000000000000000000000 -S3156004366000000000000000000000000000000000F0 -S3156004367000000000000000000000000000000000E0 -S3156004368000000000000000000000000000000000D0 -S3156004369000000000000000000000000000000000C0 -S315600436A000000000000000000000000000000000B0 -S315600436B000000000000000000000000000000000A0 -S315600436C00000000000000000000000000000000090 -S315600436D00000000000000000000000000000000080 -S315600436E00000000000000000000000000000000070 -S315600436F00000000000000000000000000000000060 -S31560043700000000000000000000000000000000004F -S31560043710000000000000000000000000000000003F -S31560043720000000000000000000000000000000002F -S31560043730000000000000000000000000000000001F -S31560043740000000000000000000000000000000000F -S3156004375000000000000000000000000000000000FF -S3156004376000000000000000000000000000000000EF -S3156004377000000000000000000000000000000000DF -S3156004378000000000000000000000000000000000CF -S3156004379000000000000000000000000000000000BF -S315600437A000000000000000000000000000000000AF -S315600437B0000000000000000000000000000000009F -S315600437C0000000000000000000000000000000008F -S315600437D0000000000000000000000000000000007F -S315600437E0000000000000000000000000000000006F -S315600437F0000000000000000000000000000000005F -S31560043800000000000000000000000000000000004E -S31560043810000000000000000000000000000000003E -S31560043820000000000000000000000000000000002E -S31560043830000000000000000000000000000000001E -S31560043840000000000000000000000000000000000E -S3156004385000000000000000000000000000000000FE -S3156004386000000000000000000000000000000000EE -S3156004387000000000000000000000000000000000DE -S3156004388000000000000000000000000000000000CE -S3156004389000000000000000000000000000000000BE -S315600438A000000000000000000000000000000000AE -S315600438B0000000000000000000000000000000009E -S315600438C0000000000000000000000000000000008E -S315600438D0000000000000000000000000000000007E -S315600438E0000000000000000000000000000000006E -S315600438F0000000000000000000000000000000005E -S31560043900000000000000000000000000000000004D -S31560043910000000000000000000000000000000003D -S31560043920000000000000000000000000000000002D -S31560043930000000000000000000000000000000001D -S31560043940000000000000000000000000000000000D -S3156004395000000000000000000000000000000000FD -S3156004396000000000000000000000000000000000ED -S3156004397000000000000000000000000000000000DD -S3156004398000000000000000000000000000000000CD -S3156004399000000000000000000000000000000000BD -S315600439A000000000000000000000000000000000AD -S315600439B0000000000000000000000000000000009D -S315600439C0000000000000000000000000000000008D -S315600439D0000000000000000000000000000000007D -S315600439E0000000000000000000000000000000006D -S315600439F0000000000000000000000000000000005D -S31560043A00000000000000000000000000000000004C -S31560043A10000000000000000000000000000000003C -S31560043A20000000000000000000000000000000002C -S31560043A30000000000000000000000000000000001C -S31560043A40000000000000000000000000000000000C -S31560043A5000000000000000000000000000000000FC -S31560043A6000000000000000000000000000000000EC -S31560043A7000000000000000000000000000000000DC -S31560043A8000000000000000000000000000000000CC -S31560043A9000000000000000000000000000000000BC -S31560043AA000000000000000000000000000000000AC -S31560043AB0000000000000000000000000000000009C -S31560043AC0000000000000000000000000000000008C -S31560043AD0000000000000000000000000000000007C -S31560043AE0000000000000000000000000000000006C -S31560043AF0000000000000000000000000000000005C -S31560043B00000000000000000000000000000000004B -S31560043B10000000000000000000000000000000003B -S31560043B20000000000000000000000000000000002B -S31560043B30000000000000000000000000000000001B -S31560043B40000000000000000000000000000000000B -S31560043B5000000000000000000000000000000000FB -S31560043B6000000000000000000000000000000000EB -S31560043B7000000000000000000000000000000000DB -S31560043B8000000000000000000000000000000000CB -S31560043B9000000000000000000000000000000000BB -S31560043BA000000000000000000000000000000000AB -S31560043BB0000000000000000000000000000000009B -S31560043BC0000000000000000000000000000000008B -S31560043BD0000000000000000000000000000000007B -S31560043BE0000000000000000000000000000000006B -S31560043BF0000000000000000000000000000000005B -S31560043C00000000000000000000000000000000004A -S31560043C10000000000000000000000000000000003A -S31560043C20000000000000000000000000000000002A -S31560043C30000000000000000000000000000000001A -S31560043C40000000000000000000000000000000000A -S31560043C5000000000000000000000000000000000FA -S31560043C6000000000000000000000000000000000EA -S31560043C7000000000000000000000000000000000DA -S31560043C8000000000000000000000000000000000CA -S31560043C9000000000000000000000000000000000BA -S31560043CA000000000000000000000000000000000AA -S31560043CB0000000000000000000000000000000009A -S31560043CC0000000000000000000000000000000008A -S31560043CD0000000000000000000000000000000007A -S31560043CE0000000000000000000000000000000006A -S31560043CF0000000000000000000000000000000005A -S31560043D000000000000000000000000000000000049 -S31560043D100000000000000000000000000000000039 -S31560043D200000000000000000000000000000000029 -S31560043D300000000000000000000000000000000019 -S31560043D400000000000000000000000000000000009 -S31560043D5000000000000000000000000000000000F9 -S31560043D6000000000000000000000000000000000E9 -S31560043D7000000000000000000000000000000000D9 -S31560043D8000000000000000000000000000000000C9 -S31560043D9000000000000000000000000000000000B9 -S31560043DA000000000000000000000000000000000A9 -S31560043DB00000000000000000000000000000000099 -S31560043DC00000000000000000000000000000000089 -S31560043DD00000000000000000000000000000000079 -S31560043DE00000000000000000000000000000000069 -S31560043DF00000000000000000000000000000000059 -S31560043E000000000000000000000000000000000048 -S31560043E100000000000000000000000000000000038 -S31560043E200000000000000000000000000000000028 -S31560043E300000000000000000000000000000000018 -S31560043E400000000000000000000000000000000008 -S31560043E5000000000000000000000000000000000F8 -S31560043E6000000000000000000000000000000000E8 -S31560043E7000000000000000000000000000000000D8 -S31560043E8000000000000000000000000000000000C8 -S31560043E9000000000000000000000000000000000B8 -S31560043EA000000000000000000000000000000000A8 -S31560043EB00000000000000000000000000000000098 -S31560043EC00000000000000000000000000000000088 -S31560043ED00000000000000000000000000000000078 -S31560043EE00000000000000000000000000000000068 -S31560043EF00000000000000000000000000000000058 -S31560043F000000000000000000000000000000000047 -S31560043F100000000000000000000000000000000037 -S31560043F200000000000000000000000000000000027 -S31560043F300000000000000000000000000000000017 -S31560043F400000000000000000000000000000000007 -S31560043F5000000000000000000000000000000000F7 -S31560043F6000000000000000000000000000000000E7 -S31560043F7000000000000000000000000000000000D7 -S31560043F8000000000000000000000000000000000C7 -S31560043F9000000000000000000000000000000000B7 -S31560043FA000000000000000000000000000000000A7 -S31560043FB00000000000000000000000000000000097 -S31560043FC00000000000000000000000000000000087 -S31560043FD00000000000000000000000000000000077 -S31560043FE00000000000000000000000000000000067 -S31560043FF00000000000000000000000000000000057 -S315600440000000000000000000000000000000000046 -S315600440100000000000000000000000000000000036 -S315600440200000000000000000000000000000000026 -S315600440300000000000000000000000000000000016 -S315600440400000000000000000000000000000000006 -S3156004405000000000000000000000000000000000F6 -S3156004406000000000000000000000000000000000E6 -S3156004407000000000000000000000000000000000D6 -S3156004408000000000000000000000000000000000C6 -S3156004409000000000000000000000000000000000B6 -S315600440A000000000000000000000000000000000A6 -S315600440B00000000000000000000000000000000096 -S315600440C00000000000000000000000000000000086 -S315600440D00000000000000000000000000000000076 -S315600440E00000000000000000000000000000000066 -S315600440F00000000000000000000000000000000056 -S315600441000000000000000000000000000000000045 -S315600441100000000000000000000000000000000035 -S315600441200000000000000000000000000000000025 -S315600441300000000000000000000000000000000015 -S315600441400000000000000000000000000000000005 -S3156004415000000000000000000000000000000000F5 -S3156004416000000000000000000000000000000000E5 -S3156004417000000000000000000000000000000000D5 -S3156004418000000000000000000000000000000000C5 -S3156004419000000000000000000000000000000000B5 -S315600441A000000000000000000000000000000000A5 -S315600441B00000000000000000000000000000000095 -S315600441C00000000000000000000000000000000085 -S315600441D00000000000000000000000000000000075 -S315600441E00000000000000000000000000000000065 -S315600441F00000000000000000000000000000000055 -S315600442000000000000000000000000000000000044 -S315600442100000000000000000000000000000000034 -S315600442200000000000000000000000000000000024 -S315600442300000000000000000000000000000000014 -S315600442400000000000000000000000000000000004 -S3156004425000000000000000000000000000000000F4 -S3156004426000000000000000000000000000000000E4 -S3156004427000000000000000000000000000000000D4 -S3156004428000000000000000000000000000000000C4 -S3156004429000000000000000000000000000000000B4 -S315600442A000000000000000000000000000000000A4 -S315600442B00000000000000000000000000000000094 -S315600442C00000000000000000000000000000000084 -S315600442D00000000000000000000000000000000074 -S315600442E00000000000000000000000000000000064 -S315600442F00000000000000000000000000000000054 -S315600443000000000000000000000000000000000043 -S315600443100000000000000000000000000000000033 -S315600443200000000000000000000000000000000023 -S315600443300000000000000000000000000000000013 -S315600443400000000000000000000000000000000003 -S3156004435000000000000000000000000000000000F3 -S3156004436000000000000000000000000000000000E3 -S3156004437000000000000000000000000000000000D3 -S3156004438000000000000000000000000000000000C3 -S3156004439000000000000000000000000000000000B3 -S315600443A000000000000000000000000000000000A3 -S315600443B00000000000000000000000000000000093 -S315600443C00000000000000000000000000000000083 -S315600443D00000000000000000000000000000000073 -S315600443E00000000000000000000000000000000063 -S315600443F00000000000000000000000000000000053 -S315600444000000000000000000000000000000000042 -S315600444100000000000000000000000000000000032 -S315600444200000000000000000000000000000000022 -S315600444300000000000000000000000000000000012 -S315600444400000000000000000000000000000000002 -S3156004445000000000000000000000000000000000F2 -S3156004446000000000000000000000000000000000E2 -S3156004447000000000000000000000000000000000D2 -S3156004448000000000000000000000000000000000C2 -S3156004449000000000000000000000000000000000B2 -S315600444A000000000000000000000000000000000A2 -S315600444B00000000000000000000000000000000092 -S315600444C00000000000000000000000000000000082 -S315600444D00000000000000000000000000000000072 -S315600444E00000000000000000000000000000000062 -S315600444F00000000000000000000000000000000052 -S315600445000000000000000000000000000000000041 -S315600445100000000000000000000000000000000031 -S315600445200000000000000000000000000000000021 -S315600445300000000000000000000000000000000011 -S315600445400000000000000000000000000000000001 -S3156004455000000000000000000000000000000000F1 -S3156004456000000000000000000000000000000000E1 -S3156004457000000000000000000000000000000000D1 -S3156004458000000000000000000000000000000000C1 -S3156004459000000000000000000000000000000000B1 -S315600445A000000000000000000000000000000000A1 -S315600445B00000000000000000000000000000000091 -S315600445C00000000000000000000000000000000081 -S315600445D00000000000000000000000000000000071 -S315600445E00000000000000000000000000000000061 -S315600445F00000000000000000000000000000000051 -S315600446000000000000000000000000000000000040 -S315600446100000000000000000000000000000000030 -S315600446200000000000000000000000000000000020 -S315600446300000000000000000000000000000000010 -S315600446400000000000000000000000000000000000 -S3156004465000000000000000000000000000000000F0 -S3156004466000000000000000000000000000000000E0 -S3156004467000000000000000000000000000000000D0 -S3156004468000000000000000000000000000000000C0 -S3156004469000000000000000000000000000000000B0 -S315600446A000000000000000000000000000000000A0 -S315600446B00000000000000000000000000000000090 -S315600446C00000000000000000000000000000000080 -S315600446D00000000000000000000000000000000070 -S315600446E00000000000000000000000000000000060 -S315600446F00000000000000000000000000000000050 -S31560044700000000000000000000000000000000003F -S31560044710000000000000000000000000000000002F -S31560044720000000000000000000000000000000001F -S31560044730000000000000000000000000000000000F -S3156004474000000000000000000000000000000000FF -S3156004475000000000000000000000000000000000EF -S3156004476000000000000000000000000000000000DF -S3156004477000000000000000000000000000000000CF -S3156004478000000000000000000000000000000000BF -S3156004479000000000000000000000000000000000AF -S315600447A0000000000000000000000000000000009F -S315600447B0000000000000000000000000000000008F -S315600447C0000000000000000000000000000000007F -S315600447D0000000000000000000000000000000006F -S315600447E0000000000000000000000000000000005F -S315600447F0000000000000000000000000000000004F -S31560044800000000000000000000000000000000003E -S31560044810000000000000000000000000000000002E -S31560044820000000000000000000000000000000001E -S31560044830000000000000000000000000000000000E -S3156004484000000000000000000000000000000000FE -S3156004485000000000000000000000000000000000EE -S3156004486000000000000000000000000000000000DE -S3156004487000000000000000000000000000000000CE -S3156004488000000000000000000000000000000000BE -S3156004489000000000000000000000000000000000AE -S315600448A0000000000000000000000000000000009E -S315600448B0000000000000000000000000000000008E -S315600448C0000000000000000000000000000000007E -S315600448D0000000000000000000000000000000006E -S315600448E0000000000000000000000000000000005E -S315600448F0000000000000000000000000000000004E -S31560044900000000000000000000000000000000003D -S31560044910000000000000000000000000000000002D -S31560044920000000000000000000000000000000001D -S31560044930000000000000000000000000000000000D -S3156004494000000000000000000000000000000000FD -S3156004495000000000000000000000000000000000ED -S3156004496000000000000000000000000000000000DD -S3156004497000000000000000000000000000000000CD -S3156004498000000000000000000000000000000000BD -S3156004499000000000000000000000000000000000AD -S315600449A0000000000000000000000000000000009D -S315600449B0000000000000000000000000000000008D -S315600449C0000000000000000000000000000000007D -S315600449D0000000000000000000000000000000006D -S315600449E0000000000000000000000000000000005D -S315600449F0000000000000000000000000000000004D -S31560044A00000000000000000000000000000000003C -S31560044A10000000000000000000000000000000002C -S31560044A20000000000000000000000000000000001C -S31560044A30000000000000000000000000000000000C -S31560044A4000000000000000000000000000000000FC -S31560044A5000000000000000000000000000000000EC -S31560044A6000000000000000000000000000000000DC -S31560044A7000000000000000000000000000000000CC -S31560044A8000000000000000000000000000000000BC -S31560044A9000000000000000000000000000000000AC -S31560044AA0000000000000000000000000000000009C -S31560044AB0000000000000000000000000000000008C -S31560044AC0000000000000000000000000000000007C -S31560044AD0000000000000000000000000000000006C -S31560044AE0000000000000000000000000000000005C -S31560044AF0000000000000000000000000000000004C -S31560044B00000000000000000000000000000000003B -S31560044B10000000000000000000000000000000002B -S31560044B20000000000000000000000000000000001B -S31560044B30000000000000000000000000000000000B -S31560044B4000000000000000000000000000000000FB -S31560044B5000000000000000000000000000000000EB -S31560044B6000000000000000000000000000000000DB -S31560044B7000000000000000000000000000000000CB -S31560044B8000000000000000000000000000000000BB -S31560044B9000000000000000000000000000000000AB -S31560044BA0000000000000000000000000000000009B -S31560044BB0000000000000000000000000000000008B -S31560044BC0000000000000000000000000000000007B -S31560044BD0000000000000000000000000000000006B -S31560044BE0000000000000000000000000000000005B -S31560044BF0000000000000000000000000000000004B -S31560044C00000000000000000000000000000000003A -S31560044C10000000000000000000000000000000002A -S31560044C20000000000000000000000000000000001A -S31560044C30000000000000000000000000000000000A -S31560044C4000000000000000000000000000000000FA -S31560044C5000000000000000000000000000000000EA -S31560044C6000000000000000000000000000000000DA -S31560044C7000000000000000000000000000000000CA -S31560044C8000000000000000000000000000000000BA -S31560044C9000000000000000000000000000000000AA -S31560044CA0000000000000000000000000000000009A -S31560044CB0000000000000000000000000000000008A -S31560044CC0000000000000000000000000000000007A -S31560044CD0000000000000000000000000000000006A -S31560044CE0000000000000000000000000000000005A -S31560044CF0000000000000000000000000000000004A -S31560044D000000000000000000000000000000000039 -S31560044D100000000000000000000000000000000029 -S31560044D200000000000000000000000000000000019 -S31560044D300000000000000000000000000000000009 -S31560044D4000000000000000000000000000000000F9 -S31560044D5000000000000000000000000000000000E9 -S31560044D6000000000000000000000000000000000D9 -S31560044D7000000000000000000000000000000000C9 -S31560044D8000000000000000000000000000000000B9 -S31560044D9000000000000000000000000000000000A9 -S31560044DA00000000000000000000000000000000099 -S31560044DB00000000000000000000000000000000089 -S31560044DC00000000000000000000000000000000079 -S31560044DD00000000000000000000000000000000069 -S31560044DE00000000000000000000000000000000059 -S31560044DF00000000000000000000000000000000049 -S31560044E000000000000000000000000000000000038 -S31560044E100000000000000000000000000000000028 -S31560044E200000000000000000000000000000000018 -S31560044E300000000000000000000000000000000008 -S31560044E4000000000000000000000000000000000F8 -S31560044E5000000000000000000000000000000000E8 -S31560044E6000000000000000000000000000000000D8 -S31560044E7000000000000000000000000000000000C8 -S31560044E8000000000000000000000000000000000B8 -S31560044E9000000000000000000000000000000000A8 -S31560044EA00000000000000000000000000000000098 -S31560044EB00000000000000000000000000000000088 -S31560044EC00000000000000000000000000000000078 -S31560044ED00000000000000000000000000000000068 -S31560044EE00000000000000000000000000000000058 -S31560044EF00000000000000000000000000000000048 -S31560044F000000000000000000000000000000000037 -S31560044F100000000000000000000000000000000027 -S31560044F200000000000000000000000000000000017 -S31560044F300000000000000000000000000000000007 -S31560044F4000000000000000000000000000000000F7 -S31560044F5000000000000000000000000000000000E7 -S31560044F6000000000000000000000000000000000D7 -S31560044F7000000000000000000000000000000000C7 -S31560044F8000000000000000000000000000000000B7 -S31560044F9000000000000000000000000000000000A7 -S31560044FA00000000000000000000000000000000097 -S31560044FB00000000000000000000000000000000087 -S31560044FC00000000000000000000000000000000077 -S31560044FD00000000000000000000000000000000067 -S31560044FE00000000000000000000000000000000057 -S31560044FF00000000000000000000000000000000047 -S315600450000000000000000000000000000000000036 -S315600450100000000000000000000000000000000026 -S315600450200000000000000000000000000000000016 -S315600450300000000000000000000000000000000006 -S3156004504000000000000000000000000000000000F6 -S3156004505000000000000000000000000000000000E6 -S3156004506000000000000000000000000000000000D6 -S3156004507000000000000000000000000000000000C6 -S3156004508000000000000000000000000000000000B6 -S3156004509000000000000000000000000000000000A6 -S315600450A00000000000000000000000000000000096 -S315600450B00000000000000000000000000000000086 -S315600450C00000000000000000000000000000000076 -S315600450D00000000000000000000000000000000066 -S315600450E00000000000000000000000000000000056 -S315600450F00000000000000000000000000000000046 -S315600451000000000000000000000000000000000035 -S315600451100000000000000000000000000000000025 -S315600451200000000000000000000000000000000015 -S315600451300000000000000000000000000000000005 -S3156004514000000000000000000000000000000000F5 -S3156004515000000000000000000000000000000000E5 -S3156004516000000000000000000000000000000000D5 -S3156004517000000000000000000000000000000000C5 -S3156004518000000000000000000000000000000000B5 -S3156004519000000000000000000000000000000000A5 -S315600451A00000000000000000000000000000000095 -S315600451B00000000000000000000000000000000085 -S315600451C00000000000000000000000000000000075 -S315600451D00000000000000000000000000000000065 -S315600451E00000000000000000000000000000000055 -S315600451F00000000000000000000000000000000045 -S315600452000000000000000000000000000000000034 -S315600452100000000000000000000000000000000024 -S315600452200000000000000000000000000000000014 -S315600452300000000000000000000000000000000004 -S3156004524000000000000000000000000000000000F4 -S3156004525000000000000000000000000000000000E4 -S3156004526000000000000000000000000000000000D4 -S3156004527000000000000000000000000000000000C4 -S3156004528000000000000000000000000000000000B4 -S3156004529000000000000000000000000000000000A4 -S315600452A00000000000000000000000000000000094 -S315600452B00000000000000000000000000000000084 -S315600452C00000000000000000000000000000000074 -S315600452D00000000000000000000000000000000064 -S315600452E00000000000000000000000000000000054 -S315600452F00000000000000000000000000000000044 -S315600453000000000000000000000000000000000033 -S315600453100000000000000000000000000000000023 -S315600453200000000000000000000000000000000013 -S315600453300000000000000000000000000000000003 -S3156004534000000000000000000000000000000000F3 -S3156004535000000000000000000000000000000000E3 -S3156004536000000000000000000000000000000000D3 -S3156004537000000000000000000000000000000000C3 -S3156004538000000000000000000000000000000000B3 -S3156004539000000000000000000000000000000000A3 -S315600453A00000000000000000000000000000000093 -S315600453B00000000000000000000000000000000083 -S315600453C00000000000000000000000000000000073 -S315600453D00000000000000000000000000000000063 -S315600453E00000000000000000000000000000000053 -S315600453F00000000000000000000000000000000043 -S315600454000000000000000000000000000000000032 -S315600454100000000000000000000000000000000022 -S315600454200000000000000000000000000000000012 -S315600454300000000000000000000000000000000002 -S3156004544000000000000000000000000000000000F2 -S3156004545000000000000000000000000000000000E2 -S3156004546000000000000000000000000000000000D2 -S3156004547000000000000000000000000000000000C2 -S3156004548000000000000000000000000000000000B2 -S3156004549000000000000000000000000000000000A2 -S315600454A00000000000000000000000000000000092 -S315600454B00000000000000000000000000000000082 -S315600454C00000000000000000000000000000000072 -S315600454D00000000000000000000000000000000062 -S315600454E00000000000000000000000000000000052 -S315600454F00000000000000000000000000000000042 -S315600455000000000000000000000000000000000031 -S315600455100000000000000000000000000000000021 -S315600455200000000000000000000000000000000011 -S315600455300000000000000000000000000000000001 -S3156004554000000000000000000000000000000000F1 -S3156004555000000000000000000000000000000000E1 -S3156004556000000000000000000000000000000000D1 -S3156004557000000000000000000000000000000000C1 -S3156004558000000000000000000000000000000000B1 -S3156004559000000000000000000000000000000000A1 -S315600455A00000000000000000000000000000000091 -S315600455B00000000000000000000000000000000081 -S315600455C00000000000000000000000000000000071 -S315600455D00000000000000000000000000000000061 -S315600455E00000000000000000000000000000000051 -S315600455F00000000000000000000000000000000041 -S315600456000000000000000000000000000000000030 -S315600456100000000000000000000000000000000020 -S315600456200000000000000000000000000000000010 -S315600456300000000000000000000000000000000000 -S3156004564000000000000000000000000000000000F0 -S3156004565000000000000000000000000000000000E0 -S3156004566000000000000000000000000000000000D0 -S3156004567000000000000000000000000000000000C0 -S3156004568000000000000000000000000000000000B0 -S3156004569000000000000000000000000000000000A0 -S315600456A00000000000000000000000000000000090 -S315600456B00000000000000000000000000000000080 -S315600456C00000000000000000000000000000000070 -S315600456D00000000000000000000000000000000060 -S315600456E00000000000000000000000000000000050 -S315600456F00000000000000000000000000000000040 -S31560045700000000000000000000000000000000002F -S31560045710000000000000000000000000000000001F -S31560045720000000000000000000000000000000000F -S3156004573000000000000000000000000000000000FF -S3156004574000000000000000000000000000000000EF -S3156004575000000000000000000000000000000000DF -S3156004576000000000000000000000000000000000CF -S3156004577000000000000000000000000000000000BF -S3156004578000000000000000000000000000000000AF -S31560045790000000000000000000000000000000009F -S315600457A0000000000000000000000000000000008F -S315600457B0000000000000000000000000000000007F -S315600457C0000000000000000000000000000000006F -S315600457D0000000000000000000000000000000005F -S315600457E0000000000000000000000000000000004F -S315600457F0000000000000000000000000000000003F -S31560045800000000000000000000000000000000002E -S31560045810000000000000000000000000000000001E -S31560045820000000000000000000000000000000000E -S3156004583000000000000000000000000000000000FE -S3156004584000000000000000000000000000000000EE -S3156004585000000000000000000000000000000000DE -S3156004586000000000000000000000000000000000CE -S3156004587000000000000000000000000000000000BE -S3156004588000000000000000000000000000000000AE -S31560045890000000000000000000000000000000009E -S315600458A0000000000000000000000000000000008E -S315600458B0000000000000000000000000000000007E -S315600458C0000000000000000000000000000000006E -S315600458D0000000000000000000000000000000005E -S315600458E0000000000000000000000000000000004E -S315600458F0000000000000000000000000000000003E -S31560045900000000000000000000000000000000002D -S31560045910000000000000000000000000000000001D -S31560045920000000000000000000000000000000000D -S3156004593000000000000000000000000000000000FD -S3156004594000000000000000000000000000000000ED -S3156004595000000000000000000000000000000000DD -S3156004596000000000000000000000000000000000CD -S3156004597000000000000000000000000000000000BD -S3156004598000000000000000000000000000000000AD -S31560045990000000000000000000000000000000009D -S315600459A0000000000000000000000000000000008D -S315600459B0000000000000000000000000000000007D -S315600459C0000000000000000000000000000000006D -S315600459D0000000000000000000000000000000005D -S315600459E0000000000000000000000000000000004D -S315600459F0000000000000000000000000000000003D -S31560045A00000000000000000000000000000000002C -S31560045A10000000000000000000000000000000001C -S31560045A20000000000000000000000000000000000C -S31560045A3000000000000000000000000000000000FC -S31560045A4000000000000000000000000000000000EC -S31560045A5000000000000000000000000000000000DC -S31560045A6000000000000000000000000000000000CC -S31560045A7000000000000000000000000000000000BC -S31560045A8000000000000000000000000000000000AC -S31560045A90000000000000000000000000000000009C -S31560045AA0000000000000000000000000000000008C -S31560045AB0000000000000000000000000000000007C -S31560045AC0000000000000000000000000000000006C -S31560045AD0000000000000000000000000000000005C -S31560045AE0000000000000000000000000000000004C -S31560045AF0000000000000000000000000000000003C -S31560045B00000000000000000000000000000000002B -S31560045B10000000000000000000000000000000001B -S31560045B20000000000000000000000000000000000B -S31560045B3000000000000000000000000000000000FB -S31560045B4000000000000000000000000000000000EB -S31560045B5000000000000000000000000000000000DB -S31560045B6000000000000000000000000000000000CB -S31560045B7000000000000000000000000000000000BB -S31560045B8000000000000000000000000000000000AB -S31560045B90000000000000000000000000000000009B -S31560045BA0000000000000000000000000000000008B -S31560045BB0000000000000000000000000000000007B -S31560045BC0000000000000000000000000000000006B -S31560045BD0000000000000000000000000000000005B -S31560045BE0000000000000000000000000000000004B -S31560045BF0000000000000000000000000000000003B -S31560045C00000000000000000000000000000000002A -S31560045C10000000000000000000000000000000001A -S31560045C20000000000000000000000000000000000A -S31560045C3000000000000000000000000000000000FA -S31560045C4000000000000000000000000000000000EA -S31560045C5000000000000000000000000000000000DA -S31560045C6000000000000000000000000000000000CA -S31560045C7000000000000000000000000000000000BA -S31560045C8000000000000000000000000000000000AA -S31560045C90000000000000000000000000000000009A -S31560045CA0000000000000000000000000000000008A -S31560045CB0000000000000000000000000000000007A -S31560045CC0000000000000000000000000000000006A -S31560045CD0000000000000000000000000000000005A -S31560045CE0000000000000000000000000000000004A -S31560045CF0000000000000000000000000000000003A -S31560045D000000000000000000000000000000000029 -S31560045D100000000000000000000000000000000019 -S31560045D200000000000000000000000000000000009 -S31560045D3000000000000000000000000000000000F9 -S31560045D4000000000000000000000000000000000E9 -S31560045D5000000000000000000000000000000000D9 -S31560045D6000000000000000000000000000000000C9 -S31560045D7000000000000000000000000000000000B9 -S31560045D8000000000000000000000000000000000A9 -S31560045D900000000000000000000000000000000099 -S31560045DA00000000000000000000000000000000089 -S31560045DB00000000000000000000000000000000079 -S31560045DC00000000000000000000000000000000069 -S31560045DD00000000000000000000000000000000059 -S31560045DE00000000000000000000000000000000049 -S31560045DF00000000000000000000000000000000039 -S31560045E000000000000000000000000000000000028 -S31560045E100000000000000000000000000000000018 -S31560045E200000000000000000000000000000000008 -S31560045E3000000000000000000000000000000000F8 -S31560045E4000000000000000000000000000000000E8 -S31560045E5000000000000000000000000000000000D8 -S31560045E6000000000000000000000000000000000C8 -S31560045E7000000000000000000000000000000000B8 -S31560045E8000000000000000000000000000000000A8 -S31560045E900000000000000000000000000000000098 -S31560045EA00000000000000000000000000000000088 -S31560045EB00000000000000000000000000000000078 -S31560045EC00000000000000000000000000000000068 -S31560045ED00000000000000000000000000000000058 -S31560045EE00000000000000000000000000000000048 -S31560045EF00000000000000000000000000000000038 -S31560045F000000000000000000000000000000000027 -S31560045F100000000000000000000000000000000017 -S31560045F200000000000000000000000000000000007 -S31560045F3000000000000000000000000000000000F7 -S31560045F4000000000000000000000000000000000E7 -S31560045F5000000000000000000000000000000000D7 -S31560045F6000000000000000000000000000000000C7 -S31560045F7000000000000000000000000000000000B7 -S31560045F8000000000000000000000000000000000A7 -S31560045F900000000000000000000000000000000097 -S31560045FA00000000000000000000000000000000087 -S31560045FB00000000000000000000000000000000077 -S31560045FC00000000000000000000000000000000067 -S31560045FD00000000000000000000000000000000057 -S31560045FE00000000000000000000000000000000047 -S31560045FF00000000000000000000000000000000037 -S315600460000000000000000000000000000000000026 -S315600460100000000000000000000000000000000016 -S315600460200000000000000000000000000000000006 -S3156004603000000000000000000000000000000000F6 -S3156004604000000000000000000000000000000000E6 -S3156004605000000000000000000000000000000000D6 -S3156004606000000000000000000000000000000000C6 -S3156004607000000000000000000000000000000000B6 -S3156004608000000000000000000000000000000000A6 -S315600460900000000000000000000000000000000096 -S315600460A00000000000000000000000000000000086 -S315600460B00000000000000000000000000000000076 -S315600460C00000000000000000000000000000000066 -S315600460D00000000000000000000000000000000056 -S315600460E00000000000000000000000000000000046 -S315600460F00000000000000000000000000000000036 -S315600461000000000000000000000000000000000025 -S315600461100000000000000000000000000000000015 -S315600461200000000000000000000000000000000005 -S3156004613000000000000000000000000000000000F5 -S3156004614000000000000000000000000000000000E5 -S3156004615000000000000000000000000000000000D5 -S3156004616000000000000000000000000000000000C5 -S3156004617000000000000000000000000000000000B5 -S3156004618000000000000000000000000000000000A5 -S315600461900000000000000000000000000000000095 -S315600461A00000000000000000000000000000000085 -S315600461B00000000000000000000000000000000075 -S315600461C00000000000000000000000000000000065 -S315600461D00000000000000000000000000000000055 -S315600461E00000000000000000000000000000000045 -S315600461F00000000000000000000000000000000035 -S315600462000000000000000000000000000000000024 -S315600462100000000000000000000000000000000014 -S315600462200000000000000000000000000000000004 -S3156004623000000000000000000000000000000000F4 -S3156004624000000000000000000000000000000000E4 -S3156004625000000000000000000000000000000000D4 -S3156004626000000000000000000000000000000000C4 -S3156004627000000000000000000000000000000000B4 -S3156004628000000000000000000000000000000000A4 -S315600462900000000000000000000000000000000094 -S315600462A00000000000000000000000000000000084 -S315600462B00000000000000000000000000000000074 -S315600462C00000000000000000000000000000000064 -S315600462D00000000000000000000000000000000054 -S315600462E00000000000000000000000000000000044 -S315600462F00000000000000000000000000000000034 -S315600463000000000000000000000000000000000023 -S315600463100000000000000000000000000000000013 -S315600463200000000000000000000000000000000003 -S3156004633000000000000000000000000000000000F3 -S3156004634000000000000000000000000000000000E3 -S3156004635000000000000000000000000000000000D3 -S3156004636000000000000000000000000000000000C3 -S3156004637000000000000000000000000000000000B3 -S3156004638000000000000000000000000000000000A3 -S315600463900000000000000000000000000000000093 -S315600463A00000000000000000000000000000000083 -S315600463B00000000000000000000000000000000073 -S315600463C00000000000000000000000000000000063 -S315600463D00000000000000000000000000000000053 -S315600463E00000000000000000000000000000000043 -S315600463F00000000000000000000000000000000033 -S315600464000000000000000000000000000000000022 -S315600464100000000000000000000000000000000012 -S315600464200000000000000000000000000000000002 -S3156004643000000000000000000000000000000000F2 -S3156004644000000000000000000000000000000000E2 -S3156004645000000000000000000000000000000000D2 -S3156004646000000000000000000000000000000000C2 -S3156004647000000000000000000000000000000000B2 -S3156004648000000000000000000000000000000000A2 -S315600464900000000000000000000000000000000092 -S315600464A00000000000000000000000000000000082 -S315600464B00000000000000000000000000000000072 -S315600464C00000000000000000000000000000000062 -S315600464D00000000000000000000000000000000052 -S315600464E00000000000000000000000000000000042 -S315600464F00000000000000000000000000000000032 -S315600465000000000000000000000000000000000021 -S315600465100000000000000000000000000000000011 -S315600465200000000000000000000000000000000001 -S3156004653000000000000000000000000000000000F1 -S3156004654000000000000000000000000000000000E1 -S3156004655000000000000000000000000000000000D1 -S3156004656000000000000000000000000000000000C1 -S3156004657000000000000000000000000000000000B1 -S3156004658000000000000000000000000000000000A1 -S315600465900000000000000000000000000000000091 -S315600465A00000000000000000000000000000000081 -S315600465B00000000000000000000000000000000071 -S315600465C00000000000000000000000000000000061 -S315600465D00000000000000000000000000000000051 -S315600465E00000000000000000000000000000000041 -S315600465F00000000000000000000000000000000031 -S315600466000000000000000000000000000000000020 -S315600466100000000000000000000000000000000010 -S315600466200000000000000000000000000000000000 -S3156004663000000000000000000000000000000000F0 -S3156004664000000000000000000000000000000000E0 -S3156004665000000000000000000000000000000000D0 -S3156004666000000000000000000000000000000000C0 -S3156004667000000000000000000000000000000000B0 -S3156004668000000000000000000000000000000000A0 -S315600466900000000000000000000000000000000090 -S315600466A00000000000000000000000000000000080 -S315600466B00000000000000000000000000000000070 -S315600466C00000000000000000000000000000000060 -S315600466D00000000000000000000000000000000050 -S315600466E00000000000000000000000000000000040 -S315600466F00000000000000000000000000000000030 -S31560046700000000000000000000000000000000001F -S31560046710000000000000000000000000000000000F -S3156004672000000000000000000000000000000000FF -S3156004673000000000000000000000000000000000EF -S3156004674000000000000000000000000000000000DF -S3156004675000000000000000000000000000000000CF -S3156004676000000000000000000000000000000000BF -S3156004677000000000000000000000000000000000AF -S31560046780000000000000000000000000000000009F -S31560046790000000000000000000000000000000008F -S315600467A0000000000000000000000000000000007F -S315600467B0000000000000000000000000000000006F -S315600467C0000000000000000000000000000000005F -S315600467D0000000000000000000000000000000004F -S315600467E0000000000000000000000000000000003F -S315600467F0000000000000000000000000000000002F -S31560046800000000000000000000000000000000001E -S31560046810000000000000000000000000000000000E -S3156004682000000000000000000000000000000000FE -S3156004683000000000000000000000000000000000EE -S3156004684000000000000000000000000000000000DE -S3156004685000000000000000000000000000000000CE -S3156004686000000000000000000000000000000000BE -S3156004687000000000000000000000000000000000AE -S31560046880000000000000000000000000000000009E -S31560046890000000000000000000000000000000008E -S315600468A0000000000000000000000000000000007E -S315600468B0000000000000000000000000000000006E -S315600468C0000000000000000000000000000000005E -S315600468D0000000000000000000000000000000004E -S315600468E0000000000000000000000000000000003E -S315600468F0000000000000000000000000000000002E -S31560046900000000000000000000000000000000001D -S31560046910000000000000000000000000000000000D -S3156004692000000000000000000000000000000000FD -S3156004693000000000000000000000000000000000ED -S3156004694000000000000000000000000000000000DD -S3156004695000000000000000000000000000000000CD -S3156004696000000000000000000000000000000000BD -S3156004697000000000000000000000000000000000AD -S31560046980000000000000000000000000000000009D -S31560046990000000000000000000000000000000008D -S315600469A0000000000000000000000000000000007D -S315600469B0000000000000000000000000000000006D -S315600469C0000000000000000000000000000000005D -S315600469D0000000000000000000000000000000004D -S315600469E0000000000000000000000000000000003D -S315600469F0000000000000000000000000000000002D -S31560046A00000000000000000000000000000000001C -S31560046A10000000000000000000000000000000000C -S31560046A2000000000000000000000000000000000FC -S31560046A3000000000000000000000000000000000EC -S31560046A4000000000000000000000000000000000DC -S31560046A5000000000000000000000000000000000CC -S31560046A6000000000000000000000000000000000BC -S31560046A7000000000000000000000000000000000AC -S31560046A80000000000000000000000000000000009C -S31560046A90000000000000000000000000000000008C -S31560046AA0000000000000000000000000000000007C -S31560046AB0000000000000000000000000000000006C -S31560046AC0000000000000000000000000000000005C -S31560046AD0000000000000000000000000000000004C -S31560046AE0000000000000000000000000000000003C -S31560046AF0000000000000000000000000000000002C -S31560046B00000000000000000000000000000000001B -S31560046B10000000000000000000000000000000000B -S31560046B2000000000000000000000000000000000FB -S31560046B3000000000000000000000000000000000EB -S31560046B4000000000000000000000000000000000DB -S31560046B5000000000000000000000000000000000CB -S31560046B6000000000000000000000000000000000BB -S31560046B7000000000000000000000000000000000AB -S31560046B80000000000000000000000000000000009B -S31560046B90000000000000000000000000000000008B -S31560046BA0000000000000000000000000000000007B -S31560046BB0000000000000000000000000000000006B -S31560046BC0000000000000000000000000000000005B -S31560046BD0000000000000000000000000000000004B -S31560046BE0000000000000000000000000000000003B -S31560046BF0000000000000000000000000000000002B -S31560046C00000000000000000000000000000000001A -S31560046C10000000000000000000000000000000000A -S31560046C2000000000000000000000000000000000FA -S31560046C3000000000000000000000000000000000EA -S31560046C4000000000000000000000000000000000DA -S31560046C5000000000000000000000000000000000CA -S31560046C6000000000000000000000000000000000BA -S31560046C7000000000000000000000000000000000AA -S31560046C80000000000000000000000000000000009A -S31560046C90000000000000000000000000000000008A -S31560046CA0000000000000000000000000000000007A -S31560046CB0000000000000000000000000000000006A -S31560046CC0000000000000000000000000000000005A -S31560046CD0000000000000000000000000000000004A -S31560046CE0000000000000000000000000000000003A -S31560046CF0000000000000000000000000000000002A -S31560046D000000000000000000000000000000000019 -S31560046D100000000000000000000000000000000009 -S31560046D2000000000000000000000000000000000F9 -S31560046D3000000000000000000000000000000000E9 -S31560046D4000000000000000000000000000000000D9 -S31560046D5000000000000000000000000000000000C9 -S31560046D6000000000000000000000000000000000B9 -S31560046D7000000000000000000000000000000000A9 -S31560046D800000000000000000000000000000000099 -S31560046D900000000000000000000000000000000089 -S31560046DA00000000000000000000000000000000079 -S31560046DB00000000000000000000000000000000069 -S31560046DC00000000000000000000000000000000059 -S31560046DD00000000000000000000000000000000049 -S31560046DE00000000000000000000000000000000039 -S31560046DF00000000000000000000000000000000029 -S31560046E000000000000000000000000000000000018 -S31560046E100000000000000000000000000000000008 -S31560046E2000000000000000000000000000000000F8 -S31560046E3000000000000000000000000000000000E8 -S31560046E4000000000000000000000000000000000D8 -S31560046E5000000000000000000000000000000000C8 -S31560046E6000000000000000000000000000000000B8 -S31560046E7000000000000000000000000000000000A8 -S31560046E800000000000000000000000000000000098 -S31560046E900000000000000000000000000000000088 -S31560046EA00000000000000000000000000000000078 -S31560046EB00000000000000000000000000000000068 -S31560046EC00000000000000000000000000000000058 -S31560046ED00000000000000000000000000000000048 -S31560046EE00000000000000000000000000000000038 -S31560046EF00000000000000000000000000000000028 -S31560046F000000000000000000000000000000000017 -S31560046F100000000000000000000000000000000007 -S31560046F2000000000000000000000000000000000F7 -S31560046F3000000000000000000000000000000000E7 -S31560046F4000000000000000000000000000000000D7 -S31560046F5000000000000000000000000000000000C7 -S31560046F6000000000000000000000000000000000B7 -S31560046F7000000000000000000000000000000000A7 -S31560046F800000000000000000000000000000000097 -S31560046F900000000000000000000000000000000087 -S31560046FA00000000000000000000000000000000077 -S31560046FB00000000000000000000000000000000067 -S31560046FC00000000000000000000000000000000057 -S31560046FD00000000000000000000000000000000047 -S31560046FE00000000000000000000000000000000037 -S31560046FF00000000000000000000000000000000027 -S315600470000000000000000000000000000000000016 -S315600470100000000000000000000000000000000006 -S3156004702000000000000000000000000000000000F6 -S3156004703000000000000000000000000000000000E6 -S3156004704000000000000000000000000000000000D6 -S3156004705000000000000000000000000000000000C6 -S3156004706000000000000000000000000000000000B6 -S3156004707000000000000000000000000000000000A6 -S315600470800000000000000000000000000000000096 -S315600470900000000000000000000000000000000086 -S315600470A00000000000000000000000000000000076 -S315600470B00000000000000000000000000000000066 -S315600470C00000000000000000000000000000000056 -S315600470D00000000000000000000000000000000046 -S315600470E00000000000000000000000000000000036 -S315600470F00000000000000000000000000000000026 -S315600471000000000000000000000000000000000015 -S315600471100000000000000000000000000000000005 -S3156004712000000000000000000000000000000000F5 -S3156004713000000000000000000000000000000000E5 -S3156004714000000000000000000000000000000000D5 -S3156004715000000000000000000000000000000000C5 -S3156004716000000000000000000000000000000000B5 -S3156004717000000000000000000000000000000000A5 -S315600471800000000000000000000000000000000095 -S315600471900000000000000000000000000000000085 -S315600471A00000000000000000000000000000000075 -S315600471B00000000000000000000000000000000065 -S315600471C00000000000000000000000000000000055 -S315600471D00000000000000000000000000000000045 -S315600471E00000000000000000000000000000000035 -S315600471F00000000000000000000000000000000025 -S315600472000000000000000000000000000000000014 -S315600472100000000000000000000000000000000004 -S3156004722000000000000000000000000000000000F4 -S3156004723000000000000000000000000000000000E4 -S3156004724000000000000000000000000000000000D4 -S3156004725000000000000000000000000000000000C4 -S3156004726000000000000000000000000000000000B4 -S3156004727000000000000000000000000000000000A4 -S315600472800000000000000000000000000000000094 -S315600472900000000000000000000000000000000084 -S315600472A00000000000000000000000000000000074 -S315600472B00000000000000000000000000000000064 -S315600472C00000000000000000000000000000000054 -S315600472D00000000000000000000000000000000044 -S315600472E00000000000000000000000000000000034 -S315600472F00000000000000000000000000000000024 -S315600473000000000000000000000000000000000013 -S315600473100000000000000000000000000000000003 -S3156004732000000000000000000000000000000000F3 -S3156004733000000000000000000000000000000000E3 -S3156004734000000000000000000000000000000000D3 -S3156004735000000000000000000000000000000000C3 -S3156004736000000000000000000000000000000000B3 -S3156004737000000000000000000000000000000000A3 -S315600473800000000000000000000000000000000093 -S315600473900000000000000000000000000000000083 -S315600473A00000000000000000000000000000000073 -S315600473B00000000000000000000000000000000063 -S315600473C00000000000000000000000000000000053 -S315600473D00000000000000000000000000000000043 -S315600473E00000000000000000000000000000000033 -S315600473F00000000000000000000000000000000023 -S315600474000000000000000000000000000000000012 -S315600474100000000000000000000000000000000002 -S3156004742000000000000000000000000000000000F2 -S3156004743000000000000000000000000000000000E2 -S3156004744000000000000000000000000000000000D2 -S3156004745000000000000000000000000000000000C2 -S3156004746000000000000000000000000000000000B2 -S3156004747000000000000000000000000000000000A2 -S315600474800000000000000000000000000000000092 -S315600474900000000000000000000000000000000082 -S315600474A00000000000000000000000000000000072 -S315600474B00000000000000000000000000000000062 -S315600474C00000000000000000000000000000000052 -S315600474D00000000000000000000000000000000042 -S315600474E00000000000000000000000000000000032 -S315600474F00000000000000000000000000000000022 -S315600475000000000000000000000000000000000011 -S315600475100000000000000000000000000000000001 -S3156004752000000000000000000000000000000000F1 -S3156004753000000000000000000000000000000000E1 -S3156004754000000000000000000000000000000000D1 -S3156004755000000000000000000000000000000000C1 -S3156004756000000000000000000000000000000000B1 -S3156004757000000000000000000000000000000000A1 -S315600475800000000000000000000000000000000091 -S315600475900000000000000000000000000000000081 -S315600475A00000000000000000000000000000000071 -S315600475B00000000000000000000000000000000061 -S315600475C00000000000000000000000000000000051 -S315600475D00000000000000000000000000000000041 -S315600475E00000000000000000000000000000000031 -S315600475F00000000000000000000000000000000021 -S315600476000000000000000000000000000000000010 -S315600476100000000000000000000000000000000000 -S3156004762000000000000000000000000000000000F0 -S3156004763000000000000000000000000000000000E0 -S3156004764000000000000000000000000000000000D0 -S3156004765000000000000000000000000000000000C0 -S3156004766000000000000000000000000000000000B0 -S3156004767000000000000000000000000000000000A0 -S315600476800000000000000000000000000000000090 -S315600476900000000000000000000000000000000080 -S315600476A00000000000000000000000000000000070 -S315600476B00000000000000000000000000000000060 -S315600476C00000000000000000000000000000000050 -S315600476D00000000000000000000000000000000040 -S315600476E00000000000000000000000000000000030 -S315600476F00000000000000000000000000000000020 -S31560047700000000000000000000000000000000000F -S3156004771000000000000000000000000000000000FF -S3156004772000000000000000000000000000000000EF -S3156004773000000000000000000000000000000000DF -S3156004774000000000000000000000000000000000CF -S3156004775000000000000000000000000000000000BF -S3156004776000000000000000000000000000000000AF -S31560047770000000000000000000000000000000009F -S31560047780000000000000000000000000000000008F -S31560047790000000000000000000000000000000007F -S315600477A0000000000000000000000000000000006F -S315600477B0000000000000000000000000000000005F -S315600477C0000000000000000000000000000000004F -S315600477D0000000000000000000000000000000003F -S315600477E0000000000000000000000000000000002F -S315600477F0000000000000000000000000000000001F -S31560047800000000000000000000000000000000000E -S3156004781000000000000000000000000000000000FE -S3156004782000000000000000000000000000000000EE -S3156004783000000000000000000000000000000000DE -S3156004784000000000000000000000000000000000CE -S3156004785000000000000000000000000000000000BE -S3156004786000000000000000000000000000000000AE -S31560047870000000000000000000000000000000009E -S31560047880000000000000000000000000000000008E -S31560047890000000000000000000000000000000007E -S315600478A0000000000000000000000000000000006E -S315600478B0000000000000000000000000000000005E -S315600478C0000000000000000000000000000000004E -S315600478D0000000000000000000000000000000003E -S315600478E0000000000000000000000000000000002E -S315600478F0000000000000000000000000000000001E -S31560047900000000000000000000000000000000000D -S3156004791000000000000000000000000000000000FD -S3156004792000000000000000000000000000000000ED -S3156004793000000000000000000000000000000000DD -S3156004794000000000000000000000000000000000CD -S3156004795000000000000000000000000000000000BD -S3156004796000000000000000000000000000000000AD -S31560047970000000000000000000000000000000009D -S31560047980000000000000000000000000000000008D -S31560047990000000000000000000000000000000007D -S315600479A0000000000000000000000000000000006D -S315600479B0000000000000000000000000000000005D -S315600479C0000000000000000000000000000000004D -S315600479D0000000000000000000000000000000003D -S315600479E0000000000000000000000000000000002D -S315600479F0000000000000000000000000000000001D -S31560047A00000000000000000000000000000000000C -S31560047A1000000000000000000000000000000000FC -S31560047A2000000000000000000000000000000000EC -S31560047A3000000000000000000000000000000000DC -S31560047A4000000000000000000000000000000000CC -S31560047A5000000000000000000000000000000000BC -S31560047A6000000000000000000000000000000000AC -S31560047A70000000000000000000000000000000009C -S31560047A80000000000000000000000000000000008C -S31560047A90000000000000000000000000000000007C -S31560047AA0000000000000000000000000000000006C -S31560047AB0000000000000000000000000000000005C -S31560047AC0000000000000000000000000000000004C -S31560047AD0000000000000000000000000000000003C -S31560047AE0000000000000000000000000000000002C -S31560047AF0000000000000000000000000000000001C -S31560047B00000000000000000000000000000000000B -S31560047B1000000000000000000000000000000000FB -S31560047B2000000000000000000000000000000000EB -S31560047B3000000000000000000000000000000000DB -S31560047B4000000000000000000000000000000000CB -S31560047B5000000000000000000000000000000000BB -S31560047B6000000000000000000000000000000000AB -S31560047B70000000000000000000000000000000009B -S31560047B80000000000000000000000000000000008B -S31560047B90000000000000000000000000000000007B -S31560047BA0000000000000000000000000000000006B -S31560047BB0000000000000000000000000000000005B -S31560047BC0000000000000000000000000000000004B -S31560047BD0000000000000000000000000000000003B -S31560047BE0000000000000000000000000000000002B -S31560047BF0000000000000000000000000000000001B -S31560047C00000000000000000000000000000000000A -S31560047C1000000000000000000000000000000000FA -S31560047C2000000000000000000000000000000000EA -S31560047C3000000000000000000000000000000000DA -S31560047C4000000000000000000000000000000000CA -S31560047C5000000000000000000000000000000000BA -S31560047C6000000000000000000000000000000000AA -S31560047C70000000000000000000000000000000009A -S31560047C80000000000000000000000000000000008A -S31560047C90000000000000000000000000000000007A -S31560047CA0000000000000000000000000000000006A -S31560047CB0000000000000000000000000000000005A -S31560047CC0000000000000000000000000000000004A -S31560047CD0000000000000000000000000000000003A -S31560047CE0000000000000000000000000000000002A -S31560047CF0000000000000000000000000000000001A -S31560047D000000000000000000000000000000000009 -S31560047D1000000000000000000000000000000000F9 -S31560047D2000000000000000000000000000000000E9 -S31560047D3000000000000000000000000000000000D9 -S31560047D4000000000000000000000000000000000C9 -S31560047D5000000000000000000000000000000000B9 -S31560047D6000000000000000000000000000000000A9 -S31560047D700000000000000000000000000000000099 -S31560047D800000000000000000000000000000000089 -S31560047D900000000000000000000000000000000079 -S31560047DA00000000000000000000000000000000069 -S31560047DB00000000000000000000000000000000059 -S31560047DC00000000000000000000000000000000049 -S31560047DD00000000000000000000000000000000039 -S31560047DE00000000000000000000000000000000029 -S31560047DF00000000000000000000000000000000019 -S31560047E000000000000000000000000000000000008 -S31560047E1000000000000000000000000000000000F8 -S31560047E2000000000000000000000000000000000E8 -S31560047E3000000000000000000000000000000000D8 -S31560047E4000000000000000000000000000000000C8 -S31560047E5000000000000000000000000000000000B8 -S31560047E6000000000000000000000000000000000A8 -S31560047E700000000000000000000000000000000098 -S31560047E800000000000000000000000000000000088 -S31560047E900000000000000000000000000000000078 -S31560047EA00000000000000000000000000000000068 -S31560047EB00000000000000000000000000000000058 -S31560047EC00000000000000000000000000000000048 -S31560047ED00000000000000000000000000000000038 -S31560047EE00000000000000000000000000000000028 -S31560047EF00000000000000000000000000000000018 -S31560047F000000000000000000000000000000000007 -S31560047F1000000000000000000000000000000000F7 -S31560047F2000000000000000000000000000000000E7 -S31560047F3000000000000000000000000000000000D7 -S31560047F4000000000000000000000000000000000C7 -S31560047F5000000000000000000000000000000000B7 -S31560047F6000000000000000000000000000000000A7 -S31560047F700000000000000000000000000000000097 -S31560047F800000000000000000000000000000000087 -S31560047F900000000000000000000000000000000077 -S31560047FA00000000000000000000000000000000067 -S31560047FB00000000000000000000000000000000057 -S31560047FC00000000000000000000000000000000047 -S31560047FD00000000000000000000000000000000037 -S31560047FE00000000000000000000000000000000027 -S31560047FF00000000000000000000000000000000017 -S315600480000000000000000000000000000000000006 -S3156004801000000000000000000000000000000000F6 -S3156004802000000000000000000000000000000000E6 -S3156004803000000000000000000000000000000000D6 -S3156004804000000000000000000000000000000000C6 -S3156004805000000000000000000000000000000000B6 -S3156004806000000000000000000000000000000000A6 -S315600480700000000000000000000000000000000096 -S315600480800000000000000000000000000000000086 -S315600480900000000000000000000000000000000076 -S315600480A00000000000000000000000000000000066 -S315600480B00000000000000000000000000000000056 -S315600480C00000000000000000000000000000000046 -S315600480D00000000000000000000000000000000036 -S315600480E00000000000000000000000000000000026 -S315600480F00000000000000000000000000000000016 -S315600481000000000000000000000000000000000005 -S3156004811000000000000000000000000000000000F5 -S3156004812000000000000000000000000000000000E5 -S3156004813000000000000000000000000000000000D5 -S3156004814000000000000000000000000000000000C5 -S3156004815000000000000000000000000000000000B5 -S3156004816000000000000000000000000000000000A5 -S315600481700000000000000000000000000000000095 -S315600481800000000000000000000000000000000085 -S315600481900000000000000000000000000000000075 -S315600481A00000000000000000000000000000000065 -S315600481B00000000000000000000000000000000055 -S315600481C00000000000000000000000000000000045 -S315600481D00000000000000000000000000000000035 -S315600481E00000000000000000000000000000000025 -S315600481F00000000000000000000000000000000015 -S315600482000000000000000000000000000000000004 -S3156004821000000000000000000000000000000000F4 -S3156004822000000000000000000000000000000000E4 -S3156004823000000000000000000000000000000000D4 -S3156004824000000000000000000000000000000000C4 -S3156004825000000000000000000000000000000000B4 -S3156004826000000000000000000000000000000000A4 -S315600482700000000000000000000000000000000094 -S315600482800000000000000000000000000000000084 -S315600482900000000000000000000000000000000074 -S315600482A00000000000000000000000000000000064 -S315600482B00000000000000000000000000000000054 -S315600482C00000000000000000000000000000000044 -S315600482D00000000000000000000000000000000034 -S315600482E00000000000000000000000000000000024 -S315600482F00000000000000000000000000000000014 -S315600483000000000000000000000000000000000003 -S3156004831000000000000000000000000000000000F3 -S3156004832000000000000000000000000000000000E3 -S3156004833000000000000000000000000000000000D3 -S3156004834000000000000000000000000000000000C3 -S3156004835000000000000000000000000000000000B3 -S3156004836000000000000000000000000000000000A3 -S315600483700000000000000000000000000000000093 -S315600483800000000000000000000000000000000083 -S315600483900000000000000000000000000000000073 -S315600483A00000000000000000000000000000000063 -S315600483B00000000000000000000000000000000053 -S315600483C00000000000000000000000000000000043 -S315600483D00000000000000000000000000000000033 -S315600483E00000000000000000000000000000000023 -S315600483F00000000000000000000000000000000013 -S315600484000000000000000000000000000000000002 -S3156004841000000000000000000000000000000000F2 -S3156004842000000000000000000000000000000000E2 -S3156004843000000000000000000000000000000000D2 -S3156004844000000000000000000000000000000000C2 -S3156004845000000000000000000000000000000000B2 -S3156004846000000000000000000000000000000000A2 -S315600484700000000000000000000000000000000092 -S315600484800000000000000000000000000000000082 -S315600484900000000000000000000000000000000072 -S315600484A00000000000000000000000000000000062 -S315600484B00000000000000000000000000000000052 -S315600484C00000000000000000000000000000000042 -S315600484D00000000000000000000000000000000032 -S315600484E00000000000000000000000000000000022 -S315600484F00000000000000000000000000000000012 -S315600485000000000000000000000000000000000001 -S3156004851000000000000000000000000000000000F1 -S3156004852000000000000000000000000000000000E1 -S3156004853000000000000000000000000000000000D1 -S3156004854000000000000000000000000000000000C1 -S3156004855000000000000000000000000000000000B1 -S3156004856000000000000000000000000000000000A1 -S315600485700000000000000000000000000000000091 -S315600485800000000000000000000000000000000081 -S315600485900000000000000000000000000000000071 -S315600485A00000000000000000000000000000000061 -S315600485B00000000000000000000000000000000051 -S315600485C00000000000000000000000000000000041 -S315600485D00000000000000000000000000000000031 -S315600485E00000000000000000000000000000000021 -S315600485F00000000000000000000000000000000011 -S315600486000000000000000000000000000000000000 -S3156004861000000000000000000000000000000000F0 -S3156004862000000000000000000000000000000000E0 -S3156004863000000000000000000000000000000000D0 -S3156004864000000000000000000000000000000000C0 -S3156004865000000000000000000000000000000000B0 -S3156004866000000000000000000000000000000000A0 -S315600486700000000000000000000000000000000090 -S315600486800000000000000000000000000000000080 -S315600486900000000000000000000000000000000070 -S315600486A00000000000000000000000000000000060 -S315600486B00000000000000000000000000000000050 -S315600486C00000000000000000000000000000000040 -S315600486D00000000000000000000000000000000030 -S315600486E00000000000000000000000000000000020 -S315600486F00000000000000000000000000000000010 -S3156004870000000000000000000000000000000000FF -S3156004871000000000000000000000000000000000EF -S3156004872000000000000000000000000000000000DF -S3156004873000000000000000000000000000000000CF -S3156004874000000000000000000000000000000000BF -S3156004875000000000000000000000000000000000AF -S31560048760000000000000000000000000000000009F -S31560048770000000000000000000000000000000008F -S31560048780000000000000000000000000000000007F -S31560048790000000000000000000000000000000006F -S315600487A0000000000000000000000000000000005F -S315600487B0000000000000000000000000000000004F -S315600487C0000000000000000000000000000000003F -S315600487D0000000000000000000000000000000002F -S315600487E0000000000000000000000000000000001F -S315600487F0000000000000000000000000000000000F -S3156004880000000000000000000000000000000000FE -S3156004881000000000000000000000000000000000EE -S3156004882000000000000000000000000000000000DE -S3156004883000000000000000000000000000000000CE -S3156004884000000000000000000000000000000000BE -S3156004885000000000000000000000000000000000AE -S31560048860000000000000000000000000000000009E -S31560048870000000000000000000000000000000008E -S31560048880000000000000000000000000000000007E -S31560048890000000000000000000000000000000006E -S315600488A0000000000000000000000000000000005E -S315600488B0000000000000000000000000000000004E -S315600488C0000000000000000000000000000000003E -S315600488D0000000000000000000000000000000002E -S315600488E0000000000000000000000000000000001E -S315600488F0000000000000000000000000000000000E -S3156004890000000000000000000000000000000000FD -S3156004891000000000000000000000000000000000ED -S3156004892000000000000000000000000000000000DD -S3156004893000000000000000000000000000000000CD -S3156004894000000000000000000000000000000000BD -S3156004895000000000000000000000000000000000AD -S31560048960000000000000000000000000000000009D -S31560048970000000000000000000000000000000008D -S31560048980000000000000000000000000000000007D -S31560048990000000000000000000000000000000006D -S315600489A0000000000000000000000000000000005D -S315600489B0000000000000000000000000000000004D -S315600489C0000000000000000000000000000000003D -S315600489D0000000000000000000000000000000002D -S315600489E0000000000000000000000000000000001D -S315600489F0000000000000000000000000000000000D -S31560048A0000000000000000000000000000000000FC -S31560048A1000000000000000000000000000000000EC -S31560048A2000000000000000000000000000000000DC -S31560048A3000000000000000000000000000000000CC -S31560048A4000000000000000000000000000000000BC -S31560048A5000000000000000000000000000000000AC -S31560048A60000000000000000000000000000000009C -S31560048A70000000000000000000000000000000008C -S31560048A80000000000000000000000000000000007C -S31560048A90000000000000000000000000000000006C -S31560048AA0000000000000000000000000000000005C -S31560048AB0000000000000000000000000000000004C -S31560048AC0000000000000000000000000000000003C -S31560048AD0000000000000000000000000000000002C -S31560048AE0000000000000000000000000000000001C -S31560048AF0000000000000000000000000000000000C -S31560048B0000000000000000000000000000000000FB -S31560048B1000000000000000000000000000000000EB -S31560048B2000000000000000000000000000000000DB -S31560048B3000000000000000000000000000000000CB -S31560048B4000000000000000000000000000000000BB -S31560048B5000000000000000000000000000000000AB -S31560048B60000000000000000000000000000000009B -S31560048B70000000000000000000000000000000008B -S31560048B80000000000000000000000000000000007B -S31560048B90000000000000000000000000000000006B -S31560048BA0000000000000000000000000000000005B -S31560048BB0000000000000000000000000000000004B -S31560048BC0000000000000000000000000000000003B -S31560048BD0000000000000000000000000000000002B -S31560048BE0000000000000000000000000000000001B -S31560048BF0000000000000000000000000000000000B -S31560048C0000000000000000000000000000000000FA -S31560048C1000000000000000000000000000000000EA -S31560048C2000000000000000000000000000000000DA -S31560048C3000000000000000000000000000000000CA -S31560048C4000000000000000000000000000000000BA -S31560048C5000000000000000000000000000000000AA -S31560048C60000000000000000000000000000000009A -S31560048C70000000000000000000000000000000008A -S31560048C80000000000000000000000000000000007A -S31560048C90000000000000000000000000000000006A -S31560048CA0000000000000000000000000000000005A -S31560048CB0000000000000000000000000000000004A -S31560048CC0000000000000000000000000000000003A -S31560048CD0000000000000000000000000000000002A -S31560048CE0000000000000000000000000000000001A -S31560048CF0000000000000000000000000000000000A -S31560048D0000000000000000000000000000000000F9 -S31560048D1000000000000000000000000000000000E9 -S31560048D2000000000000000000000000000000000D9 -S31560048D3000000000000000000000000000000000C9 -S31560048D4000000000000000000000000000000000B9 -S31560048D5000000000000000000000000000000000A9 -S31560048D600000000000000000000000000000000099 -S31560048D700000000000000000000000000000000089 -S31560048D800000000000000000000000000000000079 -S31560048D900000000000000000000000000000000069 -S31560048DA00000000000000000000000000000000059 -S31560048DB00000000000000000000000000000000049 -S31560048DC00000000000000000000000000000000039 -S31560048DD00000000000000000000000000000000029 -S31560048DE00000000000000000000000000000000019 -S31560048DF00000000000000000000000000000000009 -S31560048E0000000000000000000000000000000000F8 -S31560048E1000000000000000000000000000000000E8 -S31560048E2000000000000000000000000000000000D8 -S31560048E3000000000000000000000000000000000C8 -S31560048E4000000000000000000000000000000000B8 -S31560048E5000000000000000000000000000000000A8 -S31560048E600000000000000000000000000000000098 -S31560048E700000000000000000000000000000000088 -S31560048E800000000000000000000000000000000078 -S31560048E900000000000000000000000000000000068 -S31560048EA00000000000000000000000000000000058 -S31560048EB00000000000000000000000000000000048 -S31560048EC00000000000000000000000000000000038 -S31560048ED00000000000000000000000000000000028 -S31560048EE00000000000000000000000000000000018 -S31560048EF00000000000000000000000000000000008 -S31560048F0000000000000000000000000000000000F7 -S31560048F1000000000000000000000000000000000E7 -S31560048F2000000000000000000000000000000000D7 -S31560048F3000000000000000000000000000000000C7 -S31560048F4000000000000000000000000000000000B7 -S31560048F5000000000000000000000000000000000A7 -S31560048F600000000000000000000000000000000097 -S31560048F700000000000000000000000000000000087 -S31560048F800000000000000000000000000000000077 -S31560048F900000000000000000000000000000000067 -S31560048FA00000000000000000000000000000000057 -S31560048FB00000000000000000000000000000000047 -S31560048FC00000000000000000000000000000000037 -S31560048FD00000000000000000000000000000000027 -S31560048FE00000000000000000000000000000000017 -S31560048FF00000000000000000000000000000000007 -S3156004900000000000000000000000000000000000F6 -S3156004901000000000000000000000000000000000E6 -S3156004902000000000000000000000000000000000D6 -S3156004903000000000000000000000000000000000C6 -S3156004904000000000000000000000000000000000B6 -S3156004905000000000000000000000000000000000A6 -S315600490600000000000000000000000000000000096 -S315600490700000000000000000000000000000000086 -S315600490800000000000000000000000000000000076 -S315600490900000000000000000000000000000000066 -S315600490A00000000000000000000000000000000056 -S315600490B00000000000000000000000000000000046 -S315600490C00000000000000000000000000000000036 -S315600490D00000000000000000000000000000000026 -S315600490E00000000000000000000000000000000016 -S315600490F00000000000000000000000000000000006 -S3156004910000000000000000000000000000000000F5 -S3156004911000000000000000000000000000000000E5 -S3156004912000000000000000000000000000000000D5 -S3156004913000000000000000000000000000000000C5 -S3156004914000000000000000000000000000000000B5 -S3156004915000000000000000000000000000000000A5 -S315600491600000000000000000000000000000000095 -S315600491700000000000000000000000000000000085 -S315600491800000000000000000000000000000000075 -S315600491900000000000000000000000000000000065 -S315600491A00000000000000000000000000000000055 -S315600491B00000000000000000000000000000000045 -S315600491C00000000000000000000000000000000035 -S315600491D00000000000000000000000000000000025 -S315600491E00000000000000000000000000000000015 -S315600491F00000000000000000000000000000000005 -S3156004920000000000000000000000000000000000F4 -S3156004921000000000000000000000000000000000E4 -S3156004922000000000000000000000000000000000D4 -S3156004923000000000000000000000000000000000C4 -S3156004924000000000000000000000000000000000B4 -S3156004925000000000000000000000000000000000A4 -S315600492600000000000000000000000000000000094 -S315600492700000000000000000000000000000000084 -S315600492800000000000000000000000000000000074 -S315600492900000000000000000000000000000000064 -S315600492A00000000000000000000000000000000054 -S315600492B00000000000000000000000000000000044 -S315600492C00000000000000000000000000000000034 -S315600492D00000000000000000000000000000000024 -S315600492E00000000000000000000000000000000014 -S315600492F00000000000000000000000000000000004 -S3156004930000000000000000000000000000000000F3 -S3156004931000000000000000000000000000000000E3 -S3156004932000000000000000000000000000000000D3 -S3156004933000000000000000000000000000000000C3 -S3156004934000000000000000000000000000000000B3 -S3156004935000000000000000000000000000000000A3 -S315600493600000000000000000000000000000000093 -S315600493700000000000000000000000000000000083 -S315600493800000000000000000000000000000000073 -S315600493900000000000000000000000000000000063 -S315600493A00000000000000000000000000000000053 -S315600493B00000000000000000000000000000000043 -S315600493C00000000000000000000000000000000033 -S315600493D00000000000000000000000000000000023 -S315600493E00000000000000000000000000000000013 -S315600493F00000000000000000000000000000000003 -S3156004940000000000000000000000000000000000F2 -S3156004941000000000000000000000000000000000E2 -S3156004942000000000000000000000000000000000D2 -S3156004943000000000000000000000000000000000C2 -S3156004944000000000000000000000000000000000B2 -S3156004945000000000000000000000000000000000A2 -S315600494600000000000000000000000000000000092 -S315600494700000000000000000000000000000000082 -S315600494800000000000000000000000000000000072 -S315600494900000000000000000000000000000000062 -S315600494A00000000000000000000000000000000052 -S315600494B00000000000000000000000000000000042 -S315600494C00000000000000000000000000000000032 -S315600494D00000000000000000000000000000000022 -S315600494E00000000000000000000000000000000012 -S315600494F00000000000000000000000000000000002 -S3156004950000000000000000000000000000000000F1 -S3156004951000000000000000000000000000000000E1 -S3156004952000000000000000000000000000000000D1 -S3156004953000000000000000000000000000000000C1 -S3156004954000000000000000000000000000000000B1 -S3156004955000000000000000000000000000000000A1 -S315600495600000000000000000000000000000000091 -S315600495700000000000000000000000000000000081 -S315600495800000000000000000000000000000000071 -S315600495900000000000000000000000000000000061 -S315600495A00000000000000000000000000000000051 -S315600495B00000000000000000000000000000000041 -S315600495C00000000000000000000000000000000031 -S315600495D00000000000000000000000000000000021 -S315600495E00000000000000000000000000000000011 -S315600495F00000000000000000000000000000000001 -S3156004960000000000000000000000000000000000F0 -S3156004961000000000000000000000000000000000E0 -S3156004962000000000000000000000000000000000D0 -S3156004963000000000000000000000000000000000C0 -S3156004964000000000000000000000000000000000B0 -S3156004965000000000000000000000000000000000A0 -S315600496600000000000000000000000000000000090 -S315600496700000000000000000000000000000000080 -S315600496800000000000000000000000000000000070 -S315600496900000000000000000000000000000000060 -S315600496A00000000000000000000000000000000050 -S315600496B00000000000000000000000000000000040 -S315600496C00000000000000000000000000000000030 -S315600496D00000000000000000000000000000000020 -S315600496E00000000000000000000000000000000010 -S315600496F00000000000000000000000000000000000 -S3156004970000000000000000000000000000000000EF -S3156004971000000000000000000000000000000000DF -S3156004972000000000000000000000000000000000CF -S3156004973000000000000000000000000000000000BF -S3156004974000000000000000000000000000000000AF -S31560049750000000000000000000000000000000009F -S31560049760000000000000000000000000000000008F -S31560049770000000000000000000000000000000007F -S31560049780000000000000000000000000000000006F -S31560049790000000000000000000000000000000005F -S315600497A0000000000000000000000000000000004F -S315600497B0000000000000000000000000000000003F -S315600497C0000000000000000000000000000000002F -S315600497D0000000000000000000000000000000001F -S315600497E0000000000000000000000000000000000F -S315600497F000000000000000000000000000000000FF -S3156004980000000000000000000000000000000000EE -S3156004981000000000000000000000000000000000DE -S3156004982000000000000000000000000000000000CE -S3156004983000000000000000000000000000000000BE -S3156004984000000000000000000000000000000000AE -S31560049850000000000000000000000000000000009E -S31560049860000000000000000000000000000000008E -S31560049870000000000000000000000000000000007E -S31560049880000000000000000000000000000000006E -S31560049890000000000000000000000000000000005E -S315600498A0000000000000000000000000000000004E -S315600498B0000000000000000000000000000000003E -S315600498C0000000000000000000000000000000002E -S315600498D0000000000000000000000000000000001E -S315600498E0000000000000000000000000000000000E -S315600498F000000000000000000000000000000000FE -S3156004990000000000000000000000000000000000ED -S3156004991000000000000000000000000000000000DD -S3156004992000000000000000000000000000000000CD -S3156004993000000000000000000000000000000000BD -S3156004994000000000000000000000000000000000AD -S31560049950000000000000000000000000000000009D -S31560049960000000000000000000000000000000008D -S31560049970000000000000000000000000000000007D -S31560049980000000000000000000000000000000006D -S31560049990000000000000000000000000000000005D -S315600499A0000000000000000000000000000000004D -S315600499B0000000000000000000000000000000003D -S315600499C0000000000000000000000000000000002D -S315600499D0000000000000000000000000000000001D -S315600499E0000000000000000000000000000000000D -S315600499F000000000000000000000000000000000FD -S31560049A0000000000000000000000000000000000EC -S31560049A1000000000000000000000000000000000DC -S31560049A2000000000000000000000000000000000CC -S31560049A3000000000000000000000000000000000BC -S31560049A4000000000000000000000000000000000AC -S31560049A50000000000000000000000000000000009C -S31560049A60000000000000000000000000000000008C -S31560049A70000000000000000000000000000000007C -S31560049A80000000000000000000000000000000006C -S31560049A90000000000000000000000000000000005C -S31560049AA0000000000000000000000000000000004C -S31560049AB0000000000000000000000000000000003C -S31560049AC0000000000000000000000000000000002C -S31560049AD0000000000000000000000000000000001C -S31560049AE0000000000000000000000000000000000C -S31560049AF000000000000000000000000000000000FC -S31560049B0000000000000000000000000000000000EB -S31560049B1000000000000000000000000000000000DB -S31560049B2000000000000000000000000000000000CB -S31560049B3000000000000000000000000000000000BB -S31560049B4000000000000000000000000000000000AB -S31560049B50000000000000000000000000000000009B -S31560049B60000000000000000000000000000000008B -S31560049B70000000000000000000000000000000007B -S31560049B80000000000000000000000000000000006B -S31560049B90000000000000000000000000000000005B -S31560049BA0000000000000000000000000000000004B -S31560049BB0000000000000000000000000000000003B -S31560049BC0000000000000000000000000000000002B -S31560049BD0000000000000000000000000000000001B -S31560049BE0000000000000000000000000000000000B -S31560049BF000000000000000000000000000000000FB -S31560049C0000000000000000000000000000000000EA -S31560049C1000000000000000000000000000000000DA -S31560049C2000000000000000000000000000000000CA -S31560049C3000000000000000000000000000000000BA -S31560049C4000000000000000000000000000000000AA -S31560049C50000000000000000000000000000000009A -S31560049C60000000000000000000000000000000008A -S31560049C70000000000000000000000000000000007A -S31560049C80000000000000000000000000000000006A -S31560049C90000000000000000000000000000000005A -S31560049CA0000000000000000000000000000000004A -S31560049CB0000000000000000000000000000000003A -S31560049CC0000000000000000000000000000000002A -S31560049CD0000000000000000000000000000000001A -S31560049CE0000000000000000000000000000000000A -S31560049CF000000000000000000000000000000000FA -S31560049D0000000000000000000000000000000000E9 -S31560049D1000000000000000000000000000000000D9 -S31560049D2000000000000000000000000000000000C9 -S31560049D3000000000000000000000000000000000B9 -S31560049D4000000000000000000000000000000000A9 -S31560049D500000000000000000000000000000000099 -S31560049D600000000000000000000000000000000089 -S31560049D700000000000000000000000000000000079 -S31560049D800000000000000000000000000000000069 -S31560049D900000000000000000000000000000000059 -S31560049DA00000000000000000000000000000000049 -S31560049DB00000000000000000000000000000000039 -S31560049DC00000000000000000000000000000000029 -S31560049DD00000000000000000000000000000000019 -S31560049DE00000000000000000000000000000000009 -S31560049DF000000000000000000000000000000000F9 -S31560049E0000000000000000000000000000000000E8 -S31560049E1000000000000000000000000000000000D8 -S31560049E2000000000000000000000000000000000C8 -S31560049E3000000000000000000000000000000000B8 -S31560049E4000000000000000000000000000000000A8 -S31560049E500000000000000000000000000000000098 -S31560049E600000000000000000000000000000000088 -S31560049E700000000000000000000000000000000078 -S31560049E800000000000000000000000000000000068 -S31560049E900000000000000000000000000000000058 -S31560049EA00000000000000000000000000000000048 -S31560049EB00000000000000000000000000000000038 -S31560049EC00000000000000000000000000000000028 -S31560049ED00000000000000000000000000000000018 -S31560049EE00000000000000000000000000000000008 -S31560049EF000000000000000000000000000000000F8 -S31560049F0000000000000000000000000000000000E7 -S31560049F1000000000000000000000000000000000D7 -S31560049F2000000000000000000000000000000000C7 -S31560049F3000000000000000000000000000000000B7 -S31560049F4000000000000000000000000000000000A7 -S31560049F500000000000000000000000000000000097 -S31560049F600000000000000000000000000000000087 -S31560049F700000000000000000000000000000000077 -S31560049F800000000000000000000000000000000067 -S31560049F900000000000000000000000000000000057 -S31560049FA00000000000000000000000000000000047 -S31560049FB00000000000000000000000000000000037 -S31560049FC00000000000000000000000000000000027 -S31560049FD00000000000000000000000000000000017 -S31560049FE00000000000000000000000000000000007 -S31560049FF000000000000000000000000000000000F7 -S3156004A00000000000000000000000000000000000E6 -S3156004A01000000000000000000000000000000000D6 -S3156004A02000000000000000000000000000000000C6 -S3156004A03000000000000000000000000000000000B6 -S3156004A04000000000000000000000000000000000A6 -S3156004A0500000000000000000000000000000000096 -S3156004A0600000000000000000000000000000000086 -S3156004A0700000000000000000000000000000000076 -S3156004A0800000000000000000000000000000000066 -S3156004A0900000000000000000000000000000000056 -S3156004A0A00000000000000000000000000000000046 -S3156004A0B00000000000000000000000000000000036 -S3156004A0C00000000000000000000000000000000026 -S3156004A0D00000000000000000000000000000000016 -S3156004A0E00000000000000000000000000000000006 -S3156004A0F000000000000000000000000000000000F6 -S3156004A10000000000000000000000000000000000E5 -S3156004A11000000000000000000000000000000000D5 -S3156004A12000000000000000000000000000000000C5 -S3156004A13000000000000000000000000000000000B5 -S3156004A14000000000000000000000000000000000A5 -S3156004A1500000000000000000000000000000000095 -S3156004A1600000000000000000000000000000000085 -S3156004A1700000000000000000000000000000000075 -S3156004A1800000000000000000000000000000000065 -S3156004A1900000000000000000000000000000000055 -S3156004A1A00000000000000000000000000000000045 -S3156004A1B00000000000000000000000000000000035 -S3156004A1C00000000000000000000000000000000025 -S3156004A1D00000000000000000000000000000000015 -S3156004A1E00000000000000000000000000000000005 -S3156004A1F000000000000000000000000000000000F5 -S3156004A20000000000000000000000000000000000E4 -S3156004A21000000000000000000000000000000000D4 -S3156004A22000000000000000000000000000000000C4 -S3156004A23000000000000000000000000000000000B4 -S3156004A24000000000000000000000000000000000A4 -S3156004A2500000000000000000000000000000000094 -S3156004A2600000000000000000000000000000000084 -S3156004A2700000000000000000000000000000000074 -S3156004A2800000000000000000000000000000000064 -S3156004A2900000000000000000000000000000000054 -S3156004A2A00000000000000000000000000000000044 -S3156004A2B00000000000000000000000000000000034 -S3156004A2C00000000000000000000000000000000024 -S3156004A2D00000000000000000000000000000000014 -S3156004A2E00000000000000000000000000000000004 -S3156004A2F000000000000000000000000000000000F4 -S3156004A30000000000000000000000000000000000E3 -S3156004A31000000000000000000000000000000000D3 -S3156004A32000000000000000000000000000000000C3 -S3156004A33000000000000000000000000000000000B3 -S3156004A34000000000000000000000000000000000A3 -S3156004A3500000000000000000000000000000000093 -S3156004A3600000000000000000000000000000000083 -S3156004A3700000000000000000000000000000000073 -S3156004A3800000000000000000000000000000000063 -S3156004A3900000000000000000000000000000000053 -S3156004A3A00000000000000000000000000000000043 -S3156004A3B00000000000000000000000000000000033 -S3156004A3C00000000000000000000000000000000023 -S3156004A3D00000000000000000000000000000000013 -S3156004A3E00000000000000000000000000000000003 -S3156004A3F000000000000000000000000000000000F3 -S3156004A40000000000000000000000000000000000E2 -S3156004A41000000000000000000000000000000000D2 -S3156004A42000000000000000000000000000000000C2 -S3156004A43000000000000000000000000000000000B2 -S3156004A44000000000000000000000000000000000A2 -S3156004A4500000000000000000000000000000000092 -S3156004A4600000000000000000000000000000000082 -S3156004A4700000000000000000000000000000000072 -S3156004A4800000000000000000000000000000000062 -S3156004A4900000000000000000000000000000000052 -S3156004A4A00000000000000000000000000000000042 -S3156004A4B00000000000000000000000000000000032 -S3156004A4C00000000000000000000000000000000022 -S3156004A4D00000000000000000000000000000000012 -S3156004A4E00000000000000000000000000000000002 -S3156004A4F000000000000000000000000000000000F2 -S3156004A50000000000000000000000000000000000E1 -S3156004A51000000000000000000000000000000000D1 -S3156004A52000000000000000000000000000000000C1 -S3156004A53000000000000000000000000000000000B1 -S3156004A54000000000000000000000000000000000A1 -S3156004A5500000000000000000000000000000000091 -S3156004A5600000000000000000000000000000000081 -S3156004A5700000000000000000000000000000000071 -S3156004A5800000000000000000000000000000000061 -S3156004A5900000000000000000000000000000000051 -S3156004A5A00000000000000000000000000000000041 -S3156004A5B00000000000000000000000000000000031 -S3156004A5C00000000000000000000000000000000021 -S3156004A5D00000000000000000000000000000000011 -S3156004A5E00000000000000000000000000000000001 -S3156004A5F000000000000000000000000000000000F1 -S3156004A60000000000000000000000000000000000E0 -S3156004A61000000000000000000000000000000000D0 -S3156004A62000000000000000000000000000000000C0 -S3156004A63000000000000000000000000000000000B0 -S3156004A64000000000000000000000000000000000A0 -S3156004A6500000000000000000000000000000000090 -S3156004A6600000000000000000000000000000000080 -S3156004A6700000000000000000000000000000000070 -S3156004A6800000000000000000000000000000000060 -S3156004A6900000000000000000000000000000000050 -S3156004A6A00000000000000000000000000000000040 -S3156004A6B00000000000000000000000000000000030 -S3156004A6C00000000000000000000000000000000020 -S3156004A6D00000000000000000000000000000000010 -S3156004A6E00000000000000000000000000000000000 -S3156004A6F000000000000000000000000000000000F0 -S3156004A70000000000000000000000000000000000DF -S3156004A71000000000000000000000000000000000CF -S3156004A72000000000000000000000000000000000BF -S3156004A73000000000000000000000000000000000AF -S3156004A740000000000000000000000000000000009F -S3156004A750000000000000000000000000000000008F -S3156004A760000000000000000000000000000000007F -S3156004A770000000000000000000000000000000006F -S3156004A780000000000000000000000000000000005F -S3156004A790000000000000000000000000000000004F -S3156004A7A0000000000000000000000000000000003F -S3156004A7B0000000000000000000000000000000002F -S3156004A7C0000000000000000000000000000000001F -S3156004A7D0000000000000000000000000000000000F -S3156004A7E000000000000000000000000000000000FF -S3156004A7F000000000000000000000000000000000EF -S3156004A80000000000000000000000000000000000DE -S3156004A81000000000000000000000000000000000CE -S3156004A82000000000000000000000000000000000BE -S3156004A83000000000000000000000000000000000AE -S3156004A840000000000000000000000000000000009E -S3156004A850000000000000000000000000000000008E -S3156004A860000000000000000000000000000000007E -S3156004A870000000000000000000000000000000006E -S3156004A880000000000000000000000000000000005E -S3156004A890000000000000000000000000000000004E -S3156004A8A0000000000000000000000000000000003E -S3156004A8B0000000000000000000000000000000002E -S3156004A8C0000000000000000000000000000000001E -S3156004A8D0000000000000000000000000000000000E -S3156004A8E000000000000000000000000000000000FE -S3156004A8F000000000000000000000000000000000EE -S3156004A90000000000000000000000000000000000DD -S3156004A91000000000000000000000000000000000CD -S3156004A92000000000000000000000000000000000BD -S3156004A93000000000000000000000000000000000AD -S3156004A940000000000000000000000000000000009D -S3156004A950000000000000000000000000000000008D -S3156004A960000000000000000000000000000000007D -S3156004A970000000000000000000000000000000006D -S3156004A980000000000000000000000000000000005D -S3156004A990000000000000000000000000000000004D -S3156004A9A0000000000000000000000000000000003D -S3156004A9B0000000000000000000000000000000002D -S3156004A9C0000000000000000000000000000000001D -S3156004A9D0000000000000000000000000000000000D -S3156004A9E000000000000000000000000000000000FD -S3156004A9F000000000000000000000000000000000ED -S3156004AA0000000000000000000000000000000000DC -S3156004AA1000000000000000000000000000000000CC -S3156004AA2000000000000000000000000000000000BC -S3156004AA3000000000000000000000000000000000AC -S3156004AA40000000000000000000000000000000009C -S3156004AA50000000000000000000000000000000008C -S3156004AA60000000000000000000000000000000007C -S3156004AA70000000000000000000000000000000006C -S3156004AA80000000000000000000000000000000005C -S3156004AA90000000000000000000000000000000004C -S3156004AAA0000000000000000000000000000000003C -S3156004AAB0000000000000000000000000000000002C -S3156004AAC0000000000000000000000000000000001C -S3156004AAD0000000000000000000000000000000000C -S3156004AAE000000000000000000000000000000000FC -S3156004AAF000000000000000000000000000000000EC -S3156004AB0000000000000000000000000000000000DB -S3156004AB1000000000000000000000000000000000CB -S3156004AB2000000000000000000000000000000000BB -S3156004AB3000000000000000000000000000000000AB -S3156004AB40000000000000000000000000000000009B -S3156004AB50000000000000000000000000000000008B -S3156004AB60000000000000000000000000000000007B -S3156004AB70000000000000000000000000000000006B -S3156004AB80000000000000000000000000000000005B -S3156004AB90000000000000000000000000000000004B -S3156004ABA0000000000000000000000000000000003B -S3156004ABB0000000000000000000000000000000002B -S3156004ABC0000000000000000000000000000000001B -S3156004ABD0000000000000000000000000000000000B -S3156004ABE000000000000000000000000000000000FB -S3156004ABF000000000000000000000000000000000EB -S3156004AC0000000000000000000000000000000000DA -S3156004AC1000000000000000000000000000000000CA -S3156004AC2000000000000000000000000000000000BA -S3156004AC3000000000000000000000000000000000AA -S3156004AC40000000000000000000000000000000009A -S3156004AC50000000000000000000000000000000008A -S3156004AC60000000000000000000000000000000007A -S3156004AC70000000000000000000000000000000006A -S3156004AC80000000000000000000000000000000005A -S3156004AC90000000000000000000000000000000004A -S3156004ACA0000000000000000000000000000000003A -S3156004ACB0000000000000000000000000000000002A -S3156004ACC0000000000000000000000000000000001A -S3156004ACD0000000000000000000000000000000000A -S3156004ACE000000000000000000000000000000000FA -S3156004ACF000000000000000000000000000000000EA -S3156004AD0000000000000000000000000000000000D9 -S3156004AD1000000000000000000000000000000000C9 -S3156004AD2000000000000000000000000000000000B9 -S3156004AD3000000000000000000000000000000000A9 -S3156004AD400000000000000000000000000000000099 -S3156004AD500000000000000000000000000000000089 -S3156004AD600000000000000000000000000000000079 -S3156004AD700000000000000000000000000000000069 -S3156004AD800000000000000000000000000000000059 -S3156004AD900000000000000000000000000000000049 -S3156004ADA00000000000000000000000000000000039 -S3156004ADB00000000000000000000000000000000029 -S3156004ADC00000000000000000000000000000000019 -S3156004ADD00000000000000000000000000000000009 -S3156004ADE000000000000000000000000000000000F9 -S3156004ADF000000000000000000000000000000000E9 -S3156004AE0000000000000000000000000000000000D8 -S3156004AE1000000000000000000000000000000000C8 -S3156004AE2000000000000000000000000000000000B8 -S3156004AE3000000000000000000000000000000000A8 -S3156004AE400000000000000000000000000000000098 -S3156004AE500000000000000000000000000000000088 -S3156004AE600000000000000000000000000000000078 -S3156004AE700000000000000000000000000000000068 -S3156004AE800000000000000000000000000000000058 -S3156004AE900000000000000000000000000000000048 -S3156004AEA00000000000000000000000000000000038 -S3156004AEB00000000000000000000000000000000028 -S3156004AEC00000000000000000000000000000000018 -S3156004AED00000000000000000000000000000000008 -S3156004AEE000000000000000000000000000000000F8 -S3156004AEF000000000000000000000000000000000E8 -S3156004AF0000000000000000000000000000000000D7 -S3156004AF1000000000000000000000000000000000C7 -S3156004AF2000000000000000000000000000000000B7 -S3156004AF3000000000000000000000000000000000A7 -S3156004AF400000000000000000000000000000000097 -S3156004AF500000000000000000000000000000000087 -S3156004AF600000000000000000000000000000000077 -S3156004AF700000000000000000000000000000000067 -S3156004AF800000000000000000000000000000000057 -S3156004AF900000000000000000000000000000000047 -S3156004AFA00000000000000000000000000000000037 -S3156004AFB00000000000000000000000000000000027 -S3156004AFC00000000000000000000000000000000017 -S3156004AFD00000000000000000000000000000000007 -S3156004AFE000000000000000000000000000000000F7 -S3156004AFF000000000000000000000000000000000E7 -S3156004B00000000000000000000000000000000000D6 -S3156004B01000000000000000000000000000000000C6 -S3156004B02000000000000000000000000000000000B6 -S3156004B03000000000000000000000000000000000A6 -S3156004B0400000000000000000000000000000000096 -S3156004B0500000000000000000000000000000000086 -S3156004B0600000000000000000000000000000000076 -S3156004B0700000000000000000000000000000000066 -S3156004B0800000000000000000000000000000000056 -S3156004B0900000000000000000000000000000000046 -S3156004B0A00000000000000000000000000000000036 -S3156004B0B00000000000000000000000000000000026 -S3156004B0C00000000000000000000000000000000016 -S3156004B0D00000000000000000000000000000000006 -S3156004B0E000000000000000000000000000000000F6 -S3156004B0F000000000000000000000000000000000E6 -S3156004B10000000000000000000000000000000000D5 -S3156004B11000000000000000000000000000000000C5 -S3156004B12000000000000000000000000000000000B5 -S3156004B13000000000000000000000000000000000A5 -S3156004B1400000000000000000000000000000000095 -S3156004B1500000000000000000000000000000000085 -S3156004B1600000000000000000000000000000000075 -S3156004B1700000000000000000000000000000000065 -S3156004B1800000000000000000000000000000000055 -S3156004B1900000000000000000000000000000000045 -S3156004B1A00000000000000000000000000000000035 -S3156004B1B00000000000000000000000000000000025 -S3156004B1C00000000000000000000000000000000015 -S3156004B1D00000000000000000000000000000000005 -S3156004B1E000000000000000000000000000000000F5 -S3156004B1F000000000000000000000000000000000E5 -S3156004B20000000000000000000000000000000000D4 -S3156004B21000000000000000000000000000000000C4 -S3156004B22000000000000000000000000000000000B4 -S3156004B23000000000000000000000000000000000A4 -S3156004B2400000000000000000000000000000000094 -S3156004B2500000000000000000000000000000000084 -S3156004B2600000000000000000000000000000000074 -S3156004B2700000000000000000000000000000000064 -S3156004B2800000000000000000000000000000000054 -S3156004B2900000000000000000000000000000000044 -S3156004B2A00000000000000000000000000000000034 -S3156004B2B00000000000000000000000000000000024 -S3156004B2C00000000000000000000000000000000014 -S3156004B2D00000000000000000000000000000000004 -S3156004B2E000000000000000000000000000000000F4 -S3156004B2F000000000000000000000000000000000E4 -S3156004B30000000000000000000000000000000000D3 -S3156004B31000000000000000000000000000000000C3 -S3156004B32000000000000000000000000000000000B3 -S3156004B33000000000000000000000000000000000A3 -S3156004B3400000000000000000000000000000000093 -S3156004B3500000000000000000000000000000000083 -S3156004B3600000000000000000000000000000000073 -S3156004B3700000000000000000000000000000000063 -S3156004B3800000000000000000000000000000000053 -S3156004B3900000000000000000000000000000000043 -S3156004B3A00000000000000000000000000000000033 -S3156004B3B00000000000000000000000000000000023 -S3156004B3C00000000000000000000000000000000013 -S3156004B3D00000000000000000000000000000000003 -S3156004B3E000000000000000000000000000000000F3 -S3156004B3F000000000000000000000000000000000E3 -S3156004B40000000000000000000000000000000000D2 -S3156004B41000000000000000000000000000000000C2 -S3156004B42000000000000000000000000000000000B2 -S3156004B43000000000000000000000000000000000A2 -S3156004B4400000000000000000000000000000000092 -S3156004B4500000000000000000000000000000000082 -S3156004B4600000000000000000000000000000000072 -S3156004B4700000000000000000000000000000000062 -S3156004B4800000000000000000000000000000000052 -S3156004B4900000000000000000000000000000000042 -S3156004B4A00000000000000000000000000000000032 -S3156004B4B00000000000000000000000000000000022 -S3156004B4C00000000000000000000000000000000012 -S3156004B4D00000000000000000000000000000000002 -S3156004B4E000000000000000000000000000000000F2 -S3156004B4F000000000000000000000000000000000E2 -S3156004B50000000000000000000000000000000000D1 -S3156004B51000000000000000000000000000000000C1 -S3156004B52000000000000000000000000000000000B1 -S3156004B53000000000000000000000000000000000A1 -S3156004B5400000000000000000000000000000000091 -S3156004B5500000000000000000000000000000000081 -S3156004B5600000000000000000000000000000000071 -S3156004B5700000000000000000000000000000000061 -S3156004B5800000000000000000000000000000000051 -S3156004B5900000000000000000000000000000000041 -S3156004B5A00000000000000000000000000000000031 -S3156004B5B00000000000000000000000000000000021 -S3156004B5C00000000000000000000000000000000011 -S3156004B5D00000000000000000000000000000000001 -S3156004B5E000000000000000000000000000000000F1 -S3156004B5F000000000000000000000000000000000E1 -S3156004B60000000000000000000000000000000000D0 -S3156004B61000000000000000000000000000000000C0 -S3156004B62000000000000000000000000000000000B0 -S3156004B63000000000000000000000000000000000A0 -S3156004B6400000000000000000000000000000000090 -S3156004B6500000000000000000000000000000000080 -S3156004B6600000000000000000000000000000000070 -S3156004B6700000000000000000000000000000000060 -S3156004B6800000000000000000000000000000000050 -S3156004B6900000000000000000000000000000000040 -S3156004B6A00000000000000000000000000000000030 -S3156004B6B00000000000000000000000000000000020 -S3156004B6C00000000000000000000000000000000010 -S3156004B6D00000000000000000000000000000000000 -S3156004B6E000000000000000000000000000000000F0 -S3156004B6F000000000000000000000000000000000E0 -S3156004B70000000000000000000000000000000000CF -S3156004B71000000000000000000000000000000000BF -S3156004B72000000000000000000000000000000000AF -S3156004B730000000000000000000000000000000009F -S3156004B740000000000000000000000000000000008F -S3156004B750000000000000000000000000000000007F -S3156004B760000000000000000000000000000000006F -S3156004B770000000000000000000000000000000005F -S3156004B780000000000000000000000000000000004F -S3156004B790000000000000000000000000000000003F -S3156004B7A0000000000000000000000000000000002F -S3156004B7B0000000000000000000000000000000001F -S3156004B7C0000000000000000000000000000000000F -S3156004B7D000000000000000000000000000000000FF -S3156004B7E000000000000000000000000000000000EF -S3156004B7F000000000000000000000000000000000DF -S3156004B80000000000000000000000000000000000CE -S3156004B81000000000000000000000000000000000BE -S3156004B82000000000000000000000000000000000AE -S3156004B830000000000000000000000000000000009E -S3156004B840000000000000000000000000000000008E -S3156004B850000000000000000000000000000000007E -S3156004B860000000000000000000000000000000006E -S3156004B870000000000000000000000000000000005E -S3156004B880000000000000000000000000000000004E -S3156004B890000000000000000000000000000000003E -S3156004B8A0000000000000000000000000000000002E -S3156004B8B0000000000000000000000000000000001E -S3156004B8C0000000000000000000000000000000000E -S3156004B8D000000000000000000000000000000000FE -S3156004B8E000000000000000000000000000000000EE -S3156004B8F000000000000000000000000000000000DE -S3156004B90000000000000000000000000000000000CD -S3156004B91000000000000000000000000000000000BD -S3156004B92000000000000000000000000000000000AD -S3156004B930000000000000000000000000000000009D -S3156004B940000000000000000000000000000000008D -S3156004B950000000000000000000000000000000007D -S3156004B960000000000000000000000000000000006D -S3156004B970000000000000000000000000000000005D -S3156004B980000000000000000000000000000000004D -S3156004B990000000000000000000000000000000003D -S3156004B9A0000000000000000000000000000000002D -S3156004B9B0000000000000000000000000000000001D -S3156004B9C0000000000000000000000000000000000D -S3156004B9D000000000000000000000000000000000FD -S3156004B9E000000000000000000000000000000000ED -S3156004B9F000000000000000000000000000000000DD -S3156004BA0000000000000000000000000000000000CC -S3156004BA1000000000000000000000000000000000BC -S3156004BA2000000000000000000000000000000000AC -S3156004BA30000000000000000000000000000000009C -S3156004BA40000000000000000000000000000000008C -S3156004BA50000000000000000000000000000000007C -S3156004BA60000000000000000000000000000000006C -S3156004BA70000000000000000000000000000000005C -S3156004BA80000000000000000000000000000000004C -S3156004BA90000000000000000000000000000000003C -S3156004BAA0000000000000000000000000000000002C -S3156004BAB0000000000000000000000000000000001C -S3156004BAC0000000000000000000000000000000000C -S3156004BAD000000000000000000000000000000000FC -S3156004BAE000000000000000000000000000000000EC -S3156004BAF000000000000000000000000000000000DC -S3156004BB0000000000000000000000000000000000CB -S3156004BB1000000000000000000000000000000000BB -S3156004BB2000000000000000000000000000000000AB -S3156004BB30000000000000000000000000000000009B -S3156004BB40000000000000000000000000000000008B -S3156004BB50000000000000000000000000000000007B -S3156004BB60000000000000000000000000000000006B -S3156004BB70000000000000000000000000000000005B -S3156004BB80000000000000000000000000000000004B -S3156004BB90000000000000000000000000000000003B -S3156004BBA0000000000000000000000000000000002B -S3156004BBB0000000000000000000000000000000001B -S3156004BBC0000000000000000000000000000000000B -S3156004BBD000000000000000000000000000000000FB -S3156004BBE000000000000000000000000000000000EB -S3156004BBF000000000000000000000000000000000DB -S3156004BC0000000000000000000000000000000000CA -S3156004BC1000000000000000000000000000000000BA -S3156004BC2000000000000000000000000000000000AA -S3156004BC30000000000000000000000000000000009A -S3156004BC40000000000000000000000000000000008A -S3156004BC50000000000000000000000000000000007A -S3156004BC60000000000000000000000000000000006A -S3156004BC70000000000000000000000000000000005A -S3156004BC80000000000000000000000000000000004A -S3156004BC90000000000000000000000000000000003A -S3156004BCA0000000000000000000000000000000002A -S3156004BCB0000000000000000000000000000000001A -S3156004BCC0000000000000000000000000000000000A -S3156004BCD000000000000000000000000000000000FA -S3156004BCE000000000000000000000000000000000EA -S3156004BCF000000000000000000000000000000000DA -S3156004BD0000000000000000000000000000000000C9 -S3156004BD1000000000000000000000000000000000B9 -S3156004BD2000000000000000000000000000000000A9 -S3156004BD300000000000000000000000000000000099 -S3156004BD400000000000000000000000000000000089 -S3156004BD500000000000000000000000000000000079 -S3156004BD600000000000000000000000000000000069 -S3156004BD700000000000000000000000000000000059 -S3156004BD800000000000000000000000000000000049 -S3156004BD900000000000000000000000000000000039 -S3156004BDA00000000000000000000000000000000029 -S3156004BDB00000000000000000000000000000000019 -S3156004BDC00000000000000000000000000000000009 -S3156004BDD000000000000000000000000000000000F9 -S3156004BDE000000000000000000000000000000000E9 -S3156004BDF000000000000000000000000000000000D9 -S3156004BE0000000000000000000000000000000000C8 -S3156004BE1000000000000000000000000000000000B8 -S3156004BE2000000000000000000000000000000000A8 -S3156004BE300000000000000000000000000000000098 -S3156004BE400000000000000000000000000000000088 -S3156004BE500000000000000000000000000000000078 -S3156004BE600000000000000000000000000000000068 -S3156004BE700000000000000000000000000000000058 -S3156004BE800000000000000000000000000000000048 -S3156004BE900000000000000000000000000000000038 -S3156004BEA00000000000000000000000000000000028 -S3156004BEB00000000000000000000000000000000018 -S3156004BEC00000000000000000000000000000000008 -S3156004BED000000000000000000000000000000000F8 -S3156004BEE000000000000000000000000000000000E8 -S3156004BEF000000000000000000000000000000000D8 -S3156004BF0000000000000000000000000000000000C7 -S3156004BF1000000000000000000000000000000000B7 -S3156004BF2000000000000000000000000000000000A7 -S3156004BF300000000000000000000000000000000097 -S3156004BF400000000000000000000000000000000087 -S3156004BF500000000000000000000000000000000077 -S3156004BF600000000000000000000000000000000067 -S3156004BF700000000000000000000000000000000057 -S3156004BF800000000000000000000000000000000047 -S3156004BF900000000000000000000000000000000037 -S3156004BFA00000000000000000000000000000000027 -S3156004BFB00000000000000000000000000000000017 -S3156004BFC00000000000000000000000000000000007 -S3156004BFD000000000000000000000000000000000F7 -S3156004BFE000000000000000000000000000000000E7 -S3156004BFF000000000000000000000000000000000D7 -S3156004C00000000000000000000000000000000000C6 -S3156004C01000000000000000000000000000000000B6 -S3156004C02000000000000000000000000000000000A6 -S3156004C0300000000000000000000000000000000096 -S3156004C0400000000000000000000000000000000086 -S3156004C0500000000000000000000000000000000076 -S3156004C0600000000000000000000000000000000066 -S3156004C0700000000000000000000000000000000056 -S3156004C0800000000000000000000000000000000046 -S3156004C0900000000000000000000000000000000036 -S3156004C0A00000000000000000000000000000000026 -S3156004C0B00000000000000000000000000000000016 -S3156004C0C00000000000000000000000000000000006 -S3156004C0D000000000000000000000000000000000F6 -S3156004C0E000000000000000000000000000000000E6 -S3156004C0F000000000000000000000000000000000D6 -S3156004C10000000000000000000000000000000000C5 -S3156004C11000000000000000000000000000000000B5 -S3156004C12000000000000000000000000000000000A5 -S3156004C1300000000000000000000000000000000095 -S3156004C1400000000000000000000000000000000085 -S3156004C1500000000000000000000000000000000075 -S3156004C1600000000000000000000000000000000065 -S3156004C1700000000000000000000000000000000055 -S3156004C1800000000000000000000000000000000045 -S3156004C1900000000000000000000000000000000035 -S3156004C1A00000000000000000000000000000000025 -S3156004C1B00000000000000000000000000000000015 -S3156004C1C00000000000000000000000000000000005 -S3156004C1D000000000000000000000000000000000F5 -S3156004C1E000000000000000000000000000000000E5 -S3156004C1F000000000000000000000000000000000D5 -S3156004C20000000000000000000000000000000000C4 -S3156004C21000000000000000000000000000000000B4 -S3156004C22000000000000000000000000000000000A4 -S3156004C2300000000000000000000000000000000094 -S3156004C2400000000000000000000000000000000084 -S3156004C2500000000000000000000000000000000074 -S3156004C2600000000000000000000000000000000064 -S3156004C2700000000000000000000000000000000054 -S3156004C2800000000000000000000000000000000044 -S3156004C2900000000000000000000000000000000034 -S3156004C2A00000000000000000000000000000000024 -S3156004C2B00000000000000000000000000000000014 -S3156004C2C00000000000000000000000000000000004 -S3156004C2D000000000000000000000000000000000F4 -S3156004C2E000000000000000000000000000000000E4 -S3156004C2F000000000000000000000000000000000D4 -S3156004C30000000000000000000000000000000000C3 -S3156004C31000000000000000000000000000000000B3 -S3156004C32000000000000000000000000000000000A3 -S3156004C3300000000000000000000000000000000093 -S3156004C3400000000000000000000000000000000083 -S3156004C3500000000000000000000000000000000073 -S3156004C3600000000000000000000000000000000063 -S3156004C3700000000000000000000000000000000053 -S3156004C3800000000000000000000000000000000043 -S3156004C3900000000000000000000000000000000033 -S3156004C3A00000000000000000000000000000000023 -S3156004C3B00000000000000000000000000000000013 -S3156004C3C00000000000000000000000000000000003 -S3156004C3D000000000000000000000000000000000F3 -S3156004C3E000000000000000000000000000000000E3 -S3156004C3F000000000000000000000000000000000D3 -S3156004C40000000000000000000000000000000000C2 -S3156004C41000000000000000000000000000000000B2 -S3156004C42000000000000000000000000000000000A2 -S3156004C4300000000000000000000000000000000092 -S3156004C4400000000000000000000000000000000082 -S3156004C4500000000000000000000000000000000072 -S3156004C4600000000000000000000000000000000062 -S3156004C4700000000000000000000000000000000052 -S3156004C4800000000000000000000000000000000042 -S3156004C4900000000000000000000000000000000032 -S3156004C4A00000000000000000000000000000000022 -S3156004C4B00000000000000000000000000000000012 -S3156004C4C00000000000000000000000000000000002 -S3156004C4D000000000000000000000000000000000F2 -S3156004C4E000000000000000000000000000000000E2 -S3156004C4F000000000000000000000000000000000D2 -S3156004C50000000000000000000000000000000000C1 -S3156004C51000000000000000000000000000000000B1 -S3156004C52000000000000000000000000000000000A1 -S3156004C5300000000000000000000000000000000091 -S3156004C5400000000000000000000000000000000081 -S3156004C5500000000000000000000000000000000071 -S3156004C5600000000000000000000000000000000061 -S3156004C5700000000000000000000000000000000051 -S3156004C5800000000000000000000000000000000041 -S3156004C5900000000000000000000000000000000031 -S3156004C5A00000000000000000000000000000000021 -S3156004C5B00000000000000000000000000000000011 -S3156004C5C00000000000000000000000000000000001 -S3156004C5D000000000000000000000000000000000F1 -S3156004C5E000000000000000000000000000000000E1 -S3156004C5F000000000000000000000000000000000D1 -S3156004C60000000000000000000000000000000000C0 -S3156004C61000000000000000000000000000000000B0 -S3156004C62000000000000000000000000000000000A0 -S3156004C6300000000000000000000000000000000090 -S3156004C6400000000000000000000000000000000080 -S3156004C6500000000000000000000000000000000070 -S3156004C6600000000000000000000000000000000060 -S3156004C6700000000000000000000000000000000050 -S3156004C6800000000000000000000000000000000040 -S3156004C6900000000000000000000000000000000030 -S3156004C6A00000000000000000000000000000000020 -S3156004C6B00000000000000000000000000000000010 -S3156004C6C00000000000000000000000000000000000 -S3156004C6D000000000000000000000000000000000F0 -S3156004C6E000000000000000000000000000000000E0 -S3156004C6F000000000000000000000000000000000D0 -S3156004C70000000000000000000000000000000000BF -S3156004C71000000000000000000000000000000000AF -S3156004C720000000000000000000000000000000009F -S3156004C730000000000000000000000000000000008F -S3156004C740000000000000000000000000000000007F -S3156004C750000000000000000000000000000000006F -S3156004C760000000000000000000000000000000005F -S3156004C770000000000000000000000000000000004F -S3156004C780000000000000000000000000000000003F -S3156004C790000000000000000000000000000000002F -S3156004C7A0000000000000000000000000000000001F -S3156004C7B0000000000000000000000000000000000F -S3156004C7C000000000000000000000000000000000FF -S3156004C7D000000000000000000000000000000000EF -S3156004C7E000000000000000000000000000000000DF -S3156004C7F000000000000000000000000000000000CF -S3156004C80000000000000000000000000000000000BE -S3156004C81000000000000000000000000000000000AE -S3156004C820000000000000000000000000000000009E -S3156004C830000000000000000000000000000000008E -S3156004C840000000000000000000000000000000007E -S3156004C850000000000000000000000000000000006E -S3156004C860000000000000000000000000000000005E -S3156004C870000000000000000000000000000000004E -S3156004C880000000000000000000000000000000003E -S3156004C890000000000000000000000000000000002E -S3156004C8A0000000000000000000000000000000001E -S3156004C8B0000000000000000000000000000000000E -S3156004C8C000000000000000000000000000000000FE -S3156004C8D000000000000000000000000000000000EE -S3156004C8E000000000000000000000000000000000DE -S3156004C8F000000000000000000000000000000000CE -S3156004C90000000000000000000000000000000000BD -S3156004C91000000000000000000000000000000000AD -S3156004C920000000000000000000000000000000009D -S3156004C930000000000000000000000000000000008D -S3156004C940000000000000000000000000000000007D -S3156004C950000000000000000000000000000000006D -S3156004C960000000000000000000000000000000005D -S3156004C970000000000000000000000000000000004D -S3156004C980000000000000000000000000000000003D -S3156004C990000000000000000000000000000000002D -S3156004C9A0000000000000000000000000000000001D -S3156004C9B0000000000000000000000000000000000D -S3156004C9C000000000000000000000000000000000FD -S3156004C9D000000000000000000000000000000000ED -S3156004C9E000000000000000000000000000000000DD -S3156004C9F000000000000000000000000000000000CD -S3156004CA0000000000000000000000000000000000BC -S3156004CA1000000000000000000000000000000000AC -S3156004CA20000000000000000000000000000000009C -S3156004CA30000000000000000000000000000000008C -S3156004CA40000000000000000000000000000000007C -S3156004CA50000000000000000000000000000000006C -S3156004CA60000000000000000000000000000000005C -S3156004CA70000000000000000000000000000000004C -S3156004CA80000000000000000000000000000000003C -S3156004CA90000000000000000000000000000000002C -S3156004CAA0000000000000000000000000000000001C -S3156004CAB0000000000000000000000000000000000C -S3156004CAC000000000000000000000000000000000FC -S3156004CAD000000000000000000000000000000000EC -S3156004CAE000000000000000000000000000000000DC -S3156004CAF000000000000000000000000000000000CC -S3156004CB0000000000000000000000000000000000BB -S3156004CB1000000000000000000000000000000000AB -S3156004CB20000000000000000000000000000000009B -S3156004CB30000000000000000000000000000000008B -S3156004CB40000000000000000000000000000000007B -S3156004CB50000000000000000000000000000000006B -S3156004CB60000000000000000000000000000000005B -S3156004CB70000000000000000000000000000000004B -S3156004CB80000000000000000000000000000000003B -S3156004CB90000000000000000000000000000000002B -S3156004CBA0000000000000000000000000000000001B -S3156004CBB0000000000000000000000000000000000B -S3156004CBC000000000000000000000000000000000FB -S3156004CBD000000000000000000000000000000000EB -S3156004CBE000000000000000000000000000000000DB -S3156004CBF000000000000000000000000000000000CB -S3156004CC0000000000000000000000000000000000BA -S3156004CC1000000000000000000000000000000000AA -S3156004CC20000000000000000000000000000000009A -S3156004CC30000000000000000000000000000000008A -S3156004CC40000000000000000000000000000000007A -S3156004CC50000000000000000000000000000000006A -S3156004CC60000000000000000000000000000000005A -S3156004CC70000000000000000000000000000000004A -S3156004CC80000000000000000000000000000000003A -S3156004CC90000000000000000000000000000000002A -S3156004CCA0000000000000000000000000000000001A -S3156004CCB0000000000000000000000000000000000A -S3156004CCC000000000000000000000000000000000FA -S3156004CCD000000000000000000000000000000000EA -S3156004CCE000000000000000000000000000000000DA -S3156004CCF000000000000000000000000000000000CA -S3156004CD0000000000000000000000000000000000B9 -S3156004CD1000000000000000000000000000000000A9 -S3156004CD200000000000000000000000000000000099 -S3156004CD300000000000000000000000000000000089 -S3156004CD400000000000000000000000000000000079 -S3156004CD500000000000000000000000000000000069 -S3156004CD600000000000000000000000000000000059 -S3156004CD700000000000000000000000000000000049 -S3156004CD800000000000000000000000000000000039 -S3156004CD900000000000000000000000000000000029 -S3156004CDA00000000000000000000000000000000019 -S3156004CDB00000000000000000000000000000000009 -S3156004CDC000000000000000000000000000000000F9 -S3156004CDD000000000000000000000000000000000E9 -S3156004CDE000000000000000000000000000000000D9 -S3156004CDF000000000000000000000000000000000C9 -S3156004CE0000000000000000000000000000000000B8 -S3156004CE1000000000000000000000000000000000A8 -S3156004CE200000000000000000000000000000000098 -S3156004CE300000000000000000000000000000000088 -S3156004CE400000000000000000000000000000000078 -S3156004CE500000000000000000000000000000000068 -S3156004CE600000000000000000000000000000000058 -S3156004CE700000000000000000000000000000000048 -S3156004CE800000000000000000000000000000000038 -S3156004CE900000000000000000000000000000000028 -S3156004CEA00000000000000000000000000000000018 -S3156004CEB00000000000000000000000000000000008 -S3156004CEC000000000000000000000000000000000F8 -S3156004CED000000000000000000000000000000000E8 -S3156004CEE000000000000000000000000000000000D8 -S3156004CEF000000000000000000000000000000000C8 -S3156004CF0000000000000000000000000000000000B7 -S3156004CF1000000000000000000000000000000000A7 -S3156004CF200000000000000000000000000000000097 -S3156004CF300000000000000000000000000000000087 -S3156004CF400000000000000000000000000000000077 -S3156004CF500000000000000000000000000000000067 -S3156004CF600000000000000000000000000000000057 -S3156004CF700000000000000000000000000000000047 -S3156004CF800000000000000000000000000000000037 -S3156004CF900000000000000000000000000000000027 -S3156004CFA00000000000000000000000000000000017 -S3156004CFB00000000000000000000000000000000007 -S3156004CFC000000000000000000000000000000000F7 -S3156004CFD000000000000000000000000000000000E7 -S3156004CFE000000000000000000000000000000000D7 -S3156004CFF000000000000000000000000000000000C7 -S3156004D00000000000000000000000000000000000B6 -S3156004D01000000000000000000000000000000000A6 -S3156004D0200000000000000000000000000000000096 -S3156004D0300000000000000000000000000000000086 -S3156004D0400000000000000000000000000000000076 -S3156004D0500000000000000000000000000000000066 -S3156004D0600000000000000000000000000000000056 -S3156004D0700000000000000000000000000000000046 -S3156004D0800000000000000000000000000000000036 -S3156004D0900000000000000000000000000000000026 -S3156004D0A00000000000000000000000000000000016 -S3156004D0B00000000000000000000000000000000006 -S3156004D0C000000000000000000000000000000000F6 -S3156004D0D000000000000000000000000000000000E6 -S3156004D0E000000000000000000000000000000000D6 -S3156004D0F000000000000000000000000000000000C6 -S3156004D10000000000000000000000000000000000B5 -S3156004D11000000000000000000000000000000000A5 -S3156004D1200000000000000000000000000000000095 -S3156004D1300000000000000000000000000000000085 -S3156004D1400000000000000000000000000000000075 -S3156004D1500000000000000000000000000000000065 -S3156004D1600000000000000000000000000000000055 -S3156004D1700000000000000000000000000000000045 -S3156004D1800000000000000000000000000000000035 -S3156004D1900000000000000000000000000000000025 -S3156004D1A00000000000000000000000000000000015 -S3156004D1B00000000000000000000000000000000005 -S3156004D1C000000000000000000000000000000000F5 -S3156004D1D000000000000000000000000000000000E5 -S3156004D1E000000000000000000000000000000000D5 -S3156004D1F000000000000000000000000000000000C5 -S3156004D20000000000000000000000000000000000B4 -S3156004D21000000000000000000000000000000000A4 -S3156004D2200000000000000000000000000000000094 -S3156004D2300000000000000000000000000000000084 -S3156004D2400000000000000000000000000000000074 -S3156004D2500000000000000000000000000000000064 -S3156004D2600000000000000000000000000000000054 -S3156004D2700000000000000000000000000000000044 -S3156004D2800000000000000000000000000000000034 -S3156004D2900000000000000000000000000000000024 -S3156004D2A00000000000000000000000000000000014 -S3156004D2B00000000000000000000000000000000004 -S3156004D2C000000000000000000000000000000000F4 -S3156004D2D000000000000000000000000000000000E4 -S3156004D2E000000000000000000000000000000000D4 -S3156004D2F000000000000000000000000000000000C4 -S3156004D30000000000000000000000000000000000B3 -S3156004D31000000000000000000000000000000000A3 -S3156004D3200000000000000000000000000000000093 -S3156004D3300000000000000000000000000000000083 -S3156004D3400000000000000000000000000000000073 -S3156004D3500000000000000000000000000000000063 -S3156004D3600000000000000000000000000000000053 -S3156004D3700000000000000000000000000000000043 -S3156004D3800000000000000000000000000000000033 -S3156004D3900000000000000000000000000000000023 -S3156004D3A00000000000000000000000000000000013 -S3156004D3B00000000000000000000000000000000003 -S3156004D3C000000000000000000000000000000000F3 -S3156004D3D000000000000000000000000000000000E3 -S3156004D3E000000000000000000000000000000000D3 -S3156004D3F000000000000000000000000000000000C3 -S3156004D40000000000000000000000000000000000B2 -S3156004D41000000000000000000000000000000000A2 -S3156004D4200000000000000000000000000000000092 -S3156004D4300000000000000000000000000000000082 -S3156004D4400000000000000000000000000000000072 -S3156004D4500000000000000000000000000000000062 -S3156004D4600000000000000000000000000000000052 -S3156004D4700000000000000000000000000000000042 -S3156004D4800000000000000000000000000000000032 -S3156004D4900000000000000000000000000000000022 -S3156004D4A00000000000000000000000000000000012 -S3156004D4B00000000000000000000000000000000002 -S3156004D4C000000000000000000000000000000000F2 -S3156004D4D000000000000000000000000000000000E2 -S3156004D4E000000000000000000000000000000000D2 -S3156004D4F000000000000000000000000000000000C2 -S3156004D50000000000000000000000000000000000B1 -S3156004D51000000000000000000000000000000000A1 -S3156004D5200000000000000000000000000000000091 -S3156004D5300000000000000000000000000000000081 -S3156004D5400000000000000000000000000000000071 -S3156004D5500000000000000000000000000000000061 -S3156004D5600000000000000000000000000000000051 -S3156004D5700000000000000000000000000000000041 -S3156004D5800000000000000000000000000000000031 -S3156004D5900000000000000000000000000000000021 -S3156004D5A00000000000000000000000000000000011 -S3156004D5B00000000000000000000000000000000001 -S3156004D5C000000000000000000000000000000000F1 -S3156004D5D000000000000000000000000000000000E1 -S3156004D5E000000000000000000000000000000000D1 -S3156004D5F000000000000000000000000000000000C1 -S3156004D60000000000000000000000000000000000B0 -S3156004D61000000000000000000000000000000000A0 -S3156004D6200000000000000000000000000000000090 -S3156004D6300000000000000000000000000000000080 -S3156004D6400000000000000000000000000000000070 -S3156004D6500000000000000000000000000000000060 -S3156004D6600000000000000000000000000000000050 -S3156004D6700000000000000000000000000000000040 -S3156004D6800000000000000000000000000000000030 -S3156004D6900000000000000000000000000000000020 -S3156004D6A00000000000000000000000000000000010 -S3156004D6B00000000000000000000000000000000000 -S3156004D6C000000000000000000000000000000000F0 -S3156004D6D000000000000000000000000000000000E0 -S3156004D6E000000000000000000000000000000000D0 -S3156004D6F000000000000000000000000000000000C0 -S3156004D70000000000000000000000000000000000AF -S3156004D710000000000000000000000000000000009F -S3156004D720000000000000000000000000000000008F -S3156004D730000000000000000000000000000000007F -S3156004D740000000000000000000000000000000006F -S3156004D750000000000000000000000000000000005F -S3156004D760000000000000000000000000000000004F -S3156004D770000000000000000000000000000000003F -S3156004D780000000000000000000000000000000002F -S3156004D790000000000000000000000000000000001F -S3156004D7A0000000000000000000000000000000000F -S3156004D7B000000000000000000000000000000000FF -S3156004D7C000000000000000000000000000000000EF -S3156004D7D000000000000000000000000000000000DF -S3156004D7E000000000000000000000000000000000CF -S3156004D7F000000000000000000000000000000000BF -S3156004D80000000000000000000000000000000000AE -S3156004D810000000000000000000000000000000009E -S3156004D820000000000000000000000000000000008E -S3156004D830000000000000000000000000000000007E -S3156004D840000000000000000000000000000000006E -S3156004D850000000000000000000000000000000005E -S3156004D860000000000000000000000000000000004E -S3156004D870000000000000000000000000000000003E -S3156004D880000000000000000000000000000000002E -S3156004D890000000000000000000000000000000001E -S3156004D8A0000000000000000000000000000000000E -S3156004D8B000000000000000000000000000000000FE -S3156004D8C000000000000000000000000000000000EE -S3156004D8D000000000000000000000000000000000DE -S3156004D8E000000000000000000000000000000000CE -S3156004D8F000000000000000000000000000000000BE -S3156004D90000000000000000000000000000000000AD -S3156004D910000000000000000000000000000000009D -S3156004D920000000000000000000000000000000008D -S3156004D930000000000000000000000000000000007D -S3156004D940000000000000000000000000000000006D -S3156004D950000000000000000000000000000000005D -S3156004D960000000000000000000000000000000004D -S3156004D970000000000000000000000000000000003D -S3156004D980000000000000000000000000000000002D -S3156004D990000000000000000000000000000000001D -S3156004D9A0000000000000000000000000000000000D -S3156004D9B000000000000000000000000000000000FD -S3156004D9C000000000000000000000000000000000ED -S3156004D9D000000000000000000000000000000000DD -S3156004D9E000000000000000000000000000000000CD -S3156004D9F000000000000000000000000000000000BD -S3156004DA0000000000000000000000000000000000AC -S3156004DA10000000000000000000000000000000009C -S3156004DA20000000000000000000000000000000008C -S3156004DA30000000000000000000000000000000007C -S3156004DA40000000000000000000000000000000006C -S3156004DA50000000000000000000000000000000005C -S3156004DA60000000000000000000000000000000004C -S3156004DA70000000000000000000000000000000003C -S3156004DA80000000000000000000000000000000002C -S3156004DA90000000000000000000000000000000001C -S3156004DAA0000000000000000000000000000000000C -S3156004DAB000000000000000000000000000000000FC -S3156004DAC000000000000000000000000000000000EC -S3156004DAD000000000000000000000000000000000DC -S3156004DAE000000000000000000000000000000000CC -S3156004DAF000000000000000000000000000000000BC -S3156004DB0000000000000000000000000000000000AB -S3156004DB10000000000000000000000000000000009B -S3156004DB20000000000000000000000000000000008B -S3156004DB30000000000000000000000000000000007B -S3156004DB40000000000000000000000000000000006B -S3156004DB50000000000000000000000000000000005B -S3156004DB60000000000000000000000000000000004B -S3156004DB70000000000000000000000000000000003B -S3156004DB80000000000000000000000000000000002B -S3156004DB90000000000000000000000000000000001B -S3156004DBA0000000000000000000000000000000000B -S3156004DBB000000000000000000000000000000000FB -S3156004DBC000000000000000000000000000000000EB -S3156004DBD000000000000000000000000000000000DB -S3156004DBE000000000000000000000000000000000CB -S3156004DBF000000000000000000000000000000000BB -S3156004DC0000000000000000000000000000000000AA -S3156004DC10000000000000000000000000000000009A -S3156004DC20000000000000000000000000000000008A -S3156004DC30000000000000000000000000000000007A -S3156004DC40000000000000000000000000000000006A -S3156004DC50000000000000000000000000000000005A -S3156004DC60000000000000000000000000000000004A -S3156004DC70000000000000000000000000000000003A -S3156004DC80000000000000000000000000000000002A -S3156004DC90000000000000000000000000000000001A -S3156004DCA0000000000000000000000000000000000A -S3156004DCB000000000000000000000000000000000FA -S3156004DCC000000000000000000000000000000000EA -S3156004DCD000000000000000000000000000000000DA -S3156004DCE000000000000000000000000000000000CA -S3156004DCF000000000000000000000000000000000BA -S3156004DD0000000000000000000000000000000000A9 -S3156004DD100000000000000000000000000000000099 -S3156004DD200000000000000000000000000000000089 -S3156004DD300000000000000000000000000000000079 -S3156004DD400000000000000000000000000000000069 -S3156004DD500000000000000000000000000000000059 -S3156004DD600000000000000000000000000000000049 -S3156004DD700000000000000000000000000000000039 -S3156004DD800000000000000000000000000000000029 -S3156004DD900000000000000000000000000000000019 -S3156004DDA00000000000000000000000000000000009 -S3156004DDB000000000000000000000000000000000F9 -S3156004DDC000000000000000000000000000000000E9 -S3156004DDD000000000000000000000000000000000D9 -S3156004DDE000000000000000000000000000000000C9 -S3156004DDF000000000000000000000000000000000B9 -S3156004DE0000000000000000000000000000000000A8 -S3156004DE100000000000000000000000000000000098 -S3156004DE200000000000000000000000000000000088 -S3156004DE300000000000000000000000000000000078 -S3156004DE400000000000000000000000000000000068 -S3156004DE500000000000000000000000000000000058 -S3156004DE600000000000000000000000000000000048 -S3156004DE700000000000000000000000000000000038 -S3156004DE800000000000000000000000000000000028 -S3156004DE900000000000000000000000000000000018 -S3156004DEA00000000000000000000000000000000008 -S3156004DEB000000000000000000000000000000000F8 -S3156004DEC000000000000000000000000000000000E8 -S3156004DED000000000000000000000000000000000D8 -S3156004DEE000000000000000000000000000000000C8 -S3156004DEF000000000000000000000000000000000B8 -S3156004DF0000000000000000000000000000000000A7 -S3156004DF100000000000000000000000000000000097 -S3156004DF200000000000000000000000000000000087 -S3156004DF300000000000000000000000000000000077 -S3156004DF400000000000000000000000000000000067 -S3156004DF500000000000000000000000000000000057 -S3156004DF600000000000000000000000000000000047 -S3156004DF700000000000000000000000000000000037 -S3156004DF800000000000000000000000000000000027 -S3156004DF900000000000000000000000000000000017 -S3156004DFA00000000000000000000000000000000007 -S3156004DFB000000000000000000000000000000000F7 -S3156004DFC000000000000000000000000000000000E7 -S3156004DFD000000000000000000000000000000000D7 -S3156004DFE000000000000000000000000000000000C7 -S3156004DFF000000000000000000000000000000000B7 -S3156004E00000000000000000000000000000000000A6 -S3156004E0100000000000000000000000000000000096 -S3156004E0200000000000000000000000000000000086 -S3156004E0300000000000000000000000000000000076 -S3156004E0400000000000000000000000000000000066 -S3156004E0500000000000000000000000000000000056 -S3156004E0600000000000000000000000000000000046 -S3156004E0700000000000000000000000000000000036 -S3156004E0800000000000000000000000000000000026 -S3156004E0900000000000000000000000000000000016 -S3156004E0A00000000000000000000000000000000006 -S3156004E0B000000000000000000000000000000000F6 -S3156004E0C000000000000000000000000000000000E6 -S3156004E0D000000000000000000000000000000000D6 -S3156004E0E000000000000000000000000000000000C6 -S3156004E0F000000000000000000000000000000000B6 -S3156004E10000000000000000000000000000000000A5 -S3156004E1100000000000000000000000000000000095 -S3156004E1200000000000000000000000000000000085 -S3156004E1300000000000000000000000000000000075 -S3156004E1400000000000000000000000000000000065 -S3156004E1500000000000000000000000000000000055 -S3156004E1600000000000000000000000000000000045 -S3156004E1700000000000000000000000000000000035 -S3156004E1800000000000000000000000000000000025 -S3156004E1900000000000000000000000000000000015 -S3156004E1A00000000000000000000000000000000005 -S3156004E1B000000000000000000000000000000000F5 -S3156004E1C000000000000000000000000000000000E5 -S3156004E1D000000000000000000000000000000000D5 -S3156004E1E000000000000000000000000000000000C5 -S3156004E1F000000000000000000000000000000000B5 -S3156004E20000000000000000000000000000000000A4 -S3156004E2100000000000000000000000000000000094 -S3156004E2200000000000000000000000000000000084 -S3156004E2300000000000000000000000000000000074 -S3156004E2400000000000000000000000000000000064 -S3156004E2500000000000000000000000000000000054 -S3156004E2600000000000000000000000000000000044 -S3156004E2700000000000000000000000000000000034 -S3156004E2800000000000000000000000000000000024 -S3156004E2900000000000000000000000000000000014 -S3156004E2A00000000000000000000000000000000004 -S3156004E2B000000000000000000000000000000000F4 -S3156004E2C000000000000000000000000000000000E4 -S3156004E2D000000000000000000000000000000000D4 -S3156004E2E000000000000000000000000000000000C4 -S3156004E2F000000000000000000000000000000000B4 -S3156004E30000000000000000000000000000000000A3 -S3156004E3100000000000000000000000000000000093 -S3156004E3200000000000000000000000000000000083 -S3156004E3300000000000000000000000000000000073 -S3156004E3400000000000000000000000000000000063 -S3156004E3500000000000000000000000000000000053 -S3156004E3600000000000000000000000000000000043 -S3156004E3700000000000000000000000000000000033 -S3156004E3800000000000000000000000000000000023 -S3156004E3900000000000000000000000000000000013 -S3156004E3A00000000000000000000000000000000003 -S3156004E3B000000000000000000000000000000000F3 -S3156004E3C000000000000000000000000000000000E3 -S3156004E3D000000000000000000000000000000000D3 -S3156004E3E000000000000000000000000000000000C3 -S3156004E3F000000000000000000000000000000000B3 -S3156004E40000000000000000000000000000000000A2 -S3156004E4100000000000000000000000000000000092 -S3156004E4200000000000000000000000000000000082 -S3156004E4300000000000000000000000000000000072 -S3156004E4400000000000000000000000000000000062 -S3156004E4500000000000000000000000000000000052 -S3156004E4600000000000000000000000000000000042 -S3156004E4700000000000000000000000000000000032 -S3156004E4800000000000000000000000000000000022 -S3156004E4900000000000000000000000000000000012 -S3156004E4A00000000000000000000000000000000002 -S3156004E4B000000000000000000000000000000000F2 -S3156004E4C000000000000000000000000000000000E2 -S3156004E4D000000000000000000000000000000000D2 -S3156004E4E000000000000000000000000000000000C2 -S3156004E4F000000000000000000000000000000000B2 -S3156004E50000000000000000000000000000000000A1 -S3156004E5100000000000000000000000000000000091 -S3156004E5200000000000000000000000000000000081 -S3156004E5300000000000000000000000000000000071 -S3156004E5400000000000000000000000000000000061 -S3156004E5500000000000000000000000000000000051 -S3156004E5600000000000000000000000000000000041 -S3156004E5700000000000000000000000000000000031 -S3156004E5800000000000000000000000000000000021 -S3156004E5900000000000000000000000000000000011 -S3156004E5A00000000000000000000000000000000001 -S3156004E5B000000000000000000000000000000000F1 -S3156004E5C000000000000000000000000000000000E1 -S3156004E5D000000000000000000000000000000000D1 -S3156004E5E000000000000000000000000000000000C1 -S3156004E5F000000000000000000000000000000000B1 -S3156004E60000000000000000000000000000000000A0 -S3156004E6100000000000000000000000000000000090 -S3156004E6200000000000000000000000000000000080 -S3156004E6300000000000000000000000000000000070 -S3156004E6400000000000000000000000000000000060 -S3156004E6500000000000000000000000000000000050 -S3156004E6600000000000000000000000000000000040 -S3156004E6700000000000000000000000000000000030 -S3156004E6800000000000000000000000000000000020 -S3156004E6900000000000000000000000000000000010 -S3156004E6A00000000000000000000000000000000000 -S3156004E6B000000000000000000000000000000000F0 -S3156004E6C000000000000000000000000000000000E0 -S3156004E6D000000000000000000000000000000000D0 -S3156004E6E000000000000000000000000000000000C0 -S3156004E6F000000000000000000000000000000000B0 -S3156004E700000000000000000000000000000000009F -S3156004E710000000000000000000000000000000008F -S3156004E720000000000000000000000000000000007F -S3156004E730000000000000000000000000000000006F -S3156004E740000000000000000000000000000000005F -S3156004E750000000000000000000000000000000004F -S3156004E760000000000000000000000000000000003F -S3156004E770000000000000000000000000000000002F -S3156004E780000000000000000000000000000000001F -S3156004E790000000000000000000000000000000000F -S3156004E7A000000000000000000000000000000000FF -S3156004E7B000000000000000000000000000000000EF -S3156004E7C000000000000000000000000000000000DF -S3156004E7D000000000000000000000000000000000CF -S3156004E7E000000000000000000000000000000000BF -S3156004E7F000000000000000000000000000000000AF -S3156004E800000000000000000000000000000000009E -S3156004E810000000000000000000000000000000008E -S3156004E820000000000000000000000000000000007E -S3156004E830000000000000000000000000000000006E -S3156004E840000000000000000000000000000000005E -S3156004E850000000000000000000000000000000004E -S3156004E860000000000000000000000000000000003E -S3156004E870000000000000000000000000000000002E -S3156004E880000000000000000000000000000000001E -S3156004E890000000000000000000000000000000000E -S3156004E8A000000000000000000000000000000000FE -S3156004E8B000000000000000000000000000000000EE -S3156004E8C000000000000000000000000000000000DE -S3156004E8D000000000000000000000000000000000CE -S3156004E8E000000000000000000000000000000000BE -S3156004E8F000000000000000000000000000000000AE -S3156004E900000000000000000000000000000000009D -S3156004E910000000000000000000000000000000008D -S3156004E920000000000000000000000000000000007D -S3156004E930000000000000000000000000000000006D -S3156004E940000000000000000000000000000000005D -S3156004E950000000000000000000000000000000004D -S3156004E960000000000000000000000000000000003D -S3156004E970000000000000000000000000000000002D -S3156004E980000000000000000000000000000000001D -S3156004E990000000000000000000000000000000000D -S3156004E9A000000000000000000000000000000000FD -S3156004E9B000000000000000000000000000000000ED -S3156004E9C000000000000000000000000000000000DD -S3156004E9D000000000000000000000000000000000CD -S3156004E9E000000000000000000000000000000000BD -S3156004E9F000000000000000000000000000000000AD -S3156004EA00000000000000000000000000000000009C -S3156004EA10000000000000000000000000000000008C -S3156004EA20000000000000000000000000000000007C -S3156004EA30000000000000000000000000000000006C -S3156004EA40000000000000000000000000000000005C -S3156004EA50000000000000000000000000000000004C -S3156004EA60000000000000000000000000000000003C -S3156004EA70000000000000000000000000000000002C -S3156004EA80000000000000000000000000000000001C -S3156004EA90000000000000000000000000000000000C -S3156004EAA000000000000000000000000000000000FC -S3156004EAB000000000000000000000000000000000EC -S3156004EAC000000000000000000000000000000000DC -S3156004EAD000000000000000000000000000000000CC -S3156004EAE000000000000000000000000000000000BC -S3156004EAF000000000000000000000000000000000AC -S3156004EB00000000000000000000000000000000009B -S3156004EB10000000000000000000000000000000008B -S3156004EB20000000000000000000000000000000007B -S3156004EB30000000000000000000000000000000006B -S3156004EB40000000000000000000000000000000005B -S3156004EB50000000000000000000000000000000004B -S3156004EB60000000000000000000000000000000003B -S3156004EB70000000000000000000000000000000002B -S3156004EB80000000000000000000000000000000001B -S3156004EB90000000000000000000000000000000000B -S3156004EBA000000000000000000000000000000000FB -S3156004EBB000000000000000000000000000000000EB -S3156004EBC000000000000000000000000000000000DB -S3156004EBD000000000000000000000000000000000CB -S3156004EBE000000000000000000000000000000000BB -S3156004EBF000000000000000000000000000000000AB -S3156004EC00000000000000000000000000000000009A -S3156004EC10000000000000000000000000000000008A -S3156004EC20000000000000000000000000000000007A -S3156004EC30000000000000000000000000000000006A -S3156004EC40000000000000000000000000000000005A -S3156004EC50000000000000000000000000000000004A -S3156004EC60000000000000000000000000000000003A -S3156004EC70000000000000000000000000000000002A -S3156004EC80000000000000000000000000000000001A -S3156004EC90000000000000000000000000000000000A -S3156004ECA000000000000000000000000000000000FA -S3156004ECB000000000000000000000000000000000EA -S3156004ECC000000000000000000000000000000000DA -S3156004ECD000000000000000000000000000000000CA -S3156004ECE000000000000000000000000000000000BA -S3156004ECF000000000000000000000000000000000AA -S3156004ED000000000000000000000000000000000099 -S3156004ED100000000000000000000000000000000089 -S3156004ED200000000000000000000000000000000079 -S3156004ED300000000000000000000000000000000069 -S3156004ED400000000000000000000000000000000059 -S3156004ED500000000000000000000000000000000049 -S3156004ED600000000000000000000000000000000039 -S3156004ED700000000000000000000000000000000029 -S3156004ED800000000000000000000000000000000019 -S3156004ED900000000000000000000000000000000009 -S3156004EDA000000000000000000000000000000000F9 -S3156004EDB000000000000000000000000000000000E9 -S3156004EDC000000000000000000000000000000000D9 -S3156004EDD000000000000000000000000000000000C9 -S3156004EDE000000000000000000000000000000000B9 -S3156004EDF000000000000000000000000000000000A9 -S3156004EE000000000000000000000000000000000098 -S3156004EE100000000000000000000000000000000088 -S3156004EE200000000000000000000000000000000078 -S3156004EE300000000000000000000000000000000068 -S3156004EE400000000000000000000000000000000058 -S3156004EE500000000000000000000000000000000048 -S3156004EE600000000000000000000000000000000038 -S3156004EE700000000000000000000000000000000028 -S3156004EE800000000000000000000000000000000018 -S3156004EE900000000000000000000000000000000008 -S3156004EEA000000000000000000000000000000000F8 -S3156004EEB000000000000000000000000000000000E8 -S3156004EEC000000000000000000000000000000000D8 -S3156004EED000000000000000000000000000000000C8 -S3156004EEE000000000000000000000000000000000B8 -S3156004EEF000000000000000000000000000000000A8 -S3156004EF000000000000000000000000000000000097 -S3156004EF100000000000000000000000000000000087 -S3156004EF200000000000000000000000000000000077 -S3156004EF300000000000000000000000000000000067 -S3156004EF400000000000000000000000000000000057 -S3156004EF500000000000000000000000000000000047 -S3156004EF600000000000000000000000000000000037 -S3156004EF700000000000000000000000000000000027 -S3156004EF800000000000000000000000000000000017 -S3156004EF900000000000000000000000000000000007 -S3156004EFA000000000000000000000000000000000F7 -S3156004EFB000000000000000000000000000000000E7 -S3156004EFC000000000000000000000000000000000D7 -S3156004EFD000000000000000000000000000000000C7 -S3156004EFE000000000000000000000000000000000B7 -S3156004EFF000000000000000000000000000000000A7 -S3156004F0000000000000000000000000000000000096 -S3156004F0100000000000000000000000000000000086 -S3156004F0200000000000000000000000000000000076 -S3156004F0300000000000000000000000000000000066 -S3156004F0400000000000000000000000000000000056 -S3156004F0500000000000000000000000000000000046 -S3156004F0600000000000000000000000000000000036 -S3156004F0700000000000000000000000000000000026 -S3156004F0800000000000000000000000000000000016 -S3156004F0900000000000000000000000000000000006 -S3156004F0A000000000000000000000000000000000F6 -S3156004F0B000000000000000000000000000000000E6 -S3156004F0C000000000000000000000000000000000D6 -S3156004F0D000000000000000000000000000000000C6 -S3156004F0E000000000000000000000000000000000B6 -S3156004F0F000000000000000000000000000000000A6 -S3156004F1000000000000000000000000000000000095 -S3156004F1100000000000000000000000000000000085 -S3156004F1200000000000000000000000000000000075 -S3156004F1300000000000000000000000000000000065 -S3156004F1400000000000000000000000000000000055 -S3156004F1500000000000000000000000000000000045 -S3156004F1600000000000000000000000000000000035 -S3156004F1700000000000000000000000000000000025 -S3156004F1800000000000000000000000000000000015 -S3156004F1900000000000000000000000000000000005 -S3156004F1A000000000000000000000000000000000F5 -S3156004F1B000000000000000000000000000000000E5 -S3156004F1C000000000000000000000000000000000D5 -S3156004F1D000000000000000000000000000000000C5 -S3156004F1E000000000000000000000000000000000B5 -S3156004F1F000000000000000000000000000000000A5 -S3156004F2000000000000000000000000000000000094 -S3156004F2100000000000000000000000000000000084 -S3156004F2200000000000000000000000000000000074 -S3156004F2300000000000000000000000000000000064 -S3156004F2400000000000000000000000000000000054 -S3156004F2500000000000000000000000000000000044 -S3156004F2600000000000000000000000000000000034 -S3156004F2700000000000000000000000000000000024 -S3156004F2800000000000000000000000000000000014 -S3156004F2900000000000000000000000000000000004 -S3156004F2A000000000000000000000000000000000F4 -S3156004F2B000000000000000000000000000000000E4 -S3156004F2C000000000000000000000000000000000D4 -S3156004F2D000000000000000000000000000000000C4 -S3156004F2E000000000000000000000000000000000B4 -S3156004F2F000000000000000000000000000000000A4 -S3156004F3000000000000000000000000000000000093 -S3156004F3100000000000000000000000000000000083 -S3156004F3200000000000000000000000000000000073 -S3156004F3300000000000000000000000000000000063 -S3156004F3400000000000000000000000000000000053 -S3156004F3500000000000000000000000000000000043 -S3156004F3600000000000000000000000000000000033 -S3156004F3700000000000000000000000000000000023 -S3156004F3800000000000000000000000000000000013 -S3156004F3900000000000000000000000000000000003 -S3156004F3A000000000000000000000000000000000F3 -S3156004F3B000000000000000000000000000000000E3 -S3156004F3C000000000000000000000000000000000D3 -S3156004F3D000000000000000000000000000000000C3 -S3156004F3E000000000000000000000000000000000B3 -S3156004F3F000000000000000000000000000000000A3 -S3156004F4000000000000000000000000000000000092 -S3156004F4100000000000000000000000000000000082 -S3156004F4200000000000000000000000000000000072 -S3156004F4300000000000000000000000000000000062 -S3156004F4400000000000000000000000000000000052 -S3156004F4500000000000000000000000000000000042 -S3156004F4600000000000000000000000000000000032 -S3156004F4700000000000000000000000000000000022 -S3156004F4800000000000000000000000000000000012 -S3156004F4900000000000000000000000000000000002 -S3156004F4A000000000000000000000000000000000F2 -S3156004F4B000000000000000000000000000000000E2 -S3156004F4C000000000000000000000000000000000D2 -S3156004F4D000000000000000000000000000000000C2 -S3156004F4E000000000000000000000000000000000B2 -S3156004F4F000000000000000000000000000000000A2 -S3156004F5000000000000000000000000000000000091 -S3156004F5100000000000000000000000000000000081 -S3156004F5200000000000000000000000000000000071 -S3156004F5300000000000000000000000000000000061 -S3156004F5400000000000000000000000000000000051 -S3156004F5500000000000000000000000000000000041 -S3156004F5600000000000000000000000000000000031 -S3156004F5700000000000000000000000000000000021 -S3156004F5800000000000000000000000000000000011 -S3156004F5900000000000000000000000000000000001 -S3156004F5A000000000000000000000000000000000F1 -S3156004F5B000000000000000000000000000000000E1 -S3156004F5C000000000000000000000000000000000D1 -S3156004F5D000000000000000000000000000000000C1 -S3156004F5E000000000000000000000000000000000B1 -S3156004F5F000000000000000000000000000000000A1 -S3156004F6000000000000000000000000000000000090 -S3156004F6100000000000000000000000000000000080 -S3156004F6200000000000000000000000000000000070 -S3156004F6300000000000000000000000000000000060 -S3156004F6400000000000000000000000000000000050 -S3156004F6500000000000000000000000000000000040 -S3156004F6600000000000000000000000000000000030 -S3156004F6700000000000000000000000000000000020 -S3156004F6800000000000000000000000000000000010 -S3156004F6900000000000000000000000000000000000 -S3156004F6A000000000000000000000000000000000F0 -S3156004F6B000000000000000000000000000000000E0 -S3156004F6C000000000000000000000000000000000D0 -S3156004F6D000000000000000000000000000000000C0 -S3156004F6E000000000000000000000000000000000B0 -S3156004F6F000000000000000000000000000000000A0 -S3156004F700000000000000000000000000000000008F -S3156004F710000000000000000000000000000000007F -S3156004F720000000000000000000000000000000006F -S3156004F730000000000000000000000000000000005F -S3156004F740000000000000000000000000000000004F -S3156004F750000000000000000000000000000000003F -S3156004F760000000000000000000000000000000002F -S3156004F770000000000000000000000000000000001F -S3156004F780000000000000000000000000000000000F -S3156004F79000000000000000000000000000000000FF -S3156004F7A000000000000000000000000000000000EF -S3156004F7B000000000000000000000000000000000DF -S3156004F7C000000000000000000000000000000000CF -S3156004F7D000000000000000000000000000000000BF -S3156004F7E000000000000000000000000000000000AF -S3156004F7F0000000000000000000000000000000009F -S3156004F800000000000000000000000000000000008E -S3156004F810000000000000000000000000000000007E -S3156004F820000000000000000000000000000000006E -S3156004F830000000000000000000000000000000005E -S3156004F840000000000000000000000000000000004E -S3156004F850000000000000000000000000000000003E -S3156004F860000000000000000000000000000000002E -S3156004F870000000000000000000000000000000001E -S3156004F880000000000000000000000000000000000E -S3156004F89000000000000000000000000000000000FE -S3156004F8A000000000000000000000000000000000EE -S3156004F8B000000000000000000000000000000000DE -S3156004F8C000000000000000000000000000000000CE -S3156004F8D000000000000000000000000000000000BE -S3156004F8E000000000000000000000000000000000AE -S3156004F8F0000000000000000000000000000000009E -S3156004F900000000000000000000000000000000008D -S3156004F910000000000000000000000000000000007D -S3156004F920000000000000000000000000000000006D -S3156004F930000000000000000000000000000000005D -S3156004F940000000000000000000000000000000004D -S3156004F950000000000000000000000000000000003D -S3156004F960000000000000000000000000000000002D -S3156004F970000000000000000000000000000000001D -S3156004F980000000000000000000000000000000000D -S3156004F99000000000000000000000000000000000FD -S3156004F9A000000000000000000000000000000000ED -S3156004F9B000000000000000000000000000000000DD -S3156004F9C000000000000000000000000000000000CD -S3156004F9D000000000000000000000000000000000BD -S3156004F9E000000000000000000000000000000000AD -S3156004F9F0000000000000000000000000000000009D -S3156004FA00000000000000000000000000000000008C -S3156004FA10000000000000000000000000000000007C -S3156004FA20000000000000000000000000000000006C -S3156004FA30000000000000000000000000000000005C -S3156004FA40000000000000000000000000000000004C -S3156004FA50000000000000000000000000000000003C -S3156004FA60000000000000000000000000000000002C -S3156004FA70000000000000000000000000000000001C -S3156004FA80000000000000000000000000000000000C -S3156004FA9000000000000000000000000000000000FC -S3156004FAA000000000000000000000000000000000EC -S3156004FAB000000000000000000000000000000000DC -S3156004FAC000000000000000000000000000000000CC -S3156004FAD000000000000000000000000000000000BC -S3156004FAE000000000000000000000000000000000AC -S3156004FAF0000000000000000000000000000000009C -S3156004FB00000000000000000000000000000000008B -S3156004FB10000000000000000000000000000000007B -S3156004FB20000000000000000000000000000000006B -S3156004FB30000000000000000000000000000000005B -S3156004FB40000000000000000000000000000000004B -S3156004FB50000000000000000000000000000000003B -S3156004FB60000000000000000000000000000000002B -S3156004FB70000000000000000000000000000000001B -S3156004FB80000000000000000000000000000000000B -S3156004FB9000000000000000000000000000000000FB -S3156004FBA000000000000000000000000000000000EB -S3156004FBB000000000000000000000000000000000DB -S3156004FBC000000000000000000000000000000000CB -S3156004FBD000000000000000000000000000000000BB -S3156004FBE000000000000000000000000000000000AB -S3156004FBF0000000000000000000000000000000009B -S3156004FC00000000000000000000000000000000008A -S3156004FC10000000000000000000000000000000007A -S3156004FC20000000000000000000000000000000006A -S3156004FC30000000000000000000000000000000005A -S3156004FC40000000000000000000000000000000004A -S3156004FC50000000000000000000000000000000003A -S3156004FC60000000000000000000000000000000002A -S3156004FC70000000000000000000000000000000001A -S3156004FC80000000000000000000000000000000000A -S3156004FC9000000000000000000000000000000000FA -S3156004FCA000000000000000000000000000000000EA -S3156004FCB000000000000000000000000000000000DA -S3156004FCC000000000000000000000000000000000CA -S3156004FCD000000000000000000000000000000000BA -S3156004FCE000000000000000000000000000000000AA -S3156004FCF0000000000000000000000000000000009A -S3156004FD000000000000000000000000000000000089 -S3156004FD100000000000000000000000000000000079 -S3156004FD200000000000000000000000000000000069 -S3156004FD300000000000000000000000000000000059 -S3156004FD400000000000000000000000000000000049 -S3156004FD500000000000000000000000000000000039 -S3156004FD600000000000000000000000000000000029 -S3156004FD700000000000000000000000000000000019 -S3156004FD800000000000000000000000000000000009 -S3156004FD9000000000000000000000000000000000F9 -S3156004FDA000000000000000000000000000000000E9 -S3156004FDB000000000000000000000000000000000D9 -S3156004FDC000000000000000000000000000000000C9 -S3156004FDD000000000000000000000000000000000B9 -S3156004FDE000000000000000000000000000000000A9 -S3156004FDF00000000000000000000000000000000099 -S3156004FE000000000000000000000000000000000088 -S3156004FE100000000000000000000000000000000078 -S3156004FE200000000000000000000000000000000068 -S3156004FE300000000000000000000000000000000058 -S3156004FE400000000000000000000000000000000048 -S3156004FE500000000000000000000000000000000038 -S3156004FE600000000000000000000000000000000028 -S3156004FE700000000000000000000000000000000018 -S3156004FE800000000000000000000000000000000008 -S3156004FE9000000000000000000000000000000000F8 -S3156004FEA000000000000000000000000000000000E8 -S3156004FEB000000000000000000000000000000000D8 -S3156004FEC000000000000000000000000000000000C8 -S3156004FED000000000000000000000000000000000B8 -S3156004FEE000000000000000000000000000000000A8 -S3156004FEF00000000000000000000000000000000098 -S3156004FF000000000000000000000000000000000087 -S3156004FF100000000000000000000000000000000077 -S3156004FF200000000000000000000000000000000067 -S3156004FF300000000000000000000000000000000057 -S3156004FF400000000000000000000000000000000047 -S3156004FF500000000000000000000000000000000037 -S3156004FF600000000000000000000000000000000027 -S3156004FF700000000000000000000000000000000017 -S3156004FF800000000000000000000000000000000007 -S3156004FF9000000000000000000000000000000000F7 -S3156004FFA000000000000000000000000000000000E7 -S3156004FFB000000000000000000000000000000000D7 -S3156004FFC000000000000000000000000000000000C7 -S3156004FFD000000000000000000000000000000000B7 -S3156004FFE000000000000000000000000000000000A7 -S3156004FFF00000000000000000000000000000000097 -S315600500000000000200000003000000000000000080 -S315600500100000000100000000FFFFFFFE0000000376 -S3156005002055555554FFFFFFFE0000000355555554C1 -S31560050030700FFFFE00000007100249240000000053 -S315600500400000000000000000000000020000000340 -S315600500500000000000000003FFFFFFFEFFFFFFFF3B -S3156005006000000002FFFFFFFD000000000000000029 -S31560050070000000010000000000000000FFFFFFFF18 -S315600500800000000000000001FFFFFFFFFFFFFFFF0C -S31560050090FFFFFFFF00000001FFFFFFFFFFFFFFFE01 -S315600500A00000000300000000FFFFFFFEFFFFFFFDED -S315600500B000000000000000090000000700000001C4 -S315600500C0FFFFFFF700000002FFFFFFFCFFFFFFF8E1 -S315600500D000000002FFFFFFFCFFFFFFF8FFFFFFFCCC -S315600500E00000000200000008FFFFFFFCFFFFFFFEA7 -S315600500F0FFFFFFF8FFFFFFF800000001FFFFFFF8B5 -S31560050100FFFFFFF7000000000000000B0000000283 -S31560050110000000050000002F000000020000001727 -S3156005012000003039000002A700000012FFFF076CCF -S315600501300000004DFFFFFCC600003039FFFFFD598A -S31560050140FFFFFFEEFFFF076CFFFFFFB30000033AFB -S3156005015000000091FFFFE84100000000FFFFFD84FD -S31560050160FFFED02F000000000000F6FA006E498100 -S315600501700000000000000000000000000000000014 -S31560050180FFFFF0000000000200000003000000060B -S3156005019000000002FFFFFFFDFFFFFFFA0000000001 -S315600501A0000000010000000000000000FFFFFFFFE7 -S315600501B00000000000000001FFFFFFFFFFFFFFFFDB -S315600501C0FFFFFFFF00000001FFFFFFFFFFFFFFFED0 -S315600501D000000003FFFFFFFAFFFFFFFEFFFFFFFDC5 -S315600501E00000000600000000000000000000000995 -S315600501F00000000000000000000000000000000094 -S31560050200000000000000000100000002000000037D -S315600502100000000000000000000000000000000073 -S31560050220000000006005050C600505D8600506A49C -S315600502300000000000000000000000000000000053 -S315600502400000000000000000000000000000000043 -S31560050250000000006001B58000000000000000009D -S315600502600000000000000000000000000000000023 -S315600502700000000000000000000000000000000013 -S315600502800000000000000000000000000000000003 -S3156005029000000000000000000000000000000000F3 -S315600502A000000000000000000000000000000000E3 -S315600502B000000000000000000000000000000000D3 -S315600502C000000000000000000000000000000001C2 -S315600502D0330EABCD1234E66DDEEC0005000B000087 -S315600502E000000000000000000000000000000000A3 -S315600502F00000000000000000000000000000000093 -S315600503000000000000000000000000000000000082 -S315600503100000000000000000000000000000000072 -S315600503200000000000000000000000000000000062 -S315600503300000000000000000000000000000000052 -S315600503400000000000000000000000000000000042 -S315600503500000000000000000000000000000000032 -S315600503600000000000000000000000000000000022 -S315600503700000000000000000000000000000000012 -S315600503800000000000000000000000000000000002 -S3156005039000000000000000000000000000000000F2 -S315600503A000000000000000000000000000000000E2 -S315600503B000000000000000000000000000000000D2 -S315600503C000000000000000000000000000000000C2 -S315600503D000000000000000000000000000000000B2 -S315600503E000000000000000000000000000000000A2 -S315600503F00000000000000000000000000000000092 -S315600504000000000000000000000000000000000081 -S315600504100000000000000000000000000000000071 -S315600504200000000000000000000000000000000061 -S315600504300000000000000000000000000000000051 -S315600504400000000000000000000000000000000041 -S315600504500000000000000000000000000000000031 -S315600504600000000000000000000000000000000021 -S315600504700000000000000000000000000000000011 -S315600504800000000000000000000000000000000001 -S3156005049000000000000000000000000000000000F1 -S315600504A000000000000000000000000000000000E1 -S315600504B000000000000000000000000000000000D1 -S315600504C000000000000000000000000000000000C1 -S315600504D000000000000000000000000000000000B1 -S315600504E000000000000000000000000000000000A1 -S315600504F00000000000000000000000000000000091 -S315600505000000000000000000000000000000000080 -S315600505100000000000000000000000000000000070 -S315600505200000000000000000000000000000000060 -S315600505300000000000000000000000000000000050 -S315600505400000000000000000000000000000000040 -S315600505500000000000000000000000000000000030 -S315600505600000000000000000000000000000000020 -S315600505700000000000000000000000000000000010 -S315600505800000000000000000000000000000000000 -S3156005059000000000000000000000000000000000F0 -S315600505A000000000000000000000000000000000E0 -S315600505B000000000000000000000000000000000D0 -S315600505C000000000000000000000000000000000C0 -S315600505D000000000000000000000000000000000B0 -S315600505E000000000000000000000000000000000A0 -S315600505F00000000000000000000000000000000090 -S31560050600000000000000000000000000000000007F -S31560050610000000000000000000000000000000006F -S31560050620000000000000000000000000000000005F -S31560050630000000000000000000000000000000004F -S31560050640000000000000000000000000000000003F -S31560050650000000000000000000000000000000002F -S31560050660000000000000000000000000000000001F -S31560050670000000000000000000000000000000000F -S3156005068000000000000000000000000000000000FF -S3156005069000000000000000000000000000000000EF -S315600506A000000000000000000000000000000000DF -S315600506B000000000000000000000000000000000CF -S315600506C000000000000000000000000000000000BF -S315600506D000000000000000000000000000000000AF -S315600506E0000000000000000000000000000000009F -S315600506F0000000000000000000000000000000008F -S31560050700000000000000000000000000000000007E -S31560050710000000000000000000000000000000006E -S31560050720000000000000000000000000000000005E -S31560050730000000000000000000000000000000004E -S31560050740000000000000000000000000000000003E -S31560050750000000000000000000000000000000002E -S31560050760000000000000000000000000000000001E -S315600507706005022000000000FFFFFFFF0002000089 -S315600507800000000000000000600507806005078026 -S31560050790600507886005078860050790600507900E -S315600507A06005079860050798600507A0600507A0BE -S315600507B0600507A8600507A8600507B0600507B06E -S315600507C0600507B8600507B8600507C0600507C01E -S315600507D0600507C8600507C8600507D0600507D0CE -S315600507E0600507D8600507D8600507E0600507E07E -S315600507F0600507E8600507E8600507F0600507F02E -S31560050800600507F8600507F86005080060050800DB -S315600508106005080860050808600508106005081089 -S315600508206005081860050818600508206005082039 -S3156005083060050828600508286005083060050830E9 -S315600508406005083860050838600508406005084099 -S315600508506005084860050848600508506005085049 -S3156005086060050858600508586005086060050860F9 -S3156005087060050868600508686005087060050870A9 -S315600508806005087860050878600508806005088059 -S315600508906005088860050888600508906005089009 -S315600508A06005089860050898600508A0600508A0B9 -S315600508B0600508A8600508A8600508B0600508B069 -S315600508C0600508B8600508B8600508C0600508C019 -S315600508D0600508C8600508C8600508D0600508D0C9 -S315600508E0600508D8600508D8600508E0600508E079 -S315600508F0600508E8600508E8600508F0600508F029 -S31560050900600508F8600508F86005090060050900D6 -S315600509106005090860050908600509106005091084 -S315600509206005091860050918600509206005092034 -S3156005093060050928600509286005093060050930E4 -S315600509406005093860050938600509406005094094 -S315600509506005094860050948600509506005095044 -S3156005096060050958600509586005096060050960F4 -S3156005097060050968600509686005097060050970A4 -S315600509806005097860050978600509806005098054 -S315600509906005098860050988600509906005099004 -S315600509A06005099860050998600509A0600509A0B4 -S315600509B0600509A8600509A8600509B0600509B064 -S315600509C0600509B8600509B8600509C0600509C014 -S315600509D0600509C8600509C8600509D0600509D0C4 -S315600509E0600509D8600509D8600509E0600509E074 -S315600509F0600509E8600509E8600509F0600509F024 -S31560050A00600509F8600509F860050A0060050A00D1 -S31560050A1060050A0860050A0860050A1060050A107F -S31560050A2060050A1860050A1860050A2060050A202F -S31560050A3060050A2860050A2860050A3060050A30DF -S31560050A4060050A3860050A3860050A4060050A408F -S31560050A5060050A4860050A4860050A5060050A503F -S31560050A6060050A5860050A5860050A6060050A60EF -S31560050A7060050A6860050A6860050A7060050A709F -S31560050A8060050A7860050A7860050A8060050A804F -S31560050A9060050A8860050A8860050A9060050A90FF -S31560050AA060050A9860050A9860050AA060050AA0AF -S31560050AB060050AA860050AA860050AB060050AB05F -S31560050AC060050AB860050AB860050AC060050AC00F -S31560050AD060050AC860050AC860050AD060050AD0BF -S31560050AE060050AD860050AD860050AE060050AE06F -S31560050AF060050AE860050AE860050AF060050AF01F -S31560050B0060050AF860050AF860050B0060050B00CC -S31560050B1060050B0860050B0860050B1060050B107A -S31560050B2060050B1860050B1860050B2060050B202A -S31560050B3060050B2860050B2860050B3060050B30DA -S31560050B4060050B3860050B3860050B4060050B408A -S31560050B5060050B4860050B4860050B5060050B503A -S31560050B6060050B5860050B5860050B6060050B60EA -S31560050B7060050B6860050B6860050B7060050B709A -S31560050B8060050B7860050B780000000060050B8832 -S31560050B9000000000000000000000000000000002E8 -S31560050BA000000000000000000000000000000000DA -S31560050BB000000000000000000000000000000000CA -S31560050BC000000000000000000000000000000000BA -S31560050BD000000000000000000000000000000000AA -S31560050BE0000000000000000000000000000000009A -S31560050BF0000000000000000000000000000000008A -S31560050C000000000000000000000000000000000079 -S31560050C100000000000000000000000000000000069 -S31560050C200000000000000000000000000000000059 -S31560050C3080000100000000080000000700000006B3 -S31560050C40000000030000000000000000FFFF8AD0DE -S30960050C5080000310A2 -S705600000009A diff --git a/designs/leon3-ge-hpe-mini-lattice/sram.srec b/designs/leon3-ge-hpe-mini-lattice/sram.srec deleted file mode 100755 index 3576a8f4..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/sram.srec +++ /dev/null @@ -1,19492 +0,0 @@ -S00C00007372616D2E7372656365 -S31560000000881000000918006C81C1206C0100000096 -S31560000010A1480000A75000001080203BAC102001D2 -S3156000002091D02000010000000100000001000000E6 -S3156000003091D02000010000000100000001000000D6 -S31560000040A14800002918006B81C523A401000000A7 -S31560000050A14800002918006981C522C80100000076 -S31560000060A14800002918006981C5233401000000F9 -S3156000007091D0200001000000010000000100000096 -S3156000008091D0200001000000010000000100000086 -S31560000090A1480000A75000001080201BAC1020096A -S315600000A091D0200001000000010000000100000066 -S315600000B091D0200001000000010000000100000056 -S315600000C091D0200001000000010000000100000046 -S315600000D091D0200001000000010000000100000036 -S315600000E091D0200001000000010000000100000026 -S315600000F091D0200001000000010000000100000016 -S3156000010091D0200001000000010000000100000005 -S31560000110AE102001A148000010806A33A75000008D -S31560000120AE102002A148000010806A2FA750000080 -S31560000130AE102003A148000010806A2BA750000073 -S31560000140AE102004A148000010806A27A750000066 -S31560000150AE102005A148000010806A23A750000059 -S31560000160AE102006A148000010806A1FA75000004C -S31560000170AE102007A148000010806A1BA75000003F -S31560000180AE102008A148000010806A17A750000032 -S31560000190AE102009A148000010806A13A750000025 -S315600001A0AE10200AA148000010806A0FA750000018 -S315600001B0AE10200BA148000010806A0BA75000000B -S315600001C0AE10200CA148000010806A07A7500000FE -S315600001D0AE10200DA148000010806A03A7500000F1 -S315600001E0AE10200EA1480000108069FFA7500000E5 -S315600001F0AE10200FA1480000108069FBA7500000D8 -S3156000020091D0200001000000010000000100000004 -S3156000021091D02000010000000100000001000000F4 -S3156000022091D02000010000000100000001000000E4 -S3156000023091D02000010000000100000001000000D4 -S3156000024091D02000010000000100000001000000C4 -S3156000025091D02000010000000100000001000000B4 -S3156000026091D02000010000000100000001000000A4 -S3156000027091D0200001000000010000000100000094 -S3156000028091D0200001000000010000000100000084 -S3156000029091D0200001000000010000000100000074 -S315600002A091D0200001000000010000000100000064 -S315600002B091D0200001000000010000000100000054 -S315600002C091D0200001000000010000000100000044 -S315600002D091D0200001000000010000000100000034 -S315600002E091D0200001000000010000000100000024 -S315600002F091D0200001000000010000000100000014 -S3156000030091D0200001000000010000000100000003 -S3156000031091D02000010000000100000001000000F3 -S3156000032091D02000010000000100000001000000E3 -S3156000033091D02000010000000100000001000000D3 -S3156000034091D02000010000000100000001000000C3 -S3156000035091D02000010000000100000001000000B3 -S3156000036091D02000010000000100000001000000A3 -S3156000037091D0200001000000010000000100000093 -S3156000038091D0200001000000010000000100000083 -S3156000039091D0200001000000010000000100000073 -S315600003A091D0200001000000010000000100000063 -S315600003B091D0200001000000010000000100000053 -S315600003C091D0200001000000010000000100000043 -S315600003D091D0200001000000010000000100000033 -S315600003E091D0200001000000010000000100000023 -S315600003F091D0200001000000010000000100000013 -S3156000040091D0200001000000010000000100000002 -S3156000041091D02000010000000100000001000000F2 -S3156000042091D02000010000000100000001000000E2 -S3156000043091D02000010000000100000001000000D2 -S3156000044091D02000010000000100000001000000C2 -S3156000045091D02000010000000100000001000000B2 -S3156000046091D02000010000000100000001000000A2 -S3156000047091D0200001000000010000000100000092 -S3156000048091D0200001000000010000000100000082 -S3156000049091D0200001000000010000000100000072 -S315600004A091D0200001000000010000000100000062 -S315600004B091D0200001000000010000000100000052 -S315600004C091D0200001000000010000000100000042 -S315600004D091D0200001000000010000000100000032 -S315600004E091D0200001000000010000000100000022 -S315600004F091D0200001000000010000000100000012 -S3156000050091D0200001000000010000000100000001 -S3156000051091D02000010000000100000001000000F1 -S3156000052091D02000010000000100000001000000E1 -S3156000053091D02000010000000100000001000000D1 -S3156000054091D02000010000000100000001000000C1 -S3156000055091D02000010000000100000001000000B1 -S3156000056091D02000010000000100000001000000A1 -S3156000057091D0200001000000010000000100000091 -S3156000058091D0200001000000010000000100000081 -S3156000059091D0200001000000010000000100000071 -S315600005A091D0200001000000010000000100000061 -S315600005B091D0200001000000010000000100000051 -S315600005C091D0200001000000010000000100000041 -S315600005D091D0200001000000010000000100000031 -S315600005E091D0200001000000010000000100000021 -S315600005F091D0200001000000010000000100000011 -S3156000060091D0200001000000010000000100000000 -S3156000061091D02000010000000100000001000000F0 -S3156000062091D02000010000000100000001000000E0 -S3156000063091D02000010000000100000001000000D0 -S3156000064091D02000010000000100000001000000C0 -S3156000065091D02000010000000100000001000000B0 -S3156000066091D02000010000000100000001000000A0 -S3156000067091D0200001000000010000000100000090 -S3156000068091D0200001000000010000000100000080 -S3156000069091D0200001000000010000000100000070 -S315600006A091D0200001000000010000000100000060 -S315600006B091D0200001000000010000000100000050 -S315600006C091D0200001000000010000000100000040 -S315600006D091D0200001000000010000000100000030 -S315600006E091D0200001000000010000000100000020 -S315600006F091D0200001000000010000000100000010 -S3156000070091D02000010000000100000001000000FF -S3156000071091D02000010000000100000001000000EF -S3156000072091D02000010000000100000001000000DF -S3156000073091D02000010000000100000001000000CF -S3156000074091D02000010000000100000001000000BF -S3156000075091D02000010000000100000001000000AF -S3156000076091D020000100000001000000010000009F -S3156000077091D020000100000001000000010000008F -S3156000078091D020000100000001000000010000007F -S3156000079091D020000100000001000000010000006F -S315600007A091D020000100000001000000010000005F -S315600007B091D020000100000001000000010000004F -S315600007C091D020000100000001000000010000003F -S315600007D091D020000100000001000000010000002F -S315600007E091D020000100000001000000010000001F -S315600007F091D020000100000001000000010000000F -S3156000080091D02000010000000100000001000000FE -S3156000081091D02000010000000100000001000000EE -S31560000820A14800002918006A81C52108010000005E -S31560000830A1480000108067D9A750000001000000A1 -S3156000084091D02000010000000100000001000000BE -S31560000850A14800002918006A81C520EC010000004B -S3156000086091D020000100000001000000010000009E -S3156000087091D020000100000001000000010000008E -S3156000088091D020000100000001000000010000007E -S3156000089091D020000100000001000000010000006E -S315600008A091D020000100000001000000010000005E -S315600008B091D020000100000001000000010000004E -S315600008C091D020000100000001000000010000003E -S315600008D091D020000100000001000000010000002E -S315600008E091D020000100000001000000010000001E -S315600008F091D020000100000001000000010000000E -S3156000090091D02000010000000100000001000000FD -S3156000091091D02000010000000100000001000000ED -S3156000092091D02000010000000100000001000000DD -S3156000093091D02000010000000100000001000000CD -S3156000094091D02000010000000100000001000000BD -S3156000095091D02000010000000100000001000000AD -S3156000096091D020000100000001000000010000009D -S3156000097091D020000100000001000000010000008D -S3156000098091D020000100000001000000010000007D -S3156000099091D020000100000001000000010000006D -S315600009A091D020000100000001000000010000005D -S315600009B091D020000100000001000000010000004D -S315600009C091D020000100000001000000010000003D -S315600009D091D020000100000001000000010000002D -S315600009E091D020000100000001000000010000001D -S315600009F091D020000100000001000000010000000D -S31560000A0091D02000010000000100000001000000FC -S31560000A1091D02000010000000100000001000000EC -S31560000A2091D02000010000000100000001000000DC -S31560000A3091D02000010000000100000001000000CC -S31560000A4091D02000010000000100000001000000BC -S31560000A5091D02000010000000100000001000000AC -S31560000A6091D020000100000001000000010000009C -S31560000A7091D020000100000001000000010000008C -S31560000A8091D020000100000001000000010000007C -S31560000A9091D020000100000001000000010000006C -S31560000AA091D020000100000001000000010000005C -S31560000AB091D020000100000001000000010000004C -S31560000AC091D020000100000001000000010000003C -S31560000AD091D020000100000001000000010000002C -S31560000AE091D020000100000001000000010000001C -S31560000AF091D020000100000001000000010000000C -S31560000B0091D02000010000000100000001000000FB -S31560000B1091D02000010000000100000001000000EB -S31560000B2091D02000010000000100000001000000DB -S31560000B3091D02000010000000100000001000000CB -S31560000B4091D02000010000000100000001000000BB -S31560000B5091D02000010000000100000001000000AB -S31560000B6091D020000100000001000000010000009B -S31560000B7091D020000100000001000000010000008B -S31560000B8091D020000100000001000000010000007B -S31560000B9091D020000100000001000000010000006B -S31560000BA091D020000100000001000000010000005B -S31560000BB091D020000100000001000000010000004B -S31560000BC091D020000100000001000000010000003B -S31560000BD091D020000100000001000000010000002B -S31560000BE091D020000100000001000000010000001B -S31560000BF091D020000100000001000000010000000B -S31560000C0091D02000010000000100000001000000FA -S31560000C1091D02000010000000100000001000000EA -S31560000C2091D02000010000000100000001000000DA -S31560000C3091D02000010000000100000001000000CA -S31560000C4091D02000010000000100000001000000BA -S31560000C5091D02000010000000100000001000000AA -S31560000C6091D020000100000001000000010000009A -S31560000C7091D020000100000001000000010000008A -S31560000C8091D020000100000001000000010000007A -S31560000C9091D020000100000001000000010000006A -S31560000CA091D020000100000001000000010000005A -S31560000CB091D020000100000001000000010000004A -S31560000CC091D020000100000001000000010000003A -S31560000CD091D020000100000001000000010000002A -S31560000CE091D020000100000001000000010000001A -S31560000CF091D020000100000001000000010000000A -S31560000D0091D02000010000000100000001000000F9 -S31560000D1091D02000010000000100000001000000E9 -S31560000D2091D02000010000000100000001000000D9 -S31560000D3091D02000010000000100000001000000C9 -S31560000D4091D02000010000000100000001000000B9 -S31560000D5091D02000010000000100000001000000A9 -S31560000D6091D0200001000000010000000100000099 -S31560000D7091D0200001000000010000000100000089 -S31560000D8091D0200001000000010000000100000079 -S31560000D9091D0200001000000010000000100000069 -S31560000DA091D0200001000000010000000100000059 -S31560000DB091D0200001000000010000000100000049 -S31560000DC091D0200001000000010000000100000039 -S31560000DD091D0200001000000010000000100000029 -S31560000DE091D0200001000000010000000100000019 -S31560000DF091D0200001000000010000000100000009 -S31560000E0091D02000010000000100000001000000F8 -S31560000E1091D02000010000000100000001000000E8 -S31560000E2091D02000010000000100000001000000D8 -S31560000E3091D02000010000000100000001000000C8 -S31560000E4091D02000010000000100000001000000B8 -S31560000E5091D02000010000000100000001000000A8 -S31560000E6091D0200001000000010000000100000098 -S31560000E7091D0200001000000010000000100000088 -S31560000E8091D0200001000000010000000100000078 -S31560000E9091D0200001000000010000000100000068 -S31560000EA091D0200001000000010000000100000058 -S31560000EB091D0200001000000010000000100000048 -S31560000EC091D0200001000000010000000100000038 -S31560000ED091D0200001000000010000000100000028 -S31560000EE091D0200001000000010000000100000018 -S31560000EF091D0200001000000010000000100000008 -S31560000F0091D02000010000000100000001000000F7 -S31560000F1091D02000010000000100000001000000E7 -S31560000F2091D02000010000000100000001000000D7 -S31560000F3091D02000010000000100000001000000C7 -S31560000F4091D02000010000000100000001000000B7 -S31560000F5091D02000010000000100000001000000A7 -S31560000F6091D0200001000000010000000100000097 -S31560000F7091D0200001000000010000000100000087 -S31560000F8091D0200001000000010000000100000077 -S31560000F9091D0200001000000010000000100000067 -S31560000FA091D0200001000000010000000100000057 -S31560000FB091D0200001000000010000000100000047 -S31560000FC091D0200001000000010000000100000037 -S31560000FD091D0200001000000010000000100000027 -S31560000FE091D0200001000000010000000100000017 -S31560000FF091D0200001000000010000000100000007 -S315600010009DE3BFC0051801438410A0600718014422 -S315600010108610E188821000008620C00286A0E00863 -S3156000102036BFFFFFC0388003111801449012218833 -S31560001030C02200004000666601000000400066664F -S315600010400100000040006818010000001118006DE2 -S31560001050901221A040006166010000004000694ACC -S3156000106001000000400000430100000040006743AB -S315600010700100000081C7E00881E800009DE3BF9899 -S3156000108023180143C20C606080A0600012800015C6 -S315600010902118008010800005C204200C9FC3400008 -S315600010A0C224200CC204200CDA00400080A3600039 -S315600010B012BFFFFB82006004030000008210600024 -S315600010C080A0600002800006821020011118006D69 -S315600010D067FFFBCC9012213082102001C22C606029 -S315600010E081C7E00881E800009DE3BF9881C7E008FA -S315600010F081E800009DE3BF98030000008210600055 -S315600011001118006D1318014380A060009012213001 -S31560001110028000049212606467FFFBBA010000005F -S315600011201B180144C203618880A060000280000928 -S31560001130B0136188030000008210600080A0600028 -S31560001140028000040100000067FFFBAE81E800003A -S315600011500100000081C7E00881E800009DE3BF98B8 -S3156000116081C7E00881E8000081C3E0080100000053 -S315600011709DE3BF9840000007010000004000014663 -S31560001180010000004000000E81E800000100000040 -S315600011909DE3BF98400000290100000080A2200066 -S315600011A01280000503180080D80060109A10200194 -S315600011B0DA23201081C7E00891E820000318008038 -S315600011C0D80060109A102001DA23201481C3E00849 -S315600011D09010200003180080DA006010D0234000D1 -S315600011E081C3E0089010200003180080DA006010C8 -S315600011F0D023600881C3E0089010200003180080A7 -S31560001200DA006010D023600481C3E00890102000EB -S3156000121013180080921260149010200081C3E008B9 -S31560001220D0EA4020901020001318008092126014BB -S3156000123081C3E008D0224000914440009132201CD6 -S3156000124081C3E008900A200F81C3E008D0820020A5 -S315600012509010200C81C3E008D08200408210000804 -S3156000126080A20009148000039022000990224001A8 -S3156000127081C3E00801000000932A60028210200109 -S31560001280C22200099810200080A3000A1680000A76 -S3156000129096102001832B2002DA02000180A0000D47 -S315600012A0826020009803200180A3000A06BFFFFA2F -S315600012B0960AC00180A2E00002BFFFF498102000E9 -S315600012C081C3E008010000009DE3BF98C2062010BC -S315600012D08330601CA0100018A400600180A4A001E7 -S315600012E00280006CB0103FFF7FFFFFD4010000005A -S315600012F0AA100008912A20047FFFFFBC90022007F5 -S315600013007FFFFFD40100000003020000808A000115 -S315600013100280005C010000009A05600182102001D5 -S315600013208328400D11180080C2242010901220A03E -S31560001330921000157FFFFFD19410001203180080F1 -S3156000134082106018A12D6002C0204010DA004010A3 -S31560001350A610000180A36009291801431480002BA0 -S31560001360AC1000017FFFFFAB0100000080A22000EF -S3156000137012BFFFFD01000000B010200080A6001221 -S31560001380168000140100000010800005A2100016EF -S3156000139080A600121680000F01000000832E200236 -S315600013A0D0044010D20440017FFFFFADB00620019B -S315600013B080A2200104BFFFF7901020027FFFFF90FC -S315600013C00100000080A6001206BFFFF6832E2002F1 -S315600013D0C205207C82006001C225207C7FFFFF92CF -S315600013E001000000C204C01082006001C224C01067 -S315600013F0DA04C01080A3600904BFFFDB1118008007 -S31560001400108000049012205C111800809012205CFD -S31560001410921000157FFFFF9994100012832CA00292 -S3156000142082004012A0004001DA05207C80A4000DF5 -S3156000143002800004231801437FFFFF719010200390 -S31560001440C204607C80A06000048000060100000089 -S31560001450C204607C80A400011680000580A560003F -S315600014607FFFFF679010200380A56000228000093F -S31560001470B010200091D0200010800006B01020002F -S315600014807FFFFF5F9010200110BFFFA59A056001E6 -S3156000149081C7E00881E800009DE3BF98C20620107E -S315600014A0A01000188330601C80A0600002800009D4 -S315600014B0B0103FFF7FFFFF610100000080A22000A7 -S315600014C0128000040300003F821063FFC2242010D4 -S315600014D081C7E00881E800009DE3BF98C20620103E -S315600014E08330601CA400600180A4A00102800068B3 -S315600014F0B0103FFF7FFFFF5101000000AA100008F7 -S31560001500912A20047FFFFF39900220077FFFFF5159 -S315600015100100000003020000808A0001028000587A -S315600015200100000011180080901220A09210001592 -S315600015307FFFFF529410001203180080821060181B -S31560001540A12D6002C0204010DA004010A6100001F4 -S3156000155080A36009291801431480002BAC10000198 -S315600015607FFFFF2C0100000080A2200012BFFFFD5C -S3156000157001000000B010200080A600121680001442 -S315600015800100000010800005A210001680A600125F -S315600015901680000F01000000832E2002D004401048 -S315600015A0D20440017FFFFF2EB006200180A22001F9 -S315600015B004BFFFF7901020027FFFFF1101000000BB -S315600015C080A6001206BFFFF6832E2002C205207C8D -S315600015D082006001C225207C7FFFFF1301000000AE -S315600015E0C204C01082006001C224C010DA04C010B8 -S315600015F080A3600904BFFFDB11180080108000041F -S315600016009012205C111800809012205C92100015D8 -S315600016107FFFFF1A94100012832CA00282004012F2 -S31560001620A0004001DA05207C80A4000D0280000441 -S31560001630231801437FFFFEF290102003C204607CF2 -S3156000164080A060000480000601000000C204607C87 -S3156000165080A400011680000580A560007FFFFEE87B -S315600016609010200380A5600022800009B010200041 -S3156000167091D0200010800006B01020007FFFFEE0B1 -S315600016809010200110BFFFA91118008081C7E008E3 -S3156000169081E800009DE3BF98312000009216220089 -S315600016A09410200040003E599010200140003B629B -S315600016B0901622009016230040003EBE921020082D -S315600016C0B016210040003A4F81E80000010000009A -S315600016D09DE3BF9821200000921422009410200000 -S315600016E040003E4A9010200140003B539014220077 -S315600016F09210001840003EAF90142300B0142100F1 -S3156000170040003A4081E8000001000000000000004F -S315600017100000000000000000000000000000000063 -S315600017200000000000000000000000000000000053 -S315600017300000000000000000000000000000000043 -S315600017400000000000000000000000000000000033 -S315600017500000000000000000000000000000000023 -S315600017600000000000000000000000000000000013 -S315600017700000000000000000000000000000000003 -S3156000178000000000000000000000000000000000F3 -S3156000179000000000000000000000000000000000E3 -S315600017A000000000000000000000000000000000D3 -S315600017B000000000000000000000000000000000C3 -S315600017C000000000000000000000000000000000B3 -S315600017D000000000000000000000000000000000A3 -S315600017E00000000000000000000000000000000093 -S315600017F00000000000000000000000000000000083 -S315600018000000000000000000000000000000000072 -S315600018100000000000000000000000000000000062 -S315600018200000000000000000000000000000000052 -S315600018300000000000000000000000000000000042 -S315600018400000000000000000000000000000000032 -S315600018500000000000000000000000000000000022 -S315600018600000000000000000000000000000000012 -S315600018700000000000000000000000000000000002 -S3156000188000000000000000000000000000000000F2 -S3156000189000000000000000000000000000000000E2 -S315600018A000000000000000000000000000000000D2 -S315600018B000000000000000000000000000000000C2 -S315600018C000000000000000000000000000000000B2 -S315600018D000000000000000000000000000000000A2 -S315600018E00000000000000000000000000000000092 -S315600018F00000000000000000000000000000000082 -S315600019000000000000000000000000000000000071 -S315600019100000000000000000000000000000000061 -S315600019200000000000000000000000000000000051 -S315600019300000000000000000000000000000000041 -S315600019400000000000000000000000000000000031 -S315600019500000000000000000000000000000000021 -S315600019600000000000000000000000000000000011 -S315600019700000000000000000000000000000000001 -S3156000198000000000000000000000000000000000F1 -S3156000199000000000000000000000000000000000E1 -S315600019A000000000000000000000000000000000D1 -S315600019B000000000000000000000000000000000C1 -S315600019C000000000000000000000000000000000B1 -S315600019D000000000000000000000000000000000A1 -S315600019E00000000000000000000000000000000091 -S315600019F00000000000000000000000000000000081 -S31560001A000000000000000000000000000000000070 -S31560001A100000000000000000000000000000000060 -S31560001A200000000000000000000000000000000050 -S31560001A300000000000000000000000000000000040 -S31560001A400000000000000000000000000000000030 -S31560001A500000000000000000000000000000000020 -S31560001A600000000000000000000000000000000010 -S31560001A700000000000000000000000000000000000 -S31560001A8000000000000000000000000000000000F0 -S31560001A9000000000000000000000000000000000E0 -S31560001AA000000000000000000000000000000000D0 -S31560001AB000000000000000000000000000000000C0 -S31560001AC000000000000000000000000000000000B0 -S31560001AD000000000000000000000000000000000A0 -S31560001AE00000000000000000000000000000000090 -S31560001AF00000000000000000000000000000000080 -S31560001B00000000000000000000000000000000006F -S31560001B10000000000000000000000000000000005F -S31560001B20000000000000000000000000000000004F -S31560001B30000000000000000000000000000000003F -S31560001B40000000000000000000000000000000002F -S31560001B50000000000000000000000000000000001F -S31560001B60000000000000000000000000000000000F -S31560001B7000000000000000000000000000000000FF -S31560001B8000000000000000000000000000000000EF -S31560001B9000000000000000000000000000000000DF -S31560001BA000000000000000000000000000000000CF -S31560001BB000000000000000000000000000000000BF -S31560001BC000000000000000000000000000000000AF -S31560001BD0000000000000000000000000000000009F -S31560001BE0000000000000000000000000000000008F -S31560001BF0000000000000000000000000000000007F -S31560001C00000000000000000000000000000000006E -S31560001C10000000000000000000000000000000005E -S31560001C20000000000000000000000000000000004E -S31560001C30000000000000000000000000000000003E -S31560001C40000000000000000000000000000000002E -S31560001C50000000000000000000000000000000001E -S31560001C60000000000000000000000000000000000E -S31560001C7000000000000000000000000000000000FE -S31560001C8000000000000000000000000000000000EE -S31560001C9000000000000000000000000000000000DE -S31560001CA000000000000000000000000000000000CE -S31560001CB000000000000000000000000000000000BE -S31560001CC000000000000000000000000000000000AE -S31560001CD0000000000000000000000000000000009E -S31560001CE0000000000000000000000000000000008E -S31560001CF0000000000000000000000000000000007E -S31560001D00000000000000000000000000000000006D -S31560001D10000000000000000000000000000000005D -S31560001D20000000000000000000000000000000004D -S31560001D30000000000000000000000000000000003D -S31560001D40000000000000000000000000000000002D -S31560001D50000000000000000000000000000000001D -S31560001D60000000000000000000000000000000000D -S31560001D7000000000000000000000000000000000FD -S31560001D8000000000000000000000000000000000ED -S31560001D9000000000000000000000000000000000DD -S31560001DA000000000000000000000000000000000CD -S31560001DB000000000000000000000000000000000BD -S31560001DC000000000000000000000000000000000AD -S31560001DD0000000000000000000000000000000009D -S31560001DE0000000000000000000000000000000008D -S31560001DF0000000000000000000000000000000007D -S31560001E00000000000000000000000000000000006C -S31560001E10000000000000000000000000000000005C -S31560001E20000000000000000000000000000000004C -S31560001E30000000000000000000000000000000003C -S31560001E40000000000000000000000000000000002C -S31560001E50000000000000000000000000000000001C -S31560001E60000000000000000000000000000000000C -S31560001E7000000000000000000000000000000000FC -S31560001E8000000000000000000000000000000000EC -S31560001E9000000000000000000000000000000000DC -S31560001EA000000000000000000000000000000000CC -S31560001EB000000000000000000000000000000000BC -S31560001EC000000000000000000000000000000000AC -S31560001ED0000000000000000000000000000000009C -S31560001EE0000000000000000000000000000000008C -S31560001EF0000000000000000000000000000000007C -S31560001F00000000000000000000000000000000006B -S31560001F10000000000000000000000000000000005B -S31560001F20000000000000000000000000000000004B -S31560001F30000000000000000000000000000000003B -S31560001F40000000000000000000000000000000002B -S31560001F50000000000000000000000000000000001B -S31560001F60000000000000000000000000000000000B -S31560001F7000000000000000000000000000000000FB -S31560001F8000000000000000000000000000000000EB -S31560001F9000000000000000000000000000000000DB -S31560001FA000000000000000000000000000000000CB -S31560001FB000000000000000000000000000000000BB -S31560001FC000000000000000000000000000000000AB -S31560001FD0000000000000000000000000000000009B -S31560001FE0000000000000000000000000000000008B -S31560001FF0000000000000000000000000000000007B -S31560002000000000000000000000000000000000006A -S31560002010000000000000000000000000000000005A -S31560002020000000000000000000000000000000004A -S31560002030000000000000000000000000000000003A -S31560002040000000000000000000000000000000002A -S31560002050000000000000000000000000000000001A -S31560002060000000000000000000000000000000000A -S3156000207000000000000000000000000000000000FA -S3156000208000000000000000000000000000000000EA -S3156000209000000000000000000000000000000000DA -S315600020A000000000000000000000000000000000CA -S315600020B000000000000000000000000000000000BA -S315600020C000000000000000000000000000000000AA -S315600020D0000000000000000000000000000000009A -S315600020E0000000000000000000000000000000008A -S315600020F0000000000000000000000000000000007A -S315600021000000000000000000000000000000000069 -S315600021100000000000000000000000000000000059 -S315600021200000000000000000000000000000000049 -S315600021300000000000000000000000000000000039 -S315600021400000000000000000000000000000000029 -S315600021500000000000000000000000000000000019 -S315600021600000000000000000000000000000000009 -S3156000217000000000000000000000000000000000F9 -S3156000218000000000000000000000000000000000E9 -S3156000219000000000000000000000000000000000D9 -S315600021A000000000000000000000000000000000C9 -S315600021B000000000000000000000000000000000B9 -S315600021C000000000000000000000000000000000A9 -S315600021D00000000000000000000000000000000099 -S315600021E00000000000000000000000000000000089 -S315600021F00000000000000000000000000000000079 -S315600022000000000000000000000000000000000068 -S315600022100000000000000000000000000000000058 -S315600022200000000000000000000000000000000048 -S315600022300000000000000000000000000000000038 -S315600022400000000000000000000000000000000028 -S315600022500000000000000000000000000000000018 -S315600022600000000000000000000000000000000008 -S3156000227000000000000000000000000000000000F8 -S3156000228000000000000000000000000000000000E8 -S3156000229000000000000000000000000000000000D8 -S315600022A000000000000000000000000000000000C8 -S315600022B000000000000000000000000000000000B8 -S315600022C000000000000000000000000000000000A8 -S315600022D00000000000000000000000000000000098 -S315600022E00000000000000000000000000000000088 -S315600022F00000000000000000000000000000000078 -S315600023000000000000000000000000000000000067 -S315600023100000000000000000000000000000000057 -S315600023200000000000000000000000000000000047 -S315600023300000000000000000000000000000000037 -S315600023400000000000000000000000000000000027 -S315600023500000000000000000000000000000000017 -S315600023600000000000000000000000000000000007 -S3156000237000000000000000000000000000000000F7 -S3156000238000000000000000000000000000000000E7 -S3156000239000000000000000000000000000000000D7 -S315600023A000000000000000000000000000000000C7 -S315600023B000000000000000000000000000000000B7 -S315600023C000000000000000000000000000000000A7 -S315600023D00000000000000000000000000000000097 -S315600023E00000000000000000000000000000000087 -S315600023F00000000000000000000000000000000077 -S315600024000000000000000000000000000000000066 -S315600024100000000000000000000000000000000056 -S315600024200000000000000000000000000000000046 -S315600024300000000000000000000000000000000036 -S315600024400000000000000000000000000000000026 -S315600024500000000000000000000000000000000016 -S315600024600000000000000000000000000000000006 -S3156000247000000000000000000000000000000000F6 -S3156000248000000000000000000000000000000000E6 -S3156000249000000000000000000000000000000000D6 -S315600024A000000000000000000000000000000000C6 -S315600024B000000000000000000000000000000000B6 -S315600024C000000000000000000000000000000000A6 -S315600024D00000000000000000000000000000000096 -S315600024E00000000000000000000000000000000086 -S315600024F00000000000000000000000000000000076 -S315600025000000000000000000000000000000000065 -S315600025100000000000000000000000000000000055 -S315600025200000000000000000000000000000000045 -S315600025300000000000000000000000000000000035 -S315600025400000000000000000000000000000000025 -S315600025500000000000000000000000000000000015 -S315600025600000000000000000000000000000000005 -S3156000257000000000000000000000000000000000F5 -S3156000258000000000000000000000000000000000E5 -S3156000259000000000000000000000000000000000D5 -S315600025A000000000000000000000000000000000C5 -S315600025B000000000000000000000000000000000B5 -S315600025C000000000000000000000000000000000A5 -S315600025D00000000000000000000000000000000095 -S315600025E00000000000000000000000000000000085 -S315600025F00000000000000000000000000000000075 -S315600026000000000000000000000000000000000064 -S315600026100000000000000000000000000000000054 -S315600026200000000000000000000000000000000044 -S315600026300000000000000000000000000000000034 -S315600026400000000000000000000000000000000024 -S315600026500000000000000000000000000000000014 -S315600026600000000000000000000000000000000004 -S3156000267000000000000000000000000000000000F4 -S3156000268000000000000000000000000000000000E4 -S3156000269000000000000000000000000000000000D4 -S315600026A000000000000000000000000000000000C4 -S315600026B000000000000000000000000000000000B4 -S315600026C000000000000000000000000000000000A4 -S315600026D00000000000000000000000000000000094 -S315600026E00000000000000000000000000000000084 -S315600026F00000000000000000000000000000000074 -S315600027000000000000000000000000000000000063 -S315600027100000000000000000000000000000000053 -S315600027200000000000000000000000000000000043 -S315600027300000000000000000000000000000000033 -S315600027400000000000000000000000000000000023 -S315600027500000000000000000000000000000000013 -S315600027600000000000000000000000000000000003 -S3156000277000000000000000000000000000000000F3 -S3156000278000000000000000000000000000000000E3 -S3156000279000000000000000000000000000000000D3 -S315600027A000000000000000000000000000000000C3 -S315600027B000000000000000000000000000000000B3 -S315600027C000000000000000000000000000000000A3 -S315600027D00000000000000000000000000000000093 -S315600027E00000000000000000000000000000000083 -S315600027F00000000000000000000000000000000073 -S315600028000000000000000000000000000000000062 -S315600028100000000000000000000000000000000052 -S315600028200000000000000000000000000000000042 -S315600028300000000000000000000000000000000032 -S315600028400000000000000000000000000000000022 -S315600028500000000000000000000000000000000012 -S315600028600000000000000000000000000000000002 -S3156000287000000000000000000000000000000000F2 -S3156000288000000000000000000000000000000000E2 -S3156000289000000000000000000000000000000000D2 -S315600028A000000000000000000000000000000000C2 -S315600028B000000000000000000000000000000000B2 -S315600028C000000000000000000000000000000000A2 -S315600028D00000000000000000000000000000000092 -S315600028E00000000000000000000000000000000082 -S315600028F00000000000000000000000000000000072 -S315600029000000000000000000000000000000000061 -S315600029100000000000000000000000000000000051 -S315600029200000000000000000000000000000000041 -S315600029300000000000000000000000000000000031 -S315600029400000000000000000000000000000000021 -S315600029500000000000000000000000000000000011 -S315600029600000000000000000000000000000000001 -S3156000297000000000000000000000000000000000F1 -S3156000298000000000000000000000000000000000E1 -S3156000299000000000000000000000000000000000D1 -S315600029A000000000000000000000000000000000C1 -S315600029B000000000000000000000000000000000B1 -S315600029C000000000000000000000000000000000A1 -S315600029D00000000000000000000000000000000091 -S315600029E00000000000000000000000000000000081 -S315600029F00000000000000000000000000000000071 -S31560002A000000000000000000000000000000000060 -S31560002A100000000000000000000000000000000050 -S31560002A200000000000000000000000000000000040 -S31560002A300000000000000000000000000000000030 -S31560002A400000000000000000000000000000000020 -S31560002A500000000000000000000000000000000010 -S31560002A600000000000000000000000000000000000 -S31560002A7000000000000000000000000000000000F0 -S31560002A8000000000000000000000000000000000E0 -S31560002A9000000000000000000000000000000000D0 -S31560002AA000000000000000000000000000000000C0 -S31560002AB000000000000000000000000000000000B0 -S31560002AC000000000000000000000000000000000A0 -S31560002AD00000000000000000000000000000000090 -S31560002AE00000000000000000000000000000000080 -S31560002AF00000000000000000000000000000000070 -S31560002B00000000000000000000000000000000005F -S31560002B10000000000000000000000000000000004F -S31560002B20000000000000000000000000000000003F -S31560002B30000000000000000000000000000000002F -S31560002B40000000000000000000000000000000001F -S31560002B50000000000000000000000000000000000F -S31560002B6000000000000000000000000000000000FF -S31560002B7000000000000000000000000000000000EF -S31560002B8000000000000000000000000000000000DF -S31560002B9000000000000000000000000000000000CF -S31560002BA000000000000000000000000000000000BF -S31560002BB000000000000000000000000000000000AF -S31560002BC0000000000000000000000000000000009F -S31560002BD0000000000000000000000000000000008F -S31560002BE0000000000000000000000000000000007F -S31560002BF0000000000000000000000000000000006F -S31560002C00000000000000000000000000000000005E -S31560002C10000000000000000000000000000000004E -S31560002C20000000000000000000000000000000003E -S31560002C30000000000000000000000000000000002E -S31560002C40000000000000000000000000000000001E -S31560002C50000000000000000000000000000000000E -S31560002C6000000000000000000000000000000000FE -S31560002C7000000000000000000000000000000000EE -S31560002C8000000000000000000000000000000000DE -S31560002C9000000000000000000000000000000000CE -S31560002CA000000000000000000000000000000000BE -S31560002CB000000000000000000000000000000000AE -S31560002CC0000000000000000000000000000000009E -S31560002CD0000000000000000000000000000000008E -S31560002CE0000000000000000000000000000000007E -S31560002CF0000000000000000000000000000000006E -S31560002D00000000000000000000000000000000005D -S31560002D10000000000000000000000000000000004D -S31560002D20000000000000000000000000000000003D -S31560002D30000000000000000000000000000000002D -S31560002D40000000000000000000000000000000001D -S31560002D50000000000000000000000000000000000D -S31560002D6000000000000000000000000000000000FD -S31560002D7000000000000000000000000000000000ED -S31560002D8000000000000000000000000000000000DD -S31560002D9000000000000000000000000000000000CD -S31560002DA000000000000000000000000000000000BD -S31560002DB000000000000000000000000000000000AD -S31560002DC0000000000000000000000000000000009D -S31560002DD0000000000000000000000000000000008D -S31560002DE0000000000000000000000000000000007D -S31560002DF0000000000000000000000000000000006D -S31560002E00000000000000000000000000000000005C -S31560002E10000000000000000000000000000000004C -S31560002E20000000000000000000000000000000003C -S31560002E30000000000000000000000000000000002C -S31560002E40000000000000000000000000000000001C -S31560002E50000000000000000000000000000000000C -S31560002E6000000000000000000000000000000000FC -S31560002E7000000000000000000000000000000000EC -S31560002E8000000000000000000000000000000000DC -S31560002E9000000000000000000000000000000000CC -S31560002EA000000000000000000000000000000000BC -S31560002EB000000000000000000000000000000000AC -S31560002EC0000000000000000000000000000000009C -S31560002ED0000000000000000000000000000000008C -S31560002EE0000000000000000000000000000000007C -S31560002EF0000000000000000000000000000000006C -S31560002F00000000000000000000000000000000005B -S31560002F10000000000000000000000000000000004B -S31560002F20000000000000000000000000000000003B -S31560002F30000000000000000000000000000000002B -S31560002F40000000000000000000000000000000001B -S31560002F50000000000000000000000000000000000B -S31560002F6000000000000000000000000000000000FB -S31560002F7000000000000000000000000000000000EB -S31560002F8000000000000000000000000000000000DB -S31560002F9000000000000000000000000000000000CB -S31560002FA000000000000000000000000000000000BB -S31560002FB000000000000000000000000000000000AB -S31560002FC0000000000000000000000000000000009B -S31560002FD0000000000000000000000000000000008B -S31560002FE0000000000000000000000000000000007B -S31560002FF0000000000000000000000000000000006B -S31560003000000000000000000000000000000000005A -S31560003010000000000000000000000000000000004A -S31560003020000000000000000000000000000000003A -S31560003030000000000000000000000000000000002A -S31560003040000000000000000000000000000000001A -S31560003050000000000000000000000000000000000A -S3156000306000000000000000000000000000000000FA -S3156000307000000000000000000000000000000000EA -S3156000308000000000000000000000000000000000DA -S3156000309000000000000000000000000000000000CA -S315600030A000000000000000000000000000000000BA -S315600030B000000000000000000000000000000000AA -S315600030C0000000000000000000000000000000009A -S315600030D0000000000000000000000000000000008A -S315600030E0000000000000000000000000000000007A -S315600030F0000000000000000000000000000000006A -S315600031000000000000000000000000000000000059 -S315600031100000000000000000000000000000000049 -S315600031200000000000000000000000000000000039 -S315600031300000000000000000000000000000000029 -S315600031400000000000000000000000000000000019 -S315600031500000000000000000000000000000000009 -S3156000316000000000000000000000000000000000F9 -S3156000317000000000000000000000000000000000E9 -S3156000318000000000000000000000000000000000D9 -S3156000319000000000000000000000000000000000C9 -S315600031A000000000000000000000000000000000B9 -S315600031B000000000000000000000000000000000A9 -S315600031C00000000000000000000000000000000099 -S315600031D00000000000000000000000000000000089 -S315600031E00000000000000000000000000000000079 -S315600031F00000000000000000000000000000000069 -S315600032000000000000000000000000000000000058 -S315600032100000000000000000000000000000000048 -S315600032200000000000000000000000000000000038 -S315600032300000000000000000000000000000000028 -S315600032400000000000000000000000000000000018 -S315600032500000000000000000000000000000000008 -S3156000326000000000000000000000000000000000F8 -S3156000327000000000000000000000000000000000E8 -S3156000328000000000000000000000000000000000D8 -S3156000329000000000000000000000000000000000C8 -S315600032A000000000000000000000000000000000B8 -S315600032B000000000000000000000000000000000A8 -S315600032C00000000000000000000000000000000098 -S315600032D00000000000000000000000000000000088 -S315600032E00000000000000000000000000000000078 -S315600032F00000000000000000000000000000000068 -S315600033000000000000000000000000000000000057 -S315600033100000000000000000000000000000000047 -S315600033200000000000000000000000000000000037 -S315600033300000000000000000000000000000000027 -S315600033400000000000000000000000000000000017 -S315600033500000000000000000000000000000000007 -S3156000336000000000000000000000000000000000F7 -S3156000337000000000000000000000000000000000E7 -S3156000338000000000000000000000000000000000D7 -S3156000339000000000000000000000000000000000C7 -S315600033A000000000000000000000000000000000B7 -S315600033B000000000000000000000000000000000A7 -S315600033C00000000000000000000000000000000097 -S315600033D00000000000000000000000000000000087 -S315600033E00000000000000000000000000000000077 -S315600033F00000000000000000000000000000000067 -S315600034000000000000000000000000000000000056 -S315600034100000000000000000000000000000000046 -S315600034200000000000000000000000000000000036 -S315600034300000000000000000000000000000000026 -S315600034400000000000000000000000000000000016 -S315600034500000000000000000000000000000000006 -S3156000346000000000000000000000000000000000F6 -S3156000347000000000000000000000000000000000E6 -S3156000348000000000000000000000000000000000D6 -S3156000349000000000000000000000000000000000C6 -S315600034A000000000000000000000000000000000B6 -S315600034B000000000000000000000000000000000A6 -S315600034C00000000000000000000000000000000096 -S315600034D00000000000000000000000000000000086 -S315600034E00000000000000000000000000000000076 -S315600034F00000000000000000000000000000000066 -S315600035000000000000000000000000000000000055 -S315600035100000000000000000000000000000000045 -S315600035200000000000000000000000000000000035 -S315600035300000000000000000000000000000000025 -S315600035400000000000000000000000000000000015 -S315600035500000000000000000000000000000000005 -S3156000356000000000000000000000000000000000F5 -S3156000357000000000000000000000000000000000E5 -S3156000358000000000000000000000000000000000D5 -S3156000359000000000000000000000000000000000C5 -S315600035A000000000000000000000000000000000B5 -S315600035B000000000000000000000000000000000A5 -S315600035C00000000000000000000000000000000095 -S315600035D00000000000000000000000000000000085 -S315600035E00000000000000000000000000000000075 -S315600035F00000000000000000000000000000000065 -S315600036000000000000000000000000000000000054 -S315600036100000000000000000000000000000000044 -S315600036200000000000000000000000000000000034 -S315600036300000000000000000000000000000000024 -S315600036400000000000000000000000000000000014 -S315600036500000000000000000000000000000000004 -S3156000366000000000000000000000000000000000F4 -S3156000367000000000000000000000000000000000E4 -S3156000368000000000000000000000000000000000D4 -S3156000369000000000000000000000000000000000C4 -S315600036A000000000000000000000000000000000B4 -S315600036B000000000000000000000000000000000A4 -S315600036C00000000000000000000000000000000094 -S315600036D00000000000000000000000000000000084 -S315600036E00000000000000000000000000000000074 -S315600036F00000000000000000000000000000000064 -S315600037000000000000000000000000000000000053 -S315600037100000000000000000000000000000000043 -S315600037200000000000000000000000000000000033 -S315600037300000000000000000000000000000000023 -S315600037400000000000000000000000000000000013 -S315600037500000000000000000000000000000000003 -S3156000376000000000000000000000000000000000F3 -S3156000377000000000000000000000000000000000E3 -S3156000378000000000000000000000000000000000D3 -S3156000379000000000000000000000000000000000C3 -S315600037A000000000000000000000000000000000B3 -S315600037B000000000000000000000000000000000A3 -S315600037C00000000000000000000000000000000093 -S315600037D00000000000000000000000000000000083 -S315600037E00000000000000000000000000000000073 -S315600037F00000000000000000000000000000000063 -S315600038000000000000000000000000000000000052 -S315600038100000000000000000000000000000000042 -S315600038200000000000000000000000000000000032 -S315600038300000000000000000000000000000000022 -S315600038400000000000000000000000000000000012 -S315600038500000000000000000000000000000000002 -S3156000386000000000000000000000000000000000F2 -S3156000387000000000000000000000000000000000E2 -S3156000388000000000000000000000000000000000D2 -S3156000389000000000000000000000000000000000C2 -S315600038A000000000000000000000000000000000B2 -S315600038B000000000000000000000000000000000A2 -S315600038C00000000000000000000000000000000092 -S315600038D00000000000000000000000000000000082 -S315600038E00000000000000000000000000000000072 -S315600038F00000000000000000000000000000000062 -S315600039000000000000000000000000000000000051 -S315600039100000000000000000000000000000000041 -S315600039200000000000000000000000000000000031 -S315600039300000000000000000000000000000000021 -S315600039400000000000000000000000000000000011 -S315600039500000000000000000000000000000000001 -S3156000396000000000000000000000000000000000F1 -S3156000397000000000000000000000000000000000E1 -S3156000398000000000000000000000000000000000D1 -S3156000399000000000000000000000000000000000C1 -S315600039A000000000000000000000000000000000B1 -S315600039B000000000000000000000000000000000A1 -S315600039C00000000000000000000000000000000091 -S315600039D00000000000000000000000000000000081 -S315600039E00000000000000000000000000000000071 -S315600039F00000000000000000000000000000000061 -S31560003A000000000000000000000000000000000050 -S31560003A100000000000000000000000000000000040 -S31560003A200000000000000000000000000000000030 -S31560003A300000000000000000000000000000000020 -S31560003A400000000000000000000000000000000010 -S31560003A500000000000000000000000000000000000 -S31560003A6000000000000000000000000000000000F0 -S31560003A7000000000000000000000000000000000E0 -S31560003A8000000000000000000000000000000000D0 -S31560003A9000000000000000000000000000000000C0 -S31560003AA000000000000000000000000000000000B0 -S31560003AB000000000000000000000000000000000A0 -S31560003AC00000000000000000000000000000000090 -S31560003AD00000000000000000000000000000000080 -S31560003AE00000000000000000000000000000000070 -S31560003AF00000000000000000000000000000000060 -S31560003B00000000000000000000000000000000004F -S31560003B10000000000000000000000000000000003F -S31560003B20000000000000000000000000000000002F -S31560003B30000000000000000000000000000000001F -S31560003B40000000000000000000000000000000000F -S31560003B5000000000000000000000000000000000FF -S31560003B6000000000000000000000000000000000EF -S31560003B7000000000000000000000000000000000DF -S31560003B8000000000000000000000000000000000CF -S31560003B9000000000000000000000000000000000BF -S31560003BA000000000000000000000000000000000AF -S31560003BB0000000000000000000000000000000009F -S31560003BC0000000000000000000000000000000008F -S31560003BD0000000000000000000000000000000007F -S31560003BE0000000000000000000000000000000006F -S31560003BF0000000000000000000000000000000005F -S31560003C00000000000000000000000000000000004E -S31560003C10000000000000000000000000000000003E -S31560003C20000000000000000000000000000000002E -S31560003C30000000000000000000000000000000001E -S31560003C40000000000000000000000000000000000E -S31560003C5000000000000000000000000000000000FE -S31560003C6000000000000000000000000000000000EE -S31560003C7000000000000000000000000000000000DE -S31560003C8000000000000000000000000000000000CE -S31560003C9000000000000000000000000000000000BE -S31560003CA000000000000000000000000000000000AE -S31560003CB0000000000000000000000000000000009E -S31560003CC0000000000000000000000000000000008E -S31560003CD0000000000000000000000000000000007E -S31560003CE0000000000000000000000000000000006E -S31560003CF0000000000000000000000000000000005E -S31560003D00000000000000000000000000000000004D -S31560003D10000000000000000000000000000000003D -S31560003D20000000000000000000000000000000002D -S31560003D30000000000000000000000000000000001D -S31560003D40000000000000000000000000000000000D -S31560003D5000000000000000000000000000000000FD -S31560003D6000000000000000000000000000000000ED -S31560003D7000000000000000000000000000000000DD -S31560003D8000000000000000000000000000000000CD -S31560003D9000000000000000000000000000000000BD -S31560003DA000000000000000000000000000000000AD -S31560003DB0000000000000000000000000000000009D -S31560003DC0000000000000000000000000000000008D -S31560003DD0000000000000000000000000000000007D -S31560003DE0000000000000000000000000000000006D -S31560003DF0000000000000000000000000000000005D -S31560003E00000000000000000000000000000000004C -S31560003E10000000000000000000000000000000003C -S31560003E20000000000000000000000000000000002C -S31560003E30000000000000000000000000000000001C -S31560003E40000000000000000000000000000000000C -S31560003E5000000000000000000000000000000000FC -S31560003E6000000000000000000000000000000000EC -S31560003E7000000000000000000000000000000000DC -S31560003E8000000000000000000000000000000000CC -S31560003E9000000000000000000000000000000000BC -S31560003EA000000000000000000000000000000000AC -S31560003EB0000000000000000000000000000000009C -S31560003EC0000000000000000000000000000000008C -S31560003ED0000000000000000000000000000000007C -S31560003EE0000000000000000000000000000000006C -S31560003EF0000000000000000000000000000000005C -S31560003F00000000000000000000000000000000004B -S31560003F10000000000000000000000000000000003B -S31560003F20000000000000000000000000000000002B -S31560003F30000000000000000000000000000000001B -S31560003F40000000000000000000000000000000000B -S31560003F5000000000000000000000000000000000FB -S31560003F6000000000000000000000000000000000EB -S31560003F7000000000000000000000000000000000DB -S31560003F8000000000000000000000000000000000CB -S31560003F9000000000000000000000000000000000BB -S31560003FA000000000000000000000000000000000AB -S31560003FB0000000000000000000000000000000009B -S31560003FC0000000000000000000000000000000008B -S31560003FD0000000000000000000000000000000007B -S31560003FE0000000000000000000000000000000006B -S31560003FF0000000000000000000000000000000005B -S31560004000000000000000000000000000000000004A -S31560004010000000000000000000000000000000003A -S31560004020000000000000000000000000000000002A -S31560004030000000000000000000000000000000001A -S31560004040000000000000000000000000000000000A -S3156000405000000000000000000000000000000000FA -S3156000406000000000000000000000000000000000EA -S3156000407000000000000000000000000000000000DA -S3156000408000000000000000000000000000000000CA -S3156000409000000000000000000000000000000000BA -S315600040A000000000000000000000000000000000AA -S315600040B0000000000000000000000000000000009A -S315600040C0000000000000000000000000000000008A -S315600040D0000000000000000000000000000000007A -S315600040E0000000000000000000000000000000006A -S315600040F0000000000000000000000000000000005A -S315600041000000000000000000000000000000000049 -S315600041100000000000000000000000000000000039 -S315600041200000000000000000000000000000000029 -S315600041300000000000000000000000000000000019 -S315600041400000000000000000000000000000000009 -S3156000415000000000000000000000000000000000F9 -S3156000416000000000000000000000000000000000E9 -S3156000417000000000000000000000000000000000D9 -S3156000418000000000000000000000000000000000C9 -S3156000419000000000000000000000000000000000B9 -S315600041A000000000000000000000000000000000A9 -S315600041B00000000000000000000000000000000099 -S315600041C00000000000000000000000000000000089 -S315600041D00000000000000000000000000000000079 -S315600041E00000000000000000000000000000000069 -S315600041F00000000000000000000000000000000059 -S315600042000000000000000000000000000000000048 -S315600042100000000000000000000000000000000038 -S315600042200000000000000000000000000000000028 -S315600042300000000000000000000000000000000018 -S315600042400000000000000000000000000000000008 -S3156000425000000000000000000000000000000000F8 -S3156000426000000000000000000000000000000000E8 -S3156000427000000000000000000000000000000000D8 -S3156000428000000000000000000000000000000000C8 -S3156000429000000000000000000000000000000000B8 -S315600042A000000000000000000000000000000000A8 -S315600042B00000000000000000000000000000000098 -S315600042C00000000000000000000000000000000088 -S315600042D00000000000000000000000000000000078 -S315600042E00000000000000000000000000000000068 -S315600042F00000000000000000000000000000000058 -S315600043000000000000000000000000000000000047 -S315600043100000000000000000000000000000000037 -S315600043200000000000000000000000000000000027 -S315600043300000000000000000000000000000000017 -S315600043400000000000000000000000000000000007 -S3156000435000000000000000000000000000000000F7 -S3156000436000000000000000000000000000000000E7 -S3156000437000000000000000000000000000000000D7 -S3156000438000000000000000000000000000000000C7 -S3156000439000000000000000000000000000000000B7 -S315600043A000000000000000000000000000000000A7 -S315600043B00000000000000000000000000000000097 -S315600043C00000000000000000000000000000000087 -S315600043D00000000000000000000000000000000077 -S315600043E00000000000000000000000000000000067 -S315600043F00000000000000000000000000000000057 -S315600044000000000000000000000000000000000046 -S315600044100000000000000000000000000000000036 -S315600044200000000000000000000000000000000026 -S315600044300000000000000000000000000000000016 -S315600044400000000000000000000000000000000006 -S3156000445000000000000000000000000000000000F6 -S3156000446000000000000000000000000000000000E6 -S3156000447000000000000000000000000000000000D6 -S3156000448000000000000000000000000000000000C6 -S3156000449000000000000000000000000000000000B6 -S315600044A000000000000000000000000000000000A6 -S315600044B00000000000000000000000000000000096 -S315600044C00000000000000000000000000000000086 -S315600044D00000000000000000000000000000000076 -S315600044E00000000000000000000000000000000066 -S315600044F00000000000000000000000000000000056 -S315600045000000000000000000000000000000000045 -S315600045100000000000000000000000000000000035 -S315600045200000000000000000000000000000000025 -S315600045300000000000000000000000000000000015 -S315600045400000000000000000000000000000000005 -S3156000455000000000000000000000000000000000F5 -S3156000456000000000000000000000000000000000E5 -S3156000457000000000000000000000000000000000D5 -S3156000458000000000000000000000000000000000C5 -S3156000459000000000000000000000000000000000B5 -S315600045A000000000000000000000000000000000A5 -S315600045B00000000000000000000000000000000095 -S315600045C00000000000000000000000000000000085 -S315600045D00000000000000000000000000000000075 -S315600045E00000000000000000000000000000000065 -S315600045F00000000000000000000000000000000055 -S315600046000000000000000000000000000000000044 -S315600046100000000000000000000000000000000034 -S315600046200000000000000000000000000000000024 -S315600046300000000000000000000000000000000014 -S315600046400000000000000000000000000000000004 -S3156000465000000000000000000000000000000000F4 -S3156000466000000000000000000000000000000000E4 -S3156000467000000000000000000000000000000000D4 -S3156000468000000000000000000000000000000000C4 -S3156000469000000000000000000000000000000000B4 -S315600046A000000000000000000000000000000000A4 -S315600046B00000000000000000000000000000000094 -S315600046C00000000000000000000000000000000084 -S315600046D00000000000000000000000000000000074 -S315600046E00000000000000000000000000000000064 -S315600046F00000000000000000000000000000000054 -S315600047000000000000000000000000000000000043 -S315600047100000000000000000000000000000000033 -S315600047200000000000000000000000000000000023 -S315600047300000000000000000000000000000000013 -S315600047400000000000000000000000000000000003 -S3156000475000000000000000000000000000000000F3 -S3156000476000000000000000000000000000000000E3 -S3156000477000000000000000000000000000000000D3 -S3156000478000000000000000000000000000000000C3 -S3156000479000000000000000000000000000000000B3 -S315600047A000000000000000000000000000000000A3 -S315600047B00000000000000000000000000000000093 -S315600047C00000000000000000000000000000000083 -S315600047D00000000000000000000000000000000073 -S315600047E00000000000000000000000000000000063 -S315600047F00000000000000000000000000000000053 -S315600048000000000000000000000000000000000042 -S315600048100000000000000000000000000000000032 -S315600048200000000000000000000000000000000022 -S315600048300000000000000000000000000000000012 -S315600048400000000000000000000000000000000002 -S3156000485000000000000000000000000000000000F2 -S3156000486000000000000000000000000000000000E2 -S3156000487000000000000000000000000000000000D2 -S3156000488000000000000000000000000000000000C2 -S3156000489000000000000000000000000000000000B2 -S315600048A000000000000000000000000000000000A2 -S315600048B00000000000000000000000000000000092 -S315600048C00000000000000000000000000000000082 -S315600048D00000000000000000000000000000000072 -S315600048E00000000000000000000000000000000062 -S315600048F00000000000000000000000000000000052 -S315600049000000000000000000000000000000000041 -S315600049100000000000000000000000000000000031 -S315600049200000000000000000000000000000000021 -S315600049300000000000000000000000000000000011 -S315600049400000000000000000000000000000000001 -S3156000495000000000000000000000000000000000F1 -S3156000496000000000000000000000000000000000E1 -S3156000497000000000000000000000000000000000D1 -S3156000498000000000000000000000000000000000C1 -S3156000499000000000000000000000000000000000B1 -S315600049A000000000000000000000000000000000A1 -S315600049B00000000000000000000000000000000091 -S315600049C00000000000000000000000000000000081 -S315600049D00000000000000000000000000000000071 -S315600049E00000000000000000000000000000000061 -S315600049F00000000000000000000000000000000051 -S31560004A000000000000000000000000000000000040 -S31560004A100000000000000000000000000000000030 -S31560004A200000000000000000000000000000000020 -S31560004A300000000000000000000000000000000010 -S31560004A400000000000000000000000000000000000 -S31560004A5000000000000000000000000000000000F0 -S31560004A6000000000000000000000000000000000E0 -S31560004A7000000000000000000000000000000000D0 -S31560004A8000000000000000000000000000000000C0 -S31560004A9000000000000000000000000000000000B0 -S31560004AA000000000000000000000000000000000A0 -S31560004AB00000000000000000000000000000000090 -S31560004AC00000000000000000000000000000000080 -S31560004AD00000000000000000000000000000000070 -S31560004AE00000000000000000000000000000000060 -S31560004AF00000000000000000000000000000000050 -S31560004B00000000000000000000000000000000003F -S31560004B10000000000000000000000000000000002F -S31560004B20000000000000000000000000000000001F -S31560004B30000000000000000000000000000000000F -S31560004B4000000000000000000000000000000000FF -S31560004B5000000000000000000000000000000000EF -S31560004B6000000000000000000000000000000000DF -S31560004B7000000000000000000000000000000000CF -S31560004B8000000000000000000000000000000000BF -S31560004B9000000000000000000000000000000000AF -S31560004BA0000000000000000000000000000000009F -S31560004BB0000000000000000000000000000000008F -S31560004BC0000000000000000000000000000000007F -S31560004BD0000000000000000000000000000000006F -S31560004BE0000000000000000000000000000000005F -S31560004BF0000000000000000000000000000000004F -S31560004C00000000000000000000000000000000003E -S31560004C10000000000000000000000000000000002E -S31560004C20000000000000000000000000000000001E -S31560004C30000000000000000000000000000000000E -S31560004C4000000000000000000000000000000000FE -S31560004C5000000000000000000000000000000000EE -S31560004C6000000000000000000000000000000000DE -S31560004C7000000000000000000000000000000000CE -S31560004C8000000000000000000000000000000000BE -S31560004C9000000000000000000000000000000000AE -S31560004CA0000000000000000000000000000000009E -S31560004CB0000000000000000000000000000000008E -S31560004CC0000000000000000000000000000000007E -S31560004CD0000000000000000000000000000000006E -S31560004CE0000000000000000000000000000000005E -S31560004CF0000000000000000000000000000000004E -S31560004D00000000000000000000000000000000003D -S31560004D10000000000000000000000000000000002D -S31560004D20000000000000000000000000000000001D -S31560004D30000000000000000000000000000000000D -S31560004D4000000000000000000000000000000000FD -S31560004D5000000000000000000000000000000000ED -S31560004D6000000000000000000000000000000000DD -S31560004D7000000000000000000000000000000000CD -S31560004D8000000000000000000000000000000000BD -S31560004D9000000000000000000000000000000000AD -S31560004DA0000000000000000000000000000000009D -S31560004DB0000000000000000000000000000000008D -S31560004DC0000000000000000000000000000000007D -S31560004DD0000000000000000000000000000000006D -S31560004DE0000000000000000000000000000000005D -S31560004DF0000000000000000000000000000000004D -S31560004E00000000000000000000000000000000003C -S31560004E10000000000000000000000000000000002C -S31560004E20000000000000000000000000000000001C -S31560004E30000000000000000000000000000000000C -S31560004E4000000000000000000000000000000000FC -S31560004E5000000000000000000000000000000000EC -S31560004E6000000000000000000000000000000000DC -S31560004E7000000000000000000000000000000000CC -S31560004E8000000000000000000000000000000000BC -S31560004E9000000000000000000000000000000000AC -S31560004EA0000000000000000000000000000000009C -S31560004EB0000000000000000000000000000000008C -S31560004EC0000000000000000000000000000000007C -S31560004ED0000000000000000000000000000000006C -S31560004EE0000000000000000000000000000000005C -S31560004EF0000000000000000000000000000000004C -S31560004F00000000000000000000000000000000003B -S31560004F10000000000000000000000000000000002B -S31560004F20000000000000000000000000000000001B -S31560004F30000000000000000000000000000000000B -S31560004F4000000000000000000000000000000000FB -S31560004F5000000000000000000000000000000000EB -S31560004F6000000000000000000000000000000000DB -S31560004F7000000000000000000000000000000000CB -S31560004F8000000000000000000000000000000000BB -S31560004F9000000000000000000000000000000000AB -S31560004FA0000000000000000000000000000000009B -S31560004FB0000000000000000000000000000000008B -S31560004FC0000000000000000000000000000000007B -S31560004FD0000000000000000000000000000000006B -S31560004FE0000000000000000000000000000000005B -S31560004FF0000000000000000000000000000000004B -S31560005000000000000000000000000000000000003A -S31560005010000000000000000000000000000000002A -S31560005020000000000000000000000000000000001A -S31560005030000000000000000000000000000000000A -S3156000504000000000000000000000000000000000FA -S3156000505000000000000000000000000000000000EA -S3156000506000000000000000000000000000000000DA -S3156000507000000000000000000000000000000000CA -S3156000508000000000000000000000000000000000BA -S3156000509000000000000000000000000000000000AA -S315600050A0000000000000000000000000000000009A -S315600050B0000000000000000000000000000000008A -S315600050C0000000000000000000000000000000007A -S315600050D0000000000000000000000000000000006A -S315600050E0000000000000000000000000000000005A -S315600050F0000000000000000000000000000000004A -S315600051000000000000000000000000000000000039 -S315600051100000000000000000000000000000000029 -S315600051200000000000000000000000000000000019 -S315600051300000000000000000000000000000000009 -S3156000514000000000000000000000000000000000F9 -S3156000515000000000000000000000000000000000E9 -S3156000516000000000000000000000000000000000D9 -S3156000517000000000000000000000000000000000C9 -S3156000518000000000000000000000000000000000B9 -S3156000519000000000000000000000000000000000A9 -S315600051A00000000000000000000000000000000099 -S315600051B00000000000000000000000000000000089 -S315600051C00000000000000000000000000000000079 -S315600051D00000000000000000000000000000000069 -S315600051E00000000000000000000000000000000059 -S315600051F00000000000000000000000000000000049 -S315600052000000000000000000000000000000000038 -S315600052100000000000000000000000000000000028 -S315600052200000000000000000000000000000000018 -S315600052300000000000000000000000000000000008 -S3156000524000000000000000000000000000000000F8 -S3156000525000000000000000000000000000000000E8 -S3156000526000000000000000000000000000000000D8 -S3156000527000000000000000000000000000000000C8 -S3156000528000000000000000000000000000000000B8 -S3156000529000000000000000000000000000000000A8 -S315600052A00000000000000000000000000000000098 -S315600052B00000000000000000000000000000000088 -S315600052C00000000000000000000000000000000078 -S315600052D00000000000000000000000000000000068 -S315600052E00000000000000000000000000000000058 -S315600052F00000000000000000000000000000000048 -S315600053000000000000000000000000000000000037 -S315600053100000000000000000000000000000000027 -S315600053200000000000000000000000000000000017 -S315600053300000000000000000000000000000000007 -S3156000534000000000000000000000000000000000F7 -S3156000535000000000000000000000000000000000E7 -S3156000536000000000000000000000000000000000D7 -S3156000537000000000000000000000000000000000C7 -S3156000538000000000000000000000000000000000B7 -S3156000539000000000000000000000000000000000A7 -S315600053A00000000000000000000000000000000097 -S315600053B00000000000000000000000000000000087 -S315600053C00000000000000000000000000000000077 -S315600053D00000000000000000000000000000000067 -S315600053E00000000000000000000000000000000057 -S315600053F00000000000000000000000000000000047 -S315600054000000000000000000000000000000000036 -S315600054100000000000000000000000000000000026 -S315600054200000000000000000000000000000000016 -S315600054300000000000000000000000000000000006 -S3156000544000000000000000000000000000000000F6 -S3156000545000000000000000000000000000000000E6 -S3156000546000000000000000000000000000000000D6 -S3156000547000000000000000000000000000000000C6 -S3156000548000000000000000000000000000000000B6 -S3156000549000000000000000000000000000000000A6 -S315600054A00000000000000000000000000000000096 -S315600054B00000000000000000000000000000000086 -S315600054C00000000000000000000000000000000076 -S315600054D00000000000000000000000000000000066 -S315600054E00000000000000000000000000000000056 -S315600054F00000000000000000000000000000000046 -S315600055000000000000000000000000000000000035 -S315600055100000000000000000000000000000000025 -S315600055200000000000000000000000000000000015 -S315600055300000000000000000000000000000000005 -S3156000554000000000000000000000000000000000F5 -S3156000555000000000000000000000000000000000E5 -S3156000556000000000000000000000000000000000D5 -S3156000557000000000000000000000000000000000C5 -S3156000558000000000000000000000000000000000B5 -S3156000559000000000000000000000000000000000A5 -S315600055A00000000000000000000000000000000095 -S315600055B00000000000000000000000000000000085 -S315600055C00000000000000000000000000000000075 -S315600055D00000000000000000000000000000000065 -S315600055E00000000000000000000000000000000055 -S315600055F00000000000000000000000000000000045 -S315600056000000000000000000000000000000000034 -S315600056100000000000000000000000000000000024 -S315600056200000000000000000000000000000000014 -S315600056300000000000000000000000000000000004 -S3156000564000000000000000000000000000000000F4 -S3156000565000000000000000000000000000000000E4 -S3156000566000000000000000000000000000000000D4 -S3156000567000000000000000000000000000000000C4 -S3156000568000000000000000000000000000000000B4 -S3156000569000000000000000000000000000000000A4 -S315600056A00000000000000000000000000000000094 -S315600056B00000000000000000000000000000000084 -S315600056C00000000000000000000000000000000074 -S315600056D00000000000000000000000000000000064 -S315600056E00000000000000000000000000000000054 -S315600056F00000000000000000000000000000000044 -S315600057000000000000000000000000000000000033 -S315600057100000000000000000000000000000000023 -S315600057200000000000000000000000000000000013 -S315600057300000000000000000000000000000000003 -S3156000574000000000000000000000000000000000F3 -S3156000575000000000000000000000000000000000E3 -S3156000576000000000000000000000000000000000D3 -S3156000577000000000000000000000000000000000C3 -S3156000578000000000000000000000000000000000B3 -S3156000579000000000000000000000000000000000A3 -S315600057A00000000000000000000000000000000093 -S315600057B00000000000000000000000000000000083 -S315600057C00000000000000000000000000000000073 -S315600057D00000000000000000000000000000000063 -S315600057E00000000000000000000000000000000053 -S315600057F00000000000000000000000000000000043 -S315600058000000000000000000000000000000000032 -S315600058100000000000000000000000000000000022 -S315600058200000000000000000000000000000000012 -S315600058300000000000000000000000000000000002 -S3156000584000000000000000000000000000000000F2 -S3156000585000000000000000000000000000000000E2 -S3156000586000000000000000000000000000000000D2 -S3156000587000000000000000000000000000000000C2 -S3156000588000000000000000000000000000000000B2 -S3156000589000000000000000000000000000000000A2 -S315600058A00000000000000000000000000000000092 -S315600058B00000000000000000000000000000000082 -S315600058C00000000000000000000000000000000072 -S315600058D00000000000000000000000000000000062 -S315600058E00000000000000000000000000000000052 -S315600058F00000000000000000000000000000000042 -S315600059000000000000000000000000000000000031 -S315600059100000000000000000000000000000000021 -S315600059200000000000000000000000000000000011 -S315600059300000000000000000000000000000000001 -S3156000594000000000000000000000000000000000F1 -S3156000595000000000000000000000000000000000E1 -S3156000596000000000000000000000000000000000D1 -S3156000597000000000000000000000000000000000C1 -S3156000598000000000000000000000000000000000B1 -S3156000599000000000000000000000000000000000A1 -S315600059A00000000000000000000000000000000091 -S315600059B00000000000000000000000000000000081 -S315600059C00000000000000000000000000000000071 -S315600059D00000000000000000000000000000000061 -S315600059E00000000000000000000000000000000051 -S315600059F00000000000000000000000000000000041 -S31560005A000000000000000000000000000000000030 -S31560005A100000000000000000000000000000000020 -S31560005A200000000000000000000000000000000010 -S31560005A300000000000000000000000000000000000 -S31560005A4000000000000000000000000000000000F0 -S31560005A5000000000000000000000000000000000E0 -S31560005A6000000000000000000000000000000000D0 -S31560005A7000000000000000000000000000000000C0 -S31560005A8000000000000000000000000000000000B0 -S31560005A9000000000000000000000000000000000A0 -S31560005AA00000000000000000000000000000000090 -S31560005AB00000000000000000000000000000000080 -S31560005AC00000000000000000000000000000000070 -S31560005AD00000000000000000000000000000000060 -S31560005AE00000000000000000000000000000000050 -S31560005AF00000000000000000000000000000000040 -S31560005B00000000000000000000000000000000002F -S31560005B10000000000000000000000000000000001F -S31560005B20000000000000000000000000000000000F -S31560005B3000000000000000000000000000000000FF -S31560005B4000000000000000000000000000000000EF -S31560005B5000000000000000000000000000000000DF -S31560005B6000000000000000000000000000000000CF -S31560005B7000000000000000000000000000000000BF -S31560005B8000000000000000000000000000000000AF -S31560005B90000000000000000000000000000000009F -S31560005BA0000000000000000000000000000000008F -S31560005BB0000000000000000000000000000000007F -S31560005BC0000000000000000000000000000000006F -S31560005BD0000000000000000000000000000000005F -S31560005BE0000000000000000000000000000000004F -S31560005BF0000000000000000000000000000000003F -S31560005C00000000000000000000000000000000002E -S31560005C10000000000000000000000000000000001E -S31560005C20000000000000000000000000000000000E -S31560005C3000000000000000000000000000000000FE -S31560005C4000000000000000000000000000000000EE -S31560005C5000000000000000000000000000000000DE -S31560005C6000000000000000000000000000000000CE -S31560005C7000000000000000000000000000000000BE -S31560005C8000000000000000000000000000000000AE -S31560005C90000000000000000000000000000000009E -S31560005CA0000000000000000000000000000000008E -S31560005CB0000000000000000000000000000000007E -S31560005CC0000000000000000000000000000000006E -S31560005CD0000000000000000000000000000000005E -S31560005CE0000000000000000000000000000000004E -S31560005CF0000000000000000000000000000000003E -S31560005D00000000000000000000000000000000002D -S31560005D10000000000000000000000000000000001D -S31560005D20000000000000000000000000000000000D -S31560005D3000000000000000000000000000000000FD -S31560005D4000000000000000000000000000000000ED -S31560005D5000000000000000000000000000000000DD -S31560005D6000000000000000000000000000000000CD -S31560005D7000000000000000000000000000000000BD -S31560005D8000000000000000000000000000000000AD -S31560005D90000000000000000000000000000000009D -S31560005DA0000000000000000000000000000000008D -S31560005DB0000000000000000000000000000000007D -S31560005DC0000000000000000000000000000000006D -S31560005DD0000000000000000000000000000000005D -S31560005DE0000000000000000000000000000000004D -S31560005DF0000000000000000000000000000000003D -S31560005E00000000000000000000000000000000002C -S31560005E10000000000000000000000000000000001C -S31560005E20000000000000000000000000000000000C -S31560005E3000000000000000000000000000000000FC -S31560005E4000000000000000000000000000000000EC -S31560005E5000000000000000000000000000000000DC -S31560005E6000000000000000000000000000000000CC -S31560005E7000000000000000000000000000000000BC -S31560005E8000000000000000000000000000000000AC -S31560005E90000000000000000000000000000000009C -S31560005EA0000000000000000000000000000000008C -S31560005EB0000000000000000000000000000000007C -S31560005EC0000000000000000000000000000000006C -S31560005ED0000000000000000000000000000000005C -S31560005EE0000000000000000000000000000000004C -S31560005EF0000000000000000000000000000000003C -S31560005F00000000000000000000000000000000002B -S31560005F10000000000000000000000000000000001B -S31560005F20000000000000000000000000000000000B -S31560005F3000000000000000000000000000000000FB -S31560005F4000000000000000000000000000000000EB -S31560005F5000000000000000000000000000000000DB -S31560005F6000000000000000000000000000000000CB -S31560005F7000000000000000000000000000000000BB -S31560005F8000000000000000000000000000000000AB -S31560005F90000000000000000000000000000000009B -S31560005FA0000000000000000000000000000000008B -S31560005FB0000000000000000000000000000000007B -S31560005FC0000000000000000000000000000000006B -S31560005FD0000000000000000000000000000000005B -S31560005FE0000000000000000000000000000000004B -S31560005FF0000000000000000000000000000000003B -S31560006000000000000000000000000000000000002A -S31560006010000000000000000000000000000000001A -S31560006020000000000000000000000000000000000A -S3156000603000000000000000000000000000000000FA -S3156000604000000000000000000000000000000000EA -S3156000605000000000000000000000000000000000DA -S3156000606000000000000000000000000000000000CA -S3156000607000000000000000000000000000000000BA -S3156000608000000000000000000000000000000000AA -S31560006090000000000000000000000000000000009A -S315600060A0000000000000000000000000000000008A -S315600060B0000000000000000000000000000000007A -S315600060C0000000000000000000000000000000006A -S315600060D0000000000000000000000000000000005A -S315600060E0000000000000000000000000000000004A -S315600060F0000000000000000000000000000000003A -S315600061000000000000000000000000000000000029 -S315600061100000000000000000000000000000000019 -S315600061200000000000000000000000000000000009 -S3156000613000000000000000000000000000000000F9 -S3156000614000000000000000000000000000000000E9 -S3156000615000000000000000000000000000000000D9 -S3156000616000000000000000000000000000000000C9 -S3156000617000000000000000000000000000000000B9 -S3156000618000000000000000000000000000000000A9 -S315600061900000000000000000000000000000000099 -S315600061A00000000000000000000000000000000089 -S315600061B00000000000000000000000000000000079 -S315600061C00000000000000000000000000000000069 -S315600061D00000000000000000000000000000000059 -S315600061E00000000000000000000000000000000049 -S315600061F00000000000000000000000000000000039 -S315600062000000000000000000000000000000000028 -S315600062100000000000000000000000000000000018 -S315600062200000000000000000000000000000000008 -S3156000623000000000000000000000000000000000F8 -S3156000624000000000000000000000000000000000E8 -S3156000625000000000000000000000000000000000D8 -S3156000626000000000000000000000000000000000C8 -S3156000627000000000000000000000000000000000B8 -S3156000628000000000000000000000000000000000A8 -S315600062900000000000000000000000000000000098 -S315600062A00000000000000000000000000000000088 -S315600062B00000000000000000000000000000000078 -S315600062C00000000000000000000000000000000068 -S315600062D00000000000000000000000000000000058 -S315600062E00000000000000000000000000000000048 -S315600062F00000000000000000000000000000000038 -S315600063000000000000000000000000000000000027 -S315600063100000000000000000000000000000000017 -S315600063200000000000000000000000000000000007 -S3156000633000000000000000000000000000000000F7 -S3156000634000000000000000000000000000000000E7 -S3156000635000000000000000000000000000000000D7 -S3156000636000000000000000000000000000000000C7 -S3156000637000000000000000000000000000000000B7 -S3156000638000000000000000000000000000000000A7 -S315600063900000000000000000000000000000000097 -S315600063A00000000000000000000000000000000087 -S315600063B00000000000000000000000000000000077 -S315600063C00000000000000000000000000000000067 -S315600063D00000000000000000000000000000000057 -S315600063E00000000000000000000000000000000047 -S315600063F00000000000000000000000000000000037 -S315600064000000000000000000000000000000000026 -S315600064100000000000000000000000000000000016 -S315600064200000000000000000000000000000000006 -S3156000643000000000000000000000000000000000F6 -S3156000644000000000000000000000000000000000E6 -S3156000645000000000000000000000000000000000D6 -S3156000646000000000000000000000000000000000C6 -S3156000647000000000000000000000000000000000B6 -S3156000648000000000000000000000000000000000A6 -S315600064900000000000000000000000000000000096 -S315600064A00000000000000000000000000000000086 -S315600064B00000000000000000000000000000000076 -S315600064C00000000000000000000000000000000066 -S315600064D00000000000000000000000000000000056 -S315600064E00000000000000000000000000000000046 -S315600064F00000000000000000000000000000000036 -S315600065000000000000000000000000000000000025 -S315600065100000000000000000000000000000000015 -S315600065200000000000000000000000000000000005 -S3156000653000000000000000000000000000000000F5 -S3156000654000000000000000000000000000000000E5 -S3156000655000000000000000000000000000000000D5 -S3156000656000000000000000000000000000000000C5 -S3156000657000000000000000000000000000000000B5 -S3156000658000000000000000000000000000000000A5 -S315600065900000000000000000000000000000000095 -S315600065A00000000000000000000000000000000085 -S315600065B00000000000000000000000000000000075 -S315600065C00000000000000000000000000000000065 -S315600065D00000000000000000000000000000000055 -S315600065E00000000000000000000000000000000045 -S315600065F00000000000000000000000000000000035 -S315600066000000000000000000000000000000000024 -S315600066100000000000000000000000000000000014 -S315600066200000000000000000000000000000000004 -S3156000663000000000000000000000000000000000F4 -S3156000664000000000000000000000000000000000E4 -S3156000665000000000000000000000000000000000D4 -S3156000666000000000000000000000000000000000C4 -S3156000667000000000000000000000000000000000B4 -S3156000668000000000000000000000000000000000A4 -S315600066900000000000000000000000000000000094 -S315600066A00000000000000000000000000000000084 -S315600066B00000000000000000000000000000000074 -S315600066C00000000000000000000000000000000064 -S315600066D00000000000000000000000000000000054 -S315600066E00000000000000000000000000000000044 -S315600066F00000000000000000000000000000000034 -S315600067000000000000000000000000000000000023 -S315600067100000000000000000000000000000000013 -S315600067200000000000000000000000000000000003 -S3156000673000000000000000000000000000000000F3 -S3156000674000000000000000000000000000000000E3 -S3156000675000000000000000000000000000000000D3 -S3156000676000000000000000000000000000000000C3 -S3156000677000000000000000000000000000000000B3 -S3156000678000000000000000000000000000000000A3 -S315600067900000000000000000000000000000000093 -S315600067A00000000000000000000000000000000083 -S315600067B00000000000000000000000000000000073 -S315600067C00000000000000000000000000000000063 -S315600067D00000000000000000000000000000000053 -S315600067E00000000000000000000000000000000043 -S315600067F00000000000000000000000000000000033 -S315600068000000000000000000000000000000000022 -S315600068100000000000000000000000000000000012 -S315600068200000000000000000000000000000000002 -S3156000683000000000000000000000000000000000F2 -S3156000684000000000000000000000000000000000E2 -S3156000685000000000000000000000000000000000D2 -S3156000686000000000000000000000000000000000C2 -S3156000687000000000000000000000000000000000B2 -S3156000688000000000000000000000000000000000A2 -S315600068900000000000000000000000000000000092 -S315600068A00000000000000000000000000000000082 -S315600068B00000000000000000000000000000000072 -S315600068C00000000000000000000000000000000062 -S315600068D00000000000000000000000000000000052 -S315600068E00000000000000000000000000000000042 -S315600068F00000000000000000000000000000000032 -S315600069000000000000000000000000000000000021 -S315600069100000000000000000000000000000000011 -S315600069200000000000000000000000000000000001 -S3156000693000000000000000000000000000000000F1 -S3156000694000000000000000000000000000000000E1 -S3156000695000000000000000000000000000000000D1 -S3156000696000000000000000000000000000000000C1 -S3156000697000000000000000000000000000000000B1 -S3156000698000000000000000000000000000000000A1 -S315600069900000000000000000000000000000000091 -S315600069A00000000000000000000000000000000081 -S315600069B00000000000000000000000000000000071 -S315600069C00000000000000000000000000000000061 -S315600069D00000000000000000000000000000000051 -S315600069E00000000000000000000000000000000041 -S315600069F00000000000000000000000000000000031 -S31560006A000000000000000000000000000000000020 -S31560006A100000000000000000000000000000000010 -S31560006A200000000000000000000000000000000000 -S31560006A3000000000000000000000000000000000F0 -S31560006A4000000000000000000000000000000000E0 -S31560006A5000000000000000000000000000000000D0 -S31560006A6000000000000000000000000000000000C0 -S31560006A7000000000000000000000000000000000B0 -S31560006A8000000000000000000000000000000000A0 -S31560006A900000000000000000000000000000000090 -S31560006AA00000000000000000000000000000000080 -S31560006AB00000000000000000000000000000000070 -S31560006AC00000000000000000000000000000000060 -S31560006AD00000000000000000000000000000000050 -S31560006AE00000000000000000000000000000000040 -S31560006AF00000000000000000000000000000000030 -S31560006B00000000000000000000000000000000001F -S31560006B10000000000000000000000000000000000F -S31560006B2000000000000000000000000000000000FF -S31560006B3000000000000000000000000000000000EF -S31560006B4000000000000000000000000000000000DF -S31560006B5000000000000000000000000000000000CF -S31560006B6000000000000000000000000000000000BF -S31560006B7000000000000000000000000000000000AF -S31560006B80000000000000000000000000000000009F -S31560006B90000000000000000000000000000000008F -S31560006BA0000000000000000000000000000000007F -S31560006BB0000000000000000000000000000000006F -S31560006BC0000000000000000000000000000000005F -S31560006BD0000000000000000000000000000000004F -S31560006BE0000000000000000000000000000000003F -S31560006BF0000000000000000000000000000000002F -S31560006C00000000000000000000000000000000001E -S31560006C10000000000000000000000000000000000E -S31560006C2000000000000000000000000000000000FE -S31560006C3000000000000000000000000000000000EE -S31560006C4000000000000000000000000000000000DE -S31560006C5000000000000000000000000000000000CE -S31560006C6000000000000000000000000000000000BE -S31560006C7000000000000000000000000000000000AE -S31560006C80000000000000000000000000000000009E -S31560006C90000000000000000000000000000000008E -S31560006CA0000000000000000000000000000000007E -S31560006CB0000000000000000000000000000000006E -S31560006CC0000000000000000000000000000000005E -S31560006CD0000000000000000000000000000000004E -S31560006CE0000000000000000000000000000000003E -S31560006CF0000000000000000000000000000000002E -S31560006D00000000000000000000000000000000001D -S31560006D10000000000000000000000000000000000D -S31560006D2000000000000000000000000000000000FD -S31560006D3000000000000000000000000000000000ED -S31560006D4000000000000000000000000000000000DD -S31560006D5000000000000000000000000000000000CD -S31560006D6000000000000000000000000000000000BD -S31560006D7000000000000000000000000000000000AD -S31560006D80000000000000000000000000000000009D -S31560006D90000000000000000000000000000000008D -S31560006DA0000000000000000000000000000000007D -S31560006DB0000000000000000000000000000000006D -S31560006DC0000000000000000000000000000000005D -S31560006DD0000000000000000000000000000000004D -S31560006DE0000000000000000000000000000000003D -S31560006DF0000000000000000000000000000000002D -S31560006E00000000000000000000000000000000001C -S31560006E10000000000000000000000000000000000C -S31560006E2000000000000000000000000000000000FC -S31560006E3000000000000000000000000000000000EC -S31560006E4000000000000000000000000000000000DC -S31560006E5000000000000000000000000000000000CC -S31560006E6000000000000000000000000000000000BC -S31560006E7000000000000000000000000000000000AC -S31560006E80000000000000000000000000000000009C -S31560006E90000000000000000000000000000000008C -S31560006EA0000000000000000000000000000000007C -S31560006EB0000000000000000000000000000000006C -S31560006EC0000000000000000000000000000000005C -S31560006ED0000000000000000000000000000000004C -S31560006EE0000000000000000000000000000000003C -S31560006EF0000000000000000000000000000000002C -S31560006F00000000000000000000000000000000001B -S31560006F10000000000000000000000000000000000B -S31560006F2000000000000000000000000000000000FB -S31560006F3000000000000000000000000000000000EB -S31560006F4000000000000000000000000000000000DB -S31560006F5000000000000000000000000000000000CB -S31560006F6000000000000000000000000000000000BB -S31560006F7000000000000000000000000000000000AB -S31560006F80000000000000000000000000000000009B -S31560006F90000000000000000000000000000000008B -S31560006FA0000000000000000000000000000000007B -S31560006FB0000000000000000000000000000000006B -S31560006FC0000000000000000000000000000000005B -S31560006FD0000000000000000000000000000000004B -S31560006FE0000000000000000000000000000000003B -S31560006FF0000000000000000000000000000000002B -S31560007000000000000000000000000000000000001A -S31560007010000000000000000000000000000000000A -S3156000702000000000000000000000000000000000FA -S3156000703000000000000000000000000000000000EA -S3156000704000000000000000000000000000000000DA -S3156000705000000000000000000000000000000000CA -S3156000706000000000000000000000000000000000BA -S3156000707000000000000000000000000000000000AA -S31560007080000000000000000000000000000000009A -S31560007090000000000000000000000000000000008A -S315600070A0000000000000000000000000000000007A -S315600070B0000000000000000000000000000000006A -S315600070C0000000000000000000000000000000005A -S315600070D0000000000000000000000000000000004A -S315600070E0000000000000000000000000000000003A -S315600070F0000000000000000000000000000000002A -S315600071000000000000000000000000000000000019 -S315600071100000000000000000000000000000000009 -S3156000712000000000000000000000000000000000F9 -S3156000713000000000000000000000000000000000E9 -S3156000714000000000000000000000000000000000D9 -S3156000715000000000000000000000000000000000C9 -S3156000716000000000000000000000000000000000B9 -S3156000717000000000000000000000000000000000A9 -S315600071800000000000000000000000000000000099 -S315600071900000000000000000000000000000000089 -S315600071A00000000000000000000000000000000079 -S315600071B00000000000000000000000000000000069 -S315600071C00000000000000000000000000000000059 -S315600071D00000000000000000000000000000000049 -S315600071E00000000000000000000000000000000039 -S315600071F00000000000000000000000000000000029 -S315600072000000000000000000000000000000000018 -S315600072100000000000000000000000000000000008 -S3156000722000000000000000000000000000000000F8 -S3156000723000000000000000000000000000000000E8 -S3156000724000000000000000000000000000000000D8 -S3156000725000000000000000000000000000000000C8 -S3156000726000000000000000000000000000000000B8 -S3156000727000000000000000000000000000000000A8 -S315600072800000000000000000000000000000000098 -S315600072900000000000000000000000000000000088 -S315600072A00000000000000000000000000000000078 -S315600072B00000000000000000000000000000000068 -S315600072C00000000000000000000000000000000058 -S315600072D00000000000000000000000000000000048 -S315600072E00000000000000000000000000000000038 -S315600072F00000000000000000000000000000000028 -S315600073000000000000000000000000000000000017 -S315600073100000000000000000000000000000000007 -S3156000732000000000000000000000000000000000F7 -S3156000733000000000000000000000000000000000E7 -S3156000734000000000000000000000000000000000D7 -S3156000735000000000000000000000000000000000C7 -S3156000736000000000000000000000000000000000B7 -S3156000737000000000000000000000000000000000A7 -S315600073800000000000000000000000000000000097 -S315600073900000000000000000000000000000000087 -S315600073A00000000000000000000000000000000077 -S315600073B00000000000000000000000000000000067 -S315600073C00000000000000000000000000000000057 -S315600073D00000000000000000000000000000000047 -S315600073E00000000000000000000000000000000037 -S315600073F00000000000000000000000000000000027 -S315600074000000000000000000000000000000000016 -S315600074100000000000000000000000000000000006 -S3156000742000000000000000000000000000000000F6 -S3156000743000000000000000000000000000000000E6 -S3156000744000000000000000000000000000000000D6 -S3156000745000000000000000000000000000000000C6 -S3156000746000000000000000000000000000000000B6 -S3156000747000000000000000000000000000000000A6 -S315600074800000000000000000000000000000000096 -S315600074900000000000000000000000000000000086 -S315600074A00000000000000000000000000000000076 -S315600074B00000000000000000000000000000000066 -S315600074C00000000000000000000000000000000056 -S315600074D00000000000000000000000000000000046 -S315600074E00000000000000000000000000000000036 -S315600074F00000000000000000000000000000000026 -S315600075000000000000000000000000000000000015 -S315600075100000000000000000000000000000000005 -S3156000752000000000000000000000000000000000F5 -S3156000753000000000000000000000000000000000E5 -S3156000754000000000000000000000000000000000D5 -S3156000755000000000000000000000000000000000C5 -S3156000756000000000000000000000000000000000B5 -S3156000757000000000000000000000000000000000A5 -S315600075800000000000000000000000000000000095 -S315600075900000000000000000000000000000000085 -S315600075A00000000000000000000000000000000075 -S315600075B00000000000000000000000000000000065 -S315600075C00000000000000000000000000000000055 -S315600075D00000000000000000000000000000000045 -S315600075E00000000000000000000000000000000035 -S315600075F00000000000000000000000000000000025 -S315600076000000000000000000000000000000000014 -S315600076100000000000000000000000000000000004 -S3156000762000000000000000000000000000000000F4 -S3156000763000000000000000000000000000000000E4 -S3156000764000000000000000000000000000000000D4 -S3156000765000000000000000000000000000000000C4 -S3156000766000000000000000000000000000000000B4 -S3156000767000000000000000000000000000000000A4 -S315600076800000000000000000000000000000000094 -S315600076900000000000000000000000000000000084 -S315600076A00000000000000000000000000000000074 -S315600076B00000000000000000000000000000000064 -S315600076C00000000000000000000000000000000054 -S315600076D00000000000000000000000000000000044 -S315600076E00000000000000000000000000000000034 -S315600076F00000000000000000000000000000000024 -S315600077000000000000000000000000000000000013 -S315600077100000000000000000000000000000000003 -S3156000772000000000000000000000000000000000F3 -S3156000773000000000000000000000000000000000E3 -S3156000774000000000000000000000000000000000D3 -S3156000775000000000000000000000000000000000C3 -S3156000776000000000000000000000000000000000B3 -S3156000777000000000000000000000000000000000A3 -S315600077800000000000000000000000000000000093 -S315600077900000000000000000000000000000000083 -S315600077A00000000000000000000000000000000073 -S315600077B00000000000000000000000000000000063 -S315600077C00000000000000000000000000000000053 -S315600077D00000000000000000000000000000000043 -S315600077E00000000000000000000000000000000033 -S315600077F00000000000000000000000000000000023 -S315600078000000000000000000000000000000000012 -S315600078100000000000000000000000000000000002 -S3156000782000000000000000000000000000000000F2 -S3156000783000000000000000000000000000000000E2 -S3156000784000000000000000000000000000000000D2 -S3156000785000000000000000000000000000000000C2 -S3156000786000000000000000000000000000000000B2 -S3156000787000000000000000000000000000000000A2 -S315600078800000000000000000000000000000000092 -S315600078900000000000000000000000000000000082 -S315600078A00000000000000000000000000000000072 -S315600078B00000000000000000000000000000000062 -S315600078C00000000000000000000000000000000052 -S315600078D00000000000000000000000000000000042 -S315600078E00000000000000000000000000000000032 -S315600078F00000000000000000000000000000000022 -S315600079000000000000000000000000000000000011 -S315600079100000000000000000000000000000000001 -S3156000792000000000000000000000000000000000F1 -S3156000793000000000000000000000000000000000E1 -S3156000794000000000000000000000000000000000D1 -S3156000795000000000000000000000000000000000C1 -S3156000796000000000000000000000000000000000B1 -S3156000797000000000000000000000000000000000A1 -S315600079800000000000000000000000000000000091 -S315600079900000000000000000000000000000000081 -S315600079A00000000000000000000000000000000071 -S315600079B00000000000000000000000000000000061 -S315600079C00000000000000000000000000000000051 -S315600079D00000000000000000000000000000000041 -S315600079E00000000000000000000000000000000031 -S315600079F00000000000000000000000000000000021 -S31560007A000000000000000000000000000000000010 -S31560007A100000000000000000000000000000000000 -S31560007A2000000000000000000000000000000000F0 -S31560007A3000000000000000000000000000000000E0 -S31560007A4000000000000000000000000000000000D0 -S31560007A5000000000000000000000000000000000C0 -S31560007A6000000000000000000000000000000000B0 -S31560007A7000000000000000000000000000000000A0 -S31560007A800000000000000000000000000000000090 -S31560007A900000000000000000000000000000000080 -S31560007AA00000000000000000000000000000000070 -S31560007AB00000000000000000000000000000000060 -S31560007AC00000000000000000000000000000000050 -S31560007AD00000000000000000000000000000000040 -S31560007AE00000000000000000000000000000000030 -S31560007AF00000000000000000000000000000000020 -S31560007B00000000000000000000000000000000000F -S31560007B1000000000000000000000000000000000FF -S31560007B2000000000000000000000000000000000EF -S31560007B3000000000000000000000000000000000DF -S31560007B4000000000000000000000000000000000CF -S31560007B5000000000000000000000000000000000BF -S31560007B6000000000000000000000000000000000AF -S31560007B70000000000000000000000000000000009F -S31560007B80000000000000000000000000000000008F -S31560007B90000000000000000000000000000000007F -S31560007BA0000000000000000000000000000000006F -S31560007BB0000000000000000000000000000000005F -S31560007BC0000000000000000000000000000000004F -S31560007BD0000000000000000000000000000000003F -S31560007BE0000000000000000000000000000000002F -S31560007BF0000000000000000000000000000000001F -S31560007C00000000000000000000000000000000000E -S31560007C1000000000000000000000000000000000FE -S31560007C2000000000000000000000000000000000EE -S31560007C3000000000000000000000000000000000DE -S31560007C4000000000000000000000000000000000CE -S31560007C5000000000000000000000000000000000BE -S31560007C6000000000000000000000000000000000AE -S31560007C70000000000000000000000000000000009E -S31560007C80000000000000000000000000000000008E -S31560007C90000000000000000000000000000000007E -S31560007CA0000000000000000000000000000000006E -S31560007CB0000000000000000000000000000000005E -S31560007CC0000000000000000000000000000000004E -S31560007CD0000000000000000000000000000000003E -S31560007CE0000000000000000000000000000000002E -S31560007CF0000000000000000000000000000000001E -S31560007D00000000000000000000000000000000000D -S31560007D1000000000000000000000000000000000FD -S31560007D2000000000000000000000000000000000ED -S31560007D3000000000000000000000000000000000DD -S31560007D4000000000000000000000000000000000CD -S31560007D5000000000000000000000000000000000BD -S31560007D6000000000000000000000000000000000AD -S31560007D70000000000000000000000000000000009D -S31560007D80000000000000000000000000000000008D -S31560007D90000000000000000000000000000000007D -S31560007DA0000000000000000000000000000000006D -S31560007DB0000000000000000000000000000000005D -S31560007DC0000000000000000000000000000000004D -S31560007DD0000000000000000000000000000000003D -S31560007DE0000000000000000000000000000000002D -S31560007DF0000000000000000000000000000000001D -S31560007E00000000000000000000000000000000000C -S31560007E1000000000000000000000000000000000FC -S31560007E2000000000000000000000000000000000EC -S31560007E3000000000000000000000000000000000DC -S31560007E4000000000000000000000000000000000CC -S31560007E5000000000000000000000000000000000BC -S31560007E6000000000000000000000000000000000AC -S31560007E70000000000000000000000000000000009C -S31560007E80000000000000000000000000000000008C -S31560007E90000000000000000000000000000000007C -S31560007EA0000000000000000000000000000000006C -S31560007EB0000000000000000000000000000000005C -S31560007EC0000000000000000000000000000000004C -S31560007ED0000000000000000000000000000000003C -S31560007EE0000000000000000000000000000000002C -S31560007EF0000000000000000000000000000000001C -S31560007F00000000000000000000000000000000000B -S31560007F1000000000000000000000000000000000FB -S31560007F2000000000000000000000000000000000EB -S31560007F3000000000000000000000000000000000DB -S31560007F4000000000000000000000000000000000CB -S31560007F5000000000000000000000000000000000BB -S31560007F6000000000000000000000000000000000AB -S31560007F70000000000000000000000000000000009B -S31560007F80000000000000000000000000000000008B -S31560007F90000000000000000000000000000000007B -S31560007FA0000000000000000000000000000000006B -S31560007FB0000000000000000000000000000000005B -S31560007FC0000000000000000000000000000000004B -S31560007FD0000000000000000000000000000000003B -S31560007FE0000000000000000000000000000000002B -S31560007FF0000000000000000000000000000000001B -S315600080009DE3BF9081C7E00881E80000030000108F -S31560008010C48000408088800112BFFFFE010000001E -S315600080209DE3BF909DE3BF909DE3BF909DE3BF90AE -S315600080309DE3BF909DE3BF9021044444A0142111A9 -S3156000804023088888A2146222250CCCCCA414A333FE -S3156000805027111111A614E04429155555A815215567 -S315600080602B199999AA1562662D1DDDDDAC15A377CE -S315600080702F222222AE15E08801100000E03FBFE00B -S31560008080E43FBFE8E83FBFF0EC3FBFF88210001E58 -S315600080908220601CC0A041E082206008C0A041E050 -S315600080A082206008C0A041E082206008C0A041E054 -S315600080B0C0A002209DE3BF909DE3BF9081E80000D1 -S315600080C081E800000100000001000000E01FBFE041 -S315600080D0E41FBFE8E81FBFF0EC1FBFF80100000017 -S315600080E00100000081E8000081E8000081E80000EE -S315600080F081E8000081E8000081C7E00881E80000AF -S31560008100A7500000AA102400A8102300EC85432085 -S31560008110EA8503202F180020AE15E150EE05C00059 -S31560008120E805C000EA05E004EC05E008AC15A0002F -S31560008130C0A58300EA250000AE05E00C2B180020E0 -S31560008140AA156150EE25400081C4400081CC8000B4 -S3156000815000000000010000000000000000000000B8 -S3156000816000000000000000000000000000000000A9 -S315600081700000000000000000000000000000000099 -S315600081800000000000000000000000000000000089 -S315600081900000000001000000010000000100000076 -S315600081A00100000001000000010000000100000065 -S315600081B00100000001000000010000000100000055 -S315600081C00100000001000000010000000100000045 -S315600081D00100000001000000010000000100000035 -S315600081E00100000001000000010000000100000025 -S315600081F00100000001000000010000000100000015 -S315600082000100000001000000010000000100000004 -S3156000821001000000010000000100000001000000F4 -S3156000822001000000010000000100000001000000E4 -S3156000823001000000010000000100000001000000D4 -S3156000824001000000010000000100000001000000C4 -S3156000825001000000010000000100000001000000B4 -S3156000826001000000010000000100000001000000A4 -S315600082700100000001000000010000000100000094 -S315600082800100000001000000010000000100000084 -S315600082900100000001000000010000000100000074 -S315600082A00100000001000000010000000100000064 -S315600082B00100000001000000010000000100000054 -S315600082C00100000001000000010000000100000044 -S315600082D00100000001000000010000000100000034 -S315600082E00100000001000000010000000100000024 -S315600082F00100000001000000010000000100000014 -S315600083000100000001000000010000000100000003 -S3156000831001000000010000000100000001000000F3 -S3156000832001000000010000000100000001000000E3 -S3156000833001000000010000000100000001000000D3 -S3156000834001000000010000000100000001000000C3 -S3156000835001000000010000000100000001000000B3 -S3156000836001000000010000000100000001000000A3 -S315600083700100000001000000010000000100000093 -S315600083800100000001000000010000000100000083 -S315600083900100000001000000010000000100000073 -S315600083A00100000001000000010000000100000063 -S315600083B00100000001000000010000000100000053 -S315600083C00100000001000000010000000100000043 -S315600083D00100000001000000010000000100000033 -S315600083E00100000001000000010000000100000023 -S315600083F00100000001000000010000000100000013 -S315600084000100000001000000010000000100000002 -S3156000841001000000010000000100000001000000F2 -S3156000842001000000010000000100000001000000E2 -S3156000843001000000010000000100000001000000D2 -S3156000844001000000010000000100000001000000C2 -S3156000845001000000010000000100000001000000B2 -S3156000846001000000010000000100000001000000A2 -S315600084700100000001000000010000000100000092 -S315600084800100000001000000010000000100000082 -S315600084900100000001000000010000000100000072 -S315600084A00100000001000000010000000100000062 -S315600084B00100000001000000010000000100000052 -S315600084C00100000001000000010000000100000042 -S315600084D00100000001000000010000000100000032 -S315600084E00100000001000000010000000100000022 -S315600084F00100000001000000010000000100000012 -S315600085000100000001000000010000000100000001 -S3156000851001000000010000000100000001000000F1 -S3156000852001000000010000000100000001000000E1 -S3156000853001000000010000000100000001000000D1 -S3156000854001000000010000000100000001000000C1 -S3156000855001000000010000000100000001000000B1 -S3156000856001000000010000000100000001000000A1 -S315600085700100000001000000010000000100000091 -S315600085800100000001000000010000000100000081 -S315600085900100000001000000010000000100000071 -S315600085A00100000001000000010000000100000061 -S315600085B00100000001000000010000000100000051 -S315600085C00100000001000000010000000100000041 -S315600085D00100000001000000010000000100000031 -S315600085E00100000001000000010000000100000021 -S315600085F00100000001000000010000000100000011 -S315600086000100000001000000010000000100000000 -S3156000861001000000010000000100000001000000F0 -S3156000862001000000010000000100000001000000E0 -S3156000863001000000010000000100000001000000D0 -S3156000864001000000010000000100000001000000C0 -S3156000865001000000010000000100000001000000B0 -S3156000866001000000010000000100000001000000A0 -S315600086700100000001000000010000000100000090 -S315600086800100000001000000010000000100000080 -S315600086900100000001000000010000000100000070 -S315600086A00100000001000000010000000100000060 -S315600086B00100000001000000010000000100000050 -S315600086C00100000001000000010000000100000040 -S315600086D00100000001000000010000000100000030 -S315600086E00100000001000000010000000100000020 -S315600086F00100000001000000010000000100000010 -S3156000870001000000010000000100000001000000FF -S3156000871001000000010000000100000001000000EF -S3156000872001000000010000000100000001000000DF -S3156000873001000000010000000100000001000000CF -S3156000874001000000010000000100000001000000BF -S3156000875001000000010000000100000001000000AF -S31560008760010000000100000001000000010000009F -S31560008770010000000100000001000000010000008F -S31560008780010000000100000001000000010000007F -S31560008790010000000100000001000000010000006F -S315600087A0010000000100000001000000010000005F -S315600087B0010000000100000001000000010000004F -S315600087C0010000000100000001000000010000003F -S315600087D0010000000100000001000000010000002F -S315600087E0010000000100000001000000010000001F -S315600087F0010000000100000001000000010000000F -S3156000880001000000010000000100000001000000FE -S3156000881001000000010000000100000001000000EE -S3156000882001000000010000000100000001000000DE -S3156000883001000000010000000100000001000000CE -S3156000884001000000010000000100000001000000BE -S3156000885001000000010000000100000001000000AE -S31560008860010000000100000001000000010000009E -S31560008870010000000100000001000000010000008E -S31560008880010000000100000001000000010000007E -S31560008890010000000100000001000000010000006E -S315600088A0010000000100000001000000010000005E -S315600088B0010000000100000001000000010000004E -S315600088C0010000000100000001000000010000003E -S315600088D0010000000100000001000000010000002E -S315600088E0010000000100000001000000010000001E -S315600088F0010000000100000001000000010000000E -S3156000890001000000010000000100000001000000FD -S3156000891001000000010000000100000001000000ED -S3156000892001000000010000000100000001000000DD -S3156000893001000000010000000100000001000000CD -S3156000894001000000010000000100000001000000BD -S3156000895001000000010000000100000001000000AD -S31560008960010000000100000001000000010000009D -S31560008970010000000100000001000000010000008D -S31560008980010000000100000001000000010000007D -S31560008990010000000100000001000000010000006D -S315600089A0010000000100000001000000010000005D -S315600089B0010000000100000001000000010000004D -S315600089C0010000000100000001000000010000003D -S315600089D0010000000100000001000000010000002D -S315600089E0010000000100000001000000010000001D -S315600089F0010000000100000001000000010000000D -S31560008A0001000000010000000100000001000000FC -S31560008A1001000000010000000100000001000000EC -S31560008A2001000000010000000100000001000000DC -S31560008A3001000000010000000100000001000000CC -S31560008A4001000000010000000100000001000000BC -S31560008A5001000000010000000100000001000000AC -S31560008A60010000000100000001000000010000009C -S31560008A70010000000100000001000000010000008C -S31560008A80010000000100000001000000010000007C -S31560008A90010000000100000001000000010000006C -S31560008AA0010000000100000001000000010000005C -S31560008AB0010000000100000001000000010000004C -S31560008AC0010000000100000001000000010000003C -S31560008AD0010000000100000001000000010000002C -S31560008AE0010000000100000001000000010000001C -S31560008AF0010000000100000001000000010000000C -S31560008B0001000000010000000100000001000000FB -S31560008B1001000000010000000100000001000000EB -S31560008B2001000000010000000100000001000000DB -S31560008B3001000000010000000100000001000000CB -S31560008B4001000000010000000100000001000000BB -S31560008B5001000000010000000100000001000000AB -S31560008B60010000000100000001000000010000009B -S31560008B70010000000100000001000000010000008B -S31560008B80010000000100000001000000010000007B -S31560008B90010000000100000001000000010000006B -S31560008BA0010000000100000001000000010000005B -S31560008BB0010000000100000001000000010000004B -S31560008BC0010000000100000001000000010000003B -S31560008BD0010000000100000001000000010000002B -S31560008BE0010000000100000001000000010000001B -S31560008BF0010000000100000001000000010000000B -S31560008C0001000000010000000100000001000000FA -S31560008C1001000000010000000100000001000000EA -S31560008C2001000000010000000100000001000000DA -S31560008C3001000000010000000100000001000000CA -S31560008C4001000000010000000100000001000000BA -S31560008C5001000000010000000100000001000000AA -S31560008C60010000000100000001000000010000009A -S31560008C70010000000100000001000000010000008A -S31560008C80010000000100000001000000010000007A -S31560008C90010000000100000001000000010000006A -S31560008CA0010000000100000001000000010000005A -S31560008CB0010000000100000001000000010000004A -S31560008CC0010000000100000001000000010000003A -S31560008CD0010000000100000001000000010000002A -S31560008CE0010000000100000001000000010000001A -S31560008CF0010000000100000001000000010000000A -S31560008D0001000000010000000100000001000000F9 -S31560008D1001000000010000000100000001000000E9 -S31560008D2001000000010000000100000001000000D9 -S31560008D3001000000010000000100000001000000C9 -S31560008D4001000000010000000100000001000000B9 -S31560008D5001000000010000000100000001000000A9 -S31560008D600100000001000000010000000100000099 -S31560008D700100000001000000010000000100000089 -S31560008D800100000001000000010000000100000079 -S31560008D900100000001000000010000000100000069 -S31560008DA00100000001000000010000000100000059 -S31560008DB00100000001000000010000000100000049 -S31560008DC00100000001000000010000000100000039 -S31560008DD00100000001000000010000000100000029 -S31560008DE00100000001000000010000000100000019 -S31560008DF00100000001000000010000000100000009 -S31560008E0001000000010000000100000001000000F8 -S31560008E1001000000010000000100000001000000E8 -S31560008E2001000000010000000100000001000000D8 -S31560008E3001000000010000000100000001000000C8 -S31560008E4001000000010000000100000001000000B8 -S31560008E5001000000010000000100000001000000A8 -S31560008E600100000001000000010000000100000098 -S31560008E700100000001000000010000000100000088 -S31560008E800100000001000000010000000100000078 -S31560008E900100000001000000010000000100000068 -S31560008EA00100000001000000010000000100000058 -S31560008EB00100000001000000010000000100000048 -S31560008EC00100000001000000010000000100000038 -S31560008ED00100000001000000010000000100000028 -S31560008EE00100000001000000010000000100000018 -S31560008EF00100000001000000010000000100000008 -S31560008F0001000000010000000100000001000000F7 -S31560008F1001000000010000000100000001000000E7 -S31560008F2001000000010000000100000001000000D7 -S31560008F3001000000010000000100000001000000C7 -S31560008F4001000000010000000100000001000000B7 -S31560008F5001000000010000000100000001000000A7 -S31560008F600100000001000000010000000100000097 -S31560008F700100000001000000010000000100000087 -S31560008F800100000001000000010000000100000077 -S31560008F900100000001000000010000000100000067 -S31560008FA00100000001000000010000000100000057 -S31560008FB00100000001000000010000000100000047 -S31560008FC00100000001000000010000000100000037 -S31560008FD00100000001000000010000000100000027 -S31560008FE00100000001000000010000000100000017 -S31560008FF00100000001000000010000000100000007 -S3156000900001000000010000000100000001000000F6 -S3156000901001000000010000000100000001000000E6 -S3156000902001000000010000000100000001000000D6 -S3156000903001000000010000000100000001000000C6 -S3156000904001000000010000000100000001000000B6 -S3156000905001000000010000000100000001000000A6 -S315600090600100000001000000010000000100000096 -S315600090700100000001000000010000000100000086 -S315600090800100000001000000010000000100000076 -S315600090900100000001000000010000000100000066 -S315600090A00100000001000000010000000100000056 -S315600090B00100000001000000010000000100000046 -S315600090C00100000001000000010000000100000036 -S315600090D00100000001000000010000000100000026 -S315600090E00100000001000000010000000100000016 -S315600090F00100000001000000010000000100000006 -S3156000910001000000010000000100000001000000F5 -S3156000911001000000010000000100000001000000E5 -S3156000912001000000010000000100000001000000D5 -S3156000913001000000010000000100000001000000C5 -S3156000914001000000010000000100000001000000B5 -S3156000915001000000010000000100000001000000A5 -S315600091600100000001000000010000000100000095 -S315600091700100000001000000010000000100000085 -S315600091800100000001000000010000000100000075 -S315600091900100000001000000010000000100000065 -S315600091A00100000001000000010000000100000055 -S315600091B00100000001000000010000000100000045 -S315600091C00100000001000000010000000100000035 -S315600091D00100000001000000010000000100000025 -S315600091E00100000001000000010000000100000015 -S315600091F00100000001000000010000000100000005 -S3156000920001000000010000000100000001000000F4 -S3156000921001000000010000000100000001000000E4 -S3156000922001000000010000000100000001000000D4 -S3156000923001000000010000000100000001000000C4 -S3156000924001000000010000000100000001000000B4 -S3156000925001000000010000000100000001000000A4 -S315600092600100000001000000010000000100000094 -S315600092700100000001000000010000000100000084 -S315600092800100000001000000010000000100000074 -S315600092900100000001000000010000000100000064 -S315600092A00100000001000000010000000100000054 -S315600092B00100000001000000010000000100000044 -S315600092C00100000001000000010000000100000034 -S315600092D00100000001000000010000000100000024 -S315600092E00100000001000000010000000100000014 -S315600092F00100000001000000010000000100000004 -S3156000930001000000010000000100000001000000F3 -S3156000931001000000010000000100000001000000E3 -S3156000932001000000010000000100000001000000D3 -S3156000933001000000010000000100000001000000C3 -S3156000934001000000010000000100000001000000B3 -S3156000935001000000010000000100000001000000A3 -S315600093600100000001000000010000000100000093 -S315600093700100000001000000010000000100000083 -S315600093800100000001000000010000000100000073 -S315600093900100000001000000010000000100000063 -S315600093A00100000001000000010000000100000053 -S315600093B00100000001000000010000000100000043 -S315600093C00100000001000000010000000100000033 -S315600093D00100000001000000010000000100000023 -S315600093E00100000001000000010000000100000013 -S315600093F00100000001000000010000000100000003 -S3156000940001000000010000000100000001000000F2 -S3156000941001000000010000000100000001000000E2 -S3156000942001000000010000000100000001000000D2 -S3156000943001000000010000000100000001000000C2 -S3156000944001000000010000000100000001000000B2 -S3156000945001000000010000000100000001000000A2 -S315600094600100000001000000010000000100000092 -S315600094700100000001000000010000000100000082 -S315600094800100000001000000010000000100000072 -S315600094900100000001000000010000000100000062 -S315600094A00100000001000000010000000100000052 -S315600094B00100000001000000010000000100000042 -S315600094C00100000001000000010000000100000032 -S315600094D00100000001000000010000000100000022 -S315600094E00100000001000000010000000100000012 -S315600094F00100000001000000010000000100000002 -S3156000950001000000010000000100000001000000F1 -S3156000951001000000010000000100000001000000E1 -S3156000952001000000010000000100000001000000D1 -S3156000953001000000010000000100000001000000C1 -S3156000954001000000010000000100000001000000B1 -S3156000955001000000010000000100000001000000A1 -S315600095600100000001000000010000000100000091 -S315600095700100000001000000010000000100000081 -S315600095800100000001000000010000000100000071 -S315600095900100000001000000010000000100000061 -S315600095A00100000001000000010000000100000051 -S315600095B00100000001000000010000000100000041 -S315600095C00100000001000000010000000100000031 -S315600095D00100000001000000010000000100000021 -S315600095E00100000001000000010000000100000011 -S315600095F00100000001000000010000000100000001 -S3156000960001000000010000000100000001000000F0 -S3156000961001000000010000000100000001000000E0 -S3156000962001000000010000000100000001000000D0 -S3156000963001000000010000000100000001000000C0 -S3156000964001000000010000000100000001000000B0 -S3156000965001000000010000000100000001000000A0 -S315600096600100000001000000010000000100000090 -S315600096700100000001000000010000000100000080 -S315600096800100000001000000010000000100000070 -S315600096900100000001000000010000000100000060 -S315600096A00100000001000000010000000100000050 -S315600096B00100000001000000010000000100000040 -S315600096C00100000001000000010000000100000030 -S315600096D00100000001000000010000000100000020 -S315600096E00100000001000000010000000100000010 -S315600096F00100000001000000010000000100000000 -S3156000970001000000010000000100000001000000EF -S3156000971001000000010000000100000001000000DF -S3156000972001000000010000000100000001000000CF -S3156000973001000000010000000100000001000000BF -S3156000974001000000010000000100000001000000AF -S31560009750010000000100000001000000010000009F -S31560009760010000000100000001000000010000008F -S31560009770010000000100000001000000010000007F -S31560009780010000000100000001000000010000006F -S31560009790010000000100000001000000010000005F -S315600097A0010000000100000001000000010000004F -S315600097B0010000000100000001000000010000003F -S315600097C0010000000100000001000000010000002F -S315600097D0010000000100000001000000010000001F -S315600097E0010000000100000001000000010000000F -S315600097F001000000010000000100000001000000FF -S3156000980001000000010000000100000001000000EE -S3156000981001000000010000000100000001000000DE -S3156000982001000000010000000100000001000000CE -S3156000983001000000010000000100000001000000BE -S3156000984001000000010000000100000001000000AE -S31560009850010000000100000001000000010000009E -S31560009860010000000100000001000000010000008E -S31560009870010000000100000001000000010000007E -S31560009880010000000100000001000000010000006E -S31560009890010000000100000001000000010000005E -S315600098A0010000000100000001000000010000004E -S315600098B0010000000100000001000000010000003E -S315600098C0010000000100000001000000010000002E -S315600098D0010000000100000001000000010000001E -S315600098E0010000000100000001000000010000000E -S315600098F001000000010000000100000001000000FE -S3156000990001000000010000000100000001000000ED -S3156000991001000000010000000100000001000000DD -S3156000992001000000010000000100000001000000CD -S3156000993001000000010000000100000001000000BD -S3156000994001000000010000000100000001000000AD -S31560009950010000000100000001000000010000009D -S31560009960010000000100000001000000010000008D -S31560009970010000000100000001000000010000007D -S31560009980010000000100000001000000010000006D -S31560009990010000000100000001000000010000005D -S315600099A0010000000100000001000000010000004D -S315600099B0010000000100000001000000010000003D -S315600099C0010000000100000001000000010000002D -S315600099D0010000000100000001000000010000001D -S315600099E0010000000100000001000000010000000D -S315600099F001000000010000000100000001000000FD -S31560009A0001000000010000000100000001000000EC -S31560009A1001000000010000000100000001000000DC -S31560009A2001000000010000000100000001000000CC -S31560009A3001000000010000000100000001000000BC -S31560009A4001000000010000000100000001000000AC -S31560009A50010000000100000001000000010000009C -S31560009A60010000000100000001000000010000008C -S31560009A70010000000100000001000000010000007C -S31560009A80010000000100000001000000010000006C -S31560009A90010000000100000001000000010000005C -S31560009AA0010000000100000001000000010000004C -S31560009AB0010000000100000001000000010000003C -S31560009AC0010000000100000001000000010000002C -S31560009AD0010000000100000001000000010000001C -S31560009AE0010000000100000001000000010000000C -S31560009AF001000000010000000100000001000000FC -S31560009B0001000000010000000100000001000000EB -S31560009B1001000000010000000100000001000000DB -S31560009B2001000000010000000100000001000000CB -S31560009B3001000000010000000100000001000000BB -S31560009B4001000000010000000100000001000000AB -S31560009B50010000000100000001000000010000009B -S31560009B60010000000100000001000000010000008B -S31560009B70010000000100000001000000010000007B -S31560009B80010000000100000001000000010000006B -S31560009B90010000000100000001000000010000005B -S31560009BA0010000000100000001000000010000004B -S31560009BB0010000000100000001000000010000003B -S31560009BC0010000000100000001000000010000002B -S31560009BD0010000000100000001000000010000001B -S31560009BE0010000000100000001000000010000000B -S31560009BF001000000010000000100000001000000FB -S31560009C0001000000010000000100000001000000EA -S31560009C1001000000010000000100000001000000DA -S31560009C2001000000010000000100000001000000CA -S31560009C3001000000010000000100000001000000BA -S31560009C4001000000010000000100000001000000AA -S31560009C50010000000100000001000000010000009A -S31560009C60010000000100000001000000010000008A -S31560009C70010000000100000001000000010000007A -S31560009C80010000000100000001000000010000006A -S31560009C90010000000100000001000000010000005A -S31560009CA0010000000100000001000000010000004A -S31560009CB0010000000100000001000000010000003A -S31560009CC0010000000100000001000000010000002A -S31560009CD0010000000100000001000000010000001A -S31560009CE0010000000100000001000000010000000A -S31560009CF001000000010000000100000001000000FA -S31560009D0001000000010000000100000001000000E9 -S31560009D1001000000010000000100000001000000D9 -S31560009D2001000000010000000100000001000000C9 -S31560009D3001000000010000000100000001000000B9 -S31560009D4001000000010000000100000001000000A9 -S31560009D500100000001000000010000000100000099 -S31560009D600100000001000000010000000100000089 -S31560009D700100000001000000010000000100000079 -S31560009D800100000001000000010000000100000069 -S31560009D900100000001000000010000000100000059 -S31560009DA00100000001000000010000000100000049 -S31560009DB00100000001000000010000000100000039 -S31560009DC00100000001000000010000000100000029 -S31560009DD00100000001000000010000000100000019 -S31560009DE00100000001000000010000000100000009 -S31560009DF001000000010000000100000001000000F9 -S31560009E0001000000010000000100000001000000E8 -S31560009E1001000000010000000100000001000000D8 -S31560009E2001000000010000000100000001000000C8 -S31560009E3001000000010000000100000001000000B8 -S31560009E4001000000010000000100000001000000A8 -S31560009E500100000001000000010000000100000098 -S31560009E600100000001000000010000000100000088 -S31560009E700100000001000000010000000100000078 -S31560009E800100000001000000010000000100000068 -S31560009E900100000001000000010000000100000058 -S31560009EA00100000001000000010000000100000048 -S31560009EB00100000001000000010000000100000038 -S31560009EC00100000001000000010000000100000028 -S31560009ED00100000001000000010000000100000018 -S31560009EE00100000001000000010000000100000008 -S31560009EF001000000010000000100000001000000F8 -S31560009F0001000000010000000100000001000000E7 -S31560009F1001000000010000000100000001000000D7 -S31560009F2001000000010000000100000001000000C7 -S31560009F3001000000010000000100000001000000B7 -S31560009F4001000000010000000100000001000000A7 -S31560009F500100000001000000010000000100000097 -S31560009F600100000001000000010000000100000087 -S31560009F700100000001000000010000000100000077 -S31560009F800100000001000000010000000100000067 -S31560009F900100000001000000010000000100000057 -S31560009FA00100000001000000010000000100000047 -S31560009FB00100000001000000010000000100000037 -S31560009FC00100000001000000010000000100000027 -S31560009FD00100000001000000010000000100000017 -S31560009FE00100000001000000010000000100000007 -S31560009FF001000000010000000100000001000000F7 -S3156000A00001000000010000000100000001000000E6 -S3156000A01001000000010000000100000001000000D6 -S3156000A02001000000010000000100000001000000C6 -S3156000A03001000000010000000100000001000000B6 -S3156000A04001000000010000000100000001000000A6 -S3156000A0500100000001000000010000000100000096 -S3156000A0600100000001000000010000000100000086 -S3156000A0700100000001000000010000000100000076 -S3156000A0800100000001000000010000000100000066 -S3156000A0900100000001000000010000000100000056 -S3156000A0A00100000001000000010000000100000046 -S3156000A0B00100000001000000010000000100000036 -S3156000A0C00100000001000000010000000100000026 -S3156000A0D00100000001000000010000000100000016 -S3156000A0E00100000001000000010000000100000006 -S3156000A0F001000000010000000100000001000000F6 -S3156000A10001000000010000000100000001000000E5 -S3156000A11001000000010000000100000001000000D5 -S3156000A12001000000010000000100000001000000C5 -S3156000A13001000000010000000100000001000000B5 -S3156000A14001000000010000000100000001000000A5 -S3156000A1500100000001000000010000000100000095 -S3156000A1600100000001000000010000000100000085 -S3156000A1700100000001000000010000000100000075 -S3156000A1800100000001000000010000000100000065 -S3156000A1900100000001000000010000000100000055 -S3156000A1A00100000001000000010000000100000045 -S3156000A1B00100000001000000010000000100000035 -S3156000A1C00100000001000000010000000100000025 -S3156000A1D00100000001000000010000000100000015 -S3156000A1E00100000001000000010000000100000005 -S3156000A1F001000000010000000100000001000000F5 -S3156000A20001000000010000000100000001000000E4 -S3156000A21001000000010000000100000001000000D4 -S3156000A22001000000010000000100000001000000C4 -S3156000A23001000000010000000100000001000000B4 -S3156000A24001000000010000000100000001000000A4 -S3156000A2500100000001000000010000000100000094 -S3156000A2600100000001000000010000000100000084 -S3156000A2700100000001000000010000000100000074 -S3156000A2800100000001000000010000000100000064 -S3156000A2900100000001000000010000000100000054 -S3156000A2A00100000001000000010000000100000044 -S3156000A2B00100000001000000010000000100000034 -S3156000A2C00100000001000000010000000100000024 -S3156000A2D00100000001000000010000000100000014 -S3156000A2E00100000001000000010000000100000004 -S3156000A2F001000000010000000100000001000000F4 -S3156000A30001000000010000000100000001000000E3 -S3156000A31001000000010000000100000001000000D3 -S3156000A32001000000010000000100000001000000C3 -S3156000A33001000000010000000100000001000000B3 -S3156000A34001000000010000000100000001000000A3 -S3156000A3500100000001000000010000000100000093 -S3156000A3600100000001000000010000000100000083 -S3156000A3700100000001000000010000000100000073 -S3156000A3800100000001000000010000000100000063 -S3156000A3900100000001000000010000000100000053 -S3156000A3A00100000001000000010000000100000043 -S3156000A3B00100000001000000010000000100000033 -S3156000A3C00100000001000000010000000100000023 -S3156000A3D00100000001000000010000000100000013 -S3156000A3E00100000001000000010000000100000003 -S3156000A3F001000000010000000100000001000000F3 -S3156000A40001000000010000000100000001000000E2 -S3156000A41001000000010000000100000001000000D2 -S3156000A42001000000010000000100000001000000C2 -S3156000A43001000000010000000100000001000000B2 -S3156000A44001000000010000000100000001000000A2 -S3156000A4500100000001000000010000000100000092 -S3156000A4600100000001000000010000000100000082 -S3156000A4700100000001000000010000000100000072 -S3156000A4800100000001000000010000000100000062 -S3156000A4900100000001000000010000000100000052 -S3156000A4A00100000001000000010000000100000042 -S3156000A4B00100000001000000010000000100000032 -S3156000A4C00100000001000000010000000100000022 -S3156000A4D00100000001000000010000000100000012 -S3156000A4E00100000001000000010000000100000002 -S3156000A4F001000000010000000100000001000000F2 -S3156000A50001000000010000000100000001000000E1 -S3156000A51001000000010000000100000001000000D1 -S3156000A52001000000010000000100000001000000C1 -S3156000A53001000000010000000100000001000000B1 -S3156000A54001000000010000000100000001000000A1 -S3156000A5500100000001000000010000000100000091 -S3156000A5600100000001000000010000000100000081 -S3156000A5700100000001000000010000000100000071 -S3156000A5800100000001000000010000000100000061 -S3156000A5900100000001000000010000000100000051 -S3156000A5A00100000001000000010000000100000041 -S3156000A5B00100000001000000010000000100000031 -S3156000A5C00100000001000000010000000100000021 -S3156000A5D00100000001000000010000000100000011 -S3156000A5E00100000001000000010000000100000001 -S3156000A5F001000000010000000100000001000000F1 -S3156000A60001000000010000000100000001000000E0 -S3156000A61001000000010000000100000001000000D0 -S3156000A62001000000010000000100000001000000C0 -S3156000A63001000000010000000100000001000000B0 -S3156000A64001000000010000000100000001000000A0 -S3156000A6500100000001000000010000000100000090 -S3156000A6600100000001000000010000000100000080 -S3156000A6700100000001000000010000000100000070 -S3156000A6800100000001000000010000000100000060 -S3156000A6900100000001000000010000000100000050 -S3156000A6A00100000001000000010000000100000040 -S3156000A6B00100000001000000010000000100000030 -S3156000A6C00100000001000000010000000100000020 -S3156000A6D00100000001000000010000000100000010 -S3156000A6E00100000001000000010000000100000000 -S3156000A6F001000000010000000100000001000000F0 -S3156000A70001000000010000000100000001000000DF -S3156000A71001000000010000000100000001000000CF -S3156000A72001000000010000000100000001000000BF -S3156000A73001000000010000000100000001000000AF -S3156000A740010000000100000001000000010000009F -S3156000A750010000000100000001000000010000008F -S3156000A760010000000100000001000000010000007F -S3156000A770010000000100000001000000010000006F -S3156000A780010000000100000001000000010000005F -S3156000A790010000000100000001000000010000004F -S3156000A7A0010000000100000001000000010000003F -S3156000A7B0010000000100000001000000010000002F -S3156000A7C0010000000100000001000000010000001F -S3156000A7D0010000000100000001000000010000000F -S3156000A7E001000000010000000100000001000000FF -S3156000A7F001000000010000000100000001000000EF -S3156000A80001000000010000000100000001000000DE -S3156000A81001000000010000000100000001000000CE -S3156000A82001000000010000000100000001000000BE -S3156000A83001000000010000000100000001000000AE -S3156000A840010000000100000001000000010000009E -S3156000A850010000000100000001000000010000008E -S3156000A860010000000100000001000000010000007E -S3156000A870010000000100000001000000010000006E -S3156000A880010000000100000001000000010000005E -S3156000A890010000000100000001000000010000004E -S3156000A8A0010000000100000001000000010000003E -S3156000A8B0010000000100000001000000010000002E -S3156000A8C0010000000100000001000000010000001E -S3156000A8D0010000000100000001000000010000000E -S3156000A8E001000000010000000100000001000000FE -S3156000A8F001000000010000000100000001000000EE -S3156000A90001000000010000000100000001000000DD -S3156000A91001000000010000000100000001000000CD -S3156000A92001000000010000000100000001000000BD -S3156000A93001000000010000000100000001000000AD -S3156000A940010000000100000001000000010000009D -S3156000A950010000000100000001000000010000008D -S3156000A960010000000100000001000000010000007D -S3156000A970010000000100000001000000010000006D -S3156000A980010000000100000001000000010000005D -S3156000A990010000000100000001000000010000004D -S3156000A9A0010000000100000001000000010000003D -S3156000A9B0010000000100000001000000010000002D -S3156000A9C0010000000100000001000000010000001D -S3156000A9D0010000000100000001000000010000000D -S3156000A9E001000000010000000100000001000000FD -S3156000A9F001000000010000000100000001000000ED -S3156000AA0001000000010000000100000001000000DC -S3156000AA1001000000010000000100000001000000CC -S3156000AA2001000000010000000100000001000000BC -S3156000AA3001000000010000000100000001000000AC -S3156000AA40010000000100000001000000010000009C -S3156000AA50010000000100000001000000010000008C -S3156000AA60010000000100000001000000010000007C -S3156000AA70010000000100000001000000010000006C -S3156000AA80010000000100000001000000010000005C -S3156000AA90010000000100000001000000010000004C -S3156000AAA0010000000100000001000000010000003C -S3156000AAB0010000000100000001000000010000002C -S3156000AAC0010000000100000001000000010000001C -S3156000AAD0010000000100000001000000010000000C -S3156000AAE001000000010000000100000001000000FC -S3156000AAF001000000010000000100000001000000EC -S3156000AB0001000000010000000100000001000000DB -S3156000AB1001000000010000000100000001000000CB -S3156000AB2001000000010000000100000001000000BB -S3156000AB3001000000010000000100000001000000AB -S3156000AB40010000000100000001000000010000009B -S3156000AB50010000000100000001000000010000008B -S3156000AB60010000000100000001000000010000007B -S3156000AB70010000000100000001000000010000006B -S3156000AB80010000000100000001000000010000005B -S3156000AB90010000000100000001000000010000004B -S3156000ABA0010000000100000001000000010000003B -S3156000ABB0010000000100000001000000010000002B -S3156000ABC0010000000100000001000000010000001B -S3156000ABD0010000000100000001000000010000000B -S3156000ABE001000000010000000100000001000000FB -S3156000ABF001000000010000000100000001000000EB -S3156000AC0001000000010000000100000001000000DA -S3156000AC1001000000010000000100000001000000CA -S3156000AC2001000000010000000100000001000000BA -S3156000AC3001000000010000000100000001000000AA -S3156000AC40010000000100000001000000010000009A -S3156000AC50010000000100000001000000010000008A -S3156000AC60010000000100000001000000010000007A -S3156000AC70010000000100000001000000010000006A -S3156000AC80010000000100000001000000010000005A -S3156000AC90010000000100000001000000010000004A -S3156000ACA0010000000100000001000000010000003A -S3156000ACB0010000000100000001000000010000002A -S3156000ACC0010000000100000001000000010000001A -S3156000ACD0010000000100000001000000010000000A -S3156000ACE001000000010000000100000001000000FA -S3156000ACF001000000010000000100000001000000EA -S3156000AD0001000000010000000100000001000000D9 -S3156000AD1001000000010000000100000001000000C9 -S3156000AD2001000000010000000100000001000000B9 -S3156000AD3001000000010000000100000001000000A9 -S3156000AD400100000001000000010000000100000099 -S3156000AD500100000001000000010000000100000089 -S3156000AD600100000001000000010000000100000079 -S3156000AD700100000001000000010000000100000069 -S3156000AD800100000001000000010000000100000059 -S3156000AD900100000001000000010000000100000049 -S3156000ADA00100000001000000010000000100000039 -S3156000ADB00100000001000000010000000100000029 -S3156000ADC00100000001000000010000000100000019 -S3156000ADD00100000001000000010000000100000009 -S3156000ADE001000000010000000100000001000000F9 -S3156000ADF001000000010000000100000001000000E9 -S3156000AE0001000000010000000100000001000000D8 -S3156000AE1001000000010000000100000001000000C8 -S3156000AE2001000000010000000100000001000000B8 -S3156000AE3001000000010000000100000001000000A8 -S3156000AE400100000001000000010000000100000098 -S3156000AE500100000001000000010000000100000088 -S3156000AE600100000001000000010000000100000078 -S3156000AE700100000001000000010000000100000068 -S3156000AE800100000001000000010000000100000058 -S3156000AE900100000001000000010000000100000048 -S3156000AEA00100000001000000010000000100000038 -S3156000AEB00100000001000000010000000100000028 -S3156000AEC00100000001000000010000000100000018 -S3156000AED00100000001000000010000000100000008 -S3156000AEE001000000010000000100000001000000F8 -S3156000AEF001000000010000000100000001000000E8 -S3156000AF0001000000010000000100000001000000D7 -S3156000AF1001000000010000000100000001000000C7 -S3156000AF2001000000010000000100000001000000B7 -S3156000AF3001000000010000000100000001000000A7 -S3156000AF400100000001000000010000000100000097 -S3156000AF500100000001000000010000000100000087 -S3156000AF600100000001000000010000000100000077 -S3156000AF700100000001000000010000000100000067 -S3156000AF800100000001000000010000000100000057 -S3156000AF900100000001000000010000000100000047 -S3156000AFA00100000001000000010000000100000037 -S3156000AFB00100000001000000010000000100000027 -S3156000AFC00100000001000000010000000100000017 -S3156000AFD00100000001000000010000000100000007 -S3156000AFE001000000010000000100000001000000F7 -S3156000AFF001000000010000000100000001000000E7 -S3156000B00001000000010000000100000001000000D6 -S3156000B01001000000010000000100000001000000C6 -S3156000B02001000000010000000100000001000000B6 -S3156000B03001000000010000000100000001000000A6 -S3156000B0400100000001000000010000000100000096 -S3156000B0500100000001000000010000000100000086 -S3156000B0600100000001000000010000000100000076 -S3156000B0700100000001000000010000000100000066 -S3156000B0800100000001000000010000000100000056 -S3156000B0900100000001000000010000000100000046 -S3156000B0A00100000001000000010000000100000036 -S3156000B0B00100000001000000010000000100000026 -S3156000B0C00100000001000000010000000100000016 -S3156000B0D00100000001000000010000000100000006 -S3156000B0E001000000010000000100000001000000F6 -S3156000B0F001000000010000000100000001000000E6 -S3156000B10001000000010000000100000001000000D5 -S3156000B11001000000010000000100000001000000C5 -S3156000B12001000000010000000100000001000000B5 -S3156000B13001000000010000000100000001000000A5 -S3156000B1400100000001000000010000000100000095 -S3156000B1500100000001000000010000000100000085 -S3156000B1600100000001000000010000000100000075 -S3156000B1700100000001000000010000000100000065 -S3156000B1800100000001000000010000000100000055 -S3156000B1900100000001000000010000000100000045 -S3156000B1A00100000001000000010000000100000035 -S3156000B1B00100000001000000010000000100000025 -S3156000B1C00100000001000000010000000100000015 -S3156000B1D00100000001000000010000000100000005 -S3156000B1E001000000010000000100000001000000F5 -S3156000B1F001000000010000000100000001000000E5 -S3156000B20001000000010000000100000001000000D4 -S3156000B21001000000010000000100000001000000C4 -S3156000B22001000000010000000100000001000000B4 -S3156000B23001000000010000000100000001000000A4 -S3156000B2400100000001000000010000000100000094 -S3156000B2500100000001000000010000000100000084 -S3156000B2600100000001000000010000000100000074 -S3156000B2700100000001000000010000000100000064 -S3156000B2800100000001000000010000000100000054 -S3156000B2900100000001000000010000000100000044 -S3156000B2A00100000001000000010000000100000034 -S3156000B2B00100000001000000010000000100000024 -S3156000B2C00100000001000000010000000100000014 -S3156000B2D00100000001000000010000000100000004 -S3156000B2E001000000010000000100000001000000F4 -S3156000B2F001000000010000000100000001000000E4 -S3156000B30001000000010000000100000001000000D3 -S3156000B31001000000010000000100000001000000C3 -S3156000B32001000000010000000100000001000000B3 -S3156000B33001000000010000000100000001000000A3 -S3156000B3400100000001000000010000000100000093 -S3156000B3500100000001000000010000000100000083 -S3156000B3600100000001000000010000000100000073 -S3156000B3700100000001000000010000000100000063 -S3156000B3800100000001000000010000000100000053 -S3156000B3900100000001000000010000000100000043 -S3156000B3A00100000001000000010000000100000033 -S3156000B3B00100000001000000010000000100000023 -S3156000B3C00100000001000000010000000100000013 -S3156000B3D00100000001000000010000000100000003 -S3156000B3E001000000010000000100000001000000F3 -S3156000B3F001000000010000000100000001000000E3 -S3156000B40001000000010000000100000001000000D2 -S3156000B41001000000010000000100000001000000C2 -S3156000B42001000000010000000100000001000000B2 -S3156000B43001000000010000000100000001000000A2 -S3156000B4400100000001000000010000000100000092 -S3156000B4500100000001000000010000000100000082 -S3156000B4600100000001000000010000000100000072 -S3156000B4700100000001000000010000000100000062 -S3156000B4800100000001000000010000000100000052 -S3156000B4900100000001000000010000000100000042 -S3156000B4A00100000001000000010000000100000032 -S3156000B4B00100000001000000010000000100000022 -S3156000B4C00100000001000000010000000100000012 -S3156000B4D00100000001000000010000000100000002 -S3156000B4E001000000010000000100000001000000F2 -S3156000B4F001000000010000000100000001000000E2 -S3156000B50001000000010000000100000001000000D1 -S3156000B51001000000010000000100000001000000C1 -S3156000B52001000000010000000100000001000000B1 -S3156000B53001000000010000000100000001000000A1 -S3156000B5400100000001000000010000000100000091 -S3156000B5500100000001000000010000000100000081 -S3156000B5600100000001000000010000000100000071 -S3156000B5700100000001000000010000000100000061 -S3156000B5800100000001000000010000000100000051 -S3156000B5900100000001000000010000000100000041 -S3156000B5A00100000001000000010000000100000031 -S3156000B5B00100000001000000010000000100000021 -S3156000B5C00100000001000000010000000100000011 -S3156000B5D00100000001000000010000000100000001 -S3156000B5E001000000010000000100000001000000F1 -S3156000B5F001000000010000000100000001000000E1 -S3156000B60001000000010000000100000001000000D0 -S3156000B61001000000010000000100000001000000C0 -S3156000B62001000000010000000100000001000000B0 -S3156000B63001000000010000000100000001000000A0 -S3156000B6400100000001000000010000000100000090 -S3156000B6500100000001000000010000000100000080 -S3156000B6600100000001000000010000000100000070 -S3156000B6700100000001000000010000000100000060 -S3156000B6800100000001000000010000000100000050 -S3156000B6900100000001000000010000000100000040 -S3156000B6A00100000001000000010000000100000030 -S3156000B6B00100000001000000010000000100000020 -S3156000B6C00100000001000000010000000100000010 -S3156000B6D00100000001000000010000000100000000 -S3156000B6E001000000010000000100000001000000F0 -S3156000B6F001000000010000000100000001000000E0 -S3156000B70001000000010000000100000001000000CF -S3156000B71001000000010000000100000001000000BF -S3156000B72001000000010000000100000001000000AF -S3156000B730010000000100000001000000010000009F -S3156000B740010000000100000001000000010000008F -S3156000B750010000000100000001000000010000007F -S3156000B760010000000100000001000000010000006F -S3156000B770010000000100000001000000010000005F -S3156000B780010000000100000001000000010000004F -S3156000B790010000000100000001000000010000003F -S3156000B7A0010000000100000001000000010000002F -S3156000B7B0010000000100000001000000010000001F -S3156000B7C0010000000100000001000000010000000F -S3156000B7D001000000010000000100000001000000FF -S3156000B7E001000000010000000100000001000000EF -S3156000B7F001000000010000000100000001000000DF -S3156000B80001000000010000000100000001000000CE -S3156000B81001000000010000000100000001000000BE -S3156000B82001000000010000000100000001000000AE -S3156000B830010000000100000001000000010000009E -S3156000B840010000000100000001000000010000008E -S3156000B850010000000100000001000000010000007E -S3156000B860010000000100000001000000010000006E -S3156000B870010000000100000001000000010000005E -S3156000B880010000000100000001000000010000004E -S3156000B890010000000100000001000000010000003E -S3156000B8A0010000000100000001000000010000002E -S3156000B8B0010000000100000001000000010000001E -S3156000B8C0010000000100000001000000010000000E -S3156000B8D001000000010000000100000001000000FE -S3156000B8E001000000010000000100000001000000EE -S3156000B8F001000000010000000100000001000000DE -S3156000B90001000000010000000100000001000000CD -S3156000B91001000000010000000100000001000000BD -S3156000B92001000000010000000100000001000000AD -S3156000B930010000000100000001000000010000009D -S3156000B940010000000100000001000000010000008D -S3156000B950010000000100000001000000010000007D -S3156000B960010000000100000001000000010000006D -S3156000B970010000000100000001000000010000005D -S3156000B980010000000100000001000000010000004D -S3156000B990010000000100000001000000010000003D -S3156000B9A0010000000100000001000000010000002D -S3156000B9B0010000000100000001000000010000001D -S3156000B9C0010000000100000001000000010000000D -S3156000B9D001000000010000000100000001000000FD -S3156000B9E001000000010000000100000001000000ED -S3156000B9F001000000010000000100000001000000DD -S3156000BA0001000000010000000100000001000000CC -S3156000BA1001000000010000000100000001000000BC -S3156000BA2001000000010000000100000001000000AC -S3156000BA30010000000100000001000000010000009C -S3156000BA40010000000100000001000000010000008C -S3156000BA50010000000100000001000000010000007C -S3156000BA60010000000100000001000000010000006C -S3156000BA70010000000100000001000000010000005C -S3156000BA80010000000100000001000000010000004C -S3156000BA90010000000100000001000000010000003C -S3156000BAA0010000000100000001000000010000002C -S3156000BAB0010000000100000001000000010000001C -S3156000BAC0010000000100000001000000010000000C -S3156000BAD001000000010000000100000001000000FC -S3156000BAE001000000010000000100000001000000EC -S3156000BAF001000000010000000100000001000000DC -S3156000BB0001000000010000000100000001000000CB -S3156000BB1001000000010000000100000001000000BB -S3156000BB2001000000010000000100000001000000AB -S3156000BB30010000000100000001000000010000009B -S3156000BB40010000000100000001000000010000008B -S3156000BB50010000000100000001000000010000007B -S3156000BB60010000000100000001000000010000006B -S3156000BB70010000000100000001000000010000005B -S3156000BB80010000000100000001000000010000004B -S3156000BB90010000000100000001000000010000003B -S3156000BBA0010000000100000001000000010000002B -S3156000BBB0010000000100000001000000010000001B -S3156000BBC0010000000100000001000000010000000B -S3156000BBD001000000010000000100000001000000FB -S3156000BBE001000000010000000100000001000000EB -S3156000BBF001000000010000000100000001000000DB -S3156000BC0001000000010000000100000001000000CA -S3156000BC1001000000010000000100000001000000BA -S3156000BC2001000000010000000100000001000000AA -S3156000BC30010000000100000001000000010000009A -S3156000BC40010000000100000001000000010000008A -S3156000BC50010000000100000001000000010000007A -S3156000BC60010000000100000001000000010000006A -S3156000BC70010000000100000001000000010000005A -S3156000BC80010000000100000001000000010000004A -S3156000BC90010000000100000001000000010000003A -S3156000BCA0010000000100000001000000010000002A -S3156000BCB0010000000100000001000000010000001A -S3156000BCC0010000000100000001000000010000000A -S3156000BCD001000000010000000100000001000000FA -S3156000BCE001000000010000000100000001000000EA -S3156000BCF001000000010000000100000001000000DA -S3156000BD0001000000010000000100000001000000C9 -S3156000BD1001000000010000000100000001000000B9 -S3156000BD2001000000010000000100000001000000A9 -S3156000BD300100000001000000010000000100000099 -S3156000BD400100000001000000010000000100000089 -S3156000BD500100000001000000010000000100000079 -S3156000BD600100000001000000010000000100000069 -S3156000BD700100000001000000010000000100000059 -S3156000BD800100000001000000010000000100000049 -S3156000BD900100000001000000010000000100000039 -S3156000BDA00100000001000000010000000100000029 -S3156000BDB00100000001000000010000000100000019 -S3156000BDC00100000001000000010000000100000009 -S3156000BDD001000000010000000100000001000000F9 -S3156000BDE001000000010000000100000001000000E9 -S3156000BDF001000000010000000100000001000000D9 -S3156000BE0001000000010000000100000001000000C8 -S3156000BE1001000000010000000100000001000000B8 -S3156000BE2001000000010000000100000001000000A8 -S3156000BE300100000001000000010000000100000098 -S3156000BE400100000001000000010000000100000088 -S3156000BE500100000001000000010000000100000078 -S3156000BE600100000001000000010000000100000068 -S3156000BE700100000001000000010000000100000058 -S3156000BE800100000001000000010000000100000048 -S3156000BE900100000001000000010000000100000038 -S3156000BEA00100000001000000010000000100000028 -S3156000BEB00100000001000000010000000100000018 -S3156000BEC00100000001000000010000000100000008 -S3156000BED001000000010000000100000001000000F8 -S3156000BEE001000000010000000100000001000000E8 -S3156000BEF001000000010000000100000001000000D8 -S3156000BF0001000000010000000100000001000000C7 -S3156000BF1001000000010000000100000001000000B7 -S3156000BF2001000000010000000100000001000000A7 -S3156000BF300100000001000000010000000100000097 -S3156000BF400100000001000000010000000100000087 -S3156000BF500100000001000000010000000100000077 -S3156000BF600100000001000000010000000100000067 -S3156000BF700100000001000000010000000100000057 -S3156000BF800100000001000000010000000100000047 -S3156000BF900100000001000000010000000100000037 -S3156000BFA00100000001000000010000000100000027 -S3156000BFB00100000001000000010000000100000017 -S3156000BFC00100000001000000010000000100000007 -S3156000BFD001000000010000000100000001000000F7 -S3156000BFE001000000010000000100000001000000E7 -S3156000BFF001000000010000000100000001000000D7 -S3156000C00001000000010000000100000001000000C6 -S3156000C01001000000010000000100000001000000B6 -S3156000C02001000000010000000100000001000000A6 -S3156000C0300100000001000000010000000100000096 -S3156000C0400100000001000000010000000100000086 -S3156000C0500100000001000000010000000100000076 -S3156000C0600100000001000000010000000100000066 -S3156000C0700100000001000000010000000100000056 -S3156000C0800100000001000000010000000100000046 -S3156000C0900100000001000000010000000100000036 -S3156000C0A00100000001000000010000000100000026 -S3156000C0B00100000001000000010000000100000016 -S3156000C0C00100000001000000010000000100000006 -S3156000C0D001000000010000000100000001000000F6 -S3156000C0E001000000010000000100000001000000E6 -S3156000C0F001000000010000000100000001000000D6 -S3156000C10001000000010000000100000001000000C5 -S3156000C11001000000010000000100000001000000B5 -S3156000C12001000000010000000100000001000000A5 -S3156000C1300100000001000000010000000100000095 -S3156000C1400100000001000000010000000100000085 -S3156000C1500100000001000000010000000100000075 -S3156000C1600100000001000000010000000100000065 -S3156000C1700100000001000000010000000100000055 -S3156000C1800100000001000000010000000100000045 -S3156000C1900100000001000000010000000100000035 -S3156000C1A00100000001000000010000000100000025 -S3156000C1B00100000001000000010000000100000015 -S3156000C1C00100000001000000010000000100000005 -S3156000C1D001000000010000000100000001000000F5 -S3156000C1E001000000010000000100000001000000E5 -S3156000C1F001000000010000000100000001000000D5 -S3156000C20001000000010000000100000001000000C4 -S3156000C21001000000010000000100000001000000B4 -S3156000C22001000000010000000100000001000000A4 -S3156000C2300100000001000000010000000100000094 -S3156000C2400100000001000000010000000100000084 -S3156000C2500100000001000000010000000100000074 -S3156000C2600100000001000000010000000100000064 -S3156000C2700100000001000000010000000100000054 -S3156000C2800100000001000000010000000100000044 -S3156000C2900100000001000000010000000100000034 -S3156000C2A00100000001000000010000000100000024 -S3156000C2B00100000001000000010000000100000014 -S3156000C2C00100000001000000010000000100000004 -S3156000C2D001000000010000000100000001000000F4 -S3156000C2E001000000010000000100000001000000E4 -S3156000C2F001000000010000000100000001000000D4 -S3156000C30001000000010000000100000001000000C3 -S3156000C31001000000010000000100000001000000B3 -S3156000C32001000000010000000100000001000000A3 -S3156000C3300100000001000000010000000100000093 -S3156000C3400100000001000000010000000100000083 -S3156000C3500100000001000000010000000100000073 -S3156000C3600100000001000000010000000100000063 -S3156000C3700100000001000000010000000100000053 -S3156000C3800100000001000000010000000100000043 -S3156000C3900100000001000000010000000100000033 -S3156000C3A00100000001000000010000000100000023 -S3156000C3B00100000001000000010000000100000013 -S3156000C3C00100000001000000010000000100000003 -S3156000C3D001000000010000000100000001000000F3 -S3156000C3E001000000010000000100000001000000E3 -S3156000C3F001000000010000000100000001000000D3 -S3156000C40001000000010000000100000001000000C2 -S3156000C41001000000010000000100000001000000B2 -S3156000C42001000000010000000100000001000000A2 -S3156000C4300100000001000000010000000100000092 -S3156000C4400100000001000000010000000100000082 -S3156000C4500100000001000000010000000100000072 -S3156000C4600100000001000000010000000100000062 -S3156000C4700100000001000000010000000100000052 -S3156000C4800100000001000000010000000100000042 -S3156000C4900100000001000000010000000100000032 -S3156000C4A00100000001000000010000000100000022 -S3156000C4B00100000001000000010000000100000012 -S3156000C4C00100000001000000010000000100000002 -S3156000C4D001000000010000000100000001000000F2 -S3156000C4E001000000010000000100000001000000E2 -S3156000C4F001000000010000000100000001000000D2 -S3156000C50001000000010000000100000001000000C1 -S3156000C51001000000010000000100000001000000B1 -S3156000C52001000000010000000100000001000000A1 -S3156000C5300100000001000000010000000100000091 -S3156000C5400100000001000000010000000100000081 -S3156000C5500100000001000000010000000100000071 -S3156000C5600100000001000000010000000100000061 -S3156000C5700100000001000000010000000100000051 -S3156000C5800100000001000000010000000100000041 -S3156000C5900100000001000000010000000100000031 -S3156000C5A00100000001000000010000000100000021 -S3156000C5B00100000001000000010000000100000011 -S3156000C5C00100000001000000010000000100000001 -S3156000C5D001000000010000000100000001000000F1 -S3156000C5E001000000010000000100000001000000E1 -S3156000C5F001000000010000000100000001000000D1 -S3156000C60001000000010000000100000001000000C0 -S3156000C61001000000010000000100000001000000B0 -S3156000C62001000000010000000100000001000000A0 -S3156000C6300100000001000000010000000100000090 -S3156000C6400100000001000000010000000100000080 -S3156000C6500100000001000000010000000100000070 -S3156000C6600100000001000000010000000100000060 -S3156000C6700100000001000000010000000100000050 -S3156000C6800100000001000000010000000100000040 -S3156000C6900100000001000000010000000100000030 -S3156000C6A00100000001000000010000000100000020 -S3156000C6B00100000001000000010000000100000010 -S3156000C6C00100000001000000010000000100000000 -S3156000C6D001000000010000000100000001000000F0 -S3156000C6E001000000010000000100000001000000E0 -S3156000C6F001000000010000000100000001000000D0 -S3156000C70001000000010000000100000001000000BF -S3156000C71001000000010000000100000001000000AF -S3156000C720010000000100000001000000010000009F -S3156000C730010000000100000001000000010000008F -S3156000C740010000000100000001000000010000007F -S3156000C750010000000100000001000000010000006F -S3156000C760010000000100000001000000010000005F -S3156000C770010000000100000001000000010000004F -S3156000C780010000000100000001000000010000003F -S3156000C790010000000100000001000000010000002F -S3156000C7A0010000000100000001000000010000001F -S3156000C7B0010000000100000001000000010000000F -S3156000C7C001000000010000000100000001000000FF -S3156000C7D001000000010000000100000001000000EF -S3156000C7E001000000010000000100000001000000DF -S3156000C7F001000000010000000100000001000000CF -S3156000C80001000000010000000100000001000000BE -S3156000C81001000000010000000100000001000000AE -S3156000C820010000000100000001000000010000009E -S3156000C830010000000100000001000000010000008E -S3156000C840010000000100000001000000010000007E -S3156000C850010000000100000001000000010000006E -S3156000C860010000000100000001000000010000005E -S3156000C870010000000100000001000000010000004E -S3156000C880010000000100000001000000010000003E -S3156000C890010000000100000001000000010000002E -S3156000C8A0010000000100000001000000010000001E -S3156000C8B0010000000100000001000000010000000E -S3156000C8C001000000010000000100000001000000FE -S3156000C8D001000000010000000100000001000000EE -S3156000C8E001000000010000000100000001000000DE -S3156000C8F001000000010000000100000001000000CE -S3156000C90001000000010000000100000001000000BD -S3156000C91001000000010000000100000001000000AD -S3156000C920010000000100000001000000010000009D -S3156000C930010000000100000001000000010000008D -S3156000C940010000000100000001000000010000007D -S3156000C950010000000100000001000000010000006D -S3156000C960010000000100000001000000010000005D -S3156000C970010000000100000001000000010000004D -S3156000C980010000000100000001000000010000003D -S3156000C990010000000100000001000000010000002D -S3156000C9A0010000000100000001000000010000001D -S3156000C9B0010000000100000001000000010000000D -S3156000C9C001000000010000000100000001000000FD -S3156000C9D001000000010000000100000001000000ED -S3156000C9E001000000010000000100000001000000DD -S3156000C9F001000000010000000100000001000000CD -S3156000CA0001000000010000000100000001000000BC -S3156000CA1001000000010000000100000001000000AC -S3156000CA20010000000100000001000000010000009C -S3156000CA30010000000100000001000000010000008C -S3156000CA40010000000100000001000000010000007C -S3156000CA50010000000100000001000000010000006C -S3156000CA60010000000100000001000000010000005C -S3156000CA70010000000100000001000000010000004C -S3156000CA80010000000100000001000000010000003C -S3156000CA90010000000100000001000000010000002C -S3156000CAA0010000000100000001000000010000001C -S3156000CAB0010000000100000001000000010000000C -S3156000CAC001000000010000000100000001000000FC -S3156000CAD001000000010000000100000001000000EC -S3156000CAE001000000010000000100000001000000DC -S3156000CAF001000000010000000100000001000000CC -S3156000CB0001000000010000000100000001000000BB -S3156000CB1001000000010000000100000001000000AB -S3156000CB20010000000100000001000000010000009B -S3156000CB30010000000100000001000000010000008B -S3156000CB40010000000100000001000000010000007B -S3156000CB50010000000100000001000000010000006B -S3156000CB60010000000100000001000000010000005B -S3156000CB70010000000100000001000000010000004B -S3156000CB80010000000100000001000000010000003B -S3156000CB90010000000100000001000000010000002B -S3156000CBA0010000000100000001000000010000001B -S3156000CBB0010000000100000001000000010000000B -S3156000CBC001000000010000000100000001000000FB -S3156000CBD001000000010000000100000001000000EB -S3156000CBE001000000010000000100000001000000DB -S3156000CBF001000000010000000100000001000000CB -S3156000CC0001000000010000000100000001000000BA -S3156000CC1001000000010000000100000001000000AA -S3156000CC20010000000100000001000000010000009A -S3156000CC30010000000100000001000000010000008A -S3156000CC40010000000100000001000000010000007A -S3156000CC50010000000100000001000000010000006A -S3156000CC60010000000100000001000000010000005A -S3156000CC70010000000100000001000000010000004A -S3156000CC80010000000100000001000000010000003A -S3156000CC90010000000100000001000000010000002A -S3156000CCA0010000000100000001000000010000001A -S3156000CCB0010000000100000001000000010000000A -S3156000CCC001000000010000000100000001000000FA -S3156000CCD001000000010000000100000001000000EA -S3156000CCE001000000010000000100000001000000DA -S3156000CCF001000000010000000100000001000000CA -S3156000CD0001000000010000000100000001000000B9 -S3156000CD1001000000010000000100000001000000A9 -S3156000CD200100000001000000010000000100000099 -S3156000CD300100000001000000010000000100000089 -S3156000CD400100000001000000010000000100000079 -S3156000CD500100000001000000010000000100000069 -S3156000CD600100000001000000010000000100000059 -S3156000CD700100000001000000010000000100000049 -S3156000CD800100000001000000010000000100000039 -S3156000CD900100000001000000010000000100000029 -S3156000CDA00100000001000000010000000100000019 -S3156000CDB00100000001000000010000000100000009 -S3156000CDC001000000010000000100000001000000F9 -S3156000CDD001000000010000000100000001000000E9 -S3156000CDE001000000010000000100000001000000D9 -S3156000CDF001000000010000000100000001000000C9 -S3156000CE0001000000010000000100000001000000B8 -S3156000CE1001000000010000000100000001000000A8 -S3156000CE200100000001000000010000000100000098 -S3156000CE300100000001000000010000000100000088 -S3156000CE400100000001000000010000000100000078 -S3156000CE500100000001000000010000000100000068 -S3156000CE600100000001000000010000000100000058 -S3156000CE700100000001000000010000000100000048 -S3156000CE800100000001000000010000000100000038 -S3156000CE900100000001000000010000000100000028 -S3156000CEA00100000001000000010000000100000018 -S3156000CEB00100000001000000010000000100000008 -S3156000CEC001000000010000000100000001000000F8 -S3156000CED001000000010000000100000001000000E8 -S3156000CEE001000000010000000100000001000000D8 -S3156000CEF001000000010000000100000001000000C8 -S3156000CF0001000000010000000100000001000000B7 -S3156000CF1001000000010000000100000001000000A7 -S3156000CF200100000001000000010000000100000097 -S3156000CF300100000001000000010000000100000087 -S3156000CF400100000001000000010000000100000077 -S3156000CF500100000001000000010000000100000067 -S3156000CF600100000001000000010000000100000057 -S3156000CF700100000001000000010000000100000047 -S3156000CF800100000001000000010000000100000037 -S3156000CF900100000001000000010000000100000027 -S3156000CFA00100000001000000010000000100000017 -S3156000CFB00100000001000000010000000100000007 -S3156000CFC001000000010000000100000001000000F7 -S3156000CFD001000000010000000100000001000000E7 -S3156000CFE001000000010000000100000001000000D7 -S3156000CFF001000000010000000100000001000000C7 -S3156000D00001000000010000000100000001000000B6 -S3156000D01001000000010000000100000001000000A6 -S3156000D0200100000001000000010000000100000096 -S3156000D0300100000001000000010000000100000086 -S3156000D0400100000001000000010000000100000076 -S3156000D0500100000001000000010000000100000066 -S3156000D0600100000001000000010000000100000056 -S3156000D0700100000001000000010000000100000046 -S3156000D0800100000001000000010000000100000036 -S3156000D0900100000001000000010000000100000026 -S3156000D0A00100000001000000010000000100000016 -S3156000D0B00100000001000000010000000100000006 -S3156000D0C001000000010000000100000001000000F6 -S3156000D0D001000000010000000100000001000000E6 -S3156000D0E001000000010000000100000001000000D6 -S3156000D0F001000000010000000100000001000000C6 -S3156000D10001000000010000000100000001000000B5 -S3156000D11001000000010000000100000001000000A5 -S3156000D1200100000001000000010000000100000095 -S3156000D1300100000001000000010000000100000085 -S3156000D1400100000001000000010000000100000075 -S3156000D1500100000001000000010000000100000065 -S3156000D1600100000001000000010000000100000055 -S3156000D1700100000001000000010000000100000045 -S3156000D1800100000001000000010000000100000035 -S3156000D1900100000001000000010000000100000025 -S3156000D1A00100000001000000010000000100000015 -S3156000D1B00100000001000000010000000100000005 -S3156000D1C001000000010000000100000001000000F5 -S3156000D1D001000000010000000100000001000000E5 -S3156000D1E001000000010000000100000001000000D5 -S3156000D1F001000000010000000100000001000000C5 -S3156000D20001000000010000000100000001000000B4 -S3156000D21001000000010000000100000001000000A4 -S3156000D2200100000001000000010000000100000094 -S3156000D2300100000001000000010000000100000084 -S3156000D2400100000001000000010000000100000074 -S3156000D2500100000001000000010000000100000064 -S3156000D2600100000001000000010000000100000054 -S3156000D2700100000001000000010000000100000044 -S3156000D2800100000001000000010000000100000034 -S3156000D2900100000001000000010000000100000024 -S3156000D2A00100000001000000010000000100000014 -S3156000D2B00100000001000000010000000100000004 -S3156000D2C001000000010000000100000001000000F4 -S3156000D2D001000000010000000100000001000000E4 -S3156000D2E001000000010000000100000001000000D4 -S3156000D2F001000000010000000100000001000000C4 -S3156000D30001000000010000000100000001000000B3 -S3156000D31001000000010000000100000001000000A3 -S3156000D3200100000001000000010000000100000093 -S3156000D3300100000001000000010000000100000083 -S3156000D3400100000001000000010000000100000073 -S3156000D3500100000001000000010000000100000063 -S3156000D3600100000001000000010000000100000053 -S3156000D3700100000001000000010000000100000043 -S3156000D3800100000001000000010000000100000033 -S3156000D3900100000001000000010000000100000023 -S3156000D3A00100000001000000010000000100000013 -S3156000D3B00100000001000000010000000100000003 -S3156000D3C001000000010000000100000001000000F3 -S3156000D3D001000000010000000100000001000000E3 -S3156000D3E001000000010000000100000001000000D3 -S3156000D3F001000000010000000100000001000000C3 -S3156000D40001000000010000000100000001000000B2 -S3156000D41001000000010000000100000001000000A2 -S3156000D4200100000001000000010000000100000092 -S3156000D4300100000001000000010000000100000082 -S3156000D4400100000001000000010000000100000072 -S3156000D4500100000001000000010000000100000062 -S3156000D4600100000001000000010000000100000052 -S3156000D4700100000001000000010000000100000042 -S3156000D4800100000001000000010000000100000032 -S3156000D4900100000001000000010000000100000022 -S3156000D4A00100000001000000010000000100000012 -S3156000D4B00100000001000000010000000100000002 -S3156000D4C001000000010000000100000001000000F2 -S3156000D4D001000000010000000100000001000000E2 -S3156000D4E001000000010000000100000001000000D2 -S3156000D4F001000000010000000100000001000000C2 -S3156000D50001000000010000000100000001000000B1 -S3156000D51001000000010000000100000001000000A1 -S3156000D5200100000001000000010000000100000091 -S3156000D5300100000001000000010000000100000081 -S3156000D5400100000001000000010000000100000071 -S3156000D5500100000001000000010000000100000061 -S3156000D5600100000001000000010000000100000051 -S3156000D5700100000001000000010000000100000041 -S3156000D5800100000001000000010000000100000031 -S3156000D5900100000001000000010000000100000021 -S3156000D5A00100000001000000010000000100000011 -S3156000D5B00100000001000000010000000100000001 -S3156000D5C001000000010000000100000001000000F1 -S3156000D5D001000000010000000100000001000000E1 -S3156000D5E001000000010000000100000001000000D1 -S3156000D5F001000000010000000100000001000000C1 -S3156000D60001000000010000000100000001000000B0 -S3156000D61001000000010000000100000001000000A0 -S3156000D6200100000001000000010000000100000090 -S3156000D6300100000001000000010000000100000080 -S3156000D6400100000001000000010000000100000070 -S3156000D6500100000001000000010000000100000060 -S3156000D6600100000001000000010000000100000050 -S3156000D6700100000001000000010000000100000040 -S3156000D6800100000001000000010000000100000030 -S3156000D6900100000001000000010000000100000020 -S3156000D6A00100000001000000010000000100000010 -S3156000D6B00100000001000000010000000100000000 -S3156000D6C001000000010000000100000001000000F0 -S3156000D6D001000000010000000100000001000000E0 -S3156000D6E001000000010000000100000001000000D0 -S3156000D6F001000000010000000100000001000000C0 -S3156000D70001000000010000000100000001000000AF -S3156000D710010000000100000001000000010000009F -S3156000D720010000000100000001000000010000008F -S3156000D730010000000100000001000000010000007F -S3156000D740010000000100000001000000010000006F -S3156000D750010000000100000001000000010000005F -S3156000D760010000000100000001000000010000004F -S3156000D770010000000100000001000000010000003F -S3156000D780010000000100000001000000010000002F -S3156000D790010000000100000001000000010000001F -S3156000D7A0010000000100000001000000010000000F -S3156000D7B001000000010000000100000001000000FF -S3156000D7C001000000010000000100000001000000EF -S3156000D7D001000000010000000100000001000000DF -S3156000D7E001000000010000000100000001000000CF -S3156000D7F001000000010000000100000001000000BF -S3156000D80001000000010000000100000001000000AE -S3156000D810010000000100000001000000010000009E -S3156000D820010000000100000001000000010000008E -S3156000D830010000000100000001000000010000007E -S3156000D840010000000100000001000000010000006E -S3156000D850010000000100000001000000010000005E -S3156000D860010000000100000001000000010000004E -S3156000D870010000000100000001000000010000003E -S3156000D880010000000100000001000000010000002E -S3156000D890010000000100000001000000010000001E -S3156000D8A0010000000100000001000000010000000E -S3156000D8B001000000010000000100000001000000FE -S3156000D8C001000000010000000100000001000000EE -S3156000D8D001000000010000000100000001000000DE -S3156000D8E001000000010000000100000001000000CE -S3156000D8F001000000010000000100000001000000BE -S3156000D90001000000010000000100000001000000AD -S3156000D910010000000100000001000000010000009D -S3156000D920010000000100000001000000010000008D -S3156000D930010000000100000001000000010000007D -S3156000D940010000000100000001000000010000006D -S3156000D950010000000100000001000000010000005D -S3156000D960010000000100000001000000010000004D -S3156000D970010000000100000001000000010000003D -S3156000D980010000000100000001000000010000002D -S3156000D990010000000100000001000000010000001D -S3156000D9A0010000000100000001000000010000000D -S3156000D9B001000000010000000100000001000000FD -S3156000D9C001000000010000000100000001000000ED -S3156000D9D001000000010000000100000001000000DD -S3156000D9E001000000010000000100000001000000CD -S3156000D9F001000000010000000100000001000000BD -S3156000DA0001000000010000000100000001000000AC -S3156000DA10010000000100000001000000010000009C -S3156000DA20010000000100000001000000010000008C -S3156000DA30010000000100000001000000010000007C -S3156000DA40010000000100000001000000010000006C -S3156000DA50010000000100000001000000010000005C -S3156000DA60010000000100000001000000010000004C -S3156000DA70010000000100000001000000010000003C -S3156000DA80010000000100000001000000010000002C -S3156000DA90010000000100000001000000010000001C -S3156000DAA0010000000100000001000000010000000C -S3156000DAB001000000010000000100000001000000FC -S3156000DAC001000000010000000100000001000000EC -S3156000DAD001000000010000000100000001000000DC -S3156000DAE001000000010000000100000001000000CC -S3156000DAF001000000010000000100000001000000BC -S3156000DB0001000000010000000100000001000000AB -S3156000DB10010000000100000001000000010000009B -S3156000DB20010000000100000001000000010000008B -S3156000DB30010000000100000001000000010000007B -S3156000DB40010000000100000001000000010000006B -S3156000DB50010000000100000001000000010000005B -S3156000DB60010000000100000001000000010000004B -S3156000DB70010000000100000001000000010000003B -S3156000DB80010000000100000001000000010000002B -S3156000DB90010000000100000001000000010000001B -S3156000DBA0010000000100000001000000010000000B -S3156000DBB001000000010000000100000001000000FB -S3156000DBC001000000010000000100000001000000EB -S3156000DBD001000000010000000100000001000000DB -S3156000DBE001000000010000000100000001000000CB -S3156000DBF001000000010000000100000001000000BB -S3156000DC0001000000010000000100000001000000AA -S3156000DC10010000000100000001000000010000009A -S3156000DC20010000000100000001000000010000008A -S3156000DC30010000000100000001000000010000007A -S3156000DC40010000000100000001000000010000006A -S3156000DC50010000000100000001000000010000005A -S3156000DC60010000000100000001000000010000004A -S3156000DC70010000000100000001000000010000003A -S3156000DC80010000000100000001000000010000002A -S3156000DC90010000000100000001000000010000001A -S3156000DCA0010000000100000001000000010000000A -S3156000DCB001000000010000000100000001000000FA -S3156000DCC001000000010000000100000001000000EA -S3156000DCD001000000010000000100000001000000DA -S3156000DCE001000000010000000100000001000000CA -S3156000DCF001000000010000000100000001000000BA -S3156000DD0001000000010000000100000001000000A9 -S3156000DD100100000001000000010000000100000099 -S3156000DD200100000001000000010000000100000089 -S3156000DD300100000001000000010000000100000079 -S3156000DD400100000001000000010000000100000069 -S3156000DD500100000001000000010000000100000059 -S3156000DD600100000001000000010000000100000049 -S3156000DD700100000001000000010000000100000039 -S3156000DD800100000001000000010000000100000029 -S3156000DD900100000001000000010000000100000019 -S3156000DDA00100000001000000010000000100000009 -S3156000DDB001000000010000000100000001000000F9 -S3156000DDC001000000010000000100000001000000E9 -S3156000DDD001000000010000000100000001000000D9 -S3156000DDE001000000010000000100000001000000C9 -S3156000DDF001000000010000000100000001000000B9 -S3156000DE0001000000010000000100000001000000A8 -S3156000DE100100000001000000010000000100000098 -S3156000DE200100000001000000010000000100000088 -S3156000DE300100000001000000010000000100000078 -S3156000DE400100000001000000010000000100000068 -S3156000DE500100000001000000010000000100000058 -S3156000DE600100000001000000010000000100000048 -S3156000DE700100000001000000010000000100000038 -S3156000DE800100000001000000010000000100000028 -S3156000DE900100000001000000010000000100000018 -S3156000DEA00100000001000000010000000100000008 -S3156000DEB001000000010000000100000001000000F8 -S3156000DEC001000000010000000100000001000000E8 -S3156000DED001000000010000000100000001000000D8 -S3156000DEE001000000010000000100000001000000C8 -S3156000DEF001000000010000000100000001000000B8 -S3156000DF0001000000010000000100000001000000A7 -S3156000DF100100000001000000010000000100000097 -S3156000DF200100000001000000010000000100000087 -S3156000DF300100000001000000010000000100000077 -S3156000DF400100000001000000010000000100000067 -S3156000DF500100000001000000010000000100000057 -S3156000DF600100000001000000010000000100000047 -S3156000DF700100000001000000010000000100000037 -S3156000DF800100000001000000010000000100000027 -S3156000DF900100000001000000010000000100000017 -S3156000DFA00100000001000000010000000100000007 -S3156000DFB001000000010000000100000001000000F7 -S3156000DFC001000000010000000100000001000000E7 -S3156000DFD001000000010000000100000001000000D7 -S3156000DFE001000000010000000100000001000000C7 -S3156000DFF001000000010000000100000001000000B7 -S3156000E00001000000010000000100000001000000A6 -S3156000E0100100000001000000010000000100000096 -S3156000E0200100000001000000010000000100000086 -S3156000E0300100000001000000010000000100000076 -S3156000E0400100000001000000010000000100000066 -S3156000E0500100000001000000010000000100000056 -S3156000E0600100000001000000010000000100000046 -S3156000E0700100000001000000010000000100000036 -S3156000E0800100000001000000010000000100000026 -S3156000E0900100000001000000010000000100000016 -S3156000E0A00100000001000000010000000100000006 -S3156000E0B001000000010000000100000001000000F6 -S3156000E0C001000000010000000100000001000000E6 -S3156000E0D001000000010000000100000001000000D6 -S3156000E0E001000000010000000100000001000000C6 -S3156000E0F001000000010000000100000001000000B6 -S3156000E10001000000010000000100000001000000A5 -S3156000E1100100000001000000010000000100000095 -S3156000E1200100000001000000010000000100000085 -S3156000E1300100000001000000010000000100000075 -S3156000E1400100000001000000010000000100000065 -S3156000E1500100000001000000010000000100000055 -S3156000E1600100000001000000010000000100000045 -S3156000E1700100000001000000010000000100000035 -S3156000E1800100000001000000010000000100000025 -S3156000E1900100000001000000010000000100000015 -S3156000E1A00100000001000000010000000100000005 -S3156000E1B001000000010000000100000001000000F5 -S3156000E1C001000000010000000100000001000000E5 -S3156000E1D001000000010000000100000001000000D5 -S3156000E1E001000000010000000100000001000000C5 -S3156000E1F001000000010000000100000001000000B5 -S3156000E20001000000010000000100000001000000A4 -S3156000E2100100000001000000010000000100000094 -S3156000E2200100000001000000010000000100000084 -S3156000E2300100000001000000010000000100000074 -S3156000E2400100000001000000010000000100000064 -S3156000E2500100000001000000010000000100000054 -S3156000E2600100000001000000010000000100000044 -S3156000E2700100000001000000010000000100000034 -S3156000E2800100000001000000010000000100000024 -S3156000E2900100000001000000010000000100000014 -S3156000E2A00100000001000000010000000100000004 -S3156000E2B001000000010000000100000001000000F4 -S3156000E2C001000000010000000100000001000000E4 -S3156000E2D001000000010000000100000001000000D4 -S3156000E2E001000000010000000100000001000000C4 -S3156000E2F001000000010000000100000001000000B4 -S3156000E30001000000010000000100000001000000A3 -S3156000E3100100000001000000010000000100000093 -S3156000E3200100000001000000010000000100000083 -S3156000E3300100000001000000010000000100000073 -S3156000E3400100000001000000010000000100000063 -S3156000E3500100000001000000010000000100000053 -S3156000E3600100000001000000010000000100000043 -S3156000E3700100000001000000010000000100000033 -S3156000E3800100000001000000010000000100000023 -S3156000E3900100000001000000010000000100000013 -S3156000E3A00100000001000000010000000100000003 -S3156000E3B001000000010000000100000001000000F3 -S3156000E3C001000000010000000100000001000000E3 -S3156000E3D001000000010000000100000001000000D3 -S3156000E3E001000000010000000100000001000000C3 -S3156000E3F001000000010000000100000001000000B3 -S3156000E40001000000010000000100000001000000A2 -S3156000E4100100000001000000010000000100000092 -S3156000E4200100000001000000010000000100000082 -S3156000E4300100000001000000010000000100000072 -S3156000E4400100000001000000010000000100000062 -S3156000E4500100000001000000010000000100000052 -S3156000E4600100000001000000010000000100000042 -S3156000E4700100000001000000010000000100000032 -S3156000E4800100000001000000010000000100000022 -S3156000E4900100000001000000010000000100000012 -S3156000E4A00100000001000000010000000100000002 -S3156000E4B001000000010000000100000001000000F2 -S3156000E4C001000000010000000100000001000000E2 -S3156000E4D001000000010000000100000001000000D2 -S3156000E4E001000000010000000100000001000000C2 -S3156000E4F001000000010000000100000001000000B2 -S3156000E50001000000010000000100000001000000A1 -S3156000E5100100000001000000010000000100000091 -S3156000E5200100000001000000010000000100000081 -S3156000E5300100000001000000010000000100000071 -S3156000E5400100000001000000010000000100000061 -S3156000E5500100000001000000010000000100000051 -S3156000E5600100000001000000010000000100000041 -S3156000E5700100000001000000010000000100000031 -S3156000E5800100000001000000010000000100000021 -S3156000E5900100000001000000010000000100000011 -S3156000E5A00100000001000000010000000100000001 -S3156000E5B001000000010000000100000001000000F1 -S3156000E5C001000000010000000100000001000000E1 -S3156000E5D001000000010000000100000001000000D1 -S3156000E5E001000000010000000100000001000000C1 -S3156000E5F001000000010000000100000001000000B1 -S3156000E60001000000010000000100000001000000A0 -S3156000E6100100000001000000010000000100000090 -S3156000E6200100000001000000010000000100000080 -S3156000E6300100000001000000010000000100000070 -S3156000E6400100000001000000010000000100000060 -S3156000E6500100000001000000010000000100000050 -S3156000E6600100000001000000010000000100000040 -S3156000E6700100000001000000010000000100000030 -S3156000E6800100000001000000010000000100000020 -S3156000E6900100000001000000010000000100000010 -S3156000E6A00100000001000000010000000100000000 -S3156000E6B001000000010000000100000001000000F0 -S3156000E6C001000000010000000100000001000000E0 -S3156000E6D001000000010000000100000001000000D0 -S3156000E6E001000000010000000100000001000000C0 -S3156000E6F001000000010000000100000001000000B0 -S3156000E700010000000100000001000000010000009F -S3156000E710010000000100000001000000010000008F -S3156000E720010000000100000001000000010000007F -S3156000E730010000000100000001000000010000006F -S3156000E740010000000100000001000000010000005F -S3156000E750010000000100000001000000010000004F -S3156000E760010000000100000001000000010000003F -S3156000E770010000000100000001000000010000002F -S3156000E780010000000100000001000000010000001F -S3156000E790010000000100000001000000010000000F -S3156000E7A001000000010000000100000001000000FF -S3156000E7B001000000010000000100000001000000EF -S3156000E7C001000000010000000100000001000000DF -S3156000E7D001000000010000000100000001000000CF -S3156000E7E001000000010000000100000001000000BF -S3156000E7F001000000010000000100000001000000AF -S3156000E800010000000100000001000000010000009E -S3156000E810010000000100000001000000010000008E -S3156000E820010000000100000001000000010000007E -S3156000E830010000000100000001000000010000006E -S3156000E840010000000100000001000000010000005E -S3156000E850010000000100000001000000010000004E -S3156000E860010000000100000001000000010000003E -S3156000E870010000000100000001000000010000002E -S3156000E880010000000100000001000000010000001E -S3156000E890010000000100000001000000010000000E -S3156000E8A001000000010000000100000001000000FE -S3156000E8B001000000010000000100000001000000EE -S3156000E8C001000000010000000100000001000000DE -S3156000E8D001000000010000000100000001000000CE -S3156000E8E001000000010000000100000001000000BE -S3156000E8F001000000010000000100000001000000AE -S3156000E900010000000100000001000000010000009D -S3156000E910010000000100000001000000010000008D -S3156000E920010000000100000001000000010000007D -S3156000E930010000000100000001000000010000006D -S3156000E940010000000100000001000000010000005D -S3156000E950010000000100000001000000010000004D -S3156000E960010000000100000001000000010000003D -S3156000E970010000000100000001000000010000002D -S3156000E980010000000100000001000000010000001D -S3156000E990010000000100000001000000010000000D -S3156000E9A001000000010000000100000001000000FD -S3156000E9B001000000010000000100000001000000ED -S3156000E9C001000000010000000100000001000000DD -S3156000E9D001000000010000000100000001000000CD -S3156000E9E001000000010000000100000001000000BD -S3156000E9F001000000010000000100000001000000AD -S3156000EA00010000000100000001000000010000009C -S3156000EA10010000000100000001000000010000008C -S3156000EA20010000000100000001000000010000007C -S3156000EA30010000000100000001000000010000006C -S3156000EA40010000000100000001000000010000005C -S3156000EA50010000000100000001000000010000004C -S3156000EA60010000000100000001000000010000003C -S3156000EA70010000000100000001000000010000002C -S3156000EA80010000000100000001000000010000001C -S3156000EA90010000000100000001000000010000000C -S3156000EAA001000000010000000100000001000000FC -S3156000EAB001000000010000000100000001000000EC -S3156000EAC001000000010000000100000001000000DC -S3156000EAD001000000010000000100000001000000CC -S3156000EAE001000000010000000100000001000000BC -S3156000EAF001000000010000000100000001000000AC -S3156000EB00010000000100000001000000010000009B -S3156000EB10010000000100000001000000010000008B -S3156000EB20010000000100000001000000010000007B -S3156000EB30010000000100000001000000010000006B -S3156000EB40010000000100000001000000010000005B -S3156000EB50010000000100000001000000010000004B -S3156000EB60010000000100000001000000010000003B -S3156000EB70010000000100000001000000010000002B -S3156000EB80010000000100000001000000010000001B -S3156000EB90010000000100000001000000010000000B -S3156000EBA001000000010000000100000001000000FB -S3156000EBB001000000010000000100000001000000EB -S3156000EBC001000000010000000100000001000000DB -S3156000EBD001000000010000000100000001000000CB -S3156000EBE001000000010000000100000001000000BB -S3156000EBF001000000010000000100000001000000AB -S3156000EC00010000000100000001000000010000009A -S3156000EC10010000000100000001000000010000008A -S3156000EC20010000000100000001000000010000007A -S3156000EC30010000000100000001000000010000006A -S3156000EC40010000000100000001000000010000005A -S3156000EC50010000000100000001000000010000004A -S3156000EC60010000000100000001000000010000003A -S3156000EC70010000000100000001000000010000002A -S3156000EC80010000000100000001000000010000001A -S3156000EC90010000000100000001000000010000000A -S3156000ECA001000000010000000100000001000000FA -S3156000ECB001000000010000000100000001000000EA -S3156000ECC001000000010000000100000001000000DA -S3156000ECD001000000010000000100000001000000CA -S3156000ECE001000000010000000100000001000000BA -S3156000ECF001000000010000000100000001000000AA -S3156000ED000100000001000000010000000100000099 -S3156000ED100100000001000000010000000100000089 -S3156000ED200100000001000000010000000100000079 -S3156000ED300100000001000000010000000100000069 -S3156000ED400100000001000000010000000100000059 -S3156000ED500100000001000000010000000100000049 -S3156000ED600100000001000000010000000100000039 -S3156000ED700100000001000000010000000100000029 -S3156000ED800100000001000000010000000100000019 -S3156000ED900100000001000000010000000100000009 -S3156000EDA001000000010000000100000001000000F9 -S3156000EDB001000000010000000100000001000000E9 -S3156000EDC001000000010000000100000001000000D9 -S3156000EDD001000000010000000100000001000000C9 -S3156000EDE001000000010000000100000001000000B9 -S3156000EDF001000000010000000100000001000000A9 -S3156000EE000100000001000000010000000100000098 -S3156000EE100100000001000000010000000100000088 -S3156000EE200100000001000000010000000100000078 -S3156000EE300100000001000000010000000100000068 -S3156000EE400100000001000000010000000100000058 -S3156000EE500100000001000000010000000100000048 -S3156000EE600100000001000000010000000100000038 -S3156000EE700100000001000000010000000100000028 -S3156000EE800100000001000000010000000100000018 -S3156000EE900100000001000000010000000100000008 -S3156000EEA001000000010000000100000001000000F8 -S3156000EEB001000000010000000100000001000000E8 -S3156000EEC001000000010000000100000001000000D8 -S3156000EED001000000010000000100000001000000C8 -S3156000EEE001000000010000000100000001000000B8 -S3156000EEF001000000010000000100000001000000A8 -S3156000EF000100000001000000010000000100000097 -S3156000EF100100000001000000010000000100000087 -S3156000EF200100000001000000010000000100000077 -S3156000EF300100000001000000010000000100000067 -S3156000EF400100000001000000010000000100000057 -S3156000EF500100000001000000010000000100000047 -S3156000EF600100000001000000010000000100000037 -S3156000EF700100000001000000010000000100000027 -S3156000EF800100000001000000010000000100000017 -S3156000EF900100000001000000010000000100000007 -S3156000EFA001000000010000000100000001000000F7 -S3156000EFB001000000010000000100000001000000E7 -S3156000EFC001000000010000000100000001000000D7 -S3156000EFD001000000010000000100000001000000C7 -S3156000EFE001000000010000000100000001000000B7 -S3156000EFF001000000010000000100000001000000A7 -S3156000F0000100000001000000010000000100000096 -S3156000F0100100000001000000010000000100000086 -S3156000F0200100000001000000010000000100000076 -S3156000F0300100000001000000010000000100000066 -S3156000F0400100000001000000010000000100000056 -S3156000F0500100000001000000010000000100000046 -S3156000F0600100000001000000010000000100000036 -S3156000F0700100000001000000010000000100000026 -S3156000F0800100000001000000010000000100000016 -S3156000F0900100000001000000010000000100000006 -S3156000F0A001000000010000000100000001000000F6 -S3156000F0B001000000010000000100000001000000E6 -S3156000F0C001000000010000000100000001000000D6 -S3156000F0D001000000010000000100000001000000C6 -S3156000F0E001000000010000000100000001000000B6 -S3156000F0F001000000010000000100000001000000A6 -S3156000F1000100000001000000010000000100000095 -S3156000F1100100000001000000010000000100000085 -S3156000F1200100000001000000010000000100000075 -S3156000F1300100000001000000010000000100000065 -S3156000F1400100000001000000010000000100000055 -S3156000F1500100000001000000010000000100000045 -S3156000F1600100000001000000010000000100000035 -S3156000F1700100000001000000010000000100000025 -S3156000F1800100000001000000010000000100000015 -S3156000F1900100000001000000010000000100000005 -S3156000F1A001000000010000000100000001000000F5 -S3156000F1B001000000010000000100000001000000E5 -S3156000F1C001000000010000000100000001000000D5 -S3156000F1D001000000010000000100000001000000C5 -S3156000F1E001000000010000000100000001000000B5 -S3156000F1F001000000010000000100000001000000A5 -S3156000F2000100000001000000010000000100000094 -S3156000F2100100000001000000010000000100000084 -S3156000F2200100000001000000010000000100000074 -S3156000F2300100000001000000010000000100000064 -S3156000F2400100000001000000010000000100000054 -S3156000F2500100000001000000010000000100000044 -S3156000F2600100000001000000010000000100000034 -S3156000F2700100000001000000010000000100000024 -S3156000F2800100000001000000010000000100000014 -S3156000F2900100000001000000010000000100000004 -S3156000F2A001000000010000000100000001000000F4 -S3156000F2B001000000010000000100000001000000E4 -S3156000F2C001000000010000000100000001000000D4 -S3156000F2D001000000010000000100000001000000C4 -S3156000F2E001000000010000000100000001000000B4 -S3156000F2F001000000010000000100000001000000A4 -S3156000F3000100000001000000010000000100000093 -S3156000F3100100000001000000010000000100000083 -S3156000F3200100000001000000010000000100000073 -S3156000F3300100000001000000010000000100000063 -S3156000F3400100000001000000010000000100000053 -S3156000F3500100000001000000010000000100000043 -S3156000F3600100000001000000010000000100000033 -S3156000F3700100000001000000010000000100000023 -S3156000F3800100000001000000010000000100000013 -S3156000F3900100000001000000010000000100000003 -S3156000F3A001000000010000000100000001000000F3 -S3156000F3B001000000010000000100000001000000E3 -S3156000F3C001000000010000000100000001000000D3 -S3156000F3D001000000010000000100000001000000C3 -S3156000F3E001000000010000000100000001000000B3 -S3156000F3F001000000010000000100000001000000A3 -S3156000F4000100000001000000010000000100000092 -S3156000F4100100000001000000010000000100000082 -S3156000F4200100000001000000010000000100000072 -S3156000F4300100000001000000010000000100000062 -S3156000F4400100000001000000010000000100000052 -S3156000F4500100000001000000010000000100000042 -S3156000F4600100000001000000010000000100000032 -S3156000F4700100000001000000010000000100000022 -S3156000F4800100000001000000010000000100000012 -S3156000F4900100000001000000010000000100000002 -S3156000F4A001000000010000000100000001000000F2 -S3156000F4B001000000010000000100000001000000E2 -S3156000F4C001000000010000000100000001000000D2 -S3156000F4D001000000010000000100000001000000C2 -S3156000F4E001000000010000000100000001000000B2 -S3156000F4F001000000010000000100000001000000A2 -S3156000F5000100000001000000010000000100000091 -S3156000F5100100000001000000010000000100000081 -S3156000F5200100000001000000010000000100000071 -S3156000F5300100000001000000010000000100000061 -S3156000F5400100000001000000010000000100000051 -S3156000F5500100000001000000010000000100000041 -S3156000F5600100000001000000010000000100000031 -S3156000F5700100000001000000010000000100000021 -S3156000F5800100000001000000010000000100000011 -S3156000F5900100000001000000010000000100000001 -S3156000F5A001000000010000000100000001000000F1 -S3156000F5B001000000010000000100000001000000E1 -S3156000F5C001000000010000000100000001000000D1 -S3156000F5D001000000010000000100000001000000C1 -S3156000F5E001000000010000000100000001000000B1 -S3156000F5F001000000010000000100000001000000A1 -S3156000F6000100000001000000010000000100000090 -S3156000F6100100000001000000010000000100000080 -S3156000F6200100000001000000010000000100000070 -S3156000F6300100000001000000010000000100000060 -S3156000F6400100000001000000010000000100000050 -S3156000F6500100000001000000010000000100000040 -S3156000F6600100000001000000010000000100000030 -S3156000F6700100000001000000010000000100000020 -S3156000F6800100000001000000010000000100000010 -S3156000F6900100000001000000010000000100000000 -S3156000F6A001000000010000000100000001000000F0 -S3156000F6B001000000010000000100000001000000E0 -S3156000F6C001000000010000000100000001000000D0 -S3156000F6D001000000010000000100000001000000C0 -S3156000F6E001000000010000000100000001000000B0 -S3156000F6F001000000010000000100000001000000A0 -S3156000F700010000000100000001000000010000008F -S3156000F710010000000100000001000000010000007F -S3156000F720010000000100000001000000010000006F -S3156000F730010000000100000001000000010000005F -S3156000F740010000000100000001000000010000004F -S3156000F750010000000100000001000000010000003F -S3156000F760010000000100000001000000010000002F -S3156000F770010000000100000001000000010000001F -S3156000F780010000000100000001000000010000000F -S3156000F79001000000010000000100000001000000FF -S3156000F7A001000000010000000100000001000000EF -S3156000F7B001000000010000000100000001000000DF -S3156000F7C001000000010000000100000001000000CF -S3156000F7D001000000010000000100000001000000BF -S3156000F7E001000000010000000100000001000000AF -S3156000F7F0010000000100000001000000010000009F -S3156000F800010000000100000001000000010000008E -S3156000F810010000000100000001000000010000007E -S3156000F820010000000100000001000000010000006E -S3156000F830010000000100000001000000010000005E -S3156000F840010000000100000001000000010000004E -S3156000F850010000000100000001000000010000003E -S3156000F860010000000100000001000000010000002E -S3156000F870010000000100000001000000010000001E -S3156000F880010000000100000001000000010000000E -S3156000F89001000000010000000100000001000000FE -S3156000F8A001000000010000000100000001000000EE -S3156000F8B001000000010000000100000001000000DE -S3156000F8C001000000010000000100000001000000CE -S3156000F8D001000000010000000100000001000000BE -S3156000F8E001000000010000000100000001000000AE -S3156000F8F0010000000100000001000000010000009E -S3156000F900010000000100000001000000010000008D -S3156000F910010000000100000001000000010000007D -S3156000F920010000000100000001000000010000006D -S3156000F930010000000100000001000000010000005D -S3156000F940010000000100000001000000010000004D -S3156000F950010000000100000001000000010000003D -S3156000F960010000000100000001000000010000002D -S3156000F970010000000100000001000000010000001D -S3156000F980010000000100000001000000010000000D -S3156000F99001000000010000000100000001000000FD -S3156000F9A001000000010000000100000001000000ED -S3156000F9B001000000010000000100000001000000DD -S3156000F9C001000000010000000100000001000000CD -S3156000F9D001000000010000000100000001000000BD -S3156000F9E001000000010000000100000001000000AD -S3156000F9F0010000000100000001000000010000009D -S3156000FA00010000000100000001000000010000008C -S3156000FA10010000000100000001000000010000007C -S3156000FA20010000000100000001000000010000006C -S3156000FA30010000000100000001000000010000005C -S3156000FA40010000000100000001000000010000004C -S3156000FA50010000000100000001000000010000003C -S3156000FA60010000000100000001000000010000002C -S3156000FA70010000000100000001000000010000001C -S3156000FA80010000000100000001000000010000000C -S3156000FA9001000000010000000100000001000000FC -S3156000FAA001000000010000000100000001000000EC -S3156000FAB001000000010000000100000001000000DC -S3156000FAC001000000010000000100000001000000CC -S3156000FAD001000000010000000100000001000000BC -S3156000FAE001000000010000000100000001000000AC -S3156000FAF0010000000100000001000000010000009C -S3156000FB00010000000100000001000000010000008B -S3156000FB10010000000100000001000000010000007B -S3156000FB20010000000100000001000000010000006B -S3156000FB30010000000100000001000000010000005B -S3156000FB40010000000100000001000000010000004B -S3156000FB50010000000100000001000000010000003B -S3156000FB60010000000100000001000000010000002B -S3156000FB70010000000100000001000000010000001B -S3156000FB80010000000100000001000000010000000B -S3156000FB9001000000010000000100000001000000FB -S3156000FBA001000000010000000100000001000000EB -S3156000FBB001000000010000000100000001000000DB -S3156000FBC001000000010000000100000001000000CB -S3156000FBD001000000010000000100000001000000BB -S3156000FBE001000000010000000100000001000000AB -S3156000FBF0010000000100000001000000010000009B -S3156000FC00010000000100000001000000010000008A -S3156000FC10010000000100000001000000010000007A -S3156000FC20010000000100000001000000010000006A -S3156000FC30010000000100000001000000010000005A -S3156000FC40010000000100000001000000010000004A -S3156000FC50010000000100000001000000010000003A -S3156000FC60010000000100000001000000010000002A -S3156000FC70010000000100000001000000010000001A -S3156000FC80010000000100000001000000010000000A -S3156000FC9001000000010000000100000001000000FA -S3156000FCA001000000010000000100000001000000EA -S3156000FCB001000000010000000100000001000000DA -S3156000FCC001000000010000000100000001000000CA -S3156000FCD001000000010000000100000001000000BA -S3156000FCE001000000010000000100000001000000AA -S3156000FCF0010000000100000001000000010000009A -S3156000FD000100000001000000010000000100000089 -S3156000FD100100000001000000010000000100000079 -S3156000FD200100000001000000010000000100000069 -S3156000FD300100000001000000010000000100000059 -S3156000FD400100000001000000010000000100000049 -S3156000FD500100000001000000010000000100000039 -S3156000FD600100000001000000010000000100000029 -S3156000FD700100000001000000010000000100000019 -S3156000FD800100000001000000010000000100000009 -S3156000FD9001000000010000000100000001000000F9 -S3156000FDA001000000010000000100000001000000E9 -S3156000FDB001000000010000000100000001000000D9 -S3156000FDC001000000010000000100000001000000C9 -S3156000FDD001000000010000000100000001000000B9 -S3156000FDE001000000010000000100000001000000A9 -S3156000FDF00100000001000000010000000100000099 -S3156000FE000100000001000000010000000100000088 -S3156000FE100100000001000000010000000100000078 -S3156000FE200100000001000000010000000100000068 -S3156000FE300100000001000000010000000100000058 -S3156000FE400100000001000000010000000100000048 -S3156000FE500100000001000000010000000100000038 -S3156000FE600100000001000000010000000100000028 -S3156000FE700100000001000000010000000100000018 -S3156000FE800100000001000000010000000100000008 -S3156000FE9001000000010000000100000001000000F8 -S3156000FEA001000000010000000100000001000000E8 -S3156000FEB001000000010000000100000001000000D8 -S3156000FEC001000000010000000100000001000000C8 -S3156000FED001000000010000000100000001000000B8 -S3156000FEE001000000010000000100000001000000A8 -S3156000FEF00100000001000000010000000100000098 -S3156000FF000100000001000000010000000100000087 -S3156000FF100100000001000000010000000100000077 -S3156000FF200100000001000000010000000100000067 -S3156000FF300100000001000000010000000100000057 -S3156000FF400100000001000000010000000100000047 -S3156000FF500100000001000000010000000100000037 -S3156000FF600100000001000000010000000100000027 -S3156000FF700100000001000000010000000100000017 -S3156000FF800100000001000000010000000100000007 -S3156000FF9001000000010000000100000001000000F7 -S3156000FFA001000000010000000100000001000000E7 -S3156000FFB001000000010000000100000001000000D7 -S3156000FFC001000000010000000100000001000000C7 -S3156000FFD001000000010000000100000001000000B7 -S3156000FFE001000000010000000100000001000000A7 -S3156000FFF00100000001000000010000000100000097 -S315600100009DE3BF987FFFC4741100403080A2200039 -S31560010010128000F382102001C226200CC026200423 -S31560010020C0260000C026200882102002C2262008B1 -S31560010030C0260000C026000082102003C2262008C8 -S315600100409A102083DA262008A2102063C0260000B9 -S31560010050A2847FFF1CBFFFFE01000000A210206387 -S31560010060C2060000A2847FFF1CBFFFFE8210200231 -S31560010070C2262008A4062004C284802080886004E9 -S3156001008002BFFFFE01000000C0262008C026000056 -S31560010090A6102001C2848020833860148208603FE4 -S315600100A080A0600122800093A604E00182102003F3 -S315600100B0C2262008C28480208088600102800007F1 -S315600100C080886004C2860020C284802080886001A6 -S315600100D012BFFFFD8088600402BFFFFB808860025B -S315600100E002BFFFF901000000C0262008C0262004D7 -S315600100F080A4E0010480000821180080C284802069 -S315600101008208608080A06001028000AE010000006C -S3156001011021180080DA4C20F0DA260000C2848020A3 -S315600101208208600480A060010280009A01000000DC -S31560010130C284802080A4E001048000208210200116 -S31560010140A210200180A440131680000D2B18008098 -S31560010150A81420F0E00560E8901000114000247AB0 -S3156001016092100010C24D0008A2046001C226000070 -S3156001017080A4401306BFFFFA90100011C28480204C -S315600101808208608080A06001028000920100000008 -S31560010190C2848020833860148208603F80A0401347 -S315600101A002800004010000007FFFC4159010200644 -S315600101B0C284802082102001C226200CDA8480202D -S315600101C0808B60011280006801000000821020832C -S315600101D0C226200880A4E0010280005201000000CE -S315600101E0C28480208088640002BFFFFE0100000097 -S315600101F0C284802080886001028000530100000073 -S3156001020080A4E00124800012A2102000C284802014 -S315600102108330601A80A04013028000040100000050 -S315600102207FFFC3F790102009C28480208088610017 -S315600102300280005501000000C2848020808864002D -S315600102400280004D01000000A210200080A440132E -S315600102501680001203180080A81060F02B18008029 -S31560010260E08600209010001140002437D20560E836 -S31560010270C24D0008A204600180A040100280000403 -S315600102809010200C7FFFC3DE0100000080A44013A4 -S3156001029006BFFFF40100000080A4E0010480000FA6 -S315600102A001000000C28480208088610012800042C3 -S315600102B001000000C28480208330601A80A0600043 -S315600102C01280003A01000000C284802080886400A8 -S315600102D01280003301000000C284802080886001A2 -S315600102E01280001D01000000C02620083080003CFD -S315600102F0C0260000C2848020833860148208603F73 -S3156001030080A0401322BFFFFBA604E00180A4E001A8 -S3156001031034BFFF67A604FFFF10BFFF66821020038C -S31560010320C28480208088600112BFFFB20100000094 -S31560010330C28480208088600102BFFFFA010000004C -S3156001034030BFFFAC7FFFC3AE9010200810BFFFAE79 -S3156001035080A4E0017FFFC3AA9010200CC02620086C -S315600103603080001F7FFFC3A69010200710BFFF9942 -S31560010370821020837FFFC3A29010200B10BFFFB4B1 -S31560010380A21020007FFFC39E9010200A30BFFFABF2 -S315600103907FFFC39B9010200130BFFF667FFFC3982C -S315600103A09010200B30BFFFCD7FFFC3959010200EBC -S315600103B030BFFFC67FFFC3929010200D30BFFFBED6 -S315600103C07FFFC38F9010200410BFFF532118008058 -S315600103D07FFFC38B9010200530BFFF6E81C7E00899 -S315600103E091E8200017180143DA02E080900220109C -S315600103F09B2B60029812E080D023000DC202E08040 -S3156001040082006001C222E08081C3E0080100000031 -S31560010410C0220000C022204082103FFFC222200C71 -S315600104209A10200103180143DA20608081C3E00835 -S31560010430010000009DE3BF7803180144F02060CC01 -S315600104407FFFC365110040347FFFFFF290100018F3 -S31560010450A010200123180040921000104000298F3F -S31560010460901463E4A004200180A4200F04BFFFFC64 -S3156001047092100010C20620208330601CAE0060011D -S31560010480AC10200080A58017168000ED0300003FA8 -S31560010490B81063FE2B1801430300002AB61062AA46 -S315600104A0BA102001B410001CB2156080832DA00C17 -S315600104B080A5E00114800119A600401880A5A0005E -S315600104C01280010A01000000F824E008C204E00875 -S315600104D080A0401C02800004010000007FFFC34829 -S315600104E090102001F824E040C204E04080A0401C46 -S315600104F002800004010000007FFFC34190102002CA -S31560010500C204E00880A0600012BFFFFE0100000087 -S31560010510C205608080A06010028000052518014335 -S315600105207FFFC3379010200325180143A0102001D7 -S31560010530A414A080A2102020832C20029A244010AB -S31560010540D8048001A004200180A3000D028000046C -S31560010550901020047FFFC32A0100000080A4200FB1 -S3156001056004BFFFF7832C2002FA256080F624C000C1 -S31560010570F424E040C204C00080A0401B0280000455 -S31560010580A010001A7FFFC31E90102005C204E04030 -S3156001059080A0401002800004010000007FFFC318A4 -S315600105A090102005F424E008C204E00880A06000F1 -S315600105B012BFFFFE01000000C205608080A06010CE -S315600105C002800005251801437FFFC30D90102006A8 -S315600105D025180143A0102001A414A080A210201F99 -S315600105E09B2C2002C204800D80A04011A004200132 -S315600105F0A2047FFE02800004901020077FFFC300E3 -S315600106000100000080A4200704BFFFF79B2C200295 -S31560010610A4066028A210201CA0102005C204800038 -S3156001062080A04011A404A004A2047FFE02800004FD -S31560010630901020087FFFC2F201000000A0843FFFF6 -S315600106401CBFFFF701000000FA27BFE8C207BFE839 -S3156001065082006001C227BFECDA07BFEC9A03600132 -S31560010660DA27BFF0C207BFF082006001C227BFF47C -S315600106709A102006DA27BFD8C024C000C024E04003 -S31560010680FA256080A0102002E024E040E024E00822 -S3156001069083444000808861000280000501000000FB -S315600106A0805000018050000180500001C207BFD810 -S315600106B0C227BFDCDA07BFD880A3600602800004C8 -S315600106C0010000007FFFC2CE9010200AE024E008FE -S315600106D001000000C207BFD8C227BFDCDA07BFD856 -S315600106E080A3600602800004010000007FFFC2C48F -S315600106F09010200AE024E00801000000C027BFDC5A -S31560010700C207BFDC80A06000128000960100000075 -S31560010710C204E00880A0600012BFFFFE0100000075 -S31560010720C205608080A06004028000050300003F6E -S315600107307FFFC2B39010200D0300003FC024E0404C -S31560010740821063FEC224E008031801439A10200157 -S31560010750DA206080400003E801000000400003E801 -S3156001076090122F0082103FFFC224E040C204E04095 -S3156001077080A0600002BFFFFE01000000C20560802C -S3156001078080A0600202800004A01560807FFFC29C89 -S315600107909010200EC204200480A0601F0280000415 -S315600107A0010000007FFFC2969010200F400003D227 -S315600107B0A8100010400003D290023F00A010200252 -S315600107C0A4102020400003CC01000000400003CCAF -S315600107D090023F00C2056080A204200180A0401102 -S315600107E002800004901020107FFFC2850100000086 -S315600107F0832C20029A248010D8050001A0100011D4 -S3156001080080A3000D02800004901020117FFFC27C3E -S315600108100100000080A4200F04BFFFEB010000006F -S31560010820C024E040AC05A00182103FFFC224E00C69 -S3156001083080A5801706BFFF1F832DA00C80A5E00150 -S315600108400480004B01000000C0262024C20620243B -S3156001085080A060001280003F0100000021040000BA -S31560010860E0262024C206202480A0401002800005D4 -S31560010870821020017FFFC262901020148210200135 -S31560010880C2262020C0262024C206202480A0401033 -S3156001089002800004010000007FFFC25990102015FC -S315600108A0C0262020C0262024C206202480A0600005 -S315600108B0128000240100000082102002C22620203E -S315600108C0DA062020808B60020280001B0100000096 -S315600108D0C0262020C2062020808860020280002473 -S315600108E001000000308000117FFFFECA90100013E6 -S315600108F09B2DA01CDA24E024C204E0248330601C12 -S3156001090080A0401602BFFEF1010000007FFFC23CDD -S315600109109010201230BFFEED7FFFC234901000169A -S3156001092010BFFEE880A5A0007FFFC2359010201899 -S315600109303080000F7FFFC2329010201730BFFFE575 -S315600109407FFFC22F9010201610BFFFDD821020029C -S315600109507FFFC22B9010201310BFFFC2210400003D -S315600109607FFFC2279010200B30BFFF6A81C7E00866 -S3156001097091E8200003180143DA0060C8C0236008CB -S3156001098081C3E008901020009DE3BF902F180144B9 -S31560010990E205E0CCA004610027180143C2042004EB -S315600109A0F024E0C87FFFC21190102010030180007F -S315600109B0DA04200482106020808B40011280010DD0 -S315600109C001000000DA046100DA27BFF0C2046100A9 -S315600109D080A3400102800005821020017FFFC208CA -S315600109E09010200282102001C2242004DA046100E2 -S315600109F0DA27BFF0C204610080A3400102800120B2 -S31560010A0001000000C0242004DA046100DA27BFF087 -S31560010A10C204610080A340010280000580A7200016 -S31560010A207FFFC1F79010200480A72000128000B7D5 -S31560010A3080A72001B010200180A6001A1680001739 -S31560010A40A8102001108000052518004280A6001A12 -S31560010A5016800013DA04E0C8A206C0189014A174C7 -S31560010A609210001180A4601F14BFFFF9B006200127 -S31560010A704000280A01000000D805E0CCC2032040EE -S31560010A809B2D00118210400DC223204080A6001AC2 -S31560010A9006BFFFF3A206C018DA04E0C89606A003F3 -S31560010AA0C0236004833AE01FC023601098103FFFA3 -S31560010AB08330601EAA02C001D8236014D823600C5B -S31560010AC0A2102000AD3D600280A720000280008A4E -S31560010AD0A810200180A4401C168000ECC204E0C866 -S31560010AE080A7200104800015B010200080A5A00019 -S31560010AF00480001380A0001C9B2C6010832C60185E -S31560010B008210400D992C60088210400C82104011B1 -S31560010B10993D6002DA04E0C8C2236020B006200174 -S31560010B2080A72001048000059A03600480A3001851 -S31560010B3014BFFFFA0100000080A0001CB0603FFFF7 -S31560010B4080A6001A16800016C204E0C8250180003E -S31560010B5080A72000028000058206C01880A72001B8 -S31560010B60028000848206C011C2242004D804E0C831 -S31560010B70832D00189B3E4018C2232008808B60019C -S31560010B80128000859A10000CB006200180A6001A1A -S31560010B9006BFFFF180A72000C204E0C8C02060083C -S31560010BA0808E600112800009B0102000B00620011D -S31560010BB080A6201F14800005833E4018808860014E -S31560010BC022BFFFFCB006200180A72000028000063C -S31560010BD08206C01880A72001028000048216E020E8 -S31560010BE08206C01182106020C2242004DA04E0C8A3 -S31560010BF0832D0018C2236008C203600880A06000CC -S31560010C0012BFFFFE01000000C2042004808860203C -S31560010C100280009801000000DA042004030100004C -S31560010C20808B40010280009001000000DA042004FC -S31560010C3003008000808B4001028000880100000073 -S31560010C40C2042008C227BFF0DA04200CDA27BFF4F9 -S31560010C50C204E0C8992D0018D82060089A100001D6 -S31560010C60C203600880A0600012BFFFFE01000000A1 -S31560010C70C2042004808860200280007501000000A3 -S31560010C80DA04200403010000808B40010280006DBC -S31560010C9001000000DA04200403008000808B40011B -S31560010CA00280006501000000DA042008C207BFF077 -S31560010CB080A0400D02800004010000007FFFC1504A -S31560010CC09010200EDA04200CC207BFF480A0400DFC -S31560010CD002800005030180007FFFC1499010200F4B -S31560010CE003018000C224200480A7200012BFFF7A7E -S31560010CF0A204600180A4600004BFFF7B80A720017D -S31560010D0010800062C204E0C80280003D11180042F2 -S31560010D10B010200080A6001C16BFFF60A81020013D -S31560010D20108000052518004280A6001C16BFFF5CD6 -S31560010D30DA04E0C8A206C0189014A17492100011DA -S31560010D4080A4601F14BFFFF9B0062001400027533D -S31560010D5001000000D805E0CCC20320409B2D0011A4 -S31560010D608210400DC223204010BFFFF180A6001CF7 -S31560010D70F6242004D804E0C8832D00189B3E401851 -S31560010D80C2232008808B600122BFFF81B00620014B -S31560010D909A10000CC203600880A0600012BFFFFEBB -S31560010DA001000000DA04200403010000808B400189 -S31560010DB00280001E01000000DA04200403008000A6 -S31560010DC0808B40010280001601000000E4242004AB -S31560010DD0C20420048088401222BFFF6DB006200144 -S31560010DE07FFFC1079010200710BFFF69B006200181 -S31560010DF07FFFC1039010200130BFFEF39012217472 -S31560010E00400027269210001BDA05E0CC832F001BD9 -S31560010E10C223604010BFFF22DA04E0C87FFFC0F83A -S31560010E209010200630BFFFEA7FFFC0F590102005C5 -S31560010E3030BFFFE27FFFC0F29010200D30BFFF9BF5 -S31560010E407FFFC0EF9010200C30BFFF937FFFC0EC97 -S31560010E509010200B30BFFF8B7FFFC0E99010200AF6 -S31560010E6030BFFF787FFFC0E69010200930BFFF706A -S31560010E707FFFC0E39010200830BFFF687FFFC0E0AE -S31560010E809010200330BFFEE0C020600CDA05E0CC94 -S31560010E90C023604082103FFFC223600C81C7E00817 -S31560010EA091E820009DE3BF983B180144E60760CCBA -S31560010EB07FFFC0CE90102011C024E01CC204E01C4C -S31560010EC080A060000280004801000000C204E01CAE -S31560010ED08330601B80A0401A0A80003F0100000039 -S31560010EE0A410200080A4801A1A8000422D180143A4 -S31560010EF0AA102001AE15A080A32CA002E006401125 -S31560010F007FFFFD4490100013A804A0019B2D4012A1 -S31560010F10832D20108210400DC224E01C9A103FFFE1 -S31560010F20DA24E040D80600119A10201FDA23200443 -S31560010F30A0043FFFDA230000A12C20048204000CE8 -S31560010F409A102005DA206010C0206014EA2060182B -S31560010F509A100001C203601080A0600012BFFFFEFC -S31560010F6001000000A004000CC204201080A06000F3 -S31560010F7002BFFFFE01000000C0242018C205A08048 -S31560010F8080A06002028000069A04A011900480127B -S31560010F907FFFC09B900220039A04A011C205E00462 -S31560010FA080A0400D22800006A410001490048012D7 -S31560010FB07FFFC09390022004A4100014C024E01C9B -S31560010FC080A5001A0ABFFFCEA32CA0021080000ADA -S31560010FD0DA0760CC7FFFC08A9010200210BFFFC283 -S31560010FE0A41020007FFFC0869010200130BFFFB89B -S31560010FF0DA0760CCC023604082103FFFC223600CD9 -S3156001100081C7E00891E820009DE3BF987FFFC08B10 -S315600110100100000080A220000280002680A6200038 -S3156001102012800029010000007FFFC08401000000DA -S31560011030912A20047FFFC06D900220034000186D45 -S315600110400100000080A220001280002B0100000038 -S315600110504000182B01000000400017E40100000069 -S31560011060400002270100000080A6A0001280002D2A -S31560011070031801447FFFC071B41060D0912A200229 -S31560011080C206800880A060001280003080A6200021 -S3156001109012800039010000004000048E010000004A -S315600110A040001E0201000000400015C181E80000F9 -S315600110B07FFFC0491100400C80A6200002BFFFDB04 -S315600110C0010000007FFFC0F5901000197FFFC05B33 -S315600110D001000000912A20047FFFC0449002200392 -S315600110E0400018440100000080A2200002BFFFD921 -S315600110F0010000007FFFC0429010200140001800EF -S3156001110001000000400017B901000000400001FC29 -S315600111100100000080A6A00002BFFFD703180144AA -S3156001112040001DED01000000031801447FFFC0432C -S31560011130B41060D0912A2002C206800880A06000A7 -S3156001114002BFFFD480A620007FFFC03C01000000E3 -S315600111507FFFC03AA0100008912A2002C2068008CB -S315600111609FC040009010001080A6200002BFFFCBF8 -S31560011170010000007FFFC0D990100019400004559E -S315600111800100000040001DC90100000040001588F3 -S3156001119081E800000100000003180143DA0060CC19 -S315600111A09A036001DA2060CC81C3E0080100000087 -S315600111B09DE3BF987FFFC00811004044D806200810 -S315600111C082103FFFC2262004DA060000C206000034 -S315600111D080A340010280006FA60B20078210201FAA -S315600111E0C2262004C226000080A4E00002800033EB -S315600111F082100018A2100013C0206018A2847FFF1D -S3156001120012BFFFFE82006010A210200080A440136E -S315600112101680002B80A4E001A810200FA0100018F2 -S315600112207FFFBFF290100011C0242010E824201423 -S3156001123082102006C2242018DA04201080A3600FD1 -S3156001124002800004010000007FFFBFED90102003C3 -S31560011250E82420189A10200EC204201080A0400DA8 -S3156001126012BFFFFE010000009A837FFF1CBFFFFBD8 -S31560011270A4100010C204201080A0600F12BFFFFEF0 -S3156001128001000000C20420188088601002800035C9 -S3156001129082102010C224A018DA042018808B6010F6 -S315600112A01280003801000000A204600180A440138E -S315600112B006BFFFDCA004201080A4E00114800010AA -S315600112C080A4E0000280000782100018A2100013BB -S315600112D0C0206018A2847FFF12BFFFFE82006010EB -S315600112E021180144C20420CC80A060000280002D38 -S315600112F0111800441080000D921000197FFFBFBBCA -S31560011300901020088210200FC22620189A10202FD4 -S31560011310DA262028C206202080A0600D12BFFFFEBB -S3156001132080A4E00030BFFFE8400025DC90122198E0 -S315600113307FFFFC38D00420CC82102001832840191D -S31560011340DA0420CCC22360409810200FD8262014DE -S315600113508210200DC2262018A7800000308000115F -S315600113607FFFBFA79010200482102010C224A0180E -S31560011370DA042018808B601022BFFFCDA2046001C1 -S315600113807FFFBF9F9010200510BFFFC9A2046001B7 -S315600113907FFFBF9B9010200110BFFF928210201F1C -S315600113A081C7E00881E8000000000000000000003D -S315600113B000000000000000000000000000000000C6 -S315600113C001000000010000000100000001000000B2 -S315600113D0010000000100000081C3E0080100000077 -S315600113E00100000001000000010000000100000092 -S315600113F0010000000100000081C3E0080100000057 -S315600114000100000001000000010000000100000071 -S31560011410010000000100000081C3E0080100000036 -S315600114200100000001000000010000000100000051 -S31560011430010000000100000081C3E0080100000016 -S31560011440D482018090A2000916BFFFFE9612800B1E -S3156001145081C3E0089010000BD48201C090A20009FC -S3156001146016BFFFFE9612800B81C3E0089010000B39 -S3156001147090A22004C0A201A090A22004C0A201A053 -S3156001148090A22004C0A201A090A22004C0A201A043 -S31560011490C0A2018090A2200414BFFFF701000000E2 -S315600114A081C3E0080100000090A22004C0A201E00F -S315600114B090A22004C0A201E090A22004C0A201E093 -S315600114C090A22004C0A201E0C0A201C090A22004A3 -S315600114D014BFFFF70100000081C3E00801000000AE -S315600114E0981000089610000A98A3200814BFFFFF01 -S315600114F0D43B00099810000898A3200814BFFFFF89 -S31560011500C01B00099810000898A32004D60300099F -S3156001151080A2C00A1280000698A3200434BFFFFD92 -S31560011520D603000981C3E0089010200090102001C5 -S31560011530981000089610000A98A3200814BFFFFFB0 -S31560011540D43B00099810000898A32004D60300092B -S3156001155080A2C00A1280000698A3200434BFFFFD52 -S31560011560D603000981C3E008901020009010200185 -S315600115709810000898A32004D2A301A0DA8301A0E1 -S3156001158080A340091280000698A3200414BFFFFCC3 -S31560011590D2A301A081C3E008901020009010200121 -S315600115A09A1000089AA3400AD6A34180D883418045 -S315600115B0981B000B988B0009128000069AA3400ABB -S315600115C014BFFFFBD6A3418081C3E00890102000C1 -S315600115D0901020019A1000089AA3400BD8A241CD21 -S315600115E0C48241CD8418800C8488800A12800006EA -S315600115F09AA3400B14BFFFFBD8A241CD81C3E0087B -S3156001160090102000901020010100000001000000F0 -S31560011610010000001318008092126138D402400064 -S3156001162080A2A0011280000780A0A002D40240001F -S31560011630D4024000952AA002108000050100000036 -S315600116403280000381E80000D402400081E000009E -S3156001165093480000818A602023180045A2146278AD -S31560011660A40460040100000081C4400081CC8000B4 -S3156001167091D0200191D020012680000590002001A3 -S3156001168090222001912A2001912A200281C3E0083B -S315600116900100000081C3E008D082004081C3E008F8 -S315600116A0D2A2004081C3E008D082018081C3E008F4 -S315600116B0D2A2018081C3E008D08201A081C3E00883 -S315600116C0D2A201A081C3E008D08201C081C3E00833 -S315600116D0D2A201C081C3E008D08201E081C3E008E3 -S315600116E0D2A201E081C3E008D2A2000081C3E00872 -S315600116F0D082000081C3E00891480000818A000021 -S3156001170001000000010000000100000081C3E00843 -S315600117100100000081C3E008C0A000A081C3E00809 -S31560011720C0A000C081C3E008D01A0000010000001B -S31560011730010000000100000001000000010000003E -S315600117409DE3BF701318006DCD1A6160CD3FBFE098 -S31560011750111800801B180080C91B61E0C51A21D8C9 -S31560011760C11FBFE095A088C4D53FBFF0D91FBFF0A8 -S3156001177003180080D11861E881AB0A4801000000B6 -S315600117800380002BC13FBFD8F91FBFD8B5A0055C48 -S31560011790F53FBFF0ED1FBFF0F11FBFF0A5A589585A -S315600117A0E91FBFE0A1A488D41518006DA1A001307E -S315600117B0DD1AA16881AC0ACE010000000D80002D02 -S315600117C0F53FBFD0C51FBFD083A018C291A04921E4 -S315600117D099A01928D51FBFE091A308CA1718006DF3 -S315600117E091A00128FD1AE17081AA0ADE01000000BC -S315600117F00D80002F01000000400001AE01000000D5 -S315600118004000020C0100000080A22000128000311D -S3156001181001000000400002610100000080A220007A -S315600118200280003501000000308000317FFFBE7408 -S3156001183090102001F91FBFD8B5A0055CF53FBFF038 -S31560011840ED1FBFF0F11FBFF0A5A58958E91FBFE0E5 -S31560011850A1A488D41518006DA1A00130DD1AA16874 -S3156001186081AC0ACE010000001BBFFFD7F53FBFD098 -S315600118707FFFBE6390102002C51FBFD083A018C230 -S3156001188091A0492199A01928D51FBFE091A308CA43 -S315600118901718006D91A00128FD1AE17081AA0ADE70 -S315600118A0010000001BBFFFD5010000007FFFBE5491 -S315600118B0901020034000017F01000000400001DD1F -S315600118C00100000080A2200002BFFFD301000000DA -S315600118D07FFFBE4B010000004000023001000000A6 -S315600118E080A2200002800004010000007FFFBE4448 -S315600118F09010200581C7E00881E800009DE3BF984C -S315600119007FFFFF7D210000047FFFFF7D90120010A5 -S315600119107FFFFF79B0102000808A00100280000BE3 -S315600119209010200040000267010000007FFFBE4367 -S3156001193001000000912A20047FFFBE2C900220083E -S315600119407FFFFF800100000081C7E00881E8000099 -S315600119501918008098132178111002009210200046 -S31560011960150FF76C9412A3D7D03B0000D42320083F -S31560011970C11B0000C503200887A089220100000061 -S3156001198089A005408DA0892281A8CA260100000090 -S3156001199033800003901020009010200181C3E0087D -S315600119A001000000C11A0000C51A400089A0084262 -S315600119B081C3E008C93A8000C11A0000C51A400017 -S315600119C089A0094281C3E008C93A800019180080DC -S315600119D098132178D0230000D2232008C103000088 -S315600119E0C303200885A00D2181C3E008C53A8000A4 -S315600119F0C11A0000C51A400089A009C2C93A80000F -S31560011A0081C3E00801000000C11A000085A00540FD -S31560011A10C53A400081C3E0080100000001000000F2 -S31560011A20010000000100000001000000010000004B -S31560011A30010000000100000001000000010000003B -S31560011A40010000000100000001000000010000002B -S31560011A50010000000100000001000000010000001B -S31560011A60010000000100000001000000010000000B -S31560011A7001000000010000000100000001000000FB -S31560011A8001000000010000000100000001000000EB -S31560011A9001000000010000000100000081A000209B -S31560011AA081C3E00801000000C11A000081C3E0089B -S31560011AB001000000C51A000089A009C2C93A4000A8 -S31560011AC081C3E0080100000013180080921261785A -S31560011AD0D0224000C102400085A01900C53A4000ED -S31560011AE081C3E008D01A4000131800809212617811 -S31560011AF0D0224000C102400085A01880C522400066 -S31560011B0081C3E008D0024000151800809412A178C4 -S31560011B10D03A8000C11A800085A01A40C522800093 -S31560011B2081C3E008D0028000151800809412A17864 -S31560011B30D0228000C102800085A01A20C5228000C3 -S31560011B4081C3E008D0028000151800809412A17844 -S31560011B50D0228000C102800081A01920C13A800094 -S31560011B6081C3E008D01A8000151800809412A1780C -S31560011B70D03A8000C11A800081A018C0C1228000BD -S31560011B8081C3E008D0028000151800809412A17804 -S31560011B90D0228000CB0280008DA00025CD2280005E -S31560011BA081C3E008D0028000151800809412A178E4 -S31560011BB0D0228000CB0280008DA000A5CD228000BE -S31560011BC081C3E008D0028000151800809412A178C4 -S31560011BD0D0228000CB0280008DA00125CD2280001D -S31560011BE081C3E008D002800019180080981321781B -S31560011BF0D03B0000D43B2008C11B0000C51B200858 -S31560011C0081A80A420100000033800009901020007B -S31560011C1029800007901020012D8000059010200278 -S31560011C202F8000039010200391D0200081C3E0082B -S31560011C30010000001918008098132178D03B00003C -S31560011C40D43B2008C11B0000C51B200881A80AC21D -S31560011C500100000033BFFFF69010200029BFFFF49A -S31560011C60901020012DBFFFF2901020022FBFFFF0D0 -S31560011C709010200391D020001918008098132178C4 -S31560011C80D0230000D2232008C1030000C30320082B -S31560011C9081A80A210100000033BFFFE590102000F2 -S31560011CA029BFFFE3901020012DBFFFE190102002B4 -S31560011CB02FBFFFDF9010200391D0200019180080FC -S31560011CC098132178D0230000D2232008C103000095 -S31560011CD0C303200881A80AA10100000033BFFFD415 -S31560011CE09010200029BFFFD2901020012DBFFFD098 -S31560011CF0901020022FBFFFCE9010200391D02000BC -S31560011D001918008098132178D03B0000D43B200835 -S31560011D10C11B0000C51B200889A008C2C93B000081 -S31560011D2081C3E008D01B0000191800809813217840 -S31560011D30D0230000D2232008C1030000C30320087A -S31560011D4085A00821C523000081C3E008D0030000F7 -S31560011D501918008098132178D0230000D223200817 -S31560011D60C1030000C303200885A008A1C5230000A4 -S31560011D7081C3E008D0030000191800809813217808 -S31560011D80D0230000D2232008C1030000C30320082A -S31560011D9085A00921C523000081C3E008D0030000A6 -S31560011DA01918008098132178D0230000D2232008C7 -S31560011DB0C1030000C303200885A009A1C523000053 -S31560011DC081C3E008D00300001918008098132178B8 -S31560011DD0D0230000C103000083A00520C3230000B7 -S31560011DE081C3E008D003000013180080921261904D -S31560011DF0C51A6008C11A400089A0084091A108C2AD -S31560011E0095A209C495A2894281C3E008D53A00002A -S31560011E1013180080921261B0C1024000C3026004CF -S31560011E2085A0082087A088A189A0C9A289A10921C6 -S31560011E3081C3E008C92200009610200213180080B1 -S31560011E4092126190151800809412A190D5024000FB -S31560011E50D7028000D5220000D80200001318008046 -S31560011E60921261B096A2E00112BFFFF90100000073 -S31560011E7081C3E0080100000013180080921261908E -S31560011E80151800809412A1B0C1028000C51A6010B5 -S31560011E9083A0082089A088C08BA109A18DA10942D0 -S31560011EA08FA1492691A0054681C3E008D13A000079 -S31560011EB01118008090122188C11A0000C51A00000D -S31560011EC0C91A0000CD1A0000D11A0000D51A000007 -S31560011ED0D91A0000DD1A0000E11A0000E51A0000B7 -S31560011EE0E91A0000ED1A0000F11A0000F51A000067 -S31560011EF0F91A0000FD1A000081C3E0080100000024 -S31560011F0029180080A815215827180080A614E1C059 -S31560011F10C12CC000E604C000A134E00EA00C20076D -S31560011F20A0A42002AE1020002D180080AC15A1C01F -S31560011F30AE05E001AC05A008C1358000C12D0000E9 -S31560011F40EA050000AB35600DAA8D600112BFFFF98D -S31560011F5001000000808000100280002F2B3C1FFFD3 -S31560011F60AA1563FFA60CC015E6250000C10D000089 -S31560011F702B180080AA1561CC2D180047AC15A3E07B -S31560011F80AE25E001E0054000E025800081D8200013 -S31560011F9001000000010000000100000001000000D6 -S31560011FA001000000010000000100000001000000C6 -S31560011FB001000000010000000100000001000000B6 -S31560011FC001000000010000000100000001000000A6 -S31560011FD00100000001000000010000000100000096 -S31560011FE00000000080A5C00012BFFFE6AA056008D8 -S31560011FF0C12D0000E60500002B03C000A614C01524 -S31560012000E6250000C10D000081C4400081CC80003E -S315600120100100000081C4800081CCA00401000000A1 -S315600120200100000081C3E008915800000100000032 -S315600120301118008090122158C10A0000C0220000C8 -S31560012040C10A0000C12A0000D40200001300038007 -S31560012050942A800980A0000A3280004D90102003E6 -S315600120601303E000D223BFA0C023BFA4C10BBFA04E -S31560012070C023BFA0151800809412A170C102800010 -S315600120800100000001000000C10BBFA0C10BBFA48D -S3156001209083A00520C12BBFA0D003BFA0808A2200E8 -S315600120A02280003B901020049010200015180080BB -S315600120B09412A140C5028000C902A008D102A00CF9 -S315600120C01318008092126170C70240008DA0894486 -S315600120D081A98AC801000000038000050100000093 -S315600120E0901020011080002A01000000C5028000C6 -S315600120F0C902A008D102A00C131800809212617067 -S31560012100CB0240008DA0894481A98AC801000000E4 -S315600121100380000501000000901020011080001C62 -S315600121200100000025180080A414A168C11C80006C -S31560012130C51C800080A000003280000685A008C012 -S3156001214081A80AC20100000013800003010000009B -S31560012150901020050100000025180080A414A168D4 -S31560012160C11C8000C51C800080A000000100000029 -S315600121703280000685A008C081A80AC2010000005D -S315600121801380000301000000901020070100000089 -S3156001219081C3E00801000000901020019544000011 -S315600121A09532A01E940AA00380A28000028000409E -S315600121B09010200080A2A0030280003D13180080C9 -S315600121C0921261F0C11A4000C51A6008FD026018DA -S315600121D095A0003E99A0003E9DA0003E170000C05C -S315600121E09612E078A182C0000100000001000000A3 -S315600121F00100000001000000010000000100000074 -S3156001220081A0002083A0002195A0002A99A0002C1E -S315600122109DA0002E170000C09612E07CA182C0002E -S315600122200100000001000000010000000100000043 -S31560012230010000000100000085A0002287A00023A4 -S31560012240A180000001000000010000000100000003 -S3156001225001000000010000000100000089A00842A1 -S31560012260A9A2883ED93A4000DD224000CD1A60100D -S31560012270D102600881A90A46010000000380000CB2 -S3156001228081AD0A2801000000038000099344000023 -S315600122909332601B920A60079010200080A2A00111 -S315600122A002800003902260079022600481C3E008E7 -S315600122B001000000C12BBFA081C3E008D003BFA00D -S315600122C0D023BFA081C3E008C10BBFA001000000FD -S315600122D09DE3BF6040001B17B0102000913A200AB1 -S315600122E0900A200380A220011280111101000000D2 -S315600122F07FFFBBBE9010200D190C40291B23CD1BFF -S315600123009410200096102000981320069A13609B63 -S31560012310D43FBFE0D43FBFC0D43FBFE87FFFFF4299 -S31560012320D83FBFF0900A3000032804009012208045 -S315600123308210600FC22200001B1800479002200421 -S315600123409A1363009A234008191000009B3B6002B0 -S31560012350032784009A13400C82106010C222200465 -S315600123607FFFFED4DA2200007FFFFFD61103E00073 -S315600123702D180080C025A1C07FFFFDD490102000DC -S31560012380809200091280000601000000C205A1C00A -S3156001239080A0600002800004010000007FFFBB98FE -S315600123A09010200B7FFFFDC990103FFA03300600A5 -S315600123B080A200011280000480A2600002800EDB10 -S315600123C0010000007FFFBB8E9010200B7FFFFDBFD9 -S315600123D09010201403100D0080A2000112800004E9 -S315600123E080A2600002800ECC010000007FFFBB84EA -S315600123F09010200B7FFFFDB5901020620310162010 -S3156001240080A200011280000480A2600002800EBDDD -S31560012410010000007FFFBB7A9010200B7FFFFDB3A8 -S31560012420901020050310280080A20001128000068A -S3156001243001000000C205A1C080A060000280000406 -S31560012440010000007FFFBB6E9010200B7FFFFF9D98 -S315600124501103C000111C00007FFFFDAC921020002B -S31560012460031FFFFF821063FF80A200011280000A32 -S315600124701B000070C205A1C09A13601F19000010ED -S315600124808208400D9813201080A0400C0280000540 -S31560012490113C00007FFFBB5A9010200C113C0000DC -S315600124A07FFFFD9A921020000320000080A20001A8 -S315600124B01280000A1B000070C205A1C09A13601F3A -S315600124C0190000108208400D9813201080A0400C5E -S315600124D002800004010000007FFFBB499010200CC0 -S315600124E0C025A1C0901020007FFFFD8892102000BA -S315600124F080A220001280000601000000C205A1C072 -S3156001250080A0600002800005110144007FFFBB3C92 -S315600125109010200C110144001328400090122302F0 -S315600125207FFFFD7A9212600180A220001280000670 -S3156001253001000000C205A1C080A0600022800005E4 -S315600125401111FFFF7FFFBB2E9010200C1111FFFFB1 -S315600125507FFFFD76901223FF0300007F821063FFE9 -S3156001256080A200011280000601000000C205A1C020 -S3156001257080A06000028000052F1800857FFFBB20C8 -S315600125809010200C2F1800857FFFFD60D01DE0C8DC -S31560012590031FFFFF821063FF80A200011280000A01 -S315600125A01B000070C205A1C09A13601F19000010BC -S315600125B08208400D9813201080A0400C028000050F -S315600125C0031800857FFFBB0E9010200C0318008551 -S315600125D0D01860D8C025A1C07FFFFD4C0100000066 -S315600125E00320000080A200011280000A1B00007017 -S315600125F0C205A1C09A13601F190000108208400D20 -S315600126009813201080A0400C0280000519180085DF -S315600126107FFFBAFB9010200C19180085C025A1C058 -S315600126207FFFFD3AD01B20B8031FFFFF821063FFB7 -S3156001263080A200011280000A1B000070C205A1C0C1 -S315600126409A13601F190000108208400D981320101C -S3156001265080A0400C02800005331800857FFFBAE830 -S315600126609010200C33180085C025A1C07FFFFD277F -S31560012670D01E60F0C205A1C08330600E820860037F -S3156001268080A0600202800004211800807FFFBADC0E -S315600126909010200C7FFFFF0B1103C000111158042D -S315600126A0C02421C07FFFFD299012223403102B0024 -S315600126B08210624680A2000112800005032000009C -S315600126C080A2400102800FC5010000007FFFBACCE5 -S315600126D09010200D113C02AF7FFFFD1C901220D19E -S315600126E0033180558210639A80A200011280000531 -S315600126F00308000080A2400102800FDB0100000098 -S315600127007FFFBABF9010200D1111FC007FFFFD17EE -S3156001271092102000031FE00080A200011280000ACF -S315600127201B000070C205A1C09A13601F190000103A -S315600127308208400D9813200880A0400C0280000595 -S3156001274011207C017FFFBAAE9010200D11207C0113 -S31560012750C025A1C0901220307FFFFD041300010047 -S315600127600320000080A200011280000A1B00007095 -S31560012770C205A1C09A13601F190000108208400D9E -S315600127809813200480A0400C028000040100000020 -S315600127907FFFBA9B9010200DC025A1C0901020002C -S315600127A07FFFFCF29210200080A2200012800006BA -S315600127B001000000C205A1C080A060000280000483 -S315600127C0010000007FFFBA8E9010200D7FFFFCE7AD -S315600127D0D01DE0C803180085DA0060C080A2000D34 -S315600127E01280000601000000C205A1C080A0600041 -S315600127F0028000051B1800857FFFBA819010200DAD -S315600128001B1800857FFFFCD9D01B60D0031FE00039 -S3156001281080A200011280000601000000C205A1C06D -S3156001282080A0600002800005031800857FFFBA74EE -S315600128309010200D031800857FFFFCCCD01860B87E -S3156001284003180085DA0060A880A2000D1280000AD4 -S315600128501B000070C205A1C09A13601F1900001009 -S315600128608208400D9813201080A0400C028000045D -S31560012870010000007FFFBA629010200DC025A1C043 -S315600128807FFFFCBAD01E60F0C205A1C08330600E26 -S315600128908208600380A06002028000042318008021 -S315600128A07FFFBA579010200D7FFFFE861103E0006F -S315600128B02108C6AF901420DEC02461C07FFFFCB33F -S315600128C0A01420DE80A20010128000060100000024 -S315600128D0C20461C080A06000028000052108C6AF05 -S315600128E07FFFBA479010200E2108C6AF7FFFFCB765 -S315600128F0901420DEA01420DE80A200101280000653 -S3156001290001000000C205A1C080A060002280000510 -S315600129101128C6AF7FFFBA3A9010200E1128C6AFB4 -S315600129207FFFFCAA901220DE0308C6AF821060DE2C -S3156001293080A200011280000601000000C205A1C04C -S3156001294080A06000228000051108C6AF7FFFBA2C07 -S315600129509010200E1108C6AF7FFFFC94901220DE06 -S315600129600328C6AF821060DE80A2000112800006D5 -S3156001297001000000C205A1C080A0600022800005A0 -S315600129801128C6AF7FFFBA1E9010200E1128C6AF60 -S315600129907FFFFC86901220DE0308C6AF821060DEE0 -S315600129A080A200011280000601000000C205A1C0DC -S315600129B080A0600002800004010000007FFFBA1061 -S315600129C09010200E7FFFFE3F1103E00011151BC022 -S315600129D01310C82115351BC01710C8219012210389 -S315600129E0921261419412A1037FFFFC809612E1412C -S315600129F080A220021280000601000000C205A1C06B -S31560012A0080A060000280000511351BC07FFFB9FC04 -S31560012A109010200F11351BC01310C82115151BC04E -S31560012A201710C82190122103921261419412A103D9 -S31560012A307FFFFC6E9612E14180A2200112800006A2 -S31560012A4001000000C205A1C080A0600002800005EF -S31560012A50901020007FFFB9EA9010200F901020009F -S31560012A6092102000152000007FFFFC609610200068 -S31560012A7080A220001280000601000000C205A1C0EC -S31560012A8080A0600002800005191800857FFFB9DC0F -S31560012A909010200F191800851B180085D01B20D0B7 -S31560012AA07FFFFC52D41B60D880A2200212800006F0 -S31560012AB001000000C205A1C080A06000028000057F -S31560012AC011151BC07FFFB9CE9010200F11151BC0C9 -S31560012AD01310C82115151BE81710C8219012210380 -S31560012AE0921261419412A1037FFFFC409612E1416B -S31560012AF080A220011280000601000000C205A1C06B -S31560012B0080A060000280000511151BE87FFFB9BC3B -S31560012B109010200F11151BE81310C82115151BC045 -S31560012B201710C82190122103921261419412A103D8 -S31560012B307FFFFC2E9612E14180A2200212800006E0 -S31560012B4001000000C205A1C080A0600002800005EE -S31560012B5011151BE87FFFB9AA9010200F11151BE80C -S31560012B601310C82190122103921261417FFFFC1F4D -S31560012B70D41DE0C880A22003128000060100000077 -S31560012B80C205A1C080A0600002800005031800850F -S31560012B907FFFB99B9010200F0318008511151BE864 -S31560012BA01310C82190122103921261417FFFFC0F1D -S31560012BB0D41860B880A220031280000A1B0000703E -S31560012BC0C205A1C09A13601F190000108208400D4A -S31560012BD09813201080A0400C0280000511151BE897 -S31560012BE07FFFB9879010200F11151BE81310C821BC -S31560012BF0C025A1C090122103921261417FFFFBFBA8 -S31560012C00D41E60F080A2200212800006010000003E -S31560012C10C205A1C080A060000280000515151BE8F1 -S31560012C207FFFB9779010200F15151BE81710C82183 -S31560012C30D01E60F09412A1037FFFFBEC9612E14176 -S31560012C4080A220011280000601000000C205A1C019 -S31560012C5080A060000280000515151BE87FFFB9683A -S31560012C609010200F15151BE81710C821D01DE0C85C -S31560012C709412A1037FFFFBDD9612E14180A220033E -S31560012C801280000601000000C205A1C080A060009C -S31560012C9002800005191800857FFFB9599010200F31 -S31560012CA01918008515151BE81710C821D01B20B807 -S31560012CB09412A1037FFFFBCD9612E14180A220030E -S31560012CC01280000A1B000070C205A1C09A13601F22 -S31560012CD0190000108208400D9813201080A0400C46 -S31560012CE00280000511151BC07FFFB9459010200FAA -S31560012CF011151BC01310C82115351BC01710C8212B -S31560012D00C025A1C090122103921261419412A103C0 -S31560012D107FFFFBC99612E14180A220021280000664 -S31560012D2001000000C205A1C080A06000028000050C -S31560012D3011351BC07FFFB9329010200F11351BC0B2 -S31560012D401310C82115151BC01710C8219012210335 -S31560012D50921261419412A1037FFFFBB79612E14182 -S31560012D6080A220011280000601000000C205A1C0F8 -S31560012D7080A0600002800005901020007FFFB920CE -S31560012D809010200F90102000921020001520000056 -S31560012D907FFFFBA99610200080A22000128000060A -S31560012DA001000000C205A1C080A06000028000058C -S31560012DB01B1800857FFFB9129010200F1B18008524 -S31560012DC003180085D01B60D07FFFFB9BD41860D8A9 -S31560012DD080A220021280000601000000C205A1C087 -S31560012DE080A060000280000511151BC07FFFB90439 -S31560012DF09010200F11151BC01310C82115151BE863 -S31560012E001710C82190122103921261419412A103F5 -S31560012E107FFFFB899612E14180A2200112800006A4 -S31560012E2001000000C205A1C080A06000028000050B -S31560012E3011151BE87FFFB8F29010200F11151BE8E2 -S31560012E401310C82115151BC01710C8219012210334 -S31560012E50921261419412A1037FFFFB779612E141C1 -S31560012E6080A220021280000601000000C205A1C0F6 -S31560012E7080A060000280000511151BE87FFFB8E0A5 -S31560012E809010200F11151BE81310C8219012210311 -S31560012E90921261417FFFFB68D41DE0C880A22003C6 -S31560012EA01280000A1B000070C205A1C09A13601F40 -S31560012EB0190000108208400D9813201080A0400C64 -S31560012EC002800005191800857FFFB8CD9010200F8C -S31560012ED01918008511151BE81310C82190122103DA -S31560012EE0921261417FFFFB54D41B20B880A220035C -S31560012EF01280000A1B000070C205A1C09A13601FF0 -S31560012F00190000108208400D9813201080A0400C13 -S31560012F100280000511151BE87FFFB8B99010200FDC -S31560012F2011151BE81310C821C025A1C090122103F9 -S31560012F30921261417FFFFB40D41E60F080A22002A5 -S31560012F401280000601000000C205A1C080A06000D9 -S31560012F500280000515151BE87FFFB8A99010200FA8 -S31560012F6015151BE81710C821D01E60F09412A10335 -S31560012F707FFFFB319612E14180A22001128000069B -S31560012F8001000000C205A1C080A0600002800005AA -S31560012F9015151BE87FFFB89A9010200F15151BE8D1 -S31560012FA01710C821D01DE0C89412A1037FFFFB2230 -S31560012FB09612E14180A220031280000A1B00007074 -S31560012FC0C205A1C09A13601F190000108208400D46 -S31560012FD09813201080A0400C028000051B18008504 -S31560012FE07FFFB8879010200F1B18008515151BE809 -S31560012FF01710C821D01B60B89412A1037FFFFB0E86 -S315600130009612E14180A220031280000A1B00007023 -S31560013010C205A1C09A13601F190000108208400DF5 -S315600130209813201080A0400C02800005110048EA28 -S315600130307FFFB8739010200F110048EA13048D15B5 -S31560013040C025A1C0901223CD7FFFFB0C921262783E -S3156001305080A220011280000601000000C205A1C005 -S3156001306080A0600002800005110048EA7FFFB86415 -S315600130709010200F110048EA13048D15901223CD8C -S315600130807FFFFB0F9212627880A2200112800006F8 -S3156001309001000000C205A1C080A06000028000049A -S315600130A0010000007FFFB8569010200FC025A1C017 -S315600130B07FFFFC841103C000291801449007BFF00B -S315600130C09207BFE87FFFFA3894152120C207BFF047 -S315600130D0DA05212080A0400D12800007821521208B -S315600130E0DA006004C207BFF480A0400D02800D596A -S315600130F0010000007FFFB84290102010371800854C -S315600131009007BFF09216E0E07FFFFA279415212021 -S31560013110C206E0E0DA05212080A340018215212064 -S31560013120128000079816E0E0DA006004C20320040A -S3156001313080A3400102800D42010000007FFFB8308C -S31560013140901020109007BFF09215E0C87FFFFA1625 -S3156001315094152120C205E0C8DA05212080A340012B -S3156001316082152120128000079815E0C8DA006004F4 -S31560013170C203200480A3400102800D2C01000000DF -S315600131807FFFB81F9010201003180085921060B859 -S315600131909007BFF07FFFFA04941521201B00007091 -S315600131A0C205A1C09A13601F190000108208400D64 -S315600131B09813201080A0400C02800004211801445D -S315600131C07FFFB80F9010201003180080C02061C0E7 -S315600131D07FFFFC3C90102000131800859414212079 -S315600131E0921260B87FFFF9F09007BFF03918008539 -S315600131F0C20720B0DA04212080A340019414212063 -S3156001320012800007821720B0DA02A004C2006004AF -S3156001321080A3400102800004010000007FFFB7F82F -S31560013220901020107FFFFC271103C0009007BFF0AC -S31560013230921660F07FFFF9DC94152120C205A1C0CA -S315600132408330600E8208600380A060022118014409 -S3156001325002800004231800807FFFB7E990102010D8 -S3156001326094142120C02461C09007BFE87FFFF9CE86 -S315600132709207BFF0DA042120C207BFF080A34001A4 -S315600132801280000794142120DA02A004C207BFF459 -S3156001329080A3400102800D21010000007FFFB7D8A5 -S315600132A0901020109007BFE89216E0E07FFFF9BE0C -S315600132B094152120C206E0E0DA05212080A34001B1 -S315600132C082152120128000079816E0E0DA0060047A -S315600132D0C203200480A3400102800D0B010000009F -S315600132E07FFFB7C7901020109007BFE89215E0C81E -S315600132F07FFFF9AD94152120C205E0C8DA052120CA -S3156001330080A3400182152120128000079815E0C82C -S31560013310DA006004C203200480A3400102800CF538 -S31560013320010000007FFFB7B69010201019180085C4 -S31560013330921320B89007BFE87FFFF99B941521206F -S315600133401B000070C205A1C09A13601F190000100E -S315600133508208400D9813201080A0400C0280000462 -S31560013360211801447FFFB7A6901020107FFFFBD57F -S31560013370901020001318008594142120921260B8D1 -S315600133807FFFF9899007BFE8C20720B0DA042120E0 -S3156001339080A340019414212012800007821720B077 -S315600133A0DA02A004C200600480A340010280000426 -S315600133B0010000007FFFB792901020107FFFFBC1D4 -S315600133C01103C0009007BFE8921660F07FFFF9769F -S315600133D094152120C205A1C08330600E8208600366 -S315600133E080A0600221180144028000042318008035 -S315600133F07FFFB7839010201094142120C02461C0F0 -S315600134009016E0E07FFFF9689207BFF0C206E0E040 -S31560013410DA04212080A34001941421201280000740 -S315600134208216E0E0DA02A004C200600480A34001D3 -S3156001343002800CAB010000007FFFB7719010201075 -S315600134409016E0E09207BFE87FFFF95794152120B7 -S31560013450C206E0E0DA05212080A340018215212021 -S31560013460128000079816E0E0DA006004C2032004C7 -S3156001347080A3400102800C95010000007FFFB760C8 -S31560013480901020101B180085901360D092100008D0 -S315600134907FFFF9459415212019180085C20320D0B4 -S315600134A0DA05212080A340018215212012800007C0 -S315600134B0981320D0DA006004C203200480A340017F -S315600134C002800C7D010000007FFFB74D9010201037 -S315600134D01B180085901360D8921000087FFFF9329F -S315600134E09415212019180085C20320D8DA052120F8 -S315600134F080A340018215212012800007981320D8ED -S31560013500DA006004C203200480A3400102800C65D6 -S31560013510010000007FFFB73A901020101B1800854C -S3156001352003180085901360D8921060D07FFFF91E52 -S31560013530941521201B000070C205A1C09A13601F5B -S31560013540190000108208400D9813201080A0400CCD -S3156001355002800004211801447FFFB72990102010D2 -S315600135607FFFFB5890102000111800851318008505 -S3156001357094142120901220D87FFFF90B921260D00B -S31560013580C20720B0DA04212080A3400194142120CF -S3156001359012800007821720B0DA02A004C20060041C -S315600135A080A3400102800004010000007FFFB71480 -S315600135B0901020107FFFFB431103C000191800858E -S315600135C01B180085901320D0921360D8C025A1C026 -S315600135D07FFFF8F594152120C20720B0DA05212076 -S315600135E080A340018215212012800007981720B020 -S315600135F0DA006004C203200480A3400102800C1F2C -S315600136001B0000707FFFB6FE901020109016E0E060 -S31560013610921660F07FFFF8E494152120C205A1C0DF -S315600136208330600E8208600380A060022118014425 -S3156001363002800004231800807FFFB6F190102010ED -S3156001364094142120C02461C09015E0C87FFFF8D68C -S315600136509207BFF0C205E0C8DA04212080A34001C9 -S3156001366094142120128000078215E0C8DA02A004B2 -S31560013670C200600480A3400102800B9C010000002F -S315600136807FFFB6DF901020109015E0C89207BFE863 -S315600136907FFFF8C594152120C205E0C8DA0521200F -S315600136A080A3400182152120128000079815E0C889 -S315600136B0DA006004C203200480A3400102800B8605 -S315600136C0010000007FFFB6CE901020109015E0C873 -S315600136D09216E0E07FFFF8B494152120C205E0C898 -S315600136E0DA05212080A3400182152120128000077E -S315600136F09815E0C8DA006004C203200480A3400183 -S3156001370002800B70010000007FFFB6BD9010201093 -S315600137109015E0C8921000087FFFF8A39415212048 -S31560013720C205E0C8DA05212080A340018215212067 -S31560013730128000079815E0C8DA006004C20320040D -S3156001374080A3400102800B5A010000007FFFB6ACE6 -S315600137509010201003180085921060B89015E0C88B -S315600137607FFFF8919415212003000070A610601F59 -S31560013770DA05A1C0030000109A0B4013AA1060106D -S3156001378080A3401523180085251801440280000492 -S31560013790211800807FFFB69A90102010C02421C0A6 -S315600137A0901460B89207BFF07FFFF87F9414A12050 -S315600137B0C20421C08208401380A040150280000423 -S315600137C0010000007FFFB68E90102010C02421C03A -S315600137D0901460B89207BFE87FFFF8739414A12034 -S315600137E0C20421C08208401380A0401502800004F3 -S315600137F0010000007FFFB68290102010C02421C016 -S31560013800901460B89216E0E07FFFF8679414A120E7 -S31560013810C20421C08208401380A0401502800005C1 -S31560013820131800857FFFB676901020101318008557 -S31560013830C02421C0921260C8901460B87FFFF85A04 -S315600138409414A120C20421C08208401380A04015AF -S3156001385002800005901460B87FFFB6699010201051 -S31560013860901460B8C02421C0921000087FFFF84E02 -S315600138709414A120C20421C08208401380A040157F -S3156001388002800004010000007FFFB65D90102010E9 -S31560013890C02421C0901460B8921660F07FFFF84290 -S315600138A09414A120C20421C08330600E8208600393 -S315600138B080A06002228000051103C0007FFFB65020 -S315600138C0901020101103C0007FFFFA7E3B18008420 -S315600138D0A2176210C02421C0AA14A120A4046010FA -S315600138E0A0102000A6046008B010200C92040013FA -S315600138F0900400117FFFF82C94152120DA048010C2 -S3156001390098040012C2052120A004201880A340015A -S315600139101280000790102010DA032004C2056004AB -S3156001392080A3400122800005B0863FFF7FFFB63449 -S3156001393001000000B0863FFF1CBFFFEE920400133A -S31560013940C205A1C080A06000128009890100000043 -S315600139501118008490122348920220087FFFF81202 -S315600139609415212098176210C2052120DA03214897 -S3156001397080A340011280000782152120DA03214CC1 -S31560013980C200600480A3400122800AAB0318008054 -S315600139907FFFB61B901020101118008490122360CF -S315600139A0920220087FFFF800941521209817621073 -S315600139B0C2052120DA03216080A34001128000073D -S315600139C082152120DA032164C200600480A34001CC -S315600139D002800AA41B0000707FFFB60990102010B8 -S315600139E01118008490122378920220087FFFF7EE67 -S315600139F09415212098176210C2052120DA032178D7 -S31560013A0080A340011280000782152120DA03217C00 -S31560013A10C200600480A3400102800A9C1B00007002 -S31560013A207FFFB5F790102010C025A1C011100000CE -S31560013A3092102000150FFC007FFFF8B2961020004F -S31560013A40030FFC0080A200011280000880A26000C2 -S31560013A501280000601000000C205A1C080A06000BE -S31560013A6002800005111000007FFFB5E5901020105F -S31560013A701110000092102000152FFC007FFFF8A1A5 -S31560013A80961020000310020080A200011280000837 -S31560013A9080A260001280000601000000C205A1C07C -S31560013AA080A0600002800005113000007FFFB5D460 -S31560013AB0901020101130000092102000150FFC00AC -S31560013AC07FFFF890961020000330020080A200016B -S31560013AD01280000880A260001280000601000000CA -S31560013AE0C205A1C080A060000280000511300000FF -S31560013AF07FFFB5C390102010113000009210200096 -S31560013B00152FFC007FFFF87F96102000032FFC0025 -S31560013B1080A200011280000880A260001280000667 -S31560013B2001000000C205A1C080A0600002800005FE -S31560013B30111000007FFFB5B2901020101110000027 -S31560013B407FFFF87A130FE0000310100080A20001D6 -S31560013B501280000601000000C205A1C080A06000BD -S31560013B6002800005111000007FFFB5A5901020109E -S31560013B70111000007FFFF877130FE000030FE000DC -S31560013B8080A200011280000601000000C205A1C0EA -S31560013B9080A0600022800005191800857FFFB59816 -S31560013BA09010201019180085921320E8C025A1C035 -S31560013BB09007BFF07FFFF78F9415212019180085B4 -S31560013BC0C20320D8DA05212080A340018215212075 -S31560013BD012800007981320D8DA006004C20320041B -S31560013BE080A3400102800A461B0000707FFFB584F6 -S31560013BF0901020111B180085921360D0C025A1C0BA -S31560013C009007BFF07FFFF77B94152120C207BFE0C5 -S31560013C10DA05212080A34001128000078215212048 -S31560013C20DA006004C207BFE480A3400102800A3E55 -S31560013C30010000007FFFB572901020119007BFF060 -S31560013C409215E0C87FFFF76B94152120C205E0C885 -S31560013C50DA05212080A34001821521201280000708 -S31560013C609815E0C8DA006004C203200480A340010D -S31560013C7002800A32010000007FFFB56190102011B9 -S31560013C8003180085921060B89007BFF07FFFF7595F -S31560013C9094152120C20720B0DA05212080A34001B6 -S31560013CA08215212012800007981720B0DA0060047F -S31560013CB0C203200480A3400102800A251B00007014 -S31560013CC07FFFB54F901020119007BFF0921660F0FC -S31560013CD07FFFF74894152120C205A1C01B00007023 -S31560013CE08208400D1900002080A0400C2118014473 -S31560013CF002800004231800807FFFB54190102011D7 -S31560013D0094142120C02461C09007BFE87FFFF73972 -S31560013D109207BFF0DA042120C207BFE880A3400101 -S31560013D201280000794142120DA02A004C207BFECB6 -S31560013D3080A3400102800A10010000007FFFB530B8 -S31560013D409010201119180085901320E89207BFE0A2 -S31560013D507FFFF72894152120C20720B0DA052120BC -S31560013D6080A340018215212012800007981720B098 -S31560013D70DA006004C203200480A3400102800A03C2 -S31560013D801B0000707FFFB51E901020111B18008567 -S31560013D9003180085901360E8921060D0C025A1C019 -S31560013DA07FFFF7149415212019180085C20320E8B6 -S31560013DB0DA05212080A340018215212012800007A7 -S31560013DC0981320E8DA006004C203200480A340014E -S31560013DD0028009F8010000007FFFB50990102011EB -S31560013DE09007BFE89215E0C87FFFF702941521207E -S31560013DF0C205E0C8DA05212080A340018215212091 -S31560013E00128000079815E0C8DA006004C203200436 -S31560013E1080A34001028009EC010000007FFFB4F835 -S31560013E20901020071B180085921360B89007BFE8B1 -S31560013E307FFFF6F09415212025000070D805A1C0FA -S31560013E409A14A01F03000010980B000D82106010D9 -S31560013E5080A3000121180144028000042318008018 -S31560013E607FFFB4E790102011C02461C09007BFE8BE -S31560013E70921660F07FFFF6DF94142120C20461C0C0 -S31560013E80820840121B00002080A0400D22800005A0 -S31560013E90031800857FFFB4DA90102011031800859E -S31560013EA0901060D894142120C02461C07FFFF6D1A0 -S31560013EB09207BFF019180085C20320D8DA042120C1 -S31560013EC080A340019414212012800007821320D818 -S31560013ED0DA02A004C200600480A34001028008B82F -S31560013EE0010000007FFFB4C6901020111B180085E9 -S31560013EF003180085901360D8921060E87FFFF6BDC5 -S31560013F009415212019180085C20320D0DA052120D5 -S31560013F1080A340018215212012800007981320D0CA -S31560013F20DA006004C203200480A34001028008A96C -S31560013F30010000007FFFB4B2901020119016E0E0FE -S31560013F40921000087FFFF6AB94152120C20720B0BE -S31560013F50DA05212080A34001821521201280000705 -S31560013F60981720B0DA006004C203200480A34001E0 -S31560013F700280089D1B0000707FFFB4A19010201184 -S31560013F80C025A1C09016E0E09215E0C87FFFF699C2 -S31560013F9094152120C205E0C8DA05212080A34001DD -S31560013FA082152120128000079815E0C8DA006004A6 -S31560013FB0C203200480A3400102800894010000002E -S31560013FC07FFFB48F901020111B180085921360B883 -S31560013FD09016E0E07FFFF68794152120C20720B096 -S31560013FE0DA05212080A34001821521201280000775 -S31560013FF0981720B0DA006004C203200480A3400150 -S31560014000028008871B0000707FFFB47D901020112D -S31560014010C025A1C09016E0E0921660F07FFFF675AC -S3156001402094152120C205A1C01B0000708208400DB5 -S315600140301900002080A0400C231800800280000433 -S31560014040211801447FFFB46E901020119414212031 -S31560014050C02461C09015E0C87FFFF6669207BFF085 -S31560014060C205E0C8DA04212080A34001941421200E -S31560014070128000078215E0C8DA02A004C20060045B -S3156001408080A340010280086F010000007FFFB45CDD -S31560014090901020119015E0C89207BFE87FFFF65592 -S315600140A094152120C205E0C8DA05212080A34001CC -S315600140B082152120128000079815E0C8DA00600495 -S315600140C0C203200480A3400102800863010000004E -S315600140D07FFFB44B901020119015E0C89216E0E076 -S315600140E07FFFF64494152120C205E0C8DA05212038 -S315600140F080A3400182152120128000079815E0C82F -S31560014100DA006004C203200480A3400102800857DC -S31560014110010000007FFFB43A901020119015E0C8AD -S31560014120921000087FFFF63394152120C205E0C87E -S31560014130DA05212080A34001821521201280000723 -S315600141409815E0C8DA006004C203200480A3400128 -S31560014150028007F3010000007FFFB429901020114F -S3156001416003180085921060B89015E0C87FFFF621AC -S3156001417094152120C20720B0DA05212080A34001D1 -S315600141808215212012800007981720B0DA0060049A -S31560014190C203200480A34001028007E61B00007071 -S315600141A07FFFB417901020119015E0C8921660F049 -S315600141B07FFFF61094152120C205A1C03100007061 -S315600141C0820840183B00002080A0401D231801444E -S315600141D002800004211800807FFFB409901020112D -S315600141E019180085901320B89207BFF07FFFF6017A -S315600141F094146120C20421C0AA16201F3500001044 -S3156001420082084015A616A01080A040130280000403 -S31560014210251800857FFFB3FA90102011C02421C0B4 -S315600142209014A0B89207BFE87FFFF5F2941461205D -S31560014230C20421C08208401580A040130280000498 -S31560014240010000007FFFB3EE90102011C02421C051 -S315600142509014A0B89216E0E07FFFF5E69414612011 -S31560014260C20421C08208401580A040130280000567 -S31560014270131800857FFFB3E2901020111318008593 -S31560014280C02421C0921260C89014A0B87FFFF5D9EE -S3156001429094146120C20421C08208401580A0401395 -S315600142A0028000059014A0B87FFFB3D5901020114D -S315600142B09014A0B8C02421C0921000087FFFF5CDEC -S315600142C094146120C20421C08208401580A0401365 -S315600142D002800005131800857FFFB3C99010201175 -S315600142E013180085C02421C09014A0B8921260F002 -S315600142F07FFFF5C094146120C20421C08208401872 -S3156001430080A0401D2280000515203E837FFFB3BC3F -S315600143109010201115203E83170021C89412A3FF27 -S315600143209612E3A1191FC0001B00C0009A1360B06A -S3156001433098132102D43FBFD0D83FBFD8C02421C033 -S315600143409007BFD89207BFD07FFFF5AA9407BFC871 -S31560014350DA07BFC8033FFC0080A340010280070B58 -S31560014360A207BFC87FFFB3A69010201115108683E0 -S31560014370170021C89412A3FF9612E3A11900400009 -S315600143801B00C0009A1360B098132102D43FBFD0BE -S31560014390D83FBFD8C025A1C09007BFD89207BFD06C -S315600143A07FFFF5949407BFC8DA046004C207BFC8EB -S315600143B08090400D1280000A1B000070C205A1C0EA -S315600143C09A13601F190000108208400D981320048B -S315600143D080A0400C22800005150FFC007FFFB3888A -S315600143E090102011150FFC00170281D89412A0407D -S315600143F09612E10C9A102010190006AFD43FBFD077 -S31560014400D83FBFD8C025A1C09007BFD89207BFD0FB -S315600144107FFFF5789407BFC8030006AEDA07BFC809 -S315600144208210639580A340011280000703003A9AC7 -S31560014430DA0460048210630F80A3400102800733AF -S31560014440010000007FFFB36E90102011150FFFFF72 -S31560014450170281D89412A3409612E10C9A1020108B -S31560014460190006AFD43FBFD0D83FBFD8C025A1C081 -S315600144709007BFD89207BFD07FFFF55E9407BFC88C -S31560014480DA046004C207BFC88090400D1280000A3A -S315600144901B000070C205A1C09A13601F19000010AD -S315600144A08208400D9813200480A0400C028000040D -S315600144B0010000007FFFB35290102011C025A1C0FA -S315600144C0111088007FFFF63713100100031066C9CB -S315600144D0821062CA80A200011280000601000000FB -S315600144E0C205A1C080A06000028000051111BBFE5B -S315600144F07FFFB343901020111111BBFE901223FF71 -S315600145007FFFF628130C7040031527CA8210611EBF -S3156001451080A200011280000601000000C205A1C050 -S3156001452080A06000028000051310C7FF7FFFB334CF -S31560014530901020111310C7FF921263FC7FFFF619CA -S31560014540111E607E031D73FC8210633880A2000118 -S315600145501280000601000000C205A1C080A06000B3 -S3156001456002800005130FE0007FFFB3259010201134 -S31560014570130FE000921260017FFFF60A110020001E -S3156001458080A220001280000A1B000070C205A1C033 -S315600145909A13601F190000108208400D98132004B9 -S315600145A080A0400C02800005110FE0007FFFB3146C -S315600145B090102011110FE000C025A1C07FFFF5F911 -S315600145C092100008030FE00080A20001128000062D -S315600145D001000000C205A1C080A060000280000544 -S315600145E0130FE0007FFFB30690102011130FE00058 -S315600145F0921260017FFFF5EB1100200080A220007E -S315600146001280000A1B000070C205A1C09A13601FC8 -S31560014610190000108208400D9813200480A0400CF8 -S31560014620028000051B1800857FFFB2F590102011EE -S315600146301B180085921360E8C025A1C09007BFF0E2 -S315600146407FFFF4DE9415212019180085C20320E846 -S31560014650DA05212080A340018215212012800007FE -S31560014660981320E8DA006004C203200480A34001A5 -S31560014670028006BA010000007FFFB2E190102012AD -S315600146801B180085921360D09007BFF07FFFF4CBB3 -S315600146909415212019180085C20320D0DA0521203E -S315600146A080A340018215212012800007981320D033 -S315600146B0DA006004C203200480A34001028006ACD4 -S315600146C0010000007FFFB2CE901020129007BFF06C -S315600146D09215E0C87FFFF4B994152120C205E0C8A0 -S315600146E0DA05212080A3400182152120128000076E -S315600146F09815E0C8DA006004C203200480A3400173 -S31560014700028006A0010000007FFFB2BD901020125A -S315600147101B180085921360B89007BFF07FFFF4A75E -S3156001472094152120C20720B0DA05212080A340011B -S315600147308215212012800007981720B0DA006004E4 -S31560014740C203200480A34001028006931B0000700F -S315600147507FFFB2AB901020129007BFF0921660F007 -S315600147607FFFF49694152120C205A1C01B0000703D -S315600147708208400D1900002080A0400C21180144D8 -S3156001478002800004231800807FFFB29D90102012E2 -S3156001479094142120C02461C09007BFE87FFFF4878D -S315600147A09207BFF0DA042120C207BFE880A3400167 -S315600147B01280000794142120DA02A004C207BFEC1C -S315600147C080A34001028006DE010000007FFFB28CFB -S315600147D0901020120318008519180085901060E862 -S315600147E0921320D87FFFF47594152120C20720B05B -S315600147F0DA05212080A3400182152120128000075D -S31560014800981720B0DA006004C203200480A3400137 -S31560014810028006D01B0000707FFFB27990102012D3 -S31560014820C025A1C09007BFE89215E0C87FFFF46379 -S3156001483094152120C205E0C8DA05212080A3400134 -S3156001484082152120128000079815E0C8DA006004FD -S31560014850C203200480A34001028006C70100000054 -S315600148607FFFB267901024991B180085921360B878 -S315600148709007BFE87FFFF45194152120C20720B04D -S31560014880DA05212080A340018215212012800007CC -S31560014890981720B0DA006004C203200480A34001A7 -S315600148A0028006BA1B0000707FFFB255901020127D -S315600148B09007BFE8921660F07FFFF44094152120BF -S315600148C0C205A1C01B0000708208400D19000020BE -S315600148D080A0400C21180144028000042318008046 -S315600148E07FFFB2479010201294142120C02461C02A -S315600148F09016E0E07FFFF4319207BFF0C206E0E078 -S31560014900DA04212080A3400194142120128000073B -S315600149108216E0E0DA02A004C200600480A34001CE -S31560014920028006A4010000007FFFB23590102012BC -S315600149309016E0E09207BFE87FFFF42094152120EE -S31560014940C20720B0DA05212080A34001821521200B -S3156001495012800007981720B0DA006004C2032004B1 -S3156001496080A34001028006981B0000707FFFB2247D -S3156001497090102012C025A1C09016E0E09215E0C803 -S315600149807FFFF40E94152120C205E0C8DA052120C7 -S3156001499080A3400182152120128000079815E0C886 -S315600149A0DA006004C203200480A340010280068FFE -S315600149B0010000007FFFB2129010201203180085DB -S315600149C0921060B89016E0E07FFFF3FC9415212009 -S315600149D0C20720B0DA05212080A34001821521207B -S315600149E012800007981720B0DA006004C203200421 -S315600149F080A34001028006821B0000707FFFB20027 -S31560014A00901020129016E0E0921660F07FFFF3EBB3 -S31560014A1094152120C205A1C01B0000708208400DBB -S31560014A201900002080A0400C211801440280000476 -S31560014A30231800807FFFB1F2901020129414212078 -S31560014A40C02461C09015E0C87FFFF3DC9207BFF018 -S31560014A50C205E0C8DA04212080A340019414212014 -S31560014A60128000078215E0C8DA02A004C200600461 -S31560014A7080A340010280061E010000007FFFB1E0B5 -S31560014A80901020129015E0C89207BFE87FFFF3CB24 -S31560014A9094152120C205E0C8DA05212080A34001D2 -S31560014AA082152120128000079815E0C8DA0060049B -S31560014AB0C203200480A340010280061201000000A7 -S31560014AC07FFFB1CF901020129015E0C89216E0E0FA -S31560014AD07FFFF3BA94152120C205E0C8DA052120CB -S31560014AE080A3400182152120128000079815E0C835 -S31560014AF0DA006004C203200480A340010280060636 -S31560014B00010000007FFFB1BE901020129015E0C831 -S31560014B10921000087FFFF3A994152120C205E0C811 -S31560014B20DA05212080A34001821521201280000729 -S31560014B309815E0C8DA006004C203200480A340012E -S31560014B40028005FA010000007FFFB1AD90102012CE -S31560014B50191800859015E0C8921320B87FFFF39766 -S31560014B609415212003000070A610601FDA05A1C00C -S31560014B70030000109A0B4013AA10601080A3401521 -S31560014B80251800852318014402800004211800803D -S31560014B907FFFB19B90102012C02421C09014A0B851 -S31560014BA09207BFF07FFFF38594146120C20421C090 -S31560014BB08208401380A040150280000401000000B5 -S31560014BC07FFFB18F90102012C02421C09014A0B82D -S31560014BD09207BFE87FFFF37994146120C20421C074 -S31560014BE08208401380A04015028000040100000085 -S31560014BF07FFFB18390102012C02421C09014A0B809 -S31560014C009216E0E07FFFF36D94146120C20421C027 -S31560014C108208401380A040150280000513180085A4 -S31560014C207FFFB1779010201213180085C02421C030 -S31560014C30921260C89014A0B87FFFF360941461204B -S31560014C40C20421C08208401380A04015028000057D -S31560014C509014A0B87FFFB16A901020129014A0B88A -S31560014C60C02421C0921000087FFFF3549414612080 -S31560014C70C20421C08208401380A04015028000044E -S31560014C80010000007FFFB15E90102012C02421C098 -S31560014C909014A0B8921660F07FFFF34894146120D7 -S31560014CA0C20421C08330600E8208600380A0600266 -S31560014CB0228000051103C0007FFFB15190102012C0 -S31560014CC01103C0007FFFF57F3B180084A417639032 -S31560014CD0AA146120C02421C0A604A008A210200045 -S31560014CE0B0102005A00440129204401394152120AF -S31560014CF07FFFF33290100010DA042010C2052120E4 -S31560014D00A204601880A3400112800007901020124F -S31560014D10DA042014C205600480A340010280047491 -S31560014D20010000007FFFB13601000000B0863FFF41 -S31560014D303CBFFFEEA004401211180085901220209E -S31560014D40920220087FFFF31D941521209817639026 -S31560014D50C2052120DA0320A080A34001128000074A -S31560014D6082152120DA0320A4C200600480A34001D9 -S31560014D70028004DC1B0000707FFFB12190102012BD -S31560014D801118008590122038C025A1C09202200812 -S31560014D907FFFF30A9415212098176390C20521209D -S31560014DA0DA0320B880A34001128000078215212012 -S31560014DB0DA0320BCC200600480A340010280047F44 -S31560014DC01B0000707FFFB10E901020121118008534 -S31560014DD090122050C025A1C0920220087FFFF2F7F1 -S31560014DE09415212098176390C2052120DA0320D0FB -S31560014DF080A340011280000782152120DA0320D4A6 -S31560014E00C200600480A34001028004761B0000702A -S31560014E107FFFB0FB90102012111800859012206858 -S31560014E20C025A1C0920220087FFFF2E494152120DB -S31560014E3098176390C2052120DA0320E880A3400118 -S31560014E401280000782152120DA0320ECC20060047B -S31560014E5080A340010280046D1B0000707FFFB0E8F3 -S31560014E60901020121118008590122080C025A1C0D3 -S31560014E70920220087FFFF2D1941521209817639042 -S31560014E80C2052120DA03210080A3400112800007B8 -S31560014E9082152120DA032104C200600480A3400147 -S31560014EA0028004641B0000707FFFB0D59010201251 -S31560014EB0C025A1C0111010007FFFF3B013100000D0 -S31560014EC00310300080A2000112800006010000007C -S31560014ED0C205A1C080A0600002800005111FE0002C -S31560014EE07FFFB0C790102012111FE0001310000061 -S31560014EF07FFFF2B794152120031FFC00DA052120FC -S31560014F0080A340011280000A82152120C20060043C -S31560014F1080A060001280000601000000C205A1C0E9 -S31560014F2080A0600002800005111FE0007FFFB0B421 -S31560014F309010201B111FE000133000007FFFF2A4C8 -S31560014F4094152120033FFC00DA05212080A340014E -S31560014F501280000A82152120C200600480A06000D0 -S31560014F601280000601000000C205A1C080A0600099 -S31560014F7002800005111000007FFFB0A19010201C77 -S31560014F8011100000921020107FFFF29194152120DC -S31560014F90C205A1C01B0000708208400D19000020E7 -S31560014FA080A0400C2118014402800004231800806F -S31560014FB07FFFB0939010201D94142120C02461C0FE -S31560014FC0110020007FFFF282130FC000DA04212056 -S31560014FD0030E000080A340011280000A9414212070 -S31560014FE0C202A00480A060001280000601000000D9 -S31560014FF0C20461C080A0600002800005111FDFFF4E -S315600150007FFFB07F9010201E111FDFFF901223FFDC -S31560015010131000007FFFF26E941521200311FFFF2C -S31560015020821063FFDA05212080A340011280000708 -S3156001503082152120DA0060040338000080A3400154 -S3156001504002800405010000007FFFB06D9010201FF3 -S31560015050111FD000130FF0007FFFF25D9415212020 -S315600150600311FC80DA05212080A340011280000A29 -S3156001507082152120C200600480A0600012800006B3 -S3156001508001000000C205A1C080A060000280000589 -S31560015090111FDFFF7FFFB05A90102021111FDFFF24 -S315600150A0901223FF921000087FFFF2499415212088 -S315600150B00313FBFF821063FFDA05212080A3400101 -S315600150C01280000882152120DA0060040330000096 -S315600150D08210602080A34001028003E40100000089 -S315600150E07FFFB047901020207FFFF4761103C00048 -S315600150F0C025A1C09007BFE07FFFF2449215212031 -S31560015100C207BFE0DA05212080A3400112800007B3 -S3156001511082152120DA006004C207BFE480A3400142 -S31560015120028003D7010000007FFFB0359010201385 -S315600151301B180085901360E87FFFF23492152120D9 -S3156001514003180085DA0060E8C205212080A0400DC1 -S31560015150191800858215212012800007901320E816 -S31560015160DA006004C202200480A34001028003C900 -S31560015170010000007FFFB022901020131B180085EC -S31560015180901360D07FFFF2219215212019180085B6 -S31560015190C20320D0DA05212080A340018215212097 -S315600151A012800007981320D0DA006004C20320043D -S315600151B080A34001028003BC010000007FFFB010A4 -S315600151C0901020131B180085901360D87FFFF20F93 -S315600151D092152120C20720B0DA05212080A3400163 -S315600151E08215212012800007981720B0DA0060042A -S315600151F0C203200480A34001028003B01B0000703B -S315600152007FFFAFFF9010201303180085901060B8E0 -S31560015210C025A1C07FFFF1FD92152120C20720B0F4 -S31560015220DA05212080A34001821521201280000722 -S31560015230981720B0DA006004C203200480A34001FD -S315600152400280040F1B0000707FFFAFED90102013EA -S31560015250C025A1C09015E0C87FFFF1EC9215212011 -S31560015260C2052120DA05E0C880A0400D8215212003 -S31560015270128000079015E0C8DA006004C2022004BB -S3156001528080A3400102800407010000007FFFAFDCBC -S3156001529090102013170C00089A10200019100C00AA -S315600152A015300F789612E001D83FBFF0D43FBFC0EA -S315600152B09007BFF07FFFF1D59215212003100400FE -S315600152C0DA05212080A340011280000A821521207F -S315600152D0C200600480A06000128000060100000028 -S315600152E0C205A1C080A06000028000059007BFC012 -S315600152F07FFFAFC3901020139007BFC07FFFF1C33C -S3156001530092152120C2052120DA0720B080A0400D28 -S315600153108215212012800007981720B0DA006004F8 -S31560015320C203200480A34001028003E31B000070D6 -S315600153307FFFAFB390102013901660F07FFFF1B33B -S3156001534092152120C205A1C08330600E82086003D8 -S3156001535080A0600202800004211800807FFFAFA850 -S3156001536090102013C02421C07FFFF2981111F20022 -S315600153700310E80080A2000112800006010000000F -S31560015380C20421C080A06000028000040100000008 -S315600153907FFFAF9B901020137FFFF3CA11100000AF -S315600153A01101F5897FFFF289901221E20308E96410 -S315600153B080A200011280000601000000C205A1C0A2 -S315600153C080A0600002800004010000007FFFAF8CB6 -S315600153D0901020237FFFF27D1112A2080311410074 -S315600153E080A200011280000601000000C205A1C072 -S315600153F080A0600002800004010000007FFFAF8092 -S31560015400901020237FFFF3AF110010009007BFF0CB -S31560015410921660F07FFFF1649415212003100C0051 -S31560015420DA05212080A340011280000A821521201D -S31560015430C200600480A060001280000601000000C6 -S31560015440C205A1C080A0600002800005901660F0D0 -S315600154507FFFAF6B90102014901660F09207BFC06B -S315600154607FFFF1569415212003200000DA052120E3 -S3156001547080A340011280000A82152120C2006004C7 -S3156001548080A060001280000601000000C205A1C074 -S3156001549080A0600002800004010000007FFFAF5819 -S315600154A0901020147FFFF19190102001030FE0000E -S315600154B080A200011280000601000000C205A1C0A1 -S315600154C080A0600002800004010000007FFFAF4CF5 -S315600154D0901020147FFFF17D90102001030FFC00D6 -S315600154E080A200011280000880A26000128000067E -S315600154F001000000C205A1C080A060000280000416 -S31560015500010000007FFFAF3E901020147FFFF36D16 -S315600155101110100019180085D41B20D07FFFF1F9F6 -S31560015520D01E60F003180085D03D2120DA0060D8D6 -S31560015530C205212080A0400D191800858215212001 -S3156001554012800007901320D8DA006004C20220049A -S3156001555080A3400102800361010000007FFFAF2844 -S31560015560901020227FFFF35711100000170400806E -S31560015570150F28009612E0F09A102000190FFC0012 -S31560015580D43FBFC0D83FBFF09007BFF09207BFC0FE -S315600155907FFFF10594152120030FFC00DA05212018 -S315600155A080A340011280000682152120C20060049A -S315600155B080A0600002800004010000007FFFAF1040 -S315600155C0901020157FFFF33F112000001700004067 -S315600155D0150014009612E0019A102000190FFC00C4 -S315600155E0D43FBFC0D83FBFF09007BFF09207BFC09E -S315600155F07FFFF0ED94152120030FFC00DA052120D1 -S3156001560080A340011280000682152120C200600439 -S3156001561080A0600102800004010000007FFFAEF8F7 -S31560015620901020157FFFF32711300000170000400E -S31560015630152014009612E0019A102000192FFC0023 -S31560015640D43FBFC0D83FBFF09007BFF09207BFC03D -S315600156507FFFF0D594152120032FFC00DA05212068 -S3156001566080A340011280000682152120C2006004D9 -S3156001567080A0600102800004010000007FFFAEE0AF -S31560015680901020157FFFF30F11100000190FFC0019 -S315600156909A102000D83FBFF09007BFF09216E0E065 -S315600156A07FFFF0C194152120C206E0E0DA052120D2 -S315600156B080A3400182152120128000079816E0E040 -S315600156C0DA006004C203200480A340010280000462 -S315600156D0010000007FFFAECA901020157FFFF2F92E -S315600156E01120000017000040150014009612E00119 -S315600156F0190FFC009A102000D43FBFC0D83FBFF0FD -S315600157009007BFF09216E0E07FFFF0A79415212085 -S31560015710C206E0E0DA05212080A34001821521203E -S31560015720128000079816E0E0DA006004C2032004E4 -S3156001573080A3400102800004010000007FFFAEB03B -S31560015740901020157FFFF2DF113000001700004036 -S31560015750152014009612E0019A102000192FFC0002 -S31560015760D43FBFC0D83FBFF09007BFF09216E0E0CC -S315600157707FFFF08D94152120C2052120DA06E0E035 -S3156001578080A0400D82152120128000079016E0E06E -S31560015790DA006004C202200480A340010280000492 -S315600157A0010000007FFFAE96901020157FFFF2C5C5 -S315600157B01110000015100000961020019A102001AA -S315600157C0190FFC00D43FBFC0D83FBFF09007BFF0B0 -S315600157D09207BFC07FFFF079941521200310000066 -S315600157E0DA05212080A3400112800006821521205E -S315600157F0C200600480A06002028000040100000013 -S315600158007FFFAE7F901020157FFFF2AE1120000062 -S315600158109007BFF09207BFC07FFFF0689415212003 -S3156001582003100000DA05212080A3400112800006E2 -S3156001583082152120C200600480A0600302800004FA -S31560015840010000007FFFAE6E901020157FFFF29D74 -S31560015850113000009A102001192FFC00D83FBFF0CB -S315600158609007BFF09207BFC07FFFF05494152120C7 -S3156001587003300000DA05212080A340011280000672 -S3156001588082152120C200600480A0600302800004AA -S31560015890010000007FFFAE5A901020157FFFF2894C -S315600158A011100000150FFC04172F26159412A01273 -S315600158B09612E231190FFEAE1B1CD2E89A136011E3 -S315600158C098132154D43FBFC0D83FBFF09007BFF0B3 -S315600158D09207BFC07FFFF04794152120030FFEA7F3 -S315600158E082106296DA05212080A3400112800008A9 -S315600158F082152120DA006004032C1B348210602F8C -S3156001590080A3400102800004010000007FFFAE3CDD -S31560015910901020157FFFF26B112000009007BFF0F9 -S315600159209207BFC07FFFF03394152120030FFEA7B6 -S3156001593082106296DA05212080A340011280000858 -S3156001594082152120DA006004032C1B34821060303A -S3156001595080A3400102800004010000007FFFAE28A1 -S31560015960901020157FFFF25711300000192FFC04AB -S315600159701B2F26159A13623198132012D83FBFC088 -S315600159809007BFF09207BFC07FFFF01A94152120E0 -S31560015990032FFEA782106296DA05212080A34001BB -S315600159A01280000882152120DA006004032C1B3462 -S315600159B08210603080A34001028000040100000073 -S315600159C07FFFAE0F901020157FFFF23E1110000091 -S315600159D015101000961020009A102000191038003A -S315600159E0D43FBFC0D83FBFF09007BFF09207BFC09A -S315600159F07FFFF0009415212003102400DA05212091 -S31560015A0080A340011280000682152120C200600435 -S31560015A1080A0600002800004010000007FFFADF8F5 -S31560015A20901020157FFFF227112000009007BFF02C -S31560015A309207BFC07FFFEFEF94152120031024006A -S31560015A40DA05212080A340011280000682152120FB -S31560015A50C200600480A060000280000401000000B2 -S31560015A607FFFADE7901020157FFFF2161130000021 -S31560015A709007BFF09207BFC07FFFEFDE941521202C -S31560015A8003102400DA05212080A34001128000065C -S31560015A9082152120C200600480A06000028000049B -S31560015AA0010000007FFFADD6901020157FFFF20543 -S31560015AB011100000210FE000110020007FFFF0B9F6 -S31560015AC09214200180A220001280012301000000AF -S31560015AD07FFFF1FC11200000110020007FFFF0B173 -S31560015AE09214200180A2200012800118010000009A -S31560015AF07FFFF1F411300000921420017FFFF0A9BD -S31560015B001100200080A220001280010D010000001A -S31560015B107FFFF1EC111000009A102000190FFC00B4 -S31560015B20D83FBFF09007BFF07FFFEFB892152120F5 -S31560015B30C207BFF0DA05212080A340011280000769 -S31560015B4082152120DA006004C207BFF480A34001F8 -S31560015B50028002A7010000007FFFADA99010201509 -S31560015B607FFFF1D8112000009007BFF07FFFEFA7FC -S31560015B7092152120C207BFF0DA05212080A34001DA -S31560015B801280000782152120DA006004C207BFF483 -S31560015B9080A340010280029B010000007FFFAD9857 -S31560015BA0901020157FFFF1C7113000009007BFF0FC -S31560015BB07FFFEF9692152120C207BFF0DA052120FB -S31560015BC080A340011280000782152120DA0060045B -S31560015BD0C207BFF480A340010280028F010000006A -S31560015BE07FFFAD87901020157FFFF1B61110000081 -S31560015BF0030FDFFF901063FF7FFFF074A0100008B2 -S31560015C0080A2001002800004010000007FFFAD7CCD -S31560015C10901020157FFFF1AB112000007FFFF06B24 -S31560015C2090100010030FE00080A2000102800004C2 -S31560015C30010000007FFFAD72901020157FFFF1A17A -S31560015C40113000007FFFF0619010001080A20010FB -S31560015C5002800004010000007FFFAD6990102015ED -S31560015C607FFFF198901020007FFFF0609015212052 -S31560015C70032FFE00DA05212080A340011280000671 -S31560015C8082152120C200600480A0600002800005A8 -S31560015C90211801447FFFAD5A901020162118014446 -S31560015CA07FFFF05C90142128DA042128032FF0008D -S31560015CB080A3400102800004A21421287FFFAD5019 -S31560015CC0901020167FFFF05D90100011DA042128F4 -S31560015CD0030FE00080A34001028000040100000080 -S31560015CE07FFFAD47901020167FFFF064901521204D -S31560015CF0030FFBF7821063F0DA05212080A34001D0 -S31560015D001280000882152120DA0060040303FF1265 -S31560015D108210604A80A3400102800005921660F0FD -S31560015D207FFFAD3790102016921660F09007BFF096 -S31560015D307FFFEF3094152120C205A1C08330600E2C -S31560015D408208600780A0600202800005191800467B -S31560015D507FFFAD2B90102017191800461718008089 -S31560015D60DA02E1C8821321F880A0400DE00321F830 -S31560015D7002800004A212E1C87FFFAD2190102018B5 -S31560015D80C204600480A0401002800004010000008B -S31560015D907FFFAD1B90102018C204600880A06000D0 -S31560015DA01280007701000000C204600C80A06000D0 -S31560015DB01280006C010000007FFFEEE6010000002A -S31560015DC080A220010280019801000000190C40297F -S31560015DD01B23CD1B9A13609B9813200694102000F9 -S31560015DE096102000D83FBFF0D43FBFC07FFFEF2F92 -S31560015DF09007BFF003180083A21062101B18008180 -S31560015E0003180144A0136210A4106120B010200091 -S31560015E10832E2002DA044001DA27BFC09007BFC093 -S31560015E207FFFEF25921521209B2E2003D804000DBC -S31560015E30C2052120B00620019603401080A300010F -S31560015E401280000790102019DA02E004C204A0044F -S31560015E5080A340010280000580A620FF7FFFACE899 -S31560015E600100000080A620FF04BFFFEB832E200205 -S31560015E7003180083A41062101B18008003180144E4 -S31560015E80A2136210A6106120B0102000A12E20027C -S31560015E90C2048010C227BFC0921521207FFFEEDBAE -S31560015EA09007BFC0DA044010C2052120B006200267 -S31560015EB09804001180A34001128000079010201AF7 -S31560015EC0DA032004C204E00480A3400102800005D5 -S31560015ED080A620FF7FFFACCA0100000080A620FFDC -S31560015EE024BFFFECA12E200230800211C205A1C0A1 -S31560015EF080A0600022BFFB8FB0863FFF30BFFB8A68 -S31560015F00C205A1C080A0600002BFF145010000008A -S31560015F1030BFF141C205A1C080A0600002BFF13669 -S31560015F200100000030BFF132C205A1C080A060004F -S31560015F3002BFF1270100000030BFF1237FFFACB043 -S31560015F409010201530BFFEF37FFFACAD9010201589 -S31560015F5030BFFEE87FFFACAA9010201530BFFEDD92 -S31560015F607FFFACA79010201830BFFF947FFFACA4D1 -S31560015F709010201010BFF678111800847FFFACA036 -S31560015F809010201830BFFF89C207BFCC80A0600087 -S31560015F9012BFF8F501000000C20421C08208401555 -S31560015FA09A16A00880A0400D12BFF8EF010000000C -S31560015FB010BFF8F015108683C205A1C09A13601F41 -S31560015FC0190000108208400D9813200880A0400C2B -S31560015FD012BFFB7D1118008510BFFB7F9012205008 -S31560015FE0C205A1C09A13601F190000108208400DF6 -S31560015FF09813200880A0400C12BFFB8611180085FB -S3156001600010BFFB8890122068C205A1C09A13601F59 -S31560016010190000108208400D9813200480A0400CDE -S3156001602012BFFB8F1118008510BFFB919012208063 -S31560016030C205A1C09A13601F190000108208400DA5 -S315600160409813200880A0400C12BFFB980100000045 -S3156001605030BFFB98C205A1C080A0600002BFFBFEF5 -S31560016060111FD00030BFFBF9C205A1C080A060003E -S3156001607002BFFC1E0100000030BFFC1AC205A1C0B0 -S3156001608080A0600002BFFC2C1B18008530BFFC2776 -S31560016090C205A1C080A0600002BFFC3A1B18008542 -S315600160A030BFFC35C205A1C080A0600002BFFC47BD -S315600160B01B18008530BFFC42C205A1C09A13601F40 -S315600160C0190000108208400D9813201080A0400C22 -S315600160D012BFFC4C0318008510BFFC4E901060B8CF -S315600160E0C205A1C09A13601F190000108208400DF5 -S315600160F09813200480A0400C12BFFB201118008564 -S3156001610010BFFB2290122038C205A1C080A060009A -S3156001611022BFF8D0150FFFFF30BFF8CBC205A1C073 -S3156001612080A0600002BFF8100318008530BFF80B2D -S31560016130C205A1C09A13601F190000108208400DA4 -S315600161409813201080A0400C12BFF8169015E0C875 -S3156001615010BFF818921660F0C205A1C080A0600059 -S3156001616002BFF9491B18008530BFF944C205A1C0B9 -S3156001617080A0600002BFF9579007BFF030BFF952A7 -S31560016180C205A1C080A0600002BFF9631B1800852B -S3156001619030BFF95EC205A1C09A13601F19000010D5 -S315600161A08208400D9813201080A0400C12BFF96937 -S315600161B09007BFF010BFF96B921660F0C20461C020 -S315600161C080A0600002BFF74B1B18008530BFF74601 -S315600161D0C205A1C080A0600002BFF75A9016E0E038 -S315600161E030BFF755C205A1C09A13601F1900001090 -S315600161F08208400D9813201080A0400C12BFF75FF3 -S315600162000100000030BFF75FC205A1C080A0600039 -S3156001621002BFF76F1B18008530BFF76AC205A1C0C0 -S315600162209A13601F190000108208400D9813201000 -S3156001623080A0400C12BFF7750100000030BFF775F2 -S31560016240C20461C080A0600002BFF7949015E0C8E7 -S3156001625030BFF78FC205A1C080A0600002BFF7A062 -S315600162609015E0C830BFF79BC205A1C080A0600051 -S3156001627002BFF7AC9015E0C830BFF7A7C205A1C051 -S315600162809A13601F190000108208400D98132010A0 -S3156001629080A0400C12BFFBED0100000030BFFBED9A -S315600162A0C205A1C080A0600002BFFBFC170C0008FC -S315600162B030BFFBF7C205A1C09A13601F1900001019 -S315600162C08208400D9813201080A0400C12BFFC1963 -S315600162D0901660F030BFFC1AC205A1C080A06000B4 -S315600162E002BFFCA10100000030BFFC9DC20461C079 -S315600162F080A0600002BFF9E59015E0C830BFF9E003 -S31560016300C205A1C080A0600002BFF9F19015E0C886 -S3156001631030BFF9ECC205A1C080A0600002BFF9FDE3 -S315600163209015E0C830BFF9F8C205A1C080A0600031 -S3156001633002BFFA091918008530BFFA04C20461C0A8 -S3156001634080A0600002BFF9250318008530BFF920DF -S31560016350C205A1C09A13601F190000108208400D82 -S315600163609813201080A0400C12BFF92C0100000088 -S3156001637030BFF92CC205A1C080A0600002BFF93C04 -S315600163801B18008530BFF937C205A1C09A13601F7B -S31560016390190000108208400D9813201080A0400C4F -S315600163A012BFF9429007BFE810BFF944921660F038 -S315600163B0C20461C080A0600002BFF95F9016E0E090 -S315600163C030BFF95AC205A1C09A13601F19000010A7 -S315600163D08208400D9813201080A0400C12BFF9640A -S315600163E00100000030BFF964C205A1C080A0600051 -S315600163F002BFF9740318008530BFF96FC205A1C0E9 -S315600164009A13601F190000108208400D981320101E -S3156001641080A0400C12BFF97A9016E0E010BFF97CBB -S31560016420921660F07FFFAB769010201910BFFE695F -S31560016430190C4029D80061C01B0000709A13601FB7 -S3156001644003000010980B000D8210600880A3000104 -S3156001645012BFF5501118008410BFF55290122360D7 -S31560016460C205A1C09A13601F190000108208400D71 -S315600164709813200480A0400C12BFF55811180084AF -S3156001648010BFF55A90122378C205A1C09A13601FF6 -S31560016490190000108208400D9813200480A0400C5A -S315600164A012BFF5600100000030BFF560C205A1C0F2 -S315600164B080A0600002BFF4A90318008530BFF4A470 -S315600164C0C205A1C080A0600002BFF4939015E0C828 -S315600164D030BFF48EC205A1C080A0600002BFF47D0A -S315600164E09015E0C830BFF478C20461C080A0600036 -S315600164F002BFF4679015E0C830BFF462C205A1C05F -S315600165009A13601F190000108208400D981320022B -S3156001651080A0400C12BFF5B61B18008510BFF5B8F8 -S31560016520921360D0C205A1C080A0600002BFF5C50C -S315600165309007BFF030BFF5C0C205A1C080A0600062 -S3156001654002BFF5D10318008530BFF5CCC205A1C0E5 -S315600165509A13601F190000108208400D98132010CD -S3156001656080A0400C12BFF5D79007BFF010BFF5D9D8 -S31560016570921660F0C20461C080A0600022BFF5F38C -S315600165801918008530BFF5EEC205A1C09A13601FC8 -S31560016590190000108208400D9813201080A0400C4D -S315600165A012BFF5F91B18008510BFF5FB03180085AE -S315600165B0C205A1C080A0600002BFF60B9007BFE8CC -S315600165C030BFF606C205A1C080A0600002BFF61703 -S315600165D01B18008530BFF612C20421C080A060007E -S315600165E022BFF03E113C02AF30BFF039C205A1C0F7 -S315600165F080A0600002BFFD5B0100000030BFFD5757 -S31560016600C205A1C080A0600002BFFD670100000055 -S3156001661030BFFD63C205A1C080A0600002BFFD73EB -S315600166200100000030BFFD6FC205A1C080A06000FF -S3156001663002BFF2D70318008530BFF2D2C205A1C0EE -S3156001664080A0600002BFF2C19007BFF030BFF2BC0C -S31560016650C205A1C080A0600002BFF2AA37180085FA -S3156001666030BFF2A5C205A1C080A0600002BFF028BC -S315600166701111FC0030BFF023C205A1C09A13601F3F -S31560016680190000108208400D9813201080A0400C5C -S3156001669012BFF3DD9016E0E010BFF3DF921660F0F3 -S315600166A0C205A1C080A0600002BFF39E1B180085D1 -S315600166B030BFF399C205A1C080A0600002BFF38616 -S315600166C01B18008530BFF381C205A1C080A06000A0 -S315600166D002BFF36E1B18008530BFF369C20461C047 -S315600166E080A0600002BFF3589016E0E030BFF3531C -S315600166F0C205A1C080A0600002BFF30E1918008513 -S3156001670030BFF309C205A1C080A0600002BFF2F8E4 -S315600167109007BFE830BFF2F3C20461C080A0600099 -S3156001672002BFF2E29007BFE830BFF2DD81C7E00841 -S3156001673081E80000D27A000081C3E0080100000010 -S3156001674081C3E008900A20209332600492126001AE -S315600167508213C0007FFFFFF89E1040000100000019 -S3156001676081D8200081C3E008010000009DE3BF9845 -S315600167707FFFFFFC0100000082102400C0A04300DF -S3156001678081C7E00881E80000833220189A1000086A -S315600167908088600F028000049010200083336010AF -S315600167A09008600381C3E008010000009DE3BF9883 -S315600167B0031800C01B1800C1B0106000A21360006E -S315600167C0031800C21B1800C2A4106000A613610062 -S315600167D0031800201B180020A8106158AA13600036 -S315600167E07FFFEBAD9010200C808A2008028001FDAE -S315600167F0010000007FFFAA7D9010200ED08003204B -S315600168007FFFFFE2010000000318014380A220021E -S31560016810028000C6D02060D080A22002148000E4ED -S3156001682080A2200380A22001028000D1821020195B -S31560016830331800A02F1800A0391800A0371800A03F -S31560016840351800A07FFFFFC7210100007FFFFFC849 -S31560016850BA04A00C921000117FFFFFBC90100018C3 -S31560016860921000117FFFFFB990062004901000116D -S315600168707FFFFFB19210200ADA066014110800004A -S31560016880913A000DC205E010900A0001912A20029A -S3156001689013008000900200117FFFFFA79212600A29 -S315600168A0DA06601411100000913A000DC205E0107D -S315600168B0900A0001912A2002900200117FFFFF9E3B -S315600168C09214208EDA066014111C0000913A000DB4 -S315600168D0C205E010900A0001912A20021301C0004E -S315600168E0900200117FFFFF949212608E9334A00490 -S315600168F09004600C7FFFFF90921260019214201E3B -S315600169007FFFFF8D9004A0089010001D7FFFFF8A16 -S31560016910921020009334E004921260017FFFFF869B -S315600169209004A004111800C2901221087FFFFF8213 -S3156001693092102000031800E0A01060009334200438 -S31560016940111800C2901221047FFFFF7B9212601A18 -S3156001695003048D1582106278C2242004111800E0A8 -S3156001696015180120C0222000A2102003AC12A0003D -S31560016970A004E00C90047FFD40000A73921020038E -S315600169801B180143C20360D08200600C932A000188 -S315600169909202401693326004901000107FFFFF66EA -S315600169A09212601EA204600180A4600A04BFFFF215 -S315600169B0A0042004C206E008D807200C8208600102 -S315600169C08328400CD605E010111800E0D406A0001B -S315600169D0DA06601498122000960AE003972AC00D21 -S315600169E0920AA002111800A0DA022004940AA001FA -S315600169F0952A800D932A400D1B1800209612C0011E -S31560016A00E8236150030100001B0076418210601E7D -S31560016A109A1361C09212C00999332004C2252004D9 -S31560016A20DA2520089612C00A9E13200E913560045D -S31560016A301B1800C2031800C2821061049012201E46 -S31560016A40953620049813201E9A136108D625202CAA -S31560016A50D8252010D025201CD2252020DE252028EF -S31560016A60D6252014940ABFF0FA250000DA252018ED -S31560016A70C2252024C225200CA2102100D4A44320C3 -S31560016A80C2800320D88443209A102001A0102200DE -S31560016A90DAA40320D884032082102000C2A4032034 -S31560016AA0DAA0032081D820007FFFC55901000000CC -S31560016AB0C2800320E2844320E0840320DA05E010EB -S31560016AC0D6066014C206E0089A0B60039B2B400B46 -S31560016AD082086001D407200CD806A000111800A016 -S31560016AE08328400A980B2001D60220049A1340019C -S31560016AF0992B000B9A13400CC203400080A06000E2 -S31560016B0012800008821360041B048D15D8004000B2 -S31560016B109A13627880A3000D02800038C205E010E6 -S31560016B2010800000010000008210201A331800A0B6 -S31560016B30C22660149810203F2F1800A0391800A0B3 -S31560016B40351800A09A1020148210200E151800A086 -S31560016B50371800A0DA27200CC222A004D826A0008C -S31560016B60D825E01010BFFF38D826E0089A10207F9C -S31560016B70331800A02F1800A0C2266014DA25E01091 -S31560016B809810203F391800A0351800A082102013F4 -S31560016B909A10200D111800A0371800A0C227200CEA -S31560016BA0DA22200410BFFFF0D826A00012BFFF2210 -S31560016BB0331800A08210201CC22660149A1020157A -S31560016BC08210207F391800A0371800A0DA27200C20 -S31560016BD0C226E0089810200F2F1800A0351800A0D3 -S31560016BE01B1800A08210203FD8236004C226A00093 -S31560016BF010BFFF15D825E010DA06E008D806601444 -S31560016C00820860039A0B6002D607200C8328400C29 -S31560016C109B2B400B8210400DD80040001B100000DA -S31560016C20C203400080A3000102800004D406E0088C -S31560016C301080000001000000C205E010980AA00162 -S31560016C40D207200CD6066014820860038328400BA5 -S31560016C50992B0009940AA0039810400CDA06A0004B -S31560016C60111800A0952A80099A0B6001D6022004AA -S31560016C708210400AC20040009B2B400B9813000D06 -S31560016C800321D9509813200482106321C223000086 -S31560016C90DA03000080A3400102800004C206E00816 -S31560016CA01080000001000000D407200CDA05E01016 -S31560016CB082086001D60660148328400A9A0B600335 -S31560016CC0D806A0009B2B400B151800A0D602A00485 -S31560016CD0980B20019A134001992B000B9813400CD5 -S31560016CE08210000C05048D158410A278072AF37BA7 -S31560016CF08610E301C4384000C438400003048D1592 -S31560016D00DA0300008210627880A3400102800004E9 -S31560016D108213200410800000010000001B2AF37B0F -S31560016D20D80040009A13630180A3000D12BFFFFAD9 -S31560016D30C205E010D6066014D806E0088208600332 -S31560016D40D407200C8328400B980B2001DA06A0009B -S31560016D50111800A0992B000A9A0B6003D602200431 -S31560016D608210400C9B2B400B15180143A010400D5F -S31560016D70F002A0D0A2102003E0240000C0A00220EF -S31560016D80921020034000097090047FFD8206200C5A -S31560016D9098102001912A0001992B00011B180120EE -S31560016DA09610000182136000DA02000180A3401090 -S31560016DB0A204600112800087A004000C80A4600A0E -S31560016DC024BFFFEFE0240000C0A0022003180120C9 -S31560016DD0A810000BAA106000A0102000A2102003CA -S31560016DE090047FFD4000095892102003832C6002B5 -S31560016DF0912A0014DA04C00190020015820B6060CA -S31560016E009132200480A000019012201EA040001043 -S31560016E109A0B7F9F900A3F9F80A340081280006F64 -S31560016E20A204600180A4600A24BFFFEF90047FFD85 -S31560016E3080A4200012800004C205E01010800000CA -S31560016E4001000000D6066014D806E00882086003D7 -S31560016E50D407200CDA06A000111800A08328400B85 -S31560016E60980B2001992B000AD60220049A0B600226 -S31560016E708210400C9B2B400BAA10400D9FC5400011 -S31560016E800100000082102400C0A04300C0A00220BF -S31560016E90A0102000A21020039B2C6002C204C00D2A -S31560016EA08208606080A00001A0400010A204600119 -S31560016EB080A4600A24BFFFFA9B2C600280A420088C -S31560016EC022800004D004E00410800000010000006C -S31560016ED0808A204002800007010000007FFFFE19C2 -S31560016EE00100000080A22000128000040100000061 -S31560016EF010800000010000007FFFFE12D004A00890 -S31560016F0080A22000128000040100000010800000B1 -S31560016F10010000007FFFFE0BD004E00880A2200084 -S31560016F2012800004010000001080000001000000D2 -S31560016F3083480000842860808188A00001000000E9 -S31560016F400100000001000000D806E008D407200C0B -S31560016F50DA05E010980B2001D6066014992B000A19 -S31560016F609A0B6003C206A0009B2B400B151800A06C -S31560016F70D602A004820860018328400B9A13400C54 -S31560016F809A1340019A136004C203400092102004D0 -S31560016F9091D02002010000007FFFC41D01000000A6 -S31560016FA0981020009A102200D8A343208210200155 -S31560016FB0C2A34320D8A3432003100000DA80438094 -S31560016FC0DAA04380D8A0032081D820003080000554 -S31560016FD01080000001000000108000000100000028 -S31560016FE081C7E00891E820009DE3BF98400007D182 -S31560016FF001000000808A21000280003F010000003C -S315600170007FFFA88E01000000912A20047FFFA877E8 -S31560017010900220050318014082106048DA0060047E -S3156001702080A360002280001503180140B0100001A2 -S31560017030C20600009B38601F81836000DA06200467 -S3156001704001000000010000008278400DDA06200888 -S31560017050B006200C80A0400D028000049010200133 -S315600170607FFFA86701000000C206200480A06000BF -S3156001707012BFFFF00318014082106000DA0060045D -S3156001708080A360000280001501000000B0100001BD -S31560017090C206000081800000DA06200401000000BB -S315600170A0010000009A70400D8210000DDA0620087A -S315600170B0B006200C80A0400D0280000490102002D2 -S315600170C07FFFA84F01000000C206200480A0600077 -S315600170D012BFFFF00100000040000824010000001B -S315600170E080A2200012800004010000007FFFA844F6 -S315600170F09010200381C7E00891E820009DE3BF98C6 -S315600171007FFFA84E01000000912A20047FFFA83767 -S3156001711090022004400007890100000080A221231B -S3156001712002800004010000007FFFA8359010200155 -S315600171304000078001000000808A21000280002B48 -S315600171400318014082106184DA00600880A3600937 -S315600171500280001101000000B0100001C2060000AB -S31560017160DA062004D80620088258400DB006200CA5 -S3156001717080A0400C02800004901020027FFFA820AE -S3156001718001000000C206200880A0600912BFFFF45A -S3156001719001000000400007760100000080A2200087 -S315600171A00280000F0100000040000762010000003C -S315600171B0808A22000280000D010000004000079EC7 -S315600171C00100000080A2200012800008010000007A -S315600171D07FFFA80B90102004308000047FFFA80871 -S315600171E09010200330BFFFF181C7E00891E82000CD -S315600171F09DE3BFA0941020001118005C9012222418 -S315600172001318005C921262281718005C9612E2301D -S315600172101918005C9813223493C2000081C24000A1 -S315600172201080019181C2C00081C300001080018E6F -S315600172309402A0019402A00180A2A0031280018A97 -S3156001724001000000874400008D30E00E8C89A007A4 -S3156001725080A1A000028000C701000000AF30E00BF2 -S31560017260AE0DE00780A5E000128000C201000000BB -S3156001727080A1A002128000350100000025100000E7 -S31560017280E41C80002510000029100000A8152104C7 -S31560017290A6100012AA100012AC100014A18020469C -S315600172A0A4100000AA10000001000000A180204E79 -S315600172B0A810210001000000A1800000010000006B -S315600172C001000000E83CA03082A4801312800166B0 -S315600172D082A5001612800164010000000100000011 -S315600172E001000000874400008D30E00B8C89A00707 -S315600172F08CA1A0051280015CA18000000100000044 -S315600173000100000001000000E81CA03082A5001603 -S315600173101280015582A54012A4100000128001520C -S315600173200100000001000000874400008D30E00B81 -S315600173308C89A0078CA1A0031280014B010000007B -S315600173401080008C0100000080A1A0011280002342 -S3156001735025100000E41C80002510000029100000A3 -S31560017360A8152104A6100012AA100012AC10001470 -S31560017370A1802046A4100000AA10000001000000B0 -S31560017380A180204EA810210001000000A18000000C -S31560017390010000000100000001000000E83C8000DF -S315600173A082A480131280013082A500161280012EFC -S315600173B00100000001000000874400008D30E00BF1 -S315600173C08C89A0078CA1A002128001270100000010 -S315600173D0108000680100000080A1A0031280006592 -S315600173E0A6100000A210200EA1844000A610000085 -S315600173F0A1800000A814E000AB4400000100000079 -S31560017400AC14E00001000000AF44000080A520003C -S3156001741012800115AA8D6E0080A5400012800112AE -S3156001742080A5A00012800110AF35E00BAE0DE0071C -S3156001743080A5E0011280010C01000000A01000008F -S31560017440A1844000A6100000A1800000E818000099 -S31560017450AC100000AE100000EC04C000EE04E004C5 -S3156001746080A500161280010080A54017128000FEDB -S3156001747001000000A5440000A534A00BA40CA007E0 -S3156001748080A4A001128000F801000000A010000095 -S31560017490A1844000A6100000A1800000A210200A6D -S315600174A0A1844000A4100000A1800000E81800003B -S315600174B0AC100000AE100000EC04C012EE04E00453 -S315600174C080A50016128000E880A54017128000E6AC -S315600174D001000000A5440000A534A00BA40CA00780 -S315600174E080A4A002068000E001000000211801408E -S315600174F0A0142200EC1C0000A0042008E81C000077 -S31560017500A1844000A6100000A1800000A210200EF8 -S31560017510A1844000A4100010AC100000AE10000061 -S31560017520A18000000100000001000000EC3C801316 -S31560017530AC100000AE100000E81CC01280A5001659 -S31560017540128000C980A54017128000C701000000A3 -S31560017550A5440000A534A00BA40CA00780A4A00438 -S31560017560128000C1010000001080000201000000CD -S315600175708B4440008A09601F80A160010280000A75 -S315600175808C1000059DE3BFA08AA1600116BFFFFEB6 -S315600175900100000081E800008CA1A00116BFFFFE7A -S315600175A0010000000100000001000000A023A0808E -S315600175B0A02C20078E100010A3480000E2240000D2 -S315600175C0C2242004C43C2008C83C2010CC3C2018AE -S315600175D0F03C2020F43C2028F83C2030FC3C20384C -S315600175E0D03C2040D43C2048D83C2050DC3C20583C -S315600175F0A5500000E424206080102008821020013C -S315600176008410200286102003881020048A10200529 -S315600176108C10200681900000A42C601F818C800054 -S31560017620010000000100000001000000030040406D -S3156001763082106101841000008610000089444000B8 -S315600176408809201F86100004A010000284004002F1 -S31560017650A210000284004002A410000284004002CD -S31560017660A610000284004002A810000284004002B5 -S31560017670AA10000284004002AC100002840040029D -S31560017680AE100002840040029010000284004002A5 -S3156001769092100002840040029410000284004002AD -S315600176A09610000284004002981000028400400295 -S315600176B09A100002840040029C100002840040027D -S315600176C09E1000028400400281E0000086A0E00175 -S315600176D016BFFFDE01000000030040408210610119 -S315600176E0841000008610000480A400021280003F0E -S315600176F08400400280A440021280003C8400400263 -S3156001770080A48002128000398400400280A4C002F5 -S31560017710128000368400400280A500021280003388 -S315600177208400400280A5400212800030840040023D -S3156001773080A580021280002D8400400280A5C002CF -S315600177401280002A8400400280A200021280002773 -S315600177508400400280A2400212800024840040021C -S3156001776080A28002128000218400400280A2C002B1 -S315600177701280001E8400400280A300021280001B5A -S315600177808400400280A340021280001884004002F7 -S3156001779080A38002128000158400400280A3C0028B -S315600177A0128000128400400281E0000086A0E001A0 -S315600177B016BFFFCE0100000080A020001280000BE2 -S315600177C080A0FFFF1280000980A16005128000077A -S315600177D080A1A0061280000501000000A01000072C -S315600177E010800006C0242020A01000079010200100 -S315600177F010800002D024202082100007C4004000BF -S315600178008188800001000000010000000100000085 -S31560017810C4186008C8186010CC186018F018602089 -S31560017820F4186028F8186030FC186038D018604089 -S31560017830D4186048D8186050DC186058E40060605D -S31560017840C200600481948000010000000100000014 -S3156001785001000000A0100007F004202081C7E008A5 -S3156001786081E8000010BFFFFCB010000001000000BD -S3156001787081D8200081C3E008010000001B18014483 -S31560017880D8036150821020018328400C1B180144E3 -S3156001789082007FFFD803615482084008932A400C16 -S315600178A0900040098213C0007FFFE77F9E10400071 -S315600178B0010000001B180144D803615082102001A9 -S315600178C08328400C1B18014482007FFFD803615452 -S315600178D0932A400C82084008900040099210000AE1 -S315600178E08213C0007FFFE7729E1040000100000016 -S315600178F01B180144D8036150821020018328400C73 -S315600179001B18014482007FFFD8036154932A400CFF -S3156001791082084008900040099210000A8213C00054 -S315600179207FFFE7679E104000010000001B180144BD -S31560017930D8036150821020018328400C1B18014432 -S3156001794082007FFFD803615482084008932A400C65 -S31560017950900040098213C0007FFFE7579E104000E8 -S31560017960010000001B180144D803615C82102001EC -S315600179708328400C1B18014482007FFFD803616C89 -S31560017980932A400C82084008900040099210000A30 -S315600179908213C0007FFFE74E9E1040000100000089 -S315600179A01B180144D803615C821020018328400CB6 -S315600179B01B18014482007FFFD803616C932A400C37 -S315600179C082084008900040099210000A8213C000A4 -S315600179D07FFFE7439E104000010000009DE3BF5812 -S315600179E02D180144A2102000C205A16080A44001A7 -S315600179F01680001BA01020002B1801442918014491 -S31560017A0027180144A4102001D005615C912C8008DF -S31560017A10C205216C90023FFF832C0001900A001879 -S31560017A207FFFE72990020001C204E14C901E000825 -S31560017A30900A000180A00008A2647FFFA0042001D3 -S31560017A40C205A16080A4000126BFFFF1D005615C7B -S31560017A5080A4600012800003B0102000B0102001E5 -S31560017A6081C7E00881E800001B180144D803615C06 -S31560017A70821020018328400C1B18014482007FFF7D -S31560017A80D803616C82084008932A400C9000400933 -S31560017A908213C0007FFFE70C9E10400001000000CA -S31560017AA01B180144D803615C821020018328400CB5 -S31560017AB01B18014482007FFFD803616C820840086D -S31560017AC0932A400C900040098213C0007FFFE702B1 -S31560017AD09E10400001000000952AA00D03280000B9 -S31560017AE094028009D02040009422B000D420600422 -S31560017AF081C3E00801000000033FFFBF821062F806 -S31560017B009DE38001193FFFBF94132368B407BFF853 -S31560017B10031800459606800A82106020C222E00C96 -S31560017B2003180044821063E0C222E0041B1800447B -S31560017B309A1363C0033FFFBFDA26800A901323803E -S31560017B40331800458210635C94068008981323C03D -S31560017B50921660008200401ED222E008D4204000C6 -S31560017B60B006800C7FFFA5A1901020067FFFE6CAB4 -S31560017B7090102000920A3FF07FFFE6C99010200026 -S31560017B80210000307FFFE6C490102000808A00103B -S31560017B9012BFFFFD010000007FFFFF3621000030AC -S31560017BA07FFFE6BD90102000808A001012BFFFFDA6 -S31560017BB0010000007FFFE6B890102000030020401E -S31560017BC08210600F921200017FFFE6B590102000CF -S31560017BD07FFFE6B19010200821180144D024214886 -S31560017BE07FFFE6AD9010200CA73A2010993A201439 -S31560017BF0A60CE007980B200FDA042148A82300138E -S31560017C00A80520089F3B6014933B60109B3B60185E -S31560017C1094050013A2102001AC03200A9E0BE00F0D -S31560017C2096102400AE0B60039402A002212000008E -S31560017C30992AC00C1B1801448203E00A952C400A5C -S31560017C409424000A832C4001D8236168A024000192 -S31560017C501B18014403180144EC23615C972AC00F89 -S31560017C60AA03E00A1B180144D620614403180144A3 -S31560017C70EA236154EA2061501B1801440318014448 -S31560017C80D423614C920A6007A53A2018D020615826 -S31560017C90153FFFBF932C4009A40CA00303180144B0 -S31560017CA09412A358932C4009A404A00139180144E5 -S31560017CB037180144EC20616C9B2C40149402801EA1 -S31560017CC0E0272164E426E160AA027FFFDA228000D0 -S31560017CD0AC85E0010280000CBB2C4013033FFFBF63 -S31560017CE082106368A0068001A4100016D00400000B -S31560017CF09FC20000A0042004A484BFFF32BFFFFD21 -S31560017D00D00400007FFFE66490102000920A3FFCD9 -S31560017D107FFFE66390102000A410200080A48016E7 -S31560017D2016800022A2102000033FFFBFAE106368D9 -S31560017D30A610001AA010200080A400163680001834 -S31560017D40A404A00110800005A810001780A40016E5 -S31560017D5036800013A404A001921000107FFFFEC8B4 -S31560017D60D004C014820A001580A0401512BFFFF826 -S31560017D70A0042001C204C01482184008DA072164F5 -S31560017D808208400D80A00001A2647FFF80A40016D6 -S31560017D9006BFFFF392100010A404A00180A4801610 -S31560017DA006BFFFE5A604E0047FFFE63B90102000D6 -S31560017DB0A6100008901020007FFFE6399214E003B8 -S31560017DC080A46000028001B101000000833CE00CE8 -S31560017DD080886003128000A5030048D1833CE013CC -S31560017DE080886003128001AD010000007FFFFEA163 -S31560017DF0210000307FFFE62890102000808A001065 -S31560017E0012BFFFFDA6100008A4102000C206E160A3 -S31560017E1080A480011680000D832CA00292100012AE -S31560017E20901000187FFFFED094102000A404A001DA -S31560017E30C206E16080A4800106BFFFFA92100012BB -S31560017E40A4102000832CA002A404A001C026000176 -S31560017E5080A4A01E04BFFFFD832CA0028210200512 -S31560017E60C22600009A102001DA2620048210200220 -S31560017E70C22620089A102003DA26200C7FFFFED83E -S31560017E809010001880A22000028001D3010000003A -S31560017E90C206000080A060050280000401000000A7 -S31560017EA07FFFA4D7901020067FFFFECD90100018AB -S31560017EB080A22000128001C401000000A4102000ED -S31560017EC0C206E16080A480011680000F9210001244 -S31560017ED0A0062004941020007FFFFEB290100018C7 -S31560017EE092100012901000107FFFFEAE94102000D9 -S31560017EF0A404A001C206E16080A4800106BFFFF66A -S31560017F00921000127FFFE5FA901000187FFFE5F8E6 -S31560017F10900620207FFFE5F6900620407FFFE5F47E -S31560017F2090062060A4102000C206E16080A4800152 -S31560017F3006800196A21020007FFFA4B19010200850 -S31560017F40173FFFBF8212E3C0940680018212E35C91 -S31560017F508200401ED81A8000C2004000D838400016 -S31560017F609612E380C206800B80A06005128000062F -S31560017F708206800BDA00600480A36001028000053E -S31560017F80A41020007FFFA49E90102009A410200059 -S31560017F90C206E16080A4800116800011A210200053 -S31560017FA0A0062004921000127FFFFEBE9010001002 -S31560017FB0901A200180A00008A2647FFFA404A0019A -S31560017FC0C206E16080A4800106BFFFF8921000122C -S31560017FD080A4600102800005833CE0137FFFA488D2 -S31560017FE09010200A833CE013808860031280018030 -S31560017FF082102005C22600009A102001DA2620048C -S3156001800082102002C22620089A102003DA26200C4C -S315600180101B3FFFBF9A1363589A03401ED00340006B -S315600180204000048D9210001D032EEEEEA12A20025F -S31560018030A21063BBE22600107FFFFE699010001854 -S3156001804080A220001280016701000000C2060010B4 -S3156001805080A0401102800005030048D17FFFA4681B -S3156001806090102012030048D1821061671B226AF3C7 -S31560018070C22620209A1361EFDA262024C20E202020 -S3156001808080A0600102800004010000007FFFA45C03 -S315600180909010201AC20E202180A060230280000465 -S315600180A0010000007FFFA4569010201BC20E202203 -S315600180B080A0604502800004010000007FFFA4509B -S315600180C09010201CC20E202380A0606702800004ED -S315600180D0010000007FFFA44A9010201DC20E2024DB -S315600180E080A0608902800004010000007FFFA44433 -S315600180F09010201EC20E202580A060AB0280000475 -S31560018100010000007FFFA43E9010201FC20E2026B2 -S3156001811080A060CD02800004010000007FFFA438CA -S3156001812090102020C20E202780A060EF02800004FC -S31560018130010000007FFFA43290102021C21620208A -S31560018140832860108330601080A061230280000460 -S31560018150010000007FFFA42A90102022DA16202257 -S315600181609B2B6010030000119B33601082106167C6 -S3156001817080A3400102800004010000007FFFA4206B -S3156001818090102023DA1620249B2B60100300002216 -S315600181909B336010821061AB80A3400102800004B2 -S315600181A0010000007FFFA41690102024DA16202615 -S315600181B09B2B6010030000339B336010821061EFCC -S315600181C080A3400102800005821020307FFFA40C4D -S315600181D09010202582102030C22E2020030C08D159 -S315600181E0DA0620208210616780A3400102800005C3 -S315600181F0821020317FFFA402901020278210203147 -S31560018200C22E2021030C0C51DA06202082106167F0 -S3156001821080A3400102800005821020327FFFA3F80F -S315600182209010202882102032C22E2022210C0C4C64 -S31560018230DA0620208214226780A3400102800005AD -S31560018240821020337FFFA3EE901020298210203305 -S31560018250C22E20239A142233C206202080A0400D0C -S3156001826002800005821020347FFFA3E59010202A4A -S3156001827082102034C22E2024030D2AF3DA0620242C -S31560018280821061EF80A340010280000582102035D3 -S315600182907FFFA3DB9010202B82102035C22E202574 -S315600182A0030D0D73DA062024821061EF80A340016D -S315600182B002800005821020367FFFA3D19010202C0A -S315600182C082102036C22E2026210D0D4DDA0620247D -S315600182D0821422EF80A340010280000582102037BC -S315600182E07FFFA3C79010202D82102037C22E202732 -S315600182F09A142237C206202480A0400D0280000510 -S31560018300210000107FFFA3BE9010202E21000010D7 -S3156001831082142041C23620200310104CDA06202038 -S315600183208210623380A340010280000582142243D9 -S315600183307FFFA3B39010202F82142243C2362022DE -S3156001834003101050DA0620208210624380A3400198 -S3156001835002800005210000117FFFA3A99010203043 -S315600183602100001182142045C23620240311114DCB -S31560018370DA0620248210623780A34001028000055C -S31560018380821422477FFFA39E9010203182142247D8 -S31560018390C236202603111151DA0620248210624763 -S315600183A080A3400102800004010000007FFFA394C6 -S315600183B0901020327FFFFD2FA4102000C206E160DD -S315600183C080A48001168000151B180144D403616CDA -S315600183D096100001A010200080A4001D3680000CBC -S315600183E0A404A001832C800A9B286002992CA0100A -S315600183F082130010C226000DA004200180A4001D76 -S3156001840006BFFFFC9A036004A404A00180A4800B4C -S3156001841026BFFFF2A01020007FFFE49F901020008E -S3156001842003000010808A000112BFFFFC01000000FA -S31560018430A4102000C206E16080A4800116800114A8 -S31560018440921000127FFFFD899010001815180144E3 -S31560018450C202A14C900A0001820E000180A20001B5 -S31560018460A404A00112BFFFF4901020337FFFA36420 -S3156001847001000000C206E16080A4800106BFFFF230 -S3156001848092100012308001027FFFA35D90102001DF -S3156001849010BFFE50833CE00C7FFFE47F901020000C -S315600184A0133FFFF09212603F920A0009A61000087E -S315600184B07FFFE47B901020007FFFE3D2A4102000B1 -S315600184C01303C0009214C0097FFFE4759010200069 -S315600184D080A4801616800009921000129016600022 -S315600184E07FFFFD0494102000A404A00180A48016DF -S315600184F006BFFFFB921000127FFFE3C2010000007E -S315600185007FFFE46590102000913A200A900A2003CB -S3156001851080A2200102800004010000007FFFA338D1 -S315600185209010200201000000921020009016600059 -S315600185307FFFFCE194102000010000007FFFE456FC -S31560018540901020001303C000922A00097FFFE454B3 -S3156001855090102000010000007FFFE3AA01000000E7 -S315600185607FFFE44D90102000913A200C900A200381 -S3156001857080A2200102BFFE1E010000007FFFA32032 -S315600185809010200330BFFE1A921000127FFFFD4546 -S3156001859090100018901A200580A00008A2647FFF41 -S315600185A0A404A001C206E16080A4800106BFFFF8B1 -S315600185B09210001280A4600012BFFE63173FFFBFD6 -S315600185C030BFFE5E7FFFA30E9010200710BFFE3DF9 -S315600185D0A41020007FFFA30A9010200530BFFE2D56 -S315600185E07FFFA3079010201130BFFE997FFFE42A19 -S315600185F090102000033FFFF08210603F920A000155 -S315600186007FFFE42790102000033FFFBFA010638027 -S3156001861092102000941020007FFFFCE290068010EB -S315600186207FFFE41D901020000303C0009212000139 -S315600186307FFFE41B9010200010800006A41020002C -S31560018640900680107FFFFCD794102005A404A0013A -S31560018650C206E16080A4800106BFFFFA9210001293 -S31560018660033FFFBFA01063809A102001DA2E8010AD -S3156001867003004000D80680108210600580A30001C7 -S3156001868002800004010000007FFFA2DD9010200B34 -S315600186907FFFE40190102000913A2006900A2003A2 -S315600186A080A2200102800004010000007FFFA2D4A5 -S315600186B09010200C7FFFE3F8901020001303C00098 -S315600186C0922A00097FFFE3F69010200092102000A5 -S315600186D0900680107FFFFCB3941020007FFFE3EECD -S315600186E0901020002103C000921200107FFFE3EC7E -S315600186F0901020007FFFE3E890102000808A001030 -S3156001870002BFFFFDA6100008A4102000C206E160AA -S3156001871080A480011680000E033FFFBF9A102001DE -S31560018720A2106380A12B401D921000129006801149 -S315600187307FFFFC8D94043FFFA404A001C206E160A3 -S3156001874080A4800106BFFFFA921000121303C000D5 -S31560018750922CC0097FFFE3D2901020002103C00054 -S315600187607FFFE3CD90102000808A001012BFFFFDCD -S315600187701B004000213FFFBF82142380D806800181 -S315600187809A13600580A3000D0280000401000000B9 -S315600187907FFFA29B9010200D7FFFE3BF901020000A -S315600187A0913A2008900A200380A2200122800005C8 -S315600187B0A01423787FFFA2929010200FA014237833 -S315600187C094068010981020119A102055D83A80008E -S315600187D07FFFE3B1901020000303C00092120001F5 -S315600187E0920A7F3F7FFFE3AE90102000A0068010C3 -S315600187F07FFFE3CD9010001010800006A4102000CA -S31560018800900420047FFFFC6794102055A404A00106 -S31560018810C206E16080A4800106BFFFFA92100012D1 -S31560018820113FFFBF901223787FFFE3BF9006800858 -S3156001883080A220111280000480A26055028000048B -S31560018840010000007FFFA26E901020107FFFE3926F -S3156001885090102000833A20068208600380A06001A0 -S3156001886002800004A61000087FFFA2659010201008 -S31560018870133C3FF09212603F920CC0097FFFE38880 -S315600188809010200010BFFDDC821020057FFFE3827F -S31560018890901020009212200F7FFFE381901020003C -S315600188A081C7E00891E820009DE3BF987FFFFC93B4 -S315600188B001000000B0100008130020409212600F02 -S315600188C07FFFE377901020000100000081C7E00878 -S315600188D081E80000033FFFBF821063589DE380017A -S315600188E07FFFFBE401000000400002380100000048 -S315600188F07FFFE36990102008A21000087FFFE366FE -S315600189009010200C7FFFA24DA0100008912A200430 -S315600189107FFFA2369002200C973C6014833C60185E -S31560018920953C2014993C201882086003960AE00F52 -S31560018930820060019602E00AA33C6010A13C20100F -S31560018940980B2003940AA00FA728400B98032001D7 -S31560018950A20C6007A00C20079402A00A9A102001BD -S31560018960A2046002A0042002B12B000A03200000C9 -S31560018970AB2B4011A52B40109620401898057FFF20 -S31560018980822040139A04BFFFAE130001A213400B6D -S31560018990210000307FFFE34090102000808A0010A4 -S315600189A012BFFFFD033FFFBF9A07BFF8821063C086 -S315600189B0A00340012D155555901000189210001016 -S315600189C07FFFE2C89415A15580A220001280004B5A -S315600189D0292AAAAA92100010901000187FFFE2D5EA -S315600189E0941522AA80A220001280004E0100000088 -S315600189F07FFFA21201000000912A20047FFFA1FBE4 -S31560018A009002200A400001EE01000000921522004A -S31560018A10920C4009901000189410001196100012E3 -S31560018A207FFFE2ED981522AA80A2200012800051F4 -S31560018A30010000009215A10090100018920C4009E7 -S31560018A4094100011961000127FFFE2E39815A1556C -S31560018A5080A2200012800044010000007FFFA1F780 -S31560018A6001000000912A20047FFFA1E09002200B03 -S31560018A70901000137FFFE2BF9215A15580A22000DE -S31560018A801280003501000000901000137FFFE2B9EB -S31560018A90921522AA80A220001280002C01000000FB -S31560018AA07FFFA1E601000000912A20047FFFA1CF8C -S31560018AB0900220099010001392100017941000156F -S31560018AC07FFFE2B8961522AA80A220001280001BC1 -S31560018AD00100000090100013921000179410001509 -S31560018AE07FFFE2B09615A15580A220000280002585 -S31560018AF0010000003080000E7FFFA1C190102001AF -S31560018B00292AAAAA92100010901000187FFFE28904 -S31560018B10941522AA80A2200002BFFFB601000000C0 -S31560018B207FFFA1B79010200230BFFFB27FFFA1B4D3 -S31560018B3090102008308000137FFFA1B190102007AC -S31560018B4010BFFFE6901000137FFFA1AD90102006C5 -S31560018B5030BFFFD47FFFA1AA9010200510BFFFCCC4 -S31560018B60901000137FFFA1A69010200430BFFFBCB8 -S31560018B707FFFA1A39010200310BFFFB09215A10043 -S31560018B807FFFFB3CB0102000400001900100000017 -S31560018B900100000081C7E00881E800009DE3BF98FD -S31560018BA07FFFA18D1100412CDA062004D80620042E -S31560018BB09A0B6003993B200282102007C226200887 -S31560018BC0BA036001B20B27FF010000009010200A72 -S31560018BD0C02600007FFFA18501000000170002008A -S31560018BE082103FFFC226000B032AAAAA1B15555500 -S31560018BF0D806000BAC102000821062AA9A13615548 -S31560018C00AA0B000180A5801D16800038A80B000DF7 -S31560018C109612E020A72E600880A4E0000480000C74 -S31560018C20A2102000832DA0028200401819000200C4 -S31560018C309A10000BE820400CEA20400DA204601057 -S31560018C4080A4C01114BFFFFC82006040AC05A00186 -S31560018C5080A5801D06BFFFF280A4E000AC10200055 -S31560018C6080A5801D1680002103000200B8106020D7 -S31560018C70A72E6008AE10001880A4E00004800017DB -S31560018C80A210200003000200A4060001A005C01C7A -S31560018C90C2048000A2046010A404A04080A0401415 -S31560018CA002800004901020017FFFA15501000000A1 -S31560018CB0C2040000A004204080A040150280000488 -S31560018CC0901020017FFFA14E0100000080A4C01119 -S31560018CD014BFFFF001000000AC05A00180A5801D56 -S31560018CE006BFFFE6AE05E0047FFFA1409010200CB1 -S31560018CF0AC10200080A5801D16800088031555558F -S31560018D009E1061551B000800032AAAAA9A136004E3 -S31560018D10901062AAA72E600880A4E0000480000E6D -S31560018D20A2102000832DA0138200401813000800B2 -S31560018D309410000F9610000D98100008D420400979 -S31560018D40D820400BA204600280A4C01114BFFFFCAE -S31560018D5082006008AC05A00180A5801D06BFFFF0FA -S31560018D6080A4E000AC10200080A5801D1680006BF9 -S31560018D7003155555B81061551B000800032AAAAAA8 -S31560018D80B6136004B41062AAA72E600880A4E0003E -S31560018D9004800019A2102000832DA013A0004018A2 -S31560018DA02F000800AA10001CA810001BA410001AAE -S31560018DB0C2040017A204600280A04015028000046C -S31560018DC0901020037FFFA10E01000000C204001471 -S31560018DD0A004200880A040120280000490102003A5 -S31560018DE07FFFA1070100000080A4C01114BFFFF13D -S31560018DF001000000AC05A00180A5801D06BFFFE54E -S31560018E0080A4E000AC10200080A5801D1680004380 -S31560018E10030008009E1060041B155555032AAAAA73 -S31560018E209A136155901062AAA72E600880A4E0008B -S31560018E300480000EA2102000832DA013820040182A -S31560018E40130008009410000F9610000D981000088A -S31560018E50D620400AD8204009A204600280A4C0112D -S31560018E6014BFFFFC82006008AC05A00180A5801DCF -S31560018E7006BFFFF080A4E000AC10200080A5801D35 -S31560018E801680002603155555B81061551B2AAAAAE6 -S31560018E9003000800A72E6008B61362AAB410600426 -S31560018EA080A4E00004800019A2102000832DA01385 -S31560018EB0A00040182F000800AA10001CA810001B73 -S31560018EC0A410001AC2040012A204600280A0401518 -S31560018ED002800004901020047FFFA0C901000000F9 -S31560018EE0C2040017A004200880A040140280000478 -S31560018EF0901020047FFFA0C20100000080A4C01171 -S31560018F0014BFFFF101000000AC05A00180A5801D22 -S31560018F1006BFFFE580A4E00082102005C226200876 -S31560018F201B200000DA26000081C7E00881E8000006 -S31560018F3081C3E0089144400080800000151801401B -S31560018F409412A18090102000921022468180000028 -S31560018F50010000000100000001000000D002800055 -S31560018F609122400881C3E008010000008180000071 -S31560018F70901020018090200180D020011280002C69 -S31560018F800100000080D23FFF168000290100000029 -S31560018F9080DA3FFF9340000080A27FFF12800024A9 -S31560018FA00100000080D23FFF9348000093326014B5 -S31560018FB0920A600F80A260081280001D0100000005 -S31560018FC08180000090102001945220049452A004E4 -S31560018FD09452A00496A2A0401280001501000000E0 -S31560018FE0818000009010200280A000003280001075 -S31560018FF09052000880A220021280000D010000003C -S31560019000818000009010200280A000000100000015 -S31560019010328000079052000880A22002128000046C -S315600190200100000081C3E0089010200181C3E008BF -S31560019030901000001315555592126155A582400096 -S31560019040010000000100000001000000954480005D -S3156001905080A2400A1280004301000000923A40005B -S31560019060A58240000100000001000000010000002F -S315600190709544800080A2400A1280003A01000000F7 -S315600190801100003F901223FFA5800000818000003F -S3156001909001000000010000000100000093F23FFFA3 -S315600190A09A10000993F23FFF93F23FFF93F23FFF5D -S315600190B093F23FFF93F23FFF93F23FFF93F23FFF3D -S315600190C09940000097448000153FFC009412A00867 -S315600190D080A2400A1280002380A2400B12800021E8 -S315600190E080A320071280001F113FFF80901220018C -S315600190F080A340081280001B1100003F901223FFDD -S31560019100A5800000818000000100000001000000D0 -S315600191100100000093FA3FFF93FA3FFF93FA3FFF86 -S3156001912093FA3FFF93FA3FFF93FA3FFF93FA3FFFAC -S3156001913093FA3FFF994000009744800080A260083F -S315600191401280000880A260081280000680A32000B9 -S31560019150128000040100000081C3E0089010200124 -S3156001916081C3E00890100000818000009010200209 -S3156001917080A00000328000109072000880A2200258 -S315600191801280000D01000000818000009010200215 -S3156001919080A0000001000000328000079072000884 -S315600191A080A22002128000040100000081C3E00851 -S315600191B09010200181C3E00890100000C0A000401B -S315600191C081C3E00801000000110020409012200FC9 -S315600191D0D0A0004081C3E008010000009DE3BF9874 -S315600191E07FFFE12D90102008A21000087FFFE12A81 -S315600191F09010200C833C60149B3A2014A13A2018ED -S31560019200A33C6018A20C6003A00C20038208600FC7 -S315600192109A0B600F8200600A9A03600AA2046001D9 -S31560019220A0042001A32C40017FFFFFE5A12C000DC6 -S315600192307FFFE090901000117FFFE09C901000107E -S315600192407FFFF98C010000007FFFFFE081E80000ED -S315600192500100000098120009818200009AAB2FFF7D -S315600192600280002598880000992300099923000946 -S315600192709923000999230009992300099923000973 -S315600192809923000999230009992300099923000963 -S315600192909923000999230009992300099923000953 -S315600192A09923000999230009992300099923000943 -S315600192B09923000999230009992300099923000933 -S315600192C09923000999230009992300099923000923 -S315600192D09923000999230009992300099923000913 -S315600192E099230009992300099923000081C3E008A5 -S315600192F091400000992300099923000999230009E7 -S3156001930099230009992300099923000999230009E2 -S3156001931099230009992300099923000999230009D2 -S3156001932099230009992300009B400000992B200C8A -S315600193309B33601481C3E0089013400C1080000BCE -S31560019340861020008092400816800008861000086A -S31560019350809240001680000480920000168000030F -S3156001936092200009902000089A9240001280000520 -S315600193709610000891D0200281C3E0089010000089 -S3156001938080A2C00D0A8000959410000003020000BF -S3156001939080A2C0010A8000289810000080A34001C5 -S315600193A01A80000D841020019B2B600410BFFFFC06 -S315600193B0980320019A83400D1A8000078400A0015A -S315600193C0832860049B3360019A0340011080000783 -S315600193D08420A00180A3400B0ABFFFF701000000B3 -S315600193E0028000020100000084A0A00106800076D0 -S315600193F0010000009622C00D941020011080000A21 -S3156001940001000000952AA001068000059B336001DA -S315600194109622C00D108000049402A0019602C00D30 -S315600194209422A00184A0A00116BFFFF78092C0001C -S31560019430308000659B2B600480A3400B08BFFFFE54 -S315600194409883200102800065982320018092C000E4 -S31560019450952AA0040680002F9B33600196A2C00D59 -S31560019460068000179B33600196A2C00D0680000B33 -S315600194709B33600196A2C00D068000059B33600197 -S3156001948096A2C00D108000509402A00F9682C00D66 -S315600194901080004D9402A00D9682C00D06800005D5 -S315600194A09B33600196A2C00D108000479402A00B09 -S315600194B09682C00D108000449402A0099682C00D68 -S315600194C00680000B9B33600196A2C00D06800005E5 -S315600194D09B33600196A2C00D1080003B9402A007E9 -S315600194E09682C00D108000389402A0059682C00D48 -S315600194F0068000059B33600196A2C00D1080003284 -S315600195009402A0039682C00D1080002F9402A001E0 -S315600195109682C00D068000179B33600196A2C00D2E -S315600195200680000B9B33600196A2C00D0680000584 -S315600195309B33600196A2C00D108000239402BFFF89 -S315600195409682C00D108000209402BFFD9682C00DE8 -S31560019550068000059B33600196A2C00D1080001A3B -S315600195609402BFFB9682C00D108000179402BFF96A -S315600195709682C00D0680000B9B33600196A2C00DDA -S31560019580068000059B33600196A2C00D1080000E17 -S315600195909402BFF79682C00D1080000B9402BFF54E -S315600195A09682C00D068000059B33600196A2C00DB0 -S315600195B0108000059402BFF39682C00D10800002F0 -S315600195C09402BFF198A3200116BFFFA28092C0004A -S315600195D0268000029602C0098090C00026800002A3 -S315600195E09620000B81C3E0089010000B92100008D2 -S315600195F09010200094102000961020008213C00065 -S31560019600400000039E104000010000009DE3BF98EA -S3156001961023180143400005F6901460F40318006DA9 -S31560019620E0006178D004214880A220002280002DCC -S315600196309004214CD602200480A2E01F1480001DF4 -S315600196400100000080A620001280000B9402208891 -S31560019650832AE0029A02E00182004008DA222004AD -S31560019660F2206008400005FA901460F41080002230 -S31560019670B0102000821020019328400B992AE00245 -S31560019680DA02A1009A1340098203000AF62060807B -S31560019690F422800C80A6200212BFFFEEDA22A1001E -S315600196A0C202A1048210400910BFFFEAC222A104CE -S315600196B0400000139010219080A220000280000BD0 -S315600196C096102000C2042148C2220000D0242148FD -S315600196D0C0222004C022218810BFFFDBC022218C5A -S315600196E010BFFFD5D0242148400005D9901460F4FD -S315600196F0B0103FFF81C7E00881E8000092100008C2 -S3156001970003180141D00063708213C0004000000A53 -S315600197109E104000010000009210000803180141EC -S31560019720D00063708213C000400002199E10400091 -S31560019730010000009DE3BF988206600B80A0601661 -S31560019740A610001818800003A0087FF8A01020104A -S3156001975080A400199A4020008334201F8090400D18 -S31560019760128001B0B0102000400001B090100013CB -S3156001977080A421F71880001799342009391801410E -S315600197808217238098040001F003200C80A6000C48 -S315600197900280004E9F342003C206200494087FFC99 -S315600197A09A06000AC203600482106001D006200C8A -S315600197B0D2062008D2222008C2236004D022600C7F -S315600197C0400001A09010001310800196B006200899 -S315600197D080A32000128000289F342003391801419C -S315600197E09B2BE003821723809A0340011080000AB5 -S315600197F0F003600C94087FFC9622801080A2E00F33 -S315600198001480010980A2E00036BFFFE79A06000ACC -S31560019810F006200C80A6000D32BFFFF7C2062004B9 -S315600198209E03E001251801419814A388F0032008DE -S3156001983080A6000C0280005D833BE01FC206200407 -S3156001984094087FFC9622801080A2E00F1480009F0E -S3156001985080A2E000D823200C06800023D8232008AC -S315600198609A06000AC20360048210600110BFFFD528 -S31560019870C22360048334200680A3200408BFFFD876 -S315600198809E00603880A3201408BFFFD59E03205B2D -S315600198908334200C80A3205408BFFFD19E00606EE4 -S315600198A08334200F80A3215408BFFFCD9E006077CB -S315600198B08334201280A3255408BFFFC99E00607CB3 -S315600198C010BFFFC79E10207E98062008F003200C6B -S315600198D080A6000C32BFFFB2C206200410BFFFD2C1 -S315600198E09E03E00280A2A1FF088000BE9B32A00316 -S315600198F09732A00980A2E000228000179617238084 -S315600199008332A00680A2E004088000129A006038C3 -S3156001991080A2E0140880000F9A02E05B8332A00CFB -S3156001992080A2E0540880000B9A00606E8332A00F1B -S3156001993080A2E154088000079A0060778332A01202 -S3156001994080A2E554088000039A00607C9A10207E0C -S3156001995096172380832B60039000400BD202200868 -S3156001996080A240082280010F99336002C20260041E -S3156001997082087FFC80A0400A28800007D002600C24 -S31560019980D202600880A2400832BFFFFAC2026004B8 -S31560019990D002600CD026200CD2262008F022600C62 -S315600199A0F0222008833BE01F8330601E8203C001E2 -S315600199B03918014183386002981723809A10200173 -S315600199C0932B4001D803200480A2400C1880004BE1 -S315600199D0AE172380808B00091280000D03180141A8 -S315600199E0820BFFFC92024009808B000912800007FE -S315600199F09E0060048210000C920240098088400932 -S31560019A0002BFFFFE9E03E00403180141A2106380BA -S31560019A10A8100011832BE003980040119010000FED -S31560019A209A10000C1080000AF003600C94087FFC09 -S31560019A309622801080A2E00F1480007D80A2E00053 -S31560019A403680008B9A06000AF006200C80A6000D6F -S31560019A5032BFFFF7C20620049E03E001808BE0035C -S31560019A6012BFFFF19A036008808A200398033FF8CA -S31560019A70028000D490023FFFC203200880A0400C00 -S31560019A8002BFFFFB808A200392024009C2052004BF -S31560019A9080A24001188000183918014180A2600037 -S31560019AA0128000068088400910800014AE1723805A -S31560019AB09E03E0048088400922BFFFFE92024009AE -S31560019AC010BFFFD6832BE003821420019406001099 -S31560019AD0C2262004D423200CD42320088212E0015C -S31560019AE0D622800BD822A008C222A00410BFFF355F -S31560019AF0D822A00CAE172380F005E008C206200428 -S31560019B00AA087FFC80A540109A4020009625401047 -S31560019B1080A2E00F148000428210200180934001F0 -S31560019B200280002703180143DA0061982D1801416C -S31560019B309A04000DC205A378A810001580A07FFFC6 -S31560019B40A203601002800004A406001582046FFF60 -S31560019B50A208700090100013400000C0921000111E -S31560019B6080A23FFF02800008B210000880A20012A6 -S31560019B701A8000463B18014380A6001722800044E4 -S31560019B80C207616882172380D8006008DA0320045F -S31560019B909A0B7FFC80A340109840200096234010CA -S31560019BA080A2E00F04800003821020018210200051 -S31560019BB080930001128000980100000098172380AD -S31560019BC0F003200882142001C22620049A060010A0 -S31560019BD08212E001C223600410BFFEFADA23200874 -S31560019BE098033FF8832B60039000400C9B3360021F -S31560019BF0821020018328400DD2022008DA03200456 -S31560019C009A134001D026200CD2262008F022600C3F -S31560019C10DA23200410BFFF64F022200810BFFFC0C2 -S31560019C208210200010BFFEFF9E03FFFFD006200CAE -S31560019C30D20620089A142001940600108214A38883 -S31560019C40D2222008D022600CDA262004D420600CAF -S31560019C50D42060089A12E001D622800BC222A008A5 -S31560019C60DA22A00410BFFED7C222A00CC203600490 -S31560019C7082106001D006200CD2062008C22360043F -S31560019C8010BFFECFD2222008C20761688200401150 -S31560019C9080A640120280004FC2276168C205A37880 -S31560019CA080A07FFF02800045C20761689A26401244 -S31560019CB08200400DC22761689A8E600702800005A6 -S31560019CC0A410200082102008A420400DB206401284 -S31560019CD09A0640119A0B6FFF030000048220400D23 -S31560019CE0A4048001901000134000005C92100012E1 -S31560019CF080A23FFF2280003FA4102000822200192B -S31560019D009000401282172380DA0761689A03401235 -S31560019D1080A60001F2206008DA27616802800037B8 -S31560019D208212200180A5600F38800005C22660047A -S31560019D308210200110BFFF94C2266004C20620046F -S31560019D409A057FF4A80B7FF882086001821040149F -S31560019D50C22620049A06001482102005C2236008D8 -S31560019D6080A5200F18800027C223600419180143BB -S31560019D70DA076168C203219480A34001388000023A -S31560019D80DA23219419180143C203219080A340016B -S31560019D9038BFFF7DDA23219010BFFF7C82172380B5 -S31560019DA09A102001C202E0049B2B400C8210400DE8 -S31560019DB010BFFEF9C222E00410BFFFC0F225A378EE -S31560019DC0C20460048228400910BFFF30C2246004C7 -S31560019DD0808E6FFF12BFFFB3C205A3789004401453 -S31560019DE0DA05E0088212200110BFFFE1C223600498 -S31560019DF010BFFFC39010001910BFFFDDC2266004BB -S31560019E0092062008400000629010001310BFFFD92F -S31560019E10191801434000000B90100013B010200088 -S31560019E2081C7E00881E80000111801429012238879 -S31560019E308213C000400003EE9E1040000100000046 -S31560019E4011180142901223888213C0004000040059 -S31560019E509E104000010000009DE3BF982118014457 -S31560019E60C02421704000020D9010001980A23FFFAE -S31560019E7012800006C204217080A060000280000387 -S31560019E8001000000C226000081C7E00891E80008D1 -S31560019E909DE3BF987FFFFFE590100018031801410D -S31560019EA0A2106380DA046008C2036004A0087FFC24 -S31560019EB0B2240019B2066FEFB20E7000B2067000DE -S31560019EC09210200080A66FFF0480000A901000188F -S31560019ED07FFFFFE201000000C204600882004010BB -S31560019EE080A0400892200019028000059010001899 -S31560019EF07FFFFFD4B0102000308000237FFFFFD7A3 -S31560019F00901000188224001980A23FFF8210600120 -S31560019F1092102000191801430280000B901000185E -S31560019F20DA046008C2236004C203216882204019F2 -S31560019F30901000187FFFFFC3C223216810800012B2 -S31560019F40B01020017FFFFFC50100000098100008D6 -S31560019F50D6046008A023000B9010001880A4200F7F -S31560019F6004BFFFE4B214200103180141DA006378EB -S31560019F709A23000D03180143DA20616810BFFFDDE3 -S31560019F80F222E00481C7E00881E800009DE3BF9802 -S31560019F9080A660000280009DA41000187FFFFFA3C9 -S31560019FA090100018A0067FF8D6042004900AFFFEE0 -S31560019FB01918014194040008A2132380DA02A0044F -S31560019FC0C204600880A0400A028000449E0B7FFCA8 -S31560019FD0808AE001DE22A0041280000CB01020000D -S31560019FE0F2067FF8A024001982046008DA042008CA -S31560019FF080A340010280007D90020019D204200CEA -S3156001A000DA226008D223600C8202800FDA006004D3 -S3156001A010808B60011280000A8212200180A62000D6 -S3156001A020028000229002000FDA02A008D202A00C80 -S3156001A030DA226008D223600C82122001C224200435 -S3156001A04080A6200002800005D0240008B01000120E -S3156001A0507FFFFF7C81E8000080A221FF1880003627 -S3156001A060973220099B32200398132380832B600348 -S3156001A0709200400C9B336002821020018328400DC0 -S3156001A080D6026008DA0320049A134001D224200C18 -S3156001A090D6242008E022E00CDA232004E0226008BE -S3156001A0A010BFFFECB010001203180141DA02A008DC -S3156001A0B08210638880A3400132BFFFDED202A00C0A -S3156001A0C0E023600CE0236008DA242008DA24200CFF -S3156001A0D010BFFFDAB0102001808AE001128000090A -S3156001A0E09002000FF2067FF8A0240019D204200C1A -S3156001A0F0D6042008D622600890020019D222E00C0C -S3156001A10003180141DA00637C98122001E02460089B -S3156001A11080A2000D0ABFFFCFD82420040318014393 -S3156001A120D20061987FFFFF5B901000127FFFFF45B1 -S3156001A13081E8000080A2E000028000169B322003C5 -S3156001A1408332200680A2E004088000129A006038FB -S3156001A15080A2E0140880000F9A02E05B8332200C33 -S3156001A16080A2E0540880000B9A00606E8332200F53 -S3156001A17080A2E154088000079A006077833220123A -S3156001A18080A2E554088000039A00607C9A10207EC4 -S3156001A19094132380832B60039200400AD6026008E1 -S3156001A1A080A2C0090280001399336002C202E004F2 -S3156001A1B082087FFC80A0400828800007D202E00C5C -S3156001A1C0D602E00880A2C00932BFFFFAC202E004EB -S3156001A1D0D202E00CD224200CD6242008E022E00C26 -S3156001A1E010BFFFB0E022600810BFFF88B0102001E9 -S3156001A1F09A102001C202A0049B2B400C8210400DD4 -S3156001A20010BFFFF5C222A00481C7E00881E8000003 -S3156001A2109DE3BF98D206400080A2600012800004D0 -S3156001A220901000187FFFFF5A81E800007FFFFFF959 -S3156001A230010000007FFFFF5681E800000100000079 -S3156001A2409DE3BF9803180141DA00637080A6000D93 -S3156001A2500280004101000000D206204C80A260000D -S3156001A2601280001CA0102000D206214880A2600046 -S3156001A2702280000FD2062054A006214C80A24010F5 -S3156001A2802280000BD206205410800005B21000090E -S3156001A290F20640007FFFFF3E9010001880A400196F -S3156001A2A012BFFFFC92100019D206205480A26000F2 -S3156001A2B01280002501000000C206203880A06000DF -S3156001A2C0028000250100000010800017C206203CB4 -S3156001A2D0832C2002F202400180A660002280000BDE -S3156001A2E0A004200192100019F20640007FFFFF28AA -S3156001A2F09010001880A6600012BFFFFC9210001932 -S3156001A300D206204CA004200180A4200E04BFFFF2D7 -S3156001A310832C20027FFFFF1E9010001810BFFFD410 -S3156001A320D20621489FC0400090100018F20622E034 -S3156001A33080A6600002800008010000007FFFFFB573 -S3156001A34081E800007FFFFF129010001810BFFFDC4C -S3156001A350C206203881C7E00881E800009DE3BF9806 -S3156001A36080A620000280001D03180141E4062148F1 -S3156001A37080A4A00022800013C206203CE204A0044F -S3156001A380A2847FFF0C80000A832C60028200401247 -S3156001A390A0006008C20400009FC04000A0043FFC0A -S3156001A3A0A2847FFF3CBFFFFDC2040000E40480007D -S3156001A3B080A4A00032BFFFF3E204A004C206203CE1 -S3156001A3C080A0600002800007010000009FC040007D -S3156001A3D0901000183080000310BFFFE5F000637035 -S3156001A3E081C7E00881E800001080000B861020001C -S3156001A3F08092400816800008861A400880924000C4 -S3156001A40016800004809200001680000392200009E5 -S3156001A410902000089A92400012800005961000086C -S3156001A42091D0200281C3E0089010000080A2C00D87 -S3156001A4300A800095941000000302000080A2C0010A -S3156001A4400A8000289810000080A340011A80000D40 -S3156001A450841020019B2B600410BFFFFC9803200130 -S3156001A4609A83400D1A8000078400A0018328600446 -S3156001A4709B3360019A034001108000078420A0018C -S3156001A48080A3400B0ABFFFF70100000002800002B3 -S3156001A4900100000084A0A001068000760100000092 -S3156001A4A09622C00D941020011080000A0100000060 -S3156001A4B0952AA001068000059B3360019622C00D96 -S3156001A4C0108000049402A0019602C00D9422A0019E -S3156001A4D084A0A00116BFFFF78092C000308000659E -S3156001A4E09B2B600480A3400B08BFFFFE988320016D -S3156001A4F002800065982320018092C000952AA004FD -S3156001A5000680002F9B33600196A2C00D068000175E -S3156001A5109B33600196A2C00D0680000B9B336001E0 -S3156001A52096A2C00D068000059B33600196A2C00D00 -S3156001A530108000509402A00F9682C00D1080004DCD -S3156001A5409402A00D9682C00D068000059B336001C2 -S3156001A55096A2C00D108000479402A00B9682C00D92 -S3156001A560108000449402A0099682C00D0680000BFB -S3156001A5709B33600196A2C00D068000059B33600186 -S3156001A58096A2C00D1080003B9402A0079682C00D72 -S3156001A590108000389402A0059682C00D06800005E1 -S3156001A5A09B33600196A2C00D108000329402A00315 -S3156001A5B09682C00D1080002F9402A0019682C00D74 -S3156001A5C0068000179B33600196A2C00D0680000BC2 -S3156001A5D09B33600196A2C00D068000059B33600126 -S3156001A5E096A2C00D108000239402BFFF9682C00D13 -S3156001A5F0108000209402BFFD9682C00D0680000582 -S3156001A6009B33600196A2C00D1080001A9402BFFBB5 -S3156001A6109682C00D108000179402BFF99682C00D14 -S3156001A6200680000B9B33600196A2C00D0680000573 -S3156001A6309B33600196A2C00D1080000E9402BFF795 -S3156001A6409682C00D1080000B9402BFF59682C00DF4 -S3156001A650068000059B33600196A2C00D108000053F -S3156001A6609402BFF39682C00D108000029402BFF17E -S3156001A67098A3200116BFFFA28092C0002680000227 -S3156001A6809422A0018090C000268000029420000AD6 -S3156001A69081C3E0089010000A19180144DA03217495 -S3156001A6A080A36000128000068203400803180144FB -S3156001A6B09A106188DA23217482034008C2232174C7 -S3156001A6C081C3E0089010000DA7500000AE10000194 -S3156001A6D08334E00129180143E8052038A92CC01408 -S3156001A6E08215000181E000008190400001000000B8 -S3156001A6F00100000001000000E03BA000E43BA0086F -S3156001A700E83BA010EC3BA018F03BA020F43BA0284E -S3156001A710F83BA030FC3BA03881E8000082100017AE -S3156001A72081C4400081CC800001000000010000006E -S3156001A73001000000A7500000A92CE0012B1801437D -S3156001A740EA056038AB34C015AA15401481954000FE -S3156001A75001000000010000000100000081E8000026 -S3156001A76081E80000E01BA000E41BA008E81BA01024 -S3156001A770EC1BA018F01BA020F41BA028F81BA0302E -S3156001A780FC1BA03881E0000081E0000081C440002C -S3156001A79081CC8000A75000002918006CADC521044A -S3156001A7A00100000027180143A614E018E024C00048 -S3156001A7B0818C2020010000000100000001000000E2 -S3156001A7C09DE3BFA09DE3BFA09DE3BFA09DE3BFA0A6 -S3156001A7D09DE3BFA09DE3BFA09DE3BFA081E800000C -S3156001A7E081E8000081E8000081E8000081E800005E -S3156001A7F081E8000081E8000027180143A614E018EB -S3156001A800C024C000E203A068A4046004E223A0643B -S3156001A810E423A06810800262AC100000291801428E -S3156001A820A81523FCC2252000C8252004E025201098 -S3156001A830E2252014E4252018E825201C81E8000083 -S3156001A8408348000082106F0081886020010000004B -S3156001A850010000000100000009180143C801203809 -S3156001A86081E000008821200180A920FF0280000389 -S3156001A870010000000100000080A1000012BFFFF985 -S3156001A8800100000009180143C801203881E8000071 -S3156001A89080A920FF02800003010000000100000082 -S3156001A8A08821200180A1000012BFFFF9010000008C -S3156001A8B081E0000029180142A81523FCC80520047F -S3156001A8C0C2052000E0052010E2052014E4052018E9 -S3156001A8D0C025201C818C20000100000001000000C1 -S3156001A8E00100000081C4800081CCA004A0142F0067 -S3156001A8F0818C0000010000000100000001000000E1 -S3156001A90081C4800081CCA00480A66002128000050B -S3156001A910A8142F00818D0000B01420203080001F04 -S3156001A92080A6600312800006A80E2F00AA2C2F00B5 -S3156001A930A8154014818D00003080001880A660043F -S3156001A94012800008A9480000A8152040818D0000EA -S3156001A9500100000001000000010000003080000FCE -S3156001A96080A6600512800008A9480000A82D204035 -S3156001A970818D00000100000001000000010000005F -S3156001A9803080000680A66006128000030100000088 -S3156001A99030BFFFA391D0200081C4800081CCA00488 -S3156001A9A09210200381C3E00891D020029210200208 -S3156001A9B081C3E00891D020029210200681C3E0088D -S3156001A9C091D0200281C3E0080100000081C3E00844 -S3156001A9D00100000081C3E00801000000AE25A0105F -S3156001A9E0A75000002D18006AAC15A1F02918006C5B -S3156001A9F081C522AC01000000111801439012202488 -S3156001AA00D202000092026001D2220000932DE0087A -S3156001AA10902C2F0092120009111801439012201CEC -S3156001AA20D002000080A000082280000292126F000E -S3156001AA30818A602001000000010000000100000021 -S3156001AA4090100017400000319203A06092142F000D -S3156001AA50818A602001000000010000000100000001 -S3156001AA601118014390122024D20200009222600143 -S3156001AA70D22200001080022DAC1000001B18014488 -S3156001AA809A13602C912A2002C2034008C222600CEC -S3156001AA9081C3E008D22340089DE3BF9803180144AF -S3156001AAA08210602C992E60021B180143972E600458 -S3156001AAB0D800400C9A13622C901000199202C00DB6 -S3156001AAC080A6601F1480000F82102000108000068F -S3156001AAD080A320002280000AC2024000D803200C15 -S3156001AAE080A3200012BFFFFC80A300097FFFFFE463 -S3156001AAF0F02240001080000382102000F022400006 -S3156001AB0081C7E00891E800019DE3BF981B180143E6 -S3156001AB1082136028D800600480A300180280004474 -S3156001AB20C203602880A6200022800002B010000CBB -S3156001AB3003180144A32E20028210602CE00040110C -S3156001AB4080A420000280003D03180143108000129A -S3156001AB50A41061A8D2042008941000199FC30000B4 -S3156001AB609010001803180143C20061A080A0600024 -S3156001AB701280002B01000000C204801182007FFF59 -S3156001AB80C2248011E004200C80A420000280002BE6 -S3156001AB9001000000D804000080A3200022BFFFFB53 -S3156001ABA0E004200C03180143DA00622880A36000E8 -S3156001ABB0128000089610001203180143821061A8E2 -S3156001ABC0DA00401180A3600032BFFFF0E004200C80 -S3156001ABD0DA02C011031801439A036001C20061A43D -S3156001ABE080A0600002BFFFDCDA22C0119FC0400076 -S3156001ABF001000000D8040000D20420089410001956 -S3156001AC009FC300009010001803180143C20061A0A1 -S3156001AC1080A0600022BFFFDAC20480119FC040009D -S3156001AC200100000010BFFFD6C2048011DA0060C0C7 -S3156001AC3010BFFFBDB00B601F81C7E00881E800004F -S3156001AC408C10000FA74800008B34E0188A09600F4A -S3156001AC5080A160030280000C0B1801438A116030E9 -S3156001AC600920000088112070C82140000B1801439B -S3156001AC708A1160500920000088112040C8214000D7 -S3156001AC80108000399010200192102006400001DDED -S3156001AC900100000080A0000802800033010000006E -S3156001ACA0C2022010113FFC0082084008110003FC1B -S3156001ACB08410400890100002921020019410200C1C -S3156001ACC0400001E60100000080A000080280002625 -S3156001ACD001000000400001F6921000010B180143CB -S3156001ACE08A116030D221400090100002921020013A -S3156001ACF094102011400001D90100000080A00008D5 -S3156001AD000280001901000000400001E99210000173 -S3156001AD10920260100B1801438A116050D2214000E3 -S3156001AD2090100002921020019410200D400001CB7A -S3156001AD300100000080A000080280000B01000000F5 -S3156001AD40400001DB921000010B1801438A11602853 -S3156001AD50D2214000D40260109532A010940AA00F4F -S3156001AD60D42160049E10000681C3E0080100000042 -S3156001AD7003180143821060488210200191D020009F -S3156001AD8081C3E008010000009DE3BF9803180144F8 -S3156001AD90C20060C8901000189210001980A060006F -S3156001ADA002800005B01020009FC040000100000035 -S3156001ADB0B010000881C7E00881E800009DE3BF98F4 -S3156001ADC003180144C20060C49010001880A060009E -S3156001ADD002800005B01020009FC040000100000005 -S3156001ADE0B010000881C7E00881E800009DE3BF98C4 -S3156001ADF003180144C20060BC9010001880A0600076 -S3156001AE0002800005B01020009FC0400001000000D4 -S3156001AE10B010000881C7E00881E800009DE3BF9893 -S3156001AE2003180144C20060C09010001880A0600041 -S3156001AE3002800005B01020009FC0400001000000A4 -S3156001AE40B010000881C7E00881E800009DE3BF9863 -S3156001AE5003180144C20060B89010001880A0600019 -S3156001AE6002800005B01020009FC040000100000074 -S3156001AE70B010000881C7E00881E800009DE3BF9833 -S3156001AE8003180144C20060B49010001880A06000ED -S3156001AE9002800005B01020009FC040000100000044 -S3156001AEA0B010000881C7E00881E800009DE3BF9803 -S3156001AEB003180144C20060B09010001880A06000C1 -S3156001AEC002800005B01020009FC040000100000014 -S3156001AED0B010000881C7E00881E800009DE3BF98D3 -S3156001AEE003180144C20060AC90100018921000195A -S3156001AEF080A0600002800005B01020009FC0400065 -S3156001AF0001000000B010000881C7E00881E8000078 -S3156001AF10010000000318006B821063E09FC04000CF -S3156001AF200100000003180000821060008198400053 -S3156001AF300318006C821060649FC04000010000002D -S3156001AF400318006B821063D09FC0400001000000AF -S3156001AF508B4800008B3160188A09600380A1600309 -S3156001AF6012800007010000008B4440008B31601C99 -S3156001AF7080A1400012800006010000007FFFFF31C2 -S3156001AF80010000007FFF9879010000009C23A0402A -S3156001AF907FFF981C010000008210200191D02000E3 -S3156001AFA00100000029000004A68C00143280000311 -S3156001AFB0A02C001491D02000818C000001000000BB -S3156001AFC0010000000100000081C4800081CCA00462 -S3156001AFD081C3E0080100000081C1E00801000000B2 -S3156001AFE0A74800008B34E0188A09600380A16003DA -S3156001AFF0128000080100000021180143A0142040BE -S3156001B000A2102003E22400008B4440001080000857 -S3156001B01021180143A0142040A2102002E22400005E -S3156001B02021200000E60420248B34E0148A09601F85 -S3156001B03027180143A614E038CA24C0008A016001BA -S3156001B04027180143A614E034CA24C0002718014317 -S3156001B050A614E03C8A216002CA24C00081C3E008CC -S3156001B0600100000081C3E008010000008348000080 -S3156001B070833060188208600380A060031280000636 -S3156001B0800100000083444000050000088228400258 -S3156001B090A3804000881000000918006B81C1231449 -S3156001B0A0010000009DE3BF980318006D1B18006D39 -S3156001B0B0A01061609A13616080A4000D1A8000106F -S3156001B0C0A210000D10800006C204000080A40011C9 -S3156001B0D01A80000B01000000C204000080A060001D -S3156001B0E002BFFFFBA00420049FC0400001000000D6 -S3156001B0F080A400112ABFFFFAC204000081C7E008DC -S3156001B10081E80000AA27A0B0E0256060E2256064BE -S3156001B110E4256068C2256074C43D6078C83D60807E -S3156001B120CC3D608885400000C425606CF03D609030 -S3156001B130F43D6098F83D60A0FC3D60A8A810200130 -S3156001B140A92D0010808D00130280001301000000FC -S3156001B1508534E00107180143C600E038A72CC00317 -S3156001B1608414C0028408A0FF81E000008190A000E1 -S3156001B170E03BA000E43BA008E83BA010EC3BA01834 -S3156001B180F03BA020F43BA028F83BA030FC3BA03864 -S3156001B19081E8000081C5A0089C10001505180143CF -S3156001B1A08410A19CC400800080A0800002800004FD -S3156001B1B0010000009FC080009203A060818C200086 -S3156001B1C0821020028328401005180143C400A03470 -S3156001B1D085304002821040028550000080888001DF -S3156001B1E0028000208328A00107180143C600E038C9 -S3156001B1F08530800382104002820860FF8190600082 -S3156001B200C203A06C81806000F01BA090F41BA09823 -S3156001B210F81BA0A0FC1BA0A8C203A074C41BA07845 -S3156001B220C81BA080CC1BA088E003A060E203A064D9 -S3156001B230E403A06881E80000E01BA000E41BA0080D -S3156001B240E81BA010EC1BA018F01BA020F41BA02883 -S3156001B250F81BA030FC1BA0381080000F81E00000B5 -S3156001B260C203A06C81806000F01BA090F41BA098C3 -S3156001B270F81BA0A0FC1BA0A8C203A074C41BA078E5 -S3156001B280C81BA080CC1BA088E003A060E203A06479 -S3156001B290E403A068818C2000010000000100000029 -S3156001B2A00100000081C4400081CC8000AA27A0B0C3 -S3156001B2B0C2256074C43D6078C83D6080CC3D6088BD -S3156001B2C085400000C425606CA8102001A92D0010DE -S3156001B2D0808D001302800013010000008534E001B7 -S3156001B2E007180143C600E038A72CC0038414C002C6 -S3156001B2F08408A0FF81E000008190A000E03BA000EF -S3156001B300E43BA008E83BA010EC3BA018F03BA02072 -S3156001B310F43BA028F83BA030FC3BA03881E8000054 -S3156001B32081C5A0089C100015051801438410A19CD5 -S3156001B330C400800080A0800002800004010000003B -S3156001B3409FC080009203A060818C20008210200241 -S3156001B3508328401005180143C400A034853040029B -S3156001B36082104002855000008088800102800019A9 -S3156001B3708328A00107180143C600E03885308003A1 -S3156001B38082104002820860FF81906000C203A06C57 -S3156001B39081806000C203A074C41BA078C81BA08012 -S3156001B3A0CC1BA08881E80000E01BA000E41BA0087C -S3156001B3B0E81BA010EC1BA018F01BA020F41BA02812 -S3156001B3C0F81BA030FC1BA0381080000881E000004B -S3156001B3D0C203A06C81806000C203A074C41BA07804 -S3156001B3E0C81BA080CC1BA088818C200001000000B6 -S3156001B3F0010000000100000081C4400081CC800092 -S3156001B400821000089A10380096102000912AE005F3 -S3156001B41098034008D40340089132A01880A2000125 -S3156001B420328000089602E0019132A00C900A2FFF4B -S3156001B43080A20009028000079410000C9602E001C8 -S3156001B44080A2E00728BFFFF3912AE005941020004F -S3156001B45081C3E0089010000A82100008981020004D -S3156001B460912B20039A004008D60040089132E018DB -S3156001B47080A2000932800008980320019132E00C15 -S3156001B480900A2FFF80A2000A028000079610000D25 -S3156001B4909803200180A3200F28BFFFF3912B20037F -S3156001B4A09610200081C3E0089010000BD40220049E -S3156001B4B0173FFC00920A400B900A800B9132200CD8 -S3156001B4C0921240081100003F901223F0940A8008FE -S3156001B4D0952AA0049412800B920A400A81C3E0085F -S3156001B4E0901000099DE3BF980318006D82106148B2 -S3156001B4F0DA007FFC80A37FFF02800009A0007FFC49 -S3156001B5008210000D9FC04000A0043FFCC2040000F1 -S3156001B51080A07FFF12BFFFFC0100000081C7E00829 -S3156001B52081E800009DE3BF9881C7E00881E80000DB -S3156001B53000000000000000000000000000000000A4 -S3156001B54000000002FFFFFFFF000000000000000096 -S3156001B55000000002FFFFFFFF000000000000000086 -S3156001B56040080000000000003CD203AF9EE756167B -S3156001B5703E7AD7F29ABCAF4860050220000000000F -S3156001B580430000009DE3BFA07FFF96DB0100000042 -S3156001B5907FFFFFD50100000081C7E00881E8000058 -S3156001B5A09DE3BFA07FFF96B60100000081C7E0085A -S3156001B5B081E80000000000000000000000000000BB -S315600200000000000100000000000000006001B55819 -S315600200102000000000000000000000000000000058 -S315600200200000000000000000000000000000000068 -S315600200300000000000000000000000000000000058 -S315600200400000000000000000000000000000000048 -S315600200500000000000000000000000010000000037 -S315600200600000000000000000000000000000000028 -S315600200700000000000000000000000000000000018 -S315600200800000000000000000000000000000000008 -S3156002009000000000000000000000000000000001F7 -S315600200A000000000000000000000000000000000E8 -S315600200B000000000000000000000000000000000D8 -S315600200C000000000000000000000000000000000C8 -S315600200D000000000000000000000000000000000B8 -S315600200E00000000100000000000000410000000066 -S315600200F0343074693934612B307967697975303592 -S315600201007968617035796934682B612B69697978A8 -S315600201106869346B35396A30713930356A6B6F7933 -S3156002012070686F70746A72686961346979302B3489 -S315600201300000000000000000000000010000000056 -S3156002014040000000000000004008000000000000BF -S31560020150401800000000000080000000000000005F -S315600201600000000000000000BFF000000000000078 -S31560020170BF800000000000000000000000000000D8 -S315600201800000000000000000000000000000000007 -S315600201903FF0000000000000400800000000000080 -S315600201A03FF0000040000000000000000000000078 -S315600201B03F80000040400000000000000000000098 -S315600201C000000000000000000000000000000000C7 -S315600201D0000000000000000048000001000000006E -S315600201E0480000000000000046C000000000000059 -S315600201F03FF0000000000000400000000000000028 -S3156002020040080000000000003F800000000000007F -S31560020210529000000000000052900FF807F60DEBB6 -S3156002022052901FE03F61BAD052902FB8D4E30F4884 -S3156002023052903F81F636B80C52904F3BD03C0A64DE -S3156002024052905EE68EFAD48B52906E825DA8FC2B3B -S3156002025052907E0F66AFED0752908D8DD3B1D9AABB -S3156002026052909CFDCD8ED0095290AC5F7C69A3C83A -S315600202705290BBB307ACAFDB5290CAF8960E710DC3 -S315600202805290DA304D95FB065290E95A539F492CAB -S315600202905290F876CCDF6CD952910785DD689A293F -S315600202A052911687A8AE14A35291257C5187FD09F7 -S315600202B052913463FA37014E5291433EC467EFFB63 -S315600202C05291520CD1372FEB529160CE41341D744C -S315600202D052916F8334644DF952917E2BCA46BAB9F4 -S315600202E052918CC821D6D3E352919B58598F7C9FE9 -S315600202F05291A9DC8F6DF1045291B854E0F496A044 -S315600203005291C6C16B2DB8705291D5224AAE2EE17A -S315600203105291E3779B97F4A85291F1C1799CA8FF19 -S31560020320529200000000000052920E33499A21A9AF -S3156002033052921C5B70D9F82452922A788FC76DE567 -S315600203405292388AC0059C28529246921AD4EA4939 -S315600203505292548EB9151E8552926280B347609648 -S315600203605292706821902E9A52927E451BB944C36E -S3156002037052928C17B9337834529299E01118857576 -S315600203805292A79E3A2CD2E65292B5524AE1278EF3 -S315600203905292C2FC595456A75292D09C7B54E03E6C -S315600203A05292DE32C66287415292EBBF4FAFDD4B4D -S315600203B05292F9422C23C47E529306BB705AE7C30B -S315600203C05293142B30A929AB52932191811B0A4176 -S315600203D052932EEE7577041652933C42213EE0C943 -S315600203E05293498C97B10540529356CDEBC9B5E20B -S315600203F0529364063044530652937135779C8DCB83 -S3156002040052937E5BD40F95A152938B79579D3EABE7 -S315600204105293988E1409212E5293A59A1ADBB257DB -S315600204205293B29D7D6356625293BF984CB56C7778 -S315600204305293CC8A99AF54535293D97474F76DF22E -S315600204405293E655EEFE13675293F32F17FE8D0411 -S31560020450529400000000000052940CC8B6D657C2EF -S31560020460529419894C2329F052942641CF5695729B -S31560020470529432F24FB01C7A52943F9ADC3F79CE54 -S3156002048052944C3B83E57153529458D455549C1AFA -S31560020490529465655F122FF6529471EEAF76C2C6BC -S315600204A052947E7054AF098952948AEA5CBC935F17 -S315600204B05294975CD57680885294A3C7CC8A358A43 -S315600204C05294B02B4F7C0A885294BC876BA7F6EC89 -S315600204D05294C8DC2E4239805294D529A457FCFC2A -S315600204E05294E16FDACFF9375294EDAEDE6B10FEBD -S315600204F05294F9E6BBC4ECB3529506177F5491BB8E -S3156002050052951241356CF6E052951E63EA3D95B0FE -S3156002051052952A7FA9D2F8EA5295369480174810E6 -S31560020520529542A278D2D03652954EA99FAC8A0F86 -S3156002053052955AAA002A9D5A529566A3A5B2E1B16E -S31560020540529572969B8B5CD852957E82ECDABE8D02 -S3156002055052958A68A4A8D9F352959647CDDF1CA511 -S315600205605295A220734903775295ADF29F948CFB04 -S315600205705295B9BE5D52A9DA5295C583B6F7AB03F9 -S315600205805295D142B6DBADC55295DCFB673B05DFC2 -S315600205905295E8ADD236A58F5295F45A01D483B4FA -S315600205A0529600000000000052960B9FD68A455470 -S315600205B0529617398F2AAA48529622CD337F0FE870 -S315600205C052962E5ACD0C3EBE529639E2653E421B7B -S315600205D0529645640568C1C3529650DFB6C759F450 -S315600205E052965C55827DF1D2529667C57199104BCF -S315600205F05296732F8D0E2F7752967E93DDBC0E73B5 -S31560020600529689F26C6B01D05296954B41CD4293CC -S315600206100BC0A4068F346C9B0BC093731C18544793 -S315600206200BC083008E183C230BC072AE83A9704A3E -S315600206300BC0627C9CC166FF0BC0526A7ACE64A410 -S315600206400BC04277C0B04ADA0BC032A412B191A095 -S315600206500BC022EF168069500BC0135873280473BF -S315600206600BC003DFD10A08480BBFE909B3B04632B3 -S315600206700BBFCA8E711B8E880BBFAC4D32D4143041 -S315600206800BBF8E4553D34B1B0BBF7076318237EF50 -S315600206900BBF52DF2BADF99C0BBF357FA47C936CED -S315600206A00BBF18570061F5EB0BBEFB64A61545152B -S315600206B00BBEDEA7FE865A2B0BBEC22074D37FBC4E -S315600206C00BBEA5CD763F66690BBE89AE722750F02A -S315600206D00BBE6DC2D9F976230BBE520A212B976CDB -S315600206E00BBE3683BD31CAA20BBE1B2F257575CADA -S315600206F00BBE000BD34C7BAF0BBDE51941F097FEE9 -S315600207000BBDCA56EE76E9D00BBDAFC457C7AB7305 -S315600207100BBD9560FE9616690BBD7B2C655872758E -S315600207200BBD612610404EC00BBD474D8532E409B4 -S315600207300BBD2DA24BC19EDF0BBD1423ED22D10151 -S315600207400BBCFAD1F42A88E40BBCE1ABED438E8094 -S315600207500BBCC8B1666884820BBCAFE1EF1D2D018C -S315600207600BBC973D1867D0EF0BBC7EC274CAC962D8 -S315600207700BBC6671983E29FE0BBC4E4A18298BA9A2 -S315600207800BBC364B8B5DF6DB0BBC1E758A0FECBF62 -S315600207900BBC06C7ADD18E7E0BBBEF41918CE1F6E9 -S315600207A00BBBD7E2D17E33360BBBC0AB0B2E921B93 -S315600207B00BBBA999DD6E6B650BBB92AEE8503CA78D -S315600207C00BBB7BE9CD2362720BBB654A2E6F002C95 -S315600207D00BBB4ECFAFED00FE0BBB3879F685313FD2 -S315600207E00BBB2248A8486FDE0BBB0C3B6C6BF73B1E -S315600207F00BBAF651EB44BCEE0BBAE08BCE42E7F194 -S315600208000BBACAE8BFED5CC00BBAB5686BDD5EDDDC -S315600208100BBAA00A7EBA475E0BBA8ACEA6354FEBF2 -S315600208200BBA75B4910571DB0BBA60BBEEE358EF98 -S315600208300BBA4BE4708569410BBA372DC79BD7FE5D -S315600208400BBA2297A6CCD68C0BBA0E21C1B0CFA01A -S315600208500BB9F9CBCCCEB6050BB9E5957D98648B11 -S315600208600BB9D17E8A670EE70BB9BD86AA77C3102C -S315600208700BB9A9AD95E7FAC40BB995F305B23CE598 -S315600208800BB98256B3AACE570BB96ED85A7C72068A -S315600208900BB95B77B5A537C80BB94834817359CCA8 -S315600208A00BB9350E7B02284D0BB922056037032E34 -S315600208B00BB90F18EFBE614A0BB8FC48E908E5228E -S315600208C00BB8E9950C487EA90BB8D6FD1A6D99E866 -S315600208D00BB8C480D5245A340BB8B21FFED1E1BC22 -S315600208E00BB89FDA5A91A5260BB88DAFAC32CB0AFC -S315600208F00BB87B9FB83596F60BB869AA43C8DFE199 -S315600209000BB857CF14C791B50BB8460DF1B639C6B9 -S315600209100BB83466A1C09DF90BB822D8ECB75E6EEF -S315600209200BB811649B0DA16B0BB8000975D6C9593A -S315600209300BB7EEC746C434A50BB7DD9DD823075265 -S315600209400BB7CC8CF4D9FE010BB7BB9468674A50DF -S315600209500BB7AAB3FEDE78540BB799EB84E65D0C4F -S315600209600BB7893AC7B70D960BB778A19517DF0112 -S315600209700BB7681FBB5D6E910BB757B50967B24C73 -S315600209800BB747614EA011A20BB737245AF78614EC -S315600209900BB726FDFEE4C3A00BB716EE0B6268E842 -S315600209A00BB706F451ED36CE0BB6F710A4824F8024 -S315600209B00BB6E742D59D7CB40BB6D78AB8377D0EA7 -S315600209C00BB6C7E81FC458720BB6B85AE031BB32D1 -S315600209D00BB6A8E2CDE557F90BB6997FBDBB50457C -S315600209E00BB68A318504A35C0BB67AF7F985A39BAD -S315600209F00BB66BD2F17471FF0BB65CC243777FCED6 -S31560020A000BB64DC5C6A416420BB63EDD527CE4114A -S31560020A100BB63008BEF090CF0BB62147E45855EBC3 -S31560020A200BB6129A9B769D520BB60400BD75A584D1 -S31560020A300BB5F57A23E62B070BB5E706A8BE172C8E -S31560020A400BB5D8A6265733FF0BB5CA58776DE54B5B -S31560020A500BB5BC1D771FE6AB0BB5ADF500EB0E789B -S31560020A600BB59FDEF0AC15940BB591DB229D63F25C -S31560020A700BB583E97355E1C10BB57609BFC7CD32B4 -S31560020A800BB5683BE53F94B80BB55A7FC162B5B604 -S31560020A900BB54CD5322E9F7F0BB53F3C15F79AA10D -S31560020AA00BB531B44B67B45A0BB5243DB17DAE304C -S31560020AB00BB516D8278BF18F0BB509838D378767F0 -S31560020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB49 -S31560020AD00BB4E1EA1D1EA6680BB4D4D8040308E57C -S31560020AE00BB4C7D63D722B370BB4BAE4AAEBF948FE -S31560020AF00BB4AE032E3C2D7E0BB4A131A97965C928 -S31560020B000BB4946FFF043C1C0BB487BE118662362D -S31560020B100BB47B1BC3F1C0BF0BB46E88F97F999B84 -S31560020B200BB4620595AFAD730BB455917C476454B3 -S31560020B300BB4492C9150F96C0BB43CD6B91AA9C8BE -S31560020B400BB4308FD835E60B0BB42457D3768716A1 -S31560020B500BB4182E8FF205900BB40C13F2FEB43B55 -S31560020B600BB40007E232FD1F0BB3F40A4364A167BC -S31560020B700BB3E81AFCA7FBF00BB3DC39F44F468AD9 -S31560020B800BB3D06710E9E1C30BB3C4A239439F4FDD -S31560020B900BB3B8EB54640EF10BB3AD42498DCDDFA6 -S31560020BA00BB3A1A7003DD89B0BB39619602ADF2B26 -S31560020BB00BB38A9951449BB80BB37F26BBB32B798F -S31560020BC00BB373C187D669EA0BB368699E454E4417 -S31560020BD00BB35D1EE7CD4B2D0BB351E14D71B09852 -S31560020BE00BB346B0B86B0FC30BB33B8D1226A15A3B -S31560020BF00BB330764445ADAC0BB3256C389CF6EB43 -S31560020C000BB31A6ED934256E0BB30F7E104535F5CC -S31560020C100BB30499C83BE9D60BB2F9C1EBB53923DC -S31560020C200BB2EEF6657EC6AA0BB2E437209655D5B0 -S31560020C300BB2D984082942630BB2CEDD0793F9E77A -S31560020C400BB2C4420A6177190BB2B9B2FC4ABEDA78 -S31560020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1D9 -S31560020C600BB29A4CA48F90E30BB28FEC8BA9777977 -S31560020C700BB28597FF1D694D0BB27B4EEBAE48DD1D -S31560020C800BB271113E499CEE0BB266DEE4071AA8FE -S31560020C900BB25CB7CA2831380BB2529BDE1796F795 -S31560020CA00BB2488B0D68D8030BB23E8545D7E65A20 -S31560020CB00BB2348A7548AB540BB22A9A89C69A9794 -S31560020CC00BB220B5718446610BB216DB1ADAF53FB8 -S31560020CD00BB20D0B744A39100BB203466C77876CF4 -S31560020CE00BB1F98BF22DD3490BB1EFDBF45D27FF24 -S31560020CF00BB1E636621A457E0BB1DC9B2A9E3DD568 -S31560020D000BB1D30A3D4613EE0BB1C98389925B815F -S31560020D100BB1C006FF26DA3F0BB1B6948DCA2A28FC -S31560020D200BB1AD2C25655D0F0BB1A3CDB603A13D0D -S31560020D300BB19A792FD1E7410BB1912E831E88D2DE -S31560020D400BB187EDA058F0D60BB17EB6781144731D -S31560020D500BB17588FAF80D3A0BB16C6519DDE45D75 -S31560020D600BB1634AC5B31EEF0BB15A39EF877B28C5 -S31560020D700BB151328889CEAE0BB148348207B5DBEE -S31560020D800BB13F3FCD6D43FF0BB136545C44B49A11 -S31560020D900BB12D7220361D870BB124990B07221BCE -S31560020DA00BB11BC90E9AA72D0BB113021CF0880F4B -S31560020DB00BB10A4428254C650BB1018F2271DEE521 -S31560020DC00BB0F8E2FE2B44F40BB0F03FADC25723F2 -S31560020DD00BB0E7A523C37A850BB0DF1352D65AD977 -S31560020DE00BB0D68A2DBDA58C0BB0CE09A756C58988 -S31560020DF00BB0C591B2999FDB0BB0BD2242985115DB -S31560020E000BB0B4BB4A7EEB870BB0AC5CBD93363697 -S31560020E1065300000653010006530200065303000B6 -S31560020E2065304000653050006530600065307000A6 -S31560020E3065308000653090006530A0006530B00096 -S31560020E406530C0006530D0006530E0006530F00086 -S31560020E506531000065311000653120006531300072 -S31560020E606531400065315000653160006531700062 -S31560020E7065318000653190006531A0006531B00052 -S31560020E806531C0006531D0006531E0006531F00042 -S31560020E90653200006532100065322000653230002E -S31560020EA0653240006532500065326000653270001E -S31560020EB065328000653290006532A0006532B0000E -S31560020EC06532C0006532D0006532E0006532F000FE -S31560020ED065330000653310006533200065333000EA -S31560020EE065334000653350006533600065337000DA -S31560020EF065338000653390006533A0006533B000CA -S31560020F006533C0006533D0006533E0006533F000B9 -S31560020F1065340000653410006534200065343000A5 -S31560020F206534400065345000653460006534700095 -S31560020F3065348000653490006534A0006534B00085 -S31560020F406534C0006534D0006534E0006534F00075 -S31560020F506535000065351000653520006535300061 -S31560020F606535400065355000653560006535700051 -S31560020F7065358000653590006535A0006535B00041 -S31560020F806535C0006535D0006535E0006535F00031 -S31560020F90653600006536100065362000653630001D -S31560020FA0653640006536500065366000653670000D -S31560020FB065368000653690006536A0006536B000FD -S31560020FC06536C0006536D0006536E0006536F000ED -S31560020FD065370000653710006537200065373000D9 -S31560020FE065374000653750006537600065377000C9 -S31560020FF065378000653790006537A0006537B000B9 -S315600210006537C0006537D0006537E0006537F000A8 -S315600210106538000065381000653820006538300094 -S315600210206538400065385000653860006538700084 -S3156002103065388000653890006538A0006538B00074 -S315600210406538C0006538D0006538E0006538F00064 -S315600210506539000065391000653920006539300050 -S315600210606539400065395000653960006539700040 -S3156002107065398000653990006539A0006539B00030 -S315600210806539C0006539D0006539E0006539F00020 -S31560021090653A0000653A1000653A2000653A30000C -S315600210A0653A4000653A5000653A6000653A7000FC -S315600210B0653A8000653A9000653AA000653AB000EC -S315600210C0653AC000653AD000653AE000653AF000DC -S315600210D0653B0000653B1000653B2000653B3000C8 -S315600210E0653B4000653B5000653B6000653B7000B8 -S315600210F0653B8000653B9000653BA000653BB000A8 -S31560021100653BC000653BD000653BE000653BF00097 -S31560021110653C0000653C1000653C2000653C300083 -S31560021120653C4000653C5000653C6000653C700073 -S31560021130653C8000653C9000653CA000653CB00063 -S31560021140653CC000653CD000653CE000653CF00053 -S31560021150653D0000653D1000653D2000653D30003F -S31560021160653D4000653D5000653D6000653D70002F -S31560021170653D8000653D9000653DA000653DB0001F -S31560021180653DC000653DD000653DE000653DF0000F -S31560021190653E0000653E1000653E2000653E3000FB -S315600211A0653E4000653E5000653E6000653E7000EB -S315600211B0653E8000653E9000653EA000653EB000DB -S315600211C0653EC000653ED000653EE000653EF000CB -S315600211D0653F0000653F1000653F2000653F3000B7 -S315600211E0653F4000653F5000653F6000653F7000A7 -S315600211F0653F8000653F9000653FA000653FB00097 -S31560021200653FC000653FD000653FE000653FF00086 -S315600212104200000000000000400FFFFFFFFFFFFFDB -S315600212204200000000200000420FFFFFFFFFFFFFA9 -S3156002123040000000000000004210000000080000AC -S3156002124042000000000000013EB000000000000104 -S315600212504200000000000002420F484C0137D208EB -S31560021260C20E780F256007AB41BA079B7AF94BA08D -S315600212704201484C0137D208420E780F256007AB0F -S315600212804217E02D934BECDA420F484C0137D208F5 -S31560021290C21E780F256007ABC20DA7D249883D4EA4 -S315600212A0421F484C0137D208C20E780F256007AB41 -S315600212B042100C446E87CE32C03340AB371208916F -S315600212C00000000000000000C03340AB37120891F6 -S315600212D00000000000000000C29E7A0F236007A68D -S315600212E0C29E7A0F236007A66F3F484C0137D20829 -S315600212F06E2E780F256007AB6F3F485B3D3F64B843 -S315600213006F3F484C0137D208EE2E780F256007AB47 -S315600213106F3F483CC5303F587FE2F780AB123809D1 -S315600213207FD00000000000007FEAF780AB12380928 -S31560021330002000000000000080280000000000007D -S3156002134080100000000000007FEFF780AB123809C2 -S315600213507FEFF2010203A1117FF00000000000009E -S315600213600010000000001000801FFFFFF203A111B1 -S315600213708000000000000000001ABCD0000238099C -S31560021380801ABCD0000001110000000000000000BD -S315600213907E71000000000000416010000000000045 -S315600213A07FE11100000000000178100000000000DB -S315600213B03E880000FFF0000000120C00C073F800C7 -S315600213C0C1EFFFFFC00020003FB3C75D224F280F69 -S315600213D0C1B3C75CFAC08192A12FFF8000001FFFD4 -S315600213E03EE0000000FF0000A01FFF8001FE18071C -S315600213F041CFFFFE0000002040303FFFFFFFFFFDB0 -S3156002140042103FFEFC00000D3FD000003FEFFFFFA1 -S31560021410BFD0000010000000BFB000004FF0003FD8 -S3156002142001701000000000003E8000011A000000FA -S3156002143000000000000000007E7C0000000000004A -S31560021440416A1000010000107FF0000000000000F9 -S3156002145075012034056AC000FA1009091000104FA0 -S31560021460FFF000000000000001002030400302008F -S31560021470003020340000A00B0000000000000000D5 -S315600214807FE0001010200001400000000010200ADA -S315600214907FF00000000000003FEFDFF00FFC484ADB -S315600214A0BFF80000000000007FFF0000000000009F -S315600214B07FFFE000000000007FF4000000000000F3 -S315600214C07FC00000000000007FF8000000000000FE -S315600214D07FF0000000000000FFF000000000000046 -S315600214E0FFF0000000000000800000000000000025 -S315600214F00000000000010000000000000000000083 -S315600215000000000000000000000000000000000073 -S315600215100000000000000000000000000000000063 -S315600215200000000000000000000000000000000053 -S315600215300000000000000000000000000000000043 -S315600215400000000000000000000000000000000033 -S315600215500000000000000000000000000000000023 -S315600215600000000000000000000000000000000013 -S315600215700000000000000000000000000000000003 -S3156002158000000000000000000000000000000000F3 -S3156002159000000000000000000000000000000000E3 -S315600215A000000000000000000000000000000000D3 -S315600215B000000000000000000000000000000000C3 -S315600215C000000000000000000000000000000000B3 -S315600215D000000000000000000000000000000000A3 -S315600215E00000000000000000000000000000000093 -S315600215F00000000000000000000000000000000083 -S315600216000000000000000000000000000000000072 -S315600216100000000000000000000000000000000062 -S315600216200000000000000000000000000000000052 -S315600216300000000000000000000000000000000042 -S315600216400000000000000000000000000000000032 -S315600216500000000000000000000000000000000022 -S315600216600000000000000000000000000000000012 -S315600216700000000000000000000000000000000002 -S3156002168000000000000000000000000000000000F2 -S3156002169000000000000000000000000000000000E2 -S315600216A000000000000000000000000000000000D2 -S315600216B000000000000000000000000000000000C2 -S315600216C000000000000000000000000000000000B2 -S315600216D000000000000000000000000000000000A2 -S315600216E00000000000000000000000000000000092 -S315600216F00000000000000000000000000000000082 -S315600217000000000000000000000000000000000071 -S315600217100000000000000000000000000000000061 -S315600217200000000000000000000000000000000051 -S315600217300000000000000000000000000000000041 -S315600217400000000000000000000000000000000031 -S315600217500000000000000000000000000000000021 -S315600217600000000000000000000000000000000011 -S315600217700000000000000000000000000000000001 -S3156002178000000000000000000000000000000000F1 -S3156002179000000000000000000000000000000000E1 -S315600217A000000000000000000000000000000000D1 -S315600217B000000000000000000000000000000000C1 -S315600217C000000000000000000000000000000000B1 -S315600217D000000000000000000000000000000000A1 -S315600217E00000000000000000000000000000000091 -S315600217F00000000000000000000000000000000081 -S315600218000000000000000000000000000000000070 -S315600218100000000000000000000000000000000060 -S315600218200000000000000000000000000000000050 -S315600218300000000000000000000000000000000040 -S315600218400000000000000000000000000000000030 -S315600218500000000000000000000000000000000020 -S315600218600000000000000000000000000000000010 -S315600218700000000000000000000000000000000000 -S3156002188000000000000000000000000000000000F0 -S3156002189000000000000000000000000000000000E0 -S315600218A000000000000000000000000000000000D0 -S315600218B000000000000000000000000000000000C0 -S315600218C000000000000000000000000000000000B0 -S315600218D000000000000000000000000000000000A0 -S315600218E00000000000000000000000000000000090 -S315600218F00000000000000000000000000000000080 -S31560021900000000000000000000000000000000006F -S31560021910000000000000000000000000000000005F -S31560021920000000000000000000000000000000004F -S31560021930000000000000000000000000000000003F -S31560021940000000000000000000000000000000002F -S31560021950000000000000000000000000000000001F -S31560021960000000000000000000000000000000000F -S3156002197000000000000000000000000000000000FF -S3156002198000000000000000000000000000000000EF -S3156002199000000000000000000000000000000000DF -S315600219A000000000000000000000000000000000CF -S315600219B000000000000000000000000000000000BF -S315600219C000000000000000000000000000000000AF -S315600219D0000000000000000000000000000000009F -S315600219E0000000000000000000000000000000008F -S315600219F0000000000000000000000000000000007F -S31560021A00000000000000000000000000000000006E -S31560021A10000000000000000000000000000000005E -S31560021A20000000000000000000000000000000004E -S31560021A30000000000000000000000000000000003E -S31560021A40000000000000000000000000000000002E -S31560021A50000000000000000000000000000000001E -S31560021A60000000000000000000000000000000000E -S31560021A7000000000000000000000000000000000FE -S31560021A8000000000000000000000000000000000EE -S31560021A9000000000000000000000000000000000DE -S31560021AA000000000000000000000000000000000CE -S31560021AB000000000000000000000000000000000BE -S31560021AC000000000000000000000000000000000AE -S31560021AD0000000000000000000000000000000009E -S31560021AE0000000000000000000000000000000008E -S31560021AF0000000000000000000000000000000007E -S31560021B00000000000000000000000000000000006D -S31560021B10000000000000000000000000000000005D -S31560021B20000000000000000000000000000000004D -S31560021B30000000000000000000000000000000003D -S31560021B40000000000000000000000000000000002D -S31560021B50000000000000000000000000000000001D -S31560021B60000000000000000000000000000000000D -S31560021B7000000000000000000000000000000000FD -S31560021B8000000000000000000000000000000000ED -S31560021B9000000000000000000000000000000000DD -S31560021BA000000000000000000000000000000000CD -S31560021BB000000000000000000000000000000000BD -S31560021BC000000000000000000000000000000000AD -S31560021BD0000000000000000000000000000000009D -S31560021BE0000000000000000000000000000000008D -S31560021BF0000000000000000000000000000000007D -S31560021C00000000000000000000000000000000006C -S31560021C10000000000000000000000000000000005C -S31560021C20000000000000000000000000000000004C -S31560021C30000000000000000000000000000000003C -S31560021C40000000000000000000000000000000002C -S31560021C50000000000000000000000000000000001C -S31560021C60000000000000000000000000000000000C -S31560021C7000000000000000000000000000000000FC -S31560021C8000000000000000000000000000000000EC -S31560021C9000000000000000000000000000000000DC -S31560021CA000000000000000000000000000000000CC -S31560021CB000000000000000000000000000000000BC -S31560021CC000000000000000000000000000000000AC -S31560021CD0000000000000000000000000000000009C -S31560021CE0000000000000000000000000000000008C -S31560021CF0000000000000000000000000000000007C -S31560021D00000000000000000000000000000000006B -S31560021D10000000000000000000000000000000005B -S31560021D20000000000000000000000000000000004B -S31560021D30000000000000000000000000000000003B -S31560021D40000000000000000000000000000000002B -S31560021D50000000000000000000000000000000001B -S31560021D60000000000000000000000000000000000B -S31560021D7000000000000000000000000000000000FB -S31560021D8000000000000000000000000000000000EB -S31560021D9000000000000000000000000000000000DB -S31560021DA000000000000000000000000000000000CB -S31560021DB000000000000000000000000000000000BB -S31560021DC000000000000000000000000000000000AB -S31560021DD0000000000000000000000000000000009B -S31560021DE0000000000000000000000000000000008B -S31560021DF0000000000000000000000000000000007B -S31560021E00000000000000000000000000000000006A -S31560021E10000000000000000000000000000000005A -S31560021E20000000000000000000000000000000004A -S31560021E30000000000000000000000000000000003A -S31560021E40000000000000000000000000000000002A -S31560021E50000000000000000000000000000000001A -S31560021E60000000000000000000000000000000000A -S31560021E7000000000000000000000000000000000FA -S31560021E8000000000000000000000000000000000EA -S31560021E9000000000000000000000000000000000DA -S31560021EA000000000000000000000000000000000CA -S31560021EB000000000000000000000000000000000BA -S31560021EC000000000000000000000000000000000AA -S31560021ED0000000000000000000000000000000009A -S31560021EE0000000000000000000000000000000008A -S31560021EF0000000000000000000000000000000007A -S31560021F000000000000000000000000000000000069 -S31560021F100000000000000000000000000000000059 -S31560021F200000000000000000000000000000000049 -S31560021F300000000000000000000000000000000039 -S31560021F400000000000000000000000000000000029 -S31560021F500000000000000000000000000000000019 -S31560021F600000000000000000000000000000000009 -S31560021F7000000000000000000000000000000000F9 -S31560021F8000000000000000000000000000000000E9 -S31560021F9000000000000000000000000000000000D9 -S31560021FA000000000000000000000000000000000C9 -S31560021FB000000000000000000000000000000000B9 -S31560021FC000000000000000000000000000000000A9 -S31560021FD00000000000000000000000000000000099 -S31560021FE00000000000000000000000000000000089 -S31560021FF00000000000000000000000000000000079 -S315600220000000000000000000000000000000000068 -S315600220100000000000000000000000000000000058 -S315600220200000000000000000000000000000000048 -S315600220300000000000000000000000000000000038 -S315600220400000000000000000000000000000000028 -S315600220500000000000000000000000000000000018 -S315600220600000000000000000000000000000000008 -S3156002207000000000000000000000000000000000F8 -S3156002208000000000000000000000000000000000E8 -S3156002209000000000000000000000000000000000D8 -S315600220A000000000000000000000000000000000C8 -S315600220B000000000000000000000000000000000B8 -S315600220C000000000000000000000000000000000A8 -S315600220D00000000000000000000000000000000098 -S315600220E00000000000000000000000000000000088 -S315600220F00000000000000000000000000000000078 -S315600221000000000000000000000000000000000067 -S315600221100000000000000000000000000000000057 -S315600221200000000000000000000000000000000047 -S315600221300000000000000000000000000000000037 -S315600221400000000000000000000000000000000027 -S315600221500000000000000000000000000000000017 -S315600221600000000000000000000000000000000007 -S3156002217000000000000000000000000000000000F7 -S3156002218000000000000000000000000000000000E7 -S3156002219000000000000000000000000000000000D7 -S315600221A000000000000000000000000000000000C7 -S315600221B000000000000000000000000000000000B7 -S315600221C000000000000000000000000000000000A7 -S315600221D00000000000000000000000000000000097 -S315600221E00000000000000000000000000000000087 -S315600221F00000000000000000000000000000000077 -S315600222000000000000000000000000000000000066 -S315600222100000000000000000000000000000000056 -S315600222200000000000000000000000000000000046 -S315600222300000000000000000000000000000000036 -S315600222400000000000000000000000000000000026 -S315600222500000000000000000000000000000000016 -S315600222600000000000000000000000000000000006 -S3156002227000000000000000000000000000000000F6 -S3156002228000000000000000000000000000000000E6 -S3156002229000000000000000000000000000000000D6 -S315600222A000000000000000000000000000000000C6 -S315600222B000000000000000000000000000000000B6 -S315600222C000000000000000000000000000000000A6 -S315600222D00000000000000000000000000000000096 -S315600222E00000000000000000000000000000000086 -S315600222F00000000000000000000000000000000076 -S315600223000000000000000000000000000000000065 -S315600223100000000000000000000000000000000055 -S315600223200000000000000000000000000000000045 -S315600223300000000000000000000000000000000035 -S315600223400000000000000000000000000000000025 -S315600223500000000000000000000000000000000015 -S315600223600000000000000000000000000000000005 -S3156002237000000000000000000000000000000000F5 -S3156002238000000000000000000000000000000000E5 -S3156002239000000000000000000000000000000000D5 -S315600223A000000000000000000000000000000000C5 -S315600223B000000000000000000000000000000000B5 -S315600223C000000000000000000000000000000000A5 -S315600223D00000000000000000000000000000000095 -S315600223E00000000000000000000000000000000085 -S315600223F00000000000000000000000000000000075 -S315600224000000000000000000000000000000000064 -S315600224100000000000000000000000000000000054 -S315600224200000000000000000000000000000000044 -S315600224300000000000000000000000000000000034 -S315600224400000000000000000000000000000000024 -S315600224500000000000000000000000000000000014 -S315600224600000000000000000000000000000000004 -S3156002247000000000000000000000000000000000F4 -S3156002248000000000000000000000000000000000E4 -S3156002249000000000000000000000000000000000D4 -S315600224A000000000000000000000000000000000C4 -S315600224B000000000000000000000000000000000B4 -S315600224C000000000000000000000000000000000A4 -S315600224D00000000000000000000000000000000094 -S315600224E00000000000000000000000000000000084 -S315600224F00000000000000000000000000000000074 -S315600225000000000000000000000000000000000063 -S315600225100000000000000000000000000000000053 -S315600225200000000000000000000000000000000043 -S315600225300000000000000000000000000000000033 -S315600225400000000000000000000000000000000023 -S315600225500000000000000000000000000000000013 -S315600225600000000000000000000000000000000003 -S3156002257000000000000000000000000000000000F3 -S3156002258000000000000000000000000000000000E3 -S3156002259000000000000000000000000000000000D3 -S315600225A000000000000000000000000000000000C3 -S315600225B000000000000000000000000000000000B3 -S315600225C000000000000000000000000000000000A3 -S315600225D00000000000000000000000000000000093 -S315600225E00000000000000000000000000000000083 -S315600225F00000000000000000000000000000000073 -S315600226000000000000000000000000000000000062 -S315600226100000000000000000000000000000000052 -S315600226200000000000000000000000000000000042 -S315600226300000000000000000000000000000000032 -S315600226400000000000000000000000000000000022 -S315600226500000000000000000000000000000000012 -S315600226600000000000000000000000000000000002 -S3156002267000000000000000000000000000000000F2 -S3156002268000000000000000000000000000000000E2 -S3156002269000000000000000000000000000000000D2 -S315600226A000000000000000000000000000000000C2 -S315600226B000000000000000000000000000000000B2 -S315600226C000000000000000000000000000000000A2 -S315600226D00000000000000000000000000000000092 -S315600226E00000000000000000000000000000000082 -S315600226F00000000000000000000000000000000072 -S315600227000000000000000000000000000000000061 -S315600227100000000000000000000000000000000051 -S315600227200000000000000000000000000000000041 -S315600227300000000000000000000000000000000031 -S315600227400000000000000000000000000000000021 -S315600227500000000000000000000000000000000011 -S315600227600000000000000000000000000000000001 -S3156002277000000000000000000000000000000000F1 -S3156002278000000000000000000000000000000000E1 -S3156002279000000000000000000000000000000000D1 -S315600227A000000000000000000000000000000000C1 -S315600227B000000000000000000000000000000000B1 -S315600227C000000000000000000000000000000000A1 -S315600227D00000000000000000000000000000000091 -S315600227E00000000000000000000000000000000081 -S315600227F00000000000000000000000000000000071 -S315600228000000000000000000000000000000000060 -S315600228100000000000000000000000000000000050 -S315600228200000000000000000000000000000000040 -S315600228300000000000000000000000000000000030 -S315600228400000000000000000000000000000000020 -S315600228500000000000000000000000000000000010 -S315600228600000000000000000000000000000000000 -S3156002287000000000000000000000000000000000F0 -S3156002288000000000000000000000000000000000E0 -S3156002289000000000000000000000000000000000D0 -S315600228A000000000000000000000000000000000C0 -S315600228B000000000000000000000000000000000B0 -S315600228C000000000000000000000000000000000A0 -S315600228D00000000000000000000000000000000090 -S315600228E00000000000000000000000000000000080 -S315600228F00000000000000000000000000000000070 -S31560022900000000000000000000000000000000005F -S31560022910000000000000000000000000000000004F -S31560022920000000000000000000000000000000003F -S31560022930000000000000000000000000000000002F -S31560022940000000000000000000000000000000001F -S31560022950000000000000000000000000000000000F -S3156002296000000000000000000000000000000000FF -S3156002297000000000000000000000000000000000EF -S3156002298000000000000000000000000000000000DF -S3156002299000000000000000000000000000000000CF -S315600229A000000000000000000000000000000000BF -S315600229B000000000000000000000000000000000AF -S315600229C0000000000000000000000000000000009F -S315600229D0000000000000000000000000000000008F -S315600229E0000000000000000000000000000000007F -S315600229F0000000000000000000000000000000006F -S31560022A00000000000000000000000000000000005E -S31560022A10000000000000000000000000000000004E -S31560022A20000000000000000000000000000000003E -S31560022A30000000000000000000000000000000002E -S31560022A40000000000000000000000000000000001E -S31560022A50000000000000000000000000000000000E -S31560022A6000000000000000000000000000000000FE -S31560022A7000000000000000000000000000000000EE -S31560022A8000000000000000000000000000000000DE -S31560022A9000000000000000000000000000000000CE -S31560022AA000000000000000000000000000000000BE -S31560022AB000000000000000000000000000000000AE -S31560022AC0000000000000000000000000000000009E -S31560022AD0000000000000000000000000000000008E -S31560022AE0000000000000000000000000000000007E -S31560022AF0000000000000000000000000000000006E -S31560022B00000000000000000000000000000000005D -S31560022B10000000000000000000000000000000004D -S31560022B20000000000000000000000000000000003D -S31560022B30000000000000000000000000000000002D -S31560022B40000000000000000000000000000000001D -S31560022B50000000000000000000000000000000000D -S31560022B6000000000000000000000000000000000FD -S31560022B7000000000000000000000000000000000ED -S31560022B8000000000000000000000000000000000DD -S31560022B9000000000000000000000000000000000CD -S31560022BA000000000000000000000000000000000BD -S31560022BB000000000000000000000000000000000AD -S31560022BC0000000000000000000000000000000009D -S31560022BD0000000000000000000000000000000008D -S31560022BE0000000000000000000000000000000007D -S31560022BF0000000000000000000000000000000006D -S31560022C00000000000000000000000000000000005C -S31560022C10000000000000000000000000000000004C -S31560022C20000000000000000000000000000000003C -S31560022C30000000000000000000000000000000002C -S31560022C40000000000000000000000000000000001C -S31560022C50000000000000000000000000000000000C -S31560022C6000000000000000000000000000000000FC -S31560022C7000000000000000000000000000000000EC -S31560022C8000000000000000000000000000000000DC -S31560022C9000000000000000000000000000000000CC -S31560022CA000000000000000000000000000000000BC -S31560022CB000000000000000000000000000000000AC -S31560022CC0000000000000000000000000000000009C -S31560022CD0000000000000000000000000000000008C -S31560022CE0000000000000000000000000000000007C -S31560022CF0000000000000000000000000000000006C -S31560022D00000000000000000000000000000000005B -S31560022D10000000000000000000000000000000004B -S31560022D20000000000000000000000000000000003B -S31560022D30000000000000000000000000000000002B -S31560022D40000000000000000000000000000000001B -S31560022D50000000000000000000000000000000000B -S31560022D6000000000000000000000000000000000FB -S31560022D7000000000000000000000000000000000EB -S31560022D8000000000000000000000000000000000DB -S31560022D9000000000000000000000000000000000CB -S31560022DA000000000000000000000000000000000BB -S31560022DB000000000000000000000000000000000AB -S31560022DC0000000000000000000000000000000009B -S31560022DD0000000000000000000000000000000008B -S31560022DE0000000000000000000000000000000007B -S31560022DF0000000000000000000000000000000006B -S31560022E00000000000000000000000000000000005A -S31560022E10000000000000000000000000000000004A -S31560022E20000000000000000000000000000000003A -S31560022E30000000000000000000000000000000002A -S31560022E40000000000000000000000000000000001A -S31560022E50000000000000000000000000000000000A -S31560022E6000000000000000000000000000000000FA -S31560022E7000000000000000000000000000000000EA -S31560022E8000000000000000000000000000000000DA -S31560022E9000000000000000000000000000000000CA -S31560022EA000000000000000000000000000000000BA -S31560022EB000000000000000000000000000000000AA -S31560022EC0000000000000000000000000000000009A -S31560022ED0000000000000000000000000000000008A -S31560022EE0000000000000000000000000000000007A -S31560022EF0000000000000000000000000000000006A -S31560022F000000000000000000000000000000000059 -S31560022F100000000000000000000000000000000049 -S31560022F200000000000000000000000000000000039 -S31560022F300000000000000000000000000000000029 -S31560022F400000000000000000000000000000000019 -S31560022F500000000000000000000000000000000009 -S31560022F6000000000000000000000000000000000F9 -S31560022F7000000000000000000000000000000000E9 -S31560022F8000000000000000000000000000000000D9 -S31560022F9000000000000000000000000000000000C9 -S31560022FA000000000000000000000000000000000B9 -S31560022FB000000000000000000000000000000000A9 -S31560022FC00000000000000000000000000000000099 -S31560022FD00000000000000000000000000000000089 -S31560022FE00000000000000000000000000000000079 -S31560022FF00000000000000000000000000000000069 -S315600230000000000000000000000000000000000058 -S315600230100000000000000000000000000000000048 -S315600230200000000000000000000000000000000038 -S315600230300000000000000000000000000000000028 -S315600230400000000000000000000000000000000018 -S315600230500000000000000000000000000000000008 -S3156002306000000000000000000000000000000000F8 -S3156002307000000000000000000000000000000000E8 -S3156002308000000000000000000000000000000000D8 -S3156002309000000000000000000000000000000000C8 -S315600230A000000000000000000000000000000000B8 -S315600230B000000000000000000000000000000000A8 -S315600230C00000000000000000000000000000000098 -S315600230D00000000000000000000000000000000088 -S315600230E00000000000000000000000000000000078 -S315600230F00000000000000000000000000000000068 -S315600231000000000000000000000000000000000057 -S315600231100000000000000000000000000000000047 -S315600231200000000000000000000000000000000037 -S315600231300000000000000000000000000000000027 -S315600231400000000000000000000000000000000017 -S315600231500000000000000000000000000000000007 -S3156002316000000000000000000000000000000000F7 -S3156002317000000000000000000000000000000000E7 -S3156002318000000000000000000000000000000000D7 -S3156002319000000000000000000000000000000000C7 -S315600231A000000000000000000000000000000000B7 -S315600231B000000000000000000000000000000000A7 -S315600231C00000000000000000000000000000000097 -S315600231D00000000000000000000000000000000087 -S315600231E00000000000000000000000000000000077 -S315600231F00000000000000000000000000000000067 -S315600232000000000000000000000000000000000056 -S315600232100000000000000000000000000000000046 -S315600232200000000000000000000000000000000036 -S315600232300000000000000000000000000000000026 -S315600232400000000000000000000000000000000016 -S315600232500000000000000000000000000000000006 -S3156002326000000000000000000000000000000000F6 -S3156002327000000000000000000000000000000000E6 -S3156002328000000000000000000000000000000000D6 -S3156002329000000000000000000000000000000000C6 -S315600232A000000000000000000000000000000000B6 -S315600232B000000000000000000000000000000000A6 -S315600232C00000000000000000000000000000000096 -S315600232D00000000000000000000000000000000086 -S315600232E00000000000000000000000000000000076 -S315600232F00000000000000000000000000000000066 -S315600233000000000000000000000000000000000055 -S315600233100000000000000000000000000000000045 -S315600233200000000000000000000000000000000035 -S315600233300000000000000000000000000000000025 -S315600233400000000000000000000000000000000015 -S315600233500000000000000000000000000000000005 -S3156002336000000000000000000000000000000000F5 -S3156002337000000000000000000000000000000000E5 -S3156002338000000000000000000000000000000000D5 -S3156002339000000000000000000000000000000000C5 -S315600233A000000000000000000000000000000000B5 -S315600233B000000000000000000000000000000000A5 -S315600233C00000000000000000000000000000000095 -S315600233D00000000000000000000000000000000085 -S315600233E00000000000000000000000000000000075 -S315600233F00000000000000000000000000000000065 -S315600234000000000000000000000000000000000054 -S315600234100000000000000000000000000000000044 -S315600234200000000000000000000000000000000034 -S315600234300000000000000000000000000000000024 -S315600234400000000000000000000000000000000014 -S315600234500000000000000000000000000000000004 -S3156002346000000000000000000000000000000000F4 -S3156002347000000000000000000000000000000000E4 -S3156002348000000000000000000000000000000000D4 -S3156002349000000000000000000000000000000000C4 -S315600234A000000000000000000000000000000000B4 -S315600234B000000000000000000000000000000000A4 -S315600234C00000000000000000000000000000000094 -S315600234D00000000000000000000000000000000084 -S315600234E00000000000000000000000000000000074 -S315600234F00000000000000000000000000000000064 -S315600235000000000000000000000000000000000053 -S315600235100000000000000000000000000000000043 -S315600235200000000000000000000000000000000033 -S315600235300000000000000000000000000000000023 -S315600235400000000000000000000000000000000013 -S315600235500000000000000000000000000000000003 -S3156002356000000000000000000000000000000000F3 -S3156002357000000000000000000000000000000000E3 -S3156002358000000000000000000000000000000000D3 -S3156002359000000000000000000000000000000000C3 -S315600235A000000000000000000000000000000000B3 -S315600235B000000000000000000000000000000000A3 -S315600235C00000000000000000000000000000000093 -S315600235D00000000000000000000000000000000083 -S315600235E00000000000000000000000000000000073 -S315600235F00000000000000000000000000000000063 -S315600236000000000000000000000000000000000052 -S315600236100000000000000000000000000000000042 -S315600236200000000000000000000000000000000032 -S315600236300000000000000000000000000000000022 -S315600236400000000000000000000000000000000012 -S315600236500000000000000000000000000000000002 -S3156002366000000000000000000000000000000000F2 -S3156002367000000000000000000000000000000000E2 -S3156002368000000000000000000000000000000000D2 -S3156002369000000000000000000000000000000000C2 -S315600236A000000000000000000000000000000000B2 -S315600236B000000000000000000000000000000000A2 -S315600236C00000000000000000000000000000000092 -S315600236D00000000000000000000000000000000082 -S315600236E00000000000000000000000000000000072 -S315600236F00000000000000000000000000000000062 -S315600237000000000000000000000000000000000051 -S315600237100000000000000000000000000000000041 -S315600237200000000000000000000000000000000031 -S315600237300000000000000000000000000000000021 -S315600237400000000000000000000000000000000011 -S315600237500000000000000000000000000000000001 -S3156002376000000000000000000000000000000000F1 -S3156002377000000000000000000000000000000000E1 -S3156002378000000000000000000000000000000000D1 -S3156002379000000000000000000000000000000000C1 -S315600237A000000000000000000000000000000000B1 -S315600237B000000000000000000000000000000000A1 -S315600237C00000000000000000000000000000000091 -S315600237D00000000000000000000000000000000081 -S315600237E00000000000000000000000000000000071 -S315600237F00000000000000000000000000000000061 -S315600238000000000000000000000000000000000050 -S315600238100000000000000000000000000000000040 -S315600238200000000000000000000000000000000030 -S315600238300000000000000000000000000000000020 -S315600238400000000000000000000000000000000010 -S315600238500000000000000000000000000000000000 -S3156002386000000000000000000000000000000000F0 -S3156002387000000000000000000000000000000000E0 -S3156002388000000000000000000000000000000000D0 -S3156002389000000000000000000000000000000000C0 -S315600238A000000000000000000000000000000000B0 -S315600238B000000000000000000000000000000000A0 -S315600238C00000000000000000000000000000000090 -S315600238D00000000000000000000000000000000080 -S315600238E00000000000000000000000000000000070 -S315600238F00000000000000000000000000000000060 -S31560023900000000000000000000000000000000004F -S31560023910000000000000000000000000000000003F -S31560023920000000000000000000000000000000002F -S31560023930000000000000000000000000000000001F -S31560023940000000000000000000000000000000000F -S3156002395000000000000000000000000000000000FF -S3156002396000000000000000000000000000000000EF -S3156002397000000000000000000000000000000000DF -S3156002398000000000000000000000000000000000CF -S3156002399000000000000000000000000000000000BF -S315600239A000000000000000000000000000000000AF -S315600239B0000000000000000000000000000000009F -S315600239C0000000000000000000000000000000008F -S315600239D0000000000000000000000000000000007F -S315600239E0000000000000000000000000000000006F -S315600239F0000000000000000000000000000000005F -S31560023A00000000000000000000000000000000004E -S31560023A10000000000000000000000000000000003E -S31560023A20000000000000000000000000000000002E -S31560023A30000000000000000000000000000000001E -S31560023A40000000000000000000000000000000000E -S31560023A5000000000000000000000000000000000FE -S31560023A6000000000000000000000000000000000EE -S31560023A7000000000000000000000000000000000DE -S31560023A8000000000000000000000000000000000CE -S31560023A9000000000000000000000000000000000BE -S31560023AA000000000000000000000000000000000AE -S31560023AB0000000000000000000000000000000009E -S31560023AC0000000000000000000000000000000008E -S31560023AD0000000000000000000000000000000007E -S31560023AE0000000000000000000000000000000006E -S31560023AF0000000000000000000000000000000005E -S31560023B00000000000000000000000000000000004D -S31560023B10000000000000000000000000000000003D -S31560023B20000000000000000000000000000000002D -S31560023B30000000000000000000000000000000001D -S31560023B40000000000000000000000000000000000D -S31560023B5000000000000000000000000000000000FD -S31560023B6000000000000000000000000000000000ED -S31560023B7000000000000000000000000000000000DD -S31560023B8000000000000000000000000000000000CD -S31560023B9000000000000000000000000000000000BD -S31560023BA000000000000000000000000000000000AD -S31560023BB0000000000000000000000000000000009D -S31560023BC0000000000000000000000000000000008D -S31560023BD0000000000000000000000000000000007D -S31560023BE0000000000000000000000000000000006D -S31560023BF0000000000000000000000000000000005D -S31560023C00000000000000000000000000000000004C -S31560023C10000000000000000000000000000000003C -S31560023C20000000000000000000000000000000002C -S31560023C30000000000000000000000000000000001C -S31560023C40000000000000000000000000000000000C -S31560023C5000000000000000000000000000000000FC -S31560023C6000000000000000000000000000000000EC -S31560023C7000000000000000000000000000000000DC -S31560023C8000000000000000000000000000000000CC -S31560023C9000000000000000000000000000000000BC -S31560023CA000000000000000000000000000000000AC -S31560023CB0000000000000000000000000000000009C -S31560023CC0000000000000000000000000000000008C -S31560023CD0000000000000000000000000000000007C -S31560023CE0000000000000000000000000000000006C -S31560023CF0000000000000000000000000000000005C -S31560023D00000000000000000000000000000000004B -S31560023D10000000000000000000000000000000003B -S31560023D20000000000000000000000000000000002B -S31560023D30000000000000000000000000000000001B -S31560023D40000000000000000000000000000000000B -S31560023D5000000000000000000000000000000000FB -S31560023D6000000000000000000000000000000000EB -S31560023D7000000000000000000000000000000000DB -S31560023D8000000000000000000000000000000000CB -S31560023D9000000000000000000000000000000000BB -S31560023DA000000000000000000000000000000000AB -S31560023DB0000000000000000000000000000000009B -S31560023DC0000000000000000000000000000000008B -S31560023DD0000000000000000000000000000000007B -S31560023DE0000000000000000000000000000000006B -S31560023DF0000000000000000000000000000000005B -S31560023E00000000000000000000000000000000004A -S31560023E10000000000000000000000000000000003A -S31560023E20000000000000000000000000000000002A -S31560023E30000000000000000000000000000000001A -S31560023E40000000000000000000000000000000000A -S31560023E5000000000000000000000000000000000FA -S31560023E6000000000000000000000000000000000EA -S31560023E7000000000000000000000000000000000DA -S31560023E8000000000000000000000000000000000CA -S31560023E9000000000000000000000000000000000BA -S31560023EA000000000000000000000000000000000AA -S31560023EB0000000000000000000000000000000009A -S31560023EC0000000000000000000000000000000008A -S31560023ED0000000000000000000000000000000007A -S31560023EE0000000000000000000000000000000006A -S31560023EF0000000000000000000000000000000005A -S31560023F000000000000000000000000000000000049 -S31560023F100000000000000000000000000000000039 -S31560023F200000000000000000000000000000000029 -S31560023F300000000000000000000000000000000019 -S31560023F400000000000000000000000000000000009 -S31560023F5000000000000000000000000000000000F9 -S31560023F6000000000000000000000000000000000E9 -S31560023F7000000000000000000000000000000000D9 -S31560023F8000000000000000000000000000000000C9 -S31560023F9000000000000000000000000000000000B9 -S31560023FA000000000000000000000000000000000A9 -S31560023FB00000000000000000000000000000000099 -S31560023FC00000000000000000000000000000000089 -S31560023FD00000000000000000000000000000000079 -S31560023FE00000000000000000000000000000000069 -S31560023FF00000000000000000000000000000000059 -S315600240000000000000000000000000000000000048 -S315600240100000000000000000000000000000000038 -S315600240200000000000000000000000000000000028 -S315600240300000000000000000000000000000000018 -S315600240400000000000000000000000000000000008 -S3156002405000000000000000000000000000000000F8 -S3156002406000000000000000000000000000000000E8 -S3156002407000000000000000000000000000000000D8 -S3156002408000000000000000000000000000000000C8 -S3156002409000000000000000000000000000000000B8 -S315600240A000000000000000000000000000000000A8 -S315600240B00000000000000000000000000000000098 -S315600240C00000000000000000000000000000000088 -S315600240D00000000000000000000000000000000078 -S315600240E00000000000000000000000000000000068 -S315600240F00000000000000000000000000000000058 -S315600241000000000000000000000000000000000047 -S315600241100000000000000000000000000000000037 -S315600241200000000000000000000000000000000027 -S315600241300000000000000000000000000000000017 -S315600241400000000000000000000000000000000007 -S3156002415000000000000000000000000000000000F7 -S3156002416000000000000000000000000000000000E7 -S3156002417000000000000000000000000000000000D7 -S3156002418000000000000000000000000000000000C7 -S3156002419000000000000000000000000000000000B7 -S315600241A000000000000000000000000000000000A7 -S315600241B00000000000000000000000000000000097 -S315600241C00000000000000000000000000000000087 -S315600241D00000000000000000000000000000000077 -S315600241E00000000000000000000000000000000067 -S315600241F00000000000000000000000000000000057 -S315600242000000000000000000000000000000000046 -S315600242100000000000000000000000000000000036 -S315600242200000000000000000000000000000000026 -S315600242300000000000000000000000000000000016 -S315600242400000000000000000000000000000000006 -S3156002425000000000000000000000000000000000F6 -S3156002426000000000000000000000000000000000E6 -S3156002427000000000000000000000000000000000D6 -S3156002428000000000000000000000000000000000C6 -S3156002429000000000000000000000000000000000B6 -S315600242A000000000000000000000000000000000A6 -S315600242B00000000000000000000000000000000096 -S315600242C00000000000000000000000000000000086 -S315600242D00000000000000000000000000000000076 -S315600242E00000000000000000000000000000000066 -S315600242F00000000000000000000000000000000056 -S315600243000000000000000000000000000000000045 -S315600243100000000000000000000000000000000035 -S315600243200000000000000000000000000000000025 -S315600243300000000000000000000000000000000015 -S315600243400000000000000000000000000000000005 -S3156002435000000000000000000000000000000000F5 -S3156002436000000000000000000000000000000000E5 -S3156002437000000000000000000000000000000000D5 -S3156002438000000000000000000000000000000000C5 -S3156002439000000000000000000000000000000000B5 -S315600243A000000000000000000000000000000000A5 -S315600243B00000000000000000000000000000000095 -S315600243C00000000000000000000000000000000085 -S315600243D00000000000000000000000000000000075 -S315600243E00000000000000000000000000000000065 -S315600243F00000000000000000000000000000000055 -S315600244000000000000000000000000000000000044 -S315600244100000000000000000000000000000000034 -S315600244200000000000000000000000000000000024 -S315600244300000000000000000000000000000000014 -S315600244400000000000000000000000000000000004 -S3156002445000000000000000000000000000000000F4 -S3156002446000000000000000000000000000000000E4 -S3156002447000000000000000000000000000000000D4 -S3156002448000000000000000000000000000000000C4 -S3156002449000000000000000000000000000000000B4 -S315600244A000000000000000000000000000000000A4 -S315600244B00000000000000000000000000000000094 -S315600244C00000000000000000000000000000000084 -S315600244D00000000000000000000000000000000074 -S315600244E00000000000000000000000000000000064 -S315600244F00000000000000000000000000000000054 -S315600245000000000000000000000000000000000043 -S315600245100000000000000000000000000000000033 -S315600245200000000000000000000000000000000023 -S315600245300000000000000000000000000000000013 -S315600245400000000000000000000000000000000003 -S3156002455000000000000000000000000000000000F3 -S3156002456000000000000000000000000000000000E3 -S3156002457000000000000000000000000000000000D3 -S3156002458000000000000000000000000000000000C3 -S3156002459000000000000000000000000000000000B3 -S315600245A000000000000000000000000000000000A3 -S315600245B00000000000000000000000000000000093 -S315600245C00000000000000000000000000000000083 -S315600245D00000000000000000000000000000000073 -S315600245E00000000000000000000000000000000063 -S315600245F00000000000000000000000000000000053 -S315600246000000000000000000000000000000000042 -S315600246100000000000000000000000000000000032 -S315600246200000000000000000000000000000000022 -S315600246300000000000000000000000000000000012 -S315600246400000000000000000000000000000000002 -S3156002465000000000000000000000000000000000F2 -S3156002466000000000000000000000000000000000E2 -S3156002467000000000000000000000000000000000D2 -S3156002468000000000000000000000000000000000C2 -S3156002469000000000000000000000000000000000B2 -S315600246A000000000000000000000000000000000A2 -S315600246B00000000000000000000000000000000092 -S315600246C00000000000000000000000000000000082 -S315600246D00000000000000000000000000000000072 -S315600246E00000000000000000000000000000000062 -S315600246F00000000000000000000000000000000052 -S315600247000000000000000000000000000000000041 -S315600247100000000000000000000000000000000031 -S315600247200000000000000000000000000000000021 -S315600247300000000000000000000000000000000011 -S315600247400000000000000000000000000000000001 -S3156002475000000000000000000000000000000000F1 -S3156002476000000000000000000000000000000000E1 -S3156002477000000000000000000000000000000000D1 -S3156002478000000000000000000000000000000000C1 -S3156002479000000000000000000000000000000000B1 -S315600247A000000000000000000000000000000000A1 -S315600247B00000000000000000000000000000000091 -S315600247C00000000000000000000000000000000081 -S315600247D00000000000000000000000000000000071 -S315600247E00000000000000000000000000000000061 -S315600247F00000000000000000000000000000000051 -S315600248000000000000000000000000000000000040 -S315600248100000000000000000000000000000000030 -S315600248200000000000000000000000000000000020 -S315600248300000000000000000000000000000000010 -S315600248400000000000000000000000000000000000 -S3156002485000000000000000000000000000000000F0 -S3156002486000000000000000000000000000000000E0 -S3156002487000000000000000000000000000000000D0 -S3156002488000000000000000000000000000000000C0 -S3156002489000000000000000000000000000000000B0 -S315600248A000000000000000000000000000000000A0 -S315600248B00000000000000000000000000000000090 -S315600248C00000000000000000000000000000000080 -S315600248D00000000000000000000000000000000070 -S315600248E00000000000000000000000000000000060 -S315600248F00000000000000000000000000000000050 -S31560024900000000000000000000000000000000003F -S31560024910000000000000000000000000000000002F -S31560024920000000000000000000000000000000001F -S31560024930000000000000000000000000000000000F -S3156002494000000000000000000000000000000000FF -S3156002495000000000000000000000000000000000EF -S3156002496000000000000000000000000000000000DF -S3156002497000000000000000000000000000000000CF -S3156002498000000000000000000000000000000000BF -S3156002499000000000000000000000000000000000AF -S315600249A0000000000000000000000000000000009F -S315600249B0000000000000000000000000000000008F -S315600249C0000000000000000000000000000000007F -S315600249D0000000000000000000000000000000006F -S315600249E0000000000000000000000000000000005F -S315600249F0000000000000000000000000000000004F -S31560024A00000000000000000000000000000000003E -S31560024A10000000000000000000000000000000002E -S31560024A20000000000000000000000000000000001E -S31560024A30000000000000000000000000000000000E -S31560024A4000000000000000000000000000000000FE -S31560024A5000000000000000000000000000000000EE -S31560024A6000000000000000000000000000000000DE -S31560024A7000000000000000000000000000000000CE -S31560024A8000000000000000000000000000000000BE -S31560024A9000000000000000000000000000000000AE -S31560024AA0000000000000000000000000000000009E -S31560024AB0000000000000000000000000000000008E -S31560024AC0000000000000000000000000000000007E -S31560024AD0000000000000000000000000000000006E -S31560024AE0000000000000000000000000000000005E -S31560024AF0000000000000000000000000000000004E -S31560024B00000000000000000000000000000000003D -S31560024B10000000000000000000000000000000002D -S31560024B20000000000000000000000000000000001D -S31560024B30000000000000000000000000000000000D -S31560024B4000000000000000000000000000000000FD -S31560024B5000000000000000000000000000000000ED -S31560024B6000000000000000000000000000000000DD -S31560024B7000000000000000000000000000000000CD -S31560024B8000000000000000000000000000000000BD -S31560024B9000000000000000000000000000000000AD -S31560024BA0000000000000000000000000000000009D -S31560024BB0000000000000000000000000000000008D -S31560024BC0000000000000000000000000000000007D -S31560024BD0000000000000000000000000000000006D -S31560024BE0000000000000000000000000000000005D -S31560024BF0000000000000000000000000000000004D -S31560024C00000000000000000000000000000000003C -S31560024C10000000000000000000000000000000002C -S31560024C20000000000000000000000000000000001C -S31560024C30000000000000000000000000000000000C -S31560024C4000000000000000000000000000000000FC -S31560024C5000000000000000000000000000000000EC -S31560024C6000000000000000000000000000000000DC -S31560024C7000000000000000000000000000000000CC -S31560024C8000000000000000000000000000000000BC -S31560024C9000000000000000000000000000000000AC -S31560024CA0000000000000000000000000000000009C -S31560024CB0000000000000000000000000000000008C -S31560024CC0000000000000000000000000000000007C -S31560024CD0000000000000000000000000000000006C -S31560024CE0000000000000000000000000000000005C -S31560024CF0000000000000000000000000000000004C -S31560024D00000000000000000000000000000000003B -S31560024D10000000000000000000000000000000002B -S31560024D20000000000000000000000000000000001B -S31560024D30000000000000000000000000000000000B -S31560024D4000000000000000000000000000000000FB -S31560024D5000000000000000000000000000000000EB -S31560024D6000000000000000000000000000000000DB -S31560024D7000000000000000000000000000000000CB -S31560024D8000000000000000000000000000000000BB -S31560024D9000000000000000000000000000000000AB -S31560024DA0000000000000000000000000000000009B -S31560024DB0000000000000000000000000000000008B -S31560024DC0000000000000000000000000000000007B -S31560024DD0000000000000000000000000000000006B -S31560024DE0000000000000000000000000000000005B -S31560024DF0000000000000000000000000000000004B -S31560024E00000000000000000000000000000000003A -S31560024E10000000000000000000000000000000002A -S31560024E20000000000000000000000000000000001A -S31560024E30000000000000000000000000000000000A -S31560024E4000000000000000000000000000000000FA -S31560024E5000000000000000000000000000000000EA -S31560024E6000000000000000000000000000000000DA -S31560024E7000000000000000000000000000000000CA -S31560024E8000000000000000000000000000000000BA -S31560024E9000000000000000000000000000000000AA -S31560024EA0000000000000000000000000000000009A -S31560024EB0000000000000000000000000000000008A -S31560024EC0000000000000000000000000000000007A -S31560024ED0000000000000000000000000000000006A -S31560024EE0000000000000000000000000000000005A -S31560024EF0000000000000000000000000000000004A -S31560024F000000000000000000000000000000000039 -S31560024F100000000000000000000000000000000029 -S31560024F200000000000000000000000000000000019 -S31560024F300000000000000000000000000000000009 -S31560024F4000000000000000000000000000000000F9 -S31560024F5000000000000000000000000000000000E9 -S31560024F6000000000000000000000000000000000D9 -S31560024F7000000000000000000000000000000000C9 -S31560024F8000000000000000000000000000000000B9 -S31560024F9000000000000000000000000000000000A9 -S31560024FA00000000000000000000000000000000099 -S31560024FB00000000000000000000000000000000089 -S31560024FC00000000000000000000000000000000079 -S31560024FD00000000000000000000000000000000069 -S31560024FE00000000000000000000000000000000059 -S31560024FF00000000000000000000000000000000049 -S315600250000000000000000000000000000000000038 -S315600250100000000000000000000000000000000028 -S315600250200000000000000000000000000000000018 -S315600250300000000000000000000000000000000008 -S3156002504000000000000000000000000000000000F8 -S3156002505000000000000000000000000000000000E8 -S3156002506000000000000000000000000000000000D8 -S3156002507000000000000000000000000000000000C8 -S3156002508000000000000000000000000000000000B8 -S3156002509000000000000000000000000000000000A8 -S315600250A00000000000000000000000000000000098 -S315600250B00000000000000000000000000000000088 -S315600250C00000000000000000000000000000000078 -S315600250D00000000000000000000000000000000068 -S315600250E00000000000000000000000000000000058 -S315600250F00000000000000000000000000000000048 -S315600251000000000000000000000000000000000037 -S315600251100000000000000000000000000000000027 -S315600251200000000000000000000000000000000017 -S315600251300000000000000000000000000000000007 -S3156002514000000000000000000000000000000000F7 -S3156002515000000000000000000000000000000000E7 -S3156002516000000000000000000000000000000000D7 -S3156002517000000000000000000000000000000000C7 -S3156002518000000000000000000000000000000000B7 -S3156002519000000000000000000000000000000000A7 -S315600251A00000000000000000000000000000000097 -S315600251B00000000000000000000000000000000087 -S315600251C00000000000000000000000000000000077 -S315600251D00000000000000000000000000000000067 -S315600251E00000000000000000000000000000000057 -S315600251F00000000000000000000000000000000047 -S315600252000000000000000000000000000000000036 -S315600252100000000000000000000000000000000026 -S315600252200000000000000000000000000000000016 -S315600252300000000000000000000000000000000006 -S3156002524000000000000000000000000000000000F6 -S3156002525000000000000000000000000000000000E6 -S3156002526000000000000000000000000000000000D6 -S3156002527000000000000000000000000000000000C6 -S3156002528000000000000000000000000000000000B6 -S3156002529000000000000000000000000000000000A6 -S315600252A00000000000000000000000000000000096 -S315600252B00000000000000000000000000000000086 -S315600252C00000000000000000000000000000000076 -S315600252D00000000000000000000000000000000066 -S315600252E00000000000000000000000000000000056 -S315600252F00000000000000000000000000000000046 -S315600253000000000000000000000000000000000035 -S315600253100000000000000000000000000000000025 -S315600253200000000000000000000000000000000015 -S315600253300000000000000000000000000000000005 -S3156002534000000000000000000000000000000000F5 -S3156002535000000000000000000000000000000000E5 -S3156002536000000000000000000000000000000000D5 -S3156002537000000000000000000000000000000000C5 -S3156002538000000000000000000000000000000000B5 -S3156002539000000000000000000000000000000000A5 -S315600253A00000000000000000000000000000000095 -S315600253B00000000000000000000000000000000085 -S315600253C00000000000000000000000000000000075 -S315600253D00000000000000000000000000000000065 -S315600253E00000000000000000000000000000000055 -S315600253F00000000000000000000000000000000045 -S315600254000000000000000000000000000000000034 -S315600254100000000000000000000000000000000024 -S315600254200000000000000000000000000000000014 -S315600254300000000000000000000000000000000004 -S3156002544000000000000000000000000000000000F4 -S3156002545000000000000000000000000000000000E4 -S3156002546000000000000000000000000000000000D4 -S3156002547000000000000000000000000000000000C4 -S3156002548000000000000000000000000000000000B4 -S3156002549000000000000000000000000000000000A4 -S315600254A00000000000000000000000000000000094 -S315600254B00000000000000000000000000000000084 -S315600254C00000000000000000000000000000000074 -S315600254D00000000000000000000000000000000064 -S315600254E00000000000000000000000000000000054 -S315600254F00000000000000000000000000000000044 -S315600255000000000000000000000000000000000033 -S315600255100000000000000000000000000000000023 -S315600255200000000000000000000000000000000013 -S315600255300000000000000000000000000000000003 -S3156002554000000000000000000000000000000000F3 -S3156002555000000000000000000000000000000000E3 -S3156002556000000000000000000000000000000000D3 -S3156002557000000000000000000000000000000000C3 -S3156002558000000000000000000000000000000000B3 -S3156002559000000000000000000000000000000000A3 -S315600255A00000000000000000000000000000000093 -S315600255B00000000000000000000000000000000083 -S315600255C00000000000000000000000000000000073 -S315600255D00000000000000000000000000000000063 -S315600255E00000000000000000000000000000000053 -S315600255F00000000000000000000000000000000043 -S315600256000000000000000000000000000000000032 -S315600256100000000000000000000000000000000022 -S315600256200000000000000000000000000000000012 -S315600256300000000000000000000000000000000002 -S3156002564000000000000000000000000000000000F2 -S3156002565000000000000000000000000000000000E2 -S3156002566000000000000000000000000000000000D2 -S3156002567000000000000000000000000000000000C2 -S3156002568000000000000000000000000000000000B2 -S3156002569000000000000000000000000000000000A2 -S315600256A00000000000000000000000000000000092 -S315600256B00000000000000000000000000000000082 -S315600256C00000000000000000000000000000000072 -S315600256D00000000000000000000000000000000062 -S315600256E00000000000000000000000000000000052 -S315600256F00000000000000000000000000000000042 -S315600257000000000000000000000000000000000031 -S315600257100000000000000000000000000000000021 -S315600257200000000000000000000000000000000011 -S315600257300000000000000000000000000000000001 -S3156002574000000000000000000000000000000000F1 -S3156002575000000000000000000000000000000000E1 -S3156002576000000000000000000000000000000000D1 -S3156002577000000000000000000000000000000000C1 -S3156002578000000000000000000000000000000000B1 -S3156002579000000000000000000000000000000000A1 -S315600257A00000000000000000000000000000000091 -S315600257B00000000000000000000000000000000081 -S315600257C00000000000000000000000000000000071 -S315600257D00000000000000000000000000000000061 -S315600257E00000000000000000000000000000000051 -S315600257F00000000000000000000000000000000041 -S315600258000000000000000000000000000000000030 -S315600258100000000000000000000000000000000020 -S315600258200000000000000000000000000000000010 -S315600258300000000000000000000000000000000000 -S3156002584000000000000000000000000000000000F0 -S3156002585000000000000000000000000000000000E0 -S3156002586000000000000000000000000000000000D0 -S3156002587000000000000000000000000000000000C0 -S3156002588000000000000000000000000000000000B0 -S3156002589000000000000000000000000000000000A0 -S315600258A00000000000000000000000000000000090 -S315600258B00000000000000000000000000000000080 -S315600258C00000000000000000000000000000000070 -S315600258D00000000000000000000000000000000060 -S315600258E00000000000000000000000000000000050 -S315600258F00000000000000000000000000000000040 -S31560025900000000000000000000000000000000002F -S31560025910000000000000000000000000000000001F -S31560025920000000000000000000000000000000000F -S3156002593000000000000000000000000000000000FF -S3156002594000000000000000000000000000000000EF -S3156002595000000000000000000000000000000000DF -S3156002596000000000000000000000000000000000CF -S3156002597000000000000000000000000000000000BF -S3156002598000000000000000000000000000000000AF -S31560025990000000000000000000000000000000009F -S315600259A0000000000000000000000000000000008F -S315600259B0000000000000000000000000000000007F -S315600259C0000000000000000000000000000000006F -S315600259D0000000000000000000000000000000005F -S315600259E0000000000000000000000000000000004F -S315600259F0000000000000000000000000000000003F -S31560025A00000000000000000000000000000000002E -S31560025A10000000000000000000000000000000001E -S31560025A20000000000000000000000000000000000E -S31560025A3000000000000000000000000000000000FE -S31560025A4000000000000000000000000000000000EE -S31560025A5000000000000000000000000000000000DE -S31560025A6000000000000000000000000000000000CE -S31560025A7000000000000000000000000000000000BE -S31560025A8000000000000000000000000000000000AE -S31560025A90000000000000000000000000000000009E -S31560025AA0000000000000000000000000000000008E -S31560025AB0000000000000000000000000000000007E -S31560025AC0000000000000000000000000000000006E -S31560025AD0000000000000000000000000000000005E -S31560025AE0000000000000000000000000000000004E -S31560025AF0000000000000000000000000000000003E -S31560025B00000000000000000000000000000000002D -S31560025B10000000000000000000000000000000001D -S31560025B20000000000000000000000000000000000D -S31560025B3000000000000000000000000000000000FD -S31560025B4000000000000000000000000000000000ED -S31560025B5000000000000000000000000000000000DD -S31560025B6000000000000000000000000000000000CD -S31560025B7000000000000000000000000000000000BD -S31560025B8000000000000000000000000000000000AD -S31560025B90000000000000000000000000000000009D -S31560025BA0000000000000000000000000000000008D -S31560025BB0000000000000000000000000000000007D -S31560025BC0000000000000000000000000000000006D -S31560025BD0000000000000000000000000000000005D -S31560025BE0000000000000000000000000000000004D -S31560025BF0000000000000000000000000000000003D -S31560025C00000000000000000000000000000000002C -S31560025C10000000000000000000000000000000001C -S31560025C20000000000000000000000000000000000C -S31560025C3000000000000000000000000000000000FC -S31560025C4000000000000000000000000000000000EC -S31560025C5000000000000000000000000000000000DC -S31560025C6000000000000000000000000000000000CC -S31560025C7000000000000000000000000000000000BC -S31560025C8000000000000000000000000000000000AC -S31560025C90000000000000000000000000000000009C -S31560025CA0000000000000000000000000000000008C -S31560025CB0000000000000000000000000000000007C -S31560025CC0000000000000000000000000000000006C -S31560025CD0000000000000000000000000000000005C -S31560025CE0000000000000000000000000000000004C -S31560025CF0000000000000000000000000000000003C -S31560025D00000000000000000000000000000000002B -S31560025D10000000000000000000000000000000001B -S31560025D20000000000000000000000000000000000B -S31560025D3000000000000000000000000000000000FB -S31560025D4000000000000000000000000000000000EB -S31560025D5000000000000000000000000000000000DB -S31560025D6000000000000000000000000000000000CB -S31560025D7000000000000000000000000000000000BB -S31560025D8000000000000000000000000000000000AB -S31560025D90000000000000000000000000000000009B -S31560025DA0000000000000000000000000000000008B -S31560025DB0000000000000000000000000000000007B -S31560025DC0000000000000000000000000000000006B -S31560025DD0000000000000000000000000000000005B -S31560025DE0000000000000000000000000000000004B -S31560025DF0000000000000000000000000000000003B -S31560025E00000000000000000000000000000000002A -S31560025E10000000000000000000000000000000001A -S31560025E20000000000000000000000000000000000A -S31560025E3000000000000000000000000000000000FA -S31560025E4000000000000000000000000000000000EA -S31560025E5000000000000000000000000000000000DA -S31560025E6000000000000000000000000000000000CA -S31560025E7000000000000000000000000000000000BA -S31560025E8000000000000000000000000000000000AA -S31560025E90000000000000000000000000000000009A -S31560025EA0000000000000000000000000000000008A -S31560025EB0000000000000000000000000000000007A -S31560025EC0000000000000000000000000000000006A -S31560025ED0000000000000000000000000000000005A -S31560025EE0000000000000000000000000000000004A -S31560025EF0000000000000000000000000000000003A -S31560025F000000000000000000000000000000000029 -S31560025F100000000000000000000000000000000019 -S31560025F200000000000000000000000000000000009 -S31560025F3000000000000000000000000000000000F9 -S31560025F4000000000000000000000000000000000E9 -S31560025F5000000000000000000000000000000000D9 -S31560025F6000000000000000000000000000000000C9 -S31560025F7000000000000000000000000000000000B9 -S31560025F8000000000000000000000000000000000A9 -S31560025F900000000000000000000000000000000099 -S31560025FA00000000000000000000000000000000089 -S31560025FB00000000000000000000000000000000079 -S31560025FC00000000000000000000000000000000069 -S31560025FD00000000000000000000000000000000059 -S31560025FE00000000000000000000000000000000049 -S31560025FF00000000000000000000000000000000039 -S315600260000000000000000000000000000000000028 -S315600260100000000000000000000000000000000018 -S315600260200000000000000000000000000000000008 -S3156002603000000000000000000000000000000000F8 -S3156002604000000000000000000000000000000000E8 -S3156002605000000000000000000000000000000000D8 -S3156002606000000000000000000000000000000000C8 -S3156002607000000000000000000000000000000000B8 -S3156002608000000000000000000000000000000000A8 -S315600260900000000000000000000000000000000098 -S315600260A00000000000000000000000000000000088 -S315600260B00000000000000000000000000000000078 -S315600260C00000000000000000000000000000000068 -S315600260D00000000000000000000000000000000058 -S315600260E00000000000000000000000000000000048 -S315600260F00000000000000000000000000000000038 -S315600261000000000000000000000000000000000027 -S315600261100000000000000000000000000000000017 -S315600261200000000000000000000000000000000007 -S3156002613000000000000000000000000000000000F7 -S3156002614000000000000000000000000000000000E7 -S3156002615000000000000000000000000000000000D7 -S3156002616000000000000000000000000000000000C7 -S3156002617000000000000000000000000000000000B7 -S3156002618000000000000000000000000000000000A7 -S315600261900000000000000000000000000000000097 -S315600261A00000000000000000000000000000000087 -S315600261B00000000000000000000000000000000077 -S315600261C00000000000000000000000000000000067 -S315600261D00000000000000000000000000000000057 -S315600261E00000000000000000000000000000000047 -S315600261F00000000000000000000000000000000037 -S315600262000000000000000000000000000000000026 -S315600262100000000000000000000000000000000016 -S315600262200000000000000000000000000000000006 -S3156002623000000000000000000000000000000000F6 -S3156002624000000000000000000000000000000000E6 -S3156002625000000000000000000000000000000000D6 -S3156002626000000000000000000000000000000000C6 -S3156002627000000000000000000000000000000000B6 -S3156002628000000000000000000000000000000000A6 -S315600262900000000000000000000000000000000096 -S315600262A00000000000000000000000000000000086 -S315600262B00000000000000000000000000000000076 -S315600262C00000000000000000000000000000000066 -S315600262D00000000000000000000000000000000056 -S315600262E00000000000000000000000000000000046 -S315600262F00000000000000000000000000000000036 -S315600263000000000000000000000000000000000025 -S315600263100000000000000000000000000000000015 -S315600263200000000000000000000000000000000005 -S3156002633000000000000000000000000000000000F5 -S3156002634000000000000000000000000000000000E5 -S3156002635000000000000000000000000000000000D5 -S3156002636000000000000000000000000000000000C5 -S3156002637000000000000000000000000000000000B5 -S3156002638000000000000000000000000000000000A5 -S315600263900000000000000000000000000000000095 -S315600263A00000000000000000000000000000000085 -S315600263B00000000000000000000000000000000075 -S315600263C00000000000000000000000000000000065 -S315600263D00000000000000000000000000000000055 -S315600263E00000000000000000000000000000000045 -S315600263F00000000000000000000000000000000035 -S315600264000000000000000000000000000000000024 -S315600264100000000000000000000000000000000014 -S315600264200000000000000000000000000000000004 -S3156002643000000000000000000000000000000000F4 -S3156002644000000000000000000000000000000000E4 -S3156002645000000000000000000000000000000000D4 -S3156002646000000000000000000000000000000000C4 -S3156002647000000000000000000000000000000000B4 -S3156002648000000000000000000000000000000000A4 -S315600264900000000000000000000000000000000094 -S315600264A00000000000000000000000000000000084 -S315600264B00000000000000000000000000000000074 -S315600264C00000000000000000000000000000000064 -S315600264D00000000000000000000000000000000054 -S315600264E00000000000000000000000000000000044 -S315600264F00000000000000000000000000000000034 -S315600265000000000000000000000000000000000023 -S315600265100000000000000000000000000000000013 -S315600265200000000000000000000000000000000003 -S3156002653000000000000000000000000000000000F3 -S3156002654000000000000000000000000000000000E3 -S3156002655000000000000000000000000000000000D3 -S3156002656000000000000000000000000000000000C3 -S3156002657000000000000000000000000000000000B3 -S3156002658000000000000000000000000000000000A3 -S315600265900000000000000000000000000000000093 -S315600265A00000000000000000000000000000000083 -S315600265B00000000000000000000000000000000073 -S315600265C00000000000000000000000000000000063 -S315600265D00000000000000000000000000000000053 -S315600265E00000000000000000000000000000000043 -S315600265F00000000000000000000000000000000033 -S315600266000000000000000000000000000000000022 -S315600266100000000000000000000000000000000012 -S315600266200000000000000000000000000000000002 -S3156002663000000000000000000000000000000000F2 -S3156002664000000000000000000000000000000000E2 -S3156002665000000000000000000000000000000000D2 -S3156002666000000000000000000000000000000000C2 -S3156002667000000000000000000000000000000000B2 -S3156002668000000000000000000000000000000000A2 -S315600266900000000000000000000000000000000092 -S315600266A00000000000000000000000000000000082 -S315600266B00000000000000000000000000000000072 -S315600266C00000000000000000000000000000000062 -S315600266D00000000000000000000000000000000052 -S315600266E00000000000000000000000000000000042 -S315600266F00000000000000000000000000000000032 -S315600267000000000000000000000000000000000021 -S315600267100000000000000000000000000000000011 -S315600267200000000000000000000000000000000001 -S3156002673000000000000000000000000000000000F1 -S3156002674000000000000000000000000000000000E1 -S3156002675000000000000000000000000000000000D1 -S3156002676000000000000000000000000000000000C1 -S3156002677000000000000000000000000000000000B1 -S3156002678000000000000000000000000000000000A1 -S315600267900000000000000000000000000000000091 -S315600267A00000000000000000000000000000000081 -S315600267B00000000000000000000000000000000071 -S315600267C00000000000000000000000000000000061 -S315600267D00000000000000000000000000000000051 -S315600267E00000000000000000000000000000000041 -S315600267F00000000000000000000000000000000031 -S315600268000000000000000000000000000000000020 -S315600268100000000000000000000000000000000010 -S315600268200000000000000000000000000000000000 -S3156002683000000000000000000000000000000000F0 -S3156002684000000000000000000000000000000000E0 -S3156002685000000000000000000000000000000000D0 -S3156002686000000000000000000000000000000000C0 -S3156002687000000000000000000000000000000000B0 -S3156002688000000000000000000000000000000000A0 -S315600268900000000000000000000000000000000090 -S315600268A00000000000000000000000000000000080 -S315600268B00000000000000000000000000000000070 -S315600268C00000000000000000000000000000000060 -S315600268D00000000000000000000000000000000050 -S315600268E00000000000000000000000000000000040 -S315600268F00000000000000000000000000000000030 -S31560026900000000000000000000000000000000001F -S31560026910000000000000000000000000000000000F -S3156002692000000000000000000000000000000000FF -S3156002693000000000000000000000000000000000EF -S3156002694000000000000000000000000000000000DF -S3156002695000000000000000000000000000000000CF -S3156002696000000000000000000000000000000000BF -S3156002697000000000000000000000000000000000AF -S31560026980000000000000000000000000000000009F -S31560026990000000000000000000000000000000008F -S315600269A0000000000000000000000000000000007F -S315600269B0000000000000000000000000000000006F -S315600269C0000000000000000000000000000000005F -S315600269D0000000000000000000000000000000004F -S315600269E0000000000000000000000000000000003F -S315600269F0000000000000000000000000000000002F -S31560026A00000000000000000000000000000000001E -S31560026A10000000000000000000000000000000000E -S31560026A2000000000000000000000000000000000FE -S31560026A3000000000000000000000000000000000EE -S31560026A4000000000000000000000000000000000DE -S31560026A5000000000000000000000000000000000CE -S31560026A6000000000000000000000000000000000BE -S31560026A7000000000000000000000000000000000AE -S31560026A80000000000000000000000000000000009E -S31560026A90000000000000000000000000000000008E -S31560026AA0000000000000000000000000000000007E -S31560026AB0000000000000000000000000000000006E -S31560026AC0000000000000000000000000000000005E -S31560026AD0000000000000000000000000000000004E -S31560026AE0000000000000000000000000000000003E -S31560026AF0000000000000000000000000000000002E -S31560026B00000000000000000000000000000000001D -S31560026B10000000000000000000000000000000000D -S31560026B2000000000000000000000000000000000FD -S31560026B3000000000000000000000000000000000ED -S31560026B4000000000000000000000000000000000DD -S31560026B5000000000000000000000000000000000CD -S31560026B6000000000000000000000000000000000BD -S31560026B7000000000000000000000000000000000AD -S31560026B80000000000000000000000000000000009D -S31560026B90000000000000000000000000000000008D -S31560026BA0000000000000000000000000000000007D -S31560026BB0000000000000000000000000000000006D -S31560026BC0000000000000000000000000000000005D -S31560026BD0000000000000000000000000000000004D -S31560026BE0000000000000000000000000000000003D -S31560026BF0000000000000000000000000000000002D -S31560026C00000000000000000000000000000000001C -S31560026C10000000000000000000000000000000000C -S31560026C2000000000000000000000000000000000FC -S31560026C3000000000000000000000000000000000EC -S31560026C4000000000000000000000000000000000DC -S31560026C5000000000000000000000000000000000CC -S31560026C6000000000000000000000000000000000BC -S31560026C7000000000000000000000000000000000AC -S31560026C80000000000000000000000000000000009C -S31560026C90000000000000000000000000000000008C -S31560026CA0000000000000000000000000000000007C -S31560026CB0000000000000000000000000000000006C -S31560026CC0000000000000000000000000000000005C -S31560026CD0000000000000000000000000000000004C -S31560026CE0000000000000000000000000000000003C -S31560026CF0000000000000000000000000000000002C -S31560026D00000000000000000000000000000000001B -S31560026D10000000000000000000000000000000000B -S31560026D2000000000000000000000000000000000FB -S31560026D3000000000000000000000000000000000EB -S31560026D4000000000000000000000000000000000DB -S31560026D5000000000000000000000000000000000CB -S31560026D6000000000000000000000000000000000BB -S31560026D7000000000000000000000000000000000AB -S31560026D80000000000000000000000000000000009B -S31560026D90000000000000000000000000000000008B -S31560026DA0000000000000000000000000000000007B -S31560026DB0000000000000000000000000000000006B -S31560026DC0000000000000000000000000000000005B -S31560026DD0000000000000000000000000000000004B -S31560026DE0000000000000000000000000000000003B -S31560026DF0000000000000000000000000000000002B -S31560026E00000000000000000000000000000000001A -S31560026E10000000000000000000000000000000000A -S31560026E2000000000000000000000000000000000FA -S31560026E3000000000000000000000000000000000EA -S31560026E4000000000000000000000000000000000DA -S31560026E5000000000000000000000000000000000CA -S31560026E6000000000000000000000000000000000BA -S31560026E7000000000000000000000000000000000AA -S31560026E80000000000000000000000000000000009A -S31560026E90000000000000000000000000000000008A -S31560026EA0000000000000000000000000000000007A -S31560026EB0000000000000000000000000000000006A -S31560026EC0000000000000000000000000000000005A -S31560026ED0000000000000000000000000000000004A -S31560026EE0000000000000000000000000000000003A -S31560026EF0000000000000000000000000000000002A -S31560026F000000000000000000000000000000000019 -S31560026F100000000000000000000000000000000009 -S31560026F2000000000000000000000000000000000F9 -S31560026F3000000000000000000000000000000000E9 -S31560026F4000000000000000000000000000000000D9 -S31560026F5000000000000000000000000000000000C9 -S31560026F6000000000000000000000000000000000B9 -S31560026F7000000000000000000000000000000000A9 -S31560026F800000000000000000000000000000000099 -S31560026F900000000000000000000000000000000089 -S31560026FA00000000000000000000000000000000079 -S31560026FB00000000000000000000000000000000069 -S31560026FC00000000000000000000000000000000059 -S31560026FD00000000000000000000000000000000049 -S31560026FE00000000000000000000000000000000039 -S31560026FF00000000000000000000000000000000029 -S315600270000000000000000000000000000000000018 -S315600270100000000000000000000000000000000008 -S3156002702000000000000000000000000000000000F8 -S3156002703000000000000000000000000000000000E8 -S3156002704000000000000000000000000000000000D8 -S3156002705000000000000000000000000000000000C8 -S3156002706000000000000000000000000000000000B8 -S3156002707000000000000000000000000000000000A8 -S315600270800000000000000000000000000000000098 -S315600270900000000000000000000000000000000088 -S315600270A00000000000000000000000000000000078 -S315600270B00000000000000000000000000000000068 -S315600270C00000000000000000000000000000000058 -S315600270D00000000000000000000000000000000048 -S315600270E00000000000000000000000000000000038 -S315600270F00000000000000000000000000000000028 -S315600271000000000000000000000000000000000017 -S315600271100000000000000000000000000000000007 -S3156002712000000000000000000000000000000000F7 -S3156002713000000000000000000000000000000000E7 -S3156002714000000000000000000000000000000000D7 -S3156002715000000000000000000000000000000000C7 -S3156002716000000000000000000000000000000000B7 -S3156002717000000000000000000000000000000000A7 -S315600271800000000000000000000000000000000097 -S315600271900000000000000000000000000000000087 -S315600271A00000000000000000000000000000000077 -S315600271B00000000000000000000000000000000067 -S315600271C00000000000000000000000000000000057 -S315600271D00000000000000000000000000000000047 -S315600271E00000000000000000000000000000000037 -S315600271F00000000000000000000000000000000027 -S315600272000000000000000000000000000000000016 -S315600272100000000000000000000000000000000006 -S3156002722000000000000000000000000000000000F6 -S3156002723000000000000000000000000000000000E6 -S3156002724000000000000000000000000000000000D6 -S3156002725000000000000000000000000000000000C6 -S3156002726000000000000000000000000000000000B6 -S3156002727000000000000000000000000000000000A6 -S315600272800000000000000000000000000000000096 -S315600272900000000000000000000000000000000086 -S315600272A00000000000000000000000000000000076 -S315600272B00000000000000000000000000000000066 -S315600272C00000000000000000000000000000000056 -S315600272D00000000000000000000000000000000046 -S315600272E00000000000000000000000000000000036 -S315600272F00000000000000000000000000000000026 -S315600273000000000000000000000000000000000015 -S315600273100000000000000000000000000000000005 -S3156002732000000000000000000000000000000000F5 -S3156002733000000000000000000000000000000000E5 -S3156002734000000000000000000000000000000000D5 -S3156002735000000000000000000000000000000000C5 -S3156002736000000000000000000000000000000000B5 -S3156002737000000000000000000000000000000000A5 -S315600273800000000000000000000000000000000095 -S315600273900000000000000000000000000000000085 -S315600273A00000000000000000000000000000000075 -S315600273B00000000000000000000000000000000065 -S315600273C00000000000000000000000000000000055 -S315600273D00000000000000000000000000000000045 -S315600273E00000000000000000000000000000000035 -S315600273F00000000000000000000000000000000025 -S315600274000000000000000000000000000000000014 -S315600274100000000000000000000000000000000004 -S3156002742000000000000000000000000000000000F4 -S3156002743000000000000000000000000000000000E4 -S3156002744000000000000000000000000000000000D4 -S3156002745000000000000000000000000000000000C4 -S3156002746000000000000000000000000000000000B4 -S3156002747000000000000000000000000000000000A4 -S315600274800000000000000000000000000000000094 -S315600274900000000000000000000000000000000084 -S315600274A00000000000000000000000000000000074 -S315600274B00000000000000000000000000000000064 -S315600274C00000000000000000000000000000000054 -S315600274D00000000000000000000000000000000044 -S315600274E00000000000000000000000000000000034 -S315600274F00000000000000000000000000000000024 -S315600275000000000000000000000000000000000013 -S315600275100000000000000000000000000000000003 -S3156002752000000000000000000000000000000000F3 -S3156002753000000000000000000000000000000000E3 -S3156002754000000000000000000000000000000000D3 -S3156002755000000000000000000000000000000000C3 -S3156002756000000000000000000000000000000000B3 -S3156002757000000000000000000000000000000000A3 -S315600275800000000000000000000000000000000093 -S315600275900000000000000000000000000000000083 -S315600275A00000000000000000000000000000000073 -S315600275B00000000000000000000000000000000063 -S315600275C00000000000000000000000000000000053 -S315600275D00000000000000000000000000000000043 -S315600275E00000000000000000000000000000000033 -S315600275F00000000000000000000000000000000023 -S315600276000000000000000000000000000000000012 -S315600276100000000000000000000000000000000002 -S3156002762000000000000000000000000000000000F2 -S3156002763000000000000000000000000000000000E2 -S3156002764000000000000000000000000000000000D2 -S3156002765000000000000000000000000000000000C2 -S3156002766000000000000000000000000000000000B2 -S3156002767000000000000000000000000000000000A2 -S315600276800000000000000000000000000000000092 -S315600276900000000000000000000000000000000082 -S315600276A00000000000000000000000000000000072 -S315600276B00000000000000000000000000000000062 -S315600276C00000000000000000000000000000000052 -S315600276D00000000000000000000000000000000042 -S315600276E00000000000000000000000000000000032 -S315600276F00000000000000000000000000000000022 -S315600277000000000000000000000000000000000011 -S315600277100000000000000000000000000000000001 -S3156002772000000000000000000000000000000000F1 -S3156002773000000000000000000000000000000000E1 -S3156002774000000000000000000000000000000000D1 -S3156002775000000000000000000000000000000000C1 -S3156002776000000000000000000000000000000000B1 -S3156002777000000000000000000000000000000000A1 -S315600277800000000000000000000000000000000091 -S315600277900000000000000000000000000000000081 -S315600277A00000000000000000000000000000000071 -S315600277B00000000000000000000000000000000061 -S315600277C00000000000000000000000000000000051 -S315600277D00000000000000000000000000000000041 -S315600277E00000000000000000000000000000000031 -S315600277F00000000000000000000000000000000021 -S315600278000000000000000000000000000000000010 -S315600278100000000000000000000000000000000000 -S3156002782000000000000000000000000000000000F0 -S3156002783000000000000000000000000000000000E0 -S3156002784000000000000000000000000000000000D0 -S3156002785000000000000000000000000000000000C0 -S3156002786000000000000000000000000000000000B0 -S3156002787000000000000000000000000000000000A0 -S315600278800000000000000000000000000000000090 -S315600278900000000000000000000000000000000080 -S315600278A00000000000000000000000000000000070 -S315600278B00000000000000000000000000000000060 -S315600278C00000000000000000000000000000000050 -S315600278D00000000000000000000000000000000040 -S315600278E00000000000000000000000000000000030 -S315600278F00000000000000000000000000000000020 -S31560027900000000000000000000000000000000000F -S3156002791000000000000000000000000000000000FF -S3156002792000000000000000000000000000000000EF -S3156002793000000000000000000000000000000000DF -S3156002794000000000000000000000000000000000CF -S3156002795000000000000000000000000000000000BF -S3156002796000000000000000000000000000000000AF -S31560027970000000000000000000000000000000009F -S31560027980000000000000000000000000000000008F -S31560027990000000000000000000000000000000007F -S315600279A0000000000000000000000000000000006F -S315600279B0000000000000000000000000000000005F -S315600279C0000000000000000000000000000000004F -S315600279D0000000000000000000000000000000003F -S315600279E0000000000000000000000000000000002F -S315600279F0000000000000000000000000000000001F -S31560027A00000000000000000000000000000000000E -S31560027A1000000000000000000000000000000000FE -S31560027A2000000000000000000000000000000000EE -S31560027A3000000000000000000000000000000000DE -S31560027A4000000000000000000000000000000000CE -S31560027A5000000000000000000000000000000000BE -S31560027A6000000000000000000000000000000000AE -S31560027A70000000000000000000000000000000009E -S31560027A80000000000000000000000000000000008E -S31560027A90000000000000000000000000000000007E -S31560027AA0000000000000000000000000000000006E -S31560027AB0000000000000000000000000000000005E -S31560027AC0000000000000000000000000000000004E -S31560027AD0000000000000000000000000000000003E -S31560027AE0000000000000000000000000000000002E -S31560027AF0000000000000000000000000000000001E -S31560027B00000000000000000000000000000000000D -S31560027B1000000000000000000000000000000000FD -S31560027B2000000000000000000000000000000000ED -S31560027B3000000000000000000000000000000000DD -S31560027B4000000000000000000000000000000000CD -S31560027B5000000000000000000000000000000000BD -S31560027B6000000000000000000000000000000000AD -S31560027B70000000000000000000000000000000009D -S31560027B80000000000000000000000000000000008D -S31560027B90000000000000000000000000000000007D -S31560027BA0000000000000000000000000000000006D -S31560027BB0000000000000000000000000000000005D -S31560027BC0000000000000000000000000000000004D -S31560027BD0000000000000000000000000000000003D -S31560027BE0000000000000000000000000000000002D -S31560027BF0000000000000000000000000000000001D -S31560027C00000000000000000000000000000000000C -S31560027C1000000000000000000000000000000000FC -S31560027C2000000000000000000000000000000000EC -S31560027C3000000000000000000000000000000000DC -S31560027C4000000000000000000000000000000000CC -S31560027C5000000000000000000000000000000000BC -S31560027C6000000000000000000000000000000000AC -S31560027C70000000000000000000000000000000009C -S31560027C80000000000000000000000000000000008C -S31560027C90000000000000000000000000000000007C -S31560027CA0000000000000000000000000000000006C -S31560027CB0000000000000000000000000000000005C -S31560027CC0000000000000000000000000000000004C -S31560027CD0000000000000000000000000000000003C -S31560027CE0000000000000000000000000000000002C -S31560027CF0000000000000000000000000000000001C -S31560027D00000000000000000000000000000000000B -S31560027D1000000000000000000000000000000000FB -S31560027D2000000000000000000000000000000000EB -S31560027D3000000000000000000000000000000000DB -S31560027D4000000000000000000000000000000000CB -S31560027D5000000000000000000000000000000000BB -S31560027D6000000000000000000000000000000000AB -S31560027D70000000000000000000000000000000009B -S31560027D80000000000000000000000000000000008B -S31560027D90000000000000000000000000000000007B -S31560027DA0000000000000000000000000000000006B -S31560027DB0000000000000000000000000000000005B -S31560027DC0000000000000000000000000000000004B -S31560027DD0000000000000000000000000000000003B -S31560027DE0000000000000000000000000000000002B -S31560027DF0000000000000000000000000000000001B -S31560027E00000000000000000000000000000000000A -S31560027E1000000000000000000000000000000000FA -S31560027E2000000000000000000000000000000000EA -S31560027E3000000000000000000000000000000000DA -S31560027E4000000000000000000000000000000000CA -S31560027E5000000000000000000000000000000000BA -S31560027E6000000000000000000000000000000000AA -S31560027E70000000000000000000000000000000009A -S31560027E80000000000000000000000000000000008A -S31560027E90000000000000000000000000000000007A -S31560027EA0000000000000000000000000000000006A -S31560027EB0000000000000000000000000000000005A -S31560027EC0000000000000000000000000000000004A -S31560027ED0000000000000000000000000000000003A -S31560027EE0000000000000000000000000000000002A -S31560027EF0000000000000000000000000000000001A -S31560027F000000000000000000000000000000000009 -S31560027F1000000000000000000000000000000000F9 -S31560027F2000000000000000000000000000000000E9 -S31560027F3000000000000000000000000000000000D9 -S31560027F4000000000000000000000000000000000C9 -S31560027F5000000000000000000000000000000000B9 -S31560027F6000000000000000000000000000000000A9 -S31560027F700000000000000000000000000000000099 -S31560027F800000000000000000000000000000000089 -S31560027F900000000000000000000000000000000079 -S31560027FA00000000000000000000000000000000069 -S31560027FB00000000000000000000000000000000059 -S31560027FC00000000000000000000000000000000049 -S31560027FD00000000000000000000000000000000039 -S31560027FE00000000000000000000000000000000029 -S31560027FF00000000000000000000000000000000019 -S315600280000000003F0000000C0000003F000000126C -S31560028010000000FF000000180000000000000000E1 -S3156002802000000000000000000000000000000000E8 -S3156002803000000000000000000000000000000000D8 -S3156002804000000000000000000000000000000000C8 -S3156002805000000000000000000000000000000000B8 -S3156002806000000000000000000000000000000000A8 -S315600280700000000000000000000000000000000098 -S315600280800000000000000000000000000000000088 -S315600280900000000000000000000000000000000078 -S315600280A00000000000000000000000000000000068 -S315600280B00000000000000000000000000000000058 -S315600280C00000000000000000000000000000000048 -S315600280D00000000000000000000000000000000038 -S315600280E00000000000000000000000000000000028 -S315600280F00000000000000000000000000000000018 -S315600281000000000000000000000000000000000007 -S3156002811000000000000000000000000000000000F7 -S3156002812000000000000000000000000000000000E7 -S3156002813000000000000000000000000000000000D7 -S3156002814000000000000000000000000000000000C7 -S3156002815000000000000000000000000000000000B7 -S3156002816000000000000000000000000000000000A7 -S315600281700000000000000000000000000000000097 -S315600281800000000000000000000000000000000087 -S315600281900000000000000000000000000000000077 -S315600281A00000000000000000000000000000000067 -S315600281B00000000000000000000000000000000057 -S315600281C00000000000000000000000000000000047 -S315600281D00000000000000000000000000000000037 -S315600281E00000000000000000000000000000000027 -S315600281F00000000000000000000000000000000017 -S315600282000000000000000000000000000000000006 -S3156002821000000000000000000000000000000000F6 -S3156002822000000000000000000000000000000000E6 -S3156002823000000000000000000000000000000000D6 -S3156002824000000000000000000000000000000000C6 -S3156002825000000000000000000000000000000000B6 -S3156002826000000000000000000000000000000000A6 -S315600282700000000000000000000000000000000096 -S315600282800000000000000000000000000000000086 -S315600282900000000000000000000000000000000076 -S315600282A00000000000000000000000000000000066 -S315600282B00000000000000000000000000000000056 -S315600282C00000000000000000000000000000000046 -S315600282D00000000000000000000000000000000036 -S315600282E00000000000000000000000000000000026 -S315600282F00000000000000000000000000000000016 -S315600283000000000000000000000000000000000005 -S3156002831000000000000000000000000000000000F5 -S3156002832000000000000000000000000000000000E5 -S3156002833000000000000000000000000000000000D5 -S3156002834000000000000000000000000000000000C5 -S3156002835000000000000000000000000000000000B5 -S3156002836000000000000000000000000000000000A5 -S315600283700000000000000000000000000000000095 -S315600283800000000000000000000000000000000085 -S315600283900000000000000000000000000000000075 -S315600283A00000000000000000000000000000000065 -S315600283B00000000000000000000000000000000055 -S315600283C00000000000000000000000000000000045 -S315600283D00000000000000000000000000000000035 -S315600283E00000000000000000000000000000000025 -S315600283F00000000000000000000000000000000015 -S315600284000000000000000000000000000000000004 -S3156002841000000000000000000000000000000000F4 -S3156002842000000000000000000000000000000000E4 -S3156002843000000000000000000000000000000000D4 -S3156002844000000000000000000000000000000000C4 -S3156002845000000000000000000000000000000000B4 -S3156002846000000000000000000000000000000000A4 -S315600284700000000000000000000000000000000094 -S315600284800000000000000000000000000000000084 -S315600284900000000000000000000000000000000074 -S315600284A00000000000000000000000000000000064 -S315600284B00000000000000000000000000000000054 -S315600284C00000000000000000000000000000000044 -S315600284D00000000000000000000000000000000034 -S315600284E00000000000000000000000000000000024 -S315600284F00000000000000000000000000000000014 -S315600285000000000000000000000000000000000003 -S3156002851000000000000000000000000000000000F3 -S3156002852000000000000000000000000000000000E3 -S3156002853000000000000000000000000000000000D3 -S3156002854000000000000000000000000000000000C3 -S3156002855000000000000000000000000000000000B3 -S3156002856000000000000000000000000000000000A3 -S315600285700000000000000000000000000000000093 -S315600285800000000000000000000000000000000083 -S315600285900000000000000000000000000000000073 -S315600285A00000000000000000000000000000000063 -S315600285B00000000000000000000000000000000053 -S315600285C00000000000000000000000000000000043 -S315600285D00000000000000000000000000000000033 -S315600285E00000000000000000000000000000000023 -S315600285F00000000000000000000000000000000013 -S315600286000000000000000000000000000000000002 -S3156002861000000000000000000000000000000000F2 -S3156002862000000000000000000000000000000000E2 -S3156002863000000000000000000000000000000000D2 -S3156002864000000000000000000000000000000000C2 -S3156002865000000000000000000000000000000000B2 -S3156002866000000000000000000000000000000000A2 -S315600286700000000000000000000000000000000092 -S315600286800000000000000000000000000000000082 -S315600286900000000000000000000000000000000072 -S315600286A00000000000000000000000000000000062 -S315600286B00000000000000000000000000000000052 -S315600286C00000000000000000000000000000000042 -S315600286D00000000000000000000000000000000032 -S315600286E00000000000000000000000000000000022 -S315600286F00000000000000000000000000000000012 -S315600287000000000000000000000000000000000001 -S3156002871000000000000000000000000000000000F1 -S3156002872000000000000000000000000000000000E1 -S3156002873000000000000000000000000000000000D1 -S3156002874000000000000000000000000000000000C1 -S3156002875000000000000000000000000000000000B1 -S3156002876000000000000000000000000000000000A1 -S315600287700000000000000000000000000000000091 -S315600287800000000000000000000000000000000081 -S315600287900000000000000000000000000000000071 -S315600287A00000000000000000000000000000000061 -S315600287B00000000000000000000000000000000051 -S315600287C00000000000000000000000000000000041 -S315600287D00000000000000000000000000000000031 -S315600287E00000000000000000000000000000000021 -S315600287F00000000000000000000000000000000011 -S315600288000000000000000000000000000000000000 -S3156002881000000000000000000000000000000000F0 -S3156002882000000000000000000000000000000000E0 -S3156002883000000000000000000000000000000000D0 -S3156002884000000000000000000000000000000000C0 -S3156002885000000000000000000000000000000000B0 -S3156002886000000000000000000000000000000000A0 -S315600288700000000000000000000000000000000090 -S315600288800000000000000000000000000000000080 -S315600288900000000000000000000000000000000070 -S315600288A00000000000000000000000000000000060 -S315600288B00000000000000000000000000000000050 -S315600288C00000000000000000000000000000000040 -S315600288D00000000000000000000000000000000030 -S315600288E00000000000000000000000000000000020 -S315600288F00000000000000000000000000000000010 -S3156002890000000000000000000000000000000000FF -S3156002891000000000000000000000000000000000EF -S3156002892000000000000000000000000000000000DF -S3156002893000000000000000000000000000000000CF -S3156002894000000000000000000000000000000000BF -S3156002895000000000000000000000000000000000AF -S31560028960000000000000000000000000000000009F -S31560028970000000000000000000000000000000008F -S31560028980000000000000000000000000000000007F -S31560028990000000000000000000000000000000006F -S315600289A0000000000000000000000000000000005F -S315600289B0000000000000000000000000000000004F -S315600289C0000000000000000000000000000000003F -S315600289D0000000000000000000000000000000002F -S315600289E0000000000000000000000000000000001F -S315600289F0000000000000000000000000000000000F -S31560028A0000000000000000000000000000000000FE -S31560028A1000000000000000000000000000000000EE -S31560028A2000000000000000000000000000000000DE -S31560028A3000000000000000000000000000000000CE -S31560028A4000000000000000000000000000000000BE -S31560028A5000000000000000000000000000000000AE -S31560028A60000000000000000000000000000000009E -S31560028A70000000000000000000000000000000008E -S31560028A80000000000000000000000000000000007E -S31560028A90000000000000000000000000000000006E -S31560028AA0000000000000000000000000000000005E -S31560028AB0000000000000000000000000000000004E -S31560028AC0000000000000000000000000000000003E -S31560028AD0000000000000000000000000000000002E -S31560028AE0000000000000000000000000000000001E -S31560028AF0000000000000000000000000000000000E -S31560028B0000000000000000000000000000000000FD -S31560028B1000000000000000000000000000000000ED -S31560028B2000000000000000000000000000000000DD -S31560028B3000000000000000000000000000000000CD -S31560028B4000000000000000000000000000000000BD -S31560028B5000000000000000000000000000000000AD -S31560028B60000000000000000000000000000000009D -S31560028B70000000000000000000000000000000008D -S31560028B80000000000000000000000000000000007D -S31560028B90000000000000000000000000000000006D -S31560028BA0000000000000000000000000000000005D -S31560028BB0000000000000000000000000000000004D -S31560028BC0000000000000000000000000000000003D -S31560028BD0000000000000000000000000000000002D -S31560028BE0000000000000000000000000000000001D -S31560028BF0000000000000000000000000000000000D -S31560028C0000000000000000000000000000000000FC -S31560028C1000000000000000000000000000000000EC -S31560028C2000000000000000000000000000000000DC -S31560028C3000000000000000000000000000000000CC -S31560028C4000000000000000000000000000000000BC -S31560028C5000000000000000000000000000000000AC -S31560028C60000000000000000000000000000000009C -S31560028C70000000000000000000000000000000008C -S31560028C80000000000000000000000000000000007C -S31560028C90000000000000000000000000000000006C -S31560028CA0000000000000000000000000000000005C -S31560028CB0000000000000000000000000000000004C -S31560028CC0000000000000000000000000000000003C -S31560028CD0000000000000000000000000000000002C -S31560028CE0000000000000000000000000000000001C -S31560028CF0000000000000000000000000000000000C -S31560028D0000000000000000000000000000000000FB -S31560028D1000000000000000000000000000000000EB -S31560028D2000000000000000000000000000000000DB -S31560028D3000000000000000000000000000000000CB -S31560028D4000000000000000000000000000000000BB -S31560028D5000000000000000000000000000000000AB -S31560028D60000000000000000000000000000000009B -S31560028D70000000000000000000000000000000008B -S31560028D80000000000000000000000000000000007B -S31560028D90000000000000000000000000000000006B -S31560028DA0000000000000000000000000000000005B -S31560028DB0000000000000000000000000000000004B -S31560028DC0000000000000000000000000000000003B -S31560028DD0000000000000000000000000000000002B -S31560028DE0000000000000000000000000000000001B -S31560028DF0000000000000000000000000000000000B -S31560028E0000000000000000000000000000000000FA -S31560028E1000000000000000000000000000000000EA -S31560028E2000000000000000000000000000000000DA -S31560028E3000000000000000000000000000000000CA -S31560028E4000000000000000000000000000000000BA -S31560028E5000000000000000000000000000000000AA -S31560028E60000000000000000000000000000000009A -S31560028E70000000000000000000000000000000008A -S31560028E80000000000000000000000000000000007A -S31560028E90000000000000000000000000000000006A -S31560028EA0000000000000000000000000000000005A -S31560028EB0000000000000000000000000000000004A -S31560028EC0000000000000000000000000000000003A -S31560028ED0000000000000000000000000000000002A -S31560028EE0000000000000000000000000000000001A -S31560028EF0000000000000000000000000000000000A -S31560028F0000000000000000000000000000000000F9 -S31560028F1000000000000000000000000000000000E9 -S31560028F2000000000000000000000000000000000D9 -S31560028F3000000000000000000000000000000000C9 -S31560028F4000000000000000000000000000000000B9 -S31560028F5000000000000000000000000000000000A9 -S31560028F600000000000000000000000000000000099 -S31560028F700000000000000000000000000000000089 -S31560028F800000000000000000000000000000000079 -S31560028F900000000000000000000000000000000069 -S31560028FA00000000000000000000000000000000059 -S31560028FB00000000000000000000000000000000049 -S31560028FC00000000000000000000000000000000039 -S31560028FD00000000000000000000000000000000029 -S31560028FE00000000000000000000000000000000019 -S31560028FF00000000000000000000000000000000009 -S3156002900000000000000000000000000000000000F8 -S3156002901000000000000000000000000000000000E8 -S3156002902000000000000000000000000000000000D8 -S3156002903000000000000000000000000000000000C8 -S3156002904000000000000000000000000000000000B8 -S3156002905000000000000000000000000000000000A8 -S315600290600000000000000000000000000000000098 -S315600290700000000000000000000000000000000088 -S315600290800000000000000000000000000000000078 -S315600290900000000000000000000000000000000068 -S315600290A00000000000000000000000000000000058 -S315600290B00000000000000000000000000000000048 -S315600290C00000000000000000000000000000000038 -S315600290D00000000000000000000000000000000028 -S315600290E00000000000000000000000000000000018 -S315600290F00000000000000000000000000000000008 -S3156002910000000000000000000000000000000000F7 -S3156002911000000000000000000000000000000000E7 -S3156002912000000000000000000000000000000000D7 -S3156002913000000000000000000000000000000000C7 -S3156002914000000000000000000000000000000000B7 -S3156002915000000000000000000000000000000000A7 -S315600291600000000000000000000000000000000097 -S315600291700000000000000000000000000000000087 -S315600291800000000000000000000000000000000077 -S315600291900000000000000000000000000000000067 -S315600291A00000000000000000000000000000000057 -S315600291B00000000000000000000000000000000047 -S315600291C00000000000000000000000000000000037 -S315600291D00000000000000000000000000000000027 -S315600291E00000000000000000000000000000000017 -S315600291F00000000000000000000000000000000007 -S3156002920000000000000000000000000000000000F6 -S3156002921000000000000000000000000000000000E6 -S3156002922000000000000000000000000000000000D6 -S3156002923000000000000000000000000000000000C6 -S3156002924000000000000000000000000000000000B6 -S3156002925000000000000000000000000000000000A6 -S315600292600000000000000000000000000000000096 -S315600292700000000000000000000000000000000086 -S315600292800000000000000000000000000000000076 -S315600292900000000000000000000000000000000066 -S315600292A00000000000000000000000000000000056 -S315600292B00000000000000000000000000000000046 -S315600292C00000000000000000000000000000000036 -S315600292D00000000000000000000000000000000026 -S315600292E00000000000000000000000000000000016 -S315600292F00000000000000000000000000000000006 -S3156002930000000000000000000000000000000000F5 -S3156002931000000000000000000000000000000000E5 -S3156002932000000000000000000000000000000000D5 -S3156002933000000000000000000000000000000000C5 -S3156002934000000000000000000000000000000000B5 -S3156002935000000000000000000000000000000000A5 -S315600293600000000000000000000000000000000095 -S315600293700000000000000000000000000000000085 -S315600293800000000000000000000000000000000075 -S315600293900000000000000000000000000000000065 -S315600293A00000000000000000000000000000000055 -S315600293B00000000000000000000000000000000045 -S315600293C00000000000000000000000000000000035 -S315600293D00000000000000000000000000000000025 -S315600293E00000000000000000000000000000000015 -S315600293F00000000000000000000000000000000005 -S3156002940000000000000000000000000000000000F4 -S3156002941000000000000000000000000000000000E4 -S3156002942000000000000000000000000000000000D4 -S3156002943000000000000000000000000000000000C4 -S3156002944000000000000000000000000000000000B4 -S3156002945000000000000000000000000000000000A4 -S315600294600000000000000000000000000000000094 -S315600294700000000000000000000000000000000084 -S315600294800000000000000000000000000000000074 -S315600294900000000000000000000000000000000064 -S315600294A00000000000000000000000000000000054 -S315600294B00000000000000000000000000000000044 -S315600294C00000000000000000000000000000000034 -S315600294D00000000000000000000000000000000024 -S315600294E00000000000000000000000000000000014 -S315600294F00000000000000000000000000000000004 -S3156002950000000000000000000000000000000000F3 -S3156002951000000000000000000000000000000000E3 -S3156002952000000000000000000000000000000000D3 -S3156002953000000000000000000000000000000000C3 -S3156002954000000000000000000000000000000000B3 -S3156002955000000000000000000000000000000000A3 -S315600295600000000000000000000000000000000093 -S315600295700000000000000000000000000000000083 -S315600295800000000000000000000000000000000073 -S315600295900000000000000000000000000000000063 -S315600295A00000000000000000000000000000000053 -S315600295B00000000000000000000000000000000043 -S315600295C00000000000000000000000000000000033 -S315600295D00000000000000000000000000000000023 -S315600295E00000000000000000000000000000000013 -S315600295F00000000000000000000000000000000003 -S3156002960000000000000000000000000000000000F2 -S3156002961000000000000000000000000000000000E2 -S3156002962000000000000000000000000000000000D2 -S3156002963000000000000000000000000000000000C2 -S3156002964000000000000000000000000000000000B2 -S3156002965000000000000000000000000000000000A2 -S315600296600000000000000000000000000000000092 -S315600296700000000000000000000000000000000082 -S315600296800000000000000000000000000000000072 -S315600296900000000000000000000000000000000062 -S315600296A00000000000000000000000000000000052 -S315600296B00000000000000000000000000000000042 -S315600296C00000000000000000000000000000000032 -S315600296D00000000000000000000000000000000022 -S315600296E00000000000000000000000000000000012 -S315600296F00000000000000000000000000000000002 -S3156002970000000000000000000000000000000000F1 -S3156002971000000000000000000000000000000000E1 -S3156002972000000000000000000000000000000000D1 -S3156002973000000000000000000000000000000000C1 -S3156002974000000000000000000000000000000000B1 -S3156002975000000000000000000000000000000000A1 -S315600297600000000000000000000000000000000091 -S315600297700000000000000000000000000000000081 -S315600297800000000000000000000000000000000071 -S315600297900000000000000000000000000000000061 -S315600297A00000000000000000000000000000000051 -S315600297B00000000000000000000000000000000041 -S315600297C00000000000000000000000000000000031 -S315600297D00000000000000000000000000000000021 -S315600297E00000000000000000000000000000000011 -S315600297F00000000000000000000000000000000001 -S3156002980000000000000000000000000000000000F0 -S3156002981000000000000000000000000000000000E0 -S3156002982000000000000000000000000000000000D0 -S3156002983000000000000000000000000000000000C0 -S3156002984000000000000000000000000000000000B0 -S3156002985000000000000000000000000000000000A0 -S315600298600000000000000000000000000000000090 -S315600298700000000000000000000000000000000080 -S315600298800000000000000000000000000000000070 -S315600298900000000000000000000000000000000060 -S315600298A00000000000000000000000000000000050 -S315600298B00000000000000000000000000000000040 -S315600298C00000000000000000000000000000000030 -S315600298D00000000000000000000000000000000020 -S315600298E00000000000000000000000000000000010 -S315600298F00000000000000000000000000000000000 -S3156002990000000000000000000000000000000000EF -S3156002991000000000000000000000000000000000DF -S3156002992000000000000000000000000000000000CF -S3156002993000000000000000000000000000000000BF -S3156002994000000000000000000000000000000000AF -S31560029950000000000000000000000000000000009F -S31560029960000000000000000000000000000000008F -S31560029970000000000000000000000000000000007F -S31560029980000000000000000000000000000000006F -S31560029990000000000000000000000000000000005F -S315600299A0000000000000000000000000000000004F -S315600299B0000000000000000000000000000000003F -S315600299C0000000000000000000000000000000002F -S315600299D0000000000000000000000000000000001F -S315600299E0000000000000000000000000000000000F -S315600299F000000000000000000000000000000000FF -S31560029A0000000000000000000000000000000000EE -S31560029A1000000000000000000000000000000000DE -S31560029A2000000000000000000000000000000000CE -S31560029A3000000000000000000000000000000000BE -S31560029A4000000000000000000000000000000000AE -S31560029A50000000000000000000000000000000009E -S31560029A60000000000000000000000000000000008E -S31560029A70000000000000000000000000000000007E -S31560029A80000000000000000000000000000000006E -S31560029A90000000000000000000000000000000005E -S31560029AA0000000000000000000000000000000004E -S31560029AB0000000000000000000000000000000003E -S31560029AC0000000000000000000000000000000002E -S31560029AD0000000000000000000000000000000001E -S31560029AE0000000000000000000000000000000000E -S31560029AF000000000000000000000000000000000FE -S31560029B0000000000000000000000000000000000ED -S31560029B1000000000000000000000000000000000DD -S31560029B2000000000000000000000000000000000CD -S31560029B3000000000000000000000000000000000BD -S31560029B4000000000000000000000000000000000AD -S31560029B50000000000000000000000000000000009D -S31560029B60000000000000000000000000000000008D -S31560029B70000000000000000000000000000000007D -S31560029B80000000000000000000000000000000006D -S31560029B90000000000000000000000000000000005D -S31560029BA0000000000000000000000000000000004D -S31560029BB0000000000000000000000000000000003D -S31560029BC0000000000000000000000000000000002D -S31560029BD0000000000000000000000000000000001D -S31560029BE0000000000000000000000000000000000D -S31560029BF000000000000000000000000000000000FD -S31560029C0000000000000000000000000000000000EC -S31560029C1000000000000000000000000000000000DC -S31560029C2000000000000000000000000000000000CC -S31560029C3000000000000000000000000000000000BC -S31560029C4000000000000000000000000000000000AC -S31560029C50000000000000000000000000000000009C -S31560029C60000000000000000000000000000000008C -S31560029C70000000000000000000000000000000007C -S31560029C80000000000000000000000000000000006C -S31560029C90000000000000000000000000000000005C -S31560029CA0000000000000000000000000000000004C -S31560029CB0000000000000000000000000000000003C -S31560029CC0000000000000000000000000000000002C -S31560029CD0000000000000000000000000000000001C -S31560029CE0000000000000000000000000000000000C -S31560029CF000000000000000000000000000000000FC -S31560029D0000000000000000000000000000000000EB -S31560029D1000000000000000000000000000000000DB -S31560029D2000000000000000000000000000000000CB -S31560029D3000000000000000000000000000000000BB -S31560029D4000000000000000000000000000000000AB -S31560029D50000000000000000000000000000000009B -S31560029D60000000000000000000000000000000008B -S31560029D70000000000000000000000000000000007B -S31560029D80000000000000000000000000000000006B -S31560029D90000000000000000000000000000000005B -S31560029DA0000000000000000000000000000000004B -S31560029DB0000000000000000000000000000000003B -S31560029DC0000000000000000000000000000000002B -S31560029DD0000000000000000000000000000000001B -S31560029DE0000000000000000000000000000000000B -S31560029DF000000000000000000000000000000000FB -S31560029E0000000000000000000000000000000000EA -S31560029E1000000000000000000000000000000000DA -S31560029E2000000000000000000000000000000000CA -S31560029E3000000000000000000000000000000000BA -S31560029E4000000000000000000000000000000000AA -S31560029E50000000000000000000000000000000009A -S31560029E60000000000000000000000000000000008A -S31560029E70000000000000000000000000000000007A -S31560029E80000000000000000000000000000000006A -S31560029E90000000000000000000000000000000005A -S31560029EA0000000000000000000000000000000004A -S31560029EB0000000000000000000000000000000003A -S31560029EC0000000000000000000000000000000002A -S31560029ED0000000000000000000000000000000001A -S31560029EE0000000000000000000000000000000000A -S31560029EF000000000000000000000000000000000FA -S31560029F0000000000000000000000000000000000E9 -S31560029F1000000000000000000000000000000000D9 -S31560029F2000000000000000000000000000000000C9 -S31560029F3000000000000000000000000000000000B9 -S31560029F4000000000000000000000000000000000A9 -S31560029F500000000000000000000000000000000099 -S31560029F600000000000000000000000000000000089 -S31560029F700000000000000000000000000000000079 -S31560029F800000000000000000000000000000000069 -S31560029F900000000000000000000000000000000059 -S31560029FA00000000000000000000000000000000049 -S31560029FB00000000000000000000000000000000039 -S31560029FC00000000000000000000000000000000029 -S31560029FD00000000000000000000000000000000019 -S31560029FE00000000000000000000000000000000009 -S31560029FF000000000000000000000000000000000F9 -S3156002A00000000000000000000000000000000000E8 -S3156002A01000000000000000000000000000000000D8 -S3156002A02000000000000000000000000000000000C8 -S3156002A03000000000000000000000000000000000B8 -S3156002A04000000000000000000000000000000000A8 -S3156002A0500000000000000000000000000000000098 -S3156002A0600000000000000000000000000000000088 -S3156002A0700000000000000000000000000000000078 -S3156002A0800000000000000000000000000000000068 -S3156002A0900000000000000000000000000000000058 -S3156002A0A00000000000000000000000000000000048 -S3156002A0B00000000000000000000000000000000038 -S3156002A0C00000000000000000000000000000000028 -S3156002A0D00000000000000000000000000000000018 -S3156002A0E00000000000000000000000000000000008 -S3156002A0F000000000000000000000000000000000F8 -S3156002A10000000000000000000000000000000000E7 -S3156002A11000000000000000000000000000000000D7 -S3156002A12000000000000000000000000000000000C7 -S3156002A13000000000000000000000000000000000B7 -S3156002A14000000000000000000000000000000000A7 -S3156002A1500000000000000000000000000000000097 -S3156002A1600000000000000000000000000000000087 -S3156002A1700000000000000000000000000000000077 -S3156002A1800000000000000000000000000000000067 -S3156002A1900000000000000000000000000000000057 -S3156002A1A00000000000000000000000000000000047 -S3156002A1B00000000000000000000000000000000037 -S3156002A1C00000000000000000000000000000000027 -S3156002A1D00000000000000000000000000000000017 -S3156002A1E00000000000000000000000000000000007 -S3156002A1F000000000000000000000000000000000F7 -S3156002A20000000000000000000000000000000000E6 -S3156002A21000000000000000000000000000000000D6 -S3156002A22000000000000000000000000000000000C6 -S3156002A23000000000000000000000000000000000B6 -S3156002A24000000000000000000000000000000000A6 -S3156002A2500000000000000000000000000000000096 -S3156002A2600000000000000000000000000000000086 -S3156002A2700000000000000000000000000000000076 -S3156002A2800000000000000000000000000000000066 -S3156002A2900000000000000000000000000000000056 -S3156002A2A00000000000000000000000000000000046 -S3156002A2B00000000000000000000000000000000036 -S3156002A2C00000000000000000000000000000000026 -S3156002A2D00000000000000000000000000000000016 -S3156002A2E00000000000000000000000000000000006 -S3156002A2F000000000000000000000000000000000F6 -S3156002A30000000000000000000000000000000000E5 -S3156002A31000000000000000000000000000000000D5 -S3156002A32000000000000000000000000000000000C5 -S3156002A33000000000000000000000000000000000B5 -S3156002A34000000000000000000000000000000000A5 -S3156002A3500000000000000000000000000000000095 -S3156002A3600000000000000000000000000000000085 -S3156002A3700000000000000000000000000000000075 -S3156002A3800000000000000000000000000000000065 -S3156002A3900000000000000000000000000000000055 -S3156002A3A00000000000000000000000000000000045 -S3156002A3B00000000000000000000000000000000035 -S3156002A3C00000000000000000000000000000000025 -S3156002A3D00000000000000000000000000000000015 -S3156002A3E00000000000000000000000000000000005 -S3156002A3F000000000000000000000000000000000F5 -S3156002A40000000000000000000000000000000000E4 -S3156002A41000000000000000000000000000000000D4 -S3156002A42000000000000000000000000000000000C4 -S3156002A43000000000000000000000000000000000B4 -S3156002A44000000000000000000000000000000000A4 -S3156002A4500000000000000000000000000000000094 -S3156002A4600000000000000000000000000000000084 -S3156002A4700000000000000000000000000000000074 -S3156002A4800000000000000000000000000000000064 -S3156002A4900000000000000000000000000000000054 -S3156002A4A00000000000000000000000000000000044 -S3156002A4B00000000000000000000000000000000034 -S3156002A4C00000000000000000000000000000000024 -S3156002A4D00000000000000000000000000000000014 -S3156002A4E00000000000000000000000000000000004 -S3156002A4F000000000000000000000000000000000F4 -S3156002A50000000000000000000000000000000000E3 -S3156002A51000000000000000000000000000000000D3 -S3156002A52000000000000000000000000000000000C3 -S3156002A53000000000000000000000000000000000B3 -S3156002A54000000000000000000000000000000000A3 -S3156002A5500000000000000000000000000000000093 -S3156002A5600000000000000000000000000000000083 -S3156002A5700000000000000000000000000000000073 -S3156002A5800000000000000000000000000000000063 -S3156002A5900000000000000000000000000000000053 -S3156002A5A00000000000000000000000000000000043 -S3156002A5B00000000000000000000000000000000033 -S3156002A5C00000000000000000000000000000000023 -S3156002A5D00000000000000000000000000000000013 -S3156002A5E00000000000000000000000000000000003 -S3156002A5F000000000000000000000000000000000F3 -S3156002A60000000000000000000000000000000000E2 -S3156002A61000000000000000000000000000000000D2 -S3156002A62000000000000000000000000000000000C2 -S3156002A63000000000000000000000000000000000B2 -S3156002A64000000000000000000000000000000000A2 -S3156002A6500000000000000000000000000000000092 -S3156002A6600000000000000000000000000000000082 -S3156002A6700000000000000000000000000000000072 -S3156002A6800000000000000000000000000000000062 -S3156002A6900000000000000000000000000000000052 -S3156002A6A00000000000000000000000000000000042 -S3156002A6B00000000000000000000000000000000032 -S3156002A6C00000000000000000000000000000000022 -S3156002A6D00000000000000000000000000000000012 -S3156002A6E00000000000000000000000000000000002 -S3156002A6F000000000000000000000000000000000F2 -S3156002A70000000000000000000000000000000000E1 -S3156002A71000000000000000000000000000000000D1 -S3156002A72000000000000000000000000000000000C1 -S3156002A73000000000000000000000000000000000B1 -S3156002A74000000000000000000000000000000000A1 -S3156002A7500000000000000000000000000000000091 -S3156002A7600000000000000000000000000000000081 -S3156002A7700000000000000000000000000000000071 -S3156002A7800000000000000000000000000000000061 -S3156002A7900000000000000000000000000000000051 -S3156002A7A00000000000000000000000000000000041 -S3156002A7B00000000000000000000000000000000031 -S3156002A7C00000000000000000000000000000000021 -S3156002A7D00000000000000000000000000000000011 -S3156002A7E00000000000000000000000000000000001 -S3156002A7F000000000000000000000000000000000F1 -S3156002A80000000000000000000000000000000000E0 -S3156002A81000000000000000000000000000000000D0 -S3156002A82000000000000000000000000000000000C0 -S3156002A83000000000000000000000000000000000B0 -S3156002A84000000000000000000000000000000000A0 -S3156002A8500000000000000000000000000000000090 -S3156002A8600000000000000000000000000000000080 -S3156002A8700000000000000000000000000000000070 -S3156002A8800000000000000000000000000000000060 -S3156002A8900000000000000000000000000000000050 -S3156002A8A00000000000000000000000000000000040 -S3156002A8B00000000000000000000000000000000030 -S3156002A8C00000000000000000000000000000000020 -S3156002A8D00000000000000000000000000000000010 -S3156002A8E00000000000000000000000000000000000 -S3156002A8F000000000000000000000000000000000F0 -S3156002A90000000000000000000000000000000000DF -S3156002A91000000000000000000000000000000000CF -S3156002A92000000000000000000000000000000000BF -S3156002A93000000000000000000000000000000000AF -S3156002A940000000000000000000000000000000009F -S3156002A950000000000000000000000000000000008F -S3156002A960000000000000000000000000000000007F -S3156002A970000000000000000000000000000000006F -S3156002A980000000000000000000000000000000005F -S3156002A990000000000000000000000000000000004F -S3156002A9A0000000000000000000000000000000003F -S3156002A9B0000000000000000000000000000000002F -S3156002A9C0000000000000000000000000000000001F -S3156002A9D0000000000000000000000000000000000F -S3156002A9E000000000000000000000000000000000FF -S3156002A9F000000000000000000000000000000000EF -S3156002AA0000000000000000000000000000000000DE -S3156002AA1000000000000000000000000000000000CE -S3156002AA2000000000000000000000000000000000BE -S3156002AA3000000000000000000000000000000000AE -S3156002AA40000000000000000000000000000000009E -S3156002AA50000000000000000000000000000000008E -S3156002AA60000000000000000000000000000000007E -S3156002AA70000000000000000000000000000000006E -S3156002AA80000000000000000000000000000000005E -S3156002AA90000000000000000000000000000000004E -S3156002AAA0000000000000000000000000000000003E -S3156002AAB0000000000000000000000000000000002E -S3156002AAC0000000000000000000000000000000001E -S3156002AAD0000000000000000000000000000000000E -S3156002AAE000000000000000000000000000000000FE -S3156002AAF000000000000000000000000000000000EE -S3156002AB0000000000000000000000000000000000DD -S3156002AB1000000000000000000000000000000000CD -S3156002AB2000000000000000000000000000000000BD -S3156002AB3000000000000000000000000000000000AD -S3156002AB40000000000000000000000000000000009D -S3156002AB50000000000000000000000000000000008D -S3156002AB60000000000000000000000000000000007D -S3156002AB70000000000000000000000000000000006D -S3156002AB80000000000000000000000000000000005D -S3156002AB90000000000000000000000000000000004D -S3156002ABA0000000000000000000000000000000003D -S3156002ABB0000000000000000000000000000000002D -S3156002ABC0000000000000000000000000000000001D -S3156002ABD0000000000000000000000000000000000D -S3156002ABE000000000000000000000000000000000FD -S3156002ABF000000000000000000000000000000000ED -S3156002AC0000000000000000000000000000000000DC -S3156002AC1000000000000000000000000000000000CC -S3156002AC2000000000000000000000000000000000BC -S3156002AC3000000000000000000000000000000000AC -S3156002AC40000000000000000000000000000000009C -S3156002AC50000000000000000000000000000000008C -S3156002AC60000000000000000000000000000000007C -S3156002AC70000000000000000000000000000000006C -S3156002AC80000000000000000000000000000000005C -S3156002AC90000000000000000000000000000000004C -S3156002ACA0000000000000000000000000000000003C -S3156002ACB0000000000000000000000000000000002C -S3156002ACC0000000000000000000000000000000001C -S3156002ACD0000000000000000000000000000000000C -S3156002ACE000000000000000000000000000000000FC -S3156002ACF000000000000000000000000000000000EC -S3156002AD0000000000000000000000000000000000DB -S3156002AD1000000000000000000000000000000000CB -S3156002AD2000000000000000000000000000000000BB -S3156002AD3000000000000000000000000000000000AB -S3156002AD40000000000000000000000000000000009B -S3156002AD50000000000000000000000000000000008B -S3156002AD60000000000000000000000000000000007B -S3156002AD70000000000000000000000000000000006B -S3156002AD80000000000000000000000000000000005B -S3156002AD90000000000000000000000000000000004B -S3156002ADA0000000000000000000000000000000003B -S3156002ADB0000000000000000000000000000000002B -S3156002ADC0000000000000000000000000000000001B -S3156002ADD0000000000000000000000000000000000B -S3156002ADE000000000000000000000000000000000FB -S3156002ADF000000000000000000000000000000000EB -S3156002AE0000000000000000000000000000000000DA -S3156002AE1000000000000000000000000000000000CA -S3156002AE2000000000000000000000000000000000BA -S3156002AE3000000000000000000000000000000000AA -S3156002AE40000000000000000000000000000000009A -S3156002AE50000000000000000000000000000000008A -S3156002AE60000000000000000000000000000000007A -S3156002AE70000000000000000000000000000000006A -S3156002AE80000000000000000000000000000000005A -S3156002AE90000000000000000000000000000000004A -S3156002AEA0000000000000000000000000000000003A -S3156002AEB0000000000000000000000000000000002A -S3156002AEC0000000000000000000000000000000001A -S3156002AED0000000000000000000000000000000000A -S3156002AEE000000000000000000000000000000000FA -S3156002AEF000000000000000000000000000000000EA -S3156002AF0000000000000000000000000000000000D9 -S3156002AF1000000000000000000000000000000000C9 -S3156002AF2000000000000000000000000000000000B9 -S3156002AF3000000000000000000000000000000000A9 -S3156002AF400000000000000000000000000000000099 -S3156002AF500000000000000000000000000000000089 -S3156002AF600000000000000000000000000000000079 -S3156002AF700000000000000000000000000000000069 -S3156002AF800000000000000000000000000000000059 -S3156002AF900000000000000000000000000000000049 -S3156002AFA00000000000000000000000000000000039 -S3156002AFB00000000000000000000000000000000029 -S3156002AFC00000000000000000000000000000000019 -S3156002AFD00000000000000000000000000000000009 -S3156002AFE000000000000000000000000000000000F9 -S3156002AFF000000000000000000000000000000000E9 -S3156002B00000000000000000000000000000000000D8 -S3156002B01000000000000000000000000000000000C8 -S3156002B02000000000000000000000000000000000B8 -S3156002B03000000000000000000000000000000000A8 -S3156002B0400000000000000000000000000000000098 -S3156002B0500000000000000000000000000000000088 -S3156002B0600000000000000000000000000000000078 -S3156002B0700000000000000000000000000000000068 -S3156002B0800000000000000000000000000000000058 -S3156002B0900000000000000000000000000000000048 -S3156002B0A00000000000000000000000000000000038 -S3156002B0B00000000000000000000000000000000028 -S3156002B0C00000000000000000000000000000000018 -S3156002B0D00000000000000000000000000000000008 -S3156002B0E000000000000000000000000000000000F8 -S3156002B0F000000000000000000000000000000000E8 -S3156002B10000000000000000000000000000000000D7 -S3156002B11000000000000000000000000000000000C7 -S3156002B12000000000000000000000000000000000B7 -S3156002B13000000000000000000000000000000000A7 -S3156002B1400000000000000000000000000000000097 -S3156002B1500000000000000000000000000000000087 -S3156002B1600000000000000000000000000000000077 -S3156002B1700000000000000000000000000000000067 -S3156002B1800000000000000000000000000000000057 -S3156002B1900000000000000000000000000000000047 -S3156002B1A00000000000000000000000000000000037 -S3156002B1B00000000000000000000000000000000027 -S3156002B1C00000000000000000000000000000000017 -S3156002B1D00000000000000000000000000000000007 -S3156002B1E000000000000000000000000000000000F7 -S3156002B1F000000000000000000000000000000000E7 -S3156002B20000000000000000000000000000000000D6 -S3156002B21000000000000000000000000000000000C6 -S3156002B22000000000000000000000000000000000B6 -S3156002B23000000000000000000000000000000000A6 -S3156002B2400000000000000000000000000000000096 -S3156002B2500000000000000000000000000000000086 -S3156002B2600000000000000000000000000000000076 -S3156002B2700000000000000000000000000000000066 -S3156002B2800000000000000000000000000000000056 -S3156002B2900000000000000000000000000000000046 -S3156002B2A00000000000000000000000000000000036 -S3156002B2B00000000000000000000000000000000026 -S3156002B2C00000000000000000000000000000000016 -S3156002B2D00000000000000000000000000000000006 -S3156002B2E000000000000000000000000000000000F6 -S3156002B2F000000000000000000000000000000000E6 -S3156002B30000000000000000000000000000000000D5 -S3156002B31000000000000000000000000000000000C5 -S3156002B32000000000000000000000000000000000B5 -S3156002B33000000000000000000000000000000000A5 -S3156002B3400000000000000000000000000000000095 -S3156002B3500000000000000000000000000000000085 -S3156002B3600000000000000000000000000000000075 -S3156002B3700000000000000000000000000000000065 -S3156002B3800000000000000000000000000000000055 -S3156002B3900000000000000000000000000000000045 -S3156002B3A00000000000000000000000000000000035 -S3156002B3B00000000000000000000000000000000025 -S3156002B3C00000000000000000000000000000000015 -S3156002B3D00000000000000000000000000000000005 -S3156002B3E000000000000000000000000000000000F5 -S3156002B3F000000000000000000000000000000000E5 -S3156002B40000000000000000000000000000000000D4 -S3156002B41000000000000000000000000000000000C4 -S3156002B42000000000000000000000000000000000B4 -S3156002B43000000000000000000000000000000000A4 -S3156002B4400000000000000000000000000000000094 -S3156002B4500000000000000000000000000000000084 -S3156002B4600000000000000000000000000000000074 -S3156002B4700000000000000000000000000000000064 -S3156002B4800000000000000000000000000000000054 -S3156002B4900000000000000000000000000000000044 -S3156002B4A00000000000000000000000000000000034 -S3156002B4B00000000000000000000000000000000024 -S3156002B4C00000000000000000000000000000000014 -S3156002B4D00000000000000000000000000000000004 -S3156002B4E000000000000000000000000000000000F4 -S3156002B4F000000000000000000000000000000000E4 -S3156002B50000000000000000000000000000000000D3 -S3156002B51000000000000000000000000000000000C3 -S3156002B52000000000000000000000000000000000B3 -S3156002B53000000000000000000000000000000000A3 -S3156002B5400000000000000000000000000000000093 -S3156002B5500000000000000000000000000000000083 -S3156002B5600000000000000000000000000000000073 -S3156002B5700000000000000000000000000000000063 -S3156002B5800000000000000000000000000000000053 -S3156002B5900000000000000000000000000000000043 -S3156002B5A00000000000000000000000000000000033 -S3156002B5B00000000000000000000000000000000023 -S3156002B5C00000000000000000000000000000000013 -S3156002B5D00000000000000000000000000000000003 -S3156002B5E000000000000000000000000000000000F3 -S3156002B5F000000000000000000000000000000000E3 -S3156002B60000000000000000000000000000000000D2 -S3156002B61000000000000000000000000000000000C2 -S3156002B62000000000000000000000000000000000B2 -S3156002B63000000000000000000000000000000000A2 -S3156002B6400000000000000000000000000000000092 -S3156002B6500000000000000000000000000000000082 -S3156002B6600000000000000000000000000000000072 -S3156002B6700000000000000000000000000000000062 -S3156002B6800000000000000000000000000000000052 -S3156002B6900000000000000000000000000000000042 -S3156002B6A00000000000000000000000000000000032 -S3156002B6B00000000000000000000000000000000022 -S3156002B6C00000000000000000000000000000000012 -S3156002B6D00000000000000000000000000000000002 -S3156002B6E000000000000000000000000000000000F2 -S3156002B6F000000000000000000000000000000000E2 -S3156002B70000000000000000000000000000000000D1 -S3156002B71000000000000000000000000000000000C1 -S3156002B72000000000000000000000000000000000B1 -S3156002B73000000000000000000000000000000000A1 -S3156002B7400000000000000000000000000000000091 -S3156002B7500000000000000000000000000000000081 -S3156002B7600000000000000000000000000000000071 -S3156002B7700000000000000000000000000000000061 -S3156002B7800000000000000000000000000000000051 -S3156002B7900000000000000000000000000000000041 -S3156002B7A00000000000000000000000000000000031 -S3156002B7B00000000000000000000000000000000021 -S3156002B7C00000000000000000000000000000000011 -S3156002B7D00000000000000000000000000000000001 -S3156002B7E000000000000000000000000000000000F1 -S3156002B7F000000000000000000000000000000000E1 -S3156002B80000000000000000000000000000000000D0 -S3156002B81000000000000000000000000000000000C0 -S3156002B82000000000000000000000000000000000B0 -S3156002B83000000000000000000000000000000000A0 -S3156002B8400000000000000000000000000000000090 -S3156002B8500000000000000000000000000000000080 -S3156002B8600000000000000000000000000000000070 -S3156002B8700000000000000000000000000000000060 -S3156002B8800000000000000000000000000000000050 -S3156002B8900000000000000000000000000000000040 -S3156002B8A00000000000000000000000000000000030 -S3156002B8B00000000000000000000000000000000020 -S3156002B8C00000000000000000000000000000000010 -S3156002B8D00000000000000000000000000000000000 -S3156002B8E000000000000000000000000000000000F0 -S3156002B8F000000000000000000000000000000000E0 -S3156002B90000000000000000000000000000000000CF -S3156002B91000000000000000000000000000000000BF -S3156002B92000000000000000000000000000000000AF -S3156002B930000000000000000000000000000000009F -S3156002B940000000000000000000000000000000008F -S3156002B950000000000000000000000000000000007F -S3156002B960000000000000000000000000000000006F -S3156002B970000000000000000000000000000000005F -S3156002B980000000000000000000000000000000004F -S3156002B990000000000000000000000000000000003F -S3156002B9A0000000000000000000000000000000002F -S3156002B9B0000000000000000000000000000000001F -S3156002B9C0000000000000000000000000000000000F -S3156002B9D000000000000000000000000000000000FF -S3156002B9E000000000000000000000000000000000EF -S3156002B9F000000000000000000000000000000000DF -S3156002BA0000000000000000000000000000000000CE -S3156002BA1000000000000000000000000000000000BE -S3156002BA2000000000000000000000000000000000AE -S3156002BA30000000000000000000000000000000009E -S3156002BA40000000000000000000000000000000008E -S3156002BA50000000000000000000000000000000007E -S3156002BA60000000000000000000000000000000006E -S3156002BA70000000000000000000000000000000005E -S3156002BA80000000000000000000000000000000004E -S3156002BA90000000000000000000000000000000003E -S3156002BAA0000000000000000000000000000000002E -S3156002BAB0000000000000000000000000000000001E -S3156002BAC0000000000000000000000000000000000E -S3156002BAD000000000000000000000000000000000FE -S3156002BAE000000000000000000000000000000000EE -S3156002BAF000000000000000000000000000000000DE -S3156002BB0000000000000000000000000000000000CD -S3156002BB1000000000000000000000000000000000BD -S3156002BB2000000000000000000000000000000000AD -S3156002BB30000000000000000000000000000000009D -S3156002BB40000000000000000000000000000000008D -S3156002BB50000000000000000000000000000000007D -S3156002BB60000000000000000000000000000000006D -S3156002BB70000000000000000000000000000000005D -S3156002BB80000000000000000000000000000000004D -S3156002BB90000000000000000000000000000000003D -S3156002BBA0000000000000000000000000000000002D -S3156002BBB0000000000000000000000000000000001D -S3156002BBC0000000000000000000000000000000000D -S3156002BBD000000000000000000000000000000000FD -S3156002BBE000000000000000000000000000000000ED -S3156002BBF000000000000000000000000000000000DD -S3156002BC0000000000000000000000000000000000CC -S3156002BC1000000000000000000000000000000000BC -S3156002BC2000000000000000000000000000000000AC -S3156002BC30000000000000000000000000000000009C -S3156002BC40000000000000000000000000000000008C -S3156002BC50000000000000000000000000000000007C -S3156002BC60000000000000000000000000000000006C -S3156002BC70000000000000000000000000000000005C -S3156002BC80000000000000000000000000000000004C -S3156002BC90000000000000000000000000000000003C -S3156002BCA0000000000000000000000000000000002C -S3156002BCB0000000000000000000000000000000001C -S3156002BCC0000000000000000000000000000000000C -S3156002BCD000000000000000000000000000000000FC -S3156002BCE000000000000000000000000000000000EC -S3156002BCF000000000000000000000000000000000DC -S3156002BD0000000000000000000000000000000000CB -S3156002BD1000000000000000000000000000000000BB -S3156002BD2000000000000000000000000000000000AB -S3156002BD30000000000000000000000000000000009B -S3156002BD40000000000000000000000000000000008B -S3156002BD50000000000000000000000000000000007B -S3156002BD60000000000000000000000000000000006B -S3156002BD70000000000000000000000000000000005B -S3156002BD80000000000000000000000000000000004B -S3156002BD90000000000000000000000000000000003B -S3156002BDA0000000000000000000000000000000002B -S3156002BDB0000000000000000000000000000000001B -S3156002BDC0000000000000000000000000000000000B -S3156002BDD000000000000000000000000000000000FB -S3156002BDE000000000000000000000000000000000EB -S3156002BDF000000000000000000000000000000000DB -S3156002BE0000000000000000000000000000000000CA -S3156002BE1000000000000000000000000000000000BA -S3156002BE2000000000000000000000000000000000AA -S3156002BE30000000000000000000000000000000009A -S3156002BE40000000000000000000000000000000008A -S3156002BE50000000000000000000000000000000007A -S3156002BE60000000000000000000000000000000006A -S3156002BE70000000000000000000000000000000005A -S3156002BE80000000000000000000000000000000004A -S3156002BE90000000000000000000000000000000003A -S3156002BEA0000000000000000000000000000000002A -S3156002BEB0000000000000000000000000000000001A -S3156002BEC0000000000000000000000000000000000A -S3156002BED000000000000000000000000000000000FA -S3156002BEE000000000000000000000000000000000EA -S3156002BEF000000000000000000000000000000000DA -S3156002BF0000000000000000000000000000000000C9 -S3156002BF1000000000000000000000000000000000B9 -S3156002BF2000000000000000000000000000000000A9 -S3156002BF300000000000000000000000000000000099 -S3156002BF400000000000000000000000000000000089 -S3156002BF500000000000000000000000000000000079 -S3156002BF600000000000000000000000000000000069 -S3156002BF700000000000000000000000000000000059 -S3156002BF800000000000000000000000000000000049 -S3156002BF900000000000000000000000000000000039 -S3156002BFA00000000000000000000000000000000029 -S3156002BFB00000000000000000000000000000000019 -S3156002BFC00000000000000000000000000000000009 -S3156002BFD000000000000000000000000000000000F9 -S3156002BFE000000000000000000000000000000000E9 -S3156002BFF000000000000000000000000000000000D9 -S3156002C00000000000000000000000000000000000C8 -S3156002C01000000000000000000000000000000000B8 -S3156002C02000000000000000000000000000000000A8 -S3156002C0300000000000000000000000000000000098 -S3156002C0400000000000000000000000000000000088 -S3156002C0500000000000000000000000000000000078 -S3156002C0600000000000000000000000000000000068 -S3156002C0700000000000000000000000000000000058 -S3156002C0800000000000000000000000000000000048 -S3156002C0900000000000000000000000000000000038 -S3156002C0A00000000000000000000000000000000028 -S3156002C0B00000000000000000000000000000000018 -S3156002C0C00000000000000000000000000000000008 -S3156002C0D000000000000000000000000000000000F8 -S3156002C0E000000000000000000000000000000000E8 -S3156002C0F000000000000000000000000000000000D8 -S3156002C10000000000000000000000000000000000C7 -S3156002C11000000000000000000000000000000000B7 -S3156002C12000000000000000000000000000000000A7 -S3156002C1300000000000000000000000000000000097 -S3156002C1400000000000000000000000000000000087 -S3156002C1500000000000000000000000000000000077 -S3156002C1600000000000000000000000000000000067 -S3156002C1700000000000000000000000000000000057 -S3156002C1800000000000000000000000000000000047 -S3156002C1900000000000000000000000000000000037 -S3156002C1A00000000000000000000000000000000027 -S3156002C1B00000000000000000000000000000000017 -S3156002C1C00000000000000000000000000000000007 -S3156002C1D000000000000000000000000000000000F7 -S3156002C1E000000000000000000000000000000000E7 -S3156002C1F000000000000000000000000000000000D7 -S3156002C20000000000000000000000000000000000C6 -S3156002C21000000000000000000000000000000000B6 -S3156002C22000000000000000000000000000000000A6 -S3156002C2300000000000000000000000000000000096 -S3156002C2400000000000000000000000000000000086 -S3156002C2500000000000000000000000000000000076 -S3156002C2600000000000000000000000000000000066 -S3156002C2700000000000000000000000000000000056 -S3156002C2800000000000000000000000000000000046 -S3156002C2900000000000000000000000000000000036 -S3156002C2A00000000000000000000000000000000026 -S3156002C2B00000000000000000000000000000000016 -S3156002C2C00000000000000000000000000000000006 -S3156002C2D000000000000000000000000000000000F6 -S3156002C2E000000000000000000000000000000000E6 -S3156002C2F000000000000000000000000000000000D6 -S3156002C30000000000000000000000000000000000C5 -S3156002C31000000000000000000000000000000000B5 -S3156002C32000000000000000000000000000000000A5 -S3156002C3300000000000000000000000000000000095 -S3156002C3400000000000000000000000000000000085 -S3156002C3500000000000000000000000000000000075 -S3156002C3600000000000000000000000000000000065 -S3156002C3700000000000000000000000000000000055 -S3156002C3800000000000000000000000000000000045 -S3156002C3900000000000000000000000000000000035 -S3156002C3A00000000000000000000000000000000025 -S3156002C3B00000000000000000000000000000000015 -S3156002C3C00000000000000000000000000000000005 -S3156002C3D000000000000000000000000000000000F5 -S3156002C3E000000000000000000000000000000000E5 -S3156002C3F000000000000000000000000000000000D5 -S3156002C40000000000000000000000000000000000C4 -S3156002C41000000000000000000000000000000000B4 -S3156002C42000000000000000000000000000000000A4 -S3156002C4300000000000000000000000000000000094 -S3156002C4400000000000000000000000000000000084 -S3156002C4500000000000000000000000000000000074 -S3156002C4600000000000000000000000000000000064 -S3156002C4700000000000000000000000000000000054 -S3156002C4800000000000000000000000000000000044 -S3156002C4900000000000000000000000000000000034 -S3156002C4A00000000000000000000000000000000024 -S3156002C4B00000000000000000000000000000000014 -S3156002C4C00000000000000000000000000000000004 -S3156002C4D000000000000000000000000000000000F4 -S3156002C4E000000000000000000000000000000000E4 -S3156002C4F000000000000000000000000000000000D4 -S3156002C50000000000000000000000000000000000C3 -S3156002C51000000000000000000000000000000000B3 -S3156002C52000000000000000000000000000000000A3 -S3156002C5300000000000000000000000000000000093 -S3156002C5400000000000000000000000000000000083 -S3156002C5500000000000000000000000000000000073 -S3156002C5600000000000000000000000000000000063 -S3156002C5700000000000000000000000000000000053 -S3156002C5800000000000000000000000000000000043 -S3156002C5900000000000000000000000000000000033 -S3156002C5A00000000000000000000000000000000023 -S3156002C5B00000000000000000000000000000000013 -S3156002C5C00000000000000000000000000000000003 -S3156002C5D000000000000000000000000000000000F3 -S3156002C5E000000000000000000000000000000000E3 -S3156002C5F000000000000000000000000000000000D3 -S3156002C60000000000000000000000000000000000C2 -S3156002C61000000000000000000000000000000000B2 -S3156002C62000000000000000000000000000000000A2 -S3156002C6300000000000000000000000000000000092 -S3156002C6400000000000000000000000000000000082 -S3156002C6500000000000000000000000000000000072 -S3156002C6600000000000000000000000000000000062 -S3156002C6700000000000000000000000000000000052 -S3156002C6800000000000000000000000000000000042 -S3156002C6900000000000000000000000000000000032 -S3156002C6A00000000000000000000000000000000022 -S3156002C6B00000000000000000000000000000000012 -S3156002C6C00000000000000000000000000000000002 -S3156002C6D000000000000000000000000000000000F2 -S3156002C6E000000000000000000000000000000000E2 -S3156002C6F000000000000000000000000000000000D2 -S3156002C70000000000000000000000000000000000C1 -S3156002C71000000000000000000000000000000000B1 -S3156002C72000000000000000000000000000000000A1 -S3156002C7300000000000000000000000000000000091 -S3156002C7400000000000000000000000000000000081 -S3156002C7500000000000000000000000000000000071 -S3156002C7600000000000000000000000000000000061 -S3156002C7700000000000000000000000000000000051 -S3156002C7800000000000000000000000000000000041 -S3156002C7900000000000000000000000000000000031 -S3156002C7A00000000000000000000000000000000021 -S3156002C7B00000000000000000000000000000000011 -S3156002C7C00000000000000000000000000000000001 -S3156002C7D000000000000000000000000000000000F1 -S3156002C7E000000000000000000000000000000000E1 -S3156002C7F000000000000000000000000000000000D1 -S3156002C80000000000000000000000000000000000C0 -S3156002C81000000000000000000000000000000000B0 -S3156002C82000000000000000000000000000000000A0 -S3156002C8300000000000000000000000000000000090 -S3156002C8400000000000000000000000000000000080 -S3156002C8500000000000000000000000000000000070 -S3156002C8600000000000000000000000000000000060 -S3156002C8700000000000000000000000000000000050 -S3156002C8800000000000000000000000000000000040 -S3156002C8900000000000000000000000000000000030 -S3156002C8A00000000000000000000000000000000020 -S3156002C8B00000000000000000000000000000000010 -S3156002C8C00000000000000000000000000000000000 -S3156002C8D000000000000000000000000000000000F0 -S3156002C8E000000000000000000000000000000000E0 -S3156002C8F000000000000000000000000000000000D0 -S3156002C90000000000000000000000000000000000BF -S3156002C91000000000000000000000000000000000AF -S3156002C920000000000000000000000000000000009F -S3156002C930000000000000000000000000000000008F -S3156002C940000000000000000000000000000000007F -S3156002C950000000000000000000000000000000006F -S3156002C960000000000000000000000000000000005F -S3156002C970000000000000000000000000000000004F -S3156002C980000000000000000000000000000000003F -S3156002C990000000000000000000000000000000002F -S3156002C9A0000000000000000000000000000000001F -S3156002C9B0000000000000000000000000000000000F -S3156002C9C000000000000000000000000000000000FF -S3156002C9D000000000000000000000000000000000EF -S3156002C9E000000000000000000000000000000000DF -S3156002C9F000000000000000000000000000000000CF -S3156002CA0000000000000000000000000000000000BE -S3156002CA1000000000000000000000000000000000AE -S3156002CA20000000000000000000000000000000009E -S3156002CA30000000000000000000000000000000008E -S3156002CA40000000000000000000000000000000007E -S3156002CA50000000000000000000000000000000006E -S3156002CA60000000000000000000000000000000005E -S3156002CA70000000000000000000000000000000004E -S3156002CA80000000000000000000000000000000003E -S3156002CA90000000000000000000000000000000002E -S3156002CAA0000000000000000000000000000000001E -S3156002CAB0000000000000000000000000000000000E -S3156002CAC000000000000000000000000000000000FE -S3156002CAD000000000000000000000000000000000EE -S3156002CAE000000000000000000000000000000000DE -S3156002CAF000000000000000000000000000000000CE -S3156002CB0000000000000000000000000000000000BD -S3156002CB1000000000000000000000000000000000AD -S3156002CB20000000000000000000000000000000009D -S3156002CB30000000000000000000000000000000008D -S3156002CB40000000000000000000000000000000007D -S3156002CB50000000000000000000000000000000006D -S3156002CB60000000000000000000000000000000005D -S3156002CB70000000000000000000000000000000004D -S3156002CB80000000000000000000000000000000003D -S3156002CB90000000000000000000000000000000002D -S3156002CBA0000000000000000000000000000000001D -S3156002CBB0000000000000000000000000000000000D -S3156002CBC000000000000000000000000000000000FD -S3156002CBD000000000000000000000000000000000ED -S3156002CBE000000000000000000000000000000000DD -S3156002CBF000000000000000000000000000000000CD -S3156002CC0000000000000000000000000000000000BC -S3156002CC1000000000000000000000000000000000AC -S3156002CC20000000000000000000000000000000009C -S3156002CC30000000000000000000000000000000008C -S3156002CC40000000000000000000000000000000007C -S3156002CC50000000000000000000000000000000006C -S3156002CC60000000000000000000000000000000005C -S3156002CC70000000000000000000000000000000004C -S3156002CC80000000000000000000000000000000003C -S3156002CC90000000000000000000000000000000002C -S3156002CCA0000000000000000000000000000000001C -S3156002CCB0000000000000000000000000000000000C -S3156002CCC000000000000000000000000000000000FC -S3156002CCD000000000000000000000000000000000EC -S3156002CCE000000000000000000000000000000000DC -S3156002CCF000000000000000000000000000000000CC -S3156002CD0000000000000000000000000000000000BB -S3156002CD1000000000000000000000000000000000AB -S3156002CD20000000000000000000000000000000009B -S3156002CD30000000000000000000000000000000008B -S3156002CD40000000000000000000000000000000007B -S3156002CD50000000000000000000000000000000006B -S3156002CD60000000000000000000000000000000005B -S3156002CD70000000000000000000000000000000004B -S3156002CD80000000000000000000000000000000003B -S3156002CD90000000000000000000000000000000002B -S3156002CDA0000000000000000000000000000000001B -S3156002CDB0000000000000000000000000000000000B -S3156002CDC000000000000000000000000000000000FB -S3156002CDD000000000000000000000000000000000EB -S3156002CDE000000000000000000000000000000000DB -S3156002CDF000000000000000000000000000000000CB -S3156002CE0000000000000000000000000000000000BA -S3156002CE1000000000000000000000000000000000AA -S3156002CE20000000000000000000000000000000009A -S3156002CE30000000000000000000000000000000008A -S3156002CE40000000000000000000000000000000007A -S3156002CE50000000000000000000000000000000006A -S3156002CE60000000000000000000000000000000005A -S3156002CE70000000000000000000000000000000004A -S3156002CE80000000000000000000000000000000003A -S3156002CE90000000000000000000000000000000002A -S3156002CEA0000000000000000000000000000000001A -S3156002CEB0000000000000000000000000000000000A -S3156002CEC000000000000000000000000000000000FA -S3156002CED000000000000000000000000000000000EA -S3156002CEE000000000000000000000000000000000DA -S3156002CEF000000000000000000000000000000000CA -S3156002CF0000000000000000000000000000000000B9 -S3156002CF1000000000000000000000000000000000A9 -S3156002CF200000000000000000000000000000000099 -S3156002CF300000000000000000000000000000000089 -S3156002CF400000000000000000000000000000000079 -S3156002CF500000000000000000000000000000000069 -S3156002CF600000000000000000000000000000000059 -S3156002CF700000000000000000000000000000000049 -S3156002CF800000000000000000000000000000000039 -S3156002CF900000000000000000000000000000000029 -S3156002CFA00000000000000000000000000000000019 -S3156002CFB00000000000000000000000000000000009 -S3156002CFC000000000000000000000000000000000F9 -S3156002CFD000000000000000000000000000000000E9 -S3156002CFE000000000000000000000000000000000D9 -S3156002CFF000000000000000000000000000000000C9 -S3156002D00000000000000000000000000000000000B8 -S3156002D01000000000000000000000000000000000A8 -S3156002D0200000000000000000000000000000000098 -S3156002D0300000000000000000000000000000000088 -S3156002D0400000000000000000000000000000000078 -S3156002D0500000000000000000000000000000000068 -S3156002D0600000000000000000000000000000000058 -S3156002D0700000000000000000000000000000000048 -S3156002D0800000000000000000000000000000000038 -S3156002D0900000000000000000000000000000000028 -S3156002D0A00000000000000000000000000000000018 -S3156002D0B00000000000000000000000000000000008 -S3156002D0C000000000000000000000000000000000F8 -S3156002D0D000000000000000000000000000000000E8 -S3156002D0E000000000000000000000000000000000D8 -S3156002D0F000000000000000000000000000000000C8 -S3156002D10000000000000000000000000000000000B7 -S3156002D11000000000000000000000000000000000A7 -S3156002D1200000000000000000000000000000000097 -S3156002D1300000000000000000000000000000000087 -S3156002D1400000000000000000000000000000000077 -S3156002D1500000000000000000000000000000000067 -S3156002D1600000000000000000000000000000000057 -S3156002D1700000000000000000000000000000000047 -S3156002D1800000000000000000000000000000000037 -S3156002D1900000000000000000000000000000000027 -S3156002D1A00000000000000000000000000000000017 -S3156002D1B00000000000000000000000000000000007 -S3156002D1C000000000000000000000000000000000F7 -S3156002D1D000000000000000000000000000000000E7 -S3156002D1E000000000000000000000000000000000D7 -S3156002D1F000000000000000000000000000000000C7 -S3156002D20000000000000000000000000000000000B6 -S3156002D21000000000000000000000000000000000A6 -S3156002D2200000000000000000000000000000000096 -S3156002D2300000000000000000000000000000000086 -S3156002D2400000000000000000000000000000000076 -S3156002D2500000000000000000000000000000000066 -S3156002D2600000000000000000000000000000000056 -S3156002D2700000000000000000000000000000000046 -S3156002D2800000000000000000000000000000000036 -S3156002D2900000000000000000000000000000000026 -S3156002D2A00000000000000000000000000000000016 -S3156002D2B00000000000000000000000000000000006 -S3156002D2C000000000000000000000000000000000F6 -S3156002D2D000000000000000000000000000000000E6 -S3156002D2E000000000000000000000000000000000D6 -S3156002D2F000000000000000000000000000000000C6 -S3156002D30000000000000000000000000000000000B5 -S3156002D31000000000000000000000000000000000A5 -S3156002D3200000000000000000000000000000000095 -S3156002D3300000000000000000000000000000000085 -S3156002D3400000000000000000000000000000000075 -S3156002D3500000000000000000000000000000000065 -S3156002D3600000000000000000000000000000000055 -S3156002D3700000000000000000000000000000000045 -S3156002D3800000000000000000000000000000000035 -S3156002D3900000000000000000000000000000000025 -S3156002D3A00000000000000000000000000000000015 -S3156002D3B00000000000000000000000000000000005 -S3156002D3C000000000000000000000000000000000F5 -S3156002D3D000000000000000000000000000000000E5 -S3156002D3E000000000000000000000000000000000D5 -S3156002D3F000000000000000000000000000000000C5 -S3156002D40000000000000000000000000000000000B4 -S3156002D41000000000000000000000000000000000A4 -S3156002D4200000000000000000000000000000000094 -S3156002D4300000000000000000000000000000000084 -S3156002D4400000000000000000000000000000000074 -S3156002D4500000000000000000000000000000000064 -S3156002D4600000000000000000000000000000000054 -S3156002D4700000000000000000000000000000000044 -S3156002D4800000000000000000000000000000000034 -S3156002D4900000000000000000000000000000000024 -S3156002D4A00000000000000000000000000000000014 -S3156002D4B00000000000000000000000000000000004 -S3156002D4C000000000000000000000000000000000F4 -S3156002D4D000000000000000000000000000000000E4 -S3156002D4E000000000000000000000000000000000D4 -S3156002D4F000000000000000000000000000000000C4 -S3156002D50000000000000000000000000000000000B3 -S3156002D51000000000000000000000000000000000A3 -S3156002D5200000000000000000000000000000000093 -S3156002D5300000000000000000000000000000000083 -S3156002D5400000000000000000000000000000000073 -S3156002D5500000000000000000000000000000000063 -S3156002D5600000000000000000000000000000000053 -S3156002D5700000000000000000000000000000000043 -S3156002D5800000000000000000000000000000000033 -S3156002D5900000000000000000000000000000000023 -S3156002D5A00000000000000000000000000000000013 -S3156002D5B00000000000000000000000000000000003 -S3156002D5C000000000000000000000000000000000F3 -S3156002D5D000000000000000000000000000000000E3 -S3156002D5E000000000000000000000000000000000D3 -S3156002D5F000000000000000000000000000000000C3 -S3156002D60000000000000000000000000000000000B2 -S3156002D61000000000000000000000000000000000A2 -S3156002D6200000000000000000000000000000000092 -S3156002D6300000000000000000000000000000000082 -S3156002D6400000000000000000000000000000000072 -S3156002D6500000000000000000000000000000000062 -S3156002D6600000000000000000000000000000000052 -S3156002D6700000000000000000000000000000000042 -S3156002D6800000000000000000000000000000000032 -S3156002D6900000000000000000000000000000000022 -S3156002D6A00000000000000000000000000000000012 -S3156002D6B00000000000000000000000000000000002 -S3156002D6C000000000000000000000000000000000F2 -S3156002D6D000000000000000000000000000000000E2 -S3156002D6E000000000000000000000000000000000D2 -S3156002D6F000000000000000000000000000000000C2 -S3156002D70000000000000000000000000000000000B1 -S3156002D71000000000000000000000000000000000A1 -S3156002D7200000000000000000000000000000000091 -S3156002D7300000000000000000000000000000000081 -S3156002D7400000000000000000000000000000000071 -S3156002D7500000000000000000000000000000000061 -S3156002D7600000000000000000000000000000000051 -S3156002D7700000000000000000000000000000000041 -S3156002D7800000000000000000000000000000000031 -S3156002D7900000000000000000000000000000000021 -S3156002D7A00000000000000000000000000000000011 -S3156002D7B00000000000000000000000000000000001 -S3156002D7C000000000000000000000000000000000F1 -S3156002D7D000000000000000000000000000000000E1 -S3156002D7E000000000000000000000000000000000D1 -S3156002D7F000000000000000000000000000000000C1 -S3156002D80000000000000000000000000000000000B0 -S3156002D81000000000000000000000000000000000A0 -S3156002D8200000000000000000000000000000000090 -S3156002D8300000000000000000000000000000000080 -S3156002D8400000000000000000000000000000000070 -S3156002D8500000000000000000000000000000000060 -S3156002D8600000000000000000000000000000000050 -S3156002D8700000000000000000000000000000000040 -S3156002D8800000000000000000000000000000000030 -S3156002D8900000000000000000000000000000000020 -S3156002D8A00000000000000000000000000000000010 -S3156002D8B00000000000000000000000000000000000 -S3156002D8C000000000000000000000000000000000F0 -S3156002D8D000000000000000000000000000000000E0 -S3156002D8E000000000000000000000000000000000D0 -S3156002D8F000000000000000000000000000000000C0 -S3156002D90000000000000000000000000000000000AF -S3156002D910000000000000000000000000000000009F -S3156002D920000000000000000000000000000000008F -S3156002D930000000000000000000000000000000007F -S3156002D940000000000000000000000000000000006F -S3156002D950000000000000000000000000000000005F -S3156002D960000000000000000000000000000000004F -S3156002D970000000000000000000000000000000003F -S3156002D980000000000000000000000000000000002F -S3156002D990000000000000000000000000000000001F -S3156002D9A0000000000000000000000000000000000F -S3156002D9B000000000000000000000000000000000FF -S3156002D9C000000000000000000000000000000000EF -S3156002D9D000000000000000000000000000000000DF -S3156002D9E000000000000000000000000000000000CF -S3156002D9F000000000000000000000000000000000BF -S3156002DA0000000000000000000000000000000000AE -S3156002DA10000000000000000000000000000000009E -S3156002DA20000000000000000000000000000000008E -S3156002DA30000000000000000000000000000000007E -S3156002DA40000000000000000000000000000000006E -S3156002DA50000000000000000000000000000000005E -S3156002DA60000000000000000000000000000000004E -S3156002DA70000000000000000000000000000000003E -S3156002DA80000000000000000000000000000000002E -S3156002DA90000000000000000000000000000000001E -S3156002DAA0000000000000000000000000000000000E -S3156002DAB000000000000000000000000000000000FE -S3156002DAC000000000000000000000000000000000EE -S3156002DAD000000000000000000000000000000000DE -S3156002DAE000000000000000000000000000000000CE -S3156002DAF000000000000000000000000000000000BE -S3156002DB0000000000000000000000000000000000AD -S3156002DB10000000000000000000000000000000009D -S3156002DB20000000000000000000000000000000008D -S3156002DB30000000000000000000000000000000007D -S3156002DB40000000000000000000000000000000006D -S3156002DB50000000000000000000000000000000005D -S3156002DB60000000000000000000000000000000004D -S3156002DB70000000000000000000000000000000003D -S3156002DB80000000000000000000000000000000002D -S3156002DB90000000000000000000000000000000001D -S3156002DBA0000000000000000000000000000000000D -S3156002DBB000000000000000000000000000000000FD -S3156002DBC000000000000000000000000000000000ED -S3156002DBD000000000000000000000000000000000DD -S3156002DBE000000000000000000000000000000000CD -S3156002DBF000000000000000000000000000000000BD -S3156002DC0000000000000000000000000000000000AC -S3156002DC10000000000000000000000000000000009C -S3156002DC20000000000000000000000000000000008C -S3156002DC30000000000000000000000000000000007C -S3156002DC40000000000000000000000000000000006C -S3156002DC50000000000000000000000000000000005C -S3156002DC60000000000000000000000000000000004C -S3156002DC70000000000000000000000000000000003C -S3156002DC80000000000000000000000000000000002C -S3156002DC90000000000000000000000000000000001C -S3156002DCA0000000000000000000000000000000000C -S3156002DCB000000000000000000000000000000000FC -S3156002DCC000000000000000000000000000000000EC -S3156002DCD000000000000000000000000000000000DC -S3156002DCE000000000000000000000000000000000CC -S3156002DCF000000000000000000000000000000000BC -S3156002DD0000000000000000000000000000000000AB -S3156002DD10000000000000000000000000000000009B -S3156002DD20000000000000000000000000000000008B -S3156002DD30000000000000000000000000000000007B -S3156002DD40000000000000000000000000000000006B -S3156002DD50000000000000000000000000000000005B -S3156002DD60000000000000000000000000000000004B -S3156002DD70000000000000000000000000000000003B -S3156002DD80000000000000000000000000000000002B -S3156002DD90000000000000000000000000000000001B -S3156002DDA0000000000000000000000000000000000B -S3156002DDB000000000000000000000000000000000FB -S3156002DDC000000000000000000000000000000000EB -S3156002DDD000000000000000000000000000000000DB -S3156002DDE000000000000000000000000000000000CB -S3156002DDF000000000000000000000000000000000BB -S3156002DE0000000000000000000000000000000000AA -S3156002DE10000000000000000000000000000000009A -S3156002DE20000000000000000000000000000000008A -S3156002DE30000000000000000000000000000000007A -S3156002DE40000000000000000000000000000000006A -S3156002DE50000000000000000000000000000000005A -S3156002DE60000000000000000000000000000000004A -S3156002DE70000000000000000000000000000000003A -S3156002DE80000000000000000000000000000000002A -S3156002DE90000000000000000000000000000000001A -S3156002DEA0000000000000000000000000000000000A -S3156002DEB000000000000000000000000000000000FA -S3156002DEC000000000000000000000000000000000EA -S3156002DED000000000000000000000000000000000DA -S3156002DEE000000000000000000000000000000000CA -S3156002DEF000000000000000000000000000000000BA -S3156002DF0000000000000000000000000000000000A9 -S3156002DF100000000000000000000000000000000099 -S3156002DF200000000000000000000000000000000089 -S3156002DF300000000000000000000000000000000079 -S3156002DF400000000000000000000000000000000069 -S3156002DF500000000000000000000000000000000059 -S3156002DF600000000000000000000000000000000049 -S3156002DF700000000000000000000000000000000039 -S3156002DF800000000000000000000000000000000029 -S3156002DF900000000000000000000000000000000019 -S3156002DFA00000000000000000000000000000000009 -S3156002DFB000000000000000000000000000000000F9 -S3156002DFC000000000000000000000000000000000E9 -S3156002DFD000000000000000000000000000000000D9 -S3156002DFE000000000000000000000000000000000C9 -S3156002DFF000000000000000000000000000000000B9 -S3156002E00000000000000000000000000000000000A8 -S3156002E0100000000000000000000000000000000098 -S3156002E0200000000000000000000000000000000088 -S3156002E0300000000000000000000000000000000078 -S3156002E0400000000000000000000000000000000068 -S3156002E0500000000000000000000000000000000058 -S3156002E0600000000000000000000000000000000048 -S3156002E0700000000000000000000000000000000038 -S3156002E0800000000000000000000000000000000028 -S3156002E0900000000000000000000000000000000018 -S3156002E0A00000000000000000000000000000000008 -S3156002E0B000000000000000000000000000000000F8 -S3156002E0C000000000000000000000000000000000E8 -S3156002E0D000000000000000000000000000000000D8 -S3156002E0E000000000000000000000000000000000C8 -S3156002E0F000000000000000000000000000000000B8 -S3156002E10000000000000000000000000000000000A7 -S3156002E1100000000000000000000000000000000097 -S3156002E1200000000000000000000000000000000087 -S3156002E1300000000000000000000000000000000077 -S3156002E1400000000000000000000000000000000067 -S3156002E1500000000000000000000000000000000057 -S3156002E1600000000000000000000000000000000047 -S3156002E1700000000000000000000000000000000037 -S3156002E1800000000000000000000000000000000027 -S3156002E1900000000000000000000000000000000017 -S3156002E1A00000000000000000000000000000000007 -S3156002E1B000000000000000000000000000000000F7 -S3156002E1C000000000000000000000000000000000E7 -S3156002E1D000000000000000000000000000000000D7 -S3156002E1E000000000000000000000000000000000C7 -S3156002E1F000000000000000000000000000000000B7 -S3156002E20000000000000000000000000000000000A6 -S3156002E2100000000000000000000000000000000096 -S3156002E2200000000000000000000000000000000086 -S3156002E2300000000000000000000000000000000076 -S3156002E2400000000000000000000000000000000066 -S3156002E2500000000000000000000000000000000056 -S3156002E2600000000000000000000000000000000046 -S3156002E2700000000000000000000000000000000036 -S3156002E2800000000000000000000000000000000026 -S3156002E2900000000000000000000000000000000016 -S3156002E2A00000000000000000000000000000000006 -S3156002E2B000000000000000000000000000000000F6 -S3156002E2C000000000000000000000000000000000E6 -S3156002E2D000000000000000000000000000000000D6 -S3156002E2E000000000000000000000000000000000C6 -S3156002E2F000000000000000000000000000000000B6 -S3156002E30000000000000000000000000000000000A5 -S3156002E3100000000000000000000000000000000095 -S3156002E3200000000000000000000000000000000085 -S3156002E3300000000000000000000000000000000075 -S3156002E3400000000000000000000000000000000065 -S3156002E3500000000000000000000000000000000055 -S3156002E3600000000000000000000000000000000045 -S3156002E3700000000000000000000000000000000035 -S3156002E3800000000000000000000000000000000025 -S3156002E3900000000000000000000000000000000015 -S3156002E3A00000000000000000000000000000000005 -S3156002E3B000000000000000000000000000000000F5 -S3156002E3C000000000000000000000000000000000E5 -S3156002E3D000000000000000000000000000000000D5 -S3156002E3E000000000000000000000000000000000C5 -S3156002E3F000000000000000000000000000000000B5 -S3156002E40000000000000000000000000000000000A4 -S3156002E4100000000000000000000000000000000094 -S3156002E4200000000000000000000000000000000084 -S3156002E4300000000000000000000000000000000074 -S3156002E4400000000000000000000000000000000064 -S3156002E4500000000000000000000000000000000054 -S3156002E4600000000000000000000000000000000044 -S3156002E4700000000000000000000000000000000034 -S3156002E4800000000000000000000000000000000024 -S3156002E4900000000000000000000000000000000014 -S3156002E4A00000000000000000000000000000000004 -S3156002E4B000000000000000000000000000000000F4 -S3156002E4C000000000000000000000000000000000E4 -S3156002E4D000000000000000000000000000000000D4 -S3156002E4E000000000000000000000000000000000C4 -S3156002E4F000000000000000000000000000000000B4 -S3156002E50000000000000000000000000000000000A3 -S3156002E5100000000000000000000000000000000093 -S3156002E5200000000000000000000000000000000083 -S3156002E5300000000000000000000000000000000073 -S3156002E5400000000000000000000000000000000063 -S3156002E5500000000000000000000000000000000053 -S3156002E5600000000000000000000000000000000043 -S3156002E5700000000000000000000000000000000033 -S3156002E5800000000000000000000000000000000023 -S3156002E5900000000000000000000000000000000013 -S3156002E5A00000000000000000000000000000000003 -S3156002E5B000000000000000000000000000000000F3 -S3156002E5C000000000000000000000000000000000E3 -S3156002E5D000000000000000000000000000000000D3 -S3156002E5E000000000000000000000000000000000C3 -S3156002E5F000000000000000000000000000000000B3 -S3156002E60000000000000000000000000000000000A2 -S3156002E6100000000000000000000000000000000092 -S3156002E6200000000000000000000000000000000082 -S3156002E6300000000000000000000000000000000072 -S3156002E6400000000000000000000000000000000062 -S3156002E6500000000000000000000000000000000052 -S3156002E6600000000000000000000000000000000042 -S3156002E6700000000000000000000000000000000032 -S3156002E6800000000000000000000000000000000022 -S3156002E6900000000000000000000000000000000012 -S3156002E6A00000000000000000000000000000000002 -S3156002E6B000000000000000000000000000000000F2 -S3156002E6C000000000000000000000000000000000E2 -S3156002E6D000000000000000000000000000000000D2 -S3156002E6E000000000000000000000000000000000C2 -S3156002E6F000000000000000000000000000000000B2 -S3156002E70000000000000000000000000000000000A1 -S3156002E7100000000000000000000000000000000091 -S3156002E7200000000000000000000000000000000081 -S3156002E7300000000000000000000000000000000071 -S3156002E7400000000000000000000000000000000061 -S3156002E7500000000000000000000000000000000051 -S3156002E7600000000000000000000000000000000041 -S3156002E7700000000000000000000000000000000031 -S3156002E7800000000000000000000000000000000021 -S3156002E7900000000000000000000000000000000011 -S3156002E7A00000000000000000000000000000000001 -S3156002E7B000000000000000000000000000000000F1 -S3156002E7C000000000000000000000000000000000E1 -S3156002E7D000000000000000000000000000000000D1 -S3156002E7E000000000000000000000000000000000C1 -S3156002E7F000000000000000000000000000000000B1 -S3156002E80000000000000000000000000000000000A0 -S3156002E8100000000000000000000000000000000090 -S3156002E8200000000000000000000000000000000080 -S3156002E8300000000000000000000000000000000070 -S3156002E8400000000000000000000000000000000060 -S3156002E8500000000000000000000000000000000050 -S3156002E8600000000000000000000000000000000040 -S3156002E8700000000000000000000000000000000030 -S3156002E8800000000000000000000000000000000020 -S3156002E8900000000000000000000000000000000010 -S3156002E8A00000000000000000000000000000000000 -S3156002E8B000000000000000000000000000000000F0 -S3156002E8C000000000000000000000000000000000E0 -S3156002E8D000000000000000000000000000000000D0 -S3156002E8E000000000000000000000000000000000C0 -S3156002E8F000000000000000000000000000000000B0 -S3156002E900000000000000000000000000000000009F -S3156002E910000000000000000000000000000000008F -S3156002E920000000000000000000000000000000007F -S3156002E930000000000000000000000000000000006F -S3156002E940000000000000000000000000000000005F -S3156002E950000000000000000000000000000000004F -S3156002E960000000000000000000000000000000003F -S3156002E970000000000000000000000000000000002F -S3156002E980000000000000000000000000000000001F -S3156002E990000000000000000000000000000000000F -S3156002E9A000000000000000000000000000000000FF -S3156002E9B000000000000000000000000000000000EF -S3156002E9C000000000000000000000000000000000DF -S3156002E9D000000000000000000000000000000000CF -S3156002E9E000000000000000000000000000000000BF -S3156002E9F000000000000000000000000000000000AF -S3156002EA00000000000000000000000000000000009E -S3156002EA10000000000000000000000000000000008E -S3156002EA20000000000000000000000000000000007E -S3156002EA30000000000000000000000000000000006E -S3156002EA40000000000000000000000000000000005E -S3156002EA50000000000000000000000000000000004E -S3156002EA60000000000000000000000000000000003E -S3156002EA70000000000000000000000000000000002E -S3156002EA80000000000000000000000000000000001E -S3156002EA90000000000000000000000000000000000E -S3156002EAA000000000000000000000000000000000FE -S3156002EAB000000000000000000000000000000000EE -S3156002EAC000000000000000000000000000000000DE -S3156002EAD000000000000000000000000000000000CE -S3156002EAE000000000000000000000000000000000BE -S3156002EAF000000000000000000000000000000000AE -S3156002EB00000000000000000000000000000000009D -S3156002EB10000000000000000000000000000000008D -S3156002EB20000000000000000000000000000000007D -S3156002EB30000000000000000000000000000000006D -S3156002EB40000000000000000000000000000000005D -S3156002EB50000000000000000000000000000000004D -S3156002EB60000000000000000000000000000000003D -S3156002EB70000000000000000000000000000000002D -S3156002EB80000000000000000000000000000000001D -S3156002EB90000000000000000000000000000000000D -S3156002EBA000000000000000000000000000000000FD -S3156002EBB000000000000000000000000000000000ED -S3156002EBC000000000000000000000000000000000DD -S3156002EBD000000000000000000000000000000000CD -S3156002EBE000000000000000000000000000000000BD -S3156002EBF000000000000000000000000000000000AD -S3156002EC00000000000000000000000000000000009C -S3156002EC10000000000000000000000000000000008C -S3156002EC20000000000000000000000000000000007C -S3156002EC30000000000000000000000000000000006C -S3156002EC40000000000000000000000000000000005C -S3156002EC50000000000000000000000000000000004C -S3156002EC60000000000000000000000000000000003C -S3156002EC70000000000000000000000000000000002C -S3156002EC80000000000000000000000000000000001C -S3156002EC90000000000000000000000000000000000C -S3156002ECA000000000000000000000000000000000FC -S3156002ECB000000000000000000000000000000000EC -S3156002ECC000000000000000000000000000000000DC -S3156002ECD000000000000000000000000000000000CC -S3156002ECE000000000000000000000000000000000BC -S3156002ECF000000000000000000000000000000000AC -S3156002ED00000000000000000000000000000000009B -S3156002ED10000000000000000000000000000000008B -S3156002ED20000000000000000000000000000000007B -S3156002ED30000000000000000000000000000000006B -S3156002ED40000000000000000000000000000000005B -S3156002ED50000000000000000000000000000000004B -S3156002ED60000000000000000000000000000000003B -S3156002ED70000000000000000000000000000000002B -S3156002ED80000000000000000000000000000000001B -S3156002ED90000000000000000000000000000000000B -S3156002EDA000000000000000000000000000000000FB -S3156002EDB000000000000000000000000000000000EB -S3156002EDC000000000000000000000000000000000DB -S3156002EDD000000000000000000000000000000000CB -S3156002EDE000000000000000000000000000000000BB -S3156002EDF000000000000000000000000000000000AB -S3156002EE00000000000000000000000000000000009A -S3156002EE10000000000000000000000000000000008A -S3156002EE20000000000000000000000000000000007A -S3156002EE30000000000000000000000000000000006A -S3156002EE40000000000000000000000000000000005A -S3156002EE50000000000000000000000000000000004A -S3156002EE60000000000000000000000000000000003A -S3156002EE70000000000000000000000000000000002A -S3156002EE80000000000000000000000000000000001A -S3156002EE90000000000000000000000000000000000A -S3156002EEA000000000000000000000000000000000FA -S3156002EEB000000000000000000000000000000000EA -S3156002EEC000000000000000000000000000000000DA -S3156002EED000000000000000000000000000000000CA -S3156002EEE000000000000000000000000000000000BA -S3156002EEF000000000000000000000000000000000AA -S3156002EF000000000000000000000000000000000099 -S3156002EF100000000000000000000000000000000089 -S3156002EF200000000000000000000000000000000079 -S3156002EF300000000000000000000000000000000069 -S3156002EF400000000000000000000000000000000059 -S3156002EF500000000000000000000000000000000049 -S3156002EF600000000000000000000000000000000039 -S3156002EF700000000000000000000000000000000029 -S3156002EF800000000000000000000000000000000019 -S3156002EF900000000000000000000000000000000009 -S3156002EFA000000000000000000000000000000000F9 -S3156002EFB000000000000000000000000000000000E9 -S3156002EFC000000000000000000000000000000000D9 -S3156002EFD000000000000000000000000000000000C9 -S3156002EFE000000000000000000000000000000000B9 -S3156002EFF000000000000000000000000000000000A9 -S3156002F0000000000000000000000000000000000098 -S3156002F0100000000000000000000000000000000088 -S3156002F0200000000000000000000000000000000078 -S3156002F0300000000000000000000000000000000068 -S3156002F0400000000000000000000000000000000058 -S3156002F0500000000000000000000000000000000048 -S3156002F0600000000000000000000000000000000038 -S3156002F0700000000000000000000000000000000028 -S3156002F0800000000000000000000000000000000018 -S3156002F0900000000000000000000000000000000008 -S3156002F0A000000000000000000000000000000000F8 -S3156002F0B000000000000000000000000000000000E8 -S3156002F0C000000000000000000000000000000000D8 -S3156002F0D000000000000000000000000000000000C8 -S3156002F0E000000000000000000000000000000000B8 -S3156002F0F000000000000000000000000000000000A8 -S3156002F1000000000000000000000000000000000097 -S3156002F1100000000000000000000000000000000087 -S3156002F1200000000000000000000000000000000077 -S3156002F1300000000000000000000000000000000067 -S3156002F1400000000000000000000000000000000057 -S3156002F1500000000000000000000000000000000047 -S3156002F1600000000000000000000000000000000037 -S3156002F1700000000000000000000000000000000027 -S3156002F1800000000000000000000000000000000017 -S3156002F1900000000000000000000000000000000007 -S3156002F1A000000000000000000000000000000000F7 -S3156002F1B000000000000000000000000000000000E7 -S3156002F1C000000000000000000000000000000000D7 -S3156002F1D000000000000000000000000000000000C7 -S3156002F1E000000000000000000000000000000000B7 -S3156002F1F000000000000000000000000000000000A7 -S3156002F2000000000000000000000000000000000096 -S3156002F2100000000000000000000000000000000086 -S3156002F2200000000000000000000000000000000076 -S3156002F2300000000000000000000000000000000066 -S3156002F2400000000000000000000000000000000056 -S3156002F2500000000000000000000000000000000046 -S3156002F2600000000000000000000000000000000036 -S3156002F2700000000000000000000000000000000026 -S3156002F2800000000000000000000000000000000016 -S3156002F2900000000000000000000000000000000006 -S3156002F2A000000000000000000000000000000000F6 -S3156002F2B000000000000000000000000000000000E6 -S3156002F2C000000000000000000000000000000000D6 -S3156002F2D000000000000000000000000000000000C6 -S3156002F2E000000000000000000000000000000000B6 -S3156002F2F000000000000000000000000000000000A6 -S3156002F3000000000000000000000000000000000095 -S3156002F3100000000000000000000000000000000085 -S3156002F3200000000000000000000000000000000075 -S3156002F3300000000000000000000000000000000065 -S3156002F3400000000000000000000000000000000055 -S3156002F3500000000000000000000000000000000045 -S3156002F3600000000000000000000000000000000035 -S3156002F3700000000000000000000000000000000025 -S3156002F3800000000000000000000000000000000015 -S3156002F3900000000000000000000000000000000005 -S3156002F3A000000000000000000000000000000000F5 -S3156002F3B000000000000000000000000000000000E5 -S3156002F3C000000000000000000000000000000000D5 -S3156002F3D000000000000000000000000000000000C5 -S3156002F3E000000000000000000000000000000000B5 -S3156002F3F000000000000000000000000000000000A5 -S3156002F4000000000000000000000000000000000094 -S3156002F4100000000000000000000000000000000084 -S3156002F4200000000000000000000000000000000074 -S3156002F4300000000000000000000000000000000064 -S3156002F4400000000000000000000000000000000054 -S3156002F4500000000000000000000000000000000044 -S3156002F4600000000000000000000000000000000034 -S3156002F4700000000000000000000000000000000024 -S3156002F4800000000000000000000000000000000014 -S3156002F4900000000000000000000000000000000004 -S3156002F4A000000000000000000000000000000000F4 -S3156002F4B000000000000000000000000000000000E4 -S3156002F4C000000000000000000000000000000000D4 -S3156002F4D000000000000000000000000000000000C4 -S3156002F4E000000000000000000000000000000000B4 -S3156002F4F000000000000000000000000000000000A4 -S3156002F5000000000000000000000000000000000093 -S3156002F5100000000000000000000000000000000083 -S3156002F5200000000000000000000000000000000073 -S3156002F5300000000000000000000000000000000063 -S3156002F5400000000000000000000000000000000053 -S3156002F5500000000000000000000000000000000043 -S3156002F5600000000000000000000000000000000033 -S3156002F5700000000000000000000000000000000023 -S3156002F5800000000000000000000000000000000013 -S3156002F5900000000000000000000000000000000003 -S3156002F5A000000000000000000000000000000000F3 -S3156002F5B000000000000000000000000000000000E3 -S3156002F5C000000000000000000000000000000000D3 -S3156002F5D000000000000000000000000000000000C3 -S3156002F5E000000000000000000000000000000000B3 -S3156002F5F000000000000000000000000000000000A3 -S3156002F6000000000000000000000000000000000092 -S3156002F6100000000000000000000000000000000082 -S3156002F6200000000000000000000000000000000072 -S3156002F6300000000000000000000000000000000062 -S3156002F6400000000000000000000000000000000052 -S3156002F6500000000000000000000000000000000042 -S3156002F6600000000000000000000000000000000032 -S3156002F6700000000000000000000000000000000022 -S3156002F6800000000000000000000000000000000012 -S3156002F6900000000000000000000000000000000002 -S3156002F6A000000000000000000000000000000000F2 -S3156002F6B000000000000000000000000000000000E2 -S3156002F6C000000000000000000000000000000000D2 -S3156002F6D000000000000000000000000000000000C2 -S3156002F6E000000000000000000000000000000000B2 -S3156002F6F000000000000000000000000000000000A2 -S3156002F7000000000000000000000000000000000091 -S3156002F7100000000000000000000000000000000081 -S3156002F7200000000000000000000000000000000071 -S3156002F7300000000000000000000000000000000061 -S3156002F7400000000000000000000000000000000051 -S3156002F7500000000000000000000000000000000041 -S3156002F7600000000000000000000000000000000031 -S3156002F7700000000000000000000000000000000021 -S3156002F7800000000000000000000000000000000011 -S3156002F7900000000000000000000000000000000001 -S3156002F7A000000000000000000000000000000000F1 -S3156002F7B000000000000000000000000000000000E1 -S3156002F7C000000000000000000000000000000000D1 -S3156002F7D000000000000000000000000000000000C1 -S3156002F7E000000000000000000000000000000000B1 -S3156002F7F000000000000000000000000000000000A1 -S3156002F8000000000000000000000000000000000090 -S3156002F8100000000000000000000000000000000080 -S3156002F8200000000000000000000000000000000070 -S3156002F8300000000000000000000000000000000060 -S3156002F8400000000000000000000000000000000050 -S3156002F8500000000000000000000000000000000040 -S3156002F8600000000000000000000000000000000030 -S3156002F8700000000000000000000000000000000020 -S3156002F8800000000000000000000000000000000010 -S3156002F8900000000000000000000000000000000000 -S3156002F8A000000000000000000000000000000000F0 -S3156002F8B000000000000000000000000000000000E0 -S3156002F8C000000000000000000000000000000000D0 -S3156002F8D000000000000000000000000000000000C0 -S3156002F8E000000000000000000000000000000000B0 -S3156002F8F000000000000000000000000000000000A0 -S3156002F900000000000000000000000000000000008F -S3156002F910000000000000000000000000000000007F -S3156002F920000000000000000000000000000000006F -S3156002F930000000000000000000000000000000005F -S3156002F940000000000000000000000000000000004F -S3156002F950000000000000000000000000000000003F -S3156002F960000000000000000000000000000000002F -S3156002F970000000000000000000000000000000001F -S3156002F980000000000000000000000000000000000F -S3156002F99000000000000000000000000000000000FF -S3156002F9A000000000000000000000000000000000EF -S3156002F9B000000000000000000000000000000000DF -S3156002F9C000000000000000000000000000000000CF -S3156002F9D000000000000000000000000000000000BF -S3156002F9E000000000000000000000000000000000AF -S3156002F9F0000000000000000000000000000000009F -S3156002FA00000000000000000000000000000000008E -S3156002FA10000000000000000000000000000000007E -S3156002FA20000000000000000000000000000000006E -S3156002FA30000000000000000000000000000000005E -S3156002FA40000000000000000000000000000000004E -S3156002FA50000000000000000000000000000000003E -S3156002FA60000000000000000000000000000000002E -S3156002FA70000000000000000000000000000000001E -S3156002FA80000000000000000000000000000000000E -S3156002FA9000000000000000000000000000000000FE -S3156002FAA000000000000000000000000000000000EE -S3156002FAB000000000000000000000000000000000DE -S3156002FAC000000000000000000000000000000000CE -S3156002FAD000000000000000000000000000000000BE -S3156002FAE000000000000000000000000000000000AE -S3156002FAF0000000000000000000000000000000009E -S3156002FB00000000000000000000000000000000008D -S3156002FB10000000000000000000000000000000007D -S3156002FB20000000000000000000000000000000006D -S3156002FB30000000000000000000000000000000005D -S3156002FB40000000000000000000000000000000004D -S3156002FB50000000000000000000000000000000003D -S3156002FB60000000000000000000000000000000002D -S3156002FB70000000000000000000000000000000001D -S3156002FB80000000000000000000000000000000000D -S3156002FB9000000000000000000000000000000000FD -S3156002FBA000000000000000000000000000000000ED -S3156002FBB000000000000000000000000000000000DD -S3156002FBC000000000000000000000000000000000CD -S3156002FBD000000000000000000000000000000000BD -S3156002FBE000000000000000000000000000000000AD -S3156002FBF0000000000000000000000000000000009D -S3156002FC00000000000000000000000000000000008C -S3156002FC10000000000000000000000000000000007C -S3156002FC20000000000000000000000000000000006C -S3156002FC30000000000000000000000000000000005C -S3156002FC40000000000000000000000000000000004C -S3156002FC50000000000000000000000000000000003C -S3156002FC60000000000000000000000000000000002C -S3156002FC70000000000000000000000000000000001C -S3156002FC80000000000000000000000000000000000C -S3156002FC9000000000000000000000000000000000FC -S3156002FCA000000000000000000000000000000000EC -S3156002FCB000000000000000000000000000000000DC -S3156002FCC000000000000000000000000000000000CC -S3156002FCD000000000000000000000000000000000BC -S3156002FCE000000000000000000000000000000000AC -S3156002FCF0000000000000000000000000000000009C -S3156002FD00000000000000000000000000000000008B -S3156002FD10000000000000000000000000000000007B -S3156002FD20000000000000000000000000000000006B -S3156002FD30000000000000000000000000000000005B -S3156002FD40000000000000000000000000000000004B -S3156002FD50000000000000000000000000000000003B -S3156002FD60000000000000000000000000000000002B -S3156002FD70000000000000000000000000000000001B -S3156002FD80000000000000000000000000000000000B -S3156002FD9000000000000000000000000000000000FB -S3156002FDA000000000000000000000000000000000EB -S3156002FDB000000000000000000000000000000000DB -S3156002FDC000000000000000000000000000000000CB -S3156002FDD000000000000000000000000000000000BB -S3156002FDE000000000000000000000000000000000AB -S3156002FDF0000000000000000000000000000000009B -S3156002FE00000000000000000000000000000000008A -S3156002FE10000000000000000000000000000000007A -S3156002FE20000000000000000000000000000000006A -S3156002FE30000000000000000000000000000000005A -S3156002FE40000000000000000000000000000000004A -S3156002FE50000000000000000000000000000000003A -S3156002FE60000000000000000000000000000000002A -S3156002FE70000000000000000000000000000000001A -S3156002FE80000000000000000000000000000000000A -S3156002FE9000000000000000000000000000000000FA -S3156002FEA000000000000000000000000000000000EA -S3156002FEB000000000000000000000000000000000DA -S3156002FEC000000000000000000000000000000000CA -S3156002FED000000000000000000000000000000000BA -S3156002FEE000000000000000000000000000000000AA -S3156002FEF0000000000000000000000000000000009A -S3156002FF000000000000000000000000000000000089 -S3156002FF100000000000000000000000000000000079 -S3156002FF200000000000000000000000000000000069 -S3156002FF300000000000000000000000000000000059 -S3156002FF400000000000000000000000000000000049 -S3156002FF500000000000000000000000000000000039 -S3156002FF600000000000000000000000000000000029 -S3156002FF700000000000000000000000000000000019 -S3156002FF800000000000000000000000000000000009 -S3156002FF9000000000000000000000000000000000F9 -S3156002FFA000000000000000000000000000000000E9 -S3156002FFB000000000000000000000000000000000D9 -S3156002FFC000000000000000000000000000000000C9 -S3156002FFD000000000000000000000000000000000B9 -S3156002FFE000000000000000000000000000000000A9 -S3156002FFF00000000000000000000000000000000099 -S315600300000000000000000000000000000000000087 -S315600300100000000000000000000000000000000077 -S315600300200000000000000000000000000000000067 -S315600300300000000000000000000000000000000057 -S315600300400000000000000000000000000000000047 -S315600300500000000000000000000000000000000037 -S315600300600000000000000000000000000000000027 -S315600300700000000000000000000000000000000017 -S315600300800000000000000000000000000000000007 -S3156003009000000000000000000000000000000000F7 -S315600300A000000000000000000000000000000000E7 -S315600300B000000000000000000000000000000000D7 -S315600300C000000000000000000000000000000000C7 -S315600300D000000000000000000000000000000000B7 -S315600300E000000000000000000000000000000000A7 -S315600300F00000000000000000000000000000000097 -S315600301000000000000000000000000000000000086 -S315600301100000000000000000000000000000000076 -S315600301200000000000000000000000000000000066 -S315600301300000000000000000000000000000000056 -S315600301400000000000000000000000000000000046 -S315600301500000000000000000000000000000000036 -S315600301600000000000000000000000000000000026 -S315600301700000000000000000000000000000000016 -S315600301800000000000000000000000000000000006 -S3156003019000000000000000000000000000000000F6 -S315600301A000000000000000000000000000000000E6 -S315600301B000000000000000000000000000000000D6 -S315600301C000000000000000000000000000000000C6 -S315600301D000000000000000000000000000000000B6 -S315600301E000000000000000000000000000000000A6 -S315600301F00000000000000000000000000000000096 -S315600302000000000000000000000000000000000085 -S315600302100000000000000000000000000000000075 -S315600302200000000000000000000000000000000065 -S315600302300000000000000000000000000000000055 -S315600302400000000000000000000000000000000045 -S315600302500000000000000000000000000000000035 -S315600302600000000000000000000000000000000025 -S315600302700000000000000000000000000000000015 -S315600302800000000000000000000000000000000005 -S3156003029000000000000000000000000000000000F5 -S315600302A000000000000000000000000000000000E5 -S315600302B000000000000000000000000000000000D5 -S315600302C000000000000000000000000000000000C5 -S315600302D000000000000000000000000000000000B5 -S315600302E000000000000000000000000000000000A5 -S315600302F00000000000000000000000000000000095 -S315600303000000000000000000000000000000000084 -S315600303100000000000000000000000000000000074 -S315600303200000000000000000000000000000000064 -S315600303300000000000000000000000000000000054 -S315600303400000000000000000000000000000000044 -S315600303500000000000000000000000000000000034 -S315600303600000000000000000000000000000000024 -S315600303700000000000000000000000000000000014 -S315600303800000000000000000000000000000000004 -S3156003039000000000000000000000000000000000F4 -S315600303A000000000000000000000000000000000E4 -S315600303B000000000000000000000000000000000D4 -S315600303C000000000000000000000000000000000C4 -S315600303D000000000000000000000000000000000B4 -S315600303E000000000000000000000000000000000A4 -S315600303F00000000000000000000000000000000094 -S315600304000000000000000000000000000000000083 -S315600304100000000000000000000000000000000073 -S315600304200000000000000000000000000000000063 -S315600304300000000000000000000000000000000053 -S315600304400000000000000000000000000000000043 -S315600304500000000000000000000000000000000033 -S315600304600000000000000000000000000000000023 -S315600304700000000000000000000000000000000013 -S315600304800000000000000000000000000000000003 -S3156003049000000000000000000000000000000000F3 -S315600304A000000000000000000000000000000000E3 -S315600304B000000000000000000000000000000000D3 -S315600304C000000000000000000000000000000000C3 -S315600304D000000000000000000000000000000000B3 -S315600304E000000000000000000000000000000000A3 -S315600304F00000000000000000000000000000000093 -S315600305000000000000000000000000000000000082 -S315600305100000000000000000000000000000000072 -S315600305200000000000000000000000000000000062 -S315600305300000000000000000000000000000000052 -S315600305400000000000000000000000000000000042 -S315600305500000000000000000000000000000000032 -S315600305600000000000000000000000000000000022 -S315600305700000000000000000000000000000000012 -S315600305800000000000000000000000000000000002 -S3156003059000000000000000000000000000000000F2 -S315600305A000000000000000000000000000000000E2 -S315600305B000000000000000000000000000000000D2 -S315600305C000000000000000000000000000000000C2 -S315600305D000000000000000000000000000000000B2 -S315600305E000000000000000000000000000000000A2 -S315600305F00000000000000000000000000000000092 -S315600306000000000000000000000000000000000081 -S315600306100000000000000000000000000000000071 -S315600306200000000000000000000000000000000061 -S315600306300000000000000000000000000000000051 -S315600306400000000000000000000000000000000041 -S315600306500000000000000000000000000000000031 -S315600306600000000000000000000000000000000021 -S315600306700000000000000000000000000000000011 -S315600306800000000000000000000000000000000001 -S3156003069000000000000000000000000000000000F1 -S315600306A000000000000000000000000000000000E1 -S315600306B000000000000000000000000000000000D1 -S315600306C000000000000000000000000000000000C1 -S315600306D000000000000000000000000000000000B1 -S315600306E000000000000000000000000000000000A1 -S315600306F00000000000000000000000000000000091 -S315600307000000000000000000000000000000000080 -S315600307100000000000000000000000000000000070 -S315600307200000000000000000000000000000000060 -S315600307300000000000000000000000000000000050 -S315600307400000000000000000000000000000000040 -S315600307500000000000000000000000000000000030 -S315600307600000000000000000000000000000000020 -S315600307700000000000000000000000000000000010 -S315600307800000000000000000000000000000000000 -S3156003079000000000000000000000000000000000F0 -S315600307A000000000000000000000000000000000E0 -S315600307B000000000000000000000000000000000D0 -S315600307C000000000000000000000000000000000C0 -S315600307D000000000000000000000000000000000B0 -S315600307E000000000000000000000000000000000A0 -S315600307F00000000000000000000000000000000090 -S31560030800000000000000000000000000000000007F -S31560030810000000000000000000000000000000006F -S31560030820000000000000000000000000000000005F -S31560030830000000000000000000000000000000004F -S31560030840000000000000000000000000000000003F -S31560030850000000000000000000000000000000002F -S31560030860000000000000000000000000000000001F -S31560030870000000000000000000000000000000000F -S3156003088000000000000000000000000000000000FF -S3156003089000000000000000000000000000000000EF -S315600308A000000000000000000000000000000000DF -S315600308B000000000000000000000000000000000CF -S315600308C000000000000000000000000000000000BF -S315600308D000000000000000000000000000000000AF -S315600308E0000000000000000000000000000000009F -S315600308F0000000000000000000000000000000008F -S31560030900000000000000000000000000000000007E -S31560030910000000000000000000000000000000006E -S31560030920000000000000000000000000000000005E -S31560030930000000000000000000000000000000004E -S31560030940000000000000000000000000000000003E -S31560030950000000000000000000000000000000002E -S31560030960000000000000000000000000000000001E -S31560030970000000000000000000000000000000000E -S3156003098000000000000000000000000000000000FE -S3156003099000000000000000000000000000000000EE -S315600309A000000000000000000000000000000000DE -S315600309B000000000000000000000000000000000CE -S315600309C000000000000000000000000000000000BE -S315600309D000000000000000000000000000000000AE -S315600309E0000000000000000000000000000000009E -S315600309F0000000000000000000000000000000008E -S31560030A00000000000000000000000000000000007D -S31560030A10000000000000000000000000000000006D -S31560030A20000000000000000000000000000000005D -S31560030A30000000000000000000000000000000004D -S31560030A40000000000000000000000000000000003D -S31560030A50000000000000000000000000000000002D -S31560030A60000000000000000000000000000000001D -S31560030A70000000000000000000000000000000000D -S31560030A8000000000000000000000000000000000FD -S31560030A9000000000000000000000000000000000ED -S31560030AA000000000000000000000000000000000DD -S31560030AB000000000000000000000000000000000CD -S31560030AC000000000000000000000000000000000BD -S31560030AD000000000000000000000000000000000AD -S31560030AE0000000000000000000000000000000009D -S31560030AF0000000000000000000000000000000008D -S31560030B00000000000000000000000000000000007C -S31560030B10000000000000000000000000000000006C -S31560030B20000000000000000000000000000000005C -S31560030B30000000000000000000000000000000004C -S31560030B40000000000000000000000000000000003C -S31560030B50000000000000000000000000000000002C -S31560030B60000000000000000000000000000000001C -S31560030B70000000000000000000000000000000000C -S31560030B8000000000000000000000000000000000FC -S31560030B9000000000000000000000000000000000EC -S31560030BA000000000000000000000000000000000DC -S31560030BB000000000000000000000000000000000CC -S31560030BC000000000000000000000000000000000BC -S31560030BD000000000000000000000000000000000AC -S31560030BE0000000000000000000000000000000009C -S31560030BF0000000000000000000000000000000008C -S31560030C00000000000000000000000000000000007B -S31560030C10000000000000000000000000000000006B -S31560030C20000000000000000000000000000000005B -S31560030C30000000000000000000000000000000004B -S31560030C40000000000000000000000000000000003B -S31560030C50000000000000000000000000000000002B -S31560030C60000000000000000000000000000000001B -S31560030C70000000000000000000000000000000000B -S31560030C8000000000000000000000000000000000FB -S31560030C9000000000000000000000000000000000EB -S31560030CA000000000000000000000000000000000DB -S31560030CB000000000000000000000000000000000CB -S31560030CC000000000000000000000000000000000BB -S31560030CD000000000000000000000000000000000AB -S31560030CE0000000000000000000000000000000009B -S31560030CF0000000000000000000000000000000008B -S31560030D00000000000000000000000000000000007A -S31560030D10000000000000000000000000000000006A -S31560030D20000000000000000000000000000000005A -S31560030D30000000000000000000000000000000004A -S31560030D40000000000000000000000000000000003A -S31560030D50000000000000000000000000000000002A -S31560030D60000000000000000000000000000000001A -S31560030D70000000000000000000000000000000000A -S31560030D8000000000000000000000000000000000FA -S31560030D9000000000000000000000000000000000EA -S31560030DA000000000000000000000000000000000DA -S31560030DB000000000000000000000000000000000CA -S31560030DC000000000000000000000000000000000BA -S31560030DD000000000000000000000000000000000AA -S31560030DE0000000000000000000000000000000009A -S31560030DF0000000000000000000000000000000008A -S31560030E000000000000000000000000000000000079 -S31560030E100000000000000000000000000000000069 -S31560030E200000000000000000000000000000000059 -S31560030E300000000000000000000000000000000049 -S31560030E400000000000000000000000000000000039 -S31560030E500000000000000000000000000000000029 -S31560030E600000000000000000000000000000000019 -S31560030E700000000000000000000000000000000009 -S31560030E8000000000000000000000000000000000F9 -S31560030E9000000000000000000000000000000000E9 -S31560030EA000000000000000000000000000000000D9 -S31560030EB000000000000000000000000000000000C9 -S31560030EC000000000000000000000000000000000B9 -S31560030ED000000000000000000000000000000000A9 -S31560030EE00000000000000000000000000000000099 -S31560030EF00000000000000000000000000000000089 -S31560030F000000000000000000000000000000000078 -S31560030F100000000000000000000000000000000068 -S31560030F200000000000000000000000000000000058 -S31560030F300000000000000000000000000000000048 -S31560030F400000000000000000000000000000000038 -S31560030F500000000000000000000000000000000028 -S31560030F600000000000000000000000000000000018 -S31560030F700000000000000000000000000000000008 -S31560030F8000000000000000000000000000000000F8 -S31560030F9000000000000000000000000000000000E8 -S31560030FA000000000000000000000000000000000D8 -S31560030FB000000000000000000000000000000000C8 -S31560030FC000000000000000000000000000000000B8 -S31560030FD000000000000000000000000000000000A8 -S31560030FE00000000000000000000000000000000098 -S31560030FF00000000000000000000000000000000088 -S315600310000000000000000000000000000000000077 -S315600310100000000000000000000000000000000067 -S315600310200000000000000000000000000000000057 -S315600310300000000000000000000000000000000047 -S315600310400000000000000000000000000000000037 -S315600310500000000000000000000000000000000027 -S315600310600000000000000000000000000000000017 -S315600310700000000000000000000000000000000007 -S3156003108000000000000000000000000000000000F7 -S3156003109000000000000000000000000000000000E7 -S315600310A000000000000000000000000000000000D7 -S315600310B000000000000000000000000000000000C7 -S315600310C000000000000000000000000000000000B7 -S315600310D000000000000000000000000000000000A7 -S315600310E00000000000000000000000000000000097 -S315600310F00000000000000000000000000000000087 -S315600311000000000000000000000000000000000076 -S315600311100000000000000000000000000000000066 -S315600311200000000000000000000000000000000056 -S315600311300000000000000000000000000000000046 -S315600311400000000000000000000000000000000036 -S315600311500000000000000000000000000000000026 -S315600311600000000000000000000000000000000016 -S315600311700000000000000000000000000000000006 -S3156003118000000000000000000000000000000000F6 -S3156003119000000000000000000000000000000000E6 -S315600311A000000000000000000000000000000000D6 -S315600311B000000000000000000000000000000000C6 -S315600311C000000000000000000000000000000000B6 -S315600311D000000000000000000000000000000000A6 -S315600311E00000000000000000000000000000000096 -S315600311F00000000000000000000000000000000086 -S315600312000000000000000000000000000000000075 -S315600312100000000000000000000000000000000065 -S315600312200000000000000000000000000000000055 -S315600312300000000000000000000000000000000045 -S315600312400000000000000000000000000000000035 -S315600312500000000000000000000000000000000025 -S315600312600000000000000000000000000000000015 -S315600312700000000000000000000000000000000005 -S3156003128000000000000000000000000000000000F5 -S3156003129000000000000000000000000000000000E5 -S315600312A000000000000000000000000000000000D5 -S315600312B000000000000000000000000000000000C5 -S315600312C000000000000000000000000000000000B5 -S315600312D000000000000000000000000000000000A5 -S315600312E00000000000000000000000000000000095 -S315600312F00000000000000000000000000000000085 -S315600313000000000000000000000000000000000074 -S315600313100000000000000000000000000000000064 -S315600313200000000000000000000000000000000054 -S315600313300000000000000000000000000000000044 -S315600313400000000000000000000000000000000034 -S315600313500000000000000000000000000000000024 -S315600313600000000000000000000000000000000014 -S315600313700000000000000000000000000000000004 -S3156003138000000000000000000000000000000000F4 -S3156003139000000000000000000000000000000000E4 -S315600313A000000000000000000000000000000000D4 -S315600313B000000000000000000000000000000000C4 -S315600313C000000000000000000000000000000000B4 -S315600313D000000000000000000000000000000000A4 -S315600313E00000000000000000000000000000000094 -S315600313F00000000000000000000000000000000084 -S315600314000000000000000000000000000000000073 -S315600314100000000000000000000000000000000063 -S315600314200000000000000000000000000000000053 -S315600314300000000000000000000000000000000043 -S315600314400000000000000000000000000000000033 -S315600314500000000000000000000000000000000023 -S315600314600000000000000000000000000000000013 -S315600314700000000000000000000000000000000003 -S3156003148000000000000000000000000000000000F3 -S3156003149000000000000000000000000000000000E3 -S315600314A000000000000000000000000000000000D3 -S315600314B000000000000000000000000000000000C3 -S315600314C000000000000000000000000000000000B3 -S315600314D000000000000000000000000000000000A3 -S315600314E00000000000000000000000000000000093 -S315600314F00000000000000000000000000000000083 -S315600315000000000000000000000000000000000072 -S315600315100000000000000000000000000000000062 -S315600315200000000000000000000000000000000052 -S315600315300000000000000000000000000000000042 -S315600315400000000000000000000000000000000032 -S315600315500000000000000000000000000000000022 -S315600315600000000000000000000000000000000012 -S315600315700000000000000000000000000000000002 -S3156003158000000000000000000000000000000000F2 -S3156003159000000000000000000000000000000000E2 -S315600315A000000000000000000000000000000000D2 -S315600315B000000000000000000000000000000000C2 -S315600315C000000000000000000000000000000000B2 -S315600315D000000000000000000000000000000000A2 -S315600315E00000000000000000000000000000000092 -S315600315F00000000000000000000000000000000082 -S315600316000000000000000000000000000000000071 -S315600316100000000000000000000000000000000061 -S315600316200000000000000000000000000000000051 -S315600316300000000000000000000000000000000041 -S315600316400000000000000000000000000000000031 -S315600316500000000000000000000000000000000021 -S315600316600000000000000000000000000000000011 -S315600316700000000000000000000000000000000001 -S3156003168000000000000000000000000000000000F1 -S3156003169000000000000000000000000000000000E1 -S315600316A000000000000000000000000000000000D1 -S315600316B000000000000000000000000000000000C1 -S315600316C000000000000000000000000000000000B1 -S315600316D000000000000000000000000000000000A1 -S315600316E00000000000000000000000000000000091 -S315600316F00000000000000000000000000000000081 -S315600317000000000000000000000000000000000070 -S315600317100000000000000000000000000000000060 -S315600317200000000000000000000000000000000050 -S315600317300000000000000000000000000000000040 -S315600317400000000000000000000000000000000030 -S315600317500000000000000000000000000000000020 -S315600317600000000000000000000000000000000010 -S315600317700000000000000000000000000000000000 -S3156003178000000000000000000000000000000000F0 -S3156003179000000000000000000000000000000000E0 -S315600317A000000000000000000000000000000000D0 -S315600317B000000000000000000000000000000000C0 -S315600317C000000000000000000000000000000000B0 -S315600317D000000000000000000000000000000000A0 -S315600317E00000000000000000000000000000000090 -S315600317F00000000000000000000000000000000080 -S31560031800000000000000000000000000000000006F -S31560031810000000000000000000000000000000005F -S31560031820000000000000000000000000000000004F -S31560031830000000000000000000000000000000003F -S31560031840000000000000000000000000000000002F -S31560031850000000000000000000000000000000001F -S31560031860000000000000000000000000000000000F -S3156003187000000000000000000000000000000000FF -S3156003188000000000000000000000000000000000EF -S3156003189000000000000000000000000000000000DF -S315600318A000000000000000000000000000000000CF -S315600318B000000000000000000000000000000000BF -S315600318C000000000000000000000000000000000AF -S315600318D0000000000000000000000000000000009F -S315600318E0000000000000000000000000000000008F -S315600318F0000000000000000000000000000000007F -S31560031900000000000000000000000000000000006E -S31560031910000000000000000000000000000000005E -S31560031920000000000000000000000000000000004E -S31560031930000000000000000000000000000000003E -S31560031940000000000000000000000000000000002E -S31560031950000000000000000000000000000000001E -S31560031960000000000000000000000000000000000E -S3156003197000000000000000000000000000000000FE -S3156003198000000000000000000000000000000000EE -S3156003199000000000000000000000000000000000DE -S315600319A000000000000000000000000000000000CE -S315600319B000000000000000000000000000000000BE -S315600319C000000000000000000000000000000000AE -S315600319D0000000000000000000000000000000009E -S315600319E0000000000000000000000000000000008E -S315600319F0000000000000000000000000000000007E -S31560031A00000000000000000000000000000000006D -S31560031A10000000000000000000000000000000005D -S31560031A20000000000000000000000000000000004D -S31560031A30000000000000000000000000000000003D -S31560031A40000000000000000000000000000000002D -S31560031A50000000000000000000000000000000001D -S31560031A60000000000000000000000000000000000D -S31560031A7000000000000000000000000000000000FD -S31560031A8000000000000000000000000000000000ED -S31560031A9000000000000000000000000000000000DD -S31560031AA000000000000000000000000000000000CD -S31560031AB000000000000000000000000000000000BD -S31560031AC000000000000000000000000000000000AD -S31560031AD0000000000000000000000000000000009D -S31560031AE0000000000000000000000000000000008D -S31560031AF0000000000000000000000000000000007D -S31560031B00000000000000000000000000000000006C -S31560031B10000000000000000000000000000000005C -S31560031B20000000000000000000000000000000004C -S31560031B30000000000000000000000000000000003C -S31560031B40000000000000000000000000000000002C -S31560031B50000000000000000000000000000000001C -S31560031B60000000000000000000000000000000000C -S31560031B7000000000000000000000000000000000FC -S31560031B8000000000000000000000000000000000EC -S31560031B9000000000000000000000000000000000DC -S31560031BA000000000000000000000000000000000CC -S31560031BB000000000000000000000000000000000BC -S31560031BC000000000000000000000000000000000AC -S31560031BD0000000000000000000000000000000009C -S31560031BE0000000000000000000000000000000008C -S31560031BF0000000000000000000000000000000007C -S31560031C00000000000000000000000000000000006B -S31560031C10000000000000000000000000000000005B -S31560031C20000000000000000000000000000000004B -S31560031C30000000000000000000000000000000003B -S31560031C40000000000000000000000000000000002B -S31560031C50000000000000000000000000000000001B -S31560031C60000000000000000000000000000000000B -S31560031C7000000000000000000000000000000000FB -S31560031C8000000000000000000000000000000000EB -S31560031C9000000000000000000000000000000000DB -S31560031CA000000000000000000000000000000000CB -S31560031CB000000000000000000000000000000000BB -S31560031CC000000000000000000000000000000000AB -S31560031CD0000000000000000000000000000000009B -S31560031CE0000000000000000000000000000000008B -S31560031CF0000000000000000000000000000000007B -S31560031D00000000000000000000000000000000006A -S31560031D10000000000000000000000000000000005A -S31560031D20000000000000000000000000000000004A -S31560031D30000000000000000000000000000000003A -S31560031D40000000000000000000000000000000002A -S31560031D50000000000000000000000000000000001A -S31560031D60000000000000000000000000000000000A -S31560031D7000000000000000000000000000000000FA -S31560031D8000000000000000000000000000000000EA -S31560031D9000000000000000000000000000000000DA -S31560031DA000000000000000000000000000000000CA -S31560031DB000000000000000000000000000000000BA -S31560031DC000000000000000000000000000000000AA -S31560031DD0000000000000000000000000000000009A -S31560031DE0000000000000000000000000000000008A -S31560031DF0000000000000000000000000000000007A -S31560031E000000000000000000000000000000000069 -S31560031E100000000000000000000000000000000059 -S31560031E200000000000000000000000000000000049 -S31560031E300000000000000000000000000000000039 -S31560031E400000000000000000000000000000000029 -S31560031E500000000000000000000000000000000019 -S31560031E600000000000000000000000000000000009 -S31560031E7000000000000000000000000000000000F9 -S31560031E8000000000000000000000000000000000E9 -S31560031E9000000000000000000000000000000000D9 -S31560031EA000000000000000000000000000000000C9 -S31560031EB000000000000000000000000000000000B9 -S31560031EC000000000000000000000000000000000A9 -S31560031ED00000000000000000000000000000000099 -S31560031EE00000000000000000000000000000000089 -S31560031EF00000000000000000000000000000000079 -S31560031F000000000000000000000000000000000068 -S31560031F100000000000000000000000000000000058 -S31560031F200000000000000000000000000000000048 -S31560031F300000000000000000000000000000000038 -S31560031F400000000000000000000000000000000028 -S31560031F500000000000000000000000000000000018 -S31560031F600000000000000000000000000000000008 -S31560031F7000000000000000000000000000000000F8 -S31560031F8000000000000000000000000000000000E8 -S31560031F9000000000000000000000000000000000D8 -S31560031FA000000000000000000000000000000000C8 -S31560031FB000000000000000000000000000000000B8 -S31560031FC000000000000000000000000000000000A8 -S31560031FD00000000000000000000000000000000098 -S31560031FE00000000000000000000000000000000088 -S31560031FF00000000000000000000000000000000078 -S315600320000000000000000000000000000000000067 -S315600320100000000000000000000000000000000057 -S315600320200000000000000000000000000000000047 -S315600320300000000000000000000000000000000037 -S315600320400000000000000000000000000000000027 -S315600320500000000000000000000000000000000017 -S315600320600000000000000000000000000000000007 -S3156003207000000000000000000000000000000000F7 -S3156003208000000000000000000000000000000000E7 -S3156003209000000000000000000000000000000000D7 -S315600320A000000000000000000000000000000000C7 -S315600320B000000000000000000000000000000000B7 -S315600320C000000000000000000000000000000000A7 -S315600320D00000000000000000000000000000000097 -S315600320E00000000000000000000000000000000087 -S315600320F00000000000000000000000000000000077 -S315600321000000000000000000000000000000000066 -S315600321100000000000000000000000000000000056 -S315600321200000000000000000000000000000000046 -S315600321300000000000000000000000000000000036 -S315600321400000000000000000000000000000000026 -S315600321500000000000000000000000000000000016 -S315600321600000000000000000000000000000000006 -S3156003217000000000000000000000000000000000F6 -S3156003218000000000000000000000000000000000E6 -S3156003219000000000000000000000000000000000D6 -S315600321A000000000000000000000000000000000C6 -S315600321B000000000000000000000000000000000B6 -S315600321C000000000000000000000000000000000A6 -S315600321D00000000000000000000000000000000096 -S315600321E00000000000000000000000000000000086 -S315600321F00000000000000000000000000000000076 -S315600322000000000000000000000000000000000065 -S315600322100000000000000000000000000000000055 -S315600322200000000000000000000000000000000045 -S315600322300000000000000000000000000000000035 -S315600322400000000000000000000000000000000025 -S315600322500000000000000000000000000000000015 -S315600322600000000000000000000000000000000005 -S3156003227000000000000000000000000000000000F5 -S3156003228000000000000000000000000000000000E5 -S3156003229000000000000000000000000000000000D5 -S315600322A000000000000000000000000000000000C5 -S315600322B000000000000000000000000000000000B5 -S315600322C000000000000000000000000000000000A5 -S315600322D00000000000000000000000000000000095 -S315600322E00000000000000000000000000000000085 -S315600322F00000000000000000000000000000000075 -S315600323000000000000000000000000000000000064 -S315600323100000000000000000000000000000000054 -S315600323200000000000000000000000000000000044 -S315600323300000000000000000000000000000000034 -S315600323400000000000000000000000000000000024 -S315600323500000000000000000000000000000000014 -S315600323600000000000000000000000000000000004 -S3156003237000000000000000000000000000000000F4 -S3156003238000000000000000000000000000000000E4 -S3156003239000000000000000000000000000000000D4 -S315600323A000000000000000000000000000000000C4 -S315600323B000000000000000000000000000000000B4 -S315600323C000000000000000000000000000000000A4 -S315600323D00000000000000000000000000000000094 -S315600323E00000000000000000000000000000000084 -S315600323F00000000000000000000000000000000074 -S315600324000000000000000000000000000000000063 -S315600324100000000000000000000000000000000053 -S315600324200000000000000000000000000000000043 -S315600324300000000000000000000000000000000033 -S315600324400000000000000000000000000000000023 -S315600324500000000000000000000000000000000013 -S315600324600000000000000000000000000000000003 -S3156003247000000000000000000000000000000000F3 -S3156003248000000000000000000000000000000000E3 -S3156003249000000000000000000000000000000000D3 -S315600324A000000000000000000000000000000000C3 -S315600324B000000000000000000000000000000000B3 -S315600324C000000000000000000000000000000000A3 -S315600324D00000000000000000000000000000000093 -S315600324E00000000000000000000000000000000083 -S315600324F00000000000000000000000000000000073 -S315600325000000000000000000000000000000000062 -S315600325100000000000000000000000000000000052 -S315600325200000000000000000000000000000000042 -S315600325300000000000000000000000000000000032 -S315600325400000000000000000000000000000000022 -S315600325500000000000000000000000000000000012 -S315600325600000000000000000000000000000000002 -S3156003257000000000000000000000000000000000F2 -S3156003258000000000000000000000000000000000E2 -S3156003259000000000000000000000000000000000D2 -S315600325A000000000000000000000000000000000C2 -S315600325B000000000000000000000000000000000B2 -S315600325C000000000000000000000000000000000A2 -S315600325D00000000000000000000000000000000092 -S315600325E00000000000000000000000000000000082 -S315600325F00000000000000000000000000000000072 -S315600326000000000000000000000000000000000061 -S315600326100000000000000000000000000000000051 -S315600326200000000000000000000000000000000041 -S315600326300000000000000000000000000000000031 -S315600326400000000000000000000000000000000021 -S315600326500000000000000000000000000000000011 -S315600326600000000000000000000000000000000001 -S3156003267000000000000000000000000000000000F1 -S3156003268000000000000000000000000000000000E1 -S3156003269000000000000000000000000000000000D1 -S315600326A000000000000000000000000000000000C1 -S315600326B000000000000000000000000000000000B1 -S315600326C000000000000000000000000000000000A1 -S315600326D00000000000000000000000000000000091 -S315600326E00000000000000000000000000000000081 -S315600326F00000000000000000000000000000000071 -S315600327000000000000000000000000000000000060 -S315600327100000000000000000000000000000000050 -S315600327200000000000000000000000000000000040 -S315600327300000000000000000000000000000000030 -S315600327400000000000000000000000000000000020 -S315600327500000000000000000000000000000000010 -S315600327600000000000000000000000000000000000 -S3156003277000000000000000000000000000000000F0 -S3156003278000000000000000000000000000000000E0 -S3156003279000000000000000000000000000000000D0 -S315600327A000000000000000000000000000000000C0 -S315600327B000000000000000000000000000000000B0 -S315600327C000000000000000000000000000000000A0 -S315600327D00000000000000000000000000000000090 -S315600327E00000000000000000000000000000000080 -S315600327F00000000000000000000000000000000070 -S31560032800000000000000000000000000000000005F -S31560032810000000000000000000000000000000004F -S31560032820000000000000000000000000000000003F -S31560032830000000000000000000000000000000002F -S31560032840000000000000000000000000000000001F -S31560032850000000000000000000000000000000000F -S3156003286000000000000000000000000000000000FF -S3156003287000000000000000000000000000000000EF -S3156003288000000000000000000000000000000000DF -S3156003289000000000000000000000000000000000CF -S315600328A000000000000000000000000000000000BF -S315600328B000000000000000000000000000000000AF -S315600328C0000000000000000000000000000000009F -S315600328D0000000000000000000000000000000008F -S315600328E0000000000000000000000000000000007F -S315600328F0000000000000000000000000000000006F -S31560032900000000000000000000000000000000005E -S31560032910000000000000000000000000000000004E -S31560032920000000000000000000000000000000003E -S31560032930000000000000000000000000000000002E -S31560032940000000000000000000000000000000001E -S31560032950000000000000000000000000000000000E -S3156003296000000000000000000000000000000000FE -S3156003297000000000000000000000000000000000EE -S3156003298000000000000000000000000000000000DE -S3156003299000000000000000000000000000000000CE -S315600329A000000000000000000000000000000000BE -S315600329B000000000000000000000000000000000AE -S315600329C0000000000000000000000000000000009E -S315600329D0000000000000000000000000000000008E -S315600329E0000000000000000000000000000000007E -S315600329F0000000000000000000000000000000006E -S31560032A00000000000000000000000000000000005D -S31560032A10000000000000000000000000000000004D -S31560032A20000000000000000000000000000000003D -S31560032A30000000000000000000000000000000002D -S31560032A40000000000000000000000000000000001D -S31560032A50000000000000000000000000000000000D -S31560032A6000000000000000000000000000000000FD -S31560032A7000000000000000000000000000000000ED -S31560032A8000000000000000000000000000000000DD -S31560032A9000000000000000000000000000000000CD -S31560032AA000000000000000000000000000000000BD -S31560032AB000000000000000000000000000000000AD -S31560032AC0000000000000000000000000000000009D -S31560032AD0000000000000000000000000000000008D -S31560032AE0000000000000000000000000000000007D -S31560032AF0000000000000000000000000000000006D -S31560032B00000000000000000000000000000000005C -S31560032B10000000000000000000000000000000004C -S31560032B20000000000000000000000000000000003C -S31560032B30000000000000000000000000000000002C -S31560032B40000000000000000000000000000000001C -S31560032B50000000000000000000000000000000000C -S31560032B6000000000000000000000000000000000FC -S31560032B7000000000000000000000000000000000EC -S31560032B8000000000000000000000000000000000DC -S31560032B9000000000000000000000000000000000CC -S31560032BA000000000000000000000000000000000BC -S31560032BB000000000000000000000000000000000AC -S31560032BC0000000000000000000000000000000009C -S31560032BD0000000000000000000000000000000008C -S31560032BE0000000000000000000000000000000007C -S31560032BF0000000000000000000000000000000006C -S31560032C00000000000000000000000000000000005B -S31560032C10000000000000000000000000000000004B -S31560032C20000000000000000000000000000000003B -S31560032C30000000000000000000000000000000002B -S31560032C40000000000000000000000000000000001B -S31560032C50000000000000000000000000000000000B -S31560032C6000000000000000000000000000000000FB -S31560032C7000000000000000000000000000000000EB -S31560032C8000000000000000000000000000000000DB -S31560032C9000000000000000000000000000000000CB -S31560032CA000000000000000000000000000000000BB -S31560032CB000000000000000000000000000000000AB -S31560032CC0000000000000000000000000000000009B -S31560032CD0000000000000000000000000000000008B -S31560032CE0000000000000000000000000000000007B -S31560032CF0000000000000000000000000000000006B -S31560032D00000000000000000000000000000000005A -S31560032D10000000000000000000000000000000004A -S31560032D20000000000000000000000000000000003A -S31560032D30000000000000000000000000000000002A -S31560032D40000000000000000000000000000000001A -S31560032D50000000000000000000000000000000000A -S31560032D6000000000000000000000000000000000FA -S31560032D7000000000000000000000000000000000EA -S31560032D8000000000000000000000000000000000DA -S31560032D9000000000000000000000000000000000CA -S31560032DA000000000000000000000000000000000BA -S31560032DB000000000000000000000000000000000AA -S31560032DC0000000000000000000000000000000009A -S31560032DD0000000000000000000000000000000008A -S31560032DE0000000000000000000000000000000007A -S31560032DF0000000000000000000000000000000006A -S31560032E000000000000000000000000000000000059 -S31560032E100000000000000000000000000000000049 -S31560032E200000000000000000000000000000000039 -S31560032E300000000000000000000000000000000029 -S31560032E400000000000000000000000000000000019 -S31560032E500000000000000000000000000000000009 -S31560032E6000000000000000000000000000000000F9 -S31560032E7000000000000000000000000000000000E9 -S31560032E8000000000000000000000000000000000D9 -S31560032E9000000000000000000000000000000000C9 -S31560032EA000000000000000000000000000000000B9 -S31560032EB000000000000000000000000000000000A9 -S31560032EC00000000000000000000000000000000099 -S31560032ED00000000000000000000000000000000089 -S31560032EE00000000000000000000000000000000079 -S31560032EF00000000000000000000000000000000069 -S31560032F000000000000000000000000000000000058 -S31560032F100000000000000000000000000000000048 -S31560032F200000000000000000000000000000000038 -S31560032F300000000000000000000000000000000028 -S31560032F400000000000000000000000000000000018 -S31560032F500000000000000000000000000000000008 -S31560032F6000000000000000000000000000000000F8 -S31560032F7000000000000000000000000000000000E8 -S31560032F8000000000000000000000000000000000D8 -S31560032F9000000000000000000000000000000000C8 -S31560032FA000000000000000000000000000000000B8 -S31560032FB000000000000000000000000000000000A8 -S31560032FC00000000000000000000000000000000098 -S31560032FD00000000000000000000000000000000088 -S31560032FE00000000000000000000000000000000078 -S31560032FF00000000000000000000000000000000068 -S315600330000000000000000000000000000000000057 -S315600330100000000000000000000000000000000047 -S315600330200000000000000000000000000000000037 -S315600330300000000000000000000000000000000027 -S315600330400000000000000000000000000000000017 -S315600330500000000000000000000000000000000007 -S3156003306000000000000000000000000000000000F7 -S3156003307000000000000000000000000000000000E7 -S3156003308000000000000000000000000000000000D7 -S3156003309000000000000000000000000000000000C7 -S315600330A000000000000000000000000000000000B7 -S315600330B000000000000000000000000000000000A7 -S315600330C00000000000000000000000000000000097 -S315600330D00000000000000000000000000000000087 -S315600330E00000000000000000000000000000000077 -S315600330F00000000000000000000000000000000067 -S315600331000000000000000000000000000000000056 -S315600331100000000000000000000000000000000046 -S315600331200000000000000000000000000000000036 -S315600331300000000000000000000000000000000026 -S315600331400000000000000000000000000000000016 -S315600331500000000000000000000000000000000006 -S3156003316000000000000000000000000000000000F6 -S3156003317000000000000000000000000000000000E6 -S3156003318000000000000000000000000000000000D6 -S3156003319000000000000000000000000000000000C6 -S315600331A000000000000000000000000000000000B6 -S315600331B000000000000000000000000000000000A6 -S315600331C00000000000000000000000000000000096 -S315600331D00000000000000000000000000000000086 -S315600331E00000000000000000000000000000000076 -S315600331F00000000000000000000000000000000066 -S315600332000000000000000000000000000000000055 -S315600332100000000000000000000000000000000045 -S315600332200000000000000000000000000000000035 -S315600332300000000000000000000000000000000025 -S315600332400000000000000000000000000000000015 -S315600332500000000000000000000000000000000005 -S3156003326000000000000000000000000000000000F5 -S3156003327000000000000000000000000000000000E5 -S3156003328000000000000000000000000000000000D5 -S3156003329000000000000000000000000000000000C5 -S315600332A000000000000000000000000000000000B5 -S315600332B000000000000000000000000000000000A5 -S315600332C00000000000000000000000000000000095 -S315600332D00000000000000000000000000000000085 -S315600332E00000000000000000000000000000000075 -S315600332F00000000000000000000000000000000065 -S315600333000000000000000000000000000000000054 -S315600333100000000000000000000000000000000044 -S315600333200000000000000000000000000000000034 -S315600333300000000000000000000000000000000024 -S315600333400000000000000000000000000000000014 -S315600333500000000000000000000000000000000004 -S3156003336000000000000000000000000000000000F4 -S3156003337000000000000000000000000000000000E4 -S3156003338000000000000000000000000000000000D4 -S3156003339000000000000000000000000000000000C4 -S315600333A000000000000000000000000000000000B4 -S315600333B000000000000000000000000000000000A4 -S315600333C00000000000000000000000000000000094 -S315600333D00000000000000000000000000000000084 -S315600333E00000000000000000000000000000000074 -S315600333F00000000000000000000000000000000064 -S315600334000000000000000000000000000000000053 -S315600334100000000000000000000000000000000043 -S315600334200000000000000000000000000000000033 -S315600334300000000000000000000000000000000023 -S315600334400000000000000000000000000000000013 -S315600334500000000000000000000000000000000003 -S3156003346000000000000000000000000000000000F3 -S3156003347000000000000000000000000000000000E3 -S3156003348000000000000000000000000000000000D3 -S3156003349000000000000000000000000000000000C3 -S315600334A000000000000000000000000000000000B3 -S315600334B000000000000000000000000000000000A3 -S315600334C00000000000000000000000000000000093 -S315600334D00000000000000000000000000000000083 -S315600334E00000000000000000000000000000000073 -S315600334F00000000000000000000000000000000063 -S315600335000000000000000000000000000000000052 -S315600335100000000000000000000000000000000042 -S315600335200000000000000000000000000000000032 -S315600335300000000000000000000000000000000022 -S315600335400000000000000000000000000000000012 -S315600335500000000000000000000000000000000002 -S3156003356000000000000000000000000000000000F2 -S3156003357000000000000000000000000000000000E2 -S3156003358000000000000000000000000000000000D2 -S3156003359000000000000000000000000000000000C2 -S315600335A000000000000000000000000000000000B2 -S315600335B000000000000000000000000000000000A2 -S315600335C00000000000000000000000000000000092 -S315600335D00000000000000000000000000000000082 -S315600335E00000000000000000000000000000000072 -S315600335F00000000000000000000000000000000062 -S315600336000000000000000000000000000000000051 -S315600336100000000000000000000000000000000041 -S315600336200000000000000000000000000000000031 -S315600336300000000000000000000000000000000021 -S315600336400000000000000000000000000000000011 -S315600336500000000000000000000000000000000001 -S3156003366000000000000000000000000000000000F1 -S3156003367000000000000000000000000000000000E1 -S3156003368000000000000000000000000000000000D1 -S3156003369000000000000000000000000000000000C1 -S315600336A000000000000000000000000000000000B1 -S315600336B000000000000000000000000000000000A1 -S315600336C00000000000000000000000000000000091 -S315600336D00000000000000000000000000000000081 -S315600336E00000000000000000000000000000000071 -S315600336F00000000000000000000000000000000061 -S315600337000000000000000000000000000000000050 -S315600337100000000000000000000000000000000040 -S315600337200000000000000000000000000000000030 -S315600337300000000000000000000000000000000020 -S315600337400000000000000000000000000000000010 -S315600337500000000000000000000000000000000000 -S3156003376000000000000000000000000000000000F0 -S3156003377000000000000000000000000000000000E0 -S3156003378000000000000000000000000000000000D0 -S3156003379000000000000000000000000000000000C0 -S315600337A000000000000000000000000000000000B0 -S315600337B000000000000000000000000000000000A0 -S315600337C00000000000000000000000000000000090 -S315600337D00000000000000000000000000000000080 -S315600337E00000000000000000000000000000000070 -S315600337F00000000000000000000000000000000060 -S31560033800000000000000000000000000000000004F -S31560033810000000000000000000000000000000003F -S31560033820000000000000000000000000000000002F -S31560033830000000000000000000000000000000001F -S31560033840000000000000000000000000000000000F -S3156003385000000000000000000000000000000000FF -S3156003386000000000000000000000000000000000EF -S3156003387000000000000000000000000000000000DF -S3156003388000000000000000000000000000000000CF -S3156003389000000000000000000000000000000000BF -S315600338A000000000000000000000000000000000AF -S315600338B0000000000000000000000000000000009F -S315600338C0000000000000000000000000000000008F -S315600338D0000000000000000000000000000000007F -S315600338E0000000000000000000000000000000006F -S315600338F0000000000000000000000000000000005F -S31560033900000000000000000000000000000000004E -S31560033910000000000000000000000000000000003E -S31560033920000000000000000000000000000000002E -S31560033930000000000000000000000000000000001E -S31560033940000000000000000000000000000000000E -S3156003395000000000000000000000000000000000FE -S3156003396000000000000000000000000000000000EE -S3156003397000000000000000000000000000000000DE -S3156003398000000000000000000000000000000000CE -S3156003399000000000000000000000000000000000BE -S315600339A000000000000000000000000000000000AE -S315600339B0000000000000000000000000000000009E -S315600339C0000000000000000000000000000000008E -S315600339D0000000000000000000000000000000007E -S315600339E0000000000000000000000000000000006E -S315600339F0000000000000000000000000000000005E -S31560033A00000000000000000000000000000000004D -S31560033A10000000000000000000000000000000003D -S31560033A20000000000000000000000000000000002D -S31560033A30000000000000000000000000000000001D -S31560033A40000000000000000000000000000000000D -S31560033A5000000000000000000000000000000000FD -S31560033A6000000000000000000000000000000000ED -S31560033A7000000000000000000000000000000000DD -S31560033A8000000000000000000000000000000000CD -S31560033A9000000000000000000000000000000000BD -S31560033AA000000000000000000000000000000000AD -S31560033AB0000000000000000000000000000000009D -S31560033AC0000000000000000000000000000000008D -S31560033AD0000000000000000000000000000000007D -S31560033AE0000000000000000000000000000000006D -S31560033AF0000000000000000000000000000000005D -S31560033B00000000000000000000000000000000004C -S31560033B10000000000000000000000000000000003C -S31560033B20000000000000000000000000000000002C -S31560033B30000000000000000000000000000000001C -S31560033B40000000000000000000000000000000000C -S31560033B5000000000000000000000000000000000FC -S31560033B6000000000000000000000000000000000EC -S31560033B7000000000000000000000000000000000DC -S31560033B8000000000000000000000000000000000CC -S31560033B9000000000000000000000000000000000BC -S31560033BA000000000000000000000000000000000AC -S31560033BB0000000000000000000000000000000009C -S31560033BC0000000000000000000000000000000008C -S31560033BD0000000000000000000000000000000007C -S31560033BE0000000000000000000000000000000006C -S31560033BF0000000000000000000000000000000005C -S31560033C00000000000000000000000000000000004B -S31560033C10000000000000000000000000000000003B -S31560033C20000000000000000000000000000000002B -S31560033C30000000000000000000000000000000001B -S31560033C40000000000000000000000000000000000B -S31560033C5000000000000000000000000000000000FB -S31560033C6000000000000000000000000000000000EB -S31560033C7000000000000000000000000000000000DB -S31560033C8000000000000000000000000000000000CB -S31560033C9000000000000000000000000000000000BB -S31560033CA000000000000000000000000000000000AB -S31560033CB0000000000000000000000000000000009B -S31560033CC0000000000000000000000000000000008B -S31560033CD0000000000000000000000000000000007B -S31560033CE0000000000000000000000000000000006B -S31560033CF0000000000000000000000000000000005B -S31560033D00000000000000000000000000000000004A -S31560033D10000000000000000000000000000000003A -S31560033D20000000000000000000000000000000002A -S31560033D30000000000000000000000000000000001A -S31560033D40000000000000000000000000000000000A -S31560033D5000000000000000000000000000000000FA -S31560033D6000000000000000000000000000000000EA -S31560033D7000000000000000000000000000000000DA -S31560033D8000000000000000000000000000000000CA -S31560033D9000000000000000000000000000000000BA -S31560033DA000000000000000000000000000000000AA -S31560033DB0000000000000000000000000000000009A -S31560033DC0000000000000000000000000000000008A -S31560033DD0000000000000000000000000000000007A -S31560033DE0000000000000000000000000000000006A -S31560033DF0000000000000000000000000000000005A -S31560033E000000000000000000000000000000000049 -S31560033E100000000000000000000000000000000039 -S31560033E200000000000000000000000000000000029 -S31560033E300000000000000000000000000000000019 -S31560033E400000000000000000000000000000000009 -S31560033E5000000000000000000000000000000000F9 -S31560033E6000000000000000000000000000000000E9 -S31560033E7000000000000000000000000000000000D9 -S31560033E8000000000000000000000000000000000C9 -S31560033E9000000000000000000000000000000000B9 -S31560033EA000000000000000000000000000000000A9 -S31560033EB00000000000000000000000000000000099 -S31560033EC00000000000000000000000000000000089 -S31560033ED00000000000000000000000000000000079 -S31560033EE00000000000000000000000000000000069 -S31560033EF00000000000000000000000000000000059 -S31560033F000000000000000000000000000000000048 -S31560033F100000000000000000000000000000000038 -S31560033F200000000000000000000000000000000028 -S31560033F300000000000000000000000000000000018 -S31560033F400000000000000000000000000000000008 -S31560033F5000000000000000000000000000000000F8 -S31560033F6000000000000000000000000000000000E8 -S31560033F7000000000000000000000000000000000D8 -S31560033F8000000000000000000000000000000000C8 -S31560033F9000000000000000000000000000000000B8 -S31560033FA000000000000000000000000000000000A8 -S31560033FB00000000000000000000000000000000098 -S31560033FC00000000000000000000000000000000088 -S31560033FD00000000000000000000000000000000078 -S31560033FE00000000000000000000000000000000068 -S31560033FF00000000000000000000000000000000058 -S315600340000000000000000000000000000000000047 -S315600340100000000000000000000000000000000037 -S315600340200000000000000000000000000000000027 -S315600340300000000000000000000000000000000017 -S315600340400000000000000000000000000000000007 -S3156003405000000000000000000000000000000000F7 -S3156003406000000000000000000000000000000000E7 -S3156003407000000000000000000000000000000000D7 -S3156003408000000000000000000000000000000000C7 -S3156003409000000000000000000000000000000000B7 -S315600340A000000000000000000000000000000000A7 -S315600340B00000000000000000000000000000000097 -S315600340C00000000000000000000000000000000087 -S315600340D00000000000000000000000000000000077 -S315600340E00000000000000000000000000000000067 -S315600340F00000000000000000000000000000000057 -S315600341000000000000000000000000000000000046 -S315600341100000000000000000000000000000000036 -S315600341200000000000000000000000000000000026 -S315600341300000000000000000000000000000000016 -S315600341400000000000000000000000000000000006 -S3156003415000000000000000000000000000000000F6 -S3156003416000000000000000000000000000000000E6 -S3156003417000000000000000000000000000000000D6 -S3156003418000000000000000000000000000000000C6 -S3156003419000000000000000000000000000000000B6 -S315600341A000000000000000000000000000000000A6 -S315600341B00000000000000000000000000000000096 -S315600341C00000000000000000000000000000000086 -S315600341D00000000000000000000000000000000076 -S315600341E00000000000000000000000000000000066 -S315600341F00000000000000000000000000000000056 -S315600342000000000000000000000000000000000045 -S315600342100000000000000000000000000000000035 -S315600342200000000000000000000000000000000025 -S315600342300000000000000000000000000000000015 -S315600342400000000000000000000000000000000005 -S3156003425000000000000000000000000000000000F5 -S3156003426000000000000000000000000000000000E5 -S3156003427000000000000000000000000000000000D5 -S3156003428000000000000000000000000000000000C5 -S3156003429000000000000000000000000000000000B5 -S315600342A000000000000000000000000000000000A5 -S315600342B00000000000000000000000000000000095 -S315600342C00000000000000000000000000000000085 -S315600342D00000000000000000000000000000000075 -S315600342E00000000000000000000000000000000065 -S315600342F00000000000000000000000000000000055 -S315600343000000000000000000000000000000000044 -S315600343100000000000000000000000000000000034 -S315600343200000000000000000000000000000000024 -S315600343300000000000000000000000000000000014 -S315600343400000000000000000000000000000000004 -S3156003435000000000000000000000000000000000F4 -S3156003436000000000000000000000000000000000E4 -S3156003437000000000000000000000000000000000D4 -S3156003438000000000000000000000000000000000C4 -S3156003439000000000000000000000000000000000B4 -S315600343A000000000000000000000000000000000A4 -S315600343B00000000000000000000000000000000094 -S315600343C00000000000000000000000000000000084 -S315600343D00000000000000000000000000000000074 -S315600343E00000000000000000000000000000000064 -S315600343F00000000000000000000000000000000054 -S315600344000000000000000000000000000000000043 -S315600344100000000000000000000000000000000033 -S315600344200000000000000000000000000000000023 -S315600344300000000000000000000000000000000013 -S315600344400000000000000000000000000000000003 -S3156003445000000000000000000000000000000000F3 -S3156003446000000000000000000000000000000000E3 -S3156003447000000000000000000000000000000000D3 -S3156003448000000000000000000000000000000000C3 -S3156003449000000000000000000000000000000000B3 -S315600344A000000000000000000000000000000000A3 -S315600344B00000000000000000000000000000000093 -S315600344C00000000000000000000000000000000083 -S315600344D00000000000000000000000000000000073 -S315600344E00000000000000000000000000000000063 -S315600344F00000000000000000000000000000000053 -S315600345000000000000000000000000000000000042 -S315600345100000000000000000000000000000000032 -S315600345200000000000000000000000000000000022 -S315600345300000000000000000000000000000000012 -S315600345400000000000000000000000000000000002 -S3156003455000000000000000000000000000000000F2 -S3156003456000000000000000000000000000000000E2 -S3156003457000000000000000000000000000000000D2 -S3156003458000000000000000000000000000000000C2 -S3156003459000000000000000000000000000000000B2 -S315600345A000000000000000000000000000000000A2 -S315600345B00000000000000000000000000000000092 -S315600345C00000000000000000000000000000000082 -S315600345D00000000000000000000000000000000072 -S315600345E00000000000000000000000000000000062 -S315600345F00000000000000000000000000000000052 -S315600346000000000000000000000000000000000041 -S315600346100000000000000000000000000000000031 -S315600346200000000000000000000000000000000021 -S315600346300000000000000000000000000000000011 -S315600346400000000000000000000000000000000001 -S3156003465000000000000000000000000000000000F1 -S3156003466000000000000000000000000000000000E1 -S3156003467000000000000000000000000000000000D1 -S3156003468000000000000000000000000000000000C1 -S3156003469000000000000000000000000000000000B1 -S315600346A000000000000000000000000000000000A1 -S315600346B00000000000000000000000000000000091 -S315600346C00000000000000000000000000000000081 -S315600346D00000000000000000000000000000000071 -S315600346E00000000000000000000000000000000061 -S315600346F00000000000000000000000000000000051 -S315600347000000000000000000000000000000000040 -S315600347100000000000000000000000000000000030 -S315600347200000000000000000000000000000000020 -S315600347300000000000000000000000000000000010 -S315600347400000000000000000000000000000000000 -S3156003475000000000000000000000000000000000F0 -S3156003476000000000000000000000000000000000E0 -S3156003477000000000000000000000000000000000D0 -S3156003478000000000000000000000000000000000C0 -S3156003479000000000000000000000000000000000B0 -S315600347A000000000000000000000000000000000A0 -S315600347B00000000000000000000000000000000090 -S315600347C00000000000000000000000000000000080 -S315600347D00000000000000000000000000000000070 -S315600347E00000000000000000000000000000000060 -S315600347F00000000000000000000000000000000050 -S31560034800000000000000000000000000000000003F -S31560034810000000000000000000000000000000002F -S31560034820000000000000000000000000000000001F -S31560034830000000000000000000000000000000000F -S3156003484000000000000000000000000000000000FF -S3156003485000000000000000000000000000000000EF -S3156003486000000000000000000000000000000000DF -S3156003487000000000000000000000000000000000CF -S3156003488000000000000000000000000000000000BF -S3156003489000000000000000000000000000000000AF -S315600348A0000000000000000000000000000000009F -S315600348B0000000000000000000000000000000008F -S315600348C0000000000000000000000000000000007F -S315600348D0000000000000000000000000000000006F -S315600348E0000000000000000000000000000000005F -S315600348F0000000000000000000000000000000004F -S31560034900000000000000000000000000000000003E -S31560034910000000000000000000000000000000002E -S31560034920000000000000000000000000000000001E -S31560034930000000000000000000000000000000000E -S3156003494000000000000000000000000000000000FE -S3156003495000000000000000000000000000000000EE -S3156003496000000000000000000000000000000000DE -S3156003497000000000000000000000000000000000CE -S3156003498000000000000000000000000000000000BE -S3156003499000000000000000000000000000000000AE -S315600349A0000000000000000000000000000000009E -S315600349B0000000000000000000000000000000008E -S315600349C0000000000000000000000000000000007E -S315600349D0000000000000000000000000000000006E -S315600349E0000000000000000000000000000000005E -S315600349F0000000000000000000000000000000004E -S31560034A00000000000000000000000000000000003D -S31560034A10000000000000000000000000000000002D -S31560034A20000000000000000000000000000000001D -S31560034A30000000000000000000000000000000000D -S31560034A4000000000000000000000000000000000FD -S31560034A5000000000000000000000000000000000ED -S31560034A6000000000000000000000000000000000DD -S31560034A7000000000000000000000000000000000CD -S31560034A8000000000000000000000000000000000BD -S31560034A9000000000000000000000000000000000AD -S31560034AA0000000000000000000000000000000009D -S31560034AB0000000000000000000000000000000008D -S31560034AC0000000000000000000000000000000007D -S31560034AD0000000000000000000000000000000006D -S31560034AE0000000000000000000000000000000005D -S31560034AF0000000000000000000000000000000004D -S31560034B00000000000000000000000000000000003C -S31560034B10000000000000000000000000000000002C -S31560034B20000000000000000000000000000000001C -S31560034B30000000000000000000000000000000000C -S31560034B4000000000000000000000000000000000FC -S31560034B5000000000000000000000000000000000EC -S31560034B6000000000000000000000000000000000DC -S31560034B7000000000000000000000000000000000CC -S31560034B8000000000000000000000000000000000BC -S31560034B9000000000000000000000000000000000AC -S31560034BA0000000000000000000000000000000009C -S31560034BB0000000000000000000000000000000008C -S31560034BC0000000000000000000000000000000007C -S31560034BD0000000000000000000000000000000006C -S31560034BE0000000000000000000000000000000005C -S31560034BF0000000000000000000000000000000004C -S31560034C00000000000000000000000000000000003B -S31560034C10000000000000000000000000000000002B -S31560034C20000000000000000000000000000000001B -S31560034C30000000000000000000000000000000000B -S31560034C4000000000000000000000000000000000FB -S31560034C5000000000000000000000000000000000EB -S31560034C6000000000000000000000000000000000DB -S31560034C7000000000000000000000000000000000CB -S31560034C8000000000000000000000000000000000BB -S31560034C9000000000000000000000000000000000AB -S31560034CA0000000000000000000000000000000009B -S31560034CB0000000000000000000000000000000008B -S31560034CC0000000000000000000000000000000007B -S31560034CD0000000000000000000000000000000006B -S31560034CE0000000000000000000000000000000005B -S31560034CF0000000000000000000000000000000004B -S31560034D00000000000000000000000000000000003A -S31560034D10000000000000000000000000000000002A -S31560034D20000000000000000000000000000000001A -S31560034D30000000000000000000000000000000000A -S31560034D4000000000000000000000000000000000FA -S31560034D5000000000000000000000000000000000EA -S31560034D6000000000000000000000000000000000DA -S31560034D7000000000000000000000000000000000CA -S31560034D8000000000000000000000000000000000BA -S31560034D9000000000000000000000000000000000AA -S31560034DA0000000000000000000000000000000009A -S31560034DB0000000000000000000000000000000008A -S31560034DC0000000000000000000000000000000007A -S31560034DD0000000000000000000000000000000006A -S31560034DE0000000000000000000000000000000005A -S31560034DF0000000000000000000000000000000004A -S31560034E000000000000000000000000000000000039 -S31560034E100000000000000000000000000000000029 -S31560034E200000000000000000000000000000000019 -S31560034E300000000000000000000000000000000009 -S31560034E4000000000000000000000000000000000F9 -S31560034E5000000000000000000000000000000000E9 -S31560034E6000000000000000000000000000000000D9 -S31560034E7000000000000000000000000000000000C9 -S31560034E8000000000000000000000000000000000B9 -S31560034E9000000000000000000000000000000000A9 -S31560034EA00000000000000000000000000000000099 -S31560034EB00000000000000000000000000000000089 -S31560034EC00000000000000000000000000000000079 -S31560034ED00000000000000000000000000000000069 -S31560034EE00000000000000000000000000000000059 -S31560034EF00000000000000000000000000000000049 -S31560034F000000000000000000000000000000000038 -S31560034F100000000000000000000000000000000028 -S31560034F200000000000000000000000000000000018 -S31560034F300000000000000000000000000000000008 -S31560034F4000000000000000000000000000000000F8 -S31560034F5000000000000000000000000000000000E8 -S31560034F6000000000000000000000000000000000D8 -S31560034F7000000000000000000000000000000000C8 -S31560034F8000000000000000000000000000000000B8 -S31560034F9000000000000000000000000000000000A8 -S31560034FA00000000000000000000000000000000098 -S31560034FB00000000000000000000000000000000088 -S31560034FC00000000000000000000000000000000078 -S31560034FD00000000000000000000000000000000068 -S31560034FE00000000000000000000000000000000058 -S31560034FF00000000000000000000000000000000048 -S315600350000000000000000000000000000000000037 -S315600350100000000000000000000000000000000027 -S315600350200000000000000000000000000000000017 -S315600350300000000000000000000000000000000007 -S3156003504000000000000000000000000000000000F7 -S3156003505000000000000000000000000000000000E7 -S3156003506000000000000000000000000000000000D7 -S3156003507000000000000000000000000000000000C7 -S3156003508000000000000000000000000000000000B7 -S3156003509000000000000000000000000000000000A7 -S315600350A00000000000000000000000000000000097 -S315600350B00000000000000000000000000000000087 -S315600350C00000000000000000000000000000000077 -S315600350D00000000000000000000000000000000067 -S315600350E00000000000000000000000000000000057 -S315600350F00000000000000000000000000000000047 -S315600351000000000000000000000000000000000036 -S315600351100000000000000000000000000000000026 -S315600351200000000000000000000000000000000016 -S315600351300000000000000000000000000000000006 -S3156003514000000000000000000000000000000000F6 -S3156003515000000000000000000000000000000000E6 -S3156003516000000000000000000000000000000000D6 -S3156003517000000000000000000000000000000000C6 -S3156003518000000000000000000000000000000000B6 -S3156003519000000000000000000000000000000000A6 -S315600351A00000000000000000000000000000000096 -S315600351B00000000000000000000000000000000086 -S315600351C00000000000000000000000000000000076 -S315600351D00000000000000000000000000000000066 -S315600351E00000000000000000000000000000000056 -S315600351F00000000000000000000000000000000046 -S315600352000000000000000000000000000000000035 -S315600352100000000000000000000000000000000025 -S315600352200000000000000000000000000000000015 -S315600352300000000000000000000000000000000005 -S3156003524000000000000000000000000000000000F5 -S3156003525000000000000000000000000000000000E5 -S3156003526000000000000000000000000000000000D5 -S3156003527000000000000000000000000000000000C5 -S3156003528000000000000000000000000000000000B5 -S3156003529000000000000000000000000000000000A5 -S315600352A00000000000000000000000000000000095 -S315600352B00000000000000000000000000000000085 -S315600352C00000000000000000000000000000000075 -S315600352D00000000000000000000000000000000065 -S315600352E00000000000000000000000000000000055 -S315600352F00000000000000000000000000000000045 -S315600353000000000000000000000000000000000034 -S315600353100000000000000000000000000000000024 -S315600353200000000000000000000000000000000014 -S315600353300000000000000000000000000000000004 -S3156003534000000000000000000000000000000000F4 -S3156003535000000000000000000000000000000000E4 -S3156003536000000000000000000000000000000000D4 -S3156003537000000000000000000000000000000000C4 -S3156003538000000000000000000000000000000000B4 -S3156003539000000000000000000000000000000000A4 -S315600353A00000000000000000000000000000000094 -S315600353B00000000000000000000000000000000084 -S315600353C00000000000000000000000000000000074 -S315600353D00000000000000000000000000000000064 -S315600353E00000000000000000000000000000000054 -S315600353F00000000000000000000000000000000044 -S315600354000000000000000000000000000000000033 -S315600354100000000000000000000000000000000023 -S315600354200000000000000000000000000000000013 -S315600354300000000000000000000000000000000003 -S3156003544000000000000000000000000000000000F3 -S3156003545000000000000000000000000000000000E3 -S3156003546000000000000000000000000000000000D3 -S3156003547000000000000000000000000000000000C3 -S3156003548000000000000000000000000000000000B3 -S3156003549000000000000000000000000000000000A3 -S315600354A00000000000000000000000000000000093 -S315600354B00000000000000000000000000000000083 -S315600354C00000000000000000000000000000000073 -S315600354D00000000000000000000000000000000063 -S315600354E00000000000000000000000000000000053 -S315600354F00000000000000000000000000000000043 -S315600355000000000000000000000000000000000032 -S315600355100000000000000000000000000000000022 -S315600355200000000000000000000000000000000012 -S315600355300000000000000000000000000000000002 -S3156003554000000000000000000000000000000000F2 -S3156003555000000000000000000000000000000000E2 -S3156003556000000000000000000000000000000000D2 -S3156003557000000000000000000000000000000000C2 -S3156003558000000000000000000000000000000000B2 -S3156003559000000000000000000000000000000000A2 -S315600355A00000000000000000000000000000000092 -S315600355B00000000000000000000000000000000082 -S315600355C00000000000000000000000000000000072 -S315600355D00000000000000000000000000000000062 -S315600355E00000000000000000000000000000000052 -S315600355F00000000000000000000000000000000042 -S315600356000000000000000000000000000000000031 -S315600356100000000000000000000000000000000021 -S315600356200000000000000000000000000000000011 -S315600356300000000000000000000000000000000001 -S3156003564000000000000000000000000000000000F1 -S3156003565000000000000000000000000000000000E1 -S3156003566000000000000000000000000000000000D1 -S3156003567000000000000000000000000000000000C1 -S3156003568000000000000000000000000000000000B1 -S3156003569000000000000000000000000000000000A1 -S315600356A00000000000000000000000000000000091 -S315600356B00000000000000000000000000000000081 -S315600356C00000000000000000000000000000000071 -S315600356D00000000000000000000000000000000061 -S315600356E00000000000000000000000000000000051 -S315600356F00000000000000000000000000000000041 -S315600357000000000000000000000000000000000030 -S315600357100000000000000000000000000000000020 -S315600357200000000000000000000000000000000010 -S315600357300000000000000000000000000000000000 -S3156003574000000000000000000000000000000000F0 -S3156003575000000000000000000000000000000000E0 -S3156003576000000000000000000000000000000000D0 -S3156003577000000000000000000000000000000000C0 -S3156003578000000000000000000000000000000000B0 -S3156003579000000000000000000000000000000000A0 -S315600357A00000000000000000000000000000000090 -S315600357B00000000000000000000000000000000080 -S315600357C00000000000000000000000000000000070 -S315600357D00000000000000000000000000000000060 -S315600357E00000000000000000000000000000000050 -S315600357F00000000000000000000000000000000040 -S31560035800000000000000000000000000000000002F -S31560035810000000000000000000000000000000001F -S31560035820000000000000000000000000000000000F -S3156003583000000000000000000000000000000000FF -S3156003584000000000000000000000000000000000EF -S3156003585000000000000000000000000000000000DF -S3156003586000000000000000000000000000000000CF -S3156003587000000000000000000000000000000000BF -S3156003588000000000000000000000000000000000AF -S31560035890000000000000000000000000000000009F -S315600358A0000000000000000000000000000000008F -S315600358B0000000000000000000000000000000007F -S315600358C0000000000000000000000000000000006F -S315600358D0000000000000000000000000000000005F -S315600358E0000000000000000000000000000000004F -S315600358F0000000000000000000000000000000003F -S31560035900000000000000000000000000000000002E -S31560035910000000000000000000000000000000001E -S31560035920000000000000000000000000000000000E -S3156003593000000000000000000000000000000000FE -S3156003594000000000000000000000000000000000EE -S3156003595000000000000000000000000000000000DE -S3156003596000000000000000000000000000000000CE -S3156003597000000000000000000000000000000000BE -S3156003598000000000000000000000000000000000AE -S31560035990000000000000000000000000000000009E -S315600359A0000000000000000000000000000000008E -S315600359B0000000000000000000000000000000007E -S315600359C0000000000000000000000000000000006E -S315600359D0000000000000000000000000000000005E -S315600359E0000000000000000000000000000000004E -S315600359F0000000000000000000000000000000003E -S31560035A00000000000000000000000000000000002D -S31560035A10000000000000000000000000000000001D -S31560035A20000000000000000000000000000000000D -S31560035A3000000000000000000000000000000000FD -S31560035A4000000000000000000000000000000000ED -S31560035A5000000000000000000000000000000000DD -S31560035A6000000000000000000000000000000000CD -S31560035A7000000000000000000000000000000000BD -S31560035A8000000000000000000000000000000000AD -S31560035A90000000000000000000000000000000009D -S31560035AA0000000000000000000000000000000008D -S31560035AB0000000000000000000000000000000007D -S31560035AC0000000000000000000000000000000006D -S31560035AD0000000000000000000000000000000005D -S31560035AE0000000000000000000000000000000004D -S31560035AF0000000000000000000000000000000003D -S31560035B00000000000000000000000000000000002C -S31560035B10000000000000000000000000000000001C -S31560035B20000000000000000000000000000000000C -S31560035B3000000000000000000000000000000000FC -S31560035B4000000000000000000000000000000000EC -S31560035B5000000000000000000000000000000000DC -S31560035B6000000000000000000000000000000000CC -S31560035B7000000000000000000000000000000000BC -S31560035B8000000000000000000000000000000000AC -S31560035B90000000000000000000000000000000009C -S31560035BA0000000000000000000000000000000008C -S31560035BB0000000000000000000000000000000007C -S31560035BC0000000000000000000000000000000006C -S31560035BD0000000000000000000000000000000005C -S31560035BE0000000000000000000000000000000004C -S31560035BF0000000000000000000000000000000003C -S31560035C00000000000000000000000000000000002B -S31560035C10000000000000000000000000000000001B -S31560035C20000000000000000000000000000000000B -S31560035C3000000000000000000000000000000000FB -S31560035C4000000000000000000000000000000000EB -S31560035C5000000000000000000000000000000000DB -S31560035C6000000000000000000000000000000000CB -S31560035C7000000000000000000000000000000000BB -S31560035C8000000000000000000000000000000000AB -S31560035C90000000000000000000000000000000009B -S31560035CA0000000000000000000000000000000008B -S31560035CB0000000000000000000000000000000007B -S31560035CC0000000000000000000000000000000006B -S31560035CD0000000000000000000000000000000005B -S31560035CE0000000000000000000000000000000004B -S31560035CF0000000000000000000000000000000003B -S31560035D00000000000000000000000000000000002A -S31560035D10000000000000000000000000000000001A -S31560035D20000000000000000000000000000000000A -S31560035D3000000000000000000000000000000000FA -S31560035D4000000000000000000000000000000000EA -S31560035D5000000000000000000000000000000000DA -S31560035D6000000000000000000000000000000000CA -S31560035D7000000000000000000000000000000000BA -S31560035D8000000000000000000000000000000000AA -S31560035D90000000000000000000000000000000009A -S31560035DA0000000000000000000000000000000008A -S31560035DB0000000000000000000000000000000007A -S31560035DC0000000000000000000000000000000006A -S31560035DD0000000000000000000000000000000005A -S31560035DE0000000000000000000000000000000004A -S31560035DF0000000000000000000000000000000003A -S31560035E000000000000000000000000000000000029 -S31560035E100000000000000000000000000000000019 -S31560035E200000000000000000000000000000000009 -S31560035E3000000000000000000000000000000000F9 -S31560035E4000000000000000000000000000000000E9 -S31560035E5000000000000000000000000000000000D9 -S31560035E6000000000000000000000000000000000C9 -S31560035E7000000000000000000000000000000000B9 -S31560035E8000000000000000000000000000000000A9 -S31560035E900000000000000000000000000000000099 -S31560035EA00000000000000000000000000000000089 -S31560035EB00000000000000000000000000000000079 -S31560035EC00000000000000000000000000000000069 -S31560035ED00000000000000000000000000000000059 -S31560035EE00000000000000000000000000000000049 -S31560035EF00000000000000000000000000000000039 -S31560035F000000000000000000000000000000000028 -S31560035F100000000000000000000000000000000018 -S31560035F200000000000000000000000000000000008 -S31560035F3000000000000000000000000000000000F8 -S31560035F4000000000000000000000000000000000E8 -S31560035F5000000000000000000000000000000000D8 -S31560035F6000000000000000000000000000000000C8 -S31560035F7000000000000000000000000000000000B8 -S31560035F8000000000000000000000000000000000A8 -S31560035F900000000000000000000000000000000098 -S31560035FA00000000000000000000000000000000088 -S31560035FB00000000000000000000000000000000078 -S31560035FC00000000000000000000000000000000068 -S31560035FD00000000000000000000000000000000058 -S31560035FE00000000000000000000000000000000048 -S31560035FF00000000000000000000000000000000038 -S315600360000000000000000000000000000000000027 -S315600360100000000000000000000000000000000017 -S315600360200000000000000000000000000000000007 -S3156003603000000000000000000000000000000000F7 -S3156003604000000000000000000000000000000000E7 -S3156003605000000000000000000000000000000000D7 -S3156003606000000000000000000000000000000000C7 -S3156003607000000000000000000000000000000000B7 -S3156003608000000000000000000000000000000000A7 -S315600360900000000000000000000000000000000097 -S315600360A00000000000000000000000000000000087 -S315600360B00000000000000000000000000000000077 -S315600360C00000000000000000000000000000000067 -S315600360D00000000000000000000000000000000057 -S315600360E00000000000000000000000000000000047 -S315600360F00000000000000000000000000000000037 -S315600361000000000000000000000000000000000026 -S315600361100000000000000000000000000000000016 -S315600361200000000000000000000000000000000006 -S3156003613000000000000000000000000000000000F6 -S3156003614000000000000000000000000000000000E6 -S3156003615000000000000000000000000000000000D6 -S3156003616000000000000000000000000000000000C6 -S3156003617000000000000000000000000000000000B6 -S3156003618000000000000000000000000000000000A6 -S315600361900000000000000000000000000000000096 -S315600361A00000000000000000000000000000000086 -S315600361B00000000000000000000000000000000076 -S315600361C00000000000000000000000000000000066 -S315600361D00000000000000000000000000000000056 -S315600361E00000000000000000000000000000000046 -S315600361F00000000000000000000000000000000036 -S315600362000000000000000000000000000000000025 -S315600362100000000000000000000000000000000015 -S315600362200000000000000000000000000000000005 -S3156003623000000000000000000000000000000000F5 -S3156003624000000000000000000000000000000000E5 -S3156003625000000000000000000000000000000000D5 -S3156003626000000000000000000000000000000000C5 -S3156003627000000000000000000000000000000000B5 -S3156003628000000000000000000000000000000000A5 -S315600362900000000000000000000000000000000095 -S315600362A00000000000000000000000000000000085 -S315600362B00000000000000000000000000000000075 -S315600362C00000000000000000000000000000000065 -S315600362D00000000000000000000000000000000055 -S315600362E00000000000000000000000000000000045 -S315600362F00000000000000000000000000000000035 -S315600363000000000000000000000000000000000024 -S315600363100000000000000000000000000000000014 -S315600363200000000000000000000000000000000004 -S3156003633000000000000000000000000000000000F4 -S3156003634000000000000000000000000000000000E4 -S3156003635000000000000000000000000000000000D4 -S3156003636000000000000000000000000000000000C4 -S3156003637000000000000000000000000000000000B4 -S3156003638000000000000000000000000000000000A4 -S315600363900000000000000000000000000000000094 -S315600363A00000000000000000000000000000000084 -S315600363B00000000000000000000000000000000074 -S315600363C00000000000000000000000000000000064 -S315600363D00000000000000000000000000000000054 -S315600363E00000000000000000000000000000000044 -S315600363F00000000000000000000000000000000034 -S315600364000000000000000000000000000000000023 -S315600364100000000000000000000000000000000013 -S315600364200000000000000000000000000000000003 -S3156003643000000000000000000000000000000000F3 -S3156003644000000000000000000000000000000000E3 -S3156003645000000000000000000000000000000000D3 -S3156003646000000000000000000000000000000000C3 -S3156003647000000000000000000000000000000000B3 -S3156003648000000000000000000000000000000000A3 -S315600364900000000000000000000000000000000093 -S315600364A00000000000000000000000000000000083 -S315600364B00000000000000000000000000000000073 -S315600364C00000000000000000000000000000000063 -S315600364D00000000000000000000000000000000053 -S315600364E00000000000000000000000000000000043 -S315600364F00000000000000000000000000000000033 -S315600365000000000000000000000000000000000022 -S315600365100000000000000000000000000000000012 -S315600365200000000000000000000000000000000002 -S3156003653000000000000000000000000000000000F2 -S3156003654000000000000000000000000000000000E2 -S3156003655000000000000000000000000000000000D2 -S3156003656000000000000000000000000000000000C2 -S3156003657000000000000000000000000000000000B2 -S3156003658000000000000000000000000000000000A2 -S315600365900000000000000000000000000000000092 -S315600365A00000000000000000000000000000000082 -S315600365B00000000000000000000000000000000072 -S315600365C00000000000000000000000000000000062 -S315600365D00000000000000000000000000000000052 -S315600365E00000000000000000000000000000000042 -S315600365F00000000000000000000000000000000032 -S315600366000000000000000000000000000000000021 -S315600366100000000000000000000000000000000011 -S315600366200000000000000000000000000000000001 -S3156003663000000000000000000000000000000000F1 -S3156003664000000000000000000000000000000000E1 -S3156003665000000000000000000000000000000000D1 -S3156003666000000000000000000000000000000000C1 -S3156003667000000000000000000000000000000000B1 -S3156003668000000000000000000000000000000000A1 -S315600366900000000000000000000000000000000091 -S315600366A00000000000000000000000000000000081 -S315600366B00000000000000000000000000000000071 -S315600366C00000000000000000000000000000000061 -S315600366D00000000000000000000000000000000051 -S315600366E00000000000000000000000000000000041 -S315600366F00000000000000000000000000000000031 -S315600367000000000000000000000000000000000020 -S315600367100000000000000000000000000000000010 -S315600367200000000000000000000000000000000000 -S3156003673000000000000000000000000000000000F0 -S3156003674000000000000000000000000000000000E0 -S3156003675000000000000000000000000000000000D0 -S3156003676000000000000000000000000000000000C0 -S3156003677000000000000000000000000000000000B0 -S3156003678000000000000000000000000000000000A0 -S315600367900000000000000000000000000000000090 -S315600367A00000000000000000000000000000000080 -S315600367B00000000000000000000000000000000070 -S315600367C00000000000000000000000000000000060 -S315600367D00000000000000000000000000000000050 -S315600367E00000000000000000000000000000000040 -S315600367F00000000000000000000000000000000030 -S31560036800000000000000000000000000000000001F -S31560036810000000000000000000000000000000000F -S3156003682000000000000000000000000000000000FF -S3156003683000000000000000000000000000000000EF -S3156003684000000000000000000000000000000000DF -S3156003685000000000000000000000000000000000CF -S3156003686000000000000000000000000000000000BF -S3156003687000000000000000000000000000000000AF -S31560036880000000000000000000000000000000009F -S31560036890000000000000000000000000000000008F -S315600368A0000000000000000000000000000000007F -S315600368B0000000000000000000000000000000006F -S315600368C0000000000000000000000000000000005F -S315600368D0000000000000000000000000000000004F -S315600368E0000000000000000000000000000000003F -S315600368F0000000000000000000000000000000002F -S31560036900000000000000000000000000000000001E -S31560036910000000000000000000000000000000000E -S3156003692000000000000000000000000000000000FE -S3156003693000000000000000000000000000000000EE -S3156003694000000000000000000000000000000000DE -S3156003695000000000000000000000000000000000CE -S3156003696000000000000000000000000000000000BE -S3156003697000000000000000000000000000000000AE -S31560036980000000000000000000000000000000009E -S31560036990000000000000000000000000000000008E -S315600369A0000000000000000000000000000000007E -S315600369B0000000000000000000000000000000006E -S315600369C0000000000000000000000000000000005E -S315600369D0000000000000000000000000000000004E -S315600369E0000000000000000000000000000000003E -S315600369F0000000000000000000000000000000002E -S31560036A00000000000000000000000000000000001D -S31560036A10000000000000000000000000000000000D -S31560036A2000000000000000000000000000000000FD -S31560036A3000000000000000000000000000000000ED -S31560036A4000000000000000000000000000000000DD -S31560036A5000000000000000000000000000000000CD -S31560036A6000000000000000000000000000000000BD -S31560036A7000000000000000000000000000000000AD -S31560036A80000000000000000000000000000000009D -S31560036A90000000000000000000000000000000008D -S31560036AA0000000000000000000000000000000007D -S31560036AB0000000000000000000000000000000006D -S31560036AC0000000000000000000000000000000005D -S31560036AD0000000000000000000000000000000004D -S31560036AE0000000000000000000000000000000003D -S31560036AF0000000000000000000000000000000002D -S31560036B00000000000000000000000000000000001C -S31560036B10000000000000000000000000000000000C -S31560036B2000000000000000000000000000000000FC -S31560036B3000000000000000000000000000000000EC -S31560036B4000000000000000000000000000000000DC -S31560036B5000000000000000000000000000000000CC -S31560036B6000000000000000000000000000000000BC -S31560036B7000000000000000000000000000000000AC -S31560036B80000000000000000000000000000000009C -S31560036B90000000000000000000000000000000008C -S31560036BA0000000000000000000000000000000007C -S31560036BB0000000000000000000000000000000006C -S31560036BC0000000000000000000000000000000005C -S31560036BD0000000000000000000000000000000004C -S31560036BE0000000000000000000000000000000003C -S31560036BF0000000000000000000000000000000002C -S31560036C00000000000000000000000000000000001B -S31560036C10000000000000000000000000000000000B -S31560036C2000000000000000000000000000000000FB -S31560036C3000000000000000000000000000000000EB -S31560036C4000000000000000000000000000000000DB -S31560036C5000000000000000000000000000000000CB -S31560036C6000000000000000000000000000000000BB -S31560036C7000000000000000000000000000000000AB -S31560036C80000000000000000000000000000000009B -S31560036C90000000000000000000000000000000008B -S31560036CA0000000000000000000000000000000007B -S31560036CB0000000000000000000000000000000006B -S31560036CC0000000000000000000000000000000005B -S31560036CD0000000000000000000000000000000004B -S31560036CE0000000000000000000000000000000003B -S31560036CF0000000000000000000000000000000002B -S31560036D00000000000000000000000000000000001A -S31560036D10000000000000000000000000000000000A -S31560036D2000000000000000000000000000000000FA -S31560036D3000000000000000000000000000000000EA -S31560036D4000000000000000000000000000000000DA -S31560036D5000000000000000000000000000000000CA -S31560036D6000000000000000000000000000000000BA -S31560036D7000000000000000000000000000000000AA -S31560036D80000000000000000000000000000000009A -S31560036D90000000000000000000000000000000008A -S31560036DA0000000000000000000000000000000007A -S31560036DB0000000000000000000000000000000006A -S31560036DC0000000000000000000000000000000005A -S31560036DD0000000000000000000000000000000004A -S31560036DE0000000000000000000000000000000003A -S31560036DF0000000000000000000000000000000002A -S31560036E000000000000000000000000000000000019 -S31560036E100000000000000000000000000000000009 -S31560036E2000000000000000000000000000000000F9 -S31560036E3000000000000000000000000000000000E9 -S31560036E4000000000000000000000000000000000D9 -S31560036E5000000000000000000000000000000000C9 -S31560036E6000000000000000000000000000000000B9 -S31560036E7000000000000000000000000000000000A9 -S31560036E800000000000000000000000000000000099 -S31560036E900000000000000000000000000000000089 -S31560036EA00000000000000000000000000000000079 -S31560036EB00000000000000000000000000000000069 -S31560036EC00000000000000000000000000000000059 -S31560036ED00000000000000000000000000000000049 -S31560036EE00000000000000000000000000000000039 -S31560036EF00000000000000000000000000000000029 -S31560036F000000000000000000000000000000000018 -S31560036F100000000000000000000000000000000008 -S31560036F2000000000000000000000000000000000F8 -S31560036F3000000000000000000000000000000000E8 -S31560036F4000000000000000000000000000000000D8 -S31560036F5000000000000000000000000000000000C8 -S31560036F6000000000000000000000000000000000B8 -S31560036F7000000000000000000000000000000000A8 -S31560036F800000000000000000000000000000000098 -S31560036F900000000000000000000000000000000088 -S31560036FA00000000000000000000000000000000078 -S31560036FB00000000000000000000000000000000068 -S31560036FC00000000000000000000000000000000058 -S31560036FD00000000000000000000000000000000048 -S31560036FE00000000000000000000000000000000038 -S31560036FF00000000000000000000000000000000028 -S315600370000000000000000000000000000000000017 -S315600370100000000000000000000000000000000007 -S3156003702000000000000000000000000000000000F7 -S3156003703000000000000000000000000000000000E7 -S3156003704000000000000000000000000000000000D7 -S3156003705000000000000000000000000000000000C7 -S3156003706000000000000000000000000000000000B7 -S3156003707000000000000000000000000000000000A7 -S315600370800000000000000000000000000000000097 -S315600370900000000000000000000000000000000087 -S315600370A00000000000000000000000000000000077 -S315600370B00000000000000000000000000000000067 -S315600370C00000000000000000000000000000000057 -S315600370D00000000000000000000000000000000047 -S315600370E00000000000000000000000000000000037 -S315600370F00000000000000000000000000000000027 -S315600371000000000000000000000000000000000016 -S315600371100000000000000000000000000000000006 -S3156003712000000000000000000000000000000000F6 -S3156003713000000000000000000000000000000000E6 -S3156003714000000000000000000000000000000000D6 -S3156003715000000000000000000000000000000000C6 -S3156003716000000000000000000000000000000000B6 -S3156003717000000000000000000000000000000000A6 -S315600371800000000000000000000000000000000096 -S315600371900000000000000000000000000000000086 -S315600371A00000000000000000000000000000000076 -S315600371B00000000000000000000000000000000066 -S315600371C00000000000000000000000000000000056 -S315600371D00000000000000000000000000000000046 -S315600371E00000000000000000000000000000000036 -S315600371F00000000000000000000000000000000026 -S315600372000000000000000000000000000000000015 -S315600372100000000000000000000000000000000005 -S3156003722000000000000000000000000000000000F5 -S3156003723000000000000000000000000000000000E5 -S3156003724000000000000000000000000000000000D5 -S3156003725000000000000000000000000000000000C5 -S3156003726000000000000000000000000000000000B5 -S3156003727000000000000000000000000000000000A5 -S315600372800000000000000000000000000000000095 -S315600372900000000000000000000000000000000085 -S315600372A00000000000000000000000000000000075 -S315600372B00000000000000000000000000000000065 -S315600372C00000000000000000000000000000000055 -S315600372D00000000000000000000000000000000045 -S315600372E00000000000000000000000000000000035 -S315600372F00000000000000000000000000000000025 -S315600373000000000000000000000000000000000014 -S315600373100000000000000000000000000000000004 -S3156003732000000000000000000000000000000000F4 -S3156003733000000000000000000000000000000000E4 -S3156003734000000000000000000000000000000000D4 -S3156003735000000000000000000000000000000000C4 -S3156003736000000000000000000000000000000000B4 -S3156003737000000000000000000000000000000000A4 -S315600373800000000000000000000000000000000094 -S315600373900000000000000000000000000000000084 -S315600373A00000000000000000000000000000000074 -S315600373B00000000000000000000000000000000064 -S315600373C00000000000000000000000000000000054 -S315600373D00000000000000000000000000000000044 -S315600373E00000000000000000000000000000000034 -S315600373F00000000000000000000000000000000024 -S315600374000000000000000000000000000000000013 -S315600374100000000000000000000000000000000003 -S3156003742000000000000000000000000000000000F3 -S3156003743000000000000000000000000000000000E3 -S3156003744000000000000000000000000000000000D3 -S3156003745000000000000000000000000000000000C3 -S3156003746000000000000000000000000000000000B3 -S3156003747000000000000000000000000000000000A3 -S315600374800000000000000000000000000000000093 -S315600374900000000000000000000000000000000083 -S315600374A00000000000000000000000000000000073 -S315600374B00000000000000000000000000000000063 -S315600374C00000000000000000000000000000000053 -S315600374D00000000000000000000000000000000043 -S315600374E00000000000000000000000000000000033 -S315600374F00000000000000000000000000000000023 -S315600375000000000000000000000000000000000012 -S315600375100000000000000000000000000000000002 -S3156003752000000000000000000000000000000000F2 -S3156003753000000000000000000000000000000000E2 -S3156003754000000000000000000000000000000000D2 -S3156003755000000000000000000000000000000000C2 -S3156003756000000000000000000000000000000000B2 -S3156003757000000000000000000000000000000000A2 -S315600375800000000000000000000000000000000092 -S315600375900000000000000000000000000000000082 -S315600375A00000000000000000000000000000000072 -S315600375B00000000000000000000000000000000062 -S315600375C00000000000000000000000000000000052 -S315600375D00000000000000000000000000000000042 -S315600375E00000000000000000000000000000000032 -S315600375F00000000000000000000000000000000022 -S315600376000000000000000000000000000000000011 -S315600376100000000000000000000000000000000001 -S3156003762000000000000000000000000000000000F1 -S3156003763000000000000000000000000000000000E1 -S3156003764000000000000000000000000000000000D1 -S3156003765000000000000000000000000000000000C1 -S3156003766000000000000000000000000000000000B1 -S3156003767000000000000000000000000000000000A1 -S315600376800000000000000000000000000000000091 -S315600376900000000000000000000000000000000081 -S315600376A00000000000000000000000000000000071 -S315600376B00000000000000000000000000000000061 -S315600376C00000000000000000000000000000000051 -S315600376D00000000000000000000000000000000041 -S315600376E00000000000000000000000000000000031 -S315600376F00000000000000000000000000000000021 -S315600377000000000000000000000000000000000010 -S315600377100000000000000000000000000000000000 -S3156003772000000000000000000000000000000000F0 -S3156003773000000000000000000000000000000000E0 -S3156003774000000000000000000000000000000000D0 -S3156003775000000000000000000000000000000000C0 -S3156003776000000000000000000000000000000000B0 -S3156003777000000000000000000000000000000000A0 -S315600377800000000000000000000000000000000090 -S315600377900000000000000000000000000000000080 -S315600377A00000000000000000000000000000000070 -S315600377B00000000000000000000000000000000060 -S315600377C00000000000000000000000000000000050 -S315600377D00000000000000000000000000000000040 -S315600377E00000000000000000000000000000000030 -S315600377F00000000000000000000000000000000020 -S31560037800000000000000000000000000000000000F -S3156003781000000000000000000000000000000000FF -S3156003782000000000000000000000000000000000EF -S3156003783000000000000000000000000000000000DF -S3156003784000000000000000000000000000000000CF -S3156003785000000000000000000000000000000000BF -S3156003786000000000000000000000000000000000AF -S31560037870000000000000000000000000000000009F -S31560037880000000000000000000000000000000008F -S31560037890000000000000000000000000000000007F -S315600378A0000000000000000000000000000000006F -S315600378B0000000000000000000000000000000005F -S315600378C0000000000000000000000000000000004F -S315600378D0000000000000000000000000000000003F -S315600378E0000000000000000000000000000000002F -S315600378F0000000000000000000000000000000001F -S31560037900000000000000000000000000000000000E -S3156003791000000000000000000000000000000000FE -S3156003792000000000000000000000000000000000EE -S3156003793000000000000000000000000000000000DE -S3156003794000000000000000000000000000000000CE -S3156003795000000000000000000000000000000000BE -S3156003796000000000000000000000000000000000AE -S31560037970000000000000000000000000000000009E -S31560037980000000000000000000000000000000008E -S31560037990000000000000000000000000000000007E -S315600379A0000000000000000000000000000000006E -S315600379B0000000000000000000000000000000005E -S315600379C0000000000000000000000000000000004E -S315600379D0000000000000000000000000000000003E -S315600379E0000000000000000000000000000000002E -S315600379F0000000000000000000000000000000001E -S31560037A00000000000000000000000000000000000D -S31560037A1000000000000000000000000000000000FD -S31560037A2000000000000000000000000000000000ED -S31560037A3000000000000000000000000000000000DD -S31560037A4000000000000000000000000000000000CD -S31560037A5000000000000000000000000000000000BD -S31560037A6000000000000000000000000000000000AD -S31560037A70000000000000000000000000000000009D -S31560037A80000000000000000000000000000000008D -S31560037A90000000000000000000000000000000007D -S31560037AA0000000000000000000000000000000006D -S31560037AB0000000000000000000000000000000005D -S31560037AC0000000000000000000000000000000004D -S31560037AD0000000000000000000000000000000003D -S31560037AE0000000000000000000000000000000002D -S31560037AF0000000000000000000000000000000001D -S31560037B00000000000000000000000000000000000C -S31560037B1000000000000000000000000000000000FC -S31560037B2000000000000000000000000000000000EC -S31560037B3000000000000000000000000000000000DC -S31560037B4000000000000000000000000000000000CC -S31560037B5000000000000000000000000000000000BC -S31560037B6000000000000000000000000000000000AC -S31560037B70000000000000000000000000000000009C -S31560037B80000000000000000000000000000000008C -S31560037B90000000000000000000000000000000007C -S31560037BA0000000000000000000000000000000006C -S31560037BB0000000000000000000000000000000005C -S31560037BC0000000000000000000000000000000004C -S31560037BD0000000000000000000000000000000003C -S31560037BE0000000000000000000000000000000002C -S31560037BF0000000000000000000000000000000001C -S31560037C00000000000000000000000000000000000B -S31560037C1000000000000000000000000000000000FB -S31560037C2000000000000000000000000000000000EB -S31560037C3000000000000000000000000000000000DB -S31560037C4000000000000000000000000000000000CB -S31560037C5000000000000000000000000000000000BB -S31560037C6000000000000000000000000000000000AB -S31560037C70000000000000000000000000000000009B -S31560037C80000000000000000000000000000000008B -S31560037C90000000000000000000000000000000007B -S31560037CA0000000000000000000000000000000006B -S31560037CB0000000000000000000000000000000005B -S31560037CC0000000000000000000000000000000004B -S31560037CD0000000000000000000000000000000003B -S31560037CE0000000000000000000000000000000002B -S31560037CF0000000000000000000000000000000001B -S31560037D00000000000000000000000000000000000A -S31560037D1000000000000000000000000000000000FA -S31560037D2000000000000000000000000000000000EA -S31560037D3000000000000000000000000000000000DA -S31560037D4000000000000000000000000000000000CA -S31560037D5000000000000000000000000000000000BA -S31560037D6000000000000000000000000000000000AA -S31560037D70000000000000000000000000000000009A -S31560037D80000000000000000000000000000000008A -S31560037D90000000000000000000000000000000007A -S31560037DA0000000000000000000000000000000006A -S31560037DB0000000000000000000000000000000005A -S31560037DC0000000000000000000000000000000004A -S31560037DD0000000000000000000000000000000003A -S31560037DE0000000000000000000000000000000002A -S31560037DF0000000000000000000000000000000001A -S31560037E000000000000000000000000000000000009 -S31560037E1000000000000000000000000000000000F9 -S31560037E2000000000000000000000000000000000E9 -S31560037E3000000000000000000000000000000000D9 -S31560037E4000000000000000000000000000000000C9 -S31560037E5000000000000000000000000000000000B9 -S31560037E6000000000000000000000000000000000A9 -S31560037E700000000000000000000000000000000099 -S31560037E800000000000000000000000000000000089 -S31560037E900000000000000000000000000000000079 -S31560037EA00000000000000000000000000000000069 -S31560037EB00000000000000000000000000000000059 -S31560037EC00000000000000000000000000000000049 -S31560037ED00000000000000000000000000000000039 -S31560037EE00000000000000000000000000000000029 -S31560037EF00000000000000000000000000000000019 -S31560037F000000000000000000000000000000000008 -S31560037F1000000000000000000000000000000000F8 -S31560037F2000000000000000000000000000000000E8 -S31560037F3000000000000000000000000000000000D8 -S31560037F4000000000000000000000000000000000C8 -S31560037F5000000000000000000000000000000000B8 -S31560037F6000000000000000000000000000000000A8 -S31560037F700000000000000000000000000000000098 -S31560037F800000000000000000000000000000000088 -S31560037F900000000000000000000000000000000078 -S31560037FA00000000000000000000000000000000068 -S31560037FB00000000000000000000000000000000058 -S31560037FC00000000000000000000000000000000048 -S31560037FD00000000000000000000000000000000038 -S31560037FE00000000000000000000000000000000028 -S31560037FF00000000000000000000000000000000018 -S315600380000000000000000000000000000000000007 -S3156003801000000000000000000000000000000000F7 -S3156003802000000000000000000000000000000000E7 -S3156003803000000000000000000000000000000000D7 -S3156003804000000000000000000000000000000000C7 -S3156003805000000000000000000000000000000000B7 -S3156003806000000000000000000000000000000000A7 -S315600380700000000000000000000000000000000097 -S315600380800000000000000000000000000000000087 -S315600380900000000000000000000000000000000077 -S315600380A00000000000000000000000000000000067 -S315600380B00000000000000000000000000000000057 -S315600380C00000000000000000000000000000000047 -S315600380D00000000000000000000000000000000037 -S315600380E00000000000000000000000000000000027 -S315600380F00000000000000000000000000000000017 -S315600381000000000000000000000000000000000006 -S3156003811000000000000000000000000000000000F6 -S3156003812000000000000000000000000000000000E6 -S3156003813000000000000000000000000000000000D6 -S3156003814000000000000000000000000000000000C6 -S3156003815000000000000000000000000000000000B6 -S3156003816000000000000000000000000000000000A6 -S315600381700000000000000000000000000000000096 -S315600381800000000000000000000000000000000086 -S315600381900000000000000000000000000000000076 -S315600381A00000000000000000000000000000000066 -S315600381B00000000000000000000000000000000056 -S315600381C00000000000000000000000000000000046 -S315600381D00000000000000000000000000000000036 -S315600381E00000000000000000000000000000000026 -S315600381F00000000000000000000000000000000016 -S315600382000000000000000000000000000000000005 -S3156003821000000000000000000000000000000000F5 -S3156003822000000000000000000000000000000000E5 -S3156003823000000000000000000000000000000000D5 -S3156003824000000000000000000000000000000000C5 -S3156003825000000000000000000000000000000000B5 -S3156003826000000000000000000000000000000000A5 -S315600382700000000000000000000000000000000095 -S315600382800000000000000000000000000000000085 -S315600382900000000000000000000000000000000075 -S315600382A00000000000000000000000000000000065 -S315600382B00000000000000000000000000000000055 -S315600382C00000000000000000000000000000000045 -S315600382D00000000000000000000000000000000035 -S315600382E00000000000000000000000000000000025 -S315600382F00000000000000000000000000000000015 -S315600383000000000000000000000000000000000004 -S3156003831000000000000000000000000000000000F4 -S3156003832000000000000000000000000000000000E4 -S3156003833000000000000000000000000000000000D4 -S3156003834000000000000000000000000000000000C4 -S3156003835000000000000000000000000000000000B4 -S3156003836000000000000000000000000000000000A4 -S315600383700000000000000000000000000000000094 -S315600383800000000000000000000000000000000084 -S315600383900000000000000000000000000000000074 -S315600383A00000000000000000000000000000000064 -S315600383B00000000000000000000000000000000054 -S315600383C00000000000000000000000000000000044 -S315600383D00000000000000000000000000000000034 -S315600383E00000000000000000000000000000000024 -S315600383F00000000000000000000000000000000014 -S315600384000000000000000000000000000000000003 -S3156003841000000000000000000000000000000000F3 -S3156003842000000000000000000000000000000000E3 -S3156003843000000000000000000000000000000000D3 -S3156003844000000000000000000000000000000000C3 -S3156003845000000000000000000000000000000000B3 -S3156003846000000000000000000000000000000000A3 -S315600384700000000000000000000000000000000093 -S315600384800000000000000000000000000000000083 -S315600384900000000000000000000000000000000073 -S315600384A00000000000000000000000000000000063 -S315600384B00000000000000000000000000000000053 -S315600384C00000000000000000000000000000000043 -S315600384D00000000000000000000000000000000033 -S315600384E00000000000000000000000000000000023 -S315600384F00000000000000000000000000000000013 -S315600385000000000000000000000000000000000002 -S3156003851000000000000000000000000000000000F2 -S3156003852000000000000000000000000000000000E2 -S3156003853000000000000000000000000000000000D2 -S3156003854000000000000000000000000000000000C2 -S3156003855000000000000000000000000000000000B2 -S3156003856000000000000000000000000000000000A2 -S315600385700000000000000000000000000000000092 -S315600385800000000000000000000000000000000082 -S315600385900000000000000000000000000000000072 -S315600385A00000000000000000000000000000000062 -S315600385B00000000000000000000000000000000052 -S315600385C00000000000000000000000000000000042 -S315600385D00000000000000000000000000000000032 -S315600385E00000000000000000000000000000000022 -S315600385F00000000000000000000000000000000012 -S315600386000000000000000000000000000000000001 -S3156003861000000000000000000000000000000000F1 -S3156003862000000000000000000000000000000000E1 -S3156003863000000000000000000000000000000000D1 -S3156003864000000000000000000000000000000000C1 -S3156003865000000000000000000000000000000000B1 -S3156003866000000000000000000000000000000000A1 -S315600386700000000000000000000000000000000091 -S315600386800000000000000000000000000000000081 -S315600386900000000000000000000000000000000071 -S315600386A00000000000000000000000000000000061 -S315600386B00000000000000000000000000000000051 -S315600386C00000000000000000000000000000000041 -S315600386D00000000000000000000000000000000031 -S315600386E00000000000000000000000000000000021 -S315600386F00000000000000000000000000000000011 -S315600387000000000000000000000000000000000000 -S3156003871000000000000000000000000000000000F0 -S3156003872000000000000000000000000000000000E0 -S3156003873000000000000000000000000000000000D0 -S3156003874000000000000000000000000000000000C0 -S3156003875000000000000000000000000000000000B0 -S3156003876000000000000000000000000000000000A0 -S315600387700000000000000000000000000000000090 -S315600387800000000000000000000000000000000080 -S315600387900000000000000000000000000000000070 -S315600387A00000000000000000000000000000000060 -S315600387B00000000000000000000000000000000050 -S315600387C00000000000000000000000000000000040 -S315600387D00000000000000000000000000000000030 -S315600387E00000000000000000000000000000000020 -S315600387F00000000000000000000000000000000010 -S3156003880000000000000000000000000000000000FF -S3156003881000000000000000000000000000000000EF -S3156003882000000000000000000000000000000000DF -S3156003883000000000000000000000000000000000CF -S3156003884000000000000000000000000000000000BF -S3156003885000000000000000000000000000000000AF -S31560038860000000000000000000000000000000009F -S31560038870000000000000000000000000000000008F -S31560038880000000000000000000000000000000007F -S31560038890000000000000000000000000000000006F -S315600388A0000000000000000000000000000000005F -S315600388B0000000000000000000000000000000004F -S315600388C0000000000000000000000000000000003F -S315600388D0000000000000000000000000000000002F -S315600388E0000000000000000000000000000000001F -S315600388F0000000000000000000000000000000000F -S3156003890000000000000000000000000000000000FE -S3156003891000000000000000000000000000000000EE -S3156003892000000000000000000000000000000000DE -S3156003893000000000000000000000000000000000CE -S3156003894000000000000000000000000000000000BE -S3156003895000000000000000000000000000000000AE -S31560038960000000000000000000000000000000009E -S31560038970000000000000000000000000000000008E -S31560038980000000000000000000000000000000007E -S31560038990000000000000000000000000000000006E -S315600389A0000000000000000000000000000000005E -S315600389B0000000000000000000000000000000004E -S315600389C0000000000000000000000000000000003E -S315600389D0000000000000000000000000000000002E -S315600389E0000000000000000000000000000000001E -S315600389F0000000000000000000000000000000000E -S31560038A0000000000000000000000000000000000FD -S31560038A1000000000000000000000000000000000ED -S31560038A2000000000000000000000000000000000DD -S31560038A3000000000000000000000000000000000CD -S31560038A4000000000000000000000000000000000BD -S31560038A5000000000000000000000000000000000AD -S31560038A60000000000000000000000000000000009D -S31560038A70000000000000000000000000000000008D -S31560038A80000000000000000000000000000000007D -S31560038A90000000000000000000000000000000006D -S31560038AA0000000000000000000000000000000005D -S31560038AB0000000000000000000000000000000004D -S31560038AC0000000000000000000000000000000003D -S31560038AD0000000000000000000000000000000002D -S31560038AE0000000000000000000000000000000001D -S31560038AF0000000000000000000000000000000000D -S31560038B0000000000000000000000000000000000FC -S31560038B1000000000000000000000000000000000EC -S31560038B2000000000000000000000000000000000DC -S31560038B3000000000000000000000000000000000CC -S31560038B4000000000000000000000000000000000BC -S31560038B5000000000000000000000000000000000AC -S31560038B60000000000000000000000000000000009C -S31560038B70000000000000000000000000000000008C -S31560038B80000000000000000000000000000000007C -S31560038B90000000000000000000000000000000006C -S31560038BA0000000000000000000000000000000005C -S31560038BB0000000000000000000000000000000004C -S31560038BC0000000000000000000000000000000003C -S31560038BD0000000000000000000000000000000002C -S31560038BE0000000000000000000000000000000001C -S31560038BF0000000000000000000000000000000000C -S31560038C0000000000000000000000000000000000FB -S31560038C1000000000000000000000000000000000EB -S31560038C2000000000000000000000000000000000DB -S31560038C3000000000000000000000000000000000CB -S31560038C4000000000000000000000000000000000BB -S31560038C5000000000000000000000000000000000AB -S31560038C60000000000000000000000000000000009B -S31560038C70000000000000000000000000000000008B -S31560038C80000000000000000000000000000000007B -S31560038C90000000000000000000000000000000006B -S31560038CA0000000000000000000000000000000005B -S31560038CB0000000000000000000000000000000004B -S31560038CC0000000000000000000000000000000003B -S31560038CD0000000000000000000000000000000002B -S31560038CE0000000000000000000000000000000001B -S31560038CF0000000000000000000000000000000000B -S31560038D0000000000000000000000000000000000FA -S31560038D1000000000000000000000000000000000EA -S31560038D2000000000000000000000000000000000DA -S31560038D3000000000000000000000000000000000CA -S31560038D4000000000000000000000000000000000BA -S31560038D5000000000000000000000000000000000AA -S31560038D60000000000000000000000000000000009A -S31560038D70000000000000000000000000000000008A -S31560038D80000000000000000000000000000000007A -S31560038D90000000000000000000000000000000006A -S31560038DA0000000000000000000000000000000005A -S31560038DB0000000000000000000000000000000004A -S31560038DC0000000000000000000000000000000003A -S31560038DD0000000000000000000000000000000002A -S31560038DE0000000000000000000000000000000001A -S31560038DF0000000000000000000000000000000000A -S31560038E0000000000000000000000000000000000F9 -S31560038E1000000000000000000000000000000000E9 -S31560038E2000000000000000000000000000000000D9 -S31560038E3000000000000000000000000000000000C9 -S31560038E4000000000000000000000000000000000B9 -S31560038E5000000000000000000000000000000000A9 -S31560038E600000000000000000000000000000000099 -S31560038E700000000000000000000000000000000089 -S31560038E800000000000000000000000000000000079 -S31560038E900000000000000000000000000000000069 -S31560038EA00000000000000000000000000000000059 -S31560038EB00000000000000000000000000000000049 -S31560038EC00000000000000000000000000000000039 -S31560038ED00000000000000000000000000000000029 -S31560038EE00000000000000000000000000000000019 -S31560038EF00000000000000000000000000000000009 -S31560038F0000000000000000000000000000000000F8 -S31560038F1000000000000000000000000000000000E8 -S31560038F2000000000000000000000000000000000D8 -S31560038F3000000000000000000000000000000000C8 -S31560038F4000000000000000000000000000000000B8 -S31560038F5000000000000000000000000000000000A8 -S31560038F600000000000000000000000000000000098 -S31560038F700000000000000000000000000000000088 -S31560038F800000000000000000000000000000000078 -S31560038F900000000000000000000000000000000068 -S31560038FA00000000000000000000000000000000058 -S31560038FB00000000000000000000000000000000048 -S31560038FC00000000000000000000000000000000038 -S31560038FD00000000000000000000000000000000028 -S31560038FE00000000000000000000000000000000018 -S31560038FF00000000000000000000000000000000008 -S3156003900000000000000000000000000000000000F7 -S3156003901000000000000000000000000000000000E7 -S3156003902000000000000000000000000000000000D7 -S3156003903000000000000000000000000000000000C7 -S3156003904000000000000000000000000000000000B7 -S3156003905000000000000000000000000000000000A7 -S315600390600000000000000000000000000000000097 -S315600390700000000000000000000000000000000087 -S315600390800000000000000000000000000000000077 -S315600390900000000000000000000000000000000067 -S315600390A00000000000000000000000000000000057 -S315600390B00000000000000000000000000000000047 -S315600390C00000000000000000000000000000000037 -S315600390D00000000000000000000000000000000027 -S315600390E00000000000000000000000000000000017 -S315600390F00000000000000000000000000000000007 -S3156003910000000000000000000000000000000000F6 -S3156003911000000000000000000000000000000000E6 -S3156003912000000000000000000000000000000000D6 -S3156003913000000000000000000000000000000000C6 -S3156003914000000000000000000000000000000000B6 -S3156003915000000000000000000000000000000000A6 -S315600391600000000000000000000000000000000096 -S315600391700000000000000000000000000000000086 -S315600391800000000000000000000000000000000076 -S315600391900000000000000000000000000000000066 -S315600391A00000000000000000000000000000000056 -S315600391B00000000000000000000000000000000046 -S315600391C00000000000000000000000000000000036 -S315600391D00000000000000000000000000000000026 -S315600391E00000000000000000000000000000000016 -S315600391F00000000000000000000000000000000006 -S3156003920000000000000000000000000000000000F5 -S3156003921000000000000000000000000000000000E5 -S3156003922000000000000000000000000000000000D5 -S3156003923000000000000000000000000000000000C5 -S3156003924000000000000000000000000000000000B5 -S3156003925000000000000000000000000000000000A5 -S315600392600000000000000000000000000000000095 -S315600392700000000000000000000000000000000085 -S315600392800000000000000000000000000000000075 -S315600392900000000000000000000000000000000065 -S315600392A00000000000000000000000000000000055 -S315600392B00000000000000000000000000000000045 -S315600392C00000000000000000000000000000000035 -S315600392D00000000000000000000000000000000025 -S315600392E00000000000000000000000000000000015 -S315600392F00000000000000000000000000000000005 -S3156003930000000000000000000000000000000000F4 -S3156003931000000000000000000000000000000000E4 -S3156003932000000000000000000000000000000000D4 -S3156003933000000000000000000000000000000000C4 -S3156003934000000000000000000000000000000000B4 -S3156003935000000000000000000000000000000000A4 -S315600393600000000000000000000000000000000094 -S315600393700000000000000000000000000000000084 -S315600393800000000000000000000000000000000074 -S315600393900000000000000000000000000000000064 -S315600393A00000000000000000000000000000000054 -S315600393B00000000000000000000000000000000044 -S315600393C00000000000000000000000000000000034 -S315600393D00000000000000000000000000000000024 -S315600393E00000000000000000000000000000000014 -S315600393F00000000000000000000000000000000004 -S3156003940000000000000000000000000000000000F3 -S3156003941000000000000000000000000000000000E3 -S3156003942000000000000000000000000000000000D3 -S3156003943000000000000000000000000000000000C3 -S3156003944000000000000000000000000000000000B3 -S3156003945000000000000000000000000000000000A3 -S315600394600000000000000000000000000000000093 -S315600394700000000000000000000000000000000083 -S315600394800000000000000000000000000000000073 -S315600394900000000000000000000000000000000063 -S315600394A00000000000000000000000000000000053 -S315600394B00000000000000000000000000000000043 -S315600394C00000000000000000000000000000000033 -S315600394D00000000000000000000000000000000023 -S315600394E00000000000000000000000000000000013 -S315600394F00000000000000000000000000000000003 -S3156003950000000000000000000000000000000000F2 -S3156003951000000000000000000000000000000000E2 -S3156003952000000000000000000000000000000000D2 -S3156003953000000000000000000000000000000000C2 -S3156003954000000000000000000000000000000000B2 -S3156003955000000000000000000000000000000000A2 -S315600395600000000000000000000000000000000092 -S315600395700000000000000000000000000000000082 -S315600395800000000000000000000000000000000072 -S315600395900000000000000000000000000000000062 -S315600395A00000000000000000000000000000000052 -S315600395B00000000000000000000000000000000042 -S315600395C00000000000000000000000000000000032 -S315600395D00000000000000000000000000000000022 -S315600395E00000000000000000000000000000000012 -S315600395F00000000000000000000000000000000002 -S3156003960000000000000000000000000000000000F1 -S3156003961000000000000000000000000000000000E1 -S3156003962000000000000000000000000000000000D1 -S3156003963000000000000000000000000000000000C1 -S3156003964000000000000000000000000000000000B1 -S3156003965000000000000000000000000000000000A1 -S315600396600000000000000000000000000000000091 -S315600396700000000000000000000000000000000081 -S315600396800000000000000000000000000000000071 -S315600396900000000000000000000000000000000061 -S315600396A00000000000000000000000000000000051 -S315600396B00000000000000000000000000000000041 -S315600396C00000000000000000000000000000000031 -S315600396D00000000000000000000000000000000021 -S315600396E00000000000000000000000000000000011 -S315600396F00000000000000000000000000000000001 -S3156003970000000000000000000000000000000000F0 -S3156003971000000000000000000000000000000000E0 -S3156003972000000000000000000000000000000000D0 -S3156003973000000000000000000000000000000000C0 -S3156003974000000000000000000000000000000000B0 -S3156003975000000000000000000000000000000000A0 -S315600397600000000000000000000000000000000090 -S315600397700000000000000000000000000000000080 -S315600397800000000000000000000000000000000070 -S315600397900000000000000000000000000000000060 -S315600397A00000000000000000000000000000000050 -S315600397B00000000000000000000000000000000040 -S315600397C00000000000000000000000000000000030 -S315600397D00000000000000000000000000000000020 -S315600397E00000000000000000000000000000000010 -S315600397F00000000000000000000000000000000000 -S3156003980000000000000000000000000000000000EF -S3156003981000000000000000000000000000000000DF -S3156003982000000000000000000000000000000000CF -S3156003983000000000000000000000000000000000BF -S3156003984000000000000000000000000000000000AF -S31560039850000000000000000000000000000000009F -S31560039860000000000000000000000000000000008F -S31560039870000000000000000000000000000000007F -S31560039880000000000000000000000000000000006F -S31560039890000000000000000000000000000000005F -S315600398A0000000000000000000000000000000004F -S315600398B0000000000000000000000000000000003F -S315600398C0000000000000000000000000000000002F -S315600398D0000000000000000000000000000000001F -S315600398E0000000000000000000000000000000000F -S315600398F000000000000000000000000000000000FF -S3156003990000000000000000000000000000000000EE -S3156003991000000000000000000000000000000000DE -S3156003992000000000000000000000000000000000CE -S3156003993000000000000000000000000000000000BE -S3156003994000000000000000000000000000000000AE -S31560039950000000000000000000000000000000009E -S31560039960000000000000000000000000000000008E -S31560039970000000000000000000000000000000007E -S31560039980000000000000000000000000000000006E -S31560039990000000000000000000000000000000005E -S315600399A0000000000000000000000000000000004E -S315600399B0000000000000000000000000000000003E -S315600399C0000000000000000000000000000000002E -S315600399D0000000000000000000000000000000001E -S315600399E0000000000000000000000000000000000E -S315600399F000000000000000000000000000000000FE -S31560039A0000000000000000000000000000000000ED -S31560039A1000000000000000000000000000000000DD -S31560039A2000000000000000000000000000000000CD -S31560039A3000000000000000000000000000000000BD -S31560039A4000000000000000000000000000000000AD -S31560039A50000000000000000000000000000000009D -S31560039A60000000000000000000000000000000008D -S31560039A70000000000000000000000000000000007D -S31560039A80000000000000000000000000000000006D -S31560039A90000000000000000000000000000000005D -S31560039AA0000000000000000000000000000000004D -S31560039AB0000000000000000000000000000000003D -S31560039AC0000000000000000000000000000000002D -S31560039AD0000000000000000000000000000000001D -S31560039AE0000000000000000000000000000000000D -S31560039AF000000000000000000000000000000000FD -S31560039B0000000000000000000000000000000000EC -S31560039B1000000000000000000000000000000000DC -S31560039B2000000000000000000000000000000000CC -S31560039B3000000000000000000000000000000000BC -S31560039B4000000000000000000000000000000000AC -S31560039B50000000000000000000000000000000009C -S31560039B60000000000000000000000000000000008C -S31560039B70000000000000000000000000000000007C -S31560039B80000000000000000000000000000000006C -S31560039B90000000000000000000000000000000005C -S31560039BA0000000000000000000000000000000004C -S31560039BB0000000000000000000000000000000003C -S31560039BC0000000000000000000000000000000002C -S31560039BD0000000000000000000000000000000001C -S31560039BE0000000000000000000000000000000000C -S31560039BF000000000000000000000000000000000FC -S31560039C0000000000000000000000000000000000EB -S31560039C1000000000000000000000000000000000DB -S31560039C2000000000000000000000000000000000CB -S31560039C3000000000000000000000000000000000BB -S31560039C4000000000000000000000000000000000AB -S31560039C50000000000000000000000000000000009B -S31560039C60000000000000000000000000000000008B -S31560039C70000000000000000000000000000000007B -S31560039C80000000000000000000000000000000006B -S31560039C90000000000000000000000000000000005B -S31560039CA0000000000000000000000000000000004B -S31560039CB0000000000000000000000000000000003B -S31560039CC0000000000000000000000000000000002B -S31560039CD0000000000000000000000000000000001B -S31560039CE0000000000000000000000000000000000B -S31560039CF000000000000000000000000000000000FB -S31560039D0000000000000000000000000000000000EA -S31560039D1000000000000000000000000000000000DA -S31560039D2000000000000000000000000000000000CA -S31560039D3000000000000000000000000000000000BA -S31560039D4000000000000000000000000000000000AA -S31560039D50000000000000000000000000000000009A -S31560039D60000000000000000000000000000000008A -S31560039D70000000000000000000000000000000007A -S31560039D80000000000000000000000000000000006A -S31560039D90000000000000000000000000000000005A -S31560039DA0000000000000000000000000000000004A -S31560039DB0000000000000000000000000000000003A -S31560039DC0000000000000000000000000000000002A -S31560039DD0000000000000000000000000000000001A -S31560039DE0000000000000000000000000000000000A -S31560039DF000000000000000000000000000000000FA -S31560039E0000000000000000000000000000000000E9 -S31560039E1000000000000000000000000000000000D9 -S31560039E2000000000000000000000000000000000C9 -S31560039E3000000000000000000000000000000000B9 -S31560039E4000000000000000000000000000000000A9 -S31560039E500000000000000000000000000000000099 -S31560039E600000000000000000000000000000000089 -S31560039E700000000000000000000000000000000079 -S31560039E800000000000000000000000000000000069 -S31560039E900000000000000000000000000000000059 -S31560039EA00000000000000000000000000000000049 -S31560039EB00000000000000000000000000000000039 -S31560039EC00000000000000000000000000000000029 -S31560039ED00000000000000000000000000000000019 -S31560039EE00000000000000000000000000000000009 -S31560039EF000000000000000000000000000000000F9 -S31560039F0000000000000000000000000000000000E8 -S31560039F1000000000000000000000000000000000D8 -S31560039F2000000000000000000000000000000000C8 -S31560039F3000000000000000000000000000000000B8 -S31560039F4000000000000000000000000000000000A8 -S31560039F500000000000000000000000000000000098 -S31560039F600000000000000000000000000000000088 -S31560039F700000000000000000000000000000000078 -S31560039F800000000000000000000000000000000068 -S31560039F900000000000000000000000000000000058 -S31560039FA00000000000000000000000000000000048 -S31560039FB00000000000000000000000000000000038 -S31560039FC00000000000000000000000000000000028 -S31560039FD00000000000000000000000000000000018 -S31560039FE00000000000000000000000000000000008 -S31560039FF000000000000000000000000000000000F8 -S3156003A00000000000000000000000000000000000E7 -S3156003A01000000000000000000000000000000000D7 -S3156003A02000000000000000000000000000000000C7 -S3156003A03000000000000000000000000000000000B7 -S3156003A04000000000000000000000000000000000A7 -S3156003A0500000000000000000000000000000000097 -S3156003A0600000000000000000000000000000000087 -S3156003A0700000000000000000000000000000000077 -S3156003A0800000000000000000000000000000000067 -S3156003A0900000000000000000000000000000000057 -S3156003A0A00000000000000000000000000000000047 -S3156003A0B00000000000000000000000000000000037 -S3156003A0C00000000000000000000000000000000027 -S3156003A0D00000000000000000000000000000000017 -S3156003A0E00000000000000000000000000000000007 -S3156003A0F000000000000000000000000000000000F7 -S3156003A10000000000000000000000000000000000E6 -S3156003A11000000000000000000000000000000000D6 -S3156003A12000000000000000000000000000000000C6 -S3156003A13000000000000000000000000000000000B6 -S3156003A14000000000000000000000000000000000A6 -S3156003A1500000000000000000000000000000000096 -S3156003A1600000000000000000000000000000000086 -S3156003A1700000000000000000000000000000000076 -S3156003A1800000000000000000000000000000000066 -S3156003A1900000000000000000000000000000000056 -S3156003A1A00000000000000000000000000000000046 -S3156003A1B00000000000000000000000000000000036 -S3156003A1C00000000000000000000000000000000026 -S3156003A1D00000000000000000000000000000000016 -S3156003A1E00000000000000000000000000000000006 -S3156003A1F000000000000000000000000000000000F6 -S3156003A20000000000000000000000000000000000E5 -S3156003A21000000000000000000000000000000000D5 -S3156003A22000000000000000000000000000000000C5 -S3156003A23000000000000000000000000000000000B5 -S3156003A24000000000000000000000000000000000A5 -S3156003A2500000000000000000000000000000000095 -S3156003A2600000000000000000000000000000000085 -S3156003A2700000000000000000000000000000000075 -S3156003A2800000000000000000000000000000000065 -S3156003A2900000000000000000000000000000000055 -S3156003A2A00000000000000000000000000000000045 -S3156003A2B00000000000000000000000000000000035 -S3156003A2C00000000000000000000000000000000025 -S3156003A2D00000000000000000000000000000000015 -S3156003A2E00000000000000000000000000000000005 -S3156003A2F000000000000000000000000000000000F5 -S3156003A30000000000000000000000000000000000E4 -S3156003A31000000000000000000000000000000000D4 -S3156003A32000000000000000000000000000000000C4 -S3156003A33000000000000000000000000000000000B4 -S3156003A34000000000000000000000000000000000A4 -S3156003A3500000000000000000000000000000000094 -S3156003A3600000000000000000000000000000000084 -S3156003A3700000000000000000000000000000000074 -S3156003A3800000000000000000000000000000000064 -S3156003A3900000000000000000000000000000000054 -S3156003A3A00000000000000000000000000000000044 -S3156003A3B00000000000000000000000000000000034 -S3156003A3C00000000000000000000000000000000024 -S3156003A3D00000000000000000000000000000000014 -S3156003A3E00000000000000000000000000000000004 -S3156003A3F000000000000000000000000000000000F4 -S3156003A40000000000000000000000000000000000E3 -S3156003A41000000000000000000000000000000000D3 -S3156003A42000000000000000000000000000000000C3 -S3156003A43000000000000000000000000000000000B3 -S3156003A44000000000000000000000000000000000A3 -S3156003A4500000000000000000000000000000000093 -S3156003A4600000000000000000000000000000000083 -S3156003A4700000000000000000000000000000000073 -S3156003A4800000000000000000000000000000000063 -S3156003A4900000000000000000000000000000000053 -S3156003A4A00000000000000000000000000000000043 -S3156003A4B00000000000000000000000000000000033 -S3156003A4C00000000000000000000000000000000023 -S3156003A4D00000000000000000000000000000000013 -S3156003A4E00000000000000000000000000000000003 -S3156003A4F000000000000000000000000000000000F3 -S3156003A50000000000000000000000000000000000E2 -S3156003A51000000000000000000000000000000000D2 -S3156003A52000000000000000000000000000000000C2 -S3156003A53000000000000000000000000000000000B2 -S3156003A54000000000000000000000000000000000A2 -S3156003A5500000000000000000000000000000000092 -S3156003A5600000000000000000000000000000000082 -S3156003A5700000000000000000000000000000000072 -S3156003A5800000000000000000000000000000000062 -S3156003A5900000000000000000000000000000000052 -S3156003A5A00000000000000000000000000000000042 -S3156003A5B00000000000000000000000000000000032 -S3156003A5C00000000000000000000000000000000022 -S3156003A5D00000000000000000000000000000000012 -S3156003A5E00000000000000000000000000000000002 -S3156003A5F000000000000000000000000000000000F2 -S3156003A60000000000000000000000000000000000E1 -S3156003A61000000000000000000000000000000000D1 -S3156003A62000000000000000000000000000000000C1 -S3156003A63000000000000000000000000000000000B1 -S3156003A64000000000000000000000000000000000A1 -S3156003A6500000000000000000000000000000000091 -S3156003A6600000000000000000000000000000000081 -S3156003A6700000000000000000000000000000000071 -S3156003A6800000000000000000000000000000000061 -S3156003A6900000000000000000000000000000000051 -S3156003A6A00000000000000000000000000000000041 -S3156003A6B00000000000000000000000000000000031 -S3156003A6C00000000000000000000000000000000021 -S3156003A6D00000000000000000000000000000000011 -S3156003A6E00000000000000000000000000000000001 -S3156003A6F000000000000000000000000000000000F1 -S3156003A70000000000000000000000000000000000E0 -S3156003A71000000000000000000000000000000000D0 -S3156003A72000000000000000000000000000000000C0 -S3156003A73000000000000000000000000000000000B0 -S3156003A74000000000000000000000000000000000A0 -S3156003A7500000000000000000000000000000000090 -S3156003A7600000000000000000000000000000000080 -S3156003A7700000000000000000000000000000000070 -S3156003A7800000000000000000000000000000000060 -S3156003A7900000000000000000000000000000000050 -S3156003A7A00000000000000000000000000000000040 -S3156003A7B00000000000000000000000000000000030 -S3156003A7C00000000000000000000000000000000020 -S3156003A7D00000000000000000000000000000000010 -S3156003A7E00000000000000000000000000000000000 -S3156003A7F000000000000000000000000000000000F0 -S3156003A80000000000000000000000000000000000DF -S3156003A81000000000000000000000000000000000CF -S3156003A82000000000000000000000000000000000BF -S3156003A83000000000000000000000000000000000AF -S3156003A840000000000000000000000000000000009F -S3156003A850000000000000000000000000000000008F -S3156003A860000000000000000000000000000000007F -S3156003A870000000000000000000000000000000006F -S3156003A880000000000000000000000000000000005F -S3156003A890000000000000000000000000000000004F -S3156003A8A0000000000000000000000000000000003F -S3156003A8B0000000000000000000000000000000002F -S3156003A8C0000000000000000000000000000000001F -S3156003A8D0000000000000000000000000000000000F -S3156003A8E000000000000000000000000000000000FF -S3156003A8F000000000000000000000000000000000EF -S3156003A90000000000000000000000000000000000DE -S3156003A91000000000000000000000000000000000CE -S3156003A92000000000000000000000000000000000BE -S3156003A93000000000000000000000000000000000AE -S3156003A940000000000000000000000000000000009E -S3156003A950000000000000000000000000000000008E -S3156003A960000000000000000000000000000000007E -S3156003A970000000000000000000000000000000006E -S3156003A980000000000000000000000000000000005E -S3156003A990000000000000000000000000000000004E -S3156003A9A0000000000000000000000000000000003E -S3156003A9B0000000000000000000000000000000002E -S3156003A9C0000000000000000000000000000000001E -S3156003A9D0000000000000000000000000000000000E -S3156003A9E000000000000000000000000000000000FE -S3156003A9F000000000000000000000000000000000EE -S3156003AA0000000000000000000000000000000000DD -S3156003AA1000000000000000000000000000000000CD -S3156003AA2000000000000000000000000000000000BD -S3156003AA3000000000000000000000000000000000AD -S3156003AA40000000000000000000000000000000009D -S3156003AA50000000000000000000000000000000008D -S3156003AA60000000000000000000000000000000007D -S3156003AA70000000000000000000000000000000006D -S3156003AA80000000000000000000000000000000005D -S3156003AA90000000000000000000000000000000004D -S3156003AAA0000000000000000000000000000000003D -S3156003AAB0000000000000000000000000000000002D -S3156003AAC0000000000000000000000000000000001D -S3156003AAD0000000000000000000000000000000000D -S3156003AAE000000000000000000000000000000000FD -S3156003AAF000000000000000000000000000000000ED -S3156003AB0000000000000000000000000000000000DC -S3156003AB1000000000000000000000000000000000CC -S3156003AB2000000000000000000000000000000000BC -S3156003AB3000000000000000000000000000000000AC -S3156003AB40000000000000000000000000000000009C -S3156003AB50000000000000000000000000000000008C -S3156003AB60000000000000000000000000000000007C -S3156003AB70000000000000000000000000000000006C -S3156003AB80000000000000000000000000000000005C -S3156003AB90000000000000000000000000000000004C -S3156003ABA0000000000000000000000000000000003C -S3156003ABB0000000000000000000000000000000002C -S3156003ABC0000000000000000000000000000000001C -S3156003ABD0000000000000000000000000000000000C -S3156003ABE000000000000000000000000000000000FC -S3156003ABF000000000000000000000000000000000EC -S3156003AC0000000000000000000000000000000000DB -S3156003AC1000000000000000000000000000000000CB -S3156003AC2000000000000000000000000000000000BB -S3156003AC3000000000000000000000000000000000AB -S3156003AC40000000000000000000000000000000009B -S3156003AC50000000000000000000000000000000008B -S3156003AC60000000000000000000000000000000007B -S3156003AC70000000000000000000000000000000006B -S3156003AC80000000000000000000000000000000005B -S3156003AC90000000000000000000000000000000004B -S3156003ACA0000000000000000000000000000000003B -S3156003ACB0000000000000000000000000000000002B -S3156003ACC0000000000000000000000000000000001B -S3156003ACD0000000000000000000000000000000000B -S3156003ACE000000000000000000000000000000000FB -S3156003ACF000000000000000000000000000000000EB -S3156003AD0000000000000000000000000000000000DA -S3156003AD1000000000000000000000000000000000CA -S3156003AD2000000000000000000000000000000000BA -S3156003AD3000000000000000000000000000000000AA -S3156003AD40000000000000000000000000000000009A -S3156003AD50000000000000000000000000000000008A -S3156003AD60000000000000000000000000000000007A -S3156003AD70000000000000000000000000000000006A -S3156003AD80000000000000000000000000000000005A -S3156003AD90000000000000000000000000000000004A -S3156003ADA0000000000000000000000000000000003A -S3156003ADB0000000000000000000000000000000002A -S3156003ADC0000000000000000000000000000000001A -S3156003ADD0000000000000000000000000000000000A -S3156003ADE000000000000000000000000000000000FA -S3156003ADF000000000000000000000000000000000EA -S3156003AE0000000000000000000000000000000000D9 -S3156003AE1000000000000000000000000000000000C9 -S3156003AE2000000000000000000000000000000000B9 -S3156003AE3000000000000000000000000000000000A9 -S3156003AE400000000000000000000000000000000099 -S3156003AE500000000000000000000000000000000089 -S3156003AE600000000000000000000000000000000079 -S3156003AE700000000000000000000000000000000069 -S3156003AE800000000000000000000000000000000059 -S3156003AE900000000000000000000000000000000049 -S3156003AEA00000000000000000000000000000000039 -S3156003AEB00000000000000000000000000000000029 -S3156003AEC00000000000000000000000000000000019 -S3156003AED00000000000000000000000000000000009 -S3156003AEE000000000000000000000000000000000F9 -S3156003AEF000000000000000000000000000000000E9 -S3156003AF0000000000000000000000000000000000D8 -S3156003AF1000000000000000000000000000000000C8 -S3156003AF2000000000000000000000000000000000B8 -S3156003AF3000000000000000000000000000000000A8 -S3156003AF400000000000000000000000000000000098 -S3156003AF500000000000000000000000000000000088 -S3156003AF600000000000000000000000000000000078 -S3156003AF700000000000000000000000000000000068 -S3156003AF800000000000000000000000000000000058 -S3156003AF900000000000000000000000000000000048 -S3156003AFA00000000000000000000000000000000038 -S3156003AFB00000000000000000000000000000000028 -S3156003AFC00000000000000000000000000000000018 -S3156003AFD00000000000000000000000000000000008 -S3156003AFE000000000000000000000000000000000F8 -S3156003AFF000000000000000000000000000000000E8 -S3156003B00000000000000000000000000000000000D7 -S3156003B01000000000000000000000000000000000C7 -S3156003B02000000000000000000000000000000000B7 -S3156003B03000000000000000000000000000000000A7 -S3156003B0400000000000000000000000000000000097 -S3156003B0500000000000000000000000000000000087 -S3156003B0600000000000000000000000000000000077 -S3156003B0700000000000000000000000000000000067 -S3156003B0800000000000000000000000000000000057 -S3156003B0900000000000000000000000000000000047 -S3156003B0A00000000000000000000000000000000037 -S3156003B0B00000000000000000000000000000000027 -S3156003B0C00000000000000000000000000000000017 -S3156003B0D00000000000000000000000000000000007 -S3156003B0E000000000000000000000000000000000F7 -S3156003B0F000000000000000000000000000000000E7 -S3156003B10000000000000000000000000000000000D6 -S3156003B11000000000000000000000000000000000C6 -S3156003B12000000000000000000000000000000000B6 -S3156003B13000000000000000000000000000000000A6 -S3156003B1400000000000000000000000000000000096 -S3156003B1500000000000000000000000000000000086 -S3156003B1600000000000000000000000000000000076 -S3156003B1700000000000000000000000000000000066 -S3156003B1800000000000000000000000000000000056 -S3156003B1900000000000000000000000000000000046 -S3156003B1A00000000000000000000000000000000036 -S3156003B1B00000000000000000000000000000000026 -S3156003B1C00000000000000000000000000000000016 -S3156003B1D00000000000000000000000000000000006 -S3156003B1E000000000000000000000000000000000F6 -S3156003B1F000000000000000000000000000000000E6 -S3156003B20000000000000000000000000000000000D5 -S3156003B21000000000000000000000000000000000C5 -S3156003B22000000000000000000000000000000000B5 -S3156003B23000000000000000000000000000000000A5 -S3156003B2400000000000000000000000000000000095 -S3156003B2500000000000000000000000000000000085 -S3156003B2600000000000000000000000000000000075 -S3156003B2700000000000000000000000000000000065 -S3156003B2800000000000000000000000000000000055 -S3156003B2900000000000000000000000000000000045 -S3156003B2A00000000000000000000000000000000035 -S3156003B2B00000000000000000000000000000000025 -S3156003B2C00000000000000000000000000000000015 -S3156003B2D00000000000000000000000000000000005 -S3156003B2E000000000000000000000000000000000F5 -S3156003B2F000000000000000000000000000000000E5 -S3156003B30000000000000000000000000000000000D4 -S3156003B31000000000000000000000000000000000C4 -S3156003B32000000000000000000000000000000000B4 -S3156003B33000000000000000000000000000000000A4 -S3156003B3400000000000000000000000000000000094 -S3156003B3500000000000000000000000000000000084 -S3156003B3600000000000000000000000000000000074 -S3156003B3700000000000000000000000000000000064 -S3156003B3800000000000000000000000000000000054 -S3156003B3900000000000000000000000000000000044 -S3156003B3A00000000000000000000000000000000034 -S3156003B3B00000000000000000000000000000000024 -S3156003B3C00000000000000000000000000000000014 -S3156003B3D00000000000000000000000000000000004 -S3156003B3E000000000000000000000000000000000F4 -S3156003B3F000000000000000000000000000000000E4 -S3156003B40000000000000000000000000000000000D3 -S3156003B41000000000000000000000000000000000C3 -S3156003B42000000000000000000000000000000000B3 -S3156003B43000000000000000000000000000000000A3 -S3156003B4400000000000000000000000000000000093 -S3156003B4500000000000000000000000000000000083 -S3156003B4600000000000000000000000000000000073 -S3156003B4700000000000000000000000000000000063 -S3156003B4800000000000000000000000000000000053 -S3156003B4900000000000000000000000000000000043 -S3156003B4A00000000000000000000000000000000033 -S3156003B4B00000000000000000000000000000000023 -S3156003B4C00000000000000000000000000000000013 -S3156003B4D00000000000000000000000000000000003 -S3156003B4E000000000000000000000000000000000F3 -S3156003B4F000000000000000000000000000000000E3 -S3156003B50000000000000000000000000000000000D2 -S3156003B51000000000000000000000000000000000C2 -S3156003B52000000000000000000000000000000000B2 -S3156003B53000000000000000000000000000000000A2 -S3156003B5400000000000000000000000000000000092 -S3156003B5500000000000000000000000000000000082 -S3156003B5600000000000000000000000000000000072 -S3156003B5700000000000000000000000000000000062 -S3156003B5800000000000000000000000000000000052 -S3156003B5900000000000000000000000000000000042 -S3156003B5A00000000000000000000000000000000032 -S3156003B5B00000000000000000000000000000000022 -S3156003B5C00000000000000000000000000000000012 -S3156003B5D00000000000000000000000000000000002 -S3156003B5E000000000000000000000000000000000F2 -S3156003B5F000000000000000000000000000000000E2 -S3156003B60000000000000000000000000000000000D1 -S3156003B61000000000000000000000000000000000C1 -S3156003B62000000000000000000000000000000000B1 -S3156003B63000000000000000000000000000000000A1 -S3156003B6400000000000000000000000000000000091 -S3156003B6500000000000000000000000000000000081 -S3156003B6600000000000000000000000000000000071 -S3156003B6700000000000000000000000000000000061 -S3156003B6800000000000000000000000000000000051 -S3156003B6900000000000000000000000000000000041 -S3156003B6A00000000000000000000000000000000031 -S3156003B6B00000000000000000000000000000000021 -S3156003B6C00000000000000000000000000000000011 -S3156003B6D00000000000000000000000000000000001 -S3156003B6E000000000000000000000000000000000F1 -S3156003B6F000000000000000000000000000000000E1 -S3156003B70000000000000000000000000000000000D0 -S3156003B71000000000000000000000000000000000C0 -S3156003B72000000000000000000000000000000000B0 -S3156003B73000000000000000000000000000000000A0 -S3156003B7400000000000000000000000000000000090 -S3156003B7500000000000000000000000000000000080 -S3156003B7600000000000000000000000000000000070 -S3156003B7700000000000000000000000000000000060 -S3156003B7800000000000000000000000000000000050 -S3156003B7900000000000000000000000000000000040 -S3156003B7A00000000000000000000000000000000030 -S3156003B7B00000000000000000000000000000000020 -S3156003B7C00000000000000000000000000000000010 -S3156003B7D00000000000000000000000000000000000 -S3156003B7E000000000000000000000000000000000F0 -S3156003B7F000000000000000000000000000000000E0 -S3156003B80000000000000000000000000000000000CF -S3156003B81000000000000000000000000000000000BF -S3156003B82000000000000000000000000000000000AF -S3156003B830000000000000000000000000000000009F -S3156003B840000000000000000000000000000000008F -S3156003B850000000000000000000000000000000007F -S3156003B860000000000000000000000000000000006F -S3156003B870000000000000000000000000000000005F -S3156003B880000000000000000000000000000000004F -S3156003B890000000000000000000000000000000003F -S3156003B8A0000000000000000000000000000000002F -S3156003B8B0000000000000000000000000000000001F -S3156003B8C0000000000000000000000000000000000F -S3156003B8D000000000000000000000000000000000FF -S3156003B8E000000000000000000000000000000000EF -S3156003B8F000000000000000000000000000000000DF -S3156003B90000000000000000000000000000000000CE -S3156003B91000000000000000000000000000000000BE -S3156003B92000000000000000000000000000000000AE -S3156003B930000000000000000000000000000000009E -S3156003B940000000000000000000000000000000008E -S3156003B950000000000000000000000000000000007E -S3156003B960000000000000000000000000000000006E -S3156003B970000000000000000000000000000000005E -S3156003B980000000000000000000000000000000004E -S3156003B990000000000000000000000000000000003E -S3156003B9A0000000000000000000000000000000002E -S3156003B9B0000000000000000000000000000000001E -S3156003B9C0000000000000000000000000000000000E -S3156003B9D000000000000000000000000000000000FE -S3156003B9E000000000000000000000000000000000EE -S3156003B9F000000000000000000000000000000000DE -S3156003BA0000000000000000000000000000000000CD -S3156003BA1000000000000000000000000000000000BD -S3156003BA2000000000000000000000000000000000AD -S3156003BA30000000000000000000000000000000009D -S3156003BA40000000000000000000000000000000008D -S3156003BA50000000000000000000000000000000007D -S3156003BA60000000000000000000000000000000006D -S3156003BA70000000000000000000000000000000005D -S3156003BA80000000000000000000000000000000004D -S3156003BA90000000000000000000000000000000003D -S3156003BAA0000000000000000000000000000000002D -S3156003BAB0000000000000000000000000000000001D -S3156003BAC0000000000000000000000000000000000D -S3156003BAD000000000000000000000000000000000FD -S3156003BAE000000000000000000000000000000000ED -S3156003BAF000000000000000000000000000000000DD -S3156003BB0000000000000000000000000000000000CC -S3156003BB1000000000000000000000000000000000BC -S3156003BB2000000000000000000000000000000000AC -S3156003BB30000000000000000000000000000000009C -S3156003BB40000000000000000000000000000000008C -S3156003BB50000000000000000000000000000000007C -S3156003BB60000000000000000000000000000000006C -S3156003BB70000000000000000000000000000000005C -S3156003BB80000000000000000000000000000000004C -S3156003BB90000000000000000000000000000000003C -S3156003BBA0000000000000000000000000000000002C -S3156003BBB0000000000000000000000000000000001C -S3156003BBC0000000000000000000000000000000000C -S3156003BBD000000000000000000000000000000000FC -S3156003BBE000000000000000000000000000000000EC -S3156003BBF000000000000000000000000000000000DC -S3156003BC0000000000000000000000000000000000CB -S3156003BC1000000000000000000000000000000000BB -S3156003BC2000000000000000000000000000000000AB -S3156003BC30000000000000000000000000000000009B -S3156003BC40000000000000000000000000000000008B -S3156003BC50000000000000000000000000000000007B -S3156003BC60000000000000000000000000000000006B -S3156003BC70000000000000000000000000000000005B -S3156003BC80000000000000000000000000000000004B -S3156003BC90000000000000000000000000000000003B -S3156003BCA0000000000000000000000000000000002B -S3156003BCB0000000000000000000000000000000001B -S3156003BCC0000000000000000000000000000000000B -S3156003BCD000000000000000000000000000000000FB -S3156003BCE000000000000000000000000000000000EB -S3156003BCF000000000000000000000000000000000DB -S3156003BD0000000000000000000000000000000000CA -S3156003BD1000000000000000000000000000000000BA -S3156003BD2000000000000000000000000000000000AA -S3156003BD30000000000000000000000000000000009A -S3156003BD40000000000000000000000000000000008A -S3156003BD50000000000000000000000000000000007A -S3156003BD60000000000000000000000000000000006A -S3156003BD70000000000000000000000000000000005A -S3156003BD80000000000000000000000000000000004A -S3156003BD90000000000000000000000000000000003A -S3156003BDA0000000000000000000000000000000002A -S3156003BDB0000000000000000000000000000000001A -S3156003BDC0000000000000000000000000000000000A -S3156003BDD000000000000000000000000000000000FA -S3156003BDE000000000000000000000000000000000EA -S3156003BDF000000000000000000000000000000000DA -S3156003BE0000000000000000000000000000000000C9 -S3156003BE1000000000000000000000000000000000B9 -S3156003BE2000000000000000000000000000000000A9 -S3156003BE300000000000000000000000000000000099 -S3156003BE400000000000000000000000000000000089 -S3156003BE500000000000000000000000000000000079 -S3156003BE600000000000000000000000000000000069 -S3156003BE700000000000000000000000000000000059 -S3156003BE800000000000000000000000000000000049 -S3156003BE900000000000000000000000000000000039 -S3156003BEA00000000000000000000000000000000029 -S3156003BEB00000000000000000000000000000000019 -S3156003BEC00000000000000000000000000000000009 -S3156003BED000000000000000000000000000000000F9 -S3156003BEE000000000000000000000000000000000E9 -S3156003BEF000000000000000000000000000000000D9 -S3156003BF0000000000000000000000000000000000C8 -S3156003BF1000000000000000000000000000000000B8 -S3156003BF2000000000000000000000000000000000A8 -S3156003BF300000000000000000000000000000000098 -S3156003BF400000000000000000000000000000000088 -S3156003BF500000000000000000000000000000000078 -S3156003BF600000000000000000000000000000000068 -S3156003BF700000000000000000000000000000000058 -S3156003BF800000000000000000000000000000000048 -S3156003BF900000000000000000000000000000000038 -S3156003BFA00000000000000000000000000000000028 -S3156003BFB00000000000000000000000000000000018 -S3156003BFC00000000000000000000000000000000008 -S3156003BFD000000000000000000000000000000000F8 -S3156003BFE000000000000000000000000000000000E8 -S3156003BFF000000000000000000000000000000000D8 -S3156003C00000000000000000000000000000000000C7 -S3156003C01000000000000000000000000000000000B7 -S3156003C02000000000000000000000000000000000A7 -S3156003C0300000000000000000000000000000000097 -S3156003C0400000000000000000000000000000000087 -S3156003C0500000000000000000000000000000000077 -S3156003C0600000000000000000000000000000000067 -S3156003C0700000000000000000000000000000000057 -S3156003C0800000000000000000000000000000000047 -S3156003C0900000000000000000000000000000000037 -S3156003C0A00000000000000000000000000000000027 -S3156003C0B00000000000000000000000000000000017 -S3156003C0C00000000000000000000000000000000007 -S3156003C0D000000000000000000000000000000000F7 -S3156003C0E000000000000000000000000000000000E7 -S3156003C0F000000000000000000000000000000000D7 -S3156003C10000000000000000000000000000000000C6 -S3156003C11000000000000000000000000000000000B6 -S3156003C12000000000000000000000000000000000A6 -S3156003C1300000000000000000000000000000000096 -S3156003C1400000000000000000000000000000000086 -S3156003C1500000000000000000000000000000000076 -S3156003C1600000000000000000000000000000000066 -S3156003C1700000000000000000000000000000000056 -S3156003C1800000000000000000000000000000000046 -S3156003C1900000000000000000000000000000000036 -S3156003C1A00000000000000000000000000000000026 -S3156003C1B00000000000000000000000000000000016 -S3156003C1C00000000000000000000000000000000006 -S3156003C1D000000000000000000000000000000000F6 -S3156003C1E000000000000000000000000000000000E6 -S3156003C1F000000000000000000000000000000000D6 -S3156003C20000000000000000000000000000000000C5 -S3156003C21000000000000000000000000000000000B5 -S3156003C22000000000000000000000000000000000A5 -S3156003C2300000000000000000000000000000000095 -S3156003C2400000000000000000000000000000000085 -S3156003C2500000000000000000000000000000000075 -S3156003C2600000000000000000000000000000000065 -S3156003C2700000000000000000000000000000000055 -S3156003C2800000000000000000000000000000000045 -S3156003C2900000000000000000000000000000000035 -S3156003C2A00000000000000000000000000000000025 -S3156003C2B00000000000000000000000000000000015 -S3156003C2C00000000000000000000000000000000005 -S3156003C2D000000000000000000000000000000000F5 -S3156003C2E000000000000000000000000000000000E5 -S3156003C2F000000000000000000000000000000000D5 -S3156003C30000000000000000000000000000000000C4 -S3156003C31000000000000000000000000000000000B4 -S3156003C32000000000000000000000000000000000A4 -S3156003C3300000000000000000000000000000000094 -S3156003C3400000000000000000000000000000000084 -S3156003C3500000000000000000000000000000000074 -S3156003C3600000000000000000000000000000000064 -S3156003C3700000000000000000000000000000000054 -S3156003C3800000000000000000000000000000000044 -S3156003C3900000000000000000000000000000000034 -S3156003C3A00000000000000000000000000000000024 -S3156003C3B00000000000000000000000000000000014 -S3156003C3C00000000000000000000000000000000004 -S3156003C3D000000000000000000000000000000000F4 -S3156003C3E000000000000000000000000000000000E4 -S3156003C3F000000000000000000000000000000000D4 -S3156003C40000000000000000000000000000000000C3 -S3156003C41000000000000000000000000000000000B3 -S3156003C42000000000000000000000000000000000A3 -S3156003C4300000000000000000000000000000000093 -S3156003C4400000000000000000000000000000000083 -S3156003C4500000000000000000000000000000000073 -S3156003C4600000000000000000000000000000000063 -S3156003C4700000000000000000000000000000000053 -S3156003C4800000000000000000000000000000000043 -S3156003C4900000000000000000000000000000000033 -S3156003C4A00000000000000000000000000000000023 -S3156003C4B00000000000000000000000000000000013 -S3156003C4C00000000000000000000000000000000003 -S3156003C4D000000000000000000000000000000000F3 -S3156003C4E000000000000000000000000000000000E3 -S3156003C4F000000000000000000000000000000000D3 -S3156003C50000000000000000000000000000000000C2 -S3156003C51000000000000000000000000000000000B2 -S3156003C52000000000000000000000000000000000A2 -S3156003C5300000000000000000000000000000000092 -S3156003C5400000000000000000000000000000000082 -S3156003C5500000000000000000000000000000000072 -S3156003C5600000000000000000000000000000000062 -S3156003C5700000000000000000000000000000000052 -S3156003C5800000000000000000000000000000000042 -S3156003C5900000000000000000000000000000000032 -S3156003C5A00000000000000000000000000000000022 -S3156003C5B00000000000000000000000000000000012 -S3156003C5C00000000000000000000000000000000002 -S3156003C5D000000000000000000000000000000000F2 -S3156003C5E000000000000000000000000000000000E2 -S3156003C5F000000000000000000000000000000000D2 -S3156003C60000000000000000000000000000000000C1 -S3156003C61000000000000000000000000000000000B1 -S3156003C62000000000000000000000000000000000A1 -S3156003C6300000000000000000000000000000000091 -S3156003C6400000000000000000000000000000000081 -S3156003C6500000000000000000000000000000000071 -S3156003C6600000000000000000000000000000000061 -S3156003C6700000000000000000000000000000000051 -S3156003C6800000000000000000000000000000000041 -S3156003C6900000000000000000000000000000000031 -S3156003C6A00000000000000000000000000000000021 -S3156003C6B00000000000000000000000000000000011 -S3156003C6C00000000000000000000000000000000001 -S3156003C6D000000000000000000000000000000000F1 -S3156003C6E000000000000000000000000000000000E1 -S3156003C6F000000000000000000000000000000000D1 -S3156003C70000000000000000000000000000000000C0 -S3156003C71000000000000000000000000000000000B0 -S3156003C72000000000000000000000000000000000A0 -S3156003C7300000000000000000000000000000000090 -S3156003C7400000000000000000000000000000000080 -S3156003C7500000000000000000000000000000000070 -S3156003C7600000000000000000000000000000000060 -S3156003C7700000000000000000000000000000000050 -S3156003C7800000000000000000000000000000000040 -S3156003C7900000000000000000000000000000000030 -S3156003C7A00000000000000000000000000000000020 -S3156003C7B00000000000000000000000000000000010 -S3156003C7C00000000000000000000000000000000000 -S3156003C7D000000000000000000000000000000000F0 -S3156003C7E000000000000000000000000000000000E0 -S3156003C7F000000000000000000000000000000000D0 -S3156003C80000000000000000000000000000000000BF -S3156003C81000000000000000000000000000000000AF -S3156003C820000000000000000000000000000000009F -S3156003C830000000000000000000000000000000008F -S3156003C840000000000000000000000000000000007F -S3156003C850000000000000000000000000000000006F -S3156003C860000000000000000000000000000000005F -S3156003C870000000000000000000000000000000004F -S3156003C880000000000000000000000000000000003F -S3156003C890000000000000000000000000000000002F -S3156003C8A0000000000000000000000000000000001F -S3156003C8B0000000000000000000000000000000000F -S3156003C8C000000000000000000000000000000000FF -S3156003C8D000000000000000000000000000000000EF -S3156003C8E000000000000000000000000000000000DF -S3156003C8F000000000000000000000000000000000CF -S3156003C90000000000000000000000000000000000BE -S3156003C91000000000000000000000000000000000AE -S3156003C920000000000000000000000000000000009E -S3156003C930000000000000000000000000000000008E -S3156003C940000000000000000000000000000000007E -S3156003C950000000000000000000000000000000006E -S3156003C960000000000000000000000000000000005E -S3156003C970000000000000000000000000000000004E -S3156003C980000000000000000000000000000000003E -S3156003C990000000000000000000000000000000002E -S3156003C9A0000000000000000000000000000000001E -S3156003C9B0000000000000000000000000000000000E -S3156003C9C000000000000000000000000000000000FE -S3156003C9D000000000000000000000000000000000EE -S3156003C9E000000000000000000000000000000000DE -S3156003C9F000000000000000000000000000000000CE -S3156003CA0000000000000000000000000000000000BD -S3156003CA1000000000000000000000000000000000AD -S3156003CA20000000000000000000000000000000009D -S3156003CA30000000000000000000000000000000008D -S3156003CA40000000000000000000000000000000007D -S3156003CA50000000000000000000000000000000006D -S3156003CA60000000000000000000000000000000005D -S3156003CA70000000000000000000000000000000004D -S3156003CA80000000000000000000000000000000003D -S3156003CA90000000000000000000000000000000002D -S3156003CAA0000000000000000000000000000000001D -S3156003CAB0000000000000000000000000000000000D -S3156003CAC000000000000000000000000000000000FD -S3156003CAD000000000000000000000000000000000ED -S3156003CAE000000000000000000000000000000000DD -S3156003CAF000000000000000000000000000000000CD -S3156003CB0000000000000000000000000000000000BC -S3156003CB1000000000000000000000000000000000AC -S3156003CB20000000000000000000000000000000009C -S3156003CB30000000000000000000000000000000008C -S3156003CB40000000000000000000000000000000007C -S3156003CB50000000000000000000000000000000006C -S3156003CB60000000000000000000000000000000005C -S3156003CB70000000000000000000000000000000004C -S3156003CB80000000000000000000000000000000003C -S3156003CB90000000000000000000000000000000002C -S3156003CBA0000000000000000000000000000000001C -S3156003CBB0000000000000000000000000000000000C -S3156003CBC000000000000000000000000000000000FC -S3156003CBD000000000000000000000000000000000EC -S3156003CBE000000000000000000000000000000000DC -S3156003CBF000000000000000000000000000000000CC -S3156003CC0000000000000000000000000000000000BB -S3156003CC1000000000000000000000000000000000AB -S3156003CC20000000000000000000000000000000009B -S3156003CC30000000000000000000000000000000008B -S3156003CC40000000000000000000000000000000007B -S3156003CC50000000000000000000000000000000006B -S3156003CC60000000000000000000000000000000005B -S3156003CC70000000000000000000000000000000004B -S3156003CC80000000000000000000000000000000003B -S3156003CC90000000000000000000000000000000002B -S3156003CCA0000000000000000000000000000000001B -S3156003CCB0000000000000000000000000000000000B -S3156003CCC000000000000000000000000000000000FB -S3156003CCD000000000000000000000000000000000EB -S3156003CCE000000000000000000000000000000000DB -S3156003CCF000000000000000000000000000000000CB -S3156003CD0000000000000000000000000000000000BA -S3156003CD1000000000000000000000000000000000AA -S3156003CD20000000000000000000000000000000009A -S3156003CD30000000000000000000000000000000008A -S3156003CD40000000000000000000000000000000007A -S3156003CD50000000000000000000000000000000006A -S3156003CD60000000000000000000000000000000005A -S3156003CD70000000000000000000000000000000004A -S3156003CD80000000000000000000000000000000003A -S3156003CD90000000000000000000000000000000002A -S3156003CDA0000000000000000000000000000000001A -S3156003CDB0000000000000000000000000000000000A -S3156003CDC000000000000000000000000000000000FA -S3156003CDD000000000000000000000000000000000EA -S3156003CDE000000000000000000000000000000000DA -S3156003CDF000000000000000000000000000000000CA -S3156003CE0000000000000000000000000000000000B9 -S3156003CE1000000000000000000000000000000000A9 -S3156003CE200000000000000000000000000000000099 -S3156003CE300000000000000000000000000000000089 -S3156003CE400000000000000000000000000000000079 -S3156003CE500000000000000000000000000000000069 -S3156003CE600000000000000000000000000000000059 -S3156003CE700000000000000000000000000000000049 -S3156003CE800000000000000000000000000000000039 -S3156003CE900000000000000000000000000000000029 -S3156003CEA00000000000000000000000000000000019 -S3156003CEB00000000000000000000000000000000009 -S3156003CEC000000000000000000000000000000000F9 -S3156003CED000000000000000000000000000000000E9 -S3156003CEE000000000000000000000000000000000D9 -S3156003CEF000000000000000000000000000000000C9 -S3156003CF0000000000000000000000000000000000B8 -S3156003CF1000000000000000000000000000000000A8 -S3156003CF200000000000000000000000000000000098 -S3156003CF300000000000000000000000000000000088 -S3156003CF400000000000000000000000000000000078 -S3156003CF500000000000000000000000000000000068 -S3156003CF600000000000000000000000000000000058 -S3156003CF700000000000000000000000000000000048 -S3156003CF800000000000000000000000000000000038 -S3156003CF900000000000000000000000000000000028 -S3156003CFA00000000000000000000000000000000018 -S3156003CFB00000000000000000000000000000000008 -S3156003CFC000000000000000000000000000000000F8 -S3156003CFD000000000000000000000000000000000E8 -S3156003CFE000000000000000000000000000000000D8 -S3156003CFF000000000000000000000000000000000C8 -S3156003D00000000000000000000000000000000000B7 -S3156003D01000000000000000000000000000000000A7 -S3156003D0200000000000000000000000000000000097 -S3156003D0300000000000000000000000000000000087 -S3156003D0400000000000000000000000000000000077 -S3156003D0500000000000000000000000000000000067 -S3156003D0600000000000000000000000000000000057 -S3156003D0700000000000000000000000000000000047 -S3156003D0800000000000000000000000000000000037 -S3156003D0900000000000000000000000000000000027 -S3156003D0A00000000000000000000000000000000017 -S3156003D0B00000000000000000000000000000000007 -S3156003D0C000000000000000000000000000000000F7 -S3156003D0D000000000000000000000000000000000E7 -S3156003D0E000000000000000000000000000000000D7 -S3156003D0F000000000000000000000000000000000C7 -S3156003D10000000000000000000000000000000000B6 -S3156003D11000000000000000000000000000000000A6 -S3156003D1200000000000000000000000000000000096 -S3156003D1300000000000000000000000000000000086 -S3156003D1400000000000000000000000000000000076 -S3156003D1500000000000000000000000000000000066 -S3156003D1600000000000000000000000000000000056 -S3156003D1700000000000000000000000000000000046 -S3156003D1800000000000000000000000000000000036 -S3156003D1900000000000000000000000000000000026 -S3156003D1A00000000000000000000000000000000016 -S3156003D1B00000000000000000000000000000000006 -S3156003D1C000000000000000000000000000000000F6 -S3156003D1D000000000000000000000000000000000E6 -S3156003D1E000000000000000000000000000000000D6 -S3156003D1F000000000000000000000000000000000C6 -S3156003D20000000000000000000000000000000000B5 -S3156003D21000000000000000000000000000000000A5 -S3156003D2200000000000000000000000000000000095 -S3156003D2300000000000000000000000000000000085 -S3156003D2400000000000000000000000000000000075 -S3156003D2500000000000000000000000000000000065 -S3156003D2600000000000000000000000000000000055 -S3156003D2700000000000000000000000000000000045 -S3156003D2800000000000000000000000000000000035 -S3156003D2900000000000000000000000000000000025 -S3156003D2A00000000000000000000000000000000015 -S3156003D2B00000000000000000000000000000000005 -S3156003D2C000000000000000000000000000000000F5 -S3156003D2D000000000000000000000000000000000E5 -S3156003D2E000000000000000000000000000000000D5 -S3156003D2F000000000000000000000000000000000C5 -S3156003D30000000000000000000000000000000000B4 -S3156003D31000000000000000000000000000000000A4 -S3156003D3200000000000000000000000000000000094 -S3156003D3300000000000000000000000000000000084 -S3156003D3400000000000000000000000000000000074 -S3156003D3500000000000000000000000000000000064 -S3156003D3600000000000000000000000000000000054 -S3156003D3700000000000000000000000000000000044 -S3156003D3800000000000000000000000000000000034 -S3156003D3900000000000000000000000000000000024 -S3156003D3A00000000000000000000000000000000014 -S3156003D3B00000000000000000000000000000000004 -S3156003D3C000000000000000000000000000000000F4 -S3156003D3D000000000000000000000000000000000E4 -S3156003D3E000000000000000000000000000000000D4 -S3156003D3F000000000000000000000000000000000C4 -S3156003D40000000000000000000000000000000000B3 -S3156003D41000000000000000000000000000000000A3 -S3156003D4200000000000000000000000000000000093 -S3156003D4300000000000000000000000000000000083 -S3156003D4400000000000000000000000000000000073 -S3156003D4500000000000000000000000000000000063 -S3156003D4600000000000000000000000000000000053 -S3156003D4700000000000000000000000000000000043 -S3156003D4800000000000000000000000000000000033 -S3156003D4900000000000000000000000000000000023 -S3156003D4A00000000000000000000000000000000013 -S3156003D4B00000000000000000000000000000000003 -S3156003D4C000000000000000000000000000000000F3 -S3156003D4D000000000000000000000000000000000E3 -S3156003D4E000000000000000000000000000000000D3 -S3156003D4F000000000000000000000000000000000C3 -S3156003D50000000000000000000000000000000000B2 -S3156003D51000000000000000000000000000000000A2 -S3156003D5200000000000000000000000000000000092 -S3156003D5300000000000000000000000000000000082 -S3156003D5400000000000000000000000000000000072 -S3156003D5500000000000000000000000000000000062 -S3156003D5600000000000000000000000000000000052 -S3156003D5700000000000000000000000000000000042 -S3156003D5800000000000000000000000000000000032 -S3156003D5900000000000000000000000000000000022 -S3156003D5A00000000000000000000000000000000012 -S3156003D5B00000000000000000000000000000000002 -S3156003D5C000000000000000000000000000000000F2 -S3156003D5D000000000000000000000000000000000E2 -S3156003D5E000000000000000000000000000000000D2 -S3156003D5F000000000000000000000000000000000C2 -S3156003D60000000000000000000000000000000000B1 -S3156003D61000000000000000000000000000000000A1 -S3156003D6200000000000000000000000000000000091 -S3156003D6300000000000000000000000000000000081 -S3156003D6400000000000000000000000000000000071 -S3156003D6500000000000000000000000000000000061 -S3156003D6600000000000000000000000000000000051 -S3156003D6700000000000000000000000000000000041 -S3156003D6800000000000000000000000000000000031 -S3156003D6900000000000000000000000000000000021 -S3156003D6A00000000000000000000000000000000011 -S3156003D6B00000000000000000000000000000000001 -S3156003D6C000000000000000000000000000000000F1 -S3156003D6D000000000000000000000000000000000E1 -S3156003D6E000000000000000000000000000000000D1 -S3156003D6F000000000000000000000000000000000C1 -S3156003D70000000000000000000000000000000000B0 -S3156003D71000000000000000000000000000000000A0 -S3156003D7200000000000000000000000000000000090 -S3156003D7300000000000000000000000000000000080 -S3156003D7400000000000000000000000000000000070 -S3156003D7500000000000000000000000000000000060 -S3156003D7600000000000000000000000000000000050 -S3156003D7700000000000000000000000000000000040 -S3156003D7800000000000000000000000000000000030 -S3156003D7900000000000000000000000000000000020 -S3156003D7A00000000000000000000000000000000010 -S3156003D7B00000000000000000000000000000000000 -S3156003D7C000000000000000000000000000000000F0 -S3156003D7D000000000000000000000000000000000E0 -S3156003D7E000000000000000000000000000000000D0 -S3156003D7F000000000000000000000000000000000C0 -S3156003D80000000000000000000000000000000000AF -S3156003D810000000000000000000000000000000009F -S3156003D820000000000000000000000000000000008F -S3156003D830000000000000000000000000000000007F -S3156003D840000000000000000000000000000000006F -S3156003D850000000000000000000000000000000005F -S3156003D860000000000000000000000000000000004F -S3156003D870000000000000000000000000000000003F -S3156003D880000000000000000000000000000000002F -S3156003D890000000000000000000000000000000001F -S3156003D8A0000000000000000000000000000000000F -S3156003D8B000000000000000000000000000000000FF -S3156003D8C000000000000000000000000000000000EF -S3156003D8D000000000000000000000000000000000DF -S3156003D8E000000000000000000000000000000000CF -S3156003D8F000000000000000000000000000000000BF -S3156003D90000000000000000000000000000000000AE -S3156003D910000000000000000000000000000000009E -S3156003D920000000000000000000000000000000008E -S3156003D930000000000000000000000000000000007E -S3156003D940000000000000000000000000000000006E -S3156003D950000000000000000000000000000000005E -S3156003D960000000000000000000000000000000004E -S3156003D970000000000000000000000000000000003E -S3156003D980000000000000000000000000000000002E -S3156003D990000000000000000000000000000000001E -S3156003D9A0000000000000000000000000000000000E -S3156003D9B000000000000000000000000000000000FE -S3156003D9C000000000000000000000000000000000EE -S3156003D9D000000000000000000000000000000000DE -S3156003D9E000000000000000000000000000000000CE -S3156003D9F000000000000000000000000000000000BE -S3156003DA0000000000000000000000000000000000AD -S3156003DA10000000000000000000000000000000009D -S3156003DA20000000000000000000000000000000008D -S3156003DA30000000000000000000000000000000007D -S3156003DA40000000000000000000000000000000006D -S3156003DA50000000000000000000000000000000005D -S3156003DA60000000000000000000000000000000004D -S3156003DA70000000000000000000000000000000003D -S3156003DA80000000000000000000000000000000002D -S3156003DA90000000000000000000000000000000001D -S3156003DAA0000000000000000000000000000000000D -S3156003DAB000000000000000000000000000000000FD -S3156003DAC000000000000000000000000000000000ED -S3156003DAD000000000000000000000000000000000DD -S3156003DAE000000000000000000000000000000000CD -S3156003DAF000000000000000000000000000000000BD -S3156003DB0000000000000000000000000000000000AC -S3156003DB10000000000000000000000000000000009C -S3156003DB20000000000000000000000000000000008C -S3156003DB30000000000000000000000000000000007C -S3156003DB40000000000000000000000000000000006C -S3156003DB50000000000000000000000000000000005C -S3156003DB60000000000000000000000000000000004C -S3156003DB70000000000000000000000000000000003C -S3156003DB80000000000000000000000000000000002C -S3156003DB90000000000000000000000000000000001C -S3156003DBA0000000000000000000000000000000000C -S3156003DBB000000000000000000000000000000000FC -S3156003DBC000000000000000000000000000000000EC -S3156003DBD000000000000000000000000000000000DC -S3156003DBE000000000000000000000000000000000CC -S3156003DBF000000000000000000000000000000000BC -S3156003DC0000000000000000000000000000000000AB -S3156003DC10000000000000000000000000000000009B -S3156003DC20000000000000000000000000000000008B -S3156003DC30000000000000000000000000000000007B -S3156003DC40000000000000000000000000000000006B -S3156003DC50000000000000000000000000000000005B -S3156003DC60000000000000000000000000000000004B -S3156003DC70000000000000000000000000000000003B -S3156003DC80000000000000000000000000000000002B -S3156003DC90000000000000000000000000000000001B -S3156003DCA0000000000000000000000000000000000B -S3156003DCB000000000000000000000000000000000FB -S3156003DCC000000000000000000000000000000000EB -S3156003DCD000000000000000000000000000000000DB -S3156003DCE000000000000000000000000000000000CB -S3156003DCF000000000000000000000000000000000BB -S3156003DD0000000000000000000000000000000000AA -S3156003DD10000000000000000000000000000000009A -S3156003DD20000000000000000000000000000000008A -S3156003DD30000000000000000000000000000000007A -S3156003DD40000000000000000000000000000000006A -S3156003DD50000000000000000000000000000000005A -S3156003DD60000000000000000000000000000000004A -S3156003DD70000000000000000000000000000000003A -S3156003DD80000000000000000000000000000000002A -S3156003DD90000000000000000000000000000000001A -S3156003DDA0000000000000000000000000000000000A -S3156003DDB000000000000000000000000000000000FA -S3156003DDC000000000000000000000000000000000EA -S3156003DDD000000000000000000000000000000000DA -S3156003DDE000000000000000000000000000000000CA -S3156003DDF000000000000000000000000000000000BA -S3156003DE0000000000000000000000000000000000A9 -S3156003DE100000000000000000000000000000000099 -S3156003DE200000000000000000000000000000000089 -S3156003DE300000000000000000000000000000000079 -S3156003DE400000000000000000000000000000000069 -S3156003DE500000000000000000000000000000000059 -S3156003DE600000000000000000000000000000000049 -S3156003DE700000000000000000000000000000000039 -S3156003DE800000000000000000000000000000000029 -S3156003DE900000000000000000000000000000000019 -S3156003DEA00000000000000000000000000000000009 -S3156003DEB000000000000000000000000000000000F9 -S3156003DEC000000000000000000000000000000000E9 -S3156003DED000000000000000000000000000000000D9 -S3156003DEE000000000000000000000000000000000C9 -S3156003DEF000000000000000000000000000000000B9 -S3156003DF0000000000000000000000000000000000A8 -S3156003DF100000000000000000000000000000000098 -S3156003DF200000000000000000000000000000000088 -S3156003DF300000000000000000000000000000000078 -S3156003DF400000000000000000000000000000000068 -S3156003DF500000000000000000000000000000000058 -S3156003DF600000000000000000000000000000000048 -S3156003DF700000000000000000000000000000000038 -S3156003DF800000000000000000000000000000000028 -S3156003DF900000000000000000000000000000000018 -S3156003DFA00000000000000000000000000000000008 -S3156003DFB000000000000000000000000000000000F8 -S3156003DFC000000000000000000000000000000000E8 -S3156003DFD000000000000000000000000000000000D8 -S3156003DFE000000000000000000000000000000000C8 -S3156003DFF000000000000000000000000000000000B8 -S3156003E00000000000000000000000000000000000A7 -S3156003E0100000000000000000000000000000000097 -S3156003E0200000000000000000000000000000000087 -S3156003E0300000000000000000000000000000000077 -S3156003E0400000000000000000000000000000000067 -S3156003E0500000000000000000000000000000000057 -S3156003E0600000000000000000000000000000000047 -S3156003E0700000000000000000000000000000000037 -S3156003E0800000000000000000000000000000000027 -S3156003E0900000000000000000000000000000000017 -S3156003E0A00000000000000000000000000000000007 -S3156003E0B000000000000000000000000000000000F7 -S3156003E0C000000000000000000000000000000000E7 -S3156003E0D000000000000000000000000000000000D7 -S3156003E0E000000000000000000000000000000000C7 -S3156003E0F000000000000000000000000000000000B7 -S3156003E10000000000000000000000000000000000A6 -S3156003E1100000000000000000000000000000000096 -S3156003E1200000000000000000000000000000000086 -S3156003E1300000000000000000000000000000000076 -S3156003E1400000000000000000000000000000000066 -S3156003E1500000000000000000000000000000000056 -S3156003E1600000000000000000000000000000000046 -S3156003E1700000000000000000000000000000000036 -S3156003E1800000000000000000000000000000000026 -S3156003E1900000000000000000000000000000000016 -S3156003E1A00000000000000000000000000000000006 -S3156003E1B000000000000000000000000000000000F6 -S3156003E1C000000000000000000000000000000000E6 -S3156003E1D000000000000000000000000000000000D6 -S3156003E1E000000000000000000000000000000000C6 -S3156003E1F000000000000000000000000000000000B6 -S3156003E20000000000000000000000000000000000A5 -S3156003E2100000000000000000000000000000000095 -S3156003E2200000000000000000000000000000000085 -S3156003E2300000000000000000000000000000000075 -S3156003E2400000000000000000000000000000000065 -S3156003E2500000000000000000000000000000000055 -S3156003E2600000000000000000000000000000000045 -S3156003E2700000000000000000000000000000000035 -S3156003E2800000000000000000000000000000000025 -S3156003E2900000000000000000000000000000000015 -S3156003E2A00000000000000000000000000000000005 -S3156003E2B000000000000000000000000000000000F5 -S3156003E2C000000000000000000000000000000000E5 -S3156003E2D000000000000000000000000000000000D5 -S3156003E2E000000000000000000000000000000000C5 -S3156003E2F000000000000000000000000000000000B5 -S3156003E30000000000000000000000000000000000A4 -S3156003E3100000000000000000000000000000000094 -S3156003E3200000000000000000000000000000000084 -S3156003E3300000000000000000000000000000000074 -S3156003E3400000000000000000000000000000000064 -S3156003E3500000000000000000000000000000000054 -S3156003E3600000000000000000000000000000000044 -S3156003E3700000000000000000000000000000000034 -S3156003E3800000000000000000000000000000000024 -S3156003E3900000000000000000000000000000000014 -S3156003E3A00000000000000000000000000000000004 -S3156003E3B000000000000000000000000000000000F4 -S3156003E3C000000000000000000000000000000000E4 -S3156003E3D000000000000000000000000000000000D4 -S3156003E3E000000000000000000000000000000000C4 -S3156003E3F000000000000000000000000000000000B4 -S3156003E40000000000000000000000000000000000A3 -S3156003E4100000000000000000000000000000000093 -S3156003E4200000000000000000000000000000000083 -S3156003E4300000000000000000000000000000000073 -S3156003E4400000000000000000000000000000000063 -S3156003E4500000000000000000000000000000000053 -S3156003E4600000000000000000000000000000000043 -S3156003E4700000000000000000000000000000000033 -S3156003E4800000000000000000000000000000000023 -S3156003E4900000000000000000000000000000000013 -S3156003E4A00000000000000000000000000000000003 -S3156003E4B000000000000000000000000000000000F3 -S3156003E4C000000000000000000000000000000000E3 -S3156003E4D000000000000000000000000000000000D3 -S3156003E4E000000000000000000000000000000000C3 -S3156003E4F000000000000000000000000000000000B3 -S3156003E50000000000000000000000000000000000A2 -S3156003E5100000000000000000000000000000000092 -S3156003E5200000000000000000000000000000000082 -S3156003E5300000000000000000000000000000000072 -S3156003E5400000000000000000000000000000000062 -S3156003E5500000000000000000000000000000000052 -S3156003E5600000000000000000000000000000000042 -S3156003E5700000000000000000000000000000000032 -S3156003E5800000000000000000000000000000000022 -S3156003E5900000000000000000000000000000000012 -S3156003E5A00000000000000000000000000000000002 -S3156003E5B000000000000000000000000000000000F2 -S3156003E5C000000000000000000000000000000000E2 -S3156003E5D000000000000000000000000000000000D2 -S3156003E5E000000000000000000000000000000000C2 -S3156003E5F000000000000000000000000000000000B2 -S3156003E60000000000000000000000000000000000A1 -S3156003E6100000000000000000000000000000000091 -S3156003E6200000000000000000000000000000000081 -S3156003E6300000000000000000000000000000000071 -S3156003E6400000000000000000000000000000000061 -S3156003E6500000000000000000000000000000000051 -S3156003E6600000000000000000000000000000000041 -S3156003E6700000000000000000000000000000000031 -S3156003E6800000000000000000000000000000000021 -S3156003E6900000000000000000000000000000000011 -S3156003E6A00000000000000000000000000000000001 -S3156003E6B000000000000000000000000000000000F1 -S3156003E6C000000000000000000000000000000000E1 -S3156003E6D000000000000000000000000000000000D1 -S3156003E6E000000000000000000000000000000000C1 -S3156003E6F000000000000000000000000000000000B1 -S3156003E70000000000000000000000000000000000A0 -S3156003E7100000000000000000000000000000000090 -S3156003E7200000000000000000000000000000000080 -S3156003E7300000000000000000000000000000000070 -S3156003E7400000000000000000000000000000000060 -S3156003E7500000000000000000000000000000000050 -S3156003E7600000000000000000000000000000000040 -S3156003E7700000000000000000000000000000000030 -S3156003E7800000000000000000000000000000000020 -S3156003E7900000000000000000000000000000000010 -S3156003E7A00000000000000000000000000000000000 -S3156003E7B000000000000000000000000000000000F0 -S3156003E7C000000000000000000000000000000000E0 -S3156003E7D000000000000000000000000000000000D0 -S3156003E7E000000000000000000000000000000000C0 -S3156003E7F000000000000000000000000000000000B0 -S3156003E800000000000000000000000000000000009F -S3156003E810000000000000000000000000000000008F -S3156003E820000000000000000000000000000000007F -S3156003E830000000000000000000000000000000006F -S3156003E840000000000000000000000000000000005F -S3156003E850000000000000000000000000000000004F -S3156003E860000000000000000000000000000000003F -S3156003E870000000000000000000000000000000002F -S3156003E880000000000000000000000000000000001F -S3156003E890000000000000000000000000000000000F -S3156003E8A000000000000000000000000000000000FF -S3156003E8B000000000000000000000000000000000EF -S3156003E8C000000000000000000000000000000000DF -S3156003E8D000000000000000000000000000000000CF -S3156003E8E000000000000000000000000000000000BF -S3156003E8F000000000000000000000000000000000AF -S3156003E900000000000000000000000000000000009E -S3156003E910000000000000000000000000000000008E -S3156003E920000000000000000000000000000000007E -S3156003E930000000000000000000000000000000006E -S3156003E940000000000000000000000000000000005E -S3156003E950000000000000000000000000000000004E -S3156003E960000000000000000000000000000000003E -S3156003E970000000000000000000000000000000002E -S3156003E980000000000000000000000000000000001E -S3156003E990000000000000000000000000000000000E -S3156003E9A000000000000000000000000000000000FE -S3156003E9B000000000000000000000000000000000EE -S3156003E9C000000000000000000000000000000000DE -S3156003E9D000000000000000000000000000000000CE -S3156003E9E000000000000000000000000000000000BE -S3156003E9F000000000000000000000000000000000AE -S3156003EA00000000000000000000000000000000009D -S3156003EA10000000000000000000000000000000008D -S3156003EA20000000000000000000000000000000007D -S3156003EA30000000000000000000000000000000006D -S3156003EA40000000000000000000000000000000005D -S3156003EA50000000000000000000000000000000004D -S3156003EA60000000000000000000000000000000003D -S3156003EA70000000000000000000000000000000002D -S3156003EA80000000000000000000000000000000001D -S3156003EA90000000000000000000000000000000000D -S3156003EAA000000000000000000000000000000000FD -S3156003EAB000000000000000000000000000000000ED -S3156003EAC000000000000000000000000000000000DD -S3156003EAD000000000000000000000000000000000CD -S3156003EAE000000000000000000000000000000000BD -S3156003EAF000000000000000000000000000000000AD -S3156003EB00000000000000000000000000000000009C -S3156003EB10000000000000000000000000000000008C -S3156003EB20000000000000000000000000000000007C -S3156003EB30000000000000000000000000000000006C -S3156003EB40000000000000000000000000000000005C -S3156003EB50000000000000000000000000000000004C -S3156003EB60000000000000000000000000000000003C -S3156003EB70000000000000000000000000000000002C -S3156003EB80000000000000000000000000000000001C -S3156003EB90000000000000000000000000000000000C -S3156003EBA000000000000000000000000000000000FC -S3156003EBB000000000000000000000000000000000EC -S3156003EBC000000000000000000000000000000000DC -S3156003EBD000000000000000000000000000000000CC -S3156003EBE000000000000000000000000000000000BC -S3156003EBF000000000000000000000000000000000AC -S3156003EC00000000000000000000000000000000009B -S3156003EC10000000000000000000000000000000008B -S3156003EC20000000000000000000000000000000007B -S3156003EC30000000000000000000000000000000006B -S3156003EC40000000000000000000000000000000005B -S3156003EC50000000000000000000000000000000004B -S3156003EC60000000000000000000000000000000003B -S3156003EC70000000000000000000000000000000002B -S3156003EC80000000000000000000000000000000001B -S3156003EC90000000000000000000000000000000000B -S3156003ECA000000000000000000000000000000000FB -S3156003ECB000000000000000000000000000000000EB -S3156003ECC000000000000000000000000000000000DB -S3156003ECD000000000000000000000000000000000CB -S3156003ECE000000000000000000000000000000000BB -S3156003ECF000000000000000000000000000000000AB -S3156003ED00000000000000000000000000000000009A -S3156003ED10000000000000000000000000000000008A -S3156003ED20000000000000000000000000000000007A -S3156003ED30000000000000000000000000000000006A -S3156003ED40000000000000000000000000000000005A -S3156003ED50000000000000000000000000000000004A -S3156003ED60000000000000000000000000000000003A -S3156003ED70000000000000000000000000000000002A -S3156003ED80000000000000000000000000000000001A -S3156003ED90000000000000000000000000000000000A -S3156003EDA000000000000000000000000000000000FA -S3156003EDB000000000000000000000000000000000EA -S3156003EDC000000000000000000000000000000000DA -S3156003EDD000000000000000000000000000000000CA -S3156003EDE000000000000000000000000000000000BA -S3156003EDF000000000000000000000000000000000AA -S3156003EE000000000000000000000000000000000099 -S3156003EE100000000000000000000000000000000089 -S3156003EE200000000000000000000000000000000079 -S3156003EE300000000000000000000000000000000069 -S3156003EE400000000000000000000000000000000059 -S3156003EE500000000000000000000000000000000049 -S3156003EE600000000000000000000000000000000039 -S3156003EE700000000000000000000000000000000029 -S3156003EE800000000000000000000000000000000019 -S3156003EE900000000000000000000000000000000009 -S3156003EEA000000000000000000000000000000000F9 -S3156003EEB000000000000000000000000000000000E9 -S3156003EEC000000000000000000000000000000000D9 -S3156003EED000000000000000000000000000000000C9 -S3156003EEE000000000000000000000000000000000B9 -S3156003EEF000000000000000000000000000000000A9 -S3156003EF000000000000000000000000000000000098 -S3156003EF100000000000000000000000000000000088 -S3156003EF200000000000000000000000000000000078 -S3156003EF300000000000000000000000000000000068 -S3156003EF400000000000000000000000000000000058 -S3156003EF500000000000000000000000000000000048 -S3156003EF600000000000000000000000000000000038 -S3156003EF700000000000000000000000000000000028 -S3156003EF800000000000000000000000000000000018 -S3156003EF900000000000000000000000000000000008 -S3156003EFA000000000000000000000000000000000F8 -S3156003EFB000000000000000000000000000000000E8 -S3156003EFC000000000000000000000000000000000D8 -S3156003EFD000000000000000000000000000000000C8 -S3156003EFE000000000000000000000000000000000B8 -S3156003EFF000000000000000000000000000000000A8 -S3156003F0000000000000000000000000000000000097 -S3156003F0100000000000000000000000000000000087 -S3156003F0200000000000000000000000000000000077 -S3156003F0300000000000000000000000000000000067 -S3156003F0400000000000000000000000000000000057 -S3156003F0500000000000000000000000000000000047 -S3156003F0600000000000000000000000000000000037 -S3156003F0700000000000000000000000000000000027 -S3156003F0800000000000000000000000000000000017 -S3156003F0900000000000000000000000000000000007 -S3156003F0A000000000000000000000000000000000F7 -S3156003F0B000000000000000000000000000000000E7 -S3156003F0C000000000000000000000000000000000D7 -S3156003F0D000000000000000000000000000000000C7 -S3156003F0E000000000000000000000000000000000B7 -S3156003F0F000000000000000000000000000000000A7 -S3156003F1000000000000000000000000000000000096 -S3156003F1100000000000000000000000000000000086 -S3156003F1200000000000000000000000000000000076 -S3156003F1300000000000000000000000000000000066 -S3156003F1400000000000000000000000000000000056 -S3156003F1500000000000000000000000000000000046 -S3156003F1600000000000000000000000000000000036 -S3156003F1700000000000000000000000000000000026 -S3156003F1800000000000000000000000000000000016 -S3156003F1900000000000000000000000000000000006 -S3156003F1A000000000000000000000000000000000F6 -S3156003F1B000000000000000000000000000000000E6 -S3156003F1C000000000000000000000000000000000D6 -S3156003F1D000000000000000000000000000000000C6 -S3156003F1E000000000000000000000000000000000B6 -S3156003F1F000000000000000000000000000000000A6 -S3156003F2000000000000000000000000000000000095 -S3156003F2100000000000000000000000000000000085 -S3156003F2200000000000000000000000000000000075 -S3156003F2300000000000000000000000000000000065 -S3156003F2400000000000000000000000000000000055 -S3156003F2500000000000000000000000000000000045 -S3156003F2600000000000000000000000000000000035 -S3156003F2700000000000000000000000000000000025 -S3156003F2800000000000000000000000000000000015 -S3156003F2900000000000000000000000000000000005 -S3156003F2A000000000000000000000000000000000F5 -S3156003F2B000000000000000000000000000000000E5 -S3156003F2C000000000000000000000000000000000D5 -S3156003F2D000000000000000000000000000000000C5 -S3156003F2E000000000000000000000000000000000B5 -S3156003F2F000000000000000000000000000000000A5 -S3156003F3000000000000000000000000000000000094 -S3156003F3100000000000000000000000000000000084 -S3156003F3200000000000000000000000000000000074 -S3156003F3300000000000000000000000000000000064 -S3156003F3400000000000000000000000000000000054 -S3156003F3500000000000000000000000000000000044 -S3156003F3600000000000000000000000000000000034 -S3156003F3700000000000000000000000000000000024 -S3156003F3800000000000000000000000000000000014 -S3156003F3900000000000000000000000000000000004 -S3156003F3A000000000000000000000000000000000F4 -S3156003F3B000000000000000000000000000000000E4 -S3156003F3C000000000000000000000000000000000D4 -S3156003F3D000000000000000000000000000000000C4 -S3156003F3E000000000000000000000000000000000B4 -S3156003F3F000000000000000000000000000000000A4 -S3156003F4000000000000000000000000000000000093 -S3156003F4100000000000000000000000000000000083 -S3156003F4200000000000000000000000000000000073 -S3156003F4300000000000000000000000000000000063 -S3156003F4400000000000000000000000000000000053 -S3156003F4500000000000000000000000000000000043 -S3156003F4600000000000000000000000000000000033 -S3156003F4700000000000000000000000000000000023 -S3156003F4800000000000000000000000000000000013 -S3156003F4900000000000000000000000000000000003 -S3156003F4A000000000000000000000000000000000F3 -S3156003F4B000000000000000000000000000000000E3 -S3156003F4C000000000000000000000000000000000D3 -S3156003F4D000000000000000000000000000000000C3 -S3156003F4E000000000000000000000000000000000B3 -S3156003F4F000000000000000000000000000000000A3 -S3156003F5000000000000000000000000000000000092 -S3156003F5100000000000000000000000000000000082 -S3156003F5200000000000000000000000000000000072 -S3156003F5300000000000000000000000000000000062 -S3156003F5400000000000000000000000000000000052 -S3156003F5500000000000000000000000000000000042 -S3156003F5600000000000000000000000000000000032 -S3156003F5700000000000000000000000000000000022 -S3156003F5800000000000000000000000000000000012 -S3156003F5900000000000000000000000000000000002 -S3156003F5A000000000000000000000000000000000F2 -S3156003F5B000000000000000000000000000000000E2 -S3156003F5C000000000000000000000000000000000D2 -S3156003F5D000000000000000000000000000000000C2 -S3156003F5E000000000000000000000000000000000B2 -S3156003F5F000000000000000000000000000000000A2 -S3156003F6000000000000000000000000000000000091 -S3156003F6100000000000000000000000000000000081 -S3156003F6200000000000000000000000000000000071 -S3156003F6300000000000000000000000000000000061 -S3156003F6400000000000000000000000000000000051 -S3156003F6500000000000000000000000000000000041 -S3156003F6600000000000000000000000000000000031 -S3156003F6700000000000000000000000000000000021 -S3156003F6800000000000000000000000000000000011 -S3156003F6900000000000000000000000000000000001 -S3156003F6A000000000000000000000000000000000F1 -S3156003F6B000000000000000000000000000000000E1 -S3156003F6C000000000000000000000000000000000D1 -S3156003F6D000000000000000000000000000000000C1 -S3156003F6E000000000000000000000000000000000B1 -S3156003F6F000000000000000000000000000000000A1 -S3156003F7000000000000000000000000000000000090 -S3156003F7100000000000000000000000000000000080 -S3156003F7200000000000000000000000000000000070 -S3156003F7300000000000000000000000000000000060 -S3156003F7400000000000000000000000000000000050 -S3156003F7500000000000000000000000000000000040 -S3156003F7600000000000000000000000000000000030 -S3156003F7700000000000000000000000000000000020 -S3156003F7800000000000000000000000000000000010 -S3156003F7900000000000000000000000000000000000 -S3156003F7A000000000000000000000000000000000F0 -S3156003F7B000000000000000000000000000000000E0 -S3156003F7C000000000000000000000000000000000D0 -S3156003F7D000000000000000000000000000000000C0 -S3156003F7E000000000000000000000000000000000B0 -S3156003F7F000000000000000000000000000000000A0 -S3156003F800000000000000000000000000000000008F -S3156003F810000000000000000000000000000000007F -S3156003F820000000000000000000000000000000006F -S3156003F830000000000000000000000000000000005F -S3156003F840000000000000000000000000000000004F -S3156003F850000000000000000000000000000000003F -S3156003F860000000000000000000000000000000002F -S3156003F870000000000000000000000000000000001F -S3156003F880000000000000000000000000000000000F -S3156003F89000000000000000000000000000000000FF -S3156003F8A000000000000000000000000000000000EF -S3156003F8B000000000000000000000000000000000DF -S3156003F8C000000000000000000000000000000000CF -S3156003F8D000000000000000000000000000000000BF -S3156003F8E000000000000000000000000000000000AF -S3156003F8F0000000000000000000000000000000009F -S3156003F900000000000000000000000000000000008E -S3156003F910000000000000000000000000000000007E -S3156003F920000000000000000000000000000000006E -S3156003F930000000000000000000000000000000005E -S3156003F940000000000000000000000000000000004E -S3156003F950000000000000000000000000000000003E -S3156003F960000000000000000000000000000000002E -S3156003F970000000000000000000000000000000001E -S3156003F980000000000000000000000000000000000E -S3156003F99000000000000000000000000000000000FE -S3156003F9A000000000000000000000000000000000EE -S3156003F9B000000000000000000000000000000000DE -S3156003F9C000000000000000000000000000000000CE -S3156003F9D000000000000000000000000000000000BE -S3156003F9E000000000000000000000000000000000AE -S3156003F9F0000000000000000000000000000000009E -S3156003FA00000000000000000000000000000000008D -S3156003FA10000000000000000000000000000000007D -S3156003FA20000000000000000000000000000000006D -S3156003FA30000000000000000000000000000000005D -S3156003FA40000000000000000000000000000000004D -S3156003FA50000000000000000000000000000000003D -S3156003FA60000000000000000000000000000000002D -S3156003FA70000000000000000000000000000000001D -S3156003FA80000000000000000000000000000000000D -S3156003FA9000000000000000000000000000000000FD -S3156003FAA000000000000000000000000000000000ED -S3156003FAB000000000000000000000000000000000DD -S3156003FAC000000000000000000000000000000000CD -S3156003FAD000000000000000000000000000000000BD -S3156003FAE000000000000000000000000000000000AD -S3156003FAF0000000000000000000000000000000009D -S3156003FB00000000000000000000000000000000008C -S3156003FB10000000000000000000000000000000007C -S3156003FB20000000000000000000000000000000006C -S3156003FB30000000000000000000000000000000005C -S3156003FB40000000000000000000000000000000004C -S3156003FB50000000000000000000000000000000003C -S3156003FB60000000000000000000000000000000002C -S3156003FB70000000000000000000000000000000001C -S3156003FB80000000000000000000000000000000000C -S3156003FB9000000000000000000000000000000000FC -S3156003FBA000000000000000000000000000000000EC -S3156003FBB000000000000000000000000000000000DC -S3156003FBC000000000000000000000000000000000CC -S3156003FBD000000000000000000000000000000000BC -S3156003FBE000000000000000000000000000000000AC -S3156003FBF0000000000000000000000000000000009C -S3156003FC00000000000000000000000000000000008B -S3156003FC10000000000000000000000000000000007B -S3156003FC20000000000000000000000000000000006B -S3156003FC30000000000000000000000000000000005B -S3156003FC40000000000000000000000000000000004B -S3156003FC50000000000000000000000000000000003B -S3156003FC60000000000000000000000000000000002B -S3156003FC70000000000000000000000000000000001B -S3156003FC80000000000000000000000000000000000B -S3156003FC9000000000000000000000000000000000FB -S3156003FCA000000000000000000000000000000000EB -S3156003FCB000000000000000000000000000000000DB -S3156003FCC000000000000000000000000000000000CB -S3156003FCD000000000000000000000000000000000BB -S3156003FCE000000000000000000000000000000000AB -S3156003FCF0000000000000000000000000000000009B -S3156003FD00000000000000000000000000000000008A -S3156003FD10000000000000000000000000000000007A -S3156003FD20000000000000000000000000000000006A -S3156003FD30000000000000000000000000000000005A -S3156003FD40000000000000000000000000000000004A -S3156003FD50000000000000000000000000000000003A -S3156003FD60000000000000000000000000000000002A -S3156003FD70000000000000000000000000000000001A -S3156003FD80000000000000000000000000000000000A -S3156003FD9000000000000000000000000000000000FA -S3156003FDA000000000000000000000000000000000EA -S3156003FDB000000000000000000000000000000000DA -S3156003FDC000000000000000000000000000000000CA -S3156003FDD000000000000000000000000000000000BA -S3156003FDE000000000000000000000000000000000AA -S3156003FDF0000000000000000000000000000000009A -S3156003FE000000000000000000000000000000000089 -S3156003FE100000000000000000000000000000000079 -S3156003FE200000000000000000000000000000000069 -S3156003FE300000000000000000000000000000000059 -S3156003FE400000000000000000000000000000000049 -S3156003FE500000000000000000000000000000000039 -S3156003FE600000000000000000000000000000000029 -S3156003FE700000000000000000000000000000000019 -S3156003FE800000000000000000000000000000000009 -S3156003FE9000000000000000000000000000000000F9 -S3156003FEA000000000000000000000000000000000E9 -S3156003FEB000000000000000000000000000000000D9 -S3156003FEC000000000000000000000000000000000C9 -S3156003FED000000000000000000000000000000000B9 -S3156003FEE000000000000000000000000000000000A9 -S3156003FEF00000000000000000000000000000000099 -S3156003FF000000000000000000000000000000000088 -S3156003FF100000000000000000000000000000000078 -S3156003FF200000000000000000000000000000000068 -S3156003FF300000000000000000000000000000000058 -S3156003FF400000000000000000000000000000000048 -S3156003FF500000000000000000000000000000000038 -S3156003FF600000000000000000000000000000000028 -S3156003FF700000000000000000000000000000000018 -S3156003FF800000000000000000000000000000000008 -S3156003FF9000000000000000000000000000000000F8 -S3156003FFA000000000000000000000000000000000E8 -S3156003FFB000000000000000000000000000000000D8 -S3156003FFC000000000000000000000000000000000C8 -S3156003FFD000000000000000000000000000000000B8 -S3156003FFE000000000000000000000000000000000A8 -S3156003FFF00000000000000000000000000000000098 -S315600400000000000000000000000000000000000086 -S315600400100000000000000000000000000000000076 -S315600400200000000000000000000000000000000066 -S315600400300000000000000000000000000000000056 -S315600400400000000000000000000000000000000046 -S315600400500000000000000000000000000000000036 -S315600400600000000000000000000000000000000026 -S315600400700000000000000000000000000000000016 -S315600400800000000000000000000000000000000006 -S3156004009000000000000000000000000000000000F6 -S315600400A000000000000000000000000000000000E6 -S315600400B000000000000000000000000000000000D6 -S315600400C000000000000000000000000000000000C6 -S315600400D000000000000000000000000000000000B6 -S315600400E000000000000000000000000000000000A6 -S315600400F00000000000000000000000000000000096 -S315600401000000000000000000000000000000000085 -S315600401100000000000000000000000000000000075 -S315600401200000000000000000000000000000000065 -S315600401300000000000000000000000000000000055 -S315600401400000000000000000000000000000000045 -S315600401500000000000000000000000000000000035 -S315600401600000000000000000000000000000000025 -S315600401700000000000000000000000000000000015 -S315600401800000000000000000000000000000000005 -S3156004019000000000000000000000000000000000F5 -S315600401A000000000000000000000000000000000E5 -S315600401B000000000000000000000000000000000D5 -S315600401C000000000000000000000000000000000C5 -S315600401D000000000000000000000000000000000B5 -S315600401E000000000000000000000000000000000A5 -S315600401F00000000000000000000000000000000095 -S315600402000000000000000000000000000000000084 -S315600402100000000000000000000000000000000074 -S315600402200000000000000000000000000000000064 -S315600402300000000000000000000000000000000054 -S315600402400000000000000000000000000000000044 -S315600402500000000000000000000000000000000034 -S315600402600000000000000000000000000000000024 -S315600402700000000000000000000000000000000014 -S315600402800000000000000000000000000000000004 -S3156004029000000000000000000000000000000000F4 -S315600402A000000000000000000000000000000000E4 -S315600402B000000000000000000000000000000000D4 -S315600402C000000000000000000000000000000000C4 -S315600402D000000000000000000000000000000000B4 -S315600402E000000000000000000000000000000000A4 -S315600402F00000000000000000000000000000000094 -S315600403000000000000000000000000000000000083 -S315600403100000000000000000000000000000000073 -S315600403200000000000000000000000000000000063 -S315600403300000000000000000000000000000000053 -S315600403400000000000000000000000000000000043 -S315600403500000000000000000000000000000000033 -S315600403600000000000000000000000000000000023 -S315600403700000000000000000000000000000000013 -S315600403800000000000000000000000000000000003 -S3156004039000000000000000000000000000000000F3 -S315600403A000000000000000000000000000000000E3 -S315600403B000000000000000000000000000000000D3 -S315600403C000000000000000000000000000000000C3 -S315600403D000000000000000000000000000000000B3 -S315600403E000000000000000000000000000000000A3 -S315600403F00000000000000000000000000000000093 -S315600404000000000000000000000000000000000082 -S315600404100000000000000000000000000000000072 -S315600404200000000000000000000000000000000062 -S315600404300000000000000000000000000000000052 -S315600404400000000000000000000000000000000042 -S315600404500000000000000000000000000000000032 -S315600404600000000000000000000000000000000022 -S315600404700000000000000000000000000000000012 -S315600404800000000000000000000000000000000002 -S3156004049000000000000000000000000000000000F2 -S315600404A000000000000000000000000000000000E2 -S315600404B000000000000000000000000000000000D2 -S315600404C000000000000000000000000000000000C2 -S315600404D000000000000000000000000000000000B2 -S315600404E000000000000000000000000000000000A2 -S315600404F00000000000000000000000000000000092 -S315600405000000000000000000000000000000000081 -S315600405100000000000000000000000000000000071 -S315600405200000000000000000000000000000000061 -S315600405300000000000000000000000000000000051 -S315600405400000000000000000000000000000000041 -S315600405500000000000000000000000000000000031 -S315600405600000000000000000000000000000000021 -S315600405700000000000000000000000000000000011 -S315600405800000000000000000000000000000000001 -S3156004059000000000000000000000000000000000F1 -S315600405A000000000000000000000000000000000E1 -S315600405B000000000000000000000000000000000D1 -S315600405C000000000000000000000000000000000C1 -S315600405D000000000000000000000000000000000B1 -S315600405E000000000000000000000000000000000A1 -S315600405F00000000000000000000000000000000091 -S315600406000000000000000000000000000000000080 -S315600406100000000000000000000000000000000070 -S315600406200000000000000000000000000000000060 -S315600406300000000000000000000000000000000050 -S315600406400000000000000000000000000000000040 -S315600406500000000000000000000000000000000030 -S315600406600000000000000000000000000000000020 -S315600406700000000000000000000000000000000010 -S315600406800000000000000000000000000000000000 -S3156004069000000000000000000000000000000000F0 -S315600406A000000000000000000000000000000000E0 -S315600406B000000000000000000000000000000000D0 -S315600406C000000000000000000000000000000000C0 -S315600406D000000000000000000000000000000000B0 -S315600406E000000000000000000000000000000000A0 -S315600406F00000000000000000000000000000000090 -S31560040700000000000000000000000000000000007F -S31560040710000000000000000000000000000000006F -S31560040720000000000000000000000000000000005F -S31560040730000000000000000000000000000000004F -S31560040740000000000000000000000000000000003F -S31560040750000000000000000000000000000000002F -S31560040760000000000000000000000000000000001F -S31560040770000000000000000000000000000000000F -S3156004078000000000000000000000000000000000FF -S3156004079000000000000000000000000000000000EF -S315600407A000000000000000000000000000000000DF -S315600407B000000000000000000000000000000000CF -S315600407C000000000000000000000000000000000BF -S315600407D000000000000000000000000000000000AF -S315600407E0000000000000000000000000000000009F -S315600407F0000000000000000000000000000000008F -S31560040800000000000000000000000000000000007E -S31560040810000000000000000000000000000000006E -S31560040820000000000000000000000000000000005E -S31560040830000000000000000000000000000000004E -S31560040840000000000000000000000000000000003E -S31560040850000000000000000000000000000000002E -S31560040860000000000000000000000000000000001E -S31560040870000000000000000000000000000000000E -S3156004088000000000000000000000000000000000FE -S3156004089000000000000000000000000000000000EE -S315600408A000000000000000000000000000000000DE -S315600408B000000000000000000000000000000000CE -S315600408C000000000000000000000000000000000BE -S315600408D000000000000000000000000000000000AE -S315600408E0000000000000000000000000000000009E -S315600408F0000000000000000000000000000000008E -S31560040900000000000000000000000000000000007D -S31560040910000000000000000000000000000000006D -S31560040920000000000000000000000000000000005D -S31560040930000000000000000000000000000000004D -S31560040940000000000000000000000000000000003D -S31560040950000000000000000000000000000000002D -S31560040960000000000000000000000000000000001D -S31560040970000000000000000000000000000000000D -S3156004098000000000000000000000000000000000FD -S3156004099000000000000000000000000000000000ED -S315600409A000000000000000000000000000000000DD -S315600409B000000000000000000000000000000000CD -S315600409C000000000000000000000000000000000BD -S315600409D000000000000000000000000000000000AD -S315600409E0000000000000000000000000000000009D -S315600409F0000000000000000000000000000000008D -S31560040A00000000000000000000000000000000007C -S31560040A10000000000000000000000000000000006C -S31560040A20000000000000000000000000000000005C -S31560040A30000000000000000000000000000000004C -S31560040A40000000000000000000000000000000003C -S31560040A50000000000000000000000000000000002C -S31560040A60000000000000000000000000000000001C -S31560040A70000000000000000000000000000000000C -S31560040A8000000000000000000000000000000000FC -S31560040A9000000000000000000000000000000000EC -S31560040AA000000000000000000000000000000000DC -S31560040AB000000000000000000000000000000000CC -S31560040AC000000000000000000000000000000000BC -S31560040AD000000000000000000000000000000000AC -S31560040AE0000000000000000000000000000000009C -S31560040AF0000000000000000000000000000000008C -S31560040B00000000000000000000000000000000007B -S31560040B10000000000000000000000000000000006B -S31560040B20000000000000000000000000000000005B -S31560040B30000000000000000000000000000000004B -S31560040B40000000000000000000000000000000003B -S31560040B50000000000000000000000000000000002B -S31560040B60000000000000000000000000000000001B -S31560040B70000000000000000000000000000000000B -S31560040B8000000000000000000000000000000000FB -S31560040B9000000000000000000000000000000000EB -S31560040BA000000000000000000000000000000000DB -S31560040BB000000000000000000000000000000000CB -S31560040BC000000000000000000000000000000000BB -S31560040BD000000000000000000000000000000000AB -S31560040BE0000000000000000000000000000000009B -S31560040BF0000000000000000000000000000000008B -S31560040C00000000000000000000000000000000007A -S31560040C10000000000000000000000000000000006A -S31560040C20000000000000000000000000000000005A -S31560040C30000000000000000000000000000000004A -S31560040C40000000000000000000000000000000003A -S31560040C50000000000000000000000000000000002A -S31560040C60000000000000000000000000000000001A -S31560040C70000000000000000000000000000000000A -S31560040C8000000000000000000000000000000000FA -S31560040C9000000000000000000000000000000000EA -S31560040CA000000000000000000000000000000000DA -S31560040CB000000000000000000000000000000000CA -S31560040CC000000000000000000000000000000000BA -S31560040CD000000000000000000000000000000000AA -S31560040CE0000000000000000000000000000000009A -S31560040CF0000000000000000000000000000000008A -S31560040D000000000000000000000000000000000079 -S31560040D100000000000000000000000000000000069 -S31560040D200000000000000000000000000000000059 -S31560040D300000000000000000000000000000000049 -S31560040D400000000000000000000000000000000039 -S31560040D500000000000000000000000000000000029 -S31560040D600000000000000000000000000000000019 -S31560040D700000000000000000000000000000000009 -S31560040D8000000000000000000000000000000000F9 -S31560040D9000000000000000000000000000000000E9 -S31560040DA000000000000000000000000000000000D9 -S31560040DB000000000000000000000000000000000C9 -S31560040DC000000000000000000000000000000000B9 -S31560040DD000000000000000000000000000000000A9 -S31560040DE00000000000000000000000000000000099 -S31560040DF00000000000000000000000000000000089 -S31560040E000000000000000000000000000000000078 -S31560040E100000000000000000000000000000000068 -S31560040E200000000000000000000000000000000058 -S31560040E300000000000000000000000000000000048 -S31560040E400000000000000000000000000000000038 -S31560040E500000000000000000000000000000000028 -S31560040E600000000000000000000000000000000018 -S31560040E700000000000000000000000000000000008 -S31560040E8000000000000000000000000000000000F8 -S31560040E9000000000000000000000000000000000E8 -S31560040EA000000000000000000000000000000000D8 -S31560040EB000000000000000000000000000000000C8 -S31560040EC000000000000000000000000000000000B8 -S31560040ED000000000000000000000000000000000A8 -S31560040EE00000000000000000000000000000000098 -S31560040EF00000000000000000000000000000000088 -S31560040F000000000000000000000000000000000077 -S31560040F100000000000000000000000000000000067 -S31560040F200000000000000000000000000000000057 -S31560040F300000000000000000000000000000000047 -S31560040F400000000000000000000000000000000037 -S31560040F500000000000000000000000000000000027 -S31560040F600000000000000000000000000000000017 -S31560040F700000000000000000000000000000000007 -S31560040F8000000000000000000000000000000000F7 -S31560040F9000000000000000000000000000000000E7 -S31560040FA000000000000000000000000000000000D7 -S31560040FB000000000000000000000000000000000C7 -S31560040FC000000000000000000000000000000000B7 -S31560040FD000000000000000000000000000000000A7 -S31560040FE00000000000000000000000000000000097 -S31560040FF00000000000000000000000000000000087 -S315600410000000000000000000000000000000000076 -S315600410100000000000000000000000000000000066 -S315600410200000000000000000000000000000000056 -S315600410300000000000000000000000000000000046 -S315600410400000000000000000000000000000000036 -S315600410500000000000000000000000000000000026 -S315600410600000000000000000000000000000000016 -S315600410700000000000000000000000000000000006 -S3156004108000000000000000000000000000000000F6 -S3156004109000000000000000000000000000000000E6 -S315600410A000000000000000000000000000000000D6 -S315600410B000000000000000000000000000000000C6 -S315600410C000000000000000000000000000000000B6 -S315600410D000000000000000000000000000000000A6 -S315600410E00000000000000000000000000000000096 -S315600410F00000000000000000000000000000000086 -S315600411000000000000000000000000000000000075 -S315600411100000000000000000000000000000000065 -S315600411200000000000000000000000000000000055 -S315600411300000000000000000000000000000000045 -S315600411400000000000000000000000000000000035 -S315600411500000000000000000000000000000000025 -S315600411600000000000000000000000000000000015 -S315600411700000000000000000000000000000000005 -S3156004118000000000000000000000000000000000F5 -S3156004119000000000000000000000000000000000E5 -S315600411A000000000000000000000000000000000D5 -S315600411B000000000000000000000000000000000C5 -S315600411C000000000000000000000000000000000B5 -S315600411D000000000000000000000000000000000A5 -S315600411E00000000000000000000000000000000095 -S315600411F00000000000000000000000000000000085 -S315600412000000000000000000000000000000000074 -S315600412100000000000000000000000000000000064 -S315600412200000000000000000000000000000000054 -S315600412300000000000000000000000000000000044 -S315600412400000000000000000000000000000000034 -S315600412500000000000000000000000000000000024 -S315600412600000000000000000000000000000000014 -S315600412700000000000000000000000000000000004 -S3156004128000000000000000000000000000000000F4 -S3156004129000000000000000000000000000000000E4 -S315600412A000000000000000000000000000000000D4 -S315600412B000000000000000000000000000000000C4 -S315600412C000000000000000000000000000000000B4 -S315600412D000000000000000000000000000000000A4 -S315600412E00000000000000000000000000000000094 -S315600412F00000000000000000000000000000000084 -S315600413000000000000000000000000000000000073 -S315600413100000000000000000000000000000000063 -S315600413200000000000000000000000000000000053 -S315600413300000000000000000000000000000000043 -S315600413400000000000000000000000000000000033 -S315600413500000000000000000000000000000000023 -S315600413600000000000000000000000000000000013 -S315600413700000000000000000000000000000000003 -S3156004138000000000000000000000000000000000F3 -S3156004139000000000000000000000000000000000E3 -S315600413A000000000000000000000000000000000D3 -S315600413B000000000000000000000000000000000C3 -S315600413C000000000000000000000000000000000B3 -S315600413D000000000000000000000000000000000A3 -S315600413E00000000000000000000000000000000093 -S315600413F00000000000000000000000000000000083 -S315600414000000000000000000000000000000000072 -S315600414100000000000000000000000000000000062 -S315600414200000000000000000000000000000000052 -S315600414300000000000000000000000000000000042 -S315600414400000000000000000000000000000000032 -S315600414500000000000000000000000000000000022 -S315600414600000000000000000000000000000000012 -S315600414700000000000000000000000000000000002 -S3156004148000000000000000000000000000000000F2 -S3156004149000000000000000000000000000000000E2 -S315600414A000000000000000000000000000000000D2 -S315600414B000000000000000000000000000000000C2 -S315600414C000000000000000000000000000000000B2 -S315600414D000000000000000000000000000000000A2 -S315600414E00000000000000000000000000000000092 -S315600414F00000000000000000000000000000000082 -S315600415000000000000000000000000000000000071 -S315600415100000000000000000000000000000000061 -S315600415200000000000000000000000000000000051 -S315600415300000000000000000000000000000000041 -S315600415400000000000000000000000000000000031 -S315600415500000000000000000000000000000000021 -S315600415600000000000000000000000000000000011 -S315600415700000000000000000000000000000000001 -S3156004158000000000000000000000000000000000F1 -S3156004159000000000000000000000000000000000E1 -S315600415A000000000000000000000000000000000D1 -S315600415B000000000000000000000000000000000C1 -S315600415C000000000000000000000000000000000B1 -S315600415D000000000000000000000000000000000A1 -S315600415E00000000000000000000000000000000091 -S315600415F00000000000000000000000000000000081 -S315600416000000000000000000000000000000000070 -S315600416100000000000000000000000000000000060 -S315600416200000000000000000000000000000000050 -S315600416300000000000000000000000000000000040 -S315600416400000000000000000000000000000000030 -S315600416500000000000000000000000000000000020 -S315600416600000000000000000000000000000000010 -S315600416700000000000000000000000000000000000 -S3156004168000000000000000000000000000000000F0 -S3156004169000000000000000000000000000000000E0 -S315600416A000000000000000000000000000000000D0 -S315600416B000000000000000000000000000000000C0 -S315600416C000000000000000000000000000000000B0 -S315600416D000000000000000000000000000000000A0 -S315600416E00000000000000000000000000000000090 -S315600416F00000000000000000000000000000000080 -S31560041700000000000000000000000000000000006F -S31560041710000000000000000000000000000000005F -S31560041720000000000000000000000000000000004F -S31560041730000000000000000000000000000000003F -S31560041740000000000000000000000000000000002F -S31560041750000000000000000000000000000000001F -S31560041760000000000000000000000000000000000F -S3156004177000000000000000000000000000000000FF -S3156004178000000000000000000000000000000000EF -S3156004179000000000000000000000000000000000DF -S315600417A000000000000000000000000000000000CF -S315600417B000000000000000000000000000000000BF -S315600417C000000000000000000000000000000000AF -S315600417D0000000000000000000000000000000009F -S315600417E0000000000000000000000000000000008F -S315600417F0000000000000000000000000000000007F -S31560041800000000000000000000000000000000006E -S31560041810000000000000000000000000000000005E -S31560041820000000000000000000000000000000004E -S31560041830000000000000000000000000000000003E -S31560041840000000000000000000000000000000002E -S31560041850000000000000000000000000000000001E -S31560041860000000000000000000000000000000000E -S3156004187000000000000000000000000000000000FE -S3156004188000000000000000000000000000000000EE -S3156004189000000000000000000000000000000000DE -S315600418A000000000000000000000000000000000CE -S315600418B000000000000000000000000000000000BE -S315600418C000000000000000000000000000000000AE -S315600418D0000000000000000000000000000000009E -S315600418E0000000000000000000000000000000008E -S315600418F0000000000000000000000000000000007E -S31560041900000000000000000000000000000000006D -S31560041910000000000000000000000000000000005D -S31560041920000000000000000000000000000000004D -S31560041930000000000000000000000000000000003D -S31560041940000000000000000000000000000000002D -S31560041950000000000000000000000000000000001D -S31560041960000000000000000000000000000000000D -S3156004197000000000000000000000000000000000FD -S3156004198000000000000000000000000000000000ED -S3156004199000000000000000000000000000000000DD -S315600419A000000000000000000000000000000000CD -S315600419B000000000000000000000000000000000BD -S315600419C000000000000000000000000000000000AD -S315600419D0000000000000000000000000000000009D -S315600419E0000000000000000000000000000000008D -S315600419F0000000000000000000000000000000007D -S31560041A00000000000000000000000000000000006C -S31560041A10000000000000000000000000000000005C -S31560041A20000000000000000000000000000000004C -S31560041A30000000000000000000000000000000003C -S31560041A40000000000000000000000000000000002C -S31560041A50000000000000000000000000000000001C -S31560041A60000000000000000000000000000000000C -S31560041A7000000000000000000000000000000000FC -S31560041A8000000000000000000000000000000000EC -S31560041A9000000000000000000000000000000000DC -S31560041AA000000000000000000000000000000000CC -S31560041AB000000000000000000000000000000000BC -S31560041AC000000000000000000000000000000000AC -S31560041AD0000000000000000000000000000000009C -S31560041AE0000000000000000000000000000000008C -S31560041AF0000000000000000000000000000000007C -S31560041B00000000000000000000000000000000006B -S31560041B10000000000000000000000000000000005B -S31560041B20000000000000000000000000000000004B -S31560041B30000000000000000000000000000000003B -S31560041B40000000000000000000000000000000002B -S31560041B50000000000000000000000000000000001B -S31560041B60000000000000000000000000000000000B -S31560041B7000000000000000000000000000000000FB -S31560041B8000000000000000000000000000000000EB -S31560041B9000000000000000000000000000000000DB -S31560041BA000000000000000000000000000000000CB -S31560041BB000000000000000000000000000000000BB -S31560041BC000000000000000000000000000000000AB -S31560041BD0000000000000000000000000000000009B -S31560041BE0000000000000000000000000000000008B -S31560041BF0000000000000000000000000000000007B -S31560041C00000000000000000000000000000000006A -S31560041C10000000000000000000000000000000005A -S31560041C20000000000000000000000000000000004A -S31560041C30000000000000000000000000000000003A -S31560041C40000000000000000000000000000000002A -S31560041C50000000000000000000000000000000001A -S31560041C60000000000000000000000000000000000A -S31560041C7000000000000000000000000000000000FA -S31560041C8000000000000000000000000000000000EA -S31560041C9000000000000000000000000000000000DA -S31560041CA000000000000000000000000000000000CA -S31560041CB000000000000000000000000000000000BA -S31560041CC000000000000000000000000000000000AA -S31560041CD0000000000000000000000000000000009A -S31560041CE0000000000000000000000000000000008A -S31560041CF0000000000000000000000000000000007A -S31560041D000000000000000000000000000000000069 -S31560041D100000000000000000000000000000000059 -S31560041D200000000000000000000000000000000049 -S31560041D300000000000000000000000000000000039 -S31560041D400000000000000000000000000000000029 -S31560041D500000000000000000000000000000000019 -S31560041D600000000000000000000000000000000009 -S31560041D7000000000000000000000000000000000F9 -S31560041D8000000000000000000000000000000000E9 -S31560041D9000000000000000000000000000000000D9 -S31560041DA000000000000000000000000000000000C9 -S31560041DB000000000000000000000000000000000B9 -S31560041DC000000000000000000000000000000000A9 -S31560041DD00000000000000000000000000000000099 -S31560041DE00000000000000000000000000000000089 -S31560041DF00000000000000000000000000000000079 -S31560041E000000000000000000000000000000000068 -S31560041E100000000000000000000000000000000058 -S31560041E200000000000000000000000000000000048 -S31560041E300000000000000000000000000000000038 -S31560041E400000000000000000000000000000000028 -S31560041E500000000000000000000000000000000018 -S31560041E600000000000000000000000000000000008 -S31560041E7000000000000000000000000000000000F8 -S31560041E8000000000000000000000000000000000E8 -S31560041E9000000000000000000000000000000000D8 -S31560041EA000000000000000000000000000000000C8 -S31560041EB000000000000000000000000000000000B8 -S31560041EC000000000000000000000000000000000A8 -S31560041ED00000000000000000000000000000000098 -S31560041EE00000000000000000000000000000000088 -S31560041EF00000000000000000000000000000000078 -S31560041F000000000000000000000000000000000067 -S31560041F100000000000000000000000000000000057 -S31560041F200000000000000000000000000000000047 -S31560041F300000000000000000000000000000000037 -S31560041F400000000000000000000000000000000027 -S31560041F500000000000000000000000000000000017 -S31560041F600000000000000000000000000000000007 -S31560041F7000000000000000000000000000000000F7 -S31560041F8000000000000000000000000000000000E7 -S31560041F9000000000000000000000000000000000D7 -S31560041FA000000000000000000000000000000000C7 -S31560041FB000000000000000000000000000000000B7 -S31560041FC000000000000000000000000000000000A7 -S31560041FD00000000000000000000000000000000097 -S31560041FE00000000000000000000000000000000087 -S31560041FF00000000000000000000000000000000077 -S315600420000000000000000000000000000000000066 -S315600420100000000000000000000000000000000056 -S315600420200000000000000000000000000000000046 -S315600420300000000000000000000000000000000036 -S315600420400000000000000000000000000000000026 -S315600420500000000000000000000000000000000016 -S315600420600000000000000000000000000000000006 -S3156004207000000000000000000000000000000000F6 -S3156004208000000000000000000000000000000000E6 -S3156004209000000000000000000000000000000000D6 -S315600420A000000000000000000000000000000000C6 -S315600420B000000000000000000000000000000000B6 -S315600420C000000000000000000000000000000000A6 -S315600420D00000000000000000000000000000000096 -S315600420E00000000000000000000000000000000086 -S315600420F00000000000000000000000000000000076 -S315600421000000000000000000000000000000000065 -S315600421100000000000000000000000000000000055 -S315600421200000000000000000000000000000000045 -S315600421300000000000000000000000000000000035 -S315600421400000000000000000000000000000000025 -S315600421500000000000000000000000000000000015 -S315600421600000000000000000000000000000000005 -S3156004217000000000000000000000000000000000F5 -S3156004218000000000000000000000000000000000E5 -S3156004219000000000000000000000000000000000D5 -S315600421A000000000000000000000000000000000C5 -S315600421B000000000000000000000000000000000B5 -S315600421C000000000000000000000000000000000A5 -S315600421D00000000000000000000000000000000095 -S315600421E00000000000000000000000000000000085 -S315600421F00000000000000000000000000000000075 -S315600422000000000000000000000000000000000064 -S315600422100000000000000000000000000000000054 -S315600422200000000000000000000000000000000044 -S315600422300000000000000000000000000000000034 -S315600422400000000000000000000000000000000024 -S315600422500000000000000000000000000000000014 -S315600422600000000000000000000000000000000004 -S3156004227000000000000000000000000000000000F4 -S3156004228000000000000000000000000000000000E4 -S3156004229000000000000000000000000000000000D4 -S315600422A000000000000000000000000000000000C4 -S315600422B000000000000000000000000000000000B4 -S315600422C000000000000000000000000000000000A4 -S315600422D00000000000000000000000000000000094 -S315600422E00000000000000000000000000000000084 -S315600422F00000000000000000000000000000000074 -S315600423000000000000000000000000000000000063 -S315600423100000000000000000000000000000000053 -S315600423200000000000000000000000000000000043 -S315600423300000000000000000000000000000000033 -S315600423400000000000000000000000000000000023 -S315600423500000000000000000000000000000000013 -S315600423600000000000000000000000000000000003 -S3156004237000000000000000000000000000000000F3 -S3156004238000000000000000000000000000000000E3 -S3156004239000000000000000000000000000000000D3 -S315600423A000000000000000000000000000000000C3 -S315600423B000000000000000000000000000000000B3 -S315600423C000000000000000000000000000000000A3 -S315600423D00000000000000000000000000000000093 -S315600423E00000000000000000000000000000000083 -S315600423F00000000000000000000000000000000073 -S315600424000000000000000000000000000000000062 -S315600424100000000000000000000000000000000052 -S315600424200000000000000000000000000000000042 -S315600424300000000000000000000000000000000032 -S315600424400000000000000000000000000000000022 -S315600424500000000000000000000000000000000012 -S315600424600000000000000000000000000000000002 -S3156004247000000000000000000000000000000000F2 -S3156004248000000000000000000000000000000000E2 -S3156004249000000000000000000000000000000000D2 -S315600424A000000000000000000000000000000000C2 -S315600424B000000000000000000000000000000000B2 -S315600424C000000000000000000000000000000000A2 -S315600424D00000000000000000000000000000000092 -S315600424E00000000000000000000000000000000082 -S315600424F00000000000000000000000000000000072 -S315600425000000000000000000000000000000000061 -S315600425100000000000000000000000000000000051 -S315600425200000000000000000000000000000000041 -S315600425300000000000000000000000000000000031 -S315600425400000000000000000000000000000000021 -S315600425500000000000000000000000000000000011 -S315600425600000000000000000000000000000000001 -S3156004257000000000000000000000000000000000F1 -S3156004258000000000000000000000000000000000E1 -S3156004259000000000000000000000000000000000D1 -S315600425A000000000000000000000000000000000C1 -S315600425B000000000000000000000000000000000B1 -S315600425C000000000000000000000000000000000A1 -S315600425D00000000000000000000000000000000091 -S315600425E00000000000000000000000000000000081 -S315600425F00000000000000000000000000000000071 -S315600426000000000000000000000000000000000060 -S315600426100000000000000000000000000000000050 -S315600426200000000000000000000000000000000040 -S315600426300000000000000000000000000000000030 -S315600426400000000000000000000000000000000020 -S315600426500000000000000000000000000000000010 -S315600426600000000000000000000000000000000000 -S3156004267000000000000000000000000000000000F0 -S3156004268000000000000000000000000000000000E0 -S3156004269000000000000000000000000000000000D0 -S315600426A000000000000000000000000000000000C0 -S315600426B000000000000000000000000000000000B0 -S315600426C000000000000000000000000000000000A0 -S315600426D00000000000000000000000000000000090 -S315600426E00000000000000000000000000000000080 -S315600426F00000000000000000000000000000000070 -S31560042700000000000000000000000000000000005F -S31560042710000000000000000000000000000000004F -S31560042720000000000000000000000000000000003F -S31560042730000000000000000000000000000000002F -S31560042740000000000000000000000000000000001F -S31560042750000000000000000000000000000000000F -S3156004276000000000000000000000000000000000FF -S3156004277000000000000000000000000000000000EF -S3156004278000000000000000000000000000000000DF -S3156004279000000000000000000000000000000000CF -S315600427A000000000000000000000000000000000BF -S315600427B000000000000000000000000000000000AF -S315600427C0000000000000000000000000000000009F -S315600427D0000000000000000000000000000000008F -S315600427E0000000000000000000000000000000007F -S315600427F0000000000000000000000000000000006F -S31560042800000000000000000000000000000000005E -S31560042810000000000000000000000000000000004E -S31560042820000000000000000000000000000000003E -S31560042830000000000000000000000000000000002E -S31560042840000000000000000000000000000000001E -S31560042850000000000000000000000000000000000E -S3156004286000000000000000000000000000000000FE -S3156004287000000000000000000000000000000000EE -S3156004288000000000000000000000000000000000DE -S3156004289000000000000000000000000000000000CE -S315600428A000000000000000000000000000000000BE -S315600428B000000000000000000000000000000000AE -S315600428C0000000000000000000000000000000009E -S315600428D0000000000000000000000000000000008E -S315600428E0000000000000000000000000000000007E -S315600428F0000000000000000000000000000000006E -S31560042900000000000000000000000000000000005D -S31560042910000000000000000000000000000000004D -S31560042920000000000000000000000000000000003D -S31560042930000000000000000000000000000000002D -S31560042940000000000000000000000000000000001D -S31560042950000000000000000000000000000000000D -S3156004296000000000000000000000000000000000FD -S3156004297000000000000000000000000000000000ED -S3156004298000000000000000000000000000000000DD -S3156004299000000000000000000000000000000000CD -S315600429A000000000000000000000000000000000BD -S315600429B000000000000000000000000000000000AD -S315600429C0000000000000000000000000000000009D -S315600429D0000000000000000000000000000000008D -S315600429E0000000000000000000000000000000007D -S315600429F0000000000000000000000000000000006D -S31560042A00000000000000000000000000000000005C -S31560042A10000000000000000000000000000000004C -S31560042A20000000000000000000000000000000003C -S31560042A30000000000000000000000000000000002C -S31560042A40000000000000000000000000000000001C -S31560042A50000000000000000000000000000000000C -S31560042A6000000000000000000000000000000000FC -S31560042A7000000000000000000000000000000000EC -S31560042A8000000000000000000000000000000000DC -S31560042A9000000000000000000000000000000000CC -S31560042AA000000000000000000000000000000000BC -S31560042AB000000000000000000000000000000000AC -S31560042AC0000000000000000000000000000000009C -S31560042AD0000000000000000000000000000000008C -S31560042AE0000000000000000000000000000000007C -S31560042AF0000000000000000000000000000000006C -S31560042B00000000000000000000000000000000005B -S31560042B10000000000000000000000000000000004B -S31560042B20000000000000000000000000000000003B -S31560042B30000000000000000000000000000000002B -S31560042B40000000000000000000000000000000001B -S31560042B50000000000000000000000000000000000B -S31560042B6000000000000000000000000000000000FB -S31560042B7000000000000000000000000000000000EB -S31560042B8000000000000000000000000000000000DB -S31560042B9000000000000000000000000000000000CB -S31560042BA000000000000000000000000000000000BB -S31560042BB000000000000000000000000000000000AB -S31560042BC0000000000000000000000000000000009B -S31560042BD0000000000000000000000000000000008B -S31560042BE0000000000000000000000000000000007B -S31560042BF0000000000000000000000000000000006B -S31560042C00000000000000000000000000000000005A -S31560042C10000000000000000000000000000000004A -S31560042C20000000000000000000000000000000003A -S31560042C30000000000000000000000000000000002A -S31560042C40000000000000000000000000000000001A -S31560042C50000000000000000000000000000000000A -S31560042C6000000000000000000000000000000000FA -S31560042C7000000000000000000000000000000000EA -S31560042C8000000000000000000000000000000000DA -S31560042C9000000000000000000000000000000000CA -S31560042CA000000000000000000000000000000000BA -S31560042CB000000000000000000000000000000000AA -S31560042CC0000000000000000000000000000000009A -S31560042CD0000000000000000000000000000000008A -S31560042CE0000000000000000000000000000000007A -S31560042CF0000000000000000000000000000000006A -S31560042D000000000000000000000000000000000059 -S31560042D100000000000000000000000000000000049 -S31560042D200000000000000000000000000000000039 -S31560042D300000000000000000000000000000000029 -S31560042D400000000000000000000000000000000019 -S31560042D500000000000000000000000000000000009 -S31560042D6000000000000000000000000000000000F9 -S31560042D7000000000000000000000000000000000E9 -S31560042D8000000000000000000000000000000000D9 -S31560042D9000000000000000000000000000000000C9 -S31560042DA000000000000000000000000000000000B9 -S31560042DB000000000000000000000000000000000A9 -S31560042DC00000000000000000000000000000000099 -S31560042DD00000000000000000000000000000000089 -S31560042DE00000000000000000000000000000000079 -S31560042DF00000000000000000000000000000000069 -S31560042E000000000000000000000000000000000058 -S31560042E100000000000000000000000000000000048 -S31560042E200000000000000000000000000000000038 -S31560042E300000000000000000000000000000000028 -S31560042E400000000000000000000000000000000018 -S31560042E500000000000000000000000000000000008 -S31560042E6000000000000000000000000000000000F8 -S31560042E7000000000000000000000000000000000E8 -S31560042E8000000000000000000000000000000000D8 -S31560042E9000000000000000000000000000000000C8 -S31560042EA000000000000000000000000000000000B8 -S31560042EB000000000000000000000000000000000A8 -S31560042EC00000000000000000000000000000000098 -S31560042ED00000000000000000000000000000000088 -S31560042EE00000000000000000000000000000000078 -S31560042EF00000000000000000000000000000000068 -S31560042F000000000000000000000000000000000057 -S31560042F100000000000000000000000000000000047 -S31560042F200000000000000000000000000000000037 -S31560042F300000000000000000000000000000000027 -S31560042F400000000000000000000000000000000017 -S31560042F500000000000000000000000000000000007 -S31560042F6000000000000000000000000000000000F7 -S31560042F7000000000000000000000000000000000E7 -S31560042F8000000000000000000000000000000000D7 -S31560042F9000000000000000000000000000000000C7 -S31560042FA000000000000000000000000000000000B7 -S31560042FB000000000000000000000000000000000A7 -S31560042FC00000000000000000000000000000000097 -S31560042FD00000000000000000000000000000000087 -S31560042FE00000000000000000000000000000000077 -S31560042FF00000000000000000000000000000000067 -S315600430000000000000000000000000000000000056 -S315600430100000000000000000000000000000000046 -S315600430200000000000000000000000000000000036 -S315600430300000000000000000000000000000000026 -S315600430400000000000000000000000000000000016 -S315600430500000000000000000000000000000000006 -S3156004306000000000000000000000000000000000F6 -S3156004307000000000000000000000000000000000E6 -S3156004308000000000000000000000000000000000D6 -S3156004309000000000000000000000000000000000C6 -S315600430A000000000000000000000000000000000B6 -S315600430B000000000000000000000000000000000A6 -S315600430C00000000000000000000000000000000096 -S315600430D00000000000000000000000000000000086 -S315600430E00000000000000000000000000000000076 -S315600430F00000000000000000000000000000000066 -S315600431000000000000000000000000000000000055 -S315600431100000000000000000000000000000000045 -S315600431200000000000000000000000000000000035 -S315600431300000000000000000000000000000000025 -S315600431400000000000000000000000000000000015 -S315600431500000000000000000000000000000000005 -S3156004316000000000000000000000000000000000F5 -S3156004317000000000000000000000000000000000E5 -S3156004318000000000000000000000000000000000D5 -S3156004319000000000000000000000000000000000C5 -S315600431A000000000000000000000000000000000B5 -S315600431B000000000000000000000000000000000A5 -S315600431C00000000000000000000000000000000095 -S315600431D00000000000000000000000000000000085 -S315600431E00000000000000000000000000000000075 -S315600431F00000000000000000000000000000000065 -S315600432000000000000000000000000000000000054 -S315600432100000000000000000000000000000000044 -S315600432200000000000000000000000000000000034 -S315600432300000000000000000000000000000000024 -S315600432400000000000000000000000000000000014 -S315600432500000000000000000000000000000000004 -S3156004326000000000000000000000000000000000F4 -S3156004327000000000000000000000000000000000E4 -S3156004328000000000000000000000000000000000D4 -S3156004329000000000000000000000000000000000C4 -S315600432A000000000000000000000000000000000B4 -S315600432B000000000000000000000000000000000A4 -S315600432C00000000000000000000000000000000094 -S315600432D00000000000000000000000000000000084 -S315600432E00000000000000000000000000000000074 -S315600432F00000000000000000000000000000000064 -S315600433000000000000000000000000000000000053 -S315600433100000000000000000000000000000000043 -S315600433200000000000000000000000000000000033 -S315600433300000000000000000000000000000000023 -S315600433400000000000000000000000000000000013 -S315600433500000000000000000000000000000000003 -S3156004336000000000000000000000000000000000F3 -S3156004337000000000000000000000000000000000E3 -S3156004338000000000000000000000000000000000D3 -S3156004339000000000000000000000000000000000C3 -S315600433A000000000000000000000000000000000B3 -S315600433B000000000000000000000000000000000A3 -S315600433C00000000000000000000000000000000093 -S315600433D00000000000000000000000000000000083 -S315600433E00000000000000000000000000000000073 -S315600433F00000000000000000000000000000000063 -S315600434000000000000000000000000000000000052 -S315600434100000000000000000000000000000000042 -S315600434200000000000000000000000000000000032 -S315600434300000000000000000000000000000000022 -S315600434400000000000000000000000000000000012 -S315600434500000000000000000000000000000000002 -S3156004346000000000000000000000000000000000F2 -S3156004347000000000000000000000000000000000E2 -S3156004348000000000000000000000000000000000D2 -S3156004349000000000000000000000000000000000C2 -S315600434A000000000000000000000000000000000B2 -S315600434B000000000000000000000000000000000A2 -S315600434C00000000000000000000000000000000092 -S315600434D00000000000000000000000000000000082 -S315600434E00000000000000000000000000000000072 -S315600434F00000000000000000000000000000000062 -S315600435000000000000000000000000000000000051 -S315600435100000000000000000000000000000000041 -S315600435200000000000000000000000000000000031 -S315600435300000000000000000000000000000000021 -S315600435400000000000000000000000000000000011 -S315600435500000000000000000000000000000000001 -S3156004356000000000000000000000000000000000F1 -S3156004357000000000000000000000000000000000E1 -S3156004358000000000000000000000000000000000D1 -S3156004359000000000000000000000000000000000C1 -S315600435A000000000000000000000000000000000B1 -S315600435B000000000000000000000000000000000A1 -S315600435C00000000000000000000000000000000091 -S315600435D00000000000000000000000000000000081 -S315600435E00000000000000000000000000000000071 -S315600435F00000000000000000000000000000000061 -S315600436000000000000000000000000000000000050 -S315600436100000000000000000000000000000000040 -S315600436200000000000000000000000000000000030 -S315600436300000000000000000000000000000000020 -S315600436400000000000000000000000000000000010 -S315600436500000000000000000000000000000000000 -S3156004366000000000000000000000000000000000F0 -S3156004367000000000000000000000000000000000E0 -S3156004368000000000000000000000000000000000D0 -S3156004369000000000000000000000000000000000C0 -S315600436A000000000000000000000000000000000B0 -S315600436B000000000000000000000000000000000A0 -S315600436C00000000000000000000000000000000090 -S315600436D00000000000000000000000000000000080 -S315600436E00000000000000000000000000000000070 -S315600436F00000000000000000000000000000000060 -S31560043700000000000000000000000000000000004F -S31560043710000000000000000000000000000000003F -S31560043720000000000000000000000000000000002F -S31560043730000000000000000000000000000000001F -S31560043740000000000000000000000000000000000F -S3156004375000000000000000000000000000000000FF -S3156004376000000000000000000000000000000000EF -S3156004377000000000000000000000000000000000DF -S3156004378000000000000000000000000000000000CF -S3156004379000000000000000000000000000000000BF -S315600437A000000000000000000000000000000000AF -S315600437B0000000000000000000000000000000009F -S315600437C0000000000000000000000000000000008F -S315600437D0000000000000000000000000000000007F -S315600437E0000000000000000000000000000000006F -S315600437F0000000000000000000000000000000005F -S31560043800000000000000000000000000000000004E -S31560043810000000000000000000000000000000003E -S31560043820000000000000000000000000000000002E -S31560043830000000000000000000000000000000001E -S31560043840000000000000000000000000000000000E -S3156004385000000000000000000000000000000000FE -S3156004386000000000000000000000000000000000EE -S3156004387000000000000000000000000000000000DE -S3156004388000000000000000000000000000000000CE -S3156004389000000000000000000000000000000000BE -S315600438A000000000000000000000000000000000AE -S315600438B0000000000000000000000000000000009E -S315600438C0000000000000000000000000000000008E -S315600438D0000000000000000000000000000000007E -S315600438E0000000000000000000000000000000006E -S315600438F0000000000000000000000000000000005E -S31560043900000000000000000000000000000000004D -S31560043910000000000000000000000000000000003D -S31560043920000000000000000000000000000000002D -S31560043930000000000000000000000000000000001D -S31560043940000000000000000000000000000000000D -S3156004395000000000000000000000000000000000FD -S3156004396000000000000000000000000000000000ED -S3156004397000000000000000000000000000000000DD -S3156004398000000000000000000000000000000000CD -S3156004399000000000000000000000000000000000BD -S315600439A000000000000000000000000000000000AD -S315600439B0000000000000000000000000000000009D -S315600439C0000000000000000000000000000000008D -S315600439D0000000000000000000000000000000007D -S315600439E0000000000000000000000000000000006D -S315600439F0000000000000000000000000000000005D -S31560043A00000000000000000000000000000000004C -S31560043A10000000000000000000000000000000003C -S31560043A20000000000000000000000000000000002C -S31560043A30000000000000000000000000000000001C -S31560043A40000000000000000000000000000000000C -S31560043A5000000000000000000000000000000000FC -S31560043A6000000000000000000000000000000000EC -S31560043A7000000000000000000000000000000000DC -S31560043A8000000000000000000000000000000000CC -S31560043A9000000000000000000000000000000000BC -S31560043AA000000000000000000000000000000000AC -S31560043AB0000000000000000000000000000000009C -S31560043AC0000000000000000000000000000000008C -S31560043AD0000000000000000000000000000000007C -S31560043AE0000000000000000000000000000000006C -S31560043AF0000000000000000000000000000000005C -S31560043B00000000000000000000000000000000004B -S31560043B10000000000000000000000000000000003B -S31560043B20000000000000000000000000000000002B -S31560043B30000000000000000000000000000000001B -S31560043B40000000000000000000000000000000000B -S31560043B5000000000000000000000000000000000FB -S31560043B6000000000000000000000000000000000EB -S31560043B7000000000000000000000000000000000DB -S31560043B8000000000000000000000000000000000CB -S31560043B9000000000000000000000000000000000BB -S31560043BA000000000000000000000000000000000AB -S31560043BB0000000000000000000000000000000009B -S31560043BC0000000000000000000000000000000008B -S31560043BD0000000000000000000000000000000007B -S31560043BE0000000000000000000000000000000006B -S31560043BF0000000000000000000000000000000005B -S31560043C00000000000000000000000000000000004A -S31560043C10000000000000000000000000000000003A -S31560043C20000000000000000000000000000000002A -S31560043C30000000000000000000000000000000001A -S31560043C40000000000000000000000000000000000A -S31560043C5000000000000000000000000000000000FA -S31560043C6000000000000000000000000000000000EA -S31560043C7000000000000000000000000000000000DA -S31560043C8000000000000000000000000000000000CA -S31560043C9000000000000000000000000000000000BA -S31560043CA000000000000000000000000000000000AA -S31560043CB0000000000000000000000000000000009A -S31560043CC0000000000000000000000000000000008A -S31560043CD0000000000000000000000000000000007A -S31560043CE0000000000000000000000000000000006A -S31560043CF0000000000000000000000000000000005A -S31560043D000000000000000000000000000000000049 -S31560043D100000000000000000000000000000000039 -S31560043D200000000000000000000000000000000029 -S31560043D300000000000000000000000000000000019 -S31560043D400000000000000000000000000000000009 -S31560043D5000000000000000000000000000000000F9 -S31560043D6000000000000000000000000000000000E9 -S31560043D7000000000000000000000000000000000D9 -S31560043D8000000000000000000000000000000000C9 -S31560043D9000000000000000000000000000000000B9 -S31560043DA000000000000000000000000000000000A9 -S31560043DB00000000000000000000000000000000099 -S31560043DC00000000000000000000000000000000089 -S31560043DD00000000000000000000000000000000079 -S31560043DE00000000000000000000000000000000069 -S31560043DF00000000000000000000000000000000059 -S31560043E000000000000000000000000000000000048 -S31560043E100000000000000000000000000000000038 -S31560043E200000000000000000000000000000000028 -S31560043E300000000000000000000000000000000018 -S31560043E400000000000000000000000000000000008 -S31560043E5000000000000000000000000000000000F8 -S31560043E6000000000000000000000000000000000E8 -S31560043E7000000000000000000000000000000000D8 -S31560043E8000000000000000000000000000000000C8 -S31560043E9000000000000000000000000000000000B8 -S31560043EA000000000000000000000000000000000A8 -S31560043EB00000000000000000000000000000000098 -S31560043EC00000000000000000000000000000000088 -S31560043ED00000000000000000000000000000000078 -S31560043EE00000000000000000000000000000000068 -S31560043EF00000000000000000000000000000000058 -S31560043F000000000000000000000000000000000047 -S31560043F100000000000000000000000000000000037 -S31560043F200000000000000000000000000000000027 -S31560043F300000000000000000000000000000000017 -S31560043F400000000000000000000000000000000007 -S31560043F5000000000000000000000000000000000F7 -S31560043F6000000000000000000000000000000000E7 -S31560043F7000000000000000000000000000000000D7 -S31560043F8000000000000000000000000000000000C7 -S31560043F9000000000000000000000000000000000B7 -S31560043FA000000000000000000000000000000000A7 -S31560043FB00000000000000000000000000000000097 -S31560043FC00000000000000000000000000000000087 -S31560043FD00000000000000000000000000000000077 -S31560043FE00000000000000000000000000000000067 -S31560043FF00000000000000000000000000000000057 -S315600440000000000000000000000000000000000046 -S315600440100000000000000000000000000000000036 -S315600440200000000000000000000000000000000026 -S315600440300000000000000000000000000000000016 -S315600440400000000000000000000000000000000006 -S3156004405000000000000000000000000000000000F6 -S3156004406000000000000000000000000000000000E6 -S3156004407000000000000000000000000000000000D6 -S3156004408000000000000000000000000000000000C6 -S3156004409000000000000000000000000000000000B6 -S315600440A000000000000000000000000000000000A6 -S315600440B00000000000000000000000000000000096 -S315600440C00000000000000000000000000000000086 -S315600440D00000000000000000000000000000000076 -S315600440E00000000000000000000000000000000066 -S315600440F00000000000000000000000000000000056 -S315600441000000000000000000000000000000000045 -S315600441100000000000000000000000000000000035 -S315600441200000000000000000000000000000000025 -S315600441300000000000000000000000000000000015 -S315600441400000000000000000000000000000000005 -S3156004415000000000000000000000000000000000F5 -S3156004416000000000000000000000000000000000E5 -S3156004417000000000000000000000000000000000D5 -S3156004418000000000000000000000000000000000C5 -S3156004419000000000000000000000000000000000B5 -S315600441A000000000000000000000000000000000A5 -S315600441B00000000000000000000000000000000095 -S315600441C00000000000000000000000000000000085 -S315600441D00000000000000000000000000000000075 -S315600441E00000000000000000000000000000000065 -S315600441F00000000000000000000000000000000055 -S315600442000000000000000000000000000000000044 -S315600442100000000000000000000000000000000034 -S315600442200000000000000000000000000000000024 -S315600442300000000000000000000000000000000014 -S315600442400000000000000000000000000000000004 -S3156004425000000000000000000000000000000000F4 -S3156004426000000000000000000000000000000000E4 -S3156004427000000000000000000000000000000000D4 -S3156004428000000000000000000000000000000000C4 -S3156004429000000000000000000000000000000000B4 -S315600442A000000000000000000000000000000000A4 -S315600442B00000000000000000000000000000000094 -S315600442C00000000000000000000000000000000084 -S315600442D00000000000000000000000000000000074 -S315600442E00000000000000000000000000000000064 -S315600442F00000000000000000000000000000000054 -S315600443000000000000000000000000000000000043 -S315600443100000000000000000000000000000000033 -S315600443200000000000000000000000000000000023 -S315600443300000000000000000000000000000000013 -S315600443400000000000000000000000000000000003 -S3156004435000000000000000000000000000000000F3 -S3156004436000000000000000000000000000000000E3 -S3156004437000000000000000000000000000000000D3 -S3156004438000000000000000000000000000000000C3 -S3156004439000000000000000000000000000000000B3 -S315600443A000000000000000000000000000000000A3 -S315600443B00000000000000000000000000000000093 -S315600443C00000000000000000000000000000000083 -S315600443D00000000000000000000000000000000073 -S315600443E00000000000000000000000000000000063 -S315600443F00000000000000000000000000000000053 -S315600444000000000000000000000000000000000042 -S315600444100000000000000000000000000000000032 -S315600444200000000000000000000000000000000022 -S315600444300000000000000000000000000000000012 -S315600444400000000000000000000000000000000002 -S3156004445000000000000000000000000000000000F2 -S3156004446000000000000000000000000000000000E2 -S3156004447000000000000000000000000000000000D2 -S3156004448000000000000000000000000000000000C2 -S3156004449000000000000000000000000000000000B2 -S315600444A000000000000000000000000000000000A2 -S315600444B00000000000000000000000000000000092 -S315600444C00000000000000000000000000000000082 -S315600444D00000000000000000000000000000000072 -S315600444E00000000000000000000000000000000062 -S315600444F00000000000000000000000000000000052 -S315600445000000000000000000000000000000000041 -S315600445100000000000000000000000000000000031 -S315600445200000000000000000000000000000000021 -S315600445300000000000000000000000000000000011 -S315600445400000000000000000000000000000000001 -S3156004455000000000000000000000000000000000F1 -S3156004456000000000000000000000000000000000E1 -S3156004457000000000000000000000000000000000D1 -S3156004458000000000000000000000000000000000C1 -S3156004459000000000000000000000000000000000B1 -S315600445A000000000000000000000000000000000A1 -S315600445B00000000000000000000000000000000091 -S315600445C00000000000000000000000000000000081 -S315600445D00000000000000000000000000000000071 -S315600445E00000000000000000000000000000000061 -S315600445F00000000000000000000000000000000051 -S315600446000000000000000000000000000000000040 -S315600446100000000000000000000000000000000030 -S315600446200000000000000000000000000000000020 -S315600446300000000000000000000000000000000010 -S315600446400000000000000000000000000000000000 -S3156004465000000000000000000000000000000000F0 -S3156004466000000000000000000000000000000000E0 -S3156004467000000000000000000000000000000000D0 -S3156004468000000000000000000000000000000000C0 -S3156004469000000000000000000000000000000000B0 -S315600446A000000000000000000000000000000000A0 -S315600446B00000000000000000000000000000000090 -S315600446C00000000000000000000000000000000080 -S315600446D00000000000000000000000000000000070 -S315600446E00000000000000000000000000000000060 -S315600446F00000000000000000000000000000000050 -S31560044700000000000000000000000000000000003F -S31560044710000000000000000000000000000000002F -S31560044720000000000000000000000000000000001F -S31560044730000000000000000000000000000000000F -S3156004474000000000000000000000000000000000FF -S3156004475000000000000000000000000000000000EF -S3156004476000000000000000000000000000000000DF -S3156004477000000000000000000000000000000000CF -S3156004478000000000000000000000000000000000BF -S3156004479000000000000000000000000000000000AF -S315600447A0000000000000000000000000000000009F -S315600447B0000000000000000000000000000000008F -S315600447C0000000000000000000000000000000007F -S315600447D0000000000000000000000000000000006F -S315600447E0000000000000000000000000000000005F -S315600447F0000000000000000000000000000000004F -S31560044800000000000000000000000000000000003E -S31560044810000000000000000000000000000000002E -S31560044820000000000000000000000000000000001E -S31560044830000000000000000000000000000000000E -S3156004484000000000000000000000000000000000FE -S3156004485000000000000000000000000000000000EE -S3156004486000000000000000000000000000000000DE -S3156004487000000000000000000000000000000000CE -S3156004488000000000000000000000000000000000BE -S3156004489000000000000000000000000000000000AE -S315600448A0000000000000000000000000000000009E -S315600448B0000000000000000000000000000000008E -S315600448C0000000000000000000000000000000007E -S315600448D0000000000000000000000000000000006E -S315600448E0000000000000000000000000000000005E -S315600448F0000000000000000000000000000000004E -S31560044900000000000000000000000000000000003D -S31560044910000000000000000000000000000000002D -S31560044920000000000000000000000000000000001D -S31560044930000000000000000000000000000000000D -S3156004494000000000000000000000000000000000FD -S3156004495000000000000000000000000000000000ED -S3156004496000000000000000000000000000000000DD -S3156004497000000000000000000000000000000000CD -S3156004498000000000000000000000000000000000BD -S3156004499000000000000000000000000000000000AD -S315600449A0000000000000000000000000000000009D -S315600449B0000000000000000000000000000000008D -S315600449C0000000000000000000000000000000007D -S315600449D0000000000000000000000000000000006D -S315600449E0000000000000000000000000000000005D -S315600449F0000000000000000000000000000000004D -S31560044A00000000000000000000000000000000003C -S31560044A10000000000000000000000000000000002C -S31560044A20000000000000000000000000000000001C -S31560044A30000000000000000000000000000000000C -S31560044A4000000000000000000000000000000000FC -S31560044A5000000000000000000000000000000000EC -S31560044A6000000000000000000000000000000000DC -S31560044A7000000000000000000000000000000000CC -S31560044A8000000000000000000000000000000000BC -S31560044A9000000000000000000000000000000000AC -S31560044AA0000000000000000000000000000000009C -S31560044AB0000000000000000000000000000000008C -S31560044AC0000000000000000000000000000000007C -S31560044AD0000000000000000000000000000000006C -S31560044AE0000000000000000000000000000000005C -S31560044AF0000000000000000000000000000000004C -S31560044B00000000000000000000000000000000003B -S31560044B10000000000000000000000000000000002B -S31560044B20000000000000000000000000000000001B -S31560044B30000000000000000000000000000000000B -S31560044B4000000000000000000000000000000000FB -S31560044B5000000000000000000000000000000000EB -S31560044B6000000000000000000000000000000000DB -S31560044B7000000000000000000000000000000000CB -S31560044B8000000000000000000000000000000000BB -S31560044B9000000000000000000000000000000000AB -S31560044BA0000000000000000000000000000000009B -S31560044BB0000000000000000000000000000000008B -S31560044BC0000000000000000000000000000000007B -S31560044BD0000000000000000000000000000000006B -S31560044BE0000000000000000000000000000000005B -S31560044BF0000000000000000000000000000000004B -S31560044C00000000000000000000000000000000003A -S31560044C10000000000000000000000000000000002A -S31560044C20000000000000000000000000000000001A -S31560044C30000000000000000000000000000000000A -S31560044C4000000000000000000000000000000000FA -S31560044C5000000000000000000000000000000000EA -S31560044C6000000000000000000000000000000000DA -S31560044C7000000000000000000000000000000000CA -S31560044C8000000000000000000000000000000000BA -S31560044C9000000000000000000000000000000000AA -S31560044CA0000000000000000000000000000000009A -S31560044CB0000000000000000000000000000000008A -S31560044CC0000000000000000000000000000000007A -S31560044CD0000000000000000000000000000000006A -S31560044CE0000000000000000000000000000000005A -S31560044CF0000000000000000000000000000000004A -S31560044D000000000000000000000000000000000039 -S31560044D100000000000000000000000000000000029 -S31560044D200000000000000000000000000000000019 -S31560044D300000000000000000000000000000000009 -S31560044D4000000000000000000000000000000000F9 -S31560044D5000000000000000000000000000000000E9 -S31560044D6000000000000000000000000000000000D9 -S31560044D7000000000000000000000000000000000C9 -S31560044D8000000000000000000000000000000000B9 -S31560044D9000000000000000000000000000000000A9 -S31560044DA00000000000000000000000000000000099 -S31560044DB00000000000000000000000000000000089 -S31560044DC00000000000000000000000000000000079 -S31560044DD00000000000000000000000000000000069 -S31560044DE00000000000000000000000000000000059 -S31560044DF00000000000000000000000000000000049 -S31560044E000000000000000000000000000000000038 -S31560044E100000000000000000000000000000000028 -S31560044E200000000000000000000000000000000018 -S31560044E300000000000000000000000000000000008 -S31560044E4000000000000000000000000000000000F8 -S31560044E5000000000000000000000000000000000E8 -S31560044E6000000000000000000000000000000000D8 -S31560044E7000000000000000000000000000000000C8 -S31560044E8000000000000000000000000000000000B8 -S31560044E9000000000000000000000000000000000A8 -S31560044EA00000000000000000000000000000000098 -S31560044EB00000000000000000000000000000000088 -S31560044EC00000000000000000000000000000000078 -S31560044ED00000000000000000000000000000000068 -S31560044EE00000000000000000000000000000000058 -S31560044EF00000000000000000000000000000000048 -S31560044F000000000000000000000000000000000037 -S31560044F100000000000000000000000000000000027 -S31560044F200000000000000000000000000000000017 -S31560044F300000000000000000000000000000000007 -S31560044F4000000000000000000000000000000000F7 -S31560044F5000000000000000000000000000000000E7 -S31560044F6000000000000000000000000000000000D7 -S31560044F7000000000000000000000000000000000C7 -S31560044F8000000000000000000000000000000000B7 -S31560044F9000000000000000000000000000000000A7 -S31560044FA00000000000000000000000000000000097 -S31560044FB00000000000000000000000000000000087 -S31560044FC00000000000000000000000000000000077 -S31560044FD00000000000000000000000000000000067 -S31560044FE00000000000000000000000000000000057 -S31560044FF00000000000000000000000000000000047 -S315600450000000000000000000000000000000000036 -S315600450100000000000000000000000000000000026 -S315600450200000000000000000000000000000000016 -S315600450300000000000000000000000000000000006 -S3156004504000000000000000000000000000000000F6 -S3156004505000000000000000000000000000000000E6 -S3156004506000000000000000000000000000000000D6 -S3156004507000000000000000000000000000000000C6 -S3156004508000000000000000000000000000000000B6 -S3156004509000000000000000000000000000000000A6 -S315600450A00000000000000000000000000000000096 -S315600450B00000000000000000000000000000000086 -S315600450C00000000000000000000000000000000076 -S315600450D00000000000000000000000000000000066 -S315600450E00000000000000000000000000000000056 -S315600450F00000000000000000000000000000000046 -S315600451000000000000000000000000000000000035 -S315600451100000000000000000000000000000000025 -S315600451200000000000000000000000000000000015 -S315600451300000000000000000000000000000000005 -S3156004514000000000000000000000000000000000F5 -S3156004515000000000000000000000000000000000E5 -S3156004516000000000000000000000000000000000D5 -S3156004517000000000000000000000000000000000C5 -S3156004518000000000000000000000000000000000B5 -S3156004519000000000000000000000000000000000A5 -S315600451A00000000000000000000000000000000095 -S315600451B00000000000000000000000000000000085 -S315600451C00000000000000000000000000000000075 -S315600451D00000000000000000000000000000000065 -S315600451E00000000000000000000000000000000055 -S315600451F00000000000000000000000000000000045 -S315600452000000000000000000000000000000000034 -S315600452100000000000000000000000000000000024 -S315600452200000000000000000000000000000000014 -S315600452300000000000000000000000000000000004 -S3156004524000000000000000000000000000000000F4 -S3156004525000000000000000000000000000000000E4 -S3156004526000000000000000000000000000000000D4 -S3156004527000000000000000000000000000000000C4 -S3156004528000000000000000000000000000000000B4 -S3156004529000000000000000000000000000000000A4 -S315600452A00000000000000000000000000000000094 -S315600452B00000000000000000000000000000000084 -S315600452C00000000000000000000000000000000074 -S315600452D00000000000000000000000000000000064 -S315600452E00000000000000000000000000000000054 -S315600452F00000000000000000000000000000000044 -S315600453000000000000000000000000000000000033 -S315600453100000000000000000000000000000000023 -S315600453200000000000000000000000000000000013 -S315600453300000000000000000000000000000000003 -S3156004534000000000000000000000000000000000F3 -S3156004535000000000000000000000000000000000E3 -S3156004536000000000000000000000000000000000D3 -S3156004537000000000000000000000000000000000C3 -S3156004538000000000000000000000000000000000B3 -S3156004539000000000000000000000000000000000A3 -S315600453A00000000000000000000000000000000093 -S315600453B00000000000000000000000000000000083 -S315600453C00000000000000000000000000000000073 -S315600453D00000000000000000000000000000000063 -S315600453E00000000000000000000000000000000053 -S315600453F00000000000000000000000000000000043 -S315600454000000000000000000000000000000000032 -S315600454100000000000000000000000000000000022 -S315600454200000000000000000000000000000000012 -S315600454300000000000000000000000000000000002 -S3156004544000000000000000000000000000000000F2 -S3156004545000000000000000000000000000000000E2 -S3156004546000000000000000000000000000000000D2 -S3156004547000000000000000000000000000000000C2 -S3156004548000000000000000000000000000000000B2 -S3156004549000000000000000000000000000000000A2 -S315600454A00000000000000000000000000000000092 -S315600454B00000000000000000000000000000000082 -S315600454C00000000000000000000000000000000072 -S315600454D00000000000000000000000000000000062 -S315600454E00000000000000000000000000000000052 -S315600454F00000000000000000000000000000000042 -S315600455000000000000000000000000000000000031 -S315600455100000000000000000000000000000000021 -S315600455200000000000000000000000000000000011 -S315600455300000000000000000000000000000000001 -S3156004554000000000000000000000000000000000F1 -S3156004555000000000000000000000000000000000E1 -S3156004556000000000000000000000000000000000D1 -S3156004557000000000000000000000000000000000C1 -S3156004558000000000000000000000000000000000B1 -S3156004559000000000000000000000000000000000A1 -S315600455A00000000000000000000000000000000091 -S315600455B00000000000000000000000000000000081 -S315600455C00000000000000000000000000000000071 -S315600455D00000000000000000000000000000000061 -S315600455E00000000000000000000000000000000051 -S315600455F00000000000000000000000000000000041 -S315600456000000000000000000000000000000000030 -S315600456100000000000000000000000000000000020 -S315600456200000000000000000000000000000000010 -S315600456300000000000000000000000000000000000 -S3156004564000000000000000000000000000000000F0 -S3156004565000000000000000000000000000000000E0 -S3156004566000000000000000000000000000000000D0 -S3156004567000000000000000000000000000000000C0 -S3156004568000000000000000000000000000000000B0 -S3156004569000000000000000000000000000000000A0 -S315600456A00000000000000000000000000000000090 -S315600456B00000000000000000000000000000000080 -S315600456C00000000000000000000000000000000070 -S315600456D00000000000000000000000000000000060 -S315600456E00000000000000000000000000000000050 -S315600456F00000000000000000000000000000000040 -S31560045700000000000000000000000000000000002F -S31560045710000000000000000000000000000000001F -S31560045720000000000000000000000000000000000F -S3156004573000000000000000000000000000000000FF -S3156004574000000000000000000000000000000000EF -S3156004575000000000000000000000000000000000DF -S3156004576000000000000000000000000000000000CF -S3156004577000000000000000000000000000000000BF -S3156004578000000000000000000000000000000000AF -S31560045790000000000000000000000000000000009F -S315600457A0000000000000000000000000000000008F -S315600457B0000000000000000000000000000000007F -S315600457C0000000000000000000000000000000006F -S315600457D0000000000000000000000000000000005F -S315600457E0000000000000000000000000000000004F -S315600457F0000000000000000000000000000000003F -S31560045800000000000000000000000000000000002E -S31560045810000000000000000000000000000000001E -S31560045820000000000000000000000000000000000E -S3156004583000000000000000000000000000000000FE -S3156004584000000000000000000000000000000000EE -S3156004585000000000000000000000000000000000DE -S3156004586000000000000000000000000000000000CE -S3156004587000000000000000000000000000000000BE -S3156004588000000000000000000000000000000000AE -S31560045890000000000000000000000000000000009E -S315600458A0000000000000000000000000000000008E -S315600458B0000000000000000000000000000000007E -S315600458C0000000000000000000000000000000006E -S315600458D0000000000000000000000000000000005E -S315600458E0000000000000000000000000000000004E -S315600458F0000000000000000000000000000000003E -S31560045900000000000000000000000000000000002D -S31560045910000000000000000000000000000000001D -S31560045920000000000000000000000000000000000D -S3156004593000000000000000000000000000000000FD -S3156004594000000000000000000000000000000000ED -S3156004595000000000000000000000000000000000DD -S3156004596000000000000000000000000000000000CD -S3156004597000000000000000000000000000000000BD -S3156004598000000000000000000000000000000000AD -S31560045990000000000000000000000000000000009D -S315600459A0000000000000000000000000000000008D -S315600459B0000000000000000000000000000000007D -S315600459C0000000000000000000000000000000006D -S315600459D0000000000000000000000000000000005D -S315600459E0000000000000000000000000000000004D -S315600459F0000000000000000000000000000000003D -S31560045A00000000000000000000000000000000002C -S31560045A10000000000000000000000000000000001C -S31560045A20000000000000000000000000000000000C -S31560045A3000000000000000000000000000000000FC -S31560045A4000000000000000000000000000000000EC -S31560045A5000000000000000000000000000000000DC -S31560045A6000000000000000000000000000000000CC -S31560045A7000000000000000000000000000000000BC -S31560045A8000000000000000000000000000000000AC -S31560045A90000000000000000000000000000000009C -S31560045AA0000000000000000000000000000000008C -S31560045AB0000000000000000000000000000000007C -S31560045AC0000000000000000000000000000000006C -S31560045AD0000000000000000000000000000000005C -S31560045AE0000000000000000000000000000000004C -S31560045AF0000000000000000000000000000000003C -S31560045B00000000000000000000000000000000002B -S31560045B10000000000000000000000000000000001B -S31560045B20000000000000000000000000000000000B -S31560045B3000000000000000000000000000000000FB -S31560045B4000000000000000000000000000000000EB -S31560045B5000000000000000000000000000000000DB -S31560045B6000000000000000000000000000000000CB -S31560045B7000000000000000000000000000000000BB -S31560045B8000000000000000000000000000000000AB -S31560045B90000000000000000000000000000000009B -S31560045BA0000000000000000000000000000000008B -S31560045BB0000000000000000000000000000000007B -S31560045BC0000000000000000000000000000000006B -S31560045BD0000000000000000000000000000000005B -S31560045BE0000000000000000000000000000000004B -S31560045BF0000000000000000000000000000000003B -S31560045C00000000000000000000000000000000002A -S31560045C10000000000000000000000000000000001A -S31560045C20000000000000000000000000000000000A -S31560045C3000000000000000000000000000000000FA -S31560045C4000000000000000000000000000000000EA -S31560045C5000000000000000000000000000000000DA -S31560045C6000000000000000000000000000000000CA -S31560045C7000000000000000000000000000000000BA -S31560045C8000000000000000000000000000000000AA -S31560045C90000000000000000000000000000000009A -S31560045CA0000000000000000000000000000000008A -S31560045CB0000000000000000000000000000000007A -S31560045CC0000000000000000000000000000000006A -S31560045CD0000000000000000000000000000000005A -S31560045CE0000000000000000000000000000000004A -S31560045CF0000000000000000000000000000000003A -S31560045D000000000000000000000000000000000029 -S31560045D100000000000000000000000000000000019 -S31560045D200000000000000000000000000000000009 -S31560045D3000000000000000000000000000000000F9 -S31560045D4000000000000000000000000000000000E9 -S31560045D5000000000000000000000000000000000D9 -S31560045D6000000000000000000000000000000000C9 -S31560045D7000000000000000000000000000000000B9 -S31560045D8000000000000000000000000000000000A9 -S31560045D900000000000000000000000000000000099 -S31560045DA00000000000000000000000000000000089 -S31560045DB00000000000000000000000000000000079 -S31560045DC00000000000000000000000000000000069 -S31560045DD00000000000000000000000000000000059 -S31560045DE00000000000000000000000000000000049 -S31560045DF00000000000000000000000000000000039 -S31560045E000000000000000000000000000000000028 -S31560045E100000000000000000000000000000000018 -S31560045E200000000000000000000000000000000008 -S31560045E3000000000000000000000000000000000F8 -S31560045E4000000000000000000000000000000000E8 -S31560045E5000000000000000000000000000000000D8 -S31560045E6000000000000000000000000000000000C8 -S31560045E7000000000000000000000000000000000B8 -S31560045E8000000000000000000000000000000000A8 -S31560045E900000000000000000000000000000000098 -S31560045EA00000000000000000000000000000000088 -S31560045EB00000000000000000000000000000000078 -S31560045EC00000000000000000000000000000000068 -S31560045ED00000000000000000000000000000000058 -S31560045EE00000000000000000000000000000000048 -S31560045EF00000000000000000000000000000000038 -S31560045F000000000000000000000000000000000027 -S31560045F100000000000000000000000000000000017 -S31560045F200000000000000000000000000000000007 -S31560045F3000000000000000000000000000000000F7 -S31560045F4000000000000000000000000000000000E7 -S31560045F5000000000000000000000000000000000D7 -S31560045F6000000000000000000000000000000000C7 -S31560045F7000000000000000000000000000000000B7 -S31560045F8000000000000000000000000000000000A7 -S31560045F900000000000000000000000000000000097 -S31560045FA00000000000000000000000000000000087 -S31560045FB00000000000000000000000000000000077 -S31560045FC00000000000000000000000000000000067 -S31560045FD00000000000000000000000000000000057 -S31560045FE00000000000000000000000000000000047 -S31560045FF00000000000000000000000000000000037 -S315600460000000000000000000000000000000000026 -S315600460100000000000000000000000000000000016 -S315600460200000000000000000000000000000000006 -S3156004603000000000000000000000000000000000F6 -S3156004604000000000000000000000000000000000E6 -S3156004605000000000000000000000000000000000D6 -S3156004606000000000000000000000000000000000C6 -S3156004607000000000000000000000000000000000B6 -S3156004608000000000000000000000000000000000A6 -S315600460900000000000000000000000000000000096 -S315600460A00000000000000000000000000000000086 -S315600460B00000000000000000000000000000000076 -S315600460C00000000000000000000000000000000066 -S315600460D00000000000000000000000000000000056 -S315600460E00000000000000000000000000000000046 -S315600460F00000000000000000000000000000000036 -S315600461000000000000000000000000000000000025 -S315600461100000000000000000000000000000000015 -S315600461200000000000000000000000000000000005 -S3156004613000000000000000000000000000000000F5 -S3156004614000000000000000000000000000000000E5 -S3156004615000000000000000000000000000000000D5 -S3156004616000000000000000000000000000000000C5 -S3156004617000000000000000000000000000000000B5 -S3156004618000000000000000000000000000000000A5 -S315600461900000000000000000000000000000000095 -S315600461A00000000000000000000000000000000085 -S315600461B00000000000000000000000000000000075 -S315600461C00000000000000000000000000000000065 -S315600461D00000000000000000000000000000000055 -S315600461E00000000000000000000000000000000045 -S315600461F00000000000000000000000000000000035 -S315600462000000000000000000000000000000000024 -S315600462100000000000000000000000000000000014 -S315600462200000000000000000000000000000000004 -S3156004623000000000000000000000000000000000F4 -S3156004624000000000000000000000000000000000E4 -S3156004625000000000000000000000000000000000D4 -S3156004626000000000000000000000000000000000C4 -S3156004627000000000000000000000000000000000B4 -S3156004628000000000000000000000000000000000A4 -S315600462900000000000000000000000000000000094 -S315600462A00000000000000000000000000000000084 -S315600462B00000000000000000000000000000000074 -S315600462C00000000000000000000000000000000064 -S315600462D00000000000000000000000000000000054 -S315600462E00000000000000000000000000000000044 -S315600462F00000000000000000000000000000000034 -S315600463000000000000000000000000000000000023 -S315600463100000000000000000000000000000000013 -S315600463200000000000000000000000000000000003 -S3156004633000000000000000000000000000000000F3 -S3156004634000000000000000000000000000000000E3 -S3156004635000000000000000000000000000000000D3 -S3156004636000000000000000000000000000000000C3 -S3156004637000000000000000000000000000000000B3 -S3156004638000000000000000000000000000000000A3 -S315600463900000000000000000000000000000000093 -S315600463A00000000000000000000000000000000083 -S315600463B00000000000000000000000000000000073 -S315600463C00000000000000000000000000000000063 -S315600463D00000000000000000000000000000000053 -S315600463E00000000000000000000000000000000043 -S315600463F00000000000000000000000000000000033 -S315600464000000000000000000000000000000000022 -S315600464100000000000000000000000000000000012 -S315600464200000000000000000000000000000000002 -S3156004643000000000000000000000000000000000F2 -S3156004644000000000000000000000000000000000E2 -S3156004645000000000000000000000000000000000D2 -S3156004646000000000000000000000000000000000C2 -S3156004647000000000000000000000000000000000B2 -S3156004648000000000000000000000000000000000A2 -S315600464900000000000000000000000000000000092 -S315600464A00000000000000000000000000000000082 -S315600464B00000000000000000000000000000000072 -S315600464C00000000000000000000000000000000062 -S315600464D00000000000000000000000000000000052 -S315600464E00000000000000000000000000000000042 -S315600464F00000000000000000000000000000000032 -S315600465000000000000000000000000000000000021 -S315600465100000000000000000000000000000000011 -S315600465200000000000000000000000000000000001 -S3156004653000000000000000000000000000000000F1 -S3156004654000000000000000000000000000000000E1 -S3156004655000000000000000000000000000000000D1 -S3156004656000000000000000000000000000000000C1 -S3156004657000000000000000000000000000000000B1 -S3156004658000000000000000000000000000000000A1 -S315600465900000000000000000000000000000000091 -S315600465A00000000000000000000000000000000081 -S315600465B00000000000000000000000000000000071 -S315600465C00000000000000000000000000000000061 -S315600465D00000000000000000000000000000000051 -S315600465E00000000000000000000000000000000041 -S315600465F00000000000000000000000000000000031 -S315600466000000000000000000000000000000000020 -S315600466100000000000000000000000000000000010 -S315600466200000000000000000000000000000000000 -S3156004663000000000000000000000000000000000F0 -S3156004664000000000000000000000000000000000E0 -S3156004665000000000000000000000000000000000D0 -S3156004666000000000000000000000000000000000C0 -S3156004667000000000000000000000000000000000B0 -S3156004668000000000000000000000000000000000A0 -S315600466900000000000000000000000000000000090 -S315600466A00000000000000000000000000000000080 -S315600466B00000000000000000000000000000000070 -S315600466C00000000000000000000000000000000060 -S315600466D00000000000000000000000000000000050 -S315600466E00000000000000000000000000000000040 -S315600466F00000000000000000000000000000000030 -S31560046700000000000000000000000000000000001F -S31560046710000000000000000000000000000000000F -S3156004672000000000000000000000000000000000FF -S3156004673000000000000000000000000000000000EF -S3156004674000000000000000000000000000000000DF -S3156004675000000000000000000000000000000000CF -S3156004676000000000000000000000000000000000BF -S3156004677000000000000000000000000000000000AF -S31560046780000000000000000000000000000000009F -S31560046790000000000000000000000000000000008F -S315600467A0000000000000000000000000000000007F -S315600467B0000000000000000000000000000000006F -S315600467C0000000000000000000000000000000005F -S315600467D0000000000000000000000000000000004F -S315600467E0000000000000000000000000000000003F -S315600467F0000000000000000000000000000000002F -S31560046800000000000000000000000000000000001E -S31560046810000000000000000000000000000000000E -S3156004682000000000000000000000000000000000FE -S3156004683000000000000000000000000000000000EE -S3156004684000000000000000000000000000000000DE -S3156004685000000000000000000000000000000000CE -S3156004686000000000000000000000000000000000BE -S3156004687000000000000000000000000000000000AE -S31560046880000000000000000000000000000000009E -S31560046890000000000000000000000000000000008E -S315600468A0000000000000000000000000000000007E -S315600468B0000000000000000000000000000000006E -S315600468C0000000000000000000000000000000005E -S315600468D0000000000000000000000000000000004E -S315600468E0000000000000000000000000000000003E -S315600468F0000000000000000000000000000000002E -S31560046900000000000000000000000000000000001D -S31560046910000000000000000000000000000000000D -S3156004692000000000000000000000000000000000FD -S3156004693000000000000000000000000000000000ED -S3156004694000000000000000000000000000000000DD -S3156004695000000000000000000000000000000000CD -S3156004696000000000000000000000000000000000BD -S3156004697000000000000000000000000000000000AD -S31560046980000000000000000000000000000000009D -S31560046990000000000000000000000000000000008D -S315600469A0000000000000000000000000000000007D -S315600469B0000000000000000000000000000000006D -S315600469C0000000000000000000000000000000005D -S315600469D0000000000000000000000000000000004D -S315600469E0000000000000000000000000000000003D -S315600469F0000000000000000000000000000000002D -S31560046A00000000000000000000000000000000001C -S31560046A10000000000000000000000000000000000C -S31560046A2000000000000000000000000000000000FC -S31560046A3000000000000000000000000000000000EC -S31560046A4000000000000000000000000000000000DC -S31560046A5000000000000000000000000000000000CC -S31560046A6000000000000000000000000000000000BC -S31560046A7000000000000000000000000000000000AC -S31560046A80000000000000000000000000000000009C -S31560046A90000000000000000000000000000000008C -S31560046AA0000000000000000000000000000000007C -S31560046AB0000000000000000000000000000000006C -S31560046AC0000000000000000000000000000000005C -S31560046AD0000000000000000000000000000000004C -S31560046AE0000000000000000000000000000000003C -S31560046AF0000000000000000000000000000000002C -S31560046B00000000000000000000000000000000001B -S31560046B10000000000000000000000000000000000B -S31560046B2000000000000000000000000000000000FB -S31560046B3000000000000000000000000000000000EB -S31560046B4000000000000000000000000000000000DB -S31560046B5000000000000000000000000000000000CB -S31560046B6000000000000000000000000000000000BB -S31560046B7000000000000000000000000000000000AB -S31560046B80000000000000000000000000000000009B -S31560046B90000000000000000000000000000000008B -S31560046BA0000000000000000000000000000000007B -S31560046BB0000000000000000000000000000000006B -S31560046BC0000000000000000000000000000000005B -S31560046BD0000000000000000000000000000000004B -S31560046BE0000000000000000000000000000000003B -S31560046BF0000000000000000000000000000000002B -S31560046C00000000000000000000000000000000001A -S31560046C10000000000000000000000000000000000A -S31560046C2000000000000000000000000000000000FA -S31560046C3000000000000000000000000000000000EA -S31560046C4000000000000000000000000000000000DA -S31560046C5000000000000000000000000000000000CA -S31560046C6000000000000000000000000000000000BA -S31560046C7000000000000000000000000000000000AA -S31560046C80000000000000000000000000000000009A -S31560046C90000000000000000000000000000000008A -S31560046CA0000000000000000000000000000000007A -S31560046CB0000000000000000000000000000000006A -S31560046CC0000000000000000000000000000000005A -S31560046CD0000000000000000000000000000000004A -S31560046CE0000000000000000000000000000000003A -S31560046CF0000000000000000000000000000000002A -S31560046D000000000000000000000000000000000019 -S31560046D100000000000000000000000000000000009 -S31560046D2000000000000000000000000000000000F9 -S31560046D3000000000000000000000000000000000E9 -S31560046D4000000000000000000000000000000000D9 -S31560046D5000000000000000000000000000000000C9 -S31560046D6000000000000000000000000000000000B9 -S31560046D7000000000000000000000000000000000A9 -S31560046D800000000000000000000000000000000099 -S31560046D900000000000000000000000000000000089 -S31560046DA00000000000000000000000000000000079 -S31560046DB00000000000000000000000000000000069 -S31560046DC00000000000000000000000000000000059 -S31560046DD00000000000000000000000000000000049 -S31560046DE00000000000000000000000000000000039 -S31560046DF00000000000000000000000000000000029 -S31560046E000000000000000000000000000000000018 -S31560046E100000000000000000000000000000000008 -S31560046E2000000000000000000000000000000000F8 -S31560046E3000000000000000000000000000000000E8 -S31560046E4000000000000000000000000000000000D8 -S31560046E5000000000000000000000000000000000C8 -S31560046E6000000000000000000000000000000000B8 -S31560046E7000000000000000000000000000000000A8 -S31560046E800000000000000000000000000000000098 -S31560046E900000000000000000000000000000000088 -S31560046EA00000000000000000000000000000000078 -S31560046EB00000000000000000000000000000000068 -S31560046EC00000000000000000000000000000000058 -S31560046ED00000000000000000000000000000000048 -S31560046EE00000000000000000000000000000000038 -S31560046EF00000000000000000000000000000000028 -S31560046F000000000000000000000000000000000017 -S31560046F100000000000000000000000000000000007 -S31560046F2000000000000000000000000000000000F7 -S31560046F3000000000000000000000000000000000E7 -S31560046F4000000000000000000000000000000000D7 -S31560046F5000000000000000000000000000000000C7 -S31560046F6000000000000000000000000000000000B7 -S31560046F7000000000000000000000000000000000A7 -S31560046F800000000000000000000000000000000097 -S31560046F900000000000000000000000000000000087 -S31560046FA00000000000000000000000000000000077 -S31560046FB00000000000000000000000000000000067 -S31560046FC00000000000000000000000000000000057 -S31560046FD00000000000000000000000000000000047 -S31560046FE00000000000000000000000000000000037 -S31560046FF00000000000000000000000000000000027 -S315600470000000000000000000000000000000000016 -S315600470100000000000000000000000000000000006 -S3156004702000000000000000000000000000000000F6 -S3156004703000000000000000000000000000000000E6 -S3156004704000000000000000000000000000000000D6 -S3156004705000000000000000000000000000000000C6 -S3156004706000000000000000000000000000000000B6 -S3156004707000000000000000000000000000000000A6 -S315600470800000000000000000000000000000000096 -S315600470900000000000000000000000000000000086 -S315600470A00000000000000000000000000000000076 -S315600470B00000000000000000000000000000000066 -S315600470C00000000000000000000000000000000056 -S315600470D00000000000000000000000000000000046 -S315600470E00000000000000000000000000000000036 -S315600470F00000000000000000000000000000000026 -S315600471000000000000000000000000000000000015 -S315600471100000000000000000000000000000000005 -S3156004712000000000000000000000000000000000F5 -S3156004713000000000000000000000000000000000E5 -S3156004714000000000000000000000000000000000D5 -S3156004715000000000000000000000000000000000C5 -S3156004716000000000000000000000000000000000B5 -S3156004717000000000000000000000000000000000A5 -S315600471800000000000000000000000000000000095 -S315600471900000000000000000000000000000000085 -S315600471A00000000000000000000000000000000075 -S315600471B00000000000000000000000000000000065 -S315600471C00000000000000000000000000000000055 -S315600471D00000000000000000000000000000000045 -S315600471E00000000000000000000000000000000035 -S315600471F00000000000000000000000000000000025 -S315600472000000000000000000000000000000000014 -S315600472100000000000000000000000000000000004 -S3156004722000000000000000000000000000000000F4 -S3156004723000000000000000000000000000000000E4 -S3156004724000000000000000000000000000000000D4 -S3156004725000000000000000000000000000000000C4 -S3156004726000000000000000000000000000000000B4 -S3156004727000000000000000000000000000000000A4 -S315600472800000000000000000000000000000000094 -S315600472900000000000000000000000000000000084 -S315600472A00000000000000000000000000000000074 -S315600472B00000000000000000000000000000000064 -S315600472C00000000000000000000000000000000054 -S315600472D00000000000000000000000000000000044 -S315600472E00000000000000000000000000000000034 -S315600472F00000000000000000000000000000000024 -S315600473000000000000000000000000000000000013 -S315600473100000000000000000000000000000000003 -S3156004732000000000000000000000000000000000F3 -S3156004733000000000000000000000000000000000E3 -S3156004734000000000000000000000000000000000D3 -S3156004735000000000000000000000000000000000C3 -S3156004736000000000000000000000000000000000B3 -S3156004737000000000000000000000000000000000A3 -S315600473800000000000000000000000000000000093 -S315600473900000000000000000000000000000000083 -S315600473A00000000000000000000000000000000073 -S315600473B00000000000000000000000000000000063 -S315600473C00000000000000000000000000000000053 -S315600473D00000000000000000000000000000000043 -S315600473E00000000000000000000000000000000033 -S315600473F00000000000000000000000000000000023 -S315600474000000000000000000000000000000000012 -S315600474100000000000000000000000000000000002 -S3156004742000000000000000000000000000000000F2 -S3156004743000000000000000000000000000000000E2 -S3156004744000000000000000000000000000000000D2 -S3156004745000000000000000000000000000000000C2 -S3156004746000000000000000000000000000000000B2 -S3156004747000000000000000000000000000000000A2 -S315600474800000000000000000000000000000000092 -S315600474900000000000000000000000000000000082 -S315600474A00000000000000000000000000000000072 -S315600474B00000000000000000000000000000000062 -S315600474C00000000000000000000000000000000052 -S315600474D00000000000000000000000000000000042 -S315600474E00000000000000000000000000000000032 -S315600474F00000000000000000000000000000000022 -S315600475000000000000000000000000000000000011 -S315600475100000000000000000000000000000000001 -S3156004752000000000000000000000000000000000F1 -S3156004753000000000000000000000000000000000E1 -S3156004754000000000000000000000000000000000D1 -S3156004755000000000000000000000000000000000C1 -S3156004756000000000000000000000000000000000B1 -S3156004757000000000000000000000000000000000A1 -S315600475800000000000000000000000000000000091 -S315600475900000000000000000000000000000000081 -S315600475A00000000000000000000000000000000071 -S315600475B00000000000000000000000000000000061 -S315600475C00000000000000000000000000000000051 -S315600475D00000000000000000000000000000000041 -S315600475E00000000000000000000000000000000031 -S315600475F00000000000000000000000000000000021 -S315600476000000000000000000000000000000000010 -S315600476100000000000000000000000000000000000 -S3156004762000000000000000000000000000000000F0 -S3156004763000000000000000000000000000000000E0 -S3156004764000000000000000000000000000000000D0 -S3156004765000000000000000000000000000000000C0 -S3156004766000000000000000000000000000000000B0 -S3156004767000000000000000000000000000000000A0 -S315600476800000000000000000000000000000000090 -S315600476900000000000000000000000000000000080 -S315600476A00000000000000000000000000000000070 -S315600476B00000000000000000000000000000000060 -S315600476C00000000000000000000000000000000050 -S315600476D00000000000000000000000000000000040 -S315600476E00000000000000000000000000000000030 -S315600476F00000000000000000000000000000000020 -S31560047700000000000000000000000000000000000F -S3156004771000000000000000000000000000000000FF -S3156004772000000000000000000000000000000000EF -S3156004773000000000000000000000000000000000DF -S3156004774000000000000000000000000000000000CF -S3156004775000000000000000000000000000000000BF -S3156004776000000000000000000000000000000000AF -S31560047770000000000000000000000000000000009F -S31560047780000000000000000000000000000000008F -S31560047790000000000000000000000000000000007F -S315600477A0000000000000000000000000000000006F -S315600477B0000000000000000000000000000000005F -S315600477C0000000000000000000000000000000004F -S315600477D0000000000000000000000000000000003F -S315600477E0000000000000000000000000000000002F -S315600477F0000000000000000000000000000000001F -S31560047800000000000000000000000000000000000E -S3156004781000000000000000000000000000000000FE -S3156004782000000000000000000000000000000000EE -S3156004783000000000000000000000000000000000DE -S3156004784000000000000000000000000000000000CE -S3156004785000000000000000000000000000000000BE -S3156004786000000000000000000000000000000000AE -S31560047870000000000000000000000000000000009E -S31560047880000000000000000000000000000000008E -S31560047890000000000000000000000000000000007E -S315600478A0000000000000000000000000000000006E -S315600478B0000000000000000000000000000000005E -S315600478C0000000000000000000000000000000004E -S315600478D0000000000000000000000000000000003E -S315600478E0000000000000000000000000000000002E -S315600478F0000000000000000000000000000000001E -S31560047900000000000000000000000000000000000D -S3156004791000000000000000000000000000000000FD -S3156004792000000000000000000000000000000000ED -S3156004793000000000000000000000000000000000DD -S3156004794000000000000000000000000000000000CD -S3156004795000000000000000000000000000000000BD -S3156004796000000000000000000000000000000000AD -S31560047970000000000000000000000000000000009D -S31560047980000000000000000000000000000000008D -S31560047990000000000000000000000000000000007D -S315600479A0000000000000000000000000000000006D -S315600479B0000000000000000000000000000000005D -S315600479C0000000000000000000000000000000004D -S315600479D0000000000000000000000000000000003D -S315600479E0000000000000000000000000000000002D -S315600479F0000000000000000000000000000000001D -S31560047A00000000000000000000000000000000000C -S31560047A1000000000000000000000000000000000FC -S31560047A2000000000000000000000000000000000EC -S31560047A3000000000000000000000000000000000DC -S31560047A4000000000000000000000000000000000CC -S31560047A5000000000000000000000000000000000BC -S31560047A6000000000000000000000000000000000AC -S31560047A70000000000000000000000000000000009C -S31560047A80000000000000000000000000000000008C -S31560047A90000000000000000000000000000000007C -S31560047AA0000000000000000000000000000000006C -S31560047AB0000000000000000000000000000000005C -S31560047AC0000000000000000000000000000000004C -S31560047AD0000000000000000000000000000000003C -S31560047AE0000000000000000000000000000000002C -S31560047AF0000000000000000000000000000000001C -S31560047B00000000000000000000000000000000000B -S31560047B1000000000000000000000000000000000FB -S31560047B2000000000000000000000000000000000EB -S31560047B3000000000000000000000000000000000DB -S31560047B4000000000000000000000000000000000CB -S31560047B5000000000000000000000000000000000BB -S31560047B6000000000000000000000000000000000AB -S31560047B70000000000000000000000000000000009B -S31560047B80000000000000000000000000000000008B -S31560047B90000000000000000000000000000000007B -S31560047BA0000000000000000000000000000000006B -S31560047BB0000000000000000000000000000000005B -S31560047BC0000000000000000000000000000000004B -S31560047BD0000000000000000000000000000000003B -S31560047BE0000000000000000000000000000000002B -S31560047BF0000000000000000000000000000000001B -S31560047C00000000000000000000000000000000000A -S31560047C1000000000000000000000000000000000FA -S31560047C2000000000000000000000000000000000EA -S31560047C3000000000000000000000000000000000DA -S31560047C4000000000000000000000000000000000CA -S31560047C5000000000000000000000000000000000BA -S31560047C6000000000000000000000000000000000AA -S31560047C70000000000000000000000000000000009A -S31560047C80000000000000000000000000000000008A -S31560047C90000000000000000000000000000000007A -S31560047CA0000000000000000000000000000000006A -S31560047CB0000000000000000000000000000000005A -S31560047CC0000000000000000000000000000000004A -S31560047CD0000000000000000000000000000000003A -S31560047CE0000000000000000000000000000000002A -S31560047CF0000000000000000000000000000000001A -S31560047D000000000000000000000000000000000009 -S31560047D1000000000000000000000000000000000F9 -S31560047D2000000000000000000000000000000000E9 -S31560047D3000000000000000000000000000000000D9 -S31560047D4000000000000000000000000000000000C9 -S31560047D5000000000000000000000000000000000B9 -S31560047D6000000000000000000000000000000000A9 -S31560047D700000000000000000000000000000000099 -S31560047D800000000000000000000000000000000089 -S31560047D900000000000000000000000000000000079 -S31560047DA00000000000000000000000000000000069 -S31560047DB00000000000000000000000000000000059 -S31560047DC00000000000000000000000000000000049 -S31560047DD00000000000000000000000000000000039 -S31560047DE00000000000000000000000000000000029 -S31560047DF00000000000000000000000000000000019 -S31560047E000000000000000000000000000000000008 -S31560047E1000000000000000000000000000000000F8 -S31560047E2000000000000000000000000000000000E8 -S31560047E3000000000000000000000000000000000D8 -S31560047E4000000000000000000000000000000000C8 -S31560047E5000000000000000000000000000000000B8 -S31560047E6000000000000000000000000000000000A8 -S31560047E700000000000000000000000000000000098 -S31560047E800000000000000000000000000000000088 -S31560047E900000000000000000000000000000000078 -S31560047EA00000000000000000000000000000000068 -S31560047EB00000000000000000000000000000000058 -S31560047EC00000000000000000000000000000000048 -S31560047ED00000000000000000000000000000000038 -S31560047EE00000000000000000000000000000000028 -S31560047EF00000000000000000000000000000000018 -S31560047F000000000000000000000000000000000007 -S31560047F1000000000000000000000000000000000F7 -S31560047F2000000000000000000000000000000000E7 -S31560047F3000000000000000000000000000000000D7 -S31560047F4000000000000000000000000000000000C7 -S31560047F5000000000000000000000000000000000B7 -S31560047F6000000000000000000000000000000000A7 -S31560047F700000000000000000000000000000000097 -S31560047F800000000000000000000000000000000087 -S31560047F900000000000000000000000000000000077 -S31560047FA00000000000000000000000000000000067 -S31560047FB00000000000000000000000000000000057 -S31560047FC00000000000000000000000000000000047 -S31560047FD00000000000000000000000000000000037 -S31560047FE00000000000000000000000000000000027 -S31560047FF00000000000000000000000000000000017 -S315600480000000000000000000000000000000000006 -S3156004801000000000000000000000000000000000F6 -S3156004802000000000000000000000000000000000E6 -S3156004803000000000000000000000000000000000D6 -S3156004804000000000000000000000000000000000C6 -S3156004805000000000000000000000000000000000B6 -S3156004806000000000000000000000000000000000A6 -S315600480700000000000000000000000000000000096 -S315600480800000000000000000000000000000000086 -S315600480900000000000000000000000000000000076 -S315600480A00000000000000000000000000000000066 -S315600480B00000000000000000000000000000000056 -S315600480C00000000000000000000000000000000046 -S315600480D00000000000000000000000000000000036 -S315600480E00000000000000000000000000000000026 -S315600480F00000000000000000000000000000000016 -S315600481000000000000000000000000000000000005 -S3156004811000000000000000000000000000000000F5 -S3156004812000000000000000000000000000000000E5 -S3156004813000000000000000000000000000000000D5 -S3156004814000000000000000000000000000000000C5 -S3156004815000000000000000000000000000000000B5 -S3156004816000000000000000000000000000000000A5 -S315600481700000000000000000000000000000000095 -S315600481800000000000000000000000000000000085 -S315600481900000000000000000000000000000000075 -S315600481A00000000000000000000000000000000065 -S315600481B00000000000000000000000000000000055 -S315600481C00000000000000000000000000000000045 -S315600481D00000000000000000000000000000000035 -S315600481E00000000000000000000000000000000025 -S315600481F00000000000000000000000000000000015 -S315600482000000000000000000000000000000000004 -S3156004821000000000000000000000000000000000F4 -S3156004822000000000000000000000000000000000E4 -S3156004823000000000000000000000000000000000D4 -S3156004824000000000000000000000000000000000C4 -S3156004825000000000000000000000000000000000B4 -S3156004826000000000000000000000000000000000A4 -S315600482700000000000000000000000000000000094 -S315600482800000000000000000000000000000000084 -S315600482900000000000000000000000000000000074 -S315600482A00000000000000000000000000000000064 -S315600482B00000000000000000000000000000000054 -S315600482C00000000000000000000000000000000044 -S315600482D00000000000000000000000000000000034 -S315600482E00000000000000000000000000000000024 -S315600482F00000000000000000000000000000000014 -S315600483000000000000000000000000000000000003 -S3156004831000000000000000000000000000000000F3 -S3156004832000000000000000000000000000000000E3 -S3156004833000000000000000000000000000000000D3 -S3156004834000000000000000000000000000000000C3 -S3156004835000000000000000000000000000000000B3 -S3156004836000000000000000000000000000000000A3 -S315600483700000000000000000000000000000000093 -S315600483800000000000000000000000000000000083 -S315600483900000000000000000000000000000000073 -S315600483A00000000000000000000000000000000063 -S315600483B00000000000000000000000000000000053 -S315600483C00000000000000000000000000000000043 -S315600483D00000000000000000000000000000000033 -S315600483E00000000000000000000000000000000023 -S315600483F00000000000000000000000000000000013 -S315600484000000000000000000000000000000000002 -S3156004841000000000000000000000000000000000F2 -S3156004842000000000000000000000000000000000E2 -S3156004843000000000000000000000000000000000D2 -S3156004844000000000000000000000000000000000C2 -S3156004845000000000000000000000000000000000B2 -S3156004846000000000000000000000000000000000A2 -S315600484700000000000000000000000000000000092 -S315600484800000000000000000000000000000000082 -S315600484900000000000000000000000000000000072 -S315600484A00000000000000000000000000000000062 -S315600484B00000000000000000000000000000000052 -S315600484C00000000000000000000000000000000042 -S315600484D00000000000000000000000000000000032 -S315600484E00000000000000000000000000000000022 -S315600484F00000000000000000000000000000000012 -S315600485000000000000000000000000000000000001 -S3156004851000000000000000000000000000000000F1 -S3156004852000000000000000000000000000000000E1 -S3156004853000000000000000000000000000000000D1 -S3156004854000000000000000000000000000000000C1 -S3156004855000000000000000000000000000000000B1 -S3156004856000000000000000000000000000000000A1 -S315600485700000000000000000000000000000000091 -S315600485800000000000000000000000000000000081 -S315600485900000000000000000000000000000000071 -S315600485A00000000000000000000000000000000061 -S315600485B00000000000000000000000000000000051 -S315600485C00000000000000000000000000000000041 -S315600485D00000000000000000000000000000000031 -S315600485E00000000000000000000000000000000021 -S315600485F00000000000000000000000000000000011 -S315600486000000000000000000000000000000000000 -S3156004861000000000000000000000000000000000F0 -S3156004862000000000000000000000000000000000E0 -S3156004863000000000000000000000000000000000D0 -S3156004864000000000000000000000000000000000C0 -S3156004865000000000000000000000000000000000B0 -S3156004866000000000000000000000000000000000A0 -S315600486700000000000000000000000000000000090 -S315600486800000000000000000000000000000000080 -S315600486900000000000000000000000000000000070 -S315600486A00000000000000000000000000000000060 -S315600486B00000000000000000000000000000000050 -S315600486C00000000000000000000000000000000040 -S315600486D00000000000000000000000000000000030 -S315600486E00000000000000000000000000000000020 -S315600486F00000000000000000000000000000000010 -S3156004870000000000000000000000000000000000FF -S3156004871000000000000000000000000000000000EF -S3156004872000000000000000000000000000000000DF -S3156004873000000000000000000000000000000000CF -S3156004874000000000000000000000000000000000BF -S3156004875000000000000000000000000000000000AF -S31560048760000000000000000000000000000000009F -S31560048770000000000000000000000000000000008F -S31560048780000000000000000000000000000000007F -S31560048790000000000000000000000000000000006F -S315600487A0000000000000000000000000000000005F -S315600487B0000000000000000000000000000000004F -S315600487C0000000000000000000000000000000003F -S315600487D0000000000000000000000000000000002F -S315600487E0000000000000000000000000000000001F -S315600487F0000000000000000000000000000000000F -S3156004880000000000000000000000000000000000FE -S3156004881000000000000000000000000000000000EE -S3156004882000000000000000000000000000000000DE -S3156004883000000000000000000000000000000000CE -S3156004884000000000000000000000000000000000BE -S3156004885000000000000000000000000000000000AE -S31560048860000000000000000000000000000000009E -S31560048870000000000000000000000000000000008E -S31560048880000000000000000000000000000000007E -S31560048890000000000000000000000000000000006E -S315600488A0000000000000000000000000000000005E -S315600488B0000000000000000000000000000000004E -S315600488C0000000000000000000000000000000003E -S315600488D0000000000000000000000000000000002E -S315600488E0000000000000000000000000000000001E -S315600488F0000000000000000000000000000000000E -S3156004890000000000000000000000000000000000FD -S3156004891000000000000000000000000000000000ED -S3156004892000000000000000000000000000000000DD -S3156004893000000000000000000000000000000000CD -S3156004894000000000000000000000000000000000BD -S3156004895000000000000000000000000000000000AD -S31560048960000000000000000000000000000000009D -S31560048970000000000000000000000000000000008D -S31560048980000000000000000000000000000000007D -S31560048990000000000000000000000000000000006D -S315600489A0000000000000000000000000000000005D -S315600489B0000000000000000000000000000000004D -S315600489C0000000000000000000000000000000003D -S315600489D0000000000000000000000000000000002D -S315600489E0000000000000000000000000000000001D -S315600489F0000000000000000000000000000000000D -S31560048A0000000000000000000000000000000000FC -S31560048A1000000000000000000000000000000000EC -S31560048A2000000000000000000000000000000000DC -S31560048A3000000000000000000000000000000000CC -S31560048A4000000000000000000000000000000000BC -S31560048A5000000000000000000000000000000000AC -S31560048A60000000000000000000000000000000009C -S31560048A70000000000000000000000000000000008C -S31560048A80000000000000000000000000000000007C -S31560048A90000000000000000000000000000000006C -S31560048AA0000000000000000000000000000000005C -S31560048AB0000000000000000000000000000000004C -S31560048AC0000000000000000000000000000000003C -S31560048AD0000000000000000000000000000000002C -S31560048AE0000000000000000000000000000000001C -S31560048AF0000000000000000000000000000000000C -S31560048B0000000000000000000000000000000000FB -S31560048B1000000000000000000000000000000000EB -S31560048B2000000000000000000000000000000000DB -S31560048B3000000000000000000000000000000000CB -S31560048B4000000000000000000000000000000000BB -S31560048B5000000000000000000000000000000000AB -S31560048B60000000000000000000000000000000009B -S31560048B70000000000000000000000000000000008B -S31560048B80000000000000000000000000000000007B -S31560048B90000000000000000000000000000000006B -S31560048BA0000000000000000000000000000000005B -S31560048BB0000000000000000000000000000000004B -S31560048BC0000000000000000000000000000000003B -S31560048BD0000000000000000000000000000000002B -S31560048BE0000000000000000000000000000000001B -S31560048BF0000000000000000000000000000000000B -S31560048C0000000000000000000000000000000000FA -S31560048C1000000000000000000000000000000000EA -S31560048C2000000000000000000000000000000000DA -S31560048C3000000000000000000000000000000000CA -S31560048C4000000000000000000000000000000000BA -S31560048C5000000000000000000000000000000000AA -S31560048C60000000000000000000000000000000009A -S31560048C70000000000000000000000000000000008A -S31560048C80000000000000000000000000000000007A -S31560048C90000000000000000000000000000000006A -S31560048CA0000000000000000000000000000000005A -S31560048CB0000000000000000000000000000000004A -S31560048CC0000000000000000000000000000000003A -S31560048CD0000000000000000000000000000000002A -S31560048CE0000000000000000000000000000000001A -S31560048CF0000000000000000000000000000000000A -S31560048D0000000000000000000000000000000000F9 -S31560048D1000000000000000000000000000000000E9 -S31560048D2000000000000000000000000000000000D9 -S31560048D3000000000000000000000000000000000C9 -S31560048D4000000000000000000000000000000000B9 -S31560048D5000000000000000000000000000000000A9 -S31560048D600000000000000000000000000000000099 -S31560048D700000000000000000000000000000000089 -S31560048D800000000000000000000000000000000079 -S31560048D900000000000000000000000000000000069 -S31560048DA00000000000000000000000000000000059 -S31560048DB00000000000000000000000000000000049 -S31560048DC00000000000000000000000000000000039 -S31560048DD00000000000000000000000000000000029 -S31560048DE00000000000000000000000000000000019 -S31560048DF00000000000000000000000000000000009 -S31560048E0000000000000000000000000000000000F8 -S31560048E1000000000000000000000000000000000E8 -S31560048E2000000000000000000000000000000000D8 -S31560048E3000000000000000000000000000000000C8 -S31560048E4000000000000000000000000000000000B8 -S31560048E5000000000000000000000000000000000A8 -S31560048E600000000000000000000000000000000098 -S31560048E700000000000000000000000000000000088 -S31560048E800000000000000000000000000000000078 -S31560048E900000000000000000000000000000000068 -S31560048EA00000000000000000000000000000000058 -S31560048EB00000000000000000000000000000000048 -S31560048EC00000000000000000000000000000000038 -S31560048ED00000000000000000000000000000000028 -S31560048EE00000000000000000000000000000000018 -S31560048EF00000000000000000000000000000000008 -S31560048F0000000000000000000000000000000000F7 -S31560048F1000000000000000000000000000000000E7 -S31560048F2000000000000000000000000000000000D7 -S31560048F3000000000000000000000000000000000C7 -S31560048F4000000000000000000000000000000000B7 -S31560048F5000000000000000000000000000000000A7 -S31560048F600000000000000000000000000000000097 -S31560048F700000000000000000000000000000000087 -S31560048F800000000000000000000000000000000077 -S31560048F900000000000000000000000000000000067 -S31560048FA00000000000000000000000000000000057 -S31560048FB00000000000000000000000000000000047 -S31560048FC00000000000000000000000000000000037 -S31560048FD00000000000000000000000000000000027 -S31560048FE00000000000000000000000000000000017 -S31560048FF00000000000000000000000000000000007 -S3156004900000000000000000000000000000000000F6 -S3156004901000000000000000000000000000000000E6 -S3156004902000000000000000000000000000000000D6 -S3156004903000000000000000000000000000000000C6 -S3156004904000000000000000000000000000000000B6 -S3156004905000000000000000000000000000000000A6 -S315600490600000000000000000000000000000000096 -S315600490700000000000000000000000000000000086 -S315600490800000000000000000000000000000000076 -S315600490900000000000000000000000000000000066 -S315600490A00000000000000000000000000000000056 -S315600490B00000000000000000000000000000000046 -S315600490C00000000000000000000000000000000036 -S315600490D00000000000000000000000000000000026 -S315600490E00000000000000000000000000000000016 -S315600490F00000000000000000000000000000000006 -S3156004910000000000000000000000000000000000F5 -S3156004911000000000000000000000000000000000E5 -S3156004912000000000000000000000000000000000D5 -S3156004913000000000000000000000000000000000C5 -S3156004914000000000000000000000000000000000B5 -S3156004915000000000000000000000000000000000A5 -S315600491600000000000000000000000000000000095 -S315600491700000000000000000000000000000000085 -S315600491800000000000000000000000000000000075 -S315600491900000000000000000000000000000000065 -S315600491A00000000000000000000000000000000055 -S315600491B00000000000000000000000000000000045 -S315600491C00000000000000000000000000000000035 -S315600491D00000000000000000000000000000000025 -S315600491E00000000000000000000000000000000015 -S315600491F00000000000000000000000000000000005 -S3156004920000000000000000000000000000000000F4 -S3156004921000000000000000000000000000000000E4 -S3156004922000000000000000000000000000000000D4 -S3156004923000000000000000000000000000000000C4 -S3156004924000000000000000000000000000000000B4 -S3156004925000000000000000000000000000000000A4 -S315600492600000000000000000000000000000000094 -S315600492700000000000000000000000000000000084 -S315600492800000000000000000000000000000000074 -S315600492900000000000000000000000000000000064 -S315600492A00000000000000000000000000000000054 -S315600492B00000000000000000000000000000000044 -S315600492C00000000000000000000000000000000034 -S315600492D00000000000000000000000000000000024 -S315600492E00000000000000000000000000000000014 -S315600492F00000000000000000000000000000000004 -S3156004930000000000000000000000000000000000F3 -S3156004931000000000000000000000000000000000E3 -S3156004932000000000000000000000000000000000D3 -S3156004933000000000000000000000000000000000C3 -S3156004934000000000000000000000000000000000B3 -S3156004935000000000000000000000000000000000A3 -S315600493600000000000000000000000000000000093 -S315600493700000000000000000000000000000000083 -S315600493800000000000000000000000000000000073 -S315600493900000000000000000000000000000000063 -S315600493A00000000000000000000000000000000053 -S315600493B00000000000000000000000000000000043 -S315600493C00000000000000000000000000000000033 -S315600493D00000000000000000000000000000000023 -S315600493E00000000000000000000000000000000013 -S315600493F00000000000000000000000000000000003 -S3156004940000000000000000000000000000000000F2 -S3156004941000000000000000000000000000000000E2 -S3156004942000000000000000000000000000000000D2 -S3156004943000000000000000000000000000000000C2 -S3156004944000000000000000000000000000000000B2 -S3156004945000000000000000000000000000000000A2 -S315600494600000000000000000000000000000000092 -S315600494700000000000000000000000000000000082 -S315600494800000000000000000000000000000000072 -S315600494900000000000000000000000000000000062 -S315600494A00000000000000000000000000000000052 -S315600494B00000000000000000000000000000000042 -S315600494C00000000000000000000000000000000032 -S315600494D00000000000000000000000000000000022 -S315600494E00000000000000000000000000000000012 -S315600494F00000000000000000000000000000000002 -S3156004950000000000000000000000000000000000F1 -S3156004951000000000000000000000000000000000E1 -S3156004952000000000000000000000000000000000D1 -S3156004953000000000000000000000000000000000C1 -S3156004954000000000000000000000000000000000B1 -S3156004955000000000000000000000000000000000A1 -S315600495600000000000000000000000000000000091 -S315600495700000000000000000000000000000000081 -S315600495800000000000000000000000000000000071 -S315600495900000000000000000000000000000000061 -S315600495A00000000000000000000000000000000051 -S315600495B00000000000000000000000000000000041 -S315600495C00000000000000000000000000000000031 -S315600495D00000000000000000000000000000000021 -S315600495E00000000000000000000000000000000011 -S315600495F00000000000000000000000000000000001 -S3156004960000000000000000000000000000000000F0 -S3156004961000000000000000000000000000000000E0 -S3156004962000000000000000000000000000000000D0 -S3156004963000000000000000000000000000000000C0 -S3156004964000000000000000000000000000000000B0 -S3156004965000000000000000000000000000000000A0 -S315600496600000000000000000000000000000000090 -S315600496700000000000000000000000000000000080 -S315600496800000000000000000000000000000000070 -S315600496900000000000000000000000000000000060 -S315600496A00000000000000000000000000000000050 -S315600496B00000000000000000000000000000000040 -S315600496C00000000000000000000000000000000030 -S315600496D00000000000000000000000000000000020 -S315600496E00000000000000000000000000000000010 -S315600496F00000000000000000000000000000000000 -S3156004970000000000000000000000000000000000EF -S3156004971000000000000000000000000000000000DF -S3156004972000000000000000000000000000000000CF -S3156004973000000000000000000000000000000000BF -S3156004974000000000000000000000000000000000AF -S31560049750000000000000000000000000000000009F -S31560049760000000000000000000000000000000008F -S31560049770000000000000000000000000000000007F -S31560049780000000000000000000000000000000006F -S31560049790000000000000000000000000000000005F -S315600497A0000000000000000000000000000000004F -S315600497B0000000000000000000000000000000003F -S315600497C0000000000000000000000000000000002F -S315600497D0000000000000000000000000000000001F -S315600497E0000000000000000000000000000000000F -S315600497F000000000000000000000000000000000FF -S3156004980000000000000000000000000000000000EE -S3156004981000000000000000000000000000000000DE -S3156004982000000000000000000000000000000000CE -S3156004983000000000000000000000000000000000BE -S3156004984000000000000000000000000000000000AE -S31560049850000000000000000000000000000000009E -S31560049860000000000000000000000000000000008E -S31560049870000000000000000000000000000000007E -S31560049880000000000000000000000000000000006E -S31560049890000000000000000000000000000000005E -S315600498A0000000000000000000000000000000004E -S315600498B0000000000000000000000000000000003E -S315600498C0000000000000000000000000000000002E -S315600498D0000000000000000000000000000000001E -S315600498E0000000000000000000000000000000000E -S315600498F000000000000000000000000000000000FE -S3156004990000000000000000000000000000000000ED -S3156004991000000000000000000000000000000000DD -S3156004992000000000000000000000000000000000CD -S3156004993000000000000000000000000000000000BD -S3156004994000000000000000000000000000000000AD -S31560049950000000000000000000000000000000009D -S31560049960000000000000000000000000000000008D -S31560049970000000000000000000000000000000007D -S31560049980000000000000000000000000000000006D -S31560049990000000000000000000000000000000005D -S315600499A0000000000000000000000000000000004D -S315600499B0000000000000000000000000000000003D -S315600499C0000000000000000000000000000000002D -S315600499D0000000000000000000000000000000001D -S315600499E0000000000000000000000000000000000D -S315600499F000000000000000000000000000000000FD -S31560049A0000000000000000000000000000000000EC -S31560049A1000000000000000000000000000000000DC -S31560049A2000000000000000000000000000000000CC -S31560049A3000000000000000000000000000000000BC -S31560049A4000000000000000000000000000000000AC -S31560049A50000000000000000000000000000000009C -S31560049A60000000000000000000000000000000008C -S31560049A70000000000000000000000000000000007C -S31560049A80000000000000000000000000000000006C -S31560049A90000000000000000000000000000000005C -S31560049AA0000000000000000000000000000000004C -S31560049AB0000000000000000000000000000000003C -S31560049AC0000000000000000000000000000000002C -S31560049AD0000000000000000000000000000000001C -S31560049AE0000000000000000000000000000000000C -S31560049AF000000000000000000000000000000000FC -S31560049B0000000000000000000000000000000000EB -S31560049B1000000000000000000000000000000000DB -S31560049B2000000000000000000000000000000000CB -S31560049B3000000000000000000000000000000000BB -S31560049B4000000000000000000000000000000000AB -S31560049B50000000000000000000000000000000009B -S31560049B60000000000000000000000000000000008B -S31560049B70000000000000000000000000000000007B -S31560049B80000000000000000000000000000000006B -S31560049B90000000000000000000000000000000005B -S31560049BA0000000000000000000000000000000004B -S31560049BB0000000000000000000000000000000003B -S31560049BC0000000000000000000000000000000002B -S31560049BD0000000000000000000000000000000001B -S31560049BE0000000000000000000000000000000000B -S31560049BF000000000000000000000000000000000FB -S31560049C0000000000000000000000000000000000EA -S31560049C1000000000000000000000000000000000DA -S31560049C2000000000000000000000000000000000CA -S31560049C3000000000000000000000000000000000BA -S31560049C4000000000000000000000000000000000AA -S31560049C50000000000000000000000000000000009A -S31560049C60000000000000000000000000000000008A -S31560049C70000000000000000000000000000000007A -S31560049C80000000000000000000000000000000006A -S31560049C90000000000000000000000000000000005A -S31560049CA0000000000000000000000000000000004A -S31560049CB0000000000000000000000000000000003A -S31560049CC0000000000000000000000000000000002A -S31560049CD0000000000000000000000000000000001A -S31560049CE0000000000000000000000000000000000A -S31560049CF000000000000000000000000000000000FA -S31560049D0000000000000000000000000000000000E9 -S31560049D1000000000000000000000000000000000D9 -S31560049D2000000000000000000000000000000000C9 -S31560049D3000000000000000000000000000000000B9 -S31560049D4000000000000000000000000000000000A9 -S31560049D500000000000000000000000000000000099 -S31560049D600000000000000000000000000000000089 -S31560049D700000000000000000000000000000000079 -S31560049D800000000000000000000000000000000069 -S31560049D900000000000000000000000000000000059 -S31560049DA00000000000000000000000000000000049 -S31560049DB00000000000000000000000000000000039 -S31560049DC00000000000000000000000000000000029 -S31560049DD00000000000000000000000000000000019 -S31560049DE00000000000000000000000000000000009 -S31560049DF000000000000000000000000000000000F9 -S31560049E0000000000000000000000000000000000E8 -S31560049E1000000000000000000000000000000000D8 -S31560049E2000000000000000000000000000000000C8 -S31560049E3000000000000000000000000000000000B8 -S31560049E4000000000000000000000000000000000A8 -S31560049E500000000000000000000000000000000098 -S31560049E600000000000000000000000000000000088 -S31560049E700000000000000000000000000000000078 -S31560049E800000000000000000000000000000000068 -S31560049E900000000000000000000000000000000058 -S31560049EA00000000000000000000000000000000048 -S31560049EB00000000000000000000000000000000038 -S31560049EC00000000000000000000000000000000028 -S31560049ED00000000000000000000000000000000018 -S31560049EE00000000000000000000000000000000008 -S31560049EF000000000000000000000000000000000F8 -S31560049F0000000000000000000000000000000000E7 -S31560049F1000000000000000000000000000000000D7 -S31560049F2000000000000000000000000000000000C7 -S31560049F3000000000000000000000000000000000B7 -S31560049F4000000000000000000000000000000000A7 -S31560049F500000000000000000000000000000000097 -S31560049F600000000000000000000000000000000087 -S31560049F700000000000000000000000000000000077 -S31560049F800000000000000000000000000000000067 -S31560049F900000000000000000000000000000000057 -S31560049FA00000000000000000000000000000000047 -S31560049FB00000000000000000000000000000000037 -S31560049FC00000000000000000000000000000000027 -S31560049FD00000000000000000000000000000000017 -S31560049FE00000000000000000000000000000000007 -S31560049FF000000000000000000000000000000000F7 -S3156004A00000000000000000000000000000000000E6 -S3156004A01000000000000000000000000000000000D6 -S3156004A02000000000000000000000000000000000C6 -S3156004A03000000000000000000000000000000000B6 -S3156004A04000000000000000000000000000000000A6 -S3156004A0500000000000000000000000000000000096 -S3156004A0600000000000000000000000000000000086 -S3156004A0700000000000000000000000000000000076 -S3156004A0800000000000000000000000000000000066 -S3156004A0900000000000000000000000000000000056 -S3156004A0A00000000000000000000000000000000046 -S3156004A0B00000000000000000000000000000000036 -S3156004A0C00000000000000000000000000000000026 -S3156004A0D00000000000000000000000000000000016 -S3156004A0E00000000000000000000000000000000006 -S3156004A0F000000000000000000000000000000000F6 -S3156004A10000000000000000000000000000000000E5 -S3156004A11000000000000000000000000000000000D5 -S3156004A12000000000000000000000000000000000C5 -S3156004A13000000000000000000000000000000000B5 -S3156004A14000000000000000000000000000000000A5 -S3156004A1500000000000000000000000000000000095 -S3156004A1600000000000000000000000000000000085 -S3156004A1700000000000000000000000000000000075 -S3156004A1800000000000000000000000000000000065 -S3156004A1900000000000000000000000000000000055 -S3156004A1A00000000000000000000000000000000045 -S3156004A1B00000000000000000000000000000000035 -S3156004A1C00000000000000000000000000000000025 -S3156004A1D00000000000000000000000000000000015 -S3156004A1E00000000000000000000000000000000005 -S3156004A1F000000000000000000000000000000000F5 -S3156004A20000000000000000000000000000000000E4 -S3156004A21000000000000000000000000000000000D4 -S3156004A22000000000000000000000000000000000C4 -S3156004A23000000000000000000000000000000000B4 -S3156004A24000000000000000000000000000000000A4 -S3156004A2500000000000000000000000000000000094 -S3156004A2600000000000000000000000000000000084 -S3156004A2700000000000000000000000000000000074 -S3156004A2800000000000000000000000000000000064 -S3156004A2900000000000000000000000000000000054 -S3156004A2A00000000000000000000000000000000044 -S3156004A2B00000000000000000000000000000000034 -S3156004A2C00000000000000000000000000000000024 -S3156004A2D00000000000000000000000000000000014 -S3156004A2E00000000000000000000000000000000004 -S3156004A2F000000000000000000000000000000000F4 -S3156004A30000000000000000000000000000000000E3 -S3156004A31000000000000000000000000000000000D3 -S3156004A32000000000000000000000000000000000C3 -S3156004A33000000000000000000000000000000000B3 -S3156004A34000000000000000000000000000000000A3 -S3156004A3500000000000000000000000000000000093 -S3156004A3600000000000000000000000000000000083 -S3156004A3700000000000000000000000000000000073 -S3156004A3800000000000000000000000000000000063 -S3156004A3900000000000000000000000000000000053 -S3156004A3A00000000000000000000000000000000043 -S3156004A3B00000000000000000000000000000000033 -S3156004A3C00000000000000000000000000000000023 -S3156004A3D00000000000000000000000000000000013 -S3156004A3E00000000000000000000000000000000003 -S3156004A3F000000000000000000000000000000000F3 -S3156004A40000000000000000000000000000000000E2 -S3156004A41000000000000000000000000000000000D2 -S3156004A42000000000000000000000000000000000C2 -S3156004A43000000000000000000000000000000000B2 -S3156004A44000000000000000000000000000000000A2 -S3156004A4500000000000000000000000000000000092 -S3156004A4600000000000000000000000000000000082 -S3156004A4700000000000000000000000000000000072 -S3156004A4800000000000000000000000000000000062 -S3156004A4900000000000000000000000000000000052 -S3156004A4A00000000000000000000000000000000042 -S3156004A4B00000000000000000000000000000000032 -S3156004A4C00000000000000000000000000000000022 -S3156004A4D00000000000000000000000000000000012 -S3156004A4E00000000000000000000000000000000002 -S3156004A4F000000000000000000000000000000000F2 -S3156004A50000000000000000000000000000000000E1 -S3156004A51000000000000000000000000000000000D1 -S3156004A52000000000000000000000000000000000C1 -S3156004A53000000000000000000000000000000000B1 -S3156004A54000000000000000000000000000000000A1 -S3156004A5500000000000000000000000000000000091 -S3156004A5600000000000000000000000000000000081 -S3156004A5700000000000000000000000000000000071 -S3156004A5800000000000000000000000000000000061 -S3156004A5900000000000000000000000000000000051 -S3156004A5A00000000000000000000000000000000041 -S3156004A5B00000000000000000000000000000000031 -S3156004A5C00000000000000000000000000000000021 -S3156004A5D00000000000000000000000000000000011 -S3156004A5E00000000000000000000000000000000001 -S3156004A5F000000000000000000000000000000000F1 -S3156004A60000000000000000000000000000000000E0 -S3156004A61000000000000000000000000000000000D0 -S3156004A62000000000000000000000000000000000C0 -S3156004A63000000000000000000000000000000000B0 -S3156004A64000000000000000000000000000000000A0 -S3156004A6500000000000000000000000000000000090 -S3156004A6600000000000000000000000000000000080 -S3156004A6700000000000000000000000000000000070 -S3156004A6800000000000000000000000000000000060 -S3156004A6900000000000000000000000000000000050 -S3156004A6A00000000000000000000000000000000040 -S3156004A6B00000000000000000000000000000000030 -S3156004A6C00000000000000000000000000000000020 -S3156004A6D00000000000000000000000000000000010 -S3156004A6E00000000000000000000000000000000000 -S3156004A6F000000000000000000000000000000000F0 -S3156004A70000000000000000000000000000000000DF -S3156004A71000000000000000000000000000000000CF -S3156004A72000000000000000000000000000000000BF -S3156004A73000000000000000000000000000000000AF -S3156004A740000000000000000000000000000000009F -S3156004A750000000000000000000000000000000008F -S3156004A760000000000000000000000000000000007F -S3156004A770000000000000000000000000000000006F -S3156004A780000000000000000000000000000000005F -S3156004A790000000000000000000000000000000004F -S3156004A7A0000000000000000000000000000000003F -S3156004A7B0000000000000000000000000000000002F -S3156004A7C0000000000000000000000000000000001F -S3156004A7D0000000000000000000000000000000000F -S3156004A7E000000000000000000000000000000000FF -S3156004A7F000000000000000000000000000000000EF -S3156004A80000000000000000000000000000000000DE -S3156004A81000000000000000000000000000000000CE -S3156004A82000000000000000000000000000000000BE -S3156004A83000000000000000000000000000000000AE -S3156004A840000000000000000000000000000000009E -S3156004A850000000000000000000000000000000008E -S3156004A860000000000000000000000000000000007E -S3156004A870000000000000000000000000000000006E -S3156004A880000000000000000000000000000000005E -S3156004A890000000000000000000000000000000004E -S3156004A8A0000000000000000000000000000000003E -S3156004A8B0000000000000000000000000000000002E -S3156004A8C0000000000000000000000000000000001E -S3156004A8D0000000000000000000000000000000000E -S3156004A8E000000000000000000000000000000000FE -S3156004A8F000000000000000000000000000000000EE -S3156004A90000000000000000000000000000000000DD -S3156004A91000000000000000000000000000000000CD -S3156004A92000000000000000000000000000000000BD -S3156004A93000000000000000000000000000000000AD -S3156004A940000000000000000000000000000000009D -S3156004A950000000000000000000000000000000008D -S3156004A960000000000000000000000000000000007D -S3156004A970000000000000000000000000000000006D -S3156004A980000000000000000000000000000000005D -S3156004A990000000000000000000000000000000004D -S3156004A9A0000000000000000000000000000000003D -S3156004A9B0000000000000000000000000000000002D -S3156004A9C0000000000000000000000000000000001D -S3156004A9D0000000000000000000000000000000000D -S3156004A9E000000000000000000000000000000000FD -S3156004A9F000000000000000000000000000000000ED -S3156004AA0000000000000000000000000000000000DC -S3156004AA1000000000000000000000000000000000CC -S3156004AA2000000000000000000000000000000000BC -S3156004AA3000000000000000000000000000000000AC -S3156004AA40000000000000000000000000000000009C -S3156004AA50000000000000000000000000000000008C -S3156004AA60000000000000000000000000000000007C -S3156004AA70000000000000000000000000000000006C -S3156004AA80000000000000000000000000000000005C -S3156004AA90000000000000000000000000000000004C -S3156004AAA0000000000000000000000000000000003C -S3156004AAB0000000000000000000000000000000002C -S3156004AAC0000000000000000000000000000000001C -S3156004AAD0000000000000000000000000000000000C -S3156004AAE000000000000000000000000000000000FC -S3156004AAF000000000000000000000000000000000EC -S3156004AB0000000000000000000000000000000000DB -S3156004AB1000000000000000000000000000000000CB -S3156004AB2000000000000000000000000000000000BB -S3156004AB3000000000000000000000000000000000AB -S3156004AB40000000000000000000000000000000009B -S3156004AB50000000000000000000000000000000008B -S3156004AB60000000000000000000000000000000007B -S3156004AB70000000000000000000000000000000006B -S3156004AB80000000000000000000000000000000005B -S3156004AB90000000000000000000000000000000004B -S3156004ABA0000000000000000000000000000000003B -S3156004ABB0000000000000000000000000000000002B -S3156004ABC0000000000000000000000000000000001B -S3156004ABD0000000000000000000000000000000000B -S3156004ABE000000000000000000000000000000000FB -S3156004ABF000000000000000000000000000000000EB -S3156004AC0000000000000000000000000000000000DA -S3156004AC1000000000000000000000000000000000CA -S3156004AC2000000000000000000000000000000000BA -S3156004AC3000000000000000000000000000000000AA -S3156004AC40000000000000000000000000000000009A -S3156004AC50000000000000000000000000000000008A -S3156004AC60000000000000000000000000000000007A -S3156004AC70000000000000000000000000000000006A -S3156004AC80000000000000000000000000000000005A -S3156004AC90000000000000000000000000000000004A -S3156004ACA0000000000000000000000000000000003A -S3156004ACB0000000000000000000000000000000002A -S3156004ACC0000000000000000000000000000000001A -S3156004ACD0000000000000000000000000000000000A -S3156004ACE000000000000000000000000000000000FA -S3156004ACF000000000000000000000000000000000EA -S3156004AD0000000000000000000000000000000000D9 -S3156004AD1000000000000000000000000000000000C9 -S3156004AD2000000000000000000000000000000000B9 -S3156004AD3000000000000000000000000000000000A9 -S3156004AD400000000000000000000000000000000099 -S3156004AD500000000000000000000000000000000089 -S3156004AD600000000000000000000000000000000079 -S3156004AD700000000000000000000000000000000069 -S3156004AD800000000000000000000000000000000059 -S3156004AD900000000000000000000000000000000049 -S3156004ADA00000000000000000000000000000000039 -S3156004ADB00000000000000000000000000000000029 -S3156004ADC00000000000000000000000000000000019 -S3156004ADD00000000000000000000000000000000009 -S3156004ADE000000000000000000000000000000000F9 -S3156004ADF000000000000000000000000000000000E9 -S3156004AE0000000000000000000000000000000000D8 -S3156004AE1000000000000000000000000000000000C8 -S3156004AE2000000000000000000000000000000000B8 -S3156004AE3000000000000000000000000000000000A8 -S3156004AE400000000000000000000000000000000098 -S3156004AE500000000000000000000000000000000088 -S3156004AE600000000000000000000000000000000078 -S3156004AE700000000000000000000000000000000068 -S3156004AE800000000000000000000000000000000058 -S3156004AE900000000000000000000000000000000048 -S3156004AEA00000000000000000000000000000000038 -S3156004AEB00000000000000000000000000000000028 -S3156004AEC00000000000000000000000000000000018 -S3156004AED00000000000000000000000000000000008 -S3156004AEE000000000000000000000000000000000F8 -S3156004AEF000000000000000000000000000000000E8 -S3156004AF0000000000000000000000000000000000D7 -S3156004AF1000000000000000000000000000000000C7 -S3156004AF2000000000000000000000000000000000B7 -S3156004AF3000000000000000000000000000000000A7 -S3156004AF400000000000000000000000000000000097 -S3156004AF500000000000000000000000000000000087 -S3156004AF600000000000000000000000000000000077 -S3156004AF700000000000000000000000000000000067 -S3156004AF800000000000000000000000000000000057 -S3156004AF900000000000000000000000000000000047 -S3156004AFA00000000000000000000000000000000037 -S3156004AFB00000000000000000000000000000000027 -S3156004AFC00000000000000000000000000000000017 -S3156004AFD00000000000000000000000000000000007 -S3156004AFE000000000000000000000000000000000F7 -S3156004AFF000000000000000000000000000000000E7 -S3156004B00000000000000000000000000000000000D6 -S3156004B01000000000000000000000000000000000C6 -S3156004B02000000000000000000000000000000000B6 -S3156004B03000000000000000000000000000000000A6 -S3156004B0400000000000000000000000000000000096 -S3156004B0500000000000000000000000000000000086 -S3156004B0600000000000000000000000000000000076 -S3156004B0700000000000000000000000000000000066 -S3156004B0800000000000000000000000000000000056 -S3156004B0900000000000000000000000000000000046 -S3156004B0A00000000000000000000000000000000036 -S3156004B0B00000000000000000000000000000000026 -S3156004B0C00000000000000000000000000000000016 -S3156004B0D00000000000000000000000000000000006 -S3156004B0E000000000000000000000000000000000F6 -S3156004B0F000000000000000000000000000000000E6 -S3156004B10000000000000000000000000000000000D5 -S3156004B11000000000000000000000000000000000C5 -S3156004B12000000000000000000000000000000000B5 -S3156004B13000000000000000000000000000000000A5 -S3156004B1400000000000000000000000000000000095 -S3156004B1500000000000000000000000000000000085 -S3156004B1600000000000000000000000000000000075 -S3156004B1700000000000000000000000000000000065 -S3156004B1800000000000000000000000000000000055 -S3156004B1900000000000000000000000000000000045 -S3156004B1A00000000000000000000000000000000035 -S3156004B1B00000000000000000000000000000000025 -S3156004B1C00000000000000000000000000000000015 -S3156004B1D00000000000000000000000000000000005 -S3156004B1E000000000000000000000000000000000F5 -S3156004B1F000000000000000000000000000000000E5 -S3156004B20000000000000000000000000000000000D4 -S3156004B21000000000000000000000000000000000C4 -S3156004B22000000000000000000000000000000000B4 -S3156004B23000000000000000000000000000000000A4 -S3156004B2400000000000000000000000000000000094 -S3156004B2500000000000000000000000000000000084 -S3156004B2600000000000000000000000000000000074 -S3156004B2700000000000000000000000000000000064 -S3156004B2800000000000000000000000000000000054 -S3156004B2900000000000000000000000000000000044 -S3156004B2A00000000000000000000000000000000034 -S3156004B2B00000000000000000000000000000000024 -S3156004B2C00000000000000000000000000000000014 -S3156004B2D00000000000000000000000000000000004 -S3156004B2E000000000000000000000000000000000F4 -S3156004B2F000000000000000000000000000000000E4 -S3156004B30000000000000000000000000000000000D3 -S3156004B31000000000000000000000000000000000C3 -S3156004B32000000000000000000000000000000000B3 -S3156004B33000000000000000000000000000000000A3 -S3156004B3400000000000000000000000000000000093 -S3156004B3500000000000000000000000000000000083 -S3156004B3600000000000000000000000000000000073 -S3156004B3700000000000000000000000000000000063 -S3156004B3800000000000000000000000000000000053 -S3156004B3900000000000000000000000000000000043 -S3156004B3A00000000000000000000000000000000033 -S3156004B3B00000000000000000000000000000000023 -S3156004B3C00000000000000000000000000000000013 -S3156004B3D00000000000000000000000000000000003 -S3156004B3E000000000000000000000000000000000F3 -S3156004B3F000000000000000000000000000000000E3 -S3156004B40000000000000000000000000000000000D2 -S3156004B41000000000000000000000000000000000C2 -S3156004B42000000000000000000000000000000000B2 -S3156004B43000000000000000000000000000000000A2 -S3156004B4400000000000000000000000000000000092 -S3156004B4500000000000000000000000000000000082 -S3156004B4600000000000000000000000000000000072 -S3156004B4700000000000000000000000000000000062 -S3156004B4800000000000000000000000000000000052 -S3156004B4900000000000000000000000000000000042 -S3156004B4A00000000000000000000000000000000032 -S3156004B4B00000000000000000000000000000000022 -S3156004B4C00000000000000000000000000000000012 -S3156004B4D00000000000000000000000000000000002 -S3156004B4E000000000000000000000000000000000F2 -S3156004B4F000000000000000000000000000000000E2 -S3156004B50000000000000000000000000000000000D1 -S3156004B51000000000000000000000000000000000C1 -S3156004B52000000000000000000000000000000000B1 -S3156004B53000000000000000000000000000000000A1 -S3156004B5400000000000000000000000000000000091 -S3156004B5500000000000000000000000000000000081 -S3156004B5600000000000000000000000000000000071 -S3156004B5700000000000000000000000000000000061 -S3156004B5800000000000000000000000000000000051 -S3156004B5900000000000000000000000000000000041 -S3156004B5A00000000000000000000000000000000031 -S3156004B5B00000000000000000000000000000000021 -S3156004B5C00000000000000000000000000000000011 -S3156004B5D00000000000000000000000000000000001 -S3156004B5E000000000000000000000000000000000F1 -S3156004B5F000000000000000000000000000000000E1 -S3156004B60000000000000000000000000000000000D0 -S3156004B61000000000000000000000000000000000C0 -S3156004B62000000000000000000000000000000000B0 -S3156004B63000000000000000000000000000000000A0 -S3156004B6400000000000000000000000000000000090 -S3156004B6500000000000000000000000000000000080 -S3156004B6600000000000000000000000000000000070 -S3156004B6700000000000000000000000000000000060 -S3156004B6800000000000000000000000000000000050 -S3156004B6900000000000000000000000000000000040 -S3156004B6A00000000000000000000000000000000030 -S3156004B6B00000000000000000000000000000000020 -S3156004B6C00000000000000000000000000000000010 -S3156004B6D00000000000000000000000000000000000 -S3156004B6E000000000000000000000000000000000F0 -S3156004B6F000000000000000000000000000000000E0 -S3156004B70000000000000000000000000000000000CF -S3156004B71000000000000000000000000000000000BF -S3156004B72000000000000000000000000000000000AF -S3156004B730000000000000000000000000000000009F -S3156004B740000000000000000000000000000000008F -S3156004B750000000000000000000000000000000007F -S3156004B760000000000000000000000000000000006F -S3156004B770000000000000000000000000000000005F -S3156004B780000000000000000000000000000000004F -S3156004B790000000000000000000000000000000003F -S3156004B7A0000000000000000000000000000000002F -S3156004B7B0000000000000000000000000000000001F -S3156004B7C0000000000000000000000000000000000F -S3156004B7D000000000000000000000000000000000FF -S3156004B7E000000000000000000000000000000000EF -S3156004B7F000000000000000000000000000000000DF -S3156004B80000000000000000000000000000000000CE -S3156004B81000000000000000000000000000000000BE -S3156004B82000000000000000000000000000000000AE -S3156004B830000000000000000000000000000000009E -S3156004B840000000000000000000000000000000008E -S3156004B850000000000000000000000000000000007E -S3156004B860000000000000000000000000000000006E -S3156004B870000000000000000000000000000000005E -S3156004B880000000000000000000000000000000004E -S3156004B890000000000000000000000000000000003E -S3156004B8A0000000000000000000000000000000002E -S3156004B8B0000000000000000000000000000000001E -S3156004B8C0000000000000000000000000000000000E -S3156004B8D000000000000000000000000000000000FE -S3156004B8E000000000000000000000000000000000EE -S3156004B8F000000000000000000000000000000000DE -S3156004B90000000000000000000000000000000000CD -S3156004B91000000000000000000000000000000000BD -S3156004B92000000000000000000000000000000000AD -S3156004B930000000000000000000000000000000009D -S3156004B940000000000000000000000000000000008D -S3156004B950000000000000000000000000000000007D -S3156004B960000000000000000000000000000000006D -S3156004B970000000000000000000000000000000005D -S3156004B980000000000000000000000000000000004D -S3156004B990000000000000000000000000000000003D -S3156004B9A0000000000000000000000000000000002D -S3156004B9B0000000000000000000000000000000001D -S3156004B9C0000000000000000000000000000000000D -S3156004B9D000000000000000000000000000000000FD -S3156004B9E000000000000000000000000000000000ED -S3156004B9F000000000000000000000000000000000DD -S3156004BA0000000000000000000000000000000000CC -S3156004BA1000000000000000000000000000000000BC -S3156004BA2000000000000000000000000000000000AC -S3156004BA30000000000000000000000000000000009C -S3156004BA40000000000000000000000000000000008C -S3156004BA50000000000000000000000000000000007C -S3156004BA60000000000000000000000000000000006C -S3156004BA70000000000000000000000000000000005C -S3156004BA80000000000000000000000000000000004C -S3156004BA90000000000000000000000000000000003C -S3156004BAA0000000000000000000000000000000002C -S3156004BAB0000000000000000000000000000000001C -S3156004BAC0000000000000000000000000000000000C -S3156004BAD000000000000000000000000000000000FC -S3156004BAE000000000000000000000000000000000EC -S3156004BAF000000000000000000000000000000000DC -S3156004BB0000000000000000000000000000000000CB -S3156004BB1000000000000000000000000000000000BB -S3156004BB2000000000000000000000000000000000AB -S3156004BB30000000000000000000000000000000009B -S3156004BB40000000000000000000000000000000008B -S3156004BB50000000000000000000000000000000007B -S3156004BB60000000000000000000000000000000006B -S3156004BB70000000000000000000000000000000005B -S3156004BB80000000000000000000000000000000004B -S3156004BB90000000000000000000000000000000003B -S3156004BBA0000000000000000000000000000000002B -S3156004BBB0000000000000000000000000000000001B -S3156004BBC0000000000000000000000000000000000B -S3156004BBD000000000000000000000000000000000FB -S3156004BBE000000000000000000000000000000000EB -S3156004BBF000000000000000000000000000000000DB -S3156004BC0000000000000000000000000000000000CA -S3156004BC1000000000000000000000000000000000BA -S3156004BC2000000000000000000000000000000000AA -S3156004BC30000000000000000000000000000000009A -S3156004BC40000000000000000000000000000000008A -S3156004BC50000000000000000000000000000000007A -S3156004BC60000000000000000000000000000000006A -S3156004BC70000000000000000000000000000000005A -S3156004BC80000000000000000000000000000000004A -S3156004BC90000000000000000000000000000000003A -S3156004BCA0000000000000000000000000000000002A -S3156004BCB0000000000000000000000000000000001A -S3156004BCC0000000000000000000000000000000000A -S3156004BCD000000000000000000000000000000000FA -S3156004BCE000000000000000000000000000000000EA -S3156004BCF000000000000000000000000000000000DA -S3156004BD0000000000000000000000000000000000C9 -S3156004BD1000000000000000000000000000000000B9 -S3156004BD2000000000000000000000000000000000A9 -S3156004BD300000000000000000000000000000000099 -S3156004BD400000000000000000000000000000000089 -S3156004BD500000000000000000000000000000000079 -S3156004BD600000000000000000000000000000000069 -S3156004BD700000000000000000000000000000000059 -S3156004BD800000000000000000000000000000000049 -S3156004BD900000000000000000000000000000000039 -S3156004BDA00000000000000000000000000000000029 -S3156004BDB00000000000000000000000000000000019 -S3156004BDC00000000000000000000000000000000009 -S3156004BDD000000000000000000000000000000000F9 -S3156004BDE000000000000000000000000000000000E9 -S3156004BDF000000000000000000000000000000000D9 -S3156004BE0000000000000000000000000000000000C8 -S3156004BE1000000000000000000000000000000000B8 -S3156004BE2000000000000000000000000000000000A8 -S3156004BE300000000000000000000000000000000098 -S3156004BE400000000000000000000000000000000088 -S3156004BE500000000000000000000000000000000078 -S3156004BE600000000000000000000000000000000068 -S3156004BE700000000000000000000000000000000058 -S3156004BE800000000000000000000000000000000048 -S3156004BE900000000000000000000000000000000038 -S3156004BEA00000000000000000000000000000000028 -S3156004BEB00000000000000000000000000000000018 -S3156004BEC00000000000000000000000000000000008 -S3156004BED000000000000000000000000000000000F8 -S3156004BEE000000000000000000000000000000000E8 -S3156004BEF000000000000000000000000000000000D8 -S3156004BF0000000000000000000000000000000000C7 -S3156004BF1000000000000000000000000000000000B7 -S3156004BF2000000000000000000000000000000000A7 -S3156004BF300000000000000000000000000000000097 -S3156004BF400000000000000000000000000000000087 -S3156004BF500000000000000000000000000000000077 -S3156004BF600000000000000000000000000000000067 -S3156004BF700000000000000000000000000000000057 -S3156004BF800000000000000000000000000000000047 -S3156004BF900000000000000000000000000000000037 -S3156004BFA00000000000000000000000000000000027 -S3156004BFB00000000000000000000000000000000017 -S3156004BFC00000000000000000000000000000000007 -S3156004BFD000000000000000000000000000000000F7 -S3156004BFE000000000000000000000000000000000E7 -S3156004BFF000000000000000000000000000000000D7 -S3156004C00000000000000000000000000000000000C6 -S3156004C01000000000000000000000000000000000B6 -S3156004C02000000000000000000000000000000000A6 -S3156004C0300000000000000000000000000000000096 -S3156004C0400000000000000000000000000000000086 -S3156004C0500000000000000000000000000000000076 -S3156004C0600000000000000000000000000000000066 -S3156004C0700000000000000000000000000000000056 -S3156004C0800000000000000000000000000000000046 -S3156004C0900000000000000000000000000000000036 -S3156004C0A00000000000000000000000000000000026 -S3156004C0B00000000000000000000000000000000016 -S3156004C0C00000000000000000000000000000000006 -S3156004C0D000000000000000000000000000000000F6 -S3156004C0E000000000000000000000000000000000E6 -S3156004C0F000000000000000000000000000000000D6 -S3156004C10000000000000000000000000000000000C5 -S3156004C11000000000000000000000000000000000B5 -S3156004C12000000000000000000000000000000000A5 -S3156004C1300000000000000000000000000000000095 -S3156004C1400000000000000000000000000000000085 -S3156004C1500000000000000000000000000000000075 -S3156004C1600000000000000000000000000000000065 -S3156004C1700000000000000000000000000000000055 -S3156004C1800000000000000000000000000000000045 -S3156004C1900000000000000000000000000000000035 -S3156004C1A00000000000000000000000000000000025 -S3156004C1B00000000000000000000000000000000015 -S3156004C1C00000000000000000000000000000000005 -S3156004C1D000000000000000000000000000000000F5 -S3156004C1E000000000000000000000000000000000E5 -S3156004C1F000000000000000000000000000000000D5 -S3156004C20000000000000000000000000000000000C4 -S3156004C21000000000000000000000000000000000B4 -S3156004C22000000000000000000000000000000000A4 -S3156004C2300000000000000000000000000000000094 -S3156004C2400000000000000000000000000000000084 -S3156004C2500000000000000000000000000000000074 -S3156004C2600000000000000000000000000000000064 -S3156004C2700000000000000000000000000000000054 -S3156004C2800000000000000000000000000000000044 -S3156004C2900000000000000000000000000000000034 -S3156004C2A00000000000000000000000000000000024 -S3156004C2B00000000000000000000000000000000014 -S3156004C2C00000000000000000000000000000000004 -S3156004C2D000000000000000000000000000000000F4 -S3156004C2E000000000000000000000000000000000E4 -S3156004C2F000000000000000000000000000000000D4 -S3156004C30000000000000000000000000000000000C3 -S3156004C31000000000000000000000000000000000B3 -S3156004C32000000000000000000000000000000000A3 -S3156004C3300000000000000000000000000000000093 -S3156004C3400000000000000000000000000000000083 -S3156004C3500000000000000000000000000000000073 -S3156004C3600000000000000000000000000000000063 -S3156004C3700000000000000000000000000000000053 -S3156004C3800000000000000000000000000000000043 -S3156004C3900000000000000000000000000000000033 -S3156004C3A00000000000000000000000000000000023 -S3156004C3B00000000000000000000000000000000013 -S3156004C3C00000000000000000000000000000000003 -S3156004C3D000000000000000000000000000000000F3 -S3156004C3E000000000000000000000000000000000E3 -S3156004C3F000000000000000000000000000000000D3 -S3156004C40000000000000000000000000000000000C2 -S3156004C41000000000000000000000000000000000B2 -S3156004C42000000000000000000000000000000000A2 -S3156004C4300000000000000000000000000000000092 -S3156004C4400000000000000000000000000000000082 -S3156004C4500000000000000000000000000000000072 -S3156004C4600000000000000000000000000000000062 -S3156004C4700000000000000000000000000000000052 -S3156004C4800000000000000000000000000000000042 -S3156004C4900000000000000000000000000000000032 -S3156004C4A00000000000000000000000000000000022 -S3156004C4B00000000000000000000000000000000012 -S3156004C4C00000000000000000000000000000000002 -S3156004C4D000000000000000000000000000000000F2 -S3156004C4E000000000000000000000000000000000E2 -S3156004C4F000000000000000000000000000000000D2 -S3156004C50000000000000000000000000000000000C1 -S3156004C51000000000000000000000000000000000B1 -S3156004C52000000000000000000000000000000000A1 -S3156004C5300000000000000000000000000000000091 -S3156004C5400000000000000000000000000000000081 -S3156004C5500000000000000000000000000000000071 -S3156004C5600000000000000000000000000000000061 -S3156004C5700000000000000000000000000000000051 -S3156004C5800000000000000000000000000000000041 -S3156004C5900000000000000000000000000000000031 -S3156004C5A00000000000000000000000000000000021 -S3156004C5B00000000000000000000000000000000011 -S3156004C5C00000000000000000000000000000000001 -S3156004C5D000000000000000000000000000000000F1 -S3156004C5E000000000000000000000000000000000E1 -S3156004C5F000000000000000000000000000000000D1 -S3156004C60000000000000000000000000000000000C0 -S3156004C61000000000000000000000000000000000B0 -S3156004C62000000000000000000000000000000000A0 -S3156004C6300000000000000000000000000000000090 -S3156004C6400000000000000000000000000000000080 -S3156004C6500000000000000000000000000000000070 -S3156004C6600000000000000000000000000000000060 -S3156004C6700000000000000000000000000000000050 -S3156004C6800000000000000000000000000000000040 -S3156004C6900000000000000000000000000000000030 -S3156004C6A00000000000000000000000000000000020 -S3156004C6B00000000000000000000000000000000010 -S3156004C6C00000000000000000000000000000000000 -S3156004C6D000000000000000000000000000000000F0 -S3156004C6E000000000000000000000000000000000E0 -S3156004C6F000000000000000000000000000000000D0 -S3156004C70000000000000000000000000000000000BF -S3156004C71000000000000000000000000000000000AF -S3156004C720000000000000000000000000000000009F -S3156004C730000000000000000000000000000000008F -S3156004C740000000000000000000000000000000007F -S3156004C750000000000000000000000000000000006F -S3156004C760000000000000000000000000000000005F -S3156004C770000000000000000000000000000000004F -S3156004C780000000000000000000000000000000003F -S3156004C790000000000000000000000000000000002F -S3156004C7A0000000000000000000000000000000001F -S3156004C7B0000000000000000000000000000000000F -S3156004C7C000000000000000000000000000000000FF -S3156004C7D000000000000000000000000000000000EF -S3156004C7E000000000000000000000000000000000DF -S3156004C7F000000000000000000000000000000000CF -S3156004C80000000000000000000000000000000000BE -S3156004C81000000000000000000000000000000000AE -S3156004C820000000000000000000000000000000009E -S3156004C830000000000000000000000000000000008E -S3156004C840000000000000000000000000000000007E -S3156004C850000000000000000000000000000000006E -S3156004C860000000000000000000000000000000005E -S3156004C870000000000000000000000000000000004E -S3156004C880000000000000000000000000000000003E -S3156004C890000000000000000000000000000000002E -S3156004C8A0000000000000000000000000000000001E -S3156004C8B0000000000000000000000000000000000E -S3156004C8C000000000000000000000000000000000FE -S3156004C8D000000000000000000000000000000000EE -S3156004C8E000000000000000000000000000000000DE -S3156004C8F000000000000000000000000000000000CE -S3156004C90000000000000000000000000000000000BD -S3156004C91000000000000000000000000000000000AD -S3156004C920000000000000000000000000000000009D -S3156004C930000000000000000000000000000000008D -S3156004C940000000000000000000000000000000007D -S3156004C950000000000000000000000000000000006D -S3156004C960000000000000000000000000000000005D -S3156004C970000000000000000000000000000000004D -S3156004C980000000000000000000000000000000003D -S3156004C990000000000000000000000000000000002D -S3156004C9A0000000000000000000000000000000001D -S3156004C9B0000000000000000000000000000000000D -S3156004C9C000000000000000000000000000000000FD -S3156004C9D000000000000000000000000000000000ED -S3156004C9E000000000000000000000000000000000DD -S3156004C9F000000000000000000000000000000000CD -S3156004CA0000000000000000000000000000000000BC -S3156004CA1000000000000000000000000000000000AC -S3156004CA20000000000000000000000000000000009C -S3156004CA30000000000000000000000000000000008C -S3156004CA40000000000000000000000000000000007C -S3156004CA50000000000000000000000000000000006C -S3156004CA60000000000000000000000000000000005C -S3156004CA70000000000000000000000000000000004C -S3156004CA80000000000000000000000000000000003C -S3156004CA90000000000000000000000000000000002C -S3156004CAA0000000000000000000000000000000001C -S3156004CAB0000000000000000000000000000000000C -S3156004CAC000000000000000000000000000000000FC -S3156004CAD000000000000000000000000000000000EC -S3156004CAE000000000000000000000000000000000DC -S3156004CAF000000000000000000000000000000000CC -S3156004CB0000000000000000000000000000000000BB -S3156004CB1000000000000000000000000000000000AB -S3156004CB20000000000000000000000000000000009B -S3156004CB30000000000000000000000000000000008B -S3156004CB40000000000000000000000000000000007B -S3156004CB50000000000000000000000000000000006B -S3156004CB60000000000000000000000000000000005B -S3156004CB70000000000000000000000000000000004B -S3156004CB80000000000000000000000000000000003B -S3156004CB90000000000000000000000000000000002B -S3156004CBA0000000000000000000000000000000001B -S3156004CBB0000000000000000000000000000000000B -S3156004CBC000000000000000000000000000000000FB -S3156004CBD000000000000000000000000000000000EB -S3156004CBE000000000000000000000000000000000DB -S3156004CBF000000000000000000000000000000000CB -S3156004CC0000000000000000000000000000000000BA -S3156004CC1000000000000000000000000000000000AA -S3156004CC20000000000000000000000000000000009A -S3156004CC30000000000000000000000000000000008A -S3156004CC40000000000000000000000000000000007A -S3156004CC50000000000000000000000000000000006A -S3156004CC60000000000000000000000000000000005A -S3156004CC70000000000000000000000000000000004A -S3156004CC80000000000000000000000000000000003A -S3156004CC90000000000000000000000000000000002A -S3156004CCA0000000000000000000000000000000001A -S3156004CCB0000000000000000000000000000000000A -S3156004CCC000000000000000000000000000000000FA -S3156004CCD000000000000000000000000000000000EA -S3156004CCE000000000000000000000000000000000DA -S3156004CCF000000000000000000000000000000000CA -S3156004CD0000000000000000000000000000000000B9 -S3156004CD1000000000000000000000000000000000A9 -S3156004CD200000000000000000000000000000000099 -S3156004CD300000000000000000000000000000000089 -S3156004CD400000000000000000000000000000000079 -S3156004CD500000000000000000000000000000000069 -S3156004CD600000000000000000000000000000000059 -S3156004CD700000000000000000000000000000000049 -S3156004CD800000000000000000000000000000000039 -S3156004CD900000000000000000000000000000000029 -S3156004CDA00000000000000000000000000000000019 -S3156004CDB00000000000000000000000000000000009 -S3156004CDC000000000000000000000000000000000F9 -S3156004CDD000000000000000000000000000000000E9 -S3156004CDE000000000000000000000000000000000D9 -S3156004CDF000000000000000000000000000000000C9 -S3156004CE0000000000000000000000000000000000B8 -S3156004CE1000000000000000000000000000000000A8 -S3156004CE200000000000000000000000000000000098 -S3156004CE300000000000000000000000000000000088 -S3156004CE400000000000000000000000000000000078 -S3156004CE500000000000000000000000000000000068 -S3156004CE600000000000000000000000000000000058 -S3156004CE700000000000000000000000000000000048 -S3156004CE800000000000000000000000000000000038 -S3156004CE900000000000000000000000000000000028 -S3156004CEA00000000000000000000000000000000018 -S3156004CEB00000000000000000000000000000000008 -S3156004CEC000000000000000000000000000000000F8 -S3156004CED000000000000000000000000000000000E8 -S3156004CEE000000000000000000000000000000000D8 -S3156004CEF000000000000000000000000000000000C8 -S3156004CF0000000000000000000000000000000000B7 -S3156004CF1000000000000000000000000000000000A7 -S3156004CF200000000000000000000000000000000097 -S3156004CF300000000000000000000000000000000087 -S3156004CF400000000000000000000000000000000077 -S3156004CF500000000000000000000000000000000067 -S3156004CF600000000000000000000000000000000057 -S3156004CF700000000000000000000000000000000047 -S3156004CF800000000000000000000000000000000037 -S3156004CF900000000000000000000000000000000027 -S3156004CFA00000000000000000000000000000000017 -S3156004CFB00000000000000000000000000000000007 -S3156004CFC000000000000000000000000000000000F7 -S3156004CFD000000000000000000000000000000000E7 -S3156004CFE000000000000000000000000000000000D7 -S3156004CFF000000000000000000000000000000000C7 -S3156004D00000000000000000000000000000000000B6 -S3156004D01000000000000000000000000000000000A6 -S3156004D0200000000000000000000000000000000096 -S3156004D0300000000000000000000000000000000086 -S3156004D0400000000000000000000000000000000076 -S3156004D0500000000000000000000000000000000066 -S3156004D0600000000000000000000000000000000056 -S3156004D0700000000000000000000000000000000046 -S3156004D0800000000000000000000000000000000036 -S3156004D0900000000000000000000000000000000026 -S3156004D0A00000000000000000000000000000000016 -S3156004D0B00000000000000000000000000000000006 -S3156004D0C000000000000000000000000000000000F6 -S3156004D0D000000000000000000000000000000000E6 -S3156004D0E000000000000000000000000000000000D6 -S3156004D0F000000000000000000000000000000000C6 -S3156004D10000000000000000000000000000000000B5 -S3156004D11000000000000000000000000000000000A5 -S3156004D1200000000000000000000000000000000095 -S3156004D1300000000000000000000000000000000085 -S3156004D1400000000000000000000000000000000075 -S3156004D1500000000000000000000000000000000065 -S3156004D1600000000000000000000000000000000055 -S3156004D1700000000000000000000000000000000045 -S3156004D1800000000000000000000000000000000035 -S3156004D1900000000000000000000000000000000025 -S3156004D1A00000000000000000000000000000000015 -S3156004D1B00000000000000000000000000000000005 -S3156004D1C000000000000000000000000000000000F5 -S3156004D1D000000000000000000000000000000000E5 -S3156004D1E000000000000000000000000000000000D5 -S3156004D1F000000000000000000000000000000000C5 -S3156004D20000000000000000000000000000000000B4 -S3156004D21000000000000000000000000000000000A4 -S3156004D2200000000000000000000000000000000094 -S3156004D2300000000000000000000000000000000084 -S3156004D2400000000000000000000000000000000074 -S3156004D2500000000000000000000000000000000064 -S3156004D2600000000000000000000000000000000054 -S3156004D2700000000000000000000000000000000044 -S3156004D2800000000000000000000000000000000034 -S3156004D2900000000000000000000000000000000024 -S3156004D2A00000000000000000000000000000000014 -S3156004D2B00000000000000000000000000000000004 -S3156004D2C000000000000000000000000000000000F4 -S3156004D2D000000000000000000000000000000000E4 -S3156004D2E000000000000000000000000000000000D4 -S3156004D2F000000000000000000000000000000000C4 -S3156004D30000000000000000000000000000000000B3 -S3156004D31000000000000000000000000000000000A3 -S3156004D3200000000000000000000000000000000093 -S3156004D3300000000000000000000000000000000083 -S3156004D3400000000000000000000000000000000073 -S3156004D3500000000000000000000000000000000063 -S3156004D3600000000000000000000000000000000053 -S3156004D3700000000000000000000000000000000043 -S3156004D3800000000000000000000000000000000033 -S3156004D3900000000000000000000000000000000023 -S3156004D3A00000000000000000000000000000000013 -S3156004D3B00000000000000000000000000000000003 -S3156004D3C000000000000000000000000000000000F3 -S3156004D3D000000000000000000000000000000000E3 -S3156004D3E000000000000000000000000000000000D3 -S3156004D3F000000000000000000000000000000000C3 -S3156004D40000000000000000000000000000000000B2 -S3156004D41000000000000000000000000000000000A2 -S3156004D4200000000000000000000000000000000092 -S3156004D4300000000000000000000000000000000082 -S3156004D4400000000000000000000000000000000072 -S3156004D4500000000000000000000000000000000062 -S3156004D4600000000000000000000000000000000052 -S3156004D4700000000000000000000000000000000042 -S3156004D4800000000000000000000000000000000032 -S3156004D4900000000000000000000000000000000022 -S3156004D4A00000000000000000000000000000000012 -S3156004D4B00000000000000000000000000000000002 -S3156004D4C000000000000000000000000000000000F2 -S3156004D4D000000000000000000000000000000000E2 -S3156004D4E000000000000000000000000000000000D2 -S3156004D4F000000000000000000000000000000000C2 -S3156004D50000000000000000000000000000000000B1 -S3156004D51000000000000000000000000000000000A1 -S3156004D5200000000000000000000000000000000091 -S3156004D5300000000000000000000000000000000081 -S3156004D5400000000000000000000000000000000071 -S3156004D5500000000000000000000000000000000061 -S3156004D5600000000000000000000000000000000051 -S3156004D5700000000000000000000000000000000041 -S3156004D5800000000000000000000000000000000031 -S3156004D5900000000000000000000000000000000021 -S3156004D5A00000000000000000000000000000000011 -S3156004D5B00000000000000000000000000000000001 -S3156004D5C000000000000000000000000000000000F1 -S3156004D5D000000000000000000000000000000000E1 -S3156004D5E000000000000000000000000000000000D1 -S3156004D5F000000000000000000000000000000000C1 -S3156004D60000000000000000000000000000000000B0 -S3156004D61000000000000000000000000000000000A0 -S3156004D6200000000000000000000000000000000090 -S3156004D6300000000000000000000000000000000080 -S3156004D6400000000000000000000000000000000070 -S3156004D6500000000000000000000000000000000060 -S3156004D6600000000000000000000000000000000050 -S3156004D6700000000000000000000000000000000040 -S3156004D6800000000000000000000000000000000030 -S3156004D6900000000000000000000000000000000020 -S3156004D6A00000000000000000000000000000000010 -S3156004D6B00000000000000000000000000000000000 -S3156004D6C000000000000000000000000000000000F0 -S3156004D6D000000000000000000000000000000000E0 -S3156004D6E000000000000000000000000000000000D0 -S3156004D6F000000000000000000000000000000000C0 -S3156004D70000000000000000000000000000000000AF -S3156004D710000000000000000000000000000000009F -S3156004D720000000000000000000000000000000008F -S3156004D730000000000000000000000000000000007F -S3156004D740000000000000000000000000000000006F -S3156004D750000000000000000000000000000000005F -S3156004D760000000000000000000000000000000004F -S3156004D770000000000000000000000000000000003F -S3156004D780000000000000000000000000000000002F -S3156004D790000000000000000000000000000000001F -S3156004D7A0000000000000000000000000000000000F -S3156004D7B000000000000000000000000000000000FF -S3156004D7C000000000000000000000000000000000EF -S3156004D7D000000000000000000000000000000000DF -S3156004D7E000000000000000000000000000000000CF -S3156004D7F000000000000000000000000000000000BF -S3156004D80000000000000000000000000000000000AE -S3156004D810000000000000000000000000000000009E -S3156004D820000000000000000000000000000000008E -S3156004D830000000000000000000000000000000007E -S3156004D840000000000000000000000000000000006E -S3156004D850000000000000000000000000000000005E -S3156004D860000000000000000000000000000000004E -S3156004D870000000000000000000000000000000003E -S3156004D880000000000000000000000000000000002E -S3156004D890000000000000000000000000000000001E -S3156004D8A0000000000000000000000000000000000E -S3156004D8B000000000000000000000000000000000FE -S3156004D8C000000000000000000000000000000000EE -S3156004D8D000000000000000000000000000000000DE -S3156004D8E000000000000000000000000000000000CE -S3156004D8F000000000000000000000000000000000BE -S3156004D90000000000000000000000000000000000AD -S3156004D910000000000000000000000000000000009D -S3156004D920000000000000000000000000000000008D -S3156004D930000000000000000000000000000000007D -S3156004D940000000000000000000000000000000006D -S3156004D950000000000000000000000000000000005D -S3156004D960000000000000000000000000000000004D -S3156004D970000000000000000000000000000000003D -S3156004D980000000000000000000000000000000002D -S3156004D990000000000000000000000000000000001D -S3156004D9A0000000000000000000000000000000000D -S3156004D9B000000000000000000000000000000000FD -S3156004D9C000000000000000000000000000000000ED -S3156004D9D000000000000000000000000000000000DD -S3156004D9E000000000000000000000000000000000CD -S3156004D9F000000000000000000000000000000000BD -S3156004DA0000000000000000000000000000000000AC -S3156004DA10000000000000000000000000000000009C -S3156004DA20000000000000000000000000000000008C -S3156004DA30000000000000000000000000000000007C -S3156004DA40000000000000000000000000000000006C -S3156004DA50000000000000000000000000000000005C -S3156004DA60000000000000000000000000000000004C -S3156004DA70000000000000000000000000000000003C -S3156004DA80000000000000000000000000000000002C -S3156004DA90000000000000000000000000000000001C -S3156004DAA0000000000000000000000000000000000C -S3156004DAB000000000000000000000000000000000FC -S3156004DAC000000000000000000000000000000000EC -S3156004DAD000000000000000000000000000000000DC -S3156004DAE000000000000000000000000000000000CC -S3156004DAF000000000000000000000000000000000BC -S3156004DB0000000000000000000000000000000000AB -S3156004DB10000000000000000000000000000000009B -S3156004DB20000000000000000000000000000000008B -S3156004DB30000000000000000000000000000000007B -S3156004DB40000000000000000000000000000000006B -S3156004DB50000000000000000000000000000000005B -S3156004DB60000000000000000000000000000000004B -S3156004DB70000000000000000000000000000000003B -S3156004DB80000000000000000000000000000000002B -S3156004DB90000000000000000000000000000000001B -S3156004DBA0000000000000000000000000000000000B -S3156004DBB000000000000000000000000000000000FB -S3156004DBC000000000000000000000000000000000EB -S3156004DBD000000000000000000000000000000000DB -S3156004DBE000000000000000000000000000000000CB -S3156004DBF000000000000000000000000000000000BB -S3156004DC0000000000000000000000000000000000AA -S3156004DC10000000000000000000000000000000009A -S3156004DC20000000000000000000000000000000008A -S3156004DC30000000000000000000000000000000007A -S3156004DC40000000000000000000000000000000006A -S3156004DC50000000000000000000000000000000005A -S3156004DC60000000000000000000000000000000004A -S3156004DC70000000000000000000000000000000003A -S3156004DC80000000000000000000000000000000002A -S3156004DC90000000000000000000000000000000001A -S3156004DCA0000000000000000000000000000000000A -S3156004DCB000000000000000000000000000000000FA -S3156004DCC000000000000000000000000000000000EA -S3156004DCD000000000000000000000000000000000DA -S3156004DCE000000000000000000000000000000000CA -S3156004DCF000000000000000000000000000000000BA -S3156004DD0000000000000000000000000000000000A9 -S3156004DD100000000000000000000000000000000099 -S3156004DD200000000000000000000000000000000089 -S3156004DD300000000000000000000000000000000079 -S3156004DD400000000000000000000000000000000069 -S3156004DD500000000000000000000000000000000059 -S3156004DD600000000000000000000000000000000049 -S3156004DD700000000000000000000000000000000039 -S3156004DD800000000000000000000000000000000029 -S3156004DD900000000000000000000000000000000019 -S3156004DDA00000000000000000000000000000000009 -S3156004DDB000000000000000000000000000000000F9 -S3156004DDC000000000000000000000000000000000E9 -S3156004DDD000000000000000000000000000000000D9 -S3156004DDE000000000000000000000000000000000C9 -S3156004DDF000000000000000000000000000000000B9 -S3156004DE0000000000000000000000000000000000A8 -S3156004DE100000000000000000000000000000000098 -S3156004DE200000000000000000000000000000000088 -S3156004DE300000000000000000000000000000000078 -S3156004DE400000000000000000000000000000000068 -S3156004DE500000000000000000000000000000000058 -S3156004DE600000000000000000000000000000000048 -S3156004DE700000000000000000000000000000000038 -S3156004DE800000000000000000000000000000000028 -S3156004DE900000000000000000000000000000000018 -S3156004DEA00000000000000000000000000000000008 -S3156004DEB000000000000000000000000000000000F8 -S3156004DEC000000000000000000000000000000000E8 -S3156004DED000000000000000000000000000000000D8 -S3156004DEE000000000000000000000000000000000C8 -S3156004DEF000000000000000000000000000000000B8 -S3156004DF0000000000000000000000000000000000A7 -S3156004DF100000000000000000000000000000000097 -S3156004DF200000000000000000000000000000000087 -S3156004DF300000000000000000000000000000000077 -S3156004DF400000000000000000000000000000000067 -S3156004DF500000000000000000000000000000000057 -S3156004DF600000000000000000000000000000000047 -S3156004DF700000000000000000000000000000000037 -S3156004DF800000000000000000000000000000000027 -S3156004DF900000000000000000000000000000000017 -S3156004DFA00000000000000000000000000000000007 -S3156004DFB000000000000000000000000000000000F7 -S3156004DFC000000000000000000000000000000000E7 -S3156004DFD000000000000000000000000000000000D7 -S3156004DFE000000000000000000000000000000000C7 -S3156004DFF000000000000000000000000000000000B7 -S3156004E00000000000000000000000000000000000A6 -S3156004E0100000000000000000000000000000000096 -S3156004E0200000000000000000000000000000000086 -S3156004E0300000000000000000000000000000000076 -S3156004E0400000000000000000000000000000000066 -S3156004E0500000000000000000000000000000000056 -S3156004E0600000000000000000000000000000000046 -S3156004E0700000000000000000000000000000000036 -S3156004E0800000000000000000000000000000000026 -S3156004E0900000000000000000000000000000000016 -S3156004E0A00000000000000000000000000000000006 -S3156004E0B000000000000000000000000000000000F6 -S3156004E0C000000000000000000000000000000000E6 -S3156004E0D000000000000000000000000000000000D6 -S3156004E0E000000000000000000000000000000000C6 -S3156004E0F000000000000000000000000000000000B6 -S3156004E10000000000000000000000000000000000A5 -S3156004E1100000000000000000000000000000000095 -S3156004E1200000000000000000000000000000000085 -S3156004E1300000000000000000000000000000000075 -S3156004E1400000000000000000000000000000000065 -S3156004E1500000000000000000000000000000000055 -S3156004E1600000000000000000000000000000000045 -S3156004E1700000000000000000000000000000000035 -S3156004E1800000000000000000000000000000000025 -S3156004E1900000000000000000000000000000000015 -S3156004E1A00000000000000000000000000000000005 -S3156004E1B000000000000000000000000000000000F5 -S3156004E1C000000000000000000000000000000000E5 -S3156004E1D000000000000000000000000000000000D5 -S3156004E1E000000000000000000000000000000000C5 -S3156004E1F000000000000000000000000000000000B5 -S3156004E20000000000000000000000000000000000A4 -S3156004E2100000000000000000000000000000000094 -S3156004E2200000000000000000000000000000000084 -S3156004E2300000000000000000000000000000000074 -S3156004E2400000000000000000000000000000000064 -S3156004E2500000000000000000000000000000000054 -S3156004E2600000000000000000000000000000000044 -S3156004E2700000000000000000000000000000000034 -S3156004E2800000000000000000000000000000000024 -S3156004E2900000000000000000000000000000000014 -S3156004E2A00000000000000000000000000000000004 -S3156004E2B000000000000000000000000000000000F4 -S3156004E2C000000000000000000000000000000000E4 -S3156004E2D000000000000000000000000000000000D4 -S3156004E2E000000000000000000000000000000000C4 -S3156004E2F000000000000000000000000000000000B4 -S3156004E30000000000000000000000000000000000A3 -S3156004E3100000000000000000000000000000000093 -S3156004E3200000000000000000000000000000000083 -S3156004E3300000000000000000000000000000000073 -S3156004E3400000000000000000000000000000000063 -S3156004E3500000000000000000000000000000000053 -S3156004E3600000000000000000000000000000000043 -S3156004E3700000000000000000000000000000000033 -S3156004E3800000000000000000000000000000000023 -S3156004E3900000000000000000000000000000000013 -S3156004E3A00000000000000000000000000000000003 -S3156004E3B000000000000000000000000000000000F3 -S3156004E3C000000000000000000000000000000000E3 -S3156004E3D000000000000000000000000000000000D3 -S3156004E3E000000000000000000000000000000000C3 -S3156004E3F000000000000000000000000000000000B3 -S3156004E40000000000000000000000000000000000A2 -S3156004E4100000000000000000000000000000000092 -S3156004E4200000000000000000000000000000000082 -S3156004E4300000000000000000000000000000000072 -S3156004E4400000000000000000000000000000000062 -S3156004E4500000000000000000000000000000000052 -S3156004E4600000000000000000000000000000000042 -S3156004E4700000000000000000000000000000000032 -S3156004E4800000000000000000000000000000000022 -S3156004E4900000000000000000000000000000000012 -S3156004E4A00000000000000000000000000000000002 -S3156004E4B000000000000000000000000000000000F2 -S3156004E4C000000000000000000000000000000000E2 -S3156004E4D000000000000000000000000000000000D2 -S3156004E4E000000000000000000000000000000000C2 -S3156004E4F000000000000000000000000000000000B2 -S3156004E50000000000000000000000000000000000A1 -S3156004E5100000000000000000000000000000000091 -S3156004E5200000000000000000000000000000000081 -S3156004E5300000000000000000000000000000000071 -S3156004E5400000000000000000000000000000000061 -S3156004E5500000000000000000000000000000000051 -S3156004E5600000000000000000000000000000000041 -S3156004E5700000000000000000000000000000000031 -S3156004E5800000000000000000000000000000000021 -S3156004E5900000000000000000000000000000000011 -S3156004E5A00000000000000000000000000000000001 -S3156004E5B000000000000000000000000000000000F1 -S3156004E5C000000000000000000000000000000000E1 -S3156004E5D000000000000000000000000000000000D1 -S3156004E5E000000000000000000000000000000000C1 -S3156004E5F000000000000000000000000000000000B1 -S3156004E60000000000000000000000000000000000A0 -S3156004E6100000000000000000000000000000000090 -S3156004E6200000000000000000000000000000000080 -S3156004E6300000000000000000000000000000000070 -S3156004E6400000000000000000000000000000000060 -S3156004E6500000000000000000000000000000000050 -S3156004E6600000000000000000000000000000000040 -S3156004E6700000000000000000000000000000000030 -S3156004E6800000000000000000000000000000000020 -S3156004E6900000000000000000000000000000000010 -S3156004E6A00000000000000000000000000000000000 -S3156004E6B000000000000000000000000000000000F0 -S3156004E6C000000000000000000000000000000000E0 -S3156004E6D000000000000000000000000000000000D0 -S3156004E6E000000000000000000000000000000000C0 -S3156004E6F000000000000000000000000000000000B0 -S3156004E700000000000000000000000000000000009F -S3156004E710000000000000000000000000000000008F -S3156004E720000000000000000000000000000000007F -S3156004E730000000000000000000000000000000006F -S3156004E740000000000000000000000000000000005F -S3156004E750000000000000000000000000000000004F -S3156004E760000000000000000000000000000000003F -S3156004E770000000000000000000000000000000002F -S3156004E780000000000000000000000000000000001F -S3156004E790000000000000000000000000000000000F -S3156004E7A000000000000000000000000000000000FF -S3156004E7B000000000000000000000000000000000EF -S3156004E7C000000000000000000000000000000000DF -S3156004E7D000000000000000000000000000000000CF -S3156004E7E000000000000000000000000000000000BF -S3156004E7F000000000000000000000000000000000AF -S3156004E800000000000000000000000000000000009E -S3156004E810000000000000000000000000000000008E -S3156004E820000000000000000000000000000000007E -S3156004E830000000000000000000000000000000006E -S3156004E840000000000000000000000000000000005E -S3156004E850000000000000000000000000000000004E -S3156004E860000000000000000000000000000000003E -S3156004E870000000000000000000000000000000002E -S3156004E880000000000000000000000000000000001E -S3156004E890000000000000000000000000000000000E -S3156004E8A000000000000000000000000000000000FE -S3156004E8B000000000000000000000000000000000EE -S3156004E8C000000000000000000000000000000000DE -S3156004E8D000000000000000000000000000000000CE -S3156004E8E000000000000000000000000000000000BE -S3156004E8F000000000000000000000000000000000AE -S3156004E900000000000000000000000000000000009D -S3156004E910000000000000000000000000000000008D -S3156004E920000000000000000000000000000000007D -S3156004E930000000000000000000000000000000006D -S3156004E940000000000000000000000000000000005D -S3156004E950000000000000000000000000000000004D -S3156004E960000000000000000000000000000000003D -S3156004E970000000000000000000000000000000002D -S3156004E980000000000000000000000000000000001D -S3156004E990000000000000000000000000000000000D -S3156004E9A000000000000000000000000000000000FD -S3156004E9B000000000000000000000000000000000ED -S3156004E9C000000000000000000000000000000000DD -S3156004E9D000000000000000000000000000000000CD -S3156004E9E000000000000000000000000000000000BD -S3156004E9F000000000000000000000000000000000AD -S3156004EA00000000000000000000000000000000009C -S3156004EA10000000000000000000000000000000008C -S3156004EA20000000000000000000000000000000007C -S3156004EA30000000000000000000000000000000006C -S3156004EA40000000000000000000000000000000005C -S3156004EA50000000000000000000000000000000004C -S3156004EA60000000000000000000000000000000003C -S3156004EA70000000000000000000000000000000002C -S3156004EA80000000000000000000000000000000001C -S3156004EA90000000000000000000000000000000000C -S3156004EAA000000000000000000000000000000000FC -S3156004EAB000000000000000000000000000000000EC -S3156004EAC000000000000000000000000000000000DC -S3156004EAD000000000000000000000000000000000CC -S3156004EAE000000000000000000000000000000000BC -S3156004EAF000000000000000000000000000000000AC -S3156004EB00000000000000000000000000000000009B -S3156004EB10000000000000000000000000000000008B -S3156004EB20000000000000000000000000000000007B -S3156004EB30000000000000000000000000000000006B -S3156004EB40000000000000000000000000000000005B -S3156004EB50000000000000000000000000000000004B -S3156004EB60000000000000000000000000000000003B -S3156004EB70000000000000000000000000000000002B -S3156004EB80000000000000000000000000000000001B -S3156004EB90000000000000000000000000000000000B -S3156004EBA000000000000000000000000000000000FB -S3156004EBB000000000000000000000000000000000EB -S3156004EBC000000000000000000000000000000000DB -S3156004EBD000000000000000000000000000000000CB -S3156004EBE000000000000000000000000000000000BB -S3156004EBF000000000000000000000000000000000AB -S3156004EC00000000000000000000000000000000009A -S3156004EC10000000000000000000000000000000008A -S3156004EC20000000000000000000000000000000007A -S3156004EC30000000000000000000000000000000006A -S3156004EC40000000000000000000000000000000005A -S3156004EC50000000000000000000000000000000004A -S3156004EC60000000000000000000000000000000003A -S3156004EC70000000000000000000000000000000002A -S3156004EC80000000000000000000000000000000001A -S3156004EC90000000000000000000000000000000000A -S3156004ECA000000000000000000000000000000000FA -S3156004ECB000000000000000000000000000000000EA -S3156004ECC000000000000000000000000000000000DA -S3156004ECD000000000000000000000000000000000CA -S3156004ECE000000000000000000000000000000000BA -S3156004ECF000000000000000000000000000000000AA -S3156004ED000000000000000000000000000000000099 -S3156004ED100000000000000000000000000000000089 -S3156004ED200000000000000000000000000000000079 -S3156004ED300000000000000000000000000000000069 -S3156004ED400000000000000000000000000000000059 -S3156004ED500000000000000000000000000000000049 -S3156004ED600000000000000000000000000000000039 -S3156004ED700000000000000000000000000000000029 -S3156004ED800000000000000000000000000000000019 -S3156004ED900000000000000000000000000000000009 -S3156004EDA000000000000000000000000000000000F9 -S3156004EDB000000000000000000000000000000000E9 -S3156004EDC000000000000000000000000000000000D9 -S3156004EDD000000000000000000000000000000000C9 -S3156004EDE000000000000000000000000000000000B9 -S3156004EDF000000000000000000000000000000000A9 -S3156004EE000000000000000000000000000000000098 -S3156004EE100000000000000000000000000000000088 -S3156004EE200000000000000000000000000000000078 -S3156004EE300000000000000000000000000000000068 -S3156004EE400000000000000000000000000000000058 -S3156004EE500000000000000000000000000000000048 -S3156004EE600000000000000000000000000000000038 -S3156004EE700000000000000000000000000000000028 -S3156004EE800000000000000000000000000000000018 -S3156004EE900000000000000000000000000000000008 -S3156004EEA000000000000000000000000000000000F8 -S3156004EEB000000000000000000000000000000000E8 -S3156004EEC000000000000000000000000000000000D8 -S3156004EED000000000000000000000000000000000C8 -S3156004EEE000000000000000000000000000000000B8 -S3156004EEF000000000000000000000000000000000A8 -S3156004EF000000000000000000000000000000000097 -S3156004EF100000000000000000000000000000000087 -S3156004EF200000000000000000000000000000000077 -S3156004EF300000000000000000000000000000000067 -S3156004EF400000000000000000000000000000000057 -S3156004EF500000000000000000000000000000000047 -S3156004EF600000000000000000000000000000000037 -S3156004EF700000000000000000000000000000000027 -S3156004EF800000000000000000000000000000000017 -S3156004EF900000000000000000000000000000000007 -S3156004EFA000000000000000000000000000000000F7 -S3156004EFB000000000000000000000000000000000E7 -S3156004EFC000000000000000000000000000000000D7 -S3156004EFD000000000000000000000000000000000C7 -S3156004EFE000000000000000000000000000000000B7 -S3156004EFF000000000000000000000000000000000A7 -S3156004F0000000000000000000000000000000000096 -S3156004F0100000000000000000000000000000000086 -S3156004F0200000000000000000000000000000000076 -S3156004F0300000000000000000000000000000000066 -S3156004F0400000000000000000000000000000000056 -S3156004F0500000000000000000000000000000000046 -S3156004F0600000000000000000000000000000000036 -S3156004F0700000000000000000000000000000000026 -S3156004F0800000000000000000000000000000000016 -S3156004F0900000000000000000000000000000000006 -S3156004F0A000000000000000000000000000000000F6 -S3156004F0B000000000000000000000000000000000E6 -S3156004F0C000000000000000000000000000000000D6 -S3156004F0D000000000000000000000000000000000C6 -S3156004F0E000000000000000000000000000000000B6 -S3156004F0F000000000000000000000000000000000A6 -S3156004F1000000000000000000000000000000000095 -S3156004F1100000000000000000000000000000000085 -S3156004F1200000000000000000000000000000000075 -S3156004F1300000000000000000000000000000000065 -S3156004F1400000000000000000000000000000000055 -S3156004F1500000000000000000000000000000000045 -S3156004F1600000000000000000000000000000000035 -S3156004F1700000000000000000000000000000000025 -S3156004F1800000000000000000000000000000000015 -S3156004F1900000000000000000000000000000000005 -S3156004F1A000000000000000000000000000000000F5 -S3156004F1B000000000000000000000000000000000E5 -S3156004F1C000000000000000000000000000000000D5 -S3156004F1D000000000000000000000000000000000C5 -S3156004F1E000000000000000000000000000000000B5 -S3156004F1F000000000000000000000000000000000A5 -S3156004F2000000000000000000000000000000000094 -S3156004F2100000000000000000000000000000000084 -S3156004F2200000000000000000000000000000000074 -S3156004F2300000000000000000000000000000000064 -S3156004F2400000000000000000000000000000000054 -S3156004F2500000000000000000000000000000000044 -S3156004F2600000000000000000000000000000000034 -S3156004F2700000000000000000000000000000000024 -S3156004F2800000000000000000000000000000000014 -S3156004F2900000000000000000000000000000000004 -S3156004F2A000000000000000000000000000000000F4 -S3156004F2B000000000000000000000000000000000E4 -S3156004F2C000000000000000000000000000000000D4 -S3156004F2D000000000000000000000000000000000C4 -S3156004F2E000000000000000000000000000000000B4 -S3156004F2F000000000000000000000000000000000A4 -S3156004F3000000000000000000000000000000000093 -S3156004F3100000000000000000000000000000000083 -S3156004F3200000000000000000000000000000000073 -S3156004F3300000000000000000000000000000000063 -S3156004F3400000000000000000000000000000000053 -S3156004F3500000000000000000000000000000000043 -S3156004F3600000000000000000000000000000000033 -S3156004F3700000000000000000000000000000000023 -S3156004F3800000000000000000000000000000000013 -S3156004F3900000000000000000000000000000000003 -S3156004F3A000000000000000000000000000000000F3 -S3156004F3B000000000000000000000000000000000E3 -S3156004F3C000000000000000000000000000000000D3 -S3156004F3D000000000000000000000000000000000C3 -S3156004F3E000000000000000000000000000000000B3 -S3156004F3F000000000000000000000000000000000A3 -S3156004F4000000000000000000000000000000000092 -S3156004F4100000000000000000000000000000000082 -S3156004F4200000000000000000000000000000000072 -S3156004F4300000000000000000000000000000000062 -S3156004F4400000000000000000000000000000000052 -S3156004F4500000000000000000000000000000000042 -S3156004F4600000000000000000000000000000000032 -S3156004F4700000000000000000000000000000000022 -S3156004F4800000000000000000000000000000000012 -S3156004F4900000000000000000000000000000000002 -S3156004F4A000000000000000000000000000000000F2 -S3156004F4B000000000000000000000000000000000E2 -S3156004F4C000000000000000000000000000000000D2 -S3156004F4D000000000000000000000000000000000C2 -S3156004F4E000000000000000000000000000000000B2 -S3156004F4F000000000000000000000000000000000A2 -S3156004F5000000000000000000000000000000000091 -S3156004F5100000000000000000000000000000000081 -S3156004F5200000000000000000000000000000000071 -S3156004F5300000000000000000000000000000000061 -S3156004F5400000000000000000000000000000000051 -S3156004F5500000000000000000000000000000000041 -S3156004F5600000000000000000000000000000000031 -S3156004F5700000000000000000000000000000000021 -S3156004F5800000000000000000000000000000000011 -S3156004F5900000000000000000000000000000000001 -S3156004F5A000000000000000000000000000000000F1 -S3156004F5B000000000000000000000000000000000E1 -S3156004F5C000000000000000000000000000000000D1 -S3156004F5D000000000000000000000000000000000C1 -S3156004F5E000000000000000000000000000000000B1 -S3156004F5F000000000000000000000000000000000A1 -S3156004F6000000000000000000000000000000000090 -S3156004F6100000000000000000000000000000000080 -S3156004F6200000000000000000000000000000000070 -S3156004F6300000000000000000000000000000000060 -S3156004F6400000000000000000000000000000000050 -S3156004F6500000000000000000000000000000000040 -S3156004F6600000000000000000000000000000000030 -S3156004F6700000000000000000000000000000000020 -S3156004F6800000000000000000000000000000000010 -S3156004F6900000000000000000000000000000000000 -S3156004F6A000000000000000000000000000000000F0 -S3156004F6B000000000000000000000000000000000E0 -S3156004F6C000000000000000000000000000000000D0 -S3156004F6D000000000000000000000000000000000C0 -S3156004F6E000000000000000000000000000000000B0 -S3156004F6F000000000000000000000000000000000A0 -S3156004F700000000000000000000000000000000008F -S3156004F710000000000000000000000000000000007F -S3156004F720000000000000000000000000000000006F -S3156004F730000000000000000000000000000000005F -S3156004F740000000000000000000000000000000004F -S3156004F750000000000000000000000000000000003F -S3156004F760000000000000000000000000000000002F -S3156004F770000000000000000000000000000000001F -S3156004F780000000000000000000000000000000000F -S3156004F79000000000000000000000000000000000FF -S3156004F7A000000000000000000000000000000000EF -S3156004F7B000000000000000000000000000000000DF -S3156004F7C000000000000000000000000000000000CF -S3156004F7D000000000000000000000000000000000BF -S3156004F7E000000000000000000000000000000000AF -S3156004F7F0000000000000000000000000000000009F -S3156004F800000000000000000000000000000000008E -S3156004F810000000000000000000000000000000007E -S3156004F820000000000000000000000000000000006E -S3156004F830000000000000000000000000000000005E -S3156004F840000000000000000000000000000000004E -S3156004F850000000000000000000000000000000003E -S3156004F860000000000000000000000000000000002E -S3156004F870000000000000000000000000000000001E -S3156004F880000000000000000000000000000000000E -S3156004F89000000000000000000000000000000000FE -S3156004F8A000000000000000000000000000000000EE -S3156004F8B000000000000000000000000000000000DE -S3156004F8C000000000000000000000000000000000CE -S3156004F8D000000000000000000000000000000000BE -S3156004F8E000000000000000000000000000000000AE -S3156004F8F0000000000000000000000000000000009E -S3156004F900000000000000000000000000000000008D -S3156004F910000000000000000000000000000000007D -S3156004F920000000000000000000000000000000006D -S3156004F930000000000000000000000000000000005D -S3156004F940000000000000000000000000000000004D -S3156004F950000000000000000000000000000000003D -S3156004F960000000000000000000000000000000002D -S3156004F970000000000000000000000000000000001D -S3156004F980000000000000000000000000000000000D -S3156004F99000000000000000000000000000000000FD -S3156004F9A000000000000000000000000000000000ED -S3156004F9B000000000000000000000000000000000DD -S3156004F9C000000000000000000000000000000000CD -S3156004F9D000000000000000000000000000000000BD -S3156004F9E000000000000000000000000000000000AD -S3156004F9F0000000000000000000000000000000009D -S3156004FA00000000000000000000000000000000008C -S3156004FA10000000000000000000000000000000007C -S3156004FA20000000000000000000000000000000006C -S3156004FA30000000000000000000000000000000005C -S3156004FA40000000000000000000000000000000004C -S3156004FA50000000000000000000000000000000003C -S3156004FA60000000000000000000000000000000002C -S3156004FA70000000000000000000000000000000001C -S3156004FA80000000000000000000000000000000000C -S3156004FA9000000000000000000000000000000000FC -S3156004FAA000000000000000000000000000000000EC -S3156004FAB000000000000000000000000000000000DC -S3156004FAC000000000000000000000000000000000CC -S3156004FAD000000000000000000000000000000000BC -S3156004FAE000000000000000000000000000000000AC -S3156004FAF0000000000000000000000000000000009C -S3156004FB00000000000000000000000000000000008B -S3156004FB10000000000000000000000000000000007B -S3156004FB20000000000000000000000000000000006B -S3156004FB30000000000000000000000000000000005B -S3156004FB40000000000000000000000000000000004B -S3156004FB50000000000000000000000000000000003B -S3156004FB60000000000000000000000000000000002B -S3156004FB70000000000000000000000000000000001B -S3156004FB80000000000000000000000000000000000B -S3156004FB9000000000000000000000000000000000FB -S3156004FBA000000000000000000000000000000000EB -S3156004FBB000000000000000000000000000000000DB -S3156004FBC000000000000000000000000000000000CB -S3156004FBD000000000000000000000000000000000BB -S3156004FBE000000000000000000000000000000000AB -S3156004FBF0000000000000000000000000000000009B -S3156004FC00000000000000000000000000000000008A -S3156004FC10000000000000000000000000000000007A -S3156004FC20000000000000000000000000000000006A -S3156004FC30000000000000000000000000000000005A -S3156004FC40000000000000000000000000000000004A -S3156004FC50000000000000000000000000000000003A -S3156004FC60000000000000000000000000000000002A -S3156004FC70000000000000000000000000000000001A -S3156004FC80000000000000000000000000000000000A -S3156004FC9000000000000000000000000000000000FA -S3156004FCA000000000000000000000000000000000EA -S3156004FCB000000000000000000000000000000000DA -S3156004FCC000000000000000000000000000000000CA -S3156004FCD000000000000000000000000000000000BA -S3156004FCE000000000000000000000000000000000AA -S3156004FCF0000000000000000000000000000000009A -S3156004FD000000000000000000000000000000000089 -S3156004FD100000000000000000000000000000000079 -S3156004FD200000000000000000000000000000000069 -S3156004FD300000000000000000000000000000000059 -S3156004FD400000000000000000000000000000000049 -S3156004FD500000000000000000000000000000000039 -S3156004FD600000000000000000000000000000000029 -S3156004FD700000000000000000000000000000000019 -S3156004FD800000000000000000000000000000000009 -S3156004FD9000000000000000000000000000000000F9 -S3156004FDA000000000000000000000000000000000E9 -S3156004FDB000000000000000000000000000000000D9 -S3156004FDC000000000000000000000000000000000C9 -S3156004FDD000000000000000000000000000000000B9 -S3156004FDE000000000000000000000000000000000A9 -S3156004FDF00000000000000000000000000000000099 -S3156004FE000000000000000000000000000000000088 -S3156004FE100000000000000000000000000000000078 -S3156004FE200000000000000000000000000000000068 -S3156004FE300000000000000000000000000000000058 -S3156004FE400000000000000000000000000000000048 -S3156004FE500000000000000000000000000000000038 -S3156004FE600000000000000000000000000000000028 -S3156004FE700000000000000000000000000000000018 -S3156004FE800000000000000000000000000000000008 -S3156004FE9000000000000000000000000000000000F8 -S3156004FEA000000000000000000000000000000000E8 -S3156004FEB000000000000000000000000000000000D8 -S3156004FEC000000000000000000000000000000000C8 -S3156004FED000000000000000000000000000000000B8 -S3156004FEE000000000000000000000000000000000A8 -S3156004FEF00000000000000000000000000000000098 -S3156004FF000000000000000000000000000000000087 -S3156004FF100000000000000000000000000000000077 -S3156004FF200000000000000000000000000000000067 -S3156004FF300000000000000000000000000000000057 -S3156004FF400000000000000000000000000000000047 -S3156004FF500000000000000000000000000000000037 -S3156004FF600000000000000000000000000000000027 -S3156004FF700000000000000000000000000000000017 -S3156004FF800000000000000000000000000000000007 -S3156004FF9000000000000000000000000000000000F7 -S3156004FFA000000000000000000000000000000000E7 -S3156004FFB000000000000000000000000000000000D7 -S3156004FFC000000000000000000000000000000000C7 -S3156004FFD000000000000000000000000000000000B7 -S3156004FFE000000000000000000000000000000000A7 -S3156004FFF00000000000000000000000000000000097 -S315600500000000000200000003000000000000000080 -S315600500100000000100000000FFFFFFFE0000000376 -S3156005002055555554FFFFFFFE0000000355555554C1 -S31560050030700FFFFE00000007100249240000000053 -S315600500400000000000000000000000020000000340 -S315600500500000000000000003FFFFFFFEFFFFFFFF3B -S3156005006000000002FFFFFFFD000000000000000029 -S31560050070000000010000000000000000FFFFFFFF18 -S315600500800000000000000001FFFFFFFFFFFFFFFF0C -S31560050090FFFFFFFF00000001FFFFFFFFFFFFFFFE01 -S315600500A00000000300000000FFFFFFFEFFFFFFFDED -S315600500B000000000000000090000000700000001C4 -S315600500C0FFFFFFF700000002FFFFFFFCFFFFFFF8E1 -S315600500D000000002FFFFFFFCFFFFFFF8FFFFFFFCCC -S315600500E00000000200000008FFFFFFFCFFFFFFFEA7 -S315600500F0FFFFFFF8FFFFFFF800000001FFFFFFF8B5 -S31560050100FFFFFFF7000000000000000B0000000283 -S31560050110000000050000002F000000020000001727 -S3156005012000003039000002A700000012FFFF076CCF -S315600501300000004DFFFFFCC600003039FFFFFD598A -S31560050140FFFFFFEEFFFF076CFFFFFFB30000033AFB -S3156005015000000091FFFFE84100000000FFFFFD84FD -S31560050160FFFED02F000000000000F6FA006E498100 -S315600501700000000000000000000000000000000014 -S31560050180FFFFF0000000000200000003000000060B -S3156005019000000002FFFFFFFDFFFFFFFA0000000001 -S315600501A0000000010000000000000000FFFFFFFFE7 -S315600501B00000000000000001FFFFFFFFFFFFFFFFDB -S315600501C0FFFFFFFF00000001FFFFFFFFFFFFFFFED0 -S315600501D000000003FFFFFFFAFFFFFFFEFFFFFFFDC5 -S315600501E00000000600000000000000000000000995 -S315600501F00000000000000000000000000000000094 -S31560050200000000000000000100000002000000037D -S315600502100000000000000000000000000000000073 -S31560050220000000006005050C600505D8600506A49C -S315600502300000000000000000000000000000000053 -S315600502400000000000000000000000000000000043 -S31560050250000000006001B58000000000000000009D -S315600502600000000000000000000000000000000023 -S315600502700000000000000000000000000000000013 -S315600502800000000000000000000000000000000003 -S3156005029000000000000000000000000000000000F3 -S315600502A000000000000000000000000000000000E3 -S315600502B000000000000000000000000000000000D3 -S315600502C000000000000000000000000000000001C2 -S315600502D0330EABCD1234E66DDEEC0005000B000087 -S315600502E000000000000000000000000000000000A3 -S315600502F00000000000000000000000000000000093 -S315600503000000000000000000000000000000000082 -S315600503100000000000000000000000000000000072 -S315600503200000000000000000000000000000000062 -S315600503300000000000000000000000000000000052 -S315600503400000000000000000000000000000000042 -S315600503500000000000000000000000000000000032 -S315600503600000000000000000000000000000000022 -S315600503700000000000000000000000000000000012 -S315600503800000000000000000000000000000000002 -S3156005039000000000000000000000000000000000F2 -S315600503A000000000000000000000000000000000E2 -S315600503B000000000000000000000000000000000D2 -S315600503C000000000000000000000000000000000C2 -S315600503D000000000000000000000000000000000B2 -S315600503E000000000000000000000000000000000A2 -S315600503F00000000000000000000000000000000092 -S315600504000000000000000000000000000000000081 -S315600504100000000000000000000000000000000071 -S315600504200000000000000000000000000000000061 -S315600504300000000000000000000000000000000051 -S315600504400000000000000000000000000000000041 -S315600504500000000000000000000000000000000031 -S315600504600000000000000000000000000000000021 -S315600504700000000000000000000000000000000011 -S315600504800000000000000000000000000000000001 -S3156005049000000000000000000000000000000000F1 -S315600504A000000000000000000000000000000000E1 -S315600504B000000000000000000000000000000000D1 -S315600504C000000000000000000000000000000000C1 -S315600504D000000000000000000000000000000000B1 -S315600504E000000000000000000000000000000000A1 -S315600504F00000000000000000000000000000000091 -S315600505000000000000000000000000000000000080 -S315600505100000000000000000000000000000000070 -S315600505200000000000000000000000000000000060 -S315600505300000000000000000000000000000000050 -S315600505400000000000000000000000000000000040 -S315600505500000000000000000000000000000000030 -S315600505600000000000000000000000000000000020 -S315600505700000000000000000000000000000000010 -S315600505800000000000000000000000000000000000 -S3156005059000000000000000000000000000000000F0 -S315600505A000000000000000000000000000000000E0 -S315600505B000000000000000000000000000000000D0 -S315600505C000000000000000000000000000000000C0 -S315600505D000000000000000000000000000000000B0 -S315600505E000000000000000000000000000000000A0 -S315600505F00000000000000000000000000000000090 -S31560050600000000000000000000000000000000007F -S31560050610000000000000000000000000000000006F -S31560050620000000000000000000000000000000005F -S31560050630000000000000000000000000000000004F -S31560050640000000000000000000000000000000003F -S31560050650000000000000000000000000000000002F -S31560050660000000000000000000000000000000001F -S31560050670000000000000000000000000000000000F -S3156005068000000000000000000000000000000000FF -S3156005069000000000000000000000000000000000EF -S315600506A000000000000000000000000000000000DF -S315600506B000000000000000000000000000000000CF -S315600506C000000000000000000000000000000000BF -S315600506D000000000000000000000000000000000AF -S315600506E0000000000000000000000000000000009F -S315600506F0000000000000000000000000000000008F -S31560050700000000000000000000000000000000007E -S31560050710000000000000000000000000000000006E -S31560050720000000000000000000000000000000005E -S31560050730000000000000000000000000000000004E -S31560050740000000000000000000000000000000003E -S31560050750000000000000000000000000000000002E -S31560050760000000000000000000000000000000001E -S315600507706005022000000000FFFFFFFF0002000089 -S315600507800000000000000000600507806005078026 -S31560050790600507886005078860050790600507900E -S315600507A06005079860050798600507A0600507A0BE -S315600507B0600507A8600507A8600507B0600507B06E -S315600507C0600507B8600507B8600507C0600507C01E -S315600507D0600507C8600507C8600507D0600507D0CE -S315600507E0600507D8600507D8600507E0600507E07E -S315600507F0600507E8600507E8600507F0600507F02E -S31560050800600507F8600507F86005080060050800DB -S315600508106005080860050808600508106005081089 -S315600508206005081860050818600508206005082039 -S3156005083060050828600508286005083060050830E9 -S315600508406005083860050838600508406005084099 -S315600508506005084860050848600508506005085049 -S3156005086060050858600508586005086060050860F9 -S3156005087060050868600508686005087060050870A9 -S315600508806005087860050878600508806005088059 -S315600508906005088860050888600508906005089009 -S315600508A06005089860050898600508A0600508A0B9 -S315600508B0600508A8600508A8600508B0600508B069 -S315600508C0600508B8600508B8600508C0600508C019 -S315600508D0600508C8600508C8600508D0600508D0C9 -S315600508E0600508D8600508D8600508E0600508E079 -S315600508F0600508E8600508E8600508F0600508F029 -S31560050900600508F8600508F86005090060050900D6 -S315600509106005090860050908600509106005091084 -S315600509206005091860050918600509206005092034 -S3156005093060050928600509286005093060050930E4 -S315600509406005093860050938600509406005094094 -S315600509506005094860050948600509506005095044 -S3156005096060050958600509586005096060050960F4 -S3156005097060050968600509686005097060050970A4 -S315600509806005097860050978600509806005098054 -S315600509906005098860050988600509906005099004 -S315600509A06005099860050998600509A0600509A0B4 -S315600509B0600509A8600509A8600509B0600509B064 -S315600509C0600509B8600509B8600509C0600509C014 -S315600509D0600509C8600509C8600509D0600509D0C4 -S315600509E0600509D8600509D8600509E0600509E074 -S315600509F0600509E8600509E8600509F0600509F024 -S31560050A00600509F8600509F860050A0060050A00D1 -S31560050A1060050A0860050A0860050A1060050A107F -S31560050A2060050A1860050A1860050A2060050A202F -S31560050A3060050A2860050A2860050A3060050A30DF -S31560050A4060050A3860050A3860050A4060050A408F -S31560050A5060050A4860050A4860050A5060050A503F -S31560050A6060050A5860050A5860050A6060050A60EF -S31560050A7060050A6860050A6860050A7060050A709F -S31560050A8060050A7860050A7860050A8060050A804F -S31560050A9060050A8860050A8860050A9060050A90FF -S31560050AA060050A9860050A9860050AA060050AA0AF -S31560050AB060050AA860050AA860050AB060050AB05F -S31560050AC060050AB860050AB860050AC060050AC00F -S31560050AD060050AC860050AC860050AD060050AD0BF -S31560050AE060050AD860050AD860050AE060050AE06F -S31560050AF060050AE860050AE860050AF060050AF01F -S31560050B0060050AF860050AF860050B0060050B00CC -S31560050B1060050B0860050B0860050B1060050B107A -S31560050B2060050B1860050B1860050B2060050B202A -S31560050B3060050B2860050B2860050B3060050B30DA -S31560050B4060050B3860050B3860050B4060050B408A -S31560050B5060050B4860050B4860050B5060050B503A -S31560050B6060050B5860050B5860050B6060050B60EA -S31560050B7060050B6860050B6860050B7060050B709A -S31560050B8060050B7860050B780000000060050B8832 -S31560050B9000000000000000000000000000000002E8 -S31560050BA000000000000000000000000000000000DA -S31560050BB000000000000000000000000000000000CA -S31560050BC000000000000000000000000000000000BA -S31560050BD000000000000000000000000000000000AA -S31560050BE0000000000000000000000000000000009A -S31560050BF0000000000000000000000000000000008A -S31560050C000000000000000000000000000000000079 -S31560050C100000000000000000000000000000000069 -S31560050C200000000000000000000000000000000059 -S31560050C3080000100000000080000000700000006B3 -S31560050C40000000030000000000000000FFFF8AD0DE -S30960050C5080000310A2 -S705600000009A diff --git a/designs/leon3-ge-hpe-mini-lattice/testbench.vhd b/designs/leon3-ge-hpe-mini-lattice/testbench.vhd deleted file mode 100644 index 4fc7d2a6..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/testbench.vhd +++ /dev/null @@ -1,501 +0,0 @@ ------------------------------------------------------------------------------ --- LEON3 Demonstration design test bench --- Copyright (C) 2004 Jiri Gaisler, Gaisler Research --- --- 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. ------------------------------------------------------------------------------- --- modified by Thomas Ameseder, Gleichmann Electronics 2004, 2005 to --- support the use of an external AHB slave and different HPE board versions ------------------------------------------------------------------------------- --- further adapted from Hpe_compact to Hpe_mini (Feb. 2005) ------------------------------------------------------------------------------- - - -library ieee; -use ieee.std_logic_1164.all; -library gaisler; -use gaisler.libdcom.all; -use gaisler.sim.all; -library techmap; -use techmap.gencomp.all; -library micron; -use micron.components.all; -library gleichmann; -use gleichmann.hpi.all; - -use work.config.all; -- configuration -use work.debug.all; -use std.textio.all; -library grlib; -use grlib.stdlib.all; -use grlib.stdio.all; -use grlib.devices.all; - - -entity testbench is - generic ( - fabtech : integer := CFG_FABTECH; - memtech : integer := CFG_MEMTECH; - padtech : integer := CFG_PADTECH; - clktech : integer := CFG_CLKTECH; - disas : integer := CFG_DISAS; -- Enable disassembly to console - dbguart : integer := CFG_DUART; -- Print UART on console - pclow : integer := CFG_PCLOW; - - clkperiod : integer := 40; -- system clock period - romwidth : integer := 32; -- rom data width (8/32) - romdepth : integer := 16; -- rom address depth - sramwidth : integer := 32; -- ram data width (8/16/32) - sramdepth : integer := 18; -- ram address depth - srambanks : integer := 2 -- number of ram banks - ); -end; - -architecture behav of testbench is - - constant promfile : string := "prom.srec"; -- rom contents - constant sramfile : string := "sram.srec"; -- ram contents - constant sdramfile : string := "sdram.srec"; -- sdram contents - - - signal clk : std_logic := '0'; - signal Rst : std_logic := '0'; -- Reset - constant ct : integer := clkperiod/2; - - signal address : std_logic_vector(27 downto 0); - signal data : std_logic_vector(31 downto 0); - - signal ramsn : std_logic_vector(4 downto 0); - signal ramoen : std_logic_vector(4 downto 0); - signal rwen : std_logic_vector(3 downto 0); - signal rwenx : std_logic_vector(3 downto 0); - signal romsn : std_logic_vector(1 downto 0); - signal iosn : std_ulogic; - signal oen : std_ulogic; - signal read : std_ulogic; - signal writen : std_ulogic; - signal rben : std_logic_vector(3 downto 0); - signal tmp : std_logic_vector(3 downto 0); - - -- ddr memory - signal ddr_clk : std_logic; - signal ddr_clkb : std_logic; - signal ddr_clk_fb : std_logic; - signal ddr_cke : std_logic; - signal ddr_csb : std_logic; - signal ddr_web : std_ulogic; -- ddr write enable - signal ddr_rasb : std_ulogic; -- ddr ras - signal ddr_casb : std_ulogic; -- ddr cas - signal ddr_dm : std_logic_vector (3 downto 0); -- ddr dm - signal ddr_dqs : std_logic_vector (3 downto 0); -- ddr dqs - signal ddr_ad : std_logic_vector (12 downto 0); -- ddr address - signal ddr_ba : std_logic_vector (1 downto 0); -- ddr bank address - signal ddr_dq : std_logic_vector (31 downto 0); -- ddr data - - signal ddr_clk_del : std_logic; -- delayed DDR memory clocks - signal ddr_clkb_del : std_logic; - - signal brdyn : std_ulogic; - signal bexcn : std_ulogic; - signal wdog : std_ulogic; - signal dsuen, dsutx, dsurx, dsubre, dsuact : std_ulogic; - signal dsurst : std_ulogic; - signal test : std_ulogic; - - signal error : std_logic; - - signal pio : std_logic_vector(15 downto 0); - signal GND : std_ulogic := '0'; - signal VCC : std_ulogic := '1'; - signal NC : std_ulogic := 'Z'; - signal clk2 : std_ulogic := '1'; - - signal sdcke : std_logic_vector (1 downto 0); -- clk en - signal sdcsn : std_logic_vector (1 downto 0); -- chip sel - signal sdwen : std_ulogic; -- write en - signal sdrasn : std_ulogic; -- row addr stb - signal sdcasn : std_ulogic; -- col addr stb - signal sddqm : std_logic_vector (3 downto 0); -- data i/o mask - signal sd_clk : std_logic_vector(1 downto 0); - - signal sdclk : std_ulogic; --- alias sdclk : std_logic is sd_clk(0); - signal plllock : std_ulogic; - --- pulled up high, therefore std_logic - signal txd1, rxd1 : std_logic; - - signal etx_clk, erx_clk, erx_dv, erx_er, erx_col, erx_crs, etx_en, etx_er : std_logic := '0'; - signal erxd, etxd : std_logic_vector(3 downto 0) := (others => '0'); - signal erxdt, etxdt : std_logic_vector(7 downto 0) := (others => '0'); - signal emdc, emdio : std_logic; - signal gtx_clk : std_ulogic := '0'; - - signal emddis : std_logic; - signal epwrdwn : std_logic; - signal ereset : std_logic; - signal esleep : std_logic; - signal epause : std_logic; - signal tp_out : std_logic_vector(7 downto 0); - signal led_cfg : std_logic_vector(2 downto 0); - - constant lresp : boolean := false; - - signal sa : std_logic_vector(14 downto 0); - signal sd : std_logic_vector(63 downto 0); - - --- Added for Hpe - - signal resoutn : std_logic; - signal disrams : std_logic; - signal sdclk0 : std_ulogic; - signal sdclk1 : std_ulogic; - signal sdba0 : std_logic; -- bank address zero - signal sdba1 : std_logic; -- bank address one - signal dsubren : std_ulogic; - signal dsuactn : std_ulogic; - signal bufdir : std_logic; - signal bufoen : std_logic; - signal s_sddqm : std_logic_vector (3 downto 0); - - signal HRESETn : std_ulogic; - signal HSEL : std_ulogic; - signal HREADY_ba : std_ulogic; -- hready input signal - signal HADDR : std_logic_vector(31 downto 0); - signal HWRITE : std_ulogic; - signal HTRANS : std_logic_vector(1 downto 0); - signal HSIZE : std_logic_vector(2 downto 0); - signal HBURST : std_logic_vector(2 downto 0); - signal HWDATA : std_logic_vector(31 downto 0); - signal HMASTER : std_logic_vector(3 downto 0); - signal HMASTLOCK : std_ulogic; - signal HREADY : std_ulogic; - signal HRESP : std_logic_vector(1 downto 0); - signal HRDATA : std_logic_vector(31 downto 0); - signal HSPLIT : std_logic_vector(15 downto 0); - - signal clk_ctrl : std_logic_vector(1 downto 0); -- cpld - signal CAN_RXD : std_logic; - signal CAN_TXD : std_logic; - signal CAN_STB : std_logic; - signal CAN_TXD_delayed : std_logic := '1'; - signal gpio : std_logic_vector(7 downto 0); - - signal dac : std_ulogic; -- ouput of sigma delta DAC - - subtype sd_address_range is natural range 14 downto 2; - subtype sd_ba_range is natural range 16 downto 15; - - signal vga_vsync : std_ulogic; - signal vga_hsync : std_ulogic; - signal vga_rd : std_logic_vector(1 downto 0); - signal vga_gr : std_logic_vector(1 downto 0); - signal vga_bl : std_logic_vector(1 downto 0); - - signal ata_data : std_logic_vector(15 downto 0); - signal ata_da : std_logic_vector(2 downto 0); - signal ata_cs0 : std_logic; - signal ata_cs1 : std_logic; - signal ata_dior : std_logic; - signal ata_diow : std_logic; - signal ata_iordy : std_logic; - signal ata_intrq : std_logic; - - - --------------------------------------------------------------------------------------- - -- HPI SIGNALS - --------------------------------------------------------------------------------------- - signal hpiaddr : std_logic_vector(1 downto 0); - signal hpidata, hpirdata : std_logic_vector(15 downto 0); - signal hpicsn : std_ulogic; - signal hpiwrn : std_ulogic; - signal hpirdn : std_ulogic; - signal hpiint : std_ulogic; - signal dbg_equal : std_ulogic; - signal drive_bus : std_ulogic; - --------------------------------------------------------------------------------------- -begin - - dsubren <= not dsubre; - disrams <= '0'; - --- clock and reset - - clk <= not clk after ct * 1 ns; - rst <= '1' after 10 ns; - dsuen <= '0'; dsubre <= '0'; rxd1 <= 'H'; - led_cfg <= "000"; --put the phy in base10h mode - - d3 : entity work.leon3mini - port map ( - resetn => rst, - resoutn => resoutn, - clk => clk, - errorn => error, - address => address, - data => data, - - ddr_clk0 => ddr_clk, - ddr_clk0b => ddr_clkb, - ddr_clk_fb => ddr_clk_fb, - ddr_cke0 => ddr_cke, - ddr_cs0b => ddr_csb, - ddr_web => ddr_web, - ddr_rasb => ddr_rasb, - ddr_casb => ddr_casb, - ddr_dm => ddr_dm, - ddr_dqs => ddr_dqs, - ddr_ad => ddr_ad, - ddr_ba => ddr_ba, - ddr_dq => ddr_dq, - ddr_clk1 => open, - ddr_clk1b => open, - ddr_cke1 => open, - ddr_cs1b => open, - sertx => dsutx, - serrx => dsurx, - --- dsuen => dsuen, - dsubre => dsubre, --- dsuactn => dsuactn, - - ramsn => ramsn(0), - oen => oen, - rben => rben, - writen => writen, - read => read, - iosn => iosn, - romsn => romsn(0), - - emdio => emdio, - etx_clk => etx_clk, - erx_clk => erx_clk, - erxd => erxd, - erx_dv => erx_dv, - erx_er => erx_er, - erx_col => erx_col, - erx_crs => erx_crs, - etxd => etxd, - etx_en => etx_en, - etx_er => etx_er, - emdc => emdc, - - ata_data => ata_data, - ata_da => ata_da, - ata_cs0 => ata_cs0, - ata_cs1 => ata_cs1, - ata_dior => ata_dior, - ata_diow => ata_diow, - ata_iordy => ata_iordy, - ata_intrq => ata_intrq, - - dac => dac, - vga_vsync => vga_vsync, - vga_hsync => vga_hsync, - vga_rd => vga_rd, - vga_gr => vga_gr, - vga_bl => vga_bl - ); - - hpidata <= hpirdata when hpirdn = '0' else (others => 'Z'); - - hpiint <= '0'; - - hpi_ram_1 : hpi_ram - generic map ( - abits => 10, - dbits => 16) - port map ( - clk => clk, - address => hpiaddr, - datain => hpidata, - dataout => hpirdata, - writen => hpiwrn, - readn => hpirdn, - csn => hpicsn - ); - --- optional sdram - - sd0 : if (CFG_MCTRL_SDEN = 1) generate - u0 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile) - port map( - Dq => data(31 downto 16), Addr => address(sd_address_range), - Ba => address(sd_ba_range), Clk => sdclk, Cke => sdcke(0), - Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(3 downto 2)); - u1 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile) - port map( - Dq => data(15 downto 0), Addr => address(sd_address_range), - Ba => address(sd_ba_range), Clk => sdclk, Cke => sdcke(0), - Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(1 downto 0)); - u2 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile) - port map( - Dq => data(31 downto 16), Addr => address(sd_address_range), - Ba => address(sd_ba_range), Clk => sdclk, Cke => sdcke(0), - Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(3 downto 2)); - u3 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile) - port map( - Dq => data(15 downto 0), Addr => address(sd_address_range), - Ba => address(sd_ba_range), Clk => sdclk, Cke => sdcke(0), - Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(1 downto 0)); - end generate; - - ddr_clk_del <= transport ddr_clk after 5 ns; - ddr_clkb_del <= transport ddr_clkb after 5 ns; - - u1 : mt46v16m16 - port map( - Dq => ddr_dq(15 downto 0), Dqs => ddr_dqs(1 downto 0), Addr => ddr_ad, - Ba => ddr_ba, Clk => ddr_clk_del, Clk_n => ddr_clkb_del, Cke => ddr_cke, - Cs_n => ddr_csb, Ras_n => ddr_rasb, Cas_n => ddr_casb, We_n => ddr_web, - Dm => ddr_dm(1 downto 0)); - - u2 : mt46v16m16 - port map( - Dq => ddr_dq(31 downto 16), Dqs => ddr_dqs(3 downto 2), Addr => ddr_ad, - Ba => ddr_ba, Clk => ddr_clk_del, Clk_n => ddr_clkb_del, Cke => ddr_cke, - Cs_n => ddr_csb, Ras_n => ddr_rasb, Cas_n => ddr_casb, We_n => ddr_web, - Dm => ddr_dm(3 downto 2)); - - tmp <= not rben; - extbprom : if CFG_BOOTOPT = 0 generate - prom0 : for i in 0 to (romwidth/8)-1 generate - sr0 : sram generic map (index => i, abits => romdepth, fname => promfile) - port map (address(romdepth+1 downto 2), data(31-i*8 downto 24-i*8), romsn(0), - tmp(i), oen); -- **** tame: changed rwen to rben - end generate; - end generate extbprom; - - - sram0 : for i in 0 to (sramwidth/8)-1 generate - sr0 : sram generic map (index => i, abits => sramdepth, fname => sramfile) - port map (address(sramdepth+1 downto 2), data(31-i*8 downto 24-i*8), ramsn(0), - writen, oen); -- **** tame: changed rwen to rben - -- rben(0), ramoen(0)); -- **** tame: changed rwen to rben - end generate; - - phy0 : if CFG_GRETH > 0 generate - emdio <= 'H'; - erxd <= erxdt(3 downto 0); - etxdt <= "0000" & etxd; - - p0 : phy - generic map(base1000_t_fd => 0, base1000_t_hd => 0) - port map(rst, emdio, etx_clk, erx_clk, erxdt, erx_dv, - erx_er, erx_col, erx_crs, etxdt, etx_en, etx_er, emdc, gtx_clk); - end generate; - error <= 'H'; -- ERROR pull-up - - iuerr : process - begin - wait for 5 us; - assert (to_X01(error) /= '0') - report "*** IU in error mode, simulation halted ***" - severity failure; - end process; - - data <= buskeep(data), (others => 'H') after 250 ns; - sd <= buskeep(sd), (others => 'H') after 250 ns; - - test0 : grtestmod - port map (rst, clk, error, address(21 downto 2), data, - iosn, oen, writen, brdyn); - - dcomstart : if CFG_BOOTOPT = 0 generate - - dsucom : process - procedure dsucfg(signal dsurx : in std_ulogic; signal dsutx : out std_ulogic) is - variable w32 : std_logic_vector(31 downto 0); - variable c8 : std_logic_vector(7 downto 0); - constant txp : time := 160 * 1 ns; - begin - dsutx <= '1'; - dsurst <= '1'; --- wait; - wait for 5000 ns; - txc(dsutx, 16#55#, txp); -- sync uart - --- txc(dsutx, 16#c0#, txp); --- txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); --- txa(dsutx, 16#00#, 16#00#, 16#00#, 16#ef#, txp); --- --- txc(dsutx, 16#c0#, txp); --- txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); --- txa(dsutx, 16#00#, 16#00#, 16#ff#, 16#ff#, txp); --- --- txc(dsutx, 16#c0#, txp); --- txa(dsutx, 16#90#, 16#40#, 16#00#, 16#48#, txp); --- txa(dsutx, 16#00#, 16#00#, 16#00#, 16#12#, txp); --- --- txc(dsutx, 16#c0#, txp); --- txa(dsutx, 16#90#, 16#40#, 16#00#, 16#60#, txp); --- txa(dsutx, 16#00#, 16#00#, 16#12#, 16#10#, txp); --- --- txc(dsutx, 16#80#, txp); --- txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); --- rxi(dsurx, w32, txp, lresp); ---********** --- print("Start write"); - txc(dsutx, 16#c2#, txp); - txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); - txa(dsutx, 16#aa#, 16#aa#, 16#aa#, 16#a0#, txp); - txa(dsutx, 16#aa#, 16#aa#, 16#aa#, 16#a4#, txp); - txa(dsutx, 16#aa#, 16#aa#, 16#aa#, 16#a8#, txp); --- txa(dsutx, 16#aa#, 16#aa#, 16#aa#, 16#ac#, txp); --- txa(dsutx, 16#aa#, 16#aa#, 16#aa#, 16#10#, txp); --- txa(dsutx, 16#aa#, 16#aa#, 16#aa#, 16#14#, txp); --- txa(dsutx, 16#aa#, 16#aa#, 16#aa#, 16#18#, txp); --- txa(dsutx, 16#aa#, 16#aa#, 16#aa#, 16#1c#, txp); - --- print("Start read"); - txc(dsutx, 16#80#, txp); - txa(dsutx, 16#40#, 16#00#, 16#00#, 16#04#, txp); - rxi(dsurx, w32, txp, lresp); - --- print("Res: " & tost(w32)); ---********** - - txc(dsutx, 16#a0#, txp); - txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); - rxi(dsurx, w32, txp, lresp); - - end; - - begin - - dsucfg(dsutx, dsurx); - - wait; - end process; - - end generate dcomstart; - - - altstimuli : if CFG_BOOTOPT = 1 generate - stimuli : process - begin - dsurx <= '1'; - -- rxd1 <= 'H'; --already defined above - txd1 <= 'H'; - - - wait; - end process STIMULI; - end generate altstimuli; - -end; - - diff --git a/designs/leon3-ge-hpe-mini-lattice/tkconfig.h b/designs/leon3-ge-hpe-mini-lattice/tkconfig.h deleted file mode 100644 index 7c024404..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/tkconfig.h +++ /dev/null @@ -1,1063 +0,0 @@ -#if defined CONFIG_SYN_INFERRED -#define CONFIG_SYN_TECH inferred -#elif defined CONFIG_SYN_UMC -#define CONFIG_SYN_TECH umc -#elif defined CONFIG_SYN_RHUMC -#define CONFIG_SYN_TECH rhumc -#elif defined CONFIG_SYN_ATC18 -#define CONFIG_SYN_TECH atc18s -#elif defined CONFIG_SYN_ATC18RHA -#define CONFIG_SYN_TECH atc18rha -#elif defined CONFIG_SYN_AXCEL -#define CONFIG_SYN_TECH axcel -#elif defined CONFIG_SYN_AXDSP -#define CONFIG_SYN_TECH axdsp -#elif defined CONFIG_SYN_PROASICPLUS -#define CONFIG_SYN_TECH proasic -#elif defined CONFIG_SYN_ALTERA -#define CONFIG_SYN_TECH altera -#elif defined CONFIG_SYN_STRATIX -#define CONFIG_SYN_TECH stratix1 -#elif defined CONFIG_SYN_STRATIXII -#define CONFIG_SYN_TECH stratix2 -#elif defined CONFIG_SYN_STRATIXIII -#define CONFIG_SYN_TECH stratix3 -#elif defined CONFIG_SYN_CYCLONEIII -#define CONFIG_SYN_TECH cyclone3 -#elif defined CONFIG_SYN_EASIC45 -#define CONFIG_SYN_TECH easic45 -#elif defined CONFIG_SYN_EASIC90 -#define CONFIG_SYN_TECH easic90 -#elif defined CONFIG_SYN_IHP25 -#define CONFIG_SYN_TECH ihp25 -#elif defined CONFIG_SYN_IHP25RH -#define CONFIG_SYN_TECH ihp25rh -#elif defined CONFIG_SYN_CMOS9SF -#define CONFIG_SYN_TECH cmos9sf -#elif defined CONFIG_SYN_LATTICE -#define CONFIG_SYN_TECH lattice -#elif defined CONFIG_SYN_ECLIPSE -#define CONFIG_SYN_TECH eclipse -#elif defined CONFIG_SYN_PEREGRINE -#define CONFIG_SYN_TECH peregrine -#elif defined CONFIG_SYN_PROASIC -#define CONFIG_SYN_TECH proasic -#elif defined CONFIG_SYN_PROASIC3 -#define CONFIG_SYN_TECH apa3 -#elif defined CONFIG_SYN_PROASIC3E -#define CONFIG_SYN_TECH apa3e -#elif defined CONFIG_SYN_PROASIC3L -#define CONFIG_SYN_TECH apa3l -#elif defined CONFIG_SYN_IGLOO -#define CONFIG_SYN_TECH apa3 -#elif defined CONFIG_SYN_FUSION -#define CONFIG_SYN_TECH actfus -#elif defined CONFIG_SYN_SPARTAN2 -#define CONFIG_SYN_TECH virtex -#elif defined CONFIG_SYN_VIRTEX -#define CONFIG_SYN_TECH virtex -#elif defined CONFIG_SYN_VIRTEXE -#define CONFIG_SYN_TECH virtex -#elif defined CONFIG_SYN_SPARTAN3 -#define CONFIG_SYN_TECH spartan3 -#elif defined CONFIG_SYN_SPARTAN3E -#define CONFIG_SYN_TECH spartan3e -#elif defined CONFIG_SYN_SPARTAN6 -#define CONFIG_SYN_TECH spartan6 -#elif defined CONFIG_SYN_VIRTEX2 -#define CONFIG_SYN_TECH virtex2 -#elif defined CONFIG_SYN_VIRTEX4 -#define CONFIG_SYN_TECH virtex4 -#elif defined CONFIG_SYN_VIRTEX5 -#define CONFIG_SYN_TECH virtex5 -#elif defined CONFIG_SYN_VIRTEX6 -#define CONFIG_SYN_TECH virtex6 -#elif defined CONFIG_SYN_RH_LIB18T -#define CONFIG_SYN_TECH rhlib18t -#elif defined CONFIG_SYN_SMIC13 -#define CONFIG_SYN_TECH smic013 -#elif defined CONFIG_SYN_UT025CRH -#define CONFIG_SYN_TECH ut25 -#elif defined CONFIG_SYN_UT130HBD -#define CONFIG_SYN_TECH ut130 -#elif defined CONFIG_SYN_UT90NHBD -#define CONFIG_SYN_TECH ut90 -#elif defined CONFIG_SYN_TSMC90 -#define CONFIG_SYN_TECH tsmc90 -#elif defined CONFIG_SYN_TM65GPLUS -#define CONFIG_SYN_TECH tm65gpl -#elif defined CONFIG_SYN_CUSTOM1 -#define CONFIG_SYN_TECH custom1 -#else -#error "unknown target technology" -#endif - -#if defined CONFIG_SYN_INFER_RAM -#define CFG_RAM_TECH inferred -#elif defined CONFIG_MEM_UMC -#define CFG_RAM_TECH umc -#elif defined CONFIG_MEM_RHUMC -#define CFG_RAM_TECH rhumc -#elif defined CONFIG_MEM_VIRAGE -#define CFG_RAM_TECH memvirage -#elif defined CONFIG_MEM_ARTISAN -#define CFG_RAM_TECH memartisan -#elif defined CONFIG_MEM_CUSTOM1 -#define CFG_RAM_TECH custom1 -#elif defined CONFIG_MEM_VIRAGE90 -#define CFG_RAM_TECH memvirage90 -#elif defined CONFIG_MEM_INFERRED -#define CFG_RAM_TECH inferred -#else -#define CFG_RAM_TECH CONFIG_SYN_TECH -#endif - -#if defined CONFIG_SYN_INFER_PADS -#define CFG_PAD_TECH inferred -#else -#define CFG_PAD_TECH CONFIG_SYN_TECH -#endif - -#ifndef CONFIG_SYN_NO_ASYNC -#define CONFIG_SYN_NO_ASYNC 0 -#endif - -#ifndef CONFIG_SYN_SCAN -#define CONFIG_SYN_SCAN 0 -#endif - - -#if defined CONFIG_CLK_ALTDLL -#define CFG_CLK_TECH CONFIG_SYN_TECH -#elif defined CONFIG_CLK_HCLKBUF -#define CFG_CLK_TECH axcel -#elif defined CONFIG_CLK_LATDLL -#define CFG_CLK_TECH lattice -#elif defined CONFIG_CLK_PRO3PLL -#define CFG_CLK_TECH apa3 -#elif defined CONFIG_CLK_PRO3EPLL -#define CFG_CLK_TECH apa3e -#elif defined CONFIG_CLK_PRO3LPLL -#define CFG_CLK_TECH apa3l -#elif defined CONFIG_CLK_FUSPLL -#define CFG_CLK_TECH actfus -#elif defined CONFIG_CLK_CLKDLL -#define CFG_CLK_TECH virtex -#elif defined CONFIG_CLK_DCM -#define CFG_CLK_TECH CONFIG_SYN_TECH -#elif defined CONFIG_CLK_LIB18T -#define CFG_CLK_TECH rhlib18t -#elif defined CONFIG_CLK_RHUMC -#define CFG_CLK_TECH rhumc -#elif defined CONFIG_CLK_UT130HBD -#define CFG_CLK_TECH ut130 -#else -#define CFG_CLK_TECH inferred -#endif - -#ifndef CONFIG_CLK_MUL -#define CONFIG_CLK_MUL 2 -#endif - -#ifndef CONFIG_CLK_DIV -#define CONFIG_CLK_DIV 2 -#endif - -#ifndef CONFIG_OCLK_DIV -#define CONFIG_OCLK_DIV 1 -#endif - -#ifndef CONFIG_OCLKB_DIV -#define CONFIG_OCLKB_DIV 0 -#endif - -#ifndef CONFIG_OCLKC_DIV -#define CONFIG_OCLKC_DIV 0 -#endif - -#ifndef CONFIG_PCI_CLKDLL -#define CONFIG_PCI_CLKDLL 0 -#endif - -#ifndef CONFIG_PCI_SYSCLK -#define CONFIG_PCI_SYSCLK 0 -#endif - -#ifndef CONFIG_CLK_NOFB -#define CONFIG_CLK_NOFB 0 -#endif -#ifndef CONFIG_LEON3 -#define CONFIG_LEON3 0 -#endif - -#ifndef CONFIG_PROC_NUM -#define CONFIG_PROC_NUM 1 -#endif - -#ifndef CONFIG_IU_NWINDOWS -#define CONFIG_IU_NWINDOWS 8 -#endif - -#ifndef CONFIG_IU_RSTADDR -#define CONFIG_IU_RSTADDR 8 -#endif - -#ifndef CONFIG_IU_LDELAY -#define CONFIG_IU_LDELAY 1 -#endif - -#ifndef CONFIG_IU_WATCHPOINTS -#define CONFIG_IU_WATCHPOINTS 0 -#endif - -#ifdef CONFIG_IU_V8MULDIV -#ifdef CONFIG_IU_MUL_LATENCY_4 -#define CFG_IU_V8 1 -#elif defined CONFIG_IU_MUL_LATENCY_5 -#define CFG_IU_V8 2 -#elif defined CONFIG_IU_MUL_LATENCY_2 -#define CFG_IU_V8 16#32# -#endif -#else -#define CFG_IU_V8 0 -#endif - -#ifdef CONFIG_IU_MUL_MODGEN -#define CFG_IU_MUL_STRUCT 1 -#elif defined CONFIG_IU_MUL_TECHSPEC -#define CFG_IU_MUL_STRUCT 2 -#elif defined CONFIG_IU_MUL_DW -#define CFG_IU_MUL_STRUCT 3 -#else -#define CFG_IU_MUL_STRUCT 0 -#endif - -#ifndef CONFIG_PWD -#define CONFIG_PWD 0 -#endif - -#ifndef CONFIG_IU_MUL_MAC -#define CONFIG_IU_MUL_MAC 0 -#endif - -#ifndef CONFIG_IU_BP -#define CONFIG_IU_BP 0 -#endif - -#ifndef CONFIG_NOTAG -#define CONFIG_NOTAG 0 -#endif - -#ifndef CONFIG_IU_SVT -#define CONFIG_IU_SVT 0 -#endif - -#if defined CONFIG_FPU_GRFPC1 -#define CONFIG_FPU_GRFPC 1 -#elif defined CONFIG_FPU_GRFPC2 -#define CONFIG_FPU_GRFPC 2 -#else -#define CONFIG_FPU_GRFPC 0 -#endif - -#if defined CONFIG_FPU_GRFPU_INFMUL -#define CONFIG_FPU_GRFPU_MUL 0 -#elif defined CONFIG_FPU_GRFPU_DWMUL -#define CONFIG_FPU_GRFPU_MUL 1 -#elif defined CONFIG_FPU_GRFPU_MODGEN -#define CONFIG_FPU_GRFPU_MUL 2 -#elif defined CONFIG_FPU_GRFPU_TECHSPEC -#define CONFIG_FPU_GRFPU_MUL 3 -#else -#define CONFIG_FPU_GRFPU_MUL 0 -#endif - -#if defined CONFIG_FPU_GRFPU_SH -#define CONFIG_FPU_GRFPU_SHARED 1 -#else -#define CONFIG_FPU_GRFPU_SHARED 0 -#endif - -#if defined CONFIG_FPU_GRFPU -#define CONFIG_FPU (1+CONFIG_FPU_GRFPU_MUL) -#elif defined CONFIG_FPU_MEIKO -#define CONFIG_FPU 15 -#elif defined CONFIG_FPU_GRFPULITE -#define CONFIG_FPU (8+CONFIG_FPU_GRFPC) -#else -#define CONFIG_FPU 0 -#endif - -#ifndef CONFIG_FPU_NETLIST -#define CONFIG_FPU_NETLIST 0 -#endif - -#ifndef CONFIG_ICACHE_ENABLE -#define CONFIG_ICACHE_ENABLE 0 -#endif - -#if defined CONFIG_ICACHE_ASSO1 -#define CFG_IU_ISETS 1 -#elif defined CONFIG_ICACHE_ASSO2 -#define CFG_IU_ISETS 2 -#elif defined CONFIG_ICACHE_ASSO3 -#define CFG_IU_ISETS 3 -#elif defined CONFIG_ICACHE_ASSO4 -#define CFG_IU_ISETS 4 -#else -#define CFG_IU_ISETS 1 -#endif - -#if defined CONFIG_ICACHE_SZ1 -#define CFG_ICACHE_SZ 1 -#elif defined CONFIG_ICACHE_SZ2 -#define CFG_ICACHE_SZ 2 -#elif defined CONFIG_ICACHE_SZ4 -#define CFG_ICACHE_SZ 4 -#elif defined CONFIG_ICACHE_SZ8 -#define CFG_ICACHE_SZ 8 -#elif defined CONFIG_ICACHE_SZ16 -#define CFG_ICACHE_SZ 16 -#elif defined CONFIG_ICACHE_SZ32 -#define CFG_ICACHE_SZ 32 -#elif defined CONFIG_ICACHE_SZ64 -#define CFG_ICACHE_SZ 64 -#elif defined CONFIG_ICACHE_SZ128 -#define CFG_ICACHE_SZ 128 -#elif defined CONFIG_ICACHE_SZ256 -#define CFG_ICACHE_SZ 256 -#else -#define CFG_ICACHE_SZ 1 -#endif - -#ifdef CONFIG_ICACHE_LZ16 -#define CFG_ILINE_SZ 4 -#else -#define CFG_ILINE_SZ 8 -#endif - -#if defined CONFIG_ICACHE_ALGODIR -#define CFG_ICACHE_ALGORND 3 -#elif defined CONFIG_ICACHE_ALGORND -#define CFG_ICACHE_ALGORND 2 -#elif defined CONFIG_ICACHE_ALGOLRR -#define CFG_ICACHE_ALGORND 1 -#else -#define CFG_ICACHE_ALGORND 0 -#endif - -#ifndef CONFIG_ICACHE_LOCK -#define CONFIG_ICACHE_LOCK 0 -#endif - -#ifndef CONFIG_ICACHE_LRAM -#define CONFIG_ICACHE_LRAM 0 -#endif - -#ifndef CONFIG_ICACHE_LRSTART -#define CONFIG_ICACHE_LRSTART 8E -#endif - -#if defined CONFIG_ICACHE_LRAM_SZ2 -#define CFG_ILRAM_SIZE 2 -#elif defined CONFIG_ICACHE_LRAM_SZ4 -#define CFG_ILRAM_SIZE 4 -#elif defined CONFIG_ICACHE_LRAM_SZ8 -#define CFG_ILRAM_SIZE 8 -#elif defined CONFIG_ICACHE_LRAM_SZ16 -#define CFG_ILRAM_SIZE 16 -#elif defined CONFIG_ICACHE_LRAM_SZ32 -#define CFG_ILRAM_SIZE 32 -#elif defined CONFIG_ICACHE_LRAM_SZ64 -#define CFG_ILRAM_SIZE 64 -#elif defined CONFIG_ICACHE_LRAM_SZ128 -#define CFG_ILRAM_SIZE 128 -#elif defined CONFIG_ICACHE_LRAM_SZ256 -#define CFG_ILRAM_SIZE 256 -#else -#define CFG_ILRAM_SIZE 1 -#endif - - -#ifndef CONFIG_DCACHE_ENABLE -#define CONFIG_DCACHE_ENABLE 0 -#endif - -#if defined CONFIG_DCACHE_ASSO1 -#define CFG_IU_DSETS 1 -#elif defined CONFIG_DCACHE_ASSO2 -#define CFG_IU_DSETS 2 -#elif defined CONFIG_DCACHE_ASSO3 -#define CFG_IU_DSETS 3 -#elif defined CONFIG_DCACHE_ASSO4 -#define CFG_IU_DSETS 4 -#else -#define CFG_IU_DSETS 1 -#endif - -#if defined CONFIG_DCACHE_SZ1 -#define CFG_DCACHE_SZ 1 -#elif defined CONFIG_DCACHE_SZ2 -#define CFG_DCACHE_SZ 2 -#elif defined CONFIG_DCACHE_SZ4 -#define CFG_DCACHE_SZ 4 -#elif defined CONFIG_DCACHE_SZ8 -#define CFG_DCACHE_SZ 8 -#elif defined CONFIG_DCACHE_SZ16 -#define CFG_DCACHE_SZ 16 -#elif defined CONFIG_DCACHE_SZ32 -#define CFG_DCACHE_SZ 32 -#elif defined CONFIG_DCACHE_SZ64 -#define CFG_DCACHE_SZ 64 -#elif defined CONFIG_DCACHE_SZ128 -#define CFG_DCACHE_SZ 128 -#elif defined CONFIG_DCACHE_SZ256 -#define CFG_DCACHE_SZ 256 -#else -#define CFG_DCACHE_SZ 1 -#endif - -#ifdef CONFIG_DCACHE_LZ16 -#define CFG_DLINE_SZ 4 -#else -#define CFG_DLINE_SZ 8 -#endif - -#if defined CONFIG_DCACHE_ALGODIR -#define CFG_DCACHE_ALGORND 3 -#elif defined CONFIG_DCACHE_ALGORND -#define CFG_DCACHE_ALGORND 2 -#elif defined CONFIG_DCACHE_ALGOLRR -#define CFG_DCACHE_ALGORND 1 -#else -#define CFG_DCACHE_ALGORND 0 -#endif - -#ifndef CONFIG_DCACHE_LOCK -#define CONFIG_DCACHE_LOCK 0 -#endif - -#ifndef CONFIG_DCACHE_SNOOP -#define CONFIG_DCACHE_SNOOP 0 -#endif - -#ifndef CONFIG_DCACHE_SNOOP_FAST -#define CONFIG_DCACHE_SNOOP_FAST 0 -#endif - -#ifndef CONFIG_DCACHE_SNOOP_SEPTAG -#define CONFIG_DCACHE_SNOOP_SEPTAG 0 -#endif - -#ifndef CONFIG_CACHE_FIXED -#define CONFIG_CACHE_FIXED 0 -#endif - -#ifndef CONFIG_DCACHE_LRAM -#define CONFIG_DCACHE_LRAM 0 -#endif - -#ifndef CONFIG_DCACHE_LRSTART -#define CONFIG_DCACHE_LRSTART 8F -#endif - -#if defined CONFIG_DCACHE_LRAM_SZ2 -#define CFG_DLRAM_SIZE 2 -#elif defined CONFIG_DCACHE_LRAM_SZ4 -#define CFG_DLRAM_SIZE 4 -#elif defined CONFIG_DCACHE_LRAM_SZ8 -#define CFG_DLRAM_SIZE 8 -#elif defined CONFIG_DCACHE_LRAM_SZ16 -#define CFG_DLRAM_SIZE 16 -#elif defined CONFIG_DCACHE_LRAM_SZ32 -#define CFG_DLRAM_SIZE 32 -#elif defined CONFIG_DCACHE_LRAM_SZ64 -#define CFG_DLRAM_SIZE 64 -#elif defined CONFIG_DCACHE_LRAM_SZ128 -#define CFG_DLRAM_SIZE 128 -#elif defined CONFIG_DCACHE_LRAM_SZ256 -#define CFG_DLRAM_SIZE 256 -#else -#define CFG_DLRAM_SIZE 1 -#endif - -#if defined CONFIG_MMU_PAGE_4K -#define CONFIG_MMU_PAGE 0 -#elif defined CONFIG_MMU_PAGE_8K -#define CONFIG_MMU_PAGE 1 -#elif defined CONFIG_MMU_PAGE_16K -#define CONFIG_MMU_PAGE 2 -#elif defined CONFIG_MMU_PAGE_32K -#define CONFIG_MMU_PAGE 3 -#elif defined CONFIG_MMU_PAGE_PROG -#define CONFIG_MMU_PAGE 4 -#else -#define CONFIG_MMU_PAGE 0 -#endif - -#ifdef CONFIG_MMU_ENABLE -#define CONFIG_MMUEN 1 - -#ifdef CONFIG_MMU_SPLIT -#define CONFIG_TLB_TYPE 0 -#endif -#ifdef CONFIG_MMU_COMBINED -#define CONFIG_TLB_TYPE 1 -#endif - -#ifdef CONFIG_MMU_REPARRAY -#define CONFIG_TLB_REP 0 -#endif -#ifdef CONFIG_MMU_REPINCREMENT -#define CONFIG_TLB_REP 1 -#endif - -#ifdef CONFIG_MMU_I2 -#define CONFIG_ITLBNUM 2 -#endif -#ifdef CONFIG_MMU_I4 -#define CONFIG_ITLBNUM 4 -#endif -#ifdef CONFIG_MMU_I8 -#define CONFIG_ITLBNUM 8 -#endif -#ifdef CONFIG_MMU_I16 -#define CONFIG_ITLBNUM 16 -#endif -#ifdef CONFIG_MMU_I32 -#define CONFIG_ITLBNUM 32 -#endif - -#define CONFIG_DTLBNUM 2 -#ifdef CONFIG_MMU_D2 -#undef CONFIG_DTLBNUM -#define CONFIG_DTLBNUM 2 -#endif -#ifdef CONFIG_MMU_D4 -#undef CONFIG_DTLBNUM -#define CONFIG_DTLBNUM 4 -#endif -#ifdef CONFIG_MMU_D8 -#undef CONFIG_DTLBNUM -#define CONFIG_DTLBNUM 8 -#endif -#ifdef CONFIG_MMU_D16 -#undef CONFIG_DTLBNUM -#define CONFIG_DTLBNUM 16 -#endif -#ifdef CONFIG_MMU_D32 -#undef CONFIG_DTLBNUM -#define CONFIG_DTLBNUM 32 -#endif -#ifdef CONFIG_MMU_FASTWB -#define CFG_MMU_FASTWB 1 -#else -#define CFG_MMU_FASTWB 0 -#endif - -#else -#define CONFIG_MMUEN 0 -#define CONFIG_ITLBNUM 2 -#define CONFIG_DTLBNUM 2 -#define CONFIG_TLB_TYPE 1 -#define CONFIG_TLB_REP 1 -#define CFG_MMU_FASTWB 0 -#endif - -#ifndef CONFIG_DSU_ENABLE -#define CONFIG_DSU_ENABLE 0 -#endif - -#if defined CONFIG_DSU_ITRACESZ1 -#define CFG_DSU_ITB 1 -#elif CONFIG_DSU_ITRACESZ2 -#define CFG_DSU_ITB 2 -#elif CONFIG_DSU_ITRACESZ4 -#define CFG_DSU_ITB 4 -#elif CONFIG_DSU_ITRACESZ8 -#define CFG_DSU_ITB 8 -#elif CONFIG_DSU_ITRACESZ16 -#define CFG_DSU_ITB 16 -#else -#define CFG_DSU_ITB 0 -#endif - -#if defined CONFIG_DSU_ATRACESZ1 -#define CFG_DSU_ATB 1 -#elif CONFIG_DSU_ATRACESZ2 -#define CFG_DSU_ATB 2 -#elif CONFIG_DSU_ATRACESZ4 -#define CFG_DSU_ATB 4 -#elif CONFIG_DSU_ATRACESZ8 -#define CFG_DSU_ATB 8 -#elif CONFIG_DSU_ATRACESZ16 -#define CFG_DSU_ATB 16 -#else -#define CFG_DSU_ATB 0 -#endif - -#ifndef CONFIG_LEON3FT_EN -#define CONFIG_LEON3FT_EN 0 -#endif - -#if defined CONFIG_IUFT_PAR -#define CONFIG_IUFT_EN 1 -#elif defined CONFIG_IUFT_DMR -#define CONFIG_IUFT_EN 2 -#elif defined CONFIG_IUFT_BCH -#define CONFIG_IUFT_EN 3 -#elif defined CONFIG_IUFT_TMR -#define CONFIG_IUFT_EN 4 -#else -#define CONFIG_IUFT_EN 0 -#endif -#ifndef CONFIG_RF_ERRINJ -#define CONFIG_RF_ERRINJ 0 -#endif - -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU -#define CONFIG_FPUFT 2 -#else -#define CONFIG_FPUFT 1 -#endif -#endif - -#ifndef CONFIG_CACHE_FT_EN -#define CONFIG_CACHE_FT_EN 0 -#endif -#ifndef CONFIG_CACHE_ERRINJ -#define CONFIG_CACHE_ERRINJ 0 -#endif - -#ifndef CONFIG_LEON3_NETLIST -#define CONFIG_LEON3_NETLIST 0 -#endif - -#ifdef CONFIG_DEBUG_PC32 -#define CFG_DEBUG_PC32 0 -#else -#define CFG_DEBUG_PC32 2 -#endif -#ifndef CONFIG_IU_DISAS -#define CONFIG_IU_DISAS 0 -#endif -#ifndef CONFIG_IU_DISAS_NET -#define CONFIG_IU_DISAS_NET 0 -#endif - - -#ifndef CONFIG_AHB_SPLIT -#define CONFIG_AHB_SPLIT 0 -#endif - -#ifndef CONFIG_AHB_RROBIN -#define CONFIG_AHB_RROBIN 0 -#endif - -#ifndef CONFIG_AHB_FPNPEN -#define CONFIG_AHB_FPNPEN 0 -#endif - -#ifndef CONFIG_AHB_IOADDR -#define CONFIG_AHB_IOADDR FFF -#endif - -#ifndef CONFIG_APB_HADDR -#define CONFIG_APB_HADDR 800 -#endif - -#ifndef CONFIG_AHB_MON -#define CONFIG_AHB_MON 0 -#endif - -#ifndef CONFIG_AHB_MONERR -#define CONFIG_AHB_MONERR 0 -#endif - -#ifndef CONFIG_AHB_MONWAR -#define CONFIG_AHB_MONWAR 0 -#endif - -#ifndef CONFIG_AHB_DTRACE -#define CONFIG_AHB_DTRACE 0 -#endif - -#ifndef CONFIG_DSU_UART -#define CONFIG_DSU_UART 0 -#endif - - -#ifndef CONFIG_DSU_ETH -#define CONFIG_DSU_ETH 0 -#endif - -#ifndef CONFIG_DSU_IPMSB -#define CONFIG_DSU_IPMSB C0A8 -#endif - -#ifndef CONFIG_DSU_IPLSB -#define CONFIG_DSU_IPLSB 0033 -#endif - -#ifndef CONFIG_DSU_ETHMSB -#define CONFIG_DSU_ETHMSB 020000 -#endif - -#ifndef CONFIG_DSU_ETHLSB -#define CONFIG_DSU_ETHLSB 000009 -#endif - -#if defined CONFIG_DSU_ETHSZ1 -#define CFG_DSU_ETHB 1 -#elif CONFIG_DSU_ETHSZ2 -#define CFG_DSU_ETHB 2 -#elif CONFIG_DSU_ETHSZ4 -#define CFG_DSU_ETHB 4 -#elif CONFIG_DSU_ETHSZ8 -#define CFG_DSU_ETHB 8 -#elif CONFIG_DSU_ETHSZ16 -#define CFG_DSU_ETHB 16 -#elif CONFIG_DSU_ETHSZ32 -#define CFG_DSU_ETHB 32 -#else -#define CFG_DSU_ETHB 1 -#endif - -#ifndef CONFIG_DSU_ETH_PROG -#define CONFIG_DSU_ETH_PROG 0 -#endif - -#ifndef CONFIG_DSU_ETH_DIS -#define CONFIG_DSU_ETH_DIS 0 -#endif - - -#ifndef CONFIG_SRCTRL -#define CONFIG_SRCTRL 0 -#endif - -#ifndef CONFIG_SRCTRL_PROMWS -#define CONFIG_SRCTRL_PROMWS 0 -#endif - -#ifndef CONFIG_SRCTRL_RAMWS -#define CONFIG_SRCTRL_RAMWS 0 -#endif - -#ifndef CONFIG_SRCTRL_IOWS -#define CONFIG_SRCTRL_IOWS 0 -#endif - -#ifndef CONFIG_SRCTRL_RMW -#define CONFIG_SRCTRL_RMW 0 -#endif - -#ifndef CONFIG_SRCTRL_8BIT -#define CONFIG_SRCTRL_8BIT 0 -#endif - - -#ifndef CONFIG_SRCTRL_ROMASEL -#define CONFIG_SRCTRL_ROMASEL 0 -#endif - -#if defined CONFIG_SRCTRL_SRBANKS1 -#define CFG_SR_CTRL_SRBANKS 1 -#elif defined CONFIG_SRCTRL_SRBANKS2 -#define CFG_SR_CTRL_SRBANKS 2 -#elif defined CONFIG_SRCTRL_SRBANKS3 -#define CFG_SR_CTRL_SRBANKS 3 -#elif defined CONFIG_SRCTRL_SRBANKS4 -#define CFG_SR_CTRL_SRBANKS 4 -#elif defined CONFIG_SRCTRL_SRBANKS5 -#define CFG_SR_CTRL_SRBANKS 5 -#else -#define CFG_SR_CTRL_SRBANKS 1 -#endif - -#if defined CONFIG_SRCTRL_BANKSZ0 -#define CFG_SR_CTRL_BANKSZ 0 -#elif defined CONFIG_SRCTRL_BANKSZ1 -#define CFG_SR_CTRL_BANKSZ 1 -#elif defined CONFIG_SRCTRL_BANKSZ2 -#define CFG_SR_CTRL_BANKSZ 2 -#elif defined CONFIG_SRCTRL_BANKSZ3 -#define CFG_SR_CTRL_BANKSZ 3 -#elif defined CONFIG_SRCTRL_BANKSZ4 -#define CFG_SR_CTRL_BANKSZ 4 -#elif defined CONFIG_SRCTRL_BANKSZ5 -#define CFG_SR_CTRL_BANKSZ 5 -#elif defined CONFIG_SRCTRL_BANKSZ6 -#define CFG_SR_CTRL_BANKSZ 6 -#elif defined CONFIG_SRCTRL_BANKSZ7 -#define CFG_SR_CTRL_BANKSZ 7 -#elif defined CONFIG_SRCTRL_BANKSZ8 -#define CFG_SR_CTRL_BANKSZ 8 -#elif defined CONFIG_SRCTRL_BANKSZ9 -#define CFG_SR_CTRL_BANKSZ 9 -#elif defined CONFIG_SRCTRL_BANKSZ10 -#define CFG_SR_CTRL_BANKSZ 10 -#elif defined CONFIG_SRCTRL_BANKSZ11 -#define CFG_SR_CTRL_BANKSZ 11 -#elif defined CONFIG_SRCTRL_BANKSZ12 -#define CFG_SR_CTRL_BANKSZ 12 -#elif defined CONFIG_SRCTRL_BANKSZ13 -#define CFG_SR_CTRL_BANKSZ 13 -#else -#define CFG_SR_CTRL_BANKSZ 0 -#endif -#ifndef CONFIG_MCTRL_LEON2 -#define CONFIG_MCTRL_LEON2 0 -#endif - -#ifndef CONFIG_MCTRL_SDRAM -#define CONFIG_MCTRL_SDRAM 0 -#endif - -#ifndef CONFIG_MCTRL_SDRAM_SEPBUS -#define CONFIG_MCTRL_SDRAM_SEPBUS 0 -#endif - -#ifndef CONFIG_MCTRL_SDRAM_INVCLK -#define CONFIG_MCTRL_SDRAM_INVCLK 0 -#endif - -#ifndef CONFIG_MCTRL_SDRAM_BUS64 -#define CONFIG_MCTRL_SDRAM_BUS64 0 -#endif - -#ifndef CONFIG_MCTRL_8BIT -#define CONFIG_MCTRL_8BIT 0 -#endif - -#ifndef CONFIG_MCTRL_16BIT -#define CONFIG_MCTRL_16BIT 0 -#endif - -#ifndef CONFIG_MCTRL_5CS -#define CONFIG_MCTRL_5CS 0 -#endif - -#ifndef CONFIG_MCTRL_EDAC -#define CONFIG_MCTRL_EDAC 0 -#endif - -#ifndef CONFIG_MCTRL_PAGE -#define CONFIG_MCTRL_PAGE 0 -#endif - -#ifndef CONFIG_MCTRL_PROGPAGE -#define CONFIG_MCTRL_PROGPAGE 0 -#endif - -#ifndef CONFIG_DDRMP -#define CONFIG_DDRMP 0 -#endif - -#ifndef CONFIG_DDRMP_NCS -#define CONFIG_DDRMP_NCS 1 -#endif - -#ifndef CONFIG_DDRMP_NDEV -#define CONFIG_DDRMP_NDEV 2 -#endif - -#ifndef CONFIG_DDRMP_NBITS -#define CONFIG_DDRMP_NBITS 16 -#endif - -#ifndef CONFIG_DDRMP_MBITS -#define CONFIG_DDRMP_MBITS 64 -#endif - -#ifndef CONFIG_DDRMP_FREQ -#define CONFIG_DDRMP_FREQ 100 -#endif - -#ifndef CONFIG_DDRMP_EN2P -#define CONFIG_DDRMP_EN2P 0 -#endif -#ifndef CONFIG_AHBROM_ENABLE -#define CONFIG_AHBROM_ENABLE 0 -#endif - -#ifndef CONFIG_AHBROM_START -#define CONFIG_AHBROM_START 000 -#endif - -#ifndef CONFIG_AHBROM_PIPE -#define CONFIG_AHBROM_PIPE 0 -#endif - -#if (CONFIG_AHBROM_START == 0) && (CONFIG_AHBROM_ENABLE == 1) -#define CONFIG_ROM_START 100 -#else -#define CONFIG_ROM_START 000 -#endif - - -#ifndef CONFIG_AHBRAM_ENABLE -#define CONFIG_AHBRAM_ENABLE 0 -#endif - -#ifndef CONFIG_AHBRAM_START -#define CONFIG_AHBRAM_START A00 -#endif - -#if defined CONFIG_AHBRAM_SZ1 -#define CFG_AHBRAMSZ 1 -#elif CONFIG_AHBRAM_SZ2 -#define CFG_AHBRAMSZ 2 -#elif CONFIG_AHBRAM_SZ4 -#define CFG_AHBRAMSZ 4 -#elif CONFIG_AHBRAM_SZ8 -#define CFG_AHBRAMSZ 8 -#elif CONFIG_AHBRAM_SZ16 -#define CFG_AHBRAMSZ 16 -#elif CONFIG_AHBRAM_SZ32 -#define CFG_AHBRAMSZ 32 -#elif CONFIG_AHBRAM_SZ64 -#define CFG_AHBRAMSZ 64 -#else -#define CFG_AHBRAMSZ 1 -#endif - -#ifndef CONFIG_GRETH_ENABLE -#define CONFIG_GRETH_ENABLE 0 -#endif - -#ifndef CONFIG_GRETH_GIGA -#define CONFIG_GRETH_GIGA 0 -#endif - -#if defined CONFIG_GRETH_FIFO4 -#define CFG_GRETH_FIFO 4 -#elif defined CONFIG_GRETH_FIFO8 -#define CFG_GRETH_FIFO 8 -#elif defined CONFIG_GRETH_FIFO16 -#define CFG_GRETH_FIFO 16 -#elif defined CONFIG_GRETH_FIFO32 -#define CFG_GRETH_FIFO 32 -#elif defined CONFIG_GRETH_FIFO64 -#define CFG_GRETH_FIFO 64 -#else -#define CFG_GRETH_FIFO 8 -#endif - -#ifndef CONFIG_ATA_ENABLE -#define CONFIG_ATA_ENABLE 0 -#endif - -#ifndef CONFIG_ATAIO -#define CONFIG_ATAIO 0 -#endif - -#ifndef CONFIG_ATAIRQ -#define CONFIG_ATAIRQ 0 -#endif - -#ifndef CONFIG_ATA_MWDMA -#define CONFIG_ATA_MWDMA 0 -#endif - -#ifndef CONFIG_ATA_FIFO -#define CONFIG_ATA_FIFO 8 -#endif -#ifndef CONFIG_UART1_ENABLE -#define CONFIG_UART1_ENABLE 0 -#endif - -#if defined CONFIG_UA1_FIFO1 -#define CFG_UA1_FIFO 1 -#elif defined CONFIG_UA1_FIFO2 -#define CFG_UA1_FIFO 2 -#elif defined CONFIG_UA1_FIFO4 -#define CFG_UA1_FIFO 4 -#elif defined CONFIG_UA1_FIFO8 -#define CFG_UA1_FIFO 8 -#elif defined CONFIG_UA1_FIFO16 -#define CFG_UA1_FIFO 16 -#elif defined CONFIG_UA1_FIFO32 -#define CFG_UA1_FIFO 32 -#else -#define CFG_UA1_FIFO 1 -#endif - -#ifndef CONFIG_IRQ3_ENABLE -#define CONFIG_IRQ3_ENABLE 0 -#endif -#ifndef CONFIG_IRQ3_NSEC -#define CONFIG_IRQ3_NSEC 0 -#endif -#ifndef CONFIG_GPT_ENABLE -#define CONFIG_GPT_ENABLE 0 -#endif - -#ifndef CONFIG_GPT_NTIM -#define CONFIG_GPT_NTIM 1 -#endif - -#ifndef CONFIG_GPT_SW -#define CONFIG_GPT_SW 8 -#endif - -#ifndef CONFIG_GPT_TW -#define CONFIG_GPT_TW 8 -#endif - -#ifndef CONFIG_GPT_IRQ -#define CONFIG_GPT_IRQ 8 -#endif - -#ifndef CONFIG_GPT_SEPIRQ -#define CONFIG_GPT_SEPIRQ 0 -#endif -#ifndef CONFIG_GPT_ENABLE -#define CONFIG_GPT_ENABLE 0 -#endif - -#ifndef CONFIG_GPT_NTIM -#define CONFIG_GPT_NTIM 1 -#endif - -#ifndef CONFIG_GPT_SW -#define CONFIG_GPT_SW 8 -#endif - -#ifndef CONFIG_GPT_TW -#define CONFIG_GPT_TW 8 -#endif - -#ifndef CONFIG_GPT_IRQ -#define CONFIG_GPT_IRQ 8 -#endif - -#ifndef CONFIG_GPT_SEPIRQ -#define CONFIG_GPT_SEPIRQ 0 -#endif - -#ifndef CONFIG_GPT_WDOGEN -#define CONFIG_GPT_WDOGEN 0 -#endif - -#ifndef CONFIG_GPT_WDOG -#define CONFIG_GPT_WDOG 0 -#endif - -#ifndef CONFIG_VGA_ENABLE -#define CONFIG_VGA_ENABLE 0 -#endif -#ifndef CONFIG_SVGA_ENABLE -#define CONFIG_SVGA_ENABLE 0 -#endif -#ifndef CONFIG_KBD_ENABLE -#define CONFIG_KBD_ENABLE 0 -#endif - - -#ifndef CONFIG_DEBUG_UART -#define CONFIG_DEBUG_UART 0 -#endif diff --git a/designs/leon3-ge-hpe-mini-lattice/wave.do b/designs/leon3-ge-hpe-mini-lattice/wave.do deleted file mode 100644 index 64a6b791..00000000 --- a/designs/leon3-ge-hpe-mini-lattice/wave.do +++ /dev/null @@ -1,186 +0,0 @@ -onerror {resume} -quietly WaveActivateNextPane {} 0 -add wave -noupdate -divider DAC_AHB -add wave -noupdate -format Logic -radix hexadecimal /testbench/d3/dac_ahb_1/rst -add wave -noupdate -format Logic -radix hexadecimal /testbench/d3/dac_ahb_1/clk -add wave -noupdate -format Literal -radix hexadecimal -expand /testbench/d3/dac_ahb_1/ahbsi -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/dac_ahb_1/ahbso -add wave -noupdate -format Logic -radix hexadecimal /testbench/d3/dac_ahb_1/dac_out -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/dac_ahb_1/r -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/dac_ahb_1/c -add wave -noupdate -format Logic -radix hexadecimal /testbench/d3/dac_ahb_1/ramsel -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/dac_ahb_1/write -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/dac_ahb_1/ramaddr -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/dac_ahb_1/ramdata -add wave -noupdate -format Literal -radix hexadecimal -expand /testbench/d3/dac_ahb_1/memarr -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/dac_ahb_1/ra -add wave -noupdate -format Logic -radix hexadecimal /testbench/d3/dac_ahb_1/rstp -add wave -noupdate -divider {DAC SigDelt} -add wave -noupdate -format Logic /testbench/d3/dac_ahb_1/sigdelt_1/reset -add wave -noupdate -format Logic /testbench/d3/dac_ahb_1/sigdelt_1/clock -add wave -noupdate -format Literal /testbench/d3/dac_ahb_1/sigdelt_1/dac_in -add wave -noupdate -format Logic /testbench/d3/dac_ahb_1/sigdelt_1/dac_out -add wave -noupdate -format Literal /testbench/d3/dac_ahb_1/sigdelt_1/delta -add wave -noupdate -format Literal /testbench/d3/dac_ahb_1/sigdelt_1/state -add wave -noupdate -divider {Clock Generator} -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/clkin -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/pciclkin -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/clk -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/clkn -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/sdclk -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/pciclk -add wave -noupdate -format Literal /testbench/d3/clkgen0/str/v/cgi -add wave -noupdate -format Literal /testbench/d3/clkgen0/str/v/cgo -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/clk_i -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/clkint -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/pciclkint -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/pllclk -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/pllclkn -add wave -noupdate -format Logic /testbench/d3/clkgen0/str/v/s_clk -add wave -noupdate -divider LEON3S -add wave -noupdate -format Literal -radix hexadecimal -expand /testbench/d3/cpu__0/u0/ahbi -add wave -noupdate -format Literal -radix hexadecimal -expand /testbench/d3/cpu__0/u0/ahbo -add wave -noupdate -divider {Memory Controller} -add wave -noupdate -format Literal -radix hexadecimal -expand /testbench/d3/mg2/sr1/ahbsi -add wave -noupdate -format Literal -radix hexadecimal -expand /testbench/d3/mg2/sr1/ahbso -add wave -noupdate -divider {Internal Boot Prom} -add wave -noupdate -format Logic -radix hexadecimal /testbench/d3/mg2/sr1/promgen/bprom0/clk -add wave -noupdate -format Logic -radix hexadecimal /testbench/d3/mg2/sr1/promgen/bprom0/csn -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/mg2/sr1/promgen/bprom0/addr -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/mg2/sr1/promgen/bprom0/data -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/mg2/sr1/promgen/bprom0/raddr -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/mg2/sr1/promgen/bprom0/d -add wave -noupdate -divider {selected signals} -add wave -noupdate -format Logic /testbench/clk -add wave -noupdate -format Logic /testbench/rst -add wave -noupdate -format Literal -radix hexadecimal /testbench/address -add wave -noupdate -format Literal -radix hexadecimal /testbench/data -add wave -noupdate -format Literal /testbench/ramsn -add wave -noupdate -format Literal /testbench/ramoen -add wave -noupdate -format Literal /testbench/rben -add wave -noupdate -format Literal /testbench/rwen -add wave -noupdate -format Literal /testbench/rwenx -add wave -noupdate -format Literal /testbench/romsn -add wave -noupdate -format Logic /testbench/iosn -add wave -noupdate -format Logic /testbench/oen -add wave -noupdate -format Logic /testbench/read -add wave -noupdate -format Logic /testbench/writen -add wave -noupdate -format Literal -radix hexadecimal /testbench/sa -add wave -noupdate -format Literal -radix hexadecimal /testbench/sd -add wave -noupdate -format Literal /testbench/sdcke -add wave -noupdate -format Literal /testbench/sdcsn -add wave -noupdate -format Logic /testbench/sdwen -add wave -noupdate -format Logic /testbench/sdrasn -add wave -noupdate -format Logic /testbench/sdcasn -add wave -noupdate -format Literal /testbench/sddqm -add wave -noupdate -format Logic /testbench/sd_clk(0) -add wave -noupdate -divider LEON3MINI -add wave -noupdate -format Logic /testbench/d3/resetn -add wave -noupdate -format Logic /testbench/d3/resoutn -add wave -noupdate -format Logic /testbench/d3/clk -add wave -noupdate -format Logic /testbench/d3/errorn -add wave -noupdate -format Literal /testbench/d3/address -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/data -add wave -noupdate -format Literal /testbench/d3/ramsn -add wave -noupdate -format Literal /testbench/d3/ramoen -add wave -noupdate -format Literal /testbench/d3/rwen -add wave -noupdate -format Literal /testbench/d3/rben -add wave -noupdate -format Literal /testbench/d3/romsn -add wave -noupdate -format Logic /testbench/d3/iosn -add wave -noupdate -format Logic /testbench/d3/oen -add wave -noupdate -format Logic /testbench/d3/read -add wave -noupdate -format Logic /testbench/d3/writen -add wave -noupdate -format Literal /testbench/d3/sdcke -add wave -noupdate -format Literal /testbench/d3/sdcsn -add wave -noupdate -format Logic /testbench/d3/sdwen -add wave -noupdate -format Logic /testbench/d3/sdrasn -add wave -noupdate -format Logic /testbench/d3/sdcasn -add wave -noupdate -format Literal /testbench/d3/sddqm -add wave -noupdate -format Literal /testbench/d3/sdclk -add wave -noupdate -format Literal /testbench/d3/sdba -add wave -noupdate -format Logic /testbench/d3/dsuen -add wave -noupdate -format Logic /testbench/d3/dsutx -add wave -noupdate -format Logic /testbench/d3/dsurx -add wave -noupdate -format Logic /testbench/d3/dsubren -add wave -noupdate -format Logic /testbench/d3/dsuactn -add wave -noupdate -format Logic /testbench/d3/rxd1 -add wave -noupdate -format Logic /testbench/d3/txd1 -add wave -noupdate -format Logic /testbench/d3/emdio -add wave -noupdate -format Logic /testbench/d3/etx_clk -add wave -noupdate -format Logic /testbench/d3/erx_clk -add wave -noupdate -format Literal /testbench/d3/erxd -add wave -noupdate -format Logic /testbench/d3/erx_dv -add wave -noupdate -format Logic /testbench/d3/erx_er -add wave -noupdate -format Logic /testbench/d3/erx_col -add wave -noupdate -format Logic /testbench/d3/erx_crs -add wave -noupdate -format Literal /testbench/d3/etxd -add wave -noupdate -format Logic /testbench/d3/etx_en -add wave -noupdate -format Logic /testbench/d3/etx_er -add wave -noupdate -format Logic /testbench/d3/emdc -add wave -noupdate -format Logic /testbench/d3/emddis -add wave -noupdate -format Logic /testbench/d3/epwrdwn -add wave -noupdate -format Logic /testbench/d3/ereset -add wave -noupdate -format Logic /testbench/d3/esleep -add wave -noupdate -format Logic /testbench/d3/epause -add wave -noupdate -format Literal /testbench/d3/vcc -add wave -noupdate -format Literal /testbench/d3/gnd -add wave -noupdate -format Literal /testbench/d3/memi -add wave -noupdate -format Literal /testbench/d3/memo -add wave -noupdate -format Literal /testbench/d3/wpo -add wave -noupdate -format Literal /testbench/d3/sdi -add wave -noupdate -format Literal /testbench/d3/sdo -add wave -noupdate -format Literal /testbench/d3/sdo2 -add wave -noupdate -format Literal /testbench/d3/sdo3 -add wave -noupdate -format Literal /testbench/d3/apbi -add wave -noupdate -format Literal /testbench/d3/apbo -add wave -noupdate -format Literal /testbench/d3/ahbsi -add wave -noupdate -format Literal /testbench/d3/ahbso -add wave -noupdate -format Literal /testbench/d3/ahbmi -add wave -noupdate -format Literal /testbench/d3/ahbmo -add wave -noupdate -format Logic /testbench/d3/clkm -add wave -noupdate -format Logic /testbench/d3/rstn -add wave -noupdate -format Logic /testbench/d3/sdclkl -add wave -noupdate -format Literal /testbench/d3/cgi -add wave -noupdate -format Literal /testbench/d3/cgo -add wave -noupdate -format Literal /testbench/d3/u1i -add wave -noupdate -format Literal /testbench/d3/dui -add wave -noupdate -format Literal /testbench/d3/u1o -add wave -noupdate -format Literal /testbench/d3/duo -add wave -noupdate -format Literal /testbench/d3/irqi -add wave -noupdate -format Literal /testbench/d3/irqo -add wave -noupdate -format Literal /testbench/d3/dbgi -add wave -noupdate -format Literal /testbench/d3/dbgo -add wave -noupdate -format Literal /testbench/d3/dsui -add wave -noupdate -format Literal /testbench/d3/dsuo -add wave -noupdate -format Literal /testbench/d3/ethi -add wave -noupdate -format Literal /testbench/d3/ethi1 -add wave -noupdate -format Literal /testbench/d3/ethi2 -add wave -noupdate -format Literal /testbench/d3/etho -add wave -noupdate -format Literal /testbench/d3/etho1 -add wave -noupdate -format Literal /testbench/d3/etho2 -add wave -noupdate -format Literal /testbench/d3/gpti -add wave -noupdate -format Literal /testbench/d3/sa -add wave -noupdate -format Literal /testbench/d3/sd -add wave -noupdate -format Literal /testbench/d3/edcli -add wave -noupdate -format Logic /testbench/d3/dsubre -add wave -noupdate -format Logic /testbench/d3/dsuact -add wave -noupdate -format Logic /testbench/d3/oen_ctrl -add wave -noupdate -format Logic /testbench/d3/sdram_selected -add wave -noupdate -format Literal /testbench/d3/s_ramsn -add wave -noupdate -format Literal /testbench/d3/s_sddqm -TreeUpdate [SetDefaultTree] -WaveRestoreCursors {{Cursor 1} {3465000 ps} 0} -configure wave -namecolwidth 150 -configure wave -valuecolwidth 100 -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 0 -update -WaveRestoreZoom {2172976 ps} {4757024 ps} diff --git a/designs/leon3-ge-hpe-mini/Makefile b/designs/leon3-ge-hpe-mini/Makefile deleted file mode 100644 index 2491e382..00000000 --- a/designs/leon3-ge-hpe-mini/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -GRLIB=../.. -TOP=leon3mini -BOARD=ge-hpe-mini -include $(GRLIB)/boards/$(BOARD)/Makefile.inc -DEVICE=$(PART)-$(PACKAGE)$(SPEED) -UCF=$(GRLIB)/boards/$(BOARD)/$(TOP).ucf -QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf -EFFORT=1 -XSTOPT= -VHDLSYNFILES=config.vhd ahbrom.vhd leon3mini.vhd -VHDLSIMFILES=testbench.vhd -SIMTOP=testbench -SDCFILE=$(GRLIB)/boards/$(BOARD)/default.sdc -BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut -CLEAN=soft-clean - -# Select your cable type here. -# Make sure it has been installed via the programmer GUI -# in Quartus. -# -# Examples: -# USB-Blaster -# ByteBlasterMV -CABLE=ByteBlasterMV - -TECHLIBS = altera altera_mf -LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp stratixii usbhc spw -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest ddr \ - grusbhc spacewire leon4 leon4b64 l2cache slink ascs pwm haps coremp7 gr1553b iommu \ - usb - - -INCLUDEFILES=$(VPATH)/hpi_functions.c - -include $(GRLIB)/bin/Makefile -include $(GRLIB)/software/leon3/Makefile - - -################## project specific targets ########################## - -quartus-pgm: - quartus_pgm -c $(CABLE) -m JTAG -o p\;$(TOP).sof - -hpi_new.exe: hpi_new.c - $(XCC) $(CFLAGS) $(INCLUDEFILES) $< -o hpi_new.exe - -hello.exe: hello.c - $(XCC) $(CFLAGS) $< -o hello.exe - diff --git a/designs/leon3-ge-hpe-mini/README.txt b/designs/leon3-ge-hpe-mini/README.txt deleted file mode 100644 index 0f76c451..00000000 --- a/designs/leon3-ge-hpe-mini/README.txt +++ /dev/null @@ -1,57 +0,0 @@ - -This leon3 design is tailored to the HPE_mini board from -Gleichmann Electronics: - -http://www.ger-fae.com/Hpe_mini_ac2.html - -The default configuration (and pre-compiled bit files) contains -a leon3 configuration with SDRAM controller and Ethernet DSU. -The IP address for the ethernet DSU is 192.168.0.68 . The -'info sys' command in grmon returns the following report: - -grlib> inf sys -00.01:003 Gaisler Research LEON3 SPARC V8 Processor (ver 0) - ahb master 0 -01.01:007 Gaisler Research AHB Debug UART (ver 0) - ahb master 1 - apb: 80000700 - 80000800 - baud rate 115200, ahb frequency 25.00 -02.01:01d Gaisler Research GR Ethernet MAC (ver 0) - ahb master 2, irq 12 - apb: 80000f00 - 80001000 - edcl ip 192.168.0.68, buffer 2 kbyte -00.04:00f European Space Agency LEON2 Memory Controller (ver 1) - ahb: 00000000 - 20000000 - ahb: 20000000 - 40000000 - ahb: 40000000 - 80000000 - apb: 80000000 - 80000100 - 32-bit prom @ 0x00000000 - 32-bit sdram: 1 * 128 Mbyte @ 0x40000000, col 10, cas 2, ref 7.7 us -01.01:006 Gaisler Research AHB/APB Bridge (ver 0) - ahb: 80000000 - 80100000 -02.01:004 Gaisler Research LEON3 Debug Support Unit (ver 1) - ahb: 90000000 - a0000000 - AHB trace 64 lines, stack pointer 0x47fffff0 - CPU#0 win 8, itrace 64, V8 mul/div, srmmu, lddel 1 - icache 1 * 4 kbyte, 32 byte/line - dcache 1 * 4 kbyte, 32 byte/line -04.10:003 Gleichmann Electronics Sigma delta DAC (ver 0) - ahb: fff01000 - fff01100 -07.10:004 Gleichmann Electronics Unknown device (ver 1) - irq 5 - ahb: fff24000 - fff24100 - ahb: fff34000 - fff34100 -01.01:00c Gaisler Research Generic APB UART (ver 1) - irq 2 - apb: 80000100 - 80000200 - baud rate 38400, DSU mode -02.01:00d Gaisler Research Multi-processor Interrupt Ctrl (ver 3) - apb: 80000200 - 80000300 -03.01:011 Gaisler Research Modular Timer Unit (ver 0) - irq 8 - apb: 80000300 - 80000400 - 8-bit scaler, 2 * 32-bit timers, divisor 25 -05.01:061 Gaisler Research Text-based video controller (ver 0) - apb: 80000600 - 80000700 - - diff --git a/designs/leon3-ge-hpe-mini/ahbrom.vhd b/designs/leon3-ge-hpe-mini/ahbrom.vhd deleted file mode 100644 index a61a155a..00000000 --- a/designs/leon3-ge-hpe-mini/ahbrom.vhd +++ /dev/null @@ -1,172 +0,0 @@ - ----------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2004 GAISLER RESEARCH --- --- 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. --- --- See the file COPYING for the full details of the license. --- ------------------------------------------------------------------------------ --- Entity: ahbrom --- File: ahbrom.vhd --- Author: Jiri Gaisler - Gaisler Research --- Description: AHB rom. 0/1-waitstate read ------------------------------------------------------------------------------- -library ieee; -use ieee.std_logic_1164.all; -library grlib; -use grlib.amba.all; -use grlib.stdlib.all; -use grlib.devices.all; - -entity ahbrom is - generic ( - hindex : integer := 0; - haddr : integer := 0; - hmask : integer := 16#fff#; - pipe : integer := 0; - tech : integer := 0; - kbytes : integer := 1); - port ( - rst : in std_ulogic; - clk : in std_ulogic; - ahbsi : in ahb_slv_in_type; - ahbso : out ahb_slv_out_type - ); -end; - -architecture rtl of ahbrom is -constant abits : integer := 9; -constant bytes : integer := 288; - -constant hconfig : ahb_config_type := ( - 0 => ahb_device_reg ( VENDOR_GAISLER, GAISLER_AHBROM, 0, 0, 0), - 4 => ahb_membar(haddr, '1', '1', hmask), others => zero32); - -signal romdata : std_logic_vector(31 downto 0); -signal addr : std_logic_vector(abits-1 downto 2); -signal hsel, hready : std_ulogic; - -begin - - ahbso.hresp <= "00"; - ahbso.hsplit <= (others => '0'); - ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; - ahbso.hconfig <= hconfig; - ahbso.hindex <= hindex; - - reg : process (clk) - begin - if rising_edge(clk) then - addr <= ahbsi.haddr(abits-1 downto 2); - end if; - end process; - - p0 : if pipe = 0 generate - ahbso.hrdata <= ahbdrivedata(romdata); - ahbso.hready <= '1'; - end generate; - - p1 : if pipe = 1 generate - reg2 : process (clk) - begin - if rising_edge(clk) then - hsel <= ahbsi.hsel(hindex) and ahbsi.htrans(1); - hready <= ahbsi.hready; - ahbso.hready <= (not rst) or (hsel and hready) or - (ahbsi.hsel(hindex) and not ahbsi.htrans(1) and ahbsi.hready); - ahbso.hrdata <= ahbdrivedata(romdata); - end if; - end process; - end generate; - - comb : process (addr) - begin - case conv_integer(addr) is - when 16#00000# => romdata <= X"81D82000"; - when 16#00001# => romdata <= X"03000004"; - when 16#00002# => romdata <= X"821060C0"; - when 16#00003# => romdata <= X"81884000"; - when 16#00004# => romdata <= X"81900000"; - when 16#00005# => romdata <= X"81980000"; - when 16#00006# => romdata <= X"81800000"; - when 16#00007# => romdata <= X"01000000"; - when 16#00008# => romdata <= X"03000040"; - when 16#00009# => romdata <= X"8210600F"; - when 16#0000A# => romdata <= X"C2A00040"; - when 16#0000B# => romdata <= X"87444000"; - when 16#0000C# => romdata <= X"8608E01F"; - when 16#0000D# => romdata <= X"88100000"; - when 16#0000E# => romdata <= X"8A100000"; - when 16#0000F# => romdata <= X"8C100000"; - when 16#00010# => romdata <= X"8E100000"; - when 16#00011# => romdata <= X"A0100000"; - when 16#00012# => romdata <= X"A2100000"; - when 16#00013# => romdata <= X"A4100000"; - when 16#00014# => romdata <= X"A6100000"; - when 16#00015# => romdata <= X"A8100000"; - when 16#00016# => romdata <= X"AA100000"; - when 16#00017# => romdata <= X"AC100000"; - when 16#00018# => romdata <= X"AE100000"; - when 16#00019# => romdata <= X"90100000"; - when 16#0001A# => romdata <= X"92100000"; - when 16#0001B# => romdata <= X"94100000"; - when 16#0001C# => romdata <= X"96100000"; - when 16#0001D# => romdata <= X"98100000"; - when 16#0001E# => romdata <= X"9A100000"; - when 16#0001F# => romdata <= X"9C100000"; - when 16#00020# => romdata <= X"9E100000"; - when 16#00021# => romdata <= X"86A0E001"; - when 16#00022# => romdata <= X"16BFFFEF"; - when 16#00023# => romdata <= X"81E00000"; - when 16#00024# => romdata <= X"82102002"; - when 16#00025# => romdata <= X"81904000"; - when 16#00026# => romdata <= X"03000004"; - when 16#00027# => romdata <= X"821060E0"; - when 16#00028# => romdata <= X"81884000"; - when 16#00029# => romdata <= X"01000000"; - when 16#0002A# => romdata <= X"01000000"; - when 16#0002B# => romdata <= X"01000000"; - when 16#0002C# => romdata <= X"03200000"; - when 16#0002D# => romdata <= X"84102233"; - when 16#0002E# => romdata <= X"C4204000"; - when 16#0002F# => romdata <= X"0539AE13"; - when 16#00030# => romdata <= X"8410A260"; - when 16#00031# => romdata <= X"C4206004"; - when 16#00032# => romdata <= X"050003FC"; - when 16#00033# => romdata <= X"C4206008"; - when 16#00034# => romdata <= X"3D1003FF"; - when 16#00035# => romdata <= X"BC17A3E0"; - when 16#00036# => romdata <= X"9C27A060"; - when 16#00037# => romdata <= X"03100000"; - when 16#00038# => romdata <= X"81C04000"; - when 16#00039# => romdata <= X"01000000"; - when 16#0003A# => romdata <= X"01000000"; - when 16#0003B# => romdata <= X"01000000"; - when 16#0003C# => romdata <= X"01000000"; - when 16#0003D# => romdata <= X"01000000"; - when 16#0003E# => romdata <= X"01000000"; - when 16#0003F# => romdata <= X"01000000"; - when 16#00040# => romdata <= X"00000004"; - when 16#00041# => romdata <= X"00000000"; - when 16#00042# => romdata <= X"00000004"; - when 16#00043# => romdata <= X"00000000"; - when 16#00044# => romdata <= X"FFFFFFFC"; - when 16#00045# => romdata <= X"00000000"; - when 16#00046# => romdata <= X"FFFFFFFC"; - when 16#00047# => romdata <= X"00000000"; - when 16#00048# => romdata <= X"00000000"; - when others => romdata <= (others => '-'); - end case; - end process; - -- pragma translate_off - bootmsg : report_version - generic map ("ahbrom" & tost(hindex) & - ": 32-bit AHB ROM Module, " & tost(bytes/4) & " words, " & tost(abits-2) & " address bits" ); - -- pragma translate_on - end; diff --git a/designs/leon3-ge-hpe-mini/config.vhd.in b/designs/leon3-ge-hpe-mini/config.vhd.in deleted file mode 100644 index cc47535a..00000000 --- a/designs/leon3-ge-hpe-mini/config.vhd.in +++ /dev/null @@ -1,57 +0,0 @@ -#include "config.h" -#include "tkconfig.h" -#include "leon3mini.h" - ------------------------------------------------------------------------------ --- LEON3 Demonstration design test bench configuration --- Copyright (C) 2009 Aeroflex Gaisler ------------------------------------------------------------------------------- - - -library techmap; -use techmap.gencomp.all; - -package config is - - ----------------------------------------------------------------------------- - -- GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- - - -- boot prom source - -- 0: external - -- 1: internal - constant CFG_BOOTOPT : integer := CONFIG_BOOTOPT; - - -- HPE board version - -- 1: version 1 - -- /= 1: version 2 - constant CFG_HPEVER : integer := CONFIG_HPEVER; - - -- provide ahb signals for an external slave - -- slave number can be defined below - -- numbers 8 to 15 can be used safely, numbers below - -- might be used by other LEON cores depending on configuration - constant CFG_EXTAHB : integer := CONFIG_EXTAHB_ENABLE; - --- constant CFG_EXTAHB_ADDR : integer := 16#CONFIG_EXTAHB_BASE#; - - -- interrupt number the external slave is assigned to - -- unused at the moment - constant CFG_EXTAHB_IRQ : integer := CONFIG_EXTAHB_INT; - - -- AHB slave number the external slave is assigned to - constant CFG_EXTAHB_NR : integer := 8; - - -- index number the external slave is assigned to - constant CFG_EXTAHB_ID : integer := 8; - - -- shift sdram address to bits 12+ - constant CFG_SDSHIFT : integer := CONFIG_SDRAM_SHIFT; - - ----------------------------------------------------------------------------- - -- END GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- - -#include "config.vhd.h" - -end; diff --git a/designs/leon3-ge-hpe-mini/defconfig b/designs/leon3-ge-hpe-mini/defconfig deleted file mode 100755 index 79a59abf..00000000 --- a/designs/leon3-ge-hpe-mini/defconfig +++ /dev/null @@ -1,239 +0,0 @@ -# -# Automatically generated make config: don't edit -# - -# -# Synthesis -# -# CONFIG_SYN_INFERRED is not set -CONFIG_SYN_ALTERA=y -# CONFIG_SYN_AXCEL is not set -# CONFIG_SYN_PROASIC is not set -# CONFIG_SYN_PROASICPLUS is not set -# CONFIG_SYN_PROASIC3 is not set -# CONFIG_SYN_ATC18 is not set -# CONFIG_SYN_IHP25 is not set -# CONFIG_SYN_LATTICE is not set -# CONFIG_SYN_RH_LIB18T is not set -# CONFIG_SYN_RHUMC is not set -# CONFIG_SYN_SPARTAN2 is not set -# CONFIG_SYN_SPARTAN3 is not set -# CONFIG_SYN_VIRTEX is not set -# CONFIG_SYN_VIRTEXE is not set -# CONFIG_SYN_VIRTEX2 is not set -# CONFIG_SYN_VIRTEX4 is not set -# CONFIG_SYN_INFER_RAM is not set -CONFIG_SYN_INFER_PADS=y -# CONFIG_SYN_NO_ASYNC is not set - -# -# Clock generation -# -# CONFIG_CLK_INFERRED is not set -# CONFIG_CLK_HCLKBUF is not set -CONFIG_CLK_ALTDLL=y -# CONFIG_CLK_LATDLL is not set -# CONFIG_CLK_LIB18T is not set -# CONFIG_CLK_CLKDLL is not set -# CONFIG_CLK_DCM is not set -CONFIG_CLK_MUL=2 -CONFIG_CLK_DIV=2 -# CONFIG_PCI_SYSCLK is not set -CONFIG_PROC_NUM=1 - -# -# Processor -# - -# -# Integer unit -# -CONFIG_IU_NWINDOWS=8 -CONFIG_IU_V8MULDIV=y -# CONFIG_IU_MUL_LATENCY_4 is not set -CONFIG_IU_MUL_LATENCY_5=y -# CONFIG_IU_MUL_MAC is not set -# CONFIG_IU_SVT is not set -CONFIG_IU_LDELAY=1 -CONFIG_IU_WATCHPOINTS=0 -# CONFIG_PWD is not set -CONFIG_IU_RSTADDR=00000 - -# -# Floating-point unit -# -# CONFIG_FPU_ENABLE is not set - -# -# Cache system -# -CONFIG_ICACHE_ENABLE=y -CONFIG_ICACHE_ASSO1=y -# CONFIG_ICACHE_ASSO2 is not set -# CONFIG_ICACHE_ASSO3 is not set -# CONFIG_ICACHE_ASSO4 is not set -# CONFIG_ICACHE_SZ1 is not set -# CONFIG_ICACHE_SZ2 is not set -CONFIG_ICACHE_SZ4=y -# CONFIG_ICACHE_SZ8 is not set -# CONFIG_ICACHE_SZ16 is not set -# CONFIG_ICACHE_SZ32 is not set -# CONFIG_ICACHE_SZ64 is not set -# CONFIG_ICACHE_SZ128 is not set -# CONFIG_ICACHE_SZ256 is not set -# CONFIG_ICACHE_LZ16 is not set -CONFIG_ICACHE_LZ32=y -CONFIG_DCACHE_ENABLE=y -CONFIG_DCACHE_ASSO1=y -# CONFIG_DCACHE_ASSO2 is not set -# CONFIG_DCACHE_ASSO3 is not set -# CONFIG_DCACHE_ASSO4 is not set -# CONFIG_DCACHE_SZ1 is not set -# CONFIG_DCACHE_SZ2 is not set -CONFIG_DCACHE_SZ4=y -# CONFIG_DCACHE_SZ8 is not set -# CONFIG_DCACHE_SZ16 is not set -# CONFIG_DCACHE_SZ32 is not set -# CONFIG_DCACHE_SZ64 is not set -# CONFIG_DCACHE_SZ128 is not set -# CONFIG_DCACHE_SZ256 is not set -# CONFIG_DCACHE_LZ16 is not set -CONFIG_DCACHE_LZ32=y -CONFIG_DCACHE_SNOOP=y -# CONFIG_DCACHE_SNOOP_FAST is not set -CONFIG_CACHE_FIXED=0 - -# -# MMU -# -CONFIG_MMU_ENABLE=y -CONFIG_MMU_COMBINED=y -# CONFIG_MMU_SPLIT is not set -# CONFIG_MMU_REPARRAY is not set -CONFIG_MMU_REPINCREMENT=y -# CONFIG_MMU_I2 is not set -# CONFIG_MMU_I4 is not set -CONFIG_MMU_I8=y -# CONFIG_MMU_I16 is not set -# CONFIG_MMU_I32 is not set - -# -# Debug Support Unit -# -CONFIG_DSU_ENABLE=y -CONFIG_DSU_ITRACE=y -CONFIG_DSU_ITRACESZ1=y -# CONFIG_DSU_ITRACESZ2 is not set -# CONFIG_DSU_ITRACESZ4 is not set -# CONFIG_DSU_ITRACESZ8 is not set -# CONFIG_DSU_ITRACESZ16 is not set -CONFIG_DSU_ATRACE=y -CONFIG_DSU_ATRACESZ1=y -# CONFIG_DSU_ATRACESZ2 is not set -# CONFIG_DSU_ATRACESZ4 is not set -# CONFIG_DSU_ATRACESZ8 is not set -# CONFIG_DSU_ATRACESZ16 is not set - -# -# VHDL debug settings -# -# CONFIG_IU_DISAS is not set -# CONFIG_DEBUG_PC32 is not set - -# -# AMBA configuration -# -CONFIG_AHB_DEFMST=0 -CONFIG_AHB_RROBIN=y -# CONFIG_AHB_SPLIT is not set -CONFIG_AHB_IOADDR=FFF -CONFIG_APB_HADDR=800 - -# -# Debug Link -# -CONFIG_DSU_UART=y -CONFIG_DSU_ETH=y -# CONFIG_DSU_ETHSZ1 is not set -CONFIG_DSU_ETHSZ2=y -# CONFIG_DSU_ETHSZ4 is not set -# CONFIG_DSU_ETHSZ8 is not set -# CONFIG_DSU_ETHSZ16 is not set -CONFIG_DSU_IPMSB=C0A8 -CONFIG_DSU_IPLSB=0044 -CONFIG_DSU_ETHMSB=00007A -CONFIG_DSU_ETHLSB=CC0044 - -# -# Peripherals -# - -# -# Memory controllers -# - -# -# 8/32-bit PROM/SRAM controller -# -# CONFIG_SRCTRL is not set - -# -# Leon2 memory controller -# -CONFIG_MCTRL_LEON2=y -# CONFIG_MCTRL_8BIT is not set -# CONFIG_MCTRL_16BIT is not set -# CONFIG_MCTRL_5CS is not set -CONFIG_MCTRL_SDRAM=y -# CONFIG_MCTRL_SDRAM_SEPBUS is not set - -# -# On-chip RAM/ROM -# -# CONFIG_AHBROM_ENABLE is not set -# CONFIG_AHBRAM_ENABLE is not set - -# -# Ethernet -# -CONFIG_GRETH_ENABLE=y -# CONFIG_GRETH_FIFO4 is not set -# CONFIG_GRETH_FIFO8 is not set -# CONFIG_GRETH_FIFO16 is not set -# CONFIG_GRETH_FIFO32 is not set -CONFIG_GRETH_FIFO64=y - -# -# UARTs, timers and irq control -# -CONFIG_UART1_ENABLE=y -CONFIG_UA1_FIFO1=y -# CONFIG_UA1_FIFO2 is not set -# CONFIG_UA1_FIFO4 is not set -# CONFIG_UA1_FIFO8 is not set -# CONFIG_UA1_FIFO16 is not set -# CONFIG_UA1_FIFO32 is not set -CONFIG_IRQ3_ENABLE=y -CONFIG_GPT_ENABLE=y -CONFIG_GPT_NTIM=2 -CONFIG_GPT_SW=8 -CONFIG_GPT_TW=32 -CONFIG_GPT_IRQ=8 -CONFIG_GPT_SEPIRQ=y -# CONFIG_GPT_WDOGEN is not set - -# -# ATA Controller -# -# CONFIG_ATA_ENABLE is not set - -# -# Keybord and VGA interface -# -CONFIG_KBD_ENABLE=y -CONFIG_VGA_ENABLE=y - -# -# VHDL Debugging -# -CONFIG_DEBUG_UART=y diff --git a/designs/leon3-ge-hpe-mini/leon3mini.h b/designs/leon3-ge-hpe-mini/leon3mini.h deleted file mode 100644 index 60343996..00000000 --- a/designs/leon3-ge-hpe-mini/leon3mini.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef CONFIG_EXTAHB_ENABLE -#define CONFIG_EXTAHB_ENABLE 0 -#define CONFIG_EXTAHB_BASE A00 -#define CONFIG_EXTAHB_INT 6 -#endif - -#ifndef CONFIG_SDRAM_SHIFT -#define CONFIG_SDRAM_SHIFT 0 -#endif - -#ifdef CONFIG_BOOTOPT_INT -#define CONFIG_BOOTOPT 1 -#else -#define CONFIG_BOOTOPT 0 -#endif - -#ifdef CONFIG_HPEVER_1 -#define CONFIG_HPEVER 1 -#else -#define CONFIG_HPEVER 2 -#endif - diff --git a/designs/leon3-ge-hpe-mini/leon3mini.vhd b/designs/leon3-ge-hpe-mini/leon3mini.vhd deleted file mode 100644 index 89142c84..00000000 --- a/designs/leon3-ge-hpe-mini/leon3mini.vhd +++ /dev/null @@ -1,717 +0,0 @@ ------------------------------------------------------------------------------- --- LEON3 Demonstration design --- Copyright (C) 2004 Jiri Gaisler, Gaisler Research --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------- --- modified by Thomas Ameseder, Gleichmann Electronics 2004, 2005 to --- support the use of an external AHB slave and different HPE board versions ------------------------------------------------------------------------------- --- further adapted from Hpe_compact to Hpe_mini (Feb. 2005) ------------------------------------------------------------------------------- - - -library ieee; -use ieee.std_logic_1164.all; -library grlib; -use grlib.amba.all; -use grlib.stdlib.all; -use grlib.devices.all; -library techmap; -use techmap.gencomp.all; -library gaisler; -use gaisler.memctrl.all; -use gaisler.leon3.all; -use gaisler.uart.all; -use gaisler.misc.all; -use gaisler.net.all; -use gaisler.ata.all; -use gaisler.jtag.all; -library esa; -use esa.memoryctrl.all; -library gleichmann; -use gleichmann.hpi.all; -use gleichmann.dac.all; - -use work.config.all; - - -entity leon3mini is - generic ( - fabtech : integer := CFG_FABTECH; - memtech : integer := CFG_MEMTECH; - padtech : integer := CFG_PADTECH; - clktech : integer := CFG_CLKTECH; - disas : integer := CFG_DISAS; -- Enable disassembly to console - dbguart : integer := CFG_DUART; -- Print UART on console - pclow : integer := CFG_PCLOW; - freq : integer := 25000 -- frequency of main clock (used for PLLs) - ); - port ( - resetn : in std_ulogic; - resoutn : out std_logic; - clk : in std_ulogic; - - errorn : out std_ulogic; - address : out std_logic_vector(15 downto 2); - data : inout std_logic_vector(31 downto 0); - --- pragma translate_off - ramsn : out std_logic_vector (4 downto 0); - ramoen : out std_logic_vector (4 downto 0); - rben : out std_logic_vector(3 downto 0); - rwen : out std_logic_vector(3 downto 0); - - romsn : out std_logic_vector (1 downto 0); - iosn : out std_ulogic; - oen : out std_ulogic; - read : out std_ulogic; - writen : out std_ulogic; --- pragma translate_on - - sdcke : out std_logic_vector (1 downto 0); -- sdram clock enable - sdcsn : out std_logic_vector (1 downto 0); -- sdram chip select - sdwen : out std_ulogic; -- sdram write enable - sdrasn : out std_ulogic; -- sdram ras - sdcasn : out std_ulogic; -- sdram cas - sddqm : out std_logic_vector (3 downto 0); -- sdram dqm - sdclk : out std_ulogic; - sdba : out std_logic_vector(1 downto 0); -- sdram bank address - - -- debug support unit - dsuen : in std_ulogic; - dsubre : in std_ulogic; - dsuactn : out std_ulogic; - - -- UART for serial DCL/console I/O - serrx : in std_ulogic; - sertx : out std_ulogic; - sersrcsel : in std_ulogic; - --- dsutx : out std_ulogic; -- DSU tx data --- dsurx : in std_ulogic; -- DSU rx data --- rxd1 : in std_ulogic; --- txd1 : out std_ulogic; --- gpio : inout std_logic_vector(7 downto 0); -- I/O port, unused at the moment - - -- ethernet signals - emdio : inout std_logic; -- ethernet PHY interface - etx_clk : in std_ulogic; - erx_clk : in std_ulogic; - erxd : in std_logic_vector(3 downto 0); - erx_dv : in std_ulogic; - erx_er : in std_ulogic; - erx_col : in std_ulogic; - erx_crs : in std_ulogic; - etxd : out std_logic_vector(3 downto 0); - etx_en : out std_ulogic; - etx_er : out std_ulogic; - emdc : out std_ulogic; - - ata_rst : out std_logic; - ata_data : inout std_logic_vector(15 downto 0); - ata_da : out std_logic_vector(2 downto 0); - ata_cs0 : out std_logic; - ata_cs1 : out std_logic; - ata_dior : out std_logic; - ata_diow : out std_logic; - ata_iordy : in std_logic; - ata_intrq : in std_logic; - ata_dmack : out std_logic; - - sample_clock : out std_ulogic; - -------------------------------------------------------------------------------- --- HPI PORT -------------------------------------------------------------------------------- - hpiaddr : out std_logic_vector(1 downto 0); - hpidata : inout std_logic_vector(15 downto 0); - hpicsn : out std_ulogic; - hpiwrn : out std_ulogic; - hpirdn : out std_ulogic; - hpiint : in std_ulogic; - - -- equality flag for R/W data - dbg_equal : out std_ulogic; -------------------------------------------------------------------------------- - - - dac : out std_ulogic; - vga_vsync : out std_ulogic; - vga_hsync : out std_ulogic; - vga_rd : out std_logic_vector(1 downto 0); - vga_gr : out std_logic_vector(1 downto 0); - vga_bl : out std_logic_vector(1 downto 0) - - ); -end; - -architecture rtl of leon3mini is - - constant blength : integer := 12; - constant fifodepth : integer := 8; - - signal vcc, gnd : std_logic_vector(4 downto 0); - signal memi : memory_in_type; - signal memo : memory_out_type; - signal wpo : wprot_out_type; - signal sdi : sdctrl_in_type; - signal sdo : sdram_out_type; - signal sdo2, sdo3 : sdctrl_out_type; - - signal apbi : apb_slv_in_type; - signal apbo : apb_slv_out_vector := (others => apb_none); - signal ahbsi : ahb_slv_in_type; - signal ahbso : ahb_slv_out_vector := (others => ahbs_none); - signal ahbmi : ahb_mst_in_type; - signal ahbmo : ahb_mst_out_vector := (others => ahbm_none); - - signal clkm, rstn, sdclkl : std_ulogic; - signal cgi : clkgen_in_type; - signal cgo : clkgen_out_type; - signal u1i, dui : uart_in_type; - signal u1o, duo : uart_out_type; - - signal irqi : irq_in_vector(0 to CFG_NCPU-1); - signal irqo : irq_out_vector(0 to CFG_NCPU-1); - - signal dbgi : l3_debug_in_vector(0 to CFG_NCPU-1); - signal dbgo : l3_debug_out_vector(0 to CFG_NCPU-1); - - signal dsui : dsu_in_type; - signal dsuo : dsu_out_type; - - signal ethi, ethi1, ethi2 : eth_in_type; - signal etho, etho1, etho2 : eth_out_type; - - signal atai : ata_in_type; - signal atao : ata_out_type; - - signal gpti : gptimer_in_type; - - signal sa : std_logic_vector(14 downto 0); -- ? - signal sd : std_logic_vector(63 downto 0); -- ? - - signal emddis : std_ulogic; - signal ereset : std_ulogic; - - signal epwrdwn : std_ulogic; - signal esleep : std_ulogic; - signal epause : std_ulogic; - - signal tck, tms, tdi, tdo : std_ulogic; - --- Adaptions for HPE Compact - - signal dsuact : std_logic; - signal oen_ctrl : std_logic; - signal sdram_selected : std_logic; - - signal shortcut : std_logic; - signal rx : std_logic; - signal tx : std_logic; - - signal rxd1 : std_logic; - signal txd1 : std_logic; - signal dsutx : std_ulogic; -- DSU tx data - signal dsurx : std_ulogic; -- DSU rx data - - --------------------------------------------------------------------------------------- - -- HPI SIGNALS - --------------------------------------------------------------------------------------- --- signal hpiaddr : std_logic_vector(1 downto 0); --- signal hpidata : std_logic_vector(15 downto 0); --- signal hpicsn : std_ulogic; --- signal hpiwrn : std_ulogic; --- signal hpirdn : std_ulogic; --- signal hpiint : std_ulogic; - - signal hpiwriten : std_ulogic; -- intermediate signal - signal hpirdata : std_logic_vector(15 downto 0); - signal hpiwdata : std_logic_vector(15 downto 0); - signal drive_bus : std_ulogic; - - signal dbg_rdata : std_logic_vector(15 downto 0); - signal dbg_wdata : std_logic_vector(15 downto 0); - --------------------------------------------------------------------------------------- - - signal vgao : apbvga_out_type; - signal video_clk : std_logic; - signal clk_sel : std_logic_vector(1 downto 0); - - constant BOARD_FREQ : integer := freq; -- input frequency in KHz - constant CPU_FREQ : integer := BOARD_FREQ * CFG_CLKMUL / CFG_CLKDIV; -- cpu frequency in KHz -begin - ----------------------------------------------------------------------- ---- Reset and Clock generation ------------------------------------- ----------------------------------------------------------------------- - - vcc <= (others => '1'); gnd <= (others => '0'); - cgi.pllctrl <= "00"; cgi.pllrst <= not resetn; cgi.pllref <= clk; --'0'; --pllref; - - clkgen0 : clkgen -- clock generator using toplevel generic 'freq' - generic map (tech => CFG_CLKTECH, clk_mul => CFG_CLKMUL, - clk_div => CFG_CLKDIV, sdramen => CFG_MCTRL_SDEN, - noclkfb => CFG_CLK_NOFB, freq => freq) - port map (clkin => clk, pciclkin => gnd(0), clk => clkm, clkn => open, - clk2x => open, sdclk => sdclkl, pciclk => open, - cgi => cgi, cgo => cgo); - - rst0 : rstgen -- reset generator - port map (resetn, clkm, cgo.clklock, rstn); - ----------------------------------------------------------------------- ---- AHB CONTROLLER -------------------------------------------------- ----------------------------------------------------------------------- - - ahb0 : ahbctrl -- AHB arbiter/multiplexer - generic map (defmast => CFG_DEFMST, split => CFG_SPLIT, - rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO, - nahbm => 8, nahbs => 8) - port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso); - ----------------------------------------------------------------------- ---- LEON3 processor and DSU ----------------------------------------- ----------------------------------------------------------------------- - - l3 : if CFG_LEON3 = 1 generate - cpu : for i in 0 to CFG_NCPU-1 generate - u0 : leon3s -- LEON3 processor - generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, - 0, CFG_MAC, pclow, 0, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, - CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, - CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, - CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, - CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, - CFG_NCPU-1) - port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, - irqi(i), irqo(i), dbgi(i), dbgo(i)); - end generate; - errorn_pad : odpad generic map (tech => padtech) port map (errorn, dbgo(0).error); - - dsugen : if CFG_DSU = 1 generate - dsu0 : dsu3 -- LEON3 Debug Support Unit - generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#, - ncpu => CFG_NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ) - port map (rstn, clkm, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo); - dsuen_pad : inpad generic map (tech => padtech) port map (dsuen, dsui.enable); - -- **** tame: do not use inversion - dsubre_pad : inpad generic map (tech => padtech) port map (dsubre, dsui.break); - dsuact_pad : outpad generic map (tech => padtech) port map (dsuact, dsuo.active); - end generate; - end generate; - nodsu : if CFG_DSU = 0 generate - ahbso(2) <= ahbs_none; dsuo.tstop <= '0'; dsuo.active <= '0'; - end generate; - - dcomgen : if CFG_AHB_UART = 1 generate - dcom0 : ahbuart -- Debug UART - generic map (hindex => CFG_NCPU, pindex => 4, paddr => 7) - port map (rstn, clkm, dui, duo, apbi, apbo(4), ahbmi, ahbmo(CFG_NCPU)); - dsurx_pad : inpad generic map (tech => padtech) port map (dsurx, dui.rxd); - dsutx_pad : outpad generic map (tech => padtech) port map (dsutx, duo.txd); - end generate; - nouah : if CFG_AHB_UART = 0 generate apbo(4) <= apb_none; end generate; - - ahbjtaggen0 : if CFG_AHB_JTAG = 1 generate - ahbjtag0 : ahbjtag generic map(tech => fabtech, hindex => CFG_NCPU+CFG_AHB_UART) - port map(rstn, clkm, tck, tms, tdi, tdo, ahbmi, ahbmo(CFG_NCPU+CFG_AHB_UART), - open, open, open, open, open, open, open, gnd(0)); - end generate; - ----------------------------------------------------------------------- ---- Memory controllers ---------------------------------------------- ----------------------------------------------------------------------- - - mg2 : if CFG_MCTRL_LEON2 = 1 generate -- LEON2 memory controller - sr1 : mctrl generic map (hindex => 0, pindex => 0, - paddr => 0, fast => 0, srbanks => 1, sden => CFG_MCTRL_SDEN) - port map (rstn, clkm, memi, memo, ahbsi, ahbso(0), apbi, apbo(0), wpo, sdo); - sdpads : if CFG_MCTRL_SDEN = 1 generate -- SDRAM pads - sdwen_pad : outpad generic map (tech => padtech) - port map (sdwen, sdo.sdwen); - sdras_pad : outpad generic map (tech => padtech) - port map (sdrasn, sdo.rasn); - sdcas_pad : outpad generic map (tech => padtech) - port map (sdcasn, sdo.casn); - sddqm_pad : outpadv generic map (width => 4, tech => padtech) - port map (sddqm, sdo.dqm(3 downto 0)); - sdclk_pad : outpad generic map (tech => padtech, slew => 1) port map (sdclk, sdclkl); - sdcke_pad : outpadv generic map (width => 2, tech => padtech) - port map (sdcke, sdo.sdcke); - sdcsn_pad : outpadv generic map (width => 2, tech => padtech) - port map (sdcsn, sdo.sdcsn); - end generate; - addr_pad : outpadv generic map (width => 14, tech => padtech) - port map (address, memo.address(15 downto 2)); - bdr : for i in 0 to 3 generate - data_pad : iopadv generic map (tech => padtech, width => 8) - port map (data(31-i*8 downto 24-i*8), memo.data(31-i*8 downto 24-i*8), - memo.bdrive(i), memi.data(31-i*8 downto 24-i*8)); - end generate; - end generate; - - nosd0 : if (CFG_MCTRL_SDEN = 0) generate -- no SDRAM controller - sdclk_pad : outpad generic map (tech => padtech, slew => 1) port map (sdclk, sdclkl); - sdcke_pad : outpadv generic map (width => 2, tech => padtech) - port map (sdcke, sdo3.sdcke); - sdcsn_pad : outpadv generic map (width => 2, tech => padtech) - port map (sdcsn, sdo3.sdcsn); - end generate; - - memi.brdyn <= '1'; memi.bexcn <= '1'; - memi.writen <= '1'; memi.wrn <= "1111"; memi.bwidth <= "10"; - - --- pragma translate_off - mgpads : if CFG_MCTRL_LEON2 = 1 generate - rams_pad : outpadv generic map (width => 5, tech => padtech) - port map (ramsn, memo.ramsn(4 downto 0)); - roms_pad : outpadv generic map (width => 2, tech => padtech) - port map (romsn, memo.romsn(1 downto 0)); - oen_pad : outpad generic map (tech => padtech) - port map (oen, memo.oen); - rwen_pad : outpadv generic map (width => 4, tech => padtech) - port map (rwen, memo.wrn); - roen_pad : outpadv generic map (width => 5, tech => padtech) - port map (ramoen, memo.ramoen(4 downto 0)); - wri_pad : outpad generic map (tech => padtech) - port map (writen, memo.writen); - read_pad : outpad generic map (tech => padtech) - port map (read, memo.read); - iosn_pad : outpad generic map (tech => padtech) - port map (iosn, memo.iosn); - end generate; --- pragma translate_on - ----------------------------------------------------------------------- ---- APB Bridge and various periherals ------------------------------- ----------------------------------------------------------------------- - - apb0 : apbctrl -- AHB/APB bridge - generic map (hindex => 1, haddr => CFG_APBADDR) - port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo); - - ua1 : if CFG_UART1_ENABLE /= 0 generate - uart1 : apbuart -- UART 1 - generic map (pindex => 1, paddr => 1, pirq => 2, console => dbguart, - fifosize => CFG_UART1_FIFO) - port map (rstn, clkm, apbi, apbo(1), u1i, u1o); - u1i.rxd <= rxd1; u1i.ctsn <= '0'; u1i.extclk <= '0'; txd1 <= u1o.txd; - end generate; - noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate; - - irqctrl : if CFG_IRQ3_ENABLE /= 0 generate - irqctrl0 : irqmp -- interrupt controller - generic map (pindex => 2, paddr => 2, ncpu => CFG_NCPU) - port map (rstn, clkm, apbi, apbo(2), irqo, irqi); - end generate; - irq3 : if CFG_IRQ3_ENABLE = 0 generate - x : for i in 0 to CFG_NCPU-1 generate - irqi(i).irl <= "0000"; - end generate; - apbo(2) <= apb_none; - end generate; - - gpt : if CFG_GPT_ENABLE /= 0 generate - timer0 : gptimer -- timer unit - generic map (pindex => 3, paddr => 3, pirq => CFG_GPT_IRQ, - sepirq => CFG_GPT_SEPIRQ, sbits => CFG_GPT_SW, ntimers => CFG_GPT_NTIM, - nbits => CFG_GPT_TW) - port map (rstn, clkm, apbi, apbo(3), gpti, open); - gpti.dhalt <= dsuo.tstop; gpti.extclk <= '0'; - end generate; - notim : if CFG_GPT_ENABLE = 0 generate apbo(3) <= apb_none; end generate; - - vga : if CFG_VGA_ENABLE /= 0 generate - vga0 : apbvga generic map(memtech => memtech, pindex => 5, paddr => 6) - port map(rstn, clkm, clk, apbi, apbo(5), vgao); - end generate; - vert_sync_pad : outpad generic map (tech => padtech) - port map (vga_vsync, vgao.vsync); - horiz_sync_pad : outpad generic map (tech => padtech) - port map (vga_hsync, vgao.hsync); - video_out_r_pad : outpadv generic map (width => 2, tech => padtech) - port map (vga_rd, vgao.video_out_r(7 downto 6)); - video_out_g_pad : outpadv generic map (width => 2, tech => padtech) - port map (vga_gr, vgao.video_out_g(7 downto 6)); - video_out_b_pad : outpadv generic map (width => 2, tech => padtech) - port map (vga_bl, vgao.video_out_b(7 downto 6)); - - svga : if CFG_SVGA_ENABLE /= 0 generate - svga0 : svgactrl generic map(memtech => memtech, pindex => 6, paddr => 6, - hindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG, - clk0 => 40000, clk1 => 1000000000/((BOARD_FREQ * CFG_CLKMUL)/CFG_CLKDIV), - clk2 => 20000, clk3 => 15385, burstlen => 6) - port map(rstn, clkm, video_clk, apbi, apbo(6), vgao, ahbmi, - ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG), clk_sel); - video_clk <= clk when clk_sel = "00" else clkm; - end generate; - - novga : if CFG_VGA_ENABLE+CFG_SVGA_ENABLE = 0 generate - apbo(6) <= apb_none; vgao <= vgao_none; - end generate; - ------------------------------------------------------------------------ ---- ETHERNET --------------------------------------------------------- ------------------------------------------------------------------------ - - eth0 : if CFG_GRETH = 1 generate -- Gaisler ethernet MAC - e1 : greth generic map(hindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_SVGA_ENABLE, - pindex => 15, paddr => 15, pirq => 12, memtech => memtech, - mdcscaler => CPU_FREQ/1000, enable_mdio => 1, fifosize => CFG_ETH_FIFO, - nsync => 1, edcl => CFG_DSU_ETH, edclbufsz => CFG_ETH_BUF, - macaddrh => CFG_ETH_ENM, macaddrl => CFG_ETH_ENL, - ipaddrh => CFG_ETH_IPM, ipaddrl => CFG_ETH_IPL) - port map(rst => rstn, clk => clkm, ahbmi => ahbmi, - ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_SVGA_ENABLE), apbi => apbi, - apbo => apbo(15), ethi => ethi, etho => etho); - - emdio_pad : iopad generic map (tech => padtech) - port map (emdio, etho.mdio_o, etho.mdio_oe, ethi.mdio_i); - etxc_pad : inpad generic map (tech => padtech) - port map (etx_clk, ethi.tx_clk); - erxc_pad : inpad generic map (tech => padtech) - port map (erx_clk, ethi.rx_clk); - erxd_pad : inpadv generic map (tech => padtech, width => 4) - port map (erxd, ethi.rxd(3 downto 0)); - erxdv_pad : inpad generic map (tech => padtech) - port map (erx_dv, ethi.rx_dv); - erxer_pad : inpad generic map (tech => padtech) - port map (erx_er, ethi.rx_er); - erxco_pad : inpad generic map (tech => padtech) - port map (erx_col, ethi.rx_col); - erxcr_pad : inpad generic map (tech => padtech) - port map (erx_crs, ethi.rx_crs); - - etxd_pad : outpadv generic map (tech => padtech, width => 4) - port map (etxd, etho.txd(3 downto 0)); - etxen_pad : outpad generic map (tech => padtech) - port map (etx_en, etho.tx_en); - etxer_pad : outpad generic map (tech => padtech) - port map (etx_er, etho.tx_er); - emdc_pad : outpad generic map (tech => padtech) - port map (emdc, etho.mdc); - - emdis_pad : outpad generic map (tech => padtech) - port map (emddis, vcc(0)); - eepwrdwn_pad : outpad generic map (tech => padtech) - port map (epwrdwn, gnd(0)); - esleep_pad : outpad generic map (tech => padtech) - port map (esleep, gnd(0)); - epause_pad : outpad generic map (tech => padtech) - port map (epause, gnd(0)); - ereset_pad : outpad generic map (tech => padtech) - port map (ereset, gnd(0)); - - end generate; - ------------------------------------------------------------------------ ---- ATA Controller --------------------------------------------------- ------------------------------------------------------------------------ - atac : if CFG_ATA = 1 generate - atac0 : atactrl - generic map( - shindex => 5, - haddr => CFG_ATAIO, - hmask => 16#fff#, - pirq => CFG_ATAIRQ, - - TWIDTH => 8, -- counter width - - -- PIO mode 0 settings (@100MHz clock) - PIO_mode0_T1 => 6, -- 70ns - PIO_mode0_T2 => 28, -- 290ns - PIO_mode0_T4 => 2, -- 30ns - PIO_mode0_Teoc => 23 -- 240ns ==> T0 - T1 - T2 = 600 - 70 - 290 = 240 - ) - port map( - rst => rstn, - arst => '1', - clk => clkm, - ahbsi => ahbsi, - ahbso => ahbso(5), - ahbmo => open, - ahbmi => ahbmi, - - -- ATA signals - atai => atai, - atao => atao - ); - - ata_rst_pad : outpad generic map (tech => padtech) - port map (ata_rst, atao.rstn); - ata_data_pad : iopadv generic map (tech => padtech, width => 16, oepol => 1) - port map (ata_data, atao.ddo, atao.oen, atai.ddi); - ata_da_pad : outpadv generic map (tech => padtech, width => 3) - port map (ata_da, atao.da); - ata_cs0_pad : outpad generic map (tech => padtech) - port map (ata_cs0, atao.cs0); - ata_cs1_pad : outpad generic map (tech => padtech) - port map (ata_cs1, atao.cs1); - ata_dior_pad : outpad generic map (tech => padtech) - port map (ata_dior, atao.dior); - ata_diow_pad : outpad generic map (tech => padtech) - port map (ata_diow, atao.diow); - iordy_pad : inpad generic map (tech => padtech) - port map (ata_iordy, atai.iordy); - intrq_pad : inpad generic map (tech => padtech) - port map (ata_intrq, atai.intrq); - dmack_pad : outpad generic map (tech => padtech) - port map (ata_dmack, atao.dmack); - end generate; - ------------------------------------------------------------------------ ---- AHB ROM ---------------------------------------------------------- ------------------------------------------------------------------------ - - bpromgen : if CFG_AHBROMEN /= 0 generate - brom : entity work.ahbrom - generic map (hindex => 6, haddr => CFG_AHBRODDR, pipe => CFG_AHBROPIP) - port map (rstn, clkm, ahbsi, ahbso(6)); - end generate; - nobpromgen : if CFG_AHBROMEN = 0 generate - ahbso(6) <= ahbs_none; - end generate; - ------------------------------------------------------------------------ ---- AHB RAM ---------------------------------------------------------- ------------------------------------------------------------------------ - - ahbramgen : if CFG_AHBRAMEN = 1 generate - ahbram0 : ahbram generic map (hindex => 3, haddr => CFG_AHBRADDR, - tech => CFG_MEMTECH, kbytes => CFG_AHBRSZ) - port map (rstn, clkm, ahbsi, ahbso(3)); - end generate; - nram : if CFG_AHBRAMEN = 0 generate ahbso(3) <= ahbs_none; end generate; - ------------------------------------------------------------------------ ---- AHB DAC IF ------------------------------------------------------- ------------------------------------------------------------------------ - - dac_ahb_inst : if CFG_DAC_AHB /= 0 generate - dac_ahb_1 : dac_ahb - generic map(length => 16, hindex => 4, haddr => 16#010#, hmask => 16#FFF#, tech => fabtech, kbytes => 1) - port map(rst => rstn, clk => clkm, ahbsi => ahbsi, ahbso => ahbso(4), dac_out => dac); - end generate; - ndac_ahb_inst : if CFG_DAC_AHB = 0 generate - ahbso(4) <= ahbs_none; - end generate; - - ----------------------------------------------------------------------------- - -- HPI SECTION - ----------------------------------------------------------------------------- - - ahb2hpi_inst : if CFG_AHB2HPI /= 0 generate - ahb2hpi2_1 : ahb2hpi2 - generic map ( - counter_width => 4, - data_width => 16, - address_width => 2, - hindex => 7, - haddr => 16#240#, - hmask => 16#fff#) - port map ( - HCLK => clkm, - HRESETn => rstn, - ahbso => ahbso(7), - ahbsi => ahbsi, - ADDR => hpiaddr, - WDATA => hpiwdata, - RDATA => hpirdata, - nCS => hpicsn, - nWR => hpiwriten, - nRD => hpirdn, - INT => hpiint, - drive_bus => drive_bus, - dbg_equal => dbg_equal - ); - - hpidata <= hpiwdata when drive_bus = '1' else - (others => 'Z'); - - hpirdata <= hpidata; - - hpiwrn <= hpiwriten; - - end generate; - nahb2hpi_inst : if CFG_AHB2HPI = 0 generate - ahbso(7) <= ahbs_none; - end generate; - - ------------------------------------------------------------------------ ---- Drive unused bus elements --------------------------------------- ------------------------------------------------------------------------ - - nam1 : for i in (CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_SVGA_ENABLE+CFG_GRETH) to NAHBMST-1 generate - ahbmo(i) <= ahbm_none; - end generate; - nap0 : for i in 7 to NAPBSLV-1-CFG_GRETH generate apbo(i) <= apb_none; end generate; - nah0 : for i in 8 to NAHBSLV-1 generate ahbso(i) <= ahbs_none; end generate; - - ------------------------------------------------------------------------ ---- Adaptions for HPE Mini -- ---------------------------------------- ------------------------------------------------------------------------ - - dsuactn <= not dsuact; - - sdba <= memo.address(16 downto 15); -- the bank address - - resoutn <= rstn; - dual_uart : if CFG_AHB_UART /= 0 and CFG_UART1_ENABLE /= 0 generate - with sersrcsel select - sertx <= txd1 when '1', dsutx when others; - - rxd1 <= serrx when sersrcsel = '1' else '-'; - dsurx <= serrx when sersrcsel = '0' else '-'; - end generate dual_uart; - - console_uart : if CFG_AHB_UART = 0 and CFG_UART1_ENABLE /= 0 generate - sertx <= txd1; - rxd1 <= serrx; - end generate console_uart; - - dcl_uart : if CFG_AHB_UART /= 0 and CFG_UART1_ENABLE = 0 generate - sertx <= dsutx; - dsurx <= serrx; - end generate dcl_uart; - - no_uart : if CFG_AHB_UART = 0 and CFG_UART1_ENABLE = 0 generate - sertx <= '-'; - dsurx <= '-'; - rxd1 <= '-'; - end generate no_uart; - ------------------------------------------------------------------------ ---- Boot message ---------------------------------------------------- ------------------------------------------------------------------------ - --- pragma translate_off - x : report_version - generic map ( - msg1 => "LEON3 Demonstration design for HPE_mini board", - msg2 => "GRLIB Version " & tost(LIBVHDL_VERSION/1000) & "." & tost((LIBVHDL_VERSION mod 1000)/100) - & "." & tost(LIBVHDL_VERSION mod 100) & ", build " & tost(LIBVHDL_BUILD), - msg3 => "Target technology: " & tech_table(fabtech) & ", memory library: " & tech_table(memtech), - mdel => 1 - ); --- pragma translate_on - - - -end rtl; diff --git a/designs/leon3-ge-hpe-mini/linkprom b/designs/leon3-ge-hpe-mini/linkprom deleted file mode 100755 index 1805994a..00000000 --- a/designs/leon3-ge-hpe-mini/linkprom +++ /dev/null @@ -1,155 +0,0 @@ -/* linkcmds - * - * $Id: linkcmds,v 1.8.2.1 2000/05/24 17:06:38 joel Exp $ - */ - -OUTPUT_ARCH(sparc) -__DYNAMIC = 0; - -/* - * The memory map looks like this: - * +--------------------+ <- low memory - * | .text | - * | etext | - * | ctor list | the ctor and dtor lists are for - * | dtor list | C++ support - * | _endtext | - * +--------------------+ - * | .data | initialized data goes here - * | _sdata | - * | _edata | - * +--------------------+ - * | .bss | - * | __bss_start | start of bss, cleared by crt0 - * | _end | start of heap, used by sbrk() - * +--------------------+ - * | heap space | - * | _ENDHEAP | - * | stack space | - * | __stack | top of stack - * +--------------------+ <- high memory - */ - - -/* Default values, can be overridden */ - -_PROM_SIZE = 2M; -_RAM_SIZE = 4M; - -_RAM_START = 0x02000000; -_RAM_END = _RAM_START + _RAM_SIZE; - -_PROM_START = 0x00000000; -_PROM_END = _PROM_START + _PROM_SIZE; - -/* - * Alternate names without leading _. - */ - -PROM_START = _PROM_START; -PROM_SIZE = _PROM_SIZE; -PROM_END = _PROM_END; - -RAM_START = _RAM_START; -RAM_SIZE = _RAM_SIZE; -RAM_END = _RAM_END; - -_LEON_REG = 0x80000000; -LEON_REG = 0x80000000; - -/* these are the maximum values */ - -MEMORY -{ - rom : ORIGIN = 0x00000000, LENGTH = 16M - ram : ORIGIN = 0x40000000, LENGTH = 1024M -} - -SECTIONS -{ - .text : - { - CREATE_OBJECT_SYMBOLS - text_start = .; - _text_start = .; - *(.text) - . = ALIGN (16); - - *(.eh_frame) - . = ALIGN (16); - - *(.gnu.linkonce.t*) - - /* - * C++ constructors - */ - __CTOR_LIST__ = .; - LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) - *(.ctors) - LONG(0) - __CTOR_END__ = .; - __DTOR_LIST__ = .; - LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) - *(.dtors) - LONG(0) - __DTOR_END__ = .; - - _rodata_start = . ; - *(.rodata*) - *(.gnu.linkonce.r*) - _erodata = ALIGN( 0x10 ) ; - - etext = ALIGN(0x10); - _etext = .; - *(.init) - *(.fini) - *(.lit) - *(.shdata) - . = ALIGN (16); - _endtext = .; - } > rom - .dynamic : { *(.dynamic) } >ram - .got : { *(.got) } >ram - .plt : { *(.plt) } >ram - .hash : { *(.hash) } >ram - .dynrel : { *(.dynrel) } >ram - .dynsym : { *(.dynsym) } >ram - .dynstr : { *(.dynstr) } >ram - .hash : { *(.hash) } >ram - .data : - { - data_start = .; - _data_start = .; - _sdata = . ; - *(.data) - *(.gnu.linkonce.d*) - *(.gcc_except_table) - . = ALIGN(0x10); - edata = .; - _edata = .; - } > ram - .shbss : - { - *(.shbss) - } > ram - .bss : - { - __bss_start = ALIGN(0x8); - _bss_start = .; - bss_start = .; - *(.bss) - *(COMMON) - end = .; - _end = ALIGN(0x8); - __end = ALIGN(0x8); - } > ram - .jcr . (NOLOAD) : { *(.jcr) } - .stab . (NOLOAD) : - { - [ .stab ] - } - .stabstr . (NOLOAD) : - { - [ .stabstr ] - } -} diff --git a/designs/leon3-ge-hpe-mini/sram.srec b/designs/leon3-ge-hpe-mini/sram.srec deleted file mode 100755 index b60046fb..00000000 --- a/designs/leon3-ge-hpe-mini/sram.srec +++ /dev/null @@ -1,19492 +0,0 @@ -S00C00007372616D2E7372656365 -S31540000000881000000910006C81C1206C01000000BE -S31540000010A1480000A75000001080203BAC102001F2 -S3154000002091D0200001000000010000000100000006 -S3154000003091D02000010000000100000001000000F6 -S31540000040A14800002910006B81C523A401000000CF -S31540000050A14800002910006981C522C8010000009E -S31540000060A14800002910006981C523340100000021 -S3154000007091D02000010000000100000001000000B6 -S3154000008091D02000010000000100000001000000A6 -S31540000090A1480000A75000001080201BAC1020098A -S315400000A091D0200001000000010000000100000086 -S315400000B091D0200001000000010000000100000076 -S315400000C091D0200001000000010000000100000066 -S315400000D091D0200001000000010000000100000056 -S315400000E091D0200001000000010000000100000046 -S315400000F091D0200001000000010000000100000036 -S3154000010091D0200001000000010000000100000025 -S31540000110AE102001A148000010806A33A7500000AD -S31540000120AE102002A148000010806A2FA7500000A0 -S31540000130AE102003A148000010806A2BA750000093 -S31540000140AE102004A148000010806A27A750000086 -S31540000150AE102005A148000010806A23A750000079 -S31540000160AE102006A148000010806A1FA75000006C -S31540000170AE102007A148000010806A1BA75000005F -S31540000180AE102008A148000010806A17A750000052 -S31540000190AE102009A148000010806A13A750000045 -S315400001A0AE10200AA148000010806A0FA750000038 -S315400001B0AE10200BA148000010806A0BA75000002B -S315400001C0AE10200CA148000010806A07A75000001E -S315400001D0AE10200DA148000010806A03A750000011 -S315400001E0AE10200EA1480000108069FFA750000005 -S315400001F0AE10200FA1480000108069FBA7500000F8 -S3154000020091D0200001000000010000000100000024 -S3154000021091D0200001000000010000000100000014 -S3154000022091D0200001000000010000000100000004 -S3154000023091D02000010000000100000001000000F4 -S3154000024091D02000010000000100000001000000E4 -S3154000025091D02000010000000100000001000000D4 -S3154000026091D02000010000000100000001000000C4 -S3154000027091D02000010000000100000001000000B4 -S3154000028091D02000010000000100000001000000A4 -S3154000029091D0200001000000010000000100000094 -S315400002A091D0200001000000010000000100000084 -S315400002B091D0200001000000010000000100000074 -S315400002C091D0200001000000010000000100000064 -S315400002D091D0200001000000010000000100000054 -S315400002E091D0200001000000010000000100000044 -S315400002F091D0200001000000010000000100000034 -S3154000030091D0200001000000010000000100000023 -S3154000031091D0200001000000010000000100000013 -S3154000032091D0200001000000010000000100000003 -S3154000033091D02000010000000100000001000000F3 -S3154000034091D02000010000000100000001000000E3 -S3154000035091D02000010000000100000001000000D3 -S3154000036091D02000010000000100000001000000C3 -S3154000037091D02000010000000100000001000000B3 -S3154000038091D02000010000000100000001000000A3 -S3154000039091D0200001000000010000000100000093 -S315400003A091D0200001000000010000000100000083 -S315400003B091D0200001000000010000000100000073 -S315400003C091D0200001000000010000000100000063 -S315400003D091D0200001000000010000000100000053 -S315400003E091D0200001000000010000000100000043 -S315400003F091D0200001000000010000000100000033 -S3154000040091D0200001000000010000000100000022 -S3154000041091D0200001000000010000000100000012 -S3154000042091D0200001000000010000000100000002 -S3154000043091D02000010000000100000001000000F2 -S3154000044091D02000010000000100000001000000E2 -S3154000045091D02000010000000100000001000000D2 -S3154000046091D02000010000000100000001000000C2 -S3154000047091D02000010000000100000001000000B2 -S3154000048091D02000010000000100000001000000A2 -S3154000049091D0200001000000010000000100000092 -S315400004A091D0200001000000010000000100000082 -S315400004B091D0200001000000010000000100000072 -S315400004C091D0200001000000010000000100000062 -S315400004D091D0200001000000010000000100000052 -S315400004E091D0200001000000010000000100000042 -S315400004F091D0200001000000010000000100000032 -S3154000050091D0200001000000010000000100000021 -S3154000051091D0200001000000010000000100000011 -S3154000052091D0200001000000010000000100000001 -S3154000053091D02000010000000100000001000000F1 -S3154000054091D02000010000000100000001000000E1 -S3154000055091D02000010000000100000001000000D1 -S3154000056091D02000010000000100000001000000C1 -S3154000057091D02000010000000100000001000000B1 -S3154000058091D02000010000000100000001000000A1 -S3154000059091D0200001000000010000000100000091 -S315400005A091D0200001000000010000000100000081 -S315400005B091D0200001000000010000000100000071 -S315400005C091D0200001000000010000000100000061 -S315400005D091D0200001000000010000000100000051 -S315400005E091D0200001000000010000000100000041 -S315400005F091D0200001000000010000000100000031 -S3154000060091D0200001000000010000000100000020 -S3154000061091D0200001000000010000000100000010 -S3154000062091D0200001000000010000000100000000 -S3154000063091D02000010000000100000001000000F0 -S3154000064091D02000010000000100000001000000E0 -S3154000065091D02000010000000100000001000000D0 -S3154000066091D02000010000000100000001000000C0 -S3154000067091D02000010000000100000001000000B0 -S3154000068091D02000010000000100000001000000A0 -S3154000069091D0200001000000010000000100000090 -S315400006A091D0200001000000010000000100000080 -S315400006B091D0200001000000010000000100000070 -S315400006C091D0200001000000010000000100000060 -S315400006D091D0200001000000010000000100000050 -S315400006E091D0200001000000010000000100000040 -S315400006F091D0200001000000010000000100000030 -S3154000070091D020000100000001000000010000001F -S3154000071091D020000100000001000000010000000F -S3154000072091D02000010000000100000001000000FF -S3154000073091D02000010000000100000001000000EF -S3154000074091D02000010000000100000001000000DF -S3154000075091D02000010000000100000001000000CF -S3154000076091D02000010000000100000001000000BF -S3154000077091D02000010000000100000001000000AF -S3154000078091D020000100000001000000010000009F -S3154000079091D020000100000001000000010000008F -S315400007A091D020000100000001000000010000007F -S315400007B091D020000100000001000000010000006F -S315400007C091D020000100000001000000010000005F -S315400007D091D020000100000001000000010000004F -S315400007E091D020000100000001000000010000003F -S315400007F091D020000100000001000000010000002F -S3154000080091D020000100000001000000010000001E -S3154000081091D020000100000001000000010000000E -S31540000820A14800002910006A81C521080100000086 -S31540000830A1480000108067D9A750000001000000C1 -S3154000084091D02000010000000100000001000000DE -S31540000850A14800002910006A81C520EC0100000073 -S3154000086091D02000010000000100000001000000BE -S3154000087091D02000010000000100000001000000AE -S3154000088091D020000100000001000000010000009E -S3154000089091D020000100000001000000010000008E -S315400008A091D020000100000001000000010000007E -S315400008B091D020000100000001000000010000006E -S315400008C091D020000100000001000000010000005E -S315400008D091D020000100000001000000010000004E -S315400008E091D020000100000001000000010000003E -S315400008F091D020000100000001000000010000002E -S3154000090091D020000100000001000000010000001D -S3154000091091D020000100000001000000010000000D -S3154000092091D02000010000000100000001000000FD -S3154000093091D02000010000000100000001000000ED -S3154000094091D02000010000000100000001000000DD -S3154000095091D02000010000000100000001000000CD -S3154000096091D02000010000000100000001000000BD -S3154000097091D02000010000000100000001000000AD -S3154000098091D020000100000001000000010000009D -S3154000099091D020000100000001000000010000008D -S315400009A091D020000100000001000000010000007D -S315400009B091D020000100000001000000010000006D -S315400009C091D020000100000001000000010000005D -S315400009D091D020000100000001000000010000004D -S315400009E091D020000100000001000000010000003D -S315400009F091D020000100000001000000010000002D -S31540000A0091D020000100000001000000010000001C -S31540000A1091D020000100000001000000010000000C -S31540000A2091D02000010000000100000001000000FC -S31540000A3091D02000010000000100000001000000EC -S31540000A4091D02000010000000100000001000000DC -S31540000A5091D02000010000000100000001000000CC -S31540000A6091D02000010000000100000001000000BC -S31540000A7091D02000010000000100000001000000AC -S31540000A8091D020000100000001000000010000009C -S31540000A9091D020000100000001000000010000008C -S31540000AA091D020000100000001000000010000007C -S31540000AB091D020000100000001000000010000006C -S31540000AC091D020000100000001000000010000005C -S31540000AD091D020000100000001000000010000004C -S31540000AE091D020000100000001000000010000003C -S31540000AF091D020000100000001000000010000002C -S31540000B0091D020000100000001000000010000001B -S31540000B1091D020000100000001000000010000000B -S31540000B2091D02000010000000100000001000000FB -S31540000B3091D02000010000000100000001000000EB -S31540000B4091D02000010000000100000001000000DB -S31540000B5091D02000010000000100000001000000CB -S31540000B6091D02000010000000100000001000000BB -S31540000B7091D02000010000000100000001000000AB -S31540000B8091D020000100000001000000010000009B -S31540000B9091D020000100000001000000010000008B -S31540000BA091D020000100000001000000010000007B -S31540000BB091D020000100000001000000010000006B -S31540000BC091D020000100000001000000010000005B -S31540000BD091D020000100000001000000010000004B -S31540000BE091D020000100000001000000010000003B -S31540000BF091D020000100000001000000010000002B -S31540000C0091D020000100000001000000010000001A -S31540000C1091D020000100000001000000010000000A -S31540000C2091D02000010000000100000001000000FA -S31540000C3091D02000010000000100000001000000EA -S31540000C4091D02000010000000100000001000000DA -S31540000C5091D02000010000000100000001000000CA -S31540000C6091D02000010000000100000001000000BA -S31540000C7091D02000010000000100000001000000AA -S31540000C8091D020000100000001000000010000009A -S31540000C9091D020000100000001000000010000008A -S31540000CA091D020000100000001000000010000007A -S31540000CB091D020000100000001000000010000006A -S31540000CC091D020000100000001000000010000005A -S31540000CD091D020000100000001000000010000004A -S31540000CE091D020000100000001000000010000003A -S31540000CF091D020000100000001000000010000002A -S31540000D0091D0200001000000010000000100000019 -S31540000D1091D0200001000000010000000100000009 -S31540000D2091D02000010000000100000001000000F9 -S31540000D3091D02000010000000100000001000000E9 -S31540000D4091D02000010000000100000001000000D9 -S31540000D5091D02000010000000100000001000000C9 -S31540000D6091D02000010000000100000001000000B9 -S31540000D7091D02000010000000100000001000000A9 -S31540000D8091D0200001000000010000000100000099 -S31540000D9091D0200001000000010000000100000089 -S31540000DA091D0200001000000010000000100000079 -S31540000DB091D0200001000000010000000100000069 -S31540000DC091D0200001000000010000000100000059 -S31540000DD091D0200001000000010000000100000049 -S31540000DE091D0200001000000010000000100000039 -S31540000DF091D0200001000000010000000100000029 -S31540000E0091D0200001000000010000000100000018 -S31540000E1091D0200001000000010000000100000008 -S31540000E2091D02000010000000100000001000000F8 -S31540000E3091D02000010000000100000001000000E8 -S31540000E4091D02000010000000100000001000000D8 -S31540000E5091D02000010000000100000001000000C8 -S31540000E6091D02000010000000100000001000000B8 -S31540000E7091D02000010000000100000001000000A8 -S31540000E8091D0200001000000010000000100000098 -S31540000E9091D0200001000000010000000100000088 -S31540000EA091D0200001000000010000000100000078 -S31540000EB091D0200001000000010000000100000068 -S31540000EC091D0200001000000010000000100000058 -S31540000ED091D0200001000000010000000100000048 -S31540000EE091D0200001000000010000000100000038 -S31540000EF091D0200001000000010000000100000028 -S31540000F0091D0200001000000010000000100000017 -S31540000F1091D0200001000000010000000100000007 -S31540000F2091D02000010000000100000001000000F7 -S31540000F3091D02000010000000100000001000000E7 -S31540000F4091D02000010000000100000001000000D7 -S31540000F5091D02000010000000100000001000000C7 -S31540000F6091D02000010000000100000001000000B7 -S31540000F7091D02000010000000100000001000000A7 -S31540000F8091D0200001000000010000000100000097 -S31540000F9091D0200001000000010000000100000087 -S31540000FA091D0200001000000010000000100000077 -S31540000FB091D0200001000000010000000100000067 -S31540000FC091D0200001000000010000000100000057 -S31540000FD091D0200001000000010000000100000047 -S31540000FE091D0200001000000010000000100000037 -S31540000FF091D0200001000000010000000100000027 -S315400010009DE3BFC0051001438410A0600710014452 -S315400010108610E188821000008620C00286A0E00883 -S3154000102036BFFFFFC038800311100144901221885B -S31540001030C02200004000666601000000400066666F -S315400010400100000040006818010000001110006D0A -S31540001050901221A040006166010000004000694AEC -S3154000106001000000400000430100000040006743CB -S315400010700100000081C7E00881E800009DE3BF98B9 -S3154000108023100143C20C606080A0600012800015EE -S315400010902110008010800005C204200C9FC3400030 -S315400010A0C224200CC204200CDA00400080A3600059 -S315400010B012BFFFFB82006004030000008210600044 -S315400010C080A0600002800006821020011110006D91 -S315400010D06FFFFBCC9012213082102001C22C606041 -S315400010E081C7E00881E800009DE3BF9881C7E0081A -S315400010F081E800009DE3BF98030000008210600075 -S315400011001110006D1310014380A060009012213031 -S3154000111002800004921260646FFFFBBA0100000077 -S315400011201B100144C203618880A060000280000950 -S31540001130B0136188030000008210600080A0600048 -S3154000114002800004010000006FFFFBAE81E8000052 -S315400011500100000081C7E00881E800009DE3BF98D8 -S3154000116081C7E00881E8000081C3E0080100000073 -S315400011709DE3BF9840000007010000004000014683 -S31540001180010000004000000E81E800000100000060 -S315400011909DE3BF98400000290100000080A2200086 -S315400011A01280000503100080D80060109A102001BC -S315400011B0DA23201081C7E00891E820000310008060 -S315400011C0D80060109A102001DA23201481C3E00869 -S315400011D09010200003100080DA006010D0234000F9 -S315400011E081C3E0089010200003100080DA006010F0 -S315400011F0D023600881C3E0089010200003100080CF -S31540001200DA006010D023600481C3E008901020000B -S3154000121013100080921260149010200081C3E008E1 -S31540001220D0EA4020901020001310008092126014E3 -S3154000123081C3E008D0224000914440009132201CF6 -S3154000124081C3E008900A200F81C3E008D0820020C5 -S315400012509010200C81C3E008D08200408210000824 -S3154000126080A20009148000039022000990224001C8 -S3154000127081C3E00801000000932A60028210200129 -S31540001280C22200099810200080A3000A1680000A96 -S3154000129096102001832B2002DA02000180A0000D67 -S315400012A0826020009803200180A3000A06BFFFFA4F -S315400012B0960AC00180A2E00002BFFFF49810200009 -S315400012C081C3E008010000009DE3BF98C2062010DC -S315400012D08330601CA0100018A400600180A4A00107 -S315400012E00280006CB0103FFF7FFFFFD4010000007A -S315400012F0AA100008912A20047FFFFFBC9002200715 -S315400013007FFFFFD40100000003020000808A000135 -S315400013100280005C010000009A05600182102001F5 -S315400013208328400D11100080C2242010901220A066 -S31540001330921000157FFFFFD1941000120310008019 -S3154000134082106018A12D6002C0204010DA004010C3 -S31540001350A610000180A36009291001431480002BC8 -S31540001360AC1000017FFFFFAB0100000080A220000F -S3154000137012BFFFFD01000000B010200080A6001241 -S31540001380168000140100000010800005A21000160F -S3154000139080A600121680000F01000000832E200256 -S315400013A0D0044010D20440017FFFFFADB0062001BB -S315400013B080A2200104BFFFF7901020027FFFFF901C -S315400013C00100000080A6001206BFFFF6832E200211 -S315400013D0C205207C82006001C225207C7FFFFF92EF -S315400013E001000000C204C01082006001C224C01087 -S315400013F0DA04C01080A3600904BFFFDB111000802F -S31540001400108000049012205C111000809012205C25 -S31540001410921000157FFFFF9994100012832CA002B2 -S3154000142082004012A0004001DA05207C80A4000D15 -S3154000143002800004231001437FFFFF7190102003B8 -S31540001440C204607C80A060000480000601000000A9 -S31540001450C204607C80A400011680000580A560005F -S315400014607FFFFF679010200380A56000228000095F -S31540001470B010200091D0200010800006B01020004F -S315400014807FFFFF5F9010200110BFFFA59A05600106 -S3154000149081C7E00881E800009DE3BF98C20620109E -S315400014A0A01000188330601C80A0600002800009F4 -S315400014B0B0103FFF7FFFFF610100000080A22000C7 -S315400014C0128000040300003F821063FFC2242010F4 -S315400014D081C7E00881E800009DE3BF98C20620105E -S315400014E08330601CA400600180A4A00102800068D3 -S315400014F0B0103FFF7FFFFF5101000000AA10000817 -S31540001500912A20047FFFFF39900220077FFFFF5179 -S315400015100100000003020000808A0001028000589A -S315400015200100000011100080901220A092100015BA -S315400015307FFFFF5294100012031000808210601843 -S31540001540A12D6002C0204010DA004010A610000114 -S3154000155080A36009291001431480002BAC100001C0 -S315400015607FFFFF2C0100000080A2200012BFFFFD7C -S3154000157001000000B010200080A600121680001462 -S315400015800100000010800005A210001680A600127F -S315400015901680000F01000000832E2002D004401068 -S315400015A0D20440017FFFFF2EB006200180A2200119 -S315400015B004BFFFF7901020027FFFFF1101000000DB -S315400015C080A6001206BFFFF6832E2002C205207CAD -S315400015D082006001C225207C7FFFFF1301000000CE -S315400015E0C204C01082006001C224C010DA04C010D8 -S315400015F080A3600904BFFFDB111000801080000447 -S315400016009012205C111000809012205C9210001500 -S315400016107FFFFF1A94100012832CA0028200401212 -S31540001620A0004001DA05207C80A4000D0280000461 -S31540001630231001437FFFFEF290102003C204607C1A -S3154000164080A060000480000601000000C204607CA7 -S3154000165080A400011680000580A560007FFFFEE89B -S315400016609010200380A5600022800009B010200061 -S3154000167091D0200010800006B01020007FFFFEE0D1 -S315400016809010200110BFFFA91110008081C7E0080B -S3154000169081E800009DE3BF983120000092162200A9 -S315400016A09410200040003E599010200140003B62BB -S315400016B0901622009016230040003EBE921020084D -S315400016C0B016210040003A4F81E8000001000000BA -S315400016D09DE3BF9821200000921422009410200020 -S315400016E040003E4A9010200140003B539014220097 -S315400016F09210001840003EAF90142300B014210011 -S3154000170040003A4081E8000001000000000000006F -S315400017100000000000000000000000000000000083 -S315400017200000000000000000000000000000000073 -S315400017300000000000000000000000000000000063 -S315400017400000000000000000000000000000000053 -S315400017500000000000000000000000000000000043 -S315400017600000000000000000000000000000000033 -S315400017700000000000000000000000000000000023 -S315400017800000000000000000000000000000000013 -S315400017900000000000000000000000000000000003 -S315400017A000000000000000000000000000000000F3 -S315400017B000000000000000000000000000000000E3 -S315400017C000000000000000000000000000000000D3 -S315400017D000000000000000000000000000000000C3 -S315400017E000000000000000000000000000000000B3 -S315400017F000000000000000000000000000000000A3 -S315400018000000000000000000000000000000000092 -S315400018100000000000000000000000000000000082 -S315400018200000000000000000000000000000000072 -S315400018300000000000000000000000000000000062 -S315400018400000000000000000000000000000000052 -S315400018500000000000000000000000000000000042 -S315400018600000000000000000000000000000000032 -S315400018700000000000000000000000000000000022 -S315400018800000000000000000000000000000000012 -S315400018900000000000000000000000000000000002 -S315400018A000000000000000000000000000000000F2 -S315400018B000000000000000000000000000000000E2 -S315400018C000000000000000000000000000000000D2 -S315400018D000000000000000000000000000000000C2 -S315400018E000000000000000000000000000000000B2 -S315400018F000000000000000000000000000000000A2 -S315400019000000000000000000000000000000000091 -S315400019100000000000000000000000000000000081 -S315400019200000000000000000000000000000000071 -S315400019300000000000000000000000000000000061 -S315400019400000000000000000000000000000000051 -S315400019500000000000000000000000000000000041 -S315400019600000000000000000000000000000000031 -S315400019700000000000000000000000000000000021 -S315400019800000000000000000000000000000000011 -S315400019900000000000000000000000000000000001 -S315400019A000000000000000000000000000000000F1 -S315400019B000000000000000000000000000000000E1 -S315400019C000000000000000000000000000000000D1 -S315400019D000000000000000000000000000000000C1 -S315400019E000000000000000000000000000000000B1 -S315400019F000000000000000000000000000000000A1 -S31540001A000000000000000000000000000000000090 -S31540001A100000000000000000000000000000000080 -S31540001A200000000000000000000000000000000070 -S31540001A300000000000000000000000000000000060 -S31540001A400000000000000000000000000000000050 -S31540001A500000000000000000000000000000000040 -S31540001A600000000000000000000000000000000030 -S31540001A700000000000000000000000000000000020 -S31540001A800000000000000000000000000000000010 -S31540001A900000000000000000000000000000000000 -S31540001AA000000000000000000000000000000000F0 -S31540001AB000000000000000000000000000000000E0 -S31540001AC000000000000000000000000000000000D0 -S31540001AD000000000000000000000000000000000C0 -S31540001AE000000000000000000000000000000000B0 -S31540001AF000000000000000000000000000000000A0 -S31540001B00000000000000000000000000000000008F -S31540001B10000000000000000000000000000000007F -S31540001B20000000000000000000000000000000006F -S31540001B30000000000000000000000000000000005F -S31540001B40000000000000000000000000000000004F -S31540001B50000000000000000000000000000000003F -S31540001B60000000000000000000000000000000002F -S31540001B70000000000000000000000000000000001F -S31540001B80000000000000000000000000000000000F -S31540001B9000000000000000000000000000000000FF -S31540001BA000000000000000000000000000000000EF -S31540001BB000000000000000000000000000000000DF -S31540001BC000000000000000000000000000000000CF -S31540001BD000000000000000000000000000000000BF -S31540001BE000000000000000000000000000000000AF -S31540001BF0000000000000000000000000000000009F -S31540001C00000000000000000000000000000000008E -S31540001C10000000000000000000000000000000007E -S31540001C20000000000000000000000000000000006E -S31540001C30000000000000000000000000000000005E -S31540001C40000000000000000000000000000000004E -S31540001C50000000000000000000000000000000003E -S31540001C60000000000000000000000000000000002E -S31540001C70000000000000000000000000000000001E -S31540001C80000000000000000000000000000000000E -S31540001C9000000000000000000000000000000000FE -S31540001CA000000000000000000000000000000000EE -S31540001CB000000000000000000000000000000000DE -S31540001CC000000000000000000000000000000000CE -S31540001CD000000000000000000000000000000000BE -S31540001CE000000000000000000000000000000000AE -S31540001CF0000000000000000000000000000000009E -S31540001D00000000000000000000000000000000008D -S31540001D10000000000000000000000000000000007D -S31540001D20000000000000000000000000000000006D -S31540001D30000000000000000000000000000000005D -S31540001D40000000000000000000000000000000004D -S31540001D50000000000000000000000000000000003D -S31540001D60000000000000000000000000000000002D -S31540001D70000000000000000000000000000000001D -S31540001D80000000000000000000000000000000000D -S31540001D9000000000000000000000000000000000FD -S31540001DA000000000000000000000000000000000ED -S31540001DB000000000000000000000000000000000DD -S31540001DC000000000000000000000000000000000CD -S31540001DD000000000000000000000000000000000BD -S31540001DE000000000000000000000000000000000AD -S31540001DF0000000000000000000000000000000009D -S31540001E00000000000000000000000000000000008C -S31540001E10000000000000000000000000000000007C -S31540001E20000000000000000000000000000000006C -S31540001E30000000000000000000000000000000005C -S31540001E40000000000000000000000000000000004C -S31540001E50000000000000000000000000000000003C -S31540001E60000000000000000000000000000000002C -S31540001E70000000000000000000000000000000001C -S31540001E80000000000000000000000000000000000C -S31540001E9000000000000000000000000000000000FC -S31540001EA000000000000000000000000000000000EC -S31540001EB000000000000000000000000000000000DC -S31540001EC000000000000000000000000000000000CC -S31540001ED000000000000000000000000000000000BC -S31540001EE000000000000000000000000000000000AC -S31540001EF0000000000000000000000000000000009C -S31540001F00000000000000000000000000000000008B -S31540001F10000000000000000000000000000000007B -S31540001F20000000000000000000000000000000006B -S31540001F30000000000000000000000000000000005B -S31540001F40000000000000000000000000000000004B -S31540001F50000000000000000000000000000000003B -S31540001F60000000000000000000000000000000002B -S31540001F70000000000000000000000000000000001B -S31540001F80000000000000000000000000000000000B -S31540001F9000000000000000000000000000000000FB -S31540001FA000000000000000000000000000000000EB -S31540001FB000000000000000000000000000000000DB -S31540001FC000000000000000000000000000000000CB -S31540001FD000000000000000000000000000000000BB -S31540001FE000000000000000000000000000000000AB -S31540001FF0000000000000000000000000000000009B -S31540002000000000000000000000000000000000008A -S31540002010000000000000000000000000000000007A -S31540002020000000000000000000000000000000006A -S31540002030000000000000000000000000000000005A -S31540002040000000000000000000000000000000004A -S31540002050000000000000000000000000000000003A -S31540002060000000000000000000000000000000002A -S31540002070000000000000000000000000000000001A -S31540002080000000000000000000000000000000000A -S3154000209000000000000000000000000000000000FA -S315400020A000000000000000000000000000000000EA -S315400020B000000000000000000000000000000000DA -S315400020C000000000000000000000000000000000CA -S315400020D000000000000000000000000000000000BA -S315400020E000000000000000000000000000000000AA -S315400020F0000000000000000000000000000000009A -S315400021000000000000000000000000000000000089 -S315400021100000000000000000000000000000000079 -S315400021200000000000000000000000000000000069 -S315400021300000000000000000000000000000000059 -S315400021400000000000000000000000000000000049 -S315400021500000000000000000000000000000000039 -S315400021600000000000000000000000000000000029 -S315400021700000000000000000000000000000000019 -S315400021800000000000000000000000000000000009 -S3154000219000000000000000000000000000000000F9 -S315400021A000000000000000000000000000000000E9 -S315400021B000000000000000000000000000000000D9 -S315400021C000000000000000000000000000000000C9 -S315400021D000000000000000000000000000000000B9 -S315400021E000000000000000000000000000000000A9 -S315400021F00000000000000000000000000000000099 -S315400022000000000000000000000000000000000088 -S315400022100000000000000000000000000000000078 -S315400022200000000000000000000000000000000068 -S315400022300000000000000000000000000000000058 -S315400022400000000000000000000000000000000048 -S315400022500000000000000000000000000000000038 -S315400022600000000000000000000000000000000028 -S315400022700000000000000000000000000000000018 -S315400022800000000000000000000000000000000008 -S3154000229000000000000000000000000000000000F8 -S315400022A000000000000000000000000000000000E8 -S315400022B000000000000000000000000000000000D8 -S315400022C000000000000000000000000000000000C8 -S315400022D000000000000000000000000000000000B8 -S315400022E000000000000000000000000000000000A8 -S315400022F00000000000000000000000000000000098 -S315400023000000000000000000000000000000000087 -S315400023100000000000000000000000000000000077 -S315400023200000000000000000000000000000000067 -S315400023300000000000000000000000000000000057 -S315400023400000000000000000000000000000000047 -S315400023500000000000000000000000000000000037 -S315400023600000000000000000000000000000000027 -S315400023700000000000000000000000000000000017 -S315400023800000000000000000000000000000000007 -S3154000239000000000000000000000000000000000F7 -S315400023A000000000000000000000000000000000E7 -S315400023B000000000000000000000000000000000D7 -S315400023C000000000000000000000000000000000C7 -S315400023D000000000000000000000000000000000B7 -S315400023E000000000000000000000000000000000A7 -S315400023F00000000000000000000000000000000097 -S315400024000000000000000000000000000000000086 -S315400024100000000000000000000000000000000076 -S315400024200000000000000000000000000000000066 -S315400024300000000000000000000000000000000056 -S315400024400000000000000000000000000000000046 -S315400024500000000000000000000000000000000036 -S315400024600000000000000000000000000000000026 -S315400024700000000000000000000000000000000016 -S315400024800000000000000000000000000000000006 -S3154000249000000000000000000000000000000000F6 -S315400024A000000000000000000000000000000000E6 -S315400024B000000000000000000000000000000000D6 -S315400024C000000000000000000000000000000000C6 -S315400024D000000000000000000000000000000000B6 -S315400024E000000000000000000000000000000000A6 -S315400024F00000000000000000000000000000000096 -S315400025000000000000000000000000000000000085 -S315400025100000000000000000000000000000000075 -S315400025200000000000000000000000000000000065 -S315400025300000000000000000000000000000000055 -S315400025400000000000000000000000000000000045 -S315400025500000000000000000000000000000000035 -S315400025600000000000000000000000000000000025 -S315400025700000000000000000000000000000000015 -S315400025800000000000000000000000000000000005 -S3154000259000000000000000000000000000000000F5 -S315400025A000000000000000000000000000000000E5 -S315400025B000000000000000000000000000000000D5 -S315400025C000000000000000000000000000000000C5 -S315400025D000000000000000000000000000000000B5 -S315400025E000000000000000000000000000000000A5 -S315400025F00000000000000000000000000000000095 -S315400026000000000000000000000000000000000084 -S315400026100000000000000000000000000000000074 -S315400026200000000000000000000000000000000064 -S315400026300000000000000000000000000000000054 -S315400026400000000000000000000000000000000044 -S315400026500000000000000000000000000000000034 -S315400026600000000000000000000000000000000024 -S315400026700000000000000000000000000000000014 -S315400026800000000000000000000000000000000004 -S3154000269000000000000000000000000000000000F4 -S315400026A000000000000000000000000000000000E4 -S315400026B000000000000000000000000000000000D4 -S315400026C000000000000000000000000000000000C4 -S315400026D000000000000000000000000000000000B4 -S315400026E000000000000000000000000000000000A4 -S315400026F00000000000000000000000000000000094 -S315400027000000000000000000000000000000000083 -S315400027100000000000000000000000000000000073 -S315400027200000000000000000000000000000000063 -S315400027300000000000000000000000000000000053 -S315400027400000000000000000000000000000000043 -S315400027500000000000000000000000000000000033 -S315400027600000000000000000000000000000000023 -S315400027700000000000000000000000000000000013 -S315400027800000000000000000000000000000000003 -S3154000279000000000000000000000000000000000F3 -S315400027A000000000000000000000000000000000E3 -S315400027B000000000000000000000000000000000D3 -S315400027C000000000000000000000000000000000C3 -S315400027D000000000000000000000000000000000B3 -S315400027E000000000000000000000000000000000A3 -S315400027F00000000000000000000000000000000093 -S315400028000000000000000000000000000000000082 -S315400028100000000000000000000000000000000072 -S315400028200000000000000000000000000000000062 -S315400028300000000000000000000000000000000052 -S315400028400000000000000000000000000000000042 -S315400028500000000000000000000000000000000032 -S315400028600000000000000000000000000000000022 -S315400028700000000000000000000000000000000012 -S315400028800000000000000000000000000000000002 -S3154000289000000000000000000000000000000000F2 -S315400028A000000000000000000000000000000000E2 -S315400028B000000000000000000000000000000000D2 -S315400028C000000000000000000000000000000000C2 -S315400028D000000000000000000000000000000000B2 -S315400028E000000000000000000000000000000000A2 -S315400028F00000000000000000000000000000000092 -S315400029000000000000000000000000000000000081 -S315400029100000000000000000000000000000000071 -S315400029200000000000000000000000000000000061 -S315400029300000000000000000000000000000000051 -S315400029400000000000000000000000000000000041 -S315400029500000000000000000000000000000000031 -S315400029600000000000000000000000000000000021 -S315400029700000000000000000000000000000000011 -S315400029800000000000000000000000000000000001 -S3154000299000000000000000000000000000000000F1 -S315400029A000000000000000000000000000000000E1 -S315400029B000000000000000000000000000000000D1 -S315400029C000000000000000000000000000000000C1 -S315400029D000000000000000000000000000000000B1 -S315400029E000000000000000000000000000000000A1 -S315400029F00000000000000000000000000000000091 -S31540002A000000000000000000000000000000000080 -S31540002A100000000000000000000000000000000070 -S31540002A200000000000000000000000000000000060 -S31540002A300000000000000000000000000000000050 -S31540002A400000000000000000000000000000000040 -S31540002A500000000000000000000000000000000030 -S31540002A600000000000000000000000000000000020 -S31540002A700000000000000000000000000000000010 -S31540002A800000000000000000000000000000000000 -S31540002A9000000000000000000000000000000000F0 -S31540002AA000000000000000000000000000000000E0 -S31540002AB000000000000000000000000000000000D0 -S31540002AC000000000000000000000000000000000C0 -S31540002AD000000000000000000000000000000000B0 -S31540002AE000000000000000000000000000000000A0 -S31540002AF00000000000000000000000000000000090 -S31540002B00000000000000000000000000000000007F -S31540002B10000000000000000000000000000000006F -S31540002B20000000000000000000000000000000005F -S31540002B30000000000000000000000000000000004F -S31540002B40000000000000000000000000000000003F -S31540002B50000000000000000000000000000000002F -S31540002B60000000000000000000000000000000001F -S31540002B70000000000000000000000000000000000F -S31540002B8000000000000000000000000000000000FF -S31540002B9000000000000000000000000000000000EF -S31540002BA000000000000000000000000000000000DF -S31540002BB000000000000000000000000000000000CF -S31540002BC000000000000000000000000000000000BF -S31540002BD000000000000000000000000000000000AF -S31540002BE0000000000000000000000000000000009F -S31540002BF0000000000000000000000000000000008F -S31540002C00000000000000000000000000000000007E -S31540002C10000000000000000000000000000000006E -S31540002C20000000000000000000000000000000005E -S31540002C30000000000000000000000000000000004E -S31540002C40000000000000000000000000000000003E -S31540002C50000000000000000000000000000000002E -S31540002C60000000000000000000000000000000001E -S31540002C70000000000000000000000000000000000E -S31540002C8000000000000000000000000000000000FE -S31540002C9000000000000000000000000000000000EE -S31540002CA000000000000000000000000000000000DE -S31540002CB000000000000000000000000000000000CE -S31540002CC000000000000000000000000000000000BE -S31540002CD000000000000000000000000000000000AE -S31540002CE0000000000000000000000000000000009E -S31540002CF0000000000000000000000000000000008E -S31540002D00000000000000000000000000000000007D -S31540002D10000000000000000000000000000000006D -S31540002D20000000000000000000000000000000005D -S31540002D30000000000000000000000000000000004D -S31540002D40000000000000000000000000000000003D -S31540002D50000000000000000000000000000000002D -S31540002D60000000000000000000000000000000001D -S31540002D70000000000000000000000000000000000D -S31540002D8000000000000000000000000000000000FD -S31540002D9000000000000000000000000000000000ED -S31540002DA000000000000000000000000000000000DD -S31540002DB000000000000000000000000000000000CD -S31540002DC000000000000000000000000000000000BD -S31540002DD000000000000000000000000000000000AD -S31540002DE0000000000000000000000000000000009D -S31540002DF0000000000000000000000000000000008D -S31540002E00000000000000000000000000000000007C -S31540002E10000000000000000000000000000000006C -S31540002E20000000000000000000000000000000005C -S31540002E30000000000000000000000000000000004C -S31540002E40000000000000000000000000000000003C -S31540002E50000000000000000000000000000000002C -S31540002E60000000000000000000000000000000001C -S31540002E70000000000000000000000000000000000C -S31540002E8000000000000000000000000000000000FC -S31540002E9000000000000000000000000000000000EC -S31540002EA000000000000000000000000000000000DC -S31540002EB000000000000000000000000000000000CC -S31540002EC000000000000000000000000000000000BC -S31540002ED000000000000000000000000000000000AC -S31540002EE0000000000000000000000000000000009C -S31540002EF0000000000000000000000000000000008C -S31540002F00000000000000000000000000000000007B -S31540002F10000000000000000000000000000000006B -S31540002F20000000000000000000000000000000005B -S31540002F30000000000000000000000000000000004B -S31540002F40000000000000000000000000000000003B -S31540002F50000000000000000000000000000000002B -S31540002F60000000000000000000000000000000001B -S31540002F70000000000000000000000000000000000B -S31540002F8000000000000000000000000000000000FB -S31540002F9000000000000000000000000000000000EB -S31540002FA000000000000000000000000000000000DB -S31540002FB000000000000000000000000000000000CB -S31540002FC000000000000000000000000000000000BB -S31540002FD000000000000000000000000000000000AB -S31540002FE0000000000000000000000000000000009B -S31540002FF0000000000000000000000000000000008B -S31540003000000000000000000000000000000000007A -S31540003010000000000000000000000000000000006A -S31540003020000000000000000000000000000000005A -S31540003030000000000000000000000000000000004A -S31540003040000000000000000000000000000000003A -S31540003050000000000000000000000000000000002A -S31540003060000000000000000000000000000000001A -S31540003070000000000000000000000000000000000A -S3154000308000000000000000000000000000000000FA -S3154000309000000000000000000000000000000000EA -S315400030A000000000000000000000000000000000DA -S315400030B000000000000000000000000000000000CA -S315400030C000000000000000000000000000000000BA -S315400030D000000000000000000000000000000000AA -S315400030E0000000000000000000000000000000009A -S315400030F0000000000000000000000000000000008A -S315400031000000000000000000000000000000000079 -S315400031100000000000000000000000000000000069 -S315400031200000000000000000000000000000000059 -S315400031300000000000000000000000000000000049 -S315400031400000000000000000000000000000000039 -S315400031500000000000000000000000000000000029 -S315400031600000000000000000000000000000000019 -S315400031700000000000000000000000000000000009 -S3154000318000000000000000000000000000000000F9 -S3154000319000000000000000000000000000000000E9 -S315400031A000000000000000000000000000000000D9 -S315400031B000000000000000000000000000000000C9 -S315400031C000000000000000000000000000000000B9 -S315400031D000000000000000000000000000000000A9 -S315400031E00000000000000000000000000000000099 -S315400031F00000000000000000000000000000000089 -S315400032000000000000000000000000000000000078 -S315400032100000000000000000000000000000000068 -S315400032200000000000000000000000000000000058 -S315400032300000000000000000000000000000000048 -S315400032400000000000000000000000000000000038 -S315400032500000000000000000000000000000000028 -S315400032600000000000000000000000000000000018 -S315400032700000000000000000000000000000000008 -S3154000328000000000000000000000000000000000F8 -S3154000329000000000000000000000000000000000E8 -S315400032A000000000000000000000000000000000D8 -S315400032B000000000000000000000000000000000C8 -S315400032C000000000000000000000000000000000B8 -S315400032D000000000000000000000000000000000A8 -S315400032E00000000000000000000000000000000098 -S315400032F00000000000000000000000000000000088 -S315400033000000000000000000000000000000000077 -S315400033100000000000000000000000000000000067 -S315400033200000000000000000000000000000000057 -S315400033300000000000000000000000000000000047 -S315400033400000000000000000000000000000000037 -S315400033500000000000000000000000000000000027 -S315400033600000000000000000000000000000000017 -S315400033700000000000000000000000000000000007 -S3154000338000000000000000000000000000000000F7 -S3154000339000000000000000000000000000000000E7 -S315400033A000000000000000000000000000000000D7 -S315400033B000000000000000000000000000000000C7 -S315400033C000000000000000000000000000000000B7 -S315400033D000000000000000000000000000000000A7 -S315400033E00000000000000000000000000000000097 -S315400033F00000000000000000000000000000000087 -S315400034000000000000000000000000000000000076 -S315400034100000000000000000000000000000000066 -S315400034200000000000000000000000000000000056 -S315400034300000000000000000000000000000000046 -S315400034400000000000000000000000000000000036 -S315400034500000000000000000000000000000000026 -S315400034600000000000000000000000000000000016 -S315400034700000000000000000000000000000000006 -S3154000348000000000000000000000000000000000F6 -S3154000349000000000000000000000000000000000E6 -S315400034A000000000000000000000000000000000D6 -S315400034B000000000000000000000000000000000C6 -S315400034C000000000000000000000000000000000B6 -S315400034D000000000000000000000000000000000A6 -S315400034E00000000000000000000000000000000096 -S315400034F00000000000000000000000000000000086 -S315400035000000000000000000000000000000000075 -S315400035100000000000000000000000000000000065 -S315400035200000000000000000000000000000000055 -S315400035300000000000000000000000000000000045 -S315400035400000000000000000000000000000000035 -S315400035500000000000000000000000000000000025 -S315400035600000000000000000000000000000000015 -S315400035700000000000000000000000000000000005 -S3154000358000000000000000000000000000000000F5 -S3154000359000000000000000000000000000000000E5 -S315400035A000000000000000000000000000000000D5 -S315400035B000000000000000000000000000000000C5 -S315400035C000000000000000000000000000000000B5 -S315400035D000000000000000000000000000000000A5 -S315400035E00000000000000000000000000000000095 -S315400035F00000000000000000000000000000000085 -S315400036000000000000000000000000000000000074 -S315400036100000000000000000000000000000000064 -S315400036200000000000000000000000000000000054 -S315400036300000000000000000000000000000000044 -S315400036400000000000000000000000000000000034 -S315400036500000000000000000000000000000000024 -S315400036600000000000000000000000000000000014 -S315400036700000000000000000000000000000000004 -S3154000368000000000000000000000000000000000F4 -S3154000369000000000000000000000000000000000E4 -S315400036A000000000000000000000000000000000D4 -S315400036B000000000000000000000000000000000C4 -S315400036C000000000000000000000000000000000B4 -S315400036D000000000000000000000000000000000A4 -S315400036E00000000000000000000000000000000094 -S315400036F00000000000000000000000000000000084 -S315400037000000000000000000000000000000000073 -S315400037100000000000000000000000000000000063 -S315400037200000000000000000000000000000000053 -S315400037300000000000000000000000000000000043 -S315400037400000000000000000000000000000000033 -S315400037500000000000000000000000000000000023 -S315400037600000000000000000000000000000000013 -S315400037700000000000000000000000000000000003 -S3154000378000000000000000000000000000000000F3 -S3154000379000000000000000000000000000000000E3 -S315400037A000000000000000000000000000000000D3 -S315400037B000000000000000000000000000000000C3 -S315400037C000000000000000000000000000000000B3 -S315400037D000000000000000000000000000000000A3 -S315400037E00000000000000000000000000000000093 -S315400037F00000000000000000000000000000000083 -S315400038000000000000000000000000000000000072 -S315400038100000000000000000000000000000000062 -S315400038200000000000000000000000000000000052 -S315400038300000000000000000000000000000000042 -S315400038400000000000000000000000000000000032 -S315400038500000000000000000000000000000000022 -S315400038600000000000000000000000000000000012 -S315400038700000000000000000000000000000000002 -S3154000388000000000000000000000000000000000F2 -S3154000389000000000000000000000000000000000E2 -S315400038A000000000000000000000000000000000D2 -S315400038B000000000000000000000000000000000C2 -S315400038C000000000000000000000000000000000B2 -S315400038D000000000000000000000000000000000A2 -S315400038E00000000000000000000000000000000092 -S315400038F00000000000000000000000000000000082 -S315400039000000000000000000000000000000000071 -S315400039100000000000000000000000000000000061 -S315400039200000000000000000000000000000000051 -S315400039300000000000000000000000000000000041 -S315400039400000000000000000000000000000000031 -S315400039500000000000000000000000000000000021 -S315400039600000000000000000000000000000000011 -S315400039700000000000000000000000000000000001 -S3154000398000000000000000000000000000000000F1 -S3154000399000000000000000000000000000000000E1 -S315400039A000000000000000000000000000000000D1 -S315400039B000000000000000000000000000000000C1 -S315400039C000000000000000000000000000000000B1 -S315400039D000000000000000000000000000000000A1 -S315400039E00000000000000000000000000000000091 -S315400039F00000000000000000000000000000000081 -S31540003A000000000000000000000000000000000070 -S31540003A100000000000000000000000000000000060 -S31540003A200000000000000000000000000000000050 -S31540003A300000000000000000000000000000000040 -S31540003A400000000000000000000000000000000030 -S31540003A500000000000000000000000000000000020 -S31540003A600000000000000000000000000000000010 -S31540003A700000000000000000000000000000000000 -S31540003A8000000000000000000000000000000000F0 -S31540003A9000000000000000000000000000000000E0 -S31540003AA000000000000000000000000000000000D0 -S31540003AB000000000000000000000000000000000C0 -S31540003AC000000000000000000000000000000000B0 -S31540003AD000000000000000000000000000000000A0 -S31540003AE00000000000000000000000000000000090 -S31540003AF00000000000000000000000000000000080 -S31540003B00000000000000000000000000000000006F -S31540003B10000000000000000000000000000000005F -S31540003B20000000000000000000000000000000004F -S31540003B30000000000000000000000000000000003F -S31540003B40000000000000000000000000000000002F -S31540003B50000000000000000000000000000000001F -S31540003B60000000000000000000000000000000000F -S31540003B7000000000000000000000000000000000FF -S31540003B8000000000000000000000000000000000EF -S31540003B9000000000000000000000000000000000DF -S31540003BA000000000000000000000000000000000CF -S31540003BB000000000000000000000000000000000BF -S31540003BC000000000000000000000000000000000AF -S31540003BD0000000000000000000000000000000009F -S31540003BE0000000000000000000000000000000008F -S31540003BF0000000000000000000000000000000007F -S31540003C00000000000000000000000000000000006E -S31540003C10000000000000000000000000000000005E -S31540003C20000000000000000000000000000000004E -S31540003C30000000000000000000000000000000003E -S31540003C40000000000000000000000000000000002E -S31540003C50000000000000000000000000000000001E -S31540003C60000000000000000000000000000000000E -S31540003C7000000000000000000000000000000000FE -S31540003C8000000000000000000000000000000000EE -S31540003C9000000000000000000000000000000000DE -S31540003CA000000000000000000000000000000000CE -S31540003CB000000000000000000000000000000000BE -S31540003CC000000000000000000000000000000000AE -S31540003CD0000000000000000000000000000000009E -S31540003CE0000000000000000000000000000000008E -S31540003CF0000000000000000000000000000000007E -S31540003D00000000000000000000000000000000006D -S31540003D10000000000000000000000000000000005D -S31540003D20000000000000000000000000000000004D -S31540003D30000000000000000000000000000000003D -S31540003D40000000000000000000000000000000002D -S31540003D50000000000000000000000000000000001D -S31540003D60000000000000000000000000000000000D -S31540003D7000000000000000000000000000000000FD -S31540003D8000000000000000000000000000000000ED -S31540003D9000000000000000000000000000000000DD -S31540003DA000000000000000000000000000000000CD -S31540003DB000000000000000000000000000000000BD -S31540003DC000000000000000000000000000000000AD -S31540003DD0000000000000000000000000000000009D -S31540003DE0000000000000000000000000000000008D -S31540003DF0000000000000000000000000000000007D -S31540003E00000000000000000000000000000000006C -S31540003E10000000000000000000000000000000005C -S31540003E20000000000000000000000000000000004C -S31540003E30000000000000000000000000000000003C -S31540003E40000000000000000000000000000000002C -S31540003E50000000000000000000000000000000001C -S31540003E60000000000000000000000000000000000C -S31540003E7000000000000000000000000000000000FC -S31540003E8000000000000000000000000000000000EC -S31540003E9000000000000000000000000000000000DC -S31540003EA000000000000000000000000000000000CC -S31540003EB000000000000000000000000000000000BC -S31540003EC000000000000000000000000000000000AC -S31540003ED0000000000000000000000000000000009C -S31540003EE0000000000000000000000000000000008C -S31540003EF0000000000000000000000000000000007C -S31540003F00000000000000000000000000000000006B -S31540003F10000000000000000000000000000000005B -S31540003F20000000000000000000000000000000004B -S31540003F30000000000000000000000000000000003B -S31540003F40000000000000000000000000000000002B -S31540003F50000000000000000000000000000000001B -S31540003F60000000000000000000000000000000000B -S31540003F7000000000000000000000000000000000FB -S31540003F8000000000000000000000000000000000EB -S31540003F9000000000000000000000000000000000DB -S31540003FA000000000000000000000000000000000CB -S31540003FB000000000000000000000000000000000BB -S31540003FC000000000000000000000000000000000AB -S31540003FD0000000000000000000000000000000009B -S31540003FE0000000000000000000000000000000008B -S31540003FF0000000000000000000000000000000007B -S31540004000000000000000000000000000000000006A -S31540004010000000000000000000000000000000005A -S31540004020000000000000000000000000000000004A -S31540004030000000000000000000000000000000003A -S31540004040000000000000000000000000000000002A -S31540004050000000000000000000000000000000001A -S31540004060000000000000000000000000000000000A -S3154000407000000000000000000000000000000000FA -S3154000408000000000000000000000000000000000EA -S3154000409000000000000000000000000000000000DA -S315400040A000000000000000000000000000000000CA -S315400040B000000000000000000000000000000000BA -S315400040C000000000000000000000000000000000AA -S315400040D0000000000000000000000000000000009A -S315400040E0000000000000000000000000000000008A -S315400040F0000000000000000000000000000000007A -S315400041000000000000000000000000000000000069 -S315400041100000000000000000000000000000000059 -S315400041200000000000000000000000000000000049 -S315400041300000000000000000000000000000000039 -S315400041400000000000000000000000000000000029 -S315400041500000000000000000000000000000000019 -S315400041600000000000000000000000000000000009 -S3154000417000000000000000000000000000000000F9 -S3154000418000000000000000000000000000000000E9 -S3154000419000000000000000000000000000000000D9 -S315400041A000000000000000000000000000000000C9 -S315400041B000000000000000000000000000000000B9 -S315400041C000000000000000000000000000000000A9 -S315400041D00000000000000000000000000000000099 -S315400041E00000000000000000000000000000000089 -S315400041F00000000000000000000000000000000079 -S315400042000000000000000000000000000000000068 -S315400042100000000000000000000000000000000058 -S315400042200000000000000000000000000000000048 -S315400042300000000000000000000000000000000038 -S315400042400000000000000000000000000000000028 -S315400042500000000000000000000000000000000018 -S315400042600000000000000000000000000000000008 -S3154000427000000000000000000000000000000000F8 -S3154000428000000000000000000000000000000000E8 -S3154000429000000000000000000000000000000000D8 -S315400042A000000000000000000000000000000000C8 -S315400042B000000000000000000000000000000000B8 -S315400042C000000000000000000000000000000000A8 -S315400042D00000000000000000000000000000000098 -S315400042E00000000000000000000000000000000088 -S315400042F00000000000000000000000000000000078 -S315400043000000000000000000000000000000000067 -S315400043100000000000000000000000000000000057 -S315400043200000000000000000000000000000000047 -S315400043300000000000000000000000000000000037 -S315400043400000000000000000000000000000000027 -S315400043500000000000000000000000000000000017 -S315400043600000000000000000000000000000000007 -S3154000437000000000000000000000000000000000F7 -S3154000438000000000000000000000000000000000E7 -S3154000439000000000000000000000000000000000D7 -S315400043A000000000000000000000000000000000C7 -S315400043B000000000000000000000000000000000B7 -S315400043C000000000000000000000000000000000A7 -S315400043D00000000000000000000000000000000097 -S315400043E00000000000000000000000000000000087 -S315400043F00000000000000000000000000000000077 -S315400044000000000000000000000000000000000066 -S315400044100000000000000000000000000000000056 -S315400044200000000000000000000000000000000046 -S315400044300000000000000000000000000000000036 -S315400044400000000000000000000000000000000026 -S315400044500000000000000000000000000000000016 -S315400044600000000000000000000000000000000006 -S3154000447000000000000000000000000000000000F6 -S3154000448000000000000000000000000000000000E6 -S3154000449000000000000000000000000000000000D6 -S315400044A000000000000000000000000000000000C6 -S315400044B000000000000000000000000000000000B6 -S315400044C000000000000000000000000000000000A6 -S315400044D00000000000000000000000000000000096 -S315400044E00000000000000000000000000000000086 -S315400044F00000000000000000000000000000000076 -S315400045000000000000000000000000000000000065 -S315400045100000000000000000000000000000000055 -S315400045200000000000000000000000000000000045 -S315400045300000000000000000000000000000000035 -S315400045400000000000000000000000000000000025 -S315400045500000000000000000000000000000000015 -S315400045600000000000000000000000000000000005 -S3154000457000000000000000000000000000000000F5 -S3154000458000000000000000000000000000000000E5 -S3154000459000000000000000000000000000000000D5 -S315400045A000000000000000000000000000000000C5 -S315400045B000000000000000000000000000000000B5 -S315400045C000000000000000000000000000000000A5 -S315400045D00000000000000000000000000000000095 -S315400045E00000000000000000000000000000000085 -S315400045F00000000000000000000000000000000075 -S315400046000000000000000000000000000000000064 -S315400046100000000000000000000000000000000054 -S315400046200000000000000000000000000000000044 -S315400046300000000000000000000000000000000034 -S315400046400000000000000000000000000000000024 -S315400046500000000000000000000000000000000014 -S315400046600000000000000000000000000000000004 -S3154000467000000000000000000000000000000000F4 -S3154000468000000000000000000000000000000000E4 -S3154000469000000000000000000000000000000000D4 -S315400046A000000000000000000000000000000000C4 -S315400046B000000000000000000000000000000000B4 -S315400046C000000000000000000000000000000000A4 -S315400046D00000000000000000000000000000000094 -S315400046E00000000000000000000000000000000084 -S315400046F00000000000000000000000000000000074 -S315400047000000000000000000000000000000000063 -S315400047100000000000000000000000000000000053 -S315400047200000000000000000000000000000000043 -S315400047300000000000000000000000000000000033 -S315400047400000000000000000000000000000000023 -S315400047500000000000000000000000000000000013 -S315400047600000000000000000000000000000000003 -S3154000477000000000000000000000000000000000F3 -S3154000478000000000000000000000000000000000E3 -S3154000479000000000000000000000000000000000D3 -S315400047A000000000000000000000000000000000C3 -S315400047B000000000000000000000000000000000B3 -S315400047C000000000000000000000000000000000A3 -S315400047D00000000000000000000000000000000093 -S315400047E00000000000000000000000000000000083 -S315400047F00000000000000000000000000000000073 -S315400048000000000000000000000000000000000062 -S315400048100000000000000000000000000000000052 -S315400048200000000000000000000000000000000042 -S315400048300000000000000000000000000000000032 -S315400048400000000000000000000000000000000022 -S315400048500000000000000000000000000000000012 -S315400048600000000000000000000000000000000002 -S3154000487000000000000000000000000000000000F2 -S3154000488000000000000000000000000000000000E2 -S3154000489000000000000000000000000000000000D2 -S315400048A000000000000000000000000000000000C2 -S315400048B000000000000000000000000000000000B2 -S315400048C000000000000000000000000000000000A2 -S315400048D00000000000000000000000000000000092 -S315400048E00000000000000000000000000000000082 -S315400048F00000000000000000000000000000000072 -S315400049000000000000000000000000000000000061 -S315400049100000000000000000000000000000000051 -S315400049200000000000000000000000000000000041 -S315400049300000000000000000000000000000000031 -S315400049400000000000000000000000000000000021 -S315400049500000000000000000000000000000000011 -S315400049600000000000000000000000000000000001 -S3154000497000000000000000000000000000000000F1 -S3154000498000000000000000000000000000000000E1 -S3154000499000000000000000000000000000000000D1 -S315400049A000000000000000000000000000000000C1 -S315400049B000000000000000000000000000000000B1 -S315400049C000000000000000000000000000000000A1 -S315400049D00000000000000000000000000000000091 -S315400049E00000000000000000000000000000000081 -S315400049F00000000000000000000000000000000071 -S31540004A000000000000000000000000000000000060 -S31540004A100000000000000000000000000000000050 -S31540004A200000000000000000000000000000000040 -S31540004A300000000000000000000000000000000030 -S31540004A400000000000000000000000000000000020 -S31540004A500000000000000000000000000000000010 -S31540004A600000000000000000000000000000000000 -S31540004A7000000000000000000000000000000000F0 -S31540004A8000000000000000000000000000000000E0 -S31540004A9000000000000000000000000000000000D0 -S31540004AA000000000000000000000000000000000C0 -S31540004AB000000000000000000000000000000000B0 -S31540004AC000000000000000000000000000000000A0 -S31540004AD00000000000000000000000000000000090 -S31540004AE00000000000000000000000000000000080 -S31540004AF00000000000000000000000000000000070 -S31540004B00000000000000000000000000000000005F -S31540004B10000000000000000000000000000000004F -S31540004B20000000000000000000000000000000003F -S31540004B30000000000000000000000000000000002F -S31540004B40000000000000000000000000000000001F -S31540004B50000000000000000000000000000000000F -S31540004B6000000000000000000000000000000000FF -S31540004B7000000000000000000000000000000000EF -S31540004B8000000000000000000000000000000000DF -S31540004B9000000000000000000000000000000000CF -S31540004BA000000000000000000000000000000000BF -S31540004BB000000000000000000000000000000000AF -S31540004BC0000000000000000000000000000000009F -S31540004BD0000000000000000000000000000000008F -S31540004BE0000000000000000000000000000000007F -S31540004BF0000000000000000000000000000000006F -S31540004C00000000000000000000000000000000005E -S31540004C10000000000000000000000000000000004E -S31540004C20000000000000000000000000000000003E -S31540004C30000000000000000000000000000000002E -S31540004C40000000000000000000000000000000001E -S31540004C50000000000000000000000000000000000E -S31540004C6000000000000000000000000000000000FE -S31540004C7000000000000000000000000000000000EE -S31540004C8000000000000000000000000000000000DE -S31540004C9000000000000000000000000000000000CE -S31540004CA000000000000000000000000000000000BE -S31540004CB000000000000000000000000000000000AE -S31540004CC0000000000000000000000000000000009E -S31540004CD0000000000000000000000000000000008E -S31540004CE0000000000000000000000000000000007E -S31540004CF0000000000000000000000000000000006E -S31540004D00000000000000000000000000000000005D -S31540004D10000000000000000000000000000000004D -S31540004D20000000000000000000000000000000003D -S31540004D30000000000000000000000000000000002D -S31540004D40000000000000000000000000000000001D -S31540004D50000000000000000000000000000000000D -S31540004D6000000000000000000000000000000000FD -S31540004D7000000000000000000000000000000000ED -S31540004D8000000000000000000000000000000000DD -S31540004D9000000000000000000000000000000000CD -S31540004DA000000000000000000000000000000000BD -S31540004DB000000000000000000000000000000000AD -S31540004DC0000000000000000000000000000000009D -S31540004DD0000000000000000000000000000000008D -S31540004DE0000000000000000000000000000000007D -S31540004DF0000000000000000000000000000000006D -S31540004E00000000000000000000000000000000005C -S31540004E10000000000000000000000000000000004C -S31540004E20000000000000000000000000000000003C -S31540004E30000000000000000000000000000000002C -S31540004E40000000000000000000000000000000001C -S31540004E50000000000000000000000000000000000C -S31540004E6000000000000000000000000000000000FC -S31540004E7000000000000000000000000000000000EC -S31540004E8000000000000000000000000000000000DC -S31540004E9000000000000000000000000000000000CC -S31540004EA000000000000000000000000000000000BC -S31540004EB000000000000000000000000000000000AC -S31540004EC0000000000000000000000000000000009C -S31540004ED0000000000000000000000000000000008C -S31540004EE0000000000000000000000000000000007C -S31540004EF0000000000000000000000000000000006C -S31540004F00000000000000000000000000000000005B -S31540004F10000000000000000000000000000000004B -S31540004F20000000000000000000000000000000003B -S31540004F30000000000000000000000000000000002B -S31540004F40000000000000000000000000000000001B -S31540004F50000000000000000000000000000000000B -S31540004F6000000000000000000000000000000000FB -S31540004F7000000000000000000000000000000000EB -S31540004F8000000000000000000000000000000000DB -S31540004F9000000000000000000000000000000000CB -S31540004FA000000000000000000000000000000000BB -S31540004FB000000000000000000000000000000000AB -S31540004FC0000000000000000000000000000000009B -S31540004FD0000000000000000000000000000000008B -S31540004FE0000000000000000000000000000000007B -S31540004FF0000000000000000000000000000000006B -S31540005000000000000000000000000000000000005A -S31540005010000000000000000000000000000000004A -S31540005020000000000000000000000000000000003A -S31540005030000000000000000000000000000000002A -S31540005040000000000000000000000000000000001A -S31540005050000000000000000000000000000000000A -S3154000506000000000000000000000000000000000FA -S3154000507000000000000000000000000000000000EA -S3154000508000000000000000000000000000000000DA -S3154000509000000000000000000000000000000000CA -S315400050A000000000000000000000000000000000BA -S315400050B000000000000000000000000000000000AA -S315400050C0000000000000000000000000000000009A -S315400050D0000000000000000000000000000000008A -S315400050E0000000000000000000000000000000007A -S315400050F0000000000000000000000000000000006A -S315400051000000000000000000000000000000000059 -S315400051100000000000000000000000000000000049 -S315400051200000000000000000000000000000000039 -S315400051300000000000000000000000000000000029 -S315400051400000000000000000000000000000000019 -S315400051500000000000000000000000000000000009 -S3154000516000000000000000000000000000000000F9 -S3154000517000000000000000000000000000000000E9 -S3154000518000000000000000000000000000000000D9 -S3154000519000000000000000000000000000000000C9 -S315400051A000000000000000000000000000000000B9 -S315400051B000000000000000000000000000000000A9 -S315400051C00000000000000000000000000000000099 -S315400051D00000000000000000000000000000000089 -S315400051E00000000000000000000000000000000079 -S315400051F00000000000000000000000000000000069 -S315400052000000000000000000000000000000000058 -S315400052100000000000000000000000000000000048 -S315400052200000000000000000000000000000000038 -S315400052300000000000000000000000000000000028 -S315400052400000000000000000000000000000000018 -S315400052500000000000000000000000000000000008 -S3154000526000000000000000000000000000000000F8 -S3154000527000000000000000000000000000000000E8 -S3154000528000000000000000000000000000000000D8 -S3154000529000000000000000000000000000000000C8 -S315400052A000000000000000000000000000000000B8 -S315400052B000000000000000000000000000000000A8 -S315400052C00000000000000000000000000000000098 -S315400052D00000000000000000000000000000000088 -S315400052E00000000000000000000000000000000078 -S315400052F00000000000000000000000000000000068 -S315400053000000000000000000000000000000000057 -S315400053100000000000000000000000000000000047 -S315400053200000000000000000000000000000000037 -S315400053300000000000000000000000000000000027 -S315400053400000000000000000000000000000000017 -S315400053500000000000000000000000000000000007 -S3154000536000000000000000000000000000000000F7 -S3154000537000000000000000000000000000000000E7 -S3154000538000000000000000000000000000000000D7 -S3154000539000000000000000000000000000000000C7 -S315400053A000000000000000000000000000000000B7 -S315400053B000000000000000000000000000000000A7 -S315400053C00000000000000000000000000000000097 -S315400053D00000000000000000000000000000000087 -S315400053E00000000000000000000000000000000077 -S315400053F00000000000000000000000000000000067 -S315400054000000000000000000000000000000000056 -S315400054100000000000000000000000000000000046 -S315400054200000000000000000000000000000000036 -S315400054300000000000000000000000000000000026 -S315400054400000000000000000000000000000000016 -S315400054500000000000000000000000000000000006 -S3154000546000000000000000000000000000000000F6 -S3154000547000000000000000000000000000000000E6 -S3154000548000000000000000000000000000000000D6 -S3154000549000000000000000000000000000000000C6 -S315400054A000000000000000000000000000000000B6 -S315400054B000000000000000000000000000000000A6 -S315400054C00000000000000000000000000000000096 -S315400054D00000000000000000000000000000000086 -S315400054E00000000000000000000000000000000076 -S315400054F00000000000000000000000000000000066 -S315400055000000000000000000000000000000000055 -S315400055100000000000000000000000000000000045 -S315400055200000000000000000000000000000000035 -S315400055300000000000000000000000000000000025 -S315400055400000000000000000000000000000000015 -S315400055500000000000000000000000000000000005 -S3154000556000000000000000000000000000000000F5 -S3154000557000000000000000000000000000000000E5 -S3154000558000000000000000000000000000000000D5 -S3154000559000000000000000000000000000000000C5 -S315400055A000000000000000000000000000000000B5 -S315400055B000000000000000000000000000000000A5 -S315400055C00000000000000000000000000000000095 -S315400055D00000000000000000000000000000000085 -S315400055E00000000000000000000000000000000075 -S315400055F00000000000000000000000000000000065 -S315400056000000000000000000000000000000000054 -S315400056100000000000000000000000000000000044 -S315400056200000000000000000000000000000000034 -S315400056300000000000000000000000000000000024 -S315400056400000000000000000000000000000000014 -S315400056500000000000000000000000000000000004 -S3154000566000000000000000000000000000000000F4 -S3154000567000000000000000000000000000000000E4 -S3154000568000000000000000000000000000000000D4 -S3154000569000000000000000000000000000000000C4 -S315400056A000000000000000000000000000000000B4 -S315400056B000000000000000000000000000000000A4 -S315400056C00000000000000000000000000000000094 -S315400056D00000000000000000000000000000000084 -S315400056E00000000000000000000000000000000074 -S315400056F00000000000000000000000000000000064 -S315400057000000000000000000000000000000000053 -S315400057100000000000000000000000000000000043 -S315400057200000000000000000000000000000000033 -S315400057300000000000000000000000000000000023 -S315400057400000000000000000000000000000000013 -S315400057500000000000000000000000000000000003 -S3154000576000000000000000000000000000000000F3 -S3154000577000000000000000000000000000000000E3 -S3154000578000000000000000000000000000000000D3 -S3154000579000000000000000000000000000000000C3 -S315400057A000000000000000000000000000000000B3 -S315400057B000000000000000000000000000000000A3 -S315400057C00000000000000000000000000000000093 -S315400057D00000000000000000000000000000000083 -S315400057E00000000000000000000000000000000073 -S315400057F00000000000000000000000000000000063 -S315400058000000000000000000000000000000000052 -S315400058100000000000000000000000000000000042 -S315400058200000000000000000000000000000000032 -S315400058300000000000000000000000000000000022 -S315400058400000000000000000000000000000000012 -S315400058500000000000000000000000000000000002 -S3154000586000000000000000000000000000000000F2 -S3154000587000000000000000000000000000000000E2 -S3154000588000000000000000000000000000000000D2 -S3154000589000000000000000000000000000000000C2 -S315400058A000000000000000000000000000000000B2 -S315400058B000000000000000000000000000000000A2 -S315400058C00000000000000000000000000000000092 -S315400058D00000000000000000000000000000000082 -S315400058E00000000000000000000000000000000072 -S315400058F00000000000000000000000000000000062 -S315400059000000000000000000000000000000000051 -S315400059100000000000000000000000000000000041 -S315400059200000000000000000000000000000000031 -S315400059300000000000000000000000000000000021 -S315400059400000000000000000000000000000000011 -S315400059500000000000000000000000000000000001 -S3154000596000000000000000000000000000000000F1 -S3154000597000000000000000000000000000000000E1 -S3154000598000000000000000000000000000000000D1 -S3154000599000000000000000000000000000000000C1 -S315400059A000000000000000000000000000000000B1 -S315400059B000000000000000000000000000000000A1 -S315400059C00000000000000000000000000000000091 -S315400059D00000000000000000000000000000000081 -S315400059E00000000000000000000000000000000071 -S315400059F00000000000000000000000000000000061 -S31540005A000000000000000000000000000000000050 -S31540005A100000000000000000000000000000000040 -S31540005A200000000000000000000000000000000030 -S31540005A300000000000000000000000000000000020 -S31540005A400000000000000000000000000000000010 -S31540005A500000000000000000000000000000000000 -S31540005A6000000000000000000000000000000000F0 -S31540005A7000000000000000000000000000000000E0 -S31540005A8000000000000000000000000000000000D0 -S31540005A9000000000000000000000000000000000C0 -S31540005AA000000000000000000000000000000000B0 -S31540005AB000000000000000000000000000000000A0 -S31540005AC00000000000000000000000000000000090 -S31540005AD00000000000000000000000000000000080 -S31540005AE00000000000000000000000000000000070 -S31540005AF00000000000000000000000000000000060 -S31540005B00000000000000000000000000000000004F -S31540005B10000000000000000000000000000000003F -S31540005B20000000000000000000000000000000002F -S31540005B30000000000000000000000000000000001F -S31540005B40000000000000000000000000000000000F -S31540005B5000000000000000000000000000000000FF -S31540005B6000000000000000000000000000000000EF -S31540005B7000000000000000000000000000000000DF -S31540005B8000000000000000000000000000000000CF -S31540005B9000000000000000000000000000000000BF -S31540005BA000000000000000000000000000000000AF -S31540005BB0000000000000000000000000000000009F -S31540005BC0000000000000000000000000000000008F -S31540005BD0000000000000000000000000000000007F -S31540005BE0000000000000000000000000000000006F -S31540005BF0000000000000000000000000000000005F -S31540005C00000000000000000000000000000000004E -S31540005C10000000000000000000000000000000003E -S31540005C20000000000000000000000000000000002E -S31540005C30000000000000000000000000000000001E -S31540005C40000000000000000000000000000000000E -S31540005C5000000000000000000000000000000000FE -S31540005C6000000000000000000000000000000000EE -S31540005C7000000000000000000000000000000000DE -S31540005C8000000000000000000000000000000000CE -S31540005C9000000000000000000000000000000000BE -S31540005CA000000000000000000000000000000000AE -S31540005CB0000000000000000000000000000000009E -S31540005CC0000000000000000000000000000000008E -S31540005CD0000000000000000000000000000000007E -S31540005CE0000000000000000000000000000000006E -S31540005CF0000000000000000000000000000000005E -S31540005D00000000000000000000000000000000004D -S31540005D10000000000000000000000000000000003D -S31540005D20000000000000000000000000000000002D -S31540005D30000000000000000000000000000000001D -S31540005D40000000000000000000000000000000000D -S31540005D5000000000000000000000000000000000FD -S31540005D6000000000000000000000000000000000ED -S31540005D7000000000000000000000000000000000DD -S31540005D8000000000000000000000000000000000CD -S31540005D9000000000000000000000000000000000BD -S31540005DA000000000000000000000000000000000AD -S31540005DB0000000000000000000000000000000009D -S31540005DC0000000000000000000000000000000008D -S31540005DD0000000000000000000000000000000007D -S31540005DE0000000000000000000000000000000006D -S31540005DF0000000000000000000000000000000005D -S31540005E00000000000000000000000000000000004C -S31540005E10000000000000000000000000000000003C -S31540005E20000000000000000000000000000000002C -S31540005E30000000000000000000000000000000001C -S31540005E40000000000000000000000000000000000C -S31540005E5000000000000000000000000000000000FC -S31540005E6000000000000000000000000000000000EC -S31540005E7000000000000000000000000000000000DC -S31540005E8000000000000000000000000000000000CC -S31540005E9000000000000000000000000000000000BC -S31540005EA000000000000000000000000000000000AC -S31540005EB0000000000000000000000000000000009C -S31540005EC0000000000000000000000000000000008C -S31540005ED0000000000000000000000000000000007C -S31540005EE0000000000000000000000000000000006C -S31540005EF0000000000000000000000000000000005C -S31540005F00000000000000000000000000000000004B -S31540005F10000000000000000000000000000000003B -S31540005F20000000000000000000000000000000002B -S31540005F30000000000000000000000000000000001B -S31540005F40000000000000000000000000000000000B -S31540005F5000000000000000000000000000000000FB -S31540005F6000000000000000000000000000000000EB -S31540005F7000000000000000000000000000000000DB -S31540005F8000000000000000000000000000000000CB -S31540005F9000000000000000000000000000000000BB -S31540005FA000000000000000000000000000000000AB -S31540005FB0000000000000000000000000000000009B -S31540005FC0000000000000000000000000000000008B -S31540005FD0000000000000000000000000000000007B -S31540005FE0000000000000000000000000000000006B -S31540005FF0000000000000000000000000000000005B -S31540006000000000000000000000000000000000004A -S31540006010000000000000000000000000000000003A -S31540006020000000000000000000000000000000002A -S31540006030000000000000000000000000000000001A -S31540006040000000000000000000000000000000000A -S3154000605000000000000000000000000000000000FA -S3154000606000000000000000000000000000000000EA -S3154000607000000000000000000000000000000000DA -S3154000608000000000000000000000000000000000CA -S3154000609000000000000000000000000000000000BA -S315400060A000000000000000000000000000000000AA -S315400060B0000000000000000000000000000000009A -S315400060C0000000000000000000000000000000008A -S315400060D0000000000000000000000000000000007A -S315400060E0000000000000000000000000000000006A -S315400060F0000000000000000000000000000000005A -S315400061000000000000000000000000000000000049 -S315400061100000000000000000000000000000000039 -S315400061200000000000000000000000000000000029 -S315400061300000000000000000000000000000000019 -S315400061400000000000000000000000000000000009 -S3154000615000000000000000000000000000000000F9 -S3154000616000000000000000000000000000000000E9 -S3154000617000000000000000000000000000000000D9 -S3154000618000000000000000000000000000000000C9 -S3154000619000000000000000000000000000000000B9 -S315400061A000000000000000000000000000000000A9 -S315400061B00000000000000000000000000000000099 -S315400061C00000000000000000000000000000000089 -S315400061D00000000000000000000000000000000079 -S315400061E00000000000000000000000000000000069 -S315400061F00000000000000000000000000000000059 -S315400062000000000000000000000000000000000048 -S315400062100000000000000000000000000000000038 -S315400062200000000000000000000000000000000028 -S315400062300000000000000000000000000000000018 -S315400062400000000000000000000000000000000008 -S3154000625000000000000000000000000000000000F8 -S3154000626000000000000000000000000000000000E8 -S3154000627000000000000000000000000000000000D8 -S3154000628000000000000000000000000000000000C8 -S3154000629000000000000000000000000000000000B8 -S315400062A000000000000000000000000000000000A8 -S315400062B00000000000000000000000000000000098 -S315400062C00000000000000000000000000000000088 -S315400062D00000000000000000000000000000000078 -S315400062E00000000000000000000000000000000068 -S315400062F00000000000000000000000000000000058 -S315400063000000000000000000000000000000000047 -S315400063100000000000000000000000000000000037 -S315400063200000000000000000000000000000000027 -S315400063300000000000000000000000000000000017 -S315400063400000000000000000000000000000000007 -S3154000635000000000000000000000000000000000F7 -S3154000636000000000000000000000000000000000E7 -S3154000637000000000000000000000000000000000D7 -S3154000638000000000000000000000000000000000C7 -S3154000639000000000000000000000000000000000B7 -S315400063A000000000000000000000000000000000A7 -S315400063B00000000000000000000000000000000097 -S315400063C00000000000000000000000000000000087 -S315400063D00000000000000000000000000000000077 -S315400063E00000000000000000000000000000000067 -S315400063F00000000000000000000000000000000057 -S315400064000000000000000000000000000000000046 -S315400064100000000000000000000000000000000036 -S315400064200000000000000000000000000000000026 -S315400064300000000000000000000000000000000016 -S315400064400000000000000000000000000000000006 -S3154000645000000000000000000000000000000000F6 -S3154000646000000000000000000000000000000000E6 -S3154000647000000000000000000000000000000000D6 -S3154000648000000000000000000000000000000000C6 -S3154000649000000000000000000000000000000000B6 -S315400064A000000000000000000000000000000000A6 -S315400064B00000000000000000000000000000000096 -S315400064C00000000000000000000000000000000086 -S315400064D00000000000000000000000000000000076 -S315400064E00000000000000000000000000000000066 -S315400064F00000000000000000000000000000000056 -S315400065000000000000000000000000000000000045 -S315400065100000000000000000000000000000000035 -S315400065200000000000000000000000000000000025 -S315400065300000000000000000000000000000000015 -S315400065400000000000000000000000000000000005 -S3154000655000000000000000000000000000000000F5 -S3154000656000000000000000000000000000000000E5 -S3154000657000000000000000000000000000000000D5 -S3154000658000000000000000000000000000000000C5 -S3154000659000000000000000000000000000000000B5 -S315400065A000000000000000000000000000000000A5 -S315400065B00000000000000000000000000000000095 -S315400065C00000000000000000000000000000000085 -S315400065D00000000000000000000000000000000075 -S315400065E00000000000000000000000000000000065 -S315400065F00000000000000000000000000000000055 -S315400066000000000000000000000000000000000044 -S315400066100000000000000000000000000000000034 -S315400066200000000000000000000000000000000024 -S315400066300000000000000000000000000000000014 -S315400066400000000000000000000000000000000004 -S3154000665000000000000000000000000000000000F4 -S3154000666000000000000000000000000000000000E4 -S3154000667000000000000000000000000000000000D4 -S3154000668000000000000000000000000000000000C4 -S3154000669000000000000000000000000000000000B4 -S315400066A000000000000000000000000000000000A4 -S315400066B00000000000000000000000000000000094 -S315400066C00000000000000000000000000000000084 -S315400066D00000000000000000000000000000000074 -S315400066E00000000000000000000000000000000064 -S315400066F00000000000000000000000000000000054 -S315400067000000000000000000000000000000000043 -S315400067100000000000000000000000000000000033 -S315400067200000000000000000000000000000000023 -S315400067300000000000000000000000000000000013 -S315400067400000000000000000000000000000000003 -S3154000675000000000000000000000000000000000F3 -S3154000676000000000000000000000000000000000E3 -S3154000677000000000000000000000000000000000D3 -S3154000678000000000000000000000000000000000C3 -S3154000679000000000000000000000000000000000B3 -S315400067A000000000000000000000000000000000A3 -S315400067B00000000000000000000000000000000093 -S315400067C00000000000000000000000000000000083 -S315400067D00000000000000000000000000000000073 -S315400067E00000000000000000000000000000000063 -S315400067F00000000000000000000000000000000053 -S315400068000000000000000000000000000000000042 -S315400068100000000000000000000000000000000032 -S315400068200000000000000000000000000000000022 -S315400068300000000000000000000000000000000012 -S315400068400000000000000000000000000000000002 -S3154000685000000000000000000000000000000000F2 -S3154000686000000000000000000000000000000000E2 -S3154000687000000000000000000000000000000000D2 -S3154000688000000000000000000000000000000000C2 -S3154000689000000000000000000000000000000000B2 -S315400068A000000000000000000000000000000000A2 -S315400068B00000000000000000000000000000000092 -S315400068C00000000000000000000000000000000082 -S315400068D00000000000000000000000000000000072 -S315400068E00000000000000000000000000000000062 -S315400068F00000000000000000000000000000000052 -S315400069000000000000000000000000000000000041 -S315400069100000000000000000000000000000000031 -S315400069200000000000000000000000000000000021 -S315400069300000000000000000000000000000000011 -S315400069400000000000000000000000000000000001 -S3154000695000000000000000000000000000000000F1 -S3154000696000000000000000000000000000000000E1 -S3154000697000000000000000000000000000000000D1 -S3154000698000000000000000000000000000000000C1 -S3154000699000000000000000000000000000000000B1 -S315400069A000000000000000000000000000000000A1 -S315400069B00000000000000000000000000000000091 -S315400069C00000000000000000000000000000000081 -S315400069D00000000000000000000000000000000071 -S315400069E00000000000000000000000000000000061 -S315400069F00000000000000000000000000000000051 -S31540006A000000000000000000000000000000000040 -S31540006A100000000000000000000000000000000030 -S31540006A200000000000000000000000000000000020 -S31540006A300000000000000000000000000000000010 -S31540006A400000000000000000000000000000000000 -S31540006A5000000000000000000000000000000000F0 -S31540006A6000000000000000000000000000000000E0 -S31540006A7000000000000000000000000000000000D0 -S31540006A8000000000000000000000000000000000C0 -S31540006A9000000000000000000000000000000000B0 -S31540006AA000000000000000000000000000000000A0 -S31540006AB00000000000000000000000000000000090 -S31540006AC00000000000000000000000000000000080 -S31540006AD00000000000000000000000000000000070 -S31540006AE00000000000000000000000000000000060 -S31540006AF00000000000000000000000000000000050 -S31540006B00000000000000000000000000000000003F -S31540006B10000000000000000000000000000000002F -S31540006B20000000000000000000000000000000001F -S31540006B30000000000000000000000000000000000F -S31540006B4000000000000000000000000000000000FF -S31540006B5000000000000000000000000000000000EF -S31540006B6000000000000000000000000000000000DF -S31540006B7000000000000000000000000000000000CF -S31540006B8000000000000000000000000000000000BF -S31540006B9000000000000000000000000000000000AF -S31540006BA0000000000000000000000000000000009F -S31540006BB0000000000000000000000000000000008F -S31540006BC0000000000000000000000000000000007F -S31540006BD0000000000000000000000000000000006F -S31540006BE0000000000000000000000000000000005F -S31540006BF0000000000000000000000000000000004F -S31540006C00000000000000000000000000000000003E -S31540006C10000000000000000000000000000000002E -S31540006C20000000000000000000000000000000001E -S31540006C30000000000000000000000000000000000E -S31540006C4000000000000000000000000000000000FE -S31540006C5000000000000000000000000000000000EE -S31540006C6000000000000000000000000000000000DE -S31540006C7000000000000000000000000000000000CE -S31540006C8000000000000000000000000000000000BE -S31540006C9000000000000000000000000000000000AE -S31540006CA0000000000000000000000000000000009E -S31540006CB0000000000000000000000000000000008E -S31540006CC0000000000000000000000000000000007E -S31540006CD0000000000000000000000000000000006E -S31540006CE0000000000000000000000000000000005E -S31540006CF0000000000000000000000000000000004E -S31540006D00000000000000000000000000000000003D -S31540006D10000000000000000000000000000000002D -S31540006D20000000000000000000000000000000001D -S31540006D30000000000000000000000000000000000D -S31540006D4000000000000000000000000000000000FD -S31540006D5000000000000000000000000000000000ED -S31540006D6000000000000000000000000000000000DD -S31540006D7000000000000000000000000000000000CD -S31540006D8000000000000000000000000000000000BD -S31540006D9000000000000000000000000000000000AD -S31540006DA0000000000000000000000000000000009D -S31540006DB0000000000000000000000000000000008D -S31540006DC0000000000000000000000000000000007D -S31540006DD0000000000000000000000000000000006D -S31540006DE0000000000000000000000000000000005D -S31540006DF0000000000000000000000000000000004D -S31540006E00000000000000000000000000000000003C -S31540006E10000000000000000000000000000000002C -S31540006E20000000000000000000000000000000001C -S31540006E30000000000000000000000000000000000C -S31540006E4000000000000000000000000000000000FC -S31540006E5000000000000000000000000000000000EC -S31540006E6000000000000000000000000000000000DC -S31540006E7000000000000000000000000000000000CC -S31540006E8000000000000000000000000000000000BC -S31540006E9000000000000000000000000000000000AC -S31540006EA0000000000000000000000000000000009C -S31540006EB0000000000000000000000000000000008C -S31540006EC0000000000000000000000000000000007C -S31540006ED0000000000000000000000000000000006C -S31540006EE0000000000000000000000000000000005C -S31540006EF0000000000000000000000000000000004C -S31540006F00000000000000000000000000000000003B -S31540006F10000000000000000000000000000000002B -S31540006F20000000000000000000000000000000001B -S31540006F30000000000000000000000000000000000B -S31540006F4000000000000000000000000000000000FB -S31540006F5000000000000000000000000000000000EB -S31540006F6000000000000000000000000000000000DB -S31540006F7000000000000000000000000000000000CB -S31540006F8000000000000000000000000000000000BB -S31540006F9000000000000000000000000000000000AB -S31540006FA0000000000000000000000000000000009B -S31540006FB0000000000000000000000000000000008B -S31540006FC0000000000000000000000000000000007B -S31540006FD0000000000000000000000000000000006B -S31540006FE0000000000000000000000000000000005B -S31540006FF0000000000000000000000000000000004B -S31540007000000000000000000000000000000000003A -S31540007010000000000000000000000000000000002A -S31540007020000000000000000000000000000000001A -S31540007030000000000000000000000000000000000A -S3154000704000000000000000000000000000000000FA -S3154000705000000000000000000000000000000000EA -S3154000706000000000000000000000000000000000DA -S3154000707000000000000000000000000000000000CA -S3154000708000000000000000000000000000000000BA -S3154000709000000000000000000000000000000000AA -S315400070A0000000000000000000000000000000009A -S315400070B0000000000000000000000000000000008A -S315400070C0000000000000000000000000000000007A -S315400070D0000000000000000000000000000000006A -S315400070E0000000000000000000000000000000005A -S315400070F0000000000000000000000000000000004A -S315400071000000000000000000000000000000000039 -S315400071100000000000000000000000000000000029 -S315400071200000000000000000000000000000000019 -S315400071300000000000000000000000000000000009 -S3154000714000000000000000000000000000000000F9 -S3154000715000000000000000000000000000000000E9 -S3154000716000000000000000000000000000000000D9 -S3154000717000000000000000000000000000000000C9 -S3154000718000000000000000000000000000000000B9 -S3154000719000000000000000000000000000000000A9 -S315400071A00000000000000000000000000000000099 -S315400071B00000000000000000000000000000000089 -S315400071C00000000000000000000000000000000079 -S315400071D00000000000000000000000000000000069 -S315400071E00000000000000000000000000000000059 -S315400071F00000000000000000000000000000000049 -S315400072000000000000000000000000000000000038 -S315400072100000000000000000000000000000000028 -S315400072200000000000000000000000000000000018 -S315400072300000000000000000000000000000000008 -S3154000724000000000000000000000000000000000F8 -S3154000725000000000000000000000000000000000E8 -S3154000726000000000000000000000000000000000D8 -S3154000727000000000000000000000000000000000C8 -S3154000728000000000000000000000000000000000B8 -S3154000729000000000000000000000000000000000A8 -S315400072A00000000000000000000000000000000098 -S315400072B00000000000000000000000000000000088 -S315400072C00000000000000000000000000000000078 -S315400072D00000000000000000000000000000000068 -S315400072E00000000000000000000000000000000058 -S315400072F00000000000000000000000000000000048 -S315400073000000000000000000000000000000000037 -S315400073100000000000000000000000000000000027 -S315400073200000000000000000000000000000000017 -S315400073300000000000000000000000000000000007 -S3154000734000000000000000000000000000000000F7 -S3154000735000000000000000000000000000000000E7 -S3154000736000000000000000000000000000000000D7 -S3154000737000000000000000000000000000000000C7 -S3154000738000000000000000000000000000000000B7 -S3154000739000000000000000000000000000000000A7 -S315400073A00000000000000000000000000000000097 -S315400073B00000000000000000000000000000000087 -S315400073C00000000000000000000000000000000077 -S315400073D00000000000000000000000000000000067 -S315400073E00000000000000000000000000000000057 -S315400073F00000000000000000000000000000000047 -S315400074000000000000000000000000000000000036 -S315400074100000000000000000000000000000000026 -S315400074200000000000000000000000000000000016 -S315400074300000000000000000000000000000000006 -S3154000744000000000000000000000000000000000F6 -S3154000745000000000000000000000000000000000E6 -S3154000746000000000000000000000000000000000D6 -S3154000747000000000000000000000000000000000C6 -S3154000748000000000000000000000000000000000B6 -S3154000749000000000000000000000000000000000A6 -S315400074A00000000000000000000000000000000096 -S315400074B00000000000000000000000000000000086 -S315400074C00000000000000000000000000000000076 -S315400074D00000000000000000000000000000000066 -S315400074E00000000000000000000000000000000056 -S315400074F00000000000000000000000000000000046 -S315400075000000000000000000000000000000000035 -S315400075100000000000000000000000000000000025 -S315400075200000000000000000000000000000000015 -S315400075300000000000000000000000000000000005 -S3154000754000000000000000000000000000000000F5 -S3154000755000000000000000000000000000000000E5 -S3154000756000000000000000000000000000000000D5 -S3154000757000000000000000000000000000000000C5 -S3154000758000000000000000000000000000000000B5 -S3154000759000000000000000000000000000000000A5 -S315400075A00000000000000000000000000000000095 -S315400075B00000000000000000000000000000000085 -S315400075C00000000000000000000000000000000075 -S315400075D00000000000000000000000000000000065 -S315400075E00000000000000000000000000000000055 -S315400075F00000000000000000000000000000000045 -S315400076000000000000000000000000000000000034 -S315400076100000000000000000000000000000000024 -S315400076200000000000000000000000000000000014 -S315400076300000000000000000000000000000000004 -S3154000764000000000000000000000000000000000F4 -S3154000765000000000000000000000000000000000E4 -S3154000766000000000000000000000000000000000D4 -S3154000767000000000000000000000000000000000C4 -S3154000768000000000000000000000000000000000B4 -S3154000769000000000000000000000000000000000A4 -S315400076A00000000000000000000000000000000094 -S315400076B00000000000000000000000000000000084 -S315400076C00000000000000000000000000000000074 -S315400076D00000000000000000000000000000000064 -S315400076E00000000000000000000000000000000054 -S315400076F00000000000000000000000000000000044 -S315400077000000000000000000000000000000000033 -S315400077100000000000000000000000000000000023 -S315400077200000000000000000000000000000000013 -S315400077300000000000000000000000000000000003 -S3154000774000000000000000000000000000000000F3 -S3154000775000000000000000000000000000000000E3 -S3154000776000000000000000000000000000000000D3 -S3154000777000000000000000000000000000000000C3 -S3154000778000000000000000000000000000000000B3 -S3154000779000000000000000000000000000000000A3 -S315400077A00000000000000000000000000000000093 -S315400077B00000000000000000000000000000000083 -S315400077C00000000000000000000000000000000073 -S315400077D00000000000000000000000000000000063 -S315400077E00000000000000000000000000000000053 -S315400077F00000000000000000000000000000000043 -S315400078000000000000000000000000000000000032 -S315400078100000000000000000000000000000000022 -S315400078200000000000000000000000000000000012 -S315400078300000000000000000000000000000000002 -S3154000784000000000000000000000000000000000F2 -S3154000785000000000000000000000000000000000E2 -S3154000786000000000000000000000000000000000D2 -S3154000787000000000000000000000000000000000C2 -S3154000788000000000000000000000000000000000B2 -S3154000789000000000000000000000000000000000A2 -S315400078A00000000000000000000000000000000092 -S315400078B00000000000000000000000000000000082 -S315400078C00000000000000000000000000000000072 -S315400078D00000000000000000000000000000000062 -S315400078E00000000000000000000000000000000052 -S315400078F00000000000000000000000000000000042 -S315400079000000000000000000000000000000000031 -S315400079100000000000000000000000000000000021 -S315400079200000000000000000000000000000000011 -S315400079300000000000000000000000000000000001 -S3154000794000000000000000000000000000000000F1 -S3154000795000000000000000000000000000000000E1 -S3154000796000000000000000000000000000000000D1 -S3154000797000000000000000000000000000000000C1 -S3154000798000000000000000000000000000000000B1 -S3154000799000000000000000000000000000000000A1 -S315400079A00000000000000000000000000000000091 -S315400079B00000000000000000000000000000000081 -S315400079C00000000000000000000000000000000071 -S315400079D00000000000000000000000000000000061 -S315400079E00000000000000000000000000000000051 -S315400079F00000000000000000000000000000000041 -S31540007A000000000000000000000000000000000030 -S31540007A100000000000000000000000000000000020 -S31540007A200000000000000000000000000000000010 -S31540007A300000000000000000000000000000000000 -S31540007A4000000000000000000000000000000000F0 -S31540007A5000000000000000000000000000000000E0 -S31540007A6000000000000000000000000000000000D0 -S31540007A7000000000000000000000000000000000C0 -S31540007A8000000000000000000000000000000000B0 -S31540007A9000000000000000000000000000000000A0 -S31540007AA00000000000000000000000000000000090 -S31540007AB00000000000000000000000000000000080 -S31540007AC00000000000000000000000000000000070 -S31540007AD00000000000000000000000000000000060 -S31540007AE00000000000000000000000000000000050 -S31540007AF00000000000000000000000000000000040 -S31540007B00000000000000000000000000000000002F -S31540007B10000000000000000000000000000000001F -S31540007B20000000000000000000000000000000000F -S31540007B3000000000000000000000000000000000FF -S31540007B4000000000000000000000000000000000EF -S31540007B5000000000000000000000000000000000DF -S31540007B6000000000000000000000000000000000CF -S31540007B7000000000000000000000000000000000BF -S31540007B8000000000000000000000000000000000AF -S31540007B90000000000000000000000000000000009F -S31540007BA0000000000000000000000000000000008F -S31540007BB0000000000000000000000000000000007F -S31540007BC0000000000000000000000000000000006F -S31540007BD0000000000000000000000000000000005F -S31540007BE0000000000000000000000000000000004F -S31540007BF0000000000000000000000000000000003F -S31540007C00000000000000000000000000000000002E -S31540007C10000000000000000000000000000000001E -S31540007C20000000000000000000000000000000000E -S31540007C3000000000000000000000000000000000FE -S31540007C4000000000000000000000000000000000EE -S31540007C5000000000000000000000000000000000DE -S31540007C6000000000000000000000000000000000CE -S31540007C7000000000000000000000000000000000BE -S31540007C8000000000000000000000000000000000AE -S31540007C90000000000000000000000000000000009E -S31540007CA0000000000000000000000000000000008E -S31540007CB0000000000000000000000000000000007E -S31540007CC0000000000000000000000000000000006E -S31540007CD0000000000000000000000000000000005E -S31540007CE0000000000000000000000000000000004E -S31540007CF0000000000000000000000000000000003E -S31540007D00000000000000000000000000000000002D -S31540007D10000000000000000000000000000000001D -S31540007D20000000000000000000000000000000000D -S31540007D3000000000000000000000000000000000FD -S31540007D4000000000000000000000000000000000ED -S31540007D5000000000000000000000000000000000DD -S31540007D6000000000000000000000000000000000CD -S31540007D7000000000000000000000000000000000BD -S31540007D8000000000000000000000000000000000AD -S31540007D90000000000000000000000000000000009D -S31540007DA0000000000000000000000000000000008D -S31540007DB0000000000000000000000000000000007D -S31540007DC0000000000000000000000000000000006D -S31540007DD0000000000000000000000000000000005D -S31540007DE0000000000000000000000000000000004D -S31540007DF0000000000000000000000000000000003D -S31540007E00000000000000000000000000000000002C -S31540007E10000000000000000000000000000000001C -S31540007E20000000000000000000000000000000000C -S31540007E3000000000000000000000000000000000FC -S31540007E4000000000000000000000000000000000EC -S31540007E5000000000000000000000000000000000DC -S31540007E6000000000000000000000000000000000CC -S31540007E7000000000000000000000000000000000BC -S31540007E8000000000000000000000000000000000AC -S31540007E90000000000000000000000000000000009C -S31540007EA0000000000000000000000000000000008C -S31540007EB0000000000000000000000000000000007C -S31540007EC0000000000000000000000000000000006C -S31540007ED0000000000000000000000000000000005C -S31540007EE0000000000000000000000000000000004C -S31540007EF0000000000000000000000000000000003C -S31540007F00000000000000000000000000000000002B -S31540007F10000000000000000000000000000000001B -S31540007F20000000000000000000000000000000000B -S31540007F3000000000000000000000000000000000FB -S31540007F4000000000000000000000000000000000EB -S31540007F5000000000000000000000000000000000DB -S31540007F6000000000000000000000000000000000CB -S31540007F7000000000000000000000000000000000BB -S31540007F8000000000000000000000000000000000AB -S31540007F90000000000000000000000000000000009B -S31540007FA0000000000000000000000000000000008B -S31540007FB0000000000000000000000000000000007B -S31540007FC0000000000000000000000000000000006B -S31540007FD0000000000000000000000000000000005B -S31540007FE0000000000000000000000000000000004B -S31540007FF0000000000000000000000000000000003B -S315400080009DE3BF9081C7E00881E8000003000010AF -S31540008010C48000408088800112BFFFFE010000003E -S315400080209DE3BF909DE3BF909DE3BF909DE3BF90CE -S315400080309DE3BF909DE3BF9021044444A0142111C9 -S3154000804023088888A2146222250CCCCCA414A3331E -S3154000805027111111A614E04429155555A815215587 -S315400080602B199999AA1562662D1DDDDDAC15A377EE -S315400080702F222222AE15E08801100000E03FBFE02B -S31540008080E43FBFE8E83FBFF0EC3FBFF88210001E78 -S315400080908220601CC0A041E082206008C0A041E070 -S315400080A082206008C0A041E082206008C0A041E074 -S315400080B0C0A002209DE3BF909DE3BF9081E80000F1 -S315400080C081E800000100000001000000E01FBFE061 -S315400080D0E41FBFE8E81FBFF0EC1FBFF80100000037 -S315400080E00100000081E8000081E8000081E800000E -S315400080F081E8000081E8000081C7E00881E80000CF -S31540008100A7500000AA102400A8102300EC854320A5 -S31540008110EA8503202F100020AE15E150EE05C00081 -S31540008120E805C000EA05E004EC05E008AC15A0004F -S31540008130C0A58300EA250000AE05E00C2B10002008 -S31540008140AA156150EE25400081C4400081CC8000D4 -S3154000815000000000010000000000000000000000D8 -S3154000816000000000000000000000000000000000C9 -S3154000817000000000000000000000000000000000B9 -S3154000818000000000000000000000000000000000A9 -S315400081900000000001000000010000000100000096 -S315400081A00100000001000000010000000100000085 -S315400081B00100000001000000010000000100000075 -S315400081C00100000001000000010000000100000065 -S315400081D00100000001000000010000000100000055 -S315400081E00100000001000000010000000100000045 -S315400081F00100000001000000010000000100000035 -S315400082000100000001000000010000000100000024 -S315400082100100000001000000010000000100000014 -S315400082200100000001000000010000000100000004 -S3154000823001000000010000000100000001000000F4 -S3154000824001000000010000000100000001000000E4 -S3154000825001000000010000000100000001000000D4 -S3154000826001000000010000000100000001000000C4 -S3154000827001000000010000000100000001000000B4 -S3154000828001000000010000000100000001000000A4 -S315400082900100000001000000010000000100000094 -S315400082A00100000001000000010000000100000084 -S315400082B00100000001000000010000000100000074 -S315400082C00100000001000000010000000100000064 -S315400082D00100000001000000010000000100000054 -S315400082E00100000001000000010000000100000044 -S315400082F00100000001000000010000000100000034 -S315400083000100000001000000010000000100000023 -S315400083100100000001000000010000000100000013 -S315400083200100000001000000010000000100000003 -S3154000833001000000010000000100000001000000F3 -S3154000834001000000010000000100000001000000E3 -S3154000835001000000010000000100000001000000D3 -S3154000836001000000010000000100000001000000C3 -S3154000837001000000010000000100000001000000B3 -S3154000838001000000010000000100000001000000A3 -S315400083900100000001000000010000000100000093 -S315400083A00100000001000000010000000100000083 -S315400083B00100000001000000010000000100000073 -S315400083C00100000001000000010000000100000063 -S315400083D00100000001000000010000000100000053 -S315400083E00100000001000000010000000100000043 -S315400083F00100000001000000010000000100000033 -S315400084000100000001000000010000000100000022 -S315400084100100000001000000010000000100000012 -S315400084200100000001000000010000000100000002 -S3154000843001000000010000000100000001000000F2 -S3154000844001000000010000000100000001000000E2 -S3154000845001000000010000000100000001000000D2 -S3154000846001000000010000000100000001000000C2 -S3154000847001000000010000000100000001000000B2 -S3154000848001000000010000000100000001000000A2 -S315400084900100000001000000010000000100000092 -S315400084A00100000001000000010000000100000082 -S315400084B00100000001000000010000000100000072 -S315400084C00100000001000000010000000100000062 -S315400084D00100000001000000010000000100000052 -S315400084E00100000001000000010000000100000042 -S315400084F00100000001000000010000000100000032 -S315400085000100000001000000010000000100000021 -S315400085100100000001000000010000000100000011 -S315400085200100000001000000010000000100000001 -S3154000853001000000010000000100000001000000F1 -S3154000854001000000010000000100000001000000E1 -S3154000855001000000010000000100000001000000D1 -S3154000856001000000010000000100000001000000C1 -S3154000857001000000010000000100000001000000B1 -S3154000858001000000010000000100000001000000A1 -S315400085900100000001000000010000000100000091 -S315400085A00100000001000000010000000100000081 -S315400085B00100000001000000010000000100000071 -S315400085C00100000001000000010000000100000061 -S315400085D00100000001000000010000000100000051 -S315400085E00100000001000000010000000100000041 -S315400085F00100000001000000010000000100000031 -S315400086000100000001000000010000000100000020 -S315400086100100000001000000010000000100000010 -S315400086200100000001000000010000000100000000 -S3154000863001000000010000000100000001000000F0 -S3154000864001000000010000000100000001000000E0 -S3154000865001000000010000000100000001000000D0 -S3154000866001000000010000000100000001000000C0 -S3154000867001000000010000000100000001000000B0 -S3154000868001000000010000000100000001000000A0 -S315400086900100000001000000010000000100000090 -S315400086A00100000001000000010000000100000080 -S315400086B00100000001000000010000000100000070 -S315400086C00100000001000000010000000100000060 -S315400086D00100000001000000010000000100000050 -S315400086E00100000001000000010000000100000040 -S315400086F00100000001000000010000000100000030 -S31540008700010000000100000001000000010000001F -S31540008710010000000100000001000000010000000F -S3154000872001000000010000000100000001000000FF -S3154000873001000000010000000100000001000000EF -S3154000874001000000010000000100000001000000DF -S3154000875001000000010000000100000001000000CF -S3154000876001000000010000000100000001000000BF -S3154000877001000000010000000100000001000000AF -S31540008780010000000100000001000000010000009F -S31540008790010000000100000001000000010000008F -S315400087A0010000000100000001000000010000007F -S315400087B0010000000100000001000000010000006F -S315400087C0010000000100000001000000010000005F -S315400087D0010000000100000001000000010000004F -S315400087E0010000000100000001000000010000003F -S315400087F0010000000100000001000000010000002F -S31540008800010000000100000001000000010000001E -S31540008810010000000100000001000000010000000E -S3154000882001000000010000000100000001000000FE -S3154000883001000000010000000100000001000000EE -S3154000884001000000010000000100000001000000DE -S3154000885001000000010000000100000001000000CE -S3154000886001000000010000000100000001000000BE -S3154000887001000000010000000100000001000000AE -S31540008880010000000100000001000000010000009E -S31540008890010000000100000001000000010000008E -S315400088A0010000000100000001000000010000007E -S315400088B0010000000100000001000000010000006E -S315400088C0010000000100000001000000010000005E -S315400088D0010000000100000001000000010000004E -S315400088E0010000000100000001000000010000003E -S315400088F0010000000100000001000000010000002E -S31540008900010000000100000001000000010000001D -S31540008910010000000100000001000000010000000D -S3154000892001000000010000000100000001000000FD -S3154000893001000000010000000100000001000000ED -S3154000894001000000010000000100000001000000DD -S3154000895001000000010000000100000001000000CD -S3154000896001000000010000000100000001000000BD -S3154000897001000000010000000100000001000000AD -S31540008980010000000100000001000000010000009D -S31540008990010000000100000001000000010000008D -S315400089A0010000000100000001000000010000007D -S315400089B0010000000100000001000000010000006D -S315400089C0010000000100000001000000010000005D -S315400089D0010000000100000001000000010000004D -S315400089E0010000000100000001000000010000003D -S315400089F0010000000100000001000000010000002D -S31540008A00010000000100000001000000010000001C -S31540008A10010000000100000001000000010000000C -S31540008A2001000000010000000100000001000000FC -S31540008A3001000000010000000100000001000000EC -S31540008A4001000000010000000100000001000000DC -S31540008A5001000000010000000100000001000000CC -S31540008A6001000000010000000100000001000000BC -S31540008A7001000000010000000100000001000000AC -S31540008A80010000000100000001000000010000009C -S31540008A90010000000100000001000000010000008C -S31540008AA0010000000100000001000000010000007C -S31540008AB0010000000100000001000000010000006C -S31540008AC0010000000100000001000000010000005C -S31540008AD0010000000100000001000000010000004C -S31540008AE0010000000100000001000000010000003C -S31540008AF0010000000100000001000000010000002C -S31540008B00010000000100000001000000010000001B -S31540008B10010000000100000001000000010000000B -S31540008B2001000000010000000100000001000000FB -S31540008B3001000000010000000100000001000000EB -S31540008B4001000000010000000100000001000000DB -S31540008B5001000000010000000100000001000000CB -S31540008B6001000000010000000100000001000000BB -S31540008B7001000000010000000100000001000000AB -S31540008B80010000000100000001000000010000009B -S31540008B90010000000100000001000000010000008B -S31540008BA0010000000100000001000000010000007B -S31540008BB0010000000100000001000000010000006B -S31540008BC0010000000100000001000000010000005B -S31540008BD0010000000100000001000000010000004B -S31540008BE0010000000100000001000000010000003B -S31540008BF0010000000100000001000000010000002B -S31540008C00010000000100000001000000010000001A -S31540008C10010000000100000001000000010000000A -S31540008C2001000000010000000100000001000000FA -S31540008C3001000000010000000100000001000000EA -S31540008C4001000000010000000100000001000000DA -S31540008C5001000000010000000100000001000000CA -S31540008C6001000000010000000100000001000000BA -S31540008C7001000000010000000100000001000000AA -S31540008C80010000000100000001000000010000009A -S31540008C90010000000100000001000000010000008A -S31540008CA0010000000100000001000000010000007A -S31540008CB0010000000100000001000000010000006A -S31540008CC0010000000100000001000000010000005A -S31540008CD0010000000100000001000000010000004A -S31540008CE0010000000100000001000000010000003A -S31540008CF0010000000100000001000000010000002A -S31540008D000100000001000000010000000100000019 -S31540008D100100000001000000010000000100000009 -S31540008D2001000000010000000100000001000000F9 -S31540008D3001000000010000000100000001000000E9 -S31540008D4001000000010000000100000001000000D9 -S31540008D5001000000010000000100000001000000C9 -S31540008D6001000000010000000100000001000000B9 -S31540008D7001000000010000000100000001000000A9 -S31540008D800100000001000000010000000100000099 -S31540008D900100000001000000010000000100000089 -S31540008DA00100000001000000010000000100000079 -S31540008DB00100000001000000010000000100000069 -S31540008DC00100000001000000010000000100000059 -S31540008DD00100000001000000010000000100000049 -S31540008DE00100000001000000010000000100000039 -S31540008DF00100000001000000010000000100000029 -S31540008E000100000001000000010000000100000018 -S31540008E100100000001000000010000000100000008 -S31540008E2001000000010000000100000001000000F8 -S31540008E3001000000010000000100000001000000E8 -S31540008E4001000000010000000100000001000000D8 -S31540008E5001000000010000000100000001000000C8 -S31540008E6001000000010000000100000001000000B8 -S31540008E7001000000010000000100000001000000A8 -S31540008E800100000001000000010000000100000098 -S31540008E900100000001000000010000000100000088 -S31540008EA00100000001000000010000000100000078 -S31540008EB00100000001000000010000000100000068 -S31540008EC00100000001000000010000000100000058 -S31540008ED00100000001000000010000000100000048 -S31540008EE00100000001000000010000000100000038 -S31540008EF00100000001000000010000000100000028 -S31540008F000100000001000000010000000100000017 -S31540008F100100000001000000010000000100000007 -S31540008F2001000000010000000100000001000000F7 -S31540008F3001000000010000000100000001000000E7 -S31540008F4001000000010000000100000001000000D7 -S31540008F5001000000010000000100000001000000C7 -S31540008F6001000000010000000100000001000000B7 -S31540008F7001000000010000000100000001000000A7 -S31540008F800100000001000000010000000100000097 -S31540008F900100000001000000010000000100000087 -S31540008FA00100000001000000010000000100000077 -S31540008FB00100000001000000010000000100000067 -S31540008FC00100000001000000010000000100000057 -S31540008FD00100000001000000010000000100000047 -S31540008FE00100000001000000010000000100000037 -S31540008FF00100000001000000010000000100000027 -S315400090000100000001000000010000000100000016 -S315400090100100000001000000010000000100000006 -S3154000902001000000010000000100000001000000F6 -S3154000903001000000010000000100000001000000E6 -S3154000904001000000010000000100000001000000D6 -S3154000905001000000010000000100000001000000C6 -S3154000906001000000010000000100000001000000B6 -S3154000907001000000010000000100000001000000A6 -S315400090800100000001000000010000000100000096 -S315400090900100000001000000010000000100000086 -S315400090A00100000001000000010000000100000076 -S315400090B00100000001000000010000000100000066 -S315400090C00100000001000000010000000100000056 -S315400090D00100000001000000010000000100000046 -S315400090E00100000001000000010000000100000036 -S315400090F00100000001000000010000000100000026 -S315400091000100000001000000010000000100000015 -S315400091100100000001000000010000000100000005 -S3154000912001000000010000000100000001000000F5 -S3154000913001000000010000000100000001000000E5 -S3154000914001000000010000000100000001000000D5 -S3154000915001000000010000000100000001000000C5 -S3154000916001000000010000000100000001000000B5 -S3154000917001000000010000000100000001000000A5 -S315400091800100000001000000010000000100000095 -S315400091900100000001000000010000000100000085 -S315400091A00100000001000000010000000100000075 -S315400091B00100000001000000010000000100000065 -S315400091C00100000001000000010000000100000055 -S315400091D00100000001000000010000000100000045 -S315400091E00100000001000000010000000100000035 -S315400091F00100000001000000010000000100000025 -S315400092000100000001000000010000000100000014 -S315400092100100000001000000010000000100000004 -S3154000922001000000010000000100000001000000F4 -S3154000923001000000010000000100000001000000E4 -S3154000924001000000010000000100000001000000D4 -S3154000925001000000010000000100000001000000C4 -S3154000926001000000010000000100000001000000B4 -S3154000927001000000010000000100000001000000A4 -S315400092800100000001000000010000000100000094 -S315400092900100000001000000010000000100000084 -S315400092A00100000001000000010000000100000074 -S315400092B00100000001000000010000000100000064 -S315400092C00100000001000000010000000100000054 -S315400092D00100000001000000010000000100000044 -S315400092E00100000001000000010000000100000034 -S315400092F00100000001000000010000000100000024 -S315400093000100000001000000010000000100000013 -S315400093100100000001000000010000000100000003 -S3154000932001000000010000000100000001000000F3 -S3154000933001000000010000000100000001000000E3 -S3154000934001000000010000000100000001000000D3 -S3154000935001000000010000000100000001000000C3 -S3154000936001000000010000000100000001000000B3 -S3154000937001000000010000000100000001000000A3 -S315400093800100000001000000010000000100000093 -S315400093900100000001000000010000000100000083 -S315400093A00100000001000000010000000100000073 -S315400093B00100000001000000010000000100000063 -S315400093C00100000001000000010000000100000053 -S315400093D00100000001000000010000000100000043 -S315400093E00100000001000000010000000100000033 -S315400093F00100000001000000010000000100000023 -S315400094000100000001000000010000000100000012 -S315400094100100000001000000010000000100000002 -S3154000942001000000010000000100000001000000F2 -S3154000943001000000010000000100000001000000E2 -S3154000944001000000010000000100000001000000D2 -S3154000945001000000010000000100000001000000C2 -S3154000946001000000010000000100000001000000B2 -S3154000947001000000010000000100000001000000A2 -S315400094800100000001000000010000000100000092 -S315400094900100000001000000010000000100000082 -S315400094A00100000001000000010000000100000072 -S315400094B00100000001000000010000000100000062 -S315400094C00100000001000000010000000100000052 -S315400094D00100000001000000010000000100000042 -S315400094E00100000001000000010000000100000032 -S315400094F00100000001000000010000000100000022 -S315400095000100000001000000010000000100000011 -S315400095100100000001000000010000000100000001 -S3154000952001000000010000000100000001000000F1 -S3154000953001000000010000000100000001000000E1 -S3154000954001000000010000000100000001000000D1 -S3154000955001000000010000000100000001000000C1 -S3154000956001000000010000000100000001000000B1 -S3154000957001000000010000000100000001000000A1 -S315400095800100000001000000010000000100000091 -S315400095900100000001000000010000000100000081 -S315400095A00100000001000000010000000100000071 -S315400095B00100000001000000010000000100000061 -S315400095C00100000001000000010000000100000051 -S315400095D00100000001000000010000000100000041 -S315400095E00100000001000000010000000100000031 -S315400095F00100000001000000010000000100000021 -S315400096000100000001000000010000000100000010 -S315400096100100000001000000010000000100000000 -S3154000962001000000010000000100000001000000F0 -S3154000963001000000010000000100000001000000E0 -S3154000964001000000010000000100000001000000D0 -S3154000965001000000010000000100000001000000C0 -S3154000966001000000010000000100000001000000B0 -S3154000967001000000010000000100000001000000A0 -S315400096800100000001000000010000000100000090 -S315400096900100000001000000010000000100000080 -S315400096A00100000001000000010000000100000070 -S315400096B00100000001000000010000000100000060 -S315400096C00100000001000000010000000100000050 -S315400096D00100000001000000010000000100000040 -S315400096E00100000001000000010000000100000030 -S315400096F00100000001000000010000000100000020 -S31540009700010000000100000001000000010000000F -S3154000971001000000010000000100000001000000FF -S3154000972001000000010000000100000001000000EF -S3154000973001000000010000000100000001000000DF -S3154000974001000000010000000100000001000000CF -S3154000975001000000010000000100000001000000BF -S3154000976001000000010000000100000001000000AF -S31540009770010000000100000001000000010000009F -S31540009780010000000100000001000000010000008F -S31540009790010000000100000001000000010000007F -S315400097A0010000000100000001000000010000006F -S315400097B0010000000100000001000000010000005F -S315400097C0010000000100000001000000010000004F -S315400097D0010000000100000001000000010000003F -S315400097E0010000000100000001000000010000002F -S315400097F0010000000100000001000000010000001F -S31540009800010000000100000001000000010000000E -S3154000981001000000010000000100000001000000FE -S3154000982001000000010000000100000001000000EE -S3154000983001000000010000000100000001000000DE -S3154000984001000000010000000100000001000000CE -S3154000985001000000010000000100000001000000BE -S3154000986001000000010000000100000001000000AE -S31540009870010000000100000001000000010000009E -S31540009880010000000100000001000000010000008E -S31540009890010000000100000001000000010000007E -S315400098A0010000000100000001000000010000006E -S315400098B0010000000100000001000000010000005E -S315400098C0010000000100000001000000010000004E -S315400098D0010000000100000001000000010000003E -S315400098E0010000000100000001000000010000002E -S315400098F0010000000100000001000000010000001E -S31540009900010000000100000001000000010000000D -S3154000991001000000010000000100000001000000FD -S3154000992001000000010000000100000001000000ED -S3154000993001000000010000000100000001000000DD -S3154000994001000000010000000100000001000000CD -S3154000995001000000010000000100000001000000BD -S3154000996001000000010000000100000001000000AD -S31540009970010000000100000001000000010000009D -S31540009980010000000100000001000000010000008D -S31540009990010000000100000001000000010000007D -S315400099A0010000000100000001000000010000006D -S315400099B0010000000100000001000000010000005D -S315400099C0010000000100000001000000010000004D -S315400099D0010000000100000001000000010000003D -S315400099E0010000000100000001000000010000002D -S315400099F0010000000100000001000000010000001D -S31540009A00010000000100000001000000010000000C -S31540009A1001000000010000000100000001000000FC -S31540009A2001000000010000000100000001000000EC -S31540009A3001000000010000000100000001000000DC -S31540009A4001000000010000000100000001000000CC -S31540009A5001000000010000000100000001000000BC -S31540009A6001000000010000000100000001000000AC -S31540009A70010000000100000001000000010000009C -S31540009A80010000000100000001000000010000008C -S31540009A90010000000100000001000000010000007C -S31540009AA0010000000100000001000000010000006C -S31540009AB0010000000100000001000000010000005C -S31540009AC0010000000100000001000000010000004C -S31540009AD0010000000100000001000000010000003C -S31540009AE0010000000100000001000000010000002C -S31540009AF0010000000100000001000000010000001C -S31540009B00010000000100000001000000010000000B -S31540009B1001000000010000000100000001000000FB -S31540009B2001000000010000000100000001000000EB -S31540009B3001000000010000000100000001000000DB -S31540009B4001000000010000000100000001000000CB -S31540009B5001000000010000000100000001000000BB -S31540009B6001000000010000000100000001000000AB -S31540009B70010000000100000001000000010000009B -S31540009B80010000000100000001000000010000008B -S31540009B90010000000100000001000000010000007B -S31540009BA0010000000100000001000000010000006B -S31540009BB0010000000100000001000000010000005B -S31540009BC0010000000100000001000000010000004B -S31540009BD0010000000100000001000000010000003B -S31540009BE0010000000100000001000000010000002B -S31540009BF0010000000100000001000000010000001B -S31540009C00010000000100000001000000010000000A -S31540009C1001000000010000000100000001000000FA -S31540009C2001000000010000000100000001000000EA -S31540009C3001000000010000000100000001000000DA -S31540009C4001000000010000000100000001000000CA -S31540009C5001000000010000000100000001000000BA -S31540009C6001000000010000000100000001000000AA -S31540009C70010000000100000001000000010000009A -S31540009C80010000000100000001000000010000008A -S31540009C90010000000100000001000000010000007A -S31540009CA0010000000100000001000000010000006A -S31540009CB0010000000100000001000000010000005A -S31540009CC0010000000100000001000000010000004A -S31540009CD0010000000100000001000000010000003A -S31540009CE0010000000100000001000000010000002A -S31540009CF0010000000100000001000000010000001A -S31540009D000100000001000000010000000100000009 -S31540009D1001000000010000000100000001000000F9 -S31540009D2001000000010000000100000001000000E9 -S31540009D3001000000010000000100000001000000D9 -S31540009D4001000000010000000100000001000000C9 -S31540009D5001000000010000000100000001000000B9 -S31540009D6001000000010000000100000001000000A9 -S31540009D700100000001000000010000000100000099 -S31540009D800100000001000000010000000100000089 -S31540009D900100000001000000010000000100000079 -S31540009DA00100000001000000010000000100000069 -S31540009DB00100000001000000010000000100000059 -S31540009DC00100000001000000010000000100000049 -S31540009DD00100000001000000010000000100000039 -S31540009DE00100000001000000010000000100000029 -S31540009DF00100000001000000010000000100000019 -S31540009E000100000001000000010000000100000008 -S31540009E1001000000010000000100000001000000F8 -S31540009E2001000000010000000100000001000000E8 -S31540009E3001000000010000000100000001000000D8 -S31540009E4001000000010000000100000001000000C8 -S31540009E5001000000010000000100000001000000B8 -S31540009E6001000000010000000100000001000000A8 -S31540009E700100000001000000010000000100000098 -S31540009E800100000001000000010000000100000088 -S31540009E900100000001000000010000000100000078 -S31540009EA00100000001000000010000000100000068 -S31540009EB00100000001000000010000000100000058 -S31540009EC00100000001000000010000000100000048 -S31540009ED00100000001000000010000000100000038 -S31540009EE00100000001000000010000000100000028 -S31540009EF00100000001000000010000000100000018 -S31540009F000100000001000000010000000100000007 -S31540009F1001000000010000000100000001000000F7 -S31540009F2001000000010000000100000001000000E7 -S31540009F3001000000010000000100000001000000D7 -S31540009F4001000000010000000100000001000000C7 -S31540009F5001000000010000000100000001000000B7 -S31540009F6001000000010000000100000001000000A7 -S31540009F700100000001000000010000000100000097 -S31540009F800100000001000000010000000100000087 -S31540009F900100000001000000010000000100000077 -S31540009FA00100000001000000010000000100000067 -S31540009FB00100000001000000010000000100000057 -S31540009FC00100000001000000010000000100000047 -S31540009FD00100000001000000010000000100000037 -S31540009FE00100000001000000010000000100000027 -S31540009FF00100000001000000010000000100000017 -S3154000A0000100000001000000010000000100000006 -S3154000A01001000000010000000100000001000000F6 -S3154000A02001000000010000000100000001000000E6 -S3154000A03001000000010000000100000001000000D6 -S3154000A04001000000010000000100000001000000C6 -S3154000A05001000000010000000100000001000000B6 -S3154000A06001000000010000000100000001000000A6 -S3154000A0700100000001000000010000000100000096 -S3154000A0800100000001000000010000000100000086 -S3154000A0900100000001000000010000000100000076 -S3154000A0A00100000001000000010000000100000066 -S3154000A0B00100000001000000010000000100000056 -S3154000A0C00100000001000000010000000100000046 -S3154000A0D00100000001000000010000000100000036 -S3154000A0E00100000001000000010000000100000026 -S3154000A0F00100000001000000010000000100000016 -S3154000A1000100000001000000010000000100000005 -S3154000A11001000000010000000100000001000000F5 -S3154000A12001000000010000000100000001000000E5 -S3154000A13001000000010000000100000001000000D5 -S3154000A14001000000010000000100000001000000C5 -S3154000A15001000000010000000100000001000000B5 -S3154000A16001000000010000000100000001000000A5 -S3154000A1700100000001000000010000000100000095 -S3154000A1800100000001000000010000000100000085 -S3154000A1900100000001000000010000000100000075 -S3154000A1A00100000001000000010000000100000065 -S3154000A1B00100000001000000010000000100000055 -S3154000A1C00100000001000000010000000100000045 -S3154000A1D00100000001000000010000000100000035 -S3154000A1E00100000001000000010000000100000025 -S3154000A1F00100000001000000010000000100000015 -S3154000A2000100000001000000010000000100000004 -S3154000A21001000000010000000100000001000000F4 -S3154000A22001000000010000000100000001000000E4 -S3154000A23001000000010000000100000001000000D4 -S3154000A24001000000010000000100000001000000C4 -S3154000A25001000000010000000100000001000000B4 -S3154000A26001000000010000000100000001000000A4 -S3154000A2700100000001000000010000000100000094 -S3154000A2800100000001000000010000000100000084 -S3154000A2900100000001000000010000000100000074 -S3154000A2A00100000001000000010000000100000064 -S3154000A2B00100000001000000010000000100000054 -S3154000A2C00100000001000000010000000100000044 -S3154000A2D00100000001000000010000000100000034 -S3154000A2E00100000001000000010000000100000024 -S3154000A2F00100000001000000010000000100000014 -S3154000A3000100000001000000010000000100000003 -S3154000A31001000000010000000100000001000000F3 -S3154000A32001000000010000000100000001000000E3 -S3154000A33001000000010000000100000001000000D3 -S3154000A34001000000010000000100000001000000C3 -S3154000A35001000000010000000100000001000000B3 -S3154000A36001000000010000000100000001000000A3 -S3154000A3700100000001000000010000000100000093 -S3154000A3800100000001000000010000000100000083 -S3154000A3900100000001000000010000000100000073 -S3154000A3A00100000001000000010000000100000063 -S3154000A3B00100000001000000010000000100000053 -S3154000A3C00100000001000000010000000100000043 -S3154000A3D00100000001000000010000000100000033 -S3154000A3E00100000001000000010000000100000023 -S3154000A3F00100000001000000010000000100000013 -S3154000A4000100000001000000010000000100000002 -S3154000A41001000000010000000100000001000000F2 -S3154000A42001000000010000000100000001000000E2 -S3154000A43001000000010000000100000001000000D2 -S3154000A44001000000010000000100000001000000C2 -S3154000A45001000000010000000100000001000000B2 -S3154000A46001000000010000000100000001000000A2 -S3154000A4700100000001000000010000000100000092 -S3154000A4800100000001000000010000000100000082 -S3154000A4900100000001000000010000000100000072 -S3154000A4A00100000001000000010000000100000062 -S3154000A4B00100000001000000010000000100000052 -S3154000A4C00100000001000000010000000100000042 -S3154000A4D00100000001000000010000000100000032 -S3154000A4E00100000001000000010000000100000022 -S3154000A4F00100000001000000010000000100000012 -S3154000A5000100000001000000010000000100000001 -S3154000A51001000000010000000100000001000000F1 -S3154000A52001000000010000000100000001000000E1 -S3154000A53001000000010000000100000001000000D1 -S3154000A54001000000010000000100000001000000C1 -S3154000A55001000000010000000100000001000000B1 -S3154000A56001000000010000000100000001000000A1 -S3154000A5700100000001000000010000000100000091 -S3154000A5800100000001000000010000000100000081 -S3154000A5900100000001000000010000000100000071 -S3154000A5A00100000001000000010000000100000061 -S3154000A5B00100000001000000010000000100000051 -S3154000A5C00100000001000000010000000100000041 -S3154000A5D00100000001000000010000000100000031 -S3154000A5E00100000001000000010000000100000021 -S3154000A5F00100000001000000010000000100000011 -S3154000A6000100000001000000010000000100000000 -S3154000A61001000000010000000100000001000000F0 -S3154000A62001000000010000000100000001000000E0 -S3154000A63001000000010000000100000001000000D0 -S3154000A64001000000010000000100000001000000C0 -S3154000A65001000000010000000100000001000000B0 -S3154000A66001000000010000000100000001000000A0 -S3154000A6700100000001000000010000000100000090 -S3154000A6800100000001000000010000000100000080 -S3154000A6900100000001000000010000000100000070 -S3154000A6A00100000001000000010000000100000060 -S3154000A6B00100000001000000010000000100000050 -S3154000A6C00100000001000000010000000100000040 -S3154000A6D00100000001000000010000000100000030 -S3154000A6E00100000001000000010000000100000020 -S3154000A6F00100000001000000010000000100000010 -S3154000A70001000000010000000100000001000000FF -S3154000A71001000000010000000100000001000000EF -S3154000A72001000000010000000100000001000000DF -S3154000A73001000000010000000100000001000000CF -S3154000A74001000000010000000100000001000000BF -S3154000A75001000000010000000100000001000000AF -S3154000A760010000000100000001000000010000009F -S3154000A770010000000100000001000000010000008F -S3154000A780010000000100000001000000010000007F -S3154000A790010000000100000001000000010000006F -S3154000A7A0010000000100000001000000010000005F -S3154000A7B0010000000100000001000000010000004F -S3154000A7C0010000000100000001000000010000003F -S3154000A7D0010000000100000001000000010000002F -S3154000A7E0010000000100000001000000010000001F -S3154000A7F0010000000100000001000000010000000F -S3154000A80001000000010000000100000001000000FE -S3154000A81001000000010000000100000001000000EE -S3154000A82001000000010000000100000001000000DE -S3154000A83001000000010000000100000001000000CE -S3154000A84001000000010000000100000001000000BE -S3154000A85001000000010000000100000001000000AE -S3154000A860010000000100000001000000010000009E -S3154000A870010000000100000001000000010000008E -S3154000A880010000000100000001000000010000007E -S3154000A890010000000100000001000000010000006E -S3154000A8A0010000000100000001000000010000005E -S3154000A8B0010000000100000001000000010000004E -S3154000A8C0010000000100000001000000010000003E -S3154000A8D0010000000100000001000000010000002E -S3154000A8E0010000000100000001000000010000001E -S3154000A8F0010000000100000001000000010000000E -S3154000A90001000000010000000100000001000000FD -S3154000A91001000000010000000100000001000000ED -S3154000A92001000000010000000100000001000000DD -S3154000A93001000000010000000100000001000000CD -S3154000A94001000000010000000100000001000000BD -S3154000A95001000000010000000100000001000000AD -S3154000A960010000000100000001000000010000009D -S3154000A970010000000100000001000000010000008D -S3154000A980010000000100000001000000010000007D -S3154000A990010000000100000001000000010000006D -S3154000A9A0010000000100000001000000010000005D -S3154000A9B0010000000100000001000000010000004D -S3154000A9C0010000000100000001000000010000003D -S3154000A9D0010000000100000001000000010000002D -S3154000A9E0010000000100000001000000010000001D -S3154000A9F0010000000100000001000000010000000D -S3154000AA0001000000010000000100000001000000FC -S3154000AA1001000000010000000100000001000000EC -S3154000AA2001000000010000000100000001000000DC -S3154000AA3001000000010000000100000001000000CC -S3154000AA4001000000010000000100000001000000BC -S3154000AA5001000000010000000100000001000000AC -S3154000AA60010000000100000001000000010000009C -S3154000AA70010000000100000001000000010000008C -S3154000AA80010000000100000001000000010000007C -S3154000AA90010000000100000001000000010000006C -S3154000AAA0010000000100000001000000010000005C -S3154000AAB0010000000100000001000000010000004C -S3154000AAC0010000000100000001000000010000003C -S3154000AAD0010000000100000001000000010000002C -S3154000AAE0010000000100000001000000010000001C -S3154000AAF0010000000100000001000000010000000C -S3154000AB0001000000010000000100000001000000FB -S3154000AB1001000000010000000100000001000000EB -S3154000AB2001000000010000000100000001000000DB -S3154000AB3001000000010000000100000001000000CB -S3154000AB4001000000010000000100000001000000BB -S3154000AB5001000000010000000100000001000000AB -S3154000AB60010000000100000001000000010000009B -S3154000AB70010000000100000001000000010000008B -S3154000AB80010000000100000001000000010000007B -S3154000AB90010000000100000001000000010000006B -S3154000ABA0010000000100000001000000010000005B -S3154000ABB0010000000100000001000000010000004B -S3154000ABC0010000000100000001000000010000003B -S3154000ABD0010000000100000001000000010000002B -S3154000ABE0010000000100000001000000010000001B -S3154000ABF0010000000100000001000000010000000B -S3154000AC0001000000010000000100000001000000FA -S3154000AC1001000000010000000100000001000000EA -S3154000AC2001000000010000000100000001000000DA -S3154000AC3001000000010000000100000001000000CA -S3154000AC4001000000010000000100000001000000BA -S3154000AC5001000000010000000100000001000000AA -S3154000AC60010000000100000001000000010000009A -S3154000AC70010000000100000001000000010000008A -S3154000AC80010000000100000001000000010000007A -S3154000AC90010000000100000001000000010000006A -S3154000ACA0010000000100000001000000010000005A -S3154000ACB0010000000100000001000000010000004A -S3154000ACC0010000000100000001000000010000003A -S3154000ACD0010000000100000001000000010000002A -S3154000ACE0010000000100000001000000010000001A -S3154000ACF0010000000100000001000000010000000A -S3154000AD0001000000010000000100000001000000F9 -S3154000AD1001000000010000000100000001000000E9 -S3154000AD2001000000010000000100000001000000D9 -S3154000AD3001000000010000000100000001000000C9 -S3154000AD4001000000010000000100000001000000B9 -S3154000AD5001000000010000000100000001000000A9 -S3154000AD600100000001000000010000000100000099 -S3154000AD700100000001000000010000000100000089 -S3154000AD800100000001000000010000000100000079 -S3154000AD900100000001000000010000000100000069 -S3154000ADA00100000001000000010000000100000059 -S3154000ADB00100000001000000010000000100000049 -S3154000ADC00100000001000000010000000100000039 -S3154000ADD00100000001000000010000000100000029 -S3154000ADE00100000001000000010000000100000019 -S3154000ADF00100000001000000010000000100000009 -S3154000AE0001000000010000000100000001000000F8 -S3154000AE1001000000010000000100000001000000E8 -S3154000AE2001000000010000000100000001000000D8 -S3154000AE3001000000010000000100000001000000C8 -S3154000AE4001000000010000000100000001000000B8 -S3154000AE5001000000010000000100000001000000A8 -S3154000AE600100000001000000010000000100000098 -S3154000AE700100000001000000010000000100000088 -S3154000AE800100000001000000010000000100000078 -S3154000AE900100000001000000010000000100000068 -S3154000AEA00100000001000000010000000100000058 -S3154000AEB00100000001000000010000000100000048 -S3154000AEC00100000001000000010000000100000038 -S3154000AED00100000001000000010000000100000028 -S3154000AEE00100000001000000010000000100000018 -S3154000AEF00100000001000000010000000100000008 -S3154000AF0001000000010000000100000001000000F7 -S3154000AF1001000000010000000100000001000000E7 -S3154000AF2001000000010000000100000001000000D7 -S3154000AF3001000000010000000100000001000000C7 -S3154000AF4001000000010000000100000001000000B7 -S3154000AF5001000000010000000100000001000000A7 -S3154000AF600100000001000000010000000100000097 -S3154000AF700100000001000000010000000100000087 -S3154000AF800100000001000000010000000100000077 -S3154000AF900100000001000000010000000100000067 -S3154000AFA00100000001000000010000000100000057 -S3154000AFB00100000001000000010000000100000047 -S3154000AFC00100000001000000010000000100000037 -S3154000AFD00100000001000000010000000100000027 -S3154000AFE00100000001000000010000000100000017 -S3154000AFF00100000001000000010000000100000007 -S3154000B00001000000010000000100000001000000F6 -S3154000B01001000000010000000100000001000000E6 -S3154000B02001000000010000000100000001000000D6 -S3154000B03001000000010000000100000001000000C6 -S3154000B04001000000010000000100000001000000B6 -S3154000B05001000000010000000100000001000000A6 -S3154000B0600100000001000000010000000100000096 -S3154000B0700100000001000000010000000100000086 -S3154000B0800100000001000000010000000100000076 -S3154000B0900100000001000000010000000100000066 -S3154000B0A00100000001000000010000000100000056 -S3154000B0B00100000001000000010000000100000046 -S3154000B0C00100000001000000010000000100000036 -S3154000B0D00100000001000000010000000100000026 -S3154000B0E00100000001000000010000000100000016 -S3154000B0F00100000001000000010000000100000006 -S3154000B10001000000010000000100000001000000F5 -S3154000B11001000000010000000100000001000000E5 -S3154000B12001000000010000000100000001000000D5 -S3154000B13001000000010000000100000001000000C5 -S3154000B14001000000010000000100000001000000B5 -S3154000B15001000000010000000100000001000000A5 -S3154000B1600100000001000000010000000100000095 -S3154000B1700100000001000000010000000100000085 -S3154000B1800100000001000000010000000100000075 -S3154000B1900100000001000000010000000100000065 -S3154000B1A00100000001000000010000000100000055 -S3154000B1B00100000001000000010000000100000045 -S3154000B1C00100000001000000010000000100000035 -S3154000B1D00100000001000000010000000100000025 -S3154000B1E00100000001000000010000000100000015 -S3154000B1F00100000001000000010000000100000005 -S3154000B20001000000010000000100000001000000F4 -S3154000B21001000000010000000100000001000000E4 -S3154000B22001000000010000000100000001000000D4 -S3154000B23001000000010000000100000001000000C4 -S3154000B24001000000010000000100000001000000B4 -S3154000B25001000000010000000100000001000000A4 -S3154000B2600100000001000000010000000100000094 -S3154000B2700100000001000000010000000100000084 -S3154000B2800100000001000000010000000100000074 -S3154000B2900100000001000000010000000100000064 -S3154000B2A00100000001000000010000000100000054 -S3154000B2B00100000001000000010000000100000044 -S3154000B2C00100000001000000010000000100000034 -S3154000B2D00100000001000000010000000100000024 -S3154000B2E00100000001000000010000000100000014 -S3154000B2F00100000001000000010000000100000004 -S3154000B30001000000010000000100000001000000F3 -S3154000B31001000000010000000100000001000000E3 -S3154000B32001000000010000000100000001000000D3 -S3154000B33001000000010000000100000001000000C3 -S3154000B34001000000010000000100000001000000B3 -S3154000B35001000000010000000100000001000000A3 -S3154000B3600100000001000000010000000100000093 -S3154000B3700100000001000000010000000100000083 -S3154000B3800100000001000000010000000100000073 -S3154000B3900100000001000000010000000100000063 -S3154000B3A00100000001000000010000000100000053 -S3154000B3B00100000001000000010000000100000043 -S3154000B3C00100000001000000010000000100000033 -S3154000B3D00100000001000000010000000100000023 -S3154000B3E00100000001000000010000000100000013 -S3154000B3F00100000001000000010000000100000003 -S3154000B40001000000010000000100000001000000F2 -S3154000B41001000000010000000100000001000000E2 -S3154000B42001000000010000000100000001000000D2 -S3154000B43001000000010000000100000001000000C2 -S3154000B44001000000010000000100000001000000B2 -S3154000B45001000000010000000100000001000000A2 -S3154000B4600100000001000000010000000100000092 -S3154000B4700100000001000000010000000100000082 -S3154000B4800100000001000000010000000100000072 -S3154000B4900100000001000000010000000100000062 -S3154000B4A00100000001000000010000000100000052 -S3154000B4B00100000001000000010000000100000042 -S3154000B4C00100000001000000010000000100000032 -S3154000B4D00100000001000000010000000100000022 -S3154000B4E00100000001000000010000000100000012 -S3154000B4F00100000001000000010000000100000002 -S3154000B50001000000010000000100000001000000F1 -S3154000B51001000000010000000100000001000000E1 -S3154000B52001000000010000000100000001000000D1 -S3154000B53001000000010000000100000001000000C1 -S3154000B54001000000010000000100000001000000B1 -S3154000B55001000000010000000100000001000000A1 -S3154000B5600100000001000000010000000100000091 -S3154000B5700100000001000000010000000100000081 -S3154000B5800100000001000000010000000100000071 -S3154000B5900100000001000000010000000100000061 -S3154000B5A00100000001000000010000000100000051 -S3154000B5B00100000001000000010000000100000041 -S3154000B5C00100000001000000010000000100000031 -S3154000B5D00100000001000000010000000100000021 -S3154000B5E00100000001000000010000000100000011 -S3154000B5F00100000001000000010000000100000001 -S3154000B60001000000010000000100000001000000F0 -S3154000B61001000000010000000100000001000000E0 -S3154000B62001000000010000000100000001000000D0 -S3154000B63001000000010000000100000001000000C0 -S3154000B64001000000010000000100000001000000B0 -S3154000B65001000000010000000100000001000000A0 -S3154000B6600100000001000000010000000100000090 -S3154000B6700100000001000000010000000100000080 -S3154000B6800100000001000000010000000100000070 -S3154000B6900100000001000000010000000100000060 -S3154000B6A00100000001000000010000000100000050 -S3154000B6B00100000001000000010000000100000040 -S3154000B6C00100000001000000010000000100000030 -S3154000B6D00100000001000000010000000100000020 -S3154000B6E00100000001000000010000000100000010 -S3154000B6F00100000001000000010000000100000000 -S3154000B70001000000010000000100000001000000EF -S3154000B71001000000010000000100000001000000DF -S3154000B72001000000010000000100000001000000CF -S3154000B73001000000010000000100000001000000BF -S3154000B74001000000010000000100000001000000AF -S3154000B750010000000100000001000000010000009F -S3154000B760010000000100000001000000010000008F -S3154000B770010000000100000001000000010000007F -S3154000B780010000000100000001000000010000006F -S3154000B790010000000100000001000000010000005F -S3154000B7A0010000000100000001000000010000004F -S3154000B7B0010000000100000001000000010000003F -S3154000B7C0010000000100000001000000010000002F -S3154000B7D0010000000100000001000000010000001F -S3154000B7E0010000000100000001000000010000000F -S3154000B7F001000000010000000100000001000000FF -S3154000B80001000000010000000100000001000000EE -S3154000B81001000000010000000100000001000000DE -S3154000B82001000000010000000100000001000000CE -S3154000B83001000000010000000100000001000000BE -S3154000B84001000000010000000100000001000000AE -S3154000B850010000000100000001000000010000009E -S3154000B860010000000100000001000000010000008E -S3154000B870010000000100000001000000010000007E -S3154000B880010000000100000001000000010000006E -S3154000B890010000000100000001000000010000005E -S3154000B8A0010000000100000001000000010000004E -S3154000B8B0010000000100000001000000010000003E -S3154000B8C0010000000100000001000000010000002E -S3154000B8D0010000000100000001000000010000001E -S3154000B8E0010000000100000001000000010000000E -S3154000B8F001000000010000000100000001000000FE -S3154000B90001000000010000000100000001000000ED -S3154000B91001000000010000000100000001000000DD -S3154000B92001000000010000000100000001000000CD -S3154000B93001000000010000000100000001000000BD -S3154000B94001000000010000000100000001000000AD -S3154000B950010000000100000001000000010000009D -S3154000B960010000000100000001000000010000008D -S3154000B970010000000100000001000000010000007D -S3154000B980010000000100000001000000010000006D -S3154000B990010000000100000001000000010000005D -S3154000B9A0010000000100000001000000010000004D -S3154000B9B0010000000100000001000000010000003D -S3154000B9C0010000000100000001000000010000002D -S3154000B9D0010000000100000001000000010000001D -S3154000B9E0010000000100000001000000010000000D -S3154000B9F001000000010000000100000001000000FD -S3154000BA0001000000010000000100000001000000EC -S3154000BA1001000000010000000100000001000000DC -S3154000BA2001000000010000000100000001000000CC -S3154000BA3001000000010000000100000001000000BC -S3154000BA4001000000010000000100000001000000AC -S3154000BA50010000000100000001000000010000009C -S3154000BA60010000000100000001000000010000008C -S3154000BA70010000000100000001000000010000007C -S3154000BA80010000000100000001000000010000006C -S3154000BA90010000000100000001000000010000005C -S3154000BAA0010000000100000001000000010000004C -S3154000BAB0010000000100000001000000010000003C -S3154000BAC0010000000100000001000000010000002C -S3154000BAD0010000000100000001000000010000001C -S3154000BAE0010000000100000001000000010000000C -S3154000BAF001000000010000000100000001000000FC -S3154000BB0001000000010000000100000001000000EB -S3154000BB1001000000010000000100000001000000DB -S3154000BB2001000000010000000100000001000000CB -S3154000BB3001000000010000000100000001000000BB -S3154000BB4001000000010000000100000001000000AB -S3154000BB50010000000100000001000000010000009B -S3154000BB60010000000100000001000000010000008B -S3154000BB70010000000100000001000000010000007B -S3154000BB80010000000100000001000000010000006B -S3154000BB90010000000100000001000000010000005B -S3154000BBA0010000000100000001000000010000004B -S3154000BBB0010000000100000001000000010000003B -S3154000BBC0010000000100000001000000010000002B -S3154000BBD0010000000100000001000000010000001B -S3154000BBE0010000000100000001000000010000000B -S3154000BBF001000000010000000100000001000000FB -S3154000BC0001000000010000000100000001000000EA -S3154000BC1001000000010000000100000001000000DA -S3154000BC2001000000010000000100000001000000CA -S3154000BC3001000000010000000100000001000000BA -S3154000BC4001000000010000000100000001000000AA -S3154000BC50010000000100000001000000010000009A -S3154000BC60010000000100000001000000010000008A -S3154000BC70010000000100000001000000010000007A -S3154000BC80010000000100000001000000010000006A -S3154000BC90010000000100000001000000010000005A -S3154000BCA0010000000100000001000000010000004A -S3154000BCB0010000000100000001000000010000003A -S3154000BCC0010000000100000001000000010000002A -S3154000BCD0010000000100000001000000010000001A -S3154000BCE0010000000100000001000000010000000A -S3154000BCF001000000010000000100000001000000FA -S3154000BD0001000000010000000100000001000000E9 -S3154000BD1001000000010000000100000001000000D9 -S3154000BD2001000000010000000100000001000000C9 -S3154000BD3001000000010000000100000001000000B9 -S3154000BD4001000000010000000100000001000000A9 -S3154000BD500100000001000000010000000100000099 -S3154000BD600100000001000000010000000100000089 -S3154000BD700100000001000000010000000100000079 -S3154000BD800100000001000000010000000100000069 -S3154000BD900100000001000000010000000100000059 -S3154000BDA00100000001000000010000000100000049 -S3154000BDB00100000001000000010000000100000039 -S3154000BDC00100000001000000010000000100000029 -S3154000BDD00100000001000000010000000100000019 -S3154000BDE00100000001000000010000000100000009 -S3154000BDF001000000010000000100000001000000F9 -S3154000BE0001000000010000000100000001000000E8 -S3154000BE1001000000010000000100000001000000D8 -S3154000BE2001000000010000000100000001000000C8 -S3154000BE3001000000010000000100000001000000B8 -S3154000BE4001000000010000000100000001000000A8 -S3154000BE500100000001000000010000000100000098 -S3154000BE600100000001000000010000000100000088 -S3154000BE700100000001000000010000000100000078 -S3154000BE800100000001000000010000000100000068 -S3154000BE900100000001000000010000000100000058 -S3154000BEA00100000001000000010000000100000048 -S3154000BEB00100000001000000010000000100000038 -S3154000BEC00100000001000000010000000100000028 -S3154000BED00100000001000000010000000100000018 -S3154000BEE00100000001000000010000000100000008 -S3154000BEF001000000010000000100000001000000F8 -S3154000BF0001000000010000000100000001000000E7 -S3154000BF1001000000010000000100000001000000D7 -S3154000BF2001000000010000000100000001000000C7 -S3154000BF3001000000010000000100000001000000B7 -S3154000BF4001000000010000000100000001000000A7 -S3154000BF500100000001000000010000000100000097 -S3154000BF600100000001000000010000000100000087 -S3154000BF700100000001000000010000000100000077 -S3154000BF800100000001000000010000000100000067 -S3154000BF900100000001000000010000000100000057 -S3154000BFA00100000001000000010000000100000047 -S3154000BFB00100000001000000010000000100000037 -S3154000BFC00100000001000000010000000100000027 -S3154000BFD00100000001000000010000000100000017 -S3154000BFE00100000001000000010000000100000007 -S3154000BFF001000000010000000100000001000000F7 -S3154000C00001000000010000000100000001000000E6 -S3154000C01001000000010000000100000001000000D6 -S3154000C02001000000010000000100000001000000C6 -S3154000C03001000000010000000100000001000000B6 -S3154000C04001000000010000000100000001000000A6 -S3154000C0500100000001000000010000000100000096 -S3154000C0600100000001000000010000000100000086 -S3154000C0700100000001000000010000000100000076 -S3154000C0800100000001000000010000000100000066 -S3154000C0900100000001000000010000000100000056 -S3154000C0A00100000001000000010000000100000046 -S3154000C0B00100000001000000010000000100000036 -S3154000C0C00100000001000000010000000100000026 -S3154000C0D00100000001000000010000000100000016 -S3154000C0E00100000001000000010000000100000006 -S3154000C0F001000000010000000100000001000000F6 -S3154000C10001000000010000000100000001000000E5 -S3154000C11001000000010000000100000001000000D5 -S3154000C12001000000010000000100000001000000C5 -S3154000C13001000000010000000100000001000000B5 -S3154000C14001000000010000000100000001000000A5 -S3154000C1500100000001000000010000000100000095 -S3154000C1600100000001000000010000000100000085 -S3154000C1700100000001000000010000000100000075 -S3154000C1800100000001000000010000000100000065 -S3154000C1900100000001000000010000000100000055 -S3154000C1A00100000001000000010000000100000045 -S3154000C1B00100000001000000010000000100000035 -S3154000C1C00100000001000000010000000100000025 -S3154000C1D00100000001000000010000000100000015 -S3154000C1E00100000001000000010000000100000005 -S3154000C1F001000000010000000100000001000000F5 -S3154000C20001000000010000000100000001000000E4 -S3154000C21001000000010000000100000001000000D4 -S3154000C22001000000010000000100000001000000C4 -S3154000C23001000000010000000100000001000000B4 -S3154000C24001000000010000000100000001000000A4 -S3154000C2500100000001000000010000000100000094 -S3154000C2600100000001000000010000000100000084 -S3154000C2700100000001000000010000000100000074 -S3154000C2800100000001000000010000000100000064 -S3154000C2900100000001000000010000000100000054 -S3154000C2A00100000001000000010000000100000044 -S3154000C2B00100000001000000010000000100000034 -S3154000C2C00100000001000000010000000100000024 -S3154000C2D00100000001000000010000000100000014 -S3154000C2E00100000001000000010000000100000004 -S3154000C2F001000000010000000100000001000000F4 -S3154000C30001000000010000000100000001000000E3 -S3154000C31001000000010000000100000001000000D3 -S3154000C32001000000010000000100000001000000C3 -S3154000C33001000000010000000100000001000000B3 -S3154000C34001000000010000000100000001000000A3 -S3154000C3500100000001000000010000000100000093 -S3154000C3600100000001000000010000000100000083 -S3154000C3700100000001000000010000000100000073 -S3154000C3800100000001000000010000000100000063 -S3154000C3900100000001000000010000000100000053 -S3154000C3A00100000001000000010000000100000043 -S3154000C3B00100000001000000010000000100000033 -S3154000C3C00100000001000000010000000100000023 -S3154000C3D00100000001000000010000000100000013 -S3154000C3E00100000001000000010000000100000003 -S3154000C3F001000000010000000100000001000000F3 -S3154000C40001000000010000000100000001000000E2 -S3154000C41001000000010000000100000001000000D2 -S3154000C42001000000010000000100000001000000C2 -S3154000C43001000000010000000100000001000000B2 -S3154000C44001000000010000000100000001000000A2 -S3154000C4500100000001000000010000000100000092 -S3154000C4600100000001000000010000000100000082 -S3154000C4700100000001000000010000000100000072 -S3154000C4800100000001000000010000000100000062 -S3154000C4900100000001000000010000000100000052 -S3154000C4A00100000001000000010000000100000042 -S3154000C4B00100000001000000010000000100000032 -S3154000C4C00100000001000000010000000100000022 -S3154000C4D00100000001000000010000000100000012 -S3154000C4E00100000001000000010000000100000002 -S3154000C4F001000000010000000100000001000000F2 -S3154000C50001000000010000000100000001000000E1 -S3154000C51001000000010000000100000001000000D1 -S3154000C52001000000010000000100000001000000C1 -S3154000C53001000000010000000100000001000000B1 -S3154000C54001000000010000000100000001000000A1 -S3154000C5500100000001000000010000000100000091 -S3154000C5600100000001000000010000000100000081 -S3154000C5700100000001000000010000000100000071 -S3154000C5800100000001000000010000000100000061 -S3154000C5900100000001000000010000000100000051 -S3154000C5A00100000001000000010000000100000041 -S3154000C5B00100000001000000010000000100000031 -S3154000C5C00100000001000000010000000100000021 -S3154000C5D00100000001000000010000000100000011 -S3154000C5E00100000001000000010000000100000001 -S3154000C5F001000000010000000100000001000000F1 -S3154000C60001000000010000000100000001000000E0 -S3154000C61001000000010000000100000001000000D0 -S3154000C62001000000010000000100000001000000C0 -S3154000C63001000000010000000100000001000000B0 -S3154000C64001000000010000000100000001000000A0 -S3154000C6500100000001000000010000000100000090 -S3154000C6600100000001000000010000000100000080 -S3154000C6700100000001000000010000000100000070 -S3154000C6800100000001000000010000000100000060 -S3154000C6900100000001000000010000000100000050 -S3154000C6A00100000001000000010000000100000040 -S3154000C6B00100000001000000010000000100000030 -S3154000C6C00100000001000000010000000100000020 -S3154000C6D00100000001000000010000000100000010 -S3154000C6E00100000001000000010000000100000000 -S3154000C6F001000000010000000100000001000000F0 -S3154000C70001000000010000000100000001000000DF -S3154000C71001000000010000000100000001000000CF -S3154000C72001000000010000000100000001000000BF -S3154000C73001000000010000000100000001000000AF -S3154000C740010000000100000001000000010000009F -S3154000C750010000000100000001000000010000008F -S3154000C760010000000100000001000000010000007F -S3154000C770010000000100000001000000010000006F -S3154000C780010000000100000001000000010000005F -S3154000C790010000000100000001000000010000004F -S3154000C7A0010000000100000001000000010000003F -S3154000C7B0010000000100000001000000010000002F -S3154000C7C0010000000100000001000000010000001F -S3154000C7D0010000000100000001000000010000000F -S3154000C7E001000000010000000100000001000000FF -S3154000C7F001000000010000000100000001000000EF -S3154000C80001000000010000000100000001000000DE -S3154000C81001000000010000000100000001000000CE -S3154000C82001000000010000000100000001000000BE -S3154000C83001000000010000000100000001000000AE -S3154000C840010000000100000001000000010000009E -S3154000C850010000000100000001000000010000008E -S3154000C860010000000100000001000000010000007E -S3154000C870010000000100000001000000010000006E -S3154000C880010000000100000001000000010000005E -S3154000C890010000000100000001000000010000004E -S3154000C8A0010000000100000001000000010000003E -S3154000C8B0010000000100000001000000010000002E -S3154000C8C0010000000100000001000000010000001E -S3154000C8D0010000000100000001000000010000000E -S3154000C8E001000000010000000100000001000000FE -S3154000C8F001000000010000000100000001000000EE -S3154000C90001000000010000000100000001000000DD -S3154000C91001000000010000000100000001000000CD -S3154000C92001000000010000000100000001000000BD -S3154000C93001000000010000000100000001000000AD -S3154000C940010000000100000001000000010000009D -S3154000C950010000000100000001000000010000008D -S3154000C960010000000100000001000000010000007D -S3154000C970010000000100000001000000010000006D -S3154000C980010000000100000001000000010000005D -S3154000C990010000000100000001000000010000004D -S3154000C9A0010000000100000001000000010000003D -S3154000C9B0010000000100000001000000010000002D -S3154000C9C0010000000100000001000000010000001D -S3154000C9D0010000000100000001000000010000000D -S3154000C9E001000000010000000100000001000000FD -S3154000C9F001000000010000000100000001000000ED -S3154000CA0001000000010000000100000001000000DC -S3154000CA1001000000010000000100000001000000CC -S3154000CA2001000000010000000100000001000000BC -S3154000CA3001000000010000000100000001000000AC -S3154000CA40010000000100000001000000010000009C -S3154000CA50010000000100000001000000010000008C -S3154000CA60010000000100000001000000010000007C -S3154000CA70010000000100000001000000010000006C -S3154000CA80010000000100000001000000010000005C -S3154000CA90010000000100000001000000010000004C -S3154000CAA0010000000100000001000000010000003C -S3154000CAB0010000000100000001000000010000002C -S3154000CAC0010000000100000001000000010000001C -S3154000CAD0010000000100000001000000010000000C -S3154000CAE001000000010000000100000001000000FC -S3154000CAF001000000010000000100000001000000EC -S3154000CB0001000000010000000100000001000000DB -S3154000CB1001000000010000000100000001000000CB -S3154000CB2001000000010000000100000001000000BB -S3154000CB3001000000010000000100000001000000AB -S3154000CB40010000000100000001000000010000009B -S3154000CB50010000000100000001000000010000008B -S3154000CB60010000000100000001000000010000007B -S3154000CB70010000000100000001000000010000006B -S3154000CB80010000000100000001000000010000005B -S3154000CB90010000000100000001000000010000004B -S3154000CBA0010000000100000001000000010000003B -S3154000CBB0010000000100000001000000010000002B -S3154000CBC0010000000100000001000000010000001B -S3154000CBD0010000000100000001000000010000000B -S3154000CBE001000000010000000100000001000000FB -S3154000CBF001000000010000000100000001000000EB -S3154000CC0001000000010000000100000001000000DA -S3154000CC1001000000010000000100000001000000CA -S3154000CC2001000000010000000100000001000000BA -S3154000CC3001000000010000000100000001000000AA -S3154000CC40010000000100000001000000010000009A -S3154000CC50010000000100000001000000010000008A -S3154000CC60010000000100000001000000010000007A -S3154000CC70010000000100000001000000010000006A -S3154000CC80010000000100000001000000010000005A -S3154000CC90010000000100000001000000010000004A -S3154000CCA0010000000100000001000000010000003A -S3154000CCB0010000000100000001000000010000002A -S3154000CCC0010000000100000001000000010000001A -S3154000CCD0010000000100000001000000010000000A -S3154000CCE001000000010000000100000001000000FA -S3154000CCF001000000010000000100000001000000EA -S3154000CD0001000000010000000100000001000000D9 -S3154000CD1001000000010000000100000001000000C9 -S3154000CD2001000000010000000100000001000000B9 -S3154000CD3001000000010000000100000001000000A9 -S3154000CD400100000001000000010000000100000099 -S3154000CD500100000001000000010000000100000089 -S3154000CD600100000001000000010000000100000079 -S3154000CD700100000001000000010000000100000069 -S3154000CD800100000001000000010000000100000059 -S3154000CD900100000001000000010000000100000049 -S3154000CDA00100000001000000010000000100000039 -S3154000CDB00100000001000000010000000100000029 -S3154000CDC00100000001000000010000000100000019 -S3154000CDD00100000001000000010000000100000009 -S3154000CDE001000000010000000100000001000000F9 -S3154000CDF001000000010000000100000001000000E9 -S3154000CE0001000000010000000100000001000000D8 -S3154000CE1001000000010000000100000001000000C8 -S3154000CE2001000000010000000100000001000000B8 -S3154000CE3001000000010000000100000001000000A8 -S3154000CE400100000001000000010000000100000098 -S3154000CE500100000001000000010000000100000088 -S3154000CE600100000001000000010000000100000078 -S3154000CE700100000001000000010000000100000068 -S3154000CE800100000001000000010000000100000058 -S3154000CE900100000001000000010000000100000048 -S3154000CEA00100000001000000010000000100000038 -S3154000CEB00100000001000000010000000100000028 -S3154000CEC00100000001000000010000000100000018 -S3154000CED00100000001000000010000000100000008 -S3154000CEE001000000010000000100000001000000F8 -S3154000CEF001000000010000000100000001000000E8 -S3154000CF0001000000010000000100000001000000D7 -S3154000CF1001000000010000000100000001000000C7 -S3154000CF2001000000010000000100000001000000B7 -S3154000CF3001000000010000000100000001000000A7 -S3154000CF400100000001000000010000000100000097 -S3154000CF500100000001000000010000000100000087 -S3154000CF600100000001000000010000000100000077 -S3154000CF700100000001000000010000000100000067 -S3154000CF800100000001000000010000000100000057 -S3154000CF900100000001000000010000000100000047 -S3154000CFA00100000001000000010000000100000037 -S3154000CFB00100000001000000010000000100000027 -S3154000CFC00100000001000000010000000100000017 -S3154000CFD00100000001000000010000000100000007 -S3154000CFE001000000010000000100000001000000F7 -S3154000CFF001000000010000000100000001000000E7 -S3154000D00001000000010000000100000001000000D6 -S3154000D01001000000010000000100000001000000C6 -S3154000D02001000000010000000100000001000000B6 -S3154000D03001000000010000000100000001000000A6 -S3154000D0400100000001000000010000000100000096 -S3154000D0500100000001000000010000000100000086 -S3154000D0600100000001000000010000000100000076 -S3154000D0700100000001000000010000000100000066 -S3154000D0800100000001000000010000000100000056 -S3154000D0900100000001000000010000000100000046 -S3154000D0A00100000001000000010000000100000036 -S3154000D0B00100000001000000010000000100000026 -S3154000D0C00100000001000000010000000100000016 -S3154000D0D00100000001000000010000000100000006 -S3154000D0E001000000010000000100000001000000F6 -S3154000D0F001000000010000000100000001000000E6 -S3154000D10001000000010000000100000001000000D5 -S3154000D11001000000010000000100000001000000C5 -S3154000D12001000000010000000100000001000000B5 -S3154000D13001000000010000000100000001000000A5 -S3154000D1400100000001000000010000000100000095 -S3154000D1500100000001000000010000000100000085 -S3154000D1600100000001000000010000000100000075 -S3154000D1700100000001000000010000000100000065 -S3154000D1800100000001000000010000000100000055 -S3154000D1900100000001000000010000000100000045 -S3154000D1A00100000001000000010000000100000035 -S3154000D1B00100000001000000010000000100000025 -S3154000D1C00100000001000000010000000100000015 -S3154000D1D00100000001000000010000000100000005 -S3154000D1E001000000010000000100000001000000F5 -S3154000D1F001000000010000000100000001000000E5 -S3154000D20001000000010000000100000001000000D4 -S3154000D21001000000010000000100000001000000C4 -S3154000D22001000000010000000100000001000000B4 -S3154000D23001000000010000000100000001000000A4 -S3154000D2400100000001000000010000000100000094 -S3154000D2500100000001000000010000000100000084 -S3154000D2600100000001000000010000000100000074 -S3154000D2700100000001000000010000000100000064 -S3154000D2800100000001000000010000000100000054 -S3154000D2900100000001000000010000000100000044 -S3154000D2A00100000001000000010000000100000034 -S3154000D2B00100000001000000010000000100000024 -S3154000D2C00100000001000000010000000100000014 -S3154000D2D00100000001000000010000000100000004 -S3154000D2E001000000010000000100000001000000F4 -S3154000D2F001000000010000000100000001000000E4 -S3154000D30001000000010000000100000001000000D3 -S3154000D31001000000010000000100000001000000C3 -S3154000D32001000000010000000100000001000000B3 -S3154000D33001000000010000000100000001000000A3 -S3154000D3400100000001000000010000000100000093 -S3154000D3500100000001000000010000000100000083 -S3154000D3600100000001000000010000000100000073 -S3154000D3700100000001000000010000000100000063 -S3154000D3800100000001000000010000000100000053 -S3154000D3900100000001000000010000000100000043 -S3154000D3A00100000001000000010000000100000033 -S3154000D3B00100000001000000010000000100000023 -S3154000D3C00100000001000000010000000100000013 -S3154000D3D00100000001000000010000000100000003 -S3154000D3E001000000010000000100000001000000F3 -S3154000D3F001000000010000000100000001000000E3 -S3154000D40001000000010000000100000001000000D2 -S3154000D41001000000010000000100000001000000C2 -S3154000D42001000000010000000100000001000000B2 -S3154000D43001000000010000000100000001000000A2 -S3154000D4400100000001000000010000000100000092 -S3154000D4500100000001000000010000000100000082 -S3154000D4600100000001000000010000000100000072 -S3154000D4700100000001000000010000000100000062 -S3154000D4800100000001000000010000000100000052 -S3154000D4900100000001000000010000000100000042 -S3154000D4A00100000001000000010000000100000032 -S3154000D4B00100000001000000010000000100000022 -S3154000D4C00100000001000000010000000100000012 -S3154000D4D00100000001000000010000000100000002 -S3154000D4E001000000010000000100000001000000F2 -S3154000D4F001000000010000000100000001000000E2 -S3154000D50001000000010000000100000001000000D1 -S3154000D51001000000010000000100000001000000C1 -S3154000D52001000000010000000100000001000000B1 -S3154000D53001000000010000000100000001000000A1 -S3154000D5400100000001000000010000000100000091 -S3154000D5500100000001000000010000000100000081 -S3154000D5600100000001000000010000000100000071 -S3154000D5700100000001000000010000000100000061 -S3154000D5800100000001000000010000000100000051 -S3154000D5900100000001000000010000000100000041 -S3154000D5A00100000001000000010000000100000031 -S3154000D5B00100000001000000010000000100000021 -S3154000D5C00100000001000000010000000100000011 -S3154000D5D00100000001000000010000000100000001 -S3154000D5E001000000010000000100000001000000F1 -S3154000D5F001000000010000000100000001000000E1 -S3154000D60001000000010000000100000001000000D0 -S3154000D61001000000010000000100000001000000C0 -S3154000D62001000000010000000100000001000000B0 -S3154000D63001000000010000000100000001000000A0 -S3154000D6400100000001000000010000000100000090 -S3154000D6500100000001000000010000000100000080 -S3154000D6600100000001000000010000000100000070 -S3154000D6700100000001000000010000000100000060 -S3154000D6800100000001000000010000000100000050 -S3154000D6900100000001000000010000000100000040 -S3154000D6A00100000001000000010000000100000030 -S3154000D6B00100000001000000010000000100000020 -S3154000D6C00100000001000000010000000100000010 -S3154000D6D00100000001000000010000000100000000 -S3154000D6E001000000010000000100000001000000F0 -S3154000D6F001000000010000000100000001000000E0 -S3154000D70001000000010000000100000001000000CF -S3154000D71001000000010000000100000001000000BF -S3154000D72001000000010000000100000001000000AF -S3154000D730010000000100000001000000010000009F -S3154000D740010000000100000001000000010000008F -S3154000D750010000000100000001000000010000007F -S3154000D760010000000100000001000000010000006F -S3154000D770010000000100000001000000010000005F -S3154000D780010000000100000001000000010000004F -S3154000D790010000000100000001000000010000003F -S3154000D7A0010000000100000001000000010000002F -S3154000D7B0010000000100000001000000010000001F -S3154000D7C0010000000100000001000000010000000F -S3154000D7D001000000010000000100000001000000FF -S3154000D7E001000000010000000100000001000000EF -S3154000D7F001000000010000000100000001000000DF -S3154000D80001000000010000000100000001000000CE -S3154000D81001000000010000000100000001000000BE -S3154000D82001000000010000000100000001000000AE -S3154000D830010000000100000001000000010000009E -S3154000D840010000000100000001000000010000008E -S3154000D850010000000100000001000000010000007E -S3154000D860010000000100000001000000010000006E -S3154000D870010000000100000001000000010000005E -S3154000D880010000000100000001000000010000004E -S3154000D890010000000100000001000000010000003E -S3154000D8A0010000000100000001000000010000002E -S3154000D8B0010000000100000001000000010000001E -S3154000D8C0010000000100000001000000010000000E -S3154000D8D001000000010000000100000001000000FE -S3154000D8E001000000010000000100000001000000EE -S3154000D8F001000000010000000100000001000000DE -S3154000D90001000000010000000100000001000000CD -S3154000D91001000000010000000100000001000000BD -S3154000D92001000000010000000100000001000000AD -S3154000D930010000000100000001000000010000009D -S3154000D940010000000100000001000000010000008D -S3154000D950010000000100000001000000010000007D -S3154000D960010000000100000001000000010000006D -S3154000D970010000000100000001000000010000005D -S3154000D980010000000100000001000000010000004D -S3154000D990010000000100000001000000010000003D -S3154000D9A0010000000100000001000000010000002D -S3154000D9B0010000000100000001000000010000001D -S3154000D9C0010000000100000001000000010000000D -S3154000D9D001000000010000000100000001000000FD -S3154000D9E001000000010000000100000001000000ED -S3154000D9F001000000010000000100000001000000DD -S3154000DA0001000000010000000100000001000000CC -S3154000DA1001000000010000000100000001000000BC -S3154000DA2001000000010000000100000001000000AC -S3154000DA30010000000100000001000000010000009C -S3154000DA40010000000100000001000000010000008C -S3154000DA50010000000100000001000000010000007C -S3154000DA60010000000100000001000000010000006C -S3154000DA70010000000100000001000000010000005C -S3154000DA80010000000100000001000000010000004C -S3154000DA90010000000100000001000000010000003C -S3154000DAA0010000000100000001000000010000002C -S3154000DAB0010000000100000001000000010000001C -S3154000DAC0010000000100000001000000010000000C -S3154000DAD001000000010000000100000001000000FC -S3154000DAE001000000010000000100000001000000EC -S3154000DAF001000000010000000100000001000000DC -S3154000DB0001000000010000000100000001000000CB -S3154000DB1001000000010000000100000001000000BB -S3154000DB2001000000010000000100000001000000AB -S3154000DB30010000000100000001000000010000009B -S3154000DB40010000000100000001000000010000008B -S3154000DB50010000000100000001000000010000007B -S3154000DB60010000000100000001000000010000006B -S3154000DB70010000000100000001000000010000005B -S3154000DB80010000000100000001000000010000004B -S3154000DB90010000000100000001000000010000003B -S3154000DBA0010000000100000001000000010000002B -S3154000DBB0010000000100000001000000010000001B -S3154000DBC0010000000100000001000000010000000B -S3154000DBD001000000010000000100000001000000FB -S3154000DBE001000000010000000100000001000000EB -S3154000DBF001000000010000000100000001000000DB -S3154000DC0001000000010000000100000001000000CA -S3154000DC1001000000010000000100000001000000BA -S3154000DC2001000000010000000100000001000000AA -S3154000DC30010000000100000001000000010000009A -S3154000DC40010000000100000001000000010000008A -S3154000DC50010000000100000001000000010000007A -S3154000DC60010000000100000001000000010000006A -S3154000DC70010000000100000001000000010000005A -S3154000DC80010000000100000001000000010000004A -S3154000DC90010000000100000001000000010000003A -S3154000DCA0010000000100000001000000010000002A -S3154000DCB0010000000100000001000000010000001A -S3154000DCC0010000000100000001000000010000000A -S3154000DCD001000000010000000100000001000000FA -S3154000DCE001000000010000000100000001000000EA -S3154000DCF001000000010000000100000001000000DA -S3154000DD0001000000010000000100000001000000C9 -S3154000DD1001000000010000000100000001000000B9 -S3154000DD2001000000010000000100000001000000A9 -S3154000DD300100000001000000010000000100000099 -S3154000DD400100000001000000010000000100000089 -S3154000DD500100000001000000010000000100000079 -S3154000DD600100000001000000010000000100000069 -S3154000DD700100000001000000010000000100000059 -S3154000DD800100000001000000010000000100000049 -S3154000DD900100000001000000010000000100000039 -S3154000DDA00100000001000000010000000100000029 -S3154000DDB00100000001000000010000000100000019 -S3154000DDC00100000001000000010000000100000009 -S3154000DDD001000000010000000100000001000000F9 -S3154000DDE001000000010000000100000001000000E9 -S3154000DDF001000000010000000100000001000000D9 -S3154000DE0001000000010000000100000001000000C8 -S3154000DE1001000000010000000100000001000000B8 -S3154000DE2001000000010000000100000001000000A8 -S3154000DE300100000001000000010000000100000098 -S3154000DE400100000001000000010000000100000088 -S3154000DE500100000001000000010000000100000078 -S3154000DE600100000001000000010000000100000068 -S3154000DE700100000001000000010000000100000058 -S3154000DE800100000001000000010000000100000048 -S3154000DE900100000001000000010000000100000038 -S3154000DEA00100000001000000010000000100000028 -S3154000DEB00100000001000000010000000100000018 -S3154000DEC00100000001000000010000000100000008 -S3154000DED001000000010000000100000001000000F8 -S3154000DEE001000000010000000100000001000000E8 -S3154000DEF001000000010000000100000001000000D8 -S3154000DF0001000000010000000100000001000000C7 -S3154000DF1001000000010000000100000001000000B7 -S3154000DF2001000000010000000100000001000000A7 -S3154000DF300100000001000000010000000100000097 -S3154000DF400100000001000000010000000100000087 -S3154000DF500100000001000000010000000100000077 -S3154000DF600100000001000000010000000100000067 -S3154000DF700100000001000000010000000100000057 -S3154000DF800100000001000000010000000100000047 -S3154000DF900100000001000000010000000100000037 -S3154000DFA00100000001000000010000000100000027 -S3154000DFB00100000001000000010000000100000017 -S3154000DFC00100000001000000010000000100000007 -S3154000DFD001000000010000000100000001000000F7 -S3154000DFE001000000010000000100000001000000E7 -S3154000DFF001000000010000000100000001000000D7 -S3154000E00001000000010000000100000001000000C6 -S3154000E01001000000010000000100000001000000B6 -S3154000E02001000000010000000100000001000000A6 -S3154000E0300100000001000000010000000100000096 -S3154000E0400100000001000000010000000100000086 -S3154000E0500100000001000000010000000100000076 -S3154000E0600100000001000000010000000100000066 -S3154000E0700100000001000000010000000100000056 -S3154000E0800100000001000000010000000100000046 -S3154000E0900100000001000000010000000100000036 -S3154000E0A00100000001000000010000000100000026 -S3154000E0B00100000001000000010000000100000016 -S3154000E0C00100000001000000010000000100000006 -S3154000E0D001000000010000000100000001000000F6 -S3154000E0E001000000010000000100000001000000E6 -S3154000E0F001000000010000000100000001000000D6 -S3154000E10001000000010000000100000001000000C5 -S3154000E11001000000010000000100000001000000B5 -S3154000E12001000000010000000100000001000000A5 -S3154000E1300100000001000000010000000100000095 -S3154000E1400100000001000000010000000100000085 -S3154000E1500100000001000000010000000100000075 -S3154000E1600100000001000000010000000100000065 -S3154000E1700100000001000000010000000100000055 -S3154000E1800100000001000000010000000100000045 -S3154000E1900100000001000000010000000100000035 -S3154000E1A00100000001000000010000000100000025 -S3154000E1B00100000001000000010000000100000015 -S3154000E1C00100000001000000010000000100000005 -S3154000E1D001000000010000000100000001000000F5 -S3154000E1E001000000010000000100000001000000E5 -S3154000E1F001000000010000000100000001000000D5 -S3154000E20001000000010000000100000001000000C4 -S3154000E21001000000010000000100000001000000B4 -S3154000E22001000000010000000100000001000000A4 -S3154000E2300100000001000000010000000100000094 -S3154000E2400100000001000000010000000100000084 -S3154000E2500100000001000000010000000100000074 -S3154000E2600100000001000000010000000100000064 -S3154000E2700100000001000000010000000100000054 -S3154000E2800100000001000000010000000100000044 -S3154000E2900100000001000000010000000100000034 -S3154000E2A00100000001000000010000000100000024 -S3154000E2B00100000001000000010000000100000014 -S3154000E2C00100000001000000010000000100000004 -S3154000E2D001000000010000000100000001000000F4 -S3154000E2E001000000010000000100000001000000E4 -S3154000E2F001000000010000000100000001000000D4 -S3154000E30001000000010000000100000001000000C3 -S3154000E31001000000010000000100000001000000B3 -S3154000E32001000000010000000100000001000000A3 -S3154000E3300100000001000000010000000100000093 -S3154000E3400100000001000000010000000100000083 -S3154000E3500100000001000000010000000100000073 -S3154000E3600100000001000000010000000100000063 -S3154000E3700100000001000000010000000100000053 -S3154000E3800100000001000000010000000100000043 -S3154000E3900100000001000000010000000100000033 -S3154000E3A00100000001000000010000000100000023 -S3154000E3B00100000001000000010000000100000013 -S3154000E3C00100000001000000010000000100000003 -S3154000E3D001000000010000000100000001000000F3 -S3154000E3E001000000010000000100000001000000E3 -S3154000E3F001000000010000000100000001000000D3 -S3154000E40001000000010000000100000001000000C2 -S3154000E41001000000010000000100000001000000B2 -S3154000E42001000000010000000100000001000000A2 -S3154000E4300100000001000000010000000100000092 -S3154000E4400100000001000000010000000100000082 -S3154000E4500100000001000000010000000100000072 -S3154000E4600100000001000000010000000100000062 -S3154000E4700100000001000000010000000100000052 -S3154000E4800100000001000000010000000100000042 -S3154000E4900100000001000000010000000100000032 -S3154000E4A00100000001000000010000000100000022 -S3154000E4B00100000001000000010000000100000012 -S3154000E4C00100000001000000010000000100000002 -S3154000E4D001000000010000000100000001000000F2 -S3154000E4E001000000010000000100000001000000E2 -S3154000E4F001000000010000000100000001000000D2 -S3154000E50001000000010000000100000001000000C1 -S3154000E51001000000010000000100000001000000B1 -S3154000E52001000000010000000100000001000000A1 -S3154000E5300100000001000000010000000100000091 -S3154000E5400100000001000000010000000100000081 -S3154000E5500100000001000000010000000100000071 -S3154000E5600100000001000000010000000100000061 -S3154000E5700100000001000000010000000100000051 -S3154000E5800100000001000000010000000100000041 -S3154000E5900100000001000000010000000100000031 -S3154000E5A00100000001000000010000000100000021 -S3154000E5B00100000001000000010000000100000011 -S3154000E5C00100000001000000010000000100000001 -S3154000E5D001000000010000000100000001000000F1 -S3154000E5E001000000010000000100000001000000E1 -S3154000E5F001000000010000000100000001000000D1 -S3154000E60001000000010000000100000001000000C0 -S3154000E61001000000010000000100000001000000B0 -S3154000E62001000000010000000100000001000000A0 -S3154000E6300100000001000000010000000100000090 -S3154000E6400100000001000000010000000100000080 -S3154000E6500100000001000000010000000100000070 -S3154000E6600100000001000000010000000100000060 -S3154000E6700100000001000000010000000100000050 -S3154000E6800100000001000000010000000100000040 -S3154000E6900100000001000000010000000100000030 -S3154000E6A00100000001000000010000000100000020 -S3154000E6B00100000001000000010000000100000010 -S3154000E6C00100000001000000010000000100000000 -S3154000E6D001000000010000000100000001000000F0 -S3154000E6E001000000010000000100000001000000E0 -S3154000E6F001000000010000000100000001000000D0 -S3154000E70001000000010000000100000001000000BF -S3154000E71001000000010000000100000001000000AF -S3154000E720010000000100000001000000010000009F -S3154000E730010000000100000001000000010000008F -S3154000E740010000000100000001000000010000007F -S3154000E750010000000100000001000000010000006F -S3154000E760010000000100000001000000010000005F -S3154000E770010000000100000001000000010000004F -S3154000E780010000000100000001000000010000003F -S3154000E790010000000100000001000000010000002F -S3154000E7A0010000000100000001000000010000001F -S3154000E7B0010000000100000001000000010000000F -S3154000E7C001000000010000000100000001000000FF -S3154000E7D001000000010000000100000001000000EF -S3154000E7E001000000010000000100000001000000DF -S3154000E7F001000000010000000100000001000000CF -S3154000E80001000000010000000100000001000000BE -S3154000E81001000000010000000100000001000000AE -S3154000E820010000000100000001000000010000009E -S3154000E830010000000100000001000000010000008E -S3154000E840010000000100000001000000010000007E -S3154000E850010000000100000001000000010000006E -S3154000E860010000000100000001000000010000005E -S3154000E870010000000100000001000000010000004E -S3154000E880010000000100000001000000010000003E -S3154000E890010000000100000001000000010000002E -S3154000E8A0010000000100000001000000010000001E -S3154000E8B0010000000100000001000000010000000E -S3154000E8C001000000010000000100000001000000FE -S3154000E8D001000000010000000100000001000000EE -S3154000E8E001000000010000000100000001000000DE -S3154000E8F001000000010000000100000001000000CE -S3154000E90001000000010000000100000001000000BD -S3154000E91001000000010000000100000001000000AD -S3154000E920010000000100000001000000010000009D -S3154000E930010000000100000001000000010000008D -S3154000E940010000000100000001000000010000007D -S3154000E950010000000100000001000000010000006D -S3154000E960010000000100000001000000010000005D -S3154000E970010000000100000001000000010000004D -S3154000E980010000000100000001000000010000003D -S3154000E990010000000100000001000000010000002D -S3154000E9A0010000000100000001000000010000001D -S3154000E9B0010000000100000001000000010000000D -S3154000E9C001000000010000000100000001000000FD -S3154000E9D001000000010000000100000001000000ED -S3154000E9E001000000010000000100000001000000DD -S3154000E9F001000000010000000100000001000000CD -S3154000EA0001000000010000000100000001000000BC -S3154000EA1001000000010000000100000001000000AC -S3154000EA20010000000100000001000000010000009C -S3154000EA30010000000100000001000000010000008C -S3154000EA40010000000100000001000000010000007C -S3154000EA50010000000100000001000000010000006C -S3154000EA60010000000100000001000000010000005C -S3154000EA70010000000100000001000000010000004C -S3154000EA80010000000100000001000000010000003C -S3154000EA90010000000100000001000000010000002C -S3154000EAA0010000000100000001000000010000001C -S3154000EAB0010000000100000001000000010000000C -S3154000EAC001000000010000000100000001000000FC -S3154000EAD001000000010000000100000001000000EC -S3154000EAE001000000010000000100000001000000DC -S3154000EAF001000000010000000100000001000000CC -S3154000EB0001000000010000000100000001000000BB -S3154000EB1001000000010000000100000001000000AB -S3154000EB20010000000100000001000000010000009B -S3154000EB30010000000100000001000000010000008B -S3154000EB40010000000100000001000000010000007B -S3154000EB50010000000100000001000000010000006B -S3154000EB60010000000100000001000000010000005B -S3154000EB70010000000100000001000000010000004B -S3154000EB80010000000100000001000000010000003B -S3154000EB90010000000100000001000000010000002B -S3154000EBA0010000000100000001000000010000001B -S3154000EBB0010000000100000001000000010000000B -S3154000EBC001000000010000000100000001000000FB -S3154000EBD001000000010000000100000001000000EB -S3154000EBE001000000010000000100000001000000DB -S3154000EBF001000000010000000100000001000000CB -S3154000EC0001000000010000000100000001000000BA -S3154000EC1001000000010000000100000001000000AA -S3154000EC20010000000100000001000000010000009A -S3154000EC30010000000100000001000000010000008A -S3154000EC40010000000100000001000000010000007A -S3154000EC50010000000100000001000000010000006A -S3154000EC60010000000100000001000000010000005A -S3154000EC70010000000100000001000000010000004A -S3154000EC80010000000100000001000000010000003A -S3154000EC90010000000100000001000000010000002A -S3154000ECA0010000000100000001000000010000001A -S3154000ECB0010000000100000001000000010000000A -S3154000ECC001000000010000000100000001000000FA -S3154000ECD001000000010000000100000001000000EA -S3154000ECE001000000010000000100000001000000DA -S3154000ECF001000000010000000100000001000000CA -S3154000ED0001000000010000000100000001000000B9 -S3154000ED1001000000010000000100000001000000A9 -S3154000ED200100000001000000010000000100000099 -S3154000ED300100000001000000010000000100000089 -S3154000ED400100000001000000010000000100000079 -S3154000ED500100000001000000010000000100000069 -S3154000ED600100000001000000010000000100000059 -S3154000ED700100000001000000010000000100000049 -S3154000ED800100000001000000010000000100000039 -S3154000ED900100000001000000010000000100000029 -S3154000EDA00100000001000000010000000100000019 -S3154000EDB00100000001000000010000000100000009 -S3154000EDC001000000010000000100000001000000F9 -S3154000EDD001000000010000000100000001000000E9 -S3154000EDE001000000010000000100000001000000D9 -S3154000EDF001000000010000000100000001000000C9 -S3154000EE0001000000010000000100000001000000B8 -S3154000EE1001000000010000000100000001000000A8 -S3154000EE200100000001000000010000000100000098 -S3154000EE300100000001000000010000000100000088 -S3154000EE400100000001000000010000000100000078 -S3154000EE500100000001000000010000000100000068 -S3154000EE600100000001000000010000000100000058 -S3154000EE700100000001000000010000000100000048 -S3154000EE800100000001000000010000000100000038 -S3154000EE900100000001000000010000000100000028 -S3154000EEA00100000001000000010000000100000018 -S3154000EEB00100000001000000010000000100000008 -S3154000EEC001000000010000000100000001000000F8 -S3154000EED001000000010000000100000001000000E8 -S3154000EEE001000000010000000100000001000000D8 -S3154000EEF001000000010000000100000001000000C8 -S3154000EF0001000000010000000100000001000000B7 -S3154000EF1001000000010000000100000001000000A7 -S3154000EF200100000001000000010000000100000097 -S3154000EF300100000001000000010000000100000087 -S3154000EF400100000001000000010000000100000077 -S3154000EF500100000001000000010000000100000067 -S3154000EF600100000001000000010000000100000057 -S3154000EF700100000001000000010000000100000047 -S3154000EF800100000001000000010000000100000037 -S3154000EF900100000001000000010000000100000027 -S3154000EFA00100000001000000010000000100000017 -S3154000EFB00100000001000000010000000100000007 -S3154000EFC001000000010000000100000001000000F7 -S3154000EFD001000000010000000100000001000000E7 -S3154000EFE001000000010000000100000001000000D7 -S3154000EFF001000000010000000100000001000000C7 -S3154000F00001000000010000000100000001000000B6 -S3154000F01001000000010000000100000001000000A6 -S3154000F0200100000001000000010000000100000096 -S3154000F0300100000001000000010000000100000086 -S3154000F0400100000001000000010000000100000076 -S3154000F0500100000001000000010000000100000066 -S3154000F0600100000001000000010000000100000056 -S3154000F0700100000001000000010000000100000046 -S3154000F0800100000001000000010000000100000036 -S3154000F0900100000001000000010000000100000026 -S3154000F0A00100000001000000010000000100000016 -S3154000F0B00100000001000000010000000100000006 -S3154000F0C001000000010000000100000001000000F6 -S3154000F0D001000000010000000100000001000000E6 -S3154000F0E001000000010000000100000001000000D6 -S3154000F0F001000000010000000100000001000000C6 -S3154000F10001000000010000000100000001000000B5 -S3154000F11001000000010000000100000001000000A5 -S3154000F1200100000001000000010000000100000095 -S3154000F1300100000001000000010000000100000085 -S3154000F1400100000001000000010000000100000075 -S3154000F1500100000001000000010000000100000065 -S3154000F1600100000001000000010000000100000055 -S3154000F1700100000001000000010000000100000045 -S3154000F1800100000001000000010000000100000035 -S3154000F1900100000001000000010000000100000025 -S3154000F1A00100000001000000010000000100000015 -S3154000F1B00100000001000000010000000100000005 -S3154000F1C001000000010000000100000001000000F5 -S3154000F1D001000000010000000100000001000000E5 -S3154000F1E001000000010000000100000001000000D5 -S3154000F1F001000000010000000100000001000000C5 -S3154000F20001000000010000000100000001000000B4 -S3154000F21001000000010000000100000001000000A4 -S3154000F2200100000001000000010000000100000094 -S3154000F2300100000001000000010000000100000084 -S3154000F2400100000001000000010000000100000074 -S3154000F2500100000001000000010000000100000064 -S3154000F2600100000001000000010000000100000054 -S3154000F2700100000001000000010000000100000044 -S3154000F2800100000001000000010000000100000034 -S3154000F2900100000001000000010000000100000024 -S3154000F2A00100000001000000010000000100000014 -S3154000F2B00100000001000000010000000100000004 -S3154000F2C001000000010000000100000001000000F4 -S3154000F2D001000000010000000100000001000000E4 -S3154000F2E001000000010000000100000001000000D4 -S3154000F2F001000000010000000100000001000000C4 -S3154000F30001000000010000000100000001000000B3 -S3154000F31001000000010000000100000001000000A3 -S3154000F3200100000001000000010000000100000093 -S3154000F3300100000001000000010000000100000083 -S3154000F3400100000001000000010000000100000073 -S3154000F3500100000001000000010000000100000063 -S3154000F3600100000001000000010000000100000053 -S3154000F3700100000001000000010000000100000043 -S3154000F3800100000001000000010000000100000033 -S3154000F3900100000001000000010000000100000023 -S3154000F3A00100000001000000010000000100000013 -S3154000F3B00100000001000000010000000100000003 -S3154000F3C001000000010000000100000001000000F3 -S3154000F3D001000000010000000100000001000000E3 -S3154000F3E001000000010000000100000001000000D3 -S3154000F3F001000000010000000100000001000000C3 -S3154000F40001000000010000000100000001000000B2 -S3154000F41001000000010000000100000001000000A2 -S3154000F4200100000001000000010000000100000092 -S3154000F4300100000001000000010000000100000082 -S3154000F4400100000001000000010000000100000072 -S3154000F4500100000001000000010000000100000062 -S3154000F4600100000001000000010000000100000052 -S3154000F4700100000001000000010000000100000042 -S3154000F4800100000001000000010000000100000032 -S3154000F4900100000001000000010000000100000022 -S3154000F4A00100000001000000010000000100000012 -S3154000F4B00100000001000000010000000100000002 -S3154000F4C001000000010000000100000001000000F2 -S3154000F4D001000000010000000100000001000000E2 -S3154000F4E001000000010000000100000001000000D2 -S3154000F4F001000000010000000100000001000000C2 -S3154000F50001000000010000000100000001000000B1 -S3154000F51001000000010000000100000001000000A1 -S3154000F5200100000001000000010000000100000091 -S3154000F5300100000001000000010000000100000081 -S3154000F5400100000001000000010000000100000071 -S3154000F5500100000001000000010000000100000061 -S3154000F5600100000001000000010000000100000051 -S3154000F5700100000001000000010000000100000041 -S3154000F5800100000001000000010000000100000031 -S3154000F5900100000001000000010000000100000021 -S3154000F5A00100000001000000010000000100000011 -S3154000F5B00100000001000000010000000100000001 -S3154000F5C001000000010000000100000001000000F1 -S3154000F5D001000000010000000100000001000000E1 -S3154000F5E001000000010000000100000001000000D1 -S3154000F5F001000000010000000100000001000000C1 -S3154000F60001000000010000000100000001000000B0 -S3154000F61001000000010000000100000001000000A0 -S3154000F6200100000001000000010000000100000090 -S3154000F6300100000001000000010000000100000080 -S3154000F6400100000001000000010000000100000070 -S3154000F6500100000001000000010000000100000060 -S3154000F6600100000001000000010000000100000050 -S3154000F6700100000001000000010000000100000040 -S3154000F6800100000001000000010000000100000030 -S3154000F6900100000001000000010000000100000020 -S3154000F6A00100000001000000010000000100000010 -S3154000F6B00100000001000000010000000100000000 -S3154000F6C001000000010000000100000001000000F0 -S3154000F6D001000000010000000100000001000000E0 -S3154000F6E001000000010000000100000001000000D0 -S3154000F6F001000000010000000100000001000000C0 -S3154000F70001000000010000000100000001000000AF -S3154000F710010000000100000001000000010000009F -S3154000F720010000000100000001000000010000008F -S3154000F730010000000100000001000000010000007F -S3154000F740010000000100000001000000010000006F -S3154000F750010000000100000001000000010000005F -S3154000F760010000000100000001000000010000004F -S3154000F770010000000100000001000000010000003F -S3154000F780010000000100000001000000010000002F -S3154000F790010000000100000001000000010000001F -S3154000F7A0010000000100000001000000010000000F -S3154000F7B001000000010000000100000001000000FF -S3154000F7C001000000010000000100000001000000EF -S3154000F7D001000000010000000100000001000000DF -S3154000F7E001000000010000000100000001000000CF -S3154000F7F001000000010000000100000001000000BF -S3154000F80001000000010000000100000001000000AE -S3154000F810010000000100000001000000010000009E -S3154000F820010000000100000001000000010000008E -S3154000F830010000000100000001000000010000007E -S3154000F840010000000100000001000000010000006E -S3154000F850010000000100000001000000010000005E -S3154000F860010000000100000001000000010000004E -S3154000F870010000000100000001000000010000003E -S3154000F880010000000100000001000000010000002E -S3154000F890010000000100000001000000010000001E -S3154000F8A0010000000100000001000000010000000E -S3154000F8B001000000010000000100000001000000FE -S3154000F8C001000000010000000100000001000000EE -S3154000F8D001000000010000000100000001000000DE -S3154000F8E001000000010000000100000001000000CE -S3154000F8F001000000010000000100000001000000BE -S3154000F90001000000010000000100000001000000AD -S3154000F910010000000100000001000000010000009D -S3154000F920010000000100000001000000010000008D -S3154000F930010000000100000001000000010000007D -S3154000F940010000000100000001000000010000006D -S3154000F950010000000100000001000000010000005D -S3154000F960010000000100000001000000010000004D -S3154000F970010000000100000001000000010000003D -S3154000F980010000000100000001000000010000002D -S3154000F990010000000100000001000000010000001D -S3154000F9A0010000000100000001000000010000000D -S3154000F9B001000000010000000100000001000000FD -S3154000F9C001000000010000000100000001000000ED -S3154000F9D001000000010000000100000001000000DD -S3154000F9E001000000010000000100000001000000CD -S3154000F9F001000000010000000100000001000000BD -S3154000FA0001000000010000000100000001000000AC -S3154000FA10010000000100000001000000010000009C -S3154000FA20010000000100000001000000010000008C -S3154000FA30010000000100000001000000010000007C -S3154000FA40010000000100000001000000010000006C -S3154000FA50010000000100000001000000010000005C -S3154000FA60010000000100000001000000010000004C -S3154000FA70010000000100000001000000010000003C -S3154000FA80010000000100000001000000010000002C -S3154000FA90010000000100000001000000010000001C -S3154000FAA0010000000100000001000000010000000C -S3154000FAB001000000010000000100000001000000FC -S3154000FAC001000000010000000100000001000000EC -S3154000FAD001000000010000000100000001000000DC -S3154000FAE001000000010000000100000001000000CC -S3154000FAF001000000010000000100000001000000BC -S3154000FB0001000000010000000100000001000000AB -S3154000FB10010000000100000001000000010000009B -S3154000FB20010000000100000001000000010000008B -S3154000FB30010000000100000001000000010000007B -S3154000FB40010000000100000001000000010000006B -S3154000FB50010000000100000001000000010000005B -S3154000FB60010000000100000001000000010000004B -S3154000FB70010000000100000001000000010000003B -S3154000FB80010000000100000001000000010000002B -S3154000FB90010000000100000001000000010000001B -S3154000FBA0010000000100000001000000010000000B -S3154000FBB001000000010000000100000001000000FB -S3154000FBC001000000010000000100000001000000EB -S3154000FBD001000000010000000100000001000000DB -S3154000FBE001000000010000000100000001000000CB -S3154000FBF001000000010000000100000001000000BB -S3154000FC0001000000010000000100000001000000AA -S3154000FC10010000000100000001000000010000009A -S3154000FC20010000000100000001000000010000008A -S3154000FC30010000000100000001000000010000007A -S3154000FC40010000000100000001000000010000006A -S3154000FC50010000000100000001000000010000005A -S3154000FC60010000000100000001000000010000004A -S3154000FC70010000000100000001000000010000003A -S3154000FC80010000000100000001000000010000002A -S3154000FC90010000000100000001000000010000001A -S3154000FCA0010000000100000001000000010000000A -S3154000FCB001000000010000000100000001000000FA -S3154000FCC001000000010000000100000001000000EA -S3154000FCD001000000010000000100000001000000DA -S3154000FCE001000000010000000100000001000000CA -S3154000FCF001000000010000000100000001000000BA -S3154000FD0001000000010000000100000001000000A9 -S3154000FD100100000001000000010000000100000099 -S3154000FD200100000001000000010000000100000089 -S3154000FD300100000001000000010000000100000079 -S3154000FD400100000001000000010000000100000069 -S3154000FD500100000001000000010000000100000059 -S3154000FD600100000001000000010000000100000049 -S3154000FD700100000001000000010000000100000039 -S3154000FD800100000001000000010000000100000029 -S3154000FD900100000001000000010000000100000019 -S3154000FDA00100000001000000010000000100000009 -S3154000FDB001000000010000000100000001000000F9 -S3154000FDC001000000010000000100000001000000E9 -S3154000FDD001000000010000000100000001000000D9 -S3154000FDE001000000010000000100000001000000C9 -S3154000FDF001000000010000000100000001000000B9 -S3154000FE0001000000010000000100000001000000A8 -S3154000FE100100000001000000010000000100000098 -S3154000FE200100000001000000010000000100000088 -S3154000FE300100000001000000010000000100000078 -S3154000FE400100000001000000010000000100000068 -S3154000FE500100000001000000010000000100000058 -S3154000FE600100000001000000010000000100000048 -S3154000FE700100000001000000010000000100000038 -S3154000FE800100000001000000010000000100000028 -S3154000FE900100000001000000010000000100000018 -S3154000FEA00100000001000000010000000100000008 -S3154000FEB001000000010000000100000001000000F8 -S3154000FEC001000000010000000100000001000000E8 -S3154000FED001000000010000000100000001000000D8 -S3154000FEE001000000010000000100000001000000C8 -S3154000FEF001000000010000000100000001000000B8 -S3154000FF0001000000010000000100000001000000A7 -S3154000FF100100000001000000010000000100000097 -S3154000FF200100000001000000010000000100000087 -S3154000FF300100000001000000010000000100000077 -S3154000FF400100000001000000010000000100000067 -S3154000FF500100000001000000010000000100000057 -S3154000FF600100000001000000010000000100000047 -S3154000FF700100000001000000010000000100000037 -S3154000FF800100000001000000010000000100000027 -S3154000FF900100000001000000010000000100000017 -S3154000FFA00100000001000000010000000100000007 -S3154000FFB001000000010000000100000001000000F7 -S3154000FFC001000000010000000100000001000000E7 -S3154000FFD001000000010000000100000001000000D7 -S3154000FFE001000000010000000100000001000000C7 -S3154000FFF001000000010000000100000001000000B7 -S315400100009DE3BF987FFFC4741100403080A2200059 -S31540010010128000F382102001C226200CC026200443 -S31540010020C0260000C026200882102002C2262008D1 -S31540010030C0260000C026000082102003C2262008E8 -S315400100409A102083DA262008A2102063C0260000D9 -S31540010050A2847FFF1CBFFFFE01000000A2102063A7 -S31540010060C2060000A2847FFF1CBFFFFE8210200251 -S31540010070C2262008A4062004C28480208088600409 -S3154001008002BFFFFE01000000C0262008C026000076 -S31540010090A6102001C2848020833860148208603F04 -S315400100A080A0600122800093A604E0018210200313 -S315400100B0C2262008C2848020808860010280000711 -S315400100C080886004C2860020C284802080886001C6 -S315400100D012BFFFFD8088600402BFFFFB808860027B -S315400100E002BFFFF901000000C0262008C0262004F7 -S315400100F080A4E0010480000821100080C284802091 -S315400101008208608080A06001028000AE010000008C -S3154001011021100080DA4C20F0DA260000C2848020CB -S315400101208208600480A060010280009A01000000FC -S31540010130C284802080A4E001048000208210200136 -S31540010140A210200180A440131680000D2B100080C0 -S31540010150A81420F0E00560E8901000114000247AD0 -S3154001016092100010C24D0008A2046001C226000090 -S3154001017080A4401306BFFFFA90100011C28480206C -S315400101808208608080A06001028000920100000028 -S31540010190C2848020833860148208603F80A0401367 -S315400101A002800004010000007FFFC4159010200664 -S315400101B0C284802082102001C226200CDA8480204D -S315400101C0808B60011280006801000000821020834C -S315400101D0C226200880A4E0010280005201000000EE -S315400101E0C28480208088640002BFFFFE01000000B7 -S315400101F0C284802080886001028000530100000093 -S3154001020080A4E00124800012A2102000C284802034 -S315400102108330601A80A04013028000040100000070 -S315400102207FFFC3F790102009C28480208088610037 -S315400102300280005501000000C2848020808864004D -S315400102400280004D01000000A210200080A440134E -S315400102501680001203100080A81060F02B10008059 -S31540010260E08600209010001140002437D20560E856 -S31540010270C24D0008A204600180A040100280000423 -S315400102809010200C7FFFC3DE0100000080A44013C4 -S3154001029006BFFFF40100000080A4E0010480000FC6 -S315400102A001000000C28480208088610012800042E3 -S315400102B001000000C28480208330601A80A0600063 -S315400102C01280003A01000000C284802080886400C8 -S315400102D01280003301000000C284802080886001C2 -S315400102E01280001D01000000C02620083080003C1D -S315400102F0C0260000C2848020833860148208603F93 -S3154001030080A0401322BFFFFBA604E00180A4E001C8 -S3154001031034BFFF67A604FFFF10BFFF6682102003AC -S31540010320C28480208088600112BFFFB201000000B4 -S31540010330C28480208088600102BFFFFA010000006C -S3154001034030BFFFAC7FFFC3AE9010200810BFFFAE99 -S3154001035080A4E0017FFFC3AA9010200CC02620088C -S315400103603080001F7FFFC3A69010200710BFFF9962 -S31540010370821020837FFFC3A29010200B10BFFFB4D1 -S31540010380A21020007FFFC39E9010200A30BFFFAB12 -S315400103907FFFC39B9010200130BFFF667FFFC3984C -S315400103A09010200B30BFFFCD7FFFC3959010200EDC -S315400103B030BFFFC67FFFC3929010200D30BFFFBEF6 -S315400103C07FFFC38F9010200410BFFF532110008080 -S315400103D07FFFC38B9010200530BFFF6E81C7E008B9 -S315400103E091E8200017100143DA02E08090022010C4 -S315400103F09B2B60029812E080D023000DC202E08060 -S3154001040082006001C222E08081C3E0080100000051 -S31540010410C0220000C022204082103FFFC222200C91 -S315400104209A10200103100143DA20608081C3E0085D -S31540010430010000009DE3BF7803100144F02060CC29 -S315400104407FFFC365110040347FFFFFF29010001813 -S31540010450A010200123100040921000104000298F67 -S31540010460901463E4A004200180A4200F04BFFFFC84 -S3154001047092100010C20620208330601CAE0060013D -S31540010480AC10200080A58017168000ED0300003FC8 -S31540010490B81063FE2B1001430300002AB61062AA6E -S315400104A0BA102001B410001CB2156080832DA00C37 -S315400104B080A5E00114800119A600401880A5A0007E -S315400104C01280010A01000000F824E008C204E00895 -S315400104D080A0401C02800004010000007FFFC34849 -S315400104E090102001F824E040C204E04080A0401C66 -S315400104F002800004010000007FFFC34190102002EA -S31540010500C204E00880A0600012BFFFFE01000000A7 -S31540010510C205608080A0601002800005251001435D -S315400105207FFFC3379010200325100143A0102001FF -S31540010530A414A080A2102020832C20029A244010CB -S31540010540D8048001A004200180A3000D028000048C -S31540010550901020047FFFC32A0100000080A4200FD1 -S3154001056004BFFFF7832C2002FA256080F624C000E1 -S31540010570F424E040C204C00080A0401B0280000475 -S31540010580A010001A7FFFC31E90102005C204E04050 -S3154001059080A0401002800004010000007FFFC318C4 -S315400105A090102005F424E008C204E00880A0600011 -S315400105B012BFFFFE01000000C205608080A06010EE -S315400105C002800005251001437FFFC30D90102006D0 -S315400105D025100143A0102001A414A080A210201FC1 -S315400105E09B2C2002C204800D80A04011A004200152 -S315400105F0A2047FFE02800004901020077FFFC30003 -S315400106000100000080A4200704BFFFF79B2C2002B5 -S31540010610A4066028A210201CA0102005C204800058 -S3154001062080A04011A404A004A2047FFE028000041D -S31540010630901020087FFFC2F201000000A0843FFF16 -S315400106401CBFFFF701000000FA27BFE8C207BFE859 -S3154001065082006001C227BFECDA07BFEC9A03600152 -S31540010660DA27BFF0C207BFF082006001C227BFF49C -S315400106709A102006DA27BFD8C024C000C024E04023 -S31540010680FA256080A0102002E024E040E024E00842 -S31540010690834440008088610002800005010000001B -S315400106A0805000018050000180500001C207BFD830 -S315400106B0C227BFDCDA07BFD880A3600602800004E8 -S315400106C0010000007FFFC2CE9010200AE024E0081E -S315400106D001000000C207BFD8C227BFDCDA07BFD876 -S315400106E080A3600602800004010000007FFFC2C4AF -S315400106F09010200AE024E00801000000C027BFDC7A -S31540010700C207BFDC80A06000128000960100000095 -S31540010710C204E00880A0600012BFFFFE0100000095 -S31540010720C205608080A06004028000050300003F8E -S315400107307FFFC2B39010200D0300003FC024E0406C -S31540010740821063FEC224E008031001439A1020017F -S31540010750DA206080400003E801000000400003E821 -S3154001076090122F0082103FFFC224E040C204E040B5 -S3154001077080A0600002BFFFFE01000000C20560804C -S3154001078080A0600202800004A01560807FFFC29CA9 -S315400107909010200EC204200480A0601F0280000435 -S315400107A0010000007FFFC2969010200F400003D247 -S315400107B0A8100010400003D290023F00A010200272 -S315400107C0A4102020400003CC01000000400003CCCF -S315400107D090023F00C2056080A204200180A0401122 -S315400107E002800004901020107FFFC28501000000A6 -S315400107F0832C20029A248010D8050001A0100011F4 -S3154001080080A3000D02800004901020117FFFC27C5E -S315400108100100000080A4200F04BFFFEB010000008F -S31540010820C024E040AC05A00182103FFFC224E00C89 -S3154001083080A5801706BFFF1F832DA00C80A5E00170 -S315400108400480004B01000000C0262024C20620245B -S3154001085080A060001280003F0100000021040000DA -S31540010860E0262024C206202480A0401002800005F4 -S31540010870821020017FFFC262901020148210200155 -S31540010880C2262020C0262024C206202480A0401053 -S3154001089002800004010000007FFFC259901020151C -S315400108A0C0262020C0262024C206202480A0600025 -S315400108B0128000240100000082102002C22620205E -S315400108C0DA062020808B60020280001B01000000B6 -S315400108D0C0262020C2062020808860020280002493 -S315400108E001000000308000117FFFFECA9010001306 -S315400108F09B2DA01CDA24E024C204E0248330601C32 -S3154001090080A0401602BFFEF1010000007FFFC23CFD -S315400109109010201230BFFEED7FFFC23490100016BA -S3154001092010BFFEE880A5A0007FFFC23590102018B9 -S315400109303080000F7FFFC2329010201730BFFFE595 -S315400109407FFFC22F9010201610BFFFDD82102002BC -S315400109507FFFC22B9010201310BFFFC2210400005D -S315400109607FFFC2279010200B30BFFF6A81C7E00886 -S3154001097091E8200003100143DA0060C8C0236008F3 -S3154001098081C3E008901020009DE3BF902F100144E1 -S31540010990E205E0CCA004610027100143C204200413 -S315400109A0F024E0C87FFFC21190102010030180009F -S315400109B0DA04200482106020808B40011280010DF0 -S315400109C001000000DA046100DA27BFF0C2046100C9 -S315400109D080A3400102800005821020017FFFC208EA -S315400109E09010200282102001C2242004DA04610002 -S315400109F0DA27BFF0C204610080A3400102800120D2 -S31540010A0001000000C0242004DA046100DA27BFF0A7 -S31540010A10C204610080A340010280000580A7200036 -S31540010A207FFFC1F79010200480A72000128000B7F5 -S31540010A3080A72001B010200180A6001A1680001759 -S31540010A40A8102001108000052510004280A6001A3A -S31540010A5016800013DA04E0C8A206C0189014A174E7 -S31540010A609210001180A4601F14BFFFF9B006200147 -S31540010A704000280A01000000D805E0CCC20320400E -S31540010A809B2D00118210400DC223204080A6001AE2 -S31540010A9006BFFFF3A206C018DA04E0C89606A00313 -S31540010AA0C0236004833AE01FC023601098103FFFC3 -S31540010AB08330601EAA02C001D8236014D823600C7B -S31540010AC0A2102000AD3D600280A720000280008A6E -S31540010AD0A810200180A4401C168000ECC204E0C886 -S31540010AE080A7200104800015B010200080A5A00039 -S31540010AF00480001380A0001C9B2C6010832C60187E -S31540010B008210400D992C60088210400C82104011D1 -S31540010B10993D6002DA04E0C8C2236020B006200194 -S31540010B2080A72001048000059A03600480A3001871 -S31540010B3014BFFFFA0100000080A0001CB0603FFF17 -S31540010B4080A6001A16800016C204E0C8250180005E -S31540010B5080A72000028000058206C01880A72001D8 -S31540010B60028000848206C011C2242004D804E0C851 -S31540010B70832D00189B3E4018C2232008808B6001BC -S31540010B80128000859A10000CB006200180A6001A3A -S31540010B9006BFFFF180A72000C204E0C8C02060085C -S31540010BA0808E600112800009B0102000B00620013D -S31540010BB080A6201F14800005833E4018808860016E -S31540010BC022BFFFFCB006200180A72000028000065C -S31540010BD08206C01880A72001028000048216E02008 -S31540010BE08206C01182106020C2242004DA04E0C8C3 -S31540010BF0832D0018C2236008C203600880A06000EC -S31540010C0012BFFFFE01000000C2042004808860205C -S31540010C100280009801000000DA042004030100006C -S31540010C20808B40010280009001000000DA0420041C -S31540010C3003008000808B4001028000880100000093 -S31540010C40C2042008C227BFF0DA04200CDA27BFF419 -S31540010C50C204E0C8992D0018D82060089A100001F6 -S31540010C60C203600880A0600012BFFFFE01000000C1 -S31540010C70C2042004808860200280007501000000C3 -S31540010C80DA04200403010000808B40010280006DDC -S31540010C9001000000DA04200403008000808B40013B -S31540010CA00280006501000000DA042008C207BFF097 -S31540010CB080A0400D02800004010000007FFFC1506A -S31540010CC09010200EDA04200CC207BFF480A0400D1C -S31540010CD002800005030180007FFFC1499010200F6B -S31540010CE003018000C224200480A7200012BFFF7A9E -S31540010CF0A204600180A4600004BFFF7B80A720019D -S31540010D0010800062C204E0C80280003D111000421A -S31540010D10B010200080A6001C16BFFF60A81020015D -S31540010D20108000052510004280A6001C16BFFF5CFE -S31540010D30DA04E0C8A206C0189014A17492100011FA -S31540010D4080A4601F14BFFFF9B0062001400027535D -S31540010D5001000000D805E0CCC20320409B2D0011C4 -S31540010D608210400DC223204010BFFFF180A6001C17 -S31540010D70F6242004D804E0C8832D00189B3E401871 -S31540010D80C2232008808B600122BFFF81B00620016B -S31540010D909A10000CC203600880A0600012BFFFFEDB -S31540010DA001000000DA04200403010000808B4001A9 -S31540010DB00280001E01000000DA04200403008000C6 -S31540010DC0808B40010280001601000000E4242004CB -S31540010DD0C20420048088401222BFFF6DB006200164 -S31540010DE07FFFC1079010200710BFFF69B0062001A1 -S31540010DF07FFFC1039010200130BFFEF39012217492 -S31540010E00400027269210001BDA05E0CC832F001BF9 -S31540010E10C223604010BFFF22DA04E0C87FFFC0F85A -S31540010E209010200630BFFFEA7FFFC0F590102005E5 -S31540010E3030BFFFE27FFFC0F29010200D30BFFF9B15 -S31540010E407FFFC0EF9010200C30BFFF937FFFC0ECB7 -S31540010E509010200B30BFFF8B7FFFC0E99010200A16 -S31540010E6030BFFF787FFFC0E69010200930BFFF708A -S31540010E707FFFC0E39010200830BFFF687FFFC0E0CE -S31540010E809010200330BFFEE0C020600CDA05E0CCB4 -S31540010E90C023604082103FFFC223600C81C7E00837 -S31540010EA091E820009DE3BF983B100144E60760CCE2 -S31540010EB07FFFC0CE90102011C024E01CC204E01C6C -S31540010EC080A060000280004801000000C204E01CCE -S31540010ED08330601B80A0401A0A80003F0100000059 -S31540010EE0A410200080A4801A1A8000422D100143CC -S31540010EF0AA102001AE15A080A32CA002E006401145 -S31540010F007FFFFD4490100013A804A0019B2D4012C1 -S31540010F10832D20108210400DC224E01C9A103FFF01 -S31540010F20DA24E040D80600119A10201FDA23200463 -S31540010F30A0043FFFDA230000A12C20048204000C08 -S31540010F409A102005DA206010C0206014EA2060184B -S31540010F509A100001C203601080A0600012BFFFFE1C -S31540010F6001000000A004000CC204201080A0600013 -S31540010F7002BFFFFE01000000C0242018C205A08068 -S31540010F8080A06002028000069A04A011900480129B -S31540010F907FFFC09B900220039A04A011C205E00482 -S31540010FA080A0400D22800006A410001490048012F7 -S31540010FB07FFFC09390022004A4100014C024E01CBB -S31540010FC080A5001A0ABFFFCEA32CA0021080000AFA -S31540010FD0DA0760CC7FFFC08A9010200210BFFFC2A3 -S31540010FE0A41020007FFFC0869010200130BFFFB8BB -S31540010FF0DA0760CCC023604082103FFFC223600CF9 -S3154001100081C7E00891E820009DE3BF987FFFC08B30 -S315400110100100000080A220000280002680A6200058 -S3154001102012800029010000007FFFC08401000000FA -S31540011030912A20047FFFC06D900220034000186D65 -S315400110400100000080A220001280002B0100000058 -S315400110504000182B01000000400017E40100000089 -S31540011060400002270100000080A6A0001280002D4A -S31540011070031001447FFFC071B41060D0912A200251 -S31540011080C206800880A060001280003080A6200041 -S3154001109012800039010000004000048E010000006A -S315400110A040001E0201000000400015C181E8000019 -S315400110B07FFFC0491100400C80A6200002BFFFDB24 -S315400110C0010000007FFFC0F5901000197FFFC05B53 -S315400110D001000000912A20047FFFC04490022003B2 -S315400110E0400018440100000080A2200002BFFFD941 -S315400110F0010000007FFFC04290102001400018000F -S3154001110001000000400017B901000000400001FC49 -S315400111100100000080A6A00002BFFFD703100144D2 -S3154001112040001DED01000000031001447FFFC04354 -S31540011130B41060D0912A2002C206800880A06000C7 -S3154001114002BFFFD480A620007FFFC03C0100000003 -S315400111507FFFC03AA0100008912A2002C2068008EB -S315400111609FC040009010001080A6200002BFFFCB18 -S31540011170010000007FFFC0D99010001940000455BE -S315400111800100000040001DC9010000004000158813 -S3154001119081E800000100000003100143DA0060CC41 -S315400111A09A036001DA2060CC81C3E00801000000A7 -S315400111B09DE3BF987FFFC00811004044D806200830 -S315400111C082103FFFC2262004DA060000C206000054 -S315400111D080A340010280006FA60B20078210201FCA -S315400111E0C2262004C226000080A4E000028000330B -S315400111F082100018A2100013C0206018A2847FFF3D -S3154001120012BFFFFE82006010A210200080A440138E -S315400112101680002B80A4E001A810200FA010001812 -S315400112207FFFBFF290100011C0242010E824201443 -S3154001123082102006C2242018DA04201080A3600FF1 -S3154001124002800004010000007FFFBFED90102003E3 -S31540011250E82420189A10200EC204201080A0400DC8 -S3154001126012BFFFFE010000009A837FFF1CBFFFFBF8 -S31540011270A4100010C204201080A0600F12BFFFFE10 -S3154001128001000000C20420188088601002800035E9 -S3154001129082102010C224A018DA042018808B601016 -S315400112A01280003801000000A204600180A44013AE -S315400112B006BFFFDCA004201080A4E00114800010CA -S315400112C080A4E0000280000782100018A2100013DB -S315400112D0C0206018A2847FFF12BFFFFE820060100B -S315400112E021100144C20420CC80A060000280002D60 -S315400112F0111000441080000D921000197FFFBFBBF2 -S31540011300901020088210200FC22620189A10202FF4 -S31540011310DA262028C206202080A0600D12BFFFFEDB -S3154001132080A4E00030BFFFE8400025DC9012219800 -S315400113307FFFFC38D00420CC82102001832840193D -S31540011340DA0420CCC22360409810200FD8262014FE -S315400113508210200DC2262018A7800000308000117F -S315400113607FFFBFA79010200482102010C224A0182E -S31540011370DA042018808B601022BFFFCDA2046001E1 -S315400113807FFFBF9F9010200510BFFFC9A2046001D7 -S315400113907FFFBF9B9010200110BFFF928210201F3C -S315400113A081C7E00881E8000000000000000000005D -S315400113B000000000000000000000000000000000E6 -S315400113C001000000010000000100000001000000D2 -S315400113D0010000000100000081C3E0080100000097 -S315400113E001000000010000000100000001000000B2 -S315400113F0010000000100000081C3E0080100000077 -S315400114000100000001000000010000000100000091 -S31540011410010000000100000081C3E0080100000056 -S315400114200100000001000000010000000100000071 -S31540011430010000000100000081C3E0080100000036 -S31540011440D482018090A2000916BFFFFE9612800B3E -S3154001145081C3E0089010000BD48201C090A200091C -S3154001146016BFFFFE9612800B81C3E0089010000B59 -S3154001147090A22004C0A201A090A22004C0A201A073 -S3154001148090A22004C0A201A090A22004C0A201A063 -S31540011490C0A2018090A2200414BFFFF70100000002 -S315400114A081C3E0080100000090A22004C0A201E02F -S315400114B090A22004C0A201E090A22004C0A201E0B3 -S315400114C090A22004C0A201E0C0A201C090A22004C3 -S315400114D014BFFFF70100000081C3E00801000000CE -S315400114E0981000089610000A98A3200814BFFFFF21 -S315400114F0D43B00099810000898A3200814BFFFFFA9 -S31540011500C01B00099810000898A32004D6030009BF -S3154001151080A2C00A1280000698A3200434BFFFFDB2 -S31540011520D603000981C3E0089010200090102001E5 -S31540011530981000089610000A98A3200814BFFFFFD0 -S31540011540D43B00099810000898A32004D60300094B -S3154001155080A2C00A1280000698A3200434BFFFFD72 -S31540011560D603000981C3E0089010200090102001A5 -S315400115709810000898A32004D2A301A0DA8301A001 -S3154001158080A340091280000698A3200414BFFFFCE3 -S31540011590D2A301A081C3E008901020009010200141 -S315400115A09A1000089AA3400AD6A34180D883418065 -S315400115B0981B000B988B0009128000069AA3400ADB -S315400115C014BFFFFBD6A3418081C3E00890102000E1 -S315400115D0901020019A1000089AA3400BD8A241CD41 -S315400115E0C48241CD8418800C8488800A128000060A -S315400115F09AA3400B14BFFFFBD8A241CD81C3E0089B -S315400116009010200090102001010000000100000010 -S31540011610010000001310008092126138D40240008C -S3154001162080A2A0011280000780A0A002D40240003F -S31540011630D4024000952AA002108000050100000056 -S315400116403280000381E80000D402400081E00000BE -S3154001165093480000818A602023100045A2146278D5 -S31540011660A40460040100000081C4400081CC8000D4 -S3154001167091D0200191D020012680000590002001C3 -S3154001168090222001912A2001912A200281C3E0085B -S315400116900100000081C3E008D082004081C3E00818 -S315400116A0D2A2004081C3E008D082018081C3E00814 -S315400116B0D2A2018081C3E008D08201A081C3E008A3 -S315400116C0D2A201A081C3E008D08201C081C3E00853 -S315400116D0D2A201C081C3E008D08201E081C3E00803 -S315400116E0D2A201E081C3E008D2A2000081C3E00892 -S315400116F0D082000081C3E00891480000818A000041 -S3154001170001000000010000000100000081C3E00863 -S315400117100100000081C3E008C0A000A081C3E00829 -S31540011720C0A000C081C3E008D01A0000010000003B -S31540011730010000000100000001000000010000005E -S315400117409DE3BF701310006DCD1A6160CD3FBFE0C0 -S31540011750111000801B100080C91B61E0C51A21D8F9 -S31540011760C11FBFE095A088C4D53FBFF0D91FBFF0C8 -S3154001177003100080D11861E881AB0A4801000000DE -S315400117800380002BC13FBFD8F91FBFD8B5A0055C68 -S31540011790F53FBFF0ED1FBFF0F11FBFF0A5A589587A -S315400117A0E91FBFE0A1A488D41510006DA1A00130A6 -S315400117B0DD1AA16881AC0ACE010000000D80002D22 -S315400117C0F53FBFD0C51FBFD083A018C291A0492104 -S315400117D099A01928D51FBFE091A308CA1710006D1B -S315400117E091A00128FD1AE17081AA0ADE01000000DC -S315400117F00D80002F01000000400001AE01000000F5 -S315400118004000020C0100000080A22000128000313D -S3154001181001000000400002610100000080A220009A -S315400118200280003501000000308000317FFFBE7428 -S3154001183090102001F91FBFD8B5A0055CF53FBFF058 -S31540011840ED1FBFF0F11FBFF0A5A58958E91FBFE005 -S31540011850A1A488D41510006DA1A00130DD1AA1689C -S3154001186081AC0ACE010000001BBFFFD7F53FBFD0B8 -S315400118707FFFBE6390102002C51FBFD083A018C250 -S3154001188091A0492199A01928D51FBFE091A308CA63 -S315400118901710006D91A00128FD1AE17081AA0ADE98 -S315400118A0010000001BBFFFD5010000007FFFBE54B1 -S315400118B0901020034000017F01000000400001DD3F -S315400118C00100000080A2200002BFFFD301000000FA -S315400118D07FFFBE4B010000004000023001000000C6 -S315400118E080A2200002800004010000007FFFBE4468 -S315400118F09010200581C7E00881E800009DE3BF986C -S315400119007FFFFF7D210000047FFFFF7D90120010C5 -S315400119107FFFFF79B0102000808A00100280000B03 -S315400119209010200040000267010000007FFFBE4387 -S3154001193001000000912A20047FFFBE2C900220085E -S315400119407FFFFF800100000081C7E00881E80000B9 -S31540011950191000809813217811100200921020006E -S31540011960150FF76C9412A3D7D03B0000D42320085F -S31540011970C11B0000C503200887A089220100000081 -S3154001198089A005408DA0892281A8CA2601000000B0 -S3154001199033800003901020009010200181C3E0089D -S315400119A001000000C11A0000C51A400089A0084282 -S315400119B081C3E008C93A8000C11A0000C51A400037 -S315400119C089A0094281C3E008C93A80001910008004 -S315400119D098132178D0230000D2232008C1030000A8 -S315400119E0C303200885A00D2181C3E008C53A8000C4 -S315400119F0C11A0000C51A400089A009C2C93A80002F -S31540011A0081C3E00801000000C11A000085A005401D -S31540011A10C53A400081C3E008010000000100000012 -S31540011A20010000000100000001000000010000006B -S31540011A30010000000100000001000000010000005B -S31540011A40010000000100000001000000010000004B -S31540011A50010000000100000001000000010000003B -S31540011A60010000000100000001000000010000002B -S31540011A70010000000100000001000000010000001B -S31540011A80010000000100000001000000010000000B -S31540011A9001000000010000000100000081A00020BB -S31540011AA081C3E00801000000C11A000081C3E008BB -S31540011AB001000000C51A000089A009C2C93A4000C8 -S31540011AC081C3E00801000000131000809212617882 -S31540011AD0D0224000C102400085A01900C53A40000D -S31540011AE081C3E008D01A4000131000809212617839 -S31540011AF0D0224000C102400085A01880C522400086 -S31540011B0081C3E008D0024000151000809412A178EC -S31540011B10D03A8000C11A800085A01A40C5228000B3 -S31540011B2081C3E008D0028000151000809412A1788C -S31540011B30D0228000C102800085A01A20C5228000E3 -S31540011B4081C3E008D0028000151000809412A1786C -S31540011B50D0228000C102800081A01920C13A8000B4 -S31540011B6081C3E008D01A8000151000809412A17834 -S31540011B70D03A8000C11A800081A018C0C1228000DD -S31540011B8081C3E008D0028000151000809412A1782C -S31540011B90D0228000CB0280008DA00025CD2280007E -S31540011BA081C3E008D0028000151000809412A1780C -S31540011BB0D0228000CB0280008DA000A5CD228000DE -S31540011BC081C3E008D0028000151000809412A178EC -S31540011BD0D0228000CB0280008DA00125CD2280003D -S31540011BE081C3E008D0028000191000809813217843 -S31540011BF0D03B0000D43B2008C11B0000C51B200878 -S31540011C0081A80A420100000033800009901020009B -S31540011C1029800007901020012D8000059010200298 -S31540011C202F8000039010200391D0200081C3E0084B -S31540011C30010000001910008098132178D03B000064 -S31540011C40D43B2008C11B0000C51B200881A80AC23D -S31540011C500100000033BFFFF69010200029BFFFF4BA -S31540011C60901020012DBFFFF2901020022FBFFFF0F0 -S31540011C709010200391D020001910008098132178EC -S31540011C80D0230000D2232008C1030000C30320084B -S31540011C9081A80A210100000033BFFFE59010200012 -S31540011CA029BFFFE3901020012DBFFFE190102002D4 -S31540011CB02FBFFFDF9010200391D020001910008024 -S31540011CC098132178D0230000D2232008C1030000B5 -S31540011CD0C303200881A80AA10100000033BFFFD435 -S31540011CE09010200029BFFFD2901020012DBFFFD0B8 -S31540011CF0901020022FBFFFCE9010200391D02000DC -S31540011D001910008098132178D03B0000D43B20085D -S31540011D10C11B0000C51B200889A008C2C93B0000A1 -S31540011D2081C3E008D01B0000191000809813217868 -S31540011D30D0230000D2232008C1030000C30320089A -S31540011D4085A00821C523000081C3E008D003000017 -S31540011D501910008098132178D0230000D22320083F -S31540011D60C1030000C303200885A008A1C5230000C4 -S31540011D7081C3E008D0030000191000809813217830 -S31540011D80D0230000D2232008C1030000C30320084A -S31540011D9085A00921C523000081C3E008D0030000C6 -S31540011DA01910008098132178D0230000D2232008EF -S31540011DB0C1030000C303200885A009A1C523000073 -S31540011DC081C3E008D00300001910008098132178E0 -S31540011DD0D0230000C103000083A00520C3230000D7 -S31540011DE081C3E008D0030000131000809212619075 -S31540011DF0C51A6008C11A400089A0084091A108C2CD -S31540011E0095A209C495A2894281C3E008D53A00004A -S31540011E1013100080921261B0C1024000C3026004F7 -S31540011E2085A0082087A088A189A0C9A289A10921E6 -S31540011E3081C3E008C92200009610200213100080D9 -S31540011E4092126190151000809412A190D502400023 -S31540011E50D7028000D5220000D8020000131000806E -S31540011E60921261B096A2E00112BFFFF90100000093 -S31540011E7081C3E008010000001310008092126190B6 -S31540011E80151000809412A1B0C1028000C51A6010DD -S31540011E9083A0082089A088C08BA109A18DA10942F0 -S31540011EA08FA1492691A0054681C3E008D13A000099 -S31540011EB01110008090122188C11A0000C51A000035 -S31540011EC0C91A0000CD1A0000D11A0000D51A000027 -S31540011ED0D91A0000DD1A0000E11A0000E51A0000D7 -S31540011EE0E91A0000ED1A0000F11A0000F51A000087 -S31540011EF0F91A0000FD1A000081C3E0080100000044 -S31540011F0029100080A815215827100080A614E1C089 -S31540011F10C12CC000E604C000A134E00EA00C20078D -S31540011F20A0A42002AE1020002D100080AC15A1C047 -S31540011F30AE05E001AC05A008C1358000C12D000009 -S31540011F40EA050000AB35600DAA8D600112BFFFF9AD -S31540011F5001000000808000100280002F2B3C1FFFF3 -S31540011F60AA1563FFA60CC015E6250000C10D0000A9 -S31540011F702B100080AA1561CC2D100047AC15A3E0AB -S31540011F80AE25E001E0054000E025800081D8200033 -S31540011F9001000000010000000100000001000000F6 -S31540011FA001000000010000000100000001000000E6 -S31540011FB001000000010000000100000001000000D6 -S31540011FC001000000010000000100000001000000C6 -S31540011FD001000000010000000100000001000000B6 -S31540011FE00000000080A5C00012BFFFE6AA056008F8 -S31540011FF0C12D0000E60500002B03C000A614C01544 -S31540012000E6250000C10D000081C4400081CC80005E -S315400120100100000081C4800081CCA00401000000C1 -S315400120200100000081C3E008915800000100000052 -S315400120301110008090122158C10A0000C0220000F0 -S31540012040C10A0000C12A0000D40200001300038027 -S31540012050942A800980A0000A3280004D9010200306 -S315400120601303E000D223BFA0C023BFA4C10BBFA06E -S31540012070C023BFA0151000809412A170C102800038 -S315400120800100000001000000C10BBFA0C10BBFA4AD -S3154001209083A00520C12BBFA0D003BFA0808A220008 -S315400120A02280003B901020049010200015100080E3 -S315400120B09412A140C5028000C902A008D102A00C19 -S315400120C01310008092126170C70240008DA08944AE -S315400120D081A98AC8010000000380000501000000B3 -S315400120E0901020011080002A01000000C5028000E6 -S315400120F0C902A008D102A00C13100080921261708F -S31540012100CB0240008DA0894481A98AC80100000004 -S315400121100380000501000000901020011080001C82 -S315400121200100000025100080A414A168C11C800094 -S31540012130C51C800080A000003280000685A008C032 -S3154001214081A80AC2010000001380000301000000BB -S31540012150901020050100000025100080A414A168FC -S31540012160C11C8000C51C800080A000000100000049 -S315400121703280000685A008C081A80AC2010000007D -S3154001218013800003010000009010200701000000A9 -S3154001219081C3E00801000000901020019544000031 -S315400121A09532A01E940AA00380A2800002800040BE -S315400121B09010200080A2A0030280003D13100080F1 -S315400121C0921261F0C11A4000C51A6008FD026018FA -S315400121D095A0003E99A0003E9DA0003E170000C07C -S315400121E09612E078A182C0000100000001000000C3 -S315400121F00100000001000000010000000100000094 -S3154001220081A0002083A0002195A0002A99A0002C3E -S315400122109DA0002E170000C09612E07CA182C0004E -S315400122200100000001000000010000000100000063 -S31540012230010000000100000085A0002287A00023C4 -S31540012240A180000001000000010000000100000023 -S3154001225001000000010000000100000089A00842C1 -S31540012260A9A2883ED93A4000DD224000CD1A60102D -S31540012270D102600881A90A46010000000380000CD2 -S3154001228081AD0A2801000000038000099344000043 -S315400122909332601B920A60079010200080A2A00131 -S315400122A002800003902260079022600481C3E00807 -S315400122B001000000C12BBFA081C3E008D003BFA02D -S315400122C0D023BFA081C3E008C10BBFA0010000001D -S315400122D09DE3BF6040001B17B0102000913A200AD1 -S315400122E0900A200380A220011280111101000000F2 -S315400122F07FFFBBBE9010200D190C40291B23CD1B1F -S315400123009410200096102000981320069A13609B83 -S31540012310D43FBFE0D43FBFC0D43FBFE87FFFFF42B9 -S31540012320D83FBFF0900A3000032804009012208065 -S315400123308210600FC22200001B1000479002200449 -S315400123409A1363009A234008191000009B3B6002D0 -S31540012350032784009A13400C82106010C222200485 -S315400123607FFFFED4DA2200007FFFFFD61103E00093 -S315400123702D100080C025A1C07FFFFDD49010200004 -S31540012380809200091280000601000000C205A1C02A -S3154001239080A0600002800004010000007FFFBB981E -S315400123A09010200B7FFFFDC990103FFA03300600C5 -S315400123B080A200011280000480A2600002800EDB30 -S315400123C0010000007FFFBB8E9010200B7FFFFDBFF9 -S315400123D09010201403100D0080A200011280000409 -S315400123E080A2600002800ECC010000007FFFBB840A -S315400123F09010200B7FFFFDB5901020620310162030 -S3154001240080A200011280000480A2600002800EBDFD -S31540012410010000007FFFBB7A9010200B7FFFFDB3C8 -S31540012420901020050310280080A2000112800006AA -S3154001243001000000C205A1C080A060000280000426 -S31540012440010000007FFFBB6E9010200B7FFFFF9DB8 -S315400124501103C000111C00007FFFFDAC921020004B -S31540012460031FFFFF821063FF80A200011280000A52 -S315400124701B000070C205A1C09A13601F190000100D -S315400124808208400D9813201080A0400C0280000560 -S31540012490113C00007FFFBB5A9010200C113C0000FC -S315400124A07FFFFD9A921020000320000080A20001C8 -S315400124B01280000A1B000070C205A1C09A13601F5A -S315400124C0190000108208400D9813201080A0400C7E -S315400124D002800004010000007FFFBB499010200CE0 -S315400124E0C025A1C0901020007FFFFD8892102000DA -S315400124F080A220001280000601000000C205A1C092 -S3154001250080A0600002800005110144007FFFBB3CB2 -S315400125109010200C11014400132840009012230210 -S315400125207FFFFD7A9212600180A220001280000690 -S3154001253001000000C205A1C080A060002280000504 -S315400125401111FFFF7FFFBB2E9010200C1111FFFFD1 -S315400125507FFFFD76901223FF0300007F821063FF09 -S3154001256080A200011280000601000000C205A1C040 -S3154001257080A06000028000052F1000857FFFBB20F0 -S315400125809010200C2F1000857FFFFD60D01DE0C804 -S31540012590031FFFFF821063FF80A200011280000A21 -S315400125A01B000070C205A1C09A13601F19000010DC -S315400125B08208400D9813201080A0400C028000052F -S315400125C0031000857FFFBB0E9010200C0310008581 -S315400125D0D01860D8C025A1C07FFFFD4C0100000086 -S315400125E00320000080A200011280000A1B00007037 -S315400125F0C205A1C09A13601F190000108208400D40 -S315400126009813201080A0400C028000051910008507 -S315400126107FFFBAFB9010200C19100085C025A1C080 -S315400126207FFFFD3AD01B20B8031FFFFF821063FFD7 -S3154001263080A200011280000A1B000070C205A1C0E1 -S315400126409A13601F190000108208400D981320103C -S3154001265080A0400C02800005331000857FFFBAE858 -S315400126609010200C33100085C025A1C07FFFFD27A7 -S31540012670D01E60F0C205A1C08330600E820860039F -S3154001268080A0600202800004211000807FFFBADC36 -S315400126909010200C7FFFFF0B1103C000111158044D -S315400126A0C02421C07FFFFD299012223403102B0044 -S315400126B08210624680A200011280000503200000BC -S315400126C080A2400102800FC5010000007FFFBACC05 -S315400126D09010200D113C02AF7FFFFD1C901220D1BE -S315400126E0033180558210639A80A200011280000551 -S315400126F00308000080A2400102800FDB01000000B8 -S315400127007FFFBABF9010200D1111FC007FFFFD170E -S3154001271092102000031FE00080A200011280000AEF -S315400127201B000070C205A1C09A13601F190000105A -S315400127308208400D9813200880A0400C02800005B5 -S3154001274011207C017FFFBAAE9010200D11207C0133 -S31540012750C025A1C0901220307FFFFD041300010067 -S315400127600320000080A200011280000A1B000070B5 -S31540012770C205A1C09A13601F190000108208400DBE -S315400127809813200480A0400C028000040100000040 -S315400127907FFFBA9B9010200DC025A1C0901020004C -S315400127A07FFFFCF29210200080A2200012800006DA -S315400127B001000000C205A1C080A0600002800004A3 -S315400127C0010000007FFFBA8E9010200D7FFFFCE7CD -S315400127D0D01DE0C803100085DA0060C080A2000D5C -S315400127E01280000601000000C205A1C080A0600061 -S315400127F0028000051B1000857FFFBA819010200DD5 -S315400128001B1000857FFFFCD9D01B60D0031FE00061 -S3154001281080A200011280000601000000C205A1C08D -S3154001282080A0600002800005031000857FFFBA7416 -S315400128309010200D031000857FFFFCCCD01860B8A6 -S3154001284003100085DA0060A880A2000D1280000AFC -S315400128501B000070C205A1C09A13601F1900001029 -S315400128608208400D9813201080A0400C028000047D -S31540012870010000007FFFBA629010200DC025A1C063 -S315400128807FFFFCBAD01E60F0C205A1C08330600E46 -S315400128908208600380A06002028000042310008049 -S315400128A07FFFBA579010200D7FFFFE861103E0008F -S315400128B02108C6AF901420DEC02461C07FFFFCB35F -S315400128C0A01420DE80A20010128000060100000044 -S315400128D0C20461C080A06000028000052108C6AF25 -S315400128E07FFFBA479010200E2108C6AF7FFFFCB785 -S315400128F0901420DEA01420DE80A200101280000673 -S3154001290001000000C205A1C080A060002280000530 -S315400129101128C6AF7FFFBA3A9010200E1128C6AFD4 -S315400129207FFFFCAA901220DE0308C6AF821060DE4C -S3154001293080A200011280000601000000C205A1C06C -S3154001294080A06000228000051108C6AF7FFFBA2C27 -S315400129509010200E1108C6AF7FFFFC94901220DE26 -S315400129600328C6AF821060DE80A2000112800006F5 -S3154001297001000000C205A1C080A0600022800005C0 -S315400129801128C6AF7FFFBA1E9010200E1128C6AF80 -S315400129907FFFFC86901220DE0308C6AF821060DE00 -S315400129A080A200011280000601000000C205A1C0FC -S315400129B080A0600002800004010000007FFFBA1081 -S315400129C09010200E7FFFFE3F1103E00011151BC042 -S315400129D01310C82115351BC01710C82190122103A9 -S315400129E0921261419412A1037FFFFC809612E1414C -S315400129F080A220021280000601000000C205A1C08B -S31540012A0080A060000280000511351BC07FFFB9FC24 -S31540012A109010200F11351BC01310C82115151BC06E -S31540012A201710C82190122103921261419412A103F9 -S31540012A307FFFFC6E9612E14180A2200112800006C2 -S31540012A4001000000C205A1C080A06000028000050F -S31540012A50901020007FFFB9EA9010200F90102000BF -S31540012A6092102000152000007FFFFC609610200088 -S31540012A7080A220001280000601000000C205A1C00C -S31540012A8080A0600002800005191000857FFFB9DC37 -S31540012A909010200F191000851B100085D01B20D0E7 -S31540012AA07FFFFC52D41B60D880A220021280000610 -S31540012AB001000000C205A1C080A06000028000059F -S31540012AC011151BC07FFFB9CE9010200F11151BC0E9 -S31540012AD01310C82115151BE81710C82190122103A0 -S31540012AE0921261419412A1037FFFFC409612E1418B -S31540012AF080A220011280000601000000C205A1C08B -S31540012B0080A060000280000511151BE87FFFB9BC5B -S31540012B109010200F11151BE81310C82115151BC065 -S31540012B201710C82190122103921261419412A103F8 -S31540012B307FFFFC2E9612E14180A220021280000600 -S31540012B4001000000C205A1C080A06000028000050E -S31540012B5011151BE87FFFB9AA9010200F11151BE82C -S31540012B601310C82190122103921261417FFFFC1F6D -S31540012B70D41DE0C880A22003128000060100000097 -S31540012B80C205A1C080A06000028000050310008537 -S31540012B907FFFB99B9010200F0310008511151BE88C -S31540012BA01310C82190122103921261417FFFFC0F3D -S31540012BB0D41860B880A220031280000A1B0000705E -S31540012BC0C205A1C09A13601F190000108208400D6A -S31540012BD09813201080A0400C0280000511151BE8B7 -S31540012BE07FFFB9879010200F11151BE81310C821DC -S31540012BF0C025A1C090122103921261417FFFFBFBC8 -S31540012C00D41E60F080A2200212800006010000005E -S31540012C10C205A1C080A060000280000515151BE811 -S31540012C207FFFB9779010200F15151BE81710C821A3 -S31540012C30D01E60F09412A1037FFFFBEC9612E14196 -S31540012C4080A220011280000601000000C205A1C039 -S31540012C5080A060000280000515151BE87FFFB9685A -S31540012C609010200F15151BE81710C821D01DE0C87C -S31540012C709412A1037FFFFBDD9612E14180A220035E -S31540012C801280000601000000C205A1C080A06000BC -S31540012C9002800005191000857FFFB9599010200F59 -S31540012CA01910008515151BE81710C821D01B20B82F -S31540012CB09412A1037FFFFBCD9612E14180A220032E -S31540012CC01280000A1B000070C205A1C09A13601F42 -S31540012CD0190000108208400D9813201080A0400C66 -S31540012CE00280000511151BC07FFFB9459010200FCA -S31540012CF011151BC01310C82115351BC01710C8214B -S31540012D00C025A1C090122103921261419412A103E0 -S31540012D107FFFFBC99612E14180A220021280000684 -S31540012D2001000000C205A1C080A06000028000052C -S31540012D3011351BC07FFFB9329010200F11351BC0D2 -S31540012D401310C82115151BC01710C8219012210355 -S31540012D50921261419412A1037FFFFBB79612E141A2 -S31540012D6080A220011280000601000000C205A1C018 -S31540012D7080A0600002800005901020007FFFB920EE -S31540012D809010200F90102000921020001520000076 -S31540012D907FFFFBA99610200080A22000128000062A -S31540012DA001000000C205A1C080A0600002800005AC -S31540012DB01B1000857FFFB9129010200F1B10008554 -S31540012DC003100085D01B60D07FFFFB9BD41860D8D1 -S31540012DD080A220021280000601000000C205A1C0A7 -S31540012DE080A060000280000511151BC07FFFB90459 -S31540012DF09010200F11151BC01310C82115151BE883 -S31540012E001710C82190122103921261419412A10315 -S31540012E107FFFFB899612E14180A2200112800006C4 -S31540012E2001000000C205A1C080A06000028000052B -S31540012E3011151BE87FFFB8F29010200F11151BE802 -S31540012E401310C82115151BC01710C8219012210354 -S31540012E50921261419412A1037FFFFB779612E141E1 -S31540012E6080A220021280000601000000C205A1C016 -S31540012E7080A060000280000511151BE87FFFB8E0C5 -S31540012E809010200F11151BE81310C8219012210331 -S31540012E90921261417FFFFB68D41DE0C880A22003E6 -S31540012EA01280000A1B000070C205A1C09A13601F60 -S31540012EB0190000108208400D9813201080A0400C84 -S31540012EC002800005191000857FFFB8CD9010200FB4 -S31540012ED01910008511151BE81310C8219012210302 -S31540012EE0921261417FFFFB54D41B20B880A220037C -S31540012EF01280000A1B000070C205A1C09A13601F10 -S31540012F00190000108208400D9813201080A0400C33 -S31540012F100280000511151BE87FFFB8B99010200FFC -S31540012F2011151BE81310C821C025A1C09012210319 -S31540012F30921261417FFFFB40D41E60F080A22002C5 -S31540012F401280000601000000C205A1C080A06000F9 -S31540012F500280000515151BE87FFFB8A99010200FC8 -S31540012F6015151BE81710C821D01E60F09412A10355 -S31540012F707FFFFB319612E14180A2200112800006BB -S31540012F8001000000C205A1C080A0600002800005CA -S31540012F9015151BE87FFFB89A9010200F15151BE8F1 -S31540012FA01710C821D01DE0C89412A1037FFFFB2250 -S31540012FB09612E14180A220031280000A1B00007094 -S31540012FC0C205A1C09A13601F190000108208400D66 -S31540012FD09813201080A0400C028000051B1000852C -S31540012FE07FFFB8879010200F1B10008515151BE831 -S31540012FF01710C821D01B60B89412A1037FFFFB0EA6 -S315400130009612E14180A220031280000A1B00007043 -S31540013010C205A1C09A13601F190000108208400D15 -S315400130209813201080A0400C02800005110048EA48 -S315400130307FFFB8739010200F110048EA13048D15D5 -S31540013040C025A1C0901223CD7FFFFB0C921262785E -S3154001305080A220011280000601000000C205A1C025 -S3154001306080A0600002800005110048EA7FFFB86435 -S315400130709010200F110048EA13048D15901223CDAC -S315400130807FFFFB0F9212627880A220011280000618 -S3154001309001000000C205A1C080A0600002800004BA -S315400130A0010000007FFFB8569010200FC025A1C037 -S315400130B07FFFFC841103C000291001449007BFF033 -S315400130C09207BFE87FFFFA3894152120C207BFF067 -S315400130D0DA05212080A0400D1280000782152120AB -S315400130E0DA006004C207BFF480A0400D02800D598A -S315400130F0010000007FFFB842901020103710008574 -S315400131009007BFF09216E0E07FFFFA279415212041 -S31540013110C206E0E0DA05212080A340018215212084 -S31540013120128000079816E0E0DA006004C20320042A -S3154001313080A3400102800D42010000007FFFB830AC -S31540013140901020109007BFF09215E0C87FFFFA1645 -S3154001315094152120C205E0C8DA05212080A340014B -S3154001316082152120128000079815E0C8DA00600414 -S31540013170C203200480A3400102800D2C01000000FF -S315400131807FFFB81F9010201003100085921060B881 -S315400131909007BFF07FFFFA04941521201B000070B1 -S315400131A0C205A1C09A13601F190000108208400D84 -S315400131B09813201080A0400C028000042110014485 -S315400131C07FFFB80F9010201003100080C02061C00F -S315400131D07FFFFC3C901020001310008594142120A1 -S315400131E0921260B87FFFF9F09007BFF03910008561 -S315400131F0C20720B0DA04212080A340019414212083 -S3154001320012800007821720B0DA02A004C2006004CF -S3154001321080A3400102800004010000007FFFB7F84F -S31540013220901020107FFFFC271103C0009007BFF0CC -S31540013230921660F07FFFF9DC94152120C205A1C0EA -S315400132408330600E8208600380A060022110014431 -S3154001325002800004231000807FFFB7E99010201000 -S3154001326094142120C02461C09007BFE87FFFF9CEA6 -S315400132709207BFF0DA042120C207BFF080A34001C4 -S315400132801280000794142120DA02A004C207BFF479 -S3154001329080A3400102800D21010000007FFFB7D8C5 -S315400132A0901020109007BFE89216E0E07FFFF9BE2C -S315400132B094152120C206E0E0DA05212080A34001D1 -S315400132C082152120128000079816E0E0DA0060049A -S315400132D0C203200480A3400102800D0B01000000BF -S315400132E07FFFB7C7901020109007BFE89215E0C83E -S315400132F07FFFF9AD94152120C205E0C8DA052120EA -S3154001330080A3400182152120128000079815E0C84C -S31540013310DA006004C203200480A3400102800CF558 -S31540013320010000007FFFB7B69010201019100085EC -S31540013330921320B89007BFE87FFFF99B941521208F -S315400133401B000070C205A1C09A13601F190000102E -S315400133508208400D9813201080A0400C0280000482 -S31540013360211001447FFFB7A6901020107FFFFBD5A7 -S31540013370901020001310008594142120921260B8F9 -S315400133807FFFF9899007BFE8C20720B0DA04212000 -S3154001339080A340019414212012800007821720B097 -S315400133A0DA02A004C200600480A340010280000446 -S315400133B0010000007FFFB792901020107FFFFBC1F4 -S315400133C01103C0009007BFE8921660F07FFFF976BF -S315400133D094152120C205A1C08330600E8208600386 -S315400133E080A0600221100144028000042310008065 -S315400133F07FFFB7839010201094142120C02461C010 -S315400134009016E0E07FFFF9689207BFF0C206E0E060 -S31540013410DA04212080A34001941421201280000760 -S315400134208216E0E0DA02A004C200600480A34001F3 -S3154001343002800CAB010000007FFFB7719010201095 -S315400134409016E0E09207BFE87FFFF95794152120D7 -S31540013450C206E0E0DA05212080A340018215212041 -S31540013460128000079816E0E0DA006004C2032004E7 -S3154001347080A3400102800C95010000007FFFB760E8 -S31540013480901020101B100085901360D092100008F8 -S315400134907FFFF9459415212019100085C20320D0DC -S315400134A0DA05212080A340018215212012800007E0 -S315400134B0981320D0DA006004C203200480A340019F -S315400134C002800C7D010000007FFFB74D9010201057 -S315400134D01B100085901360D8921000087FFFF932C7 -S315400134E09415212019100085C20320D8DA05212020 -S315400134F080A340018215212012800007981320D80D -S31540013500DA006004C203200480A3400102800C65F6 -S31540013510010000007FFFB73A901020101B10008574 -S3154001352003100085901360D8921060D07FFFF91E7A -S31540013530941521201B000070C205A1C09A13601F7B -S31540013540190000108208400D9813201080A0400CED -S3154001355002800004211001447FFFB72990102010FA -S315400135607FFFFB5890102000111000851310008535 -S3154001357094142120901220D87FFFF90B921260D02B -S31540013580C20720B0DA04212080A3400194142120EF -S3154001359012800007821720B0DA02A004C20060043C -S315400135A080A3400102800004010000007FFFB714A0 -S315400135B0901020107FFFFB431103C00019100085B6 -S315400135C01B100085901320D0921360D8C025A1C04E -S315400135D07FFFF8F594152120C20720B0DA05212096 -S315400135E080A340018215212012800007981720B040 -S315400135F0DA006004C203200480A3400102800C1F4C -S315400136001B0000707FFFB6FE901020109016E0E080 -S31540013610921660F07FFFF8E494152120C205A1C0FF -S315400136208330600E8208600380A06002211001444D -S3154001363002800004231000807FFFB6F19010201015 -S3154001364094142120C02461C09015E0C87FFFF8D6AC -S315400136509207BFF0C205E0C8DA04212080A34001E9 -S3154001366094142120128000078215E0C8DA02A004D2 -S31540013670C200600480A3400102800B9C010000004F -S315400136807FFFB6DF901020109015E0C89207BFE883 -S315400136907FFFF8C594152120C205E0C8DA0521202F -S315400136A080A3400182152120128000079815E0C8A9 -S315400136B0DA006004C203200480A3400102800B8625 -S315400136C0010000007FFFB6CE901020109015E0C893 -S315400136D09216E0E07FFFF8B494152120C205E0C8B8 -S315400136E0DA05212080A3400182152120128000079E -S315400136F09815E0C8DA006004C203200480A34001A3 -S3154001370002800B70010000007FFFB6BD90102010B3 -S315400137109015E0C8921000087FFFF8A39415212068 -S31540013720C205E0C8DA05212080A340018215212087 -S31540013730128000079815E0C8DA006004C20320042D -S3154001374080A3400102800B5A010000007FFFB6AC06 -S315400137509010201003100085921060B89015E0C8B3 -S315400137607FFFF8919415212003000070A610601F79 -S31540013770DA05A1C0030000109A0B4013AA1060108D -S3154001378080A34015231000852510014402800004C2 -S31540013790211000807FFFB69A90102010C02421C0CE -S315400137A0901460B89207BFF07FFFF87F9414A12070 -S315400137B0C20421C08208401380A040150280000443 -S315400137C0010000007FFFB68E90102010C02421C05A -S315400137D0901460B89207BFE87FFFF8739414A12054 -S315400137E0C20421C08208401380A040150280000413 -S315400137F0010000007FFFB68290102010C02421C036 -S31540013800901460B89216E0E07FFFF8679414A12007 -S31540013810C20421C08208401380A0401502800005E1 -S31540013820131000857FFFB676901020101310008587 -S31540013830C02421C0921260C8901460B87FFFF85A24 -S315400138409414A120C20421C08208401380A04015CF -S3154001385002800005901460B87FFFB6699010201071 -S31540013860901460B8C02421C0921000087FFFF84E22 -S315400138709414A120C20421C08208401380A040159F -S3154001388002800004010000007FFFB65D9010201009 -S31540013890C02421C0901460B8921660F07FFFF842B0 -S315400138A09414A120C20421C08330600E82086003B3 -S315400138B080A06002228000051103C0007FFFB65040 -S315400138C0901020101103C0007FFFFA7E3B10008448 -S315400138D0A2176210C02421C0AA14A120A40460101A -S315400138E0A0102000A6046008B010200C920400131A -S315400138F0900400117FFFF82C94152120DA048010E2 -S3154001390098040012C2052120A004201880A340017A -S315400139101280000790102010DA032004C2056004CB -S3154001392080A3400122800005B0863FFF7FFFB63469 -S3154001393001000000B0863FFF1CBFFFEE920400135A -S31540013940C205A1C080A06000128009890100000063 -S315400139501110008490122348920220087FFFF8122A -S315400139609415212098176210C2052120DA032148B7 -S3154001397080A340011280000782152120DA03214CE1 -S31540013980C200600480A3400122800AAB031000807C -S315400139907FFFB61B901020101110008490122360F7 -S315400139A0920220087FFFF800941521209817621093 -S315400139B0C2052120DA03216080A34001128000075D -S315400139C082152120DA032164C200600480A34001EC -S315400139D002800AA41B0000707FFFB60990102010D8 -S315400139E01110008490122378920220087FFFF7EE8F -S315400139F09415212098176210C2052120DA032178F7 -S31540013A0080A340011280000782152120DA03217C20 -S31540013A10C200600480A3400102800A9C1B00007022 -S31540013A207FFFB5F790102010C025A1C011100000EE -S31540013A3092102000150FFC007FFFF8B2961020006F -S31540013A40030FFC0080A200011280000880A26000E2 -S31540013A501280000601000000C205A1C080A06000DE -S31540013A6002800005111000007FFFB5E5901020107F -S31540013A701110000092102000152FFC007FFFF8A1C5 -S31540013A80961020000310020080A200011280000857 -S31540013A9080A260001280000601000000C205A1C09C -S31540013AA080A0600002800005113000007FFFB5D480 -S31540013AB0901020101130000092102000150FFC00CC -S31540013AC07FFFF890961020000330020080A200018B -S31540013AD01280000880A260001280000601000000EA -S31540013AE0C205A1C080A0600002800005113000001F -S31540013AF07FFFB5C3901020101130000092102000B6 -S31540013B00152FFC007FFFF87F96102000032FFC0045 -S31540013B1080A200011280000880A260001280000687 -S31540013B2001000000C205A1C080A06000028000051E -S31540013B30111000007FFFB5B2901020101110000047 -S31540013B407FFFF87A130FE0000310100080A20001F6 -S31540013B501280000601000000C205A1C080A06000DD -S31540013B6002800005111000007FFFB5A590102010BE -S31540013B70111000007FFFF877130FE000030FE000FC -S31540013B8080A200011280000601000000C205A1C00A -S31540013B9080A0600022800005191000857FFFB5983E -S31540013BA09010201019100085921320E8C025A1C05D -S31540013BB09007BFF07FFFF78F9415212019100085DC -S31540013BC0C20320D8DA05212080A340018215212095 -S31540013BD012800007981320D8DA006004C20320043B -S31540013BE080A3400102800A461B0000707FFFB58416 -S31540013BF0901020111B100085921360D0C025A1C0E2 -S31540013C009007BFF07FFFF77B94152120C207BFE0E5 -S31540013C10DA05212080A34001128000078215212068 -S31540013C20DA006004C207BFE480A3400102800A3E75 -S31540013C30010000007FFFB572901020119007BFF080 -S31540013C409215E0C87FFFF76B94152120C205E0C8A5 -S31540013C50DA05212080A34001821521201280000728 -S31540013C609815E0C8DA006004C203200480A340012D -S31540013C7002800A32010000007FFFB56190102011D9 -S31540013C8003100085921060B89007BFF07FFFF75987 -S31540013C9094152120C20720B0DA05212080A34001D6 -S31540013CA08215212012800007981720B0DA0060049F -S31540013CB0C203200480A3400102800A251B00007034 -S31540013CC07FFFB54F901020119007BFF0921660F01C -S31540013CD07FFFF74894152120C205A1C01B00007043 -S31540013CE08208400D1900002080A0400C211001449B -S31540013CF002800004231000807FFFB54190102011FF -S31540013D0094142120C02461C09007BFE87FFFF73992 -S31540013D109207BFF0DA042120C207BFE880A3400121 -S31540013D201280000794142120DA02A004C207BFECD6 -S31540013D3080A3400102800A10010000007FFFB530D8 -S31540013D409010201119100085901320E89207BFE0CA -S31540013D507FFFF72894152120C20720B0DA052120DC -S31540013D6080A340018215212012800007981720B0B8 -S31540013D70DA006004C203200480A3400102800A03E2 -S31540013D801B0000707FFFB51E901020111B1000858F -S31540013D9003100085901360E8921060D0C025A1C041 -S31540013DA07FFFF7149415212019100085C20320E8DE -S31540013DB0DA05212080A340018215212012800007C7 -S31540013DC0981320E8DA006004C203200480A340016E -S31540013DD0028009F8010000007FFFB509901020110B -S31540013DE09007BFE89215E0C87FFFF702941521209E -S31540013DF0C205E0C8DA05212080A3400182152120B1 -S31540013E00128000079815E0C8DA006004C203200456 -S31540013E1080A34001028009EC010000007FFFB4F855 -S31540013E20901020071B100085921360B89007BFE8D9 -S31540013E307FFFF6F09415212025000070D805A1C01A -S31540013E409A14A01F03000010980B000D82106010F9 -S31540013E5080A3000121100144028000042310008048 -S31540013E607FFFB4E790102011C02461C09007BFE8DE -S31540013E70921660F07FFFF6DF94142120C20461C0E0 -S31540013E80820840121B00002080A0400D22800005C0 -S31540013E90031000857FFFB4DA9010201103100085CE -S31540013EA0901060D894142120C02461C07FFFF6D1C0 -S31540013EB09207BFF019100085C20320D8DA042120E9 -S31540013EC080A340019414212012800007821320D838 -S31540013ED0DA02A004C200600480A34001028008B84F -S31540013EE0010000007FFFB4C6901020111B10008511 -S31540013EF003100085901360D8921060E87FFFF6BDED -S31540013F009415212019100085C20320D0DA052120FD -S31540013F1080A340018215212012800007981320D0EA -S31540013F20DA006004C203200480A34001028008A98C -S31540013F30010000007FFFB4B2901020119016E0E01E -S31540013F40921000087FFFF6AB94152120C20720B0DE -S31540013F50DA05212080A34001821521201280000725 -S31540013F60981720B0DA006004C203200480A3400100 -S31540013F700280089D1B0000707FFFB4A190102011A4 -S31540013F80C025A1C09016E0E09215E0C87FFFF699E2 -S31540013F9094152120C205E0C8DA05212080A34001FD -S31540013FA082152120128000079815E0C8DA006004C6 -S31540013FB0C203200480A3400102800894010000004E -S31540013FC07FFFB48F901020111B100085921360B8AB -S31540013FD09016E0E07FFFF68794152120C20720B0B6 -S31540013FE0DA05212080A34001821521201280000795 -S31540013FF0981720B0DA006004C203200480A3400170 -S31540014000028008871B0000707FFFB47D901020114D -S31540014010C025A1C09016E0E0921660F07FFFF675CC -S3154001402094152120C205A1C01B0000708208400DD5 -S315400140301900002080A0400C23100080028000045B -S31540014040211001447FFFB46E901020119414212059 -S31540014050C02461C09015E0C87FFFF6669207BFF0A5 -S31540014060C205E0C8DA04212080A34001941421202E -S31540014070128000078215E0C8DA02A004C20060047B -S3154001408080A340010280086F010000007FFFB45CFD -S31540014090901020119015E0C89207BFE87FFFF655B2 -S315400140A094152120C205E0C8DA05212080A34001EC -S315400140B082152120128000079815E0C8DA006004B5 -S315400140C0C203200480A3400102800863010000006E -S315400140D07FFFB44B901020119015E0C89216E0E096 -S315400140E07FFFF64494152120C205E0C8DA05212058 -S315400140F080A3400182152120128000079815E0C84F -S31540014100DA006004C203200480A3400102800857FC -S31540014110010000007FFFB43A901020119015E0C8CD -S31540014120921000087FFFF63394152120C205E0C89E -S31540014130DA05212080A34001821521201280000743 -S315400141409815E0C8DA006004C203200480A3400148 -S31540014150028007F3010000007FFFB429901020116F -S3154001416003100085921060B89015E0C87FFFF621D4 -S3154001417094152120C20720B0DA05212080A34001F1 -S315400141808215212012800007981720B0DA006004BA -S31540014190C203200480A34001028007E61B00007091 -S315400141A07FFFB417901020119015E0C8921660F069 -S315400141B07FFFF61094152120C205A1C03100007081 -S315400141C0820840183B00002080A0401D2310014476 -S315400141D002800004211000807FFFB4099010201155 -S315400141E019100085901320B89207BFF07FFFF601A2 -S315400141F094146120C20421C0AA16201F3500001064 -S3154001420082084015A616A01080A040130280000423 -S31540014210251000857FFFB3FA90102011C02421C0DC -S315400142209014A0B89207BFE87FFFF5F2941461207D -S31540014230C20421C08208401580A0401302800004B8 -S31540014240010000007FFFB3EE90102011C02421C071 -S315400142509014A0B89216E0E07FFFF5E69414612031 -S31540014260C20421C08208401580A040130280000587 -S31540014270131000857FFFB3E29010201113100085C3 -S31540014280C02421C0921260C89014A0B87FFFF5D90E -S3154001429094146120C20421C08208401580A04013B5 -S315400142A0028000059014A0B87FFFB3D5901020116D -S315400142B09014A0B8C02421C0921000087FFFF5CD0C -S315400142C094146120C20421C08208401580A0401385 -S315400142D002800005131000857FFFB3C9901020119D -S315400142E013100085C02421C09014A0B8921260F02A -S315400142F07FFFF5C094146120C20421C08208401892 -S3154001430080A0401D2280000515203E837FFFB3BC5F -S315400143109010201115203E83170021C89412A3FF47 -S315400143209612E3A1191FC0001B00C0009A1360B08A -S3154001433098132102D43FBFD0D83FBFD8C02421C053 -S315400143409007BFD89207BFD07FFFF5AA9407BFC891 -S31540014350DA07BFC8033FFC0080A340010280070B78 -S31540014360A207BFC87FFFB3A6901020111510868300 -S31540014370170021C89412A3FF9612E3A11900400029 -S315400143801B00C0009A1360B098132102D43FBFD0DE -S31540014390D83FBFD8C025A1C09007BFD89207BFD08C -S315400143A07FFFF5949407BFC8DA046004C207BFC80B -S315400143B08090400D1280000A1B000070C205A1C00A -S315400143C09A13601F190000108208400D98132004AB -S315400143D080A0400C22800005150FFC007FFFB388AA -S315400143E090102011150FFC00170281D89412A0409D -S315400143F09612E10C9A102010190006AFD43FBFD097 -S31540014400D83FBFD8C025A1C09007BFD89207BFD01B -S315400144107FFFF5789407BFC8030006AEDA07BFC829 -S315400144208210639580A340011280000703003A9AE7 -S31540014430DA0460048210630F80A3400102800733CF -S31540014440010000007FFFB36E90102011150FFFFF92 -S31540014450170281D89412A3409612E10C9A102010AB -S31540014460190006AFD43FBFD0D83FBFD8C025A1C0A1 -S315400144709007BFD89207BFD07FFFF55E9407BFC8AC -S31540014480DA046004C207BFC88090400D1280000A5A -S315400144901B000070C205A1C09A13601F19000010CD -S315400144A08208400D9813200480A0400C028000042D -S315400144B0010000007FFFB35290102011C025A1C01A -S315400144C0111088007FFFF63713100100031066C9EB -S315400144D0821062CA80A2000112800006010000001B -S315400144E0C205A1C080A06000028000051111BBFE7B -S315400144F07FFFB343901020111111BBFE901223FF91 -S315400145007FFFF628130C7040031527CA8210611EDF -S3154001451080A200011280000601000000C205A1C070 -S3154001452080A06000028000051310C7FF7FFFB334EF -S31540014530901020111310C7FF921263FC7FFFF619EA -S31540014540111E607E031D73FC8210633880A2000138 -S315400145501280000601000000C205A1C080A06000D3 -S3154001456002800005130FE0007FFFB3259010201154 -S31540014570130FE000921260017FFFF60A110020003E -S3154001458080A220001280000A1B000070C205A1C053 -S315400145909A13601F190000108208400D98132004D9 -S315400145A080A0400C02800005110FE0007FFFB3148C -S315400145B090102011110FE000C025A1C07FFFF5F931 -S315400145C092100008030FE00080A20001128000064D -S315400145D001000000C205A1C080A060000280000564 -S315400145E0130FE0007FFFB30690102011130FE00078 -S315400145F0921260017FFFF5EB1100200080A220009E -S315400146001280000A1B000070C205A1C09A13601FE8 -S31540014610190000108208400D9813200480A0400C18 -S31540014620028000051B1000857FFFB2F59010201116 -S315400146301B100085921360E8C025A1C09007BFF00A -S315400146407FFFF4DE9415212019100085C20320E86E -S31540014650DA05212080A3400182152120128000071E -S31540014660981320E8DA006004C203200480A34001C5 -S31540014670028006BA010000007FFFB2E190102012CD -S315400146801B100085921360D09007BFF07FFFF4CBDB -S315400146909415212019100085C20320D0DA05212066 -S315400146A080A340018215212012800007981320D053 -S315400146B0DA006004C203200480A34001028006ACF4 -S315400146C0010000007FFFB2CE901020129007BFF08C -S315400146D09215E0C87FFFF4B994152120C205E0C8C0 -S315400146E0DA05212080A3400182152120128000078E -S315400146F09815E0C8DA006004C203200480A3400193 -S31540014700028006A0010000007FFFB2BD901020127A -S315400147101B100085921360B89007BFF07FFFF4A786 -S3154001472094152120C20720B0DA05212080A340013B -S315400147308215212012800007981720B0DA00600404 -S31540014740C203200480A34001028006931B0000702F -S315400147507FFFB2AB901020129007BFF0921660F027 -S315400147607FFFF49694152120C205A1C01B0000705D -S315400147708208400D1900002080A0400C2110014400 -S3154001478002800004231000807FFFB29D901020120A -S3154001479094142120C02461C09007BFE87FFFF487AD -S315400147A09207BFF0DA042120C207BFE880A3400187 -S315400147B01280000794142120DA02A004C207BFEC3C -S315400147C080A34001028006DE010000007FFFB28C1B -S315400147D0901020120310008519100085901060E892 -S315400147E0921320D87FFFF47594152120C20720B07B -S315400147F0DA05212080A3400182152120128000077D -S31540014800981720B0DA006004C203200480A3400157 -S31540014810028006D01B0000707FFFB27990102012F3 -S31540014820C025A1C09007BFE89215E0C87FFFF46399 -S3154001483094152120C205E0C8DA05212080A3400154 -S3154001484082152120128000079815E0C8DA0060041D -S31540014850C203200480A34001028006C70100000074 -S315400148607FFFB267901024991B100085921360B8A0 -S315400148709007BFE87FFFF45194152120C20720B06D -S31540014880DA05212080A340018215212012800007EC -S31540014890981720B0DA006004C203200480A34001C7 -S315400148A0028006BA1B0000707FFFB255901020129D -S315400148B09007BFE8921660F07FFFF44094152120DF -S315400148C0C205A1C01B0000708208400D19000020DE -S315400148D080A0400C21100144028000042310008076 -S315400148E07FFFB2479010201294142120C02461C04A -S315400148F09016E0E07FFFF4319207BFF0C206E0E098 -S31540014900DA04212080A3400194142120128000075B -S315400149108216E0E0DA02A004C200600480A34001EE -S31540014920028006A4010000007FFFB23590102012DC -S315400149309016E0E09207BFE87FFFF420941521200E -S31540014940C20720B0DA05212080A34001821521202B -S3154001495012800007981720B0DA006004C2032004D1 -S3154001496080A34001028006981B0000707FFFB2249D -S3154001497090102012C025A1C09016E0E09215E0C823 -S315400149807FFFF40E94152120C205E0C8DA052120E7 -S3154001499080A3400182152120128000079815E0C8A6 -S315400149A0DA006004C203200480A340010280068F1E -S315400149B0010000007FFFB212901020120310008503 -S315400149C0921060B89016E0E07FFFF3FC9415212029 -S315400149D0C20720B0DA05212080A34001821521209B -S315400149E012800007981720B0DA006004C203200441 -S315400149F080A34001028006821B0000707FFFB20047 -S31540014A00901020129016E0E0921660F07FFFF3EBD3 -S31540014A1094152120C205A1C01B0000708208400DDB -S31540014A201900002080A0400C21100144028000049E -S31540014A30231000807FFFB1F29010201294142120A0 -S31540014A40C02461C09015E0C87FFFF3DC9207BFF038 -S31540014A50C205E0C8DA04212080A340019414212034 -S31540014A60128000078215E0C8DA02A004C200600481 -S31540014A7080A340010280061E010000007FFFB1E0D5 -S31540014A80901020129015E0C89207BFE87FFFF3CB44 -S31540014A9094152120C205E0C8DA05212080A34001F2 -S31540014AA082152120128000079815E0C8DA006004BB -S31540014AB0C203200480A340010280061201000000C7 -S31540014AC07FFFB1CF901020129015E0C89216E0E01A -S31540014AD07FFFF3BA94152120C205E0C8DA052120EB -S31540014AE080A3400182152120128000079815E0C855 -S31540014AF0DA006004C203200480A340010280060656 -S31540014B00010000007FFFB1BE901020129015E0C851 -S31540014B10921000087FFFF3A994152120C205E0C831 -S31540014B20DA05212080A34001821521201280000749 -S31540014B309815E0C8DA006004C203200480A340014E -S31540014B40028005FA010000007FFFB1AD90102012EE -S31540014B50191000859015E0C8921320B87FFFF3978E -S31540014B609415212003000070A610601FDA05A1C02C -S31540014B70030000109A0B4013AA10601080A3401541 -S31540014B802510008523100144028000042110008075 -S31540014B907FFFB19B90102012C02421C09014A0B871 -S31540014BA09207BFF07FFFF38594146120C20421C0B0 -S31540014BB08208401380A040150280000401000000D5 -S31540014BC07FFFB18F90102012C02421C09014A0B84D -S31540014BD09207BFE87FFFF37994146120C20421C094 -S31540014BE08208401380A040150280000401000000A5 -S31540014BF07FFFB18390102012C02421C09014A0B829 -S31540014C009216E0E07FFFF36D94146120C20421C047 -S31540014C108208401380A040150280000513100085CC -S31540014C207FFFB1779010201213100085C02421C058 -S31540014C30921260C89014A0B87FFFF360941461206B -S31540014C40C20421C08208401380A04015028000059D -S31540014C509014A0B87FFFB16A901020129014A0B8AA -S31540014C60C02421C0921000087FFFF35494146120A0 -S31540014C70C20421C08208401380A04015028000046E -S31540014C80010000007FFFB15E90102012C02421C0B8 -S31540014C909014A0B8921660F07FFFF34894146120F7 -S31540014CA0C20421C08330600E8208600380A0600286 -S31540014CB0228000051103C0007FFFB15190102012E0 -S31540014CC01103C0007FFFF57F3B100084A41763905A -S31540014CD0AA146120C02421C0A604A008A210200065 -S31540014CE0B0102005A00440129204401394152120CF -S31540014CF07FFFF33290100010DA042010C205212004 -S31540014D00A204601880A3400112800007901020126F -S31540014D10DA042014C205600480A3400102800474B1 -S31540014D20010000007FFFB13601000000B0863FFF61 -S31540014D303CBFFFEEA00440121110008590122020C6 -S31540014D40920220087FFFF31D941521209817639046 -S31540014D50C2052120DA0320A080A34001128000076A -S31540014D6082152120DA0320A4C200600480A34001F9 -S31540014D70028004DC1B0000707FFFB12190102012DD -S31540014D801110008590122038C025A1C0920220083A -S31540014D907FFFF30A9415212098176390C2052120BD -S31540014DA0DA0320B880A34001128000078215212032 -S31540014DB0DA0320BCC200600480A340010280047F64 -S31540014DC01B0000707FFFB10E90102012111000855C -S31540014DD090122050C025A1C0920220087FFFF2F711 -S31540014DE09415212098176390C2052120DA0320D01B -S31540014DF080A340011280000782152120DA0320D4C6 -S31540014E00C200600480A34001028004761B0000704A -S31540014E107FFFB0FB90102012111000859012206880 -S31540014E20C025A1C0920220087FFFF2E494152120FB -S31540014E3098176390C2052120DA0320E880A3400138 -S31540014E401280000782152120DA0320ECC20060049B -S31540014E5080A340010280046D1B0000707FFFB0E813 -S31540014E60901020121110008590122080C025A1C0FB -S31540014E70920220087FFFF2D1941521209817639062 -S31540014E80C2052120DA03210080A3400112800007D8 -S31540014E9082152120DA032104C200600480A3400167 -S31540014EA0028004641B0000707FFFB0D59010201271 -S31540014EB0C025A1C0111010007FFFF3B013100000F0 -S31540014EC00310300080A2000112800006010000009C -S31540014ED0C205A1C080A0600002800005111FE0004C -S31540014EE07FFFB0C790102012111FE0001310000081 -S31540014EF07FFFF2B794152120031FFC00DA0521201C -S31540014F0080A340011280000A82152120C20060045C -S31540014F1080A060001280000601000000C205A1C009 -S31540014F2080A0600002800005111FE0007FFFB0B441 -S31540014F309010201B111FE000133000007FFFF2A4E8 -S31540014F4094152120033FFC00DA05212080A340016E -S31540014F501280000A82152120C200600480A06000F0 -S31540014F601280000601000000C205A1C080A06000B9 -S31540014F7002800005111000007FFFB0A19010201C97 -S31540014F8011100000921020107FFFF29194152120FC -S31540014F90C205A1C01B0000708208400D1900002007 -S31540014FA080A0400C2110014402800004231000809F -S31540014FB07FFFB0939010201D94142120C02461C01E -S31540014FC0110020007FFFF282130FC000DA04212076 -S31540014FD0030E000080A340011280000A9414212090 -S31540014FE0C202A00480A060001280000601000000F9 -S31540014FF0C20461C080A0600002800005111FDFFF6E -S315400150007FFFB07F9010201E111FDFFF901223FFFC -S31540015010131000007FFFF26E941521200311FFFF4C -S31540015020821063FFDA05212080A340011280000728 -S3154001503082152120DA0060040338000080A3400174 -S3154001504002800405010000007FFFB06D9010201F13 -S31540015050111FD000130FF0007FFFF25D9415212040 -S315400150600311FC80DA05212080A340011280000A49 -S3154001507082152120C200600480A0600012800006D3 -S3154001508001000000C205A1C080A0600002800005A9 -S31540015090111FDFFF7FFFB05A90102021111FDFFF44 -S315400150A0901223FF921000087FFFF24994152120A8 -S315400150B00313FBFF821063FFDA05212080A3400121 -S315400150C01280000882152120DA00600403300000B6 -S315400150D08210602080A34001028003E401000000A9 -S315400150E07FFFB047901020207FFFF4761103C00068 -S315400150F0C025A1C09007BFE07FFFF2449215212051 -S31540015100C207BFE0DA05212080A3400112800007D3 -S3154001511082152120DA006004C207BFE480A3400162 -S31540015120028003D7010000007FFFB03590102013A5 -S315400151301B100085901360E87FFFF2349215212001 -S3154001514003100085DA0060E8C205212080A0400DE9 -S31540015150191000858215212012800007901320E83E -S31540015160DA006004C202200480A34001028003C920 -S31540015170010000007FFFB022901020131B10008514 -S31540015180901360D07FFFF2219215212019100085DE -S31540015190C20320D0DA05212080A3400182152120B7 -S315400151A012800007981320D0DA006004C20320045D -S315400151B080A34001028003BC010000007FFFB010C4 -S315400151C0901020131B100085901360D87FFFF20FBB -S315400151D092152120C20720B0DA05212080A3400183 -S315400151E08215212012800007981720B0DA0060044A -S315400151F0C203200480A34001028003B01B0000705B -S315400152007FFFAFFF9010201303100085901060B808 -S31540015210C025A1C07FFFF1FD92152120C20720B014 -S31540015220DA05212080A34001821521201280000742 -S31540015230981720B0DA006004C203200480A340011D -S315400152400280040F1B0000707FFFAFED901020130A -S31540015250C025A1C09015E0C87FFFF1EC9215212031 -S31540015260C2052120DA05E0C880A0400D8215212023 -S31540015270128000079015E0C8DA006004C2022004DB -S3154001528080A3400102800407010000007FFFAFDCDC -S3154001529090102013170C00089A10200019100C00CA -S315400152A015300F789612E001D83FBFF0D43FBFC00A -S315400152B09007BFF07FFFF1D592152120031004001E -S315400152C0DA05212080A340011280000A821521209F -S315400152D0C200600480A06000128000060100000048 -S315400152E0C205A1C080A06000028000059007BFC032 -S315400152F07FFFAFC3901020139007BFC07FFFF1C35C -S3154001530092152120C2052120DA0720B080A0400D48 -S315400153108215212012800007981720B0DA00600418 -S31540015320C203200480A34001028003E31B000070F6 -S315400153307FFFAFB390102013901660F07FFFF1B35B -S3154001534092152120C205A1C08330600E82086003F8 -S3154001535080A0600202800004211000807FFFAFA878 -S3154001536090102013C02421C07FFFF2981111F20042 -S315400153700310E80080A2000112800006010000002F -S31540015380C20421C080A06000028000040100000028 -S315400153907FFFAF9B901020137FFFF3CA11100000CF -S315400153A01101F5897FFFF289901221E20308E96430 -S315400153B080A200011280000601000000C205A1C0C2 -S315400153C080A0600002800004010000007FFFAF8CD6 -S315400153D0901020237FFFF27D1112A2080311410094 -S315400153E080A200011280000601000000C205A1C092 -S315400153F080A0600002800004010000007FFFAF80B2 -S31540015400901020237FFFF3AF110010009007BFF0EB -S31540015410921660F07FFFF1649415212003100C0071 -S31540015420DA05212080A340011280000A821521203D -S31540015430C200600480A060001280000601000000E6 -S31540015440C205A1C080A0600002800005901660F0F0 -S315400154507FFFAF6B90102014901660F09207BFC08B -S315400154607FFFF1569415212003200000DA05212003 -S3154001547080A340011280000A82152120C2006004E7 -S3154001548080A060001280000601000000C205A1C094 -S3154001549080A0600002800004010000007FFFAF5839 -S315400154A0901020147FFFF19190102001030FE0002E -S315400154B080A200011280000601000000C205A1C0C1 -S315400154C080A0600002800004010000007FFFAF4C15 -S315400154D0901020147FFFF17D90102001030FFC00F6 -S315400154E080A200011280000880A26000128000069E -S315400154F001000000C205A1C080A060000280000436 -S31540015500010000007FFFAF3E901020147FFFF36D36 -S315400155101110100019100085D41B20D07FFFF1F91E -S31540015520D01E60F003100085D03D2120DA0060D8FE -S31540015530C205212080A0400D191000858215212029 -S3154001554012800007901320D8DA006004C2022004BA -S3154001555080A3400102800361010000007FFFAF2864 -S31540015560901020227FFFF35711100000170400808E -S31540015570150F28009612E0F09A102000190FFC0032 -S31540015580D43FBFC0D83FBFF09007BFF09207BFC01E -S315400155907FFFF10594152120030FFC00DA05212038 -S315400155A080A340011280000682152120C2006004BA -S315400155B080A0600002800004010000007FFFAF1060 -S315400155C0901020157FFFF33F112000001700004087 -S315400155D0150014009612E0019A102000190FFC00E4 -S315400155E0D43FBFC0D83FBFF09007BFF09207BFC0BE -S315400155F07FFFF0ED94152120030FFC00DA052120F1 -S3154001560080A340011280000682152120C200600459 -S3154001561080A0600102800004010000007FFFAEF817 -S31540015620901020157FFFF32711300000170000402E -S31540015630152014009612E0019A102000192FFC0043 -S31540015640D43FBFC0D83FBFF09007BFF09207BFC05D -S315400156507FFFF0D594152120032FFC00DA05212088 -S3154001566080A340011280000682152120C2006004F9 -S3154001567080A0600102800004010000007FFFAEE0CF -S31540015680901020157FFFF30F11100000190FFC0039 -S315400156909A102000D83FBFF09007BFF09216E0E085 -S315400156A07FFFF0C194152120C206E0E0DA052120F2 -S315400156B080A3400182152120128000079816E0E060 -S315400156C0DA006004C203200480A340010280000482 -S315400156D0010000007FFFAECA901020157FFFF2F94E -S315400156E01120000017000040150014009612E00139 -S315400156F0190FFC009A102000D43FBFC0D83FBFF01D -S315400157009007BFF09216E0E07FFFF0A794152120A5 -S31540015710C206E0E0DA05212080A34001821521205E -S31540015720128000079816E0E0DA006004C203200404 -S3154001573080A3400102800004010000007FFFAEB05B -S31540015740901020157FFFF2DF113000001700004056 -S31540015750152014009612E0019A102000192FFC0022 -S31540015760D43FBFC0D83FBFF09007BFF09216E0E0EC -S315400157707FFFF08D94152120C2052120DA06E0E055 -S3154001578080A0400D82152120128000079016E0E08E -S31540015790DA006004C202200480A3400102800004B2 -S315400157A0010000007FFFAE96901020157FFFF2C5E5 -S315400157B01110000015100000961020019A102001CA -S315400157C0190FFC00D43FBFC0D83FBFF09007BFF0D0 -S315400157D09207BFC07FFFF079941521200310000086 -S315400157E0DA05212080A3400112800006821521207E -S315400157F0C200600480A06002028000040100000033 -S315400158007FFFAE7F901020157FFFF2AE1120000082 -S315400158109007BFF09207BFC07FFFF0689415212023 -S3154001582003100000DA05212080A340011280000602 -S3154001583082152120C200600480A06003028000041A -S31540015840010000007FFFAE6E901020157FFFF29D94 -S31540015850113000009A102001192FFC00D83FBFF0EB -S315400158609007BFF09207BFC07FFFF05494152120E7 -S3154001587003300000DA05212080A340011280000692 -S3154001588082152120C200600480A0600302800004CA -S31540015890010000007FFFAE5A901020157FFFF2896C -S315400158A011100000150FFC04172F26159412A01293 -S315400158B09612E231190FFEAE1B1CD2E89A13601103 -S315400158C098132154D43FBFC0D83FBFF09007BFF0D3 -S315400158D09207BFC07FFFF04794152120030FFEA713 -S315400158E082106296DA05212080A3400112800008C9 -S315400158F082152120DA006004032C1B348210602FAC -S3154001590080A3400102800004010000007FFFAE3CFD -S31540015910901020157FFFF26B112000009007BFF019 -S315400159209207BFC07FFFF03394152120030FFEA7D6 -S3154001593082106296DA05212080A340011280000878 -S3154001594082152120DA006004032C1B34821060305A -S3154001595080A3400102800004010000007FFFAE28C1 -S31540015960901020157FFFF25711300000192FFC04CB -S315400159701B2F26159A13623198132012D83FBFC0A8 -S315400159809007BFF09207BFC07FFFF01A9415212000 -S31540015990032FFEA782106296DA05212080A34001DB -S315400159A01280000882152120DA006004032C1B3482 -S315400159B08210603080A34001028000040100000093 -S315400159C07FFFAE0F901020157FFFF23E11100000B1 -S315400159D015101000961020009A102000191038005A -S315400159E0D43FBFC0D83FBFF09007BFF09207BFC0BA -S315400159F07FFFF0009415212003102400DA052120B1 -S31540015A0080A340011280000682152120C200600455 -S31540015A1080A0600002800004010000007FFFADF815 -S31540015A20901020157FFFF227112000009007BFF04C -S31540015A309207BFC07FFFEFEF94152120031024008A -S31540015A40DA05212080A3400112800006821521201B -S31540015A50C200600480A060000280000401000000D2 -S31540015A607FFFADE7901020157FFFF2161130000041 -S31540015A709007BFF09207BFC07FFFEFDE941521204C -S31540015A8003102400DA05212080A34001128000067C -S31540015A9082152120C200600480A0600002800004BB -S31540015AA0010000007FFFADD6901020157FFFF20563 -S31540015AB011100000210FE000110020007FFFF0B916 -S31540015AC09214200180A220001280012301000000CF -S31540015AD07FFFF1FC11200000110020007FFFF0B193 -S31540015AE09214200180A220001280011801000000BA -S31540015AF07FFFF1F411300000921420017FFFF0A9DD -S31540015B001100200080A220001280010D010000003A -S31540015B107FFFF1EC111000009A102000190FFC00D4 -S31540015B20D83FBFF09007BFF07FFFEFB89215212015 -S31540015B30C207BFF0DA05212080A340011280000789 -S31540015B4082152120DA006004C207BFF480A3400118 -S31540015B50028002A7010000007FFFADA99010201529 -S31540015B607FFFF1D8112000009007BFF07FFFEFA71C -S31540015B7092152120C207BFF0DA05212080A34001FA -S31540015B801280000782152120DA006004C207BFF4A3 -S31540015B9080A340010280029B010000007FFFAD9877 -S31540015BA0901020157FFFF1C7113000009007BFF01C -S31540015BB07FFFEF9692152120C207BFF0DA0521201B -S31540015BC080A340011280000782152120DA0060047B -S31540015BD0C207BFF480A340010280028F010000008A -S31540015BE07FFFAD87901020157FFFF1B611100000A1 -S31540015BF0030FDFFF901063FF7FFFF074A0100008D2 -S31540015C0080A2001002800004010000007FFFAD7CED -S31540015C10901020157FFFF1AB112000007FFFF06B44 -S31540015C2090100010030FE00080A2000102800004E2 -S31540015C30010000007FFFAD72901020157FFFF1A19A -S31540015C40113000007FFFF0619010001080A200101B -S31540015C5002800004010000007FFFAD69901020150D -S31540015C607FFFF198901020007FFFF0609015212072 -S31540015C70032FFE00DA05212080A340011280000691 -S31540015C8082152120C200600480A0600002800005C8 -S31540015C90211001447FFFAD5A901020162110014476 -S31540015CA07FFFF05C90142128DA042128032FF000AD -S31540015CB080A3400102800004A21421287FFFAD5039 -S31540015CC0901020167FFFF05D90100011DA04212814 -S31540015CD0030FE00080A340010280000401000000A0 -S31540015CE07FFFAD47901020167FFFF064901521206D -S31540015CF0030FFBF7821063F0DA05212080A34001F0 -S31540015D001280000882152120DA0060040303FF1285 -S31540015D108210604A80A3400102800005921660F01D -S31540015D207FFFAD3790102016921660F09007BFF0B6 -S31540015D307FFFEF3094152120C205A1C08330600E4C -S31540015D408208600780A060020280000519100046A3 -S31540015D507FFFAD2B901020171910004617100080B9 -S31540015D60DA02E1C8821321F880A0400DE00321F850 -S31540015D7002800004A212E1C87FFFAD2190102018D5 -S31540015D80C204600480A040100280000401000000AB -S31540015D907FFFAD1B90102018C204600880A06000F0 -S31540015DA01280007701000000C204600C80A06000F0 -S31540015DB01280006C010000007FFFEEE6010000004A -S31540015DC080A220010280019801000000190C40299F -S31540015DD01B23CD1B9A13609B981320069410200019 -S31540015DE096102000D83FBFF0D43FBFC07FFFEF2FB2 -S31540015DF09007BFF003100083A21062101B100081B0 -S31540015E0003100144A0136210A4106120B0102000B9 -S31540015E10832E2002DA044001DA27BFC09007BFC0B3 -S31540015E207FFFEF25921521209B2E2003D804000DDC -S31540015E30C2052120B00620019603401080A300012F -S31540015E401280000790102019DA02E004C204A0046F -S31540015E5080A340010280000580A620FF7FFFACE8B9 -S31540015E600100000080A620FF04BFFFEB832E200225 -S31540015E7003100083A41062101B100080031001441C -S31540015E80A2136210A6106120B0102000A12E20029C -S31540015E90C2048010C227BFC0921521207FFFEEDBCE -S31540015EA09007BFC0DA044010C2052120B006200287 -S31540015EB09804001180A34001128000079010201A17 -S31540015EC0DA032004C204E00480A3400102800005F5 -S31540015ED080A620FF7FFFACCA0100000080A620FFFC -S31540015EE024BFFFECA12E200230800211C205A1C0C1 -S31540015EF080A0600022BFFB8FB0863FFF30BFFB8A88 -S31540015F00C205A1C080A0600002BFF14501000000AA -S31540015F1030BFF141C205A1C080A0600002BFF13689 -S31540015F200100000030BFF132C205A1C080A060006F -S31540015F3002BFF1270100000030BFF1237FFFACB063 -S31540015F409010201530BFFEF37FFFACAD90102015A9 -S31540015F5030BFFEE87FFFACAA9010201530BFFEDDB2 -S31540015F607FFFACA79010201830BFFF947FFFACA4F1 -S31540015F709010201010BFF678111000847FFFACA05E -S31540015F809010201830BFFF89C207BFCC80A06000A7 -S31540015F9012BFF8F501000000C20421C08208401575 -S31540015FA09A16A00880A0400D12BFF8EF010000002C -S31540015FB010BFF8F015108683C205A1C09A13601F61 -S31540015FC0190000108208400D9813200880A0400C4B -S31540015FD012BFFB7D1110008510BFFB7F9012205030 -S31540015FE0C205A1C09A13601F190000108208400D16 -S31540015FF09813200880A0400C12BFFB861110008523 -S3154001600010BFFB8890122068C205A1C09A13601F79 -S31540016010190000108208400D9813200480A0400CFE -S3154001602012BFFB8F1110008510BFFB91901220808B -S31540016030C205A1C09A13601F190000108208400DC5 -S315400160409813200880A0400C12BFFB980100000065 -S3154001605030BFFB98C205A1C080A0600002BFFBFE15 -S31540016060111FD00030BFFBF9C205A1C080A060005E -S3154001607002BFFC1E0100000030BFFC1AC205A1C0D0 -S3154001608080A0600002BFFC2C1B10008530BFFC279E -S31540016090C205A1C080A0600002BFFC3A1B1000856A -S315400160A030BFFC35C205A1C080A0600002BFFC47DD -S315400160B01B10008530BFFC42C205A1C09A13601F68 -S315400160C0190000108208400D9813201080A0400C42 -S315400160D012BFFC4C0310008510BFFC4E901060B8F7 -S315400160E0C205A1C09A13601F190000108208400D15 -S315400160F09813200480A0400C12BFFB20111000858C -S3154001610010BFFB2290122038C205A1C080A06000BA -S3154001611022BFF8D0150FFFFF30BFF8CBC205A1C093 -S3154001612080A0600002BFF8100310008530BFF80B55 -S31540016130C205A1C09A13601F190000108208400DC4 -S315400161409813201080A0400C12BFF8169015E0C895 -S3154001615010BFF818921660F0C205A1C080A0600079 -S3154001616002BFF9491B10008530BFF944C205A1C0E1 -S3154001617080A0600002BFF9579007BFF030BFF952C7 -S31540016180C205A1C080A0600002BFF9631B10008553 -S3154001619030BFF95EC205A1C09A13601F19000010F5 -S315400161A08208400D9813201080A0400C12BFF96957 -S315400161B09007BFF010BFF96B921660F0C20461C040 -S315400161C080A0600002BFF74B1B10008530BFF74629 -S315400161D0C205A1C080A0600002BFF75A9016E0E058 -S315400161E030BFF755C205A1C09A13601F19000010B0 -S315400161F08208400D9813201080A0400C12BFF75F13 -S315400162000100000030BFF75FC205A1C080A0600059 -S3154001621002BFF76F1B10008530BFF76AC205A1C0E8 -S315400162209A13601F190000108208400D9813201020 -S3154001623080A0400C12BFF7750100000030BFF77512 -S31540016240C20461C080A0600002BFF7949015E0C807 -S3154001625030BFF78FC205A1C080A0600002BFF7A082 -S315400162609015E0C830BFF79BC205A1C080A0600071 -S3154001627002BFF7AC9015E0C830BFF7A7C205A1C071 -S315400162809A13601F190000108208400D98132010C0 -S3154001629080A0400C12BFFBED0100000030BFFBEDBA -S315400162A0C205A1C080A0600002BFFBFC170C00081C -S315400162B030BFFBF7C205A1C09A13601F1900001039 -S315400162C08208400D9813201080A0400C12BFFC1983 -S315400162D0901660F030BFFC1AC205A1C080A06000D4 -S315400162E002BFFCA10100000030BFFC9DC20461C099 -S315400162F080A0600002BFF9E59015E0C830BFF9E023 -S31540016300C205A1C080A0600002BFF9F19015E0C8A6 -S3154001631030BFF9ECC205A1C080A0600002BFF9FD03 -S315400163209015E0C830BFF9F8C205A1C080A0600051 -S3154001633002BFFA091910008530BFFA04C20461C0D0 -S3154001634080A0600002BFF9250310008530BFF92007 -S31540016350C205A1C09A13601F190000108208400DA2 -S315400163609813201080A0400C12BFF92C01000000A8 -S3154001637030BFF92CC205A1C080A0600002BFF93C24 -S315400163801B10008530BFF937C205A1C09A13601FA3 -S31540016390190000108208400D9813201080A0400C6F -S315400163A012BFF9429007BFE810BFF944921660F058 -S315400163B0C20461C080A0600002BFF95F9016E0E0B0 -S315400163C030BFF95AC205A1C09A13601F19000010C7 -S315400163D08208400D9813201080A0400C12BFF9642A -S315400163E00100000030BFF964C205A1C080A0600071 -S315400163F002BFF9740310008530BFF96FC205A1C011 -S315400164009A13601F190000108208400D981320103E -S3154001641080A0400C12BFF97A9016E0E010BFF97CDB -S31540016420921660F07FFFAB769010201910BFFE697F -S31540016430190C4029D80061C01B0000709A13601FD7 -S3154001644003000010980B000D8210600880A3000124 -S3154001645012BFF5501110008410BFF55290122360FF -S31540016460C205A1C09A13601F190000108208400D91 -S315400164709813200480A0400C12BFF55811100084D7 -S3154001648010BFF55A90122378C205A1C09A13601F16 -S31540016490190000108208400D9813200480A0400C7A -S315400164A012BFF5600100000030BFF560C205A1C012 -S315400164B080A0600002BFF4A90310008530BFF4A498 -S315400164C0C205A1C080A0600002BFF4939015E0C848 -S315400164D030BFF48EC205A1C080A0600002BFF47D2A -S315400164E09015E0C830BFF478C20461C080A0600056 -S315400164F002BFF4679015E0C830BFF462C205A1C07F -S315400165009A13601F190000108208400D981320024B -S3154001651080A0400C12BFF5B61B10008510BFF5B820 -S31540016520921360D0C205A1C080A0600002BFF5C52C -S315400165309007BFF030BFF5C0C205A1C080A0600082 -S3154001654002BFF5D10310008530BFF5CCC205A1C00D -S315400165509A13601F190000108208400D98132010ED -S3154001656080A0400C12BFF5D79007BFF010BFF5D9F8 -S31540016570921660F0C20461C080A0600022BFF5F3AC -S315400165801910008530BFF5EEC205A1C09A13601FF0 -S31540016590190000108208400D9813201080A0400C6D -S315400165A012BFF5F91B10008510BFF5FB03100085DE -S315400165B0C205A1C080A0600002BFF60B9007BFE8EC -S315400165C030BFF606C205A1C080A0600002BFF61723 -S315400165D01B10008530BFF612C20421C080A06000A6 -S315400165E022BFF03E113C02AF30BFF039C205A1C017 -S315400165F080A0600002BFFD5B0100000030BFFD5777 -S31540016600C205A1C080A0600002BFFD670100000075 -S3154001661030BFFD63C205A1C080A0600002BFFD730B -S315400166200100000030BFFD6FC205A1C080A060001F -S3154001663002BFF2D70310008530BFF2D2C205A1C016 -S3154001664080A0600002BFF2C19007BFF030BFF2BC2C -S31540016650C205A1C080A0600002BFF2AA3710008522 -S3154001666030BFF2A5C205A1C080A0600002BFF028DC -S315400166701111FC0030BFF023C205A1C09A13601F5F -S31540016680190000108208400D9813201080A0400C7C -S3154001669012BFF3DD9016E0E010BFF3DF921660F013 -S315400166A0C205A1C080A0600002BFF39E1B100085F9 -S315400166B030BFF399C205A1C080A0600002BFF38636 -S315400166C01B10008530BFF381C205A1C080A06000C8 -S315400166D002BFF36E1B10008530BFF369C20461C06F -S315400166E080A0600002BFF3589016E0E030BFF3533C -S315400166F0C205A1C080A0600002BFF30E191000853B -S3154001670030BFF309C205A1C080A0600002BFF2F804 -S315400167109007BFE830BFF2F3C20461C080A06000B9 -S3154001672002BFF2E29007BFE830BFF2DD81C7E00861 -S3154001673081E80000D27A000081C3E0080100000030 -S3154001674081C3E008900A20209332600492126001CE -S315400167508213C0007FFFFFF89E1040000100000039 -S3154001676081D8200081C3E008010000009DE3BF9865 -S315400167707FFFFFFC0100000082102400C0A04300FF -S3154001678081C7E00881E80000833220189A1000088A -S315400167908088600F028000049010200083336010CF -S315400167A09008600381C3E008010000009DE3BF98A3 -S315400167B0031000C01B1000C1B0106000A21360009E -S315400167C0031000C21B1000C2A4106000A613610092 -S315400167D0031000201B100020A8106158AA13600066 -S315400167E07FFFEBAD9010200C808A2008028001FDCE -S315400167F0010000007FFFAA7D9010200ED08003206B -S315400168007FFFFFE2010000000310014380A2200246 -S31540016810028000C6D02060D080A22002148000E40D -S3154001682080A2200380A22001028000D1821020197B -S31540016830331000A02F1000A0391000A0371000A07F -S31540016840351000A07FFFFFC7210100007FFFFFC871 -S31540016850BA04A00C921000117FFFFFBC90100018E3 -S31540016860921000117FFFFFB990062004901000118D -S315400168707FFFFFB19210200ADA066014110800006A -S31540016880913A000DC205E010900A0001912A2002BA -S3154001689013008000900200117FFFFFA79212600A49 -S315400168A0DA06601411100000913A000DC205E0109D -S315400168B0900A0001912A2002900200117FFFFF9E5B -S315400168C09214208EDA066014111C0000913A000DD4 -S315400168D0C205E010900A0001912A20021301C0006E -S315400168E0900200117FFFFF949212608E9334A004B0 -S315400168F09004600C7FFFFF90921260019214201E5B -S315400169007FFFFF8D9004A0089010001D7FFFFF8A36 -S31540016910921020009334E004921260017FFFFF86BB -S315400169209004A004111000C2901221087FFFFF823B -S3154001693092102000031000E0A01060009334200460 -S31540016940111000C2901221047FFFFF7B9212601A40 -S3154001695003048D1582106278C2242004111000E0D0 -S3154001696015100120C0222000A2102003AC12A00065 -S31540016970A004E00C90047FFD40000A7392102003AE -S315400169801B100143C20360D08200600C932A0001B0 -S315400169909202401693326004901000107FFFFF660A -S315400169A09212601EA204600180A4600A04BFFFF235 -S315400169B0A0042004C206E008D807200C8208600122 -S315400169C08328400CD605E010111000E0D406A00043 -S315400169D0DA06601498122000960AE003972AC00D41 -S315400169E0920AA002111000A0DA022004940AA00122 -S315400169F0952A800D932A400D1B1000209612C00146 -S31540016A00E8236150030100001B0076418210601E9D -S31540016A109A1361C09212C00999332004C2252004F9 -S31540016A20DA2520089612C00A9E13200E913560047D -S31540016A301B1000C2031000C2821061049012201E76 -S31540016A40953620049813201E9A136108D625202CCA -S31540016A50D8252010D025201CD2252020DE2520280F -S31540016A60D6252014940ABFF0FA250000DA2520180D -S31540016A70C2252024C225200CA2102100D4A44320E3 -S31540016A80C2800320D88443209A102001A0102200FE -S31540016A90DAA40320D884032082102000C2A4032054 -S31540016AA0DAA0032081D820007FFFC55901000000EC -S31540016AB0C2800320E2844320E0840320DA05E0100B -S31540016AC0D6066014C206E0089A0B60039B2B400B66 -S31540016AD082086001D407200CD806A000111000A03E -S31540016AE08328400A980B2001D60220049A134001BC -S31540016AF0992B000B9A13400CC203400080A0600002 -S31540016B0012800008821360041B048D15D8004000D2 -S31540016B109A13627880A3000D02800038C205E01006 -S31540016B2010800000010000008210201A331000A0DE -S31540016B30C22660149810203F2F1000A0391000A0E3 -S31540016B40351000A09A1020148210200E151000A0B6 -S31540016B50371000A0DA27200CC222A004D826A000B4 -S31540016B60D825E01010BFFF38D826E0089A10207FBC -S31540016B70331000A02F1000A0C2266014DA25E010C1 -S31540016B809810203F391000A0351000A08210201324 -S31540016B909A10200D111000A0371000A0C227200C1A -S31540016BA0DA22200410BFFFF0D826A00012BFFF2230 -S31540016BB0331000A08210201CC22660149A102015A2 -S31540016BC08210207F391000A0371000A0DA27200C50 -S31540016BD0C226E0089810200F2F1000A0351000A003 -S31540016BE01B1000A08210203FD8236004C226A000BB -S31540016BF010BFFF15D825E010DA06E008D806601464 -S31540016C00820860039A0B6002D607200C8328400C49 -S31540016C109B2B400B8210400DD80040001B100000FA -S31540016C20C203400080A3000102800004D406E008AC -S31540016C301080000001000000C205E010980AA00182 -S31540016C40D207200CD6066014820860038328400BC5 -S31540016C50992B0009940AA0039810400CDA06A0006B -S31540016C60111000A0952A80099A0B6001D6022004D2 -S31540016C708210400AC20040009B2B400B9813000D26 -S31540016C800321D9509813200482106321C2230000A6 -S31540016C90DA03000080A3400102800004C206E00836 -S31540016CA01080000001000000D407200CDA05E01036 -S31540016CB082086001D60660148328400A9A0B600355 -S31540016CC0D806A0009B2B400B151000A0D602A004AD -S31540016CD0980B20019A134001992B000B9813400CF5 -S31540016CE08210000C05048D158410A278072AF37BC7 -S31540016CF08610E301C4384000C438400003048D15B2 -S31540016D00DA0300008210627880A340010280000409 -S31540016D108213200410800000010000001B2AF37B2F -S31540016D20D80040009A13630180A3000D12BFFFFAF9 -S31540016D30C205E010D6066014D806E0088208600352 -S31540016D40D407200C8328400B980B2001DA06A000BB -S31540016D50111000A0992B000A9A0B6003D602200459 -S31540016D608210400C9B2B400B15100143A010400D87 -S31540016D70F002A0D0A2102003E0240000C0A002200F -S31540016D80921020034000097090047FFD8206200C7A -S31540016D9098102001912A0001992B00011B10012016 -S31540016DA09610000182136000DA02000180A34010B0 -S31540016DB0A204600112800087A004000C80A4600A2E -S31540016DC024BFFFEFE0240000C0A0022003100120F1 -S31540016DD0A810000BAA106000A0102000A2102003EA -S31540016DE090047FFD4000095892102003832C6002D5 -S31540016DF0912A0014DA04C00190020015820B6060EA -S31540016E009132200480A000019012201EA040001063 -S31540016E109A0B7F9F900A3F9F80A340081280006F84 -S31540016E20A204600180A4600A24BFFFEF90047FFDA5 -S31540016E3080A4200012800004C205E01010800000EA -S31540016E4001000000D6066014D806E00882086003F7 -S31540016E50D407200CDA06A000111000A08328400BAD -S31540016E60980B2001992B000AD60220049A0B600246 -S31540016E708210400C9B2B400BAA10400D9FC5400031 -S31540016E800100000082102400C0A04300C0A00220DF -S31540016E90A0102000A21020039B2C6002C204C00D4A -S31540016EA08208606080A00001A0400010A204600139 -S31540016EB080A4600A24BFFFFA9B2C600280A42008AC -S31540016EC022800004D004E00410800000010000008C -S31540016ED0808A204002800007010000007FFFFE19E2 -S31540016EE00100000080A22000128000040100000081 -S31540016EF010800000010000007FFFFE12D004A008B0 -S31540016F0080A22000128000040100000010800000D1 -S31540016F10010000007FFFFE0BD004E00880A22000A4 -S31540016F2012800004010000001080000001000000F2 -S31540016F3083480000842860808188A0000100000009 -S31540016F400100000001000000D806E008D407200C2B -S31540016F50DA05E010980B2001D6066014992B000A39 -S31540016F609A0B6003C206A0009B2B400B151000A094 -S31540016F70D602A004820860018328400B9A13400C74 -S31540016F809A1340019A136004C203400092102004F0 -S31540016F9091D02002010000007FFFC41D01000000C6 -S31540016FA0981020009A102200D8A343208210200175 -S31540016FB0C2A34320D8A3432003100000DA804380B4 -S31540016FC0DAA04380D8A0032081D820003080000574 -S31540016FD01080000001000000108000000100000048 -S31540016FE081C7E00891E820009DE3BF98400007D1A2 -S31540016FF001000000808A21000280003F010000005C -S315400170007FFFA88E01000000912A20047FFFA87708 -S31540017010900220050310014082106048DA006004A6 -S3154001702080A360002280001503100140B0100001CA -S31540017030C20600009B38601F81836000DA06200487 -S3154001704001000000010000008278400DDA062008A8 -S31540017050B006200C80A0400D028000049010200153 -S315400170607FFFA86701000000C206200480A06000DF -S3154001707012BFFFF00310014082106000DA00600485 -S3154001708080A360000280001501000000B0100001DD -S31540017090C206000081800000DA06200401000000DB -S315400170A0010000009A70400D8210000DDA0620089A -S315400170B0B006200C80A0400D0280000490102002F2 -S315400170C07FFFA84F01000000C206200480A0600097 -S315400170D012BFFFF00100000040000824010000003B -S315400170E080A2200012800004010000007FFFA84416 -S315400170F09010200381C7E00891E820009DE3BF98E6 -S315400171007FFFA84E01000000912A20047FFFA83787 -S3154001711090022004400007890100000080A221233B -S3154001712002800004010000007FFFA8359010200175 -S315400171304000078001000000808A21000280002B68 -S315400171400310014082106184DA00600880A360095F -S315400171500280001101000000B0100001C2060000CB -S31540017160DA062004D80620088258400DB006200CC5 -S3154001717080A0400C02800004901020027FFFA820CE -S3154001718001000000C206200880A0600912BFFFF47A -S3154001719001000000400007760100000080A22000A7 -S315400171A00280000F0100000040000762010000005C -S315400171B0808A22000280000D010000004000079EE7 -S315400171C00100000080A2200012800008010000009A -S315400171D07FFFA80B90102004308000047FFFA80891 -S315400171E09010200330BFFFF181C7E00891E82000ED -S315400171F09DE3BFA0941020001110005C9012222440 -S315400172001310005C921262281710005C9612E2304D -S315400172101910005C9813223493C2000081C24000C9 -S315400172201080019181C2C00081C300001080018E8F -S315400172309402A0019402A00180A2A0031280018AB7 -S3154001724001000000874400008D30E00E8C89A007C4 -S3154001725080A1A000028000C701000000AF30E00B12 -S31540017260AE0DE00780A5E000128000C201000000DB -S3154001727080A1A00212800035010000002510000007 -S31540017280E41C80002510000029100000A8152104E7 -S31540017290A6100012AA100012AC100014A1802046BC -S315400172A0A4100000AA10000001000000A180204E99 -S315400172B0A810210001000000A1800000010000008B -S315400172C001000000E83CA03082A4801312800166D0 -S315400172D082A5001612800164010000000100000031 -S315400172E001000000874400008D30E00B8C89A00727 -S315400172F08CA1A0051280015CA18000000100000064 -S315400173000100000001000000E81CA03082A5001623 -S315400173101280015582A54012A4100000128001522C -S315400173200100000001000000874400008D30E00BA1 -S315400173308C89A0078CA1A0031280014B010000009B -S315400173401080008C0100000080A1A0011280002362 -S3154001735025100000E41C80002510000029100000C3 -S31540017360A8152104A6100012AA100012AC10001490 -S31540017370A1802046A4100000AA10000001000000D0 -S31540017380A180204EA810210001000000A18000002C -S31540017390010000000100000001000000E83C8000FF -S315400173A082A480131280013082A500161280012E1C -S315400173B00100000001000000874400008D30E00B11 -S315400173C08C89A0078CA1A002128001270100000030 -S315400173D0108000680100000080A1A00312800065B2 -S315400173E0A6100000A210200EA1844000A6100000A5 -S315400173F0A1800000A814E000AB4400000100000099 -S31540017400AC14E00001000000AF44000080A520005C -S3154001741012800115AA8D6E0080A5400012800112CE -S3154001742080A5A00012800110AF35E00BAE0DE0073C -S3154001743080A5E0011280010C01000000A0100000AF -S31540017440A1844000A6100000A1800000E8180000B9 -S31540017450AC100000AE100000EC04C000EE04E004E5 -S3154001746080A500161280010080A54017128000FEFB -S3154001747001000000A5440000A534A00BA40CA00700 -S3154001748080A4A001128000F801000000A0100000B5 -S31540017490A1844000A6100000A1800000A210200A8D -S315400174A0A1844000A4100000A1800000E81800005B -S315400174B0AC100000AE100000EC04C012EE04E00473 -S315400174C080A50016128000E880A54017128000E6CC -S315400174D001000000A5440000A534A00BA40CA007A0 -S315400174E080A4A002068000E00100000021100140B6 -S315400174F0A0142200EC1C0000A0042008E81C000097 -S31540017500A1844000A6100000A1800000A210200E18 -S31540017510A1844000A4100010AC100000AE10000081 -S31540017520A18000000100000001000000EC3C801336 -S31540017530AC100000AE100000E81CC01280A5001679 -S31540017540128000C980A54017128000C701000000C3 -S31540017550A5440000A534A00BA40CA00780A4A00458 -S31540017560128000C1010000001080000201000000ED -S315400175708B4440008A09601F80A160010280000A95 -S315400175808C1000059DE3BFA08AA1600116BFFFFED6 -S315400175900100000081E800008CA1A00116BFFFFE9A -S315400175A0010000000100000001000000A023A080AE -S315400175B0A02C20078E100010A3480000E2240000F2 -S315400175C0C2242004C43C2008C83C2010CC3C2018CE -S315400175D0F03C2020F43C2028F83C2030FC3C20386C -S315400175E0D03C2040D43C2048D83C2050DC3C20585C -S315400175F0A5500000E424206080102008821020015C -S315400176008410200286102003881020048A10200549 -S315400176108C10200681900000A42C601F818C800074 -S31540017620010000000100000001000000030040408D -S3154001763082106101841000008610000089444000D8 -S315400176408809201F86100004A01000028400400211 -S31540017650A210000284004002A410000284004002ED -S31540017660A610000284004002A810000284004002D5 -S31540017670AA10000284004002AC10000284004002BD -S31540017680AE100002840040029010000284004002C5 -S3154001769092100002840040029410000284004002CD -S315400176A096100002840040029810000284004002B5 -S315400176B09A100002840040029C100002840040029D -S315400176C09E1000028400400281E0000086A0E00195 -S315400176D016BFFFDE01000000030040408210610139 -S315400176E0841000008610000480A400021280003F2E -S315400176F08400400280A440021280003C8400400283 -S3154001770080A48002128000398400400280A4C00215 -S31540017710128000368400400280A5000212800033A8 -S315400177208400400280A5400212800030840040025D -S3154001773080A580021280002D8400400280A5C002EF -S315400177401280002A8400400280A200021280002793 -S315400177508400400280A2400212800024840040023C -S3154001776080A28002128000218400400280A2C002D1 -S315400177701280001E8400400280A300021280001B7A -S315400177808400400280A34002128000188400400217 -S3154001779080A38002128000158400400280A3C002AB -S315400177A0128000128400400281E0000086A0E001C0 -S315400177B016BFFFCE0100000080A020001280000B02 -S315400177C080A0FFFF1280000980A16005128000079A -S315400177D080A1A0061280000501000000A01000074C -S315400177E010800006C0242020A01000079010200120 -S315400177F010800002D024202082100007C4004000DF -S3154001780081888000010000000100000001000000A5 -S31540017810C4186008C8186010CC186018F0186020A9 -S31540017820F4186028F8186030FC186038D0186040A9 -S31540017830D4186048D8186050DC186058E40060607D -S31540017840C200600481948000010000000100000034 -S3154001785001000000A0100007F004202081C7E008C5 -S3154001786081E8000010BFFFFCB010000001000000DD -S3154001787081D8200081C3E008010000001B100144AB -S31540017880D8036150821020018328400C1B1001440B -S3154001789082007FFFD803615482084008932A400C36 -S315400178A0900040098213C0007FFFE77F9E10400091 -S315400178B0010000001B100144D803615082102001D1 -S315400178C08328400C1B10014482007FFFD80361547A -S315400178D0932A400C82084008900040099210000A01 -S315400178E08213C0007FFFE7729E1040000100000036 -S315400178F01B100144D8036150821020018328400C9B -S315400179001B10014482007FFFD8036154932A400C27 -S3154001791082084008900040099210000A8213C00074 -S315400179207FFFE7679E104000010000001B100144E5 -S31540017930D8036150821020018328400C1B1001445A -S3154001794082007FFFD803615482084008932A400C85 -S31540017950900040098213C0007FFFE7579E10400008 -S31540017960010000001B100144D803615C8210200114 -S315400179708328400C1B10014482007FFFD803616CB1 -S31540017980932A400C82084008900040099210000A50 -S315400179908213C0007FFFE74E9E10400001000000A9 -S315400179A01B100144D803615C821020018328400CDE -S315400179B01B10014482007FFFD803616C932A400C5F -S315400179C082084008900040099210000A8213C000C4 -S315400179D07FFFE7439E104000010000009DE3BF5832 -S315400179E02D100144A2102000C205A16080A44001CF -S315400179F01680001BA01020002B10014429100144C1 -S31540017A0027100144A4102001D005615C912C800807 -S31540017A10C205216C90023FFF832C0001900A001899 -S31540017A207FFFE72990020001C204E14C901E000845 -S31540017A30900A000180A00008A2647FFFA0042001F3 -S31540017A40C205A16080A4000126BFFFF1D005615C9B -S31540017A5080A4600012800003B0102000B010200105 -S31540017A6081C7E00881E800001B100144D803615C2E -S31540017A70821020018328400C1B10014482007FFFA5 -S31540017A80D803616C82084008932A400C9000400953 -S31540017A908213C0007FFFE70C9E10400001000000EA -S31540017AA01B100144D803615C821020018328400CDD -S31540017AB01B10014482007FFFD803616C8208400895 -S31540017AC0932A400C900040098213C0007FFFE702D1 -S31540017AD09E10400001000000952AA00D03280000D9 -S31540017AE094028009D02040009422B000D420600442 -S31540017AF081C3E00801000000033FFFBF821062F826 -S31540017B009DE38001193FFFBF94132368B407BFF873 -S31540017B10031000459606800A82106020C222E00CBE -S31540017B2003100044821063E0C222E0041B100044AB -S31540017B309A1363C0033FFFBFDA26800A901323805E -S31540017B40331000458210635C94068008981323C065 -S31540017B50921660008200401ED222E008D4204000E6 -S31540017B60B006800C7FFFA5A1901020067FFFE6CAD4 -S31540017B7090102000920A3FF07FFFE6C99010200046 -S31540017B80210000307FFFE6C490102000808A00105B -S31540017B9012BFFFFD010000007FFFFF3621000030CC -S31540017BA07FFFE6BD90102000808A001012BFFFFDC6 -S31540017BB0010000007FFFE6B890102000030020403E -S31540017BC08210600F921200017FFFE6B590102000EF -S31540017BD07FFFE6B19010200821100144D0242148AE -S31540017BE07FFFE6AD9010200CA73A2010993A201459 -S31540017BF0A60CE007980B200FDA042148A8230013AE -S31540017C00A80520089F3B6014933B60109B3B60187E -S31540017C1094050013A2102001AC03200A9E0BE00F2D -S31540017C2096102400AE0B60039402A00221200000AE -S31540017C30992AC00C1B1001448203E00A952C400A84 -S31540017C409424000A832C4001D8236168A0240001B2 -S31540017C501B10014403100144EC23615C972AC00FB9 -S31540017C60AA03E00A1B100144D620614403100144D3 -S31540017C70EA236154EA2061501B1001440310014478 -S31540017C80D423614C920A6007A53A2018D020615846 -S31540017C90153FFFBF932C4009A40CA00303100144D8 -S31540017CA09412A358932C4009A404A001391001440D -S31540017CB037100144EC20616C9B2C40149402801EC9 -S31540017CC0E0272164E426E160AA027FFFDA228000F0 -S31540017CD0AC85E0010280000CBB2C4013033FFFBF83 -S31540017CE082106368A0068001A4100016D00400002B -S31540017CF09FC20000A0042004A484BFFF32BFFFFD41 -S31540017D00D00400007FFFE66490102000920A3FFCF9 -S31540017D107FFFE66390102000A410200080A4801607 -S31540017D2016800022A2102000033FFFBFAE106368F9 -S31540017D30A610001AA010200080A400163680001854 -S31540017D40A404A00110800005A810001780A4001605 -S31540017D5036800013A404A001921000107FFFFEC8D4 -S31540017D60D004C014820A001580A0401512BFFFF846 -S31540017D70A0042001C204C01482184008DA07216415 -S31540017D808208400D80A00001A2647FFF80A40016F6 -S31540017D9006BFFFF392100010A404A00180A4801630 -S31540017DA006BFFFE5A604E0047FFFE63B90102000F6 -S31540017DB0A6100008901020007FFFE6399214E003D8 -S31540017DC080A46000028001B101000000833CE00C08 -S31540017DD080886003128000A5030048D1833CE013EC -S31540017DE080886003128001AD010000007FFFFEA183 -S31540017DF0210000307FFFE62890102000808A001085 -S31540017E0012BFFFFDA6100008A4102000C206E160C3 -S31540017E1080A480011680000D832CA00292100012CE -S31540017E20901000187FFFFED094102000A404A001FA -S31540017E30C206E16080A4800106BFFFFA92100012DB -S31540017E40A4102000832CA002A404A001C026000196 -S31540017E5080A4A01E04BFFFFD832CA0028210200532 -S31540017E60C22600009A102001DA2620048210200240 -S31540017E70C22620089A102003DA26200C7FFFFED85E -S31540017E809010001880A22000028001D3010000005A -S31540017E90C206000080A060050280000401000000C7 -S31540017EA07FFFA4D7901020067FFFFECD90100018CB -S31540017EB080A22000128001C401000000A41020000D -S31540017EC0C206E16080A480011680000F9210001264 -S31540017ED0A0062004941020007FFFFEB290100018E7 -S31540017EE092100012901000107FFFFEAE94102000F9 -S31540017EF0A404A001C206E16080A4800106BFFFF68A -S31540017F00921000127FFFE5FA901000187FFFE5F806 -S31540017F10900620207FFFE5F6900620407FFFE5F49E -S31540017F2090062060A4102000C206E16080A4800172 -S31540017F3006800196A21020007FFFA4B19010200870 -S31540017F40173FFFBF8212E3C0940680018212E35CB1 -S31540017F508200401ED81A8000C2004000D838400036 -S31540017F609612E380C206800B80A06005128000064F -S31540017F708206800BDA00600480A36001028000055E -S31540017F80A41020007FFFA49E90102009A410200079 -S31540017F90C206E16080A4800116800011A210200073 -S31540017FA0A0062004921000127FFFFEBE9010001022 -S31540017FB0901A200180A00008A2647FFFA404A001BA -S31540017FC0C206E16080A4800106BFFFF8921000124C -S31540017FD080A4600102800005833CE0137FFFA488F2 -S31540017FE09010200A833CE013808860031280018050 -S31540017FF082102005C22600009A102001DA262004AC -S3154001800082102002C22620089A102003DA26200C6C -S315400180101B3FFFBF9A1363589A03401ED00340008B -S315400180204000048D9210001D032EEEEEA12A20027F -S31540018030A21063BBE22600107FFFFE699010001874 -S3154001804080A220001280016701000000C2060010D4 -S3154001805080A0401102800005030048D17FFFA4683B -S3154001806090102012030048D1821061671B226AF3E7 -S31540018070C22620209A1361EFDA262024C20E202040 -S3154001808080A0600102800004010000007FFFA45C23 -S315400180909010201AC20E202180A060230280000485 -S315400180A0010000007FFFA4569010201BC20E202223 -S315400180B080A0604502800004010000007FFFA450BB -S315400180C09010201CC20E202380A06067028000040D -S315400180D0010000007FFFA44A9010201DC20E2024FB -S315400180E080A0608902800004010000007FFFA44453 -S315400180F09010201EC20E202580A060AB0280000495 -S31540018100010000007FFFA43E9010201FC20E2026D2 -S3154001811080A060CD02800004010000007FFFA438EA -S3154001812090102020C20E202780A060EF028000041C -S31540018130010000007FFFA43290102021C2162020AA -S31540018140832860108330601080A061230280000480 -S31540018150010000007FFFA42A90102022DA16202277 -S315400181609B2B6010030000119B33601082106167E6 -S3154001817080A3400102800004010000007FFFA4208B -S3154001818090102023DA1620249B2B60100300002236 -S315400181909B336010821061AB80A3400102800004D2 -S315400181A0010000007FFFA41690102024DA16202635 -S315400181B09B2B6010030000339B336010821061EFEC -S315400181C080A3400102800005821020307FFFA40C6D -S315400181D09010202582102030C22E2020030C08D179 -S315400181E0DA0620208210616780A3400102800005E3 -S315400181F0821020317FFFA402901020278210203167 -S31540018200C22E2021030C0C51DA0620208210616710 -S3154001821080A3400102800005821020327FFFA3F82F -S315400182209010202882102032C22E2022210C0C4C84 -S31540018230DA0620208214226780A3400102800005CD -S31540018240821020337FFFA3EE901020298210203325 -S31540018250C22E20239A142233C206202080A0400D2C -S3154001826002800005821020347FFFA3E59010202A6A -S3154001827082102034C22E2024030D2AF3DA0620244C -S31540018280821061EF80A340010280000582102035F3 -S315400182907FFFA3DB9010202B82102035C22E202594 -S315400182A0030D0D73DA062024821061EF80A340018D -S315400182B002800005821020367FFFA3D19010202C2A -S315400182C082102036C22E2026210D0D4DDA0620249D -S315400182D0821422EF80A340010280000582102037DC -S315400182E07FFFA3C79010202D82102037C22E202752 -S315400182F09A142237C206202480A0400D0280000530 -S31540018300210000107FFFA3BE9010202E21000010F7 -S3154001831082142041C23620200310104CDA06202058 -S315400183208210623380A340010280000582142243F9 -S315400183307FFFA3B39010202F82142243C2362022FE -S3154001834003101050DA0620208210624380A34001B8 -S3154001835002800005210000117FFFA3A99010203063 -S315400183602100001182142045C23620240311114DEB -S31540018370DA0620248210623780A34001028000057C -S31540018380821422477FFFA39E9010203182142247F8 -S31540018390C236202603111151DA0620248210624783 -S315400183A080A3400102800004010000007FFFA394E6 -S315400183B0901020327FFFFD2FA4102000C206E160FD -S315400183C080A48001168000151B100144D403616C02 -S315400183D096100001A010200080A4001D3680000CDC -S315400183E0A404A001832C800A9B286002992CA0102A -S315400183F082130010C226000DA004200180A4001D96 -S3154001840006BFFFFC9A036004A404A00180A4800B6C -S3154001841026BFFFF2A01020007FFFE49F90102000AE -S3154001842003000010808A000112BFFFFC010000001A -S31540018430A4102000C206E16080A4800116800114C8 -S31540018440921000127FFFFD8990100018151001440B -S31540018450C202A14C900A0001820E000180A20001D5 -S31540018460A404A00112BFFFF4901020337FFFA36440 -S3154001847001000000C206E16080A4800106BFFFF250 -S3154001848092100012308001027FFFA35D90102001FF -S3154001849010BFFE50833CE00C7FFFE47F901020002C -S315400184A0133FFFF09212603F920A0009A61000089E -S315400184B07FFFE47B901020007FFFE3D2A4102000D1 -S315400184C01303C0009214C0097FFFE4759010200089 -S315400184D080A4801616800009921000129016600042 -S315400184E07FFFFD0494102000A404A00180A48016FF -S315400184F006BFFFFB921000127FFFE3C2010000009E -S315400185007FFFE46590102000913A200A900A2003EB -S3154001851080A2200102800004010000007FFFA338F1 -S315400185209010200201000000921020009016600079 -S315400185307FFFFCE194102000010000007FFFE4561C -S31540018540901020001303C000922A00097FFFE454D3 -S3154001855090102000010000007FFFE3AA0100000007 -S315400185607FFFE44D90102000913A200C900A2003A1 -S3154001857080A2200102BFFE1E010000007FFFA32052 -S315400185809010200330BFFE1A921000127FFFFD4566 -S3154001859090100018901A200580A00008A2647FFF61 -S315400185A0A404A001C206E16080A4800106BFFFF8D1 -S315400185B09210001280A4600012BFFE63173FFFBFF6 -S315400185C030BFFE5E7FFFA30E9010200710BFFE3D19 -S315400185D0A41020007FFFA30A9010200530BFFE2D76 -S315400185E07FFFA3079010201130BFFE997FFFE42A39 -S315400185F090102000033FFFF08210603F920A000175 -S315400186007FFFE42790102000033FFFBFA010638047 -S3154001861092102000941020007FFFFCE2900680100B -S315400186207FFFE41D901020000303C0009212000159 -S315400186307FFFE41B9010200010800006A41020004C -S31540018640900680107FFFFCD794102005A404A0015A -S31540018650C206E16080A4800106BFFFFA92100012B3 -S31540018660033FFFBFA01063809A102001DA2E8010CD -S3154001867003004000D80680108210600580A30001E7 -S3154001868002800004010000007FFFA2DD9010200B54 -S315400186907FFFE40190102000913A2006900A2003C2 -S315400186A080A2200102800004010000007FFFA2D4C5 -S315400186B09010200C7FFFE3F8901020001303C000B8 -S315400186C0922A00097FFFE3F69010200092102000C5 -S315400186D0900680107FFFFCB3941020007FFFE3EEED -S315400186E0901020002103C000921200107FFFE3EC9E -S315400186F0901020007FFFE3E890102000808A001050 -S3154001870002BFFFFDA6100008A4102000C206E160CA -S3154001871080A480011680000E033FFFBF9A102001FE -S31540018720A2106380A12B401D921000129006801169 -S315400187307FFFFC8D94043FFFA404A001C206E160C3 -S3154001874080A4800106BFFFFA921000121303C000F5 -S31540018750922CC0097FFFE3D2901020002103C00074 -S315400187607FFFE3CD90102000808A001012BFFFFDED -S315400187701B004000213FFFBF82142380D8068001A1 -S315400187809A13600580A3000D0280000401000000D9 -S315400187907FFFA29B9010200D7FFFE3BF901020002A -S315400187A0913A2008900A200380A2200122800005E8 -S315400187B0A01423787FFFA2929010200FA014237853 -S315400187C094068010981020119A102055D83A8000AE -S315400187D07FFFE3B1901020000303C0009212000115 -S315400187E0920A7F3F7FFFE3AE90102000A0068010E3 -S315400187F07FFFE3CD9010001010800006A4102000EA -S31540018800900420047FFFFC6794102055A404A00126 -S31540018810C206E16080A4800106BFFFFA92100012F1 -S31540018820113FFFBF901223787FFFE3BF9006800878 -S3154001883080A220111280000480A2605502800004AB -S31540018840010000007FFFA26E901020107FFFE3928F -S3154001885090102000833A20068208600380A06001C0 -S3154001886002800004A61000087FFFA2659010201028 -S31540018870133C3FF09212603F920CC0097FFFE388A0 -S315400188809010200010BFFDDC821020057FFFE3829F -S31540018890901020009212200F7FFFE381901020005C -S315400188A081C7E00891E820009DE3BF987FFFFC93D4 -S315400188B001000000B0100008130020409212600F22 -S315400188C07FFFE377901020000100000081C7E00898 -S315400188D081E80000033FFFBF821063589DE380019A -S315400188E07FFFFBE401000000400002380100000068 -S315400188F07FFFE36990102008A21000087FFFE3661E -S315400189009010200C7FFFA24DA0100008912A200450 -S315400189107FFFA2369002200C973C6014833C60187E -S31540018920953C2014993C201882086003960AE00F72 -S31540018930820060019602E00AA33C6010A13C20102F -S31540018940980B2003940AA00FA728400B98032001F7 -S31540018950A20C6007A00C20079402A00A9A102001DD -S31540018960A2046002A0042002B12B000A03200000E9 -S31540018970AB2B4011A52B40109620401898057FFF40 -S31540018980822040139A04BFFFAE130001A213400B8D -S31540018990210000307FFFE34090102000808A0010C4 -S315400189A012BFFFFD033FFFBF9A07BFF8821063C0A6 -S315400189B0A00340012D155555901000189210001036 -S315400189C07FFFE2C89415A15580A220001280004B7A -S315400189D0292AAAAA92100010901000187FFFE2D50A -S315400189E0941522AA80A220001280004E01000000A8 -S315400189F07FFFA21201000000912A20047FFFA1FB04 -S31540018A009002200A400001EE01000000921522006A -S31540018A10920C400990100018941000119610001203 -S31540018A207FFFE2ED981522AA80A220001280005114 -S31540018A30010000009215A10090100018920C400907 -S31540018A4094100011961000127FFFE2E39815A1558C -S31540018A5080A2200012800044010000007FFFA1F7A0 -S31540018A6001000000912A20047FFFA1E09002200B23 -S31540018A70901000137FFFE2BF9215A15580A22000FE -S31540018A801280003501000000901000137FFFE2B90B -S31540018A90921522AA80A220001280002C010000001B -S31540018AA07FFFA1E601000000912A20047FFFA1CFAC -S31540018AB0900220099010001392100017941000158F -S31540018AC07FFFE2B8961522AA80A220001280001BE1 -S31540018AD00100000090100013921000179410001529 -S31540018AE07FFFE2B09615A15580A2200002800025A5 -S31540018AF0010000003080000E7FFFA1C190102001CF -S31540018B00292AAAAA92100010901000187FFFE28924 -S31540018B10941522AA80A2200002BFFFB601000000E0 -S31540018B207FFFA1B79010200230BFFFB27FFFA1B4F3 -S31540018B3090102008308000137FFFA1B190102007CC -S31540018B4010BFFFE6901000137FFFA1AD90102006E5 -S31540018B5030BFFFD47FFFA1AA9010200510BFFFCCE4 -S31540018B60901000137FFFA1A69010200430BFFFBCD8 -S31540018B707FFFA1A39010200310BFFFB09215A10063 -S31540018B807FFFFB3CB0102000400001900100000037 -S31540018B900100000081C7E00881E800009DE3BF981D -S31540018BA07FFFA18D1100412CDA062004D80620044E -S31540018BB09A0B6003993B200282102007C2262008A7 -S31540018BC0BA036001B20B27FF010000009010200A92 -S31540018BD0C02600007FFFA1850100000017000200AA -S31540018BE082103FFFC226000B032AAAAA1B15555520 -S31540018BF0D806000BAC102000821062AA9A13615568 -S31540018C00AA0B000180A5801D16800038A80B000D17 -S31540018C109612E020A72E600880A4E0000480000C94 -S31540018C20A2102000832DA0028200401819000200E4 -S31540018C309A10000BE820400CEA20400DA204601077 -S31540018C4080A4C01114BFFFFC82006040AC05A001A6 -S31540018C5080A5801D06BFFFF280A4E000AC10200075 -S31540018C6080A5801D1680002103000200B8106020F7 -S31540018C70A72E6008AE10001880A4E00004800017FB -S31540018C80A210200003000200A4060001A005C01C9A -S31540018C90C2048000A2046010A404A04080A0401435 -S31540018CA002800004901020017FFFA15501000000C1 -S31540018CB0C2040000A004204080A0401502800004A8 -S31540018CC0901020017FFFA14E0100000080A4C01139 -S31540018CD014BFFFF001000000AC05A00180A5801D76 -S31540018CE006BFFFE6AE05E0047FFFA1409010200CD1 -S31540018CF0AC10200080A5801D1680008803155555AF -S31540018D009E1061551B000800032AAAAA9A13600403 -S31540018D10901062AAA72E600880A4E0000480000E8D -S31540018D20A2102000832DA0138200401813000800D2 -S31540018D309410000F9610000D98100008D420400999 -S31540018D40D820400BA204600280A4C01114BFFFFCCE -S31540018D5082006008AC05A00180A5801D06BFFFF01A -S31540018D6080A4E000AC10200080A5801D1680006B19 -S31540018D7003155555B81061551B000800032AAAAAC8 -S31540018D80B6136004B41062AAA72E600880A4E0005E -S31540018D9004800019A2102000832DA013A0004018C2 -S31540018DA02F000800AA10001CA810001BA410001ACE -S31540018DB0C2040017A204600280A04015028000048C -S31540018DC0901020037FFFA10E01000000C204001491 -S31540018DD0A004200880A040120280000490102003C5 -S31540018DE07FFFA1070100000080A4C01114BFFFF15D -S31540018DF001000000AC05A00180A5801D06BFFFE56E -S31540018E0080A4E000AC10200080A5801D16800043A0 -S31540018E10030008009E1060041B155555032AAAAA93 -S31540018E209A136155901062AAA72E600880A4E000AB -S31540018E300480000EA2102000832DA013820040184A -S31540018E40130008009410000F9610000D98100008AA -S31540018E50D620400AD8204009A204600280A4C0114D -S31540018E6014BFFFFC82006008AC05A00180A5801DEF -S31540018E7006BFFFF080A4E000AC10200080A5801D55 -S31540018E801680002603155555B81061551B2AAAAA06 -S31540018E9003000800A72E6008B61362AAB410600446 -S31540018EA080A4E00004800019A2102000832DA013A5 -S31540018EB0A00040182F000800AA10001CA810001B93 -S31540018EC0A410001AC2040012A204600280A0401538 -S31540018ED002800004901020047FFFA0C90100000019 -S31540018EE0C2040017A004200880A040140280000498 -S31540018EF0901020047FFFA0C20100000080A4C01191 -S31540018F0014BFFFF101000000AC05A00180A5801D42 -S31540018F1006BFFFE580A4E00082102005C226200896 -S31540018F201B200000DA26000081C7E00881E8000026 -S31540018F3081C3E00891444000808000001510014043 -S31540018F409412A18090102000921022468180000048 -S31540018F50010000000100000001000000D002800075 -S31540018F609122400881C3E008010000008180000091 -S31540018F70901020018090200180D020011280002C89 -S31540018F800100000080D23FFF168000290100000049 -S31540018F9080DA3FFF9340000080A27FFF12800024C9 -S31540018FA00100000080D23FFF9348000093326014D5 -S31540018FB0920A600F80A260081280001D0100000025 -S31540018FC08180000090102001945220049452A00404 -S31540018FD09452A00496A2A040128000150100000000 -S31540018FE0818000009010200280A000003280001095 -S31540018FF09052000880A220021280000D010000005C -S31540019000818000009010200280A000000100000035 -S31540019010328000079052000880A22002128000048C -S315400190200100000081C3E0089010200181C3E008DF -S31540019030901000001315555592126155A5824000B6 -S31540019040010000000100000001000000954480007D -S3154001905080A2400A1280004301000000923A40007B -S31540019060A58240000100000001000000010000004F -S315400190709544800080A2400A1280003A0100000017 -S315400190801100003F901223FFA5800000818000005F -S3154001909001000000010000000100000093F23FFFC3 -S315400190A09A10000993F23FFF93F23FFF93F23FFF7D -S315400190B093F23FFF93F23FFF93F23FFF93F23FFF5D -S315400190C09940000097448000153FFC009412A00887 -S315400190D080A2400A1280002380A2400B1280002108 -S315400190E080A320071280001F113FFF8090122001AC -S315400190F080A340081280001B1100003F901223FFFD -S31540019100A5800000818000000100000001000000F0 -S315400191100100000093FA3FFF93FA3FFF93FA3FFFA6 -S3154001912093FA3FFF93FA3FFF93FA3FFF93FA3FFFCC -S3154001913093FA3FFF994000009744800080A260085F -S315400191401280000880A260081280000680A32000D9 -S31540019150128000040100000081C3E0089010200144 -S3154001916081C3E00890100000818000009010200229 -S3154001917080A00000328000109072000880A2200278 -S315400191801280000D01000000818000009010200235 -S3154001919080A00000010000003280000790720008A4 -S315400191A080A22002128000040100000081C3E00871 -S315400191B09010200181C3E00890100000C0A000403B -S315400191C081C3E00801000000110020409012200FE9 -S315400191D0D0A0004081C3E008010000009DE3BF9894 -S315400191E07FFFE12D90102008A21000087FFFE12AA1 -S315400191F09010200C833C60149B3A2014A13A20180D -S31540019200A33C6018A20C6003A00C20038208600FE7 -S315400192109A0B600F8200600A9A03600AA2046001F9 -S31540019220A0042001A32C40017FFFFFE5A12C000DE6 -S315400192307FFFE090901000117FFFE09C901000109E -S315400192407FFFF98C010000007FFFFFE081E800000D -S315400192500100000098120009818200009AAB2FFF9D -S315400192600280002598880000992300099923000966 -S315400192709923000999230009992300099923000993 -S315400192809923000999230009992300099923000983 -S315400192909923000999230009992300099923000973 -S315400192A09923000999230009992300099923000963 -S315400192B09923000999230009992300099923000953 -S315400192C09923000999230009992300099923000943 -S315400192D09923000999230009992300099923000933 -S315400192E099230009992300099923000081C3E008C5 -S315400192F09140000099230009992300099923000907 -S315400193009923000999230009992300099923000902 -S3154001931099230009992300099923000999230009F2 -S3154001932099230009992300009B400000992B200CAA -S315400193309B33601481C3E0089013400C1080000BEE -S31540019340861020008092400816800008861000088A -S31540019350809240001680000480920000168000032F -S3154001936092200009902000089A9240001280000540 -S315400193709610000891D0200281C3E00890100000A9 -S3154001938080A2C00D0A8000959410000003020000DF -S3154001939080A2C0010A8000289810000080A34001E5 -S315400193A01A80000D841020019B2B600410BFFFFC26 -S315400193B0980320019A83400D1A8000078400A0017A -S315400193C0832860049B3360019A03400110800007A3 -S315400193D08420A00180A3400B0ABFFFF701000000D3 -S315400193E0028000020100000084A0A00106800076F0 -S315400193F0010000009622C00D941020011080000A41 -S3154001940001000000952AA001068000059B336001FA -S315400194109622C00D108000049402A0019602C00D50 -S315400194209422A00184A0A00116BFFFF78092C0003C -S31540019430308000659B2B600480A3400B08BFFFFE74 -S315400194409883200102800065982320018092C00004 -S31540019450952AA0040680002F9B33600196A2C00D79 -S31540019460068000179B33600196A2C00D0680000B53 -S315400194709B33600196A2C00D068000059B336001B7 -S3154001948096A2C00D108000509402A00F9682C00D86 -S315400194901080004D9402A00D9682C00D06800005F5 -S315400194A09B33600196A2C00D108000479402A00B29 -S315400194B09682C00D108000449402A0099682C00D88 -S315400194C00680000B9B33600196A2C00D0680000505 -S315400194D09B33600196A2C00D1080003B9402A00709 -S315400194E09682C00D108000389402A0059682C00D68 -S315400194F0068000059B33600196A2C00D10800032A4 -S315400195009402A0039682C00D1080002F9402A00100 -S315400195109682C00D068000179B33600196A2C00D4E -S315400195200680000B9B33600196A2C00D06800005A4 -S315400195309B33600196A2C00D108000239402BFFFA9 -S315400195409682C00D108000209402BFFD9682C00D08 -S31540019550068000059B33600196A2C00D1080001A5B -S315400195609402BFFB9682C00D108000179402BFF98A -S315400195709682C00D0680000B9B33600196A2C00DFA -S31540019580068000059B33600196A2C00D1080000E37 -S315400195909402BFF79682C00D1080000B9402BFF56E -S315400195A09682C00D068000059B33600196A2C00DD0 -S315400195B0108000059402BFF39682C00D1080000210 -S315400195C09402BFF198A3200116BFFFA28092C0006A -S315400195D0268000029602C0098090C00026800002C3 -S315400195E09620000B81C3E0089010000B92100008F2 -S315400195F09010200094102000961020008213C00085 -S31540019600400000039E104000010000009DE3BF980A -S3154001961023100143400005F6901460F40310006DD9 -S31540019620E0006178D004214880A220002280002DEC -S315400196309004214CD602200480A2E01F1480001D14 -S315400196400100000080A620001280000B94022088B1 -S31540019650832AE0029A02E00182004008DA222004CD -S31540019660F2206008400005FA901460F41080002250 -S31540019670B0102000821020019328400B992AE00265 -S31540019680DA02A1009A1340098203000AF62060809B -S31540019690F422800C80A6200212BFFFEEDA22A1003E -S315400196A0C202A1048210400910BFFFEAC222A104EE -S315400196B0400000139010219080A220000280000BF0 -S315400196C096102000C2042148C2220000D02421481D -S315400196D0C0222004C022218810BFFFDBC022218C7A -S315400196E010BFFFD5D0242148400005D9901460F41D -S315400196F0B0103FFF81C7E00881E8000092100008E2 -S3154001970003100141D00063708213C0004000000A7B -S315400197109E10400001000000921000080310014114 -S31540019720D00063708213C000400002199E104000B1 -S31540019730010000009DE3BF988206600B80A0601681 -S31540019740A610001818800003A0087FF8A01020106A -S3154001975080A400199A4020008334201F8090400D38 -S31540019760128001B0B0102000400001B090100013EB -S3154001977080A421F718800017993420093910014136 -S315400197808217238098040001F003200C80A6000C68 -S315400197900280004E9F342003C206200494087FFCB9 -S315400197A09A06000AC203600482106001D006200CAA -S315400197B0D2062008D2222008C2236004D022600C9F -S315400197C0400001A09010001310800196B0062008B9 -S315400197D080A32000128000289F34200339100141C4 -S315400197E09B2BE003821723809A0340011080000AD5 -S315400197F0F003600C94087FFC9622801080A2E00F53 -S315400198001480010980A2E00036BFFFE79A06000AEC -S31540019810F006200C80A6000D32BFFFF7C2062004D9 -S315400198209E03E001251001419814A388F003200806 -S3154001983080A6000C0280005D833BE01FC206200427 -S3154001984094087FFC9622801080A2E00F1480009F2E -S3154001985080A2E000D823200C06800023D8232008CC -S315400198609A06000AC20360048210600110BFFFD548 -S31540019870C22360048334200680A3200408BFFFD896 -S315400198809E00603880A3201408BFFFD59E03205B4D -S315400198908334200C80A3205408BFFFD19E00606E04 -S315400198A08334200F80A3215408BFFFCD9E006077EB -S315400198B08334201280A3255408BFFFC99E00607CD3 -S315400198C010BFFFC79E10207E98062008F003200C8B -S315400198D080A6000C32BFFFB2C206200410BFFFD2E1 -S315400198E09E03E00280A2A1FF088000BE9B32A00336 -S315400198F09732A00980A2E0002280001796172380A4 -S315400199008332A00680A2E004088000129A006038E3 -S3154001991080A2E0140880000F9A02E05B8332A00C1B -S3154001992080A2E0540880000B9A00606E8332A00F3B -S3154001993080A2E154088000079A0060778332A01222 -S3154001994080A2E554088000039A00607C9A10207E2C -S3154001995096172380832B60039000400BD202200888 -S3154001996080A240082280010F99336002C20260043E -S3154001997082087FFC80A0400A28800007D002600C44 -S31540019980D202600880A2400832BFFFFAC2026004D8 -S31540019990D002600CD026200CD2262008F022600C82 -S315400199A0F0222008833BE01F8330601E8203C00102 -S315400199B03910014183386002981723809A1020019B -S315400199C0932B4001D803200480A2400C1880004B01 -S315400199D0AE172380808B00091280000D03100141D0 -S315400199E0820BFFFC92024009808B0009128000071E -S315400199F09E0060048210000C920240098088400952 -S31540019A0002BFFFFE9E03E00403100141A2106380E2 -S31540019A10A8100011832BE003980040119010000F0D -S31540019A209A10000C1080000AF003600C94087FFC29 -S31540019A309622801080A2E00F1480007D80A2E00073 -S31540019A403680008B9A06000AF006200C80A6000D8F -S31540019A5032BFFFF7C20620049E03E001808BE0037C -S31540019A6012BFFFF19A036008808A200398033FF8EA -S31540019A70028000D490023FFFC203200880A0400C20 -S31540019A8002BFFFFB808A200392024009C2052004DF -S31540019A9080A24001188000183910014180A260005F -S31540019AA0128000068088400910800014AE1723807A -S31540019AB09E03E0048088400922BFFFFE92024009CE -S31540019AC010BFFFD6832BE0038214200194060010B9 -S31540019AD0C2262004D423200CD42320088212E0017C -S31540019AE0D622800BD822A008C222A00410BFFF357F -S31540019AF0D822A00CAE172380F005E008C206200448 -S31540019B00AA087FFC80A540109A4020009625401067 -S31540019B1080A2E00F14800042821020018093400110 -S31540019B200280002703100143DA0061982D1001419C -S31540019B309A04000DC205A378A810001580A07FFFE6 -S31540019B40A203601002800004A406001582046FFF80 -S31540019B50A208700090100013400000C0921000113E -S31540019B6080A23FFF02800008B210000880A20012C6 -S31540019B701A8000463B10014380A60017228000440C -S31540019B80C207616882172380D8006008DA0320047F -S31540019B909A0B7FFC80A340109840200096234010EA -S31540019BA080A2E00F04800003821020018210200071 -S31540019BB080930001128000980100000098172380CD -S31540019BC0F003200882142001C22620049A060010C0 -S31540019BD08212E001C223600410BFFEFADA23200894 -S31540019BE098033FF8832B60039000400C9B3360023F -S31540019BF0821020018328400DD2022008DA03200476 -S31540019C009A134001D026200CD2262008F022600C5F -S31540019C10DA23200410BFFF64F022200810BFFFC0E2 -S31540019C208210200010BFFEFF9E03FFFFD006200CCE -S31540019C30D20620089A142001940600108214A388A3 -S31540019C40D2222008D022600CDA262004D420600CCF -S31540019C50D42060089A12E001D622800BC222A008C5 -S31540019C60DA22A00410BFFED7C222A00CC2036004B0 -S31540019C7082106001D006200CD2062008C22360045F -S31540019C8010BFFECFD2222008C20761688200401170 -S31540019C9080A640120280004FC2276168C205A378A0 -S31540019CA080A07FFF02800045C20761689A26401264 -S31540019CB08200400DC22761689A8E600702800005C6 -S31540019CC0A410200082102008A420400DB2064012A4 -S31540019CD09A0640119A0B6FFF030000048220400D43 -S31540019CE0A4048001901000134000005C9210001201 -S31540019CF080A23FFF2280003FA4102000822200194B -S31540019D009000401282172380DA0761689A03401255 -S31540019D1080A60001F2206008DA27616802800037D8 -S31540019D208212200180A5600F38800005C22660049A -S31540019D308210200110BFFF94C2266004C20620048F -S31540019D409A057FF4A80B7FF88208600182104014BF -S31540019D50C22620049A06001482102005C2236008F8 -S31540019D6080A5200F18800027C223600419100143E3 -S31540019D70DA076168C203219480A34001388000025A -S31540019D80DA23219419100143C203219080A3400193 -S31540019D9038BFFF7DDA23219010BFFF7C82172380D5 -S31540019DA09A102001C202E0049B2B400C8210400D08 -S31540019DB010BFFEF9C222E00410BFFFC0F225A3780E -S31540019DC0C20460048228400910BFFF30C2246004E7 -S31540019DD0808E6FFF12BFFFB3C205A3789004401473 -S31540019DE0DA05E0088212200110BFFFE1C2236004B8 -S31540019DF010BFFFC39010001910BFFFDDC2266004DB -S31540019E0092062008400000629010001310BFFFD94F -S31540019E10191001434000000B90100013B0102000B0 -S31540019E2081C7E00881E800001110014290122388A1 -S31540019E308213C000400003EE9E1040000100000066 -S31540019E4011100142901223888213C0004000040081 -S31540019E509E104000010000009DE3BF98211001447F -S31540019E60C02421704000020D9010001980A23FFFCE -S31540019E7012800006C204217080A0600002800003A7 -S31540019E8001000000C226000081C7E00891E80008F1 -S31540019E909DE3BF987FFFFFE5901000180310014135 -S31540019EA0A2106380DA046008C2036004A0087FFC44 -S31540019EB0B2240019B2066FEFB20E7000B2067000FE -S31540019EC09210200080A66FFF0480000A90100018AF -S31540019ED07FFFFFE201000000C204600882004010DB -S31540019EE080A04008922000190280000590100018B9 -S31540019EF07FFFFFD4B0102000308000237FFFFFD7C3 -S31540019F00901000188224001980A23FFF8210600140 -S31540019F1092102000191001430280000B9010001886 -S31540019F20DA046008C2236004C20321688220401912 -S31540019F30901000187FFFFFC3C223216810800012D2 -S31540019F40B01020017FFFFFC50100000098100008F6 -S31540019F50D6046008A023000B9010001880A4200F9F -S31540019F6004BFFFE4B214200103100141DA00637813 -S31540019F709A23000D03100143DA20616810BFFFDD0B -S31540019F80F222E00481C7E00881E800009DE3BF9822 -S31540019F9080A660000280009DA41000187FFFFFA3E9 -S31540019FA090100018A0067FF8D6042004900AFFFE00 -S31540019FB01910014194040008A2132380DA02A00477 -S31540019FC0C204600880A0400A028000449E0B7FFCC8 -S31540019FD0808AE001DE22A0041280000CB01020002D -S31540019FE0F2067FF8A024001982046008DA042008EA -S31540019FF080A340010280007D90020019D204200C0A -S3154001A000DA226008D223600C8202800FDA006004F3 -S3154001A010808B60011280000A8212200180A62000F6 -S3154001A020028000229002000FDA02A008D202A00CA0 -S3154001A030DA226008D223600C82122001C224200455 -S3154001A04080A6200002800005D0240008B01000122E -S3154001A0507FFFFF7C81E8000080A221FF1880003647 -S3154001A060973220099B32200398132380832B600368 -S3154001A0709200400C9B336002821020018328400DE0 -S3154001A080D6026008DA0320049A134001D224200C38 -S3154001A090D6242008E022E00CDA232004E0226008DE -S3154001A0A010BFFFECB010001203100141DA02A00804 -S3154001A0B08210638880A3400132BFFFDED202A00C2A -S3154001A0C0E023600CE0236008DA242008DA24200C1F -S3154001A0D010BFFFDAB0102001808AE001128000092A -S3154001A0E09002000FF2067FF8A0240019D204200C3A -S3154001A0F0D6042008D622600890020019D222E00C2C -S3154001A10003100141DA00637C98122001E0246008C3 -S3154001A11080A2000D0ABFFFCFD824200403100143BB -S3154001A120D20061987FFFFF5B901000127FFFFF45D1 -S3154001A13081E8000080A2E000028000169B322003E5 -S3154001A1408332200680A2E004088000129A0060381B -S3154001A15080A2E0140880000F9A02E05B8332200C53 -S3154001A16080A2E0540880000B9A00606E8332200F73 -S3154001A17080A2E154088000079A006077833220125A -S3154001A18080A2E554088000039A00607C9A10207EE4 -S3154001A19094132380832B60039200400AD602600801 -S3154001A1A080A2C0090280001399336002C202E00412 -S3154001A1B082087FFC80A0400828800007D202E00C7C -S3154001A1C0D602E00880A2C00932BFFFFAC202E0040B -S3154001A1D0D202E00CD224200CD6242008E022E00C46 -S3154001A1E010BFFFB0E022600810BFFF88B010200109 -S3154001A1F09A102001C202A0049B2B400C8210400DF4 -S3154001A20010BFFFF5C222A00481C7E00881E8000023 -S3154001A2109DE3BF98D206400080A2600012800004F0 -S3154001A220901000187FFFFF5A81E800007FFFFFF979 -S3154001A230010000007FFFFF5681E800000100000099 -S3154001A2409DE3BF9803100141DA00637080A6000DBB -S3154001A2500280004101000000D206204C80A260002D -S3154001A2601280001CA0102000D206214880A2600066 -S3154001A2702280000FD2062054A006214C80A2401015 -S3154001A2802280000BD206205410800005B21000092E -S3154001A290F20640007FFFFF3E9010001880A400198F -S3154001A2A012BFFFFC92100019D206205480A2600012 -S3154001A2B01280002501000000C206203880A06000FF -S3154001A2C0028000250100000010800017C206203CD4 -S3154001A2D0832C2002F202400180A660002280000BFE -S3154001A2E0A004200192100019F20640007FFFFF28CA -S3154001A2F09010001880A6600012BFFFFC9210001952 -S3154001A300D206204CA004200180A4200E04BFFFF2F7 -S3154001A310832C20027FFFFF1E9010001810BFFFD430 -S3154001A320D20621489FC0400090100018F20622E054 -S3154001A33080A6600002800008010000007FFFFFB593 -S3154001A34081E800007FFFFF129010001810BFFFDC6C -S3154001A350C206203881C7E00881E800009DE3BF9826 -S3154001A36080A620000280001D03100141E406214819 -S3154001A37080A4A00022800013C206203CE204A0046F -S3154001A380A2847FFF0C80000A832C60028200401267 -S3154001A390A0006008C20400009FC04000A0043FFC2A -S3154001A3A0A2847FFF3CBFFFFDC2040000E40480009D -S3154001A3B080A4A00032BFFFF3E204A004C206203C01 -S3154001A3C080A0600002800007010000009FC040009D -S3154001A3D0901000183080000310BFFFE5F000637055 -S3154001A3E081C7E00881E800001080000B861020003C -S3154001A3F08092400816800008861A400880924000E4 -S3154001A4001680000480920000168000039220000905 -S3154001A410902000089A92400012800005961000088C -S3154001A42091D0200281C3E0089010000080A2C00DA7 -S3154001A4300A800095941000000302000080A2C0012A -S3154001A4400A8000289810000080A340011A80000D60 -S3154001A450841020019B2B600410BFFFFC9803200150 -S3154001A4609A83400D1A8000078400A0018328600466 -S3154001A4709B3360019A034001108000078420A001AC -S3154001A48080A3400B0ABFFFF70100000002800002D3 -S3154001A4900100000084A0A0010680007601000000B2 -S3154001A4A09622C00D941020011080000A0100000080 -S3154001A4B0952AA001068000059B3360019622C00DB6 -S3154001A4C0108000049402A0019602C00D9422A001BE -S3154001A4D084A0A00116BFFFF78092C00030800065BE -S3154001A4E09B2B600480A3400B08BFFFFE988320018D -S3154001A4F002800065982320018092C000952AA0041D -S3154001A5000680002F9B33600196A2C00D068000177E -S3154001A5109B33600196A2C00D0680000B9B33600100 -S3154001A52096A2C00D068000059B33600196A2C00D20 -S3154001A530108000509402A00F9682C00D1080004DED -S3154001A5409402A00D9682C00D068000059B336001E2 -S3154001A55096A2C00D108000479402A00B9682C00DB2 -S3154001A560108000449402A0099682C00D0680000B1B -S3154001A5709B33600196A2C00D068000059B336001A6 -S3154001A58096A2C00D1080003B9402A0079682C00D92 -S3154001A590108000389402A0059682C00D0680000501 -S3154001A5A09B33600196A2C00D108000329402A00335 -S3154001A5B09682C00D1080002F9402A0019682C00D94 -S3154001A5C0068000179B33600196A2C00D0680000BE2 -S3154001A5D09B33600196A2C00D068000059B33600146 -S3154001A5E096A2C00D108000239402BFFF9682C00D33 -S3154001A5F0108000209402BFFD9682C00D06800005A2 -S3154001A6009B33600196A2C00D1080001A9402BFFBD5 -S3154001A6109682C00D108000179402BFF99682C00D34 -S3154001A6200680000B9B33600196A2C00D0680000593 -S3154001A6309B33600196A2C00D1080000E9402BFF7B5 -S3154001A6409682C00D1080000B9402BFF59682C00D14 -S3154001A650068000059B33600196A2C00D108000055F -S3154001A6609402BFF39682C00D108000029402BFF19E -S3154001A67098A3200116BFFFA28092C0002680000247 -S3154001A6809422A0018090C000268000029420000AF6 -S3154001A69081C3E0089010000A19100144DA032174BD -S3154001A6A080A3600012800006820340080310014423 -S3154001A6B09A106188DA23217482034008C2232174E7 -S3154001A6C081C3E0089010000DA7500000AE100001B4 -S3154001A6D08334E00129100143E8052038A92CC01430 -S3154001A6E08215000181E000008190400001000000D8 -S3154001A6F00100000001000000E03BA000E43BA0088F -S3154001A700E83BA010EC3BA018F03BA020F43BA0286E -S3154001A710F83BA030FC3BA03881E8000082100017CE -S3154001A72081C4400081CC800001000000010000008E -S3154001A73001000000A7500000A92CE0012B100143A5 -S3154001A740EA056038AB34C015AA154014819540001E -S3154001A75001000000010000000100000081E8000046 -S3154001A76081E80000E01BA000E41BA008E81BA01044 -S3154001A770EC1BA018F01BA020F41BA028F81BA0304E -S3154001A780FC1BA03881E0000081E0000081C440004C -S3154001A79081CC8000A75000002910006CADC5210472 -S3154001A7A00100000027100143A614E018E024C00070 -S3154001A7B0818C202001000000010000000100000002 -S3154001A7C09DE3BFA09DE3BFA09DE3BFA09DE3BFA0C6 -S3154001A7D09DE3BFA09DE3BFA09DE3BFA081E800002C -S3154001A7E081E8000081E8000081E8000081E800007E -S3154001A7F081E8000081E8000027100143A614E01813 -S3154001A800C024C000E203A068A4046004E223A0645B -S3154001A810E423A06810800262AC10000029100142B6 -S3154001A820A81523FCC2252000C8252004E0252010B8 -S3154001A830E2252014E4252018E825201C81E80000A3 -S3154001A8408348000082106F0081886020010000006B -S3154001A850010000000100000009100143C801203831 -S3154001A86081E000008821200180A920FF02800003A9 -S3154001A870010000000100000080A1000012BFFFF9A5 -S3154001A8800100000009100143C801203881E8000099 -S3154001A89080A920FF028000030100000001000000A2 -S3154001A8A08821200180A1000012BFFFF901000000AC -S3154001A8B081E0000029100142A81523FCC8052004A7 -S3154001A8C0C2052000E0052010E2052014E405201809 -S3154001A8D0C025201C818C20000100000001000000E1 -S3154001A8E00100000081C4800081CCA004A0142F0087 -S3154001A8F0818C000001000000010000000100000001 -S3154001A90081C4800081CCA00480A66002128000052B -S3154001A910A8142F00818D0000B01420203080001F24 -S3154001A92080A6600312800006A80E2F00AA2C2F00D5 -S3154001A930A8154014818D00003080001880A660045F -S3154001A94012800008A9480000A8152040818D00000A -S3154001A9500100000001000000010000003080000FEE -S3154001A96080A6600512800008A9480000A82D204055 -S3154001A970818D00000100000001000000010000007F -S3154001A9803080000680A660061280000301000000A8 -S3154001A99030BFFFA391D0200081C4800081CCA004A8 -S3154001A9A09210200381C3E00891D020029210200228 -S3154001A9B081C3E00891D020029210200681C3E008AD -S3154001A9C091D0200281C3E0080100000081C3E00864 -S3154001A9D00100000081C3E00801000000AE25A0107F -S3154001A9E0A75000002D10006AAC15A1F02910006C8B -S3154001A9F081C522AC010000001110014390122024B0 -S3154001AA00D202000092026001D2220000932DE0089A -S3154001AA10902C2F0092120009111001439012201C14 -S3154001AA20D002000080A000082280000292126F002E -S3154001AA30818A602001000000010000000100000041 -S3154001AA4090100017400000319203A06092142F002D -S3154001AA50818A602001000000010000000100000021 -S3154001AA601110014390122024D2020000922260016B -S3154001AA70D22200001080022DAC1000001B100144B0 -S3154001AA809A13602C912A2002C2034008C222600C0C -S3154001AA9081C3E008D22340089DE3BF9803100144D7 -S3154001AAA08210602C992E60021B100143972E600480 -S3154001AAB0D800400C9A13622C901000199202C00DD6 -S3154001AAC080A6601F1480000F8210200010800006AF -S3154001AAD080A320002280000AC2024000D803200C35 -S3154001AAE080A3200012BFFFFC80A300097FFFFFE483 -S3154001AAF0F02240001080000382102000F022400026 -S3154001AB0081C7E00891E800019DE3BF981B1001430E -S3154001AB1082136028D800600480A300180280004494 -S3154001AB20C203602880A6200022800002B010000CDB -S3154001AB3003100144A32E20028210602CE000401134 -S3154001AB4080A420000280003D0310014310800012C2 -S3154001AB50A41061A8D2042008941000199FC30000D4 -S3154001AB609010001803100143C20061A080A060004C -S3154001AB701280002B01000000C204801182007FFF79 -S3154001AB80C2248011E004200C80A420000280002B06 -S3154001AB9001000000D804000080A3200022BFFFFB73 -S3154001ABA0E004200C03100143DA00622880A3600010 -S3154001ABB0128000089610001203100143821061A80A -S3154001ABC0DA00401180A3600032BFFFF0E004200CA0 -S3154001ABD0DA02C011031001439A036001C20061A465 -S3154001ABE080A0600002BFFFDCDA22C0119FC0400096 -S3154001ABF001000000D8040000D20420089410001976 -S3154001AC009FC300009010001803100143C20061A0C9 -S3154001AC1080A0600022BFFFDAC20480119FC04000BD -S3154001AC200100000010BFFFD6C2048011DA0060C0E7 -S3154001AC3010BFFFBDB00B601F81C7E00881E800006F -S3154001AC408C10000FA74800008B34E0188A09600F6A -S3154001AC5080A160030280000C0B1001438A11603011 -S3154001AC600920000088112070C82140000B100143C3 -S3154001AC708A1160500920000088112040C8214000F7 -S3154001AC80108000399010200192102006400001DD0D -S3154001AC900100000080A0000802800033010000008E -S3154001ACA0C2022010113FFC0082084008110003FC3B -S3154001ACB08410400890100002921020019410200C3C -S3154001ACC0400001E60100000080A000080280002645 -S3154001ACD001000000400001F6921000010B100143F3 -S3154001ACE08A116030D221400090100002921020015A -S3154001ACF094102011400001D90100000080A00008F5 -S3154001AD000280001901000000400001E99210000193 -S3154001AD10920260100B1001438A116050D22140000B -S3154001AD2090100002921020019410200D400001CB9A -S3154001AD300100000080A000080280000B0100000015 -S3154001AD40400001DB921000010B1001438A1160287B -S3154001AD50D2214000D40260109532A010940AA00F6F -S3154001AD60D42160049E10000681C3E0080100000062 -S3154001AD7003100143821060488210200191D02000C7 -S3154001AD8081C3E008010000009DE3BF980310014420 -S3154001AD90C20060C8901000189210001980A060008F -S3154001ADA002800005B01020009FC040000100000055 -S3154001ADB0B010000881C7E00881E800009DE3BF9814 -S3154001ADC003100144C20060C49010001880A06000C6 -S3154001ADD002800005B01020009FC040000100000025 -S3154001ADE0B010000881C7E00881E800009DE3BF98E4 -S3154001ADF003100144C20060BC9010001880A060009E -S3154001AE0002800005B01020009FC0400001000000F4 -S3154001AE10B010000881C7E00881E800009DE3BF98B3 -S3154001AE2003100144C20060C09010001880A0600069 -S3154001AE3002800005B01020009FC0400001000000C4 -S3154001AE40B010000881C7E00881E800009DE3BF9883 -S3154001AE5003100144C20060B89010001880A0600041 -S3154001AE6002800005B01020009FC040000100000094 -S3154001AE70B010000881C7E00881E800009DE3BF9853 -S3154001AE8003100144C20060B49010001880A0600015 -S3154001AE9002800005B01020009FC040000100000064 -S3154001AEA0B010000881C7E00881E800009DE3BF9823 -S3154001AEB003100144C20060B09010001880A06000E9 -S3154001AEC002800005B01020009FC040000100000034 -S3154001AED0B010000881C7E00881E800009DE3BF98F3 -S3154001AEE003100144C20060AC901000189210001982 -S3154001AEF080A0600002800005B01020009FC0400085 -S3154001AF0001000000B010000881C7E00881E8000098 -S3154001AF10010000000310006B821063E09FC04000F7 -S3154001AF20010000000310000082106000819840007B -S3154001AF300310006C821060649FC040000100000055 -S3154001AF400310006B821063D09FC0400001000000D7 -S3154001AF508B4800008B3160188A09600380A1600329 -S3154001AF6012800007010000008B4440008B31601CB9 -S3154001AF7080A1400012800006010000007FFFFF31E2 -S3154001AF80010000007FFF9879010000009C23A0404A -S3154001AF907FFF981C010000008210200191D0200003 -S3154001AFA00100000029000004A68C00143280000331 -S3154001AFB0A02C001491D02000818C000001000000DB -S3154001AFC0010000000100000081C4800081CCA00482 -S3154001AFD081C3E0080100000081C1E00801000000D2 -S3154001AFE0A74800008B34E0188A09600380A16003FA -S3154001AFF0128000080100000021100143A0142040E6 -S3154001B000A2102003E22400008B4440001080000877 -S3154001B01021100143A0142040A2102002E224000086 -S3154001B02021200000E60420248B34E0148A09601FA5 -S3154001B03027100143A614E038CA24C0008A016001E2 -S3154001B04027100143A614E034CA24C0002710014347 -S3154001B050A614E03C8A216002CA24C00081C3E008EC -S3154001B0600100000081C3E0080100000083480000A0 -S3154001B070833060188208600380A060031280000656 -S3154001B0800100000083444000050000088228400278 -S3154001B090A3804000881000000910006B81C1231471 -S3154001B0A0010000009DE3BF980310006D1B10006D69 -S3154001B0B0A01061609A13616080A4000D1A8000108F -S3154001B0C0A210000D10800006C204000080A40011E9 -S3154001B0D01A80000B01000000C204000080A060003D -S3154001B0E002BFFFFBA00420049FC0400001000000F6 -S3154001B0F080A400112ABFFFFAC204000081C7E008FC -S3154001B10081E80000AA27A0B0E0256060E2256064DE -S3154001B110E4256068C2256074C43D6078C83D60809E -S3154001B120CC3D608885400000C425606CF03D609050 -S3154001B130F43D6098F83D60A0FC3D60A8A810200150 -S3154001B140A92D0010808D001302800013010000001C -S3154001B1508534E00107100143C600E038A72CC0033F -S3154001B1608414C0028408A0FF81E000008190A00001 -S3154001B170E03BA000E43BA008E83BA010EC3BA01854 -S3154001B180F03BA020F43BA028F83BA030FC3BA03884 -S3154001B19081E8000081C5A0089C10001505100143F7 -S3154001B1A08410A19CC400800080A08000028000041D -S3154001B1B0010000009FC080009203A060818C2000A6 -S3154001B1C0821020028328401005100143C400A03498 -S3154001B1D085304002821040028550000080888001FF -S3154001B1E0028000208328A00107100143C600E038F1 -S3154001B1F08530800382104002820860FF81906000A2 -S3154001B200C203A06C81806000F01BA090F41BA09843 -S3154001B210F81BA0A0FC1BA0A8C203A074C41BA07865 -S3154001B220C81BA080CC1BA088E003A060E203A064F9 -S3154001B230E403A06881E80000E01BA000E41BA0082D -S3154001B240E81BA010EC1BA018F01BA020F41BA028A3 -S3154001B250F81BA030FC1BA0381080000F81E00000D5 -S3154001B260C203A06C81806000F01BA090F41BA098E3 -S3154001B270F81BA0A0FC1BA0A8C203A074C41BA07805 -S3154001B280C81BA080CC1BA088E003A060E203A06499 -S3154001B290E403A068818C2000010000000100000049 -S3154001B2A00100000081C4400081CC8000AA27A0B0E3 -S3154001B2B0C2256074C43D6078C83D6080CC3D6088DD -S3154001B2C085400000C425606CA8102001A92D0010FE -S3154001B2D0808D001302800013010000008534E001D7 -S3154001B2E007100143C600E038A72CC0038414C002EE -S3154001B2F08408A0FF81E000008190A000E03BA0000F -S3154001B300E43BA008E83BA010EC3BA018F03BA02092 -S3154001B310F43BA028F83BA030FC3BA03881E8000074 -S3154001B32081C5A0089C100015051001438410A19CFD -S3154001B330C400800080A0800002800004010000005B -S3154001B3409FC080009203A060818C20008210200261 -S3154001B3508328401005100143C400A03485304002C3 -S3154001B36082104002855000008088800102800019C9 -S3154001B3708328A00107100143C600E03885308003C9 -S3154001B38082104002820860FF81906000C203A06C77 -S3154001B39081806000C203A074C41BA078C81BA08032 -S3154001B3A0CC1BA08881E80000E01BA000E41BA0089C -S3154001B3B0E81BA010EC1BA018F01BA020F41BA02832 -S3154001B3C0F81BA030FC1BA0381080000881E000006B -S3154001B3D0C203A06C81806000C203A074C41BA07824 -S3154001B3E0C81BA080CC1BA088818C200001000000D6 -S3154001B3F0010000000100000081C4400081CC8000B2 -S3154001B400821000089A10380096102000912AE00513 -S3154001B41098034008D40340089132A01880A2000145 -S3154001B420328000089602E0019132A00C900A2FFF6B -S3154001B43080A20009028000079410000C9602E001E8 -S3154001B44080A2E00728BFFFF3912AE005941020006F -S3154001B45081C3E0089010000A82100008981020006D -S3154001B460912B20039A004008D60040089132E018FB -S3154001B47080A2000932800008980320019132E00C35 -S3154001B480900A2FFF80A2000A028000079610000D45 -S3154001B4909803200180A3200F28BFFFF3912B20039F -S3154001B4A09610200081C3E0089010000BD4022004BE -S3154001B4B0173FFC00920A400B900A800B9132200CF8 -S3154001B4C0921240081100003F901223F0940A80081E -S3154001B4D0952AA0049412800B920A400A81C3E0087F -S3154001B4E0901000099DE3BF980310006D82106148DA -S3154001B4F0DA007FFC80A37FFF02800009A0007FFC69 -S3154001B5008210000D9FC04000A0043FFCC204000011 -S3154001B51080A07FFF12BFFFFC0100000081C7E00849 -S3154001B52081E800009DE3BF9881C7E00881E80000FB -S3154001B53000000000000000000000000000000000C4 -S3154001B54000000002FFFFFFFF0000000000000000B6 -S3154001B55000000002FFFFFFFF0000000000000000A6 -S3154001B56040080000000000003CD203AF9EE756169B -S3154001B5703E7AD7F29ABCAF4840050220000000004F -S3154001B580430000009DE3BFA07FFF96DB0100000062 -S3154001B5907FFFFFD50100000081C7E00881E8000078 -S3154001B5A09DE3BFA07FFF96B60100000081C7E0087A -S3154001B5B081E80000000000000000000000000000DB -S315400200000000000100000000000000004001B55859 -S315400200102000000000000000000000000000000078 -S315400200200000000000000000000000000000000088 -S315400200300000000000000000000000000000000078 -S315400200400000000000000000000000000000000068 -S315400200500000000000000000000000010000000057 -S315400200600000000000000000000000000000000048 -S315400200700000000000000000000000000000000038 -S315400200800000000000000000000000000000000028 -S315400200900000000000000000000000000000000117 -S315400200A00000000000000000000000000000000008 -S315400200B000000000000000000000000000000000F8 -S315400200C000000000000000000000000000000000E8 -S315400200D000000000000000000000000000000000D8 -S315400200E00000000100000000000000410000000086 -S315400200F0343074693934612B3079676979753035B2 -S315400201007968617035796934682B612B69697978C8 -S315400201106869346B35396A30713930356A6B6F7953 -S3154002012070686F70746A72686961346979302B34A9 -S315400201300000000000000000000000010000000076 -S3154002014040000000000000004008000000000000DF -S31540020150401800000000000080000000000000007F -S315400201600000000000000000BFF000000000000098 -S31540020170BF800000000000000000000000000000F8 -S315400201800000000000000000000000000000000027 -S315400201903FF00000000000004008000000000000A0 -S315400201A03FF0000040000000000000000000000098 -S315400201B03F800000404000000000000000000000B8 -S315400201C000000000000000000000000000000000E7 -S315400201D0000000000000000048000001000000008E -S315400201E0480000000000000046C000000000000079 -S315400201F03FF0000000000000400000000000000048 -S3154002020040080000000000003F800000000000009F -S31540020210529000000000000052900FF807F60DEBD6 -S3154002022052901FE03F61BAD052902FB8D4E30F48A4 -S3154002023052903F81F636B80C52904F3BD03C0A64FE -S3154002024052905EE68EFAD48B52906E825DA8FC2B5B -S3154002025052907E0F66AFED0752908D8DD3B1D9AADB -S3154002026052909CFDCD8ED0095290AC5F7C69A3C85A -S315400202705290BBB307ACAFDB5290CAF8960E710DE3 -S315400202805290DA304D95FB065290E95A539F492CCB -S315400202905290F876CCDF6CD952910785DD689A295F -S315400202A052911687A8AE14A35291257C5187FD0917 -S315400202B052913463FA37014E5291433EC467EFFB83 -S315400202C05291520CD1372FEB529160CE41341D746C -S315400202D052916F8334644DF952917E2BCA46BAB914 -S315400202E052918CC821D6D3E352919B58598F7C9F09 -S315400202F05291A9DC8F6DF1045291B854E0F496A064 -S315400203005291C6C16B2DB8705291D5224AAE2EE19A -S315400203105291E3779B97F4A85291F1C1799CA8FF39 -S31540020320529200000000000052920E33499A21A9CF -S3154002033052921C5B70D9F82452922A788FC76DE587 -S315400203405292388AC0059C28529246921AD4EA4959 -S315400203505292548EB9151E8552926280B347609668 -S315400203605292706821902E9A52927E451BB944C38E -S3154002037052928C17B9337834529299E01118857596 -S315400203805292A79E3A2CD2E65292B5524AE1278E13 -S315400203905292C2FC595456A75292D09C7B54E03E8C -S315400203A05292DE32C66287415292EBBF4FAFDD4B6D -S315400203B05292F9422C23C47E529306BB705AE7C32B -S315400203C05293142B30A929AB52932191811B0A4196 -S315400203D052932EEE7577041652933C42213EE0C963 -S315400203E05293498C97B10540529356CDEBC9B5E22B -S315400203F0529364063044530652937135779C8DCBA3 -S3154002040052937E5BD40F95A152938B79579D3EAB07 -S315400204105293988E1409212E5293A59A1ADBB257FB -S315400204205293B29D7D6356625293BF984CB56C7798 -S315400204305293CC8A99AF54535293D97474F76DF24E -S315400204405293E655EEFE13675293F32F17FE8D0431 -S31540020450529400000000000052940CC8B6D657C20F -S31540020460529419894C2329F052942641CF569572BB -S31540020470529432F24FB01C7A52943F9ADC3F79CE74 -S3154002048052944C3B83E57153529458D455549C1A1A -S31540020490529465655F122FF6529471EEAF76C2C6DC -S315400204A052947E7054AF098952948AEA5CBC935F37 -S315400204B05294975CD57680885294A3C7CC8A358A63 -S315400204C05294B02B4F7C0A885294BC876BA7F6ECA9 -S315400204D05294C8DC2E4239805294D529A457FCFC4A -S315400204E05294E16FDACFF9375294EDAEDE6B10FEDD -S315400204F05294F9E6BBC4ECB3529506177F5491BBAE -S3154002050052951241356CF6E052951E63EA3D95B01E -S3154002051052952A7FA9D2F8EA529536948017481006 -S31540020520529542A278D2D03652954EA99FAC8A0FA6 -S3154002053052955AAA002A9D5A529566A3A5B2E1B18E -S31540020540529572969B8B5CD852957E82ECDABE8D22 -S3154002055052958A68A4A8D9F352959647CDDF1CA531 -S315400205605295A220734903775295ADF29F948CFB24 -S315400205705295B9BE5D52A9DA5295C583B6F7AB0319 -S315400205805295D142B6DBADC55295DCFB673B05DFE2 -S315400205905295E8ADD236A58F5295F45A01D483B41A -S315400205A0529600000000000052960B9FD68A455490 -S315400205B0529617398F2AAA48529622CD337F0FE890 -S315400205C052962E5ACD0C3EBE529639E2653E421B9B -S315400205D0529645640568C1C3529650DFB6C759F470 -S315400205E052965C55827DF1D2529667C57199104BEF -S315400205F05296732F8D0E2F7752967E93DDBC0E73D5 -S31540020600529689F26C6B01D05296954B41CD4293EC -S315400206100BC0A4068F346C9B0BC093731C185447B3 -S315400206200BC083008E183C230BC072AE83A9704A5E -S315400206300BC0627C9CC166FF0BC0526A7ACE64A430 -S315400206400BC04277C0B04ADA0BC032A412B191A0B5 -S315400206500BC022EF168069500BC0135873280473DF -S315400206600BC003DFD10A08480BBFE909B3B04632D3 -S315400206700BBFCA8E711B8E880BBFAC4D32D4143061 -S315400206800BBF8E4553D34B1B0BBF7076318237EF70 -S315400206900BBF52DF2BADF99C0BBF357FA47C936C0D -S315400206A00BBF18570061F5EB0BBEFB64A61545154B -S315400206B00BBEDEA7FE865A2B0BBEC22074D37FBC6E -S315400206C00BBEA5CD763F66690BBE89AE722750F04A -S315400206D00BBE6DC2D9F976230BBE520A212B976CFB -S315400206E00BBE3683BD31CAA20BBE1B2F257575CAFA -S315400206F00BBE000BD34C7BAF0BBDE51941F097FE09 -S315400207000BBDCA56EE76E9D00BBDAFC457C7AB7325 -S315400207100BBD9560FE9616690BBD7B2C65587275AE -S315400207200BBD612610404EC00BBD474D8532E409D4 -S315400207300BBD2DA24BC19EDF0BBD1423ED22D10171 -S315400207400BBCFAD1F42A88E40BBCE1ABED438E80B4 -S315400207500BBCC8B1666884820BBCAFE1EF1D2D01AC -S315400207600BBC973D1867D0EF0BBC7EC274CAC962F8 -S315400207700BBC6671983E29FE0BBC4E4A18298BA9C2 -S315400207800BBC364B8B5DF6DB0BBC1E758A0FECBF82 -S315400207900BBC06C7ADD18E7E0BBBEF41918CE1F609 -S315400207A00BBBD7E2D17E33360BBBC0AB0B2E921BB3 -S315400207B00BBBA999DD6E6B650BBB92AEE8503CA7AD -S315400207C00BBB7BE9CD2362720BBB654A2E6F002CB5 -S315400207D00BBB4ECFAFED00FE0BBB3879F685313FF2 -S315400207E00BBB2248A8486FDE0BBB0C3B6C6BF73B3E -S315400207F00BBAF651EB44BCEE0BBAE08BCE42E7F1B4 -S315400208000BBACAE8BFED5CC00BBAB5686BDD5EDDFC -S315400208100BBAA00A7EBA475E0BBA8ACEA6354FEB12 -S315400208200BBA75B4910571DB0BBA60BBEEE358EFB8 -S315400208300BBA4BE4708569410BBA372DC79BD7FE7D -S315400208400BBA2297A6CCD68C0BBA0E21C1B0CFA03A -S315400208500BB9F9CBCCCEB6050BB9E5957D98648B31 -S315400208600BB9D17E8A670EE70BB9BD86AA77C3104C -S315400208700BB9A9AD95E7FAC40BB995F305B23CE5B8 -S315400208800BB98256B3AACE570BB96ED85A7C7206AA -S315400208900BB95B77B5A537C80BB94834817359CCC8 -S315400208A00BB9350E7B02284D0BB922056037032E54 -S315400208B00BB90F18EFBE614A0BB8FC48E908E522AE -S315400208C00BB8E9950C487EA90BB8D6FD1A6D99E886 -S315400208D00BB8C480D5245A340BB8B21FFED1E1BC42 -S315400208E00BB89FDA5A91A5260BB88DAFAC32CB0A1C -S315400208F00BB87B9FB83596F60BB869AA43C8DFE1B9 -S315400209000BB857CF14C791B50BB8460DF1B639C6D9 -S315400209100BB83466A1C09DF90BB822D8ECB75E6E0F -S315400209200BB811649B0DA16B0BB8000975D6C9595A -S315400209300BB7EEC746C434A50BB7DD9DD823075285 -S315400209400BB7CC8CF4D9FE010BB7BB9468674A50FF -S315400209500BB7AAB3FEDE78540BB799EB84E65D0C6F -S315400209600BB7893AC7B70D960BB778A19517DF0132 -S315400209700BB7681FBB5D6E910BB757B50967B24C93 -S315400209800BB747614EA011A20BB737245AF786140C -S315400209900BB726FDFEE4C3A00BB716EE0B6268E862 -S315400209A00BB706F451ED36CE0BB6F710A4824F8044 -S315400209B00BB6E742D59D7CB40BB6D78AB8377D0EC7 -S315400209C00BB6C7E81FC458720BB6B85AE031BB32F1 -S315400209D00BB6A8E2CDE557F90BB6997FBDBB50459C -S315400209E00BB68A318504A35C0BB67AF7F985A39BCD -S315400209F00BB66BD2F17471FF0BB65CC243777FCEF6 -S31540020A000BB64DC5C6A416420BB63EDD527CE4116A -S31540020A100BB63008BEF090CF0BB62147E45855EBE3 -S31540020A200BB6129A9B769D520BB60400BD75A584F1 -S31540020A300BB5F57A23E62B070BB5E706A8BE172CAE -S31540020A400BB5D8A6265733FF0BB5CA58776DE54B7B -S31540020A500BB5BC1D771FE6AB0BB5ADF500EB0E78BB -S31540020A600BB59FDEF0AC15940BB591DB229D63F27C -S31540020A700BB583E97355E1C10BB57609BFC7CD32D4 -S31540020A800BB5683BE53F94B80BB55A7FC162B5B624 -S31540020A900BB54CD5322E9F7F0BB53F3C15F79AA12D -S31540020AA00BB531B44B67B45A0BB5243DB17DAE306C -S31540020AB00BB516D8278BF18F0BB509838D37876710 -S31540020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB69 -S31540020AD00BB4E1EA1D1EA6680BB4D4D8040308E59C -S31540020AE00BB4C7D63D722B370BB4BAE4AAEBF9481E -S31540020AF00BB4AE032E3C2D7E0BB4A131A97965C948 -S31540020B000BB4946FFF043C1C0BB487BE118662364D -S31540020B100BB47B1BC3F1C0BF0BB46E88F97F999BA4 -S31540020B200BB4620595AFAD730BB455917C476454D3 -S31540020B300BB4492C9150F96C0BB43CD6B91AA9C8DE -S31540020B400BB4308FD835E60B0BB42457D3768716C1 -S31540020B500BB4182E8FF205900BB40C13F2FEB43B75 -S31540020B600BB40007E232FD1F0BB3F40A4364A167DC -S31540020B700BB3E81AFCA7FBF00BB3DC39F44F468AF9 -S31540020B800BB3D06710E9E1C30BB3C4A239439F4FFD -S31540020B900BB3B8EB54640EF10BB3AD42498DCDDFC6 -S31540020BA00BB3A1A7003DD89B0BB39619602ADF2B46 -S31540020BB00BB38A9951449BB80BB37F26BBB32B79AF -S31540020BC00BB373C187D669EA0BB368699E454E4437 -S31540020BD00BB35D1EE7CD4B2D0BB351E14D71B09872 -S31540020BE00BB346B0B86B0FC30BB33B8D1226A15A5B -S31540020BF00BB330764445ADAC0BB3256C389CF6EB63 -S31540020C000BB31A6ED934256E0BB30F7E104535F5EC -S31540020C100BB30499C83BE9D60BB2F9C1EBB53923FC -S31540020C200BB2EEF6657EC6AA0BB2E437209655D5D0 -S31540020C300BB2D984082942630BB2CEDD0793F9E79A -S31540020C400BB2C4420A6177190BB2B9B2FC4ABEDA98 -S31540020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1F9 -S31540020C600BB29A4CA48F90E30BB28FEC8BA9777997 -S31540020C700BB28597FF1D694D0BB27B4EEBAE48DD3D -S31540020C800BB271113E499CEE0BB266DEE4071AA81E -S31540020C900BB25CB7CA2831380BB2529BDE1796F7B5 -S31540020CA00BB2488B0D68D8030BB23E8545D7E65A40 -S31540020CB00BB2348A7548AB540BB22A9A89C69A97B4 -S31540020CC00BB220B5718446610BB216DB1ADAF53FD8 -S31540020CD00BB20D0B744A39100BB203466C77876C14 -S31540020CE00BB1F98BF22DD3490BB1EFDBF45D27FF44 -S31540020CF00BB1E636621A457E0BB1DC9B2A9E3DD588 -S31540020D000BB1D30A3D4613EE0BB1C98389925B817F -S31540020D100BB1C006FF26DA3F0BB1B6948DCA2A281C -S31540020D200BB1AD2C25655D0F0BB1A3CDB603A13D2D -S31540020D300BB19A792FD1E7410BB1912E831E88D2FE -S31540020D400BB187EDA058F0D60BB17EB6781144733D -S31540020D500BB17588FAF80D3A0BB16C6519DDE45D95 -S31540020D600BB1634AC5B31EEF0BB15A39EF877B28E5 -S31540020D700BB151328889CEAE0BB148348207B5DB0E -S31540020D800BB13F3FCD6D43FF0BB136545C44B49A31 -S31540020D900BB12D7220361D870BB124990B07221BEE -S31540020DA00BB11BC90E9AA72D0BB113021CF0880F6B -S31540020DB00BB10A4428254C650BB1018F2271DEE541 -S31540020DC00BB0F8E2FE2B44F40BB0F03FADC2572312 -S31540020DD00BB0E7A523C37A850BB0DF1352D65AD997 -S31540020DE00BB0D68A2DBDA58C0BB0CE09A756C589A8 -S31540020DF00BB0C591B2999FDB0BB0BD2242985115FB -S31540020E000BB0B4BB4A7EEB870BB0AC5CBD933636B7 -S31540020E1065300000653010006530200065303000D6 -S31540020E2065304000653050006530600065307000C6 -S31540020E3065308000653090006530A0006530B000B6 -S31540020E406530C0006530D0006530E0006530F000A6 -S31540020E506531000065311000653120006531300092 -S31540020E606531400065315000653160006531700082 -S31540020E7065318000653190006531A0006531B00072 -S31540020E806531C0006531D0006531E0006531F00062 -S31540020E90653200006532100065322000653230004E -S31540020EA0653240006532500065326000653270003E -S31540020EB065328000653290006532A0006532B0002E -S31540020EC06532C0006532D0006532E0006532F0001E -S31540020ED0653300006533100065332000653330000A -S31540020EE065334000653350006533600065337000FA -S31540020EF065338000653390006533A0006533B000EA -S31540020F006533C0006533D0006533E0006533F000D9 -S31540020F1065340000653410006534200065343000C5 -S31540020F2065344000653450006534600065347000B5 -S31540020F3065348000653490006534A0006534B000A5 -S31540020F406534C0006534D0006534E0006534F00095 -S31540020F506535000065351000653520006535300081 -S31540020F606535400065355000653560006535700071 -S31540020F7065358000653590006535A0006535B00061 -S31540020F806535C0006535D0006535E0006535F00051 -S31540020F90653600006536100065362000653630003D -S31540020FA0653640006536500065366000653670002D -S31540020FB065368000653690006536A0006536B0001D -S31540020FC06536C0006536D0006536E0006536F0000D -S31540020FD065370000653710006537200065373000F9 -S31540020FE065374000653750006537600065377000E9 -S31540020FF065378000653790006537A0006537B000D9 -S315400210006537C0006537D0006537E0006537F000C8 -S3154002101065380000653810006538200065383000B4 -S3154002102065384000653850006538600065387000A4 -S3154002103065388000653890006538A0006538B00094 -S315400210406538C0006538D0006538E0006538F00084 -S315400210506539000065391000653920006539300070 -S315400210606539400065395000653960006539700060 -S3154002107065398000653990006539A0006539B00050 -S315400210806539C0006539D0006539E0006539F00040 -S31540021090653A0000653A1000653A2000653A30002C -S315400210A0653A4000653A5000653A6000653A70001C -S315400210B0653A8000653A9000653AA000653AB0000C -S315400210C0653AC000653AD000653AE000653AF000FC -S315400210D0653B0000653B1000653B2000653B3000E8 -S315400210E0653B4000653B5000653B6000653B7000D8 -S315400210F0653B8000653B9000653BA000653BB000C8 -S31540021100653BC000653BD000653BE000653BF000B7 -S31540021110653C0000653C1000653C2000653C3000A3 -S31540021120653C4000653C5000653C6000653C700093 -S31540021130653C8000653C9000653CA000653CB00083 -S31540021140653CC000653CD000653CE000653CF00073 -S31540021150653D0000653D1000653D2000653D30005F -S31540021160653D4000653D5000653D6000653D70004F -S31540021170653D8000653D9000653DA000653DB0003F -S31540021180653DC000653DD000653DE000653DF0002F -S31540021190653E0000653E1000653E2000653E30001B -S315400211A0653E4000653E5000653E6000653E70000B -S315400211B0653E8000653E9000653EA000653EB000FB -S315400211C0653EC000653ED000653EE000653EF000EB -S315400211D0653F0000653F1000653F2000653F3000D7 -S315400211E0653F4000653F5000653F6000653F7000C7 -S315400211F0653F8000653F9000653FA000653FB000B7 -S31540021200653FC000653FD000653FE000653FF000A6 -S315400212104200000000000000400FFFFFFFFFFFFFFB -S315400212204200000000200000420FFFFFFFFFFFFFC9 -S3154002123040000000000000004210000000080000CC -S3154002124042000000000000013EB000000000000124 -S315400212504200000000000002420F484C0137D2080B -S31540021260C20E780F256007AB41BA079B7AF94BA0AD -S315400212704201484C0137D208420E780F256007AB2F -S315400212804217E02D934BECDA420F484C0137D20815 -S31540021290C21E780F256007ABC20DA7D249883D4EC4 -S315400212A0421F484C0137D208C20E780F256007AB61 -S315400212B042100C446E87CE32C03340AB371208918F -S315400212C00000000000000000C03340AB3712089116 -S315400212D00000000000000000C29E7A0F236007A6AD -S315400212E0C29E7A0F236007A66F3F484C0137D20849 -S315400212F06E2E780F256007AB6F3F485B3D3F64B863 -S315400213006F3F484C0137D208EE2E780F256007AB67 -S315400213106F3F483CC5303F587FE2F780AB123809F1 -S315400213207FD00000000000007FEAF780AB12380948 -S31540021330002000000000000080280000000000009D -S3154002134080100000000000007FEFF780AB123809E2 -S315400213507FEFF2010203A1117FF0000000000000BE -S315400213600010000000001000801FFFFFF203A111D1 -S315400213708000000000000000001ABCD000023809BC -S31540021380801ABCD0000001110000000000000000DD -S315400213907E71000000000000416010000000000065 -S315400213A07FE11100000000000178100000000000FB -S315400213B03E880000FFF0000000120C00C073F800E7 -S315400213C0C1EFFFFFC00020003FB3C75D224F280F89 -S315400213D0C1B3C75CFAC08192A12FFF8000001FFFF4 -S315400213E03EE0000000FF0000A01FFF8001FE18073C -S315400213F041CFFFFE0000002040303FFFFFFFFFFDD0 -S3154002140042103FFEFC00000D3FD000003FEFFFFFC1 -S31540021410BFD0000010000000BFB000004FF0003FF8 -S3154002142001701000000000003E8000011A0000001A -S3154002143000000000000000007E7C0000000000006A -S31540021440416A1000010000107FF000000000000019 -S3154002145075012034056AC000FA1009091000104FC0 -S31540021460FFF00000000000000100203040030200AF -S31540021470003020340000A00B0000000000000000F5 -S315400214807FE0001010200001400000000010200AFA -S315400214907FF00000000000003FEFDFF00FFC484AFB -S315400214A0BFF80000000000007FFF000000000000BF -S315400214B07FFFE000000000007FF400000000000013 -S315400214C07FC00000000000007FF80000000000001E -S315400214D07FF0000000000000FFF000000000000066 -S315400214E0FFF0000000000000800000000000000045 -S315400214F000000000000100000000000000000000A3 -S315400215000000000000000000000000000000000093 -S315400215100000000000000000000000000000000083 -S315400215200000000000000000000000000000000073 -S315400215300000000000000000000000000000000063 -S315400215400000000000000000000000000000000053 -S315400215500000000000000000000000000000000043 -S315400215600000000000000000000000000000000033 -S315400215700000000000000000000000000000000023 -S315400215800000000000000000000000000000000013 -S315400215900000000000000000000000000000000003 -S315400215A000000000000000000000000000000000F3 -S315400215B000000000000000000000000000000000E3 -S315400215C000000000000000000000000000000000D3 -S315400215D000000000000000000000000000000000C3 -S315400215E000000000000000000000000000000000B3 -S315400215F000000000000000000000000000000000A3 -S315400216000000000000000000000000000000000092 -S315400216100000000000000000000000000000000082 -S315400216200000000000000000000000000000000072 -S315400216300000000000000000000000000000000062 -S315400216400000000000000000000000000000000052 -S315400216500000000000000000000000000000000042 -S315400216600000000000000000000000000000000032 -S315400216700000000000000000000000000000000022 -S315400216800000000000000000000000000000000012 -S315400216900000000000000000000000000000000002 -S315400216A000000000000000000000000000000000F2 -S315400216B000000000000000000000000000000000E2 -S315400216C000000000000000000000000000000000D2 -S315400216D000000000000000000000000000000000C2 -S315400216E000000000000000000000000000000000B2 -S315400216F000000000000000000000000000000000A2 -S315400217000000000000000000000000000000000091 -S315400217100000000000000000000000000000000081 -S315400217200000000000000000000000000000000071 -S315400217300000000000000000000000000000000061 -S315400217400000000000000000000000000000000051 -S315400217500000000000000000000000000000000041 -S315400217600000000000000000000000000000000031 -S315400217700000000000000000000000000000000021 -S315400217800000000000000000000000000000000011 -S315400217900000000000000000000000000000000001 -S315400217A000000000000000000000000000000000F1 -S315400217B000000000000000000000000000000000E1 -S315400217C000000000000000000000000000000000D1 -S315400217D000000000000000000000000000000000C1 -S315400217E000000000000000000000000000000000B1 -S315400217F000000000000000000000000000000000A1 -S315400218000000000000000000000000000000000090 -S315400218100000000000000000000000000000000080 -S315400218200000000000000000000000000000000070 -S315400218300000000000000000000000000000000060 -S315400218400000000000000000000000000000000050 -S315400218500000000000000000000000000000000040 -S315400218600000000000000000000000000000000030 -S315400218700000000000000000000000000000000020 -S315400218800000000000000000000000000000000010 -S315400218900000000000000000000000000000000000 -S315400218A000000000000000000000000000000000F0 -S315400218B000000000000000000000000000000000E0 -S315400218C000000000000000000000000000000000D0 -S315400218D000000000000000000000000000000000C0 -S315400218E000000000000000000000000000000000B0 -S315400218F000000000000000000000000000000000A0 -S31540021900000000000000000000000000000000008F -S31540021910000000000000000000000000000000007F -S31540021920000000000000000000000000000000006F -S31540021930000000000000000000000000000000005F -S31540021940000000000000000000000000000000004F -S31540021950000000000000000000000000000000003F -S31540021960000000000000000000000000000000002F -S31540021970000000000000000000000000000000001F -S31540021980000000000000000000000000000000000F -S3154002199000000000000000000000000000000000FF -S315400219A000000000000000000000000000000000EF -S315400219B000000000000000000000000000000000DF -S315400219C000000000000000000000000000000000CF -S315400219D000000000000000000000000000000000BF -S315400219E000000000000000000000000000000000AF -S315400219F0000000000000000000000000000000009F -S31540021A00000000000000000000000000000000008E -S31540021A10000000000000000000000000000000007E -S31540021A20000000000000000000000000000000006E -S31540021A30000000000000000000000000000000005E -S31540021A40000000000000000000000000000000004E -S31540021A50000000000000000000000000000000003E -S31540021A60000000000000000000000000000000002E -S31540021A70000000000000000000000000000000001E -S31540021A80000000000000000000000000000000000E -S31540021A9000000000000000000000000000000000FE -S31540021AA000000000000000000000000000000000EE -S31540021AB000000000000000000000000000000000DE -S31540021AC000000000000000000000000000000000CE -S31540021AD000000000000000000000000000000000BE -S31540021AE000000000000000000000000000000000AE -S31540021AF0000000000000000000000000000000009E -S31540021B00000000000000000000000000000000008D -S31540021B10000000000000000000000000000000007D -S31540021B20000000000000000000000000000000006D -S31540021B30000000000000000000000000000000005D -S31540021B40000000000000000000000000000000004D -S31540021B50000000000000000000000000000000003D -S31540021B60000000000000000000000000000000002D -S31540021B70000000000000000000000000000000001D -S31540021B80000000000000000000000000000000000D -S31540021B9000000000000000000000000000000000FD -S31540021BA000000000000000000000000000000000ED -S31540021BB000000000000000000000000000000000DD -S31540021BC000000000000000000000000000000000CD -S31540021BD000000000000000000000000000000000BD -S31540021BE000000000000000000000000000000000AD -S31540021BF0000000000000000000000000000000009D -S31540021C00000000000000000000000000000000008C -S31540021C10000000000000000000000000000000007C -S31540021C20000000000000000000000000000000006C -S31540021C30000000000000000000000000000000005C -S31540021C40000000000000000000000000000000004C -S31540021C50000000000000000000000000000000003C -S31540021C60000000000000000000000000000000002C -S31540021C70000000000000000000000000000000001C -S31540021C80000000000000000000000000000000000C -S31540021C9000000000000000000000000000000000FC -S31540021CA000000000000000000000000000000000EC -S31540021CB000000000000000000000000000000000DC -S31540021CC000000000000000000000000000000000CC -S31540021CD000000000000000000000000000000000BC -S31540021CE000000000000000000000000000000000AC -S31540021CF0000000000000000000000000000000009C -S31540021D00000000000000000000000000000000008B -S31540021D10000000000000000000000000000000007B -S31540021D20000000000000000000000000000000006B -S31540021D30000000000000000000000000000000005B -S31540021D40000000000000000000000000000000004B -S31540021D50000000000000000000000000000000003B -S31540021D60000000000000000000000000000000002B -S31540021D70000000000000000000000000000000001B -S31540021D80000000000000000000000000000000000B -S31540021D9000000000000000000000000000000000FB -S31540021DA000000000000000000000000000000000EB -S31540021DB000000000000000000000000000000000DB -S31540021DC000000000000000000000000000000000CB -S31540021DD000000000000000000000000000000000BB -S31540021DE000000000000000000000000000000000AB -S31540021DF0000000000000000000000000000000009B -S31540021E00000000000000000000000000000000008A -S31540021E10000000000000000000000000000000007A -S31540021E20000000000000000000000000000000006A -S31540021E30000000000000000000000000000000005A -S31540021E40000000000000000000000000000000004A -S31540021E50000000000000000000000000000000003A -S31540021E60000000000000000000000000000000002A -S31540021E70000000000000000000000000000000001A -S31540021E80000000000000000000000000000000000A -S31540021E9000000000000000000000000000000000FA -S31540021EA000000000000000000000000000000000EA -S31540021EB000000000000000000000000000000000DA -S31540021EC000000000000000000000000000000000CA -S31540021ED000000000000000000000000000000000BA -S31540021EE000000000000000000000000000000000AA -S31540021EF0000000000000000000000000000000009A -S31540021F000000000000000000000000000000000089 -S31540021F100000000000000000000000000000000079 -S31540021F200000000000000000000000000000000069 -S31540021F300000000000000000000000000000000059 -S31540021F400000000000000000000000000000000049 -S31540021F500000000000000000000000000000000039 -S31540021F600000000000000000000000000000000029 -S31540021F700000000000000000000000000000000019 -S31540021F800000000000000000000000000000000009 -S31540021F9000000000000000000000000000000000F9 -S31540021FA000000000000000000000000000000000E9 -S31540021FB000000000000000000000000000000000D9 -S31540021FC000000000000000000000000000000000C9 -S31540021FD000000000000000000000000000000000B9 -S31540021FE000000000000000000000000000000000A9 -S31540021FF00000000000000000000000000000000099 -S315400220000000000000000000000000000000000088 -S315400220100000000000000000000000000000000078 -S315400220200000000000000000000000000000000068 -S315400220300000000000000000000000000000000058 -S315400220400000000000000000000000000000000048 -S315400220500000000000000000000000000000000038 -S315400220600000000000000000000000000000000028 -S315400220700000000000000000000000000000000018 -S315400220800000000000000000000000000000000008 -S3154002209000000000000000000000000000000000F8 -S315400220A000000000000000000000000000000000E8 -S315400220B000000000000000000000000000000000D8 -S315400220C000000000000000000000000000000000C8 -S315400220D000000000000000000000000000000000B8 -S315400220E000000000000000000000000000000000A8 -S315400220F00000000000000000000000000000000098 -S315400221000000000000000000000000000000000087 -S315400221100000000000000000000000000000000077 -S315400221200000000000000000000000000000000067 -S315400221300000000000000000000000000000000057 -S315400221400000000000000000000000000000000047 -S315400221500000000000000000000000000000000037 -S315400221600000000000000000000000000000000027 -S315400221700000000000000000000000000000000017 -S315400221800000000000000000000000000000000007 -S3154002219000000000000000000000000000000000F7 -S315400221A000000000000000000000000000000000E7 -S315400221B000000000000000000000000000000000D7 -S315400221C000000000000000000000000000000000C7 -S315400221D000000000000000000000000000000000B7 -S315400221E000000000000000000000000000000000A7 -S315400221F00000000000000000000000000000000097 -S315400222000000000000000000000000000000000086 -S315400222100000000000000000000000000000000076 -S315400222200000000000000000000000000000000066 -S315400222300000000000000000000000000000000056 -S315400222400000000000000000000000000000000046 -S315400222500000000000000000000000000000000036 -S315400222600000000000000000000000000000000026 -S315400222700000000000000000000000000000000016 -S315400222800000000000000000000000000000000006 -S3154002229000000000000000000000000000000000F6 -S315400222A000000000000000000000000000000000E6 -S315400222B000000000000000000000000000000000D6 -S315400222C000000000000000000000000000000000C6 -S315400222D000000000000000000000000000000000B6 -S315400222E000000000000000000000000000000000A6 -S315400222F00000000000000000000000000000000096 -S315400223000000000000000000000000000000000085 -S315400223100000000000000000000000000000000075 -S315400223200000000000000000000000000000000065 -S315400223300000000000000000000000000000000055 -S315400223400000000000000000000000000000000045 -S315400223500000000000000000000000000000000035 -S315400223600000000000000000000000000000000025 -S315400223700000000000000000000000000000000015 -S315400223800000000000000000000000000000000005 -S3154002239000000000000000000000000000000000F5 -S315400223A000000000000000000000000000000000E5 -S315400223B000000000000000000000000000000000D5 -S315400223C000000000000000000000000000000000C5 -S315400223D000000000000000000000000000000000B5 -S315400223E000000000000000000000000000000000A5 -S315400223F00000000000000000000000000000000095 -S315400224000000000000000000000000000000000084 -S315400224100000000000000000000000000000000074 -S315400224200000000000000000000000000000000064 -S315400224300000000000000000000000000000000054 -S315400224400000000000000000000000000000000044 -S315400224500000000000000000000000000000000034 -S315400224600000000000000000000000000000000024 -S315400224700000000000000000000000000000000014 -S315400224800000000000000000000000000000000004 -S3154002249000000000000000000000000000000000F4 -S315400224A000000000000000000000000000000000E4 -S315400224B000000000000000000000000000000000D4 -S315400224C000000000000000000000000000000000C4 -S315400224D000000000000000000000000000000000B4 -S315400224E000000000000000000000000000000000A4 -S315400224F00000000000000000000000000000000094 -S315400225000000000000000000000000000000000083 -S315400225100000000000000000000000000000000073 -S315400225200000000000000000000000000000000063 -S315400225300000000000000000000000000000000053 -S315400225400000000000000000000000000000000043 -S315400225500000000000000000000000000000000033 -S315400225600000000000000000000000000000000023 -S315400225700000000000000000000000000000000013 -S315400225800000000000000000000000000000000003 -S3154002259000000000000000000000000000000000F3 -S315400225A000000000000000000000000000000000E3 -S315400225B000000000000000000000000000000000D3 -S315400225C000000000000000000000000000000000C3 -S315400225D000000000000000000000000000000000B3 -S315400225E000000000000000000000000000000000A3 -S315400225F00000000000000000000000000000000093 -S315400226000000000000000000000000000000000082 -S315400226100000000000000000000000000000000072 -S315400226200000000000000000000000000000000062 -S315400226300000000000000000000000000000000052 -S315400226400000000000000000000000000000000042 -S315400226500000000000000000000000000000000032 -S315400226600000000000000000000000000000000022 -S315400226700000000000000000000000000000000012 -S315400226800000000000000000000000000000000002 -S3154002269000000000000000000000000000000000F2 -S315400226A000000000000000000000000000000000E2 -S315400226B000000000000000000000000000000000D2 -S315400226C000000000000000000000000000000000C2 -S315400226D000000000000000000000000000000000B2 -S315400226E000000000000000000000000000000000A2 -S315400226F00000000000000000000000000000000092 -S315400227000000000000000000000000000000000081 -S315400227100000000000000000000000000000000071 -S315400227200000000000000000000000000000000061 -S315400227300000000000000000000000000000000051 -S315400227400000000000000000000000000000000041 -S315400227500000000000000000000000000000000031 -S315400227600000000000000000000000000000000021 -S315400227700000000000000000000000000000000011 -S315400227800000000000000000000000000000000001 -S3154002279000000000000000000000000000000000F1 -S315400227A000000000000000000000000000000000E1 -S315400227B000000000000000000000000000000000D1 -S315400227C000000000000000000000000000000000C1 -S315400227D000000000000000000000000000000000B1 -S315400227E000000000000000000000000000000000A1 -S315400227F00000000000000000000000000000000091 -S315400228000000000000000000000000000000000080 -S315400228100000000000000000000000000000000070 -S315400228200000000000000000000000000000000060 -S315400228300000000000000000000000000000000050 -S315400228400000000000000000000000000000000040 -S315400228500000000000000000000000000000000030 -S315400228600000000000000000000000000000000020 -S315400228700000000000000000000000000000000010 -S315400228800000000000000000000000000000000000 -S3154002289000000000000000000000000000000000F0 -S315400228A000000000000000000000000000000000E0 -S315400228B000000000000000000000000000000000D0 -S315400228C000000000000000000000000000000000C0 -S315400228D000000000000000000000000000000000B0 -S315400228E000000000000000000000000000000000A0 -S315400228F00000000000000000000000000000000090 -S31540022900000000000000000000000000000000007F -S31540022910000000000000000000000000000000006F -S31540022920000000000000000000000000000000005F -S31540022930000000000000000000000000000000004F -S31540022940000000000000000000000000000000003F -S31540022950000000000000000000000000000000002F -S31540022960000000000000000000000000000000001F -S31540022970000000000000000000000000000000000F -S3154002298000000000000000000000000000000000FF -S3154002299000000000000000000000000000000000EF -S315400229A000000000000000000000000000000000DF -S315400229B000000000000000000000000000000000CF -S315400229C000000000000000000000000000000000BF -S315400229D000000000000000000000000000000000AF -S315400229E0000000000000000000000000000000009F -S315400229F0000000000000000000000000000000008F -S31540022A00000000000000000000000000000000007E -S31540022A10000000000000000000000000000000006E -S31540022A20000000000000000000000000000000005E -S31540022A30000000000000000000000000000000004E -S31540022A40000000000000000000000000000000003E -S31540022A50000000000000000000000000000000002E -S31540022A60000000000000000000000000000000001E -S31540022A70000000000000000000000000000000000E -S31540022A8000000000000000000000000000000000FE -S31540022A9000000000000000000000000000000000EE -S31540022AA000000000000000000000000000000000DE -S31540022AB000000000000000000000000000000000CE -S31540022AC000000000000000000000000000000000BE -S31540022AD000000000000000000000000000000000AE -S31540022AE0000000000000000000000000000000009E -S31540022AF0000000000000000000000000000000008E -S31540022B00000000000000000000000000000000007D -S31540022B10000000000000000000000000000000006D -S31540022B20000000000000000000000000000000005D -S31540022B30000000000000000000000000000000004D -S31540022B40000000000000000000000000000000003D -S31540022B50000000000000000000000000000000002D -S31540022B60000000000000000000000000000000001D -S31540022B70000000000000000000000000000000000D -S31540022B8000000000000000000000000000000000FD -S31540022B9000000000000000000000000000000000ED -S31540022BA000000000000000000000000000000000DD -S31540022BB000000000000000000000000000000000CD -S31540022BC000000000000000000000000000000000BD -S31540022BD000000000000000000000000000000000AD -S31540022BE0000000000000000000000000000000009D -S31540022BF0000000000000000000000000000000008D -S31540022C00000000000000000000000000000000007C -S31540022C10000000000000000000000000000000006C -S31540022C20000000000000000000000000000000005C -S31540022C30000000000000000000000000000000004C -S31540022C40000000000000000000000000000000003C -S31540022C50000000000000000000000000000000002C -S31540022C60000000000000000000000000000000001C -S31540022C70000000000000000000000000000000000C -S31540022C8000000000000000000000000000000000FC -S31540022C9000000000000000000000000000000000EC -S31540022CA000000000000000000000000000000000DC -S31540022CB000000000000000000000000000000000CC -S31540022CC000000000000000000000000000000000BC -S31540022CD000000000000000000000000000000000AC -S31540022CE0000000000000000000000000000000009C -S31540022CF0000000000000000000000000000000008C -S31540022D00000000000000000000000000000000007B -S31540022D10000000000000000000000000000000006B -S31540022D20000000000000000000000000000000005B -S31540022D30000000000000000000000000000000004B -S31540022D40000000000000000000000000000000003B -S31540022D50000000000000000000000000000000002B -S31540022D60000000000000000000000000000000001B -S31540022D70000000000000000000000000000000000B -S31540022D8000000000000000000000000000000000FB -S31540022D9000000000000000000000000000000000EB -S31540022DA000000000000000000000000000000000DB -S31540022DB000000000000000000000000000000000CB -S31540022DC000000000000000000000000000000000BB -S31540022DD000000000000000000000000000000000AB -S31540022DE0000000000000000000000000000000009B -S31540022DF0000000000000000000000000000000008B -S31540022E00000000000000000000000000000000007A -S31540022E10000000000000000000000000000000006A -S31540022E20000000000000000000000000000000005A -S31540022E30000000000000000000000000000000004A -S31540022E40000000000000000000000000000000003A -S31540022E50000000000000000000000000000000002A -S31540022E60000000000000000000000000000000001A -S31540022E70000000000000000000000000000000000A -S31540022E8000000000000000000000000000000000FA -S31540022E9000000000000000000000000000000000EA -S31540022EA000000000000000000000000000000000DA -S31540022EB000000000000000000000000000000000CA -S31540022EC000000000000000000000000000000000BA -S31540022ED000000000000000000000000000000000AA -S31540022EE0000000000000000000000000000000009A -S31540022EF0000000000000000000000000000000008A -S31540022F000000000000000000000000000000000079 -S31540022F100000000000000000000000000000000069 -S31540022F200000000000000000000000000000000059 -S31540022F300000000000000000000000000000000049 -S31540022F400000000000000000000000000000000039 -S31540022F500000000000000000000000000000000029 -S31540022F600000000000000000000000000000000019 -S31540022F700000000000000000000000000000000009 -S31540022F8000000000000000000000000000000000F9 -S31540022F9000000000000000000000000000000000E9 -S31540022FA000000000000000000000000000000000D9 -S31540022FB000000000000000000000000000000000C9 -S31540022FC000000000000000000000000000000000B9 -S31540022FD000000000000000000000000000000000A9 -S31540022FE00000000000000000000000000000000099 -S31540022FF00000000000000000000000000000000089 -S315400230000000000000000000000000000000000078 -S315400230100000000000000000000000000000000068 -S315400230200000000000000000000000000000000058 -S315400230300000000000000000000000000000000048 -S315400230400000000000000000000000000000000038 -S315400230500000000000000000000000000000000028 -S315400230600000000000000000000000000000000018 -S315400230700000000000000000000000000000000008 -S3154002308000000000000000000000000000000000F8 -S3154002309000000000000000000000000000000000E8 -S315400230A000000000000000000000000000000000D8 -S315400230B000000000000000000000000000000000C8 -S315400230C000000000000000000000000000000000B8 -S315400230D000000000000000000000000000000000A8 -S315400230E00000000000000000000000000000000098 -S315400230F00000000000000000000000000000000088 -S315400231000000000000000000000000000000000077 -S315400231100000000000000000000000000000000067 -S315400231200000000000000000000000000000000057 -S315400231300000000000000000000000000000000047 -S315400231400000000000000000000000000000000037 -S315400231500000000000000000000000000000000027 -S315400231600000000000000000000000000000000017 -S315400231700000000000000000000000000000000007 -S3154002318000000000000000000000000000000000F7 -S3154002319000000000000000000000000000000000E7 -S315400231A000000000000000000000000000000000D7 -S315400231B000000000000000000000000000000000C7 -S315400231C000000000000000000000000000000000B7 -S315400231D000000000000000000000000000000000A7 -S315400231E00000000000000000000000000000000097 -S315400231F00000000000000000000000000000000087 -S315400232000000000000000000000000000000000076 -S315400232100000000000000000000000000000000066 -S315400232200000000000000000000000000000000056 -S315400232300000000000000000000000000000000046 -S315400232400000000000000000000000000000000036 -S315400232500000000000000000000000000000000026 -S315400232600000000000000000000000000000000016 -S315400232700000000000000000000000000000000006 -S3154002328000000000000000000000000000000000F6 -S3154002329000000000000000000000000000000000E6 -S315400232A000000000000000000000000000000000D6 -S315400232B000000000000000000000000000000000C6 -S315400232C000000000000000000000000000000000B6 -S315400232D000000000000000000000000000000000A6 -S315400232E00000000000000000000000000000000096 -S315400232F00000000000000000000000000000000086 -S315400233000000000000000000000000000000000075 -S315400233100000000000000000000000000000000065 -S315400233200000000000000000000000000000000055 -S315400233300000000000000000000000000000000045 -S315400233400000000000000000000000000000000035 -S315400233500000000000000000000000000000000025 -S315400233600000000000000000000000000000000015 -S315400233700000000000000000000000000000000005 -S3154002338000000000000000000000000000000000F5 -S3154002339000000000000000000000000000000000E5 -S315400233A000000000000000000000000000000000D5 -S315400233B000000000000000000000000000000000C5 -S315400233C000000000000000000000000000000000B5 -S315400233D000000000000000000000000000000000A5 -S315400233E00000000000000000000000000000000095 -S315400233F00000000000000000000000000000000085 -S315400234000000000000000000000000000000000074 -S315400234100000000000000000000000000000000064 -S315400234200000000000000000000000000000000054 -S315400234300000000000000000000000000000000044 -S315400234400000000000000000000000000000000034 -S315400234500000000000000000000000000000000024 -S315400234600000000000000000000000000000000014 -S315400234700000000000000000000000000000000004 -S3154002348000000000000000000000000000000000F4 -S3154002349000000000000000000000000000000000E4 -S315400234A000000000000000000000000000000000D4 -S315400234B000000000000000000000000000000000C4 -S315400234C000000000000000000000000000000000B4 -S315400234D000000000000000000000000000000000A4 -S315400234E00000000000000000000000000000000094 -S315400234F00000000000000000000000000000000084 -S315400235000000000000000000000000000000000073 -S315400235100000000000000000000000000000000063 -S315400235200000000000000000000000000000000053 -S315400235300000000000000000000000000000000043 -S315400235400000000000000000000000000000000033 -S315400235500000000000000000000000000000000023 -S315400235600000000000000000000000000000000013 -S315400235700000000000000000000000000000000003 -S3154002358000000000000000000000000000000000F3 -S3154002359000000000000000000000000000000000E3 -S315400235A000000000000000000000000000000000D3 -S315400235B000000000000000000000000000000000C3 -S315400235C000000000000000000000000000000000B3 -S315400235D000000000000000000000000000000000A3 -S315400235E00000000000000000000000000000000093 -S315400235F00000000000000000000000000000000083 -S315400236000000000000000000000000000000000072 -S315400236100000000000000000000000000000000062 -S315400236200000000000000000000000000000000052 -S315400236300000000000000000000000000000000042 -S315400236400000000000000000000000000000000032 -S315400236500000000000000000000000000000000022 -S315400236600000000000000000000000000000000012 -S315400236700000000000000000000000000000000002 -S3154002368000000000000000000000000000000000F2 -S3154002369000000000000000000000000000000000E2 -S315400236A000000000000000000000000000000000D2 -S315400236B000000000000000000000000000000000C2 -S315400236C000000000000000000000000000000000B2 -S315400236D000000000000000000000000000000000A2 -S315400236E00000000000000000000000000000000092 -S315400236F00000000000000000000000000000000082 -S315400237000000000000000000000000000000000071 -S315400237100000000000000000000000000000000061 -S315400237200000000000000000000000000000000051 -S315400237300000000000000000000000000000000041 -S315400237400000000000000000000000000000000031 -S315400237500000000000000000000000000000000021 -S315400237600000000000000000000000000000000011 -S315400237700000000000000000000000000000000001 -S3154002378000000000000000000000000000000000F1 -S3154002379000000000000000000000000000000000E1 -S315400237A000000000000000000000000000000000D1 -S315400237B000000000000000000000000000000000C1 -S315400237C000000000000000000000000000000000B1 -S315400237D000000000000000000000000000000000A1 -S315400237E00000000000000000000000000000000091 -S315400237F00000000000000000000000000000000081 -S315400238000000000000000000000000000000000070 -S315400238100000000000000000000000000000000060 -S315400238200000000000000000000000000000000050 -S315400238300000000000000000000000000000000040 -S315400238400000000000000000000000000000000030 -S315400238500000000000000000000000000000000020 -S315400238600000000000000000000000000000000010 -S315400238700000000000000000000000000000000000 -S3154002388000000000000000000000000000000000F0 -S3154002389000000000000000000000000000000000E0 -S315400238A000000000000000000000000000000000D0 -S315400238B000000000000000000000000000000000C0 -S315400238C000000000000000000000000000000000B0 -S315400238D000000000000000000000000000000000A0 -S315400238E00000000000000000000000000000000090 -S315400238F00000000000000000000000000000000080 -S31540023900000000000000000000000000000000006F -S31540023910000000000000000000000000000000005F -S31540023920000000000000000000000000000000004F -S31540023930000000000000000000000000000000003F -S31540023940000000000000000000000000000000002F -S31540023950000000000000000000000000000000001F -S31540023960000000000000000000000000000000000F -S3154002397000000000000000000000000000000000FF -S3154002398000000000000000000000000000000000EF -S3154002399000000000000000000000000000000000DF -S315400239A000000000000000000000000000000000CF -S315400239B000000000000000000000000000000000BF -S315400239C000000000000000000000000000000000AF -S315400239D0000000000000000000000000000000009F -S315400239E0000000000000000000000000000000008F -S315400239F0000000000000000000000000000000007F -S31540023A00000000000000000000000000000000006E -S31540023A10000000000000000000000000000000005E -S31540023A20000000000000000000000000000000004E -S31540023A30000000000000000000000000000000003E -S31540023A40000000000000000000000000000000002E -S31540023A50000000000000000000000000000000001E -S31540023A60000000000000000000000000000000000E -S31540023A7000000000000000000000000000000000FE -S31540023A8000000000000000000000000000000000EE -S31540023A9000000000000000000000000000000000DE -S31540023AA000000000000000000000000000000000CE -S31540023AB000000000000000000000000000000000BE -S31540023AC000000000000000000000000000000000AE -S31540023AD0000000000000000000000000000000009E -S31540023AE0000000000000000000000000000000008E -S31540023AF0000000000000000000000000000000007E -S31540023B00000000000000000000000000000000006D -S31540023B10000000000000000000000000000000005D -S31540023B20000000000000000000000000000000004D -S31540023B30000000000000000000000000000000003D -S31540023B40000000000000000000000000000000002D -S31540023B50000000000000000000000000000000001D -S31540023B60000000000000000000000000000000000D -S31540023B7000000000000000000000000000000000FD -S31540023B8000000000000000000000000000000000ED -S31540023B9000000000000000000000000000000000DD -S31540023BA000000000000000000000000000000000CD -S31540023BB000000000000000000000000000000000BD -S31540023BC000000000000000000000000000000000AD -S31540023BD0000000000000000000000000000000009D -S31540023BE0000000000000000000000000000000008D -S31540023BF0000000000000000000000000000000007D -S31540023C00000000000000000000000000000000006C -S31540023C10000000000000000000000000000000005C -S31540023C20000000000000000000000000000000004C -S31540023C30000000000000000000000000000000003C -S31540023C40000000000000000000000000000000002C -S31540023C50000000000000000000000000000000001C -S31540023C60000000000000000000000000000000000C -S31540023C7000000000000000000000000000000000FC -S31540023C8000000000000000000000000000000000EC -S31540023C9000000000000000000000000000000000DC -S31540023CA000000000000000000000000000000000CC -S31540023CB000000000000000000000000000000000BC -S31540023CC000000000000000000000000000000000AC -S31540023CD0000000000000000000000000000000009C -S31540023CE0000000000000000000000000000000008C -S31540023CF0000000000000000000000000000000007C -S31540023D00000000000000000000000000000000006B -S31540023D10000000000000000000000000000000005B -S31540023D20000000000000000000000000000000004B -S31540023D30000000000000000000000000000000003B -S31540023D40000000000000000000000000000000002B -S31540023D50000000000000000000000000000000001B -S31540023D60000000000000000000000000000000000B -S31540023D7000000000000000000000000000000000FB -S31540023D8000000000000000000000000000000000EB -S31540023D9000000000000000000000000000000000DB -S31540023DA000000000000000000000000000000000CB -S31540023DB000000000000000000000000000000000BB -S31540023DC000000000000000000000000000000000AB -S31540023DD0000000000000000000000000000000009B -S31540023DE0000000000000000000000000000000008B -S31540023DF0000000000000000000000000000000007B -S31540023E00000000000000000000000000000000006A -S31540023E10000000000000000000000000000000005A -S31540023E20000000000000000000000000000000004A -S31540023E30000000000000000000000000000000003A -S31540023E40000000000000000000000000000000002A -S31540023E50000000000000000000000000000000001A -S31540023E60000000000000000000000000000000000A -S31540023E7000000000000000000000000000000000FA -S31540023E8000000000000000000000000000000000EA -S31540023E9000000000000000000000000000000000DA -S31540023EA000000000000000000000000000000000CA -S31540023EB000000000000000000000000000000000BA -S31540023EC000000000000000000000000000000000AA -S31540023ED0000000000000000000000000000000009A -S31540023EE0000000000000000000000000000000008A -S31540023EF0000000000000000000000000000000007A -S31540023F000000000000000000000000000000000069 -S31540023F100000000000000000000000000000000059 -S31540023F200000000000000000000000000000000049 -S31540023F300000000000000000000000000000000039 -S31540023F400000000000000000000000000000000029 -S31540023F500000000000000000000000000000000019 -S31540023F600000000000000000000000000000000009 -S31540023F7000000000000000000000000000000000F9 -S31540023F8000000000000000000000000000000000E9 -S31540023F9000000000000000000000000000000000D9 -S31540023FA000000000000000000000000000000000C9 -S31540023FB000000000000000000000000000000000B9 -S31540023FC000000000000000000000000000000000A9 -S31540023FD00000000000000000000000000000000099 -S31540023FE00000000000000000000000000000000089 -S31540023FF00000000000000000000000000000000079 -S315400240000000000000000000000000000000000068 -S315400240100000000000000000000000000000000058 -S315400240200000000000000000000000000000000048 -S315400240300000000000000000000000000000000038 -S315400240400000000000000000000000000000000028 -S315400240500000000000000000000000000000000018 -S315400240600000000000000000000000000000000008 -S3154002407000000000000000000000000000000000F8 -S3154002408000000000000000000000000000000000E8 -S3154002409000000000000000000000000000000000D8 -S315400240A000000000000000000000000000000000C8 -S315400240B000000000000000000000000000000000B8 -S315400240C000000000000000000000000000000000A8 -S315400240D00000000000000000000000000000000098 -S315400240E00000000000000000000000000000000088 -S315400240F00000000000000000000000000000000078 -S315400241000000000000000000000000000000000067 -S315400241100000000000000000000000000000000057 -S315400241200000000000000000000000000000000047 -S315400241300000000000000000000000000000000037 -S315400241400000000000000000000000000000000027 -S315400241500000000000000000000000000000000017 -S315400241600000000000000000000000000000000007 -S3154002417000000000000000000000000000000000F7 -S3154002418000000000000000000000000000000000E7 -S3154002419000000000000000000000000000000000D7 -S315400241A000000000000000000000000000000000C7 -S315400241B000000000000000000000000000000000B7 -S315400241C000000000000000000000000000000000A7 -S315400241D00000000000000000000000000000000097 -S315400241E00000000000000000000000000000000087 -S315400241F00000000000000000000000000000000077 -S315400242000000000000000000000000000000000066 -S315400242100000000000000000000000000000000056 -S315400242200000000000000000000000000000000046 -S315400242300000000000000000000000000000000036 -S315400242400000000000000000000000000000000026 -S315400242500000000000000000000000000000000016 -S315400242600000000000000000000000000000000006 -S3154002427000000000000000000000000000000000F6 -S3154002428000000000000000000000000000000000E6 -S3154002429000000000000000000000000000000000D6 -S315400242A000000000000000000000000000000000C6 -S315400242B000000000000000000000000000000000B6 -S315400242C000000000000000000000000000000000A6 -S315400242D00000000000000000000000000000000096 -S315400242E00000000000000000000000000000000086 -S315400242F00000000000000000000000000000000076 -S315400243000000000000000000000000000000000065 -S315400243100000000000000000000000000000000055 -S315400243200000000000000000000000000000000045 -S315400243300000000000000000000000000000000035 -S315400243400000000000000000000000000000000025 -S315400243500000000000000000000000000000000015 -S315400243600000000000000000000000000000000005 -S3154002437000000000000000000000000000000000F5 -S3154002438000000000000000000000000000000000E5 -S3154002439000000000000000000000000000000000D5 -S315400243A000000000000000000000000000000000C5 -S315400243B000000000000000000000000000000000B5 -S315400243C000000000000000000000000000000000A5 -S315400243D00000000000000000000000000000000095 -S315400243E00000000000000000000000000000000085 -S315400243F00000000000000000000000000000000075 -S315400244000000000000000000000000000000000064 -S315400244100000000000000000000000000000000054 -S315400244200000000000000000000000000000000044 -S315400244300000000000000000000000000000000034 -S315400244400000000000000000000000000000000024 -S315400244500000000000000000000000000000000014 -S315400244600000000000000000000000000000000004 -S3154002447000000000000000000000000000000000F4 -S3154002448000000000000000000000000000000000E4 -S3154002449000000000000000000000000000000000D4 -S315400244A000000000000000000000000000000000C4 -S315400244B000000000000000000000000000000000B4 -S315400244C000000000000000000000000000000000A4 -S315400244D00000000000000000000000000000000094 -S315400244E00000000000000000000000000000000084 -S315400244F00000000000000000000000000000000074 -S315400245000000000000000000000000000000000063 -S315400245100000000000000000000000000000000053 -S315400245200000000000000000000000000000000043 -S315400245300000000000000000000000000000000033 -S315400245400000000000000000000000000000000023 -S315400245500000000000000000000000000000000013 -S315400245600000000000000000000000000000000003 -S3154002457000000000000000000000000000000000F3 -S3154002458000000000000000000000000000000000E3 -S3154002459000000000000000000000000000000000D3 -S315400245A000000000000000000000000000000000C3 -S315400245B000000000000000000000000000000000B3 -S315400245C000000000000000000000000000000000A3 -S315400245D00000000000000000000000000000000093 -S315400245E00000000000000000000000000000000083 -S315400245F00000000000000000000000000000000073 -S315400246000000000000000000000000000000000062 -S315400246100000000000000000000000000000000052 -S315400246200000000000000000000000000000000042 -S315400246300000000000000000000000000000000032 -S315400246400000000000000000000000000000000022 -S315400246500000000000000000000000000000000012 -S315400246600000000000000000000000000000000002 -S3154002467000000000000000000000000000000000F2 -S3154002468000000000000000000000000000000000E2 -S3154002469000000000000000000000000000000000D2 -S315400246A000000000000000000000000000000000C2 -S315400246B000000000000000000000000000000000B2 -S315400246C000000000000000000000000000000000A2 -S315400246D00000000000000000000000000000000092 -S315400246E00000000000000000000000000000000082 -S315400246F00000000000000000000000000000000072 -S315400247000000000000000000000000000000000061 -S315400247100000000000000000000000000000000051 -S315400247200000000000000000000000000000000041 -S315400247300000000000000000000000000000000031 -S315400247400000000000000000000000000000000021 -S315400247500000000000000000000000000000000011 -S315400247600000000000000000000000000000000001 -S3154002477000000000000000000000000000000000F1 -S3154002478000000000000000000000000000000000E1 -S3154002479000000000000000000000000000000000D1 -S315400247A000000000000000000000000000000000C1 -S315400247B000000000000000000000000000000000B1 -S315400247C000000000000000000000000000000000A1 -S315400247D00000000000000000000000000000000091 -S315400247E00000000000000000000000000000000081 -S315400247F00000000000000000000000000000000071 -S315400248000000000000000000000000000000000060 -S315400248100000000000000000000000000000000050 -S315400248200000000000000000000000000000000040 -S315400248300000000000000000000000000000000030 -S315400248400000000000000000000000000000000020 -S315400248500000000000000000000000000000000010 -S315400248600000000000000000000000000000000000 -S3154002487000000000000000000000000000000000F0 -S3154002488000000000000000000000000000000000E0 -S3154002489000000000000000000000000000000000D0 -S315400248A000000000000000000000000000000000C0 -S315400248B000000000000000000000000000000000B0 -S315400248C000000000000000000000000000000000A0 -S315400248D00000000000000000000000000000000090 -S315400248E00000000000000000000000000000000080 -S315400248F00000000000000000000000000000000070 -S31540024900000000000000000000000000000000005F -S31540024910000000000000000000000000000000004F -S31540024920000000000000000000000000000000003F -S31540024930000000000000000000000000000000002F -S31540024940000000000000000000000000000000001F -S31540024950000000000000000000000000000000000F -S3154002496000000000000000000000000000000000FF -S3154002497000000000000000000000000000000000EF -S3154002498000000000000000000000000000000000DF -S3154002499000000000000000000000000000000000CF -S315400249A000000000000000000000000000000000BF -S315400249B000000000000000000000000000000000AF -S315400249C0000000000000000000000000000000009F -S315400249D0000000000000000000000000000000008F -S315400249E0000000000000000000000000000000007F -S315400249F0000000000000000000000000000000006F -S31540024A00000000000000000000000000000000005E -S31540024A10000000000000000000000000000000004E -S31540024A20000000000000000000000000000000003E -S31540024A30000000000000000000000000000000002E -S31540024A40000000000000000000000000000000001E -S31540024A50000000000000000000000000000000000E -S31540024A6000000000000000000000000000000000FE -S31540024A7000000000000000000000000000000000EE -S31540024A8000000000000000000000000000000000DE -S31540024A9000000000000000000000000000000000CE -S31540024AA000000000000000000000000000000000BE -S31540024AB000000000000000000000000000000000AE -S31540024AC0000000000000000000000000000000009E -S31540024AD0000000000000000000000000000000008E -S31540024AE0000000000000000000000000000000007E -S31540024AF0000000000000000000000000000000006E -S31540024B00000000000000000000000000000000005D -S31540024B10000000000000000000000000000000004D -S31540024B20000000000000000000000000000000003D -S31540024B30000000000000000000000000000000002D -S31540024B40000000000000000000000000000000001D -S31540024B50000000000000000000000000000000000D -S31540024B6000000000000000000000000000000000FD -S31540024B7000000000000000000000000000000000ED -S31540024B8000000000000000000000000000000000DD -S31540024B9000000000000000000000000000000000CD -S31540024BA000000000000000000000000000000000BD -S31540024BB000000000000000000000000000000000AD -S31540024BC0000000000000000000000000000000009D -S31540024BD0000000000000000000000000000000008D -S31540024BE0000000000000000000000000000000007D -S31540024BF0000000000000000000000000000000006D -S31540024C00000000000000000000000000000000005C -S31540024C10000000000000000000000000000000004C -S31540024C20000000000000000000000000000000003C -S31540024C30000000000000000000000000000000002C -S31540024C40000000000000000000000000000000001C -S31540024C50000000000000000000000000000000000C -S31540024C6000000000000000000000000000000000FC -S31540024C7000000000000000000000000000000000EC -S31540024C8000000000000000000000000000000000DC -S31540024C9000000000000000000000000000000000CC -S31540024CA000000000000000000000000000000000BC -S31540024CB000000000000000000000000000000000AC -S31540024CC0000000000000000000000000000000009C -S31540024CD0000000000000000000000000000000008C -S31540024CE0000000000000000000000000000000007C -S31540024CF0000000000000000000000000000000006C -S31540024D00000000000000000000000000000000005B -S31540024D10000000000000000000000000000000004B -S31540024D20000000000000000000000000000000003B -S31540024D30000000000000000000000000000000002B -S31540024D40000000000000000000000000000000001B -S31540024D50000000000000000000000000000000000B -S31540024D6000000000000000000000000000000000FB -S31540024D7000000000000000000000000000000000EB -S31540024D8000000000000000000000000000000000DB -S31540024D9000000000000000000000000000000000CB -S31540024DA000000000000000000000000000000000BB -S31540024DB000000000000000000000000000000000AB -S31540024DC0000000000000000000000000000000009B -S31540024DD0000000000000000000000000000000008B -S31540024DE0000000000000000000000000000000007B -S31540024DF0000000000000000000000000000000006B -S31540024E00000000000000000000000000000000005A -S31540024E10000000000000000000000000000000004A -S31540024E20000000000000000000000000000000003A -S31540024E30000000000000000000000000000000002A -S31540024E40000000000000000000000000000000001A -S31540024E50000000000000000000000000000000000A -S31540024E6000000000000000000000000000000000FA -S31540024E7000000000000000000000000000000000EA -S31540024E8000000000000000000000000000000000DA -S31540024E9000000000000000000000000000000000CA -S31540024EA000000000000000000000000000000000BA -S31540024EB000000000000000000000000000000000AA -S31540024EC0000000000000000000000000000000009A -S31540024ED0000000000000000000000000000000008A -S31540024EE0000000000000000000000000000000007A -S31540024EF0000000000000000000000000000000006A -S31540024F000000000000000000000000000000000059 -S31540024F100000000000000000000000000000000049 -S31540024F200000000000000000000000000000000039 -S31540024F300000000000000000000000000000000029 -S31540024F400000000000000000000000000000000019 -S31540024F500000000000000000000000000000000009 -S31540024F6000000000000000000000000000000000F9 -S31540024F7000000000000000000000000000000000E9 -S31540024F8000000000000000000000000000000000D9 -S31540024F9000000000000000000000000000000000C9 -S31540024FA000000000000000000000000000000000B9 -S31540024FB000000000000000000000000000000000A9 -S31540024FC00000000000000000000000000000000099 -S31540024FD00000000000000000000000000000000089 -S31540024FE00000000000000000000000000000000079 -S31540024FF00000000000000000000000000000000069 -S315400250000000000000000000000000000000000058 -S315400250100000000000000000000000000000000048 -S315400250200000000000000000000000000000000038 -S315400250300000000000000000000000000000000028 -S315400250400000000000000000000000000000000018 -S315400250500000000000000000000000000000000008 -S3154002506000000000000000000000000000000000F8 -S3154002507000000000000000000000000000000000E8 -S3154002508000000000000000000000000000000000D8 -S3154002509000000000000000000000000000000000C8 -S315400250A000000000000000000000000000000000B8 -S315400250B000000000000000000000000000000000A8 -S315400250C00000000000000000000000000000000098 -S315400250D00000000000000000000000000000000088 -S315400250E00000000000000000000000000000000078 -S315400250F00000000000000000000000000000000068 -S315400251000000000000000000000000000000000057 -S315400251100000000000000000000000000000000047 -S315400251200000000000000000000000000000000037 -S315400251300000000000000000000000000000000027 -S315400251400000000000000000000000000000000017 -S315400251500000000000000000000000000000000007 -S3154002516000000000000000000000000000000000F7 -S3154002517000000000000000000000000000000000E7 -S3154002518000000000000000000000000000000000D7 -S3154002519000000000000000000000000000000000C7 -S315400251A000000000000000000000000000000000B7 -S315400251B000000000000000000000000000000000A7 -S315400251C00000000000000000000000000000000097 -S315400251D00000000000000000000000000000000087 -S315400251E00000000000000000000000000000000077 -S315400251F00000000000000000000000000000000067 -S315400252000000000000000000000000000000000056 -S315400252100000000000000000000000000000000046 -S315400252200000000000000000000000000000000036 -S315400252300000000000000000000000000000000026 -S315400252400000000000000000000000000000000016 -S315400252500000000000000000000000000000000006 -S3154002526000000000000000000000000000000000F6 -S3154002527000000000000000000000000000000000E6 -S3154002528000000000000000000000000000000000D6 -S3154002529000000000000000000000000000000000C6 -S315400252A000000000000000000000000000000000B6 -S315400252B000000000000000000000000000000000A6 -S315400252C00000000000000000000000000000000096 -S315400252D00000000000000000000000000000000086 -S315400252E00000000000000000000000000000000076 -S315400252F00000000000000000000000000000000066 -S315400253000000000000000000000000000000000055 -S315400253100000000000000000000000000000000045 -S315400253200000000000000000000000000000000035 -S315400253300000000000000000000000000000000025 -S315400253400000000000000000000000000000000015 -S315400253500000000000000000000000000000000005 -S3154002536000000000000000000000000000000000F5 -S3154002537000000000000000000000000000000000E5 -S3154002538000000000000000000000000000000000D5 -S3154002539000000000000000000000000000000000C5 -S315400253A000000000000000000000000000000000B5 -S315400253B000000000000000000000000000000000A5 -S315400253C00000000000000000000000000000000095 -S315400253D00000000000000000000000000000000085 -S315400253E00000000000000000000000000000000075 -S315400253F00000000000000000000000000000000065 -S315400254000000000000000000000000000000000054 -S315400254100000000000000000000000000000000044 -S315400254200000000000000000000000000000000034 -S315400254300000000000000000000000000000000024 -S315400254400000000000000000000000000000000014 -S315400254500000000000000000000000000000000004 -S3154002546000000000000000000000000000000000F4 -S3154002547000000000000000000000000000000000E4 -S3154002548000000000000000000000000000000000D4 -S3154002549000000000000000000000000000000000C4 -S315400254A000000000000000000000000000000000B4 -S315400254B000000000000000000000000000000000A4 -S315400254C00000000000000000000000000000000094 -S315400254D00000000000000000000000000000000084 -S315400254E00000000000000000000000000000000074 -S315400254F00000000000000000000000000000000064 -S315400255000000000000000000000000000000000053 -S315400255100000000000000000000000000000000043 -S315400255200000000000000000000000000000000033 -S315400255300000000000000000000000000000000023 -S315400255400000000000000000000000000000000013 -S315400255500000000000000000000000000000000003 -S3154002556000000000000000000000000000000000F3 -S3154002557000000000000000000000000000000000E3 -S3154002558000000000000000000000000000000000D3 -S3154002559000000000000000000000000000000000C3 -S315400255A000000000000000000000000000000000B3 -S315400255B000000000000000000000000000000000A3 -S315400255C00000000000000000000000000000000093 -S315400255D00000000000000000000000000000000083 -S315400255E00000000000000000000000000000000073 -S315400255F00000000000000000000000000000000063 -S315400256000000000000000000000000000000000052 -S315400256100000000000000000000000000000000042 -S315400256200000000000000000000000000000000032 -S315400256300000000000000000000000000000000022 -S315400256400000000000000000000000000000000012 -S315400256500000000000000000000000000000000002 -S3154002566000000000000000000000000000000000F2 -S3154002567000000000000000000000000000000000E2 -S3154002568000000000000000000000000000000000D2 -S3154002569000000000000000000000000000000000C2 -S315400256A000000000000000000000000000000000B2 -S315400256B000000000000000000000000000000000A2 -S315400256C00000000000000000000000000000000092 -S315400256D00000000000000000000000000000000082 -S315400256E00000000000000000000000000000000072 -S315400256F00000000000000000000000000000000062 -S315400257000000000000000000000000000000000051 -S315400257100000000000000000000000000000000041 -S315400257200000000000000000000000000000000031 -S315400257300000000000000000000000000000000021 -S315400257400000000000000000000000000000000011 -S315400257500000000000000000000000000000000001 -S3154002576000000000000000000000000000000000F1 -S3154002577000000000000000000000000000000000E1 -S3154002578000000000000000000000000000000000D1 -S3154002579000000000000000000000000000000000C1 -S315400257A000000000000000000000000000000000B1 -S315400257B000000000000000000000000000000000A1 -S315400257C00000000000000000000000000000000091 -S315400257D00000000000000000000000000000000081 -S315400257E00000000000000000000000000000000071 -S315400257F00000000000000000000000000000000061 -S315400258000000000000000000000000000000000050 -S315400258100000000000000000000000000000000040 -S315400258200000000000000000000000000000000030 -S315400258300000000000000000000000000000000020 -S315400258400000000000000000000000000000000010 -S315400258500000000000000000000000000000000000 -S3154002586000000000000000000000000000000000F0 -S3154002587000000000000000000000000000000000E0 -S3154002588000000000000000000000000000000000D0 -S3154002589000000000000000000000000000000000C0 -S315400258A000000000000000000000000000000000B0 -S315400258B000000000000000000000000000000000A0 -S315400258C00000000000000000000000000000000090 -S315400258D00000000000000000000000000000000080 -S315400258E00000000000000000000000000000000070 -S315400258F00000000000000000000000000000000060 -S31540025900000000000000000000000000000000004F -S31540025910000000000000000000000000000000003F -S31540025920000000000000000000000000000000002F -S31540025930000000000000000000000000000000001F -S31540025940000000000000000000000000000000000F -S3154002595000000000000000000000000000000000FF -S3154002596000000000000000000000000000000000EF -S3154002597000000000000000000000000000000000DF -S3154002598000000000000000000000000000000000CF -S3154002599000000000000000000000000000000000BF -S315400259A000000000000000000000000000000000AF -S315400259B0000000000000000000000000000000009F -S315400259C0000000000000000000000000000000008F -S315400259D0000000000000000000000000000000007F -S315400259E0000000000000000000000000000000006F -S315400259F0000000000000000000000000000000005F -S31540025A00000000000000000000000000000000004E -S31540025A10000000000000000000000000000000003E -S31540025A20000000000000000000000000000000002E -S31540025A30000000000000000000000000000000001E -S31540025A40000000000000000000000000000000000E -S31540025A5000000000000000000000000000000000FE -S31540025A6000000000000000000000000000000000EE -S31540025A7000000000000000000000000000000000DE -S31540025A8000000000000000000000000000000000CE -S31540025A9000000000000000000000000000000000BE -S31540025AA000000000000000000000000000000000AE -S31540025AB0000000000000000000000000000000009E -S31540025AC0000000000000000000000000000000008E -S31540025AD0000000000000000000000000000000007E -S31540025AE0000000000000000000000000000000006E -S31540025AF0000000000000000000000000000000005E -S31540025B00000000000000000000000000000000004D -S31540025B10000000000000000000000000000000003D -S31540025B20000000000000000000000000000000002D -S31540025B30000000000000000000000000000000001D -S31540025B40000000000000000000000000000000000D -S31540025B5000000000000000000000000000000000FD -S31540025B6000000000000000000000000000000000ED -S31540025B7000000000000000000000000000000000DD -S31540025B8000000000000000000000000000000000CD -S31540025B9000000000000000000000000000000000BD -S31540025BA000000000000000000000000000000000AD -S31540025BB0000000000000000000000000000000009D -S31540025BC0000000000000000000000000000000008D -S31540025BD0000000000000000000000000000000007D -S31540025BE0000000000000000000000000000000006D -S31540025BF0000000000000000000000000000000005D -S31540025C00000000000000000000000000000000004C -S31540025C10000000000000000000000000000000003C -S31540025C20000000000000000000000000000000002C -S31540025C30000000000000000000000000000000001C -S31540025C40000000000000000000000000000000000C -S31540025C5000000000000000000000000000000000FC -S31540025C6000000000000000000000000000000000EC -S31540025C7000000000000000000000000000000000DC -S31540025C8000000000000000000000000000000000CC -S31540025C9000000000000000000000000000000000BC -S31540025CA000000000000000000000000000000000AC -S31540025CB0000000000000000000000000000000009C -S31540025CC0000000000000000000000000000000008C -S31540025CD0000000000000000000000000000000007C -S31540025CE0000000000000000000000000000000006C -S31540025CF0000000000000000000000000000000005C -S31540025D00000000000000000000000000000000004B -S31540025D10000000000000000000000000000000003B -S31540025D20000000000000000000000000000000002B -S31540025D30000000000000000000000000000000001B -S31540025D40000000000000000000000000000000000B -S31540025D5000000000000000000000000000000000FB -S31540025D6000000000000000000000000000000000EB -S31540025D7000000000000000000000000000000000DB -S31540025D8000000000000000000000000000000000CB -S31540025D9000000000000000000000000000000000BB -S31540025DA000000000000000000000000000000000AB -S31540025DB0000000000000000000000000000000009B -S31540025DC0000000000000000000000000000000008B -S31540025DD0000000000000000000000000000000007B -S31540025DE0000000000000000000000000000000006B -S31540025DF0000000000000000000000000000000005B -S31540025E00000000000000000000000000000000004A -S31540025E10000000000000000000000000000000003A -S31540025E20000000000000000000000000000000002A -S31540025E30000000000000000000000000000000001A -S31540025E40000000000000000000000000000000000A -S31540025E5000000000000000000000000000000000FA -S31540025E6000000000000000000000000000000000EA -S31540025E7000000000000000000000000000000000DA -S31540025E8000000000000000000000000000000000CA -S31540025E9000000000000000000000000000000000BA -S31540025EA000000000000000000000000000000000AA -S31540025EB0000000000000000000000000000000009A -S31540025EC0000000000000000000000000000000008A -S31540025ED0000000000000000000000000000000007A -S31540025EE0000000000000000000000000000000006A -S31540025EF0000000000000000000000000000000005A -S31540025F000000000000000000000000000000000049 -S31540025F100000000000000000000000000000000039 -S31540025F200000000000000000000000000000000029 -S31540025F300000000000000000000000000000000019 -S31540025F400000000000000000000000000000000009 -S31540025F5000000000000000000000000000000000F9 -S31540025F6000000000000000000000000000000000E9 -S31540025F7000000000000000000000000000000000D9 -S31540025F8000000000000000000000000000000000C9 -S31540025F9000000000000000000000000000000000B9 -S31540025FA000000000000000000000000000000000A9 -S31540025FB00000000000000000000000000000000099 -S31540025FC00000000000000000000000000000000089 -S31540025FD00000000000000000000000000000000079 -S31540025FE00000000000000000000000000000000069 -S31540025FF00000000000000000000000000000000059 -S315400260000000000000000000000000000000000048 -S315400260100000000000000000000000000000000038 -S315400260200000000000000000000000000000000028 -S315400260300000000000000000000000000000000018 -S315400260400000000000000000000000000000000008 -S3154002605000000000000000000000000000000000F8 -S3154002606000000000000000000000000000000000E8 -S3154002607000000000000000000000000000000000D8 -S3154002608000000000000000000000000000000000C8 -S3154002609000000000000000000000000000000000B8 -S315400260A000000000000000000000000000000000A8 -S315400260B00000000000000000000000000000000098 -S315400260C00000000000000000000000000000000088 -S315400260D00000000000000000000000000000000078 -S315400260E00000000000000000000000000000000068 -S315400260F00000000000000000000000000000000058 -S315400261000000000000000000000000000000000047 -S315400261100000000000000000000000000000000037 -S315400261200000000000000000000000000000000027 -S315400261300000000000000000000000000000000017 -S315400261400000000000000000000000000000000007 -S3154002615000000000000000000000000000000000F7 -S3154002616000000000000000000000000000000000E7 -S3154002617000000000000000000000000000000000D7 -S3154002618000000000000000000000000000000000C7 -S3154002619000000000000000000000000000000000B7 -S315400261A000000000000000000000000000000000A7 -S315400261B00000000000000000000000000000000097 -S315400261C00000000000000000000000000000000087 -S315400261D00000000000000000000000000000000077 -S315400261E00000000000000000000000000000000067 -S315400261F00000000000000000000000000000000057 -S315400262000000000000000000000000000000000046 -S315400262100000000000000000000000000000000036 -S315400262200000000000000000000000000000000026 -S315400262300000000000000000000000000000000016 -S315400262400000000000000000000000000000000006 -S3154002625000000000000000000000000000000000F6 -S3154002626000000000000000000000000000000000E6 -S3154002627000000000000000000000000000000000D6 -S3154002628000000000000000000000000000000000C6 -S3154002629000000000000000000000000000000000B6 -S315400262A000000000000000000000000000000000A6 -S315400262B00000000000000000000000000000000096 -S315400262C00000000000000000000000000000000086 -S315400262D00000000000000000000000000000000076 -S315400262E00000000000000000000000000000000066 -S315400262F00000000000000000000000000000000056 -S315400263000000000000000000000000000000000045 -S315400263100000000000000000000000000000000035 -S315400263200000000000000000000000000000000025 -S315400263300000000000000000000000000000000015 -S315400263400000000000000000000000000000000005 -S3154002635000000000000000000000000000000000F5 -S3154002636000000000000000000000000000000000E5 -S3154002637000000000000000000000000000000000D5 -S3154002638000000000000000000000000000000000C5 -S3154002639000000000000000000000000000000000B5 -S315400263A000000000000000000000000000000000A5 -S315400263B00000000000000000000000000000000095 -S315400263C00000000000000000000000000000000085 -S315400263D00000000000000000000000000000000075 -S315400263E00000000000000000000000000000000065 -S315400263F00000000000000000000000000000000055 -S315400264000000000000000000000000000000000044 -S315400264100000000000000000000000000000000034 -S315400264200000000000000000000000000000000024 -S315400264300000000000000000000000000000000014 -S315400264400000000000000000000000000000000004 -S3154002645000000000000000000000000000000000F4 -S3154002646000000000000000000000000000000000E4 -S3154002647000000000000000000000000000000000D4 -S3154002648000000000000000000000000000000000C4 -S3154002649000000000000000000000000000000000B4 -S315400264A000000000000000000000000000000000A4 -S315400264B00000000000000000000000000000000094 -S315400264C00000000000000000000000000000000084 -S315400264D00000000000000000000000000000000074 -S315400264E00000000000000000000000000000000064 -S315400264F00000000000000000000000000000000054 -S315400265000000000000000000000000000000000043 -S315400265100000000000000000000000000000000033 -S315400265200000000000000000000000000000000023 -S315400265300000000000000000000000000000000013 -S315400265400000000000000000000000000000000003 -S3154002655000000000000000000000000000000000F3 -S3154002656000000000000000000000000000000000E3 -S3154002657000000000000000000000000000000000D3 -S3154002658000000000000000000000000000000000C3 -S3154002659000000000000000000000000000000000B3 -S315400265A000000000000000000000000000000000A3 -S315400265B00000000000000000000000000000000093 -S315400265C00000000000000000000000000000000083 -S315400265D00000000000000000000000000000000073 -S315400265E00000000000000000000000000000000063 -S315400265F00000000000000000000000000000000053 -S315400266000000000000000000000000000000000042 -S315400266100000000000000000000000000000000032 -S315400266200000000000000000000000000000000022 -S315400266300000000000000000000000000000000012 -S315400266400000000000000000000000000000000002 -S3154002665000000000000000000000000000000000F2 -S3154002666000000000000000000000000000000000E2 -S3154002667000000000000000000000000000000000D2 -S3154002668000000000000000000000000000000000C2 -S3154002669000000000000000000000000000000000B2 -S315400266A000000000000000000000000000000000A2 -S315400266B00000000000000000000000000000000092 -S315400266C00000000000000000000000000000000082 -S315400266D00000000000000000000000000000000072 -S315400266E00000000000000000000000000000000062 -S315400266F00000000000000000000000000000000052 -S315400267000000000000000000000000000000000041 -S315400267100000000000000000000000000000000031 -S315400267200000000000000000000000000000000021 -S315400267300000000000000000000000000000000011 -S315400267400000000000000000000000000000000001 -S3154002675000000000000000000000000000000000F1 -S3154002676000000000000000000000000000000000E1 -S3154002677000000000000000000000000000000000D1 -S3154002678000000000000000000000000000000000C1 -S3154002679000000000000000000000000000000000B1 -S315400267A000000000000000000000000000000000A1 -S315400267B00000000000000000000000000000000091 -S315400267C00000000000000000000000000000000081 -S315400267D00000000000000000000000000000000071 -S315400267E00000000000000000000000000000000061 -S315400267F00000000000000000000000000000000051 -S315400268000000000000000000000000000000000040 -S315400268100000000000000000000000000000000030 -S315400268200000000000000000000000000000000020 -S315400268300000000000000000000000000000000010 -S315400268400000000000000000000000000000000000 -S3154002685000000000000000000000000000000000F0 -S3154002686000000000000000000000000000000000E0 -S3154002687000000000000000000000000000000000D0 -S3154002688000000000000000000000000000000000C0 -S3154002689000000000000000000000000000000000B0 -S315400268A000000000000000000000000000000000A0 -S315400268B00000000000000000000000000000000090 -S315400268C00000000000000000000000000000000080 -S315400268D00000000000000000000000000000000070 -S315400268E00000000000000000000000000000000060 -S315400268F00000000000000000000000000000000050 -S31540026900000000000000000000000000000000003F -S31540026910000000000000000000000000000000002F -S31540026920000000000000000000000000000000001F -S31540026930000000000000000000000000000000000F -S3154002694000000000000000000000000000000000FF -S3154002695000000000000000000000000000000000EF -S3154002696000000000000000000000000000000000DF -S3154002697000000000000000000000000000000000CF -S3154002698000000000000000000000000000000000BF -S3154002699000000000000000000000000000000000AF -S315400269A0000000000000000000000000000000009F -S315400269B0000000000000000000000000000000008F -S315400269C0000000000000000000000000000000007F -S315400269D0000000000000000000000000000000006F -S315400269E0000000000000000000000000000000005F -S315400269F0000000000000000000000000000000004F -S31540026A00000000000000000000000000000000003E -S31540026A10000000000000000000000000000000002E -S31540026A20000000000000000000000000000000001E -S31540026A30000000000000000000000000000000000E -S31540026A4000000000000000000000000000000000FE -S31540026A5000000000000000000000000000000000EE -S31540026A6000000000000000000000000000000000DE -S31540026A7000000000000000000000000000000000CE -S31540026A8000000000000000000000000000000000BE -S31540026A9000000000000000000000000000000000AE -S31540026AA0000000000000000000000000000000009E -S31540026AB0000000000000000000000000000000008E -S31540026AC0000000000000000000000000000000007E -S31540026AD0000000000000000000000000000000006E -S31540026AE0000000000000000000000000000000005E -S31540026AF0000000000000000000000000000000004E -S31540026B00000000000000000000000000000000003D -S31540026B10000000000000000000000000000000002D -S31540026B20000000000000000000000000000000001D -S31540026B30000000000000000000000000000000000D -S31540026B4000000000000000000000000000000000FD -S31540026B5000000000000000000000000000000000ED -S31540026B6000000000000000000000000000000000DD -S31540026B7000000000000000000000000000000000CD -S31540026B8000000000000000000000000000000000BD -S31540026B9000000000000000000000000000000000AD -S31540026BA0000000000000000000000000000000009D -S31540026BB0000000000000000000000000000000008D -S31540026BC0000000000000000000000000000000007D -S31540026BD0000000000000000000000000000000006D -S31540026BE0000000000000000000000000000000005D -S31540026BF0000000000000000000000000000000004D -S31540026C00000000000000000000000000000000003C -S31540026C10000000000000000000000000000000002C -S31540026C20000000000000000000000000000000001C -S31540026C30000000000000000000000000000000000C -S31540026C4000000000000000000000000000000000FC -S31540026C5000000000000000000000000000000000EC -S31540026C6000000000000000000000000000000000DC -S31540026C7000000000000000000000000000000000CC -S31540026C8000000000000000000000000000000000BC -S31540026C9000000000000000000000000000000000AC -S31540026CA0000000000000000000000000000000009C -S31540026CB0000000000000000000000000000000008C -S31540026CC0000000000000000000000000000000007C -S31540026CD0000000000000000000000000000000006C -S31540026CE0000000000000000000000000000000005C -S31540026CF0000000000000000000000000000000004C -S31540026D00000000000000000000000000000000003B -S31540026D10000000000000000000000000000000002B -S31540026D20000000000000000000000000000000001B -S31540026D30000000000000000000000000000000000B -S31540026D4000000000000000000000000000000000FB -S31540026D5000000000000000000000000000000000EB -S31540026D6000000000000000000000000000000000DB -S31540026D7000000000000000000000000000000000CB -S31540026D8000000000000000000000000000000000BB -S31540026D9000000000000000000000000000000000AB -S31540026DA0000000000000000000000000000000009B -S31540026DB0000000000000000000000000000000008B -S31540026DC0000000000000000000000000000000007B -S31540026DD0000000000000000000000000000000006B -S31540026DE0000000000000000000000000000000005B -S31540026DF0000000000000000000000000000000004B -S31540026E00000000000000000000000000000000003A -S31540026E10000000000000000000000000000000002A -S31540026E20000000000000000000000000000000001A -S31540026E30000000000000000000000000000000000A -S31540026E4000000000000000000000000000000000FA -S31540026E5000000000000000000000000000000000EA -S31540026E6000000000000000000000000000000000DA -S31540026E7000000000000000000000000000000000CA -S31540026E8000000000000000000000000000000000BA -S31540026E9000000000000000000000000000000000AA -S31540026EA0000000000000000000000000000000009A -S31540026EB0000000000000000000000000000000008A -S31540026EC0000000000000000000000000000000007A -S31540026ED0000000000000000000000000000000006A -S31540026EE0000000000000000000000000000000005A -S31540026EF0000000000000000000000000000000004A -S31540026F000000000000000000000000000000000039 -S31540026F100000000000000000000000000000000029 -S31540026F200000000000000000000000000000000019 -S31540026F300000000000000000000000000000000009 -S31540026F4000000000000000000000000000000000F9 -S31540026F5000000000000000000000000000000000E9 -S31540026F6000000000000000000000000000000000D9 -S31540026F7000000000000000000000000000000000C9 -S31540026F8000000000000000000000000000000000B9 -S31540026F9000000000000000000000000000000000A9 -S31540026FA00000000000000000000000000000000099 -S31540026FB00000000000000000000000000000000089 -S31540026FC00000000000000000000000000000000079 -S31540026FD00000000000000000000000000000000069 -S31540026FE00000000000000000000000000000000059 -S31540026FF00000000000000000000000000000000049 -S315400270000000000000000000000000000000000038 -S315400270100000000000000000000000000000000028 -S315400270200000000000000000000000000000000018 -S315400270300000000000000000000000000000000008 -S3154002704000000000000000000000000000000000F8 -S3154002705000000000000000000000000000000000E8 -S3154002706000000000000000000000000000000000D8 -S3154002707000000000000000000000000000000000C8 -S3154002708000000000000000000000000000000000B8 -S3154002709000000000000000000000000000000000A8 -S315400270A00000000000000000000000000000000098 -S315400270B00000000000000000000000000000000088 -S315400270C00000000000000000000000000000000078 -S315400270D00000000000000000000000000000000068 -S315400270E00000000000000000000000000000000058 -S315400270F00000000000000000000000000000000048 -S315400271000000000000000000000000000000000037 -S315400271100000000000000000000000000000000027 -S315400271200000000000000000000000000000000017 -S315400271300000000000000000000000000000000007 -S3154002714000000000000000000000000000000000F7 -S3154002715000000000000000000000000000000000E7 -S3154002716000000000000000000000000000000000D7 -S3154002717000000000000000000000000000000000C7 -S3154002718000000000000000000000000000000000B7 -S3154002719000000000000000000000000000000000A7 -S315400271A00000000000000000000000000000000097 -S315400271B00000000000000000000000000000000087 -S315400271C00000000000000000000000000000000077 -S315400271D00000000000000000000000000000000067 -S315400271E00000000000000000000000000000000057 -S315400271F00000000000000000000000000000000047 -S315400272000000000000000000000000000000000036 -S315400272100000000000000000000000000000000026 -S315400272200000000000000000000000000000000016 -S315400272300000000000000000000000000000000006 -S3154002724000000000000000000000000000000000F6 -S3154002725000000000000000000000000000000000E6 -S3154002726000000000000000000000000000000000D6 -S3154002727000000000000000000000000000000000C6 -S3154002728000000000000000000000000000000000B6 -S3154002729000000000000000000000000000000000A6 -S315400272A00000000000000000000000000000000096 -S315400272B00000000000000000000000000000000086 -S315400272C00000000000000000000000000000000076 -S315400272D00000000000000000000000000000000066 -S315400272E00000000000000000000000000000000056 -S315400272F00000000000000000000000000000000046 -S315400273000000000000000000000000000000000035 -S315400273100000000000000000000000000000000025 -S315400273200000000000000000000000000000000015 -S315400273300000000000000000000000000000000005 -S3154002734000000000000000000000000000000000F5 -S3154002735000000000000000000000000000000000E5 -S3154002736000000000000000000000000000000000D5 -S3154002737000000000000000000000000000000000C5 -S3154002738000000000000000000000000000000000B5 -S3154002739000000000000000000000000000000000A5 -S315400273A00000000000000000000000000000000095 -S315400273B00000000000000000000000000000000085 -S315400273C00000000000000000000000000000000075 -S315400273D00000000000000000000000000000000065 -S315400273E00000000000000000000000000000000055 -S315400273F00000000000000000000000000000000045 -S315400274000000000000000000000000000000000034 -S315400274100000000000000000000000000000000024 -S315400274200000000000000000000000000000000014 -S315400274300000000000000000000000000000000004 -S3154002744000000000000000000000000000000000F4 -S3154002745000000000000000000000000000000000E4 -S3154002746000000000000000000000000000000000D4 -S3154002747000000000000000000000000000000000C4 -S3154002748000000000000000000000000000000000B4 -S3154002749000000000000000000000000000000000A4 -S315400274A00000000000000000000000000000000094 -S315400274B00000000000000000000000000000000084 -S315400274C00000000000000000000000000000000074 -S315400274D00000000000000000000000000000000064 -S315400274E00000000000000000000000000000000054 -S315400274F00000000000000000000000000000000044 -S315400275000000000000000000000000000000000033 -S315400275100000000000000000000000000000000023 -S315400275200000000000000000000000000000000013 -S315400275300000000000000000000000000000000003 -S3154002754000000000000000000000000000000000F3 -S3154002755000000000000000000000000000000000E3 -S3154002756000000000000000000000000000000000D3 -S3154002757000000000000000000000000000000000C3 -S3154002758000000000000000000000000000000000B3 -S3154002759000000000000000000000000000000000A3 -S315400275A00000000000000000000000000000000093 -S315400275B00000000000000000000000000000000083 -S315400275C00000000000000000000000000000000073 -S315400275D00000000000000000000000000000000063 -S315400275E00000000000000000000000000000000053 -S315400275F00000000000000000000000000000000043 -S315400276000000000000000000000000000000000032 -S315400276100000000000000000000000000000000022 -S315400276200000000000000000000000000000000012 -S315400276300000000000000000000000000000000002 -S3154002764000000000000000000000000000000000F2 -S3154002765000000000000000000000000000000000E2 -S3154002766000000000000000000000000000000000D2 -S3154002767000000000000000000000000000000000C2 -S3154002768000000000000000000000000000000000B2 -S3154002769000000000000000000000000000000000A2 -S315400276A00000000000000000000000000000000092 -S315400276B00000000000000000000000000000000082 -S315400276C00000000000000000000000000000000072 -S315400276D00000000000000000000000000000000062 -S315400276E00000000000000000000000000000000052 -S315400276F00000000000000000000000000000000042 -S315400277000000000000000000000000000000000031 -S315400277100000000000000000000000000000000021 -S315400277200000000000000000000000000000000011 -S315400277300000000000000000000000000000000001 -S3154002774000000000000000000000000000000000F1 -S3154002775000000000000000000000000000000000E1 -S3154002776000000000000000000000000000000000D1 -S3154002777000000000000000000000000000000000C1 -S3154002778000000000000000000000000000000000B1 -S3154002779000000000000000000000000000000000A1 -S315400277A00000000000000000000000000000000091 -S315400277B00000000000000000000000000000000081 -S315400277C00000000000000000000000000000000071 -S315400277D00000000000000000000000000000000061 -S315400277E00000000000000000000000000000000051 -S315400277F00000000000000000000000000000000041 -S315400278000000000000000000000000000000000030 -S315400278100000000000000000000000000000000020 -S315400278200000000000000000000000000000000010 -S315400278300000000000000000000000000000000000 -S3154002784000000000000000000000000000000000F0 -S3154002785000000000000000000000000000000000E0 -S3154002786000000000000000000000000000000000D0 -S3154002787000000000000000000000000000000000C0 -S3154002788000000000000000000000000000000000B0 -S3154002789000000000000000000000000000000000A0 -S315400278A00000000000000000000000000000000090 -S315400278B00000000000000000000000000000000080 -S315400278C00000000000000000000000000000000070 -S315400278D00000000000000000000000000000000060 -S315400278E00000000000000000000000000000000050 -S315400278F00000000000000000000000000000000040 -S31540027900000000000000000000000000000000002F -S31540027910000000000000000000000000000000001F -S31540027920000000000000000000000000000000000F -S3154002793000000000000000000000000000000000FF -S3154002794000000000000000000000000000000000EF -S3154002795000000000000000000000000000000000DF -S3154002796000000000000000000000000000000000CF -S3154002797000000000000000000000000000000000BF -S3154002798000000000000000000000000000000000AF -S31540027990000000000000000000000000000000009F -S315400279A0000000000000000000000000000000008F -S315400279B0000000000000000000000000000000007F -S315400279C0000000000000000000000000000000006F -S315400279D0000000000000000000000000000000005F -S315400279E0000000000000000000000000000000004F -S315400279F0000000000000000000000000000000003F -S31540027A00000000000000000000000000000000002E -S31540027A10000000000000000000000000000000001E -S31540027A20000000000000000000000000000000000E -S31540027A3000000000000000000000000000000000FE -S31540027A4000000000000000000000000000000000EE -S31540027A5000000000000000000000000000000000DE -S31540027A6000000000000000000000000000000000CE -S31540027A7000000000000000000000000000000000BE -S31540027A8000000000000000000000000000000000AE -S31540027A90000000000000000000000000000000009E -S31540027AA0000000000000000000000000000000008E -S31540027AB0000000000000000000000000000000007E -S31540027AC0000000000000000000000000000000006E -S31540027AD0000000000000000000000000000000005E -S31540027AE0000000000000000000000000000000004E -S31540027AF0000000000000000000000000000000003E -S31540027B00000000000000000000000000000000002D -S31540027B10000000000000000000000000000000001D -S31540027B20000000000000000000000000000000000D -S31540027B3000000000000000000000000000000000FD -S31540027B4000000000000000000000000000000000ED -S31540027B5000000000000000000000000000000000DD -S31540027B6000000000000000000000000000000000CD -S31540027B7000000000000000000000000000000000BD -S31540027B8000000000000000000000000000000000AD -S31540027B90000000000000000000000000000000009D -S31540027BA0000000000000000000000000000000008D -S31540027BB0000000000000000000000000000000007D -S31540027BC0000000000000000000000000000000006D -S31540027BD0000000000000000000000000000000005D -S31540027BE0000000000000000000000000000000004D -S31540027BF0000000000000000000000000000000003D -S31540027C00000000000000000000000000000000002C -S31540027C10000000000000000000000000000000001C -S31540027C20000000000000000000000000000000000C -S31540027C3000000000000000000000000000000000FC -S31540027C4000000000000000000000000000000000EC -S31540027C5000000000000000000000000000000000DC -S31540027C6000000000000000000000000000000000CC -S31540027C7000000000000000000000000000000000BC -S31540027C8000000000000000000000000000000000AC -S31540027C90000000000000000000000000000000009C -S31540027CA0000000000000000000000000000000008C -S31540027CB0000000000000000000000000000000007C -S31540027CC0000000000000000000000000000000006C -S31540027CD0000000000000000000000000000000005C -S31540027CE0000000000000000000000000000000004C -S31540027CF0000000000000000000000000000000003C -S31540027D00000000000000000000000000000000002B -S31540027D10000000000000000000000000000000001B -S31540027D20000000000000000000000000000000000B -S31540027D3000000000000000000000000000000000FB -S31540027D4000000000000000000000000000000000EB -S31540027D5000000000000000000000000000000000DB -S31540027D6000000000000000000000000000000000CB -S31540027D7000000000000000000000000000000000BB -S31540027D8000000000000000000000000000000000AB -S31540027D90000000000000000000000000000000009B -S31540027DA0000000000000000000000000000000008B -S31540027DB0000000000000000000000000000000007B -S31540027DC0000000000000000000000000000000006B -S31540027DD0000000000000000000000000000000005B -S31540027DE0000000000000000000000000000000004B -S31540027DF0000000000000000000000000000000003B -S31540027E00000000000000000000000000000000002A -S31540027E10000000000000000000000000000000001A -S31540027E20000000000000000000000000000000000A -S31540027E3000000000000000000000000000000000FA -S31540027E4000000000000000000000000000000000EA -S31540027E5000000000000000000000000000000000DA -S31540027E6000000000000000000000000000000000CA -S31540027E7000000000000000000000000000000000BA -S31540027E8000000000000000000000000000000000AA -S31540027E90000000000000000000000000000000009A -S31540027EA0000000000000000000000000000000008A -S31540027EB0000000000000000000000000000000007A -S31540027EC0000000000000000000000000000000006A -S31540027ED0000000000000000000000000000000005A -S31540027EE0000000000000000000000000000000004A -S31540027EF0000000000000000000000000000000003A -S31540027F000000000000000000000000000000000029 -S31540027F100000000000000000000000000000000019 -S31540027F200000000000000000000000000000000009 -S31540027F3000000000000000000000000000000000F9 -S31540027F4000000000000000000000000000000000E9 -S31540027F5000000000000000000000000000000000D9 -S31540027F6000000000000000000000000000000000C9 -S31540027F7000000000000000000000000000000000B9 -S31540027F8000000000000000000000000000000000A9 -S31540027F900000000000000000000000000000000099 -S31540027FA00000000000000000000000000000000089 -S31540027FB00000000000000000000000000000000079 -S31540027FC00000000000000000000000000000000069 -S31540027FD00000000000000000000000000000000059 -S31540027FE00000000000000000000000000000000049 -S31540027FF00000000000000000000000000000000039 -S315400280000000003F0000000C0000003F000000128C -S31540028010000000FF00000018000000000000000001 -S315400280200000000000000000000000000000000008 -S3154002803000000000000000000000000000000000F8 -S3154002804000000000000000000000000000000000E8 -S3154002805000000000000000000000000000000000D8 -S3154002806000000000000000000000000000000000C8 -S3154002807000000000000000000000000000000000B8 -S3154002808000000000000000000000000000000000A8 -S315400280900000000000000000000000000000000098 -S315400280A00000000000000000000000000000000088 -S315400280B00000000000000000000000000000000078 -S315400280C00000000000000000000000000000000068 -S315400280D00000000000000000000000000000000058 -S315400280E00000000000000000000000000000000048 -S315400280F00000000000000000000000000000000038 -S315400281000000000000000000000000000000000027 -S315400281100000000000000000000000000000000017 -S315400281200000000000000000000000000000000007 -S3154002813000000000000000000000000000000000F7 -S3154002814000000000000000000000000000000000E7 -S3154002815000000000000000000000000000000000D7 -S3154002816000000000000000000000000000000000C7 -S3154002817000000000000000000000000000000000B7 -S3154002818000000000000000000000000000000000A7 -S315400281900000000000000000000000000000000097 -S315400281A00000000000000000000000000000000087 -S315400281B00000000000000000000000000000000077 -S315400281C00000000000000000000000000000000067 -S315400281D00000000000000000000000000000000057 -S315400281E00000000000000000000000000000000047 -S315400281F00000000000000000000000000000000037 -S315400282000000000000000000000000000000000026 -S315400282100000000000000000000000000000000016 -S315400282200000000000000000000000000000000006 -S3154002823000000000000000000000000000000000F6 -S3154002824000000000000000000000000000000000E6 -S3154002825000000000000000000000000000000000D6 -S3154002826000000000000000000000000000000000C6 -S3154002827000000000000000000000000000000000B6 -S3154002828000000000000000000000000000000000A6 -S315400282900000000000000000000000000000000096 -S315400282A00000000000000000000000000000000086 -S315400282B00000000000000000000000000000000076 -S315400282C00000000000000000000000000000000066 -S315400282D00000000000000000000000000000000056 -S315400282E00000000000000000000000000000000046 -S315400282F00000000000000000000000000000000036 -S315400283000000000000000000000000000000000025 -S315400283100000000000000000000000000000000015 -S315400283200000000000000000000000000000000005 -S3154002833000000000000000000000000000000000F5 -S3154002834000000000000000000000000000000000E5 -S3154002835000000000000000000000000000000000D5 -S3154002836000000000000000000000000000000000C5 -S3154002837000000000000000000000000000000000B5 -S3154002838000000000000000000000000000000000A5 -S315400283900000000000000000000000000000000095 -S315400283A00000000000000000000000000000000085 -S315400283B00000000000000000000000000000000075 -S315400283C00000000000000000000000000000000065 -S315400283D00000000000000000000000000000000055 -S315400283E00000000000000000000000000000000045 -S315400283F00000000000000000000000000000000035 -S315400284000000000000000000000000000000000024 -S315400284100000000000000000000000000000000014 -S315400284200000000000000000000000000000000004 -S3154002843000000000000000000000000000000000F4 -S3154002844000000000000000000000000000000000E4 -S3154002845000000000000000000000000000000000D4 -S3154002846000000000000000000000000000000000C4 -S3154002847000000000000000000000000000000000B4 -S3154002848000000000000000000000000000000000A4 -S315400284900000000000000000000000000000000094 -S315400284A00000000000000000000000000000000084 -S315400284B00000000000000000000000000000000074 -S315400284C00000000000000000000000000000000064 -S315400284D00000000000000000000000000000000054 -S315400284E00000000000000000000000000000000044 -S315400284F00000000000000000000000000000000034 -S315400285000000000000000000000000000000000023 -S315400285100000000000000000000000000000000013 -S315400285200000000000000000000000000000000003 -S3154002853000000000000000000000000000000000F3 -S3154002854000000000000000000000000000000000E3 -S3154002855000000000000000000000000000000000D3 -S3154002856000000000000000000000000000000000C3 -S3154002857000000000000000000000000000000000B3 -S3154002858000000000000000000000000000000000A3 -S315400285900000000000000000000000000000000093 -S315400285A00000000000000000000000000000000083 -S315400285B00000000000000000000000000000000073 -S315400285C00000000000000000000000000000000063 -S315400285D00000000000000000000000000000000053 -S315400285E00000000000000000000000000000000043 -S315400285F00000000000000000000000000000000033 -S315400286000000000000000000000000000000000022 -S315400286100000000000000000000000000000000012 -S315400286200000000000000000000000000000000002 -S3154002863000000000000000000000000000000000F2 -S3154002864000000000000000000000000000000000E2 -S3154002865000000000000000000000000000000000D2 -S3154002866000000000000000000000000000000000C2 -S3154002867000000000000000000000000000000000B2 -S3154002868000000000000000000000000000000000A2 -S315400286900000000000000000000000000000000092 -S315400286A00000000000000000000000000000000082 -S315400286B00000000000000000000000000000000072 -S315400286C00000000000000000000000000000000062 -S315400286D00000000000000000000000000000000052 -S315400286E00000000000000000000000000000000042 -S315400286F00000000000000000000000000000000032 -S315400287000000000000000000000000000000000021 -S315400287100000000000000000000000000000000011 -S315400287200000000000000000000000000000000001 -S3154002873000000000000000000000000000000000F1 -S3154002874000000000000000000000000000000000E1 -S3154002875000000000000000000000000000000000D1 -S3154002876000000000000000000000000000000000C1 -S3154002877000000000000000000000000000000000B1 -S3154002878000000000000000000000000000000000A1 -S315400287900000000000000000000000000000000091 -S315400287A00000000000000000000000000000000081 -S315400287B00000000000000000000000000000000071 -S315400287C00000000000000000000000000000000061 -S315400287D00000000000000000000000000000000051 -S315400287E00000000000000000000000000000000041 -S315400287F00000000000000000000000000000000031 -S315400288000000000000000000000000000000000020 -S315400288100000000000000000000000000000000010 -S315400288200000000000000000000000000000000000 -S3154002883000000000000000000000000000000000F0 -S3154002884000000000000000000000000000000000E0 -S3154002885000000000000000000000000000000000D0 -S3154002886000000000000000000000000000000000C0 -S3154002887000000000000000000000000000000000B0 -S3154002888000000000000000000000000000000000A0 -S315400288900000000000000000000000000000000090 -S315400288A00000000000000000000000000000000080 -S315400288B00000000000000000000000000000000070 -S315400288C00000000000000000000000000000000060 -S315400288D00000000000000000000000000000000050 -S315400288E00000000000000000000000000000000040 -S315400288F00000000000000000000000000000000030 -S31540028900000000000000000000000000000000001F -S31540028910000000000000000000000000000000000F -S3154002892000000000000000000000000000000000FF -S3154002893000000000000000000000000000000000EF -S3154002894000000000000000000000000000000000DF -S3154002895000000000000000000000000000000000CF -S3154002896000000000000000000000000000000000BF -S3154002897000000000000000000000000000000000AF -S31540028980000000000000000000000000000000009F -S31540028990000000000000000000000000000000008F -S315400289A0000000000000000000000000000000007F -S315400289B0000000000000000000000000000000006F -S315400289C0000000000000000000000000000000005F -S315400289D0000000000000000000000000000000004F -S315400289E0000000000000000000000000000000003F -S315400289F0000000000000000000000000000000002F -S31540028A00000000000000000000000000000000001E -S31540028A10000000000000000000000000000000000E -S31540028A2000000000000000000000000000000000FE -S31540028A3000000000000000000000000000000000EE -S31540028A4000000000000000000000000000000000DE -S31540028A5000000000000000000000000000000000CE -S31540028A6000000000000000000000000000000000BE -S31540028A7000000000000000000000000000000000AE -S31540028A80000000000000000000000000000000009E -S31540028A90000000000000000000000000000000008E -S31540028AA0000000000000000000000000000000007E -S31540028AB0000000000000000000000000000000006E -S31540028AC0000000000000000000000000000000005E -S31540028AD0000000000000000000000000000000004E -S31540028AE0000000000000000000000000000000003E -S31540028AF0000000000000000000000000000000002E -S31540028B00000000000000000000000000000000001D -S31540028B10000000000000000000000000000000000D -S31540028B2000000000000000000000000000000000FD -S31540028B3000000000000000000000000000000000ED -S31540028B4000000000000000000000000000000000DD -S31540028B5000000000000000000000000000000000CD -S31540028B6000000000000000000000000000000000BD -S31540028B7000000000000000000000000000000000AD -S31540028B80000000000000000000000000000000009D -S31540028B90000000000000000000000000000000008D -S31540028BA0000000000000000000000000000000007D -S31540028BB0000000000000000000000000000000006D -S31540028BC0000000000000000000000000000000005D -S31540028BD0000000000000000000000000000000004D -S31540028BE0000000000000000000000000000000003D -S31540028BF0000000000000000000000000000000002D -S31540028C00000000000000000000000000000000001C -S31540028C10000000000000000000000000000000000C -S31540028C2000000000000000000000000000000000FC -S31540028C3000000000000000000000000000000000EC -S31540028C4000000000000000000000000000000000DC -S31540028C5000000000000000000000000000000000CC -S31540028C6000000000000000000000000000000000BC -S31540028C7000000000000000000000000000000000AC -S31540028C80000000000000000000000000000000009C -S31540028C90000000000000000000000000000000008C -S31540028CA0000000000000000000000000000000007C -S31540028CB0000000000000000000000000000000006C -S31540028CC0000000000000000000000000000000005C -S31540028CD0000000000000000000000000000000004C -S31540028CE0000000000000000000000000000000003C -S31540028CF0000000000000000000000000000000002C -S31540028D00000000000000000000000000000000001B -S31540028D10000000000000000000000000000000000B -S31540028D2000000000000000000000000000000000FB -S31540028D3000000000000000000000000000000000EB -S31540028D4000000000000000000000000000000000DB -S31540028D5000000000000000000000000000000000CB -S31540028D6000000000000000000000000000000000BB -S31540028D7000000000000000000000000000000000AB -S31540028D80000000000000000000000000000000009B -S31540028D90000000000000000000000000000000008B -S31540028DA0000000000000000000000000000000007B -S31540028DB0000000000000000000000000000000006B -S31540028DC0000000000000000000000000000000005B -S31540028DD0000000000000000000000000000000004B -S31540028DE0000000000000000000000000000000003B -S31540028DF0000000000000000000000000000000002B -S31540028E00000000000000000000000000000000001A -S31540028E10000000000000000000000000000000000A -S31540028E2000000000000000000000000000000000FA -S31540028E3000000000000000000000000000000000EA -S31540028E4000000000000000000000000000000000DA -S31540028E5000000000000000000000000000000000CA -S31540028E6000000000000000000000000000000000BA -S31540028E7000000000000000000000000000000000AA -S31540028E80000000000000000000000000000000009A -S31540028E90000000000000000000000000000000008A -S31540028EA0000000000000000000000000000000007A -S31540028EB0000000000000000000000000000000006A -S31540028EC0000000000000000000000000000000005A -S31540028ED0000000000000000000000000000000004A -S31540028EE0000000000000000000000000000000003A -S31540028EF0000000000000000000000000000000002A -S31540028F000000000000000000000000000000000019 -S31540028F100000000000000000000000000000000009 -S31540028F2000000000000000000000000000000000F9 -S31540028F3000000000000000000000000000000000E9 -S31540028F4000000000000000000000000000000000D9 -S31540028F5000000000000000000000000000000000C9 -S31540028F6000000000000000000000000000000000B9 -S31540028F7000000000000000000000000000000000A9 -S31540028F800000000000000000000000000000000099 -S31540028F900000000000000000000000000000000089 -S31540028FA00000000000000000000000000000000079 -S31540028FB00000000000000000000000000000000069 -S31540028FC00000000000000000000000000000000059 -S31540028FD00000000000000000000000000000000049 -S31540028FE00000000000000000000000000000000039 -S31540028FF00000000000000000000000000000000029 -S315400290000000000000000000000000000000000018 -S315400290100000000000000000000000000000000008 -S3154002902000000000000000000000000000000000F8 -S3154002903000000000000000000000000000000000E8 -S3154002904000000000000000000000000000000000D8 -S3154002905000000000000000000000000000000000C8 -S3154002906000000000000000000000000000000000B8 -S3154002907000000000000000000000000000000000A8 -S315400290800000000000000000000000000000000098 -S315400290900000000000000000000000000000000088 -S315400290A00000000000000000000000000000000078 -S315400290B00000000000000000000000000000000068 -S315400290C00000000000000000000000000000000058 -S315400290D00000000000000000000000000000000048 -S315400290E00000000000000000000000000000000038 -S315400290F00000000000000000000000000000000028 -S315400291000000000000000000000000000000000017 -S315400291100000000000000000000000000000000007 -S3154002912000000000000000000000000000000000F7 -S3154002913000000000000000000000000000000000E7 -S3154002914000000000000000000000000000000000D7 -S3154002915000000000000000000000000000000000C7 -S3154002916000000000000000000000000000000000B7 -S3154002917000000000000000000000000000000000A7 -S315400291800000000000000000000000000000000097 -S315400291900000000000000000000000000000000087 -S315400291A00000000000000000000000000000000077 -S315400291B00000000000000000000000000000000067 -S315400291C00000000000000000000000000000000057 -S315400291D00000000000000000000000000000000047 -S315400291E00000000000000000000000000000000037 -S315400291F00000000000000000000000000000000027 -S315400292000000000000000000000000000000000016 -S315400292100000000000000000000000000000000006 -S3154002922000000000000000000000000000000000F6 -S3154002923000000000000000000000000000000000E6 -S3154002924000000000000000000000000000000000D6 -S3154002925000000000000000000000000000000000C6 -S3154002926000000000000000000000000000000000B6 -S3154002927000000000000000000000000000000000A6 -S315400292800000000000000000000000000000000096 -S315400292900000000000000000000000000000000086 -S315400292A00000000000000000000000000000000076 -S315400292B00000000000000000000000000000000066 -S315400292C00000000000000000000000000000000056 -S315400292D00000000000000000000000000000000046 -S315400292E00000000000000000000000000000000036 -S315400292F00000000000000000000000000000000026 -S315400293000000000000000000000000000000000015 -S315400293100000000000000000000000000000000005 -S3154002932000000000000000000000000000000000F5 -S3154002933000000000000000000000000000000000E5 -S3154002934000000000000000000000000000000000D5 -S3154002935000000000000000000000000000000000C5 -S3154002936000000000000000000000000000000000B5 -S3154002937000000000000000000000000000000000A5 -S315400293800000000000000000000000000000000095 -S315400293900000000000000000000000000000000085 -S315400293A00000000000000000000000000000000075 -S315400293B00000000000000000000000000000000065 -S315400293C00000000000000000000000000000000055 -S315400293D00000000000000000000000000000000045 -S315400293E00000000000000000000000000000000035 -S315400293F00000000000000000000000000000000025 -S315400294000000000000000000000000000000000014 -S315400294100000000000000000000000000000000004 -S3154002942000000000000000000000000000000000F4 -S3154002943000000000000000000000000000000000E4 -S3154002944000000000000000000000000000000000D4 -S3154002945000000000000000000000000000000000C4 -S3154002946000000000000000000000000000000000B4 -S3154002947000000000000000000000000000000000A4 -S315400294800000000000000000000000000000000094 -S315400294900000000000000000000000000000000084 -S315400294A00000000000000000000000000000000074 -S315400294B00000000000000000000000000000000064 -S315400294C00000000000000000000000000000000054 -S315400294D00000000000000000000000000000000044 -S315400294E00000000000000000000000000000000034 -S315400294F00000000000000000000000000000000024 -S315400295000000000000000000000000000000000013 -S315400295100000000000000000000000000000000003 -S3154002952000000000000000000000000000000000F3 -S3154002953000000000000000000000000000000000E3 -S3154002954000000000000000000000000000000000D3 -S3154002955000000000000000000000000000000000C3 -S3154002956000000000000000000000000000000000B3 -S3154002957000000000000000000000000000000000A3 -S315400295800000000000000000000000000000000093 -S315400295900000000000000000000000000000000083 -S315400295A00000000000000000000000000000000073 -S315400295B00000000000000000000000000000000063 -S315400295C00000000000000000000000000000000053 -S315400295D00000000000000000000000000000000043 -S315400295E00000000000000000000000000000000033 -S315400295F00000000000000000000000000000000023 -S315400296000000000000000000000000000000000012 -S315400296100000000000000000000000000000000002 -S3154002962000000000000000000000000000000000F2 -S3154002963000000000000000000000000000000000E2 -S3154002964000000000000000000000000000000000D2 -S3154002965000000000000000000000000000000000C2 -S3154002966000000000000000000000000000000000B2 -S3154002967000000000000000000000000000000000A2 -S315400296800000000000000000000000000000000092 -S315400296900000000000000000000000000000000082 -S315400296A00000000000000000000000000000000072 -S315400296B00000000000000000000000000000000062 -S315400296C00000000000000000000000000000000052 -S315400296D00000000000000000000000000000000042 -S315400296E00000000000000000000000000000000032 -S315400296F00000000000000000000000000000000022 -S315400297000000000000000000000000000000000011 -S315400297100000000000000000000000000000000001 -S3154002972000000000000000000000000000000000F1 -S3154002973000000000000000000000000000000000E1 -S3154002974000000000000000000000000000000000D1 -S3154002975000000000000000000000000000000000C1 -S3154002976000000000000000000000000000000000B1 -S3154002977000000000000000000000000000000000A1 -S315400297800000000000000000000000000000000091 -S315400297900000000000000000000000000000000081 -S315400297A00000000000000000000000000000000071 -S315400297B00000000000000000000000000000000061 -S315400297C00000000000000000000000000000000051 -S315400297D00000000000000000000000000000000041 -S315400297E00000000000000000000000000000000031 -S315400297F00000000000000000000000000000000021 -S315400298000000000000000000000000000000000010 -S315400298100000000000000000000000000000000000 -S3154002982000000000000000000000000000000000F0 -S3154002983000000000000000000000000000000000E0 -S3154002984000000000000000000000000000000000D0 -S3154002985000000000000000000000000000000000C0 -S3154002986000000000000000000000000000000000B0 -S3154002987000000000000000000000000000000000A0 -S315400298800000000000000000000000000000000090 -S315400298900000000000000000000000000000000080 -S315400298A00000000000000000000000000000000070 -S315400298B00000000000000000000000000000000060 -S315400298C00000000000000000000000000000000050 -S315400298D00000000000000000000000000000000040 -S315400298E00000000000000000000000000000000030 -S315400298F00000000000000000000000000000000020 -S31540029900000000000000000000000000000000000F -S3154002991000000000000000000000000000000000FF -S3154002992000000000000000000000000000000000EF -S3154002993000000000000000000000000000000000DF -S3154002994000000000000000000000000000000000CF -S3154002995000000000000000000000000000000000BF -S3154002996000000000000000000000000000000000AF -S31540029970000000000000000000000000000000009F -S31540029980000000000000000000000000000000008F -S31540029990000000000000000000000000000000007F -S315400299A0000000000000000000000000000000006F -S315400299B0000000000000000000000000000000005F -S315400299C0000000000000000000000000000000004F -S315400299D0000000000000000000000000000000003F -S315400299E0000000000000000000000000000000002F -S315400299F0000000000000000000000000000000001F -S31540029A00000000000000000000000000000000000E -S31540029A1000000000000000000000000000000000FE -S31540029A2000000000000000000000000000000000EE -S31540029A3000000000000000000000000000000000DE -S31540029A4000000000000000000000000000000000CE -S31540029A5000000000000000000000000000000000BE -S31540029A6000000000000000000000000000000000AE -S31540029A70000000000000000000000000000000009E -S31540029A80000000000000000000000000000000008E -S31540029A90000000000000000000000000000000007E -S31540029AA0000000000000000000000000000000006E -S31540029AB0000000000000000000000000000000005E -S31540029AC0000000000000000000000000000000004E -S31540029AD0000000000000000000000000000000003E -S31540029AE0000000000000000000000000000000002E -S31540029AF0000000000000000000000000000000001E -S31540029B00000000000000000000000000000000000D -S31540029B1000000000000000000000000000000000FD -S31540029B2000000000000000000000000000000000ED -S31540029B3000000000000000000000000000000000DD -S31540029B4000000000000000000000000000000000CD -S31540029B5000000000000000000000000000000000BD -S31540029B6000000000000000000000000000000000AD -S31540029B70000000000000000000000000000000009D -S31540029B80000000000000000000000000000000008D -S31540029B90000000000000000000000000000000007D -S31540029BA0000000000000000000000000000000006D -S31540029BB0000000000000000000000000000000005D -S31540029BC0000000000000000000000000000000004D -S31540029BD0000000000000000000000000000000003D -S31540029BE0000000000000000000000000000000002D -S31540029BF0000000000000000000000000000000001D -S31540029C00000000000000000000000000000000000C -S31540029C1000000000000000000000000000000000FC -S31540029C2000000000000000000000000000000000EC -S31540029C3000000000000000000000000000000000DC -S31540029C4000000000000000000000000000000000CC -S31540029C5000000000000000000000000000000000BC -S31540029C6000000000000000000000000000000000AC -S31540029C70000000000000000000000000000000009C -S31540029C80000000000000000000000000000000008C -S31540029C90000000000000000000000000000000007C -S31540029CA0000000000000000000000000000000006C -S31540029CB0000000000000000000000000000000005C -S31540029CC0000000000000000000000000000000004C -S31540029CD0000000000000000000000000000000003C -S31540029CE0000000000000000000000000000000002C -S31540029CF0000000000000000000000000000000001C -S31540029D00000000000000000000000000000000000B -S31540029D1000000000000000000000000000000000FB -S31540029D2000000000000000000000000000000000EB -S31540029D3000000000000000000000000000000000DB -S31540029D4000000000000000000000000000000000CB -S31540029D5000000000000000000000000000000000BB -S31540029D6000000000000000000000000000000000AB -S31540029D70000000000000000000000000000000009B -S31540029D80000000000000000000000000000000008B -S31540029D90000000000000000000000000000000007B -S31540029DA0000000000000000000000000000000006B -S31540029DB0000000000000000000000000000000005B -S31540029DC0000000000000000000000000000000004B -S31540029DD0000000000000000000000000000000003B -S31540029DE0000000000000000000000000000000002B -S31540029DF0000000000000000000000000000000001B -S31540029E00000000000000000000000000000000000A -S31540029E1000000000000000000000000000000000FA -S31540029E2000000000000000000000000000000000EA -S31540029E3000000000000000000000000000000000DA -S31540029E4000000000000000000000000000000000CA -S31540029E5000000000000000000000000000000000BA -S31540029E6000000000000000000000000000000000AA -S31540029E70000000000000000000000000000000009A -S31540029E80000000000000000000000000000000008A -S31540029E90000000000000000000000000000000007A -S31540029EA0000000000000000000000000000000006A -S31540029EB0000000000000000000000000000000005A -S31540029EC0000000000000000000000000000000004A -S31540029ED0000000000000000000000000000000003A -S31540029EE0000000000000000000000000000000002A -S31540029EF0000000000000000000000000000000001A -S31540029F000000000000000000000000000000000009 -S31540029F1000000000000000000000000000000000F9 -S31540029F2000000000000000000000000000000000E9 -S31540029F3000000000000000000000000000000000D9 -S31540029F4000000000000000000000000000000000C9 -S31540029F5000000000000000000000000000000000B9 -S31540029F6000000000000000000000000000000000A9 -S31540029F700000000000000000000000000000000099 -S31540029F800000000000000000000000000000000089 -S31540029F900000000000000000000000000000000079 -S31540029FA00000000000000000000000000000000069 -S31540029FB00000000000000000000000000000000059 -S31540029FC00000000000000000000000000000000049 -S31540029FD00000000000000000000000000000000039 -S31540029FE00000000000000000000000000000000029 -S31540029FF00000000000000000000000000000000019 -S3154002A0000000000000000000000000000000000008 -S3154002A01000000000000000000000000000000000F8 -S3154002A02000000000000000000000000000000000E8 -S3154002A03000000000000000000000000000000000D8 -S3154002A04000000000000000000000000000000000C8 -S3154002A05000000000000000000000000000000000B8 -S3154002A06000000000000000000000000000000000A8 -S3154002A0700000000000000000000000000000000098 -S3154002A0800000000000000000000000000000000088 -S3154002A0900000000000000000000000000000000078 -S3154002A0A00000000000000000000000000000000068 -S3154002A0B00000000000000000000000000000000058 -S3154002A0C00000000000000000000000000000000048 -S3154002A0D00000000000000000000000000000000038 -S3154002A0E00000000000000000000000000000000028 -S3154002A0F00000000000000000000000000000000018 -S3154002A1000000000000000000000000000000000007 -S3154002A11000000000000000000000000000000000F7 -S3154002A12000000000000000000000000000000000E7 -S3154002A13000000000000000000000000000000000D7 -S3154002A14000000000000000000000000000000000C7 -S3154002A15000000000000000000000000000000000B7 -S3154002A16000000000000000000000000000000000A7 -S3154002A1700000000000000000000000000000000097 -S3154002A1800000000000000000000000000000000087 -S3154002A1900000000000000000000000000000000077 -S3154002A1A00000000000000000000000000000000067 -S3154002A1B00000000000000000000000000000000057 -S3154002A1C00000000000000000000000000000000047 -S3154002A1D00000000000000000000000000000000037 -S3154002A1E00000000000000000000000000000000027 -S3154002A1F00000000000000000000000000000000017 -S3154002A2000000000000000000000000000000000006 -S3154002A21000000000000000000000000000000000F6 -S3154002A22000000000000000000000000000000000E6 -S3154002A23000000000000000000000000000000000D6 -S3154002A24000000000000000000000000000000000C6 -S3154002A25000000000000000000000000000000000B6 -S3154002A26000000000000000000000000000000000A6 -S3154002A2700000000000000000000000000000000096 -S3154002A2800000000000000000000000000000000086 -S3154002A2900000000000000000000000000000000076 -S3154002A2A00000000000000000000000000000000066 -S3154002A2B00000000000000000000000000000000056 -S3154002A2C00000000000000000000000000000000046 -S3154002A2D00000000000000000000000000000000036 -S3154002A2E00000000000000000000000000000000026 -S3154002A2F00000000000000000000000000000000016 -S3154002A3000000000000000000000000000000000005 -S3154002A31000000000000000000000000000000000F5 -S3154002A32000000000000000000000000000000000E5 -S3154002A33000000000000000000000000000000000D5 -S3154002A34000000000000000000000000000000000C5 -S3154002A35000000000000000000000000000000000B5 -S3154002A36000000000000000000000000000000000A5 -S3154002A3700000000000000000000000000000000095 -S3154002A3800000000000000000000000000000000085 -S3154002A3900000000000000000000000000000000075 -S3154002A3A00000000000000000000000000000000065 -S3154002A3B00000000000000000000000000000000055 -S3154002A3C00000000000000000000000000000000045 -S3154002A3D00000000000000000000000000000000035 -S3154002A3E00000000000000000000000000000000025 -S3154002A3F00000000000000000000000000000000015 -S3154002A4000000000000000000000000000000000004 -S3154002A41000000000000000000000000000000000F4 -S3154002A42000000000000000000000000000000000E4 -S3154002A43000000000000000000000000000000000D4 -S3154002A44000000000000000000000000000000000C4 -S3154002A45000000000000000000000000000000000B4 -S3154002A46000000000000000000000000000000000A4 -S3154002A4700000000000000000000000000000000094 -S3154002A4800000000000000000000000000000000084 -S3154002A4900000000000000000000000000000000074 -S3154002A4A00000000000000000000000000000000064 -S3154002A4B00000000000000000000000000000000054 -S3154002A4C00000000000000000000000000000000044 -S3154002A4D00000000000000000000000000000000034 -S3154002A4E00000000000000000000000000000000024 -S3154002A4F00000000000000000000000000000000014 -S3154002A5000000000000000000000000000000000003 -S3154002A51000000000000000000000000000000000F3 -S3154002A52000000000000000000000000000000000E3 -S3154002A53000000000000000000000000000000000D3 -S3154002A54000000000000000000000000000000000C3 -S3154002A55000000000000000000000000000000000B3 -S3154002A56000000000000000000000000000000000A3 -S3154002A5700000000000000000000000000000000093 -S3154002A5800000000000000000000000000000000083 -S3154002A5900000000000000000000000000000000073 -S3154002A5A00000000000000000000000000000000063 -S3154002A5B00000000000000000000000000000000053 -S3154002A5C00000000000000000000000000000000043 -S3154002A5D00000000000000000000000000000000033 -S3154002A5E00000000000000000000000000000000023 -S3154002A5F00000000000000000000000000000000013 -S3154002A6000000000000000000000000000000000002 -S3154002A61000000000000000000000000000000000F2 -S3154002A62000000000000000000000000000000000E2 -S3154002A63000000000000000000000000000000000D2 -S3154002A64000000000000000000000000000000000C2 -S3154002A65000000000000000000000000000000000B2 -S3154002A66000000000000000000000000000000000A2 -S3154002A6700000000000000000000000000000000092 -S3154002A6800000000000000000000000000000000082 -S3154002A6900000000000000000000000000000000072 -S3154002A6A00000000000000000000000000000000062 -S3154002A6B00000000000000000000000000000000052 -S3154002A6C00000000000000000000000000000000042 -S3154002A6D00000000000000000000000000000000032 -S3154002A6E00000000000000000000000000000000022 -S3154002A6F00000000000000000000000000000000012 -S3154002A7000000000000000000000000000000000001 -S3154002A71000000000000000000000000000000000F1 -S3154002A72000000000000000000000000000000000E1 -S3154002A73000000000000000000000000000000000D1 -S3154002A74000000000000000000000000000000000C1 -S3154002A75000000000000000000000000000000000B1 -S3154002A76000000000000000000000000000000000A1 -S3154002A7700000000000000000000000000000000091 -S3154002A7800000000000000000000000000000000081 -S3154002A7900000000000000000000000000000000071 -S3154002A7A00000000000000000000000000000000061 -S3154002A7B00000000000000000000000000000000051 -S3154002A7C00000000000000000000000000000000041 -S3154002A7D00000000000000000000000000000000031 -S3154002A7E00000000000000000000000000000000021 -S3154002A7F00000000000000000000000000000000011 -S3154002A8000000000000000000000000000000000000 -S3154002A81000000000000000000000000000000000F0 -S3154002A82000000000000000000000000000000000E0 -S3154002A83000000000000000000000000000000000D0 -S3154002A84000000000000000000000000000000000C0 -S3154002A85000000000000000000000000000000000B0 -S3154002A86000000000000000000000000000000000A0 -S3154002A8700000000000000000000000000000000090 -S3154002A8800000000000000000000000000000000080 -S3154002A8900000000000000000000000000000000070 -S3154002A8A00000000000000000000000000000000060 -S3154002A8B00000000000000000000000000000000050 -S3154002A8C00000000000000000000000000000000040 -S3154002A8D00000000000000000000000000000000030 -S3154002A8E00000000000000000000000000000000020 -S3154002A8F00000000000000000000000000000000010 -S3154002A90000000000000000000000000000000000FF -S3154002A91000000000000000000000000000000000EF -S3154002A92000000000000000000000000000000000DF -S3154002A93000000000000000000000000000000000CF -S3154002A94000000000000000000000000000000000BF -S3154002A95000000000000000000000000000000000AF -S3154002A960000000000000000000000000000000009F -S3154002A970000000000000000000000000000000008F -S3154002A980000000000000000000000000000000007F -S3154002A990000000000000000000000000000000006F -S3154002A9A0000000000000000000000000000000005F -S3154002A9B0000000000000000000000000000000004F -S3154002A9C0000000000000000000000000000000003F -S3154002A9D0000000000000000000000000000000002F -S3154002A9E0000000000000000000000000000000001F -S3154002A9F0000000000000000000000000000000000F -S3154002AA0000000000000000000000000000000000FE -S3154002AA1000000000000000000000000000000000EE -S3154002AA2000000000000000000000000000000000DE -S3154002AA3000000000000000000000000000000000CE -S3154002AA4000000000000000000000000000000000BE -S3154002AA5000000000000000000000000000000000AE -S3154002AA60000000000000000000000000000000009E -S3154002AA70000000000000000000000000000000008E -S3154002AA80000000000000000000000000000000007E -S3154002AA90000000000000000000000000000000006E -S3154002AAA0000000000000000000000000000000005E -S3154002AAB0000000000000000000000000000000004E -S3154002AAC0000000000000000000000000000000003E -S3154002AAD0000000000000000000000000000000002E -S3154002AAE0000000000000000000000000000000001E -S3154002AAF0000000000000000000000000000000000E -S3154002AB0000000000000000000000000000000000FD -S3154002AB1000000000000000000000000000000000ED -S3154002AB2000000000000000000000000000000000DD -S3154002AB3000000000000000000000000000000000CD -S3154002AB4000000000000000000000000000000000BD -S3154002AB5000000000000000000000000000000000AD -S3154002AB60000000000000000000000000000000009D -S3154002AB70000000000000000000000000000000008D -S3154002AB80000000000000000000000000000000007D -S3154002AB90000000000000000000000000000000006D -S3154002ABA0000000000000000000000000000000005D -S3154002ABB0000000000000000000000000000000004D -S3154002ABC0000000000000000000000000000000003D -S3154002ABD0000000000000000000000000000000002D -S3154002ABE0000000000000000000000000000000001D -S3154002ABF0000000000000000000000000000000000D -S3154002AC0000000000000000000000000000000000FC -S3154002AC1000000000000000000000000000000000EC -S3154002AC2000000000000000000000000000000000DC -S3154002AC3000000000000000000000000000000000CC -S3154002AC4000000000000000000000000000000000BC -S3154002AC5000000000000000000000000000000000AC -S3154002AC60000000000000000000000000000000009C -S3154002AC70000000000000000000000000000000008C -S3154002AC80000000000000000000000000000000007C -S3154002AC90000000000000000000000000000000006C -S3154002ACA0000000000000000000000000000000005C -S3154002ACB0000000000000000000000000000000004C -S3154002ACC0000000000000000000000000000000003C -S3154002ACD0000000000000000000000000000000002C -S3154002ACE0000000000000000000000000000000001C -S3154002ACF0000000000000000000000000000000000C -S3154002AD0000000000000000000000000000000000FB -S3154002AD1000000000000000000000000000000000EB -S3154002AD2000000000000000000000000000000000DB -S3154002AD3000000000000000000000000000000000CB -S3154002AD4000000000000000000000000000000000BB -S3154002AD5000000000000000000000000000000000AB -S3154002AD60000000000000000000000000000000009B -S3154002AD70000000000000000000000000000000008B -S3154002AD80000000000000000000000000000000007B -S3154002AD90000000000000000000000000000000006B -S3154002ADA0000000000000000000000000000000005B -S3154002ADB0000000000000000000000000000000004B -S3154002ADC0000000000000000000000000000000003B -S3154002ADD0000000000000000000000000000000002B -S3154002ADE0000000000000000000000000000000001B -S3154002ADF0000000000000000000000000000000000B -S3154002AE0000000000000000000000000000000000FA -S3154002AE1000000000000000000000000000000000EA -S3154002AE2000000000000000000000000000000000DA -S3154002AE3000000000000000000000000000000000CA -S3154002AE4000000000000000000000000000000000BA -S3154002AE5000000000000000000000000000000000AA -S3154002AE60000000000000000000000000000000009A -S3154002AE70000000000000000000000000000000008A -S3154002AE80000000000000000000000000000000007A -S3154002AE90000000000000000000000000000000006A -S3154002AEA0000000000000000000000000000000005A -S3154002AEB0000000000000000000000000000000004A -S3154002AEC0000000000000000000000000000000003A -S3154002AED0000000000000000000000000000000002A -S3154002AEE0000000000000000000000000000000001A -S3154002AEF0000000000000000000000000000000000A -S3154002AF0000000000000000000000000000000000F9 -S3154002AF1000000000000000000000000000000000E9 -S3154002AF2000000000000000000000000000000000D9 -S3154002AF3000000000000000000000000000000000C9 -S3154002AF4000000000000000000000000000000000B9 -S3154002AF5000000000000000000000000000000000A9 -S3154002AF600000000000000000000000000000000099 -S3154002AF700000000000000000000000000000000089 -S3154002AF800000000000000000000000000000000079 -S3154002AF900000000000000000000000000000000069 -S3154002AFA00000000000000000000000000000000059 -S3154002AFB00000000000000000000000000000000049 -S3154002AFC00000000000000000000000000000000039 -S3154002AFD00000000000000000000000000000000029 -S3154002AFE00000000000000000000000000000000019 -S3154002AFF00000000000000000000000000000000009 -S3154002B00000000000000000000000000000000000F8 -S3154002B01000000000000000000000000000000000E8 -S3154002B02000000000000000000000000000000000D8 -S3154002B03000000000000000000000000000000000C8 -S3154002B04000000000000000000000000000000000B8 -S3154002B05000000000000000000000000000000000A8 -S3154002B0600000000000000000000000000000000098 -S3154002B0700000000000000000000000000000000088 -S3154002B0800000000000000000000000000000000078 -S3154002B0900000000000000000000000000000000068 -S3154002B0A00000000000000000000000000000000058 -S3154002B0B00000000000000000000000000000000048 -S3154002B0C00000000000000000000000000000000038 -S3154002B0D00000000000000000000000000000000028 -S3154002B0E00000000000000000000000000000000018 -S3154002B0F00000000000000000000000000000000008 -S3154002B10000000000000000000000000000000000F7 -S3154002B11000000000000000000000000000000000E7 -S3154002B12000000000000000000000000000000000D7 -S3154002B13000000000000000000000000000000000C7 -S3154002B14000000000000000000000000000000000B7 -S3154002B15000000000000000000000000000000000A7 -S3154002B1600000000000000000000000000000000097 -S3154002B1700000000000000000000000000000000087 -S3154002B1800000000000000000000000000000000077 -S3154002B1900000000000000000000000000000000067 -S3154002B1A00000000000000000000000000000000057 -S3154002B1B00000000000000000000000000000000047 -S3154002B1C00000000000000000000000000000000037 -S3154002B1D00000000000000000000000000000000027 -S3154002B1E00000000000000000000000000000000017 -S3154002B1F00000000000000000000000000000000007 -S3154002B20000000000000000000000000000000000F6 -S3154002B21000000000000000000000000000000000E6 -S3154002B22000000000000000000000000000000000D6 -S3154002B23000000000000000000000000000000000C6 -S3154002B24000000000000000000000000000000000B6 -S3154002B25000000000000000000000000000000000A6 -S3154002B2600000000000000000000000000000000096 -S3154002B2700000000000000000000000000000000086 -S3154002B2800000000000000000000000000000000076 -S3154002B2900000000000000000000000000000000066 -S3154002B2A00000000000000000000000000000000056 -S3154002B2B00000000000000000000000000000000046 -S3154002B2C00000000000000000000000000000000036 -S3154002B2D00000000000000000000000000000000026 -S3154002B2E00000000000000000000000000000000016 -S3154002B2F00000000000000000000000000000000006 -S3154002B30000000000000000000000000000000000F5 -S3154002B31000000000000000000000000000000000E5 -S3154002B32000000000000000000000000000000000D5 -S3154002B33000000000000000000000000000000000C5 -S3154002B34000000000000000000000000000000000B5 -S3154002B35000000000000000000000000000000000A5 -S3154002B3600000000000000000000000000000000095 -S3154002B3700000000000000000000000000000000085 -S3154002B3800000000000000000000000000000000075 -S3154002B3900000000000000000000000000000000065 -S3154002B3A00000000000000000000000000000000055 -S3154002B3B00000000000000000000000000000000045 -S3154002B3C00000000000000000000000000000000035 -S3154002B3D00000000000000000000000000000000025 -S3154002B3E00000000000000000000000000000000015 -S3154002B3F00000000000000000000000000000000005 -S3154002B40000000000000000000000000000000000F4 -S3154002B41000000000000000000000000000000000E4 -S3154002B42000000000000000000000000000000000D4 -S3154002B43000000000000000000000000000000000C4 -S3154002B44000000000000000000000000000000000B4 -S3154002B45000000000000000000000000000000000A4 -S3154002B4600000000000000000000000000000000094 -S3154002B4700000000000000000000000000000000084 -S3154002B4800000000000000000000000000000000074 -S3154002B4900000000000000000000000000000000064 -S3154002B4A00000000000000000000000000000000054 -S3154002B4B00000000000000000000000000000000044 -S3154002B4C00000000000000000000000000000000034 -S3154002B4D00000000000000000000000000000000024 -S3154002B4E00000000000000000000000000000000014 -S3154002B4F00000000000000000000000000000000004 -S3154002B50000000000000000000000000000000000F3 -S3154002B51000000000000000000000000000000000E3 -S3154002B52000000000000000000000000000000000D3 -S3154002B53000000000000000000000000000000000C3 -S3154002B54000000000000000000000000000000000B3 -S3154002B55000000000000000000000000000000000A3 -S3154002B5600000000000000000000000000000000093 -S3154002B5700000000000000000000000000000000083 -S3154002B5800000000000000000000000000000000073 -S3154002B5900000000000000000000000000000000063 -S3154002B5A00000000000000000000000000000000053 -S3154002B5B00000000000000000000000000000000043 -S3154002B5C00000000000000000000000000000000033 -S3154002B5D00000000000000000000000000000000023 -S3154002B5E00000000000000000000000000000000013 -S3154002B5F00000000000000000000000000000000003 -S3154002B60000000000000000000000000000000000F2 -S3154002B61000000000000000000000000000000000E2 -S3154002B62000000000000000000000000000000000D2 -S3154002B63000000000000000000000000000000000C2 -S3154002B64000000000000000000000000000000000B2 -S3154002B65000000000000000000000000000000000A2 -S3154002B6600000000000000000000000000000000092 -S3154002B6700000000000000000000000000000000082 -S3154002B6800000000000000000000000000000000072 -S3154002B6900000000000000000000000000000000062 -S3154002B6A00000000000000000000000000000000052 -S3154002B6B00000000000000000000000000000000042 -S3154002B6C00000000000000000000000000000000032 -S3154002B6D00000000000000000000000000000000022 -S3154002B6E00000000000000000000000000000000012 -S3154002B6F00000000000000000000000000000000002 -S3154002B70000000000000000000000000000000000F1 -S3154002B71000000000000000000000000000000000E1 -S3154002B72000000000000000000000000000000000D1 -S3154002B73000000000000000000000000000000000C1 -S3154002B74000000000000000000000000000000000B1 -S3154002B75000000000000000000000000000000000A1 -S3154002B7600000000000000000000000000000000091 -S3154002B7700000000000000000000000000000000081 -S3154002B7800000000000000000000000000000000071 -S3154002B7900000000000000000000000000000000061 -S3154002B7A00000000000000000000000000000000051 -S3154002B7B00000000000000000000000000000000041 -S3154002B7C00000000000000000000000000000000031 -S3154002B7D00000000000000000000000000000000021 -S3154002B7E00000000000000000000000000000000011 -S3154002B7F00000000000000000000000000000000001 -S3154002B80000000000000000000000000000000000F0 -S3154002B81000000000000000000000000000000000E0 -S3154002B82000000000000000000000000000000000D0 -S3154002B83000000000000000000000000000000000C0 -S3154002B84000000000000000000000000000000000B0 -S3154002B85000000000000000000000000000000000A0 -S3154002B8600000000000000000000000000000000090 -S3154002B8700000000000000000000000000000000080 -S3154002B8800000000000000000000000000000000070 -S3154002B8900000000000000000000000000000000060 -S3154002B8A00000000000000000000000000000000050 -S3154002B8B00000000000000000000000000000000040 -S3154002B8C00000000000000000000000000000000030 -S3154002B8D00000000000000000000000000000000020 -S3154002B8E00000000000000000000000000000000010 -S3154002B8F00000000000000000000000000000000000 -S3154002B90000000000000000000000000000000000EF -S3154002B91000000000000000000000000000000000DF -S3154002B92000000000000000000000000000000000CF -S3154002B93000000000000000000000000000000000BF -S3154002B94000000000000000000000000000000000AF -S3154002B950000000000000000000000000000000009F -S3154002B960000000000000000000000000000000008F -S3154002B970000000000000000000000000000000007F -S3154002B980000000000000000000000000000000006F -S3154002B990000000000000000000000000000000005F -S3154002B9A0000000000000000000000000000000004F -S3154002B9B0000000000000000000000000000000003F -S3154002B9C0000000000000000000000000000000002F -S3154002B9D0000000000000000000000000000000001F -S3154002B9E0000000000000000000000000000000000F -S3154002B9F000000000000000000000000000000000FF -S3154002BA0000000000000000000000000000000000EE -S3154002BA1000000000000000000000000000000000DE -S3154002BA2000000000000000000000000000000000CE -S3154002BA3000000000000000000000000000000000BE -S3154002BA4000000000000000000000000000000000AE -S3154002BA50000000000000000000000000000000009E -S3154002BA60000000000000000000000000000000008E -S3154002BA70000000000000000000000000000000007E -S3154002BA80000000000000000000000000000000006E -S3154002BA90000000000000000000000000000000005E -S3154002BAA0000000000000000000000000000000004E -S3154002BAB0000000000000000000000000000000003E -S3154002BAC0000000000000000000000000000000002E -S3154002BAD0000000000000000000000000000000001E -S3154002BAE0000000000000000000000000000000000E -S3154002BAF000000000000000000000000000000000FE -S3154002BB0000000000000000000000000000000000ED -S3154002BB1000000000000000000000000000000000DD -S3154002BB2000000000000000000000000000000000CD -S3154002BB3000000000000000000000000000000000BD -S3154002BB4000000000000000000000000000000000AD -S3154002BB50000000000000000000000000000000009D -S3154002BB60000000000000000000000000000000008D -S3154002BB70000000000000000000000000000000007D -S3154002BB80000000000000000000000000000000006D -S3154002BB90000000000000000000000000000000005D -S3154002BBA0000000000000000000000000000000004D -S3154002BBB0000000000000000000000000000000003D -S3154002BBC0000000000000000000000000000000002D -S3154002BBD0000000000000000000000000000000001D -S3154002BBE0000000000000000000000000000000000D -S3154002BBF000000000000000000000000000000000FD -S3154002BC0000000000000000000000000000000000EC -S3154002BC1000000000000000000000000000000000DC -S3154002BC2000000000000000000000000000000000CC -S3154002BC3000000000000000000000000000000000BC -S3154002BC4000000000000000000000000000000000AC -S3154002BC50000000000000000000000000000000009C -S3154002BC60000000000000000000000000000000008C -S3154002BC70000000000000000000000000000000007C -S3154002BC80000000000000000000000000000000006C -S3154002BC90000000000000000000000000000000005C -S3154002BCA0000000000000000000000000000000004C -S3154002BCB0000000000000000000000000000000003C -S3154002BCC0000000000000000000000000000000002C -S3154002BCD0000000000000000000000000000000001C -S3154002BCE0000000000000000000000000000000000C -S3154002BCF000000000000000000000000000000000FC -S3154002BD0000000000000000000000000000000000EB -S3154002BD1000000000000000000000000000000000DB -S3154002BD2000000000000000000000000000000000CB -S3154002BD3000000000000000000000000000000000BB -S3154002BD4000000000000000000000000000000000AB -S3154002BD50000000000000000000000000000000009B -S3154002BD60000000000000000000000000000000008B -S3154002BD70000000000000000000000000000000007B -S3154002BD80000000000000000000000000000000006B -S3154002BD90000000000000000000000000000000005B -S3154002BDA0000000000000000000000000000000004B -S3154002BDB0000000000000000000000000000000003B -S3154002BDC0000000000000000000000000000000002B -S3154002BDD0000000000000000000000000000000001B -S3154002BDE0000000000000000000000000000000000B -S3154002BDF000000000000000000000000000000000FB -S3154002BE0000000000000000000000000000000000EA -S3154002BE1000000000000000000000000000000000DA -S3154002BE2000000000000000000000000000000000CA -S3154002BE3000000000000000000000000000000000BA -S3154002BE4000000000000000000000000000000000AA -S3154002BE50000000000000000000000000000000009A -S3154002BE60000000000000000000000000000000008A -S3154002BE70000000000000000000000000000000007A -S3154002BE80000000000000000000000000000000006A -S3154002BE90000000000000000000000000000000005A -S3154002BEA0000000000000000000000000000000004A -S3154002BEB0000000000000000000000000000000003A -S3154002BEC0000000000000000000000000000000002A -S3154002BED0000000000000000000000000000000001A -S3154002BEE0000000000000000000000000000000000A -S3154002BEF000000000000000000000000000000000FA -S3154002BF0000000000000000000000000000000000E9 -S3154002BF1000000000000000000000000000000000D9 -S3154002BF2000000000000000000000000000000000C9 -S3154002BF3000000000000000000000000000000000B9 -S3154002BF4000000000000000000000000000000000A9 -S3154002BF500000000000000000000000000000000099 -S3154002BF600000000000000000000000000000000089 -S3154002BF700000000000000000000000000000000079 -S3154002BF800000000000000000000000000000000069 -S3154002BF900000000000000000000000000000000059 -S3154002BFA00000000000000000000000000000000049 -S3154002BFB00000000000000000000000000000000039 -S3154002BFC00000000000000000000000000000000029 -S3154002BFD00000000000000000000000000000000019 -S3154002BFE00000000000000000000000000000000009 -S3154002BFF000000000000000000000000000000000F9 -S3154002C00000000000000000000000000000000000E8 -S3154002C01000000000000000000000000000000000D8 -S3154002C02000000000000000000000000000000000C8 -S3154002C03000000000000000000000000000000000B8 -S3154002C04000000000000000000000000000000000A8 -S3154002C0500000000000000000000000000000000098 -S3154002C0600000000000000000000000000000000088 -S3154002C0700000000000000000000000000000000078 -S3154002C0800000000000000000000000000000000068 -S3154002C0900000000000000000000000000000000058 -S3154002C0A00000000000000000000000000000000048 -S3154002C0B00000000000000000000000000000000038 -S3154002C0C00000000000000000000000000000000028 -S3154002C0D00000000000000000000000000000000018 -S3154002C0E00000000000000000000000000000000008 -S3154002C0F000000000000000000000000000000000F8 -S3154002C10000000000000000000000000000000000E7 -S3154002C11000000000000000000000000000000000D7 -S3154002C12000000000000000000000000000000000C7 -S3154002C13000000000000000000000000000000000B7 -S3154002C14000000000000000000000000000000000A7 -S3154002C1500000000000000000000000000000000097 -S3154002C1600000000000000000000000000000000087 -S3154002C1700000000000000000000000000000000077 -S3154002C1800000000000000000000000000000000067 -S3154002C1900000000000000000000000000000000057 -S3154002C1A00000000000000000000000000000000047 -S3154002C1B00000000000000000000000000000000037 -S3154002C1C00000000000000000000000000000000027 -S3154002C1D00000000000000000000000000000000017 -S3154002C1E00000000000000000000000000000000007 -S3154002C1F000000000000000000000000000000000F7 -S3154002C20000000000000000000000000000000000E6 -S3154002C21000000000000000000000000000000000D6 -S3154002C22000000000000000000000000000000000C6 -S3154002C23000000000000000000000000000000000B6 -S3154002C24000000000000000000000000000000000A6 -S3154002C2500000000000000000000000000000000096 -S3154002C2600000000000000000000000000000000086 -S3154002C2700000000000000000000000000000000076 -S3154002C2800000000000000000000000000000000066 -S3154002C2900000000000000000000000000000000056 -S3154002C2A00000000000000000000000000000000046 -S3154002C2B00000000000000000000000000000000036 -S3154002C2C00000000000000000000000000000000026 -S3154002C2D00000000000000000000000000000000016 -S3154002C2E00000000000000000000000000000000006 -S3154002C2F000000000000000000000000000000000F6 -S3154002C30000000000000000000000000000000000E5 -S3154002C31000000000000000000000000000000000D5 -S3154002C32000000000000000000000000000000000C5 -S3154002C33000000000000000000000000000000000B5 -S3154002C34000000000000000000000000000000000A5 -S3154002C3500000000000000000000000000000000095 -S3154002C3600000000000000000000000000000000085 -S3154002C3700000000000000000000000000000000075 -S3154002C3800000000000000000000000000000000065 -S3154002C3900000000000000000000000000000000055 -S3154002C3A00000000000000000000000000000000045 -S3154002C3B00000000000000000000000000000000035 -S3154002C3C00000000000000000000000000000000025 -S3154002C3D00000000000000000000000000000000015 -S3154002C3E00000000000000000000000000000000005 -S3154002C3F000000000000000000000000000000000F5 -S3154002C40000000000000000000000000000000000E4 -S3154002C41000000000000000000000000000000000D4 -S3154002C42000000000000000000000000000000000C4 -S3154002C43000000000000000000000000000000000B4 -S3154002C44000000000000000000000000000000000A4 -S3154002C4500000000000000000000000000000000094 -S3154002C4600000000000000000000000000000000084 -S3154002C4700000000000000000000000000000000074 -S3154002C4800000000000000000000000000000000064 -S3154002C4900000000000000000000000000000000054 -S3154002C4A00000000000000000000000000000000044 -S3154002C4B00000000000000000000000000000000034 -S3154002C4C00000000000000000000000000000000024 -S3154002C4D00000000000000000000000000000000014 -S3154002C4E00000000000000000000000000000000004 -S3154002C4F000000000000000000000000000000000F4 -S3154002C50000000000000000000000000000000000E3 -S3154002C51000000000000000000000000000000000D3 -S3154002C52000000000000000000000000000000000C3 -S3154002C53000000000000000000000000000000000B3 -S3154002C54000000000000000000000000000000000A3 -S3154002C5500000000000000000000000000000000093 -S3154002C5600000000000000000000000000000000083 -S3154002C5700000000000000000000000000000000073 -S3154002C5800000000000000000000000000000000063 -S3154002C5900000000000000000000000000000000053 -S3154002C5A00000000000000000000000000000000043 -S3154002C5B00000000000000000000000000000000033 -S3154002C5C00000000000000000000000000000000023 -S3154002C5D00000000000000000000000000000000013 -S3154002C5E00000000000000000000000000000000003 -S3154002C5F000000000000000000000000000000000F3 -S3154002C60000000000000000000000000000000000E2 -S3154002C61000000000000000000000000000000000D2 -S3154002C62000000000000000000000000000000000C2 -S3154002C63000000000000000000000000000000000B2 -S3154002C64000000000000000000000000000000000A2 -S3154002C6500000000000000000000000000000000092 -S3154002C6600000000000000000000000000000000082 -S3154002C6700000000000000000000000000000000072 -S3154002C6800000000000000000000000000000000062 -S3154002C6900000000000000000000000000000000052 -S3154002C6A00000000000000000000000000000000042 -S3154002C6B00000000000000000000000000000000032 -S3154002C6C00000000000000000000000000000000022 -S3154002C6D00000000000000000000000000000000012 -S3154002C6E00000000000000000000000000000000002 -S3154002C6F000000000000000000000000000000000F2 -S3154002C70000000000000000000000000000000000E1 -S3154002C71000000000000000000000000000000000D1 -S3154002C72000000000000000000000000000000000C1 -S3154002C73000000000000000000000000000000000B1 -S3154002C74000000000000000000000000000000000A1 -S3154002C7500000000000000000000000000000000091 -S3154002C7600000000000000000000000000000000081 -S3154002C7700000000000000000000000000000000071 -S3154002C7800000000000000000000000000000000061 -S3154002C7900000000000000000000000000000000051 -S3154002C7A00000000000000000000000000000000041 -S3154002C7B00000000000000000000000000000000031 -S3154002C7C00000000000000000000000000000000021 -S3154002C7D00000000000000000000000000000000011 -S3154002C7E00000000000000000000000000000000001 -S3154002C7F000000000000000000000000000000000F1 -S3154002C80000000000000000000000000000000000E0 -S3154002C81000000000000000000000000000000000D0 -S3154002C82000000000000000000000000000000000C0 -S3154002C83000000000000000000000000000000000B0 -S3154002C84000000000000000000000000000000000A0 -S3154002C8500000000000000000000000000000000090 -S3154002C8600000000000000000000000000000000080 -S3154002C8700000000000000000000000000000000070 -S3154002C8800000000000000000000000000000000060 -S3154002C8900000000000000000000000000000000050 -S3154002C8A00000000000000000000000000000000040 -S3154002C8B00000000000000000000000000000000030 -S3154002C8C00000000000000000000000000000000020 -S3154002C8D00000000000000000000000000000000010 -S3154002C8E00000000000000000000000000000000000 -S3154002C8F000000000000000000000000000000000F0 -S3154002C90000000000000000000000000000000000DF -S3154002C91000000000000000000000000000000000CF -S3154002C92000000000000000000000000000000000BF -S3154002C93000000000000000000000000000000000AF -S3154002C940000000000000000000000000000000009F -S3154002C950000000000000000000000000000000008F -S3154002C960000000000000000000000000000000007F -S3154002C970000000000000000000000000000000006F -S3154002C980000000000000000000000000000000005F -S3154002C990000000000000000000000000000000004F -S3154002C9A0000000000000000000000000000000003F -S3154002C9B0000000000000000000000000000000002F -S3154002C9C0000000000000000000000000000000001F -S3154002C9D0000000000000000000000000000000000F -S3154002C9E000000000000000000000000000000000FF -S3154002C9F000000000000000000000000000000000EF -S3154002CA0000000000000000000000000000000000DE -S3154002CA1000000000000000000000000000000000CE -S3154002CA2000000000000000000000000000000000BE -S3154002CA3000000000000000000000000000000000AE -S3154002CA40000000000000000000000000000000009E -S3154002CA50000000000000000000000000000000008E -S3154002CA60000000000000000000000000000000007E -S3154002CA70000000000000000000000000000000006E -S3154002CA80000000000000000000000000000000005E -S3154002CA90000000000000000000000000000000004E -S3154002CAA0000000000000000000000000000000003E -S3154002CAB0000000000000000000000000000000002E -S3154002CAC0000000000000000000000000000000001E -S3154002CAD0000000000000000000000000000000000E -S3154002CAE000000000000000000000000000000000FE -S3154002CAF000000000000000000000000000000000EE -S3154002CB0000000000000000000000000000000000DD -S3154002CB1000000000000000000000000000000000CD -S3154002CB2000000000000000000000000000000000BD -S3154002CB3000000000000000000000000000000000AD -S3154002CB40000000000000000000000000000000009D -S3154002CB50000000000000000000000000000000008D -S3154002CB60000000000000000000000000000000007D -S3154002CB70000000000000000000000000000000006D -S3154002CB80000000000000000000000000000000005D -S3154002CB90000000000000000000000000000000004D -S3154002CBA0000000000000000000000000000000003D -S3154002CBB0000000000000000000000000000000002D -S3154002CBC0000000000000000000000000000000001D -S3154002CBD0000000000000000000000000000000000D -S3154002CBE000000000000000000000000000000000FD -S3154002CBF000000000000000000000000000000000ED -S3154002CC0000000000000000000000000000000000DC -S3154002CC1000000000000000000000000000000000CC -S3154002CC2000000000000000000000000000000000BC -S3154002CC3000000000000000000000000000000000AC -S3154002CC40000000000000000000000000000000009C -S3154002CC50000000000000000000000000000000008C -S3154002CC60000000000000000000000000000000007C -S3154002CC70000000000000000000000000000000006C -S3154002CC80000000000000000000000000000000005C -S3154002CC90000000000000000000000000000000004C -S3154002CCA0000000000000000000000000000000003C -S3154002CCB0000000000000000000000000000000002C -S3154002CCC0000000000000000000000000000000001C -S3154002CCD0000000000000000000000000000000000C -S3154002CCE000000000000000000000000000000000FC -S3154002CCF000000000000000000000000000000000EC -S3154002CD0000000000000000000000000000000000DB -S3154002CD1000000000000000000000000000000000CB -S3154002CD2000000000000000000000000000000000BB -S3154002CD3000000000000000000000000000000000AB -S3154002CD40000000000000000000000000000000009B -S3154002CD50000000000000000000000000000000008B -S3154002CD60000000000000000000000000000000007B -S3154002CD70000000000000000000000000000000006B -S3154002CD80000000000000000000000000000000005B -S3154002CD90000000000000000000000000000000004B -S3154002CDA0000000000000000000000000000000003B -S3154002CDB0000000000000000000000000000000002B -S3154002CDC0000000000000000000000000000000001B -S3154002CDD0000000000000000000000000000000000B -S3154002CDE000000000000000000000000000000000FB -S3154002CDF000000000000000000000000000000000EB -S3154002CE0000000000000000000000000000000000DA -S3154002CE1000000000000000000000000000000000CA -S3154002CE2000000000000000000000000000000000BA -S3154002CE3000000000000000000000000000000000AA -S3154002CE40000000000000000000000000000000009A -S3154002CE50000000000000000000000000000000008A -S3154002CE60000000000000000000000000000000007A -S3154002CE70000000000000000000000000000000006A -S3154002CE80000000000000000000000000000000005A -S3154002CE90000000000000000000000000000000004A -S3154002CEA0000000000000000000000000000000003A -S3154002CEB0000000000000000000000000000000002A -S3154002CEC0000000000000000000000000000000001A -S3154002CED0000000000000000000000000000000000A -S3154002CEE000000000000000000000000000000000FA -S3154002CEF000000000000000000000000000000000EA -S3154002CF0000000000000000000000000000000000D9 -S3154002CF1000000000000000000000000000000000C9 -S3154002CF2000000000000000000000000000000000B9 -S3154002CF3000000000000000000000000000000000A9 -S3154002CF400000000000000000000000000000000099 -S3154002CF500000000000000000000000000000000089 -S3154002CF600000000000000000000000000000000079 -S3154002CF700000000000000000000000000000000069 -S3154002CF800000000000000000000000000000000059 -S3154002CF900000000000000000000000000000000049 -S3154002CFA00000000000000000000000000000000039 -S3154002CFB00000000000000000000000000000000029 -S3154002CFC00000000000000000000000000000000019 -S3154002CFD00000000000000000000000000000000009 -S3154002CFE000000000000000000000000000000000F9 -S3154002CFF000000000000000000000000000000000E9 -S3154002D00000000000000000000000000000000000D8 -S3154002D01000000000000000000000000000000000C8 -S3154002D02000000000000000000000000000000000B8 -S3154002D03000000000000000000000000000000000A8 -S3154002D0400000000000000000000000000000000098 -S3154002D0500000000000000000000000000000000088 -S3154002D0600000000000000000000000000000000078 -S3154002D0700000000000000000000000000000000068 -S3154002D0800000000000000000000000000000000058 -S3154002D0900000000000000000000000000000000048 -S3154002D0A00000000000000000000000000000000038 -S3154002D0B00000000000000000000000000000000028 -S3154002D0C00000000000000000000000000000000018 -S3154002D0D00000000000000000000000000000000008 -S3154002D0E000000000000000000000000000000000F8 -S3154002D0F000000000000000000000000000000000E8 -S3154002D10000000000000000000000000000000000D7 -S3154002D11000000000000000000000000000000000C7 -S3154002D12000000000000000000000000000000000B7 -S3154002D13000000000000000000000000000000000A7 -S3154002D1400000000000000000000000000000000097 -S3154002D1500000000000000000000000000000000087 -S3154002D1600000000000000000000000000000000077 -S3154002D1700000000000000000000000000000000067 -S3154002D1800000000000000000000000000000000057 -S3154002D1900000000000000000000000000000000047 -S3154002D1A00000000000000000000000000000000037 -S3154002D1B00000000000000000000000000000000027 -S3154002D1C00000000000000000000000000000000017 -S3154002D1D00000000000000000000000000000000007 -S3154002D1E000000000000000000000000000000000F7 -S3154002D1F000000000000000000000000000000000E7 -S3154002D20000000000000000000000000000000000D6 -S3154002D21000000000000000000000000000000000C6 -S3154002D22000000000000000000000000000000000B6 -S3154002D23000000000000000000000000000000000A6 -S3154002D2400000000000000000000000000000000096 -S3154002D2500000000000000000000000000000000086 -S3154002D2600000000000000000000000000000000076 -S3154002D2700000000000000000000000000000000066 -S3154002D2800000000000000000000000000000000056 -S3154002D2900000000000000000000000000000000046 -S3154002D2A00000000000000000000000000000000036 -S3154002D2B00000000000000000000000000000000026 -S3154002D2C00000000000000000000000000000000016 -S3154002D2D00000000000000000000000000000000006 -S3154002D2E000000000000000000000000000000000F6 -S3154002D2F000000000000000000000000000000000E6 -S3154002D30000000000000000000000000000000000D5 -S3154002D31000000000000000000000000000000000C5 -S3154002D32000000000000000000000000000000000B5 -S3154002D33000000000000000000000000000000000A5 -S3154002D3400000000000000000000000000000000095 -S3154002D3500000000000000000000000000000000085 -S3154002D3600000000000000000000000000000000075 -S3154002D3700000000000000000000000000000000065 -S3154002D3800000000000000000000000000000000055 -S3154002D3900000000000000000000000000000000045 -S3154002D3A00000000000000000000000000000000035 -S3154002D3B00000000000000000000000000000000025 -S3154002D3C00000000000000000000000000000000015 -S3154002D3D00000000000000000000000000000000005 -S3154002D3E000000000000000000000000000000000F5 -S3154002D3F000000000000000000000000000000000E5 -S3154002D40000000000000000000000000000000000D4 -S3154002D41000000000000000000000000000000000C4 -S3154002D42000000000000000000000000000000000B4 -S3154002D43000000000000000000000000000000000A4 -S3154002D4400000000000000000000000000000000094 -S3154002D4500000000000000000000000000000000084 -S3154002D4600000000000000000000000000000000074 -S3154002D4700000000000000000000000000000000064 -S3154002D4800000000000000000000000000000000054 -S3154002D4900000000000000000000000000000000044 -S3154002D4A00000000000000000000000000000000034 -S3154002D4B00000000000000000000000000000000024 -S3154002D4C00000000000000000000000000000000014 -S3154002D4D00000000000000000000000000000000004 -S3154002D4E000000000000000000000000000000000F4 -S3154002D4F000000000000000000000000000000000E4 -S3154002D50000000000000000000000000000000000D3 -S3154002D51000000000000000000000000000000000C3 -S3154002D52000000000000000000000000000000000B3 -S3154002D53000000000000000000000000000000000A3 -S3154002D5400000000000000000000000000000000093 -S3154002D5500000000000000000000000000000000083 -S3154002D5600000000000000000000000000000000073 -S3154002D5700000000000000000000000000000000063 -S3154002D5800000000000000000000000000000000053 -S3154002D5900000000000000000000000000000000043 -S3154002D5A00000000000000000000000000000000033 -S3154002D5B00000000000000000000000000000000023 -S3154002D5C00000000000000000000000000000000013 -S3154002D5D00000000000000000000000000000000003 -S3154002D5E000000000000000000000000000000000F3 -S3154002D5F000000000000000000000000000000000E3 -S3154002D60000000000000000000000000000000000D2 -S3154002D61000000000000000000000000000000000C2 -S3154002D62000000000000000000000000000000000B2 -S3154002D63000000000000000000000000000000000A2 -S3154002D6400000000000000000000000000000000092 -S3154002D6500000000000000000000000000000000082 -S3154002D6600000000000000000000000000000000072 -S3154002D6700000000000000000000000000000000062 -S3154002D6800000000000000000000000000000000052 -S3154002D6900000000000000000000000000000000042 -S3154002D6A00000000000000000000000000000000032 -S3154002D6B00000000000000000000000000000000022 -S3154002D6C00000000000000000000000000000000012 -S3154002D6D00000000000000000000000000000000002 -S3154002D6E000000000000000000000000000000000F2 -S3154002D6F000000000000000000000000000000000E2 -S3154002D70000000000000000000000000000000000D1 -S3154002D71000000000000000000000000000000000C1 -S3154002D72000000000000000000000000000000000B1 -S3154002D73000000000000000000000000000000000A1 -S3154002D7400000000000000000000000000000000091 -S3154002D7500000000000000000000000000000000081 -S3154002D7600000000000000000000000000000000071 -S3154002D7700000000000000000000000000000000061 -S3154002D7800000000000000000000000000000000051 -S3154002D7900000000000000000000000000000000041 -S3154002D7A00000000000000000000000000000000031 -S3154002D7B00000000000000000000000000000000021 -S3154002D7C00000000000000000000000000000000011 -S3154002D7D00000000000000000000000000000000001 -S3154002D7E000000000000000000000000000000000F1 -S3154002D7F000000000000000000000000000000000E1 -S3154002D80000000000000000000000000000000000D0 -S3154002D81000000000000000000000000000000000C0 -S3154002D82000000000000000000000000000000000B0 -S3154002D83000000000000000000000000000000000A0 -S3154002D8400000000000000000000000000000000090 -S3154002D8500000000000000000000000000000000080 -S3154002D8600000000000000000000000000000000070 -S3154002D8700000000000000000000000000000000060 -S3154002D8800000000000000000000000000000000050 -S3154002D8900000000000000000000000000000000040 -S3154002D8A00000000000000000000000000000000030 -S3154002D8B00000000000000000000000000000000020 -S3154002D8C00000000000000000000000000000000010 -S3154002D8D00000000000000000000000000000000000 -S3154002D8E000000000000000000000000000000000F0 -S3154002D8F000000000000000000000000000000000E0 -S3154002D90000000000000000000000000000000000CF -S3154002D91000000000000000000000000000000000BF -S3154002D92000000000000000000000000000000000AF -S3154002D930000000000000000000000000000000009F -S3154002D940000000000000000000000000000000008F -S3154002D950000000000000000000000000000000007F -S3154002D960000000000000000000000000000000006F -S3154002D970000000000000000000000000000000005F -S3154002D980000000000000000000000000000000004F -S3154002D990000000000000000000000000000000003F -S3154002D9A0000000000000000000000000000000002F -S3154002D9B0000000000000000000000000000000001F -S3154002D9C0000000000000000000000000000000000F -S3154002D9D000000000000000000000000000000000FF -S3154002D9E000000000000000000000000000000000EF -S3154002D9F000000000000000000000000000000000DF -S3154002DA0000000000000000000000000000000000CE -S3154002DA1000000000000000000000000000000000BE -S3154002DA2000000000000000000000000000000000AE -S3154002DA30000000000000000000000000000000009E -S3154002DA40000000000000000000000000000000008E -S3154002DA50000000000000000000000000000000007E -S3154002DA60000000000000000000000000000000006E -S3154002DA70000000000000000000000000000000005E -S3154002DA80000000000000000000000000000000004E -S3154002DA90000000000000000000000000000000003E -S3154002DAA0000000000000000000000000000000002E -S3154002DAB0000000000000000000000000000000001E -S3154002DAC0000000000000000000000000000000000E -S3154002DAD000000000000000000000000000000000FE -S3154002DAE000000000000000000000000000000000EE -S3154002DAF000000000000000000000000000000000DE -S3154002DB0000000000000000000000000000000000CD -S3154002DB1000000000000000000000000000000000BD -S3154002DB2000000000000000000000000000000000AD -S3154002DB30000000000000000000000000000000009D -S3154002DB40000000000000000000000000000000008D -S3154002DB50000000000000000000000000000000007D -S3154002DB60000000000000000000000000000000006D -S3154002DB70000000000000000000000000000000005D -S3154002DB80000000000000000000000000000000004D -S3154002DB90000000000000000000000000000000003D -S3154002DBA0000000000000000000000000000000002D -S3154002DBB0000000000000000000000000000000001D -S3154002DBC0000000000000000000000000000000000D -S3154002DBD000000000000000000000000000000000FD -S3154002DBE000000000000000000000000000000000ED -S3154002DBF000000000000000000000000000000000DD -S3154002DC0000000000000000000000000000000000CC -S3154002DC1000000000000000000000000000000000BC -S3154002DC2000000000000000000000000000000000AC -S3154002DC30000000000000000000000000000000009C -S3154002DC40000000000000000000000000000000008C -S3154002DC50000000000000000000000000000000007C -S3154002DC60000000000000000000000000000000006C -S3154002DC70000000000000000000000000000000005C -S3154002DC80000000000000000000000000000000004C -S3154002DC90000000000000000000000000000000003C -S3154002DCA0000000000000000000000000000000002C -S3154002DCB0000000000000000000000000000000001C -S3154002DCC0000000000000000000000000000000000C -S3154002DCD000000000000000000000000000000000FC -S3154002DCE000000000000000000000000000000000EC -S3154002DCF000000000000000000000000000000000DC -S3154002DD0000000000000000000000000000000000CB -S3154002DD1000000000000000000000000000000000BB -S3154002DD2000000000000000000000000000000000AB -S3154002DD30000000000000000000000000000000009B -S3154002DD40000000000000000000000000000000008B -S3154002DD50000000000000000000000000000000007B -S3154002DD60000000000000000000000000000000006B -S3154002DD70000000000000000000000000000000005B -S3154002DD80000000000000000000000000000000004B -S3154002DD90000000000000000000000000000000003B -S3154002DDA0000000000000000000000000000000002B -S3154002DDB0000000000000000000000000000000001B -S3154002DDC0000000000000000000000000000000000B -S3154002DDD000000000000000000000000000000000FB -S3154002DDE000000000000000000000000000000000EB -S3154002DDF000000000000000000000000000000000DB -S3154002DE0000000000000000000000000000000000CA -S3154002DE1000000000000000000000000000000000BA -S3154002DE2000000000000000000000000000000000AA -S3154002DE30000000000000000000000000000000009A -S3154002DE40000000000000000000000000000000008A -S3154002DE50000000000000000000000000000000007A -S3154002DE60000000000000000000000000000000006A -S3154002DE70000000000000000000000000000000005A -S3154002DE80000000000000000000000000000000004A -S3154002DE90000000000000000000000000000000003A -S3154002DEA0000000000000000000000000000000002A -S3154002DEB0000000000000000000000000000000001A -S3154002DEC0000000000000000000000000000000000A -S3154002DED000000000000000000000000000000000FA -S3154002DEE000000000000000000000000000000000EA -S3154002DEF000000000000000000000000000000000DA -S3154002DF0000000000000000000000000000000000C9 -S3154002DF1000000000000000000000000000000000B9 -S3154002DF2000000000000000000000000000000000A9 -S3154002DF300000000000000000000000000000000099 -S3154002DF400000000000000000000000000000000089 -S3154002DF500000000000000000000000000000000079 -S3154002DF600000000000000000000000000000000069 -S3154002DF700000000000000000000000000000000059 -S3154002DF800000000000000000000000000000000049 -S3154002DF900000000000000000000000000000000039 -S3154002DFA00000000000000000000000000000000029 -S3154002DFB00000000000000000000000000000000019 -S3154002DFC00000000000000000000000000000000009 -S3154002DFD000000000000000000000000000000000F9 -S3154002DFE000000000000000000000000000000000E9 -S3154002DFF000000000000000000000000000000000D9 -S3154002E00000000000000000000000000000000000C8 -S3154002E01000000000000000000000000000000000B8 -S3154002E02000000000000000000000000000000000A8 -S3154002E0300000000000000000000000000000000098 -S3154002E0400000000000000000000000000000000088 -S3154002E0500000000000000000000000000000000078 -S3154002E0600000000000000000000000000000000068 -S3154002E0700000000000000000000000000000000058 -S3154002E0800000000000000000000000000000000048 -S3154002E0900000000000000000000000000000000038 -S3154002E0A00000000000000000000000000000000028 -S3154002E0B00000000000000000000000000000000018 -S3154002E0C00000000000000000000000000000000008 -S3154002E0D000000000000000000000000000000000F8 -S3154002E0E000000000000000000000000000000000E8 -S3154002E0F000000000000000000000000000000000D8 -S3154002E10000000000000000000000000000000000C7 -S3154002E11000000000000000000000000000000000B7 -S3154002E12000000000000000000000000000000000A7 -S3154002E1300000000000000000000000000000000097 -S3154002E1400000000000000000000000000000000087 -S3154002E1500000000000000000000000000000000077 -S3154002E1600000000000000000000000000000000067 -S3154002E1700000000000000000000000000000000057 -S3154002E1800000000000000000000000000000000047 -S3154002E1900000000000000000000000000000000037 -S3154002E1A00000000000000000000000000000000027 -S3154002E1B00000000000000000000000000000000017 -S3154002E1C00000000000000000000000000000000007 -S3154002E1D000000000000000000000000000000000F7 -S3154002E1E000000000000000000000000000000000E7 -S3154002E1F000000000000000000000000000000000D7 -S3154002E20000000000000000000000000000000000C6 -S3154002E21000000000000000000000000000000000B6 -S3154002E22000000000000000000000000000000000A6 -S3154002E2300000000000000000000000000000000096 -S3154002E2400000000000000000000000000000000086 -S3154002E2500000000000000000000000000000000076 -S3154002E2600000000000000000000000000000000066 -S3154002E2700000000000000000000000000000000056 -S3154002E2800000000000000000000000000000000046 -S3154002E2900000000000000000000000000000000036 -S3154002E2A00000000000000000000000000000000026 -S3154002E2B00000000000000000000000000000000016 -S3154002E2C00000000000000000000000000000000006 -S3154002E2D000000000000000000000000000000000F6 -S3154002E2E000000000000000000000000000000000E6 -S3154002E2F000000000000000000000000000000000D6 -S3154002E30000000000000000000000000000000000C5 -S3154002E31000000000000000000000000000000000B5 -S3154002E32000000000000000000000000000000000A5 -S3154002E3300000000000000000000000000000000095 -S3154002E3400000000000000000000000000000000085 -S3154002E3500000000000000000000000000000000075 -S3154002E3600000000000000000000000000000000065 -S3154002E3700000000000000000000000000000000055 -S3154002E3800000000000000000000000000000000045 -S3154002E3900000000000000000000000000000000035 -S3154002E3A00000000000000000000000000000000025 -S3154002E3B00000000000000000000000000000000015 -S3154002E3C00000000000000000000000000000000005 -S3154002E3D000000000000000000000000000000000F5 -S3154002E3E000000000000000000000000000000000E5 -S3154002E3F000000000000000000000000000000000D5 -S3154002E40000000000000000000000000000000000C4 -S3154002E41000000000000000000000000000000000B4 -S3154002E42000000000000000000000000000000000A4 -S3154002E4300000000000000000000000000000000094 -S3154002E4400000000000000000000000000000000084 -S3154002E4500000000000000000000000000000000074 -S3154002E4600000000000000000000000000000000064 -S3154002E4700000000000000000000000000000000054 -S3154002E4800000000000000000000000000000000044 -S3154002E4900000000000000000000000000000000034 -S3154002E4A00000000000000000000000000000000024 -S3154002E4B00000000000000000000000000000000014 -S3154002E4C00000000000000000000000000000000004 -S3154002E4D000000000000000000000000000000000F4 -S3154002E4E000000000000000000000000000000000E4 -S3154002E4F000000000000000000000000000000000D4 -S3154002E50000000000000000000000000000000000C3 -S3154002E51000000000000000000000000000000000B3 -S3154002E52000000000000000000000000000000000A3 -S3154002E5300000000000000000000000000000000093 -S3154002E5400000000000000000000000000000000083 -S3154002E5500000000000000000000000000000000073 -S3154002E5600000000000000000000000000000000063 -S3154002E5700000000000000000000000000000000053 -S3154002E5800000000000000000000000000000000043 -S3154002E5900000000000000000000000000000000033 -S3154002E5A00000000000000000000000000000000023 -S3154002E5B00000000000000000000000000000000013 -S3154002E5C00000000000000000000000000000000003 -S3154002E5D000000000000000000000000000000000F3 -S3154002E5E000000000000000000000000000000000E3 -S3154002E5F000000000000000000000000000000000D3 -S3154002E60000000000000000000000000000000000C2 -S3154002E61000000000000000000000000000000000B2 -S3154002E62000000000000000000000000000000000A2 -S3154002E6300000000000000000000000000000000092 -S3154002E6400000000000000000000000000000000082 -S3154002E6500000000000000000000000000000000072 -S3154002E6600000000000000000000000000000000062 -S3154002E6700000000000000000000000000000000052 -S3154002E6800000000000000000000000000000000042 -S3154002E6900000000000000000000000000000000032 -S3154002E6A00000000000000000000000000000000022 -S3154002E6B00000000000000000000000000000000012 -S3154002E6C00000000000000000000000000000000002 -S3154002E6D000000000000000000000000000000000F2 -S3154002E6E000000000000000000000000000000000E2 -S3154002E6F000000000000000000000000000000000D2 -S3154002E70000000000000000000000000000000000C1 -S3154002E71000000000000000000000000000000000B1 -S3154002E72000000000000000000000000000000000A1 -S3154002E7300000000000000000000000000000000091 -S3154002E7400000000000000000000000000000000081 -S3154002E7500000000000000000000000000000000071 -S3154002E7600000000000000000000000000000000061 -S3154002E7700000000000000000000000000000000051 -S3154002E7800000000000000000000000000000000041 -S3154002E7900000000000000000000000000000000031 -S3154002E7A00000000000000000000000000000000021 -S3154002E7B00000000000000000000000000000000011 -S3154002E7C00000000000000000000000000000000001 -S3154002E7D000000000000000000000000000000000F1 -S3154002E7E000000000000000000000000000000000E1 -S3154002E7F000000000000000000000000000000000D1 -S3154002E80000000000000000000000000000000000C0 -S3154002E81000000000000000000000000000000000B0 -S3154002E82000000000000000000000000000000000A0 -S3154002E8300000000000000000000000000000000090 -S3154002E8400000000000000000000000000000000080 -S3154002E8500000000000000000000000000000000070 -S3154002E8600000000000000000000000000000000060 -S3154002E8700000000000000000000000000000000050 -S3154002E8800000000000000000000000000000000040 -S3154002E8900000000000000000000000000000000030 -S3154002E8A00000000000000000000000000000000020 -S3154002E8B00000000000000000000000000000000010 -S3154002E8C00000000000000000000000000000000000 -S3154002E8D000000000000000000000000000000000F0 -S3154002E8E000000000000000000000000000000000E0 -S3154002E8F000000000000000000000000000000000D0 -S3154002E90000000000000000000000000000000000BF -S3154002E91000000000000000000000000000000000AF -S3154002E920000000000000000000000000000000009F -S3154002E930000000000000000000000000000000008F -S3154002E940000000000000000000000000000000007F -S3154002E950000000000000000000000000000000006F -S3154002E960000000000000000000000000000000005F -S3154002E970000000000000000000000000000000004F -S3154002E980000000000000000000000000000000003F -S3154002E990000000000000000000000000000000002F -S3154002E9A0000000000000000000000000000000001F -S3154002E9B0000000000000000000000000000000000F -S3154002E9C000000000000000000000000000000000FF -S3154002E9D000000000000000000000000000000000EF -S3154002E9E000000000000000000000000000000000DF -S3154002E9F000000000000000000000000000000000CF -S3154002EA0000000000000000000000000000000000BE -S3154002EA1000000000000000000000000000000000AE -S3154002EA20000000000000000000000000000000009E -S3154002EA30000000000000000000000000000000008E -S3154002EA40000000000000000000000000000000007E -S3154002EA50000000000000000000000000000000006E -S3154002EA60000000000000000000000000000000005E -S3154002EA70000000000000000000000000000000004E -S3154002EA80000000000000000000000000000000003E -S3154002EA90000000000000000000000000000000002E -S3154002EAA0000000000000000000000000000000001E -S3154002EAB0000000000000000000000000000000000E -S3154002EAC000000000000000000000000000000000FE -S3154002EAD000000000000000000000000000000000EE -S3154002EAE000000000000000000000000000000000DE -S3154002EAF000000000000000000000000000000000CE -S3154002EB0000000000000000000000000000000000BD -S3154002EB1000000000000000000000000000000000AD -S3154002EB20000000000000000000000000000000009D -S3154002EB30000000000000000000000000000000008D -S3154002EB40000000000000000000000000000000007D -S3154002EB50000000000000000000000000000000006D -S3154002EB60000000000000000000000000000000005D -S3154002EB70000000000000000000000000000000004D -S3154002EB80000000000000000000000000000000003D -S3154002EB90000000000000000000000000000000002D -S3154002EBA0000000000000000000000000000000001D -S3154002EBB0000000000000000000000000000000000D -S3154002EBC000000000000000000000000000000000FD -S3154002EBD000000000000000000000000000000000ED -S3154002EBE000000000000000000000000000000000DD -S3154002EBF000000000000000000000000000000000CD -S3154002EC0000000000000000000000000000000000BC -S3154002EC1000000000000000000000000000000000AC -S3154002EC20000000000000000000000000000000009C -S3154002EC30000000000000000000000000000000008C -S3154002EC40000000000000000000000000000000007C -S3154002EC50000000000000000000000000000000006C -S3154002EC60000000000000000000000000000000005C -S3154002EC70000000000000000000000000000000004C -S3154002EC80000000000000000000000000000000003C -S3154002EC90000000000000000000000000000000002C -S3154002ECA0000000000000000000000000000000001C -S3154002ECB0000000000000000000000000000000000C -S3154002ECC000000000000000000000000000000000FC -S3154002ECD000000000000000000000000000000000EC -S3154002ECE000000000000000000000000000000000DC -S3154002ECF000000000000000000000000000000000CC -S3154002ED0000000000000000000000000000000000BB -S3154002ED1000000000000000000000000000000000AB -S3154002ED20000000000000000000000000000000009B -S3154002ED30000000000000000000000000000000008B -S3154002ED40000000000000000000000000000000007B -S3154002ED50000000000000000000000000000000006B -S3154002ED60000000000000000000000000000000005B -S3154002ED70000000000000000000000000000000004B -S3154002ED80000000000000000000000000000000003B -S3154002ED90000000000000000000000000000000002B -S3154002EDA0000000000000000000000000000000001B -S3154002EDB0000000000000000000000000000000000B -S3154002EDC000000000000000000000000000000000FB -S3154002EDD000000000000000000000000000000000EB -S3154002EDE000000000000000000000000000000000DB -S3154002EDF000000000000000000000000000000000CB -S3154002EE0000000000000000000000000000000000BA -S3154002EE1000000000000000000000000000000000AA -S3154002EE20000000000000000000000000000000009A -S3154002EE30000000000000000000000000000000008A -S3154002EE40000000000000000000000000000000007A -S3154002EE50000000000000000000000000000000006A -S3154002EE60000000000000000000000000000000005A -S3154002EE70000000000000000000000000000000004A -S3154002EE80000000000000000000000000000000003A -S3154002EE90000000000000000000000000000000002A -S3154002EEA0000000000000000000000000000000001A -S3154002EEB0000000000000000000000000000000000A -S3154002EEC000000000000000000000000000000000FA -S3154002EED000000000000000000000000000000000EA -S3154002EEE000000000000000000000000000000000DA -S3154002EEF000000000000000000000000000000000CA -S3154002EF0000000000000000000000000000000000B9 -S3154002EF1000000000000000000000000000000000A9 -S3154002EF200000000000000000000000000000000099 -S3154002EF300000000000000000000000000000000089 -S3154002EF400000000000000000000000000000000079 -S3154002EF500000000000000000000000000000000069 -S3154002EF600000000000000000000000000000000059 -S3154002EF700000000000000000000000000000000049 -S3154002EF800000000000000000000000000000000039 -S3154002EF900000000000000000000000000000000029 -S3154002EFA00000000000000000000000000000000019 -S3154002EFB00000000000000000000000000000000009 -S3154002EFC000000000000000000000000000000000F9 -S3154002EFD000000000000000000000000000000000E9 -S3154002EFE000000000000000000000000000000000D9 -S3154002EFF000000000000000000000000000000000C9 -S3154002F00000000000000000000000000000000000B8 -S3154002F01000000000000000000000000000000000A8 -S3154002F0200000000000000000000000000000000098 -S3154002F0300000000000000000000000000000000088 -S3154002F0400000000000000000000000000000000078 -S3154002F0500000000000000000000000000000000068 -S3154002F0600000000000000000000000000000000058 -S3154002F0700000000000000000000000000000000048 -S3154002F0800000000000000000000000000000000038 -S3154002F0900000000000000000000000000000000028 -S3154002F0A00000000000000000000000000000000018 -S3154002F0B00000000000000000000000000000000008 -S3154002F0C000000000000000000000000000000000F8 -S3154002F0D000000000000000000000000000000000E8 -S3154002F0E000000000000000000000000000000000D8 -S3154002F0F000000000000000000000000000000000C8 -S3154002F10000000000000000000000000000000000B7 -S3154002F11000000000000000000000000000000000A7 -S3154002F1200000000000000000000000000000000097 -S3154002F1300000000000000000000000000000000087 -S3154002F1400000000000000000000000000000000077 -S3154002F1500000000000000000000000000000000067 -S3154002F1600000000000000000000000000000000057 -S3154002F1700000000000000000000000000000000047 -S3154002F1800000000000000000000000000000000037 -S3154002F1900000000000000000000000000000000027 -S3154002F1A00000000000000000000000000000000017 -S3154002F1B00000000000000000000000000000000007 -S3154002F1C000000000000000000000000000000000F7 -S3154002F1D000000000000000000000000000000000E7 -S3154002F1E000000000000000000000000000000000D7 -S3154002F1F000000000000000000000000000000000C7 -S3154002F20000000000000000000000000000000000B6 -S3154002F21000000000000000000000000000000000A6 -S3154002F2200000000000000000000000000000000096 -S3154002F2300000000000000000000000000000000086 -S3154002F2400000000000000000000000000000000076 -S3154002F2500000000000000000000000000000000066 -S3154002F2600000000000000000000000000000000056 -S3154002F2700000000000000000000000000000000046 -S3154002F2800000000000000000000000000000000036 -S3154002F2900000000000000000000000000000000026 -S3154002F2A00000000000000000000000000000000016 -S3154002F2B00000000000000000000000000000000006 -S3154002F2C000000000000000000000000000000000F6 -S3154002F2D000000000000000000000000000000000E6 -S3154002F2E000000000000000000000000000000000D6 -S3154002F2F000000000000000000000000000000000C6 -S3154002F30000000000000000000000000000000000B5 -S3154002F31000000000000000000000000000000000A5 -S3154002F3200000000000000000000000000000000095 -S3154002F3300000000000000000000000000000000085 -S3154002F3400000000000000000000000000000000075 -S3154002F3500000000000000000000000000000000065 -S3154002F3600000000000000000000000000000000055 -S3154002F3700000000000000000000000000000000045 -S3154002F3800000000000000000000000000000000035 -S3154002F3900000000000000000000000000000000025 -S3154002F3A00000000000000000000000000000000015 -S3154002F3B00000000000000000000000000000000005 -S3154002F3C000000000000000000000000000000000F5 -S3154002F3D000000000000000000000000000000000E5 -S3154002F3E000000000000000000000000000000000D5 -S3154002F3F000000000000000000000000000000000C5 -S3154002F40000000000000000000000000000000000B4 -S3154002F41000000000000000000000000000000000A4 -S3154002F4200000000000000000000000000000000094 -S3154002F4300000000000000000000000000000000084 -S3154002F4400000000000000000000000000000000074 -S3154002F4500000000000000000000000000000000064 -S3154002F4600000000000000000000000000000000054 -S3154002F4700000000000000000000000000000000044 -S3154002F4800000000000000000000000000000000034 -S3154002F4900000000000000000000000000000000024 -S3154002F4A00000000000000000000000000000000014 -S3154002F4B00000000000000000000000000000000004 -S3154002F4C000000000000000000000000000000000F4 -S3154002F4D000000000000000000000000000000000E4 -S3154002F4E000000000000000000000000000000000D4 -S3154002F4F000000000000000000000000000000000C4 -S3154002F50000000000000000000000000000000000B3 -S3154002F51000000000000000000000000000000000A3 -S3154002F5200000000000000000000000000000000093 -S3154002F5300000000000000000000000000000000083 -S3154002F5400000000000000000000000000000000073 -S3154002F5500000000000000000000000000000000063 -S3154002F5600000000000000000000000000000000053 -S3154002F5700000000000000000000000000000000043 -S3154002F5800000000000000000000000000000000033 -S3154002F5900000000000000000000000000000000023 -S3154002F5A00000000000000000000000000000000013 -S3154002F5B00000000000000000000000000000000003 -S3154002F5C000000000000000000000000000000000F3 -S3154002F5D000000000000000000000000000000000E3 -S3154002F5E000000000000000000000000000000000D3 -S3154002F5F000000000000000000000000000000000C3 -S3154002F60000000000000000000000000000000000B2 -S3154002F61000000000000000000000000000000000A2 -S3154002F6200000000000000000000000000000000092 -S3154002F6300000000000000000000000000000000082 -S3154002F6400000000000000000000000000000000072 -S3154002F6500000000000000000000000000000000062 -S3154002F6600000000000000000000000000000000052 -S3154002F6700000000000000000000000000000000042 -S3154002F6800000000000000000000000000000000032 -S3154002F6900000000000000000000000000000000022 -S3154002F6A00000000000000000000000000000000012 -S3154002F6B00000000000000000000000000000000002 -S3154002F6C000000000000000000000000000000000F2 -S3154002F6D000000000000000000000000000000000E2 -S3154002F6E000000000000000000000000000000000D2 -S3154002F6F000000000000000000000000000000000C2 -S3154002F70000000000000000000000000000000000B1 -S3154002F71000000000000000000000000000000000A1 -S3154002F7200000000000000000000000000000000091 -S3154002F7300000000000000000000000000000000081 -S3154002F7400000000000000000000000000000000071 -S3154002F7500000000000000000000000000000000061 -S3154002F7600000000000000000000000000000000051 -S3154002F7700000000000000000000000000000000041 -S3154002F7800000000000000000000000000000000031 -S3154002F7900000000000000000000000000000000021 -S3154002F7A00000000000000000000000000000000011 -S3154002F7B00000000000000000000000000000000001 -S3154002F7C000000000000000000000000000000000F1 -S3154002F7D000000000000000000000000000000000E1 -S3154002F7E000000000000000000000000000000000D1 -S3154002F7F000000000000000000000000000000000C1 -S3154002F80000000000000000000000000000000000B0 -S3154002F81000000000000000000000000000000000A0 -S3154002F8200000000000000000000000000000000090 -S3154002F8300000000000000000000000000000000080 -S3154002F8400000000000000000000000000000000070 -S3154002F8500000000000000000000000000000000060 -S3154002F8600000000000000000000000000000000050 -S3154002F8700000000000000000000000000000000040 -S3154002F8800000000000000000000000000000000030 -S3154002F8900000000000000000000000000000000020 -S3154002F8A00000000000000000000000000000000010 -S3154002F8B00000000000000000000000000000000000 -S3154002F8C000000000000000000000000000000000F0 -S3154002F8D000000000000000000000000000000000E0 -S3154002F8E000000000000000000000000000000000D0 -S3154002F8F000000000000000000000000000000000C0 -S3154002F90000000000000000000000000000000000AF -S3154002F910000000000000000000000000000000009F -S3154002F920000000000000000000000000000000008F -S3154002F930000000000000000000000000000000007F -S3154002F940000000000000000000000000000000006F -S3154002F950000000000000000000000000000000005F -S3154002F960000000000000000000000000000000004F -S3154002F970000000000000000000000000000000003F -S3154002F980000000000000000000000000000000002F -S3154002F990000000000000000000000000000000001F -S3154002F9A0000000000000000000000000000000000F -S3154002F9B000000000000000000000000000000000FF -S3154002F9C000000000000000000000000000000000EF -S3154002F9D000000000000000000000000000000000DF -S3154002F9E000000000000000000000000000000000CF -S3154002F9F000000000000000000000000000000000BF -S3154002FA0000000000000000000000000000000000AE -S3154002FA10000000000000000000000000000000009E -S3154002FA20000000000000000000000000000000008E -S3154002FA30000000000000000000000000000000007E -S3154002FA40000000000000000000000000000000006E -S3154002FA50000000000000000000000000000000005E -S3154002FA60000000000000000000000000000000004E -S3154002FA70000000000000000000000000000000003E -S3154002FA80000000000000000000000000000000002E -S3154002FA90000000000000000000000000000000001E -S3154002FAA0000000000000000000000000000000000E -S3154002FAB000000000000000000000000000000000FE -S3154002FAC000000000000000000000000000000000EE -S3154002FAD000000000000000000000000000000000DE -S3154002FAE000000000000000000000000000000000CE -S3154002FAF000000000000000000000000000000000BE -S3154002FB0000000000000000000000000000000000AD -S3154002FB10000000000000000000000000000000009D -S3154002FB20000000000000000000000000000000008D -S3154002FB30000000000000000000000000000000007D -S3154002FB40000000000000000000000000000000006D -S3154002FB50000000000000000000000000000000005D -S3154002FB60000000000000000000000000000000004D -S3154002FB70000000000000000000000000000000003D -S3154002FB80000000000000000000000000000000002D -S3154002FB90000000000000000000000000000000001D -S3154002FBA0000000000000000000000000000000000D -S3154002FBB000000000000000000000000000000000FD -S3154002FBC000000000000000000000000000000000ED -S3154002FBD000000000000000000000000000000000DD -S3154002FBE000000000000000000000000000000000CD -S3154002FBF000000000000000000000000000000000BD -S3154002FC0000000000000000000000000000000000AC -S3154002FC10000000000000000000000000000000009C -S3154002FC20000000000000000000000000000000008C -S3154002FC30000000000000000000000000000000007C -S3154002FC40000000000000000000000000000000006C -S3154002FC50000000000000000000000000000000005C -S3154002FC60000000000000000000000000000000004C -S3154002FC70000000000000000000000000000000003C -S3154002FC80000000000000000000000000000000002C -S3154002FC90000000000000000000000000000000001C -S3154002FCA0000000000000000000000000000000000C -S3154002FCB000000000000000000000000000000000FC -S3154002FCC000000000000000000000000000000000EC -S3154002FCD000000000000000000000000000000000DC -S3154002FCE000000000000000000000000000000000CC -S3154002FCF000000000000000000000000000000000BC -S3154002FD0000000000000000000000000000000000AB -S3154002FD10000000000000000000000000000000009B -S3154002FD20000000000000000000000000000000008B -S3154002FD30000000000000000000000000000000007B -S3154002FD40000000000000000000000000000000006B -S3154002FD50000000000000000000000000000000005B -S3154002FD60000000000000000000000000000000004B -S3154002FD70000000000000000000000000000000003B -S3154002FD80000000000000000000000000000000002B -S3154002FD90000000000000000000000000000000001B -S3154002FDA0000000000000000000000000000000000B -S3154002FDB000000000000000000000000000000000FB -S3154002FDC000000000000000000000000000000000EB -S3154002FDD000000000000000000000000000000000DB -S3154002FDE000000000000000000000000000000000CB -S3154002FDF000000000000000000000000000000000BB -S3154002FE0000000000000000000000000000000000AA -S3154002FE10000000000000000000000000000000009A -S3154002FE20000000000000000000000000000000008A -S3154002FE30000000000000000000000000000000007A -S3154002FE40000000000000000000000000000000006A -S3154002FE50000000000000000000000000000000005A -S3154002FE60000000000000000000000000000000004A -S3154002FE70000000000000000000000000000000003A -S3154002FE80000000000000000000000000000000002A -S3154002FE90000000000000000000000000000000001A -S3154002FEA0000000000000000000000000000000000A -S3154002FEB000000000000000000000000000000000FA -S3154002FEC000000000000000000000000000000000EA -S3154002FED000000000000000000000000000000000DA -S3154002FEE000000000000000000000000000000000CA -S3154002FEF000000000000000000000000000000000BA -S3154002FF0000000000000000000000000000000000A9 -S3154002FF100000000000000000000000000000000099 -S3154002FF200000000000000000000000000000000089 -S3154002FF300000000000000000000000000000000079 -S3154002FF400000000000000000000000000000000069 -S3154002FF500000000000000000000000000000000059 -S3154002FF600000000000000000000000000000000049 -S3154002FF700000000000000000000000000000000039 -S3154002FF800000000000000000000000000000000029 -S3154002FF900000000000000000000000000000000019 -S3154002FFA00000000000000000000000000000000009 -S3154002FFB000000000000000000000000000000000F9 -S3154002FFC000000000000000000000000000000000E9 -S3154002FFD000000000000000000000000000000000D9 -S3154002FFE000000000000000000000000000000000C9 -S3154002FFF000000000000000000000000000000000B9 -S3154003000000000000000000000000000000000000A7 -S315400300100000000000000000000000000000000097 -S315400300200000000000000000000000000000000087 -S315400300300000000000000000000000000000000077 -S315400300400000000000000000000000000000000067 -S315400300500000000000000000000000000000000057 -S315400300600000000000000000000000000000000047 -S315400300700000000000000000000000000000000037 -S315400300800000000000000000000000000000000027 -S315400300900000000000000000000000000000000017 -S315400300A00000000000000000000000000000000007 -S315400300B000000000000000000000000000000000F7 -S315400300C000000000000000000000000000000000E7 -S315400300D000000000000000000000000000000000D7 -S315400300E000000000000000000000000000000000C7 -S315400300F000000000000000000000000000000000B7 -S3154003010000000000000000000000000000000000A6 -S315400301100000000000000000000000000000000096 -S315400301200000000000000000000000000000000086 -S315400301300000000000000000000000000000000076 -S315400301400000000000000000000000000000000066 -S315400301500000000000000000000000000000000056 -S315400301600000000000000000000000000000000046 -S315400301700000000000000000000000000000000036 -S315400301800000000000000000000000000000000026 -S315400301900000000000000000000000000000000016 -S315400301A00000000000000000000000000000000006 -S315400301B000000000000000000000000000000000F6 -S315400301C000000000000000000000000000000000E6 -S315400301D000000000000000000000000000000000D6 -S315400301E000000000000000000000000000000000C6 -S315400301F000000000000000000000000000000000B6 -S3154003020000000000000000000000000000000000A5 -S315400302100000000000000000000000000000000095 -S315400302200000000000000000000000000000000085 -S315400302300000000000000000000000000000000075 -S315400302400000000000000000000000000000000065 -S315400302500000000000000000000000000000000055 -S315400302600000000000000000000000000000000045 -S315400302700000000000000000000000000000000035 -S315400302800000000000000000000000000000000025 -S315400302900000000000000000000000000000000015 -S315400302A00000000000000000000000000000000005 -S315400302B000000000000000000000000000000000F5 -S315400302C000000000000000000000000000000000E5 -S315400302D000000000000000000000000000000000D5 -S315400302E000000000000000000000000000000000C5 -S315400302F000000000000000000000000000000000B5 -S3154003030000000000000000000000000000000000A4 -S315400303100000000000000000000000000000000094 -S315400303200000000000000000000000000000000084 -S315400303300000000000000000000000000000000074 -S315400303400000000000000000000000000000000064 -S315400303500000000000000000000000000000000054 -S315400303600000000000000000000000000000000044 -S315400303700000000000000000000000000000000034 -S315400303800000000000000000000000000000000024 -S315400303900000000000000000000000000000000014 -S315400303A00000000000000000000000000000000004 -S315400303B000000000000000000000000000000000F4 -S315400303C000000000000000000000000000000000E4 -S315400303D000000000000000000000000000000000D4 -S315400303E000000000000000000000000000000000C4 -S315400303F000000000000000000000000000000000B4 -S3154003040000000000000000000000000000000000A3 -S315400304100000000000000000000000000000000093 -S315400304200000000000000000000000000000000083 -S315400304300000000000000000000000000000000073 -S315400304400000000000000000000000000000000063 -S315400304500000000000000000000000000000000053 -S315400304600000000000000000000000000000000043 -S315400304700000000000000000000000000000000033 -S315400304800000000000000000000000000000000023 -S315400304900000000000000000000000000000000013 -S315400304A00000000000000000000000000000000003 -S315400304B000000000000000000000000000000000F3 -S315400304C000000000000000000000000000000000E3 -S315400304D000000000000000000000000000000000D3 -S315400304E000000000000000000000000000000000C3 -S315400304F000000000000000000000000000000000B3 -S3154003050000000000000000000000000000000000A2 -S315400305100000000000000000000000000000000092 -S315400305200000000000000000000000000000000082 -S315400305300000000000000000000000000000000072 -S315400305400000000000000000000000000000000062 -S315400305500000000000000000000000000000000052 -S315400305600000000000000000000000000000000042 -S315400305700000000000000000000000000000000032 -S315400305800000000000000000000000000000000022 -S315400305900000000000000000000000000000000012 -S315400305A00000000000000000000000000000000002 -S315400305B000000000000000000000000000000000F2 -S315400305C000000000000000000000000000000000E2 -S315400305D000000000000000000000000000000000D2 -S315400305E000000000000000000000000000000000C2 -S315400305F000000000000000000000000000000000B2 -S3154003060000000000000000000000000000000000A1 -S315400306100000000000000000000000000000000091 -S315400306200000000000000000000000000000000081 -S315400306300000000000000000000000000000000071 -S315400306400000000000000000000000000000000061 -S315400306500000000000000000000000000000000051 -S315400306600000000000000000000000000000000041 -S315400306700000000000000000000000000000000031 -S315400306800000000000000000000000000000000021 -S315400306900000000000000000000000000000000011 -S315400306A00000000000000000000000000000000001 -S315400306B000000000000000000000000000000000F1 -S315400306C000000000000000000000000000000000E1 -S315400306D000000000000000000000000000000000D1 -S315400306E000000000000000000000000000000000C1 -S315400306F000000000000000000000000000000000B1 -S3154003070000000000000000000000000000000000A0 -S315400307100000000000000000000000000000000090 -S315400307200000000000000000000000000000000080 -S315400307300000000000000000000000000000000070 -S315400307400000000000000000000000000000000060 -S315400307500000000000000000000000000000000050 -S315400307600000000000000000000000000000000040 -S315400307700000000000000000000000000000000030 -S315400307800000000000000000000000000000000020 -S315400307900000000000000000000000000000000010 -S315400307A00000000000000000000000000000000000 -S315400307B000000000000000000000000000000000F0 -S315400307C000000000000000000000000000000000E0 -S315400307D000000000000000000000000000000000D0 -S315400307E000000000000000000000000000000000C0 -S315400307F000000000000000000000000000000000B0 -S31540030800000000000000000000000000000000009F -S31540030810000000000000000000000000000000008F -S31540030820000000000000000000000000000000007F -S31540030830000000000000000000000000000000006F -S31540030840000000000000000000000000000000005F -S31540030850000000000000000000000000000000004F -S31540030860000000000000000000000000000000003F -S31540030870000000000000000000000000000000002F -S31540030880000000000000000000000000000000001F -S31540030890000000000000000000000000000000000F -S315400308A000000000000000000000000000000000FF -S315400308B000000000000000000000000000000000EF -S315400308C000000000000000000000000000000000DF -S315400308D000000000000000000000000000000000CF -S315400308E000000000000000000000000000000000BF -S315400308F000000000000000000000000000000000AF -S31540030900000000000000000000000000000000009E -S31540030910000000000000000000000000000000008E -S31540030920000000000000000000000000000000007E -S31540030930000000000000000000000000000000006E -S31540030940000000000000000000000000000000005E -S31540030950000000000000000000000000000000004E -S31540030960000000000000000000000000000000003E -S31540030970000000000000000000000000000000002E -S31540030980000000000000000000000000000000001E -S31540030990000000000000000000000000000000000E -S315400309A000000000000000000000000000000000FE -S315400309B000000000000000000000000000000000EE -S315400309C000000000000000000000000000000000DE -S315400309D000000000000000000000000000000000CE -S315400309E000000000000000000000000000000000BE -S315400309F000000000000000000000000000000000AE -S31540030A00000000000000000000000000000000009D -S31540030A10000000000000000000000000000000008D -S31540030A20000000000000000000000000000000007D -S31540030A30000000000000000000000000000000006D -S31540030A40000000000000000000000000000000005D -S31540030A50000000000000000000000000000000004D -S31540030A60000000000000000000000000000000003D -S31540030A70000000000000000000000000000000002D -S31540030A80000000000000000000000000000000001D -S31540030A90000000000000000000000000000000000D -S31540030AA000000000000000000000000000000000FD -S31540030AB000000000000000000000000000000000ED -S31540030AC000000000000000000000000000000000DD -S31540030AD000000000000000000000000000000000CD -S31540030AE000000000000000000000000000000000BD -S31540030AF000000000000000000000000000000000AD -S31540030B00000000000000000000000000000000009C -S31540030B10000000000000000000000000000000008C -S31540030B20000000000000000000000000000000007C -S31540030B30000000000000000000000000000000006C -S31540030B40000000000000000000000000000000005C -S31540030B50000000000000000000000000000000004C -S31540030B60000000000000000000000000000000003C -S31540030B70000000000000000000000000000000002C -S31540030B80000000000000000000000000000000001C -S31540030B90000000000000000000000000000000000C -S31540030BA000000000000000000000000000000000FC -S31540030BB000000000000000000000000000000000EC -S31540030BC000000000000000000000000000000000DC -S31540030BD000000000000000000000000000000000CC -S31540030BE000000000000000000000000000000000BC -S31540030BF000000000000000000000000000000000AC -S31540030C00000000000000000000000000000000009B -S31540030C10000000000000000000000000000000008B -S31540030C20000000000000000000000000000000007B -S31540030C30000000000000000000000000000000006B -S31540030C40000000000000000000000000000000005B -S31540030C50000000000000000000000000000000004B -S31540030C60000000000000000000000000000000003B -S31540030C70000000000000000000000000000000002B -S31540030C80000000000000000000000000000000001B -S31540030C90000000000000000000000000000000000B -S31540030CA000000000000000000000000000000000FB -S31540030CB000000000000000000000000000000000EB -S31540030CC000000000000000000000000000000000DB -S31540030CD000000000000000000000000000000000CB -S31540030CE000000000000000000000000000000000BB -S31540030CF000000000000000000000000000000000AB -S31540030D00000000000000000000000000000000009A -S31540030D10000000000000000000000000000000008A -S31540030D20000000000000000000000000000000007A -S31540030D30000000000000000000000000000000006A -S31540030D40000000000000000000000000000000005A -S31540030D50000000000000000000000000000000004A -S31540030D60000000000000000000000000000000003A -S31540030D70000000000000000000000000000000002A -S31540030D80000000000000000000000000000000001A -S31540030D90000000000000000000000000000000000A -S31540030DA000000000000000000000000000000000FA -S31540030DB000000000000000000000000000000000EA -S31540030DC000000000000000000000000000000000DA -S31540030DD000000000000000000000000000000000CA -S31540030DE000000000000000000000000000000000BA -S31540030DF000000000000000000000000000000000AA -S31540030E000000000000000000000000000000000099 -S31540030E100000000000000000000000000000000089 -S31540030E200000000000000000000000000000000079 -S31540030E300000000000000000000000000000000069 -S31540030E400000000000000000000000000000000059 -S31540030E500000000000000000000000000000000049 -S31540030E600000000000000000000000000000000039 -S31540030E700000000000000000000000000000000029 -S31540030E800000000000000000000000000000000019 -S31540030E900000000000000000000000000000000009 -S31540030EA000000000000000000000000000000000F9 -S31540030EB000000000000000000000000000000000E9 -S31540030EC000000000000000000000000000000000D9 -S31540030ED000000000000000000000000000000000C9 -S31540030EE000000000000000000000000000000000B9 -S31540030EF000000000000000000000000000000000A9 -S31540030F000000000000000000000000000000000098 -S31540030F100000000000000000000000000000000088 -S31540030F200000000000000000000000000000000078 -S31540030F300000000000000000000000000000000068 -S31540030F400000000000000000000000000000000058 -S31540030F500000000000000000000000000000000048 -S31540030F600000000000000000000000000000000038 -S31540030F700000000000000000000000000000000028 -S31540030F800000000000000000000000000000000018 -S31540030F900000000000000000000000000000000008 -S31540030FA000000000000000000000000000000000F8 -S31540030FB000000000000000000000000000000000E8 -S31540030FC000000000000000000000000000000000D8 -S31540030FD000000000000000000000000000000000C8 -S31540030FE000000000000000000000000000000000B8 -S31540030FF000000000000000000000000000000000A8 -S315400310000000000000000000000000000000000097 -S315400310100000000000000000000000000000000087 -S315400310200000000000000000000000000000000077 -S315400310300000000000000000000000000000000067 -S315400310400000000000000000000000000000000057 -S315400310500000000000000000000000000000000047 -S315400310600000000000000000000000000000000037 -S315400310700000000000000000000000000000000027 -S315400310800000000000000000000000000000000017 -S315400310900000000000000000000000000000000007 -S315400310A000000000000000000000000000000000F7 -S315400310B000000000000000000000000000000000E7 -S315400310C000000000000000000000000000000000D7 -S315400310D000000000000000000000000000000000C7 -S315400310E000000000000000000000000000000000B7 -S315400310F000000000000000000000000000000000A7 -S315400311000000000000000000000000000000000096 -S315400311100000000000000000000000000000000086 -S315400311200000000000000000000000000000000076 -S315400311300000000000000000000000000000000066 -S315400311400000000000000000000000000000000056 -S315400311500000000000000000000000000000000046 -S315400311600000000000000000000000000000000036 -S315400311700000000000000000000000000000000026 -S315400311800000000000000000000000000000000016 -S315400311900000000000000000000000000000000006 -S315400311A000000000000000000000000000000000F6 -S315400311B000000000000000000000000000000000E6 -S315400311C000000000000000000000000000000000D6 -S315400311D000000000000000000000000000000000C6 -S315400311E000000000000000000000000000000000B6 -S315400311F000000000000000000000000000000000A6 -S315400312000000000000000000000000000000000095 -S315400312100000000000000000000000000000000085 -S315400312200000000000000000000000000000000075 -S315400312300000000000000000000000000000000065 -S315400312400000000000000000000000000000000055 -S315400312500000000000000000000000000000000045 -S315400312600000000000000000000000000000000035 -S315400312700000000000000000000000000000000025 -S315400312800000000000000000000000000000000015 -S315400312900000000000000000000000000000000005 -S315400312A000000000000000000000000000000000F5 -S315400312B000000000000000000000000000000000E5 -S315400312C000000000000000000000000000000000D5 -S315400312D000000000000000000000000000000000C5 -S315400312E000000000000000000000000000000000B5 -S315400312F000000000000000000000000000000000A5 -S315400313000000000000000000000000000000000094 -S315400313100000000000000000000000000000000084 -S315400313200000000000000000000000000000000074 -S315400313300000000000000000000000000000000064 -S315400313400000000000000000000000000000000054 -S315400313500000000000000000000000000000000044 -S315400313600000000000000000000000000000000034 -S315400313700000000000000000000000000000000024 -S315400313800000000000000000000000000000000014 -S315400313900000000000000000000000000000000004 -S315400313A000000000000000000000000000000000F4 -S315400313B000000000000000000000000000000000E4 -S315400313C000000000000000000000000000000000D4 -S315400313D000000000000000000000000000000000C4 -S315400313E000000000000000000000000000000000B4 -S315400313F000000000000000000000000000000000A4 -S315400314000000000000000000000000000000000093 -S315400314100000000000000000000000000000000083 -S315400314200000000000000000000000000000000073 -S315400314300000000000000000000000000000000063 -S315400314400000000000000000000000000000000053 -S315400314500000000000000000000000000000000043 -S315400314600000000000000000000000000000000033 -S315400314700000000000000000000000000000000023 -S315400314800000000000000000000000000000000013 -S315400314900000000000000000000000000000000003 -S315400314A000000000000000000000000000000000F3 -S315400314B000000000000000000000000000000000E3 -S315400314C000000000000000000000000000000000D3 -S315400314D000000000000000000000000000000000C3 -S315400314E000000000000000000000000000000000B3 -S315400314F000000000000000000000000000000000A3 -S315400315000000000000000000000000000000000092 -S315400315100000000000000000000000000000000082 -S315400315200000000000000000000000000000000072 -S315400315300000000000000000000000000000000062 -S315400315400000000000000000000000000000000052 -S315400315500000000000000000000000000000000042 -S315400315600000000000000000000000000000000032 -S315400315700000000000000000000000000000000022 -S315400315800000000000000000000000000000000012 -S315400315900000000000000000000000000000000002 -S315400315A000000000000000000000000000000000F2 -S315400315B000000000000000000000000000000000E2 -S315400315C000000000000000000000000000000000D2 -S315400315D000000000000000000000000000000000C2 -S315400315E000000000000000000000000000000000B2 -S315400315F000000000000000000000000000000000A2 -S315400316000000000000000000000000000000000091 -S315400316100000000000000000000000000000000081 -S315400316200000000000000000000000000000000071 -S315400316300000000000000000000000000000000061 -S315400316400000000000000000000000000000000051 -S315400316500000000000000000000000000000000041 -S315400316600000000000000000000000000000000031 -S315400316700000000000000000000000000000000021 -S315400316800000000000000000000000000000000011 -S315400316900000000000000000000000000000000001 -S315400316A000000000000000000000000000000000F1 -S315400316B000000000000000000000000000000000E1 -S315400316C000000000000000000000000000000000D1 -S315400316D000000000000000000000000000000000C1 -S315400316E000000000000000000000000000000000B1 -S315400316F000000000000000000000000000000000A1 -S315400317000000000000000000000000000000000090 -S315400317100000000000000000000000000000000080 -S315400317200000000000000000000000000000000070 -S315400317300000000000000000000000000000000060 -S315400317400000000000000000000000000000000050 -S315400317500000000000000000000000000000000040 -S315400317600000000000000000000000000000000030 -S315400317700000000000000000000000000000000020 -S315400317800000000000000000000000000000000010 -S315400317900000000000000000000000000000000000 -S315400317A000000000000000000000000000000000F0 -S315400317B000000000000000000000000000000000E0 -S315400317C000000000000000000000000000000000D0 -S315400317D000000000000000000000000000000000C0 -S315400317E000000000000000000000000000000000B0 -S315400317F000000000000000000000000000000000A0 -S31540031800000000000000000000000000000000008F -S31540031810000000000000000000000000000000007F -S31540031820000000000000000000000000000000006F -S31540031830000000000000000000000000000000005F -S31540031840000000000000000000000000000000004F -S31540031850000000000000000000000000000000003F -S31540031860000000000000000000000000000000002F -S31540031870000000000000000000000000000000001F -S31540031880000000000000000000000000000000000F -S3154003189000000000000000000000000000000000FF -S315400318A000000000000000000000000000000000EF -S315400318B000000000000000000000000000000000DF -S315400318C000000000000000000000000000000000CF -S315400318D000000000000000000000000000000000BF -S315400318E000000000000000000000000000000000AF -S315400318F0000000000000000000000000000000009F -S31540031900000000000000000000000000000000008E -S31540031910000000000000000000000000000000007E -S31540031920000000000000000000000000000000006E -S31540031930000000000000000000000000000000005E -S31540031940000000000000000000000000000000004E -S31540031950000000000000000000000000000000003E -S31540031960000000000000000000000000000000002E -S31540031970000000000000000000000000000000001E -S31540031980000000000000000000000000000000000E -S3154003199000000000000000000000000000000000FE -S315400319A000000000000000000000000000000000EE -S315400319B000000000000000000000000000000000DE -S315400319C000000000000000000000000000000000CE -S315400319D000000000000000000000000000000000BE -S315400319E000000000000000000000000000000000AE -S315400319F0000000000000000000000000000000009E -S31540031A00000000000000000000000000000000008D -S31540031A10000000000000000000000000000000007D -S31540031A20000000000000000000000000000000006D -S31540031A30000000000000000000000000000000005D -S31540031A40000000000000000000000000000000004D -S31540031A50000000000000000000000000000000003D -S31540031A60000000000000000000000000000000002D -S31540031A70000000000000000000000000000000001D -S31540031A80000000000000000000000000000000000D -S31540031A9000000000000000000000000000000000FD -S31540031AA000000000000000000000000000000000ED -S31540031AB000000000000000000000000000000000DD -S31540031AC000000000000000000000000000000000CD -S31540031AD000000000000000000000000000000000BD -S31540031AE000000000000000000000000000000000AD -S31540031AF0000000000000000000000000000000009D -S31540031B00000000000000000000000000000000008C -S31540031B10000000000000000000000000000000007C -S31540031B20000000000000000000000000000000006C -S31540031B30000000000000000000000000000000005C -S31540031B40000000000000000000000000000000004C -S31540031B50000000000000000000000000000000003C -S31540031B60000000000000000000000000000000002C -S31540031B70000000000000000000000000000000001C -S31540031B80000000000000000000000000000000000C -S31540031B9000000000000000000000000000000000FC -S31540031BA000000000000000000000000000000000EC -S31540031BB000000000000000000000000000000000DC -S31540031BC000000000000000000000000000000000CC -S31540031BD000000000000000000000000000000000BC -S31540031BE000000000000000000000000000000000AC -S31540031BF0000000000000000000000000000000009C -S31540031C00000000000000000000000000000000008B -S31540031C10000000000000000000000000000000007B -S31540031C20000000000000000000000000000000006B -S31540031C30000000000000000000000000000000005B -S31540031C40000000000000000000000000000000004B -S31540031C50000000000000000000000000000000003B -S31540031C60000000000000000000000000000000002B -S31540031C70000000000000000000000000000000001B -S31540031C80000000000000000000000000000000000B -S31540031C9000000000000000000000000000000000FB -S31540031CA000000000000000000000000000000000EB -S31540031CB000000000000000000000000000000000DB -S31540031CC000000000000000000000000000000000CB -S31540031CD000000000000000000000000000000000BB -S31540031CE000000000000000000000000000000000AB -S31540031CF0000000000000000000000000000000009B -S31540031D00000000000000000000000000000000008A -S31540031D10000000000000000000000000000000007A -S31540031D20000000000000000000000000000000006A -S31540031D30000000000000000000000000000000005A -S31540031D40000000000000000000000000000000004A -S31540031D50000000000000000000000000000000003A -S31540031D60000000000000000000000000000000002A -S31540031D70000000000000000000000000000000001A -S31540031D80000000000000000000000000000000000A -S31540031D9000000000000000000000000000000000FA -S31540031DA000000000000000000000000000000000EA -S31540031DB000000000000000000000000000000000DA -S31540031DC000000000000000000000000000000000CA -S31540031DD000000000000000000000000000000000BA -S31540031DE000000000000000000000000000000000AA -S31540031DF0000000000000000000000000000000009A -S31540031E000000000000000000000000000000000089 -S31540031E100000000000000000000000000000000079 -S31540031E200000000000000000000000000000000069 -S31540031E300000000000000000000000000000000059 -S31540031E400000000000000000000000000000000049 -S31540031E500000000000000000000000000000000039 -S31540031E600000000000000000000000000000000029 -S31540031E700000000000000000000000000000000019 -S31540031E800000000000000000000000000000000009 -S31540031E9000000000000000000000000000000000F9 -S31540031EA000000000000000000000000000000000E9 -S31540031EB000000000000000000000000000000000D9 -S31540031EC000000000000000000000000000000000C9 -S31540031ED000000000000000000000000000000000B9 -S31540031EE000000000000000000000000000000000A9 -S31540031EF00000000000000000000000000000000099 -S31540031F000000000000000000000000000000000088 -S31540031F100000000000000000000000000000000078 -S31540031F200000000000000000000000000000000068 -S31540031F300000000000000000000000000000000058 -S31540031F400000000000000000000000000000000048 -S31540031F500000000000000000000000000000000038 -S31540031F600000000000000000000000000000000028 -S31540031F700000000000000000000000000000000018 -S31540031F800000000000000000000000000000000008 -S31540031F9000000000000000000000000000000000F8 -S31540031FA000000000000000000000000000000000E8 -S31540031FB000000000000000000000000000000000D8 -S31540031FC000000000000000000000000000000000C8 -S31540031FD000000000000000000000000000000000B8 -S31540031FE000000000000000000000000000000000A8 -S31540031FF00000000000000000000000000000000098 -S315400320000000000000000000000000000000000087 -S315400320100000000000000000000000000000000077 -S315400320200000000000000000000000000000000067 -S315400320300000000000000000000000000000000057 -S315400320400000000000000000000000000000000047 -S315400320500000000000000000000000000000000037 -S315400320600000000000000000000000000000000027 -S315400320700000000000000000000000000000000017 -S315400320800000000000000000000000000000000007 -S3154003209000000000000000000000000000000000F7 -S315400320A000000000000000000000000000000000E7 -S315400320B000000000000000000000000000000000D7 -S315400320C000000000000000000000000000000000C7 -S315400320D000000000000000000000000000000000B7 -S315400320E000000000000000000000000000000000A7 -S315400320F00000000000000000000000000000000097 -S315400321000000000000000000000000000000000086 -S315400321100000000000000000000000000000000076 -S315400321200000000000000000000000000000000066 -S315400321300000000000000000000000000000000056 -S315400321400000000000000000000000000000000046 -S315400321500000000000000000000000000000000036 -S315400321600000000000000000000000000000000026 -S315400321700000000000000000000000000000000016 -S315400321800000000000000000000000000000000006 -S3154003219000000000000000000000000000000000F6 -S315400321A000000000000000000000000000000000E6 -S315400321B000000000000000000000000000000000D6 -S315400321C000000000000000000000000000000000C6 -S315400321D000000000000000000000000000000000B6 -S315400321E000000000000000000000000000000000A6 -S315400321F00000000000000000000000000000000096 -S315400322000000000000000000000000000000000085 -S315400322100000000000000000000000000000000075 -S315400322200000000000000000000000000000000065 -S315400322300000000000000000000000000000000055 -S315400322400000000000000000000000000000000045 -S315400322500000000000000000000000000000000035 -S315400322600000000000000000000000000000000025 -S315400322700000000000000000000000000000000015 -S315400322800000000000000000000000000000000005 -S3154003229000000000000000000000000000000000F5 -S315400322A000000000000000000000000000000000E5 -S315400322B000000000000000000000000000000000D5 -S315400322C000000000000000000000000000000000C5 -S315400322D000000000000000000000000000000000B5 -S315400322E000000000000000000000000000000000A5 -S315400322F00000000000000000000000000000000095 -S315400323000000000000000000000000000000000084 -S315400323100000000000000000000000000000000074 -S315400323200000000000000000000000000000000064 -S315400323300000000000000000000000000000000054 -S315400323400000000000000000000000000000000044 -S315400323500000000000000000000000000000000034 -S315400323600000000000000000000000000000000024 -S315400323700000000000000000000000000000000014 -S315400323800000000000000000000000000000000004 -S3154003239000000000000000000000000000000000F4 -S315400323A000000000000000000000000000000000E4 -S315400323B000000000000000000000000000000000D4 -S315400323C000000000000000000000000000000000C4 -S315400323D000000000000000000000000000000000B4 -S315400323E000000000000000000000000000000000A4 -S315400323F00000000000000000000000000000000094 -S315400324000000000000000000000000000000000083 -S315400324100000000000000000000000000000000073 -S315400324200000000000000000000000000000000063 -S315400324300000000000000000000000000000000053 -S315400324400000000000000000000000000000000043 -S315400324500000000000000000000000000000000033 -S315400324600000000000000000000000000000000023 -S315400324700000000000000000000000000000000013 -S315400324800000000000000000000000000000000003 -S3154003249000000000000000000000000000000000F3 -S315400324A000000000000000000000000000000000E3 -S315400324B000000000000000000000000000000000D3 -S315400324C000000000000000000000000000000000C3 -S315400324D000000000000000000000000000000000B3 -S315400324E000000000000000000000000000000000A3 -S315400324F00000000000000000000000000000000093 -S315400325000000000000000000000000000000000082 -S315400325100000000000000000000000000000000072 -S315400325200000000000000000000000000000000062 -S315400325300000000000000000000000000000000052 -S315400325400000000000000000000000000000000042 -S315400325500000000000000000000000000000000032 -S315400325600000000000000000000000000000000022 -S315400325700000000000000000000000000000000012 -S315400325800000000000000000000000000000000002 -S3154003259000000000000000000000000000000000F2 -S315400325A000000000000000000000000000000000E2 -S315400325B000000000000000000000000000000000D2 -S315400325C000000000000000000000000000000000C2 -S315400325D000000000000000000000000000000000B2 -S315400325E000000000000000000000000000000000A2 -S315400325F00000000000000000000000000000000092 -S315400326000000000000000000000000000000000081 -S315400326100000000000000000000000000000000071 -S315400326200000000000000000000000000000000061 -S315400326300000000000000000000000000000000051 -S315400326400000000000000000000000000000000041 -S315400326500000000000000000000000000000000031 -S315400326600000000000000000000000000000000021 -S315400326700000000000000000000000000000000011 -S315400326800000000000000000000000000000000001 -S3154003269000000000000000000000000000000000F1 -S315400326A000000000000000000000000000000000E1 -S315400326B000000000000000000000000000000000D1 -S315400326C000000000000000000000000000000000C1 -S315400326D000000000000000000000000000000000B1 -S315400326E000000000000000000000000000000000A1 -S315400326F00000000000000000000000000000000091 -S315400327000000000000000000000000000000000080 -S315400327100000000000000000000000000000000070 -S315400327200000000000000000000000000000000060 -S315400327300000000000000000000000000000000050 -S315400327400000000000000000000000000000000040 -S315400327500000000000000000000000000000000030 -S315400327600000000000000000000000000000000020 -S315400327700000000000000000000000000000000010 -S315400327800000000000000000000000000000000000 -S3154003279000000000000000000000000000000000F0 -S315400327A000000000000000000000000000000000E0 -S315400327B000000000000000000000000000000000D0 -S315400327C000000000000000000000000000000000C0 -S315400327D000000000000000000000000000000000B0 -S315400327E000000000000000000000000000000000A0 -S315400327F00000000000000000000000000000000090 -S31540032800000000000000000000000000000000007F -S31540032810000000000000000000000000000000006F -S31540032820000000000000000000000000000000005F -S31540032830000000000000000000000000000000004F -S31540032840000000000000000000000000000000003F -S31540032850000000000000000000000000000000002F -S31540032860000000000000000000000000000000001F -S31540032870000000000000000000000000000000000F -S3154003288000000000000000000000000000000000FF -S3154003289000000000000000000000000000000000EF -S315400328A000000000000000000000000000000000DF -S315400328B000000000000000000000000000000000CF -S315400328C000000000000000000000000000000000BF -S315400328D000000000000000000000000000000000AF -S315400328E0000000000000000000000000000000009F -S315400328F0000000000000000000000000000000008F -S31540032900000000000000000000000000000000007E -S31540032910000000000000000000000000000000006E -S31540032920000000000000000000000000000000005E -S31540032930000000000000000000000000000000004E -S31540032940000000000000000000000000000000003E -S31540032950000000000000000000000000000000002E -S31540032960000000000000000000000000000000001E -S31540032970000000000000000000000000000000000E -S3154003298000000000000000000000000000000000FE -S3154003299000000000000000000000000000000000EE -S315400329A000000000000000000000000000000000DE -S315400329B000000000000000000000000000000000CE -S315400329C000000000000000000000000000000000BE -S315400329D000000000000000000000000000000000AE -S315400329E0000000000000000000000000000000009E -S315400329F0000000000000000000000000000000008E -S31540032A00000000000000000000000000000000007D -S31540032A10000000000000000000000000000000006D -S31540032A20000000000000000000000000000000005D -S31540032A30000000000000000000000000000000004D -S31540032A40000000000000000000000000000000003D -S31540032A50000000000000000000000000000000002D -S31540032A60000000000000000000000000000000001D -S31540032A70000000000000000000000000000000000D -S31540032A8000000000000000000000000000000000FD -S31540032A9000000000000000000000000000000000ED -S31540032AA000000000000000000000000000000000DD -S31540032AB000000000000000000000000000000000CD -S31540032AC000000000000000000000000000000000BD -S31540032AD000000000000000000000000000000000AD -S31540032AE0000000000000000000000000000000009D -S31540032AF0000000000000000000000000000000008D -S31540032B00000000000000000000000000000000007C -S31540032B10000000000000000000000000000000006C -S31540032B20000000000000000000000000000000005C -S31540032B30000000000000000000000000000000004C -S31540032B40000000000000000000000000000000003C -S31540032B50000000000000000000000000000000002C -S31540032B60000000000000000000000000000000001C -S31540032B70000000000000000000000000000000000C -S31540032B8000000000000000000000000000000000FC -S31540032B9000000000000000000000000000000000EC -S31540032BA000000000000000000000000000000000DC -S31540032BB000000000000000000000000000000000CC -S31540032BC000000000000000000000000000000000BC -S31540032BD000000000000000000000000000000000AC -S31540032BE0000000000000000000000000000000009C -S31540032BF0000000000000000000000000000000008C -S31540032C00000000000000000000000000000000007B -S31540032C10000000000000000000000000000000006B -S31540032C20000000000000000000000000000000005B -S31540032C30000000000000000000000000000000004B -S31540032C40000000000000000000000000000000003B -S31540032C50000000000000000000000000000000002B -S31540032C60000000000000000000000000000000001B -S31540032C70000000000000000000000000000000000B -S31540032C8000000000000000000000000000000000FB -S31540032C9000000000000000000000000000000000EB -S31540032CA000000000000000000000000000000000DB -S31540032CB000000000000000000000000000000000CB -S31540032CC000000000000000000000000000000000BB -S31540032CD000000000000000000000000000000000AB -S31540032CE0000000000000000000000000000000009B -S31540032CF0000000000000000000000000000000008B -S31540032D00000000000000000000000000000000007A -S31540032D10000000000000000000000000000000006A -S31540032D20000000000000000000000000000000005A -S31540032D30000000000000000000000000000000004A -S31540032D40000000000000000000000000000000003A -S31540032D50000000000000000000000000000000002A -S31540032D60000000000000000000000000000000001A -S31540032D70000000000000000000000000000000000A -S31540032D8000000000000000000000000000000000FA -S31540032D9000000000000000000000000000000000EA -S31540032DA000000000000000000000000000000000DA -S31540032DB000000000000000000000000000000000CA -S31540032DC000000000000000000000000000000000BA -S31540032DD000000000000000000000000000000000AA -S31540032DE0000000000000000000000000000000009A -S31540032DF0000000000000000000000000000000008A -S31540032E000000000000000000000000000000000079 -S31540032E100000000000000000000000000000000069 -S31540032E200000000000000000000000000000000059 -S31540032E300000000000000000000000000000000049 -S31540032E400000000000000000000000000000000039 -S31540032E500000000000000000000000000000000029 -S31540032E600000000000000000000000000000000019 -S31540032E700000000000000000000000000000000009 -S31540032E8000000000000000000000000000000000F9 -S31540032E9000000000000000000000000000000000E9 -S31540032EA000000000000000000000000000000000D9 -S31540032EB000000000000000000000000000000000C9 -S31540032EC000000000000000000000000000000000B9 -S31540032ED000000000000000000000000000000000A9 -S31540032EE00000000000000000000000000000000099 -S31540032EF00000000000000000000000000000000089 -S31540032F000000000000000000000000000000000078 -S31540032F100000000000000000000000000000000068 -S31540032F200000000000000000000000000000000058 -S31540032F300000000000000000000000000000000048 -S31540032F400000000000000000000000000000000038 -S31540032F500000000000000000000000000000000028 -S31540032F600000000000000000000000000000000018 -S31540032F700000000000000000000000000000000008 -S31540032F8000000000000000000000000000000000F8 -S31540032F9000000000000000000000000000000000E8 -S31540032FA000000000000000000000000000000000D8 -S31540032FB000000000000000000000000000000000C8 -S31540032FC000000000000000000000000000000000B8 -S31540032FD000000000000000000000000000000000A8 -S31540032FE00000000000000000000000000000000098 -S31540032FF00000000000000000000000000000000088 -S315400330000000000000000000000000000000000077 -S315400330100000000000000000000000000000000067 -S315400330200000000000000000000000000000000057 -S315400330300000000000000000000000000000000047 -S315400330400000000000000000000000000000000037 -S315400330500000000000000000000000000000000027 -S315400330600000000000000000000000000000000017 -S315400330700000000000000000000000000000000007 -S3154003308000000000000000000000000000000000F7 -S3154003309000000000000000000000000000000000E7 -S315400330A000000000000000000000000000000000D7 -S315400330B000000000000000000000000000000000C7 -S315400330C000000000000000000000000000000000B7 -S315400330D000000000000000000000000000000000A7 -S315400330E00000000000000000000000000000000097 -S315400330F00000000000000000000000000000000087 -S315400331000000000000000000000000000000000076 -S315400331100000000000000000000000000000000066 -S315400331200000000000000000000000000000000056 -S315400331300000000000000000000000000000000046 -S315400331400000000000000000000000000000000036 -S315400331500000000000000000000000000000000026 -S315400331600000000000000000000000000000000016 -S315400331700000000000000000000000000000000006 -S3154003318000000000000000000000000000000000F6 -S3154003319000000000000000000000000000000000E6 -S315400331A000000000000000000000000000000000D6 -S315400331B000000000000000000000000000000000C6 -S315400331C000000000000000000000000000000000B6 -S315400331D000000000000000000000000000000000A6 -S315400331E00000000000000000000000000000000096 -S315400331F00000000000000000000000000000000086 -S315400332000000000000000000000000000000000075 -S315400332100000000000000000000000000000000065 -S315400332200000000000000000000000000000000055 -S315400332300000000000000000000000000000000045 -S315400332400000000000000000000000000000000035 -S315400332500000000000000000000000000000000025 -S315400332600000000000000000000000000000000015 -S315400332700000000000000000000000000000000005 -S3154003328000000000000000000000000000000000F5 -S3154003329000000000000000000000000000000000E5 -S315400332A000000000000000000000000000000000D5 -S315400332B000000000000000000000000000000000C5 -S315400332C000000000000000000000000000000000B5 -S315400332D000000000000000000000000000000000A5 -S315400332E00000000000000000000000000000000095 -S315400332F00000000000000000000000000000000085 -S315400333000000000000000000000000000000000074 -S315400333100000000000000000000000000000000064 -S315400333200000000000000000000000000000000054 -S315400333300000000000000000000000000000000044 -S315400333400000000000000000000000000000000034 -S315400333500000000000000000000000000000000024 -S315400333600000000000000000000000000000000014 -S315400333700000000000000000000000000000000004 -S3154003338000000000000000000000000000000000F4 -S3154003339000000000000000000000000000000000E4 -S315400333A000000000000000000000000000000000D4 -S315400333B000000000000000000000000000000000C4 -S315400333C000000000000000000000000000000000B4 -S315400333D000000000000000000000000000000000A4 -S315400333E00000000000000000000000000000000094 -S315400333F00000000000000000000000000000000084 -S315400334000000000000000000000000000000000073 -S315400334100000000000000000000000000000000063 -S315400334200000000000000000000000000000000053 -S315400334300000000000000000000000000000000043 -S315400334400000000000000000000000000000000033 -S315400334500000000000000000000000000000000023 -S315400334600000000000000000000000000000000013 -S315400334700000000000000000000000000000000003 -S3154003348000000000000000000000000000000000F3 -S3154003349000000000000000000000000000000000E3 -S315400334A000000000000000000000000000000000D3 -S315400334B000000000000000000000000000000000C3 -S315400334C000000000000000000000000000000000B3 -S315400334D000000000000000000000000000000000A3 -S315400334E00000000000000000000000000000000093 -S315400334F00000000000000000000000000000000083 -S315400335000000000000000000000000000000000072 -S315400335100000000000000000000000000000000062 -S315400335200000000000000000000000000000000052 -S315400335300000000000000000000000000000000042 -S315400335400000000000000000000000000000000032 -S315400335500000000000000000000000000000000022 -S315400335600000000000000000000000000000000012 -S315400335700000000000000000000000000000000002 -S3154003358000000000000000000000000000000000F2 -S3154003359000000000000000000000000000000000E2 -S315400335A000000000000000000000000000000000D2 -S315400335B000000000000000000000000000000000C2 -S315400335C000000000000000000000000000000000B2 -S315400335D000000000000000000000000000000000A2 -S315400335E00000000000000000000000000000000092 -S315400335F00000000000000000000000000000000082 -S315400336000000000000000000000000000000000071 -S315400336100000000000000000000000000000000061 -S315400336200000000000000000000000000000000051 -S315400336300000000000000000000000000000000041 -S315400336400000000000000000000000000000000031 -S315400336500000000000000000000000000000000021 -S315400336600000000000000000000000000000000011 -S315400336700000000000000000000000000000000001 -S3154003368000000000000000000000000000000000F1 -S3154003369000000000000000000000000000000000E1 -S315400336A000000000000000000000000000000000D1 -S315400336B000000000000000000000000000000000C1 -S315400336C000000000000000000000000000000000B1 -S315400336D000000000000000000000000000000000A1 -S315400336E00000000000000000000000000000000091 -S315400336F00000000000000000000000000000000081 -S315400337000000000000000000000000000000000070 -S315400337100000000000000000000000000000000060 -S315400337200000000000000000000000000000000050 -S315400337300000000000000000000000000000000040 -S315400337400000000000000000000000000000000030 -S315400337500000000000000000000000000000000020 -S315400337600000000000000000000000000000000010 -S315400337700000000000000000000000000000000000 -S3154003378000000000000000000000000000000000F0 -S3154003379000000000000000000000000000000000E0 -S315400337A000000000000000000000000000000000D0 -S315400337B000000000000000000000000000000000C0 -S315400337C000000000000000000000000000000000B0 -S315400337D000000000000000000000000000000000A0 -S315400337E00000000000000000000000000000000090 -S315400337F00000000000000000000000000000000080 -S31540033800000000000000000000000000000000006F -S31540033810000000000000000000000000000000005F -S31540033820000000000000000000000000000000004F -S31540033830000000000000000000000000000000003F -S31540033840000000000000000000000000000000002F -S31540033850000000000000000000000000000000001F -S31540033860000000000000000000000000000000000F -S3154003387000000000000000000000000000000000FF -S3154003388000000000000000000000000000000000EF -S3154003389000000000000000000000000000000000DF -S315400338A000000000000000000000000000000000CF -S315400338B000000000000000000000000000000000BF -S315400338C000000000000000000000000000000000AF -S315400338D0000000000000000000000000000000009F -S315400338E0000000000000000000000000000000008F -S315400338F0000000000000000000000000000000007F -S31540033900000000000000000000000000000000006E -S31540033910000000000000000000000000000000005E -S31540033920000000000000000000000000000000004E -S31540033930000000000000000000000000000000003E -S31540033940000000000000000000000000000000002E -S31540033950000000000000000000000000000000001E -S31540033960000000000000000000000000000000000E -S3154003397000000000000000000000000000000000FE -S3154003398000000000000000000000000000000000EE -S3154003399000000000000000000000000000000000DE -S315400339A000000000000000000000000000000000CE -S315400339B000000000000000000000000000000000BE -S315400339C000000000000000000000000000000000AE -S315400339D0000000000000000000000000000000009E -S315400339E0000000000000000000000000000000008E -S315400339F0000000000000000000000000000000007E -S31540033A00000000000000000000000000000000006D -S31540033A10000000000000000000000000000000005D -S31540033A20000000000000000000000000000000004D -S31540033A30000000000000000000000000000000003D -S31540033A40000000000000000000000000000000002D -S31540033A50000000000000000000000000000000001D -S31540033A60000000000000000000000000000000000D -S31540033A7000000000000000000000000000000000FD -S31540033A8000000000000000000000000000000000ED -S31540033A9000000000000000000000000000000000DD -S31540033AA000000000000000000000000000000000CD -S31540033AB000000000000000000000000000000000BD -S31540033AC000000000000000000000000000000000AD -S31540033AD0000000000000000000000000000000009D -S31540033AE0000000000000000000000000000000008D -S31540033AF0000000000000000000000000000000007D -S31540033B00000000000000000000000000000000006C -S31540033B10000000000000000000000000000000005C -S31540033B20000000000000000000000000000000004C -S31540033B30000000000000000000000000000000003C -S31540033B40000000000000000000000000000000002C -S31540033B50000000000000000000000000000000001C -S31540033B60000000000000000000000000000000000C -S31540033B7000000000000000000000000000000000FC -S31540033B8000000000000000000000000000000000EC -S31540033B9000000000000000000000000000000000DC -S31540033BA000000000000000000000000000000000CC -S31540033BB000000000000000000000000000000000BC -S31540033BC000000000000000000000000000000000AC -S31540033BD0000000000000000000000000000000009C -S31540033BE0000000000000000000000000000000008C -S31540033BF0000000000000000000000000000000007C -S31540033C00000000000000000000000000000000006B -S31540033C10000000000000000000000000000000005B -S31540033C20000000000000000000000000000000004B -S31540033C30000000000000000000000000000000003B -S31540033C40000000000000000000000000000000002B -S31540033C50000000000000000000000000000000001B -S31540033C60000000000000000000000000000000000B -S31540033C7000000000000000000000000000000000FB -S31540033C8000000000000000000000000000000000EB -S31540033C9000000000000000000000000000000000DB -S31540033CA000000000000000000000000000000000CB -S31540033CB000000000000000000000000000000000BB -S31540033CC000000000000000000000000000000000AB -S31540033CD0000000000000000000000000000000009B -S31540033CE0000000000000000000000000000000008B -S31540033CF0000000000000000000000000000000007B -S31540033D00000000000000000000000000000000006A -S31540033D10000000000000000000000000000000005A -S31540033D20000000000000000000000000000000004A -S31540033D30000000000000000000000000000000003A -S31540033D40000000000000000000000000000000002A -S31540033D50000000000000000000000000000000001A -S31540033D60000000000000000000000000000000000A -S31540033D7000000000000000000000000000000000FA -S31540033D8000000000000000000000000000000000EA -S31540033D9000000000000000000000000000000000DA -S31540033DA000000000000000000000000000000000CA -S31540033DB000000000000000000000000000000000BA -S31540033DC000000000000000000000000000000000AA -S31540033DD0000000000000000000000000000000009A -S31540033DE0000000000000000000000000000000008A -S31540033DF0000000000000000000000000000000007A -S31540033E000000000000000000000000000000000069 -S31540033E100000000000000000000000000000000059 -S31540033E200000000000000000000000000000000049 -S31540033E300000000000000000000000000000000039 -S31540033E400000000000000000000000000000000029 -S31540033E500000000000000000000000000000000019 -S31540033E600000000000000000000000000000000009 -S31540033E7000000000000000000000000000000000F9 -S31540033E8000000000000000000000000000000000E9 -S31540033E9000000000000000000000000000000000D9 -S31540033EA000000000000000000000000000000000C9 -S31540033EB000000000000000000000000000000000B9 -S31540033EC000000000000000000000000000000000A9 -S31540033ED00000000000000000000000000000000099 -S31540033EE00000000000000000000000000000000089 -S31540033EF00000000000000000000000000000000079 -S31540033F000000000000000000000000000000000068 -S31540033F100000000000000000000000000000000058 -S31540033F200000000000000000000000000000000048 -S31540033F300000000000000000000000000000000038 -S31540033F400000000000000000000000000000000028 -S31540033F500000000000000000000000000000000018 -S31540033F600000000000000000000000000000000008 -S31540033F7000000000000000000000000000000000F8 -S31540033F8000000000000000000000000000000000E8 -S31540033F9000000000000000000000000000000000D8 -S31540033FA000000000000000000000000000000000C8 -S31540033FB000000000000000000000000000000000B8 -S31540033FC000000000000000000000000000000000A8 -S31540033FD00000000000000000000000000000000098 -S31540033FE00000000000000000000000000000000088 -S31540033FF00000000000000000000000000000000078 -S315400340000000000000000000000000000000000067 -S315400340100000000000000000000000000000000057 -S315400340200000000000000000000000000000000047 -S315400340300000000000000000000000000000000037 -S315400340400000000000000000000000000000000027 -S315400340500000000000000000000000000000000017 -S315400340600000000000000000000000000000000007 -S3154003407000000000000000000000000000000000F7 -S3154003408000000000000000000000000000000000E7 -S3154003409000000000000000000000000000000000D7 -S315400340A000000000000000000000000000000000C7 -S315400340B000000000000000000000000000000000B7 -S315400340C000000000000000000000000000000000A7 -S315400340D00000000000000000000000000000000097 -S315400340E00000000000000000000000000000000087 -S315400340F00000000000000000000000000000000077 -S315400341000000000000000000000000000000000066 -S315400341100000000000000000000000000000000056 -S315400341200000000000000000000000000000000046 -S315400341300000000000000000000000000000000036 -S315400341400000000000000000000000000000000026 -S315400341500000000000000000000000000000000016 -S315400341600000000000000000000000000000000006 -S3154003417000000000000000000000000000000000F6 -S3154003418000000000000000000000000000000000E6 -S3154003419000000000000000000000000000000000D6 -S315400341A000000000000000000000000000000000C6 -S315400341B000000000000000000000000000000000B6 -S315400341C000000000000000000000000000000000A6 -S315400341D00000000000000000000000000000000096 -S315400341E00000000000000000000000000000000086 -S315400341F00000000000000000000000000000000076 -S315400342000000000000000000000000000000000065 -S315400342100000000000000000000000000000000055 -S315400342200000000000000000000000000000000045 -S315400342300000000000000000000000000000000035 -S315400342400000000000000000000000000000000025 -S315400342500000000000000000000000000000000015 -S315400342600000000000000000000000000000000005 -S3154003427000000000000000000000000000000000F5 -S3154003428000000000000000000000000000000000E5 -S3154003429000000000000000000000000000000000D5 -S315400342A000000000000000000000000000000000C5 -S315400342B000000000000000000000000000000000B5 -S315400342C000000000000000000000000000000000A5 -S315400342D00000000000000000000000000000000095 -S315400342E00000000000000000000000000000000085 -S315400342F00000000000000000000000000000000075 -S315400343000000000000000000000000000000000064 -S315400343100000000000000000000000000000000054 -S315400343200000000000000000000000000000000044 -S315400343300000000000000000000000000000000034 -S315400343400000000000000000000000000000000024 -S315400343500000000000000000000000000000000014 -S315400343600000000000000000000000000000000004 -S3154003437000000000000000000000000000000000F4 -S3154003438000000000000000000000000000000000E4 -S3154003439000000000000000000000000000000000D4 -S315400343A000000000000000000000000000000000C4 -S315400343B000000000000000000000000000000000B4 -S315400343C000000000000000000000000000000000A4 -S315400343D00000000000000000000000000000000094 -S315400343E00000000000000000000000000000000084 -S315400343F00000000000000000000000000000000074 -S315400344000000000000000000000000000000000063 -S315400344100000000000000000000000000000000053 -S315400344200000000000000000000000000000000043 -S315400344300000000000000000000000000000000033 -S315400344400000000000000000000000000000000023 -S315400344500000000000000000000000000000000013 -S315400344600000000000000000000000000000000003 -S3154003447000000000000000000000000000000000F3 -S3154003448000000000000000000000000000000000E3 -S3154003449000000000000000000000000000000000D3 -S315400344A000000000000000000000000000000000C3 -S315400344B000000000000000000000000000000000B3 -S315400344C000000000000000000000000000000000A3 -S315400344D00000000000000000000000000000000093 -S315400344E00000000000000000000000000000000083 -S315400344F00000000000000000000000000000000073 -S315400345000000000000000000000000000000000062 -S315400345100000000000000000000000000000000052 -S315400345200000000000000000000000000000000042 -S315400345300000000000000000000000000000000032 -S315400345400000000000000000000000000000000022 -S315400345500000000000000000000000000000000012 -S315400345600000000000000000000000000000000002 -S3154003457000000000000000000000000000000000F2 -S3154003458000000000000000000000000000000000E2 -S3154003459000000000000000000000000000000000D2 -S315400345A000000000000000000000000000000000C2 -S315400345B000000000000000000000000000000000B2 -S315400345C000000000000000000000000000000000A2 -S315400345D00000000000000000000000000000000092 -S315400345E00000000000000000000000000000000082 -S315400345F00000000000000000000000000000000072 -S315400346000000000000000000000000000000000061 -S315400346100000000000000000000000000000000051 -S315400346200000000000000000000000000000000041 -S315400346300000000000000000000000000000000031 -S315400346400000000000000000000000000000000021 -S315400346500000000000000000000000000000000011 -S315400346600000000000000000000000000000000001 -S3154003467000000000000000000000000000000000F1 -S3154003468000000000000000000000000000000000E1 -S3154003469000000000000000000000000000000000D1 -S315400346A000000000000000000000000000000000C1 -S315400346B000000000000000000000000000000000B1 -S315400346C000000000000000000000000000000000A1 -S315400346D00000000000000000000000000000000091 -S315400346E00000000000000000000000000000000081 -S315400346F00000000000000000000000000000000071 -S315400347000000000000000000000000000000000060 -S315400347100000000000000000000000000000000050 -S315400347200000000000000000000000000000000040 -S315400347300000000000000000000000000000000030 -S315400347400000000000000000000000000000000020 -S315400347500000000000000000000000000000000010 -S315400347600000000000000000000000000000000000 -S3154003477000000000000000000000000000000000F0 -S3154003478000000000000000000000000000000000E0 -S3154003479000000000000000000000000000000000D0 -S315400347A000000000000000000000000000000000C0 -S315400347B000000000000000000000000000000000B0 -S315400347C000000000000000000000000000000000A0 -S315400347D00000000000000000000000000000000090 -S315400347E00000000000000000000000000000000080 -S315400347F00000000000000000000000000000000070 -S31540034800000000000000000000000000000000005F -S31540034810000000000000000000000000000000004F -S31540034820000000000000000000000000000000003F -S31540034830000000000000000000000000000000002F -S31540034840000000000000000000000000000000001F -S31540034850000000000000000000000000000000000F -S3154003486000000000000000000000000000000000FF -S3154003487000000000000000000000000000000000EF -S3154003488000000000000000000000000000000000DF -S3154003489000000000000000000000000000000000CF -S315400348A000000000000000000000000000000000BF -S315400348B000000000000000000000000000000000AF -S315400348C0000000000000000000000000000000009F -S315400348D0000000000000000000000000000000008F -S315400348E0000000000000000000000000000000007F -S315400348F0000000000000000000000000000000006F -S31540034900000000000000000000000000000000005E -S31540034910000000000000000000000000000000004E -S31540034920000000000000000000000000000000003E -S31540034930000000000000000000000000000000002E -S31540034940000000000000000000000000000000001E -S31540034950000000000000000000000000000000000E -S3154003496000000000000000000000000000000000FE -S3154003497000000000000000000000000000000000EE -S3154003498000000000000000000000000000000000DE -S3154003499000000000000000000000000000000000CE -S315400349A000000000000000000000000000000000BE -S315400349B000000000000000000000000000000000AE -S315400349C0000000000000000000000000000000009E -S315400349D0000000000000000000000000000000008E -S315400349E0000000000000000000000000000000007E -S315400349F0000000000000000000000000000000006E -S31540034A00000000000000000000000000000000005D -S31540034A10000000000000000000000000000000004D -S31540034A20000000000000000000000000000000003D -S31540034A30000000000000000000000000000000002D -S31540034A40000000000000000000000000000000001D -S31540034A50000000000000000000000000000000000D -S31540034A6000000000000000000000000000000000FD -S31540034A7000000000000000000000000000000000ED -S31540034A8000000000000000000000000000000000DD -S31540034A9000000000000000000000000000000000CD -S31540034AA000000000000000000000000000000000BD -S31540034AB000000000000000000000000000000000AD -S31540034AC0000000000000000000000000000000009D -S31540034AD0000000000000000000000000000000008D -S31540034AE0000000000000000000000000000000007D -S31540034AF0000000000000000000000000000000006D -S31540034B00000000000000000000000000000000005C -S31540034B10000000000000000000000000000000004C -S31540034B20000000000000000000000000000000003C -S31540034B30000000000000000000000000000000002C -S31540034B40000000000000000000000000000000001C -S31540034B50000000000000000000000000000000000C -S31540034B6000000000000000000000000000000000FC -S31540034B7000000000000000000000000000000000EC -S31540034B8000000000000000000000000000000000DC -S31540034B9000000000000000000000000000000000CC -S31540034BA000000000000000000000000000000000BC -S31540034BB000000000000000000000000000000000AC -S31540034BC0000000000000000000000000000000009C -S31540034BD0000000000000000000000000000000008C -S31540034BE0000000000000000000000000000000007C -S31540034BF0000000000000000000000000000000006C -S31540034C00000000000000000000000000000000005B -S31540034C10000000000000000000000000000000004B -S31540034C20000000000000000000000000000000003B -S31540034C30000000000000000000000000000000002B -S31540034C40000000000000000000000000000000001B -S31540034C50000000000000000000000000000000000B -S31540034C6000000000000000000000000000000000FB -S31540034C7000000000000000000000000000000000EB -S31540034C8000000000000000000000000000000000DB -S31540034C9000000000000000000000000000000000CB -S31540034CA000000000000000000000000000000000BB -S31540034CB000000000000000000000000000000000AB -S31540034CC0000000000000000000000000000000009B -S31540034CD0000000000000000000000000000000008B -S31540034CE0000000000000000000000000000000007B -S31540034CF0000000000000000000000000000000006B -S31540034D00000000000000000000000000000000005A -S31540034D10000000000000000000000000000000004A -S31540034D20000000000000000000000000000000003A -S31540034D30000000000000000000000000000000002A -S31540034D40000000000000000000000000000000001A -S31540034D50000000000000000000000000000000000A -S31540034D6000000000000000000000000000000000FA -S31540034D7000000000000000000000000000000000EA -S31540034D8000000000000000000000000000000000DA -S31540034D9000000000000000000000000000000000CA -S31540034DA000000000000000000000000000000000BA -S31540034DB000000000000000000000000000000000AA -S31540034DC0000000000000000000000000000000009A -S31540034DD0000000000000000000000000000000008A -S31540034DE0000000000000000000000000000000007A -S31540034DF0000000000000000000000000000000006A -S31540034E000000000000000000000000000000000059 -S31540034E100000000000000000000000000000000049 -S31540034E200000000000000000000000000000000039 -S31540034E300000000000000000000000000000000029 -S31540034E400000000000000000000000000000000019 -S31540034E500000000000000000000000000000000009 -S31540034E6000000000000000000000000000000000F9 -S31540034E7000000000000000000000000000000000E9 -S31540034E8000000000000000000000000000000000D9 -S31540034E9000000000000000000000000000000000C9 -S31540034EA000000000000000000000000000000000B9 -S31540034EB000000000000000000000000000000000A9 -S31540034EC00000000000000000000000000000000099 -S31540034ED00000000000000000000000000000000089 -S31540034EE00000000000000000000000000000000079 -S31540034EF00000000000000000000000000000000069 -S31540034F000000000000000000000000000000000058 -S31540034F100000000000000000000000000000000048 -S31540034F200000000000000000000000000000000038 -S31540034F300000000000000000000000000000000028 -S31540034F400000000000000000000000000000000018 -S31540034F500000000000000000000000000000000008 -S31540034F6000000000000000000000000000000000F8 -S31540034F7000000000000000000000000000000000E8 -S31540034F8000000000000000000000000000000000D8 -S31540034F9000000000000000000000000000000000C8 -S31540034FA000000000000000000000000000000000B8 -S31540034FB000000000000000000000000000000000A8 -S31540034FC00000000000000000000000000000000098 -S31540034FD00000000000000000000000000000000088 -S31540034FE00000000000000000000000000000000078 -S31540034FF00000000000000000000000000000000068 -S315400350000000000000000000000000000000000057 -S315400350100000000000000000000000000000000047 -S315400350200000000000000000000000000000000037 -S315400350300000000000000000000000000000000027 -S315400350400000000000000000000000000000000017 -S315400350500000000000000000000000000000000007 -S3154003506000000000000000000000000000000000F7 -S3154003507000000000000000000000000000000000E7 -S3154003508000000000000000000000000000000000D7 -S3154003509000000000000000000000000000000000C7 -S315400350A000000000000000000000000000000000B7 -S315400350B000000000000000000000000000000000A7 -S315400350C00000000000000000000000000000000097 -S315400350D00000000000000000000000000000000087 -S315400350E00000000000000000000000000000000077 -S315400350F00000000000000000000000000000000067 -S315400351000000000000000000000000000000000056 -S315400351100000000000000000000000000000000046 -S315400351200000000000000000000000000000000036 -S315400351300000000000000000000000000000000026 -S315400351400000000000000000000000000000000016 -S315400351500000000000000000000000000000000006 -S3154003516000000000000000000000000000000000F6 -S3154003517000000000000000000000000000000000E6 -S3154003518000000000000000000000000000000000D6 -S3154003519000000000000000000000000000000000C6 -S315400351A000000000000000000000000000000000B6 -S315400351B000000000000000000000000000000000A6 -S315400351C00000000000000000000000000000000096 -S315400351D00000000000000000000000000000000086 -S315400351E00000000000000000000000000000000076 -S315400351F00000000000000000000000000000000066 -S315400352000000000000000000000000000000000055 -S315400352100000000000000000000000000000000045 -S315400352200000000000000000000000000000000035 -S315400352300000000000000000000000000000000025 -S315400352400000000000000000000000000000000015 -S315400352500000000000000000000000000000000005 -S3154003526000000000000000000000000000000000F5 -S3154003527000000000000000000000000000000000E5 -S3154003528000000000000000000000000000000000D5 -S3154003529000000000000000000000000000000000C5 -S315400352A000000000000000000000000000000000B5 -S315400352B000000000000000000000000000000000A5 -S315400352C00000000000000000000000000000000095 -S315400352D00000000000000000000000000000000085 -S315400352E00000000000000000000000000000000075 -S315400352F00000000000000000000000000000000065 -S315400353000000000000000000000000000000000054 -S315400353100000000000000000000000000000000044 -S315400353200000000000000000000000000000000034 -S315400353300000000000000000000000000000000024 -S315400353400000000000000000000000000000000014 -S315400353500000000000000000000000000000000004 -S3154003536000000000000000000000000000000000F4 -S3154003537000000000000000000000000000000000E4 -S3154003538000000000000000000000000000000000D4 -S3154003539000000000000000000000000000000000C4 -S315400353A000000000000000000000000000000000B4 -S315400353B000000000000000000000000000000000A4 -S315400353C00000000000000000000000000000000094 -S315400353D00000000000000000000000000000000084 -S315400353E00000000000000000000000000000000074 -S315400353F00000000000000000000000000000000064 -S315400354000000000000000000000000000000000053 -S315400354100000000000000000000000000000000043 -S315400354200000000000000000000000000000000033 -S315400354300000000000000000000000000000000023 -S315400354400000000000000000000000000000000013 -S315400354500000000000000000000000000000000003 -S3154003546000000000000000000000000000000000F3 -S3154003547000000000000000000000000000000000E3 -S3154003548000000000000000000000000000000000D3 -S3154003549000000000000000000000000000000000C3 -S315400354A000000000000000000000000000000000B3 -S315400354B000000000000000000000000000000000A3 -S315400354C00000000000000000000000000000000093 -S315400354D00000000000000000000000000000000083 -S315400354E00000000000000000000000000000000073 -S315400354F00000000000000000000000000000000063 -S315400355000000000000000000000000000000000052 -S315400355100000000000000000000000000000000042 -S315400355200000000000000000000000000000000032 -S315400355300000000000000000000000000000000022 -S315400355400000000000000000000000000000000012 -S315400355500000000000000000000000000000000002 -S3154003556000000000000000000000000000000000F2 -S3154003557000000000000000000000000000000000E2 -S3154003558000000000000000000000000000000000D2 -S3154003559000000000000000000000000000000000C2 -S315400355A000000000000000000000000000000000B2 -S315400355B000000000000000000000000000000000A2 -S315400355C00000000000000000000000000000000092 -S315400355D00000000000000000000000000000000082 -S315400355E00000000000000000000000000000000072 -S315400355F00000000000000000000000000000000062 -S315400356000000000000000000000000000000000051 -S315400356100000000000000000000000000000000041 -S315400356200000000000000000000000000000000031 -S315400356300000000000000000000000000000000021 -S315400356400000000000000000000000000000000011 -S315400356500000000000000000000000000000000001 -S3154003566000000000000000000000000000000000F1 -S3154003567000000000000000000000000000000000E1 -S3154003568000000000000000000000000000000000D1 -S3154003569000000000000000000000000000000000C1 -S315400356A000000000000000000000000000000000B1 -S315400356B000000000000000000000000000000000A1 -S315400356C00000000000000000000000000000000091 -S315400356D00000000000000000000000000000000081 -S315400356E00000000000000000000000000000000071 -S315400356F00000000000000000000000000000000061 -S315400357000000000000000000000000000000000050 -S315400357100000000000000000000000000000000040 -S315400357200000000000000000000000000000000030 -S315400357300000000000000000000000000000000020 -S315400357400000000000000000000000000000000010 -S315400357500000000000000000000000000000000000 -S3154003576000000000000000000000000000000000F0 -S3154003577000000000000000000000000000000000E0 -S3154003578000000000000000000000000000000000D0 -S3154003579000000000000000000000000000000000C0 -S315400357A000000000000000000000000000000000B0 -S315400357B000000000000000000000000000000000A0 -S315400357C00000000000000000000000000000000090 -S315400357D00000000000000000000000000000000080 -S315400357E00000000000000000000000000000000070 -S315400357F00000000000000000000000000000000060 -S31540035800000000000000000000000000000000004F -S31540035810000000000000000000000000000000003F -S31540035820000000000000000000000000000000002F -S31540035830000000000000000000000000000000001F -S31540035840000000000000000000000000000000000F -S3154003585000000000000000000000000000000000FF -S3154003586000000000000000000000000000000000EF -S3154003587000000000000000000000000000000000DF -S3154003588000000000000000000000000000000000CF -S3154003589000000000000000000000000000000000BF -S315400358A000000000000000000000000000000000AF -S315400358B0000000000000000000000000000000009F -S315400358C0000000000000000000000000000000008F -S315400358D0000000000000000000000000000000007F -S315400358E0000000000000000000000000000000006F -S315400358F0000000000000000000000000000000005F -S31540035900000000000000000000000000000000004E -S31540035910000000000000000000000000000000003E -S31540035920000000000000000000000000000000002E -S31540035930000000000000000000000000000000001E -S31540035940000000000000000000000000000000000E -S3154003595000000000000000000000000000000000FE -S3154003596000000000000000000000000000000000EE -S3154003597000000000000000000000000000000000DE -S3154003598000000000000000000000000000000000CE -S3154003599000000000000000000000000000000000BE -S315400359A000000000000000000000000000000000AE -S315400359B0000000000000000000000000000000009E -S315400359C0000000000000000000000000000000008E -S315400359D0000000000000000000000000000000007E -S315400359E0000000000000000000000000000000006E -S315400359F0000000000000000000000000000000005E -S31540035A00000000000000000000000000000000004D -S31540035A10000000000000000000000000000000003D -S31540035A20000000000000000000000000000000002D -S31540035A30000000000000000000000000000000001D -S31540035A40000000000000000000000000000000000D -S31540035A5000000000000000000000000000000000FD -S31540035A6000000000000000000000000000000000ED -S31540035A7000000000000000000000000000000000DD -S31540035A8000000000000000000000000000000000CD -S31540035A9000000000000000000000000000000000BD -S31540035AA000000000000000000000000000000000AD -S31540035AB0000000000000000000000000000000009D -S31540035AC0000000000000000000000000000000008D -S31540035AD0000000000000000000000000000000007D -S31540035AE0000000000000000000000000000000006D -S31540035AF0000000000000000000000000000000005D -S31540035B00000000000000000000000000000000004C -S31540035B10000000000000000000000000000000003C -S31540035B20000000000000000000000000000000002C -S31540035B30000000000000000000000000000000001C -S31540035B40000000000000000000000000000000000C -S31540035B5000000000000000000000000000000000FC -S31540035B6000000000000000000000000000000000EC -S31540035B7000000000000000000000000000000000DC -S31540035B8000000000000000000000000000000000CC -S31540035B9000000000000000000000000000000000BC -S31540035BA000000000000000000000000000000000AC -S31540035BB0000000000000000000000000000000009C -S31540035BC0000000000000000000000000000000008C -S31540035BD0000000000000000000000000000000007C -S31540035BE0000000000000000000000000000000006C -S31540035BF0000000000000000000000000000000005C -S31540035C00000000000000000000000000000000004B -S31540035C10000000000000000000000000000000003B -S31540035C20000000000000000000000000000000002B -S31540035C30000000000000000000000000000000001B -S31540035C40000000000000000000000000000000000B -S31540035C5000000000000000000000000000000000FB -S31540035C6000000000000000000000000000000000EB -S31540035C7000000000000000000000000000000000DB -S31540035C8000000000000000000000000000000000CB -S31540035C9000000000000000000000000000000000BB -S31540035CA000000000000000000000000000000000AB -S31540035CB0000000000000000000000000000000009B -S31540035CC0000000000000000000000000000000008B -S31540035CD0000000000000000000000000000000007B -S31540035CE0000000000000000000000000000000006B -S31540035CF0000000000000000000000000000000005B -S31540035D00000000000000000000000000000000004A -S31540035D10000000000000000000000000000000003A -S31540035D20000000000000000000000000000000002A -S31540035D30000000000000000000000000000000001A -S31540035D40000000000000000000000000000000000A -S31540035D5000000000000000000000000000000000FA -S31540035D6000000000000000000000000000000000EA -S31540035D7000000000000000000000000000000000DA -S31540035D8000000000000000000000000000000000CA -S31540035D9000000000000000000000000000000000BA -S31540035DA000000000000000000000000000000000AA -S31540035DB0000000000000000000000000000000009A -S31540035DC0000000000000000000000000000000008A -S31540035DD0000000000000000000000000000000007A -S31540035DE0000000000000000000000000000000006A -S31540035DF0000000000000000000000000000000005A -S31540035E000000000000000000000000000000000049 -S31540035E100000000000000000000000000000000039 -S31540035E200000000000000000000000000000000029 -S31540035E300000000000000000000000000000000019 -S31540035E400000000000000000000000000000000009 -S31540035E5000000000000000000000000000000000F9 -S31540035E6000000000000000000000000000000000E9 -S31540035E7000000000000000000000000000000000D9 -S31540035E8000000000000000000000000000000000C9 -S31540035E9000000000000000000000000000000000B9 -S31540035EA000000000000000000000000000000000A9 -S31540035EB00000000000000000000000000000000099 -S31540035EC00000000000000000000000000000000089 -S31540035ED00000000000000000000000000000000079 -S31540035EE00000000000000000000000000000000069 -S31540035EF00000000000000000000000000000000059 -S31540035F000000000000000000000000000000000048 -S31540035F100000000000000000000000000000000038 -S31540035F200000000000000000000000000000000028 -S31540035F300000000000000000000000000000000018 -S31540035F400000000000000000000000000000000008 -S31540035F5000000000000000000000000000000000F8 -S31540035F6000000000000000000000000000000000E8 -S31540035F7000000000000000000000000000000000D8 -S31540035F8000000000000000000000000000000000C8 -S31540035F9000000000000000000000000000000000B8 -S31540035FA000000000000000000000000000000000A8 -S31540035FB00000000000000000000000000000000098 -S31540035FC00000000000000000000000000000000088 -S31540035FD00000000000000000000000000000000078 -S31540035FE00000000000000000000000000000000068 -S31540035FF00000000000000000000000000000000058 -S315400360000000000000000000000000000000000047 -S315400360100000000000000000000000000000000037 -S315400360200000000000000000000000000000000027 -S315400360300000000000000000000000000000000017 -S315400360400000000000000000000000000000000007 -S3154003605000000000000000000000000000000000F7 -S3154003606000000000000000000000000000000000E7 -S3154003607000000000000000000000000000000000D7 -S3154003608000000000000000000000000000000000C7 -S3154003609000000000000000000000000000000000B7 -S315400360A000000000000000000000000000000000A7 -S315400360B00000000000000000000000000000000097 -S315400360C00000000000000000000000000000000087 -S315400360D00000000000000000000000000000000077 -S315400360E00000000000000000000000000000000067 -S315400360F00000000000000000000000000000000057 -S315400361000000000000000000000000000000000046 -S315400361100000000000000000000000000000000036 -S315400361200000000000000000000000000000000026 -S315400361300000000000000000000000000000000016 -S315400361400000000000000000000000000000000006 -S3154003615000000000000000000000000000000000F6 -S3154003616000000000000000000000000000000000E6 -S3154003617000000000000000000000000000000000D6 -S3154003618000000000000000000000000000000000C6 -S3154003619000000000000000000000000000000000B6 -S315400361A000000000000000000000000000000000A6 -S315400361B00000000000000000000000000000000096 -S315400361C00000000000000000000000000000000086 -S315400361D00000000000000000000000000000000076 -S315400361E00000000000000000000000000000000066 -S315400361F00000000000000000000000000000000056 -S315400362000000000000000000000000000000000045 -S315400362100000000000000000000000000000000035 -S315400362200000000000000000000000000000000025 -S315400362300000000000000000000000000000000015 -S315400362400000000000000000000000000000000005 -S3154003625000000000000000000000000000000000F5 -S3154003626000000000000000000000000000000000E5 -S3154003627000000000000000000000000000000000D5 -S3154003628000000000000000000000000000000000C5 -S3154003629000000000000000000000000000000000B5 -S315400362A000000000000000000000000000000000A5 -S315400362B00000000000000000000000000000000095 -S315400362C00000000000000000000000000000000085 -S315400362D00000000000000000000000000000000075 -S315400362E00000000000000000000000000000000065 -S315400362F00000000000000000000000000000000055 -S315400363000000000000000000000000000000000044 -S315400363100000000000000000000000000000000034 -S315400363200000000000000000000000000000000024 -S315400363300000000000000000000000000000000014 -S315400363400000000000000000000000000000000004 -S3154003635000000000000000000000000000000000F4 -S3154003636000000000000000000000000000000000E4 -S3154003637000000000000000000000000000000000D4 -S3154003638000000000000000000000000000000000C4 -S3154003639000000000000000000000000000000000B4 -S315400363A000000000000000000000000000000000A4 -S315400363B00000000000000000000000000000000094 -S315400363C00000000000000000000000000000000084 -S315400363D00000000000000000000000000000000074 -S315400363E00000000000000000000000000000000064 -S315400363F00000000000000000000000000000000054 -S315400364000000000000000000000000000000000043 -S315400364100000000000000000000000000000000033 -S315400364200000000000000000000000000000000023 -S315400364300000000000000000000000000000000013 -S315400364400000000000000000000000000000000003 -S3154003645000000000000000000000000000000000F3 -S3154003646000000000000000000000000000000000E3 -S3154003647000000000000000000000000000000000D3 -S3154003648000000000000000000000000000000000C3 -S3154003649000000000000000000000000000000000B3 -S315400364A000000000000000000000000000000000A3 -S315400364B00000000000000000000000000000000093 -S315400364C00000000000000000000000000000000083 -S315400364D00000000000000000000000000000000073 -S315400364E00000000000000000000000000000000063 -S315400364F00000000000000000000000000000000053 -S315400365000000000000000000000000000000000042 -S315400365100000000000000000000000000000000032 -S315400365200000000000000000000000000000000022 -S315400365300000000000000000000000000000000012 -S315400365400000000000000000000000000000000002 -S3154003655000000000000000000000000000000000F2 -S3154003656000000000000000000000000000000000E2 -S3154003657000000000000000000000000000000000D2 -S3154003658000000000000000000000000000000000C2 -S3154003659000000000000000000000000000000000B2 -S315400365A000000000000000000000000000000000A2 -S315400365B00000000000000000000000000000000092 -S315400365C00000000000000000000000000000000082 -S315400365D00000000000000000000000000000000072 -S315400365E00000000000000000000000000000000062 -S315400365F00000000000000000000000000000000052 -S315400366000000000000000000000000000000000041 -S315400366100000000000000000000000000000000031 -S315400366200000000000000000000000000000000021 -S315400366300000000000000000000000000000000011 -S315400366400000000000000000000000000000000001 -S3154003665000000000000000000000000000000000F1 -S3154003666000000000000000000000000000000000E1 -S3154003667000000000000000000000000000000000D1 -S3154003668000000000000000000000000000000000C1 -S3154003669000000000000000000000000000000000B1 -S315400366A000000000000000000000000000000000A1 -S315400366B00000000000000000000000000000000091 -S315400366C00000000000000000000000000000000081 -S315400366D00000000000000000000000000000000071 -S315400366E00000000000000000000000000000000061 -S315400366F00000000000000000000000000000000051 -S315400367000000000000000000000000000000000040 -S315400367100000000000000000000000000000000030 -S315400367200000000000000000000000000000000020 -S315400367300000000000000000000000000000000010 -S315400367400000000000000000000000000000000000 -S3154003675000000000000000000000000000000000F0 -S3154003676000000000000000000000000000000000E0 -S3154003677000000000000000000000000000000000D0 -S3154003678000000000000000000000000000000000C0 -S3154003679000000000000000000000000000000000B0 -S315400367A000000000000000000000000000000000A0 -S315400367B00000000000000000000000000000000090 -S315400367C00000000000000000000000000000000080 -S315400367D00000000000000000000000000000000070 -S315400367E00000000000000000000000000000000060 -S315400367F00000000000000000000000000000000050 -S31540036800000000000000000000000000000000003F -S31540036810000000000000000000000000000000002F -S31540036820000000000000000000000000000000001F -S31540036830000000000000000000000000000000000F -S3154003684000000000000000000000000000000000FF -S3154003685000000000000000000000000000000000EF -S3154003686000000000000000000000000000000000DF -S3154003687000000000000000000000000000000000CF -S3154003688000000000000000000000000000000000BF -S3154003689000000000000000000000000000000000AF -S315400368A0000000000000000000000000000000009F -S315400368B0000000000000000000000000000000008F -S315400368C0000000000000000000000000000000007F -S315400368D0000000000000000000000000000000006F -S315400368E0000000000000000000000000000000005F -S315400368F0000000000000000000000000000000004F -S31540036900000000000000000000000000000000003E -S31540036910000000000000000000000000000000002E -S31540036920000000000000000000000000000000001E -S31540036930000000000000000000000000000000000E -S3154003694000000000000000000000000000000000FE -S3154003695000000000000000000000000000000000EE -S3154003696000000000000000000000000000000000DE -S3154003697000000000000000000000000000000000CE -S3154003698000000000000000000000000000000000BE -S3154003699000000000000000000000000000000000AE -S315400369A0000000000000000000000000000000009E -S315400369B0000000000000000000000000000000008E -S315400369C0000000000000000000000000000000007E -S315400369D0000000000000000000000000000000006E -S315400369E0000000000000000000000000000000005E -S315400369F0000000000000000000000000000000004E -S31540036A00000000000000000000000000000000003D -S31540036A10000000000000000000000000000000002D -S31540036A20000000000000000000000000000000001D -S31540036A30000000000000000000000000000000000D -S31540036A4000000000000000000000000000000000FD -S31540036A5000000000000000000000000000000000ED -S31540036A6000000000000000000000000000000000DD -S31540036A7000000000000000000000000000000000CD -S31540036A8000000000000000000000000000000000BD -S31540036A9000000000000000000000000000000000AD -S31540036AA0000000000000000000000000000000009D -S31540036AB0000000000000000000000000000000008D -S31540036AC0000000000000000000000000000000007D -S31540036AD0000000000000000000000000000000006D -S31540036AE0000000000000000000000000000000005D -S31540036AF0000000000000000000000000000000004D -S31540036B00000000000000000000000000000000003C -S31540036B10000000000000000000000000000000002C -S31540036B20000000000000000000000000000000001C -S31540036B30000000000000000000000000000000000C -S31540036B4000000000000000000000000000000000FC -S31540036B5000000000000000000000000000000000EC -S31540036B6000000000000000000000000000000000DC -S31540036B7000000000000000000000000000000000CC -S31540036B8000000000000000000000000000000000BC -S31540036B9000000000000000000000000000000000AC -S31540036BA0000000000000000000000000000000009C -S31540036BB0000000000000000000000000000000008C -S31540036BC0000000000000000000000000000000007C -S31540036BD0000000000000000000000000000000006C -S31540036BE0000000000000000000000000000000005C -S31540036BF0000000000000000000000000000000004C -S31540036C00000000000000000000000000000000003B -S31540036C10000000000000000000000000000000002B -S31540036C20000000000000000000000000000000001B -S31540036C30000000000000000000000000000000000B -S31540036C4000000000000000000000000000000000FB -S31540036C5000000000000000000000000000000000EB -S31540036C6000000000000000000000000000000000DB -S31540036C7000000000000000000000000000000000CB -S31540036C8000000000000000000000000000000000BB -S31540036C9000000000000000000000000000000000AB -S31540036CA0000000000000000000000000000000009B -S31540036CB0000000000000000000000000000000008B -S31540036CC0000000000000000000000000000000007B -S31540036CD0000000000000000000000000000000006B -S31540036CE0000000000000000000000000000000005B -S31540036CF0000000000000000000000000000000004B -S31540036D00000000000000000000000000000000003A -S31540036D10000000000000000000000000000000002A -S31540036D20000000000000000000000000000000001A -S31540036D30000000000000000000000000000000000A -S31540036D4000000000000000000000000000000000FA -S31540036D5000000000000000000000000000000000EA -S31540036D6000000000000000000000000000000000DA -S31540036D7000000000000000000000000000000000CA -S31540036D8000000000000000000000000000000000BA -S31540036D9000000000000000000000000000000000AA -S31540036DA0000000000000000000000000000000009A -S31540036DB0000000000000000000000000000000008A -S31540036DC0000000000000000000000000000000007A -S31540036DD0000000000000000000000000000000006A -S31540036DE0000000000000000000000000000000005A -S31540036DF0000000000000000000000000000000004A -S31540036E000000000000000000000000000000000039 -S31540036E100000000000000000000000000000000029 -S31540036E200000000000000000000000000000000019 -S31540036E300000000000000000000000000000000009 -S31540036E4000000000000000000000000000000000F9 -S31540036E5000000000000000000000000000000000E9 -S31540036E6000000000000000000000000000000000D9 -S31540036E7000000000000000000000000000000000C9 -S31540036E8000000000000000000000000000000000B9 -S31540036E9000000000000000000000000000000000A9 -S31540036EA00000000000000000000000000000000099 -S31540036EB00000000000000000000000000000000089 -S31540036EC00000000000000000000000000000000079 -S31540036ED00000000000000000000000000000000069 -S31540036EE00000000000000000000000000000000059 -S31540036EF00000000000000000000000000000000049 -S31540036F000000000000000000000000000000000038 -S31540036F100000000000000000000000000000000028 -S31540036F200000000000000000000000000000000018 -S31540036F300000000000000000000000000000000008 -S31540036F4000000000000000000000000000000000F8 -S31540036F5000000000000000000000000000000000E8 -S31540036F6000000000000000000000000000000000D8 -S31540036F7000000000000000000000000000000000C8 -S31540036F8000000000000000000000000000000000B8 -S31540036F9000000000000000000000000000000000A8 -S31540036FA00000000000000000000000000000000098 -S31540036FB00000000000000000000000000000000088 -S31540036FC00000000000000000000000000000000078 -S31540036FD00000000000000000000000000000000068 -S31540036FE00000000000000000000000000000000058 -S31540036FF00000000000000000000000000000000048 -S315400370000000000000000000000000000000000037 -S315400370100000000000000000000000000000000027 -S315400370200000000000000000000000000000000017 -S315400370300000000000000000000000000000000007 -S3154003704000000000000000000000000000000000F7 -S3154003705000000000000000000000000000000000E7 -S3154003706000000000000000000000000000000000D7 -S3154003707000000000000000000000000000000000C7 -S3154003708000000000000000000000000000000000B7 -S3154003709000000000000000000000000000000000A7 -S315400370A00000000000000000000000000000000097 -S315400370B00000000000000000000000000000000087 -S315400370C00000000000000000000000000000000077 -S315400370D00000000000000000000000000000000067 -S315400370E00000000000000000000000000000000057 -S315400370F00000000000000000000000000000000047 -S315400371000000000000000000000000000000000036 -S315400371100000000000000000000000000000000026 -S315400371200000000000000000000000000000000016 -S315400371300000000000000000000000000000000006 -S3154003714000000000000000000000000000000000F6 -S3154003715000000000000000000000000000000000E6 -S3154003716000000000000000000000000000000000D6 -S3154003717000000000000000000000000000000000C6 -S3154003718000000000000000000000000000000000B6 -S3154003719000000000000000000000000000000000A6 -S315400371A00000000000000000000000000000000096 -S315400371B00000000000000000000000000000000086 -S315400371C00000000000000000000000000000000076 -S315400371D00000000000000000000000000000000066 -S315400371E00000000000000000000000000000000056 -S315400371F00000000000000000000000000000000046 -S315400372000000000000000000000000000000000035 -S315400372100000000000000000000000000000000025 -S315400372200000000000000000000000000000000015 -S315400372300000000000000000000000000000000005 -S3154003724000000000000000000000000000000000F5 -S3154003725000000000000000000000000000000000E5 -S3154003726000000000000000000000000000000000D5 -S3154003727000000000000000000000000000000000C5 -S3154003728000000000000000000000000000000000B5 -S3154003729000000000000000000000000000000000A5 -S315400372A00000000000000000000000000000000095 -S315400372B00000000000000000000000000000000085 -S315400372C00000000000000000000000000000000075 -S315400372D00000000000000000000000000000000065 -S315400372E00000000000000000000000000000000055 -S315400372F00000000000000000000000000000000045 -S315400373000000000000000000000000000000000034 -S315400373100000000000000000000000000000000024 -S315400373200000000000000000000000000000000014 -S315400373300000000000000000000000000000000004 -S3154003734000000000000000000000000000000000F4 -S3154003735000000000000000000000000000000000E4 -S3154003736000000000000000000000000000000000D4 -S3154003737000000000000000000000000000000000C4 -S3154003738000000000000000000000000000000000B4 -S3154003739000000000000000000000000000000000A4 -S315400373A00000000000000000000000000000000094 -S315400373B00000000000000000000000000000000084 -S315400373C00000000000000000000000000000000074 -S315400373D00000000000000000000000000000000064 -S315400373E00000000000000000000000000000000054 -S315400373F00000000000000000000000000000000044 -S315400374000000000000000000000000000000000033 -S315400374100000000000000000000000000000000023 -S315400374200000000000000000000000000000000013 -S315400374300000000000000000000000000000000003 -S3154003744000000000000000000000000000000000F3 -S3154003745000000000000000000000000000000000E3 -S3154003746000000000000000000000000000000000D3 -S3154003747000000000000000000000000000000000C3 -S3154003748000000000000000000000000000000000B3 -S3154003749000000000000000000000000000000000A3 -S315400374A00000000000000000000000000000000093 -S315400374B00000000000000000000000000000000083 -S315400374C00000000000000000000000000000000073 -S315400374D00000000000000000000000000000000063 -S315400374E00000000000000000000000000000000053 -S315400374F00000000000000000000000000000000043 -S315400375000000000000000000000000000000000032 -S315400375100000000000000000000000000000000022 -S315400375200000000000000000000000000000000012 -S315400375300000000000000000000000000000000002 -S3154003754000000000000000000000000000000000F2 -S3154003755000000000000000000000000000000000E2 -S3154003756000000000000000000000000000000000D2 -S3154003757000000000000000000000000000000000C2 -S3154003758000000000000000000000000000000000B2 -S3154003759000000000000000000000000000000000A2 -S315400375A00000000000000000000000000000000092 -S315400375B00000000000000000000000000000000082 -S315400375C00000000000000000000000000000000072 -S315400375D00000000000000000000000000000000062 -S315400375E00000000000000000000000000000000052 -S315400375F00000000000000000000000000000000042 -S315400376000000000000000000000000000000000031 -S315400376100000000000000000000000000000000021 -S315400376200000000000000000000000000000000011 -S315400376300000000000000000000000000000000001 -S3154003764000000000000000000000000000000000F1 -S3154003765000000000000000000000000000000000E1 -S3154003766000000000000000000000000000000000D1 -S3154003767000000000000000000000000000000000C1 -S3154003768000000000000000000000000000000000B1 -S3154003769000000000000000000000000000000000A1 -S315400376A00000000000000000000000000000000091 -S315400376B00000000000000000000000000000000081 -S315400376C00000000000000000000000000000000071 -S315400376D00000000000000000000000000000000061 -S315400376E00000000000000000000000000000000051 -S315400376F00000000000000000000000000000000041 -S315400377000000000000000000000000000000000030 -S315400377100000000000000000000000000000000020 -S315400377200000000000000000000000000000000010 -S315400377300000000000000000000000000000000000 -S3154003774000000000000000000000000000000000F0 -S3154003775000000000000000000000000000000000E0 -S3154003776000000000000000000000000000000000D0 -S3154003777000000000000000000000000000000000C0 -S3154003778000000000000000000000000000000000B0 -S3154003779000000000000000000000000000000000A0 -S315400377A00000000000000000000000000000000090 -S315400377B00000000000000000000000000000000080 -S315400377C00000000000000000000000000000000070 -S315400377D00000000000000000000000000000000060 -S315400377E00000000000000000000000000000000050 -S315400377F00000000000000000000000000000000040 -S31540037800000000000000000000000000000000002F -S31540037810000000000000000000000000000000001F -S31540037820000000000000000000000000000000000F -S3154003783000000000000000000000000000000000FF -S3154003784000000000000000000000000000000000EF -S3154003785000000000000000000000000000000000DF -S3154003786000000000000000000000000000000000CF -S3154003787000000000000000000000000000000000BF -S3154003788000000000000000000000000000000000AF -S31540037890000000000000000000000000000000009F -S315400378A0000000000000000000000000000000008F -S315400378B0000000000000000000000000000000007F -S315400378C0000000000000000000000000000000006F -S315400378D0000000000000000000000000000000005F -S315400378E0000000000000000000000000000000004F -S315400378F0000000000000000000000000000000003F -S31540037900000000000000000000000000000000002E -S31540037910000000000000000000000000000000001E -S31540037920000000000000000000000000000000000E -S3154003793000000000000000000000000000000000FE -S3154003794000000000000000000000000000000000EE -S3154003795000000000000000000000000000000000DE -S3154003796000000000000000000000000000000000CE -S3154003797000000000000000000000000000000000BE -S3154003798000000000000000000000000000000000AE -S31540037990000000000000000000000000000000009E -S315400379A0000000000000000000000000000000008E -S315400379B0000000000000000000000000000000007E -S315400379C0000000000000000000000000000000006E -S315400379D0000000000000000000000000000000005E -S315400379E0000000000000000000000000000000004E -S315400379F0000000000000000000000000000000003E -S31540037A00000000000000000000000000000000002D -S31540037A10000000000000000000000000000000001D -S31540037A20000000000000000000000000000000000D -S31540037A3000000000000000000000000000000000FD -S31540037A4000000000000000000000000000000000ED -S31540037A5000000000000000000000000000000000DD -S31540037A6000000000000000000000000000000000CD -S31540037A7000000000000000000000000000000000BD -S31540037A8000000000000000000000000000000000AD -S31540037A90000000000000000000000000000000009D -S31540037AA0000000000000000000000000000000008D -S31540037AB0000000000000000000000000000000007D -S31540037AC0000000000000000000000000000000006D -S31540037AD0000000000000000000000000000000005D -S31540037AE0000000000000000000000000000000004D -S31540037AF0000000000000000000000000000000003D -S31540037B00000000000000000000000000000000002C -S31540037B10000000000000000000000000000000001C -S31540037B20000000000000000000000000000000000C -S31540037B3000000000000000000000000000000000FC -S31540037B4000000000000000000000000000000000EC -S31540037B5000000000000000000000000000000000DC -S31540037B6000000000000000000000000000000000CC -S31540037B7000000000000000000000000000000000BC -S31540037B8000000000000000000000000000000000AC -S31540037B90000000000000000000000000000000009C -S31540037BA0000000000000000000000000000000008C -S31540037BB0000000000000000000000000000000007C -S31540037BC0000000000000000000000000000000006C -S31540037BD0000000000000000000000000000000005C -S31540037BE0000000000000000000000000000000004C -S31540037BF0000000000000000000000000000000003C -S31540037C00000000000000000000000000000000002B -S31540037C10000000000000000000000000000000001B -S31540037C20000000000000000000000000000000000B -S31540037C3000000000000000000000000000000000FB -S31540037C4000000000000000000000000000000000EB -S31540037C5000000000000000000000000000000000DB -S31540037C6000000000000000000000000000000000CB -S31540037C7000000000000000000000000000000000BB -S31540037C8000000000000000000000000000000000AB -S31540037C90000000000000000000000000000000009B -S31540037CA0000000000000000000000000000000008B -S31540037CB0000000000000000000000000000000007B -S31540037CC0000000000000000000000000000000006B -S31540037CD0000000000000000000000000000000005B -S31540037CE0000000000000000000000000000000004B -S31540037CF0000000000000000000000000000000003B -S31540037D00000000000000000000000000000000002A -S31540037D10000000000000000000000000000000001A -S31540037D20000000000000000000000000000000000A -S31540037D3000000000000000000000000000000000FA -S31540037D4000000000000000000000000000000000EA -S31540037D5000000000000000000000000000000000DA -S31540037D6000000000000000000000000000000000CA -S31540037D7000000000000000000000000000000000BA -S31540037D8000000000000000000000000000000000AA -S31540037D90000000000000000000000000000000009A -S31540037DA0000000000000000000000000000000008A -S31540037DB0000000000000000000000000000000007A -S31540037DC0000000000000000000000000000000006A -S31540037DD0000000000000000000000000000000005A -S31540037DE0000000000000000000000000000000004A -S31540037DF0000000000000000000000000000000003A -S31540037E000000000000000000000000000000000029 -S31540037E100000000000000000000000000000000019 -S31540037E200000000000000000000000000000000009 -S31540037E3000000000000000000000000000000000F9 -S31540037E4000000000000000000000000000000000E9 -S31540037E5000000000000000000000000000000000D9 -S31540037E6000000000000000000000000000000000C9 -S31540037E7000000000000000000000000000000000B9 -S31540037E8000000000000000000000000000000000A9 -S31540037E900000000000000000000000000000000099 -S31540037EA00000000000000000000000000000000089 -S31540037EB00000000000000000000000000000000079 -S31540037EC00000000000000000000000000000000069 -S31540037ED00000000000000000000000000000000059 -S31540037EE00000000000000000000000000000000049 -S31540037EF00000000000000000000000000000000039 -S31540037F000000000000000000000000000000000028 -S31540037F100000000000000000000000000000000018 -S31540037F200000000000000000000000000000000008 -S31540037F3000000000000000000000000000000000F8 -S31540037F4000000000000000000000000000000000E8 -S31540037F5000000000000000000000000000000000D8 -S31540037F6000000000000000000000000000000000C8 -S31540037F7000000000000000000000000000000000B8 -S31540037F8000000000000000000000000000000000A8 -S31540037F900000000000000000000000000000000098 -S31540037FA00000000000000000000000000000000088 -S31540037FB00000000000000000000000000000000078 -S31540037FC00000000000000000000000000000000068 -S31540037FD00000000000000000000000000000000058 -S31540037FE00000000000000000000000000000000048 -S31540037FF00000000000000000000000000000000038 -S315400380000000000000000000000000000000000027 -S315400380100000000000000000000000000000000017 -S315400380200000000000000000000000000000000007 -S3154003803000000000000000000000000000000000F7 -S3154003804000000000000000000000000000000000E7 -S3154003805000000000000000000000000000000000D7 -S3154003806000000000000000000000000000000000C7 -S3154003807000000000000000000000000000000000B7 -S3154003808000000000000000000000000000000000A7 -S315400380900000000000000000000000000000000097 -S315400380A00000000000000000000000000000000087 -S315400380B00000000000000000000000000000000077 -S315400380C00000000000000000000000000000000067 -S315400380D00000000000000000000000000000000057 -S315400380E00000000000000000000000000000000047 -S315400380F00000000000000000000000000000000037 -S315400381000000000000000000000000000000000026 -S315400381100000000000000000000000000000000016 -S315400381200000000000000000000000000000000006 -S3154003813000000000000000000000000000000000F6 -S3154003814000000000000000000000000000000000E6 -S3154003815000000000000000000000000000000000D6 -S3154003816000000000000000000000000000000000C6 -S3154003817000000000000000000000000000000000B6 -S3154003818000000000000000000000000000000000A6 -S315400381900000000000000000000000000000000096 -S315400381A00000000000000000000000000000000086 -S315400381B00000000000000000000000000000000076 -S315400381C00000000000000000000000000000000066 -S315400381D00000000000000000000000000000000056 -S315400381E00000000000000000000000000000000046 -S315400381F00000000000000000000000000000000036 -S315400382000000000000000000000000000000000025 -S315400382100000000000000000000000000000000015 -S315400382200000000000000000000000000000000005 -S3154003823000000000000000000000000000000000F5 -S3154003824000000000000000000000000000000000E5 -S3154003825000000000000000000000000000000000D5 -S3154003826000000000000000000000000000000000C5 -S3154003827000000000000000000000000000000000B5 -S3154003828000000000000000000000000000000000A5 -S315400382900000000000000000000000000000000095 -S315400382A00000000000000000000000000000000085 -S315400382B00000000000000000000000000000000075 -S315400382C00000000000000000000000000000000065 -S315400382D00000000000000000000000000000000055 -S315400382E00000000000000000000000000000000045 -S315400382F00000000000000000000000000000000035 -S315400383000000000000000000000000000000000024 -S315400383100000000000000000000000000000000014 -S315400383200000000000000000000000000000000004 -S3154003833000000000000000000000000000000000F4 -S3154003834000000000000000000000000000000000E4 -S3154003835000000000000000000000000000000000D4 -S3154003836000000000000000000000000000000000C4 -S3154003837000000000000000000000000000000000B4 -S3154003838000000000000000000000000000000000A4 -S315400383900000000000000000000000000000000094 -S315400383A00000000000000000000000000000000084 -S315400383B00000000000000000000000000000000074 -S315400383C00000000000000000000000000000000064 -S315400383D00000000000000000000000000000000054 -S315400383E00000000000000000000000000000000044 -S315400383F00000000000000000000000000000000034 -S315400384000000000000000000000000000000000023 -S315400384100000000000000000000000000000000013 -S315400384200000000000000000000000000000000003 -S3154003843000000000000000000000000000000000F3 -S3154003844000000000000000000000000000000000E3 -S3154003845000000000000000000000000000000000D3 -S3154003846000000000000000000000000000000000C3 -S3154003847000000000000000000000000000000000B3 -S3154003848000000000000000000000000000000000A3 -S315400384900000000000000000000000000000000093 -S315400384A00000000000000000000000000000000083 -S315400384B00000000000000000000000000000000073 -S315400384C00000000000000000000000000000000063 -S315400384D00000000000000000000000000000000053 -S315400384E00000000000000000000000000000000043 -S315400384F00000000000000000000000000000000033 -S315400385000000000000000000000000000000000022 -S315400385100000000000000000000000000000000012 -S315400385200000000000000000000000000000000002 -S3154003853000000000000000000000000000000000F2 -S3154003854000000000000000000000000000000000E2 -S3154003855000000000000000000000000000000000D2 -S3154003856000000000000000000000000000000000C2 -S3154003857000000000000000000000000000000000B2 -S3154003858000000000000000000000000000000000A2 -S315400385900000000000000000000000000000000092 -S315400385A00000000000000000000000000000000082 -S315400385B00000000000000000000000000000000072 -S315400385C00000000000000000000000000000000062 -S315400385D00000000000000000000000000000000052 -S315400385E00000000000000000000000000000000042 -S315400385F00000000000000000000000000000000032 -S315400386000000000000000000000000000000000021 -S315400386100000000000000000000000000000000011 -S315400386200000000000000000000000000000000001 -S3154003863000000000000000000000000000000000F1 -S3154003864000000000000000000000000000000000E1 -S3154003865000000000000000000000000000000000D1 -S3154003866000000000000000000000000000000000C1 -S3154003867000000000000000000000000000000000B1 -S3154003868000000000000000000000000000000000A1 -S315400386900000000000000000000000000000000091 -S315400386A00000000000000000000000000000000081 -S315400386B00000000000000000000000000000000071 -S315400386C00000000000000000000000000000000061 -S315400386D00000000000000000000000000000000051 -S315400386E00000000000000000000000000000000041 -S315400386F00000000000000000000000000000000031 -S315400387000000000000000000000000000000000020 -S315400387100000000000000000000000000000000010 -S315400387200000000000000000000000000000000000 -S3154003873000000000000000000000000000000000F0 -S3154003874000000000000000000000000000000000E0 -S3154003875000000000000000000000000000000000D0 -S3154003876000000000000000000000000000000000C0 -S3154003877000000000000000000000000000000000B0 -S3154003878000000000000000000000000000000000A0 -S315400387900000000000000000000000000000000090 -S315400387A00000000000000000000000000000000080 -S315400387B00000000000000000000000000000000070 -S315400387C00000000000000000000000000000000060 -S315400387D00000000000000000000000000000000050 -S315400387E00000000000000000000000000000000040 -S315400387F00000000000000000000000000000000030 -S31540038800000000000000000000000000000000001F -S31540038810000000000000000000000000000000000F -S3154003882000000000000000000000000000000000FF -S3154003883000000000000000000000000000000000EF -S3154003884000000000000000000000000000000000DF -S3154003885000000000000000000000000000000000CF -S3154003886000000000000000000000000000000000BF -S3154003887000000000000000000000000000000000AF -S31540038880000000000000000000000000000000009F -S31540038890000000000000000000000000000000008F -S315400388A0000000000000000000000000000000007F -S315400388B0000000000000000000000000000000006F -S315400388C0000000000000000000000000000000005F -S315400388D0000000000000000000000000000000004F -S315400388E0000000000000000000000000000000003F -S315400388F0000000000000000000000000000000002F -S31540038900000000000000000000000000000000001E -S31540038910000000000000000000000000000000000E -S3154003892000000000000000000000000000000000FE -S3154003893000000000000000000000000000000000EE -S3154003894000000000000000000000000000000000DE -S3154003895000000000000000000000000000000000CE -S3154003896000000000000000000000000000000000BE -S3154003897000000000000000000000000000000000AE -S31540038980000000000000000000000000000000009E -S31540038990000000000000000000000000000000008E -S315400389A0000000000000000000000000000000007E -S315400389B0000000000000000000000000000000006E -S315400389C0000000000000000000000000000000005E -S315400389D0000000000000000000000000000000004E -S315400389E0000000000000000000000000000000003E -S315400389F0000000000000000000000000000000002E -S31540038A00000000000000000000000000000000001D -S31540038A10000000000000000000000000000000000D -S31540038A2000000000000000000000000000000000FD -S31540038A3000000000000000000000000000000000ED -S31540038A4000000000000000000000000000000000DD -S31540038A5000000000000000000000000000000000CD -S31540038A6000000000000000000000000000000000BD -S31540038A7000000000000000000000000000000000AD -S31540038A80000000000000000000000000000000009D -S31540038A90000000000000000000000000000000008D -S31540038AA0000000000000000000000000000000007D -S31540038AB0000000000000000000000000000000006D -S31540038AC0000000000000000000000000000000005D -S31540038AD0000000000000000000000000000000004D -S31540038AE0000000000000000000000000000000003D -S31540038AF0000000000000000000000000000000002D -S31540038B00000000000000000000000000000000001C -S31540038B10000000000000000000000000000000000C -S31540038B2000000000000000000000000000000000FC -S31540038B3000000000000000000000000000000000EC -S31540038B4000000000000000000000000000000000DC -S31540038B5000000000000000000000000000000000CC -S31540038B6000000000000000000000000000000000BC -S31540038B7000000000000000000000000000000000AC -S31540038B80000000000000000000000000000000009C -S31540038B90000000000000000000000000000000008C -S31540038BA0000000000000000000000000000000007C -S31540038BB0000000000000000000000000000000006C -S31540038BC0000000000000000000000000000000005C -S31540038BD0000000000000000000000000000000004C -S31540038BE0000000000000000000000000000000003C -S31540038BF0000000000000000000000000000000002C -S31540038C00000000000000000000000000000000001B -S31540038C10000000000000000000000000000000000B -S31540038C2000000000000000000000000000000000FB -S31540038C3000000000000000000000000000000000EB -S31540038C4000000000000000000000000000000000DB -S31540038C5000000000000000000000000000000000CB -S31540038C6000000000000000000000000000000000BB -S31540038C7000000000000000000000000000000000AB -S31540038C80000000000000000000000000000000009B -S31540038C90000000000000000000000000000000008B -S31540038CA0000000000000000000000000000000007B -S31540038CB0000000000000000000000000000000006B -S31540038CC0000000000000000000000000000000005B -S31540038CD0000000000000000000000000000000004B -S31540038CE0000000000000000000000000000000003B -S31540038CF0000000000000000000000000000000002B -S31540038D00000000000000000000000000000000001A -S31540038D10000000000000000000000000000000000A -S31540038D2000000000000000000000000000000000FA -S31540038D3000000000000000000000000000000000EA -S31540038D4000000000000000000000000000000000DA -S31540038D5000000000000000000000000000000000CA -S31540038D6000000000000000000000000000000000BA -S31540038D7000000000000000000000000000000000AA -S31540038D80000000000000000000000000000000009A -S31540038D90000000000000000000000000000000008A -S31540038DA0000000000000000000000000000000007A -S31540038DB0000000000000000000000000000000006A -S31540038DC0000000000000000000000000000000005A -S31540038DD0000000000000000000000000000000004A -S31540038DE0000000000000000000000000000000003A -S31540038DF0000000000000000000000000000000002A -S31540038E000000000000000000000000000000000019 -S31540038E100000000000000000000000000000000009 -S31540038E2000000000000000000000000000000000F9 -S31540038E3000000000000000000000000000000000E9 -S31540038E4000000000000000000000000000000000D9 -S31540038E5000000000000000000000000000000000C9 -S31540038E6000000000000000000000000000000000B9 -S31540038E7000000000000000000000000000000000A9 -S31540038E800000000000000000000000000000000099 -S31540038E900000000000000000000000000000000089 -S31540038EA00000000000000000000000000000000079 -S31540038EB00000000000000000000000000000000069 -S31540038EC00000000000000000000000000000000059 -S31540038ED00000000000000000000000000000000049 -S31540038EE00000000000000000000000000000000039 -S31540038EF00000000000000000000000000000000029 -S31540038F000000000000000000000000000000000018 -S31540038F100000000000000000000000000000000008 -S31540038F2000000000000000000000000000000000F8 -S31540038F3000000000000000000000000000000000E8 -S31540038F4000000000000000000000000000000000D8 -S31540038F5000000000000000000000000000000000C8 -S31540038F6000000000000000000000000000000000B8 -S31540038F7000000000000000000000000000000000A8 -S31540038F800000000000000000000000000000000098 -S31540038F900000000000000000000000000000000088 -S31540038FA00000000000000000000000000000000078 -S31540038FB00000000000000000000000000000000068 -S31540038FC00000000000000000000000000000000058 -S31540038FD00000000000000000000000000000000048 -S31540038FE00000000000000000000000000000000038 -S31540038FF00000000000000000000000000000000028 -S315400390000000000000000000000000000000000017 -S315400390100000000000000000000000000000000007 -S3154003902000000000000000000000000000000000F7 -S3154003903000000000000000000000000000000000E7 -S3154003904000000000000000000000000000000000D7 -S3154003905000000000000000000000000000000000C7 -S3154003906000000000000000000000000000000000B7 -S3154003907000000000000000000000000000000000A7 -S315400390800000000000000000000000000000000097 -S315400390900000000000000000000000000000000087 -S315400390A00000000000000000000000000000000077 -S315400390B00000000000000000000000000000000067 -S315400390C00000000000000000000000000000000057 -S315400390D00000000000000000000000000000000047 -S315400390E00000000000000000000000000000000037 -S315400390F00000000000000000000000000000000027 -S315400391000000000000000000000000000000000016 -S315400391100000000000000000000000000000000006 -S3154003912000000000000000000000000000000000F6 -S3154003913000000000000000000000000000000000E6 -S3154003914000000000000000000000000000000000D6 -S3154003915000000000000000000000000000000000C6 -S3154003916000000000000000000000000000000000B6 -S3154003917000000000000000000000000000000000A6 -S315400391800000000000000000000000000000000096 -S315400391900000000000000000000000000000000086 -S315400391A00000000000000000000000000000000076 -S315400391B00000000000000000000000000000000066 -S315400391C00000000000000000000000000000000056 -S315400391D00000000000000000000000000000000046 -S315400391E00000000000000000000000000000000036 -S315400391F00000000000000000000000000000000026 -S315400392000000000000000000000000000000000015 -S315400392100000000000000000000000000000000005 -S3154003922000000000000000000000000000000000F5 -S3154003923000000000000000000000000000000000E5 -S3154003924000000000000000000000000000000000D5 -S3154003925000000000000000000000000000000000C5 -S3154003926000000000000000000000000000000000B5 -S3154003927000000000000000000000000000000000A5 -S315400392800000000000000000000000000000000095 -S315400392900000000000000000000000000000000085 -S315400392A00000000000000000000000000000000075 -S315400392B00000000000000000000000000000000065 -S315400392C00000000000000000000000000000000055 -S315400392D00000000000000000000000000000000045 -S315400392E00000000000000000000000000000000035 -S315400392F00000000000000000000000000000000025 -S315400393000000000000000000000000000000000014 -S315400393100000000000000000000000000000000004 -S3154003932000000000000000000000000000000000F4 -S3154003933000000000000000000000000000000000E4 -S3154003934000000000000000000000000000000000D4 -S3154003935000000000000000000000000000000000C4 -S3154003936000000000000000000000000000000000B4 -S3154003937000000000000000000000000000000000A4 -S315400393800000000000000000000000000000000094 -S315400393900000000000000000000000000000000084 -S315400393A00000000000000000000000000000000074 -S315400393B00000000000000000000000000000000064 -S315400393C00000000000000000000000000000000054 -S315400393D00000000000000000000000000000000044 -S315400393E00000000000000000000000000000000034 -S315400393F00000000000000000000000000000000024 -S315400394000000000000000000000000000000000013 -S315400394100000000000000000000000000000000003 -S3154003942000000000000000000000000000000000F3 -S3154003943000000000000000000000000000000000E3 -S3154003944000000000000000000000000000000000D3 -S3154003945000000000000000000000000000000000C3 -S3154003946000000000000000000000000000000000B3 -S3154003947000000000000000000000000000000000A3 -S315400394800000000000000000000000000000000093 -S315400394900000000000000000000000000000000083 -S315400394A00000000000000000000000000000000073 -S315400394B00000000000000000000000000000000063 -S315400394C00000000000000000000000000000000053 -S315400394D00000000000000000000000000000000043 -S315400394E00000000000000000000000000000000033 -S315400394F00000000000000000000000000000000023 -S315400395000000000000000000000000000000000012 -S315400395100000000000000000000000000000000002 -S3154003952000000000000000000000000000000000F2 -S3154003953000000000000000000000000000000000E2 -S3154003954000000000000000000000000000000000D2 -S3154003955000000000000000000000000000000000C2 -S3154003956000000000000000000000000000000000B2 -S3154003957000000000000000000000000000000000A2 -S315400395800000000000000000000000000000000092 -S315400395900000000000000000000000000000000082 -S315400395A00000000000000000000000000000000072 -S315400395B00000000000000000000000000000000062 -S315400395C00000000000000000000000000000000052 -S315400395D00000000000000000000000000000000042 -S315400395E00000000000000000000000000000000032 -S315400395F00000000000000000000000000000000022 -S315400396000000000000000000000000000000000011 -S315400396100000000000000000000000000000000001 -S3154003962000000000000000000000000000000000F1 -S3154003963000000000000000000000000000000000E1 -S3154003964000000000000000000000000000000000D1 -S3154003965000000000000000000000000000000000C1 -S3154003966000000000000000000000000000000000B1 -S3154003967000000000000000000000000000000000A1 -S315400396800000000000000000000000000000000091 -S315400396900000000000000000000000000000000081 -S315400396A00000000000000000000000000000000071 -S315400396B00000000000000000000000000000000061 -S315400396C00000000000000000000000000000000051 -S315400396D00000000000000000000000000000000041 -S315400396E00000000000000000000000000000000031 -S315400396F00000000000000000000000000000000021 -S315400397000000000000000000000000000000000010 -S315400397100000000000000000000000000000000000 -S3154003972000000000000000000000000000000000F0 -S3154003973000000000000000000000000000000000E0 -S3154003974000000000000000000000000000000000D0 -S3154003975000000000000000000000000000000000C0 -S3154003976000000000000000000000000000000000B0 -S3154003977000000000000000000000000000000000A0 -S315400397800000000000000000000000000000000090 -S315400397900000000000000000000000000000000080 -S315400397A00000000000000000000000000000000070 -S315400397B00000000000000000000000000000000060 -S315400397C00000000000000000000000000000000050 -S315400397D00000000000000000000000000000000040 -S315400397E00000000000000000000000000000000030 -S315400397F00000000000000000000000000000000020 -S31540039800000000000000000000000000000000000F -S3154003981000000000000000000000000000000000FF -S3154003982000000000000000000000000000000000EF -S3154003983000000000000000000000000000000000DF -S3154003984000000000000000000000000000000000CF -S3154003985000000000000000000000000000000000BF -S3154003986000000000000000000000000000000000AF -S31540039870000000000000000000000000000000009F -S31540039880000000000000000000000000000000008F -S31540039890000000000000000000000000000000007F -S315400398A0000000000000000000000000000000006F -S315400398B0000000000000000000000000000000005F -S315400398C0000000000000000000000000000000004F -S315400398D0000000000000000000000000000000003F -S315400398E0000000000000000000000000000000002F -S315400398F0000000000000000000000000000000001F -S31540039900000000000000000000000000000000000E -S3154003991000000000000000000000000000000000FE -S3154003992000000000000000000000000000000000EE -S3154003993000000000000000000000000000000000DE -S3154003994000000000000000000000000000000000CE -S3154003995000000000000000000000000000000000BE -S3154003996000000000000000000000000000000000AE -S31540039970000000000000000000000000000000009E -S31540039980000000000000000000000000000000008E -S31540039990000000000000000000000000000000007E -S315400399A0000000000000000000000000000000006E -S315400399B0000000000000000000000000000000005E -S315400399C0000000000000000000000000000000004E -S315400399D0000000000000000000000000000000003E -S315400399E0000000000000000000000000000000002E -S315400399F0000000000000000000000000000000001E -S31540039A00000000000000000000000000000000000D -S31540039A1000000000000000000000000000000000FD -S31540039A2000000000000000000000000000000000ED -S31540039A3000000000000000000000000000000000DD -S31540039A4000000000000000000000000000000000CD -S31540039A5000000000000000000000000000000000BD -S31540039A6000000000000000000000000000000000AD -S31540039A70000000000000000000000000000000009D -S31540039A80000000000000000000000000000000008D -S31540039A90000000000000000000000000000000007D -S31540039AA0000000000000000000000000000000006D -S31540039AB0000000000000000000000000000000005D -S31540039AC0000000000000000000000000000000004D -S31540039AD0000000000000000000000000000000003D -S31540039AE0000000000000000000000000000000002D -S31540039AF0000000000000000000000000000000001D -S31540039B00000000000000000000000000000000000C -S31540039B1000000000000000000000000000000000FC -S31540039B2000000000000000000000000000000000EC -S31540039B3000000000000000000000000000000000DC -S31540039B4000000000000000000000000000000000CC -S31540039B5000000000000000000000000000000000BC -S31540039B6000000000000000000000000000000000AC -S31540039B70000000000000000000000000000000009C -S31540039B80000000000000000000000000000000008C -S31540039B90000000000000000000000000000000007C -S31540039BA0000000000000000000000000000000006C -S31540039BB0000000000000000000000000000000005C -S31540039BC0000000000000000000000000000000004C -S31540039BD0000000000000000000000000000000003C -S31540039BE0000000000000000000000000000000002C -S31540039BF0000000000000000000000000000000001C -S31540039C00000000000000000000000000000000000B -S31540039C1000000000000000000000000000000000FB -S31540039C2000000000000000000000000000000000EB -S31540039C3000000000000000000000000000000000DB -S31540039C4000000000000000000000000000000000CB -S31540039C5000000000000000000000000000000000BB -S31540039C6000000000000000000000000000000000AB -S31540039C70000000000000000000000000000000009B -S31540039C80000000000000000000000000000000008B -S31540039C90000000000000000000000000000000007B -S31540039CA0000000000000000000000000000000006B -S31540039CB0000000000000000000000000000000005B -S31540039CC0000000000000000000000000000000004B -S31540039CD0000000000000000000000000000000003B -S31540039CE0000000000000000000000000000000002B -S31540039CF0000000000000000000000000000000001B -S31540039D00000000000000000000000000000000000A -S31540039D1000000000000000000000000000000000FA -S31540039D2000000000000000000000000000000000EA -S31540039D3000000000000000000000000000000000DA -S31540039D4000000000000000000000000000000000CA -S31540039D5000000000000000000000000000000000BA -S31540039D6000000000000000000000000000000000AA -S31540039D70000000000000000000000000000000009A -S31540039D80000000000000000000000000000000008A -S31540039D90000000000000000000000000000000007A -S31540039DA0000000000000000000000000000000006A -S31540039DB0000000000000000000000000000000005A -S31540039DC0000000000000000000000000000000004A -S31540039DD0000000000000000000000000000000003A -S31540039DE0000000000000000000000000000000002A -S31540039DF0000000000000000000000000000000001A -S31540039E000000000000000000000000000000000009 -S31540039E1000000000000000000000000000000000F9 -S31540039E2000000000000000000000000000000000E9 -S31540039E3000000000000000000000000000000000D9 -S31540039E4000000000000000000000000000000000C9 -S31540039E5000000000000000000000000000000000B9 -S31540039E6000000000000000000000000000000000A9 -S31540039E700000000000000000000000000000000099 -S31540039E800000000000000000000000000000000089 -S31540039E900000000000000000000000000000000079 -S31540039EA00000000000000000000000000000000069 -S31540039EB00000000000000000000000000000000059 -S31540039EC00000000000000000000000000000000049 -S31540039ED00000000000000000000000000000000039 -S31540039EE00000000000000000000000000000000029 -S31540039EF00000000000000000000000000000000019 -S31540039F000000000000000000000000000000000008 -S31540039F1000000000000000000000000000000000F8 -S31540039F2000000000000000000000000000000000E8 -S31540039F3000000000000000000000000000000000D8 -S31540039F4000000000000000000000000000000000C8 -S31540039F5000000000000000000000000000000000B8 -S31540039F6000000000000000000000000000000000A8 -S31540039F700000000000000000000000000000000098 -S31540039F800000000000000000000000000000000088 -S31540039F900000000000000000000000000000000078 -S31540039FA00000000000000000000000000000000068 -S31540039FB00000000000000000000000000000000058 -S31540039FC00000000000000000000000000000000048 -S31540039FD00000000000000000000000000000000038 -S31540039FE00000000000000000000000000000000028 -S31540039FF00000000000000000000000000000000018 -S3154003A0000000000000000000000000000000000007 -S3154003A01000000000000000000000000000000000F7 -S3154003A02000000000000000000000000000000000E7 -S3154003A03000000000000000000000000000000000D7 -S3154003A04000000000000000000000000000000000C7 -S3154003A05000000000000000000000000000000000B7 -S3154003A06000000000000000000000000000000000A7 -S3154003A0700000000000000000000000000000000097 -S3154003A0800000000000000000000000000000000087 -S3154003A0900000000000000000000000000000000077 -S3154003A0A00000000000000000000000000000000067 -S3154003A0B00000000000000000000000000000000057 -S3154003A0C00000000000000000000000000000000047 -S3154003A0D00000000000000000000000000000000037 -S3154003A0E00000000000000000000000000000000027 -S3154003A0F00000000000000000000000000000000017 -S3154003A1000000000000000000000000000000000006 -S3154003A11000000000000000000000000000000000F6 -S3154003A12000000000000000000000000000000000E6 -S3154003A13000000000000000000000000000000000D6 -S3154003A14000000000000000000000000000000000C6 -S3154003A15000000000000000000000000000000000B6 -S3154003A16000000000000000000000000000000000A6 -S3154003A1700000000000000000000000000000000096 -S3154003A1800000000000000000000000000000000086 -S3154003A1900000000000000000000000000000000076 -S3154003A1A00000000000000000000000000000000066 -S3154003A1B00000000000000000000000000000000056 -S3154003A1C00000000000000000000000000000000046 -S3154003A1D00000000000000000000000000000000036 -S3154003A1E00000000000000000000000000000000026 -S3154003A1F00000000000000000000000000000000016 -S3154003A2000000000000000000000000000000000005 -S3154003A21000000000000000000000000000000000F5 -S3154003A22000000000000000000000000000000000E5 -S3154003A23000000000000000000000000000000000D5 -S3154003A24000000000000000000000000000000000C5 -S3154003A25000000000000000000000000000000000B5 -S3154003A26000000000000000000000000000000000A5 -S3154003A2700000000000000000000000000000000095 -S3154003A2800000000000000000000000000000000085 -S3154003A2900000000000000000000000000000000075 -S3154003A2A00000000000000000000000000000000065 -S3154003A2B00000000000000000000000000000000055 -S3154003A2C00000000000000000000000000000000045 -S3154003A2D00000000000000000000000000000000035 -S3154003A2E00000000000000000000000000000000025 -S3154003A2F00000000000000000000000000000000015 -S3154003A3000000000000000000000000000000000004 -S3154003A31000000000000000000000000000000000F4 -S3154003A32000000000000000000000000000000000E4 -S3154003A33000000000000000000000000000000000D4 -S3154003A34000000000000000000000000000000000C4 -S3154003A35000000000000000000000000000000000B4 -S3154003A36000000000000000000000000000000000A4 -S3154003A3700000000000000000000000000000000094 -S3154003A3800000000000000000000000000000000084 -S3154003A3900000000000000000000000000000000074 -S3154003A3A00000000000000000000000000000000064 -S3154003A3B00000000000000000000000000000000054 -S3154003A3C00000000000000000000000000000000044 -S3154003A3D00000000000000000000000000000000034 -S3154003A3E00000000000000000000000000000000024 -S3154003A3F00000000000000000000000000000000014 -S3154003A4000000000000000000000000000000000003 -S3154003A41000000000000000000000000000000000F3 -S3154003A42000000000000000000000000000000000E3 -S3154003A43000000000000000000000000000000000D3 -S3154003A44000000000000000000000000000000000C3 -S3154003A45000000000000000000000000000000000B3 -S3154003A46000000000000000000000000000000000A3 -S3154003A4700000000000000000000000000000000093 -S3154003A4800000000000000000000000000000000083 -S3154003A4900000000000000000000000000000000073 -S3154003A4A00000000000000000000000000000000063 -S3154003A4B00000000000000000000000000000000053 -S3154003A4C00000000000000000000000000000000043 -S3154003A4D00000000000000000000000000000000033 -S3154003A4E00000000000000000000000000000000023 -S3154003A4F00000000000000000000000000000000013 -S3154003A5000000000000000000000000000000000002 -S3154003A51000000000000000000000000000000000F2 -S3154003A52000000000000000000000000000000000E2 -S3154003A53000000000000000000000000000000000D2 -S3154003A54000000000000000000000000000000000C2 -S3154003A55000000000000000000000000000000000B2 -S3154003A56000000000000000000000000000000000A2 -S3154003A5700000000000000000000000000000000092 -S3154003A5800000000000000000000000000000000082 -S3154003A5900000000000000000000000000000000072 -S3154003A5A00000000000000000000000000000000062 -S3154003A5B00000000000000000000000000000000052 -S3154003A5C00000000000000000000000000000000042 -S3154003A5D00000000000000000000000000000000032 -S3154003A5E00000000000000000000000000000000022 -S3154003A5F00000000000000000000000000000000012 -S3154003A6000000000000000000000000000000000001 -S3154003A61000000000000000000000000000000000F1 -S3154003A62000000000000000000000000000000000E1 -S3154003A63000000000000000000000000000000000D1 -S3154003A64000000000000000000000000000000000C1 -S3154003A65000000000000000000000000000000000B1 -S3154003A66000000000000000000000000000000000A1 -S3154003A6700000000000000000000000000000000091 -S3154003A6800000000000000000000000000000000081 -S3154003A6900000000000000000000000000000000071 -S3154003A6A00000000000000000000000000000000061 -S3154003A6B00000000000000000000000000000000051 -S3154003A6C00000000000000000000000000000000041 -S3154003A6D00000000000000000000000000000000031 -S3154003A6E00000000000000000000000000000000021 -S3154003A6F00000000000000000000000000000000011 -S3154003A7000000000000000000000000000000000000 -S3154003A71000000000000000000000000000000000F0 -S3154003A72000000000000000000000000000000000E0 -S3154003A73000000000000000000000000000000000D0 -S3154003A74000000000000000000000000000000000C0 -S3154003A75000000000000000000000000000000000B0 -S3154003A76000000000000000000000000000000000A0 -S3154003A7700000000000000000000000000000000090 -S3154003A7800000000000000000000000000000000080 -S3154003A7900000000000000000000000000000000070 -S3154003A7A00000000000000000000000000000000060 -S3154003A7B00000000000000000000000000000000050 -S3154003A7C00000000000000000000000000000000040 -S3154003A7D00000000000000000000000000000000030 -S3154003A7E00000000000000000000000000000000020 -S3154003A7F00000000000000000000000000000000010 -S3154003A80000000000000000000000000000000000FF -S3154003A81000000000000000000000000000000000EF -S3154003A82000000000000000000000000000000000DF -S3154003A83000000000000000000000000000000000CF -S3154003A84000000000000000000000000000000000BF -S3154003A85000000000000000000000000000000000AF -S3154003A860000000000000000000000000000000009F -S3154003A870000000000000000000000000000000008F -S3154003A880000000000000000000000000000000007F -S3154003A890000000000000000000000000000000006F -S3154003A8A0000000000000000000000000000000005F -S3154003A8B0000000000000000000000000000000004F -S3154003A8C0000000000000000000000000000000003F -S3154003A8D0000000000000000000000000000000002F -S3154003A8E0000000000000000000000000000000001F -S3154003A8F0000000000000000000000000000000000F -S3154003A90000000000000000000000000000000000FE -S3154003A91000000000000000000000000000000000EE -S3154003A92000000000000000000000000000000000DE -S3154003A93000000000000000000000000000000000CE -S3154003A94000000000000000000000000000000000BE -S3154003A95000000000000000000000000000000000AE -S3154003A960000000000000000000000000000000009E -S3154003A970000000000000000000000000000000008E -S3154003A980000000000000000000000000000000007E -S3154003A990000000000000000000000000000000006E -S3154003A9A0000000000000000000000000000000005E -S3154003A9B0000000000000000000000000000000004E -S3154003A9C0000000000000000000000000000000003E -S3154003A9D0000000000000000000000000000000002E -S3154003A9E0000000000000000000000000000000001E -S3154003A9F0000000000000000000000000000000000E -S3154003AA0000000000000000000000000000000000FD -S3154003AA1000000000000000000000000000000000ED -S3154003AA2000000000000000000000000000000000DD -S3154003AA3000000000000000000000000000000000CD -S3154003AA4000000000000000000000000000000000BD -S3154003AA5000000000000000000000000000000000AD -S3154003AA60000000000000000000000000000000009D -S3154003AA70000000000000000000000000000000008D -S3154003AA80000000000000000000000000000000007D -S3154003AA90000000000000000000000000000000006D -S3154003AAA0000000000000000000000000000000005D -S3154003AAB0000000000000000000000000000000004D -S3154003AAC0000000000000000000000000000000003D -S3154003AAD0000000000000000000000000000000002D -S3154003AAE0000000000000000000000000000000001D -S3154003AAF0000000000000000000000000000000000D -S3154003AB0000000000000000000000000000000000FC -S3154003AB1000000000000000000000000000000000EC -S3154003AB2000000000000000000000000000000000DC -S3154003AB3000000000000000000000000000000000CC -S3154003AB4000000000000000000000000000000000BC -S3154003AB5000000000000000000000000000000000AC -S3154003AB60000000000000000000000000000000009C -S3154003AB70000000000000000000000000000000008C -S3154003AB80000000000000000000000000000000007C -S3154003AB90000000000000000000000000000000006C -S3154003ABA0000000000000000000000000000000005C -S3154003ABB0000000000000000000000000000000004C -S3154003ABC0000000000000000000000000000000003C -S3154003ABD0000000000000000000000000000000002C -S3154003ABE0000000000000000000000000000000001C -S3154003ABF0000000000000000000000000000000000C -S3154003AC0000000000000000000000000000000000FB -S3154003AC1000000000000000000000000000000000EB -S3154003AC2000000000000000000000000000000000DB -S3154003AC3000000000000000000000000000000000CB -S3154003AC4000000000000000000000000000000000BB -S3154003AC5000000000000000000000000000000000AB -S3154003AC60000000000000000000000000000000009B -S3154003AC70000000000000000000000000000000008B -S3154003AC80000000000000000000000000000000007B -S3154003AC90000000000000000000000000000000006B -S3154003ACA0000000000000000000000000000000005B -S3154003ACB0000000000000000000000000000000004B -S3154003ACC0000000000000000000000000000000003B -S3154003ACD0000000000000000000000000000000002B -S3154003ACE0000000000000000000000000000000001B -S3154003ACF0000000000000000000000000000000000B -S3154003AD0000000000000000000000000000000000FA -S3154003AD1000000000000000000000000000000000EA -S3154003AD2000000000000000000000000000000000DA -S3154003AD3000000000000000000000000000000000CA -S3154003AD4000000000000000000000000000000000BA -S3154003AD5000000000000000000000000000000000AA -S3154003AD60000000000000000000000000000000009A -S3154003AD70000000000000000000000000000000008A -S3154003AD80000000000000000000000000000000007A -S3154003AD90000000000000000000000000000000006A -S3154003ADA0000000000000000000000000000000005A -S3154003ADB0000000000000000000000000000000004A -S3154003ADC0000000000000000000000000000000003A -S3154003ADD0000000000000000000000000000000002A -S3154003ADE0000000000000000000000000000000001A -S3154003ADF0000000000000000000000000000000000A -S3154003AE0000000000000000000000000000000000F9 -S3154003AE1000000000000000000000000000000000E9 -S3154003AE2000000000000000000000000000000000D9 -S3154003AE3000000000000000000000000000000000C9 -S3154003AE4000000000000000000000000000000000B9 -S3154003AE5000000000000000000000000000000000A9 -S3154003AE600000000000000000000000000000000099 -S3154003AE700000000000000000000000000000000089 -S3154003AE800000000000000000000000000000000079 -S3154003AE900000000000000000000000000000000069 -S3154003AEA00000000000000000000000000000000059 -S3154003AEB00000000000000000000000000000000049 -S3154003AEC00000000000000000000000000000000039 -S3154003AED00000000000000000000000000000000029 -S3154003AEE00000000000000000000000000000000019 -S3154003AEF00000000000000000000000000000000009 -S3154003AF0000000000000000000000000000000000F8 -S3154003AF1000000000000000000000000000000000E8 -S3154003AF2000000000000000000000000000000000D8 -S3154003AF3000000000000000000000000000000000C8 -S3154003AF4000000000000000000000000000000000B8 -S3154003AF5000000000000000000000000000000000A8 -S3154003AF600000000000000000000000000000000098 -S3154003AF700000000000000000000000000000000088 -S3154003AF800000000000000000000000000000000078 -S3154003AF900000000000000000000000000000000068 -S3154003AFA00000000000000000000000000000000058 -S3154003AFB00000000000000000000000000000000048 -S3154003AFC00000000000000000000000000000000038 -S3154003AFD00000000000000000000000000000000028 -S3154003AFE00000000000000000000000000000000018 -S3154003AFF00000000000000000000000000000000008 -S3154003B00000000000000000000000000000000000F7 -S3154003B01000000000000000000000000000000000E7 -S3154003B02000000000000000000000000000000000D7 -S3154003B03000000000000000000000000000000000C7 -S3154003B04000000000000000000000000000000000B7 -S3154003B05000000000000000000000000000000000A7 -S3154003B0600000000000000000000000000000000097 -S3154003B0700000000000000000000000000000000087 -S3154003B0800000000000000000000000000000000077 -S3154003B0900000000000000000000000000000000067 -S3154003B0A00000000000000000000000000000000057 -S3154003B0B00000000000000000000000000000000047 -S3154003B0C00000000000000000000000000000000037 -S3154003B0D00000000000000000000000000000000027 -S3154003B0E00000000000000000000000000000000017 -S3154003B0F00000000000000000000000000000000007 -S3154003B10000000000000000000000000000000000F6 -S3154003B11000000000000000000000000000000000E6 -S3154003B12000000000000000000000000000000000D6 -S3154003B13000000000000000000000000000000000C6 -S3154003B14000000000000000000000000000000000B6 -S3154003B15000000000000000000000000000000000A6 -S3154003B1600000000000000000000000000000000096 -S3154003B1700000000000000000000000000000000086 -S3154003B1800000000000000000000000000000000076 -S3154003B1900000000000000000000000000000000066 -S3154003B1A00000000000000000000000000000000056 -S3154003B1B00000000000000000000000000000000046 -S3154003B1C00000000000000000000000000000000036 -S3154003B1D00000000000000000000000000000000026 -S3154003B1E00000000000000000000000000000000016 -S3154003B1F00000000000000000000000000000000006 -S3154003B20000000000000000000000000000000000F5 -S3154003B21000000000000000000000000000000000E5 -S3154003B22000000000000000000000000000000000D5 -S3154003B23000000000000000000000000000000000C5 -S3154003B24000000000000000000000000000000000B5 -S3154003B25000000000000000000000000000000000A5 -S3154003B2600000000000000000000000000000000095 -S3154003B2700000000000000000000000000000000085 -S3154003B2800000000000000000000000000000000075 -S3154003B2900000000000000000000000000000000065 -S3154003B2A00000000000000000000000000000000055 -S3154003B2B00000000000000000000000000000000045 -S3154003B2C00000000000000000000000000000000035 -S3154003B2D00000000000000000000000000000000025 -S3154003B2E00000000000000000000000000000000015 -S3154003B2F00000000000000000000000000000000005 -S3154003B30000000000000000000000000000000000F4 -S3154003B31000000000000000000000000000000000E4 -S3154003B32000000000000000000000000000000000D4 -S3154003B33000000000000000000000000000000000C4 -S3154003B34000000000000000000000000000000000B4 -S3154003B35000000000000000000000000000000000A4 -S3154003B3600000000000000000000000000000000094 -S3154003B3700000000000000000000000000000000084 -S3154003B3800000000000000000000000000000000074 -S3154003B3900000000000000000000000000000000064 -S3154003B3A00000000000000000000000000000000054 -S3154003B3B00000000000000000000000000000000044 -S3154003B3C00000000000000000000000000000000034 -S3154003B3D00000000000000000000000000000000024 -S3154003B3E00000000000000000000000000000000014 -S3154003B3F00000000000000000000000000000000004 -S3154003B40000000000000000000000000000000000F3 -S3154003B41000000000000000000000000000000000E3 -S3154003B42000000000000000000000000000000000D3 -S3154003B43000000000000000000000000000000000C3 -S3154003B44000000000000000000000000000000000B3 -S3154003B45000000000000000000000000000000000A3 -S3154003B4600000000000000000000000000000000093 -S3154003B4700000000000000000000000000000000083 -S3154003B4800000000000000000000000000000000073 -S3154003B4900000000000000000000000000000000063 -S3154003B4A00000000000000000000000000000000053 -S3154003B4B00000000000000000000000000000000043 -S3154003B4C00000000000000000000000000000000033 -S3154003B4D00000000000000000000000000000000023 -S3154003B4E00000000000000000000000000000000013 -S3154003B4F00000000000000000000000000000000003 -S3154003B50000000000000000000000000000000000F2 -S3154003B51000000000000000000000000000000000E2 -S3154003B52000000000000000000000000000000000D2 -S3154003B53000000000000000000000000000000000C2 -S3154003B54000000000000000000000000000000000B2 -S3154003B55000000000000000000000000000000000A2 -S3154003B5600000000000000000000000000000000092 -S3154003B5700000000000000000000000000000000082 -S3154003B5800000000000000000000000000000000072 -S3154003B5900000000000000000000000000000000062 -S3154003B5A00000000000000000000000000000000052 -S3154003B5B00000000000000000000000000000000042 -S3154003B5C00000000000000000000000000000000032 -S3154003B5D00000000000000000000000000000000022 -S3154003B5E00000000000000000000000000000000012 -S3154003B5F00000000000000000000000000000000002 -S3154003B60000000000000000000000000000000000F1 -S3154003B61000000000000000000000000000000000E1 -S3154003B62000000000000000000000000000000000D1 -S3154003B63000000000000000000000000000000000C1 -S3154003B64000000000000000000000000000000000B1 -S3154003B65000000000000000000000000000000000A1 -S3154003B6600000000000000000000000000000000091 -S3154003B6700000000000000000000000000000000081 -S3154003B6800000000000000000000000000000000071 -S3154003B6900000000000000000000000000000000061 -S3154003B6A00000000000000000000000000000000051 -S3154003B6B00000000000000000000000000000000041 -S3154003B6C00000000000000000000000000000000031 -S3154003B6D00000000000000000000000000000000021 -S3154003B6E00000000000000000000000000000000011 -S3154003B6F00000000000000000000000000000000001 -S3154003B70000000000000000000000000000000000F0 -S3154003B71000000000000000000000000000000000E0 -S3154003B72000000000000000000000000000000000D0 -S3154003B73000000000000000000000000000000000C0 -S3154003B74000000000000000000000000000000000B0 -S3154003B75000000000000000000000000000000000A0 -S3154003B7600000000000000000000000000000000090 -S3154003B7700000000000000000000000000000000080 -S3154003B7800000000000000000000000000000000070 -S3154003B7900000000000000000000000000000000060 -S3154003B7A00000000000000000000000000000000050 -S3154003B7B00000000000000000000000000000000040 -S3154003B7C00000000000000000000000000000000030 -S3154003B7D00000000000000000000000000000000020 -S3154003B7E00000000000000000000000000000000010 -S3154003B7F00000000000000000000000000000000000 -S3154003B80000000000000000000000000000000000EF -S3154003B81000000000000000000000000000000000DF -S3154003B82000000000000000000000000000000000CF -S3154003B83000000000000000000000000000000000BF -S3154003B84000000000000000000000000000000000AF -S3154003B850000000000000000000000000000000009F -S3154003B860000000000000000000000000000000008F -S3154003B870000000000000000000000000000000007F -S3154003B880000000000000000000000000000000006F -S3154003B890000000000000000000000000000000005F -S3154003B8A0000000000000000000000000000000004F -S3154003B8B0000000000000000000000000000000003F -S3154003B8C0000000000000000000000000000000002F -S3154003B8D0000000000000000000000000000000001F -S3154003B8E0000000000000000000000000000000000F -S3154003B8F000000000000000000000000000000000FF -S3154003B90000000000000000000000000000000000EE -S3154003B91000000000000000000000000000000000DE -S3154003B92000000000000000000000000000000000CE -S3154003B93000000000000000000000000000000000BE -S3154003B94000000000000000000000000000000000AE -S3154003B950000000000000000000000000000000009E -S3154003B960000000000000000000000000000000008E -S3154003B970000000000000000000000000000000007E -S3154003B980000000000000000000000000000000006E -S3154003B990000000000000000000000000000000005E -S3154003B9A0000000000000000000000000000000004E -S3154003B9B0000000000000000000000000000000003E -S3154003B9C0000000000000000000000000000000002E -S3154003B9D0000000000000000000000000000000001E -S3154003B9E0000000000000000000000000000000000E -S3154003B9F000000000000000000000000000000000FE -S3154003BA0000000000000000000000000000000000ED -S3154003BA1000000000000000000000000000000000DD -S3154003BA2000000000000000000000000000000000CD -S3154003BA3000000000000000000000000000000000BD -S3154003BA4000000000000000000000000000000000AD -S3154003BA50000000000000000000000000000000009D -S3154003BA60000000000000000000000000000000008D -S3154003BA70000000000000000000000000000000007D -S3154003BA80000000000000000000000000000000006D -S3154003BA90000000000000000000000000000000005D -S3154003BAA0000000000000000000000000000000004D -S3154003BAB0000000000000000000000000000000003D -S3154003BAC0000000000000000000000000000000002D -S3154003BAD0000000000000000000000000000000001D -S3154003BAE0000000000000000000000000000000000D -S3154003BAF000000000000000000000000000000000FD -S3154003BB0000000000000000000000000000000000EC -S3154003BB1000000000000000000000000000000000DC -S3154003BB2000000000000000000000000000000000CC -S3154003BB3000000000000000000000000000000000BC -S3154003BB4000000000000000000000000000000000AC -S3154003BB50000000000000000000000000000000009C -S3154003BB60000000000000000000000000000000008C -S3154003BB70000000000000000000000000000000007C -S3154003BB80000000000000000000000000000000006C -S3154003BB90000000000000000000000000000000005C -S3154003BBA0000000000000000000000000000000004C -S3154003BBB0000000000000000000000000000000003C -S3154003BBC0000000000000000000000000000000002C -S3154003BBD0000000000000000000000000000000001C -S3154003BBE0000000000000000000000000000000000C -S3154003BBF000000000000000000000000000000000FC -S3154003BC0000000000000000000000000000000000EB -S3154003BC1000000000000000000000000000000000DB -S3154003BC2000000000000000000000000000000000CB -S3154003BC3000000000000000000000000000000000BB -S3154003BC4000000000000000000000000000000000AB -S3154003BC50000000000000000000000000000000009B -S3154003BC60000000000000000000000000000000008B -S3154003BC70000000000000000000000000000000007B -S3154003BC80000000000000000000000000000000006B -S3154003BC90000000000000000000000000000000005B -S3154003BCA0000000000000000000000000000000004B -S3154003BCB0000000000000000000000000000000003B -S3154003BCC0000000000000000000000000000000002B -S3154003BCD0000000000000000000000000000000001B -S3154003BCE0000000000000000000000000000000000B -S3154003BCF000000000000000000000000000000000FB -S3154003BD0000000000000000000000000000000000EA -S3154003BD1000000000000000000000000000000000DA -S3154003BD2000000000000000000000000000000000CA -S3154003BD3000000000000000000000000000000000BA -S3154003BD4000000000000000000000000000000000AA -S3154003BD50000000000000000000000000000000009A -S3154003BD60000000000000000000000000000000008A -S3154003BD70000000000000000000000000000000007A -S3154003BD80000000000000000000000000000000006A -S3154003BD90000000000000000000000000000000005A -S3154003BDA0000000000000000000000000000000004A -S3154003BDB0000000000000000000000000000000003A -S3154003BDC0000000000000000000000000000000002A -S3154003BDD0000000000000000000000000000000001A -S3154003BDE0000000000000000000000000000000000A -S3154003BDF000000000000000000000000000000000FA -S3154003BE0000000000000000000000000000000000E9 -S3154003BE1000000000000000000000000000000000D9 -S3154003BE2000000000000000000000000000000000C9 -S3154003BE3000000000000000000000000000000000B9 -S3154003BE4000000000000000000000000000000000A9 -S3154003BE500000000000000000000000000000000099 -S3154003BE600000000000000000000000000000000089 -S3154003BE700000000000000000000000000000000079 -S3154003BE800000000000000000000000000000000069 -S3154003BE900000000000000000000000000000000059 -S3154003BEA00000000000000000000000000000000049 -S3154003BEB00000000000000000000000000000000039 -S3154003BEC00000000000000000000000000000000029 -S3154003BED00000000000000000000000000000000019 -S3154003BEE00000000000000000000000000000000009 -S3154003BEF000000000000000000000000000000000F9 -S3154003BF0000000000000000000000000000000000E8 -S3154003BF1000000000000000000000000000000000D8 -S3154003BF2000000000000000000000000000000000C8 -S3154003BF3000000000000000000000000000000000B8 -S3154003BF4000000000000000000000000000000000A8 -S3154003BF500000000000000000000000000000000098 -S3154003BF600000000000000000000000000000000088 -S3154003BF700000000000000000000000000000000078 -S3154003BF800000000000000000000000000000000068 -S3154003BF900000000000000000000000000000000058 -S3154003BFA00000000000000000000000000000000048 -S3154003BFB00000000000000000000000000000000038 -S3154003BFC00000000000000000000000000000000028 -S3154003BFD00000000000000000000000000000000018 -S3154003BFE00000000000000000000000000000000008 -S3154003BFF000000000000000000000000000000000F8 -S3154003C00000000000000000000000000000000000E7 -S3154003C01000000000000000000000000000000000D7 -S3154003C02000000000000000000000000000000000C7 -S3154003C03000000000000000000000000000000000B7 -S3154003C04000000000000000000000000000000000A7 -S3154003C0500000000000000000000000000000000097 -S3154003C0600000000000000000000000000000000087 -S3154003C0700000000000000000000000000000000077 -S3154003C0800000000000000000000000000000000067 -S3154003C0900000000000000000000000000000000057 -S3154003C0A00000000000000000000000000000000047 -S3154003C0B00000000000000000000000000000000037 -S3154003C0C00000000000000000000000000000000027 -S3154003C0D00000000000000000000000000000000017 -S3154003C0E00000000000000000000000000000000007 -S3154003C0F000000000000000000000000000000000F7 -S3154003C10000000000000000000000000000000000E6 -S3154003C11000000000000000000000000000000000D6 -S3154003C12000000000000000000000000000000000C6 -S3154003C13000000000000000000000000000000000B6 -S3154003C14000000000000000000000000000000000A6 -S3154003C1500000000000000000000000000000000096 -S3154003C1600000000000000000000000000000000086 -S3154003C1700000000000000000000000000000000076 -S3154003C1800000000000000000000000000000000066 -S3154003C1900000000000000000000000000000000056 -S3154003C1A00000000000000000000000000000000046 -S3154003C1B00000000000000000000000000000000036 -S3154003C1C00000000000000000000000000000000026 -S3154003C1D00000000000000000000000000000000016 -S3154003C1E00000000000000000000000000000000006 -S3154003C1F000000000000000000000000000000000F6 -S3154003C20000000000000000000000000000000000E5 -S3154003C21000000000000000000000000000000000D5 -S3154003C22000000000000000000000000000000000C5 -S3154003C23000000000000000000000000000000000B5 -S3154003C24000000000000000000000000000000000A5 -S3154003C2500000000000000000000000000000000095 -S3154003C2600000000000000000000000000000000085 -S3154003C2700000000000000000000000000000000075 -S3154003C2800000000000000000000000000000000065 -S3154003C2900000000000000000000000000000000055 -S3154003C2A00000000000000000000000000000000045 -S3154003C2B00000000000000000000000000000000035 -S3154003C2C00000000000000000000000000000000025 -S3154003C2D00000000000000000000000000000000015 -S3154003C2E00000000000000000000000000000000005 -S3154003C2F000000000000000000000000000000000F5 -S3154003C30000000000000000000000000000000000E4 -S3154003C31000000000000000000000000000000000D4 -S3154003C32000000000000000000000000000000000C4 -S3154003C33000000000000000000000000000000000B4 -S3154003C34000000000000000000000000000000000A4 -S3154003C3500000000000000000000000000000000094 -S3154003C3600000000000000000000000000000000084 -S3154003C3700000000000000000000000000000000074 -S3154003C3800000000000000000000000000000000064 -S3154003C3900000000000000000000000000000000054 -S3154003C3A00000000000000000000000000000000044 -S3154003C3B00000000000000000000000000000000034 -S3154003C3C00000000000000000000000000000000024 -S3154003C3D00000000000000000000000000000000014 -S3154003C3E00000000000000000000000000000000004 -S3154003C3F000000000000000000000000000000000F4 -S3154003C40000000000000000000000000000000000E3 -S3154003C41000000000000000000000000000000000D3 -S3154003C42000000000000000000000000000000000C3 -S3154003C43000000000000000000000000000000000B3 -S3154003C44000000000000000000000000000000000A3 -S3154003C4500000000000000000000000000000000093 -S3154003C4600000000000000000000000000000000083 -S3154003C4700000000000000000000000000000000073 -S3154003C4800000000000000000000000000000000063 -S3154003C4900000000000000000000000000000000053 -S3154003C4A00000000000000000000000000000000043 -S3154003C4B00000000000000000000000000000000033 -S3154003C4C00000000000000000000000000000000023 -S3154003C4D00000000000000000000000000000000013 -S3154003C4E00000000000000000000000000000000003 -S3154003C4F000000000000000000000000000000000F3 -S3154003C50000000000000000000000000000000000E2 -S3154003C51000000000000000000000000000000000D2 -S3154003C52000000000000000000000000000000000C2 -S3154003C53000000000000000000000000000000000B2 -S3154003C54000000000000000000000000000000000A2 -S3154003C5500000000000000000000000000000000092 -S3154003C5600000000000000000000000000000000082 -S3154003C5700000000000000000000000000000000072 -S3154003C5800000000000000000000000000000000062 -S3154003C5900000000000000000000000000000000052 -S3154003C5A00000000000000000000000000000000042 -S3154003C5B00000000000000000000000000000000032 -S3154003C5C00000000000000000000000000000000022 -S3154003C5D00000000000000000000000000000000012 -S3154003C5E00000000000000000000000000000000002 -S3154003C5F000000000000000000000000000000000F2 -S3154003C60000000000000000000000000000000000E1 -S3154003C61000000000000000000000000000000000D1 -S3154003C62000000000000000000000000000000000C1 -S3154003C63000000000000000000000000000000000B1 -S3154003C64000000000000000000000000000000000A1 -S3154003C6500000000000000000000000000000000091 -S3154003C6600000000000000000000000000000000081 -S3154003C6700000000000000000000000000000000071 -S3154003C6800000000000000000000000000000000061 -S3154003C6900000000000000000000000000000000051 -S3154003C6A00000000000000000000000000000000041 -S3154003C6B00000000000000000000000000000000031 -S3154003C6C00000000000000000000000000000000021 -S3154003C6D00000000000000000000000000000000011 -S3154003C6E00000000000000000000000000000000001 -S3154003C6F000000000000000000000000000000000F1 -S3154003C70000000000000000000000000000000000E0 -S3154003C71000000000000000000000000000000000D0 -S3154003C72000000000000000000000000000000000C0 -S3154003C73000000000000000000000000000000000B0 -S3154003C74000000000000000000000000000000000A0 -S3154003C7500000000000000000000000000000000090 -S3154003C7600000000000000000000000000000000080 -S3154003C7700000000000000000000000000000000070 -S3154003C7800000000000000000000000000000000060 -S3154003C7900000000000000000000000000000000050 -S3154003C7A00000000000000000000000000000000040 -S3154003C7B00000000000000000000000000000000030 -S3154003C7C00000000000000000000000000000000020 -S3154003C7D00000000000000000000000000000000010 -S3154003C7E00000000000000000000000000000000000 -S3154003C7F000000000000000000000000000000000F0 -S3154003C80000000000000000000000000000000000DF -S3154003C81000000000000000000000000000000000CF -S3154003C82000000000000000000000000000000000BF -S3154003C83000000000000000000000000000000000AF -S3154003C840000000000000000000000000000000009F -S3154003C850000000000000000000000000000000008F -S3154003C860000000000000000000000000000000007F -S3154003C870000000000000000000000000000000006F -S3154003C880000000000000000000000000000000005F -S3154003C890000000000000000000000000000000004F -S3154003C8A0000000000000000000000000000000003F -S3154003C8B0000000000000000000000000000000002F -S3154003C8C0000000000000000000000000000000001F -S3154003C8D0000000000000000000000000000000000F -S3154003C8E000000000000000000000000000000000FF -S3154003C8F000000000000000000000000000000000EF -S3154003C90000000000000000000000000000000000DE -S3154003C91000000000000000000000000000000000CE -S3154003C92000000000000000000000000000000000BE -S3154003C93000000000000000000000000000000000AE -S3154003C940000000000000000000000000000000009E -S3154003C950000000000000000000000000000000008E -S3154003C960000000000000000000000000000000007E -S3154003C970000000000000000000000000000000006E -S3154003C980000000000000000000000000000000005E -S3154003C990000000000000000000000000000000004E -S3154003C9A0000000000000000000000000000000003E -S3154003C9B0000000000000000000000000000000002E -S3154003C9C0000000000000000000000000000000001E -S3154003C9D0000000000000000000000000000000000E -S3154003C9E000000000000000000000000000000000FE -S3154003C9F000000000000000000000000000000000EE -S3154003CA0000000000000000000000000000000000DD -S3154003CA1000000000000000000000000000000000CD -S3154003CA2000000000000000000000000000000000BD -S3154003CA3000000000000000000000000000000000AD -S3154003CA40000000000000000000000000000000009D -S3154003CA50000000000000000000000000000000008D -S3154003CA60000000000000000000000000000000007D -S3154003CA70000000000000000000000000000000006D -S3154003CA80000000000000000000000000000000005D -S3154003CA90000000000000000000000000000000004D -S3154003CAA0000000000000000000000000000000003D -S3154003CAB0000000000000000000000000000000002D -S3154003CAC0000000000000000000000000000000001D -S3154003CAD0000000000000000000000000000000000D -S3154003CAE000000000000000000000000000000000FD -S3154003CAF000000000000000000000000000000000ED -S3154003CB0000000000000000000000000000000000DC -S3154003CB1000000000000000000000000000000000CC -S3154003CB2000000000000000000000000000000000BC -S3154003CB3000000000000000000000000000000000AC -S3154003CB40000000000000000000000000000000009C -S3154003CB50000000000000000000000000000000008C -S3154003CB60000000000000000000000000000000007C -S3154003CB70000000000000000000000000000000006C -S3154003CB80000000000000000000000000000000005C -S3154003CB90000000000000000000000000000000004C -S3154003CBA0000000000000000000000000000000003C -S3154003CBB0000000000000000000000000000000002C -S3154003CBC0000000000000000000000000000000001C -S3154003CBD0000000000000000000000000000000000C -S3154003CBE000000000000000000000000000000000FC -S3154003CBF000000000000000000000000000000000EC -S3154003CC0000000000000000000000000000000000DB -S3154003CC1000000000000000000000000000000000CB -S3154003CC2000000000000000000000000000000000BB -S3154003CC3000000000000000000000000000000000AB -S3154003CC40000000000000000000000000000000009B -S3154003CC50000000000000000000000000000000008B -S3154003CC60000000000000000000000000000000007B -S3154003CC70000000000000000000000000000000006B -S3154003CC80000000000000000000000000000000005B -S3154003CC90000000000000000000000000000000004B -S3154003CCA0000000000000000000000000000000003B -S3154003CCB0000000000000000000000000000000002B -S3154003CCC0000000000000000000000000000000001B -S3154003CCD0000000000000000000000000000000000B -S3154003CCE000000000000000000000000000000000FB -S3154003CCF000000000000000000000000000000000EB -S3154003CD0000000000000000000000000000000000DA -S3154003CD1000000000000000000000000000000000CA -S3154003CD2000000000000000000000000000000000BA -S3154003CD3000000000000000000000000000000000AA -S3154003CD40000000000000000000000000000000009A -S3154003CD50000000000000000000000000000000008A -S3154003CD60000000000000000000000000000000007A -S3154003CD70000000000000000000000000000000006A -S3154003CD80000000000000000000000000000000005A -S3154003CD90000000000000000000000000000000004A -S3154003CDA0000000000000000000000000000000003A -S3154003CDB0000000000000000000000000000000002A -S3154003CDC0000000000000000000000000000000001A -S3154003CDD0000000000000000000000000000000000A -S3154003CDE000000000000000000000000000000000FA -S3154003CDF000000000000000000000000000000000EA -S3154003CE0000000000000000000000000000000000D9 -S3154003CE1000000000000000000000000000000000C9 -S3154003CE2000000000000000000000000000000000B9 -S3154003CE3000000000000000000000000000000000A9 -S3154003CE400000000000000000000000000000000099 -S3154003CE500000000000000000000000000000000089 -S3154003CE600000000000000000000000000000000079 -S3154003CE700000000000000000000000000000000069 -S3154003CE800000000000000000000000000000000059 -S3154003CE900000000000000000000000000000000049 -S3154003CEA00000000000000000000000000000000039 -S3154003CEB00000000000000000000000000000000029 -S3154003CEC00000000000000000000000000000000019 -S3154003CED00000000000000000000000000000000009 -S3154003CEE000000000000000000000000000000000F9 -S3154003CEF000000000000000000000000000000000E9 -S3154003CF0000000000000000000000000000000000D8 -S3154003CF1000000000000000000000000000000000C8 -S3154003CF2000000000000000000000000000000000B8 -S3154003CF3000000000000000000000000000000000A8 -S3154003CF400000000000000000000000000000000098 -S3154003CF500000000000000000000000000000000088 -S3154003CF600000000000000000000000000000000078 -S3154003CF700000000000000000000000000000000068 -S3154003CF800000000000000000000000000000000058 -S3154003CF900000000000000000000000000000000048 -S3154003CFA00000000000000000000000000000000038 -S3154003CFB00000000000000000000000000000000028 -S3154003CFC00000000000000000000000000000000018 -S3154003CFD00000000000000000000000000000000008 -S3154003CFE000000000000000000000000000000000F8 -S3154003CFF000000000000000000000000000000000E8 -S3154003D00000000000000000000000000000000000D7 -S3154003D01000000000000000000000000000000000C7 -S3154003D02000000000000000000000000000000000B7 -S3154003D03000000000000000000000000000000000A7 -S3154003D0400000000000000000000000000000000097 -S3154003D0500000000000000000000000000000000087 -S3154003D0600000000000000000000000000000000077 -S3154003D0700000000000000000000000000000000067 -S3154003D0800000000000000000000000000000000057 -S3154003D0900000000000000000000000000000000047 -S3154003D0A00000000000000000000000000000000037 -S3154003D0B00000000000000000000000000000000027 -S3154003D0C00000000000000000000000000000000017 -S3154003D0D00000000000000000000000000000000007 -S3154003D0E000000000000000000000000000000000F7 -S3154003D0F000000000000000000000000000000000E7 -S3154003D10000000000000000000000000000000000D6 -S3154003D11000000000000000000000000000000000C6 -S3154003D12000000000000000000000000000000000B6 -S3154003D13000000000000000000000000000000000A6 -S3154003D1400000000000000000000000000000000096 -S3154003D1500000000000000000000000000000000086 -S3154003D1600000000000000000000000000000000076 -S3154003D1700000000000000000000000000000000066 -S3154003D1800000000000000000000000000000000056 -S3154003D1900000000000000000000000000000000046 -S3154003D1A00000000000000000000000000000000036 -S3154003D1B00000000000000000000000000000000026 -S3154003D1C00000000000000000000000000000000016 -S3154003D1D00000000000000000000000000000000006 -S3154003D1E000000000000000000000000000000000F6 -S3154003D1F000000000000000000000000000000000E6 -S3154003D20000000000000000000000000000000000D5 -S3154003D21000000000000000000000000000000000C5 -S3154003D22000000000000000000000000000000000B5 -S3154003D23000000000000000000000000000000000A5 -S3154003D2400000000000000000000000000000000095 -S3154003D2500000000000000000000000000000000085 -S3154003D2600000000000000000000000000000000075 -S3154003D2700000000000000000000000000000000065 -S3154003D2800000000000000000000000000000000055 -S3154003D2900000000000000000000000000000000045 -S3154003D2A00000000000000000000000000000000035 -S3154003D2B00000000000000000000000000000000025 -S3154003D2C00000000000000000000000000000000015 -S3154003D2D00000000000000000000000000000000005 -S3154003D2E000000000000000000000000000000000F5 -S3154003D2F000000000000000000000000000000000E5 -S3154003D30000000000000000000000000000000000D4 -S3154003D31000000000000000000000000000000000C4 -S3154003D32000000000000000000000000000000000B4 -S3154003D33000000000000000000000000000000000A4 -S3154003D3400000000000000000000000000000000094 -S3154003D3500000000000000000000000000000000084 -S3154003D3600000000000000000000000000000000074 -S3154003D3700000000000000000000000000000000064 -S3154003D3800000000000000000000000000000000054 -S3154003D3900000000000000000000000000000000044 -S3154003D3A00000000000000000000000000000000034 -S3154003D3B00000000000000000000000000000000024 -S3154003D3C00000000000000000000000000000000014 -S3154003D3D00000000000000000000000000000000004 -S3154003D3E000000000000000000000000000000000F4 -S3154003D3F000000000000000000000000000000000E4 -S3154003D40000000000000000000000000000000000D3 -S3154003D41000000000000000000000000000000000C3 -S3154003D42000000000000000000000000000000000B3 -S3154003D43000000000000000000000000000000000A3 -S3154003D4400000000000000000000000000000000093 -S3154003D4500000000000000000000000000000000083 -S3154003D4600000000000000000000000000000000073 -S3154003D4700000000000000000000000000000000063 -S3154003D4800000000000000000000000000000000053 -S3154003D4900000000000000000000000000000000043 -S3154003D4A00000000000000000000000000000000033 -S3154003D4B00000000000000000000000000000000023 -S3154003D4C00000000000000000000000000000000013 -S3154003D4D00000000000000000000000000000000003 -S3154003D4E000000000000000000000000000000000F3 -S3154003D4F000000000000000000000000000000000E3 -S3154003D50000000000000000000000000000000000D2 -S3154003D51000000000000000000000000000000000C2 -S3154003D52000000000000000000000000000000000B2 -S3154003D53000000000000000000000000000000000A2 -S3154003D5400000000000000000000000000000000092 -S3154003D5500000000000000000000000000000000082 -S3154003D5600000000000000000000000000000000072 -S3154003D5700000000000000000000000000000000062 -S3154003D5800000000000000000000000000000000052 -S3154003D5900000000000000000000000000000000042 -S3154003D5A00000000000000000000000000000000032 -S3154003D5B00000000000000000000000000000000022 -S3154003D5C00000000000000000000000000000000012 -S3154003D5D00000000000000000000000000000000002 -S3154003D5E000000000000000000000000000000000F2 -S3154003D5F000000000000000000000000000000000E2 -S3154003D60000000000000000000000000000000000D1 -S3154003D61000000000000000000000000000000000C1 -S3154003D62000000000000000000000000000000000B1 -S3154003D63000000000000000000000000000000000A1 -S3154003D6400000000000000000000000000000000091 -S3154003D6500000000000000000000000000000000081 -S3154003D6600000000000000000000000000000000071 -S3154003D6700000000000000000000000000000000061 -S3154003D6800000000000000000000000000000000051 -S3154003D6900000000000000000000000000000000041 -S3154003D6A00000000000000000000000000000000031 -S3154003D6B00000000000000000000000000000000021 -S3154003D6C00000000000000000000000000000000011 -S3154003D6D00000000000000000000000000000000001 -S3154003D6E000000000000000000000000000000000F1 -S3154003D6F000000000000000000000000000000000E1 -S3154003D70000000000000000000000000000000000D0 -S3154003D71000000000000000000000000000000000C0 -S3154003D72000000000000000000000000000000000B0 -S3154003D73000000000000000000000000000000000A0 -S3154003D7400000000000000000000000000000000090 -S3154003D7500000000000000000000000000000000080 -S3154003D7600000000000000000000000000000000070 -S3154003D7700000000000000000000000000000000060 -S3154003D7800000000000000000000000000000000050 -S3154003D7900000000000000000000000000000000040 -S3154003D7A00000000000000000000000000000000030 -S3154003D7B00000000000000000000000000000000020 -S3154003D7C00000000000000000000000000000000010 -S3154003D7D00000000000000000000000000000000000 -S3154003D7E000000000000000000000000000000000F0 -S3154003D7F000000000000000000000000000000000E0 -S3154003D80000000000000000000000000000000000CF -S3154003D81000000000000000000000000000000000BF -S3154003D82000000000000000000000000000000000AF -S3154003D830000000000000000000000000000000009F -S3154003D840000000000000000000000000000000008F -S3154003D850000000000000000000000000000000007F -S3154003D860000000000000000000000000000000006F -S3154003D870000000000000000000000000000000005F -S3154003D880000000000000000000000000000000004F -S3154003D890000000000000000000000000000000003F -S3154003D8A0000000000000000000000000000000002F -S3154003D8B0000000000000000000000000000000001F -S3154003D8C0000000000000000000000000000000000F -S3154003D8D000000000000000000000000000000000FF -S3154003D8E000000000000000000000000000000000EF -S3154003D8F000000000000000000000000000000000DF -S3154003D90000000000000000000000000000000000CE -S3154003D91000000000000000000000000000000000BE -S3154003D92000000000000000000000000000000000AE -S3154003D930000000000000000000000000000000009E -S3154003D940000000000000000000000000000000008E -S3154003D950000000000000000000000000000000007E -S3154003D960000000000000000000000000000000006E -S3154003D970000000000000000000000000000000005E -S3154003D980000000000000000000000000000000004E -S3154003D990000000000000000000000000000000003E -S3154003D9A0000000000000000000000000000000002E -S3154003D9B0000000000000000000000000000000001E -S3154003D9C0000000000000000000000000000000000E -S3154003D9D000000000000000000000000000000000FE -S3154003D9E000000000000000000000000000000000EE -S3154003D9F000000000000000000000000000000000DE -S3154003DA0000000000000000000000000000000000CD -S3154003DA1000000000000000000000000000000000BD -S3154003DA2000000000000000000000000000000000AD -S3154003DA30000000000000000000000000000000009D -S3154003DA40000000000000000000000000000000008D -S3154003DA50000000000000000000000000000000007D -S3154003DA60000000000000000000000000000000006D -S3154003DA70000000000000000000000000000000005D -S3154003DA80000000000000000000000000000000004D -S3154003DA90000000000000000000000000000000003D -S3154003DAA0000000000000000000000000000000002D -S3154003DAB0000000000000000000000000000000001D -S3154003DAC0000000000000000000000000000000000D -S3154003DAD000000000000000000000000000000000FD -S3154003DAE000000000000000000000000000000000ED -S3154003DAF000000000000000000000000000000000DD -S3154003DB0000000000000000000000000000000000CC -S3154003DB1000000000000000000000000000000000BC -S3154003DB2000000000000000000000000000000000AC -S3154003DB30000000000000000000000000000000009C -S3154003DB40000000000000000000000000000000008C -S3154003DB50000000000000000000000000000000007C -S3154003DB60000000000000000000000000000000006C -S3154003DB70000000000000000000000000000000005C -S3154003DB80000000000000000000000000000000004C -S3154003DB90000000000000000000000000000000003C -S3154003DBA0000000000000000000000000000000002C -S3154003DBB0000000000000000000000000000000001C -S3154003DBC0000000000000000000000000000000000C -S3154003DBD000000000000000000000000000000000FC -S3154003DBE000000000000000000000000000000000EC -S3154003DBF000000000000000000000000000000000DC -S3154003DC0000000000000000000000000000000000CB -S3154003DC1000000000000000000000000000000000BB -S3154003DC2000000000000000000000000000000000AB -S3154003DC30000000000000000000000000000000009B -S3154003DC40000000000000000000000000000000008B -S3154003DC50000000000000000000000000000000007B -S3154003DC60000000000000000000000000000000006B -S3154003DC70000000000000000000000000000000005B -S3154003DC80000000000000000000000000000000004B -S3154003DC90000000000000000000000000000000003B -S3154003DCA0000000000000000000000000000000002B -S3154003DCB0000000000000000000000000000000001B -S3154003DCC0000000000000000000000000000000000B -S3154003DCD000000000000000000000000000000000FB -S3154003DCE000000000000000000000000000000000EB -S3154003DCF000000000000000000000000000000000DB -S3154003DD0000000000000000000000000000000000CA -S3154003DD1000000000000000000000000000000000BA -S3154003DD2000000000000000000000000000000000AA -S3154003DD30000000000000000000000000000000009A -S3154003DD40000000000000000000000000000000008A -S3154003DD50000000000000000000000000000000007A -S3154003DD60000000000000000000000000000000006A -S3154003DD70000000000000000000000000000000005A -S3154003DD80000000000000000000000000000000004A -S3154003DD90000000000000000000000000000000003A -S3154003DDA0000000000000000000000000000000002A -S3154003DDB0000000000000000000000000000000001A -S3154003DDC0000000000000000000000000000000000A -S3154003DDD000000000000000000000000000000000FA -S3154003DDE000000000000000000000000000000000EA -S3154003DDF000000000000000000000000000000000DA -S3154003DE0000000000000000000000000000000000C9 -S3154003DE1000000000000000000000000000000000B9 -S3154003DE2000000000000000000000000000000000A9 -S3154003DE300000000000000000000000000000000099 -S3154003DE400000000000000000000000000000000089 -S3154003DE500000000000000000000000000000000079 -S3154003DE600000000000000000000000000000000069 -S3154003DE700000000000000000000000000000000059 -S3154003DE800000000000000000000000000000000049 -S3154003DE900000000000000000000000000000000039 -S3154003DEA00000000000000000000000000000000029 -S3154003DEB00000000000000000000000000000000019 -S3154003DEC00000000000000000000000000000000009 -S3154003DED000000000000000000000000000000000F9 -S3154003DEE000000000000000000000000000000000E9 -S3154003DEF000000000000000000000000000000000D9 -S3154003DF0000000000000000000000000000000000C8 -S3154003DF1000000000000000000000000000000000B8 -S3154003DF2000000000000000000000000000000000A8 -S3154003DF300000000000000000000000000000000098 -S3154003DF400000000000000000000000000000000088 -S3154003DF500000000000000000000000000000000078 -S3154003DF600000000000000000000000000000000068 -S3154003DF700000000000000000000000000000000058 -S3154003DF800000000000000000000000000000000048 -S3154003DF900000000000000000000000000000000038 -S3154003DFA00000000000000000000000000000000028 -S3154003DFB00000000000000000000000000000000018 -S3154003DFC00000000000000000000000000000000008 -S3154003DFD000000000000000000000000000000000F8 -S3154003DFE000000000000000000000000000000000E8 -S3154003DFF000000000000000000000000000000000D8 -S3154003E00000000000000000000000000000000000C7 -S3154003E01000000000000000000000000000000000B7 -S3154003E02000000000000000000000000000000000A7 -S3154003E0300000000000000000000000000000000097 -S3154003E0400000000000000000000000000000000087 -S3154003E0500000000000000000000000000000000077 -S3154003E0600000000000000000000000000000000067 -S3154003E0700000000000000000000000000000000057 -S3154003E0800000000000000000000000000000000047 -S3154003E0900000000000000000000000000000000037 -S3154003E0A00000000000000000000000000000000027 -S3154003E0B00000000000000000000000000000000017 -S3154003E0C00000000000000000000000000000000007 -S3154003E0D000000000000000000000000000000000F7 -S3154003E0E000000000000000000000000000000000E7 -S3154003E0F000000000000000000000000000000000D7 -S3154003E10000000000000000000000000000000000C6 -S3154003E11000000000000000000000000000000000B6 -S3154003E12000000000000000000000000000000000A6 -S3154003E1300000000000000000000000000000000096 -S3154003E1400000000000000000000000000000000086 -S3154003E1500000000000000000000000000000000076 -S3154003E1600000000000000000000000000000000066 -S3154003E1700000000000000000000000000000000056 -S3154003E1800000000000000000000000000000000046 -S3154003E1900000000000000000000000000000000036 -S3154003E1A00000000000000000000000000000000026 -S3154003E1B00000000000000000000000000000000016 -S3154003E1C00000000000000000000000000000000006 -S3154003E1D000000000000000000000000000000000F6 -S3154003E1E000000000000000000000000000000000E6 -S3154003E1F000000000000000000000000000000000D6 -S3154003E20000000000000000000000000000000000C5 -S3154003E21000000000000000000000000000000000B5 -S3154003E22000000000000000000000000000000000A5 -S3154003E2300000000000000000000000000000000095 -S3154003E2400000000000000000000000000000000085 -S3154003E2500000000000000000000000000000000075 -S3154003E2600000000000000000000000000000000065 -S3154003E2700000000000000000000000000000000055 -S3154003E2800000000000000000000000000000000045 -S3154003E2900000000000000000000000000000000035 -S3154003E2A00000000000000000000000000000000025 -S3154003E2B00000000000000000000000000000000015 -S3154003E2C00000000000000000000000000000000005 -S3154003E2D000000000000000000000000000000000F5 -S3154003E2E000000000000000000000000000000000E5 -S3154003E2F000000000000000000000000000000000D5 -S3154003E30000000000000000000000000000000000C4 -S3154003E31000000000000000000000000000000000B4 -S3154003E32000000000000000000000000000000000A4 -S3154003E3300000000000000000000000000000000094 -S3154003E3400000000000000000000000000000000084 -S3154003E3500000000000000000000000000000000074 -S3154003E3600000000000000000000000000000000064 -S3154003E3700000000000000000000000000000000054 -S3154003E3800000000000000000000000000000000044 -S3154003E3900000000000000000000000000000000034 -S3154003E3A00000000000000000000000000000000024 -S3154003E3B00000000000000000000000000000000014 -S3154003E3C00000000000000000000000000000000004 -S3154003E3D000000000000000000000000000000000F4 -S3154003E3E000000000000000000000000000000000E4 -S3154003E3F000000000000000000000000000000000D4 -S3154003E40000000000000000000000000000000000C3 -S3154003E41000000000000000000000000000000000B3 -S3154003E42000000000000000000000000000000000A3 -S3154003E4300000000000000000000000000000000093 -S3154003E4400000000000000000000000000000000083 -S3154003E4500000000000000000000000000000000073 -S3154003E4600000000000000000000000000000000063 -S3154003E4700000000000000000000000000000000053 -S3154003E4800000000000000000000000000000000043 -S3154003E4900000000000000000000000000000000033 -S3154003E4A00000000000000000000000000000000023 -S3154003E4B00000000000000000000000000000000013 -S3154003E4C00000000000000000000000000000000003 -S3154003E4D000000000000000000000000000000000F3 -S3154003E4E000000000000000000000000000000000E3 -S3154003E4F000000000000000000000000000000000D3 -S3154003E50000000000000000000000000000000000C2 -S3154003E51000000000000000000000000000000000B2 -S3154003E52000000000000000000000000000000000A2 -S3154003E5300000000000000000000000000000000092 -S3154003E5400000000000000000000000000000000082 -S3154003E5500000000000000000000000000000000072 -S3154003E5600000000000000000000000000000000062 -S3154003E5700000000000000000000000000000000052 -S3154003E5800000000000000000000000000000000042 -S3154003E5900000000000000000000000000000000032 -S3154003E5A00000000000000000000000000000000022 -S3154003E5B00000000000000000000000000000000012 -S3154003E5C00000000000000000000000000000000002 -S3154003E5D000000000000000000000000000000000F2 -S3154003E5E000000000000000000000000000000000E2 -S3154003E5F000000000000000000000000000000000D2 -S3154003E60000000000000000000000000000000000C1 -S3154003E61000000000000000000000000000000000B1 -S3154003E62000000000000000000000000000000000A1 -S3154003E6300000000000000000000000000000000091 -S3154003E6400000000000000000000000000000000081 -S3154003E6500000000000000000000000000000000071 -S3154003E6600000000000000000000000000000000061 -S3154003E6700000000000000000000000000000000051 -S3154003E6800000000000000000000000000000000041 -S3154003E6900000000000000000000000000000000031 -S3154003E6A00000000000000000000000000000000021 -S3154003E6B00000000000000000000000000000000011 -S3154003E6C00000000000000000000000000000000001 -S3154003E6D000000000000000000000000000000000F1 -S3154003E6E000000000000000000000000000000000E1 -S3154003E6F000000000000000000000000000000000D1 -S3154003E70000000000000000000000000000000000C0 -S3154003E71000000000000000000000000000000000B0 -S3154003E72000000000000000000000000000000000A0 -S3154003E7300000000000000000000000000000000090 -S3154003E7400000000000000000000000000000000080 -S3154003E7500000000000000000000000000000000070 -S3154003E7600000000000000000000000000000000060 -S3154003E7700000000000000000000000000000000050 -S3154003E7800000000000000000000000000000000040 -S3154003E7900000000000000000000000000000000030 -S3154003E7A00000000000000000000000000000000020 -S3154003E7B00000000000000000000000000000000010 -S3154003E7C00000000000000000000000000000000000 -S3154003E7D000000000000000000000000000000000F0 -S3154003E7E000000000000000000000000000000000E0 -S3154003E7F000000000000000000000000000000000D0 -S3154003E80000000000000000000000000000000000BF -S3154003E81000000000000000000000000000000000AF -S3154003E820000000000000000000000000000000009F -S3154003E830000000000000000000000000000000008F -S3154003E840000000000000000000000000000000007F -S3154003E850000000000000000000000000000000006F -S3154003E860000000000000000000000000000000005F -S3154003E870000000000000000000000000000000004F -S3154003E880000000000000000000000000000000003F -S3154003E890000000000000000000000000000000002F -S3154003E8A0000000000000000000000000000000001F -S3154003E8B0000000000000000000000000000000000F -S3154003E8C000000000000000000000000000000000FF -S3154003E8D000000000000000000000000000000000EF -S3154003E8E000000000000000000000000000000000DF -S3154003E8F000000000000000000000000000000000CF -S3154003E90000000000000000000000000000000000BE -S3154003E91000000000000000000000000000000000AE -S3154003E920000000000000000000000000000000009E -S3154003E930000000000000000000000000000000008E -S3154003E940000000000000000000000000000000007E -S3154003E950000000000000000000000000000000006E -S3154003E960000000000000000000000000000000005E -S3154003E970000000000000000000000000000000004E -S3154003E980000000000000000000000000000000003E -S3154003E990000000000000000000000000000000002E -S3154003E9A0000000000000000000000000000000001E -S3154003E9B0000000000000000000000000000000000E -S3154003E9C000000000000000000000000000000000FE -S3154003E9D000000000000000000000000000000000EE -S3154003E9E000000000000000000000000000000000DE -S3154003E9F000000000000000000000000000000000CE -S3154003EA0000000000000000000000000000000000BD -S3154003EA1000000000000000000000000000000000AD -S3154003EA20000000000000000000000000000000009D -S3154003EA30000000000000000000000000000000008D -S3154003EA40000000000000000000000000000000007D -S3154003EA50000000000000000000000000000000006D -S3154003EA60000000000000000000000000000000005D -S3154003EA70000000000000000000000000000000004D -S3154003EA80000000000000000000000000000000003D -S3154003EA90000000000000000000000000000000002D -S3154003EAA0000000000000000000000000000000001D -S3154003EAB0000000000000000000000000000000000D -S3154003EAC000000000000000000000000000000000FD -S3154003EAD000000000000000000000000000000000ED -S3154003EAE000000000000000000000000000000000DD -S3154003EAF000000000000000000000000000000000CD -S3154003EB0000000000000000000000000000000000BC -S3154003EB1000000000000000000000000000000000AC -S3154003EB20000000000000000000000000000000009C -S3154003EB30000000000000000000000000000000008C -S3154003EB40000000000000000000000000000000007C -S3154003EB50000000000000000000000000000000006C -S3154003EB60000000000000000000000000000000005C -S3154003EB70000000000000000000000000000000004C -S3154003EB80000000000000000000000000000000003C -S3154003EB90000000000000000000000000000000002C -S3154003EBA0000000000000000000000000000000001C -S3154003EBB0000000000000000000000000000000000C -S3154003EBC000000000000000000000000000000000FC -S3154003EBD000000000000000000000000000000000EC -S3154003EBE000000000000000000000000000000000DC -S3154003EBF000000000000000000000000000000000CC -S3154003EC0000000000000000000000000000000000BB -S3154003EC1000000000000000000000000000000000AB -S3154003EC20000000000000000000000000000000009B -S3154003EC30000000000000000000000000000000008B -S3154003EC40000000000000000000000000000000007B -S3154003EC50000000000000000000000000000000006B -S3154003EC60000000000000000000000000000000005B -S3154003EC70000000000000000000000000000000004B -S3154003EC80000000000000000000000000000000003B -S3154003EC90000000000000000000000000000000002B -S3154003ECA0000000000000000000000000000000001B -S3154003ECB0000000000000000000000000000000000B -S3154003ECC000000000000000000000000000000000FB -S3154003ECD000000000000000000000000000000000EB -S3154003ECE000000000000000000000000000000000DB -S3154003ECF000000000000000000000000000000000CB -S3154003ED0000000000000000000000000000000000BA -S3154003ED1000000000000000000000000000000000AA -S3154003ED20000000000000000000000000000000009A -S3154003ED30000000000000000000000000000000008A -S3154003ED40000000000000000000000000000000007A -S3154003ED50000000000000000000000000000000006A -S3154003ED60000000000000000000000000000000005A -S3154003ED70000000000000000000000000000000004A -S3154003ED80000000000000000000000000000000003A -S3154003ED90000000000000000000000000000000002A -S3154003EDA0000000000000000000000000000000001A -S3154003EDB0000000000000000000000000000000000A -S3154003EDC000000000000000000000000000000000FA -S3154003EDD000000000000000000000000000000000EA -S3154003EDE000000000000000000000000000000000DA -S3154003EDF000000000000000000000000000000000CA -S3154003EE0000000000000000000000000000000000B9 -S3154003EE1000000000000000000000000000000000A9 -S3154003EE200000000000000000000000000000000099 -S3154003EE300000000000000000000000000000000089 -S3154003EE400000000000000000000000000000000079 -S3154003EE500000000000000000000000000000000069 -S3154003EE600000000000000000000000000000000059 -S3154003EE700000000000000000000000000000000049 -S3154003EE800000000000000000000000000000000039 -S3154003EE900000000000000000000000000000000029 -S3154003EEA00000000000000000000000000000000019 -S3154003EEB00000000000000000000000000000000009 -S3154003EEC000000000000000000000000000000000F9 -S3154003EED000000000000000000000000000000000E9 -S3154003EEE000000000000000000000000000000000D9 -S3154003EEF000000000000000000000000000000000C9 -S3154003EF0000000000000000000000000000000000B8 -S3154003EF1000000000000000000000000000000000A8 -S3154003EF200000000000000000000000000000000098 -S3154003EF300000000000000000000000000000000088 -S3154003EF400000000000000000000000000000000078 -S3154003EF500000000000000000000000000000000068 -S3154003EF600000000000000000000000000000000058 -S3154003EF700000000000000000000000000000000048 -S3154003EF800000000000000000000000000000000038 -S3154003EF900000000000000000000000000000000028 -S3154003EFA00000000000000000000000000000000018 -S3154003EFB00000000000000000000000000000000008 -S3154003EFC000000000000000000000000000000000F8 -S3154003EFD000000000000000000000000000000000E8 -S3154003EFE000000000000000000000000000000000D8 -S3154003EFF000000000000000000000000000000000C8 -S3154003F00000000000000000000000000000000000B7 -S3154003F01000000000000000000000000000000000A7 -S3154003F0200000000000000000000000000000000097 -S3154003F0300000000000000000000000000000000087 -S3154003F0400000000000000000000000000000000077 -S3154003F0500000000000000000000000000000000067 -S3154003F0600000000000000000000000000000000057 -S3154003F0700000000000000000000000000000000047 -S3154003F0800000000000000000000000000000000037 -S3154003F0900000000000000000000000000000000027 -S3154003F0A00000000000000000000000000000000017 -S3154003F0B00000000000000000000000000000000007 -S3154003F0C000000000000000000000000000000000F7 -S3154003F0D000000000000000000000000000000000E7 -S3154003F0E000000000000000000000000000000000D7 -S3154003F0F000000000000000000000000000000000C7 -S3154003F10000000000000000000000000000000000B6 -S3154003F11000000000000000000000000000000000A6 -S3154003F1200000000000000000000000000000000096 -S3154003F1300000000000000000000000000000000086 -S3154003F1400000000000000000000000000000000076 -S3154003F1500000000000000000000000000000000066 -S3154003F1600000000000000000000000000000000056 -S3154003F1700000000000000000000000000000000046 -S3154003F1800000000000000000000000000000000036 -S3154003F1900000000000000000000000000000000026 -S3154003F1A00000000000000000000000000000000016 -S3154003F1B00000000000000000000000000000000006 -S3154003F1C000000000000000000000000000000000F6 -S3154003F1D000000000000000000000000000000000E6 -S3154003F1E000000000000000000000000000000000D6 -S3154003F1F000000000000000000000000000000000C6 -S3154003F20000000000000000000000000000000000B5 -S3154003F21000000000000000000000000000000000A5 -S3154003F2200000000000000000000000000000000095 -S3154003F2300000000000000000000000000000000085 -S3154003F2400000000000000000000000000000000075 -S3154003F2500000000000000000000000000000000065 -S3154003F2600000000000000000000000000000000055 -S3154003F2700000000000000000000000000000000045 -S3154003F2800000000000000000000000000000000035 -S3154003F2900000000000000000000000000000000025 -S3154003F2A00000000000000000000000000000000015 -S3154003F2B00000000000000000000000000000000005 -S3154003F2C000000000000000000000000000000000F5 -S3154003F2D000000000000000000000000000000000E5 -S3154003F2E000000000000000000000000000000000D5 -S3154003F2F000000000000000000000000000000000C5 -S3154003F30000000000000000000000000000000000B4 -S3154003F31000000000000000000000000000000000A4 -S3154003F3200000000000000000000000000000000094 -S3154003F3300000000000000000000000000000000084 -S3154003F3400000000000000000000000000000000074 -S3154003F3500000000000000000000000000000000064 -S3154003F3600000000000000000000000000000000054 -S3154003F3700000000000000000000000000000000044 -S3154003F3800000000000000000000000000000000034 -S3154003F3900000000000000000000000000000000024 -S3154003F3A00000000000000000000000000000000014 -S3154003F3B00000000000000000000000000000000004 -S3154003F3C000000000000000000000000000000000F4 -S3154003F3D000000000000000000000000000000000E4 -S3154003F3E000000000000000000000000000000000D4 -S3154003F3F000000000000000000000000000000000C4 -S3154003F40000000000000000000000000000000000B3 -S3154003F41000000000000000000000000000000000A3 -S3154003F4200000000000000000000000000000000093 -S3154003F4300000000000000000000000000000000083 -S3154003F4400000000000000000000000000000000073 -S3154003F4500000000000000000000000000000000063 -S3154003F4600000000000000000000000000000000053 -S3154003F4700000000000000000000000000000000043 -S3154003F4800000000000000000000000000000000033 -S3154003F4900000000000000000000000000000000023 -S3154003F4A00000000000000000000000000000000013 -S3154003F4B00000000000000000000000000000000003 -S3154003F4C000000000000000000000000000000000F3 -S3154003F4D000000000000000000000000000000000E3 -S3154003F4E000000000000000000000000000000000D3 -S3154003F4F000000000000000000000000000000000C3 -S3154003F50000000000000000000000000000000000B2 -S3154003F51000000000000000000000000000000000A2 -S3154003F5200000000000000000000000000000000092 -S3154003F5300000000000000000000000000000000082 -S3154003F5400000000000000000000000000000000072 -S3154003F5500000000000000000000000000000000062 -S3154003F5600000000000000000000000000000000052 -S3154003F5700000000000000000000000000000000042 -S3154003F5800000000000000000000000000000000032 -S3154003F5900000000000000000000000000000000022 -S3154003F5A00000000000000000000000000000000012 -S3154003F5B00000000000000000000000000000000002 -S3154003F5C000000000000000000000000000000000F2 -S3154003F5D000000000000000000000000000000000E2 -S3154003F5E000000000000000000000000000000000D2 -S3154003F5F000000000000000000000000000000000C2 -S3154003F60000000000000000000000000000000000B1 -S3154003F61000000000000000000000000000000000A1 -S3154003F6200000000000000000000000000000000091 -S3154003F6300000000000000000000000000000000081 -S3154003F6400000000000000000000000000000000071 -S3154003F6500000000000000000000000000000000061 -S3154003F6600000000000000000000000000000000051 -S3154003F6700000000000000000000000000000000041 -S3154003F6800000000000000000000000000000000031 -S3154003F6900000000000000000000000000000000021 -S3154003F6A00000000000000000000000000000000011 -S3154003F6B00000000000000000000000000000000001 -S3154003F6C000000000000000000000000000000000F1 -S3154003F6D000000000000000000000000000000000E1 -S3154003F6E000000000000000000000000000000000D1 -S3154003F6F000000000000000000000000000000000C1 -S3154003F70000000000000000000000000000000000B0 -S3154003F71000000000000000000000000000000000A0 -S3154003F7200000000000000000000000000000000090 -S3154003F7300000000000000000000000000000000080 -S3154003F7400000000000000000000000000000000070 -S3154003F7500000000000000000000000000000000060 -S3154003F7600000000000000000000000000000000050 -S3154003F7700000000000000000000000000000000040 -S3154003F7800000000000000000000000000000000030 -S3154003F7900000000000000000000000000000000020 -S3154003F7A00000000000000000000000000000000010 -S3154003F7B00000000000000000000000000000000000 -S3154003F7C000000000000000000000000000000000F0 -S3154003F7D000000000000000000000000000000000E0 -S3154003F7E000000000000000000000000000000000D0 -S3154003F7F000000000000000000000000000000000C0 -S3154003F80000000000000000000000000000000000AF -S3154003F810000000000000000000000000000000009F -S3154003F820000000000000000000000000000000008F -S3154003F830000000000000000000000000000000007F -S3154003F840000000000000000000000000000000006F -S3154003F850000000000000000000000000000000005F -S3154003F860000000000000000000000000000000004F -S3154003F870000000000000000000000000000000003F -S3154003F880000000000000000000000000000000002F -S3154003F890000000000000000000000000000000001F -S3154003F8A0000000000000000000000000000000000F -S3154003F8B000000000000000000000000000000000FF -S3154003F8C000000000000000000000000000000000EF -S3154003F8D000000000000000000000000000000000DF -S3154003F8E000000000000000000000000000000000CF -S3154003F8F000000000000000000000000000000000BF -S3154003F90000000000000000000000000000000000AE -S3154003F910000000000000000000000000000000009E -S3154003F920000000000000000000000000000000008E -S3154003F930000000000000000000000000000000007E -S3154003F940000000000000000000000000000000006E -S3154003F950000000000000000000000000000000005E -S3154003F960000000000000000000000000000000004E -S3154003F970000000000000000000000000000000003E -S3154003F980000000000000000000000000000000002E -S3154003F990000000000000000000000000000000001E -S3154003F9A0000000000000000000000000000000000E -S3154003F9B000000000000000000000000000000000FE -S3154003F9C000000000000000000000000000000000EE -S3154003F9D000000000000000000000000000000000DE -S3154003F9E000000000000000000000000000000000CE -S3154003F9F000000000000000000000000000000000BE -S3154003FA0000000000000000000000000000000000AD -S3154003FA10000000000000000000000000000000009D -S3154003FA20000000000000000000000000000000008D -S3154003FA30000000000000000000000000000000007D -S3154003FA40000000000000000000000000000000006D -S3154003FA50000000000000000000000000000000005D -S3154003FA60000000000000000000000000000000004D -S3154003FA70000000000000000000000000000000003D -S3154003FA80000000000000000000000000000000002D -S3154003FA90000000000000000000000000000000001D -S3154003FAA0000000000000000000000000000000000D -S3154003FAB000000000000000000000000000000000FD -S3154003FAC000000000000000000000000000000000ED -S3154003FAD000000000000000000000000000000000DD -S3154003FAE000000000000000000000000000000000CD -S3154003FAF000000000000000000000000000000000BD -S3154003FB0000000000000000000000000000000000AC -S3154003FB10000000000000000000000000000000009C -S3154003FB20000000000000000000000000000000008C -S3154003FB30000000000000000000000000000000007C -S3154003FB40000000000000000000000000000000006C -S3154003FB50000000000000000000000000000000005C -S3154003FB60000000000000000000000000000000004C -S3154003FB70000000000000000000000000000000003C -S3154003FB80000000000000000000000000000000002C -S3154003FB90000000000000000000000000000000001C -S3154003FBA0000000000000000000000000000000000C -S3154003FBB000000000000000000000000000000000FC -S3154003FBC000000000000000000000000000000000EC -S3154003FBD000000000000000000000000000000000DC -S3154003FBE000000000000000000000000000000000CC -S3154003FBF000000000000000000000000000000000BC -S3154003FC0000000000000000000000000000000000AB -S3154003FC10000000000000000000000000000000009B -S3154003FC20000000000000000000000000000000008B -S3154003FC30000000000000000000000000000000007B -S3154003FC40000000000000000000000000000000006B -S3154003FC50000000000000000000000000000000005B -S3154003FC60000000000000000000000000000000004B -S3154003FC70000000000000000000000000000000003B -S3154003FC80000000000000000000000000000000002B -S3154003FC90000000000000000000000000000000001B -S3154003FCA0000000000000000000000000000000000B -S3154003FCB000000000000000000000000000000000FB -S3154003FCC000000000000000000000000000000000EB -S3154003FCD000000000000000000000000000000000DB -S3154003FCE000000000000000000000000000000000CB -S3154003FCF000000000000000000000000000000000BB -S3154003FD0000000000000000000000000000000000AA -S3154003FD10000000000000000000000000000000009A -S3154003FD20000000000000000000000000000000008A -S3154003FD30000000000000000000000000000000007A -S3154003FD40000000000000000000000000000000006A -S3154003FD50000000000000000000000000000000005A -S3154003FD60000000000000000000000000000000004A -S3154003FD70000000000000000000000000000000003A -S3154003FD80000000000000000000000000000000002A -S3154003FD90000000000000000000000000000000001A -S3154003FDA0000000000000000000000000000000000A -S3154003FDB000000000000000000000000000000000FA -S3154003FDC000000000000000000000000000000000EA -S3154003FDD000000000000000000000000000000000DA -S3154003FDE000000000000000000000000000000000CA -S3154003FDF000000000000000000000000000000000BA -S3154003FE0000000000000000000000000000000000A9 -S3154003FE100000000000000000000000000000000099 -S3154003FE200000000000000000000000000000000089 -S3154003FE300000000000000000000000000000000079 -S3154003FE400000000000000000000000000000000069 -S3154003FE500000000000000000000000000000000059 -S3154003FE600000000000000000000000000000000049 -S3154003FE700000000000000000000000000000000039 -S3154003FE800000000000000000000000000000000029 -S3154003FE900000000000000000000000000000000019 -S3154003FEA00000000000000000000000000000000009 -S3154003FEB000000000000000000000000000000000F9 -S3154003FEC000000000000000000000000000000000E9 -S3154003FED000000000000000000000000000000000D9 -S3154003FEE000000000000000000000000000000000C9 -S3154003FEF000000000000000000000000000000000B9 -S3154003FF0000000000000000000000000000000000A8 -S3154003FF100000000000000000000000000000000098 -S3154003FF200000000000000000000000000000000088 -S3154003FF300000000000000000000000000000000078 -S3154003FF400000000000000000000000000000000068 -S3154003FF500000000000000000000000000000000058 -S3154003FF600000000000000000000000000000000048 -S3154003FF700000000000000000000000000000000038 -S3154003FF800000000000000000000000000000000028 -S3154003FF900000000000000000000000000000000018 -S3154003FFA00000000000000000000000000000000008 -S3154003FFB000000000000000000000000000000000F8 -S3154003FFC000000000000000000000000000000000E8 -S3154003FFD000000000000000000000000000000000D8 -S3154003FFE000000000000000000000000000000000C8 -S3154003FFF000000000000000000000000000000000B8 -S3154004000000000000000000000000000000000000A6 -S315400400100000000000000000000000000000000096 -S315400400200000000000000000000000000000000086 -S315400400300000000000000000000000000000000076 -S315400400400000000000000000000000000000000066 -S315400400500000000000000000000000000000000056 -S315400400600000000000000000000000000000000046 -S315400400700000000000000000000000000000000036 -S315400400800000000000000000000000000000000026 -S315400400900000000000000000000000000000000016 -S315400400A00000000000000000000000000000000006 -S315400400B000000000000000000000000000000000F6 -S315400400C000000000000000000000000000000000E6 -S315400400D000000000000000000000000000000000D6 -S315400400E000000000000000000000000000000000C6 -S315400400F000000000000000000000000000000000B6 -S3154004010000000000000000000000000000000000A5 -S315400401100000000000000000000000000000000095 -S315400401200000000000000000000000000000000085 -S315400401300000000000000000000000000000000075 -S315400401400000000000000000000000000000000065 -S315400401500000000000000000000000000000000055 -S315400401600000000000000000000000000000000045 -S315400401700000000000000000000000000000000035 -S315400401800000000000000000000000000000000025 -S315400401900000000000000000000000000000000015 -S315400401A00000000000000000000000000000000005 -S315400401B000000000000000000000000000000000F5 -S315400401C000000000000000000000000000000000E5 -S315400401D000000000000000000000000000000000D5 -S315400401E000000000000000000000000000000000C5 -S315400401F000000000000000000000000000000000B5 -S3154004020000000000000000000000000000000000A4 -S315400402100000000000000000000000000000000094 -S315400402200000000000000000000000000000000084 -S315400402300000000000000000000000000000000074 -S315400402400000000000000000000000000000000064 -S315400402500000000000000000000000000000000054 -S315400402600000000000000000000000000000000044 -S315400402700000000000000000000000000000000034 -S315400402800000000000000000000000000000000024 -S315400402900000000000000000000000000000000014 -S315400402A00000000000000000000000000000000004 -S315400402B000000000000000000000000000000000F4 -S315400402C000000000000000000000000000000000E4 -S315400402D000000000000000000000000000000000D4 -S315400402E000000000000000000000000000000000C4 -S315400402F000000000000000000000000000000000B4 -S3154004030000000000000000000000000000000000A3 -S315400403100000000000000000000000000000000093 -S315400403200000000000000000000000000000000083 -S315400403300000000000000000000000000000000073 -S315400403400000000000000000000000000000000063 -S315400403500000000000000000000000000000000053 -S315400403600000000000000000000000000000000043 -S315400403700000000000000000000000000000000033 -S315400403800000000000000000000000000000000023 -S315400403900000000000000000000000000000000013 -S315400403A00000000000000000000000000000000003 -S315400403B000000000000000000000000000000000F3 -S315400403C000000000000000000000000000000000E3 -S315400403D000000000000000000000000000000000D3 -S315400403E000000000000000000000000000000000C3 -S315400403F000000000000000000000000000000000B3 -S3154004040000000000000000000000000000000000A2 -S315400404100000000000000000000000000000000092 -S315400404200000000000000000000000000000000082 -S315400404300000000000000000000000000000000072 -S315400404400000000000000000000000000000000062 -S315400404500000000000000000000000000000000052 -S315400404600000000000000000000000000000000042 -S315400404700000000000000000000000000000000032 -S315400404800000000000000000000000000000000022 -S315400404900000000000000000000000000000000012 -S315400404A00000000000000000000000000000000002 -S315400404B000000000000000000000000000000000F2 -S315400404C000000000000000000000000000000000E2 -S315400404D000000000000000000000000000000000D2 -S315400404E000000000000000000000000000000000C2 -S315400404F000000000000000000000000000000000B2 -S3154004050000000000000000000000000000000000A1 -S315400405100000000000000000000000000000000091 -S315400405200000000000000000000000000000000081 -S315400405300000000000000000000000000000000071 -S315400405400000000000000000000000000000000061 -S315400405500000000000000000000000000000000051 -S315400405600000000000000000000000000000000041 -S315400405700000000000000000000000000000000031 -S315400405800000000000000000000000000000000021 -S315400405900000000000000000000000000000000011 -S315400405A00000000000000000000000000000000001 -S315400405B000000000000000000000000000000000F1 -S315400405C000000000000000000000000000000000E1 -S315400405D000000000000000000000000000000000D1 -S315400405E000000000000000000000000000000000C1 -S315400405F000000000000000000000000000000000B1 -S3154004060000000000000000000000000000000000A0 -S315400406100000000000000000000000000000000090 -S315400406200000000000000000000000000000000080 -S315400406300000000000000000000000000000000070 -S315400406400000000000000000000000000000000060 -S315400406500000000000000000000000000000000050 -S315400406600000000000000000000000000000000040 -S315400406700000000000000000000000000000000030 -S315400406800000000000000000000000000000000020 -S315400406900000000000000000000000000000000010 -S315400406A00000000000000000000000000000000000 -S315400406B000000000000000000000000000000000F0 -S315400406C000000000000000000000000000000000E0 -S315400406D000000000000000000000000000000000D0 -S315400406E000000000000000000000000000000000C0 -S315400406F000000000000000000000000000000000B0 -S31540040700000000000000000000000000000000009F -S31540040710000000000000000000000000000000008F -S31540040720000000000000000000000000000000007F -S31540040730000000000000000000000000000000006F -S31540040740000000000000000000000000000000005F -S31540040750000000000000000000000000000000004F -S31540040760000000000000000000000000000000003F -S31540040770000000000000000000000000000000002F -S31540040780000000000000000000000000000000001F -S31540040790000000000000000000000000000000000F -S315400407A000000000000000000000000000000000FF -S315400407B000000000000000000000000000000000EF -S315400407C000000000000000000000000000000000DF -S315400407D000000000000000000000000000000000CF -S315400407E000000000000000000000000000000000BF -S315400407F000000000000000000000000000000000AF -S31540040800000000000000000000000000000000009E -S31540040810000000000000000000000000000000008E -S31540040820000000000000000000000000000000007E -S31540040830000000000000000000000000000000006E -S31540040840000000000000000000000000000000005E -S31540040850000000000000000000000000000000004E -S31540040860000000000000000000000000000000003E -S31540040870000000000000000000000000000000002E -S31540040880000000000000000000000000000000001E -S31540040890000000000000000000000000000000000E -S315400408A000000000000000000000000000000000FE -S315400408B000000000000000000000000000000000EE -S315400408C000000000000000000000000000000000DE -S315400408D000000000000000000000000000000000CE -S315400408E000000000000000000000000000000000BE -S315400408F000000000000000000000000000000000AE -S31540040900000000000000000000000000000000009D -S31540040910000000000000000000000000000000008D -S31540040920000000000000000000000000000000007D -S31540040930000000000000000000000000000000006D -S31540040940000000000000000000000000000000005D -S31540040950000000000000000000000000000000004D -S31540040960000000000000000000000000000000003D -S31540040970000000000000000000000000000000002D -S31540040980000000000000000000000000000000001D -S31540040990000000000000000000000000000000000D -S315400409A000000000000000000000000000000000FD -S315400409B000000000000000000000000000000000ED -S315400409C000000000000000000000000000000000DD -S315400409D000000000000000000000000000000000CD -S315400409E000000000000000000000000000000000BD -S315400409F000000000000000000000000000000000AD -S31540040A00000000000000000000000000000000009C -S31540040A10000000000000000000000000000000008C -S31540040A20000000000000000000000000000000007C -S31540040A30000000000000000000000000000000006C -S31540040A40000000000000000000000000000000005C -S31540040A50000000000000000000000000000000004C -S31540040A60000000000000000000000000000000003C -S31540040A70000000000000000000000000000000002C -S31540040A80000000000000000000000000000000001C -S31540040A90000000000000000000000000000000000C -S31540040AA000000000000000000000000000000000FC -S31540040AB000000000000000000000000000000000EC -S31540040AC000000000000000000000000000000000DC -S31540040AD000000000000000000000000000000000CC -S31540040AE000000000000000000000000000000000BC -S31540040AF000000000000000000000000000000000AC -S31540040B00000000000000000000000000000000009B -S31540040B10000000000000000000000000000000008B -S31540040B20000000000000000000000000000000007B -S31540040B30000000000000000000000000000000006B -S31540040B40000000000000000000000000000000005B -S31540040B50000000000000000000000000000000004B -S31540040B60000000000000000000000000000000003B -S31540040B70000000000000000000000000000000002B -S31540040B80000000000000000000000000000000001B -S31540040B90000000000000000000000000000000000B -S31540040BA000000000000000000000000000000000FB -S31540040BB000000000000000000000000000000000EB -S31540040BC000000000000000000000000000000000DB -S31540040BD000000000000000000000000000000000CB -S31540040BE000000000000000000000000000000000BB -S31540040BF000000000000000000000000000000000AB -S31540040C00000000000000000000000000000000009A -S31540040C10000000000000000000000000000000008A -S31540040C20000000000000000000000000000000007A -S31540040C30000000000000000000000000000000006A -S31540040C40000000000000000000000000000000005A -S31540040C50000000000000000000000000000000004A -S31540040C60000000000000000000000000000000003A -S31540040C70000000000000000000000000000000002A -S31540040C80000000000000000000000000000000001A -S31540040C90000000000000000000000000000000000A -S31540040CA000000000000000000000000000000000FA -S31540040CB000000000000000000000000000000000EA -S31540040CC000000000000000000000000000000000DA -S31540040CD000000000000000000000000000000000CA -S31540040CE000000000000000000000000000000000BA -S31540040CF000000000000000000000000000000000AA -S31540040D000000000000000000000000000000000099 -S31540040D100000000000000000000000000000000089 -S31540040D200000000000000000000000000000000079 -S31540040D300000000000000000000000000000000069 -S31540040D400000000000000000000000000000000059 -S31540040D500000000000000000000000000000000049 -S31540040D600000000000000000000000000000000039 -S31540040D700000000000000000000000000000000029 -S31540040D800000000000000000000000000000000019 -S31540040D900000000000000000000000000000000009 -S31540040DA000000000000000000000000000000000F9 -S31540040DB000000000000000000000000000000000E9 -S31540040DC000000000000000000000000000000000D9 -S31540040DD000000000000000000000000000000000C9 -S31540040DE000000000000000000000000000000000B9 -S31540040DF000000000000000000000000000000000A9 -S31540040E000000000000000000000000000000000098 -S31540040E100000000000000000000000000000000088 -S31540040E200000000000000000000000000000000078 -S31540040E300000000000000000000000000000000068 -S31540040E400000000000000000000000000000000058 -S31540040E500000000000000000000000000000000048 -S31540040E600000000000000000000000000000000038 -S31540040E700000000000000000000000000000000028 -S31540040E800000000000000000000000000000000018 -S31540040E900000000000000000000000000000000008 -S31540040EA000000000000000000000000000000000F8 -S31540040EB000000000000000000000000000000000E8 -S31540040EC000000000000000000000000000000000D8 -S31540040ED000000000000000000000000000000000C8 -S31540040EE000000000000000000000000000000000B8 -S31540040EF000000000000000000000000000000000A8 -S31540040F000000000000000000000000000000000097 -S31540040F100000000000000000000000000000000087 -S31540040F200000000000000000000000000000000077 -S31540040F300000000000000000000000000000000067 -S31540040F400000000000000000000000000000000057 -S31540040F500000000000000000000000000000000047 -S31540040F600000000000000000000000000000000037 -S31540040F700000000000000000000000000000000027 -S31540040F800000000000000000000000000000000017 -S31540040F900000000000000000000000000000000007 -S31540040FA000000000000000000000000000000000F7 -S31540040FB000000000000000000000000000000000E7 -S31540040FC000000000000000000000000000000000D7 -S31540040FD000000000000000000000000000000000C7 -S31540040FE000000000000000000000000000000000B7 -S31540040FF000000000000000000000000000000000A7 -S315400410000000000000000000000000000000000096 -S315400410100000000000000000000000000000000086 -S315400410200000000000000000000000000000000076 -S315400410300000000000000000000000000000000066 -S315400410400000000000000000000000000000000056 -S315400410500000000000000000000000000000000046 -S315400410600000000000000000000000000000000036 -S315400410700000000000000000000000000000000026 -S315400410800000000000000000000000000000000016 -S315400410900000000000000000000000000000000006 -S315400410A000000000000000000000000000000000F6 -S315400410B000000000000000000000000000000000E6 -S315400410C000000000000000000000000000000000D6 -S315400410D000000000000000000000000000000000C6 -S315400410E000000000000000000000000000000000B6 -S315400410F000000000000000000000000000000000A6 -S315400411000000000000000000000000000000000095 -S315400411100000000000000000000000000000000085 -S315400411200000000000000000000000000000000075 -S315400411300000000000000000000000000000000065 -S315400411400000000000000000000000000000000055 -S315400411500000000000000000000000000000000045 -S315400411600000000000000000000000000000000035 -S315400411700000000000000000000000000000000025 -S315400411800000000000000000000000000000000015 -S315400411900000000000000000000000000000000005 -S315400411A000000000000000000000000000000000F5 -S315400411B000000000000000000000000000000000E5 -S315400411C000000000000000000000000000000000D5 -S315400411D000000000000000000000000000000000C5 -S315400411E000000000000000000000000000000000B5 -S315400411F000000000000000000000000000000000A5 -S315400412000000000000000000000000000000000094 -S315400412100000000000000000000000000000000084 -S315400412200000000000000000000000000000000074 -S315400412300000000000000000000000000000000064 -S315400412400000000000000000000000000000000054 -S315400412500000000000000000000000000000000044 -S315400412600000000000000000000000000000000034 -S315400412700000000000000000000000000000000024 -S315400412800000000000000000000000000000000014 -S315400412900000000000000000000000000000000004 -S315400412A000000000000000000000000000000000F4 -S315400412B000000000000000000000000000000000E4 -S315400412C000000000000000000000000000000000D4 -S315400412D000000000000000000000000000000000C4 -S315400412E000000000000000000000000000000000B4 -S315400412F000000000000000000000000000000000A4 -S315400413000000000000000000000000000000000093 -S315400413100000000000000000000000000000000083 -S315400413200000000000000000000000000000000073 -S315400413300000000000000000000000000000000063 -S315400413400000000000000000000000000000000053 -S315400413500000000000000000000000000000000043 -S315400413600000000000000000000000000000000033 -S315400413700000000000000000000000000000000023 -S315400413800000000000000000000000000000000013 -S315400413900000000000000000000000000000000003 -S315400413A000000000000000000000000000000000F3 -S315400413B000000000000000000000000000000000E3 -S315400413C000000000000000000000000000000000D3 -S315400413D000000000000000000000000000000000C3 -S315400413E000000000000000000000000000000000B3 -S315400413F000000000000000000000000000000000A3 -S315400414000000000000000000000000000000000092 -S315400414100000000000000000000000000000000082 -S315400414200000000000000000000000000000000072 -S315400414300000000000000000000000000000000062 -S315400414400000000000000000000000000000000052 -S315400414500000000000000000000000000000000042 -S315400414600000000000000000000000000000000032 -S315400414700000000000000000000000000000000022 -S315400414800000000000000000000000000000000012 -S315400414900000000000000000000000000000000002 -S315400414A000000000000000000000000000000000F2 -S315400414B000000000000000000000000000000000E2 -S315400414C000000000000000000000000000000000D2 -S315400414D000000000000000000000000000000000C2 -S315400414E000000000000000000000000000000000B2 -S315400414F000000000000000000000000000000000A2 -S315400415000000000000000000000000000000000091 -S315400415100000000000000000000000000000000081 -S315400415200000000000000000000000000000000071 -S315400415300000000000000000000000000000000061 -S315400415400000000000000000000000000000000051 -S315400415500000000000000000000000000000000041 -S315400415600000000000000000000000000000000031 -S315400415700000000000000000000000000000000021 -S315400415800000000000000000000000000000000011 -S315400415900000000000000000000000000000000001 -S315400415A000000000000000000000000000000000F1 -S315400415B000000000000000000000000000000000E1 -S315400415C000000000000000000000000000000000D1 -S315400415D000000000000000000000000000000000C1 -S315400415E000000000000000000000000000000000B1 -S315400415F000000000000000000000000000000000A1 -S315400416000000000000000000000000000000000090 -S315400416100000000000000000000000000000000080 -S315400416200000000000000000000000000000000070 -S315400416300000000000000000000000000000000060 -S315400416400000000000000000000000000000000050 -S315400416500000000000000000000000000000000040 -S315400416600000000000000000000000000000000030 -S315400416700000000000000000000000000000000020 -S315400416800000000000000000000000000000000010 -S315400416900000000000000000000000000000000000 -S315400416A000000000000000000000000000000000F0 -S315400416B000000000000000000000000000000000E0 -S315400416C000000000000000000000000000000000D0 -S315400416D000000000000000000000000000000000C0 -S315400416E000000000000000000000000000000000B0 -S315400416F000000000000000000000000000000000A0 -S31540041700000000000000000000000000000000008F -S31540041710000000000000000000000000000000007F -S31540041720000000000000000000000000000000006F -S31540041730000000000000000000000000000000005F -S31540041740000000000000000000000000000000004F -S31540041750000000000000000000000000000000003F -S31540041760000000000000000000000000000000002F -S31540041770000000000000000000000000000000001F -S31540041780000000000000000000000000000000000F -S3154004179000000000000000000000000000000000FF -S315400417A000000000000000000000000000000000EF -S315400417B000000000000000000000000000000000DF -S315400417C000000000000000000000000000000000CF -S315400417D000000000000000000000000000000000BF -S315400417E000000000000000000000000000000000AF -S315400417F0000000000000000000000000000000009F -S31540041800000000000000000000000000000000008E -S31540041810000000000000000000000000000000007E -S31540041820000000000000000000000000000000006E -S31540041830000000000000000000000000000000005E -S31540041840000000000000000000000000000000004E -S31540041850000000000000000000000000000000003E -S31540041860000000000000000000000000000000002E -S31540041870000000000000000000000000000000001E -S31540041880000000000000000000000000000000000E -S3154004189000000000000000000000000000000000FE -S315400418A000000000000000000000000000000000EE -S315400418B000000000000000000000000000000000DE -S315400418C000000000000000000000000000000000CE -S315400418D000000000000000000000000000000000BE -S315400418E000000000000000000000000000000000AE -S315400418F0000000000000000000000000000000009E -S31540041900000000000000000000000000000000008D -S31540041910000000000000000000000000000000007D -S31540041920000000000000000000000000000000006D -S31540041930000000000000000000000000000000005D -S31540041940000000000000000000000000000000004D -S31540041950000000000000000000000000000000003D -S31540041960000000000000000000000000000000002D -S31540041970000000000000000000000000000000001D -S31540041980000000000000000000000000000000000D -S3154004199000000000000000000000000000000000FD -S315400419A000000000000000000000000000000000ED -S315400419B000000000000000000000000000000000DD -S315400419C000000000000000000000000000000000CD -S315400419D000000000000000000000000000000000BD -S315400419E000000000000000000000000000000000AD -S315400419F0000000000000000000000000000000009D -S31540041A00000000000000000000000000000000008C -S31540041A10000000000000000000000000000000007C -S31540041A20000000000000000000000000000000006C -S31540041A30000000000000000000000000000000005C -S31540041A40000000000000000000000000000000004C -S31540041A50000000000000000000000000000000003C -S31540041A60000000000000000000000000000000002C -S31540041A70000000000000000000000000000000001C -S31540041A80000000000000000000000000000000000C -S31540041A9000000000000000000000000000000000FC -S31540041AA000000000000000000000000000000000EC -S31540041AB000000000000000000000000000000000DC -S31540041AC000000000000000000000000000000000CC -S31540041AD000000000000000000000000000000000BC -S31540041AE000000000000000000000000000000000AC -S31540041AF0000000000000000000000000000000009C -S31540041B00000000000000000000000000000000008B -S31540041B10000000000000000000000000000000007B -S31540041B20000000000000000000000000000000006B -S31540041B30000000000000000000000000000000005B -S31540041B40000000000000000000000000000000004B -S31540041B50000000000000000000000000000000003B -S31540041B60000000000000000000000000000000002B -S31540041B70000000000000000000000000000000001B -S31540041B80000000000000000000000000000000000B -S31540041B9000000000000000000000000000000000FB -S31540041BA000000000000000000000000000000000EB -S31540041BB000000000000000000000000000000000DB -S31540041BC000000000000000000000000000000000CB -S31540041BD000000000000000000000000000000000BB -S31540041BE000000000000000000000000000000000AB -S31540041BF0000000000000000000000000000000009B -S31540041C00000000000000000000000000000000008A -S31540041C10000000000000000000000000000000007A -S31540041C20000000000000000000000000000000006A -S31540041C30000000000000000000000000000000005A -S31540041C40000000000000000000000000000000004A -S31540041C50000000000000000000000000000000003A -S31540041C60000000000000000000000000000000002A -S31540041C70000000000000000000000000000000001A -S31540041C80000000000000000000000000000000000A -S31540041C9000000000000000000000000000000000FA -S31540041CA000000000000000000000000000000000EA -S31540041CB000000000000000000000000000000000DA -S31540041CC000000000000000000000000000000000CA -S31540041CD000000000000000000000000000000000BA -S31540041CE000000000000000000000000000000000AA -S31540041CF0000000000000000000000000000000009A -S31540041D000000000000000000000000000000000089 -S31540041D100000000000000000000000000000000079 -S31540041D200000000000000000000000000000000069 -S31540041D300000000000000000000000000000000059 -S31540041D400000000000000000000000000000000049 -S31540041D500000000000000000000000000000000039 -S31540041D600000000000000000000000000000000029 -S31540041D700000000000000000000000000000000019 -S31540041D800000000000000000000000000000000009 -S31540041D9000000000000000000000000000000000F9 -S31540041DA000000000000000000000000000000000E9 -S31540041DB000000000000000000000000000000000D9 -S31540041DC000000000000000000000000000000000C9 -S31540041DD000000000000000000000000000000000B9 -S31540041DE000000000000000000000000000000000A9 -S31540041DF00000000000000000000000000000000099 -S31540041E000000000000000000000000000000000088 -S31540041E100000000000000000000000000000000078 -S31540041E200000000000000000000000000000000068 -S31540041E300000000000000000000000000000000058 -S31540041E400000000000000000000000000000000048 -S31540041E500000000000000000000000000000000038 -S31540041E600000000000000000000000000000000028 -S31540041E700000000000000000000000000000000018 -S31540041E800000000000000000000000000000000008 -S31540041E9000000000000000000000000000000000F8 -S31540041EA000000000000000000000000000000000E8 -S31540041EB000000000000000000000000000000000D8 -S31540041EC000000000000000000000000000000000C8 -S31540041ED000000000000000000000000000000000B8 -S31540041EE000000000000000000000000000000000A8 -S31540041EF00000000000000000000000000000000098 -S31540041F000000000000000000000000000000000087 -S31540041F100000000000000000000000000000000077 -S31540041F200000000000000000000000000000000067 -S31540041F300000000000000000000000000000000057 -S31540041F400000000000000000000000000000000047 -S31540041F500000000000000000000000000000000037 -S31540041F600000000000000000000000000000000027 -S31540041F700000000000000000000000000000000017 -S31540041F800000000000000000000000000000000007 -S31540041F9000000000000000000000000000000000F7 -S31540041FA000000000000000000000000000000000E7 -S31540041FB000000000000000000000000000000000D7 -S31540041FC000000000000000000000000000000000C7 -S31540041FD000000000000000000000000000000000B7 -S31540041FE000000000000000000000000000000000A7 -S31540041FF00000000000000000000000000000000097 -S315400420000000000000000000000000000000000086 -S315400420100000000000000000000000000000000076 -S315400420200000000000000000000000000000000066 -S315400420300000000000000000000000000000000056 -S315400420400000000000000000000000000000000046 -S315400420500000000000000000000000000000000036 -S315400420600000000000000000000000000000000026 -S315400420700000000000000000000000000000000016 -S315400420800000000000000000000000000000000006 -S3154004209000000000000000000000000000000000F6 -S315400420A000000000000000000000000000000000E6 -S315400420B000000000000000000000000000000000D6 -S315400420C000000000000000000000000000000000C6 -S315400420D000000000000000000000000000000000B6 -S315400420E000000000000000000000000000000000A6 -S315400420F00000000000000000000000000000000096 -S315400421000000000000000000000000000000000085 -S315400421100000000000000000000000000000000075 -S315400421200000000000000000000000000000000065 -S315400421300000000000000000000000000000000055 -S315400421400000000000000000000000000000000045 -S315400421500000000000000000000000000000000035 -S315400421600000000000000000000000000000000025 -S315400421700000000000000000000000000000000015 -S315400421800000000000000000000000000000000005 -S3154004219000000000000000000000000000000000F5 -S315400421A000000000000000000000000000000000E5 -S315400421B000000000000000000000000000000000D5 -S315400421C000000000000000000000000000000000C5 -S315400421D000000000000000000000000000000000B5 -S315400421E000000000000000000000000000000000A5 -S315400421F00000000000000000000000000000000095 -S315400422000000000000000000000000000000000084 -S315400422100000000000000000000000000000000074 -S315400422200000000000000000000000000000000064 -S315400422300000000000000000000000000000000054 -S315400422400000000000000000000000000000000044 -S315400422500000000000000000000000000000000034 -S315400422600000000000000000000000000000000024 -S315400422700000000000000000000000000000000014 -S315400422800000000000000000000000000000000004 -S3154004229000000000000000000000000000000000F4 -S315400422A000000000000000000000000000000000E4 -S315400422B000000000000000000000000000000000D4 -S315400422C000000000000000000000000000000000C4 -S315400422D000000000000000000000000000000000B4 -S315400422E000000000000000000000000000000000A4 -S315400422F00000000000000000000000000000000094 -S315400423000000000000000000000000000000000083 -S315400423100000000000000000000000000000000073 -S315400423200000000000000000000000000000000063 -S315400423300000000000000000000000000000000053 -S315400423400000000000000000000000000000000043 -S315400423500000000000000000000000000000000033 -S315400423600000000000000000000000000000000023 -S315400423700000000000000000000000000000000013 -S315400423800000000000000000000000000000000003 -S3154004239000000000000000000000000000000000F3 -S315400423A000000000000000000000000000000000E3 -S315400423B000000000000000000000000000000000D3 -S315400423C000000000000000000000000000000000C3 -S315400423D000000000000000000000000000000000B3 -S315400423E000000000000000000000000000000000A3 -S315400423F00000000000000000000000000000000093 -S315400424000000000000000000000000000000000082 -S315400424100000000000000000000000000000000072 -S315400424200000000000000000000000000000000062 -S315400424300000000000000000000000000000000052 -S315400424400000000000000000000000000000000042 -S315400424500000000000000000000000000000000032 -S315400424600000000000000000000000000000000022 -S315400424700000000000000000000000000000000012 -S315400424800000000000000000000000000000000002 -S3154004249000000000000000000000000000000000F2 -S315400424A000000000000000000000000000000000E2 -S315400424B000000000000000000000000000000000D2 -S315400424C000000000000000000000000000000000C2 -S315400424D000000000000000000000000000000000B2 -S315400424E000000000000000000000000000000000A2 -S315400424F00000000000000000000000000000000092 -S315400425000000000000000000000000000000000081 -S315400425100000000000000000000000000000000071 -S315400425200000000000000000000000000000000061 -S315400425300000000000000000000000000000000051 -S315400425400000000000000000000000000000000041 -S315400425500000000000000000000000000000000031 -S315400425600000000000000000000000000000000021 -S315400425700000000000000000000000000000000011 -S315400425800000000000000000000000000000000001 -S3154004259000000000000000000000000000000000F1 -S315400425A000000000000000000000000000000000E1 -S315400425B000000000000000000000000000000000D1 -S315400425C000000000000000000000000000000000C1 -S315400425D000000000000000000000000000000000B1 -S315400425E000000000000000000000000000000000A1 -S315400425F00000000000000000000000000000000091 -S315400426000000000000000000000000000000000080 -S315400426100000000000000000000000000000000070 -S315400426200000000000000000000000000000000060 -S315400426300000000000000000000000000000000050 -S315400426400000000000000000000000000000000040 -S315400426500000000000000000000000000000000030 -S315400426600000000000000000000000000000000020 -S315400426700000000000000000000000000000000010 -S315400426800000000000000000000000000000000000 -S3154004269000000000000000000000000000000000F0 -S315400426A000000000000000000000000000000000E0 -S315400426B000000000000000000000000000000000D0 -S315400426C000000000000000000000000000000000C0 -S315400426D000000000000000000000000000000000B0 -S315400426E000000000000000000000000000000000A0 -S315400426F00000000000000000000000000000000090 -S31540042700000000000000000000000000000000007F -S31540042710000000000000000000000000000000006F -S31540042720000000000000000000000000000000005F -S31540042730000000000000000000000000000000004F -S31540042740000000000000000000000000000000003F -S31540042750000000000000000000000000000000002F -S31540042760000000000000000000000000000000001F -S31540042770000000000000000000000000000000000F -S3154004278000000000000000000000000000000000FF -S3154004279000000000000000000000000000000000EF -S315400427A000000000000000000000000000000000DF -S315400427B000000000000000000000000000000000CF -S315400427C000000000000000000000000000000000BF -S315400427D000000000000000000000000000000000AF -S315400427E0000000000000000000000000000000009F -S315400427F0000000000000000000000000000000008F -S31540042800000000000000000000000000000000007E -S31540042810000000000000000000000000000000006E -S31540042820000000000000000000000000000000005E -S31540042830000000000000000000000000000000004E -S31540042840000000000000000000000000000000003E -S31540042850000000000000000000000000000000002E -S31540042860000000000000000000000000000000001E -S31540042870000000000000000000000000000000000E -S3154004288000000000000000000000000000000000FE -S3154004289000000000000000000000000000000000EE -S315400428A000000000000000000000000000000000DE -S315400428B000000000000000000000000000000000CE -S315400428C000000000000000000000000000000000BE -S315400428D000000000000000000000000000000000AE -S315400428E0000000000000000000000000000000009E -S315400428F0000000000000000000000000000000008E -S31540042900000000000000000000000000000000007D -S31540042910000000000000000000000000000000006D -S31540042920000000000000000000000000000000005D -S31540042930000000000000000000000000000000004D -S31540042940000000000000000000000000000000003D -S31540042950000000000000000000000000000000002D -S31540042960000000000000000000000000000000001D -S31540042970000000000000000000000000000000000D -S3154004298000000000000000000000000000000000FD -S3154004299000000000000000000000000000000000ED -S315400429A000000000000000000000000000000000DD -S315400429B000000000000000000000000000000000CD -S315400429C000000000000000000000000000000000BD -S315400429D000000000000000000000000000000000AD -S315400429E0000000000000000000000000000000009D -S315400429F0000000000000000000000000000000008D -S31540042A00000000000000000000000000000000007C -S31540042A10000000000000000000000000000000006C -S31540042A20000000000000000000000000000000005C -S31540042A30000000000000000000000000000000004C -S31540042A40000000000000000000000000000000003C -S31540042A50000000000000000000000000000000002C -S31540042A60000000000000000000000000000000001C -S31540042A70000000000000000000000000000000000C -S31540042A8000000000000000000000000000000000FC -S31540042A9000000000000000000000000000000000EC -S31540042AA000000000000000000000000000000000DC -S31540042AB000000000000000000000000000000000CC -S31540042AC000000000000000000000000000000000BC -S31540042AD000000000000000000000000000000000AC -S31540042AE0000000000000000000000000000000009C -S31540042AF0000000000000000000000000000000008C -S31540042B00000000000000000000000000000000007B -S31540042B10000000000000000000000000000000006B -S31540042B20000000000000000000000000000000005B -S31540042B30000000000000000000000000000000004B -S31540042B40000000000000000000000000000000003B -S31540042B50000000000000000000000000000000002B -S31540042B60000000000000000000000000000000001B -S31540042B70000000000000000000000000000000000B -S31540042B8000000000000000000000000000000000FB -S31540042B9000000000000000000000000000000000EB -S31540042BA000000000000000000000000000000000DB -S31540042BB000000000000000000000000000000000CB -S31540042BC000000000000000000000000000000000BB -S31540042BD000000000000000000000000000000000AB -S31540042BE0000000000000000000000000000000009B -S31540042BF0000000000000000000000000000000008B -S31540042C00000000000000000000000000000000007A -S31540042C10000000000000000000000000000000006A -S31540042C20000000000000000000000000000000005A -S31540042C30000000000000000000000000000000004A -S31540042C40000000000000000000000000000000003A -S31540042C50000000000000000000000000000000002A -S31540042C60000000000000000000000000000000001A -S31540042C70000000000000000000000000000000000A -S31540042C8000000000000000000000000000000000FA -S31540042C9000000000000000000000000000000000EA -S31540042CA000000000000000000000000000000000DA -S31540042CB000000000000000000000000000000000CA -S31540042CC000000000000000000000000000000000BA -S31540042CD000000000000000000000000000000000AA -S31540042CE0000000000000000000000000000000009A -S31540042CF0000000000000000000000000000000008A -S31540042D000000000000000000000000000000000079 -S31540042D100000000000000000000000000000000069 -S31540042D200000000000000000000000000000000059 -S31540042D300000000000000000000000000000000049 -S31540042D400000000000000000000000000000000039 -S31540042D500000000000000000000000000000000029 -S31540042D600000000000000000000000000000000019 -S31540042D700000000000000000000000000000000009 -S31540042D8000000000000000000000000000000000F9 -S31540042D9000000000000000000000000000000000E9 -S31540042DA000000000000000000000000000000000D9 -S31540042DB000000000000000000000000000000000C9 -S31540042DC000000000000000000000000000000000B9 -S31540042DD000000000000000000000000000000000A9 -S31540042DE00000000000000000000000000000000099 -S31540042DF00000000000000000000000000000000089 -S31540042E000000000000000000000000000000000078 -S31540042E100000000000000000000000000000000068 -S31540042E200000000000000000000000000000000058 -S31540042E300000000000000000000000000000000048 -S31540042E400000000000000000000000000000000038 -S31540042E500000000000000000000000000000000028 -S31540042E600000000000000000000000000000000018 -S31540042E700000000000000000000000000000000008 -S31540042E8000000000000000000000000000000000F8 -S31540042E9000000000000000000000000000000000E8 -S31540042EA000000000000000000000000000000000D8 -S31540042EB000000000000000000000000000000000C8 -S31540042EC000000000000000000000000000000000B8 -S31540042ED000000000000000000000000000000000A8 -S31540042EE00000000000000000000000000000000098 -S31540042EF00000000000000000000000000000000088 -S31540042F000000000000000000000000000000000077 -S31540042F100000000000000000000000000000000067 -S31540042F200000000000000000000000000000000057 -S31540042F300000000000000000000000000000000047 -S31540042F400000000000000000000000000000000037 -S31540042F500000000000000000000000000000000027 -S31540042F600000000000000000000000000000000017 -S31540042F700000000000000000000000000000000007 -S31540042F8000000000000000000000000000000000F7 -S31540042F9000000000000000000000000000000000E7 -S31540042FA000000000000000000000000000000000D7 -S31540042FB000000000000000000000000000000000C7 -S31540042FC000000000000000000000000000000000B7 -S31540042FD000000000000000000000000000000000A7 -S31540042FE00000000000000000000000000000000097 -S31540042FF00000000000000000000000000000000087 -S315400430000000000000000000000000000000000076 -S315400430100000000000000000000000000000000066 -S315400430200000000000000000000000000000000056 -S315400430300000000000000000000000000000000046 -S315400430400000000000000000000000000000000036 -S315400430500000000000000000000000000000000026 -S315400430600000000000000000000000000000000016 -S315400430700000000000000000000000000000000006 -S3154004308000000000000000000000000000000000F6 -S3154004309000000000000000000000000000000000E6 -S315400430A000000000000000000000000000000000D6 -S315400430B000000000000000000000000000000000C6 -S315400430C000000000000000000000000000000000B6 -S315400430D000000000000000000000000000000000A6 -S315400430E00000000000000000000000000000000096 -S315400430F00000000000000000000000000000000086 -S315400431000000000000000000000000000000000075 -S315400431100000000000000000000000000000000065 -S315400431200000000000000000000000000000000055 -S315400431300000000000000000000000000000000045 -S315400431400000000000000000000000000000000035 -S315400431500000000000000000000000000000000025 -S315400431600000000000000000000000000000000015 -S315400431700000000000000000000000000000000005 -S3154004318000000000000000000000000000000000F5 -S3154004319000000000000000000000000000000000E5 -S315400431A000000000000000000000000000000000D5 -S315400431B000000000000000000000000000000000C5 -S315400431C000000000000000000000000000000000B5 -S315400431D000000000000000000000000000000000A5 -S315400431E00000000000000000000000000000000095 -S315400431F00000000000000000000000000000000085 -S315400432000000000000000000000000000000000074 -S315400432100000000000000000000000000000000064 -S315400432200000000000000000000000000000000054 -S315400432300000000000000000000000000000000044 -S315400432400000000000000000000000000000000034 -S315400432500000000000000000000000000000000024 -S315400432600000000000000000000000000000000014 -S315400432700000000000000000000000000000000004 -S3154004328000000000000000000000000000000000F4 -S3154004329000000000000000000000000000000000E4 -S315400432A000000000000000000000000000000000D4 -S315400432B000000000000000000000000000000000C4 -S315400432C000000000000000000000000000000000B4 -S315400432D000000000000000000000000000000000A4 -S315400432E00000000000000000000000000000000094 -S315400432F00000000000000000000000000000000084 -S315400433000000000000000000000000000000000073 -S315400433100000000000000000000000000000000063 -S315400433200000000000000000000000000000000053 -S315400433300000000000000000000000000000000043 -S315400433400000000000000000000000000000000033 -S315400433500000000000000000000000000000000023 -S315400433600000000000000000000000000000000013 -S315400433700000000000000000000000000000000003 -S3154004338000000000000000000000000000000000F3 -S3154004339000000000000000000000000000000000E3 -S315400433A000000000000000000000000000000000D3 -S315400433B000000000000000000000000000000000C3 -S315400433C000000000000000000000000000000000B3 -S315400433D000000000000000000000000000000000A3 -S315400433E00000000000000000000000000000000093 -S315400433F00000000000000000000000000000000083 -S315400434000000000000000000000000000000000072 -S315400434100000000000000000000000000000000062 -S315400434200000000000000000000000000000000052 -S315400434300000000000000000000000000000000042 -S315400434400000000000000000000000000000000032 -S315400434500000000000000000000000000000000022 -S315400434600000000000000000000000000000000012 -S315400434700000000000000000000000000000000002 -S3154004348000000000000000000000000000000000F2 -S3154004349000000000000000000000000000000000E2 -S315400434A000000000000000000000000000000000D2 -S315400434B000000000000000000000000000000000C2 -S315400434C000000000000000000000000000000000B2 -S315400434D000000000000000000000000000000000A2 -S315400434E00000000000000000000000000000000092 -S315400434F00000000000000000000000000000000082 -S315400435000000000000000000000000000000000071 -S315400435100000000000000000000000000000000061 -S315400435200000000000000000000000000000000051 -S315400435300000000000000000000000000000000041 -S315400435400000000000000000000000000000000031 -S315400435500000000000000000000000000000000021 -S315400435600000000000000000000000000000000011 -S315400435700000000000000000000000000000000001 -S3154004358000000000000000000000000000000000F1 -S3154004359000000000000000000000000000000000E1 -S315400435A000000000000000000000000000000000D1 -S315400435B000000000000000000000000000000000C1 -S315400435C000000000000000000000000000000000B1 -S315400435D000000000000000000000000000000000A1 -S315400435E00000000000000000000000000000000091 -S315400435F00000000000000000000000000000000081 -S315400436000000000000000000000000000000000070 -S315400436100000000000000000000000000000000060 -S315400436200000000000000000000000000000000050 -S315400436300000000000000000000000000000000040 -S315400436400000000000000000000000000000000030 -S315400436500000000000000000000000000000000020 -S315400436600000000000000000000000000000000010 -S315400436700000000000000000000000000000000000 -S3154004368000000000000000000000000000000000F0 -S3154004369000000000000000000000000000000000E0 -S315400436A000000000000000000000000000000000D0 -S315400436B000000000000000000000000000000000C0 -S315400436C000000000000000000000000000000000B0 -S315400436D000000000000000000000000000000000A0 -S315400436E00000000000000000000000000000000090 -S315400436F00000000000000000000000000000000080 -S31540043700000000000000000000000000000000006F -S31540043710000000000000000000000000000000005F -S31540043720000000000000000000000000000000004F -S31540043730000000000000000000000000000000003F -S31540043740000000000000000000000000000000002F -S31540043750000000000000000000000000000000001F -S31540043760000000000000000000000000000000000F -S3154004377000000000000000000000000000000000FF -S3154004378000000000000000000000000000000000EF -S3154004379000000000000000000000000000000000DF -S315400437A000000000000000000000000000000000CF -S315400437B000000000000000000000000000000000BF -S315400437C000000000000000000000000000000000AF -S315400437D0000000000000000000000000000000009F -S315400437E0000000000000000000000000000000008F -S315400437F0000000000000000000000000000000007F -S31540043800000000000000000000000000000000006E -S31540043810000000000000000000000000000000005E -S31540043820000000000000000000000000000000004E -S31540043830000000000000000000000000000000003E -S31540043840000000000000000000000000000000002E -S31540043850000000000000000000000000000000001E -S31540043860000000000000000000000000000000000E -S3154004387000000000000000000000000000000000FE -S3154004388000000000000000000000000000000000EE -S3154004389000000000000000000000000000000000DE -S315400438A000000000000000000000000000000000CE -S315400438B000000000000000000000000000000000BE -S315400438C000000000000000000000000000000000AE -S315400438D0000000000000000000000000000000009E -S315400438E0000000000000000000000000000000008E -S315400438F0000000000000000000000000000000007E -S31540043900000000000000000000000000000000006D -S31540043910000000000000000000000000000000005D -S31540043920000000000000000000000000000000004D -S31540043930000000000000000000000000000000003D -S31540043940000000000000000000000000000000002D -S31540043950000000000000000000000000000000001D -S31540043960000000000000000000000000000000000D -S3154004397000000000000000000000000000000000FD -S3154004398000000000000000000000000000000000ED -S3154004399000000000000000000000000000000000DD -S315400439A000000000000000000000000000000000CD -S315400439B000000000000000000000000000000000BD -S315400439C000000000000000000000000000000000AD -S315400439D0000000000000000000000000000000009D -S315400439E0000000000000000000000000000000008D -S315400439F0000000000000000000000000000000007D -S31540043A00000000000000000000000000000000006C -S31540043A10000000000000000000000000000000005C -S31540043A20000000000000000000000000000000004C -S31540043A30000000000000000000000000000000003C -S31540043A40000000000000000000000000000000002C -S31540043A50000000000000000000000000000000001C -S31540043A60000000000000000000000000000000000C -S31540043A7000000000000000000000000000000000FC -S31540043A8000000000000000000000000000000000EC -S31540043A9000000000000000000000000000000000DC -S31540043AA000000000000000000000000000000000CC -S31540043AB000000000000000000000000000000000BC -S31540043AC000000000000000000000000000000000AC -S31540043AD0000000000000000000000000000000009C -S31540043AE0000000000000000000000000000000008C -S31540043AF0000000000000000000000000000000007C -S31540043B00000000000000000000000000000000006B -S31540043B10000000000000000000000000000000005B -S31540043B20000000000000000000000000000000004B -S31540043B30000000000000000000000000000000003B -S31540043B40000000000000000000000000000000002B -S31540043B50000000000000000000000000000000001B -S31540043B60000000000000000000000000000000000B -S31540043B7000000000000000000000000000000000FB -S31540043B8000000000000000000000000000000000EB -S31540043B9000000000000000000000000000000000DB -S31540043BA000000000000000000000000000000000CB -S31540043BB000000000000000000000000000000000BB -S31540043BC000000000000000000000000000000000AB -S31540043BD0000000000000000000000000000000009B -S31540043BE0000000000000000000000000000000008B -S31540043BF0000000000000000000000000000000007B -S31540043C00000000000000000000000000000000006A -S31540043C10000000000000000000000000000000005A -S31540043C20000000000000000000000000000000004A -S31540043C30000000000000000000000000000000003A -S31540043C40000000000000000000000000000000002A -S31540043C50000000000000000000000000000000001A -S31540043C60000000000000000000000000000000000A -S31540043C7000000000000000000000000000000000FA -S31540043C8000000000000000000000000000000000EA -S31540043C9000000000000000000000000000000000DA -S31540043CA000000000000000000000000000000000CA -S31540043CB000000000000000000000000000000000BA -S31540043CC000000000000000000000000000000000AA -S31540043CD0000000000000000000000000000000009A -S31540043CE0000000000000000000000000000000008A -S31540043CF0000000000000000000000000000000007A -S31540043D000000000000000000000000000000000069 -S31540043D100000000000000000000000000000000059 -S31540043D200000000000000000000000000000000049 -S31540043D300000000000000000000000000000000039 -S31540043D400000000000000000000000000000000029 -S31540043D500000000000000000000000000000000019 -S31540043D600000000000000000000000000000000009 -S31540043D7000000000000000000000000000000000F9 -S31540043D8000000000000000000000000000000000E9 -S31540043D9000000000000000000000000000000000D9 -S31540043DA000000000000000000000000000000000C9 -S31540043DB000000000000000000000000000000000B9 -S31540043DC000000000000000000000000000000000A9 -S31540043DD00000000000000000000000000000000099 -S31540043DE00000000000000000000000000000000089 -S31540043DF00000000000000000000000000000000079 -S31540043E000000000000000000000000000000000068 -S31540043E100000000000000000000000000000000058 -S31540043E200000000000000000000000000000000048 -S31540043E300000000000000000000000000000000038 -S31540043E400000000000000000000000000000000028 -S31540043E500000000000000000000000000000000018 -S31540043E600000000000000000000000000000000008 -S31540043E7000000000000000000000000000000000F8 -S31540043E8000000000000000000000000000000000E8 -S31540043E9000000000000000000000000000000000D8 -S31540043EA000000000000000000000000000000000C8 -S31540043EB000000000000000000000000000000000B8 -S31540043EC000000000000000000000000000000000A8 -S31540043ED00000000000000000000000000000000098 -S31540043EE00000000000000000000000000000000088 -S31540043EF00000000000000000000000000000000078 -S31540043F000000000000000000000000000000000067 -S31540043F100000000000000000000000000000000057 -S31540043F200000000000000000000000000000000047 -S31540043F300000000000000000000000000000000037 -S31540043F400000000000000000000000000000000027 -S31540043F500000000000000000000000000000000017 -S31540043F600000000000000000000000000000000007 -S31540043F7000000000000000000000000000000000F7 -S31540043F8000000000000000000000000000000000E7 -S31540043F9000000000000000000000000000000000D7 -S31540043FA000000000000000000000000000000000C7 -S31540043FB000000000000000000000000000000000B7 -S31540043FC000000000000000000000000000000000A7 -S31540043FD00000000000000000000000000000000097 -S31540043FE00000000000000000000000000000000087 -S31540043FF00000000000000000000000000000000077 -S315400440000000000000000000000000000000000066 -S315400440100000000000000000000000000000000056 -S315400440200000000000000000000000000000000046 -S315400440300000000000000000000000000000000036 -S315400440400000000000000000000000000000000026 -S315400440500000000000000000000000000000000016 -S315400440600000000000000000000000000000000006 -S3154004407000000000000000000000000000000000F6 -S3154004408000000000000000000000000000000000E6 -S3154004409000000000000000000000000000000000D6 -S315400440A000000000000000000000000000000000C6 -S315400440B000000000000000000000000000000000B6 -S315400440C000000000000000000000000000000000A6 -S315400440D00000000000000000000000000000000096 -S315400440E00000000000000000000000000000000086 -S315400440F00000000000000000000000000000000076 -S315400441000000000000000000000000000000000065 -S315400441100000000000000000000000000000000055 -S315400441200000000000000000000000000000000045 -S315400441300000000000000000000000000000000035 -S315400441400000000000000000000000000000000025 -S315400441500000000000000000000000000000000015 -S315400441600000000000000000000000000000000005 -S3154004417000000000000000000000000000000000F5 -S3154004418000000000000000000000000000000000E5 -S3154004419000000000000000000000000000000000D5 -S315400441A000000000000000000000000000000000C5 -S315400441B000000000000000000000000000000000B5 -S315400441C000000000000000000000000000000000A5 -S315400441D00000000000000000000000000000000095 -S315400441E00000000000000000000000000000000085 -S315400441F00000000000000000000000000000000075 -S315400442000000000000000000000000000000000064 -S315400442100000000000000000000000000000000054 -S315400442200000000000000000000000000000000044 -S315400442300000000000000000000000000000000034 -S315400442400000000000000000000000000000000024 -S315400442500000000000000000000000000000000014 -S315400442600000000000000000000000000000000004 -S3154004427000000000000000000000000000000000F4 -S3154004428000000000000000000000000000000000E4 -S3154004429000000000000000000000000000000000D4 -S315400442A000000000000000000000000000000000C4 -S315400442B000000000000000000000000000000000B4 -S315400442C000000000000000000000000000000000A4 -S315400442D00000000000000000000000000000000094 -S315400442E00000000000000000000000000000000084 -S315400442F00000000000000000000000000000000074 -S315400443000000000000000000000000000000000063 -S315400443100000000000000000000000000000000053 -S315400443200000000000000000000000000000000043 -S315400443300000000000000000000000000000000033 -S315400443400000000000000000000000000000000023 -S315400443500000000000000000000000000000000013 -S315400443600000000000000000000000000000000003 -S3154004437000000000000000000000000000000000F3 -S3154004438000000000000000000000000000000000E3 -S3154004439000000000000000000000000000000000D3 -S315400443A000000000000000000000000000000000C3 -S315400443B000000000000000000000000000000000B3 -S315400443C000000000000000000000000000000000A3 -S315400443D00000000000000000000000000000000093 -S315400443E00000000000000000000000000000000083 -S315400443F00000000000000000000000000000000073 -S315400444000000000000000000000000000000000062 -S315400444100000000000000000000000000000000052 -S315400444200000000000000000000000000000000042 -S315400444300000000000000000000000000000000032 -S315400444400000000000000000000000000000000022 -S315400444500000000000000000000000000000000012 -S315400444600000000000000000000000000000000002 -S3154004447000000000000000000000000000000000F2 -S3154004448000000000000000000000000000000000E2 -S3154004449000000000000000000000000000000000D2 -S315400444A000000000000000000000000000000000C2 -S315400444B000000000000000000000000000000000B2 -S315400444C000000000000000000000000000000000A2 -S315400444D00000000000000000000000000000000092 -S315400444E00000000000000000000000000000000082 -S315400444F00000000000000000000000000000000072 -S315400445000000000000000000000000000000000061 -S315400445100000000000000000000000000000000051 -S315400445200000000000000000000000000000000041 -S315400445300000000000000000000000000000000031 -S315400445400000000000000000000000000000000021 -S315400445500000000000000000000000000000000011 -S315400445600000000000000000000000000000000001 -S3154004457000000000000000000000000000000000F1 -S3154004458000000000000000000000000000000000E1 -S3154004459000000000000000000000000000000000D1 -S315400445A000000000000000000000000000000000C1 -S315400445B000000000000000000000000000000000B1 -S315400445C000000000000000000000000000000000A1 -S315400445D00000000000000000000000000000000091 -S315400445E00000000000000000000000000000000081 -S315400445F00000000000000000000000000000000071 -S315400446000000000000000000000000000000000060 -S315400446100000000000000000000000000000000050 -S315400446200000000000000000000000000000000040 -S315400446300000000000000000000000000000000030 -S315400446400000000000000000000000000000000020 -S315400446500000000000000000000000000000000010 -S315400446600000000000000000000000000000000000 -S3154004467000000000000000000000000000000000F0 -S3154004468000000000000000000000000000000000E0 -S3154004469000000000000000000000000000000000D0 -S315400446A000000000000000000000000000000000C0 -S315400446B000000000000000000000000000000000B0 -S315400446C000000000000000000000000000000000A0 -S315400446D00000000000000000000000000000000090 -S315400446E00000000000000000000000000000000080 -S315400446F00000000000000000000000000000000070 -S31540044700000000000000000000000000000000005F -S31540044710000000000000000000000000000000004F -S31540044720000000000000000000000000000000003F -S31540044730000000000000000000000000000000002F -S31540044740000000000000000000000000000000001F -S31540044750000000000000000000000000000000000F -S3154004476000000000000000000000000000000000FF -S3154004477000000000000000000000000000000000EF -S3154004478000000000000000000000000000000000DF -S3154004479000000000000000000000000000000000CF -S315400447A000000000000000000000000000000000BF -S315400447B000000000000000000000000000000000AF -S315400447C0000000000000000000000000000000009F -S315400447D0000000000000000000000000000000008F -S315400447E0000000000000000000000000000000007F -S315400447F0000000000000000000000000000000006F -S31540044800000000000000000000000000000000005E -S31540044810000000000000000000000000000000004E -S31540044820000000000000000000000000000000003E -S31540044830000000000000000000000000000000002E -S31540044840000000000000000000000000000000001E -S31540044850000000000000000000000000000000000E -S3154004486000000000000000000000000000000000FE -S3154004487000000000000000000000000000000000EE -S3154004488000000000000000000000000000000000DE -S3154004489000000000000000000000000000000000CE -S315400448A000000000000000000000000000000000BE -S315400448B000000000000000000000000000000000AE -S315400448C0000000000000000000000000000000009E -S315400448D0000000000000000000000000000000008E -S315400448E0000000000000000000000000000000007E -S315400448F0000000000000000000000000000000006E -S31540044900000000000000000000000000000000005D -S31540044910000000000000000000000000000000004D -S31540044920000000000000000000000000000000003D -S31540044930000000000000000000000000000000002D -S31540044940000000000000000000000000000000001D -S31540044950000000000000000000000000000000000D -S3154004496000000000000000000000000000000000FD -S3154004497000000000000000000000000000000000ED -S3154004498000000000000000000000000000000000DD -S3154004499000000000000000000000000000000000CD -S315400449A000000000000000000000000000000000BD -S315400449B000000000000000000000000000000000AD -S315400449C0000000000000000000000000000000009D -S315400449D0000000000000000000000000000000008D -S315400449E0000000000000000000000000000000007D -S315400449F0000000000000000000000000000000006D -S31540044A00000000000000000000000000000000005C -S31540044A10000000000000000000000000000000004C -S31540044A20000000000000000000000000000000003C -S31540044A30000000000000000000000000000000002C -S31540044A40000000000000000000000000000000001C -S31540044A50000000000000000000000000000000000C -S31540044A6000000000000000000000000000000000FC -S31540044A7000000000000000000000000000000000EC -S31540044A8000000000000000000000000000000000DC -S31540044A9000000000000000000000000000000000CC -S31540044AA000000000000000000000000000000000BC -S31540044AB000000000000000000000000000000000AC -S31540044AC0000000000000000000000000000000009C -S31540044AD0000000000000000000000000000000008C -S31540044AE0000000000000000000000000000000007C -S31540044AF0000000000000000000000000000000006C -S31540044B00000000000000000000000000000000005B -S31540044B10000000000000000000000000000000004B -S31540044B20000000000000000000000000000000003B -S31540044B30000000000000000000000000000000002B -S31540044B40000000000000000000000000000000001B -S31540044B50000000000000000000000000000000000B -S31540044B6000000000000000000000000000000000FB -S31540044B7000000000000000000000000000000000EB -S31540044B8000000000000000000000000000000000DB -S31540044B9000000000000000000000000000000000CB -S31540044BA000000000000000000000000000000000BB -S31540044BB000000000000000000000000000000000AB -S31540044BC0000000000000000000000000000000009B -S31540044BD0000000000000000000000000000000008B -S31540044BE0000000000000000000000000000000007B -S31540044BF0000000000000000000000000000000006B -S31540044C00000000000000000000000000000000005A -S31540044C10000000000000000000000000000000004A -S31540044C20000000000000000000000000000000003A -S31540044C30000000000000000000000000000000002A -S31540044C40000000000000000000000000000000001A -S31540044C50000000000000000000000000000000000A -S31540044C6000000000000000000000000000000000FA -S31540044C7000000000000000000000000000000000EA -S31540044C8000000000000000000000000000000000DA -S31540044C9000000000000000000000000000000000CA -S31540044CA000000000000000000000000000000000BA -S31540044CB000000000000000000000000000000000AA -S31540044CC0000000000000000000000000000000009A -S31540044CD0000000000000000000000000000000008A -S31540044CE0000000000000000000000000000000007A -S31540044CF0000000000000000000000000000000006A -S31540044D000000000000000000000000000000000059 -S31540044D100000000000000000000000000000000049 -S31540044D200000000000000000000000000000000039 -S31540044D300000000000000000000000000000000029 -S31540044D400000000000000000000000000000000019 -S31540044D500000000000000000000000000000000009 -S31540044D6000000000000000000000000000000000F9 -S31540044D7000000000000000000000000000000000E9 -S31540044D8000000000000000000000000000000000D9 -S31540044D9000000000000000000000000000000000C9 -S31540044DA000000000000000000000000000000000B9 -S31540044DB000000000000000000000000000000000A9 -S31540044DC00000000000000000000000000000000099 -S31540044DD00000000000000000000000000000000089 -S31540044DE00000000000000000000000000000000079 -S31540044DF00000000000000000000000000000000069 -S31540044E000000000000000000000000000000000058 -S31540044E100000000000000000000000000000000048 -S31540044E200000000000000000000000000000000038 -S31540044E300000000000000000000000000000000028 -S31540044E400000000000000000000000000000000018 -S31540044E500000000000000000000000000000000008 -S31540044E6000000000000000000000000000000000F8 -S31540044E7000000000000000000000000000000000E8 -S31540044E8000000000000000000000000000000000D8 -S31540044E9000000000000000000000000000000000C8 -S31540044EA000000000000000000000000000000000B8 -S31540044EB000000000000000000000000000000000A8 -S31540044EC00000000000000000000000000000000098 -S31540044ED00000000000000000000000000000000088 -S31540044EE00000000000000000000000000000000078 -S31540044EF00000000000000000000000000000000068 -S31540044F000000000000000000000000000000000057 -S31540044F100000000000000000000000000000000047 -S31540044F200000000000000000000000000000000037 -S31540044F300000000000000000000000000000000027 -S31540044F400000000000000000000000000000000017 -S31540044F500000000000000000000000000000000007 -S31540044F6000000000000000000000000000000000F7 -S31540044F7000000000000000000000000000000000E7 -S31540044F8000000000000000000000000000000000D7 -S31540044F9000000000000000000000000000000000C7 -S31540044FA000000000000000000000000000000000B7 -S31540044FB000000000000000000000000000000000A7 -S31540044FC00000000000000000000000000000000097 -S31540044FD00000000000000000000000000000000087 -S31540044FE00000000000000000000000000000000077 -S31540044FF00000000000000000000000000000000067 -S315400450000000000000000000000000000000000056 -S315400450100000000000000000000000000000000046 -S315400450200000000000000000000000000000000036 -S315400450300000000000000000000000000000000026 -S315400450400000000000000000000000000000000016 -S315400450500000000000000000000000000000000006 -S3154004506000000000000000000000000000000000F6 -S3154004507000000000000000000000000000000000E6 -S3154004508000000000000000000000000000000000D6 -S3154004509000000000000000000000000000000000C6 -S315400450A000000000000000000000000000000000B6 -S315400450B000000000000000000000000000000000A6 -S315400450C00000000000000000000000000000000096 -S315400450D00000000000000000000000000000000086 -S315400450E00000000000000000000000000000000076 -S315400450F00000000000000000000000000000000066 -S315400451000000000000000000000000000000000055 -S315400451100000000000000000000000000000000045 -S315400451200000000000000000000000000000000035 -S315400451300000000000000000000000000000000025 -S315400451400000000000000000000000000000000015 -S315400451500000000000000000000000000000000005 -S3154004516000000000000000000000000000000000F5 -S3154004517000000000000000000000000000000000E5 -S3154004518000000000000000000000000000000000D5 -S3154004519000000000000000000000000000000000C5 -S315400451A000000000000000000000000000000000B5 -S315400451B000000000000000000000000000000000A5 -S315400451C00000000000000000000000000000000095 -S315400451D00000000000000000000000000000000085 -S315400451E00000000000000000000000000000000075 -S315400451F00000000000000000000000000000000065 -S315400452000000000000000000000000000000000054 -S315400452100000000000000000000000000000000044 -S315400452200000000000000000000000000000000034 -S315400452300000000000000000000000000000000024 -S315400452400000000000000000000000000000000014 -S315400452500000000000000000000000000000000004 -S3154004526000000000000000000000000000000000F4 -S3154004527000000000000000000000000000000000E4 -S3154004528000000000000000000000000000000000D4 -S3154004529000000000000000000000000000000000C4 -S315400452A000000000000000000000000000000000B4 -S315400452B000000000000000000000000000000000A4 -S315400452C00000000000000000000000000000000094 -S315400452D00000000000000000000000000000000084 -S315400452E00000000000000000000000000000000074 -S315400452F00000000000000000000000000000000064 -S315400453000000000000000000000000000000000053 -S315400453100000000000000000000000000000000043 -S315400453200000000000000000000000000000000033 -S315400453300000000000000000000000000000000023 -S315400453400000000000000000000000000000000013 -S315400453500000000000000000000000000000000003 -S3154004536000000000000000000000000000000000F3 -S3154004537000000000000000000000000000000000E3 -S3154004538000000000000000000000000000000000D3 -S3154004539000000000000000000000000000000000C3 -S315400453A000000000000000000000000000000000B3 -S315400453B000000000000000000000000000000000A3 -S315400453C00000000000000000000000000000000093 -S315400453D00000000000000000000000000000000083 -S315400453E00000000000000000000000000000000073 -S315400453F00000000000000000000000000000000063 -S315400454000000000000000000000000000000000052 -S315400454100000000000000000000000000000000042 -S315400454200000000000000000000000000000000032 -S315400454300000000000000000000000000000000022 -S315400454400000000000000000000000000000000012 -S315400454500000000000000000000000000000000002 -S3154004546000000000000000000000000000000000F2 -S3154004547000000000000000000000000000000000E2 -S3154004548000000000000000000000000000000000D2 -S3154004549000000000000000000000000000000000C2 -S315400454A000000000000000000000000000000000B2 -S315400454B000000000000000000000000000000000A2 -S315400454C00000000000000000000000000000000092 -S315400454D00000000000000000000000000000000082 -S315400454E00000000000000000000000000000000072 -S315400454F00000000000000000000000000000000062 -S315400455000000000000000000000000000000000051 -S315400455100000000000000000000000000000000041 -S315400455200000000000000000000000000000000031 -S315400455300000000000000000000000000000000021 -S315400455400000000000000000000000000000000011 -S315400455500000000000000000000000000000000001 -S3154004556000000000000000000000000000000000F1 -S3154004557000000000000000000000000000000000E1 -S3154004558000000000000000000000000000000000D1 -S3154004559000000000000000000000000000000000C1 -S315400455A000000000000000000000000000000000B1 -S315400455B000000000000000000000000000000000A1 -S315400455C00000000000000000000000000000000091 -S315400455D00000000000000000000000000000000081 -S315400455E00000000000000000000000000000000071 -S315400455F00000000000000000000000000000000061 -S315400456000000000000000000000000000000000050 -S315400456100000000000000000000000000000000040 -S315400456200000000000000000000000000000000030 -S315400456300000000000000000000000000000000020 -S315400456400000000000000000000000000000000010 -S315400456500000000000000000000000000000000000 -S3154004566000000000000000000000000000000000F0 -S3154004567000000000000000000000000000000000E0 -S3154004568000000000000000000000000000000000D0 -S3154004569000000000000000000000000000000000C0 -S315400456A000000000000000000000000000000000B0 -S315400456B000000000000000000000000000000000A0 -S315400456C00000000000000000000000000000000090 -S315400456D00000000000000000000000000000000080 -S315400456E00000000000000000000000000000000070 -S315400456F00000000000000000000000000000000060 -S31540045700000000000000000000000000000000004F -S31540045710000000000000000000000000000000003F -S31540045720000000000000000000000000000000002F -S31540045730000000000000000000000000000000001F -S31540045740000000000000000000000000000000000F -S3154004575000000000000000000000000000000000FF -S3154004576000000000000000000000000000000000EF -S3154004577000000000000000000000000000000000DF -S3154004578000000000000000000000000000000000CF -S3154004579000000000000000000000000000000000BF -S315400457A000000000000000000000000000000000AF -S315400457B0000000000000000000000000000000009F -S315400457C0000000000000000000000000000000008F -S315400457D0000000000000000000000000000000007F -S315400457E0000000000000000000000000000000006F -S315400457F0000000000000000000000000000000005F -S31540045800000000000000000000000000000000004E -S31540045810000000000000000000000000000000003E -S31540045820000000000000000000000000000000002E -S31540045830000000000000000000000000000000001E -S31540045840000000000000000000000000000000000E -S3154004585000000000000000000000000000000000FE -S3154004586000000000000000000000000000000000EE -S3154004587000000000000000000000000000000000DE -S3154004588000000000000000000000000000000000CE -S3154004589000000000000000000000000000000000BE -S315400458A000000000000000000000000000000000AE -S315400458B0000000000000000000000000000000009E -S315400458C0000000000000000000000000000000008E -S315400458D0000000000000000000000000000000007E -S315400458E0000000000000000000000000000000006E -S315400458F0000000000000000000000000000000005E -S31540045900000000000000000000000000000000004D -S31540045910000000000000000000000000000000003D -S31540045920000000000000000000000000000000002D -S31540045930000000000000000000000000000000001D -S31540045940000000000000000000000000000000000D -S3154004595000000000000000000000000000000000FD -S3154004596000000000000000000000000000000000ED -S3154004597000000000000000000000000000000000DD -S3154004598000000000000000000000000000000000CD -S3154004599000000000000000000000000000000000BD -S315400459A000000000000000000000000000000000AD -S315400459B0000000000000000000000000000000009D -S315400459C0000000000000000000000000000000008D -S315400459D0000000000000000000000000000000007D -S315400459E0000000000000000000000000000000006D -S315400459F0000000000000000000000000000000005D -S31540045A00000000000000000000000000000000004C -S31540045A10000000000000000000000000000000003C -S31540045A20000000000000000000000000000000002C -S31540045A30000000000000000000000000000000001C -S31540045A40000000000000000000000000000000000C -S31540045A5000000000000000000000000000000000FC -S31540045A6000000000000000000000000000000000EC -S31540045A7000000000000000000000000000000000DC -S31540045A8000000000000000000000000000000000CC -S31540045A9000000000000000000000000000000000BC -S31540045AA000000000000000000000000000000000AC -S31540045AB0000000000000000000000000000000009C -S31540045AC0000000000000000000000000000000008C -S31540045AD0000000000000000000000000000000007C -S31540045AE0000000000000000000000000000000006C -S31540045AF0000000000000000000000000000000005C -S31540045B00000000000000000000000000000000004B -S31540045B10000000000000000000000000000000003B -S31540045B20000000000000000000000000000000002B -S31540045B30000000000000000000000000000000001B -S31540045B40000000000000000000000000000000000B -S31540045B5000000000000000000000000000000000FB -S31540045B6000000000000000000000000000000000EB -S31540045B7000000000000000000000000000000000DB -S31540045B8000000000000000000000000000000000CB -S31540045B9000000000000000000000000000000000BB -S31540045BA000000000000000000000000000000000AB -S31540045BB0000000000000000000000000000000009B -S31540045BC0000000000000000000000000000000008B -S31540045BD0000000000000000000000000000000007B -S31540045BE0000000000000000000000000000000006B -S31540045BF0000000000000000000000000000000005B -S31540045C00000000000000000000000000000000004A -S31540045C10000000000000000000000000000000003A -S31540045C20000000000000000000000000000000002A -S31540045C30000000000000000000000000000000001A -S31540045C40000000000000000000000000000000000A -S31540045C5000000000000000000000000000000000FA -S31540045C6000000000000000000000000000000000EA -S31540045C7000000000000000000000000000000000DA -S31540045C8000000000000000000000000000000000CA -S31540045C9000000000000000000000000000000000BA -S31540045CA000000000000000000000000000000000AA -S31540045CB0000000000000000000000000000000009A -S31540045CC0000000000000000000000000000000008A -S31540045CD0000000000000000000000000000000007A -S31540045CE0000000000000000000000000000000006A -S31540045CF0000000000000000000000000000000005A -S31540045D000000000000000000000000000000000049 -S31540045D100000000000000000000000000000000039 -S31540045D200000000000000000000000000000000029 -S31540045D300000000000000000000000000000000019 -S31540045D400000000000000000000000000000000009 -S31540045D5000000000000000000000000000000000F9 -S31540045D6000000000000000000000000000000000E9 -S31540045D7000000000000000000000000000000000D9 -S31540045D8000000000000000000000000000000000C9 -S31540045D9000000000000000000000000000000000B9 -S31540045DA000000000000000000000000000000000A9 -S31540045DB00000000000000000000000000000000099 -S31540045DC00000000000000000000000000000000089 -S31540045DD00000000000000000000000000000000079 -S31540045DE00000000000000000000000000000000069 -S31540045DF00000000000000000000000000000000059 -S31540045E000000000000000000000000000000000048 -S31540045E100000000000000000000000000000000038 -S31540045E200000000000000000000000000000000028 -S31540045E300000000000000000000000000000000018 -S31540045E400000000000000000000000000000000008 -S31540045E5000000000000000000000000000000000F8 -S31540045E6000000000000000000000000000000000E8 -S31540045E7000000000000000000000000000000000D8 -S31540045E8000000000000000000000000000000000C8 -S31540045E9000000000000000000000000000000000B8 -S31540045EA000000000000000000000000000000000A8 -S31540045EB00000000000000000000000000000000098 -S31540045EC00000000000000000000000000000000088 -S31540045ED00000000000000000000000000000000078 -S31540045EE00000000000000000000000000000000068 -S31540045EF00000000000000000000000000000000058 -S31540045F000000000000000000000000000000000047 -S31540045F100000000000000000000000000000000037 -S31540045F200000000000000000000000000000000027 -S31540045F300000000000000000000000000000000017 -S31540045F400000000000000000000000000000000007 -S31540045F5000000000000000000000000000000000F7 -S31540045F6000000000000000000000000000000000E7 -S31540045F7000000000000000000000000000000000D7 -S31540045F8000000000000000000000000000000000C7 -S31540045F9000000000000000000000000000000000B7 -S31540045FA000000000000000000000000000000000A7 -S31540045FB00000000000000000000000000000000097 -S31540045FC00000000000000000000000000000000087 -S31540045FD00000000000000000000000000000000077 -S31540045FE00000000000000000000000000000000067 -S31540045FF00000000000000000000000000000000057 -S315400460000000000000000000000000000000000046 -S315400460100000000000000000000000000000000036 -S315400460200000000000000000000000000000000026 -S315400460300000000000000000000000000000000016 -S315400460400000000000000000000000000000000006 -S3154004605000000000000000000000000000000000F6 -S3154004606000000000000000000000000000000000E6 -S3154004607000000000000000000000000000000000D6 -S3154004608000000000000000000000000000000000C6 -S3154004609000000000000000000000000000000000B6 -S315400460A000000000000000000000000000000000A6 -S315400460B00000000000000000000000000000000096 -S315400460C00000000000000000000000000000000086 -S315400460D00000000000000000000000000000000076 -S315400460E00000000000000000000000000000000066 -S315400460F00000000000000000000000000000000056 -S315400461000000000000000000000000000000000045 -S315400461100000000000000000000000000000000035 -S315400461200000000000000000000000000000000025 -S315400461300000000000000000000000000000000015 -S315400461400000000000000000000000000000000005 -S3154004615000000000000000000000000000000000F5 -S3154004616000000000000000000000000000000000E5 -S3154004617000000000000000000000000000000000D5 -S3154004618000000000000000000000000000000000C5 -S3154004619000000000000000000000000000000000B5 -S315400461A000000000000000000000000000000000A5 -S315400461B00000000000000000000000000000000095 -S315400461C00000000000000000000000000000000085 -S315400461D00000000000000000000000000000000075 -S315400461E00000000000000000000000000000000065 -S315400461F00000000000000000000000000000000055 -S315400462000000000000000000000000000000000044 -S315400462100000000000000000000000000000000034 -S315400462200000000000000000000000000000000024 -S315400462300000000000000000000000000000000014 -S315400462400000000000000000000000000000000004 -S3154004625000000000000000000000000000000000F4 -S3154004626000000000000000000000000000000000E4 -S3154004627000000000000000000000000000000000D4 -S3154004628000000000000000000000000000000000C4 -S3154004629000000000000000000000000000000000B4 -S315400462A000000000000000000000000000000000A4 -S315400462B00000000000000000000000000000000094 -S315400462C00000000000000000000000000000000084 -S315400462D00000000000000000000000000000000074 -S315400462E00000000000000000000000000000000064 -S315400462F00000000000000000000000000000000054 -S315400463000000000000000000000000000000000043 -S315400463100000000000000000000000000000000033 -S315400463200000000000000000000000000000000023 -S315400463300000000000000000000000000000000013 -S315400463400000000000000000000000000000000003 -S3154004635000000000000000000000000000000000F3 -S3154004636000000000000000000000000000000000E3 -S3154004637000000000000000000000000000000000D3 -S3154004638000000000000000000000000000000000C3 -S3154004639000000000000000000000000000000000B3 -S315400463A000000000000000000000000000000000A3 -S315400463B00000000000000000000000000000000093 -S315400463C00000000000000000000000000000000083 -S315400463D00000000000000000000000000000000073 -S315400463E00000000000000000000000000000000063 -S315400463F00000000000000000000000000000000053 -S315400464000000000000000000000000000000000042 -S315400464100000000000000000000000000000000032 -S315400464200000000000000000000000000000000022 -S315400464300000000000000000000000000000000012 -S315400464400000000000000000000000000000000002 -S3154004645000000000000000000000000000000000F2 -S3154004646000000000000000000000000000000000E2 -S3154004647000000000000000000000000000000000D2 -S3154004648000000000000000000000000000000000C2 -S3154004649000000000000000000000000000000000B2 -S315400464A000000000000000000000000000000000A2 -S315400464B00000000000000000000000000000000092 -S315400464C00000000000000000000000000000000082 -S315400464D00000000000000000000000000000000072 -S315400464E00000000000000000000000000000000062 -S315400464F00000000000000000000000000000000052 -S315400465000000000000000000000000000000000041 -S315400465100000000000000000000000000000000031 -S315400465200000000000000000000000000000000021 -S315400465300000000000000000000000000000000011 -S315400465400000000000000000000000000000000001 -S3154004655000000000000000000000000000000000F1 -S3154004656000000000000000000000000000000000E1 -S3154004657000000000000000000000000000000000D1 -S3154004658000000000000000000000000000000000C1 -S3154004659000000000000000000000000000000000B1 -S315400465A000000000000000000000000000000000A1 -S315400465B00000000000000000000000000000000091 -S315400465C00000000000000000000000000000000081 -S315400465D00000000000000000000000000000000071 -S315400465E00000000000000000000000000000000061 -S315400465F00000000000000000000000000000000051 -S315400466000000000000000000000000000000000040 -S315400466100000000000000000000000000000000030 -S315400466200000000000000000000000000000000020 -S315400466300000000000000000000000000000000010 -S315400466400000000000000000000000000000000000 -S3154004665000000000000000000000000000000000F0 -S3154004666000000000000000000000000000000000E0 -S3154004667000000000000000000000000000000000D0 -S3154004668000000000000000000000000000000000C0 -S3154004669000000000000000000000000000000000B0 -S315400466A000000000000000000000000000000000A0 -S315400466B00000000000000000000000000000000090 -S315400466C00000000000000000000000000000000080 -S315400466D00000000000000000000000000000000070 -S315400466E00000000000000000000000000000000060 -S315400466F00000000000000000000000000000000050 -S31540046700000000000000000000000000000000003F -S31540046710000000000000000000000000000000002F -S31540046720000000000000000000000000000000001F -S31540046730000000000000000000000000000000000F -S3154004674000000000000000000000000000000000FF -S3154004675000000000000000000000000000000000EF -S3154004676000000000000000000000000000000000DF -S3154004677000000000000000000000000000000000CF -S3154004678000000000000000000000000000000000BF -S3154004679000000000000000000000000000000000AF -S315400467A0000000000000000000000000000000009F -S315400467B0000000000000000000000000000000008F -S315400467C0000000000000000000000000000000007F -S315400467D0000000000000000000000000000000006F -S315400467E0000000000000000000000000000000005F -S315400467F0000000000000000000000000000000004F -S31540046800000000000000000000000000000000003E -S31540046810000000000000000000000000000000002E -S31540046820000000000000000000000000000000001E -S31540046830000000000000000000000000000000000E -S3154004684000000000000000000000000000000000FE -S3154004685000000000000000000000000000000000EE -S3154004686000000000000000000000000000000000DE -S3154004687000000000000000000000000000000000CE -S3154004688000000000000000000000000000000000BE -S3154004689000000000000000000000000000000000AE -S315400468A0000000000000000000000000000000009E -S315400468B0000000000000000000000000000000008E -S315400468C0000000000000000000000000000000007E -S315400468D0000000000000000000000000000000006E -S315400468E0000000000000000000000000000000005E -S315400468F0000000000000000000000000000000004E -S31540046900000000000000000000000000000000003D -S31540046910000000000000000000000000000000002D -S31540046920000000000000000000000000000000001D -S31540046930000000000000000000000000000000000D -S3154004694000000000000000000000000000000000FD -S3154004695000000000000000000000000000000000ED -S3154004696000000000000000000000000000000000DD -S3154004697000000000000000000000000000000000CD -S3154004698000000000000000000000000000000000BD -S3154004699000000000000000000000000000000000AD -S315400469A0000000000000000000000000000000009D -S315400469B0000000000000000000000000000000008D -S315400469C0000000000000000000000000000000007D -S315400469D0000000000000000000000000000000006D -S315400469E0000000000000000000000000000000005D -S315400469F0000000000000000000000000000000004D -S31540046A00000000000000000000000000000000003C -S31540046A10000000000000000000000000000000002C -S31540046A20000000000000000000000000000000001C -S31540046A30000000000000000000000000000000000C -S31540046A4000000000000000000000000000000000FC -S31540046A5000000000000000000000000000000000EC -S31540046A6000000000000000000000000000000000DC -S31540046A7000000000000000000000000000000000CC -S31540046A8000000000000000000000000000000000BC -S31540046A9000000000000000000000000000000000AC -S31540046AA0000000000000000000000000000000009C -S31540046AB0000000000000000000000000000000008C -S31540046AC0000000000000000000000000000000007C -S31540046AD0000000000000000000000000000000006C -S31540046AE0000000000000000000000000000000005C -S31540046AF0000000000000000000000000000000004C -S31540046B00000000000000000000000000000000003B -S31540046B10000000000000000000000000000000002B -S31540046B20000000000000000000000000000000001B -S31540046B30000000000000000000000000000000000B -S31540046B4000000000000000000000000000000000FB -S31540046B5000000000000000000000000000000000EB -S31540046B6000000000000000000000000000000000DB -S31540046B7000000000000000000000000000000000CB -S31540046B8000000000000000000000000000000000BB -S31540046B9000000000000000000000000000000000AB -S31540046BA0000000000000000000000000000000009B -S31540046BB0000000000000000000000000000000008B -S31540046BC0000000000000000000000000000000007B -S31540046BD0000000000000000000000000000000006B -S31540046BE0000000000000000000000000000000005B -S31540046BF0000000000000000000000000000000004B -S31540046C00000000000000000000000000000000003A -S31540046C10000000000000000000000000000000002A -S31540046C20000000000000000000000000000000001A -S31540046C30000000000000000000000000000000000A -S31540046C4000000000000000000000000000000000FA -S31540046C5000000000000000000000000000000000EA -S31540046C6000000000000000000000000000000000DA -S31540046C7000000000000000000000000000000000CA -S31540046C8000000000000000000000000000000000BA -S31540046C9000000000000000000000000000000000AA -S31540046CA0000000000000000000000000000000009A -S31540046CB0000000000000000000000000000000008A -S31540046CC0000000000000000000000000000000007A -S31540046CD0000000000000000000000000000000006A -S31540046CE0000000000000000000000000000000005A -S31540046CF0000000000000000000000000000000004A -S31540046D000000000000000000000000000000000039 -S31540046D100000000000000000000000000000000029 -S31540046D200000000000000000000000000000000019 -S31540046D300000000000000000000000000000000009 -S31540046D4000000000000000000000000000000000F9 -S31540046D5000000000000000000000000000000000E9 -S31540046D6000000000000000000000000000000000D9 -S31540046D7000000000000000000000000000000000C9 -S31540046D8000000000000000000000000000000000B9 -S31540046D9000000000000000000000000000000000A9 -S31540046DA00000000000000000000000000000000099 -S31540046DB00000000000000000000000000000000089 -S31540046DC00000000000000000000000000000000079 -S31540046DD00000000000000000000000000000000069 -S31540046DE00000000000000000000000000000000059 -S31540046DF00000000000000000000000000000000049 -S31540046E000000000000000000000000000000000038 -S31540046E100000000000000000000000000000000028 -S31540046E200000000000000000000000000000000018 -S31540046E300000000000000000000000000000000008 -S31540046E4000000000000000000000000000000000F8 -S31540046E5000000000000000000000000000000000E8 -S31540046E6000000000000000000000000000000000D8 -S31540046E7000000000000000000000000000000000C8 -S31540046E8000000000000000000000000000000000B8 -S31540046E9000000000000000000000000000000000A8 -S31540046EA00000000000000000000000000000000098 -S31540046EB00000000000000000000000000000000088 -S31540046EC00000000000000000000000000000000078 -S31540046ED00000000000000000000000000000000068 -S31540046EE00000000000000000000000000000000058 -S31540046EF00000000000000000000000000000000048 -S31540046F000000000000000000000000000000000037 -S31540046F100000000000000000000000000000000027 -S31540046F200000000000000000000000000000000017 -S31540046F300000000000000000000000000000000007 -S31540046F4000000000000000000000000000000000F7 -S31540046F5000000000000000000000000000000000E7 -S31540046F6000000000000000000000000000000000D7 -S31540046F7000000000000000000000000000000000C7 -S31540046F8000000000000000000000000000000000B7 -S31540046F9000000000000000000000000000000000A7 -S31540046FA00000000000000000000000000000000097 -S31540046FB00000000000000000000000000000000087 -S31540046FC00000000000000000000000000000000077 -S31540046FD00000000000000000000000000000000067 -S31540046FE00000000000000000000000000000000057 -S31540046FF00000000000000000000000000000000047 -S315400470000000000000000000000000000000000036 -S315400470100000000000000000000000000000000026 -S315400470200000000000000000000000000000000016 -S315400470300000000000000000000000000000000006 -S3154004704000000000000000000000000000000000F6 -S3154004705000000000000000000000000000000000E6 -S3154004706000000000000000000000000000000000D6 -S3154004707000000000000000000000000000000000C6 -S3154004708000000000000000000000000000000000B6 -S3154004709000000000000000000000000000000000A6 -S315400470A00000000000000000000000000000000096 -S315400470B00000000000000000000000000000000086 -S315400470C00000000000000000000000000000000076 -S315400470D00000000000000000000000000000000066 -S315400470E00000000000000000000000000000000056 -S315400470F00000000000000000000000000000000046 -S315400471000000000000000000000000000000000035 -S315400471100000000000000000000000000000000025 -S315400471200000000000000000000000000000000015 -S315400471300000000000000000000000000000000005 -S3154004714000000000000000000000000000000000F5 -S3154004715000000000000000000000000000000000E5 -S3154004716000000000000000000000000000000000D5 -S3154004717000000000000000000000000000000000C5 -S3154004718000000000000000000000000000000000B5 -S3154004719000000000000000000000000000000000A5 -S315400471A00000000000000000000000000000000095 -S315400471B00000000000000000000000000000000085 -S315400471C00000000000000000000000000000000075 -S315400471D00000000000000000000000000000000065 -S315400471E00000000000000000000000000000000055 -S315400471F00000000000000000000000000000000045 -S315400472000000000000000000000000000000000034 -S315400472100000000000000000000000000000000024 -S315400472200000000000000000000000000000000014 -S315400472300000000000000000000000000000000004 -S3154004724000000000000000000000000000000000F4 -S3154004725000000000000000000000000000000000E4 -S3154004726000000000000000000000000000000000D4 -S3154004727000000000000000000000000000000000C4 -S3154004728000000000000000000000000000000000B4 -S3154004729000000000000000000000000000000000A4 -S315400472A00000000000000000000000000000000094 -S315400472B00000000000000000000000000000000084 -S315400472C00000000000000000000000000000000074 -S315400472D00000000000000000000000000000000064 -S315400472E00000000000000000000000000000000054 -S315400472F00000000000000000000000000000000044 -S315400473000000000000000000000000000000000033 -S315400473100000000000000000000000000000000023 -S315400473200000000000000000000000000000000013 -S315400473300000000000000000000000000000000003 -S3154004734000000000000000000000000000000000F3 -S3154004735000000000000000000000000000000000E3 -S3154004736000000000000000000000000000000000D3 -S3154004737000000000000000000000000000000000C3 -S3154004738000000000000000000000000000000000B3 -S3154004739000000000000000000000000000000000A3 -S315400473A00000000000000000000000000000000093 -S315400473B00000000000000000000000000000000083 -S315400473C00000000000000000000000000000000073 -S315400473D00000000000000000000000000000000063 -S315400473E00000000000000000000000000000000053 -S315400473F00000000000000000000000000000000043 -S315400474000000000000000000000000000000000032 -S315400474100000000000000000000000000000000022 -S315400474200000000000000000000000000000000012 -S315400474300000000000000000000000000000000002 -S3154004744000000000000000000000000000000000F2 -S3154004745000000000000000000000000000000000E2 -S3154004746000000000000000000000000000000000D2 -S3154004747000000000000000000000000000000000C2 -S3154004748000000000000000000000000000000000B2 -S3154004749000000000000000000000000000000000A2 -S315400474A00000000000000000000000000000000092 -S315400474B00000000000000000000000000000000082 -S315400474C00000000000000000000000000000000072 -S315400474D00000000000000000000000000000000062 -S315400474E00000000000000000000000000000000052 -S315400474F00000000000000000000000000000000042 -S315400475000000000000000000000000000000000031 -S315400475100000000000000000000000000000000021 -S315400475200000000000000000000000000000000011 -S315400475300000000000000000000000000000000001 -S3154004754000000000000000000000000000000000F1 -S3154004755000000000000000000000000000000000E1 -S3154004756000000000000000000000000000000000D1 -S3154004757000000000000000000000000000000000C1 -S3154004758000000000000000000000000000000000B1 -S3154004759000000000000000000000000000000000A1 -S315400475A00000000000000000000000000000000091 -S315400475B00000000000000000000000000000000081 -S315400475C00000000000000000000000000000000071 -S315400475D00000000000000000000000000000000061 -S315400475E00000000000000000000000000000000051 -S315400475F00000000000000000000000000000000041 -S315400476000000000000000000000000000000000030 -S315400476100000000000000000000000000000000020 -S315400476200000000000000000000000000000000010 -S315400476300000000000000000000000000000000000 -S3154004764000000000000000000000000000000000F0 -S3154004765000000000000000000000000000000000E0 -S3154004766000000000000000000000000000000000D0 -S3154004767000000000000000000000000000000000C0 -S3154004768000000000000000000000000000000000B0 -S3154004769000000000000000000000000000000000A0 -S315400476A00000000000000000000000000000000090 -S315400476B00000000000000000000000000000000080 -S315400476C00000000000000000000000000000000070 -S315400476D00000000000000000000000000000000060 -S315400476E00000000000000000000000000000000050 -S315400476F00000000000000000000000000000000040 -S31540047700000000000000000000000000000000002F -S31540047710000000000000000000000000000000001F -S31540047720000000000000000000000000000000000F -S3154004773000000000000000000000000000000000FF -S3154004774000000000000000000000000000000000EF -S3154004775000000000000000000000000000000000DF -S3154004776000000000000000000000000000000000CF -S3154004777000000000000000000000000000000000BF -S3154004778000000000000000000000000000000000AF -S31540047790000000000000000000000000000000009F -S315400477A0000000000000000000000000000000008F -S315400477B0000000000000000000000000000000007F -S315400477C0000000000000000000000000000000006F -S315400477D0000000000000000000000000000000005F -S315400477E0000000000000000000000000000000004F -S315400477F0000000000000000000000000000000003F -S31540047800000000000000000000000000000000002E -S31540047810000000000000000000000000000000001E -S31540047820000000000000000000000000000000000E -S3154004783000000000000000000000000000000000FE -S3154004784000000000000000000000000000000000EE -S3154004785000000000000000000000000000000000DE -S3154004786000000000000000000000000000000000CE -S3154004787000000000000000000000000000000000BE -S3154004788000000000000000000000000000000000AE -S31540047890000000000000000000000000000000009E -S315400478A0000000000000000000000000000000008E -S315400478B0000000000000000000000000000000007E -S315400478C0000000000000000000000000000000006E -S315400478D0000000000000000000000000000000005E -S315400478E0000000000000000000000000000000004E -S315400478F0000000000000000000000000000000003E -S31540047900000000000000000000000000000000002D -S31540047910000000000000000000000000000000001D -S31540047920000000000000000000000000000000000D -S3154004793000000000000000000000000000000000FD -S3154004794000000000000000000000000000000000ED -S3154004795000000000000000000000000000000000DD -S3154004796000000000000000000000000000000000CD -S3154004797000000000000000000000000000000000BD -S3154004798000000000000000000000000000000000AD -S31540047990000000000000000000000000000000009D -S315400479A0000000000000000000000000000000008D -S315400479B0000000000000000000000000000000007D -S315400479C0000000000000000000000000000000006D -S315400479D0000000000000000000000000000000005D -S315400479E0000000000000000000000000000000004D -S315400479F0000000000000000000000000000000003D -S31540047A00000000000000000000000000000000002C -S31540047A10000000000000000000000000000000001C -S31540047A20000000000000000000000000000000000C -S31540047A3000000000000000000000000000000000FC -S31540047A4000000000000000000000000000000000EC -S31540047A5000000000000000000000000000000000DC -S31540047A6000000000000000000000000000000000CC -S31540047A7000000000000000000000000000000000BC -S31540047A8000000000000000000000000000000000AC -S31540047A90000000000000000000000000000000009C -S31540047AA0000000000000000000000000000000008C -S31540047AB0000000000000000000000000000000007C -S31540047AC0000000000000000000000000000000006C -S31540047AD0000000000000000000000000000000005C -S31540047AE0000000000000000000000000000000004C -S31540047AF0000000000000000000000000000000003C -S31540047B00000000000000000000000000000000002B -S31540047B10000000000000000000000000000000001B -S31540047B20000000000000000000000000000000000B -S31540047B3000000000000000000000000000000000FB -S31540047B4000000000000000000000000000000000EB -S31540047B5000000000000000000000000000000000DB -S31540047B6000000000000000000000000000000000CB -S31540047B7000000000000000000000000000000000BB -S31540047B8000000000000000000000000000000000AB -S31540047B90000000000000000000000000000000009B -S31540047BA0000000000000000000000000000000008B -S31540047BB0000000000000000000000000000000007B -S31540047BC0000000000000000000000000000000006B -S31540047BD0000000000000000000000000000000005B -S31540047BE0000000000000000000000000000000004B -S31540047BF0000000000000000000000000000000003B -S31540047C00000000000000000000000000000000002A -S31540047C10000000000000000000000000000000001A -S31540047C20000000000000000000000000000000000A -S31540047C3000000000000000000000000000000000FA -S31540047C4000000000000000000000000000000000EA -S31540047C5000000000000000000000000000000000DA -S31540047C6000000000000000000000000000000000CA -S31540047C7000000000000000000000000000000000BA -S31540047C8000000000000000000000000000000000AA -S31540047C90000000000000000000000000000000009A -S31540047CA0000000000000000000000000000000008A -S31540047CB0000000000000000000000000000000007A -S31540047CC0000000000000000000000000000000006A -S31540047CD0000000000000000000000000000000005A -S31540047CE0000000000000000000000000000000004A -S31540047CF0000000000000000000000000000000003A -S31540047D000000000000000000000000000000000029 -S31540047D100000000000000000000000000000000019 -S31540047D200000000000000000000000000000000009 -S31540047D3000000000000000000000000000000000F9 -S31540047D4000000000000000000000000000000000E9 -S31540047D5000000000000000000000000000000000D9 -S31540047D6000000000000000000000000000000000C9 -S31540047D7000000000000000000000000000000000B9 -S31540047D8000000000000000000000000000000000A9 -S31540047D900000000000000000000000000000000099 -S31540047DA00000000000000000000000000000000089 -S31540047DB00000000000000000000000000000000079 -S31540047DC00000000000000000000000000000000069 -S31540047DD00000000000000000000000000000000059 -S31540047DE00000000000000000000000000000000049 -S31540047DF00000000000000000000000000000000039 -S31540047E000000000000000000000000000000000028 -S31540047E100000000000000000000000000000000018 -S31540047E200000000000000000000000000000000008 -S31540047E3000000000000000000000000000000000F8 -S31540047E4000000000000000000000000000000000E8 -S31540047E5000000000000000000000000000000000D8 -S31540047E6000000000000000000000000000000000C8 -S31540047E7000000000000000000000000000000000B8 -S31540047E8000000000000000000000000000000000A8 -S31540047E900000000000000000000000000000000098 -S31540047EA00000000000000000000000000000000088 -S31540047EB00000000000000000000000000000000078 -S31540047EC00000000000000000000000000000000068 -S31540047ED00000000000000000000000000000000058 -S31540047EE00000000000000000000000000000000048 -S31540047EF00000000000000000000000000000000038 -S31540047F000000000000000000000000000000000027 -S31540047F100000000000000000000000000000000017 -S31540047F200000000000000000000000000000000007 -S31540047F3000000000000000000000000000000000F7 -S31540047F4000000000000000000000000000000000E7 -S31540047F5000000000000000000000000000000000D7 -S31540047F6000000000000000000000000000000000C7 -S31540047F7000000000000000000000000000000000B7 -S31540047F8000000000000000000000000000000000A7 -S31540047F900000000000000000000000000000000097 -S31540047FA00000000000000000000000000000000087 -S31540047FB00000000000000000000000000000000077 -S31540047FC00000000000000000000000000000000067 -S31540047FD00000000000000000000000000000000057 -S31540047FE00000000000000000000000000000000047 -S31540047FF00000000000000000000000000000000037 -S315400480000000000000000000000000000000000026 -S315400480100000000000000000000000000000000016 -S315400480200000000000000000000000000000000006 -S3154004803000000000000000000000000000000000F6 -S3154004804000000000000000000000000000000000E6 -S3154004805000000000000000000000000000000000D6 -S3154004806000000000000000000000000000000000C6 -S3154004807000000000000000000000000000000000B6 -S3154004808000000000000000000000000000000000A6 -S315400480900000000000000000000000000000000096 -S315400480A00000000000000000000000000000000086 -S315400480B00000000000000000000000000000000076 -S315400480C00000000000000000000000000000000066 -S315400480D00000000000000000000000000000000056 -S315400480E00000000000000000000000000000000046 -S315400480F00000000000000000000000000000000036 -S315400481000000000000000000000000000000000025 -S315400481100000000000000000000000000000000015 -S315400481200000000000000000000000000000000005 -S3154004813000000000000000000000000000000000F5 -S3154004814000000000000000000000000000000000E5 -S3154004815000000000000000000000000000000000D5 -S3154004816000000000000000000000000000000000C5 -S3154004817000000000000000000000000000000000B5 -S3154004818000000000000000000000000000000000A5 -S315400481900000000000000000000000000000000095 -S315400481A00000000000000000000000000000000085 -S315400481B00000000000000000000000000000000075 -S315400481C00000000000000000000000000000000065 -S315400481D00000000000000000000000000000000055 -S315400481E00000000000000000000000000000000045 -S315400481F00000000000000000000000000000000035 -S315400482000000000000000000000000000000000024 -S315400482100000000000000000000000000000000014 -S315400482200000000000000000000000000000000004 -S3154004823000000000000000000000000000000000F4 -S3154004824000000000000000000000000000000000E4 -S3154004825000000000000000000000000000000000D4 -S3154004826000000000000000000000000000000000C4 -S3154004827000000000000000000000000000000000B4 -S3154004828000000000000000000000000000000000A4 -S315400482900000000000000000000000000000000094 -S315400482A00000000000000000000000000000000084 -S315400482B00000000000000000000000000000000074 -S315400482C00000000000000000000000000000000064 -S315400482D00000000000000000000000000000000054 -S315400482E00000000000000000000000000000000044 -S315400482F00000000000000000000000000000000034 -S315400483000000000000000000000000000000000023 -S315400483100000000000000000000000000000000013 -S315400483200000000000000000000000000000000003 -S3154004833000000000000000000000000000000000F3 -S3154004834000000000000000000000000000000000E3 -S3154004835000000000000000000000000000000000D3 -S3154004836000000000000000000000000000000000C3 -S3154004837000000000000000000000000000000000B3 -S3154004838000000000000000000000000000000000A3 -S315400483900000000000000000000000000000000093 -S315400483A00000000000000000000000000000000083 -S315400483B00000000000000000000000000000000073 -S315400483C00000000000000000000000000000000063 -S315400483D00000000000000000000000000000000053 -S315400483E00000000000000000000000000000000043 -S315400483F00000000000000000000000000000000033 -S315400484000000000000000000000000000000000022 -S315400484100000000000000000000000000000000012 -S315400484200000000000000000000000000000000002 -S3154004843000000000000000000000000000000000F2 -S3154004844000000000000000000000000000000000E2 -S3154004845000000000000000000000000000000000D2 -S3154004846000000000000000000000000000000000C2 -S3154004847000000000000000000000000000000000B2 -S3154004848000000000000000000000000000000000A2 -S315400484900000000000000000000000000000000092 -S315400484A00000000000000000000000000000000082 -S315400484B00000000000000000000000000000000072 -S315400484C00000000000000000000000000000000062 -S315400484D00000000000000000000000000000000052 -S315400484E00000000000000000000000000000000042 -S315400484F00000000000000000000000000000000032 -S315400485000000000000000000000000000000000021 -S315400485100000000000000000000000000000000011 -S315400485200000000000000000000000000000000001 -S3154004853000000000000000000000000000000000F1 -S3154004854000000000000000000000000000000000E1 -S3154004855000000000000000000000000000000000D1 -S3154004856000000000000000000000000000000000C1 -S3154004857000000000000000000000000000000000B1 -S3154004858000000000000000000000000000000000A1 -S315400485900000000000000000000000000000000091 -S315400485A00000000000000000000000000000000081 -S315400485B00000000000000000000000000000000071 -S315400485C00000000000000000000000000000000061 -S315400485D00000000000000000000000000000000051 -S315400485E00000000000000000000000000000000041 -S315400485F00000000000000000000000000000000031 -S315400486000000000000000000000000000000000020 -S315400486100000000000000000000000000000000010 -S315400486200000000000000000000000000000000000 -S3154004863000000000000000000000000000000000F0 -S3154004864000000000000000000000000000000000E0 -S3154004865000000000000000000000000000000000D0 -S3154004866000000000000000000000000000000000C0 -S3154004867000000000000000000000000000000000B0 -S3154004868000000000000000000000000000000000A0 -S315400486900000000000000000000000000000000090 -S315400486A00000000000000000000000000000000080 -S315400486B00000000000000000000000000000000070 -S315400486C00000000000000000000000000000000060 -S315400486D00000000000000000000000000000000050 -S315400486E00000000000000000000000000000000040 -S315400486F00000000000000000000000000000000030 -S31540048700000000000000000000000000000000001F -S31540048710000000000000000000000000000000000F -S3154004872000000000000000000000000000000000FF -S3154004873000000000000000000000000000000000EF -S3154004874000000000000000000000000000000000DF -S3154004875000000000000000000000000000000000CF -S3154004876000000000000000000000000000000000BF -S3154004877000000000000000000000000000000000AF -S31540048780000000000000000000000000000000009F -S31540048790000000000000000000000000000000008F -S315400487A0000000000000000000000000000000007F -S315400487B0000000000000000000000000000000006F -S315400487C0000000000000000000000000000000005F -S315400487D0000000000000000000000000000000004F -S315400487E0000000000000000000000000000000003F -S315400487F0000000000000000000000000000000002F -S31540048800000000000000000000000000000000001E -S31540048810000000000000000000000000000000000E -S3154004882000000000000000000000000000000000FE -S3154004883000000000000000000000000000000000EE -S3154004884000000000000000000000000000000000DE -S3154004885000000000000000000000000000000000CE -S3154004886000000000000000000000000000000000BE -S3154004887000000000000000000000000000000000AE -S31540048880000000000000000000000000000000009E -S31540048890000000000000000000000000000000008E -S315400488A0000000000000000000000000000000007E -S315400488B0000000000000000000000000000000006E -S315400488C0000000000000000000000000000000005E -S315400488D0000000000000000000000000000000004E -S315400488E0000000000000000000000000000000003E -S315400488F0000000000000000000000000000000002E -S31540048900000000000000000000000000000000001D -S31540048910000000000000000000000000000000000D -S3154004892000000000000000000000000000000000FD -S3154004893000000000000000000000000000000000ED -S3154004894000000000000000000000000000000000DD -S3154004895000000000000000000000000000000000CD -S3154004896000000000000000000000000000000000BD -S3154004897000000000000000000000000000000000AD -S31540048980000000000000000000000000000000009D -S31540048990000000000000000000000000000000008D -S315400489A0000000000000000000000000000000007D -S315400489B0000000000000000000000000000000006D -S315400489C0000000000000000000000000000000005D -S315400489D0000000000000000000000000000000004D -S315400489E0000000000000000000000000000000003D -S315400489F0000000000000000000000000000000002D -S31540048A00000000000000000000000000000000001C -S31540048A10000000000000000000000000000000000C -S31540048A2000000000000000000000000000000000FC -S31540048A3000000000000000000000000000000000EC -S31540048A4000000000000000000000000000000000DC -S31540048A5000000000000000000000000000000000CC -S31540048A6000000000000000000000000000000000BC -S31540048A7000000000000000000000000000000000AC -S31540048A80000000000000000000000000000000009C -S31540048A90000000000000000000000000000000008C -S31540048AA0000000000000000000000000000000007C -S31540048AB0000000000000000000000000000000006C -S31540048AC0000000000000000000000000000000005C -S31540048AD0000000000000000000000000000000004C -S31540048AE0000000000000000000000000000000003C -S31540048AF0000000000000000000000000000000002C -S31540048B00000000000000000000000000000000001B -S31540048B10000000000000000000000000000000000B -S31540048B2000000000000000000000000000000000FB -S31540048B3000000000000000000000000000000000EB -S31540048B4000000000000000000000000000000000DB -S31540048B5000000000000000000000000000000000CB -S31540048B6000000000000000000000000000000000BB -S31540048B7000000000000000000000000000000000AB -S31540048B80000000000000000000000000000000009B -S31540048B90000000000000000000000000000000008B -S31540048BA0000000000000000000000000000000007B -S31540048BB0000000000000000000000000000000006B -S31540048BC0000000000000000000000000000000005B -S31540048BD0000000000000000000000000000000004B -S31540048BE0000000000000000000000000000000003B -S31540048BF0000000000000000000000000000000002B -S31540048C00000000000000000000000000000000001A -S31540048C10000000000000000000000000000000000A -S31540048C2000000000000000000000000000000000FA -S31540048C3000000000000000000000000000000000EA -S31540048C4000000000000000000000000000000000DA -S31540048C5000000000000000000000000000000000CA -S31540048C6000000000000000000000000000000000BA -S31540048C7000000000000000000000000000000000AA -S31540048C80000000000000000000000000000000009A -S31540048C90000000000000000000000000000000008A -S31540048CA0000000000000000000000000000000007A -S31540048CB0000000000000000000000000000000006A -S31540048CC0000000000000000000000000000000005A -S31540048CD0000000000000000000000000000000004A -S31540048CE0000000000000000000000000000000003A -S31540048CF0000000000000000000000000000000002A -S31540048D000000000000000000000000000000000019 -S31540048D100000000000000000000000000000000009 -S31540048D2000000000000000000000000000000000F9 -S31540048D3000000000000000000000000000000000E9 -S31540048D4000000000000000000000000000000000D9 -S31540048D5000000000000000000000000000000000C9 -S31540048D6000000000000000000000000000000000B9 -S31540048D7000000000000000000000000000000000A9 -S31540048D800000000000000000000000000000000099 -S31540048D900000000000000000000000000000000089 -S31540048DA00000000000000000000000000000000079 -S31540048DB00000000000000000000000000000000069 -S31540048DC00000000000000000000000000000000059 -S31540048DD00000000000000000000000000000000049 -S31540048DE00000000000000000000000000000000039 -S31540048DF00000000000000000000000000000000029 -S31540048E000000000000000000000000000000000018 -S31540048E100000000000000000000000000000000008 -S31540048E2000000000000000000000000000000000F8 -S31540048E3000000000000000000000000000000000E8 -S31540048E4000000000000000000000000000000000D8 -S31540048E5000000000000000000000000000000000C8 -S31540048E6000000000000000000000000000000000B8 -S31540048E7000000000000000000000000000000000A8 -S31540048E800000000000000000000000000000000098 -S31540048E900000000000000000000000000000000088 -S31540048EA00000000000000000000000000000000078 -S31540048EB00000000000000000000000000000000068 -S31540048EC00000000000000000000000000000000058 -S31540048ED00000000000000000000000000000000048 -S31540048EE00000000000000000000000000000000038 -S31540048EF00000000000000000000000000000000028 -S31540048F000000000000000000000000000000000017 -S31540048F100000000000000000000000000000000007 -S31540048F2000000000000000000000000000000000F7 -S31540048F3000000000000000000000000000000000E7 -S31540048F4000000000000000000000000000000000D7 -S31540048F5000000000000000000000000000000000C7 -S31540048F6000000000000000000000000000000000B7 -S31540048F7000000000000000000000000000000000A7 -S31540048F800000000000000000000000000000000097 -S31540048F900000000000000000000000000000000087 -S31540048FA00000000000000000000000000000000077 -S31540048FB00000000000000000000000000000000067 -S31540048FC00000000000000000000000000000000057 -S31540048FD00000000000000000000000000000000047 -S31540048FE00000000000000000000000000000000037 -S31540048FF00000000000000000000000000000000027 -S315400490000000000000000000000000000000000016 -S315400490100000000000000000000000000000000006 -S3154004902000000000000000000000000000000000F6 -S3154004903000000000000000000000000000000000E6 -S3154004904000000000000000000000000000000000D6 -S3154004905000000000000000000000000000000000C6 -S3154004906000000000000000000000000000000000B6 -S3154004907000000000000000000000000000000000A6 -S315400490800000000000000000000000000000000096 -S315400490900000000000000000000000000000000086 -S315400490A00000000000000000000000000000000076 -S315400490B00000000000000000000000000000000066 -S315400490C00000000000000000000000000000000056 -S315400490D00000000000000000000000000000000046 -S315400490E00000000000000000000000000000000036 -S315400490F00000000000000000000000000000000026 -S315400491000000000000000000000000000000000015 -S315400491100000000000000000000000000000000005 -S3154004912000000000000000000000000000000000F5 -S3154004913000000000000000000000000000000000E5 -S3154004914000000000000000000000000000000000D5 -S3154004915000000000000000000000000000000000C5 -S3154004916000000000000000000000000000000000B5 -S3154004917000000000000000000000000000000000A5 -S315400491800000000000000000000000000000000095 -S315400491900000000000000000000000000000000085 -S315400491A00000000000000000000000000000000075 -S315400491B00000000000000000000000000000000065 -S315400491C00000000000000000000000000000000055 -S315400491D00000000000000000000000000000000045 -S315400491E00000000000000000000000000000000035 -S315400491F00000000000000000000000000000000025 -S315400492000000000000000000000000000000000014 -S315400492100000000000000000000000000000000004 -S3154004922000000000000000000000000000000000F4 -S3154004923000000000000000000000000000000000E4 -S3154004924000000000000000000000000000000000D4 -S3154004925000000000000000000000000000000000C4 -S3154004926000000000000000000000000000000000B4 -S3154004927000000000000000000000000000000000A4 -S315400492800000000000000000000000000000000094 -S315400492900000000000000000000000000000000084 -S315400492A00000000000000000000000000000000074 -S315400492B00000000000000000000000000000000064 -S315400492C00000000000000000000000000000000054 -S315400492D00000000000000000000000000000000044 -S315400492E00000000000000000000000000000000034 -S315400492F00000000000000000000000000000000024 -S315400493000000000000000000000000000000000013 -S315400493100000000000000000000000000000000003 -S3154004932000000000000000000000000000000000F3 -S3154004933000000000000000000000000000000000E3 -S3154004934000000000000000000000000000000000D3 -S3154004935000000000000000000000000000000000C3 -S3154004936000000000000000000000000000000000B3 -S3154004937000000000000000000000000000000000A3 -S315400493800000000000000000000000000000000093 -S315400493900000000000000000000000000000000083 -S315400493A00000000000000000000000000000000073 -S315400493B00000000000000000000000000000000063 -S315400493C00000000000000000000000000000000053 -S315400493D00000000000000000000000000000000043 -S315400493E00000000000000000000000000000000033 -S315400493F00000000000000000000000000000000023 -S315400494000000000000000000000000000000000012 -S315400494100000000000000000000000000000000002 -S3154004942000000000000000000000000000000000F2 -S3154004943000000000000000000000000000000000E2 -S3154004944000000000000000000000000000000000D2 -S3154004945000000000000000000000000000000000C2 -S3154004946000000000000000000000000000000000B2 -S3154004947000000000000000000000000000000000A2 -S315400494800000000000000000000000000000000092 -S315400494900000000000000000000000000000000082 -S315400494A00000000000000000000000000000000072 -S315400494B00000000000000000000000000000000062 -S315400494C00000000000000000000000000000000052 -S315400494D00000000000000000000000000000000042 -S315400494E00000000000000000000000000000000032 -S315400494F00000000000000000000000000000000022 -S315400495000000000000000000000000000000000011 -S315400495100000000000000000000000000000000001 -S3154004952000000000000000000000000000000000F1 -S3154004953000000000000000000000000000000000E1 -S3154004954000000000000000000000000000000000D1 -S3154004955000000000000000000000000000000000C1 -S3154004956000000000000000000000000000000000B1 -S3154004957000000000000000000000000000000000A1 -S315400495800000000000000000000000000000000091 -S315400495900000000000000000000000000000000081 -S315400495A00000000000000000000000000000000071 -S315400495B00000000000000000000000000000000061 -S315400495C00000000000000000000000000000000051 -S315400495D00000000000000000000000000000000041 -S315400495E00000000000000000000000000000000031 -S315400495F00000000000000000000000000000000021 -S315400496000000000000000000000000000000000010 -S315400496100000000000000000000000000000000000 -S3154004962000000000000000000000000000000000F0 -S3154004963000000000000000000000000000000000E0 -S3154004964000000000000000000000000000000000D0 -S3154004965000000000000000000000000000000000C0 -S3154004966000000000000000000000000000000000B0 -S3154004967000000000000000000000000000000000A0 -S315400496800000000000000000000000000000000090 -S315400496900000000000000000000000000000000080 -S315400496A00000000000000000000000000000000070 -S315400496B00000000000000000000000000000000060 -S315400496C00000000000000000000000000000000050 -S315400496D00000000000000000000000000000000040 -S315400496E00000000000000000000000000000000030 -S315400496F00000000000000000000000000000000020 -S31540049700000000000000000000000000000000000F -S3154004971000000000000000000000000000000000FF -S3154004972000000000000000000000000000000000EF -S3154004973000000000000000000000000000000000DF -S3154004974000000000000000000000000000000000CF -S3154004975000000000000000000000000000000000BF -S3154004976000000000000000000000000000000000AF -S31540049770000000000000000000000000000000009F -S31540049780000000000000000000000000000000008F -S31540049790000000000000000000000000000000007F -S315400497A0000000000000000000000000000000006F -S315400497B0000000000000000000000000000000005F -S315400497C0000000000000000000000000000000004F -S315400497D0000000000000000000000000000000003F -S315400497E0000000000000000000000000000000002F -S315400497F0000000000000000000000000000000001F -S31540049800000000000000000000000000000000000E -S3154004981000000000000000000000000000000000FE -S3154004982000000000000000000000000000000000EE -S3154004983000000000000000000000000000000000DE -S3154004984000000000000000000000000000000000CE -S3154004985000000000000000000000000000000000BE -S3154004986000000000000000000000000000000000AE -S31540049870000000000000000000000000000000009E -S31540049880000000000000000000000000000000008E -S31540049890000000000000000000000000000000007E -S315400498A0000000000000000000000000000000006E -S315400498B0000000000000000000000000000000005E -S315400498C0000000000000000000000000000000004E -S315400498D0000000000000000000000000000000003E -S315400498E0000000000000000000000000000000002E -S315400498F0000000000000000000000000000000001E -S31540049900000000000000000000000000000000000D -S3154004991000000000000000000000000000000000FD -S3154004992000000000000000000000000000000000ED -S3154004993000000000000000000000000000000000DD -S3154004994000000000000000000000000000000000CD -S3154004995000000000000000000000000000000000BD -S3154004996000000000000000000000000000000000AD -S31540049970000000000000000000000000000000009D -S31540049980000000000000000000000000000000008D -S31540049990000000000000000000000000000000007D -S315400499A0000000000000000000000000000000006D -S315400499B0000000000000000000000000000000005D -S315400499C0000000000000000000000000000000004D -S315400499D0000000000000000000000000000000003D -S315400499E0000000000000000000000000000000002D -S315400499F0000000000000000000000000000000001D -S31540049A00000000000000000000000000000000000C -S31540049A1000000000000000000000000000000000FC -S31540049A2000000000000000000000000000000000EC -S31540049A3000000000000000000000000000000000DC -S31540049A4000000000000000000000000000000000CC -S31540049A5000000000000000000000000000000000BC -S31540049A6000000000000000000000000000000000AC -S31540049A70000000000000000000000000000000009C -S31540049A80000000000000000000000000000000008C -S31540049A90000000000000000000000000000000007C -S31540049AA0000000000000000000000000000000006C -S31540049AB0000000000000000000000000000000005C -S31540049AC0000000000000000000000000000000004C -S31540049AD0000000000000000000000000000000003C -S31540049AE0000000000000000000000000000000002C -S31540049AF0000000000000000000000000000000001C -S31540049B00000000000000000000000000000000000B -S31540049B1000000000000000000000000000000000FB -S31540049B2000000000000000000000000000000000EB -S31540049B3000000000000000000000000000000000DB -S31540049B4000000000000000000000000000000000CB -S31540049B5000000000000000000000000000000000BB -S31540049B6000000000000000000000000000000000AB -S31540049B70000000000000000000000000000000009B -S31540049B80000000000000000000000000000000008B -S31540049B90000000000000000000000000000000007B -S31540049BA0000000000000000000000000000000006B -S31540049BB0000000000000000000000000000000005B -S31540049BC0000000000000000000000000000000004B -S31540049BD0000000000000000000000000000000003B -S31540049BE0000000000000000000000000000000002B -S31540049BF0000000000000000000000000000000001B -S31540049C00000000000000000000000000000000000A -S31540049C1000000000000000000000000000000000FA -S31540049C2000000000000000000000000000000000EA -S31540049C3000000000000000000000000000000000DA -S31540049C4000000000000000000000000000000000CA -S31540049C5000000000000000000000000000000000BA -S31540049C6000000000000000000000000000000000AA -S31540049C70000000000000000000000000000000009A -S31540049C80000000000000000000000000000000008A -S31540049C90000000000000000000000000000000007A -S31540049CA0000000000000000000000000000000006A -S31540049CB0000000000000000000000000000000005A -S31540049CC0000000000000000000000000000000004A -S31540049CD0000000000000000000000000000000003A -S31540049CE0000000000000000000000000000000002A -S31540049CF0000000000000000000000000000000001A -S31540049D000000000000000000000000000000000009 -S31540049D1000000000000000000000000000000000F9 -S31540049D2000000000000000000000000000000000E9 -S31540049D3000000000000000000000000000000000D9 -S31540049D4000000000000000000000000000000000C9 -S31540049D5000000000000000000000000000000000B9 -S31540049D6000000000000000000000000000000000A9 -S31540049D700000000000000000000000000000000099 -S31540049D800000000000000000000000000000000089 -S31540049D900000000000000000000000000000000079 -S31540049DA00000000000000000000000000000000069 -S31540049DB00000000000000000000000000000000059 -S31540049DC00000000000000000000000000000000049 -S31540049DD00000000000000000000000000000000039 -S31540049DE00000000000000000000000000000000029 -S31540049DF00000000000000000000000000000000019 -S31540049E000000000000000000000000000000000008 -S31540049E1000000000000000000000000000000000F8 -S31540049E2000000000000000000000000000000000E8 -S31540049E3000000000000000000000000000000000D8 -S31540049E4000000000000000000000000000000000C8 -S31540049E5000000000000000000000000000000000B8 -S31540049E6000000000000000000000000000000000A8 -S31540049E700000000000000000000000000000000098 -S31540049E800000000000000000000000000000000088 -S31540049E900000000000000000000000000000000078 -S31540049EA00000000000000000000000000000000068 -S31540049EB00000000000000000000000000000000058 -S31540049EC00000000000000000000000000000000048 -S31540049ED00000000000000000000000000000000038 -S31540049EE00000000000000000000000000000000028 -S31540049EF00000000000000000000000000000000018 -S31540049F000000000000000000000000000000000007 -S31540049F1000000000000000000000000000000000F7 -S31540049F2000000000000000000000000000000000E7 -S31540049F3000000000000000000000000000000000D7 -S31540049F4000000000000000000000000000000000C7 -S31540049F5000000000000000000000000000000000B7 -S31540049F6000000000000000000000000000000000A7 -S31540049F700000000000000000000000000000000097 -S31540049F800000000000000000000000000000000087 -S31540049F900000000000000000000000000000000077 -S31540049FA00000000000000000000000000000000067 -S31540049FB00000000000000000000000000000000057 -S31540049FC00000000000000000000000000000000047 -S31540049FD00000000000000000000000000000000037 -S31540049FE00000000000000000000000000000000027 -S31540049FF00000000000000000000000000000000017 -S3154004A0000000000000000000000000000000000006 -S3154004A01000000000000000000000000000000000F6 -S3154004A02000000000000000000000000000000000E6 -S3154004A03000000000000000000000000000000000D6 -S3154004A04000000000000000000000000000000000C6 -S3154004A05000000000000000000000000000000000B6 -S3154004A06000000000000000000000000000000000A6 -S3154004A0700000000000000000000000000000000096 -S3154004A0800000000000000000000000000000000086 -S3154004A0900000000000000000000000000000000076 -S3154004A0A00000000000000000000000000000000066 -S3154004A0B00000000000000000000000000000000056 -S3154004A0C00000000000000000000000000000000046 -S3154004A0D00000000000000000000000000000000036 -S3154004A0E00000000000000000000000000000000026 -S3154004A0F00000000000000000000000000000000016 -S3154004A1000000000000000000000000000000000005 -S3154004A11000000000000000000000000000000000F5 -S3154004A12000000000000000000000000000000000E5 -S3154004A13000000000000000000000000000000000D5 -S3154004A14000000000000000000000000000000000C5 -S3154004A15000000000000000000000000000000000B5 -S3154004A16000000000000000000000000000000000A5 -S3154004A1700000000000000000000000000000000095 -S3154004A1800000000000000000000000000000000085 -S3154004A1900000000000000000000000000000000075 -S3154004A1A00000000000000000000000000000000065 -S3154004A1B00000000000000000000000000000000055 -S3154004A1C00000000000000000000000000000000045 -S3154004A1D00000000000000000000000000000000035 -S3154004A1E00000000000000000000000000000000025 -S3154004A1F00000000000000000000000000000000015 -S3154004A2000000000000000000000000000000000004 -S3154004A21000000000000000000000000000000000F4 -S3154004A22000000000000000000000000000000000E4 -S3154004A23000000000000000000000000000000000D4 -S3154004A24000000000000000000000000000000000C4 -S3154004A25000000000000000000000000000000000B4 -S3154004A26000000000000000000000000000000000A4 -S3154004A2700000000000000000000000000000000094 -S3154004A2800000000000000000000000000000000084 -S3154004A2900000000000000000000000000000000074 -S3154004A2A00000000000000000000000000000000064 -S3154004A2B00000000000000000000000000000000054 -S3154004A2C00000000000000000000000000000000044 -S3154004A2D00000000000000000000000000000000034 -S3154004A2E00000000000000000000000000000000024 -S3154004A2F00000000000000000000000000000000014 -S3154004A3000000000000000000000000000000000003 -S3154004A31000000000000000000000000000000000F3 -S3154004A32000000000000000000000000000000000E3 -S3154004A33000000000000000000000000000000000D3 -S3154004A34000000000000000000000000000000000C3 -S3154004A35000000000000000000000000000000000B3 -S3154004A36000000000000000000000000000000000A3 -S3154004A3700000000000000000000000000000000093 -S3154004A3800000000000000000000000000000000083 -S3154004A3900000000000000000000000000000000073 -S3154004A3A00000000000000000000000000000000063 -S3154004A3B00000000000000000000000000000000053 -S3154004A3C00000000000000000000000000000000043 -S3154004A3D00000000000000000000000000000000033 -S3154004A3E00000000000000000000000000000000023 -S3154004A3F00000000000000000000000000000000013 -S3154004A4000000000000000000000000000000000002 -S3154004A41000000000000000000000000000000000F2 -S3154004A42000000000000000000000000000000000E2 -S3154004A43000000000000000000000000000000000D2 -S3154004A44000000000000000000000000000000000C2 -S3154004A45000000000000000000000000000000000B2 -S3154004A46000000000000000000000000000000000A2 -S3154004A4700000000000000000000000000000000092 -S3154004A4800000000000000000000000000000000082 -S3154004A4900000000000000000000000000000000072 -S3154004A4A00000000000000000000000000000000062 -S3154004A4B00000000000000000000000000000000052 -S3154004A4C00000000000000000000000000000000042 -S3154004A4D00000000000000000000000000000000032 -S3154004A4E00000000000000000000000000000000022 -S3154004A4F00000000000000000000000000000000012 -S3154004A5000000000000000000000000000000000001 -S3154004A51000000000000000000000000000000000F1 -S3154004A52000000000000000000000000000000000E1 -S3154004A53000000000000000000000000000000000D1 -S3154004A54000000000000000000000000000000000C1 -S3154004A55000000000000000000000000000000000B1 -S3154004A56000000000000000000000000000000000A1 -S3154004A5700000000000000000000000000000000091 -S3154004A5800000000000000000000000000000000081 -S3154004A5900000000000000000000000000000000071 -S3154004A5A00000000000000000000000000000000061 -S3154004A5B00000000000000000000000000000000051 -S3154004A5C00000000000000000000000000000000041 -S3154004A5D00000000000000000000000000000000031 -S3154004A5E00000000000000000000000000000000021 -S3154004A5F00000000000000000000000000000000011 -S3154004A6000000000000000000000000000000000000 -S3154004A61000000000000000000000000000000000F0 -S3154004A62000000000000000000000000000000000E0 -S3154004A63000000000000000000000000000000000D0 -S3154004A64000000000000000000000000000000000C0 -S3154004A65000000000000000000000000000000000B0 -S3154004A66000000000000000000000000000000000A0 -S3154004A6700000000000000000000000000000000090 -S3154004A6800000000000000000000000000000000080 -S3154004A6900000000000000000000000000000000070 -S3154004A6A00000000000000000000000000000000060 -S3154004A6B00000000000000000000000000000000050 -S3154004A6C00000000000000000000000000000000040 -S3154004A6D00000000000000000000000000000000030 -S3154004A6E00000000000000000000000000000000020 -S3154004A6F00000000000000000000000000000000010 -S3154004A70000000000000000000000000000000000FF -S3154004A71000000000000000000000000000000000EF -S3154004A72000000000000000000000000000000000DF -S3154004A73000000000000000000000000000000000CF -S3154004A74000000000000000000000000000000000BF -S3154004A75000000000000000000000000000000000AF -S3154004A760000000000000000000000000000000009F -S3154004A770000000000000000000000000000000008F -S3154004A780000000000000000000000000000000007F -S3154004A790000000000000000000000000000000006F -S3154004A7A0000000000000000000000000000000005F -S3154004A7B0000000000000000000000000000000004F -S3154004A7C0000000000000000000000000000000003F -S3154004A7D0000000000000000000000000000000002F -S3154004A7E0000000000000000000000000000000001F -S3154004A7F0000000000000000000000000000000000F -S3154004A80000000000000000000000000000000000FE -S3154004A81000000000000000000000000000000000EE -S3154004A82000000000000000000000000000000000DE -S3154004A83000000000000000000000000000000000CE -S3154004A84000000000000000000000000000000000BE -S3154004A85000000000000000000000000000000000AE -S3154004A860000000000000000000000000000000009E -S3154004A870000000000000000000000000000000008E -S3154004A880000000000000000000000000000000007E -S3154004A890000000000000000000000000000000006E -S3154004A8A0000000000000000000000000000000005E -S3154004A8B0000000000000000000000000000000004E -S3154004A8C0000000000000000000000000000000003E -S3154004A8D0000000000000000000000000000000002E -S3154004A8E0000000000000000000000000000000001E -S3154004A8F0000000000000000000000000000000000E -S3154004A90000000000000000000000000000000000FD -S3154004A91000000000000000000000000000000000ED -S3154004A92000000000000000000000000000000000DD -S3154004A93000000000000000000000000000000000CD -S3154004A94000000000000000000000000000000000BD -S3154004A95000000000000000000000000000000000AD -S3154004A960000000000000000000000000000000009D -S3154004A970000000000000000000000000000000008D -S3154004A980000000000000000000000000000000007D -S3154004A990000000000000000000000000000000006D -S3154004A9A0000000000000000000000000000000005D -S3154004A9B0000000000000000000000000000000004D -S3154004A9C0000000000000000000000000000000003D -S3154004A9D0000000000000000000000000000000002D -S3154004A9E0000000000000000000000000000000001D -S3154004A9F0000000000000000000000000000000000D -S3154004AA0000000000000000000000000000000000FC -S3154004AA1000000000000000000000000000000000EC -S3154004AA2000000000000000000000000000000000DC -S3154004AA3000000000000000000000000000000000CC -S3154004AA4000000000000000000000000000000000BC -S3154004AA5000000000000000000000000000000000AC -S3154004AA60000000000000000000000000000000009C -S3154004AA70000000000000000000000000000000008C -S3154004AA80000000000000000000000000000000007C -S3154004AA90000000000000000000000000000000006C -S3154004AAA0000000000000000000000000000000005C -S3154004AAB0000000000000000000000000000000004C -S3154004AAC0000000000000000000000000000000003C -S3154004AAD0000000000000000000000000000000002C -S3154004AAE0000000000000000000000000000000001C -S3154004AAF0000000000000000000000000000000000C -S3154004AB0000000000000000000000000000000000FB -S3154004AB1000000000000000000000000000000000EB -S3154004AB2000000000000000000000000000000000DB -S3154004AB3000000000000000000000000000000000CB -S3154004AB4000000000000000000000000000000000BB -S3154004AB5000000000000000000000000000000000AB -S3154004AB60000000000000000000000000000000009B -S3154004AB70000000000000000000000000000000008B -S3154004AB80000000000000000000000000000000007B -S3154004AB90000000000000000000000000000000006B -S3154004ABA0000000000000000000000000000000005B -S3154004ABB0000000000000000000000000000000004B -S3154004ABC0000000000000000000000000000000003B -S3154004ABD0000000000000000000000000000000002B -S3154004ABE0000000000000000000000000000000001B -S3154004ABF0000000000000000000000000000000000B -S3154004AC0000000000000000000000000000000000FA -S3154004AC1000000000000000000000000000000000EA -S3154004AC2000000000000000000000000000000000DA -S3154004AC3000000000000000000000000000000000CA -S3154004AC4000000000000000000000000000000000BA -S3154004AC5000000000000000000000000000000000AA -S3154004AC60000000000000000000000000000000009A -S3154004AC70000000000000000000000000000000008A -S3154004AC80000000000000000000000000000000007A -S3154004AC90000000000000000000000000000000006A -S3154004ACA0000000000000000000000000000000005A -S3154004ACB0000000000000000000000000000000004A -S3154004ACC0000000000000000000000000000000003A -S3154004ACD0000000000000000000000000000000002A -S3154004ACE0000000000000000000000000000000001A -S3154004ACF0000000000000000000000000000000000A -S3154004AD0000000000000000000000000000000000F9 -S3154004AD1000000000000000000000000000000000E9 -S3154004AD2000000000000000000000000000000000D9 -S3154004AD3000000000000000000000000000000000C9 -S3154004AD4000000000000000000000000000000000B9 -S3154004AD5000000000000000000000000000000000A9 -S3154004AD600000000000000000000000000000000099 -S3154004AD700000000000000000000000000000000089 -S3154004AD800000000000000000000000000000000079 -S3154004AD900000000000000000000000000000000069 -S3154004ADA00000000000000000000000000000000059 -S3154004ADB00000000000000000000000000000000049 -S3154004ADC00000000000000000000000000000000039 -S3154004ADD00000000000000000000000000000000029 -S3154004ADE00000000000000000000000000000000019 -S3154004ADF00000000000000000000000000000000009 -S3154004AE0000000000000000000000000000000000F8 -S3154004AE1000000000000000000000000000000000E8 -S3154004AE2000000000000000000000000000000000D8 -S3154004AE3000000000000000000000000000000000C8 -S3154004AE4000000000000000000000000000000000B8 -S3154004AE5000000000000000000000000000000000A8 -S3154004AE600000000000000000000000000000000098 -S3154004AE700000000000000000000000000000000088 -S3154004AE800000000000000000000000000000000078 -S3154004AE900000000000000000000000000000000068 -S3154004AEA00000000000000000000000000000000058 -S3154004AEB00000000000000000000000000000000048 -S3154004AEC00000000000000000000000000000000038 -S3154004AED00000000000000000000000000000000028 -S3154004AEE00000000000000000000000000000000018 -S3154004AEF00000000000000000000000000000000008 -S3154004AF0000000000000000000000000000000000F7 -S3154004AF1000000000000000000000000000000000E7 -S3154004AF2000000000000000000000000000000000D7 -S3154004AF3000000000000000000000000000000000C7 -S3154004AF4000000000000000000000000000000000B7 -S3154004AF5000000000000000000000000000000000A7 -S3154004AF600000000000000000000000000000000097 -S3154004AF700000000000000000000000000000000087 -S3154004AF800000000000000000000000000000000077 -S3154004AF900000000000000000000000000000000067 -S3154004AFA00000000000000000000000000000000057 -S3154004AFB00000000000000000000000000000000047 -S3154004AFC00000000000000000000000000000000037 -S3154004AFD00000000000000000000000000000000027 -S3154004AFE00000000000000000000000000000000017 -S3154004AFF00000000000000000000000000000000007 -S3154004B00000000000000000000000000000000000F6 -S3154004B01000000000000000000000000000000000E6 -S3154004B02000000000000000000000000000000000D6 -S3154004B03000000000000000000000000000000000C6 -S3154004B04000000000000000000000000000000000B6 -S3154004B05000000000000000000000000000000000A6 -S3154004B0600000000000000000000000000000000096 -S3154004B0700000000000000000000000000000000086 -S3154004B0800000000000000000000000000000000076 -S3154004B0900000000000000000000000000000000066 -S3154004B0A00000000000000000000000000000000056 -S3154004B0B00000000000000000000000000000000046 -S3154004B0C00000000000000000000000000000000036 -S3154004B0D00000000000000000000000000000000026 -S3154004B0E00000000000000000000000000000000016 -S3154004B0F00000000000000000000000000000000006 -S3154004B10000000000000000000000000000000000F5 -S3154004B11000000000000000000000000000000000E5 -S3154004B12000000000000000000000000000000000D5 -S3154004B13000000000000000000000000000000000C5 -S3154004B14000000000000000000000000000000000B5 -S3154004B15000000000000000000000000000000000A5 -S3154004B1600000000000000000000000000000000095 -S3154004B1700000000000000000000000000000000085 -S3154004B1800000000000000000000000000000000075 -S3154004B1900000000000000000000000000000000065 -S3154004B1A00000000000000000000000000000000055 -S3154004B1B00000000000000000000000000000000045 -S3154004B1C00000000000000000000000000000000035 -S3154004B1D00000000000000000000000000000000025 -S3154004B1E00000000000000000000000000000000015 -S3154004B1F00000000000000000000000000000000005 -S3154004B20000000000000000000000000000000000F4 -S3154004B21000000000000000000000000000000000E4 -S3154004B22000000000000000000000000000000000D4 -S3154004B23000000000000000000000000000000000C4 -S3154004B24000000000000000000000000000000000B4 -S3154004B25000000000000000000000000000000000A4 -S3154004B2600000000000000000000000000000000094 -S3154004B2700000000000000000000000000000000084 -S3154004B2800000000000000000000000000000000074 -S3154004B2900000000000000000000000000000000064 -S3154004B2A00000000000000000000000000000000054 -S3154004B2B00000000000000000000000000000000044 -S3154004B2C00000000000000000000000000000000034 -S3154004B2D00000000000000000000000000000000024 -S3154004B2E00000000000000000000000000000000014 -S3154004B2F00000000000000000000000000000000004 -S3154004B30000000000000000000000000000000000F3 -S3154004B31000000000000000000000000000000000E3 -S3154004B32000000000000000000000000000000000D3 -S3154004B33000000000000000000000000000000000C3 -S3154004B34000000000000000000000000000000000B3 -S3154004B35000000000000000000000000000000000A3 -S3154004B3600000000000000000000000000000000093 -S3154004B3700000000000000000000000000000000083 -S3154004B3800000000000000000000000000000000073 -S3154004B3900000000000000000000000000000000063 -S3154004B3A00000000000000000000000000000000053 -S3154004B3B00000000000000000000000000000000043 -S3154004B3C00000000000000000000000000000000033 -S3154004B3D00000000000000000000000000000000023 -S3154004B3E00000000000000000000000000000000013 -S3154004B3F00000000000000000000000000000000003 -S3154004B40000000000000000000000000000000000F2 -S3154004B41000000000000000000000000000000000E2 -S3154004B42000000000000000000000000000000000D2 -S3154004B43000000000000000000000000000000000C2 -S3154004B44000000000000000000000000000000000B2 -S3154004B45000000000000000000000000000000000A2 -S3154004B4600000000000000000000000000000000092 -S3154004B4700000000000000000000000000000000082 -S3154004B4800000000000000000000000000000000072 -S3154004B4900000000000000000000000000000000062 -S3154004B4A00000000000000000000000000000000052 -S3154004B4B00000000000000000000000000000000042 -S3154004B4C00000000000000000000000000000000032 -S3154004B4D00000000000000000000000000000000022 -S3154004B4E00000000000000000000000000000000012 -S3154004B4F00000000000000000000000000000000002 -S3154004B50000000000000000000000000000000000F1 -S3154004B51000000000000000000000000000000000E1 -S3154004B52000000000000000000000000000000000D1 -S3154004B53000000000000000000000000000000000C1 -S3154004B54000000000000000000000000000000000B1 -S3154004B55000000000000000000000000000000000A1 -S3154004B5600000000000000000000000000000000091 -S3154004B5700000000000000000000000000000000081 -S3154004B5800000000000000000000000000000000071 -S3154004B5900000000000000000000000000000000061 -S3154004B5A00000000000000000000000000000000051 -S3154004B5B00000000000000000000000000000000041 -S3154004B5C00000000000000000000000000000000031 -S3154004B5D00000000000000000000000000000000021 -S3154004B5E00000000000000000000000000000000011 -S3154004B5F00000000000000000000000000000000001 -S3154004B60000000000000000000000000000000000F0 -S3154004B61000000000000000000000000000000000E0 -S3154004B62000000000000000000000000000000000D0 -S3154004B63000000000000000000000000000000000C0 -S3154004B64000000000000000000000000000000000B0 -S3154004B65000000000000000000000000000000000A0 -S3154004B6600000000000000000000000000000000090 -S3154004B6700000000000000000000000000000000080 -S3154004B6800000000000000000000000000000000070 -S3154004B6900000000000000000000000000000000060 -S3154004B6A00000000000000000000000000000000050 -S3154004B6B00000000000000000000000000000000040 -S3154004B6C00000000000000000000000000000000030 -S3154004B6D00000000000000000000000000000000020 -S3154004B6E00000000000000000000000000000000010 -S3154004B6F00000000000000000000000000000000000 -S3154004B70000000000000000000000000000000000EF -S3154004B71000000000000000000000000000000000DF -S3154004B72000000000000000000000000000000000CF -S3154004B73000000000000000000000000000000000BF -S3154004B74000000000000000000000000000000000AF -S3154004B750000000000000000000000000000000009F -S3154004B760000000000000000000000000000000008F -S3154004B770000000000000000000000000000000007F -S3154004B780000000000000000000000000000000006F -S3154004B790000000000000000000000000000000005F -S3154004B7A0000000000000000000000000000000004F -S3154004B7B0000000000000000000000000000000003F -S3154004B7C0000000000000000000000000000000002F -S3154004B7D0000000000000000000000000000000001F -S3154004B7E0000000000000000000000000000000000F -S3154004B7F000000000000000000000000000000000FF -S3154004B80000000000000000000000000000000000EE -S3154004B81000000000000000000000000000000000DE -S3154004B82000000000000000000000000000000000CE -S3154004B83000000000000000000000000000000000BE -S3154004B84000000000000000000000000000000000AE -S3154004B850000000000000000000000000000000009E -S3154004B860000000000000000000000000000000008E -S3154004B870000000000000000000000000000000007E -S3154004B880000000000000000000000000000000006E -S3154004B890000000000000000000000000000000005E -S3154004B8A0000000000000000000000000000000004E -S3154004B8B0000000000000000000000000000000003E -S3154004B8C0000000000000000000000000000000002E -S3154004B8D0000000000000000000000000000000001E -S3154004B8E0000000000000000000000000000000000E -S3154004B8F000000000000000000000000000000000FE -S3154004B90000000000000000000000000000000000ED -S3154004B91000000000000000000000000000000000DD -S3154004B92000000000000000000000000000000000CD -S3154004B93000000000000000000000000000000000BD -S3154004B94000000000000000000000000000000000AD -S3154004B950000000000000000000000000000000009D -S3154004B960000000000000000000000000000000008D -S3154004B970000000000000000000000000000000007D -S3154004B980000000000000000000000000000000006D -S3154004B990000000000000000000000000000000005D -S3154004B9A0000000000000000000000000000000004D -S3154004B9B0000000000000000000000000000000003D -S3154004B9C0000000000000000000000000000000002D -S3154004B9D0000000000000000000000000000000001D -S3154004B9E0000000000000000000000000000000000D -S3154004B9F000000000000000000000000000000000FD -S3154004BA0000000000000000000000000000000000EC -S3154004BA1000000000000000000000000000000000DC -S3154004BA2000000000000000000000000000000000CC -S3154004BA3000000000000000000000000000000000BC -S3154004BA4000000000000000000000000000000000AC -S3154004BA50000000000000000000000000000000009C -S3154004BA60000000000000000000000000000000008C -S3154004BA70000000000000000000000000000000007C -S3154004BA80000000000000000000000000000000006C -S3154004BA90000000000000000000000000000000005C -S3154004BAA0000000000000000000000000000000004C -S3154004BAB0000000000000000000000000000000003C -S3154004BAC0000000000000000000000000000000002C -S3154004BAD0000000000000000000000000000000001C -S3154004BAE0000000000000000000000000000000000C -S3154004BAF000000000000000000000000000000000FC -S3154004BB0000000000000000000000000000000000EB -S3154004BB1000000000000000000000000000000000DB -S3154004BB2000000000000000000000000000000000CB -S3154004BB3000000000000000000000000000000000BB -S3154004BB4000000000000000000000000000000000AB -S3154004BB50000000000000000000000000000000009B -S3154004BB60000000000000000000000000000000008B -S3154004BB70000000000000000000000000000000007B -S3154004BB80000000000000000000000000000000006B -S3154004BB90000000000000000000000000000000005B -S3154004BBA0000000000000000000000000000000004B -S3154004BBB0000000000000000000000000000000003B -S3154004BBC0000000000000000000000000000000002B -S3154004BBD0000000000000000000000000000000001B -S3154004BBE0000000000000000000000000000000000B -S3154004BBF000000000000000000000000000000000FB -S3154004BC0000000000000000000000000000000000EA -S3154004BC1000000000000000000000000000000000DA -S3154004BC2000000000000000000000000000000000CA -S3154004BC3000000000000000000000000000000000BA -S3154004BC4000000000000000000000000000000000AA -S3154004BC50000000000000000000000000000000009A -S3154004BC60000000000000000000000000000000008A -S3154004BC70000000000000000000000000000000007A -S3154004BC80000000000000000000000000000000006A -S3154004BC90000000000000000000000000000000005A -S3154004BCA0000000000000000000000000000000004A -S3154004BCB0000000000000000000000000000000003A -S3154004BCC0000000000000000000000000000000002A -S3154004BCD0000000000000000000000000000000001A -S3154004BCE0000000000000000000000000000000000A -S3154004BCF000000000000000000000000000000000FA -S3154004BD0000000000000000000000000000000000E9 -S3154004BD1000000000000000000000000000000000D9 -S3154004BD2000000000000000000000000000000000C9 -S3154004BD3000000000000000000000000000000000B9 -S3154004BD4000000000000000000000000000000000A9 -S3154004BD500000000000000000000000000000000099 -S3154004BD600000000000000000000000000000000089 -S3154004BD700000000000000000000000000000000079 -S3154004BD800000000000000000000000000000000069 -S3154004BD900000000000000000000000000000000059 -S3154004BDA00000000000000000000000000000000049 -S3154004BDB00000000000000000000000000000000039 -S3154004BDC00000000000000000000000000000000029 -S3154004BDD00000000000000000000000000000000019 -S3154004BDE00000000000000000000000000000000009 -S3154004BDF000000000000000000000000000000000F9 -S3154004BE0000000000000000000000000000000000E8 -S3154004BE1000000000000000000000000000000000D8 -S3154004BE2000000000000000000000000000000000C8 -S3154004BE3000000000000000000000000000000000B8 -S3154004BE4000000000000000000000000000000000A8 -S3154004BE500000000000000000000000000000000098 -S3154004BE600000000000000000000000000000000088 -S3154004BE700000000000000000000000000000000078 -S3154004BE800000000000000000000000000000000068 -S3154004BE900000000000000000000000000000000058 -S3154004BEA00000000000000000000000000000000048 -S3154004BEB00000000000000000000000000000000038 -S3154004BEC00000000000000000000000000000000028 -S3154004BED00000000000000000000000000000000018 -S3154004BEE00000000000000000000000000000000008 -S3154004BEF000000000000000000000000000000000F8 -S3154004BF0000000000000000000000000000000000E7 -S3154004BF1000000000000000000000000000000000D7 -S3154004BF2000000000000000000000000000000000C7 -S3154004BF3000000000000000000000000000000000B7 -S3154004BF4000000000000000000000000000000000A7 -S3154004BF500000000000000000000000000000000097 -S3154004BF600000000000000000000000000000000087 -S3154004BF700000000000000000000000000000000077 -S3154004BF800000000000000000000000000000000067 -S3154004BF900000000000000000000000000000000057 -S3154004BFA00000000000000000000000000000000047 -S3154004BFB00000000000000000000000000000000037 -S3154004BFC00000000000000000000000000000000027 -S3154004BFD00000000000000000000000000000000017 -S3154004BFE00000000000000000000000000000000007 -S3154004BFF000000000000000000000000000000000F7 -S3154004C00000000000000000000000000000000000E6 -S3154004C01000000000000000000000000000000000D6 -S3154004C02000000000000000000000000000000000C6 -S3154004C03000000000000000000000000000000000B6 -S3154004C04000000000000000000000000000000000A6 -S3154004C0500000000000000000000000000000000096 -S3154004C0600000000000000000000000000000000086 -S3154004C0700000000000000000000000000000000076 -S3154004C0800000000000000000000000000000000066 -S3154004C0900000000000000000000000000000000056 -S3154004C0A00000000000000000000000000000000046 -S3154004C0B00000000000000000000000000000000036 -S3154004C0C00000000000000000000000000000000026 -S3154004C0D00000000000000000000000000000000016 -S3154004C0E00000000000000000000000000000000006 -S3154004C0F000000000000000000000000000000000F6 -S3154004C10000000000000000000000000000000000E5 -S3154004C11000000000000000000000000000000000D5 -S3154004C12000000000000000000000000000000000C5 -S3154004C13000000000000000000000000000000000B5 -S3154004C14000000000000000000000000000000000A5 -S3154004C1500000000000000000000000000000000095 -S3154004C1600000000000000000000000000000000085 -S3154004C1700000000000000000000000000000000075 -S3154004C1800000000000000000000000000000000065 -S3154004C1900000000000000000000000000000000055 -S3154004C1A00000000000000000000000000000000045 -S3154004C1B00000000000000000000000000000000035 -S3154004C1C00000000000000000000000000000000025 -S3154004C1D00000000000000000000000000000000015 -S3154004C1E00000000000000000000000000000000005 -S3154004C1F000000000000000000000000000000000F5 -S3154004C20000000000000000000000000000000000E4 -S3154004C21000000000000000000000000000000000D4 -S3154004C22000000000000000000000000000000000C4 -S3154004C23000000000000000000000000000000000B4 -S3154004C24000000000000000000000000000000000A4 -S3154004C2500000000000000000000000000000000094 -S3154004C2600000000000000000000000000000000084 -S3154004C2700000000000000000000000000000000074 -S3154004C2800000000000000000000000000000000064 -S3154004C2900000000000000000000000000000000054 -S3154004C2A00000000000000000000000000000000044 -S3154004C2B00000000000000000000000000000000034 -S3154004C2C00000000000000000000000000000000024 -S3154004C2D00000000000000000000000000000000014 -S3154004C2E00000000000000000000000000000000004 -S3154004C2F000000000000000000000000000000000F4 -S3154004C30000000000000000000000000000000000E3 -S3154004C31000000000000000000000000000000000D3 -S3154004C32000000000000000000000000000000000C3 -S3154004C33000000000000000000000000000000000B3 -S3154004C34000000000000000000000000000000000A3 -S3154004C3500000000000000000000000000000000093 -S3154004C3600000000000000000000000000000000083 -S3154004C3700000000000000000000000000000000073 -S3154004C3800000000000000000000000000000000063 -S3154004C3900000000000000000000000000000000053 -S3154004C3A00000000000000000000000000000000043 -S3154004C3B00000000000000000000000000000000033 -S3154004C3C00000000000000000000000000000000023 -S3154004C3D00000000000000000000000000000000013 -S3154004C3E00000000000000000000000000000000003 -S3154004C3F000000000000000000000000000000000F3 -S3154004C40000000000000000000000000000000000E2 -S3154004C41000000000000000000000000000000000D2 -S3154004C42000000000000000000000000000000000C2 -S3154004C43000000000000000000000000000000000B2 -S3154004C44000000000000000000000000000000000A2 -S3154004C4500000000000000000000000000000000092 -S3154004C4600000000000000000000000000000000082 -S3154004C4700000000000000000000000000000000072 -S3154004C4800000000000000000000000000000000062 -S3154004C4900000000000000000000000000000000052 -S3154004C4A00000000000000000000000000000000042 -S3154004C4B00000000000000000000000000000000032 -S3154004C4C00000000000000000000000000000000022 -S3154004C4D00000000000000000000000000000000012 -S3154004C4E00000000000000000000000000000000002 -S3154004C4F000000000000000000000000000000000F2 -S3154004C50000000000000000000000000000000000E1 -S3154004C51000000000000000000000000000000000D1 -S3154004C52000000000000000000000000000000000C1 -S3154004C53000000000000000000000000000000000B1 -S3154004C54000000000000000000000000000000000A1 -S3154004C5500000000000000000000000000000000091 -S3154004C5600000000000000000000000000000000081 -S3154004C5700000000000000000000000000000000071 -S3154004C5800000000000000000000000000000000061 -S3154004C5900000000000000000000000000000000051 -S3154004C5A00000000000000000000000000000000041 -S3154004C5B00000000000000000000000000000000031 -S3154004C5C00000000000000000000000000000000021 -S3154004C5D00000000000000000000000000000000011 -S3154004C5E00000000000000000000000000000000001 -S3154004C5F000000000000000000000000000000000F1 -S3154004C60000000000000000000000000000000000E0 -S3154004C61000000000000000000000000000000000D0 -S3154004C62000000000000000000000000000000000C0 -S3154004C63000000000000000000000000000000000B0 -S3154004C64000000000000000000000000000000000A0 -S3154004C6500000000000000000000000000000000090 -S3154004C6600000000000000000000000000000000080 -S3154004C6700000000000000000000000000000000070 -S3154004C6800000000000000000000000000000000060 -S3154004C6900000000000000000000000000000000050 -S3154004C6A00000000000000000000000000000000040 -S3154004C6B00000000000000000000000000000000030 -S3154004C6C00000000000000000000000000000000020 -S3154004C6D00000000000000000000000000000000010 -S3154004C6E00000000000000000000000000000000000 -S3154004C6F000000000000000000000000000000000F0 -S3154004C70000000000000000000000000000000000DF -S3154004C71000000000000000000000000000000000CF -S3154004C72000000000000000000000000000000000BF -S3154004C73000000000000000000000000000000000AF -S3154004C740000000000000000000000000000000009F -S3154004C750000000000000000000000000000000008F -S3154004C760000000000000000000000000000000007F -S3154004C770000000000000000000000000000000006F -S3154004C780000000000000000000000000000000005F -S3154004C790000000000000000000000000000000004F -S3154004C7A0000000000000000000000000000000003F -S3154004C7B0000000000000000000000000000000002F -S3154004C7C0000000000000000000000000000000001F -S3154004C7D0000000000000000000000000000000000F -S3154004C7E000000000000000000000000000000000FF -S3154004C7F000000000000000000000000000000000EF -S3154004C80000000000000000000000000000000000DE -S3154004C81000000000000000000000000000000000CE -S3154004C82000000000000000000000000000000000BE -S3154004C83000000000000000000000000000000000AE -S3154004C840000000000000000000000000000000009E -S3154004C850000000000000000000000000000000008E -S3154004C860000000000000000000000000000000007E -S3154004C870000000000000000000000000000000006E -S3154004C880000000000000000000000000000000005E -S3154004C890000000000000000000000000000000004E -S3154004C8A0000000000000000000000000000000003E -S3154004C8B0000000000000000000000000000000002E -S3154004C8C0000000000000000000000000000000001E -S3154004C8D0000000000000000000000000000000000E -S3154004C8E000000000000000000000000000000000FE -S3154004C8F000000000000000000000000000000000EE -S3154004C90000000000000000000000000000000000DD -S3154004C91000000000000000000000000000000000CD -S3154004C92000000000000000000000000000000000BD -S3154004C93000000000000000000000000000000000AD -S3154004C940000000000000000000000000000000009D -S3154004C950000000000000000000000000000000008D -S3154004C960000000000000000000000000000000007D -S3154004C970000000000000000000000000000000006D -S3154004C980000000000000000000000000000000005D -S3154004C990000000000000000000000000000000004D -S3154004C9A0000000000000000000000000000000003D -S3154004C9B0000000000000000000000000000000002D -S3154004C9C0000000000000000000000000000000001D -S3154004C9D0000000000000000000000000000000000D -S3154004C9E000000000000000000000000000000000FD -S3154004C9F000000000000000000000000000000000ED -S3154004CA0000000000000000000000000000000000DC -S3154004CA1000000000000000000000000000000000CC -S3154004CA2000000000000000000000000000000000BC -S3154004CA3000000000000000000000000000000000AC -S3154004CA40000000000000000000000000000000009C -S3154004CA50000000000000000000000000000000008C -S3154004CA60000000000000000000000000000000007C -S3154004CA70000000000000000000000000000000006C -S3154004CA80000000000000000000000000000000005C -S3154004CA90000000000000000000000000000000004C -S3154004CAA0000000000000000000000000000000003C -S3154004CAB0000000000000000000000000000000002C -S3154004CAC0000000000000000000000000000000001C -S3154004CAD0000000000000000000000000000000000C -S3154004CAE000000000000000000000000000000000FC -S3154004CAF000000000000000000000000000000000EC -S3154004CB0000000000000000000000000000000000DB -S3154004CB1000000000000000000000000000000000CB -S3154004CB2000000000000000000000000000000000BB -S3154004CB3000000000000000000000000000000000AB -S3154004CB40000000000000000000000000000000009B -S3154004CB50000000000000000000000000000000008B -S3154004CB60000000000000000000000000000000007B -S3154004CB70000000000000000000000000000000006B -S3154004CB80000000000000000000000000000000005B -S3154004CB90000000000000000000000000000000004B -S3154004CBA0000000000000000000000000000000003B -S3154004CBB0000000000000000000000000000000002B -S3154004CBC0000000000000000000000000000000001B -S3154004CBD0000000000000000000000000000000000B -S3154004CBE000000000000000000000000000000000FB -S3154004CBF000000000000000000000000000000000EB -S3154004CC0000000000000000000000000000000000DA -S3154004CC1000000000000000000000000000000000CA -S3154004CC2000000000000000000000000000000000BA -S3154004CC3000000000000000000000000000000000AA -S3154004CC40000000000000000000000000000000009A -S3154004CC50000000000000000000000000000000008A -S3154004CC60000000000000000000000000000000007A -S3154004CC70000000000000000000000000000000006A -S3154004CC80000000000000000000000000000000005A -S3154004CC90000000000000000000000000000000004A -S3154004CCA0000000000000000000000000000000003A -S3154004CCB0000000000000000000000000000000002A -S3154004CCC0000000000000000000000000000000001A -S3154004CCD0000000000000000000000000000000000A -S3154004CCE000000000000000000000000000000000FA -S3154004CCF000000000000000000000000000000000EA -S3154004CD0000000000000000000000000000000000D9 -S3154004CD1000000000000000000000000000000000C9 -S3154004CD2000000000000000000000000000000000B9 -S3154004CD3000000000000000000000000000000000A9 -S3154004CD400000000000000000000000000000000099 -S3154004CD500000000000000000000000000000000089 -S3154004CD600000000000000000000000000000000079 -S3154004CD700000000000000000000000000000000069 -S3154004CD800000000000000000000000000000000059 -S3154004CD900000000000000000000000000000000049 -S3154004CDA00000000000000000000000000000000039 -S3154004CDB00000000000000000000000000000000029 -S3154004CDC00000000000000000000000000000000019 -S3154004CDD00000000000000000000000000000000009 -S3154004CDE000000000000000000000000000000000F9 -S3154004CDF000000000000000000000000000000000E9 -S3154004CE0000000000000000000000000000000000D8 -S3154004CE1000000000000000000000000000000000C8 -S3154004CE2000000000000000000000000000000000B8 -S3154004CE3000000000000000000000000000000000A8 -S3154004CE400000000000000000000000000000000098 -S3154004CE500000000000000000000000000000000088 -S3154004CE600000000000000000000000000000000078 -S3154004CE700000000000000000000000000000000068 -S3154004CE800000000000000000000000000000000058 -S3154004CE900000000000000000000000000000000048 -S3154004CEA00000000000000000000000000000000038 -S3154004CEB00000000000000000000000000000000028 -S3154004CEC00000000000000000000000000000000018 -S3154004CED00000000000000000000000000000000008 -S3154004CEE000000000000000000000000000000000F8 -S3154004CEF000000000000000000000000000000000E8 -S3154004CF0000000000000000000000000000000000D7 -S3154004CF1000000000000000000000000000000000C7 -S3154004CF2000000000000000000000000000000000B7 -S3154004CF3000000000000000000000000000000000A7 -S3154004CF400000000000000000000000000000000097 -S3154004CF500000000000000000000000000000000087 -S3154004CF600000000000000000000000000000000077 -S3154004CF700000000000000000000000000000000067 -S3154004CF800000000000000000000000000000000057 -S3154004CF900000000000000000000000000000000047 -S3154004CFA00000000000000000000000000000000037 -S3154004CFB00000000000000000000000000000000027 -S3154004CFC00000000000000000000000000000000017 -S3154004CFD00000000000000000000000000000000007 -S3154004CFE000000000000000000000000000000000F7 -S3154004CFF000000000000000000000000000000000E7 -S3154004D00000000000000000000000000000000000D6 -S3154004D01000000000000000000000000000000000C6 -S3154004D02000000000000000000000000000000000B6 -S3154004D03000000000000000000000000000000000A6 -S3154004D0400000000000000000000000000000000096 -S3154004D0500000000000000000000000000000000086 -S3154004D0600000000000000000000000000000000076 -S3154004D0700000000000000000000000000000000066 -S3154004D0800000000000000000000000000000000056 -S3154004D0900000000000000000000000000000000046 -S3154004D0A00000000000000000000000000000000036 -S3154004D0B00000000000000000000000000000000026 -S3154004D0C00000000000000000000000000000000016 -S3154004D0D00000000000000000000000000000000006 -S3154004D0E000000000000000000000000000000000F6 -S3154004D0F000000000000000000000000000000000E6 -S3154004D10000000000000000000000000000000000D5 -S3154004D11000000000000000000000000000000000C5 -S3154004D12000000000000000000000000000000000B5 -S3154004D13000000000000000000000000000000000A5 -S3154004D1400000000000000000000000000000000095 -S3154004D1500000000000000000000000000000000085 -S3154004D1600000000000000000000000000000000075 -S3154004D1700000000000000000000000000000000065 -S3154004D1800000000000000000000000000000000055 -S3154004D1900000000000000000000000000000000045 -S3154004D1A00000000000000000000000000000000035 -S3154004D1B00000000000000000000000000000000025 -S3154004D1C00000000000000000000000000000000015 -S3154004D1D00000000000000000000000000000000005 -S3154004D1E000000000000000000000000000000000F5 -S3154004D1F000000000000000000000000000000000E5 -S3154004D20000000000000000000000000000000000D4 -S3154004D21000000000000000000000000000000000C4 -S3154004D22000000000000000000000000000000000B4 -S3154004D23000000000000000000000000000000000A4 -S3154004D2400000000000000000000000000000000094 -S3154004D2500000000000000000000000000000000084 -S3154004D2600000000000000000000000000000000074 -S3154004D2700000000000000000000000000000000064 -S3154004D2800000000000000000000000000000000054 -S3154004D2900000000000000000000000000000000044 -S3154004D2A00000000000000000000000000000000034 -S3154004D2B00000000000000000000000000000000024 -S3154004D2C00000000000000000000000000000000014 -S3154004D2D00000000000000000000000000000000004 -S3154004D2E000000000000000000000000000000000F4 -S3154004D2F000000000000000000000000000000000E4 -S3154004D30000000000000000000000000000000000D3 -S3154004D31000000000000000000000000000000000C3 -S3154004D32000000000000000000000000000000000B3 -S3154004D33000000000000000000000000000000000A3 -S3154004D3400000000000000000000000000000000093 -S3154004D3500000000000000000000000000000000083 -S3154004D3600000000000000000000000000000000073 -S3154004D3700000000000000000000000000000000063 -S3154004D3800000000000000000000000000000000053 -S3154004D3900000000000000000000000000000000043 -S3154004D3A00000000000000000000000000000000033 -S3154004D3B00000000000000000000000000000000023 -S3154004D3C00000000000000000000000000000000013 -S3154004D3D00000000000000000000000000000000003 -S3154004D3E000000000000000000000000000000000F3 -S3154004D3F000000000000000000000000000000000E3 -S3154004D40000000000000000000000000000000000D2 -S3154004D41000000000000000000000000000000000C2 -S3154004D42000000000000000000000000000000000B2 -S3154004D43000000000000000000000000000000000A2 -S3154004D4400000000000000000000000000000000092 -S3154004D4500000000000000000000000000000000082 -S3154004D4600000000000000000000000000000000072 -S3154004D4700000000000000000000000000000000062 -S3154004D4800000000000000000000000000000000052 -S3154004D4900000000000000000000000000000000042 -S3154004D4A00000000000000000000000000000000032 -S3154004D4B00000000000000000000000000000000022 -S3154004D4C00000000000000000000000000000000012 -S3154004D4D00000000000000000000000000000000002 -S3154004D4E000000000000000000000000000000000F2 -S3154004D4F000000000000000000000000000000000E2 -S3154004D50000000000000000000000000000000000D1 -S3154004D51000000000000000000000000000000000C1 -S3154004D52000000000000000000000000000000000B1 -S3154004D53000000000000000000000000000000000A1 -S3154004D5400000000000000000000000000000000091 -S3154004D5500000000000000000000000000000000081 -S3154004D5600000000000000000000000000000000071 -S3154004D5700000000000000000000000000000000061 -S3154004D5800000000000000000000000000000000051 -S3154004D5900000000000000000000000000000000041 -S3154004D5A00000000000000000000000000000000031 -S3154004D5B00000000000000000000000000000000021 -S3154004D5C00000000000000000000000000000000011 -S3154004D5D00000000000000000000000000000000001 -S3154004D5E000000000000000000000000000000000F1 -S3154004D5F000000000000000000000000000000000E1 -S3154004D60000000000000000000000000000000000D0 -S3154004D61000000000000000000000000000000000C0 -S3154004D62000000000000000000000000000000000B0 -S3154004D63000000000000000000000000000000000A0 -S3154004D6400000000000000000000000000000000090 -S3154004D6500000000000000000000000000000000080 -S3154004D6600000000000000000000000000000000070 -S3154004D6700000000000000000000000000000000060 -S3154004D6800000000000000000000000000000000050 -S3154004D6900000000000000000000000000000000040 -S3154004D6A00000000000000000000000000000000030 -S3154004D6B00000000000000000000000000000000020 -S3154004D6C00000000000000000000000000000000010 -S3154004D6D00000000000000000000000000000000000 -S3154004D6E000000000000000000000000000000000F0 -S3154004D6F000000000000000000000000000000000E0 -S3154004D70000000000000000000000000000000000CF -S3154004D71000000000000000000000000000000000BF -S3154004D72000000000000000000000000000000000AF -S3154004D730000000000000000000000000000000009F -S3154004D740000000000000000000000000000000008F -S3154004D750000000000000000000000000000000007F -S3154004D760000000000000000000000000000000006F -S3154004D770000000000000000000000000000000005F -S3154004D780000000000000000000000000000000004F -S3154004D790000000000000000000000000000000003F -S3154004D7A0000000000000000000000000000000002F -S3154004D7B0000000000000000000000000000000001F -S3154004D7C0000000000000000000000000000000000F -S3154004D7D000000000000000000000000000000000FF -S3154004D7E000000000000000000000000000000000EF -S3154004D7F000000000000000000000000000000000DF -S3154004D80000000000000000000000000000000000CE -S3154004D81000000000000000000000000000000000BE -S3154004D82000000000000000000000000000000000AE -S3154004D830000000000000000000000000000000009E -S3154004D840000000000000000000000000000000008E -S3154004D850000000000000000000000000000000007E -S3154004D860000000000000000000000000000000006E -S3154004D870000000000000000000000000000000005E -S3154004D880000000000000000000000000000000004E -S3154004D890000000000000000000000000000000003E -S3154004D8A0000000000000000000000000000000002E -S3154004D8B0000000000000000000000000000000001E -S3154004D8C0000000000000000000000000000000000E -S3154004D8D000000000000000000000000000000000FE -S3154004D8E000000000000000000000000000000000EE -S3154004D8F000000000000000000000000000000000DE -S3154004D90000000000000000000000000000000000CD -S3154004D91000000000000000000000000000000000BD -S3154004D92000000000000000000000000000000000AD -S3154004D930000000000000000000000000000000009D -S3154004D940000000000000000000000000000000008D -S3154004D950000000000000000000000000000000007D -S3154004D960000000000000000000000000000000006D -S3154004D970000000000000000000000000000000005D -S3154004D980000000000000000000000000000000004D -S3154004D990000000000000000000000000000000003D -S3154004D9A0000000000000000000000000000000002D -S3154004D9B0000000000000000000000000000000001D -S3154004D9C0000000000000000000000000000000000D -S3154004D9D000000000000000000000000000000000FD -S3154004D9E000000000000000000000000000000000ED -S3154004D9F000000000000000000000000000000000DD -S3154004DA0000000000000000000000000000000000CC -S3154004DA1000000000000000000000000000000000BC -S3154004DA2000000000000000000000000000000000AC -S3154004DA30000000000000000000000000000000009C -S3154004DA40000000000000000000000000000000008C -S3154004DA50000000000000000000000000000000007C -S3154004DA60000000000000000000000000000000006C -S3154004DA70000000000000000000000000000000005C -S3154004DA80000000000000000000000000000000004C -S3154004DA90000000000000000000000000000000003C -S3154004DAA0000000000000000000000000000000002C -S3154004DAB0000000000000000000000000000000001C -S3154004DAC0000000000000000000000000000000000C -S3154004DAD000000000000000000000000000000000FC -S3154004DAE000000000000000000000000000000000EC -S3154004DAF000000000000000000000000000000000DC -S3154004DB0000000000000000000000000000000000CB -S3154004DB1000000000000000000000000000000000BB -S3154004DB2000000000000000000000000000000000AB -S3154004DB30000000000000000000000000000000009B -S3154004DB40000000000000000000000000000000008B -S3154004DB50000000000000000000000000000000007B -S3154004DB60000000000000000000000000000000006B -S3154004DB70000000000000000000000000000000005B -S3154004DB80000000000000000000000000000000004B -S3154004DB90000000000000000000000000000000003B -S3154004DBA0000000000000000000000000000000002B -S3154004DBB0000000000000000000000000000000001B -S3154004DBC0000000000000000000000000000000000B -S3154004DBD000000000000000000000000000000000FB -S3154004DBE000000000000000000000000000000000EB -S3154004DBF000000000000000000000000000000000DB -S3154004DC0000000000000000000000000000000000CA -S3154004DC1000000000000000000000000000000000BA -S3154004DC2000000000000000000000000000000000AA -S3154004DC30000000000000000000000000000000009A -S3154004DC40000000000000000000000000000000008A -S3154004DC50000000000000000000000000000000007A -S3154004DC60000000000000000000000000000000006A -S3154004DC70000000000000000000000000000000005A -S3154004DC80000000000000000000000000000000004A -S3154004DC90000000000000000000000000000000003A -S3154004DCA0000000000000000000000000000000002A -S3154004DCB0000000000000000000000000000000001A -S3154004DCC0000000000000000000000000000000000A -S3154004DCD000000000000000000000000000000000FA -S3154004DCE000000000000000000000000000000000EA -S3154004DCF000000000000000000000000000000000DA -S3154004DD0000000000000000000000000000000000C9 -S3154004DD1000000000000000000000000000000000B9 -S3154004DD2000000000000000000000000000000000A9 -S3154004DD300000000000000000000000000000000099 -S3154004DD400000000000000000000000000000000089 -S3154004DD500000000000000000000000000000000079 -S3154004DD600000000000000000000000000000000069 -S3154004DD700000000000000000000000000000000059 -S3154004DD800000000000000000000000000000000049 -S3154004DD900000000000000000000000000000000039 -S3154004DDA00000000000000000000000000000000029 -S3154004DDB00000000000000000000000000000000019 -S3154004DDC00000000000000000000000000000000009 -S3154004DDD000000000000000000000000000000000F9 -S3154004DDE000000000000000000000000000000000E9 -S3154004DDF000000000000000000000000000000000D9 -S3154004DE0000000000000000000000000000000000C8 -S3154004DE1000000000000000000000000000000000B8 -S3154004DE2000000000000000000000000000000000A8 -S3154004DE300000000000000000000000000000000098 -S3154004DE400000000000000000000000000000000088 -S3154004DE500000000000000000000000000000000078 -S3154004DE600000000000000000000000000000000068 -S3154004DE700000000000000000000000000000000058 -S3154004DE800000000000000000000000000000000048 -S3154004DE900000000000000000000000000000000038 -S3154004DEA00000000000000000000000000000000028 -S3154004DEB00000000000000000000000000000000018 -S3154004DEC00000000000000000000000000000000008 -S3154004DED000000000000000000000000000000000F8 -S3154004DEE000000000000000000000000000000000E8 -S3154004DEF000000000000000000000000000000000D8 -S3154004DF0000000000000000000000000000000000C7 -S3154004DF1000000000000000000000000000000000B7 -S3154004DF2000000000000000000000000000000000A7 -S3154004DF300000000000000000000000000000000097 -S3154004DF400000000000000000000000000000000087 -S3154004DF500000000000000000000000000000000077 -S3154004DF600000000000000000000000000000000067 -S3154004DF700000000000000000000000000000000057 -S3154004DF800000000000000000000000000000000047 -S3154004DF900000000000000000000000000000000037 -S3154004DFA00000000000000000000000000000000027 -S3154004DFB00000000000000000000000000000000017 -S3154004DFC00000000000000000000000000000000007 -S3154004DFD000000000000000000000000000000000F7 -S3154004DFE000000000000000000000000000000000E7 -S3154004DFF000000000000000000000000000000000D7 -S3154004E00000000000000000000000000000000000C6 -S3154004E01000000000000000000000000000000000B6 -S3154004E02000000000000000000000000000000000A6 -S3154004E0300000000000000000000000000000000096 -S3154004E0400000000000000000000000000000000086 -S3154004E0500000000000000000000000000000000076 -S3154004E0600000000000000000000000000000000066 -S3154004E0700000000000000000000000000000000056 -S3154004E0800000000000000000000000000000000046 -S3154004E0900000000000000000000000000000000036 -S3154004E0A00000000000000000000000000000000026 -S3154004E0B00000000000000000000000000000000016 -S3154004E0C00000000000000000000000000000000006 -S3154004E0D000000000000000000000000000000000F6 -S3154004E0E000000000000000000000000000000000E6 -S3154004E0F000000000000000000000000000000000D6 -S3154004E10000000000000000000000000000000000C5 -S3154004E11000000000000000000000000000000000B5 -S3154004E12000000000000000000000000000000000A5 -S3154004E1300000000000000000000000000000000095 -S3154004E1400000000000000000000000000000000085 -S3154004E1500000000000000000000000000000000075 -S3154004E1600000000000000000000000000000000065 -S3154004E1700000000000000000000000000000000055 -S3154004E1800000000000000000000000000000000045 -S3154004E1900000000000000000000000000000000035 -S3154004E1A00000000000000000000000000000000025 -S3154004E1B00000000000000000000000000000000015 -S3154004E1C00000000000000000000000000000000005 -S3154004E1D000000000000000000000000000000000F5 -S3154004E1E000000000000000000000000000000000E5 -S3154004E1F000000000000000000000000000000000D5 -S3154004E20000000000000000000000000000000000C4 -S3154004E21000000000000000000000000000000000B4 -S3154004E22000000000000000000000000000000000A4 -S3154004E2300000000000000000000000000000000094 -S3154004E2400000000000000000000000000000000084 -S3154004E2500000000000000000000000000000000074 -S3154004E2600000000000000000000000000000000064 -S3154004E2700000000000000000000000000000000054 -S3154004E2800000000000000000000000000000000044 -S3154004E2900000000000000000000000000000000034 -S3154004E2A00000000000000000000000000000000024 -S3154004E2B00000000000000000000000000000000014 -S3154004E2C00000000000000000000000000000000004 -S3154004E2D000000000000000000000000000000000F4 -S3154004E2E000000000000000000000000000000000E4 -S3154004E2F000000000000000000000000000000000D4 -S3154004E30000000000000000000000000000000000C3 -S3154004E31000000000000000000000000000000000B3 -S3154004E32000000000000000000000000000000000A3 -S3154004E3300000000000000000000000000000000093 -S3154004E3400000000000000000000000000000000083 -S3154004E3500000000000000000000000000000000073 -S3154004E3600000000000000000000000000000000063 -S3154004E3700000000000000000000000000000000053 -S3154004E3800000000000000000000000000000000043 -S3154004E3900000000000000000000000000000000033 -S3154004E3A00000000000000000000000000000000023 -S3154004E3B00000000000000000000000000000000013 -S3154004E3C00000000000000000000000000000000003 -S3154004E3D000000000000000000000000000000000F3 -S3154004E3E000000000000000000000000000000000E3 -S3154004E3F000000000000000000000000000000000D3 -S3154004E40000000000000000000000000000000000C2 -S3154004E41000000000000000000000000000000000B2 -S3154004E42000000000000000000000000000000000A2 -S3154004E4300000000000000000000000000000000092 -S3154004E4400000000000000000000000000000000082 -S3154004E4500000000000000000000000000000000072 -S3154004E4600000000000000000000000000000000062 -S3154004E4700000000000000000000000000000000052 -S3154004E4800000000000000000000000000000000042 -S3154004E4900000000000000000000000000000000032 -S3154004E4A00000000000000000000000000000000022 -S3154004E4B00000000000000000000000000000000012 -S3154004E4C00000000000000000000000000000000002 -S3154004E4D000000000000000000000000000000000F2 -S3154004E4E000000000000000000000000000000000E2 -S3154004E4F000000000000000000000000000000000D2 -S3154004E50000000000000000000000000000000000C1 -S3154004E51000000000000000000000000000000000B1 -S3154004E52000000000000000000000000000000000A1 -S3154004E5300000000000000000000000000000000091 -S3154004E5400000000000000000000000000000000081 -S3154004E5500000000000000000000000000000000071 -S3154004E5600000000000000000000000000000000061 -S3154004E5700000000000000000000000000000000051 -S3154004E5800000000000000000000000000000000041 -S3154004E5900000000000000000000000000000000031 -S3154004E5A00000000000000000000000000000000021 -S3154004E5B00000000000000000000000000000000011 -S3154004E5C00000000000000000000000000000000001 -S3154004E5D000000000000000000000000000000000F1 -S3154004E5E000000000000000000000000000000000E1 -S3154004E5F000000000000000000000000000000000D1 -S3154004E60000000000000000000000000000000000C0 -S3154004E61000000000000000000000000000000000B0 -S3154004E62000000000000000000000000000000000A0 -S3154004E6300000000000000000000000000000000090 -S3154004E6400000000000000000000000000000000080 -S3154004E6500000000000000000000000000000000070 -S3154004E6600000000000000000000000000000000060 -S3154004E6700000000000000000000000000000000050 -S3154004E6800000000000000000000000000000000040 -S3154004E6900000000000000000000000000000000030 -S3154004E6A00000000000000000000000000000000020 -S3154004E6B00000000000000000000000000000000010 -S3154004E6C00000000000000000000000000000000000 -S3154004E6D000000000000000000000000000000000F0 -S3154004E6E000000000000000000000000000000000E0 -S3154004E6F000000000000000000000000000000000D0 -S3154004E70000000000000000000000000000000000BF -S3154004E71000000000000000000000000000000000AF -S3154004E720000000000000000000000000000000009F -S3154004E730000000000000000000000000000000008F -S3154004E740000000000000000000000000000000007F -S3154004E750000000000000000000000000000000006F -S3154004E760000000000000000000000000000000005F -S3154004E770000000000000000000000000000000004F -S3154004E780000000000000000000000000000000003F -S3154004E790000000000000000000000000000000002F -S3154004E7A0000000000000000000000000000000001F -S3154004E7B0000000000000000000000000000000000F -S3154004E7C000000000000000000000000000000000FF -S3154004E7D000000000000000000000000000000000EF -S3154004E7E000000000000000000000000000000000DF -S3154004E7F000000000000000000000000000000000CF -S3154004E80000000000000000000000000000000000BE -S3154004E81000000000000000000000000000000000AE -S3154004E820000000000000000000000000000000009E -S3154004E830000000000000000000000000000000008E -S3154004E840000000000000000000000000000000007E -S3154004E850000000000000000000000000000000006E -S3154004E860000000000000000000000000000000005E -S3154004E870000000000000000000000000000000004E -S3154004E880000000000000000000000000000000003E -S3154004E890000000000000000000000000000000002E -S3154004E8A0000000000000000000000000000000001E -S3154004E8B0000000000000000000000000000000000E -S3154004E8C000000000000000000000000000000000FE -S3154004E8D000000000000000000000000000000000EE -S3154004E8E000000000000000000000000000000000DE -S3154004E8F000000000000000000000000000000000CE -S3154004E90000000000000000000000000000000000BD -S3154004E91000000000000000000000000000000000AD -S3154004E920000000000000000000000000000000009D -S3154004E930000000000000000000000000000000008D -S3154004E940000000000000000000000000000000007D -S3154004E950000000000000000000000000000000006D -S3154004E960000000000000000000000000000000005D -S3154004E970000000000000000000000000000000004D -S3154004E980000000000000000000000000000000003D -S3154004E990000000000000000000000000000000002D -S3154004E9A0000000000000000000000000000000001D -S3154004E9B0000000000000000000000000000000000D -S3154004E9C000000000000000000000000000000000FD -S3154004E9D000000000000000000000000000000000ED -S3154004E9E000000000000000000000000000000000DD -S3154004E9F000000000000000000000000000000000CD -S3154004EA0000000000000000000000000000000000BC -S3154004EA1000000000000000000000000000000000AC -S3154004EA20000000000000000000000000000000009C -S3154004EA30000000000000000000000000000000008C -S3154004EA40000000000000000000000000000000007C -S3154004EA50000000000000000000000000000000006C -S3154004EA60000000000000000000000000000000005C -S3154004EA70000000000000000000000000000000004C -S3154004EA80000000000000000000000000000000003C -S3154004EA90000000000000000000000000000000002C -S3154004EAA0000000000000000000000000000000001C -S3154004EAB0000000000000000000000000000000000C -S3154004EAC000000000000000000000000000000000FC -S3154004EAD000000000000000000000000000000000EC -S3154004EAE000000000000000000000000000000000DC -S3154004EAF000000000000000000000000000000000CC -S3154004EB0000000000000000000000000000000000BB -S3154004EB1000000000000000000000000000000000AB -S3154004EB20000000000000000000000000000000009B -S3154004EB30000000000000000000000000000000008B -S3154004EB40000000000000000000000000000000007B -S3154004EB50000000000000000000000000000000006B -S3154004EB60000000000000000000000000000000005B -S3154004EB70000000000000000000000000000000004B -S3154004EB80000000000000000000000000000000003B -S3154004EB90000000000000000000000000000000002B -S3154004EBA0000000000000000000000000000000001B -S3154004EBB0000000000000000000000000000000000B -S3154004EBC000000000000000000000000000000000FB -S3154004EBD000000000000000000000000000000000EB -S3154004EBE000000000000000000000000000000000DB -S3154004EBF000000000000000000000000000000000CB -S3154004EC0000000000000000000000000000000000BA -S3154004EC1000000000000000000000000000000000AA -S3154004EC20000000000000000000000000000000009A -S3154004EC30000000000000000000000000000000008A -S3154004EC40000000000000000000000000000000007A -S3154004EC50000000000000000000000000000000006A -S3154004EC60000000000000000000000000000000005A -S3154004EC70000000000000000000000000000000004A -S3154004EC80000000000000000000000000000000003A -S3154004EC90000000000000000000000000000000002A -S3154004ECA0000000000000000000000000000000001A -S3154004ECB0000000000000000000000000000000000A -S3154004ECC000000000000000000000000000000000FA -S3154004ECD000000000000000000000000000000000EA -S3154004ECE000000000000000000000000000000000DA -S3154004ECF000000000000000000000000000000000CA -S3154004ED0000000000000000000000000000000000B9 -S3154004ED1000000000000000000000000000000000A9 -S3154004ED200000000000000000000000000000000099 -S3154004ED300000000000000000000000000000000089 -S3154004ED400000000000000000000000000000000079 -S3154004ED500000000000000000000000000000000069 -S3154004ED600000000000000000000000000000000059 -S3154004ED700000000000000000000000000000000049 -S3154004ED800000000000000000000000000000000039 -S3154004ED900000000000000000000000000000000029 -S3154004EDA00000000000000000000000000000000019 -S3154004EDB00000000000000000000000000000000009 -S3154004EDC000000000000000000000000000000000F9 -S3154004EDD000000000000000000000000000000000E9 -S3154004EDE000000000000000000000000000000000D9 -S3154004EDF000000000000000000000000000000000C9 -S3154004EE0000000000000000000000000000000000B8 -S3154004EE1000000000000000000000000000000000A8 -S3154004EE200000000000000000000000000000000098 -S3154004EE300000000000000000000000000000000088 -S3154004EE400000000000000000000000000000000078 -S3154004EE500000000000000000000000000000000068 -S3154004EE600000000000000000000000000000000058 -S3154004EE700000000000000000000000000000000048 -S3154004EE800000000000000000000000000000000038 -S3154004EE900000000000000000000000000000000028 -S3154004EEA00000000000000000000000000000000018 -S3154004EEB00000000000000000000000000000000008 -S3154004EEC000000000000000000000000000000000F8 -S3154004EED000000000000000000000000000000000E8 -S3154004EEE000000000000000000000000000000000D8 -S3154004EEF000000000000000000000000000000000C8 -S3154004EF0000000000000000000000000000000000B7 -S3154004EF1000000000000000000000000000000000A7 -S3154004EF200000000000000000000000000000000097 -S3154004EF300000000000000000000000000000000087 -S3154004EF400000000000000000000000000000000077 -S3154004EF500000000000000000000000000000000067 -S3154004EF600000000000000000000000000000000057 -S3154004EF700000000000000000000000000000000047 -S3154004EF800000000000000000000000000000000037 -S3154004EF900000000000000000000000000000000027 -S3154004EFA00000000000000000000000000000000017 -S3154004EFB00000000000000000000000000000000007 -S3154004EFC000000000000000000000000000000000F7 -S3154004EFD000000000000000000000000000000000E7 -S3154004EFE000000000000000000000000000000000D7 -S3154004EFF000000000000000000000000000000000C7 -S3154004F00000000000000000000000000000000000B6 -S3154004F01000000000000000000000000000000000A6 -S3154004F0200000000000000000000000000000000096 -S3154004F0300000000000000000000000000000000086 -S3154004F0400000000000000000000000000000000076 -S3154004F0500000000000000000000000000000000066 -S3154004F0600000000000000000000000000000000056 -S3154004F0700000000000000000000000000000000046 -S3154004F0800000000000000000000000000000000036 -S3154004F0900000000000000000000000000000000026 -S3154004F0A00000000000000000000000000000000016 -S3154004F0B00000000000000000000000000000000006 -S3154004F0C000000000000000000000000000000000F6 -S3154004F0D000000000000000000000000000000000E6 -S3154004F0E000000000000000000000000000000000D6 -S3154004F0F000000000000000000000000000000000C6 -S3154004F10000000000000000000000000000000000B5 -S3154004F11000000000000000000000000000000000A5 -S3154004F1200000000000000000000000000000000095 -S3154004F1300000000000000000000000000000000085 -S3154004F1400000000000000000000000000000000075 -S3154004F1500000000000000000000000000000000065 -S3154004F1600000000000000000000000000000000055 -S3154004F1700000000000000000000000000000000045 -S3154004F1800000000000000000000000000000000035 -S3154004F1900000000000000000000000000000000025 -S3154004F1A00000000000000000000000000000000015 -S3154004F1B00000000000000000000000000000000005 -S3154004F1C000000000000000000000000000000000F5 -S3154004F1D000000000000000000000000000000000E5 -S3154004F1E000000000000000000000000000000000D5 -S3154004F1F000000000000000000000000000000000C5 -S3154004F20000000000000000000000000000000000B4 -S3154004F21000000000000000000000000000000000A4 -S3154004F2200000000000000000000000000000000094 -S3154004F2300000000000000000000000000000000084 -S3154004F2400000000000000000000000000000000074 -S3154004F2500000000000000000000000000000000064 -S3154004F2600000000000000000000000000000000054 -S3154004F2700000000000000000000000000000000044 -S3154004F2800000000000000000000000000000000034 -S3154004F2900000000000000000000000000000000024 -S3154004F2A00000000000000000000000000000000014 -S3154004F2B00000000000000000000000000000000004 -S3154004F2C000000000000000000000000000000000F4 -S3154004F2D000000000000000000000000000000000E4 -S3154004F2E000000000000000000000000000000000D4 -S3154004F2F000000000000000000000000000000000C4 -S3154004F30000000000000000000000000000000000B3 -S3154004F31000000000000000000000000000000000A3 -S3154004F3200000000000000000000000000000000093 -S3154004F3300000000000000000000000000000000083 -S3154004F3400000000000000000000000000000000073 -S3154004F3500000000000000000000000000000000063 -S3154004F3600000000000000000000000000000000053 -S3154004F3700000000000000000000000000000000043 -S3154004F3800000000000000000000000000000000033 -S3154004F3900000000000000000000000000000000023 -S3154004F3A00000000000000000000000000000000013 -S3154004F3B00000000000000000000000000000000003 -S3154004F3C000000000000000000000000000000000F3 -S3154004F3D000000000000000000000000000000000E3 -S3154004F3E000000000000000000000000000000000D3 -S3154004F3F000000000000000000000000000000000C3 -S3154004F40000000000000000000000000000000000B2 -S3154004F41000000000000000000000000000000000A2 -S3154004F4200000000000000000000000000000000092 -S3154004F4300000000000000000000000000000000082 -S3154004F4400000000000000000000000000000000072 -S3154004F4500000000000000000000000000000000062 -S3154004F4600000000000000000000000000000000052 -S3154004F4700000000000000000000000000000000042 -S3154004F4800000000000000000000000000000000032 -S3154004F4900000000000000000000000000000000022 -S3154004F4A00000000000000000000000000000000012 -S3154004F4B00000000000000000000000000000000002 -S3154004F4C000000000000000000000000000000000F2 -S3154004F4D000000000000000000000000000000000E2 -S3154004F4E000000000000000000000000000000000D2 -S3154004F4F000000000000000000000000000000000C2 -S3154004F50000000000000000000000000000000000B1 -S3154004F51000000000000000000000000000000000A1 -S3154004F5200000000000000000000000000000000091 -S3154004F5300000000000000000000000000000000081 -S3154004F5400000000000000000000000000000000071 -S3154004F5500000000000000000000000000000000061 -S3154004F5600000000000000000000000000000000051 -S3154004F5700000000000000000000000000000000041 -S3154004F5800000000000000000000000000000000031 -S3154004F5900000000000000000000000000000000021 -S3154004F5A00000000000000000000000000000000011 -S3154004F5B00000000000000000000000000000000001 -S3154004F5C000000000000000000000000000000000F1 -S3154004F5D000000000000000000000000000000000E1 -S3154004F5E000000000000000000000000000000000D1 -S3154004F5F000000000000000000000000000000000C1 -S3154004F60000000000000000000000000000000000B0 -S3154004F61000000000000000000000000000000000A0 -S3154004F6200000000000000000000000000000000090 -S3154004F6300000000000000000000000000000000080 -S3154004F6400000000000000000000000000000000070 -S3154004F6500000000000000000000000000000000060 -S3154004F6600000000000000000000000000000000050 -S3154004F6700000000000000000000000000000000040 -S3154004F6800000000000000000000000000000000030 -S3154004F6900000000000000000000000000000000020 -S3154004F6A00000000000000000000000000000000010 -S3154004F6B00000000000000000000000000000000000 -S3154004F6C000000000000000000000000000000000F0 -S3154004F6D000000000000000000000000000000000E0 -S3154004F6E000000000000000000000000000000000D0 -S3154004F6F000000000000000000000000000000000C0 -S3154004F70000000000000000000000000000000000AF -S3154004F710000000000000000000000000000000009F -S3154004F720000000000000000000000000000000008F -S3154004F730000000000000000000000000000000007F -S3154004F740000000000000000000000000000000006F -S3154004F750000000000000000000000000000000005F -S3154004F760000000000000000000000000000000004F -S3154004F770000000000000000000000000000000003F -S3154004F780000000000000000000000000000000002F -S3154004F790000000000000000000000000000000001F -S3154004F7A0000000000000000000000000000000000F -S3154004F7B000000000000000000000000000000000FF -S3154004F7C000000000000000000000000000000000EF -S3154004F7D000000000000000000000000000000000DF -S3154004F7E000000000000000000000000000000000CF -S3154004F7F000000000000000000000000000000000BF -S3154004F80000000000000000000000000000000000AE -S3154004F810000000000000000000000000000000009E -S3154004F820000000000000000000000000000000008E -S3154004F830000000000000000000000000000000007E -S3154004F840000000000000000000000000000000006E -S3154004F850000000000000000000000000000000005E -S3154004F860000000000000000000000000000000004E -S3154004F870000000000000000000000000000000003E -S3154004F880000000000000000000000000000000002E -S3154004F890000000000000000000000000000000001E -S3154004F8A0000000000000000000000000000000000E -S3154004F8B000000000000000000000000000000000FE -S3154004F8C000000000000000000000000000000000EE -S3154004F8D000000000000000000000000000000000DE -S3154004F8E000000000000000000000000000000000CE -S3154004F8F000000000000000000000000000000000BE -S3154004F90000000000000000000000000000000000AD -S3154004F910000000000000000000000000000000009D -S3154004F920000000000000000000000000000000008D -S3154004F930000000000000000000000000000000007D -S3154004F940000000000000000000000000000000006D -S3154004F950000000000000000000000000000000005D -S3154004F960000000000000000000000000000000004D -S3154004F970000000000000000000000000000000003D -S3154004F980000000000000000000000000000000002D -S3154004F990000000000000000000000000000000001D -S3154004F9A0000000000000000000000000000000000D -S3154004F9B000000000000000000000000000000000FD -S3154004F9C000000000000000000000000000000000ED -S3154004F9D000000000000000000000000000000000DD -S3154004F9E000000000000000000000000000000000CD -S3154004F9F000000000000000000000000000000000BD -S3154004FA0000000000000000000000000000000000AC -S3154004FA10000000000000000000000000000000009C -S3154004FA20000000000000000000000000000000008C -S3154004FA30000000000000000000000000000000007C -S3154004FA40000000000000000000000000000000006C -S3154004FA50000000000000000000000000000000005C -S3154004FA60000000000000000000000000000000004C -S3154004FA70000000000000000000000000000000003C -S3154004FA80000000000000000000000000000000002C -S3154004FA90000000000000000000000000000000001C -S3154004FAA0000000000000000000000000000000000C -S3154004FAB000000000000000000000000000000000FC -S3154004FAC000000000000000000000000000000000EC -S3154004FAD000000000000000000000000000000000DC -S3154004FAE000000000000000000000000000000000CC -S3154004FAF000000000000000000000000000000000BC -S3154004FB0000000000000000000000000000000000AB -S3154004FB10000000000000000000000000000000009B -S3154004FB20000000000000000000000000000000008B -S3154004FB30000000000000000000000000000000007B -S3154004FB40000000000000000000000000000000006B -S3154004FB50000000000000000000000000000000005B -S3154004FB60000000000000000000000000000000004B -S3154004FB70000000000000000000000000000000003B -S3154004FB80000000000000000000000000000000002B -S3154004FB90000000000000000000000000000000001B -S3154004FBA0000000000000000000000000000000000B -S3154004FBB000000000000000000000000000000000FB -S3154004FBC000000000000000000000000000000000EB -S3154004FBD000000000000000000000000000000000DB -S3154004FBE000000000000000000000000000000000CB -S3154004FBF000000000000000000000000000000000BB -S3154004FC0000000000000000000000000000000000AA -S3154004FC10000000000000000000000000000000009A -S3154004FC20000000000000000000000000000000008A -S3154004FC30000000000000000000000000000000007A -S3154004FC40000000000000000000000000000000006A -S3154004FC50000000000000000000000000000000005A -S3154004FC60000000000000000000000000000000004A -S3154004FC70000000000000000000000000000000003A -S3154004FC80000000000000000000000000000000002A -S3154004FC90000000000000000000000000000000001A -S3154004FCA0000000000000000000000000000000000A -S3154004FCB000000000000000000000000000000000FA -S3154004FCC000000000000000000000000000000000EA -S3154004FCD000000000000000000000000000000000DA -S3154004FCE000000000000000000000000000000000CA -S3154004FCF000000000000000000000000000000000BA -S3154004FD0000000000000000000000000000000000A9 -S3154004FD100000000000000000000000000000000099 -S3154004FD200000000000000000000000000000000089 -S3154004FD300000000000000000000000000000000079 -S3154004FD400000000000000000000000000000000069 -S3154004FD500000000000000000000000000000000059 -S3154004FD600000000000000000000000000000000049 -S3154004FD700000000000000000000000000000000039 -S3154004FD800000000000000000000000000000000029 -S3154004FD900000000000000000000000000000000019 -S3154004FDA00000000000000000000000000000000009 -S3154004FDB000000000000000000000000000000000F9 -S3154004FDC000000000000000000000000000000000E9 -S3154004FDD000000000000000000000000000000000D9 -S3154004FDE000000000000000000000000000000000C9 -S3154004FDF000000000000000000000000000000000B9 -S3154004FE0000000000000000000000000000000000A8 -S3154004FE100000000000000000000000000000000098 -S3154004FE200000000000000000000000000000000088 -S3154004FE300000000000000000000000000000000078 -S3154004FE400000000000000000000000000000000068 -S3154004FE500000000000000000000000000000000058 -S3154004FE600000000000000000000000000000000048 -S3154004FE700000000000000000000000000000000038 -S3154004FE800000000000000000000000000000000028 -S3154004FE900000000000000000000000000000000018 -S3154004FEA00000000000000000000000000000000008 -S3154004FEB000000000000000000000000000000000F8 -S3154004FEC000000000000000000000000000000000E8 -S3154004FED000000000000000000000000000000000D8 -S3154004FEE000000000000000000000000000000000C8 -S3154004FEF000000000000000000000000000000000B8 -S3154004FF0000000000000000000000000000000000A7 -S3154004FF100000000000000000000000000000000097 -S3154004FF200000000000000000000000000000000087 -S3154004FF300000000000000000000000000000000077 -S3154004FF400000000000000000000000000000000067 -S3154004FF500000000000000000000000000000000057 -S3154004FF600000000000000000000000000000000047 -S3154004FF700000000000000000000000000000000037 -S3154004FF800000000000000000000000000000000027 -S3154004FF900000000000000000000000000000000017 -S3154004FFA00000000000000000000000000000000007 -S3154004FFB000000000000000000000000000000000F7 -S3154004FFC000000000000000000000000000000000E7 -S3154004FFD000000000000000000000000000000000D7 -S3154004FFE000000000000000000000000000000000C7 -S3154004FFF000000000000000000000000000000000B7 -S3154005000000000002000000030000000000000000A0 -S315400500100000000100000000FFFFFFFE0000000396 -S3154005002055555554FFFFFFFE0000000355555554E1 -S31540050030700FFFFE00000007100249240000000073 -S315400500400000000000000000000000020000000360 -S315400500500000000000000003FFFFFFFEFFFFFFFF5B -S3154005006000000002FFFFFFFD000000000000000049 -S31540050070000000010000000000000000FFFFFFFF38 -S315400500800000000000000001FFFFFFFFFFFFFFFF2C -S31540050090FFFFFFFF00000001FFFFFFFFFFFFFFFE21 -S315400500A00000000300000000FFFFFFFEFFFFFFFD0D -S315400500B000000000000000090000000700000001E4 -S315400500C0FFFFFFF700000002FFFFFFFCFFFFFFF801 -S315400500D000000002FFFFFFFCFFFFFFF8FFFFFFFCEC -S315400500E00000000200000008FFFFFFFCFFFFFFFEC7 -S315400500F0FFFFFFF8FFFFFFF800000001FFFFFFF8D5 -S31540050100FFFFFFF7000000000000000B00000002A3 -S31540050110000000050000002F000000020000001747 -S3154005012000003039000002A700000012FFFF076CEF -S315400501300000004DFFFFFCC600003039FFFFFD59AA -S31540050140FFFFFFEEFFFF076CFFFFFFB30000033A1B -S3154005015000000091FFFFE84100000000FFFFFD841D -S31540050160FFFED02F000000000000F6FA006E498120 -S315400501700000000000000000000000000000000034 -S31540050180FFFFF0000000000200000003000000062B -S3154005019000000002FFFFFFFDFFFFFFFA0000000021 -S315400501A0000000010000000000000000FFFFFFFF07 -S315400501B00000000000000001FFFFFFFFFFFFFFFFFB -S315400501C0FFFFFFFF00000001FFFFFFFFFFFFFFFEF0 -S315400501D000000003FFFFFFFAFFFFFFFEFFFFFFFDE5 -S315400501E000000006000000000000000000000009B5 -S315400501F000000000000000000000000000000000B4 -S31540050200000000000000000100000002000000039D -S315400502100000000000000000000000000000000093 -S31540050220000000004005050C400505D8400506A41C -S315400502300000000000000000000000000000000073 -S315400502400000000000000000000000000000000063 -S31540050250000000004001B5800000000000000000DD -S315400502600000000000000000000000000000000043 -S315400502700000000000000000000000000000000033 -S315400502800000000000000000000000000000000023 -S315400502900000000000000000000000000000000013 -S315400502A00000000000000000000000000000000003 -S315400502B000000000000000000000000000000000F3 -S315400502C000000000000000000000000000000001E2 -S315400502D0330EABCD1234E66DDEEC0005000B0000A7 -S315400502E000000000000000000000000000000000C3 -S315400502F000000000000000000000000000000000B3 -S3154005030000000000000000000000000000000000A2 -S315400503100000000000000000000000000000000092 -S315400503200000000000000000000000000000000082 -S315400503300000000000000000000000000000000072 -S315400503400000000000000000000000000000000062 -S315400503500000000000000000000000000000000052 -S315400503600000000000000000000000000000000042 -S315400503700000000000000000000000000000000032 -S315400503800000000000000000000000000000000022 -S315400503900000000000000000000000000000000012 -S315400503A00000000000000000000000000000000002 -S315400503B000000000000000000000000000000000F2 -S315400503C000000000000000000000000000000000E2 -S315400503D000000000000000000000000000000000D2 -S315400503E000000000000000000000000000000000C2 -S315400503F000000000000000000000000000000000B2 -S3154005040000000000000000000000000000000000A1 -S315400504100000000000000000000000000000000091 -S315400504200000000000000000000000000000000081 -S315400504300000000000000000000000000000000071 -S315400504400000000000000000000000000000000061 -S315400504500000000000000000000000000000000051 -S315400504600000000000000000000000000000000041 -S315400504700000000000000000000000000000000031 -S315400504800000000000000000000000000000000021 -S315400504900000000000000000000000000000000011 -S315400504A00000000000000000000000000000000001 -S315400504B000000000000000000000000000000000F1 -S315400504C000000000000000000000000000000000E1 -S315400504D000000000000000000000000000000000D1 -S315400504E000000000000000000000000000000000C1 -S315400504F000000000000000000000000000000000B1 -S3154005050000000000000000000000000000000000A0 -S315400505100000000000000000000000000000000090 -S315400505200000000000000000000000000000000080 -S315400505300000000000000000000000000000000070 -S315400505400000000000000000000000000000000060 -S315400505500000000000000000000000000000000050 -S315400505600000000000000000000000000000000040 -S315400505700000000000000000000000000000000030 -S315400505800000000000000000000000000000000020 -S315400505900000000000000000000000000000000010 -S315400505A00000000000000000000000000000000000 -S315400505B000000000000000000000000000000000F0 -S315400505C000000000000000000000000000000000E0 -S315400505D000000000000000000000000000000000D0 -S315400505E000000000000000000000000000000000C0 -S315400505F000000000000000000000000000000000B0 -S31540050600000000000000000000000000000000009F -S31540050610000000000000000000000000000000008F -S31540050620000000000000000000000000000000007F -S31540050630000000000000000000000000000000006F -S31540050640000000000000000000000000000000005F -S31540050650000000000000000000000000000000004F -S31540050660000000000000000000000000000000003F -S31540050670000000000000000000000000000000002F -S31540050680000000000000000000000000000000001F -S31540050690000000000000000000000000000000000F -S315400506A000000000000000000000000000000000FF -S315400506B000000000000000000000000000000000EF -S315400506C000000000000000000000000000000000DF -S315400506D000000000000000000000000000000000CF -S315400506E000000000000000000000000000000000BF -S315400506F000000000000000000000000000000000AF -S31540050700000000000000000000000000000000009E -S31540050710000000000000000000000000000000008E -S31540050720000000000000000000000000000000007E -S31540050730000000000000000000000000000000006E -S31540050740000000000000000000000000000000005E -S31540050750000000000000000000000000000000004E -S31540050760000000000000000000000000000000003E -S315400507704005022000000000FFFFFFFF00020000C9 -S315400507800000000000000000400507804005078086 -S3154005079040050788400507884005079040050790AE -S315400507A04005079840050798400507A0400507A05E -S315400507B0400507A8400507A8400507B0400507B00E -S315400507C0400507B8400507B8400507C0400507C0BE -S315400507D0400507C8400507C8400507D0400507D06E -S315400507E0400507D8400507D8400507E0400507E01E -S315400507F0400507E8400507E8400507F0400507F0CE -S31540050800400507F8400507F840050800400508007B -S315400508104005080840050808400508104005081029 -S3154005082040050818400508184005082040050820D9 -S315400508304005082840050828400508304005083089 -S315400508404005083840050838400508404005084039 -S3154005085040050848400508484005085040050850E9 -S315400508604005085840050858400508604005086099 -S315400508704005086840050868400508704005087049 -S3154005088040050878400508784005088040050880F9 -S3154005089040050888400508884005089040050890A9 -S315400508A04005089840050898400508A0400508A059 -S315400508B0400508A8400508A8400508B0400508B009 -S315400508C0400508B8400508B8400508C0400508C0B9 -S315400508D0400508C8400508C8400508D0400508D069 -S315400508E0400508D8400508D8400508E0400508E019 -S315400508F0400508E8400508E8400508F0400508F0C9 -S31540050900400508F8400508F8400509004005090076 -S315400509104005090840050908400509104005091024 -S3154005092040050918400509184005092040050920D4 -S315400509304005092840050928400509304005093084 -S315400509404005093840050938400509404005094034 -S3154005095040050948400509484005095040050950E4 -S315400509604005095840050958400509604005096094 -S315400509704005096840050968400509704005097044 -S3154005098040050978400509784005098040050980F4 -S3154005099040050988400509884005099040050990A4 -S315400509A04005099840050998400509A0400509A054 -S315400509B0400509A8400509A8400509B0400509B004 -S315400509C0400509B8400509B8400509C0400509C0B4 -S315400509D0400509C8400509C8400509D0400509D064 -S315400509E0400509D8400509D8400509E0400509E014 -S315400509F0400509E8400509E8400509F0400509F0C4 -S31540050A00400509F8400509F840050A0040050A0071 -S31540050A1040050A0840050A0840050A1040050A101F -S31540050A2040050A1840050A1840050A2040050A20CF -S31540050A3040050A2840050A2840050A3040050A307F -S31540050A4040050A3840050A3840050A4040050A402F -S31540050A5040050A4840050A4840050A5040050A50DF -S31540050A6040050A5840050A5840050A6040050A608F -S31540050A7040050A6840050A6840050A7040050A703F -S31540050A8040050A7840050A7840050A8040050A80EF -S31540050A9040050A8840050A8840050A9040050A909F -S31540050AA040050A9840050A9840050AA040050AA04F -S31540050AB040050AA840050AA840050AB040050AB0FF -S31540050AC040050AB840050AB840050AC040050AC0AF -S31540050AD040050AC840050AC840050AD040050AD05F -S31540050AE040050AD840050AD840050AE040050AE00F -S31540050AF040050AE840050AE840050AF040050AF0BF -S31540050B0040050AF840050AF840050B0040050B006C -S31540050B1040050B0840050B0840050B1040050B101A -S31540050B2040050B1840050B1840050B2040050B20CA -S31540050B3040050B2840050B2840050B3040050B307A -S31540050B4040050B3840050B3840050B4040050B402A -S31540050B5040050B4840050B4840050B5040050B50DA -S31540050B6040050B5840050B5840050B6040050B608A -S31540050B7040050B6840050B6840050B7040050B703A -S31540050B8040050B7840050B780000000040050B88B2 -S31540050B900000000000000000000000000000000208 -S31540050BA000000000000000000000000000000000FA -S31540050BB000000000000000000000000000000000EA -S31540050BC000000000000000000000000000000000DA -S31540050BD000000000000000000000000000000000CA -S31540050BE000000000000000000000000000000000BA -S31540050BF000000000000000000000000000000000AA -S31540050C000000000000000000000000000000000099 -S31540050C100000000000000000000000000000000089 -S31540050C200000000000000000000000000000000079 -S31540050C3080000100000000080000000700000006D3 -S31540050C40000000030000000000000000FFFF8AD0FE -S30940050C5080000310C2 -S70540000000BA diff --git a/designs/leon3-ge-hpe-mini/systest.c b/designs/leon3-ge-hpe-mini/systest.c deleted file mode 100644 index 100c2697..00000000 --- a/designs/leon3-ge-hpe-mini/systest.c +++ /dev/null @@ -1,10 +0,0 @@ - -main() - -{ - report_start(); - - base_test(); - - report_end(); -} diff --git a/designs/leon3-ge-hpe-mini/testbench.vhd b/designs/leon3-ge-hpe-mini/testbench.vhd deleted file mode 100644 index 24d811b3..00000000 --- a/designs/leon3-ge-hpe-mini/testbench.vhd +++ /dev/null @@ -1,472 +0,0 @@ ------------------------------------------------------------------------------ --- LEON3 Demonstration design test bench --- Copyright (C) 2004 Jiri Gaisler, Gaisler Research --- --- 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. ------------------------------------------------------------------------------- --- modified by Thomas Ameseder, Gleichmann Electronics 2004, 2005 to --- support the use of an external AHB slave and different HPE board versions ------------------------------------------------------------------------------- --- further adapted from Hpe_compact to Hpe_mini (Feb. 2005) ------------------------------------------------------------------------------- - - -library ieee; -use ieee.std_logic_1164.all; -library gaisler; -use gaisler.libdcom.all; -use gaisler.sim.all; -library techmap; -use techmap.gencomp.all; -library micron; -use micron.components.all; -library gleichmann; -use gleichmann.hpi.all; - -use work.config.all; -- configuration -use work.debug.all; - -entity testbench is - generic ( - fabtech : integer := CFG_FABTECH; - memtech : integer := CFG_MEMTECH; - padtech : integer := CFG_PADTECH; - clktech : integer := CFG_CLKTECH; - disas : integer := CFG_DISAS; -- Enable disassembly to console - dbguart : integer := CFG_DUART; -- Print UART on console - pclow : integer := CFG_PCLOW; - - clkperiod : integer := 40; -- system clock period - romwidth : integer := 32; -- rom data width (8/32) - romdepth : integer := 16; -- rom address depth - sramwidth : integer := 32; -- ram data width (8/16/32) - sramdepth : integer := 18; -- ram address depth - srambanks : integer := 2 -- number of ram banks - ); - port ( - pci_rst : in std_ulogic; -- PCI bus - pci_clk : in std_ulogic; - pci_gnt : in std_ulogic; - pci_idsel : in std_ulogic; - pci_lock : inout std_ulogic; - pci_ad : inout std_logic_vector(31 downto 0); - pci_cbe : inout std_logic_vector(3 downto 0); - pci_frame : inout std_ulogic; - pci_irdy : inout std_ulogic; - pci_trdy : inout std_ulogic; - pci_devsel : inout std_ulogic; - pci_stop : inout std_ulogic; - pci_perr : inout std_ulogic; - pci_par : inout std_ulogic; - pci_req : inout std_ulogic; - pci_serr : inout std_ulogic; - pci_host : in std_ulogic; - pci_66 : in std_ulogic - ); -end; - -architecture behav of testbench is - - constant promfile : string := "prom.srec"; -- rom contents - constant sramfile : string := "sram.srec"; -- ram contents - constant sdramfile : string := "sdram.srec"; -- sdram contents - - - signal clk : std_logic := '0'; - signal Rst : std_logic := '0'; -- Reset - constant ct : integer := clkperiod/2; - - signal address : std_logic_vector(27 downto 0); - signal data : std_logic_vector(31 downto 0); - - signal ramsn : std_logic_vector(4 downto 0); - signal ramoen : std_logic_vector(4 downto 0); - signal romsn : std_logic_vector(1 downto 0); - signal iosn : std_ulogic; - signal oen : std_ulogic; - signal read : std_ulogic; - signal writen : std_ulogic; - signal rben : std_logic_vector(3 downto 0); - signal rwen : std_logic_vector(3 downto 0); - - - signal brdyn : std_ulogic; - signal bexcn : std_ulogic; - signal wdog : std_ulogic; - signal dsuen, dsutx, dsurx, dsubre, dsuact : std_ulogic; - signal dsurst : std_ulogic; - signal test : std_ulogic; - - signal error : std_logic; - - signal pio : std_logic_vector(15 downto 0); - signal GND : std_ulogic := '0'; - signal VCC : std_ulogic := '1'; - signal NC : std_ulogic := 'Z'; - signal clk2 : std_ulogic := '1'; - - signal sdcke : std_logic_vector (1 downto 0); -- clk en - signal sdcsn : std_logic_vector (1 downto 0); -- chip sel - signal sdwen : std_ulogic; -- write en - signal sdrasn : std_ulogic; -- row addr stb - signal sdcasn : std_ulogic; -- col addr stb - signal sddqm : std_logic_vector (3 downto 0); -- data i/o mask - signal sd_clk : std_logic_vector(1 downto 0); - - signal sdclk : std_ulogic; --- alias sdclk : std_logic is sd_clk(0); - signal plllock : std_ulogic; - --- pulled up high, therefore std_logic - signal txd1, rxd1 : std_logic; - - signal etx_clk, erx_clk, erx_dv, erx_er, erx_col, erx_crs, etx_en, etx_er : std_logic := '0'; - signal erxd, etxd : std_logic_vector(7 downto 0) := (others => '0'); - signal emdc, emdio : std_logic; --dummy signal for the mdc,mdio in the phy which is not used - - signal emddis : std_logic; - signal epwrdwn : std_logic; - signal ereset : std_logic; - signal esleep : std_logic; - signal epause : std_logic; - signal tp_out : std_logic_vector(7 downto 0); - signal led_cfg : std_logic_vector(2 downto 0); - - constant lresp : boolean := false; - - signal sa : std_logic_vector(14 downto 0); - signal sd : std_logic_vector(63 downto 0); - - -- ATA signals - signal ata_rst : std_logic; - signal ata_data : std_logic_vector(15 downto 0); - signal ata_da : std_logic_vector(2 downto 0); - signal ata_cs0 : std_logic; - signal ata_cs1 : std_logic; - signal ata_dior : std_logic; - signal ata_diow : std_logic; - signal ata_iordy : std_logic; - signal ata_intrq : std_logic; - signal ata_dmack : std_logic; - --- Added for Hpe - - signal resoutn : std_logic; - signal disrams : std_logic; - signal sdclk0 : std_ulogic; - signal sdclk1 : std_ulogic; - signal sdba0 : std_logic; -- bank address zero - signal sdba1 : std_logic; -- bank address one - signal dsubren : std_ulogic; - signal dsuactn : std_ulogic; - signal bufdir : std_logic; - signal bufoen : std_logic; - signal s_sddqm : std_logic_vector (3 downto 0); - - signal HRESETn : std_ulogic; - signal HSEL : std_ulogic; - signal HREADY_ba : std_ulogic; -- hready input signal - signal HADDR : std_logic_vector(31 downto 0); - signal HWRITE : std_ulogic; - signal HTRANS : std_logic_vector(1 downto 0); - signal HSIZE : std_logic_vector(2 downto 0); - signal HBURST : std_logic_vector(2 downto 0); - signal HWDATA : std_logic_vector(31 downto 0); - signal HMASTER : std_logic_vector(3 downto 0); - signal HMASTLOCK : std_ulogic; - signal HREADY : std_ulogic; - signal HRESP : std_logic_vector(1 downto 0); - signal HRDATA : std_logic_vector(31 downto 0); - signal HSPLIT : std_logic_vector(15 downto 0); - - signal clk_ctrl : std_logic_vector(1 downto 0); -- cpld - signal CAN_RXD : std_logic; - signal CAN_TXD : std_logic; - signal CAN_STB : std_logic; - signal CAN_TXD_delayed : std_logic := '1'; - signal gpio : std_logic_vector(7 downto 0); - - signal dac : std_ulogic; -- ouput of sigma delta DAC - - subtype sd_address_range is natural range 14 downto 2; - subtype sd_ba_range is natural range 16 downto 15; - - signal vga_vsync : std_ulogic; - signal vga_hsync : std_ulogic; - signal vga_rd : std_logic_vector(1 downto 0); - signal vga_gr : std_logic_vector(1 downto 0); - signal vga_bl : std_logic_vector(1 downto 0); - - --------------------------------------------------------------------------------------- - -- HPI SIGNALS - --------------------------------------------------------------------------------------- - signal hpiaddr : std_logic_vector(1 downto 0); - signal hpidata, hpirdata : std_logic_vector(15 downto 0); - signal hpicsn : std_ulogic; - signal hpiwrn : std_ulogic; - signal hpirdn : std_ulogic; - signal hpiint : std_ulogic; - signal dbg_equal : std_ulogic; - signal drive_bus : std_ulogic; - --------------------------------------------------------------------------------------- - -signal eth_macclk : std_ulogic := '0'; - -begin - - dsubren <= not dsubre; - disrams <= '0'; - address(27 downto 16) <= (others => '0'); - address(1 downto 0) <= (others => '0'); --- clock and reset - - clk <= not clk after ct * 1 ns; - rst <= '1' after 10 ns; - dsuen <= '0'; dsubre <= '0'; rxd1 <= 'H'; - led_cfg <= "000"; --put the phy in base10h mode - - d3 : entity work.leon3mini - generic map ( - fabtech => fabtech, memtech => memtech, padtech => padtech, - clktech => clktech, disas => disas, dbguart => dbguart, - pclow => pclow) - port map ( - resetn => rst, - resoutn => resoutn, - clk => clk, - errorn => error, - address => address(15 downto 2), - data => data, - sdclk => sdclk, - sdcke => sdcke, - sdcsn => sdcsn, - sdwen => sdwen, - sdrasn => sdrasn, - sdcasn => sdcasn, - sddqm => sddqm(3 downto 0), -- topmost bits are undriven - sdba => sa(14 downto 13), - - sertx => dsutx, - serrx => dsurx, - sersrcsel => gnd, -- select serial DCL - - dsuen => dsuen, - dsubre => dsubre, - dsuactn => dsuactn, - --- txd1 => txd1, --- rxd1 => rxd1, - --- gpio => gpio, - - ramsn => ramsn, - ramoen => ramoen, - oen => oen, - rben => rben, - rwen => rwen, - writen => writen, - read => read, - iosn => iosn, - romsn => romsn, - - emdio => emdio, - etx_clk => etx_clk, - erx_clk => erx_clk, - erxd => erxd(3 downto 0), - erx_dv => erx_dv, - erx_er => erx_er, - erx_col => erx_col, - erx_crs => erx_crs, - etxd => etxd(3 downto 0), - etx_en => etx_en, - etx_er => etx_er, - emdc => emdc, - - ata_rst => ata_rst, - ata_data => ata_data, - ata_da => ata_da, - ata_cs0 => ata_cs0, - ata_cs1 => ata_cs1, - ata_dior => ata_dior, - ata_diow => ata_diow, - ata_iordy => ata_iordy, - ata_intrq => ata_intrq, - ata_dmack => ata_dmack, - - hpiaddr => hpiaddr, - hpidata => hpidata, - hpicsn => hpicsn, - hpiwrn => hpiwrn, - hpirdn => hpirdn, - hpiint => hpiint, - dbg_equal => dbg_equal, --- drive_bus => drive_bus, - - - dac => dac, - vga_vsync => vga_vsync, - vga_hsync => vga_hsync, - vga_rd => vga_rd, - vga_gr => vga_gr, - vga_bl => vga_bl - ); - - hpidata <= hpirdata when hpirdn = '0' else (others => 'Z'); - - hpiint <= '0'; - - hpi_ram_1 : hpi_ram - generic map ( - abits => 10, - dbits => 16) - port map ( - clk => clk, - address => hpiaddr, - datain => hpidata, - dataout => hpirdata, - writen => hpiwrn, - readn => hpirdn, - csn => hpicsn - ); - --- optional sdram - - sd0 : if (CFG_MCTRL_SDEN = 1) generate - u0 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile) - port map( - Dq => data(31 downto 16), Addr => address(sd_address_range), - Ba => address(sd_ba_range), Clk => sdclk, Cke => sdcke(0), - Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(3 downto 2)); - u1 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile) - port map( - Dq => data(15 downto 0), Addr => address(sd_address_range), - Ba => address(sd_ba_range), Clk => sdclk, Cke => sdcke(0), - Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(1 downto 0)); - u2 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile) - port map( - Dq => data(31 downto 16), Addr => address(sd_address_range), - Ba => address(sd_ba_range), Clk => sdclk, Cke => sdcke(0), - Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(3 downto 2)); - u3 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile) - port map( - Dq => data(15 downto 0), Addr => address(sd_address_range), - Ba => address(sd_ba_range), Clk => sdclk, Cke => sdcke(0), - Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen, - Dqm => sddqm(1 downto 0)); - end generate; - - extbprom : if CFG_BOOTOPT = 0 generate - prom0 : for i in 0 to (romwidth/8)-1 generate - sr0 : sram generic map (index => i, abits => romdepth, fname => promfile) - port map (address(romdepth+1 downto 2), data(31-i*8 downto 24-i*8), romsn(0), - rwen(i), oen); - end generate; - end generate extbprom; - - - sram0 : for i in 0 to (sramwidth/8)-1 generate - sr0 : sram generic map (index => i, abits => sramdepth, fname => sramfile) - port map (address(sramdepth+1 downto 2), data(31-i*8 downto 24-i*8), ramsn(0), - rben(0), ramoen(0)); -- **** tame: changed rwen to rben - end generate; - - phy0 : if (CFG_GRETH /= 0) generate - emdio <= 'H'; - p0: phy - generic map(base1000_t_fd => 0, base1000_t_hd => 0) - port map(rst, emdio, etx_clk, erx_clk, erxd, erx_dv, - erx_er, erx_col, erx_crs, etxd, etx_en, etx_er, emdc, eth_macclk); - end generate; - - error <= 'H'; -- ERROR pull-up - - iuerr : process(error) - begin - assert (error /= '0') - report "*** IU in error mode, simulation halted ***" - severity failure; - end process; - - data <= buskeep(data), (others => 'H') after 250 ns; - sd <= buskeep(sd), (others => 'H') after 250 ns; - - test0 : grtestmod - port map (rst, clk, error, address(21 downto 2), data, - iosn, oen, writen, brdyn); - - dcomstart : if CFG_BOOTOPT = 0 generate - - dsucom : process - procedure dsucfg(signal dsurx : in std_ulogic; signal dsutx : out std_ulogic) is - variable w32 : std_logic_vector(31 downto 0); - variable c8 : std_logic_vector(7 downto 0); - constant txp : time := 160 * 1 ns; - begin - dsutx <= '1'; - dsurst <= '1'; - wait; - wait for 5000 ns; - txc(dsutx, 16#55#, txp); -- sync uart - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#ef#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); - txa(dsutx, 16#00#, 16#00#, 16#ff#, 16#ff#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#40#, 16#00#, 16#48#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#12#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#40#, 16#00#, 16#60#, txp); - txa(dsutx, 16#00#, 16#00#, 16#12#, 16#10#, txp); - - txc(dsutx, 16#80#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); - rxi(dsurx, w32, txp, lresp); - - txc(dsutx, 16#a0#, txp); - txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); - rxi(dsurx, w32, txp, lresp); - - end; - - begin - - dsucfg(dsutx, dsurx); - - wait; - end process; - - end generate dcomstart; - - - altstimuli : if CFG_BOOTOPT = 1 generate - stimuli : process - begin - dsurx <= '1'; - -- rxd1 <= 'H'; --already defined above - txd1 <= 'H'; - - - wait; - end process STIMULI; - end generate altstimuli; - -end; - - diff --git a/designs/leon3-ge-hpe-mini/wave.do b/designs/leon3-ge-hpe-mini/wave.do deleted file mode 100644 index c4e98bb6..00000000 --- a/designs/leon3-ge-hpe-mini/wave.do +++ /dev/null @@ -1,128 +0,0 @@ -onerror {resume} -quietly WaveActivateNextPane {} 0 -add wave -noupdate -divider LEON3MINI -add wave -noupdate -format Logic /testbench/d3/resetn -add wave -noupdate -format Logic /testbench/d3/resoutn -add wave -noupdate -format Logic /testbench/d3/clk -add wave -noupdate -format Logic /testbench/d3/errorn -add wave -noupdate -format Literal /testbench/d3/address -add wave -noupdate -format Literal -radix hexadecimal /testbench/d3/data -add wave -noupdate -format Literal /testbench/d3/ramsn -add wave -noupdate -format Literal /testbench/d3/ramoen -add wave -noupdate -format Literal /testbench/d3/rwen -add wave -noupdate -format Literal /testbench/d3/rben -add wave -noupdate -format Literal /testbench/d3/romsn -add wave -noupdate -format Logic /testbench/d3/iosn -add wave -noupdate -format Logic /testbench/d3/oen -add wave -noupdate -format Logic /testbench/d3/read -add wave -noupdate -format Logic /testbench/d3/writen -add wave -noupdate -format Literal /testbench/d3/sdcke -add wave -noupdate -format Literal /testbench/d3/sdcsn -add wave -noupdate -format Logic /testbench/d3/sdwen -add wave -noupdate -format Logic /testbench/d3/sdrasn -add wave -noupdate -format Logic /testbench/d3/sdcasn -add wave -noupdate -format Literal /testbench/d3/sddqm -add wave -noupdate -format Literal /testbench/d3/sdclk -add wave -noupdate -format Literal /testbench/d3/sdba -add wave -noupdate -format Logic /testbench/d3/dsuen -add wave -noupdate -format Logic /testbench/d3/dsutx -add wave -noupdate -format Logic /testbench/d3/dsurx -add wave -noupdate -format Logic /testbench/d3/dsuactn -add wave -noupdate -format Logic /testbench/d3/rxd1 -add wave -noupdate -format Logic /testbench/d3/txd1 -add wave -noupdate -format Logic /testbench/d3/emdio -add wave -noupdate -format Logic /testbench/d3/etx_clk -add wave -noupdate -format Logic /testbench/d3/erx_clk -add wave -noupdate -format Literal /testbench/d3/erxd -add wave -noupdate -format Logic /testbench/d3/erx_dv -add wave -noupdate -format Logic /testbench/d3/erx_er -add wave -noupdate -format Logic /testbench/d3/erx_col -add wave -noupdate -format Logic /testbench/d3/erx_crs -add wave -noupdate -format Literal /testbench/d3/etxd -add wave -noupdate -format Logic /testbench/d3/etx_en -add wave -noupdate -format Logic /testbench/d3/etx_er -add wave -noupdate -format Logic /testbench/d3/emdc -add wave -noupdate -format Logic /testbench/d3/emddis -add wave -noupdate -format Logic /testbench/d3/epwrdwn -add wave -noupdate -format Logic /testbench/d3/ereset -add wave -noupdate -format Logic /testbench/d3/esleep -add wave -noupdate -format Logic /testbench/d3/epause -add wave -noupdate -format Literal /testbench/d3/vcc -add wave -noupdate -format Literal /testbench/d3/gnd -add wave -noupdate -format Literal /testbench/d3/memi -add wave -noupdate -format Literal /testbench/d3/memo -add wave -noupdate -format Literal /testbench/d3/wpo -add wave -noupdate -format Literal /testbench/d3/sdi -add wave -noupdate -format Literal /testbench/d3/sdo -add wave -noupdate -format Literal /testbench/d3/sdo2 -add wave -noupdate -format Literal /testbench/d3/sdo3 -add wave -noupdate -format Literal /testbench/d3/apbi -add wave -noupdate -format Literal /testbench/d3/apbo -add wave -noupdate -format Literal /testbench/d3/ahbsi -add wave -noupdate -format Literal /testbench/d3/ahbso -add wave -noupdate -format Literal /testbench/d3/ahbmi -add wave -noupdate -format Literal /testbench/d3/ahbmo -add wave -noupdate -format Logic /testbench/d3/clkm -add wave -noupdate -format Logic /testbench/d3/rstn -add wave -noupdate -format Logic /testbench/d3/sdclkl -add wave -noupdate -format Literal /testbench/d3/cgi -add wave -noupdate -format Literal /testbench/d3/cgo -add wave -noupdate -format Literal /testbench/d3/u1i -add wave -noupdate -format Literal /testbench/d3/dui -add wave -noupdate -format Literal /testbench/d3/u1o -add wave -noupdate -format Literal /testbench/d3/duo -add wave -noupdate -format Literal /testbench/d3/irqi -add wave -noupdate -format Literal /testbench/d3/irqo -add wave -noupdate -format Literal /testbench/d3/dbgi -add wave -noupdate -format Literal /testbench/d3/dbgo -add wave -noupdate -format Literal /testbench/d3/dsui -add wave -noupdate -format Literal /testbench/d3/dsuo -add wave -noupdate -format Literal /testbench/d3/ethi -add wave -noupdate -format Literal /testbench/d3/ethi1 -add wave -noupdate -format Literal /testbench/d3/ethi2 -add wave -noupdate -format Literal /testbench/d3/etho -add wave -noupdate -format Literal /testbench/d3/etho1 -add wave -noupdate -format Literal /testbench/d3/etho2 -add wave -noupdate -format Literal /testbench/d3/gpti -add wave -noupdate -format Literal /testbench/d3/sa -add wave -noupdate -format Literal /testbench/d3/sd -add wave -noupdate -format Logic /testbench/d3/dsubre -add wave -noupdate -format Logic /testbench/d3/dsuact -add wave -noupdate -format Logic /testbench/d3/oen_ctrl -add wave -noupdate -format Logic /testbench/d3/sdram_selected -add wave -noupdate -divider HPIRAM -add wave -noupdate -format Logic -radix hexadecimal /testbench/hpi_ram_1/clk -add wave -noupdate -format Literal -radix hexadecimal /testbench/hpi_ram_1/address -add wave -noupdate -format Literal -radix hexadecimal /testbench/hpi_ram_1/datain -add wave -noupdate -format Literal -radix hexadecimal /testbench/hpi_ram_1/dataout -add wave -noupdate -format Logic -radix hexadecimal /testbench/hpi_ram_1/writen -add wave -noupdate -format Logic -radix hexadecimal /testbench/hpi_ram_1/readn -add wave -noupdate -format Logic -radix hexadecimal /testbench/hpi_ram_1/csn -add wave -noupdate -format Literal -radix hexadecimal /testbench/hpi_ram_1/memarr -add wave -noupdate -format Literal -radix hexadecimal /testbench/hpi_ram_1/data_reg -add wave -noupdate -format Literal -radix hexadecimal /testbench/hpi_ram_1/mailbox_reg -add wave -noupdate -format Literal -radix hexadecimal /testbench/hpi_ram_1/address_reg -add wave -noupdate -format Literal -radix hexadecimal /testbench/hpi_ram_1/status_reg -add wave -noupdate -divider AHB2HPI -add wave -noupdate -divider DAC_AHB -add wave -noupdate -divider {DAC SigDelt} -add wave -noupdate -divider LEON3S -add wave -noupdate -divider {Memory Controller} -add wave -noupdate -format Literal -radix hexadecimal -expand /testbench/d3/mg2/sr1/ahbsi -add wave -noupdate -format Literal -radix hexadecimal -expand /testbench/d3/mg2/sr1/ahbso -TreeUpdate [SetDefaultTree] -WaveRestoreCursors {{Cursor 1} {3465000 ps} 0} -configure wave -namecolwidth 150 -configure wave -valuecolwidth 100 -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 0 -update -WaveRestoreZoom {50050 ns} {71050 ns} diff --git a/designs/leon3-gr-cpci-xc2v6000/Makefile b/designs/leon3-gr-cpci-xc2v6000/Makefile index 2939974c..b69b98c3 100644 --- a/designs/leon3-gr-cpci-xc2v6000/Makefile +++ b/designs/leon3-gr-cpci-xc2v6000/Makefile @@ -19,9 +19,9 @@ CLEAN=soft-clean TECHLIBS = unisim secureip LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp gleichmann usbhc -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr usb ata grusbhc \ - haps ascs slink coremp7 + tmtc openchip hynix cypress ihp usbhc +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr usb grusbhc \ + ascs slink FILESKIP = grcan.vhd diff --git a/designs/leon3-gr-cpci-xc2v6000/ahbrom.vhd b/designs/leon3-gr-cpci-xc2v6000/ahbrom.vhd index ceb73789..e9f14ae5 100644 --- a/designs/leon3-gr-cpci-xc2v6000/ahbrom.vhd +++ b/designs/leon3-gr-cpci-xc2v6000/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-gr-cpci-xc2v6000/config.help b/designs/leon3-gr-cpci-xc2v6000/config.help index 6f0f97ea..415fc21e 100644 --- a/designs/leon3-gr-cpci-xc2v6000/config.help +++ b/designs/leon3-gr-cpci-xc2v6000/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-gr-cpci-xc2v6000/lconfig.tk b/designs/leon3-gr-cpci-xc2v6000/lconfig.tk index c4ae6b04..75c2c45e 100755 --- a/designs/leon3-gr-cpci-xc2v6000/lconfig.tk +++ b/designs/leon3-gr-cpci-xc2v6000/lconfig.tk @@ -756,7 +756,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -766,7 +767,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -909,8 +912,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -929,6 +934,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1018,9 +1027,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1074,10 +1084,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1123,14 +1134,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1203,13 +1216,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1249,22 +1270,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1321,21 +1610,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1382,36 +1671,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1419,48 +1709,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1516,28 +1807,28 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_7 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x4.x.menu 3 bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1578,20 +1869,21 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1600,38 +1892,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_7 + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1688,92 +1981,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1781,18 +2074,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1833,52 +2126,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1886,162 +2180,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2097,45 +2392,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2175,18 +2472,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2194,55 +2492,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2299,24 +2602,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2356,17 +2659,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2374,37 +2678,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2460,16 +2765,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2517,9 +2829,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2541,21 +2851,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2864,14 +3179,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2945,17 +3260,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3130,32 +3445,32 @@ proc menu14 {w title} { int $w.config.f 14 3 "RAM waitstates" CONFIG_SRCTRL_RAMWS int $w.config.f 14 4 "IO waitstates" CONFIG_SRCTRL_IOWS bool $w.config.f 14 5 "Use read-modify-write for sub-word writes " CONFIG_SRCTRL_RMW - global tmpvar_27 - minimenu $w.config.f 14 6 "SRAM banks" tmpvar_27 CONFIG_SRCTRL_SRBANKS1 + global tmpvar_29 + minimenu $w.config.f 14 6 "SRAM banks" tmpvar_29 CONFIG_SRCTRL_SRBANKS1 menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"SRAM banks\"" - $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_27 -value "3" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_27 -value "5" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_29 -value "3" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_29 -value "5" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 - global tmpvar_28 - minimenu $w.config.f 14 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_28 CONFIG_SRCTRL_BANKSZ0 + global tmpvar_30 + minimenu $w.config.f 14 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_30 CONFIG_SRCTRL_BANKSZ0 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"SRAM bank size (kb) (0 for programmable)\"" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_28 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_28 -value "256" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_28 -value "512" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_28 -value "1024" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_28 -value "2048" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_28 -value "4096" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_28 -value "8192" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_28 -value "16384" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_28 -value "32768" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_28 -value "65536" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_30 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_30 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_30 -value "512" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_30 -value "1024" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_30 -value "2048" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_30 -value "4096" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_30 -value "8192" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_30 -value "16384" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_30 -value "32768" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_30 -value "65536" -command "update_active" menusplit $w $w.config.f.x7.x.menu 14 int $w.config.f 14 8 "PROM bank select address bit (0 - 28)" CONFIG_SRCTRL_ROMASEL @@ -3231,46 +3546,46 @@ proc update_define_menu14 {} { global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then { set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW&15]} else {set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_SRCTRL_SRBANKS1 - if {$tmpvar_27 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} global CONFIG_SRCTRL_SRBANKS2 - if {$tmpvar_27 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} global CONFIG_SRCTRL_SRBANKS3 - if {$tmpvar_27 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} + if {$tmpvar_29 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} global CONFIG_SRCTRL_SRBANKS4 - if {$tmpvar_27 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} global CONFIG_SRCTRL_SRBANKS5 - if {$tmpvar_27 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} - global tmpvar_28 + if {$tmpvar_29 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} + global tmpvar_30 global CONFIG_SRCTRL_BANKSZ0 - if {$tmpvar_28 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} + if {$tmpvar_30 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} global CONFIG_SRCTRL_BANKSZ1 - if {$tmpvar_28 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} + if {$tmpvar_30 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} global CONFIG_SRCTRL_BANKSZ2 - if {$tmpvar_28 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} + if {$tmpvar_30 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} global CONFIG_SRCTRL_BANKSZ3 - if {$tmpvar_28 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} + if {$tmpvar_30 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} global CONFIG_SRCTRL_BANKSZ4 - if {$tmpvar_28 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} + if {$tmpvar_30 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} global CONFIG_SRCTRL_BANKSZ5 - if {$tmpvar_28 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} + if {$tmpvar_30 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} global CONFIG_SRCTRL_BANKSZ6 - if {$tmpvar_28 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} + if {$tmpvar_30 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} global CONFIG_SRCTRL_BANKSZ7 - if {$tmpvar_28 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} + if {$tmpvar_30 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} global CONFIG_SRCTRL_BANKSZ8 - if {$tmpvar_28 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} + if {$tmpvar_30 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} global CONFIG_SRCTRL_BANKSZ9 - if {$tmpvar_28 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} + if {$tmpvar_30 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} global CONFIG_SRCTRL_BANKSZ10 - if {$tmpvar_28 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} + if {$tmpvar_30 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} global CONFIG_SRCTRL_BANKSZ11 - if {$tmpvar_28 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} + if {$tmpvar_30 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} global CONFIG_SRCTRL_BANKSZ12 - if {$tmpvar_28 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} + if {$tmpvar_30 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} global CONFIG_SRCTRL_BANKSZ13 - if {$tmpvar_28 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} + if {$tmpvar_30 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_ROMASEL "$CONFIG_SRCTRL_ROMASEL" 19} } @@ -3724,16 +4039,16 @@ proc menu18 {w title} { hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_29 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 + global tmpvar_31 + minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_31 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3795,21 +4110,21 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_29 + global tmpvar_31 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_31 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3869,14 +4184,14 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 19 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_30 - minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 + global tmpvar_32 + minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_32 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_32 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3930,17 +4245,17 @@ proc update_define_menu19 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_30 + global tmpvar_32 global CONFIG_GRETH_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_32 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_32 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_32 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_32 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_32 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -4128,57 +4443,57 @@ proc menu21 {w title} { bool $w.config.f 21 0 "Enable Spacewire links " CONFIG_SPW_ENABLE int $w.config.f 21 1 "Number of links (1 - 3)" CONFIG_SPW_NUM - global tmpvar_31 - minimenu $w.config.f 21 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_31 CONFIG_SPW_AHBFIFO4 + global tmpvar_33 + minimenu $w.config.f 21 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_33 CONFIG_SPW_AHBFIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB RX/TX FIFO size (32-bit words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_33 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_32 - minimenu $w.config.f 21 3 "Receiver FIFO size (bytes) " tmpvar_32 CONFIG_SPW_RXFIFO16 + global tmpvar_34 + minimenu $w.config.f 21 3 "Receiver FIFO size (bytes) " tmpvar_34 CONFIG_SPW_RXFIFO16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Receiver FIFO size (bytes) \"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_32 -value "64" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_34 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_34 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_34 -value "64" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 21 4 "Enable RMAP protocol " CONFIG_SPW_RMAP - global tmpvar_33 - minimenu $w.config.f 21 5 "RMAP buffer size (bytes) " tmpvar_33 CONFIG_SPW_RMAPBUF2 + global tmpvar_35 + minimenu $w.config.f 21 5 "RMAP buffer size (bytes) " tmpvar_35 CONFIG_SPW_RMAPBUF2 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"RMAP buffer size (bytes) \"" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_33 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_33 -value "128" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_33 -value "192" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_33 -value "256" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_35 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_35 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_35 -value "192" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_35 -value "256" -command "update_active" menusplit $w $w.config.f.x5.x.menu 4 bool $w.config.f 21 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC bool $w.config.f 21 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL bool $w.config.f 21 8 "Spacewire FIFO protection " CONFIG_SPW_FT bool $w.config.f 21 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST int $w.config.f 21 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS - global tmpvar_34 - minimenu $w.config.f 21 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_34 CONFIG_SPW_GRSPW1 + global tmpvar_36 + minimenu $w.config.f 21 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_36 CONFIG_SPW_GRSPW1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Select GRSPW core (GRSPW1/GRSPW2) \"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_34 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_34 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_36 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_36 -value "2" -command "update_active" menusplit $w $w.config.f.x11.x.menu 2 int $w.config.f 21 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN bool $w.config.f 21 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME - global tmpvar_35 - minimenu $w.config.f 21 14 "Select receiver clock type " tmpvar_35 CONFIG_SPW_RX_SDR + global tmpvar_37 + minimenu $w.config.f 21 14 "Select receiver clock type " tmpvar_37 CONFIG_SPW_RX_SDR menu $w.config.f.x14.x.menu -tearoffcommand "menutitle \"Select receiver clock type \"" - $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_35 -value "SDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_35 -value "DDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_35 -value "Xor" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_35 -value "Aeroflex" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_37 -value "SDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_37 -value "DDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_37 -value "Xor" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_37 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x14.x.menu 4 - global tmpvar_36 - minimenu $w.config.f 21 15 "Select transmitter clock type " tmpvar_36 CONFIG_SPW_TX_SDR + global tmpvar_38 + minimenu $w.config.f 21 15 "Select transmitter clock type " tmpvar_38 CONFIG_SPW_TX_SDR menu $w.config.f.x15.x.menu -tearoffcommand "menutitle \"Select transmitter clock type \"" - $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_36 -value "SDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_36 -value "DDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_36 -value "Aeroflex" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_38 -value "SDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_38 -value "DDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_38 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x15.x.menu 3 @@ -4258,34 +4573,34 @@ proc update_define_menu21 {} { global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_NUM "$CONFIG_SPW_NUM" 1} - global tmpvar_31 + global tmpvar_33 global CONFIG_SPW_AHBFIFO4 - if {$tmpvar_31 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} + if {$tmpvar_33 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} global CONFIG_SPW_AHBFIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} + if {$tmpvar_33 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} global CONFIG_SPW_AHBFIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} + if {$tmpvar_33 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} global CONFIG_SPW_AHBFIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} - global tmpvar_32 + if {$tmpvar_33 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} + global tmpvar_34 global CONFIG_SPW_RXFIFO16 - if {$tmpvar_32 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} + if {$tmpvar_34 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} global CONFIG_SPW_RXFIFO32 - if {$tmpvar_32 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} + if {$tmpvar_34 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} global CONFIG_SPW_RXFIFO64 - if {$tmpvar_32 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} + if {$tmpvar_34 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP&15]} else {set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP|16]} - global tmpvar_33 + global tmpvar_35 global CONFIG_SPW_RMAPBUF2 - if {$tmpvar_33 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} + if {$tmpvar_35 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} global CONFIG_SPW_RMAPBUF4 - if {$tmpvar_33 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} + if {$tmpvar_35 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} global CONFIG_SPW_RMAPBUF6 - if {$tmpvar_33 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} + if {$tmpvar_35 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} global CONFIG_SPW_RMAPBUF8 - if {$tmpvar_33 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} + if {$tmpvar_35 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC&15]} else {set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC|16]} @@ -4300,32 +4615,32 @@ proc update_define_menu21 {} { set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST&15]} else {set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST|16]} global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_PORTS "$CONFIG_SPW_PORTS" 1} - global tmpvar_34 + global tmpvar_36 global CONFIG_SPW_GRSPW1 - if {$tmpvar_34 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} + if {$tmpvar_36 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} global CONFIG_SPW_GRSPW2 - if {$tmpvar_34 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} + if {$tmpvar_36 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} global CONFIG_SPW_DMACHAN if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {validate_int CONFIG_SPW_DMACHAN "$CONFIG_SPW_DMACHAN" 1} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME&15]} else {set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME|16]} - global tmpvar_35 + global tmpvar_37 global CONFIG_SPW_RX_SDR - if {$tmpvar_35 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} + if {$tmpvar_37 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} global CONFIG_SPW_RX_DDR - if {$tmpvar_35 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} + if {$tmpvar_37 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} global CONFIG_SPW_RX_XOR - if {$tmpvar_35 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} + if {$tmpvar_37 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} global CONFIG_SPW_RX_AFLEX - if {$tmpvar_35 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} - global tmpvar_36 + if {$tmpvar_37 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} + global tmpvar_38 global CONFIG_SPW_TX_SDR - if {$tmpvar_36 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} + if {$tmpvar_38 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} global CONFIG_SPW_TX_DDR - if {$tmpvar_36 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} + if {$tmpvar_38 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} global CONFIG_SPW_TX_AFLEX - if {$tmpvar_36 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} + if {$tmpvar_38 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} } @@ -4385,29 +4700,29 @@ proc menu22 {w title} { bool $w.config.f 22 2 "PCI DMA controller " CONFIG_PCI_MASTER_TARGET_DMA hex $w.config.f 22 3 "PCI vendor ID" CONFIG_PCI_VENDORID hex $w.config.f 22 4 "PCI device ID" CONFIG_PCI_DEVICEID - global tmpvar_37 - minimenu $w.config.f 22 5 "PCI FIFO depth" tmpvar_37 CONFIG_PCI_FIFO0 + global tmpvar_39 + minimenu $w.config.f 22 5 "PCI FIFO depth" tmpvar_39 CONFIG_PCI_FIFO0 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"PCI FIFO depth\"" - $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_37 -value "None" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_37 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_37 -value "16" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_37 -value "32" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_37 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_37 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_39 -value "None" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_39 -value "8" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_39 -value "16" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_39 -value "32" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_39 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_39 -value "128" -command "update_active" menusplit $w $w.config.f.x5.x.menu 6 hex $w.config.f 22 6 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR bool $w.config.f 22 7 "PCI arbiter " CONFIG_PCI_ARBITER bool $w.config.f 22 8 "PCI arbiter APB interface " CONFIG_PCI_ARBITER_APB int $w.config.f 22 9 "Number of PCI REQ/GNT pairs" CONFIG_PCI_ARBITER_NREQ bool $w.config.f 22 10 "Enable PCI trace buffer " CONFIG_PCI_TRACE - global tmpvar_38 - minimenu $w.config.f 22 11 "PCI trace buffer depth" tmpvar_38 CONFIG_PCI_TRACE256 + global tmpvar_40 + minimenu $w.config.f 22 11 "PCI trace buffer depth" tmpvar_40 CONFIG_PCI_TRACE256 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"PCI trace buffer depth\"" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_38 -value "256" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_38 -value "512" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_38 -value "1024" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_38 -value "2048" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_38 -value "4096" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_40 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_40 -value "512" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_40 -value "1024" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_40 -value "2048" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_40 -value "4096" -command "update_active" menusplit $w $w.config.f.x11.x.menu 5 @@ -4491,19 +4806,19 @@ proc update_define_menu22 {} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_VENDORID "$CONFIG_PCI_VENDORID" 1AC8} global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_DEVICEID "$CONFIG_PCI_DEVICEID" 0054} - global tmpvar_37 + global tmpvar_39 global CONFIG_PCI_FIFO0 - if {$tmpvar_37 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} + if {$tmpvar_39 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} global CONFIG_PCI_FIFO8 - if {$tmpvar_37 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} + if {$tmpvar_39 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} global CONFIG_PCI_FIFO16 - if {$tmpvar_37 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} + if {$tmpvar_39 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} global CONFIG_PCI_FIFO32 - if {$tmpvar_37 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} + if {$tmpvar_39 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} global CONFIG_PCI_FIFO64 - if {$tmpvar_37 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} + if {$tmpvar_39 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} global CONFIG_PCI_FIFO128 - if {$tmpvar_37 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} + if {$tmpvar_39 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_HADDR "$CONFIG_PCI_HADDR" E00} global CONFIG_PCI_ARBITER @@ -4512,17 +4827,17 @@ proc update_define_menu22 {} { set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB&15]} else {set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB|16]} global CONFIG_PCI_ARBITER_NREQ if {($CONFIG_PCI_ARBITER == 1)} then {validate_int CONFIG_PCI_ARBITER_NREQ "$CONFIG_PCI_ARBITER_NREQ" 4} - global tmpvar_38 + global tmpvar_40 global CONFIG_PCI_TRACE256 - if {$tmpvar_38 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} + if {$tmpvar_40 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} global CONFIG_PCI_TRACE512 - if {$tmpvar_38 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} + if {$tmpvar_40 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} global CONFIG_PCI_TRACE1024 - if {$tmpvar_38 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} + if {$tmpvar_40 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} global CONFIG_PCI_TRACE2048 - if {$tmpvar_38 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} + if {$tmpvar_40 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} global CONFIG_PCI_TRACE4096 - if {$tmpvar_38 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} + if {$tmpvar_40 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} } @@ -4578,26 +4893,26 @@ proc menu23 {w title} { bool $w.config.f 23 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_39 - minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_39 CONFIG_UA1_FIFO1 + global tmpvar_41 + minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_41 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_39 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_39 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_39 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_39 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_39 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_39 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_41 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_41 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_41 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_41 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_41 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_41 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 23 2 "Enable secondary UART " CONFIG_UART2_ENABLE - global tmpvar_40 - minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_40 CONFIG_UA2_FIFO1 + global tmpvar_42 + minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_42 CONFIG_UA2_FIFO1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_40 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_40 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_40 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_40 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_40 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_40 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_42 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_42 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_42 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_42 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_42 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_42 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 6 bool $w.config.f 23 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 23 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4688,32 +5003,32 @@ proc update_menu23 {} { proc update_define_menu23 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_39 + global tmpvar_41 global CONFIG_UA1_FIFO1 - if {$tmpvar_39 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_41 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_39 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_41 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_39 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_41 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_39 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_41 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_39 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_41 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_39 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global tmpvar_40 + if {$tmpvar_41 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + global tmpvar_42 global CONFIG_UA2_FIFO1 - if {$tmpvar_40 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} + if {$tmpvar_42 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} global CONFIG_UA2_FIFO2 - if {$tmpvar_40 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} + if {$tmpvar_42 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} global CONFIG_UA2_FIFO4 - if {$tmpvar_40 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} + if {$tmpvar_42 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} global CONFIG_UA2_FIFO8 - if {$tmpvar_40 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} + if {$tmpvar_42 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} global CONFIG_UA2_FIFO16 - if {$tmpvar_40 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} + if {$tmpvar_42 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} global CONFIG_UA2_FIFO32 - if {$tmpvar_40 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} + if {$tmpvar_42 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4883,7 +5198,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4893,6 +5209,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4917,6 +5235,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4929,14 +5248,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4949,28 +5273,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4980,17 +5304,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -5002,12 +5326,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -5017,10 +5341,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -5031,7 +5355,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -5043,26 +5367,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -5070,27 +5396,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -5111,7 +5441,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -5129,13 +5459,13 @@ set CONFIG_SRCTRL_PROMWS 3 set CONFIG_SRCTRL_RAMWS 0 set CONFIG_SRCTRL_IOWS 0 set CONFIG_SRCTRL_RMW 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_SRCTRL_SRBANKS1 0 set CONFIG_SRCTRL_SRBANKS2 0 set CONFIG_SRCTRL_SRBANKS3 0 set CONFIG_SRCTRL_SRBANKS4 0 set CONFIG_SRCTRL_SRBANKS5 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_SRCTRL_BANKSZ0 0 set CONFIG_SRCTRL_BANKSZ1 0 set CONFIG_SRCTRL_BANKSZ2 0 @@ -5170,7 +5500,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -5181,7 +5511,7 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 @@ -5195,17 +5525,17 @@ set CONFIG_CAN_SYNCRST 0 set CONFIG_CAN_FT 0 set CONFIG_SPW_ENABLE 0 set CONFIG_SPW_NUM 1 -set tmpvar_31 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_SPW_AHBFIFO4 0 set CONFIG_SPW_AHBFIFO8 0 set CONFIG_SPW_AHBFIFO16 0 set CONFIG_SPW_AHBFIFO32 0 -set tmpvar_32 "(not set)" +set tmpvar_34 "(not set)" set CONFIG_SPW_RXFIFO16 0 set CONFIG_SPW_RXFIFO32 0 set CONFIG_SPW_RXFIFO64 0 set CONFIG_SPW_RMAP 0 -set tmpvar_33 "(not set)" +set tmpvar_35 "(not set)" set CONFIG_SPW_RMAPBUF2 0 set CONFIG_SPW_RMAPBUF4 0 set CONFIG_SPW_RMAPBUF6 0 @@ -5215,17 +5545,17 @@ set CONFIG_SPW_RXUNAL 0 set CONFIG_SPW_FT 0 set CONFIG_SPW_NETLIST 0 set CONFIG_SPW_PORTS 1 -set tmpvar_34 "(not set)" +set tmpvar_36 "(not set)" set CONFIG_SPW_GRSPW1 0 set CONFIG_SPW_GRSPW2 0 set CONFIG_SPW_DMACHAN 1 set CONFIG_SPW_RTSAME 0 -set tmpvar_35 "(not set)" +set tmpvar_37 "(not set)" set CONFIG_SPW_RX_SDR 0 set CONFIG_SPW_RX_DDR 0 set CONFIG_SPW_RX_XOR 0 set CONFIG_SPW_RX_AFLEX 0 -set tmpvar_36 "(not set)" +set tmpvar_38 "(not set)" set CONFIG_SPW_TX_SDR 0 set CONFIG_SPW_TX_DDR 0 set CONFIG_SPW_TX_AFLEX 0 @@ -5234,7 +5564,7 @@ set CONFIG_PCI_MASTER_TARGET 0 set CONFIG_PCI_MASTER_TARGET_DMA 0 set CONFIG_PCI_VENDORID 1AC8 set CONFIG_PCI_DEVICEID 0054 -set tmpvar_37 "(not set)" +set tmpvar_39 "(not set)" set CONFIG_PCI_FIFO0 0 set CONFIG_PCI_FIFO8 0 set CONFIG_PCI_FIFO16 0 @@ -5246,14 +5576,14 @@ set CONFIG_PCI_ARBITER 0 set CONFIG_PCI_ARBITER_APB 0 set CONFIG_PCI_ARBITER_NREQ 4 set CONFIG_PCI_TRACE 0 -set tmpvar_38 "(not set)" +set tmpvar_40 "(not set)" set CONFIG_PCI_TRACE256 0 set CONFIG_PCI_TRACE512 0 set CONFIG_PCI_TRACE1024 0 set CONFIG_PCI_TRACE2048 0 set CONFIG_PCI_TRACE4096 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_39 "(not set)" +set tmpvar_41 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5261,7 +5591,7 @@ set CONFIG_UA1_FIFO8 0 set CONFIG_UA1_FIFO16 0 set CONFIG_UA1_FIFO32 0 set CONFIG_UART2_ENABLE 0 -set tmpvar_40 "(not set)" +set tmpvar_42 "(not set)" set CONFIG_UA2_FIFO1 0 set CONFIG_UA2_FIFO2 0 set CONFIG_UA2_FIFO4 0 @@ -5341,7 +5671,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5351,6 +5682,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5389,6 +5722,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5401,9 +5735,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5417,241 +5752,390 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5696,13 +6180,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5730,29 +6214,29 @@ proc writeconfig {file1 file2} { if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_IOWS $CONFIG_SRCTRL_IOWS $notmod } global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_RMW $CONFIG_SRCTRL_RMW [list $notmod] 2 } - global tmpvar_27 + global tmpvar_29 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } - if { $tmpvar_27 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } - if { $tmpvar_27 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} - global tmpvar_28 + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } + if { $tmpvar_29 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } + if { $tmpvar_29 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} + global tmpvar_30 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } - if { $tmpvar_28 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } - if { $tmpvar_28 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } - if { $tmpvar_28 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } - if { $tmpvar_28 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } - if { $tmpvar_28 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } - if { $tmpvar_28 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } - if { $tmpvar_28 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } - if { $tmpvar_28 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } + if { $tmpvar_30 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } + if { $tmpvar_30 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } + if { $tmpvar_30 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } + if { $tmpvar_30 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } + if { $tmpvar_30 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } + if { $tmpvar_30 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } + if { $tmpvar_30 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } + if { $tmpvar_30 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } + if { $tmpvar_30 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } + if { $tmpvar_30 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_ROMASEL $CONFIG_SRCTRL_ROMASEL $notmod } write_comment $cfg $autocfg "Leon2 memory controller " @@ -5797,27 +6281,27 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_30 + global tmpvar_32 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_32 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "CAN " global CONFIG_CAN_ENABLE write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 @@ -5836,25 +6320,25 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_SPW_ENABLE $CONFIG_SPW_ENABLE [list $notmod] 2 global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_NUM $CONFIG_SPW_NUM $notmod } - global tmpvar_31 + global tmpvar_33 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} - global tmpvar_32 + if { $tmpvar_33 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } + if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } + if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } + if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} + global tmpvar_34 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } - if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } - if { $tmpvar_32 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} + if { $tmpvar_34 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } + if { $tmpvar_34 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } + if { $tmpvar_34 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAP $CONFIG_SPW_RMAP [list $notmod] 2 } - global tmpvar_33 + global tmpvar_35 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then { - if { $tmpvar_33 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } - if { $tmpvar_33 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } - if { $tmpvar_33 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } - if { $tmpvar_33 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} + if { $tmpvar_35 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } + if { $tmpvar_35 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } + if { $tmpvar_35 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } + if { $tmpvar_35 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAPCRC $CONFIG_SPW_RMAPCRC [list $notmod] 2 } global CONFIG_SPW_RXUNAL @@ -5865,26 +6349,26 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_NETLIST $CONFIG_SPW_NETLIST [list $notmod] 2 } global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_PORTS $CONFIG_SPW_PORTS $notmod } - global tmpvar_34 + global tmpvar_36 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_34 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } - if { $tmpvar_34 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} + if { $tmpvar_36 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } + if { $tmpvar_36 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} global CONFIG_SPW_DMACHAN global CONFIG_SPW_GRSPW2 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_int $cfg $autocfg CONFIG_SPW_DMACHAN $CONFIG_SPW_DMACHAN $notmod } global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RTSAME $CONFIG_SPW_RTSAME [list $notmod] 2 } - global tmpvar_35 + global tmpvar_37 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_35 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } - if { $tmpvar_35 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } - if { $tmpvar_35 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } - if { $tmpvar_35 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} - global tmpvar_36 + if { $tmpvar_37 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } + if { $tmpvar_37 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } + if { $tmpvar_37 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } + if { $tmpvar_37 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} + global tmpvar_38 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_36 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } - if { $tmpvar_36 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } - if { $tmpvar_36 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} + if { $tmpvar_38 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } + if { $tmpvar_38 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } + if { $tmpvar_38 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} write_comment $cfg $autocfg "PCI " global CONFIG_PCI_SIMPLE_TARGET global CONFIG_PCI_ACTEL @@ -5897,14 +6381,14 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_VENDORID $CONFIG_PCI_VENDORID $notmod } global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_DEVICEID $CONFIG_PCI_DEVICEID $notmod } - global tmpvar_37 + global tmpvar_39 if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then { - if { $tmpvar_37 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } - if { $tmpvar_37 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_37 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_37 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_37 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } - if { $tmpvar_37 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} + if { $tmpvar_39 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } + if { $tmpvar_39 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_39 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_39 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_39 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } + if { $tmpvar_39 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_HADDR $CONFIG_PCI_HADDR $notmod } global CONFIG_PCI_ARBITER @@ -5915,34 +6399,34 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_ARBITER == 1)} then {write_int $cfg $autocfg CONFIG_PCI_ARBITER_NREQ $CONFIG_PCI_ARBITER_NREQ $notmod } global CONFIG_PCI_TRACE write_tristate $cfg $autocfg CONFIG_PCI_TRACE $CONFIG_PCI_TRACE [list $notmod] 2 - global tmpvar_38 + global tmpvar_40 if {($CONFIG_PCI_TRACE == 1)} then { - if { $tmpvar_38 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } - if { $tmpvar_38 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } - if { $tmpvar_38 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } - if { $tmpvar_38 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } - if { $tmpvar_38 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} + if { $tmpvar_40 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } + if { $tmpvar_40 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } + if { $tmpvar_40 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } + if { $tmpvar_40 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } + if { $tmpvar_40 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_39 + global tmpvar_41 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_39 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_39 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_39 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_39 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_39 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_39 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_41 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_41 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_41 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_41 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_41 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_41 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_UART2_ENABLE write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2 - global tmpvar_40 + global tmpvar_42 if {($CONFIG_UART2_ENABLE == 1)} then { - if { $tmpvar_40 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_40 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_40 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_40 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_40 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_40 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_42 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_42 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_42 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_42 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_42 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_42 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -6015,7 +6499,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -6025,6 +6510,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -6043,8 +6530,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -6127,11 +6619,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -6152,6 +6646,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -6307,8 +6805,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -6327,6 +6827,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -6367,458 +6871,484 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "1" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "1" global CONFIG_SRCTRL_SRBANKS1 - if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_29 "1" } global CONFIG_SRCTRL_SRBANKS2 - if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_29 "2" } global CONFIG_SRCTRL_SRBANKS3 - if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_27 "3" } + if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_29 "3" } global CONFIG_SRCTRL_SRBANKS4 - if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_29 "4" } global CONFIG_SRCTRL_SRBANKS5 - if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_27 "5" } - global tmpvar_28 - set tmpvar_28 "0" + if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_29 "5" } + global tmpvar_30 + set tmpvar_30 "0" global CONFIG_SRCTRL_BANKSZ0 - if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_30 "8" } global CONFIG_SRCTRL_BANKSZ1 - if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_30 "16" } global CONFIG_SRCTRL_BANKSZ2 - if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_30 "32" } global CONFIG_SRCTRL_BANKSZ3 - if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_28 "64" } + if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_30 "64" } global CONFIG_SRCTRL_BANKSZ4 - if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_28 "128" } + if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_30 "128" } global CONFIG_SRCTRL_BANKSZ5 - if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_28 "256" } + if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_30 "256" } global CONFIG_SRCTRL_BANKSZ6 - if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_28 "512" } + if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_30 "512" } global CONFIG_SRCTRL_BANKSZ7 - if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_28 "1024" } + if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_30 "1024" } global CONFIG_SRCTRL_BANKSZ8 - if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_28 "2048" } + if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_30 "2048" } global CONFIG_SRCTRL_BANKSZ9 - if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_28 "4096" } + if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_30 "4096" } global CONFIG_SRCTRL_BANKSZ10 - if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_28 "8192" } + if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_30 "8192" } global CONFIG_SRCTRL_BANKSZ11 - if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_28 "16384" } + if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_30 "16384" } global CONFIG_SRCTRL_BANKSZ12 - if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_28 "32768" } + if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_30 "32768" } global CONFIG_SRCTRL_BANKSZ13 - if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_28 "65536" } - global tmpvar_29 - set tmpvar_29 "4" + if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_30 "65536" } + global tmpvar_31 + set tmpvar_31 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_31 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_31 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_31 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_31 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_31 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_31 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } - global tmpvar_30 - set tmpvar_30 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_31 "64" } + global tmpvar_32 + set tmpvar_32 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_32 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_32 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_32 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_32 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } - global tmpvar_31 - set tmpvar_31 "16" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_32 "64" } + global tmpvar_33 + set tmpvar_33 "16" global CONFIG_SPW_AHBFIFO4 - if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_31 "4" } + if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_33 "4" } global CONFIG_SPW_AHBFIFO8 - if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_33 "8" } global CONFIG_SPW_AHBFIFO16 - if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_33 "16" } global CONFIG_SPW_AHBFIFO32 - if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_31 "32" } - global tmpvar_32 - set tmpvar_32 "16" + if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_33 "32" } + global tmpvar_34 + set tmpvar_34 "16" global CONFIG_SPW_RXFIFO16 - if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_32 "16" } + if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_34 "16" } global CONFIG_SPW_RXFIFO32 - if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_32 "32" } + if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_34 "32" } global CONFIG_SPW_RXFIFO64 - if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_32 "64" } - global tmpvar_33 - set tmpvar_33 "64" + if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_34 "64" } + global tmpvar_35 + set tmpvar_35 "64" global CONFIG_SPW_RMAPBUF2 - if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_33 "64" } + if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_35 "64" } global CONFIG_SPW_RMAPBUF4 - if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_33 "128" } + if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_35 "128" } global CONFIG_SPW_RMAPBUF6 - if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_33 "192" } + if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_35 "192" } global CONFIG_SPW_RMAPBUF8 - if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_33 "256" } - global tmpvar_34 - set tmpvar_34 "2" + if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_35 "256" } + global tmpvar_36 + set tmpvar_36 "2" global CONFIG_SPW_GRSPW1 - if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_34 "1" } + if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_36 "1" } global CONFIG_SPW_GRSPW2 - if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_34 "2" } - global tmpvar_35 - set tmpvar_35 "DDR" + if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_36 "2" } + global tmpvar_37 + set tmpvar_37 "DDR" global CONFIG_SPW_RX_SDR - if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_35 "SDR" } + if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_37 "SDR" } global CONFIG_SPW_RX_DDR - if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_35 "DDR" } + if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_37 "DDR" } global CONFIG_SPW_RX_XOR - if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_35 "Xor" } + if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_37 "Xor" } global CONFIG_SPW_RX_AFLEX - if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_35 "Aeroflex" } - global tmpvar_36 - set tmpvar_36 "SDR" + if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_37 "Aeroflex" } + global tmpvar_38 + set tmpvar_38 "SDR" global CONFIG_SPW_TX_SDR - if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_36 "SDR" } + if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_38 "SDR" } global CONFIG_SPW_TX_DDR - if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_36 "DDR" } + if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_38 "DDR" } global CONFIG_SPW_TX_AFLEX - if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_36 "Aeroflex" } - global tmpvar_37 - set tmpvar_37 "8" + if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_38 "Aeroflex" } + global tmpvar_39 + set tmpvar_39 "8" global CONFIG_PCI_FIFO0 - if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_37 "None" } + if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_39 "None" } global CONFIG_PCI_FIFO8 - if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_37 "8" } + if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_39 "8" } global CONFIG_PCI_FIFO16 - if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_37 "16" } + if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_39 "16" } global CONFIG_PCI_FIFO32 - if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_37 "32" } + if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_39 "32" } global CONFIG_PCI_FIFO64 - if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_37 "64" } + if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_39 "64" } global CONFIG_PCI_FIFO128 - if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_37 "128" } - global tmpvar_38 - set tmpvar_38 "256" + if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_39 "128" } + global tmpvar_40 + set tmpvar_40 "256" global CONFIG_PCI_TRACE256 - if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_38 "256" } + if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_40 "256" } global CONFIG_PCI_TRACE512 - if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_38 "512" } + if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_40 "512" } global CONFIG_PCI_TRACE1024 - if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_38 "1024" } + if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_40 "1024" } global CONFIG_PCI_TRACE2048 - if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_38 "2048" } + if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_40 "2048" } global CONFIG_PCI_TRACE4096 - if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_38 "4096" } - global tmpvar_39 - set tmpvar_39 "1" + if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_40 "4096" } + global tmpvar_41 + set tmpvar_41 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_39 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_41 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_39 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_41 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_39 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_41 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_39 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_41 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_39 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_41 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_39 "32" } - global tmpvar_40 - set tmpvar_40 "1" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_41 "32" } + global tmpvar_42 + set tmpvar_42 "1" global CONFIG_UA2_FIFO1 - if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_40 "1" } + if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_42 "1" } global CONFIG_UA2_FIFO2 - if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_40 "2" } + if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_42 "2" } global CONFIG_UA2_FIFO4 - if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_40 "4" } + if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_42 "4" } global CONFIG_UA2_FIFO8 - if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_40 "8" } + if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_42 "8" } global CONFIG_UA2_FIFO16 - if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_40 "16" } + if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_42 "16" } global CONFIG_UA2_FIFO32 - if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_40 "32" } + if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_42 "32" } } diff --git a/designs/leon3-gr-cpci-xc2v6000/leon3mp.vhd b/designs/leon3-gr-cpci-xc2v6000/leon3mp.vhd index bda5039e..9248ddc5 100644 --- a/designs/leon3-gr-cpci-xc2v6000/leon3mp.vhd +++ b/designs/leon3-gr-cpci-xc2v6000/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-gr-cpci-xc2v6000/testbench.vhd b/designs/leon3-gr-cpci-xc2v6000/testbench.vhd index d89512df..d27dd5ce 100644 --- a/designs/leon3-gr-cpci-xc2v6000/testbench.vhd +++ b/designs/leon3-gr-cpci-xc2v6000/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-gr-cpci-xc2v6000/tkconfig.h b/designs/leon3-gr-cpci-xc2v6000/tkconfig.h index 379f6782..70f52e3f 100644 --- a/designs/leon3-gr-cpci-xc2v6000/tkconfig.h +++ b/designs/leon3-gr-cpci-xc2v6000/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-gr-cpci-xc4v/Makefile b/designs/leon3-gr-cpci-xc4v/Makefile index dd7fc61f..565e8a4e 100644 --- a/designs/leon3-gr-cpci-xc4v/Makefile +++ b/designs/leon3-gr-cpci-xc4v/Makefile @@ -20,9 +20,9 @@ SYNPOPT="set_option -pipe 0; set_option -retiming 0; set_option -write_apr_const TECHLIBS = unisim secureip LIBSKIP = core1553bbc core1553brm core1553brt gr1553 \ - tmtc openchip hynix cypress ihp gleichmann usbhc fmf spansion gsi -DIRSKIP = b1553 leon2 leon2ft leon3ft crypto satcan ddr usb ata grusbhc haps \ - leon4 leon4b64 l2cache iommu pcif slink ascs coremp7 ac97 + tmtc openchip hynix cypress ihp usbhc fmf spansion gsi +DIRSKIP = b1553 leon2 leon2ft leon3ft crypto satcan ddr usb grusbhc \ + leon4 leon4v0 l2cache iommu pcif slink ascs include $(GRLIB)/bin/Makefile include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-gr-cpci-xc4v/config.help b/designs/leon3-gr-cpci-xc4v/config.help index f67d85cd..ba36cd93 100644 --- a/designs/leon3-gr-cpci-xc4v/config.help +++ b/designs/leon3-gr-cpci-xc4v/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. diff --git a/designs/leon3-gr-cpci-xc4v/lconfig.tk b/designs/leon3-gr-cpci-xc4v/lconfig.tk index b9c434ce..3c804764 100755 --- a/designs/leon3-gr-cpci-xc4v/lconfig.tk +++ b/designs/leon3-gr-cpci-xc4v/lconfig.tk @@ -756,7 +756,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -766,7 +767,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -918,8 +921,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -938,6 +943,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1034,9 +1043,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_3 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_3 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_3 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_3 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_3 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_3 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1090,10 +1100,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1139,14 +1150,16 @@ proc update_define_menu2 {} { if {$tmpvar_3 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_3 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_3 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_3 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_3 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1219,13 +1232,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_4 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_4 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_4 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_4 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_4 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_4 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1265,22 +1286,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_4 + global CONFIG_LEON3_MIN + if {$tmpvar_4 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_4 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_4 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_4 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1337,21 +1626,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_4 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_5 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_5 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_5 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_5 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_5 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_5 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED + global tmpvar_6 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_6 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_6 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_6 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1398,36 +1687,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1435,48 +1725,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_5 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_5 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_5 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_6 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_6 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_6 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_6 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1532,28 +1823,28 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_6 - minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU + global tmpvar_7 + minimenu $w.config.f 5 1 "FPU core" tmpvar_7 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_7 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_7 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_7 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_7 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_8 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_8 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_8 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_8 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_8 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_8 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_8 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 + global tmpvar_9 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_9 CONFIG_FPU_GRFPC0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_9 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_9 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_9 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x4.x.menu 3 bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1594,20 +1885,21 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1616,38 +1908,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_6 + global tmpvar_7 global CONFIG_FPU_GRFPU - if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_7 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_7 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_7 + if {$tmpvar_7 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_8 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_8 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_8 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_8 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + if {$tmpvar_8 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_FPU_GRFPC0 - if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_9 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_9 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_9 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1704,92 +1997,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_9 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 + global tmpvar_10 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_10 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_10 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_10 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 + global tmpvar_11 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_11 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_11 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_11 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_11 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_11 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_11 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_11 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_11 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_11 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 + global tmpvar_12 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_12 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_12 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND + global tmpvar_13 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_13 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_13 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_13 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_13 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_13 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_13 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_14 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_14 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_14 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 + global tmpvar_15 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_15 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_15 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_15 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 + global tmpvar_16 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_16 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_16 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_16 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_16 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_16 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_16 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_16 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_16 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_16 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 + global tmpvar_17 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_17 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_17 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND + global tmpvar_18 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_18 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_18 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_18 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_18 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_18 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1797,18 +2090,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_18 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_19 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_19 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_19 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_19 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_19 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_19 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_19 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_19 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_19 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_19 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_19 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1849,52 +2142,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1902,162 +2196,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_9 + global tmpvar_10 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_10 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_10 + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_11 global CONFIG_ICACHE_SZ1 - if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_11 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_11 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_11 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_11 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_11 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_11 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_11 + if {$tmpvar_11 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_12 global CONFIG_ICACHE_LZ16 - if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_12 + if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_13 global CONFIG_ICACHE_ALGORND - if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_13 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_13 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_13 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_13 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_14 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_14 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_14 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_14 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_14 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_14 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_14 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_14 + global tmpvar_15 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_15 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_15 + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_16 global CONFIG_DCACHE_SZ1 - if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_16 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_16 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_16 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_16 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_16 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_16 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_16 + if {$tmpvar_16 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_17 global CONFIG_DCACHE_LZ16 - if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_17 + if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_18 global CONFIG_DCACHE_ALGORND - if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_18 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_18 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_18 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_18 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_19 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_19 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_19 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_19 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_19 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_19 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_19 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_19 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_19 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2113,45 +2408,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_19 - minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED + global tmpvar_20 + minimenu $w.config.f 7 1 "MMU type " tmpvar_20 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_20 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_20 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY + global tmpvar_21 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_21 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_21 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_21 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_21 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_22 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_22 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_23 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_23 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_23 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_23 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_23 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K + global tmpvar_24 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_24 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_24 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_24 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_24 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_24 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_24 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2191,18 +2488,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2210,55 +2508,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_19 + global tmpvar_20 global CONFIG_MMU_COMBINED - if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_20 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_20 + if {$tmpvar_20 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_21 global CONFIG_MMU_REPARRAY - if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_21 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_21 + if {$tmpvar_21 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_22 global CONFIG_MMU_I2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_22 + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_23 global CONFIG_MMU_D2 - if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_23 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_23 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_23 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_23 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_23 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_23 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_MMU_PAGE_4K - if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_24 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_24 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_24 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_24 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_24 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2315,24 +2618,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_24 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_25 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 + global tmpvar_26 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2372,17 +2675,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2390,37 +2694,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2476,22 +2781,22 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_26 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE + global tmpvar_27 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_27 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_27 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - global tmpvar_27 - minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + global tmpvar_28 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_28 CONFIG_FPUFT_NONE menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" - $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_28 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_28 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_28 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_28 -value "TMR" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN @@ -2562,26 +2867,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_26 + global tmpvar_27 global CONFIG_IUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_27 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global tmpvar_27 + if {$tmpvar_27 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_28 global CONFIG_FPUFT_NONE - if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + if {$tmpvar_28 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} global CONFIG_FPUFT_PAR - if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + if {$tmpvar_28 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} global CONFIG_FPUFT_DMR - if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + if {$tmpvar_28 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} global CONFIG_FPUFT_TMR - if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} + if {$tmpvar_28 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2890,14 +3195,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_28 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 + global tmpvar_29 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_29 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2971,17 +3276,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_28 + global tmpvar_29 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3422,16 +3727,16 @@ proc menu16 {w title} { bool $w.config.f 16 0 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_29 - minimenu $w.config.f 16 1 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 + global tmpvar_30 + minimenu $w.config.f 16 1 "AHB RAM size (Kbyte)" tmpvar_30 CONFIG_AHBRAM_SZ1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x1.x.menu 7 hex $w.config.f 16 2 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3481,21 +3786,21 @@ proc update_menu16 {} { proc update_define_menu16 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_30 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_30 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_30 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3555,14 +3860,14 @@ proc menu17 {w title} { bool $w.config.f 17 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 17 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_30 - minimenu $w.config.f 17 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 + global tmpvar_31 + minimenu $w.config.f 17 2 "AHB FIFO size (words) " tmpvar_31 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3616,17 +3921,17 @@ proc update_define_menu17 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_30 + global tmpvar_31 global CONFIG_GRETH_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_31 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3819,57 +4124,57 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable Spacewire links " CONFIG_SPW_ENABLE int $w.config.f 19 1 "Number of links (1 - 3)" CONFIG_SPW_NUM - global tmpvar_31 - minimenu $w.config.f 19 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_31 CONFIG_SPW_AHBFIFO4 + global tmpvar_32 + minimenu $w.config.f 19 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_32 CONFIG_SPW_AHBFIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB RX/TX FIFO size (32-bit words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_32 - minimenu $w.config.f 19 3 "Receiver FIFO size (bytes) " tmpvar_32 CONFIG_SPW_RXFIFO16 + global tmpvar_33 + minimenu $w.config.f 19 3 "Receiver FIFO size (bytes) " tmpvar_33 CONFIG_SPW_RXFIFO16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Receiver FIFO size (bytes) \"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_32 -value "64" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_33 -value "64" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 19 4 "Enable RMAP protocol " CONFIG_SPW_RMAP - global tmpvar_33 - minimenu $w.config.f 19 5 "RMAP buffer size (bytes) " tmpvar_33 CONFIG_SPW_RMAPBUF2 + global tmpvar_34 + minimenu $w.config.f 19 5 "RMAP buffer size (bytes) " tmpvar_34 CONFIG_SPW_RMAPBUF2 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"RMAP buffer size (bytes) \"" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_33 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_33 -value "128" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_33 -value "192" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_33 -value "256" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_34 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_34 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_34 -value "192" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_34 -value "256" -command "update_active" menusplit $w $w.config.f.x5.x.menu 4 bool $w.config.f 19 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC bool $w.config.f 19 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL bool $w.config.f 19 8 "Spacewire FIFO protection " CONFIG_SPW_FT bool $w.config.f 19 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST int $w.config.f 19 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS - global tmpvar_34 - minimenu $w.config.f 19 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_34 CONFIG_SPW_GRSPW1 + global tmpvar_35 + minimenu $w.config.f 19 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_35 CONFIG_SPW_GRSPW1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Select GRSPW core (GRSPW1/GRSPW2) \"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_34 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_34 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_35 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_35 -value "2" -command "update_active" menusplit $w $w.config.f.x11.x.menu 2 int $w.config.f 19 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN bool $w.config.f 19 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME - global tmpvar_35 - minimenu $w.config.f 19 14 "Select receiver clock type " tmpvar_35 CONFIG_SPW_RX_SDR + global tmpvar_36 + minimenu $w.config.f 19 14 "Select receiver clock type " tmpvar_36 CONFIG_SPW_RX_SDR menu $w.config.f.x14.x.menu -tearoffcommand "menutitle \"Select receiver clock type \"" - $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_35 -value "SDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_35 -value "DDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_35 -value "Xor" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_35 -value "Aeroflex" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_36 -value "SDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_36 -value "DDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_36 -value "Xor" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_36 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x14.x.menu 4 - global tmpvar_36 - minimenu $w.config.f 19 15 "Select transmitter clock type " tmpvar_36 CONFIG_SPW_TX_SDR + global tmpvar_37 + minimenu $w.config.f 19 15 "Select transmitter clock type " tmpvar_37 CONFIG_SPW_TX_SDR menu $w.config.f.x15.x.menu -tearoffcommand "menutitle \"Select transmitter clock type \"" - $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_36 -value "SDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_36 -value "DDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_36 -value "Aeroflex" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_37 -value "SDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_37 -value "DDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_37 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x15.x.menu 3 @@ -3949,34 +4254,34 @@ proc update_define_menu19 {} { global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_NUM "$CONFIG_SPW_NUM" 1} - global tmpvar_31 + global tmpvar_32 global CONFIG_SPW_AHBFIFO4 - if {$tmpvar_31 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} + if {$tmpvar_32 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} global CONFIG_SPW_AHBFIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} + if {$tmpvar_32 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} global CONFIG_SPW_AHBFIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} + if {$tmpvar_32 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} global CONFIG_SPW_AHBFIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} - global tmpvar_32 + if {$tmpvar_32 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} + global tmpvar_33 global CONFIG_SPW_RXFIFO16 - if {$tmpvar_32 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} + if {$tmpvar_33 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} global CONFIG_SPW_RXFIFO32 - if {$tmpvar_32 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} + if {$tmpvar_33 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} global CONFIG_SPW_RXFIFO64 - if {$tmpvar_32 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} + if {$tmpvar_33 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP&15]} else {set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP|16]} - global tmpvar_33 + global tmpvar_34 global CONFIG_SPW_RMAPBUF2 - if {$tmpvar_33 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} + if {$tmpvar_34 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} global CONFIG_SPW_RMAPBUF4 - if {$tmpvar_33 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} + if {$tmpvar_34 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} global CONFIG_SPW_RMAPBUF6 - if {$tmpvar_33 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} + if {$tmpvar_34 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} global CONFIG_SPW_RMAPBUF8 - if {$tmpvar_33 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} + if {$tmpvar_34 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC&15]} else {set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC|16]} @@ -3991,32 +4296,32 @@ proc update_define_menu19 {} { set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST&15]} else {set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST|16]} global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_PORTS "$CONFIG_SPW_PORTS" 1} - global tmpvar_34 + global tmpvar_35 global CONFIG_SPW_GRSPW1 - if {$tmpvar_34 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} + if {$tmpvar_35 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} global CONFIG_SPW_GRSPW2 - if {$tmpvar_34 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} + if {$tmpvar_35 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} global CONFIG_SPW_DMACHAN if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {validate_int CONFIG_SPW_DMACHAN "$CONFIG_SPW_DMACHAN" 1} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME&15]} else {set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME|16]} - global tmpvar_35 + global tmpvar_36 global CONFIG_SPW_RX_SDR - if {$tmpvar_35 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} + if {$tmpvar_36 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} global CONFIG_SPW_RX_DDR - if {$tmpvar_35 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} + if {$tmpvar_36 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} global CONFIG_SPW_RX_XOR - if {$tmpvar_35 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} + if {$tmpvar_36 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} global CONFIG_SPW_RX_AFLEX - if {$tmpvar_35 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} - global tmpvar_36 + if {$tmpvar_36 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} + global tmpvar_37 global CONFIG_SPW_TX_SDR - if {$tmpvar_36 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} + if {$tmpvar_37 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} global CONFIG_SPW_TX_DDR - if {$tmpvar_36 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} + if {$tmpvar_37 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} global CONFIG_SPW_TX_AFLEX - if {$tmpvar_36 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} + if {$tmpvar_37 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} } @@ -4077,14 +4382,14 @@ proc menu20 {w title} { bool $w.config.f 20 3 "PCI arbiter APB interface " CONFIG_PCI_ARBITER_APB int $w.config.f 20 4 "Number of PCI REQ/GNT pairs" CONFIG_PCI_ARBITER_NREQ bool $w.config.f 20 5 "Enable PCI trace buffer " CONFIG_PCI_TRACE - global tmpvar_41 - minimenu $w.config.f 20 6 "PCI trace buffer depth" tmpvar_41 CONFIG_PCI_TRACE256 + global tmpvar_42 + minimenu $w.config.f 20 6 "PCI trace buffer depth" tmpvar_42 CONFIG_PCI_TRACE256 menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"PCI trace buffer depth\"" - $w.config.f.x6.x.menu add radiobutton -label "256" -variable tmpvar_41 -value "256" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "512" -variable tmpvar_41 -value "512" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "1024" -variable tmpvar_41 -value "1024" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "2048" -variable tmpvar_41 -value "2048" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "4096" -variable tmpvar_41 -value "4096" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "256" -variable tmpvar_42 -value "256" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "512" -variable tmpvar_42 -value "512" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "1024" -variable tmpvar_42 -value "1024" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "2048" -variable tmpvar_42 -value "2048" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4096" -variable tmpvar_42 -value "4096" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -4143,17 +4448,17 @@ proc update_define_menu20 {} { set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB&15]} else {set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB|16]} global CONFIG_PCI_ARBITER_NREQ if {($CONFIG_PCI_ARBITER == 1)} then {validate_int CONFIG_PCI_ARBITER_NREQ "$CONFIG_PCI_ARBITER_NREQ" 4} - global tmpvar_41 + global tmpvar_42 global CONFIG_PCI_TRACE256 - if {$tmpvar_41 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} + if {$tmpvar_42 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} global CONFIG_PCI_TRACE512 - if {$tmpvar_41 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} + if {$tmpvar_42 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} global CONFIG_PCI_TRACE1024 - if {$tmpvar_41 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} + if {$tmpvar_42 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} global CONFIG_PCI_TRACE2048 - if {$tmpvar_41 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} + if {$tmpvar_42 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} global CONFIG_PCI_TRACE4096 - if {$tmpvar_41 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} + if {$tmpvar_42 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} } @@ -4213,15 +4518,15 @@ proc menu21 {w title} { bool $w.config.f 21 2 "PCI DMA controller " CONFIG_PCI_MASTER_TARGET_DMA hex $w.config.f 21 3 "PCI vendor ID" CONFIG_PCI_VENDORID hex $w.config.f 21 4 "PCI device ID" CONFIG_PCI_DEVICEID - global tmpvar_37 - minimenu $w.config.f 21 5 "PCI FIFO depth" tmpvar_37 CONFIG_PCI_FIFO0 + global tmpvar_38 + minimenu $w.config.f 21 5 "PCI FIFO depth" tmpvar_38 CONFIG_PCI_FIFO0 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"PCI FIFO depth\"" - $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_37 -value "None" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_37 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_37 -value "16" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_37 -value "32" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_37 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_37 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_38 -value "None" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_38 -value "8" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_38 -value "16" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_38 -value "32" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_38 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_38 -value "128" -command "update_active" menusplit $w $w.config.f.x5.x.menu 6 hex $w.config.f 21 6 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR @@ -4298,19 +4603,19 @@ proc update_define_menu21 {} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_VENDORID "$CONFIG_PCI_VENDORID" 1AC8} global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_DEVICEID "$CONFIG_PCI_DEVICEID" 0054} - global tmpvar_37 + global tmpvar_38 global CONFIG_PCI_FIFO0 - if {$tmpvar_37 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} + if {$tmpvar_38 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} global CONFIG_PCI_FIFO8 - if {$tmpvar_37 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} + if {$tmpvar_38 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} global CONFIG_PCI_FIFO16 - if {$tmpvar_37 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} + if {$tmpvar_38 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} global CONFIG_PCI_FIFO32 - if {$tmpvar_37 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} + if {$tmpvar_38 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} global CONFIG_PCI_FIFO64 - if {$tmpvar_37 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} + if {$tmpvar_38 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} global CONFIG_PCI_FIFO128 - if {$tmpvar_37 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} + if {$tmpvar_38 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_HADDR "$CONFIG_PCI_HADDR" E00} } @@ -4382,37 +4687,37 @@ proc menu22 {w title} { int $w.config.f 22 12 "BAR3" CONFIG_GRPCI2_BAR3 int $w.config.f 22 13 "BAR4" CONFIG_GRPCI2_BAR4 int $w.config.f 22 14 "BAR5" CONFIG_GRPCI2_BAR5 - global tmpvar_38 - minimenu $w.config.f 22 15 "GRPCI2 FIFO depth" tmpvar_38 CONFIG_GRPCI2_FIFO8 + global tmpvar_39 + minimenu $w.config.f 22 15 "GRPCI2 FIFO depth" tmpvar_39 CONFIG_GRPCI2_FIFO8 menu $w.config.f.x15.x.menu -tearoffcommand "menutitle \"GRPCI2 FIFO depth\"" - $w.config.f.x15.x.menu add radiobutton -label "8" -variable tmpvar_38 -value "8" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "16" -variable tmpvar_38 -value "16" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "32" -variable tmpvar_38 -value "32" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "64" -variable tmpvar_38 -value "64" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "128" -variable tmpvar_38 -value "128" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "8" -variable tmpvar_39 -value "8" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "16" -variable tmpvar_39 -value "16" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "32" -variable tmpvar_39 -value "32" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "64" -variable tmpvar_39 -value "64" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "128" -variable tmpvar_39 -value "128" -command "update_active" menusplit $w $w.config.f.x15.x.menu 5 - global tmpvar_39 - minimenu $w.config.f 22 16 "GRPCI2 FIFO Count" tmpvar_39 CONFIG_GRPCI2_FIFOCNT1 + global tmpvar_40 + minimenu $w.config.f 22 16 "GRPCI2 FIFO Count" tmpvar_40 CONFIG_GRPCI2_FIFOCNT1 menu $w.config.f.x16.x.menu -tearoffcommand "menutitle \"GRPCI2 FIFO Count\"" - $w.config.f.x16.x.menu add radiobutton -label "1" -variable tmpvar_39 -value "1" -command "update_active" - $w.config.f.x16.x.menu add radiobutton -label "2" -variable tmpvar_39 -value "2" -command "update_active" - $w.config.f.x16.x.menu add radiobutton -label "3" -variable tmpvar_39 -value "3" -command "update_active" - $w.config.f.x16.x.menu add radiobutton -label "4" -variable tmpvar_39 -value "4" -command "update_active" + $w.config.f.x16.x.menu add radiobutton -label "1" -variable tmpvar_40 -value "1" -command "update_active" + $w.config.f.x16.x.menu add radiobutton -label "2" -variable tmpvar_40 -value "2" -command "update_active" + $w.config.f.x16.x.menu add radiobutton -label "3" -variable tmpvar_40 -value "3" -command "update_active" + $w.config.f.x16.x.menu add radiobutton -label "4" -variable tmpvar_40 -value "4" -command "update_active" menusplit $w $w.config.f.x16.x.menu 4 bool $w.config.f 22 17 "GRPCI2 PCI little-endian" CONFIG_GRPCI2_ENDIAN bool $w.config.f 22 18 "GRPCI2 Device Int" CONFIG_GRPCI2_DINT hex $w.config.f 22 19 "GRPCI2 Device Int mask" CONFIG_GRPCI2_DINTMASK bool $w.config.f 22 20 "GRPCI2 Host Int" CONFIG_GRPCI2_HINT hex $w.config.f 22 21 "GRPCI2 Hevice Int mask" CONFIG_GRPCI2_HINTMASK - global tmpvar_40 - minimenu $w.config.f 22 22 "GRPCI2 PCI trace buffer" tmpvar_40 CONFIG_GRPCI2_TRACE0 + global tmpvar_41 + minimenu $w.config.f 22 22 "GRPCI2 PCI trace buffer" tmpvar_41 CONFIG_GRPCI2_TRACE0 menu $w.config.f.x22.x.menu -tearoffcommand "menutitle \"GRPCI2 PCI trace buffer\"" - $w.config.f.x22.x.menu add radiobutton -label "none" -variable tmpvar_40 -value "none" -command "update_active" - $w.config.f.x22.x.menu add radiobutton -label "256" -variable tmpvar_40 -value "256" -command "update_active" - $w.config.f.x22.x.menu add radiobutton -label "512" -variable tmpvar_40 -value "512" -command "update_active" - $w.config.f.x22.x.menu add radiobutton -label "1024" -variable tmpvar_40 -value "1024" -command "update_active" - $w.config.f.x22.x.menu add radiobutton -label "2048" -variable tmpvar_40 -value "2048" -command "update_active" - $w.config.f.x22.x.menu add radiobutton -label "4096" -variable tmpvar_40 -value "4096" -command "update_active" + $w.config.f.x22.x.menu add radiobutton -label "none" -variable tmpvar_41 -value "none" -command "update_active" + $w.config.f.x22.x.menu add radiobutton -label "256" -variable tmpvar_41 -value "256" -command "update_active" + $w.config.f.x22.x.menu add radiobutton -label "512" -variable tmpvar_41 -value "512" -command "update_active" + $w.config.f.x22.x.menu add radiobutton -label "1024" -variable tmpvar_41 -value "1024" -command "update_active" + $w.config.f.x22.x.menu add radiobutton -label "2048" -variable tmpvar_41 -value "2048" -command "update_active" + $w.config.f.x22.x.menu add radiobutton -label "4096" -variable tmpvar_41 -value "4096" -command "update_active" menusplit $w $w.config.f.x22.x.menu 6 bool $w.config.f 22 23 "Separate PCI trace buffer APB interface" CONFIG_GRPCI2_TRACEAPB bool $w.config.f 22 24 "GRPCI2 Input pad bypass" CONFIG_GRPCI2_BYPASS @@ -4530,45 +4835,45 @@ proc update_define_menu22 {} { if {($CONFIG_GRPCI2_TARGET == 1)} then {validate_int CONFIG_GRPCI2_BAR4 "$CONFIG_GRPCI2_BAR4" 0} global CONFIG_GRPCI2_BAR5 if {($CONFIG_GRPCI2_TARGET == 1)} then {validate_int CONFIG_GRPCI2_BAR5 "$CONFIG_GRPCI2_BAR5" 0} - global tmpvar_38 + global tmpvar_39 global CONFIG_GRPCI2_FIFO8 - if {$tmpvar_38 == "8"} then {set CONFIG_GRPCI2_FIFO8 1} else {set CONFIG_GRPCI2_FIFO8 0} + if {$tmpvar_39 == "8"} then {set CONFIG_GRPCI2_FIFO8 1} else {set CONFIG_GRPCI2_FIFO8 0} global CONFIG_GRPCI2_FIFO16 - if {$tmpvar_38 == "16"} then {set CONFIG_GRPCI2_FIFO16 1} else {set CONFIG_GRPCI2_FIFO16 0} + if {$tmpvar_39 == "16"} then {set CONFIG_GRPCI2_FIFO16 1} else {set CONFIG_GRPCI2_FIFO16 0} global CONFIG_GRPCI2_FIFO32 - if {$tmpvar_38 == "32"} then {set CONFIG_GRPCI2_FIFO32 1} else {set CONFIG_GRPCI2_FIFO32 0} + if {$tmpvar_39 == "32"} then {set CONFIG_GRPCI2_FIFO32 1} else {set CONFIG_GRPCI2_FIFO32 0} global CONFIG_GRPCI2_FIFO64 - if {$tmpvar_38 == "64"} then {set CONFIG_GRPCI2_FIFO64 1} else {set CONFIG_GRPCI2_FIFO64 0} + if {$tmpvar_39 == "64"} then {set CONFIG_GRPCI2_FIFO64 1} else {set CONFIG_GRPCI2_FIFO64 0} global CONFIG_GRPCI2_FIFO128 - if {$tmpvar_38 == "128"} then {set CONFIG_GRPCI2_FIFO128 1} else {set CONFIG_GRPCI2_FIFO128 0} - global tmpvar_39 + if {$tmpvar_39 == "128"} then {set CONFIG_GRPCI2_FIFO128 1} else {set CONFIG_GRPCI2_FIFO128 0} + global tmpvar_40 global CONFIG_GRPCI2_FIFOCNT1 - if {$tmpvar_39 == "1"} then {set CONFIG_GRPCI2_FIFOCNT1 1} else {set CONFIG_GRPCI2_FIFOCNT1 0} + if {$tmpvar_40 == "1"} then {set CONFIG_GRPCI2_FIFOCNT1 1} else {set CONFIG_GRPCI2_FIFOCNT1 0} global CONFIG_GRPCI2_FIFOCNT2 - if {$tmpvar_39 == "2"} then {set CONFIG_GRPCI2_FIFOCNT2 1} else {set CONFIG_GRPCI2_FIFOCNT2 0} + if {$tmpvar_40 == "2"} then {set CONFIG_GRPCI2_FIFOCNT2 1} else {set CONFIG_GRPCI2_FIFOCNT2 0} global CONFIG_GRPCI2_FIFOCNT3 - if {$tmpvar_39 == "3"} then {set CONFIG_GRPCI2_FIFOCNT3 1} else {set CONFIG_GRPCI2_FIFOCNT3 0} + if {$tmpvar_40 == "3"} then {set CONFIG_GRPCI2_FIFOCNT3 1} else {set CONFIG_GRPCI2_FIFOCNT3 0} global CONFIG_GRPCI2_FIFOCNT4 - if {$tmpvar_39 == "4"} then {set CONFIG_GRPCI2_FIFOCNT4 1} else {set CONFIG_GRPCI2_FIFOCNT4 0} + if {$tmpvar_40 == "4"} then {set CONFIG_GRPCI2_FIFOCNT4 1} else {set CONFIG_GRPCI2_FIFOCNT4 0} global CONFIG_GRPCI2_DINT global CONFIG_GRPCI2_DINTMASK if {($CONFIG_GRPCI2_DINT == 1)} then {validate_hex CONFIG_GRPCI2_DINTMASK "$CONFIG_GRPCI2_DINTMASK" 0} global CONFIG_GRPCI2_HINT global CONFIG_GRPCI2_HINTMASK if {($CONFIG_GRPCI2_HINT == 1)} then {validate_hex CONFIG_GRPCI2_HINTMASK "$CONFIG_GRPCI2_HINTMASK" 0} - global tmpvar_40 + global tmpvar_41 global CONFIG_GRPCI2_TRACE0 - if {$tmpvar_40 == "none"} then {set CONFIG_GRPCI2_TRACE0 1} else {set CONFIG_GRPCI2_TRACE0 0} + if {$tmpvar_41 == "none"} then {set CONFIG_GRPCI2_TRACE0 1} else {set CONFIG_GRPCI2_TRACE0 0} global CONFIG_GRPCI2_TRACE256 - if {$tmpvar_40 == "256"} then {set CONFIG_GRPCI2_TRACE256 1} else {set CONFIG_GRPCI2_TRACE256 0} + if {$tmpvar_41 == "256"} then {set CONFIG_GRPCI2_TRACE256 1} else {set CONFIG_GRPCI2_TRACE256 0} global CONFIG_GRPCI2_TRACE512 - if {$tmpvar_40 == "512"} then {set CONFIG_GRPCI2_TRACE512 1} else {set CONFIG_GRPCI2_TRACE512 0} + if {$tmpvar_41 == "512"} then {set CONFIG_GRPCI2_TRACE512 1} else {set CONFIG_GRPCI2_TRACE512 0} global CONFIG_GRPCI2_TRACE1024 - if {$tmpvar_40 == "1024"} then {set CONFIG_GRPCI2_TRACE1024 1} else {set CONFIG_GRPCI2_TRACE1024 0} + if {$tmpvar_41 == "1024"} then {set CONFIG_GRPCI2_TRACE1024 1} else {set CONFIG_GRPCI2_TRACE1024 0} global CONFIG_GRPCI2_TRACE2048 - if {$tmpvar_40 == "2048"} then {set CONFIG_GRPCI2_TRACE2048 1} else {set CONFIG_GRPCI2_TRACE2048 0} + if {$tmpvar_41 == "2048"} then {set CONFIG_GRPCI2_TRACE2048 1} else {set CONFIG_GRPCI2_TRACE2048 0} global CONFIG_GRPCI2_TRACE4096 - if {$tmpvar_40 == "4096"} then {set CONFIG_GRPCI2_TRACE4096 1} else {set CONFIG_GRPCI2_TRACE4096 0} + if {$tmpvar_41 == "4096"} then {set CONFIG_GRPCI2_TRACE4096 1} else {set CONFIG_GRPCI2_TRACE4096 0} global CONFIG_GRPCI2_TRACEAPB if {($CONFIG_GRPCI2_TRACE0 == 0)} then { set CONFIG_GRPCI2_TRACEAPB [expr $CONFIG_GRPCI2_TRACEAPB&15]} else {set CONFIG_GRPCI2_TRACEAPB [expr $CONFIG_GRPCI2_TRACEAPB|16]} @@ -4627,26 +4932,26 @@ proc menu23 {w title} { bool $w.config.f 23 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_42 - minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_42 CONFIG_UA1_FIFO1 + global tmpvar_43 + minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_43 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_42 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_42 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_42 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_42 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_42 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_42 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_43 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_43 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_43 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_43 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_43 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_43 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 23 2 "Enable secondary UART " CONFIG_UART2_ENABLE - global tmpvar_43 - minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_43 CONFIG_UA2_FIFO1 + global tmpvar_44 + minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_44 CONFIG_UA2_FIFO1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_43 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_43 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_43 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_43 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_43 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_43 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_44 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_44 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_44 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_44 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_44 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_44 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 6 bool $w.config.f 23 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 23 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4737,32 +5042,32 @@ proc update_menu23 {} { proc update_define_menu23 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_42 + global tmpvar_43 global CONFIG_UA1_FIFO1 - if {$tmpvar_42 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_43 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_42 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_43 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_42 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_43 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_42 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_43 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_42 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_43 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_42 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global tmpvar_43 + if {$tmpvar_43 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + global tmpvar_44 global CONFIG_UA2_FIFO1 - if {$tmpvar_43 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} + if {$tmpvar_44 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} global CONFIG_UA2_FIFO2 - if {$tmpvar_43 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} + if {$tmpvar_44 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} global CONFIG_UA2_FIFO4 - if {$tmpvar_43 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} + if {$tmpvar_44 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} global CONFIG_UA2_FIFO8 - if {$tmpvar_43 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} + if {$tmpvar_44 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} global CONFIG_UA2_FIFO16 - if {$tmpvar_43 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} + if {$tmpvar_44 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} global CONFIG_UA2_FIFO32 - if {$tmpvar_43 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} + if {$tmpvar_44 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4932,7 +5237,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4942,6 +5248,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4970,6 +5278,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4982,14 +5291,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_4 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -5002,28 +5316,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -5033,17 +5347,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -5055,12 +5369,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -5070,10 +5384,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -5084,7 +5398,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -5096,26 +5410,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_21 "(not set)" +set tmpvar_22 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_22 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_23 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -5123,27 +5439,27 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set tmpvar_27 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_FPUFT_NONE 0 set CONFIG_FPUFT_PAR 0 set CONFIG_FPUFT_DMR 0 @@ -5168,7 +5484,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_28 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -5193,7 +5509,7 @@ set CONFIG_MCTRL_PROGPAGE 0 set CONFIG_AHBSTAT_ENABLE 0 set CONFIG_AHBSTAT_NFTSLV 1 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -5204,7 +5520,7 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_30 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 @@ -5219,17 +5535,17 @@ set CONFIG_CAN_SYNCRST 0 set CONFIG_CAN_FT 0 set CONFIG_SPW_ENABLE 0 set CONFIG_SPW_NUM 1 -set tmpvar_31 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_SPW_AHBFIFO4 0 set CONFIG_SPW_AHBFIFO8 0 set CONFIG_SPW_AHBFIFO16 0 set CONFIG_SPW_AHBFIFO32 0 -set tmpvar_32 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_SPW_RXFIFO16 0 set CONFIG_SPW_RXFIFO32 0 set CONFIG_SPW_RXFIFO64 0 set CONFIG_SPW_RMAP 0 -set tmpvar_33 "(not set)" +set tmpvar_34 "(not set)" set CONFIG_SPW_RMAPBUF2 0 set CONFIG_SPW_RMAPBUF4 0 set CONFIG_SPW_RMAPBUF6 0 @@ -5239,17 +5555,17 @@ set CONFIG_SPW_RXUNAL 0 set CONFIG_SPW_FT 0 set CONFIG_SPW_NETLIST 0 set CONFIG_SPW_PORTS 1 -set tmpvar_34 "(not set)" +set tmpvar_35 "(not set)" set CONFIG_SPW_GRSPW1 0 set CONFIG_SPW_GRSPW2 0 set CONFIG_SPW_DMACHAN 1 set CONFIG_SPW_RTSAME 0 -set tmpvar_35 "(not set)" +set tmpvar_36 "(not set)" set CONFIG_SPW_RX_SDR 0 set CONFIG_SPW_RX_DDR 0 set CONFIG_SPW_RX_XOR 0 set CONFIG_SPW_RX_AFLEX 0 -set tmpvar_36 "(not set)" +set tmpvar_37 "(not set)" set CONFIG_SPW_TX_SDR 0 set CONFIG_SPW_TX_DDR 0 set CONFIG_SPW_TX_AFLEX 0 @@ -5258,7 +5574,7 @@ set CONFIG_PCI_MASTER_TARGET 0 set CONFIG_PCI_MASTER_TARGET_DMA 0 set CONFIG_PCI_VENDORID 1AC8 set CONFIG_PCI_DEVICEID 0054 -set tmpvar_37 "(not set)" +set tmpvar_38 "(not set)" set CONFIG_PCI_FIFO0 0 set CONFIG_PCI_FIFO8 0 set CONFIG_PCI_FIFO16 0 @@ -5281,13 +5597,13 @@ set CONFIG_GRPCI2_BAR2 0 set CONFIG_GRPCI2_BAR3 0 set CONFIG_GRPCI2_BAR4 0 set CONFIG_GRPCI2_BAR5 0 -set tmpvar_38 "(not set)" +set tmpvar_39 "(not set)" set CONFIG_GRPCI2_FIFO8 0 set CONFIG_GRPCI2_FIFO16 0 set CONFIG_GRPCI2_FIFO32 0 set CONFIG_GRPCI2_FIFO64 0 set CONFIG_GRPCI2_FIFO128 0 -set tmpvar_39 "(not set)" +set tmpvar_40 "(not set)" set CONFIG_GRPCI2_FIFOCNT1 0 set CONFIG_GRPCI2_FIFOCNT2 0 set CONFIG_GRPCI2_FIFOCNT3 0 @@ -5297,7 +5613,7 @@ set CONFIG_GRPCI2_DINT 0 set CONFIG_GRPCI2_DINTMASK 0 set CONFIG_GRPCI2_HINT 0 set CONFIG_GRPCI2_HINTMASK 0 -set tmpvar_40 "(not set)" +set tmpvar_41 "(not set)" set CONFIG_GRPCI2_TRACE0 0 set CONFIG_GRPCI2_TRACE256 0 set CONFIG_GRPCI2_TRACE512 0 @@ -5311,14 +5627,14 @@ set CONFIG_PCI_ARBITER 0 set CONFIG_PCI_ARBITER_APB 0 set CONFIG_PCI_ARBITER_NREQ 4 set CONFIG_PCI_TRACE 0 -set tmpvar_41 "(not set)" +set tmpvar_42 "(not set)" set CONFIG_PCI_TRACE256 0 set CONFIG_PCI_TRACE512 0 set CONFIG_PCI_TRACE1024 0 set CONFIG_PCI_TRACE2048 0 set CONFIG_PCI_TRACE4096 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_42 "(not set)" +set tmpvar_43 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5326,7 +5642,7 @@ set CONFIG_UA1_FIFO8 0 set CONFIG_UA1_FIFO16 0 set CONFIG_UA1_FIFO32 0 set CONFIG_UART2_ENABLE 0 -set tmpvar_43 "(not set)" +set tmpvar_44 "(not set)" set CONFIG_UA2_FIFO1 0 set CONFIG_UA2_FIFO2 0 set CONFIG_UA2_FIFO4 0 @@ -5406,7 +5722,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5416,6 +5733,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5460,6 +5779,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_3 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_3 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_3 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_3 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5472,9 +5792,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5488,245 +5809,390 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_4 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_4 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_4 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_4 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_4 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_5 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_5 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_6 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_6 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_6 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_7 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_7 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_7 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_7 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_8 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_8 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_9 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_9 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_9 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_9 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_10 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_11 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_11 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_11 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_11 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_11 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_11 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_11 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_12 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_13 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_13 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_15 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_16 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_16 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_16 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_16 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_16 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_16 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_16 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_17 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_18 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_18 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_19 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_19 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_19 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_19 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_19 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_19 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_19 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_19 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_19 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_20 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_21 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_21 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_22 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_23 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_23 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_24 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_24 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_24 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_24 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_24 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_26 - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_28 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} + if { $tmpvar_28 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_28 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_28 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_28 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5771,13 +6237,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_28 + global tmpvar_29 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5821,27 +6287,27 @@ proc writeconfig {file1 file2} { write_comment $cfg $autocfg "On-chip RAM/ROM " global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_30 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_30 + global tmpvar_31 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "CAN " global CONFIG_CAN_ENABLE write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 @@ -5862,25 +6328,25 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_SPW_ENABLE $CONFIG_SPW_ENABLE [list $notmod] 2 global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_NUM $CONFIG_SPW_NUM $notmod } - global tmpvar_31 - if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} global tmpvar_32 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } - if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } - if { $tmpvar_32 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} + if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } + if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } + if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } + if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} + global tmpvar_33 + if {($CONFIG_SPW_ENABLE == 1)} then { + if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } + if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } + if { $tmpvar_33 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAP $CONFIG_SPW_RMAP [list $notmod] 2 } - global tmpvar_33 + global tmpvar_34 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then { - if { $tmpvar_33 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } - if { $tmpvar_33 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } - if { $tmpvar_33 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } - if { $tmpvar_33 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} + if { $tmpvar_34 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } + if { $tmpvar_34 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } + if { $tmpvar_34 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } + if { $tmpvar_34 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAPCRC $CONFIG_SPW_RMAPCRC [list $notmod] 2 } global CONFIG_SPW_RXUNAL @@ -5891,26 +6357,26 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_NETLIST $CONFIG_SPW_NETLIST [list $notmod] 2 } global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_PORTS $CONFIG_SPW_PORTS $notmod } - global tmpvar_34 + global tmpvar_35 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_34 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } - if { $tmpvar_34 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} + if { $tmpvar_35 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } + if { $tmpvar_35 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} global CONFIG_SPW_DMACHAN global CONFIG_SPW_GRSPW2 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_int $cfg $autocfg CONFIG_SPW_DMACHAN $CONFIG_SPW_DMACHAN $notmod } global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RTSAME $CONFIG_SPW_RTSAME [list $notmod] 2 } - global tmpvar_35 - if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_35 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } - if { $tmpvar_35 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } - if { $tmpvar_35 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } - if { $tmpvar_35 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} global tmpvar_36 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_36 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } - if { $tmpvar_36 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } - if { $tmpvar_36 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} + if { $tmpvar_36 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } + if { $tmpvar_36 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } + if { $tmpvar_36 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } + if { $tmpvar_36 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} + global tmpvar_37 + if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { + if { $tmpvar_37 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } + if { $tmpvar_37 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } + if { $tmpvar_37 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} write_comment $cfg $autocfg "PCI " write_comment $cfg $autocfg "GRPCI1 " global CONFIG_PCI_SIMPLE_TARGET @@ -5924,14 +6390,14 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_VENDORID $CONFIG_PCI_VENDORID $notmod } global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_DEVICEID $CONFIG_PCI_DEVICEID $notmod } - global tmpvar_37 + global tmpvar_38 if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then { - if { $tmpvar_37 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } - if { $tmpvar_37 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_37 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_37 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_37 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } - if { $tmpvar_37 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} + if { $tmpvar_38 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } + if { $tmpvar_38 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_38 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_38 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_38 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } + if { $tmpvar_38 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_HADDR $CONFIG_PCI_HADDR $notmod } write_comment $cfg $autocfg "GRPCI2 " @@ -5965,19 +6431,19 @@ proc writeconfig {file1 file2} { if {($CONFIG_GRPCI2_TARGET == 1)} then {write_int $cfg $autocfg CONFIG_GRPCI2_BAR4 $CONFIG_GRPCI2_BAR4 $notmod } global CONFIG_GRPCI2_BAR5 if {($CONFIG_GRPCI2_TARGET == 1)} then {write_int $cfg $autocfg CONFIG_GRPCI2_BAR5 $CONFIG_GRPCI2_BAR5 $notmod } - global tmpvar_38 - if {($CONFIG_GRPCI2_MASTER == 1 || $CONFIG_GRPCI2_TARGET == 1)} then { - if { $tmpvar_38 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_38 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_38 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_38 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO64 0 [list $notmod] 2 } - if { $tmpvar_38 == "128" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO128 0 [list $notmod] 2 }} global tmpvar_39 if {($CONFIG_GRPCI2_MASTER == 1 || $CONFIG_GRPCI2_TARGET == 1)} then { - if { $tmpvar_39 == "1" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT1 0 [list $notmod] 2 } - if { $tmpvar_39 == "2" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT2 0 [list $notmod] 2 } - if { $tmpvar_39 == "3" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT3 0 [list $notmod] 2 } - if { $tmpvar_39 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT4 0 [list $notmod] 2 }} + if { $tmpvar_39 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_39 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_39 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_39 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO64 0 [list $notmod] 2 } + if { $tmpvar_39 == "128" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFO128 0 [list $notmod] 2 }} + global tmpvar_40 + if {($CONFIG_GRPCI2_MASTER == 1 || $CONFIG_GRPCI2_TARGET == 1)} then { + if { $tmpvar_40 == "1" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT1 0 [list $notmod] 2 } + if { $tmpvar_40 == "2" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT2 0 [list $notmod] 2 } + if { $tmpvar_40 == "3" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT3 0 [list $notmod] 2 } + if { $tmpvar_40 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_FIFOCNT4 0 [list $notmod] 2 }} global CONFIG_GRPCI2_ENDIAN write_tristate $cfg $autocfg CONFIG_GRPCI2_ENDIAN $CONFIG_GRPCI2_ENDIAN [list $notmod] 2 global CONFIG_GRPCI2_DINT @@ -5988,14 +6454,14 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_GRPCI2_HINT $CONFIG_GRPCI2_HINT [list $notmod] 2 global CONFIG_GRPCI2_HINTMASK if {($CONFIG_GRPCI2_HINT == 1)} then {write_hex $cfg $autocfg CONFIG_GRPCI2_HINTMASK $CONFIG_GRPCI2_HINTMASK $notmod } - global tmpvar_40 + global tmpvar_41 - if { $tmpvar_40 == "none" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE0 0 [list $notmod] 2 } - if { $tmpvar_40 == "256" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE256 0 [list $notmod] 2 } - if { $tmpvar_40 == "512" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE512 0 [list $notmod] 2 } - if { $tmpvar_40 == "1024" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE1024 0 [list $notmod] 2 } - if { $tmpvar_40 == "2048" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE2048 0 [list $notmod] 2 } - if { $tmpvar_40 == "4096" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE4096 0 [list $notmod] 2 } + if { $tmpvar_41 == "none" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE0 0 [list $notmod] 2 } + if { $tmpvar_41 == "256" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE256 0 [list $notmod] 2 } + if { $tmpvar_41 == "512" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE512 0 [list $notmod] 2 } + if { $tmpvar_41 == "1024" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE1024 0 [list $notmod] 2 } + if { $tmpvar_41 == "2048" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE2048 0 [list $notmod] 2 } + if { $tmpvar_41 == "4096" } then { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACE4096 0 [list $notmod] 2 } global CONFIG_GRPCI2_TRACEAPB global CONFIG_GRPCI2_TRACE0 if {($CONFIG_GRPCI2_TRACE0 == 0)} then {write_tristate $cfg $autocfg CONFIG_GRPCI2_TRACEAPB $CONFIG_GRPCI2_TRACEAPB [list $notmod] 2 } @@ -6011,34 +6477,34 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_ARBITER == 1)} then {write_int $cfg $autocfg CONFIG_PCI_ARBITER_NREQ $CONFIG_PCI_ARBITER_NREQ $notmod } global CONFIG_PCI_TRACE write_tristate $cfg $autocfg CONFIG_PCI_TRACE $CONFIG_PCI_TRACE [list $notmod] 2 - global tmpvar_41 + global tmpvar_42 if {($CONFIG_PCI_TRACE == 1)} then { - if { $tmpvar_41 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } - if { $tmpvar_41 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } - if { $tmpvar_41 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } - if { $tmpvar_41 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } - if { $tmpvar_41 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} + if { $tmpvar_42 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } + if { $tmpvar_42 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } + if { $tmpvar_42 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } + if { $tmpvar_42 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } + if { $tmpvar_42 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and I/O port " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_42 + global tmpvar_43 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_42 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_42 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_42 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_42 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_42 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_42 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_43 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_43 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_43 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_43 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_43 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_43 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_UART2_ENABLE write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2 - global tmpvar_43 + global tmpvar_44 if {($CONFIG_UART2_ENABLE == 1)} then { - if { $tmpvar_43 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_43 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_43 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_43 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_43 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_43 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_44 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_44 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_44 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_44 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_44 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_44 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -6111,7 +6577,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -6121,6 +6588,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -6142,8 +6611,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -6226,11 +6700,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -6406,8 +6882,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -6426,6 +6904,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -6474,462 +6956,478 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_3 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_3 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_3 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_3 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_3 "Xilinx-DCM" } global tmpvar_4 - set tmpvar_4 "5-cycles" + set tmpvar_4 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_4 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_4 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_4 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_4 "Custom-configuration" } + global tmpvar_5 + set tmpvar_5 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_5 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_5 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } - global tmpvar_5 - set tmpvar_5 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_5 "5-cycles" } + global tmpvar_6 + set tmpvar_6 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_6 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_6 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } - global tmpvar_6 - set tmpvar_6 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_6 "Designware" } + global tmpvar_7 + set tmpvar_7 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_7 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_7 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } - global tmpvar_7 - set tmpvar_7 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_7 "Meiko" } + global tmpvar_8 + set tmpvar_8 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_8 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_8 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_8 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } - global tmpvar_8 - set tmpvar_8 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_8 "TechSpec" } + global tmpvar_9 + set tmpvar_9 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_9 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_9 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } - global tmpvar_9 - set tmpvar_9 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_9 "Non-blocking" } + global tmpvar_10 + set tmpvar_10 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_10 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } - global tmpvar_10 - set tmpvar_10 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_10 "4" } + global tmpvar_11 + set tmpvar_11 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_11 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_11 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_11 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_11 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_11 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_11 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_11 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } - global tmpvar_11 - set tmpvar_11 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_11 "256" } + global tmpvar_12 + set tmpvar_12 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_12 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } - global tmpvar_12 - set tmpvar_12 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_12 "32" } + global tmpvar_13 + set tmpvar_13 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_13 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_13 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_13 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } - global tmpvar_13 - set tmpvar_13 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_13 "LRU" } + global tmpvar_14 + set tmpvar_14 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_14 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_14 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_14 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_14 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_14 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_14 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_14 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_14 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } - global tmpvar_14 - set tmpvar_14 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_14 "256" } + global tmpvar_15 + set tmpvar_15 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_15 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } - global tmpvar_15 - set tmpvar_15 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_15 "4" } + global tmpvar_16 + set tmpvar_16 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_16 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_16 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_16 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_16 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_16 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_16 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_16 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } - global tmpvar_16 - set tmpvar_16 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_16 "256" } + global tmpvar_17 + set tmpvar_17 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_17 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } - global tmpvar_17 - set tmpvar_17 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_17 "32" } + global tmpvar_18 + set tmpvar_18 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_18 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_18 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_18 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } - global tmpvar_18 - set tmpvar_18 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_18 "LRU" } + global tmpvar_19 + set tmpvar_19 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_19 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_19 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_19 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_19 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_19 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_19 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_19 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_19 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } - global tmpvar_19 - set tmpvar_19 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_19 "256" } + global tmpvar_20 + set tmpvar_20 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_20 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } - global tmpvar_20 - set tmpvar_20 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_20 "split" } + global tmpvar_21 + set tmpvar_21 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_21 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_21 "Increment" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_23 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_23 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_23 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_23 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } - global tmpvar_23 - set tmpvar_23 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_23 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_23 "64" } + global tmpvar_24 + set tmpvar_24 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_24 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_24 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_24 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_24 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_24 "Programmable" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_26 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_26 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_26 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_26 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_26 "16" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_27 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "None" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "None" global CONFIG_FPUFT_NONE - if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_28 "None" } global CONFIG_FPUFT_PAR - if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_28 "Parity" } global CONFIG_FPUFT_DMR - if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_28 "PDMR" } global CONFIG_FPUFT_TMR - if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } - global tmpvar_28 - set tmpvar_28 "2" + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_28 "TMR" } + global tmpvar_29 + set tmpvar_29 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } - global tmpvar_29 - set tmpvar_29 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_29 "16" } + global tmpvar_30 + set tmpvar_30 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_30 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_30 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_30 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_30 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_30 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_30 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } - global tmpvar_30 - set tmpvar_30 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_31 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } - global tmpvar_31 - set tmpvar_31 "16" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_31 "64" } + global tmpvar_32 + set tmpvar_32 "16" global CONFIG_SPW_AHBFIFO4 - if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_31 "4" } + if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_32 "4" } global CONFIG_SPW_AHBFIFO8 - if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_32 "8" } global CONFIG_SPW_AHBFIFO16 - if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_32 "16" } global CONFIG_SPW_AHBFIFO32 - if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_31 "32" } - global tmpvar_32 - set tmpvar_32 "16" + if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_32 "32" } + global tmpvar_33 + set tmpvar_33 "16" global CONFIG_SPW_RXFIFO16 - if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_32 "16" } + if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_33 "16" } global CONFIG_SPW_RXFIFO32 - if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_32 "32" } + if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_33 "32" } global CONFIG_SPW_RXFIFO64 - if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_32 "64" } - global tmpvar_33 - set tmpvar_33 "64" + if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_33 "64" } + global tmpvar_34 + set tmpvar_34 "64" global CONFIG_SPW_RMAPBUF2 - if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_33 "64" } + if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_34 "64" } global CONFIG_SPW_RMAPBUF4 - if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_33 "128" } + if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_34 "128" } global CONFIG_SPW_RMAPBUF6 - if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_33 "192" } + if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_34 "192" } global CONFIG_SPW_RMAPBUF8 - if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_33 "256" } - global tmpvar_34 - set tmpvar_34 "2" + if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_34 "256" } + global tmpvar_35 + set tmpvar_35 "2" global CONFIG_SPW_GRSPW1 - if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_34 "1" } + if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_35 "1" } global CONFIG_SPW_GRSPW2 - if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_34 "2" } - global tmpvar_35 - set tmpvar_35 "DDR" + if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_35 "2" } + global tmpvar_36 + set tmpvar_36 "DDR" global CONFIG_SPW_RX_SDR - if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_35 "SDR" } + if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_36 "SDR" } global CONFIG_SPW_RX_DDR - if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_35 "DDR" } + if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_36 "DDR" } global CONFIG_SPW_RX_XOR - if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_35 "Xor" } + if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_36 "Xor" } global CONFIG_SPW_RX_AFLEX - if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_35 "Aeroflex" } - global tmpvar_36 - set tmpvar_36 "SDR" + if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_36 "Aeroflex" } + global tmpvar_37 + set tmpvar_37 "SDR" global CONFIG_SPW_TX_SDR - if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_36 "SDR" } + if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_37 "SDR" } global CONFIG_SPW_TX_DDR - if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_36 "DDR" } + if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_37 "DDR" } global CONFIG_SPW_TX_AFLEX - if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_36 "Aeroflex" } - global tmpvar_37 - set tmpvar_37 "8" + if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_37 "Aeroflex" } + global tmpvar_38 + set tmpvar_38 "8" global CONFIG_PCI_FIFO0 - if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_37 "None" } + if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_38 "None" } global CONFIG_PCI_FIFO8 - if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_37 "8" } + if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_38 "8" } global CONFIG_PCI_FIFO16 - if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_37 "16" } + if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_38 "16" } global CONFIG_PCI_FIFO32 - if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_37 "32" } + if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_38 "32" } global CONFIG_PCI_FIFO64 - if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_37 "64" } + if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_38 "64" } global CONFIG_PCI_FIFO128 - if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_37 "128" } - global tmpvar_38 - set tmpvar_38 "8" + if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_38 "128" } + global tmpvar_39 + set tmpvar_39 "8" global CONFIG_GRPCI2_FIFO8 - if { $CONFIG_GRPCI2_FIFO8 == 1 } then { set tmpvar_38 "8" } + if { $CONFIG_GRPCI2_FIFO8 == 1 } then { set tmpvar_39 "8" } global CONFIG_GRPCI2_FIFO16 - if { $CONFIG_GRPCI2_FIFO16 == 1 } then { set tmpvar_38 "16" } + if { $CONFIG_GRPCI2_FIFO16 == 1 } then { set tmpvar_39 "16" } global CONFIG_GRPCI2_FIFO32 - if { $CONFIG_GRPCI2_FIFO32 == 1 } then { set tmpvar_38 "32" } + if { $CONFIG_GRPCI2_FIFO32 == 1 } then { set tmpvar_39 "32" } global CONFIG_GRPCI2_FIFO64 - if { $CONFIG_GRPCI2_FIFO64 == 1 } then { set tmpvar_38 "64" } + if { $CONFIG_GRPCI2_FIFO64 == 1 } then { set tmpvar_39 "64" } global CONFIG_GRPCI2_FIFO128 - if { $CONFIG_GRPCI2_FIFO128 == 1 } then { set tmpvar_38 "128" } - global tmpvar_39 - set tmpvar_39 "2" + if { $CONFIG_GRPCI2_FIFO128 == 1 } then { set tmpvar_39 "128" } + global tmpvar_40 + set tmpvar_40 "2" global CONFIG_GRPCI2_FIFOCNT1 - if { $CONFIG_GRPCI2_FIFOCNT1 == 1 } then { set tmpvar_39 "1" } + if { $CONFIG_GRPCI2_FIFOCNT1 == 1 } then { set tmpvar_40 "1" } global CONFIG_GRPCI2_FIFOCNT2 - if { $CONFIG_GRPCI2_FIFOCNT2 == 1 } then { set tmpvar_39 "2" } + if { $CONFIG_GRPCI2_FIFOCNT2 == 1 } then { set tmpvar_40 "2" } global CONFIG_GRPCI2_FIFOCNT3 - if { $CONFIG_GRPCI2_FIFOCNT3 == 1 } then { set tmpvar_39 "3" } + if { $CONFIG_GRPCI2_FIFOCNT3 == 1 } then { set tmpvar_40 "3" } global CONFIG_GRPCI2_FIFOCNT4 - if { $CONFIG_GRPCI2_FIFOCNT4 == 1 } then { set tmpvar_39 "4" } - global tmpvar_40 - set tmpvar_40 "none" + if { $CONFIG_GRPCI2_FIFOCNT4 == 1 } then { set tmpvar_40 "4" } + global tmpvar_41 + set tmpvar_41 "none" global CONFIG_GRPCI2_TRACE0 - if { $CONFIG_GRPCI2_TRACE0 == 1 } then { set tmpvar_40 "none" } + if { $CONFIG_GRPCI2_TRACE0 == 1 } then { set tmpvar_41 "none" } global CONFIG_GRPCI2_TRACE256 - if { $CONFIG_GRPCI2_TRACE256 == 1 } then { set tmpvar_40 "256" } + if { $CONFIG_GRPCI2_TRACE256 == 1 } then { set tmpvar_41 "256" } global CONFIG_GRPCI2_TRACE512 - if { $CONFIG_GRPCI2_TRACE512 == 1 } then { set tmpvar_40 "512" } + if { $CONFIG_GRPCI2_TRACE512 == 1 } then { set tmpvar_41 "512" } global CONFIG_GRPCI2_TRACE1024 - if { $CONFIG_GRPCI2_TRACE1024 == 1 } then { set tmpvar_40 "1024" } + if { $CONFIG_GRPCI2_TRACE1024 == 1 } then { set tmpvar_41 "1024" } global CONFIG_GRPCI2_TRACE2048 - if { $CONFIG_GRPCI2_TRACE2048 == 1 } then { set tmpvar_40 "2048" } + if { $CONFIG_GRPCI2_TRACE2048 == 1 } then { set tmpvar_41 "2048" } global CONFIG_GRPCI2_TRACE4096 - if { $CONFIG_GRPCI2_TRACE4096 == 1 } then { set tmpvar_40 "4096" } - global tmpvar_41 - set tmpvar_41 "256" + if { $CONFIG_GRPCI2_TRACE4096 == 1 } then { set tmpvar_41 "4096" } + global tmpvar_42 + set tmpvar_42 "256" global CONFIG_PCI_TRACE256 - if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_41 "256" } + if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_42 "256" } global CONFIG_PCI_TRACE512 - if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_41 "512" } + if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_42 "512" } global CONFIG_PCI_TRACE1024 - if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_41 "1024" } + if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_42 "1024" } global CONFIG_PCI_TRACE2048 - if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_41 "2048" } + if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_42 "2048" } global CONFIG_PCI_TRACE4096 - if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_41 "4096" } - global tmpvar_42 - set tmpvar_42 "1" + if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_42 "4096" } + global tmpvar_43 + set tmpvar_43 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_42 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_43 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_42 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_43 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_42 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_43 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_42 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_43 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_42 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_43 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_42 "32" } - global tmpvar_43 - set tmpvar_43 "1" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_43 "32" } + global tmpvar_44 + set tmpvar_44 "1" global CONFIG_UA2_FIFO1 - if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_43 "1" } + if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_44 "1" } global CONFIG_UA2_FIFO2 - if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_43 "2" } + if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_44 "2" } global CONFIG_UA2_FIFO4 - if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_43 "4" } + if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_44 "4" } global CONFIG_UA2_FIFO8 - if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_43 "8" } + if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_44 "8" } global CONFIG_UA2_FIFO16 - if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_43 "16" } + if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_44 "16" } global CONFIG_UA2_FIFO32 - if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_43 "32" } + if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_44 "32" } } diff --git a/designs/leon3-gr-cpci-xc4v/leon3mp.vhd b/designs/leon3-gr-cpci-xc4v/leon3mp.vhd index e3118b96..49bbfa18 100644 --- a/designs/leon3-gr-cpci-xc4v/leon3mp.vhd +++ b/designs/leon3-gr-cpci-xc4v/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-gr-cpci-xc4v/testbench.vhd b/designs/leon3-gr-cpci-xc4v/testbench.vhd index fcdeeca5..06574e5b 100644 --- a/designs/leon3-gr-cpci-xc4v/testbench.vhd +++ b/designs/leon3-gr-cpci-xc4v/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-gr-cpci-xc4v/tkconfig.h b/designs/leon3-gr-cpci-xc4v/tkconfig.h index 85f10a08..9581bca2 100644 --- a/designs/leon3-gr-cpci-xc4v/tkconfig.h +++ b/designs/leon3-gr-cpci-xc4v/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else diff --git a/designs/leon3-gr-pci-xc2v3000/Makefile b/designs/leon3-gr-pci-xc2v3000/Makefile index 49bcfb95..c327a51f 100644 --- a/designs/leon3-gr-pci-xc2v3000/Makefile +++ b/designs/leon3-gr-pci-xc2v3000/Makefile @@ -18,9 +18,9 @@ CLEAN=soft-clean TECHLIBS = unisim secureip LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF gsi \ - tmtc openchip hynix cypress ihp gleichmann fmf spansion usbhc -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr usb ata grusbhc haps \ - slink ascs coremp7 ac97 + tmtc openchip hynix cypress ihp fmf spansion usbhc +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr usb grusbhc \ + slink ascs include $(GRLIB)/bin/Makefile include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-gr-pci-xc2v3000/ahbrom.vhd b/designs/leon3-gr-pci-xc2v3000/ahbrom.vhd index f94b8866..753697a1 100644 --- a/designs/leon3-gr-pci-xc2v3000/ahbrom.vhd +++ b/designs/leon3-gr-pci-xc2v3000/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-gr-pci-xc2v3000/config.help b/designs/leon3-gr-pci-xc2v3000/config.help index 3880ef18..94b1fd7f 100644 --- a/designs/leon3-gr-pci-xc2v3000/config.help +++ b/designs/leon3-gr-pci-xc2v3000/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-gr-pci-xc2v3000/lconfig.tk b/designs/leon3-gr-pci-xc2v3000/lconfig.tk index 6e4c542e..fa375c24 100755 --- a/designs/leon3-gr-pci-xc2v3000/lconfig.tk +++ b/designs/leon3-gr-pci-xc2v3000/lconfig.tk @@ -753,7 +753,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -763,7 +764,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -906,8 +909,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -926,6 +931,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1015,9 +1024,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1071,10 +1081,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1120,14 +1131,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1200,13 +1213,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1246,22 +1267,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1318,21 +1607,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1379,36 +1668,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1416,48 +1706,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1513,27 +1804,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1574,16 +1865,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1592,34 +1884,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1676,92 +1969,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1769,18 +2062,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1821,52 +2114,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1874,162 +2168,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2085,45 +2380,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2163,18 +2460,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2182,55 +2480,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2287,24 +2590,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2344,17 +2647,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2362,37 +2666,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2448,16 +2753,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2505,9 +2817,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2529,21 +2839,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2852,14 +3167,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2933,17 +3248,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3378,16 +3693,16 @@ proc menu16 {w title} { hex $w.config.f 16 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 16 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 16 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 16 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 16 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 16 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3449,21 +3764,21 @@ proc update_define_menu16 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3523,14 +3838,14 @@ proc menu17 {w title} { bool $w.config.f 17 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 17 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 17 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 17 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3584,17 +3899,17 @@ proc update_define_menu17 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3654,29 +3969,29 @@ proc menu18 {w title} { bool $w.config.f 18 2 "PCI DMA controller " CONFIG_PCI_MASTER_TARGET_DMA hex $w.config.f 18 3 "PCI vendor ID" CONFIG_PCI_VENDORID hex $w.config.f 18 4 "PCI device ID" CONFIG_PCI_DEVICEID - global tmpvar_29 - minimenu $w.config.f 18 5 "PCI FIFO depth" tmpvar_29 CONFIG_PCI_FIFO0 + global tmpvar_31 + minimenu $w.config.f 18 5 "PCI FIFO depth" tmpvar_31 CONFIG_PCI_FIFO0 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"PCI FIFO depth\"" - $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_29 -value "None" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_29 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_31 -value "None" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_31 -value "128" -command "update_active" menusplit $w $w.config.f.x5.x.menu 6 hex $w.config.f 18 6 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR bool $w.config.f 18 7 "PCI arbiter " CONFIG_PCI_ARBITER bool $w.config.f 18 8 "PCI arbiter APB interface " CONFIG_PCI_ARBITER_APB int $w.config.f 18 9 "Number of PCI REQ/GNT pairs" CONFIG_PCI_ARBITER_NREQ bool $w.config.f 18 10 "Enable PCI trace buffer " CONFIG_PCI_TRACE - global tmpvar_30 - minimenu $w.config.f 18 11 "PCI trace buffer depth" tmpvar_30 CONFIG_PCI_TRACE256 + global tmpvar_32 + minimenu $w.config.f 18 11 "PCI trace buffer depth" tmpvar_32 CONFIG_PCI_TRACE256 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"PCI trace buffer depth\"" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_30 -value "256" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_30 -value "512" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_30 -value "1024" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_30 -value "2048" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_30 -value "4096" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_32 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_32 -value "512" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_32 -value "1024" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_32 -value "2048" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_32 -value "4096" -command "update_active" menusplit $w $w.config.f.x11.x.menu 5 @@ -3760,19 +4075,19 @@ proc update_define_menu18 {} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_VENDORID "$CONFIG_PCI_VENDORID" 1AC8} global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_DEVICEID "$CONFIG_PCI_DEVICEID" 0054} - global tmpvar_29 + global tmpvar_31 global CONFIG_PCI_FIFO0 - if {$tmpvar_29 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} + if {$tmpvar_31 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} global CONFIG_PCI_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} global CONFIG_PCI_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} global CONFIG_PCI_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} global CONFIG_PCI_FIFO64 - if {$tmpvar_29 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} + if {$tmpvar_31 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} global CONFIG_PCI_FIFO128 - if {$tmpvar_29 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} + if {$tmpvar_31 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_HADDR "$CONFIG_PCI_HADDR" E00} global CONFIG_PCI_ARBITER @@ -3781,17 +4096,17 @@ proc update_define_menu18 {} { set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB&15]} else {set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB|16]} global CONFIG_PCI_ARBITER_NREQ if {($CONFIG_PCI_ARBITER == 1)} then {validate_int CONFIG_PCI_ARBITER_NREQ "$CONFIG_PCI_ARBITER_NREQ" 4} - global tmpvar_30 + global tmpvar_32 global CONFIG_PCI_TRACE256 - if {$tmpvar_30 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} + if {$tmpvar_32 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} global CONFIG_PCI_TRACE512 - if {$tmpvar_30 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} + if {$tmpvar_32 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} global CONFIG_PCI_TRACE1024 - if {$tmpvar_30 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} + if {$tmpvar_32 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} global CONFIG_PCI_TRACE2048 - if {$tmpvar_30 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} + if {$tmpvar_32 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} global CONFIG_PCI_TRACE4096 - if {$tmpvar_30 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} + if {$tmpvar_32 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} } @@ -3848,57 +4163,57 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable Spacewire links " CONFIG_SPW_ENABLE int $w.config.f 19 1 "Number of links (1 - 3)" CONFIG_SPW_NUM - global tmpvar_31 - minimenu $w.config.f 19 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_31 CONFIG_SPW_AHBFIFO4 + global tmpvar_33 + minimenu $w.config.f 19 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_33 CONFIG_SPW_AHBFIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB RX/TX FIFO size (32-bit words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_33 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_32 - minimenu $w.config.f 19 3 "Receiver FIFO size (bytes) " tmpvar_32 CONFIG_SPW_RXFIFO16 + global tmpvar_34 + minimenu $w.config.f 19 3 "Receiver FIFO size (bytes) " tmpvar_34 CONFIG_SPW_RXFIFO16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Receiver FIFO size (bytes) \"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_32 -value "64" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_34 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_34 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_34 -value "64" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 19 4 "Enable RMAP protocol " CONFIG_SPW_RMAP - global tmpvar_33 - minimenu $w.config.f 19 5 "RMAP buffer size (bytes) " tmpvar_33 CONFIG_SPW_RMAPBUF2 + global tmpvar_35 + minimenu $w.config.f 19 5 "RMAP buffer size (bytes) " tmpvar_35 CONFIG_SPW_RMAPBUF2 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"RMAP buffer size (bytes) \"" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_33 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_33 -value "128" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_33 -value "192" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_33 -value "256" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_35 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_35 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_35 -value "192" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_35 -value "256" -command "update_active" menusplit $w $w.config.f.x5.x.menu 4 bool $w.config.f 19 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC bool $w.config.f 19 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL bool $w.config.f 19 8 "Spacewire FIFO protection " CONFIG_SPW_FT bool $w.config.f 19 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST int $w.config.f 19 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS - global tmpvar_34 - minimenu $w.config.f 19 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_34 CONFIG_SPW_GRSPW1 + global tmpvar_36 + minimenu $w.config.f 19 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_36 CONFIG_SPW_GRSPW1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Select GRSPW core (GRSPW1/GRSPW2) \"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_34 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_34 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_36 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_36 -value "2" -command "update_active" menusplit $w $w.config.f.x11.x.menu 2 int $w.config.f 19 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN bool $w.config.f 19 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME - global tmpvar_35 - minimenu $w.config.f 19 14 "Select receiver clock type " tmpvar_35 CONFIG_SPW_RX_SDR + global tmpvar_37 + minimenu $w.config.f 19 14 "Select receiver clock type " tmpvar_37 CONFIG_SPW_RX_SDR menu $w.config.f.x14.x.menu -tearoffcommand "menutitle \"Select receiver clock type \"" - $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_35 -value "SDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_35 -value "DDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_35 -value "Xor" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_35 -value "Aeroflex" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_37 -value "SDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_37 -value "DDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_37 -value "Xor" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_37 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x14.x.menu 4 - global tmpvar_36 - minimenu $w.config.f 19 15 "Select transmitter clock type " tmpvar_36 CONFIG_SPW_TX_SDR + global tmpvar_38 + minimenu $w.config.f 19 15 "Select transmitter clock type " tmpvar_38 CONFIG_SPW_TX_SDR menu $w.config.f.x15.x.menu -tearoffcommand "menutitle \"Select transmitter clock type \"" - $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_36 -value "SDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_36 -value "DDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_36 -value "Aeroflex" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_38 -value "SDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_38 -value "DDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_38 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x15.x.menu 3 @@ -3978,34 +4293,34 @@ proc update_define_menu19 {} { global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_NUM "$CONFIG_SPW_NUM" 1} - global tmpvar_31 + global tmpvar_33 global CONFIG_SPW_AHBFIFO4 - if {$tmpvar_31 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} + if {$tmpvar_33 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} global CONFIG_SPW_AHBFIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} + if {$tmpvar_33 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} global CONFIG_SPW_AHBFIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} + if {$tmpvar_33 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} global CONFIG_SPW_AHBFIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} - global tmpvar_32 + if {$tmpvar_33 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} + global tmpvar_34 global CONFIG_SPW_RXFIFO16 - if {$tmpvar_32 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} + if {$tmpvar_34 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} global CONFIG_SPW_RXFIFO32 - if {$tmpvar_32 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} + if {$tmpvar_34 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} global CONFIG_SPW_RXFIFO64 - if {$tmpvar_32 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} + if {$tmpvar_34 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP&15]} else {set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP|16]} - global tmpvar_33 + global tmpvar_35 global CONFIG_SPW_RMAPBUF2 - if {$tmpvar_33 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} + if {$tmpvar_35 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} global CONFIG_SPW_RMAPBUF4 - if {$tmpvar_33 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} + if {$tmpvar_35 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} global CONFIG_SPW_RMAPBUF6 - if {$tmpvar_33 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} + if {$tmpvar_35 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} global CONFIG_SPW_RMAPBUF8 - if {$tmpvar_33 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} + if {$tmpvar_35 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC&15]} else {set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC|16]} @@ -4020,32 +4335,32 @@ proc update_define_menu19 {} { set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST&15]} else {set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST|16]} global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_PORTS "$CONFIG_SPW_PORTS" 1} - global tmpvar_34 + global tmpvar_36 global CONFIG_SPW_GRSPW1 - if {$tmpvar_34 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} + if {$tmpvar_36 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} global CONFIG_SPW_GRSPW2 - if {$tmpvar_34 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} + if {$tmpvar_36 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} global CONFIG_SPW_DMACHAN if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {validate_int CONFIG_SPW_DMACHAN "$CONFIG_SPW_DMACHAN" 1} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME&15]} else {set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME|16]} - global tmpvar_35 + global tmpvar_37 global CONFIG_SPW_RX_SDR - if {$tmpvar_35 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} + if {$tmpvar_37 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} global CONFIG_SPW_RX_DDR - if {$tmpvar_35 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} + if {$tmpvar_37 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} global CONFIG_SPW_RX_XOR - if {$tmpvar_35 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} + if {$tmpvar_37 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} global CONFIG_SPW_RX_AFLEX - if {$tmpvar_35 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} - global tmpvar_36 + if {$tmpvar_37 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} + global tmpvar_38 global CONFIG_SPW_TX_SDR - if {$tmpvar_36 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} + if {$tmpvar_38 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} global CONFIG_SPW_TX_DDR - if {$tmpvar_36 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} + if {$tmpvar_38 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} global CONFIG_SPW_TX_AFLEX - if {$tmpvar_36 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} + if {$tmpvar_38 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} } @@ -4101,26 +4416,26 @@ proc menu20 {w title} { bool $w.config.f 20 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_37 - minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_37 CONFIG_UA1_FIFO1 + global tmpvar_39 + minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_39 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_37 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_37 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_37 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_37 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_37 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_37 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_39 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_39 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_39 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_39 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_39 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_39 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 20 2 "Enable secondary UART " CONFIG_UART2_ENABLE - global tmpvar_38 - minimenu $w.config.f 20 3 "UART2 FIFO depth" tmpvar_38 CONFIG_UA2_FIFO1 + global tmpvar_40 + minimenu $w.config.f 20 3 "UART2 FIFO depth" tmpvar_40 CONFIG_UA2_FIFO1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_38 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_38 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_38 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_38 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_38 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_38 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_40 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_40 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_40 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_40 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_40 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_40 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 6 bool $w.config.f 20 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 20 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4211,32 +4526,32 @@ proc update_menu20 {} { proc update_define_menu20 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_37 + global tmpvar_39 global CONFIG_UA1_FIFO1 - if {$tmpvar_37 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_39 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_37 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_39 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_37 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_39 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_37 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_39 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_37 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_39 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_37 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global tmpvar_38 + if {$tmpvar_39 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + global tmpvar_40 global CONFIG_UA2_FIFO1 - if {$tmpvar_38 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} + if {$tmpvar_40 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} global CONFIG_UA2_FIFO2 - if {$tmpvar_38 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} + if {$tmpvar_40 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} global CONFIG_UA2_FIFO4 - if {$tmpvar_38 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} + if {$tmpvar_40 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} global CONFIG_UA2_FIFO8 - if {$tmpvar_38 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} + if {$tmpvar_40 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} global CONFIG_UA2_FIFO16 - if {$tmpvar_38 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} + if {$tmpvar_40 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} global CONFIG_UA2_FIFO32 - if {$tmpvar_38 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} + if {$tmpvar_40 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4406,7 +4721,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4416,6 +4732,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4440,6 +4758,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4452,14 +4771,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4472,27 +4796,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4502,17 +4826,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4524,12 +4848,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4539,10 +4863,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4553,7 +4877,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4565,26 +4889,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4592,27 +4918,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4633,7 +4963,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4659,7 +4989,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4670,7 +5000,7 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 @@ -4681,7 +5011,7 @@ set CONFIG_PCI_MASTER_TARGET 0 set CONFIG_PCI_MASTER_TARGET_DMA 0 set CONFIG_PCI_VENDORID 1AC8 set CONFIG_PCI_DEVICEID 0054 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_PCI_FIFO0 0 set CONFIG_PCI_FIFO8 0 set CONFIG_PCI_FIFO16 0 @@ -4693,7 +5023,7 @@ set CONFIG_PCI_ARBITER 0 set CONFIG_PCI_ARBITER_APB 0 set CONFIG_PCI_ARBITER_NREQ 4 set CONFIG_PCI_TRACE 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_PCI_TRACE256 0 set CONFIG_PCI_TRACE512 0 set CONFIG_PCI_TRACE1024 0 @@ -4701,17 +5031,17 @@ set CONFIG_PCI_TRACE2048 0 set CONFIG_PCI_TRACE4096 0 set CONFIG_SPW_ENABLE 0 set CONFIG_SPW_NUM 1 -set tmpvar_31 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_SPW_AHBFIFO4 0 set CONFIG_SPW_AHBFIFO8 0 set CONFIG_SPW_AHBFIFO16 0 set CONFIG_SPW_AHBFIFO32 0 -set tmpvar_32 "(not set)" +set tmpvar_34 "(not set)" set CONFIG_SPW_RXFIFO16 0 set CONFIG_SPW_RXFIFO32 0 set CONFIG_SPW_RXFIFO64 0 set CONFIG_SPW_RMAP 0 -set tmpvar_33 "(not set)" +set tmpvar_35 "(not set)" set CONFIG_SPW_RMAPBUF2 0 set CONFIG_SPW_RMAPBUF4 0 set CONFIG_SPW_RMAPBUF6 0 @@ -4721,22 +5051,22 @@ set CONFIG_SPW_RXUNAL 0 set CONFIG_SPW_FT 0 set CONFIG_SPW_NETLIST 0 set CONFIG_SPW_PORTS 1 -set tmpvar_34 "(not set)" +set tmpvar_36 "(not set)" set CONFIG_SPW_GRSPW1 0 set CONFIG_SPW_GRSPW2 0 set CONFIG_SPW_DMACHAN 1 set CONFIG_SPW_RTSAME 0 -set tmpvar_35 "(not set)" +set tmpvar_37 "(not set)" set CONFIG_SPW_RX_SDR 0 set CONFIG_SPW_RX_DDR 0 set CONFIG_SPW_RX_XOR 0 set CONFIG_SPW_RX_AFLEX 0 -set tmpvar_36 "(not set)" +set tmpvar_38 "(not set)" set CONFIG_SPW_TX_SDR 0 set CONFIG_SPW_TX_DDR 0 set CONFIG_SPW_TX_AFLEX 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_37 "(not set)" +set tmpvar_39 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4744,7 +5074,7 @@ set CONFIG_UA1_FIFO8 0 set CONFIG_UA1_FIFO16 0 set CONFIG_UA1_FIFO32 0 set CONFIG_UART2_ENABLE 0 -set tmpvar_38 "(not set)" +set tmpvar_40 "(not set)" set CONFIG_UA2_FIFO1 0 set CONFIG_UA2_FIFO2 0 set CONFIG_UA2_FIFO4 0 @@ -4822,7 +5152,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4832,6 +5163,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4870,6 +5203,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4882,9 +5216,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4898,239 +5233,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5175,13 +5660,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5227,27 +5712,27 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "PCI " global CONFIG_PCI_SIMPLE_TARGET global CONFIG_PCI_ACTEL @@ -5260,14 +5745,14 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_VENDORID $CONFIG_PCI_VENDORID $notmod } global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_DEVICEID $CONFIG_PCI_DEVICEID $notmod } - global tmpvar_29 + global tmpvar_31 if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then { - if { $tmpvar_29 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } - if { $tmpvar_29 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} + if { $tmpvar_31 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } + if { $tmpvar_31 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_HADDR $CONFIG_PCI_HADDR $notmod } global CONFIG_PCI_ARBITER @@ -5278,37 +5763,37 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_ARBITER == 1)} then {write_int $cfg $autocfg CONFIG_PCI_ARBITER_NREQ $CONFIG_PCI_ARBITER_NREQ $notmod } global CONFIG_PCI_TRACE write_tristate $cfg $autocfg CONFIG_PCI_TRACE $CONFIG_PCI_TRACE [list $notmod] 2 - global tmpvar_30 + global tmpvar_32 if {($CONFIG_PCI_TRACE == 1)} then { - if { $tmpvar_30 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } - if { $tmpvar_30 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } - if { $tmpvar_30 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } - if { $tmpvar_30 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } - if { $tmpvar_30 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} + if { $tmpvar_32 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } + if { $tmpvar_32 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } + if { $tmpvar_32 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } + if { $tmpvar_32 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } + if { $tmpvar_32 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} write_comment $cfg $autocfg "Spacewire " global CONFIG_SPW_ENABLE write_tristate $cfg $autocfg CONFIG_SPW_ENABLE $CONFIG_SPW_ENABLE [list $notmod] 2 global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_NUM $CONFIG_SPW_NUM $notmod } - global tmpvar_31 + global tmpvar_33 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} - global tmpvar_32 + if { $tmpvar_33 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } + if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } + if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } + if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} + global tmpvar_34 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } - if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } - if { $tmpvar_32 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} + if { $tmpvar_34 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } + if { $tmpvar_34 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } + if { $tmpvar_34 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAP $CONFIG_SPW_RMAP [list $notmod] 2 } - global tmpvar_33 + global tmpvar_35 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then { - if { $tmpvar_33 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } - if { $tmpvar_33 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } - if { $tmpvar_33 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } - if { $tmpvar_33 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} + if { $tmpvar_35 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } + if { $tmpvar_35 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } + if { $tmpvar_35 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } + if { $tmpvar_35 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAPCRC $CONFIG_SPW_RMAPCRC [list $notmod] 2 } global CONFIG_SPW_RXUNAL @@ -5319,47 +5804,47 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_NETLIST $CONFIG_SPW_NETLIST [list $notmod] 2 } global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_PORTS $CONFIG_SPW_PORTS $notmod } - global tmpvar_34 + global tmpvar_36 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_34 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } - if { $tmpvar_34 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} + if { $tmpvar_36 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } + if { $tmpvar_36 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} global CONFIG_SPW_DMACHAN global CONFIG_SPW_GRSPW2 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_int $cfg $autocfg CONFIG_SPW_DMACHAN $CONFIG_SPW_DMACHAN $notmod } global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RTSAME $CONFIG_SPW_RTSAME [list $notmod] 2 } - global tmpvar_35 + global tmpvar_37 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_35 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } - if { $tmpvar_35 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } - if { $tmpvar_35 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } - if { $tmpvar_35 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} - global tmpvar_36 + if { $tmpvar_37 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } + if { $tmpvar_37 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } + if { $tmpvar_37 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } + if { $tmpvar_37 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} + global tmpvar_38 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_36 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } - if { $tmpvar_36 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } - if { $tmpvar_36 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} + if { $tmpvar_38 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } + if { $tmpvar_38 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } + if { $tmpvar_38 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_37 + global tmpvar_39 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_37 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_37 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_37 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_37 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_37 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_37 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_39 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_39 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_39 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_39 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_39 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_39 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_UART2_ENABLE write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2 - global tmpvar_38 + global tmpvar_40 if {($CONFIG_UART2_ENABLE == 1)} then { - if { $tmpvar_38 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_38 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_38 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_38 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_38 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_38 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_40 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_40 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_40 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_40 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_40 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_40 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5432,7 +5917,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5442,6 +5928,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5460,8 +5948,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5544,11 +6037,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5569,6 +6064,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5705,8 +6204,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5725,6 +6226,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5765,416 +6270,442 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "8" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "8" global CONFIG_PCI_FIFO0 - if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_29 "None" } + if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_31 "None" } global CONFIG_PCI_FIFO8 - if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_PCI_FIFO16 - if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_PCI_FIFO32 - if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_31 "32" } global CONFIG_PCI_FIFO64 - if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_29 "64" } + if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_31 "64" } global CONFIG_PCI_FIFO128 - if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_29 "128" } - global tmpvar_30 - set tmpvar_30 "256" + if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_31 "128" } + global tmpvar_32 + set tmpvar_32 "256" global CONFIG_PCI_TRACE256 - if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_30 "256" } + if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_32 "256" } global CONFIG_PCI_TRACE512 - if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_30 "512" } + if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_32 "512" } global CONFIG_PCI_TRACE1024 - if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_30 "1024" } + if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_32 "1024" } global CONFIG_PCI_TRACE2048 - if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_30 "2048" } + if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_32 "2048" } global CONFIG_PCI_TRACE4096 - if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_30 "4096" } - global tmpvar_31 - set tmpvar_31 "16" + if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_32 "4096" } + global tmpvar_33 + set tmpvar_33 "16" global CONFIG_SPW_AHBFIFO4 - if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_31 "4" } + if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_33 "4" } global CONFIG_SPW_AHBFIFO8 - if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_33 "8" } global CONFIG_SPW_AHBFIFO16 - if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_33 "16" } global CONFIG_SPW_AHBFIFO32 - if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_31 "32" } - global tmpvar_32 - set tmpvar_32 "16" + if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_33 "32" } + global tmpvar_34 + set tmpvar_34 "16" global CONFIG_SPW_RXFIFO16 - if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_32 "16" } + if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_34 "16" } global CONFIG_SPW_RXFIFO32 - if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_32 "32" } + if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_34 "32" } global CONFIG_SPW_RXFIFO64 - if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_32 "64" } - global tmpvar_33 - set tmpvar_33 "64" + if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_34 "64" } + global tmpvar_35 + set tmpvar_35 "64" global CONFIG_SPW_RMAPBUF2 - if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_33 "64" } + if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_35 "64" } global CONFIG_SPW_RMAPBUF4 - if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_33 "128" } + if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_35 "128" } global CONFIG_SPW_RMAPBUF6 - if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_33 "192" } + if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_35 "192" } global CONFIG_SPW_RMAPBUF8 - if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_33 "256" } - global tmpvar_34 - set tmpvar_34 "2" + if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_35 "256" } + global tmpvar_36 + set tmpvar_36 "2" global CONFIG_SPW_GRSPW1 - if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_34 "1" } + if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_36 "1" } global CONFIG_SPW_GRSPW2 - if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_34 "2" } - global tmpvar_35 - set tmpvar_35 "DDR" + if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_36 "2" } + global tmpvar_37 + set tmpvar_37 "DDR" global CONFIG_SPW_RX_SDR - if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_35 "SDR" } + if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_37 "SDR" } global CONFIG_SPW_RX_DDR - if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_35 "DDR" } + if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_37 "DDR" } global CONFIG_SPW_RX_XOR - if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_35 "Xor" } + if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_37 "Xor" } global CONFIG_SPW_RX_AFLEX - if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_35 "Aeroflex" } - global tmpvar_36 - set tmpvar_36 "SDR" + if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_37 "Aeroflex" } + global tmpvar_38 + set tmpvar_38 "SDR" global CONFIG_SPW_TX_SDR - if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_36 "SDR" } + if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_38 "SDR" } global CONFIG_SPW_TX_DDR - if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_36 "DDR" } + if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_38 "DDR" } global CONFIG_SPW_TX_AFLEX - if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_36 "Aeroflex" } - global tmpvar_37 - set tmpvar_37 "1" + if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_38 "Aeroflex" } + global tmpvar_39 + set tmpvar_39 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_37 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_39 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_37 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_39 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_37 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_39 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_37 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_39 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_37 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_39 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_37 "32" } - global tmpvar_38 - set tmpvar_38 "1" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_39 "32" } + global tmpvar_40 + set tmpvar_40 "1" global CONFIG_UA2_FIFO1 - if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_38 "1" } + if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_40 "1" } global CONFIG_UA2_FIFO2 - if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_38 "2" } + if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_40 "2" } global CONFIG_UA2_FIFO4 - if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_38 "4" } + if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_40 "4" } global CONFIG_UA2_FIFO8 - if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_38 "8" } + if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_40 "8" } global CONFIG_UA2_FIFO16 - if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_38 "16" } + if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_40 "16" } global CONFIG_UA2_FIFO32 - if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_38 "32" } + if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_40 "32" } } diff --git a/designs/leon3-gr-pci-xc2v3000/leon3mp.vhd b/designs/leon3-gr-pci-xc2v3000/leon3mp.vhd index 6f98b3fe..c122455e 100644 --- a/designs/leon3-gr-pci-xc2v3000/leon3mp.vhd +++ b/designs/leon3-gr-pci-xc2v3000/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-gr-pci-xc2v3000/testbench.vhd b/designs/leon3-gr-pci-xc2v3000/testbench.vhd index c42448bd..9013d651 100644 --- a/designs/leon3-gr-pci-xc2v3000/testbench.vhd +++ b/designs/leon3-gr-pci-xc2v3000/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-gr-pci-xc2v3000/tkconfig.h b/designs/leon3-gr-pci-xc2v3000/tkconfig.h index 62664e68..df0849ae 100644 --- a/designs/leon3-gr-pci-xc2v3000/tkconfig.h +++ b/designs/leon3-gr-pci-xc2v3000/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-gr-pci-xc5v/Makefile b/designs/leon3-gr-pci-xc5v/Makefile index 0a721775..8a86c228 100644 --- a/designs/leon3-gr-pci-xc5v/Makefile +++ b/designs/leon3-gr-pci-xc5v/Makefile @@ -22,11 +22,11 @@ SYNPOPT="set_option -pipe 1; set_option -retiming 1; set_option -write_apr_const TECHLIBS = unisim secureip LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp gleichmann fmf spansion gsi -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr ata haps \ - slink ascs coremp7 ac97 leon4 leon4b64 l2cache iommu + tmtc openchip hynix cypress ihp fmf spansion gsi +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr \ + slink ascs leon4 leon4v0 l2cache iommu -FILESKIP = grcan.vhd simple_spi_top.v ata_device.v i2c_slave_model.v +FILESKIP = grcan.vhd i2c_slave_model.v include $(GRLIB)/bin/Makefile include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-gr-pci-xc5v/config.help b/designs/leon3-gr-pci-xc5v/config.help index ec7272fe..647669a9 100644 --- a/designs/leon3-gr-pci-xc5v/config.help +++ b/designs/leon3-gr-pci-xc5v/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. diff --git a/designs/leon3-gr-pci-xc5v/lconfig.tk b/designs/leon3-gr-pci-xc5v/lconfig.tk index a017eec3..a570b57d 100755 --- a/designs/leon3-gr-pci-xc5v/lconfig.tk +++ b/designs/leon3-gr-pci-xc5v/lconfig.tk @@ -756,7 +756,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -766,7 +767,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -916,8 +919,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -936,6 +941,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1032,9 +1041,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_3 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_3 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_3 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_3 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_3 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_3 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1088,10 +1098,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1137,14 +1148,16 @@ proc update_define_menu2 {} { if {$tmpvar_3 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_3 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_3 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_3 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_3 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1217,13 +1230,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_4 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_4 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_4 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_4 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_4 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_4 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1263,22 +1284,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_4 + global CONFIG_LEON3_MIN + if {$tmpvar_4 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_4 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_4 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_4 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1335,21 +1624,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_4 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_5 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_5 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_5 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_5 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_5 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_5 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED + global tmpvar_6 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_6 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_6 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_6 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1396,36 +1685,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1433,48 +1723,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_5 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_5 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_5 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_6 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_6 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_6 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_6 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1530,28 +1821,28 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_6 - minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU + global tmpvar_7 + minimenu $w.config.f 5 1 "FPU core" tmpvar_7 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_7 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_7 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_7 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_7 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_8 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_8 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_8 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_8 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_8 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_8 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_8 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 + global tmpvar_9 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_9 CONFIG_FPU_GRFPC0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_9 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_9 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_9 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x4.x.menu 3 bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1592,20 +1883,21 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1614,38 +1906,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_6 + global tmpvar_7 global CONFIG_FPU_GRFPU - if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_7 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_7 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_7 + if {$tmpvar_7 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_8 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_8 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_8 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_8 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + if {$tmpvar_8 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_FPU_GRFPC0 - if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_9 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_9 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_9 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1702,92 +1995,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_9 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 + global tmpvar_10 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_10 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_10 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_10 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 + global tmpvar_11 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_11 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_11 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_11 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_11 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_11 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_11 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_11 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_11 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_11 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 + global tmpvar_12 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_12 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_12 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND + global tmpvar_13 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_13 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_13 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_13 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_13 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_13 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_13 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_14 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_14 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_14 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 + global tmpvar_15 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_15 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_15 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_15 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 + global tmpvar_16 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_16 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_16 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_16 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_16 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_16 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_16 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_16 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_16 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_16 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 + global tmpvar_17 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_17 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_17 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND + global tmpvar_18 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_18 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_18 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_18 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_18 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_18 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1795,18 +2088,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_18 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_19 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_19 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_19 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_19 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_19 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_19 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_19 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_19 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_19 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_19 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_19 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1847,52 +2140,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1900,162 +2194,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_9 + global tmpvar_10 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_10 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_10 + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_11 global CONFIG_ICACHE_SZ1 - if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_11 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_11 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_11 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_11 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_11 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_11 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_11 + if {$tmpvar_11 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_12 global CONFIG_ICACHE_LZ16 - if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_12 + if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_13 global CONFIG_ICACHE_ALGORND - if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_13 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_13 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_13 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_13 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_14 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_14 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_14 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_14 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_14 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_14 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_14 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_14 + global tmpvar_15 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_15 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_15 + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_16 global CONFIG_DCACHE_SZ1 - if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_16 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_16 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_16 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_16 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_16 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_16 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_16 + if {$tmpvar_16 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_17 global CONFIG_DCACHE_LZ16 - if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_17 + if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_18 global CONFIG_DCACHE_ALGORND - if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_18 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_18 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_18 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_18 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_19 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_19 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_19 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_19 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_19 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_19 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_19 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_19 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_19 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2111,45 +2406,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_19 - minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED + global tmpvar_20 + minimenu $w.config.f 7 1 "MMU type " tmpvar_20 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_20 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_20 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY + global tmpvar_21 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_21 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_21 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_21 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_21 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_22 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_22 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_23 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_23 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_23 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_23 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_23 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K + global tmpvar_24 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_24 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_24 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_24 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_24 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_24 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_24 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2189,18 +2486,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2208,55 +2506,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_19 + global tmpvar_20 global CONFIG_MMU_COMBINED - if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_20 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_20 + if {$tmpvar_20 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_21 global CONFIG_MMU_REPARRAY - if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_21 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_21 + if {$tmpvar_21 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_22 global CONFIG_MMU_I2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_22 + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_23 global CONFIG_MMU_D2 - if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_23 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_23 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_23 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_23 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_23 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_23 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_MMU_PAGE_4K - if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_24 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_24 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_24 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_24 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_24 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2313,24 +2616,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_24 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_25 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 + global tmpvar_26 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2370,17 +2673,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2388,37 +2692,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2474,22 +2779,22 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_26 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE + global tmpvar_27 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_27 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_27 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - global tmpvar_27 - minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + global tmpvar_28 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_28 CONFIG_FPUFT_NONE menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" - $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_28 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_28 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_28 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_28 -value "TMR" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN @@ -2560,26 +2865,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_26 + global tmpvar_27 global CONFIG_IUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_27 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global tmpvar_27 + if {$tmpvar_27 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_28 global CONFIG_FPUFT_NONE - if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + if {$tmpvar_28 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} global CONFIG_FPUFT_PAR - if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + if {$tmpvar_28 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} global CONFIG_FPUFT_DMR - if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + if {$tmpvar_28 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} global CONFIG_FPUFT_TMR - if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} + if {$tmpvar_28 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2888,22 +3193,22 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "USB Debug Communication Link" CONFIG_GRUSB_DCL - global tmpvar_28 - minimenu $w.config.f 12 3 "USB Transceiver Interface" tmpvar_28 CONFIG_GRUSB_DCL_ULPI + global tmpvar_29 + minimenu $w.config.f 12 3 "USB Transceiver Interface" tmpvar_29 CONFIG_GRUSB_DCL_ULPI menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"USB Transceiver Interface\"" - $w.config.f.x3.x.menu add radiobutton -label "ULPI" -variable tmpvar_28 -value "ULPI" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "UTMI/UTMI+8-bit" -variable tmpvar_28 -value "UTMI/UTMI+8-bit" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "UTMI/UTMI+16-bit" -variable tmpvar_28 -value "UTMI/UTMI+16-bit" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "ULPI" -variable tmpvar_29 -value "ULPI" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "UTMI/UTMI+8-bit" -variable tmpvar_29 -value "UTMI/UTMI+8-bit" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "UTMI/UTMI+16-bit" -variable tmpvar_29 -value "UTMI/UTMI+16-bit" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 12 4 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_29 - minimenu $w.config.f 12 5 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_29 CONFIG_DSU_ETHSZ1 + global tmpvar_30 + minimenu $w.config.f 12 5 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_30 CONFIG_DSU_ETHSZ1 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x5.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" menusplit $w $w.config.f.x5.x.menu 5 hex $w.config.f 12 6 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 7 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2975,28 +3280,28 @@ proc update_menu12 {} { proc update_define_menu12 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_28 + global tmpvar_29 global CONFIG_GRUSB_DCL_ULPI - if {$tmpvar_28 == "ULPI"} then {set CONFIG_GRUSB_DCL_ULPI 1} else {set CONFIG_GRUSB_DCL_ULPI 0} + if {$tmpvar_29 == "ULPI"} then {set CONFIG_GRUSB_DCL_ULPI 1} else {set CONFIG_GRUSB_DCL_ULPI 0} global CONFIG_GRUSB_DCL_UTMI8 - if {$tmpvar_28 == "UTMI/UTMI+8-bit"} then {set CONFIG_GRUSB_DCL_UTMI8 1} else {set CONFIG_GRUSB_DCL_UTMI8 0} + if {$tmpvar_29 == "UTMI/UTMI+8-bit"} then {set CONFIG_GRUSB_DCL_UTMI8 1} else {set CONFIG_GRUSB_DCL_UTMI8 0} global CONFIG_GRUSB_DCL_UTMI16 - if {$tmpvar_28 == "UTMI/UTMI+16-bit"} then {set CONFIG_GRUSB_DCL_UTMI16 1} else {set CONFIG_GRUSB_DCL_UTMI16 0} + if {$tmpvar_29 == "UTMI/UTMI+16-bit"} then {set CONFIG_GRUSB_DCL_UTMI16 1} else {set CONFIG_GRUSB_DCL_UTMI16 0} global CONFIG_GRETH_ENABLE global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_29 + global tmpvar_30 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_29 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_30 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_29 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_30 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_29 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_29 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_29 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3439,16 +3744,16 @@ proc menu16 {w title} { bool $w.config.f 16 0 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_30 - minimenu $w.config.f 16 1 "AHB RAM size (Kbyte)" tmpvar_30 CONFIG_AHBRAM_SZ1 + global tmpvar_31 + minimenu $w.config.f 16 1 "AHB RAM size (Kbyte)" tmpvar_31 CONFIG_AHBRAM_SZ1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" menusplit $w $w.config.f.x1.x.menu 7 hex $w.config.f 16 2 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3498,21 +3803,21 @@ proc update_menu16 {} { proc update_define_menu16 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_30 + global tmpvar_31 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_30 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_30 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_30 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_30 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_30 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_30 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_30 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_31 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3572,14 +3877,14 @@ proc menu17 {w title} { bool $w.config.f 17 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 17 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_31 - minimenu $w.config.f 17 2 "AHB FIFO size (words) " tmpvar_31 CONFIG_GRETH_FIFO4 + global tmpvar_32 + minimenu $w.config.f 17 2 "AHB FIFO size (words) " tmpvar_32 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_32 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3633,17 +3938,17 @@ proc update_define_menu17 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_31 + global tmpvar_32 global CONFIG_GRETH_FIFO4 - if {$tmpvar_31 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_32 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_32 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_32 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_32 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_31 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_32 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3836,57 +4141,57 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable Spacewire links " CONFIG_SPW_ENABLE int $w.config.f 19 1 "Number of links (1 - 3)" CONFIG_SPW_NUM - global tmpvar_32 - minimenu $w.config.f 19 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_32 CONFIG_SPW_AHBFIFO4 + global tmpvar_33 + minimenu $w.config.f 19 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_33 CONFIG_SPW_AHBFIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB RX/TX FIFO size (32-bit words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_33 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_33 - minimenu $w.config.f 19 3 "Receiver FIFO size (bytes) " tmpvar_33 CONFIG_SPW_RXFIFO16 + global tmpvar_34 + minimenu $w.config.f 19 3 "Receiver FIFO size (bytes) " tmpvar_34 CONFIG_SPW_RXFIFO16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Receiver FIFO size (bytes) \"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_33 -value "64" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_34 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_34 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_34 -value "64" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 19 4 "Enable RMAP protocol " CONFIG_SPW_RMAP - global tmpvar_34 - minimenu $w.config.f 19 5 "RMAP buffer size (bytes) " tmpvar_34 CONFIG_SPW_RMAPBUF2 + global tmpvar_35 + minimenu $w.config.f 19 5 "RMAP buffer size (bytes) " tmpvar_35 CONFIG_SPW_RMAPBUF2 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"RMAP buffer size (bytes) \"" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_34 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_34 -value "128" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_34 -value "192" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_34 -value "256" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_35 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_35 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_35 -value "192" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_35 -value "256" -command "update_active" menusplit $w $w.config.f.x5.x.menu 4 bool $w.config.f 19 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC bool $w.config.f 19 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL bool $w.config.f 19 8 "Spacewire FIFO protection " CONFIG_SPW_FT bool $w.config.f 19 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST int $w.config.f 19 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS - global tmpvar_35 - minimenu $w.config.f 19 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_35 CONFIG_SPW_GRSPW1 + global tmpvar_36 + minimenu $w.config.f 19 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_36 CONFIG_SPW_GRSPW1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Select GRSPW core (GRSPW1/GRSPW2) \"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_35 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_35 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_36 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_36 -value "2" -command "update_active" menusplit $w $w.config.f.x11.x.menu 2 int $w.config.f 19 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN bool $w.config.f 19 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME - global tmpvar_36 - minimenu $w.config.f 19 14 "Select receiver clock type " tmpvar_36 CONFIG_SPW_RX_SDR + global tmpvar_37 + minimenu $w.config.f 19 14 "Select receiver clock type " tmpvar_37 CONFIG_SPW_RX_SDR menu $w.config.f.x14.x.menu -tearoffcommand "menutitle \"Select receiver clock type \"" - $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_36 -value "SDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_36 -value "DDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_36 -value "Xor" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_36 -value "Aeroflex" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_37 -value "SDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_37 -value "DDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_37 -value "Xor" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_37 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x14.x.menu 4 - global tmpvar_37 - minimenu $w.config.f 19 15 "Select transmitter clock type " tmpvar_37 CONFIG_SPW_TX_SDR + global tmpvar_38 + minimenu $w.config.f 19 15 "Select transmitter clock type " tmpvar_38 CONFIG_SPW_TX_SDR menu $w.config.f.x15.x.menu -tearoffcommand "menutitle \"Select transmitter clock type \"" - $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_37 -value "SDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_37 -value "DDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_37 -value "Aeroflex" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_38 -value "SDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_38 -value "DDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_38 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x15.x.menu 3 @@ -3966,34 +4271,34 @@ proc update_define_menu19 {} { global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_NUM "$CONFIG_SPW_NUM" 1} - global tmpvar_32 + global tmpvar_33 global CONFIG_SPW_AHBFIFO4 - if {$tmpvar_32 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} + if {$tmpvar_33 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} global CONFIG_SPW_AHBFIFO8 - if {$tmpvar_32 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} + if {$tmpvar_33 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} global CONFIG_SPW_AHBFIFO16 - if {$tmpvar_32 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} + if {$tmpvar_33 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} global CONFIG_SPW_AHBFIFO32 - if {$tmpvar_32 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} - global tmpvar_33 + if {$tmpvar_33 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} + global tmpvar_34 global CONFIG_SPW_RXFIFO16 - if {$tmpvar_33 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} + if {$tmpvar_34 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} global CONFIG_SPW_RXFIFO32 - if {$tmpvar_33 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} + if {$tmpvar_34 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} global CONFIG_SPW_RXFIFO64 - if {$tmpvar_33 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} + if {$tmpvar_34 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP&15]} else {set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP|16]} - global tmpvar_34 + global tmpvar_35 global CONFIG_SPW_RMAPBUF2 - if {$tmpvar_34 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} + if {$tmpvar_35 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} global CONFIG_SPW_RMAPBUF4 - if {$tmpvar_34 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} + if {$tmpvar_35 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} global CONFIG_SPW_RMAPBUF6 - if {$tmpvar_34 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} + if {$tmpvar_35 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} global CONFIG_SPW_RMAPBUF8 - if {$tmpvar_34 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} + if {$tmpvar_35 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC&15]} else {set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC|16]} @@ -4008,32 +4313,32 @@ proc update_define_menu19 {} { set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST&15]} else {set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST|16]} global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_PORTS "$CONFIG_SPW_PORTS" 1} - global tmpvar_35 + global tmpvar_36 global CONFIG_SPW_GRSPW1 - if {$tmpvar_35 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} + if {$tmpvar_36 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} global CONFIG_SPW_GRSPW2 - if {$tmpvar_35 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} + if {$tmpvar_36 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} global CONFIG_SPW_DMACHAN if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {validate_int CONFIG_SPW_DMACHAN "$CONFIG_SPW_DMACHAN" 1} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME&15]} else {set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME|16]} - global tmpvar_36 + global tmpvar_37 global CONFIG_SPW_RX_SDR - if {$tmpvar_36 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} + if {$tmpvar_37 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} global CONFIG_SPW_RX_DDR - if {$tmpvar_36 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} + if {$tmpvar_37 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} global CONFIG_SPW_RX_XOR - if {$tmpvar_36 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} + if {$tmpvar_37 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} global CONFIG_SPW_RX_AFLEX - if {$tmpvar_36 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} - global tmpvar_37 + if {$tmpvar_37 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} + global tmpvar_38 global CONFIG_SPW_TX_SDR - if {$tmpvar_37 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} + if {$tmpvar_38 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} global CONFIG_SPW_TX_DDR - if {$tmpvar_37 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} + if {$tmpvar_38 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} global CONFIG_SPW_TX_AFLEX - if {$tmpvar_37 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} + if {$tmpvar_38 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} } @@ -4093,29 +4398,29 @@ proc menu20 {w title} { bool $w.config.f 20 2 "PCI DMA controller " CONFIG_PCI_MASTER_TARGET_DMA hex $w.config.f 20 3 "PCI vendor ID" CONFIG_PCI_VENDORID hex $w.config.f 20 4 "PCI device ID" CONFIG_PCI_DEVICEID - global tmpvar_38 - minimenu $w.config.f 20 5 "PCI FIFO depth" tmpvar_38 CONFIG_PCI_FIFO0 + global tmpvar_39 + minimenu $w.config.f 20 5 "PCI FIFO depth" tmpvar_39 CONFIG_PCI_FIFO0 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"PCI FIFO depth\"" - $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_38 -value "None" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_38 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_38 -value "16" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_38 -value "32" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_38 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_38 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_39 -value "None" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_39 -value "8" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_39 -value "16" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_39 -value "32" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_39 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_39 -value "128" -command "update_active" menusplit $w $w.config.f.x5.x.menu 6 hex $w.config.f 20 6 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR bool $w.config.f 20 7 "PCI arbiter " CONFIG_PCI_ARBITER bool $w.config.f 20 8 "PCI arbiter APB interface " CONFIG_PCI_ARBITER_APB int $w.config.f 20 9 "Number of PCI REQ/GNT pairs" CONFIG_PCI_ARBITER_NREQ bool $w.config.f 20 10 "Enable PCI trace buffer " CONFIG_PCI_TRACE - global tmpvar_39 - minimenu $w.config.f 20 11 "PCI trace buffer depth" tmpvar_39 CONFIG_PCI_TRACE256 + global tmpvar_40 + minimenu $w.config.f 20 11 "PCI trace buffer depth" tmpvar_40 CONFIG_PCI_TRACE256 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"PCI trace buffer depth\"" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_39 -value "256" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_39 -value "512" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_39 -value "1024" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_39 -value "2048" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_39 -value "4096" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_40 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_40 -value "512" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_40 -value "1024" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_40 -value "2048" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_40 -value "4096" -command "update_active" menusplit $w $w.config.f.x11.x.menu 5 @@ -4199,19 +4504,19 @@ proc update_define_menu20 {} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_VENDORID "$CONFIG_PCI_VENDORID" 1AC8} global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_DEVICEID "$CONFIG_PCI_DEVICEID" 0054} - global tmpvar_38 + global tmpvar_39 global CONFIG_PCI_FIFO0 - if {$tmpvar_38 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} + if {$tmpvar_39 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} global CONFIG_PCI_FIFO8 - if {$tmpvar_38 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} + if {$tmpvar_39 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} global CONFIG_PCI_FIFO16 - if {$tmpvar_38 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} + if {$tmpvar_39 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} global CONFIG_PCI_FIFO32 - if {$tmpvar_38 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} + if {$tmpvar_39 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} global CONFIG_PCI_FIFO64 - if {$tmpvar_38 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} + if {$tmpvar_39 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} global CONFIG_PCI_FIFO128 - if {$tmpvar_38 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} + if {$tmpvar_39 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_HADDR "$CONFIG_PCI_HADDR" E00} global CONFIG_PCI_ARBITER @@ -4220,17 +4525,17 @@ proc update_define_menu20 {} { set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB&15]} else {set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB|16]} global CONFIG_PCI_ARBITER_NREQ if {($CONFIG_PCI_ARBITER == 1)} then {validate_int CONFIG_PCI_ARBITER_NREQ "$CONFIG_PCI_ARBITER_NREQ" 4} - global tmpvar_39 + global tmpvar_40 global CONFIG_PCI_TRACE256 - if {$tmpvar_39 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} + if {$tmpvar_40 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} global CONFIG_PCI_TRACE512 - if {$tmpvar_39 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} + if {$tmpvar_40 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} global CONFIG_PCI_TRACE1024 - if {$tmpvar_39 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} + if {$tmpvar_40 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} global CONFIG_PCI_TRACE2048 - if {$tmpvar_39 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} + if {$tmpvar_40 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} global CONFIG_PCI_TRACE4096 - if {$tmpvar_39 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} + if {$tmpvar_40 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} } @@ -4290,37 +4595,37 @@ proc menu21 {w title} { bool $w.config.f 21 2 "Enable Universal Host Controller " CONFIG_GRUSBHC_UHC int $w.config.f 21 3 "Number of Universal Host Controllers (1-15)" CONFIG_GRUSBHC_NCC int $w.config.f 21 4 "Total number of ports (1-15)" CONFIG_GRUSBHC_NPORTS - global tmpvar_40 - minimenu $w.config.f 21 5 "Transceiver interface" tmpvar_40 CONFIG_GRUSBHC_ULPI + global tmpvar_41 + minimenu $w.config.f 21 5 "Transceiver interface" tmpvar_41 CONFIG_GRUSBHC_ULPI menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"Transceiver interface\"" - $w.config.f.x5.x.menu add radiobutton -label "ULPI" -variable tmpvar_40 -value "ULPI" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "UTMI+16-bit" -variable tmpvar_40 -value "UTMI+16-bit" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "UTMI+8-bit" -variable tmpvar_40 -value "UTMI+8-bit" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "ULPI" -variable tmpvar_41 -value "ULPI" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "UTMI+16-bit" -variable tmpvar_41 -value "UTMI+16-bit" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "UTMI+8-bit" -variable tmpvar_41 -value "UTMI+8-bit" -command "update_active" menusplit $w $w.config.f.x5.x.menu 3 - global tmpvar_41 - minimenu $w.config.f 21 6 "Bus power generation" tmpvar_41 CONFIG_GRUSBHC_VBUSEXT + global tmpvar_42 + minimenu $w.config.f 21 6 "Bus power generation" tmpvar_42 CONFIG_GRUSBHC_VBUSEXT menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"Bus power generation\"" - $w.config.f.x6.x.menu add radiobutton -label "External" -variable tmpvar_41 -value "External" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Internal" -variable tmpvar_41 -value "Internal" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "External" -variable tmpvar_42 -value "External" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Internal" -variable tmpvar_42 -value "Internal" -command "update_active" menusplit $w $w.config.f.x6.x.menu 2 - global tmpvar_42 - minimenu $w.config.f 21 7 "External bus fault indicator" tmpvar_42 CONFIG_GRUSBHC_FAULTL + global tmpvar_43 + minimenu $w.config.f 21 7 "External bus fault indicator" tmpvar_43 CONFIG_GRUSBHC_FAULTL menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"External bus fault indicator\"" - $w.config.f.x7.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_42 -value "ActiveLow" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_42 -value "ActiveHigh" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "None" -variable tmpvar_42 -value "None" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_43 -value "ActiveLow" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_43 -value "ActiveHigh" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "None" -variable tmpvar_43 -value "None" -command "update_active" menusplit $w $w.config.f.x7.x.menu 3 - global tmpvar_43 - minimenu $w.config.f 21 8 "Bus power enable signal" tmpvar_43 CONFIG_GRUSBHC_ENABLEH + global tmpvar_44 + minimenu $w.config.f 21 8 "Bus power enable signal" tmpvar_44 CONFIG_GRUSBHC_ENABLEH menu $w.config.f.x8.x.menu -tearoffcommand "menutitle \"Bus power enable signal\"" - $w.config.f.x8.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_43 -value "ActiveHigh" -command "update_active" - $w.config.f.x8.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_43 -value "ActiveLow" -command "update_active" + $w.config.f.x8.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_44 -value "ActiveHigh" -command "update_active" + $w.config.f.x8.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_44 -value "ActiveLow" -command "update_active" menusplit $w $w.config.f.x8.x.menu 2 - global tmpvar_44 - minimenu $w.config.f 21 9 "Bus power fault indicator" tmpvar_44 CONFIG_GRUSBHC_FAULT2H + global tmpvar_45 + minimenu $w.config.f 21 9 "Bus power fault indicator" tmpvar_45 CONFIG_GRUSBHC_FAULT2H menu $w.config.f.x9.x.menu -tearoffcommand "menutitle \"Bus power fault indicator\"" - $w.config.f.x9.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_44 -value "ActiveHigh" -command "update_active" - $w.config.f.x9.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_44 -value "ActiveLow" -command "update_active" + $w.config.f.x9.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_45 -value "ActiveHigh" -command "update_active" + $w.config.f.x9.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_45 -value "ActiveLow" -command "update_active" menusplit $w $w.config.f.x9.x.menu 2 comment $w.config.f 21 10 "Memory interface" bool $w.config.f 21 11 "Enable big endian register interface" CONFIG_GRUSBHC_BEREGS @@ -4461,35 +4766,35 @@ proc update_define_menu21 {} { if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_UHC == 1)} then {validate_int CONFIG_GRUSBHC_NCC "$CONFIG_GRUSBHC_NCC" 1} global CONFIG_GRUSBHC_NPORTS if {($CONFIG_GRUSBHC_ENABLE == 1)} then {validate_int CONFIG_GRUSBHC_NPORTS "$CONFIG_GRUSBHC_NPORTS" 1} - global tmpvar_40 + global tmpvar_41 global CONFIG_GRUSBHC_ULPI - if {$tmpvar_40 == "ULPI"} then {set CONFIG_GRUSBHC_ULPI 1} else {set CONFIG_GRUSBHC_ULPI 0} + if {$tmpvar_41 == "ULPI"} then {set CONFIG_GRUSBHC_ULPI 1} else {set CONFIG_GRUSBHC_ULPI 0} global CONFIG_GRUSBHC_UTMI16 - if {$tmpvar_40 == "UTMI+16-bit"} then {set CONFIG_GRUSBHC_UTMI16 1} else {set CONFIG_GRUSBHC_UTMI16 0} + if {$tmpvar_41 == "UTMI+16-bit"} then {set CONFIG_GRUSBHC_UTMI16 1} else {set CONFIG_GRUSBHC_UTMI16 0} global CONFIG_GRUSBHC_UTMI8 - if {$tmpvar_40 == "UTMI+8-bit"} then {set CONFIG_GRUSBHC_UTMI8 1} else {set CONFIG_GRUSBHC_UTMI8 0} - global tmpvar_41 + if {$tmpvar_41 == "UTMI+8-bit"} then {set CONFIG_GRUSBHC_UTMI8 1} else {set CONFIG_GRUSBHC_UTMI8 0} + global tmpvar_42 global CONFIG_GRUSBHC_VBUSEXT - if {$tmpvar_41 == "External"} then {set CONFIG_GRUSBHC_VBUSEXT 1} else {set CONFIG_GRUSBHC_VBUSEXT 0} + if {$tmpvar_42 == "External"} then {set CONFIG_GRUSBHC_VBUSEXT 1} else {set CONFIG_GRUSBHC_VBUSEXT 0} global CONFIG_GRUSBHC_VBUSINT - if {$tmpvar_41 == "Internal"} then {set CONFIG_GRUSBHC_VBUSINT 1} else {set CONFIG_GRUSBHC_VBUSINT 0} - global tmpvar_42 + if {$tmpvar_42 == "Internal"} then {set CONFIG_GRUSBHC_VBUSINT 1} else {set CONFIG_GRUSBHC_VBUSINT 0} + global tmpvar_43 global CONFIG_GRUSBHC_FAULTL - if {$tmpvar_42 == "ActiveLow"} then {set CONFIG_GRUSBHC_FAULTL 1} else {set CONFIG_GRUSBHC_FAULTL 0} + if {$tmpvar_43 == "ActiveLow"} then {set CONFIG_GRUSBHC_FAULTL 1} else {set CONFIG_GRUSBHC_FAULTL 0} global CONFIG_GRUSBHC_FAULTH - if {$tmpvar_42 == "ActiveHigh"} then {set CONFIG_GRUSBHC_FAULTH 1} else {set CONFIG_GRUSBHC_FAULTH 0} + if {$tmpvar_43 == "ActiveHigh"} then {set CONFIG_GRUSBHC_FAULTH 1} else {set CONFIG_GRUSBHC_FAULTH 0} global CONFIG_GRUSBHC_FAULTN - if {$tmpvar_42 == "None"} then {set CONFIG_GRUSBHC_FAULTN 1} else {set CONFIG_GRUSBHC_FAULTN 0} - global tmpvar_43 + if {$tmpvar_43 == "None"} then {set CONFIG_GRUSBHC_FAULTN 1} else {set CONFIG_GRUSBHC_FAULTN 0} + global tmpvar_44 global CONFIG_GRUSBHC_ENABLEH - if {$tmpvar_43 == "ActiveHigh"} then {set CONFIG_GRUSBHC_ENABLEH 1} else {set CONFIG_GRUSBHC_ENABLEH 0} + if {$tmpvar_44 == "ActiveHigh"} then {set CONFIG_GRUSBHC_ENABLEH 1} else {set CONFIG_GRUSBHC_ENABLEH 0} global CONFIG_GRUSBHC_ENABLEL - if {$tmpvar_43 == "ActiveLow"} then {set CONFIG_GRUSBHC_ENABLEL 1} else {set CONFIG_GRUSBHC_ENABLEL 0} - global tmpvar_44 + if {$tmpvar_44 == "ActiveLow"} then {set CONFIG_GRUSBHC_ENABLEL 1} else {set CONFIG_GRUSBHC_ENABLEL 0} + global tmpvar_45 global CONFIG_GRUSBHC_FAULT2H - if {$tmpvar_44 == "ActiveHigh"} then {set CONFIG_GRUSBHC_FAULT2H 1} else {set CONFIG_GRUSBHC_FAULT2H 0} + if {$tmpvar_45 == "ActiveHigh"} then {set CONFIG_GRUSBHC_FAULT2H 1} else {set CONFIG_GRUSBHC_FAULT2H 0} global CONFIG_GRUSBHC_FAULT2L - if {$tmpvar_44 == "ActiveLow"} then {set CONFIG_GRUSBHC_FAULT2L 1} else {set CONFIG_GRUSBHC_FAULT2L 0} + if {$tmpvar_45 == "ActiveLow"} then {set CONFIG_GRUSBHC_FAULT2L 1} else {set CONFIG_GRUSBHC_FAULT2L 0} global CONFIG_GRUSBHC_BEREGS if {($CONFIG_GRUSBHC_ENABLE == 1)} then { set CONFIG_GRUSBHC_BEREGS [expr $CONFIG_GRUSBHC_BEREGS&15]} else {set CONFIG_GRUSBHC_BEREGS [expr $CONFIG_GRUSBHC_BEREGS|16]} @@ -4589,12 +4894,12 @@ proc menu22 {w title} { bool $w.config.f 22 0 "Gaisler Research USB 2.0 Device Controller " CONFIG_GRUSBDC_ENABLE bool $w.config.f 22 1 "AHB Master Interface" CONFIG_GRUSBDC_AIFACE - global tmpvar_45 - minimenu $w.config.f 22 2 "USB Transceiver Interface" tmpvar_45 CONFIG_GRUSBDC_ULPI + global tmpvar_46 + minimenu $w.config.f 22 2 "USB Transceiver Interface" tmpvar_46 CONFIG_GRUSBDC_ULPI menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"USB Transceiver Interface\"" - $w.config.f.x2.x.menu add radiobutton -label "ULPI" -variable tmpvar_45 -value "ULPI" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "UTMI/UTMI+8-bit" -variable tmpvar_45 -value "UTMI/UTMI+8-bit" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "UTMI/UTMI+16-bit" -variable tmpvar_45 -value "UTMI/UTMI+16-bit" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ULPI" -variable tmpvar_46 -value "ULPI" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "UTMI/UTMI+8-bit" -variable tmpvar_46 -value "UTMI/UTMI+8-bit" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "UTMI/UTMI+16-bit" -variable tmpvar_46 -value "UTMI/UTMI+16-bit" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 int $w.config.f 22 3 "Number of IN endpoints " CONFIG_GRUSBDC_NEPI int $w.config.f 22 4 "Number of OUT endpoints" CONFIG_GRUSBDC_NEPO @@ -4750,13 +5055,13 @@ proc update_define_menu22 {} { global CONFIG_GRUSBDC_AIFACE if {($CONFIG_GRUSBDC_ENABLE == 1)} then { set CONFIG_GRUSBDC_AIFACE [expr $CONFIG_GRUSBDC_AIFACE&15]} else {set CONFIG_GRUSBDC_AIFACE [expr $CONFIG_GRUSBDC_AIFACE|16]} - global tmpvar_45 + global tmpvar_46 global CONFIG_GRUSBDC_ULPI - if {$tmpvar_45 == "ULPI"} then {set CONFIG_GRUSBDC_ULPI 1} else {set CONFIG_GRUSBDC_ULPI 0} + if {$tmpvar_46 == "ULPI"} then {set CONFIG_GRUSBDC_ULPI 1} else {set CONFIG_GRUSBDC_ULPI 0} global CONFIG_GRUSBDC_UTMI8 - if {$tmpvar_45 == "UTMI/UTMI+8-bit"} then {set CONFIG_GRUSBDC_UTMI8 1} else {set CONFIG_GRUSBDC_UTMI8 0} + if {$tmpvar_46 == "UTMI/UTMI+8-bit"} then {set CONFIG_GRUSBDC_UTMI8 1} else {set CONFIG_GRUSBDC_UTMI8 0} global CONFIG_GRUSBDC_UTMI16 - if {$tmpvar_45 == "UTMI/UTMI+16-bit"} then {set CONFIG_GRUSBDC_UTMI16 1} else {set CONFIG_GRUSBDC_UTMI16 0} + if {$tmpvar_46 == "UTMI/UTMI+16-bit"} then {set CONFIG_GRUSBDC_UTMI16 1} else {set CONFIG_GRUSBDC_UTMI16 0} global CONFIG_GRUSBDC_NEPI if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_NEPI "$CONFIG_GRUSBDC_NEPI" 1} global CONFIG_GRUSBDC_NEPO @@ -4880,26 +5185,26 @@ proc menu23 {w title} { bool $w.config.f 23 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_46 - minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_46 CONFIG_UA1_FIFO1 + global tmpvar_47 + minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_47 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_46 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_46 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_46 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_46 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_46 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_46 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_47 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_47 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_47 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_47 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_47 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_47 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 23 2 "Enable secondary UART " CONFIG_UART2_ENABLE - global tmpvar_47 - minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_47 CONFIG_UA2_FIFO1 + global tmpvar_48 + minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_48 CONFIG_UA2_FIFO1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_47 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_47 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_47 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_47 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_47 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_47 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_48 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_48 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_48 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_48 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_48 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_48 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 6 bool $w.config.f 23 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 23 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4990,32 +5295,32 @@ proc update_menu23 {} { proc update_define_menu23 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_46 + global tmpvar_47 global CONFIG_UA1_FIFO1 - if {$tmpvar_46 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_47 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_46 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_47 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_46 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_47 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_46 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_47 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_46 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_47 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_46 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global tmpvar_47 + if {$tmpvar_47 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + global tmpvar_48 global CONFIG_UA2_FIFO1 - if {$tmpvar_47 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} + if {$tmpvar_48 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} global CONFIG_UA2_FIFO2 - if {$tmpvar_47 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} + if {$tmpvar_48 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} global CONFIG_UA2_FIFO4 - if {$tmpvar_47 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} + if {$tmpvar_48 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} global CONFIG_UA2_FIFO8 - if {$tmpvar_47 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} + if {$tmpvar_48 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} global CONFIG_UA2_FIFO16 - if {$tmpvar_47 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} + if {$tmpvar_48 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} global CONFIG_UA2_FIFO32 - if {$tmpvar_47 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} + if {$tmpvar_48 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -5185,7 +5490,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -5195,6 +5501,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -5223,6 +5531,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -5235,14 +5544,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_4 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -5255,28 +5569,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -5286,17 +5600,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -5308,12 +5622,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -5323,10 +5637,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -5337,7 +5651,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -5349,26 +5663,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_21 "(not set)" +set tmpvar_22 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_22 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_23 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -5376,27 +5692,27 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set tmpvar_27 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_FPUFT_NONE 0 set CONFIG_FPUFT_PAR 0 set CONFIG_FPUFT_DMR 0 @@ -5421,12 +5737,12 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_GRUSB_DCL 0 -set tmpvar_28 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_GRUSB_DCL_ULPI 0 set CONFIG_GRUSB_DCL_UTMI8 0 set CONFIG_GRUSB_DCL_UTMI16 0 set CONFIG_DSU_ETH 0 -set tmpvar_29 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -5451,7 +5767,7 @@ set CONFIG_MCTRL_PROGPAGE 0 set CONFIG_AHBSTAT_ENABLE 0 set CONFIG_AHBSTAT_NFTSLV 1 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_30 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -5462,7 +5778,7 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_31 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 @@ -5477,17 +5793,17 @@ set CONFIG_CAN_SYNCRST 0 set CONFIG_CAN_FT 0 set CONFIG_SPW_ENABLE 0 set CONFIG_SPW_NUM 1 -set tmpvar_32 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_SPW_AHBFIFO4 0 set CONFIG_SPW_AHBFIFO8 0 set CONFIG_SPW_AHBFIFO16 0 set CONFIG_SPW_AHBFIFO32 0 -set tmpvar_33 "(not set)" +set tmpvar_34 "(not set)" set CONFIG_SPW_RXFIFO16 0 set CONFIG_SPW_RXFIFO32 0 set CONFIG_SPW_RXFIFO64 0 set CONFIG_SPW_RMAP 0 -set tmpvar_34 "(not set)" +set tmpvar_35 "(not set)" set CONFIG_SPW_RMAPBUF2 0 set CONFIG_SPW_RMAPBUF4 0 set CONFIG_SPW_RMAPBUF6 0 @@ -5497,17 +5813,17 @@ set CONFIG_SPW_RXUNAL 0 set CONFIG_SPW_FT 0 set CONFIG_SPW_NETLIST 0 set CONFIG_SPW_PORTS 1 -set tmpvar_35 "(not set)" +set tmpvar_36 "(not set)" set CONFIG_SPW_GRSPW1 0 set CONFIG_SPW_GRSPW2 0 set CONFIG_SPW_DMACHAN 1 set CONFIG_SPW_RTSAME 0 -set tmpvar_36 "(not set)" +set tmpvar_37 "(not set)" set CONFIG_SPW_RX_SDR 0 set CONFIG_SPW_RX_DDR 0 set CONFIG_SPW_RX_XOR 0 set CONFIG_SPW_RX_AFLEX 0 -set tmpvar_37 "(not set)" +set tmpvar_38 "(not set)" set CONFIG_SPW_TX_SDR 0 set CONFIG_SPW_TX_DDR 0 set CONFIG_SPW_TX_AFLEX 0 @@ -5516,7 +5832,7 @@ set CONFIG_PCI_MASTER_TARGET 0 set CONFIG_PCI_MASTER_TARGET_DMA 0 set CONFIG_PCI_VENDORID 1AC8 set CONFIG_PCI_DEVICEID 0054 -set tmpvar_38 "(not set)" +set tmpvar_39 "(not set)" set CONFIG_PCI_FIFO0 0 set CONFIG_PCI_FIFO8 0 set CONFIG_PCI_FIFO16 0 @@ -5528,7 +5844,7 @@ set CONFIG_PCI_ARBITER 0 set CONFIG_PCI_ARBITER_APB 0 set CONFIG_PCI_ARBITER_NREQ 4 set CONFIG_PCI_TRACE 0 -set tmpvar_39 "(not set)" +set tmpvar_40 "(not set)" set CONFIG_PCI_TRACE256 0 set CONFIG_PCI_TRACE512 0 set CONFIG_PCI_TRACE1024 0 @@ -5539,21 +5855,21 @@ set CONFIG_GRUSBHC_EHC 0 set CONFIG_GRUSBHC_UHC 0 set CONFIG_GRUSBHC_NCC 1 set CONFIG_GRUSBHC_NPORTS 1 -set tmpvar_40 "(not set)" +set tmpvar_41 "(not set)" set CONFIG_GRUSBHC_ULPI 0 set CONFIG_GRUSBHC_UTMI16 0 set CONFIG_GRUSBHC_UTMI8 0 -set tmpvar_41 "(not set)" +set tmpvar_42 "(not set)" set CONFIG_GRUSBHC_VBUSEXT 0 set CONFIG_GRUSBHC_VBUSINT 0 -set tmpvar_42 "(not set)" +set tmpvar_43 "(not set)" set CONFIG_GRUSBHC_FAULTL 0 set CONFIG_GRUSBHC_FAULTH 0 set CONFIG_GRUSBHC_FAULTN 0 -set tmpvar_43 "(not set)" +set tmpvar_44 "(not set)" set CONFIG_GRUSBHC_ENABLEH 0 set CONFIG_GRUSBHC_ENABLEL 0 -set tmpvar_44 "(not set)" +set tmpvar_45 "(not set)" set CONFIG_GRUSBHC_FAULT2H 0 set CONFIG_GRUSBHC_FAULT2L 0 set CONFIG_GRUSBHC_BEREGS 0 @@ -5578,7 +5894,7 @@ set CONFIG_GRUSBHC_PR14 0 set CONFIG_GRUSBHC_PR15 0 set CONFIG_GRUSBDC_ENABLE 0 set CONFIG_GRUSBDC_AIFACE 0 -set tmpvar_45 "(not set)" +set tmpvar_46 "(not set)" set CONFIG_GRUSBDC_ULPI 0 set CONFIG_GRUSBDC_UTMI8 0 set CONFIG_GRUSBDC_UTMI16 0 @@ -5617,7 +5933,7 @@ set CONFIG_GRUSBDC_O13 1024 set CONFIG_GRUSBDC_O14 1024 set CONFIG_GRUSBDC_O15 1024 set CONFIG_UART1_ENABLE 0 -set tmpvar_46 "(not set)" +set tmpvar_47 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5625,7 +5941,7 @@ set CONFIG_UA1_FIFO8 0 set CONFIG_UA1_FIFO16 0 set CONFIG_UA1_FIFO32 0 set CONFIG_UART2_ENABLE 0 -set tmpvar_47 "(not set)" +set tmpvar_48 "(not set)" set CONFIG_UA2_FIFO1 0 set CONFIG_UA2_FIFO2 0 set CONFIG_UA2_FIFO4 0 @@ -5705,7 +6021,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5715,6 +6032,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5758,6 +6077,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_3 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_3 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_3 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_3 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5770,9 +6090,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5786,245 +6107,390 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_4 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_4 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_4 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_4 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_4 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_5 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_5 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_6 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_6 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_6 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_7 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_7 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_7 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_7 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_8 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_8 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_9 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_9 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_9 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_9 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_10 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_11 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_11 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_11 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_11 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_11 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_11 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_11 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_12 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_13 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_13 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_15 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_16 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_16 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_16 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_16 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_16 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_16 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_16 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_17 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_18 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_18 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_19 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_19 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_19 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_19 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_19 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_19 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_19 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_19 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_19 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_20 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_21 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_21 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_22 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_23 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_23 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_24 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_24 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_24 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_24 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_24 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_26 - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_28 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} + if { $tmpvar_28 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_28 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_28 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_28 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -6068,21 +6534,21 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_DSU_JTAG $CONFIG_DSU_JTAG [list $notmod] 2 global CONFIG_GRUSB_DCL write_tristate $cfg $autocfg CONFIG_GRUSB_DCL $CONFIG_GRUSB_DCL [list $notmod] 2 - global tmpvar_28 + global tmpvar_29 if {($CONFIG_GRUSB_DCL == 1)} then { - if { $tmpvar_28 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 0 [list $notmod] 2 } - if { $tmpvar_28 == "UTMI/UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 0 [list $notmod] 2 } - if { $tmpvar_28 == "UTMI/UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 0 [list $notmod] 2 }} + if { $tmpvar_29 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 0 [list $notmod] 2 } + if { $tmpvar_29 == "UTMI/UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 0 [list $notmod] 2 } + if { $tmpvar_29 == "UTMI/UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 0 [list $notmod] 2 }} global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_29 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -6126,27 +6592,27 @@ proc writeconfig {file1 file2} { write_comment $cfg $autocfg "On-chip RAM/ROM " global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_30 + global tmpvar_31 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_31 + global tmpvar_32 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_32 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "CAN " global CONFIG_CAN_ENABLE write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 @@ -6167,25 +6633,25 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_SPW_ENABLE $CONFIG_SPW_ENABLE [list $notmod] 2 global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_NUM $CONFIG_SPW_NUM $notmod } - global tmpvar_32 - if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } - if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } - if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } - if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} global tmpvar_33 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } - if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } - if { $tmpvar_33 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} + if { $tmpvar_33 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } + if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } + if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } + if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} + global tmpvar_34 + if {($CONFIG_SPW_ENABLE == 1)} then { + if { $tmpvar_34 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } + if { $tmpvar_34 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } + if { $tmpvar_34 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAP $CONFIG_SPW_RMAP [list $notmod] 2 } - global tmpvar_34 + global tmpvar_35 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then { - if { $tmpvar_34 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } - if { $tmpvar_34 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } - if { $tmpvar_34 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } - if { $tmpvar_34 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} + if { $tmpvar_35 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } + if { $tmpvar_35 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } + if { $tmpvar_35 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } + if { $tmpvar_35 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAPCRC $CONFIG_SPW_RMAPCRC [list $notmod] 2 } global CONFIG_SPW_RXUNAL @@ -6196,26 +6662,26 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_NETLIST $CONFIG_SPW_NETLIST [list $notmod] 2 } global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_PORTS $CONFIG_SPW_PORTS $notmod } - global tmpvar_35 + global tmpvar_36 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_35 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } - if { $tmpvar_35 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} + if { $tmpvar_36 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } + if { $tmpvar_36 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} global CONFIG_SPW_DMACHAN global CONFIG_SPW_GRSPW2 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_int $cfg $autocfg CONFIG_SPW_DMACHAN $CONFIG_SPW_DMACHAN $notmod } global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RTSAME $CONFIG_SPW_RTSAME [list $notmod] 2 } - global tmpvar_36 - if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_36 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } - if { $tmpvar_36 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } - if { $tmpvar_36 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } - if { $tmpvar_36 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} global tmpvar_37 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_37 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } - if { $tmpvar_37 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } - if { $tmpvar_37 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} + if { $tmpvar_37 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } + if { $tmpvar_37 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } + if { $tmpvar_37 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } + if { $tmpvar_37 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} + global tmpvar_38 + if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { + if { $tmpvar_38 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } + if { $tmpvar_38 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } + if { $tmpvar_38 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} write_comment $cfg $autocfg "PCI " global CONFIG_PCI_SIMPLE_TARGET global CONFIG_PCI_ACTEL @@ -6228,14 +6694,14 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_VENDORID $CONFIG_PCI_VENDORID $notmod } global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_DEVICEID $CONFIG_PCI_DEVICEID $notmod } - global tmpvar_38 + global tmpvar_39 if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then { - if { $tmpvar_38 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } - if { $tmpvar_38 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_38 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_38 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_38 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } - if { $tmpvar_38 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} + if { $tmpvar_39 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } + if { $tmpvar_39 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_39 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_39 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_39 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } + if { $tmpvar_39 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_HADDR $CONFIG_PCI_HADDR $notmod } global CONFIG_PCI_ARBITER @@ -6246,13 +6712,13 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_ARBITER == 1)} then {write_int $cfg $autocfg CONFIG_PCI_ARBITER_NREQ $CONFIG_PCI_ARBITER_NREQ $notmod } global CONFIG_PCI_TRACE write_tristate $cfg $autocfg CONFIG_PCI_TRACE $CONFIG_PCI_TRACE [list $notmod] 2 - global tmpvar_39 + global tmpvar_40 if {($CONFIG_PCI_TRACE == 1)} then { - if { $tmpvar_39 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } - if { $tmpvar_39 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } - if { $tmpvar_39 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } - if { $tmpvar_39 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } - if { $tmpvar_39 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} + if { $tmpvar_40 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } + if { $tmpvar_40 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } + if { $tmpvar_40 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } + if { $tmpvar_40 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } + if { $tmpvar_40 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} write_comment $cfg $autocfg "USB 2.0 Host Controller " global CONFIG_GRUSBHC_ENABLE write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLE $CONFIG_GRUSBHC_ENABLE [list $notmod] 2 @@ -6264,30 +6730,30 @@ proc writeconfig {file1 file2} { if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_UHC == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBHC_NCC $CONFIG_GRUSBHC_NCC $notmod } global CONFIG_GRUSBHC_NPORTS if {($CONFIG_GRUSBHC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBHC_NPORTS $CONFIG_GRUSBHC_NPORTS $notmod } - global tmpvar_40 - if {($CONFIG_GRUSBHC_ENABLE == 1)} then { - if { $tmpvar_40 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ULPI 0 [list $notmod] 2 } - if { $tmpvar_40 == "UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI16 0 [list $notmod] 2 } - if { $tmpvar_40 == "UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI8 0 [list $notmod] 2 }} global tmpvar_41 + if {($CONFIG_GRUSBHC_ENABLE == 1)} then { + if { $tmpvar_41 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ULPI 0 [list $notmod] 2 } + if { $tmpvar_41 == "UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI16 0 [list $notmod] 2 } + if { $tmpvar_41 == "UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI8 0 [list $notmod] 2 }} + global tmpvar_42 global CONFIG_GRUSBHC_ULPI if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI == 1)} then { - if { $tmpvar_41 == "External" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSEXT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSEXT 0 [list $notmod] 2 } - if { $tmpvar_41 == "Internal" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSINT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSINT 0 [list $notmod] 2 }} - global tmpvar_42 + if { $tmpvar_42 == "External" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSEXT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSEXT 0 [list $notmod] 2 } + if { $tmpvar_42 == "Internal" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSINT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSINT 0 [list $notmod] 2 }} + global tmpvar_43 global CONFIG_GRUSBHC_VBUSEXT if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI == 1) && ($CONFIG_GRUSBHC_VBUSEXT == 1)} then { - if { $tmpvar_42 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTL 0 [list $notmod] 2 } - if { $tmpvar_42 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTH 0 [list $notmod] 2 } - if { $tmpvar_42 == "None" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTN 0 [list $notmod] 2 }} - global tmpvar_43 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI != 1)} then { - if { $tmpvar_43 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEH 0 [list $notmod] 2 } - if { $tmpvar_43 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEL 0 [list $notmod] 2 }} + if { $tmpvar_43 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTL 0 [list $notmod] 2 } + if { $tmpvar_43 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTH 0 [list $notmod] 2 } + if { $tmpvar_43 == "None" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTN 0 [list $notmod] 2 }} global tmpvar_44 if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI != 1)} then { - if { $tmpvar_44 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2H 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2H 0 [list $notmod] 2 } - if { $tmpvar_44 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2L 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2L 0 [list $notmod] 2 }} + if { $tmpvar_44 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEH 0 [list $notmod] 2 } + if { $tmpvar_44 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEL 0 [list $notmod] 2 }} + global tmpvar_45 + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI != 1)} then { + if { $tmpvar_45 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2H 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2H 0 [list $notmod] 2 } + if { $tmpvar_45 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2L 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2L 0 [list $notmod] 2 }} if {($CONFIG_GRUSBHC_ENABLE == 1)} then {write_comment $cfg $autocfg "Memory interface"} global CONFIG_GRUSBHC_BEREGS if {($CONFIG_GRUSBHC_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRUSBHC_BEREGS $CONFIG_GRUSBHC_BEREGS [list $notmod] 2 } @@ -6335,11 +6801,11 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ENABLE $CONFIG_GRUSBDC_ENABLE [list $notmod] 2 global CONFIG_GRUSBDC_AIFACE if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRUSBDC_AIFACE $CONFIG_GRUSBDC_AIFACE [list $notmod] 2 } - global tmpvar_45 + global tmpvar_46 if {($CONFIG_GRUSBDC_ENABLE == 1)} then { - if { $tmpvar_45 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ULPI 0 [list $notmod] 2 } - if { $tmpvar_45 == "UTMI/UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI8 0 [list $notmod] 2 } - if { $tmpvar_45 == "UTMI/UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI16 0 [list $notmod] 2 }} + if { $tmpvar_46 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ULPI 0 [list $notmod] 2 } + if { $tmpvar_46 == "UTMI/UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI8 0 [list $notmod] 2 } + if { $tmpvar_46 == "UTMI/UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI16 0 [list $notmod] 2 }} global CONFIG_GRUSBDC_NEPI if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_NEPI $CONFIG_GRUSBDC_NEPI $notmod } global CONFIG_GRUSBDC_NEPO @@ -6411,24 +6877,24 @@ proc writeconfig {file1 file2} { write_comment $cfg $autocfg "UARTs, timers and I/O port " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_46 + global tmpvar_47 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_46 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_46 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_46 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_46 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_46 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_46 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_47 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_47 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_47 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_47 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_47 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_47 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_UART2_ENABLE write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2 - global tmpvar_47 + global tmpvar_48 if {($CONFIG_UART2_ENABLE == 1)} then { - if { $tmpvar_47 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_47 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_47 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_47 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_47 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_47 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_48 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_48 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_48 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_48 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_48 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_48 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -6501,7 +6967,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -6511,6 +6978,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -6532,8 +7001,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -6616,11 +7090,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -6799,8 +7275,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -6819,6 +7297,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -6867,476 +7349,492 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_3 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_3 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_3 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_3 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_3 "Xilinx-DCM" } global tmpvar_4 - set tmpvar_4 "5-cycles" + set tmpvar_4 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_4 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_4 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_4 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_4 "Custom-configuration" } + global tmpvar_5 + set tmpvar_5 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_5 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_5 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } - global tmpvar_5 - set tmpvar_5 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_5 "5-cycles" } + global tmpvar_6 + set tmpvar_6 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_6 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_6 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } - global tmpvar_6 - set tmpvar_6 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_6 "Designware" } + global tmpvar_7 + set tmpvar_7 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_7 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_7 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } - global tmpvar_7 - set tmpvar_7 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_7 "Meiko" } + global tmpvar_8 + set tmpvar_8 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_8 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_8 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_8 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } - global tmpvar_8 - set tmpvar_8 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_8 "TechSpec" } + global tmpvar_9 + set tmpvar_9 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_9 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_9 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } - global tmpvar_9 - set tmpvar_9 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_9 "Non-blocking" } + global tmpvar_10 + set tmpvar_10 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_10 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } - global tmpvar_10 - set tmpvar_10 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_10 "4" } + global tmpvar_11 + set tmpvar_11 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_11 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_11 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_11 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_11 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_11 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_11 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_11 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } - global tmpvar_11 - set tmpvar_11 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_11 "256" } + global tmpvar_12 + set tmpvar_12 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_12 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } - global tmpvar_12 - set tmpvar_12 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_12 "32" } + global tmpvar_13 + set tmpvar_13 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_13 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_13 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_13 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } - global tmpvar_13 - set tmpvar_13 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_13 "LRU" } + global tmpvar_14 + set tmpvar_14 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_14 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_14 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_14 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_14 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_14 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_14 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_14 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_14 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } - global tmpvar_14 - set tmpvar_14 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_14 "256" } + global tmpvar_15 + set tmpvar_15 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_15 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } - global tmpvar_15 - set tmpvar_15 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_15 "4" } + global tmpvar_16 + set tmpvar_16 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_16 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_16 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_16 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_16 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_16 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_16 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_16 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } - global tmpvar_16 - set tmpvar_16 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_16 "256" } + global tmpvar_17 + set tmpvar_17 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_17 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } - global tmpvar_17 - set tmpvar_17 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_17 "32" } + global tmpvar_18 + set tmpvar_18 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_18 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_18 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_18 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } - global tmpvar_18 - set tmpvar_18 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_18 "LRU" } + global tmpvar_19 + set tmpvar_19 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_19 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_19 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_19 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_19 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_19 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_19 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_19 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_19 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } - global tmpvar_19 - set tmpvar_19 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_19 "256" } + global tmpvar_20 + set tmpvar_20 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_20 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } - global tmpvar_20 - set tmpvar_20 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_20 "split" } + global tmpvar_21 + set tmpvar_21 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_21 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_21 "Increment" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_23 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_23 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_23 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_23 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } - global tmpvar_23 - set tmpvar_23 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_23 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_23 "64" } + global tmpvar_24 + set tmpvar_24 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_24 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_24 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_24 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_24 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_24 "Programmable" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_26 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_26 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_26 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_26 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_26 "16" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_27 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "None" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "None" global CONFIG_FPUFT_NONE - if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_28 "None" } global CONFIG_FPUFT_PAR - if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_28 "Parity" } global CONFIG_FPUFT_DMR - if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_28 "PDMR" } global CONFIG_FPUFT_TMR - if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } - global tmpvar_28 - set tmpvar_28 "ULPI" + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_28 "TMR" } + global tmpvar_29 + set tmpvar_29 "ULPI" global CONFIG_GRUSB_DCL_ULPI - if { $CONFIG_GRUSB_DCL_ULPI == 1 } then { set tmpvar_28 "ULPI" } + if { $CONFIG_GRUSB_DCL_ULPI == 1 } then { set tmpvar_29 "ULPI" } global CONFIG_GRUSB_DCL_UTMI8 - if { $CONFIG_GRUSB_DCL_UTMI8 == 1 } then { set tmpvar_28 "UTMI/UTMI+8-bit" } + if { $CONFIG_GRUSB_DCL_UTMI8 == 1 } then { set tmpvar_29 "UTMI/UTMI+8-bit" } global CONFIG_GRUSB_DCL_UTMI16 - if { $CONFIG_GRUSB_DCL_UTMI16 == 1 } then { set tmpvar_28 "UTMI/UTMI+16-bit" } - global tmpvar_29 - set tmpvar_29 "2" + if { $CONFIG_GRUSB_DCL_UTMI16 == 1 } then { set tmpvar_29 "UTMI/UTMI+16-bit" } + global tmpvar_30 + set tmpvar_30 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_30 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_30 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_30 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_30 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_29 "16" } - global tmpvar_30 - set tmpvar_30 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_30 "16" } + global tmpvar_31 + set tmpvar_31 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_30 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_31 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_30 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_31 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_31 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_31 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_31 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_31 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_30 "64" } - global tmpvar_31 - set tmpvar_31 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_31 "64" } + global tmpvar_32 + set tmpvar_32 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_31 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_32 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_32 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_32 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_31 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_32 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_31 "64" } - global tmpvar_32 - set tmpvar_32 "16" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_32 "64" } + global tmpvar_33 + set tmpvar_33 "16" global CONFIG_SPW_AHBFIFO4 - if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_32 "4" } + if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_33 "4" } global CONFIG_SPW_AHBFIFO8 - if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_32 "8" } + if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_33 "8" } global CONFIG_SPW_AHBFIFO16 - if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_32 "16" } + if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_33 "16" } global CONFIG_SPW_AHBFIFO32 - if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_32 "32" } - global tmpvar_33 - set tmpvar_33 "16" + if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_33 "32" } + global tmpvar_34 + set tmpvar_34 "16" global CONFIG_SPW_RXFIFO16 - if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_33 "16" } + if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_34 "16" } global CONFIG_SPW_RXFIFO32 - if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_33 "32" } + if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_34 "32" } global CONFIG_SPW_RXFIFO64 - if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_33 "64" } - global tmpvar_34 - set tmpvar_34 "64" + if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_34 "64" } + global tmpvar_35 + set tmpvar_35 "64" global CONFIG_SPW_RMAPBUF2 - if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_34 "64" } + if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_35 "64" } global CONFIG_SPW_RMAPBUF4 - if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_34 "128" } + if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_35 "128" } global CONFIG_SPW_RMAPBUF6 - if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_34 "192" } + if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_35 "192" } global CONFIG_SPW_RMAPBUF8 - if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_34 "256" } - global tmpvar_35 - set tmpvar_35 "2" + if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_35 "256" } + global tmpvar_36 + set tmpvar_36 "2" global CONFIG_SPW_GRSPW1 - if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_35 "1" } + if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_36 "1" } global CONFIG_SPW_GRSPW2 - if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_35 "2" } - global tmpvar_36 - set tmpvar_36 "DDR" + if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_36 "2" } + global tmpvar_37 + set tmpvar_37 "DDR" global CONFIG_SPW_RX_SDR - if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_36 "SDR" } + if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_37 "SDR" } global CONFIG_SPW_RX_DDR - if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_36 "DDR" } + if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_37 "DDR" } global CONFIG_SPW_RX_XOR - if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_36 "Xor" } + if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_37 "Xor" } global CONFIG_SPW_RX_AFLEX - if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_36 "Aeroflex" } - global tmpvar_37 - set tmpvar_37 "SDR" + if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_37 "Aeroflex" } + global tmpvar_38 + set tmpvar_38 "SDR" global CONFIG_SPW_TX_SDR - if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_37 "SDR" } + if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_38 "SDR" } global CONFIG_SPW_TX_DDR - if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_37 "DDR" } + if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_38 "DDR" } global CONFIG_SPW_TX_AFLEX - if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_37 "Aeroflex" } - global tmpvar_38 - set tmpvar_38 "8" + if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_38 "Aeroflex" } + global tmpvar_39 + set tmpvar_39 "8" global CONFIG_PCI_FIFO0 - if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_38 "None" } + if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_39 "None" } global CONFIG_PCI_FIFO8 - if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_38 "8" } + if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_39 "8" } global CONFIG_PCI_FIFO16 - if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_38 "16" } + if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_39 "16" } global CONFIG_PCI_FIFO32 - if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_38 "32" } + if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_39 "32" } global CONFIG_PCI_FIFO64 - if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_38 "64" } + if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_39 "64" } global CONFIG_PCI_FIFO128 - if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_38 "128" } - global tmpvar_39 - set tmpvar_39 "256" + if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_39 "128" } + global tmpvar_40 + set tmpvar_40 "256" global CONFIG_PCI_TRACE256 - if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_39 "256" } + if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_40 "256" } global CONFIG_PCI_TRACE512 - if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_39 "512" } + if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_40 "512" } global CONFIG_PCI_TRACE1024 - if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_39 "1024" } + if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_40 "1024" } global CONFIG_PCI_TRACE2048 - if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_39 "2048" } + if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_40 "2048" } global CONFIG_PCI_TRACE4096 - if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_39 "4096" } - global tmpvar_40 - set tmpvar_40 "ULPI" + if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_40 "4096" } + global tmpvar_41 + set tmpvar_41 "ULPI" global CONFIG_GRUSBHC_ULPI - if { $CONFIG_GRUSBHC_ULPI == 1 } then { set tmpvar_40 "ULPI" } + if { $CONFIG_GRUSBHC_ULPI == 1 } then { set tmpvar_41 "ULPI" } global CONFIG_GRUSBHC_UTMI16 - if { $CONFIG_GRUSBHC_UTMI16 == 1 } then { set tmpvar_40 "UTMI+16-bit" } + if { $CONFIG_GRUSBHC_UTMI16 == 1 } then { set tmpvar_41 "UTMI+16-bit" } global CONFIG_GRUSBHC_UTMI8 - if { $CONFIG_GRUSBHC_UTMI8 == 1 } then { set tmpvar_40 "UTMI+8-bit" } - global tmpvar_41 - set tmpvar_41 "External" + if { $CONFIG_GRUSBHC_UTMI8 == 1 } then { set tmpvar_41 "UTMI+8-bit" } + global tmpvar_42 + set tmpvar_42 "External" global CONFIG_GRUSBHC_VBUSEXT - if { $CONFIG_GRUSBHC_VBUSEXT == 1 } then { set tmpvar_41 "External" } + if { $CONFIG_GRUSBHC_VBUSEXT == 1 } then { set tmpvar_42 "External" } global CONFIG_GRUSBHC_VBUSINT - if { $CONFIG_GRUSBHC_VBUSINT == 1 } then { set tmpvar_41 "Internal" } - global tmpvar_42 - set tmpvar_42 "ActiveLow" + if { $CONFIG_GRUSBHC_VBUSINT == 1 } then { set tmpvar_42 "Internal" } + global tmpvar_43 + set tmpvar_43 "ActiveLow" global CONFIG_GRUSBHC_FAULTL - if { $CONFIG_GRUSBHC_FAULTL == 1 } then { set tmpvar_42 "ActiveLow" } + if { $CONFIG_GRUSBHC_FAULTL == 1 } then { set tmpvar_43 "ActiveLow" } global CONFIG_GRUSBHC_FAULTH - if { $CONFIG_GRUSBHC_FAULTH == 1 } then { set tmpvar_42 "ActiveHigh" } + if { $CONFIG_GRUSBHC_FAULTH == 1 } then { set tmpvar_43 "ActiveHigh" } global CONFIG_GRUSBHC_FAULTN - if { $CONFIG_GRUSBHC_FAULTN == 1 } then { set tmpvar_42 "None" } - global tmpvar_43 - set tmpvar_43 "ActiveHigh" - global CONFIG_GRUSBHC_ENABLEH - if { $CONFIG_GRUSBHC_ENABLEH == 1 } then { set tmpvar_43 "ActiveHigh" } - global CONFIG_GRUSBHC_ENABLEL - if { $CONFIG_GRUSBHC_ENABLEL == 1 } then { set tmpvar_43 "ActiveLow" } + if { $CONFIG_GRUSBHC_FAULTN == 1 } then { set tmpvar_43 "None" } global tmpvar_44 set tmpvar_44 "ActiveHigh" + global CONFIG_GRUSBHC_ENABLEH + if { $CONFIG_GRUSBHC_ENABLEH == 1 } then { set tmpvar_44 "ActiveHigh" } + global CONFIG_GRUSBHC_ENABLEL + if { $CONFIG_GRUSBHC_ENABLEL == 1 } then { set tmpvar_44 "ActiveLow" } + global tmpvar_45 + set tmpvar_45 "ActiveHigh" global CONFIG_GRUSBHC_FAULT2H - if { $CONFIG_GRUSBHC_FAULT2H == 1 } then { set tmpvar_44 "ActiveHigh" } + if { $CONFIG_GRUSBHC_FAULT2H == 1 } then { set tmpvar_45 "ActiveHigh" } global CONFIG_GRUSBHC_FAULT2L - if { $CONFIG_GRUSBHC_FAULT2L == 1 } then { set tmpvar_44 "ActiveLow" } - global tmpvar_45 - set tmpvar_45 "ULPI" + if { $CONFIG_GRUSBHC_FAULT2L == 1 } then { set tmpvar_45 "ActiveLow" } + global tmpvar_46 + set tmpvar_46 "ULPI" global CONFIG_GRUSBDC_ULPI - if { $CONFIG_GRUSBDC_ULPI == 1 } then { set tmpvar_45 "ULPI" } + if { $CONFIG_GRUSBDC_ULPI == 1 } then { set tmpvar_46 "ULPI" } global CONFIG_GRUSBDC_UTMI8 - if { $CONFIG_GRUSBDC_UTMI8 == 1 } then { set tmpvar_45 "UTMI/UTMI+8-bit" } + if { $CONFIG_GRUSBDC_UTMI8 == 1 } then { set tmpvar_46 "UTMI/UTMI+8-bit" } global CONFIG_GRUSBDC_UTMI16 - if { $CONFIG_GRUSBDC_UTMI16 == 1 } then { set tmpvar_45 "UTMI/UTMI+16-bit" } - global tmpvar_46 - set tmpvar_46 "1" + if { $CONFIG_GRUSBDC_UTMI16 == 1 } then { set tmpvar_46 "UTMI/UTMI+16-bit" } + global tmpvar_47 + set tmpvar_47 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_46 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_47 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_46 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_47 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_46 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_47 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_46 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_47 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_46 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_47 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_46 "32" } - global tmpvar_47 - set tmpvar_47 "1" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_47 "32" } + global tmpvar_48 + set tmpvar_48 "1" global CONFIG_UA2_FIFO1 - if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_47 "1" } + if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_48 "1" } global CONFIG_UA2_FIFO2 - if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_47 "2" } + if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_48 "2" } global CONFIG_UA2_FIFO4 - if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_47 "4" } + if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_48 "4" } global CONFIG_UA2_FIFO8 - if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_47 "8" } + if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_48 "8" } global CONFIG_UA2_FIFO16 - if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_47 "16" } + if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_48 "16" } global CONFIG_UA2_FIFO32 - if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_47 "32" } + if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_48 "32" } } diff --git a/designs/leon3-gr-pci-xc5v/leon3mp.vhd b/designs/leon3-gr-pci-xc5v/leon3mp.vhd index 7c7a9689..17b12c05 100644 --- a/designs/leon3-gr-pci-xc5v/leon3mp.vhd +++ b/designs/leon3-gr-pci-xc5v/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-gr-pci-xc5v/testbench.vhd b/designs/leon3-gr-pci-xc5v/testbench.vhd index cb576280..11934c04 100644 --- a/designs/leon3-gr-pci-xc5v/testbench.vhd +++ b/designs/leon3-gr-pci-xc5v/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-gr-pci-xc5v/tkconfig.h b/designs/leon3-gr-pci-xc5v/tkconfig.h index 45d8b83c..8f5e52cc 100644 --- a/designs/leon3-gr-pci-xc5v/tkconfig.h +++ b/designs/leon3-gr-pci-xc5v/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else diff --git a/designs/leon3-gr-xc3s-1500/.config b/designs/leon3-gr-xc3s-1500/.config index 899c8049..463206cb 100644 --- a/designs/leon3-gr-xc3s-1500/.config +++ b/designs/leon3-gr-xc3s-1500/.config @@ -168,11 +168,13 @@ CONFIG_MMU_REPARRAY=y CONFIG_MMU_I8=y # CONFIG_MMU_I16 is not set # CONFIG_MMU_I32 is not set +# CONFIG_MMU_I64 is not set # CONFIG_MMU_D2 is not set # CONFIG_MMU_D4 is not set CONFIG_MMU_D8=y # CONFIG_MMU_D16 is not set # CONFIG_MMU_D32 is not set +# CONFIG_MMU_D64 is not set CONFIG_MMU_FASTWB=y # CONFIG_MMU_PAGE_4K is not set # CONFIG_MMU_PAGE_8K is not set @@ -277,15 +279,6 @@ CONFIG_GRETH_FIFO16=y # CONFIG_GRETH_FIFO32 is not set # CONFIG_GRETH_FIFO64 is not set -# -# IDE Disk controller -# -CONFIG_ATA_ENABLE=y -CONFIG_ATAIO=A00 -CONFIG_ATAIRQ=10 -CONFIG_ATA_MWDMA=y -CONFIG_ATA_FIFO=8 - # # CAN # diff --git a/designs/leon3-gr-xc3s-1500/Makefile b/designs/leon3-gr-xc3s-1500/Makefile index a8dc6aee..b911d238 100644 --- a/designs/leon3-gr-xc3s-1500/Makefile +++ b/designs/leon3-gr-xc3s-1500/Makefile @@ -23,9 +23,9 @@ VCOMOPT=-explicit TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp gleichmann gsi fmf spansion + tmtc openchip hynix cypress ihp gsi fmf spansion DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest ddr \ - leon4 leon4b64 l2cache gr1553b iommu haps ascs slink coremp7 pwm + leon4 leon4v0 l2cache gr1553b iommu ascs slink pwm FILESKIP = grcan.vhd include $(GRLIB)/bin/Makefile diff --git a/designs/leon3-gr-xc3s-1500/ahbrom.vhd b/designs/leon3-gr-xc3s-1500/ahbrom.vhd index f7c441dc..ac26c7b2 100644 --- a/designs/leon3-gr-xc3s-1500/ahbrom.vhd +++ b/designs/leon3-gr-xc3s-1500/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-gr-xc3s-1500/config.help b/designs/leon3-gr-xc3s-1500/config.help index 66d9218c..516838c3 100644 --- a/designs/leon3-gr-xc3s-1500/config.help +++ b/designs/leon3-gr-xc3s-1500/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -857,32 +890,6 @@ CONFIG_GRETH_FIFO4 size of the FIFO depth. -ATA interface enable -CONFIG_ATA_ENABLE - Say Y here to enable the ATA interace from OpenCores. The core has one - AHB slave interface for accessing all control registers. - -ATA register address -CONFIG_ATAIO - The control registers of the ATA core occupy 256 byte, and are - mapped in the AHB bus I/O area (0xFFF00000 - 0xFFFFF000). This setting - defines at which address in the I/O area the registers appear (HADDR[19:8]). - -ATA interrupt -CONFIG_ATAIRQ - Defines which interrupt number the ATA core will generate. - -ATA DMA support -CONFIG_ATA_MWDMA - Say yes here to enable IDE multi-word DMA support (MWDMA). - This will increase transfer rate compared to the PIO mode, - but increase area with approxiamtely 5,000 gates. Note that - DMA is not supported by legacy CF cards, so it makes no sense - to enable it on CF card sockets. - -ATA DMA FIFO depth -CONFIG_ATA_FIFO - Defines the DMA FIFO depth. Choose 8 or 16. CAN interface enable CONFIG_CAN_ENABLE Say Y here to enable one or more CAN cores. The cores has one diff --git a/designs/leon3-gr-xc3s-1500/config.in b/designs/leon3-gr-xc3s-1500/config.in index 134f9248..cf71a522 100644 --- a/designs/leon3-gr-xc3s-1500/config.in +++ b/designs/leon3-gr-xc3s-1500/config.in @@ -56,11 +56,6 @@ comment 'Peripherals ' source lib/gaisler/greth/greth.in endmenu - mainmenu_option next_comment - comment 'IDE Disk controller ' - source lib/gaisler/ata/ata.in - endmenu - mainmenu_option next_comment comment 'CAN ' source lib/gaisler/can/can_mc.in diff --git a/designs/leon3-gr-xc3s-1500/config.vhd b/designs/leon3-gr-xc3s-1500/config.vhd index 10f54bc0..d8f811dd 100644 --- a/designs/leon3-gr-xc3s-1500/config.vhd +++ b/designs/leon3-gr-xc3s-1500/config.vhd @@ -135,13 +135,6 @@ package config is constant CFG_GRETH1G : integer := 0; constant CFG_ETH_FIFO : integer := 16; --- ATA interface - constant CFG_ATA : integer := 1; - constant CFG_ATAIO : integer := 16#A00#; - constant CFG_ATAIRQ : integer := (10); - constant CFG_ATADMA : integer := 1; - constant CFG_ATAFIFO : integer := (8); - -- CAN 2.0 interface constant CFG_CAN : integer := 0; constant CFG_CAN_NUM : integer := 1; diff --git a/designs/leon3-gr-xc3s-1500/config.vhd.h b/designs/leon3-gr-xc3s-1500/config.vhd.h index f5f0f0f8..5494b79c 100644 --- a/designs/leon3-gr-xc3s-1500/config.vhd.h +++ b/designs/leon3-gr-xc3s-1500/config.vhd.h @@ -133,13 +133,6 @@ constant CFG_GRETH1G : integer := CONFIG_GRETH_GIGA; constant CFG_ETH_FIFO : integer := CFG_GRETH_FIFO; --- ATA interface - constant CFG_ATA : integer := CONFIG_ATA_ENABLE; - constant CFG_ATAIO : integer := 16#CONFIG_ATAIO#; - constant CFG_ATAIRQ : integer := CONFIG_ATAIRQ; - constant CFG_ATADMA : integer := CONFIG_ATA_MWDMA; - constant CFG_ATAFIFO : integer := CONFIG_ATA_FIFO; - -- CAN 2.0 interface constant CFG_CAN : integer := CONFIG_CAN_ENABLE; constant CFG_CAN_NUM : integer := CONFIG_CAN_NUM; diff --git a/designs/leon3-gr-xc3s-1500/doc/Makefile b/designs/leon3-gr-xc3s-1500/doc/Makefile deleted file mode 100644 index 2b8abafd..00000000 --- a/designs/leon3-gr-xc3s-1500/doc/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -clean: - -rm *backup* *.ps *.log diff --git a/designs/leon3-gr-xc3s-1500/doc/leon3-gr-xc3s-1500.pdf b/designs/leon3-gr-xc3s-1500/doc/leon3-gr-xc3s-1500.pdf deleted file mode 100644 index 29a253d3bb2956e5c51d433f531d30057ded7c14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1643559 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�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

IjYiSIV^YnYgi#7qW_6 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%0AE1J;O#VD>|AqcgY# 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⁡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%0Ak5&b9dYI$~^^j5)@^bFp7UueT7cI?zAQ;9 zATxvwYXr@`vARZ)fFUg{SJn~M)K}`w;)PNoJ8!cYAn7O?KXSy*weZ$(&=XEW+(4rb zu#ZD0X8l>qj-()B*-&8>7v}cA;UmmkS0KXlqc`KOaVxbp4OURt;ZQ|OC45+OYgtwc z-KhT_G0qds<}nrn6w;aHCrGSra1oyd6)2@xL@i9?i^GxFyc z%lIj+-^{+xO663AqC}^Jn z*15A}9C^Nl6`U@F<38B*(+srPgD;_mmX!2L=TrI%zmKuj8pC}G5juI^XnRpQ%T+&V zPD75vHbY@$6e<6=0(!kt}E0@ zv)k&x=L4P~!P699^C-2zT!B_g|N0@uhFWbK3|NzjcF4kvaB+`|#rE&Bnzpy3TT_+# zQC1P?b z;Te2qJTECy8Txy192)Okmvs^)v?pG_5#w8@0O@&zeu$opmgf{H&C`BsfP`kP^HfSM zr)T{MU8%yP0-IpTSIgkYo})MRQ+V0ISpEKh`7l#&l(aCwH%pYaKp$de>uOhs?|K$6 zu>(W3_qjlvWGIt2VkWHJ`W8Q$Iz13zD6P?Tz&Y{a$X_ps=2#mPMThy&`F_o#n?yw#?^kv{))(g|AvGw zaCj^f5Ojf_%uUlCmrtwBo^k+{)=S@^muGai*UOx7+3M-k@hJ=i5=0(_6bawGc>^2) z5<@$NkXeaa)>gU?daAU=Z7cD=G&|$!T|L}aA^3C&g+o+n`GRw=^ zwP5+<;nb_2Bm$MQ$~O*Y?{YM2vnnEXet=qEl>dF}HVQS{ZS^DU?>az;R z=2Z%3ynbZRhQFt}bB5sc+~|QNW>>(i5e8@Td%N!==}k=EThV!PrlLUD4j%!hhdPV# z3r-lE3qxh>(FWJY-S(lE$D8^6>$c z26*575NHD?7Xl8x{Gzxhzv7B+O*sx=mdvaNXv}0)whU}n+t|`idNo}co`fm1@E6Kyxip`8m zF9olfqc$#`#VozWEV}!j>z=MrUPX6%VRwYF*kVBBFqNM8ocq;xb$&+RBcOsgTdvus z#`+@?S}OKM-;yOw44Ifbo_Cmo>y#C+WEH%uZ6g?3B5wwT7W)7KdzlVzMeP>b{e82r~+)vK#p4 z$s0q^&%|IR$gs{Lk-i-9g%QcBPWM!6>z70Ik`R~{`zWHyh(m1-r|`$<`gmRy+b2P`OFyU z+Y9Q_65^QM>JxUW;fICzM>@9Si^c@6VmSWftr7OE5cS{Uti#riua2Y*0bK>>{=u*N zD8g?DamN+G27z&nR>}&|G2(1j%}fuk#qUbPj-I7Ejau^fmYED$93)&sRaRJ_1t@}p zLa4%kzoWMdR@4u|rbmcrw8zt-TQ%gQKUfkF45lIlF^oM-XGKFt1-c<25~0d%kQo!2 z!xmmTkb|$YP~t2mVui9dgH{V8^_I0OB;xfBJZ)h3;}y)PDr+gO5uO{QYe>PICBp!)FbmM+$bJX) z=)F=J75Tz_tQb?`QKIyiGdFKd)PlnAB5Fh1aQ3)@1RBxvt22%M6rPa5rm5|e@13x_ z!3kKqF$uhSI1@ESBz!Lds`p>lIxTFL%0cf!mac|MrTdZW*t&Voq4e`$y z$E(zzFEtP~T925Gt%g8#<-e)eT1~sCY#a7+>d;Cl#kDHAWkZBO@%|3J!?GzM5b};4RvgD}pLwj(@rx#KJIosBzGDSP>$a-&Yn}-o7_m>ZuE|YKRlrzIRsJWQ!-8`zLNDY85nJt6%>s=XQq|FBXc{Zb|IWjFK>`u7MK+E85K++ z#*sHZ$1Vpxrjm?MAo?N(kQ%+H7tb`swEEjI%WNH#NM>&pz3VGqDshM~)l#;*ksxfZ zzpi8OKvkL+sTrfo-jxV^>dHBx%GSdw*fDlU@U5$zfEk6fUm2GhgKzXOb~SD;AOYDA z`&z}PPB8z^0%5aGwFpKbj&DFnq*S*YK>c=m*m+@2RFyBjcz^ zQX)4F8_>2(GK)i*e^U+Bv77yJ6b;{oOX_E5#BgCNO-1^D+Gw7)SYpvuEh-hogQLBA z*7+ddUYHlrs{;#F0AkpB?|u4MI|Z%nW0MMQ9k|**2tpf)EVG<@?GYeW~Ra4V#n z8JKb}&ffh9kyd@FR85$)&X?Vb6WB2B+zC}uf!>marzGWRTSyzAEf?(@qbLhgB$#62 z(_Kcx_P-sw!c|o(*W8DG<%vqF{k=R2m3<2F?Obc)yO;6?7u>_Z`t7FF!&~`lvYtXg zy?nqS2ID7F_GQv$&;s+lyd7Y>5Bm~+twI*I{`=5+(R;7!^;z|2$HrFVDRW=^jeFFh zleNo6wnMAy%gCi|CYe`q1erofMkjObCYLuP+M+>lq|_=oWlPdrDGI_7y5X4BlQzsO z^&1CytrrG9-tTQ$DU_s}G+toSzTM%C$N8=N5og%-dqJB7) z6}98ewDypVnv(Xo9;|W+%aI<3GGknb#KXfq!o zn=YenKQ_GLG+Gs`5vr&H-gh9B;cMei^=-$D@nIw?sYG)n{4vs7D6o)wq}VF5Y_OrX z2S;Rd=Uvol6#}GKjp*Ko(4heWtI1%H!=9Z$1>5cEmFoO@7PmfDu@1-^gP*!ign+|8 z{4e>T46r1wc@<{!7{41*8cZ8iG=^A9A{Xz4oF%9Wykbt2e2eZ=!6-zepw`E>mU5bRO;cO~yLTQPF`t&xr-yGi z8{u8Om&||ews8(^s*hC~X2ZTSvu4uXz1t6U*Yf_B{SC}w+xl$!%AV32d{5@~cEVrT znF6&9pB`sw*VqyGUP7b`c27W(42ES#o5Od%ir|+kABS7n-iAVi|H1_Y|1W;sg$-1i zUlLeQxjD#-_r?>2gD>5-5z6hggRl%v52&Tnoe9U7XJVLu#Z)QZeGR;_TQAqavHeDLI8I7!BDfu8KH3 z&ZlFJlnPg|?o+rsuq>~fUHu9>QWs}GvMP7Z`jz0a`<1#m`1oYc2>X!wwewwQFGT_z zCqi#z$f-`El8d>pU!+PGssu;~Jcc*vDg6~(nx~e`M^C&}0zX@mh=UrstAGn;= zzcj9K%YEMG4TiKIj;Wrga!ykd%*f<<;6ezuz%_H z{|%eLpW#sd;8Lce`O6vfe+-@av%L66Me{%FenLm{|8gz;Un?*EgBj`X>Zq-rz<)-OA0H=6G#2u}8zV%A5TXxNOtBf`ZmkKF9Fb%E zj9RKr&;J`^y;6(%*O}#YzY{mPW1|)ewYssgF}hB!?h|#6QGE@c%R+tFYX9l}PM8&v zoViQuFIk2d(YO6ZigMhFYAx3WcV!Xd%KT{A9}R5-hc}boojO!MKsZ~Drd2|)8J!8@ z6Y)&EtL6yXb|PpL$~nfu-U=Tq+qvu3J6t>8K3sCqiBj`s$l%_JWMhPCATzrQkhDCF zRTS8Dp6?q<+kUl`nWp@@xQ|y@TDCZ9%_}-X_vbabpOaBycILqJ zR;qOm#f|UwR$2@;G`gI==s0b1)ur*f#Yt7X=IX?R&O`%(B>;=p^zH3#LxxAWYlyPZ zweDMQNw%6XGn+(MFh8f@MC}zGA^>4-5*6Whf)uo^U*0Nxg#-=*nR`07ackT4F7{s7 z{EQrIc;Bqr;?+(9Sz)~j5R9E)0bTX)Mmq*ENUaoTougMCfqu1 z8PpIg!d~)t6?U6!5fd~wuFl?Ot+4B13^5<)VL;gHT5l1K9RsZxv^SU|{~oGxF$~+g zS(~-uvHCu}5uB$ks}A`QLoR0g69P?fgh=%3a3yhyiID0%hc4rjhtk|6-VMt)6oI1j z$WFtYwTY{(ej*4+gSQ<*FtJ}5-?$EIETxzsN1pCpke)dOX=gLs+~_RTyuXP4Suc!g z3v1b^@vIqjYPVT8b+FIm4fxc)AmtAti%?hVkja2sUMD)XP0k86UFOUwXB8ffKOzdo zE+~{eNf!-o-roFb4{d597)`yW%`)D-ZzKmo_zjZqPIS%)UbVzcObv!D()=zY;;wB> zGta4ExYLI}sdSuT=lGFd!Hlf=xir6Wh#s`@N%WR7qeyleHJC?@Sy+hK1EAa!z6;HX z$gYbCno+Okap$5Y)HvwvWbri-jq+d!!-tJCyB@8-_AWS>NMOUfIOw;>o&QDTigLDs zWPW&Zv0!lSi{V(RuEr(?nc&agn#k>|tE(NNzpBlB%ILtMG+;99E<{UMH*&ck(F8OR znfJ70`S^3&_w*tU&dLfr$9iF1IURrLg{8(&wt~${n^xy8j{pAo;7Y+wh2B^kW=_xA zdinrrDqn@Oss7Q^p?{+>pB0}D<@dmxr@>@c@cz=#egfhoH>`mmXs3nA5P^u=B?sip z{d-u(OT4^X@3nW{X9&)gnK|8H9M2^46zjk*Pwl?NV&UAFq~#2WKVWxGgEJbJ=x%*~ z4=wg!+w{|IT~NdxyW}s6+En zpj4dYWk8H~U~g!`d=L54%J{%q3ztdzF*OjIt%>^&SYgkTb$0RMRethW)c75JmyW&M zhl~0w{pz;RpeI3xk4LaWkH1Zdze#~&yb9t}qFVyS_CNjC)@q{(;z zK}o9=aV~)~!1BaWiZR%J)zjI*_tlGMK!VmCz4hZ8)EvpkQRM&#HnlIox8c zxR8-hZ)9+wmP zmrgey)r@Q?H@wty`m>((7Jiq|y^0TkoMxs6_5`mV>*w{w2()CKoB;a@*Y9bPGK>}k zBq+J>@2;#m@ryv3*;$pd;(mzI%FDPtz~rf0FFD$X`Q?F$-ca_o*x5}tE+;68yE$so zO5e)63?kBR#;XNcx*tPPmEcPLHar?g1PWT6T%G+kY^(1B!C zkM;d+^=#}^UT{RK>D3bpyVjBGy+^&`>P-9x=R`OKBjT`(%7JYG(uve^Asi8+l{G!E*=uxsZvwdh1Bg1wPzi!Sdc|lGoQ&=aT@l{O zkL{hjz<8H!d`X(51i+N&_$2{Wm740|g&yNY4%!uz++r%?Eu(Doh|G#olzGlD_97>J zh6-y>^wD&Fmb)({)DG|S%RhrE|6s)ZHyq1!wEwLeJss^|CdvN+s{F4km4CP2z@NkZ zg{=N>L6yJF^ndd@(*EI`{1=o^eM+mA7{hR1_T@W0r>fc2$78rE7!@LDM4rIv16>?_ zPUHQUu`)t*LL|H_ou4@Aa_gMTGkGFsAk_eq)-5e9B`@hMZ!B3JpF;HG2Tt_m`UojK zTAsHBi4)9amf>@}-9wy6aHp88LD)3+tSH6h6_(ET(f)BC?-AULS2bPNNA^b*`&5 zHw%0f+mB(4gtfQ`*zDX_jX5{4EMAZFuRg^veCm^*Tu;k{I2a4Y%X1Ni-OM$PCB&aK zK1>+OZmtACm1SJB_#%UT-og8eXN8XI6(7r<@uJPT35m#`AkJaI``DsEy2h5y))LUQrce`BaW8qjvnIlMw_M`~0P`z;&k@E40_JmN-#uiHb6fg% z3s%s{V^M1%DBhl)&=9wS&kUGPi1MU=k}j9o^JbZ)lD_B)WufI#M@~C^Ol_ENBKzi& zTnTF~B4QHjLx9@k92_dCwHV|^DQQ4$rL2+lL%8U+R!3_CB%(@kY1yMuj{|@Bl&_`b5%F8;3!Ui!ODwY2B*aPT)M?0-I zi0I}nz-Gxn2cO%}oGsVTjxUCrF~^AYg77O`xV3--?HQD-@}}>(Mg3y;D0NoUvJWB4 znNRdAmMZsPvS&N*NA{E9HCkElR@Y5~Mr9It!^WC<=3;m_o^D<}GVqLsEw>2LX$)a+ zaI@;8$uLwI?KS$(IjXMY#v;gA=OgEiqQ=Rn&Ia;^Ha+EMG7kA$#u+8eb$8R-(HAY6 zLpVG`&gBOrNV(3D*}D4T!aI8b>2oBaB&SgnmP!owGJ&nHhB49_W!lBK(nWn1w_y2` zSz;uco4UIY*%M1Byhl^b${vEG?`vrK+OXv@qMHWd9VD^JoZOr~4s>3xg34l4AyIJd z=DgA4g?$}g833^-Y$kl=wZNheF7w^GC&;muG=*^Tj2TL*2^2$#IR%mU_0VZt;mfrA zyp=Q63B6Rp`gDfDu^5p=lToDz+hTi{R|9gx!R}z+<`9v8VAqMD zMHUuOyu{|p4ZF0dd=89cQaD1I*oT82;%wX=bsSF1DF>-LtTmnZ+sro;GCPJwav=?^ zJn%4iq}j1r*hMQ#iB!&Nb}{7I+Sw#^^-@uZ=RDzYBc9R=HB-W`j^A2WaaET@zS(K0 zj0;-$K>D~_vclpOy=r_ec)m&PHL!?MFvC6r>%#(R23uJ!%@=T*SL=j1#7t%tsj6fu ze58KWE28jk!hJ@5r-XokUgSBJLGTJ(fRuW~R}YJ`{O4`6Y?y^iWdYF)S^a^g~97ych68k=y&qpTTEj~+}dQ*YkM&~QS<^K{4(L_8D z7@D{+#O|hHgIM~lqFT(rh3u0DNLzf(fM-TyS(cMTVgyMhf&646bFUMEvr4o&6Hr8=;`u)X=!tFehpnpB2^Kr-?BEG z!6nZrRZm)4(sIH{laf`ytdNjWy+blu50W7JhF)nLFCsU09twpvxRVyx=pw^hD^KVd zdMrF?gukJu27cJPp1@kP&_@?G}r?pH8$sY}8gERLcIJiF!LGn?p?@!GI zXh5Gw%xFSCd%G}3s&l09&*Q;AvuWF}NaL$UU8DN3!#@Wz6|4=DkCA3~i1^L3;-633 zdNXTJE^AIW3l3`A1{`v_A;O($U@grJl#?^6cTD;BVzv)SL%>j)d;*ue56_BCmM}>V+VrSP=5*{2=y?5oQ(ewW)}a1CJy&%kxWj ztZ2ifQd={vCqxs3@IsH0tydo3mD6D-@>O6d$7LwO+7sy<+fIXq1i!NDb2uo^w-c`= z!51|xW4iKic<|C`23e@*c`Y4`FylJt8zCzSB0JO6GIei**@L#xbY?nkq@jwoJ zU#AqeneZ&u|NG&BA|TBFL)=>hM-nAVqEd^QnVFfH8C%SZEw!M<%*@Qp++t>CrWP}n zSSqPSPj_Z__U_uQ+1!24?0p@x{HV-|tU7T#!oz(eRm3YsUWSw0&(!ZWHy1~n6+5iv zPcf=oW^V4);#Qd#d8dH;=Zk2=##5g~#WY+hmc);2v*)yq=$K*|^O4LuBVPx0L3cm; z46}om0CelU^uC=NbXPfB&3G&vyd5HFE20QB=#<7=^tyvGFgtzL53Yyue5o>798Q%A z7f6-70Z8L_NdECaSN%KEW$WDNVik|d7o1#`$t>}O4c6}!`-^5~3(;vXmwP`uZMD?v zCQ4!QR*~p94Mz}isH3ipXMZk>=IVdhPb4KgmRWg!pcrVGIPULQQ5g)WC+fw0ZXbMi zr-#)TYa+&H)h%vE;n_phQ|T|+TtI7gt~i3q0O3L$1?O+GpxWMV{)7%n+We6X*;z(m zAfI~d-9b%-5EXWT4R4fdg8&ASe_CG)wlpuE@P~L0kU)-ESk%poFU0fVj?*GOOv|C2 z+N)mYrkaG^+as%jiYt?45nd0 z!-stQC(n6A^zI|P1b2m{t%jh+;ca!b=5iNpmTRYbZjy|q_(}n zQ$VZnsr~UowQ+|lo#J`rg~_^jG)oxK>d6#Kb*I}93E87LjE~_dejYU!sIyz0HiH0P zy9@B$&SZj}NAc;Ae&N?1l~I)L^PaXBzK&(uMJdQ{_A>`;EeP?8fY-Lzx}5CL%o<@c zi!PCbHh{{8<#XgK<%;m4Q3KnO#gKt&g7^tyH@APSySP< zuV?8VaaPpfXC@Gku?bMmEWZnHi%2v@@hu$+i(JEO73z9qKH-&|HvOww_LpQ}NDeDHT)V(^Kh(kE zY>7(fZcj-5R24XfRikm|s3p}4(n;^?skM|=QKe_#gH)xgN#8-G-W0W7Zt>g?xVFC+ z0g_qrUIEBH%$kSQ^lak7VP6}#-=yFVHdw>Ed$?kiB+B8p9k19CAtBiWk;jV-IMC zDdca68Oqob9cVjzoRKss<&=Mh4-+yedXU^_TQQr2vuX7b4la(D=I>3HkJqk;W*}5- zoT?9Y(0Hx8?@lHLRD!N%_5X%^7%72p)CXS1u0qsLB9@tYE6#j+{L(&Pw2UdJxFXkc z>?NVI`a19X|8$~zUx0(2!TtQn!{DR;Q#0yY;704hJ63(#_{J84BQR6`vocL7>X+m+ zOCt}#Ye`2pTs58kx%erZKCNfUaB5ju8nxH(Bb1}UoLQnQI^*2v7Nc+-rv0x1Ax30< z_^P}j)Cu`($Y;t6ciTNfeg+=B&@N;hlK>l-0U!iI$1Wa}dTyp|SkMo?^8^&^*$N&T;DlbZ&o*>t!fp@RV8lg zl6VVX%mCMsNg=KKakrp$nC*<|{dE$FUjs*BNsbNxkiGs8>d7GCJ>GzUPj^s&TICTT z=mELT9U*9y$mK909wcYtH&YPZ-frD#mIl`<^0w~C)OyRh?JDi7ExISb@@b>R0lSXD z4+SQWGK{N84G+*^NoC$LiQTDRE? zn3?0%iLOj*>x%u_P#}zzqbQ66(k>^Y>==Zvz5zqdqCL<0Kt>K0z}S)la<*z$23zJ= zL<-xbh5{#I!T2Y9&rWXFir!f8$*2qj5^Ew#oaYu zsu-?2e2a05P4k3gYV=5BQ@eOnUZ`*8UAzeiECqSC;I;uHgjxi;oGp?(k|vWg{%s9$ zEa6(6qF$j+c!PTlA1rBdTASC5;kra!vphYXW2(V$Jgof5HN!*g13H1#z4pHYZU0km z`@aC%{wb^ZpIh;)|0;R^AM4xy3AFvQZ~q_Q?4MxmpNQ}O4y^sB&Nu?oe+FwD%&h+< z(8R^Y^AFI(#liCLfTsVcH}L;avHkyzU^wePUcvtYpjglPKbT@W%2sx`S!R!jXkDe$vrUvV>TX}i3zV${+tg51@<^AD2cB-KS*1bIOWV_s02>TWO0VMzl60$?dbG+ zscDYrVvYtA=ZR%ADDN|jc&2cFb^ zAUV=4Vl2WGEWU>-I8G^vur6aZu<&X0@}iwm%#HFd{!+GWMKa73)qF z5^jzY16@*I>?g<=C%Q2-@D4~T=e0tJ4T&gC!QPM2dJXj0b^DR;3U>-NDdPquzey zyYh>2>TLXce*Ao`rq_5Tg~U@zS*ejW3)A4UcD8!5GFhj4eaY+c{WzcfY1^3S&sFkr z5WR!nqr+!i+inI9D_g`B7XT)MiX2xxZ!8+3tt%jf*XT?zr4npI$K2;Kw2&VQKMUf5 zja}qkU8+TU3x%j-f_*$OW7%*#(rB4xt$ZGRS`k|uEWLe!vf`rE&j-5f=cAfD8)=jG z({`xRP4E5Got`6tD2GTom4NiF^hFg3(nk#%0#*^Gi zcC62u99=SN8sUi|XfgjdM+ ze%O^s$bbU5Q_<4ZK)Z(p*hPT5g?-Aq`W6a*#H@uj*E7zPdEv%aDPa15u=R=b@^1;i z!ZOVQ57~Mz9A70jD@F1Z$mQ^OYcKHLQQFWvGMlc=f0*c|P$0p&==^I>K3$|7H>6=7 zr#X2#o0J4B0L|L{TK~v%{n_aMn z1C~O>mZ%7laqi#09q0v`YQ$Ym5mlU>YDQviGRaI)*fJBja$~7Bx>zd8|KJOYMZEHO z?9!(BDAPlp@Z%)GNCxDHrxDfF@hjrA3xBlXK=1;chk#hmyu(7N{GzZd?T>-;O!TTm zRoL<4Cyc&$ZJOL~^M@_(KRF7pv!vZUd|kZWpU7~Rs0ZrkhvZ44QHtSZHchPTOtfyj zaZ49rk#;Z#h6XSgTC79df)?XTID2U-ya1ymeL ztY{6!61=%K_t_>P_Zq&yDDZ&2#U>80%0AXfGR}=ViFg!p?eh7p5zjeqAc)}4llxkT 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%0A0uRyHT|cSkgmiMmf`O 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 ra>%YFi_~zu->DPd^oT@D0Mh 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 z zG6-QN%zP1=EC4ozGa+7Z?jw0@RMILSgbB@mu+if>rw|7{p!Qldpqz z^1Wk@kncTM<(FWxEd{H*3{18qFy$o#tMnO6c?rQPeFl@<38q-EVAT!`rdY6Gl|F+h z77R?WV8JR6KsaSb>VBl~r7+c~<+sX*4OV#om}0?#RXZ@4YA}JR22(Ke01A@nj8lf$ zm}*||Jv{Q7uVRyFhsLjVNDUQBkse{PgJ2@#6;QQPY%=Xs6A(;qlY_|)5^U0k>>#w0 zT^>xesKKPO2b=UEot<`1%#(5Xi@xAqonYq4B(=I72CTZKuFrtk5y!LIsh%qB5Et}|~P8Kdy8+R5ID>00rL!6tpE z_9yKyV5twi6GuA&bJb4vPTI-;21aIwekxi(D#T6G$uWT=ZdP0 zhwovzsJ}%QGA3Wq1>tqlQ;4{${wUhXjs(W5D(Y7?6>0aV+GD}23xP=&VtA82tP9~? znDjyPo5qI+U6}kDxW>@NYdctqFe2E&)uRPd9CENpABv@;o$_M9o$N?pvcU%veI_ES+Tdx2=&td}29Fz7HuzxPH_CGAoDxf?{h&y^ z_JfdwD)ZyDmo5%UmhdMDwe@JNiW=s%wg`sPaKF zh{W^2%#Uz)YaWm_%>$7}^B~tq^T1c6{lHhG{ctQDZg$1XgDFQlnAa2+y~i?HQ+!1p zpLKRZqNTGFkszHNOgcN<$oobS9IXK&we}KU(FBvO3rmr%OUSm*1|}na&$2v{vhOs- z33RUT6-_YN9tef-e&8$8+T$zIx;U1OWH8I}M9}+;WA+x!A(l>OoLnQFai*&?p2WL) z-_EHTCrovd88cb#YA0V2?Nq}mSoPz8>1~8yHP0d8CDs1{rneD-`HZ6`jPg7AXn`N`jPen{Yd*kaHIBv&=1c8r;_G@QesRtOFTf;H-=Y8 zZ}kMLek(BLbp(^m5_7g`6Jnj_fl8-&@GPU|fn!|z5hrtg?A2cQCzw6ijwt+y>Q8M>~vZW&IGT zMT=ANtnLR`jT_;6dOI$d=p@;{qLYMpiQa=r7QodZIvMvzJqM)Jh)$B_B{~TvI>~cD zqLXQdO@88FJ{wt>dJfWw zFy(ddJ>_)-)15}$k}LowS_~KT`E&g``cND#nB{x0NgwhP^IOZJV4ep@sM4z}fib-) z1?6P%>zZQjG-kPpYK)UUEH@FYH|fK26I(QyhkYG*480%Juk)Dg>!1qSq!0T#(8S#b z_3P9J_3Mn;*TGSf{0B7*HGU? z>nNdHc^(lR^4mY)(F3QAzMfrNy~gz3d!p~fSFsd`uY#Gcx_%wsQw~Bf z`H9h-Ww!t`eWqZp&Xw!eVbHgq7){cBP)yX{Q;s&@Q?0dN<^iPsYn>@tSY;YY)<{-{ zOx8Fa`cSPkFvZveGtD8C#B-a_PD0DnE=8y68Nz>LY(hIH{-cyD)xDhfkI3ZqT_ya* zzjcfa6*Mg8AWl|UlrV0|r%8QvI~+b*1IO6#EQRkX{v(|OK4(nviM+r=kbmtL{b+(s z`moN4W@>tXe&p|2KO!Q3(ue9>FlNj0V3R(Szr}A!K+=5m&RH}U&jbIFev6fMg1HZ< zyW34@C#ss;DYl#ODYhF-vE5*b?G85SL+{GaPVdTq*{)1#f%H`{*_E-POMV6u55W8^ z8)!_@RqjOOk`0s1nAlhz>{Jkdz9!Gnp)C~q)!15ot6U>6z4snW zybKGsco{oh<6ikK0k`Fz^BdjJ#?sqIjJtKO3*cqW*1CNkZmGl9ttf|pZv5K0cn zUy(8dI`;@-6HIy;DuncDGzi&Rz+~Ixl>ynvz+@Ll%1`Cflu3|`4ko^za5(=~wHPo6 z+V`HPj&x_J#bC_7cTThTK50tg$$U<>zI0J}Hz9oD`(WbxDK%bse4b~TVA2Ed;7Shw zlO90StN2XH^;MY=O!keq+H@Bnlg5<8fmM%U+4UZgdRXm9Xj`V8nEJGD_>Z(Mm|8?% zC;{QQVYJj(C^l3v!UgnO*Qz6VLAC0@RI4tS?~!ZO(av%w$Is`_wd(k-;~6MJU-Nrt zr@R<2)v62TeZ!=xeRHikeydt_NG}t9gd0|SnMWS#evsay{lFZdy@XYW7UP=G`NIsX zc})CAlvgp`NMUh}&++nDw0z(2A9)_iHDawWgQ^eJw;*ki0GQg2!nLBEm=1N1C~2a3 zU=GuMkZYv+l&^ds#D`jO{h+Y*&Zq=P|DO^b2Sdmh%0@Yc%jf~iV= z7buok=XMS_8B-tpS`yXA=LB&LsXL|CVG>jm7>WLfK7= z@gI47);aSGhsUQJZPv=MOkkqLL}`f@Gh6XcF!4}C2Aw}J=^tq9lRli+5p!(aOT3}d zKfpxqv8amP6HzXD4<>q#n4>ceCVG$bEP9W*Sh6UXXcOKt(Izn2pvYVoZ6bS6v>>`mhZYvDjw=gJR`dc&&Uk{Qgn0AbmEtf?89I z8JY)%0nGy?yV5$ucJVDR@hw(Ld<#r`3zvxL2I{KL3&N=9;aH}WbMrj(-ULQC9xp8P z8TCVY@*^0H_5-4=y8y8hy@GIP9$Z4rg9AOmyl*VD+gZLR{m68K{3DOgvM9ft%)_xv zc>N}QSZ+cpp3K8?6Dpn0ANfZ*e~5qDH*}^dGvF@s`6FFO`$n3z)&;ka))|#u=Zb6Y zu~-%*&C7Qhok`~koynNxCZ4VG`J;ZF=Vm`AQP;AepeFll@Zg=+1=VkY$-aR!B$+19 zYUwVJu3^k_6Rl)>z(eYLMCzgT4Rzm`ZS|zsN&dqcCVdN6s%-UOitVAojASz~pK;2Z z=v)zcsdJBc*O>jBTua$ds9Gxj-c6Z&jy~l0WB@ zK2*n_c2t7Yd>sdx=lE(nLLAfw)nuesfJp`+d|dJ=m}E!HgyJ({gOx@kHP@KlGNqi6 z-ZBN#Tc#;{Bwhw4`IL}%>E~e5k1%aYmI~{x^Z-nDOrAItzXTJ%B$PzFj8i2Y3{3oz zFn#e$FwX;5R;9b7JA18Qmz5?`6=yOJ%kqyC)LYIZ<)y?gQ*x@_%cK_QoF)jeevd1y zc@T(KX*;hyNtVKUE?Ejpv@;<)ng{w(rB^AF<#||^$HeV3P9TNnVOgG3bDux-Bb`6= zqsl7?Gm@MGCRskEy)+N>Bkc#yG3^JACd~tHrSoQqH7-Yfw8Os|UZdi$ zqtA6s(T^sW?8-!fnckxxX};)3#(0@g{qhj1Fz3idUG-WyF9GdWwnIv7$mUDAa#mY=D|rY^@(`gFl9jsM zm2i+sJHaH^!Qv&?oe_ptX)Ks{H|3keyTQb}kuasJVU-u}1{3clghhGIR|Xg2jO5EpKAP4R7f>`!BpcnnEOD?Rv(1I8dHs5 zzDJT+9UtP5&Kmhg6U=9Kl7ECZe$t11@2Ccn3Be>2^6Hm)G9;(Ugm?(dFJUTG27xk} zmqF}w?jamnE7U=)GY4AqnZqHv%i>qrmQ*9t&VY4~D1+g7=-tg!2R1!8(>u_#vn-E` zO15<{=?e_SvJ}J9eh?088n<{z29Is5Msn-hkwAL@t_WIsLmPf49TH&$K ze0g@=<8zKNX@NfD7tWKTyo%2_i2;xc(ZhW65=p1IdnH>VvdJ$&O&6e}wN! zKE*3O>BBLLNaLDEOgHte;_jC02&TIVS(D5~Mu_fe(l6^>CFEFl6-;*(ua)j9rX`&} zFzJ%G=%q`7>8?VGb^a(Xs`HnUqxDP@Carq}rh5c87jMKICLIh+I#|LAw0;x)2=*a5 zj(1-=Skhc8okXjU4hAM23~E2=!#+98dY%XRk>-JZWX!cINyC*KkPn6PlN^!o4V?p)pwcEhS&}2bB#)C$EP0#|ddYuazDJM)t-&O|4)dwx@r0cC zw%A2uamhLnRhQ5P>nk05x9pfcoCXTrY?+W2QN{PISg0&&DRS6XT}ZL57UkwuIM3wk1+l z{mp&Sw5KPM_AV^AD{~94x%3!bKW);(@i@g1lK#w5uaf4i}PHnWe@}e z-CvlkG3Oqle#l0KcSbfcFwY|wz0QMcIl;W=*-ZTw#Zj2+{-Pe4&yatlyMK-&Lf<2i zzG6J7QuQOcFrUHvqPdZOqE z*%`om{?LyqPYDa1V3PUS4cP?2B=b{IM>0Q}uIMY1LNa*v216ccp$x{1<+NgaazE1lVCz{5B!X?b{bxHs5Jm56?t!pV0H6r;B zOg0a)=)I;fg4RAT9vZU^H0}krvkeq6+q8-JI?Wd&zyy~0LT56Bx9(ern6L?t&*f4(+dwJ1AbA|j z@;LEzI`{aGCYWpmG?P6dt|$GL7Z`Mp2!EbnvK8RPwyZ*>3IEnLgm|gZyaNA`&OHxM zPcX|v_>XkP(T^sW=>cTY?f7xo%ajSMbOTH>7glP;)36<)IbhO{*j>r|V3PS!e#m6eja}91dV3KpNMu=ZhXjXDgD@a?{3K6c#2bgZeld-^0`f#pH3Sa7; zqaW#>qaW$cpdV@92sy620x~H%C$4wRgR8IgBUPc&Q=}5nPB76micXp4pdWc2j;~9Y zwCCa2WXxecf0%PL5Bx`(2mYf<+b{4RX+O}9v>&i(%>(^N`!UHsqI$OMlL>LqexM(D z9tgqpOrjro9_B|>Pc*L}k=gTb%wiI3wI4}Vtz$ty`v2Oxd!5UYBRj)a(Dxu`>|wLI zs;dElmLx!y44Hxq&U6tNKo&(q(ADdWk<8}F}ZG(a*UE}_-&y; zG4mOIE0MzI%x6ftJjO6*F-qt>a-%zjT)xxx7(*^!Ch=no`+?@&c&wE*##I@*Ryopn z=eE6AO?memxg8l5bBrTNJZGI@o`T01_F*Y%@EF5BEM-_f=J7b^Q5xUxan5V`<8zO5-V6Tm zxf%)d?}5!c?zuhZA8h7v*q-yl_MCsP#~6Fg@3}qahwV8(Y|r@zdyKK?{GQu$e%PM# z!}gqiFvlp=#+sH6BDUwezt@$gKDT%7-gC=4KiK#l4vQrHVUHiS9O;8iF2rH$L;hfo zF$(ZAM$tgA;bHgpwujXR8~z+tYcKv@mr6Y_$N2N+eBR&NoX^9yPvv0+1a=;^6BOH= z&-?Ax6Cbwz&cjO9V2lzUz_w52{dW6Q9v1uF-`3yzfsLQ0-(G`xep|D4us=V>*nUg* z_cC7iZH9o@_-XF9+i&Tx?YH#7#%4Nf`z?L2#~2%byXUrk>w}FiD69saf8@^}Y$g7GV~nkRz2~-m>#(igI&AB=KG@iohn3v3-z{56Y;B?YZPz;T z+l>|V9I>JgHh!AJx{zT1UbfH!8$Zqcc6%{=u*VqNi{YNzUJM^>Y`ViXcj1GLEq>VE zyLnhqdgivd-S=Fc0iNp;kHu1rVq3q}-z!#x?x_ItflUs^{kFg^<8I%8dv5y%9Jc*v zKiFf8lI|E|a~JNnd-vX9TfgPHud#8p`YxKd!H+R_j=04c?v<_R}++pjR`(WdL zIc$A%AM7#4#@X+=?G5z79%Gc)x9eQ1IfIBb0$hpo@!gFVJrpT|A7K99rp4wS<-5BY!iv-pEeu5(!Q z6up|O^np1>G|cC=hU3O4sbjxyZLuHNwrG>Q!t9!2Pf>=dA`_9=y59~2Uj(L8&{i^O=wx91| z>+|?v*mSjpz^1!a5v%hGZ((ECp$D5T>@mjrJnmiA=Mk1Iw0bbsK7Q|eu41TNmu#U2 zhD}#U?lH#pR=P3v9__<6_v3?M)BT(+wDwz>0oZh5*mRx1iHqMD+k5t~?L8ZoEyTE` z6^L!`+57GGo;_@P&mLCrY1ckmNUTokJh#0p?(c0q_F;8);kVn%;-1@H79R|ot`0re zbXhLgjbYeyWf)>NhB-!gb88QlxiInl-mkdO>Z5K+!fp)1raPC1zpd-&u2pd%vAUY@ zT$RyaU9=*GO;?s6cH__F&E0&rFI`x+5MvY<65Bk5`|ai_d@yXfB1+hFVc2wax1IRb z{k_do_+XDQHc#Q6+dPHCHc#QOt#kcg*mSMH#NO|@%~J@=7D6|cH}}9CBU{MlHc#Qk z*dA(!Z7+)thTT|tHa1-tHeFFGY`Qw>VK;_7#wcNG_im*M=rZ~)^v>BrJa+}k`}eNc zSIjZ8g?w)B(!FuNJjUqO1IE~#{eHVK z^{^|Z*mt?Y1h9?&-fv3?;knI^z2~;a^ap#4u{ALF+}6N+Fl@Rg4K`gEHeH#1lhbj3 zZ}Ve6*kg>%kGLi7ol19c(37dF)2uG7PR4MThH!O`c^BWvJ};&Eo+N3xkK< z^*zf~!r(7u)x(j(;1+eag}-E0;P(zg@8^w$TZF+auKfXfs1`jB44quH8oDeDefj4m zvN|tQ2wfJ2o+)~SE(=2kTuIXEfV(E?f#GxOMi6vB81mp=Z{)AVRl{2w7 zN`HP}%AB^r@|Qw}*!yA1&aNZi{VMkpd&th(BRTHYvp2WW4p*myDRbJo$eb>@L6(%t zB)0v&Zrr`w>?gES52X`5S7~HnwraY+OKWlZ(^Z9!vf{NkiudSqKwZ`JC zbFDx)tEI+2F!(_?uXt9w_m#CTl|-xzZRWAPsapGM47< zW8`Q6Gf$zvre4kLVV%48l{KxooLGf6jJvgNw=P@jcG%XseK6v%=e}a?ui?^;Tk|3@ zZT8AYA7gX_HGfZ=y&Ge(*;60HVZ+qjx!jP&l?#b!vtOC3&u!oH)~^~OzEPzfe4~oK z+2a*jvj({e7&kZJ19Ki-t>|-Gd)+(d3ir9~KY7oUl)B$2m#If zeP$1P@XqLvV{D(<@{TUUWZor=d6W^uJn{@PMi}#`8}eg}?Xht0VxGcLINxvYjJV&{ zftPuFd(6W;g(6w_o5Ik^b4MX=>4=lcEFW{ ztlr8ig&h#~7-M@Zw9fQc_+W60!VCDc!mu^U3c}XN@`JyGIR-UEy-TWR^=egtQ*Ut3 znWqqjJyS>ojuiG7!#stedHA%#uxF|g!QT{yzbW$r9##cDJS@yHI)tmE3hg*X8)5ZU zr9t>y@$n!W^U2 zX~wMtdiD92T;{7A%g~(qVH2 z{T2K95i82grOtcg%~jE=9RFT|@qY8%5zMV7Db8c>$8PPvn@^LPQ8r~ta^5O;@m(Hk z`u(w{x$k+uTqt4>E?@CA--8}>&8goeOlID_tI57smc8l>|O?ZJG9)SBeZDDnkj*6$T%Qg1}Y6*yAw< z&fR40%u&2mI|}=)62K#1Vff*t=&d3_cW7fe(ej>uPh1UX6C*Zx6%Y znYaBh#@1h!tCtgg&uUT5#~53GdA~Im@yh7^d*&iWl^I_Vt+xpAqdxj6snTr_Zhv(F_8=ez}Z#Z^I^-QrM=5ZHu@B7^)*J8@&?4#v0WyvVlvX7WY_7U^w0$b)$iju!A z7{mJ&*Z|x6u{$%l^jYVx580W@^ZoXI?EYS{BKAwK$2yl*#X8^Rar@4RF!oEO6wEF6 zB=fk-w)lJ2x>b#h@3rtHd@T$vRTp*qaAESC#I9?w{b_Ffwm(f+;)QwCqnkCT#ECVy z%O!RVQlWgyTx9GudUW5r`~uIu*7?jWH?Y|D_PW2fy;Kg{UMh!eZ?6xg{L8J!9=gWK zy9PBJ=KXSCJuv4{d9BZtXwDec33s9&V^mnlZ@Xz;41Y=1K5?rsY?8ayjeU^nVIS0( zj(t#F5oh|5OV_PS^6W=lQEAP}rg|*!e%I7#*Pyy0-mki%2S)Bz=>qQYdMq%v#G07( z2G^p;=d8WHt034L< z*f4w~u zSDWnl?K(*GY8bq(6OI2WuRK1Au*VoRt{wSOx24Az`a!yS1s}y-$FlOEN=9U782lib z2tO_J7k(OsALMI+HDpOaDzS{5oo~StWJ!StG4qg%a^h==+M)yMsE8jV3_nQO5%BD5 zJ%-HrvVG&*SJ_9)k;2e3Wv}6*2!jJh$Kg_?bHU}q;PPLykB|}BM`CjM5O{VNd@T3gr%T8*2=uEZcKEo61>c#KpB zUE>7L$%`ZhDb(gXtbhBOedIihb+q*A?(8Gy@z6(6TfRrsjD1xu9p9tyAoHl?k?)ax z#5}T(_#RD-?~#4PJh;Osc@-UZ9uiE{x4O7e8X1iyyJh^<7|{t2JUC*HC}gFZ;-Om@i*exMw>1$oW2W{KGyf zoUD$|KH~3XA3ZR6M12>0E^@K+t=32^Z#~b|qz9}bPqD`s6(90kg?wU4W|+HHxhNi(W0bh*bA34eo^>%*Q9Z_x%cnga zW60%;s6XbhcjUItmt@2H8Pm+2{g{V-`ER9L`1g!y)^6B&6l7j~S@}6!zK9oGJ`66O z*9`s=hJP*E3Gb|{DcmCLF@_weT?$94q6`08sZns-OP4~%*24aQImS83_FJCANz8fV z^jMu&1+Qz>eXfpCHUwj2ID+NT5yQWBr83B-L@fI%dc}UJ@51t{JbiHVS`)y-!mzEX z8dG1Ud|0alxtJWOk{|4VvfS{4ROyTT7N$;)`mpv*L`*+O<`KS@Fm-Z0==hfPT@cd` z@~wW{eDg%MSV`}@H*&{{8PhD}rM~R)YII&l@PT17<;BEDao0GpCsQ+G580UunY~*- zZn1~#q#t)On||CMOxf8{;C$4Nn|Dq%itSwnH-^2bO0#qx(Ld&vIqkdHr?(O|WlqNz zne)h{i(M&my5^BRl&hY7@W`br%Uqe03xIi)ONY!UmyUPN^~#y)z9QeHY=b=u9WB-a++#a&P5bJk<07Vy)Ys@QYXU&HrW`T;S% zFyujQIAVNZ_zBBK#~0Ks>G*fUi1F3A1D+Fx%(+%Wdsfpj_?yD;Ayf9Un@bTzn{DaKbV) z(PdY*&H1g?NX(w7T^k7}%rgQf3`1Z3TCLIQ%Us;(%P@3VW##IbN3Bs`Ts_kguqO*R zvL_4PJuvl5xpY2fuf$yS>Y1RZ8hX%xpdB>7v%3{MS$t=tbE3^TCB)<7}IQrW0PcU5z`EV zul<^`WgaOm=8+O$9!-PqQLKpX(LrY(9WK7dqt>WQSan{D#rLQ$o%1lJnaQLafAr{% z9Vq{*HDVsQRGCNVW~{-Z)~HjY9Dmdr)pbi5`=~W)YS^n`*kD-SWjFkr+cGNo9kk)zcNS}qY5$fZy35U7XZGDFnk&90_?m(spNEoVS{B2 zBJabn!HV><|GsA*t!xT=jPd<3Mi&py-l$a2F|Nt^K9_wYreD4`ES#el++&Q$Eo0aZ zIadqkC=B~3k%R3LhV4=qn>}8e7&w0zGPW)@aQ-lKW4DkyMrxY%%RUmbUsa;hF|v>R zt@-k`yTLwcXE=}SqtzeXB8FX&OAF3_ZmvC-iFUYh7;?OH0eEce6geJ-9M5}-91nB< z)x3j!Un30mUri;L2lu(wpfPdk-?Lv;6)T?AS^@i8V;$`@IA+!C_!)8?;%5lM2apQI zJ`Zzm6WAg$l$BQ5N zoN?l=g@24;oVcC)7{fSmw1hZuX)TUXstfN|{OEx>kK#u@R~71hqf0UbGfte>0uFT_-5_WC{_}RO;$Jx8}VqotU#AWXm5M}RP zz>#qu`Y6{N->8&NzR{y^cQ@avD{|>O--kY`7X!~d`gYgB1zz_(rzLBZ1CX`KnI=}? ze%B=@k66{9JXiGySedF|WwD6K>$=YsS&}it_b7fOW{%DG;z#_wBZ~Vji4wkV1cvXy zeXhxe6f0~0-Pn7r;M5h_N336hh_&jVI}iI?Wa6kRN|AFO`anD7>Wbn=?3dz4?2Y0_ zymRz`b*{BK>s*N#?^jx+n0d5iswp?_g7N*n#g85szJg9AzN#?4+g)zV81}cwl*Asq zQZ3iYnz(K=ge!;PkEl%`e*WL;Rkv#&h99ZVhMzxEm;HCw_3r+=@-oM;S6$vU_FouW zrPhY*zqSzjFO2<{w+Y!423JW!z*Vj!j(OC+Zue;!<>;+2_FpH4{nxffZ-t?^ia6k_ z3S!>`v4caP^T zURjd&1^rv-9sL_dT%)WY^luox!_t~PM}<*}!Z#OxVzZatqfN2Cl*?AqA4GAFvbI|#C)Tc9IaC?|Sow9Fh4Skjn7TWv;&a|>bnT_s_vP0;FlFcCUZWyo%IC+u zMx9E0X<^iaM6Za6gvk#c_ZpQ!Pb@1;`TVetikuLmkJ(}$b@PuLB>RZ7@VMhOny3ya ze#BWQe)PcPImM4S9|eKL@?7lx>#+x>4tT_mVyEhv9Jid0>?8Jg_K}!12uU3E%;S#N zGOe6P&J5<3sC!_pRkcRWqY3Z&Wn6LIQt_OlBmMi^BhX;xf|UuOe2x&YHzF6zEk(^d z5<|=*MZ-K2+RP)N=sfIIS4U{iQSl?rM`1PRk>`SSu^(-cbN5Ek5BznPF}D2Ru+`mR z^sqW?^=eohY5(|sVe||+Z1qtX`QC@Ej16N=58E{jV@<=bj}BYe6h__qVe20%S-zmx z&bPFi2ez`Q-%|H}*vh{!`u~Md_kP&!jWF`P58E>xM*qJs>fR4q`4>jM_hBpl!s!1O z86w~Nu$6ydu&ko}*;=`6_hmr3c zM&8X~o>k*VS0%SHHjEsRF#7);wmdrw-_l{r<-_nTg;6VW*mB@7?mIbbIdB-hr7(O; zhbeQukk8O_^Rut*{E zfXnwBT>h}-*T&u|k-zfWNbbP<%{;e?X z-#W~5lzrqp$Ys|Yj<9U~o%7_2; z+Zz1vTk=4Ajy%vX`cxj~-pCE?JjkK%xAd?I>!o?WnlXTpL*H-7p%0^nRnB5^L=IcK zHjJ3uVREh#IN(>`iOKa_Vsc?Qp>}Q;@CNJBXRr>En4Bv*>2uhey$gAuVZ`JPlXDqA zx~g~gcusT9R!->$Cg;jA>T}qfjaze|U6+p51M?geKk_;985*OEZ^md7iOIQ&ANgE~ zc=Ow|`Nl7cbR;@>PWvb#w!Y1NOWk`IJ$}Q;uR9FRl@i!Gs-EM%jxh4;!qi7$8|&yf z^6L)6&byDkI-mzPW|Jk9v9{}%dGx^GDm}I_oBkg6bsPqFj76*upy#*`GK~8m!|Jxd zJJ(PZtO_47Z{=>?kT>?(vLros+)|YGtXAa(cPu2gv8VeQ>!Upk ze%j|)|LJ|A&HV_YhgBG{_ru_hY1Pfs?>YJ{g>k1@7?!D*qgM^`z z3)jL4&qcvG&y6l7m+$zZlWRYT-Y)|ZUrQLimMmR#av1hP(Jl1;xm7slg-ylugCug$ z$=5QI^IHSd2Zr9S0s);I27fLrj^57|gx(KB?itR@IF}W3gGD36Vl^vE3T27mm(MUIrWr=hkT8A7Ve0(~?>LuT-71#B z$~)@^xpaA-D`>-Sx%ahq)@H9&lX~BKU!x4%`+Arts&Sw}g&BL($N~hU;%$}pKT3Au=oks~>e4|8!82KPAGWj53uZ@QiBjizojsJ$YIEwq&Rj!81kT!739Iu?A=3QaP+Kc*xvZOdD+uTILaV>4ufOH8Q6#6Wlfo-kG@t?>rN1^+(;l>gA1Yte3YK{g%!R0++A45g%TdXSGsf_Qo|eUO7}aN=z=F$brijvWCm&rrDh6 zbKStRt0+{j=E_B1=AsZIKd~|Bw-iQh_hFAQ$WQFKZ_1n+wXrv%0(|pt-0j}qD}#5} zz9Crq8bWa{ui?`E_L>)g(T61sZ%i{689s_S;CNPZnLEZqAJx3W=k$Y=#{C$>e2`cP zF}^V6L9rraM3n1+;Rm_vD|}8apK5%JA(t;5U73@8guKc=5+k=e_awR9hdsuieyitN ztlb;A;Kk?}(r@V*lEdgBJFPW3_o=coYRj1^@n4Mo^8Gz})rA==ig7*0pua`GtyAx= zOVbsjS6#oQzx-j^J@%^WIeOK#`N&TUD{3?E7lwQ;f`Q!=hJ4OVjeIV03||XFK6f1p z@;Qv$nW!G}xl#)3o-jCJDMfI?FzlXd?X_pM6NsJ(bBsi%zm<1JPqBN#;DoUzeEOw9 z!3o3QgoOj(gkjh{cLnJ3gQ)Uj40&gr4$w1U@XjJO@Xk`V;GJRER)sL&onh#*yS9}5 zoQis2aN8_m!+G*ZNuQUu{F4D7~D3=1h>s3K_`b{ztw>gZX1TatXv44 zT#6j}G7Ozus0dvagucA%VL1y?fd_`Z>{f1cSr~ez5-0Rb9tGkCVd%168IB$XM=$Fd zJrher2ZW(#@(iN`!q5RpPT~foB4P)GVF$F#*wbOy0d>m34ro;TYhmb_O2n`O!mtCr z)T?fJXBlny*TS$h+8XK^d(|Zo=^GGcj#8Mq%wBc+ezHei**U$_I(% zhvBFBk~m#H8HUZ2h`<*aQ+|x`n`6{$cX?tJl;jKKlEE%3a|?fG7`~vYiXLNd2Tvhz z{hfuyvHilx7w9HL{7qqUi^3YqMe9WP7(@HAYzw(Xp93CILoKmFdb`IPR*c%=(g5^# z=K7Lbe6KMMV{~&aSP8dc@|R*oK3CI1eoO6e?`*6nO#TvW;_nqJdSLRGiqeroZF@0& zbEQnkUrLGgw-1g~iG%UBaHMOEyD~Nmj@0cl@UXDQ7}US@E^?$WI8vGC@USp=Sab*; zmWKx(7Umd5ELQH8B?AvT_p{IS)^i5CQUxBCG34`Yt>$>bt;RD{S?^JV*6i;4Gv99+>ASw;6ladyOug&^=xm z#_G^+cXp4b&e<=e%!(P;h{cjW6ows;xe7-Q^Bi@r5qqf85%$KTuIR#pK1a`*v_}!v z)d9I9#PrQ&V#962;I^f0!aKv@op%*6d#I2md!xP!V)D*3BYf?b>WbJyxl|t*{JDq? zzPT{RsP6)MtuQQmsB~&%$u;-i?{SUt!K`y_Z`vo6&m}j-VbgbVsC*Ai;tv)d9>9jufbfV6)T3dLepbc1^a#$`;ynsq{w7-1w{>?6-4$u@CCI@W9mFHF4p5lvW_d z-5e>}k}sJDeHVI;9%_f7yU$&>d!ux3Y?3f^cWDot)k}rg^IJ9?Ts}1jmk)!>mxYY( z4ufasVuWYM4v+_7aK|Ei@a#+9*uBwhsc_&_Hyk(&4pQl`W2B-OBe&?vrgjxFCk&ZW zdI`GwQcn23#ftbw_U+Cfwk9*L6nZs`vzjXxy?Uhpd(P{s!C5UO2EBS|GJB?DD(KZP z^lG#Ty;_MjdNmBan)?}@cjXIv&Z~Yy9^|P<9$aeAp7VA%@*oU(5Y>arUs?IegD`v) zxy<46S8~DLC{`pUmoFX3vzmRhI-pyx(cRHg&uT#e_C}OTjC&+5@(GtO3lA<|x|CrFB$FZgA8CX>kUfrf*)Mk7yIDRcOffYc~E*2@*tup zW{y(f6y-sE7x-=+nFogMuG_HkAmNFeOz4Qo?r^@xau1^<7|1?c052PwKo}w5*?fyZh}!ALWYVe3W+0TGh_ufw{-O z6{s6dQ>e{7-u2F`bK;bBj-HCyBcRkq_jvXZYoC4ez}(~6M|_X$BlK4GkywIv*C6{y z?4ghD(lCDe&_|`o@I7*Evi9|*dtmPIF8bknpnf zYoC4ez|VIbNm#a=i3sY?mro zs&x_mk}!OmsapIcVfah(zMzlp`oTSyVVu=(*+)L7J}O-v`zW_4`siGx?5pgf2ZlVT zvfwd>v5wgNV~mP!M-JuDN9UE|kIc!H3$Hu(E`RS5T6c^~4h3s-fVI$K$hB^3L$8Km z=T(+~|FpJN#MHwcW9VConmxwgPPi)#$CeDkmdsi}K8L{%iV(mLa+y1Z_r6|7d~zJZ zoJZS_Gwr>vSK^NUDv1cs4pTlqa_RCmDLZpOvo~_wvNv*PBiEvE%p>RA>ar`#U)^0b z1iCv+d60u+b$4Yfp4Gw?oayYN2j*FgcKV#Lj%y|0bM)s=!W!$yE9F_OO&e?9uwW_b z2c|qof%u$x$lYFx-={1=&uVE}eDm&oePHhKmdfYMvB^Aoj3Jl5lsooXxpZRsmZ}m_ z9+XSRZ!>kp%(3Z>l?Ub0vG1D(`@WEa826XedLqy5%I7W~7BdgI7JiR0%tJntbNO?a zoG`bZ&zXmOtuc5mYWu((qqdDc_u!o!BjiEtpdOgKvy?2KGY|RNdH9@u`73MlIrEU~ zz9zTr=p##NVfDa>1(q&~A0*5%atZqPsyx|!RjMTOsPBTmt>Bd3a%c8ct`oNpliOAv zz?rGN6np#{voo%K`MiJlD2nc*1HzD<7fxQC7lu6Oh8yg+L!^i_~F9fAi1Tm-@=G@ zmuZ0gmPW>Y3nTVa1rhdJ7(A!aQg}`gCG59rSGxKm%Zfc7hW&O|iSJnm!`GMUflHOm zkNp-#y!+Sa>7Ju7?6+&Nx-ug7ANE@qeC@73Us)1{Ke1ivS*-|lWlrskJgXH#t{kfB z6E5{@1$sPJO2-3pjQTG4oV|NXmxoJb`C(gy;g_%MSeaAb1>{gEkYb&Nk%_rpA7kWD z`@{mnhy_-bpnNXO#M!D$Nvs{i z8rXNC)E;sNV^_-O`Yv$Z9(@<0dg_2j--R+O93x8O7{)Zaxj`LJ0FHCs@;xy1Oybn% ztR1d`<1vPPW{c9PFTct=E3J1P=VaXP)+a}n08&e*zP%I6GQ zzR?+pyz@hLX1q8L`%gysl?Qze=b;~@(i_iF#AJC`?F!^MDNLU;$ENf(Y?7qaV+?!A zXH7rG&<|3%kmslm!rIqj;emOMDv9$s?jk-^KogWGnU7r7c?@Xp)^@Xn%*xm20y*)2-s`&rDJaOr4!RH|GmC+tU)S%d0p-%bY5O>^ig6Lop+*m^}=1D@W9|I zh5X$cxeob8^`-OgS-+KrLXKC0ii}NFV0WMTVC{1Qv(7clU`;d6S<^>fx^AT<7MKgq z{dYzEBd;o(b^m1_tq!Qw5cW}-ocOcD+#9(RoJYm4yo)+Mw<9|KT#?M9VnNPPg?Gyj zQq$=8viZ@CVer_}LC{-a%KK6r_?EvIC(b*h+^BGZJz3vw=V7nEYxCq980#p71s)p) zkInOs%^Bu*EAf^0D~XhER6-{2SBlpIgVR)kpbjm8jeS~zm{=Z|-D~w?5VNkMP6BX& zF!l5$b?g|AUJQA!+#46T=eHG6f?3zm^_Oyi;zyjVT6Kz9*HL#V_g^khzHg<64~#tS zA|3dkvO?t>#gEu8Ie6I{iE**Iy6;-$#A6@i5aXNYTzX(~nw%bd-$LaN%yU#P2EK0w zp_sAv=skXwFnLqG7}ziMV&MHEc4GGW>ozatc*>hGQjYAaln*j2q0N3t0P@X?AMq`} z*Cb`XZ}B6(Tg&3y>;aZ_iN83En8>yAb{;ho*mudaVjhJ^nMdVJ%%c=O<`D&E9<_30 zzmyul_vqqqzQ@X3v_se6!JBd+?{kIZ&=q0mirQeXH^R^r zXTt8<-_=vQ_E$D07D1T#mOjb;>yxwpitJ$1g~9)7^Nv0WgGXd`V}IOrS-Ur`)D5io z5%Va1#M3 zf<6kv{w>Oc{Tqg^C}kEIo2LN#Hw-zRIKci5!~QMo%vrrF0Qi=rl=D4mgv;K@#l3Q< zG+*~$u7{OFd63~Mi7?`2VZ_VQTJVT4WNaQ)zgxZP_?D%1i?5%*S6n%seI#Z~E*GO`HT#I)UIFHg@vx6lzwn`|?eUL? z;g86ALwAQ^*Vb86d60d?S;#&TD|*a4N>TzdpW(OcBcC%SSGtO8m3_2ar4~`H)g>|S zyFBhSy7FnxR`wBRp`=gtZV8m^p^_2#<|X#=%`b6|_p|Q3R#(ckhkaDZH{3DIvzmRx zJhG3NM~NBCBm0PXToS>~qx`z%jmtHU)mD3a~g&C zU>JUtI{jhShN&xZnlq0a(99!|%{+39GLPJee2*Mb|_#TCE#Ow=J8#H-Djsbsb ztxS>L#~Ahn%LA`$s{V*`nIXXXMW9)~>W^5zXc+4kNn-sX9IRiek@;4C#C}fEu%A-_ z%%l1v=kd_-9Zcs@Ccy6J>W`dGOR=j{@&M>lRcM!<~jOQ_8hrPVeqEIR!)Wy|2S;rWKKBh62jAG8_ww{x?&S&Np181*qZp$LUcl&i(QmnjJPcob7&TpoJ;tEMxaX)b z4vS6g`&Gim`6#_uEW?}MX2gP(PzYA1cd^xtXZ@~jJZ$Z#F#6Ypl^DbrWzmCmsl3=@ z4E)NCfgOL?+EJGUx_;%uR>z0oR}Q0J&|%7)+N5%RbIXfS58K}>F>TkNusvtL{tTm2 z`YknGVZ`IZ&_{=@jT44GI&69SU2V6#J&bt#Ve5~$sPpFuz;rr+l|W&TyKXaP(jbBR}l0g!^d?Oi>+;tR2{NpgsLT+0) zjX8JymiR{)@sGpgW*t?&N6W(ZDCZ7&P|h9u%DZ42_o3s9DRDlEDRDlEDWNNhDIv2< zykQ=FO6E~aiFuSsTI~hce_?QepCjb{mR?~wOQ?mvt5F|gPz&F4)WRPI7s&ir zyRqk}=R6GAl;y`B4`YuP0%DJ+QLr1skWE=a>nDuK6H^MKCMhgcINv-BF3>Hg$iJ|S zDfRcbn>-AE(_xP>@Hh1w_v?lww0URlo9MX$)I3M;%AO;~p-$d%(J=Q$v~$mDCg=JT z0_Z~@#$7#!xi^X_F^^(Odsd6Wx;Kg`@qLRat-Mcyp|>)V(OY5o6uKG?O3b6Q5x$2#8yX`r&lvdddXBo|um~H!rT(Mm=phuAQs%ex z5b8O42pzVu=#pvZArwXrp~J9Yue}QM$Yx?+Wi#9%;NFQVxObj<^mG_{I#&>S`mQ%%uVphK!*Y3WX08F? z&NrKhZy99?jA2)`GG0#OBZ#%1wixuc@tW#KJhGXXM>Z4l$Yx@%U0{5_dDNTl zQ6C5AK|jmZKwonhzW-eH_<;+GAdAD0lR5hFZJzUg=aEBu^Edt+-QC=Z!!~{yMjwa6 zu&1*sHt(V5==XmZc0i60{Ep`waUSI1_4nF<^WDObVHs=a&@eb_#sQr542Io*5qI=- zgpKnShHod@F!)vFOz^8P_*I^3_*EGE>RRdXE$aimvZPmmUuDw4OTw@bi$KCl3YWo4 z!r&!&Ht`>XVIy99bmmc6!UOZW*$2EOCATq*+{Q3+8xQkLXEUvgt-G0LI-6-_Y@gRN zT_14vX>lg@X>lgL- z*!EYR=RCCS%Y4JO55uNCDa zHWS~Ya46rSl4a+iZC|t&j-Cd9qldxu3S-0d!r*#U8o~7vO>n(1^;_xL%%ipye2*Gh zE=Nl0!u2ZMgrnyr#I_HE>vhE(TrUi+mxzVy<*HJK)uhaMaGzHqJJPjWpxzGXp3Jug zrVOjGkk6T)lUl%+)^7H^wT0NH*XV?IHb18lSfpZU6}f5r2?0t7C89N}?CU!uXLf8Re*a4LyV+VwhpVQ2? z9-?P0_ z;!Mp#+4P7r<;j2-hasCv<3UefYR|57*HxmYkDBe=!tlWt;X`hOp{K89*UGD^b&(rk z$c^3vxeFftg3? zz^mWB)Ej)|S{Qn|>?`zi7()aScm%opYt}J&H3i zkK#;xkK#;xkD4X&J=%VJkK#Rp|_W0aAPKRd4!daz7WVmp@tzTdKF0J6A0hu*Ix zD)!}FmACsU*B4yiYxRh`F1fEb`*(NJu5+^>9+lSzc~H7C9K9tVMs?wH#>f@9^Qa33 zajWYIz4NFm4qQH03p%t88px9CKe_v_5=C_09pBy0Nn$vEM-V+&sUSY&juEo1Yys?# zjsiOQdMxaDtJ(^iq;M#D`mXcZ{a5WKYg$R%u4x05B>cy-m0;qI=F0@zHO>6xUad@B zVkc+9?wXcG_I=m%%+OuaCdOTtnT_;T@8BcbGyU+3w!?`xW*CrDex};mU@acCP-kwf z4#ZkkS-0_v=LT{?f8NP2H4O=p-qS5)jnIC-1Dv_68WiC)p(hu=v zWCkEli#(y@qxS{h=UqwNmsv}_E?>gGRGfVqBwSZ$tBn+(MkI2eW>Het0-YvuCp$cW~^T5VBrV8ZNS+t zTW@*Jmt5Ct$Jd>ZoZc*0?nG+ic5B_dUsV(99>OcT5P;Q{rw&Tl=@Jm-t@8 z=y4Rr-3WK1z}n75qVa`?_0lu9z}=HU;f^}hf7_pg8Z{_Wp>{rdZF|Mu^H`tsNR_0wPf`qTgU=imPE Z&;R?6AAkQT4)fE${L6p&@Bj6u{}0+CTmJw6 diff --git a/designs/leon3-gr-xc3s-1500/lconfig.tk b/designs/leon3-gr-xc3s-1500/lconfig.tk index f6efe8c5..7e20e275 100755 --- a/designs/leon3-gr-xc3s-1500/lconfig.tk +++ b/designs/leon3-gr-xc3s-1500/lconfig.tk @@ -644,7 +644,7 @@ set active_menus [list] set processed_top_level 0 set ARCH sparc set menus_per_column 4 -set total_menus 24 +set total_menus 23 proc toplevel_menu {num} { if {$num == 4} then {return 3} @@ -663,7 +663,6 @@ proc toplevel_menu {num} { if {$num == 20} then {return 13} if {$num == 21} then {return 13} if {$num == 22} then {return 13} - if {$num == 23} then {return 13} return $num } @@ -757,7 +756,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -767,7 +767,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -916,8 +918,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -936,6 +940,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1030,9 +1038,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_3 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_3 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_3 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_3 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_3 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_3 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1086,10 +1095,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1135,14 +1145,16 @@ proc update_define_menu2 {} { if {$tmpvar_3 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_3 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_3 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_3 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_3 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1215,13 +1227,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_4 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_4 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_4 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_4 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_4 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_4 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1261,22 +1281,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_4 + global CONFIG_LEON3_MIN + if {$tmpvar_4 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_4 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_4 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_4 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1333,21 +1621,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_4 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_5 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_5 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_5 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_5 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_5 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_5 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED + global tmpvar_6 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_6 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_6 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_6 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1394,36 +1682,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1431,48 +1720,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_5 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_5 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_5 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_6 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_6 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_6 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_6 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1528,27 +1818,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_6 - minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU + global tmpvar_7 + minimenu $w.config.f 5 1 "FPU core" tmpvar_7 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_7 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_7 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_7 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_7 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_8 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_8 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_8 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_8 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_8 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_8 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_8 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 + global tmpvar_9 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_9 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_9 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_9 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_9 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1589,16 +1879,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1607,34 +1898,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_6 + global tmpvar_7 global CONFIG_FPU_GRFPU - if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_7 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_7 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_7 + if {$tmpvar_7 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_8 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_8 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_8 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_8 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_8 + if {$tmpvar_8 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_9 global CONFIG_FPU_GRFPC0 - if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_9 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_9 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_9 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1691,92 +1983,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_9 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 + global tmpvar_10 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_10 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_10 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_10 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 + global tmpvar_11 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_11 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_11 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_11 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_11 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_11 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_11 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_11 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_11 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_11 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 + global tmpvar_12 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_12 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_12 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND + global tmpvar_13 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_13 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_13 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_13 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_13 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_13 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_13 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_14 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_14 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_14 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 + global tmpvar_15 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_15 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_15 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_15 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 + global tmpvar_16 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_16 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_16 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_16 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_16 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_16 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_16 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_16 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_16 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_16 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 + global tmpvar_17 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_17 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_17 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND + global tmpvar_18 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_18 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_18 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_18 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_18 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_18 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1784,18 +2076,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_18 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_19 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_19 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_19 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_19 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_19 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_19 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_19 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_19 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_19 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_19 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_19 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1836,52 +2128,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1889,162 +2182,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_9 + global tmpvar_10 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_10 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_10 + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_11 global CONFIG_ICACHE_SZ1 - if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_11 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_11 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_11 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_11 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_11 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_11 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_11 + if {$tmpvar_11 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_12 global CONFIG_ICACHE_LZ16 - if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_12 + if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_13 global CONFIG_ICACHE_ALGORND - if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_13 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_13 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_13 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_13 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_14 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_14 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_14 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_14 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_14 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_14 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_14 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_14 + global tmpvar_15 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_15 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_15 + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_16 global CONFIG_DCACHE_SZ1 - if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_16 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_16 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_16 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_16 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_16 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_16 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_16 + if {$tmpvar_16 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_17 global CONFIG_DCACHE_LZ16 - if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_17 + if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_18 global CONFIG_DCACHE_ALGORND - if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_18 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_18 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_18 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_18 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_19 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_19 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_19 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_19 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_19 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_19 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_19 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_19 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_19 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2100,45 +2394,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_19 - minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED + global tmpvar_20 + minimenu $w.config.f 7 1 "MMU type " tmpvar_20 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_20 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_20 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY + global tmpvar_21 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_21 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_21 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_21 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_21 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_22 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_22 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_23 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_23 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_23 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_23 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_23 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K + global tmpvar_24 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_24 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_24 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_24 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_24 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_24 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_24 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2178,18 +2474,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2197,55 +2494,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_19 + global tmpvar_20 global CONFIG_MMU_COMBINED - if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_20 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_20 + if {$tmpvar_20 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_21 global CONFIG_MMU_REPARRAY - if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_21 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_21 + if {$tmpvar_21 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_22 global CONFIG_MMU_I2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_22 + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_23 global CONFIG_MMU_D2 - if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_23 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_23 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_23 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_23 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_23 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_23 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_MMU_PAGE_4K - if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_24 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_24 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_24 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_24 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_24 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2302,24 +2604,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_24 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_25 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 + global tmpvar_26 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2359,17 +2661,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2377,37 +2680,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2463,16 +2767,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_26 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE + global tmpvar_27 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_27 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_27 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_28 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_28 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_28 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_28 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_28 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_28 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2520,9 +2831,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2544,21 +2853,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_26 + global tmpvar_27 global CONFIG_IUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_27 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_27 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_28 + global CONFIG_FPUFT_NONE + if {$tmpvar_28 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_28 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_28 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_28 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2867,22 +3181,22 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "USB Debug Communication Link" CONFIG_GRUSB_DCL - global tmpvar_27 - minimenu $w.config.f 12 3 "USB Transceiver Interface" tmpvar_27 CONFIG_GRUSB_DCL_ULPI + global tmpvar_29 + minimenu $w.config.f 12 3 "USB Transceiver Interface" tmpvar_29 CONFIG_GRUSB_DCL_ULPI menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"USB Transceiver Interface\"" - $w.config.f.x3.x.menu add radiobutton -label "ULPI" -variable tmpvar_27 -value "ULPI" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "UTMI/UTMI+8-bit" -variable tmpvar_27 -value "UTMI/UTMI+8-bit" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "UTMI/UTMI+16-bit" -variable tmpvar_27 -value "UTMI/UTMI+16-bit" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "ULPI" -variable tmpvar_29 -value "ULPI" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "UTMI/UTMI+8-bit" -variable tmpvar_29 -value "UTMI/UTMI+8-bit" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "UTMI/UTMI+16-bit" -variable tmpvar_29 -value "UTMI/UTMI+16-bit" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 12 4 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_28 - minimenu $w.config.f 12 5 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 + global tmpvar_30 + minimenu $w.config.f 12 5 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_30 CONFIG_DSU_ETHSZ1 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x5.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" menusplit $w $w.config.f.x5.x.menu 5 hex $w.config.f 12 6 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 7 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2954,28 +3268,28 @@ proc update_menu12 {} { proc update_define_menu12 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_27 + global tmpvar_29 global CONFIG_GRUSB_DCL_ULPI - if {$tmpvar_27 == "ULPI"} then {set CONFIG_GRUSB_DCL_ULPI 1} else {set CONFIG_GRUSB_DCL_ULPI 0} + if {$tmpvar_29 == "ULPI"} then {set CONFIG_GRUSB_DCL_ULPI 1} else {set CONFIG_GRUSB_DCL_ULPI 0} global CONFIG_GRUSB_DCL_UTMI8 - if {$tmpvar_27 == "UTMI/UTMI+8-bit"} then {set CONFIG_GRUSB_DCL_UTMI8 1} else {set CONFIG_GRUSB_DCL_UTMI8 0} + if {$tmpvar_29 == "UTMI/UTMI+8-bit"} then {set CONFIG_GRUSB_DCL_UTMI8 1} else {set CONFIG_GRUSB_DCL_UTMI8 0} global CONFIG_GRUSB_DCL_UTMI16 - if {$tmpvar_27 == "UTMI/UTMI+16-bit"} then {set CONFIG_GRUSB_DCL_UTMI16 1} else {set CONFIG_GRUSB_DCL_UTMI16 0} + if {$tmpvar_29 == "UTMI/UTMI+16-bit"} then {set CONFIG_GRUSB_DCL_UTMI16 1} else {set CONFIG_GRUSB_DCL_UTMI16 0} global CONFIG_GRETH_ENABLE global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_30 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_30 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3048,12 +3362,11 @@ proc menu13 {w title} { submenu $w.config.f 13 0 "Memory controller " 14 submenu $w.config.f 13 1 "On-chip RAM/ROM " 16 submenu $w.config.f 13 2 "Ethernet " 17 - submenu $w.config.f 13 3 "IDE Disk controller " 18 - submenu $w.config.f 13 4 "CAN " 19 - submenu $w.config.f 13 5 "USB 2.0 Device Controller " 20 - submenu $w.config.f 13 6 "UART, timer, I/O port and interrupt controller" 21 - submenu $w.config.f 13 7 "Spacewire " 22 - submenu $w.config.f 13 8 "Keybord and VGA interface" 23 + submenu $w.config.f 13 3 "CAN " 18 + submenu $w.config.f 13 4 "USB 2.0 Device Controller " 19 + submenu $w.config.f 13 5 "UART, timer, I/O port and interrupt controller" 20 + submenu $w.config.f 13 6 "Spacewire " 21 + submenu $w.config.f 13 7 "Keybord and VGA interface" 22 @@ -3423,16 +3736,16 @@ proc menu16 {w title} { hex $w.config.f 16 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 16 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 16 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_29 - minimenu $w.config.f 16 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 + global tmpvar_31 + minimenu $w.config.f 16 4 "AHB RAM size (Kbyte)" tmpvar_31 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 16 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3494,21 +3807,21 @@ proc update_define_menu16 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_29 + global tmpvar_31 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_31 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3568,14 +3881,14 @@ proc menu17 {w title} { bool $w.config.f 17 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 17 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_30 - minimenu $w.config.f 17 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 + global tmpvar_32 + minimenu $w.config.f 17 2 "AHB FIFO size (words) " tmpvar_32 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_32 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3629,17 +3942,17 @@ proc update_define_menu17 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_30 + global tmpvar_32 global CONFIG_GRETH_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_32 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_32 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_32 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_32 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_32 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3652,9 +3965,9 @@ proc menu18 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 18]] message $w.m -width 400 -aspect 300 -text \ - "IDE Disk controller " -relief raised + "CAN " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "IDE Disk controller " + wm title $w "CAN " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu19 .menu19 \"$title\"" @@ -3694,11 +4007,13 @@ proc menu18 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 18 0 "Enable ATA interface " CONFIG_ATA_ENABLE - hex $w.config.f 18 1 "ATA I/O area start address (haddr\[19:8\]) " CONFIG_ATAIO - int $w.config.f 18 2 "Interrupt number " CONFIG_ATAIRQ - bool $w.config.f 18 3 "Enable MWDMA support " CONFIG_ATA_MWDMA - int $w.config.f 18 4 "FIFO depth " CONFIG_ATA_FIFO + bool $w.config.f 18 0 "Enable multi-core CAN interface " CONFIG_CAN_ENABLE + int $w.config.f 18 1 "Number of CAN cores " CONFIG_CAN_NUM + hex $w.config.f 18 2 "CAN I/O area start address (haddr\[19:8\]) " CONFIG_CANIO + int $w.config.f 18 3 "Interrupt number " CONFIG_CANIRQ + bool $w.config.f 18 4 "Enable separate interrupts " CONFIG_CANSEPIRQ + bool $w.config.f 18 5 "Enable synchronous reset " CONFIG_CAN_SYNCRST + bool $w.config.f 18 6 "Enable FT FIFO memory " CONFIG_CAN_FT @@ -3736,32 +4051,44 @@ proc menu18 {w title} { } proc update_menu18 {} { - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {.menu18.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x1.l configure -state normal; } else {.menu18.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x1.l configure -state disabled} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {.menu18.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x2.l configure -state normal; } else {.menu18.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x2.l configure -state disabled} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - configure_entry .menu18.config.f.x3 normal {n l y}} else {configure_entry .menu18.config.f.x3 disabled {y n l}} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {.menu18.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x4.l configure -state normal; } else {.menu18.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x4.l configure -state disabled} + global CONFIG_CAN_ENABLE + global CONFIG_CAN_NUM + if {($CONFIG_CAN_ENABLE == 1)} then {.menu18.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x1.l configure -state normal; } else {.menu18.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x1.l configure -state disabled} + global CONFIG_CANIO + if {($CONFIG_CAN_ENABLE == 1)} then {.menu18.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x2.l configure -state normal; } else {.menu18.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x2.l configure -state disabled} + global CONFIG_CANIRQ + if {($CONFIG_CAN_ENABLE == 1)} then {.menu18.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x3.l configure -state normal; } else {.menu18.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x3.l configure -state disabled} + global CONFIG_CANSEPIRQ + if {($CONFIG_CAN_ENABLE == 1)} then { + configure_entry .menu18.config.f.x4 normal {n l y}} else {configure_entry .menu18.config.f.x4 disabled {y n l}} + global CONFIG_CAN_SYNCRST + if {($CONFIG_CAN_ENABLE == 1)} then { + configure_entry .menu18.config.f.x5 normal {n l y}} else {configure_entry .menu18.config.f.x5 disabled {y n l}} + global CONFIG_CAN_FT + if {($CONFIG_CAN_ENABLE == 1)} then { + configure_entry .menu18.config.f.x6 normal {n l y}} else {configure_entry .menu18.config.f.x6 disabled {y n l}} } proc update_define_menu18 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {validate_hex CONFIG_ATAIO "$CONFIG_ATAIO" A00} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {validate_int CONFIG_ATAIRQ "$CONFIG_ATAIRQ" 10} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA&15]} else {set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA|16]} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {validate_int CONFIG_ATA_FIFO "$CONFIG_ATA_FIFO" 8} + global CONFIG_CAN_ENABLE + global CONFIG_CAN_NUM + if {($CONFIG_CAN_ENABLE == 1)} then {validate_int CONFIG_CAN_NUM "$CONFIG_CAN_NUM" 1} + global CONFIG_CANIO + if {($CONFIG_CAN_ENABLE == 1)} then {validate_hex CONFIG_CANIO "$CONFIG_CANIO" C00} + global CONFIG_CANIRQ + if {($CONFIG_CAN_ENABLE == 1)} then {validate_int CONFIG_CANIRQ "$CONFIG_CANIRQ" 13} + global CONFIG_CANSEPIRQ + if {($CONFIG_CAN_ENABLE == 1)} then { + set CONFIG_CANSEPIRQ [expr $CONFIG_CANSEPIRQ&15]} else {set CONFIG_CANSEPIRQ [expr $CONFIG_CANSEPIRQ|16]} + global CONFIG_CAN_SYNCRST + if {($CONFIG_CAN_ENABLE == 1)} then { + set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST&15]} else {set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST|16]} + global CONFIG_CAN_FT + if {($CONFIG_CAN_ENABLE == 1)} then { + set CONFIG_CAN_FT [expr $CONFIG_CAN_FT&15]} else {set CONFIG_CAN_FT [expr $CONFIG_CAN_FT|16]} } @@ -3774,9 +4101,9 @@ proc menu19 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 19]] message $w.m -width 400 -aspect 300 -text \ - "CAN " -relief raised + "USB 2.0 Device Controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "CAN " + wm title $w "USB 2.0 Device Controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu20 .menu20 \"$title\"" @@ -3816,13 +4143,49 @@ proc menu19 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 19 0 "Enable multi-core CAN interface " CONFIG_CAN_ENABLE - int $w.config.f 19 1 "Number of CAN cores " CONFIG_CAN_NUM - hex $w.config.f 19 2 "CAN I/O area start address (haddr\[19:8\]) " CONFIG_CANIO - int $w.config.f 19 3 "Interrupt number " CONFIG_CANIRQ - bool $w.config.f 19 4 "Enable separate interrupts " CONFIG_CANSEPIRQ - bool $w.config.f 19 5 "Enable synchronous reset " CONFIG_CAN_SYNCRST - bool $w.config.f 19 6 "Enable FT FIFO memory " CONFIG_CAN_FT + bool $w.config.f 19 0 "Gaisler Research USB 2.0 Device Controller " CONFIG_GRUSBDC_ENABLE + bool $w.config.f 19 1 "AHB Master Interface" CONFIG_GRUSBDC_AIFACE + global tmpvar_33 + minimenu $w.config.f 19 2 "USB Transceiver Interface" tmpvar_33 CONFIG_GRUSBDC_ULPI + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"USB Transceiver Interface\"" + $w.config.f.x2.x.menu add radiobutton -label "ULPI" -variable tmpvar_33 -value "ULPI" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "UTMI/UTMI+8-bit" -variable tmpvar_33 -value "UTMI/UTMI+8-bit" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "UTMI/UTMI+16-bit" -variable tmpvar_33 -value "UTMI/UTMI+16-bit" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 3 + int $w.config.f 19 3 "Number of IN endpoints " CONFIG_GRUSBDC_NEPI + int $w.config.f 19 4 "Number of OUT endpoints" CONFIG_GRUSBDC_NEPO + int $w.config.f 19 5 "Buffer size for IN endpoint 0 " CONFIG_GRUSBDC_I0 + int $w.config.f 19 6 "Buffer size for IN endpoint 1 " CONFIG_GRUSBDC_I1 + int $w.config.f 19 7 "Buffer size for IN endpoint 2 " CONFIG_GRUSBDC_I2 + int $w.config.f 19 8 "Buffer size for IN endpoint 3 " CONFIG_GRUSBDC_I3 + int $w.config.f 19 9 "Buffer size for IN endpoint 4 " CONFIG_GRUSBDC_I4 + int $w.config.f 19 10 "Buffer size for IN endpoint 5 " CONFIG_GRUSBDC_I5 + int $w.config.f 19 11 "Buffer size for IN endpoint 6 " CONFIG_GRUSBDC_I6 + int $w.config.f 19 12 "Buffer size for IN endpoint 7 " CONFIG_GRUSBDC_I7 + int $w.config.f 19 13 "Buffer size for IN endpoint 8 " CONFIG_GRUSBDC_I8 + int $w.config.f 19 14 "Buffer size for IN endpoint 9 " CONFIG_GRUSBDC_I9 + int $w.config.f 19 15 "Buffer size for IN endpoint 10 " CONFIG_GRUSBDC_I10 + int $w.config.f 19 16 "Buffer size for IN endpoint 11 " CONFIG_GRUSBDC_I11 + int $w.config.f 19 17 "Buffer size for IN endpoint 12 " CONFIG_GRUSBDC_I12 + int $w.config.f 19 18 "Buffer size for IN endpoint 13 " CONFIG_GRUSBDC_I13 + int $w.config.f 19 19 "Buffer size for IN endpoint 14 " CONFIG_GRUSBDC_I14 + int $w.config.f 19 20 "Buffer size for IN endpoint 15 " CONFIG_GRUSBDC_I15 + int $w.config.f 19 21 "Buffer size for OUT endpoint 0" CONFIG_GRUSBDC_O0 + int $w.config.f 19 22 "Buffer size for OUT endpoint 1" CONFIG_GRUSBDC_O1 + int $w.config.f 19 23 "Buffer size for OUT endpoint 2" CONFIG_GRUSBDC_O2 + int $w.config.f 19 24 "Buffer size for OUT endpoint 3" CONFIG_GRUSBDC_O3 + int $w.config.f 19 25 "Buffer size for OUT endpoint 4" CONFIG_GRUSBDC_O4 + int $w.config.f 19 26 "Buffer size for OUT endpoint 5" CONFIG_GRUSBDC_O5 + int $w.config.f 19 27 "Buffer size for OUT endpoint 6" CONFIG_GRUSBDC_O6 + int $w.config.f 19 28 "Buffer size for OUT endpoint 7" CONFIG_GRUSBDC_O7 + int $w.config.f 19 29 "Buffer size for OUT endpoint 8" CONFIG_GRUSBDC_O8 + int $w.config.f 19 30 "Buffer size for OUT endpoint 9" CONFIG_GRUSBDC_O9 + int $w.config.f 19 31 "Buffer size for OUT endpoint 10" CONFIG_GRUSBDC_O10 + int $w.config.f 19 32 "Buffer size for OUT endpoint 11" CONFIG_GRUSBDC_O11 + int $w.config.f 19 33 "Buffer size for OUT endpoint 12" CONFIG_GRUSBDC_O12 + int $w.config.f 19 34 "Buffer size for OUT endpoint 13" CONFIG_GRUSBDC_O13 + int $w.config.f 19 35 "Buffer size for OUT endpoint 14" CONFIG_GRUSBDC_O14 + int $w.config.f 19 36 "Buffer size for OUT endpoint 15" CONFIG_GRUSBDC_O15 @@ -3860,268 +4223,96 @@ proc menu19 {w title} { } proc update_menu19 {} { - global CONFIG_CAN_ENABLE - global CONFIG_CAN_NUM - if {($CONFIG_CAN_ENABLE == 1)} then {.menu19.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x1.l configure -state normal; } else {.menu19.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x1.l configure -state disabled} - global CONFIG_CANIO - if {($CONFIG_CAN_ENABLE == 1)} then {.menu19.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x2.l configure -state normal; } else {.menu19.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x2.l configure -state disabled} - global CONFIG_CANIRQ - if {($CONFIG_CAN_ENABLE == 1)} then {.menu19.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x3.l configure -state normal; } else {.menu19.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x3.l configure -state disabled} - global CONFIG_CANSEPIRQ - if {($CONFIG_CAN_ENABLE == 1)} then { - configure_entry .menu19.config.f.x4 normal {n l y}} else {configure_entry .menu19.config.f.x4 disabled {y n l}} - global CONFIG_CAN_SYNCRST - if {($CONFIG_CAN_ENABLE == 1)} then { - configure_entry .menu19.config.f.x5 normal {n l y}} else {configure_entry .menu19.config.f.x5 disabled {y n l}} - global CONFIG_CAN_FT - if {($CONFIG_CAN_ENABLE == 1)} then { - configure_entry .menu19.config.f.x6 normal {n l y}} else {configure_entry .menu19.config.f.x6 disabled {y n l}} -} - - -proc update_define_menu19 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_CAN_ENABLE - global CONFIG_CAN_NUM - if {($CONFIG_CAN_ENABLE == 1)} then {validate_int CONFIG_CAN_NUM "$CONFIG_CAN_NUM" 1} - global CONFIG_CANIO - if {($CONFIG_CAN_ENABLE == 1)} then {validate_hex CONFIG_CANIO "$CONFIG_CANIO" C00} - global CONFIG_CANIRQ - if {($CONFIG_CAN_ENABLE == 1)} then {validate_int CONFIG_CANIRQ "$CONFIG_CANIRQ" 13} - global CONFIG_CANSEPIRQ - if {($CONFIG_CAN_ENABLE == 1)} then { - set CONFIG_CANSEPIRQ [expr $CONFIG_CANSEPIRQ&15]} else {set CONFIG_CANSEPIRQ [expr $CONFIG_CANSEPIRQ|16]} - global CONFIG_CAN_SYNCRST - if {($CONFIG_CAN_ENABLE == 1)} then { - set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST&15]} else {set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST|16]} - global CONFIG_CAN_FT - if {($CONFIG_CAN_ENABLE == 1)} then { - set CONFIG_CAN_FT [expr $CONFIG_CAN_FT&15]} else {set CONFIG_CAN_FT [expr $CONFIG_CAN_FT|16]} -} - - -proc menu20 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 20} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 20]] - message $w.m -width 400 -aspect 300 -text \ - "USB 2.0 Device Controller " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "USB 2.0 Device Controller " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu21 .menu21 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 20 0 "Gaisler Research USB 2.0 Device Controller " CONFIG_GRUSBDC_ENABLE - bool $w.config.f 20 1 "AHB Master Interface" CONFIG_GRUSBDC_AIFACE - global tmpvar_31 - minimenu $w.config.f 20 2 "USB Transceiver Interface" tmpvar_31 CONFIG_GRUSBDC_ULPI - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"USB Transceiver Interface\"" - $w.config.f.x2.x.menu add radiobutton -label "ULPI" -variable tmpvar_31 -value "ULPI" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "UTMI/UTMI+8-bit" -variable tmpvar_31 -value "UTMI/UTMI+8-bit" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "UTMI/UTMI+16-bit" -variable tmpvar_31 -value "UTMI/UTMI+16-bit" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 3 - int $w.config.f 20 3 "Number of IN endpoints " CONFIG_GRUSBDC_NEPI - int $w.config.f 20 4 "Number of OUT endpoints" CONFIG_GRUSBDC_NEPO - int $w.config.f 20 5 "Buffer size for IN endpoint 0 " CONFIG_GRUSBDC_I0 - int $w.config.f 20 6 "Buffer size for IN endpoint 1 " CONFIG_GRUSBDC_I1 - int $w.config.f 20 7 "Buffer size for IN endpoint 2 " CONFIG_GRUSBDC_I2 - int $w.config.f 20 8 "Buffer size for IN endpoint 3 " CONFIG_GRUSBDC_I3 - int $w.config.f 20 9 "Buffer size for IN endpoint 4 " CONFIG_GRUSBDC_I4 - int $w.config.f 20 10 "Buffer size for IN endpoint 5 " CONFIG_GRUSBDC_I5 - int $w.config.f 20 11 "Buffer size for IN endpoint 6 " CONFIG_GRUSBDC_I6 - int $w.config.f 20 12 "Buffer size for IN endpoint 7 " CONFIG_GRUSBDC_I7 - int $w.config.f 20 13 "Buffer size for IN endpoint 8 " CONFIG_GRUSBDC_I8 - int $w.config.f 20 14 "Buffer size for IN endpoint 9 " CONFIG_GRUSBDC_I9 - int $w.config.f 20 15 "Buffer size for IN endpoint 10 " CONFIG_GRUSBDC_I10 - int $w.config.f 20 16 "Buffer size for IN endpoint 11 " CONFIG_GRUSBDC_I11 - int $w.config.f 20 17 "Buffer size for IN endpoint 12 " CONFIG_GRUSBDC_I12 - int $w.config.f 20 18 "Buffer size for IN endpoint 13 " CONFIG_GRUSBDC_I13 - int $w.config.f 20 19 "Buffer size for IN endpoint 14 " CONFIG_GRUSBDC_I14 - int $w.config.f 20 20 "Buffer size for IN endpoint 15 " CONFIG_GRUSBDC_I15 - int $w.config.f 20 21 "Buffer size for OUT endpoint 0" CONFIG_GRUSBDC_O0 - int $w.config.f 20 22 "Buffer size for OUT endpoint 1" CONFIG_GRUSBDC_O1 - int $w.config.f 20 23 "Buffer size for OUT endpoint 2" CONFIG_GRUSBDC_O2 - int $w.config.f 20 24 "Buffer size for OUT endpoint 3" CONFIG_GRUSBDC_O3 - int $w.config.f 20 25 "Buffer size for OUT endpoint 4" CONFIG_GRUSBDC_O4 - int $w.config.f 20 26 "Buffer size for OUT endpoint 5" CONFIG_GRUSBDC_O5 - int $w.config.f 20 27 "Buffer size for OUT endpoint 6" CONFIG_GRUSBDC_O6 - int $w.config.f 20 28 "Buffer size for OUT endpoint 7" CONFIG_GRUSBDC_O7 - int $w.config.f 20 29 "Buffer size for OUT endpoint 8" CONFIG_GRUSBDC_O8 - int $w.config.f 20 30 "Buffer size for OUT endpoint 9" CONFIG_GRUSBDC_O9 - int $w.config.f 20 31 "Buffer size for OUT endpoint 10" CONFIG_GRUSBDC_O10 - int $w.config.f 20 32 "Buffer size for OUT endpoint 11" CONFIG_GRUSBDC_O11 - int $w.config.f 20 33 "Buffer size for OUT endpoint 12" CONFIG_GRUSBDC_O12 - int $w.config.f 20 34 "Buffer size for OUT endpoint 13" CONFIG_GRUSBDC_O13 - int $w.config.f 20 35 "Buffer size for OUT endpoint 14" CONFIG_GRUSBDC_O14 - int $w.config.f 20 36 "Buffer size for OUT endpoint 15" CONFIG_GRUSBDC_O15 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu20 {} { global CONFIG_GRUSBDC_ENABLE global CONFIG_GRUSBDC_AIFACE if {($CONFIG_GRUSBDC_ENABLE == 1)} then { - configure_entry .menu20.config.f.x1 normal {n l y}} else {configure_entry .menu20.config.f.x1 disabled {y n l}} - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {configure_entry .menu20.config.f.x2 normal {x l}} else {configure_entry .menu20.config.f.x2 disabled {x l}} + configure_entry .menu19.config.f.x1 normal {n l y}} else {configure_entry .menu19.config.f.x1 disabled {y n l}} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {configure_entry .menu19.config.f.x2 normal {x l}} else {configure_entry .menu19.config.f.x2 disabled {x l}} global CONFIG_GRUSBDC_NEPI - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x3.l configure -state normal; } else {.menu20.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x3.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x3.l configure -state normal; } else {.menu19.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x3.l configure -state disabled} global CONFIG_GRUSBDC_NEPO - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x4.l configure -state normal; } else {.menu20.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x4.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x4.l configure -state normal; } else {.menu19.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x4.l configure -state disabled} global CONFIG_GRUSBDC_I0 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x5.l configure -state normal; } else {.menu20.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x5.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x5.l configure -state normal; } else {.menu19.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x5.l configure -state disabled} global CONFIG_GRUSBDC_I1 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x6.l configure -state normal; } else {.menu20.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x6.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x6.l configure -state normal; } else {.menu19.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x6.l configure -state disabled} global CONFIG_GRUSBDC_I2 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x7.l configure -state normal; } else {.menu20.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x7.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x7.l configure -state normal; } else {.menu19.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x7.l configure -state disabled} global CONFIG_GRUSBDC_I3 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x8.l configure -state normal; } else {.menu20.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x8.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x8.l configure -state normal; } else {.menu19.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x8.l configure -state disabled} global CONFIG_GRUSBDC_I4 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x9.l configure -state normal; } else {.menu20.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x9.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x9.l configure -state normal; } else {.menu19.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x9.l configure -state disabled} global CONFIG_GRUSBDC_I5 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x10.l configure -state normal; } else {.menu20.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x10.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x10.l configure -state normal; } else {.menu19.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x10.l configure -state disabled} global CONFIG_GRUSBDC_I6 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x11.l configure -state normal; } else {.menu20.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x11.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x11.l configure -state normal; } else {.menu19.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x11.l configure -state disabled} global CONFIG_GRUSBDC_I7 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x12.l configure -state normal; } else {.menu20.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x12.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x12.l configure -state normal; } else {.menu19.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x12.l configure -state disabled} global CONFIG_GRUSBDC_I8 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x13.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x13.l configure -state normal; } else {.menu20.config.f.x13.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x13.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x13.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x13.l configure -state normal; } else {.menu19.config.f.x13.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x13.l configure -state disabled} global CONFIG_GRUSBDC_I9 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x14.l configure -state normal; } else {.menu20.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x14.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x14.l configure -state normal; } else {.menu19.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x14.l configure -state disabled} global CONFIG_GRUSBDC_I10 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x15.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x15.l configure -state normal; } else {.menu20.config.f.x15.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x15.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x15.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x15.l configure -state normal; } else {.menu19.config.f.x15.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x15.l configure -state disabled} global CONFIG_GRUSBDC_I11 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x16.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x16.l configure -state normal; } else {.menu20.config.f.x16.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x16.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x16.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x16.l configure -state normal; } else {.menu19.config.f.x16.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x16.l configure -state disabled} global CONFIG_GRUSBDC_I12 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x17.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x17.l configure -state normal; } else {.menu20.config.f.x17.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x17.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x17.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x17.l configure -state normal; } else {.menu19.config.f.x17.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x17.l configure -state disabled} global CONFIG_GRUSBDC_I13 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x18.l configure -state normal; } else {.menu20.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x18.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x18.l configure -state normal; } else {.menu19.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x18.l configure -state disabled} global CONFIG_GRUSBDC_I14 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x19.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x19.l configure -state normal; } else {.menu20.config.f.x19.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x19.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x19.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x19.l configure -state normal; } else {.menu19.config.f.x19.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x19.l configure -state disabled} global CONFIG_GRUSBDC_I15 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x20.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x20.l configure -state normal; } else {.menu20.config.f.x20.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x20.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x20.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x20.l configure -state normal; } else {.menu19.config.f.x20.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x20.l configure -state disabled} global CONFIG_GRUSBDC_O0 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x21.l configure -state normal; } else {.menu20.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x21.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x21.l configure -state normal; } else {.menu19.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x21.l configure -state disabled} global CONFIG_GRUSBDC_O1 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x22.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x22.l configure -state normal; } else {.menu20.config.f.x22.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x22.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x22.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x22.l configure -state normal; } else {.menu19.config.f.x22.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x22.l configure -state disabled} global CONFIG_GRUSBDC_O2 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x23.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x23.l configure -state normal; } else {.menu20.config.f.x23.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x23.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x23.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x23.l configure -state normal; } else {.menu19.config.f.x23.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x23.l configure -state disabled} global CONFIG_GRUSBDC_O3 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x24.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x24.l configure -state normal; } else {.menu20.config.f.x24.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x24.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x24.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x24.l configure -state normal; } else {.menu19.config.f.x24.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x24.l configure -state disabled} global CONFIG_GRUSBDC_O4 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x25.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x25.l configure -state normal; } else {.menu20.config.f.x25.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x25.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x25.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x25.l configure -state normal; } else {.menu19.config.f.x25.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x25.l configure -state disabled} global CONFIG_GRUSBDC_O5 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x26.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x26.l configure -state normal; } else {.menu20.config.f.x26.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x26.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x26.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x26.l configure -state normal; } else {.menu19.config.f.x26.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x26.l configure -state disabled} global CONFIG_GRUSBDC_O6 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x27.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x27.l configure -state normal; } else {.menu20.config.f.x27.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x27.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x27.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x27.l configure -state normal; } else {.menu19.config.f.x27.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x27.l configure -state disabled} global CONFIG_GRUSBDC_O7 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x28.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x28.l configure -state normal; } else {.menu20.config.f.x28.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x28.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x28.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x28.l configure -state normal; } else {.menu19.config.f.x28.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x28.l configure -state disabled} global CONFIG_GRUSBDC_O8 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x29.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x29.l configure -state normal; } else {.menu20.config.f.x29.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x29.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x29.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x29.l configure -state normal; } else {.menu19.config.f.x29.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x29.l configure -state disabled} global CONFIG_GRUSBDC_O9 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x30.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x30.l configure -state normal; } else {.menu20.config.f.x30.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x30.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x30.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x30.l configure -state normal; } else {.menu19.config.f.x30.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x30.l configure -state disabled} global CONFIG_GRUSBDC_O10 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x31.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x31.l configure -state normal; } else {.menu20.config.f.x31.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x31.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x31.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x31.l configure -state normal; } else {.menu19.config.f.x31.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x31.l configure -state disabled} global CONFIG_GRUSBDC_O11 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x32.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x32.l configure -state normal; } else {.menu20.config.f.x32.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x32.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x32.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x32.l configure -state normal; } else {.menu19.config.f.x32.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x32.l configure -state disabled} global CONFIG_GRUSBDC_O12 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x33.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x33.l configure -state normal; } else {.menu20.config.f.x33.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x33.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x33.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x33.l configure -state normal; } else {.menu19.config.f.x33.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x33.l configure -state disabled} global CONFIG_GRUSBDC_O13 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x34.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x34.l configure -state normal; } else {.menu20.config.f.x34.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x34.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x34.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x34.l configure -state normal; } else {.menu19.config.f.x34.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x34.l configure -state disabled} global CONFIG_GRUSBDC_O14 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x35.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x35.l configure -state normal; } else {.menu20.config.f.x35.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x35.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x35.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x35.l configure -state normal; } else {.menu19.config.f.x35.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x35.l configure -state disabled} global CONFIG_GRUSBDC_O15 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu20.config.f.x36.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x36.l configure -state normal; } else {.menu20.config.f.x36.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x36.l configure -state disabled} + if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu19.config.f.x36.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x36.l configure -state normal; } else {.menu19.config.f.x36.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x36.l configure -state disabled} } -proc update_define_menu20 {} { +proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_GRUSBDC_ENABLE global CONFIG_GRUSBDC_AIFACE if {($CONFIG_GRUSBDC_ENABLE == 1)} then { set CONFIG_GRUSBDC_AIFACE [expr $CONFIG_GRUSBDC_AIFACE&15]} else {set CONFIG_GRUSBDC_AIFACE [expr $CONFIG_GRUSBDC_AIFACE|16]} - global tmpvar_31 + global tmpvar_33 global CONFIG_GRUSBDC_ULPI - if {$tmpvar_31 == "ULPI"} then {set CONFIG_GRUSBDC_ULPI 1} else {set CONFIG_GRUSBDC_ULPI 0} + if {$tmpvar_33 == "ULPI"} then {set CONFIG_GRUSBDC_ULPI 1} else {set CONFIG_GRUSBDC_ULPI 0} global CONFIG_GRUSBDC_UTMI8 - if {$tmpvar_31 == "UTMI/UTMI+8-bit"} then {set CONFIG_GRUSBDC_UTMI8 1} else {set CONFIG_GRUSBDC_UTMI8 0} + if {$tmpvar_33 == "UTMI/UTMI+8-bit"} then {set CONFIG_GRUSBDC_UTMI8 1} else {set CONFIG_GRUSBDC_UTMI8 0} global CONFIG_GRUSBDC_UTMI16 - if {$tmpvar_31 == "UTMI/UTMI+16-bit"} then {set CONFIG_GRUSBDC_UTMI16 1} else {set CONFIG_GRUSBDC_UTMI16 0} + if {$tmpvar_33 == "UTMI/UTMI+16-bit"} then {set CONFIG_GRUSBDC_UTMI16 1} else {set CONFIG_GRUSBDC_UTMI16 0} global CONFIG_GRUSBDC_NEPI if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_NEPI "$CONFIG_GRUSBDC_NEPI" 1} global CONFIG_GRUSBDC_NEPO @@ -4193,30 +4384,30 @@ proc update_define_menu20 {} { } -proc menu21 {w title} { +proc menu20 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 21} + catch {destroy $w; unregister_active 20} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 21]] + set active_menus [lsort -integer [linsert $active_menus end 20]] message $w.m -width 400 -aspect 300 -text \ "UART, timer, I/O port and interrupt controller" -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "UART, timer, I/O port and interrupt controller" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu22 .menu22 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu21 .menu21 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4244,42 +4435,42 @@ proc menu21 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 21 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_32 - minimenu $w.config.f 21 1 "UART1 FIFO depth" tmpvar_32 CONFIG_UA1_FIFO1 + bool $w.config.f 20 0 "Enable console UART " CONFIG_UART1_ENABLE + global tmpvar_34 + minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_34 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_32 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_32 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_34 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_34 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_34 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_34 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_34 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_34 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 - bool $w.config.f 21 2 "Enable secondary UART " CONFIG_UART2_ENABLE - global tmpvar_33 - minimenu $w.config.f 21 3 "UART2 FIFO depth" tmpvar_33 CONFIG_UA2_FIFO1 + bool $w.config.f 20 2 "Enable secondary UART " CONFIG_UART2_ENABLE + global tmpvar_35 + minimenu $w.config.f 20 3 "UART2 FIFO depth" tmpvar_35 CONFIG_UA2_FIFO1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_33 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_33 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_33 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_35 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_35 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_35 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_35 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_35 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_35 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 6 - bool $w.config.f 21 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE - bool $w.config.f 21 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC - int $w.config.f 21 6 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC - bool $w.config.f 21 7 "Enable Timer Unit " CONFIG_GPT_ENABLE - int $w.config.f 21 8 "Number of timers (1 - 7) " CONFIG_GPT_NTIM - int $w.config.f 21 9 "Scaler width (2 - 16) " CONFIG_GPT_SW - int $w.config.f 21 10 "Timer width (2 - 32) " CONFIG_GPT_TW - int $w.config.f 21 11 "Timer unit interrupt " CONFIG_GPT_IRQ - bool $w.config.f 21 12 "Separate interrupts " CONFIG_GPT_SEPIRQ - bool $w.config.f 21 13 "Watchdog enable " CONFIG_GPT_WDOGEN - hex $w.config.f 21 14 "Initial watchdog time-out value " CONFIG_GPT_WDOG - bool $w.config.f 21 15 "Enable generic GPIO port " CONFIG_GRGPIO_ENABLE - int $w.config.f 21 16 "GPIO width " CONFIG_GRGPIO_WIDTH - hex $w.config.f 21 17 "GPIO interrupt mask " CONFIG_GRGPIO_IMASK + bool $w.config.f 20 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE + bool $w.config.f 20 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC + int $w.config.f 20 6 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC + bool $w.config.f 20 7 "Enable Timer Unit " CONFIG_GPT_ENABLE + int $w.config.f 20 8 "Number of timers (1 - 7) " CONFIG_GPT_NTIM + int $w.config.f 20 9 "Scaler width (2 - 16) " CONFIG_GPT_SW + int $w.config.f 20 10 "Timer width (2 - 32) " CONFIG_GPT_TW + int $w.config.f 20 11 "Timer unit interrupt " CONFIG_GPT_IRQ + bool $w.config.f 20 12 "Separate interrupts " CONFIG_GPT_SEPIRQ + bool $w.config.f 20 13 "Watchdog enable " CONFIG_GPT_WDOGEN + hex $w.config.f 20 14 "Initial watchdog time-out value " CONFIG_GPT_WDOG + bool $w.config.f 20 15 "Enable generic GPIO port " CONFIG_GRGPIO_ENABLE + int $w.config.f 20 16 "GPIO width " CONFIG_GRGPIO_WIDTH + hex $w.config.f 20 17 "GPIO interrupt mask " CONFIG_GRGPIO_IMASK @@ -4316,78 +4507,78 @@ proc menu21 {w title} { } } -proc update_menu21 {} { +proc update_menu20 {} { global CONFIG_UART1_ENABLE - if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu21.config.f.x1 normal {x l}} else {configure_entry .menu21.config.f.x1 disabled {x l}} + if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu20.config.f.x1 normal {x l}} else {configure_entry .menu20.config.f.x1 disabled {x l}} global CONFIG_DSU_UART global CONFIG_UART2_ENABLE if {($CONFIG_DSU_UART != 1)} then { - configure_entry .menu21.config.f.x2 normal {n l y}} else {configure_entry .menu21.config.f.x2 disabled {y n l}} - if {($CONFIG_DSU_UART != 1) && ($CONFIG_UART2_ENABLE == 1)} then {configure_entry .menu21.config.f.x3 normal {x l}} else {configure_entry .menu21.config.f.x3 disabled {x l}} + configure_entry .menu20.config.f.x2 normal {n l y}} else {configure_entry .menu20.config.f.x2 disabled {y n l}} + if {($CONFIG_DSU_UART != 1) && ($CONFIG_UART2_ENABLE == 1)} then {configure_entry .menu20.config.f.x3 normal {x l}} else {configure_entry .menu20.config.f.x3 disabled {x l}} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { - configure_entry .menu21.config.f.x5 normal {n l y}} else {configure_entry .menu21.config.f.x5 disabled {y n l}} + configure_entry .menu20.config.f.x5 normal {n l y}} else {configure_entry .menu20.config.f.x5 disabled {y n l}} global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu21.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x6.l configure -state normal; } else {.menu21.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x6.l configure -state disabled} + if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu20.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x6.l configure -state normal; } else {.menu20.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x6.l configure -state disabled} global CONFIG_GPT_ENABLE global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {.menu21.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x8.l configure -state normal; } else {.menu21.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x8.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x8.l configure -state normal; } else {.menu20.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x8.l configure -state disabled} global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu21.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x9.l configure -state normal; } else {.menu21.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x9.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x9.l configure -state normal; } else {.menu20.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x9.l configure -state disabled} global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu21.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x10.l configure -state normal; } else {.menu21.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x10.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x10.l configure -state normal; } else {.menu20.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x10.l configure -state disabled} global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {.menu21.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x11.l configure -state normal; } else {.menu21.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x11.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x11.l configure -state normal; } else {.menu20.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x11.l configure -state disabled} global CONFIG_GPT_SEPIRQ if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu21.config.f.x12 normal {n l y}} else {configure_entry .menu21.config.f.x12 disabled {y n l}} + configure_entry .menu20.config.f.x12 normal {n l y}} else {configure_entry .menu20.config.f.x12 disabled {y n l}} global CONFIG_GPT_WDOGEN if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu21.config.f.x13 normal {n l y}} else {configure_entry .menu21.config.f.x13 disabled {y n l}} + configure_entry .menu20.config.f.x13 normal {n l y}} else {configure_entry .menu20.config.f.x13 disabled {y n l}} global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu21.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x14.l configure -state normal; } else {.menu21.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x14.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu20.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x14.l configure -state normal; } else {.menu20.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x14.l configure -state disabled} global CONFIG_GRGPIO_ENABLE global CONFIG_GRGPIO_WIDTH - if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu21.config.f.x16.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x16.l configure -state normal; } else {.menu21.config.f.x16.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x16.l configure -state disabled} + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu20.config.f.x16.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x16.l configure -state normal; } else {.menu20.config.f.x16.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x16.l configure -state disabled} global CONFIG_GRGPIO_IMASK - if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu21.config.f.x17.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x17.l configure -state normal; } else {.menu21.config.f.x17.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x17.l configure -state disabled} + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu20.config.f.x17.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x17.l configure -state normal; } else {.menu20.config.f.x17.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x17.l configure -state disabled} } -proc update_define_menu21 {} { +proc update_define_menu20 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_32 + global tmpvar_34 global CONFIG_UA1_FIFO1 - if {$tmpvar_32 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_34 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_32 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_34 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_32 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_34 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_32 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_34 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_32 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_34 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_32 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_34 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_DSU_UART global CONFIG_UART2_ENABLE if {($CONFIG_DSU_UART != 1)} then { set CONFIG_UART2_ENABLE [expr $CONFIG_UART2_ENABLE&15]} else {set CONFIG_UART2_ENABLE [expr $CONFIG_UART2_ENABLE|16]} - global tmpvar_33 + global tmpvar_35 global CONFIG_UA2_FIFO1 - if {$tmpvar_33 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} + if {$tmpvar_35 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} global CONFIG_UA2_FIFO2 - if {$tmpvar_33 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} + if {$tmpvar_35 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} global CONFIG_UA2_FIFO4 - if {$tmpvar_33 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} + if {$tmpvar_35 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} global CONFIG_UA2_FIFO8 - if {$tmpvar_33 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} + if {$tmpvar_35 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} global CONFIG_UA2_FIFO16 - if {$tmpvar_33 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} + if {$tmpvar_35 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} global CONFIG_UA2_FIFO32 - if {$tmpvar_33 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} + if {$tmpvar_35 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4419,30 +4610,30 @@ proc update_define_menu21 {} { } -proc menu22 {w title} { +proc menu21 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 22} + catch {destroy $w; unregister_active 21} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 22]] + set active_menus [lsort -integer [linsert $active_menus end 21]] message $w.m -width 400 -aspect 300 -text \ "Spacewire " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "Spacewire " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu23 .menu23 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu22 .menu22 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4470,59 +4661,59 @@ proc menu22 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 22 0 "Enable Spacewire links " CONFIG_SPW_ENABLE - int $w.config.f 22 1 "Number of links (1 - 3)" CONFIG_SPW_NUM - global tmpvar_34 - minimenu $w.config.f 22 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_34 CONFIG_SPW_AHBFIFO4 + bool $w.config.f 21 0 "Enable Spacewire links " CONFIG_SPW_ENABLE + int $w.config.f 21 1 "Number of links (1 - 3)" CONFIG_SPW_NUM + global tmpvar_36 + minimenu $w.config.f 21 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_36 CONFIG_SPW_AHBFIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB RX/TX FIFO size (32-bit words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_34 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_34 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_34 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_34 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_36 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_36 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_36 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_36 -value "32" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_35 - minimenu $w.config.f 22 3 "Receiver FIFO size (bytes) " tmpvar_35 CONFIG_SPW_RXFIFO16 + global tmpvar_37 + minimenu $w.config.f 21 3 "Receiver FIFO size (bytes) " tmpvar_37 CONFIG_SPW_RXFIFO16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Receiver FIFO size (bytes) \"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_35 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_35 -value "32" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_35 -value "64" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_37 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_37 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_37 -value "64" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 - bool $w.config.f 22 4 "Enable RMAP protocol " CONFIG_SPW_RMAP - global tmpvar_36 - minimenu $w.config.f 22 5 "RMAP buffer size (bytes) " tmpvar_36 CONFIG_SPW_RMAPBUF2 + bool $w.config.f 21 4 "Enable RMAP protocol " CONFIG_SPW_RMAP + global tmpvar_38 + minimenu $w.config.f 21 5 "RMAP buffer size (bytes) " tmpvar_38 CONFIG_SPW_RMAPBUF2 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"RMAP buffer size (bytes) \"" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_36 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_36 -value "128" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_36 -value "192" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_36 -value "256" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_38 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_38 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_38 -value "192" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_38 -value "256" -command "update_active" menusplit $w $w.config.f.x5.x.menu 4 - bool $w.config.f 22 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC - bool $w.config.f 22 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL - bool $w.config.f 22 8 "Spacewire FIFO protection " CONFIG_SPW_FT - bool $w.config.f 22 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST - int $w.config.f 22 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS - global tmpvar_37 - minimenu $w.config.f 22 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_37 CONFIG_SPW_GRSPW1 + bool $w.config.f 21 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC + bool $w.config.f 21 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL + bool $w.config.f 21 8 "Spacewire FIFO protection " CONFIG_SPW_FT + bool $w.config.f 21 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST + int $w.config.f 21 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS + global tmpvar_39 + minimenu $w.config.f 21 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_39 CONFIG_SPW_GRSPW1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Select GRSPW core (GRSPW1/GRSPW2) \"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_37 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_37 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_39 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_39 -value "2" -command "update_active" menusplit $w $w.config.f.x11.x.menu 2 - int $w.config.f 22 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN - bool $w.config.f 22 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME - global tmpvar_38 - minimenu $w.config.f 22 14 "Select receiver clock type " tmpvar_38 CONFIG_SPW_RX_SDR + int $w.config.f 21 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN + bool $w.config.f 21 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME + global tmpvar_40 + minimenu $w.config.f 21 14 "Select receiver clock type " tmpvar_40 CONFIG_SPW_RX_SDR menu $w.config.f.x14.x.menu -tearoffcommand "menutitle \"Select receiver clock type \"" - $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_38 -value "SDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_38 -value "DDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_38 -value "Xor" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_38 -value "Aeroflex" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_40 -value "SDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_40 -value "DDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_40 -value "Xor" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_40 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x14.x.menu 4 - global tmpvar_39 - minimenu $w.config.f 22 15 "Select transmitter clock type " tmpvar_39 CONFIG_SPW_TX_SDR + global tmpvar_41 + minimenu $w.config.f 21 15 "Select transmitter clock type " tmpvar_41 CONFIG_SPW_TX_SDR menu $w.config.f.x15.x.menu -tearoffcommand "menutitle \"Select transmitter clock type \"" - $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_39 -value "SDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_39 -value "DDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_39 -value "Aeroflex" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_41 -value "SDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_41 -value "DDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_41 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x15.x.menu 3 @@ -4560,76 +4751,76 @@ proc menu22 {w title} { } } -proc update_menu22 {} { +proc update_menu21 {} { global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM - if {($CONFIG_SPW_ENABLE == 1)} then {.menu22.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x1.l configure -state normal; } else {.menu22.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x1.l configure -state disabled} - if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu22.config.f.x2 normal {x l}} else {configure_entry .menu22.config.f.x2 disabled {x l}} - if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu22.config.f.x3 normal {x l}} else {configure_entry .menu22.config.f.x3 disabled {x l}} + if {($CONFIG_SPW_ENABLE == 1)} then {.menu21.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x1.l configure -state normal; } else {.menu21.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x1.l configure -state disabled} + if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu21.config.f.x2 normal {x l}} else {configure_entry .menu21.config.f.x2 disabled {x l}} + if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu21.config.f.x3 normal {x l}} else {configure_entry .menu21.config.f.x3 disabled {x l}} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { - configure_entry .menu22.config.f.x4 normal {n l y}} else {configure_entry .menu22.config.f.x4 disabled {y n l}} - if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then {configure_entry .menu22.config.f.x5 normal {x l}} else {configure_entry .menu22.config.f.x5 disabled {x l}} + configure_entry .menu21.config.f.x4 normal {n l y}} else {configure_entry .menu21.config.f.x4 disabled {y n l}} + if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then {configure_entry .menu21.config.f.x5 normal {x l}} else {configure_entry .menu21.config.f.x5 disabled {x l}} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { - configure_entry .menu22.config.f.x6 normal {n l y}} else {configure_entry .menu22.config.f.x6 disabled {y n l}} + configure_entry .menu21.config.f.x6 normal {n l y}} else {configure_entry .menu21.config.f.x6 disabled {y n l}} global CONFIG_SPW_RXUNAL if {($CONFIG_SPW_ENABLE == 1)} then { - configure_entry .menu22.config.f.x7 normal {n l y}} else {configure_entry .menu22.config.f.x7 disabled {y n l}} + configure_entry .menu21.config.f.x7 normal {n l y}} else {configure_entry .menu21.config.f.x7 disabled {y n l}} global CONFIG_SPW_FT if {($CONFIG_SPW_ENABLE == 1)} then { - configure_entry .menu22.config.f.x8 normal {n l y}} else {configure_entry .menu22.config.f.x8 disabled {y n l}} + configure_entry .menu21.config.f.x8 normal {n l y}} else {configure_entry .menu21.config.f.x8 disabled {y n l}} global CONFIG_SPW_NETLIST if {($CONFIG_SPW_ENABLE == 1)} then { - configure_entry .menu22.config.f.x9 normal {n l y}} else {configure_entry .menu22.config.f.x9 disabled {y n l}} + configure_entry .menu21.config.f.x9 normal {n l y}} else {configure_entry .menu21.config.f.x9 disabled {y n l}} global CONFIG_SPW_PORTS - if {($CONFIG_SPW_ENABLE == 1)} then {.menu22.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x10.l configure -state normal; } else {.menu22.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x10.l configure -state disabled} - if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu22.config.f.x11 normal {x l}} else {configure_entry .menu22.config.f.x11 disabled {x l}} + if {($CONFIG_SPW_ENABLE == 1)} then {.menu21.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x10.l configure -state normal; } else {.menu21.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x10.l configure -state disabled} + if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu21.config.f.x11 normal {x l}} else {configure_entry .menu21.config.f.x11 disabled {x l}} global CONFIG_SPW_GRSPW2 global CONFIG_SPW_DMACHAN - if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {.menu22.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x12.l configure -state normal; } else {.menu22.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x12.l configure -state disabled} + if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {.menu21.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x12.l configure -state normal; } else {.menu21.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x12.l configure -state disabled} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - configure_entry .menu22.config.f.x13 normal {n l y}} else {configure_entry .menu22.config.f.x13 disabled {y n l}} - if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {configure_entry .menu22.config.f.x14 normal {x l}} else {configure_entry .menu22.config.f.x14 disabled {x l}} - if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {configure_entry .menu22.config.f.x15 normal {x l}} else {configure_entry .menu22.config.f.x15 disabled {x l}} + configure_entry .menu21.config.f.x13 normal {n l y}} else {configure_entry .menu21.config.f.x13 disabled {y n l}} + if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {configure_entry .menu21.config.f.x14 normal {x l}} else {configure_entry .menu21.config.f.x14 disabled {x l}} + if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {configure_entry .menu21.config.f.x15 normal {x l}} else {configure_entry .menu21.config.f.x15 disabled {x l}} } -proc update_define_menu22 {} { +proc update_define_menu21 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_NUM "$CONFIG_SPW_NUM" 1} - global tmpvar_34 + global tmpvar_36 global CONFIG_SPW_AHBFIFO4 - if {$tmpvar_34 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} + if {$tmpvar_36 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} global CONFIG_SPW_AHBFIFO8 - if {$tmpvar_34 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} + if {$tmpvar_36 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} global CONFIG_SPW_AHBFIFO16 - if {$tmpvar_34 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} + if {$tmpvar_36 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} global CONFIG_SPW_AHBFIFO32 - if {$tmpvar_34 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} - global tmpvar_35 + if {$tmpvar_36 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} + global tmpvar_37 global CONFIG_SPW_RXFIFO16 - if {$tmpvar_35 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} + if {$tmpvar_37 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} global CONFIG_SPW_RXFIFO32 - if {$tmpvar_35 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} + if {$tmpvar_37 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} global CONFIG_SPW_RXFIFO64 - if {$tmpvar_35 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} + if {$tmpvar_37 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP&15]} else {set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP|16]} - global tmpvar_36 + global tmpvar_38 global CONFIG_SPW_RMAPBUF2 - if {$tmpvar_36 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} + if {$tmpvar_38 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} global CONFIG_SPW_RMAPBUF4 - if {$tmpvar_36 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} + if {$tmpvar_38 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} global CONFIG_SPW_RMAPBUF6 - if {$tmpvar_36 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} + if {$tmpvar_38 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} global CONFIG_SPW_RMAPBUF8 - if {$tmpvar_36 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} + if {$tmpvar_38 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC&15]} else {set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC|16]} @@ -4644,59 +4835,59 @@ proc update_define_menu22 {} { set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST&15]} else {set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST|16]} global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_PORTS "$CONFIG_SPW_PORTS" 1} - global tmpvar_37 + global tmpvar_39 global CONFIG_SPW_GRSPW1 - if {$tmpvar_37 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} + if {$tmpvar_39 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} global CONFIG_SPW_GRSPW2 - if {$tmpvar_37 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} + if {$tmpvar_39 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} global CONFIG_SPW_DMACHAN if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {validate_int CONFIG_SPW_DMACHAN "$CONFIG_SPW_DMACHAN" 1} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME&15]} else {set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME|16]} - global tmpvar_38 + global tmpvar_40 global CONFIG_SPW_RX_SDR - if {$tmpvar_38 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} + if {$tmpvar_40 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} global CONFIG_SPW_RX_DDR - if {$tmpvar_38 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} + if {$tmpvar_40 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} global CONFIG_SPW_RX_XOR - if {$tmpvar_38 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} + if {$tmpvar_40 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} global CONFIG_SPW_RX_AFLEX - if {$tmpvar_38 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} - global tmpvar_39 + if {$tmpvar_40 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} + global tmpvar_41 global CONFIG_SPW_TX_SDR - if {$tmpvar_39 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} + if {$tmpvar_41 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} global CONFIG_SPW_TX_DDR - if {$tmpvar_39 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} + if {$tmpvar_41 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} global CONFIG_SPW_TX_AFLEX - if {$tmpvar_39 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} + if {$tmpvar_41 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} } -proc menu23 {w title} { +proc menu22 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 23} + catch {destroy $w; unregister_active 22} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 23]] + set active_menus [lsort -integer [linsert $active_menus end 22]] message $w.m -width 400 -aspect 300 -text \ "Keybord and VGA interface" -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "Keybord and VGA interface" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 23; catch {destroy .menu13}; unregister_active 13; menu24 .menu24 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 22; catch {destroy .menu13}; unregister_active 13; menu23 .menu23 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4724,9 +4915,9 @@ proc menu23 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 23 0 "Keyboard/mouse (PS2) interface " CONFIG_KBD_ENABLE - bool $w.config.f 23 1 "Text-based VGA interface " CONFIG_VGA_ENABLE - bool $w.config.f 23 2 "SVGA graphical frame buffer " CONFIG_SVGA_ENABLE + bool $w.config.f 22 0 "Keyboard/mouse (PS2) interface " CONFIG_KBD_ENABLE + bool $w.config.f 22 1 "Text-based VGA interface " CONFIG_VGA_ENABLE + bool $w.config.f 22 2 "SVGA graphical frame buffer " CONFIG_SVGA_ENABLE @@ -4763,15 +4954,15 @@ proc menu23 {w title} { } } -proc update_menu23 {} { +proc update_menu22 {} { global CONFIG_VGA_ENABLE global CONFIG_SVGA_ENABLE if {($CONFIG_VGA_ENABLE == 0)} then { - configure_entry .menu23.config.f.x2 normal {n l y}} else {configure_entry .menu23.config.f.x2 disabled {y n l}} + configure_entry .menu22.config.f.x2 normal {n l y}} else {configure_entry .menu22.config.f.x2 disabled {y n l}} } -proc update_define_menu23 {} { +proc update_define_menu22 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_VGA_ENABLE @@ -4781,31 +4972,31 @@ proc update_define_menu23 {} { } -menu_option menu24 24 "VHDL Debugging " -proc menu24 {w title} { +menu_option menu23 23 "VHDL Debugging " +proc menu23 {w title} { set oldFocus [focus] - catch {destroy $w; unregister_active 24} + catch {destroy $w; unregister_active 23} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 24]] + set active_menus [lsort -integer [linsert $active_menus end 23]] message $w.m -width 400 -aspect 300 -text \ "VHDL Debugging " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "VHDL Debugging " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; break" - set nextscript "catch {focus $oldFocus}; menu25 .menu25 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; break" + set nextscript "catch {focus $oldFocus}; menu24 .menu24 \"$title\"" frame $w.f button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript $w.f.next configure -state disabled bind all "puts \"no more menus\" " button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4833,7 +5024,7 @@ proc menu24 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 24 0 "Accelerated UART tracing " CONFIG_DEBUG_UART + bool $w.config.f 23 0 "Accelerated UART tracing " CONFIG_DEBUG_UART @@ -4869,11 +5060,11 @@ proc menu24 {w title} { } } -proc update_menu24 {} { +proc update_menu23 {} { } -proc update_define_menu24 {} { +proc update_define_menu23 {} { update_define_mainmenu global CONFIG_MODULES } @@ -4919,7 +5110,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4929,6 +5121,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4956,6 +5150,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4968,14 +5163,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_4 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4988,27 +5188,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -5018,17 +5218,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -5040,12 +5240,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -5055,10 +5255,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -5069,7 +5269,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -5081,26 +5281,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_21 "(not set)" +set tmpvar_22 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_22 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_23 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -5108,27 +5310,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_28 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -5149,12 +5355,12 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_GRUSB_DCL 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_GRUSB_DCL_ULPI 0 set CONFIG_GRUSB_DCL_UTMI8 0 set CONFIG_GRUSB_DCL_UTMI16 0 set CONFIG_DSU_ETH 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -5182,7 +5388,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -5193,17 +5399,12 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 -set CONFIG_ATA_ENABLE 0 -set CONFIG_ATAIO A00 -set CONFIG_ATAIRQ 10 -set CONFIG_ATA_MWDMA 0 -set CONFIG_ATA_FIFO 8 set CONFIG_CAN_ENABLE 0 set CONFIG_CAN_NUM 1 set CONFIG_CANIO C00 @@ -5213,7 +5414,7 @@ set CONFIG_CAN_SYNCRST 0 set CONFIG_CAN_FT 0 set CONFIG_GRUSBDC_ENABLE 0 set CONFIG_GRUSBDC_AIFACE 0 -set tmpvar_31 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_GRUSBDC_ULPI 0 set CONFIG_GRUSBDC_UTMI8 0 set CONFIG_GRUSBDC_UTMI16 0 @@ -5252,7 +5453,7 @@ set CONFIG_GRUSBDC_O13 1024 set CONFIG_GRUSBDC_O14 1024 set CONFIG_GRUSBDC_O15 1024 set CONFIG_UART1_ENABLE 0 -set tmpvar_32 "(not set)" +set tmpvar_34 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5260,7 +5461,7 @@ set CONFIG_UA1_FIFO8 0 set CONFIG_UA1_FIFO16 0 set CONFIG_UA1_FIFO32 0 set CONFIG_UART2_ENABLE 0 -set tmpvar_33 "(not set)" +set tmpvar_35 "(not set)" set CONFIG_UA2_FIFO1 0 set CONFIG_UA2_FIFO2 0 set CONFIG_UA2_FIFO4 0 @@ -5283,17 +5484,17 @@ set CONFIG_GRGPIO_WIDTH 8 set CONFIG_GRGPIO_IMASK 0000 set CONFIG_SPW_ENABLE 0 set CONFIG_SPW_NUM 1 -set tmpvar_34 "(not set)" +set tmpvar_36 "(not set)" set CONFIG_SPW_AHBFIFO4 0 set CONFIG_SPW_AHBFIFO8 0 set CONFIG_SPW_AHBFIFO16 0 set CONFIG_SPW_AHBFIFO32 0 -set tmpvar_35 "(not set)" +set tmpvar_37 "(not set)" set CONFIG_SPW_RXFIFO16 0 set CONFIG_SPW_RXFIFO32 0 set CONFIG_SPW_RXFIFO64 0 set CONFIG_SPW_RMAP 0 -set tmpvar_36 "(not set)" +set tmpvar_38 "(not set)" set CONFIG_SPW_RMAPBUF2 0 set CONFIG_SPW_RMAPBUF4 0 set CONFIG_SPW_RMAPBUF6 0 @@ -5303,17 +5504,17 @@ set CONFIG_SPW_RXUNAL 0 set CONFIG_SPW_FT 0 set CONFIG_SPW_NETLIST 0 set CONFIG_SPW_PORTS 1 -set tmpvar_37 "(not set)" +set tmpvar_39 "(not set)" set CONFIG_SPW_GRSPW1 0 set CONFIG_SPW_GRSPW2 0 set CONFIG_SPW_DMACHAN 1 set CONFIG_SPW_RTSAME 0 -set tmpvar_38 "(not set)" +set tmpvar_40 "(not set)" set CONFIG_SPW_RX_SDR 0 set CONFIG_SPW_RX_DDR 0 set CONFIG_SPW_RX_XOR 0 set CONFIG_SPW_RX_AFLEX 0 -set tmpvar_39 "(not set)" +set tmpvar_41 "(not set)" set CONFIG_SPW_TX_SDR 0 set CONFIG_SPW_TX_DDR 0 set CONFIG_SPW_TX_AFLEX 0 @@ -5376,7 +5577,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5386,6 +5588,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5428,6 +5632,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_3 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_3 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_3 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_3 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5440,9 +5645,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5456,239 +5662,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_4 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_4 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_4 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_4 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_4 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_5 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_5 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_6 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_6 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_6 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_7 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_7 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_7 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_7 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_8 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_8 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_9 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_9 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_9 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_9 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_10 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_11 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_11 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_11 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_11 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_11 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_11 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_11 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_12 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_13 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_13 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_15 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_16 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_16 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_16 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_16 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_16 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_16 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_16 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_17 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_18 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_18 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_19 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_19 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_19 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_19 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_19 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_19 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_19 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_19 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_19 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_20 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_21 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_21 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_22 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_23 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_23 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_24 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_24 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_24 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_24 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_24 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_26 + global tmpvar_27 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_28 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_28 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_28 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_28 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_28 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5732,21 +6088,21 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_DSU_JTAG $CONFIG_DSU_JTAG [list $notmod] 2 global CONFIG_GRUSB_DCL write_tristate $cfg $autocfg CONFIG_GRUSB_DCL $CONFIG_GRUSB_DCL [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_GRUSB_DCL == 1)} then { - if { $tmpvar_27 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 0 [list $notmod] 2 } - if { $tmpvar_27 == "UTMI/UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 0 [list $notmod] 2 } - if { $tmpvar_27 == "UTMI/UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 0 [list $notmod] 2 }} + if { $tmpvar_29 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 0 [list $notmod] 2 } + if { $tmpvar_29 == "UTMI/UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 0 [list $notmod] 2 } + if { $tmpvar_29 == "UTMI/UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 0 [list $notmod] 2 }} global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5796,38 +6152,27 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_30 + global tmpvar_32 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} - write_comment $cfg $autocfg "IDE Disk controller " - global CONFIG_ATA_ENABLE - write_tristate $cfg $autocfg CONFIG_ATA_ENABLE $CONFIG_ATA_ENABLE [list $notmod] 2 - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_ATAIO $CONFIG_ATAIO $notmod } - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_ATAIRQ $CONFIG_ATAIRQ $notmod } - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_ATA_MWDMA $CONFIG_ATA_MWDMA [list $notmod] 2 } - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {write_int $cfg $autocfg CONFIG_ATA_FIFO $CONFIG_ATA_FIFO $notmod } + if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_32 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "CAN " global CONFIG_CAN_ENABLE write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 @@ -5848,11 +6193,11 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ENABLE $CONFIG_GRUSBDC_ENABLE [list $notmod] 2 global CONFIG_GRUSBDC_AIFACE if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRUSBDC_AIFACE $CONFIG_GRUSBDC_AIFACE [list $notmod] 2 } - global tmpvar_31 + global tmpvar_33 if {($CONFIG_GRUSBDC_ENABLE == 1)} then { - if { $tmpvar_31 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ULPI 0 [list $notmod] 2 } - if { $tmpvar_31 == "UTMI/UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI8 0 [list $notmod] 2 } - if { $tmpvar_31 == "UTMI/UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI16 0 [list $notmod] 2 }} + if { $tmpvar_33 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ULPI 0 [list $notmod] 2 } + if { $tmpvar_33 == "UTMI/UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI8 0 [list $notmod] 2 } + if { $tmpvar_33 == "UTMI/UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI16 0 [list $notmod] 2 }} global CONFIG_GRUSBDC_NEPI if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_NEPI $CONFIG_GRUSBDC_NEPI $notmod } global CONFIG_GRUSBDC_NEPO @@ -5924,24 +6269,24 @@ proc writeconfig {file1 file2} { write_comment $cfg $autocfg "UART, timer, I/O port and interrupt controller" global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_32 + global tmpvar_34 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_32 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_32 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_34 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_34 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_34 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_34 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_34 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_34 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_UART2_ENABLE if {($CONFIG_DSU_UART != 1)} then {write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2 } - global tmpvar_33 + global tmpvar_35 if {($CONFIG_DSU_UART != 1) && ($CONFIG_UART2_ENABLE == 1)} then { - if { $tmpvar_33 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_33 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_33 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_35 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_35 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_35 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_35 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_35 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_35 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5975,25 +6320,25 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_SPW_ENABLE $CONFIG_SPW_ENABLE [list $notmod] 2 global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_NUM $CONFIG_SPW_NUM $notmod } - global tmpvar_34 + global tmpvar_36 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_34 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } - if { $tmpvar_34 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } - if { $tmpvar_34 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } - if { $tmpvar_34 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} - global tmpvar_35 + if { $tmpvar_36 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } + if { $tmpvar_36 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } + if { $tmpvar_36 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } + if { $tmpvar_36 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} + global tmpvar_37 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_35 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } - if { $tmpvar_35 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } - if { $tmpvar_35 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} + if { $tmpvar_37 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } + if { $tmpvar_37 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } + if { $tmpvar_37 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAP $CONFIG_SPW_RMAP [list $notmod] 2 } - global tmpvar_36 + global tmpvar_38 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then { - if { $tmpvar_36 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } - if { $tmpvar_36 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } - if { $tmpvar_36 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } - if { $tmpvar_36 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} + if { $tmpvar_38 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } + if { $tmpvar_38 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } + if { $tmpvar_38 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } + if { $tmpvar_38 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAPCRC $CONFIG_SPW_RMAPCRC [list $notmod] 2 } global CONFIG_SPW_RXUNAL @@ -6004,26 +6349,26 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_NETLIST $CONFIG_SPW_NETLIST [list $notmod] 2 } global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_PORTS $CONFIG_SPW_PORTS $notmod } - global tmpvar_37 + global tmpvar_39 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_37 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } - if { $tmpvar_37 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} + if { $tmpvar_39 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } + if { $tmpvar_39 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} global CONFIG_SPW_DMACHAN global CONFIG_SPW_GRSPW2 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_int $cfg $autocfg CONFIG_SPW_DMACHAN $CONFIG_SPW_DMACHAN $notmod } global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RTSAME $CONFIG_SPW_RTSAME [list $notmod] 2 } - global tmpvar_38 + global tmpvar_40 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_38 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } - if { $tmpvar_38 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } - if { $tmpvar_38 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } - if { $tmpvar_38 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} - global tmpvar_39 + if { $tmpvar_40 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } + if { $tmpvar_40 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } + if { $tmpvar_40 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } + if { $tmpvar_40 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} + global tmpvar_41 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_39 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } - if { $tmpvar_39 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } - if { $tmpvar_39 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} + if { $tmpvar_41 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } + if { $tmpvar_41 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } + if { $tmpvar_41 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} write_comment $cfg $autocfg "Keybord and VGA interface" global CONFIG_KBD_ENABLE write_tristate $cfg $autocfg CONFIG_KBD_ENABLE $CONFIG_KBD_ENABLE [list $notmod] 2 @@ -6075,7 +6420,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -6085,6 +6431,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -6105,8 +6453,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -6189,11 +6542,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -6214,6 +6569,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_GRUSB_DCL_ULPI; set CONFIG_GRUSB_DCL_ULPI 0 global CONFIG_GRUSB_DCL_UTMI8; set CONFIG_GRUSB_DCL_UTMI8 0 global CONFIG_GRUSB_DCL_UTMI16; set CONFIG_GRUSB_DCL_UTMI16 0 @@ -6345,8 +6704,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -6365,6 +6726,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -6411,406 +6776,432 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_3 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_3 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_3 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_3 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_3 "Xilinx-DCM" } global tmpvar_4 - set tmpvar_4 "5-cycles" + set tmpvar_4 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_4 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_4 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_4 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_4 "Custom-configuration" } + global tmpvar_5 + set tmpvar_5 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_5 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_5 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } - global tmpvar_5 - set tmpvar_5 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_5 "5-cycles" } + global tmpvar_6 + set tmpvar_6 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_6 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_6 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } - global tmpvar_6 - set tmpvar_6 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_6 "Designware" } + global tmpvar_7 + set tmpvar_7 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_7 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_7 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } - global tmpvar_7 - set tmpvar_7 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_7 "Meiko" } + global tmpvar_8 + set tmpvar_8 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_8 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_8 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_8 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } - global tmpvar_8 - set tmpvar_8 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_8 "TechSpec" } + global tmpvar_9 + set tmpvar_9 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_9 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_9 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } - global tmpvar_9 - set tmpvar_9 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_9 "Non-blocking" } + global tmpvar_10 + set tmpvar_10 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_10 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } - global tmpvar_10 - set tmpvar_10 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_10 "4" } + global tmpvar_11 + set tmpvar_11 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_11 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_11 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_11 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_11 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_11 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_11 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_11 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } - global tmpvar_11 - set tmpvar_11 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_11 "256" } + global tmpvar_12 + set tmpvar_12 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_12 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } - global tmpvar_12 - set tmpvar_12 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_12 "32" } + global tmpvar_13 + set tmpvar_13 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_13 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_13 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_13 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } - global tmpvar_13 - set tmpvar_13 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_13 "LRU" } + global tmpvar_14 + set tmpvar_14 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_14 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_14 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_14 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_14 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_14 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_14 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_14 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_14 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } - global tmpvar_14 - set tmpvar_14 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_14 "256" } + global tmpvar_15 + set tmpvar_15 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_15 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } - global tmpvar_15 - set tmpvar_15 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_15 "4" } + global tmpvar_16 + set tmpvar_16 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_16 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_16 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_16 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_16 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_16 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_16 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_16 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } - global tmpvar_16 - set tmpvar_16 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_16 "256" } + global tmpvar_17 + set tmpvar_17 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_17 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } - global tmpvar_17 - set tmpvar_17 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_17 "32" } + global tmpvar_18 + set tmpvar_18 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_18 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_18 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_18 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } - global tmpvar_18 - set tmpvar_18 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_18 "LRU" } + global tmpvar_19 + set tmpvar_19 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_19 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_19 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_19 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_19 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_19 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_19 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_19 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_19 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } - global tmpvar_19 - set tmpvar_19 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_19 "256" } + global tmpvar_20 + set tmpvar_20 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_20 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } - global tmpvar_20 - set tmpvar_20 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_20 "split" } + global tmpvar_21 + set tmpvar_21 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_21 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_21 "Increment" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_23 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_23 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_23 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_23 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } - global tmpvar_23 - set tmpvar_23 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_23 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_23 "64" } + global tmpvar_24 + set tmpvar_24 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_24 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_24 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_24 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_24 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_24 "Programmable" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_26 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_26 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_26 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_26 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_26 "16" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_27 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "ULPI" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_28 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_28 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_28 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_28 "TMR" } + global tmpvar_29 + set tmpvar_29 "ULPI" global CONFIG_GRUSB_DCL_ULPI - if { $CONFIG_GRUSB_DCL_ULPI == 1 } then { set tmpvar_27 "ULPI" } + if { $CONFIG_GRUSB_DCL_ULPI == 1 } then { set tmpvar_29 "ULPI" } global CONFIG_GRUSB_DCL_UTMI8 - if { $CONFIG_GRUSB_DCL_UTMI8 == 1 } then { set tmpvar_27 "UTMI/UTMI+8-bit" } + if { $CONFIG_GRUSB_DCL_UTMI8 == 1 } then { set tmpvar_29 "UTMI/UTMI+8-bit" } global CONFIG_GRUSB_DCL_UTMI16 - if { $CONFIG_GRUSB_DCL_UTMI16 == 1 } then { set tmpvar_27 "UTMI/UTMI+16-bit" } - global tmpvar_28 - set tmpvar_28 "2" + if { $CONFIG_GRUSB_DCL_UTMI16 == 1 } then { set tmpvar_29 "UTMI/UTMI+16-bit" } + global tmpvar_30 + set tmpvar_30 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_30 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_30 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_30 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_30 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } - global tmpvar_29 - set tmpvar_29 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_30 "16" } + global tmpvar_31 + set tmpvar_31 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_31 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_31 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_31 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_31 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_31 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_31 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } - global tmpvar_30 - set tmpvar_30 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_31 "64" } + global tmpvar_32 + set tmpvar_32 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_32 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_32 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_32 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_32 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } - global tmpvar_31 - set tmpvar_31 "ULPI" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_32 "64" } + global tmpvar_33 + set tmpvar_33 "ULPI" global CONFIG_GRUSBDC_ULPI - if { $CONFIG_GRUSBDC_ULPI == 1 } then { set tmpvar_31 "ULPI" } + if { $CONFIG_GRUSBDC_ULPI == 1 } then { set tmpvar_33 "ULPI" } global CONFIG_GRUSBDC_UTMI8 - if { $CONFIG_GRUSBDC_UTMI8 == 1 } then { set tmpvar_31 "UTMI/UTMI+8-bit" } + if { $CONFIG_GRUSBDC_UTMI8 == 1 } then { set tmpvar_33 "UTMI/UTMI+8-bit" } global CONFIG_GRUSBDC_UTMI16 - if { $CONFIG_GRUSBDC_UTMI16 == 1 } then { set tmpvar_31 "UTMI/UTMI+16-bit" } - global tmpvar_32 - set tmpvar_32 "1" + if { $CONFIG_GRUSBDC_UTMI16 == 1 } then { set tmpvar_33 "UTMI/UTMI+16-bit" } + global tmpvar_34 + set tmpvar_34 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_32 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_34 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_32 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_34 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_32 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_34 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_32 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_34 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_32 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_34 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_32 "32" } - global tmpvar_33 - set tmpvar_33 "1" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_34 "32" } + global tmpvar_35 + set tmpvar_35 "1" global CONFIG_UA2_FIFO1 - if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_33 "1" } + if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_35 "1" } global CONFIG_UA2_FIFO2 - if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_33 "2" } + if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_35 "2" } global CONFIG_UA2_FIFO4 - if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_33 "4" } + if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_35 "4" } global CONFIG_UA2_FIFO8 - if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_33 "8" } + if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_35 "8" } global CONFIG_UA2_FIFO16 - if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_33 "16" } + if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_35 "16" } global CONFIG_UA2_FIFO32 - if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_33 "32" } - global tmpvar_34 - set tmpvar_34 "16" + if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_35 "32" } + global tmpvar_36 + set tmpvar_36 "16" global CONFIG_SPW_AHBFIFO4 - if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_34 "4" } + if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_36 "4" } global CONFIG_SPW_AHBFIFO8 - if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_34 "8" } + if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_36 "8" } global CONFIG_SPW_AHBFIFO16 - if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_34 "16" } + if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_36 "16" } global CONFIG_SPW_AHBFIFO32 - if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_34 "32" } - global tmpvar_35 - set tmpvar_35 "16" + if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_36 "32" } + global tmpvar_37 + set tmpvar_37 "16" global CONFIG_SPW_RXFIFO16 - if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_35 "16" } + if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_37 "16" } global CONFIG_SPW_RXFIFO32 - if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_35 "32" } + if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_37 "32" } global CONFIG_SPW_RXFIFO64 - if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_35 "64" } - global tmpvar_36 - set tmpvar_36 "64" + if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_37 "64" } + global tmpvar_38 + set tmpvar_38 "64" global CONFIG_SPW_RMAPBUF2 - if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_36 "64" } + if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_38 "64" } global CONFIG_SPW_RMAPBUF4 - if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_36 "128" } + if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_38 "128" } global CONFIG_SPW_RMAPBUF6 - if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_36 "192" } + if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_38 "192" } global CONFIG_SPW_RMAPBUF8 - if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_36 "256" } - global tmpvar_37 - set tmpvar_37 "2" + if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_38 "256" } + global tmpvar_39 + set tmpvar_39 "2" global CONFIG_SPW_GRSPW1 - if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_37 "1" } + if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_39 "1" } global CONFIG_SPW_GRSPW2 - if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_37 "2" } - global tmpvar_38 - set tmpvar_38 "DDR" + if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_39 "2" } + global tmpvar_40 + set tmpvar_40 "DDR" global CONFIG_SPW_RX_SDR - if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_38 "SDR" } + if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_40 "SDR" } global CONFIG_SPW_RX_DDR - if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_38 "DDR" } + if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_40 "DDR" } global CONFIG_SPW_RX_XOR - if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_38 "Xor" } + if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_40 "Xor" } global CONFIG_SPW_RX_AFLEX - if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_38 "Aeroflex" } - global tmpvar_39 - set tmpvar_39 "SDR" + if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_40 "Aeroflex" } + global tmpvar_41 + set tmpvar_41 "SDR" global CONFIG_SPW_TX_SDR - if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_39 "SDR" } + if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_41 "SDR" } global CONFIG_SPW_TX_DDR - if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_39 "DDR" } + if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_41 "DDR" } global CONFIG_SPW_TX_AFLEX - if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_39 "Aeroflex" } + if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_41 "Aeroflex" } } diff --git a/designs/leon3-gr-xc3s-1500/leon3mp.vhd b/designs/leon3-gr-xc3s-1500/leon3mp.vhd index 8af2e5c3..c635d454 100644 --- a/designs/leon3-gr-xc3s-1500/leon3mp.vhd +++ b/designs/leon3-gr-xc3s-1500/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -38,7 +38,6 @@ use gaisler.net.all; use gaisler.jtag.all; use gaisler.spacewire.all; use gaisler.grusb.all; -use gaisler.ata.all; library esa; use esa.memoryctrl.all; @@ -146,21 +145,7 @@ entity leon3mp is usb_txvalid : out std_ulogic; usb_validh : inout std_ulogic; usb_xcvrsel : out std_ulogic; - usb_vbus : in std_ulogic; - - ata_rstn : out std_logic; - ata_data : inout std_logic_vector(15 downto 0); - ata_da : out std_logic_vector(2 downto 0); - ata_cs0 : out std_logic; - ata_cs1 : out std_logic; - ata_dior : out std_logic; - ata_diow : out std_logic; - ata_iordy : in std_logic; - ata_intrq : in std_logic; - ata_dmarq : in std_logic; - ata_dmack : out std_logic; - --ata_dasp : in std_logic - ata_csel : out std_logic + usb_vbus : in std_ulogic ); end; @@ -174,7 +159,7 @@ constant blength : integer := 12; constant fifodepth : integer := 8; constant maxahbm : integer := CFG_NCPU+CFG_AHB_UART+CFG_GRETH+ CFG_AHB_JTAG+CFG_SPW_NUM*CFG_SPW_EN+CFG_GRUSB_DCL+CFG_SVGA_ENABLE+ - CFG_ATA+CFG_GRUSBDC; + CFG_GRUSBDC; signal vcc, gnd : std_logic_vector(4 downto 0); signal memi : memory_in_type; @@ -230,7 +215,7 @@ signal vgao : apbvga_out_type; constant BOARD_FREQ : integer := 50000; -- input frequency in KHz constant CPU_FREQ : integer := BOARD_FREQ * CFG_CLKMUL / CFG_CLKDIV; -- cpu frequency in KHz -constant IOAEN : integer := CFG_CAN + CFG_ATA + CFG_GRUSBDC; +constant IOAEN : integer := CFG_CAN + CFG_GRUSBDC; signal spwi : grspw_in_type_vector(0 to 2); signal spwo : grspw_out_type_vector(0 to 2); @@ -245,9 +230,6 @@ signal uclk : std_ulogic; signal usbi : grusb_in_type; signal usbo : grusb_out_type; -signal idei : ata_in_type; -signal ideo : ata_out_type; - constant SPW_LOOP_BACK : integer := 0; signal dac_clk, video_clk, clk50 : std_logic; -- signals to vga_clkgen. @@ -836,57 +818,6 @@ begin ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+CFG_SVGA_ENABLE+ CFG_SPW_NUM*CFG_SPW_EN)); end generate usb_dcl0; - ------------------------------------------------------------------------ ---- AHB ATA ---------------------------------------------------------- ------------------------------------------------------------------------ - - ata0 : if CFG_ATA = 1 generate - atac0 : atactrl - generic map( - tech => 0, fdepth => CFG_ATAFIFO, - mhindex => CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+ - CFG_SVGA_ENABLE+CFG_SPW_NUM*CFG_SPW_EN+CFG_GRUSB_DCL+ - CFG_GRUSBDC, - shindex => 3, haddr => 16#A00#, hmask => 16#fff#, pirq => CFG_ATAIRQ, - mwdma => CFG_ATADMA, TWIDTH => 8, - -- PIO mode 0 settings (@100MHz clock) - PIO_mode0_T1 => 6, -- 70ns - PIO_mode0_T2 => 28, -- 290ns - PIO_mode0_T4 => 2, -- 30ns - PIO_mode0_Teoc => 23 -- 240ns ==> T0 - T1 - T2 = 600 - 70 - 290 = 240 - ) - port map( - rst => rstn, arst => vcc(0), clk => clkm, ahbmi => ahbmi, - ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+ - CFG_SVGA_ENABLE+CFG_SPW_NUM*CFG_SPW_EN+ - CFG_GRUSB_DCL+CFG_GRUSBDC), - ahbsi => ahbsi, ahbso => ahbso(3), atai => idei, atao => ideo); - - ata_rstn_pad : outpad generic map (tech => padtech) - port map (ata_rstn, ideo.rstn); - ata_data_pad : iopadv generic map (tech => padtech, width => 16, oepol => 1) - port map (ata_data, ideo.ddo, ideo.oen, idei.ddi); - ata_da_pad : outpadv generic map (tech => padtech, width => 3) - port map (ata_da, ideo.da); - ata_cs0_pad : outpad generic map (tech => padtech) - port map (ata_cs0, ideo.cs0); - ata_cs1_pad : outpad generic map (tech => padtech) - port map (ata_cs1, ideo.cs1); - ata_dior_pad : outpad generic map (tech => padtech) - port map (ata_dior, ideo.dior); - ata_diow_pad : outpad generic map (tech => padtech) - port map (ata_diow, ideo.diow); - iordy_pad : inpad generic map (tech => padtech) - port map (ata_iordy, idei.iordy); - intrq_pad : inpad generic map (tech => padtech) - port map (ata_intrq, idei.intrq); - dmarq_pad : inpad generic map (tech => padtech) - port map (ata_dmarq, idei.dmarq); - dmack_pad : outpad generic map (tech => padtech) - port map (ata_dmack, ideo.dmack); - ata_csel <= '0'; - end generate; ----------------------------------------------------------------------- --- Drive unused bus elements --------------------------------------- diff --git a/designs/leon3-gr-xc3s-1500/sdram.srec b/designs/leon3-gr-xc3s-1500/sdram.srec index a1458782..bf2f4b5a 100755 --- a/designs/leon3-gr-xc3s-1500/sdram.srec +++ b/designs/leon3-gr-xc3s-1500/sdram.srec @@ -1,14 +1,14 @@ S00D0000736472616D2E7372656300 -S31540000000881000000910007181C1216C01000000B8 -S31540000010A1480000A75000001080203BAC102001F2 +S31540000000881000000910007181C1203401000000F1 +S31540000010A1480000A75000001080203EAC102001EF S3154000002091D0200001000000010000000100000006 S3154000003091D02000010000000100000001000000F6 -S31540000040A14800002910007181C520A401000000CC -S31540000050A14800002910006E81C523C80100000098 -S31540000060A14800002910006F81C52034010000001E +S31540000040A14800002910007081C5236C0100000002 +S31540000050A14800002910006E81C522A801000000B9 +S31540000060A14800002910006E81C52314010000003C S3154000007091D02000010000000100000001000000B6 S3154000008091D02000010000000100000001000000A6 -S31540000090A1480000A75000001080201BAC1020098A +S31540000090A1480000A75000001080201EAC10200987 S315400000A091D0200001000000010000000100000086 S315400000B091D0200001000000010000000100000076 S315400000C091D0200001000000010000000100000066 @@ -16,21 +16,21 @@ S315400000D091D0200001000000010000000100000056 S315400000E091D0200001000000010000000100000046 S315400000F091D0200001000000010000000100000036 S3154000010091D0200001000000010000000100000025 -S31540000110AE102001A148000010806F73A750000068 -S31540000120AE102002A148000010806F6FA75000005B -S31540000130AE102003A148000010806F6BA75000004E -S31540000140AE102004A148000010806F67A750000041 -S31540000150AE102005A148000010806F63A750000034 -S31540000160AE102006A148000010806F5FA750000027 -S31540000170AE102007A148000010806F5BA75000001A -S31540000180AE102008A148000010806F57A75000000D -S31540000190AE102009A148000010806F53A750000000 -S315400001A0AE10200AA148000010806F4FA7500000F3 -S315400001B0AE10200BA148000010806F4BA7500000E6 -S315400001C0AE10200CA148000010806F47A7500000D9 -S315400001D0AE10200DA148000010806F43A7500000CC -S315400001E0AE10200EA148000010806F3FA7500000BF -S315400001F0AE10200FA148000010806F3BA7500000B2 +S31540000110AE102001A148000010806F2BA7500000B0 +S31540000120AE102002A148000010806F27A7500000A3 +S31540000130AE102003A148000010806F23A750000096 +S31540000140AE102004A148000010806F1FA750000089 +S31540000150AE102005A148000010806F1BA75000007C +S31540000160AE102006A148000010806F17A75000006F +S31540000170AE102007A148000010806F13A750000062 +S31540000180AE102008A148000010806F0FA750000055 +S31540000190AE102009A148000010806F0BA750000048 +S315400001A0AE10200AA148000010806F07A75000003B +S315400001B0AE10200BA148000010806F03A75000002E +S315400001C0AE10200CA148000010806EFFA750000022 +S315400001D0AE10200DA148000010806EFBA750000015 +S315400001E0AE10200EA148000010806EF7A750000008 +S315400001F0AE10200FA148000010806EF3A7500000FB S3154000020091D0200001000000010000000100000024 S3154000021091D0200001000000010000000100000014 S3154000022091D0200001000000010000000100000004 @@ -129,10 +129,10 @@ S315400007E091D020000100000001000000010000003F S315400007F091D020000100000001000000010000002F S3154000080091D020000100000001000000010000001E S3154000081091D020000100000001000000010000000E -S31540000820A14800002910006F81C522080100000080 -S31540000830A148000010806D19A7500000010000007B +S31540000820A14800002910006F81C520E801000000A2 +S31540000830A148000010806CD1A750000001000000C4 S3154000084091D02000010000000100000001000000DE -S31540000850A14800002910006F81C521EC010000006D +S31540000850A14800002910006F81C520CC010000008E S3154000086091D02000010000000100000001000000BE S3154000087091D02000010000000100000001000000AE S3154000088091D020000100000001000000010000009E @@ -255,131 +255,131 @@ S31540000FC091D0200001000000010000000100000057 S31540000FD091D0200001000000010000000100000047 S31540000FE091D0200001000000010000000100000037 S31540000FF091D0200001000000010000000100000027 -S315400010009DE3BFC0051001438410A0600710014452 +S315400010009DE3BFC0051001238410A0600710012492 S315400010108610E1B8821000008620C00286A0E00853 -S3154000102036BFFFFFC038800311100144901221B82B -S31540001030C022000040006BA60100000040006BA6E5 -S315400010400100000040006D580100000011100072C0 -S31540001050901222A0400066A60100000040006E8A61 -S3154000106001000000400000430100000040006C8386 -S315400010700100000081C7E00881E800009DE3BF98B9 -S3154000108023100143C20C606080A0600012800015EE -S315400010902110008010800005C204200C9FC3400030 -S315400010A0C224200CC204200CDA00400080A3600059 -S315400010B012BFFFFB82006004030000008210600044 -S315400010C080A060000280000682102001111000728C -S315400010D06FFFFBCC9012223082102001C22C606040 -S315400010E081C7E00881E800009DE3BF9881C7E0081A -S315400010F081E800009DE3BF98030000008210600075 -S31540001100111000721310014380A06000901222302B -S3154000111002800004921260646FFFFBBA0100000077 -S315400011201B100144C20361B880A060000280000920 -S31540001130B01361B8030000008210600080A0600018 -S3154000114002800004010000006FFFFBAE81E8000052 -S315400011500100000081C7E00881E800009DE3BF98D8 -S3154000116081C7E00881E8000081C3E0080100000073 -S315400011709DE3BF984000000A01000000400001497D -S31540001180010000001120000340003C2C9012210079 -S315400011904000000E81E80000010000009DE3BF987A -S315400011A0400000290100000080A2200012800005B6 -S315400011B003100080D80060109A102001DA23201016 -S315400011C081C7E00891E8200003100080D800601035 -S315400011D09A102001DA23201481C3E00890102000E1 -S315400011E003100080DA006010D023400081C3E0087D -S315400011F09010200003100080DA006010D0236008B1 -S3154000120081C3E0089010200003100080DA006010CF -S31540001210D023600481C3E0089010200013100080A2 -S31540001220921260149010200081C3E008D0EA40205A -S3154000123090102000131000809212601481C3E008C1 -S31540001240D0224000914440009132201C81C3E008E6 -S31540001250900A200F81C3E008D08200209010200C15 -S3154000126081C3E008D08200408210000880A20009B5 -S3154000127014800003902200099022400181C3E008B7 -S3154000128001000000932A600282102001C222000958 -S315400012909810200080A3000A1680000A96102001AC -S315400012A0832B2002DA02000180A0000D826020001C -S315400012B09803200180A3000A06BFFFFA960AC001E0 -S315400012C080A2E00002BFFFF49810200081C3E0082E -S315400012D0010000009DE3BF98C20620108330601CC9 -S315400012E0A0100018A400600180A4A0010280006C38 -S315400012F0B0103FFF7FFFFFD401000000AA10000896 -S31540001300912A20047FFFFFBC900220077FFFFFD475 -S315400013100100000003020000808A00010280005C98 -S31540001320010000009A056001821020018328400DCB -S3154000133011100080C2242010901220A09210001597 -S315400013407FFFFFD1941000120310008082106018B6 -S31540001350A12D6002C0204010DA004010A610000106 -S3154000136080A36009291001431480002BAC100001B2 -S315400013707FFFFFAB0100000080A2200012BFFFFDEF -S3154000138001000000B010200080A600121680001454 -S315400013900100000010800005A210001680A6001271 -S315400013A01680000F01000000832E2002D00440105A -S315400013B0D20440017FFFFFADB006200180A220018C -S315400013C004BFFFF7901020027FFFFF90010000004E -S315400013D080A6001206BFFFF6832E2002C205207C9F -S315400013E082006001C225207C7FFFFF920100000041 -S315400013F0C204C01082006001C224C010DA04C010CA -S3154000140080A3600904BFFFDB111000801080000438 -S315400014109012205C111000809012205C92100015F2 -S315400014207FFFFF9994100012832CA0028200401285 -S31540001430A0004001DA05207C80A4000D0280000453 -S31540001440231001437FFFFF7190102003C204607C8C -S3154000145080A060000480000601000000C204607C99 -S3154000146080A400011680000580A560007FFFFF670D -S315400014709010200380A5600022800009B010200053 -S3154000148091D0200010800006B01020007FFFFF5F43 -S315400014909010200110BFFFA59A05600181C7E008A2 -S315400014A081E800009DE3BF98C2062010A0100018F6 -S315400014B08330601C80A0600002800009B0103FFFAE -S315400014C07FFFFF610100000080A22000128000041F -S315400014D00300003F821063FFC224201081C7E0084A -S315400014E081E800009DE3BF98C20620108330601C4F -S315400014F0A400600180A4A00102800068B0103FFFF4 -S315400015007FFFFF5101000000AA100008912A200425 -S315400015107FFFFF39900220077FFFFF510100000047 -S3154000152003020000808A000102800058010000008A -S3154000153011100080901220A0921000157FFFFF52DC -S31540001540941000120310008082106018A12D6002D2 -S31540001550C0204010DA004010A610000180A36009A8 -S31540001560291001431480002BAC1000017FFFFF2C93 -S315400015700100000080A2200012BFFFFD0100000014 -S31540001580B010200080A60012168000140100000052 -S3154000159010800005A210001680A600121680000FCB -S315400015A001000000832E2002D0044010D2044001E6 -S315400015B07FFFFF2EB006200180A2200104BFFFF767 -S315400015C0901020027FFFFF110100000080A600124C -S315400015D006BFFFF6832E2002C205207C82006001F2 -S315400015E0C225207C7FFFFF1301000000C204C0100B -S315400015F082006001C224C010DA04C01080A36009D2 -S3154000160004BFFFDB11100080108000049012205CA4 -S31540001610111000809012205C921000157FFFFF1A77 -S3154000162094100012832CA00282004012A0004001B8 -S31540001630DA05207C80A4000D0280000423100143BB -S315400016407FFFFEF290102003C204607C80A0600001 -S315400016500480000601000000C204607C80A40001F2 -S315400016601680000580A560007FFFFEE890102003ED -S3154000167080A5600022800009B010200091D0200093 -S3154000168010800006B01020007FFFFEE09010200181 -S3154000169010BFFFA91110008081C7E00881E8000053 -S315400016A09DE3BF983120000092162200941020003E -S315400016B04000439790102001400040A09016220021 -S315400016C090162300400043FC92102008B0162100DB -S315400016D040003F8D81E80000010000009DE3BF9877 -S315400016E021200000921422009410200040004388DC -S315400016F09010200140004091901422009210001852 -S31540001700400043ED90142300B014210040003F7E7A -S3154000171081E8000001000000000000000000000019 -S315400017200000000000000000000000000000000073 -S315400017300000000000000000000000000000000063 -S315400017400000000000000000000000000000000053 -S315400017500000000000000000000000000000000043 -S315400017600000000000000000000000000000000033 -S315400017700000000000000000000000000000000023 -S315400017800000000000000000000000000000000013 -S315400017900000000000000000000000000000000003 -S315400017A000000000000000000000000000000000F3 -S315400017B000000000000000000000000000000000E3 -S315400017C000000000000000000000000000000000D3 +S3154000102036BFFFFFC038800311100124901221B84B +S31540001030C022000040006B5E0100000040006B5E75 +S315400010400100000040006D0A01000000111000740C +S31540001050901221DC400067030100000040007059F7 +S31540001060010000004000004F0100000040006C3BC2 +S315400010700100000081C7E00881E800009DE3BFA0B1 +S3154000108021100123C20C206080A060001280002243 +S3154000109023100123C20460642710007425100074D5 +S315400010A0A614E144A414A148A4248013A53CA0029C +S315400010B0A404BFFF80A040123A80000E0300000047 +S315400010C0A21460648200600185286002C224400048 +S315400010D0C204C0029FC0400001000000C20440009C +S315400010E080A040120ABFFFF98200600103000000A1 +S315400010F08210600080A060000280000682102001FD +S31540001100111000726FFFFBBF901220E08210200189 +S31540001110C22C206081C7E00881E800009DE3BFA0A3 +S3154000112081C7E00881E800009DE3BFA003000000FE +S315400011308210600080A06000228000081110012407 +S315400011401110007213100123901220E06FFFFBADC7 +S315400011509212606811100124C20221B880A060007A +S3154000116002800009901221B803000000821060003E +S3154000117080A0600002800004010000009FC0400083 +S315400011800100000081C7E00881E800009DE3BFA0A0 +S3154000119081C7E00881E8000081C3E0080100000043 +S315400011A09DE3BFA0400000260100000040000177FB +S315400011B0010000001120000340003C249012210051 +S315400011C04000000381E80000010000000310008099 +S315400011D0C20060108410200190102000C4206014CA +S315400011E081C3E0080100000003100080C2006010C7 +S315400011F08410000890102000C420400081C3E008FD +S315400012000100000003100080C20060108410000836 +S3154000121090102000C420600881C3E008010000004F +S3154000122003100080C2006010841000089010200057 +S31540001230C420600481C3E008010000009DE3BFA014 +S31540001240400000140100000080A22000128000052A +S3154000125003100080C200601084102001C42060107A +S3154000126081C7E00891E820001310008092126014B4 +S315400012709010200081C3E008D0EA40209010200062 +S31540001280131000809212601481C3E008D0224000FF +S31540001290914440009132201C81C3E008900A200FFF +S315400012A081C3E008D08200209010200C81C3E00862 +S315400012B0D08200409DE3BFA0C2062010A0100018B7 +S315400012C08330601C80A0600002800009B0103FFFA0 +S315400012D07FFFFFF00100000080A220001280000482 +S315400012E00300003F821063FFC224201081C7E0083C +S315400012F081E800009DE3BFA0E4062010A534A01CB1 +S31540001300A404A00180A4A0010280003CB0103FFFCD +S315400013107FFFFFE001000000AA100008912A200488 +S315400013207FFFFFB9900220077FFFFFE0010000002A +S3154000133003020000808A0001028000740100000060 +S31540001340A72D600209100080881120188210200104 +S3154000135084102001C22100138210200080A4800145 +S31540001360148000098728600280A0A0001280002512 +S31540001370821020008410200180A4800104BFFFFB5E +S3154000138087286002C601000380A000038200600136 +S315400013908660200010BFFFF284088003C205A0804B +S315400013A0852CA003A12CA001A004000280A400016A +S315400013B002800004010000007FFFFF9A9010200386 +S315400013C0C205A08080A060000480000603100123AF +S315400013D0C200608080A400011680000580A56000E0 +S315400013E07FFFFF909010200380A5600002800003DD +S315400013F0B010200091D0200081C7E00881E80000AD +S3154000140023100080A21460A02D100123C024401395 +S31540001410C204401380A06009148000270910008090 +S31540001420A815A0807FFFFF910100000080A2200048 +S3154000143012BFFFFD80A4A00004800013010000003D +S31540001440A0102000C4044013832C2002C204400193 +S3154000145080A08001A0042001048000038620400271 +S315400014608620800180A0E0010480000580A48010D1 +S315400014707FFFFF6C9010200280A4801014BFFFF203 +S3154000148001000000C205000082006001C225000084 +S315400014907FFFFF7B01000000C20440138200600111 +S315400014A0C2244013C204401380A0600904BFFFDE7B +S315400014B0091000808811205C8210200184102001D0 +S315400014C0C22100138210200080A4800114800009EC +S315400014D08728600280A0A00012BFFFB182102000C2 +S315400014E08410200180A4800104BFFFFB872860028E +S315400014F0C601000380A000038200600186602000D0 +S3154000150010BFFFF2840880037FFFFF469010200142 +S3154000151010BFFF8DA72D60029DE3BFA0E4062010FB +S31540001520A0100018A534A01CA404A00180A4A0010A +S315400015300280003FB0103FFF7FFFFF5601000000D2 +S31540001540AA100008912A20047FFFFF2F900220074F +S315400015507FFFFF560100000003020000808A000161 +S315400015600280007701000000A72D6002091000806C +S3154000157088112018821020018405600185284002C8 +S31540001580C4242010C22100138410200182102000A0 +S3154000159080A48001148000098728600280A0A000F2 +S315400015A012800025821020008410200180A4800132 +S315400015B004BFFFFB87286002C601000380A000032A +S315400015C0820060018660200010BFFFF2840880031D +S315400015D0C205A080852CA003A12CA001A004000276 +S315400015E080A4000102800004010000007FFFFF0D7F +S315400015F090102003C205A08080A0600004800006F1 +S3154000160003100123C200608080A4000116800005FB +S3154000161080A560007FFFFF039010200380A5600037 +S3154000162002800003B010200091D0200081C7E0085E +S3154000163081E8000023100080A21460A02D10012331 +S31540001640C0244013C204401380A0600914800027C0 +S3154000165009100080A815A0807FFFFF04010000004C +S3154000166080A2200012BFFFFD80A4A00004800013CA +S3154000167001000000A0102000C4044013832C200267 +S31540001680C204400180A08001A00420010480000320 +S31540001690862040028620800180A0E001048000056B +S315400016A080A480107FFFFEDF9010200280A480106F +S315400016B014BFFFF201000000C20500008200600175 +S315400016C0C22500007FFFFEEE01000000C204401369 +S315400016D082006001C2244013C204401380A0600906 +S315400016E004BFFFDE091000808811205C82102001B3 +S315400016F084102001C22100138210200080A48001A2 +S31540001700148000098728600280A0A00012BFFFB1A4 +S31540001710821020008410200180A4800104BFFFFBBA +S3154000172087286002C601000380A000038200600192 +S315400017308660200010BFFFF2840880037FFFFEB959 +S315400017409010200110BFFF8AA72D60029DE3BFA025 +S31540001750212000009410200092142200400043688B +S315400017609010200140004220901422009210001850 +S31540001770400043AC90142300B014210040003F5C6D +S3154000178081E80000010000009DE3BFA03120000079 +S3154000179094102000921622004000435990102001D8 +S315400017A04000421190162200901623004000439DAF +S315400017B092102008B016210040003F4D81E80000FD +S315400017C001000000000000000000000000000000D2 S315400017D000000000000000000000000000000000C3 S315400017E000000000000000000000000000000000B3 S315400017F000000000000000000000000000000000A3 @@ -2049,39 +2049,39 @@ S31540007FE0000000000000000000000000000000004B S31540007FF0000000000000000000000000000000003B S315400080009DE3BF9081C7E00881E8000003000010AF S31540008010C48000408088800112BFFFFE010000003E -S315400080209DE3BF909DE3BF909DE3BF909DE3BF90CE -S315400080309DE3BF909DE3BF9021044444A0142111C9 -S3154000804023088888A2146222250CCCCCA414A3331E -S3154000805027111111A614E04429155555A815215587 -S315400080602B199999AA1562662D1DDDDDAC15A377EE -S315400080702F222222AE15E08801100000E03FBFE02B -S31540008080E43FBFE8E83FBFF0EC3FBFF88210001E78 -S315400080908220601CC0A041E082206008C0A041E070 -S315400080A082206008C0A041E082206008C0A041E074 -S315400080B0C0A002209DE3BF909DE3BF9081E80000F1 -S315400080C081E800000100000001000000E01FBFE061 -S315400080D0E41FBFE8E81FBFF0EC1FBFF80100000037 -S315400080E00100000081E8000081E8000081E800000E -S315400080F081E8000081E8000081C7E00881E80000CF -S31540008100A7500000AA102400A8102300EC854320A5 -S31540008110EA8503202F100020AE15E150EE05C00081 -S31540008120E805C000EA05E004EC05E008AC15A0004F -S31540008130C0A58300EA250000AE05E00C2B10002008 -S31540008140AA156150EE25400081C4400081CC8000D4 -S3154000815000000000010000000000000000000000D8 -S3154000816000000000000000000000000000000000C9 +S31540008020C46FBFF89DE3BF909DE3BF909DE3BF90B3 +S315400080309DE3BF909DE3BF909DE3BF9021044444E0 +S31540008040A014211123088888A2146222250CCCCCC6 +S31540008050A414A33327111111A614E044291555552C +S31540008060A81521552B199999AA1562662D1DDDDD96 +S31540008070AC15A3772F222222AE15E088011000000E +S31540008080E03FBFE0E43FBFE8E83FBFF0EC3FBFF86A +S315400080908210001E8220601CC0A041E08220600841 +S315400080A0C0A041E082206008C0A041E08220600874 +S315400080B0C0A041E0C0A002209DE3BF909DE3BF90D9 +S315400080C081E8000081E80000010000000100000096 +S315400080D0E01FBFE0E41FBFE8E81FBFF0EC1FBFF89A +S315400080E0EC6FBFF8EC7FBFF8010000000100000014 +S315400080F081E8000081E8000081E8000081E8000096 +S3154000810081E8000081C7E00881E80000A750000030 +S31540008110AA102400A8102300EC854320EA850320FA +S315400081202F100020AE15E160EE05C000E805C00046 +S31540008130EA05E004EC05E008AC15A000C0A5830004 +S31540008140EA250000AE05E00C2B100020AA15616060 +S31540008150EE25400081C4400081CC80000100000033 +S3154000816000000000010000000000000000000000C8 S3154000817000000000000000000000000000000000B9 S3154000818000000000000000000000000000000000A9 -S315400081900000000001000000010000000100000096 -S315400081A00100000001000000010000000100000085 +S315400081900000000000000000000000000000000099 +S315400081A00000000001000000010000000100000086 S315400081B00100000001000000010000000100000075 -S315400081C00100000001000000010000000100000065 +S315400081C081C3E008D0A003200100000001000000A8 S315400081D00100000001000000010000000100000055 -S315400081E00100000001000000010000000100000045 -S315400081F00100000001000000010000000100000035 -S315400082000100000001000000010000000100000024 -S315400082100100000001000000010000000100000014 -S315400082200100000001000000010000000100000004 +S315400081E09DE3BF90FC2780009007A0019410001EDD +S315400081F0D1E7816AD1E7816A9402A0019002200109 +S31540008200D1E7816AD1E7816AD60780009622C01EEF +S31540008210B0A2E00202800004900020017FFFE4014A +S315400082200100000081C7E00881E80000010000006D S3154000823001000000010000000100000001000000F4 S3154000824001000000010000000100000001000000E4 S3154000825001000000010000000100000001000000D4 @@ -4095,3251 +4095,3366 @@ S3154000FFC001000000010000000100000001000000E7 S3154000FFD001000000010000000100000001000000D7 S3154000FFE001000000010000000100000001000000C7 S3154000FFF001000000010000000100000001000000B7 -S315400100009DE3BF90C207A068A40060261B00003F85 -S315400100109A1363FF030000239E0C800DAC106111FF -S31540010020AB376010820D400DAC03C0169E0F400DDC -S3154001003099372010AC058001820B000DAC05800F6D -S315400100409E0F000DAC058001AC05800F8335A010D5 -S315400100508208400D9E0D800DAC03C001C207A06809 -S3154001006094006034C207A05C93286011C207A0685F -S315400100709E0863FFD607A060C207A074D420400043 -S31540010080D827BFF4EE07A070833620109935A0100B -S31540010090980B000DA136E010A336E008C22DC00032 -S315400100A0F62DE00B9A0D800D82102008B6102045E2 -S315400100B0972AE012AC03400C9612C009C22DE00CFF -S315400100C0F62DE00E9B36200899366010953660086D -S315400100D09336A0109136A008A73CA0088210204074 -S315400100E0B6102011A9376018DA2DE001F02DE00293 -S315400100F0D82DE003D42DE004F22DE005D22DE00603 -S31540010100D02DE007F42DE008E02DE009E22DE00ACC -S31540010110C22DE016F62DE017E42DE011E62DE01094 -S31540010120E82DE01AC02DE00DC02DE00FC02DE012E4 -S31540010130C02DE013C02DE014C02DE015D807A068EE -S315400101409F2BE007C207A0649612C00F92032012AC -S31540010150AC380016E407A06C9B3AE0189130601861 -S31540010160A1306010A3306008B7376008B537201852 -S31540010170B3372008B135A0089F3A6008993AE01094 -S31540010180953AE008EA2DE01BF62DE01CF42DE01E21 -S31540010190F22DE020F02DE018EC2DE019DE2DE026C1 -S315400101A0D22DE027DA2DE02CD82DE02DD42DE02ECE -S315400101B0D62DE02FD02DE030E02DE031E22DE0329A -S315400101C0C22DE033DA07A05CFA2DE01DC207BFF469 -S315400101D080A36000C22DE01FF82DE021C02DE02252 -S315400101E0C02DE023C02DE024C02DE025C02DE02800 -S315400101F0C02DE029C02DE02A0280000EC02DE02B43 -S31540010200B8102000D807A06880A7000C1A80000902 -S31540010210BA05C01CC20C801CC22F6034B80720012D -S31540010220DA07A06880A7000D0ABFFFFBBA05C01C0C -S3154001023081C7E00881E800009DE3BD1040002A34F3 -S3154001024090102000B610000840002A31901020047A -S31540010250BA100008391001447FFFC3E2110040740F -S31540010260A01720D0A6103FDEA8103FADAA103FBE72 -S31540010270AC103FEFAE102020F02720D0E62C200412 -S31540010280E82C2005EA2C2006EC2C2007C02C20085F -S31540010290EE2C2009400002B590100010D004201029 -S315400102A092102000400001CBD40720D0A492200018 -S315400102B0068000650100000015000010D0042010E2 -S315400102C09414800A9210200040000218D60720D0CC -S315400102D0EA2FBF0082103FF2EA2FBEFAE62FBEFE9A -S315400102E0E82FBEFFEC2FBF01EE2FBF03C22FBF0584 -S315400102F0E62FBEF8E82FBEF9EC2FBEFBC02FBEFCA1 -S31540010300EE2FBEFDC02FBF02C02FBF04A010200E8E -S31540010310AA07BFF882054010E0287F00A00420010B -S3154001032080A420FF04BFFFFD82054010AC07BDF845 -S3154001033090100016400003D6921720D080A22000CC -S3154001034002BFFFFD90100016B207BEF890102100C3 -S315400103509210001940000382941720D080A22000F9 -S3154001036002BFFFFC901021009010001D9210001B4F -S315400103704000040F941720D080A2200002BFFFFC4A -S315400103809010001DC207400080A061002280001825 -S31540010390A01020007FFFC39D901020011080001403 -S315400103A0A01020000480002380A060020280001F6C -S315400103B080A0600322800002A21000128205401034 -S315400103C0DA087F00B00C60FF80A340182280000548 -S315400103D0A00420017FFFC38D90102002A0042001BC -S315400103E080A420FF1480001C821720D0808C20031B -S315400103F012800005833C201F82058010E480402046 -S31540010400833C201F8330601E8204000182087FFCEA -S315400104108224000180A0600112BFFFE301000000B9 -S3154001042010BFFFE7A334A01010BFFFE5A334A00817 -S3154001043080A0600022BFFFE2A334A01810BFFFE1F5 -S31540010440820540107FFFC3719010200010BFFF9CB2 -S3154001045015000010DA00601480A3600002800135A7 -S31540010460C20720D08200601CF4804020400029A8A9 -S31540010470901021008210202AC2274000AE100008A9 -S3154001048082102004170037AB1B377BBF9A1363CC0E -S315400104909612E1BEC22DE01315003BC098103FFFF6 -S315400104A09412A020921020DE9132E0089E1020EF97 -S315400104B0A0102008A2102006A4102001A733601026 -S315400104C0A9336008821020DDD82DE005C22DE01C3D -S315400104D0DA2DE01FD82DC000D82DE001D82DE0023D -S315400104E0D82DE003D82DE004E02DE010E22DE012F6 -S315400104F0E42DE015D22DE016D02DE017D62DE018CB -S31540010500DE2DE019D42DE01BE62DE01DE82DE01E81 -S31540010510D22DE006D02DE007D62DE008DE2DE009EC -S31540010520C02DE00AD42DE00BE02DE00CE22DE00DCC -S31540010530C02DE00EE42DE00FC02DE011C02DE014DA -S31540010540C02DE01AC02DE0208336A0189B36A0109E -S315400105509936A008C22DE026DA2DE027D82DE028CD -S31540010560C02DE021C02DE022C02DE023C02DE02486 -S31540010570C02DE025F42DE0299010001640000344DB -S31540010580921720D080A2200002BFFFFD90100016D6 -S31540010590D007400092100017400002F1941720D076 -S315400105A080A2200022BFFFFCD00740009010001D12 -S315400105B09210001B4000037E941720D080A2200099 -S315400105C002BFFFFC9010001D9807BE0ED88B00207D -S315400105D0980B20FF992B20108207BE0FC28840201E -S315400105E0820860FF83286008981300019A07BE10AD -S315400105F0DA8B40209A0B60FFA213000D9607BE11BD -S31540010600D68AC020960AE0FF972AE0108207BE12DA -S31540010610C2884020820860FF832860089612C00184 -S315400106209A07BE13DA8B40209A0B60FFA612C00DC3 -S31540010630A807BD90150037AB17003BC0C023A05C8F -S31540010640C023A060E823A064C023A068C023A06C97 -S31540010650EE23A070FA23A0749412A1BE9612E02054 -S3154001066090100011921000139810001A7FFFFE653A -S315400106709A10001A9010001640000305921720D0D8 -S3154001068080A2200002BFFFFD90100016D007400057 -S3154001069092100017400002B2941720D080A2200089 -S315400106A022BFFFFCD00740009010001D9210001B96 -S315400106B04000033F941720D080A2200002BFFFFCD8 -S315400106C09010001D9807BE24D88B0020992B201826 -S315400106D08207BE25DA8840209A0B60FF9B2B60106B -S315400106E09813000D8207BE26C2884020820860FF0B -S315400106F083286008981300019A07BE27DA8B4020A9 -S315400107009A0B60FFA413000D03000080808C8001CA -S3154001071012800003A134A012A00420019A1020489F -S3154001072082102001DA23A068150037AB17003BC0C1 -S31540010730C223A05CF223A06CE023A060E823A0645E -S31540010740EE23A070FA23A0749412A1BE9612E02063 -S3154001075090100011921000139810001A7FFFFE2985 -S315400107609A10001A90100016400002C9921720D024 -S3154001077080A2200002BFFFFD90100016D007400066 -S315400107809210001740000276941720D080A22000D4 -S3154001079022BFFFFCD00740009010001D9210001BA5 -S315400107A040000303941720D080A2200002BFFFFC23 -S315400107B09010001D9A07BE25C28B4020808860029A -S315400107C022800005A00420017FFFC29090102003E3 -S315400107D0A004200182102048150037AB17003BC00A -S315400107E09810001AE023A060E823A064C223A06801 -S315400107F0C023A05CC023A06CEE23A070FA23A07492 -S3154001080090100011921000139412A1BE9612E0208E -S315400108107FFFFDFC9A10001A901000164000029CC2 -S31540010820921720D080A2200002BFFFFD9010001633 -S31540010830D00740009210001740000249941720D07B -S3154001084080A2200022BFFFFCD00740009010001D6F -S315400108509210001B400002D6941720D080A220009F -S3154001086002BFFFFC9010001DC207400080A0607CC3 -S3154001087022800005A605A0347FFFC26490102004A3 -S31540010880A605A03410800013A01020000480002289 -S3154001089080A060020280001D80A0600322800002C9 -S315400108A0B00CA0FF82054010DA087F0080A34018F3 -S315400108B022800005A00420017FFFC254901020052C -S315400108C0A004200180A4204714800018A604E0015A -S315400108D0808C200312800004833C201FE484C020C6 -S315400108E0833C201F8330601E8204000182087FFC06 -S315400108F08224000180A0600112BFFFE5A334A0104D -S3154001090010BFFFE9B00C60FFA334A00810BFFFE69B -S31540010910B00C60FF80A0600022BFFFE3B134A01895 -S3154001092010BFFFE28205401040002880901000175A -S3154001093081C7E00891E820009DE3BF88F027A044E5 -S31540010940C207A04482004001901000014000287077 -S315400109500100000082100008C227BFF4DA07BFF485 -S31540010960C207A0449A034001C207A04482007FFF08 -S3154001097082380001820B4001C227BFF4C207BFF48F -S31540010980C227BFF0C027BFECC207BFEC80A0607F83 -S315400109901480000C01000000C207BFEC9B286003D5 -S315400109A0C207BFF082034001C0204000C207BFEC2E -S315400109B082006001C227BFEC10BFFFF401000000B6 -S315400109C0C207BFF4B010000181C7E00881E800000A -S315400109D09DE3BF90F027A044F227A048F427A04CFE -S315400109E0C207A04C820060109010000140000046F2 -S315400109F001000000D027BFF4C207BFF48208600897 -S31540010A0080A06000028000040100000010BFFFF5D5 -S31540010A1001000000C207A0449B28600BC207A04802 -S31540010A208208601F8328600682134001821060029B -S31540010A30C227BFF4C207A04C82006010901000018B -S31540010A40D207BFF44000002701000000C207A04CB6 -S31540010A5082006010901000014000002B0100000050 -S31540010A60D027BFF4C207BFF48208600880A06000A7 -S31540010A70028000040100000010BFFFF501000000E4 -S31540010A80C207BFF48208601080A060001280001087 -S31540010A9001000000C207A04C8200601090100001C6 -S31540010AA04000001901000000D027BFF4C207BFF47F -S31540010AB0833060101B00003F9A1363FF8208400D8C -S31540010AC0C227BFF0108000040100000082103FFFE2 -S31540010AD0C227BFF0F007BFF081C7E00881E80000F8 -S31540010AE09DE3BF98F027A044F227A048C207A0443F -S31540010AF0FA07A048FA204000B010000181C7E0087B -S31540010B0081E800009DE3BF90F027A044C207A044BE -S31540010B10C2804020C227BFF4C207BFF4B010000113 -S31540010B2081C7E00881E800009DE3BF90F027A0441B -S31540010B30F227A048F427A04CF627A050C207A050A0 -S31540010B4082006010901000017FFFFFEF010000005E -S31540010B50D027BFF4C207BFF48208600880A06000B6 -S31540010B60028000040100000010BFFFF501000000F3 -S31540010B70DA07A04C0300003F821063FF820B40015D -S31540010B809B286010C207A0448328600B9A1340013A -S31540010B90C207A0488208601F83286006821340016D -S31540010BA082106001C227BFF4C207A05082006010C4 -S31540010BB090100001D207BFF47FFFFFCA0100000079 -S31540010BC0C207A05082006010901000017FFFFFCE47 -S31540010BD001000000D027BFF4C207BFF482086008B5 -S31540010BE080A06000028000040100000010BFFFF5F4 -S31540010BF00100000081C7E00881E800009DE3BF983D -S31540010C00F027A044F227A048DA07A044C207A0482B -S31540010C10C2084000C22B6004D807A0449A102001A4 -S31540010C20C207A04882034001C2084000C22B2005EA -S31540010C30D807A0449A102002C207A0488203400167 -S31540010C40C2084000C22B2006D807A0449A102003B0 -S31540010C50C207A04882034001C2084000C22B2007B8 -S31540010C60D807A0449A102004C207A0488203400135 -S31540010C70C2084000C22B2008D807A0449A1020057C -S31540010C80C207A04882034001C2084000C22B200986 -S31540010C90C207A044C200400096006008C207A048AF -S31540010CA0C2084000820860FF992860089A10200116 -S31540010CB0C207A04882034001C2084000820860FF83 -S31540010CC0821300019010000B921000017FFFFF85F7 -S31540010CD001000000C207A044C20040009600600C1B -S31540010CE09A102002C207A04882034001C208400070 -S31540010CF0820860FF992860189A102003C207A0480D -S31540010D0082034001C2084000820860FF83286010C8 -S31540010D10981300019A102004C207A048820340019B -S31540010D20C2084000820860FF8328600898130001CA -S31540010D309A102005C207A04882034001C20840001C -S31540010D40820860FF821300019010000B921000018F -S31540010D507FFFFF640100000082102001B0100001F6 -S31540010D6081C7E00881E800009DE3BF80F027A044E9 -S31540010D70C207A044D00040007FFFFF63010000008E -S31540010D80D027BFF4DA07A044C207BFF48330601B03 -S31540010D9082086001C223600CDA07A044C207BFF48F -S31540010DA08330601F82086001C2236014C207A044D9 -S31540010DB0C200601480A06000128000130100000090 -S31540010DC0C207A044D0004000921020407FFFFF455B -S31540010DD001000000C207A044D00040007FFFFF4A47 -S31540010DE001000000D027BFF4C207BFF4820860406B -S31540010DF080A06000028000040100000010BFFFF6E1 -S31540010E0001000000C207A044C200400082006010F9 -S31540010E10901000017FFFFF3C01000000D027BFF486 -S31540010E20DA07A044C207BFF48330600B8208601F13 -S31540010E30C2236010E007A044901024007FFFFEBF4C -S31540010E4001000000D0242018E007A044901024009F -S31540010E507FFFFEBA01000000D024201CC207A04437 -S31540010E60C200400082006014DA07A04490100001DD -S31540010E70D20360187FFFFF1B01000000C207A04498 -S31540010E80C200400082006018DA07A04490100001B9 -S31540010E90D203601C7FFFFF1301000000C207A0447C -S31540010EA0C0206020C207A044C0206024C207A044DD -S31540010EB0C0206028C207A044C020602CC207A044BD -S31540010EC0C200601480A0600012800083010000000F -S31540010ED0C207A044DA07A044D00060109210200057 -S31540010EE015000020D60340007FFFFF1001000000DF -S31540010EF0C207A044DA07A044D00060109210200037 -S31540010F00D40340007FFFFEB301000000D027BFF4A9 -S31540010F10DA07BFF403000020820B400180A0600085 -S31540010F20028000040100000010BFFFF20100000032 -S31540010F30C027BFF0C207BFF41B0000048208400D62 -S31540010F4080A060000280001701000000C207A04493 -S31540010F50DA07A044D000601092102001D40340006B -S31540010F607FFFFE9C0100000082100008820860207D -S31540010F7080A060001280000B01000000C207BFF094 -S31540010F8082006001C227BFF0DA07BFF003000030DC -S31540010F908210635080A3400104BFFFED01000000B1 -S31540010FA0C207A044DA07A044D00060109210200086 -S31540010FB0D40340007FFFFE8701000000D027BFF425 -S31540010FC0C207A044C200600C80A0600002800012EB -S31540010FD001000000C207BFF41B0000088208400D53 -S31540010FE080A060001280000C01000000C207BFF41F -S31540010FF08208604080A06000028000070100000076 -S3154001100082102001C227BFE4C027BFE81080001F1D -S3154001101001000000C207BFF41B0000088208400D12 -S3154001102080A060000280000C01000000C207BFF4EE -S315400110308208604080A06000128000070100000025 -S31540011040C027BFE482102001C227BFE81080000FED -S3154001105001000000C207BFF41B0000088208400DD2 -S3154001106080A060001280000901000000C207BFF4A1 -S315400110708208604080A060001280000401000000E8 -S31540011080C027BFE4C027BFE8C207BFF4833060086A -S3154001109082086001C227BFECD807A044C207BFEC53 -S315400110A09B286004C207BFE8832860079A13400162 -S315400110B0C207BFE48328600882134001D0030000C1 -S315400110C0921000017FFFFE87010000001080001B87 -S315400110D001000000C027BFF0C207BFF080A0600238 -S315400110E01480001601000000C207A044C20040005F -S315400110F082006010901000017FFFFE830100000016 -S31540011100D027BFF4C207BFF48208600880A0600000 -S315400111100280000501000000C027BFF010BFFFEFAD -S3154001112001000000C207BFF082006001C227BFF084 -S3154001113010BFFFEA01000000C207A044820060041C -S31540011140D007A044921000017FFFFEAD01000000D0 -S31540011150B010000181C7E00881E800009DE3BF901F -S31540011160F027A044F227A048F427A04CD807A04C6A -S31540011170C207A04CC20060209B286003C20320180E -S3154001118082034001901000017FFFFE5F01000000D5 -S31540011190821000088208680080A060000280000575 -S315400111A001000000C027BFF4108000360100000096 -S315400111B0D807A04CC207A04CC20060209B28600300 -S315400111C0C20320189A034001C207A048C223600403 -S315400111D0C207A04CC200602080A0607F1280001030 -S315400111E001000000D807A04CC207A04CC2006020F5 -S315400111F09B286003C203201898034001DA07A044E4 -S315400112000300000682134001C2230000C207A04C1E -S31540011210C02060201080001001000000D807A04CBB -S31540011220C207A04CC20060209B286003C20320185D -S315400112309A034001C207A04482106800C2234000BD -S31540011240DA07A04CC207A04CC200602082006001B0 -S31540011250C2236020C207A04CE0004000C207A04C58 -S31540011260D00040007FFFFE280100000082100008E8 -S3154001127082106001C224000082102001C227BFF4FF -S31540011280F007BFF481C7E00881E800009DE3BF9005 -S31540011290F027A044F227A048D807A048C207A04893 -S315400112A0C20060249B286003C203201C82034001C4 -S315400112B0901000017FFFFE1401000000821000081B -S315400112C08208680080A060000280000501000000DD -S315400112D0C027BFF41080003301000000D807A048A2 -S315400112E0C207A048C20060249B286003C203201C99 -S315400112F09A034001C207A044C2236004C207A04822 -S31540011300C200602480A0607F1280000E01000000B0 -S31540011310D807A048C207A048C20060249B286003A2 -S31540011320C203201C9A03400103000006C223400069 -S31540011330C207A048C02060241080000F01000000B1 -S31540011340D807A048C207A048C20060249B28600372 -S31540011350C203201C9A03400182102800C223400088 -S31540011360DA07A048C207A048C20060248200600193 -S31540011370C2236024C207A048E0004000C207A0483B -S31540011380D00040007FFFFDE0010000008210000810 -S3154001139082106002C224000082102001C227BFF4DD -S315400113A0F007BFF481C7E00881E800009DE3BF90E4 -S315400113B0F027A044F227A048F427A04CD807A04C18 -S315400113C0C207A04CC200602C9B286003C203201CAC -S315400113D082034001901000017FFFFDCB0100000018 -S315400113E082100008C227BFF4C207BFF48208680012 -S315400113F080A060001280001801000000DA07A044B6 -S31540011400C207BFF4820867FFC2234000C207A04C4F -S31540011410C200602C80A0607F12800006010000009F -S31540011420C207A04CC020602C1080000701000000BC -S31540011430DA07A04CC207A04CC200602C82006001B2 -S31540011440C223602C82102001C227BFF01080000306 -S3154001145001000000C027BFF0F007BFF081C7E008D8 -S3154001146081E800009DE3BF90F027A044D807A0443F -S31540011470C207A044C20060289B286003C20320180B -S3154001148082034001901000017FFFFD9F0100000093 -S3154001149082100008C227BFF4C207BFF48208680061 -S315400114A080A060001280001401000000C207A04421 -S315400114B0C200602880A0607F128000060100000003 -S315400114C0C207A044C0206028108000070100000028 -S315400114D0DA07A044C207A044C20060288200600126 -S315400114E0C223602882102001C227BFF0108000036A -S315400114F001000000C027BFF0F007BFF081C7E00838 -S3154001150081E800009DE3BF987FFFBF361100403060 -S3154001151080A22000128000F382102001C226200CF6 -S31540011520C0262004C0260000C026200882102002C2 -S31540011530C2262008C0260000C026000082102003D3 -S31540011540C22620089A102083DA262008A21020639A -S31540011550C0260000A2847FFF1CBFFFFE01000000E1 -S31540011560A2102063C2060000A2847FFF1CBFFFFEBB -S3154001157082102002C2262008A4062004C2848020AC -S315400115808088600402BFFFFE01000000C0262008DB -S31540011590C0260000A6102001C28480208338601432 -S315400115A08208603F80A0600122800093A604E0018A -S315400115B082102003C2262008C284802080886001D0 -S315400115C00280000780886004C2860020C284802091 -S315400115D08088600112BFFFFD8088600402BFFFFB67 -S315400115E08088600202BFFFF901000000C026200882 -S315400115F0C026200480A4E001048000082110008058 -S31540011600C28480208208608080A06001028000AE92 -S315400116100100000021100080DA4C20F0DA2600009B -S31540011620C28480208208600480A060010280009A02 -S3154001163001000000C284802080A4E00104800020D3 -S3154001164082102001A210200180A440131680000DB3 -S315400116502B100080A81420F0E00560E890100011DE -S315400116604000247992100010C24D0008A204600186 -S31540011670C226000080A4401306BFFFFA9010001155 -S31540011680C28480208208608080A06001028000922E -S3154001169001000000C2848020833860148208603FC4 -S315400116A080A0401302800004010000007FFFBED7E6 -S315400116B090102006C284802082102001C226200C70 -S315400116C0DA848020808B600112800068010000006E -S315400116D082102083C226200880A4E00102800052A5 -S315400116E001000000C28480208088640002BFFFFEA2 -S315400116F001000000C284802080886001028000537E -S315400117000100000080A4E00124800012A210200004 -S31540011710C28480208330601A80A040130280000476 -S31540011720010000007FFFBEB990102009C2848020CD -S31540011730808861000280005501000000C28480203B -S31540011740808864000280004D01000000A210200044 -S3154001175080A440131680001203100080A81060F088 -S315400117602B100080E08600209010001140002436A6 -S31540011770D20560E8C24D0008A204600180A0401075 -S31540011780028000049010200C7FFFBEA001000000E3 -S3154001179080A4401306BFFFF40100000080A4E001CD -S315400117A00480000F01000000C2848020808861000F -S315400117B01280004201000000C28480208330601AFA -S315400117C080A060001280003A01000000C28480209F -S315400117D0808864001280003301000000C2848020AA -S315400117E0808860011280001D01000000C02620088B -S315400117F03080003CC0260000C284802083386014BB -S315400118008208603F80A0401322BFFFFBA604E0018F -S3154001181080A4E00134BFFF67A604FFFF10BFFF6647 -S3154001182082102003C28480208088600112BFFFB2EB -S3154001183001000000C28480208088600102BFFFFA57 -S315400118400100000030BFFFAC7FFFBE709010200842 -S3154001185010BFFFAE80A4E0017FFFBE6C9010200C4C -S31540011860C02620083080001F7FFFBE6890102007E9 -S3154001187010BFFF99821020837FFFBE649010200B1A -S3154001188010BFFFB4A21020007FFFBE609010200A57 -S3154001189030BFFFAB7FFFBE5D9010200130BFFF66BA -S315400118A07FFFBE5A9010200B30BFFFCD7FFFBE5742 -S315400118B09010200E30BFFFC67FFFBE549010200D02 -S315400118C030BFFFBE7FFFBE519010200410BFFF53B3 -S315400118D0211000807FFFBE4D9010200530BFFF6E66 -S315400118E081C7E00891E8200017100143DA02E0843D -S315400118F0900220109B2B60029812E084D023000DA9 -S31540011900C202E08482006001C222E08481C3E00811 -S3154001191001000000C0220000C022204082103FFF8B -S31540011920C222200C9A10200103100143DA20608460 -S3154001193081C3E008010000009DE3BF780310014424 -S31540011940F02061007FFFBE27110040347FFFFFF288 -S3154001195090100018A010200123100046921000108C -S315400119604000298E901460E8A004200180A4200F35 -S3154001197004BFFFFC92100010C20620208330601C79 -S31540011980AE006001AC10200080A58017168000EDE6 -S315400119900300003FB81063FE2B1001430300002AE9 -S315400119A0B61062AABA102001B410001CB2156084A8 -S315400119B0832DA00C80A5E00114800119A6004018D2 -S315400119C080A5A0001280010A01000000F824E00869 -S315400119D0C204E00880A0401C02800004010000000F -S315400119E07FFFBE0A90102001F824E040C204E04087 -S315400119F080A0401C02800004010000007FFFBE035E -S31540011A0090102002C204E00880A0600012BFFFFED1 -S31540011A1001000000C205608480A0601002800005BC -S31540011A20251001437FFFBDF9901020032510014386 -S31540011A30A0102001A414A084A2102020832C2002EF -S31540011A409A244010D8048001A004200180A3000DEF -S31540011A5002800004901020047FFFBDEC01000000CD -S31540011A6080A4200F04BFFFF7832C2002FA2560844F -S31540011A70F624C000F424E040C204C00080A0401B0C -S31540011A8002800004A010001A7FFFBDE090102005DF -S31540011A90C204E04080A04010028000040100000022 -S31540011AA07FFFBDDA90102005F424E008C204E00867 -S31540011AB080A0600012BFFFFE01000000C2056084E5 -S31540011AC080A0601002800005251001437FFFBDCF35 -S31540011AD09010200625100143A0102001A414A084D3 -S31540011AE0A210201F9B2C2002C204800D80A0401111 -S31540011AF0A0042001A2047FFE02800004901020076A -S31540011B007FFFBDC20100000080A4200704BFFFF78C -S31540011B109B2C2002A4066028A210201CA0102005A0 -S31540011B20C204800080A04011A404A004A2047FFE48 -S31540011B3002800004901020087FFFBDB40100000020 -S31540011B40A0843FFF1CBFFFF701000000FA27BFE852 -S31540011B50C207BFE882006001C227BFECDA07BFECCB -S31540011B609A036001DA27BFF0C207BFF08200600125 -S31540011B70C227BFF49A102006DA27BFD8C024C00076 -S31540011B80C024E040FA256084A0102002E024E04011 -S31540011B90E024E0088344400080886100028000051B -S31540011BA0010000008050000180500001805000017A -S31540011BB0C207BFD8C227BFDCDA07BFD880A36006F9 -S31540011BC002800004010000007FFFBD909010200AB2 -S31540011BD0E024E00801000000C207BFD8C227BFDCED -S31540011BE0DA07BFD880A36006028000040100000026 -S31540011BF07FFFBD869010200AE024E0080100000026 -S31540011C00C027BFDCC207BFDC80A0600012800096FF -S31540011C1001000000C204E00880A0600012BFFFFE80 -S31540011C2001000000C205608480A0600402800005B6 -S31540011C300300003F7FFFBD759010200D0300003F5C -S31540011C40C024E040821063FEC224E0080310014331 -S31540011C509A102001DA206084400003E70100000069 -S31540011C60400003E790122F0082103FFFC224E0405C -S31540011C70C204E04080A0600002BFFFFE01000000F8 -S31540011C80C205608480A0600202800004A0156084C1 -S31540011C907FFFBD5E9010200EC204200480A0601F0D -S31540011CA002800004010000007FFFBD589010200F04 -S31540011CB0400003D1A8100010400003D190023F001C -S31540011CC0A0102002A4102020400003CB01000000F8 -S31540011CD0400003CB90023F00C2056084A20420016C -S31540011CE080A0401102800004901020107FFFBD4764 -S31540011CF001000000832C20029A248010D80500019F -S31540011D00A010001180A3000D028000049010201144 -S31540011D107FFFBD3E0100000080A4200F04BFFFEB02 -S31540011D2001000000C024E040AC05A00182103FFF45 -S31540011D30C224E00C80A5801706BFFF1F832DA00C8F -S31540011D4080A5E0010480004B01000000C02620244C -S31540011D50C206202480A060001280003F01000000DE -S31540011D6021040000E0262024C206202480A0401041 -S31540011D7002800005821020017FFFBD2490102014AF -S31540011D8082102001C2262020C0262024C2062024FB -S31540011D9080A0401002800004010000007FFFBD1BAF -S31540011DA090102015C0262020C0262024C2062024BB -S31540011DB080A06000128000240100000082102002F1 -S31540011DC0C2262020DA062020808B60020280001B7A -S31540011DD001000000C0262020C20620208088600223 -S31540011DE00280002401000000308000117FFFFECAFE -S31540011DF0901000139B2DA01CDA24E024C204E02499 -S31540011E008330601C80A0401602BFFEF10100000035 -S31540011E107FFFBCFE9010201230BFFEED7FFFBCF667 -S31540011E209010001610BFFEE880A5A0007FFFBCF70A -S31540011E30901020183080000F7FFFBCF490102017BF -S31540011E4030BFFFE57FFFBCF19010201610BFFFDDCC -S31540011E50821020027FFFBCED9010201310BFFFC2FD -S31540011E60210400007FFFBCE99010200B30BFFF6AC0 -S31540011E7081C7E00891E8200003100143DA0060CCF5 -S31540011E80C023600881C3E008901020009DE3BF9005 -S31540011E902F100144E205E100A0046100271001432F -S31540011EA0C2042004F024E0CC7FFFBCD39010201064 -S31540011EB003018000DA04200482106020808B4001F7 -S31540011EC01280010D01000000DA046100DA27BFF03B -S31540011ED0C204610080A340010280000582102001F6 -S31540011EE07FFFBCCA9010200282102001C224200428 -S31540011EF0DA046100DA27BFF0C204610080A3400121 -S31540011F000280012001000000C0242004DA0461009F -S31540011F10DA27BFF0C204610080A3400102800005B8 -S31540011F2080A720007FFFBCB99010200480A7200025 -S31540011F30128000B780A72001B010200180A6001AA8 -S31540011F4016800017A81020011080000525100047B3 -S31540011F5080A6001A16800013DA04E0CCA206C01847 -S31540011F609014A2789210001180A4601F14BFFFF94B -S31540011F70B00620014000280901000000D805E10013 -S31540011F80C20320409B2D00118210400DC2232040E8 -S31540011F9080A6001A06BFFFF3A206C018DA04E0CCF9 -S31540011FA09606A003C0236004833AE01FC023601055 -S31540011FB098103FFF8330601EAA02C001D8236014E7 -S31540011FC0D823600CA2102000AD3D600280A72000FE -S31540011FD00280008AA810200180A4401C168000ECD3 -S31540011FE0C204E0CC80A7200104800015B010200077 -S31540011FF080A5A0000480001380A0001C9B2C6010CB -S31540012000832C60188210400D992C60088210400C78 -S3154001201082104011993D6002DA04E0CCC22360206F -S31540012020B006200180A72001048000059A036004C0 -S3154001203080A3001814BFFFFA0100000080A0001C15 -S31540012040B0603FFF80A6001A16800016C204E0CC9D -S315400120502501800080A72000028000058206C01865 -S3154001206080A72001028000848206C011C224200478 -S31540012070D804E0CC832D00189B3E4018C22320088B -S31540012080808B6001128000859A10000CB0062001F9 -S3154001209080A6001A06BFFFF180A72000C204E0CC4B -S315400120A0C0206008808E600112800009B0102000B7 -S315400120B0B006200180A6201F14800005833E4018EB -S315400120C08088600122BFFFFCB006200180A7200066 -S315400120D0028000068206C01880A720010280000403 -S315400120E08216E0208206C01182106020C22420049C -S315400120F0DA04E0CC832D0018C2236008C2036008CD -S3154001210080A0600012BFFFFE01000000C20420044F -S31540012110808860200280009801000000DA042004D3 -S3154001212003010000808B4001028000900100000005 -S31540012130DA04200403008000808B4001028000887D -S3154001214001000000C2042008C227BFF0DA04200CB7 -S31540012150DA27BFF4C204E0CC992D0018D8206008D4 -S315400121609A100001C203600880A0600012BFFFFE02 -S3154001217001000000C20420048088602002800075AE -S3154001218001000000DA04200403010000808B4001B5 -S315400121900280006D01000000DA0420040300800083 -S315400121A0808B40010280006501000000DA042008AE -S315400121B0C207BFF080A0400D02800004010000006C -S315400121C07FFFBC129010200EDA04200CC207BFF428 -S315400121D080A0400D02800005030180007FFFBC0BFB -S315400121E09010200F03018000C224200480A7200004 -S315400121F012BFFF7AA204600180A4600004BFFF7B86 -S3154001220080A7200110800062C204E0CC0280003D1C -S3154001221011100047B010200080A6001C16BFFF60B9 -S31540012220A8102001108000052510004780A6001C3B -S3154001223016BFFF5CDA04E0CCA206C0189014A2785F -S315400122409210001180A4601F14BFFFF9B00620014F -S315400122504000275201000000D805E100C20320409A -S315400122609B2D00118210400DC223204010BFFFF16B -S3154001227080A6001CF6242004D804E0CC832D001847 -S315400122809B3E4018C2232008808B600122BFFF81FC -S31540012290B00620019A10000CC203600880A06000BD -S315400122A012BFFFFE01000000DA0420040301000012 -S315400122B0808B40010280001E01000000DA042004E8 -S315400122C003008000808B400102800016010000005F -S315400122D0E4242004C20420048088401222BFFF6DFA -S315400122E0B00620017FFFBBC99010200710BFFF69D0 -S315400122F0B00620017FFFBBC59010200130BFFEF321 -S3154001230090122278400027259210001BDA05E10041 -S31540012310832F001BC223604010BFFF22DA04E0CCAA -S315400123207FFFBBBA9010200630BFFFEA7FFFBBB7E5 -S315400123309010200530BFFFE27FFFBBB49010200D07 -S3154001234030BFFF9B7FFFBBB19010200C30BFFF9386 -S315400123507FFFBBAE9010200B30BFFF8B7FFFBBAB27 -S315400123609010200A30BFFF787FFFBBA8901020094C -S3154001237030BFFF707FFFBBA59010200830BFFF68BC -S315400123807FFFBBA29010200330BFFEE0C020600C4F -S31540012390DA05E100C023604082103FFFC223600C92 -S315400123A081C7E00891E820009DE3BF983B100144B6 -S315400123B0E60761007FFFBB9090102011C024E01C0E -S315400123C0C204E01C80A060000280004801000000B9 -S315400123D0C204E01C8330601B80A0401A0A80003F83 -S315400123E001000000A410200080A4801A1A80004237 -S315400123F02D100143AA102001AE15A084A32CA002E2 -S31540012400E00640117FFFFD4490100013A804A0018F -S315400124109B2D4012832D20108210400DC224E01CBA -S315400124209A103FFFDA24E040D80600119A10201F87 -S31540012430DA232004A0043FFFDA230000A12C200464 -S315400124408204000C9A102005DA206010C020601426 -S31540012450EA2060189A100001C203601080A0600053 -S3154001246012BFFFFE01000000A004000CC2042010B0 -S3154001247080A0600002BFFFFE01000000C0242018BA -S31540012480C205A08480A06002028000069A04A011C1 -S31540012490900480127FFFBB5D900220039A04A01135 -S315400124A0C205E00480A0400D22800006A41000145D -S315400124B0900480127FFFBB5590022004A4100014A3 -S315400124C0C024E01C80A5001A0ABFFFCEA32CA0029F -S315400124D01080000ADA0761007FFFBB4C9010200292 -S315400124E010BFFFC2A41020007FFFBB4890102001FF -S315400124F030BFFFB8DA076100C023604082103FFF5A -S31540012500C223600C81C7E00891E820009DE3BF9893 -S315400125107FFFBB4D0100000080A220000280002603 -S3154001252080A6200012800029010000007FFFBB46E3 -S3154001253001000000912A20047FFFBB2F9002200357 -S315400125404000186C0100000080A220001280002B80 -S31540012550010000004000182A01000000400017E376 -S3154001256001000000400002260100000080A6A000F4 -S315400125701280002D031001447FFFBB33B410610468 -S31540012580912A2002C206800880A060001280003095 -S3154001259080A6200012800039010000004000048D11 -S315400125A00100000040001E0101000000400015C06E -S315400125B081E800007FFFBB0B1100400C80A6200084 -S315400125C002BFFFDB010000007FFFBBB7901000197F -S315400125D07FFFBB1D01000000912A20047FFFBB063F -S315400125E090022003400018430100000080A2200011 -S315400125F002BFFFD9010000007FFFBB0490102001FC -S31540012600400017FF01000000400017B8010000001C -S31540012610400001FB0100000080A6A00002BFFFD7D9 -S315400126200310014440001DEC010000000310014469 -S315400126307FFFBB05B4106104912A2002C2068008BF -S3154001264080A0600002BFFFD480A620007FFFBAFEB3 -S31540012650010000007FFFBAFCA0100008912A200269 -S31540012660C20680089FC040009010001080A620003E -S3154001267002BFFFCB010000007FFFBB9B90100019FA -S31540012680400004540100000040001DC80100000044 -S315400126904000158781E80000010000000310014356 -S315400126A0DA0060D09A036001DA2060D081C3E00885 -S315400126B0010000009DE3BF987FFFBACA1100404464 -S315400126C0D806200882103FFFC2262004DA06000001 -S315400126D0C206000080A340010280006FA60B2007BE -S315400126E08210201FC2262004C226000080A4E000DA -S315400126F00280003382100018A2100013C020601817 -S31540012700A2847FFF12BFFFFE82006010A21020004C -S3154001271080A440131680002B80A4E001A810200F4E -S31540012720A01000187FFFBAB490100011C0242010E9 -S31540012730E824201482102006C2242018DA0420102E -S3154001274080A3600F02800004010000007FFFBAAF42 -S3154001275090102003E82420189A10200EC20420105D -S3154001276080A0400D12BFFFFE010000009A837FFF4B -S315400127701CBFFFFBA4100010C204201080A0600FF4 -S3154001278012BFFFFE01000000C204201880886010BD -S315400127900280003582102010C224A018DA042018C5 -S315400127A0808B60101280003801000000A204600195 -S315400127B080A4401306BFFFDCA004201080A4E001E2 -S315400127C01480001080A4E0000280000782100018E7 -S315400127D0A2100013C0206018A2847FFF12BFFFFE23 -S315400127E08200601021100144C204210080A06000D3 -S315400127F00280002D111000491080000D9210001921 -S315400128007FFFBA7D901020088210200FC226201823 -S315400128109A10202FDA262028C206202080A0600D9B -S3154001282012BFFFFE80A4E00030BFFFE8400025DB79 -S315400128309012229C7FFFFC38D00421008210200197 -S3154001284083284019DA042100C22360409810200FE2 -S31540012850D82620148210200DC2262018A7800000F9 -S31540012860308000117FFFBA69901020048210201039 -S31540012870C224A018DA042018808B601022BFFFCD35 -S31540012880A20460017FFFBA619010200510BFFFC905 -S31540012890A20460017FFFBA5D9010200110BFFF9234 -S315400128A08210201F81C7E00881E800000000000077 -S315400128B000000000000000000000000000000000D1 -S315400128C001000000010000000100000001000000BD -S315400128D0010000000100000081C3E0080100000082 -S315400128E0010000000100000001000000010000009D -S315400128F0010000000100000081C3E0080100000062 -S31540012900010000000100000001000000010000007C -S31540012910010000000100000081C3E0080100000041 -S31540012920010000000100000001000000010000005C -S31540012930010000000100000081C3E0080100000021 -S31540012940D482018090A2000916BFFFFE9612800B29 -S3154001295081C3E0089010000BD48201C090A2000907 -S3154001296016BFFFFE9612800B81C3E0089010000B44 -S3154001297090A22004C0A201A090A22004C0A201A05E -S3154001298090A22004C0A201A090A22004C0A201A04E -S31540012990C0A2018090A2200414BFFFF701000000ED -S315400129A081C3E0080100000090A22004C0A201E01A -S315400129B090A22004C0A201E090A22004C0A201E09E -S315400129C090A22004C0A201E0C0A201C090A22004AE -S315400129D014BFFFF70100000081C3E00801000000B9 -S315400129E0981000089610000A98A3200814BFFFFF0C -S315400129F0D43B00099810000898A3200814BFFFFF94 -S31540012A00C01B00099810000898A32004D6030009AA -S31540012A1080A2C00A1280000698A3200434BFFFFD9D -S31540012A20D603000981C3E0089010200090102001D0 -S31540012A30981000089610000A98A3200814BFFFFFBB -S31540012A40D43B00099810000898A32004D603000936 -S31540012A5080A2C00A1280000698A3200434BFFFFD5D -S31540012A60D603000981C3E008901020009010200190 -S31540012A709810000898A32004D2A301A0DA8301A0EC -S31540012A8080A340091280000698A3200414BFFFFCCE -S31540012A90D2A301A081C3E00890102000901020012C -S31540012AA09A1000089AA3400AD6A34180D883418050 -S31540012AB0981B000B988B0009128000069AA3400AC6 -S31540012AC014BFFFFBD6A3418081C3E00890102000CC -S31540012AD0901020019A1000089AA3400BD8A241CD2C -S31540012AE0C48241CD8418800C8488800A12800006F5 -S31540012AF09AA3400B14BFFFFBD8A241CD81C3E00886 -S31540012B0090102000901020010100000001000000FB -S31540012B10010000001310008092126138D402400077 -S31540012B2080A2A0011280000780A0A002D40240002A -S31540012B30D4024000952AA002108000050100000041 -S31540012B403280000381E80000D402400081E00000A9 -S31540012B5093480000818A60202310004AA2146378BA -S31540012B60A40460040100000081C4400081CC8000BF -S31540012B7091D0200191D020012680000590002001AE -S31540012B8090222001912A2001912A200281C3E00846 -S31540012B900100000081C3E008D082004081C3E00803 -S31540012BA0D2A2004081C3E008D082018081C3E008FF -S31540012BB0D2A2018081C3E008D08201A081C3E0088E -S31540012BC0D2A201A081C3E008D08201C081C3E0083E -S31540012BD0D2A201C081C3E008D08201E081C3E008EE -S31540012BE0D2A201E081C3E008D2A2000081C3E0087D -S31540012BF0D082000081C3E00891480000818A00002C -S31540012C0001000000010000000100000081C3E0084E -S31540012C100100000081C3E008C0A000A081C3E00814 -S31540012C20C0A000C081C3E008D01A00000100000026 -S31540012C300100000001000000010000000100000049 -S31540012C409DE3BF7013100072CD1A6260CD3FBFE0A5 -S31540012C50111000801B100080C91B61E0C51A21D8E4 -S31540012C60C11FBFE095A088C4D53FBFF0D91FBFF0B3 -S31540012C7003100080D11861E881AB0A4801000000C9 -S31540012C800380002BC13FBFD8F91FBFD8B5A0055C53 -S31540012C90F53FBFF0ED1FBFF0F11FBFF0A5A5895865 -S31540012CA0E91FBFE0A1A488D415100072A1A001308C -S31540012CB0DD1AA26881AC0ACE010000000D80002D0C -S31540012CC0F53FBFD0C51FBFD083A018C291A04921EF -S31540012CD099A01928D51FBFE091A308CA1710007201 -S31540012CE091A00128FD1AE27081AA0ADE01000000C6 -S31540012CF00D80002F01000000400001AE01000000E0 -S31540012D004000020C0100000080A220001280003128 -S31540012D1001000000400002610100000080A2200085 -S31540012D200280003501000000308000317FFFB93755 -S31540012D3090102001F91FBFD8B5A0055CF53FBFF043 -S31540012D40ED1FBFF0F11FBFF0A5A58958E91FBFE0F0 -S31540012D50A1A488D415100072A1A00130DD1AA26881 -S31540012D6081AC0ACE010000001BBFFFD7F53FBFD0A3 -S31540012D707FFFB92690102002C51FBFD083A018C27D -S31540012D8091A0492199A01928D51FBFE091A308CA4E -S31540012D901710007291A00128FD1AE27081AA0ADE7D -S31540012DA0010000001BBFFFD5010000007FFFB917DE -S31540012DB0901020034000017F01000000400001DD2A -S31540012DC00100000080A2200002BFFFD301000000E5 -S31540012DD07FFFB90E010000004000023001000000F3 -S31540012DE080A2200002800004010000007FFFB90795 -S31540012DF09010200581C7E00881E800009DE3BF9857 -S31540012E007FFFFF7D210000047FFFFF7D90120010B0 -S31540012E107FFFFF79B0102000808A00100280000BEE -S31540012E209010200040000267010000007FFFB906B4 -S31540012E3001000000912A20047FFFB8EF900220088C -S31540012E407FFFFF800100000081C7E00881E80000A4 -S31540012E501910008098132178111002009210200059 -S31540012E60150FF76C9412A3D7D03B0000D42320084A -S31540012E70C11B0000C503200887A08922010000006C -S31540012E8089A005408DA0892281A8CA26010000009B -S31540012E9033800003901020009010200181C3E00888 -S31540012EA001000000C11A0000C51A400089A008426D -S31540012EB081C3E008C93A8000C11A0000C51A400022 -S31540012EC089A0094281C3E008C93A800019100080EF -S31540012ED098132178D0230000D2232008C103000093 -S31540012EE0C303200885A00D2181C3E008C53A8000AF -S31540012EF0C11A0000C51A400089A009C2C93A80001A -S31540012F0081C3E00801000000C11A000085A0054008 -S31540012F10C53A400081C3E0080100000001000000FD -S31540012F200100000001000000010000000100000056 -S31540012F300100000001000000010000000100000046 -S31540012F400100000001000000010000000100000036 -S31540012F500100000001000000010000000100000026 -S31540012F600100000001000000010000000100000016 -S31540012F700100000001000000010000000100000006 -S31540012F8001000000010000000100000001000000F6 -S31540012F9001000000010000000100000081A00020A6 -S31540012FA081C3E00801000000C11A000081C3E008A6 -S31540012FB001000000C51A000089A009C2C93A4000B3 -S31540012FC081C3E0080100000013100080921261786D -S31540012FD0D0224000C102400085A01900C53A4000F8 -S31540012FE081C3E008D01A4000131000809212617824 -S31540012FF0D0224000C102400085A01880C522400071 -S3154001300081C3E008D0024000151000809412A178D7 -S31540013010D03A8000C11A800085A01A40C52280009E -S3154001302081C3E008D0028000151000809412A17877 -S31540013030D0228000C102800085A01A20C5228000CE -S3154001304081C3E008D0028000151000809412A17857 -S31540013050D0228000C102800081A01920C13A80009F -S3154001306081C3E008D01A8000151000809412A1781F -S31540013070D03A8000C11A800081A018C0C1228000C8 -S3154001308081C3E008D0028000151000809412A17817 -S31540013090D0228000CB0280008DA00025CD22800069 -S315400130A081C3E008D0028000151000809412A178F7 -S315400130B0D0228000CB0280008DA000A5CD228000C9 -S315400130C081C3E008D0028000151000809412A178D7 -S315400130D0D0228000CB0280008DA00125CD22800028 -S315400130E081C3E008D002800019100080981321782E -S315400130F0D03B0000D43B2008C11B0000C51B200863 -S3154001310081A80A4201000000338000099010200086 -S3154001311029800007901020012D8000059010200283 -S315400131202F8000039010200391D0200081C3E00836 -S31540013130010000001910008098132178D03B00004F -S31540013140D43B2008C11B0000C51B200881A80AC228 -S315400131500100000033BFFFF69010200029BFFFF4A5 -S31540013160901020012DBFFFF2901020022FBFFFF0DB -S315400131709010200391D020001910008098132178D7 +S315400100009DE3BF8099362010D827BFE0AF36200840 +S31540010010EE27BFE4AF366008C607A05CEE27BFEC0B +S31540010020AF36E018C407A060EE27BFF499366010DA +S31540010030AF30E008D827BFE8EE27BFFC8800A026EE +S31540010040EE07A06C993920089736A010D827BFF043 +S315400100501300003F9936E008921263FFA00E800913 +S31540010060A002C010D827BFF89B36E01098090009B6 +S31540010070900EC0091F0000239E13E1119E04000F3C +S315400100809E03C00D9003C0089802000CA1332010B6 +S31540010090980B00099804000C920B00099933201023 +S315400100A0BB2F601292030009992F2011BA17400CF9 +S315400100B0C207A0689008A3FF912A20079817400815 +S315400100C0BA00A034FA25C000EE07BFE09400A012A2 +S315400100D092380009AD36A018EE284000AB36A0088C +S315400100E0A73AA008EE07BFE4F0286002A9326008EB +S315400100F09F30E018EE286001A5332018A33B20105D +S31540010100EE07BFE8A13B20089130E01080A7200010 +S31540010110EE286003EE07BFECF2286005EE28600486 +S31540010120EE07BFF0EE286010EE07BFF4EE28601A26 +S31540010130EE07BFF8C8286011C028600A88103FDE64 +S31540010140EE28601CC028600DC028600FC0286012D0 +S31540010150C828600688103FADC828600788103FBE92 +S31540010160C828600888103FEFC828600988102020F9 +S31540010170C828600B88102008C828600C88102045C4 +S31540010180C828600E88102040C0286013C828601611 +S31540010190C0286014C0286015DA28601B8810201119 +S315400101A0C8286017EE07A064F628601DEC28601E7B +S315400101B0EA286020E8286018D2286019E6286026D7 +S315400101C0D4286027E428602CE228602DE028602EA0 +S315400101D0D828602FDE286030D0286031C807BFFCA0 +S315400101E0C6286033D628601FF4286021C8286032AB +S315400101F0C0286022C0286023C0286024C02860250A +S31540010200C0286028C0286029C028602A0280000DC5 +S31540010210C028602B80A0A0000280000A8810200020 +S31540010220861020009A004004C80DC0048600E001F3 +S3154001023080A0C002C82B603412BFFFFB88100003A8 +S3154001024081C7E00881E800009DE3BD2040002A9473 +S315400102509010200025100124A2100008A814A0D057 +S3154001026040002A8F90102004A01000087FFFC3DFB2 +S315400102701100407482103FDEC22D200482103FAD32 +S31540010280C22D200582103FBEC22D200682103FEFAF +S31540010290C02D2008C22D200782102020C22D200902 +S315400102A0F024A0D04000028A90100014D0052010FE +S315400102B0D404A0D0400001C292102000AC9220008C +S315400102C00680017E01000000D0052010D604A0D092 +S315400102D01500001092102000400001F89415800A84 +S315400102E082103FDEC22FBE9EC22FBE9882103FAD06 +S315400102F0C22FBE9FC22FBE9982103FBEC22FBEA043 +S31540010300C22FBE9A82103FEFC22FBEA1C22FBE9B03 +S3154001031082102020C02FBE9CC22FBEA3C22FBE9DDD +S31540010320C02FBEA282103FF2C02FBEA4C22FBEA5CF +S31540010330A607BE988210200EC22CC0018200600121 +S3154001034080A0610032BFFFFEC22CC001AA07BD9842 +S31540010350AE14A0D090100015400003C692100017AD +S3154001036080A2200002BFFFFD9010001590102100D1 +S3154001037092100013400003729410001780A22000CF +S3154001038002BFFFFC90102100901000109210001146 +S31540010390400004019410001780A2200002BFFFFC18 +S315400103A090100010C204000080A061000280000588 +S315400103B0AE1020007FFFC39B90102001AE1020009D +S315400103C0848DE0031280000580A0A002AC05401791 +S315400103D0EC85802080A0A002028000098335A00818 +S315400103E080A0A003028000068210001680A0A00112 +S315400103F0028000038335A0108335A018C40CC017B2 +S31540010400820860FF80A0800122800005AE05E001E0 +S315400104107FFFC38490102002AE05E00180A5E10074 +S3154001042012BFFFE9848DE003C205201480A060005D +S3154001043002800120B010200003100124EE0060D09C +S31540010440AE05E01CEE85C02040002A159010210023 +S3154001045082103FFFC22A201EC22A0000C22A200162 +S31540010460C22A2002C22A2003C22A2004C22A200507 +S3154001047082103FDEC22A2016C22A200682103FADD4 +S31540010480C22A2017C22A200782103FBEC22A20183C +S31540010490C22A200882103FEFC22A2019C22A200907 +S315400104A082102020C22A201BC22A200B821020083B +S315400104B0C22A2010C22A200C82102006C22A2012EB +S315400104C0C22A200D82102001C02A200AC22A2015E4 +S315400104D0C22A200FC02A200EC02A2011C02A201469 +S315400104E0C02A201A8210202AC22400008210200429 +S315400104F08935E018C22A20138735E01082103FDD86 +S315400105008535E008C22A201C82103FEEC22A201DF2 +S3154001051082103FCCC22A201FC02A2020C82A20266A +S31540010520C62A2027C42A2028C02A2021C02A2022C0 +S31540010530C02A2023C02A2024C02A2025EE2A202989 +S31540010540AC100008A814A0D0901000154000034933 +S315400105509210001480A2200002BFFFFD90100015EA +S31540010560D004000092100016400002F594100014C9 +S3154001057080A2200022BFFFFCD00400009010001092 +S3154001058092100011400003849410001480A22000B0 +S3154001059002BFFFFC90100010B807BDAEF88F0020D7 +S315400105A08607BDAFC688C0208407BDB0C4888020F9 +S315400105B00300003F8408A0FF821063FFB80F20FFAD +S315400105C08728E018B92F20108738E010BA07BDB147 +S315400105D08608C001B8170003B8170002FA8F4020F9 +S315400105E08607BDB2C688C0208407BDB3C4888020B3 +S315400105F08728E0188738E0108208C001BA0F60FFEB +S31540010600BB2F6010BA1740018208A0FFB607BF98FA +S31540010610BA174001C023A060C023A064EC23A068A0 +S31540010620E023A06CF623A05C9010001C9210001DE4 +S315400106309410001796100017981020007FFFFE7146 +S315400106409A102000901000154000030A92100014E1 +S3154001065080A2200002BFFFFD90100015D0040000CB +S3154001066092100016400002B69410001480A2200099 +S3154001067022BFFFFCD0040000901000109210001120 +S31540010680400003459410001480A2200002BFFFFCE5 +S31540010690901000108607BDC4C688C020B207BDC5EC +S315400106A0C28E40208407BDC6C4888020A807BDC726 +S315400106B0E88D0020820860FF83286010A80D20FF86 +S315400106C08728E0188528A018A81500038538A010AA +S315400106D0A81500010300003F821063FF82088001D4 +S315400106E0A815000103000080808D0001833520128A +S315400106F002800003B4006001B4100001821020485A +S31540010700F623A05CE623A064EC23A068E023A06C5A +S31540010710C223A0609010001C9210001D9410001777 +S3154001072096100017981020019A10001A7FFFFE3587 +S31540010730B014A0D090100015400002CE92100018BF +S3154001074080A2200002BFFFFD90100015D0040000DA +S31540010750921000164000027A9410001880A22000E0 +S3154001076022BFFFFCD004000090100010921000112F +S31540010770400003099410001880A2200002BFFFFC2C +S3154001078090100010F28E4020808E60021280004F41 +S315400107900100000082102048F623A05C9410001747 +S315400107A0C023A064EC23A068E023A06C9010001C39 +S315400107B09210001D9A06A001A414A0D0C223A060E5 +S315400107C0961000177FFFFE0F98102000901000151D +S315400107D0400002A89210001280A2200002BFFFFD35 +S315400107E090100015D00400009210001640000254EB +S315400107F09410001280A2200022BFFFFCD00400000A +S315400108009010001092100011400002E39410001263 +S3154001081080A2200002BFFFFC90100010C20400001D +S3154001082080A0607C02800005A207BDCC7FFFC27D0F +S3154001083090102004A207BDCCA0102000848C200378 +S315400108401280000480A0A002E884402080A0A0027B +S31540010850A2046001028000098335200880A0A0031C +S31540010860028000068210001480A0A00102800003CD +S315400108708335201083352018C40CC010820860FFD0 +S3154001088080A0800122800005A00420017FFFC2656F +S3154001089090102005A004200180A4204812BFFFE942 +S315400108A0848C200390100016400028F6B0102000DA +S315400108B081C7E00881E800007FFFC25A90102000FE +S315400108C010BFFE83D00520107FFFC2569010200333 +S315400108D010BFFFB2821020489DE3BF98F027A04485 +S315400108E0C207A044C2804020C227BFFCC207BFFC4A +S315400108F0B010000181E8000081C3E008010000005A +S315400109009DE3BFA0F027A044F227A048C207A04418 +S31540010910C407A048C420400081E8000081C3E00824 +S31540010920010000009DE3BF90F027A044C207A04408 +S315400109308328600190100001400028D90100000081 +S3154001094082100008C227BFF4C407BFF4C207A044FF +S3154001095084008001C207A0448220000182088001F0 +S31540010960C227BFF4C207BFF4C227BFF8C027BFFCE6 +S315400109701080000A01000000C207BFFC8328600303 +S31540010980C407BFF882008001C0204000C207BFFCF7 +S3154001099082006001C227BFFCC207BFFC80A0607F06 +S315400109A004BFFFF601000000C207BFF4B01000010A +S315400109B081E8000081C3E008010000009DE3BF9883 +S315400109C0F027A044F227A048F427A04CC207A04C28 +S315400109D082006010901000017FFFFFC001000000FF +S315400109E082100008C227BFFCC207BFFC820860080C +S315400109F080A0600012BFFFF601000000C207A044BC +S31540010A008528600BC207A0488208601F83286006BC +S31540010A108210800182106002C227BFFCC207A04C2F +S31540010A208200601090100001D207BFFC7FFFFFB526 +S31540010A3001000000C207A04C820060109010000126 +S31540010A407FFFFFA60100000082100008C227BFFCFD +S31540010A50C207BFFC8208600880A0600012BFFFF693 +S31540010A6001000000C207BFFC8208601080A0600040 +S31540010A701280000D01000000C207A04C82006010E8 +S31540010A80901000017FFFFF950100000082100008D1 +S31540010A90C227BFFCC207BFFC833060101080000331 +S31540010AA00100000082103FFFB010000181E8000004 +S31540010AB081C3E008010000009DE3BF98F027A044F0 +S31540010AC0F227A048F427A04CF627A050C207A05011 +S31540010AD082006010901000017FFFFF80010000003E +S31540010AE082100008C227BFFCC207BFFC820860080B +S31540010AF080A0600012BFFFF601000000C207A04CB3 +S31540010B0085286010C207A0448328600B84108001A9 +S31540010B10C207A0488208601F8328600682108001B0 +S31540010B2082106001C227BFFCC207A050820060103C +S31540010B3090100001D207BFFC7FFFFF720100000049 +S31540010B40C207A05082006010901000017FFFFF6332 +S31540010B500100000082100008C227BFFCC207BFFC8B +S31540010B608208600880A0600012BFFFF60100000005 +S31540010B7081E8000081C3E008010000009DE3BFA0B9 +S31540010B80F027A044F227A048C207A048C408400065 +S31540010B90C207A044C4286004C207A048820060017D +S31540010BA0C4084000C207A044C4286005C207A04843 +S31540010BB082006002C4084000C207A044C4286006FF +S31540010BC0C207A04882006003C4084000C207A0448F +S31540010BD0C4286007C207A04882006004C4084000D8 +S31540010BE0C207A044C4286008C207A0488200600525 +S31540010BF0C4084000C207A044C4286009C207A044F3 +S31540010C00C20040008200600884100001C207A0486B +S31540010C10C2084000820860FF87286008C207A048D2 +S31540010C2082006001C2084000820860FF8210C00154 +S31540010C3090100002921000017FFFFF320100000078 +S31540010C40C207A044C20040008200600C841000012B +S31540010C50C207A04882006002C2084000820860FFC5 +S31540010C6087286018C207A04882006003C208400076 +S31540010C70820860FF832860108610C001C207A04821 +S31540010C8082006004C2084000820860FF8328600831 +S31540010C908610C001C207A04882006005C208400014 +S31540010CA0820860FF8210C00190100002921000017C +S31540010CB07FFFFF140100000082102001B0100001E7 +S31540010CC081E8000081C3E008010000009DE3BF8880 +S31540010CD0F027A044C207A044C20040009010000182 +S31540010CE07FFFFEFE0100000082100008C227BFEC14 +S31540010CF0C207BFEC8330601B84086001C207A04471 +S31540010D00C420600CC207BFEC8530601FC207A044F7 +S31540010D10C4206014C207A044C200601480A06000D1 +S31540010D201280001401000000C207A044C200400026 +S31540010D3090100001921020407FFFFEF2010000005A +S31540010D40C207A044C2004000901000017FFFFEE3AD +S31540010D500100000082100008C227BFECC207BFECA9 +S31540010D608208604080A0600012BFFFF601000000CB +S31540010D70C207A044C20040008200601090100001EA +S31540010D807FFFFED60100000082100008C227BFEC9B +S31540010D90C207BFEC8330600B8408601FC207A044C2 +S31540010DA0C4206010901024007FFFFEDF0100000088 +S31540010DB08210000884100001C207A044C4206018B4 +S31540010DC0901024007FFFFED8010000008210000829 +S31540010DD084100001C207A044C420601CC207A0447D +S31540010DE0C20040008200601484100001C207A04482 +S31540010DF0C200601890100002921000017FFFFEC1F0 +S31540010E0001000000C207A044C200400082006018F1 +S31540010E1084100001C207A044C200601C9010000269 +S31540010E20921000017FFFFEB701000000C207A044F7 +S31540010E30C0206020C207A044C0206024C207A0444D +S31540010E40C0206028C207A044C020602CC207A0442D +S31540010E50C200601480A0600012800096010000006C +S31540010E60C207A044C200601084100001C207A0441A +S31540010E70C200400090100002921020001500002090 +S31540010E80961000017FFFFF0D01000000C207A0443C +S31540010E90C200601084100001C207A044C200400095 +S31540010EA09010000292102000941000017FFFFEC4B2 +S31540010EB00100000082100008C227BFECC407BFEC46 +S31540010EC0030000208208800180A0600012BFFFF06D +S31540010ED001000000C027BFF0C407BFEC03000004B7 +S31540010EE08208800180A060000280001F010000008E +S31540010EF01080000B01000000C207BFF082006001B4 +S31540010F00C227BFF0C407BFF0030000308210635010 +S31540010F1080A080011480001301000000C207A04494 +S31540010F20C200601084100001C207A044C200400004 +S31540010F309010000292102001941000017FFFFEA044 +S31540010F4001000000821000088208602080A0600035 +S31540010F5002BFFFEA0100000010800003010000000B +S31540010F6001000000C207A044C200601084100001C5 +S31540010F70C207A044C2004000901000029210200017 +S31540010F80941000017FFFFE8E0100000082100008D0 +S31540010F90C227BFECC207A044C200600C80A060001B +S31540010FA00280001201000000C407BFEC03000008E4 +S31540010FB08208800180A060001280000C01000000C0 +S31540010FC0C207BFEC8208604080A060000280000733 +S31540010FD00100000082102001C227BFFCC027BFF8D4 +S31540010FE01080001F01000000C407BFEC0300000889 +S31540010FF08208800180A060000280000C0100000090 +S31540011000C207BFEC8208604080A0600012800007E2 +S3154001101001000000C027BFFC82102001C227BFF893 +S315400110201080000F01000000C407BFEC0300000858 +S315400110308208800180A06000128000090100000042 +S31540011040C207BFEC8208604080A0600012800004A5 +S3154001105001000000C027BFFCC027BFF8C207BFEC94 +S315400110608330600882086001C227BFF4C207A044EA +S31540011070C200400084100001C207BFF48728600403 +S31540011080C207BFF8832860078610C001C207BFFCAC +S31540011090832860088210C00190100002921000015E +S315400110A07FFFFE18010000001080001C01000000B7 +S315400110B0C027BFF01080001501000000C207A04400 +S315400110C0C200400082006010901000017FFFFE03C5 +S315400110D00100000082100008C227BFECC207BFEC26 +S315400110E08208600880A060000280000501000000BF +S315400110F0C027BFF01080000501000000C207BFF005 +S3154001110082006001C227BFF0C207BFF080A0600223 +S3154001111004BFFFEB01000000C207A0448200600447 +S31540011120D007A044921000017FFFFE950100000008 +S3154001113081E8000081C3E008010000009DE3BFA0F3 +S31540011140F027A044F227A048F427A04CC207A04CA0 +S31540011150C4006018C207A04CC20060208328600307 +S3154001116082008001901000017FFFFDDC010000003C +S31540011170821000088208680080A060000280000595 +S31540011180010000008210200010800036010000009E +S31540011190C207A04CC4006018C207A04CC200602020 +S315400111A08328600382008001C407A048C4206004EC +S315400111B0C207A04CC200602080A0607F1280001050 +S315400111C001000000C207A04CC4006018C207A04C31 +S315400111D0C20060208328600382008001C607A044C4 +S315400111E0050000068410C002C4204000C207A04C7E +S315400111F0C02060201080001001000000C207A04CF2 +S31540011200C4006018C207A04CC20060208328600356 +S3154001121082008001C407A0448410A800C420400075 +S31540011220C207A04CC200602084006001C207A04CE6 +S31540011230C4206020C207A04CE0004000C207A04C79 +S31540011240C2004000901000017FFFFDA40100000094 +S315400112508210000882106001C22400008210200121 +S31540011260B010000181E8000081C3E00801000000E0 +S315400112709DE3BFA0F027A044F227A048C207A0489B +S31540011280C400601CC207A048C200602483286003D2 +S3154001129082008001901000017FFFFD900100000057 +S315400112A0821000088208680080A060000280000564 +S315400112B00100000082102000108000330100000070 +S315400112C0C207A048C400601CC207A048C2006024EF +S315400112D08328600382008001C407A044C4206004BF +S315400112E0C207A048C200602480A0607F1280000E21 +S315400112F001000000C207A048C400601CC207A04804 +S31540011300C200602483286003820080010500000634 +S31540011310C4204000C207A048C02060241080000FAE +S3154001132001000000C207A048C400601CC207A048D3 +S31540011330C200602483286003820080018410280053 +S31540011340C4204000C207A048C20060248400600156 +S31540011350C207A048C4206024C207A048E00040005C +S31540011360C207A048C2004000901000017FFFFD5B0C +S31540011370010000008210000882106002C2240000B1 +S3154001138082102001B010000181E8000081C3E0080D +S31540011390010000009DE3BF98F027A044F227A04832 +S315400113A0F427A04CC207A04CC400601CC207A04C45 +S315400113B0C200602C832860038200800190100001E6 +S315400113C07FFFFD460100000082100008C227BFFCD6 +S315400113D0C207BFFC8208680080A060001280001727 +S315400113E001000000C207BFFC840867FFC207A04492 +S315400113F0C4204000C207A04CC200602C80A0607F80 +S315400114001280000601000000C207A04CC020602CDB +S315400114101080000701000000C207A04CC200602CEA +S3154001142084006001C207A04CC420602C82102001B8 +S31540011430108000030100000082102000B01000015E +S3154001144081E8000081C3E008010000009DE3BF98E8 +S31540011450F027A044C207A044C4006018C207A044B4 +S31540011460C200602883286003820080019010000139 +S315400114707FFFFD1A0100000082100008C227BFFC51 +S31540011480C207BFFC8208680080A06000128000137A +S3154001149001000000C207A044C200602880A0607F0E +S315400114A01280000601000000C207A044C020602847 +S315400114B01080000701000000C207A044C200602856 +S315400114C084006001C207A044C42060288210200124 +S315400114D0108000030100000082102000B0100001BE +S315400114E081E8000081C3E008010000009DE3BFA040 +S315400114F07FFFBF3E1100403080A22000128000AF26 +S3154001150082102001C226200CC0262004C0260000DD +S31540011510C026200882102002C2262008C0260000CC +S31540011520C026000082102003C22620088210208394 +S31540011530C226200882102000C026000082006001D9 +S3154001154080A0606412BFFFFD0100000082102000F0 +S31540011550C40600008200600180A0606412BFFFFDE6 +S315400115600100000082102002C2262008A0062004A5 +S31540011570C28400208088600402BFFFFE0100000093 +S31540011580C0262008C0260000C28400208410200105 +S31540011590833860148208603F80A0600102800004A5 +S315400115A0A21020011080000E82102003C0260000E8 +S315400115B0A200A001C2840020833860148208603FE3 +S315400115C080A0401122BFFFFA8410000180A460016F +S315400115D034800002A210000282102003C226200895 +S315400115E0C28400208208600780A06006028000084D +S315400115F001000000C2860020C284002082086007E4 +S3154001160080A0600612BFFFFC01000000C026200832 +S31540011610C026200480A46001048000048210203486 +S31540011620C284002082102034C2260000C2840020D9 +S31540011630C284002080A46001048000198210200128 +S3154001164029100074A4102001A815215090100012F1 +S31540011650400024DA92102041C24D0008C226000003 +S31540011660A404A00180A4801112BFFFFA90100012B9 +S31540011670C2840020C2840020833860148208603FFF +S3154001168080A0401102800004010000007FFFBEE5FA +S3154001169090102006C284002082102001C226200C10 +S315400116A0C28400208088600112800053821020830A +S315400116B0C226200880A46001028000420100000089 +S315400116C0C28400208088640002BFFFFE0100000042 +S315400116D0C2840020808860010280004F80A460019E +S315400116E00480005280A46000C28400208330601AC6 +S315400116F080A0401102800004010000007FFFBEC9A6 +S3154001170090102009C2840020808861000280004A2E +S3154001171001000000C2840020808864000280004CE1 +S315400117200100000029100074A4102000A8152150C2 +S31540011730E686002092102041400024A0901000121D +S31540011740C24D000880A0401322800005A404A001D8 +S315400117507FFFBEB49010200CA404A00180A44012C7 +S3154001176014BFFFF480A460010480000F0100000053 +S31540011770C2840020808861001280003F0100000081 +S31540011780C28400208330601A80A060001280003736 +S3154001179001000000C284002080886400128000306D +S315400117A001000000E0840020808C20011280000EA0 +S315400117B001000000C026200881C7E00891E820000A +S315400117C0C28400208088600112BFFFC20100000070 +S315400117D0C28400208088600102BFFFFA0100000038 +S315400117E030BFFFBC7FFFBE8F9010200CC026200863 +S315400117F030BFFFF27FFFBE8B9010200782102083FF +S31540011800C226200880A4600112BFFFAE010000007D +S3154001181030BFFFEC7FFFBE839010200880A460019B +S3154001182014BFFFB280A4600034BFFFC0291000740A +S3154001183030BFFFDD7FFFBE7B9010200AC2840020AF +S315400118408088640032BFFFB9291000747FFFBE75DE +S315400118509010200B10BFFFB5291000747FFFBE7199 +S315400118609010200B30BFFFD07FFFBE6E9010200E30 +S3154001187030BFFFC97FFFBE6B9010200D30BFFFC147 +S3154001188003100123C40060848528A0028610608469 +S3154001189090022010D020C002C40060848400A001C0 +S315400118A0C420608481C3E00801000000C02200001A +S315400118B0C022204082103FFFC222200C0310012388 +S315400118C084102001C420608481C3E0080100000027 +S315400118D003100123C20060CC90102000C020600894 +S315400118E081C3E008010000009DE3BFA0231001244D +S315400118F0E00461007FFFBE4490102011C024201CEB +S31540011900C204201C80A060000280004C010000003F +S31540011910C204201C8330601B80A0401A0A80004EFE +S3154001192080A6A0000280003FC20461002B10012363 +S31540011930A6102004AA156084BA102000A410200025 +S31540011940AE103FFFA8102001AC10201FB810200593 +S31540011950BB2F6002C606401DC0240000C0242040A3 +S31540011960EE24200CE8254000832D0012A404A0019A +S31540011970852CA01082108001C224201CEE24204018 +S315400119808928E0049A00FFFFC206001D9800400422 +S315400119909B2B60048400400DEC206004EC20400049 +S315400119A0F8204004C0232004E820A018C4004004C5 +S315400119B080A0A00012BFFFFE010000008728E004BE +S315400119C0C400400380A0A00002BFFFFE010000004A +S315400119D08200400DC0206018C205400080A0600210 +S315400119E002800004010000007FFFBE0E9004FFFF4D +S315400119F0C40560048204A01080A080010280000416 +S31540011A00BA1000127FFFBE0790100013C024201C9D +S31540011A1080A6801218BFFFCFA604E002C20461006F +S31540011A2084103FFFB0102000C0206040C420600CED +S31540011A3081C7E00881E800007FFFBDFA90102001D0 +S31540011A40C204201C8330601B80A0401A1ABFFFB617 +S31540011A5080A6A0007FFFBDF39010200210BFFFB506 +S31540011A602B1001239DE3BF80231001232110012464 +S31540011A70E6042100A404E100C204A004F02460CCE1 +S31540011A807FFFBDE190102010C204A0040501800033 +S31540011A908410A02080884002128001450100000088 +S31540011AA0C404E100C204E10080A080010280000577 +S31540011AB0821020017FFFBDDB9010200282102001A1 +S31540011AC0C224A004C404E100C204E10080A0800154 +S31540011AD00280014201000000C024A004C404E100C8 +S31540011AE0C204E10080A080010280000580A7200099 +S31540011AF07FFFBDCC9010200480A7200012800111E9 +S31540011B0080A7200180A6A0010480001A2F1000465C +S31540011B10A606E001AE15E0D0A8102001AC142100C4 +S31540011B2010800005AA10200180A6801404800011AF +S31540011B30A604E00180A4E01F34BFFFFCA8052001F4 +S31540011B4092100013400028C690100017C20580006D +S31540011B50C4006040872D40138410C002C4206040F9 +S31540011B60A805200180A6801414BFFFF3A604E00156 +S31540011B7080A0001C84603FFFC427BFF0C60460CC30 +S31540011B8082103FFFF627BFF8C027BFFCC020E00404 +S31540011B90C020E010C220E014C220E00C8206A0035F +S31540011BA08538601F8530A01E82008001AF386002F3 +S31540011BB0C207BFF08200401B8416E020C227BFEC5B +S31540011BC0C427BFE829100123AC102001A81520CC59 +S31540011BD0310100003B0080002B01800080A72000DE +S31540011BE002800003821020018210001CC407BFFC42 +S31540011BF080A08001168000CB80A7200104800016BA +S31540011C0080A5E00004800014C207BFFCC407BFFCE6 +S31540011C108928601883286010881100018328A0084C +S31540011C20881100028400E0248811000182102001FD +S31540011C30C820E0201080000680A04017C820800000 +S31540011C40820060018400A00480A0401712BFFFFCFF +S31540011C5001000000C207BFF0E827BFF480A680015B +S31540011C60A2100001048000338400E0081080000EB9 +S31540011C70E607BFECE624A004832D8011C220E008CC +S31540011C80833E401180886001128000138400E00881 +S31540011C90A204600180A6801104800026A604E0010A +S31540011CA0C605000080A7200002BFFFF380A72001E0 +S31540011CB002800079C407BFF8C424A004832D801193 +S31540011CC0C220E008833E40118088600102BFFFF1D7 +S31540011CD08400E008C200800080A0600012BFFFFEC1 +S31540011CE001000000C204A0048088401802800067F9 +S31540011CF001000000C204A0048088401D02800060EB +S31540011D0001000000EA24A004C204A0048088401512 +S31540011D101280005601000000C40500008400A0089E +S31540011D20A204600180A6801114BFFFDEA604E00173 +S31540011D30C020800010800005A210200080A46020F1 +S31540011D400280000780A72000833E40118088600101 +S31540011D5022BFFFFBA204600180A720001280005130 +S31540011D6080A720018204401B82106020C224A00467 +S31540011D70A32D8011E2208000C200800080A0600077 +S31540011D8012BFFFFE01000000C204A004808860204B +S31540011D900280005D01000000C204A0048088401852 +S31540011DA00280005601000000C204A0048088401D44 +S31540011DB00280004E01000000C207BFF4C40040008B +S31540011DC0C204A008E604A00C8600A008E220A008F0 +S31540011DD0C400C00080A0A00012BFFFFE01000000A9 +S31540011DE0C404A0048088A0202280003CC227BFE40E +S31540011DF0C404A0048088801822800034C227BFE42E +S31540011E00C404A0048088801D2280002CC227BFE420 +S31540011E10C404A00880A04002028000040100000022 +S31540011E207FFFBD009010200EC204A00C80A4C0010B +S31540011E3002800005C407BFF47FFFBCFA9010200F53 +S31540011E40C407BFF4C207BFFCC6008000C407BFF881 +S31540011E50820060018400A001EA24A004C227BFFCDD +S31540011E6010BFFF5FC427BFF87FFFBCEE901020076D +S31540011E70C405000010BFFFAB8400A0087FFFBCE98A +S31540011E809010200630BFFFA07FFFBCE690102005D2 +S31540011E9030BFFF99F624A00410BFFF79832D80112E +S31540011EA00280001CC607BFF88210E020C224A004AD +S31540011EB010BFFFB1A32D80117FFFBCDA9010200D1A +S31540011EC010BFFFD4C207BFE47FFFBCD69010200CE1 +S31540011ED010BFFFCCC207BFE47FFFBCD29010200BDE +S31540011EE010BFFFC4C207BFE47FFFBCCE9010200ADB +S31540011EF010BFFFB3C207BFF47FFFBCCA90102009D1 +S31540011F0030BFFFAA7FFFBCC79010200830BFFFA398 +S31540011F10C607BFE8C624A00410BFFF97A32D8011B2 +S31540011F20C2042100C020E00C84103FFFB010200005 +S31540011F30C0206040C420600C81C7E00881E80000F1 +S31540011F400280001E1110004680A72000A610001B2B +S31540011F5004BFFF08A81020002F100046AC14210032 +S31540011F60AE15E0D010800005AA10200180A700140C +S31540011F7004BFFF00A604E00180A4E01F34BFFFFCBC +S31540011F80A805200192100013400027B590100017B4 +S31540011F90C2058000C4006040872D40138410C002F2 +S31540011FA0C420604010BFFFF2A80520017FFFBC9D01 +S31540011FB09010200130BFFEBB9210001B400027A8A5 +S31540011FC0901220D0C2042100852F001BC4206040FE +S31540011FD010BFFEE980A0001C7FFFBC929010200339 +S31540011FE030BFFEBE9DE3BF80031001241100403483 +S31540011FF0231000467FFFBC7DF0206100C026000013 +S31540012000C026204082103FFFC226200C0310012328 +S3154001201084102001A0102001C4206084A214608095 +S31540012020921000104000278E90100011A00420014C +S3154001203080A4201012BFFFFC92100010F806202049 +S31540012040B937201C231001232D00003F3700002AF9 +S31540012050B8072001A2146084AC15A3FEB616E2AA05 +S31540012060A6100018AE102000B4103FFFBA10200190 +S31540012070A8102020AA10202180A720010280000557 +S3154001208080A5E0007FFFBC609010001780A5E000AE +S315400120900280000F01000000C024C000C024E040BF +S315400120A0F424E00CFA244000832DE01CC224E024F1 +S315400120B0C204E0248330601C80A0401702800004E3 +S315400120C0010000007FFFBC5790102012EC24E0086D +S315400120D0C204E00880A0401602800004010000000E +S315400120E07FFFBC5090102001EC24E040C204E04048 +S315400120F080A0401602800004010000007FFFBC4919 +S3154001210090102002C204E00880A0600012BFFFFECA +S3154001211001000000C204400080A06010028000055A +S31540012120A01020017FFFBC3F90102003A01020018A +S31540012130832C2002C20440018425001080A0800126 +S3154001214022800005A00420017FFFBC3690102004A8 +S31540012150A004200180A4201012BFFFF7832C200287 +S31540012160FA244000F624C000EC24E040C204C0003A +S3154001217080A0401B02800004010000007FFFBC29B3 +S3154001218090102005C204E04080A040160280000461 +S31540012190010000007FFFBC2390102005EC24E008DD +S315400121A0C204E00880A0600012BFFFFE01000000EB +S315400121B0C204400080A0601002800005A410201FC8 +S315400121C07FFFBC1890102006A410201FA0102001EC +S315400121D0832C2002C204400180A0401222800005C7 +S315400121E0A00420017FFFBC0F90102007A00420010E +S315400121F080A4200812BFFFF7A404BFFEA410201C30 +S31540012200A010200A832C2002C204400180A0401263 +S3154001221022800005A00420017FFFBC029010200807 +S31540012220A004200180A4201012BFFFF7A404BFFE22 +S31540012230FA27BFF082102002C407BFF08400A00134 +S31540012240C427BFF4C407BFF48400A001C427BFF864 +S31540012250C407BFF88400A001C427BFFC8410200630 +S31540012260C427BFE0C024C000C024E040FA24400097 +S31540012270C224E040C224E0088344400080886100D3 +S3154001228002800005010000008050000180500001DD +S3154001229080500001C207BFE0C227BFE4C207BFE0CA +S315400122A080A0600602800005821020027FFFBBDD10 +S315400122B09010200A82102002C224E008010000008A +S315400122C0C207BFE0C227BFE4C207BFE080A06006E5 +S315400122D002800005821020027FFFBBD29010200AA7 +S315400122E082102002C224E00801000000C027BFE49A +S315400122F0C207BFE480A060001280007301000000A5 +S31540012300C204E00880A0600012BFFFFE0100000089 +S31540012310C204400080A06004028000040100000065 +S315400123207FFFBBC09010200DC024E040EC24E008A4 +S31540012330FA24400040000210010000004000021053 +S3154001234090122F00EC24E040C204E04080A06000DF +S3154001235002BFFFFE01000000C204400080A06002EF +S3154001236002800004010000007FFFBBAE9010200EEA +S31540012370C204600480A0601F0280000401000000C6 +S315400123807FFFBBA89010200F400001FBA410200244 +S31540012390400001FB90023F00400001F701000000B0 +S315400123A0400001F790023F00C2044000A004A00192 +S315400123B080A0401022800005A52CA0027FFFBB997A +S315400123C090102010A52CA002C40440128225401072 +S315400123D080A0800102800004A41000107FFFBB9101 +S315400123E09010201180A4201012BFFFEC01000000C4 +S315400123F0C024E040F424E00CAE05E00180A70017BC +S3154001240014BFFF1EA624F00080A720010480002CE3 +S3154001241001000000C0262024C206202480A06000BE +S315400124201280002C0100000003040000C226202473 +S31540012430C406202480A0800102800005821020016C +S315400124407FFFBB789010201482102001C2262020E5 +S31540012450C026202403040000C406202480A0800155 +S3154001246002800004010000007FFFBB6E9010201522 +S31540012470C0262020C0262024C206202480A0600039 +S315400124801280001B0100000082102002C22620207B +S31540012490C2062020808860020280001201000000EE +S315400124A0C0262020C20620208088600202800004C7 +S315400124B0010000007FFFBB5B9010201881C7E00838 +S315400124C091E820007FFFBB579010200B30BFFF8D56 +S315400124D07FFFBB549010201310BFFFD503040000AB +S315400124E07FFFBB509010201730BFFFEE7FFFBB4DE3 +S315400124F09010201610BFFFE6821020029DE3BFA078 +S315400125007FFFBB640100000080A220000280003BE7 +S315400125100100000080A62000128000350100000065 +S315400125207FFFBB5C01000000912A20047FFFBB3680 +S3154001253090022003400018850100000080A220007F +S31540012540128000280100000040001824010000000C +S31540012550400017D201000000400001E801000000E0 +S3154001256080A6A0001280001C010000007FFFBB492D +S3154001257021100124912A2002A0142104C20400083A +S3154001258080A060000280000A80A620007FFFBB4138 +S3154001259001000000912A20027FFFBB3EE0040008B3 +S315400125A09FC400000100000080A6200002800004B4 +S315400125B0010000007FFFBB50901000194000044508 +S315400125C00100000040001E5401000000400015D7E4 +S315400125D081E8000040001F260100000030BFFFE4F3 +S315400125E07FFFBB109010200130BFFFD87FFFBB3269 +S315400125F09010001930BFFFCB7FFFBAFC1100400C91 +S3154001260010BFFFC680A6200003100123C40060D07E +S315400126108400A001C42060D081C3E008010000000D +S315400126209DE3BFA07FFFBAF11100404482103FFFF6 +S31540012630E4062008C2262004A40CA007C406000014 +S31540012640C206000080A080010280007401000000E3 +S315400126508210201FC2262004C226000080A4A000AA +S315400126600280004E82102000852860048406000204 +S315400126708200600180A04012C020A01812BFFFFC5A +S3154001268085286004A0102000A610200FAA1020065D +S31540012690A81020107FFFBADC90100010A204200180 +S315400126A0832C600486060001A12C2004C02600016B +S315400126B084060010E620E004EA20A018C2060001C4 +S315400126C080A0600F02800005820600107FFFBAD508 +S315400126D090102003820600108410200E872C60047F +S315400126E0E6206018C206000380A0400212BFFFFE2A +S315400126F0010000008400BFFF80A0BFFF12BFFFFAA8 +S3154001270001000000852C6004C206000280A0600F13 +S3154001271012BFFFFE82060010C2006018808860105A +S3154001272002800033A0060010E8242018C2042018B5 +S3154001273080886010128000350100000080A480115D +S3154001274014BFFFD5A010001180A4A0010480000C85 +S31540012750821020007FFFBAAC901020088210200F13 +S31540012760C22620188210202FC2262028C2062020E9 +S3154001277080A0600D12BFFFFE8210200085286004F4 +S31540012780840600028200600180A04012C020A01889 +S3154001279012BFFFFC8528600421100124C2042100D8 +S315400127A080A06000028000109210001911100049AB +S315400127B0400025AB901222087FFFFC3DD00421004A +S315400127C0C204210084102001B3288019F220604000 +S315400127D08210200FC22620148210200DC2262018F6 +S315400127E0A780000081C7E00881E800007FFFBA8D1D +S315400127F090102004E8242018C20420188088601014 +S3154001280022BFFFD080A480117FFFBA869010200599 +S3154001281010BFFFCC80A480117FFFBA8290102001A7 +S3154001282010BFFF8D8210201F000000000000000035 +S315400128300000000000000000000000000000000051 +S31540012840010000000100000001000000010000003D +S31540012850010000000100000081C3E0080100000002 +S31540012860010000000100000001000000010000001D +S31540012870010000000100000081C3E00801000000E2 +S3154001288001000000010000000100000001000000FD +S31540012890010000000100000081C3E00801000000C2 +S315400128A001000000010000000100000001000000DD +S315400128B0010000000100000081C3E00801000000A2 +S315400128C0D482018090A2000916BFFFFE9612800BAA +S315400128D081C3E0089010000BD48201C090A2000988 +S315400128E016BFFFFE9612800B81C3E0089010000BC5 +S315400128F090A22004C0A201A090A22004C0A201A0DF +S3154001290090A22004C0A201A090A22004C0A201A0CE +S31540012910C0A2018090A2200414BFFFF7010000006D +S3154001292081C3E0080100000090A22004C0A201E09A +S3154001293090A22004C0A201E090A22004C0A201E01E +S3154001294090A22004C0A201E0C0A201C090A220042E +S3154001295014BFFFF70100000081C3E0080100000039 +S31540012960981000089610000A98A3200814BFFFFF8C +S31540012970D43B00099810000898A3200814BFFFFF14 +S31540012980C01B00099810000898A32004D60300092B +S3154001299080A2C00A1280000698A3200434BFFFFD1E +S315400129A0D603000981C3E008901020009010200151 +S315400129B0981000089610000A98A3200814BFFFFF3C +S315400129C0D43B00099810000898A32004D6030009B7 +S315400129D080A2C00A1280000698A3200434BFFFFDDE +S315400129E0D603000981C3E008901020009010200111 +S315400129F09810000898A32004D2A301A0DA8301A06D +S31540012A0080A340091280000698A3200414BFFFFC4E +S31540012A10D2A301A081C3E0089010200090102001AC +S31540012A209A1000089AA3400AD6A34180D8834180D0 +S31540012A30981B000B988B0009128000069AA3400A46 +S31540012A4014BFFFFBD6A3418081C3E008901020004C +S31540012A50901020019A1000089AA3400BD8A241CDAC +S31540012A60C48241CD8418800C8488800A1280000675 +S31540012A709AA3400B14BFFFFBD8A241CD81C3E00806 +S31540012A80901020009010200101000000010000007C +S31540012A900100000013100080921260E4D40240004D +S31540012AA080A2A0011280000780A0A002D4024000AB +S31540012AB0D4024000952AA0021080000501000000C2 +S31540012AC03280000381E80000D402400081E000002A +S31540012AD093480000818A60202310004AA21462F8BC +S31540012AE0A40460040100000081C4400081CC800040 +S31540012AF091D0200191D0200126800005900020012F +S31540012B0090222001912A2001912A200281C3E008C6 +S31540012B100100000081C3E008D082004081C3E00883 +S31540012B20D2A2004081C3E008D082018081C3E0087F +S31540012B30D2A2018081C3E008D08201A081C3E0080E +S31540012B40D2A201A081C3E008D08201C081C3E008BE +S31540012B50D2A201C081C3E008D08201E081C3E0086E +S31540012B60D2A201E081C3E008D2A2000081C3E008FD +S31540012B70D082000081C3E00891480000818A0000AC +S31540012B8001000000010000000100000081C3E008CF +S31540012B900100000081C3E008C0A000A081C3E00895 +S31540012BA0C0A000C081C3E008D01A000001000000A7 +S31540012BB001000000010000000100000001000000CA +S31540012BC09DE3BF8803100074D1186198D13FBFF0CF +S31540012BD003100080D11FBFF0D91861800310008017 +S31540012BE0D518618895A308CAD53FBFF80310008060 +S31540012BF0D91FBFF8D518619081AB0A4A0100000080 +S31540012C0023800038D127BFEC91A0054803100074FA +S31540012C10D13FBFF8D51FBFF8D91FBFF899A3094ABD +S31540012C20D51FBFF099A308CA99A0012CD51861A058 +S31540012C3081AB0ACA010000002D800024D127BFECD8 +S31540012C4091A018C891A20928D51FBFF091A01928B3 +S31540012C5091A208CA91A0012803100074D51861A851 +S31540012C6081AA0ACA010000000D800015010000007A +S31540012C704000019001000000400001EE010000000B +S31540012C8080A220001280000B010000004000024398 +S31540012C900100000080A22000128000040100000013 +S31540012CA081C7E00881E800007FFFB95E91E8200511 +S31540012CB07FFFB95C0100000030BFFFF57FFFB959C6 +S31540012CC09010200330BFFFEBD327BFE87FFFB955F4 +S31540012CD090102002D307BFE810BFFFDAD107BFEC3F +S31540012CE0D327BFE87FFFB94F90102001D307BFE834 +S31540012CF010BFFFC6D107BFEC9DE3BFA07FFFFF9E7C +S31540012D00210000047FFFFF9E901200107FFFFF9A73 +S31540012D1001000000808A001012800004B0102000DB +S31540012D2081C7E00881E8000040000266901020005B +S31540012D307FFFB95801000000912A20047FFFB93274 +S31540012D40900220087FFFFF9F81E8000001000000FC +S31540012D5019100080981321201110020092102000B2 +S31540012D60150FF76C9412A3D7D03B0000D42320084B +S31540012D70C11B0000C503200887A08922010000006D +S31540012D8089A005408DA0892281A8CA26010000009C +S31540012D9033800003901020009010200181C3E00889 +S31540012DA001000000C11A0000C51A400089A008426E +S31540012DB081C3E008C93A8000C11A0000C51A400023 +S31540012DC089A0094281C3E008C93A800019100080F0 +S31540012DD098132120D0230000D2232008C1030000EC +S31540012DE0C303200885A00D2181C3E008C53A8000B0 +S31540012DF0C11A0000C51A400089A009C2C93A80001B +S31540012E0081C3E00801000000C11A000085A0054009 +S31540012E10C53A400081C3E0080100000001000000FE +S31540012E200100000001000000010000000100000057 +S31540012E300100000001000000010000000100000047 +S31540012E400100000001000000010000000100000037 +S31540012E500100000001000000010000000100000027 +S31540012E600100000001000000010000000100000017 +S31540012E700100000001000000010000000100000007 +S31540012E8001000000010000000100000001000000F7 +S31540012E9001000000010000000100000081A00020A7 +S31540012EA081C3E00801000000C11A000081C3E008A7 +S31540012EB001000000C51A000089A009C2C93A4000B4 +S31540012EC081C3E008010000001310008092126120C6 +S31540012ED0D0224000C102400085A01900C53A4000F9 +S31540012EE081C3E008D01A400013100080921261207D +S31540012EF0D0224000C102400085A01880C522400072 +S31540012F0081C3E008D0024000151000809412A12030 +S31540012F10D03A8000C11A800085A01A40C52280009F +S31540012F2081C3E008D0028000151000809412A120D0 +S31540012F30D0228000C102800085A01A20C5228000CF +S31540012F4081C3E008D0028000151000809412A120B0 +S31540012F50D0228000C102800081A01920C13A8000A0 +S31540012F6081C3E008D01A8000151000809412A12078 +S31540012F70D03A8000C11A800081A018C0C1228000C9 +S31540012F8081C3E008D0028000151000809412A12070 +S31540012F90D0228000CB0280008DA00025CD2280006A +S31540012FA081C3E008D0028000151000809412A12050 +S31540012FB0D0228000CB0280008DA000A5CD228000CA +S31540012FC081C3E008D0028000151000809412A12030 +S31540012FD0D0228000CB0280008DA00125CD22800029 +S31540012FE081C3E008D0028000191000809813212087 +S31540012FF0D03B0000D43B2008C11B0000C51B200864 +S3154001300081A80A4201000000338000099010200087 +S3154001301029800007901020012D8000059010200284 +S315400130202F8000039010200391D0200081C3E00837 +S31540013030010000001910008098132120D03B0000A8 +S31540013040D43B2008C11B0000C51B200881A80AC229 +S315400130500100000033BFFFF69010200029BFFFF4A6 +S31540013060901020012DBFFFF2901020022FBFFFF0DC +S315400130709010200391D02000191000809813212030 +S31540013080D0230000D2232008C1030000C303200837 +S3154001309081A80A210100000033BFFFE590102000FE +S315400130A029BFFFE3901020012DBFFFE190102002C0 +S315400130B02FBFFFDF9010200391D020001910008010 +S315400130C098132120D0230000D2232008C1030000F9 +S315400130D0C303200881A80AA10100000033BFFFD421 +S315400130E09010200029BFFFD2901020012DBFFFD0A4 +S315400130F0901020022FBFFFCE9010200391D02000C8 +S315400131001910008098132120D03B0000D43B2008A1 +S31540013110C11B0000C51B200889A008C2C93B00008D +S3154001312081C3E008D01B00001910008098132120AC +S31540013130D0230000D2232008C1030000C303200886 +S3154001314085A00821C523000081C3E008D003000003 +S315400131501910008098132120D0230000D223200883 +S31540013160C1030000C303200885A008A1C5230000B0 +S3154001317081C3E008D0030000191000809813212074 S31540013180D0230000D2232008C1030000C303200836 -S3154001319081A80A210100000033BFFFE590102000FD -S315400131A029BFFFE3901020012DBFFFE190102002BF -S315400131B02FBFFFDF9010200391D02000191000800F -S315400131C098132178D0230000D2232008C1030000A0 -S315400131D0C303200881A80AA10100000033BFFFD420 -S315400131E09010200029BFFFD2901020012DBFFFD0A3 -S315400131F0901020022FBFFFCE9010200391D02000C7 -S315400132001910008098132178D03B0000D43B200848 -S31540013210C11B0000C51B200889A008C2C93B00008C -S3154001322081C3E008D01B0000191000809813217853 -S31540013230D0230000D2232008C1030000C303200885 -S3154001324085A00821C523000081C3E008D003000002 -S315400132501910008098132178D0230000D22320082A -S31540013260C1030000C303200885A008A1C5230000AF -S3154001327081C3E008D003000019100080981321781B -S31540013280D0230000D2232008C1030000C303200835 -S3154001329085A00921C523000081C3E008D0030000B1 -S315400132A01910008098132178D0230000D2232008DA -S315400132B0C1030000C303200885A009A1C52300005E -S315400132C081C3E008D00300001910008098132178CB -S315400132D0D0230000C103000083A00520C3230000C2 -S315400132E081C3E008D0030000131000809212619060 -S315400132F0C51A6008C11A400089A0084091A108C2B8 -S3154001330095A209C495A2894281C3E008D53A000035 -S3154001331013100080921261B0C1024000C3026004E2 -S3154001332085A0082087A088A189A0C9A289A10921D1 -S3154001333081C3E008C92200009610200213100080C4 -S3154001334092126190151000809412A190D50240000E -S31540013350D7028000D5220000D80200001310008059 -S31540013360921261B096A2E00112BFFFF9010000007E -S3154001337081C3E008010000001310008092126190A1 -S31540013380151000809412A1B0C1028000C51A6010C8 -S3154001339083A0082089A088C08BA109A18DA10942DB -S315400133A08FA1492691A0054681C3E008D13A000084 -S315400133B01110008090122188C11A0000C51A000020 -S315400133C0C91A0000CD1A0000D11A0000D51A000012 -S315400133D0D91A0000DD1A0000E11A0000E51A0000C2 -S315400133E0E91A0000ED1A0000F11A0000F51A000072 -S315400133F0F91A0000FD1A000081C3E008010000002F -S3154001340029100080A815215827100080A614E1C074 -S31540013410C12CC000E604C000A134E00EA00C200778 -S31540013420A0A42002AE1020002D100080AC15A1C032 -S31540013430AE05E001AC05A008C1358000C12D0000F4 -S31540013440EA050000AB35600DAA8D600112BFFFF998 -S3154001345001000000808000100280002F2B3C1FFFDE -S31540013460AA1563FFA60CC015E6250000C10D000094 -S315400134702B100080AA1561CC2D10004DAC15A0E093 -S31540013480AE25E001E0054000E025800081D820001E -S3154001349001000000010000000100000001000000E1 -S315400134A001000000010000000100000001000000D1 -S315400134B001000000010000000100000001000000C1 -S315400134C001000000010000000100000001000000B1 -S315400134D001000000010000000100000001000000A1 -S315400134E00000000080A5C00012BFFFE6AA056008E3 -S315400134F0C12D0000E60500002B03C000A614C0152F -S31540013500E6250000C10D000081C4400081CC800049 -S315400135100100000081C4800081CCA00401000000AC -S315400135200100000081C3E00891580000010000003D -S315400135301110008090122158C10A0000C0220000DB -S31540013540C10A0000C12A0000D40200001300038012 -S31540013550942A800980A0000A3280004D90102003F1 -S315400135601303E000D223BFA0C023BFA4C10BBFA059 -S31540013570C023BFA0151000809412A170C102800023 -S315400135800100000001000000C10BBFA0C10BBFA498 -S3154001359083A00520C12BBFA0D003BFA0808A2200F3 -S315400135A02280003B901020049010200015100080CE -S315400135B09412A140C5028000C902A008D102A00C04 -S315400135C01310008092126170C70240008DA0894499 -S315400135D081A98AC80100000003800005010000009E -S315400135E0901020011080002A01000000C5028000D1 -S315400135F0C902A008D102A00C13100080921261707A -S31540013600CB0240008DA0894481A98AC801000000EF -S315400136100380000501000000901020011080001C6D -S315400136200100000025100080A414A168C11C80007F -S31540013630C51C800080A000003280000685A008C01D -S3154001364081A80AC2010000001380000301000000A6 -S31540013650901020050100000025100080A414A168E7 -S31540013660C11C8000C51C800080A000000100000034 -S315400136703280000685A008C081A80AC20100000068 -S315400136801380000301000000901020070100000094 -S3154001369081C3E0080100000090102001954400001C -S315400136A09532A01E940AA00380A2800002800040A9 -S315400136B09010200080A2A0030280003D13100080DC -S315400136C0921261F0C11A4000C51A6008FD026018E5 -S315400136D095A0003E99A0003E9DA0003E170000C067 -S315400136E09612E078A182C0000100000001000000AE -S315400136F0010000000100000001000000010000007F -S3154001370081A0002083A0002195A0002A99A0002C29 -S315400137109DA0002E170000C09612E07CA182C00039 -S31540013720010000000100000001000000010000004E -S31540013730010000000100000085A0002287A00023AF -S31540013740A18000000100000001000000010000000E -S3154001375001000000010000000100000089A00842AC -S31540013760A9A2883ED93A4000DD224000CD1A601018 -S31540013770D102600881A90A46010000000380000CBD -S3154001378081AD0A280100000003800009934400002E -S315400137909332601B920A60079010200080A2A0011C -S315400137A002800003902260079022600481C3E008F2 -S315400137B001000000C12BBFA081C3E008D003BFA018 -S315400137C0D023BFA081C3E008C10BBFA00100000008 -S315400137D09DE3BF6040001B17B0102000913A200ABC -S315400137E0900A200380A220011280111101000000DD -S315400137F07FFFB6819010200D190C40291B23CD1B4C -S315400138009410200096102000981320069A13609B6E -S31540013810D43FBFE0D43FBFC0D43FBFE87FFFFF42A4 -S31540013820D83FBFF0900A3000032804009012208050 -S315400138308210600FC22200001B10004D900220042E -S315400138409A1360009A234008191000009B3B6002BE -S31540013850032784009A13400C82106010C222200470 -S315400138607FFFFED4DA2200007FFFFFD61103E0007E -S315400138702D100080C025A1C07FFFFDD490102000EF -S31540013880809200091280000601000000C205A1C015 -S3154001389080A0600002800004010000007FFFB65B4B -S315400138A09010200B7FFFFDC990103FFA03300600B0 -S315400138B080A200011280000480A2600002800EDB1B -S315400138C0010000007FFFB6519010200B7FFFFDBF26 -S315400138D09010201403100D0080A2000112800004F4 -S315400138E080A2600002800ECC010000007FFFB64737 -S315400138F09010200B7FFFFDB590102062031016201B -S3154001390080A200011280000480A2600002800EBDE8 -S31540013910010000007FFFB63D9010200B7FFFFDB3F5 -S31540013920901020050310280080A200011280000695 -S3154001393001000000C205A1C080A060000280000411 -S31540013940010000007FFFB6319010200B7FFFFF9DE5 -S315400139501103C000111C00007FFFFDAC9210200036 -S31540013960031FFFFF821063FF80A200011280000A3D -S315400139701B000070C205A1C09A13601F19000010F8 -S315400139808208400D9813201080A0400C028000054B -S31540013990113C00007FFFB61D9010200C113C000029 -S315400139A07FFFFD9A921020000320000080A20001B3 -S315400139B01280000A1B000070C205A1C09A13601F45 -S315400139C0190000108208400D9813201080A0400C69 -S315400139D002800004010000007FFFB60C9010200C0D -S315400139E0C025A1C0901020007FFFFD8892102000C5 -S315400139F080A220001280000601000000C205A1C07D -S31540013A0080A0600002800005110144007FFFB5FFE0 -S31540013A109010200C110144001328400090122302FB -S31540013A207FFFFD7A9212600180A22000128000067B -S31540013A3001000000C205A1C080A0600022800005EF -S31540013A401111FFFF7FFFB5F19010200C1111FFFFFF -S31540013A507FFFFD76901223FF0300007F821063FFF4 -S31540013A6080A200011280000601000000C205A1C02B -S31540013A7080A06000028000052F1000857FFFB5E31E -S31540013A809010200C2F1000857FFFFD60D01DE0C8EF -S31540013A90031FFFFF821063FF80A200011280000A0C -S31540013AA01B000070C205A1C09A13601F19000010C7 -S31540013AB08208400D9813201080A0400C028000051A -S31540013AC0031000857FFFB5D19010200C03100085AF -S31540013AD0D01860D8C025A1C07FFFFD4C0100000071 -S31540013AE00320000080A200011280000A1B00007022 -S31540013AF0C205A1C09A13601F190000108208400D2B -S31540013B009813201080A0400C0280000519100085F2 -S31540013B107FFFB5BE9010200C19100085C025A1C0AD -S31540013B207FFFFD3AD01B20B8031FFFFF821063FFC2 -S31540013B3080A200011280000A1B000070C205A1C0CC -S31540013B409A13601F190000108208400D9813201027 -S31540013B5080A0400C02800005331000857FFFB5AB85 -S31540013B609010200C33100085C025A1C07FFFFD2792 -S31540013B70D01E60F0C205A1C08330600E820860038A -S31540013B8080A0600202800004211000807FFFB59F63 -S31540013B909010200C7FFFFF0B1103C0001111580438 -S31540013BA0C02421C07FFFFD299012223403102B002F -S31540013BB08210624680A200011280000503200000A7 -S31540013BC080A2400102800FC5010000007FFFB58F32 -S31540013BD09010200D113C02AF7FFFFD1C901220D1A9 -S31540013BE0033180558210639A80A20001128000053C -S31540013BF00308000080A2400102800FDB01000000A3 -S31540013C007FFFB5829010200D1111FC007FFFFD173B -S31540013C1092102000031FE00080A200011280000ADA -S31540013C201B000070C205A1C09A13601F1900001045 -S31540013C308208400D9813200880A0400C02800005A0 -S31540013C4011207C017FFFB5719010200D11207C0160 -S31540013C50C025A1C0901220307FFFFD041300010052 -S31540013C600320000080A200011280000A1B000070A0 -S31540013C70C205A1C09A13601F190000108208400DA9 -S31540013C809813200480A0400C02800004010000002B -S31540013C907FFFB55E9010200DC025A1C09010200079 -S31540013CA07FFFFCF29210200080A2200012800006C5 -S31540013CB001000000C205A1C080A06000028000048E -S31540013CC0010000007FFFB5519010200D7FFFFCE7FA -S31540013CD0D01DE0C803100085DA0060C080A2000D47 -S31540013CE01280000601000000C205A1C080A060004C -S31540013CF0028000051B1000857FFFB5449010200D02 -S31540013D001B1000857FFFFCD9D01B60D0031FE0004C -S31540013D1080A200011280000601000000C205A1C078 -S31540013D2080A0600002800005031000857FFFB53743 -S31540013D309010200D031000857FFFFCCCD01860B891 -S31540013D4003100085DA0060A880A2000D1280000AE7 -S31540013D501B000070C205A1C09A13601F1900001014 -S31540013D608208400D9813201080A0400C0280000468 -S31540013D70010000007FFFB5259010200DC025A1C090 -S31540013D807FFFFCBAD01E60F0C205A1C08330600E31 -S31540013D908208600380A06002028000042310008034 -S31540013DA07FFFB51A9010200D7FFFFE861103E000BC -S31540013DB02108C6AF901420DEC02461C07FFFFCB34A -S31540013DC0A01420DE80A2001012800006010000002F -S31540013DD0C20461C080A06000028000052108C6AF10 -S31540013DE07FFFB50A9010200E2108C6AF7FFFFCB7B2 -S31540013DF0901420DEA01420DE80A20010128000065E -S31540013E0001000000C205A1C080A06000228000051B -S31540013E101128C6AF7FFFB4FD9010200E1128C6AF02 -S31540013E207FFFFCAA901220DE0308C6AF821060DE37 -S31540013E3080A200011280000601000000C205A1C057 -S31540013E4080A06000228000051108C6AF7FFFB4EF55 -S31540013E509010200E1108C6AF7FFFFC94901220DE11 -S31540013E600328C6AF821060DE80A2000112800006E0 -S31540013E7001000000C205A1C080A0600022800005AB -S31540013E801128C6AF7FFFB4E19010200E1128C6AFAE -S31540013E907FFFFC86901220DE0308C6AF821060DEEB -S31540013EA080A200011280000601000000C205A1C0E7 -S31540013EB080A0600002800004010000007FFFB4D3AF -S31540013EC09010200E7FFFFE3F1103E00011151BC02D -S31540013ED01310C82115351BC01710C8219012210394 -S31540013EE0921261419412A1037FFFFC809612E14137 -S31540013EF080A220021280000601000000C205A1C076 -S31540013F0080A060000280000511351BC07FFFB4BF51 -S31540013F109010200F11351BC01310C82115151BC059 -S31540013F201710C82190122103921261419412A103E4 -S31540013F307FFFFC6E9612E14180A2200112800006AD -S31540013F4001000000C205A1C080A0600002800005FA -S31540013F50901020007FFFB4AD9010200F90102000EC -S31540013F6092102000152000007FFFFC609610200073 -S31540013F7080A220001280000601000000C205A1C0F7 -S31540013F8080A0600002800005191000857FFFB49F64 -S31540013F909010200F191000851B100085D01B20D0D2 -S31540013FA07FFFFC52D41B60D880A2200212800006FB -S31540013FB001000000C205A1C080A06000028000058A -S31540013FC011151BC07FFFB4919010200F11151BC016 -S31540013FD01310C82115151BE81710C821901221038B -S31540013FE0921261419412A1037FFFFC409612E14176 -S31540013FF080A220011280000601000000C205A1C076 -S3154001400080A060000280000511151BE87FFFB47F88 -S315400140109010200F11151BE81310C82115151BC050 -S315400140201710C82190122103921261419412A103E3 -S315400140307FFFFC2E9612E14180A2200212800006EB -S3154001404001000000C205A1C080A0600002800005F9 -S3154001405011151BE87FFFB46D9010200F11151BE859 -S315400140601310C82190122103921261417FFFFC1F58 -S31540014070D41DE0C880A22003128000060100000082 -S31540014080C205A1C080A06000028000050310008522 -S315400140907FFFB45E9010200F0310008511151BE8B9 -S315400140A01310C82190122103921261417FFFFC0F28 -S315400140B0D41860B880A220031280000A1B00007049 -S315400140C0C205A1C09A13601F190000108208400D55 -S315400140D09813201080A0400C0280000511151BE8A2 -S315400140E07FFFB44A9010200F11151BE81310C82109 -S315400140F0C025A1C090122103921261417FFFFBFBB3 -S31540014100D41E60F080A22002128000060100000049 -S31540014110C205A1C080A060000280000515151BE8FC -S315400141207FFFB43A9010200F15151BE81710C821D0 -S31540014130D01E60F09412A1037FFFFBEC9612E14181 -S3154001414080A220011280000601000000C205A1C024 -S3154001415080A060000280000515151BE87FFFB42B87 -S315400141609010200F15151BE81710C821D01DE0C867 -S315400141709412A1037FFFFBDD9612E14180A2200349 -S315400141801280000601000000C205A1C080A06000A7 -S3154001419002800005191000857FFFB41C9010200F86 -S315400141A01910008515151BE81710C821D01B20B81A -S315400141B09412A1037FFFFBCD9612E14180A2200319 -S315400141C01280000A1B000070C205A1C09A13601F2D -S315400141D0190000108208400D9813201080A0400C51 -S315400141E00280000511151BC07FFFB4089010200FF7 -S315400141F011151BC01310C82115351BC01710C82136 -S31540014200C025A1C090122103921261419412A103CB -S315400142107FFFFBC99612E14180A22002128000066F -S3154001422001000000C205A1C080A060000280000517 -S3154001423011351BC07FFFB3F59010200F11351BC000 -S315400142401310C82115151BC01710C8219012210340 -S31540014250921261419412A1037FFFFBB79612E1418D -S3154001426080A220011280000601000000C205A1C003 -S3154001427080A0600002800005901020007FFFB3E31C -S315400142809010200F90102000921020001520000061 -S315400142907FFFFBA99610200080A220001280000615 -S315400142A001000000C205A1C080A060000280000597 -S315400142B01B1000857FFFB3D59010200F1B10008582 -S315400142C003100085D01B60D07FFFFB9BD41860D8BC -S315400142D080A220021280000601000000C205A1C092 -S315400142E080A060000280000511151BC07FFFB3C787 -S315400142F09010200F11151BC01310C82115151BE86E -S315400143001710C82190122103921261419412A10300 -S315400143107FFFFB899612E14180A2200112800006AF -S3154001432001000000C205A1C080A060000280000516 -S3154001433011151BE87FFFB3B59010200F11151BE82F -S315400143401310C82115151BC01710C821901221033F -S31540014350921261419412A1037FFFFB779612E141CC -S3154001436080A220021280000601000000C205A1C001 -S3154001437080A060000280000511151BE87FFFB3A3F2 -S315400143809010200F11151BE81310C821901221031C -S31540014390921261417FFFFB68D41DE0C880A22003D1 -S315400143A01280000A1B000070C205A1C09A13601F4B -S315400143B0190000108208400D9813201080A0400C6F -S315400143C002800005191000857FFFB3909010200FE1 -S315400143D01910008511151BE81310C82190122103ED -S315400143E0921261417FFFFB54D41B20B880A2200367 -S315400143F01280000A1B000070C205A1C09A13601FFB -S31540014400190000108208400D9813201080A0400C1E -S315400144100280000511151BE87FFFB37C9010200F29 -S3154001442011151BE81310C821C025A1C09012210304 -S31540014430921261417FFFFB40D41E60F080A22002B0 -S315400144401280000601000000C205A1C080A06000E4 -S315400144500280000515151BE87FFFB36C9010200FF5 -S3154001446015151BE81710C821D01E60F09412A10340 -S315400144707FFFFB319612E14180A2200112800006A6 -S3154001448001000000C205A1C080A0600002800005B5 -S3154001449015151BE87FFFB35D9010200F15151BE81E -S315400144A01710C821D01DE0C89412A1037FFFFB223B -S315400144B09612E14180A220031280000A1B0000707F -S315400144C0C205A1C09A13601F190000108208400D51 -S315400144D09813201080A0400C028000051B10008517 -S315400144E07FFFB34A9010200F1B10008515151BE85E -S315400144F01710C821D01B60B89412A1037FFFFB0E91 -S315400145009612E14180A220031280000A1B0000702E -S31540014510C205A1C09A13601F190000108208400D00 -S315400145209813201080A0400C02800005110048EA33 -S315400145307FFFB3369010200F110048EA13048D1502 -S31540014540C025A1C0901223CD7FFFFB0C9212627849 -S3154001455080A220011280000601000000C205A1C010 -S3154001456080A0600002800005110048EA7FFFB32762 -S315400145709010200F110048EA13048D15901223CD97 -S315400145807FFFFB0F9212627880A220011280000603 -S3154001459001000000C205A1C080A0600002800004A5 -S315400145A0010000007FFFB3199010200FC025A1C064 -S315400145B07FFFFC841103C000291001449007BFF01E -S315400145C09207BFE87FFFFA3894152150C207BFF022 -S315400145D0DA05215080A0400D128000078215215036 -S315400145E0DA006004C207BFF480A0400D02800D5975 -S315400145F0010000007FFFB3059010201037100085A1 -S315400146009007BFF09216E0E07FFFFA2794152150FC -S31540014610C206E0E0DA05215080A34001821521500F -S31540014620128000079816E0E0DA006004C203200415 -S3154001463080A3400102800D42010000007FFFB2F3DA -S31540014640901020109007BFF09215E0C87FFFFA1630 -S3154001465094152150C205E0C8DA05215080A34001D6 -S3154001466082152150128000079815E0C8DA006004CF -S31540014670C203200480A3400102800D2C01000000EA -S315400146807FFFB2E29010201003100085921060B8AF -S315400146909007BFF07FFFFA04941521501B0000706C -S315400146A0C205A1C09A13601F190000108208400D6F -S315400146B09813201080A0400C028000042110014470 -S315400146C07FFFB2D29010201003100080C02061C03D -S315400146D07FFFFC3C9010200013100085941421505C -S315400146E0921260B87FFFF9F09007BFF0391000854C -S315400146F0C20720B0DA04215080A34001941421500E -S3154001470012800007821720B0DA02A004C2006004BA -S3154001471080A3400102800004010000007FFFB2BB7C -S31540014720901020107FFFFC271103C0009007BFF0B7 -S31540014730921660F07FFFF9DC94152150C205A1C0A5 -S315400147408330600E8208600380A06002211001441C -S3154001475002800004231000807FFFB2AC901020102D -S3154001476094142150C02461C09007BFE87FFFF9CE61 -S315400147709207BFF0DA042150C207BFF080A340017F -S315400147801280000794142150DA02A004C207BFF434 -S3154001479080A3400102800D21010000007FFFB29BF2 -S315400147A0901020109007BFE89216E0E07FFFF9BE17 -S315400147B094152150C206E0E0DA05215080A340015C -S315400147C082152150128000079816E0E0DA00600455 -S315400147D0C203200480A3400102800D0B01000000AA -S315400147E07FFFB28A901020109007BFE89215E0C86B -S315400147F07FFFF9AD94152150C205E0C8DA05215075 -S3154001480080A3400182152150128000079815E0C807 -S31540014810DA006004C203200480A3400102800CF543 -S31540014820010000007FFFB279901020101910008519 -S31540014830921320B89007BFE87FFFF99B941521504A -S315400148401B000070C205A1C09A13601F1900001019 -S315400148508208400D9813201080A0400C028000046D -S31540014860211001447FFFB269901020107FFFFBD5D4 -S31540014870901020001310008594142150921260B8B4 -S315400148807FFFF9899007BFE8C20720B0DA042150BB -S3154001489080A340019414215012800007821720B052 -S315400148A0DA02A004C200600480A340010280000431 -S315400148B0010000007FFFB255901020107FFFFBC121 -S315400148C01103C0009007BFE8921660F07FFFF976AA -S315400148D094152150C205A1C08330600E8208600341 -S315400148E080A0600221100144028000042310008050 -S315400148F07FFFB2469010201094142150C02461C00D -S315400149009016E0E07FFFF9689207BFF0C206E0E04B -S31540014910DA04215080A340019414215012800007EB -S315400149208216E0E0DA02A004C200600480A34001DE -S3154001493002800CAB010000007FFFB23490102010C2 -S315400149409016E0E09207BFE87FFFF9579415215092 -S31540014950C206E0E0DA05215080A3400182152150CC -S31540014960128000079816E0E0DA006004C2032004D2 -S3154001497080A3400102800C95010000007FFFB22315 -S31540014980901020101B100085901360D092100008E3 -S315400149907FFFF9459415215019100085C20320D097 -S315400149A0DA05215080A3400182152150128000076B -S315400149B0981320D0DA006004C203200480A340018A -S315400149C002800C7D010000007FFFB2109010201084 -S315400149D01B100085901360D8921000087FFFF932B2 -S315400149E09415215019100085C20320D8DA052150AB -S315400149F080A340018215215012800007981320D8C8 -S31540014A00DA006004C203200480A3400102800C65E1 -S31540014A10010000007FFFB1FD901020101B100085A2 -S31540014A2003100085901360D8921060D07FFFF91E65 -S31540014A30941521501B000070C205A1C09A13601F36 -S31540014A40190000108208400D9813201080A0400CD8 -S31540014A5002800004211001447FFFB1EC9010201028 -S31540014A607FFFFB5890102000111000851310008520 -S31540014A7094142150901220D87FFFF90B921260D0E6 -S31540014A80C20720B0DA04215080A34001941421507A -S31540014A9012800007821720B0DA02A004C200600427 -S31540014AA080A3400102800004010000007FFFB1D7CE -S31540014AB0901020107FFFFB431103C00019100085A1 -S31540014AC01B100085901320D0921360D8C025A1C039 -S31540014AD07FFFF8F594152150C20720B0DA05215021 -S31540014AE080A340018215215012800007981720B0FB -S31540014AF0DA006004C203200480A3400102800C1F37 -S31540014B001B0000707FFFB1C1901020109016E0E0AD -S31540014B10921660F07FFFF8E494152150C205A1C0BA -S31540014B208330600E8208600380A060022110014438 -S31540014B3002800004231000807FFFB1B49010201042 -S31540014B4094142150C02461C09015E0C87FFFF8D667 -S31540014B509207BFF0C205E0C8DA04215080A34001A4 -S31540014B6094142150128000078215E0C8DA02A0048D -S31540014B70C200600480A3400102800B9C010000003A -S31540014B807FFFB1A2901020109015E0C89207BFE8B0 -S31540014B907FFFF8C594152150C205E0C8DA052150BA -S31540014BA080A3400182152150128000079815E0C864 -S31540014BB0DA006004C203200480A3400102800B8610 -S31540014BC0010000007FFFB191901020109015E0C8C0 -S31540014BD09216E0E07FFFF8B494152150C205E0C873 -S31540014BE0DA05215080A34001821521501280000729 -S31540014BF09815E0C8DA006004C203200480A340018E -S31540014C0002800B70010000007FFFB18090102010E0 -S31540014C109015E0C8921000087FFFF8A39415215023 -S31540014C20C205E0C8DA05215080A340018215215012 -S31540014C30128000079815E0C8DA006004C203200418 -S31540014C4080A3400102800B5A010000007FFFB16F33 -S31540014C509010201003100085921060B89015E0C89E -S31540014C607FFFF8919415215003000070A610601F34 -S31540014C70DA05A1C0030000109A0B4013AA10601078 -S31540014C8080A34015231000852510014402800004AD -S31540014C90211000807FFFB15D90102010C02421C0FB -S31540014CA0901460B89207BFF07FFFF87F9414A1502B -S31540014CB0C20421C08208401380A04015028000042E -S31540014CC0010000007FFFB15190102010C02421C087 -S31540014CD0901460B89207BFE87FFFF8739414A1500F -S31540014CE0C20421C08208401380A0401502800004FE -S31540014CF0010000007FFFB14590102010C02421C063 -S31540014D00901460B89216E0E07FFFF8679414A150C2 -S31540014D10C20421C08208401380A0401502800005CC -S31540014D20131000857FFFB1399010201013100085B4 -S31540014D30C02421C0921260C8901460B87FFFF85A0F -S31540014D409414A150C20421C08208401380A040158A -S31540014D5002800005901460B87FFFB12C901020109E -S31540014D60901460B8C02421C0921000087FFFF84E0D -S31540014D709414A150C20421C08208401380A040155A -S31540014D8002800004010000007FFFB1209010201036 -S31540014D90C02421C0901460B8921660F07FFFF8429B -S31540014DA09414A150C20421C08330600E820860036E -S31540014DB080A06002228000051103C0007FFFB1136D -S31540014DC0901020101103C0007FFFFA7E3B10008433 -S31540014DD0A2176210C02421C0AA14A150A4046010D5 -S31540014DE0A0102000A6046008B010200C9204001305 -S31540014DF0900400117FFFF82C94152150DA0480109D -S31540014E0098040012C2052150A004201880A3400135 -S31540014E101280000790102010DA032004C2056004B6 -S31540014E2080A3400122800005B0863FFF7FFFB0F797 -S31540014E3001000000B0863FFF1CBFFFEE9204001345 -S31540014E40C205A1C080A0600012800989010000004E -S31540014E501110008490122348920220087FFFF81215 -S31540014E609415215098176210C2052150DA03214842 -S31540014E7080A340011280000782152150DA03214C9C -S31540014E80C200600480A3400122800AAB0310008067 -S31540014E907FFFB0DE90102010111000849012236025 -S31540014EA0920220087FFFF80094152150981762104E -S31540014EB0C2052150DA03216080A340011280000718 -S31540014EC082152150DA032164C200600480A34001A7 -S31540014ED002800AA41B0000707FFFB0CC9010201006 -S31540014EE01110008490122378920220087FFFF7EE7A -S31540014EF09415215098176210C2052150DA03217882 -S31540014F0080A340011280000782152150DA03217CDB -S31540014F10C200600480A3400102800A9C1B0000700D -S31540014F207FFFB0BA90102010C025A1C0111000001B -S31540014F3092102000150FFC007FFFF8B2961020005A -S31540014F40030FFC0080A200011280000880A26000CD -S31540014F501280000601000000C205A1C080A06000C9 -S31540014F6002800005111000007FFFB0A890102010AC -S31540014F701110000092102000152FFC007FFFF8A1B0 -S31540014F80961020000310020080A200011280000842 -S31540014F9080A260001280000601000000C205A1C087 -S31540014FA080A0600002800005113000007FFFB097AD -S31540014FB0901020101130000092102000150FFC00B7 -S31540014FC07FFFF890961020000330020080A2000176 -S31540014FD01280000880A260001280000601000000D5 -S31540014FE0C205A1C080A0600002800005113000000A -S31540014FF07FFFB086901020101130000092102000E3 -S31540015000152FFC007FFFF87F96102000032FFC0030 -S3154001501080A200011280000880A260001280000672 -S3154001502001000000C205A1C080A060000280000509 -S31540015030111000007FFFB075901020101110000074 -S315400150407FFFF87A130FE0000310100080A20001E1 -S315400150501280000601000000C205A1C080A06000C8 -S3154001506002800005111000007FFFB06890102010EB -S31540015070111000007FFFF877130FE000030FE000E7 -S3154001508080A200011280000601000000C205A1C0F5 -S3154001509080A0600022800005191000857FFFB05B6B -S315400150A09010201019100085921320E8C025A1C048 -S315400150B09007BFF07FFFF78F941521501910008597 -S315400150C0C20320D8DA05215080A340018215215020 -S315400150D012800007981320D8DA006004C203200426 -S315400150E080A3400102800A461B0000707FFFB04743 -S315400150F0901020111B100085921360D0C025A1C0CD -S315400151009007BFF07FFFF77B94152150C207BFE0A0 -S31540015110DA05215080A340011280000782152150F3 -S31540015120DA006004C207BFE480A3400102800A3E60 -S31540015130010000007FFFB035901020119007BFF0AD -S315400151409215E0C87FFFF76B94152150C205E0C860 -S31540015150DA05215080A340018215215012800007B3 -S315400151609815E0C8DA006004C203200480A3400118 -S3154001517002800A32010000007FFFB0249010201106 -S3154001518003100085921060B89007BFF07FFFF75972 -S3154001519094152150C20720B0DA05215080A3400161 -S315400151A08215215012800007981720B0DA0060045A -S315400151B0C203200480A3400102800A251B0000701F -S315400151C07FFFB012901020119007BFF0921660F049 -S315400151D07FFFF74894152150C205A1C01B000070FE -S315400151E08208400D1900002080A0400C2110014486 -S315400151F002800004231000807FFFB004901020112C -S3154001520094142150C02461C09007BFE87FFFF7394D -S315400152109207BFF0DA042150C207BFE880A34001DC -S315400152201280000794142150DA02A004C207BFEC91 -S3154001523080A3400102800A10010000007FFFAFF306 -S315400152409010201119100085901320E89207BFE0B5 -S315400152507FFFF72894152150C20720B0DA05215067 -S3154001526080A340018215215012800007981720B073 -S31540015270DA006004C203200480A3400102800A03CD -S315400152801B0000707FFFAFE1901020111B100085BD -S3154001529003100085901360E8921060D0C025A1C02C -S315400152A07FFFF7149415215019100085C20320E899 -S315400152B0DA05215080A34001821521501280000752 -S315400152C0981320E8DA006004C203200480A3400159 -S315400152D0028009F8010000007FFFAFCC9010201139 -S315400152E09007BFE89215E0C87FFFF7029415215059 -S315400152F0C205E0C8DA05215080A34001821521503C -S31540015300128000079815E0C8DA006004C203200441 -S3154001531080A34001028009EC010000007FFFAFBB82 -S31540015320901020071B100085921360B89007BFE8C4 -S315400153307FFFF6F09415215025000070D805A1C0D5 -S315400153409A14A01F03000010980B000D82106010E4 -S3154001535080A3000121100144028000042310008033 -S315400153607FFFAFAA90102011C02461C09007BFE80B -S31540015370921660F07FFFF6DF94142150C20461C09B -S31540015380820840121B00002080A0400D22800005AB -S31540015390031000857FFFAF9D9010201103100085FB -S315400153A0901060D894142150C02461C07FFFF6D17B -S315400153B09207BFF019100085C20320D8DA042150A4 -S315400153C080A340019414215012800007821320D8F3 -S315400153D0DA02A004C200600480A34001028008B83A -S315400153E0010000007FFFAF89901020111B1000853E -S315400153F003100085901360D8921060E87FFFF6BDD8 -S315400154009415215019100085C20320D0DA05215088 -S3154001541080A340018215215012800007981320D0A5 -S31540015420DA006004C203200480A34001028008A977 -S31540015430010000007FFFAF75901020119016E0E04B -S31540015440921000087FFFF6AB94152150C20720B099 -S31540015450DA05215080A340018215215012800007B0 -S31540015460981720B0DA006004C203200480A34001EB -S315400154700280089D1B0000707FFFAF6490102011D1 -S31540015480C025A1C09016E0E09215E0C87FFFF699CD -S3154001549094152150C205E0C8DA05215080A3400188 -S315400154A082152150128000079815E0C8DA00600481 -S315400154B0C203200480A34001028008940100000039 -S315400154C07FFFAF52901020111B100085921360B8D8 -S315400154D09016E0E07FFFF68794152150C20720B071 -S315400154E0DA05215080A34001821521501280000720 -S315400154F0981720B0DA006004C203200480A340015B -S31540015500028008871B0000707FFFAF40901020117A -S31540015510C025A1C09016E0E0921660F07FFFF675B7 -S3154001552094152150C205A1C01B0000708208400D90 -S315400155301900002080A0400C231000800280000446 -S31540015540211001447FFFAF31901020119414215056 -S31540015550C02461C09015E0C87FFFF6669207BFF090 -S31540015560C205E0C8DA04215080A3400194142150B9 -S31540015570128000078215E0C8DA02A004C200600466 -S3154001558080A340010280086F010000007FFFAF1F2A -S31540015590901020119015E0C89207BFE87FFFF6559D -S315400155A094152150C205E0C8DA05215080A3400177 -S315400155B082152150128000079815E0C8DA00600470 -S315400155C0C203200480A34001028008630100000059 -S315400155D07FFFAF0E901020119015E0C89216E0E0C3 -S315400155E07FFFF64494152150C205E0C8DA052150E3 -S315400155F080A3400182152150128000079815E0C80A -S31540015600DA006004C203200480A3400102800857E7 -S31540015610010000007FFFAEFD901020119015E0C8FB -S31540015620921000087FFFF63394152150C205E0C859 -S31540015630DA05215080A340018215215012800007CE -S315400156409815E0C8DA006004C203200480A3400133 -S31540015650028007F3010000007FFFAEEC901020119D -S3154001566003100085921060B89015E0C87FFFF621BF -S3154001567094152150C20720B0DA05215080A340017C -S315400156808215215012800007981720B0DA00600475 -S31540015690C203200480A34001028007E61B0000707C -S315400156A07FFFAEDA901020119015E0C8921660F097 -S315400156B07FFFF61094152150C205A1C0310000703C -S315400156C0820840183B00002080A0401D2310014461 -S315400156D002800004211000807FFFAECC9010201183 -S315400156E019100085901320B89207BFF07FFFF6018D -S315400156F094146150C20421C0AA16201F350000101F -S3154001570082084015A616A01080A04013028000040E -S31540015710251000857FFFAEBD90102011C02421C009 -S315400157209014A0B89207BFE87FFFF5F29414615038 -S31540015730C20421C08208401580A0401302800004A3 -S31540015740010000007FFFAEB190102011C02421C09E -S315400157509014A0B89216E0E07FFFF5E694146150EC -S31540015760C20421C08208401580A040130280000572 -S31540015770131000857FFFAEA59010201113100085F0 -S31540015780C02421C0921260C89014A0B87FFFF5D9F9 -S3154001579094146150C20421C08208401580A0401370 -S315400157A0028000059014A0B87FFFAE98901020119A -S315400157B09014A0B8C02421C0921000087FFFF5CDF7 -S315400157C094146150C20421C08208401580A0401340 -S315400157D002800005131000857FFFAE8C90102011CA -S315400157E013100085C02421C09014A0B8921260F015 -S315400157F07FFFF5C094146150C20421C0820840184D -S3154001580080A0401D2280000515203E837FFFAE7F8C -S315400158109010201115203E83170021C89412A3FF32 -S315400158209612E3A1191FC0001B00C0009A1360B075 -S3154001583098132102D43FBFD0D83FBFD8C02421C03E -S315400158409007BFD89207BFD07FFFF5AA9407BFC87C -S31540015850DA07BFC8033FFC0080A340010280070B63 -S31540015860A207BFC87FFFAE6990102011151086832D -S31540015870170021C89412A3FF9612E3A11900400014 -S315400158801B00C0009A1360B098132102D43FBFD0C9 -S31540015890D83FBFD8C025A1C09007BFD89207BFD077 -S315400158A07FFFF5949407BFC8DA046004C207BFC8F6 -S315400158B08090400D1280000A1B000070C205A1C0F5 -S315400158C09A13601F190000108208400D9813200496 -S315400158D080A0400C22800005150FFC007FFFAE4BD7 -S315400158E090102011150FFC00170281D89412A04088 -S315400158F09612E10C9A102010190006AFD43FBFD082 -S31540015900D83FBFD8C025A1C09007BFD89207BFD006 -S315400159107FFFF5789407BFC8030006AEDA07BFC814 -S315400159208210639580A340011280000703003A9AD2 -S31540015930DA0460048210630F80A3400102800733BA -S31540015940010000007FFFAE3190102011150FFFFFBF -S31540015950170281D89412A3409612E10C9A10201096 -S31540015960190006AFD43FBFD0D83FBFD8C025A1C08C -S315400159709007BFD89207BFD07FFFF55E9407BFC897 -S31540015980DA046004C207BFC88090400D1280000A45 -S315400159901B000070C205A1C09A13601F19000010B8 -S315400159A08208400D9813200480A0400C0280000418 -S315400159B0010000007FFFAE1590102011C025A1C047 -S315400159C0111088007FFFF63713100100031066C9D6 -S315400159D0821062CA80A20001128000060100000006 -S315400159E0C205A1C080A06000028000051111BBFE66 -S315400159F07FFFAE06901020111111BBFE901223FFBE -S31540015A007FFFF628130C7040031527CA8210611ECA -S31540015A1080A200011280000601000000C205A1C05B -S31540015A2080A06000028000051310C7FF7FFFADF71D -S31540015A30901020111310C7FF921263FC7FFFF619D5 -S31540015A40111E607E031D73FC8210633880A2000123 -S31540015A501280000601000000C205A1C080A06000BE -S31540015A6002800005130FE0007FFFADE89010201182 -S31540015A70130FE000921260017FFFF60A1100200029 -S31540015A8080A220001280000A1B000070C205A1C03E -S31540015A909A13601F190000108208400D98132004C4 -S31540015AA080A0400C02800005110FE0007FFFADD7BA -S31540015AB090102011110FE000C025A1C07FFFF5F91C -S31540015AC092100008030FE00080A200011280000638 -S31540015AD001000000C205A1C080A06000028000054F -S31540015AE0130FE0007FFFADC990102011130FE000A6 -S31540015AF0921260017FFFF5EB1100200080A2200089 -S31540015B001280000A1B000070C205A1C09A13601FD3 -S31540015B10190000108208400D9813200480A0400C03 -S31540015B20028000051B1000857FFFADB89010201143 -S31540015B301B100085921360E8C025A1C09007BFF0F5 -S31540015B407FFFF4DE9415215019100085C20320E829 -S31540015B50DA05215080A340018215215012800007A9 -S31540015B60981320E8DA006004C203200480A34001B0 -S31540015B70028006BA010000007FFFADA490102012FA -S31540015B801B100085921360D09007BFF07FFFF4CBC6 -S31540015B909415215019100085C20320D0DA052150F1 -S31540015BA080A340018215215012800007981320D00E -S31540015BB0DA006004C203200480A34001028006ACDF -S31540015BC0010000007FFFAD91901020129007BFF0B9 -S31540015BD09215E0C87FFFF4B994152150C205E0C87B -S31540015BE0DA05215080A34001821521501280000719 -S31540015BF09815E0C8DA006004C203200480A340017E -S31540015C00028006A0010000007FFFAD8090102012A7 -S31540015C101B100085921360B89007BFF07FFFF4A771 -S31540015C2094152150C20720B0DA05215080A34001C6 -S31540015C308215215012800007981720B0DA006004BF -S31540015C40C203200480A34001028006931B0000701A -S31540015C507FFFAD6E901020129007BFF0921660F054 -S31540015C607FFFF49694152150C205A1C01B00007018 -S31540015C708208400D1900002080A0400C21100144EB -S31540015C8002800004231000807FFFAD609010201237 -S31540015C9094142150C02461C09007BFE87FFFF48768 -S31540015CA09207BFF0DA042150C207BFE880A3400142 -S31540015CB01280000794142150DA02A004C207BFECF7 -S31540015CC080A34001028006DE010000007FFFAD4F48 -S31540015CD0901020120310008519100085901060E87D -S31540015CE0921320D87FFFF47594152150C20720B036 -S31540015CF0DA05215080A34001821521501280000708 -S31540015D00981720B0DA006004C203200480A3400142 -S31540015D10028006D01B0000707FFFAD3C9010201220 -S31540015D20C025A1C09007BFE89215E0C87FFFF46384 -S31540015D3094152150C205E0C8DA05215080A34001DF -S31540015D4082152150128000079815E0C8DA006004D8 -S31540015D50C203200480A34001028006C7010000005F -S31540015D607FFFAD2A901024991B100085921360B8CD -S31540015D709007BFE87FFFF45194152150C20720B028 -S31540015D80DA05215080A34001821521501280000777 -S31540015D90981720B0DA006004C203200480A34001B2 -S31540015DA0028006BA1B0000707FFFAD1890102012CA -S31540015DB09007BFE8921660F07FFFF440941521509A -S31540015DC0C205A1C01B0000708208400D19000020C9 -S31540015DD080A0400C21100144028000042310008061 -S31540015DE07FFFAD0A9010201294142150C02461C047 -S31540015DF09016E0E07FFFF4319207BFF0C206E0E083 -S31540015E00DA04215080A340019414215012800007E6 -S31540015E108216E0E0DA02A004C200600480A34001D9 -S31540015E20028006A4010000007FFFACF8901020120A -S31540015E309016E0E09207BFE87FFFF42094152150C9 -S31540015E40C20720B0DA05215080A3400182152150B6 -S31540015E5012800007981720B0DA006004C2032004BC -S31540015E6080A34001028006981B0000707FFFACE7CB -S31540015E7090102012C025A1C09016E0E09215E0C80E -S31540015E807FFFF40E94152150C205E0C8DA05215072 -S31540015E9080A3400182152150128000079815E0C861 -S31540015EA0DA006004C203200480A340010280068F09 -S31540015EB0010000007FFFACD5901020120310008531 -S31540015EC0921060B89016E0E07FFFF3FC94152150E4 -S31540015ED0C20720B0DA05215080A340018215215026 -S31540015EE012800007981720B0DA006004C20320042C -S31540015EF080A34001028006821B0000707FFFACC375 -S31540015F00901020129016E0E0921660F07FFFF3EBBE -S31540015F1094152150C205A1C01B0000708208400D96 -S31540015F201900002080A0400C211001440280000489 -S31540015F30231000807FFFACB590102012941421509D -S31540015F40C02461C09015E0C87FFFF3DC9207BFF023 -S31540015F50C205E0C8DA04215080A3400194142150BF -S31540015F60128000078215E0C8DA02A004C20060046C -S31540015F7080A340010280061E010000007FFFACA302 -S31540015F80901020129015E0C89207BFE87FFFF3CB2F -S31540015F9094152150C205E0C8DA05215080A340017D -S31540015FA082152150128000079815E0C8DA00600476 -S31540015FB0C203200480A340010280061201000000B2 -S31540015FC07FFFAC92901020129015E0C89216E0E047 -S31540015FD07FFFF3BA94152150C205E0C8DA05215076 -S31540015FE080A3400182152150128000079815E0C810 -S31540015FF0DA006004C203200480A340010280060641 -S31540016000010000007FFFAC81901020129015E0C87E -S31540016010921000087FFFF3A994152150C205E0C8EC -S31540016020DA05215080A340018215215012800007D4 -S315400160309815E0C8DA006004C203200480A3400139 -S31540016040028005FA010000007FFFAC70901020121B -S31540016050191000859015E0C8921320B87FFFF39779 -S315400160609415215003000070A610601FDA05A1C0E7 -S31540016070030000109A0B4013AA10601080A340152C -S315400160802510008523100144028000042110008060 -S315400160907FFFAC5E90102012C02421C09014A0B89E -S315400160A09207BFF07FFFF38594146150C20421C06B -S315400160B08208401380A040150280000401000000C0 -S315400160C07FFFAC5290102012C02421C09014A0B87A -S315400160D09207BFE87FFFF37994146150C20421C04F -S315400160E08208401380A04015028000040100000090 -S315400160F07FFFAC4690102012C02421C09014A0B856 -S315400161009216E0E07FFFF36D94146150C20421C002 -S315400161108208401380A040150280000513100085B7 -S315400161207FFFAC3A9010201213100085C02421C085 -S31540016130921260C89014A0B87FFFF3609414615026 -S31540016140C20421C08208401380A040150280000588 -S315400161509014A0B87FFFAC2D901020129014A0B8D7 -S31540016160C02421C0921000087FFFF354941461505B -S31540016170C20421C08208401380A040150280000459 -S31540016180010000007FFFAC2190102012C02421C0E5 -S315400161909014A0B8921660F07FFFF34894146150B2 -S315400161A0C20421C08330600E8208600380A0600271 -S315400161B0228000051103C0007FFFAC14901020120D -S315400161C01103C0007FFFF57F3B100084A417639045 -S315400161D0AA146150C02421C0A604A008A210200020 -S315400161E0B0102005A004401292044013941521508A -S315400161F07FFFF33290100010DA042010C2052150BF -S31540016200A204601880A3400112800007901020125A -S31540016210DA042014C205600480A34001028004749C -S31540016220010000007FFFABF901000000B0863FFF8F -S315400162303CBFFFEEA00440121110008590122020B1 -S31540016240920220087FFFF31D941521509817639001 -S31540016250C2052150DA0320A080A340011280000725 -S3154001626082152150DA0320A4C200600480A34001B4 -S31540016270028004DC1B0000707FFFABE4901020120B -S315400162801110008590122038C025A1C09202200825 -S315400162907FFFF30A9415215098176390C205215048 -S315400162A0DA0320B880A340011280000782152150ED -S315400162B0DA0320BCC200600480A340010280047F4F -S315400162C01B0000707FFFABD190102012111000858A -S315400162D090122050C025A1C0920220087FFFF2F7FC -S315400162E09415215098176390C2052150DA0320D0A6 -S315400162F080A340011280000782152150DA0320D481 -S31540016300C200600480A34001028004761B00007035 -S315400163107FFFABBE901020121110008590122068AD -S31540016320C025A1C0920220087FFFF2E494152150B6 -S3154001633098176390C2052150DA0320E880A34001F3 -S315400163401280000782152150DA0320ECC200600456 -S3154001635080A340010280046D1B0000707FFFABAB40 -S31540016360901020121110008590122080C025A1C0E6 -S31540016370920220087FFFF2D194152150981763901D -S31540016380C2052150DA03210080A340011280000793 -S3154001639082152150DA032104C200600480A3400122 -S315400163A0028004641B0000707FFFAB98901020129E -S315400163B0C025A1C0111010007FFFF3B013100000DB -S315400163C00310300080A20001128000060100000087 -S315400163D0C205A1C080A0600002800005111FE00037 -S315400163E07FFFAB8A90102012111FE00013100000AE -S315400163F07FFFF2B794152150031FFC00DA052150A7 -S3154001640080A340011280000A82152150C200600417 -S3154001641080A060001280000601000000C205A1C0F4 -S3154001642080A0600002800005111FE0007FFFAB776E -S315400164309010201B111FE000133000007FFFF2A4D3 -S3154001644094152150033FFC00DA05215080A34001F9 -S315400164501280000A82152150C200600480A06000AB -S315400164601280000601000000C205A1C080A06000A4 -S3154001647002800005111000007FFFAB649010201CC4 -S3154001648011100000921020107FFFF29194152150B7 -S31540016490C205A1C01B0000708208400D19000020F2 -S315400164A080A0400C2110014402800004231000808A -S315400164B07FFFAB569010201D94142150C02461C01B -S315400164C0110020007FFFF282130FC000DA04215031 -S315400164D0030E000080A340011280000A941421504B -S315400164E0C202A00480A060001280000601000000E4 -S315400164F0C20461C080A0600002800005111FDFFF59 -S315400165007FFFAB429010201E111FDFFF901223FF29 -S31540016510131000007FFFF26E941521500311FFFF07 -S31540016520821063FFDA05215080A3400112800007E3 -S3154001653082152150DA0060040338000080A340012F -S3154001654002800405010000007FFFAB309010201F40 -S31540016550111FD000130FF0007FFFF25D94152150FB -S315400165600311FC80DA05215080A340011280000A04 -S3154001657082152150C200600480A06000128000068E -S3154001658001000000C205A1C080A060000280000594 -S31540016590111FDFFF7FFFAB1D90102021111FDFFF71 -S315400165A0901223FF921000087FFFF2499415215063 -S315400165B00313FBFF821063FFDA05215080A34001DC -S315400165C01280000882152150DA0060040330000071 -S315400165D08210602080A34001028003E40100000094 -S315400165E07FFFAB0A901020207FFFF4761103C00095 -S315400165F0C025A1C09007BFE07FFFF244921521500C -S31540016600C207BFE0DA05215080A34001128000078E -S3154001661082152150DA006004C207BFE480A340011D -S31540016620028003D7010000007FFFAAF890102013D3 -S315400166301B100085901360E87FFFF23492152150BC -S3154001664003100085DA0060E8C205215080A0400DA4 -S31540016650191000858215215012800007901320E8F9 -S31540016660DA006004C202200480A34001028003C90B -S31540016670010000007FFFAAE5901020131B10008542 -S31540016680901360D07FFFF221921521501910008599 -S31540016690C20320D0DA05215080A340018215215042 -S315400166A012800007981320D0DA006004C203200448 -S315400166B080A34001028003BC010000007FFFAAD3F2 -S315400166C0901020131B100085901360D87FFFF20FA6 -S315400166D092152150C20720B0DA05215080A340010E -S315400166E08215215012800007981720B0DA00600405 -S315400166F0C203200480A34001028003B01B00007046 -S315400167007FFFAAC29010201303100085901060B835 -S31540016710C025A1C07FFFF1FD92152150C20720B0CF -S31540016720DA05215080A340018215215012800007CD -S31540016730981720B0DA006004C203200480A3400108 -S315400167400280040F1B0000707FFFAAB09010201337 -S31540016750C025A1C09015E0C87FFFF1EC92152150EC -S31540016760C2052150DA05E0C880A0400D82152150AE -S31540016770128000079015E0C8DA006004C2022004C6 -S3154001678080A3400102800407010000007FFFAA9F09 -S3154001679090102013170C00089A10200019100C00B5 -S315400167A015300F789612E001D83FBFF0D43FBFC0F5 -S315400167B09007BFF07FFFF1D59215215003100400D9 -S315400167C0DA05215080A340011280000A821521502A -S315400167D0C200600480A06000128000060100000033 -S315400167E0C205A1C080A06000028000059007BFC01D -S315400167F07FFFAA86901020139007BFC07FFFF1C389 -S3154001680092152150C2052150DA0720B080A0400DD3 -S315400168108215215012800007981720B0DA006004D3 -S31540016820C203200480A34001028003E31B000070E1 -S315400168307FFFAA7690102013901660F07FFFF1B388 -S3154001684092152150C205A1C08330600E82086003B3 -S3154001685080A0600202800004211000807FFFAA6BA5 -S3154001686090102013C02421C07FFFF2981111F2002D -S315400168700310E80080A2000112800006010000001A -S31540016880C20421C080A06000028000040100000013 -S315400168907FFFAA5E901020137FFFF3CA11100000FC -S315400168A01101F5897FFFF289901221E20308E9641B -S315400168B080A200011280000601000000C205A1C0AD -S315400168C080A0600002800004010000007FFFAA4F03 -S315400168D0901020237FFFF27D1112A208031141007F -S315400168E080A200011280000601000000C205A1C07D -S315400168F080A0600002800004010000007FFFAA43DF -S31540016900901020237FFFF3AF110010009007BFF0D6 -S31540016910921660F07FFFF1649415215003100C002C -S31540016920DA05215080A340011280000A82152150C8 -S31540016930C200600480A060001280000601000000D1 -S31540016940C205A1C080A0600002800005901660F0DB -S315400169507FFFAA2E90102014901660F09207BFC0B8 -S315400169607FFFF1569415215003200000DA0521508E -S3154001697080A340011280000A82152150C2006004A2 -S3154001698080A060001280000601000000C205A1C07F -S3154001699080A0600002800004010000007FFFAA1B66 -S315400169A0901020147FFFF19190102001030FE00019 -S315400169B080A200011280000601000000C205A1C0AC -S315400169C080A0600002800004010000007FFFAA0F42 -S315400169D0901020147FFFF17D90102001030FFC00E1 -S315400169E080A200011280000880A260001280000689 -S315400169F001000000C205A1C080A060000280000421 -S31540016A00010000007FFFAA01901020147FFFF36D63 -S31540016A101110100019100085D41B20D07FFFF1F909 -S31540016A20D01E60F003100085D03D2150DA0060D8B9 -S31540016A30C205215080A0400D1910008582152150B4 -S31540016A4012800007901320D8DA006004C2022004A5 -S31540016A5080A3400102800361010000007FFFA9EB92 -S31540016A60901020227FFFF357111000001704008079 -S31540016A70150F28009612E0F09A102000190FFC001D -S31540016A80D43FBFC0D83FBFF09007BFF09207BFC009 -S31540016A907FFFF10594152150030FFC00DA052150C3 -S31540016AA080A340011280000682152150C200600475 -S31540016AB080A0600002800004010000007FFFA9D38E -S31540016AC0901020157FFFF33F112000001700004072 -S31540016AD0150014009612E0019A102000190FFC00CF -S31540016AE0D43FBFC0D83FBFF09007BFF09207BFC0A9 -S31540016AF07FFFF0ED94152150030FFC00DA0521507C -S31540016B0080A340011280000682152150C200600414 -S31540016B1080A0600102800004010000007FFFA9BB44 -S31540016B20901020157FFFF327113000001700004019 -S31540016B30152014009612E0019A102000192FFC002E -S31540016B40D43FBFC0D83FBFF09007BFF09207BFC048 -S31540016B507FFFF0D594152150032FFC00DA05215013 -S31540016B6080A340011280000682152150C2006004B4 -S31540016B7080A0600102800004010000007FFFA9A3FC -S31540016B80901020157FFFF30F11100000190FFC0024 -S31540016B909A102000D83FBFF09007BFF09216E0E070 -S31540016BA07FFFF0C194152150C206E0E0DA0521507D -S31540016BB080A3400182152150128000079816E0E01B -S31540016BC0DA006004C203200480A34001028000046D -S31540016BD0010000007FFFA98D901020157FFFF2F97B -S31540016BE01120000017000040150014009612E00124 -S31540016BF0190FFC009A102000D43FBFC0D83FBFF008 -S31540016C009007BFF09216E0E07FFFF0A79415215060 -S31540016C10C206E0E0DA05215080A3400182152150E9 -S31540016C20128000079816E0E0DA006004C2032004EF -S31540016C3080A3400102800004010000007FFFA97388 -S31540016C40901020157FFFF2DF113000001700004041 -S31540016C50152014009612E0019A102000192FFC000D -S31540016C60D43FBFC0D83FBFF09007BFF09216E0E0D7 -S31540016C707FFFF08D94152150C2052150DA06E0E0E0 -S31540016C8080A0400D82152150128000079016E0E049 -S31540016C90DA006004C202200480A34001028000049D -S31540016CA0010000007FFFA959901020157FFFF2C512 -S31540016CB01110000015100000961020019A102001B5 -S31540016CC0190FFC00D43FBFC0D83FBFF09007BFF0BB -S31540016CD09207BFC07FFFF079941521500310000041 -S31540016CE0DA05215080A34001128000068215215009 -S31540016CF0C200600480A0600202800004010000001E -S31540016D007FFFA942901020157FFFF2AE11200000AF -S31540016D109007BFF09207BFC07FFFF06894152150DE -S31540016D2003100000DA05215080A3400112800006BD -S31540016D3082152150C200600480A0600302800004D5 -S31540016D40010000007FFFA931901020157FFFF29DC1 -S31540016D50113000009A102001192FFC00D83FBFF0D6 -S31540016D609007BFF09207BFC07FFFF05494152150A2 -S31540016D7003300000DA05215080A34001128000064D -S31540016D8082152150C200600480A060030280000485 -S31540016D90010000007FFFA91D901020157FFFF28999 -S31540016DA011100000150FFC04172F26159412A0127E -S31540016DB09612E231190FFEAE1B1CD2E89A136011EE -S31540016DC098132154D43FBFC0D83FBFF09007BFF0BE -S31540016DD09207BFC07FFFF04794152150030FFEA7CE -S31540016DE082106296DA05215080A340011280000884 -S31540016DF082152150DA006004032C1B348210602F67 -S31540016E0080A3400102800004010000007FFFA8FF2B -S31540016E10901020157FFFF26B112000009007BFF004 -S31540016E209207BFC07FFFF03394152150030FFEA791 -S31540016E3082106296DA05215080A340011280000833 -S31540016E4082152150DA006004032C1B348210603015 -S31540016E5080A3400102800004010000007FFFA8EBEF -S31540016E60901020157FFFF25711300000192FFC04B6 -S31540016E701B2F26159A13623198132012D83FBFC093 -S31540016E809007BFF09207BFC07FFFF01A94152150BB -S31540016E90032FFEA782106296DA05215080A3400196 -S31540016EA01280000882152150DA006004032C1B343D -S31540016EB08210603080A3400102800004010000007E -S31540016EC07FFFA8D2901020157FFFF23E11100000DF -S31540016ED015101000961020009A1020001910380045 -S31540016EE0D43FBFC0D83FBFF09007BFF09207BFC0A5 -S31540016EF07FFFF0009415215003102400DA0521503C -S31540016F0080A340011280000682152150C200600410 -S31540016F1080A0600002800004010000007FFFA8BB42 -S31540016F20901020157FFFF227112000009007BFF037 -S31540016F309207BFC07FFFEFEF941521500310240045 -S31540016F40DA05215080A340011280000682152150A6 -S31540016F50C200600480A060000280000401000000BD -S31540016F607FFFA8AA901020157FFFF216113000006E -S31540016F709007BFF09207BFC07FFFEFDE9415215007 -S31540016F8003102400DA05215080A340011280000637 -S31540016F9082152150C200600480A060000280000476 -S31540016FA0010000007FFFA899901020157FFFF20590 -S31540016FB011100000210FE000110020007FFFF0B901 -S31540016FC09214200180A220001280012301000000BA -S31540016FD07FFFF1FC11200000110020007FFFF0B17E -S31540016FE09214200180A220001280011801000000A5 -S31540016FF07FFFF1F411300000921420017FFFF0A9C8 -S315400170001100200080A220001280010D0100000025 -S315400170107FFFF1EC111000009A102000190FFC00BF -S31540017020D83FBFF09007BFF07FFFEFB892152150D0 -S31540017030C207BFF0DA05215080A340011280000744 -S3154001704082152150DA006004C207BFF480A34001D3 -S31540017050028002A7010000007FFFA86C9010201556 -S315400170607FFFF1D8112000009007BFF07FFFEFA707 -S3154001707092152150C207BFF0DA05215080A3400185 -S315400170801280000782152150DA006004C207BFF45E -S3154001709080A340010280029B010000007FFFA85BA4 -S315400170A0901020157FFFF1C7113000009007BFF007 -S315400170B07FFFEF9692152150C207BFF0DA052150A6 -S315400170C080A340011280000782152150DA00600436 -S315400170D0C207BFF480A340010280028F0100000075 -S315400170E07FFFA84A901020157FFFF1B611100000CE -S315400170F0030FDFFF901063FF7FFFF074A0100008BD -S3154001710080A2001002800004010000007FFFA83F1A -S31540017110901020157FFFF1AB112000007FFFF06B2F -S3154001712090100010030FE00080A2000102800004CD -S31540017130010000007FFFA835901020157FFFF1A1C7 -S31540017140113000007FFFF0619010001080A2001006 -S3154001715002800004010000007FFFA82C901020153A -S315400171607FFFF198901020007FFFF060901521502D -S31540017170032FFE00DA05215080A34001128000064C -S3154001718082152150C200600480A060000280000583 -S31540017190211001447FFFA81D9010201621100144A3 -S315400171A07FFFF05C90142158DA042158032FF00038 -S315400171B080A3400102800004A21421587FFFA81336 -S315400171C0901020167FFFF05D90100011DA042158CF -S315400171D0030FE00080A3400102800004010000008B -S315400171E07FFFA80A901020167FFFF064901521506A -S315400171F0030FFBF7821063F0DA05215080A34001AB -S315400172001280000882152150DA0060040303FF1240 -S315400172108210604A80A3400102800005921660F008 -S315400172207FFFA7FA90102016921660F09007BFF0E4 -S315400172307FFFEF3094152150C205A1C08330600E07 -S315400172408208600780A06002028000051910004B89 -S315400172507FFFA7EE901020171910004B17100080E2 -S31540017260DA02E1C8821322F880A0400DE00322F839 -S3154001727002800004A212E1C87FFFA7E49010201803 -S31540017280C204600480A04010028000040100000096 -S315400172907FFFA7DE90102018C204600880A060001E -S315400172A01280007701000000C204600C80A06000DB -S315400172B01280006C010000007FFFEEE60100000035 -S315400172C080A220010280019801000000190C40298A -S315400172D01B23CD1B9A13609B981320069410200004 -S315400172E096102000D83FBFF0D43FBFC07FFFEF2F9D -S315400172F09007BFF003100083A21062101B1000819B -S3154001730003100144A0136210A4106150B010200074 -S31540017310832E2002DA044001DA27BFC09007BFC09E -S315400173207FFFEF25921521509B2E2003D804000D97 -S31540017330C2052150B00620019603401080A30001EA -S315400173401280000790102019DA02E004C204A0045A -S3154001735080A340010280000580A620FF7FFFA7ABE6 -S315400173600100000080A620FF04BFFFEB832E200210 -S3154001737003100083A41062101B1000800310014407 -S31540017380A2136210A6106150B0102000A12E200257 -S31540017390C2048010C227BFC0921521507FFFEEDB89 -S315400173A09007BFC0DA044010C2052150B006200242 -S315400173B09804001180A34001128000079010201A02 -S315400173C0DA032004C204E00480A3400102800005E0 -S315400173D080A620FF7FFFA78D0100000080A620FF29 -S315400173E024BFFFECA12E200230800211C205A1C0AC -S315400173F080A0600022BFFB8FB0863FFF30BFFB8A73 -S31540017400C205A1C080A0600002BFF1450100000095 -S3154001741030BFF141C205A1C080A0600002BFF13674 -S315400174200100000030BFF132C205A1C080A060005A -S3154001743002BFF1270100000030BFF1237FFFA77390 -S315400174409010201530BFFEF37FFFA77090102015D6 -S3154001745030BFFEE87FFFA76D9010201530BFFEDDDF -S315400174607FFFA76A9010201830BFFF947FFFA76760 -S315400174709010201010BFF678111000847FFFA7638B -S315400174809010201830BFFF89C207BFCC80A0600092 -S3154001749012BFF8F501000000C20421C08208401560 -S315400174A09A16A00880A0400D12BFF8EF0100000017 -S315400174B010BFF8F015108683C205A1C09A13601F4C -S315400174C0190000108208400D9813200880A0400C36 -S315400174D012BFFB7D1110008510BFFB7F901220501B -S315400174E0C205A1C09A13601F190000108208400D01 -S315400174F09813200880A0400C12BFFB86111000850E -S3154001750010BFFB8890122068C205A1C09A13601F64 -S31540017510190000108208400D9813200480A0400CE9 -S3154001752012BFFB8F1110008510BFFB919012208076 -S31540017530C205A1C09A13601F190000108208400DB0 -S315400175409813200880A0400C12BFFB980100000050 -S3154001755030BFFB98C205A1C080A0600002BFFBFE00 -S31540017560111FD00030BFFBF9C205A1C080A0600049 -S3154001757002BFFC1E0100000030BFFC1AC205A1C0BB -S3154001758080A0600002BFFC2C1B10008530BFFC2789 -S31540017590C205A1C080A0600002BFFC3A1B10008555 -S315400175A030BFFC35C205A1C080A0600002BFFC47C8 -S315400175B01B10008530BFFC42C205A1C09A13601F53 -S315400175C0190000108208400D9813201080A0400C2D -S315400175D012BFFC4C0310008510BFFC4E901060B8E2 -S315400175E0C205A1C09A13601F190000108208400D00 -S315400175F09813200480A0400C12BFFB201110008577 -S3154001760010BFFB2290122038C205A1C080A06000A5 -S3154001761022BFF8D0150FFFFF30BFF8CBC205A1C07E -S3154001762080A0600002BFF8100310008530BFF80B40 -S31540017630C205A1C09A13601F190000108208400DAF -S315400176409813201080A0400C12BFF8169015E0C880 -S3154001765010BFF818921660F0C205A1C080A0600064 -S3154001766002BFF9491B10008530BFF944C205A1C0CC -S3154001767080A0600002BFF9579007BFF030BFF952B2 -S31540017680C205A1C080A0600002BFF9631B1000853E -S3154001769030BFF95EC205A1C09A13601F19000010E0 -S315400176A08208400D9813201080A0400C12BFF96942 -S315400176B09007BFF010BFF96B921660F0C20461C02B -S315400176C080A0600002BFF74B1B10008530BFF74614 -S315400176D0C205A1C080A0600002BFF75A9016E0E043 -S315400176E030BFF755C205A1C09A13601F190000109B -S315400176F08208400D9813201080A0400C12BFF75FFE -S315400177000100000030BFF75FC205A1C080A0600044 -S3154001771002BFF76F1B10008530BFF76AC205A1C0D3 -S315400177209A13601F190000108208400D981320100B -S3154001773080A0400C12BFF7750100000030BFF775FD -S31540017740C20461C080A0600002BFF7949015E0C8F2 -S3154001775030BFF78FC205A1C080A0600002BFF7A06D -S315400177609015E0C830BFF79BC205A1C080A060005C -S3154001777002BFF7AC9015E0C830BFF7A7C205A1C05C -S315400177809A13601F190000108208400D98132010AB -S3154001779080A0400C12BFFBED0100000030BFFBEDA5 -S315400177A0C205A1C080A0600002BFFBFC170C000807 -S315400177B030BFFBF7C205A1C09A13601F1900001024 -S315400177C08208400D9813201080A0400C12BFFC196E -S315400177D0901660F030BFFC1AC205A1C080A06000BF -S315400177E002BFFCA10100000030BFFC9DC20461C084 -S315400177F080A0600002BFF9E59015E0C830BFF9E00E -S31540017800C205A1C080A0600002BFF9F19015E0C891 -S3154001781030BFF9ECC205A1C080A0600002BFF9FDEE -S315400178209015E0C830BFF9F8C205A1C080A060003C -S3154001783002BFFA091910008530BFFA04C20461C0BB -S3154001784080A0600002BFF9250310008530BFF920F2 -S31540017850C205A1C09A13601F190000108208400D8D -S315400178609813201080A0400C12BFF92C0100000093 -S3154001787030BFF92CC205A1C080A0600002BFF93C0F -S315400178801B10008530BFF937C205A1C09A13601F8E -S31540017890190000108208400D9813201080A0400C5A -S315400178A012BFF9429007BFE810BFF944921660F043 -S315400178B0C20461C080A0600002BFF95F9016E0E09B -S315400178C030BFF95AC205A1C09A13601F19000010B2 -S315400178D08208400D9813201080A0400C12BFF96415 -S315400178E00100000030BFF964C205A1C080A060005C -S315400178F002BFF9740310008530BFF96FC205A1C0FC -S315400179009A13601F190000108208400D9813201029 -S3154001791080A0400C12BFF97A9016E0E010BFF97CC6 -S31540017920921660F07FFFA6399010201910BFFE69AC -S31540017930190C4029D80061C01B0000709A13601FC2 -S3154001794003000010980B000D8210600880A300010F -S3154001795012BFF5501110008410BFF55290122360EA -S31540017960C205A1C09A13601F190000108208400D7C -S315400179709813200480A0400C12BFF55811100084C2 -S3154001798010BFF55A90122378C205A1C09A13601F01 -S31540017990190000108208400D9813200480A0400C65 -S315400179A012BFF5600100000030BFF560C205A1C0FD -S315400179B080A0600002BFF4A90310008530BFF4A483 -S315400179C0C205A1C080A0600002BFF4939015E0C833 -S315400179D030BFF48EC205A1C080A0600002BFF47D15 -S315400179E09015E0C830BFF478C20461C080A0600041 -S315400179F002BFF4679015E0C830BFF462C205A1C06A -S31540017A009A13601F190000108208400D9813200236 -S31540017A1080A0400C12BFF5B61B10008510BFF5B80B -S31540017A20921360D0C205A1C080A0600002BFF5C517 -S31540017A309007BFF030BFF5C0C205A1C080A060006D -S31540017A4002BFF5D10310008530BFF5CCC205A1C0F8 -S31540017A509A13601F190000108208400D98132010D8 -S31540017A6080A0400C12BFF5D79007BFF010BFF5D9E3 -S31540017A70921660F0C20461C080A0600022BFF5F397 -S31540017A801910008530BFF5EEC205A1C09A13601FDB -S31540017A90190000108208400D9813201080A0400C58 -S31540017AA012BFF5F91B10008510BFF5FB03100085C9 -S31540017AB0C205A1C080A0600002BFF60B9007BFE8D7 -S31540017AC030BFF606C205A1C080A0600002BFF6170E -S31540017AD01B10008530BFF612C20421C080A0600091 -S31540017AE022BFF03E113C02AF30BFF039C205A1C002 -S31540017AF080A0600002BFFD5B0100000030BFFD5762 -S31540017B00C205A1C080A0600002BFFD670100000060 -S31540017B1030BFFD63C205A1C080A0600002BFFD73F6 -S31540017B200100000030BFFD6FC205A1C080A060000A -S31540017B3002BFF2D70310008530BFF2D2C205A1C001 -S31540017B4080A0600002BFF2C19007BFF030BFF2BC17 -S31540017B50C205A1C080A0600002BFF2AA371000850D -S31540017B6030BFF2A5C205A1C080A0600002BFF028C7 -S31540017B701111FC0030BFF023C205A1C09A13601F4A -S31540017B80190000108208400D9813201080A0400C67 -S31540017B9012BFF3DD9016E0E010BFF3DF921660F0FE -S31540017BA0C205A1C080A0600002BFF39E1B100085E4 -S31540017BB030BFF399C205A1C080A0600002BFF38621 -S31540017BC01B10008530BFF381C205A1C080A06000B3 -S31540017BD002BFF36E1B10008530BFF369C20461C05A -S31540017BE080A0600002BFF3589016E0E030BFF35327 -S31540017BF0C205A1C080A0600002BFF30E1910008526 -S31540017C0030BFF309C205A1C080A0600002BFF2F8EF -S31540017C109007BFE830BFF2F3C20461C080A06000A4 -S31540017C2002BFF2E29007BFE830BFF2DD81C7E0084C -S31540017C3081E80000D27A000081C3E008010000001B -S31540017C4081C3E008900A20209332600492126001B9 -S31540017C508213C0007FFFFFF89E1040000100000024 -S31540017C6081D8200081C3E008010000009DE3BF9850 -S31540017C707FFFFFFC0100000082102400C0A04300EA -S31540017C8081C7E00881E80000833220189A10000875 -S31540017C908088600F028000049010200083336010BA -S31540017CA09008600381C3E008010000009DE3BF988E -S31540017CB0031000C01B1000C1B0106000A213600089 -S31540017CC0031000C21B1000C2A4106000A61361007D -S31540017CD0031000201B100020A8106158AA13600051 -S31540017CE07FFFEBAD9010200C808A2008028001FDB9 -S31540017CF0010000007FFFA5409010200ED080032098 -S31540017D007FFFFFE2010000000310014380A2200231 -S31540017D10028000C6D02060D480A22002148000E4F4 -S31540017D2080A2200380A22001028000D18210201966 -S31540017D30331000A02F1000A0391000A0371000A06A -S31540017D40351000A07FFFFFC7210100007FFFFFC85C -S31540017D50BA04A00C921000117FFFFFBC90100018CE -S31540017D60921000117FFFFFB9900620049010001178 -S31540017D707FFFFFB19210200ADA0660141108000055 -S31540017D80913A000DC205E010900A0001912A2002A5 -S31540017D9013008000900200117FFFFFA79212600A34 -S31540017DA0DA06601411100000913A000DC205E01088 -S31540017DB0900A0001912A2002900200117FFFFF9E46 -S31540017DC09214208EDA066014111C0000913A000DBF -S31540017DD0C205E010900A0001912A20021301C00059 -S31540017DE0900200117FFFFF949212608E9334A0049B -S31540017DF09004600C7FFFFF90921260019214201E46 -S31540017E007FFFFF8D9004A0089010001D7FFFFF8A21 -S31540017E10921020009334E004921260017FFFFF86A6 -S31540017E209004A004111000C2901221087FFFFF8226 -S31540017E3092102000031000E0A0106000933420044B -S31540017E40111000C2901221047FFFFF7B9212601A2B -S31540017E5003048D1582106278C2242004111000E0BB -S31540017E6015100120C0222000A2102003AC12A00050 -S31540017E70A004E00C90047FFD40000A739210200399 -S31540017E801B100143C20360D48200600C932A000197 -S31540017E909202401693326004901000107FFFFF66F5 -S31540017EA09212601EA204600180A4600A04BFFFF220 -S31540017EB0A0042004C206E008D807200C820860010D -S31540017EC08328400CD605E010111000E0D406A0002E -S31540017ED0DA06601498122000960AE003972AC00D2C -S31540017EE0920AA002111000A0DA022004940AA0010D -S31540017EF0952A800D932A400D1B1000209612C00131 -S31540017F00E8236150030100001B0076418210601E88 -S31540017F109A1361C09212C00999332004C2252004E4 -S31540017F20DA2520089612C00A9E13200E9135600468 -S31540017F301B1000C2031000C2821061049012201E61 -S31540017F40953620049813201E9A136108D625202CB5 -S31540017F50D8252010D025201CD2252020DE252028FA -S31540017F60D6252014940ABFF0FA250000DA252018F8 -S31540017F70C2252024C225200CA2102100D4A44320CE -S31540017F80C2800320D88443209A102001A0102200E9 -S31540017F90DAA40320D884032082102000C2A403203F -S31540017FA0DAA0032081D820007FFFC019010000001C -S31540017FB0C2800320E2844320E0840320DA05E010F6 -S31540017FC0D6066014C206E0089A0B60039B2B400B51 -S31540017FD082086001D407200CD806A000111000A029 -S31540017FE08328400A980B2001D60220049A134001A7 -S31540017FF0992B000B9A13400CC203400080A06000ED -S3154001800012800008821360041B048D15D8004000BD -S315400180109A13627880A3000D02800038C205E010F1 -S3154001802010800000010000008210201A331000A0C9 -S31540018030C22660149810203F2F1000A0391000A0CE -S31540018040351000A09A1020148210200E151000A0A1 -S31540018050371000A0DA27200CC222A004D826A0009F -S31540018060D825E01010BFFF38D826E0089A10207FA7 -S31540018070331000A02F1000A0C2266014DA25E010AC -S315400180809810203F391000A0351000A0821020130F -S315400180909A10200D111000A0371000A0C227200C05 -S315400180A0DA22200410BFFFF0D826A00012BFFF221B -S315400180B0331000A08210201CC22660149A1020158D -S315400180C08210207F391000A0371000A0DA27200C3B -S315400180D0C226E0089810200F2F1000A0351000A0EE -S315400180E01B1000A08210203FD8236004C226A000A6 -S315400180F010BFFF15D825E010DA06E008D80660144F -S31540018100820860039A0B6002D607200C8328400C34 -S315400181109B2B400B8210400DD80040001B100000E5 -S31540018120C203400080A3000102800004D406E00897 -S315400181301080000001000000C205E010980AA0016D -S31540018140D207200CD6066014820860038328400BB0 -S31540018150992B0009940AA0039810400CDA06A00056 -S31540018160111000A0952A80099A0B6001D6022004BD -S315400181708210400AC20040009B2B400B9813000D11 -S315400181800321D9509813200482106321C223000091 -S31540018190DA03000080A3400102800004C206E00821 -S315400181A01080000001000000D407200CDA05E01021 -S315400181B082086001D60660148328400A9A0B600340 -S315400181C0D806A0009B2B400B151000A0D602A00498 -S315400181D0980B20019A134001992B000B9813400CE0 -S315400181E08210000C05048D158410A278072AF37BB2 -S315400181F08610E301C4384000C438400003048D159D -S31540018200DA0300008210627880A3400102800004F4 -S315400182108213200410800000010000001B2AF37B1A -S31540018220D80040009A13630180A3000D12BFFFFAE4 -S31540018230C205E010D6066014D806E008820860033D -S31540018240D407200C8328400B980B2001DA06A000A6 -S31540018250111000A0992B000A9A0B6003D602200444 -S315400182608210400C9B2B400B15100143A010400D72 -S31540018270F002A0D4A2102003E0240000C0A00220F6 -S31540018280921020034000097090047FFD8206200C65 -S3154001829098102001912A0001992B00011B10012001 -S315400182A09610000182136000DA02000180A340109B -S315400182B0A204600112800087A004000C80A4600A19 -S315400182C024BFFFEFE0240000C0A0022003100120DC -S315400182D0A810000BAA106000A0102000A2102003D5 -S315400182E090047FFD4000095892102003832C6002C0 -S315400182F0912A0014DA04C00190020015820B6060D5 -S315400183009132200480A000019012201EA04000104E -S315400183109A0B7F9F900A3F9F80A340081280006F6F -S31540018320A204600180A4600A24BFFFEF90047FFD90 -S3154001833080A4200012800004C205E01010800000D5 -S3154001834001000000D6066014D806E00882086003E2 -S31540018350D407200CDA06A000111000A08328400B98 -S31540018360980B2001992B000AD60220049A0B600231 -S315400183708210400C9B2B400BAA10400D9FC540001C -S315400183800100000082102400C0A04300C0A00220CA -S31540018390A0102000A21020039B2C6002C204C00D35 -S315400183A08208606080A00001A0400010A204600124 -S315400183B080A4600A24BFFFFA9B2C600280A4200897 -S315400183C022800004D004E004108000000100000077 -S315400183D0808A204002800007010000007FFFFE19CD -S315400183E00100000080A2200012800004010000006C -S315400183F010800000010000007FFFFE12D004A0089B -S3154001840080A22000128000040100000010800000BC -S31540018410010000007FFFFE0BD004E00880A220008F -S3154001842012800004010000001080000001000000DD -S3154001843083480000842860808188A00001000000F4 -S315400184400100000001000000D806E008D407200C16 -S31540018450DA05E010980B2001D6066014992B000A24 -S315400184609A0B6003C206A0009B2B400B151000A07F -S31540018470D602A004820860018328400B9A13400C5F -S315400184809A1340019A136004C203400092102004DB -S3154001849091D02002010000007FFFBEDD01000000F7 -S315400184A0981020009A102200D8A343208210200160 -S315400184B0C2A34320D8A3432003100000DA8043809F -S315400184C0DAA04380D8A0032081D82000308000055F -S315400184D01080000001000000108000000100000033 -S315400184E081C7E00891E820009DE3BF98400007D18D -S315400184F001000000808A21000280003F0100000047 -S315400185007FFFA35101000000912A20047FFFA33A77 -S31540018510900220050310014082106048DA00600491 -S3154001852080A360002280001503100140B0100001B5 -S31540018530C20600009B38601F81836000DA06200472 -S3154001854001000000010000008278400DDA06200893 -S31540018550B006200C80A0400D02800004901020013E -S315400185607FFFA32A01000000C206200480A060000C -S3154001857012BFFFF00310014082106000DA00600470 -S3154001858080A360000280001501000000B0100001C8 -S31540018590C206000081800000DA06200401000000C6 -S315400185A0010000009A70400D8210000DDA06200885 -S315400185B0B006200C80A0400D0280000490102002DD -S315400185C07FFFA31201000000C206200480A06000C4 -S315400185D012BFFFF001000000400008240100000026 -S315400185E080A2200012800004010000007FFFA30743 -S315400185F09010200381C7E00891E820009DE3BF98D1 -S315400186007FFFA31101000000912A20047FFFA2FAF7 -S3154001861090022004400007890100000080A2212326 -S3154001862002800004010000007FFFA2F890102001A3 -S315400186304000078001000000808A21000280002B53 -S315400186400310014082106184DA00600880A360094A -S315400186500280001101000000B0100001C2060000B6 -S31540018660DA062004D80620088258400DB006200CB0 -S3154001867080A0400C02800004901020027FFFA2E3FC -S3154001868001000000C206200880A0600912BFFFF465 -S3154001869001000000400007760100000080A2200092 -S315400186A00280000F01000000400007620100000047 -S315400186B0808A22000280000D010000004000079ED2 -S315400186C00100000080A22000128000080100000085 -S315400186D07FFFA2CE90102004308000047FFFA2CB02 -S315400186E09010200330BFFFF181C7E00891E82000D8 -S315400186F09DE3BFA094102000111000619012232425 -S315400187001310006192126328171000619612E3302C -S31540018710191000619813233493C2000081C24000AE -S315400187201080019181C2C00081C300001080018E7A -S315400187309402A0019402A00180A2A0031280018AA2 -S3154001874001000000874400008D30E00E8C89A007AF -S3154001875080A1A000028000C701000000AF30E00BFD -S31540018760AE0DE00780A5E000128000C201000000C6 -S3154001877080A1A002128000350100000025100000F2 -S31540018780E41C80002510000029100000A8152104D2 -S31540018790A6100012AA100012AC100014A1802046A7 -S315400187A0A4100000AA10000001000000A180204E84 -S315400187B0A810210001000000A18000000100000076 -S315400187C001000000E83CA03082A4801312800166BB -S315400187D082A500161280016401000000010000001C -S315400187E001000000874400008D30E00B8C89A00712 -S315400187F08CA1A0051280015CA1800000010000004F -S315400188000100000001000000E81CA03082A500160E -S315400188101280015582A54012A41000001280015217 -S315400188200100000001000000874400008D30E00B8C -S315400188308C89A0078CA1A0031280014B0100000086 -S315400188401080008C0100000080A1A001128000234D -S3154001885025100000E41C80002510000029100000AE -S31540018860A8152104A6100012AA100012AC1000147B -S31540018870A1802046A4100000AA10000001000000BB -S31540018880A180204EA810210001000000A180000017 -S31540018890010000000100000001000000E83C8000EA -S315400188A082A480131280013082A500161280012E07 -S315400188B00100000001000000874400008D30E00BFC -S315400188C08C89A0078CA1A00212800127010000001B -S315400188D0108000680100000080A1A003128000659D -S315400188E0A6100000A210200EA1844000A610000090 -S315400188F0A1800000A814E000AB4400000100000084 -S31540018900AC14E00001000000AF44000080A5200047 -S3154001891012800115AA8D6E0080A5400012800112B9 -S3154001892080A5A00012800110AF35E00BAE0DE00727 -S3154001893080A5E0011280010C01000000A01000009A -S31540018940A1844000A6100000A1800000E8180000A4 -S31540018950AC100000AE100000EC04C000EE04E004D0 -S3154001896080A500161280010080A54017128000FEE6 -S3154001897001000000A5440000A534A00BA40CA007EB -S3154001898080A4A001128000F801000000A0100000A0 -S31540018990A1844000A6100000A1800000A210200A78 -S315400189A0A1844000A4100000A1800000E818000046 -S315400189B0AC100000AE100000EC04C012EE04E0045E -S315400189C080A50016128000E880A54017128000E6B7 -S315400189D001000000A5440000A534A00BA40CA0078B -S315400189E080A4A002068000E00100000021100140A1 -S315400189F0A0142200EC1C0000A0042008E81C000082 -S31540018A00A1844000A6100000A1800000A210200E03 -S31540018A10A1844000A4100010AC100000AE1000006C -S31540018A20A18000000100000001000000EC3C801321 -S31540018A30AC100000AE100000E81CC01280A5001664 -S31540018A40128000C980A54017128000C701000000AE -S31540018A50A5440000A534A00BA40CA00780A4A00443 -S31540018A60128000C1010000001080000201000000D8 -S31540018A708B4440008A09601F80A160010280000A80 -S31540018A808C1000059DE3BFA08AA1600116BFFFFEC1 -S31540018A900100000081E800008CA1A00116BFFFFE85 -S31540018AA0010000000100000001000000A023A08099 -S31540018AB0A02C20078E100010A3480000E2240000DD -S31540018AC0C2242004C43C2008C83C2010CC3C2018B9 -S31540018AD0F03C2020F43C2028F83C2030FC3C203857 -S31540018AE0D03C2040D43C2048D83C2050DC3C205847 -S31540018AF0A5500000E4242060801020088210200147 -S31540018B008410200286102003881020048A10200534 -S31540018B108C10200681900000A42C601F818C80005F -S31540018B200100000001000000010000000300404078 -S31540018B3082106101841000008610000089444000C3 -S31540018B408809201F86100004A010000284004002FC -S31540018B50A210000284004002A410000284004002D8 -S31540018B60A610000284004002A810000284004002C0 -S31540018B70AA10000284004002AC10000284004002A8 -S31540018B80AE100002840040029010000284004002B0 -S31540018B9092100002840040029410000284004002B8 -S31540018BA096100002840040029810000284004002A0 -S31540018BB09A100002840040029C1000028400400288 -S31540018BC09E1000028400400281E0000086A0E00180 -S31540018BD016BFFFDE01000000030040408210610124 -S31540018BE0841000008610000480A400021280003F19 -S31540018BF08400400280A440021280003C840040026E -S31540018C0080A48002128000398400400280A4C00200 -S31540018C10128000368400400280A500021280003393 -S31540018C208400400280A54002128000308400400248 -S31540018C3080A580021280002D8400400280A5C002DA -S31540018C401280002A8400400280A20002128000277E -S31540018C508400400280A24002128000248400400227 -S31540018C6080A28002128000218400400280A2C002BC -S31540018C701280001E8400400280A300021280001B65 -S31540018C808400400280A34002128000188400400202 -S31540018C9080A38002128000158400400280A3C00296 -S31540018CA0128000128400400281E0000086A0E001AB -S31540018CB016BFFFCE0100000080A020001280000BED -S31540018CC080A0FFFF1280000980A160051280000785 -S31540018CD080A1A0061280000501000000A010000737 -S31540018CE010800006C0242020A0100007901020010B -S31540018CF010800002D024202082100007C4004000CA -S31540018D008188800001000000010000000100000090 -S31540018D10C4186008C8186010CC186018F018602094 -S31540018D20F4186028F8186030FC186038D018604094 -S31540018D30D4186048D8186050DC186058E400606068 -S31540018D40C20060048194800001000000010000001F -S31540018D5001000000A0100007F004202081C7E008B0 -S31540018D6081E8000010BFFFFCB010000001000000C8 -S31540018D7081D8200081C3E008010000001B10014496 -S31540018D80D8036180821020018328400C1B100144C6 -S31540018D9082007FFFD803618482084008932A400CF1 -S31540018DA0900040098213C0007FFFE77F9E1040007C -S31540018DB0010000001B100144D8036180821020018C -S31540018DC08328400C1B10014482007FFFD803618435 -S31540018DD0932A400C82084008900040099210000AEC -S31540018DE08213C0007FFFE7729E1040000100000021 -S31540018DF01B100144D8036180821020018328400C56 -S31540018E001B10014482007FFFD8036184932A400CE2 -S31540018E1082084008900040099210000A8213C0005F -S31540018E207FFFE7679E104000010000001B100144D0 -S31540018E30D8036180821020018328400C1B10014415 -S31540018E4082007FFFD803618482084008932A400C40 -S31540018E50900040098213C0007FFFE7579E104000F3 -S31540018E60010000001B100144D803618C82102001CF -S31540018E708328400C1B10014482007FFFD803619C6C -S31540018E80932A400C82084008900040099210000A3B -S31540018E908213C0007FFFE74E9E1040000100000094 -S31540018EA01B100144D803618C821020018328400C99 -S31540018EB01B10014482007FFFD803619C932A400C1A -S31540018EC082084008900040099210000A8213C000AF -S31540018ED07FFFE7439E104000010000009DE3BF581D -S31540018EE02D100144A2102000C205A19080A440018A -S31540018EF01680001BA01020002B10014429100144AC -S31540018F0027100144A4102001D005618C912C8008C2 -S31540018F10C205219C90023FFF832C0001900A001854 -S31540018F207FFFE72990020001C204E17C901E000800 -S31540018F30900A000180A00008A2647FFFA0042001DE -S31540018F40C205A19080A4000126BFFFF1D005618C26 -S31540018F5080A4600012800003B0102000B0102001F0 -S31540018F6081C7E00881E800001B100144D803618CE9 -S31540018F70821020018328400C1B10014482007FFF90 -S31540018F80D803619C82084008932A400C900040090E -S31540018F908213C0007FFFE70C9E10400001000000D5 -S31540018FA01B100144D803618C821020018328400C98 -S31540018FB01B10014482007FFFD803619C8208400850 -S31540018FC0932A400C900040098213C0007FFFE702BC -S31540018FD09E10400001000000952AA00D03280000C4 -S31540018FE094028009D02040009422B000D42060042D -S31540018FF081C3E00801000000033FFFBF821062F811 -S315400190009DE38001193FFFBF94132368B407BFF85E -S315400190100310004A9606800A82106120C222E00CA3 -S315400190200310004A821060E0C222E0041B10004A8D -S315400190309A1360C0033FFFBFDA26800A901323804C -S315400190403310004A8210635C94068008981323C04B -S31540019050921661008200401ED222E008D4204000D0 -S31540019060B006800C7FFFA064901020067FFFE6CA01 -S3154001907090102000920A3FF07FFFE6C99010200031 -S31540019080210000307FFFE6C490102000808A001046 -S3154001909012BFFFFD010000007FFFFF3621000030B7 -S315400190A07FFFE6BD90102000808A001012BFFFFDB1 -S315400190B0010000007FFFE6B8901020000300204029 -S315400190C08210600F921200017FFFE6B590102000DA -S315400190D07FFFE6B19010200821100144D024217869 -S315400190E07FFFE6AD9010200CA73A2010993A201444 -S315400190F0A60CE007980B200FDA042178A823001369 -S31540019100A80520089F3B6014933B60109B3B601869 -S3154001911094050013A2102001AC03200A9E0BE00F18 -S3154001912096102400AE0B60039402A0022120000099 -S31540019130992AC00C1B1001448203E00A952C400A6F -S315400191409424000A832C4001D8236198A02400016D -S315400191501B10014403100144EC23618C972AC00F74 -S31540019160AA03E00A1B100144D6206174031001448E -S31540019170EA236184EA2061801B1001440310014403 -S31540019180D423617C920A6007A53A2018D0206188D1 -S31540019190153FFFBF932C4009A40CA00303100144C3 -S315400191A09412A358932C4009A404A00139100144F8 -S315400191B037100144EC20619C9B2C40149402801E84 -S315400191C0E0272194E426E190AA027FFFDA2280007B -S315400191D0AC85E0010280000CBB2C4013033FFFBF6E -S315400191E082106368A0068001A4100016D004000016 -S315400191F09FC20000A0042004A484BFFF32BFFFFD2C -S31540019200D00400007FFFE66490102000920A3FFCE4 -S315400192107FFFE66390102000A410200080A48016F2 -S3154001922016800022A2102000033FFFBFAE106368E4 -S31540019230A610001AA010200080A40016368000183F -S31540019240A404A00110800005A810001780A40016F0 -S3154001925036800013A404A001921000107FFFFEC8BF -S31540019260D004C014820A001580A0401512BFFFF831 -S31540019270A0042001C204C01482184008DA072194D0 -S315400192808208400D80A00001A2647FFF80A40016E1 -S3154001929006BFFFF392100010A404A00180A480161B -S315400192A006BFFFE5A604E0047FFFE63B90102000E1 -S315400192B0A6100008901020007FFFE6399214E003C3 -S315400192C080A46000028001B101000000833CE00CF3 -S315400192D080886003128000A5030048D1833CE013D7 -S315400192E080886003128001AD010000007FFFFEA16E -S315400192F0210000307FFFE62890102000808A001070 -S3154001930012BFFFFDA6100008A4102000C206E1907E -S3154001931080A480011680000D832CA00292100012B9 -S31540019320901000187FFFFED094102000A404A001E5 -S31540019330C206E19080A4800106BFFFFA9210001296 -S31540019340A4102000832CA002A404A001C026000181 -S3154001935080A4A01E04BFFFFD832CA002821020051D -S31540019360C22600009A102001DA262004821020022B -S31540019370C22620089A102003DA26200C7FFFFED849 -S315400193809010001880A22000028001D30100000045 -S31540019390C206000080A060050280000401000000B2 -S315400193A07FFF9F9A901020067FFFFECD90100018F8 -S315400193B080A22000128001C401000000A4102000F8 -S315400193C0C206E19080A480011680000F921000121F -S315400193D0A0062004941020007FFFFEB290100018D2 -S315400193E092100012901000107FFFFEAE94102000E4 -S315400193F0A404A001C206E19080A4800106BFFFF645 -S31540019400921000127FFFE5FA901000187FFFE5F8F1 -S31540019410900620207FFFE5F6900620407FFFE5F489 -S3154001942090062060A4102000C206E19080A480012D -S3154001943006800196A21020007FFF9F74901020089D -S31540019440173FFFBF8212E3C0940680018212E35C9C -S315400194508200401ED81A8000C2004000D838400021 -S315400194609612E380C206800B80A06005128000063A -S315400194708206800BDA00600480A360010280000549 -S31540019480A41020007FFF9F6190102009A4102000A6 -S31540019490C206E19080A4800116800011A21020002E -S315400194A0A0062004921000127FFFFEBE901000100D -S315400194B0901A200180A00008A2647FFFA404A001A5 -S315400194C0C206E19080A4800106BFFFF89210001207 -S315400194D080A4600102800005833CE0137FFF9F4B1F -S315400194E09010200A833CE01380886003128001803B -S315400194F082102005C22600009A102001DA26200497 -S3154001950082102002C22620089A102003DA26200C57 -S315400195101B3FFFBF9A1363589A03401ED003400076 -S315400195204000048D9210001D032EEEEEA12A20026A -S31540019530A21063BBE22600107FFFFE69901000185F -S3154001954080A220001280016701000000C2060010BF -S3154001955080A0401102800005030048D17FFF9F2B68 -S3154001956090102012030048D1821061671B226AF3D2 -S31540019570C22620209A1361EFDA262024C20E20202B -S3154001958080A0600102800004010000007FFF9F1F50 -S315400195909010201AC20E202180A060230280000470 -S315400195A0010000007FFF9F199010201BC20E202250 -S315400195B080A0604502800004010000007FFF9F13E8 -S315400195C09010201CC20E202380A0606702800004F8 -S315400195D0010000007FFF9F0D9010201DC20E202428 -S315400195E080A0608902800004010000007FFF9F0780 -S315400195F09010201EC20E202580A060AB0280000480 -S31540019600010000007FFF9F019010201FC20E2026FF -S3154001961080A060CD02800004010000007FFF9EFB18 -S3154001962090102020C20E202780A060EF0280000407 -S31540019630010000007FFF9EF590102021C2162020D8 -S31540019640832860108330601080A06123028000046B -S31540019650010000007FFF9EED90102022DA162022A5 -S315400196609B2B6010030000119B33601082106167D1 -S3154001967080A3400102800004010000007FFF9EE3B9 -S3154001968090102023DA1620249B2B60100300002221 -S315400196909B336010821061AB80A3400102800004BD -S315400196A0010000007FFF9ED990102024DA16202663 -S315400196B09B2B6010030000339B336010821061EFD7 -S315400196C080A3400102800005821020307FFF9ECF9B -S315400196D09010202582102030C22E2020030C08D164 -S315400196E0DA0620208210616780A3400102800005CE -S315400196F0821020317FFF9EC5901020278210203195 -S31540019700C22E2021030C0C51DA06202082106167FB -S3154001971080A3400102800005821020327FFF9EBB5C -S315400197209010202882102032C22E2022210C0C4C6F -S31540019730DA0620208214226780A3400102800005B8 -S31540019740821020337FFF9EB1901020298210203352 -S31540019750C22E20239A142233C206202080A0400D17 -S3154001976002800005821020347FFF9EA89010202A97 -S3154001977082102034C22E2024030D2AF3DA06202437 -S31540019780821061EF80A340010280000582102035DE -S315400197907FFF9E9E9010202B82102035C22E2025C1 -S315400197A0030D0D73DA062024821061EF80A3400178 -S315400197B002800005821020367FFF9E949010202C57 -S315400197C082102036C22E2026210D0D4DDA06202488 -S315400197D0821422EF80A340010280000582102037C7 -S315400197E07FFF9E8A9010202D82102037C22E20277F -S315400197F09A142237C206202480A0400D028000051B -S31540019800210000107FFF9E819010202E2100001024 -S3154001981082142041C23620200310104CDA06202043 -S315400198208210623380A340010280000582142243E4 -S315400198307FFF9E769010202F82142243C23620222B -S3154001984003101050DA0620208210624380A34001A3 -S3154001985002800005210000117FFF9E6C9010203090 -S315400198602100001182142045C23620240311114DD6 -S31540019870DA0620248210623780A340010280000567 -S31540019880821422477FFF9E61901020318214224725 -S31540019890C236202603111151DA062024821062476E -S315400198A080A3400102800004010000007FFF9E5713 -S315400198B0901020327FFFFD2FA4102000C206E190B8 -S315400198C080A48001168000151B100144D403619CBD -S315400198D096100001A010200080A4001D3680000CC7 -S315400198E0A404A001832C800A9B286002992CA01015 -S315400198F082130010C226000DA004200180A4001D81 -S3154001990006BFFFFC9A036004A404A00180A4800B57 -S3154001991026BFFFF2A01020007FFFE49F9010200099 -S3154001992003000010808A000112BFFFFC0100000005 -S31540019930A4102000C206E19080A480011680011483 -S31540019940921000127FFFFD899010001815100144F6 -S31540019950C202A17C900A0001820E000180A2000190 -S31540019960A404A00112BFFFF4901020337FFF9E276D -S3154001997001000000C206E19080A4800106BFFFF20B -S3154001998092100012308001027FFF9E20901020012C -S3154001999010BFFE50833CE00C7FFFE47F9010200017 -S315400199A0133FFFF09212603F920A0009A610000889 -S315400199B07FFFE47B901020007FFFE3D2A4102000BC -S315400199C01303C0009214C0097FFFE4759010200074 -S315400199D080A480161680000992100012901661002C -S315400199E07FFFFD0494102000A404A00180A48016EA -S315400199F006BFFFFB921000127FFFE3C20100000089 -S31540019A007FFFE46590102000913A200A900A2003D6 -S31540019A1080A2200102800004010000007FFF9DFB1F -S31540019A209010200201000000921020009016610063 -S31540019A307FFFFCE194102000010000007FFFE45607 -S31540019A40901020001303C000922A00097FFFE454BE -S31540019A5090102000010000007FFFE3AA01000000F2 -S31540019A607FFFE44D90102000913A200C900A20038C -S31540019A7080A2200102BFFE1E010000007FFF9DE380 -S31540019A809010200330BFFE1A921000127FFFFD4551 -S31540019A9090100018901A200580A00008A2647FFF4C -S31540019AA0A404A001C206E19080A4800106BFFFF88C -S31540019AB09210001280A4600012BFFE63173FFFBFE1 -S31540019AC030BFFE5E7FFF9DD19010200710BFFE3D47 -S31540019AD0A41020007FFF9DCD9010200530BFFE2DA4 -S31540019AE07FFF9DCA9010201130BFFE997FFFE42A67 -S31540019AF090102000033FFFF08210603F920A000160 -S31540019B007FFFE42790102000033FFFBFA010638032 -S31540019B1092102000941020007FFFFCE290068010F6 -S31540019B207FFFE41D901020000303C0009212000144 -S31540019B307FFFE41B9010200010800006A410200037 -S31540019B40900680107FFFFCD794102005A404A00145 -S31540019B50C206E19080A4800106BFFFFA921000126E -S31540019B60033FFFBFA01063809A102001DA2E8010B8 -S31540019B7003004000D80680108210600580A30001D2 -S31540019B8002800004010000007FFF9DA09010200B81 -S31540019B907FFFE40190102000913A2006900A2003AD -S31540019BA080A2200102800004010000007FFF9D97F2 -S31540019BB09010200C7FFFE3F8901020001303C000A3 -S31540019BC0922A00097FFFE3F69010200092102000B0 -S31540019BD0900680107FFFFCB3941020007FFFE3EED8 -S31540019BE0901020002103C000921200107FFFE3EC89 -S31540019BF0901020007FFFE3E890102000808A00103B -S31540019C0002BFFFFDA6100008A4102000C206E19085 -S31540019C1080A480011680000E033FFFBF9A102001E9 -S31540019C20A2106380A12B401D921000129006801154 -S31540019C307FFFFC8D94043FFFA404A001C206E1907E -S31540019C4080A4800106BFFFFA921000121303C000E0 -S31540019C50922CC0097FFFE3D2901020002103C0005F -S31540019C607FFFE3CD90102000808A001012BFFFFDD8 -S31540019C701B004000213FFFBF82142380D80680018C -S31540019C809A13600580A3000D0280000401000000C4 -S31540019C907FFF9D5E9010200D7FFFE3BF9010200057 -S31540019CA0913A2008900A200380A2200122800005D3 -S31540019CB0A01423787FFF9D559010200FA014237880 -S31540019CC094068010981020119A102055D83A800099 -S31540019CD07FFFE3B1901020000303C0009212000100 -S31540019CE0920A7F3F7FFFE3AE90102000A0068010CE -S31540019CF07FFFE3CD9010001010800006A4102000D5 -S31540019D00900420047FFFFC6794102055A404A00111 -S31540019D10C206E19080A4800106BFFFFA92100012AC -S31540019D20113FFFBF901223787FFFE3BF9006800863 -S31540019D3080A220111280000480A260550280000496 -S31540019D40010000007FFF9D31901020107FFFE392BC -S31540019D5090102000833A20068208600380A06001AB -S31540019D6002800004A61000087FFF9D289010201055 -S31540019D70133C3FF09212603F920CC0097FFFE3888B -S31540019D809010200010BFFDDC821020057FFFE3828A -S31540019D90901020009212200F7FFFE3819010200047 -S31540019DA081C7E00891E820009DE3BF987FFFFC93BF -S31540019DB001000000B0100008130020409212600F0D -S31540019DC07FFFE377901020000100000081C7E00883 -S31540019DD081E80000033FFFBF821063589DE3800185 -S31540019DE07FFFFBE401000000400002380100000053 -S31540019DF07FFFE36990102008A21000087FFFE36609 -S31540019E009010200C7FFF9D10A0100008912A20047D -S31540019E107FFF9CF99002200C973C6014833C6018AC -S31540019E20953C2014993C201882086003960AE00F5D -S31540019E30820060019602E00AA33C6010A13C20101A -S31540019E40980B2003940AA00FA728400B98032001E2 -S31540019E50A20C6007A00C20079402A00A9A102001C8 -S31540019E60A2046002A0042002B12B000A03200000D4 -S31540019E70AB2B4011A52B40109620401898057FFF2B -S31540019E80822040139A04BFFFAE130001A213400B78 -S31540019E90210000307FFFE34090102000808A0010AF -S31540019EA012BFFFFD033FFFBF9A07BFF8821063C091 -S31540019EB0A00340012D155555901000189210001021 -S31540019EC07FFFE2C89415A15580A220001280004B65 -S31540019ED0292AAAAA92100010901000187FFFE2D5F5 -S31540019EE0941522AA80A220001280004E0100000093 -S31540019EF07FFF9CD501000000912A20047FFF9CBE74 -S31540019F009002200A400001EE010000009215220055 -S31540019F10920C4009901000189410001196100012EE -S31540019F207FFFE2ED981522AA80A2200012800051FF -S31540019F30010000009215A10090100018920C4009F2 -S31540019F4094100011961000127FFFE2E39815A15577 -S31540019F5080A2200012800044010000007FFF9CBACD -S31540019F6001000000912A20047FFF9CA39002200B50 -S31540019F70901000137FFFE2BF9215A15580A22000E9 -S31540019F801280003501000000901000137FFFE2B9F6 -S31540019F90921522AA80A220001280002C0100000006 -S31540019FA07FFF9CA901000000912A20047FFF9C921B -S31540019FB0900220099010001392100017941000157A -S31540019FC07FFFE2B8961522AA80A220001280001BCC -S31540019FD00100000090100013921000179410001514 -S31540019FE07FFFE2B09615A15580A220000280002590 -S31540019FF0010000003080000E7FFF9C8490102001FC -S3154001A000292AAAAA92100010901000187FFFE2890F -S3154001A010941522AA80A2200002BFFFB601000000CB -S3154001A0207FFF9C7A9010200230BFFFB27FFF9C7762 -S3154001A03090102008308000137FFF9C7490102007F9 -S3154001A04010BFFFE6901000137FFF9C709010200612 -S3154001A05030BFFFD47FFF9C6D9010200510BFFFCC11 -S3154001A060901000137FFF9C699010200430BFFFBC05 -S3154001A0707FFF9C669010200310BFFFB09215A10090 -S3154001A0807FFFFB3CB0102000400001900100000022 -S3154001A0900100000081C7E00881E800009DE3BF9808 -S3154001A0A07FFF9C501100412CDA062004D80620047B -S3154001A0B09A0B6003993B200282102007C226200892 -S3154001A0C0BA036001B20B27FF010000009010200A7D -S3154001A0D0C02600007FFF9C480100000017000200D7 -S3154001A0E082103FFFC226000B032AAAAA1B1555550B -S3154001A0F0D806000BAC102000821062AA9A13615553 -S3154001A100AA0B000180A5801D16800038A80B000D02 -S3154001A1109612E020A72E600880A4E0000480000C7F -S3154001A120A2102000832DA0028200401819000200CF -S3154001A1309A10000BE820400CEA20400DA204601062 -S3154001A14080A4C01114BFFFFC82006040AC05A00191 -S3154001A15080A5801D06BFFFF280A4E000AC10200060 -S3154001A16080A5801D1680002103000200B8106020E2 -S3154001A170A72E6008AE10001880A4E00004800017E6 -S3154001A180A210200003000200A4060001A005C01C85 -S3154001A190C2048000A2046010A404A04080A0401420 -S3154001A1A002800004901020017FFF9C1801000000EE -S3154001A1B0C2040000A004204080A040150280000493 -S3154001A1C0901020017FFF9C110100000080A4C01166 -S3154001A1D014BFFFF001000000AC05A00180A5801D61 -S3154001A1E006BFFFE6AE05E0047FFF9C039010200CFE -S3154001A1F0AC10200080A5801D16800088031555559A -S3154001A2009E1061551B000800032AAAAA9A136004EE -S3154001A210901062AAA72E600880A4E0000480000E78 -S3154001A220A2102000832DA0138200401813000800BD -S3154001A2309410000F9610000D98100008D420400984 -S3154001A240D820400BA204600280A4C01114BFFFFCB9 -S3154001A25082006008AC05A00180A5801D06BFFFF005 -S3154001A26080A4E000AC10200080A5801D1680006B04 -S3154001A27003155555B81061551B000800032AAAAAB3 -S3154001A280B6136004B41062AAA72E600880A4E00049 -S3154001A29004800019A2102000832DA013A0004018AD -S3154001A2A02F000800AA10001CA810001BA410001AB9 -S3154001A2B0C2040017A204600280A040150280000477 -S3154001A2C0901020037FFF9BD101000000C2040014BF -S3154001A2D0A004200880A040120280000490102003B0 -S3154001A2E07FFF9BCA0100000080A4C01114BFFFF18B -S3154001A2F001000000AC05A00180A5801D06BFFFE559 -S3154001A30080A4E000AC10200080A5801D168000438B -S3154001A310030008009E1060041B155555032AAAAA7E -S3154001A3209A136155901062AAA72E600880A4E00096 -S3154001A3300480000EA2102000832DA0138200401835 -S3154001A340130008009410000F9610000D9810000895 -S3154001A350D620400AD8204009A204600280A4C01138 -S3154001A36014BFFFFC82006008AC05A00180A5801DDA -S3154001A37006BFFFF080A4E000AC10200080A5801D40 -S3154001A3801680002603155555B81061551B2AAAAAF1 -S3154001A39003000800A72E6008B61362AAB410600431 -S3154001A3A080A4E00004800019A2102000832DA01390 -S3154001A3B0A00040182F000800AA10001CA810001B7E -S3154001A3C0A410001AC2040012A204600280A0401523 -S3154001A3D002800004901020047FFF9B8C0100000046 -S3154001A3E0C2040017A004200880A040140280000483 -S3154001A3F0901020047FFF9B850100000080A4C011BE -S3154001A40014BFFFF101000000AC05A00180A5801D2D -S3154001A41006BFFFE580A4E00082102005C226200881 -S3154001A4201B200000DA26000081C7E00881E8000011 -S3154001A43081C3E0089144400080800000151001402E -S3154001A4409412A18090102000921022468180000033 -S3154001A450010000000100000001000000D002800060 -S3154001A4609122400881C3E00801000000818000007C -S3154001A470901020018090200180D020011280002C74 -S3154001A4800100000080D23FFF168000290100000034 -S3154001A49080DA3FFF9340000080A27FFF12800024B4 -S3154001A4A00100000080D23FFF9348000093326014C0 -S3154001A4B0920A600F80A260081280001D0100000010 -S3154001A4C08180000090102001945220049452A004EF -S3154001A4D09452A00496A2A0401280001501000000EB -S3154001A4E0818000009010200280A000003280001080 -S3154001A4F09052000880A220021280000D0100000047 -S3154001A500818000009010200280A000000100000020 -S3154001A510328000079052000880A220021280000477 -S3154001A5200100000081C3E0089010200181C3E008CA -S3154001A530901000001315555592126155A5824000A1 -S3154001A5400100000001000000010000009544800068 -S3154001A55080A2400A1280004301000000923A400066 -S3154001A560A58240000100000001000000010000003A -S3154001A5709544800080A2400A1280003A0100000002 -S3154001A5801100003F901223FFA5800000818000004A -S3154001A59001000000010000000100000093F23FFFAE -S3154001A5A09A10000993F23FFF93F23FFF93F23FFF68 -S3154001A5B093F23FFF93F23FFF93F23FFF93F23FFF48 -S3154001A5C09940000097448000153FFC009412A00872 -S3154001A5D080A2400A1280002380A2400B12800021F3 -S3154001A5E080A320071280001F113FFF809012200197 -S3154001A5F080A340081280001B1100003F901223FFE8 -S3154001A600A5800000818000000100000001000000DB -S3154001A6100100000093FA3FFF93FA3FFF93FA3FFF91 -S3154001A62093FA3FFF93FA3FFF93FA3FFF93FA3FFFB7 -S3154001A63093FA3FFF994000009744800080A260084A -S3154001A6401280000880A260081280000680A32000C4 -S3154001A650128000040100000081C3E008901020012F -S3154001A66081C3E00890100000818000009010200214 -S3154001A67080A00000328000109072000880A2200263 -S3154001A6801280000D01000000818000009010200220 -S3154001A69080A000000100000032800007907200088F -S3154001A6A080A22002128000040100000081C3E0085C -S3154001A6B09010200181C3E00890100000C0A0004026 -S3154001A6C081C3E00801000000110020409012200FD4 -S3154001A6D0D0A0004081C3E008010000009DE3BF987F -S3154001A6E07FFFE12D90102008A21000087FFFE12A8C -S3154001A6F09010200C833C60149B3A2014A13A2018F8 -S3154001A700A33C6018A20C6003A00C20038208600FD2 -S3154001A7109A0B600F8200600A9A03600AA2046001E4 -S3154001A720A0042001A32C40017FFFFFE5A12C000DD1 -S3154001A7307FFFE090901000117FFFE09C9010001089 -S3154001A7407FFFF98C010000007FFFFFE081E80000F8 -S3154001A7500100000098120009818200009AAB2FFF88 -S3154001A7600280002598880000992300099923000951 -S3154001A770992300099923000999230009992300097E -S3154001A780992300099923000999230009992300096E -S3154001A790992300099923000999230009992300095E -S3154001A7A0992300099923000999230009992300094E -S3154001A7B0992300099923000999230009992300093E -S3154001A7C0992300099923000999230009992300092E -S3154001A7D0992300099923000999230009992300091E -S3154001A7E099230009992300099923000081C3E008B0 -S3154001A7F091400000992300099923000999230009F2 -S3154001A80099230009992300099923000999230009ED -S3154001A81099230009992300099923000999230009DD -S3154001A82099230009992300009B400000992B200C95 -S3154001A8309B33601481C3E0089013400C1080000BD9 -S3154001A8408610200080924008168000088610000875 -S3154001A850809240001680000480920000168000031A -S3154001A86092200009902000089A924000128000052B -S3154001A8709610000891D0200281C3E0089010000094 -S3154001A88080A2C00D0A8000959410000003020000CA -S3154001A89080A2C0010A8000289810000080A34001D0 -S3154001A8A01A80000D841020019B2B600410BFFFFC11 -S3154001A8B0980320019A83400D1A8000078400A00165 -S3154001A8C0832860049B3360019A034001108000078E -S3154001A8D08420A00180A3400B0ABFFFF701000000BE -S3154001A8E0028000020100000084A0A00106800076DB -S3154001A8F0010000009622C00D941020011080000A2C -S3154001A90001000000952AA001068000059B336001E5 -S3154001A9109622C00D108000049402A0019602C00D3B -S3154001A9209422A00184A0A00116BFFFF78092C00027 -S3154001A930308000659B2B600480A3400B08BFFFFE5F -S3154001A9409883200102800065982320018092C000EF -S3154001A950952AA0040680002F9B33600196A2C00D64 -S3154001A960068000179B33600196A2C00D0680000B3E -S3154001A9709B33600196A2C00D068000059B336001A2 -S3154001A98096A2C00D108000509402A00F9682C00D71 -S3154001A9901080004D9402A00D9682C00D06800005E0 -S3154001A9A09B33600196A2C00D108000479402A00B14 -S3154001A9B09682C00D108000449402A0099682C00D73 -S3154001A9C00680000B9B33600196A2C00D06800005F0 -S3154001A9D09B33600196A2C00D1080003B9402A007F4 -S3154001A9E09682C00D108000389402A0059682C00D53 -S3154001A9F0068000059B33600196A2C00D108000328F -S3154001AA009402A0039682C00D1080002F9402A001EB -S3154001AA109682C00D068000179B33600196A2C00D39 -S3154001AA200680000B9B33600196A2C00D068000058F -S3154001AA309B33600196A2C00D108000239402BFFF94 -S3154001AA409682C00D108000209402BFFD9682C00DF3 -S3154001AA50068000059B33600196A2C00D1080001A46 -S3154001AA609402BFFB9682C00D108000179402BFF975 -S3154001AA709682C00D0680000B9B33600196A2C00DE5 -S3154001AA80068000059B33600196A2C00D1080000E22 -S3154001AA909402BFF79682C00D1080000B9402BFF559 -S3154001AAA09682C00D068000059B33600196A2C00DBB -S3154001AAB0108000059402BFF39682C00D10800002FB -S3154001AAC09402BFF198A3200116BFFFA28092C00055 -S3154001AAD0268000029602C0098090C00026800002AE -S3154001AAE09620000B81C3E0089010000B92100008DD -S3154001AAF09010200094102000961020008213C00070 -S3154001AB00400001E89E10400001000000921000083C -S3154001AB1003100142D00063F88213C0004000000ACE -S3154001AB209E104000010000009210000803100142EF -S3154001AB30D00063F88213C000400002559E104000C9 -S3154001AB40010000009DE3BF988206600B80A060165D -S3154001AB50A610001818800003A0087FF8A010201046 -S3154001AB6080A400199A4020008334201F8090400D14 -S3154001AB70128001B0B0102000400001B090100013C7 -S3154001AB8080A421F718800017993420093910014013 -S3154001AB908217222898040001F003200C80A6000C9D -S3154001ABA00280004E9F342003C206200494087FFC95 -S3154001ABB09A06000AC203600482106001D006200C86 -S3154001ABC0D2062008D2222008C2236004D022600C7B -S3154001ABD0400001A09010001310800196B006200895 -S3154001ABE080A32000128000289F34200339100140A1 -S3154001ABF09B2BE003821722289A0340011080000A0A -S3154001AC00F003600C94087FFC9622801080A2E00F2E -S3154001AC101480010980A2E00036BFFFE79A06000AC8 -S3154001AC20F006200C80A6000D32BFFFF7C2062004B5 -S3154001AC309E03E001251001409814A230F00320083C -S3154001AC4080A6000C0280005D833BE01FC206200403 -S3154001AC5094087FFC9622801080A2E00F1480009F0A -S3154001AC6080A2E000D823200C06800023D8232008A8 -S3154001AC709A06000AC20360048210600110BFFFD524 -S3154001AC80C22360048334200680A3200408BFFFD872 -S3154001AC909E00603880A3201408BFFFD59E03205B29 -S3154001ACA08334200C80A3205408BFFFD19E00606EE0 -S3154001ACB08334200F80A3215408BFFFCD9E006077C7 -S3154001ACC08334201280A3255408BFFFC99E00607CAF -S3154001ACD010BFFFC79E10207E98062008F003200C67 -S3154001ACE080A6000C32BFFFB2C206200410BFFFD2BD -S3154001ACF09E03E00280A2A1FF088000BE9B32A00312 -S3154001AD009732A00980A2E0002280001796172228D8 -S3154001AD108332A00680A2E004088000129A006038BF -S3154001AD2080A2E0140880000F9A02E05B8332A00CF7 -S3154001AD3080A2E0540880000B9A00606E8332A00F17 -S3154001AD4080A2E154088000079A0060778332A012FE -S3154001AD5080A2E554088000039A00607C9A10207E08 -S3154001AD6096172228832B60039000400BD2022008BD -S3154001AD7080A240082280010F99336002C20260041A -S3154001AD8082087FFC80A0400A28800007D002600C20 -S3154001AD90D202600880A2400832BFFFFAC2026004B4 -S3154001ADA0D002600CD026200CD2262008F022600C5E -S3154001ADB0F0222008833BE01F8330601E8203C001DE -S3154001ADC03910014083386002981722289A102001D1 -S3154001ADD0932B4001D803200480A2400C1880004BDD -S3154001ADE0AE172228808B00091280000D0310014006 -S3154001ADF0820BFFFC92024009808B000912800007FA -S3154001AE009E0060048210000C92024009808840092D -S3154001AE1002BFFFFE9E03E00403100140A210622818 -S3154001AE20A8100011832BE003980040119010000FE9 -S3154001AE309A10000C1080000AF003600C94087FFC05 -S3154001AE409622801080A2E00F1480007D80A2E0004F -S3154001AE503680008B9A06000AF006200C80A6000D6B -S3154001AE6032BFFFF7C20620049E03E001808BE00358 -S3154001AE7012BFFFF19A036008808A200398033FF8C6 -S3154001AE80028000D490023FFFC203200880A0400CFC -S3154001AE9002BFFFFB808A200392024009C2052004BB -S3154001AEA080A24001188000183910014080A260003C -S3154001AEB0128000068088400910800014AE172228AF -S3154001AEC09E03E0048088400922BFFFFE92024009AA -S3154001AED010BFFFD6832BE003821420019406001095 -S3154001AEE0C2262004D423200CD42320088212E00158 -S3154001AEF0D622800BD822A008C222A00410BFFF355B -S3154001AF00D822A00CAE172228F005E008C20620047C -S3154001AF10AA087FFC80A540109A4020009625401043 -S3154001AF2080A2E00F148000428210200180934001EC -S3154001AF300280002703100143DA0061282D100140E9 -S3154001AF409A04000DC205A220A810001580A07FFF1B -S3154001AF50A203601002800004A406001582046FFF5C -S3154001AF60A208700090100013400000C0921000111A -S3154001AF7080A23FFF02800008B210000880A20012A2 -S3154001AF801A8000463B10014380A6001722800044E8 -S3154001AF90C20760F882172228D8006008DA03200425 -S3154001AFA09A0B7FFC80A340109840200096234010C6 -S3154001AFB080A2E00F0480000382102001821020004D -S3154001AFC08093000112800098010000009817222802 -S3154001AFD0F003200882142001C22620049A0600109C -S3154001AFE08212E001C223600410BFFEFADA23200870 -S3154001AFF098033FF8832B60039000400C9B3360021B -S3154001B000821020018328400DD2022008DA03200451 -S3154001B0109A134001D026200CD2262008F022600C3B -S3154001B020DA23200410BFFF64F022200810BFFFC0BE -S3154001B0308210200010BFFEFF9E03FFFFD006200CAA -S3154001B040D20620089A142001940600108214A230D8 -S3154001B050D2222008D022600CDA262004D420600CAB -S3154001B060D42060089A12E001D622800BC222A008A1 -S3154001B070DA22A00410BFFED7C222A00CC20360048C -S3154001B08082106001D006200CD2062008C22360043B -S3154001B09010BFFECFD2222008C20760F882004011BD -S3154001B0A080A640120280004FC22760F8C205A22046 -S3154001B0B080A07FFF02800045C20760F89A264012B1 -S3154001B0C08200400DC22760F89A8E60070280000513 -S3154001B0D0A410200082102008A420400DB206401280 -S3154001B0E09A0640119A0B6FFF030000048220400D1F -S3154001B0F0A4048001901000134000005C92100012DD -S3154001B10080A23FFF2280003FA41020008222001926 -S3154001B1109000401282172228DA0760F89A034012FB -S3154001B12080A60001F2206008DA2760F80280003725 -S3154001B1308212200180A5600F38800005C226600476 -S3154001B1408210200110BFFF94C2266004C20620046B -S3154001B1509A057FF4A80B7FF882086001821040149B -S3154001B160C22620049A06001482102005C2236008D4 -S3154001B17080A5200F18800027C223600419100143BF -S3154001B180DA0760F8C203212480A340013880000217 -S3154001B190DA23212419100143C203212080A340014F -S3154001B1A038BFFF7DDA23212010BFFF7C821722287A -S3154001B1B09A102001C202E0049B2B400C8210400DE4 -S3154001B1C010BFFEF9C222E00410BFFFC0F225A22043 -S3154001B1D0C20460048228400910BFFF30C2246004C3 -S3154001B1E0808E6FFF12BFFFB3C205A22090044014A8 -S3154001B1F0DA05E0088212200110BFFFE1C223600494 -S3154001B20010BFFFC39010001910BFFFDDC2266004B6 -S3154001B210920620084000009E9010001310BFFFD9EF -S3154001B220191001434000000B90100013B01020008C -S3154001B23081C7E00881E800001110014190122230D7 -S3154001B2408213C0004000042A9E1040000100000005 -S3154001B25011100141901222308213C0004000043C7B -S3154001B2609E104000010000009DE3BF98211001445B -S3154001B270C02421A0400002499010001980A23FFF3E -S3154001B28012800006C20421A080A060000280000353 -S3154001B29001000000C226000081C7E00891E80008CD -S3154001B2A09DE3BF9823100143400004119014612C83 -S3154001B2B003100072E0006278D004214880A2200089 -S3154001B2C02280002D9004214CD602200480A2E01F4A -S3154001B2D01480001D0100000080A620001280000B92 -S3154001B2E094022088832AE0029A02E0018200400803 -S3154001B2F0DA222004F2206008400004159014612CE3 -S3154001B30010800022B0102000821020019328400BAB -S3154001B310992AE002DA02A1009A1340098203000A3F -S3154001B320F6206080F422800C80A6200212BFFFEE38 -S3154001B330DA22A100C202A1048210400910BFFFEA2D -S3154001B340C222A1047FFFFDF29010219080A220002D -S3154001B3500280000B96102000C2042148C222000040 -S3154001B360D0242148C0222004C022218810BFFFDBFF -S3154001B370C022218C10BFFFD5D0242148400003F4C0 -S3154001B3809014612CB0103FFF81C7E00881E80000AE -S3154001B3909DE3BF987FFFFFA990100018031001405D -S3154001B3A0A2106228DA046008C2036004A0087FFC88 -S3154001B3B0B2240019B2066FEFB20E7000B2067000E9 -S3154001B3C09210200080A66FFF0480000A901000189A -S3154001B3D07FFFFFA601000000C20460088200401002 -S3154001B3E080A04008922000190280000590100018A4 -S3154001B3F07FFFFF98B0102000308000237FFFFF9B26 -S3154001B400901000188224001980A23FFF821060012B -S3154001B41092102000191001430280000B9010001871 -S3154001B420DA046008C2236004C20320F8822040196E -S3154001B430901000187FFFFF87C22320F8108000126A -S3154001B440B01020017FFFFF8901000000981000081D -S3154001B450D6046008A023000B9010001880A4200F8A -S3154001B46004BFFFE4B214200103100140DA00622058 -S3154001B4709A23000D03100143DA2060F810BFFFDD67 -S3154001B480F222E00481C7E00881E800009DE3BF980D -S3154001B49080A660000280009DA41000187FFFFF6710 -S3154001B4A090100018A0067FF8D6042004900AFFFEEB -S3154001B4B01910014094040008A2132228DA02A004BC -S3154001B4C0C204600880A0400A028000449E0B7FFCB3 -S3154001B4D0808AE001DE22A0041280000CB010200018 -S3154001B4E0F2067FF8A024001982046008DA042008D5 -S3154001B4F080A340010280007D90020019D204200CF5 -S3154001B500DA226008D223600C8202800FDA006004DE -S3154001B510808B60011280000A8212200180A62000E1 -S3154001B520028000229002000FDA02A008D202A00C8B -S3154001B530DA226008D223600C82122001C224200440 -S3154001B54080A6200002800005D0240008B010001219 -S3154001B5507FFFFF4081E8000080A221FF188000366E -S3154001B560973220099B32200398132228832B6003AC -S3154001B5709200400C9B336002821020018328400DCB -S3154001B580D6026008DA0320049A134001D224200C23 -S3154001B590D6242008E022E00CDA232004E0226008C9 -S3154001B5A010BFFFECB010001203100140DA02A008F0 -S3154001B5B08210623080A3400132BFFFDED202A00C6E -S3154001B5C0E023600CE0236008DA242008DA24200C0A -S3154001B5D010BFFFDAB0102001808AE0011280000915 -S3154001B5E09002000FF2067FF8A0240019D204200C25 -S3154001B5F0D6042008D622600890020019D222E00C17 -S3154001B60003100140DA00622498122001E024600808 -S3154001B61080A2000D0ABFFFCFD824200403100143A6 -S3154001B620D20061287FFFFF5B901000127FFFFF0968 -S3154001B63081E8000080A2E000028000169B322003D0 -S3154001B6408332200680A2E004088000129A00603806 -S3154001B65080A2E0140880000F9A02E05B8332200C3E -S3154001B66080A2E0540880000B9A00606E8332200F5E -S3154001B67080A2E154088000079A0060778332201245 -S3154001B68080A2E554088000039A00607C9A10207ECF -S3154001B69094132228832B60039200400AD602600845 -S3154001B6A080A2C0090280001399336002C202E004FD -S3154001B6B082087FFC80A0400828800007D202E00C67 -S3154001B6C0D602E00880A2C00932BFFFFAC202E004F6 -S3154001B6D0D202E00CD224200CD6242008E022E00C31 -S3154001B6E010BFFFB0E022600810BFFF88B0102001F4 -S3154001B6F09A102001C202A0049B2B400C8210400DDF -S3154001B70010BFFFF5C222A00481C7E00881E800000E -S3154001B7109DE3BF98D206400080A2600012800004DB -S3154001B720901000187FFFFF5A81E800007FFFFFF964 -S3154001B730010000007FFFFF5681E800000100000084 -S3154001B7409DE3BF9803100142DA0063F880A6000D1D -S3154001B7500280004101000000D206204C80A2600018 -S3154001B7601280001CA0102000D206214880A2600051 -S3154001B7702280000FD2062054A006214C80A2401000 -S3154001B7802280000BD206205410800005B210000919 -S3154001B790F20640007FFFFF3E9010001880A400197A -S3154001B7A012BFFFFC92100019D206205480A26000FD -S3154001B7B01280002501000000C206203880A06000EA -S3154001B7C0028000250100000010800017C206203CBF -S3154001B7D0832C2002F202400180A660002280000BE9 -S3154001B7E0A004200192100019F20640007FFFFF28B5 -S3154001B7F09010001880A6600012BFFFFC921000193D -S3154001B800D206204CA004200180A4200E04BFFFF2E2 -S3154001B810832C20027FFFFF1E9010001810BFFFD41B -S3154001B820D20621489FC0400090100018F20622E03F -S3154001B83080A6600002800008010000007FFFFFB57E -S3154001B84081E800007FFFFF129010001810BFFFDC57 -S3154001B850C206203881C7E00881E800009DE3BF9811 -S3154001B86080A620000280001D03100142E406214803 -S3154001B87080A4A00022800013C206203CE204A0045A -S3154001B880A2847FFF0C80000A832C60028200401252 -S3154001B890A0006008C20400009FC04000A0043FFC15 -S3154001B8A0A2847FFF3CBFFFFDC2040000E404800088 -S3154001B8B080A4A00032BFFFF3E204A004C206203CEC -S3154001B8C080A0600002800007010000009FC0400088 -S3154001B8D0901000183080000310BFFFE5F00063F8B8 -S3154001B8E081C7E00881E800001080000B8610200027 -S3154001B8F08092400816800008861A400880924000CF -S3154001B90016800004809200001680000392200009F0 -S3154001B910902000089A924000128000059610000877 -S3154001B92091D0200281C3E0089010000080A2C00D92 -S3154001B9300A800095941000000302000080A2C00115 -S3154001B9400A8000289810000080A340011A80000D4B -S3154001B950841020019B2B600410BFFFFC980320013B -S3154001B9609A83400D1A8000078400A0018328600451 -S3154001B9709B3360019A034001108000078420A00197 -S3154001B98080A3400B0ABFFFF70100000002800002BE -S3154001B9900100000084A0A00106800076010000009D -S3154001B9A09622C00D941020011080000A010000006B -S3154001B9B0952AA001068000059B3360019622C00DA1 -S3154001B9C0108000049402A0019602C00D9422A001A9 -S3154001B9D084A0A00116BFFFF78092C00030800065A9 -S3154001B9E09B2B600480A3400B08BFFFFE9883200178 -S3154001B9F002800065982320018092C000952AA00408 -S3154001BA000680002F9B33600196A2C00D0680001769 -S3154001BA109B33600196A2C00D0680000B9B336001EB -S3154001BA2096A2C00D068000059B33600196A2C00D0B -S3154001BA30108000509402A00F9682C00D1080004DD8 -S3154001BA409402A00D9682C00D068000059B336001CD -S3154001BA5096A2C00D108000479402A00B9682C00D9D -S3154001BA60108000449402A0099682C00D0680000B06 -S3154001BA709B33600196A2C00D068000059B33600191 -S3154001BA8096A2C00D1080003B9402A0079682C00D7D -S3154001BA90108000389402A0059682C00D06800005EC -S3154001BAA09B33600196A2C00D108000329402A00320 -S3154001BAB09682C00D1080002F9402A0019682C00D7F -S3154001BAC0068000179B33600196A2C00D0680000BCD -S3154001BAD09B33600196A2C00D068000059B33600131 -S3154001BAE096A2C00D108000239402BFFF9682C00D1E -S3154001BAF0108000209402BFFD9682C00D068000058D -S3154001BB009B33600196A2C00D1080001A9402BFFBC0 -S3154001BB109682C00D108000179402BFF99682C00D1F -S3154001BB200680000B9B33600196A2C00D068000057E -S3154001BB309B33600196A2C00D1080000E9402BFF7A0 -S3154001BB409682C00D1080000B9402BFF59682C00DFF -S3154001BB50068000059B33600196A2C00D108000054A -S3154001BB609402BFF39682C00D108000029402BFF189 -S3154001BB7098A3200116BFFFA28092C0002680000232 -S3154001BB809422A0018090C000268000029420000AE1 -S3154001BB9081C3E0089010000A19100144DA0321A478 -S3154001BBA080A360001280000682034008031001440E -S3154001BBB09A1061B8DA2321A482034008C22321A442 -S3154001BBC081C3E0089010000DA7500000AE1000019F -S3154001BBD08334E00129100143E805203CA92CC01417 -S3154001BBE08215000181E000008190400001000000C3 -S3154001BBF00100000001000000E03BA000E43BA0087A -S3154001BC00E83BA010EC3BA018F03BA020F43BA02859 -S3154001BC10F83BA030FC3BA03881E8000082100017B9 -S3154001BC2081C4400081CC8000010000000100000079 -S3154001BC3001000000A7500000A92CE0012B10014390 -S3154001BC40EA05603CAB34C015AA1540148195400005 -S3154001BC5001000000010000000100000081E8000031 -S3154001BC6081E80000E01BA000E41BA008E81BA0102F -S3154001BC70EC1BA018F01BA020F41BA028F81BA03039 -S3154001BC80FC1BA03881E0000081E0000081C4400037 -S3154001BC9081CC8000A750000029100071ADC5220457 -S3154001BCA00100000027100143A614E01CE024C00057 -S3154001BCB0818C2020010000000100000001000000ED -S3154001BCC09DE3BFA09DE3BFA09DE3BFA09DE3BFA0B1 -S3154001BCD09DE3BFA09DE3BFA09DE3BFA081E8000017 -S3154001BCE081E8000081E8000081E8000081E8000069 -S3154001BCF081E8000081E8000027100143A614E01CFA -S3154001BD00C024C000E203A068A4046004E223A06446 -S3154001BD10E423A06810800262AC10000029100143A0 -S3154001BD20A8152000C2252000C8252004E0252010A2 -S3154001BD30E2252014E4252018E825201C81E800008E -S3154001BD408348000082106F00818860200100000056 -S3154001BD50010000000100000009100143C801203C18 -S3154001BD6081E000008821200180A920FF0280000394 -S3154001BD70010000000100000080A1000012BFFFF990 -S3154001BD800100000009100143C801203C81E8000080 -S3154001BD9080A920FF0280000301000000010000008D -S3154001BDA08821200180A1000012BFFFF90100000097 -S3154001BDB081E0000029100143A8152000C805200490 -S3154001BDC0C2052000E0052010E2052014E4052018F4 -S3154001BDD0C025201C818C20000100000001000000CC -S3154001BDE00100000081C4800081CCA004A0142F0072 -S3154001BDF0818C0000010000000100000001000000EC -S3154001BE0081C4800081CCA00480A660021280000516 -S3154001BE10A8142F00818D0000B01420203080001F0F -S3154001BE2080A6600312800006A80E2F00AA2C2F00C0 -S3154001BE30A8154014818D00003080001880A660044A -S3154001BE4012800008A9480000A8152040818D0000F5 -S3154001BE500100000001000000010000003080000FD9 -S3154001BE6080A6600512800008A9480000A82D204040 -S3154001BE70818D00000100000001000000010000006A -S3154001BE803080000680A66006128000030100000093 -S3154001BE9030BFFFA391D0200081C4800081CCA00493 -S3154001BEA09210200381C3E00891D020029210200213 -S3154001BEB081C3E00891D020029210200681C3E00898 -S3154001BEC091D0200281C3E0080100000081C3E0084F -S3154001BED00100000081C3E00801000000AE25A0106A -S3154001BEE0A75000002D10006FAC15A2F0291000716B -S3154001BEF081C523AC01000000111001439012202896 -S3154001BF00D202000092026001D2220000932DE00885 -S3154001BF10902C2F00921200091110014390122020FB -S3154001BF20D002000080A000082280000292126F0019 -S3154001BF30818A60200100000001000000010000002C -S3154001BF4090100017400000319203A06092142F0018 -S3154001BF50818A60200100000001000000010000000C -S3154001BF601110014390122028D20200009222600152 -S3154001BF70D22200001080022DAC1000001B1001449B -S3154001BF809A136030912A2002C2034008C222600CF3 -S3154001BF9081C3E008D22340089DE3BF9803100144C2 -S3154001BFA082106030992E60021B100143972E600467 -S3154001BFB0D800400C9A136230901000199202C00DBD -S3154001BFC080A6601F1480000F82102000108000069A -S3154001BFD080A320002280000AC2024000D803200C20 -S3154001BFE080A3200012BFFFFC80A300097FFFFFE46E -S3154001BFF0F02240001080000382102000F022400011 -S3154001C00081C7E00891E800019DE3BF981B100143F9 -S3154001C0108213602CD800600480A30018028000447B -S3154001C020C203602C80A6200022800002B010000CC2 -S3154001C03003100144A32E200282106030E00040111B -S3154001C04080A420000280003D0310014310800012AD -S3154001C050A41061ACD2042008941000199FC30000BB -S3154001C0609010001803100143C20061A480A0600033 -S3154001C0701280002B01000000C204801182007FFF64 -S3154001C080C2248011E004200C80A420000280002BF1 -S3154001C09001000000D804000080A3200022BFFFFB5E -S3154001C0A0E004200C03100143DA00622C80A36000F7 -S3154001C0B0128000089610001203100143821061ACF1 -S3154001C0C0DA00401180A3600032BFFFF0E004200C8B -S3154001C0D0DA02C011031001439A036001C20061A84C -S3154001C0E080A0600002BFFFDCDA22C0119FC0400081 -S3154001C0F001000000D8040000D20420089410001961 -S3154001C1009FC300009010001803100143C20061A4B0 -S3154001C11080A0600022BFFFDAC20480119FC04000A8 -S3154001C1200100000010BFFFD6C2048011DA0060C0D2 -S3154001C13010BFFFBDB00B601F81C7E00881E800005A -S3154001C1408C10000FA74800008B34E0188A09600F55 -S3154001C15080A160030280000C0B1001438A116034F8 -S3154001C1600920000088112070C82140000B100143AE -S3154001C1708A1160500920000088112040C8214000E2 -S3154001C180108000399010200192102006400001DDF8 -S3154001C1900100000080A00008028000330100000079 -S3154001C1A0C2022010113FFC0082084008110003FC26 -S3154001C1B08410400890100002921020019410200C27 -S3154001C1C0400001E60100000080A000080280002630 -S3154001C1D001000000400001F6921000010B100143DE -S3154001C1E08A116034D2214000901000029210200141 -S3154001C1F094102011400001D90100000080A00008E0 -S3154001C2000280001901000000400001E9921000017E -S3154001C210920260100B1001438A116050D2214000F6 -S3154001C22090100002921020019410200D400001CB85 -S3154001C2300100000080A000080280000B0100000000 -S3154001C240400001DB921000010B1001438A11602C62 -S3154001C250D2214000D40260109532A010940AA00F5A -S3154001C260D42160049E10000681C3E008010000004D -S3154001C27003100143821060488210200191D02000B2 -S3154001C28081C3E008010000009DE3BF98031001440B -S3154001C290C20060CC901000189210001980A0600076 -S3154001C2A002800005B01020009FC040000100000040 -S3154001C2B0B010000881C7E00881E800009DE3BF98FF -S3154001C2C003100144C20060C89010001880A06000AD -S3154001C2D002800005B01020009FC040000100000010 -S3154001C2E0B010000881C7E00881E800009DE3BF98CF -S3154001C2F003100144C20060C09010001880A0600085 -S3154001C30002800005B01020009FC0400001000000DF -S3154001C310B010000881C7E00881E800009DE3BF989E -S3154001C32003100144C20060C49010001880A0600050 -S3154001C33002800005B01020009FC0400001000000AF -S3154001C340B010000881C7E00881E800009DE3BF986E -S3154001C35003100144C20060BC9010001880A0600028 -S3154001C36002800005B01020009FC04000010000007F -S3154001C370B010000881C7E00881E800009DE3BF983E -S3154001C38003100144C20060B89010001880A06000FC -S3154001C39002800005B01020009FC04000010000004F -S3154001C3A0B010000881C7E00881E800009DE3BF980E -S3154001C3B003100144C20060B49010001880A06000D0 -S3154001C3C002800005B01020009FC04000010000001F -S3154001C3D0B010000881C7E00881E800009DE3BF98DE -S3154001C3E003100144C20060B0901000189210001969 -S3154001C3F080A0600002800005B01020009FC0400070 -S3154001C40001000000B010000881C7E00881E8000083 -S3154001C4100100000003100071821060E09FC04000DF -S3154001C4200100000003100000821060008198400066 -S3154001C43003100071821061649FC04000010000003A -S3154001C44003100071821060D09FC0400001000000BF -S3154001C4508B4800008B3160188A09600380A1600314 -S3154001C46012800007010000008B4440008B31601CA4 -S3154001C47080A1400012800006010000007FFFFF31CD -S3154001C480010000007FFF9339010000009C23A0407A -S3154001C4907FFF92DC010000008210200191D0200034 -S3154001C4A00100000029000004A68C0014328000031C -S3154001C4B0A02C001491D02000818C000001000000C6 -S3154001C4C0010000000100000081C4800081CCA0046D -S3154001C4D081C3E0080100000081C1E00801000000BD -S3154001C4E0A74800008B34E0188A09600380A16003E5 -S3154001C4F0128000080100000021100143A0142044CD -S3154001C500A2102003E22400008B4440001080000862 -S3154001C51021100143A0142044A2102002E22400006D -S3154001C52021200000E60420248B34E0148A09601F90 -S3154001C53027100143A614E03CCA24C0008A016001C9 -S3154001C54027100143A614E038CA24C000271001432E -S3154001C550A614E0408A216002CA24C00081C3E008D3 -S3154001C5600100000081C3E00801000000834800008B -S3154001C570833060188208600380A060031280000641 -S3154001C5800100000083444000050000088228400263 -S3154001C590A3804000881000000910007181C1201459 -S3154001C5A0010000009DE3BF98031000721B1000724A -S3154001C5B0A01062609A13626080A4000D1A80001078 -S3154001C5C0A210000D10800006C204000080A40011D4 -S3154001C5D01A80000B01000000C204000080A0600028 -S3154001C5E002BFFFFBA00420049FC0400001000000E1 -S3154001C5F080A400112ABFFFFAC204000081C7E008E7 -S3154001C60081E80000AA27A0B0E0256060E2256064C9 -S3154001C610E4256068C2256074C43D6078C83D608089 -S3154001C620CC3D608885400000C425606CF03D60903B -S3154001C630F43D6098F83D60A0FC3D60A8A81020013B -S3154001C640A92D0010808D0013028000130100000007 -S3154001C6508534E00107100143C600E03CA72CC00326 -S3154001C6608414C0028408A0FF81E000008190A000EC -S3154001C670E03BA000E43BA008E83BA010EC3BA0183F -S3154001C680F03BA020F43BA028F83BA030FC3BA0386F -S3154001C69081E8000081C5A0089C10001505100143E2 -S3154001C6A08410A1A0C400800080A080000280000404 -S3154001C6B0010000009FC080009203A060818C200091 -S3154001C6C0821020028328401005100143C400A0387F -S3154001C6D085304002821040028550000080888001EA -S3154001C6E0028000208328A00107100143C600E03CD8 -S3154001C6F08530800382104002820860FF819060008D -S3154001C700C203A06C81806000F01BA090F41BA0982E -S3154001C710F81BA0A0FC1BA0A8C203A074C41BA07850 -S3154001C720C81BA080CC1BA088E003A060E203A064E4 -S3154001C730E403A06881E80000E01BA000E41BA00818 -S3154001C740E81BA010EC1BA018F01BA020F41BA0288E -S3154001C750F81BA030FC1BA0381080000F81E00000C0 -S3154001C760C203A06C81806000F01BA090F41BA098CE -S3154001C770F81BA0A0FC1BA0A8C203A074C41BA078F0 -S3154001C780C81BA080CC1BA088E003A060E203A06484 -S3154001C790E403A068818C2000010000000100000034 -S3154001C7A00100000081C4400081CC8000AA27A0B0CE -S3154001C7B0C2256074C43D6078C83D6080CC3D6088C8 -S3154001C7C085400000C425606CA8102001A92D0010E9 -S3154001C7D0808D001302800013010000008534E001C2 -S3154001C7E007100143C600E03CA72CC0038414C002D5 -S3154001C7F08408A0FF81E000008190A000E03BA000FA -S3154001C800E43BA008E83BA010EC3BA018F03BA0207D -S3154001C810F43BA028F83BA030FC3BA03881E800005F -S3154001C82081C5A0089C100015051001438410A1A0E4 -S3154001C830C400800080A08000028000040100000046 -S3154001C8409FC080009203A060818C2000821020024C -S3154001C8508328401005100143C400A03885304002AA -S3154001C86082104002855000008088800102800019B4 -S3154001C8708328A00107100143C600E03C85308003B0 -S3154001C88082104002820860FF81906000C203A06C62 -S3154001C89081806000C203A074C41BA078C81BA0801D -S3154001C8A0CC1BA08881E80000E01BA000E41BA00887 -S3154001C8B0E81BA010EC1BA018F01BA020F41BA0281D -S3154001C8C0F81BA030FC1BA0381080000881E0000056 -S3154001C8D0C203A06C81806000C203A074C41BA0780F -S3154001C8E0C81BA080CC1BA088818C200001000000C1 -S3154001C8F0010000000100000081C4400081CC80009D -S3154001C900821000089A10380096102000912AE005FE -S3154001C91098034008D40340089132A01880A2000130 -S3154001C920328000089602E0019132A00C900A2FFF56 -S3154001C93080A20009028000079410000C9602E001D3 -S3154001C94080A2E00728BFFFF3912AE005941020005A -S3154001C95081C3E0089010000A821000089810200058 -S3154001C960912B20039A004008D60040089132E018E6 -S3154001C97080A2000932800008980320019132E00C20 -S3154001C980900A2FFF80A2000A028000079610000D30 -S3154001C9909803200180A3200F28BFFFF3912B20038A -S3154001C9A09610200081C3E0089010000BD4022004A9 -S3154001C9B0173FFC00920A400B900A800B9132200CE3 -S3154001C9C0921240081100003F901223F0940A800809 -S3154001C9D0952AA0049412800B920A400A81C3E0086A -S3154001C9E0901000099DE3BF980310007282106248BF -S3154001C9F0DA007FFC80A37FFF02800009A0007FFC54 -S3154001CA008210000D9FC04000A0043FFCC2040000FC -S3154001CA1080A07FFF12BFFFFC0100000081C7E00834 -S3154001CA2081E800009DE3BF9881C7E00881E80000E6 -S3154001CA3000000000000000000000000000000000AF -S3154001CA4000000002FFFFFFFF0000000000000000A1 -S3154001CA5000000002FFFFFFFF000000000000000091 -S3154001CA6040080000000000003CD203AF9EE7561686 -S3154001CA703E7AD7F29ABCAF48400506A800000000AE -S3154001CA80430000009DE3BFA07FFF919B0100000092 -S3154001CA907FFFFFD50100000081C7E00881E8000063 -S3154001CAA09DE3BFA07FFF91760100000081C7E008AA -S3154001CAB081E80000000000000000000000000000C6 -S315400200000000000100000000000000004001CA5844 +S3154001319085A00921C523000081C3E008D0030000B2 +S315400131A01910008098132120D0230000D223200833 +S315400131B0C1030000C303200885A009A1C52300005F +S315400131C081C3E008D0030000191000809813212024 +S315400131D0D0230000C103000083A00520C3230000C3 +S315400131E081C3E008D00300001310008092126138B9 +S315400131F0C51A6008C11A400089A0084091A108C2B9 +S3154001320095A209C495A2894281C3E008D53A000036 +S315400132101310008092126158C1024000C30260043B +S3154001322085A0082087A088A189A0C9A289A10921D2 +S3154001323081C3E008C92200009610200213100080C5 +S3154001324092126138151000809412A138D5024000BF +S31540013250D7028000D5220000D8020000131000805A +S315400132609212615896A2E00112BFFFF901000000D7 +S3154001327081C3E008010000001310008092126138FA +S31540013280151000809412A158C1028000C51A601021 +S3154001329083A0082089A088C08BA109A18DA10942DC +S315400132A08FA1492691A0054681C3E008D13A000085 +S315400132B01110008090122130C11A0000C51A000079 +S315400132C0C91A0000CD1A0000D11A0000D51A000013 +S315400132D0D91A0000DD1A0000E11A0000E51A0000C3 +S315400132E0E91A0000ED1A0000F11A0000F51A000073 +S315400132F0F91A0000FD1A000081C3E0080100000030 +S3154001330029100080A81520F827100080A614E1682E +S31540013310C12CC000E604C000A134E00EA00C200779 +S31540013320A0A42002AE1020002D100080AC15A1688B +S31540013330AE05E001AC05A008C1358000C12D0000F5 +S31540013340EA050000AB35600DAA8D600112BFFFF999 +S3154001335001000000808000100280002F2B3C1FFFDF +S31540013360AA1563FFA60CC015E6250000C10D000095 +S315400133702B100080AA1561742D10004CAC15A3E0EA +S31540013380AE25E001E0054000E025800081D820001F +S3154001339001000000010000000100000001000000E2 +S315400133A001000000010000000100000001000000D2 +S315400133B001000000010000000100000001000000C2 +S315400133C001000000010000000100000001000000B2 +S315400133D001000000010000000100000001000000A2 +S315400133E00000000080A5C00012BFFFE6AA056008E4 +S315400133F0C12D0000E60500002B03C000A614C01530 +S31540013400E6250000C10D000081C4400081CC80004A +S315400134100100000081C4800081CCA00401000000AD +S315400134200100000081C3E00891580000010000003E +S3154001343011100080901220F8C10A0000C02200003D +S31540013440C10A0000C12A0000D40200001300038013 +S31540013450942A800980A0000A3280004D90102003F2 +S315400134601303E000D223BFA0C023BFA4C10BBFA05A +S31540013470C023BFA0151000809412A0E8C1028000AD +S315400134800100000001000000C10BBFA0C10BBFA499 +S3154001349083A00520C12BBFA0D003BFA0808A2200F4 +S315400134A02280003B901020049010200015100080CF +S315400134B09412A108C5028000C902A008D102A00C3D +S315400134C013100080921260E8C70240008DA0894423 +S315400134D081A98AC80100000003800005010000009F +S315400134E0901020011080002A01000000C5028000D2 +S315400134F0C902A008D102A00C13100080921260E804 +S31540013500CB0240008DA0894481A98AC801000000F0 +S315400135100380000501000000901020011080001C6E +S315400135200100000025100080A414A0F0C11C8000F9 +S31540013530C51C800080A000003280000685A008C01E +S3154001354081A80AC2010000001380000301000000A7 +S31540013550901020050100000025100080A414A0F061 +S31540013560C11C8000C51C800080A000000100000035 +S315400135703280000685A008C081A80AC20100000069 +S315400135801380000301000000901020070100000095 +S3154001359081C3E0080100000090102001954400001D +S315400135A09532A01E940AA00380A2800002800040AA +S315400135B09010200080A2A0021680003D13100080CA +S315400135C092126198C11A4000C51A6008FD0260183E +S315400135D095A0003E99A0003E9DA0003E170000C068 +S315400135E09612E078A182C0000100000001000000AF +S315400135F00100000001000000010000000100000080 +S3154001360081A0002083A0002195A0002A99A0002C2A +S315400136109DA0002E170000C09612E07CA182C0003A +S31540013620010000000100000001000000010000004F +S31540013630010000000100000085A0002287A00023B0 +S31540013640A18000000100000001000000010000000F +S3154001365001000000010000000100000089A00842AD +S31540013660A9A2883ED93A4000DD224000CD1A601019 +S31540013670D102600881A90A46010000000380000CBE +S3154001368081AD0A280100000003800009934400002F +S315400136909332601B920A60079010200080A2A0011D +S315400136A002800003902260079022600481C3E008F3 +S315400136B001000000C12BBFA081C3E008D003BFA019 +S315400136C0D023BFA081C3E008C10BBFA00100000009 +S315400136D09DE3BF6040001B94B0102000833A200A4E +S315400136E08208600380A0600102800004010000009E +S315400136F081C7E00881E800007FFFB6C39010200D26 +S31540013700050C40290723CD1B8410A0068610E09B9B +S31540013710C027BFF0C027BFF4C43FBFF8C027BFD002 +S31540013720C027BFD4C027BFC87FFFFF3FC027BFCC3C +S31540013730820A3000821060808400600407280400F9 +S315400137408610E00F0910004CC62040008811230066 +S3154001375007100000882100028939200286110003E2 +S31540013760C620600425100080032784008210601063 +S315400137707FFFFED0C220A0047FFFFFD21103E000ED +S3154001378090102000C024A1687FFFFDD001000000F9 +S31540013790809200091280000601000000C204A1685F +S315400137A080A0600002800004010000007FFFB69DFA +S315400137B09010200B7FFFFDC590103FFA03300600A5 +S315400137C080A2000102800CF880A260007FFFB695BE +S315400137D09010200B7FFFFDBD9010201403100D00AB +S315400137E080A200010280113680A260007FFFB68D63 +S315400137F09010200B7FFFFDB590102062031016201C +S3154001380080A200010280112780A260007FFFB68559 +S315400138109010200B7FFFFDB5901020050310280066 +S3154001382080A2000112800CB501000000C204A1680B +S3154001383080A0600012800CB1010000007FFFFFA153 +S315400138401103C000111C00007FFFFDB09210200043 +S31540013850031FFFFF821063FF80A200011280000B4D +S3154001386001000000C404A168030000708210601FBB +S3154001387084088001030000108210601080A080013E +S3154001388002800005113C00007FFFB6669010200CB7 +S31540013890113C00007FFFFD9D921020000320000097 +S315400138A080A200011280000B01000000C404A1683F +S315400138B0030000708210601F84088001030000101D +S315400138C08210601080A08001028000040100000087 +S315400138D07FFFB6549010200CC024A16890102000A0 +S315400138E07FFFFD8A9210200080A2200012800006F0 +S315400138F003100080C200616880A06000028000055C +S31540013900110144007FFFB6479010200C110144007D +S3154001391013284000901223027FFFFD7C9212600122 +S3154001392080A220001280000601000000C204A168A6 +S3154001393080A06000228000051111FFFF7FFFB6398C +S315400139409010200C1111FFFF7FFFFD78901223FF8D +S315400139500300007F821063FF80A2000112800C6386 +S3154001396001000000C204A16880A0600012800C5FC3 +S3154001397001000000271000807FFFFD64D01CE1E0BC +S31540013980031FFFFF821063FF80A200011280000B1C +S3154001399001000000C404A168030000708210601F8A +S315400139A084088001030000108210601080A080010D +S315400139B002800005351000807FFFB61A9010200C5A +S315400139C035100080D01EA1D0C024A1687FFFFD4FD5 +S315400139D0010000000320000080A200011280000BBC +S315400139E003100080C4006168030000708210601FEC +S315400139F084088001030000108210601080A08001BD +S31540013A00028000052B1000807FFFB6069010200C27 +S31540013A102B100080D01D61F0C024A1687FFFFD3BC3 +S31540013A2001000000031FFFFF821063FF80A2000117 +S31540013A301280000B03100080C4006168030000700F +S31540013A408210601F840880010300001082106010FC +S31540013A5080A08001028000052F1000807FFFB5F114 +S31540013A609010200C2F100080D01DE1B8C024A16811 +S31540013A707FFFFD2601000000C204A1688330600E6D +S31540013A808208600380A060020280000401000000F9 +S31540013A907FFFB5E49010200C7FFFFF0A1103C000A1 +S31540013AA011115804C024A1687FFFFD2890122234C9 +S31540013AB003102B008210624680A200010280107121 +S31540013AC0032000007FFFB5D79010200D113C02AFB7 +S31540013AD07FFFFD1E901220D1033180558210639ADB +S31540013AE080A200010280105F030800007FFFB5CD70 +S31540013AF09010200D1111FC007FFFFD1C921020003B +S31540013B00031FE00080A200011280000B01000000AB +S31540013B10C404A168030000708210601F84088001FC +S31540013B20030000108210600880A08001028000041A +S31540013B30010000007FFFB5BB9010200DC024A16895 +S31540013B4011207C01130001007FFFFD0890122030F7 +S31540013B500320000080A200011280000B03100080A8 +S31540013B60C4006168030000708210601F84088001F0 +S31540013B70030000108210600480A0800102800004CE +S31540013B80010000007FFFB5A79010200DC024A16859 +S31540013B90901020007FFFFCF59210200080A22000AB +S31540013BA01280000603100080C200616880A0600098 +S31540013BB002800004010000007FFFB59A9010200D9D +S31540013BC07FFFFCEAD01CE1E003100080C20061E8FF +S31540013BD080A2000112800BC101000000C204A1684D +S31540013BE080A0600012800BBD0100000037100080EC +S31540013BF07FFFFCDED01EE1D8031FE00080A200015A +S31540013C0012800BB301000000C204A16880A06000CD +S31540013C1012800BAF010000007FFFFCD4D01D61F084 +S31540013C2003100080C200620080A200011280000BD6 +S31540013C3001000000C404A168030000708210601FE7 +S31540013C4084088001030000108210601080A080016A +S31540013C5002800005D01DE1B87FFFB5729010200D9E +S31540013C60D01DE1B8C024A1687FFFFCC0010000005F +S31540013C70C204A1688330600E8208600380A060029E +S31540013C8002800004010000007FFFB5669010200D00 +S31540013C907FFFFE8C1103E0002108C6AFC024A16856 +S31540013CA0901420DE7FFFFCB9A01420DE80A2001014 +S31540013CB012800B8303100080C200616880A06000FF +S31540013CC012800B7F010000002108C6AF901420DE50 +S31540013CD07FFFFCBEA01420DE80A2001012800B7470 +S31540013CE001000000C204A16880A0600012800B7030 +S31540013CF0010000001128C6AF7FFFFCB4901220DE00 +S31540013D000308C6AF821060DE80A2000112800B64F8 +S31540013D1001000000C204A16880A0600012800B600F +S31540013D20010000001108C6AF7FFFFCA0901220DE03 +S31540013D300328C6AF821060DE80A2000112800B54B8 +S31540013D4001000000C204A16880A0600012800B50EF +S31540013D50010000001128C6AF7FFFFC94901220DEBF +S31540013D600308C6AF821060DE80A2000112800B45B7 +S31540013D7001000000C204A16880A0600012800B41CE +S31540013D80010000007FFFFE4F1103E00011151BC02B +S31540013D901310C821901221039212614115351BC09F +S31540013DA01710C8219412A1037FFFFC909612E1419E +S31540013DB080A2200212800B2B01000000C204A168E0 +S31540013DC080A0600012800B270100000011351BC046 +S31540013DD01310C821901221039212614115151BC07F +S31540013DE01710C8219412A1037FFFFC809612E1416E +S31540013DF080A2200112800B1F01000000C204A168AD +S31540013E0080A0600012800B1B010000009010200072 +S31540013E1092102000152000007FFFFC7496102000B0 +S31540013E2080A220001280000601000000C204A168A1 +S31540013E3080A0600002800005D01EE1D87FFFB4F962 +S31540013E409010200FD01EE1D87FFFFC68D41EA1D070 +S31540013E5080A2200212800AFF01000000C204A1686C +S31540013E6080A0600012800AFB0100000011151BC0F2 +S31540013E701310C821901221039212614115151BE8B6 +S31540013E801710C8219412A1037FFFFC589612E141F5 +S31540013E9080A2200112800AEB01000000C204A16841 +S31540013EA080A0600012800AE70100000011151BE89E +S31540013EB01310C821901221039212614115151BC09E +S31540013EC01710C8219412A1037FFFFC489612E141C5 +S31540013ED080A2200212800AD701000000C204A16814 +S31540013EE080A0600012800AD301000000D41CE1E0EA +S31540013EF011151BE81310C821901221037FFFFC3BCB +S31540013F009212614180A2200312800AC6010000007C +S31540013F10C204A16880A0600012800AC201000000AC +S31540013F20D41D61F011151BE81310C821901221030D +S31540013F307FFFFC2E9212614180A220031280000B6A +S31540013F4001000000C404A168030000708210601FD4 +S31540013F5084088001030000108210601080A0800157 +S31540013F6002800005D41DE1B87FFFB4AE9010200F4A +S31540013F70D41DE1B8C024A16811151BE81310C8214E +S31540013F80901221037FFFFC199212614180A2200207 +S31540013F9012800AA003100080C200616880A0600000 +S31540013FA012800A9C01000000D01DE1B815151BE8DE +S31540013FB01710C8219412A1037FFFFC0C9612E14110 +S31540013FC080A2200112800A8B01000000C204A16870 +S31540013FD080A0600012800A8701000000D01CE1E049 +S31540013FE015151BE81710C8219412A1037FFFFBFF8B +S31540013FF09612E14180A2200312800A82010000004C +S31540014000C204A16880A0600012800A7E01000000FF +S31540014010D01D61F015151BE81710C8219412A10394 +S315400140207FFFFBF29612E14180A220031280000B32 +S3154001403001000000C404A168030000708210601FE3 +S3154001404084088001030000108210601080A0800166 +S3154001405002800004010000007FFFB4729010200F1F +S31540014060C024A16811151BC01310C8219012210349 +S315400140709212614115351BC01710C8219412A10334 +S315400140807FFFFBED9612E14180A2200212800A5584 +S3154001409003100080C200616880A0600012800A514E +S315400140A00100000011351BC01310C82190122103D5 +S315400140B09212614115151BC01710C8219412A10314 +S315400140C07FFFFBDD9612E14180A2200112800A4169 +S315400140D001000000C204A16880A0600012800A3D70 +S315400140E001000000901020009210200015200000D1 +S315400140F07FFFFBD19610200080A22000128000068F +S3154001410001000000C204A16880A060000280000591 +S31540014110D01EE1D87FFFB4439010200FD01EE1D8C6 +S315400141207FFFFBC5D41EA1D080A2200212800A25A2 +S3154001413001000000C204A16880A0600012800A212B +S315400141400100000011151BC01310C8219012210354 +S315400141509212614115151BE81710C8219412A1034B +S315400141607FFFFBB59612E14180A2200112800A1120 +S3154001417001000000C204A16880A0600012800A0DFF +S315400141800100000011151BE81310C82190122103EC +S315400141909212614115151BC01710C8219412A10333 +S315400141A07FFFFBA59612E14180A22002128009FD04 +S315400141B001000000C204A16880A06000128009F9D4 +S315400141C001000000D41CE1E011151BE81310C821C1 +S315400141D0901221037FFFFB989212614180A2200336 +S315400141E01280000B01000000C404A16803000070A6 +S315400141F08210601F84088001030000108210601045 +S3154001420080A0800102800005D41D61F07FFFB405C6 +S315400142109010200FD41D61F011151BE81310C82111 +S31540014220901221037FFFFB849212614180A22003F9 +S315400142301280000B01000000C404A1680300007055 +S315400142408210601F840880010300001082106010F4 +S3154001425080A0800102800005D41DE1B87FFFB3F143 +S315400142609010200FD41DE1B8C024A16811151BE898 +S315400142701310C821901221037FFFFB6F92126141F7 +S3154001428080A22002128009BF03100080C20061682B +S3154001429080A06000128009BB01000000D01DE1B87A +S315400142A015151BE81710C8219412A1037FFFFB6265 +S315400142B09612E14180A22001128009B60100000058 +S315400142C0C204A16880A06000128009B2010000000A +S315400142D0D01CE1E015151BE81710C8219412A10363 +S315400142E07FFFFB559612E14180A220031280000B0D +S315400142F001000000C404A168030000708210601F21 +S3154001430084088001030000108210601080A08001A3 +S3154001431002800005D01D61F07FFFB3C29010200FCF +S31540014320D01D61F015151BE81710C8219412A10381 +S315400143307FFFFB419612E14180A220031280000BD0 +S3154001434001000000C404A168030000708210601FD0 +S3154001435084088001030000108210601080A0800153 +S3154001436002800004010000007FFFB3AE9010200FD1 +S31540014370C024A168110048EA13048D15901223CD7B +S315400143807FFFFB3E9212627880A22001128009795A +S3154001439003100080C200616880A060001280097528 +S315400143A001000000110048EA13048D15901223CD37 +S315400143B07FFFFB439212627880A220011280096A34 +S315400143C001000000C204A16880A060001280096655 +S315400143D001000000C024A1687FFFFCBA1103C000A0 +S315400143E023100124A807BFF8BA07BFD090100014C4 +S315400143F09210001D7FFFFA6C94146150C204615003 +S31540014400C407BFF880A0800102800E0CA014615041 +S315400144107FFFB384901020102D100080901000145F +S315400144209215A1C87FFFFA6094146150C40461508B +S31540014430C205A1C880A0800122800DF6C4042004D3 +S315400144407FFFB37890102010901000149214E1E091 +S315400144507FFFFA5594146150C4046150C204E1E0EF +S3154001446080A0800102800DE1B214E1E07FFFB36DCF +S315400144709010201090100014921561F07FFFFA4AB7 +S3154001448094146150C404A168030000708210601F37 +S3154001449084088001030000108210601080A0800112 +S315400144A002800004010000007FFFB35E90102010DF +S315400144B0C024A1687FFFFC83901020009010001457 +S315400144C0921561F07FFFFA389414615039100080DB +S315400144D0C4046150C20721F880A0800122800DBD2D +S315400144E0C40420047FFFB34F901020107FFFFC755A +S315400144F01103C000901000149215E1B87FFFFA2A0B +S3154001450094146150C204A1688330600E820860032E +S3154001451080A0600202800004010000007FFFB341D9 +S3154001452090102010C024A1689010001D9210001414 +S315400145307FFFFA1D94146150C4046150C207BFF84D +S3154001454080A0800122800D9AC40420047FFFB335E8 +S31540014550901020109010001D9215A1C87FFFFA12ED +S3154001456094146150C4046150C205A1C880A0800161 +S3154001457022800D84C40420047FFFB32A90102010AA +S315400145809010001D9214E1E07FFFFA0794146150E8 +S31540014590C4046150C204E1E080A0800122800D7014 +S315400145A0C40420047FFFB31F901020109010001DFB +S315400145B0921561F07FFFF9FC94146150C404A1681F +S315400145C0030000708210601F840880010300001000 +S315400145D08210601080A0800102800004010000006A +S315400145E07FFFB310901020107FFFFC369010200003 +S315400145F09010001D921561F07FFFF9EB9414615004 +S31540014600C4046150C20721F880A0800122800D4D6B +S31540014610C40420047FFFB303901020107FFFFC29C0 +S315400146201103C0009010001D9215E1B87FFFF9DE1D +S3154001463094146150C204A1688330600E82086003FD +S3154001464080A0600202800004010000007FFFB2F5F5 +S3154001465090102010C024A1689015A1C89210001492 +S315400146607FFFF9D194146150C4046150C205A1C8B9 +S3154001467080A0800122800D28C40420047FFFB2E976 +S31540014680901020109015A1C89210001D7FFFF9C609 +S3154001469094146150C4046150C205A1C880A0800130 +S315400146A022800D12C40420047FFFB2DE9010201038 +S315400146B09016E1D8941461507FFFF9BB921000081F +S315400146C0C4046150C206E1D880A0800122800CFC5E +S315400146D0C40420047FFFB2D3901020109016A1D0BD +S315400146E0941461507FFFF9B092100008C4046150E0 +S315400146F0C206A1D080A0800122800CE6C404200419 +S315400147007FFFB2C8901020109016A1D09216E1D822 +S315400147107FFFF9A594146150C404A1680300007099 +S315400147208210601F8408800103000010821060100F +S3154001473080A0800102800004010000007FFFB2B921 +S31540014740901020107FFFFBDF901020009016A1D023 +S315400147509216E1D87FFFF99494146150C4046150D4 +S31540014760C20721F880A0800122800CC3C404200422 +S315400147707FFFB2AC901020107FFFFBD21103C00027 +S315400147809016E1D8C024A1689216A1D07FFFF98680 +S3154001479094146150C4046150C20721F880A080017D +S315400147A022800CA4C40420047FFFB29E90102010E6 +S315400147B09015A1C89215E1B87FFFF97B9414615019 +S315400147C0C204A1688330600E8208600380A0600243 +S315400147D002800004010000007FFFB2929010201079 +S315400147E0C024A1689014E1E0921000147FFFF96E95 +S315400147F094146150C4046150C204E1E080A0800178 +S3154001480022800C83C40420047FFFB28690102010BE +S315400148109014E1E09210001D7FFFF96394146150FA +S31540014820C4046150C204E1E080A0800122800C6F83 +S31540014830C40420047FFFB27B901020109014E1E065 +S315400148409215A1C87FFFF95894146150C404615070 +S31540014850C204E1E080A0800122800C5BC4042004F4 +S315400148607FFFB270901020109014E1E094146150D3 +S315400148707FFFF94D92100008C4046150C204E1E083 +S3154001488080A0800122800C47C40420047FFFB265CA +S31540014890901020109014E1E0921561F07FFFF942EB +S315400148A094146150C404A168030000708210601F13 +S315400148B084088001030000108210601080A08001EE +S315400148C002800004010000007FFFB25690102010C4 +S315400148D0C024A168901561F0921000147FFFF9324F +S315400148E094146150C404A168030000708210601FD3 +S315400148F084088001030000108210601080A08001AE +S3154001490002800004010000007FFFB2469010201093 +S31540014910C024A168901561F09210001D7FFFF92215 +S3154001492094146150C404A168030000708210601F92 +S3154001493084088001030000108210601080A080016D +S3154001494002800004010000007FFFB2369010201063 +S31540014950C024A168901561F09215A1C87FFFF91294 +S3154001496094146150C404A168030000708210601F52 +S3154001497084088001030000108210601080A080012D +S3154001498002800004010000007FFFB2269010201033 +S31540014990C024A168901561F09214E1E07FFFF9020D +S315400149A094146150C404A168030000708210601F12 +S315400149B084088001030000108210601080A08001ED +S315400149C002800005901561F07FFFB216901020100D +S315400149D0901561F0C024A168941461507FFFF8F2EC +S315400149E092100008C404A168030000708210601F81 +S315400149F084088001030000108210601080A08001AD +S31540014A0002800004010000007FFFB20690102010D2 +S31540014A10C024A168901561F09215E1B87FFFF8E2D4 +S31540014A2094146150C204A1688330600E8208600309 +S31540014A3080A0600202800004010000007FFFB1F9FE +S31540014A40901020107FFFFB1F1103C0000310008050 +S31540014A50C024A1688210633010800009B010200084 +S31540014A607FFFB1F090102010C207BFC4B0062001ED +S31540014A7080A6200D0280002282006018852E200328 +S31540014A80912E200590220002051000808410A3205B +S31540014A90C227BFC490008008932E2001151001241F +S31540014AA0920240189412A15092026001932A600327 +S31540014AB07FFFF8BD92008009C207BFC4C60040000F +S31540014AC0C404000080A0C00232BFFFE6C227BFC4B3 +S31540014AD0C60060040910012488112150C401200434 +S31540014AE080A0C00232BFFFDFC227BFC4B00620018B +S31540014AF080A6200D12BFFFE282006018C204A168A1 +S31540014B0080A0600012800BA30100000011100081FB +S31540014B1094146150901220587FFFF8A39202200806 +S31540014B200310008082106320C4006148C2046150B2 +S31540014B3080A0800102800B86071000807FFFB1B9FB +S31540014B409010201011100081941461509012207021 +S31540014B507FFFF8959202200809100080C204615037 +S31540014B6088112320C401216080A0800122800B6925 +S31540014B70C40121647FFFB1AB901020101110008158 +S31540014B8094146150901220887FFFF8879202200882 +S31540014B900310008082106320C4006178C204615012 +S31540014BA080A0800102800B4B071000807FFFB19DE2 +S31540014BB090102010C024A16811100000921020000E +S31540014BC0150FFC007FFFF94F96102000030FFC00E4 +S31540014BD080A2000102800B3880A260007FFFB19164 +S31540014BE0901020101110000092102000152FFC008B +S31540014BF07FFFF944961020000310020080A20001B5 +S31540014C0002800B2680A260007FFFB18690102010A3 +S31540014C101130000092102000150FFC007FFFF9397A +S31540014C20961020000330020080A2000102800B147E +S31540014C3080A260007FFFB17B9010201011300000F0 +S31540014C4092102000152FFC007FFFF92E96102000B0 +S31540014C50032FFC0080A2000102800B0280A26000AB +S31540014C607FFFB17090102010111000007FFFF92FC7 +S31540014C70130FE0000310100080A20001128007B656 +S31540014C8001000000C204A16880A06000128007B242 +S31540014C9001000000111000007FFFF92E130FE00004 +S31540014CA0030FE00080A20001128007A70100000067 +S31540014CB0C204A16880A06000128007A30100000021 +S31540014CC009100080C024A16890100014941461500A +S31540014CD07FFFF848921121C0C4046150C206A1D099 +S31540014CE080A0800122800ACFC40420047FFFB14DF9 +S31540014CF090102011C024A168901000149216E1D89A +S31540014D007FFFF83C94146150C4046150C207BFC888 +S31540014D1080A0800122800ABAC40420047FFFB141E9 +S31540014D2090102011901000149214E1E07FFFF831A9 +S31540014D3094146150C4046150C204E1E080A0800132 +S31540014D4022800AA6C40420047FFFB13690102011A8 +S31540014D5090100014921561F07FFFF826941461506B +S31540014D60C4046150C20721F880A0800122800A8ACA +S31540014D70C40420047FFFB12B901020119010001421 +S31540014D809215E1B87FFFF81B94146150030000703F +S31540014D90C404A168840880010300002080A080012A +S31540014DA002800004010000007FFFB11E9010201117 +S31540014DB0C024A1689010001D921000147FFFF80DC9 +S31540014DC094146150C4046150C207BFD080A08001D1 +S31540014DD022800A68C40420047FFFB112901020117A +S31540014DE0031000809207BFC8901061C07FFFF80191 +S31540014DF094146150C4046150C20721F880A0800117 +S31540014E0022800A4CC40420047FFFB1069010201171 +S31540014E1009100080C024A168901121C09216E1D8E2 +S31540014E207FFFF7F494146150C40461500710008069 +S31540014E30C200E1C080A0800122800A34C40420045B +S31540014E407FFFB0F8901020119010001D9214E1E000 +S31540014E507FFFF7E894146150C4046150C204E1E055 +S31540014E6080A0800122800A20C40420047FFFB0ED87 +S31540014E70901020079010001D921561F07FFFF7DD1D +S31540014E8094146150C404A168030000708210601F2D +S31540014E9084088001030000108210601080A0800108 +S31540014EA002800004010000007FFFB0DE9010201157 +S31540014EB0C024A1689010001D9215E1B87FFFF7CD7F +S31540014EC09414615003000070C404A16884088001F1 +S31540014ED00300002080A08001028000040100000040 +S31540014EE07FFFB0D090102011C024A1689016A1D0A8 +S31540014EF0921000147FFFF7BF94146150C4046150AF +S31540014F00C206A1D080A08001228009ECC4042004FD +S31540014F107FFFB0C490102011091000809016A1D0D7 +S31540014F20921121C07FFFF7B394146150C4046150BC +S31540014F30C206E1D880A08001228009D5C40420049C +S31540014F407FFFB0B8901020119015A1C894146150FC +S31540014F507FFFF7A892100008C4046150C20721F8E8 +S31540014F6080A08001228009BAC40420047FFFB0AD2D +S31540014F7090102011C024A1689015A1C89214E1E0B7 +S31540014F807FFFF79C94146150C4046150C204E1E070 +S31540014F9080A08001228009A5C40420047FFFB0A11E +S31540014FA0901020119015A1C8921561F07FFFF791DD +S31540014FB094146150C4046150C20721F880A0800155 +S31540014FC02280098AC40420047FFFB09690102011E4 +S31540014FD0C024A1689015A1C89215E1B87FFFF78555 +S31540014FE09414615003000070C404A16884088001D0 +S31540014FF00300002080A0800102800004010000001F +S315400150007FFFB08890102011C024A1689014E1E080 +S31540015010921000147FFFF77794146150C4046150D5 +S31540015020C204E1E080A0800122800967C404200413 +S315400150307FFFB07C901020119014E1E09210001D8A +S315400150407FFFF76C94146150C4046150C204E1E0DF +S3154001505080A0800122800953C40420047FFFB071DF +S31540015060901020119014E1E09215A1C87FFFF761DD +S3154001507094146150C4046150C204E1E080A08001EF +S315400150802280093FC40420047FFFB066901020119E +S315400150909014E1E0941461507FFFF7569210000896 +S315400150A0C4046150C204E1E080A080012280092B42 +S315400150B0C40420047FFFB05B901020119014E1E0FE +S315400150C0921561F07FFFF74B94146150C40461500F +S315400150D0C20721F880A080012280090FC404200460 +S315400150E07FFFB050901020119014E1E09215E1B885 +S315400150F07FFFF7409414615003000070C404A16817 +S31540015100840880010300002080A080010280000500 +S31540015110901561F07FFFB04390102011901561F01A +S31540015120921000147FFFF73394146150C404A168B0 +S31540015130030000708210601F840880010300001084 +S315400151408210601080A080010280000401000000EE +S315400151507FFFB03490102011C024A168901561F0F2 +S315400151609210001D7FFFF72394146150C404A16877 +S31540015170030000708210601F840880010300001044 +S315400151808210601080A080010280000401000000AE +S315400151907FFFB02490102011C024A168901561F0C2 +S315400151A09215A1C87FFFF71394146150C404A168F6 +S315400151B0030000708210601F840880010300001004 +S315400151C08210601080A0800102800004010000006E +S315400151D07FFFB01490102011C024A168901561F092 +S315400151E09214E1E07FFFF70394146150C404A1686F +S315400151F0030000708210601F8408800103000010C4 +S315400152008210601080A0800102800005901561F037 +S315400152107FFFB00490102011901561F0C024A16861 +S31540015220941461507FFFF6F392100008C404A168FC +S31540015230030000708210601F840880010300001083 +S315400152408210601080A080010280000401000000ED +S315400152507FFFAFF490102011C024A168901561F032 +S315400152609215E1B87FFFF6E3941461500300007094 +S31540015270C404A168840880010300002080A0800145 +S3154001528002800005051FC0007FFFAFE69010201188 +S31540015290051FC0000700C0008410A1028610E0B0BF +S315400152A0C024A168B007BFE0C43FBFE805203E83E4 +S315400152B0070021C88410A3FF8610E3A19007BFE829 +S315400152C092100018C43FBFE07FFFF6CA9407BFD8CB +S315400152D0C407BFD8033FFC0080A08001028008803C +S315400152E0C207BFDC7FFFAFCF901020110500400001 +S315400152F00700C0008410A1028610E0B0C024A16856 +S315400153009007BFE8C43FBFE805108683070021C860 +S315400153108410A3FF8610E3A1921000189407BFD80A +S315400153207FFFF6B4C43FBFE0C207BFDCC407BFD8A6 +S31540015330809080011280000B03100080C4006168D8 +S31540015340030000708210601F840880010300001072 +S315400153508210600480A0800102800005050006AF2E +S315400153607FFFAFB090102011050006AF86102010C8 +S31540015370C024A1689007BFE8C43FBFE8050FFC0001 +S31540015380070281D88410A0408610E10C92100018C3 +S315400153909407BFD87FFFF697C43FBFE0C407BFD885 +S315400153A0030006AE8210639580A080010280084208 +S315400153B0C407BFDC7FFFAF9B90102011050006AFED +S315400153C086102010C024A1689007BFE8C43FBFE8FB +S315400153D0050FFFFF070281D88410A3408610E10C18 +S315400153E0921000189407BFD87FFFF682C43FBFE0F2 +S315400153F0C207BFDCC407BFD8809080011280000B72 +S3154001540003100080C4006168030000708210601FB1 +S3154001541084088001030000108210600480A080018E +S3154001542002800004010000007FFFAF7E9010201132 +S31540015430C024A168111088007FFFF75A131001009C +S31540015440031066C9821062CA80A20001128005BAA1 +S3154001545003100080C200616880A06000128005B61A +S31540015460010000001111BBFE130C70407FFFF74D88 +S31540015470901223FF031527CA8210611E80A20001E4 +S31540015480128005A901000000C204A16880A0600045 +S31540015490128005A501000000111E607E1310C7FF92 +S315400154A07FFFF740921263FC031D73FC8210633841 +S315400154B080A200011280059801000000C204A16883 +S315400154C080A06000128005940100000011002000B8 +S315400154D0130FE0007FFFF7339212600180A2200094 +S315400154E01280000B01000000C404A1680300007093 +S315400154F08210601F8408800103000010821060043E +S3154001550080A0800102800005110FE0007FFFAF45BA +S3154001551090102011110FE000C024A1687FFFF721F0 +S3154001552092100008030FE00080A200011280057668 +S3154001553003100080C200616880A06000128005727D +S315400155400100000011002000130FE0007FFFF71556 +S315400155509212600180A220001280000B010000001F +S31540015560C404A168030000708210601F8408800192 +S31540015570030000108210600480A0800102800005B3 +S31540015580031000807FFFAF27901020110310008089 +S31540015590C024A168921061C0901000147FFFF607E5 +S315400155A094146150C404615007100080C200E1C0E8 +S315400155B080A08001228007B6C40420047FFFAF1972 +S315400155C090102012901000149216E1D87FFFF5FB3F +S315400155D094146150C4046150C206E1D880A0800190 +S315400155E0228007A0C40420047FFFAF0E9010201232 +S315400155F0901000149214E1E07FFFF5F0941461508D +S31540015600C4046150C204E1E080A080012280078C7D +S31540015610C40420047FFFAF039010201290100014A1 +S31540015620921561F07FFFF5E594146150C404615011 +S31540015630C20721F880A0800122800770C40420049B +S315400156407FFFAEF890102012901000149215E1B829 +S315400156507FFFF5DA9414615003000070C404A16819 +S31540015660840880010300002080A08001028000049C +S31540015670010000007FFFAEEB90102012C024A1680C +S315400156809010001D921000147FFFF5CC94146150C8 +S31540015690C4046150C207BFD080A080012280074E5A +S315400156A0C40420047FFFAEDF901020120310008057 +S315400156B09216A1D0901061C07FFFF5C0941461503D +S315400156C0C4046150C20721F880A0800122800732BC +S315400156D0C40420047FFFAED390102012C024A168D9 +S315400156E09010001D9214E1E07FFFF5B494146150CF +S315400156F0C4046150C204E1E080A080012280071DFC +S31540015700C40420047FFFAEC7901024999010001D59 +S31540015710921561F07FFFF5A994146150C40461505C +S31540015720C20721F880A0800122800701C404200419 +S315400157307FFFAEBC901020129010001D9215E1B86B +S315400157407FFFF59E9414615003000070C404A16864 +S31540015750840880010300002080A0800102800004AB +S31540015760010000007FFFAEAF90102012C024A16857 +S315400157709015A1C8921000147FFFF59094146150C2 +S31540015780C4046150C205A1C880A08001228006DD03 +S31540015790C40420047FFFAEA3901020129015A1C827 +S315400157A09210001D7FFFF58594146150C404615029 +S315400157B0C20721F880A08001228006C2C4042004C9 +S315400157C07FFFAE9890102012C024A1689015A1C801 +S315400157D09214E1E07FFFF57994146150C40461505D +S315400157E0C204E1E080A08001228006ADC404200409 +S315400157F07FFFAE8C901020129015A1C8921561F0D2 +S315400158007FFFF56E94146150C4046150C20721F8BC +S3154001581080A0800122800691C40420047FFFAE81CE +S31540015820901020129015A1C89215E1B87FFFF5633B +S315400158309414615003000070C404A1688408800177 +S315400158400300002080A080010280000401000000C6 +S315400158507FFFAE7490102012C024A1689014E1E03D +S31540015860921000147FFFF55594146150C4046150A1 +S31540015870C204E1E080A080012280066FC4042004B6 +S315400158807FFFAE68901020129014E1E09210001D47 +S315400158907FFFF54A94146150C4046150C204E1E0AB +S315400158A080A080012280065BC40420047FFFAE5D98 +S315400158B0901020129014E1E09215A1C87FFFF53FA8 +S315400158C094146150C4046150C204E1E080A0800197 +S315400158D022800647C40420047FFFAE529010201256 +S315400158E09014E1E0941461507FFFF5349210000862 +S315400158F0C4046150C204E1E080A0800122800633E5 +S31540015900C40420047FFFAE47901020129014E1E0BA +S31540015910921561F07FFFF52994146150C404A16882 +S31540015920030000708210601F84088001030000108C +S315400159308210601080A080010280000401000000F6 +S315400159407FFFAE3890102012C024A168901561F0F7 +S31540015950921000147FFFF51994146150C404A16894 +S31540015960030000708210601F84088001030000104C +S315400159708210601080A080010280000401000000B6 +S315400159807FFFAE2890102012C024A1689210001DFE +S31540015990901561F07FFFF50994146150C404A16824 +S315400159A0030000708210601F84088001030000100C +S315400159B08210601080A08001028000040100000076 +S315400159C07FFFAE1890102012C024A168901561F097 +S315400159D09215A1C87FFFF4F994146150C404A168DB +S315400159E0030000708210601F8408800103000010CC +S315400159F08210601080A08001028000040100000036 +S31540015A007FFFAE0890102012C024A168901561F066 +S31540015A109214E1E07FFFF4E994146150C404A16853 +S31540015A20030000708210601F84088001030000108B +S31540015A308210601080A0800102800005901561F0FF +S31540015A407FFFADF890102012901561F0C024A16837 +S31540015A50941461507FFFF4D992100008C404A168E0 +S31540015A60030000708210601F84088001030000104B +S31540015A708210601080A080010280000401000000B5 +S31540015A807FFFADE890102012C024A168901561F007 +S31540015A909215E1B87FFFF4C994146150C204A1681C +S31540015AA08330600E8208600380A060020280000598 +S31540015AB01103C0007FFFADDB901020121103C0001F +S31540015AC07FFFF70031100080B0162228C024A1685C +S31540015AD010800008BA1020007FFFADD2901020122E +S31540015AE0BA07600180A7600602800024B00620182C +S31540015AF0832F60030910008088112218912F6005B9 +S31540015B00932F6001902200019202401D90010008EE +S31540015B109202600115100124932A60039412A15048 +S31540015B207FFFF4A692010009C4060000C2040000EA +S31540015B3080A0800112BFFFE907100124C40620049A +S31540015B408610E150C200E00480A0800112BFFFE34D +S31540015B500910008088112168C201000080A0600000 +S31540015B6012BFFFDE01000000BA07600180A7600690 +S31540015B7012BFFFE0B0062018111000809414615046 +S31540015B80901222A87FFFF48D920220080310008014 +S31540015B9082106218C40060A0C204615080A08001D6 +S31540015BA00280057A071000807FFFAD9E901020127B +S31540015BB0C024A1681110008094146150901222C033 +S31540015BC07FFFF47E9202200809100080C2046150D2 +S31540015BD088112218C40120B880A080012280055D69 +S31540015BE0C40120BC7FFFAD8F90102012C024A16854 +S31540015BF01110008094146150901222D87FFFF46FE7 +S31540015C00920220080310008082106218C40060D0FE +S31540015C10C204615080A080010280053E07100080C9 +S31540015C207FFFAD8090102012C024A1681110008022 +S31540015C3094146150901222F07FFFF4609202200882 +S31540015C4009100080C204615088112218C40120E85D +S31540015C5080A0800122800521C40120EC7FFFAD7127 +S31540015C6090102012C024A168111000809414615034 +S31540015C70901223087FFFF4519202200803100080FE +S31540015C8082106218C4006100C204615080A0800184 +S31540015C9002800502071000807FFFAD62901020123E +S31540015CA0C024A168111010007FFFF53413100000C5 +S31540015CB00310300080A20001128003B70310008058 +S31540015CC0C200616880A06000128003B30100000039 +S31540015CD0111FE000131000007FFFF43D9414615042 +S31540015CE0C4046150031FFC0080A08001228004E3AC +S31540015CF0C20420047FFFAD4B9010201B111FE00012 +S31540015D00133000007FFFF43294146150C404615093 +S31540015D10033FFC0080A08001228004D0C2042004FD +S31540015D207FFFAD409010201C1110000092102010F2 +S31540015D307FFFF4279414615003000070C404A168E6 +S31540015D40840880010300002080A0800102800004B5 +S31540015D50010000007FFFAD339010201DC024A168D3 +S31540015D6011002000130FC0007FFFF41994146150F5 +S31540015D70C4046150030E000080A08001228004AF5C +S31540015D80C20420047FFFAD279010201E111FDFFFA4 +S31540015D9013100000901223FF7FFFF40D94146150FD +S31540015DA0C40461500311FFFF821063FF80A080018C +S31540015DB022800499C40420047FFFAD1A9010201F4D +S31540015DC0111FD000130FF0007FFFF40194146150AE +S31540015DD0C40461500311FC8080A0800122800486A6 +S31540015DE0C20420047FFFAD0F90102021111FDFFF59 +S31540015DF094146150901223FF7FFFF3F5921000082F +S31540015E00C40461500313FBFF821063FF80A080012D +S31540015E102280046FC40420047FFFAD02901020202D +S31540015E207FFFF6281103C0009007BFC8C024A168B0 +S31540015E307FFFF3F692146150C4046150C207BFC894 +S31540015E4080A0800122800459C40420047FFFACF560 +S31540015E509010201309100080921461507FFFF3EBDC +S31540015E60901121C005100080C200A1C0C404615038 +S31540015E7080A0800102800442071000807FFFACE9C8 +S31540015E80901020139016E1D87FFFF3E092146150F1 +S31540015E90C4046150C206E1D880A080010280042D6D +S31540015EA0091000807FFFACDF901020139016A1D01F +S31540015EB07FFFF3D692146150C4046150C20721F8A2 +S31540015EC080A0800122800413C40420047FFFACD546 +S31540015ED090102013C024A168901561F07FFFF3CB89 +S31540015EE092146150C4046150C20721F880A0800118 +S31540015EF0228003F8C40420047FFFACCA901020130B +S31540015F00C024A1689014E1E07FFFF3C09214615070 +S31540015F10C204E1E0C404615080A08001228003E410 +S31540015F20C20660047FFFACBF9010201305100C0021 +S31540015F30861020009010001492146150C43FBFF89F +S31540015F4005300F78070C00088610E0017FFFF3AF9C +S31540015F50C43FBFF0C40461500310040080A0800117 +S31540015F60228003CBC20420047FFFACAE90102013E5 +S31540015F70A607BFF0921461507FFFF3A4901000135F +S31540015F80C20721F8C404615080A08001028003B099 +S31540015F90051000807FFFACA3901020139015E1B847 +S31540015FA07FFFF39A92146150C204A1688330600E58 +S31540015FB08208600380A060020280000401000000A4 +S31540015FC07FFFAC9890102013C024A1687FFFF47F17 +S31540015FD01111F2000310E80080A20001128002EBC9 +S31540015FE003100080C200616880A06000128002E751 +S31540015FF0010000007FFFF5B3111000001101F58982 +S315400160007FFFF472901221E20308E96480A2000145 +S31540016010128002DB01000000C204A16880A060007A +S31540016020128002D7010000007FFFF4681112A20816 +S315400160300311410080A20001128002CE010000003E +S31540016040C204A16880A06000128002CA010000005B +S315400160507FFFF59C11001000901000149215E1B8D5 +S315400160607FFFF35194146150C404615003100C0036 +S3154001607080A080012280036EC20420047FFFAC69A8 +S31540016080901020149015E1B8921000137FFFF34B46 +S3154001609094146150C40461500320000080A0800123 +S315400160A02280035BC20420047FFFAC5E9010201463 +S315400160B07FFFF38E90102001030FE00080A20001C4 +S315400160C0128002A901000000C204A16880A06000FC +S315400160D0128002A5010000007FFFF37C9010200191 +S315400160E0030FFC0080A200010280034280A26000EF +S315400160F07FFFAC4C901020147FFFF57211101000F9 +S31540016100D41EE1D87FFFF3FFD01DE1B8C206A1D06E +S31540016110D024615080A040080280032BD224200461 +S315400161207FFFAC40901020227FFFF56611100000E2 +S31540016130050FFC00861020009010001492100013E9 +S31540016140C43FBFF8050F2800070400808610E0F021 +S31540016150941461507FFFF314C43FBFF0C4046150EF +S31540016160030FFC0080A0800122800313C204200497 +S315400161707FFFAC2C901020157FFFF55211200000B7 +S31540016180050FFC0086102000901000149210001399 +S31540016190C43FBFF805001400070000408610E00127 +S315400161A0941461507FFFF300C43FBFF0C4046150B3 +S315400161B0030FFC0080A08001228002FBC204200460 +S315400161C07FFFAC18901020157FFFF53E113000007F +S315400161D0052FFC0086102000901000149210001329 +S315400161E0C43FBFF805201400070000408610E001B7 +S315400161F0941461507FFFF2ECC43FBFF0C404615078 +S31540016200032FFC0080A08001228002E3C204200407 +S315400162107FFFAC04901020157FFFF52A1110000076 +S31540016220050FFC0086102000901000149215A1C89D +S31540016230C43FBFF87FFFF2DC94146150C40461503F +S31540016240C205A1C880A08001228002CCC4042004DA +S315400162507FFFABF4901020157FFFF51A1120000047 +S31540016260050FFC0086102000901000149215A1C85D +S31540016270C43FBFF805001400070000408610E00146 +S31540016280941461507FFFF2C8C43FBFF0C40461500B +S31540016290C205A1C880A08001228002B1C4042004A5 +S315400162A07FFFABE0901020157FFFF506113000000F +S315400162B0052FFC0086102000901000149215A1C8ED +S315400162C0C43FBFF805201400070000408610E001D6 +S315400162D0941461507FFFF2B4C43FBFF0C205A1C818 +S315400162E0C404615080A0800102800296091000809A +S315400162F07FFFABCC901020157FFFF4F21110000008 +S31540016300050FFC0086102001901000149210001316 +S31540016310C43FBFF805100000861020019414615057 +S315400163207FFFF2A6C43FBFF0C404615003100000D2 +S3154001633080A080012280027FC20420047FFFABB986 +S31540016340901020157FFFF4DF1120000090100014FB +S31540016350921000137FFFF29994146150C404615066 +S315400163600310000080A080012280026EC204200436 +S315400163707FFFABAC901020157FFFF4D211300000A7 +S31540016380052FFC0086102001901000149210001376 +S31540016390C43FBFF87FFFF28994146150C404615031 +S315400163A00330000080A080012280025AC2042004EA +S315400163B07FFFAB9C901020157FFFF4C211100000A7 +S315400163C0050FFEAE071CD2E88410A1548610E011D9 +S315400163D09010001492100013C43FBFF8050FFC043F +S315400163E0072F26158410A0128610E23194146150AD +S315400163F07FFFF280C43FBFF0C4046150030FFEA784 +S315400164008210629680A080012280023CC40420044E +S315400164107FFFAB84901020157FFFF4AA1120000066 +S3154001642090100014921000137FFFF2729414615081 +S31540016430C4046150030FFEA78210629680A08001BA +S3154001644022800228C40420047FFFAB7690102015D9 +S315400164507FFFF49C11300000052FFC04072F261501 +S315400164608410A0128610E23190100014921000138D +S31540016470C43FBFF07FFFF25F94146150C404615082 +S31540016480032FFEA78210629680A080012280020F10 +S31540016490C40420047FFFAB63901020157FFFF4896D +S315400164A011100000051038008610200090100014CD +S315400164B092100013C43FBFF805101000861020004B +S315400164C0941461507FFFF24BC43FBFF0C404615046 +S315400164D00310240080A08001228001F8C204200418 +S315400164E07FFFAB50901020157FFFF47611200000FE +S315400164F090100014921000137FFFF23E94146150E5 +S31540016500C40461500310240080A08001228001E769 +S31540016510C20420047FFFAB43901020157FFFF4692E +S315400165201130000090100014921000137FFFF231D9 +S3154001653094146150C40461500310240080A080016A +S31540016540228001D6C20420047FFFAB36901020156D +S315400165507FFFF45C1110000011002000130FE000D2 +S315400165607FFFF3109212600180A22000128001C8C1 +S31540016570010000007FFFF4531120000011002000AC +S31540016580130FE0007FFFF3079212600180A2200003 +S31540016590128001BC010000007FFFF44A1130000067 +S315400165A011002000130FE0007FFFF2FE92126001FE +S315400165B080A22000128001B0010000007FFFF4415B +S315400165C011100000050FFC008610200090100014E9 +S315400165D0921461507FFFF20DC43FBFF8C40461506D +S315400165E0C207BFF880A080012280019AC40420041A +S315400165F07FFFAB0C901020157FFFF4321120000075 +S31540016600901000147FFFF20192146150C40461504E +S31540016610C207BFF880A0800122800185C4042004FE +S315400166207FFFAB00901020157FFFF426113000004C +S31540016630901000147FFFF1F592146150C40461502B +S31540016640C207BFF880A0800122800170C4042004E3 +S315400166507FFFAAF4901020157FFFF41A1110000055 +S315400166602B0FDFFF901563FF7FFFF2D8AA1563FF5B +S3154001667080A2001502800004010000007FFFAAE904 +S31540016680901020157FFFF40F11200000110FDFFF3E +S315400166907FFFF2CE901223FF030FE00080A200019C +S315400166A002800004010000007FFFAADE9010201541 +S315400166B07FFFF404113000002B0FDFFF901563FFBD +S315400166C07FFFF2C2AA1563FF80A200150280000473 +S315400166D0010000007FFFAAD3901020157FFFF3F938 +S315400166E0901020007FFFF2C190146150C4046150A4 +S315400166F0032FFE0080A0800122800140C2042004B5 +S315400167007FFFAAC8901020162B1001247FFFF2C1EB +S3154001671090156158C4056158032FF00080A080018F +S3154001672002800004010000007FFFAABE90102016DF +S315400167307FFFF2C290156158C4056158030FE0000E +S3154001674080A0800102800004010000007FFFAAB5FD +S31540016750901020167FFFF2C990146150C404615015 +S31540016760030FFBF7821063F080A080012280011C99 +S31540016770C40420047FFFAAAB901020169215E1B8FD +S31540016780901000147FFFF19B94146150C204A168DC +S315400167908330600E8208600780A060020280000597 +S315400167A0031000807FFFAA9F9010201703100080DE +S315400167B0C40061700310004BE40061F8821061F877 +S315400167C080A0400202800005031000807FFFAA9549 +S315400167D09010201803100080C200617480A04012FE +S315400167E002800005031000807FFFAA8E90102018BA +S315400167F003100080C200617880A06000128000F41E +S315400168000100000003100080C200617C80A060008E +S31540016810128000EC010000007FFFF14E01000000F4 +S3154001682080A220010280052D01000000050C4029AF +S315400168300723CD1B8410A0068610E09B9010001400 +S31540016840C027BFF0C027BFF4C43FBFF8291000815D +S315400168507FFFF1962B100082AA1560A0A41020009C +S31540016860A81520A0AC146150BA100015108000087C +S31540016870AE1000107FFFAA6B90102019A404A0044B +S3154001688080A4A400228000172B100084C2050012A8 +S31540016890C224C000901000137FFFF18792100016AA +S315400168A0832CA001C4040000C605400180A0C0029B +S315400168B012BFFFF182074001C4006004C205E00433 +S315400168C080A0800112BFFFEC01000000A404A004D7 +S315400168D080A4A40032BFFFEFC20500122B10008432 +S315400168E0A2146150AA1560A0A4102000AE10001594 +S315400168F010800008AC1000107FFFAA4A9010201AA1 +S31540016900A404A00880A4A400028000150100000090 +S31540016910C2050012C224C000921000117FFFF13B54 +S3154001692090100013C4054012C204000080A08001EB +S3154001693012BFFFF28205C012C4006004C205A00462 +S3154001694080A0800112BFFFED01000000A404A00851 +S3154001695080A4A40032BFFFF0C205001281C7E0083F +S3154001696081E800007FFFAA2F9010200F30BFF69AD2 +S315400169707FFFAA2C9010200F10BFF68C110048EA19 +S315400169807FFFAA289010200F10BFF646D01DE1B810 +S315400169907FFFAA249010200F10BFF64FD01CE1E0D4 +S315400169A07FFFAA209010200F10BFF608D41CE1E00B +S315400169B07FFFAA1C9010200F10BFF5F411151BE89C +S315400169C07FFFAA189010200F10BFF5E011151BC0CC +S315400169D07FFFAA149010200F10BFF5C4901020001D +S315400169E07FFFAA109010200F10BFF5B011351BC0C4 +S315400169F07FFFAA0C9010200F10BFF57AD01CE1E062 +S31540016A007FFFAA089010200F10BFF583D01D61F0BB +S31540016A107FFFAA049010200F10BFF565D01DE1B885 +S31540016A207FFFAA009010200F10BFF53FD41D61F0E3 +S31540016A307FFFA9FC9010200F10BFF52ED41CE1E07A +S31540016A407FFFA9F89010200F10BFF51A11151BE80A +S31540016A507FFFA9F49010200F10BFF50611151BC03A +S31540016A607FFFA9F09010200F10BFF4DA11351BC03B +S31540016A707FFFA9EC9010200F10BFF4E69010200084 +S31540016A807FFFA9E89010200E30BFF4BF7FFFA9E534 +S31540016A909010200E10BFF4B11128C6AF7FFFA9E1B7 +S31540016AA09010200E10BFF4A11108C6AF7FFFA9DDDB +S31540016AB09010200E10BFF4911128C6AF7FFFA9D9BF +S31540016AC09010200E10BFF4822108C6AF7FFFA9D5D2 +S31540016AD09010200D30BFF4517FFFA9D29010200DA8 +S31540016AE010BFF444371000807FFFA9CE9010200CD0 +S31540016AF010BFF3A2271000807FFFA9CA9010200B78 +S31540016B0030BFF34F7FFFA9C79010201110BFFA8FF6 +S31540016B10110020007FFFA9C39010201110BFFA6D0C +S31540016B20110020007FFFA9BF9010201110BFFA5C11 +S31540016B30111E607E7FFFA9BB9010201110BFFA4B3A +S31540016B401111BBFE7FFFA9B79010201010BFF85E50 +S31540016B50091000807FFFA9B39010201010BFF84F95 +S31540016B60111000007FFFA9AF9010201430BFFD5BCC +S31540016B707FFFA9AC9010202330BFFD367FFFA9A926 +S31540016B809010202330BFFD297FFFA9A69010201326 +S31540016B9030BFFD197FFFA9A39010201210BFFC4EF4 +S31540016BA0111FE00012BFF30A01000000C204A168F0 +S31540016BB080A0600002BFF3080100000030BFF3046B +S31540016BC07FFFA9989010201830BFFF147FFFA99529 +S31540016BD09010201810BFFF0D031000800303FF1211 +S31540016BE08210604A80A0800112BFFEE39215E1B88F +S31540016BF010BFFEE59010001480A0600002BFFEC4E5 +S31540016C002B10012430BFFEBFC207BFFC80A080010C +S31540016C1012BFFE9001000000C204A16880A060007E +S31540016C2002BFFE8E0100000030BFFE8AC207BFFCD4 +S31540016C3080A0800112BFFE7B01000000C204A16852 +S31540016C4080A0600002BFFE790100000030BFFE75E2 +S31540016C50C207BFFC80A0800112BFFE660100000092 +S31540016C60C204A16880A0600002BFFE64010000006A +S31540016C7030BFFE607FFFA96B9010201530BFFE50DC +S31540016C807FFFA9689010201530BFFE447FFFA9659C +S31540016C909010201530BFFE3880A0600002BFFE2D47 +S31540016CA00100000030BFFE2980A0600002BFFE1C2B +S31540016CB00100000030BFFE1880A0600002BFFE0B3D +S31540016CC00100000030BFFE07032C1B3482106030E8 +S31540016CD080A0800112BFFDF00100000030BFFDF031 +S31540016CE0032C1B348210603080A0800112BFFDD777 +S31540016CF00100000030BFFDD7032C1B348210602FEA +S31540016D0080A0800112BFFDC30100000030BFFDC35A +S31540016D1080A0600312BFFDA70100000030BFFDA7A0 +S31540016D2080A0600312BFFD930100000030BFFD93B8 +S31540016D3080A0600212BFFD820100000030BFFD82CB +S31540016D40C4042004881121C8C201200480A0800106 +S31540016D5012BFFD680100000030BFFD6807100080CA +S31540016D608610E1C8C200E00480A0800112BFFD4D3B +S31540016D700100000030BFFD4D09100080881121C877 +S31540016D80C201200480A0800112BFFD320100000033 +S31540016D9030BFFD3280A0600112BFFD1E0100000020 +S31540016DA030BFFD1E80A0600112BFFD06010000003C +S31540016DB030BFFD0680A0600002BFFCF0010000006C +S31540016DC030BFFCEC071000808610E1D0C200E00421 +S31540016DD080A0400912BFFCD301000000C204A16893 +S31540016DE080A0600002BFFCD10100000030BFFCCD95 +S31540016DF012BFFCC001000000C204A16880A060006F +S31540016E0002BFFCBE0100000030BFFCBA80A060009A +S31540016E1012BFFCA601000000C204A16880A0600068 +S31540016E2002BFFCA40100000030BFFCA080A06000AE +S31540016E3012BFFC9301000000C204A16880A060005B +S31540016E4002BFFC929015E1B830BFFC8D8410A1F8C9 +S31540016E50C200A004C404200480A0800112BFFC4EDD +S31540016E6001000000C404A168030000708210601F85 +S31540016E7084088001030000108210601080A0800108 +S31540016E8012BFFC459015E1B830BFFC4680A06000BA +S31540016E9012BFFC3601000000C204A16880A0600058 +S31540016EA002BFFC35A607BFF030BFFC30C404200446 +S31540016EB080A0800112BFFC1C03100080C2006168E3 +S31540016EC080A0600002BFFC1B05100C0030BFFC1601 +S31540016ED009100080881121F8C201200480A0800198 +S31540016EE012BFFC0603100080C400616803000070F5 +S31540016EF08210601F84088001030000108210601018 +S31540016F0080A0800112BFFBFD0100000030BFFBFDE8 +S31540016F10071000808610E1F8C200E00480A08001DD +S31540016F2012BFFBEB01000000C404A168030000701E +S31540016F308210601F840880010300001082106010D7 +S31540016F4080A0800112BFFBE20100000030BFFBE2DE +S31540016F50C4042004881121D8C201200480A08001E4 +S31540016F6012BFFBD101000000C204A16880A06000ED +S31540016F7002BFFBD09016A1D030BFFBCBC404200486 +S31540016F808610E1C0C200E00480A0800112BFFBBCB4 +S31540016F9001000000C204A16880A0600002BFFBBBE3 +S31540016FA09016E1D830BFFBB6C207BFCC80A08001A6 +S31540016FB012BFFBA703100080C200616880A0600079 +S31540016FC002BFFBA60910008030BFFBA103300000C1 +S31540016FD08210602080A0800112BFFB90010000005A +S31540016FE0C204A16880A0600002BFFB8E01000000C0 +S31540016FF030BFFB8A80A0600012BFFB7B010000000E +S31540017000C204A16880A0600002BFFB7A111FDFFFA6 +S3154001701030BFFB750338000080A0800112BFFB67BB +S3154001702001000000C204A16880A0600002BFFB66A7 +S31540017030111FD00030BFFB6180A0600012BFFB5220 +S3154001704003100080C200616880A0600002BFFB514E +S31540017050111FDFFF30BFFB4C80A0600012BFFB3128 +S3154001706001000000C204A16880A0600002BFFB309D +S315400170701110000030BFFB2B80A0600012BFFB1E29 +S3154001708001000000C204A16880A0600002BFFB1D90 +S31540017090111FE00030BFFB18C20420048610E2181D +S315400170A0C400E10480A0800112BFFAFC03100080F5 +S315400170B0C4006168030000708210601F840880016B +S315400170C0030000108210600880A0800112BFFAF30D +S315400170D00100000030BFFAF3C204200480A0800101 +S315400170E012BFFADF03100080C4006168030000701C +S315400170F08210601F84088001030000108210600422 +S3154001710080A0800112BFFAD60100000030BFFAD636 +S31540017110C20420048610E218C400E0D480A0800195 +S3154001712012BFFAC003100080C400616803000070FA +S315400171308210601F840880010300001082106008DD +S3154001714080A0800112BFFAB70100000030BFFAB734 +S31540017150C204200480A0800112BFFAA3031000805C +S31540017160C4006168030000708210601F84088001BA +S31540017170030000108210600880A0800112BFFA9AB5 +S315400171800100000030BFFA9AC20420048610E218BA +S31540017190C400E0A480A0800112BFFA84010000006F +S315400171A0C404A168030000708210601F8408800136 +S315400171B0030000108210600480A0800112BFFA7B98 +S315400171C00100000030BFFA7BC206600480A0800146 +S315400171D012BFF9CD01000000C204A16880A0600081 +S315400171E002BFF9CC9014E1E030BFF9C7C206600492 +S315400171F080A0800112BFF9B901000000C204A16854 +S3154001720080A0600002BFF9B89014E1E030BFF9B345 +S31540017210C206600480A0800112BFF9A501000000EA +S31540017220C204A16880A0600002BFF9A49014E1E005 +S3154001723030BFF99FC206600480A0800112BFF99158 +S3154001724003100080C200616880A0600002BFF9900F +S315400172509014E1E030BFF98B071000808610E1F809 +S31540017260C200E00480A0800112BFF96D0100000058 +S31540017270C404A168030000708210601F8408800165 +S31540017280030000108210601080A0800112BFF964D3 +S315400172909015A1C810BFF9669215E1B8C2066004FF +S315400172A080A0800112BFF95303100080C2006168BB +S315400172B080A0600002BFF9529015A1C830BFF94DB8 +S315400172C009100080881121F8C201200480A08001A4 +S315400172D012BFF93C01000000C404A168030000701C +S315400172E08210601F84088001030000108210601024 +S315400172F080A0800112BFF9330100000030BFF9338D +S31540017300071000808610E1C8C200E00480A0800119 +S3154001731012BFF92103100080C200616880A060009D +S3154001732002BFF9209015A1C830BFF91B0910008092 +S31540017330881121F8C201200480A0800112BFF8FD06 +S3154001734001000000C404A168030000708210601FA0 +S3154001735084088001030000108210601080A0800123 +S3154001736012BFF8F49010001D10BFF8F69215E1B85F +S31540017370C206600480A0800112BFF8E303100080BA +S31540017380C200616880A0600002BFF8E29010001D53 +S3154001739030BFF8DD071000808610E1F8C200E00436 +S315400173A080A0800112BFF8CC01000000C404A1688E +S315400173B0030000708210601F8408800103000010E2 +S315400173C08210601080A0800112BFF8C30100000046 +S315400173D030BFF8C3C207BFD480A0800112BFF8B244 +S315400173E003100080C200616880A0600002BFF8B14E +S315400173F00310008030BFF8AC09100080881121F8D5 +S31540017400C201200480A0800112BFF88E0100000055 +S31540017410C404A168030000708210601F84088001C3 +S31540017420030000108210601080A0800112BFF88511 +S315400174309010001410BFF8879215E1B8C206600497 +S3154001744080A0800112BFF87401000000C204A16847 +S3154001745080A0600002BFF8739010001430BFF86E30 +S31540017460071000808610E1D8C200E00480A08001A8 +S3154001747012BFF85E01000000C204A16880A060004E +S3154001748002BFF85D9010001430BFF8588810E1C073 +S31540017490C201200480A0800112BFF8490310008078 +S315400174A0C200616880A0600002BFF84890100014D5 +S315400174B030BFF84303003A9A8210630F80A08001DF +S315400174C012BFF7BD03100080C200616880A0600052 +S315400174D002BFF7BC050006AF30BFF7B780A060001A +S315400174E012BFF78103100080C40061680300007079 +S315400174F08210601F8408800103000010821060081A +S3154001750080A0800112BFF7780500400010BFF77ACE +S315400175100700C00009100080881121F8C20120042B +S3154001752080A0800112BFF6EF01000000C404A168EB +S31540017530030000708210601F840880010300001060 +S315400175408210601080A0800112BFF6E69014E1E03F +S3154001755010BFF6E89215E1B8C206600480A080012A +S3154001756012BFF6D501000000C204A16880A06000E8 +S3154001757002BFF6D49014E1E030BFF6CFC2066004F4 +S3154001758080A0800112BFF6C101000000C204A168BB +S3154001759080A0600002BFF6C09014E1E030BFF6BBA8 +S315400175A0C206600480A0800112BFF6AD0100000052 +S315400175B0C204A16880A0600002BFF6AC9014E1E06D +S315400175C030BFF6A7C206600480A0800112BFF699BB +S315400175D003100080C200616880A0600002BFF69877 +S315400175E09014E1E030BFF693071000808610E1F871 +S315400175F0C200E00480A0800112BFF67401000000C1 +S31540017600C404A168030000708210601F84088001D1 +S31540017610030000108210601080A0800112BFF66B3B +S315400176200100000030BFF66BC206600480A08001F5 +S3154001763012BFF65B03100080C200616880A0600043 +S3154001764002BFF65A9015A1C830BFF6550910008001 +S31540017650881121F8C201200480A0800112BFF6449E +S3154001766001000000C404A168030000708210601F7D +S3154001767084088001030000108210601080A0800100 +S3154001768012BFF63B0100000030BFF63B07100080F9 +S315400176908610E1D8C200E00480A0800112BFF6291D +S315400176A001000000C204A16880A0600002BFF62864 +S315400176B09015A1C830BFF623071000808610E1D08F +S315400176C0C200E00480A0800112BFF61203100080C0 +S315400176D0C200616880A0600002BFF61109100080F7 +S315400176E030BFF60CC206600480A0800112BFF5E0EF +S315400176F001000000C204A16880A0600002BFF5DF5E +S315400177009010001D30BFF5DA8810E1C0C201200497 +S3154001771080A0800112BFF5CB03100080C2006168D2 +S3154001772080A0600002BFF5CA9010001D30BFF5C5AC +S31540017730071000808610E1F8C200E00480A08001B5 +S3154001774012BFF5B201000000C404A1680300007035 +S315400177508210601F840880010300001082106010AF +S3154001776080A0800112BFF5A90910008030BFF5AA9B +S31540017770C207BFD480A0800112BFF59803100080D4 +S31540017780C200616880A0600002BFF59703100080C7 +S3154001779030BFF59209100080881121F8C2012004FA +S315400177A080A0800112BFF57401000000C404A168E5 +S315400177B0030000708210601F8408800103000010DE +S315400177C08210601080A0800112BFF56B90100014EA +S315400177D010BFF56D9215E1B8C206600480A0800124 +S315400177E012BFF55A01000000C204A16880A06000E2 +S315400177F002BFF5599010001430BFF554C207BFCCF3 +S3154001780080A0800112BFF54603100080C200616866 +S3154001781080A0600002BFF5459010001430BFF540CE +S31540017820071000808610E1D0C200E00480A08001EC +S3154001783012BFF52F03100080C40061680300007079 +S315400178408210601F840880010300001082106002CC +S3154001785080A0800112BFF5260100000030BFF52649 +S3154001786012BFF50001000000C204A16880A06000BB +S3154001787002BFF4FF1110000030BFF4FA12BFF4EE5C +S3154001788001000000C204A16880A0600002BFF4EDBF +S315400178901130000030BFF4E812BFF4DC01000000F3 +S315400178A0C204A16880A0600002BFF4DB1130000071 +S315400178B030BFF4D612BFF4CA03100080C20061681B +S315400178C080A0600002BFF4C91110000030BFF4C4AB +S315400178D0C20420048610E320C400E17C80A080011C +S315400178E012BFF4B301000000C404A1680300007094 +S315400178F08210601F8408800103000010821060041A +S3154001790080A0800112BFF4AA0100000030BFF4AA92 +S31540017910C204200480A0800112BFF4970100000038 +S31540017920C404A168030000708210601F84088001AE +S31540017930030000108210600480A0800112BFF48E03 +S315400179401110008110BFF49094146150C2042004B8 +S315400179508610E320C400E14C80A0800112BFF47878 +S3154001796001000000C404A168030000708210601F7A +S3154001797084088001030000108210600880A0800105 +S3154001798012BFF46F1110008110BFF471941461504D +S315400179907FFFA6249010201010BFF45E11100081C5 +S315400179A0C206600480A0800112BFF3B90100000045 +S315400179B0C204A16880A0600002BFF3B89014E1E060 +S315400179C030BFF3B3C206600480A0800112BFF3A5A5 +S315400179D001000000C204A16880A0600002BFF3A4B8 +S315400179E09014E1E030BFF39FC206600480A080019D +S315400179F012BFF39101000000C204A16880A060009B +S31540017A0002BFF3909014E1E030BFF38BC2066004ED +S31540017A1080A0800112BFF37D03100080C20061681F +S31540017A2080A0600002BFF37C9014E1E030BFF377A1 +S31540017A3009100080881121F8C201200480A080012C +S31540017A4012BFF35A03100080C4006168030000703E +S31540017A508210601F840880010300001082106010AC +S31540017A6080A0800112BFF3519015A1C810BFF353F6 +S31540017A709215E1B8071000808610E1F8C200E004D3 +S31540017A8080A0800112BFF33B0100000030BFF33BF1 +S31540017A9009100080881121D0C201200480A08001F4 +S31540017AA012BFF31801000000C204A16880A0600063 +S31540017AB002BFF3179016A1D030BFF3120710008012 +S31540017AC08610E1D8C200E00480A0800112BFF30213 +S31540017AD001000000C204A16880A0600002BFF3015A +S31540017AE09016A1D030BFF2FC09100080881121C840 +S31540017AF0C201200480A0800112BFF2EC0100000007 +S31540017B00C204A16880A0600002BFF2EB9016E1D8E2 +S31540017B1030BFF2E6071000808610E1C8C200E004DB +S31540017B2080A0800112BFF2D603100080C2006168B6 +S31540017B3080A0600002BFF2D59015A1C830BFF2D037 +S31540017B4009100080881121F8C201200480A080011B +S31540017B5012BFF2B10100000030BFF2B1C2066004AB +S31540017B6080A0800112BFF29001000000C204A1680A +S31540017B7080A0600002BFF28F9010001D30BFF28AD4 +S31540017B80071000808610E1C8C200E00480A0800191 +S31540017B9012BFF27A01000000C204A16880A0600011 +S31540017BA002BFF2799010001D30BFF274C207BFFCCC +S31540017BB080A0800112BFF26603100080C200616896 +S31540017BC080A0600002BFF2659010001D30BFF260D8 +S31540017BD0881721F8C201200480A0800112BFF24219 +S31540017BE00100000030BFF242C4042004C206600412 +S31540017BF080A0800112BFF21E01000000C204A168EC +S31540017C0080A0600002BFF21D9010001430BFF21830 +S31540017C108615A1C8C200E00480A0800112BFF20906 +S31540017C2001000000C204A16880A0600002BFF20802 +S31540017C309010001430BFF203C2042004C407BFFCF5 +S31540017C4080A0800112BFF1F303100080C200616879 +S31540017C5080A0600002BFF1F22D10008030BFF1ED2F +S31540017C6080A2400112BFEFA201000000C204A16838 +S31540017C7080A0600002BFEFA11111FC0030BFEF9C54 +S31540017C8080A2400112BFEF9003100080C2006168DC +S31540017C9080A0600022BFEF8F113C02AF30BFEF8A58 +S31540017CA012BFEEDB01000000C204A16880A06000A3 +S31540017CB002BFEED90100000030BFEED512BFEECCB7 +S31540017CC001000000C204A16880A0600002BFEECAA4 +S31540017CD00100000030BFEEC67FFFA552901020196B +S31540017CE010BFFAD4050C402981D8200081C3E00891 +S31540017CF00100000081D8200082102400C0A043006A +S31540017D0081C3E0080100000085322010913220181D +S31540017D10900A200F8408A00380A0000882602000FA +S31540017D2081C3E008900880019DE3BF887FFFEB7A1D +S31540017D309010200C808A2008128000040100000067 +S31540017D4081C7E00891E820007FFFA52F9010200E03 +S31540017D50C2800320853060188088A00F028000DD34 +S31540017D602F100123833060108208600380A06002D7 +S31540017D70028000E0C225E0D480A06003028000FFBB +S31540017D8080A06001028000EC2910010C2310010C37 +S31540017D902110010C2B10010C2710010C2510010C90 +S31540017DA081D8200081D8200082102400C0A0430041 +S31540017DB0031000A1051000A0821060008410A000ED +S31540017DC0873060048610E00188100003C87880007F +S31540017DD08800A004C67900008610200AC6784000B3 +S31540017DE0C8046000C60420041B0080001908000076 +S31540017DF09A13600A993B0004980B0003992B2002C1 +S31540017E0098030001DA7B00001B01000017100000F7 +S31540017E109813608E973AC004960AC003972AE002E7 +S31540017E209602C001D87AC000171C00001901C00093 +S31540017E30893AC0049813208E860900038728E002F8 +S31540017E408600C001D878C0003B1000A28200600CB9 +S31540017E50BA176000873760048610E001C678400093 +S31540017E608213601E86076008C278C0008210200017 +S31540017E708807600C86100001C67900002D1000A20B +S31540017E809A076004AC15A1008735A004B810001606 +S31540017E908610E001C67B4000B405A008C27E800082 +S31540017EA01B1000C0B605A004861360008330E004B1 +S31540017EB09810601AD87EC000C02360001B048D153F +S31540017EC09A136278DA20E004DA05E0D4331001002F +S31540017ED09A03600CB21660008605A00CB010200013 +S31540017EE0C627BFF8DA27BFFC90100018921020036E +S31540017EF0C227BFF0C427BFEC40000AB0C827BFF471 +S31540017F00DA07BFFC992A000DC607BFF89803001986 +S31540017F10993320049813201ED878C000B00620015A +S31540017F208600E00480A62008C207BFF0C407BFEC64 +S31540017F3012BFFFECC807BFF417100020DE05200C66 +S31540017F408612E168C822E16809100020D005600860 +S31540017F50D804A014DA04E010D2042004D40460004A +S31540017F60960BE001972AC008C6212160880A600362 +S31540017F708929000A8812C004960B2002972AC00D4F +S31540017F809611000B8530A004D620E0209610600E95 +S31540017F90D620E0289608BFF0840B20018528800D65 +S31540017FA0841100028210601EC420E02CC420E0141B +S31540017FB0050100008410A01EC220E010C420E00488 +S31540017FC0F620E00CF420E018F620E0240500764186 +S31540017FD0031000208410A1C082106000C420E00874 +S31540017FE0833060048210601EC220E01C8210210092 +S31540017FF0D6A04320C4800320C280432084102001A0 +S3154001800082102200C4A04320C6804320861020004F +S31540018010C6A04320C4A0032081D820007FFFEABE2A +S3154001802090102000913A200C808A2003028000653E +S3154001803001000000C280032082102100C28043203B +S3154001804082102200C2804320C804200488092003EC +S31540018050C2046000C605200CC4056008D404A014FF +S31540018060D604E010832900019808E0019A0AA0018C +S31540018070992B00029B2B400B981300019A13000D7C +S31540018080C803400080A120000280000388136004D9 +S3154001809030800000D201000011048D159012227823 +S315400180A080A2400812BFFFFB111000009E08E002AB +S315400180B0D00200009F2BC0029E13C001DE03C00008 +S315400180C080A3C008228000428608E0033080000079 +S315400180D02310010C2110010CC025E0D42B10010CFA +S315400180E02910010C2710010C10BFFF2E2510010C81 +S315400180F02110010C2910010C2510010C2310010C33 +S315400181008210203F2B10010C2710010CC2242004A1 +S31540018110C224A014C225200C8210201AC224600059 +S3154001812082102014C22560088210200E10BFFF1D48 +S31540018130C224E0102510010C2310010C8210203FAF +S315400181402110010C2B10010C2710010CC225200C0B +S31540018150C224A01482102019C22460008210207FFC +S31540018160C224200482102013C22560088210200DEB +S3154001817010BFFF0CC224E0102110010C2710010C86 +S315400181802310010C8210200F2B10010C2910010C19 +S315400181902510010CC224E010C22420048210201CA8 +S315400181A0C224600082102015C22560088210207FFB +S315400181B0C225200C8210203F10BFFEFAC224A01413 +S315400181C07FFFBF930100000030BFFF9B8528C0029F +S315400181D082108001C20040000321D95082106321E0 +S315400181E0C2210000C401000080A08001028000037A +S315400181F001000000308000008210000D05048D153D +S315400182008410A278072AF37B8610E301C438400024 +S31540018210C4384000C203400080A0400902800003E8 +S315400182200100000030800000C4010000032AF37BF6 +S315400182308210630180A0800112BFFFFBC205E0D41A +S31540018240940AA0038200600C972A800B84102001B7 +S31540018250AE13000B85288001B0102000EE25C0002A +S31540018260C0A0022092102003C227BFF0C427BFEC52 +S31540018270400009D290100018C207BFF0912A0001B0 +S31540018280C606400880A0C01712800008C407BFEC8C +S31540018290B006200180A6200802800005AE05C00276 +S315400182A010BFFFF0EE25C00030800000C0A00220C4 +S315400182B0AE102003B0102000852DE002C4058002D7 +S315400182C08608A06080A00003C227BFF0B040001816 +S315400182D0C427BFEC9005FFFD400009B8921020036A +S315400182E0C207BFF0C407BFEC872A000186064003D8 +S315400182F08730E0048610E01E8418C0028088BF9F44 +S3154001830012800009AE05E00180A5E00B32BFFFEC0B +S31540018310852DE00280A6200012800004D805200C9D +S315400183203080000030800000C8056008DA0420046F +S31540018330C4046000C604A014C204E010980B2001D6 +S315400183409A0B6003892B0004852B40028608E002C4 +S31540018350841100028328C001821080019FC0400021 +S315400183600100000082102400C0A04300C0A00220EA +S315400183708210200084072020C607200C8608E06072 +S3154001838080A00003B80720048240000180A70002B4 +S3154001839032BFFFFBC607200C80A060082280000385 +S315400183A0C206C00030800000808860400280000420 +S315400183B08088602032800003C20760083080000058 +S315400183C08088602032800003C20680003080000031 +S315400183D08088602012800003010000003080000088 +S315400183E083480000842860808188A0000100000045 +S315400183F00100000001000000D8042004C804600008 +S31540018400DA05200CC4056008C604A014C204E010B5 +S31540018410980B20039A0B6001892B0004852B40029F +S315400184208608E001841100028328C0018410A0045B +S3154001843082108001C20040009210200491D0200297 +S31540018440010000007FFFE9B490102000913A200C12 +S31540018450808A200312800005841020007FFFBEEC35 +S31540018460010000008410200082102200C4A0432095 +S3154001847086102001C6A04320C4A04320031000005B +S31540018480C4804380C4A043807FFFBF4E901020002C +S3154001849081D8200030BFFE2B9DE3BFA040000822BB +S315400184A001000000808A21001280000401000000C2 +S315400184B081C7E00891E820007FFFA37623100120C1 +S315400184C0912A20047FFFA35090022005A214600048 +S315400184D0C204600480A060000280001A821020005D +S315400184E0A010200084044001C8044001C600A00435 +S315400184F0C200A0089B39201F818360000100000053 +S3154001850001000000010000008479000380A0800181 +S3154001851002800004A00420017FFFA34290102001A5 +S3154001852082040010820040108328600284044001C6 +S31540018530C400A00480A0A00012BFFFEC8404400147 +S3154001854023100120A2146138C204600480A0600097 +S315400185500280001982102000A010200084044001EE +S31540018560C8044001C600A004C200A00881802000C2 +S3154001857001000000010000000100000084710003B9 +S3154001858080A0800102800004A00420017FFFA32572 +S31540018590901020028204001082004010832860025D +S315400185A084044001C400A00480A0A00012BFFFEDD6 +S315400185B084044001400008890100000080A2200097 +S315400185C012BFFFBC901020037FFFA316B0102000FE +S315400185D081C7E00881E800009DE3BFA07FFFA32D8E +S315400185E001000000912A20047FFFA3079002200486 +S315400185F0400007CF0100000080A221230280000431 +S31540018600010000007FFFA30790102001400007C62C +S3154001861001000000808A21000280002923100120E8 +S31540018620A2146180C204600880A06009028000151E +S3154001863082102000A010200084044001C60440019D +S31540018640C800A004C200A0088459000380A080018C +S3154001865002800004A00420017FFFA2F290102002B4 +S315400186608204001082004010832860028404400185 +S31540018670C400A00880A0A00912BFFFF184044001F4 +S31540018680400007B80100000080A2200002800023BC +S3154001869001000000400007B30100000080A2200055 +S315400186A002800016010000004000079F0100000003 +S315400186B0808A2200128000040100000081C7E00880 +S315400186C091E82000400007F80100000080A2200048 +S315400186D00280001A01000000400007F3010000007B +S315400186E080A2200012BFFFF6010000007FFFA2CD4D +S315400186F09010200430BFFFF27FFFA2CA90102003E2 +S315400187004000078901000000808A220002BFFFEC79 +S315400187100100000030BFFFEC7FFFA2C29010200392 +S31540018720400007900100000080A2200012BFFFDF39 +S315400187300100000030BFFFF17FFFA2BA9010200474 +S3154001874030BFFFE6000000009DE3BFA0941020006B +S31540018750111000619012237C131000619212638004 +S31540018760171000619612E388191000619813238C43 +S3154001877093C2000081C240001080019181C2C000B5 +S3154001878081C300001080018E9402A0019402A001D1 +S3154001879080A2A0031280018A0100000087440000E4 +S315400187A08D30E00E8C89A00780A1A000028000C711 +S315400187B001000000AF30E00BAE0DE00780A5E00000 +S315400187C0128000C20100000080A1A0021280003583 +S315400187D00100000025100000E41C80002510000067 +S315400187E029100000A8152104A6100012AA10001293 +S315400187F0AC100014A1802046A4100000AA1000006D +S3154001880001000000A180204EA810210001000000B7 +S31540018810A18000000100000001000000E83CA030FA +S3154001882082A480131280016682A50016128001641B +S315400188300100000001000000010000008744000023 +S315400188408D30E00B8C89A0078CA1A0051280015CBC +S31540018850A1800000010000000100000001000000AD +S31540018860E81CA03082A500161280015582A540124F +S31540018870A410000012800152010000000100000016 +S31540018880874400008D30E00B8C89A0078CA1A003A2 +S315400188901280014B010000001080008C0100000095 +S315400188A080A1A0011280002325100000E41C800055 +S315400188B02510000029100000A8152104A610001259 +S315400188C0AA100012AC100014A1802046A41000008A +S315400188D0AA10000001000000A180204EA81021002E +S315400188E001000000A180000001000000010000001D +S315400188F001000000E83C800082A480131280013010 +S3154001890082A500161280012E010000000100000020 +S31540018910874400008D30E00B8C89A0078CA1A00212 +S31540018920128001270100000010800068010000004C +S3154001893080A1A00312800065A6100000A210200E9F +S31540018940A1844000A6100000A1800000A814E00008 +S31540018950AB44000001000000AC14E000010000003F +S31540018960AF44000080A5200012800115AA8D6E003B +S3154001897080A540001280011280A5A000128001103E +S31540018980AF35E00BAE0DE00780A5E0011280010C8A +S3154001899001000000A0100000A1844000A6100000C4 +S315400189A0A1800000E8180000AC100000AE100000E5 +S315400189B0EC04C000EE04E00480A50016128001001C +S315400189C080A54017128000FE01000000A54400006A +S315400189D0A534A00BA40CA00780A4A001128000F826 +S315400189E001000000A0100000A1844000A610000074 +S315400189F0A1800000A210200AA1844000A41000001A +S31540018A00A1800000E8180000AC100000AE10000084 +S31540018A10EC04C012EE04E00480A50016128000E8C2 +S31540018A2080A54017128000E601000000A544000021 +S31540018A30A534A00BA40CA00780A4A002068000E0E8 +S31540018A400100000021100120A0142200EC1C0000AE +S31540018A50A0042008E81C0000A1844000A6100000E4 +S31540018A60A1800000A210200EA1844000A410001095 +S31540018A70AC100000AE100000A18000000100000013 +S31540018A8001000000EC3C8013AC100000AE10000069 +S31540018A90E81CC01280A50016128000C980A54017A7 +S31540018AA0128000C701000000A5440000A534A00BB8 +S31540018AB0A40CA00780A4A004128000C101000000FC +S31540018AC010800002010000008B4440008A09601FAB +S31540018AD080A160010280000A8C1000059DE3BFA0C1 +S31540018AE08AA1600116BFFFFE0100000081E8000077 +S31540018AF08CA1A00116BFFFFE01000000010000008D +S31540018B0001000000A023A080A02C20078E10001099 +S31540018B10A3480000E2240000C2242004C43C2008EB +S31540018B20C83C2010CC3C2018F03C2020F43C2028A6 +S31540018B30F83C2030FC3C2038D03C2040D43C2048F6 +S31540018B40D83C2050DC3C2058A5500000E42420604D +S31540018B5080102008821020018410200286102003F4 +S31540018B60881020048A1020058C1020068190000070 +S31540018B70A42C601F818C80000100000001000000D0 +S31540018B800100000003004040821061018410000092 +S31540018B9086100000894440008809201F8610000481 +S31540018BA0A010000284004002A2100002840040028C +S31540018BB0A410000284004002A61000028400400274 +S31540018BC0A810000284004002AA100002840040025C +S31540018BD0AC10000284004002AE1000028400400244 +S31540018BE0901000028400400292100002840040026C +S31540018BF09410000284004002961000028400400254 +S31540018C0098100002840040029A100002840040023B +S31540018C109C100002840040029E1000028400400223 +S31540018C2081E0000086A0E00116BFFFDE01000000E2 +S31540018C300300404082106101841000008610000448 +S31540018C4080A400021280003F8400400280A44002BA +S31540018C501280003C8400400280A4800212800039C8 +S31540018C608400400280A4C002128000368400400283 +S31540018C7080A50002128000338400400280A5400294 +S31540018C80128000308400400280A580021280002DAF +S31540018C908400400280A5C0021280002A840040025E +S31540018CA080A20002128000278400400280A2400276 +S31540018CB0128000248400400280A28002128000219A +S31540018CC08400400280A2C0021280001E840040023D +S31540018CD080A300021280001B8400400280A3400250 +S31540018CE0128000188400400280A380021280001581 +S31540018CF08400400280A3C002128000128400400218 +S31540018D0081E0000086A0E00116BFFFCE0100000011 +S31540018D1080A020001280000B80A0FFFF1280000976 +S31540018D2080A160051280000780A1A006128000057F +S31540018D3001000000A010000710800006C02420207A +S31540018D40A01000079010200110800002D02420209E +S31540018D5082100007C40040008188800001000000A5 +S31540018D600100000001000000C4186008C818601026 +S31540018D70CC186018F0186020F4186028F818603094 +S31540018D80FC186038D0186040D4186048D818605034 +S31540018D90DC186058E4006060C20060048194800081 +S31540018DA0010000000100000001000000A0100007C2 +S31540018DB0F004202081C7E00881E8000010BFFFFCD5 +S31540018DC0B01000000100000081D8200081C3E008F6 +S31540018DD0010000000328000084106004952AA00DBC +S31540018DE0D0204000922270009202400AD220800098 +S31540018DF081C3E0080100000003100124C400619C06 +S31540018E0003100124C200618C852A4002861020018C +S31540018E108328C00182007FFF900A000190008008EC +S31540018E208213C0007FFFE74C9E1040000100000006 +S31540018E3003100124C400619C03100124C200618C0B +S31540018E40852A4002861020018328C00182007FFFC7 +S31540018E50900A0001900080088213C0007FFFE73A24 +S31540018E609E104000010000009DE3BFA02D1001248B +S31540018E70C205A190A410001880A0600004800020C3 +S31540018E80B01020012F1001242B100124D005E19CA4 +S31540018E9029100124AC15A190AE15E19CAA15618C4F +S31540018EA0A815217CA0102000A2102000A6102001A8 +S31540018EB0C2054000832CC00182007FFF820C8001E5 +S31540018EC0912C00087FFFE72090020001C2050000B7 +S31540018ED0901A0012820A000180A00001C20580009A +S31540018EE0A2647FFFA004200180A0401034BFFFF19F +S31540018EF0D005C00080A00011B0603FFF81C7E008E7 +S31540018F0081E800009DE3BFA003100124C400619CD9 +S31540018F1003100124C200618CB32E4002841020014B +S31540018F208328800182007FFF820E00019210001A81 +S31540018F307FFFE70B9006400181C7E00881E800000A +S31540018F409DE3BFA003100124C400619C03100124CA +S31540018F50C200618CB32E4002841020018328800117 +S31540018F6082007FFF820E00019210001A7FFFE6F811 +S31540018F709006400181C7E00881E800000310012402 +S31540018F80C400618403100124C2006180852A400225 +S31540018F90861020018328C00182007FFF900A0001CC +S31540018FA0900080088213C0007FFFE6E39E104000D8 +S31540018FB0010000009DE3BFA003100124C4006184A9 +S31540018FC003100124C2006180B32E400284102001A7 +S31540018FD08328800182007FFF820E00019210001AD1 +S31540018FE07FFFE6D79006400181C7E00881E800008F +S31540018FF09DE3BFA003100124C40061840310012432 +S31540019000C2006180B32E4002841020018328800172 +S3154001901082007FFF820E00019210001A7FFFE6C494 +S315400190209006400181C7E00881E800000310012451 +S31540019030C400618403100124C2006180852A400274 +S31540019040861020018328C00182007FFF900A00011B +S31540019050900080088213C0007FFFE6B39E10400057 +S3154001906001000000033FFFBF821063089DE38001BA +S315400190700310004A82106060C227BFEC0310004A09 +S31540019080821060A02F10004AC227BFF4AE15E040FF +S315400190903510004AEE27BFE8B416A080901020068E +S315400190A07FFFA059F427BFF07FFFE69B9010200079 +S315400190B0213FFFBF920A3FF0A01423689010200081 +S315400190C07FFFE697A0078010230000307FFFE692DE +S315400190D090102000808A001112BFFFFD01000000A0 +S315400190E081D82000230000307FFFE68B90102000BE +S315400190F0808A001112BFFFFD0100000023100124E8 +S315400191007FFFE6859010200013002040A410000840 +S315400191109212600F921200097FFFE68190102000A3 +S315400191207FFFE67D90102008D02461787FFFE67AA4 +S315400191309010200C09100124C40461789938A014B8 +S3154001914013100124980B200F8603200AC621218083 +S31540019150091001240310012496102400C6212184FC +S31540019160893A20148809200F9401200AD422618C5F +S31540019170131001242D100124D0206188D422619C32 +S3154001918015100124932AC004833A2018D222A198AB +S315400191901510012482086003820060011B20000033 +S315400191A08801200837100124C225A190920120028E +S315400191B0821020019328400992234009D222A17CA2 +S315400191C01510012487284003913A20109A23400321 +S315400191D0992AC00CDA26E194D822A174A20A200762 +S315400191E08738A018A93CA00CBA210011A408E003B5 +S315400191F08538A010A88D2003AA08A007A404A001C1 +S31540019200AB284015A3284011AB28401590100017F4 +S31540019210AA057FFFA610200002800123B807BFE8F8 +S31540019220A6042020030048D182106167C224C000F1 +S3154001923003226AF3821061EFC2242024C20C20204B +S3154001924080A0600102800004010000007FFF9FF5BD +S315400192509010201AC20C202180A0602302800004B5 +S31540019260010000007FFF9FEF9010201BC20C2022BF +S3154001927080A0604502800004010000007FFF9FE955 +S315400192809010201CC20C202380A06067028000043D +S31540019290010000007FFF9FE39010201DC20C202497 +S315400192A080A0608902800004010000007FFF9FDDED +S315400192B09010201EC20C202580A060AB02800004C5 +S315400192C0010000007FFF9FD79010201FC20C20266F +S315400192D080A060CD02800004010000007FFF9FD185 +S315400192E090102020C20C202780A060EF028000044D +S315400192F0010000007FFF9FCB90102021C214202047 +S31540019300832860108330601080A0612302800004AE +S31540019310010000007FFF9FC390102022C414202229 +S315400193208528A010030000118530A01082106167C6 +S3154001933080A0800102800004010000007FFF9FB9E8 +S3154001934090102023C41420248528A0100300002255 +S315400193508530A010821061AB80A08001028000049C +S31540019360010000007FFF9FAF90102024C4142026E7 +S315400193708528A010030000338530A010821061EFCC +S3154001938080A0800102800005821020307FFF9FA5CA +S315400193909010202582102030C22C2020030C08D1A9 +S315400193A082106167C404C00080A08001028000056C +S315400193B0821020317FFF9F9B901020278210203101 +S315400193C0C22C2021030C0C5182106167C404C000D9 +S315400193D080A0800102800005821020327FFF9F918C +S315400193E09010202882102032C22C2022030C0C4CD3 +S315400193F082106267C404C00080A08001028000051B +S31540019400821020337FFF9F879010202982102033BE +S31540019410C22C2023030C0C4C82106233C404C000BE +S3154001942080A0800102800005821020347FFF9F7D4D +S315400194309010202A82102034C22C2024030D2AF3B6 +S31540019440821061EFC404202480A0800102800005BF +S31540019450821020357FFF9F739010202B821020357C +S31540019460C22C2025030D0D73821061EFC404202404 +S3154001947080A0800102800005821020367FFF9F690F +S315400194809010202C82102036C22C2026030D0D4D23 +S31540019490821062EFC404202480A08001028000056E +S315400194A0821020377FFF9F5F9010202D821020373A +S315400194B0C22C2027030D0D4D82106237C40420248F +S315400194C080A0800102800005030000107FFF9F55A8 +S315400194D09010202E0300001082106041C2342020DB +S315400194E00310104C82106233C404C00080A0800176 +S315400194F002800005030000107FFF9F4A9010202F35 +S315400195000300001082106243C2342022031010501F +S3154001951082106243C404C00080A08001028000051D +S31540019520030000117FFF9F3F901020300300001180 +S3154001953082106045C23420240311114D82106237D6 +S31540019540C404202480A0800102800005030000118C +S315400195507FFF9F3490102031030000118210624733 +S31540019560C23420260311115182106247C4042024BB +S3154001957080A0800102800004010000007FFF9F2936 +S315400195809010203281D82000C205A19080A06000B1 +S315400195900480001B80A520002510012419100124F8 +S315400195A0A414A1909813219C8810200080A46000E7 +S315400195B09B2920100480000C82102000C403000067 +S315400195C085290002840040028528A0028610400DAC +S315400195D082006001C624000280A0401132BFFFF91B +S315400195E0C4030000C20480008801200180A0400419 +S315400195F014BFFFF080A4600080A5200012800028DF +S31540019600230000107FFFE54490102000808A00115E +S3154001961012BFFFFDC205A19080A060000480001B1F +S31540019620010000002510012427100124A414A19053 +S31540019630A614E17C10800006A2102000A20460015D +S3154001964080A0401104800011010000009210001119 +S315400196507FFFFDF890100010C204C000901C000866 +S31540019660808A000132BFFFF6C20480007FFF9EED73 +S3154001967090102033C2048000A204600180A04011F2 +S3154001968014BFFFF4921000117FFFE52390102000D4 +S315400196909212200F7FFFE5229010200081C7E0083B +S315400196A091E820009FC20000A604E00180A4801337 +S315400196B004800008832CE002D00700019FC200000D +S315400196C0A604E00180A4801314BFFFFC832CE002B2 +S315400196D07FFFE51190102000B616E194920A3FFCF7 +S315400196E0A8102000901020007FFFE50DB810200043 +S315400196F0B207BFE810800005A610200080A48013A1 +S3154001970024800012A8052001921000137FFFFE4815 +S3154001971090100017820A001580A0401512BFFFF86D +S31540019720A604E001C206C000901DC008900A0001CF +S3154001973080A00008B8673FFF80A4801314BFFFF4E0 +S3154001974092100013A805200180A48014048000040F +S31540019750832D200210BFFFE8EE0640017FFFE4EEB5 +S3154001976090102000A6100008901020007FFFE4EC26 +S315400197709214E00380A720000280018301000000CB +S31540019780A73CE013808CE0031280018501000000B4 +S3154001979081D82000250000307FFFE4DF90102000B3 +S315400197A0808A001212BFFFFDAA100008C205A190CF +S315400197B080A060000480000F053FFFBF25100124F3 +S315400197C0A6102000A414A19092100013901000102E +S315400197D07FFFFDDC94102000C2048000A604E00156 +S315400197E080A0401314BFFFFA92100013053FFFBF3C +S315400197F0821020008410A36884078002C0204002A2 +S315400198008200600480A0607C12BFFFFD0100000061 +S3154001981082102005C224000082102001C2242004A7 +S3154001982082102002C224200882102003C224200C68 +S31540019830901000107FFFFD8DA804200480A2200017 +S315400198400280014A01000000C204000080A06005B8 +S3154001985002800004010000007FFF9E7290102006E6 +S315400198607FFFFD829010001080A220001280019996 +S31540019870C205A19080A06000048000120100000092 +S3154001988025100124A6102000A414A19092100013C3 +S31540019890941020007FFFFD9C901000109210001341 +S315400198A0901000147FFFFD9894102000C2048000A0 +S315400198B0A604E00180A0401314BFFFF692100013E6 +S315400198C07FFFE4AB90100010A60420207FFFE4A8A0 +S315400198D0901000137FFFE4A6900420407FFFE4A48C +S315400198E090042060C205A19080A0600004800180A0 +S315400198F0B810200025100124A414A190AE10200018 +S31540019900921000177FFFFD3D90100010C2048000A9 +S31540019910901A200580A00008AE05E001B8673FFF18 +S3154001992080A0401714BFFFF89210001780A72000AF +S315400199300280016F01000000033FFFBF8210636890 +S31540019940C41F8001C43FBFA8C207BFA880A060054D +S315400199501280000601000000C207BFAC80A0600172 +S3154001996002800005C205A1907FFF9E2E901020091E +S31540019970C205A19080A06000048000382510012412 +S31540019980B8102000A414A190AE1020009210001728 +S315400199907FFFFD1A90100014C2048000901A200126 +S315400199A080A00008AE05E001B8673FFF80A04017E0 +S315400199B014BFFFF89210001780A7200112800027DC +S315400199C0833D6013808860031280002A01000000F5 +S315400199D0C2042004C224000082102005C2240000D3 +S315400199E090102001D024200482102002C224200895 +S315400199F082102003C224200C92100011400003B3B0 +S31540019A00912A001DA52A2002032EEEEE821063BB89 +S31540019A10C22400127FFFFD159010001080A2200085 +S31540019A201280013701000000C4040012032EEEEE3D +S31540019A30A93D600C821063BB80A0800102BFFDFA84 +S31540019A40A80D2003901020127FFF9DF6A93D600CC2 +S31540019A5010BFFDF5A80D20037FFF9DF29010200A4F +S31540019A60833D60138088600302BFFFDA0100000076 +S31540019A707FFFE42990102000033FFFF08210603FF2 +S31540019A80920A00017FFFE4269010200092102000E8 +S31540019A9094102000AA07BFA87FFFFD1B9010001558 +S31540019AA07FFFE41D901020000303C00092120001C5 +S31540019AB07FFFE41B90102000C205A19080A06000AA +S31540019AC00480000F8210200125100124A8102000D7 +S31540019AD0A414A19092100014901000157FFFFD0A66 +S31540019AE094102005C2048000A805200180A04014DE +S31540019AF014BFFFFA9210001482102001C22FBFA892 +S31540019B000300400082106005C407BFA880A0800101 +S31540019B1002800004010000007FFF9DC29010200BCF +S31540019B207FFFE3FD90102000833A20068208600300 +S31540019B3080A0600102800004010000007FFF9DB902 +S31540019B409010200C7FFFE3F4901020000303C00027 +S31540019B5025000030922A00017FFFE3F1901020009A +S31540019B607FFFE3ED90102000808A001212BFFFFDB7 +S31540019B7092102000941020007FFFFCE39010001506 +S31540019B807FFFE3E5901020002503C00092120012EA +S31540019B907FFFE3E3901020007FFFE3DF901020007A +S31540019BA0808A001202BFFFFDAE100008C205A190D7 +S31540019BB080A060000480001025100124B810200107 +S31540019BC0B92F0011A414A190B8073FFFA810200097 +S31540019BD092100014901000157FFFFCDA9410001CBF +S31540019BE0C2048000A805200180A0401414BFFFFADA +S31540019BF0921000141303C00090102000922DC0094A +S31540019C007FFFE3C72503C0007FFFE3C39010200019 +S31540019C10808A001212BFFFFD01000000C407BFA8E1 +S31540019C20030040008210600580A08001028000048C +S31540019C30010000007FFF9D7B9010200D7FFFE3B662 +S31540019C4090102000833A20088208600380A06001BA +S31540019C5002800005841020117FFF9D729010200F15 +S31540019C6084102011861020559010200025000030C8 +S31540019C70C43FBFF87FFFE3A801000000033C3FFF5C +S31540019C800503C0008210633F820A00019010200044 +S31540019C907FFFE3A3921040027FFFE39F90102000D5 +S31540019CA0808A001212BFFFFDAE07BFF87FFFE3BEF9 +S31540019CB090100017C205A19080A060000480000F9B +S31540019CC00100000025100124AA07BFFCA414A1909D +S31540019CD0A810200092100014901000157FFFFC8AF6 +S31540019CE094102055C2048000A805200180A040148C +S31540019CF014BFFFFA921000147FFFE3AB90100017D8 +S31540019D0080A220110280008180A260557FFF9D457F +S31540019D10901020107FFFE38090102000833A2006A8 +S31540019D208208600380A0600102800004A41000083C +S31540019D307FFF9D3C90102010133C3FF09010200077 +S31540019D409212603F920C80097FFFE3752500003037 +S31540019D507FFFE37190102000808A001212BFFFFD41 +S31540019D60AA10000830BFFF1B7FFF9D2E90102005D3 +S31540019D70C204000080A0600512BFFEB801000000C9 +S31540019D8030BFFEB87FFF9D2790102001A73CE0130E +S31540019D90808CE00302BFFE7F010000007FFFE35E8F +S31540019DA090102000133FFFF0AA1000089212603F66 +S31540019DB0920A00097FFFE35A901020007FFFE2B12B +S31540019DC0A810001A0303C000133C3FFF9010200067 +S31540019DD0921263FC920D4009A61020007FFFE350CA +S31540019DE09212400192100013901000147FFFFC72F2 +S31540019DF094102000A604E00180A4801334BFFFFB29 +S31540019E0092100013901020001303C0007FFFE3441B +S31540019E10921540097FFFE29B010000007FFFE33E70 +S31540019E2090102000833A200A8208600380A06001D6 +S31540019E3002800005250000307FFF9CFA9010200229 +S31540019E40250000307FFFE33490102000808A001205 +S31540019E5012BFFFFD0100000001000000920A3FFC15 +S31540019E607FFFE32F901020009010001492102000E5 +S31540019E707FFFFC6094102000010000007FFFE32675 +S31540019E8090102000033C3FFF821063FC820A0001D0 +S31540019E90901020007FFFE322921060030100000032 +S31540019EA07FFFE278010000007FFFE31B9010200056 +S31540019EB0833A200C8208600380A0600102BFFE3510 +S31540019EC0010000007FFF9CD79010200330BFFE3178 +S31540019ED07FFF9CD490102007C205A19080A060000E +S31540019EE034BFFE692510012430BFFE767FFF9CCD2D +S31540019EF09010200810BFFE92033FFFBF7FFF9CC911 +S31540019F009010201130BFFEC912BFFF810100000031 +S31540019F1030BFFF819DE3BFA07FFFFC5301000000DE +S31540019F2013002040B01000089212600F7FFFE2FC40 +S31540019F309010200081C7E00881E800009DE3BFA0A2 +S31540019F407FFF9CAA1100412C82102007EC062004B9 +S31540019F50E0062004C2262008AC0DA003AC05A001F2 +S31540019F6001000000C02600007FFF9CA79010200A38 +S31540019F700300020084103FFFB8060001C426000119 +S31540019F80A13C2002292AAAAAA00C27FFA81522AA89 +S31540019F902B155555A12C2008AA1561558810001C72 +S31540019FA0C2060001A8084014AA0840159A102000CC +S31540019FB080A420002280000D9A03600186012020A2 +S31540019FC08410000482102000EA208000E820C000AE +S31540019FD0820060108400A04080A0401006BFFFFBB5 +S31540019FE08600E0409A03600180A5800D14BFFFF111 +S31540019FF0880120043B000200AE102000BA17602001 +S3154001A000BA06001D80A4200022800017AE05E0019B +S3154001A010A610001CA410001DA2102000C204C000FE +S3154001A02080A0401502800004010000007FFF9C7D56 +S3154001A03090102001C204800080A0401422800005B7 +S3154001A040A20460107FFF9C7790102001A20460104B +S3154001A050A604E04080A4401006BFFFF1A404A0403E +S3154001A060AE05E00180A5801714BFFFE7BA0760047B +S3154001A0707FFF9C659010200C2F0008001B1555553D +S3154001A080AE060017092AAAAA9A136155881122AA6F +S3154001A09098100017961020001500020080A4200099 +S3154001A0A02280000D9602E001860320048410000CF4 +S3154001A0B082102000DA208000C820C00082006002A1 +S3154001A0C08400A00880A0401006BFFFFB8600E00880 +S3154001A0D09602E00180A5800B14BFFFF19803000AA8 +S3154001A0E02B155555292AAAAAAA156155A81522AA9A +S3154001A0F0BA1020003900020080A4200022800017F7 +S3154001A100BA076001A605E004A4100017A2102000BA +S3154001A110C204800080A040150280000401000000B6 +S3154001A1207FFF9C4090102003C204C00080A04014D1 +S3154001A13022800005A20460027FFF9C3A9010200312 +S3154001A140A2046002A404A00880A4401006BFFFF147 +S3154001A150A604E008BA07600180A5801D14BFFFE789 +S3154001A160AE05C01C2F0008001B155555AE15E00461 +S3154001A170092AAAAAAE0600179A136155881122AA7E +S3154001A18098100017961020001500020080A42000A8 +S3154001A1902280000D9602E00186033FFC8410000CEC +S3154001A1A082102000DA208000C820C00082006002B0 +S3154001A1B08400A00880A0401006BFFFFB8600E0088F +S3154001A1C09602E00180A5800B14BFFFF19803000AB7 +S3154001A1D02B155555292AAAAAAA156155A81522AAA9 +S3154001A1E0BA1020003900020080A420002280001706 +S3154001A1F0BA076001A605FFFCA4100017A2102000B3 +S3154001A200C204800080A040150280000401000000C5 +S3154001A2107FFF9C0490102004C204C00080A040141B +S3154001A22022800005A20460027FFF9BFE901020045D +S3154001A230A2046002A404A00880A4401006BFFFF156 +S3154001A240A604E008BA07600180A5801D14BFFFE798 +S3154001A250AE05C01C82102005C2262008032000003E +S3154001A260C226000081C7E00881E80000033FFFBF26 +S3154001A270821063609DE380017FFFFAD425200000B0 +S3154001A2804000016E2D0000307FFFE2239010200830 +S3154001A290AA1000087FFFE2209010200C7FFF9BFD53 +S3154001A2A0AE100008912A20047FFF9BD79002200C14 +S3154001A2B082102001873D60148608E00F8600E00A7F +S3154001A2C0A73D6010A13D6018853DE014A60CE0074E +S3154001A2D08408A00FA604E0028400A00AA728401320 +S3154001A2E0A00C2003A93DE010A0042001A80D2007E1 +S3154001A2F0A12C0003A8052002AA2480108604FFFF92 +S3154001A300A9284014A33DE01882053FFFA20C600333 +S3154001A310A2046001AA154003A32C4002A424801183 +S3154001A320A41480017FFFE1FC90102000808A001672 +S3154001A33012BFFFFD133FFFBF90100011921263C081 +S3154001A34015155555920780097FFFE1869412A1554F +S3154001A35080A220001280007001000000133FFFBF61 +S3154001A36090100011921263C0152AAAAA9207800979 +S3154001A3707FFFE1909412A2AA80A22000128000637E +S3154001A380010000007FFF9BC301000000912A2004C9 +S3154001A3907FFF9B9D9002200A40000125010000009D +S3154001A3A0032AAAAA981062AA82106200901000118C +S3154001A3B0920C8001941000127FFFE1A796100014C1 +S3154001A3C080A220001280004D010000000315555562 +S3154001A3D0981061558210610090100011941000127E +S3154001A3E0961000147FFFE19C920C800180A2200010 +S3154001A3F01280003F010000007FFF9BA60100000084 +S3154001A400912A20047FFF9B809002200B9010001020 +S3154001A410131555557FFFE1779212615580A22000B1 +S3154001A4201280002F0100000090100010132AAAAAE2 +S3154001A4307FFFE170921262AA80A22000128000255D +S3154001A440010000007FFF9B9301000000912A200438 +S3154001A4507FFF9B6D9002200990100010921000150D +S3154001A46094100013172AAAAA7FFFE16E9612E2AA58 +S3154001A47080A22000128000130100000090100010FD +S3154001A4809210001594100013171555557FFFE1657D +S3154001A4909612E15580A220000280000401000000CE +S3154001A4A07FFF9B60901020087FFFFA48B010200084 +S3154001A4B0400000E20100000081C7E00881E8000099 +S3154001A4C07FFF9B589010200710BFFFEE90100010A1 +S3154001A4D07FFF9B549010200630BFFFDB7FFF9B51CF +S3154001A4E09010200510BFFFD2901000107FFF9B4DAA +S3154001A4F09010200430BFFFC17FFF9B4A901020037C +S3154001A50010BFFFB4031555557FFF9B46901020029F +S3154001A51030BFFF9D7FFF9B439010200110BFFF91ED +S3154001A520133FFFBF81C3E008914440008080000093 +S3154001A530151001209412A1EC901020009210224691 +S3154001A54081800000010000000100000001000000C0 +S3154001A550D00280009122400881C3E008010000003A +S3154001A56081800000901020018090200180F0200120 +S3154001A5701280004B010000000100000001000000B4 +S3154001A580010000008090200180F8200112800044E3 +S3154001A5900100000001000000010000000100000070 +S3154001A5A08090200180FA3FFF010000001680003CA8 +S3154001A5B00100000001000000010000000100000050 +S3154001A5C08180000090102001809020010100000050 +S3154001A5D080D02001128000320100000001000000FD +S3154001A5E0010000000100000080D220010280002C01 +S3154001A5F00100000080D23FFF1680002901000000C3 +S3154001A60080DA3FFF9340000080A27FFF1280002442 +S3154001A6100100000080D23FFF93480000933260144E +S3154001A620920A600F80A260081280001D010000009E +S3154001A6308180000090102001945220049452A0047D +S3154001A6409452A00496A2A040128000150100000079 +S3154001A650818000009010200280A00000328000100E +S3154001A6609052000880A220021280000D01000000D5 +S3154001A670818000009010200280A0000001000000AF +S3154001A680328000079052000880A220021280000406 +S3154001A6900100000081C3E0089010200181C3E00859 +S3154001A6A0901000001315555592126155A582400030 +S3154001A6B001000000010000000100000095448000F7 +S3154001A6C080A2400A1280004301000000923A4000F5 +S3154001A6D0A5824000010000000100000001000000C9 +S3154001A6E09544800080A2400A1280003A0100000091 +S3154001A6F01100003F901223FFA580000081800000D9 +S3154001A70001000000010000000100000093F23FFF3C +S3154001A7109A10000993F23FFF93F23FFF93F23FFFF6 +S3154001A72093F23FFF93F23FFF93F23FFF93F23FFFD6 +S3154001A7309940000097448000153FFC009412A00800 +S3154001A74080A2400A1280002380A2400B1280002181 +S3154001A75080A320071280001F113FFF809012200125 +S3154001A76080A340081280001B1100003F901223FF76 +S3154001A770A58000008180000001000000010000006A +S3154001A7800100000093FA3FFF93FA3FFF93FA3FFF20 +S3154001A79093FA3FFF93FA3FFF93FA3FFF93FA3FFF46 +S3154001A7A093FA3FFF994000009744800080A26008D9 +S3154001A7B01280000880A260081280000680A3200053 +S3154001A7C0128000040100000081C3E00890102001BE +S3154001A7D081C3E008901000008180000090102002A3 +S3154001A7E080A00000328000109072000880A22002F2 +S3154001A7F01280000D010000008180000090102002AF +S3154001A80080A000000100000032800007907200081D +S3154001A81080A22002128000040100000081C3E008EA +S3154001A8209010200181C3E00890100000C0A00040B4 +S3154001A83081C3E00801000000110020409012200F62 +S3154001A840D0A0004081C3E008010000009DE3BFA005 +S3154001A8507FFFE0B190102008A21000087FFFE0AE14 +S3154001A8609010200CA0100008C0A00040833C60144A +S3154001A8708208600F8200600A913C6018900A2003AA +S3154001A880900220017FFFE01B912A0001833C2014A6 +S3154001A8908208600F8200600A913C2018900A2003CA +S3154001A8A0900220017FFFE021912A00017FFFF947B5 +S3154001A8B001000000110020409012200FD0A000405E +S3154001A8C081C7E00881E800009812000981820000F2 +S3154001A8D09AAB2FFF02800025988800009923000932 +S3154001A8E0992300099923000999230009992300090D +S3154001A8F099230009992300099923000999230009FD +S3154001A90099230009992300099923000999230009EC +S3154001A91099230009992300099923000999230009DC +S3154001A92099230009992300099923000999230009CC +S3154001A93099230009992300099923000999230009BC +S3154001A94099230009992300099923000999230009AC +S3154001A95099230009992300099923000999230000A5 +S3154001A96081C3E00891400000992300099923000919 +S3154001A970992300099923000999230009992300097C +S3154001A980992300099923000999230009992300096C +S3154001A9909923000999230009992300009B4000004F +S3154001A9A0992B200C9B33601481C3E0089013400C13 +S3154001A9B01080000B86102000809240081680000807 +S3154001A9C086100008809240001680000480920000A4 +S3154001A9D01680000392200009902000089A924000B8 +S3154001A9E0128000059610000891D0200281C3E0082C +S3154001A9F09010000080A2C00D0A80009594100000BE +S3154001AA000302000080A2C0010A80002898100000BD +S3154001AA1080A340011A80000D841020019B2B600405 +S3154001AA2010BFFFFC980320019A83400D1A8000074E +S3154001AA308400A001832860049B3360019A0340018E +S3154001AA40108000078420A00180A3400B0ABFFFF7B6 +S3154001AA5001000000028000020100000084A0A00164 +S3154001AA6006800076010000009622C00D9410200158 +S3154001AA701080000A01000000952AA0010680000509 +S3154001AA809B3360019622C00D108000049402A00100 +S3154001AA909602C00D9422A00184A0A00116BFFFF723 +S3154001AAA08092C000308000659B2B600480A3400BE0 +S3154001AAB008BFFFFE9883200102800065982320018C +S3154001AAC08092C000952AA0040680002F9B33600126 +S3154001AAD096A2C00D068000179B33600196A2C00D59 +S3154001AAE00680000B9B33600196A2C00D06800005CF +S3154001AAF09B33600196A2C00D108000509402A00FB6 +S3154001AB009682C00D1080004D9402A00D9682C00D14 +S3154001AB10068000059B33600196A2C00D1080004758 +S3154001AB209402A00B9682C00D108000449402A009A5 +S3154001AB309682C00D0680000B9B33600196A2C00D24 +S3154001AB40068000059B33600196A2C00D1080003B34 +S3154001AB509402A0079682C00D108000389402A00589 +S3154001AB609682C00D068000059B33600196A2C00DFA +S3154001AB70108000329402A0039682C00D1080002FEF +S3154001AB809402A0019682C00D068000179B33600196 +S3154001AB9096A2C00D0680000B9B33600196A2C00DA4 +S3154001ABA0068000059B33600196A2C00D10800023EC +S3154001ABB09402BFFF9682C00D108000209402BFFD13 +S3154001ABC09682C00D068000059B33600196A2C00D9A +S3154001ABD01080001A9402BFFB9682C00D10800017A8 +S3154001ABE09402BFF99682C00D0680000B9B3360012B +S3154001ABF096A2C00D068000059B33600196A2C00D4A +S3154001AC001080000E9402BFF79682C00D1080000B93 +S3154001AC109402BFF59682C00D068000059B33600104 +S3154001AC2096A2C00D108000059402BFF39682C00D16 +S3154001AC30108000029402BFF198A3200116BFFFA223 +S3154001AC408092C000268000029602C0098090C00012 +S3154001AC50268000029620000B81C3E0089010000B6D +S3154001AC6092100008941020009010200096102000A9 +S3154001AC708213C000400001E39E1040000100000025 +S3154001AC809210000803100121D00062A88213C0006F +S3154001AC90400002629E104000010000009210000830 +S3154001ACA003100121D00062A88213C00040000003B6 +S3154001ACB09E104000010000009DE3BFA084102000CB +S3154001ACC08206600B80A0601608800004A010201048 +S3154001ACD0A0087FF88534201F80A400190A80004609 +S3154001ACE08088A0FF1280004401000000400001AFAF +S3154001ACF09010001880A421F7188000418334200960 +S3154001AD0023100120A214622082044010E400600C4A +S3154001AD1080A480010280010F99342003C604A00457 +S3154001AD20C404A00CC204A0088608FFFC8604800364 +S3154001AD30C800E00488112001C220A008C820E00410 +S3154001AD40C420600C9010001840000192B004A00885 +S3154001AD5081C7E00881E80000E6046008E804E004F1 +S3154001AD60A80D3FFC8225001080A0600F148000D200 +S3154001AD7080A40014031001232F100121EA0060F87A +S3154001AD80C205E22CAA05601080A07FFF0280000464 +S3154001AD90AA054010AA056FFFAA0D70009010001871 +S3154001ADA0400001889210001580A23FFF02800009F1 +S3154001ADB0A41000088404C01480A08008088000EC18 +S3154001ADC02D10012380A44013028000EAC205A1048C +S3154001ADD0C2046008C40060048408BFFC822080105D +S3154001ADE080A0600F1480012280A400024000016906 +S3154001ADF09010001881C7E00891E82000993420039B +S3154001AE0080A060000280000F872B200380A0600491 +S3154001AE1008800092993420069800605B80A06014F7 +S3154001AE2008800008872B200380A0605418800113F6 +S3154001AE3080A061549934200C9803206E872B2003FF +S3154001AE4023100120A214622086044003E400E00C92 +S3154001AE5080A0C0123280000BC404A00410800010F0 +S3154001AE609803200136800068C604A00CE404A00CB7 +S3154001AE7080A0C0122280000A98032001C404A004C5 +S3154001AE808408BFFC8220801080A0600F04BFFFF6BB +S3154001AE9080A0600098033FFF98032001071001201E +S3154001AEA08610E228E400E00880A0C0122280002A31 +S3154001AEB0C2046004C404A0048408BFFC822080103C +S3154001AEC080A0600F1480008A80A06000C620E00C3C +S3154001AED016800059C620E00880A0A1FF28800062A4 +S3154001AEE08530A0038330A00980A06004188000E962 +S3154001AEF08800605B8930A006880120389B292003A1 +S3154001AF009A04400DC203600880A0400D32800008BB +S3154001AF10C8006004108000E9DA04600480A340019F +S3154001AF2022800008C400600CC800600488093FFC08 +S3154001AF3080A080042ABFFFFAC2006008C400600CEA +S3154001AF40C424A00CC224A008E420600CE420A0087C +S3154001AF50C2046004853B2002881020018929000231 +S3154001AF6080A040042ABFFF7EE60460088088400432 +S3154001AF702280004B980B3FFC952B20039610000C2A +S3154001AF809404400A9A10000AE403600C80A340121C +S3154001AF903280000BC404A004108000589602E001E0 +S3154001AFA036800019C604A00CE404A00C80A340120C +S3154001AFB0228000529602E001C404A0048408BFFC2A +S3154001AFC08220801080A0600F04BFFFF680A0600041 +S3154001AFD0DA04A00CC804A00884048010A01420013F +S3154001AFE0C8236008DA21200CC420E00CC420E00804 +S3154001AFF0E024A004C2208001C620A00810800010D1 +S3154001B000C620A00CC204A00884048002C800A00483 +S3154001B01088112001C220E008C820A004C620600C87 +S3154001B02090100018400000DBB004A00881C7E0087A +S3154001B03081E8000084048002C200A00482106001FD +S3154001B040C220A00490100018400000D2B004A0080D +S3154001B05081C7E00881E800009803203810BFFF79D6 +S3154001B060872B20038928A00388044004DA0120089D +S3154001B070D6046004C824A00CDA24A0088538A002AE +S3154001B08082102001E423600C83284002E421200839 +S3154001B0908210400B10BFFFB0C224600489292001F1 +S3154001B0A08088400402BFFFFE9803200410BFFFB40E +S3154001B0B0952B200338BFFF3103100123E4046008B8 +S3154001B0C084048010A014200182106001E024A004B1 +S3154001B0D0C220A00490100018C4246008400000ADAE +S3154001B0E0B004A00881C7E00881E80000840480100C +S3154001B0F010BFFFBEA0142001808AE00312BFFFA348 +S3154001B1009A04A008808B20030280009C8202BFF82B +S3154001B110D400600880A2800122BFFFFB98033FFF55 +S3154001B120C20460048929200180A1000118BFFF0BD8 +S3154001B13080A1200022BFFF0AE60460088089000141 +S3154001B140228000928929200110BFFF8C9810000BA4 +S3154001B1508204A008E400600C80A0401202BFFF50A8 +S3154001B1609803200210BFFEEFC604A004C205A10445 +S3154001B1708205400180A0801202800067C225A10499 +S3154001B180C605E22C80A0FFFF2280006B031001213F +S3154001B1908204800184204002C425A104848CA00736 +S3154001B1A0028000060300000482102008822040022B +S3154001B1B0A404800182207000AA0480159010001812 +S3154001B1C0AA0D6FFFAA2040154000007E921000157F +S3154001B1D080A23FFF02800060841020018422001279 +S3154001B1E0840080158410A001C205A1048205400196 +S3154001B1F0C225A104C424A00480A4401302800010E7 +S3154001B200E424600880A5200F0880003A84053FF4B5 +S3154001B2108408BFF88604C002C804E00488092001F6 +S3154001B22088108004C824E00488102005C820E0085E +S3154001B23080A0A00F18800042C820E0040510012319 +S3154001B240C600A0FC80A0400338800002C220A0FCBA +S3154001B25005100123C600A10080A0400338BFFEDDD2 +S3154001B260C220A10010BFFEDCC204600828BFFF95C2 +S3154001B270E404600830BFFEDE1880001780A06554E4 +S3154001B2809934200F9803207710BFFEEE872B2003B9 +S3154001B29080A0601408BFFF1B9B29200380A0605437 +S3154001B2A01880001780A061548930A00C8801206E57 +S3154001B2B010BFFF149B2920038939200284102001E5 +S3154001B2C08528800484134002C424600410BFFF1DF6 +S3154001B2D084100001861023F018BFFEDA9810207EF4 +S3154001B2E0993420129803207C10BFFED6872B200369 +S3154001B2F08210200110BFFEB7C224A0041880001896 +S3154001B30080A065548930A00F8801207710BFFEFDCB +S3154001B3109B2920038088AFFF12BFFF9BC605E22C05 +S3154001B320C4046008860540148610E00110BFFFC4BE +S3154001B330C620A00410BFFF9AE420622C9204E008C4 +S3154001B340400000B6901000180310012310BFFFBC47 +S3154001B350C200610410BFFFA5AA1020009A1023F075 +S3154001B36018BFFEE88810207E8930A0128801207C13 +S3154001B37010BFFEE49B292003C204600482284004D6 +S3154001B38010BFFF68C224600410BFFF6D9602E0043F +S3154001B39011100121901222308213C000400003A1F6 +S3154001B3A09E10400001000000111001219012223030 +S3154001B3B08213C000400003859E104000010000003A +S3154001B3C09DE3BFA02110012490100019400001A85F +S3154001B3D0C02421A080A23FFF02800004C20421A014 +S3154001B3E081C7E00891E8000880A0600002BFFFFD28 +S3154001B3F001000000C226000081C7E00891E800086C +S3154001B4009DE3BFA021100123400003709014212C1D +S3154001B41003100074E20061B0D004614880A22000AC +S3154001B4202280003D9004614CC202200480A0601F2E +S3154001B4301480001E0100000080A620000280001238 +S3154001B44084006002C4022004820060228600A04279 +S3154001B450892860028728E002C2022188F42200047A +S3154001B460F6220003861020018728C002821040037D +S3154001B470C222218880A62002028000198210000281 +S3154001B480840060028528A00282006001C222200455 +S3154001B490F2220002B0102000400003629014212CD9 +S3154001B4A081C7E00881E800007FFFFDFD90102190F3 +S3154001B4B080A220002280001A9014212CC2046148E7 +S3154001B4C0C2220000D0246148C0222004C022218823 +S3154001B4D0C022218C10BFFFD982102000C202218CCC +S3154001B4E08610400382100002840060028528A00273 +S3154001B4F0C622218C82006001F2220002C22220046F +S3154001B500B0102000400003479014212C81C7E00869 +S3154001B51081E8000010BFFFC5D024614840000341C7 +S3154001B520B0103FFF81C7E00881E800009DE3BFA05E +S3154001B5307FFFFF9E9010001821100120A0142220A9 +S3154001B540C2042008E2006004A20C7FFC82046FEF73 +S3154001B550B2204019B20E7000B206700080A66FFF8D +S3154001B56004800009901000187FFFFF96921020007A +S3154001B570C20420088200401180A200010280000717 +S3154001B58090100018901000187FFFFF82B010200025 +S3154001B59081C7E00881E800007FFFFF8A92200019F9 +S3154001B5A080A23FFF0280000EA2244019C404200855 +S3154001B5B0A214600103100123E220A0049010001898 +S3154001B5C0B0102001C4006104B22080197FFFFF71D1 +S3154001B5D0F220610481C7E00881E80000901000185C +S3154001B5E07FFFFF7892102000C204200884220001C8 +S3154001B5F080A0A00F04BFFFE407100121C600E22C82 +S3154001B60090220003071001238410A001D020E104F9 +S3154001B61010BFFFDDC42060049DE3BFA080A660008B +S3154001B62002800050010000007FFFFF60901000186B +S3154001B63084067FF8D800A004820B3FFE0910012042 +S3154001B6408600800188112220DA00E004D601200814 +S3154001B65080A2C003028000639A0B7FFCDA20E004DB +S3154001B660808B20011280000E98102000D8067FF8AA +S3154001B6708420800C8200400CD600A0089801200846 +S3154001B68080A2C00C0280000698102001D400A00CB4 +S3154001B690D422E00C98102000D622A0089600C00DB6 +S3154001B6A0D602E004808AE0013280000A86106001F9 +S3154001B6B080A320000280002D8200400DDA00E008C0 +S3154001B6C0C600E00CC623600CDA20E0088610600153 +S3154001B6D0C220800180A3200012800020C620A00441 +S3154001B6E080A061FF28800030833060038730600985 +S3154001B6F080A0E004188000529800E05B9930600613 +S3154001B700980320389B2B20039A01000DC60360083D +S3154001B71080A0C00D32800008C800E00410800052AD +S3154001B720DA01200480A3400322800008C200E00C15 +S3154001B730C800E00488093FFC80A040042ABFFFFA04 +S3154001B740C600E008C200E00CC220A00CC620A0083A +S3154001B750C420E00CC42060087FFFFF0E81E8000092 +S3154001B76081C7E00881E80000DA00E00817100120EF +S3154001B7709612E22880A3400B32BFFFD3C600E00CED +S3154001B780C423600CC4236008C2208001DA20A008CB +S3154001B79082106001DA20A00CC220A0047FFFFEFDCA +S3154001B7A081E800008728600386010003DA00E0088B +S3154001B7B0C620A00CDA20A008D8012004C423600CBE +S3154001B7C0C420E00883386002841020018328800168 +S3154001B7D082130001C22120047FFFFEEE81E80000B2 +S3154001B7E0808B20011280000982034001D8067FF830 +S3154001B7F08420800CDA00A00CC600A0088200400C10 +S3154001B800C6236008DA20E00CC421200886106001B6 +S3154001B810C620A00405100121C400A22880A0400230 +S3154001B8200ABFFFCE03100123D20060F87FFFFF401D +S3154001B830901000187FFFFED781E8000080A0E01439 +S3154001B84008BFFFB29B2B200380A0E0541880000D57 +S3154001B85080A0E1549930600C9803206E10BFFFAB75 +S3154001B8609B2B2003993B2002821020018328400C08 +S3154001B87082134001C221200410BFFFB4821000038D +S3154001B8801880000680A0E5549930600F9803207710 +S3154001B89010BFFF9E9B2B20039A1023F018BFFF9BDE +S3154001B8A09810207E993060129803207C10BFFF9734 +S3154001B8B09B2B20039DE3BFA080A620000280001F92 +S3154001B8C003100121E406214880A4A000228000142F +S3154001B8D0C206203CC204A004A0807FFF2C80000C3D +S3154001B8E0E4048000A2006001A32C6002A20480113E +S3154001B8F0C20440009FC04000A2047FFCA0843FFFD9 +S3154001B9003CBFFFFDC2044000E404800080A4A000C7 +S3154001B91032BFFFF2C204A004C206203C80A06000F0 +S3154001B92002800004010000009FC0400090100018F2 +S3154001B93081C7E00881E8000010BFFFE3F00062A87C +S3154001B9409DE3BFA0D206400080A2600002800004B1 +S3154001B950010000007FFFFFFB901000187FFFFF2FC3 +S3154001B96081E80000010000009DE3BFA00310012112 +S3154001B970C20062A880A600010280003201000000D8 +S3154001B980D206204C80A2600022800016E0062148A3 +S3154001B990A2102000E002401180A420002280000B6A +S3154001B9A0A204600492100010901000187FFFFF1B44 +S3154001B9B0E004000080A4200012BFFFFC921000109A +S3154001B9C0D206204CA204600480A4603C32BFFFF33F +S3154001B9D0E00240117FFFFF1190100018E006214858 +S3154001B9E080A420002280000ED2062054A206214CBB +S3154001B9F080A400112280000AD20620549210001021 +S3154001BA00901000187FFFFF05E004000080A440105D +S3154001BA1012BFFFFC92100010D206205480A2600093 +S3154001BA2022800005C20620387FFFFEFC90100018D8 +S3154001BA30C206203880A0600032800004C206203C45 +S3154001BA4081C7E00881E800009FC0400090100018BF +S3154001BA50F20622E080A6600002BFFFFA0100000064 +S3154001BA607FFFFFB881E800000100000005100124B6 +S3154001BA70C200A1A480A06000228000060310012418 +S3154001BA8090004008D020A1A481C3E0089010000195 +S3154001BA90821061B890004008C220A1A4D020A1A480 +S3154001BAA081C3E00890100001A7500000AE100001CC +S3154001BAB08334E00129100123E805203CA92CC01458 +S3154001BAC08215000181E000008190400001000000E4 +S3154001BAD00100000001000000E03BA000E43BA0089B +S3154001BAE0E83BA010EC3BA018F03BA020F43BA0287B +S3154001BAF0F83BA030FC3BA03881E8000082100017DB +S3154001BB0081C4400081CC800001000000010000009A +S3154001BB1001000000A7500000A92CE0012B100123D1 +S3154001BB20EA05603CAB34C015AA1540148195400026 +S3154001BB3001000000010000000100000081E8000052 +S3154001BB4081E80000E01BA000E41BA008E81BA01050 +S3154001BB50EC1BA018F01BA020F41BA028F81BA0305A +S3154001BB60FC1BA03881E0000081E0000081C4400058 +S3154001BB7081CC8000A750000029100071ADC520B8C6 +S3154001BB800100000027100123A614E01CE024C00098 +S3154001BB90818C20200100000001000000010000000E +S3154001BBA09DE3BFA09DE3BFA09DE3BFA09DE3BFA0D2 +S3154001BBB09DE3BFA09DE3BFA09DE3BFA081E8000038 +S3154001BBC081E8000081E8000081E8000081E800008A +S3154001BBD081E8000081E8000027100123A614E01C3B +S3154001BBE0C024C000E203A068A4046004E223A06468 +S3154001BBF0E423A06810800257AC10000029100123ED +S3154001BC00A8152000C2252000C8252004E0252010C3 +S3154001BC10E2252014E4252018E825201C81E80000AF +S3154001BC208348000082106F00818860200100000077 +S3154001BC30010000000100000009100123C801203C59 +S3154001BC4081E000008821200180A920FF02800003B5 +S3154001BC50010000000100000080A1000012BFFFF9B1 +S3154001BC600100000009100123C801203C81E80000C1 +S3154001BC7080A920FF028000030100000001000000AE +S3154001BC808821200180A1000012BFFFF901000000B8 +S3154001BC9081E0000029100123A8152000C8052004D1 +S3154001BCA0C2052000E0052010E2052014E405201815 +S3154001BCB0C025201C818C20000100000001000000ED +S3154001BCC00100000081C4800081CCA004A0142F0093 +S3154001BCD0818C00000100000001000000010000000D +S3154001BCE081C4800081CCA00480A660021280000538 +S3154001BCF0A8142F00818D0000B01420203080001F31 +S3154001BD0080A6600312800006A80E2F00AA2C2F00E1 +S3154001BD10A8154014818D00003080001880A660046B +S3154001BD2012800008A9480000A8152040818D000016 +S3154001BD300100000001000000010000003080000FFA +S3154001BD4080A6600512800008A9480000A82D204061 +S3154001BD50818D00000100000001000000010000008B +S3154001BD603080000680A660061280000301000000B4 +S3154001BD7030BFFFA391D0200081C4800081CCA004B4 +S3154001BD809210200381C3E00891D020029210200234 +S3154001BD9081C3E00891D020029210200681C3E008B9 +S3154001BDA091D0200281C3E0080100000081C3E00870 +S3154001BDB00100000081C3E00801000000AE25A0108B +S3154001BDC0A75000002D10006FAC15A1D029100071AD +S3154001BDD081C5226001000000111001239012202824 +S3154001BDE0D202000092026001D2220000932DE008A7 +S3154001BDF0902C2F009212000911100123901220203D +S3154001BE00D002000080A000082280000292126F003A +S3154001BE10818A60200100000001000000010000004D +S3154001BE2090100017400000379203A06092142F0033 +S3154001BE30818A60200100000001000000010000002D +S3154001BE401110012390122028D20200009222600193 +S3154001BE50D222000010800222AC1000009DE3BFA058 +S3154001BE601B100123892E60029A1361A080A6601FD0 +S3154001BE708210200014800017C6034004B32E6004CC +S3154001BE801910012380A0E000981322200280000DA2 +S3154001BE908406400C80A0C002128000068210000376 +S3154001BEA01080000EC206400C2280000CC206400CD7 +S3154001BEB0C200600C80A0600012BFFFFC80A0800120 +S3154001BEC0C4234004F026400CC620A00C821020005A +S3154001BED081C7E00891E80001F026400C81C7E008DF +S3154001BEE091E80001912A200203100123821061A0EA +S3154001BEF0C4004008C422600C81C3E008D220400837 +S3154001BF009DE3BFA0051001238210A02CC20060044E +S3154001BF1080A0401822800040C400A02C80A62000AA +S3154001BF2022800002B0100001A32E2002031001233B +S3154001BF30821061A0E000401180A4200002800034FC +S3154001BF40291001242D1001242B100124271001242E +S3154001BF50A8152020AC15A0A4AA1560A81080001D24 +S3154001BF60A614E024A41000138400A001C424801167 +S3154001BF70C405800080A0A00022800006D2042008CB +S3154001BF809FC0800001000000C2040000D2042008C6 +S3154001BF90901000189FC0400094100019C20540003F +S3154001BFA080A0600022800005C20480119FC040002D +S3154001BFB001000000C204801182007FFFC22480116B +S3154001BFC0E004200C80A42000028000110100000042 +S3154001BFD0C204000080A0600022BFFFFBE004200CE9 +S3154001BFE0C405000080A0A00012BFFFDFC404C01139 +S3154001BFF080A0A00002BFFFDDA4100013E004200CC6 +S3154001C00080A4200032BFFFF4C204000081C7E008CB +S3154001C01081E80000F000A0C010BFFFC1B00E201F94 +S3154001C0208C10000FA74800008B34E0188A09600F76 +S3154001C03080A160030280000C0B1001238A11603439 +S3154001C0400920000088112070C82140000B100123EF +S3154001C0508A1160500920000088112040C821400003 +S3154001C060108000399010200192102006400001D224 +S3154001C0700100000080A0000802800033010000009A +S3154001C080C2022010113FFC0082084008110003FC47 +S3154001C0908410400890100002921020019410200C48 +S3154001C0A0400001DB0100000080A00008028000265C +S3154001C0B001000000400001EB921000010B1001232A +S3154001C0C08A116034D2214000901000029210200162 +S3154001C0D094102011400001CE0100000080A000080C +S3154001C0E00280001901000000400001DE92100001AB +S3154001C0F0920260100B1001238A116050D221400038 +S3154001C10090100002921020019410200D400001C0B1 +S3154001C1100100000080A000080280000B0100000021 +S3154001C120400001D0921000010B1001238A11602CAE +S3154001C130D2214000D40260109532A010940AA00F7B +S3154001C140D42160049E10000681C3E008010000006E +S3154001C15003100123821060488210200191D02000F3 +S3154001C16081C3E008010000009DE3BFA00310012444 +S3154001C170C20060B08410001880A0600002800006F2 +S3154001C180B0102000901000029FC04000921000198C +S3154001C190B010000881C7E00881E800009DE3BFA018 +S3154001C1A003100124C20060B480A060000280000533 +S3154001C1B0841020009FC04000901000188410000891 +S3154001C1C081C7E00891E800029DE3BFA00310012466 +S3154001C1D0C20060BC80A0600002800005841020007F +S3154001C1E09FC04000901000188410000881C7E008E5 +S3154001C1F091E800029DE3BFA003100124C20060B88C +S3154001C20080A0600002800005841020009FC040008D +S3154001C210901000188410000881C7E00891E80002D8 +S3154001C2209DE3BFA003100124C20060C080A060004E +S3154001C23002800005841020009FC040009010001825 +S3154001C2408410000881C7E00891E800029DE3BFA081 +S3154001C25003100124C20060C480A060000280000572 +S3154001C260841020009FC040009010001884100008E0 +S3154001C27081C7E00891E800029DE3BFA003100124B5 +S3154001C280C20060C880A060000280000584102000C2 +S3154001C2909FC04000901000188410000881C7E00834 +S3154001C2A091E800029DE3BFA003100124C20060CCC7 +S3154001C2B08410001880A0600002800006B0102000A3 +S3154001C2C0901000029FC0400092100019B010000863 +S3154001C2D081C7E00881E800000100000003100070FA +S3154001C2E0821063A89FC040000100000003100000B7 +S3154001C2F08210600081984000031000718210602C0A +S3154001C3009FC0400001000000031000708210639836 +S3154001C3109FC04000010000008B4800008B3160182F +S3154001C3208A09600380A160031280000701000000B2 +S3154001C3308B4440008B31601C80A140001280000676 +S3154001C340010000007FFFFF37010000007FFF93934C +S3154001C350010000009C23A0407FFF932A01000000BA +S3154001C3608210200191D02000010000002900000424 +S3154001C370A68C001432800003A02C001491D020001A +S3154001C380818C000001000000010000000100000056 +S3154001C39081C4800081CCA00481C3E0080100000073 +S3154001C3A081C1E00801000000A74800008B34E01875 +S3154001C3B08A09600380A16003128000080100000021 +S3154001C3C021100123A0142044A2102003E2240000DE +S3154001C3D08B4440001080000821100123A014204402 +S3154001C3E0A2102002E224000021200000E6042024BD +S3154001C3F08B34E0148A09601F27100123A614E03C00 +S3154001C400CA24C0008A01600127100123A614E0381E +S3154001C410CA24C00027100123A614E0408A216002E5 +S3154001C420CA24C00081C3E0080100000081C3E008BE +S3154001C43001000000834800008330601882086003D1 +S3154001C44080A0600312800006010000008344400082 +S3154001C4500500000882284002A380400088100000A1 +S3154001C4600910007081C122DC010000009DE3BFA0DC +S3154001C4702110007423100074A0142150A21461509D +S3154001C48080A400111A80000B01000000D0040000B6 +S3154001C49080A2200002800004A00420049FC2000064 +S3154001C4A00100000080A400112ABFFFFAD004000059 +S3154001C4B081C7E00881E80000AA27A0B0E0256060B6 +S3154001C4C0E2256064E4256068C2256074C43D6078F5 +S3154001C4D0C83D6080CC3D608885400000C425606CC5 +S3154001C4E0F03D6090F43D6098F83D60A0FC3D60A849 +S3154001C4F0A8102001A92D0010808D00130280001381 +S3154001C500010000008534E00107100123C600E03C2C +S3154001C510A72CC0038414C0028408A0FF81E0000058 +S3154001C5208190A000E03BA000E43BA008E83BA010BE +S3154001C530EC3BA018F03BA020F43BA028F83BA030F0 +S3154001C540FC3BA03881E8000081C5A0089C1000157D +S3154001C550051001248410A0ACC400800080A0800096 +S3154001C56002800004010000009FC080009203A06089 +S3154001C570818C20008210200283284010051001235F +S3154001C580C400A03885304002821040028550000028 +S3154001C59080888001028000208328A00107100123A2 +S3154001C5A0C600E03C8530800382104002820860FF6D +S3154001C5B081906000C203A06C81806000F01BA09056 +S3154001C5C0F41BA098F81BA0A0FC1BA0A8C203A07452 +S3154001C5D0C41BA078C81BA080CC1BA088E003A06028 +S3154001C5E0E203A064E403A06881E80000E01BA00028 +S3154001C5F0E41BA008E81BA010EC1BA018F01BA02010 +S3154001C600F41BA028F81BA030FC1BA0381080000F9B +S3154001C61081E00000C203A06C81806000F01BA09005 +S3154001C620F41BA098F81BA0A0FC1BA0A8C203A074F1 +S3154001C630C41BA078C81BA080CC1BA088E003A060C7 +S3154001C640E203A064E403A068818C2000010000009D +S3154001C650010000000100000081C4400081CC80003F +S3154001C660AA27A0B0C2256074C43D6078C83D6080E9 +S3154001C670CC3D608885400000C425606CA81020012F +S3154001C680A92D0010808D00130280001301000000C7 +S3154001C6908534E00107100123C600E03CA72CC00306 +S3154001C6A08414C0028408A0FF81E000008190A000AC +S3154001C6B0E03BA000E43BA008E83BA010EC3BA018FF +S3154001C6C0F03BA020F43BA028F83BA030FC3BA0382F +S3154001C6D081E8000081C5A0089C10001505100124C1 +S3154001C6E08410A0ACC400800080A0800002800004B9 +S3154001C6F0010000009FC080009203A060818C200051 +S3154001C700821020028328401005100123C400A0385E +S3154001C71085304002821040028550000080888001A9 +S3154001C720028000198328A00107100123C600E03CBE +S3154001C7308530800382104002820860FF819060004C +S3154001C740C203A06C81806000C203A074C41BA078A0 +S3154001C750C81BA080CC1BA08881E80000E01BA0007C +S3154001C760E41BA008E81BA010EC1BA018F01BA0209E +S3154001C770F41BA028F81BA030FC1BA0381080000831 +S3154001C78081E00000C203A06C81806000C203A074F6 +S3154001C790C41BA078C81BA080CC1BA088818C20001C +S3154001C7A001000000010000000100000081C44000BA +S3154001C7B081CC8000821000089A1038009610200023 +S3154001C7C0912AE00598034008D40340089132A01805 +S3154001C7D080A20001328000089602E0019132A00C4D +S3154001C7E0900A2FFF80A20009028000079410000CD6 +S3154001C7F09602E00180A2E00728BFFFF3912AE005F7 +S3154001C8009410200081C3E0089010000A82100008AD +S3154001C81098102000912B20039A004008D60040082A +S3154001C8209132E01880A20009328000089803200165 +S3154001C8309132E00C900A2FFF80A2000A0280000785 +S3154001C8409610000D9803200180A3200F28BFFFF307 +S3154001C850912B20039610200081C3E0089010000B15 +S3154001C860D4022004173FFC00920A400B900A800B29 +S3154001C8709132200C921240081100003F901223F091 +S3154001C880940A8008952AA0049412800B920A400AC1 +S3154001C89081C3E008901000099DE3BFA021100074F8 +S3154001C8A0A0142138C2043FFC80A07FFF028000080B +S3154001C8B0A0043FFC9FC04000A0043FFCC20400000E +S3154001C8C080A07FFF12BFFFFC0100000081C7E00886 +S3154001C8D081E800009DE3BFA081C7E00881E8000030 +S3154001C8E00000001000000000017A5200047C0F0194 +S3154001C8F01B0C0E000000001000000018FFFE489CB3 +S3154001C9000000000800000000000000140000002C98 +S3154001C910FFFE48900000002C00410D1E2D090F1FFF +S3154001C9200000001000000044FFFE48A40000001C67 +S3154001C930000000000000001000000058FFFE48AC57 +S3154001C9400000001C00000000000000100000006C08 +S3154001C950FFFE48B40000001C00000000000000106B +S3154001C96000000080FFFE48BC0000001C00000000E3 +S3154001C9700000001400000094FFFE48C40000002C93 +S3154001C98000410D1E2D090F1F00000018000000ACCC +S3154001C990FFFE49240000004000410D1E2D46090FAF +S3154001C9A01F00000000000018000000C8FFFE4948B3 +S3154001C9B00000022400410D1E2D46090F1F000000F4 +S3154001C9C000000018000000E4FFFE4B500000023456 +S3154001C9D000410D1E2D47090F1F00000000000018E1 +S3154001C9E000000100FFFE4D680000003C00410D1EA5 +S3154001C9F02D43090F1F000000000000180000011C14 +S3154001CA00FFFE4D880000003C00410D1E2D43090FDD +S3154001CA101F0000000000001800000138FFFF35E448 +S3154001CA200000024800410D1E2D5D090F1F00000048 +S3154001CA300000001400000154FFFF3810000006906A +S3154001CA4000410D1E2D090F1F000000180000016C4A +S3154001CA50FFFF3E880000002800410D1E2D49090FA9 +S3154001CA601F0000000000001800000188FFFF3E94EF +S3154001CA700000002400410D1E2D48090F1F00000033 +S3154001CA8000000018000001A4FFFF3E9C0000009832 +S3154001CA9000410D1E2D44090F1F0000000000001823 +S3154001CAA0000001C0FFFF3F18000000FC00410D1EC1 +S3154001CAB02D46090F1F00000000000018000001DC90 +S3154001CAC0FFFF3FF8000000C400410D1E2D47090F2E +S3154001CAD01F00000000000018000001F8FFFF40A001 +S3154001CAE00000015000410D1E2D6E090F1F00000070 +S3154001CAF00000001800000214FFFF41D4000004703A +S3154001CB0000410D1E2D44090F1F00000000000018B2 +S3154001CB1000000230FFFF46280000013400410D1E8F +S3154001CB202D4A090F1F000000000000180000024CAA +S3154001CB30FFFF47400000012400410D1E2D49090F0A +S3154001CB401F0000000000001800000268FFFF48486F +S3154001CB50000000B800410D1E2D4A090F1F000000BC +S3154001CB600000001800000284FFFF48E4000000A016 +S3154001CB7000410D1E2D48090F1F0000000000001442 +S3154001CB80000002A0FFFF49680000039400410D1E0A +S3154001CB902D090F1F00000010000002B8FFFF4CE4F2 +S3154001CBA00000002C0000000000000010000002CC34 +S3154001CBB0FFFF4CFC000000240000000000000010B4 +S3154001CBC0000002E0FFFF4D0C0000001800000000CD +S3154001CBD000000018000002F4FFFF4D100000017C28 +S3154001CBE000410D1E2D42090F1F00000000000018D4 +S3154001CBF000000310FFFF4E700000058000410D1E2E +S3154001CC002D46090F1F000000000000180000032CEC +S3154001CC10FFFF53D40000051800410D1E2D43090F97 +S3154001CC201F0000000000001400000348FFFF58D019 +S3154001CC300000010C00410D1E2D090F1F00000010C0 +S3154001CC4000000360FFFF59C4000000180000000007 +S3154001CC500000001400000374FFFF59C800000208D9 +S3154001CC6000410D1E2D090F1F000000140000038C0A +S3154001CC70FFFF6A600000461800410D1E2D090F1F77 +S3154001CC8000000010000003A4FFFFB0600000000C8C +S3154001CC900000000000000010000003B8FFFFB0587C +S3154001CCA0000000140000000000000010000003CC4A +S3154001CCB0FFFFB058000000200000000000000014F3 +S3154001CCC0000003E0FFFFB0640000077000410D1E45 +S3154001CCD02D090F1F00000010000003F8FFFFC0ECF4 +S3154001CCE00000000C00000000000000100000040CD1 +S3154001CCF0FFFFC0E400000024000000000000001017 +S3154001CD0000000420FFFFC0F40000003800000000CE +S3154001CD100000001000000434FFFFC1180000003875 +S3154001CD20000000000000001800000448FFFFC13C5D +S3154001CD300000009C00410D1E2D56090F1F000000EA +S3154001CD400000001800000464FFFFC1BC0000003C65 +S3154001CD5000410D1E2D4A090F1F000000000000185A +S3154001CD6000000480FFFFC1DC0000003C00410D1EB5 +S3154001CD702D4A090F1F000000000000100000049C0E +S3154001CD80FFFFC1FC00000038000000000000001851 +S3154001CD90000004B0FFFFC2200000003C00410D1E10 +S3154001CDA02D4A090F1F00000000000018000004CCA6 +S3154001CDB0FFFFC2400000003C00410D1E2D4A090FF5 +S3154001CDC01F00000000000010000004E8FFFFC260E1 +S3154001CDD0000000380000000000000018000004FCBC +S3154001CDE0FFFFC28400000EB000430D1E2D4C090FFB +S3154001CDF01F0000000000001400000518FFFFD118B5 +S3154001CE000000002800410D1E2D090F1F00000014CF +S3154001CE1000000530FFFFD1280000033000410D1E00 +S3154001CE202D090F1F0000001400000548FFFFD440E4 +S3154001CE30000002B800430D1E2D090F1F000000100F +S3154001CE4000000560FFFFD9E80000000C000000006B +S3154001CE500000001000000574FFFFD9E00000001437 +S3154001CE60000000000000001400000588FFFFD9E023 +S3154001CE700000007C00410D1E2D090F1F000000100F +S3154001CE80000005A0FFFFDDDC0000002000000000DF +S3154001CE9000000010000005B4FFFFDDE80000001CA3 +S3154001CEA00000000000000010000005C8FFFFDDF093 +S3154001CEB00000001C0000000000000018000005DC16 +S3154001CEC0FFFFDDF8000006D800410D1E2D4C090F6D +S3154001CED01F00000000000010000005F8FFFFE4B449 +S3154001CEE00000001800000000000000100000060CC1 +S3154001CEF0FFFFE4B800000018000000000000001821 +S3154001CF0000000620FFFFE4BC0000004000410D1E6A +S3154001CF102D42090F1F000000000000180000063CCA +S3154001CF20FFFFE4E00000012C00410D1E2D41090FD9 +S3154001CF301F0000000000001400000658FFFFE5F046 +S3154001CF40000000EC00410D1E2D090F1F00000018C6 +S3154001CF5000000670FFFFE6C40000029C00410D1E62 +S3154001CF602D43090F1F000000000000180000068C29 +S3154001CF70FFFFE9440000008C00410D1E2D4F090FB3 +S3154001CF801F00000000000018000006A8FFFFE9B4DA +S3154001CF900000002800410D1E2D44090F1F0000000E +S3154001CFA000000018000006C4FFFFE9C000000104AC +S3154001CFB000410D1E2D45090F1F0000000000001005 +S3154001CFC0000006E0FFFFEAA80000003C0000000068 +S3154001CFD000000018000006F4FFFFEE840000008800 +S3154001CFE000410D1E2D52090F1F00000000000010C8 +S3154001CFF000000710FFFFEEF00000001C00000000DB +S3154001D0000000001800000724FFFFEEF80000012091 +S3154001D01000410D1E2D58090F1F0000000000001091 +S3154001D02000000740FFFFF13400000010000000003F +S3154001D0300000001800000754FFFFF13000000034E3 +S3154001D04000410D1E2D47090F1F000000000000186A +S3154001D05000000770FFFFF1480000002C00410D1E43 +S3154001D0602D45090F1F000000000000180000078C25 +S3154001D070FFFFF1580000002C00410D1E2D45090F00 +S3154001D0801F00000000000018000007A8FFFFF1681C +S3154001D0900000002C00410D1E2D45090F1F00000008 +S3154001D0A000000018000007C4FFFFF1780000002CC3 +S3154001D0B000410D1E2D45090F1F00000000000018FC +S3154001D0C0000007E0FFFFF1880000002C00410D1E23 +S3154001D0D02D45090F1F00000000000018000007FC45 +S3154001D0E0FFFFF1980000002C00410D1E2D45090F50 +S3154001D0F01F0000000000001800000818FFFFF1A8FB +S3154001D1000000003400410D1E2D47090F1F0000008D +S3154001D1100000001800000834FFFFF3540000004CE3 +S3154001D12000410D1E2D47090F1F00000000000000A1 +S3154001D13000000002FFFFFFFF0000000000000000AA +S3154001D14000000002FFFFFFFF00000000000000009A +S3154001D150343074693934612B307967697975303582 +S3154001D1607968617035796934682B612B6969797899 +S3154001D1706869346B35396A30713930356A6B6F7924 +S3154001D18070686F70746A72686961346979302B347A +S3154001D1900000000000000000400800000000000000 +S3154001D1A03CD203AF9EE756163E7AD7F29ABCAF48B9 +S3154001D1B0400486B00000000043000000000000006B +S3154001D1C09DE3BFA07FFF8FD9010000007FFFFDB324 +S3154001D1D00100000081C7E00881E800009DE3BFA08F +S3154001D1E07FFF8FA70100000081C7E00881E80000AA +S3154002000000000001000000000000000000000000A7 S315400200102000000000000000000000000000000078 S315400200200000000000000000000000000000000088 S315400200300000000000000000000000000000000078 @@ -7353,328 +7468,328 @@ S315400200A00000000000000000000000000000000008 S315400200B000000000000000000000000000000000F8 S315400200C000000000000000000000000000000000E8 S315400200D000000000000000000000000000000000D8 -S315400200E00000000100000000000000410000000086 -S315400200F0343074693934612B3079676979753035B2 -S315400201007968617035796934682B612B69697978C8 -S315400201106869346B35396A30713930356A6B6F7953 -S3154002012070686F70746A72686961346979302B34A9 -S315400201300000000000000000000000010000000076 -S3154002014040000000000000004008000000000000DF -S31540020150401800000000000080000000000000007F -S315400201600000000000000000BFF000000000000098 -S31540020170BF800000000000000000000000000000F8 -S315400201800000000000000000000000000000000027 -S315400201903FF00000000000004008000000000000A0 -S315400201A03FF0000040000000000000000000000098 -S315400201B03F800000404000000000000000000000B8 -S315400201C000000000000000000000000000000000E7 -S315400201D0000000000000000048000001000000008E -S315400201E0480000000000000046C000000000000079 -S315400201F03FF0000000000000400000000000000048 -S3154002020040080000000000003F800000000000009F -S31540020210529000000000000052900FF807F60DEBD6 -S3154002022052901FE03F61BAD052902FB8D4E30F48A4 -S3154002023052903F81F636B80C52904F3BD03C0A64FE -S3154002024052905EE68EFAD48B52906E825DA8FC2B5B -S3154002025052907E0F66AFED0752908D8DD3B1D9AADB -S3154002026052909CFDCD8ED0095290AC5F7C69A3C85A -S315400202705290BBB307ACAFDB5290CAF8960E710DE3 -S315400202805290DA304D95FB065290E95A539F492CCB -S315400202905290F876CCDF6CD952910785DD689A295F -S315400202A052911687A8AE14A35291257C5187FD0917 -S315400202B052913463FA37014E5291433EC467EFFB83 -S315400202C05291520CD1372FEB529160CE41341D746C -S315400202D052916F8334644DF952917E2BCA46BAB914 -S315400202E052918CC821D6D3E352919B58598F7C9F09 -S315400202F05291A9DC8F6DF1045291B854E0F496A064 -S315400203005291C6C16B2DB8705291D5224AAE2EE19A -S315400203105291E3779B97F4A85291F1C1799CA8FF39 -S31540020320529200000000000052920E33499A21A9CF -S3154002033052921C5B70D9F82452922A788FC76DE587 -S315400203405292388AC0059C28529246921AD4EA4959 -S315400203505292548EB9151E8552926280B347609668 -S315400203605292706821902E9A52927E451BB944C38E -S3154002037052928C17B9337834529299E01118857596 -S315400203805292A79E3A2CD2E65292B5524AE1278E13 -S315400203905292C2FC595456A75292D09C7B54E03E8C -S315400203A05292DE32C66287415292EBBF4FAFDD4B6D -S315400203B05292F9422C23C47E529306BB705AE7C32B -S315400203C05293142B30A929AB52932191811B0A4196 -S315400203D052932EEE7577041652933C42213EE0C963 -S315400203E05293498C97B10540529356CDEBC9B5E22B -S315400203F0529364063044530652937135779C8DCBA3 -S3154002040052937E5BD40F95A152938B79579D3EAB07 -S315400204105293988E1409212E5293A59A1ADBB257FB -S315400204205293B29D7D6356625293BF984CB56C7798 -S315400204305293CC8A99AF54535293D97474F76DF24E -S315400204405293E655EEFE13675293F32F17FE8D0431 -S31540020450529400000000000052940CC8B6D657C20F -S31540020460529419894C2329F052942641CF569572BB -S31540020470529432F24FB01C7A52943F9ADC3F79CE74 -S3154002048052944C3B83E57153529458D455549C1A1A -S31540020490529465655F122FF6529471EEAF76C2C6DC -S315400204A052947E7054AF098952948AEA5CBC935F37 -S315400204B05294975CD57680885294A3C7CC8A358A63 -S315400204C05294B02B4F7C0A885294BC876BA7F6ECA9 -S315400204D05294C8DC2E4239805294D529A457FCFC4A -S315400204E05294E16FDACFF9375294EDAEDE6B10FEDD -S315400204F05294F9E6BBC4ECB3529506177F5491BBAE -S3154002050052951241356CF6E052951E63EA3D95B01E -S3154002051052952A7FA9D2F8EA529536948017481006 -S31540020520529542A278D2D03652954EA99FAC8A0FA6 -S3154002053052955AAA002A9D5A529566A3A5B2E1B18E -S31540020540529572969B8B5CD852957E82ECDABE8D22 -S3154002055052958A68A4A8D9F352959647CDDF1CA531 -S315400205605295A220734903775295ADF29F948CFB24 -S315400205705295B9BE5D52A9DA5295C583B6F7AB0319 -S315400205805295D142B6DBADC55295DCFB673B05DFE2 -S315400205905295E8ADD236A58F5295F45A01D483B41A -S315400205A0529600000000000052960B9FD68A455490 -S315400205B0529617398F2AAA48529622CD337F0FE890 -S315400205C052962E5ACD0C3EBE529639E2653E421B9B -S315400205D0529645640568C1C3529650DFB6C759F470 -S315400205E052965C55827DF1D2529667C57199104BEF -S315400205F05296732F8D0E2F7752967E93DDBC0E73D5 -S31540020600529689F26C6B01D05296954B41CD4293EC -S315400206100BC0A4068F346C9B0BC093731C185447B3 -S315400206200BC083008E183C230BC072AE83A9704A5E -S315400206300BC0627C9CC166FF0BC0526A7ACE64A430 -S315400206400BC04277C0B04ADA0BC032A412B191A0B5 -S315400206500BC022EF168069500BC0135873280473DF -S315400206600BC003DFD10A08480BBFE909B3B04632D3 -S315400206700BBFCA8E711B8E880BBFAC4D32D4143061 -S315400206800BBF8E4553D34B1B0BBF7076318237EF70 -S315400206900BBF52DF2BADF99C0BBF357FA47C936C0D -S315400206A00BBF18570061F5EB0BBEFB64A61545154B -S315400206B00BBEDEA7FE865A2B0BBEC22074D37FBC6E -S315400206C00BBEA5CD763F66690BBE89AE722750F04A -S315400206D00BBE6DC2D9F976230BBE520A212B976CFB -S315400206E00BBE3683BD31CAA20BBE1B2F257575CAFA -S315400206F00BBE000BD34C7BAF0BBDE51941F097FE09 -S315400207000BBDCA56EE76E9D00BBDAFC457C7AB7325 -S315400207100BBD9560FE9616690BBD7B2C65587275AE -S315400207200BBD612610404EC00BBD474D8532E409D4 -S315400207300BBD2DA24BC19EDF0BBD1423ED22D10171 -S315400207400BBCFAD1F42A88E40BBCE1ABED438E80B4 -S315400207500BBCC8B1666884820BBCAFE1EF1D2D01AC -S315400207600BBC973D1867D0EF0BBC7EC274CAC962F8 -S315400207700BBC6671983E29FE0BBC4E4A18298BA9C2 -S315400207800BBC364B8B5DF6DB0BBC1E758A0FECBF82 -S315400207900BBC06C7ADD18E7E0BBBEF41918CE1F609 -S315400207A00BBBD7E2D17E33360BBBC0AB0B2E921BB3 -S315400207B00BBBA999DD6E6B650BBB92AEE8503CA7AD -S315400207C00BBB7BE9CD2362720BBB654A2E6F002CB5 -S315400207D00BBB4ECFAFED00FE0BBB3879F685313FF2 -S315400207E00BBB2248A8486FDE0BBB0C3B6C6BF73B3E -S315400207F00BBAF651EB44BCEE0BBAE08BCE42E7F1B4 -S315400208000BBACAE8BFED5CC00BBAB5686BDD5EDDFC -S315400208100BBAA00A7EBA475E0BBA8ACEA6354FEB12 -S315400208200BBA75B4910571DB0BBA60BBEEE358EFB8 -S315400208300BBA4BE4708569410BBA372DC79BD7FE7D -S315400208400BBA2297A6CCD68C0BBA0E21C1B0CFA03A -S315400208500BB9F9CBCCCEB6050BB9E5957D98648B31 -S315400208600BB9D17E8A670EE70BB9BD86AA77C3104C -S315400208700BB9A9AD95E7FAC40BB995F305B23CE5B8 -S315400208800BB98256B3AACE570BB96ED85A7C7206AA -S315400208900BB95B77B5A537C80BB94834817359CCC8 -S315400208A00BB9350E7B02284D0BB922056037032E54 -S315400208B00BB90F18EFBE614A0BB8FC48E908E522AE -S315400208C00BB8E9950C487EA90BB8D6FD1A6D99E886 -S315400208D00BB8C480D5245A340BB8B21FFED1E1BC42 -S315400208E00BB89FDA5A91A5260BB88DAFAC32CB0A1C -S315400208F00BB87B9FB83596F60BB869AA43C8DFE1B9 -S315400209000BB857CF14C791B50BB8460DF1B639C6D9 -S315400209100BB83466A1C09DF90BB822D8ECB75E6E0F -S315400209200BB811649B0DA16B0BB8000975D6C9595A -S315400209300BB7EEC746C434A50BB7DD9DD823075285 -S315400209400BB7CC8CF4D9FE010BB7BB9468674A50FF -S315400209500BB7AAB3FEDE78540BB799EB84E65D0C6F -S315400209600BB7893AC7B70D960BB778A19517DF0132 -S315400209700BB7681FBB5D6E910BB757B50967B24C93 -S315400209800BB747614EA011A20BB737245AF786140C -S315400209900BB726FDFEE4C3A00BB716EE0B6268E862 -S315400209A00BB706F451ED36CE0BB6F710A4824F8044 -S315400209B00BB6E742D59D7CB40BB6D78AB8377D0EC7 -S315400209C00BB6C7E81FC458720BB6B85AE031BB32F1 -S315400209D00BB6A8E2CDE557F90BB6997FBDBB50459C -S315400209E00BB68A318504A35C0BB67AF7F985A39BCD -S315400209F00BB66BD2F17471FF0BB65CC243777FCEF6 -S31540020A000BB64DC5C6A416420BB63EDD527CE4116A -S31540020A100BB63008BEF090CF0BB62147E45855EBE3 -S31540020A200BB6129A9B769D520BB60400BD75A584F1 -S31540020A300BB5F57A23E62B070BB5E706A8BE172CAE -S31540020A400BB5D8A6265733FF0BB5CA58776DE54B7B -S31540020A500BB5BC1D771FE6AB0BB5ADF500EB0E78BB -S31540020A600BB59FDEF0AC15940BB591DB229D63F27C -S31540020A700BB583E97355E1C10BB57609BFC7CD32D4 -S31540020A800BB5683BE53F94B80BB55A7FC162B5B624 -S31540020A900BB54CD5322E9F7F0BB53F3C15F79AA12D -S31540020AA00BB531B44B67B45A0BB5243DB17DAE306C -S31540020AB00BB516D8278BF18F0BB509838D37876710 -S31540020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB69 -S31540020AD00BB4E1EA1D1EA6680BB4D4D8040308E59C -S31540020AE00BB4C7D63D722B370BB4BAE4AAEBF9481E -S31540020AF00BB4AE032E3C2D7E0BB4A131A97965C948 -S31540020B000BB4946FFF043C1C0BB487BE118662364D -S31540020B100BB47B1BC3F1C0BF0BB46E88F97F999BA4 -S31540020B200BB4620595AFAD730BB455917C476454D3 -S31540020B300BB4492C9150F96C0BB43CD6B91AA9C8DE -S31540020B400BB4308FD835E60B0BB42457D3768716C1 -S31540020B500BB4182E8FF205900BB40C13F2FEB43B75 -S31540020B600BB40007E232FD1F0BB3F40A4364A167DC -S31540020B700BB3E81AFCA7FBF00BB3DC39F44F468AF9 -S31540020B800BB3D06710E9E1C30BB3C4A239439F4FFD -S31540020B900BB3B8EB54640EF10BB3AD42498DCDDFC6 -S31540020BA00BB3A1A7003DD89B0BB39619602ADF2B46 -S31540020BB00BB38A9951449BB80BB37F26BBB32B79AF -S31540020BC00BB373C187D669EA0BB368699E454E4437 -S31540020BD00BB35D1EE7CD4B2D0BB351E14D71B09872 -S31540020BE00BB346B0B86B0FC30BB33B8D1226A15A5B -S31540020BF00BB330764445ADAC0BB3256C389CF6EB63 -S31540020C000BB31A6ED934256E0BB30F7E104535F5EC -S31540020C100BB30499C83BE9D60BB2F9C1EBB53923FC -S31540020C200BB2EEF6657EC6AA0BB2E437209655D5D0 -S31540020C300BB2D984082942630BB2CEDD0793F9E79A -S31540020C400BB2C4420A6177190BB2B9B2FC4ABEDA98 -S31540020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1F9 -S31540020C600BB29A4CA48F90E30BB28FEC8BA9777997 -S31540020C700BB28597FF1D694D0BB27B4EEBAE48DD3D -S31540020C800BB271113E499CEE0BB266DEE4071AA81E -S31540020C900BB25CB7CA2831380BB2529BDE1796F7B5 -S31540020CA00BB2488B0D68D8030BB23E8545D7E65A40 -S31540020CB00BB2348A7548AB540BB22A9A89C69A97B4 -S31540020CC00BB220B5718446610BB216DB1ADAF53FD8 -S31540020CD00BB20D0B744A39100BB203466C77876C14 -S31540020CE00BB1F98BF22DD3490BB1EFDBF45D27FF44 -S31540020CF00BB1E636621A457E0BB1DC9B2A9E3DD588 -S31540020D000BB1D30A3D4613EE0BB1C98389925B817F -S31540020D100BB1C006FF26DA3F0BB1B6948DCA2A281C -S31540020D200BB1AD2C25655D0F0BB1A3CDB603A13D2D -S31540020D300BB19A792FD1E7410BB1912E831E88D2FE -S31540020D400BB187EDA058F0D60BB17EB6781144733D -S31540020D500BB17588FAF80D3A0BB16C6519DDE45D95 -S31540020D600BB1634AC5B31EEF0BB15A39EF877B28E5 -S31540020D700BB151328889CEAE0BB148348207B5DB0E -S31540020D800BB13F3FCD6D43FF0BB136545C44B49A31 -S31540020D900BB12D7220361D870BB124990B07221BEE -S31540020DA00BB11BC90E9AA72D0BB113021CF0880F6B -S31540020DB00BB10A4428254C650BB1018F2271DEE541 -S31540020DC00BB0F8E2FE2B44F40BB0F03FADC2572312 -S31540020DD00BB0E7A523C37A850BB0DF1352D65AD997 -S31540020DE00BB0D68A2DBDA58C0BB0CE09A756C589A8 -S31540020DF00BB0C591B2999FDB0BB0BD2242985115FB -S31540020E000BB0B4BB4A7EEB870BB0AC5CBD933636B7 -S31540020E1065300000653010006530200065303000D6 -S31540020E2065304000653050006530600065307000C6 -S31540020E3065308000653090006530A0006530B000B6 -S31540020E406530C0006530D0006530E0006530F000A6 -S31540020E506531000065311000653120006531300092 -S31540020E606531400065315000653160006531700082 -S31540020E7065318000653190006531A0006531B00072 -S31540020E806531C0006531D0006531E0006531F00062 -S31540020E90653200006532100065322000653230004E -S31540020EA0653240006532500065326000653270003E -S31540020EB065328000653290006532A0006532B0002E -S31540020EC06532C0006532D0006532E0006532F0001E -S31540020ED0653300006533100065332000653330000A -S31540020EE065334000653350006533600065337000FA -S31540020EF065338000653390006533A0006533B000EA -S31540020F006533C0006533D0006533E0006533F000D9 -S31540020F1065340000653410006534200065343000C5 -S31540020F2065344000653450006534600065347000B5 -S31540020F3065348000653490006534A0006534B000A5 -S31540020F406534C0006534D0006534E0006534F00095 -S31540020F506535000065351000653520006535300081 -S31540020F606535400065355000653560006535700071 -S31540020F7065358000653590006535A0006535B00061 -S31540020F806535C0006535D0006535E0006535F00051 -S31540020F90653600006536100065362000653630003D -S31540020FA0653640006536500065366000653670002D -S31540020FB065368000653690006536A0006536B0001D -S31540020FC06536C0006536D0006536E0006536F0000D -S31540020FD065370000653710006537200065373000F9 -S31540020FE065374000653750006537600065377000E9 -S31540020FF065378000653790006537A0006537B000D9 -S315400210006537C0006537D0006537E0006537F000C8 -S3154002101065380000653810006538200065383000B4 -S3154002102065384000653850006538600065387000A4 -S3154002103065388000653890006538A0006538B00094 -S315400210406538C0006538D0006538E0006538F00084 -S315400210506539000065391000653920006539300070 -S315400210606539400065395000653960006539700060 -S3154002107065398000653990006539A0006539B00050 -S315400210806539C0006539D0006539E0006539F00040 -S31540021090653A0000653A1000653A2000653A30002C -S315400210A0653A4000653A5000653A6000653A70001C -S315400210B0653A8000653A9000653AA000653AB0000C -S315400210C0653AC000653AD000653AE000653AF000FC -S315400210D0653B0000653B1000653B2000653B3000E8 -S315400210E0653B4000653B5000653B6000653B7000D8 -S315400210F0653B8000653B9000653BA000653BB000C8 -S31540021100653BC000653BD000653BE000653BF000B7 -S31540021110653C0000653C1000653C2000653C3000A3 -S31540021120653C4000653C5000653C6000653C700093 -S31540021130653C8000653C9000653CA000653CB00083 -S31540021140653CC000653CD000653CE000653CF00073 -S31540021150653D0000653D1000653D2000653D30005F -S31540021160653D4000653D5000653D6000653D70004F -S31540021170653D8000653D9000653DA000653DB0003F -S31540021180653DC000653DD000653DE000653DF0002F -S31540021190653E0000653E1000653E2000653E30001B -S315400211A0653E4000653E5000653E6000653E70000B -S315400211B0653E8000653E9000653EA000653EB000FB -S315400211C0653EC000653ED000653EE000653EF000EB -S315400211D0653F0000653F1000653F2000653F3000D7 -S315400211E0653F4000653F5000653F6000653F7000C7 -S315400211F0653F8000653F9000653FA000653FB000B7 -S31540021200653FC000653FD000653FE000653FF000A6 -S315400212104200000000000000400FFFFFFFFFFFFFFB -S315400212204200000000200000420FFFFFFFFFFFFFC9 -S3154002123040000000000000004210000000080000CC -S3154002124042000000000000013EB000000000000124 -S315400212504200000000000002420F484C0137D2080B -S31540021260C20E780F256007AB41BA079B7AF94BA0AD -S315400212704201484C0137D208420E780F256007AB2F -S315400212804217E02D934BECDA420F484C0137D20815 -S31540021290C21E780F256007ABC20DA7D249883D4EC4 -S315400212A0421F484C0137D208C20E780F256007AB61 -S315400212B042100C446E87CE32C03340AB371208918F -S315400212C00000000000000000C03340AB3712089116 -S315400212D00000000000000000C29E7A0F236007A6AD -S315400212E0C29E7A0F236007A66F3F484C0137D20849 -S315400212F06E2E780F256007AB6F3F485B3D3F64B863 -S315400213006F3F484C0137D208EE2E780F256007AB67 -S315400213106F3F483CC5303F587FE2F780AB123809F1 -S315400213207FD00000000000007FEAF780AB12380948 -S31540021330002000000000000080280000000000009D -S3154002134080100000000000007FEFF780AB123809E2 -S315400213507FEFF2010203A1117FF0000000000000BE -S315400213600010000000001000801FFFFFF203A111D1 -S315400213708000000000000000001ABCD000023809BC -S31540021380801ABCD0000001110000000000000000DD -S315400213907E71000000000000416010000000000065 -S315400213A07FE11100000000000178100000000000FB -S315400213B03E880000FFF0000000120C00C073F800E7 -S315400213C0C1EFFFFFC00020003FB3C75D224F280F89 -S315400213D0C1B3C75CFAC08192A12FFF8000001FFFF4 -S315400213E03EE0000000FF0000A01FFF8001FE18073C -S315400213F041CFFFFE0000002040303FFFFFFFFFFDD0 -S3154002140042103FFEFC00000D3FD000003FEFFFFFC1 -S31540021410BFD0000010000000BFB000004FF0003FF8 -S3154002142001701000000000003E8000011A0000001A -S3154002143000000000000000007E7C0000000000006A -S31540021440416A1000010000107FF000000000000019 -S3154002145075012034056AC000FA1009091000104FC0 -S31540021460FFF00000000000000100203040030200AF -S31540021470003020340000A00B0000000000000000F5 -S315400214807FE0001010200001400000000010200AFA -S315400214907FF00000000000003FEFDFF00FFC484AFB -S315400214A0BFF80000000000007FFF000000000000BF -S315400214B07FFFE000000000007FF400000000000013 -S315400214C07FC00000000000007FF80000000000001E -S315400214D07FF0000000000000FFF000000000000066 -S315400214E0FFF0000000000000800000000000000045 -S315400214F000000000000100000000000000000000A3 +S315400200E00000000100000001BF8000000000000087 +S315400200F0BFF0000000000000800000000000000089 +S315400201000000000000000000400000000000000067 +S3154002011040080000000000004018000000000000F7 +S315400201200000000000000000000000000000000087 +S3154002013000000000000000003FF000000000000048 +S3154002014040080000000000003FF0000040000000B0 +S3154002015000000000000000003F8000004040000018 +S315400201600000000000000000000000000000000047 +S315400201700000000000000000000000000000000037 +S315400201804800000100000000480000000000000096 +S3154002019046C00000000000003FF0000000000000E2 +S315400201A0400000000000000040080000000000007F +S315400201B03F80000000000000000000000001000037 +S315400201C08000000000000000FFF000000000000078 +S315400201D0FFF00000000000007FF000000000000079 +S315400201E07FF80000000000007FC000000000000011 +S315400201F07FF40000000000007FFFE00000000000E6 +S315400202007FFF000000000000BFF800000000000071 +S315400202103FEFDFF00FFC484A7E710000000000000D +S3154002022041601000000000007FE111000000000064 +S3154002023001781000000000003E880000FFF0000038 +S3154002024000120C00C073F800C1EFFFFFC00020008F +S315400202503FB3C75D224F280FC1B3C75CFAC0819234 +S31540020260A12FFF8000001FFF3EE0000000FF0000BC +S31540020270A01FFF8001FE180741CFFFFE00000020AD +S3154002028040303FFFFFFFFFFD42103FFEFC00000DE6 +S315400202903FD000003FEFFFFFBFD00000100000003C +S315400202A0BFB000004FF0003F017010000000000098 +S315400202B03E8000011A00000000000000000000001D +S315400202C07E7C000000000000416A10000100001020 +S315400202D07FF000000000000075012034056AC0006E +S315400202E0FA1009091000104FFFF00000000000004C +S315400202F00100203040030200003020340000A00BF1 +S3154002030000000000000000007FE000101020000105 +S31540020310400000000010200A7FF0000000000000AC +S315400203204200000000000000400FFFFFFFFFFFFFFA +S315400203304200000000200000420FFFFFFFFFFFFFC8 +S3154002034040000000000000004210000000080000CB +S3154002035042000000000000013EB000000000000123 +S315400203604200000000000002420F484C0137D2080A +S31540020370C20E780F256007AB41BA079B7AF94BA0AC +S315400203804201484C0137D208420E780F256007AB2E +S315400203904217E02D934BECDA420F484C0137D20814 +S315400203A0C21E780F256007ABC20DA7D249883D4EC3 +S315400203B0421F484C0137D208C20E780F256007AB60 +S315400203C042100C446E87CE32C03340AB371208918E +S315400203D00000000000000000C03340AB3712089115 +S315400203E00000000000000000C29E7A0F236007A6AC +S315400203F0C29E7A0F236007A66F3F484C0137D20848 +S315400204006E2E780F256007AB6F3F485B3D3F64B861 +S315400204106F3F484C0137D208EE2E780F256007AB66 +S315400204206F3F483CC5303F587FE2F780AB123809F0 +S315400204307FD00000000000007FEAF780AB12380947 +S31540020440002000000000000080280000000000009C +S3154002045080100000000000007FEFF780AB123809E1 +S315400204607FEFF2010203A1117FF0000000000000BD +S315400204700010000000001000801FFFFFF203A111D0 +S315400204808000000000000000001ABCD000023809BB +S31540020490801ABCD0000001110000000000000000DC +S315400204A06530000065301000653020006530300050 +S315400204B06530400065305000653060006530700040 +S315400204C065308000653090006530A0006530B00030 +S315400204D06530C0006530D0006530E0006530F00020 +S315400204E0653100006531100065312000653130000C +S315400204F065314000653150006531600065317000FC +S3154002050065318000653190006531A0006531B000EB +S315400205106531C0006531D0006531E0006531F000DB +S3154002052065320000653210006532200065323000C7 +S3154002053065324000653250006532600065327000B7 +S3154002054065328000653290006532A0006532B000A7 +S315400205506532C0006532D0006532E0006532F00097 +S315400205606533000065331000653320006533300083 +S315400205706533400065335000653360006533700073 +S3154002058065338000653390006533A0006533B00063 +S315400205906533C0006533D0006533E0006533F00053 +S315400205A0653400006534100065342000653430003F +S315400205B0653440006534500065346000653470002F +S315400205C065348000653490006534A0006534B0001F +S315400205D06534C0006534D0006534E0006534F0000F +S315400205E065350000653510006535200065353000FB +S315400205F065354000653550006535600065357000EB +S3154002060065358000653590006535A0006535B000DA +S315400206106535C0006535D0006535E0006535F000CA +S3154002062065360000653610006536200065363000B6 +S3154002063065364000653650006536600065367000A6 +S3154002064065368000653690006536A0006536B00096 +S315400206506536C0006536D0006536E0006536F00086 +S315400206606537000065371000653720006537300072 +S315400206706537400065375000653760006537700062 +S3154002068065378000653790006537A0006537B00052 +S315400206906537C0006537D0006537E0006537F00042 +S315400206A0653800006538100065382000653830002E +S315400206B0653840006538500065386000653870001E +S315400206C065388000653890006538A0006538B0000E +S315400206D06538C0006538D0006538E0006538F000FE +S315400206E065390000653910006539200065393000EA +S315400206F065394000653950006539600065397000DA +S3154002070065398000653990006539A0006539B000C9 +S315400207106539C0006539D0006539E0006539F000B9 +S31540020720653A0000653A1000653A2000653A3000A5 +S31540020730653A4000653A5000653A6000653A700095 +S31540020740653A8000653A9000653AA000653AB00085 +S31540020750653AC000653AD000653AE000653AF00075 +S31540020760653B0000653B1000653B2000653B300061 +S31540020770653B4000653B5000653B6000653B700051 +S31540020780653B8000653B9000653BA000653BB00041 +S31540020790653BC000653BD000653BE000653BF00031 +S315400207A0653C0000653C1000653C2000653C30001D +S315400207B0653C4000653C5000653C6000653C70000D +S315400207C0653C8000653C9000653CA000653CB000FD +S315400207D0653CC000653CD000653CE000653CF000ED +S315400207E0653D0000653D1000653D2000653D3000D9 +S315400207F0653D4000653D5000653D6000653D7000C9 +S31540020800653D8000653D9000653DA000653DB000B8 +S31540020810653DC000653DD000653DE000653DF000A8 +S31540020820653E0000653E1000653E2000653E300094 +S31540020830653E4000653E5000653E6000653E700084 +S31540020840653E8000653E9000653EA000653EB00074 +S31540020850653EC000653ED000653EE000653EF00064 +S31540020860653F0000653F1000653F2000653F300050 +S31540020870653F4000653F5000653F6000653F700040 +S31540020880653F8000653F9000653FA000653FB00030 +S31540020890653FC000653FD000653FE000653FF00020 +S315400208A00BC0A4068F346C9B0BC093731C18544721 +S315400208B00BC083008E183C230BC072AE83A9704ACC +S315400208C00BC0627C9CC166FF0BC0526A7ACE64A49E +S315400208D00BC04277C0B04ADA0BC032A412B191A023 +S315400208E00BC022EF168069500BC01358732804734D +S315400208F00BC003DFD10A08480BBFE909B3B0463241 +S315400209000BBFCA8E711B8E880BBFAC4D32D41430CE +S315400209100BBF8E4553D34B1B0BBF7076318237EFDD +S315400209200BBF52DF2BADF99C0BBF357FA47C936C7A +S315400209300BBF18570061F5EB0BBEFB64A6154515B8 +S315400209400BBEDEA7FE865A2B0BBEC22074D37FBCDB +S315400209500BBEA5CD763F66690BBE89AE722750F0B7 +S315400209600BBE6DC2D9F976230BBE520A212B976C68 +S315400209700BBE3683BD31CAA20BBE1B2F257575CA67 +S315400209800BBE000BD34C7BAF0BBDE51941F097FE76 +S315400209900BBDCA56EE76E9D00BBDAFC457C7AB7393 +S315400209A00BBD9560FE9616690BBD7B2C655872751C +S315400209B00BBD612610404EC00BBD474D8532E40942 +S315400209C00BBD2DA24BC19EDF0BBD1423ED22D101DF +S315400209D00BBCFAD1F42A88E40BBCE1ABED438E8022 +S315400209E00BBCC8B1666884820BBCAFE1EF1D2D011A +S315400209F00BBC973D1867D0EF0BBC7EC274CAC96266 +S31540020A000BBC6671983E29FE0BBC4E4A18298BA92F +S31540020A100BBC364B8B5DF6DB0BBC1E758A0FECBFEF +S31540020A200BBC06C7ADD18E7E0BBBEF41918CE1F676 +S31540020A300BBBD7E2D17E33360BBBC0AB0B2E921B20 +S31540020A400BBBA999DD6E6B650BBB92AEE8503CA71A +S31540020A500BBB7BE9CD2362720BBB654A2E6F002C22 +S31540020A600BBB4ECFAFED00FE0BBB3879F685313F5F +S31540020A700BBB2248A8486FDE0BBB0C3B6C6BF73BAB +S31540020A800BBAF651EB44BCEE0BBAE08BCE42E7F121 +S31540020A900BBACAE8BFED5CC00BBAB5686BDD5EDD6A +S31540020AA00BBAA00A7EBA475E0BBA8ACEA6354FEB80 +S31540020AB00BBA75B4910571DB0BBA60BBEEE358EF26 +S31540020AC00BBA4BE4708569410BBA372DC79BD7FEEB +S31540020AD00BBA2297A6CCD68C0BBA0E21C1B0CFA0A8 +S31540020AE00BB9F9CBCCCEB6050BB9E5957D98648B9F +S31540020AF00BB9D17E8A670EE70BB9BD86AA77C310BA +S31540020B000BB9A9AD95E7FAC40BB995F305B23CE525 +S31540020B100BB98256B3AACE570BB96ED85A7C720617 +S31540020B200BB95B77B5A537C80BB94834817359CC35 +S31540020B300BB9350E7B02284D0BB922056037032EC1 +S31540020B400BB90F18EFBE614A0BB8FC48E908E5221B +S31540020B500BB8E9950C487EA90BB8D6FD1A6D99E8F3 +S31540020B600BB8C480D5245A340BB8B21FFED1E1BCAF +S31540020B700BB89FDA5A91A5260BB88DAFAC32CB0A89 +S31540020B800BB87B9FB83596F60BB869AA43C8DFE126 +S31540020B900BB857CF14C791B50BB8460DF1B639C647 +S31540020BA00BB83466A1C09DF90BB822D8ECB75E6E7D +S31540020BB00BB811649B0DA16B0BB8000975D6C959C8 +S31540020BC00BB7EEC746C434A50BB7DD9DD8230752F3 +S31540020BD00BB7CC8CF4D9FE010BB7BB9468674A506D +S31540020BE00BB7AAB3FEDE78540BB799EB84E65D0CDD +S31540020BF00BB7893AC7B70D960BB778A19517DF01A0 +S31540020C000BB7681FBB5D6E910BB757B50967B24C00 +S31540020C100BB747614EA011A20BB737245AF7861479 +S31540020C200BB726FDFEE4C3A00BB716EE0B6268E8CF +S31540020C300BB706F451ED36CE0BB6F710A4824F80B1 +S31540020C400BB6E742D59D7CB40BB6D78AB8377D0E34 +S31540020C500BB6C7E81FC458720BB6B85AE031BB325E +S31540020C600BB6A8E2CDE557F90BB6997FBDBB504509 +S31540020C700BB68A318504A35C0BB67AF7F985A39B3A +S31540020C800BB66BD2F17471FF0BB65CC243777FCE63 +S31540020C900BB64DC5C6A416420BB63EDD527CE411D8 +S31540020CA00BB63008BEF090CF0BB62147E45855EB51 +S31540020CB00BB6129A9B769D520BB60400BD75A5845F +S31540020CC00BB5F57A23E62B070BB5E706A8BE172C1C +S31540020CD00BB5D8A6265733FF0BB5CA58776DE54BE9 +S31540020CE00BB5BC1D771FE6AB0BB5ADF500EB0E7829 +S31540020CF00BB59FDEF0AC15940BB591DB229D63F2EA +S31540020D000BB583E97355E1C10BB57609BFC7CD3241 +S31540020D100BB5683BE53F94B80BB55A7FC162B5B691 +S31540020D200BB54CD5322E9F7F0BB53F3C15F79AA19A +S31540020D300BB531B44B67B45A0BB5243DB17DAE30D9 +S31540020D400BB516D8278BF18F0BB509838D3787677D +S31540020D500BB4FC3FC27713AE0BB4EF0CA791D4BBD6 +S31540020D600BB4E1EA1D1EA6680BB4D4D8040308E509 +S31540020D700BB4C7D63D722B370BB4BAE4AAEBF9488B +S31540020D800BB4AE032E3C2D7E0BB4A131A97965C9B5 +S31540020D900BB4946FFF043C1C0BB487BE11866236BB +S31540020DA00BB47B1BC3F1C0BF0BB46E88F97F999B12 +S31540020DB00BB4620595AFAD730BB455917C47645441 +S31540020DC00BB4492C9150F96C0BB43CD6B91AA9C84C +S31540020DD00BB4308FD835E60B0BB42457D37687162F +S31540020DE00BB4182E8FF205900BB40C13F2FEB43BE3 +S31540020DF00BB40007E232FD1F0BB3F40A4364A1674A +S31540020E000BB3E81AFCA7FBF00BB3DC39F44F468A66 +S31540020E100BB3D06710E9E1C30BB3C4A239439F4F6A +S31540020E200BB3B8EB54640EF10BB3AD42498DCDDF33 +S31540020E300BB3A1A7003DD89B0BB39619602ADF2BB3 +S31540020E400BB38A9951449BB80BB37F26BBB32B791C +S31540020E500BB373C187D669EA0BB368699E454E44A4 +S31540020E600BB35D1EE7CD4B2D0BB351E14D71B098DF +S31540020E700BB346B0B86B0FC30BB33B8D1226A15AC8 +S31540020E800BB330764445ADAC0BB3256C389CF6EBD0 +S31540020E900BB31A6ED934256E0BB30F7E104535F55A +S31540020EA00BB30499C83BE9D60BB2F9C1EBB539236A +S31540020EB00BB2EEF6657EC6AA0BB2E437209655D53E +S31540020EC00BB2D984082942630BB2CEDD0793F9E708 +S31540020ED00BB2C4420A6177190BB2B9B2FC4ABEDA06 +S31540020EE00BB2AF2FC9365EFF0BB2A4B85D37EEC167 +S31540020EF00BB29A4CA48F90E30BB28FEC8BA9777905 +S31540020F000BB28597FF1D694D0BB27B4EEBAE48DDAA +S31540020F100BB271113E499CEE0BB266DEE4071AA88B +S31540020F200BB25CB7CA2831380BB2529BDE1796F722 +S31540020F300BB2488B0D68D8030BB23E8545D7E65AAD +S31540020F400BB2348A7548AB540BB22A9A89C69A9721 +S31540020F500BB220B5718446610BB216DB1ADAF53F45 +S31540020F600BB20D0B744A39100BB203466C77876C81 +S31540020F700BB1F98BF22DD3490BB1EFDBF45D27FFB1 +S31540020F800BB1E636621A457E0BB1DC9B2A9E3DD5F5 +S31540020F900BB1D30A3D4613EE0BB1C98389925B81ED +S31540020FA00BB1C006FF26DA3F0BB1B6948DCA2A288A +S31540020FB00BB1AD2C25655D0F0BB1A3CDB603A13D9B +S31540020FC00BB19A792FD1E7410BB1912E831E88D26C +S31540020FD00BB187EDA058F0D60BB17EB678114473AB +S31540020FE00BB17588FAF80D3A0BB16C6519DDE45D03 +S31540020FF00BB1634AC5B31EEF0BB15A39EF877B2853 +S315400210000BB151328889CEAE0BB148348207B5DB7B +S315400210100BB13F3FCD6D43FF0BB136545C44B49A9E +S315400210200BB12D7220361D870BB124990B07221B5B +S315400210300BB11BC90E9AA72D0BB113021CF0880FD8 +S315400210400BB10A4428254C650BB1018F2271DEE5AE +S315400210500BB0F8E2FE2B44F40BB0F03FADC257237F +S315400210600BB0E7A523C37A850BB0DF1352D65AD904 +S315400210700BB0D68A2DBDA58C0BB0CE09A756C58915 +S315400210800BB0C591B2999FDB0BB0BD224298511568 +S315400210900BB0B4BB4A7EEB870BB0AC5CBD93363625 +S315400210A0529000000000000052900FF807F60DEB38 +S315400210B052901FE03F61BAD052902FB8D4E30F4806 +S315400210C052903F81F636B80C52904F3BD03C0A6460 +S315400210D052905EE68EFAD48B52906E825DA8FC2BBD +S315400210E052907E0F66AFED0752908D8DD3B1D9AA3D +S315400210F052909CFDCD8ED0095290AC5F7C69A3C8BC +S315400211005290BBB307ACAFDB5290CAF8960E710D44 +S315400211105290DA304D95FB065290E95A539F492C2C +S315400211205290F876CCDF6CD952910785DD689A29C0 +S3154002113052911687A8AE14A35291257C5187FD0978 +S3154002114052913463FA37014E5291433EC467EFFBE4 +S315400211505291520CD1372FEB529160CE41341D74CD +S3154002116052916F8334644DF952917E2BCA46BAB975 +S3154002117052918CC821D6D3E352919B58598F7C9F6A +S315400211805291A9DC8F6DF1045291B854E0F496A0C5 +S315400211905291C6C16B2DB8705291D5224AAE2EE1FC +S315400211A05291E3779B97F4A85291F1C1799CA8FF9B +S315400211B0529200000000000052920E33499A21A931 +S315400211C052921C5B70D9F82452922A788FC76DE5E9 +S315400211D05292388AC0059C28529246921AD4EA49BB +S315400211E05292548EB9151E8552926280B3476096CA +S315400211F05292706821902E9A52927E451BB944C3F0 +S3154002120052928C17B9337834529299E011188575F7 +S315400212105292A79E3A2CD2E65292B5524AE1278E74 +S315400212205292C2FC595456A75292D09C7B54E03EED +S315400212305292DE32C66287415292EBBF4FAFDD4BCE +S315400212405292F9422C23C47E529306BB705AE7C38C +S315400212505293142B30A929AB52932191811B0A41F7 +S3154002126052932EEE7577041652933C42213EE0C9C4 +S315400212705293498C97B10540529356CDEBC9B5E28C +S31540021280529364063044530652937135779C8DCB04 +S3154002129052937E5BD40F95A152938B79579D3EAB69 +S315400212A05293988E1409212E5293A59A1ADBB2575D +S315400212B05293B29D7D6356625293BF984CB56C77FA +S315400212C05293CC8A99AF54535293D97474F76DF2B0 +S315400212D05293E655EEFE13675293F32F17FE8D0493 +S315400212E0529400000000000052940CC8B6D657C271 +S315400212F0529419894C2329F052942641CF5695721D +S31540021300529432F24FB01C7A52943F9ADC3F79CED5 +S3154002131052944C3B83E57153529458D455549C1A7B +S31540021320529465655F122FF6529471EEAF76C2C63D +S3154002133052947E7054AF098952948AEA5CBC935F98 +S315400213405294975CD57680885294A3C7CC8A358AC4 +S315400213505294B02B4F7C0A885294BC876BA7F6EC0A +S315400213605294C8DC2E4239805294D529A457FCFCAB +S315400213705294E16FDACFF9375294EDAEDE6B10FE3E +S315400213805294F9E6BBC4ECB3529506177F5491BB0F +S3154002139052951241356CF6E052951E63EA3D95B080 +S315400213A052952A7FA9D2F8EA529536948017481068 +S315400213B0529542A278D2D03652954EA99FAC8A0F08 +S315400213C052955AAA002A9D5A529566A3A5B2E1B1F0 +S315400213D0529572969B8B5CD852957E82ECDABE8D84 +S315400213E052958A68A4A8D9F352959647CDDF1CA593 +S315400213F05295A220734903775295ADF29F948CFB86 +S315400214005295B9BE5D52A9DA5295C583B6F7AB037A +S315400214105295D142B6DBADC55295DCFB673B05DF43 +S315400214205295E8ADD236A58F5295F45A01D483B47B +S31540021430529600000000000052960B9FD68A4554F1 +S31540021440529617398F2AAA48529622CD337F0FE8F1 +S3154002145052962E5ACD0C3EBE529639E2653E421BFC +S31540021460529645640568C1C3529650DFB6C759F4D1 +S3154002147052965C55827DF1D2529667C57199104B50 +S315400214805296732F8D0E2F7752967E93DDBC0E7336 +S31540021490529689F26C6B01D05296954B41CD42934E +S315400214A000000000000000000000000000000000F4 +S315400214B000000000000000000000000000000000E4 +S315400214C000000000000000000000000000000000D4 +S315400214D000000000000000000000000000000000C4 +S315400214E000000000000000000000000000000000B4 +S315400214F000000000000000000000000000000000A4 S315400215000000000000000000000000000000000093 S315400215100000000000000000000000000000000083 S315400215200000000000000000000000000000000073 @@ -9387,8 +9502,8 @@ S31540027FC00000000000000000000000000000000069 S31540027FD00000000000000000000000000000000059 S31540027FE00000000000000000000000000000000049 S31540027FF00000000000000000000000000000000039 -S315400280000000003F0000000C0000003F000000128C -S31540028010000000FF00000018000000000000000001 +S315400280000000000000000000000000000000000028 +S315400280100000000000000000000000000000000018 S315400280200000000000000000000000000000000008 S3154002803000000000000000000000000000000000F8 S3154002804000000000000000000000000000000000E8 @@ -16299,8 +16414,8 @@ S31540042FC000000000000000000000000000000000B7 S31540042FD000000000000000000000000000000000A7 S31540042FE00000000000000000000000000000000097 S31540042FF00000000000000000000000000000000087 -S315400430000000000000000000000000000000000076 -S315400430100000000000000000000000000000000066 +S3154004300000000018000000FF000000120000003F0E +S315400430100000000C0000003F00000000000000001B S315400430200000000000000000000000000000000056 S315400430300000000000000000000000000000000046 S315400430400000000000000000000000000000000036 @@ -17579,125 +17694,125 @@ S31540047FC00000000000000000000000000000000067 S31540047FD00000000000000000000000000000000057 S31540047FE00000000000000000000000000000000047 S31540047FF00000000000000000000000000000000037 -S315400480000000000000000000000000000000000026 -S315400480100000000000000000000000000000000016 -S315400480200000000000000000000000000000000006 -S3154004803000000000000000000000000000000000F6 -S3154004804000000000000000000000000000000000E6 -S3154004805000000000000000000000000000000000D6 -S3154004806000000000000000000000000000000000C6 -S3154004807000000000000000000000000000000000B6 -S3154004808000000000000000000000000000000000A6 -S315400480900000000000000000000000000000000096 -S315400480A00000000000000000000000000000000086 -S315400480B00000000000000000000000000000000076 -S315400480C00000000000000000000000000000000066 -S315400480D00000000000000000000000000000000056 -S315400480E00000000000000000000000000000000046 -S315400480F00000000000000000000000000000000036 -S315400481000000000000000000000000000000000025 -S315400481100000000000000000000000000000000015 -S315400481200000000000000000000000000000000005 -S3154004813000000000000000000000000000000000F5 -S3154004814000000000000000000000000000000000E5 -S3154004815000000000000000000000000000000000D5 -S3154004816000000000000000000000000000000000C5 -S3154004817000000000000000000000000000000000B5 -S3154004818000000000000000000000000000000000A5 -S315400481900000000000000000000000000000000095 -S315400481A00000000000000000000000000000000085 -S315400481B00000000000000000000000000000000075 -S315400481C00000000000000000000000000000000065 -S315400481D00000000000000000000000000000000055 -S315400481E00000000000000000000000000000000045 +S31540048000000000020000000300000000000000031E +S31540048010FFFFFFFEFFFFFFFF00000002FFFFFFFD23 +S315400480200000000000000000000000010000000005 +S3154004803000000000FFFFFFFF0000000000000001F9 +S31540048040FFFFFFFFFFFFFFFFFFFFFFFF00000001F1 +S31540048050FFFFFFFFFFFFFFFE0000000300000000DC +S31540048060FFFFFFFEFFFFFFFD0000000000000009C8 +S315400480700000000700000001FFFFFFF700000002B8 +S31540048080FFFFFFFCFFFFFFF800000002FFFFFFFCBD +S31540048090FFFFFFF8FFFFFFFC00000002000000089E +S315400480A0FFFFFFFCFFFFFFFEFFFFFFF8FFFFFFF8A8 +S315400480B000000001FFFFFFF8FFFFFFF7000000008C +S315400480C00000000B00000002000000050000002F25 +S315400480D0000000020000001700003039000002A72B +S315400480E000000012FFFF076C0000004DFFFFFCC6B6 +S315400480F000003039FFFFFD59FFFFFFEEFFFF076C1D +S31540048100FFFFFFB30000033A00000091FFFFE84180 +S3154004811000000000FFFFFD84FFFED02F000000009A +S315400481200000F6FA006E49810000000000000000DD +S3154004813000000000000000000000000200000003F0 +S3154004814000000000000000000000000100000000E4 +S31540048150FFFFFFFE0000000355555554FFFFFFFE89 +S315400481600000000355555554700FFFFE00000007EC +S315400481701002492400000000000000000000000036 +S315400481800000000200000003000000060000000298 +S31540048190FFFFFFFDFFFFFFFA0000000000000001A3 +S315400481A00000000000000000FFFFFFFF0000000089 +S315400481B000000001FFFFFFFFFFFFFFFFFFFFFFFF80 +S315400481C000000001FFFFFFFFFFFFFFFE000000036A +S315400481D0FFFFFFFAFFFFFFFEFFFFFFFD0000000663 +S315400481E0000000000000000000000009FFFFF0004E S315400481F00000000000000000000000000000000035 -S315400482000000000000000000000000000000000024 +S31540048200000000000000000100000002000000031E S315400482100000000000000000000000000000000014 -S315400482200000000000000000000000000000000004 -S3154004823000000000000000000000000000000000F4 -S3154004824000000000000000000000000000000000E4 -S3154004825000000000000000000000000000000000D4 -S3154004826000000000000000000000000000000000C4 -S3154004827000000000000000000000000000000000B4 -S3154004828000000000000000000000000000000000A4 -S315400482900000000000000000000000000000000094 -S315400482A00000000000000000000000000000000084 -S315400482B00000000000000000000000000000000074 -S315400482C00000000000000000000000000000000064 -S315400482D00000000000000000000000000000000054 -S315400482E00000000000000000000000000000000044 -S315400482F00000000000000000000000000000000034 -S315400483000000000000000000000000000000000023 -S315400483100000000000000000000000000000000013 -S315400483200000000000000000000000000000000003 -S3154004833000000000000000000000000000000000F3 -S3154004834000000000000000000000000000000000E3 -S3154004835000000000000000000000000000000000D3 -S3154004836000000000000000000000000000000000C3 -S3154004837000000000000000000000000000000000B3 -S3154004838000000000000000000000000000000000A3 -S315400483900000000000000000000000000000000093 -S315400483A00000000000000000000000000000000083 -S315400483B00000000000000000000000000000000073 -S315400483C00000000000000000000000000000000063 -S315400483D00000000000000000000000000000000053 -S315400483E00000000000000000000000000000000043 -S315400483F00000000000000000000000000000000033 -S315400484000000000000000000000000000000000022 -S315400484100000000000000000000000000000000012 -S315400484200000000000000000000000000000000002 -S3154004843000000000000000000000000000000000F2 -S3154004844000000000000000000000000000000000E2 -S3154004845000000000000000000000000000000000D2 -S3154004846000000000000000000000000000000000C2 -S3154004847000000000000000000000000000000000B2 -S3154004848000000000000000000000000000000000A2 -S315400484900000000000000000000000000000000092 -S315400484A00000000000000000000000000000000082 -S315400484B00000000000000000000000000000000072 -S315400484C00000000000000000000000000000000062 -S315400484D00000000000000000000000000000000052 -S315400484E00000000000000000000000000000000042 -S315400484F00000000000000000000000000000000032 -S315400485000000000000000000000000000000000021 -S315400485100000000000000000000000000000000011 -S315400485200000000000000000000000000000000001 -S3154004853000000000000000000000000000000000F1 -S3154004854000000000000000000000000000000000E1 -S3154004855000000000000000000000000000000000D1 -S3154004856000000000000000000000000000000000C1 -S3154004857000000000000000000000000000000000B1 -S3154004858000000000000000000000000000000000A1 -S315400485900000000000000000000000000000000091 -S315400485A00000000000000000000000000000000081 -S315400485B00000000000000000000000000000000071 -S315400485C00000000000000000000000000000000061 -S315400485D00000000000000000000000000000000051 -S315400485E00000000000000000000000000000000041 -S315400485F00000000000000000000000000000000031 -S315400486000000000000000000000000000000000020 -S315400486100000000000000000000000000000000010 -S315400486200000000000000000000000000000000000 -S3154004863000000000000000000000000000000000F0 -S3154004864000000000000000000000000000000000E0 +S315400482200000000000000000400482204004822038 +S31540048230400482284004822840048230400482302C +S3154004824040048238400482384004824040048240DC +S31540048250400482484004824840048250400482508C +S31540048260400482584004825840048260400482603C +S3154004827040048268400482684004827040048270EC +S31540048280400482784004827840048280400482809C +S31540048290400482884004828840048290400482904C +S315400482A04004829840048298400482A0400482A0FC +S315400482B0400482A8400482A8400482B0400482B0AC +S315400482C0400482B8400482B8400482C0400482C05C +S315400482D0400482C8400482C8400482D0400482D00C +S315400482E0400482D8400482D8400482E0400482E0BC +S315400482F0400482E8400482E8400482F0400482F06C +S31540048300400482F8400482F8400483004004830019 +S3154004831040048308400483084004831040048310C7 +S315400483204004831840048318400483204004832077 +S315400483304004832840048328400483304004833027 +S3154004834040048338400483384004834040048340D7 +S315400483504004834840048348400483504004835087 +S315400483604004835840048358400483604004836037 +S3154004837040048368400483684004837040048370E7 +S315400483804004837840048378400483804004838097 +S315400483904004838840048388400483904004839047 +S315400483A04004839840048398400483A0400483A0F7 +S315400483B0400483A8400483A8400483B0400483B0A7 +S315400483C0400483B8400483B8400483C0400483C057 +S315400483D0400483C8400483C8400483D0400483D007 +S315400483E0400483D8400483D8400483E0400483E0B7 +S315400483F0400483E8400483E8400483F0400483F067 +S31540048400400483F8400483F8400484004004840014 +S3154004841040048408400484084004841040048410C2 +S315400484204004841840048418400484204004842072 +S315400484304004842840048428400484304004843022 +S3154004844040048438400484384004844040048440D2 +S315400484504004844840048448400484504004845082 +S315400484604004845840048458400484604004846032 +S3154004847040048468400484684004847040048470E2 +S315400484804004847840048478400484804004848092 +S315400484904004848840048488400484904004849042 +S315400484A04004849840048498400484A0400484A0F2 +S315400484B0400484A8400484A8400484B0400484B0A2 +S315400484C0400484B8400484B8400484C0400484C052 +S315400484D0400484C8400484C8400484D0400484D002 +S315400484E0400484D8400484D8400484E0400484E0B2 +S315400484F0400484E8400484E8400484F0400484F062 +S31540048500400484F8400484F840048500400485000F +S3154004851040048508400485084004851040048510BD +S31540048520400485184004851840048520400485206D +S31540048530400485284004852840048530400485301D +S3154004854040048538400485384004854040048540CD +S31540048550400485484004854840048550400485507D +S31540048560400485584004855840048560400485602D +S3154004857040048568400485684004857040048570DD +S31540048580400485784004857840048580400485808D +S31540048590400485884004858840048590400485903D +S315400485A04004859840048598400485A0400485A0ED +S315400485B0400485A8400485A8400485B0400485B09D +S315400485C0400485B8400485B8400485C0400485C04D +S315400485D0400485C8400485C8400485D0400485D0FD +S315400485E0400485D8400485D8400485E0400485E0AD +S315400485F0400485E8400485E8400485F0400485F05D +S31540048600400485F8400485F840048600400486000A +S3154004861040048608400486084004861040048610B8 +S31540048620400486184004861800020000FFFFFFFF3E +S3154004863000000000400486300000000000000000F6 +S3154004864000000000000000020000000000000000DE S3154004865000000000000000000000000000000000D0 S3154004866000000000000000000000000000000000C0 S3154004867000000000000000000000000000000000B0 S3154004868000000000000000000000000000000000A0 S315400486900000000000000000000000000000000090 -S315400486A00000000000000000000000000000000080 -S315400486B00000000000000000000000000000000070 +S315400486A00000000000000000400486B00000000006 +S315400486B0000000004004899C40048A6840048B34CE S315400486C00000000000000000000000000000000060 S315400486D00000000000000000000000000000000050 -S315400486E00000000000000000000000000000000040 +S315400486E0000000004001D1B8000000000000000076 S315400486F00000000000000000000000000000000030 S31540048700000000000000000000000000000000001F S31540048710000000000000000000000000000000000F S3154004872000000000000000000000000000000000FF S3154004873000000000000000000000000000000000EF S3154004874000000000000000000000000000000000DF -S3154004875000000000000000000000000000000000CF -S3154004876000000000000000000000000000000000BF +S3154004875000000000000000000000000000000001CE +S31540048760330EABCD1234E66DDEEC0005000B000093 S3154004877000000000000000000000000000000000AF S31540048780000000000000000000000000000000009F S31540048790000000000000000000000000000000008F @@ -17774,2055 +17889,7 @@ S31540048BF0000000000000000000000000000000002B S31540048C00000000000000000000000000000000001A S31540048C10000000000000000000000000000000000A S31540048C2000000000000000000000000000000000FA -S31540048C3000000000000000000000000000000000EA -S31540048C4000000000000000000000000000000000DA -S31540048C5000000000000000000000000000000000CA -S31540048C6000000000000000000000000000000000BA -S31540048C7000000000000000000000000000000000AA -S31540048C80000000000000000000000000000000009A -S31540048C90000000000000000000000000000000008A -S31540048CA0000000000000000000000000000000007A -S31540048CB0000000000000000000000000000000006A -S31540048CC0000000000000000000000000000000005A -S31540048CD0000000000000000000000000000000004A -S31540048CE0000000000000000000000000000000003A -S31540048CF0000000000000000000000000000000002A -S31540048D000000000000000000000000000000000019 -S31540048D100000000000000000000000000000000009 -S31540048D2000000000000000000000000000000000F9 -S31540048D3000000000000000000000000000000000E9 -S31540048D4000000000000000000000000000000000D9 -S31540048D5000000000000000000000000000000000C9 -S31540048D6000000000000000000000000000000000B9 -S31540048D7000000000000000000000000000000000A9 -S31540048D800000000000000000000000000000000099 -S31540048D900000000000000000000000000000000089 -S31540048DA00000000000000000000000000000000079 -S31540048DB00000000000000000000000000000000069 -S31540048DC00000000000000000000000000000000059 -S31540048DD00000000000000000000000000000000049 -S31540048DE00000000000000000000000000000000039 -S31540048DF00000000000000000000000000000000029 -S31540048E000000000000000000000000000000000018 -S31540048E100000000000000000000000000000000008 -S31540048E2000000000000000000000000000000000F8 -S31540048E3000000000000000000000000000000000E8 -S31540048E4000000000000000000000000000000000D8 -S31540048E5000000000000000000000000000000000C8 -S31540048E6000000000000000000000000000000000B8 -S31540048E7000000000000000000000000000000000A8 -S31540048E800000000000000000000000000000000098 -S31540048E900000000000000000000000000000000088 -S31540048EA00000000000000000000000000000000078 -S31540048EB00000000000000000000000000000000068 -S31540048EC00000000000000000000000000000000058 -S31540048ED00000000000000000000000000000000048 -S31540048EE00000000000000000000000000000000038 -S31540048EF00000000000000000000000000000000028 -S31540048F000000000000000000000000000000000017 -S31540048F100000000000000000000000000000000007 -S31540048F2000000000000000000000000000000000F7 -S31540048F3000000000000000000000000000000000E7 -S31540048F4000000000000000000000000000000000D7 -S31540048F5000000000000000000000000000000000C7 -S31540048F6000000000000000000000000000000000B7 -S31540048F7000000000000000000000000000000000A7 -S31540048F800000000000000000000000000000000097 -S31540048F900000000000000000000000000000000087 -S31540048FA00000000000000000000000000000000077 -S31540048FB00000000000000000000000000000000067 -S31540048FC00000000000000000000000000000000057 -S31540048FD00000000000000000000000000000000047 -S31540048FE00000000000000000000000000000000037 -S31540048FF00000000000000000000000000000000027 -S315400490000000000000000000000000000000000016 -S315400490100000000000000000000000000000000006 -S3154004902000000000000000000000000000000000F6 -S3154004903000000000000000000000000000000000E6 -S3154004904000000000000000000000000000000000D6 -S3154004905000000000000000000000000000000000C6 -S3154004906000000000000000000000000000000000B6 -S3154004907000000000000000000000000000000000A6 -S315400490800000000000000000000000000000000096 -S315400490900000000000000000000000000000000086 -S315400490A00000000000000000000000000000000076 -S315400490B00000000000000000000000000000000066 -S315400490C00000000000000000000000000000000056 -S315400490D00000000000000000000000000000000046 -S315400490E00000000000000000000000000000000036 -S315400490F00000000000000000000000000000000026 -S315400491000000000000000000000000000000000015 -S315400491100000000000000000000000000000000005 -S3154004912000000000000000000000000000000000F5 -S3154004913000000000000000000000000000000000E5 -S3154004914000000000000000000000000000000000D5 -S3154004915000000000000000000000000000000000C5 -S3154004916000000000000000000000000000000000B5 -S3154004917000000000000000000000000000000000A5 -S315400491800000000000000000000000000000000095 -S315400491900000000000000000000000000000000085 -S315400491A00000000000000000000000000000000075 -S315400491B00000000000000000000000000000000065 -S315400491C00000000000000000000000000000000055 -S315400491D00000000000000000000000000000000045 -S315400491E00000000000000000000000000000000035 -S315400491F00000000000000000000000000000000025 -S315400492000000000000000000000000000000000014 -S315400492100000000000000000000000000000000004 -S3154004922000000000000000000000000000000000F4 -S3154004923000000000000000000000000000000000E4 -S3154004924000000000000000000000000000000000D4 -S3154004925000000000000000000000000000000000C4 -S3154004926000000000000000000000000000000000B4 -S3154004927000000000000000000000000000000000A4 -S315400492800000000000000000000000000000000094 -S315400492900000000000000000000000000000000084 -S315400492A00000000000000000000000000000000074 -S315400492B00000000000000000000000000000000064 -S315400492C00000000000000000000000000000000054 -S315400492D00000000000000000000000000000000044 -S315400492E00000000000000000000000000000000034 -S315400492F00000000000000000000000000000000024 -S315400493000000000000000000000000000000000013 -S315400493100000000000000000000000000000000003 -S3154004932000000000000000000000000000000000F3 -S3154004933000000000000000000000000000000000E3 -S3154004934000000000000000000000000000000000D3 -S3154004935000000000000000000000000000000000C3 -S3154004936000000000000000000000000000000000B3 -S3154004937000000000000000000000000000000000A3 -S315400493800000000000000000000000000000000093 -S315400493900000000000000000000000000000000083 -S315400493A00000000000000000000000000000000073 -S315400493B00000000000000000000000000000000063 -S315400493C00000000000000000000000000000000053 -S315400493D00000000000000000000000000000000043 -S315400493E00000000000000000000000000000000033 -S315400493F00000000000000000000000000000000023 -S315400494000000000000000000000000000000000012 -S315400494100000000000000000000000000000000002 -S3154004942000000000000000000000000000000000F2 -S3154004943000000000000000000000000000000000E2 -S3154004944000000000000000000000000000000000D2 -S3154004945000000000000000000000000000000000C2 -S3154004946000000000000000000000000000000000B2 -S3154004947000000000000000000000000000000000A2 -S315400494800000000000000000000000000000000092 -S315400494900000000000000000000000000000000082 -S315400494A00000000000000000000000000000000072 -S315400494B00000000000000000000000000000000062 -S315400494C00000000000000000000000000000000052 -S315400494D00000000000000000000000000000000042 -S315400494E00000000000000000000000000000000032 -S315400494F00000000000000000000000000000000022 -S315400495000000000000000000000000000000000011 -S315400495100000000000000000000000000000000001 -S3154004952000000000000000000000000000000000F1 -S3154004953000000000000000000000000000000000E1 -S3154004954000000000000000000000000000000000D1 -S3154004955000000000000000000000000000000000C1 -S3154004956000000000000000000000000000000000B1 -S3154004957000000000000000000000000000000000A1 -S315400495800000000000000000000000000000000091 -S315400495900000000000000000000000000000000081 -S315400495A00000000000000000000000000000000071 -S315400495B00000000000000000000000000000000061 -S315400495C00000000000000000000000000000000051 -S315400495D00000000000000000000000000000000041 -S315400495E00000000000000000000000000000000031 -S315400495F00000000000000000000000000000000021 -S315400496000000000000000000000000000000000010 -S315400496100000000000000000000000000000000000 -S3154004962000000000000000000000000000000000F0 -S3154004963000000000000000000000000000000000E0 -S3154004964000000000000000000000000000000000D0 -S3154004965000000000000000000000000000000000C0 -S3154004966000000000000000000000000000000000B0 -S3154004967000000000000000000000000000000000A0 -S315400496800000000000000000000000000000000090 -S315400496900000000000000000000000000000000080 -S315400496A00000000000000000000000000000000070 -S315400496B00000000000000000000000000000000060 -S315400496C00000000000000000000000000000000050 -S315400496D00000000000000000000000000000000040 -S315400496E00000000000000000000000000000000030 -S315400496F00000000000000000000000000000000020 -S31540049700000000000000000000000000000000000F -S3154004971000000000000000000000000000000000FF -S3154004972000000000000000000000000000000000EF -S3154004973000000000000000000000000000000000DF -S3154004974000000000000000000000000000000000CF -S3154004975000000000000000000000000000000000BF -S3154004976000000000000000000000000000000000AF -S31540049770000000000000000000000000000000009F -S31540049780000000000000000000000000000000008F -S31540049790000000000000000000000000000000007F -S315400497A0000000000000000000000000000000006F -S315400497B0000000000000000000000000000000005F -S315400497C0000000000000000000000000000000004F -S315400497D0000000000000000000000000000000003F -S315400497E0000000000000000000000000000000002F -S315400497F0000000000000000000000000000000001F -S31540049800000000000000000000000000000000000E -S3154004981000000000000000000000000000000000FE -S3154004982000000000000000000000000000000000EE -S3154004983000000000000000000000000000000000DE -S3154004984000000000000000000000000000000000CE -S3154004985000000000000000000000000000000000BE -S3154004986000000000000000000000000000000000AE -S31540049870000000000000000000000000000000009E -S31540049880000000000000000000000000000000008E -S31540049890000000000000000000000000000000007E -S315400498A0000000000000000000000000000000006E -S315400498B0000000000000000000000000000000005E -S315400498C0000000000000000000000000000000004E -S315400498D0000000000000000000000000000000003E -S315400498E0000000000000000000000000000000002E -S315400498F0000000000000000000000000000000001E -S31540049900000000000000000000000000000000000D -S3154004991000000000000000000000000000000000FD -S3154004992000000000000000000000000000000000ED -S3154004993000000000000000000000000000000000DD -S3154004994000000000000000000000000000000000CD -S3154004995000000000000000000000000000000000BD -S3154004996000000000000000000000000000000000AD -S31540049970000000000000000000000000000000009D -S31540049980000000000000000000000000000000008D -S31540049990000000000000000000000000000000007D -S315400499A0000000000000000000000000000000006D -S315400499B0000000000000000000000000000000005D -S315400499C0000000000000000000000000000000004D -S315400499D0000000000000000000000000000000003D -S315400499E0000000000000000000000000000000002D -S315400499F0000000000000000000000000000000001D -S31540049A00000000000000000000000000000000000C -S31540049A1000000000000000000000000000000000FC -S31540049A2000000000000000000000000000000000EC -S31540049A3000000000000000000000000000000000DC -S31540049A4000000000000000000000000000000000CC -S31540049A5000000000000000000000000000000000BC -S31540049A6000000000000000000000000000000000AC -S31540049A70000000000000000000000000000000009C -S31540049A80000000000000000000000000000000008C -S31540049A90000000000000000000000000000000007C -S31540049AA0000000000000000000000000000000006C -S31540049AB0000000000000000000000000000000005C -S31540049AC0000000000000000000000000000000004C -S31540049AD0000000000000000000000000000000003C -S31540049AE0000000000000000000000000000000002C -S31540049AF0000000000000000000000000000000001C -S31540049B00000000000000000000000000000000000B -S31540049B1000000000000000000000000000000000FB -S31540049B2000000000000000000000000000000000EB -S31540049B3000000000000000000000000000000000DB -S31540049B4000000000000000000000000000000000CB -S31540049B5000000000000000000000000000000000BB -S31540049B6000000000000000000000000000000000AB -S31540049B70000000000000000000000000000000009B -S31540049B80000000000000000000000000000000008B -S31540049B90000000000000000000000000000000007B -S31540049BA0000000000000000000000000000000006B -S31540049BB0000000000000000000000000000000005B -S31540049BC0000000000000000000000000000000004B -S31540049BD0000000000000000000000000000000003B -S31540049BE0000000000000000000000000000000002B -S31540049BF0000000000000000000000000000000001B -S31540049C00000000000000000000000000000000000A -S31540049C1000000000000000000000000000000000FA -S31540049C2000000000000000000000000000000000EA -S31540049C3000000000000000000000000000000000DA -S31540049C4000000000000000000000000000000000CA -S31540049C5000000000000000000000000000000000BA -S31540049C6000000000000000000000000000000000AA -S31540049C70000000000000000000000000000000009A -S31540049C80000000000000000000000000000000008A -S31540049C90000000000000000000000000000000007A -S31540049CA0000000000000000000000000000000006A -S31540049CB0000000000000000000000000000000005A -S31540049CC0000000000000000000000000000000004A -S31540049CD0000000000000000000000000000000003A -S31540049CE0000000000000000000000000000000002A -S31540049CF0000000000000000000000000000000001A -S31540049D000000000000000000000000000000000009 -S31540049D1000000000000000000000000000000000F9 -S31540049D2000000000000000000000000000000000E9 -S31540049D3000000000000000000000000000000000D9 -S31540049D4000000000000000000000000000000000C9 -S31540049D5000000000000000000000000000000000B9 -S31540049D6000000000000000000000000000000000A9 -S31540049D700000000000000000000000000000000099 -S31540049D800000000000000000000000000000000089 -S31540049D900000000000000000000000000000000079 -S31540049DA00000000000000000000000000000000069 -S31540049DB00000000000000000000000000000000059 -S31540049DC00000000000000000000000000000000049 -S31540049DD00000000000000000000000000000000039 -S31540049DE00000000000000000000000000000000029 -S31540049DF00000000000000000000000000000000019 -S31540049E000000000000000000000000000000000008 -S31540049E1000000000000000000000000000000000F8 -S31540049E2000000000000000000000000000000000E8 -S31540049E3000000000000000000000000000000000D8 -S31540049E4000000000000000000000000000000000C8 -S31540049E5000000000000000000000000000000000B8 -S31540049E6000000000000000000000000000000000A8 -S31540049E700000000000000000000000000000000098 -S31540049E800000000000000000000000000000000088 -S31540049E900000000000000000000000000000000078 -S31540049EA00000000000000000000000000000000068 -S31540049EB00000000000000000000000000000000058 -S31540049EC00000000000000000000000000000000048 -S31540049ED00000000000000000000000000000000038 -S31540049EE00000000000000000000000000000000028 -S31540049EF00000000000000000000000000000000018 -S31540049F000000000000000000000000000000000007 -S31540049F1000000000000000000000000000000000F7 -S31540049F2000000000000000000000000000000000E7 -S31540049F3000000000000000000000000000000000D7 -S31540049F4000000000000000000000000000000000C7 -S31540049F5000000000000000000000000000000000B7 -S31540049F6000000000000000000000000000000000A7 -S31540049F700000000000000000000000000000000097 -S31540049F800000000000000000000000000000000087 -S31540049F900000000000000000000000000000000077 -S31540049FA00000000000000000000000000000000067 -S31540049FB00000000000000000000000000000000057 -S31540049FC00000000000000000000000000000000047 -S31540049FD00000000000000000000000000000000037 -S31540049FE00000000000000000000000000000000027 -S31540049FF00000000000000000000000000000000017 -S3154004A0000000000000000000000000000000000006 -S3154004A01000000000000000000000000000000000F6 -S3154004A02000000000000000000000000000000000E6 -S3154004A03000000000000000000000000000000000D6 -S3154004A04000000000000000000000000000000000C6 -S3154004A05000000000000000000000000000000000B6 -S3154004A06000000000000000000000000000000000A6 -S3154004A0700000000000000000000000000000000096 -S3154004A0800000000000000000000000000000000086 -S3154004A0900000000000000000000000000000000076 -S3154004A0A00000000000000000000000000000000066 -S3154004A0B00000000000000000000000000000000056 -S3154004A0C00000000000000000000000000000000046 -S3154004A0D00000000000000000000000000000000036 -S3154004A0E00000000000000000000000000000000026 -S3154004A0F00000000000000000000000000000000016 -S3154004A1000000000000000000000000000000000005 -S3154004A11000000000000000000000000000000000F5 -S3154004A12000000000000000000000000000000000E5 -S3154004A13000000000000000000000000000000000D5 -S3154004A14000000000000000000000000000000000C5 -S3154004A15000000000000000000000000000000000B5 -S3154004A16000000000000000000000000000000000A5 -S3154004A1700000000000000000000000000000000095 -S3154004A1800000000000000000000000000000000085 -S3154004A1900000000000000000000000000000000075 -S3154004A1A00000000000000000000000000000000065 -S3154004A1B00000000000000000000000000000000055 -S3154004A1C00000000000000000000000000000000045 -S3154004A1D00000000000000000000000000000000035 -S3154004A1E00000000000000000000000000000000025 -S3154004A1F00000000000000000000000000000000015 -S3154004A2000000000000000000000000000000000004 -S3154004A21000000000000000000000000000000000F4 -S3154004A22000000000000000000000000000000000E4 -S3154004A23000000000000000000000000000000000D4 -S3154004A24000000000000000000000000000000000C4 -S3154004A25000000000000000000000000000000000B4 -S3154004A26000000000000000000000000000000000A4 -S3154004A2700000000000000000000000000000000094 -S3154004A2800000000000000000000000000000000084 -S3154004A2900000000000000000000000000000000074 -S3154004A2A00000000000000000000000000000000064 -S3154004A2B00000000000000000000000000000000054 -S3154004A2C00000000000000000000000000000000044 -S3154004A2D00000000000000000000000000000000034 -S3154004A2E00000000000000000000000000000000024 -S3154004A2F00000000000000000000000000000000014 -S3154004A3000000000000000000000000000000000003 -S3154004A31000000000000000000000000000000000F3 -S3154004A32000000000000000000000000000000000E3 -S3154004A33000000000000000000000000000000000D3 -S3154004A34000000000000000000000000000000000C3 -S3154004A35000000000000000000000000000000000B3 -S3154004A36000000000000000000000000000000000A3 -S3154004A3700000000000000000000000000000000093 -S3154004A3800000000000000000000000000000000083 -S3154004A3900000000000000000000000000000000073 -S3154004A3A00000000000000000000000000000000063 -S3154004A3B00000000000000000000000000000000053 -S3154004A3C00000000000000000000000000000000043 -S3154004A3D00000000000000000000000000000000033 -S3154004A3E00000000000000000000000000000000023 -S3154004A3F00000000000000000000000000000000013 -S3154004A4000000000000000000000000000000000002 -S3154004A41000000000000000000000000000000000F2 -S3154004A42000000000000000000000000000000000E2 -S3154004A43000000000000000000000000000000000D2 -S3154004A44000000000000000000000000000000000C2 -S3154004A45000000000000000000000000000000000B2 -S3154004A46000000000000000000000000000000000A2 -S3154004A4700000000000000000000000000000000092 -S3154004A4800000000000000000000000000000000082 -S3154004A4900000000000000000000000000000000072 -S3154004A4A00000000000000000000000000000000062 -S3154004A4B00000000000000000000000000000000052 -S3154004A4C00000000000000000000000000000000042 -S3154004A4D00000000000000000000000000000000032 -S3154004A4E00000000000000000000000000000000022 -S3154004A4F00000000000000000000000000000000012 -S3154004A5000000000000000000000000000000000001 -S3154004A51000000000000000000000000000000000F1 -S3154004A52000000000000000000000000000000000E1 -S3154004A53000000000000000000000000000000000D1 -S3154004A54000000000000000000000000000000000C1 -S3154004A55000000000000000000000000000000000B1 -S3154004A56000000000000000000000000000000000A1 -S3154004A5700000000000000000000000000000000091 -S3154004A5800000000000000000000000000000000081 -S3154004A5900000000000000000000000000000000071 -S3154004A5A00000000000000000000000000000000061 -S3154004A5B00000000000000000000000000000000051 -S3154004A5C00000000000000000000000000000000041 -S3154004A5D00000000000000000000000000000000031 -S3154004A5E00000000000000000000000000000000021 -S3154004A5F00000000000000000000000000000000011 -S3154004A6000000000000000000000000000000000000 -S3154004A61000000000000000000000000000000000F0 -S3154004A62000000000000000000000000000000000E0 -S3154004A63000000000000000000000000000000000D0 -S3154004A64000000000000000000000000000000000C0 -S3154004A65000000000000000000000000000000000B0 -S3154004A66000000000000000000000000000000000A0 -S3154004A6700000000000000000000000000000000090 -S3154004A6800000000000000000000000000000000080 -S3154004A6900000000000000000000000000000000070 -S3154004A6A00000000000000000000000000000000060 -S3154004A6B00000000000000000000000000000000050 -S3154004A6C00000000000000000000000000000000040 -S3154004A6D00000000000000000000000000000000030 -S3154004A6E00000000000000000000000000000000020 -S3154004A6F00000000000000000000000000000000010 -S3154004A70000000000000000000000000000000000FF -S3154004A71000000000000000000000000000000000EF -S3154004A72000000000000000000000000000000000DF -S3154004A73000000000000000000000000000000000CF -S3154004A74000000000000000000000000000000000BF -S3154004A75000000000000000000000000000000000AF -S3154004A760000000000000000000000000000000009F -S3154004A770000000000000000000000000000000008F -S3154004A780000000000000000000000000000000007F -S3154004A790000000000000000000000000000000006F -S3154004A7A0000000000000000000000000000000005F -S3154004A7B0000000000000000000000000000000004F -S3154004A7C0000000000000000000000000000000003F -S3154004A7D0000000000000000000000000000000002F -S3154004A7E0000000000000000000000000000000001F -S3154004A7F0000000000000000000000000000000000F -S3154004A80000000000000000000000000000000000FE -S3154004A81000000000000000000000000000000000EE -S3154004A82000000000000000000000000000000000DE -S3154004A83000000000000000000000000000000000CE -S3154004A84000000000000000000000000000000000BE -S3154004A85000000000000000000000000000000000AE -S3154004A860000000000000000000000000000000009E -S3154004A870000000000000000000000000000000008E -S3154004A880000000000000000000000000000000007E -S3154004A890000000000000000000000000000000006E -S3154004A8A0000000000000000000000000000000005E -S3154004A8B0000000000000000000000000000000004E -S3154004A8C0000000000000000000000000000000003E -S3154004A8D0000000000000000000000000000000002E -S3154004A8E0000000000000000000000000000000001E -S3154004A8F0000000000000000000000000000000000E -S3154004A90000000000000000000000000000000000FD -S3154004A91000000000000000000000000000000000ED -S3154004A92000000000000000000000000000000000DD -S3154004A93000000000000000000000000000000000CD -S3154004A94000000000000000000000000000000000BD -S3154004A95000000000000000000000000000000000AD -S3154004A960000000000000000000000000000000009D -S3154004A970000000000000000000000000000000008D -S3154004A980000000000000000000000000000000007D -S3154004A990000000000000000000000000000000006D -S3154004A9A0000000000000000000000000000000005D -S3154004A9B0000000000000000000000000000000004D -S3154004A9C0000000000000000000000000000000003D -S3154004A9D0000000000000000000000000000000002D -S3154004A9E0000000000000000000000000000000001D -S3154004A9F0000000000000000000000000000000000D -S3154004AA0000000000000000000000000000000000FC -S3154004AA1000000000000000000000000000000000EC -S3154004AA2000000000000000000000000000000000DC -S3154004AA3000000000000000000000000000000000CC -S3154004AA4000000000000000000000000000000000BC -S3154004AA5000000000000000000000000000000000AC -S3154004AA60000000000000000000000000000000009C -S3154004AA70000000000000000000000000000000008C -S3154004AA80000000000000000000000000000000007C -S3154004AA90000000000000000000000000000000006C -S3154004AAA0000000000000000000000000000000005C -S3154004AAB0000000000000000000000000000000004C -S3154004AAC0000000000000000000000000000000003C -S3154004AAD0000000000000000000000000000000002C -S3154004AAE0000000000000000000000000000000001C -S3154004AAF0000000000000000000000000000000000C -S3154004AB0000000000000000000000000000000000FB -S3154004AB1000000000000000000000000000000000EB -S3154004AB2000000000000000000000000000000000DB -S3154004AB3000000000000000000000000000000000CB -S3154004AB4000000000000000000000000000000000BB -S3154004AB5000000000000000000000000000000000AB -S3154004AB60000000000000000000000000000000009B -S3154004AB70000000000000000000000000000000008B -S3154004AB80000000000000000000000000000000007B -S3154004AB90000000000000000000000000000000006B -S3154004ABA0000000000000000000000000000000005B -S3154004ABB0000000000000000000000000000000004B -S3154004ABC0000000000000000000000000000000003B -S3154004ABD0000000000000000000000000000000002B -S3154004ABE0000000000000000000000000000000001B -S3154004ABF0000000000000000000000000000000000B -S3154004AC0000000000000000000000000000000000FA -S3154004AC1000000000000000000000000000000000EA -S3154004AC2000000000000000000000000000000000DA -S3154004AC3000000000000000000000000000000000CA -S3154004AC4000000000000000000000000000000000BA -S3154004AC5000000000000000000000000000000000AA -S3154004AC60000000000000000000000000000000009A -S3154004AC70000000000000000000000000000000008A -S3154004AC80000000000000000000000000000000007A -S3154004AC90000000000000000000000000000000006A -S3154004ACA0000000000000000000000000000000005A -S3154004ACB0000000000000000000000000000000004A -S3154004ACC0000000000000000000000000000000003A -S3154004ACD0000000000000000000000000000000002A -S3154004ACE0000000000000000000000000000000001A -S3154004ACF0000000000000000000000000000000000A -S3154004AD0000000000000000000000000000000000F9 -S3154004AD1000000000000000000000000000000000E9 -S3154004AD2000000000000000000000000000000000D9 -S3154004AD3000000000000000000000000000000000C9 -S3154004AD4000000000000000000000000000000000B9 -S3154004AD5000000000000000000000000000000000A9 -S3154004AD600000000000000000000000000000000099 -S3154004AD700000000000000000000000000000000089 -S3154004AD800000000000000000000000000000000079 -S3154004AD900000000000000000000000000000000069 -S3154004ADA00000000000000000000000000000000059 -S3154004ADB00000000000000000000000000000000049 -S3154004ADC00000000000000000000000000000000039 -S3154004ADD00000000000000000000000000000000029 -S3154004ADE00000000000000000000000000000000019 -S3154004ADF00000000000000000000000000000000009 -S3154004AE0000000000000000000000000000000000F8 -S3154004AE1000000000000000000000000000000000E8 -S3154004AE2000000000000000000000000000000000D8 -S3154004AE3000000000000000000000000000000000C8 -S3154004AE4000000000000000000000000000000000B8 -S3154004AE5000000000000000000000000000000000A8 -S3154004AE600000000000000000000000000000000098 -S3154004AE700000000000000000000000000000000088 -S3154004AE800000000000000000000000000000000078 -S3154004AE900000000000000000000000000000000068 -S3154004AEA00000000000000000000000000000000058 -S3154004AEB00000000000000000000000000000000048 -S3154004AEC00000000000000000000000000000000038 -S3154004AED00000000000000000000000000000000028 -S3154004AEE00000000000000000000000000000000018 -S3154004AEF00000000000000000000000000000000008 -S3154004AF0000000000000000000000000000000000F7 -S3154004AF1000000000000000000000000000000000E7 -S3154004AF2000000000000000000000000000000000D7 -S3154004AF3000000000000000000000000000000000C7 -S3154004AF4000000000000000000000000000000000B7 -S3154004AF5000000000000000000000000000000000A7 -S3154004AF600000000000000000000000000000000097 -S3154004AF700000000000000000000000000000000087 -S3154004AF800000000000000000000000000000000077 -S3154004AF900000000000000000000000000000000067 -S3154004AFA00000000000000000000000000000000057 -S3154004AFB00000000000000000000000000000000047 -S3154004AFC00000000000000000000000000000000037 -S3154004AFD00000000000000000000000000000000027 -S3154004AFE00000000000000000000000000000000017 -S3154004AFF00000000000000000000000000000000007 -S3154004B00000000000000000000000000000000000F6 -S3154004B01000000000000000000000000000000000E6 -S3154004B02000000000000000000000000000000000D6 -S3154004B03000000000000000000000000000000000C6 -S3154004B04000000000000000000000000000000000B6 -S3154004B05000000000000000000000000000000000A6 -S3154004B0600000000000000000000000000000000096 -S3154004B0700000000000000000000000000000000086 -S3154004B0800000000000000000000000000000000076 -S3154004B0900000000000000000000000000000000066 -S3154004B0A00000000000000000000000000000000056 -S3154004B0B00000000000000000000000000000000046 -S3154004B0C00000000000000000000000000000000036 -S3154004B0D00000000000000000000000000000000026 -S3154004B0E00000000000000000000000000000000016 -S3154004B0F00000000000000000000000000000000006 -S3154004B10000000000000000000000000000000000F5 -S3154004B11000000000000000000000000000000000E5 -S3154004B12000000000000000000000000000000000D5 -S3154004B13000000000000000000000000000000000C5 -S3154004B14000000000000000000000000000000000B5 -S3154004B15000000000000000000000000000000000A5 -S3154004B1600000000000000000000000000000000095 -S3154004B1700000000000000000000000000000000085 -S3154004B1800000000000000000000000000000000075 -S3154004B1900000000000000000000000000000000065 -S3154004B1A00000000000000000000000000000000055 -S3154004B1B00000000000000000000000000000000045 -S3154004B1C00000000000000000000000000000000035 -S3154004B1D00000000000000000000000000000000025 -S3154004B1E00000000000000000000000000000000015 -S3154004B1F00000000000000000000000000000000005 -S3154004B20000000000000000000000000000000000F4 -S3154004B21000000000000000000000000000000000E4 -S3154004B22000000000000000000000000000000000D4 -S3154004B23000000000000000000000000000000000C4 -S3154004B24000000000000000000000000000000000B4 -S3154004B25000000000000000000000000000000000A4 -S3154004B2600000000000000000000000000000000094 -S3154004B2700000000000000000000000000000000084 -S3154004B2800000000000000000000000000000000074 -S3154004B2900000000000000000000000000000000064 -S3154004B2A00000000000000000000000000000000054 -S3154004B2B00000000000000000000000000000000044 -S3154004B2C00000000000000000000000000000000034 -S3154004B2D00000000000000000000000000000000024 -S3154004B2E00000000000000000000000000000000014 -S3154004B2F00000000000000000000000000000000004 -S3154004B30000000000000000000000000000000000F3 -S3154004B31000000000000000000000000000000000E3 -S3154004B32000000000000000000000000000000000D3 -S3154004B33000000000000000000000000000000000C3 -S3154004B34000000000000000000000000000000000B3 -S3154004B35000000000000000000000000000000000A3 -S3154004B3600000000000000000000000000000000093 -S3154004B3700000000000000000000000000000000083 -S3154004B3800000000000000000000000000000000073 -S3154004B3900000000000000000000000000000000063 -S3154004B3A00000000000000000000000000000000053 -S3154004B3B00000000000000000000000000000000043 -S3154004B3C00000000000000000000000000000000033 -S3154004B3D00000000000000000000000000000000023 -S3154004B3E00000000000000000000000000000000013 -S3154004B3F00000000000000000000000000000000003 -S3154004B40000000000000000000000000000000000F2 -S3154004B41000000000000000000000000000000000E2 -S3154004B42000000000000000000000000000000000D2 -S3154004B43000000000000000000000000000000000C2 -S3154004B44000000000000000000000000000000000B2 -S3154004B45000000000000000000000000000000000A2 -S3154004B4600000000000000000000000000000000092 -S3154004B4700000000000000000000000000000000082 -S3154004B4800000000000000000000000000000000072 -S3154004B4900000000000000000000000000000000062 -S3154004B4A00000000000000000000000000000000052 -S3154004B4B00000000000000000000000000000000042 -S3154004B4C00000000000000000000000000000000032 -S3154004B4D00000000000000000000000000000000022 -S3154004B4E00000000000000000000000000000000012 -S3154004B4F00000000000000000000000000000000002 -S3154004B50000000000000000000000000000000000F1 -S3154004B51000000000000000000000000000000000E1 -S3154004B52000000000000000000000000000000000D1 -S3154004B53000000000000000000000000000000000C1 -S3154004B54000000000000000000000000000000000B1 -S3154004B55000000000000000000000000000000000A1 -S3154004B5600000000000000000000000000000000091 -S3154004B5700000000000000000000000000000000081 -S3154004B5800000000000000000000000000000000071 -S3154004B5900000000000000000000000000000000061 -S3154004B5A00000000000000000000000000000000051 -S3154004B5B00000000000000000000000000000000041 -S3154004B5C00000000000000000000000000000000031 -S3154004B5D00000000000000000000000000000000021 -S3154004B5E00000000000000000000000000000000011 -S3154004B5F00000000000000000000000000000000001 -S3154004B60000000000000000000000000000000000F0 -S3154004B61000000000000000000000000000000000E0 -S3154004B62000000000000000000000000000000000D0 -S3154004B63000000000000000000000000000000000C0 -S3154004B64000000000000000000000000000000000B0 -S3154004B65000000000000000000000000000000000A0 -S3154004B6600000000000000000000000000000000090 -S3154004B6700000000000000000000000000000000080 -S3154004B6800000000000000000000000000000000070 -S3154004B6900000000000000000000000000000000060 -S3154004B6A00000000000000000000000000000000050 -S3154004B6B00000000000000000000000000000000040 -S3154004B6C00000000000000000000000000000000030 -S3154004B6D00000000000000000000000000000000020 -S3154004B6E00000000000000000000000000000000010 -S3154004B6F00000000000000000000000000000000000 -S3154004B70000000000000000000000000000000000EF -S3154004B71000000000000000000000000000000000DF -S3154004B72000000000000000000000000000000000CF -S3154004B73000000000000000000000000000000000BF -S3154004B74000000000000000000000000000000000AF -S3154004B750000000000000000000000000000000009F -S3154004B760000000000000000000000000000000008F -S3154004B770000000000000000000000000000000007F -S3154004B780000000000000000000000000000000006F -S3154004B790000000000000000000000000000000005F -S3154004B7A0000000000000000000000000000000004F -S3154004B7B0000000000000000000000000000000003F -S3154004B7C0000000000000000000000000000000002F -S3154004B7D0000000000000000000000000000000001F -S3154004B7E0000000000000000000000000000000000F -S3154004B7F000000000000000000000000000000000FF -S3154004B80000000000000000000000000000000000EE -S3154004B81000000000000000000000000000000000DE -S3154004B82000000000000000000000000000000000CE -S3154004B83000000000000000000000000000000000BE -S3154004B84000000000000000000000000000000000AE -S3154004B850000000000000000000000000000000009E -S3154004B860000000000000000000000000000000008E -S3154004B870000000000000000000000000000000007E -S3154004B880000000000000000000000000000000006E -S3154004B890000000000000000000000000000000005E -S3154004B8A0000000000000000000000000000000004E -S3154004B8B0000000000000000000000000000000003E -S3154004B8C0000000000000000000000000000000002E -S3154004B8D0000000000000000000000000000000001E -S3154004B8E0000000000000000000000000000000000E -S3154004B8F000000000000000000000000000000000FE -S3154004B90000000000000000000000000000000000ED -S3154004B91000000000000000000000000000000000DD -S3154004B92000000000000000000000000000000000CD -S3154004B93000000000000000000000000000000000BD -S3154004B94000000000000000000000000000000000AD -S3154004B950000000000000000000000000000000009D -S3154004B960000000000000000000000000000000008D -S3154004B970000000000000000000000000000000007D -S3154004B980000000000000000000000000000000006D -S3154004B990000000000000000000000000000000005D -S3154004B9A0000000000000000000000000000000004D -S3154004B9B0000000000000000000000000000000003D -S3154004B9C0000000000000000000000000000000002D -S3154004B9D0000000000000000000000000000000001D -S3154004B9E0000000000000000000000000000000000D -S3154004B9F000000000000000000000000000000000FD -S3154004BA0000000000000000000000000000000000EC -S3154004BA1000000000000000000000000000000000DC -S3154004BA2000000000000000000000000000000000CC -S3154004BA3000000000000000000000000000000000BC -S3154004BA4000000000000000000000000000000000AC -S3154004BA50000000000000000000000000000000009C -S3154004BA60000000000000000000000000000000008C -S3154004BA70000000000000000000000000000000007C -S3154004BA80000000000000000000000000000000006C -S3154004BA90000000000000000000000000000000005C -S3154004BAA0000000000000000000000000000000004C -S3154004BAB0000000000000000000000000000000003C -S3154004BAC0000000000000000000000000000000002C -S3154004BAD0000000000000000000000000000000001C -S3154004BAE0000000000000000000000000000000000C -S3154004BAF000000000000000000000000000000000FC -S3154004BB0000000000000000000000000000000000EB -S3154004BB1000000000000000000000000000000000DB -S3154004BB2000000000000000000000000000000000CB -S3154004BB3000000000000000000000000000000000BB -S3154004BB4000000000000000000000000000000000AB -S3154004BB50000000000000000000000000000000009B -S3154004BB60000000000000000000000000000000008B -S3154004BB70000000000000000000000000000000007B -S3154004BB80000000000000000000000000000000006B -S3154004BB90000000000000000000000000000000005B -S3154004BBA0000000000000000000000000000000004B -S3154004BBB0000000000000000000000000000000003B -S3154004BBC0000000000000000000000000000000002B -S3154004BBD0000000000000000000000000000000001B -S3154004BBE0000000000000000000000000000000000B -S3154004BBF000000000000000000000000000000000FB -S3154004BC0000000000000000000000000000000000EA -S3154004BC1000000000000000000000000000000000DA -S3154004BC2000000000000000000000000000000000CA -S3154004BC3000000000000000000000000000000000BA -S3154004BC4000000000000000000000000000000000AA -S3154004BC50000000000000000000000000000000009A -S3154004BC60000000000000000000000000000000008A -S3154004BC70000000000000000000000000000000007A -S3154004BC80000000000000000000000000000000006A -S3154004BC90000000000000000000000000000000005A -S3154004BCA0000000000000000000000000000000004A -S3154004BCB0000000000000000000000000000000003A -S3154004BCC0000000000000000000000000000000002A -S3154004BCD0000000000000000000000000000000001A -S3154004BCE0000000000000000000000000000000000A -S3154004BCF000000000000000000000000000000000FA -S3154004BD0000000000000000000000000000000000E9 -S3154004BD1000000000000000000000000000000000D9 -S3154004BD2000000000000000000000000000000000C9 -S3154004BD3000000000000000000000000000000000B9 -S3154004BD4000000000000000000000000000000000A9 -S3154004BD500000000000000000000000000000000099 -S3154004BD600000000000000000000000000000000089 -S3154004BD700000000000000000000000000000000079 -S3154004BD800000000000000000000000000000000069 -S3154004BD900000000000000000000000000000000059 -S3154004BDA00000000000000000000000000000000049 -S3154004BDB00000000000000000000000000000000039 -S3154004BDC00000000000000000000000000000000029 -S3154004BDD00000000000000000000000000000000019 -S3154004BDE00000000000000000000000000000000009 -S3154004BDF000000000000000000000000000000000F9 -S3154004BE0000000000000000000000000000000000E8 -S3154004BE1000000000000000000000000000000000D8 -S3154004BE2000000000000000000000000000000000C8 -S3154004BE3000000000000000000000000000000000B8 -S3154004BE4000000000000000000000000000000000A8 -S3154004BE500000000000000000000000000000000098 -S3154004BE600000000000000000000000000000000088 -S3154004BE700000000000000000000000000000000078 -S3154004BE800000000000000000000000000000000068 -S3154004BE900000000000000000000000000000000058 -S3154004BEA00000000000000000000000000000000048 -S3154004BEB00000000000000000000000000000000038 -S3154004BEC00000000000000000000000000000000028 -S3154004BED00000000000000000000000000000000018 -S3154004BEE00000000000000000000000000000000008 -S3154004BEF000000000000000000000000000000000F8 -S3154004BF0000000000000000000000000000000000E7 -S3154004BF1000000000000000000000000000000000D7 -S3154004BF2000000000000000000000000000000000C7 -S3154004BF3000000000000000000000000000000000B7 -S3154004BF4000000000000000000000000000000000A7 -S3154004BF500000000000000000000000000000000097 -S3154004BF600000000000000000000000000000000087 -S3154004BF700000000000000000000000000000000077 -S3154004BF800000000000000000000000000000000067 -S3154004BF900000000000000000000000000000000057 -S3154004BFA00000000000000000000000000000000047 -S3154004BFB00000000000000000000000000000000037 -S3154004BFC00000000000000000000000000000000027 -S3154004BFD00000000000000000000000000000000017 -S3154004BFE00000000000000000000000000000000007 -S3154004BFF000000000000000000000000000000000F7 -S3154004C00000000000000000000000000000000000E6 -S3154004C01000000000000000000000000000000000D6 -S3154004C02000000000000000000000000000000000C6 -S3154004C03000000000000000000000000000000000B6 -S3154004C04000000000000000000000000000000000A6 -S3154004C0500000000000000000000000000000000096 -S3154004C0600000000000000000000000000000000086 -S3154004C0700000000000000000000000000000000076 -S3154004C0800000000000000000000000000000000066 -S3154004C0900000000000000000000000000000000056 -S3154004C0A00000000000000000000000000000000046 -S3154004C0B00000000000000000000000000000000036 -S3154004C0C00000000000000000000000000000000026 -S3154004C0D00000000000000000000000000000000016 -S3154004C0E00000000000000000000000000000000006 -S3154004C0F000000000000000000000000000000000F6 -S3154004C10000000000000000000000000000000000E5 -S3154004C11000000000000000000000000000000000D5 -S3154004C12000000000000000000000000000000000C5 -S3154004C13000000000000000000000000000000000B5 -S3154004C14000000000000000000000000000000000A5 -S3154004C1500000000000000000000000000000000095 -S3154004C1600000000000000000000000000000000085 -S3154004C1700000000000000000000000000000000075 -S3154004C1800000000000000000000000000000000065 -S3154004C1900000000000000000000000000000000055 -S3154004C1A00000000000000000000000000000000045 -S3154004C1B00000000000000000000000000000000035 -S3154004C1C00000000000000000000000000000000025 -S3154004C1D00000000000000000000000000000000015 -S3154004C1E00000000000000000000000000000000005 -S3154004C1F000000000000000000000000000000000F5 -S3154004C20000000000000000000000000000000000E4 -S3154004C21000000000000000000000000000000000D4 -S3154004C22000000000000000000000000000000000C4 -S3154004C23000000000000000000000000000000000B4 -S3154004C24000000000000000000000000000000000A4 -S3154004C2500000000000000000000000000000000094 -S3154004C2600000000000000000000000000000000084 -S3154004C2700000000000000000000000000000000074 -S3154004C2800000000000000000000000000000000064 -S3154004C2900000000000000000000000000000000054 -S3154004C2A00000000000000000000000000000000044 -S3154004C2B00000000000000000000000000000000034 -S3154004C2C00000000000000000000000000000000024 -S3154004C2D00000000000000000000000000000000014 -S3154004C2E00000000000000000000000000000000004 -S3154004C2F000000000000000000000000000000000F4 -S3154004C30000000000000000000000000000000000E3 -S3154004C31000000000000000000000000000000000D3 -S3154004C32000000000000000000000000000000000C3 -S3154004C33000000000000000000000000000000000B3 -S3154004C34000000000000000000000000000000000A3 -S3154004C3500000000000000000000000000000000093 -S3154004C3600000000000000000000000000000000083 -S3154004C3700000000000000000000000000000000073 -S3154004C3800000000000000000000000000000000063 -S3154004C3900000000000000000000000000000000053 -S3154004C3A00000000000000000000000000000000043 -S3154004C3B00000000000000000000000000000000033 -S3154004C3C00000000000000000000000000000000023 -S3154004C3D00000000000000000000000000000000013 -S3154004C3E00000000000000000000000000000000003 -S3154004C3F000000000000000000000000000000000F3 -S3154004C40000000000000000000000000000000000E2 -S3154004C41000000000000000000000000000000000D2 -S3154004C42000000000000000000000000000000000C2 -S3154004C43000000000000000000000000000000000B2 -S3154004C44000000000000000000000000000000000A2 -S3154004C4500000000000000000000000000000000092 -S3154004C4600000000000000000000000000000000082 -S3154004C4700000000000000000000000000000000072 -S3154004C4800000000000000000000000000000000062 -S3154004C4900000000000000000000000000000000052 -S3154004C4A00000000000000000000000000000000042 -S3154004C4B00000000000000000000000000000000032 -S3154004C4C00000000000000000000000000000000022 -S3154004C4D00000000000000000000000000000000012 -S3154004C4E00000000000000000000000000000000002 -S3154004C4F000000000000000000000000000000000F2 -S3154004C50000000000000000000000000000000000E1 -S3154004C51000000000000000000000000000000000D1 -S3154004C52000000000000000000000000000000000C1 -S3154004C53000000000000000000000000000000000B1 -S3154004C54000000000000000000000000000000000A1 -S3154004C5500000000000000000000000000000000091 -S3154004C5600000000000000000000000000000000081 -S3154004C5700000000000000000000000000000000071 -S3154004C5800000000000000000000000000000000061 -S3154004C5900000000000000000000000000000000051 -S3154004C5A00000000000000000000000000000000041 -S3154004C5B00000000000000000000000000000000031 -S3154004C5C00000000000000000000000000000000021 -S3154004C5D00000000000000000000000000000000011 -S3154004C5E00000000000000000000000000000000001 -S3154004C5F000000000000000000000000000000000F1 -S3154004C60000000000000000000000000000000000E0 -S3154004C61000000000000000000000000000000000D0 -S3154004C62000000000000000000000000000000000C0 -S3154004C63000000000000000000000000000000000B0 -S3154004C64000000000000000000000000000000000A0 -S3154004C6500000000000000000000000000000000090 -S3154004C6600000000000000000000000000000000080 -S3154004C6700000000000000000000000000000000070 -S3154004C6800000000000000000000000000000000060 -S3154004C6900000000000000000000000000000000050 -S3154004C6A00000000000000000000000000000000040 -S3154004C6B00000000000000000000000000000000030 -S3154004C6C00000000000000000000000000000000020 -S3154004C6D00000000000000000000000000000000010 -S3154004C6E00000000000000000000000000000000000 -S3154004C6F000000000000000000000000000000000F0 -S3154004C70000000000000000000000000000000000DF -S3154004C71000000000000000000000000000000000CF -S3154004C72000000000000000000000000000000000BF -S3154004C73000000000000000000000000000000000AF -S3154004C740000000000000000000000000000000009F -S3154004C750000000000000000000000000000000008F -S3154004C760000000000000000000000000000000007F -S3154004C770000000000000000000000000000000006F -S3154004C780000000000000000000000000000000005F -S3154004C790000000000000000000000000000000004F -S3154004C7A0000000000000000000000000000000003F -S3154004C7B0000000000000000000000000000000002F -S3154004C7C0000000000000000000000000000000001F -S3154004C7D0000000000000000000000000000000000F -S3154004C7E000000000000000000000000000000000FF -S3154004C7F000000000000000000000000000000000EF -S3154004C80000000000000000000000000000000000DE -S3154004C81000000000000000000000000000000000CE -S3154004C82000000000000000000000000000000000BE -S3154004C83000000000000000000000000000000000AE -S3154004C840000000000000000000000000000000009E -S3154004C850000000000000000000000000000000008E -S3154004C860000000000000000000000000000000007E -S3154004C870000000000000000000000000000000006E -S3154004C880000000000000000000000000000000005E -S3154004C890000000000000000000000000000000004E -S3154004C8A0000000000000000000000000000000003E -S3154004C8B0000000000000000000000000000000002E -S3154004C8C0000000000000000000000000000000001E -S3154004C8D0000000000000000000000000000000000E -S3154004C8E000000000000000000000000000000000FE -S3154004C8F000000000000000000000000000000000EE -S3154004C90000000000000000000000000000000000DD -S3154004C91000000000000000000000000000000000CD -S3154004C92000000000000000000000000000000000BD -S3154004C93000000000000000000000000000000000AD -S3154004C940000000000000000000000000000000009D -S3154004C950000000000000000000000000000000008D -S3154004C960000000000000000000000000000000007D -S3154004C970000000000000000000000000000000006D -S3154004C980000000000000000000000000000000005D -S3154004C990000000000000000000000000000000004D -S3154004C9A0000000000000000000000000000000003D -S3154004C9B0000000000000000000000000000000002D -S3154004C9C0000000000000000000000000000000001D -S3154004C9D0000000000000000000000000000000000D -S3154004C9E000000000000000000000000000000000FD -S3154004C9F000000000000000000000000000000000ED -S3154004CA0000000000000000000000000000000000DC -S3154004CA1000000000000000000000000000000000CC -S3154004CA2000000000000000000000000000000000BC -S3154004CA3000000000000000000000000000000000AC -S3154004CA40000000000000000000000000000000009C -S3154004CA50000000000000000000000000000000008C -S3154004CA60000000000000000000000000000000007C -S3154004CA70000000000000000000000000000000006C -S3154004CA80000000000000000000000000000000005C -S3154004CA90000000000000000000000000000000004C -S3154004CAA0000000000000000000000000000000003C -S3154004CAB0000000000000000000000000000000002C -S3154004CAC0000000000000000000000000000000001C -S3154004CAD0000000000000000000000000000000000C -S3154004CAE000000000000000000000000000000000FC -S3154004CAF000000000000000000000000000000000EC -S3154004CB0000000000000000000000000000000000DB -S3154004CB1000000000000000000000000000000000CB -S3154004CB2000000000000000000000000000000000BB -S3154004CB3000000000000000000000000000000000AB -S3154004CB40000000000000000000000000000000009B -S3154004CB50000000000000000000000000000000008B -S3154004CB60000000000000000000000000000000007B -S3154004CB70000000000000000000000000000000006B -S3154004CB80000000000000000000000000000000005B -S3154004CB90000000000000000000000000000000004B -S3154004CBA0000000000000000000000000000000003B -S3154004CBB0000000000000000000000000000000002B -S3154004CBC0000000000000000000000000000000001B -S3154004CBD0000000000000000000000000000000000B -S3154004CBE000000000000000000000000000000000FB -S3154004CBF000000000000000000000000000000000EB -S3154004CC0000000000000000000000000000000000DA -S3154004CC1000000000000000000000000000000000CA -S3154004CC2000000000000000000000000000000000BA -S3154004CC3000000000000000000000000000000000AA -S3154004CC40000000000000000000000000000000009A -S3154004CC50000000000000000000000000000000008A -S3154004CC60000000000000000000000000000000007A -S3154004CC70000000000000000000000000000000006A -S3154004CC80000000000000000000000000000000005A -S3154004CC90000000000000000000000000000000004A -S3154004CCA0000000000000000000000000000000003A -S3154004CCB0000000000000000000000000000000002A -S3154004CCC0000000000000000000000000000000001A -S3154004CCD0000000000000000000000000000000000A -S3154004CCE000000000000000000000000000000000FA -S3154004CCF000000000000000000000000000000000EA -S3154004CD0000000000000000000000000000000000D9 -S3154004CD1000000000000000000000000000000000C9 -S3154004CD2000000000000000000000000000000000B9 -S3154004CD3000000000000000000000000000000000A9 -S3154004CD400000000000000000000000000000000099 -S3154004CD500000000000000000000000000000000089 -S3154004CD600000000000000000000000000000000079 -S3154004CD700000000000000000000000000000000069 -S3154004CD800000000000000000000000000000000059 -S3154004CD900000000000000000000000000000000049 -S3154004CDA00000000000000000000000000000000039 -S3154004CDB00000000000000000000000000000000029 -S3154004CDC00000000000000000000000000000000019 -S3154004CDD00000000000000000000000000000000009 -S3154004CDE000000000000000000000000000000000F9 -S3154004CDF000000000000000000000000000000000E9 -S3154004CE0000000000000000000000000000000000D8 -S3154004CE1000000000000000000000000000000000C8 -S3154004CE2000000000000000000000000000000000B8 -S3154004CE3000000000000000000000000000000000A8 -S3154004CE400000000000000000000000000000000098 -S3154004CE500000000000000000000000000000000088 -S3154004CE600000000000000000000000000000000078 -S3154004CE700000000000000000000000000000000068 -S3154004CE800000000000000000000000000000000058 -S3154004CE900000000000000000000000000000000048 -S3154004CEA00000000000000000000000000000000038 -S3154004CEB00000000000000000000000000000000028 -S3154004CEC00000000000000000000000000000000018 -S3154004CED00000000000000000000000000000000008 -S3154004CEE000000000000000000000000000000000F8 -S3154004CEF000000000000000000000000000000000E8 -S3154004CF0000000000000000000000000000000000D7 -S3154004CF1000000000000000000000000000000000C7 -S3154004CF2000000000000000000000000000000000B7 -S3154004CF3000000000000000000000000000000000A7 -S3154004CF400000000000000000000000000000000097 -S3154004CF500000000000000000000000000000000087 -S3154004CF600000000000000000000000000000000077 -S3154004CF700000000000000000000000000000000067 -S3154004CF800000000000000000000000000000000057 -S3154004CF900000000000000000000000000000000047 -S3154004CFA00000000000000000000000000000000037 -S3154004CFB00000000000000000000000000000000027 -S3154004CFC00000000000000000000000000000000017 -S3154004CFD00000000000000000000000000000000007 -S3154004CFE000000000000000000000000000000000F7 -S3154004CFF000000000000000000000000000000000E7 -S3154004D00000000000000000000000000000000000D6 -S3154004D01000000000000000000000000000000000C6 -S3154004D02000000000000000000000000000000000B6 -S3154004D03000000000000000000000000000000000A6 -S3154004D0400000000000000000000000000000000096 -S3154004D0500000000000000000000000000000000086 -S3154004D0600000000000000000000000000000000076 -S3154004D0700000000000000000000000000000000066 -S3154004D0800000000000000000000000000000000056 -S3154004D0900000000000000000000000000000000046 -S3154004D0A00000000000000000000000000000000036 -S3154004D0B00000000000000000000000000000000026 -S3154004D0C00000000000000000000000000000000016 -S3154004D0D00000000000000000000000000000000006 -S3154004D0E000000000000000000000000000000000F6 -S3154004D0F000000000000000000000000000000000E6 -S3154004D10000000000000000000000000000000000D5 -S3154004D11000000000000000000000000000000000C5 -S3154004D12000000000000000000000000000000000B5 -S3154004D13000000000000000000000000000000000A5 -S3154004D1400000000000000000000000000000000095 -S3154004D1500000000000000000000000000000000085 -S3154004D1600000000000000000000000000000000075 -S3154004D1700000000000000000000000000000000065 -S3154004D1800000000000000000000000000000000055 -S3154004D1900000000000000000000000000000000045 -S3154004D1A00000000000000000000000000000000035 -S3154004D1B00000000000000000000000000000000025 -S3154004D1C00000000000000000000000000000000015 -S3154004D1D00000000000000000000000000000000005 -S3154004D1E000000000000000000000000000000000F5 -S3154004D1F000000000000000000000000000000000E5 -S3154004D20000000000000000000000000000000000D4 -S3154004D21000000000000000000000000000000000C4 -S3154004D22000000000000000000000000000000000B4 -S3154004D23000000000000000000000000000000000A4 -S3154004D2400000000000000000000000000000000094 -S3154004D2500000000000000000000000000000000084 -S3154004D2600000000000000000000000000000000074 -S3154004D2700000000000000000000000000000000064 -S3154004D2800000000000000000000000000000000054 -S3154004D2900000000000000000000000000000000044 -S3154004D2A00000000000000000000000000000000034 -S3154004D2B00000000000000000000000000000000024 -S3154004D2C00000000000000000000000000000000014 -S3154004D2D00000000000000000000000000000000004 -S3154004D2E000000000000000000000000000000000F4 -S3154004D2F000000000000000000000000000000000E4 -S3154004D30000000000000000000000000000000000D3 -S3154004D31000000000000000000000000000000000C3 -S3154004D32000000000000000000000000000000000B3 -S3154004D33000000000000000000000000000000000A3 -S3154004D3400000000000000000000000000000000093 -S3154004D3500000000000000000000000000000000083 -S3154004D3600000000000000000000000000000000073 -S3154004D3700000000000000000000000000000000063 -S3154004D3800000000000000000000000000000000053 -S3154004D3900000000000000000000000000000000043 -S3154004D3A00000000000000000000000000000000033 -S3154004D3B00000000000000000000000000000000023 -S3154004D3C00000000000000000000000000000000013 -S3154004D3D00000000000000000000000000000000003 -S3154004D3E000000000000000000000000000000000F3 -S3154004D3F000000000000000000000000000000000E3 -S3154004D40000000000000000000000000000000000D2 -S3154004D41000000000000000000000000000000000C2 -S3154004D42000000000000000000000000000000000B2 -S3154004D43000000000000000000000000000000000A2 -S3154004D4400000000000000000000000000000000092 -S3154004D4500000000000000000000000000000000082 -S3154004D4600000000000000000000000000000000072 -S3154004D4700000000000000000000000000000000062 -S3154004D4800000000000000000000000000000000052 -S3154004D4900000000000000000000000000000000042 -S3154004D4A00000000000000000000000000000000032 -S3154004D4B00000000000000000000000000000000022 -S3154004D4C00000000000000000000000000000000012 -S3154004D4D00000000000000000000000000000000002 -S3154004D4E000000000000000000000000000000000F2 -S3154004D4F000000000000000000000000000000000E2 -S3154004D50000000000000000000000000000000000D1 -S3154004D51000000000000000000000000000000000C1 -S3154004D52000000000000000000000000000000000B1 -S3154004D53000000000000000000000000000000000A1 -S3154004D5400000000000000000000000000000000091 -S3154004D5500000000000000000000000000000000081 -S3154004D5600000000000000000000000000000000071 -S3154004D5700000000000000000000000000000000061 -S3154004D5800000000000000000000000000000000051 -S3154004D5900000000000000000000000000000000041 -S3154004D5A00000000000000000000000000000000031 -S3154004D5B00000000000000000000000000000000021 -S3154004D5C00000000000000000000000000000000011 -S3154004D5D00000000000000000000000000000000001 -S3154004D5E000000000000000000000000000000000F1 -S3154004D5F000000000000000000000000000000000E1 -S3154004D60000000000000000000000000000000000D0 -S3154004D61000000000000000000000000000000000C0 -S3154004D62000000000000000000000000000000000B0 -S3154004D63000000000000000000000000000000000A0 -S3154004D6400000000000000000000000000000000090 -S3154004D6500000000000000000000000000000000080 -S3154004D6600000000000000000000000000000000070 -S3154004D6700000000000000000000000000000000060 -S3154004D6800000000000000000000000000000000050 -S3154004D6900000000000000000000000000000000040 -S3154004D6A00000000000000000000000000000000030 -S3154004D6B00000000000000000000000000000000020 -S3154004D6C00000000000000000000000000000000010 -S3154004D6D00000000000000000000000000000000000 -S3154004D6E000000000000000000000000000000000F0 -S3154004D6F000000000000000000000000000000000E0 -S3154004D70000000000000000000000000000000000CF -S3154004D71000000000000000000000000000000000BF -S3154004D72000000000000000000000000000000000AF -S3154004D730000000000000000000000000000000009F -S3154004D740000000000000000000000000000000008F -S3154004D750000000000000000000000000000000007F -S3154004D760000000000000000000000000000000006F -S3154004D770000000000000000000000000000000005F -S3154004D780000000000000000000000000000000004F -S3154004D790000000000000000000000000000000003F -S3154004D7A0000000000000000000000000000000002F -S3154004D7B0000000000000000000000000000000001F -S3154004D7C0000000000000000000000000000000000F -S3154004D7D000000000000000000000000000000000FF -S3154004D7E000000000000000000000000000000000EF -S3154004D7F000000000000000000000000000000000DF -S3154004D80000000000000000000000000000000000CE -S3154004D81000000000000000000000000000000000BE -S3154004D82000000000000000000000000000000000AE -S3154004D830000000000000000000000000000000009E -S3154004D840000000000000000000000000000000008E -S3154004D850000000000000000000000000000000007E -S3154004D860000000000000000000000000000000006E -S3154004D870000000000000000000000000000000005E -S3154004D880000000000000000000000000000000004E -S3154004D890000000000000000000000000000000003E -S3154004D8A0000000000000000000000000000000002E -S3154004D8B0000000000000000000000000000000001E -S3154004D8C0000000000000000000000000000000000E -S3154004D8D000000000000000000000000000000000FE -S3154004D8E000000000000000000000000000000000EE -S3154004D8F000000000000000000000000000000000DE -S3154004D90000000000000000000000000000000000CD -S3154004D91000000000000000000000000000000000BD -S3154004D92000000000000000000000000000000000AD -S3154004D930000000000000000000000000000000009D -S3154004D940000000000000000000000000000000008D -S3154004D950000000000000000000000000000000007D -S3154004D960000000000000000000000000000000006D -S3154004D970000000000000000000000000000000005D -S3154004D980000000000000000000000000000000004D -S3154004D990000000000000000000000000000000003D -S3154004D9A0000000000000000000000000000000002D -S3154004D9B0000000000000000000000000000000001D -S3154004D9C0000000000000000000000000000000000D -S3154004D9D000000000000000000000000000000000FD -S3154004D9E000000000000000000000000000000000ED -S3154004D9F000000000000000000000000000000000DD -S3154004DA0000000000000000000000000000000000CC -S3154004DA1000000000000000000000000000000000BC -S3154004DA2000000000000000000000000000000000AC -S3154004DA30000000000000000000000000000000009C -S3154004DA40000000000000000000000000000000008C -S3154004DA50000000000000000000000000000000007C -S3154004DA60000000000000000000000000000000006C -S3154004DA70000000000000000000000000000000005C -S3154004DA80000000000000000000000000000000004C -S3154004DA90000000000000000000000000000000003C -S3154004DAA0000000000000000000000000000000002C -S3154004DAB0000000000000000000000000000000001C -S3154004DAC0000000000000000000000000000000000C -S3154004DAD000000000000000000000000000000000FC -S3154004DAE000000000000000000000000000000000EC -S3154004DAF000000000000000000000000000000000DC -S3154004DB0000000000000000000000000000000000CB -S3154004DB1000000000000000000000000000000000BB -S3154004DB2000000000000000000000000000000000AB -S3154004DB30000000000000000000000000000000009B -S3154004DB40000000000000000000000000000000008B -S3154004DB50000000000000000000000000000000007B -S3154004DB60000000000000000000000000000000006B -S3154004DB70000000000000000000000000000000005B -S3154004DB80000000000000000000000000000000004B -S3154004DB90000000000000000000000000000000003B -S3154004DBA0000000000000000000000000000000002B -S3154004DBB0000000000000000000000000000000001B -S3154004DBC0000000000000000000000000000000000B -S3154004DBD000000000000000000000000000000000FB -S3154004DBE000000000000000000000000000000000EB -S3154004DBF000000000000000000000000000000000DB -S3154004DC0000000000000000000000000000000000CA -S3154004DC1000000000000000000000000000000000BA -S3154004DC2000000000000000000000000000000000AA -S3154004DC30000000000000000000000000000000009A -S3154004DC40000000000000000000000000000000008A -S3154004DC50000000000000000000000000000000007A -S3154004DC60000000000000000000000000000000006A -S3154004DC70000000000000000000000000000000005A -S3154004DC80000000000000000000000000000000004A -S3154004DC90000000000000000000000000000000003A -S3154004DCA0000000000000000000000000000000002A -S3154004DCB0000000000000000000000000000000001A -S3154004DCC0000000000000000000000000000000000A -S3154004DCD000000000000000000000000000000000FA -S3154004DCE000000000000000000000000000000000EA -S3154004DCF000000000000000000000000000000000DA -S3154004DD0000000000000000000000000000000000C9 -S3154004DD1000000000000000000000000000000000B9 -S3154004DD2000000000000000000000000000000000A9 -S3154004DD300000000000000000000000000000000099 -S3154004DD400000000000000000000000000000000089 -S3154004DD500000000000000000000000000000000079 -S3154004DD600000000000000000000000000000000069 -S3154004DD700000000000000000000000000000000059 -S3154004DD800000000000000000000000000000000049 -S3154004DD900000000000000000000000000000000039 -S3154004DDA00000000000000000000000000000000029 -S3154004DDB00000000000000000000000000000000019 -S3154004DDC00000000000000000000000000000000009 -S3154004DDD000000000000000000000000000000000F9 -S3154004DDE000000000000000000000000000000000E9 -S3154004DDF000000000000000000000000000000000D9 -S3154004DE0000000000000000000000000000000000C8 -S3154004DE1000000000000000000000000000000000B8 -S3154004DE2000000000000000000000000000000000A8 -S3154004DE300000000000000000000000000000000098 -S3154004DE400000000000000000000000000000000088 -S3154004DE500000000000000000000000000000000078 -S3154004DE600000000000000000000000000000000068 -S3154004DE700000000000000000000000000000000058 -S3154004DE800000000000000000000000000000000048 -S3154004DE900000000000000000000000000000000038 -S3154004DEA00000000000000000000000000000000028 -S3154004DEB00000000000000000000000000000000018 -S3154004DEC00000000000000000000000000000000008 -S3154004DED000000000000000000000000000000000F8 -S3154004DEE000000000000000000000000000000000E8 -S3154004DEF000000000000000000000000000000000D8 -S3154004DF0000000000000000000000000000000000C7 -S3154004DF1000000000000000000000000000000000B7 -S3154004DF2000000000000000000000000000000000A7 -S3154004DF300000000000000000000000000000000097 -S3154004DF400000000000000000000000000000000087 -S3154004DF500000000000000000000000000000000077 -S3154004DF600000000000000000000000000000000067 -S3154004DF700000000000000000000000000000000057 -S3154004DF800000000000000000000000000000000047 -S3154004DF900000000000000000000000000000000037 -S3154004DFA00000000000000000000000000000000027 -S3154004DFB00000000000000000000000000000000017 -S3154004DFC00000000000000000000000000000000007 -S3154004DFD000000000000000000000000000000000F7 -S3154004DFE000000000000000000000000000000000E7 -S3154004DFF000000000000000000000000000000000D7 -S3154004E00000000000000000000000000000000000C6 -S3154004E01000000000000000000000000000000000B6 -S3154004E02000000000000000000000000000000000A6 -S3154004E0300000000000000000000000000000000096 -S3154004E0400000000000000000000000000000000086 -S3154004E0500000000000000000000000000000000076 -S3154004E0600000000000000000000000000000000066 -S3154004E0700000000000000000000000000000000056 -S3154004E0800000000000000000000000000000000046 -S3154004E0900000000000000000000000000000000036 -S3154004E0A00000000000000000000000000000000026 -S3154004E0B00000000000000000000000000000000016 -S3154004E0C00000000000000000000000000000000006 -S3154004E0D000000000000000000000000000000000F6 -S3154004E0E000000000000000000000000000000000E6 -S3154004E0F000000000000000000000000000000000D6 -S3154004E10000000000000000000000000000000000C5 -S3154004E11000000000000000000000000000000000B5 -S3154004E12000000000000000000000000000000000A5 -S3154004E1300000000000000000000000000000000095 -S3154004E1400000000000000000000000000000000085 -S3154004E1500000000000000000000000000000000075 -S3154004E1600000000000000000000000000000000065 -S3154004E1700000000000000000000000000000000055 -S3154004E1800000000000000000000000000000000045 -S3154004E1900000000000000000000000000000000035 -S3154004E1A00000000000000000000000000000000025 -S3154004E1B00000000000000000000000000000000015 -S3154004E1C00000000000000000000000000000000005 -S3154004E1D000000000000000000000000000000000F5 -S3154004E1E000000000000000000000000000000000E5 -S3154004E1F000000000000000000000000000000000D5 -S3154004E20000000000000000000000000000000000C4 -S3154004E21000000000000000000000000000000000B4 -S3154004E22000000000000000000000000000000000A4 -S3154004E2300000000000000000000000000000000094 -S3154004E2400000000000000000000000000000000084 -S3154004E2500000000000000000000000000000000074 -S3154004E2600000000000000000000000000000000064 -S3154004E2700000000000000000000000000000000054 -S3154004E2800000000000000000000000000000000044 -S3154004E2900000000000000000000000000000000034 -S3154004E2A00000000000000000000000000000000024 -S3154004E2B00000000000000000000000000000000014 -S3154004E2C00000000000000000000000000000000004 -S3154004E2D000000000000000000000000000000000F4 -S3154004E2E000000000000000000000000000000000E4 -S3154004E2F000000000000000000000000000000000D4 -S3154004E30000000000000000000000000000000000C3 -S3154004E31000000000000000000000000000000000B3 -S3154004E32000000000000000000000000000000000A3 -S3154004E3300000000000000000000000000000000093 -S3154004E3400000000000000000000000000000000083 -S3154004E3500000000000000000000000000000000073 -S3154004E3600000000000000000000000000000000063 -S3154004E3700000000000000000000000000000000053 -S3154004E3800000000000000000000000000000000043 -S3154004E3900000000000000000000000000000000033 -S3154004E3A00000000000000000000000000000000023 -S3154004E3B00000000000000000000000000000000013 -S3154004E3C00000000000000000000000000000000003 -S3154004E3D000000000000000000000000000000000F3 -S3154004E3E000000000000000000000000000000000E3 -S3154004E3F000000000000000000000000000000000D3 -S3154004E40000000000000000000000000000000000C2 -S3154004E41000000000000000000000000000000000B2 -S3154004E42000000000000000000000000000000000A2 -S3154004E4300000000000000000000000000000000092 -S3154004E4400000000000000000000000000000000082 -S3154004E4500000000000000000000000000000000072 -S3154004E4600000000000000000000000000000000062 -S3154004E4700000000000000000000000000000000052 -S3154004E4800000000000000000000000000000000042 -S3154004E4900000000000000000000000000000000032 -S3154004E4A00000000000000000000000000000000022 -S3154004E4B00000000000000000000000000000000012 -S3154004E4C00000000000000000000000000000000002 -S3154004E4D000000000000000000000000000000000F2 -S3154004E4E000000000000000000000000000000000E2 -S3154004E4F000000000000000000000000000000000D2 -S3154004E50000000000000000000000000000000000C1 -S3154004E51000000000000000000000000000000000B1 -S3154004E52000000000000000000000000000000000A1 -S3154004E5300000000000000000000000000000000091 -S3154004E5400000000000000000000000000000000081 -S3154004E5500000000000000000000000000000000071 -S3154004E5600000000000000000000000000000000061 -S3154004E5700000000000000000000000000000000051 -S3154004E5800000000000000000000000000000000041 -S3154004E5900000000000000000000000000000000031 -S3154004E5A00000000000000000000000000000000021 -S3154004E5B00000000000000000000000000000000011 -S3154004E5C00000000000000000000000000000000001 -S3154004E5D000000000000000000000000000000000F1 -S3154004E5E000000000000000000000000000000000E1 -S3154004E5F000000000000000000000000000000000D1 -S3154004E60000000000000000000000000000000000C0 -S3154004E61000000000000000000000000000000000B0 -S3154004E62000000000000000000000000000000000A0 -S3154004E6300000000000000000000000000000000090 -S3154004E6400000000000000000000000000000000080 -S3154004E6500000000000000000000000000000000070 -S3154004E6600000000000000000000000000000000060 -S3154004E6700000000000000000000000000000000050 -S3154004E6800000000000000000000000000000000040 -S3154004E6900000000000000000000000000000000030 -S3154004E6A00000000000000000000000000000000020 -S3154004E6B00000000000000000000000000000000010 -S3154004E6C00000000000000000000000000000000000 -S3154004E6D000000000000000000000000000000000F0 -S3154004E6E000000000000000000000000000000000E0 -S3154004E6F000000000000000000000000000000000D0 -S3154004E70000000000000000000000000000000000BF -S3154004E71000000000000000000000000000000000AF -S3154004E720000000000000000000000000000000009F -S3154004E730000000000000000000000000000000008F -S3154004E740000000000000000000000000000000007F -S3154004E750000000000000000000000000000000006F -S3154004E760000000000000000000000000000000005F -S3154004E770000000000000000000000000000000004F -S3154004E780000000000000000000000000000000003F -S3154004E790000000000000000000000000000000002F -S3154004E7A0000000000000000000000000000000001F -S3154004E7B0000000000000000000000000000000000F -S3154004E7C000000000000000000000000000000000FF -S3154004E7D000000000000000000000000000000000EF -S3154004E7E000000000000000000000000000000000DF -S3154004E7F000000000000000000000000000000000CF -S3154004E80000000000000000000000000000000000BE -S3154004E81000000000000000000000000000000000AE -S3154004E820000000000000000000000000000000009E -S3154004E830000000000000000000000000000000008E -S3154004E840000000000000000000000000000000007E -S3154004E850000000000000000000000000000000006E -S3154004E860000000000000000000000000000000005E -S3154004E870000000000000000000000000000000004E -S3154004E880000000000000000000000000000000003E -S3154004E890000000000000000000000000000000002E -S3154004E8A0000000000000000000000000000000001E -S3154004E8B0000000000000000000000000000000000E -S3154004E8C000000000000000000000000000000000FE -S3154004E8D000000000000000000000000000000000EE -S3154004E8E000000000000000000000000000000000DE -S3154004E8F000000000000000000000000000000000CE -S3154004E90000000000000000000000000000000000BD -S3154004E91000000000000000000000000000000000AD -S3154004E920000000000000000000000000000000009D -S3154004E930000000000000000000000000000000008D -S3154004E940000000000000000000000000000000007D -S3154004E950000000000000000000000000000000006D -S3154004E960000000000000000000000000000000005D -S3154004E970000000000000000000000000000000004D -S3154004E980000000000000000000000000000000003D -S3154004E990000000000000000000000000000000002D -S3154004E9A0000000000000000000000000000000001D -S3154004E9B0000000000000000000000000000000000D -S3154004E9C000000000000000000000000000000000FD -S3154004E9D000000000000000000000000000000000ED -S3154004E9E000000000000000000000000000000000DD -S3154004E9F000000000000000000000000000000000CD -S3154004EA0000000000000000000000000000000000BC -S3154004EA1000000000000000000000000000000000AC -S3154004EA20000000000000000000000000000000009C -S3154004EA30000000000000000000000000000000008C -S3154004EA40000000000000000000000000000000007C -S3154004EA50000000000000000000000000000000006C -S3154004EA60000000000000000000000000000000005C -S3154004EA70000000000000000000000000000000004C -S3154004EA80000000000000000000000000000000003C -S3154004EA90000000000000000000000000000000002C -S3154004EAA0000000000000000000000000000000001C -S3154004EAB0000000000000000000000000000000000C -S3154004EAC000000000000000000000000000000000FC -S3154004EAD000000000000000000000000000000000EC -S3154004EAE000000000000000000000000000000000DC -S3154004EAF000000000000000000000000000000000CC -S3154004EB0000000000000000000000000000000000BB -S3154004EB1000000000000000000000000000000000AB -S3154004EB20000000000000000000000000000000009B -S3154004EB30000000000000000000000000000000008B -S3154004EB40000000000000000000000000000000007B -S3154004EB50000000000000000000000000000000006B -S3154004EB60000000000000000000000000000000005B -S3154004EB70000000000000000000000000000000004B -S3154004EB80000000000000000000000000000000003B -S3154004EB90000000000000000000000000000000002B -S3154004EBA0000000000000000000000000000000001B -S3154004EBB0000000000000000000000000000000000B -S3154004EBC000000000000000000000000000000000FB -S3154004EBD000000000000000000000000000000000EB -S3154004EBE000000000000000000000000000000000DB -S3154004EBF000000000000000000000000000000000CB -S3154004EC0000000000000000000000000000000000BA -S3154004EC1000000000000000000000000000000000AA -S3154004EC20000000000000000000000000000000009A -S3154004EC30000000000000000000000000000000008A -S3154004EC40000000000000000000000000000000007A -S3154004EC50000000000000000000000000000000006A -S3154004EC60000000000000000000000000000000005A -S3154004EC70000000000000000000000000000000004A -S3154004EC80000000000000000000000000000000003A -S3154004EC90000000000000000000000000000000002A -S3154004ECA0000000000000000000000000000000001A -S3154004ECB0000000000000000000000000000000000A -S3154004ECC000000000000000000000000000000000FA -S3154004ECD000000000000000000000000000000000EA -S3154004ECE000000000000000000000000000000000DA -S3154004ECF000000000000000000000000000000000CA -S3154004ED0000000000000000000000000000000000B9 -S3154004ED1000000000000000000000000000000000A9 -S3154004ED200000000000000000000000000000000099 -S3154004ED300000000000000000000000000000000089 -S3154004ED400000000000000000000000000000000079 -S3154004ED500000000000000000000000000000000069 -S3154004ED600000000000000000000000000000000059 -S3154004ED700000000000000000000000000000000049 -S3154004ED800000000000000000000000000000000039 -S3154004ED900000000000000000000000000000000029 -S3154004EDA00000000000000000000000000000000019 -S3154004EDB00000000000000000000000000000000009 -S3154004EDC000000000000000000000000000000000F9 -S3154004EDD000000000000000000000000000000000E9 -S3154004EDE000000000000000000000000000000000D9 -S3154004EDF000000000000000000000000000000000C9 -S3154004EE0000000000000000000000000000000000B8 -S3154004EE1000000000000000000000000000000000A8 -S3154004EE200000000000000000000000000000000098 -S3154004EE300000000000000000000000000000000088 -S3154004EE400000000000000000000000000000000078 -S3154004EE500000000000000000000000000000000068 -S3154004EE600000000000000000000000000000000058 -S3154004EE700000000000000000000000000000000048 -S3154004EE800000000000000000000000000000000038 -S3154004EE900000000000000000000000000000000028 -S3154004EEA00000000000000000000000000000000018 -S3154004EEB00000000000000000000000000000000008 -S3154004EEC000000000000000000000000000000000F8 -S3154004EED000000000000000000000000000000000E8 -S3154004EEE000000000000000000000000000000000D8 -S3154004EEF000000000000000000000000000000000C8 -S3154004EF0000000000000000000000000000000000B7 -S3154004EF1000000000000000000000000000000000A7 -S3154004EF200000000000000000000000000000000097 -S3154004EF300000000000000000000000000000000087 -S3154004EF400000000000000000000000000000000077 -S3154004EF500000000000000000000000000000000067 -S3154004EF600000000000000000000000000000000057 -S3154004EF700000000000000000000000000000000047 -S3154004EF800000000000000000000000000000000037 -S3154004EF900000000000000000000000000000000027 -S3154004EFA00000000000000000000000000000000017 -S3154004EFB00000000000000000000000000000000007 -S3154004EFC000000000000000000000000000000000F7 -S3154004EFD000000000000000000000000000000000E7 -S3154004EFE000000000000000000000000000000000D7 -S3154004EFF000000000000000000000000000000000C7 -S3154004F00000000000000000000000000000000000B6 -S3154004F01000000000000000000000000000000000A6 -S3154004F0200000000000000000000000000000000096 -S3154004F0300000000000000000000000000000000086 -S3154004F0400000000000000000000000000000000076 -S3154004F0500000000000000000000000000000000066 -S3154004F0600000000000000000000000000000000056 -S3154004F0700000000000000000000000000000000046 -S3154004F0800000000000000000000000000000000036 -S3154004F0900000000000000000000000000000000026 -S3154004F0A00000000000000000000000000000000016 -S3154004F0B00000000000000000000000000000000006 -S3154004F0C000000000000000000000000000000000F6 -S3154004F0D000000000000000000000000000000000E6 -S3154004F0E000000000000000000000000000000000D6 -S3154004F0F000000000000000000000000000000000C6 -S3154004F10000000000000000000000000000000000B5 -S3154004F11000000000000000000000000000000000A5 -S3154004F1200000000000000000000000000000000095 -S3154004F1300000000000000000000000000000000085 -S3154004F1400000000000000000000000000000000075 -S3154004F1500000000000000000000000000000000065 -S3154004F1600000000000000000000000000000000055 -S3154004F1700000000000000000000000000000000045 -S3154004F1800000000000000000000000000000000035 -S3154004F1900000000000000000000000000000000025 -S3154004F1A00000000000000000000000000000000015 -S3154004F1B00000000000000000000000000000000005 -S3154004F1C000000000000000000000000000000000F5 -S3154004F1D000000000000000000000000000000000E5 -S3154004F1E000000000000000000000000000000000D5 -S3154004F1F000000000000000000000000000000000C5 -S3154004F20000000000000000000000000000000000B4 -S3154004F21000000000000000000000000000000000A4 -S3154004F2200000000000000000000000000000000094 -S3154004F2300000000000000000000000000000000084 -S3154004F2400000000000000000000000000000000074 -S3154004F2500000000000000000000000000000000064 -S3154004F2600000000000000000000000000000000054 -S3154004F2700000000000000000000000000000000044 -S3154004F2800000000000000000000000000000000034 -S3154004F2900000000000000000000000000000000024 -S3154004F2A00000000000000000000000000000000014 -S3154004F2B00000000000000000000000000000000004 -S3154004F2C000000000000000000000000000000000F4 -S3154004F2D000000000000000000000000000000000E4 -S3154004F2E000000000000000000000000000000000D4 -S3154004F2F000000000000000000000000000000000C4 -S3154004F30000000000000000000000000000000000B3 -S3154004F31000000000000000000000000000000000A3 -S3154004F3200000000000000000000000000000000093 -S3154004F3300000000000000000000000000000000083 -S3154004F3400000000000000000000000000000000073 -S3154004F3500000000000000000000000000000000063 -S3154004F3600000000000000000000000000000000053 -S3154004F3700000000000000000000000000000000043 -S3154004F3800000000000000000000000000000000033 -S3154004F3900000000000000000000000000000000023 -S3154004F3A00000000000000000000000000000000013 -S3154004F3B00000000000000000000000000000000003 -S3154004F3C000000000000000000000000000000000F3 -S3154004F3D000000000000000000000000000000000E3 -S3154004F3E000000000000000000000000000000000D3 -S3154004F3F000000000000000000000000000000000C3 -S3154004F40000000000000000000000000000000000B2 -S3154004F41000000000000000000000000000000000A2 -S3154004F4200000000000000000000000000000000092 -S3154004F4300000000000000000000000000000000082 -S3154004F4400000000000000000000000000000000072 -S3154004F4500000000000000000000000000000000062 -S3154004F4600000000000000000000000000000000052 -S3154004F4700000000000000000000000000000000042 -S3154004F4800000000000000000000000000000000032 -S3154004F4900000000000000000000000000000000022 -S3154004F4A00000000000000000000000000000000012 -S3154004F4B00000000000000000000000000000000002 -S3154004F4C000000000000000000000000000000000F2 -S3154004F4D000000000000000000000000000000000E2 -S3154004F4E000000000000000000000000000000000D2 -S3154004F4F000000000000000000000000000000000C2 -S3154004F50000000000000000000000000000000000B1 -S3154004F51000000000000000000000000000000000A1 -S3154004F5200000000000000000000000000000000091 -S3154004F5300000000000000000000000000000000081 -S3154004F5400000000000000000000000000000000071 -S3154004F5500000000000000000000000000000000061 -S3154004F5600000000000000000000000000000000051 -S3154004F5700000000000000000000000000000000041 -S3154004F5800000000000000000000000000000000031 -S3154004F5900000000000000000000000000000000021 -S3154004F5A00000000000000000000000000000000011 -S3154004F5B00000000000000000000000000000000001 -S3154004F5C000000000000000000000000000000000F1 -S3154004F5D000000000000000000000000000000000E1 -S3154004F5E000000000000000000000000000000000D1 -S3154004F5F000000000000000000000000000000000C1 -S3154004F60000000000000000000000000000000000B0 -S3154004F61000000000000000000000000000000000A0 -S3154004F6200000000000000000000000000000000090 -S3154004F6300000000000000000000000000000000080 -S3154004F6400000000000000000000000000000000070 -S3154004F6500000000000000000000000000000000060 -S3154004F6600000000000000000000000000000000050 -S3154004F6700000000000000000000000000000000040 -S3154004F6800000000000000000000000000000000030 -S3154004F6900000000000000000000000000000000020 -S3154004F6A00000000000000000000000000000000010 -S3154004F6B00000000000000000000000000000000000 -S3154004F6C000000000000000000000000000000000F0 -S3154004F6D000000000000000000000000000000000E0 -S3154004F6E000000000000000000000000000000000D0 -S3154004F6F000000000000000000000000000000000C0 -S3154004F70000000000000000000000000000000000AF -S3154004F710000000000000000000000000000000009F -S3154004F720000000000000000000000000000000008F -S3154004F730000000000000000000000000000000007F -S3154004F740000000000000000000000000000000006F -S3154004F750000000000000000000000000000000005F -S3154004F760000000000000000000000000000000004F -S3154004F770000000000000000000000000000000003F -S3154004F780000000000000000000000000000000002F -S3154004F790000000000000000000000000000000001F -S3154004F7A0000000000000000000000000000000000F -S3154004F7B000000000000000000000000000000000FF -S3154004F7C000000000000000000000000000000000EF -S3154004F7D000000000000000000000000000000000DF -S3154004F7E000000000000000000000000000000000CF -S3154004F7F000000000000000000000000000000000BF -S3154004F80000000000000000000000000000000000AE -S3154004F810000000000000000000000000000000009E -S3154004F820000000000000000000000000000000008E -S3154004F830000000000000000000000000000000007E -S3154004F840000000000000000000000000000000006E -S3154004F850000000000000000000000000000000005E -S3154004F860000000000000000000000000000000004E -S3154004F870000000000000000000000000000000003E -S3154004F880000000000000000000000000000000002E -S3154004F890000000000000000000000000000000001E -S3154004F8A0000000000000000000000000000000000E -S3154004F8B000000000000000000000000000000000FE -S3154004F8C000000000000000000000000000000000EE -S3154004F8D000000000000000000000000000000000DE -S3154004F8E000000000000000000000000000000000CE -S3154004F8F000000000000000000000000000000000BE -S3154004F90000000000000000000000000000000000AD -S3154004F910000000000000000000000000000000009D -S3154004F920000000000000000000000000000000008D -S3154004F930000000000000000000000000000000007D -S3154004F940000000000000000000000000000000006D -S3154004F950000000000000000000000000000000005D -S3154004F960000000000000000000000000000000004D -S3154004F970000000000000000000000000000000003D -S3154004F980000000000000000000000000000000002D -S3154004F990000000000000000000000000000000001D -S3154004F9A0000000000000000000000000000000000D -S3154004F9B000000000000000000000000000000000FD -S3154004F9C000000000000000000000000000000000ED -S3154004F9D000000000000000000000000000000000DD -S3154004F9E000000000000000000000000000000000CD -S3154004F9F000000000000000000000000000000000BD -S3154004FA0000000000000000000000000000000000AC -S3154004FA10000000000000000000000000000000009C -S3154004FA20000000000000000000000000000000008C -S3154004FA30000000000000000000000000000000007C -S3154004FA40000000000000000000000000000000006C -S3154004FA50000000000000000000000000000000005C -S3154004FA60000000000000000000000000000000004C -S3154004FA70000000000000000000000000000000003C -S3154004FA80000000000000000000000000000000002C -S3154004FA90000000000000000000000000000000001C -S3154004FAA0000000000000000000000000000000000C -S3154004FAB000000000000000000000000000000000FC -S3154004FAC000000000000000000000000000000000EC -S3154004FAD000000000000000000000000000000000DC -S3154004FAE000000000000000000000000000000000CC -S3154004FAF000000000000000000000000000000000BC -S3154004FB0000000000000000000000000000000000AB -S3154004FB10000000000000000000000000000000009B -S3154004FB20000000000000000000000000000000008B -S3154004FB30000000000000000000000000000000007B -S3154004FB40000000000000000000000000000000006B -S3154004FB50000000000000000000000000000000005B -S3154004FB60000000000000000000000000000000004B -S3154004FB70000000000000000000000000000000003B -S3154004FB80000000000000000000000000000000002B -S3154004FB90000000000000000000000000000000001B -S3154004FBA0000000000000000000000000000000000B -S3154004FBB000000000000000000000000000000000FB -S3154004FBC000000000000000000000000000000000EB -S3154004FBD000000000000000000000000000000000DB -S3154004FBE000000000000000000000000000000000CB -S3154004FBF000000000000000000000000000000000BB -S3154004FC0000000000000000000000000000000000AA -S3154004FC10000000000000000000000000000000009A -S3154004FC20000000000000000000000000000000008A -S3154004FC30000000000000000000000000000000007A -S3154004FC40000000000000000000000000000000006A -S3154004FC50000000000000000000000000000000005A -S3154004FC60000000000000000000000000000000004A -S3154004FC70000000000000000000000000000000003A -S3154004FC80000000000000000000000000000000002A -S3154004FC90000000000000000000000000000000001A -S3154004FCA0000000000000000000000000000000000A -S3154004FCB000000000000000000000000000000000FA -S3154004FCC000000000000000000000000000000000EA -S3154004FCD000000000000000000000000000000000DA -S3154004FCE000000000000000000000000000000000CA -S3154004FCF000000000000000000000000000000000BA -S3154004FD0000000000000000000000000000000000A9 -S3154004FD100000000000000000000000000000000099 -S3154004FD200000000000000000000000000000000089 -S3154004FD300000000000000000000000000000000079 -S3154004FD400000000000000000000000000000000069 -S3154004FD500000000000000000000000000000000059 -S3154004FD600000000000000000000000000000000049 -S3154004FD700000000000000000000000000000000039 -S3154004FD800000000000000000000000000000000029 -S3154004FD900000000000000000000000000000000019 -S3154004FDA00000000000000000000000000000000009 -S3154004FDB000000000000000000000000000000000F9 -S3154004FDC000000000000000000000000000000000E9 -S3154004FDD000000000000000000000000000000000D9 -S3154004FDE000000000000000000000000000000000C9 -S3154004FDF000000000000000000000000000000000B9 -S3154004FE0000000000000000000000000000000000A8 -S3154004FE100000000000000000000000000000000098 -S3154004FE200000000000000000000000000000000088 -S3154004FE300000000000000000000000000000000078 -S3154004FE400000000000000000000000000000000068 -S3154004FE500000000000000000000000000000000058 -S3154004FE600000000000000000000000000000000048 -S3154004FE700000000000000000000000000000000038 -S3154004FE800000000000000000000000000000000028 -S3154004FE900000000000000000000000000000000018 -S3154004FEA00000000000000000000000000000000008 -S3154004FEB000000000000000000000000000000000F8 -S3154004FEC000000000000000000000000000000000E8 -S3154004FED000000000000000000000000000000000D8 -S3154004FEE000000000000000000000000000000000C8 -S3154004FEF000000000000000000000000000000000B8 -S3154004FF0000000000000000000000000000000000A7 -S3154004FF100000000000000000000000000000000097 -S3154004FF200000000000000000000000000000000087 -S3154004FF300000000000000000000000000000000077 -S3154004FF400000000000000000000000000000000067 -S3154004FF500000000000000000000000000000000057 -S3154004FF600000000000000000000000000000000047 -S3154004FF700000000000000000000000000000000037 -S3154004FF800000000000000000000000000000000027 -S3154004FF900000000000000000000000000000000017 -S3154004FFA00000000000000000000000000000000007 -S3154004FFB000000000000000000000000000000000F7 -S3154004FFC000000000000000000000000000000000E7 -S3154004FFD000000000000000000000000000000000D7 -S3154004FFE000000000000000000000000000000000C7 -S3154004FFF000000000000000000000000000000000B7 -S3154005000000000002000000030000000000000000A0 -S315400500100000000100000000FFFFFFFE0000000396 -S3154005002055555554FFFFFFFE0000000355555554E1 -S31540050030700FFFFE00000007100249240000000073 -S315400500400000000000000000000000020000000360 -S315400500500000000000000003FFFFFFFEFFFFFFFF5B -S3154005006000000002FFFFFFFD000000000000000049 -S31540050070000000010000000000000000FFFFFFFF38 -S315400500800000000000000001FFFFFFFFFFFFFFFF2C -S31540050090FFFFFFFF00000001FFFFFFFFFFFFFFFE21 -S315400500A00000000300000000FFFFFFFEFFFFFFFD0D -S315400500B000000000000000090000000700000001E4 -S315400500C0FFFFFFF700000002FFFFFFFCFFFFFFF801 -S315400500D000000002FFFFFFFCFFFFFFF8FFFFFFFCEC -S315400500E00000000200000008FFFFFFFCFFFFFFFEC7 -S315400500F0FFFFFFF8FFFFFFF800000001FFFFFFF8D5 -S31540050100FFFFFFF7000000000000000B00000002A3 -S31540050110000000050000002F000000020000001747 -S3154005012000003039000002A700000012FFFF076CEF -S315400501300000004DFFFFFCC600003039FFFFFD59AA -S31540050140FFFFFFEEFFFF076CFFFFFFB30000033A1B -S3154005015000000091FFFFE84100000000FFFFFD841D -S31540050160FFFED02F000000000000F6FA006E498120 -S315400501700000000000000000000000000000000034 -S31540050180FFFFF0000000000200000003000000062B -S3154005019000000002FFFFFFFDFFFFFFFA0000000021 -S315400501A0000000010000000000000000FFFFFFFF07 -S315400501B00000000000000001FFFFFFFFFFFFFFFFFB -S315400501C0FFFFFFFF00000001FFFFFFFFFFFFFFFEF0 -S315400501D000000003FFFFFFFAFFFFFFFEFFFFFFFDE5 -S315400501E000000006000000000000000000000009B5 -S315400501F000000000000000000000000000000000B4 -S31540050200000000000000000100000002000000039D -S315400502100000000000000000000000000000000093 -S31540050220FFFFFFFF00020000000000000000000085 -S3154005023040050228400502284005023040050230A7 -S315400502404005023840050238400502404005024057 -S315400502504005024840050248400502504005025007 -S3154005026040050258400502584005026040050260B7 -S315400502704005026840050268400502704005027067 -S315400502804005027840050278400502804005028017 -S3154005029040050288400502884005029040050290C7 -S315400502A04005029840050298400502A0400502A077 -S315400502B0400502A8400502A8400502B0400502B027 -S315400502C0400502B8400502B8400502C0400502C0D7 -S315400502D0400502C8400502C8400502D0400502D087 -S315400502E0400502D8400502D8400502E0400502E037 -S315400502F0400502E8400502E8400502F0400502F0E7 -S31540050300400502F8400502F8400503004005030094 -S315400503104005030840050308400503104005031042 -S3154005032040050318400503184005032040050320F2 -S3154005033040050328400503284005033040050330A2 -S315400503404005033840050338400503404005034052 -S315400503504005034840050348400503504005035002 -S3154005036040050358400503584005036040050360B2 -S315400503704005036840050368400503704005037062 -S315400503804005037840050378400503804005038012 -S3154005039040050388400503884005039040050390C2 -S315400503A04005039840050398400503A0400503A072 -S315400503B0400503A8400503A8400503B0400503B022 -S315400503C0400503B8400503B8400503C0400503C0D2 -S315400503D0400503C8400503C8400503D0400503D082 -S315400503E0400503D8400503D8400503E0400503E032 -S315400503F0400503E8400503E8400503F0400503F0E2 -S31540050400400503F8400503F840050400400504008F -S31540050410400504084005040840050410400504103D -S3154005042040050418400504184005042040050420ED -S31540050430400504284005042840050430400504309D -S31540050440400504384005043840050440400504404D -S3154005045040050448400504484005045040050450FD -S3154005046040050458400504584005046040050460AD -S31540050470400504684005046840050470400504705D -S31540050480400504784005047840050480400504800D -S3154005049040050488400504884005049040050490BD -S315400504A04005049840050498400504A0400504A06D -S315400504B0400504A8400504A8400504B0400504B01D -S315400504C0400504B8400504B8400504C0400504C0CD -S315400504D0400504C8400504C8400504D0400504D07D -S315400504E0400504D8400504D8400504E0400504E02D -S315400504F0400504E8400504E8400504F0400504F0DD -S31540050500400504F8400504F840050500400505008A -S315400505104005050840050508400505104005051038 -S3154005052040050518400505184005052040050520E8 -S315400505304005052840050528400505304005053098 -S315400505404005053840050538400505404005054048 -S3154005055040050548400505484005055040050550F8 -S3154005056040050558400505584005056040050560A8 -S315400505704005056840050568400505704005057058 -S315400505804005057840050578400505804005058008 -S3154005059040050588400505884005059040050590B8 -S315400505A04005059840050598400505A0400505A068 -S315400505B0400505A8400505A8400505B0400505B018 -S315400505C0400505B8400505B8400505C0400505C0C8 -S315400505D0400505C8400505C8400505D0400505D078 -S315400505E0400505D8400505D8400505E0400505E028 -S315400505F0400505E8400505E8400505F0400505F0D8 -S31540050600400505F8400505F8400506004005060085 -S315400506104005060840050608400506104005061033 -S3154005062040050618400506184005062040050620E3 -S3154005063000000000400506300000000000000000F4 -S31540050640000000000000000200000000000000005D -S31540050650000000000000000000000000000000004F -S31540050660000000000000000000000000000000003F -S31540050670000000000000000000000000000000002F -S31540050680000000000000000000000000000000001F -S31540050690000000000000000000000000000000000F -S315400506A0000000000000000000000000400509941D -S315400506B040050A6040050B2C0000000000000000C4 -S315400506C000000000000000000000000000000000DF -S315400506D00000000000000000000000004001CA8044 -S315400506E000000000000000000000000000000000BF -S315400506F000000000000000000000000000000000AF -S31540050700000000000000000000000000000000009E -S31540050710000000000000000000000000000000008E -S31540050720000000000000000000000000000000007E -S31540050730000000000000000000000000000000006E -S31540050740000000000000000000000000000000005E -S315400507500000000000000001330EABCD1234E66DFB -S31540050760DEEC0005000B0000000000000000000064 -S31540050770000000000000000000000000000000002E -S31540050780000000000000000000000000000000001E -S31540050790000000000000000000000000000000000E -S315400507A000000000000000000000000000000000FE -S315400507B000000000000000000000000000000000EE -S315400507C000000000000000000000000000000000DE -S315400507D000000000000000000000000000000000CE -S315400507E000000000000000000000000000000000BE -S315400507F000000000000000000000000000000000AE -S31540050800000000000000000000000000000000009D -S31540050810000000000000000000000000000000008D -S31540050820000000000000000000000000000000007D -S31540050830000000000000000000000000000000006D -S31540050840000000000000000000000000000000005D -S31540050850000000000000000000000000000000004D -S31540050860000000000000000000000000000000003D -S31540050870000000000000000000000000000000002D -S31540050880000000000000000000000000000000001D -S31540050890000000000000000000000000000000000D -S315400508A000000000000000000000000000000000FD -S315400508B000000000000000000000000000000000ED -S315400508C000000000000000000000000000000000DD -S315400508D000000000000000000000000000000000CD -S315400508E000000000000000000000000000000000BD -S315400508F000000000000000000000000000000000AD -S31540050900000000000000000000000000000000009C -S31540050910000000000000000000000000000000008C -S31540050920000000000000000000000000000000007C -S31540050930000000000000000000000000000000006C -S31540050940000000000000000000000000000000005C -S31540050950000000000000000000000000000000004C -S31540050960000000000000000000000000000000003C -S31540050970000000000000000000000000000000002C -S31540050980000000000000000000000000000000001C -S31540050990000000000000000000000000000000000C -S315400509A000000000000000000000000000000000FC -S315400509B000000000000000000000000000000000EC -S315400509C000000000000000000000000000000000DC -S315400509D000000000000000000000000000000000CC -S315400509E000000000000000000000000000000000BC -S315400509F000000000000000000000000000000000AC -S31540050A00000000000000000000000000000000009B -S31540050A10000000000000000000000000000000008B -S31540050A20000000000000000000000000000000007B -S31540050A30000000000000000000000000000000006B -S31540050A40000000000000000000000000000000005B -S31540050A50000000000000000000000000000000004B -S31540050A60000000000000000000000000000000003B -S31540050A70000000000000000000000000000000002B -S31540050A80000000000000000000000000000000001B -S31540050A90000000000000000000000000000000000B -S31540050AA000000000000000000000000000000000FB -S31540050AB000000000000000000000000000000000EB -S31540050AC000000000000000000000000000000000DB -S31540050AD000000000000000000000000000000000CB -S31540050AE000000000000000000000000000000000BB -S31540050AF000000000000000000000000000000000AB -S31540050B00000000000000000000000000000000009A -S31540050B10000000000000000000000000000000008A -S31540050B20000000000000000000000000000000007A -S31540050B30000000000000000000000000000000006A -S31540050B40000000000000000000000000000000005A -S31540050B50000000000000000000000000000000004A -S31540050B60000000000000000000000000000000003A -S31540050B70000000000000000000000000000000002A -S31540050B80000000000000000000000000000000001A -S31540050B90000000000000000000000000000000000A -S31540050BA000000000000000000000000000000000FA -S31540050BB000000000000000000000000000000000EA -S31540050BC000000000000000000000000000000000DA -S31540050BD000000000000000000000000000000000CA -S31540050BE000000000000000000000000000000000BA -S31540050BF00000000000000000400506A800000000B7 -S31540050C000000000000000000000000000000000099 -S31540050C100000000000000000000000000000000089 -S31540050C200000000000000000000000000000000079 -S31540050C3000000000800001000000000800000007D9 -S31540050C40000000060000000300000000FFFF8AD0F8 -S30940050C5080000310C2 +S31540048C30000000008000010000000008000000075A +S31540048C40000000060000000300000000FFFF8AD079 +S30D40048C5080000310000000003F S70540000000BA diff --git a/designs/leon3-gr-xc3s-1500/sram.srec b/designs/leon3-gr-xc3s-1500/sram.srec index 811496d2..eada5924 100755 --- a/designs/leon3-gr-xc3s-1500/sram.srec +++ b/designs/leon3-gr-xc3s-1500/sram.srec @@ -1,14 +1,14 @@ S00C00007372616D2E7372656365 -S31540000000881000000910007181C1216C01000000B8 -S31540000010A1480000A75000001080203BAC102001F2 +S31540000000881000000910007181C1203401000000F1 +S31540000010A1480000A75000001080203EAC102001EF S3154000002091D0200001000000010000000100000006 S3154000003091D02000010000000100000001000000F6 -S31540000040A14800002910007181C520A401000000CC -S31540000050A14800002910006E81C523C80100000098 -S31540000060A14800002910006F81C52034010000001E +S31540000040A14800002910007081C5236C0100000002 +S31540000050A14800002910006E81C522A801000000B9 +S31540000060A14800002910006E81C52314010000003C S3154000007091D02000010000000100000001000000B6 S3154000008091D02000010000000100000001000000A6 -S31540000090A1480000A75000001080201BAC1020098A +S31540000090A1480000A75000001080201EAC10200987 S315400000A091D0200001000000010000000100000086 S315400000B091D0200001000000010000000100000076 S315400000C091D0200001000000010000000100000066 @@ -16,21 +16,21 @@ S315400000D091D0200001000000010000000100000056 S315400000E091D0200001000000010000000100000046 S315400000F091D0200001000000010000000100000036 S3154000010091D0200001000000010000000100000025 -S31540000110AE102001A148000010806F73A750000068 -S31540000120AE102002A148000010806F6FA75000005B -S31540000130AE102003A148000010806F6BA75000004E -S31540000140AE102004A148000010806F67A750000041 -S31540000150AE102005A148000010806F63A750000034 -S31540000160AE102006A148000010806F5FA750000027 -S31540000170AE102007A148000010806F5BA75000001A -S31540000180AE102008A148000010806F57A75000000D -S31540000190AE102009A148000010806F53A750000000 -S315400001A0AE10200AA148000010806F4FA7500000F3 -S315400001B0AE10200BA148000010806F4BA7500000E6 -S315400001C0AE10200CA148000010806F47A7500000D9 -S315400001D0AE10200DA148000010806F43A7500000CC -S315400001E0AE10200EA148000010806F3FA7500000BF -S315400001F0AE10200FA148000010806F3BA7500000B2 +S31540000110AE102001A148000010806F2BA7500000B0 +S31540000120AE102002A148000010806F27A7500000A3 +S31540000130AE102003A148000010806F23A750000096 +S31540000140AE102004A148000010806F1FA750000089 +S31540000150AE102005A148000010806F1BA75000007C +S31540000160AE102006A148000010806F17A75000006F +S31540000170AE102007A148000010806F13A750000062 +S31540000180AE102008A148000010806F0FA750000055 +S31540000190AE102009A148000010806F0BA750000048 +S315400001A0AE10200AA148000010806F07A75000003B +S315400001B0AE10200BA148000010806F03A75000002E +S315400001C0AE10200CA148000010806EFFA750000022 +S315400001D0AE10200DA148000010806EFBA750000015 +S315400001E0AE10200EA148000010806EF7A750000008 +S315400001F0AE10200FA148000010806EF3A7500000FB S3154000020091D0200001000000010000000100000024 S3154000021091D0200001000000010000000100000014 S3154000022091D0200001000000010000000100000004 @@ -129,10 +129,10 @@ S315400007E091D020000100000001000000010000003F S315400007F091D020000100000001000000010000002F S3154000080091D020000100000001000000010000001E S3154000081091D020000100000001000000010000000E -S31540000820A14800002910006F81C522080100000080 -S31540000830A148000010806D19A7500000010000007B +S31540000820A14800002910006F81C520E801000000A2 +S31540000830A148000010806CD1A750000001000000C4 S3154000084091D02000010000000100000001000000DE -S31540000850A14800002910006F81C521EC010000006D +S31540000850A14800002910006F81C520CC010000008E S3154000086091D02000010000000100000001000000BE S3154000087091D02000010000000100000001000000AE S3154000088091D020000100000001000000010000009E @@ -255,131 +255,131 @@ S31540000FC091D0200001000000010000000100000057 S31540000FD091D0200001000000010000000100000047 S31540000FE091D0200001000000010000000100000037 S31540000FF091D0200001000000010000000100000027 -S315400010009DE3BFC0051001438410A0600710014452 +S315400010009DE3BFC0051001238410A0600710012492 S315400010108610E1B8821000008620C00286A0E00853 -S3154000102036BFFFFFC038800311100144901221B82B -S31540001030C022000040006BA60100000040006BA6E5 -S315400010400100000040006D580100000011100072C0 -S31540001050901222A0400066A60100000040006E8A61 -S3154000106001000000400000430100000040006C8386 -S315400010700100000081C7E00881E800009DE3BF98B9 -S3154000108023100143C20C606080A0600012800015EE -S315400010902110008010800005C204200C9FC3400030 -S315400010A0C224200CC204200CDA00400080A3600059 -S315400010B012BFFFFB82006004030000008210600044 -S315400010C080A060000280000682102001111000728C -S315400010D06FFFFBCC9012223082102001C22C606040 -S315400010E081C7E00881E800009DE3BF9881C7E0081A -S315400010F081E800009DE3BF98030000008210600075 -S31540001100111000721310014380A06000901222302B -S3154000111002800004921260646FFFFBBA0100000077 -S315400011201B100144C20361B880A060000280000920 -S31540001130B01361B8030000008210600080A0600018 -S3154000114002800004010000006FFFFBAE81E8000052 -S315400011500100000081C7E00881E800009DE3BF98D8 -S3154000116081C7E00881E8000081C3E0080100000073 -S315400011709DE3BF984000000A01000000400001497D -S31540001180010000001120000340003C2C9012210079 -S315400011904000000E81E80000010000009DE3BF987A -S315400011A0400000290100000080A2200012800005B6 -S315400011B003100080D80060109A102001DA23201016 -S315400011C081C7E00891E8200003100080D800601035 -S315400011D09A102001DA23201481C3E00890102000E1 -S315400011E003100080DA006010D023400081C3E0087D -S315400011F09010200003100080DA006010D0236008B1 -S3154000120081C3E0089010200003100080DA006010CF -S31540001210D023600481C3E0089010200013100080A2 -S31540001220921260149010200081C3E008D0EA40205A -S3154000123090102000131000809212601481C3E008C1 -S31540001240D0224000914440009132201C81C3E008E6 -S31540001250900A200F81C3E008D08200209010200C15 -S3154000126081C3E008D08200408210000880A20009B5 -S3154000127014800003902200099022400181C3E008B7 -S3154000128001000000932A600282102001C222000958 -S315400012909810200080A3000A1680000A96102001AC -S315400012A0832B2002DA02000180A0000D826020001C -S315400012B09803200180A3000A06BFFFFA960AC001E0 -S315400012C080A2E00002BFFFF49810200081C3E0082E -S315400012D0010000009DE3BF98C20620108330601CC9 -S315400012E0A0100018A400600180A4A0010280006C38 -S315400012F0B0103FFF7FFFFFD401000000AA10000896 -S31540001300912A20047FFFFFBC900220077FFFFFD475 -S315400013100100000003020000808A00010280005C98 -S31540001320010000009A056001821020018328400DCB -S3154000133011100080C2242010901220A09210001597 -S315400013407FFFFFD1941000120310008082106018B6 -S31540001350A12D6002C0204010DA004010A610000106 -S3154000136080A36009291001431480002BAC100001B2 -S315400013707FFFFFAB0100000080A2200012BFFFFDEF -S3154000138001000000B010200080A600121680001454 -S315400013900100000010800005A210001680A6001271 -S315400013A01680000F01000000832E2002D00440105A -S315400013B0D20440017FFFFFADB006200180A220018C -S315400013C004BFFFF7901020027FFFFF90010000004E -S315400013D080A6001206BFFFF6832E2002C205207C9F -S315400013E082006001C225207C7FFFFF920100000041 -S315400013F0C204C01082006001C224C010DA04C010CA -S3154000140080A3600904BFFFDB111000801080000438 -S315400014109012205C111000809012205C92100015F2 -S315400014207FFFFF9994100012832CA0028200401285 -S31540001430A0004001DA05207C80A4000D0280000453 -S31540001440231001437FFFFF7190102003C204607C8C -S3154000145080A060000480000601000000C204607C99 -S3154000146080A400011680000580A560007FFFFF670D -S315400014709010200380A5600022800009B010200053 -S3154000148091D0200010800006B01020007FFFFF5F43 -S315400014909010200110BFFFA59A05600181C7E008A2 -S315400014A081E800009DE3BF98C2062010A0100018F6 -S315400014B08330601C80A0600002800009B0103FFFAE -S315400014C07FFFFF610100000080A22000128000041F -S315400014D00300003F821063FFC224201081C7E0084A -S315400014E081E800009DE3BF98C20620108330601C4F -S315400014F0A400600180A4A00102800068B0103FFFF4 -S315400015007FFFFF5101000000AA100008912A200425 -S315400015107FFFFF39900220077FFFFF510100000047 -S3154000152003020000808A000102800058010000008A -S3154000153011100080901220A0921000157FFFFF52DC -S31540001540941000120310008082106018A12D6002D2 -S31540001550C0204010DA004010A610000180A36009A8 -S31540001560291001431480002BAC1000017FFFFF2C93 -S315400015700100000080A2200012BFFFFD0100000014 -S31540001580B010200080A60012168000140100000052 -S3154000159010800005A210001680A600121680000FCB -S315400015A001000000832E2002D0044010D2044001E6 -S315400015B07FFFFF2EB006200180A2200104BFFFF767 -S315400015C0901020027FFFFF110100000080A600124C -S315400015D006BFFFF6832E2002C205207C82006001F2 -S315400015E0C225207C7FFFFF1301000000C204C0100B -S315400015F082006001C224C010DA04C01080A36009D2 -S3154000160004BFFFDB11100080108000049012205CA4 -S31540001610111000809012205C921000157FFFFF1A77 -S3154000162094100012832CA00282004012A0004001B8 -S31540001630DA05207C80A4000D0280000423100143BB -S315400016407FFFFEF290102003C204607C80A0600001 -S315400016500480000601000000C204607C80A40001F2 -S315400016601680000580A560007FFFFEE890102003ED -S3154000167080A5600022800009B010200091D0200093 -S3154000168010800006B01020007FFFFEE09010200181 -S3154000169010BFFFA91110008081C7E00881E8000053 -S315400016A09DE3BF983120000092162200941020003E -S315400016B04000439790102001400040A09016220021 -S315400016C090162300400043FC92102008B0162100DB -S315400016D040003F8D81E80000010000009DE3BF9877 -S315400016E021200000921422009410200040004388DC -S315400016F09010200140004091901422009210001852 -S31540001700400043ED90142300B014210040003F7E7A -S3154000171081E8000001000000000000000000000019 -S315400017200000000000000000000000000000000073 -S315400017300000000000000000000000000000000063 -S315400017400000000000000000000000000000000053 -S315400017500000000000000000000000000000000043 -S315400017600000000000000000000000000000000033 -S315400017700000000000000000000000000000000023 -S315400017800000000000000000000000000000000013 -S315400017900000000000000000000000000000000003 -S315400017A000000000000000000000000000000000F3 -S315400017B000000000000000000000000000000000E3 -S315400017C000000000000000000000000000000000D3 +S3154000102036BFFFFFC038800311100124901221B84B +S31540001030C022000040006B5E0100000040006B5E75 +S315400010400100000040006D0A01000000111000740C +S31540001050901221DC400067030100000040007059F7 +S31540001060010000004000004F0100000040006C3BC2 +S315400010700100000081C7E00881E800009DE3BFA0B1 +S3154000108021100123C20C206080A060001280002243 +S3154000109023100123C20460642710007425100074D5 +S315400010A0A614E144A414A148A4248013A53CA0029C +S315400010B0A404BFFF80A040123A80000E0300000047 +S315400010C0A21460648200600185286002C224400048 +S315400010D0C204C0029FC0400001000000C20440009C +S315400010E080A040120ABFFFF98200600103000000A1 +S315400010F08210600080A060000280000682102001FD +S31540001100111000726FFFFBBF901220E08210200189 +S31540001110C22C206081C7E00881E800009DE3BFA0A3 +S3154000112081C7E00881E800009DE3BFA003000000FE +S315400011308210600080A06000228000081110012407 +S315400011401110007213100123901220E06FFFFBADC7 +S315400011509212606811100124C20221B880A060007A +S3154000116002800009901221B803000000821060003E +S3154000117080A0600002800004010000009FC0400083 +S315400011800100000081C7E00881E800009DE3BFA0A0 +S3154000119081C7E00881E8000081C3E0080100000043 +S315400011A09DE3BFA0400000260100000040000177FB +S315400011B0010000001120000340003C249012210051 +S315400011C04000000381E80000010000000310008099 +S315400011D0C20060108410200190102000C4206014CA +S315400011E081C3E0080100000003100080C2006010C7 +S315400011F08410000890102000C420400081C3E008FD +S315400012000100000003100080C20060108410000836 +S3154000121090102000C420600881C3E008010000004F +S3154000122003100080C2006010841000089010200057 +S31540001230C420600481C3E008010000009DE3BFA014 +S31540001240400000140100000080A22000128000052A +S3154000125003100080C200601084102001C42060107A +S3154000126081C7E00891E820001310008092126014B4 +S315400012709010200081C3E008D0EA40209010200062 +S31540001280131000809212601481C3E008D0224000FF +S31540001290914440009132201C81C3E008900A200FFF +S315400012A081C3E008D08200209010200C81C3E00862 +S315400012B0D08200409DE3BFA0C2062010A0100018B7 +S315400012C08330601C80A0600002800009B0103FFFA0 +S315400012D07FFFFFF00100000080A220001280000482 +S315400012E00300003F821063FFC224201081C7E0083C +S315400012F081E800009DE3BFA0E4062010A534A01CB1 +S31540001300A404A00180A4A0010280003CB0103FFFCD +S315400013107FFFFFE001000000AA100008912A200488 +S315400013207FFFFFB9900220077FFFFFE0010000002A +S3154000133003020000808A0001028000740100000060 +S31540001340A72D600209100080881120188210200104 +S3154000135084102001C22100138210200080A4800145 +S31540001360148000098728600280A0A0001280002512 +S31540001370821020008410200180A4800104BFFFFB5E +S3154000138087286002C601000380A000038200600136 +S315400013908660200010BFFFF284088003C205A0804B +S315400013A0852CA003A12CA001A004000280A400016A +S315400013B002800004010000007FFFFF9A9010200386 +S315400013C0C205A08080A060000480000603100123AF +S315400013D0C200608080A400011680000580A56000E0 +S315400013E07FFFFF909010200380A5600002800003DD +S315400013F0B010200091D0200081C7E00881E80000AD +S3154000140023100080A21460A02D100123C024401395 +S31540001410C204401380A06009148000270910008090 +S31540001420A815A0807FFFFF910100000080A2200048 +S3154000143012BFFFFD80A4A00004800013010000003D +S31540001440A0102000C4044013832C2002C204400193 +S3154000145080A08001A0042001048000038620400271 +S315400014608620800180A0E0010480000580A48010D1 +S315400014707FFFFF6C9010200280A4801014BFFFF203 +S3154000148001000000C205000082006001C225000084 +S315400014907FFFFF7B01000000C20440138200600111 +S315400014A0C2244013C204401380A0600904BFFFDE7B +S315400014B0091000808811205C8210200184102001D0 +S315400014C0C22100138210200080A4800114800009EC +S315400014D08728600280A0A00012BFFFB182102000C2 +S315400014E08410200180A4800104BFFFFB872860028E +S315400014F0C601000380A000038200600186602000D0 +S3154000150010BFFFF2840880037FFFFF469010200142 +S3154000151010BFFF8DA72D60029DE3BFA0E4062010FB +S31540001520A0100018A534A01CA404A00180A4A0010A +S315400015300280003FB0103FFF7FFFFF5601000000D2 +S31540001540AA100008912A20047FFFFF2F900220074F +S315400015507FFFFF560100000003020000808A000161 +S315400015600280007701000000A72D6002091000806C +S3154000157088112018821020018405600185284002C8 +S31540001580C4242010C22100138410200182102000A0 +S3154000159080A48001148000098728600280A0A000F2 +S315400015A012800025821020008410200180A4800132 +S315400015B004BFFFFB87286002C601000380A000032A +S315400015C0820060018660200010BFFFF2840880031D +S315400015D0C205A080852CA003A12CA001A004000276 +S315400015E080A4000102800004010000007FFFFF0D7F +S315400015F090102003C205A08080A0600004800006F1 +S3154000160003100123C200608080A4000116800005FB +S3154000161080A560007FFFFF039010200380A5600037 +S3154000162002800003B010200091D0200081C7E0085E +S3154000163081E8000023100080A21460A02D10012331 +S31540001640C0244013C204401380A0600914800027C0 +S3154000165009100080A815A0807FFFFF04010000004C +S3154000166080A2200012BFFFFD80A4A00004800013CA +S3154000167001000000A0102000C4044013832C200267 +S31540001680C204400180A08001A00420010480000320 +S31540001690862040028620800180A0E001048000056B +S315400016A080A480107FFFFEDF9010200280A480106F +S315400016B014BFFFF201000000C20500008200600175 +S315400016C0C22500007FFFFEEE01000000C204401369 +S315400016D082006001C2244013C204401380A0600906 +S315400016E004BFFFDE091000808811205C82102001B3 +S315400016F084102001C22100138210200080A48001A2 +S31540001700148000098728600280A0A00012BFFFB1A4 +S31540001710821020008410200180A4800104BFFFFBBA +S3154000172087286002C601000380A000038200600192 +S315400017308660200010BFFFF2840880037FFFFEB959 +S315400017409010200110BFFF8AA72D60029DE3BFA025 +S31540001750212000009410200092142200400043688B +S315400017609010200140004220901422009210001850 +S31540001770400043AC90142300B014210040003F5C6D +S3154000178081E80000010000009DE3BFA03120000079 +S3154000179094102000921622004000435990102001D8 +S315400017A04000421190162200901623004000439DAF +S315400017B092102008B016210040003F4D81E80000FD +S315400017C001000000000000000000000000000000D2 S315400017D000000000000000000000000000000000C3 S315400017E000000000000000000000000000000000B3 S315400017F000000000000000000000000000000000A3 @@ -2049,39 +2049,39 @@ S31540007FE0000000000000000000000000000000004B S31540007FF0000000000000000000000000000000003B S315400080009DE3BF9081C7E00881E8000003000010AF S31540008010C48000408088800112BFFFFE010000003E -S315400080209DE3BF909DE3BF909DE3BF909DE3BF90CE -S315400080309DE3BF909DE3BF9021044444A0142111C9 -S3154000804023088888A2146222250CCCCCA414A3331E -S3154000805027111111A614E04429155555A815215587 -S315400080602B199999AA1562662D1DDDDDAC15A377EE -S315400080702F222222AE15E08801100000E03FBFE02B -S31540008080E43FBFE8E83FBFF0EC3FBFF88210001E78 -S315400080908220601CC0A041E082206008C0A041E070 -S315400080A082206008C0A041E082206008C0A041E074 -S315400080B0C0A002209DE3BF909DE3BF9081E80000F1 -S315400080C081E800000100000001000000E01FBFE061 -S315400080D0E41FBFE8E81FBFF0EC1FBFF80100000037 -S315400080E00100000081E8000081E8000081E800000E -S315400080F081E8000081E8000081C7E00881E80000CF -S31540008100A7500000AA102400A8102300EC854320A5 -S31540008110EA8503202F100020AE15E150EE05C00081 -S31540008120E805C000EA05E004EC05E008AC15A0004F -S31540008130C0A58300EA250000AE05E00C2B10002008 -S31540008140AA156150EE25400081C4400081CC8000D4 -S3154000815000000000010000000000000000000000D8 -S3154000816000000000000000000000000000000000C9 +S31540008020C46FBFF89DE3BF909DE3BF909DE3BF90B3 +S315400080309DE3BF909DE3BF909DE3BF9021044444E0 +S31540008040A014211123088888A2146222250CCCCCC6 +S31540008050A414A33327111111A614E044291555552C +S31540008060A81521552B199999AA1562662D1DDDDD96 +S31540008070AC15A3772F222222AE15E088011000000E +S31540008080E03FBFE0E43FBFE8E83FBFF0EC3FBFF86A +S315400080908210001E8220601CC0A041E08220600841 +S315400080A0C0A041E082206008C0A041E08220600874 +S315400080B0C0A041E0C0A002209DE3BF909DE3BF90D9 +S315400080C081E8000081E80000010000000100000096 +S315400080D0E01FBFE0E41FBFE8E81FBFF0EC1FBFF89A +S315400080E0EC6FBFF8EC7FBFF8010000000100000014 +S315400080F081E8000081E8000081E8000081E8000096 +S3154000810081E8000081C7E00881E80000A750000030 +S31540008110AA102400A8102300EC854320EA850320FA +S315400081202F100020AE15E160EE05C000E805C00046 +S31540008130EA05E004EC05E008AC15A000C0A5830004 +S31540008140EA250000AE05E00C2B100020AA15616060 +S31540008150EE25400081C4400081CC80000100000033 +S3154000816000000000010000000000000000000000C8 S3154000817000000000000000000000000000000000B9 S3154000818000000000000000000000000000000000A9 -S315400081900000000001000000010000000100000096 -S315400081A00100000001000000010000000100000085 +S315400081900000000000000000000000000000000099 +S315400081A00000000001000000010000000100000086 S315400081B00100000001000000010000000100000075 -S315400081C00100000001000000010000000100000065 +S315400081C081C3E008D0A003200100000001000000A8 S315400081D00100000001000000010000000100000055 -S315400081E00100000001000000010000000100000045 -S315400081F00100000001000000010000000100000035 -S315400082000100000001000000010000000100000024 -S315400082100100000001000000010000000100000014 -S315400082200100000001000000010000000100000004 +S315400081E09DE3BF90FC2780009007A0019410001EDD +S315400081F0D1E7816AD1E7816A9402A0019002200109 +S31540008200D1E7816AD1E7816AD60780009622C01EEF +S31540008210B0A2E00202800004900020017FFFE4014A +S315400082200100000081C7E00881E80000010000006D S3154000823001000000010000000100000001000000F4 S3154000824001000000010000000100000001000000E4 S3154000825001000000010000000100000001000000D4 @@ -4095,3251 +4095,3366 @@ S3154000FFC001000000010000000100000001000000E7 S3154000FFD001000000010000000100000001000000D7 S3154000FFE001000000010000000100000001000000C7 S3154000FFF001000000010000000100000001000000B7 -S315400100009DE3BF90C207A068A40060261B00003F85 -S315400100109A1363FF030000239E0C800DAC106111FF -S31540010020AB376010820D400DAC03C0169E0F400DDC -S3154001003099372010AC058001820B000DAC05800F6D -S315400100409E0F000DAC058001AC05800F8335A010D5 -S315400100508208400D9E0D800DAC03C001C207A06809 -S3154001006094006034C207A05C93286011C207A0685F -S315400100709E0863FFD607A060C207A074D420400043 -S31540010080D827BFF4EE07A070833620109935A0100B -S31540010090980B000DA136E010A336E008C22DC00032 -S315400100A0F62DE00B9A0D800D82102008B6102045E2 -S315400100B0972AE012AC03400C9612C009C22DE00CFF -S315400100C0F62DE00E9B36200899366010953660086D -S315400100D09336A0109136A008A73CA0088210204074 -S315400100E0B6102011A9376018DA2DE001F02DE00293 -S315400100F0D82DE003D42DE004F22DE005D22DE00603 -S31540010100D02DE007F42DE008E02DE009E22DE00ACC -S31540010110C22DE016F62DE017E42DE011E62DE01094 -S31540010120E82DE01AC02DE00DC02DE00FC02DE012E4 -S31540010130C02DE013C02DE014C02DE015D807A068EE -S315400101409F2BE007C207A0649612C00F92032012AC -S31540010150AC380016E407A06C9B3AE0189130601861 -S31540010160A1306010A3306008B7376008B537201852 -S31540010170B3372008B135A0089F3A6008993AE01094 -S31540010180953AE008EA2DE01BF62DE01CF42DE01E21 -S31540010190F22DE020F02DE018EC2DE019DE2DE026C1 -S315400101A0D22DE027DA2DE02CD82DE02DD42DE02ECE -S315400101B0D62DE02FD02DE030E02DE031E22DE0329A -S315400101C0C22DE033DA07A05CFA2DE01DC207BFF469 -S315400101D080A36000C22DE01FF82DE021C02DE02252 -S315400101E0C02DE023C02DE024C02DE025C02DE02800 -S315400101F0C02DE029C02DE02A0280000EC02DE02B43 -S31540010200B8102000D807A06880A7000C1A80000902 -S31540010210BA05C01CC20C801CC22F6034B80720012D -S31540010220DA07A06880A7000D0ABFFFFBBA05C01C0C -S3154001023081C7E00881E800009DE3BD1040002A34F3 -S3154001024090102000B610000840002A31901020047A -S31540010250BA100008391001447FFFC3E2110040740F -S31540010260A01720D0A6103FDEA8103FADAA103FBE72 -S31540010270AC103FEFAE102020F02720D0E62C200412 -S31540010280E82C2005EA2C2006EC2C2007C02C20085F -S31540010290EE2C2009400002B590100010D004201029 -S315400102A092102000400001CBD40720D0A492200018 -S315400102B0068000650100000015000010D0042010E2 -S315400102C09414800A9210200040000218D60720D0CC -S315400102D0EA2FBF0082103FF2EA2FBEFAE62FBEFE9A -S315400102E0E82FBEFFEC2FBF01EE2FBF03C22FBF0584 -S315400102F0E62FBEF8E82FBEF9EC2FBEFBC02FBEFCA1 -S31540010300EE2FBEFDC02FBF02C02FBF04A010200E8E -S31540010310AA07BFF882054010E0287F00A00420010B -S3154001032080A420FF04BFFFFD82054010AC07BDF845 -S3154001033090100016400003D6921720D080A22000CC -S3154001034002BFFFFD90100016B207BEF890102100C3 -S315400103509210001940000382941720D080A22000F9 -S3154001036002BFFFFC901021009010001D9210001B4F -S315400103704000040F941720D080A2200002BFFFFC4A -S315400103809010001DC207400080A061002280001825 -S31540010390A01020007FFFC39D901020011080001403 -S315400103A0A01020000480002380A060020280001F6C -S315400103B080A0600322800002A21000128205401034 -S315400103C0DA087F00B00C60FF80A340182280000548 -S315400103D0A00420017FFFC38D90102002A0042001BC -S315400103E080A420FF1480001C821720D0808C20031B -S315400103F012800005833C201F82058010E480402046 -S31540010400833C201F8330601E8204000182087FFCEA -S315400104108224000180A0600112BFFFE301000000B9 -S3154001042010BFFFE7A334A01010BFFFE5A334A00817 -S3154001043080A0600022BFFFE2A334A01810BFFFE1F5 -S31540010440820540107FFFC3719010200010BFFF9CB2 -S3154001045015000010DA00601480A3600002800135A7 -S31540010460C20720D08200601CF4804020400029A8A9 -S31540010470901021008210202AC2274000AE100008A9 -S3154001048082102004170037AB1B377BBF9A1363CC0E -S315400104909612E1BEC22DE01315003BC098103FFFF6 -S315400104A09412A020921020DE9132E0089E1020EF97 -S315400104B0A0102008A2102006A4102001A733601026 -S315400104C0A9336008821020DDD82DE005C22DE01C3D -S315400104D0DA2DE01FD82DC000D82DE001D82DE0023D -S315400104E0D82DE003D82DE004E02DE010E22DE012F6 -S315400104F0E42DE015D22DE016D02DE017D62DE018CB -S31540010500DE2DE019D42DE01BE62DE01DE82DE01E81 -S31540010510D22DE006D02DE007D62DE008DE2DE009EC -S31540010520C02DE00AD42DE00BE02DE00CE22DE00DCC -S31540010530C02DE00EE42DE00FC02DE011C02DE014DA -S31540010540C02DE01AC02DE0208336A0189B36A0109E -S315400105509936A008C22DE026DA2DE027D82DE028CD -S31540010560C02DE021C02DE022C02DE023C02DE02486 -S31540010570C02DE025F42DE0299010001640000344DB -S31540010580921720D080A2200002BFFFFD90100016D6 -S31540010590D007400092100017400002F1941720D076 -S315400105A080A2200022BFFFFCD00740009010001D12 -S315400105B09210001B4000037E941720D080A2200099 -S315400105C002BFFFFC9010001D9807BE0ED88B00207D -S315400105D0980B20FF992B20108207BE0FC28840201E -S315400105E0820860FF83286008981300019A07BE10AD -S315400105F0DA8B40209A0B60FFA213000D9607BE11BD -S31540010600D68AC020960AE0FF972AE0108207BE12DA -S31540010610C2884020820860FF832860089612C00184 -S315400106209A07BE13DA8B40209A0B60FFA612C00DC3 -S31540010630A807BD90150037AB17003BC0C023A05C8F -S31540010640C023A060E823A064C023A068C023A06C97 -S31540010650EE23A070FA23A0749412A1BE9612E02054 -S3154001066090100011921000139810001A7FFFFE653A -S315400106709A10001A9010001640000305921720D0D8 -S3154001068080A2200002BFFFFD90100016D007400057 -S3154001069092100017400002B2941720D080A2200089 -S315400106A022BFFFFCD00740009010001D9210001B96 -S315400106B04000033F941720D080A2200002BFFFFCD8 -S315400106C09010001D9807BE24D88B0020992B201826 -S315400106D08207BE25DA8840209A0B60FF9B2B60106B -S315400106E09813000D8207BE26C2884020820860FF0B -S315400106F083286008981300019A07BE27DA8B4020A9 -S315400107009A0B60FFA413000D03000080808C8001CA -S3154001071012800003A134A012A00420019A1020489F -S3154001072082102001DA23A068150037AB17003BC0C1 -S31540010730C223A05CF223A06CE023A060E823A0645E -S31540010740EE23A070FA23A0749412A1BE9612E02063 -S3154001075090100011921000139810001A7FFFFE2985 -S315400107609A10001A90100016400002C9921720D024 -S3154001077080A2200002BFFFFD90100016D007400066 -S315400107809210001740000276941720D080A22000D4 -S3154001079022BFFFFCD00740009010001D9210001BA5 -S315400107A040000303941720D080A2200002BFFFFC23 -S315400107B09010001D9A07BE25C28B4020808860029A -S315400107C022800005A00420017FFFC29090102003E3 -S315400107D0A004200182102048150037AB17003BC00A -S315400107E09810001AE023A060E823A064C223A06801 -S315400107F0C023A05CC023A06CEE23A070FA23A07492 -S3154001080090100011921000139412A1BE9612E0208E -S315400108107FFFFDFC9A10001A901000164000029CC2 -S31540010820921720D080A2200002BFFFFD9010001633 -S31540010830D00740009210001740000249941720D07B -S3154001084080A2200022BFFFFCD00740009010001D6F -S315400108509210001B400002D6941720D080A220009F -S3154001086002BFFFFC9010001DC207400080A0607CC3 -S3154001087022800005A605A0347FFFC26490102004A3 -S31540010880A605A03410800013A01020000480002289 -S3154001089080A060020280001D80A0600322800002C9 -S315400108A0B00CA0FF82054010DA087F0080A34018F3 -S315400108B022800005A00420017FFFC254901020052C -S315400108C0A004200180A4204714800018A604E0015A -S315400108D0808C200312800004833C201FE484C020C6 -S315400108E0833C201F8330601E8204000182087FFC06 -S315400108F08224000180A0600112BFFFE5A334A0104D -S3154001090010BFFFE9B00C60FFA334A00810BFFFE69B -S31540010910B00C60FF80A0600022BFFFE3B134A01895 -S3154001092010BFFFE28205401040002880901000175A -S3154001093081C7E00891E820009DE3BF88F027A044E5 -S31540010940C207A04482004001901000014000287077 -S315400109500100000082100008C227BFF4DA07BFF485 -S31540010960C207A0449A034001C207A04482007FFF08 -S3154001097082380001820B4001C227BFF4C207BFF48F -S31540010980C227BFF0C027BFECC207BFEC80A0607F83 -S315400109901480000C01000000C207BFEC9B286003D5 -S315400109A0C207BFF082034001C0204000C207BFEC2E -S315400109B082006001C227BFEC10BFFFF401000000B6 -S315400109C0C207BFF4B010000181C7E00881E800000A -S315400109D09DE3BF90F027A044F227A048F427A04CFE -S315400109E0C207A04C820060109010000140000046F2 -S315400109F001000000D027BFF4C207BFF48208600897 -S31540010A0080A06000028000040100000010BFFFF5D5 -S31540010A1001000000C207A0449B28600BC207A04802 -S31540010A208208601F8328600682134001821060029B -S31540010A30C227BFF4C207A04C82006010901000018B -S31540010A40D207BFF44000002701000000C207A04CB6 -S31540010A5082006010901000014000002B0100000050 -S31540010A60D027BFF4C207BFF48208600880A06000A7 -S31540010A70028000040100000010BFFFF501000000E4 -S31540010A80C207BFF48208601080A060001280001087 -S31540010A9001000000C207A04C8200601090100001C6 -S31540010AA04000001901000000D027BFF4C207BFF47F -S31540010AB0833060101B00003F9A1363FF8208400D8C -S31540010AC0C227BFF0108000040100000082103FFFE2 -S31540010AD0C227BFF0F007BFF081C7E00881E80000F8 -S31540010AE09DE3BF98F027A044F227A048C207A0443F -S31540010AF0FA07A048FA204000B010000181C7E0087B -S31540010B0081E800009DE3BF90F027A044C207A044BE -S31540010B10C2804020C227BFF4C207BFF4B010000113 -S31540010B2081C7E00881E800009DE3BF90F027A0441B -S31540010B30F227A048F427A04CF627A050C207A050A0 -S31540010B4082006010901000017FFFFFEF010000005E -S31540010B50D027BFF4C207BFF48208600880A06000B6 -S31540010B60028000040100000010BFFFF501000000F3 -S31540010B70DA07A04C0300003F821063FF820B40015D -S31540010B809B286010C207A0448328600B9A1340013A -S31540010B90C207A0488208601F83286006821340016D -S31540010BA082106001C227BFF4C207A05082006010C4 -S31540010BB090100001D207BFF47FFFFFCA0100000079 -S31540010BC0C207A05082006010901000017FFFFFCE47 -S31540010BD001000000D027BFF4C207BFF482086008B5 -S31540010BE080A06000028000040100000010BFFFF5F4 -S31540010BF00100000081C7E00881E800009DE3BF983D -S31540010C00F027A044F227A048DA07A044C207A0482B -S31540010C10C2084000C22B6004D807A0449A102001A4 -S31540010C20C207A04882034001C2084000C22B2005EA -S31540010C30D807A0449A102002C207A0488203400167 -S31540010C40C2084000C22B2006D807A0449A102003B0 -S31540010C50C207A04882034001C2084000C22B2007B8 -S31540010C60D807A0449A102004C207A0488203400135 -S31540010C70C2084000C22B2008D807A0449A1020057C -S31540010C80C207A04882034001C2084000C22B200986 -S31540010C90C207A044C200400096006008C207A048AF -S31540010CA0C2084000820860FF992860089A10200116 -S31540010CB0C207A04882034001C2084000820860FF83 -S31540010CC0821300019010000B921000017FFFFF85F7 -S31540010CD001000000C207A044C20040009600600C1B -S31540010CE09A102002C207A04882034001C208400070 -S31540010CF0820860FF992860189A102003C207A0480D -S31540010D0082034001C2084000820860FF83286010C8 -S31540010D10981300019A102004C207A048820340019B -S31540010D20C2084000820860FF8328600898130001CA -S31540010D309A102005C207A04882034001C20840001C -S31540010D40820860FF821300019010000B921000018F -S31540010D507FFFFF640100000082102001B0100001F6 -S31540010D6081C7E00881E800009DE3BF80F027A044E9 -S31540010D70C207A044D00040007FFFFF63010000008E -S31540010D80D027BFF4DA07A044C207BFF48330601B03 -S31540010D9082086001C223600CDA07A044C207BFF48F -S31540010DA08330601F82086001C2236014C207A044D9 -S31540010DB0C200601480A06000128000130100000090 -S31540010DC0C207A044D0004000921020407FFFFF455B -S31540010DD001000000C207A044D00040007FFFFF4A47 -S31540010DE001000000D027BFF4C207BFF4820860406B -S31540010DF080A06000028000040100000010BFFFF6E1 -S31540010E0001000000C207A044C200400082006010F9 -S31540010E10901000017FFFFF3C01000000D027BFF486 -S31540010E20DA07A044C207BFF48330600B8208601F13 -S31540010E30C2236010E007A044901024007FFFFEBF4C -S31540010E4001000000D0242018E007A044901024009F -S31540010E507FFFFEBA01000000D024201CC207A04437 -S31540010E60C200400082006014DA07A04490100001DD -S31540010E70D20360187FFFFF1B01000000C207A04498 -S31540010E80C200400082006018DA07A04490100001B9 -S31540010E90D203601C7FFFFF1301000000C207A0447C -S31540010EA0C0206020C207A044C0206024C207A044DD -S31540010EB0C0206028C207A044C020602CC207A044BD -S31540010EC0C200601480A0600012800083010000000F -S31540010ED0C207A044DA07A044D00060109210200057 -S31540010EE015000020D60340007FFFFF1001000000DF -S31540010EF0C207A044DA07A044D00060109210200037 -S31540010F00D40340007FFFFEB301000000D027BFF4A9 -S31540010F10DA07BFF403000020820B400180A0600085 -S31540010F20028000040100000010BFFFF20100000032 -S31540010F30C027BFF0C207BFF41B0000048208400D62 -S31540010F4080A060000280001701000000C207A04493 -S31540010F50DA07A044D000601092102001D40340006B -S31540010F607FFFFE9C0100000082100008820860207D -S31540010F7080A060001280000B01000000C207BFF094 -S31540010F8082006001C227BFF0DA07BFF003000030DC -S31540010F908210635080A3400104BFFFED01000000B1 -S31540010FA0C207A044DA07A044D00060109210200086 -S31540010FB0D40340007FFFFE8701000000D027BFF425 -S31540010FC0C207A044C200600C80A0600002800012EB -S31540010FD001000000C207BFF41B0000088208400D53 -S31540010FE080A060001280000C01000000C207BFF41F -S31540010FF08208604080A06000028000070100000076 -S3154001100082102001C227BFE4C027BFE81080001F1D -S3154001101001000000C207BFF41B0000088208400D12 -S3154001102080A060000280000C01000000C207BFF4EE -S315400110308208604080A06000128000070100000025 -S31540011040C027BFE482102001C227BFE81080000FED -S3154001105001000000C207BFF41B0000088208400DD2 -S3154001106080A060001280000901000000C207BFF4A1 -S315400110708208604080A060001280000401000000E8 -S31540011080C027BFE4C027BFE8C207BFF4833060086A -S3154001109082086001C227BFECD807A044C207BFEC53 -S315400110A09B286004C207BFE8832860079A13400162 -S315400110B0C207BFE48328600882134001D0030000C1 -S315400110C0921000017FFFFE87010000001080001B87 -S315400110D001000000C027BFF0C207BFF080A0600238 -S315400110E01480001601000000C207A044C20040005F -S315400110F082006010901000017FFFFE830100000016 -S31540011100D027BFF4C207BFF48208600880A0600000 -S315400111100280000501000000C027BFF010BFFFEFAD -S3154001112001000000C207BFF082006001C227BFF084 -S3154001113010BFFFEA01000000C207A044820060041C -S31540011140D007A044921000017FFFFEAD01000000D0 -S31540011150B010000181C7E00881E800009DE3BF901F -S31540011160F027A044F227A048F427A04CD807A04C6A -S31540011170C207A04CC20060209B286003C20320180E -S3154001118082034001901000017FFFFE5F01000000D5 -S31540011190821000088208680080A060000280000575 -S315400111A001000000C027BFF4108000360100000096 -S315400111B0D807A04CC207A04CC20060209B28600300 -S315400111C0C20320189A034001C207A048C223600403 -S315400111D0C207A04CC200602080A0607F1280001030 -S315400111E001000000D807A04CC207A04CC2006020F5 -S315400111F09B286003C203201898034001DA07A044E4 -S315400112000300000682134001C2230000C207A04C1E -S31540011210C02060201080001001000000D807A04CBB -S31540011220C207A04CC20060209B286003C20320185D -S315400112309A034001C207A04482106800C2234000BD -S31540011240DA07A04CC207A04CC200602082006001B0 -S31540011250C2236020C207A04CE0004000C207A04C58 -S31540011260D00040007FFFFE280100000082100008E8 -S3154001127082106001C224000082102001C227BFF4FF -S31540011280F007BFF481C7E00881E800009DE3BF9005 -S31540011290F027A044F227A048D807A048C207A04893 -S315400112A0C20060249B286003C203201C82034001C4 -S315400112B0901000017FFFFE1401000000821000081B -S315400112C08208680080A060000280000501000000DD -S315400112D0C027BFF41080003301000000D807A048A2 -S315400112E0C207A048C20060249B286003C203201C99 -S315400112F09A034001C207A044C2236004C207A04822 -S31540011300C200602480A0607F1280000E01000000B0 -S31540011310D807A048C207A048C20060249B286003A2 -S31540011320C203201C9A03400103000006C223400069 -S31540011330C207A048C02060241080000F01000000B1 -S31540011340D807A048C207A048C20060249B28600372 -S31540011350C203201C9A03400182102800C223400088 -S31540011360DA07A048C207A048C20060248200600193 -S31540011370C2236024C207A048E0004000C207A0483B -S31540011380D00040007FFFFDE0010000008210000810 -S3154001139082106002C224000082102001C227BFF4DD -S315400113A0F007BFF481C7E00881E800009DE3BF90E4 -S315400113B0F027A044F227A048F427A04CD807A04C18 -S315400113C0C207A04CC200602C9B286003C203201CAC -S315400113D082034001901000017FFFFDCB0100000018 -S315400113E082100008C227BFF4C207BFF48208680012 -S315400113F080A060001280001801000000DA07A044B6 -S31540011400C207BFF4820867FFC2234000C207A04C4F -S31540011410C200602C80A0607F12800006010000009F -S31540011420C207A04CC020602C1080000701000000BC -S31540011430DA07A04CC207A04CC200602C82006001B2 -S31540011440C223602C82102001C227BFF01080000306 -S3154001145001000000C027BFF0F007BFF081C7E008D8 -S3154001146081E800009DE3BF90F027A044D807A0443F -S31540011470C207A044C20060289B286003C20320180B -S3154001148082034001901000017FFFFD9F0100000093 -S3154001149082100008C227BFF4C207BFF48208680061 -S315400114A080A060001280001401000000C207A04421 -S315400114B0C200602880A0607F128000060100000003 -S315400114C0C207A044C0206028108000070100000028 -S315400114D0DA07A044C207A044C20060288200600126 -S315400114E0C223602882102001C227BFF0108000036A -S315400114F001000000C027BFF0F007BFF081C7E00838 -S3154001150081E800009DE3BF987FFFBF361100403060 -S3154001151080A22000128000F382102001C226200CF6 -S31540011520C0262004C0260000C026200882102002C2 -S31540011530C2262008C0260000C026000082102003D3 -S31540011540C22620089A102083DA262008A21020639A -S31540011550C0260000A2847FFF1CBFFFFE01000000E1 -S31540011560A2102063C2060000A2847FFF1CBFFFFEBB -S3154001157082102002C2262008A4062004C2848020AC -S315400115808088600402BFFFFE01000000C0262008DB -S31540011590C0260000A6102001C28480208338601432 -S315400115A08208603F80A0600122800093A604E0018A -S315400115B082102003C2262008C284802080886001D0 -S315400115C00280000780886004C2860020C284802091 -S315400115D08088600112BFFFFD8088600402BFFFFB67 -S315400115E08088600202BFFFF901000000C026200882 -S315400115F0C026200480A4E001048000082110008058 -S31540011600C28480208208608080A06001028000AE92 -S315400116100100000021100080DA4C20F0DA2600009B -S31540011620C28480208208600480A060010280009A02 -S3154001163001000000C284802080A4E00104800020D3 -S3154001164082102001A210200180A440131680000DB3 -S315400116502B100080A81420F0E00560E890100011DE -S315400116604000247992100010C24D0008A204600186 -S31540011670C226000080A4401306BFFFFA9010001155 -S31540011680C28480208208608080A06001028000922E -S3154001169001000000C2848020833860148208603FC4 -S315400116A080A0401302800004010000007FFFBED7E6 -S315400116B090102006C284802082102001C226200C70 -S315400116C0DA848020808B600112800068010000006E -S315400116D082102083C226200880A4E00102800052A5 -S315400116E001000000C28480208088640002BFFFFEA2 -S315400116F001000000C284802080886001028000537E -S315400117000100000080A4E00124800012A210200004 -S31540011710C28480208330601A80A040130280000476 -S31540011720010000007FFFBEB990102009C2848020CD -S31540011730808861000280005501000000C28480203B -S31540011740808864000280004D01000000A210200044 -S3154001175080A440131680001203100080A81060F088 -S315400117602B100080E08600209010001140002436A6 -S31540011770D20560E8C24D0008A204600180A0401075 -S31540011780028000049010200C7FFFBEA001000000E3 -S3154001179080A4401306BFFFF40100000080A4E001CD -S315400117A00480000F01000000C2848020808861000F -S315400117B01280004201000000C28480208330601AFA -S315400117C080A060001280003A01000000C28480209F -S315400117D0808864001280003301000000C2848020AA -S315400117E0808860011280001D01000000C02620088B -S315400117F03080003CC0260000C284802083386014BB -S315400118008208603F80A0401322BFFFFBA604E0018F -S3154001181080A4E00134BFFF67A604FFFF10BFFF6647 -S3154001182082102003C28480208088600112BFFFB2EB -S3154001183001000000C28480208088600102BFFFFA57 -S315400118400100000030BFFFAC7FFFBE709010200842 -S3154001185010BFFFAE80A4E0017FFFBE6C9010200C4C -S31540011860C02620083080001F7FFFBE6890102007E9 -S3154001187010BFFF99821020837FFFBE649010200B1A -S3154001188010BFFFB4A21020007FFFBE609010200A57 -S3154001189030BFFFAB7FFFBE5D9010200130BFFF66BA -S315400118A07FFFBE5A9010200B30BFFFCD7FFFBE5742 -S315400118B09010200E30BFFFC67FFFBE549010200D02 -S315400118C030BFFFBE7FFFBE519010200410BFFF53B3 -S315400118D0211000807FFFBE4D9010200530BFFF6E66 -S315400118E081C7E00891E8200017100143DA02E0843D -S315400118F0900220109B2B60029812E084D023000DA9 -S31540011900C202E08482006001C222E08481C3E00811 -S3154001191001000000C0220000C022204082103FFF8B -S31540011920C222200C9A10200103100143DA20608460 -S3154001193081C3E008010000009DE3BF780310014424 -S31540011940F02061007FFFBE27110040347FFFFFF288 -S3154001195090100018A010200123100046921000108C -S315400119604000298E901460E8A004200180A4200F35 -S3154001197004BFFFFC92100010C20620208330601C79 -S31540011980AE006001AC10200080A58017168000EDE6 -S315400119900300003FB81063FE2B1001430300002AE9 -S315400119A0B61062AABA102001B410001CB2156084A8 -S315400119B0832DA00C80A5E00114800119A6004018D2 -S315400119C080A5A0001280010A01000000F824E00869 -S315400119D0C204E00880A0401C02800004010000000F -S315400119E07FFFBE0A90102001F824E040C204E04087 -S315400119F080A0401C02800004010000007FFFBE035E -S31540011A0090102002C204E00880A0600012BFFFFED1 -S31540011A1001000000C205608480A0601002800005BC -S31540011A20251001437FFFBDF9901020032510014386 -S31540011A30A0102001A414A084A2102020832C2002EF -S31540011A409A244010D8048001A004200180A3000DEF -S31540011A5002800004901020047FFFBDEC01000000CD -S31540011A6080A4200F04BFFFF7832C2002FA2560844F -S31540011A70F624C000F424E040C204C00080A0401B0C -S31540011A8002800004A010001A7FFFBDE090102005DF -S31540011A90C204E04080A04010028000040100000022 -S31540011AA07FFFBDDA90102005F424E008C204E00867 -S31540011AB080A0600012BFFFFE01000000C2056084E5 -S31540011AC080A0601002800005251001437FFFBDCF35 -S31540011AD09010200625100143A0102001A414A084D3 -S31540011AE0A210201F9B2C2002C204800D80A0401111 -S31540011AF0A0042001A2047FFE02800004901020076A -S31540011B007FFFBDC20100000080A4200704BFFFF78C -S31540011B109B2C2002A4066028A210201CA0102005A0 -S31540011B20C204800080A04011A404A004A2047FFE48 -S31540011B3002800004901020087FFFBDB40100000020 -S31540011B40A0843FFF1CBFFFF701000000FA27BFE852 -S31540011B50C207BFE882006001C227BFECDA07BFECCB -S31540011B609A036001DA27BFF0C207BFF08200600125 -S31540011B70C227BFF49A102006DA27BFD8C024C00076 -S31540011B80C024E040FA256084A0102002E024E04011 -S31540011B90E024E0088344400080886100028000051B -S31540011BA0010000008050000180500001805000017A -S31540011BB0C207BFD8C227BFDCDA07BFD880A36006F9 -S31540011BC002800004010000007FFFBD909010200AB2 -S31540011BD0E024E00801000000C207BFD8C227BFDCED -S31540011BE0DA07BFD880A36006028000040100000026 -S31540011BF07FFFBD869010200AE024E0080100000026 -S31540011C00C027BFDCC207BFDC80A0600012800096FF -S31540011C1001000000C204E00880A0600012BFFFFE80 -S31540011C2001000000C205608480A0600402800005B6 -S31540011C300300003F7FFFBD759010200D0300003F5C -S31540011C40C024E040821063FEC224E0080310014331 -S31540011C509A102001DA206084400003E70100000069 -S31540011C60400003E790122F0082103FFFC224E0405C -S31540011C70C204E04080A0600002BFFFFE01000000F8 -S31540011C80C205608480A0600202800004A0156084C1 -S31540011C907FFFBD5E9010200EC204200480A0601F0D -S31540011CA002800004010000007FFFBD589010200F04 -S31540011CB0400003D1A8100010400003D190023F001C -S31540011CC0A0102002A4102020400003CB01000000F8 -S31540011CD0400003CB90023F00C2056084A20420016C -S31540011CE080A0401102800004901020107FFFBD4764 -S31540011CF001000000832C20029A248010D80500019F -S31540011D00A010001180A3000D028000049010201144 -S31540011D107FFFBD3E0100000080A4200F04BFFFEB02 -S31540011D2001000000C024E040AC05A00182103FFF45 -S31540011D30C224E00C80A5801706BFFF1F832DA00C8F -S31540011D4080A5E0010480004B01000000C02620244C -S31540011D50C206202480A060001280003F01000000DE -S31540011D6021040000E0262024C206202480A0401041 -S31540011D7002800005821020017FFFBD2490102014AF -S31540011D8082102001C2262020C0262024C2062024FB -S31540011D9080A0401002800004010000007FFFBD1BAF -S31540011DA090102015C0262020C0262024C2062024BB -S31540011DB080A06000128000240100000082102002F1 -S31540011DC0C2262020DA062020808B60020280001B7A -S31540011DD001000000C0262020C20620208088600223 -S31540011DE00280002401000000308000117FFFFECAFE -S31540011DF0901000139B2DA01CDA24E024C204E02499 -S31540011E008330601C80A0401602BFFEF10100000035 -S31540011E107FFFBCFE9010201230BFFEED7FFFBCF667 -S31540011E209010001610BFFEE880A5A0007FFFBCF70A -S31540011E30901020183080000F7FFFBCF490102017BF -S31540011E4030BFFFE57FFFBCF19010201610BFFFDDCC -S31540011E50821020027FFFBCED9010201310BFFFC2FD -S31540011E60210400007FFFBCE99010200B30BFFF6AC0 -S31540011E7081C7E00891E8200003100143DA0060CCF5 -S31540011E80C023600881C3E008901020009DE3BF9005 -S31540011E902F100144E205E100A0046100271001432F -S31540011EA0C2042004F024E0CC7FFFBCD39010201064 -S31540011EB003018000DA04200482106020808B4001F7 -S31540011EC01280010D01000000DA046100DA27BFF03B -S31540011ED0C204610080A340010280000582102001F6 -S31540011EE07FFFBCCA9010200282102001C224200428 -S31540011EF0DA046100DA27BFF0C204610080A3400121 -S31540011F000280012001000000C0242004DA0461009F -S31540011F10DA27BFF0C204610080A3400102800005B8 -S31540011F2080A720007FFFBCB99010200480A7200025 -S31540011F30128000B780A72001B010200180A6001AA8 -S31540011F4016800017A81020011080000525100047B3 -S31540011F5080A6001A16800013DA04E0CCA206C01847 -S31540011F609014A2789210001180A4601F14BFFFF94B -S31540011F70B00620014000280901000000D805E10013 -S31540011F80C20320409B2D00118210400DC2232040E8 -S31540011F9080A6001A06BFFFF3A206C018DA04E0CCF9 -S31540011FA09606A003C0236004833AE01FC023601055 -S31540011FB098103FFF8330601EAA02C001D8236014E7 -S31540011FC0D823600CA2102000AD3D600280A72000FE -S31540011FD00280008AA810200180A4401C168000ECD3 -S31540011FE0C204E0CC80A7200104800015B010200077 -S31540011FF080A5A0000480001380A0001C9B2C6010CB -S31540012000832C60188210400D992C60088210400C78 -S3154001201082104011993D6002DA04E0CCC22360206F -S31540012020B006200180A72001048000059A036004C0 -S3154001203080A3001814BFFFFA0100000080A0001C15 -S31540012040B0603FFF80A6001A16800016C204E0CC9D -S315400120502501800080A72000028000058206C01865 -S3154001206080A72001028000848206C011C224200478 -S31540012070D804E0CC832D00189B3E4018C22320088B -S31540012080808B6001128000859A10000CB0062001F9 -S3154001209080A6001A06BFFFF180A72000C204E0CC4B -S315400120A0C0206008808E600112800009B0102000B7 -S315400120B0B006200180A6201F14800005833E4018EB -S315400120C08088600122BFFFFCB006200180A7200066 -S315400120D0028000068206C01880A720010280000403 -S315400120E08216E0208206C01182106020C22420049C -S315400120F0DA04E0CC832D0018C2236008C2036008CD -S3154001210080A0600012BFFFFE01000000C20420044F -S31540012110808860200280009801000000DA042004D3 -S3154001212003010000808B4001028000900100000005 -S31540012130DA04200403008000808B4001028000887D -S3154001214001000000C2042008C227BFF0DA04200CB7 -S31540012150DA27BFF4C204E0CC992D0018D8206008D4 -S315400121609A100001C203600880A0600012BFFFFE02 -S3154001217001000000C20420048088602002800075AE -S3154001218001000000DA04200403010000808B4001B5 -S315400121900280006D01000000DA0420040300800083 -S315400121A0808B40010280006501000000DA042008AE -S315400121B0C207BFF080A0400D02800004010000006C -S315400121C07FFFBC129010200EDA04200CC207BFF428 -S315400121D080A0400D02800005030180007FFFBC0BFB -S315400121E09010200F03018000C224200480A7200004 -S315400121F012BFFF7AA204600180A4600004BFFF7B86 -S3154001220080A7200110800062C204E0CC0280003D1C -S3154001221011100047B010200080A6001C16BFFF60B9 -S31540012220A8102001108000052510004780A6001C3B -S3154001223016BFFF5CDA04E0CCA206C0189014A2785F -S315400122409210001180A4601F14BFFFF9B00620014F -S315400122504000275201000000D805E100C20320409A -S315400122609B2D00118210400DC223204010BFFFF16B -S3154001227080A6001CF6242004D804E0CC832D001847 -S315400122809B3E4018C2232008808B600122BFFF81FC -S31540012290B00620019A10000CC203600880A06000BD -S315400122A012BFFFFE01000000DA0420040301000012 -S315400122B0808B40010280001E01000000DA042004E8 -S315400122C003008000808B400102800016010000005F -S315400122D0E4242004C20420048088401222BFFF6DFA -S315400122E0B00620017FFFBBC99010200710BFFF69D0 -S315400122F0B00620017FFFBBC59010200130BFFEF321 -S3154001230090122278400027259210001BDA05E10041 -S31540012310832F001BC223604010BFFF22DA04E0CCAA -S315400123207FFFBBBA9010200630BFFFEA7FFFBBB7E5 -S315400123309010200530BFFFE27FFFBBB49010200D07 -S3154001234030BFFF9B7FFFBBB19010200C30BFFF9386 -S315400123507FFFBBAE9010200B30BFFF8B7FFFBBAB27 -S315400123609010200A30BFFF787FFFBBA8901020094C -S3154001237030BFFF707FFFBBA59010200830BFFF68BC -S315400123807FFFBBA29010200330BFFEE0C020600C4F -S31540012390DA05E100C023604082103FFFC223600C92 -S315400123A081C7E00891E820009DE3BF983B100144B6 -S315400123B0E60761007FFFBB9090102011C024E01C0E -S315400123C0C204E01C80A060000280004801000000B9 -S315400123D0C204E01C8330601B80A0401A0A80003F83 -S315400123E001000000A410200080A4801A1A80004237 -S315400123F02D100143AA102001AE15A084A32CA002E2 -S31540012400E00640117FFFFD4490100013A804A0018F -S315400124109B2D4012832D20108210400DC224E01CBA -S315400124209A103FFFDA24E040D80600119A10201F87 -S31540012430DA232004A0043FFFDA230000A12C200464 -S315400124408204000C9A102005DA206010C020601426 -S31540012450EA2060189A100001C203601080A0600053 -S3154001246012BFFFFE01000000A004000CC2042010B0 -S3154001247080A0600002BFFFFE01000000C0242018BA -S31540012480C205A08480A06002028000069A04A011C1 -S31540012490900480127FFFBB5D900220039A04A01135 -S315400124A0C205E00480A0400D22800006A41000145D -S315400124B0900480127FFFBB5590022004A4100014A3 -S315400124C0C024E01C80A5001A0ABFFFCEA32CA0029F -S315400124D01080000ADA0761007FFFBB4C9010200292 -S315400124E010BFFFC2A41020007FFFBB4890102001FF -S315400124F030BFFFB8DA076100C023604082103FFF5A -S31540012500C223600C81C7E00891E820009DE3BF9893 -S315400125107FFFBB4D0100000080A220000280002603 -S3154001252080A6200012800029010000007FFFBB46E3 -S3154001253001000000912A20047FFFBB2F9002200357 -S315400125404000186C0100000080A220001280002B80 -S31540012550010000004000182A01000000400017E376 -S3154001256001000000400002260100000080A6A000F4 -S315400125701280002D031001447FFFBB33B410610468 -S31540012580912A2002C206800880A060001280003095 -S3154001259080A6200012800039010000004000048D11 -S315400125A00100000040001E0101000000400015C06E -S315400125B081E800007FFFBB0B1100400C80A6200084 -S315400125C002BFFFDB010000007FFFBBB7901000197F -S315400125D07FFFBB1D01000000912A20047FFFBB063F -S315400125E090022003400018430100000080A2200011 -S315400125F002BFFFD9010000007FFFBB0490102001FC -S31540012600400017FF01000000400017B8010000001C -S31540012610400001FB0100000080A6A00002BFFFD7D9 -S315400126200310014440001DEC010000000310014469 -S315400126307FFFBB05B4106104912A2002C2068008BF -S3154001264080A0600002BFFFD480A620007FFFBAFEB3 -S31540012650010000007FFFBAFCA0100008912A200269 -S31540012660C20680089FC040009010001080A620003E -S3154001267002BFFFCB010000007FFFBB9B90100019FA -S31540012680400004540100000040001DC80100000044 -S315400126904000158781E80000010000000310014356 -S315400126A0DA0060D09A036001DA2060D081C3E00885 -S315400126B0010000009DE3BF987FFFBACA1100404464 -S315400126C0D806200882103FFFC2262004DA06000001 -S315400126D0C206000080A340010280006FA60B2007BE -S315400126E08210201FC2262004C226000080A4E000DA -S315400126F00280003382100018A2100013C020601817 -S31540012700A2847FFF12BFFFFE82006010A21020004C -S3154001271080A440131680002B80A4E001A810200F4E -S31540012720A01000187FFFBAB490100011C0242010E9 -S31540012730E824201482102006C2242018DA0420102E -S3154001274080A3600F02800004010000007FFFBAAF42 -S3154001275090102003E82420189A10200EC20420105D -S3154001276080A0400D12BFFFFE010000009A837FFF4B -S315400127701CBFFFFBA4100010C204201080A0600FF4 -S3154001278012BFFFFE01000000C204201880886010BD -S315400127900280003582102010C224A018DA042018C5 -S315400127A0808B60101280003801000000A204600195 -S315400127B080A4401306BFFFDCA004201080A4E001E2 -S315400127C01480001080A4E0000280000782100018E7 -S315400127D0A2100013C0206018A2847FFF12BFFFFE23 -S315400127E08200601021100144C204210080A06000D3 -S315400127F00280002D111000491080000D9210001921 -S315400128007FFFBA7D901020088210200FC226201823 -S315400128109A10202FDA262028C206202080A0600D9B -S3154001282012BFFFFE80A4E00030BFFFE8400025DB79 -S315400128309012229C7FFFFC38D00421008210200197 -S3154001284083284019DA042100C22360409810200FE2 -S31540012850D82620148210200DC2262018A7800000F9 -S31540012860308000117FFFBA69901020048210201039 -S31540012870C224A018DA042018808B601022BFFFCD35 -S31540012880A20460017FFFBA619010200510BFFFC905 -S31540012890A20460017FFFBA5D9010200110BFFF9234 -S315400128A08210201F81C7E00881E800000000000077 -S315400128B000000000000000000000000000000000D1 -S315400128C001000000010000000100000001000000BD -S315400128D0010000000100000081C3E0080100000082 -S315400128E0010000000100000001000000010000009D -S315400128F0010000000100000081C3E0080100000062 -S31540012900010000000100000001000000010000007C -S31540012910010000000100000081C3E0080100000041 -S31540012920010000000100000001000000010000005C -S31540012930010000000100000081C3E0080100000021 -S31540012940D482018090A2000916BFFFFE9612800B29 -S3154001295081C3E0089010000BD48201C090A2000907 -S3154001296016BFFFFE9612800B81C3E0089010000B44 -S3154001297090A22004C0A201A090A22004C0A201A05E -S3154001298090A22004C0A201A090A22004C0A201A04E -S31540012990C0A2018090A2200414BFFFF701000000ED -S315400129A081C3E0080100000090A22004C0A201E01A -S315400129B090A22004C0A201E090A22004C0A201E09E -S315400129C090A22004C0A201E0C0A201C090A22004AE -S315400129D014BFFFF70100000081C3E00801000000B9 -S315400129E0981000089610000A98A3200814BFFFFF0C -S315400129F0D43B00099810000898A3200814BFFFFF94 -S31540012A00C01B00099810000898A32004D6030009AA -S31540012A1080A2C00A1280000698A3200434BFFFFD9D -S31540012A20D603000981C3E0089010200090102001D0 -S31540012A30981000089610000A98A3200814BFFFFFBB -S31540012A40D43B00099810000898A32004D603000936 -S31540012A5080A2C00A1280000698A3200434BFFFFD5D -S31540012A60D603000981C3E008901020009010200190 -S31540012A709810000898A32004D2A301A0DA8301A0EC -S31540012A8080A340091280000698A3200414BFFFFCCE -S31540012A90D2A301A081C3E00890102000901020012C -S31540012AA09A1000089AA3400AD6A34180D883418050 -S31540012AB0981B000B988B0009128000069AA3400AC6 -S31540012AC014BFFFFBD6A3418081C3E00890102000CC -S31540012AD0901020019A1000089AA3400BD8A241CD2C -S31540012AE0C48241CD8418800C8488800A12800006F5 -S31540012AF09AA3400B14BFFFFBD8A241CD81C3E00886 -S31540012B0090102000901020010100000001000000FB -S31540012B10010000001310008092126138D402400077 -S31540012B2080A2A0011280000780A0A002D40240002A -S31540012B30D4024000952AA002108000050100000041 -S31540012B403280000381E80000D402400081E00000A9 -S31540012B5093480000818A60202310004AA2146378BA -S31540012B60A40460040100000081C4400081CC8000BF -S31540012B7091D0200191D020012680000590002001AE -S31540012B8090222001912A2001912A200281C3E00846 -S31540012B900100000081C3E008D082004081C3E00803 -S31540012BA0D2A2004081C3E008D082018081C3E008FF -S31540012BB0D2A2018081C3E008D08201A081C3E0088E -S31540012BC0D2A201A081C3E008D08201C081C3E0083E -S31540012BD0D2A201C081C3E008D08201E081C3E008EE -S31540012BE0D2A201E081C3E008D2A2000081C3E0087D -S31540012BF0D082000081C3E00891480000818A00002C -S31540012C0001000000010000000100000081C3E0084E -S31540012C100100000081C3E008C0A000A081C3E00814 -S31540012C20C0A000C081C3E008D01A00000100000026 -S31540012C300100000001000000010000000100000049 -S31540012C409DE3BF7013100072CD1A6260CD3FBFE0A5 -S31540012C50111000801B100080C91B61E0C51A21D8E4 -S31540012C60C11FBFE095A088C4D53FBFF0D91FBFF0B3 -S31540012C7003100080D11861E881AB0A4801000000C9 -S31540012C800380002BC13FBFD8F91FBFD8B5A0055C53 -S31540012C90F53FBFF0ED1FBFF0F11FBFF0A5A5895865 -S31540012CA0E91FBFE0A1A488D415100072A1A001308C -S31540012CB0DD1AA26881AC0ACE010000000D80002D0C -S31540012CC0F53FBFD0C51FBFD083A018C291A04921EF -S31540012CD099A01928D51FBFE091A308CA1710007201 -S31540012CE091A00128FD1AE27081AA0ADE01000000C6 -S31540012CF00D80002F01000000400001AE01000000E0 -S31540012D004000020C0100000080A220001280003128 -S31540012D1001000000400002610100000080A2200085 -S31540012D200280003501000000308000317FFFB93755 -S31540012D3090102001F91FBFD8B5A0055CF53FBFF043 -S31540012D40ED1FBFF0F11FBFF0A5A58958E91FBFE0F0 -S31540012D50A1A488D415100072A1A00130DD1AA26881 -S31540012D6081AC0ACE010000001BBFFFD7F53FBFD0A3 -S31540012D707FFFB92690102002C51FBFD083A018C27D -S31540012D8091A0492199A01928D51FBFE091A308CA4E -S31540012D901710007291A00128FD1AE27081AA0ADE7D -S31540012DA0010000001BBFFFD5010000007FFFB917DE -S31540012DB0901020034000017F01000000400001DD2A -S31540012DC00100000080A2200002BFFFD301000000E5 -S31540012DD07FFFB90E010000004000023001000000F3 -S31540012DE080A2200002800004010000007FFFB90795 -S31540012DF09010200581C7E00881E800009DE3BF9857 -S31540012E007FFFFF7D210000047FFFFF7D90120010B0 -S31540012E107FFFFF79B0102000808A00100280000BEE -S31540012E209010200040000267010000007FFFB906B4 -S31540012E3001000000912A20047FFFB8EF900220088C -S31540012E407FFFFF800100000081C7E00881E80000A4 -S31540012E501910008098132178111002009210200059 -S31540012E60150FF76C9412A3D7D03B0000D42320084A -S31540012E70C11B0000C503200887A08922010000006C -S31540012E8089A005408DA0892281A8CA26010000009B -S31540012E9033800003901020009010200181C3E00888 -S31540012EA001000000C11A0000C51A400089A008426D -S31540012EB081C3E008C93A8000C11A0000C51A400022 -S31540012EC089A0094281C3E008C93A800019100080EF -S31540012ED098132178D0230000D2232008C103000093 -S31540012EE0C303200885A00D2181C3E008C53A8000AF -S31540012EF0C11A0000C51A400089A009C2C93A80001A -S31540012F0081C3E00801000000C11A000085A0054008 -S31540012F10C53A400081C3E0080100000001000000FD -S31540012F200100000001000000010000000100000056 -S31540012F300100000001000000010000000100000046 -S31540012F400100000001000000010000000100000036 -S31540012F500100000001000000010000000100000026 -S31540012F600100000001000000010000000100000016 -S31540012F700100000001000000010000000100000006 -S31540012F8001000000010000000100000001000000F6 -S31540012F9001000000010000000100000081A00020A6 -S31540012FA081C3E00801000000C11A000081C3E008A6 -S31540012FB001000000C51A000089A009C2C93A4000B3 -S31540012FC081C3E0080100000013100080921261786D -S31540012FD0D0224000C102400085A01900C53A4000F8 -S31540012FE081C3E008D01A4000131000809212617824 -S31540012FF0D0224000C102400085A01880C522400071 -S3154001300081C3E008D0024000151000809412A178D7 -S31540013010D03A8000C11A800085A01A40C52280009E -S3154001302081C3E008D0028000151000809412A17877 -S31540013030D0228000C102800085A01A20C5228000CE -S3154001304081C3E008D0028000151000809412A17857 -S31540013050D0228000C102800081A01920C13A80009F -S3154001306081C3E008D01A8000151000809412A1781F -S31540013070D03A8000C11A800081A018C0C1228000C8 -S3154001308081C3E008D0028000151000809412A17817 -S31540013090D0228000CB0280008DA00025CD22800069 -S315400130A081C3E008D0028000151000809412A178F7 -S315400130B0D0228000CB0280008DA000A5CD228000C9 -S315400130C081C3E008D0028000151000809412A178D7 -S315400130D0D0228000CB0280008DA00125CD22800028 -S315400130E081C3E008D002800019100080981321782E -S315400130F0D03B0000D43B2008C11B0000C51B200863 -S3154001310081A80A4201000000338000099010200086 -S3154001311029800007901020012D8000059010200283 -S315400131202F8000039010200391D0200081C3E00836 -S31540013130010000001910008098132178D03B00004F -S31540013140D43B2008C11B0000C51B200881A80AC228 -S315400131500100000033BFFFF69010200029BFFFF4A5 -S31540013160901020012DBFFFF2901020022FBFFFF0DB -S315400131709010200391D020001910008098132178D7 +S315400100009DE3BF8099362010D827BFE0AF36200840 +S31540010010EE27BFE4AF366008C607A05CEE27BFEC0B +S31540010020AF36E018C407A060EE27BFF499366010DA +S31540010030AF30E008D827BFE8EE27BFFC8800A026EE +S31540010040EE07A06C993920089736A010D827BFF043 +S315400100501300003F9936E008921263FFA00E800913 +S31540010060A002C010D827BFF89B36E01098090009B6 +S31540010070900EC0091F0000239E13E1119E04000F3C +S315400100809E03C00D9003C0089802000CA1332010B6 +S31540010090980B00099804000C920B00099933201023 +S315400100A0BB2F601292030009992F2011BA17400CF9 +S315400100B0C207A0689008A3FF912A20079817400815 +S315400100C0BA00A034FA25C000EE07BFE09400A012A2 +S315400100D092380009AD36A018EE284000AB36A0088C +S315400100E0A73AA008EE07BFE4F0286002A9326008EB +S315400100F09F30E018EE286001A5332018A33B20105D +S31540010100EE07BFE8A13B20089130E01080A7200010 +S31540010110EE286003EE07BFECF2286005EE28600486 +S31540010120EE07BFF0EE286010EE07BFF4EE28601A26 +S31540010130EE07BFF8C8286011C028600A88103FDE64 +S31540010140EE28601CC028600DC028600FC0286012D0 +S31540010150C828600688103FADC828600788103FBE92 +S31540010160C828600888103FEFC828600988102020F9 +S31540010170C828600B88102008C828600C88102045C4 +S31540010180C828600E88102040C0286013C828601611 +S31540010190C0286014C0286015DA28601B8810201119 +S315400101A0C8286017EE07A064F628601DEC28601E7B +S315400101B0EA286020E8286018D2286019E6286026D7 +S315400101C0D4286027E428602CE228602DE028602EA0 +S315400101D0D828602FDE286030D0286031C807BFFCA0 +S315400101E0C6286033D628601FF4286021C8286032AB +S315400101F0C0286022C0286023C0286024C02860250A +S31540010200C0286028C0286029C028602A0280000DC5 +S31540010210C028602B80A0A0000280000A8810200020 +S31540010220861020009A004004C80DC0048600E001F3 +S3154001023080A0C002C82B603412BFFFFB88100003A8 +S3154001024081C7E00881E800009DE3BD2040002A9473 +S315400102509010200025100124A2100008A814A0D057 +S3154001026040002A8F90102004A01000087FFFC3DFB2 +S315400102701100407482103FDEC22D200482103FAD32 +S31540010280C22D200582103FBEC22D200682103FEFAF +S31540010290C02D2008C22D200782102020C22D200902 +S315400102A0F024A0D04000028A90100014D0052010FE +S315400102B0D404A0D0400001C292102000AC9220008C +S315400102C00680017E01000000D0052010D604A0D092 +S315400102D01500001092102000400001F89415800A84 +S315400102E082103FDEC22FBE9EC22FBE9882103FAD06 +S315400102F0C22FBE9FC22FBE9982103FBEC22FBEA043 +S31540010300C22FBE9A82103FEFC22FBEA1C22FBE9B03 +S3154001031082102020C02FBE9CC22FBEA3C22FBE9DDD +S31540010320C02FBEA282103FF2C02FBEA4C22FBEA5CF +S31540010330A607BE988210200EC22CC0018200600121 +S3154001034080A0610032BFFFFEC22CC001AA07BD9842 +S31540010350AE14A0D090100015400003C692100017AD +S3154001036080A2200002BFFFFD9010001590102100D1 +S3154001037092100013400003729410001780A22000CF +S3154001038002BFFFFC90102100901000109210001146 +S31540010390400004019410001780A2200002BFFFFC18 +S315400103A090100010C204000080A061000280000588 +S315400103B0AE1020007FFFC39B90102001AE1020009D +S315400103C0848DE0031280000580A0A002AC05401791 +S315400103D0EC85802080A0A002028000098335A00818 +S315400103E080A0A003028000068210001680A0A00112 +S315400103F0028000038335A0108335A018C40CC017B2 +S31540010400820860FF80A0800122800005AE05E001E0 +S315400104107FFFC38490102002AE05E00180A5E10074 +S3154001042012BFFFE9848DE003C205201480A060005D +S3154001043002800120B010200003100124EE0060D09C +S31540010440AE05E01CEE85C02040002A159010210023 +S3154001045082103FFFC22A201EC22A0000C22A200162 +S31540010460C22A2002C22A2003C22A2004C22A200507 +S3154001047082103FDEC22A2016C22A200682103FADD4 +S31540010480C22A2017C22A200782103FBEC22A20183C +S31540010490C22A200882103FEFC22A2019C22A200907 +S315400104A082102020C22A201BC22A200B821020083B +S315400104B0C22A2010C22A200C82102006C22A2012EB +S315400104C0C22A200D82102001C02A200AC22A2015E4 +S315400104D0C22A200FC02A200EC02A2011C02A201469 +S315400104E0C02A201A8210202AC22400008210200429 +S315400104F08935E018C22A20138735E01082103FDD86 +S315400105008535E008C22A201C82103FEEC22A201DF2 +S3154001051082103FCCC22A201FC02A2020C82A20266A +S31540010520C62A2027C42A2028C02A2021C02A2022C0 +S31540010530C02A2023C02A2024C02A2025EE2A202989 +S31540010540AC100008A814A0D0901000154000034933 +S315400105509210001480A2200002BFFFFD90100015EA +S31540010560D004000092100016400002F594100014C9 +S3154001057080A2200022BFFFFCD00400009010001092 +S3154001058092100011400003849410001480A22000B0 +S3154001059002BFFFFC90100010B807BDAEF88F0020D7 +S315400105A08607BDAFC688C0208407BDB0C4888020F9 +S315400105B00300003F8408A0FF821063FFB80F20FFAD +S315400105C08728E018B92F20108738E010BA07BDB147 +S315400105D08608C001B8170003B8170002FA8F4020F9 +S315400105E08607BDB2C688C0208407BDB3C4888020B3 +S315400105F08728E0188738E0108208C001BA0F60FFEB +S31540010600BB2F6010BA1740018208A0FFB607BF98FA +S31540010610BA174001C023A060C023A064EC23A068A0 +S31540010620E023A06CF623A05C9010001C9210001DE4 +S315400106309410001796100017981020007FFFFE7146 +S315400106409A102000901000154000030A92100014E1 +S3154001065080A2200002BFFFFD90100015D0040000CB +S3154001066092100016400002B69410001480A2200099 +S3154001067022BFFFFCD0040000901000109210001120 +S31540010680400003459410001480A2200002BFFFFCE5 +S31540010690901000108607BDC4C688C020B207BDC5EC +S315400106A0C28E40208407BDC6C4888020A807BDC726 +S315400106B0E88D0020820860FF83286010A80D20FF86 +S315400106C08728E0188528A018A81500038538A010AA +S315400106D0A81500010300003F821063FF82088001D4 +S315400106E0A815000103000080808D0001833520128A +S315400106F002800003B4006001B4100001821020485A +S31540010700F623A05CE623A064EC23A068E023A06C5A +S31540010710C223A0609010001C9210001D9410001777 +S3154001072096100017981020019A10001A7FFFFE3587 +S31540010730B014A0D090100015400002CE92100018BF +S3154001074080A2200002BFFFFD90100015D0040000DA +S31540010750921000164000027A9410001880A22000E0 +S3154001076022BFFFFCD004000090100010921000112F +S31540010770400003099410001880A2200002BFFFFC2C +S3154001078090100010F28E4020808E60021280004F41 +S315400107900100000082102048F623A05C9410001747 +S315400107A0C023A064EC23A068E023A06C9010001C39 +S315400107B09210001D9A06A001A414A0D0C223A060E5 +S315400107C0961000177FFFFE0F98102000901000151D +S315400107D0400002A89210001280A2200002BFFFFD35 +S315400107E090100015D00400009210001640000254EB +S315400107F09410001280A2200022BFFFFCD00400000A +S315400108009010001092100011400002E39410001263 +S3154001081080A2200002BFFFFC90100010C20400001D +S3154001082080A0607C02800005A207BDCC7FFFC27D0F +S3154001083090102004A207BDCCA0102000848C200378 +S315400108401280000480A0A002E884402080A0A0027B +S31540010850A2046001028000098335200880A0A0031C +S31540010860028000068210001480A0A00102800003CD +S315400108708335201083352018C40CC010820860FFD0 +S3154001088080A0800122800005A00420017FFFC2656F +S3154001089090102005A004200180A4204812BFFFE942 +S315400108A0848C200390100016400028F6B0102000DA +S315400108B081C7E00881E800007FFFC25A90102000FE +S315400108C010BFFE83D00520107FFFC2569010200333 +S315400108D010BFFFB2821020489DE3BF98F027A04485 +S315400108E0C207A044C2804020C227BFFCC207BFFC4A +S315400108F0B010000181E8000081C3E008010000005A +S315400109009DE3BFA0F027A044F227A048C207A04418 +S31540010910C407A048C420400081E8000081C3E00824 +S31540010920010000009DE3BF90F027A044C207A04408 +S315400109308328600190100001400028D90100000081 +S3154001094082100008C227BFF4C407BFF4C207A044FF +S3154001095084008001C207A0448220000182088001F0 +S31540010960C227BFF4C207BFF4C227BFF8C027BFFCE6 +S315400109701080000A01000000C207BFFC8328600303 +S31540010980C407BFF882008001C0204000C207BFFCF7 +S3154001099082006001C227BFFCC207BFFC80A0607F06 +S315400109A004BFFFF601000000C207BFF4B01000010A +S315400109B081E8000081C3E008010000009DE3BF9883 +S315400109C0F027A044F227A048F427A04CC207A04C28 +S315400109D082006010901000017FFFFFC001000000FF +S315400109E082100008C227BFFCC207BFFC820860080C +S315400109F080A0600012BFFFF601000000C207A044BC +S31540010A008528600BC207A0488208601F83286006BC +S31540010A108210800182106002C227BFFCC207A04C2F +S31540010A208200601090100001D207BFFC7FFFFFB526 +S31540010A3001000000C207A04C820060109010000126 +S31540010A407FFFFFA60100000082100008C227BFFCFD +S31540010A50C207BFFC8208600880A0600012BFFFF693 +S31540010A6001000000C207BFFC8208601080A0600040 +S31540010A701280000D01000000C207A04C82006010E8 +S31540010A80901000017FFFFF950100000082100008D1 +S31540010A90C227BFFCC207BFFC833060101080000331 +S31540010AA00100000082103FFFB010000181E8000004 +S31540010AB081C3E008010000009DE3BF98F027A044F0 +S31540010AC0F227A048F427A04CF627A050C207A05011 +S31540010AD082006010901000017FFFFF80010000003E +S31540010AE082100008C227BFFCC207BFFC820860080B +S31540010AF080A0600012BFFFF601000000C207A04CB3 +S31540010B0085286010C207A0448328600B84108001A9 +S31540010B10C207A0488208601F8328600682108001B0 +S31540010B2082106001C227BFFCC207A050820060103C +S31540010B3090100001D207BFFC7FFFFF720100000049 +S31540010B40C207A05082006010901000017FFFFF6332 +S31540010B500100000082100008C227BFFCC207BFFC8B +S31540010B608208600880A0600012BFFFF60100000005 +S31540010B7081E8000081C3E008010000009DE3BFA0B9 +S31540010B80F027A044F227A048C207A048C408400065 +S31540010B90C207A044C4286004C207A048820060017D +S31540010BA0C4084000C207A044C4286005C207A04843 +S31540010BB082006002C4084000C207A044C4286006FF +S31540010BC0C207A04882006003C4084000C207A0448F +S31540010BD0C4286007C207A04882006004C4084000D8 +S31540010BE0C207A044C4286008C207A0488200600525 +S31540010BF0C4084000C207A044C4286009C207A044F3 +S31540010C00C20040008200600884100001C207A0486B +S31540010C10C2084000820860FF87286008C207A048D2 +S31540010C2082006001C2084000820860FF8210C00154 +S31540010C3090100002921000017FFFFF320100000078 +S31540010C40C207A044C20040008200600C841000012B +S31540010C50C207A04882006002C2084000820860FFC5 +S31540010C6087286018C207A04882006003C208400076 +S31540010C70820860FF832860108610C001C207A04821 +S31540010C8082006004C2084000820860FF8328600831 +S31540010C908610C001C207A04882006005C208400014 +S31540010CA0820860FF8210C00190100002921000017C +S31540010CB07FFFFF140100000082102001B0100001E7 +S31540010CC081E8000081C3E008010000009DE3BF8880 +S31540010CD0F027A044C207A044C20040009010000182 +S31540010CE07FFFFEFE0100000082100008C227BFEC14 +S31540010CF0C207BFEC8330601B84086001C207A04471 +S31540010D00C420600CC207BFEC8530601FC207A044F7 +S31540010D10C4206014C207A044C200601480A06000D1 +S31540010D201280001401000000C207A044C200400026 +S31540010D3090100001921020407FFFFEF2010000005A +S31540010D40C207A044C2004000901000017FFFFEE3AD +S31540010D500100000082100008C227BFECC207BFECA9 +S31540010D608208604080A0600012BFFFF601000000CB +S31540010D70C207A044C20040008200601090100001EA +S31540010D807FFFFED60100000082100008C227BFEC9B +S31540010D90C207BFEC8330600B8408601FC207A044C2 +S31540010DA0C4206010901024007FFFFEDF0100000088 +S31540010DB08210000884100001C207A044C4206018B4 +S31540010DC0901024007FFFFED8010000008210000829 +S31540010DD084100001C207A044C420601CC207A0447D +S31540010DE0C20040008200601484100001C207A04482 +S31540010DF0C200601890100002921000017FFFFEC1F0 +S31540010E0001000000C207A044C200400082006018F1 +S31540010E1084100001C207A044C200601C9010000269 +S31540010E20921000017FFFFEB701000000C207A044F7 +S31540010E30C0206020C207A044C0206024C207A0444D +S31540010E40C0206028C207A044C020602CC207A0442D +S31540010E50C200601480A0600012800096010000006C +S31540010E60C207A044C200601084100001C207A0441A +S31540010E70C200400090100002921020001500002090 +S31540010E80961000017FFFFF0D01000000C207A0443C +S31540010E90C200601084100001C207A044C200400095 +S31540010EA09010000292102000941000017FFFFEC4B2 +S31540010EB00100000082100008C227BFECC407BFEC46 +S31540010EC0030000208208800180A0600012BFFFF06D +S31540010ED001000000C027BFF0C407BFEC03000004B7 +S31540010EE08208800180A060000280001F010000008E +S31540010EF01080000B01000000C207BFF082006001B4 +S31540010F00C227BFF0C407BFF0030000308210635010 +S31540010F1080A080011480001301000000C207A04494 +S31540010F20C200601084100001C207A044C200400004 +S31540010F309010000292102001941000017FFFFEA044 +S31540010F4001000000821000088208602080A0600035 +S31540010F5002BFFFEA0100000010800003010000000B +S31540010F6001000000C207A044C200601084100001C5 +S31540010F70C207A044C2004000901000029210200017 +S31540010F80941000017FFFFE8E0100000082100008D0 +S31540010F90C227BFECC207A044C200600C80A060001B +S31540010FA00280001201000000C407BFEC03000008E4 +S31540010FB08208800180A060001280000C01000000C0 +S31540010FC0C207BFEC8208604080A060000280000733 +S31540010FD00100000082102001C227BFFCC027BFF8D4 +S31540010FE01080001F01000000C407BFEC0300000889 +S31540010FF08208800180A060000280000C0100000090 +S31540011000C207BFEC8208604080A0600012800007E2 +S3154001101001000000C027BFFC82102001C227BFF893 +S315400110201080000F01000000C407BFEC0300000858 +S315400110308208800180A06000128000090100000042 +S31540011040C207BFEC8208604080A0600012800004A5 +S3154001105001000000C027BFFCC027BFF8C207BFEC94 +S315400110608330600882086001C227BFF4C207A044EA +S31540011070C200400084100001C207BFF48728600403 +S31540011080C207BFF8832860078610C001C207BFFCAC +S31540011090832860088210C00190100002921000015E +S315400110A07FFFFE18010000001080001C01000000B7 +S315400110B0C027BFF01080001501000000C207A04400 +S315400110C0C200400082006010901000017FFFFE03C5 +S315400110D00100000082100008C227BFECC207BFEC26 +S315400110E08208600880A060000280000501000000BF +S315400110F0C027BFF01080000501000000C207BFF005 +S3154001110082006001C227BFF0C207BFF080A0600223 +S3154001111004BFFFEB01000000C207A0448200600447 +S31540011120D007A044921000017FFFFE950100000008 +S3154001113081E8000081C3E008010000009DE3BFA0F3 +S31540011140F027A044F227A048F427A04CC207A04CA0 +S31540011150C4006018C207A04CC20060208328600307 +S3154001116082008001901000017FFFFDDC010000003C +S31540011170821000088208680080A060000280000595 +S31540011180010000008210200010800036010000009E +S31540011190C207A04CC4006018C207A04CC200602020 +S315400111A08328600382008001C407A048C4206004EC +S315400111B0C207A04CC200602080A0607F1280001050 +S315400111C001000000C207A04CC4006018C207A04C31 +S315400111D0C20060208328600382008001C607A044C4 +S315400111E0050000068410C002C4204000C207A04C7E +S315400111F0C02060201080001001000000C207A04CF2 +S31540011200C4006018C207A04CC20060208328600356 +S3154001121082008001C407A0448410A800C420400075 +S31540011220C207A04CC200602084006001C207A04CE6 +S31540011230C4206020C207A04CE0004000C207A04C79 +S31540011240C2004000901000017FFFFDA40100000094 +S315400112508210000882106001C22400008210200121 +S31540011260B010000181E8000081C3E00801000000E0 +S315400112709DE3BFA0F027A044F227A048C207A0489B +S31540011280C400601CC207A048C200602483286003D2 +S3154001129082008001901000017FFFFD900100000057 +S315400112A0821000088208680080A060000280000564 +S315400112B00100000082102000108000330100000070 +S315400112C0C207A048C400601CC207A048C2006024EF +S315400112D08328600382008001C407A044C4206004BF +S315400112E0C207A048C200602480A0607F1280000E21 +S315400112F001000000C207A048C400601CC207A04804 +S31540011300C200602483286003820080010500000634 +S31540011310C4204000C207A048C02060241080000FAE +S3154001132001000000C207A048C400601CC207A048D3 +S31540011330C200602483286003820080018410280053 +S31540011340C4204000C207A048C20060248400600156 +S31540011350C207A048C4206024C207A048E00040005C +S31540011360C207A048C2004000901000017FFFFD5B0C +S31540011370010000008210000882106002C2240000B1 +S3154001138082102001B010000181E8000081C3E0080D +S31540011390010000009DE3BF98F027A044F227A04832 +S315400113A0F427A04CC207A04CC400601CC207A04C45 +S315400113B0C200602C832860038200800190100001E6 +S315400113C07FFFFD460100000082100008C227BFFCD6 +S315400113D0C207BFFC8208680080A060001280001727 +S315400113E001000000C207BFFC840867FFC207A04492 +S315400113F0C4204000C207A04CC200602C80A0607F80 +S315400114001280000601000000C207A04CC020602CDB +S315400114101080000701000000C207A04CC200602CEA +S3154001142084006001C207A04CC420602C82102001B8 +S31540011430108000030100000082102000B01000015E +S3154001144081E8000081C3E008010000009DE3BF98E8 +S31540011450F027A044C207A044C4006018C207A044B4 +S31540011460C200602883286003820080019010000139 +S315400114707FFFFD1A0100000082100008C227BFFC51 +S31540011480C207BFFC8208680080A06000128000137A +S3154001149001000000C207A044C200602880A0607F0E +S315400114A01280000601000000C207A044C020602847 +S315400114B01080000701000000C207A044C200602856 +S315400114C084006001C207A044C42060288210200124 +S315400114D0108000030100000082102000B0100001BE +S315400114E081E8000081C3E008010000009DE3BFA040 +S315400114F07FFFBF3E1100403080A22000128000AF26 +S3154001150082102001C226200CC0262004C0260000DD +S31540011510C026200882102002C2262008C0260000CC +S31540011520C026000082102003C22620088210208394 +S31540011530C226200882102000C026000082006001D9 +S3154001154080A0606412BFFFFD0100000082102000F0 +S31540011550C40600008200600180A0606412BFFFFDE6 +S315400115600100000082102002C2262008A0062004A5 +S31540011570C28400208088600402BFFFFE0100000093 +S31540011580C0262008C0260000C28400208410200105 +S31540011590833860148208603F80A0600102800004A5 +S315400115A0A21020011080000E82102003C0260000E8 +S315400115B0A200A001C2840020833860148208603FE3 +S315400115C080A0401122BFFFFA8410000180A460016F +S315400115D034800002A210000282102003C226200895 +S315400115E0C28400208208600780A06006028000084D +S315400115F001000000C2860020C284002082086007E4 +S3154001160080A0600612BFFFFC01000000C026200832 +S31540011610C026200480A46001048000048210203486 +S31540011620C284002082102034C2260000C2840020D9 +S31540011630C284002080A46001048000198210200128 +S3154001164029100074A4102001A815215090100012F1 +S31540011650400024DA92102041C24D0008C226000003 +S31540011660A404A00180A4801112BFFFFA90100012B9 +S31540011670C2840020C2840020833860148208603FFF +S3154001168080A0401102800004010000007FFFBEE5FA +S3154001169090102006C284002082102001C226200C10 +S315400116A0C28400208088600112800053821020830A +S315400116B0C226200880A46001028000420100000089 +S315400116C0C28400208088640002BFFFFE0100000042 +S315400116D0C2840020808860010280004F80A460019E +S315400116E00480005280A46000C28400208330601AC6 +S315400116F080A0401102800004010000007FFFBEC9A6 +S3154001170090102009C2840020808861000280004A2E +S3154001171001000000C2840020808864000280004CE1 +S315400117200100000029100074A4102000A8152150C2 +S31540011730E686002092102041400024A0901000121D +S31540011740C24D000880A0401322800005A404A001D8 +S315400117507FFFBEB49010200CA404A00180A44012C7 +S3154001176014BFFFF480A460010480000F0100000053 +S31540011770C2840020808861001280003F0100000081 +S31540011780C28400208330601A80A060001280003736 +S3154001179001000000C284002080886400128000306D +S315400117A001000000E0840020808C20011280000EA0 +S315400117B001000000C026200881C7E00891E820000A +S315400117C0C28400208088600112BFFFC20100000070 +S315400117D0C28400208088600102BFFFFA0100000038 +S315400117E030BFFFBC7FFFBE8F9010200CC026200863 +S315400117F030BFFFF27FFFBE8B9010200782102083FF +S31540011800C226200880A4600112BFFFAE010000007D +S3154001181030BFFFEC7FFFBE839010200880A460019B +S3154001182014BFFFB280A4600034BFFFC0291000740A +S3154001183030BFFFDD7FFFBE7B9010200AC2840020AF +S315400118408088640032BFFFB9291000747FFFBE75DE +S315400118509010200B10BFFFB5291000747FFFBE7199 +S315400118609010200B30BFFFD07FFFBE6E9010200E30 +S3154001187030BFFFC97FFFBE6B9010200D30BFFFC147 +S3154001188003100123C40060848528A0028610608469 +S3154001189090022010D020C002C40060848400A001C0 +S315400118A0C420608481C3E00801000000C02200001A +S315400118B0C022204082103FFFC222200C0310012388 +S315400118C084102001C420608481C3E0080100000027 +S315400118D003100123C20060CC90102000C020600894 +S315400118E081C3E008010000009DE3BFA0231001244D +S315400118F0E00461007FFFBE4490102011C024201CEB +S31540011900C204201C80A060000280004C010000003F +S31540011910C204201C8330601B80A0401A0A80004EFE +S3154001192080A6A0000280003FC20461002B10012363 +S31540011930A6102004AA156084BA102000A410200025 +S31540011940AE103FFFA8102001AC10201FB810200593 +S31540011950BB2F6002C606401DC0240000C0242040A3 +S31540011960EE24200CE8254000832D0012A404A0019A +S31540011970852CA01082108001C224201CEE24204018 +S315400119808928E0049A00FFFFC206001D9800400422 +S315400119909B2B60048400400DEC206004EC20400049 +S315400119A0F8204004C0232004E820A018C4004004C5 +S315400119B080A0A00012BFFFFE010000008728E004BE +S315400119C0C400400380A0A00002BFFFFE010000004A +S315400119D08200400DC0206018C205400080A0600210 +S315400119E002800004010000007FFFBE0E9004FFFF4D +S315400119F0C40560048204A01080A080010280000416 +S31540011A00BA1000127FFFBE0790100013C024201C9D +S31540011A1080A6801218BFFFCFA604E002C20461006F +S31540011A2084103FFFB0102000C0206040C420600CED +S31540011A3081C7E00881E800007FFFBDFA90102001D0 +S31540011A40C204201C8330601B80A0401A1ABFFFB617 +S31540011A5080A6A0007FFFBDF39010200210BFFFB506 +S31540011A602B1001239DE3BF80231001232110012464 +S31540011A70E6042100A404E100C204A004F02460CCE1 +S31540011A807FFFBDE190102010C204A0040501800033 +S31540011A908410A02080884002128001450100000088 +S31540011AA0C404E100C204E10080A080010280000577 +S31540011AB0821020017FFFBDDB9010200282102001A1 +S31540011AC0C224A004C404E100C204E10080A0800154 +S31540011AD00280014201000000C024A004C404E100C8 +S31540011AE0C204E10080A080010280000580A7200099 +S31540011AF07FFFBDCC9010200480A7200012800111E9 +S31540011B0080A7200180A6A0010480001A2F1000465C +S31540011B10A606E001AE15E0D0A8102001AC142100C4 +S31540011B2010800005AA10200180A6801404800011AF +S31540011B30A604E00180A4E01F34BFFFFCA8052001F4 +S31540011B4092100013400028C690100017C20580006D +S31540011B50C4006040872D40138410C002C4206040F9 +S31540011B60A805200180A6801414BFFFF3A604E00156 +S31540011B7080A0001C84603FFFC427BFF0C60460CC30 +S31540011B8082103FFFF627BFF8C027BFFCC020E00404 +S31540011B90C020E010C220E014C220E00C8206A0035F +S31540011BA08538601F8530A01E82008001AF386002F3 +S31540011BB0C207BFF08200401B8416E020C227BFEC5B +S31540011BC0C427BFE829100123AC102001A81520CC59 +S31540011BD0310100003B0080002B01800080A72000DE +S31540011BE002800003821020018210001CC407BFFC42 +S31540011BF080A08001168000CB80A7200104800016BA +S31540011C0080A5E00004800014C207BFFCC407BFFCE6 +S31540011C108928601883286010881100018328A0084C +S31540011C20881100028400E0248811000182102001FD +S31540011C30C820E0201080000680A04017C820800000 +S31540011C40820060018400A00480A0401712BFFFFCFF +S31540011C5001000000C207BFF0E827BFF480A680015B +S31540011C60A2100001048000338400E0081080000EB9 +S31540011C70E607BFECE624A004832D8011C220E008CC +S31540011C80833E401180886001128000138400E00881 +S31540011C90A204600180A6801104800026A604E0010A +S31540011CA0C605000080A7200002BFFFF380A72001E0 +S31540011CB002800079C407BFF8C424A004832D801193 +S31540011CC0C220E008833E40118088600102BFFFF1D7 +S31540011CD08400E008C200800080A0600012BFFFFEC1 +S31540011CE001000000C204A0048088401802800067F9 +S31540011CF001000000C204A0048088401D02800060EB +S31540011D0001000000EA24A004C204A0048088401512 +S31540011D101280005601000000C40500008400A0089E +S31540011D20A204600180A6801114BFFFDEA604E00173 +S31540011D30C020800010800005A210200080A46020F1 +S31540011D400280000780A72000833E40118088600101 +S31540011D5022BFFFFBA204600180A720001280005130 +S31540011D6080A720018204401B82106020C224A00467 +S31540011D70A32D8011E2208000C200800080A0600077 +S31540011D8012BFFFFE01000000C204A004808860204B +S31540011D900280005D01000000C204A0048088401852 +S31540011DA00280005601000000C204A0048088401D44 +S31540011DB00280004E01000000C207BFF4C40040008B +S31540011DC0C204A008E604A00C8600A008E220A008F0 +S31540011DD0C400C00080A0A00012BFFFFE01000000A9 +S31540011DE0C404A0048088A0202280003CC227BFE40E +S31540011DF0C404A0048088801822800034C227BFE42E +S31540011E00C404A0048088801D2280002CC227BFE420 +S31540011E10C404A00880A04002028000040100000022 +S31540011E207FFFBD009010200EC204A00C80A4C0010B +S31540011E3002800005C407BFF47FFFBCFA9010200F53 +S31540011E40C407BFF4C207BFFCC6008000C407BFF881 +S31540011E50820060018400A001EA24A004C227BFFCDD +S31540011E6010BFFF5FC427BFF87FFFBCEE901020076D +S31540011E70C405000010BFFFAB8400A0087FFFBCE98A +S31540011E809010200630BFFFA07FFFBCE690102005D2 +S31540011E9030BFFF99F624A00410BFFF79832D80112E +S31540011EA00280001CC607BFF88210E020C224A004AD +S31540011EB010BFFFB1A32D80117FFFBCDA9010200D1A +S31540011EC010BFFFD4C207BFE47FFFBCD69010200CE1 +S31540011ED010BFFFCCC207BFE47FFFBCD29010200BDE +S31540011EE010BFFFC4C207BFE47FFFBCCE9010200ADB +S31540011EF010BFFFB3C207BFF47FFFBCCA90102009D1 +S31540011F0030BFFFAA7FFFBCC79010200830BFFFA398 +S31540011F10C607BFE8C624A00410BFFF97A32D8011B2 +S31540011F20C2042100C020E00C84103FFFB010200005 +S31540011F30C0206040C420600C81C7E00881E80000F1 +S31540011F400280001E1110004680A72000A610001B2B +S31540011F5004BFFF08A81020002F100046AC14210032 +S31540011F60AE15E0D010800005AA10200180A700140C +S31540011F7004BFFF00A604E00180A4E01F34BFFFFCBC +S31540011F80A805200192100013400027B590100017B4 +S31540011F90C2058000C4006040872D40138410C002F2 +S31540011FA0C420604010BFFFF2A80520017FFFBC9D01 +S31540011FB09010200130BFFEBB9210001B400027A8A5 +S31540011FC0901220D0C2042100852F001BC4206040FE +S31540011FD010BFFEE980A0001C7FFFBC929010200339 +S31540011FE030BFFEBE9DE3BF80031001241100403483 +S31540011FF0231000467FFFBC7DF0206100C026000013 +S31540012000C026204082103FFFC226200C0310012328 +S3154001201084102001A0102001C4206084A214608095 +S31540012020921000104000278E90100011A00420014C +S3154001203080A4201012BFFFFC92100010F806202049 +S31540012040B937201C231001232D00003F3700002AF9 +S31540012050B8072001A2146084AC15A3FEB616E2AA05 +S31540012060A6100018AE102000B4103FFFBA10200190 +S31540012070A8102020AA10202180A720010280000557 +S3154001208080A5E0007FFFBC609010001780A5E000AE +S315400120900280000F01000000C024C000C024E040BF +S315400120A0F424E00CFA244000832DE01CC224E024F1 +S315400120B0C204E0248330601C80A0401702800004E3 +S315400120C0010000007FFFBC5790102012EC24E0086D +S315400120D0C204E00880A0401602800004010000000E +S315400120E07FFFBC5090102001EC24E040C204E04048 +S315400120F080A0401602800004010000007FFFBC4919 +S3154001210090102002C204E00880A0600012BFFFFECA +S3154001211001000000C204400080A06010028000055A +S31540012120A01020017FFFBC3F90102003A01020018A +S31540012130832C2002C20440018425001080A0800126 +S3154001214022800005A00420017FFFBC3690102004A8 +S31540012150A004200180A4201012BFFFF7832C200287 +S31540012160FA244000F624C000EC24E040C204C0003A +S3154001217080A0401B02800004010000007FFFBC29B3 +S3154001218090102005C204E04080A040160280000461 +S31540012190010000007FFFBC2390102005EC24E008DD +S315400121A0C204E00880A0600012BFFFFE01000000EB +S315400121B0C204400080A0601002800005A410201FC8 +S315400121C07FFFBC1890102006A410201FA0102001EC +S315400121D0832C2002C204400180A0401222800005C7 +S315400121E0A00420017FFFBC0F90102007A00420010E +S315400121F080A4200812BFFFF7A404BFFEA410201C30 +S31540012200A010200A832C2002C204400180A0401263 +S3154001221022800005A00420017FFFBC029010200807 +S31540012220A004200180A4201012BFFFF7A404BFFE22 +S31540012230FA27BFF082102002C407BFF08400A00134 +S31540012240C427BFF4C407BFF48400A001C427BFF864 +S31540012250C407BFF88400A001C427BFFC8410200630 +S31540012260C427BFE0C024C000C024E040FA24400097 +S31540012270C224E040C224E0088344400080886100D3 +S3154001228002800005010000008050000180500001DD +S3154001229080500001C207BFE0C227BFE4C207BFE0CA +S315400122A080A0600602800005821020027FFFBBDD10 +S315400122B09010200A82102002C224E008010000008A +S315400122C0C207BFE0C227BFE4C207BFE080A06006E5 +S315400122D002800005821020027FFFBBD29010200AA7 +S315400122E082102002C224E00801000000C027BFE49A +S315400122F0C207BFE480A060001280007301000000A5 +S31540012300C204E00880A0600012BFFFFE0100000089 +S31540012310C204400080A06004028000040100000065 +S315400123207FFFBBC09010200DC024E040EC24E008A4 +S31540012330FA24400040000210010000004000021053 +S3154001234090122F00EC24E040C204E04080A06000DF +S3154001235002BFFFFE01000000C204400080A06002EF +S3154001236002800004010000007FFFBBAE9010200EEA +S31540012370C204600480A0601F0280000401000000C6 +S315400123807FFFBBA89010200F400001FBA410200244 +S31540012390400001FB90023F00400001F701000000B0 +S315400123A0400001F790023F00C2044000A004A00192 +S315400123B080A0401022800005A52CA0027FFFBB997A +S315400123C090102010A52CA002C40440128225401072 +S315400123D080A0800102800004A41000107FFFBB9101 +S315400123E09010201180A4201012BFFFEC01000000C4 +S315400123F0C024E040F424E00CAE05E00180A70017BC +S3154001240014BFFF1EA624F00080A720010480002CE3 +S3154001241001000000C0262024C206202480A06000BE +S315400124201280002C0100000003040000C226202473 +S31540012430C406202480A0800102800005821020016C +S315400124407FFFBB789010201482102001C2262020E5 +S31540012450C026202403040000C406202480A0800155 +S3154001246002800004010000007FFFBB6E9010201522 +S31540012470C0262020C0262024C206202480A0600039 +S315400124801280001B0100000082102002C22620207B +S31540012490C2062020808860020280001201000000EE +S315400124A0C0262020C20620208088600202800004C7 +S315400124B0010000007FFFBB5B9010201881C7E00838 +S315400124C091E820007FFFBB579010200B30BFFF8D56 +S315400124D07FFFBB549010201310BFFFD503040000AB +S315400124E07FFFBB509010201730BFFFEE7FFFBB4DE3 +S315400124F09010201610BFFFE6821020029DE3BFA078 +S315400125007FFFBB640100000080A220000280003BE7 +S315400125100100000080A62000128000350100000065 +S315400125207FFFBB5C01000000912A20047FFFBB3680 +S3154001253090022003400018850100000080A220007F +S31540012540128000280100000040001824010000000C +S31540012550400017D201000000400001E801000000E0 +S3154001256080A6A0001280001C010000007FFFBB492D +S3154001257021100124912A2002A0142104C20400083A +S3154001258080A060000280000A80A620007FFFBB4138 +S3154001259001000000912A20027FFFBB3EE0040008B3 +S315400125A09FC400000100000080A6200002800004B4 +S315400125B0010000007FFFBB50901000194000044508 +S315400125C00100000040001E5401000000400015D7E4 +S315400125D081E8000040001F260100000030BFFFE4F3 +S315400125E07FFFBB109010200130BFFFD87FFFBB3269 +S315400125F09010001930BFFFCB7FFFBAFC1100400C91 +S3154001260010BFFFC680A6200003100123C40060D07E +S315400126108400A001C42060D081C3E008010000000D +S315400126209DE3BFA07FFFBAF11100404482103FFFF6 +S31540012630E4062008C2262004A40CA007C406000014 +S31540012640C206000080A080010280007401000000E3 +S315400126508210201FC2262004C226000080A4A000AA +S315400126600280004E82102000852860048406000204 +S315400126708200600180A04012C020A01812BFFFFC5A +S3154001268085286004A0102000A610200FAA1020065D +S31540012690A81020107FFFBADC90100010A204200180 +S315400126A0832C600486060001A12C2004C02600016B +S315400126B084060010E620E004EA20A018C2060001C4 +S315400126C080A0600F02800005820600107FFFBAD508 +S315400126D090102003820600108410200E872C60047F +S315400126E0E6206018C206000380A0400212BFFFFE2A +S315400126F0010000008400BFFF80A0BFFF12BFFFFAA8 +S3154001270001000000852C6004C206000280A0600F13 +S3154001271012BFFFFE82060010C2006018808860105A +S3154001272002800033A0060010E8242018C2042018B5 +S3154001273080886010128000350100000080A480115D +S3154001274014BFFFD5A010001180A4A0010480000C85 +S31540012750821020007FFFBAAC901020088210200F13 +S31540012760C22620188210202FC2262028C2062020E9 +S3154001277080A0600D12BFFFFE8210200085286004F4 +S31540012780840600028200600180A04012C020A01889 +S3154001279012BFFFFC8528600421100124C2042100D8 +S315400127A080A06000028000109210001911100049AB +S315400127B0400025AB901222087FFFFC3DD00421004A +S315400127C0C204210084102001B3288019F220604000 +S315400127D08210200FC22620148210200DC2262018F6 +S315400127E0A780000081C7E00881E800007FFFBA8D1D +S315400127F090102004E8242018C20420188088601014 +S3154001280022BFFFD080A480117FFFBA869010200599 +S3154001281010BFFFCC80A480117FFFBA8290102001A7 +S3154001282010BFFF8D8210201F000000000000000035 +S315400128300000000000000000000000000000000051 +S31540012840010000000100000001000000010000003D +S31540012850010000000100000081C3E0080100000002 +S31540012860010000000100000001000000010000001D +S31540012870010000000100000081C3E00801000000E2 +S3154001288001000000010000000100000001000000FD +S31540012890010000000100000081C3E00801000000C2 +S315400128A001000000010000000100000001000000DD +S315400128B0010000000100000081C3E00801000000A2 +S315400128C0D482018090A2000916BFFFFE9612800BAA +S315400128D081C3E0089010000BD48201C090A2000988 +S315400128E016BFFFFE9612800B81C3E0089010000BC5 +S315400128F090A22004C0A201A090A22004C0A201A0DF +S3154001290090A22004C0A201A090A22004C0A201A0CE +S31540012910C0A2018090A2200414BFFFF7010000006D +S3154001292081C3E0080100000090A22004C0A201E09A +S3154001293090A22004C0A201E090A22004C0A201E01E +S3154001294090A22004C0A201E0C0A201C090A220042E +S3154001295014BFFFF70100000081C3E0080100000039 +S31540012960981000089610000A98A3200814BFFFFF8C +S31540012970D43B00099810000898A3200814BFFFFF14 +S31540012980C01B00099810000898A32004D60300092B +S3154001299080A2C00A1280000698A3200434BFFFFD1E +S315400129A0D603000981C3E008901020009010200151 +S315400129B0981000089610000A98A3200814BFFFFF3C +S315400129C0D43B00099810000898A32004D6030009B7 +S315400129D080A2C00A1280000698A3200434BFFFFDDE +S315400129E0D603000981C3E008901020009010200111 +S315400129F09810000898A32004D2A301A0DA8301A06D +S31540012A0080A340091280000698A3200414BFFFFC4E +S31540012A10D2A301A081C3E0089010200090102001AC +S31540012A209A1000089AA3400AD6A34180D8834180D0 +S31540012A30981B000B988B0009128000069AA3400A46 +S31540012A4014BFFFFBD6A3418081C3E008901020004C +S31540012A50901020019A1000089AA3400BD8A241CDAC +S31540012A60C48241CD8418800C8488800A1280000675 +S31540012A709AA3400B14BFFFFBD8A241CD81C3E00806 +S31540012A80901020009010200101000000010000007C +S31540012A900100000013100080921260E4D40240004D +S31540012AA080A2A0011280000780A0A002D4024000AB +S31540012AB0D4024000952AA0021080000501000000C2 +S31540012AC03280000381E80000D402400081E000002A +S31540012AD093480000818A60202310004AA21462F8BC +S31540012AE0A40460040100000081C4400081CC800040 +S31540012AF091D0200191D0200126800005900020012F +S31540012B0090222001912A2001912A200281C3E008C6 +S31540012B100100000081C3E008D082004081C3E00883 +S31540012B20D2A2004081C3E008D082018081C3E0087F +S31540012B30D2A2018081C3E008D08201A081C3E0080E +S31540012B40D2A201A081C3E008D08201C081C3E008BE +S31540012B50D2A201C081C3E008D08201E081C3E0086E +S31540012B60D2A201E081C3E008D2A2000081C3E008FD +S31540012B70D082000081C3E00891480000818A0000AC +S31540012B8001000000010000000100000081C3E008CF +S31540012B900100000081C3E008C0A000A081C3E00895 +S31540012BA0C0A000C081C3E008D01A000001000000A7 +S31540012BB001000000010000000100000001000000CA +S31540012BC09DE3BF8803100074D1186198D13FBFF0CF +S31540012BD003100080D11FBFF0D91861800310008017 +S31540012BE0D518618895A308CAD53FBFF80310008060 +S31540012BF0D91FBFF8D518619081AB0A4A0100000080 +S31540012C0023800038D127BFEC91A0054803100074FA +S31540012C10D13FBFF8D51FBFF8D91FBFF899A3094ABD +S31540012C20D51FBFF099A308CA99A0012CD51861A058 +S31540012C3081AB0ACA010000002D800024D127BFECD8 +S31540012C4091A018C891A20928D51FBFF091A01928B3 +S31540012C5091A208CA91A0012803100074D51861A851 +S31540012C6081AA0ACA010000000D800015010000007A +S31540012C704000019001000000400001EE010000000B +S31540012C8080A220001280000B010000004000024398 +S31540012C900100000080A22000128000040100000013 +S31540012CA081C7E00881E800007FFFB95E91E8200511 +S31540012CB07FFFB95C0100000030BFFFF57FFFB959C6 +S31540012CC09010200330BFFFEBD327BFE87FFFB955F4 +S31540012CD090102002D307BFE810BFFFDAD107BFEC3F +S31540012CE0D327BFE87FFFB94F90102001D307BFE834 +S31540012CF010BFFFC6D107BFEC9DE3BFA07FFFFF9E7C +S31540012D00210000047FFFFF9E901200107FFFFF9A73 +S31540012D1001000000808A001012800004B0102000DB +S31540012D2081C7E00881E8000040000266901020005B +S31540012D307FFFB95801000000912A20047FFFB93274 +S31540012D40900220087FFFFF9F81E8000001000000FC +S31540012D5019100080981321201110020092102000B2 +S31540012D60150FF76C9412A3D7D03B0000D42320084B +S31540012D70C11B0000C503200887A08922010000006D +S31540012D8089A005408DA0892281A8CA26010000009C +S31540012D9033800003901020009010200181C3E00889 +S31540012DA001000000C11A0000C51A400089A008426E +S31540012DB081C3E008C93A8000C11A0000C51A400023 +S31540012DC089A0094281C3E008C93A800019100080F0 +S31540012DD098132120D0230000D2232008C1030000EC +S31540012DE0C303200885A00D2181C3E008C53A8000B0 +S31540012DF0C11A0000C51A400089A009C2C93A80001B +S31540012E0081C3E00801000000C11A000085A0054009 +S31540012E10C53A400081C3E0080100000001000000FE +S31540012E200100000001000000010000000100000057 +S31540012E300100000001000000010000000100000047 +S31540012E400100000001000000010000000100000037 +S31540012E500100000001000000010000000100000027 +S31540012E600100000001000000010000000100000017 +S31540012E700100000001000000010000000100000007 +S31540012E8001000000010000000100000001000000F7 +S31540012E9001000000010000000100000081A00020A7 +S31540012EA081C3E00801000000C11A000081C3E008A7 +S31540012EB001000000C51A000089A009C2C93A4000B4 +S31540012EC081C3E008010000001310008092126120C6 +S31540012ED0D0224000C102400085A01900C53A4000F9 +S31540012EE081C3E008D01A400013100080921261207D +S31540012EF0D0224000C102400085A01880C522400072 +S31540012F0081C3E008D0024000151000809412A12030 +S31540012F10D03A8000C11A800085A01A40C52280009F +S31540012F2081C3E008D0028000151000809412A120D0 +S31540012F30D0228000C102800085A01A20C5228000CF +S31540012F4081C3E008D0028000151000809412A120B0 +S31540012F50D0228000C102800081A01920C13A8000A0 +S31540012F6081C3E008D01A8000151000809412A12078 +S31540012F70D03A8000C11A800081A018C0C1228000C9 +S31540012F8081C3E008D0028000151000809412A12070 +S31540012F90D0228000CB0280008DA00025CD2280006A +S31540012FA081C3E008D0028000151000809412A12050 +S31540012FB0D0228000CB0280008DA000A5CD228000CA +S31540012FC081C3E008D0028000151000809412A12030 +S31540012FD0D0228000CB0280008DA00125CD22800029 +S31540012FE081C3E008D0028000191000809813212087 +S31540012FF0D03B0000D43B2008C11B0000C51B200864 +S3154001300081A80A4201000000338000099010200087 +S3154001301029800007901020012D8000059010200284 +S315400130202F8000039010200391D0200081C3E00837 +S31540013030010000001910008098132120D03B0000A8 +S31540013040D43B2008C11B0000C51B200881A80AC229 +S315400130500100000033BFFFF69010200029BFFFF4A6 +S31540013060901020012DBFFFF2901020022FBFFFF0DC +S315400130709010200391D02000191000809813212030 +S31540013080D0230000D2232008C1030000C303200837 +S3154001309081A80A210100000033BFFFE590102000FE +S315400130A029BFFFE3901020012DBFFFE190102002C0 +S315400130B02FBFFFDF9010200391D020001910008010 +S315400130C098132120D0230000D2232008C1030000F9 +S315400130D0C303200881A80AA10100000033BFFFD421 +S315400130E09010200029BFFFD2901020012DBFFFD0A4 +S315400130F0901020022FBFFFCE9010200391D02000C8 +S315400131001910008098132120D03B0000D43B2008A1 +S31540013110C11B0000C51B200889A008C2C93B00008D +S3154001312081C3E008D01B00001910008098132120AC +S31540013130D0230000D2232008C1030000C303200886 +S3154001314085A00821C523000081C3E008D003000003 +S315400131501910008098132120D0230000D223200883 +S31540013160C1030000C303200885A008A1C5230000B0 +S3154001317081C3E008D0030000191000809813212074 S31540013180D0230000D2232008C1030000C303200836 -S3154001319081A80A210100000033BFFFE590102000FD -S315400131A029BFFFE3901020012DBFFFE190102002BF -S315400131B02FBFFFDF9010200391D02000191000800F -S315400131C098132178D0230000D2232008C1030000A0 -S315400131D0C303200881A80AA10100000033BFFFD420 -S315400131E09010200029BFFFD2901020012DBFFFD0A3 -S315400131F0901020022FBFFFCE9010200391D02000C7 -S315400132001910008098132178D03B0000D43B200848 -S31540013210C11B0000C51B200889A008C2C93B00008C -S3154001322081C3E008D01B0000191000809813217853 -S31540013230D0230000D2232008C1030000C303200885 -S3154001324085A00821C523000081C3E008D003000002 -S315400132501910008098132178D0230000D22320082A -S31540013260C1030000C303200885A008A1C5230000AF -S3154001327081C3E008D003000019100080981321781B -S31540013280D0230000D2232008C1030000C303200835 -S3154001329085A00921C523000081C3E008D0030000B1 -S315400132A01910008098132178D0230000D2232008DA -S315400132B0C1030000C303200885A009A1C52300005E -S315400132C081C3E008D00300001910008098132178CB -S315400132D0D0230000C103000083A00520C3230000C2 -S315400132E081C3E008D0030000131000809212619060 -S315400132F0C51A6008C11A400089A0084091A108C2B8 -S3154001330095A209C495A2894281C3E008D53A000035 -S3154001331013100080921261B0C1024000C3026004E2 -S3154001332085A0082087A088A189A0C9A289A10921D1 -S3154001333081C3E008C92200009610200213100080C4 -S3154001334092126190151000809412A190D50240000E -S31540013350D7028000D5220000D80200001310008059 -S31540013360921261B096A2E00112BFFFF9010000007E -S3154001337081C3E008010000001310008092126190A1 -S31540013380151000809412A1B0C1028000C51A6010C8 -S3154001339083A0082089A088C08BA109A18DA10942DB -S315400133A08FA1492691A0054681C3E008D13A000084 -S315400133B01110008090122188C11A0000C51A000020 -S315400133C0C91A0000CD1A0000D11A0000D51A000012 -S315400133D0D91A0000DD1A0000E11A0000E51A0000C2 -S315400133E0E91A0000ED1A0000F11A0000F51A000072 -S315400133F0F91A0000FD1A000081C3E008010000002F -S3154001340029100080A815215827100080A614E1C074 -S31540013410C12CC000E604C000A134E00EA00C200778 -S31540013420A0A42002AE1020002D100080AC15A1C032 -S31540013430AE05E001AC05A008C1358000C12D0000F4 -S31540013440EA050000AB35600DAA8D600112BFFFF998 -S3154001345001000000808000100280002F2B3C1FFFDE -S31540013460AA1563FFA60CC015E6250000C10D000094 -S315400134702B100080AA1561CC2D10004DAC15A0E093 -S31540013480AE25E001E0054000E025800081D820001E -S3154001349001000000010000000100000001000000E1 -S315400134A001000000010000000100000001000000D1 -S315400134B001000000010000000100000001000000C1 -S315400134C001000000010000000100000001000000B1 -S315400134D001000000010000000100000001000000A1 -S315400134E00000000080A5C00012BFFFE6AA056008E3 -S315400134F0C12D0000E60500002B03C000A614C0152F -S31540013500E6250000C10D000081C4400081CC800049 -S315400135100100000081C4800081CCA00401000000AC -S315400135200100000081C3E00891580000010000003D -S315400135301110008090122158C10A0000C0220000DB -S31540013540C10A0000C12A0000D40200001300038012 -S31540013550942A800980A0000A3280004D90102003F1 -S315400135601303E000D223BFA0C023BFA4C10BBFA059 -S31540013570C023BFA0151000809412A170C102800023 -S315400135800100000001000000C10BBFA0C10BBFA498 -S3154001359083A00520C12BBFA0D003BFA0808A2200F3 -S315400135A02280003B901020049010200015100080CE -S315400135B09412A140C5028000C902A008D102A00C04 -S315400135C01310008092126170C70240008DA0894499 -S315400135D081A98AC80100000003800005010000009E -S315400135E0901020011080002A01000000C5028000D1 -S315400135F0C902A008D102A00C13100080921261707A -S31540013600CB0240008DA0894481A98AC801000000EF -S315400136100380000501000000901020011080001C6D -S315400136200100000025100080A414A168C11C80007F -S31540013630C51C800080A000003280000685A008C01D -S3154001364081A80AC2010000001380000301000000A6 -S31540013650901020050100000025100080A414A168E7 -S31540013660C11C8000C51C800080A000000100000034 -S315400136703280000685A008C081A80AC20100000068 -S315400136801380000301000000901020070100000094 -S3154001369081C3E0080100000090102001954400001C -S315400136A09532A01E940AA00380A2800002800040A9 -S315400136B09010200080A2A0030280003D13100080DC -S315400136C0921261F0C11A4000C51A6008FD026018E5 -S315400136D095A0003E99A0003E9DA0003E170000C067 -S315400136E09612E078A182C0000100000001000000AE -S315400136F0010000000100000001000000010000007F -S3154001370081A0002083A0002195A0002A99A0002C29 -S315400137109DA0002E170000C09612E07CA182C00039 -S31540013720010000000100000001000000010000004E -S31540013730010000000100000085A0002287A00023AF -S31540013740A18000000100000001000000010000000E -S3154001375001000000010000000100000089A00842AC -S31540013760A9A2883ED93A4000DD224000CD1A601018 -S31540013770D102600881A90A46010000000380000CBD -S3154001378081AD0A280100000003800009934400002E -S315400137909332601B920A60079010200080A2A0011C -S315400137A002800003902260079022600481C3E008F2 -S315400137B001000000C12BBFA081C3E008D003BFA018 -S315400137C0D023BFA081C3E008C10BBFA00100000008 -S315400137D09DE3BF6040001B17B0102000913A200ABC -S315400137E0900A200380A220011280111101000000DD -S315400137F07FFFB6819010200D190C40291B23CD1B4C -S315400138009410200096102000981320069A13609B6E -S31540013810D43FBFE0D43FBFC0D43FBFE87FFFFF42A4 -S31540013820D83FBFF0900A3000032804009012208050 -S315400138308210600FC22200001B10004D900220042E -S315400138409A1360009A234008191000009B3B6002BE -S31540013850032784009A13400C82106010C222200470 -S315400138607FFFFED4DA2200007FFFFFD61103E0007E -S315400138702D100080C025A1C07FFFFDD490102000EF -S31540013880809200091280000601000000C205A1C015 -S3154001389080A0600002800004010000007FFFB65B4B -S315400138A09010200B7FFFFDC990103FFA03300600B0 -S315400138B080A200011280000480A2600002800EDB1B -S315400138C0010000007FFFB6519010200B7FFFFDBF26 -S315400138D09010201403100D0080A2000112800004F4 -S315400138E080A2600002800ECC010000007FFFB64737 -S315400138F09010200B7FFFFDB590102062031016201B -S3154001390080A200011280000480A2600002800EBDE8 -S31540013910010000007FFFB63D9010200B7FFFFDB3F5 -S31540013920901020050310280080A200011280000695 -S3154001393001000000C205A1C080A060000280000411 -S31540013940010000007FFFB6319010200B7FFFFF9DE5 -S315400139501103C000111C00007FFFFDAC9210200036 -S31540013960031FFFFF821063FF80A200011280000A3D -S315400139701B000070C205A1C09A13601F19000010F8 -S315400139808208400D9813201080A0400C028000054B -S31540013990113C00007FFFB61D9010200C113C000029 -S315400139A07FFFFD9A921020000320000080A20001B3 -S315400139B01280000A1B000070C205A1C09A13601F45 -S315400139C0190000108208400D9813201080A0400C69 -S315400139D002800004010000007FFFB60C9010200C0D -S315400139E0C025A1C0901020007FFFFD8892102000C5 -S315400139F080A220001280000601000000C205A1C07D -S31540013A0080A0600002800005110144007FFFB5FFE0 -S31540013A109010200C110144001328400090122302FB -S31540013A207FFFFD7A9212600180A22000128000067B -S31540013A3001000000C205A1C080A0600022800005EF -S31540013A401111FFFF7FFFB5F19010200C1111FFFFFF -S31540013A507FFFFD76901223FF0300007F821063FFF4 -S31540013A6080A200011280000601000000C205A1C02B -S31540013A7080A06000028000052F1000857FFFB5E31E -S31540013A809010200C2F1000857FFFFD60D01DE0C8EF -S31540013A90031FFFFF821063FF80A200011280000A0C -S31540013AA01B000070C205A1C09A13601F19000010C7 -S31540013AB08208400D9813201080A0400C028000051A -S31540013AC0031000857FFFB5D19010200C03100085AF -S31540013AD0D01860D8C025A1C07FFFFD4C0100000071 -S31540013AE00320000080A200011280000A1B00007022 -S31540013AF0C205A1C09A13601F190000108208400D2B -S31540013B009813201080A0400C0280000519100085F2 -S31540013B107FFFB5BE9010200C19100085C025A1C0AD -S31540013B207FFFFD3AD01B20B8031FFFFF821063FFC2 -S31540013B3080A200011280000A1B000070C205A1C0CC -S31540013B409A13601F190000108208400D9813201027 -S31540013B5080A0400C02800005331000857FFFB5AB85 -S31540013B609010200C33100085C025A1C07FFFFD2792 -S31540013B70D01E60F0C205A1C08330600E820860038A -S31540013B8080A0600202800004211000807FFFB59F63 -S31540013B909010200C7FFFFF0B1103C0001111580438 -S31540013BA0C02421C07FFFFD299012223403102B002F -S31540013BB08210624680A200011280000503200000A7 -S31540013BC080A2400102800FC5010000007FFFB58F32 -S31540013BD09010200D113C02AF7FFFFD1C901220D1A9 -S31540013BE0033180558210639A80A20001128000053C -S31540013BF00308000080A2400102800FDB01000000A3 -S31540013C007FFFB5829010200D1111FC007FFFFD173B -S31540013C1092102000031FE00080A200011280000ADA -S31540013C201B000070C205A1C09A13601F1900001045 -S31540013C308208400D9813200880A0400C02800005A0 -S31540013C4011207C017FFFB5719010200D11207C0160 -S31540013C50C025A1C0901220307FFFFD041300010052 -S31540013C600320000080A200011280000A1B000070A0 -S31540013C70C205A1C09A13601F190000108208400DA9 -S31540013C809813200480A0400C02800004010000002B -S31540013C907FFFB55E9010200DC025A1C09010200079 -S31540013CA07FFFFCF29210200080A2200012800006C5 -S31540013CB001000000C205A1C080A06000028000048E -S31540013CC0010000007FFFB5519010200D7FFFFCE7FA -S31540013CD0D01DE0C803100085DA0060C080A2000D47 -S31540013CE01280000601000000C205A1C080A060004C -S31540013CF0028000051B1000857FFFB5449010200D02 -S31540013D001B1000857FFFFCD9D01B60D0031FE0004C -S31540013D1080A200011280000601000000C205A1C078 -S31540013D2080A0600002800005031000857FFFB53743 -S31540013D309010200D031000857FFFFCCCD01860B891 -S31540013D4003100085DA0060A880A2000D1280000AE7 -S31540013D501B000070C205A1C09A13601F1900001014 -S31540013D608208400D9813201080A0400C0280000468 -S31540013D70010000007FFFB5259010200DC025A1C090 -S31540013D807FFFFCBAD01E60F0C205A1C08330600E31 -S31540013D908208600380A06002028000042310008034 -S31540013DA07FFFB51A9010200D7FFFFE861103E000BC -S31540013DB02108C6AF901420DEC02461C07FFFFCB34A -S31540013DC0A01420DE80A2001012800006010000002F -S31540013DD0C20461C080A06000028000052108C6AF10 -S31540013DE07FFFB50A9010200E2108C6AF7FFFFCB7B2 -S31540013DF0901420DEA01420DE80A20010128000065E -S31540013E0001000000C205A1C080A06000228000051B -S31540013E101128C6AF7FFFB4FD9010200E1128C6AF02 -S31540013E207FFFFCAA901220DE0308C6AF821060DE37 -S31540013E3080A200011280000601000000C205A1C057 -S31540013E4080A06000228000051108C6AF7FFFB4EF55 -S31540013E509010200E1108C6AF7FFFFC94901220DE11 -S31540013E600328C6AF821060DE80A2000112800006E0 -S31540013E7001000000C205A1C080A0600022800005AB -S31540013E801128C6AF7FFFB4E19010200E1128C6AFAE -S31540013E907FFFFC86901220DE0308C6AF821060DEEB -S31540013EA080A200011280000601000000C205A1C0E7 -S31540013EB080A0600002800004010000007FFFB4D3AF -S31540013EC09010200E7FFFFE3F1103E00011151BC02D -S31540013ED01310C82115351BC01710C8219012210394 -S31540013EE0921261419412A1037FFFFC809612E14137 -S31540013EF080A220021280000601000000C205A1C076 -S31540013F0080A060000280000511351BC07FFFB4BF51 -S31540013F109010200F11351BC01310C82115151BC059 -S31540013F201710C82190122103921261419412A103E4 -S31540013F307FFFFC6E9612E14180A2200112800006AD -S31540013F4001000000C205A1C080A0600002800005FA -S31540013F50901020007FFFB4AD9010200F90102000EC -S31540013F6092102000152000007FFFFC609610200073 -S31540013F7080A220001280000601000000C205A1C0F7 -S31540013F8080A0600002800005191000857FFFB49F64 -S31540013F909010200F191000851B100085D01B20D0D2 -S31540013FA07FFFFC52D41B60D880A2200212800006FB -S31540013FB001000000C205A1C080A06000028000058A -S31540013FC011151BC07FFFB4919010200F11151BC016 -S31540013FD01310C82115151BE81710C821901221038B -S31540013FE0921261419412A1037FFFFC409612E14176 -S31540013FF080A220011280000601000000C205A1C076 -S3154001400080A060000280000511151BE87FFFB47F88 -S315400140109010200F11151BE81310C82115151BC050 -S315400140201710C82190122103921261419412A103E3 -S315400140307FFFFC2E9612E14180A2200212800006EB -S3154001404001000000C205A1C080A0600002800005F9 -S3154001405011151BE87FFFB46D9010200F11151BE859 -S315400140601310C82190122103921261417FFFFC1F58 -S31540014070D41DE0C880A22003128000060100000082 -S31540014080C205A1C080A06000028000050310008522 -S315400140907FFFB45E9010200F0310008511151BE8B9 -S315400140A01310C82190122103921261417FFFFC0F28 -S315400140B0D41860B880A220031280000A1B00007049 -S315400140C0C205A1C09A13601F190000108208400D55 -S315400140D09813201080A0400C0280000511151BE8A2 -S315400140E07FFFB44A9010200F11151BE81310C82109 -S315400140F0C025A1C090122103921261417FFFFBFBB3 -S31540014100D41E60F080A22002128000060100000049 -S31540014110C205A1C080A060000280000515151BE8FC -S315400141207FFFB43A9010200F15151BE81710C821D0 -S31540014130D01E60F09412A1037FFFFBEC9612E14181 -S3154001414080A220011280000601000000C205A1C024 -S3154001415080A060000280000515151BE87FFFB42B87 -S315400141609010200F15151BE81710C821D01DE0C867 -S315400141709412A1037FFFFBDD9612E14180A2200349 -S315400141801280000601000000C205A1C080A06000A7 -S3154001419002800005191000857FFFB41C9010200F86 -S315400141A01910008515151BE81710C821D01B20B81A -S315400141B09412A1037FFFFBCD9612E14180A2200319 -S315400141C01280000A1B000070C205A1C09A13601F2D -S315400141D0190000108208400D9813201080A0400C51 -S315400141E00280000511151BC07FFFB4089010200FF7 -S315400141F011151BC01310C82115351BC01710C82136 -S31540014200C025A1C090122103921261419412A103CB -S315400142107FFFFBC99612E14180A22002128000066F -S3154001422001000000C205A1C080A060000280000517 -S3154001423011351BC07FFFB3F59010200F11351BC000 -S315400142401310C82115151BC01710C8219012210340 -S31540014250921261419412A1037FFFFBB79612E1418D -S3154001426080A220011280000601000000C205A1C003 -S3154001427080A0600002800005901020007FFFB3E31C -S315400142809010200F90102000921020001520000061 -S315400142907FFFFBA99610200080A220001280000615 -S315400142A001000000C205A1C080A060000280000597 -S315400142B01B1000857FFFB3D59010200F1B10008582 -S315400142C003100085D01B60D07FFFFB9BD41860D8BC -S315400142D080A220021280000601000000C205A1C092 -S315400142E080A060000280000511151BC07FFFB3C787 -S315400142F09010200F11151BC01310C82115151BE86E -S315400143001710C82190122103921261419412A10300 -S315400143107FFFFB899612E14180A2200112800006AF -S3154001432001000000C205A1C080A060000280000516 -S3154001433011151BE87FFFB3B59010200F11151BE82F -S315400143401310C82115151BC01710C821901221033F -S31540014350921261419412A1037FFFFB779612E141CC -S3154001436080A220021280000601000000C205A1C001 -S3154001437080A060000280000511151BE87FFFB3A3F2 -S315400143809010200F11151BE81310C821901221031C -S31540014390921261417FFFFB68D41DE0C880A22003D1 -S315400143A01280000A1B000070C205A1C09A13601F4B -S315400143B0190000108208400D9813201080A0400C6F -S315400143C002800005191000857FFFB3909010200FE1 -S315400143D01910008511151BE81310C82190122103ED -S315400143E0921261417FFFFB54D41B20B880A2200367 -S315400143F01280000A1B000070C205A1C09A13601FFB -S31540014400190000108208400D9813201080A0400C1E -S315400144100280000511151BE87FFFB37C9010200F29 -S3154001442011151BE81310C821C025A1C09012210304 -S31540014430921261417FFFFB40D41E60F080A22002B0 -S315400144401280000601000000C205A1C080A06000E4 -S315400144500280000515151BE87FFFB36C9010200FF5 -S3154001446015151BE81710C821D01E60F09412A10340 -S315400144707FFFFB319612E14180A2200112800006A6 -S3154001448001000000C205A1C080A0600002800005B5 -S3154001449015151BE87FFFB35D9010200F15151BE81E -S315400144A01710C821D01DE0C89412A1037FFFFB223B -S315400144B09612E14180A220031280000A1B0000707F -S315400144C0C205A1C09A13601F190000108208400D51 -S315400144D09813201080A0400C028000051B10008517 -S315400144E07FFFB34A9010200F1B10008515151BE85E -S315400144F01710C821D01B60B89412A1037FFFFB0E91 -S315400145009612E14180A220031280000A1B0000702E -S31540014510C205A1C09A13601F190000108208400D00 -S315400145209813201080A0400C02800005110048EA33 -S315400145307FFFB3369010200F110048EA13048D1502 -S31540014540C025A1C0901223CD7FFFFB0C9212627849 -S3154001455080A220011280000601000000C205A1C010 -S3154001456080A0600002800005110048EA7FFFB32762 -S315400145709010200F110048EA13048D15901223CD97 -S315400145807FFFFB0F9212627880A220011280000603 -S3154001459001000000C205A1C080A0600002800004A5 -S315400145A0010000007FFFB3199010200FC025A1C064 -S315400145B07FFFFC841103C000291001449007BFF01E -S315400145C09207BFE87FFFFA3894152150C207BFF022 -S315400145D0DA05215080A0400D128000078215215036 -S315400145E0DA006004C207BFF480A0400D02800D5975 -S315400145F0010000007FFFB3059010201037100085A1 -S315400146009007BFF09216E0E07FFFFA2794152150FC -S31540014610C206E0E0DA05215080A34001821521500F -S31540014620128000079816E0E0DA006004C203200415 -S3154001463080A3400102800D42010000007FFFB2F3DA -S31540014640901020109007BFF09215E0C87FFFFA1630 -S3154001465094152150C205E0C8DA05215080A34001D6 -S3154001466082152150128000079815E0C8DA006004CF -S31540014670C203200480A3400102800D2C01000000EA -S315400146807FFFB2E29010201003100085921060B8AF -S315400146909007BFF07FFFFA04941521501B0000706C -S315400146A0C205A1C09A13601F190000108208400D6F -S315400146B09813201080A0400C028000042110014470 -S315400146C07FFFB2D29010201003100080C02061C03D -S315400146D07FFFFC3C9010200013100085941421505C -S315400146E0921260B87FFFF9F09007BFF0391000854C -S315400146F0C20720B0DA04215080A34001941421500E -S3154001470012800007821720B0DA02A004C2006004BA -S3154001471080A3400102800004010000007FFFB2BB7C -S31540014720901020107FFFFC271103C0009007BFF0B7 -S31540014730921660F07FFFF9DC94152150C205A1C0A5 -S315400147408330600E8208600380A06002211001441C -S3154001475002800004231000807FFFB2AC901020102D -S3154001476094142150C02461C09007BFE87FFFF9CE61 -S315400147709207BFF0DA042150C207BFF080A340017F -S315400147801280000794142150DA02A004C207BFF434 -S3154001479080A3400102800D21010000007FFFB29BF2 -S315400147A0901020109007BFE89216E0E07FFFF9BE17 -S315400147B094152150C206E0E0DA05215080A340015C -S315400147C082152150128000079816E0E0DA00600455 -S315400147D0C203200480A3400102800D0B01000000AA -S315400147E07FFFB28A901020109007BFE89215E0C86B -S315400147F07FFFF9AD94152150C205E0C8DA05215075 -S3154001480080A3400182152150128000079815E0C807 -S31540014810DA006004C203200480A3400102800CF543 -S31540014820010000007FFFB279901020101910008519 -S31540014830921320B89007BFE87FFFF99B941521504A -S315400148401B000070C205A1C09A13601F1900001019 -S315400148508208400D9813201080A0400C028000046D -S31540014860211001447FFFB269901020107FFFFBD5D4 -S31540014870901020001310008594142150921260B8B4 -S315400148807FFFF9899007BFE8C20720B0DA042150BB -S3154001489080A340019414215012800007821720B052 -S315400148A0DA02A004C200600480A340010280000431 -S315400148B0010000007FFFB255901020107FFFFBC121 -S315400148C01103C0009007BFE8921660F07FFFF976AA -S315400148D094152150C205A1C08330600E8208600341 -S315400148E080A0600221100144028000042310008050 -S315400148F07FFFB2469010201094142150C02461C00D -S315400149009016E0E07FFFF9689207BFF0C206E0E04B -S31540014910DA04215080A340019414215012800007EB -S315400149208216E0E0DA02A004C200600480A34001DE -S3154001493002800CAB010000007FFFB23490102010C2 -S315400149409016E0E09207BFE87FFFF9579415215092 -S31540014950C206E0E0DA05215080A3400182152150CC -S31540014960128000079816E0E0DA006004C2032004D2 -S3154001497080A3400102800C95010000007FFFB22315 -S31540014980901020101B100085901360D092100008E3 -S315400149907FFFF9459415215019100085C20320D097 -S315400149A0DA05215080A3400182152150128000076B -S315400149B0981320D0DA006004C203200480A340018A -S315400149C002800C7D010000007FFFB2109010201084 -S315400149D01B100085901360D8921000087FFFF932B2 -S315400149E09415215019100085C20320D8DA052150AB -S315400149F080A340018215215012800007981320D8C8 -S31540014A00DA006004C203200480A3400102800C65E1 -S31540014A10010000007FFFB1FD901020101B100085A2 -S31540014A2003100085901360D8921060D07FFFF91E65 -S31540014A30941521501B000070C205A1C09A13601F36 -S31540014A40190000108208400D9813201080A0400CD8 -S31540014A5002800004211001447FFFB1EC9010201028 -S31540014A607FFFFB5890102000111000851310008520 -S31540014A7094142150901220D87FFFF90B921260D0E6 -S31540014A80C20720B0DA04215080A34001941421507A -S31540014A9012800007821720B0DA02A004C200600427 -S31540014AA080A3400102800004010000007FFFB1D7CE -S31540014AB0901020107FFFFB431103C00019100085A1 -S31540014AC01B100085901320D0921360D8C025A1C039 -S31540014AD07FFFF8F594152150C20720B0DA05215021 -S31540014AE080A340018215215012800007981720B0FB -S31540014AF0DA006004C203200480A3400102800C1F37 -S31540014B001B0000707FFFB1C1901020109016E0E0AD -S31540014B10921660F07FFFF8E494152150C205A1C0BA -S31540014B208330600E8208600380A060022110014438 -S31540014B3002800004231000807FFFB1B49010201042 -S31540014B4094142150C02461C09015E0C87FFFF8D667 -S31540014B509207BFF0C205E0C8DA04215080A34001A4 -S31540014B6094142150128000078215E0C8DA02A0048D -S31540014B70C200600480A3400102800B9C010000003A -S31540014B807FFFB1A2901020109015E0C89207BFE8B0 -S31540014B907FFFF8C594152150C205E0C8DA052150BA -S31540014BA080A3400182152150128000079815E0C864 -S31540014BB0DA006004C203200480A3400102800B8610 -S31540014BC0010000007FFFB191901020109015E0C8C0 -S31540014BD09216E0E07FFFF8B494152150C205E0C873 -S31540014BE0DA05215080A34001821521501280000729 -S31540014BF09815E0C8DA006004C203200480A340018E -S31540014C0002800B70010000007FFFB18090102010E0 -S31540014C109015E0C8921000087FFFF8A39415215023 -S31540014C20C205E0C8DA05215080A340018215215012 -S31540014C30128000079815E0C8DA006004C203200418 -S31540014C4080A3400102800B5A010000007FFFB16F33 -S31540014C509010201003100085921060B89015E0C89E -S31540014C607FFFF8919415215003000070A610601F34 -S31540014C70DA05A1C0030000109A0B4013AA10601078 -S31540014C8080A34015231000852510014402800004AD -S31540014C90211000807FFFB15D90102010C02421C0FB -S31540014CA0901460B89207BFF07FFFF87F9414A1502B -S31540014CB0C20421C08208401380A04015028000042E -S31540014CC0010000007FFFB15190102010C02421C087 -S31540014CD0901460B89207BFE87FFFF8739414A1500F -S31540014CE0C20421C08208401380A0401502800004FE -S31540014CF0010000007FFFB14590102010C02421C063 -S31540014D00901460B89216E0E07FFFF8679414A150C2 -S31540014D10C20421C08208401380A0401502800005CC -S31540014D20131000857FFFB1399010201013100085B4 -S31540014D30C02421C0921260C8901460B87FFFF85A0F -S31540014D409414A150C20421C08208401380A040158A -S31540014D5002800005901460B87FFFB12C901020109E -S31540014D60901460B8C02421C0921000087FFFF84E0D -S31540014D709414A150C20421C08208401380A040155A -S31540014D8002800004010000007FFFB1209010201036 -S31540014D90C02421C0901460B8921660F07FFFF8429B -S31540014DA09414A150C20421C08330600E820860036E -S31540014DB080A06002228000051103C0007FFFB1136D -S31540014DC0901020101103C0007FFFFA7E3B10008433 -S31540014DD0A2176210C02421C0AA14A150A4046010D5 -S31540014DE0A0102000A6046008B010200C9204001305 -S31540014DF0900400117FFFF82C94152150DA0480109D -S31540014E0098040012C2052150A004201880A3400135 -S31540014E101280000790102010DA032004C2056004B6 -S31540014E2080A3400122800005B0863FFF7FFFB0F797 -S31540014E3001000000B0863FFF1CBFFFEE9204001345 -S31540014E40C205A1C080A0600012800989010000004E -S31540014E501110008490122348920220087FFFF81215 -S31540014E609415215098176210C2052150DA03214842 -S31540014E7080A340011280000782152150DA03214C9C -S31540014E80C200600480A3400122800AAB0310008067 -S31540014E907FFFB0DE90102010111000849012236025 -S31540014EA0920220087FFFF80094152150981762104E -S31540014EB0C2052150DA03216080A340011280000718 -S31540014EC082152150DA032164C200600480A34001A7 -S31540014ED002800AA41B0000707FFFB0CC9010201006 -S31540014EE01110008490122378920220087FFFF7EE7A -S31540014EF09415215098176210C2052150DA03217882 -S31540014F0080A340011280000782152150DA03217CDB -S31540014F10C200600480A3400102800A9C1B0000700D -S31540014F207FFFB0BA90102010C025A1C0111000001B -S31540014F3092102000150FFC007FFFF8B2961020005A -S31540014F40030FFC0080A200011280000880A26000CD -S31540014F501280000601000000C205A1C080A06000C9 -S31540014F6002800005111000007FFFB0A890102010AC -S31540014F701110000092102000152FFC007FFFF8A1B0 -S31540014F80961020000310020080A200011280000842 -S31540014F9080A260001280000601000000C205A1C087 -S31540014FA080A0600002800005113000007FFFB097AD -S31540014FB0901020101130000092102000150FFC00B7 -S31540014FC07FFFF890961020000330020080A2000176 -S31540014FD01280000880A260001280000601000000D5 -S31540014FE0C205A1C080A0600002800005113000000A -S31540014FF07FFFB086901020101130000092102000E3 -S31540015000152FFC007FFFF87F96102000032FFC0030 -S3154001501080A200011280000880A260001280000672 -S3154001502001000000C205A1C080A060000280000509 -S31540015030111000007FFFB075901020101110000074 -S315400150407FFFF87A130FE0000310100080A20001E1 -S315400150501280000601000000C205A1C080A06000C8 -S3154001506002800005111000007FFFB06890102010EB -S31540015070111000007FFFF877130FE000030FE000E7 -S3154001508080A200011280000601000000C205A1C0F5 -S3154001509080A0600022800005191000857FFFB05B6B -S315400150A09010201019100085921320E8C025A1C048 -S315400150B09007BFF07FFFF78F941521501910008597 -S315400150C0C20320D8DA05215080A340018215215020 -S315400150D012800007981320D8DA006004C203200426 -S315400150E080A3400102800A461B0000707FFFB04743 -S315400150F0901020111B100085921360D0C025A1C0CD -S315400151009007BFF07FFFF77B94152150C207BFE0A0 -S31540015110DA05215080A340011280000782152150F3 -S31540015120DA006004C207BFE480A3400102800A3E60 -S31540015130010000007FFFB035901020119007BFF0AD -S315400151409215E0C87FFFF76B94152150C205E0C860 -S31540015150DA05215080A340018215215012800007B3 -S315400151609815E0C8DA006004C203200480A3400118 -S3154001517002800A32010000007FFFB0249010201106 -S3154001518003100085921060B89007BFF07FFFF75972 -S3154001519094152150C20720B0DA05215080A3400161 -S315400151A08215215012800007981720B0DA0060045A -S315400151B0C203200480A3400102800A251B0000701F -S315400151C07FFFB012901020119007BFF0921660F049 -S315400151D07FFFF74894152150C205A1C01B000070FE -S315400151E08208400D1900002080A0400C2110014486 -S315400151F002800004231000807FFFB004901020112C -S3154001520094142150C02461C09007BFE87FFFF7394D -S315400152109207BFF0DA042150C207BFE880A34001DC -S315400152201280000794142150DA02A004C207BFEC91 -S3154001523080A3400102800A10010000007FFFAFF306 -S315400152409010201119100085901320E89207BFE0B5 -S315400152507FFFF72894152150C20720B0DA05215067 -S3154001526080A340018215215012800007981720B073 -S31540015270DA006004C203200480A3400102800A03CD -S315400152801B0000707FFFAFE1901020111B100085BD -S3154001529003100085901360E8921060D0C025A1C02C -S315400152A07FFFF7149415215019100085C20320E899 -S315400152B0DA05215080A34001821521501280000752 -S315400152C0981320E8DA006004C203200480A3400159 -S315400152D0028009F8010000007FFFAFCC9010201139 -S315400152E09007BFE89215E0C87FFFF7029415215059 -S315400152F0C205E0C8DA05215080A34001821521503C -S31540015300128000079815E0C8DA006004C203200441 -S3154001531080A34001028009EC010000007FFFAFBB82 -S31540015320901020071B100085921360B89007BFE8C4 -S315400153307FFFF6F09415215025000070D805A1C0D5 -S315400153409A14A01F03000010980B000D82106010E4 -S3154001535080A3000121100144028000042310008033 -S315400153607FFFAFAA90102011C02461C09007BFE80B -S31540015370921660F07FFFF6DF94142150C20461C09B -S31540015380820840121B00002080A0400D22800005AB -S31540015390031000857FFFAF9D9010201103100085FB -S315400153A0901060D894142150C02461C07FFFF6D17B -S315400153B09207BFF019100085C20320D8DA042150A4 -S315400153C080A340019414215012800007821320D8F3 -S315400153D0DA02A004C200600480A34001028008B83A -S315400153E0010000007FFFAF89901020111B1000853E -S315400153F003100085901360D8921060E87FFFF6BDD8 -S315400154009415215019100085C20320D0DA05215088 -S3154001541080A340018215215012800007981320D0A5 -S31540015420DA006004C203200480A34001028008A977 -S31540015430010000007FFFAF75901020119016E0E04B -S31540015440921000087FFFF6AB94152150C20720B099 -S31540015450DA05215080A340018215215012800007B0 -S31540015460981720B0DA006004C203200480A34001EB -S315400154700280089D1B0000707FFFAF6490102011D1 -S31540015480C025A1C09016E0E09215E0C87FFFF699CD -S3154001549094152150C205E0C8DA05215080A3400188 -S315400154A082152150128000079815E0C8DA00600481 -S315400154B0C203200480A34001028008940100000039 -S315400154C07FFFAF52901020111B100085921360B8D8 -S315400154D09016E0E07FFFF68794152150C20720B071 -S315400154E0DA05215080A34001821521501280000720 -S315400154F0981720B0DA006004C203200480A340015B -S31540015500028008871B0000707FFFAF40901020117A -S31540015510C025A1C09016E0E0921660F07FFFF675B7 -S3154001552094152150C205A1C01B0000708208400D90 -S315400155301900002080A0400C231000800280000446 -S31540015540211001447FFFAF31901020119414215056 -S31540015550C02461C09015E0C87FFFF6669207BFF090 -S31540015560C205E0C8DA04215080A3400194142150B9 -S31540015570128000078215E0C8DA02A004C200600466 -S3154001558080A340010280086F010000007FFFAF1F2A -S31540015590901020119015E0C89207BFE87FFFF6559D -S315400155A094152150C205E0C8DA05215080A3400177 -S315400155B082152150128000079815E0C8DA00600470 -S315400155C0C203200480A34001028008630100000059 -S315400155D07FFFAF0E901020119015E0C89216E0E0C3 -S315400155E07FFFF64494152150C205E0C8DA052150E3 -S315400155F080A3400182152150128000079815E0C80A -S31540015600DA006004C203200480A3400102800857E7 -S31540015610010000007FFFAEFD901020119015E0C8FB -S31540015620921000087FFFF63394152150C205E0C859 -S31540015630DA05215080A340018215215012800007CE -S315400156409815E0C8DA006004C203200480A3400133 -S31540015650028007F3010000007FFFAEEC901020119D -S3154001566003100085921060B89015E0C87FFFF621BF -S3154001567094152150C20720B0DA05215080A340017C -S315400156808215215012800007981720B0DA00600475 -S31540015690C203200480A34001028007E61B0000707C -S315400156A07FFFAEDA901020119015E0C8921660F097 -S315400156B07FFFF61094152150C205A1C0310000703C -S315400156C0820840183B00002080A0401D2310014461 -S315400156D002800004211000807FFFAECC9010201183 -S315400156E019100085901320B89207BFF07FFFF6018D -S315400156F094146150C20421C0AA16201F350000101F -S3154001570082084015A616A01080A04013028000040E -S31540015710251000857FFFAEBD90102011C02421C009 -S315400157209014A0B89207BFE87FFFF5F29414615038 -S31540015730C20421C08208401580A0401302800004A3 -S31540015740010000007FFFAEB190102011C02421C09E -S315400157509014A0B89216E0E07FFFF5E694146150EC -S31540015760C20421C08208401580A040130280000572 -S31540015770131000857FFFAEA59010201113100085F0 -S31540015780C02421C0921260C89014A0B87FFFF5D9F9 -S3154001579094146150C20421C08208401580A0401370 -S315400157A0028000059014A0B87FFFAE98901020119A -S315400157B09014A0B8C02421C0921000087FFFF5CDF7 -S315400157C094146150C20421C08208401580A0401340 -S315400157D002800005131000857FFFAE8C90102011CA -S315400157E013100085C02421C09014A0B8921260F015 -S315400157F07FFFF5C094146150C20421C0820840184D -S3154001580080A0401D2280000515203E837FFFAE7F8C -S315400158109010201115203E83170021C89412A3FF32 -S315400158209612E3A1191FC0001B00C0009A1360B075 -S3154001583098132102D43FBFD0D83FBFD8C02421C03E -S315400158409007BFD89207BFD07FFFF5AA9407BFC87C -S31540015850DA07BFC8033FFC0080A340010280070B63 -S31540015860A207BFC87FFFAE6990102011151086832D -S31540015870170021C89412A3FF9612E3A11900400014 -S315400158801B00C0009A1360B098132102D43FBFD0C9 -S31540015890D83FBFD8C025A1C09007BFD89207BFD077 -S315400158A07FFFF5949407BFC8DA046004C207BFC8F6 -S315400158B08090400D1280000A1B000070C205A1C0F5 -S315400158C09A13601F190000108208400D9813200496 -S315400158D080A0400C22800005150FFC007FFFAE4BD7 -S315400158E090102011150FFC00170281D89412A04088 -S315400158F09612E10C9A102010190006AFD43FBFD082 -S31540015900D83FBFD8C025A1C09007BFD89207BFD006 -S315400159107FFFF5789407BFC8030006AEDA07BFC814 -S315400159208210639580A340011280000703003A9AD2 -S31540015930DA0460048210630F80A3400102800733BA -S31540015940010000007FFFAE3190102011150FFFFFBF -S31540015950170281D89412A3409612E10C9A10201096 -S31540015960190006AFD43FBFD0D83FBFD8C025A1C08C -S315400159709007BFD89207BFD07FFFF55E9407BFC897 -S31540015980DA046004C207BFC88090400D1280000A45 -S315400159901B000070C205A1C09A13601F19000010B8 -S315400159A08208400D9813200480A0400C0280000418 -S315400159B0010000007FFFAE1590102011C025A1C047 -S315400159C0111088007FFFF63713100100031066C9D6 -S315400159D0821062CA80A20001128000060100000006 -S315400159E0C205A1C080A06000028000051111BBFE66 -S315400159F07FFFAE06901020111111BBFE901223FFBE -S31540015A007FFFF628130C7040031527CA8210611ECA -S31540015A1080A200011280000601000000C205A1C05B -S31540015A2080A06000028000051310C7FF7FFFADF71D -S31540015A30901020111310C7FF921263FC7FFFF619D5 -S31540015A40111E607E031D73FC8210633880A2000123 -S31540015A501280000601000000C205A1C080A06000BE -S31540015A6002800005130FE0007FFFADE89010201182 -S31540015A70130FE000921260017FFFF60A1100200029 -S31540015A8080A220001280000A1B000070C205A1C03E -S31540015A909A13601F190000108208400D98132004C4 -S31540015AA080A0400C02800005110FE0007FFFADD7BA -S31540015AB090102011110FE000C025A1C07FFFF5F91C -S31540015AC092100008030FE00080A200011280000638 -S31540015AD001000000C205A1C080A06000028000054F -S31540015AE0130FE0007FFFADC990102011130FE000A6 -S31540015AF0921260017FFFF5EB1100200080A2200089 -S31540015B001280000A1B000070C205A1C09A13601FD3 -S31540015B10190000108208400D9813200480A0400C03 -S31540015B20028000051B1000857FFFADB89010201143 -S31540015B301B100085921360E8C025A1C09007BFF0F5 -S31540015B407FFFF4DE9415215019100085C20320E829 -S31540015B50DA05215080A340018215215012800007A9 -S31540015B60981320E8DA006004C203200480A34001B0 -S31540015B70028006BA010000007FFFADA490102012FA -S31540015B801B100085921360D09007BFF07FFFF4CBC6 -S31540015B909415215019100085C20320D0DA052150F1 -S31540015BA080A340018215215012800007981320D00E -S31540015BB0DA006004C203200480A34001028006ACDF -S31540015BC0010000007FFFAD91901020129007BFF0B9 -S31540015BD09215E0C87FFFF4B994152150C205E0C87B -S31540015BE0DA05215080A34001821521501280000719 -S31540015BF09815E0C8DA006004C203200480A340017E -S31540015C00028006A0010000007FFFAD8090102012A7 -S31540015C101B100085921360B89007BFF07FFFF4A771 -S31540015C2094152150C20720B0DA05215080A34001C6 -S31540015C308215215012800007981720B0DA006004BF -S31540015C40C203200480A34001028006931B0000701A -S31540015C507FFFAD6E901020129007BFF0921660F054 -S31540015C607FFFF49694152150C205A1C01B00007018 -S31540015C708208400D1900002080A0400C21100144EB -S31540015C8002800004231000807FFFAD609010201237 -S31540015C9094142150C02461C09007BFE87FFFF48768 -S31540015CA09207BFF0DA042150C207BFE880A3400142 -S31540015CB01280000794142150DA02A004C207BFECF7 -S31540015CC080A34001028006DE010000007FFFAD4F48 -S31540015CD0901020120310008519100085901060E87D -S31540015CE0921320D87FFFF47594152150C20720B036 -S31540015CF0DA05215080A34001821521501280000708 -S31540015D00981720B0DA006004C203200480A3400142 -S31540015D10028006D01B0000707FFFAD3C9010201220 -S31540015D20C025A1C09007BFE89215E0C87FFFF46384 -S31540015D3094152150C205E0C8DA05215080A34001DF -S31540015D4082152150128000079815E0C8DA006004D8 -S31540015D50C203200480A34001028006C7010000005F -S31540015D607FFFAD2A901024991B100085921360B8CD -S31540015D709007BFE87FFFF45194152150C20720B028 -S31540015D80DA05215080A34001821521501280000777 -S31540015D90981720B0DA006004C203200480A34001B2 -S31540015DA0028006BA1B0000707FFFAD1890102012CA -S31540015DB09007BFE8921660F07FFFF440941521509A -S31540015DC0C205A1C01B0000708208400D19000020C9 -S31540015DD080A0400C21100144028000042310008061 -S31540015DE07FFFAD0A9010201294142150C02461C047 -S31540015DF09016E0E07FFFF4319207BFF0C206E0E083 -S31540015E00DA04215080A340019414215012800007E6 -S31540015E108216E0E0DA02A004C200600480A34001D9 -S31540015E20028006A4010000007FFFACF8901020120A -S31540015E309016E0E09207BFE87FFFF42094152150C9 -S31540015E40C20720B0DA05215080A3400182152150B6 -S31540015E5012800007981720B0DA006004C2032004BC -S31540015E6080A34001028006981B0000707FFFACE7CB -S31540015E7090102012C025A1C09016E0E09215E0C80E -S31540015E807FFFF40E94152150C205E0C8DA05215072 -S31540015E9080A3400182152150128000079815E0C861 -S31540015EA0DA006004C203200480A340010280068F09 -S31540015EB0010000007FFFACD5901020120310008531 -S31540015EC0921060B89016E0E07FFFF3FC94152150E4 -S31540015ED0C20720B0DA05215080A340018215215026 -S31540015EE012800007981720B0DA006004C20320042C -S31540015EF080A34001028006821B0000707FFFACC375 -S31540015F00901020129016E0E0921660F07FFFF3EBBE -S31540015F1094152150C205A1C01B0000708208400D96 -S31540015F201900002080A0400C211001440280000489 -S31540015F30231000807FFFACB590102012941421509D -S31540015F40C02461C09015E0C87FFFF3DC9207BFF023 -S31540015F50C205E0C8DA04215080A3400194142150BF -S31540015F60128000078215E0C8DA02A004C20060046C -S31540015F7080A340010280061E010000007FFFACA302 -S31540015F80901020129015E0C89207BFE87FFFF3CB2F -S31540015F9094152150C205E0C8DA05215080A340017D -S31540015FA082152150128000079815E0C8DA00600476 -S31540015FB0C203200480A340010280061201000000B2 -S31540015FC07FFFAC92901020129015E0C89216E0E047 -S31540015FD07FFFF3BA94152150C205E0C8DA05215076 -S31540015FE080A3400182152150128000079815E0C810 -S31540015FF0DA006004C203200480A340010280060641 -S31540016000010000007FFFAC81901020129015E0C87E -S31540016010921000087FFFF3A994152150C205E0C8EC -S31540016020DA05215080A340018215215012800007D4 -S315400160309815E0C8DA006004C203200480A3400139 -S31540016040028005FA010000007FFFAC70901020121B -S31540016050191000859015E0C8921320B87FFFF39779 -S315400160609415215003000070A610601FDA05A1C0E7 -S31540016070030000109A0B4013AA10601080A340152C -S315400160802510008523100144028000042110008060 -S315400160907FFFAC5E90102012C02421C09014A0B89E -S315400160A09207BFF07FFFF38594146150C20421C06B -S315400160B08208401380A040150280000401000000C0 -S315400160C07FFFAC5290102012C02421C09014A0B87A -S315400160D09207BFE87FFFF37994146150C20421C04F -S315400160E08208401380A04015028000040100000090 -S315400160F07FFFAC4690102012C02421C09014A0B856 -S315400161009216E0E07FFFF36D94146150C20421C002 -S315400161108208401380A040150280000513100085B7 -S315400161207FFFAC3A9010201213100085C02421C085 -S31540016130921260C89014A0B87FFFF3609414615026 -S31540016140C20421C08208401380A040150280000588 -S315400161509014A0B87FFFAC2D901020129014A0B8D7 -S31540016160C02421C0921000087FFFF354941461505B -S31540016170C20421C08208401380A040150280000459 -S31540016180010000007FFFAC2190102012C02421C0E5 -S315400161909014A0B8921660F07FFFF34894146150B2 -S315400161A0C20421C08330600E8208600380A0600271 -S315400161B0228000051103C0007FFFAC14901020120D -S315400161C01103C0007FFFF57F3B100084A417639045 -S315400161D0AA146150C02421C0A604A008A210200020 -S315400161E0B0102005A004401292044013941521508A -S315400161F07FFFF33290100010DA042010C2052150BF -S31540016200A204601880A3400112800007901020125A -S31540016210DA042014C205600480A34001028004749C -S31540016220010000007FFFABF901000000B0863FFF8F -S315400162303CBFFFEEA00440121110008590122020B1 -S31540016240920220087FFFF31D941521509817639001 -S31540016250C2052150DA0320A080A340011280000725 -S3154001626082152150DA0320A4C200600480A34001B4 -S31540016270028004DC1B0000707FFFABE4901020120B -S315400162801110008590122038C025A1C09202200825 -S315400162907FFFF30A9415215098176390C205215048 -S315400162A0DA0320B880A340011280000782152150ED -S315400162B0DA0320BCC200600480A340010280047F4F -S315400162C01B0000707FFFABD190102012111000858A -S315400162D090122050C025A1C0920220087FFFF2F7FC -S315400162E09415215098176390C2052150DA0320D0A6 -S315400162F080A340011280000782152150DA0320D481 -S31540016300C200600480A34001028004761B00007035 -S315400163107FFFABBE901020121110008590122068AD -S31540016320C025A1C0920220087FFFF2E494152150B6 -S3154001633098176390C2052150DA0320E880A34001F3 -S315400163401280000782152150DA0320ECC200600456 -S3154001635080A340010280046D1B0000707FFFABAB40 -S31540016360901020121110008590122080C025A1C0E6 -S31540016370920220087FFFF2D194152150981763901D -S31540016380C2052150DA03210080A340011280000793 -S3154001639082152150DA032104C200600480A3400122 -S315400163A0028004641B0000707FFFAB98901020129E -S315400163B0C025A1C0111010007FFFF3B013100000DB -S315400163C00310300080A20001128000060100000087 -S315400163D0C205A1C080A0600002800005111FE00037 -S315400163E07FFFAB8A90102012111FE00013100000AE -S315400163F07FFFF2B794152150031FFC00DA052150A7 -S3154001640080A340011280000A82152150C200600417 -S3154001641080A060001280000601000000C205A1C0F4 -S3154001642080A0600002800005111FE0007FFFAB776E -S315400164309010201B111FE000133000007FFFF2A4D3 -S3154001644094152150033FFC00DA05215080A34001F9 -S315400164501280000A82152150C200600480A06000AB -S315400164601280000601000000C205A1C080A06000A4 -S3154001647002800005111000007FFFAB649010201CC4 -S3154001648011100000921020107FFFF29194152150B7 -S31540016490C205A1C01B0000708208400D19000020F2 -S315400164A080A0400C2110014402800004231000808A -S315400164B07FFFAB569010201D94142150C02461C01B -S315400164C0110020007FFFF282130FC000DA04215031 -S315400164D0030E000080A340011280000A941421504B -S315400164E0C202A00480A060001280000601000000E4 -S315400164F0C20461C080A0600002800005111FDFFF59 -S315400165007FFFAB429010201E111FDFFF901223FF29 -S31540016510131000007FFFF26E941521500311FFFF07 -S31540016520821063FFDA05215080A3400112800007E3 -S3154001653082152150DA0060040338000080A340012F -S3154001654002800405010000007FFFAB309010201F40 -S31540016550111FD000130FF0007FFFF25D94152150FB -S315400165600311FC80DA05215080A340011280000A04 -S3154001657082152150C200600480A06000128000068E -S3154001658001000000C205A1C080A060000280000594 -S31540016590111FDFFF7FFFAB1D90102021111FDFFF71 -S315400165A0901223FF921000087FFFF2499415215063 -S315400165B00313FBFF821063FFDA05215080A34001DC -S315400165C01280000882152150DA0060040330000071 -S315400165D08210602080A34001028003E40100000094 -S315400165E07FFFAB0A901020207FFFF4761103C00095 -S315400165F0C025A1C09007BFE07FFFF244921521500C -S31540016600C207BFE0DA05215080A34001128000078E -S3154001661082152150DA006004C207BFE480A340011D -S31540016620028003D7010000007FFFAAF890102013D3 -S315400166301B100085901360E87FFFF23492152150BC -S3154001664003100085DA0060E8C205215080A0400DA4 -S31540016650191000858215215012800007901320E8F9 -S31540016660DA006004C202200480A34001028003C90B -S31540016670010000007FFFAAE5901020131B10008542 -S31540016680901360D07FFFF221921521501910008599 -S31540016690C20320D0DA05215080A340018215215042 -S315400166A012800007981320D0DA006004C203200448 -S315400166B080A34001028003BC010000007FFFAAD3F2 -S315400166C0901020131B100085901360D87FFFF20FA6 -S315400166D092152150C20720B0DA05215080A340010E -S315400166E08215215012800007981720B0DA00600405 -S315400166F0C203200480A34001028003B01B00007046 -S315400167007FFFAAC29010201303100085901060B835 -S31540016710C025A1C07FFFF1FD92152150C20720B0CF -S31540016720DA05215080A340018215215012800007CD -S31540016730981720B0DA006004C203200480A3400108 -S315400167400280040F1B0000707FFFAAB09010201337 -S31540016750C025A1C09015E0C87FFFF1EC92152150EC -S31540016760C2052150DA05E0C880A0400D82152150AE -S31540016770128000079015E0C8DA006004C2022004C6 -S3154001678080A3400102800407010000007FFFAA9F09 -S3154001679090102013170C00089A10200019100C00B5 -S315400167A015300F789612E001D83FBFF0D43FBFC0F5 -S315400167B09007BFF07FFFF1D59215215003100400D9 -S315400167C0DA05215080A340011280000A821521502A -S315400167D0C200600480A06000128000060100000033 -S315400167E0C205A1C080A06000028000059007BFC01D -S315400167F07FFFAA86901020139007BFC07FFFF1C389 -S3154001680092152150C2052150DA0720B080A0400DD3 -S315400168108215215012800007981720B0DA006004D3 -S31540016820C203200480A34001028003E31B000070E1 -S315400168307FFFAA7690102013901660F07FFFF1B388 -S3154001684092152150C205A1C08330600E82086003B3 -S3154001685080A0600202800004211000807FFFAA6BA5 -S3154001686090102013C02421C07FFFF2981111F2002D -S315400168700310E80080A2000112800006010000001A -S31540016880C20421C080A06000028000040100000013 -S315400168907FFFAA5E901020137FFFF3CA11100000FC -S315400168A01101F5897FFFF289901221E20308E9641B -S315400168B080A200011280000601000000C205A1C0AD -S315400168C080A0600002800004010000007FFFAA4F03 -S315400168D0901020237FFFF27D1112A208031141007F -S315400168E080A200011280000601000000C205A1C07D -S315400168F080A0600002800004010000007FFFAA43DF -S31540016900901020237FFFF3AF110010009007BFF0D6 -S31540016910921660F07FFFF1649415215003100C002C -S31540016920DA05215080A340011280000A82152150C8 -S31540016930C200600480A060001280000601000000D1 -S31540016940C205A1C080A0600002800005901660F0DB -S315400169507FFFAA2E90102014901660F09207BFC0B8 -S315400169607FFFF1569415215003200000DA0521508E -S3154001697080A340011280000A82152150C2006004A2 -S3154001698080A060001280000601000000C205A1C07F -S3154001699080A0600002800004010000007FFFAA1B66 -S315400169A0901020147FFFF19190102001030FE00019 -S315400169B080A200011280000601000000C205A1C0AC -S315400169C080A0600002800004010000007FFFAA0F42 -S315400169D0901020147FFFF17D90102001030FFC00E1 -S315400169E080A200011280000880A260001280000689 -S315400169F001000000C205A1C080A060000280000421 -S31540016A00010000007FFFAA01901020147FFFF36D63 -S31540016A101110100019100085D41B20D07FFFF1F909 -S31540016A20D01E60F003100085D03D2150DA0060D8B9 -S31540016A30C205215080A0400D1910008582152150B4 -S31540016A4012800007901320D8DA006004C2022004A5 -S31540016A5080A3400102800361010000007FFFA9EB92 -S31540016A60901020227FFFF357111000001704008079 -S31540016A70150F28009612E0F09A102000190FFC001D -S31540016A80D43FBFC0D83FBFF09007BFF09207BFC009 -S31540016A907FFFF10594152150030FFC00DA052150C3 -S31540016AA080A340011280000682152150C200600475 -S31540016AB080A0600002800004010000007FFFA9D38E -S31540016AC0901020157FFFF33F112000001700004072 -S31540016AD0150014009612E0019A102000190FFC00CF -S31540016AE0D43FBFC0D83FBFF09007BFF09207BFC0A9 -S31540016AF07FFFF0ED94152150030FFC00DA0521507C -S31540016B0080A340011280000682152150C200600414 -S31540016B1080A0600102800004010000007FFFA9BB44 -S31540016B20901020157FFFF327113000001700004019 -S31540016B30152014009612E0019A102000192FFC002E -S31540016B40D43FBFC0D83FBFF09007BFF09207BFC048 -S31540016B507FFFF0D594152150032FFC00DA05215013 -S31540016B6080A340011280000682152150C2006004B4 -S31540016B7080A0600102800004010000007FFFA9A3FC -S31540016B80901020157FFFF30F11100000190FFC0024 -S31540016B909A102000D83FBFF09007BFF09216E0E070 -S31540016BA07FFFF0C194152150C206E0E0DA0521507D -S31540016BB080A3400182152150128000079816E0E01B -S31540016BC0DA006004C203200480A34001028000046D -S31540016BD0010000007FFFA98D901020157FFFF2F97B -S31540016BE01120000017000040150014009612E00124 -S31540016BF0190FFC009A102000D43FBFC0D83FBFF008 -S31540016C009007BFF09216E0E07FFFF0A79415215060 -S31540016C10C206E0E0DA05215080A3400182152150E9 -S31540016C20128000079816E0E0DA006004C2032004EF -S31540016C3080A3400102800004010000007FFFA97388 -S31540016C40901020157FFFF2DF113000001700004041 -S31540016C50152014009612E0019A102000192FFC000D -S31540016C60D43FBFC0D83FBFF09007BFF09216E0E0D7 -S31540016C707FFFF08D94152150C2052150DA06E0E0E0 -S31540016C8080A0400D82152150128000079016E0E049 -S31540016C90DA006004C202200480A34001028000049D -S31540016CA0010000007FFFA959901020157FFFF2C512 -S31540016CB01110000015100000961020019A102001B5 -S31540016CC0190FFC00D43FBFC0D83FBFF09007BFF0BB -S31540016CD09207BFC07FFFF079941521500310000041 -S31540016CE0DA05215080A34001128000068215215009 -S31540016CF0C200600480A0600202800004010000001E -S31540016D007FFFA942901020157FFFF2AE11200000AF -S31540016D109007BFF09207BFC07FFFF06894152150DE -S31540016D2003100000DA05215080A3400112800006BD -S31540016D3082152150C200600480A0600302800004D5 -S31540016D40010000007FFFA931901020157FFFF29DC1 -S31540016D50113000009A102001192FFC00D83FBFF0D6 -S31540016D609007BFF09207BFC07FFFF05494152150A2 -S31540016D7003300000DA05215080A34001128000064D -S31540016D8082152150C200600480A060030280000485 -S31540016D90010000007FFFA91D901020157FFFF28999 -S31540016DA011100000150FFC04172F26159412A0127E -S31540016DB09612E231190FFEAE1B1CD2E89A136011EE -S31540016DC098132154D43FBFC0D83FBFF09007BFF0BE -S31540016DD09207BFC07FFFF04794152150030FFEA7CE -S31540016DE082106296DA05215080A340011280000884 -S31540016DF082152150DA006004032C1B348210602F67 -S31540016E0080A3400102800004010000007FFFA8FF2B -S31540016E10901020157FFFF26B112000009007BFF004 -S31540016E209207BFC07FFFF03394152150030FFEA791 -S31540016E3082106296DA05215080A340011280000833 -S31540016E4082152150DA006004032C1B348210603015 -S31540016E5080A3400102800004010000007FFFA8EBEF -S31540016E60901020157FFFF25711300000192FFC04B6 -S31540016E701B2F26159A13623198132012D83FBFC093 -S31540016E809007BFF09207BFC07FFFF01A94152150BB -S31540016E90032FFEA782106296DA05215080A3400196 -S31540016EA01280000882152150DA006004032C1B343D -S31540016EB08210603080A3400102800004010000007E -S31540016EC07FFFA8D2901020157FFFF23E11100000DF -S31540016ED015101000961020009A1020001910380045 -S31540016EE0D43FBFC0D83FBFF09007BFF09207BFC0A5 -S31540016EF07FFFF0009415215003102400DA0521503C -S31540016F0080A340011280000682152150C200600410 -S31540016F1080A0600002800004010000007FFFA8BB42 -S31540016F20901020157FFFF227112000009007BFF037 -S31540016F309207BFC07FFFEFEF941521500310240045 -S31540016F40DA05215080A340011280000682152150A6 -S31540016F50C200600480A060000280000401000000BD -S31540016F607FFFA8AA901020157FFFF216113000006E -S31540016F709007BFF09207BFC07FFFEFDE9415215007 -S31540016F8003102400DA05215080A340011280000637 -S31540016F9082152150C200600480A060000280000476 -S31540016FA0010000007FFFA899901020157FFFF20590 -S31540016FB011100000210FE000110020007FFFF0B901 -S31540016FC09214200180A220001280012301000000BA -S31540016FD07FFFF1FC11200000110020007FFFF0B17E -S31540016FE09214200180A220001280011801000000A5 -S31540016FF07FFFF1F411300000921420017FFFF0A9C8 -S315400170001100200080A220001280010D0100000025 -S315400170107FFFF1EC111000009A102000190FFC00BF -S31540017020D83FBFF09007BFF07FFFEFB892152150D0 -S31540017030C207BFF0DA05215080A340011280000744 -S3154001704082152150DA006004C207BFF480A34001D3 -S31540017050028002A7010000007FFFA86C9010201556 -S315400170607FFFF1D8112000009007BFF07FFFEFA707 -S3154001707092152150C207BFF0DA05215080A3400185 -S315400170801280000782152150DA006004C207BFF45E -S3154001709080A340010280029B010000007FFFA85BA4 -S315400170A0901020157FFFF1C7113000009007BFF007 -S315400170B07FFFEF9692152150C207BFF0DA052150A6 -S315400170C080A340011280000782152150DA00600436 -S315400170D0C207BFF480A340010280028F0100000075 -S315400170E07FFFA84A901020157FFFF1B611100000CE -S315400170F0030FDFFF901063FF7FFFF074A0100008BD -S3154001710080A2001002800004010000007FFFA83F1A -S31540017110901020157FFFF1AB112000007FFFF06B2F -S3154001712090100010030FE00080A2000102800004CD -S31540017130010000007FFFA835901020157FFFF1A1C7 -S31540017140113000007FFFF0619010001080A2001006 -S3154001715002800004010000007FFFA82C901020153A -S315400171607FFFF198901020007FFFF060901521502D -S31540017170032FFE00DA05215080A34001128000064C -S3154001718082152150C200600480A060000280000583 -S31540017190211001447FFFA81D9010201621100144A3 -S315400171A07FFFF05C90142158DA042158032FF00038 -S315400171B080A3400102800004A21421587FFFA81336 -S315400171C0901020167FFFF05D90100011DA042158CF -S315400171D0030FE00080A3400102800004010000008B -S315400171E07FFFA80A901020167FFFF064901521506A -S315400171F0030FFBF7821063F0DA05215080A34001AB -S315400172001280000882152150DA0060040303FF1240 -S315400172108210604A80A3400102800005921660F008 -S315400172207FFFA7FA90102016921660F09007BFF0E4 -S315400172307FFFEF3094152150C205A1C08330600E07 -S315400172408208600780A06002028000051910004B89 -S315400172507FFFA7EE901020171910004B17100080E2 -S31540017260DA02E1C8821322F880A0400DE00322F839 -S3154001727002800004A212E1C87FFFA7E49010201803 -S31540017280C204600480A04010028000040100000096 -S315400172907FFFA7DE90102018C204600880A060001E -S315400172A01280007701000000C204600C80A06000DB -S315400172B01280006C010000007FFFEEE60100000035 -S315400172C080A220010280019801000000190C40298A -S315400172D01B23CD1B9A13609B981320069410200004 -S315400172E096102000D83FBFF0D43FBFC07FFFEF2F9D -S315400172F09007BFF003100083A21062101B1000819B -S3154001730003100144A0136210A4106150B010200074 -S31540017310832E2002DA044001DA27BFC09007BFC09E -S315400173207FFFEF25921521509B2E2003D804000D97 -S31540017330C2052150B00620019603401080A30001EA -S315400173401280000790102019DA02E004C204A0045A -S3154001735080A340010280000580A620FF7FFFA7ABE6 -S315400173600100000080A620FF04BFFFEB832E200210 -S3154001737003100083A41062101B1000800310014407 -S31540017380A2136210A6106150B0102000A12E200257 -S31540017390C2048010C227BFC0921521507FFFEEDB89 -S315400173A09007BFC0DA044010C2052150B006200242 -S315400173B09804001180A34001128000079010201A02 -S315400173C0DA032004C204E00480A3400102800005E0 -S315400173D080A620FF7FFFA78D0100000080A620FF29 -S315400173E024BFFFECA12E200230800211C205A1C0AC -S315400173F080A0600022BFFB8FB0863FFF30BFFB8A73 -S31540017400C205A1C080A0600002BFF1450100000095 -S3154001741030BFF141C205A1C080A0600002BFF13674 -S315400174200100000030BFF132C205A1C080A060005A -S3154001743002BFF1270100000030BFF1237FFFA77390 -S315400174409010201530BFFEF37FFFA77090102015D6 -S3154001745030BFFEE87FFFA76D9010201530BFFEDDDF -S315400174607FFFA76A9010201830BFFF947FFFA76760 -S315400174709010201010BFF678111000847FFFA7638B -S315400174809010201830BFFF89C207BFCC80A0600092 -S3154001749012BFF8F501000000C20421C08208401560 -S315400174A09A16A00880A0400D12BFF8EF0100000017 -S315400174B010BFF8F015108683C205A1C09A13601F4C -S315400174C0190000108208400D9813200880A0400C36 -S315400174D012BFFB7D1110008510BFFB7F901220501B -S315400174E0C205A1C09A13601F190000108208400D01 -S315400174F09813200880A0400C12BFFB86111000850E -S3154001750010BFFB8890122068C205A1C09A13601F64 -S31540017510190000108208400D9813200480A0400CE9 -S3154001752012BFFB8F1110008510BFFB919012208076 -S31540017530C205A1C09A13601F190000108208400DB0 -S315400175409813200880A0400C12BFFB980100000050 -S3154001755030BFFB98C205A1C080A0600002BFFBFE00 -S31540017560111FD00030BFFBF9C205A1C080A0600049 -S3154001757002BFFC1E0100000030BFFC1AC205A1C0BB -S3154001758080A0600002BFFC2C1B10008530BFFC2789 -S31540017590C205A1C080A0600002BFFC3A1B10008555 -S315400175A030BFFC35C205A1C080A0600002BFFC47C8 -S315400175B01B10008530BFFC42C205A1C09A13601F53 -S315400175C0190000108208400D9813201080A0400C2D -S315400175D012BFFC4C0310008510BFFC4E901060B8E2 -S315400175E0C205A1C09A13601F190000108208400D00 -S315400175F09813200480A0400C12BFFB201110008577 -S3154001760010BFFB2290122038C205A1C080A06000A5 -S3154001761022BFF8D0150FFFFF30BFF8CBC205A1C07E -S3154001762080A0600002BFF8100310008530BFF80B40 -S31540017630C205A1C09A13601F190000108208400DAF -S315400176409813201080A0400C12BFF8169015E0C880 -S3154001765010BFF818921660F0C205A1C080A0600064 -S3154001766002BFF9491B10008530BFF944C205A1C0CC -S3154001767080A0600002BFF9579007BFF030BFF952B2 -S31540017680C205A1C080A0600002BFF9631B1000853E -S3154001769030BFF95EC205A1C09A13601F19000010E0 -S315400176A08208400D9813201080A0400C12BFF96942 -S315400176B09007BFF010BFF96B921660F0C20461C02B -S315400176C080A0600002BFF74B1B10008530BFF74614 -S315400176D0C205A1C080A0600002BFF75A9016E0E043 -S315400176E030BFF755C205A1C09A13601F190000109B -S315400176F08208400D9813201080A0400C12BFF75FFE -S315400177000100000030BFF75FC205A1C080A0600044 -S3154001771002BFF76F1B10008530BFF76AC205A1C0D3 -S315400177209A13601F190000108208400D981320100B -S3154001773080A0400C12BFF7750100000030BFF775FD -S31540017740C20461C080A0600002BFF7949015E0C8F2 -S3154001775030BFF78FC205A1C080A0600002BFF7A06D -S315400177609015E0C830BFF79BC205A1C080A060005C -S3154001777002BFF7AC9015E0C830BFF7A7C205A1C05C -S315400177809A13601F190000108208400D98132010AB -S3154001779080A0400C12BFFBED0100000030BFFBEDA5 -S315400177A0C205A1C080A0600002BFFBFC170C000807 -S315400177B030BFFBF7C205A1C09A13601F1900001024 -S315400177C08208400D9813201080A0400C12BFFC196E -S315400177D0901660F030BFFC1AC205A1C080A06000BF -S315400177E002BFFCA10100000030BFFC9DC20461C084 -S315400177F080A0600002BFF9E59015E0C830BFF9E00E -S31540017800C205A1C080A0600002BFF9F19015E0C891 -S3154001781030BFF9ECC205A1C080A0600002BFF9FDEE -S315400178209015E0C830BFF9F8C205A1C080A060003C -S3154001783002BFFA091910008530BFFA04C20461C0BB -S3154001784080A0600002BFF9250310008530BFF920F2 -S31540017850C205A1C09A13601F190000108208400D8D -S315400178609813201080A0400C12BFF92C0100000093 -S3154001787030BFF92CC205A1C080A0600002BFF93C0F -S315400178801B10008530BFF937C205A1C09A13601F8E -S31540017890190000108208400D9813201080A0400C5A -S315400178A012BFF9429007BFE810BFF944921660F043 -S315400178B0C20461C080A0600002BFF95F9016E0E09B -S315400178C030BFF95AC205A1C09A13601F19000010B2 -S315400178D08208400D9813201080A0400C12BFF96415 -S315400178E00100000030BFF964C205A1C080A060005C -S315400178F002BFF9740310008530BFF96FC205A1C0FC -S315400179009A13601F190000108208400D9813201029 -S3154001791080A0400C12BFF97A9016E0E010BFF97CC6 -S31540017920921660F07FFFA6399010201910BFFE69AC -S31540017930190C4029D80061C01B0000709A13601FC2 -S3154001794003000010980B000D8210600880A300010F -S3154001795012BFF5501110008410BFF55290122360EA -S31540017960C205A1C09A13601F190000108208400D7C -S315400179709813200480A0400C12BFF55811100084C2 -S3154001798010BFF55A90122378C205A1C09A13601F01 -S31540017990190000108208400D9813200480A0400C65 -S315400179A012BFF5600100000030BFF560C205A1C0FD -S315400179B080A0600002BFF4A90310008530BFF4A483 -S315400179C0C205A1C080A0600002BFF4939015E0C833 -S315400179D030BFF48EC205A1C080A0600002BFF47D15 -S315400179E09015E0C830BFF478C20461C080A0600041 -S315400179F002BFF4679015E0C830BFF462C205A1C06A -S31540017A009A13601F190000108208400D9813200236 -S31540017A1080A0400C12BFF5B61B10008510BFF5B80B -S31540017A20921360D0C205A1C080A0600002BFF5C517 -S31540017A309007BFF030BFF5C0C205A1C080A060006D -S31540017A4002BFF5D10310008530BFF5CCC205A1C0F8 -S31540017A509A13601F190000108208400D98132010D8 -S31540017A6080A0400C12BFF5D79007BFF010BFF5D9E3 -S31540017A70921660F0C20461C080A0600022BFF5F397 -S31540017A801910008530BFF5EEC205A1C09A13601FDB -S31540017A90190000108208400D9813201080A0400C58 -S31540017AA012BFF5F91B10008510BFF5FB03100085C9 -S31540017AB0C205A1C080A0600002BFF60B9007BFE8D7 -S31540017AC030BFF606C205A1C080A0600002BFF6170E -S31540017AD01B10008530BFF612C20421C080A0600091 -S31540017AE022BFF03E113C02AF30BFF039C205A1C002 -S31540017AF080A0600002BFFD5B0100000030BFFD5762 -S31540017B00C205A1C080A0600002BFFD670100000060 -S31540017B1030BFFD63C205A1C080A0600002BFFD73F6 -S31540017B200100000030BFFD6FC205A1C080A060000A -S31540017B3002BFF2D70310008530BFF2D2C205A1C001 -S31540017B4080A0600002BFF2C19007BFF030BFF2BC17 -S31540017B50C205A1C080A0600002BFF2AA371000850D -S31540017B6030BFF2A5C205A1C080A0600002BFF028C7 -S31540017B701111FC0030BFF023C205A1C09A13601F4A -S31540017B80190000108208400D9813201080A0400C67 -S31540017B9012BFF3DD9016E0E010BFF3DF921660F0FE -S31540017BA0C205A1C080A0600002BFF39E1B100085E4 -S31540017BB030BFF399C205A1C080A0600002BFF38621 -S31540017BC01B10008530BFF381C205A1C080A06000B3 -S31540017BD002BFF36E1B10008530BFF369C20461C05A -S31540017BE080A0600002BFF3589016E0E030BFF35327 -S31540017BF0C205A1C080A0600002BFF30E1910008526 -S31540017C0030BFF309C205A1C080A0600002BFF2F8EF -S31540017C109007BFE830BFF2F3C20461C080A06000A4 -S31540017C2002BFF2E29007BFE830BFF2DD81C7E0084C -S31540017C3081E80000D27A000081C3E008010000001B -S31540017C4081C3E008900A20209332600492126001B9 -S31540017C508213C0007FFFFFF89E1040000100000024 -S31540017C6081D8200081C3E008010000009DE3BF9850 -S31540017C707FFFFFFC0100000082102400C0A04300EA -S31540017C8081C7E00881E80000833220189A10000875 -S31540017C908088600F028000049010200083336010BA -S31540017CA09008600381C3E008010000009DE3BF988E -S31540017CB0031000C01B1000C1B0106000A213600089 -S31540017CC0031000C21B1000C2A4106000A61361007D -S31540017CD0031000201B100020A8106158AA13600051 -S31540017CE07FFFEBAD9010200C808A2008028001FDB9 -S31540017CF0010000007FFFA5409010200ED080032098 -S31540017D007FFFFFE2010000000310014380A2200231 -S31540017D10028000C6D02060D480A22002148000E4F4 -S31540017D2080A2200380A22001028000D18210201966 -S31540017D30331000A02F1000A0391000A0371000A06A -S31540017D40351000A07FFFFFC7210100007FFFFFC85C -S31540017D50BA04A00C921000117FFFFFBC90100018CE -S31540017D60921000117FFFFFB9900620049010001178 -S31540017D707FFFFFB19210200ADA0660141108000055 -S31540017D80913A000DC205E010900A0001912A2002A5 -S31540017D9013008000900200117FFFFFA79212600A34 -S31540017DA0DA06601411100000913A000DC205E01088 -S31540017DB0900A0001912A2002900200117FFFFF9E46 -S31540017DC09214208EDA066014111C0000913A000DBF -S31540017DD0C205E010900A0001912A20021301C00059 -S31540017DE0900200117FFFFF949212608E9334A0049B -S31540017DF09004600C7FFFFF90921260019214201E46 -S31540017E007FFFFF8D9004A0089010001D7FFFFF8A21 -S31540017E10921020009334E004921260017FFFFF86A6 -S31540017E209004A004111000C2901221087FFFFF8226 -S31540017E3092102000031000E0A0106000933420044B -S31540017E40111000C2901221047FFFFF7B9212601A2B -S31540017E5003048D1582106278C2242004111000E0BB -S31540017E6015100120C0222000A2102003AC12A00050 -S31540017E70A004E00C90047FFD40000A739210200399 -S31540017E801B100143C20360D48200600C932A000197 -S31540017E909202401693326004901000107FFFFF66F5 -S31540017EA09212601EA204600180A4600A04BFFFF220 -S31540017EB0A0042004C206E008D807200C820860010D -S31540017EC08328400CD605E010111000E0D406A0002E -S31540017ED0DA06601498122000960AE003972AC00D2C -S31540017EE0920AA002111000A0DA022004940AA0010D -S31540017EF0952A800D932A400D1B1000209612C00131 -S31540017F00E8236150030100001B0076418210601E88 -S31540017F109A1361C09212C00999332004C2252004E4 -S31540017F20DA2520089612C00A9E13200E9135600468 -S31540017F301B1000C2031000C2821061049012201E61 -S31540017F40953620049813201E9A136108D625202CB5 -S31540017F50D8252010D025201CD2252020DE252028FA -S31540017F60D6252014940ABFF0FA250000DA252018F8 -S31540017F70C2252024C225200CA2102100D4A44320CE -S31540017F80C2800320D88443209A102001A0102200E9 -S31540017F90DAA40320D884032082102000C2A403203F -S31540017FA0DAA0032081D820007FFFC019010000001C -S31540017FB0C2800320E2844320E0840320DA05E010F6 -S31540017FC0D6066014C206E0089A0B60039B2B400B51 -S31540017FD082086001D407200CD806A000111000A029 -S31540017FE08328400A980B2001D60220049A134001A7 -S31540017FF0992B000B9A13400CC203400080A06000ED -S3154001800012800008821360041B048D15D8004000BD -S315400180109A13627880A3000D02800038C205E010F1 -S3154001802010800000010000008210201A331000A0C9 -S31540018030C22660149810203F2F1000A0391000A0CE -S31540018040351000A09A1020148210200E151000A0A1 -S31540018050371000A0DA27200CC222A004D826A0009F -S31540018060D825E01010BFFF38D826E0089A10207FA7 -S31540018070331000A02F1000A0C2266014DA25E010AC -S315400180809810203F391000A0351000A0821020130F -S315400180909A10200D111000A0371000A0C227200C05 -S315400180A0DA22200410BFFFF0D826A00012BFFF221B -S315400180B0331000A08210201CC22660149A1020158D -S315400180C08210207F391000A0371000A0DA27200C3B -S315400180D0C226E0089810200F2F1000A0351000A0EE -S315400180E01B1000A08210203FD8236004C226A000A6 -S315400180F010BFFF15D825E010DA06E008D80660144F -S31540018100820860039A0B6002D607200C8328400C34 -S315400181109B2B400B8210400DD80040001B100000E5 -S31540018120C203400080A3000102800004D406E00897 -S315400181301080000001000000C205E010980AA0016D -S31540018140D207200CD6066014820860038328400BB0 -S31540018150992B0009940AA0039810400CDA06A00056 -S31540018160111000A0952A80099A0B6001D6022004BD -S315400181708210400AC20040009B2B400B9813000D11 -S315400181800321D9509813200482106321C223000091 -S31540018190DA03000080A3400102800004C206E00821 -S315400181A01080000001000000D407200CDA05E01021 -S315400181B082086001D60660148328400A9A0B600340 -S315400181C0D806A0009B2B400B151000A0D602A00498 -S315400181D0980B20019A134001992B000B9813400CE0 -S315400181E08210000C05048D158410A278072AF37BB2 -S315400181F08610E301C4384000C438400003048D159D -S31540018200DA0300008210627880A3400102800004F4 -S315400182108213200410800000010000001B2AF37B1A -S31540018220D80040009A13630180A3000D12BFFFFAE4 -S31540018230C205E010D6066014D806E008820860033D -S31540018240D407200C8328400B980B2001DA06A000A6 -S31540018250111000A0992B000A9A0B6003D602200444 -S315400182608210400C9B2B400B15100143A010400D72 -S31540018270F002A0D4A2102003E0240000C0A00220F6 -S31540018280921020034000097090047FFD8206200C65 -S3154001829098102001912A0001992B00011B10012001 -S315400182A09610000182136000DA02000180A340109B -S315400182B0A204600112800087A004000C80A4600A19 -S315400182C024BFFFEFE0240000C0A0022003100120DC -S315400182D0A810000BAA106000A0102000A2102003D5 -S315400182E090047FFD4000095892102003832C6002C0 -S315400182F0912A0014DA04C00190020015820B6060D5 -S315400183009132200480A000019012201EA04000104E -S315400183109A0B7F9F900A3F9F80A340081280006F6F -S31540018320A204600180A4600A24BFFFEF90047FFD90 -S3154001833080A4200012800004C205E01010800000D5 -S3154001834001000000D6066014D806E00882086003E2 -S31540018350D407200CDA06A000111000A08328400B98 -S31540018360980B2001992B000AD60220049A0B600231 -S315400183708210400C9B2B400BAA10400D9FC540001C -S315400183800100000082102400C0A04300C0A00220CA -S31540018390A0102000A21020039B2C6002C204C00D35 -S315400183A08208606080A00001A0400010A204600124 -S315400183B080A4600A24BFFFFA9B2C600280A4200897 -S315400183C022800004D004E004108000000100000077 -S315400183D0808A204002800007010000007FFFFE19CD -S315400183E00100000080A2200012800004010000006C -S315400183F010800000010000007FFFFE12D004A0089B -S3154001840080A22000128000040100000010800000BC -S31540018410010000007FFFFE0BD004E00880A220008F -S3154001842012800004010000001080000001000000DD -S3154001843083480000842860808188A00001000000F4 -S315400184400100000001000000D806E008D407200C16 -S31540018450DA05E010980B2001D6066014992B000A24 -S315400184609A0B6003C206A0009B2B400B151000A07F -S31540018470D602A004820860018328400B9A13400C5F -S315400184809A1340019A136004C203400092102004DB -S3154001849091D02002010000007FFFBEDD01000000F7 -S315400184A0981020009A102200D8A343208210200160 -S315400184B0C2A34320D8A3432003100000DA8043809F -S315400184C0DAA04380D8A0032081D82000308000055F -S315400184D01080000001000000108000000100000033 -S315400184E081C7E00891E820009DE3BF98400007D18D -S315400184F001000000808A21000280003F0100000047 -S315400185007FFFA35101000000912A20047FFFA33A77 -S31540018510900220050310014082106048DA00600491 -S3154001852080A360002280001503100140B0100001B5 -S31540018530C20600009B38601F81836000DA06200472 -S3154001854001000000010000008278400DDA06200893 -S31540018550B006200C80A0400D02800004901020013E -S315400185607FFFA32A01000000C206200480A060000C -S3154001857012BFFFF00310014082106000DA00600470 -S3154001858080A360000280001501000000B0100001C8 -S31540018590C206000081800000DA06200401000000C6 -S315400185A0010000009A70400D8210000DDA06200885 -S315400185B0B006200C80A0400D0280000490102002DD -S315400185C07FFFA31201000000C206200480A06000C4 -S315400185D012BFFFF001000000400008240100000026 -S315400185E080A2200012800004010000007FFFA30743 -S315400185F09010200381C7E00891E820009DE3BF98D1 -S315400186007FFFA31101000000912A20047FFFA2FAF7 -S3154001861090022004400007890100000080A2212326 -S3154001862002800004010000007FFFA2F890102001A3 -S315400186304000078001000000808A21000280002B53 -S315400186400310014082106184DA00600880A360094A -S315400186500280001101000000B0100001C2060000B6 -S31540018660DA062004D80620088258400DB006200CB0 -S3154001867080A0400C02800004901020027FFFA2E3FC -S3154001868001000000C206200880A0600912BFFFF465 -S3154001869001000000400007760100000080A2200092 -S315400186A00280000F01000000400007620100000047 -S315400186B0808A22000280000D010000004000079ED2 -S315400186C00100000080A22000128000080100000085 -S315400186D07FFFA2CE90102004308000047FFFA2CB02 -S315400186E09010200330BFFFF181C7E00891E82000D8 -S315400186F09DE3BFA094102000111000619012232425 -S315400187001310006192126328171000619612E3302C -S31540018710191000619813233493C2000081C24000AE -S315400187201080019181C2C00081C300001080018E7A -S315400187309402A0019402A00180A2A0031280018AA2 -S3154001874001000000874400008D30E00E8C89A007AF -S3154001875080A1A000028000C701000000AF30E00BFD -S31540018760AE0DE00780A5E000128000C201000000C6 -S3154001877080A1A002128000350100000025100000F2 -S31540018780E41C80002510000029100000A8152104D2 -S31540018790A6100012AA100012AC100014A1802046A7 -S315400187A0A4100000AA10000001000000A180204E84 -S315400187B0A810210001000000A18000000100000076 -S315400187C001000000E83CA03082A4801312800166BB -S315400187D082A500161280016401000000010000001C -S315400187E001000000874400008D30E00B8C89A00712 -S315400187F08CA1A0051280015CA1800000010000004F -S315400188000100000001000000E81CA03082A500160E -S315400188101280015582A54012A41000001280015217 -S315400188200100000001000000874400008D30E00B8C -S315400188308C89A0078CA1A0031280014B0100000086 -S315400188401080008C0100000080A1A001128000234D -S3154001885025100000E41C80002510000029100000AE -S31540018860A8152104A6100012AA100012AC1000147B -S31540018870A1802046A4100000AA10000001000000BB -S31540018880A180204EA810210001000000A180000017 -S31540018890010000000100000001000000E83C8000EA -S315400188A082A480131280013082A500161280012E07 -S315400188B00100000001000000874400008D30E00BFC -S315400188C08C89A0078CA1A00212800127010000001B -S315400188D0108000680100000080A1A003128000659D -S315400188E0A6100000A210200EA1844000A610000090 -S315400188F0A1800000A814E000AB4400000100000084 -S31540018900AC14E00001000000AF44000080A5200047 -S3154001891012800115AA8D6E0080A5400012800112B9 -S3154001892080A5A00012800110AF35E00BAE0DE00727 -S3154001893080A5E0011280010C01000000A01000009A -S31540018940A1844000A6100000A1800000E8180000A4 -S31540018950AC100000AE100000EC04C000EE04E004D0 -S3154001896080A500161280010080A54017128000FEE6 -S3154001897001000000A5440000A534A00BA40CA007EB -S3154001898080A4A001128000F801000000A0100000A0 -S31540018990A1844000A6100000A1800000A210200A78 -S315400189A0A1844000A4100000A1800000E818000046 -S315400189B0AC100000AE100000EC04C012EE04E0045E -S315400189C080A50016128000E880A54017128000E6B7 -S315400189D001000000A5440000A534A00BA40CA0078B -S315400189E080A4A002068000E00100000021100140A1 -S315400189F0A0142200EC1C0000A0042008E81C000082 -S31540018A00A1844000A6100000A1800000A210200E03 -S31540018A10A1844000A4100010AC100000AE1000006C -S31540018A20A18000000100000001000000EC3C801321 -S31540018A30AC100000AE100000E81CC01280A5001664 -S31540018A40128000C980A54017128000C701000000AE -S31540018A50A5440000A534A00BA40CA00780A4A00443 -S31540018A60128000C1010000001080000201000000D8 -S31540018A708B4440008A09601F80A160010280000A80 -S31540018A808C1000059DE3BFA08AA1600116BFFFFEC1 -S31540018A900100000081E800008CA1A00116BFFFFE85 -S31540018AA0010000000100000001000000A023A08099 -S31540018AB0A02C20078E100010A3480000E2240000DD -S31540018AC0C2242004C43C2008C83C2010CC3C2018B9 -S31540018AD0F03C2020F43C2028F83C2030FC3C203857 -S31540018AE0D03C2040D43C2048D83C2050DC3C205847 -S31540018AF0A5500000E4242060801020088210200147 -S31540018B008410200286102003881020048A10200534 -S31540018B108C10200681900000A42C601F818C80005F -S31540018B200100000001000000010000000300404078 -S31540018B3082106101841000008610000089444000C3 -S31540018B408809201F86100004A010000284004002FC -S31540018B50A210000284004002A410000284004002D8 -S31540018B60A610000284004002A810000284004002C0 -S31540018B70AA10000284004002AC10000284004002A8 -S31540018B80AE100002840040029010000284004002B0 -S31540018B9092100002840040029410000284004002B8 -S31540018BA096100002840040029810000284004002A0 -S31540018BB09A100002840040029C1000028400400288 -S31540018BC09E1000028400400281E0000086A0E00180 -S31540018BD016BFFFDE01000000030040408210610124 -S31540018BE0841000008610000480A400021280003F19 -S31540018BF08400400280A440021280003C840040026E -S31540018C0080A48002128000398400400280A4C00200 -S31540018C10128000368400400280A500021280003393 -S31540018C208400400280A54002128000308400400248 -S31540018C3080A580021280002D8400400280A5C002DA -S31540018C401280002A8400400280A20002128000277E -S31540018C508400400280A24002128000248400400227 -S31540018C6080A28002128000218400400280A2C002BC -S31540018C701280001E8400400280A300021280001B65 -S31540018C808400400280A34002128000188400400202 -S31540018C9080A38002128000158400400280A3C00296 -S31540018CA0128000128400400281E0000086A0E001AB -S31540018CB016BFFFCE0100000080A020001280000BED -S31540018CC080A0FFFF1280000980A160051280000785 -S31540018CD080A1A0061280000501000000A010000737 -S31540018CE010800006C0242020A0100007901020010B -S31540018CF010800002D024202082100007C4004000CA -S31540018D008188800001000000010000000100000090 -S31540018D10C4186008C8186010CC186018F018602094 -S31540018D20F4186028F8186030FC186038D018604094 -S31540018D30D4186048D8186050DC186058E400606068 -S31540018D40C20060048194800001000000010000001F -S31540018D5001000000A0100007F004202081C7E008B0 -S31540018D6081E8000010BFFFFCB010000001000000C8 -S31540018D7081D8200081C3E008010000001B10014496 -S31540018D80D8036180821020018328400C1B100144C6 -S31540018D9082007FFFD803618482084008932A400CF1 -S31540018DA0900040098213C0007FFFE77F9E1040007C -S31540018DB0010000001B100144D8036180821020018C -S31540018DC08328400C1B10014482007FFFD803618435 -S31540018DD0932A400C82084008900040099210000AEC -S31540018DE08213C0007FFFE7729E1040000100000021 -S31540018DF01B100144D8036180821020018328400C56 -S31540018E001B10014482007FFFD8036184932A400CE2 -S31540018E1082084008900040099210000A8213C0005F -S31540018E207FFFE7679E104000010000001B100144D0 -S31540018E30D8036180821020018328400C1B10014415 -S31540018E4082007FFFD803618482084008932A400C40 -S31540018E50900040098213C0007FFFE7579E104000F3 -S31540018E60010000001B100144D803618C82102001CF -S31540018E708328400C1B10014482007FFFD803619C6C -S31540018E80932A400C82084008900040099210000A3B -S31540018E908213C0007FFFE74E9E1040000100000094 -S31540018EA01B100144D803618C821020018328400C99 -S31540018EB01B10014482007FFFD803619C932A400C1A -S31540018EC082084008900040099210000A8213C000AF -S31540018ED07FFFE7439E104000010000009DE3BF581D -S31540018EE02D100144A2102000C205A19080A440018A -S31540018EF01680001BA01020002B10014429100144AC -S31540018F0027100144A4102001D005618C912C8008C2 -S31540018F10C205219C90023FFF832C0001900A001854 -S31540018F207FFFE72990020001C204E17C901E000800 -S31540018F30900A000180A00008A2647FFFA0042001DE -S31540018F40C205A19080A4000126BFFFF1D005618C26 -S31540018F5080A4600012800003B0102000B0102001F0 -S31540018F6081C7E00881E800001B100144D803618CE9 -S31540018F70821020018328400C1B10014482007FFF90 -S31540018F80D803619C82084008932A400C900040090E -S31540018F908213C0007FFFE70C9E10400001000000D5 -S31540018FA01B100144D803618C821020018328400C98 -S31540018FB01B10014482007FFFD803619C8208400850 -S31540018FC0932A400C900040098213C0007FFFE702BC -S31540018FD09E10400001000000952AA00D03280000C4 -S31540018FE094028009D02040009422B000D42060042D -S31540018FF081C3E00801000000033FFFBF821062F811 -S315400190009DE38001193FFFBF94132368B407BFF85E -S315400190100310004A9606800A82106120C222E00CA3 -S315400190200310004A821060E0C222E0041B10004A8D -S315400190309A1360C0033FFFBFDA26800A901323804C -S315400190403310004A8210635C94068008981323C04B -S31540019050921661008200401ED222E008D4204000D0 -S31540019060B006800C7FFFA064901020067FFFE6CA01 -S3154001907090102000920A3FF07FFFE6C99010200031 -S31540019080210000307FFFE6C490102000808A001046 -S3154001909012BFFFFD010000007FFFFF3621000030B7 -S315400190A07FFFE6BD90102000808A001012BFFFFDB1 -S315400190B0010000007FFFE6B8901020000300204029 -S315400190C08210600F921200017FFFE6B590102000DA -S315400190D07FFFE6B19010200821100144D024217869 -S315400190E07FFFE6AD9010200CA73A2010993A201444 -S315400190F0A60CE007980B200FDA042178A823001369 -S31540019100A80520089F3B6014933B60109B3B601869 -S3154001911094050013A2102001AC03200A9E0BE00F18 -S3154001912096102400AE0B60039402A0022120000099 -S31540019130992AC00C1B1001448203E00A952C400A6F -S315400191409424000A832C4001D8236198A02400016D -S315400191501B10014403100144EC23618C972AC00F74 -S31540019160AA03E00A1B100144D6206174031001448E -S31540019170EA236184EA2061801B1001440310014403 -S31540019180D423617C920A6007A53A2018D0206188D1 -S31540019190153FFFBF932C4009A40CA00303100144C3 -S315400191A09412A358932C4009A404A00139100144F8 -S315400191B037100144EC20619C9B2C40149402801E84 -S315400191C0E0272194E426E190AA027FFFDA2280007B -S315400191D0AC85E0010280000CBB2C4013033FFFBF6E -S315400191E082106368A0068001A4100016D004000016 -S315400191F09FC20000A0042004A484BFFF32BFFFFD2C -S31540019200D00400007FFFE66490102000920A3FFCE4 -S315400192107FFFE66390102000A410200080A48016F2 -S3154001922016800022A2102000033FFFBFAE106368E4 -S31540019230A610001AA010200080A40016368000183F -S31540019240A404A00110800005A810001780A40016F0 -S3154001925036800013A404A001921000107FFFFEC8BF -S31540019260D004C014820A001580A0401512BFFFF831 -S31540019270A0042001C204C01482184008DA072194D0 -S315400192808208400D80A00001A2647FFF80A40016E1 -S3154001929006BFFFF392100010A404A00180A480161B -S315400192A006BFFFE5A604E0047FFFE63B90102000E1 -S315400192B0A6100008901020007FFFE6399214E003C3 -S315400192C080A46000028001B101000000833CE00CF3 -S315400192D080886003128000A5030048D1833CE013D7 -S315400192E080886003128001AD010000007FFFFEA16E -S315400192F0210000307FFFE62890102000808A001070 -S3154001930012BFFFFDA6100008A4102000C206E1907E -S3154001931080A480011680000D832CA00292100012B9 -S31540019320901000187FFFFED094102000A404A001E5 -S31540019330C206E19080A4800106BFFFFA9210001296 -S31540019340A4102000832CA002A404A001C026000181 -S3154001935080A4A01E04BFFFFD832CA002821020051D -S31540019360C22600009A102001DA262004821020022B -S31540019370C22620089A102003DA26200C7FFFFED849 -S315400193809010001880A22000028001D30100000045 -S31540019390C206000080A060050280000401000000B2 -S315400193A07FFF9F9A901020067FFFFECD90100018F8 -S315400193B080A22000128001C401000000A4102000F8 -S315400193C0C206E19080A480011680000F921000121F -S315400193D0A0062004941020007FFFFEB290100018D2 -S315400193E092100012901000107FFFFEAE94102000E4 -S315400193F0A404A001C206E19080A4800106BFFFF645 -S31540019400921000127FFFE5FA901000187FFFE5F8F1 -S31540019410900620207FFFE5F6900620407FFFE5F489 -S3154001942090062060A4102000C206E19080A480012D -S3154001943006800196A21020007FFF9F74901020089D -S31540019440173FFFBF8212E3C0940680018212E35C9C -S315400194508200401ED81A8000C2004000D838400021 -S315400194609612E380C206800B80A06005128000063A -S315400194708206800BDA00600480A360010280000549 -S31540019480A41020007FFF9F6190102009A4102000A6 -S31540019490C206E19080A4800116800011A21020002E -S315400194A0A0062004921000127FFFFEBE901000100D -S315400194B0901A200180A00008A2647FFFA404A001A5 -S315400194C0C206E19080A4800106BFFFF89210001207 -S315400194D080A4600102800005833CE0137FFF9F4B1F -S315400194E09010200A833CE01380886003128001803B -S315400194F082102005C22600009A102001DA26200497 -S3154001950082102002C22620089A102003DA26200C57 -S315400195101B3FFFBF9A1363589A03401ED003400076 -S315400195204000048D9210001D032EEEEEA12A20026A -S31540019530A21063BBE22600107FFFFE69901000185F -S3154001954080A220001280016701000000C2060010BF -S3154001955080A0401102800005030048D17FFF9F2B68 -S3154001956090102012030048D1821061671B226AF3D2 -S31540019570C22620209A1361EFDA262024C20E20202B -S3154001958080A0600102800004010000007FFF9F1F50 -S315400195909010201AC20E202180A060230280000470 -S315400195A0010000007FFF9F199010201BC20E202250 -S315400195B080A0604502800004010000007FFF9F13E8 -S315400195C09010201CC20E202380A0606702800004F8 -S315400195D0010000007FFF9F0D9010201DC20E202428 -S315400195E080A0608902800004010000007FFF9F0780 -S315400195F09010201EC20E202580A060AB0280000480 -S31540019600010000007FFF9F019010201FC20E2026FF -S3154001961080A060CD02800004010000007FFF9EFB18 -S3154001962090102020C20E202780A060EF0280000407 -S31540019630010000007FFF9EF590102021C2162020D8 -S31540019640832860108330601080A06123028000046B -S31540019650010000007FFF9EED90102022DA162022A5 -S315400196609B2B6010030000119B33601082106167D1 -S3154001967080A3400102800004010000007FFF9EE3B9 -S3154001968090102023DA1620249B2B60100300002221 -S315400196909B336010821061AB80A3400102800004BD -S315400196A0010000007FFF9ED990102024DA16202663 -S315400196B09B2B6010030000339B336010821061EFD7 -S315400196C080A3400102800005821020307FFF9ECF9B -S315400196D09010202582102030C22E2020030C08D164 -S315400196E0DA0620208210616780A3400102800005CE -S315400196F0821020317FFF9EC5901020278210203195 -S31540019700C22E2021030C0C51DA06202082106167FB -S3154001971080A3400102800005821020327FFF9EBB5C -S315400197209010202882102032C22E2022210C0C4C6F -S31540019730DA0620208214226780A3400102800005B8 -S31540019740821020337FFF9EB1901020298210203352 -S31540019750C22E20239A142233C206202080A0400D17 -S3154001976002800005821020347FFF9EA89010202A97 -S3154001977082102034C22E2024030D2AF3DA06202437 -S31540019780821061EF80A340010280000582102035DE -S315400197907FFF9E9E9010202B82102035C22E2025C1 -S315400197A0030D0D73DA062024821061EF80A3400178 -S315400197B002800005821020367FFF9E949010202C57 -S315400197C082102036C22E2026210D0D4DDA06202488 -S315400197D0821422EF80A340010280000582102037C7 -S315400197E07FFF9E8A9010202D82102037C22E20277F -S315400197F09A142237C206202480A0400D028000051B -S31540019800210000107FFF9E819010202E2100001024 -S3154001981082142041C23620200310104CDA06202043 -S315400198208210623380A340010280000582142243E4 -S315400198307FFF9E769010202F82142243C23620222B -S3154001984003101050DA0620208210624380A34001A3 -S3154001985002800005210000117FFF9E6C9010203090 -S315400198602100001182142045C23620240311114DD6 -S31540019870DA0620248210623780A340010280000567 -S31540019880821422477FFF9E61901020318214224725 -S31540019890C236202603111151DA062024821062476E -S315400198A080A3400102800004010000007FFF9E5713 -S315400198B0901020327FFFFD2FA4102000C206E190B8 -S315400198C080A48001168000151B100144D403619CBD -S315400198D096100001A010200080A4001D3680000CC7 -S315400198E0A404A001832C800A9B286002992CA01015 -S315400198F082130010C226000DA004200180A4001D81 -S3154001990006BFFFFC9A036004A404A00180A4800B57 -S3154001991026BFFFF2A01020007FFFE49F9010200099 -S3154001992003000010808A000112BFFFFC0100000005 -S31540019930A4102000C206E19080A480011680011483 -S31540019940921000127FFFFD899010001815100144F6 -S31540019950C202A17C900A0001820E000180A2000190 -S31540019960A404A00112BFFFF4901020337FFF9E276D -S3154001997001000000C206E19080A4800106BFFFF20B -S3154001998092100012308001027FFF9E20901020012C -S3154001999010BFFE50833CE00C7FFFE47F9010200017 -S315400199A0133FFFF09212603F920A0009A610000889 -S315400199B07FFFE47B901020007FFFE3D2A4102000BC -S315400199C01303C0009214C0097FFFE4759010200074 -S315400199D080A480161680000992100012901661002C -S315400199E07FFFFD0494102000A404A00180A48016EA -S315400199F006BFFFFB921000127FFFE3C20100000089 -S31540019A007FFFE46590102000913A200A900A2003D6 -S31540019A1080A2200102800004010000007FFF9DFB1F -S31540019A209010200201000000921020009016610063 -S31540019A307FFFFCE194102000010000007FFFE45607 -S31540019A40901020001303C000922A00097FFFE454BE -S31540019A5090102000010000007FFFE3AA01000000F2 -S31540019A607FFFE44D90102000913A200C900A20038C -S31540019A7080A2200102BFFE1E010000007FFF9DE380 -S31540019A809010200330BFFE1A921000127FFFFD4551 -S31540019A9090100018901A200580A00008A2647FFF4C -S31540019AA0A404A001C206E19080A4800106BFFFF88C -S31540019AB09210001280A4600012BFFE63173FFFBFE1 -S31540019AC030BFFE5E7FFF9DD19010200710BFFE3D47 -S31540019AD0A41020007FFF9DCD9010200530BFFE2DA4 -S31540019AE07FFF9DCA9010201130BFFE997FFFE42A67 -S31540019AF090102000033FFFF08210603F920A000160 -S31540019B007FFFE42790102000033FFFBFA010638032 -S31540019B1092102000941020007FFFFCE290068010F6 -S31540019B207FFFE41D901020000303C0009212000144 -S31540019B307FFFE41B9010200010800006A410200037 -S31540019B40900680107FFFFCD794102005A404A00145 -S31540019B50C206E19080A4800106BFFFFA921000126E -S31540019B60033FFFBFA01063809A102001DA2E8010B8 -S31540019B7003004000D80680108210600580A30001D2 -S31540019B8002800004010000007FFF9DA09010200B81 -S31540019B907FFFE40190102000913A2006900A2003AD -S31540019BA080A2200102800004010000007FFF9D97F2 -S31540019BB09010200C7FFFE3F8901020001303C000A3 -S31540019BC0922A00097FFFE3F69010200092102000B0 -S31540019BD0900680107FFFFCB3941020007FFFE3EED8 -S31540019BE0901020002103C000921200107FFFE3EC89 -S31540019BF0901020007FFFE3E890102000808A00103B -S31540019C0002BFFFFDA6100008A4102000C206E19085 -S31540019C1080A480011680000E033FFFBF9A102001E9 -S31540019C20A2106380A12B401D921000129006801154 -S31540019C307FFFFC8D94043FFFA404A001C206E1907E -S31540019C4080A4800106BFFFFA921000121303C000E0 -S31540019C50922CC0097FFFE3D2901020002103C0005F -S31540019C607FFFE3CD90102000808A001012BFFFFDD8 -S31540019C701B004000213FFFBF82142380D80680018C -S31540019C809A13600580A3000D0280000401000000C4 -S31540019C907FFF9D5E9010200D7FFFE3BF9010200057 -S31540019CA0913A2008900A200380A2200122800005D3 -S31540019CB0A01423787FFF9D559010200FA014237880 -S31540019CC094068010981020119A102055D83A800099 -S31540019CD07FFFE3B1901020000303C0009212000100 -S31540019CE0920A7F3F7FFFE3AE90102000A0068010CE -S31540019CF07FFFE3CD9010001010800006A4102000D5 -S31540019D00900420047FFFFC6794102055A404A00111 -S31540019D10C206E19080A4800106BFFFFA92100012AC -S31540019D20113FFFBF901223787FFFE3BF9006800863 -S31540019D3080A220111280000480A260550280000496 -S31540019D40010000007FFF9D31901020107FFFE392BC -S31540019D5090102000833A20068208600380A06001AB -S31540019D6002800004A61000087FFF9D289010201055 -S31540019D70133C3FF09212603F920CC0097FFFE3888B -S31540019D809010200010BFFDDC821020057FFFE3828A -S31540019D90901020009212200F7FFFE3819010200047 -S31540019DA081C7E00891E820009DE3BF987FFFFC93BF -S31540019DB001000000B0100008130020409212600F0D -S31540019DC07FFFE377901020000100000081C7E00883 -S31540019DD081E80000033FFFBF821063589DE3800185 -S31540019DE07FFFFBE401000000400002380100000053 -S31540019DF07FFFE36990102008A21000087FFFE36609 -S31540019E009010200C7FFF9D10A0100008912A20047D -S31540019E107FFF9CF99002200C973C6014833C6018AC -S31540019E20953C2014993C201882086003960AE00F5D -S31540019E30820060019602E00AA33C6010A13C20101A -S31540019E40980B2003940AA00FA728400B98032001E2 -S31540019E50A20C6007A00C20079402A00A9A102001C8 -S31540019E60A2046002A0042002B12B000A03200000D4 -S31540019E70AB2B4011A52B40109620401898057FFF2B -S31540019E80822040139A04BFFFAE130001A213400B78 -S31540019E90210000307FFFE34090102000808A0010AF -S31540019EA012BFFFFD033FFFBF9A07BFF8821063C091 -S31540019EB0A00340012D155555901000189210001021 -S31540019EC07FFFE2C89415A15580A220001280004B65 -S31540019ED0292AAAAA92100010901000187FFFE2D5F5 -S31540019EE0941522AA80A220001280004E0100000093 -S31540019EF07FFF9CD501000000912A20047FFF9CBE74 -S31540019F009002200A400001EE010000009215220055 -S31540019F10920C4009901000189410001196100012EE -S31540019F207FFFE2ED981522AA80A2200012800051FF -S31540019F30010000009215A10090100018920C4009F2 -S31540019F4094100011961000127FFFE2E39815A15577 -S31540019F5080A2200012800044010000007FFF9CBACD -S31540019F6001000000912A20047FFF9CA39002200B50 -S31540019F70901000137FFFE2BF9215A15580A22000E9 -S31540019F801280003501000000901000137FFFE2B9F6 -S31540019F90921522AA80A220001280002C0100000006 -S31540019FA07FFF9CA901000000912A20047FFF9C921B -S31540019FB0900220099010001392100017941000157A -S31540019FC07FFFE2B8961522AA80A220001280001BCC -S31540019FD00100000090100013921000179410001514 -S31540019FE07FFFE2B09615A15580A220000280002590 -S31540019FF0010000003080000E7FFF9C8490102001FC -S3154001A000292AAAAA92100010901000187FFFE2890F -S3154001A010941522AA80A2200002BFFFB601000000CB -S3154001A0207FFF9C7A9010200230BFFFB27FFF9C7762 -S3154001A03090102008308000137FFF9C7490102007F9 -S3154001A04010BFFFE6901000137FFF9C709010200612 -S3154001A05030BFFFD47FFF9C6D9010200510BFFFCC11 -S3154001A060901000137FFF9C699010200430BFFFBC05 -S3154001A0707FFF9C669010200310BFFFB09215A10090 -S3154001A0807FFFFB3CB0102000400001900100000022 -S3154001A0900100000081C7E00881E800009DE3BF9808 -S3154001A0A07FFF9C501100412CDA062004D80620047B -S3154001A0B09A0B6003993B200282102007C226200892 -S3154001A0C0BA036001B20B27FF010000009010200A7D -S3154001A0D0C02600007FFF9C480100000017000200D7 -S3154001A0E082103FFFC226000B032AAAAA1B1555550B -S3154001A0F0D806000BAC102000821062AA9A13615553 -S3154001A100AA0B000180A5801D16800038A80B000D02 -S3154001A1109612E020A72E600880A4E0000480000C7F -S3154001A120A2102000832DA0028200401819000200CF -S3154001A1309A10000BE820400CEA20400DA204601062 -S3154001A14080A4C01114BFFFFC82006040AC05A00191 -S3154001A15080A5801D06BFFFF280A4E000AC10200060 -S3154001A16080A5801D1680002103000200B8106020E2 -S3154001A170A72E6008AE10001880A4E00004800017E6 -S3154001A180A210200003000200A4060001A005C01C85 -S3154001A190C2048000A2046010A404A04080A0401420 -S3154001A1A002800004901020017FFF9C1801000000EE -S3154001A1B0C2040000A004204080A040150280000493 -S3154001A1C0901020017FFF9C110100000080A4C01166 -S3154001A1D014BFFFF001000000AC05A00180A5801D61 -S3154001A1E006BFFFE6AE05E0047FFF9C039010200CFE -S3154001A1F0AC10200080A5801D16800088031555559A -S3154001A2009E1061551B000800032AAAAA9A136004EE -S3154001A210901062AAA72E600880A4E0000480000E78 -S3154001A220A2102000832DA0138200401813000800BD -S3154001A2309410000F9610000D98100008D420400984 -S3154001A240D820400BA204600280A4C01114BFFFFCB9 -S3154001A25082006008AC05A00180A5801D06BFFFF005 -S3154001A26080A4E000AC10200080A5801D1680006B04 -S3154001A27003155555B81061551B000800032AAAAAB3 -S3154001A280B6136004B41062AAA72E600880A4E00049 -S3154001A29004800019A2102000832DA013A0004018AD -S3154001A2A02F000800AA10001CA810001BA410001AB9 -S3154001A2B0C2040017A204600280A040150280000477 -S3154001A2C0901020037FFF9BD101000000C2040014BF -S3154001A2D0A004200880A040120280000490102003B0 -S3154001A2E07FFF9BCA0100000080A4C01114BFFFF18B -S3154001A2F001000000AC05A00180A5801D06BFFFE559 -S3154001A30080A4E000AC10200080A5801D168000438B -S3154001A310030008009E1060041B155555032AAAAA7E -S3154001A3209A136155901062AAA72E600880A4E00096 -S3154001A3300480000EA2102000832DA0138200401835 -S3154001A340130008009410000F9610000D9810000895 -S3154001A350D620400AD8204009A204600280A4C01138 -S3154001A36014BFFFFC82006008AC05A00180A5801DDA -S3154001A37006BFFFF080A4E000AC10200080A5801D40 -S3154001A3801680002603155555B81061551B2AAAAAF1 -S3154001A39003000800A72E6008B61362AAB410600431 -S3154001A3A080A4E00004800019A2102000832DA01390 -S3154001A3B0A00040182F000800AA10001CA810001B7E -S3154001A3C0A410001AC2040012A204600280A0401523 -S3154001A3D002800004901020047FFF9B8C0100000046 -S3154001A3E0C2040017A004200880A040140280000483 -S3154001A3F0901020047FFF9B850100000080A4C011BE -S3154001A40014BFFFF101000000AC05A00180A5801D2D -S3154001A41006BFFFE580A4E00082102005C226200881 -S3154001A4201B200000DA26000081C7E00881E8000011 -S3154001A43081C3E0089144400080800000151001402E -S3154001A4409412A18090102000921022468180000033 -S3154001A450010000000100000001000000D002800060 -S3154001A4609122400881C3E00801000000818000007C -S3154001A470901020018090200180D020011280002C74 -S3154001A4800100000080D23FFF168000290100000034 -S3154001A49080DA3FFF9340000080A27FFF12800024B4 -S3154001A4A00100000080D23FFF9348000093326014C0 -S3154001A4B0920A600F80A260081280001D0100000010 -S3154001A4C08180000090102001945220049452A004EF -S3154001A4D09452A00496A2A0401280001501000000EB -S3154001A4E0818000009010200280A000003280001080 -S3154001A4F09052000880A220021280000D0100000047 -S3154001A500818000009010200280A000000100000020 -S3154001A510328000079052000880A220021280000477 -S3154001A5200100000081C3E0089010200181C3E008CA -S3154001A530901000001315555592126155A5824000A1 -S3154001A5400100000001000000010000009544800068 -S3154001A55080A2400A1280004301000000923A400066 -S3154001A560A58240000100000001000000010000003A -S3154001A5709544800080A2400A1280003A0100000002 -S3154001A5801100003F901223FFA5800000818000004A -S3154001A59001000000010000000100000093F23FFFAE -S3154001A5A09A10000993F23FFF93F23FFF93F23FFF68 -S3154001A5B093F23FFF93F23FFF93F23FFF93F23FFF48 -S3154001A5C09940000097448000153FFC009412A00872 -S3154001A5D080A2400A1280002380A2400B12800021F3 -S3154001A5E080A320071280001F113FFF809012200197 -S3154001A5F080A340081280001B1100003F901223FFE8 -S3154001A600A5800000818000000100000001000000DB -S3154001A6100100000093FA3FFF93FA3FFF93FA3FFF91 -S3154001A62093FA3FFF93FA3FFF93FA3FFF93FA3FFFB7 -S3154001A63093FA3FFF994000009744800080A260084A -S3154001A6401280000880A260081280000680A32000C4 -S3154001A650128000040100000081C3E008901020012F -S3154001A66081C3E00890100000818000009010200214 -S3154001A67080A00000328000109072000880A2200263 -S3154001A6801280000D01000000818000009010200220 -S3154001A69080A000000100000032800007907200088F -S3154001A6A080A22002128000040100000081C3E0085C -S3154001A6B09010200181C3E00890100000C0A0004026 -S3154001A6C081C3E00801000000110020409012200FD4 -S3154001A6D0D0A0004081C3E008010000009DE3BF987F -S3154001A6E07FFFE12D90102008A21000087FFFE12A8C -S3154001A6F09010200C833C60149B3A2014A13A2018F8 -S3154001A700A33C6018A20C6003A00C20038208600FD2 -S3154001A7109A0B600F8200600A9A03600AA2046001E4 -S3154001A720A0042001A32C40017FFFFFE5A12C000DD1 -S3154001A7307FFFE090901000117FFFE09C9010001089 -S3154001A7407FFFF98C010000007FFFFFE081E80000F8 -S3154001A7500100000098120009818200009AAB2FFF88 -S3154001A7600280002598880000992300099923000951 -S3154001A770992300099923000999230009992300097E -S3154001A780992300099923000999230009992300096E -S3154001A790992300099923000999230009992300095E -S3154001A7A0992300099923000999230009992300094E -S3154001A7B0992300099923000999230009992300093E -S3154001A7C0992300099923000999230009992300092E -S3154001A7D0992300099923000999230009992300091E -S3154001A7E099230009992300099923000081C3E008B0 -S3154001A7F091400000992300099923000999230009F2 -S3154001A80099230009992300099923000999230009ED -S3154001A81099230009992300099923000999230009DD -S3154001A82099230009992300009B400000992B200C95 -S3154001A8309B33601481C3E0089013400C1080000BD9 -S3154001A8408610200080924008168000088610000875 -S3154001A850809240001680000480920000168000031A -S3154001A86092200009902000089A924000128000052B -S3154001A8709610000891D0200281C3E0089010000094 -S3154001A88080A2C00D0A8000959410000003020000CA -S3154001A89080A2C0010A8000289810000080A34001D0 -S3154001A8A01A80000D841020019B2B600410BFFFFC11 -S3154001A8B0980320019A83400D1A8000078400A00165 -S3154001A8C0832860049B3360019A034001108000078E -S3154001A8D08420A00180A3400B0ABFFFF701000000BE -S3154001A8E0028000020100000084A0A00106800076DB -S3154001A8F0010000009622C00D941020011080000A2C -S3154001A90001000000952AA001068000059B336001E5 -S3154001A9109622C00D108000049402A0019602C00D3B -S3154001A9209422A00184A0A00116BFFFF78092C00027 -S3154001A930308000659B2B600480A3400B08BFFFFE5F -S3154001A9409883200102800065982320018092C000EF -S3154001A950952AA0040680002F9B33600196A2C00D64 -S3154001A960068000179B33600196A2C00D0680000B3E -S3154001A9709B33600196A2C00D068000059B336001A2 -S3154001A98096A2C00D108000509402A00F9682C00D71 -S3154001A9901080004D9402A00D9682C00D06800005E0 -S3154001A9A09B33600196A2C00D108000479402A00B14 -S3154001A9B09682C00D108000449402A0099682C00D73 -S3154001A9C00680000B9B33600196A2C00D06800005F0 -S3154001A9D09B33600196A2C00D1080003B9402A007F4 -S3154001A9E09682C00D108000389402A0059682C00D53 -S3154001A9F0068000059B33600196A2C00D108000328F -S3154001AA009402A0039682C00D1080002F9402A001EB -S3154001AA109682C00D068000179B33600196A2C00D39 -S3154001AA200680000B9B33600196A2C00D068000058F -S3154001AA309B33600196A2C00D108000239402BFFF94 -S3154001AA409682C00D108000209402BFFD9682C00DF3 -S3154001AA50068000059B33600196A2C00D1080001A46 -S3154001AA609402BFFB9682C00D108000179402BFF975 -S3154001AA709682C00D0680000B9B33600196A2C00DE5 -S3154001AA80068000059B33600196A2C00D1080000E22 -S3154001AA909402BFF79682C00D1080000B9402BFF559 -S3154001AAA09682C00D068000059B33600196A2C00DBB -S3154001AAB0108000059402BFF39682C00D10800002FB -S3154001AAC09402BFF198A3200116BFFFA28092C00055 -S3154001AAD0268000029602C0098090C00026800002AE -S3154001AAE09620000B81C3E0089010000B92100008DD -S3154001AAF09010200094102000961020008213C00070 -S3154001AB00400001E89E10400001000000921000083C -S3154001AB1003100142D00063F88213C0004000000ACE -S3154001AB209E104000010000009210000803100142EF -S3154001AB30D00063F88213C000400002559E104000C9 -S3154001AB40010000009DE3BF988206600B80A060165D -S3154001AB50A610001818800003A0087FF8A010201046 -S3154001AB6080A400199A4020008334201F8090400D14 -S3154001AB70128001B0B0102000400001B090100013C7 -S3154001AB8080A421F718800017993420093910014013 -S3154001AB908217222898040001F003200C80A6000C9D -S3154001ABA00280004E9F342003C206200494087FFC95 -S3154001ABB09A06000AC203600482106001D006200C86 -S3154001ABC0D2062008D2222008C2236004D022600C7B -S3154001ABD0400001A09010001310800196B006200895 -S3154001ABE080A32000128000289F34200339100140A1 -S3154001ABF09B2BE003821722289A0340011080000A0A -S3154001AC00F003600C94087FFC9622801080A2E00F2E -S3154001AC101480010980A2E00036BFFFE79A06000AC8 -S3154001AC20F006200C80A6000D32BFFFF7C2062004B5 -S3154001AC309E03E001251001409814A230F00320083C -S3154001AC4080A6000C0280005D833BE01FC206200403 -S3154001AC5094087FFC9622801080A2E00F1480009F0A -S3154001AC6080A2E000D823200C06800023D8232008A8 -S3154001AC709A06000AC20360048210600110BFFFD524 -S3154001AC80C22360048334200680A3200408BFFFD872 -S3154001AC909E00603880A3201408BFFFD59E03205B29 -S3154001ACA08334200C80A3205408BFFFD19E00606EE0 -S3154001ACB08334200F80A3215408BFFFCD9E006077C7 -S3154001ACC08334201280A3255408BFFFC99E00607CAF -S3154001ACD010BFFFC79E10207E98062008F003200C67 -S3154001ACE080A6000C32BFFFB2C206200410BFFFD2BD -S3154001ACF09E03E00280A2A1FF088000BE9B32A00312 -S3154001AD009732A00980A2E0002280001796172228D8 -S3154001AD108332A00680A2E004088000129A006038BF -S3154001AD2080A2E0140880000F9A02E05B8332A00CF7 -S3154001AD3080A2E0540880000B9A00606E8332A00F17 -S3154001AD4080A2E154088000079A0060778332A012FE -S3154001AD5080A2E554088000039A00607C9A10207E08 -S3154001AD6096172228832B60039000400BD2022008BD -S3154001AD7080A240082280010F99336002C20260041A -S3154001AD8082087FFC80A0400A28800007D002600C20 -S3154001AD90D202600880A2400832BFFFFAC2026004B4 -S3154001ADA0D002600CD026200CD2262008F022600C5E -S3154001ADB0F0222008833BE01F8330601E8203C001DE -S3154001ADC03910014083386002981722289A102001D1 -S3154001ADD0932B4001D803200480A2400C1880004BDD -S3154001ADE0AE172228808B00091280000D0310014006 -S3154001ADF0820BFFFC92024009808B000912800007FA -S3154001AE009E0060048210000C92024009808840092D -S3154001AE1002BFFFFE9E03E00403100140A210622818 -S3154001AE20A8100011832BE003980040119010000FE9 -S3154001AE309A10000C1080000AF003600C94087FFC05 -S3154001AE409622801080A2E00F1480007D80A2E0004F -S3154001AE503680008B9A06000AF006200C80A6000D6B -S3154001AE6032BFFFF7C20620049E03E001808BE00358 -S3154001AE7012BFFFF19A036008808A200398033FF8C6 -S3154001AE80028000D490023FFFC203200880A0400CFC -S3154001AE9002BFFFFB808A200392024009C2052004BB -S3154001AEA080A24001188000183910014080A260003C -S3154001AEB0128000068088400910800014AE172228AF -S3154001AEC09E03E0048088400922BFFFFE92024009AA -S3154001AED010BFFFD6832BE003821420019406001095 -S3154001AEE0C2262004D423200CD42320088212E00158 -S3154001AEF0D622800BD822A008C222A00410BFFF355B -S3154001AF00D822A00CAE172228F005E008C20620047C -S3154001AF10AA087FFC80A540109A4020009625401043 -S3154001AF2080A2E00F148000428210200180934001EC -S3154001AF300280002703100143DA0061282D100140E9 -S3154001AF409A04000DC205A220A810001580A07FFF1B -S3154001AF50A203601002800004A406001582046FFF5C -S3154001AF60A208700090100013400000C0921000111A -S3154001AF7080A23FFF02800008B210000880A20012A2 -S3154001AF801A8000463B10014380A6001722800044E8 -S3154001AF90C20760F882172228D8006008DA03200425 -S3154001AFA09A0B7FFC80A340109840200096234010C6 -S3154001AFB080A2E00F0480000382102001821020004D -S3154001AFC08093000112800098010000009817222802 -S3154001AFD0F003200882142001C22620049A0600109C -S3154001AFE08212E001C223600410BFFEFADA23200870 -S3154001AFF098033FF8832B60039000400C9B3360021B -S3154001B000821020018328400DD2022008DA03200451 -S3154001B0109A134001D026200CD2262008F022600C3B -S3154001B020DA23200410BFFF64F022200810BFFFC0BE -S3154001B0308210200010BFFEFF9E03FFFFD006200CAA -S3154001B040D20620089A142001940600108214A230D8 -S3154001B050D2222008D022600CDA262004D420600CAB -S3154001B060D42060089A12E001D622800BC222A008A1 -S3154001B070DA22A00410BFFED7C222A00CC20360048C -S3154001B08082106001D006200CD2062008C22360043B -S3154001B09010BFFECFD2222008C20760F882004011BD -S3154001B0A080A640120280004FC22760F8C205A22046 -S3154001B0B080A07FFF02800045C20760F89A264012B1 -S3154001B0C08200400DC22760F89A8E60070280000513 -S3154001B0D0A410200082102008A420400DB206401280 -S3154001B0E09A0640119A0B6FFF030000048220400D1F -S3154001B0F0A4048001901000134000005C92100012DD -S3154001B10080A23FFF2280003FA41020008222001926 -S3154001B1109000401282172228DA0760F89A034012FB -S3154001B12080A60001F2206008DA2760F80280003725 -S3154001B1308212200180A5600F38800005C226600476 -S3154001B1408210200110BFFF94C2266004C20620046B -S3154001B1509A057FF4A80B7FF882086001821040149B -S3154001B160C22620049A06001482102005C2236008D4 -S3154001B17080A5200F18800027C223600419100143BF -S3154001B180DA0760F8C203212480A340013880000217 -S3154001B190DA23212419100143C203212080A340014F -S3154001B1A038BFFF7DDA23212010BFFF7C821722287A -S3154001B1B09A102001C202E0049B2B400C8210400DE4 -S3154001B1C010BFFEF9C222E00410BFFFC0F225A22043 -S3154001B1D0C20460048228400910BFFF30C2246004C3 -S3154001B1E0808E6FFF12BFFFB3C205A22090044014A8 -S3154001B1F0DA05E0088212200110BFFFE1C223600494 -S3154001B20010BFFFC39010001910BFFFDDC2266004B6 -S3154001B210920620084000009E9010001310BFFFD9EF -S3154001B220191001434000000B90100013B01020008C -S3154001B23081C7E00881E800001110014190122230D7 -S3154001B2408213C0004000042A9E1040000100000005 -S3154001B25011100141901222308213C0004000043C7B -S3154001B2609E104000010000009DE3BF98211001445B -S3154001B270C02421A0400002499010001980A23FFF3E -S3154001B28012800006C20421A080A060000280000353 -S3154001B29001000000C226000081C7E00891E80008CD -S3154001B2A09DE3BF9823100143400004119014612C83 -S3154001B2B003100072E0006278D004214880A2200089 -S3154001B2C02280002D9004214CD602200480A2E01F4A -S3154001B2D01480001D0100000080A620001280000B92 -S3154001B2E094022088832AE0029A02E0018200400803 -S3154001B2F0DA222004F2206008400004159014612CE3 -S3154001B30010800022B0102000821020019328400BAB -S3154001B310992AE002DA02A1009A1340098203000A3F -S3154001B320F6206080F422800C80A6200212BFFFEE38 -S3154001B330DA22A100C202A1048210400910BFFFEA2D -S3154001B340C222A1047FFFFDF29010219080A220002D -S3154001B3500280000B96102000C2042148C222000040 -S3154001B360D0242148C0222004C022218810BFFFDBFF -S3154001B370C022218C10BFFFD5D0242148400003F4C0 -S3154001B3809014612CB0103FFF81C7E00881E80000AE -S3154001B3909DE3BF987FFFFFA990100018031001405D -S3154001B3A0A2106228DA046008C2036004A0087FFC88 -S3154001B3B0B2240019B2066FEFB20E7000B2067000E9 -S3154001B3C09210200080A66FFF0480000A901000189A -S3154001B3D07FFFFFA601000000C20460088200401002 -S3154001B3E080A04008922000190280000590100018A4 -S3154001B3F07FFFFF98B0102000308000237FFFFF9B26 -S3154001B400901000188224001980A23FFF821060012B -S3154001B41092102000191001430280000B9010001871 -S3154001B420DA046008C2236004C20320F8822040196E -S3154001B430901000187FFFFF87C22320F8108000126A -S3154001B440B01020017FFFFF8901000000981000081D -S3154001B450D6046008A023000B9010001880A4200F8A -S3154001B46004BFFFE4B214200103100140DA00622058 -S3154001B4709A23000D03100143DA2060F810BFFFDD67 -S3154001B480F222E00481C7E00881E800009DE3BF980D -S3154001B49080A660000280009DA41000187FFFFF6710 -S3154001B4A090100018A0067FF8D6042004900AFFFEEB -S3154001B4B01910014094040008A2132228DA02A004BC -S3154001B4C0C204600880A0400A028000449E0B7FFCB3 -S3154001B4D0808AE001DE22A0041280000CB010200018 -S3154001B4E0F2067FF8A024001982046008DA042008D5 -S3154001B4F080A340010280007D90020019D204200CF5 -S3154001B500DA226008D223600C8202800FDA006004DE -S3154001B510808B60011280000A8212200180A62000E1 -S3154001B520028000229002000FDA02A008D202A00C8B -S3154001B530DA226008D223600C82122001C224200440 -S3154001B54080A6200002800005D0240008B010001219 -S3154001B5507FFFFF4081E8000080A221FF188000366E -S3154001B560973220099B32200398132228832B6003AC -S3154001B5709200400C9B336002821020018328400DCB -S3154001B580D6026008DA0320049A134001D224200C23 -S3154001B590D6242008E022E00CDA232004E0226008C9 -S3154001B5A010BFFFECB010001203100140DA02A008F0 -S3154001B5B08210623080A3400132BFFFDED202A00C6E -S3154001B5C0E023600CE0236008DA242008DA24200C0A -S3154001B5D010BFFFDAB0102001808AE0011280000915 -S3154001B5E09002000FF2067FF8A0240019D204200C25 -S3154001B5F0D6042008D622600890020019D222E00C17 -S3154001B60003100140DA00622498122001E024600808 -S3154001B61080A2000D0ABFFFCFD824200403100143A6 -S3154001B620D20061287FFFFF5B901000127FFFFF0968 -S3154001B63081E8000080A2E000028000169B322003D0 -S3154001B6408332200680A2E004088000129A00603806 -S3154001B65080A2E0140880000F9A02E05B8332200C3E -S3154001B66080A2E0540880000B9A00606E8332200F5E -S3154001B67080A2E154088000079A0060778332201245 -S3154001B68080A2E554088000039A00607C9A10207ECF -S3154001B69094132228832B60039200400AD602600845 -S3154001B6A080A2C0090280001399336002C202E004FD -S3154001B6B082087FFC80A0400828800007D202E00C67 -S3154001B6C0D602E00880A2C00932BFFFFAC202E004F6 -S3154001B6D0D202E00CD224200CD6242008E022E00C31 -S3154001B6E010BFFFB0E022600810BFFF88B0102001F4 -S3154001B6F09A102001C202A0049B2B400C8210400DDF -S3154001B70010BFFFF5C222A00481C7E00881E800000E -S3154001B7109DE3BF98D206400080A2600012800004DB -S3154001B720901000187FFFFF5A81E800007FFFFFF964 -S3154001B730010000007FFFFF5681E800000100000084 -S3154001B7409DE3BF9803100142DA0063F880A6000D1D -S3154001B7500280004101000000D206204C80A2600018 -S3154001B7601280001CA0102000D206214880A2600051 -S3154001B7702280000FD2062054A006214C80A2401000 -S3154001B7802280000BD206205410800005B210000919 -S3154001B790F20640007FFFFF3E9010001880A400197A -S3154001B7A012BFFFFC92100019D206205480A26000FD -S3154001B7B01280002501000000C206203880A06000EA -S3154001B7C0028000250100000010800017C206203CBF -S3154001B7D0832C2002F202400180A660002280000BE9 -S3154001B7E0A004200192100019F20640007FFFFF28B5 -S3154001B7F09010001880A6600012BFFFFC921000193D -S3154001B800D206204CA004200180A4200E04BFFFF2E2 -S3154001B810832C20027FFFFF1E9010001810BFFFD41B -S3154001B820D20621489FC0400090100018F20622E03F -S3154001B83080A6600002800008010000007FFFFFB57E -S3154001B84081E800007FFFFF129010001810BFFFDC57 -S3154001B850C206203881C7E00881E800009DE3BF9811 -S3154001B86080A620000280001D03100142E406214803 -S3154001B87080A4A00022800013C206203CE204A0045A -S3154001B880A2847FFF0C80000A832C60028200401252 -S3154001B890A0006008C20400009FC04000A0043FFC15 -S3154001B8A0A2847FFF3CBFFFFDC2040000E404800088 -S3154001B8B080A4A00032BFFFF3E204A004C206203CEC -S3154001B8C080A0600002800007010000009FC0400088 -S3154001B8D0901000183080000310BFFFE5F00063F8B8 -S3154001B8E081C7E00881E800001080000B8610200027 -S3154001B8F08092400816800008861A400880924000CF -S3154001B90016800004809200001680000392200009F0 -S3154001B910902000089A924000128000059610000877 -S3154001B92091D0200281C3E0089010000080A2C00D92 -S3154001B9300A800095941000000302000080A2C00115 -S3154001B9400A8000289810000080A340011A80000D4B -S3154001B950841020019B2B600410BFFFFC980320013B -S3154001B9609A83400D1A8000078400A0018328600451 -S3154001B9709B3360019A034001108000078420A00197 -S3154001B98080A3400B0ABFFFF70100000002800002BE -S3154001B9900100000084A0A00106800076010000009D -S3154001B9A09622C00D941020011080000A010000006B -S3154001B9B0952AA001068000059B3360019622C00DA1 -S3154001B9C0108000049402A0019602C00D9422A001A9 -S3154001B9D084A0A00116BFFFF78092C00030800065A9 -S3154001B9E09B2B600480A3400B08BFFFFE9883200178 -S3154001B9F002800065982320018092C000952AA00408 -S3154001BA000680002F9B33600196A2C00D0680001769 -S3154001BA109B33600196A2C00D0680000B9B336001EB -S3154001BA2096A2C00D068000059B33600196A2C00D0B -S3154001BA30108000509402A00F9682C00D1080004DD8 -S3154001BA409402A00D9682C00D068000059B336001CD -S3154001BA5096A2C00D108000479402A00B9682C00D9D -S3154001BA60108000449402A0099682C00D0680000B06 -S3154001BA709B33600196A2C00D068000059B33600191 -S3154001BA8096A2C00D1080003B9402A0079682C00D7D -S3154001BA90108000389402A0059682C00D06800005EC -S3154001BAA09B33600196A2C00D108000329402A00320 -S3154001BAB09682C00D1080002F9402A0019682C00D7F -S3154001BAC0068000179B33600196A2C00D0680000BCD -S3154001BAD09B33600196A2C00D068000059B33600131 -S3154001BAE096A2C00D108000239402BFFF9682C00D1E -S3154001BAF0108000209402BFFD9682C00D068000058D -S3154001BB009B33600196A2C00D1080001A9402BFFBC0 -S3154001BB109682C00D108000179402BFF99682C00D1F -S3154001BB200680000B9B33600196A2C00D068000057E -S3154001BB309B33600196A2C00D1080000E9402BFF7A0 -S3154001BB409682C00D1080000B9402BFF59682C00DFF -S3154001BB50068000059B33600196A2C00D108000054A -S3154001BB609402BFF39682C00D108000029402BFF189 -S3154001BB7098A3200116BFFFA28092C0002680000232 -S3154001BB809422A0018090C000268000029420000AE1 -S3154001BB9081C3E0089010000A19100144DA0321A478 -S3154001BBA080A360001280000682034008031001440E -S3154001BBB09A1061B8DA2321A482034008C22321A442 -S3154001BBC081C3E0089010000DA7500000AE1000019F -S3154001BBD08334E00129100143E805203CA92CC01417 -S3154001BBE08215000181E000008190400001000000C3 -S3154001BBF00100000001000000E03BA000E43BA0087A -S3154001BC00E83BA010EC3BA018F03BA020F43BA02859 -S3154001BC10F83BA030FC3BA03881E8000082100017B9 -S3154001BC2081C4400081CC8000010000000100000079 -S3154001BC3001000000A7500000A92CE0012B10014390 -S3154001BC40EA05603CAB34C015AA1540148195400005 -S3154001BC5001000000010000000100000081E8000031 -S3154001BC6081E80000E01BA000E41BA008E81BA0102F -S3154001BC70EC1BA018F01BA020F41BA028F81BA03039 -S3154001BC80FC1BA03881E0000081E0000081C4400037 -S3154001BC9081CC8000A750000029100071ADC5220457 -S3154001BCA00100000027100143A614E01CE024C00057 -S3154001BCB0818C2020010000000100000001000000ED -S3154001BCC09DE3BFA09DE3BFA09DE3BFA09DE3BFA0B1 -S3154001BCD09DE3BFA09DE3BFA09DE3BFA081E8000017 -S3154001BCE081E8000081E8000081E8000081E8000069 -S3154001BCF081E8000081E8000027100143A614E01CFA -S3154001BD00C024C000E203A068A4046004E223A06446 -S3154001BD10E423A06810800262AC10000029100143A0 -S3154001BD20A8152000C2252000C8252004E0252010A2 -S3154001BD30E2252014E4252018E825201C81E800008E -S3154001BD408348000082106F00818860200100000056 -S3154001BD50010000000100000009100143C801203C18 -S3154001BD6081E000008821200180A920FF0280000394 -S3154001BD70010000000100000080A1000012BFFFF990 -S3154001BD800100000009100143C801203C81E8000080 -S3154001BD9080A920FF0280000301000000010000008D -S3154001BDA08821200180A1000012BFFFF90100000097 -S3154001BDB081E0000029100143A8152000C805200490 -S3154001BDC0C2052000E0052010E2052014E4052018F4 -S3154001BDD0C025201C818C20000100000001000000CC -S3154001BDE00100000081C4800081CCA004A0142F0072 -S3154001BDF0818C0000010000000100000001000000EC -S3154001BE0081C4800081CCA00480A660021280000516 -S3154001BE10A8142F00818D0000B01420203080001F0F -S3154001BE2080A6600312800006A80E2F00AA2C2F00C0 -S3154001BE30A8154014818D00003080001880A660044A -S3154001BE4012800008A9480000A8152040818D0000F5 -S3154001BE500100000001000000010000003080000FD9 -S3154001BE6080A6600512800008A9480000A82D204040 -S3154001BE70818D00000100000001000000010000006A -S3154001BE803080000680A66006128000030100000093 -S3154001BE9030BFFFA391D0200081C4800081CCA00493 -S3154001BEA09210200381C3E00891D020029210200213 -S3154001BEB081C3E00891D020029210200681C3E00898 -S3154001BEC091D0200281C3E0080100000081C3E0084F -S3154001BED00100000081C3E00801000000AE25A0106A -S3154001BEE0A75000002D10006FAC15A2F0291000716B -S3154001BEF081C523AC01000000111001439012202896 -S3154001BF00D202000092026001D2220000932DE00885 -S3154001BF10902C2F00921200091110014390122020FB -S3154001BF20D002000080A000082280000292126F0019 -S3154001BF30818A60200100000001000000010000002C -S3154001BF4090100017400000319203A06092142F0018 -S3154001BF50818A60200100000001000000010000000C -S3154001BF601110014390122028D20200009222600152 -S3154001BF70D22200001080022DAC1000001B1001449B -S3154001BF809A136030912A2002C2034008C222600CF3 -S3154001BF9081C3E008D22340089DE3BF9803100144C2 -S3154001BFA082106030992E60021B100143972E600467 -S3154001BFB0D800400C9A136230901000199202C00DBD -S3154001BFC080A6601F1480000F82102000108000069A -S3154001BFD080A320002280000AC2024000D803200C20 -S3154001BFE080A3200012BFFFFC80A300097FFFFFE46E -S3154001BFF0F02240001080000382102000F022400011 -S3154001C00081C7E00891E800019DE3BF981B100143F9 -S3154001C0108213602CD800600480A30018028000447B -S3154001C020C203602C80A6200022800002B010000CC2 -S3154001C03003100144A32E200282106030E00040111B -S3154001C04080A420000280003D0310014310800012AD -S3154001C050A41061ACD2042008941000199FC30000BB -S3154001C0609010001803100143C20061A480A0600033 -S3154001C0701280002B01000000C204801182007FFF64 -S3154001C080C2248011E004200C80A420000280002BF1 -S3154001C09001000000D804000080A3200022BFFFFB5E -S3154001C0A0E004200C03100143DA00622C80A36000F7 -S3154001C0B0128000089610001203100143821061ACF1 -S3154001C0C0DA00401180A3600032BFFFF0E004200C8B -S3154001C0D0DA02C011031001439A036001C20061A84C -S3154001C0E080A0600002BFFFDCDA22C0119FC0400081 -S3154001C0F001000000D8040000D20420089410001961 -S3154001C1009FC300009010001803100143C20061A4B0 -S3154001C11080A0600022BFFFDAC20480119FC04000A8 -S3154001C1200100000010BFFFD6C2048011DA0060C0D2 -S3154001C13010BFFFBDB00B601F81C7E00881E800005A -S3154001C1408C10000FA74800008B34E0188A09600F55 -S3154001C15080A160030280000C0B1001438A116034F8 -S3154001C1600920000088112070C82140000B100143AE -S3154001C1708A1160500920000088112040C8214000E2 -S3154001C180108000399010200192102006400001DDF8 -S3154001C1900100000080A00008028000330100000079 -S3154001C1A0C2022010113FFC0082084008110003FC26 -S3154001C1B08410400890100002921020019410200C27 -S3154001C1C0400001E60100000080A000080280002630 -S3154001C1D001000000400001F6921000010B100143DE -S3154001C1E08A116034D2214000901000029210200141 -S3154001C1F094102011400001D90100000080A00008E0 -S3154001C2000280001901000000400001E9921000017E -S3154001C210920260100B1001438A116050D2214000F6 -S3154001C22090100002921020019410200D400001CB85 -S3154001C2300100000080A000080280000B0100000000 -S3154001C240400001DB921000010B1001438A11602C62 -S3154001C250D2214000D40260109532A010940AA00F5A -S3154001C260D42160049E10000681C3E008010000004D -S3154001C27003100143821060488210200191D02000B2 -S3154001C28081C3E008010000009DE3BF98031001440B -S3154001C290C20060CC901000189210001980A0600076 -S3154001C2A002800005B01020009FC040000100000040 -S3154001C2B0B010000881C7E00881E800009DE3BF98FF -S3154001C2C003100144C20060C89010001880A06000AD -S3154001C2D002800005B01020009FC040000100000010 -S3154001C2E0B010000881C7E00881E800009DE3BF98CF -S3154001C2F003100144C20060C09010001880A0600085 -S3154001C30002800005B01020009FC0400001000000DF -S3154001C310B010000881C7E00881E800009DE3BF989E -S3154001C32003100144C20060C49010001880A0600050 -S3154001C33002800005B01020009FC0400001000000AF -S3154001C340B010000881C7E00881E800009DE3BF986E -S3154001C35003100144C20060BC9010001880A0600028 -S3154001C36002800005B01020009FC04000010000007F -S3154001C370B010000881C7E00881E800009DE3BF983E -S3154001C38003100144C20060B89010001880A06000FC -S3154001C39002800005B01020009FC04000010000004F -S3154001C3A0B010000881C7E00881E800009DE3BF980E -S3154001C3B003100144C20060B49010001880A06000D0 -S3154001C3C002800005B01020009FC04000010000001F -S3154001C3D0B010000881C7E00881E800009DE3BF98DE -S3154001C3E003100144C20060B0901000189210001969 -S3154001C3F080A0600002800005B01020009FC0400070 -S3154001C40001000000B010000881C7E00881E8000083 -S3154001C4100100000003100071821060E09FC04000DF -S3154001C4200100000003100000821060008198400066 -S3154001C43003100071821061649FC04000010000003A -S3154001C44003100071821060D09FC0400001000000BF -S3154001C4508B4800008B3160188A09600380A1600314 -S3154001C46012800007010000008B4440008B31601CA4 -S3154001C47080A1400012800006010000007FFFFF31CD -S3154001C480010000007FFF9339010000009C23A0407A -S3154001C4907FFF92DC010000008210200191D0200034 -S3154001C4A00100000029000004A68C0014328000031C -S3154001C4B0A02C001491D02000818C000001000000C6 -S3154001C4C0010000000100000081C4800081CCA0046D -S3154001C4D081C3E0080100000081C1E00801000000BD -S3154001C4E0A74800008B34E0188A09600380A16003E5 -S3154001C4F0128000080100000021100143A0142044CD -S3154001C500A2102003E22400008B4440001080000862 -S3154001C51021100143A0142044A2102002E22400006D -S3154001C52021200000E60420248B34E0148A09601F90 -S3154001C53027100143A614E03CCA24C0008A016001C9 -S3154001C54027100143A614E038CA24C000271001432E -S3154001C550A614E0408A216002CA24C00081C3E008D3 -S3154001C5600100000081C3E00801000000834800008B -S3154001C570833060188208600380A060031280000641 -S3154001C5800100000083444000050000088228400263 -S3154001C590A3804000881000000910007181C1201459 -S3154001C5A0010000009DE3BF98031000721B1000724A -S3154001C5B0A01062609A13626080A4000D1A80001078 -S3154001C5C0A210000D10800006C204000080A40011D4 -S3154001C5D01A80000B01000000C204000080A0600028 -S3154001C5E002BFFFFBA00420049FC0400001000000E1 -S3154001C5F080A400112ABFFFFAC204000081C7E008E7 -S3154001C60081E80000AA27A0B0E0256060E2256064C9 -S3154001C610E4256068C2256074C43D6078C83D608089 -S3154001C620CC3D608885400000C425606CF03D60903B -S3154001C630F43D6098F83D60A0FC3D60A8A81020013B -S3154001C640A92D0010808D0013028000130100000007 -S3154001C6508534E00107100143C600E03CA72CC00326 -S3154001C6608414C0028408A0FF81E000008190A000EC -S3154001C670E03BA000E43BA008E83BA010EC3BA0183F -S3154001C680F03BA020F43BA028F83BA030FC3BA0386F -S3154001C69081E8000081C5A0089C10001505100143E2 -S3154001C6A08410A1A0C400800080A080000280000404 -S3154001C6B0010000009FC080009203A060818C200091 -S3154001C6C0821020028328401005100143C400A0387F -S3154001C6D085304002821040028550000080888001EA -S3154001C6E0028000208328A00107100143C600E03CD8 -S3154001C6F08530800382104002820860FF819060008D -S3154001C700C203A06C81806000F01BA090F41BA0982E -S3154001C710F81BA0A0FC1BA0A8C203A074C41BA07850 -S3154001C720C81BA080CC1BA088E003A060E203A064E4 -S3154001C730E403A06881E80000E01BA000E41BA00818 -S3154001C740E81BA010EC1BA018F01BA020F41BA0288E -S3154001C750F81BA030FC1BA0381080000F81E00000C0 -S3154001C760C203A06C81806000F01BA090F41BA098CE -S3154001C770F81BA0A0FC1BA0A8C203A074C41BA078F0 -S3154001C780C81BA080CC1BA088E003A060E203A06484 -S3154001C790E403A068818C2000010000000100000034 -S3154001C7A00100000081C4400081CC8000AA27A0B0CE -S3154001C7B0C2256074C43D6078C83D6080CC3D6088C8 -S3154001C7C085400000C425606CA8102001A92D0010E9 -S3154001C7D0808D001302800013010000008534E001C2 -S3154001C7E007100143C600E03CA72CC0038414C002D5 -S3154001C7F08408A0FF81E000008190A000E03BA000FA -S3154001C800E43BA008E83BA010EC3BA018F03BA0207D -S3154001C810F43BA028F83BA030FC3BA03881E800005F -S3154001C82081C5A0089C100015051001438410A1A0E4 -S3154001C830C400800080A08000028000040100000046 -S3154001C8409FC080009203A060818C2000821020024C -S3154001C8508328401005100143C400A03885304002AA -S3154001C86082104002855000008088800102800019B4 -S3154001C8708328A00107100143C600E03C85308003B0 -S3154001C88082104002820860FF81906000C203A06C62 -S3154001C89081806000C203A074C41BA078C81BA0801D -S3154001C8A0CC1BA08881E80000E01BA000E41BA00887 -S3154001C8B0E81BA010EC1BA018F01BA020F41BA0281D -S3154001C8C0F81BA030FC1BA0381080000881E0000056 -S3154001C8D0C203A06C81806000C203A074C41BA0780F -S3154001C8E0C81BA080CC1BA088818C200001000000C1 -S3154001C8F0010000000100000081C4400081CC80009D -S3154001C900821000089A10380096102000912AE005FE -S3154001C91098034008D40340089132A01880A2000130 -S3154001C920328000089602E0019132A00C900A2FFF56 -S3154001C93080A20009028000079410000C9602E001D3 -S3154001C94080A2E00728BFFFF3912AE005941020005A -S3154001C95081C3E0089010000A821000089810200058 -S3154001C960912B20039A004008D60040089132E018E6 -S3154001C97080A2000932800008980320019132E00C20 -S3154001C980900A2FFF80A2000A028000079610000D30 -S3154001C9909803200180A3200F28BFFFF3912B20038A -S3154001C9A09610200081C3E0089010000BD4022004A9 -S3154001C9B0173FFC00920A400B900A800B9132200CE3 -S3154001C9C0921240081100003F901223F0940A800809 -S3154001C9D0952AA0049412800B920A400A81C3E0086A -S3154001C9E0901000099DE3BF980310007282106248BF -S3154001C9F0DA007FFC80A37FFF02800009A0007FFC54 -S3154001CA008210000D9FC04000A0043FFCC2040000FC -S3154001CA1080A07FFF12BFFFFC0100000081C7E00834 -S3154001CA2081E800009DE3BF9881C7E00881E80000E6 -S3154001CA3000000000000000000000000000000000AF -S3154001CA4000000002FFFFFFFF0000000000000000A1 -S3154001CA5000000002FFFFFFFF000000000000000091 -S3154001CA6040080000000000003CD203AF9EE7561686 -S3154001CA703E7AD7F29ABCAF48400506A800000000AE -S3154001CA80430000009DE3BFA07FFF919B0100000092 -S3154001CA907FFFFFD50100000081C7E00881E8000063 -S3154001CAA09DE3BFA07FFF91760100000081C7E008AA -S3154001CAB081E80000000000000000000000000000C6 -S315400200000000000100000000000000004001CA5844 +S3154001319085A00921C523000081C3E008D0030000B2 +S315400131A01910008098132120D0230000D223200833 +S315400131B0C1030000C303200885A009A1C52300005F +S315400131C081C3E008D0030000191000809813212024 +S315400131D0D0230000C103000083A00520C3230000C3 +S315400131E081C3E008D00300001310008092126138B9 +S315400131F0C51A6008C11A400089A0084091A108C2B9 +S3154001320095A209C495A2894281C3E008D53A000036 +S315400132101310008092126158C1024000C30260043B +S3154001322085A0082087A088A189A0C9A289A10921D2 +S3154001323081C3E008C92200009610200213100080C5 +S3154001324092126138151000809412A138D5024000BF +S31540013250D7028000D5220000D8020000131000805A +S315400132609212615896A2E00112BFFFF901000000D7 +S3154001327081C3E008010000001310008092126138FA +S31540013280151000809412A158C1028000C51A601021 +S3154001329083A0082089A088C08BA109A18DA10942DC +S315400132A08FA1492691A0054681C3E008D13A000085 +S315400132B01110008090122130C11A0000C51A000079 +S315400132C0C91A0000CD1A0000D11A0000D51A000013 +S315400132D0D91A0000DD1A0000E11A0000E51A0000C3 +S315400132E0E91A0000ED1A0000F11A0000F51A000073 +S315400132F0F91A0000FD1A000081C3E0080100000030 +S3154001330029100080A81520F827100080A614E1682E +S31540013310C12CC000E604C000A134E00EA00C200779 +S31540013320A0A42002AE1020002D100080AC15A1688B +S31540013330AE05E001AC05A008C1358000C12D0000F5 +S31540013340EA050000AB35600DAA8D600112BFFFF999 +S3154001335001000000808000100280002F2B3C1FFFDF +S31540013360AA1563FFA60CC015E6250000C10D000095 +S315400133702B100080AA1561742D10004CAC15A3E0EA +S31540013380AE25E001E0054000E025800081D820001F +S3154001339001000000010000000100000001000000E2 +S315400133A001000000010000000100000001000000D2 +S315400133B001000000010000000100000001000000C2 +S315400133C001000000010000000100000001000000B2 +S315400133D001000000010000000100000001000000A2 +S315400133E00000000080A5C00012BFFFE6AA056008E4 +S315400133F0C12D0000E60500002B03C000A614C01530 +S31540013400E6250000C10D000081C4400081CC80004A +S315400134100100000081C4800081CCA00401000000AD +S315400134200100000081C3E00891580000010000003E +S3154001343011100080901220F8C10A0000C02200003D +S31540013440C10A0000C12A0000D40200001300038013 +S31540013450942A800980A0000A3280004D90102003F2 +S315400134601303E000D223BFA0C023BFA4C10BBFA05A +S31540013470C023BFA0151000809412A0E8C1028000AD +S315400134800100000001000000C10BBFA0C10BBFA499 +S3154001349083A00520C12BBFA0D003BFA0808A2200F4 +S315400134A02280003B901020049010200015100080CF +S315400134B09412A108C5028000C902A008D102A00C3D +S315400134C013100080921260E8C70240008DA0894423 +S315400134D081A98AC80100000003800005010000009F +S315400134E0901020011080002A01000000C5028000D2 +S315400134F0C902A008D102A00C13100080921260E804 +S31540013500CB0240008DA0894481A98AC801000000F0 +S315400135100380000501000000901020011080001C6E +S315400135200100000025100080A414A0F0C11C8000F9 +S31540013530C51C800080A000003280000685A008C01E +S3154001354081A80AC2010000001380000301000000A7 +S31540013550901020050100000025100080A414A0F061 +S31540013560C11C8000C51C800080A000000100000035 +S315400135703280000685A008C081A80AC20100000069 +S315400135801380000301000000901020070100000095 +S3154001359081C3E0080100000090102001954400001D +S315400135A09532A01E940AA00380A2800002800040AA +S315400135B09010200080A2A0021680003D13100080CA +S315400135C092126198C11A4000C51A6008FD0260183E +S315400135D095A0003E99A0003E9DA0003E170000C068 +S315400135E09612E078A182C0000100000001000000AF +S315400135F00100000001000000010000000100000080 +S3154001360081A0002083A0002195A0002A99A0002C2A +S315400136109DA0002E170000C09612E07CA182C0003A +S31540013620010000000100000001000000010000004F +S31540013630010000000100000085A0002287A00023B0 +S31540013640A18000000100000001000000010000000F +S3154001365001000000010000000100000089A00842AD +S31540013660A9A2883ED93A4000DD224000CD1A601019 +S31540013670D102600881A90A46010000000380000CBE +S3154001368081AD0A280100000003800009934400002F +S315400136909332601B920A60079010200080A2A0011D +S315400136A002800003902260079022600481C3E008F3 +S315400136B001000000C12BBFA081C3E008D003BFA019 +S315400136C0D023BFA081C3E008C10BBFA00100000009 +S315400136D09DE3BF6040001B94B0102000833A200A4E +S315400136E08208600380A0600102800004010000009E +S315400136F081C7E00881E800007FFFB6C39010200D26 +S31540013700050C40290723CD1B8410A0068610E09B9B +S31540013710C027BFF0C027BFF4C43FBFF8C027BFD002 +S31540013720C027BFD4C027BFC87FFFFF3FC027BFCC3C +S31540013730820A3000821060808400600407280400F9 +S315400137408610E00F0910004CC62040008811230066 +S3154001375007100000882100028939200286110003E2 +S31540013760C620600425100080032784008210601063 +S315400137707FFFFED0C220A0047FFFFFD21103E000ED +S3154001378090102000C024A1687FFFFDD001000000F9 +S31540013790809200091280000601000000C204A1685F +S315400137A080A0600002800004010000007FFFB69DFA +S315400137B09010200B7FFFFDC590103FFA03300600A5 +S315400137C080A2000102800CF880A260007FFFB695BE +S315400137D09010200B7FFFFDBD9010201403100D00AB +S315400137E080A200010280113680A260007FFFB68D63 +S315400137F09010200B7FFFFDB590102062031016201C +S3154001380080A200010280112780A260007FFFB68559 +S315400138109010200B7FFFFDB5901020050310280066 +S3154001382080A2000112800CB501000000C204A1680B +S3154001383080A0600012800CB1010000007FFFFFA153 +S315400138401103C000111C00007FFFFDB09210200043 +S31540013850031FFFFF821063FF80A200011280000B4D +S3154001386001000000C404A168030000708210601FBB +S3154001387084088001030000108210601080A080013E +S3154001388002800005113C00007FFFB6669010200CB7 +S31540013890113C00007FFFFD9D921020000320000097 +S315400138A080A200011280000B01000000C404A1683F +S315400138B0030000708210601F84088001030000101D +S315400138C08210601080A08001028000040100000087 +S315400138D07FFFB6549010200CC024A16890102000A0 +S315400138E07FFFFD8A9210200080A2200012800006F0 +S315400138F003100080C200616880A06000028000055C +S31540013900110144007FFFB6479010200C110144007D +S3154001391013284000901223027FFFFD7C9212600122 +S3154001392080A220001280000601000000C204A168A6 +S3154001393080A06000228000051111FFFF7FFFB6398C +S315400139409010200C1111FFFF7FFFFD78901223FF8D +S315400139500300007F821063FF80A2000112800C6386 +S3154001396001000000C204A16880A0600012800C5FC3 +S3154001397001000000271000807FFFFD64D01CE1E0BC +S31540013980031FFFFF821063FF80A200011280000B1C +S3154001399001000000C404A168030000708210601F8A +S315400139A084088001030000108210601080A080010D +S315400139B002800005351000807FFFB61A9010200C5A +S315400139C035100080D01EA1D0C024A1687FFFFD4FD5 +S315400139D0010000000320000080A200011280000BBC +S315400139E003100080C4006168030000708210601FEC +S315400139F084088001030000108210601080A08001BD +S31540013A00028000052B1000807FFFB6069010200C27 +S31540013A102B100080D01D61F0C024A1687FFFFD3BC3 +S31540013A2001000000031FFFFF821063FF80A2000117 +S31540013A301280000B03100080C4006168030000700F +S31540013A408210601F840880010300001082106010FC +S31540013A5080A08001028000052F1000807FFFB5F114 +S31540013A609010200C2F100080D01DE1B8C024A16811 +S31540013A707FFFFD2601000000C204A1688330600E6D +S31540013A808208600380A060020280000401000000F9 +S31540013A907FFFB5E49010200C7FFFFF0A1103C000A1 +S31540013AA011115804C024A1687FFFFD2890122234C9 +S31540013AB003102B008210624680A200010280107121 +S31540013AC0032000007FFFB5D79010200D113C02AFB7 +S31540013AD07FFFFD1E901220D1033180558210639ADB +S31540013AE080A200010280105F030800007FFFB5CD70 +S31540013AF09010200D1111FC007FFFFD1C921020003B +S31540013B00031FE00080A200011280000B01000000AB +S31540013B10C404A168030000708210601F84088001FC +S31540013B20030000108210600880A08001028000041A +S31540013B30010000007FFFB5BB9010200DC024A16895 +S31540013B4011207C01130001007FFFFD0890122030F7 +S31540013B500320000080A200011280000B03100080A8 +S31540013B60C4006168030000708210601F84088001F0 +S31540013B70030000108210600480A0800102800004CE +S31540013B80010000007FFFB5A79010200DC024A16859 +S31540013B90901020007FFFFCF59210200080A22000AB +S31540013BA01280000603100080C200616880A0600098 +S31540013BB002800004010000007FFFB59A9010200D9D +S31540013BC07FFFFCEAD01CE1E003100080C20061E8FF +S31540013BD080A2000112800BC101000000C204A1684D +S31540013BE080A0600012800BBD0100000037100080EC +S31540013BF07FFFFCDED01EE1D8031FE00080A200015A +S31540013C0012800BB301000000C204A16880A06000CD +S31540013C1012800BAF010000007FFFFCD4D01D61F084 +S31540013C2003100080C200620080A200011280000BD6 +S31540013C3001000000C404A168030000708210601FE7 +S31540013C4084088001030000108210601080A080016A +S31540013C5002800005D01DE1B87FFFB5729010200D9E +S31540013C60D01DE1B8C024A1687FFFFCC0010000005F +S31540013C70C204A1688330600E8208600380A060029E +S31540013C8002800004010000007FFFB5669010200D00 +S31540013C907FFFFE8C1103E0002108C6AFC024A16856 +S31540013CA0901420DE7FFFFCB9A01420DE80A2001014 +S31540013CB012800B8303100080C200616880A06000FF +S31540013CC012800B7F010000002108C6AF901420DE50 +S31540013CD07FFFFCBEA01420DE80A2001012800B7470 +S31540013CE001000000C204A16880A0600012800B7030 +S31540013CF0010000001128C6AF7FFFFCB4901220DE00 +S31540013D000308C6AF821060DE80A2000112800B64F8 +S31540013D1001000000C204A16880A0600012800B600F +S31540013D20010000001108C6AF7FFFFCA0901220DE03 +S31540013D300328C6AF821060DE80A2000112800B54B8 +S31540013D4001000000C204A16880A0600012800B50EF +S31540013D50010000001128C6AF7FFFFC94901220DEBF +S31540013D600308C6AF821060DE80A2000112800B45B7 +S31540013D7001000000C204A16880A0600012800B41CE +S31540013D80010000007FFFFE4F1103E00011151BC02B +S31540013D901310C821901221039212614115351BC09F +S31540013DA01710C8219412A1037FFFFC909612E1419E +S31540013DB080A2200212800B2B01000000C204A168E0 +S31540013DC080A0600012800B270100000011351BC046 +S31540013DD01310C821901221039212614115151BC07F +S31540013DE01710C8219412A1037FFFFC809612E1416E +S31540013DF080A2200112800B1F01000000C204A168AD +S31540013E0080A0600012800B1B010000009010200072 +S31540013E1092102000152000007FFFFC7496102000B0 +S31540013E2080A220001280000601000000C204A168A1 +S31540013E3080A0600002800005D01EE1D87FFFB4F962 +S31540013E409010200FD01EE1D87FFFFC68D41EA1D070 +S31540013E5080A2200212800AFF01000000C204A1686C +S31540013E6080A0600012800AFB0100000011151BC0F2 +S31540013E701310C821901221039212614115151BE8B6 +S31540013E801710C8219412A1037FFFFC589612E141F5 +S31540013E9080A2200112800AEB01000000C204A16841 +S31540013EA080A0600012800AE70100000011151BE89E +S31540013EB01310C821901221039212614115151BC09E +S31540013EC01710C8219412A1037FFFFC489612E141C5 +S31540013ED080A2200212800AD701000000C204A16814 +S31540013EE080A0600012800AD301000000D41CE1E0EA +S31540013EF011151BE81310C821901221037FFFFC3BCB +S31540013F009212614180A2200312800AC6010000007C +S31540013F10C204A16880A0600012800AC201000000AC +S31540013F20D41D61F011151BE81310C821901221030D +S31540013F307FFFFC2E9212614180A220031280000B6A +S31540013F4001000000C404A168030000708210601FD4 +S31540013F5084088001030000108210601080A0800157 +S31540013F6002800005D41DE1B87FFFB4AE9010200F4A +S31540013F70D41DE1B8C024A16811151BE81310C8214E +S31540013F80901221037FFFFC199212614180A2200207 +S31540013F9012800AA003100080C200616880A0600000 +S31540013FA012800A9C01000000D01DE1B815151BE8DE +S31540013FB01710C8219412A1037FFFFC0C9612E14110 +S31540013FC080A2200112800A8B01000000C204A16870 +S31540013FD080A0600012800A8701000000D01CE1E049 +S31540013FE015151BE81710C8219412A1037FFFFBFF8B +S31540013FF09612E14180A2200312800A82010000004C +S31540014000C204A16880A0600012800A7E01000000FF +S31540014010D01D61F015151BE81710C8219412A10394 +S315400140207FFFFBF29612E14180A220031280000B32 +S3154001403001000000C404A168030000708210601FE3 +S3154001404084088001030000108210601080A0800166 +S3154001405002800004010000007FFFB4729010200F1F +S31540014060C024A16811151BC01310C8219012210349 +S315400140709212614115351BC01710C8219412A10334 +S315400140807FFFFBED9612E14180A2200212800A5584 +S3154001409003100080C200616880A0600012800A514E +S315400140A00100000011351BC01310C82190122103D5 +S315400140B09212614115151BC01710C8219412A10314 +S315400140C07FFFFBDD9612E14180A2200112800A4169 +S315400140D001000000C204A16880A0600012800A3D70 +S315400140E001000000901020009210200015200000D1 +S315400140F07FFFFBD19610200080A22000128000068F +S3154001410001000000C204A16880A060000280000591 +S31540014110D01EE1D87FFFB4439010200FD01EE1D8C6 +S315400141207FFFFBC5D41EA1D080A2200212800A25A2 +S3154001413001000000C204A16880A0600012800A212B +S315400141400100000011151BC01310C8219012210354 +S315400141509212614115151BE81710C8219412A1034B +S315400141607FFFFBB59612E14180A2200112800A1120 +S3154001417001000000C204A16880A0600012800A0DFF +S315400141800100000011151BE81310C82190122103EC +S315400141909212614115151BC01710C8219412A10333 +S315400141A07FFFFBA59612E14180A22002128009FD04 +S315400141B001000000C204A16880A06000128009F9D4 +S315400141C001000000D41CE1E011151BE81310C821C1 +S315400141D0901221037FFFFB989212614180A2200336 +S315400141E01280000B01000000C404A16803000070A6 +S315400141F08210601F84088001030000108210601045 +S3154001420080A0800102800005D41D61F07FFFB405C6 +S315400142109010200FD41D61F011151BE81310C82111 +S31540014220901221037FFFFB849212614180A22003F9 +S315400142301280000B01000000C404A1680300007055 +S315400142408210601F840880010300001082106010F4 +S3154001425080A0800102800005D41DE1B87FFFB3F143 +S315400142609010200FD41DE1B8C024A16811151BE898 +S315400142701310C821901221037FFFFB6F92126141F7 +S3154001428080A22002128009BF03100080C20061682B +S3154001429080A06000128009BB01000000D01DE1B87A +S315400142A015151BE81710C8219412A1037FFFFB6265 +S315400142B09612E14180A22001128009B60100000058 +S315400142C0C204A16880A06000128009B2010000000A +S315400142D0D01CE1E015151BE81710C8219412A10363 +S315400142E07FFFFB559612E14180A220031280000B0D +S315400142F001000000C404A168030000708210601F21 +S3154001430084088001030000108210601080A08001A3 +S3154001431002800005D01D61F07FFFB3C29010200FCF +S31540014320D01D61F015151BE81710C8219412A10381 +S315400143307FFFFB419612E14180A220031280000BD0 +S3154001434001000000C404A168030000708210601FD0 +S3154001435084088001030000108210601080A0800153 +S3154001436002800004010000007FFFB3AE9010200FD1 +S31540014370C024A168110048EA13048D15901223CD7B +S315400143807FFFFB3E9212627880A22001128009795A +S3154001439003100080C200616880A060001280097528 +S315400143A001000000110048EA13048D15901223CD37 +S315400143B07FFFFB439212627880A220011280096A34 +S315400143C001000000C204A16880A060001280096655 +S315400143D001000000C024A1687FFFFCBA1103C000A0 +S315400143E023100124A807BFF8BA07BFD090100014C4 +S315400143F09210001D7FFFFA6C94146150C204615003 +S31540014400C407BFF880A0800102800E0CA014615041 +S315400144107FFFB384901020102D100080901000145F +S315400144209215A1C87FFFFA6094146150C40461508B +S31540014430C205A1C880A0800122800DF6C4042004D3 +S315400144407FFFB37890102010901000149214E1E091 +S315400144507FFFFA5594146150C4046150C204E1E0EF +S3154001446080A0800102800DE1B214E1E07FFFB36DCF +S315400144709010201090100014921561F07FFFFA4AB7 +S3154001448094146150C404A168030000708210601F37 +S3154001449084088001030000108210601080A0800112 +S315400144A002800004010000007FFFB35E90102010DF +S315400144B0C024A1687FFFFC83901020009010001457 +S315400144C0921561F07FFFFA389414615039100080DB +S315400144D0C4046150C20721F880A0800122800DBD2D +S315400144E0C40420047FFFB34F901020107FFFFC755A +S315400144F01103C000901000149215E1B87FFFFA2A0B +S3154001450094146150C204A1688330600E820860032E +S3154001451080A0600202800004010000007FFFB341D9 +S3154001452090102010C024A1689010001D9210001414 +S315400145307FFFFA1D94146150C4046150C207BFF84D +S3154001454080A0800122800D9AC40420047FFFB335E8 +S31540014550901020109010001D9215A1C87FFFFA12ED +S3154001456094146150C4046150C205A1C880A0800161 +S3154001457022800D84C40420047FFFB32A90102010AA +S315400145809010001D9214E1E07FFFFA0794146150E8 +S31540014590C4046150C204E1E080A0800122800D7014 +S315400145A0C40420047FFFB31F901020109010001DFB +S315400145B0921561F07FFFF9FC94146150C404A1681F +S315400145C0030000708210601F840880010300001000 +S315400145D08210601080A0800102800004010000006A +S315400145E07FFFB310901020107FFFFC369010200003 +S315400145F09010001D921561F07FFFF9EB9414615004 +S31540014600C4046150C20721F880A0800122800D4D6B +S31540014610C40420047FFFB303901020107FFFFC29C0 +S315400146201103C0009010001D9215E1B87FFFF9DE1D +S3154001463094146150C204A1688330600E82086003FD +S3154001464080A0600202800004010000007FFFB2F5F5 +S3154001465090102010C024A1689015A1C89210001492 +S315400146607FFFF9D194146150C4046150C205A1C8B9 +S3154001467080A0800122800D28C40420047FFFB2E976 +S31540014680901020109015A1C89210001D7FFFF9C609 +S3154001469094146150C4046150C205A1C880A0800130 +S315400146A022800D12C40420047FFFB2DE9010201038 +S315400146B09016E1D8941461507FFFF9BB921000081F +S315400146C0C4046150C206E1D880A0800122800CFC5E +S315400146D0C40420047FFFB2D3901020109016A1D0BD +S315400146E0941461507FFFF9B092100008C4046150E0 +S315400146F0C206A1D080A0800122800CE6C404200419 +S315400147007FFFB2C8901020109016A1D09216E1D822 +S315400147107FFFF9A594146150C404A1680300007099 +S315400147208210601F8408800103000010821060100F +S3154001473080A0800102800004010000007FFFB2B921 +S31540014740901020107FFFFBDF901020009016A1D023 +S315400147509216E1D87FFFF99494146150C4046150D4 +S31540014760C20721F880A0800122800CC3C404200422 +S315400147707FFFB2AC901020107FFFFBD21103C00027 +S315400147809016E1D8C024A1689216A1D07FFFF98680 +S3154001479094146150C4046150C20721F880A080017D +S315400147A022800CA4C40420047FFFB29E90102010E6 +S315400147B09015A1C89215E1B87FFFF97B9414615019 +S315400147C0C204A1688330600E8208600380A0600243 +S315400147D002800004010000007FFFB2929010201079 +S315400147E0C024A1689014E1E0921000147FFFF96E95 +S315400147F094146150C4046150C204E1E080A0800178 +S3154001480022800C83C40420047FFFB28690102010BE +S315400148109014E1E09210001D7FFFF96394146150FA +S31540014820C4046150C204E1E080A0800122800C6F83 +S31540014830C40420047FFFB27B901020109014E1E065 +S315400148409215A1C87FFFF95894146150C404615070 +S31540014850C204E1E080A0800122800C5BC4042004F4 +S315400148607FFFB270901020109014E1E094146150D3 +S315400148707FFFF94D92100008C4046150C204E1E083 +S3154001488080A0800122800C47C40420047FFFB265CA +S31540014890901020109014E1E0921561F07FFFF942EB +S315400148A094146150C404A168030000708210601F13 +S315400148B084088001030000108210601080A08001EE +S315400148C002800004010000007FFFB25690102010C4 +S315400148D0C024A168901561F0921000147FFFF9324F +S315400148E094146150C404A168030000708210601FD3 +S315400148F084088001030000108210601080A08001AE +S3154001490002800004010000007FFFB2469010201093 +S31540014910C024A168901561F09210001D7FFFF92215 +S3154001492094146150C404A168030000708210601F92 +S3154001493084088001030000108210601080A080016D +S3154001494002800004010000007FFFB2369010201063 +S31540014950C024A168901561F09215A1C87FFFF91294 +S3154001496094146150C404A168030000708210601F52 +S3154001497084088001030000108210601080A080012D +S3154001498002800004010000007FFFB2269010201033 +S31540014990C024A168901561F09214E1E07FFFF9020D +S315400149A094146150C404A168030000708210601F12 +S315400149B084088001030000108210601080A08001ED +S315400149C002800005901561F07FFFB216901020100D +S315400149D0901561F0C024A168941461507FFFF8F2EC +S315400149E092100008C404A168030000708210601F81 +S315400149F084088001030000108210601080A08001AD +S31540014A0002800004010000007FFFB20690102010D2 +S31540014A10C024A168901561F09215E1B87FFFF8E2D4 +S31540014A2094146150C204A1688330600E8208600309 +S31540014A3080A0600202800004010000007FFFB1F9FE +S31540014A40901020107FFFFB1F1103C0000310008050 +S31540014A50C024A1688210633010800009B010200084 +S31540014A607FFFB1F090102010C207BFC4B0062001ED +S31540014A7080A6200D0280002282006018852E200328 +S31540014A80912E200590220002051000808410A3205B +S31540014A90C227BFC490008008932E2001151001241F +S31540014AA0920240189412A15092026001932A600327 +S31540014AB07FFFF8BD92008009C207BFC4C60040000F +S31540014AC0C404000080A0C00232BFFFE6C227BFC4B3 +S31540014AD0C60060040910012488112150C401200434 +S31540014AE080A0C00232BFFFDFC227BFC4B00620018B +S31540014AF080A6200D12BFFFE282006018C204A168A1 +S31540014B0080A0600012800BA30100000011100081FB +S31540014B1094146150901220587FFFF8A39202200806 +S31540014B200310008082106320C4006148C2046150B2 +S31540014B3080A0800102800B86071000807FFFB1B9FB +S31540014B409010201011100081941461509012207021 +S31540014B507FFFF8959202200809100080C204615037 +S31540014B6088112320C401216080A0800122800B6925 +S31540014B70C40121647FFFB1AB901020101110008158 +S31540014B8094146150901220887FFFF8879202200882 +S31540014B900310008082106320C4006178C204615012 +S31540014BA080A0800102800B4B071000807FFFB19DE2 +S31540014BB090102010C024A16811100000921020000E +S31540014BC0150FFC007FFFF94F96102000030FFC00E4 +S31540014BD080A2000102800B3880A260007FFFB19164 +S31540014BE0901020101110000092102000152FFC008B +S31540014BF07FFFF944961020000310020080A20001B5 +S31540014C0002800B2680A260007FFFB18690102010A3 +S31540014C101130000092102000150FFC007FFFF9397A +S31540014C20961020000330020080A2000102800B147E +S31540014C3080A260007FFFB17B9010201011300000F0 +S31540014C4092102000152FFC007FFFF92E96102000B0 +S31540014C50032FFC0080A2000102800B0280A26000AB +S31540014C607FFFB17090102010111000007FFFF92FC7 +S31540014C70130FE0000310100080A20001128007B656 +S31540014C8001000000C204A16880A06000128007B242 +S31540014C9001000000111000007FFFF92E130FE00004 +S31540014CA0030FE00080A20001128007A70100000067 +S31540014CB0C204A16880A06000128007A30100000021 +S31540014CC009100080C024A16890100014941461500A +S31540014CD07FFFF848921121C0C4046150C206A1D099 +S31540014CE080A0800122800ACFC40420047FFFB14DF9 +S31540014CF090102011C024A168901000149216E1D89A +S31540014D007FFFF83C94146150C4046150C207BFC888 +S31540014D1080A0800122800ABAC40420047FFFB141E9 +S31540014D2090102011901000149214E1E07FFFF831A9 +S31540014D3094146150C4046150C204E1E080A0800132 +S31540014D4022800AA6C40420047FFFB13690102011A8 +S31540014D5090100014921561F07FFFF826941461506B +S31540014D60C4046150C20721F880A0800122800A8ACA +S31540014D70C40420047FFFB12B901020119010001421 +S31540014D809215E1B87FFFF81B94146150030000703F +S31540014D90C404A168840880010300002080A080012A +S31540014DA002800004010000007FFFB11E9010201117 +S31540014DB0C024A1689010001D921000147FFFF80DC9 +S31540014DC094146150C4046150C207BFD080A08001D1 +S31540014DD022800A68C40420047FFFB112901020117A +S31540014DE0031000809207BFC8901061C07FFFF80191 +S31540014DF094146150C4046150C20721F880A0800117 +S31540014E0022800A4CC40420047FFFB1069010201171 +S31540014E1009100080C024A168901121C09216E1D8E2 +S31540014E207FFFF7F494146150C40461500710008069 +S31540014E30C200E1C080A0800122800A34C40420045B +S31540014E407FFFB0F8901020119010001D9214E1E000 +S31540014E507FFFF7E894146150C4046150C204E1E055 +S31540014E6080A0800122800A20C40420047FFFB0ED87 +S31540014E70901020079010001D921561F07FFFF7DD1D +S31540014E8094146150C404A168030000708210601F2D +S31540014E9084088001030000108210601080A0800108 +S31540014EA002800004010000007FFFB0DE9010201157 +S31540014EB0C024A1689010001D9215E1B87FFFF7CD7F +S31540014EC09414615003000070C404A16884088001F1 +S31540014ED00300002080A08001028000040100000040 +S31540014EE07FFFB0D090102011C024A1689016A1D0A8 +S31540014EF0921000147FFFF7BF94146150C4046150AF +S31540014F00C206A1D080A08001228009ECC4042004FD +S31540014F107FFFB0C490102011091000809016A1D0D7 +S31540014F20921121C07FFFF7B394146150C4046150BC +S31540014F30C206E1D880A08001228009D5C40420049C +S31540014F407FFFB0B8901020119015A1C894146150FC +S31540014F507FFFF7A892100008C4046150C20721F8E8 +S31540014F6080A08001228009BAC40420047FFFB0AD2D +S31540014F7090102011C024A1689015A1C89214E1E0B7 +S31540014F807FFFF79C94146150C4046150C204E1E070 +S31540014F9080A08001228009A5C40420047FFFB0A11E +S31540014FA0901020119015A1C8921561F07FFFF791DD +S31540014FB094146150C4046150C20721F880A0800155 +S31540014FC02280098AC40420047FFFB09690102011E4 +S31540014FD0C024A1689015A1C89215E1B87FFFF78555 +S31540014FE09414615003000070C404A16884088001D0 +S31540014FF00300002080A0800102800004010000001F +S315400150007FFFB08890102011C024A1689014E1E080 +S31540015010921000147FFFF77794146150C4046150D5 +S31540015020C204E1E080A0800122800967C404200413 +S315400150307FFFB07C901020119014E1E09210001D8A +S315400150407FFFF76C94146150C4046150C204E1E0DF +S3154001505080A0800122800953C40420047FFFB071DF +S31540015060901020119014E1E09215A1C87FFFF761DD +S3154001507094146150C4046150C204E1E080A08001EF +S315400150802280093FC40420047FFFB066901020119E +S315400150909014E1E0941461507FFFF7569210000896 +S315400150A0C4046150C204E1E080A080012280092B42 +S315400150B0C40420047FFFB05B901020119014E1E0FE +S315400150C0921561F07FFFF74B94146150C40461500F +S315400150D0C20721F880A080012280090FC404200460 +S315400150E07FFFB050901020119014E1E09215E1B885 +S315400150F07FFFF7409414615003000070C404A16817 +S31540015100840880010300002080A080010280000500 +S31540015110901561F07FFFB04390102011901561F01A +S31540015120921000147FFFF73394146150C404A168B0 +S31540015130030000708210601F840880010300001084 +S315400151408210601080A080010280000401000000EE +S315400151507FFFB03490102011C024A168901561F0F2 +S315400151609210001D7FFFF72394146150C404A16877 +S31540015170030000708210601F840880010300001044 +S315400151808210601080A080010280000401000000AE +S315400151907FFFB02490102011C024A168901561F0C2 +S315400151A09215A1C87FFFF71394146150C404A168F6 +S315400151B0030000708210601F840880010300001004 +S315400151C08210601080A0800102800004010000006E +S315400151D07FFFB01490102011C024A168901561F092 +S315400151E09214E1E07FFFF70394146150C404A1686F +S315400151F0030000708210601F8408800103000010C4 +S315400152008210601080A0800102800005901561F037 +S315400152107FFFB00490102011901561F0C024A16861 +S31540015220941461507FFFF6F392100008C404A168FC +S31540015230030000708210601F840880010300001083 +S315400152408210601080A080010280000401000000ED +S315400152507FFFAFF490102011C024A168901561F032 +S315400152609215E1B87FFFF6E3941461500300007094 +S31540015270C404A168840880010300002080A0800145 +S3154001528002800005051FC0007FFFAFE69010201188 +S31540015290051FC0000700C0008410A1028610E0B0BF +S315400152A0C024A168B007BFE0C43FBFE805203E83E4 +S315400152B0070021C88410A3FF8610E3A19007BFE829 +S315400152C092100018C43FBFE07FFFF6CA9407BFD8CB +S315400152D0C407BFD8033FFC0080A08001028008803C +S315400152E0C207BFDC7FFFAFCF901020110500400001 +S315400152F00700C0008410A1028610E0B0C024A16856 +S315400153009007BFE8C43FBFE805108683070021C860 +S315400153108410A3FF8610E3A1921000189407BFD80A +S315400153207FFFF6B4C43FBFE0C207BFDCC407BFD8A6 +S31540015330809080011280000B03100080C4006168D8 +S31540015340030000708210601F840880010300001072 +S315400153508210600480A0800102800005050006AF2E +S315400153607FFFAFB090102011050006AF86102010C8 +S31540015370C024A1689007BFE8C43FBFE8050FFC0001 +S31540015380070281D88410A0408610E10C92100018C3 +S315400153909407BFD87FFFF697C43FBFE0C407BFD885 +S315400153A0030006AE8210639580A080010280084208 +S315400153B0C407BFDC7FFFAF9B90102011050006AFED +S315400153C086102010C024A1689007BFE8C43FBFE8FB +S315400153D0050FFFFF070281D88410A3408610E10C18 +S315400153E0921000189407BFD87FFFF682C43FBFE0F2 +S315400153F0C207BFDCC407BFD8809080011280000B72 +S3154001540003100080C4006168030000708210601FB1 +S3154001541084088001030000108210600480A080018E +S3154001542002800004010000007FFFAF7E9010201132 +S31540015430C024A168111088007FFFF75A131001009C +S31540015440031066C9821062CA80A20001128005BAA1 +S3154001545003100080C200616880A06000128005B61A +S31540015460010000001111BBFE130C70407FFFF74D88 +S31540015470901223FF031527CA8210611E80A20001E4 +S31540015480128005A901000000C204A16880A0600045 +S31540015490128005A501000000111E607E1310C7FF92 +S315400154A07FFFF740921263FC031D73FC8210633841 +S315400154B080A200011280059801000000C204A16883 +S315400154C080A06000128005940100000011002000B8 +S315400154D0130FE0007FFFF7339212600180A2200094 +S315400154E01280000B01000000C404A1680300007093 +S315400154F08210601F8408800103000010821060043E +S3154001550080A0800102800005110FE0007FFFAF45BA +S3154001551090102011110FE000C024A1687FFFF721F0 +S3154001552092100008030FE00080A200011280057668 +S3154001553003100080C200616880A06000128005727D +S315400155400100000011002000130FE0007FFFF71556 +S315400155509212600180A220001280000B010000001F +S31540015560C404A168030000708210601F8408800192 +S31540015570030000108210600480A0800102800005B3 +S31540015580031000807FFFAF27901020110310008089 +S31540015590C024A168921061C0901000147FFFF607E5 +S315400155A094146150C404615007100080C200E1C0E8 +S315400155B080A08001228007B6C40420047FFFAF1972 +S315400155C090102012901000149216E1D87FFFF5FB3F +S315400155D094146150C4046150C206E1D880A0800190 +S315400155E0228007A0C40420047FFFAF0E9010201232 +S315400155F0901000149214E1E07FFFF5F0941461508D +S31540015600C4046150C204E1E080A080012280078C7D +S31540015610C40420047FFFAF039010201290100014A1 +S31540015620921561F07FFFF5E594146150C404615011 +S31540015630C20721F880A0800122800770C40420049B +S315400156407FFFAEF890102012901000149215E1B829 +S315400156507FFFF5DA9414615003000070C404A16819 +S31540015660840880010300002080A08001028000049C +S31540015670010000007FFFAEEB90102012C024A1680C +S315400156809010001D921000147FFFF5CC94146150C8 +S31540015690C4046150C207BFD080A080012280074E5A +S315400156A0C40420047FFFAEDF901020120310008057 +S315400156B09216A1D0901061C07FFFF5C0941461503D +S315400156C0C4046150C20721F880A0800122800732BC +S315400156D0C40420047FFFAED390102012C024A168D9 +S315400156E09010001D9214E1E07FFFF5B494146150CF +S315400156F0C4046150C204E1E080A080012280071DFC +S31540015700C40420047FFFAEC7901024999010001D59 +S31540015710921561F07FFFF5A994146150C40461505C +S31540015720C20721F880A0800122800701C404200419 +S315400157307FFFAEBC901020129010001D9215E1B86B +S315400157407FFFF59E9414615003000070C404A16864 +S31540015750840880010300002080A0800102800004AB +S31540015760010000007FFFAEAF90102012C024A16857 +S315400157709015A1C8921000147FFFF59094146150C2 +S31540015780C4046150C205A1C880A08001228006DD03 +S31540015790C40420047FFFAEA3901020129015A1C827 +S315400157A09210001D7FFFF58594146150C404615029 +S315400157B0C20721F880A08001228006C2C4042004C9 +S315400157C07FFFAE9890102012C024A1689015A1C801 +S315400157D09214E1E07FFFF57994146150C40461505D +S315400157E0C204E1E080A08001228006ADC404200409 +S315400157F07FFFAE8C901020129015A1C8921561F0D2 +S315400158007FFFF56E94146150C4046150C20721F8BC +S3154001581080A0800122800691C40420047FFFAE81CE +S31540015820901020129015A1C89215E1B87FFFF5633B +S315400158309414615003000070C404A1688408800177 +S315400158400300002080A080010280000401000000C6 +S315400158507FFFAE7490102012C024A1689014E1E03D +S31540015860921000147FFFF55594146150C4046150A1 +S31540015870C204E1E080A080012280066FC4042004B6 +S315400158807FFFAE68901020129014E1E09210001D47 +S315400158907FFFF54A94146150C4046150C204E1E0AB +S315400158A080A080012280065BC40420047FFFAE5D98 +S315400158B0901020129014E1E09215A1C87FFFF53FA8 +S315400158C094146150C4046150C204E1E080A0800197 +S315400158D022800647C40420047FFFAE529010201256 +S315400158E09014E1E0941461507FFFF5349210000862 +S315400158F0C4046150C204E1E080A0800122800633E5 +S31540015900C40420047FFFAE47901020129014E1E0BA +S31540015910921561F07FFFF52994146150C404A16882 +S31540015920030000708210601F84088001030000108C +S315400159308210601080A080010280000401000000F6 +S315400159407FFFAE3890102012C024A168901561F0F7 +S31540015950921000147FFFF51994146150C404A16894 +S31540015960030000708210601F84088001030000104C +S315400159708210601080A080010280000401000000B6 +S315400159807FFFAE2890102012C024A1689210001DFE +S31540015990901561F07FFFF50994146150C404A16824 +S315400159A0030000708210601F84088001030000100C +S315400159B08210601080A08001028000040100000076 +S315400159C07FFFAE1890102012C024A168901561F097 +S315400159D09215A1C87FFFF4F994146150C404A168DB +S315400159E0030000708210601F8408800103000010CC +S315400159F08210601080A08001028000040100000036 +S31540015A007FFFAE0890102012C024A168901561F066 +S31540015A109214E1E07FFFF4E994146150C404A16853 +S31540015A20030000708210601F84088001030000108B +S31540015A308210601080A0800102800005901561F0FF +S31540015A407FFFADF890102012901561F0C024A16837 +S31540015A50941461507FFFF4D992100008C404A168E0 +S31540015A60030000708210601F84088001030000104B +S31540015A708210601080A080010280000401000000B5 +S31540015A807FFFADE890102012C024A168901561F007 +S31540015A909215E1B87FFFF4C994146150C204A1681C +S31540015AA08330600E8208600380A060020280000598 +S31540015AB01103C0007FFFADDB901020121103C0001F +S31540015AC07FFFF70031100080B0162228C024A1685C +S31540015AD010800008BA1020007FFFADD2901020122E +S31540015AE0BA07600180A7600602800024B00620182C +S31540015AF0832F60030910008088112218912F6005B9 +S31540015B00932F6001902200019202401D90010008EE +S31540015B109202600115100124932A60039412A15048 +S31540015B207FFFF4A692010009C4060000C2040000EA +S31540015B3080A0800112BFFFE907100124C40620049A +S31540015B408610E150C200E00480A0800112BFFFE34D +S31540015B500910008088112168C201000080A0600000 +S31540015B6012BFFFDE01000000BA07600180A7600690 +S31540015B7012BFFFE0B0062018111000809414615046 +S31540015B80901222A87FFFF48D920220080310008014 +S31540015B9082106218C40060A0C204615080A08001D6 +S31540015BA00280057A071000807FFFAD9E901020127B +S31540015BB0C024A1681110008094146150901222C033 +S31540015BC07FFFF47E9202200809100080C2046150D2 +S31540015BD088112218C40120B880A080012280055D69 +S31540015BE0C40120BC7FFFAD8F90102012C024A16854 +S31540015BF01110008094146150901222D87FFFF46FE7 +S31540015C00920220080310008082106218C40060D0FE +S31540015C10C204615080A080010280053E07100080C9 +S31540015C207FFFAD8090102012C024A1681110008022 +S31540015C3094146150901222F07FFFF4609202200882 +S31540015C4009100080C204615088112218C40120E85D +S31540015C5080A0800122800521C40120EC7FFFAD7127 +S31540015C6090102012C024A168111000809414615034 +S31540015C70901223087FFFF4519202200803100080FE +S31540015C8082106218C4006100C204615080A0800184 +S31540015C9002800502071000807FFFAD62901020123E +S31540015CA0C024A168111010007FFFF53413100000C5 +S31540015CB00310300080A20001128003B70310008058 +S31540015CC0C200616880A06000128003B30100000039 +S31540015CD0111FE000131000007FFFF43D9414615042 +S31540015CE0C4046150031FFC0080A08001228004E3AC +S31540015CF0C20420047FFFAD4B9010201B111FE00012 +S31540015D00133000007FFFF43294146150C404615093 +S31540015D10033FFC0080A08001228004D0C2042004FD +S31540015D207FFFAD409010201C1110000092102010F2 +S31540015D307FFFF4279414615003000070C404A168E6 +S31540015D40840880010300002080A0800102800004B5 +S31540015D50010000007FFFAD339010201DC024A168D3 +S31540015D6011002000130FC0007FFFF41994146150F5 +S31540015D70C4046150030E000080A08001228004AF5C +S31540015D80C20420047FFFAD279010201E111FDFFFA4 +S31540015D9013100000901223FF7FFFF40D94146150FD +S31540015DA0C40461500311FFFF821063FF80A080018C +S31540015DB022800499C40420047FFFAD1A9010201F4D +S31540015DC0111FD000130FF0007FFFF40194146150AE +S31540015DD0C40461500311FC8080A0800122800486A6 +S31540015DE0C20420047FFFAD0F90102021111FDFFF59 +S31540015DF094146150901223FF7FFFF3F5921000082F +S31540015E00C40461500313FBFF821063FF80A080012D +S31540015E102280046FC40420047FFFAD02901020202D +S31540015E207FFFF6281103C0009007BFC8C024A168B0 +S31540015E307FFFF3F692146150C4046150C207BFC894 +S31540015E4080A0800122800459C40420047FFFACF560 +S31540015E509010201309100080921461507FFFF3EBDC +S31540015E60901121C005100080C200A1C0C404615038 +S31540015E7080A0800102800442071000807FFFACE9C8 +S31540015E80901020139016E1D87FFFF3E092146150F1 +S31540015E90C4046150C206E1D880A080010280042D6D +S31540015EA0091000807FFFACDF901020139016A1D01F +S31540015EB07FFFF3D692146150C4046150C20721F8A2 +S31540015EC080A0800122800413C40420047FFFACD546 +S31540015ED090102013C024A168901561F07FFFF3CB89 +S31540015EE092146150C4046150C20721F880A0800118 +S31540015EF0228003F8C40420047FFFACCA901020130B +S31540015F00C024A1689014E1E07FFFF3C09214615070 +S31540015F10C204E1E0C404615080A08001228003E410 +S31540015F20C20660047FFFACBF9010201305100C0021 +S31540015F30861020009010001492146150C43FBFF89F +S31540015F4005300F78070C00088610E0017FFFF3AF9C +S31540015F50C43FBFF0C40461500310040080A0800117 +S31540015F60228003CBC20420047FFFACAE90102013E5 +S31540015F70A607BFF0921461507FFFF3A4901000135F +S31540015F80C20721F8C404615080A08001028003B099 +S31540015F90051000807FFFACA3901020139015E1B847 +S31540015FA07FFFF39A92146150C204A1688330600E58 +S31540015FB08208600380A060020280000401000000A4 +S31540015FC07FFFAC9890102013C024A1687FFFF47F17 +S31540015FD01111F2000310E80080A20001128002EBC9 +S31540015FE003100080C200616880A06000128002E751 +S31540015FF0010000007FFFF5B3111000001101F58982 +S315400160007FFFF472901221E20308E96480A2000145 +S31540016010128002DB01000000C204A16880A060007A +S31540016020128002D7010000007FFFF4681112A20816 +S315400160300311410080A20001128002CE010000003E +S31540016040C204A16880A06000128002CA010000005B +S315400160507FFFF59C11001000901000149215E1B8D5 +S315400160607FFFF35194146150C404615003100C0036 +S3154001607080A080012280036EC20420047FFFAC69A8 +S31540016080901020149015E1B8921000137FFFF34B46 +S3154001609094146150C40461500320000080A0800123 +S315400160A02280035BC20420047FFFAC5E9010201463 +S315400160B07FFFF38E90102001030FE00080A20001C4 +S315400160C0128002A901000000C204A16880A06000FC +S315400160D0128002A5010000007FFFF37C9010200191 +S315400160E0030FFC0080A200010280034280A26000EF +S315400160F07FFFAC4C901020147FFFF57211101000F9 +S31540016100D41EE1D87FFFF3FFD01DE1B8C206A1D06E +S31540016110D024615080A040080280032BD224200461 +S315400161207FFFAC40901020227FFFF56611100000E2 +S31540016130050FFC00861020009010001492100013E9 +S31540016140C43FBFF8050F2800070400808610E0F021 +S31540016150941461507FFFF314C43FBFF0C4046150EF +S31540016160030FFC0080A0800122800313C204200497 +S315400161707FFFAC2C901020157FFFF55211200000B7 +S31540016180050FFC0086102000901000149210001399 +S31540016190C43FBFF805001400070000408610E00127 +S315400161A0941461507FFFF300C43FBFF0C4046150B3 +S315400161B0030FFC0080A08001228002FBC204200460 +S315400161C07FFFAC18901020157FFFF53E113000007F +S315400161D0052FFC0086102000901000149210001329 +S315400161E0C43FBFF805201400070000408610E001B7 +S315400161F0941461507FFFF2ECC43FBFF0C404615078 +S31540016200032FFC0080A08001228002E3C204200407 +S315400162107FFFAC04901020157FFFF52A1110000076 +S31540016220050FFC0086102000901000149215A1C89D +S31540016230C43FBFF87FFFF2DC94146150C40461503F +S31540016240C205A1C880A08001228002CCC4042004DA +S315400162507FFFABF4901020157FFFF51A1120000047 +S31540016260050FFC0086102000901000149215A1C85D +S31540016270C43FBFF805001400070000408610E00146 +S31540016280941461507FFFF2C8C43FBFF0C40461500B +S31540016290C205A1C880A08001228002B1C4042004A5 +S315400162A07FFFABE0901020157FFFF506113000000F +S315400162B0052FFC0086102000901000149215A1C8ED +S315400162C0C43FBFF805201400070000408610E001D6 +S315400162D0941461507FFFF2B4C43FBFF0C205A1C818 +S315400162E0C404615080A0800102800296091000809A +S315400162F07FFFABCC901020157FFFF4F21110000008 +S31540016300050FFC0086102001901000149210001316 +S31540016310C43FBFF805100000861020019414615057 +S315400163207FFFF2A6C43FBFF0C404615003100000D2 +S3154001633080A080012280027FC20420047FFFABB986 +S31540016340901020157FFFF4DF1120000090100014FB +S31540016350921000137FFFF29994146150C404615066 +S315400163600310000080A080012280026EC204200436 +S315400163707FFFABAC901020157FFFF4D211300000A7 +S31540016380052FFC0086102001901000149210001376 +S31540016390C43FBFF87FFFF28994146150C404615031 +S315400163A00330000080A080012280025AC2042004EA +S315400163B07FFFAB9C901020157FFFF4C211100000A7 +S315400163C0050FFEAE071CD2E88410A1548610E011D9 +S315400163D09010001492100013C43FBFF8050FFC043F +S315400163E0072F26158410A0128610E23194146150AD +S315400163F07FFFF280C43FBFF0C4046150030FFEA784 +S315400164008210629680A080012280023CC40420044E +S315400164107FFFAB84901020157FFFF4AA1120000066 +S3154001642090100014921000137FFFF2729414615081 +S31540016430C4046150030FFEA78210629680A08001BA +S3154001644022800228C40420047FFFAB7690102015D9 +S315400164507FFFF49C11300000052FFC04072F261501 +S315400164608410A0128610E23190100014921000138D +S31540016470C43FBFF07FFFF25F94146150C404615082 +S31540016480032FFEA78210629680A080012280020F10 +S31540016490C40420047FFFAB63901020157FFFF4896D +S315400164A011100000051038008610200090100014CD +S315400164B092100013C43FBFF805101000861020004B +S315400164C0941461507FFFF24BC43FBFF0C404615046 +S315400164D00310240080A08001228001F8C204200418 +S315400164E07FFFAB50901020157FFFF47611200000FE +S315400164F090100014921000137FFFF23E94146150E5 +S31540016500C40461500310240080A08001228001E769 +S31540016510C20420047FFFAB43901020157FFFF4692E +S315400165201130000090100014921000137FFFF231D9 +S3154001653094146150C40461500310240080A080016A +S31540016540228001D6C20420047FFFAB36901020156D +S315400165507FFFF45C1110000011002000130FE000D2 +S315400165607FFFF3109212600180A22000128001C8C1 +S31540016570010000007FFFF4531120000011002000AC +S31540016580130FE0007FFFF3079212600180A2200003 +S31540016590128001BC010000007FFFF44A1130000067 +S315400165A011002000130FE0007FFFF2FE92126001FE +S315400165B080A22000128001B0010000007FFFF4415B +S315400165C011100000050FFC008610200090100014E9 +S315400165D0921461507FFFF20DC43FBFF8C40461506D +S315400165E0C207BFF880A080012280019AC40420041A +S315400165F07FFFAB0C901020157FFFF4321120000075 +S31540016600901000147FFFF20192146150C40461504E +S31540016610C207BFF880A0800122800185C4042004FE +S315400166207FFFAB00901020157FFFF426113000004C +S31540016630901000147FFFF1F592146150C40461502B +S31540016640C207BFF880A0800122800170C4042004E3 +S315400166507FFFAAF4901020157FFFF41A1110000055 +S315400166602B0FDFFF901563FF7FFFF2D8AA1563FF5B +S3154001667080A2001502800004010000007FFFAAE904 +S31540016680901020157FFFF40F11200000110FDFFF3E +S315400166907FFFF2CE901223FF030FE00080A200019C +S315400166A002800004010000007FFFAADE9010201541 +S315400166B07FFFF404113000002B0FDFFF901563FFBD +S315400166C07FFFF2C2AA1563FF80A200150280000473 +S315400166D0010000007FFFAAD3901020157FFFF3F938 +S315400166E0901020007FFFF2C190146150C4046150A4 +S315400166F0032FFE0080A0800122800140C2042004B5 +S315400167007FFFAAC8901020162B1001247FFFF2C1EB +S3154001671090156158C4056158032FF00080A080018F +S3154001672002800004010000007FFFAABE90102016DF +S315400167307FFFF2C290156158C4056158030FE0000E +S3154001674080A0800102800004010000007FFFAAB5FD +S31540016750901020167FFFF2C990146150C404615015 +S31540016760030FFBF7821063F080A080012280011C99 +S31540016770C40420047FFFAAAB901020169215E1B8FD +S31540016780901000147FFFF19B94146150C204A168DC +S315400167908330600E8208600780A060020280000597 +S315400167A0031000807FFFAA9F9010201703100080DE +S315400167B0C40061700310004BE40061F8821061F877 +S315400167C080A0400202800005031000807FFFAA9549 +S315400167D09010201803100080C200617480A04012FE +S315400167E002800005031000807FFFAA8E90102018BA +S315400167F003100080C200617880A06000128000F41E +S315400168000100000003100080C200617C80A060008E +S31540016810128000EC010000007FFFF14E01000000F4 +S3154001682080A220010280052D01000000050C4029AF +S315400168300723CD1B8410A0068610E09B9010001400 +S31540016840C027BFF0C027BFF4C43FBFF8291000815D +S315400168507FFFF1962B100082AA1560A0A41020009C +S31540016860A81520A0AC146150BA100015108000087C +S31540016870AE1000107FFFAA6B90102019A404A0044B +S3154001688080A4A400228000172B100084C2050012A8 +S31540016890C224C000901000137FFFF18792100016AA +S315400168A0832CA001C4040000C605400180A0C0029B +S315400168B012BFFFF182074001C4006004C205E00433 +S315400168C080A0800112BFFFEC01000000A404A004D7 +S315400168D080A4A40032BFFFEFC20500122B10008432 +S315400168E0A2146150AA1560A0A4102000AE10001594 +S315400168F010800008AC1000107FFFAA4A9010201AA1 +S31540016900A404A00880A4A400028000150100000090 +S31540016910C2050012C224C000921000117FFFF13B54 +S3154001692090100013C4054012C204000080A08001EB +S3154001693012BFFFF28205C012C4006004C205A00462 +S3154001694080A0800112BFFFED01000000A404A00851 +S3154001695080A4A40032BFFFF0C205001281C7E0083F +S3154001696081E800007FFFAA2F9010200F30BFF69AD2 +S315400169707FFFAA2C9010200F10BFF68C110048EA19 +S315400169807FFFAA289010200F10BFF646D01DE1B810 +S315400169907FFFAA249010200F10BFF64FD01CE1E0D4 +S315400169A07FFFAA209010200F10BFF608D41CE1E00B +S315400169B07FFFAA1C9010200F10BFF5F411151BE89C +S315400169C07FFFAA189010200F10BFF5E011151BC0CC +S315400169D07FFFAA149010200F10BFF5C4901020001D +S315400169E07FFFAA109010200F10BFF5B011351BC0C4 +S315400169F07FFFAA0C9010200F10BFF57AD01CE1E062 +S31540016A007FFFAA089010200F10BFF583D01D61F0BB +S31540016A107FFFAA049010200F10BFF565D01DE1B885 +S31540016A207FFFAA009010200F10BFF53FD41D61F0E3 +S31540016A307FFFA9FC9010200F10BFF52ED41CE1E07A +S31540016A407FFFA9F89010200F10BFF51A11151BE80A +S31540016A507FFFA9F49010200F10BFF50611151BC03A +S31540016A607FFFA9F09010200F10BFF4DA11351BC03B +S31540016A707FFFA9EC9010200F10BFF4E69010200084 +S31540016A807FFFA9E89010200E30BFF4BF7FFFA9E534 +S31540016A909010200E10BFF4B11128C6AF7FFFA9E1B7 +S31540016AA09010200E10BFF4A11108C6AF7FFFA9DDDB +S31540016AB09010200E10BFF4911128C6AF7FFFA9D9BF +S31540016AC09010200E10BFF4822108C6AF7FFFA9D5D2 +S31540016AD09010200D30BFF4517FFFA9D29010200DA8 +S31540016AE010BFF444371000807FFFA9CE9010200CD0 +S31540016AF010BFF3A2271000807FFFA9CA9010200B78 +S31540016B0030BFF34F7FFFA9C79010201110BFFA8FF6 +S31540016B10110020007FFFA9C39010201110BFFA6D0C +S31540016B20110020007FFFA9BF9010201110BFFA5C11 +S31540016B30111E607E7FFFA9BB9010201110BFFA4B3A +S31540016B401111BBFE7FFFA9B79010201010BFF85E50 +S31540016B50091000807FFFA9B39010201010BFF84F95 +S31540016B60111000007FFFA9AF9010201430BFFD5BCC +S31540016B707FFFA9AC9010202330BFFD367FFFA9A926 +S31540016B809010202330BFFD297FFFA9A69010201326 +S31540016B9030BFFD197FFFA9A39010201210BFFC4EF4 +S31540016BA0111FE00012BFF30A01000000C204A168F0 +S31540016BB080A0600002BFF3080100000030BFF3046B +S31540016BC07FFFA9989010201830BFFF147FFFA99529 +S31540016BD09010201810BFFF0D031000800303FF1211 +S31540016BE08210604A80A0800112BFFEE39215E1B88F +S31540016BF010BFFEE59010001480A0600002BFFEC4E5 +S31540016C002B10012430BFFEBFC207BFFC80A080010C +S31540016C1012BFFE9001000000C204A16880A060007E +S31540016C2002BFFE8E0100000030BFFE8AC207BFFCD4 +S31540016C3080A0800112BFFE7B01000000C204A16852 +S31540016C4080A0600002BFFE790100000030BFFE75E2 +S31540016C50C207BFFC80A0800112BFFE660100000092 +S31540016C60C204A16880A0600002BFFE64010000006A +S31540016C7030BFFE607FFFA96B9010201530BFFE50DC +S31540016C807FFFA9689010201530BFFE447FFFA9659C +S31540016C909010201530BFFE3880A0600002BFFE2D47 +S31540016CA00100000030BFFE2980A0600002BFFE1C2B +S31540016CB00100000030BFFE1880A0600002BFFE0B3D +S31540016CC00100000030BFFE07032C1B3482106030E8 +S31540016CD080A0800112BFFDF00100000030BFFDF031 +S31540016CE0032C1B348210603080A0800112BFFDD777 +S31540016CF00100000030BFFDD7032C1B348210602FEA +S31540016D0080A0800112BFFDC30100000030BFFDC35A +S31540016D1080A0600312BFFDA70100000030BFFDA7A0 +S31540016D2080A0600312BFFD930100000030BFFD93B8 +S31540016D3080A0600212BFFD820100000030BFFD82CB +S31540016D40C4042004881121C8C201200480A0800106 +S31540016D5012BFFD680100000030BFFD6807100080CA +S31540016D608610E1C8C200E00480A0800112BFFD4D3B +S31540016D700100000030BFFD4D09100080881121C877 +S31540016D80C201200480A0800112BFFD320100000033 +S31540016D9030BFFD3280A0600112BFFD1E0100000020 +S31540016DA030BFFD1E80A0600112BFFD06010000003C +S31540016DB030BFFD0680A0600002BFFCF0010000006C +S31540016DC030BFFCEC071000808610E1D0C200E00421 +S31540016DD080A0400912BFFCD301000000C204A16893 +S31540016DE080A0600002BFFCD10100000030BFFCCD95 +S31540016DF012BFFCC001000000C204A16880A060006F +S31540016E0002BFFCBE0100000030BFFCBA80A060009A +S31540016E1012BFFCA601000000C204A16880A0600068 +S31540016E2002BFFCA40100000030BFFCA080A06000AE +S31540016E3012BFFC9301000000C204A16880A060005B +S31540016E4002BFFC929015E1B830BFFC8D8410A1F8C9 +S31540016E50C200A004C404200480A0800112BFFC4EDD +S31540016E6001000000C404A168030000708210601F85 +S31540016E7084088001030000108210601080A0800108 +S31540016E8012BFFC459015E1B830BFFC4680A06000BA +S31540016E9012BFFC3601000000C204A16880A0600058 +S31540016EA002BFFC35A607BFF030BFFC30C404200446 +S31540016EB080A0800112BFFC1C03100080C2006168E3 +S31540016EC080A0600002BFFC1B05100C0030BFFC1601 +S31540016ED009100080881121F8C201200480A0800198 +S31540016EE012BFFC0603100080C400616803000070F5 +S31540016EF08210601F84088001030000108210601018 +S31540016F0080A0800112BFFBFD0100000030BFFBFDE8 +S31540016F10071000808610E1F8C200E00480A08001DD +S31540016F2012BFFBEB01000000C404A168030000701E +S31540016F308210601F840880010300001082106010D7 +S31540016F4080A0800112BFFBE20100000030BFFBE2DE +S31540016F50C4042004881121D8C201200480A08001E4 +S31540016F6012BFFBD101000000C204A16880A06000ED +S31540016F7002BFFBD09016A1D030BFFBCBC404200486 +S31540016F808610E1C0C200E00480A0800112BFFBBCB4 +S31540016F9001000000C204A16880A0600002BFFBBBE3 +S31540016FA09016E1D830BFFBB6C207BFCC80A08001A6 +S31540016FB012BFFBA703100080C200616880A0600079 +S31540016FC002BFFBA60910008030BFFBA103300000C1 +S31540016FD08210602080A0800112BFFB90010000005A +S31540016FE0C204A16880A0600002BFFB8E01000000C0 +S31540016FF030BFFB8A80A0600012BFFB7B010000000E +S31540017000C204A16880A0600002BFFB7A111FDFFFA6 +S3154001701030BFFB750338000080A0800112BFFB67BB +S3154001702001000000C204A16880A0600002BFFB66A7 +S31540017030111FD00030BFFB6180A0600012BFFB5220 +S3154001704003100080C200616880A0600002BFFB514E +S31540017050111FDFFF30BFFB4C80A0600012BFFB3128 +S3154001706001000000C204A16880A0600002BFFB309D +S315400170701110000030BFFB2B80A0600012BFFB1E29 +S3154001708001000000C204A16880A0600002BFFB1D90 +S31540017090111FE00030BFFB18C20420048610E2181D +S315400170A0C400E10480A0800112BFFAFC03100080F5 +S315400170B0C4006168030000708210601F840880016B +S315400170C0030000108210600880A0800112BFFAF30D +S315400170D00100000030BFFAF3C204200480A0800101 +S315400170E012BFFADF03100080C4006168030000701C +S315400170F08210601F84088001030000108210600422 +S3154001710080A0800112BFFAD60100000030BFFAD636 +S31540017110C20420048610E218C400E0D480A0800195 +S3154001712012BFFAC003100080C400616803000070FA +S315400171308210601F840880010300001082106008DD +S3154001714080A0800112BFFAB70100000030BFFAB734 +S31540017150C204200480A0800112BFFAA3031000805C +S31540017160C4006168030000708210601F84088001BA +S31540017170030000108210600880A0800112BFFA9AB5 +S315400171800100000030BFFA9AC20420048610E218BA +S31540017190C400E0A480A0800112BFFA84010000006F +S315400171A0C404A168030000708210601F8408800136 +S315400171B0030000108210600480A0800112BFFA7B98 +S315400171C00100000030BFFA7BC206600480A0800146 +S315400171D012BFF9CD01000000C204A16880A0600081 +S315400171E002BFF9CC9014E1E030BFF9C7C206600492 +S315400171F080A0800112BFF9B901000000C204A16854 +S3154001720080A0600002BFF9B89014E1E030BFF9B345 +S31540017210C206600480A0800112BFF9A501000000EA +S31540017220C204A16880A0600002BFF9A49014E1E005 +S3154001723030BFF99FC206600480A0800112BFF99158 +S3154001724003100080C200616880A0600002BFF9900F +S315400172509014E1E030BFF98B071000808610E1F809 +S31540017260C200E00480A0800112BFF96D0100000058 +S31540017270C404A168030000708210601F8408800165 +S31540017280030000108210601080A0800112BFF964D3 +S315400172909015A1C810BFF9669215E1B8C2066004FF +S315400172A080A0800112BFF95303100080C2006168BB +S315400172B080A0600002BFF9529015A1C830BFF94DB8 +S315400172C009100080881121F8C201200480A08001A4 +S315400172D012BFF93C01000000C404A168030000701C +S315400172E08210601F84088001030000108210601024 +S315400172F080A0800112BFF9330100000030BFF9338D +S31540017300071000808610E1C8C200E00480A0800119 +S3154001731012BFF92103100080C200616880A060009D +S3154001732002BFF9209015A1C830BFF91B0910008092 +S31540017330881121F8C201200480A0800112BFF8FD06 +S3154001734001000000C404A168030000708210601FA0 +S3154001735084088001030000108210601080A0800123 +S3154001736012BFF8F49010001D10BFF8F69215E1B85F +S31540017370C206600480A0800112BFF8E303100080BA +S31540017380C200616880A0600002BFF8E29010001D53 +S3154001739030BFF8DD071000808610E1F8C200E00436 +S315400173A080A0800112BFF8CC01000000C404A1688E +S315400173B0030000708210601F8408800103000010E2 +S315400173C08210601080A0800112BFF8C30100000046 +S315400173D030BFF8C3C207BFD480A0800112BFF8B244 +S315400173E003100080C200616880A0600002BFF8B14E +S315400173F00310008030BFF8AC09100080881121F8D5 +S31540017400C201200480A0800112BFF88E0100000055 +S31540017410C404A168030000708210601F84088001C3 +S31540017420030000108210601080A0800112BFF88511 +S315400174309010001410BFF8879215E1B8C206600497 +S3154001744080A0800112BFF87401000000C204A16847 +S3154001745080A0600002BFF8739010001430BFF86E30 +S31540017460071000808610E1D8C200E00480A08001A8 +S3154001747012BFF85E01000000C204A16880A060004E +S3154001748002BFF85D9010001430BFF8588810E1C073 +S31540017490C201200480A0800112BFF8490310008078 +S315400174A0C200616880A0600002BFF84890100014D5 +S315400174B030BFF84303003A9A8210630F80A08001DF +S315400174C012BFF7BD03100080C200616880A0600052 +S315400174D002BFF7BC050006AF30BFF7B780A060001A +S315400174E012BFF78103100080C40061680300007079 +S315400174F08210601F8408800103000010821060081A +S3154001750080A0800112BFF7780500400010BFF77ACE +S315400175100700C00009100080881121F8C20120042B +S3154001752080A0800112BFF6EF01000000C404A168EB +S31540017530030000708210601F840880010300001060 +S315400175408210601080A0800112BFF6E69014E1E03F +S3154001755010BFF6E89215E1B8C206600480A080012A +S3154001756012BFF6D501000000C204A16880A06000E8 +S3154001757002BFF6D49014E1E030BFF6CFC2066004F4 +S3154001758080A0800112BFF6C101000000C204A168BB +S3154001759080A0600002BFF6C09014E1E030BFF6BBA8 +S315400175A0C206600480A0800112BFF6AD0100000052 +S315400175B0C204A16880A0600002BFF6AC9014E1E06D +S315400175C030BFF6A7C206600480A0800112BFF699BB +S315400175D003100080C200616880A0600002BFF69877 +S315400175E09014E1E030BFF693071000808610E1F871 +S315400175F0C200E00480A0800112BFF67401000000C1 +S31540017600C404A168030000708210601F84088001D1 +S31540017610030000108210601080A0800112BFF66B3B +S315400176200100000030BFF66BC206600480A08001F5 +S3154001763012BFF65B03100080C200616880A0600043 +S3154001764002BFF65A9015A1C830BFF6550910008001 +S31540017650881121F8C201200480A0800112BFF6449E +S3154001766001000000C404A168030000708210601F7D +S3154001767084088001030000108210601080A0800100 +S3154001768012BFF63B0100000030BFF63B07100080F9 +S315400176908610E1D8C200E00480A0800112BFF6291D +S315400176A001000000C204A16880A0600002BFF62864 +S315400176B09015A1C830BFF623071000808610E1D08F +S315400176C0C200E00480A0800112BFF61203100080C0 +S315400176D0C200616880A0600002BFF61109100080F7 +S315400176E030BFF60CC206600480A0800112BFF5E0EF +S315400176F001000000C204A16880A0600002BFF5DF5E +S315400177009010001D30BFF5DA8810E1C0C201200497 +S3154001771080A0800112BFF5CB03100080C2006168D2 +S3154001772080A0600002BFF5CA9010001D30BFF5C5AC +S31540017730071000808610E1F8C200E00480A08001B5 +S3154001774012BFF5B201000000C404A1680300007035 +S315400177508210601F840880010300001082106010AF +S3154001776080A0800112BFF5A90910008030BFF5AA9B +S31540017770C207BFD480A0800112BFF59803100080D4 +S31540017780C200616880A0600002BFF59703100080C7 +S3154001779030BFF59209100080881121F8C2012004FA +S315400177A080A0800112BFF57401000000C404A168E5 +S315400177B0030000708210601F8408800103000010DE +S315400177C08210601080A0800112BFF56B90100014EA +S315400177D010BFF56D9215E1B8C206600480A0800124 +S315400177E012BFF55A01000000C204A16880A06000E2 +S315400177F002BFF5599010001430BFF554C207BFCCF3 +S3154001780080A0800112BFF54603100080C200616866 +S3154001781080A0600002BFF5459010001430BFF540CE +S31540017820071000808610E1D0C200E00480A08001EC +S3154001783012BFF52F03100080C40061680300007079 +S315400178408210601F840880010300001082106002CC +S3154001785080A0800112BFF5260100000030BFF52649 +S3154001786012BFF50001000000C204A16880A06000BB +S3154001787002BFF4FF1110000030BFF4FA12BFF4EE5C +S3154001788001000000C204A16880A0600002BFF4EDBF +S315400178901130000030BFF4E812BFF4DC01000000F3 +S315400178A0C204A16880A0600002BFF4DB1130000071 +S315400178B030BFF4D612BFF4CA03100080C20061681B +S315400178C080A0600002BFF4C91110000030BFF4C4AB +S315400178D0C20420048610E320C400E17C80A080011C +S315400178E012BFF4B301000000C404A1680300007094 +S315400178F08210601F8408800103000010821060041A +S3154001790080A0800112BFF4AA0100000030BFF4AA92 +S31540017910C204200480A0800112BFF4970100000038 +S31540017920C404A168030000708210601F84088001AE +S31540017930030000108210600480A0800112BFF48E03 +S315400179401110008110BFF49094146150C2042004B8 +S315400179508610E320C400E14C80A0800112BFF47878 +S3154001796001000000C404A168030000708210601F7A +S3154001797084088001030000108210600880A0800105 +S3154001798012BFF46F1110008110BFF471941461504D +S315400179907FFFA6249010201010BFF45E11100081C5 +S315400179A0C206600480A0800112BFF3B90100000045 +S315400179B0C204A16880A0600002BFF3B89014E1E060 +S315400179C030BFF3B3C206600480A0800112BFF3A5A5 +S315400179D001000000C204A16880A0600002BFF3A4B8 +S315400179E09014E1E030BFF39FC206600480A080019D +S315400179F012BFF39101000000C204A16880A060009B +S31540017A0002BFF3909014E1E030BFF38BC2066004ED +S31540017A1080A0800112BFF37D03100080C20061681F +S31540017A2080A0600002BFF37C9014E1E030BFF377A1 +S31540017A3009100080881121F8C201200480A080012C +S31540017A4012BFF35A03100080C4006168030000703E +S31540017A508210601F840880010300001082106010AC +S31540017A6080A0800112BFF3519015A1C810BFF353F6 +S31540017A709215E1B8071000808610E1F8C200E004D3 +S31540017A8080A0800112BFF33B0100000030BFF33BF1 +S31540017A9009100080881121D0C201200480A08001F4 +S31540017AA012BFF31801000000C204A16880A0600063 +S31540017AB002BFF3179016A1D030BFF3120710008012 +S31540017AC08610E1D8C200E00480A0800112BFF30213 +S31540017AD001000000C204A16880A0600002BFF3015A +S31540017AE09016A1D030BFF2FC09100080881121C840 +S31540017AF0C201200480A0800112BFF2EC0100000007 +S31540017B00C204A16880A0600002BFF2EB9016E1D8E2 +S31540017B1030BFF2E6071000808610E1C8C200E004DB +S31540017B2080A0800112BFF2D603100080C2006168B6 +S31540017B3080A0600002BFF2D59015A1C830BFF2D037 +S31540017B4009100080881121F8C201200480A080011B +S31540017B5012BFF2B10100000030BFF2B1C2066004AB +S31540017B6080A0800112BFF29001000000C204A1680A +S31540017B7080A0600002BFF28F9010001D30BFF28AD4 +S31540017B80071000808610E1C8C200E00480A0800191 +S31540017B9012BFF27A01000000C204A16880A0600011 +S31540017BA002BFF2799010001D30BFF274C207BFFCCC +S31540017BB080A0800112BFF26603100080C200616896 +S31540017BC080A0600002BFF2659010001D30BFF260D8 +S31540017BD0881721F8C201200480A0800112BFF24219 +S31540017BE00100000030BFF242C4042004C206600412 +S31540017BF080A0800112BFF21E01000000C204A168EC +S31540017C0080A0600002BFF21D9010001430BFF21830 +S31540017C108615A1C8C200E00480A0800112BFF20906 +S31540017C2001000000C204A16880A0600002BFF20802 +S31540017C309010001430BFF203C2042004C407BFFCF5 +S31540017C4080A0800112BFF1F303100080C200616879 +S31540017C5080A0600002BFF1F22D10008030BFF1ED2F +S31540017C6080A2400112BFEFA201000000C204A16838 +S31540017C7080A0600002BFEFA11111FC0030BFEF9C54 +S31540017C8080A2400112BFEF9003100080C2006168DC +S31540017C9080A0600022BFEF8F113C02AF30BFEF8A58 +S31540017CA012BFEEDB01000000C204A16880A06000A3 +S31540017CB002BFEED90100000030BFEED512BFEECCB7 +S31540017CC001000000C204A16880A0600002BFEECAA4 +S31540017CD00100000030BFEEC67FFFA552901020196B +S31540017CE010BFFAD4050C402981D8200081C3E00891 +S31540017CF00100000081D8200082102400C0A043006A +S31540017D0081C3E0080100000085322010913220181D +S31540017D10900A200F8408A00380A0000882602000FA +S31540017D2081C3E008900880019DE3BF887FFFEB7A1D +S31540017D309010200C808A2008128000040100000067 +S31540017D4081C7E00891E820007FFFA52F9010200E03 +S31540017D50C2800320853060188088A00F028000DD34 +S31540017D602F100123833060108208600380A06002D7 +S31540017D70028000E0C225E0D480A06003028000FFBB +S31540017D8080A06001028000EC2910010C2310010C37 +S31540017D902110010C2B10010C2710010C2510010C90 +S31540017DA081D8200081D8200082102400C0A0430041 +S31540017DB0031000A1051000A0821060008410A000ED +S31540017DC0873060048610E00188100003C87880007F +S31540017DD08800A004C67900008610200AC6784000B3 +S31540017DE0C8046000C60420041B0080001908000076 +S31540017DF09A13600A993B0004980B0003992B2002C1 +S31540017E0098030001DA7B00001B01000017100000F7 +S31540017E109813608E973AC004960AC003972AE002E7 +S31540017E209602C001D87AC000171C00001901C00093 +S31540017E30893AC0049813208E860900038728E002F8 +S31540017E408600C001D878C0003B1000A28200600CB9 +S31540017E50BA176000873760048610E001C678400093 +S31540017E608213601E86076008C278C0008210200017 +S31540017E708807600C86100001C67900002D1000A20B +S31540017E809A076004AC15A1008735A004B810001606 +S31540017E908610E001C67B4000B405A008C27E800082 +S31540017EA01B1000C0B605A004861360008330E004B1 +S31540017EB09810601AD87EC000C02360001B048D153F +S31540017EC09A136278DA20E004DA05E0D4331001002F +S31540017ED09A03600CB21660008605A00CB010200013 +S31540017EE0C627BFF8DA27BFFC90100018921020036E +S31540017EF0C227BFF0C427BFEC40000AB0C827BFF471 +S31540017F00DA07BFFC992A000DC607BFF89803001986 +S31540017F10993320049813201ED878C000B00620015A +S31540017F208600E00480A62008C207BFF0C407BFEC64 +S31540017F3012BFFFECC807BFF417100020DE05200C66 +S31540017F408612E168C822E16809100020D005600860 +S31540017F50D804A014DA04E010D2042004D40460004A +S31540017F60960BE001972AC008C6212160880A600362 +S31540017F708929000A8812C004960B2002972AC00D4F +S31540017F809611000B8530A004D620E0209610600E95 +S31540017F90D620E0289608BFF0840B20018528800D65 +S31540017FA0841100028210601EC420E02CC420E0141B +S31540017FB0050100008410A01EC220E010C420E00488 +S31540017FC0F620E00CF420E018F620E0240500764186 +S31540017FD0031000208410A1C082106000C420E00874 +S31540017FE0833060048210601EC220E01C8210210092 +S31540017FF0D6A04320C4800320C280432084102001A0 +S3154001800082102200C4A04320C6804320861020004F +S31540018010C6A04320C4A0032081D820007FFFEABE2A +S3154001802090102000913A200C808A2003028000653E +S3154001803001000000C280032082102100C28043203B +S3154001804082102200C2804320C804200488092003EC +S31540018050C2046000C605200CC4056008D404A014FF +S31540018060D604E010832900019808E0019A0AA0018C +S31540018070992B00029B2B400B981300019A13000D7C +S31540018080C803400080A120000280000388136004D9 +S3154001809030800000D201000011048D159012227823 +S315400180A080A2400812BFFFFB111000009E08E002AB +S315400180B0D00200009F2BC0029E13C001DE03C00008 +S315400180C080A3C008228000428608E0033080000079 +S315400180D02310010C2110010CC025E0D42B10010CFA +S315400180E02910010C2710010C10BFFF2E2510010C81 +S315400180F02110010C2910010C2510010C2310010C33 +S315400181008210203F2B10010C2710010CC2242004A1 +S31540018110C224A014C225200C8210201AC224600059 +S3154001812082102014C22560088210200E10BFFF1D48 +S31540018130C224E0102510010C2310010C8210203FAF +S315400181402110010C2B10010C2710010CC225200C0B +S31540018150C224A01482102019C22460008210207FFC +S31540018160C224200482102013C22560088210200DEB +S3154001817010BFFF0CC224E0102110010C2710010C86 +S315400181802310010C8210200F2B10010C2910010C19 +S315400181902510010CC224E010C22420048210201CA8 +S315400181A0C224600082102015C22560088210207FFB +S315400181B0C225200C8210203F10BFFEFAC224A01413 +S315400181C07FFFBF930100000030BFFF9B8528C0029F +S315400181D082108001C20040000321D95082106321E0 +S315400181E0C2210000C401000080A08001028000037A +S315400181F001000000308000008210000D05048D153D +S315400182008410A278072AF37B8610E301C438400024 +S31540018210C4384000C203400080A0400902800003E8 +S315400182200100000030800000C4010000032AF37BF6 +S315400182308210630180A0800112BFFFFBC205E0D41A +S31540018240940AA0038200600C972A800B84102001B7 +S31540018250AE13000B85288001B0102000EE25C0002A +S31540018260C0A0022092102003C227BFF0C427BFEC52 +S31540018270400009D290100018C207BFF0912A0001B0 +S31540018280C606400880A0C01712800008C407BFEC8C +S31540018290B006200180A6200802800005AE05C00276 +S315400182A010BFFFF0EE25C00030800000C0A00220C4 +S315400182B0AE102003B0102000852DE002C4058002D7 +S315400182C08608A06080A00003C227BFF0B040001816 +S315400182D0C427BFEC9005FFFD400009B8921020036A +S315400182E0C207BFF0C407BFEC872A000186064003D8 +S315400182F08730E0048610E01E8418C0028088BF9F44 +S3154001830012800009AE05E00180A5E00B32BFFFEC0B +S31540018310852DE00280A6200012800004D805200C9D +S315400183203080000030800000C8056008DA0420046F +S31540018330C4046000C604A014C204E010980B2001D6 +S315400183409A0B6003892B0004852B40028608E002C4 +S31540018350841100028328C001821080019FC0400021 +S315400183600100000082102400C0A04300C0A00220EA +S315400183708210200084072020C607200C8608E06072 +S3154001838080A00003B80720048240000180A70002B4 +S3154001839032BFFFFBC607200C80A060082280000385 +S315400183A0C206C00030800000808860400280000420 +S315400183B08088602032800003C20760083080000058 +S315400183C08088602032800003C20680003080000031 +S315400183D08088602012800003010000003080000088 +S315400183E083480000842860808188A0000100000045 +S315400183F00100000001000000D8042004C804600008 +S31540018400DA05200CC4056008C604A014C204E010B5 +S31540018410980B20039A0B6001892B0004852B40029F +S315400184208608E001841100028328C0018410A0045B +S3154001843082108001C20040009210200491D0200297 +S31540018440010000007FFFE9B490102000913A200C12 +S31540018450808A200312800005841020007FFFBEEC35 +S31540018460010000008410200082102200C4A0432095 +S3154001847086102001C6A04320C4A04320031000005B +S31540018480C4804380C4A043807FFFBF4E901020002C +S3154001849081D8200030BFFE2B9DE3BFA040000822BB +S315400184A001000000808A21001280000401000000C2 +S315400184B081C7E00891E820007FFFA37623100120C1 +S315400184C0912A20047FFFA35090022005A214600048 +S315400184D0C204600480A060000280001A821020005D +S315400184E0A010200084044001C8044001C600A00435 +S315400184F0C200A0089B39201F818360000100000053 +S3154001850001000000010000008479000380A0800181 +S3154001851002800004A00420017FFFA34290102001A5 +S3154001852082040010820040108328600284044001C6 +S31540018530C400A00480A0A00012BFFFEC8404400147 +S3154001854023100120A2146138C204600480A0600097 +S315400185500280001982102000A010200084044001EE +S31540018560C8044001C600A004C200A00881802000C2 +S3154001857001000000010000000100000084710003B9 +S3154001858080A0800102800004A00420017FFFA32572 +S31540018590901020028204001082004010832860025D +S315400185A084044001C400A00480A0A00012BFFFEDD6 +S315400185B084044001400008890100000080A2200097 +S315400185C012BFFFBC901020037FFFA316B0102000FE +S315400185D081C7E00881E800009DE3BFA07FFFA32D8E +S315400185E001000000912A20047FFFA3079002200486 +S315400185F0400007CF0100000080A221230280000431 +S31540018600010000007FFFA30790102001400007C62C +S3154001861001000000808A21000280002923100120E8 +S31540018620A2146180C204600880A06009028000151E +S3154001863082102000A010200084044001C60440019D +S31540018640C800A004C200A0088459000380A080018C +S3154001865002800004A00420017FFFA2F290102002B4 +S315400186608204001082004010832860028404400185 +S31540018670C400A00880A0A00912BFFFF184044001F4 +S31540018680400007B80100000080A2200002800023BC +S3154001869001000000400007B30100000080A2200055 +S315400186A002800016010000004000079F0100000003 +S315400186B0808A2200128000040100000081C7E00880 +S315400186C091E82000400007F80100000080A2200048 +S315400186D00280001A01000000400007F3010000007B +S315400186E080A2200012BFFFF6010000007FFFA2CD4D +S315400186F09010200430BFFFF27FFFA2CA90102003E2 +S315400187004000078901000000808A220002BFFFEC79 +S315400187100100000030BFFFEC7FFFA2C29010200392 +S31540018720400007900100000080A2200012BFFFDF39 +S315400187300100000030BFFFF17FFFA2BA9010200474 +S3154001874030BFFFE6000000009DE3BFA0941020006B +S31540018750111000619012237C131000619212638004 +S31540018760171000619612E388191000619813238C43 +S3154001877093C2000081C240001080019181C2C000B5 +S3154001878081C300001080018E9402A0019402A001D1 +S3154001879080A2A0031280018A0100000087440000E4 +S315400187A08D30E00E8C89A00780A1A000028000C711 +S315400187B001000000AF30E00BAE0DE00780A5E00000 +S315400187C0128000C20100000080A1A0021280003583 +S315400187D00100000025100000E41C80002510000067 +S315400187E029100000A8152104A6100012AA10001293 +S315400187F0AC100014A1802046A4100000AA1000006D +S3154001880001000000A180204EA810210001000000B7 +S31540018810A18000000100000001000000E83CA030FA +S3154001882082A480131280016682A50016128001641B +S315400188300100000001000000010000008744000023 +S315400188408D30E00B8C89A0078CA1A0051280015CBC +S31540018850A1800000010000000100000001000000AD +S31540018860E81CA03082A500161280015582A540124F +S31540018870A410000012800152010000000100000016 +S31540018880874400008D30E00B8C89A0078CA1A003A2 +S315400188901280014B010000001080008C0100000095 +S315400188A080A1A0011280002325100000E41C800055 +S315400188B02510000029100000A8152104A610001259 +S315400188C0AA100012AC100014A1802046A41000008A +S315400188D0AA10000001000000A180204EA81021002E +S315400188E001000000A180000001000000010000001D +S315400188F001000000E83C800082A480131280013010 +S3154001890082A500161280012E010000000100000020 +S31540018910874400008D30E00B8C89A0078CA1A00212 +S31540018920128001270100000010800068010000004C +S3154001893080A1A00312800065A6100000A210200E9F +S31540018940A1844000A6100000A1800000A814E00008 +S31540018950AB44000001000000AC14E000010000003F +S31540018960AF44000080A5200012800115AA8D6E003B +S3154001897080A540001280011280A5A000128001103E +S31540018980AF35E00BAE0DE00780A5E0011280010C8A +S3154001899001000000A0100000A1844000A6100000C4 +S315400189A0A1800000E8180000AC100000AE100000E5 +S315400189B0EC04C000EE04E00480A50016128001001C +S315400189C080A54017128000FE01000000A54400006A +S315400189D0A534A00BA40CA00780A4A001128000F826 +S315400189E001000000A0100000A1844000A610000074 +S315400189F0A1800000A210200AA1844000A41000001A +S31540018A00A1800000E8180000AC100000AE10000084 +S31540018A10EC04C012EE04E00480A50016128000E8C2 +S31540018A2080A54017128000E601000000A544000021 +S31540018A30A534A00BA40CA00780A4A002068000E0E8 +S31540018A400100000021100120A0142200EC1C0000AE +S31540018A50A0042008E81C0000A1844000A6100000E4 +S31540018A60A1800000A210200EA1844000A410001095 +S31540018A70AC100000AE100000A18000000100000013 +S31540018A8001000000EC3C8013AC100000AE10000069 +S31540018A90E81CC01280A50016128000C980A54017A7 +S31540018AA0128000C701000000A5440000A534A00BB8 +S31540018AB0A40CA00780A4A004128000C101000000FC +S31540018AC010800002010000008B4440008A09601FAB +S31540018AD080A160010280000A8C1000059DE3BFA0C1 +S31540018AE08AA1600116BFFFFE0100000081E8000077 +S31540018AF08CA1A00116BFFFFE01000000010000008D +S31540018B0001000000A023A080A02C20078E10001099 +S31540018B10A3480000E2240000C2242004C43C2008EB +S31540018B20C83C2010CC3C2018F03C2020F43C2028A6 +S31540018B30F83C2030FC3C2038D03C2040D43C2048F6 +S31540018B40D83C2050DC3C2058A5500000E42420604D +S31540018B5080102008821020018410200286102003F4 +S31540018B60881020048A1020058C1020068190000070 +S31540018B70A42C601F818C80000100000001000000D0 +S31540018B800100000003004040821061018410000092 +S31540018B9086100000894440008809201F8610000481 +S31540018BA0A010000284004002A2100002840040028C +S31540018BB0A410000284004002A61000028400400274 +S31540018BC0A810000284004002AA100002840040025C +S31540018BD0AC10000284004002AE1000028400400244 +S31540018BE0901000028400400292100002840040026C +S31540018BF09410000284004002961000028400400254 +S31540018C0098100002840040029A100002840040023B +S31540018C109C100002840040029E1000028400400223 +S31540018C2081E0000086A0E00116BFFFDE01000000E2 +S31540018C300300404082106101841000008610000448 +S31540018C4080A400021280003F8400400280A44002BA +S31540018C501280003C8400400280A4800212800039C8 +S31540018C608400400280A4C002128000368400400283 +S31540018C7080A50002128000338400400280A5400294 +S31540018C80128000308400400280A580021280002DAF +S31540018C908400400280A5C0021280002A840040025E +S31540018CA080A20002128000278400400280A2400276 +S31540018CB0128000248400400280A28002128000219A +S31540018CC08400400280A2C0021280001E840040023D +S31540018CD080A300021280001B8400400280A3400250 +S31540018CE0128000188400400280A380021280001581 +S31540018CF08400400280A3C002128000128400400218 +S31540018D0081E0000086A0E00116BFFFCE0100000011 +S31540018D1080A020001280000B80A0FFFF1280000976 +S31540018D2080A160051280000780A1A006128000057F +S31540018D3001000000A010000710800006C02420207A +S31540018D40A01000079010200110800002D02420209E +S31540018D5082100007C40040008188800001000000A5 +S31540018D600100000001000000C4186008C818601026 +S31540018D70CC186018F0186020F4186028F818603094 +S31540018D80FC186038D0186040D4186048D818605034 +S31540018D90DC186058E4006060C20060048194800081 +S31540018DA0010000000100000001000000A0100007C2 +S31540018DB0F004202081C7E00881E8000010BFFFFCD5 +S31540018DC0B01000000100000081D8200081C3E008F6 +S31540018DD0010000000328000084106004952AA00DBC +S31540018DE0D0204000922270009202400AD220800098 +S31540018DF081C3E0080100000003100124C400619C06 +S31540018E0003100124C200618C852A4002861020018C +S31540018E108328C00182007FFF900A000190008008EC +S31540018E208213C0007FFFE74C9E1040000100000006 +S31540018E3003100124C400619C03100124C200618C0B +S31540018E40852A4002861020018328C00182007FFFC7 +S31540018E50900A0001900080088213C0007FFFE73A24 +S31540018E609E104000010000009DE3BFA02D1001248B +S31540018E70C205A190A410001880A0600004800020C3 +S31540018E80B01020012F1001242B100124D005E19CA4 +S31540018E9029100124AC15A190AE15E19CAA15618C4F +S31540018EA0A815217CA0102000A2102000A6102001A8 +S31540018EB0C2054000832CC00182007FFF820C8001E5 +S31540018EC0912C00087FFFE72090020001C2050000B7 +S31540018ED0901A0012820A000180A00001C20580009A +S31540018EE0A2647FFFA004200180A0401034BFFFF19F +S31540018EF0D005C00080A00011B0603FFF81C7E008E7 +S31540018F0081E800009DE3BFA003100124C400619CD9 +S31540018F1003100124C200618CB32E4002841020014B +S31540018F208328800182007FFF820E00019210001A81 +S31540018F307FFFE70B9006400181C7E00881E800000A +S31540018F409DE3BFA003100124C400619C03100124CA +S31540018F50C200618CB32E4002841020018328800117 +S31540018F6082007FFF820E00019210001A7FFFE6F811 +S31540018F709006400181C7E00881E800000310012402 +S31540018F80C400618403100124C2006180852A400225 +S31540018F90861020018328C00182007FFF900A0001CC +S31540018FA0900080088213C0007FFFE6E39E104000D8 +S31540018FB0010000009DE3BFA003100124C4006184A9 +S31540018FC003100124C2006180B32E400284102001A7 +S31540018FD08328800182007FFF820E00019210001AD1 +S31540018FE07FFFE6D79006400181C7E00881E800008F +S31540018FF09DE3BFA003100124C40061840310012432 +S31540019000C2006180B32E4002841020018328800172 +S3154001901082007FFF820E00019210001A7FFFE6C494 +S315400190209006400181C7E00881E800000310012451 +S31540019030C400618403100124C2006180852A400274 +S31540019040861020018328C00182007FFF900A00011B +S31540019050900080088213C0007FFFE6B39E10400057 +S3154001906001000000033FFFBF821063089DE38001BA +S315400190700310004A82106060C227BFEC0310004A09 +S31540019080821060A02F10004AC227BFF4AE15E040FF +S315400190903510004AEE27BFE8B416A080901020068E +S315400190A07FFFA059F427BFF07FFFE69B9010200079 +S315400190B0213FFFBF920A3FF0A01423689010200081 +S315400190C07FFFE697A0078010230000307FFFE692DE +S315400190D090102000808A001112BFFFFD01000000A0 +S315400190E081D82000230000307FFFE68B90102000BE +S315400190F0808A001112BFFFFD0100000023100124E8 +S315400191007FFFE6859010200013002040A410000840 +S315400191109212600F921200097FFFE68190102000A3 +S315400191207FFFE67D90102008D02461787FFFE67AA4 +S315400191309010200C09100124C40461789938A014B8 +S3154001914013100124980B200F8603200AC621218083 +S31540019150091001240310012496102400C6212184FC +S31540019160893A20148809200F9401200AD422618C5F +S31540019170131001242D100124D0206188D422619C32 +S3154001918015100124932AC004833A2018D222A198AB +S315400191901510012482086003820060011B20000033 +S315400191A08801200837100124C225A190920120028E +S315400191B0821020019328400992234009D222A17CA2 +S315400191C01510012487284003913A20109A23400321 +S315400191D0992AC00CDA26E194D822A174A20A200762 +S315400191E08738A018A93CA00CBA210011A408E003B5 +S315400191F08538A010A88D2003AA08A007A404A001C1 +S31540019200AB284015A3284011AB28401590100017F4 +S31540019210AA057FFFA610200002800123B807BFE8F8 +S31540019220A6042020030048D182106167C224C000F1 +S3154001923003226AF3821061EFC2242024C20C20204B +S3154001924080A0600102800004010000007FFF9FF5BD +S315400192509010201AC20C202180A0602302800004B5 +S31540019260010000007FFF9FEF9010201BC20C2022BF +S3154001927080A0604502800004010000007FFF9FE955 +S315400192809010201CC20C202380A06067028000043D +S31540019290010000007FFF9FE39010201DC20C202497 +S315400192A080A0608902800004010000007FFF9FDDED +S315400192B09010201EC20C202580A060AB02800004C5 +S315400192C0010000007FFF9FD79010201FC20C20266F +S315400192D080A060CD02800004010000007FFF9FD185 +S315400192E090102020C20C202780A060EF028000044D +S315400192F0010000007FFF9FCB90102021C214202047 +S31540019300832860108330601080A0612302800004AE +S31540019310010000007FFF9FC390102022C414202229 +S315400193208528A010030000118530A01082106167C6 +S3154001933080A0800102800004010000007FFF9FB9E8 +S3154001934090102023C41420248528A0100300002255 +S315400193508530A010821061AB80A08001028000049C +S31540019360010000007FFF9FAF90102024C4142026E7 +S315400193708528A010030000338530A010821061EFCC +S3154001938080A0800102800005821020307FFF9FA5CA +S315400193909010202582102030C22C2020030C08D1A9 +S315400193A082106167C404C00080A08001028000056C +S315400193B0821020317FFF9F9B901020278210203101 +S315400193C0C22C2021030C0C5182106167C404C000D9 +S315400193D080A0800102800005821020327FFF9F918C +S315400193E09010202882102032C22C2022030C0C4CD3 +S315400193F082106267C404C00080A08001028000051B +S31540019400821020337FFF9F879010202982102033BE +S31540019410C22C2023030C0C4C82106233C404C000BE +S3154001942080A0800102800005821020347FFF9F7D4D +S315400194309010202A82102034C22C2024030D2AF3B6 +S31540019440821061EFC404202480A0800102800005BF +S31540019450821020357FFF9F739010202B821020357C +S31540019460C22C2025030D0D73821061EFC404202404 +S3154001947080A0800102800005821020367FFF9F690F +S315400194809010202C82102036C22C2026030D0D4D23 +S31540019490821062EFC404202480A08001028000056E +S315400194A0821020377FFF9F5F9010202D821020373A +S315400194B0C22C2027030D0D4D82106237C40420248F +S315400194C080A0800102800005030000107FFF9F55A8 +S315400194D09010202E0300001082106041C2342020DB +S315400194E00310104C82106233C404C00080A0800176 +S315400194F002800005030000107FFF9F4A9010202F35 +S315400195000300001082106243C2342022031010501F +S3154001951082106243C404C00080A08001028000051D +S31540019520030000117FFF9F3F901020300300001180 +S3154001953082106045C23420240311114D82106237D6 +S31540019540C404202480A0800102800005030000118C +S315400195507FFF9F3490102031030000118210624733 +S31540019560C23420260311115182106247C4042024BB +S3154001957080A0800102800004010000007FFF9F2936 +S315400195809010203281D82000C205A19080A06000B1 +S315400195900480001B80A520002510012419100124F8 +S315400195A0A414A1909813219C8810200080A46000E7 +S315400195B09B2920100480000C82102000C403000067 +S315400195C085290002840040028528A0028610400DAC +S315400195D082006001C624000280A0401132BFFFF91B +S315400195E0C4030000C20480008801200180A0400419 +S315400195F014BFFFF080A4600080A5200012800028DF +S31540019600230000107FFFE54490102000808A00115E +S3154001961012BFFFFDC205A19080A060000480001B1F +S31540019620010000002510012427100124A414A19053 +S31540019630A614E17C10800006A2102000A20460015D +S3154001964080A0401104800011010000009210001119 +S315400196507FFFFDF890100010C204C000901C000866 +S31540019660808A000132BFFFF6C20480007FFF9EED73 +S3154001967090102033C2048000A204600180A04011F2 +S3154001968014BFFFF4921000117FFFE52390102000D4 +S315400196909212200F7FFFE5229010200081C7E0083B +S315400196A091E820009FC20000A604E00180A4801337 +S315400196B004800008832CE002D00700019FC200000D +S315400196C0A604E00180A4801314BFFFFC832CE002B2 +S315400196D07FFFE51190102000B616E194920A3FFCF7 +S315400196E0A8102000901020007FFFE50DB810200043 +S315400196F0B207BFE810800005A610200080A48013A1 +S3154001970024800012A8052001921000137FFFFE4815 +S3154001971090100017820A001580A0401512BFFFF86D +S31540019720A604E001C206C000901DC008900A0001CF +S3154001973080A00008B8673FFF80A4801314BFFFF4E0 +S3154001974092100013A805200180A48014048000040F +S31540019750832D200210BFFFE8EE0640017FFFE4EEB5 +S3154001976090102000A6100008901020007FFFE4EC26 +S315400197709214E00380A720000280018301000000CB +S31540019780A73CE013808CE0031280018501000000B4 +S3154001979081D82000250000307FFFE4DF90102000B3 +S315400197A0808A001212BFFFFDAA100008C205A190CF +S315400197B080A060000480000F053FFFBF25100124F3 +S315400197C0A6102000A414A19092100013901000102E +S315400197D07FFFFDDC94102000C2048000A604E00156 +S315400197E080A0401314BFFFFA92100013053FFFBF3C +S315400197F0821020008410A36884078002C0204002A2 +S315400198008200600480A0607C12BFFFFD0100000061 +S3154001981082102005C224000082102001C2242004A7 +S3154001982082102002C224200882102003C224200C68 +S31540019830901000107FFFFD8DA804200480A2200017 +S315400198400280014A01000000C204000080A06005B8 +S3154001985002800004010000007FFF9E7290102006E6 +S315400198607FFFFD829010001080A220001280019996 +S31540019870C205A19080A06000048000120100000092 +S3154001988025100124A6102000A414A19092100013C3 +S31540019890941020007FFFFD9C901000109210001341 +S315400198A0901000147FFFFD9894102000C2048000A0 +S315400198B0A604E00180A0401314BFFFF692100013E6 +S315400198C07FFFE4AB90100010A60420207FFFE4A8A0 +S315400198D0901000137FFFE4A6900420407FFFE4A48C +S315400198E090042060C205A19080A0600004800180A0 +S315400198F0B810200025100124A414A190AE10200018 +S31540019900921000177FFFFD3D90100010C2048000A9 +S31540019910901A200580A00008AE05E001B8673FFF18 +S3154001992080A0401714BFFFF89210001780A72000AF +S315400199300280016F01000000033FFFBF8210636890 +S31540019940C41F8001C43FBFA8C207BFA880A060054D +S315400199501280000601000000C207BFAC80A0600172 +S3154001996002800005C205A1907FFF9E2E901020091E +S31540019970C205A19080A06000048000382510012412 +S31540019980B8102000A414A190AE1020009210001728 +S315400199907FFFFD1A90100014C2048000901A200126 +S315400199A080A00008AE05E001B8673FFF80A04017E0 +S315400199B014BFFFF89210001780A7200112800027DC +S315400199C0833D6013808860031280002A01000000F5 +S315400199D0C2042004C224000082102005C2240000D3 +S315400199E090102001D024200482102002C224200895 +S315400199F082102003C224200C92100011400003B3B0 +S31540019A00912A001DA52A2002032EEEEE821063BB89 +S31540019A10C22400127FFFFD159010001080A2200085 +S31540019A201280013701000000C4040012032EEEEE3D +S31540019A30A93D600C821063BB80A0800102BFFDFA84 +S31540019A40A80D2003901020127FFF9DF6A93D600CC2 +S31540019A5010BFFDF5A80D20037FFF9DF29010200A4F +S31540019A60833D60138088600302BFFFDA0100000076 +S31540019A707FFFE42990102000033FFFF08210603FF2 +S31540019A80920A00017FFFE4269010200092102000E8 +S31540019A9094102000AA07BFA87FFFFD1B9010001558 +S31540019AA07FFFE41D901020000303C00092120001C5 +S31540019AB07FFFE41B90102000C205A19080A06000AA +S31540019AC00480000F8210200125100124A8102000D7 +S31540019AD0A414A19092100014901000157FFFFD0A66 +S31540019AE094102005C2048000A805200180A04014DE +S31540019AF014BFFFFA9210001482102001C22FBFA892 +S31540019B000300400082106005C407BFA880A0800101 +S31540019B1002800004010000007FFF9DC29010200BCF +S31540019B207FFFE3FD90102000833A20068208600300 +S31540019B3080A0600102800004010000007FFF9DB902 +S31540019B409010200C7FFFE3F4901020000303C00027 +S31540019B5025000030922A00017FFFE3F1901020009A +S31540019B607FFFE3ED90102000808A001212BFFFFDB7 +S31540019B7092102000941020007FFFFCE39010001506 +S31540019B807FFFE3E5901020002503C00092120012EA +S31540019B907FFFE3E3901020007FFFE3DF901020007A +S31540019BA0808A001202BFFFFDAE100008C205A190D7 +S31540019BB080A060000480001025100124B810200107 +S31540019BC0B92F0011A414A190B8073FFFA810200097 +S31540019BD092100014901000157FFFFCDA9410001CBF +S31540019BE0C2048000A805200180A0401414BFFFFADA +S31540019BF0921000141303C00090102000922DC0094A +S31540019C007FFFE3C72503C0007FFFE3C39010200019 +S31540019C10808A001212BFFFFD01000000C407BFA8E1 +S31540019C20030040008210600580A08001028000048C +S31540019C30010000007FFF9D7B9010200D7FFFE3B662 +S31540019C4090102000833A20088208600380A06001BA +S31540019C5002800005841020117FFF9D729010200F15 +S31540019C6084102011861020559010200025000030C8 +S31540019C70C43FBFF87FFFE3A801000000033C3FFF5C +S31540019C800503C0008210633F820A00019010200044 +S31540019C907FFFE3A3921040027FFFE39F90102000D5 +S31540019CA0808A001212BFFFFDAE07BFF87FFFE3BEF9 +S31540019CB090100017C205A19080A060000480000F9B +S31540019CC00100000025100124AA07BFFCA414A1909D +S31540019CD0A810200092100014901000157FFFFC8AF6 +S31540019CE094102055C2048000A805200180A040148C +S31540019CF014BFFFFA921000147FFFE3AB90100017D8 +S31540019D0080A220110280008180A260557FFF9D457F +S31540019D10901020107FFFE38090102000833A2006A8 +S31540019D208208600380A0600102800004A41000083C +S31540019D307FFF9D3C90102010133C3FF09010200077 +S31540019D409212603F920C80097FFFE3752500003037 +S31540019D507FFFE37190102000808A001212BFFFFD41 +S31540019D60AA10000830BFFF1B7FFF9D2E90102005D3 +S31540019D70C204000080A0600512BFFEB801000000C9 +S31540019D8030BFFEB87FFF9D2790102001A73CE0130E +S31540019D90808CE00302BFFE7F010000007FFFE35E8F +S31540019DA090102000133FFFF0AA1000089212603F66 +S31540019DB0920A00097FFFE35A901020007FFFE2B12B +S31540019DC0A810001A0303C000133C3FFF9010200067 +S31540019DD0921263FC920D4009A61020007FFFE350CA +S31540019DE09212400192100013901000147FFFFC72F2 +S31540019DF094102000A604E00180A4801334BFFFFB29 +S31540019E0092100013901020001303C0007FFFE3441B +S31540019E10921540097FFFE29B010000007FFFE33E70 +S31540019E2090102000833A200A8208600380A06001D6 +S31540019E3002800005250000307FFF9CFA9010200229 +S31540019E40250000307FFFE33490102000808A001205 +S31540019E5012BFFFFD0100000001000000920A3FFC15 +S31540019E607FFFE32F901020009010001492102000E5 +S31540019E707FFFFC6094102000010000007FFFE32675 +S31540019E8090102000033C3FFF821063FC820A0001D0 +S31540019E90901020007FFFE322921060030100000032 +S31540019EA07FFFE278010000007FFFE31B9010200056 +S31540019EB0833A200C8208600380A0600102BFFE3510 +S31540019EC0010000007FFF9CD79010200330BFFE3178 +S31540019ED07FFF9CD490102007C205A19080A060000E +S31540019EE034BFFE692510012430BFFE767FFF9CCD2D +S31540019EF09010200810BFFE92033FFFBF7FFF9CC911 +S31540019F009010201130BFFEC912BFFF810100000031 +S31540019F1030BFFF819DE3BFA07FFFFC5301000000DE +S31540019F2013002040B01000089212600F7FFFE2FC40 +S31540019F309010200081C7E00881E800009DE3BFA0A2 +S31540019F407FFF9CAA1100412C82102007EC062004B9 +S31540019F50E0062004C2262008AC0DA003AC05A001F2 +S31540019F6001000000C02600007FFF9CA79010200A38 +S31540019F700300020084103FFFB8060001C426000119 +S31540019F80A13C2002292AAAAAA00C27FFA81522AA89 +S31540019F902B155555A12C2008AA1561558810001C72 +S31540019FA0C2060001A8084014AA0840159A102000CC +S31540019FB080A420002280000D9A03600186012020A2 +S31540019FC08410000482102000EA208000E820C000AE +S31540019FD0820060108400A04080A0401006BFFFFBB5 +S31540019FE08600E0409A03600180A5800D14BFFFF111 +S31540019FF0880120043B000200AE102000BA17602001 +S3154001A000BA06001D80A4200022800017AE05E0019B +S3154001A010A610001CA410001DA2102000C204C000FE +S3154001A02080A0401502800004010000007FFF9C7D56 +S3154001A03090102001C204800080A0401422800005B7 +S3154001A040A20460107FFF9C7790102001A20460104B +S3154001A050A604E04080A4401006BFFFF1A404A0403E +S3154001A060AE05E00180A5801714BFFFE7BA0760047B +S3154001A0707FFF9C659010200C2F0008001B1555553D +S3154001A080AE060017092AAAAA9A136155881122AA6F +S3154001A09098100017961020001500020080A4200099 +S3154001A0A02280000D9602E001860320048410000CF4 +S3154001A0B082102000DA208000C820C00082006002A1 +S3154001A0C08400A00880A0401006BFFFFB8600E00880 +S3154001A0D09602E00180A5800B14BFFFF19803000AA8 +S3154001A0E02B155555292AAAAAAA156155A81522AA9A +S3154001A0F0BA1020003900020080A4200022800017F7 +S3154001A100BA076001A605E004A4100017A2102000BA +S3154001A110C204800080A040150280000401000000B6 +S3154001A1207FFF9C4090102003C204C00080A04014D1 +S3154001A13022800005A20460027FFF9C3A9010200312 +S3154001A140A2046002A404A00880A4401006BFFFF147 +S3154001A150A604E008BA07600180A5801D14BFFFE789 +S3154001A160AE05C01C2F0008001B155555AE15E00461 +S3154001A170092AAAAAAE0600179A136155881122AA7E +S3154001A18098100017961020001500020080A42000A8 +S3154001A1902280000D9602E00186033FFC8410000CEC +S3154001A1A082102000DA208000C820C00082006002B0 +S3154001A1B08400A00880A0401006BFFFFB8600E0088F +S3154001A1C09602E00180A5800B14BFFFF19803000AB7 +S3154001A1D02B155555292AAAAAAA156155A81522AAA9 +S3154001A1E0BA1020003900020080A420002280001706 +S3154001A1F0BA076001A605FFFCA4100017A2102000B3 +S3154001A200C204800080A040150280000401000000C5 +S3154001A2107FFF9C0490102004C204C00080A040141B +S3154001A22022800005A20460027FFF9BFE901020045D +S3154001A230A2046002A404A00880A4401006BFFFF156 +S3154001A240A604E008BA07600180A5801D14BFFFE798 +S3154001A250AE05C01C82102005C2262008032000003E +S3154001A260C226000081C7E00881E80000033FFFBF26 +S3154001A270821063609DE380017FFFFAD425200000B0 +S3154001A2804000016E2D0000307FFFE2239010200830 +S3154001A290AA1000087FFFE2209010200C7FFF9BFD53 +S3154001A2A0AE100008912A20047FFF9BD79002200C14 +S3154001A2B082102001873D60148608E00F8600E00A7F +S3154001A2C0A73D6010A13D6018853DE014A60CE0074E +S3154001A2D08408A00FA604E0028400A00AA728401320 +S3154001A2E0A00C2003A93DE010A0042001A80D2007E1 +S3154001A2F0A12C0003A8052002AA2480108604FFFF92 +S3154001A300A9284014A33DE01882053FFFA20C600333 +S3154001A310A2046001AA154003A32C4002A424801183 +S3154001A320A41480017FFFE1FC90102000808A001672 +S3154001A33012BFFFFD133FFFBF90100011921263C081 +S3154001A34015155555920780097FFFE1869412A1554F +S3154001A35080A220001280007001000000133FFFBF61 +S3154001A36090100011921263C0152AAAAA9207800979 +S3154001A3707FFFE1909412A2AA80A22000128000637E +S3154001A380010000007FFF9BC301000000912A2004C9 +S3154001A3907FFF9B9D9002200A40000125010000009D +S3154001A3A0032AAAAA981062AA82106200901000118C +S3154001A3B0920C8001941000127FFFE1A796100014C1 +S3154001A3C080A220001280004D010000000315555562 +S3154001A3D0981061558210610090100011941000127E +S3154001A3E0961000147FFFE19C920C800180A2200010 +S3154001A3F01280003F010000007FFF9BA60100000084 +S3154001A400912A20047FFF9B809002200B9010001020 +S3154001A410131555557FFFE1779212615580A22000B1 +S3154001A4201280002F0100000090100010132AAAAAE2 +S3154001A4307FFFE170921262AA80A22000128000255D +S3154001A440010000007FFF9B9301000000912A200438 +S3154001A4507FFF9B6D9002200990100010921000150D +S3154001A46094100013172AAAAA7FFFE16E9612E2AA58 +S3154001A47080A22000128000130100000090100010FD +S3154001A4809210001594100013171555557FFFE1657D +S3154001A4909612E15580A220000280000401000000CE +S3154001A4A07FFF9B60901020087FFFFA48B010200084 +S3154001A4B0400000E20100000081C7E00881E8000099 +S3154001A4C07FFF9B589010200710BFFFEE90100010A1 +S3154001A4D07FFF9B549010200630BFFFDB7FFF9B51CF +S3154001A4E09010200510BFFFD2901000107FFF9B4DAA +S3154001A4F09010200430BFFFC17FFF9B4A901020037C +S3154001A50010BFFFB4031555557FFF9B46901020029F +S3154001A51030BFFF9D7FFF9B439010200110BFFF91ED +S3154001A520133FFFBF81C3E008914440008080000093 +S3154001A530151001209412A1EC901020009210224691 +S3154001A54081800000010000000100000001000000C0 +S3154001A550D00280009122400881C3E008010000003A +S3154001A56081800000901020018090200180F0200120 +S3154001A5701280004B010000000100000001000000B4 +S3154001A580010000008090200180F8200112800044E3 +S3154001A5900100000001000000010000000100000070 +S3154001A5A08090200180FA3FFF010000001680003CA8 +S3154001A5B00100000001000000010000000100000050 +S3154001A5C08180000090102001809020010100000050 +S3154001A5D080D02001128000320100000001000000FD +S3154001A5E0010000000100000080D220010280002C01 +S3154001A5F00100000080D23FFF1680002901000000C3 +S3154001A60080DA3FFF9340000080A27FFF1280002442 +S3154001A6100100000080D23FFF93480000933260144E +S3154001A620920A600F80A260081280001D010000009E +S3154001A6308180000090102001945220049452A0047D +S3154001A6409452A00496A2A040128000150100000079 +S3154001A650818000009010200280A00000328000100E +S3154001A6609052000880A220021280000D01000000D5 +S3154001A670818000009010200280A0000001000000AF +S3154001A680328000079052000880A220021280000406 +S3154001A6900100000081C3E0089010200181C3E00859 +S3154001A6A0901000001315555592126155A582400030 +S3154001A6B001000000010000000100000095448000F7 +S3154001A6C080A2400A1280004301000000923A4000F5 +S3154001A6D0A5824000010000000100000001000000C9 +S3154001A6E09544800080A2400A1280003A0100000091 +S3154001A6F01100003F901223FFA580000081800000D9 +S3154001A70001000000010000000100000093F23FFF3C +S3154001A7109A10000993F23FFF93F23FFF93F23FFFF6 +S3154001A72093F23FFF93F23FFF93F23FFF93F23FFFD6 +S3154001A7309940000097448000153FFC009412A00800 +S3154001A74080A2400A1280002380A2400B1280002181 +S3154001A75080A320071280001F113FFF809012200125 +S3154001A76080A340081280001B1100003F901223FF76 +S3154001A770A58000008180000001000000010000006A +S3154001A7800100000093FA3FFF93FA3FFF93FA3FFF20 +S3154001A79093FA3FFF93FA3FFF93FA3FFF93FA3FFF46 +S3154001A7A093FA3FFF994000009744800080A26008D9 +S3154001A7B01280000880A260081280000680A3200053 +S3154001A7C0128000040100000081C3E00890102001BE +S3154001A7D081C3E008901000008180000090102002A3 +S3154001A7E080A00000328000109072000880A22002F2 +S3154001A7F01280000D010000008180000090102002AF +S3154001A80080A000000100000032800007907200081D +S3154001A81080A22002128000040100000081C3E008EA +S3154001A8209010200181C3E00890100000C0A00040B4 +S3154001A83081C3E00801000000110020409012200F62 +S3154001A840D0A0004081C3E008010000009DE3BFA005 +S3154001A8507FFFE0B190102008A21000087FFFE0AE14 +S3154001A8609010200CA0100008C0A00040833C60144A +S3154001A8708208600F8200600A913C6018900A2003AA +S3154001A880900220017FFFE01B912A0001833C2014A6 +S3154001A8908208600F8200600A913C2018900A2003CA +S3154001A8A0900220017FFFE021912A00017FFFF947B5 +S3154001A8B001000000110020409012200FD0A000405E +S3154001A8C081C7E00881E800009812000981820000F2 +S3154001A8D09AAB2FFF02800025988800009923000932 +S3154001A8E0992300099923000999230009992300090D +S3154001A8F099230009992300099923000999230009FD +S3154001A90099230009992300099923000999230009EC +S3154001A91099230009992300099923000999230009DC +S3154001A92099230009992300099923000999230009CC +S3154001A93099230009992300099923000999230009BC +S3154001A94099230009992300099923000999230009AC +S3154001A95099230009992300099923000999230000A5 +S3154001A96081C3E00891400000992300099923000919 +S3154001A970992300099923000999230009992300097C +S3154001A980992300099923000999230009992300096C +S3154001A9909923000999230009992300009B4000004F +S3154001A9A0992B200C9B33601481C3E0089013400C13 +S3154001A9B01080000B86102000809240081680000807 +S3154001A9C086100008809240001680000480920000A4 +S3154001A9D01680000392200009902000089A924000B8 +S3154001A9E0128000059610000891D0200281C3E0082C +S3154001A9F09010000080A2C00D0A80009594100000BE +S3154001AA000302000080A2C0010A80002898100000BD +S3154001AA1080A340011A80000D841020019B2B600405 +S3154001AA2010BFFFFC980320019A83400D1A8000074E +S3154001AA308400A001832860049B3360019A0340018E +S3154001AA40108000078420A00180A3400B0ABFFFF7B6 +S3154001AA5001000000028000020100000084A0A00164 +S3154001AA6006800076010000009622C00D9410200158 +S3154001AA701080000A01000000952AA0010680000509 +S3154001AA809B3360019622C00D108000049402A00100 +S3154001AA909602C00D9422A00184A0A00116BFFFF723 +S3154001AAA08092C000308000659B2B600480A3400BE0 +S3154001AAB008BFFFFE9883200102800065982320018C +S3154001AAC08092C000952AA0040680002F9B33600126 +S3154001AAD096A2C00D068000179B33600196A2C00D59 +S3154001AAE00680000B9B33600196A2C00D06800005CF +S3154001AAF09B33600196A2C00D108000509402A00FB6 +S3154001AB009682C00D1080004D9402A00D9682C00D14 +S3154001AB10068000059B33600196A2C00D1080004758 +S3154001AB209402A00B9682C00D108000449402A009A5 +S3154001AB309682C00D0680000B9B33600196A2C00D24 +S3154001AB40068000059B33600196A2C00D1080003B34 +S3154001AB509402A0079682C00D108000389402A00589 +S3154001AB609682C00D068000059B33600196A2C00DFA +S3154001AB70108000329402A0039682C00D1080002FEF +S3154001AB809402A0019682C00D068000179B33600196 +S3154001AB9096A2C00D0680000B9B33600196A2C00DA4 +S3154001ABA0068000059B33600196A2C00D10800023EC +S3154001ABB09402BFFF9682C00D108000209402BFFD13 +S3154001ABC09682C00D068000059B33600196A2C00D9A +S3154001ABD01080001A9402BFFB9682C00D10800017A8 +S3154001ABE09402BFF99682C00D0680000B9B3360012B +S3154001ABF096A2C00D068000059B33600196A2C00D4A +S3154001AC001080000E9402BFF79682C00D1080000B93 +S3154001AC109402BFF59682C00D068000059B33600104 +S3154001AC2096A2C00D108000059402BFF39682C00D16 +S3154001AC30108000029402BFF198A3200116BFFFA223 +S3154001AC408092C000268000029602C0098090C00012 +S3154001AC50268000029620000B81C3E0089010000B6D +S3154001AC6092100008941020009010200096102000A9 +S3154001AC708213C000400001E39E1040000100000025 +S3154001AC809210000803100121D00062A88213C0006F +S3154001AC90400002629E104000010000009210000830 +S3154001ACA003100121D00062A88213C00040000003B6 +S3154001ACB09E104000010000009DE3BFA084102000CB +S3154001ACC08206600B80A0601608800004A010201048 +S3154001ACD0A0087FF88534201F80A400190A80004609 +S3154001ACE08088A0FF1280004401000000400001AFAF +S3154001ACF09010001880A421F7188000418334200960 +S3154001AD0023100120A214622082044010E400600C4A +S3154001AD1080A480010280010F99342003C604A00457 +S3154001AD20C404A00CC204A0088608FFFC8604800364 +S3154001AD30C800E00488112001C220A008C820E00410 +S3154001AD40C420600C9010001840000192B004A00885 +S3154001AD5081C7E00881E80000E6046008E804E004F1 +S3154001AD60A80D3FFC8225001080A0600F148000D200 +S3154001AD7080A40014031001232F100121EA0060F87A +S3154001AD80C205E22CAA05601080A07FFF0280000464 +S3154001AD90AA054010AA056FFFAA0D70009010001871 +S3154001ADA0400001889210001580A23FFF02800009F1 +S3154001ADB0A41000088404C01480A08008088000EC18 +S3154001ADC02D10012380A44013028000EAC205A1048C +S3154001ADD0C2046008C40060048408BFFC822080105D +S3154001ADE080A0600F1480012280A400024000016906 +S3154001ADF09010001881C7E00891E82000993420039B +S3154001AE0080A060000280000F872B200380A0600491 +S3154001AE1008800092993420069800605B80A06014F7 +S3154001AE2008800008872B200380A0605418800113F6 +S3154001AE3080A061549934200C9803206E872B2003FF +S3154001AE4023100120A214622086044003E400E00C92 +S3154001AE5080A0C0123280000BC404A00410800010F0 +S3154001AE609803200136800068C604A00CE404A00CB7 +S3154001AE7080A0C0122280000A98032001C404A004C5 +S3154001AE808408BFFC8220801080A0600F04BFFFF6BB +S3154001AE9080A0600098033FFF98032001071001201E +S3154001AEA08610E228E400E00880A0C0122280002A31 +S3154001AEB0C2046004C404A0048408BFFC822080103C +S3154001AEC080A0600F1480008A80A06000C620E00C3C +S3154001AED016800059C620E00880A0A1FF28800062A4 +S3154001AEE08530A0038330A00980A06004188000E962 +S3154001AEF08800605B8930A006880120389B292003A1 +S3154001AF009A04400DC203600880A0400D32800008BB +S3154001AF10C8006004108000E9DA04600480A340019F +S3154001AF2022800008C400600CC800600488093FFC08 +S3154001AF3080A080042ABFFFFAC2006008C400600CEA +S3154001AF40C424A00CC224A008E420600CE420A0087C +S3154001AF50C2046004853B2002881020018929000231 +S3154001AF6080A040042ABFFF7EE60460088088400432 +S3154001AF702280004B980B3FFC952B20039610000C2A +S3154001AF809404400A9A10000AE403600C80A340121C +S3154001AF903280000BC404A004108000589602E001E0 +S3154001AFA036800019C604A00CE404A00C80A340120C +S3154001AFB0228000529602E001C404A0048408BFFC2A +S3154001AFC08220801080A0600F04BFFFF680A0600041 +S3154001AFD0DA04A00CC804A00884048010A01420013F +S3154001AFE0C8236008DA21200CC420E00CC420E00804 +S3154001AFF0E024A004C2208001C620A00810800010D1 +S3154001B000C620A00CC204A00884048002C800A00483 +S3154001B01088112001C220E008C820A004C620600C87 +S3154001B02090100018400000DBB004A00881C7E0087A +S3154001B03081E8000084048002C200A00482106001FD +S3154001B040C220A00490100018400000D2B004A0080D +S3154001B05081C7E00881E800009803203810BFFF79D6 +S3154001B060872B20038928A00388044004DA0120089D +S3154001B070D6046004C824A00CDA24A0088538A002AE +S3154001B08082102001E423600C83284002E421200839 +S3154001B0908210400B10BFFFB0C224600489292001F1 +S3154001B0A08088400402BFFFFE9803200410BFFFB40E +S3154001B0B0952B200338BFFF3103100123E4046008B8 +S3154001B0C084048010A014200182106001E024A004B1 +S3154001B0D0C220A00490100018C4246008400000ADAE +S3154001B0E0B004A00881C7E00881E80000840480100C +S3154001B0F010BFFFBEA0142001808AE00312BFFFA348 +S3154001B1009A04A008808B20030280009C8202BFF82B +S3154001B110D400600880A2800122BFFFFB98033FFF55 +S3154001B120C20460048929200180A1000118BFFF0BD8 +S3154001B13080A1200022BFFF0AE60460088089000141 +S3154001B140228000928929200110BFFF8C9810000BA4 +S3154001B1508204A008E400600C80A0401202BFFF50A8 +S3154001B1609803200210BFFEEFC604A004C205A10445 +S3154001B1708205400180A0801202800067C225A10499 +S3154001B180C605E22C80A0FFFF2280006B031001213F +S3154001B1908204800184204002C425A104848CA00736 +S3154001B1A0028000060300000482102008822040022B +S3154001B1B0A404800182207000AA0480159010001812 +S3154001B1C0AA0D6FFFAA2040154000007E921000157F +S3154001B1D080A23FFF02800060841020018422001279 +S3154001B1E0840080158410A001C205A1048205400196 +S3154001B1F0C225A104C424A00480A4401302800010E7 +S3154001B200E424600880A5200F0880003A84053FF4B5 +S3154001B2108408BFF88604C002C804E00488092001F6 +S3154001B22088108004C824E00488102005C820E0085E +S3154001B23080A0A00F18800042C820E0040510012319 +S3154001B240C600A0FC80A0400338800002C220A0FCBA +S3154001B25005100123C600A10080A0400338BFFEDDD2 +S3154001B260C220A10010BFFEDCC204600828BFFF95C2 +S3154001B270E404600830BFFEDE1880001780A06554E4 +S3154001B2809934200F9803207710BFFEEE872B2003B9 +S3154001B29080A0601408BFFF1B9B29200380A0605437 +S3154001B2A01880001780A061548930A00C8801206E57 +S3154001B2B010BFFF149B2920038939200284102001E5 +S3154001B2C08528800484134002C424600410BFFF1DF6 +S3154001B2D084100001861023F018BFFEDA9810207EF4 +S3154001B2E0993420129803207C10BFFED6872B200369 +S3154001B2F08210200110BFFEB7C224A0041880001896 +S3154001B30080A065548930A00F8801207710BFFEFDCB +S3154001B3109B2920038088AFFF12BFFF9BC605E22C05 +S3154001B320C4046008860540148610E00110BFFFC4BE +S3154001B330C620A00410BFFF9AE420622C9204E008C4 +S3154001B340400000B6901000180310012310BFFFBC47 +S3154001B350C200610410BFFFA5AA1020009A1023F075 +S3154001B36018BFFEE88810207E8930A0128801207C13 +S3154001B37010BFFEE49B292003C204600482284004D6 +S3154001B38010BFFF68C224600410BFFF6D9602E0043F +S3154001B39011100121901222308213C000400003A1F6 +S3154001B3A09E10400001000000111001219012223030 +S3154001B3B08213C000400003859E104000010000003A +S3154001B3C09DE3BFA02110012490100019400001A85F +S3154001B3D0C02421A080A23FFF02800004C20421A014 +S3154001B3E081C7E00891E8000880A0600002BFFFFD28 +S3154001B3F001000000C226000081C7E00891E800086C +S3154001B4009DE3BFA021100123400003709014212C1D +S3154001B41003100074E20061B0D004614880A22000AC +S3154001B4202280003D9004614CC202200480A0601F2E +S3154001B4301480001E0100000080A620000280001238 +S3154001B44084006002C4022004820060228600A04279 +S3154001B450892860028728E002C2022188F42200047A +S3154001B460F6220003861020018728C002821040037D +S3154001B470C222218880A62002028000198210000281 +S3154001B480840060028528A00282006001C222200455 +S3154001B490F2220002B0102000400003629014212CD9 +S3154001B4A081C7E00881E800007FFFFDFD90102190F3 +S3154001B4B080A220002280001A9014212CC2046148E7 +S3154001B4C0C2220000D0246148C0222004C022218823 +S3154001B4D0C022218C10BFFFD982102000C202218CCC +S3154001B4E08610400382100002840060028528A00273 +S3154001B4F0C622218C82006001F2220002C22220046F +S3154001B500B0102000400003479014212C81C7E00869 +S3154001B51081E8000010BFFFC5D024614840000341C7 +S3154001B520B0103FFF81C7E00881E800009DE3BFA05E +S3154001B5307FFFFF9E9010001821100120A0142220A9 +S3154001B540C2042008E2006004A20C7FFC82046FEF73 +S3154001B550B2204019B20E7000B206700080A66FFF8D +S3154001B56004800009901000187FFFFF96921020007A +S3154001B570C20420088200401180A200010280000717 +S3154001B58090100018901000187FFFFF82B010200025 +S3154001B59081C7E00881E800007FFFFF8A92200019F9 +S3154001B5A080A23FFF0280000EA2244019C404200855 +S3154001B5B0A214600103100123E220A0049010001898 +S3154001B5C0B0102001C4006104B22080197FFFFF71D1 +S3154001B5D0F220610481C7E00881E80000901000185C +S3154001B5E07FFFFF7892102000C204200884220001C8 +S3154001B5F080A0A00F04BFFFE407100121C600E22C82 +S3154001B60090220003071001238410A001D020E104F9 +S3154001B61010BFFFDDC42060049DE3BFA080A660008B +S3154001B62002800050010000007FFFFF60901000186B +S3154001B63084067FF8D800A004820B3FFE0910012042 +S3154001B6408600800188112220DA00E004D601200814 +S3154001B65080A2C003028000639A0B7FFCDA20E004DB +S3154001B660808B20011280000E98102000D8067FF8AA +S3154001B6708420800C8200400CD600A0089801200846 +S3154001B68080A2C00C0280000698102001D400A00CB4 +S3154001B690D422E00C98102000D622A0089600C00DB6 +S3154001B6A0D602E004808AE0013280000A86106001F9 +S3154001B6B080A320000280002D8200400DDA00E008C0 +S3154001B6C0C600E00CC623600CDA20E0088610600153 +S3154001B6D0C220800180A3200012800020C620A00441 +S3154001B6E080A061FF28800030833060038730600985 +S3154001B6F080A0E004188000529800E05B9930600613 +S3154001B700980320389B2B20039A01000DC60360083D +S3154001B71080A0C00D32800008C800E00410800052AD +S3154001B720DA01200480A3400322800008C200E00C15 +S3154001B730C800E00488093FFC80A040042ABFFFFA04 +S3154001B740C600E008C200E00CC220A00CC620A0083A +S3154001B750C420E00CC42060087FFFFF0E81E8000092 +S3154001B76081C7E00881E80000DA00E00817100120EF +S3154001B7709612E22880A3400B32BFFFD3C600E00CED +S3154001B780C423600CC4236008C2208001DA20A008CB +S3154001B79082106001DA20A00CC220A0047FFFFEFDCA +S3154001B7A081E800008728600386010003DA00E0088B +S3154001B7B0C620A00CDA20A008D8012004C423600CBE +S3154001B7C0C420E00883386002841020018328800168 +S3154001B7D082130001C22120047FFFFEEE81E80000B2 +S3154001B7E0808B20011280000982034001D8067FF830 +S3154001B7F08420800CDA00A00CC600A0088200400C10 +S3154001B800C6236008DA20E00CC421200886106001B6 +S3154001B810C620A00405100121C400A22880A0400230 +S3154001B8200ABFFFCE03100123D20060F87FFFFF401D +S3154001B830901000187FFFFED781E8000080A0E01439 +S3154001B84008BFFFB29B2B200380A0E0541880000D57 +S3154001B85080A0E1549930600C9803206E10BFFFAB75 +S3154001B8609B2B2003993B2002821020018328400C08 +S3154001B87082134001C221200410BFFFB4821000038D +S3154001B8801880000680A0E5549930600F9803207710 +S3154001B89010BFFF9E9B2B20039A1023F018BFFF9BDE +S3154001B8A09810207E993060129803207C10BFFF9734 +S3154001B8B09B2B20039DE3BFA080A620000280001F92 +S3154001B8C003100121E406214880A4A000228000142F +S3154001B8D0C206203CC204A004A0807FFF2C80000C3D +S3154001B8E0E4048000A2006001A32C6002A20480113E +S3154001B8F0C20440009FC04000A2047FFCA0843FFFD9 +S3154001B9003CBFFFFDC2044000E404800080A4A000C7 +S3154001B91032BFFFF2C204A004C206203C80A06000F0 +S3154001B92002800004010000009FC0400090100018F2 +S3154001B93081C7E00881E8000010BFFFE3F00062A87C +S3154001B9409DE3BFA0D206400080A2600002800004B1 +S3154001B950010000007FFFFFFB901000187FFFFF2FC3 +S3154001B96081E80000010000009DE3BFA00310012112 +S3154001B970C20062A880A600010280003201000000D8 +S3154001B980D206204C80A2600022800016E0062148A3 +S3154001B990A2102000E002401180A420002280000B6A +S3154001B9A0A204600492100010901000187FFFFF1B44 +S3154001B9B0E004000080A4200012BFFFFC921000109A +S3154001B9C0D206204CA204600480A4603C32BFFFF33F +S3154001B9D0E00240117FFFFF1190100018E006214858 +S3154001B9E080A420002280000ED2062054A206214CBB +S3154001B9F080A400112280000AD20620549210001021 +S3154001BA00901000187FFFFF05E004000080A440105D +S3154001BA1012BFFFFC92100010D206205480A2600093 +S3154001BA2022800005C20620387FFFFEFC90100018D8 +S3154001BA30C206203880A0600032800004C206203C45 +S3154001BA4081C7E00881E800009FC0400090100018BF +S3154001BA50F20622E080A6600002BFFFFA0100000064 +S3154001BA607FFFFFB881E800000100000005100124B6 +S3154001BA70C200A1A480A06000228000060310012418 +S3154001BA8090004008D020A1A481C3E0089010000195 +S3154001BA90821061B890004008C220A1A4D020A1A480 +S3154001BAA081C3E00890100001A7500000AE100001CC +S3154001BAB08334E00129100123E805203CA92CC01458 +S3154001BAC08215000181E000008190400001000000E4 +S3154001BAD00100000001000000E03BA000E43BA0089B +S3154001BAE0E83BA010EC3BA018F03BA020F43BA0287B +S3154001BAF0F83BA030FC3BA03881E8000082100017DB +S3154001BB0081C4400081CC800001000000010000009A +S3154001BB1001000000A7500000A92CE0012B100123D1 +S3154001BB20EA05603CAB34C015AA1540148195400026 +S3154001BB3001000000010000000100000081E8000052 +S3154001BB4081E80000E01BA000E41BA008E81BA01050 +S3154001BB50EC1BA018F01BA020F41BA028F81BA0305A +S3154001BB60FC1BA03881E0000081E0000081C4400058 +S3154001BB7081CC8000A750000029100071ADC520B8C6 +S3154001BB800100000027100123A614E01CE024C00098 +S3154001BB90818C20200100000001000000010000000E +S3154001BBA09DE3BFA09DE3BFA09DE3BFA09DE3BFA0D2 +S3154001BBB09DE3BFA09DE3BFA09DE3BFA081E8000038 +S3154001BBC081E8000081E8000081E8000081E800008A +S3154001BBD081E8000081E8000027100123A614E01C3B +S3154001BBE0C024C000E203A068A4046004E223A06468 +S3154001BBF0E423A06810800257AC10000029100123ED +S3154001BC00A8152000C2252000C8252004E0252010C3 +S3154001BC10E2252014E4252018E825201C81E80000AF +S3154001BC208348000082106F00818860200100000077 +S3154001BC30010000000100000009100123C801203C59 +S3154001BC4081E000008821200180A920FF02800003B5 +S3154001BC50010000000100000080A1000012BFFFF9B1 +S3154001BC600100000009100123C801203C81E80000C1 +S3154001BC7080A920FF028000030100000001000000AE +S3154001BC808821200180A1000012BFFFF901000000B8 +S3154001BC9081E0000029100123A8152000C8052004D1 +S3154001BCA0C2052000E0052010E2052014E405201815 +S3154001BCB0C025201C818C20000100000001000000ED +S3154001BCC00100000081C4800081CCA004A0142F0093 +S3154001BCD0818C00000100000001000000010000000D +S3154001BCE081C4800081CCA00480A660021280000538 +S3154001BCF0A8142F00818D0000B01420203080001F31 +S3154001BD0080A6600312800006A80E2F00AA2C2F00E1 +S3154001BD10A8154014818D00003080001880A660046B +S3154001BD2012800008A9480000A8152040818D000016 +S3154001BD300100000001000000010000003080000FFA +S3154001BD4080A6600512800008A9480000A82D204061 +S3154001BD50818D00000100000001000000010000008B +S3154001BD603080000680A660061280000301000000B4 +S3154001BD7030BFFFA391D0200081C4800081CCA004B4 +S3154001BD809210200381C3E00891D020029210200234 +S3154001BD9081C3E00891D020029210200681C3E008B9 +S3154001BDA091D0200281C3E0080100000081C3E00870 +S3154001BDB00100000081C3E00801000000AE25A0108B +S3154001BDC0A75000002D10006FAC15A1D029100071AD +S3154001BDD081C5226001000000111001239012202824 +S3154001BDE0D202000092026001D2220000932DE008A7 +S3154001BDF0902C2F009212000911100123901220203D +S3154001BE00D002000080A000082280000292126F003A +S3154001BE10818A60200100000001000000010000004D +S3154001BE2090100017400000379203A06092142F0033 +S3154001BE30818A60200100000001000000010000002D +S3154001BE401110012390122028D20200009222600193 +S3154001BE50D222000010800222AC1000009DE3BFA058 +S3154001BE601B100123892E60029A1361A080A6601FD0 +S3154001BE708210200014800017C6034004B32E6004CC +S3154001BE801910012380A0E000981322200280000DA2 +S3154001BE908406400C80A0C002128000068210000376 +S3154001BEA01080000EC206400C2280000CC206400CD7 +S3154001BEB0C200600C80A0600012BFFFFC80A0800120 +S3154001BEC0C4234004F026400CC620A00C821020005A +S3154001BED081C7E00891E80001F026400C81C7E008DF +S3154001BEE091E80001912A200203100123821061A0EA +S3154001BEF0C4004008C422600C81C3E008D220400837 +S3154001BF009DE3BFA0051001238210A02CC20060044E +S3154001BF1080A0401822800040C400A02C80A62000AA +S3154001BF2022800002B0100001A32E2002031001233B +S3154001BF30821061A0E000401180A4200002800034FC +S3154001BF40291001242D1001242B100124271001242E +S3154001BF50A8152020AC15A0A4AA1560A81080001D24 +S3154001BF60A614E024A41000138400A001C424801167 +S3154001BF70C405800080A0A00022800006D2042008CB +S3154001BF809FC0800001000000C2040000D2042008C6 +S3154001BF90901000189FC0400094100019C20540003F +S3154001BFA080A0600022800005C20480119FC040002D +S3154001BFB001000000C204801182007FFFC22480116B +S3154001BFC0E004200C80A42000028000110100000042 +S3154001BFD0C204000080A0600022BFFFFBE004200CE9 +S3154001BFE0C405000080A0A00012BFFFDFC404C01139 +S3154001BFF080A0A00002BFFFDDA4100013E004200CC6 +S3154001C00080A4200032BFFFF4C204000081C7E008CB +S3154001C01081E80000F000A0C010BFFFC1B00E201F94 +S3154001C0208C10000FA74800008B34E0188A09600F76 +S3154001C03080A160030280000C0B1001238A11603439 +S3154001C0400920000088112070C82140000B100123EF +S3154001C0508A1160500920000088112040C821400003 +S3154001C060108000399010200192102006400001D224 +S3154001C0700100000080A0000802800033010000009A +S3154001C080C2022010113FFC0082084008110003FC47 +S3154001C0908410400890100002921020019410200C48 +S3154001C0A0400001DB0100000080A00008028000265C +S3154001C0B001000000400001EB921000010B1001232A +S3154001C0C08A116034D2214000901000029210200162 +S3154001C0D094102011400001CE0100000080A000080C +S3154001C0E00280001901000000400001DE92100001AB +S3154001C0F0920260100B1001238A116050D221400038 +S3154001C10090100002921020019410200D400001C0B1 +S3154001C1100100000080A000080280000B0100000021 +S3154001C120400001D0921000010B1001238A11602CAE +S3154001C130D2214000D40260109532A010940AA00F7B +S3154001C140D42160049E10000681C3E008010000006E +S3154001C15003100123821060488210200191D02000F3 +S3154001C16081C3E008010000009DE3BFA00310012444 +S3154001C170C20060B08410001880A0600002800006F2 +S3154001C180B0102000901000029FC04000921000198C +S3154001C190B010000881C7E00881E800009DE3BFA018 +S3154001C1A003100124C20060B480A060000280000533 +S3154001C1B0841020009FC04000901000188410000891 +S3154001C1C081C7E00891E800029DE3BFA00310012466 +S3154001C1D0C20060BC80A0600002800005841020007F +S3154001C1E09FC04000901000188410000881C7E008E5 +S3154001C1F091E800029DE3BFA003100124C20060B88C +S3154001C20080A0600002800005841020009FC040008D +S3154001C210901000188410000881C7E00891E80002D8 +S3154001C2209DE3BFA003100124C20060C080A060004E +S3154001C23002800005841020009FC040009010001825 +S3154001C2408410000881C7E00891E800029DE3BFA081 +S3154001C25003100124C20060C480A060000280000572 +S3154001C260841020009FC040009010001884100008E0 +S3154001C27081C7E00891E800029DE3BFA003100124B5 +S3154001C280C20060C880A060000280000584102000C2 +S3154001C2909FC04000901000188410000881C7E00834 +S3154001C2A091E800029DE3BFA003100124C20060CCC7 +S3154001C2B08410001880A0600002800006B0102000A3 +S3154001C2C0901000029FC0400092100019B010000863 +S3154001C2D081C7E00881E800000100000003100070FA +S3154001C2E0821063A89FC040000100000003100000B7 +S3154001C2F08210600081984000031000718210602C0A +S3154001C3009FC0400001000000031000708210639836 +S3154001C3109FC04000010000008B4800008B3160182F +S3154001C3208A09600380A160031280000701000000B2 +S3154001C3308B4440008B31601C80A140001280000676 +S3154001C340010000007FFFFF37010000007FFF93934C +S3154001C350010000009C23A0407FFF932A01000000BA +S3154001C3608210200191D02000010000002900000424 +S3154001C370A68C001432800003A02C001491D020001A +S3154001C380818C000001000000010000000100000056 +S3154001C39081C4800081CCA00481C3E0080100000073 +S3154001C3A081C1E00801000000A74800008B34E01875 +S3154001C3B08A09600380A16003128000080100000021 +S3154001C3C021100123A0142044A2102003E2240000DE +S3154001C3D08B4440001080000821100123A014204402 +S3154001C3E0A2102002E224000021200000E6042024BD +S3154001C3F08B34E0148A09601F27100123A614E03C00 +S3154001C400CA24C0008A01600127100123A614E0381E +S3154001C410CA24C00027100123A614E0408A216002E5 +S3154001C420CA24C00081C3E0080100000081C3E008BE +S3154001C43001000000834800008330601882086003D1 +S3154001C44080A0600312800006010000008344400082 +S3154001C4500500000882284002A380400088100000A1 +S3154001C4600910007081C122DC010000009DE3BFA0DC +S3154001C4702110007423100074A0142150A21461509D +S3154001C48080A400111A80000B01000000D0040000B6 +S3154001C49080A2200002800004A00420049FC2000064 +S3154001C4A00100000080A400112ABFFFFAD004000059 +S3154001C4B081C7E00881E80000AA27A0B0E0256060B6 +S3154001C4C0E2256064E4256068C2256074C43D6078F5 +S3154001C4D0C83D6080CC3D608885400000C425606CC5 +S3154001C4E0F03D6090F43D6098F83D60A0FC3D60A849 +S3154001C4F0A8102001A92D0010808D00130280001381 +S3154001C500010000008534E00107100123C600E03C2C +S3154001C510A72CC0038414C0028408A0FF81E0000058 +S3154001C5208190A000E03BA000E43BA008E83BA010BE +S3154001C530EC3BA018F03BA020F43BA028F83BA030F0 +S3154001C540FC3BA03881E8000081C5A0089C1000157D +S3154001C550051001248410A0ACC400800080A0800096 +S3154001C56002800004010000009FC080009203A06089 +S3154001C570818C20008210200283284010051001235F +S3154001C580C400A03885304002821040028550000028 +S3154001C59080888001028000208328A00107100123A2 +S3154001C5A0C600E03C8530800382104002820860FF6D +S3154001C5B081906000C203A06C81806000F01BA09056 +S3154001C5C0F41BA098F81BA0A0FC1BA0A8C203A07452 +S3154001C5D0C41BA078C81BA080CC1BA088E003A06028 +S3154001C5E0E203A064E403A06881E80000E01BA00028 +S3154001C5F0E41BA008E81BA010EC1BA018F01BA02010 +S3154001C600F41BA028F81BA030FC1BA0381080000F9B +S3154001C61081E00000C203A06C81806000F01BA09005 +S3154001C620F41BA098F81BA0A0FC1BA0A8C203A074F1 +S3154001C630C41BA078C81BA080CC1BA088E003A060C7 +S3154001C640E203A064E403A068818C2000010000009D +S3154001C650010000000100000081C4400081CC80003F +S3154001C660AA27A0B0C2256074C43D6078C83D6080E9 +S3154001C670CC3D608885400000C425606CA81020012F +S3154001C680A92D0010808D00130280001301000000C7 +S3154001C6908534E00107100123C600E03CA72CC00306 +S3154001C6A08414C0028408A0FF81E000008190A000AC +S3154001C6B0E03BA000E43BA008E83BA010EC3BA018FF +S3154001C6C0F03BA020F43BA028F83BA030FC3BA0382F +S3154001C6D081E8000081C5A0089C10001505100124C1 +S3154001C6E08410A0ACC400800080A0800002800004B9 +S3154001C6F0010000009FC080009203A060818C200051 +S3154001C700821020028328401005100123C400A0385E +S3154001C71085304002821040028550000080888001A9 +S3154001C720028000198328A00107100123C600E03CBE +S3154001C7308530800382104002820860FF819060004C +S3154001C740C203A06C81806000C203A074C41BA078A0 +S3154001C750C81BA080CC1BA08881E80000E01BA0007C +S3154001C760E41BA008E81BA010EC1BA018F01BA0209E +S3154001C770F41BA028F81BA030FC1BA0381080000831 +S3154001C78081E00000C203A06C81806000C203A074F6 +S3154001C790C41BA078C81BA080CC1BA088818C20001C +S3154001C7A001000000010000000100000081C44000BA +S3154001C7B081CC8000821000089A1038009610200023 +S3154001C7C0912AE00598034008D40340089132A01805 +S3154001C7D080A20001328000089602E0019132A00C4D +S3154001C7E0900A2FFF80A20009028000079410000CD6 +S3154001C7F09602E00180A2E00728BFFFF3912AE005F7 +S3154001C8009410200081C3E0089010000A82100008AD +S3154001C81098102000912B20039A004008D60040082A +S3154001C8209132E01880A20009328000089803200165 +S3154001C8309132E00C900A2FFF80A2000A0280000785 +S3154001C8409610000D9803200180A3200F28BFFFF307 +S3154001C850912B20039610200081C3E0089010000B15 +S3154001C860D4022004173FFC00920A400B900A800B29 +S3154001C8709132200C921240081100003F901223F091 +S3154001C880940A8008952AA0049412800B920A400AC1 +S3154001C89081C3E008901000099DE3BFA021100074F8 +S3154001C8A0A0142138C2043FFC80A07FFF028000080B +S3154001C8B0A0043FFC9FC04000A0043FFCC20400000E +S3154001C8C080A07FFF12BFFFFC0100000081C7E00886 +S3154001C8D081E800009DE3BFA081C7E00881E8000030 +S3154001C8E00000001000000000017A5200047C0F0194 +S3154001C8F01B0C0E000000001000000018FFFE489CB3 +S3154001C9000000000800000000000000140000002C98 +S3154001C910FFFE48900000002C00410D1E2D090F1FFF +S3154001C9200000001000000044FFFE48A40000001C67 +S3154001C930000000000000001000000058FFFE48AC57 +S3154001C9400000001C00000000000000100000006C08 +S3154001C950FFFE48B40000001C00000000000000106B +S3154001C96000000080FFFE48BC0000001C00000000E3 +S3154001C9700000001400000094FFFE48C40000002C93 +S3154001C98000410D1E2D090F1F00000018000000ACCC +S3154001C990FFFE49240000004000410D1E2D46090FAF +S3154001C9A01F00000000000018000000C8FFFE4948B3 +S3154001C9B00000022400410D1E2D46090F1F000000F4 +S3154001C9C000000018000000E4FFFE4B500000023456 +S3154001C9D000410D1E2D47090F1F00000000000018E1 +S3154001C9E000000100FFFE4D680000003C00410D1EA5 +S3154001C9F02D43090F1F000000000000180000011C14 +S3154001CA00FFFE4D880000003C00410D1E2D43090FDD +S3154001CA101F0000000000001800000138FFFF35E448 +S3154001CA200000024800410D1E2D5D090F1F00000048 +S3154001CA300000001400000154FFFF3810000006906A +S3154001CA4000410D1E2D090F1F000000180000016C4A +S3154001CA50FFFF3E880000002800410D1E2D49090FA9 +S3154001CA601F0000000000001800000188FFFF3E94EF +S3154001CA700000002400410D1E2D48090F1F00000033 +S3154001CA8000000018000001A4FFFF3E9C0000009832 +S3154001CA9000410D1E2D44090F1F0000000000001823 +S3154001CAA0000001C0FFFF3F18000000FC00410D1EC1 +S3154001CAB02D46090F1F00000000000018000001DC90 +S3154001CAC0FFFF3FF8000000C400410D1E2D47090F2E +S3154001CAD01F00000000000018000001F8FFFF40A001 +S3154001CAE00000015000410D1E2D6E090F1F00000070 +S3154001CAF00000001800000214FFFF41D4000004703A +S3154001CB0000410D1E2D44090F1F00000000000018B2 +S3154001CB1000000230FFFF46280000013400410D1E8F +S3154001CB202D4A090F1F000000000000180000024CAA +S3154001CB30FFFF47400000012400410D1E2D49090F0A +S3154001CB401F0000000000001800000268FFFF48486F +S3154001CB50000000B800410D1E2D4A090F1F000000BC +S3154001CB600000001800000284FFFF48E4000000A016 +S3154001CB7000410D1E2D48090F1F0000000000001442 +S3154001CB80000002A0FFFF49680000039400410D1E0A +S3154001CB902D090F1F00000010000002B8FFFF4CE4F2 +S3154001CBA00000002C0000000000000010000002CC34 +S3154001CBB0FFFF4CFC000000240000000000000010B4 +S3154001CBC0000002E0FFFF4D0C0000001800000000CD +S3154001CBD000000018000002F4FFFF4D100000017C28 +S3154001CBE000410D1E2D42090F1F00000000000018D4 +S3154001CBF000000310FFFF4E700000058000410D1E2E +S3154001CC002D46090F1F000000000000180000032CEC +S3154001CC10FFFF53D40000051800410D1E2D43090F97 +S3154001CC201F0000000000001400000348FFFF58D019 +S3154001CC300000010C00410D1E2D090F1F00000010C0 +S3154001CC4000000360FFFF59C4000000180000000007 +S3154001CC500000001400000374FFFF59C800000208D9 +S3154001CC6000410D1E2D090F1F000000140000038C0A +S3154001CC70FFFF6A600000461800410D1E2D090F1F77 +S3154001CC8000000010000003A4FFFFB0600000000C8C +S3154001CC900000000000000010000003B8FFFFB0587C +S3154001CCA0000000140000000000000010000003CC4A +S3154001CCB0FFFFB058000000200000000000000014F3 +S3154001CCC0000003E0FFFFB0640000077000410D1E45 +S3154001CCD02D090F1F00000010000003F8FFFFC0ECF4 +S3154001CCE00000000C00000000000000100000040CD1 +S3154001CCF0FFFFC0E400000024000000000000001017 +S3154001CD0000000420FFFFC0F40000003800000000CE +S3154001CD100000001000000434FFFFC1180000003875 +S3154001CD20000000000000001800000448FFFFC13C5D +S3154001CD300000009C00410D1E2D56090F1F000000EA +S3154001CD400000001800000464FFFFC1BC0000003C65 +S3154001CD5000410D1E2D4A090F1F000000000000185A +S3154001CD6000000480FFFFC1DC0000003C00410D1EB5 +S3154001CD702D4A090F1F000000000000100000049C0E +S3154001CD80FFFFC1FC00000038000000000000001851 +S3154001CD90000004B0FFFFC2200000003C00410D1E10 +S3154001CDA02D4A090F1F00000000000018000004CCA6 +S3154001CDB0FFFFC2400000003C00410D1E2D4A090FF5 +S3154001CDC01F00000000000010000004E8FFFFC260E1 +S3154001CDD0000000380000000000000018000004FCBC +S3154001CDE0FFFFC28400000EB000430D1E2D4C090FFB +S3154001CDF01F0000000000001400000518FFFFD118B5 +S3154001CE000000002800410D1E2D090F1F00000014CF +S3154001CE1000000530FFFFD1280000033000410D1E00 +S3154001CE202D090F1F0000001400000548FFFFD440E4 +S3154001CE30000002B800430D1E2D090F1F000000100F +S3154001CE4000000560FFFFD9E80000000C000000006B +S3154001CE500000001000000574FFFFD9E00000001437 +S3154001CE60000000000000001400000588FFFFD9E023 +S3154001CE700000007C00410D1E2D090F1F000000100F +S3154001CE80000005A0FFFFDDDC0000002000000000DF +S3154001CE9000000010000005B4FFFFDDE80000001CA3 +S3154001CEA00000000000000010000005C8FFFFDDF093 +S3154001CEB00000001C0000000000000018000005DC16 +S3154001CEC0FFFFDDF8000006D800410D1E2D4C090F6D +S3154001CED01F00000000000010000005F8FFFFE4B449 +S3154001CEE00000001800000000000000100000060CC1 +S3154001CEF0FFFFE4B800000018000000000000001821 +S3154001CF0000000620FFFFE4BC0000004000410D1E6A +S3154001CF102D42090F1F000000000000180000063CCA +S3154001CF20FFFFE4E00000012C00410D1E2D41090FD9 +S3154001CF301F0000000000001400000658FFFFE5F046 +S3154001CF40000000EC00410D1E2D090F1F00000018C6 +S3154001CF5000000670FFFFE6C40000029C00410D1E62 +S3154001CF602D43090F1F000000000000180000068C29 +S3154001CF70FFFFE9440000008C00410D1E2D4F090FB3 +S3154001CF801F00000000000018000006A8FFFFE9B4DA +S3154001CF900000002800410D1E2D44090F1F0000000E +S3154001CFA000000018000006C4FFFFE9C000000104AC +S3154001CFB000410D1E2D45090F1F0000000000001005 +S3154001CFC0000006E0FFFFEAA80000003C0000000068 +S3154001CFD000000018000006F4FFFFEE840000008800 +S3154001CFE000410D1E2D52090F1F00000000000010C8 +S3154001CFF000000710FFFFEEF00000001C00000000DB +S3154001D0000000001800000724FFFFEEF80000012091 +S3154001D01000410D1E2D58090F1F0000000000001091 +S3154001D02000000740FFFFF13400000010000000003F +S3154001D0300000001800000754FFFFF13000000034E3 +S3154001D04000410D1E2D47090F1F000000000000186A +S3154001D05000000770FFFFF1480000002C00410D1E43 +S3154001D0602D45090F1F000000000000180000078C25 +S3154001D070FFFFF1580000002C00410D1E2D45090F00 +S3154001D0801F00000000000018000007A8FFFFF1681C +S3154001D0900000002C00410D1E2D45090F1F00000008 +S3154001D0A000000018000007C4FFFFF1780000002CC3 +S3154001D0B000410D1E2D45090F1F00000000000018FC +S3154001D0C0000007E0FFFFF1880000002C00410D1E23 +S3154001D0D02D45090F1F00000000000018000007FC45 +S3154001D0E0FFFFF1980000002C00410D1E2D45090F50 +S3154001D0F01F0000000000001800000818FFFFF1A8FB +S3154001D1000000003400410D1E2D47090F1F0000008D +S3154001D1100000001800000834FFFFF3540000004CE3 +S3154001D12000410D1E2D47090F1F00000000000000A1 +S3154001D13000000002FFFFFFFF0000000000000000AA +S3154001D14000000002FFFFFFFF00000000000000009A +S3154001D150343074693934612B307967697975303582 +S3154001D1607968617035796934682B612B6969797899 +S3154001D1706869346B35396A30713930356A6B6F7924 +S3154001D18070686F70746A72686961346979302B347A +S3154001D1900000000000000000400800000000000000 +S3154001D1A03CD203AF9EE756163E7AD7F29ABCAF48B9 +S3154001D1B0400486B00000000043000000000000006B +S3154001D1C09DE3BFA07FFF8FD9010000007FFFFDB324 +S3154001D1D00100000081C7E00881E800009DE3BFA08F +S3154001D1E07FFF8FA70100000081C7E00881E80000AA +S3154002000000000001000000000000000000000000A7 S315400200102000000000000000000000000000000078 S315400200200000000000000000000000000000000088 S315400200300000000000000000000000000000000078 @@ -7353,328 +7468,328 @@ S315400200A00000000000000000000000000000000008 S315400200B000000000000000000000000000000000F8 S315400200C000000000000000000000000000000000E8 S315400200D000000000000000000000000000000000D8 -S315400200E00000000100000000000000410000000086 -S315400200F0343074693934612B3079676979753035B2 -S315400201007968617035796934682B612B69697978C8 -S315400201106869346B35396A30713930356A6B6F7953 -S3154002012070686F70746A72686961346979302B34A9 -S315400201300000000000000000000000010000000076 -S3154002014040000000000000004008000000000000DF -S31540020150401800000000000080000000000000007F -S315400201600000000000000000BFF000000000000098 -S31540020170BF800000000000000000000000000000F8 -S315400201800000000000000000000000000000000027 -S315400201903FF00000000000004008000000000000A0 -S315400201A03FF0000040000000000000000000000098 -S315400201B03F800000404000000000000000000000B8 -S315400201C000000000000000000000000000000000E7 -S315400201D0000000000000000048000001000000008E -S315400201E0480000000000000046C000000000000079 -S315400201F03FF0000000000000400000000000000048 -S3154002020040080000000000003F800000000000009F -S31540020210529000000000000052900FF807F60DEBD6 -S3154002022052901FE03F61BAD052902FB8D4E30F48A4 -S3154002023052903F81F636B80C52904F3BD03C0A64FE -S3154002024052905EE68EFAD48B52906E825DA8FC2B5B -S3154002025052907E0F66AFED0752908D8DD3B1D9AADB -S3154002026052909CFDCD8ED0095290AC5F7C69A3C85A -S315400202705290BBB307ACAFDB5290CAF8960E710DE3 -S315400202805290DA304D95FB065290E95A539F492CCB -S315400202905290F876CCDF6CD952910785DD689A295F -S315400202A052911687A8AE14A35291257C5187FD0917 -S315400202B052913463FA37014E5291433EC467EFFB83 -S315400202C05291520CD1372FEB529160CE41341D746C -S315400202D052916F8334644DF952917E2BCA46BAB914 -S315400202E052918CC821D6D3E352919B58598F7C9F09 -S315400202F05291A9DC8F6DF1045291B854E0F496A064 -S315400203005291C6C16B2DB8705291D5224AAE2EE19A -S315400203105291E3779B97F4A85291F1C1799CA8FF39 -S31540020320529200000000000052920E33499A21A9CF -S3154002033052921C5B70D9F82452922A788FC76DE587 -S315400203405292388AC0059C28529246921AD4EA4959 -S315400203505292548EB9151E8552926280B347609668 -S315400203605292706821902E9A52927E451BB944C38E -S3154002037052928C17B9337834529299E01118857596 -S315400203805292A79E3A2CD2E65292B5524AE1278E13 -S315400203905292C2FC595456A75292D09C7B54E03E8C -S315400203A05292DE32C66287415292EBBF4FAFDD4B6D -S315400203B05292F9422C23C47E529306BB705AE7C32B -S315400203C05293142B30A929AB52932191811B0A4196 -S315400203D052932EEE7577041652933C42213EE0C963 -S315400203E05293498C97B10540529356CDEBC9B5E22B -S315400203F0529364063044530652937135779C8DCBA3 -S3154002040052937E5BD40F95A152938B79579D3EAB07 -S315400204105293988E1409212E5293A59A1ADBB257FB -S315400204205293B29D7D6356625293BF984CB56C7798 -S315400204305293CC8A99AF54535293D97474F76DF24E -S315400204405293E655EEFE13675293F32F17FE8D0431 -S31540020450529400000000000052940CC8B6D657C20F -S31540020460529419894C2329F052942641CF569572BB -S31540020470529432F24FB01C7A52943F9ADC3F79CE74 -S3154002048052944C3B83E57153529458D455549C1A1A -S31540020490529465655F122FF6529471EEAF76C2C6DC -S315400204A052947E7054AF098952948AEA5CBC935F37 -S315400204B05294975CD57680885294A3C7CC8A358A63 -S315400204C05294B02B4F7C0A885294BC876BA7F6ECA9 -S315400204D05294C8DC2E4239805294D529A457FCFC4A -S315400204E05294E16FDACFF9375294EDAEDE6B10FEDD -S315400204F05294F9E6BBC4ECB3529506177F5491BBAE -S3154002050052951241356CF6E052951E63EA3D95B01E -S3154002051052952A7FA9D2F8EA529536948017481006 -S31540020520529542A278D2D03652954EA99FAC8A0FA6 -S3154002053052955AAA002A9D5A529566A3A5B2E1B18E -S31540020540529572969B8B5CD852957E82ECDABE8D22 -S3154002055052958A68A4A8D9F352959647CDDF1CA531 -S315400205605295A220734903775295ADF29F948CFB24 -S315400205705295B9BE5D52A9DA5295C583B6F7AB0319 -S315400205805295D142B6DBADC55295DCFB673B05DFE2 -S315400205905295E8ADD236A58F5295F45A01D483B41A -S315400205A0529600000000000052960B9FD68A455490 -S315400205B0529617398F2AAA48529622CD337F0FE890 -S315400205C052962E5ACD0C3EBE529639E2653E421B9B -S315400205D0529645640568C1C3529650DFB6C759F470 -S315400205E052965C55827DF1D2529667C57199104BEF -S315400205F05296732F8D0E2F7752967E93DDBC0E73D5 -S31540020600529689F26C6B01D05296954B41CD4293EC -S315400206100BC0A4068F346C9B0BC093731C185447B3 -S315400206200BC083008E183C230BC072AE83A9704A5E -S315400206300BC0627C9CC166FF0BC0526A7ACE64A430 -S315400206400BC04277C0B04ADA0BC032A412B191A0B5 -S315400206500BC022EF168069500BC0135873280473DF -S315400206600BC003DFD10A08480BBFE909B3B04632D3 -S315400206700BBFCA8E711B8E880BBFAC4D32D4143061 -S315400206800BBF8E4553D34B1B0BBF7076318237EF70 -S315400206900BBF52DF2BADF99C0BBF357FA47C936C0D -S315400206A00BBF18570061F5EB0BBEFB64A61545154B -S315400206B00BBEDEA7FE865A2B0BBEC22074D37FBC6E -S315400206C00BBEA5CD763F66690BBE89AE722750F04A -S315400206D00BBE6DC2D9F976230BBE520A212B976CFB -S315400206E00BBE3683BD31CAA20BBE1B2F257575CAFA -S315400206F00BBE000BD34C7BAF0BBDE51941F097FE09 -S315400207000BBDCA56EE76E9D00BBDAFC457C7AB7325 -S315400207100BBD9560FE9616690BBD7B2C65587275AE -S315400207200BBD612610404EC00BBD474D8532E409D4 -S315400207300BBD2DA24BC19EDF0BBD1423ED22D10171 -S315400207400BBCFAD1F42A88E40BBCE1ABED438E80B4 -S315400207500BBCC8B1666884820BBCAFE1EF1D2D01AC -S315400207600BBC973D1867D0EF0BBC7EC274CAC962F8 -S315400207700BBC6671983E29FE0BBC4E4A18298BA9C2 -S315400207800BBC364B8B5DF6DB0BBC1E758A0FECBF82 -S315400207900BBC06C7ADD18E7E0BBBEF41918CE1F609 -S315400207A00BBBD7E2D17E33360BBBC0AB0B2E921BB3 -S315400207B00BBBA999DD6E6B650BBB92AEE8503CA7AD -S315400207C00BBB7BE9CD2362720BBB654A2E6F002CB5 -S315400207D00BBB4ECFAFED00FE0BBB3879F685313FF2 -S315400207E00BBB2248A8486FDE0BBB0C3B6C6BF73B3E -S315400207F00BBAF651EB44BCEE0BBAE08BCE42E7F1B4 -S315400208000BBACAE8BFED5CC00BBAB5686BDD5EDDFC -S315400208100BBAA00A7EBA475E0BBA8ACEA6354FEB12 -S315400208200BBA75B4910571DB0BBA60BBEEE358EFB8 -S315400208300BBA4BE4708569410BBA372DC79BD7FE7D -S315400208400BBA2297A6CCD68C0BBA0E21C1B0CFA03A -S315400208500BB9F9CBCCCEB6050BB9E5957D98648B31 -S315400208600BB9D17E8A670EE70BB9BD86AA77C3104C -S315400208700BB9A9AD95E7FAC40BB995F305B23CE5B8 -S315400208800BB98256B3AACE570BB96ED85A7C7206AA -S315400208900BB95B77B5A537C80BB94834817359CCC8 -S315400208A00BB9350E7B02284D0BB922056037032E54 -S315400208B00BB90F18EFBE614A0BB8FC48E908E522AE -S315400208C00BB8E9950C487EA90BB8D6FD1A6D99E886 -S315400208D00BB8C480D5245A340BB8B21FFED1E1BC42 -S315400208E00BB89FDA5A91A5260BB88DAFAC32CB0A1C -S315400208F00BB87B9FB83596F60BB869AA43C8DFE1B9 -S315400209000BB857CF14C791B50BB8460DF1B639C6D9 -S315400209100BB83466A1C09DF90BB822D8ECB75E6E0F -S315400209200BB811649B0DA16B0BB8000975D6C9595A -S315400209300BB7EEC746C434A50BB7DD9DD823075285 -S315400209400BB7CC8CF4D9FE010BB7BB9468674A50FF -S315400209500BB7AAB3FEDE78540BB799EB84E65D0C6F -S315400209600BB7893AC7B70D960BB778A19517DF0132 -S315400209700BB7681FBB5D6E910BB757B50967B24C93 -S315400209800BB747614EA011A20BB737245AF786140C -S315400209900BB726FDFEE4C3A00BB716EE0B6268E862 -S315400209A00BB706F451ED36CE0BB6F710A4824F8044 -S315400209B00BB6E742D59D7CB40BB6D78AB8377D0EC7 -S315400209C00BB6C7E81FC458720BB6B85AE031BB32F1 -S315400209D00BB6A8E2CDE557F90BB6997FBDBB50459C -S315400209E00BB68A318504A35C0BB67AF7F985A39BCD -S315400209F00BB66BD2F17471FF0BB65CC243777FCEF6 -S31540020A000BB64DC5C6A416420BB63EDD527CE4116A -S31540020A100BB63008BEF090CF0BB62147E45855EBE3 -S31540020A200BB6129A9B769D520BB60400BD75A584F1 -S31540020A300BB5F57A23E62B070BB5E706A8BE172CAE -S31540020A400BB5D8A6265733FF0BB5CA58776DE54B7B -S31540020A500BB5BC1D771FE6AB0BB5ADF500EB0E78BB -S31540020A600BB59FDEF0AC15940BB591DB229D63F27C -S31540020A700BB583E97355E1C10BB57609BFC7CD32D4 -S31540020A800BB5683BE53F94B80BB55A7FC162B5B624 -S31540020A900BB54CD5322E9F7F0BB53F3C15F79AA12D -S31540020AA00BB531B44B67B45A0BB5243DB17DAE306C -S31540020AB00BB516D8278BF18F0BB509838D37876710 -S31540020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB69 -S31540020AD00BB4E1EA1D1EA6680BB4D4D8040308E59C -S31540020AE00BB4C7D63D722B370BB4BAE4AAEBF9481E -S31540020AF00BB4AE032E3C2D7E0BB4A131A97965C948 -S31540020B000BB4946FFF043C1C0BB487BE118662364D -S31540020B100BB47B1BC3F1C0BF0BB46E88F97F999BA4 -S31540020B200BB4620595AFAD730BB455917C476454D3 -S31540020B300BB4492C9150F96C0BB43CD6B91AA9C8DE -S31540020B400BB4308FD835E60B0BB42457D3768716C1 -S31540020B500BB4182E8FF205900BB40C13F2FEB43B75 -S31540020B600BB40007E232FD1F0BB3F40A4364A167DC -S31540020B700BB3E81AFCA7FBF00BB3DC39F44F468AF9 -S31540020B800BB3D06710E9E1C30BB3C4A239439F4FFD -S31540020B900BB3B8EB54640EF10BB3AD42498DCDDFC6 -S31540020BA00BB3A1A7003DD89B0BB39619602ADF2B46 -S31540020BB00BB38A9951449BB80BB37F26BBB32B79AF -S31540020BC00BB373C187D669EA0BB368699E454E4437 -S31540020BD00BB35D1EE7CD4B2D0BB351E14D71B09872 -S31540020BE00BB346B0B86B0FC30BB33B8D1226A15A5B -S31540020BF00BB330764445ADAC0BB3256C389CF6EB63 -S31540020C000BB31A6ED934256E0BB30F7E104535F5EC -S31540020C100BB30499C83BE9D60BB2F9C1EBB53923FC -S31540020C200BB2EEF6657EC6AA0BB2E437209655D5D0 -S31540020C300BB2D984082942630BB2CEDD0793F9E79A -S31540020C400BB2C4420A6177190BB2B9B2FC4ABEDA98 -S31540020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1F9 -S31540020C600BB29A4CA48F90E30BB28FEC8BA9777997 -S31540020C700BB28597FF1D694D0BB27B4EEBAE48DD3D -S31540020C800BB271113E499CEE0BB266DEE4071AA81E -S31540020C900BB25CB7CA2831380BB2529BDE1796F7B5 -S31540020CA00BB2488B0D68D8030BB23E8545D7E65A40 -S31540020CB00BB2348A7548AB540BB22A9A89C69A97B4 -S31540020CC00BB220B5718446610BB216DB1ADAF53FD8 -S31540020CD00BB20D0B744A39100BB203466C77876C14 -S31540020CE00BB1F98BF22DD3490BB1EFDBF45D27FF44 -S31540020CF00BB1E636621A457E0BB1DC9B2A9E3DD588 -S31540020D000BB1D30A3D4613EE0BB1C98389925B817F -S31540020D100BB1C006FF26DA3F0BB1B6948DCA2A281C -S31540020D200BB1AD2C25655D0F0BB1A3CDB603A13D2D -S31540020D300BB19A792FD1E7410BB1912E831E88D2FE -S31540020D400BB187EDA058F0D60BB17EB6781144733D -S31540020D500BB17588FAF80D3A0BB16C6519DDE45D95 -S31540020D600BB1634AC5B31EEF0BB15A39EF877B28E5 -S31540020D700BB151328889CEAE0BB148348207B5DB0E -S31540020D800BB13F3FCD6D43FF0BB136545C44B49A31 -S31540020D900BB12D7220361D870BB124990B07221BEE -S31540020DA00BB11BC90E9AA72D0BB113021CF0880F6B -S31540020DB00BB10A4428254C650BB1018F2271DEE541 -S31540020DC00BB0F8E2FE2B44F40BB0F03FADC2572312 -S31540020DD00BB0E7A523C37A850BB0DF1352D65AD997 -S31540020DE00BB0D68A2DBDA58C0BB0CE09A756C589A8 -S31540020DF00BB0C591B2999FDB0BB0BD2242985115FB -S31540020E000BB0B4BB4A7EEB870BB0AC5CBD933636B7 -S31540020E1065300000653010006530200065303000D6 -S31540020E2065304000653050006530600065307000C6 -S31540020E3065308000653090006530A0006530B000B6 -S31540020E406530C0006530D0006530E0006530F000A6 -S31540020E506531000065311000653120006531300092 -S31540020E606531400065315000653160006531700082 -S31540020E7065318000653190006531A0006531B00072 -S31540020E806531C0006531D0006531E0006531F00062 -S31540020E90653200006532100065322000653230004E -S31540020EA0653240006532500065326000653270003E -S31540020EB065328000653290006532A0006532B0002E -S31540020EC06532C0006532D0006532E0006532F0001E -S31540020ED0653300006533100065332000653330000A -S31540020EE065334000653350006533600065337000FA -S31540020EF065338000653390006533A0006533B000EA -S31540020F006533C0006533D0006533E0006533F000D9 -S31540020F1065340000653410006534200065343000C5 -S31540020F2065344000653450006534600065347000B5 -S31540020F3065348000653490006534A0006534B000A5 -S31540020F406534C0006534D0006534E0006534F00095 -S31540020F506535000065351000653520006535300081 -S31540020F606535400065355000653560006535700071 -S31540020F7065358000653590006535A0006535B00061 -S31540020F806535C0006535D0006535E0006535F00051 -S31540020F90653600006536100065362000653630003D -S31540020FA0653640006536500065366000653670002D -S31540020FB065368000653690006536A0006536B0001D -S31540020FC06536C0006536D0006536E0006536F0000D -S31540020FD065370000653710006537200065373000F9 -S31540020FE065374000653750006537600065377000E9 -S31540020FF065378000653790006537A0006537B000D9 -S315400210006537C0006537D0006537E0006537F000C8 -S3154002101065380000653810006538200065383000B4 -S3154002102065384000653850006538600065387000A4 -S3154002103065388000653890006538A0006538B00094 -S315400210406538C0006538D0006538E0006538F00084 -S315400210506539000065391000653920006539300070 -S315400210606539400065395000653960006539700060 -S3154002107065398000653990006539A0006539B00050 -S315400210806539C0006539D0006539E0006539F00040 -S31540021090653A0000653A1000653A2000653A30002C -S315400210A0653A4000653A5000653A6000653A70001C -S315400210B0653A8000653A9000653AA000653AB0000C -S315400210C0653AC000653AD000653AE000653AF000FC -S315400210D0653B0000653B1000653B2000653B3000E8 -S315400210E0653B4000653B5000653B6000653B7000D8 -S315400210F0653B8000653B9000653BA000653BB000C8 -S31540021100653BC000653BD000653BE000653BF000B7 -S31540021110653C0000653C1000653C2000653C3000A3 -S31540021120653C4000653C5000653C6000653C700093 -S31540021130653C8000653C9000653CA000653CB00083 -S31540021140653CC000653CD000653CE000653CF00073 -S31540021150653D0000653D1000653D2000653D30005F -S31540021160653D4000653D5000653D6000653D70004F -S31540021170653D8000653D9000653DA000653DB0003F -S31540021180653DC000653DD000653DE000653DF0002F -S31540021190653E0000653E1000653E2000653E30001B -S315400211A0653E4000653E5000653E6000653E70000B -S315400211B0653E8000653E9000653EA000653EB000FB -S315400211C0653EC000653ED000653EE000653EF000EB -S315400211D0653F0000653F1000653F2000653F3000D7 -S315400211E0653F4000653F5000653F6000653F7000C7 -S315400211F0653F8000653F9000653FA000653FB000B7 -S31540021200653FC000653FD000653FE000653FF000A6 -S315400212104200000000000000400FFFFFFFFFFFFFFB -S315400212204200000000200000420FFFFFFFFFFFFFC9 -S3154002123040000000000000004210000000080000CC -S3154002124042000000000000013EB000000000000124 -S315400212504200000000000002420F484C0137D2080B -S31540021260C20E780F256007AB41BA079B7AF94BA0AD -S315400212704201484C0137D208420E780F256007AB2F -S315400212804217E02D934BECDA420F484C0137D20815 -S31540021290C21E780F256007ABC20DA7D249883D4EC4 -S315400212A0421F484C0137D208C20E780F256007AB61 -S315400212B042100C446E87CE32C03340AB371208918F -S315400212C00000000000000000C03340AB3712089116 -S315400212D00000000000000000C29E7A0F236007A6AD -S315400212E0C29E7A0F236007A66F3F484C0137D20849 -S315400212F06E2E780F256007AB6F3F485B3D3F64B863 -S315400213006F3F484C0137D208EE2E780F256007AB67 -S315400213106F3F483CC5303F587FE2F780AB123809F1 -S315400213207FD00000000000007FEAF780AB12380948 -S31540021330002000000000000080280000000000009D -S3154002134080100000000000007FEFF780AB123809E2 -S315400213507FEFF2010203A1117FF0000000000000BE -S315400213600010000000001000801FFFFFF203A111D1 -S315400213708000000000000000001ABCD000023809BC -S31540021380801ABCD0000001110000000000000000DD -S315400213907E71000000000000416010000000000065 -S315400213A07FE11100000000000178100000000000FB -S315400213B03E880000FFF0000000120C00C073F800E7 -S315400213C0C1EFFFFFC00020003FB3C75D224F280F89 -S315400213D0C1B3C75CFAC08192A12FFF8000001FFFF4 -S315400213E03EE0000000FF0000A01FFF8001FE18073C -S315400213F041CFFFFE0000002040303FFFFFFFFFFDD0 -S3154002140042103FFEFC00000D3FD000003FEFFFFFC1 -S31540021410BFD0000010000000BFB000004FF0003FF8 -S3154002142001701000000000003E8000011A0000001A -S3154002143000000000000000007E7C0000000000006A -S31540021440416A1000010000107FF000000000000019 -S3154002145075012034056AC000FA1009091000104FC0 -S31540021460FFF00000000000000100203040030200AF -S31540021470003020340000A00B0000000000000000F5 -S315400214807FE0001010200001400000000010200AFA -S315400214907FF00000000000003FEFDFF00FFC484AFB -S315400214A0BFF80000000000007FFF000000000000BF -S315400214B07FFFE000000000007FF400000000000013 -S315400214C07FC00000000000007FF80000000000001E -S315400214D07FF0000000000000FFF000000000000066 -S315400214E0FFF0000000000000800000000000000045 -S315400214F000000000000100000000000000000000A3 +S315400200E00000000100000001BF8000000000000087 +S315400200F0BFF0000000000000800000000000000089 +S315400201000000000000000000400000000000000067 +S3154002011040080000000000004018000000000000F7 +S315400201200000000000000000000000000000000087 +S3154002013000000000000000003FF000000000000048 +S3154002014040080000000000003FF0000040000000B0 +S3154002015000000000000000003F8000004040000018 +S315400201600000000000000000000000000000000047 +S315400201700000000000000000000000000000000037 +S315400201804800000100000000480000000000000096 +S3154002019046C00000000000003FF0000000000000E2 +S315400201A0400000000000000040080000000000007F +S315400201B03F80000000000000000000000001000037 +S315400201C08000000000000000FFF000000000000078 +S315400201D0FFF00000000000007FF000000000000079 +S315400201E07FF80000000000007FC000000000000011 +S315400201F07FF40000000000007FFFE00000000000E6 +S315400202007FFF000000000000BFF800000000000071 +S315400202103FEFDFF00FFC484A7E710000000000000D +S3154002022041601000000000007FE111000000000064 +S3154002023001781000000000003E880000FFF0000038 +S3154002024000120C00C073F800C1EFFFFFC00020008F +S315400202503FB3C75D224F280FC1B3C75CFAC0819234 +S31540020260A12FFF8000001FFF3EE0000000FF0000BC +S31540020270A01FFF8001FE180741CFFFFE00000020AD +S3154002028040303FFFFFFFFFFD42103FFEFC00000DE6 +S315400202903FD000003FEFFFFFBFD00000100000003C +S315400202A0BFB000004FF0003F017010000000000098 +S315400202B03E8000011A00000000000000000000001D +S315400202C07E7C000000000000416A10000100001020 +S315400202D07FF000000000000075012034056AC0006E +S315400202E0FA1009091000104FFFF00000000000004C +S315400202F00100203040030200003020340000A00BF1 +S3154002030000000000000000007FE000101020000105 +S31540020310400000000010200A7FF0000000000000AC +S315400203204200000000000000400FFFFFFFFFFFFFFA +S315400203304200000000200000420FFFFFFFFFFFFFC8 +S3154002034040000000000000004210000000080000CB +S3154002035042000000000000013EB000000000000123 +S315400203604200000000000002420F484C0137D2080A +S31540020370C20E780F256007AB41BA079B7AF94BA0AC +S315400203804201484C0137D208420E780F256007AB2E +S315400203904217E02D934BECDA420F484C0137D20814 +S315400203A0C21E780F256007ABC20DA7D249883D4EC3 +S315400203B0421F484C0137D208C20E780F256007AB60 +S315400203C042100C446E87CE32C03340AB371208918E +S315400203D00000000000000000C03340AB3712089115 +S315400203E00000000000000000C29E7A0F236007A6AC +S315400203F0C29E7A0F236007A66F3F484C0137D20848 +S315400204006E2E780F256007AB6F3F485B3D3F64B861 +S315400204106F3F484C0137D208EE2E780F256007AB66 +S315400204206F3F483CC5303F587FE2F780AB123809F0 +S315400204307FD00000000000007FEAF780AB12380947 +S31540020440002000000000000080280000000000009C +S3154002045080100000000000007FEFF780AB123809E1 +S315400204607FEFF2010203A1117FF0000000000000BD +S315400204700010000000001000801FFFFFF203A111D0 +S315400204808000000000000000001ABCD000023809BB +S31540020490801ABCD0000001110000000000000000DC +S315400204A06530000065301000653020006530300050 +S315400204B06530400065305000653060006530700040 +S315400204C065308000653090006530A0006530B00030 +S315400204D06530C0006530D0006530E0006530F00020 +S315400204E0653100006531100065312000653130000C +S315400204F065314000653150006531600065317000FC +S3154002050065318000653190006531A0006531B000EB +S315400205106531C0006531D0006531E0006531F000DB +S3154002052065320000653210006532200065323000C7 +S3154002053065324000653250006532600065327000B7 +S3154002054065328000653290006532A0006532B000A7 +S315400205506532C0006532D0006532E0006532F00097 +S315400205606533000065331000653320006533300083 +S315400205706533400065335000653360006533700073 +S3154002058065338000653390006533A0006533B00063 +S315400205906533C0006533D0006533E0006533F00053 +S315400205A0653400006534100065342000653430003F +S315400205B0653440006534500065346000653470002F +S315400205C065348000653490006534A0006534B0001F +S315400205D06534C0006534D0006534E0006534F0000F +S315400205E065350000653510006535200065353000FB +S315400205F065354000653550006535600065357000EB +S3154002060065358000653590006535A0006535B000DA +S315400206106535C0006535D0006535E0006535F000CA +S3154002062065360000653610006536200065363000B6 +S3154002063065364000653650006536600065367000A6 +S3154002064065368000653690006536A0006536B00096 +S315400206506536C0006536D0006536E0006536F00086 +S315400206606537000065371000653720006537300072 +S315400206706537400065375000653760006537700062 +S3154002068065378000653790006537A0006537B00052 +S315400206906537C0006537D0006537E0006537F00042 +S315400206A0653800006538100065382000653830002E +S315400206B0653840006538500065386000653870001E +S315400206C065388000653890006538A0006538B0000E +S315400206D06538C0006538D0006538E0006538F000FE +S315400206E065390000653910006539200065393000EA +S315400206F065394000653950006539600065397000DA +S3154002070065398000653990006539A0006539B000C9 +S315400207106539C0006539D0006539E0006539F000B9 +S31540020720653A0000653A1000653A2000653A3000A5 +S31540020730653A4000653A5000653A6000653A700095 +S31540020740653A8000653A9000653AA000653AB00085 +S31540020750653AC000653AD000653AE000653AF00075 +S31540020760653B0000653B1000653B2000653B300061 +S31540020770653B4000653B5000653B6000653B700051 +S31540020780653B8000653B9000653BA000653BB00041 +S31540020790653BC000653BD000653BE000653BF00031 +S315400207A0653C0000653C1000653C2000653C30001D +S315400207B0653C4000653C5000653C6000653C70000D +S315400207C0653C8000653C9000653CA000653CB000FD +S315400207D0653CC000653CD000653CE000653CF000ED +S315400207E0653D0000653D1000653D2000653D3000D9 +S315400207F0653D4000653D5000653D6000653D7000C9 +S31540020800653D8000653D9000653DA000653DB000B8 +S31540020810653DC000653DD000653DE000653DF000A8 +S31540020820653E0000653E1000653E2000653E300094 +S31540020830653E4000653E5000653E6000653E700084 +S31540020840653E8000653E9000653EA000653EB00074 +S31540020850653EC000653ED000653EE000653EF00064 +S31540020860653F0000653F1000653F2000653F300050 +S31540020870653F4000653F5000653F6000653F700040 +S31540020880653F8000653F9000653FA000653FB00030 +S31540020890653FC000653FD000653FE000653FF00020 +S315400208A00BC0A4068F346C9B0BC093731C18544721 +S315400208B00BC083008E183C230BC072AE83A9704ACC +S315400208C00BC0627C9CC166FF0BC0526A7ACE64A49E +S315400208D00BC04277C0B04ADA0BC032A412B191A023 +S315400208E00BC022EF168069500BC01358732804734D +S315400208F00BC003DFD10A08480BBFE909B3B0463241 +S315400209000BBFCA8E711B8E880BBFAC4D32D41430CE +S315400209100BBF8E4553D34B1B0BBF7076318237EFDD +S315400209200BBF52DF2BADF99C0BBF357FA47C936C7A +S315400209300BBF18570061F5EB0BBEFB64A6154515B8 +S315400209400BBEDEA7FE865A2B0BBEC22074D37FBCDB +S315400209500BBEA5CD763F66690BBE89AE722750F0B7 +S315400209600BBE6DC2D9F976230BBE520A212B976C68 +S315400209700BBE3683BD31CAA20BBE1B2F257575CA67 +S315400209800BBE000BD34C7BAF0BBDE51941F097FE76 +S315400209900BBDCA56EE76E9D00BBDAFC457C7AB7393 +S315400209A00BBD9560FE9616690BBD7B2C655872751C +S315400209B00BBD612610404EC00BBD474D8532E40942 +S315400209C00BBD2DA24BC19EDF0BBD1423ED22D101DF +S315400209D00BBCFAD1F42A88E40BBCE1ABED438E8022 +S315400209E00BBCC8B1666884820BBCAFE1EF1D2D011A +S315400209F00BBC973D1867D0EF0BBC7EC274CAC96266 +S31540020A000BBC6671983E29FE0BBC4E4A18298BA92F +S31540020A100BBC364B8B5DF6DB0BBC1E758A0FECBFEF +S31540020A200BBC06C7ADD18E7E0BBBEF41918CE1F676 +S31540020A300BBBD7E2D17E33360BBBC0AB0B2E921B20 +S31540020A400BBBA999DD6E6B650BBB92AEE8503CA71A +S31540020A500BBB7BE9CD2362720BBB654A2E6F002C22 +S31540020A600BBB4ECFAFED00FE0BBB3879F685313F5F +S31540020A700BBB2248A8486FDE0BBB0C3B6C6BF73BAB +S31540020A800BBAF651EB44BCEE0BBAE08BCE42E7F121 +S31540020A900BBACAE8BFED5CC00BBAB5686BDD5EDD6A +S31540020AA00BBAA00A7EBA475E0BBA8ACEA6354FEB80 +S31540020AB00BBA75B4910571DB0BBA60BBEEE358EF26 +S31540020AC00BBA4BE4708569410BBA372DC79BD7FEEB +S31540020AD00BBA2297A6CCD68C0BBA0E21C1B0CFA0A8 +S31540020AE00BB9F9CBCCCEB6050BB9E5957D98648B9F +S31540020AF00BB9D17E8A670EE70BB9BD86AA77C310BA +S31540020B000BB9A9AD95E7FAC40BB995F305B23CE525 +S31540020B100BB98256B3AACE570BB96ED85A7C720617 +S31540020B200BB95B77B5A537C80BB94834817359CC35 +S31540020B300BB9350E7B02284D0BB922056037032EC1 +S31540020B400BB90F18EFBE614A0BB8FC48E908E5221B +S31540020B500BB8E9950C487EA90BB8D6FD1A6D99E8F3 +S31540020B600BB8C480D5245A340BB8B21FFED1E1BCAF +S31540020B700BB89FDA5A91A5260BB88DAFAC32CB0A89 +S31540020B800BB87B9FB83596F60BB869AA43C8DFE126 +S31540020B900BB857CF14C791B50BB8460DF1B639C647 +S31540020BA00BB83466A1C09DF90BB822D8ECB75E6E7D +S31540020BB00BB811649B0DA16B0BB8000975D6C959C8 +S31540020BC00BB7EEC746C434A50BB7DD9DD8230752F3 +S31540020BD00BB7CC8CF4D9FE010BB7BB9468674A506D +S31540020BE00BB7AAB3FEDE78540BB799EB84E65D0CDD +S31540020BF00BB7893AC7B70D960BB778A19517DF01A0 +S31540020C000BB7681FBB5D6E910BB757B50967B24C00 +S31540020C100BB747614EA011A20BB737245AF7861479 +S31540020C200BB726FDFEE4C3A00BB716EE0B6268E8CF +S31540020C300BB706F451ED36CE0BB6F710A4824F80B1 +S31540020C400BB6E742D59D7CB40BB6D78AB8377D0E34 +S31540020C500BB6C7E81FC458720BB6B85AE031BB325E +S31540020C600BB6A8E2CDE557F90BB6997FBDBB504509 +S31540020C700BB68A318504A35C0BB67AF7F985A39B3A +S31540020C800BB66BD2F17471FF0BB65CC243777FCE63 +S31540020C900BB64DC5C6A416420BB63EDD527CE411D8 +S31540020CA00BB63008BEF090CF0BB62147E45855EB51 +S31540020CB00BB6129A9B769D520BB60400BD75A5845F +S31540020CC00BB5F57A23E62B070BB5E706A8BE172C1C +S31540020CD00BB5D8A6265733FF0BB5CA58776DE54BE9 +S31540020CE00BB5BC1D771FE6AB0BB5ADF500EB0E7829 +S31540020CF00BB59FDEF0AC15940BB591DB229D63F2EA +S31540020D000BB583E97355E1C10BB57609BFC7CD3241 +S31540020D100BB5683BE53F94B80BB55A7FC162B5B691 +S31540020D200BB54CD5322E9F7F0BB53F3C15F79AA19A +S31540020D300BB531B44B67B45A0BB5243DB17DAE30D9 +S31540020D400BB516D8278BF18F0BB509838D3787677D +S31540020D500BB4FC3FC27713AE0BB4EF0CA791D4BBD6 +S31540020D600BB4E1EA1D1EA6680BB4D4D8040308E509 +S31540020D700BB4C7D63D722B370BB4BAE4AAEBF9488B +S31540020D800BB4AE032E3C2D7E0BB4A131A97965C9B5 +S31540020D900BB4946FFF043C1C0BB487BE11866236BB +S31540020DA00BB47B1BC3F1C0BF0BB46E88F97F999B12 +S31540020DB00BB4620595AFAD730BB455917C47645441 +S31540020DC00BB4492C9150F96C0BB43CD6B91AA9C84C +S31540020DD00BB4308FD835E60B0BB42457D37687162F +S31540020DE00BB4182E8FF205900BB40C13F2FEB43BE3 +S31540020DF00BB40007E232FD1F0BB3F40A4364A1674A +S31540020E000BB3E81AFCA7FBF00BB3DC39F44F468A66 +S31540020E100BB3D06710E9E1C30BB3C4A239439F4F6A +S31540020E200BB3B8EB54640EF10BB3AD42498DCDDF33 +S31540020E300BB3A1A7003DD89B0BB39619602ADF2BB3 +S31540020E400BB38A9951449BB80BB37F26BBB32B791C +S31540020E500BB373C187D669EA0BB368699E454E44A4 +S31540020E600BB35D1EE7CD4B2D0BB351E14D71B098DF +S31540020E700BB346B0B86B0FC30BB33B8D1226A15AC8 +S31540020E800BB330764445ADAC0BB3256C389CF6EBD0 +S31540020E900BB31A6ED934256E0BB30F7E104535F55A +S31540020EA00BB30499C83BE9D60BB2F9C1EBB539236A +S31540020EB00BB2EEF6657EC6AA0BB2E437209655D53E +S31540020EC00BB2D984082942630BB2CEDD0793F9E708 +S31540020ED00BB2C4420A6177190BB2B9B2FC4ABEDA06 +S31540020EE00BB2AF2FC9365EFF0BB2A4B85D37EEC167 +S31540020EF00BB29A4CA48F90E30BB28FEC8BA9777905 +S31540020F000BB28597FF1D694D0BB27B4EEBAE48DDAA +S31540020F100BB271113E499CEE0BB266DEE4071AA88B +S31540020F200BB25CB7CA2831380BB2529BDE1796F722 +S31540020F300BB2488B0D68D8030BB23E8545D7E65AAD +S31540020F400BB2348A7548AB540BB22A9A89C69A9721 +S31540020F500BB220B5718446610BB216DB1ADAF53F45 +S31540020F600BB20D0B744A39100BB203466C77876C81 +S31540020F700BB1F98BF22DD3490BB1EFDBF45D27FFB1 +S31540020F800BB1E636621A457E0BB1DC9B2A9E3DD5F5 +S31540020F900BB1D30A3D4613EE0BB1C98389925B81ED +S31540020FA00BB1C006FF26DA3F0BB1B6948DCA2A288A +S31540020FB00BB1AD2C25655D0F0BB1A3CDB603A13D9B +S31540020FC00BB19A792FD1E7410BB1912E831E88D26C +S31540020FD00BB187EDA058F0D60BB17EB678114473AB +S31540020FE00BB17588FAF80D3A0BB16C6519DDE45D03 +S31540020FF00BB1634AC5B31EEF0BB15A39EF877B2853 +S315400210000BB151328889CEAE0BB148348207B5DB7B +S315400210100BB13F3FCD6D43FF0BB136545C44B49A9E +S315400210200BB12D7220361D870BB124990B07221B5B +S315400210300BB11BC90E9AA72D0BB113021CF0880FD8 +S315400210400BB10A4428254C650BB1018F2271DEE5AE +S315400210500BB0F8E2FE2B44F40BB0F03FADC257237F +S315400210600BB0E7A523C37A850BB0DF1352D65AD904 +S315400210700BB0D68A2DBDA58C0BB0CE09A756C58915 +S315400210800BB0C591B2999FDB0BB0BD224298511568 +S315400210900BB0B4BB4A7EEB870BB0AC5CBD93363625 +S315400210A0529000000000000052900FF807F60DEB38 +S315400210B052901FE03F61BAD052902FB8D4E30F4806 +S315400210C052903F81F636B80C52904F3BD03C0A6460 +S315400210D052905EE68EFAD48B52906E825DA8FC2BBD +S315400210E052907E0F66AFED0752908D8DD3B1D9AA3D +S315400210F052909CFDCD8ED0095290AC5F7C69A3C8BC +S315400211005290BBB307ACAFDB5290CAF8960E710D44 +S315400211105290DA304D95FB065290E95A539F492C2C +S315400211205290F876CCDF6CD952910785DD689A29C0 +S3154002113052911687A8AE14A35291257C5187FD0978 +S3154002114052913463FA37014E5291433EC467EFFBE4 +S315400211505291520CD1372FEB529160CE41341D74CD +S3154002116052916F8334644DF952917E2BCA46BAB975 +S3154002117052918CC821D6D3E352919B58598F7C9F6A +S315400211805291A9DC8F6DF1045291B854E0F496A0C5 +S315400211905291C6C16B2DB8705291D5224AAE2EE1FC +S315400211A05291E3779B97F4A85291F1C1799CA8FF9B +S315400211B0529200000000000052920E33499A21A931 +S315400211C052921C5B70D9F82452922A788FC76DE5E9 +S315400211D05292388AC0059C28529246921AD4EA49BB +S315400211E05292548EB9151E8552926280B3476096CA +S315400211F05292706821902E9A52927E451BB944C3F0 +S3154002120052928C17B9337834529299E011188575F7 +S315400212105292A79E3A2CD2E65292B5524AE1278E74 +S315400212205292C2FC595456A75292D09C7B54E03EED +S315400212305292DE32C66287415292EBBF4FAFDD4BCE +S315400212405292F9422C23C47E529306BB705AE7C38C +S315400212505293142B30A929AB52932191811B0A41F7 +S3154002126052932EEE7577041652933C42213EE0C9C4 +S315400212705293498C97B10540529356CDEBC9B5E28C +S31540021280529364063044530652937135779C8DCB04 +S3154002129052937E5BD40F95A152938B79579D3EAB69 +S315400212A05293988E1409212E5293A59A1ADBB2575D +S315400212B05293B29D7D6356625293BF984CB56C77FA +S315400212C05293CC8A99AF54535293D97474F76DF2B0 +S315400212D05293E655EEFE13675293F32F17FE8D0493 +S315400212E0529400000000000052940CC8B6D657C271 +S315400212F0529419894C2329F052942641CF5695721D +S31540021300529432F24FB01C7A52943F9ADC3F79CED5 +S3154002131052944C3B83E57153529458D455549C1A7B +S31540021320529465655F122FF6529471EEAF76C2C63D +S3154002133052947E7054AF098952948AEA5CBC935F98 +S315400213405294975CD57680885294A3C7CC8A358AC4 +S315400213505294B02B4F7C0A885294BC876BA7F6EC0A +S315400213605294C8DC2E4239805294D529A457FCFCAB +S315400213705294E16FDACFF9375294EDAEDE6B10FE3E +S315400213805294F9E6BBC4ECB3529506177F5491BB0F +S3154002139052951241356CF6E052951E63EA3D95B080 +S315400213A052952A7FA9D2F8EA529536948017481068 +S315400213B0529542A278D2D03652954EA99FAC8A0F08 +S315400213C052955AAA002A9D5A529566A3A5B2E1B1F0 +S315400213D0529572969B8B5CD852957E82ECDABE8D84 +S315400213E052958A68A4A8D9F352959647CDDF1CA593 +S315400213F05295A220734903775295ADF29F948CFB86 +S315400214005295B9BE5D52A9DA5295C583B6F7AB037A +S315400214105295D142B6DBADC55295DCFB673B05DF43 +S315400214205295E8ADD236A58F5295F45A01D483B47B +S31540021430529600000000000052960B9FD68A4554F1 +S31540021440529617398F2AAA48529622CD337F0FE8F1 +S3154002145052962E5ACD0C3EBE529639E2653E421BFC +S31540021460529645640568C1C3529650DFB6C759F4D1 +S3154002147052965C55827DF1D2529667C57199104B50 +S315400214805296732F8D0E2F7752967E93DDBC0E7336 +S31540021490529689F26C6B01D05296954B41CD42934E +S315400214A000000000000000000000000000000000F4 +S315400214B000000000000000000000000000000000E4 +S315400214C000000000000000000000000000000000D4 +S315400214D000000000000000000000000000000000C4 +S315400214E000000000000000000000000000000000B4 +S315400214F000000000000000000000000000000000A4 S315400215000000000000000000000000000000000093 S315400215100000000000000000000000000000000083 S315400215200000000000000000000000000000000073 @@ -9387,8 +9502,8 @@ S31540027FC00000000000000000000000000000000069 S31540027FD00000000000000000000000000000000059 S31540027FE00000000000000000000000000000000049 S31540027FF00000000000000000000000000000000039 -S315400280000000003F0000000C0000003F000000128C -S31540028010000000FF00000018000000000000000001 +S315400280000000000000000000000000000000000028 +S315400280100000000000000000000000000000000018 S315400280200000000000000000000000000000000008 S3154002803000000000000000000000000000000000F8 S3154002804000000000000000000000000000000000E8 @@ -16299,8 +16414,8 @@ S31540042FC000000000000000000000000000000000B7 S31540042FD000000000000000000000000000000000A7 S31540042FE00000000000000000000000000000000097 S31540042FF00000000000000000000000000000000087 -S315400430000000000000000000000000000000000076 -S315400430100000000000000000000000000000000066 +S3154004300000000018000000FF000000120000003F0E +S315400430100000000C0000003F00000000000000001B S315400430200000000000000000000000000000000056 S315400430300000000000000000000000000000000046 S315400430400000000000000000000000000000000036 @@ -17579,125 +17694,125 @@ S31540047FC00000000000000000000000000000000067 S31540047FD00000000000000000000000000000000057 S31540047FE00000000000000000000000000000000047 S31540047FF00000000000000000000000000000000037 -S315400480000000000000000000000000000000000026 -S315400480100000000000000000000000000000000016 -S315400480200000000000000000000000000000000006 -S3154004803000000000000000000000000000000000F6 -S3154004804000000000000000000000000000000000E6 -S3154004805000000000000000000000000000000000D6 -S3154004806000000000000000000000000000000000C6 -S3154004807000000000000000000000000000000000B6 -S3154004808000000000000000000000000000000000A6 -S315400480900000000000000000000000000000000096 -S315400480A00000000000000000000000000000000086 -S315400480B00000000000000000000000000000000076 -S315400480C00000000000000000000000000000000066 -S315400480D00000000000000000000000000000000056 -S315400480E00000000000000000000000000000000046 -S315400480F00000000000000000000000000000000036 -S315400481000000000000000000000000000000000025 -S315400481100000000000000000000000000000000015 -S315400481200000000000000000000000000000000005 -S3154004813000000000000000000000000000000000F5 -S3154004814000000000000000000000000000000000E5 -S3154004815000000000000000000000000000000000D5 -S3154004816000000000000000000000000000000000C5 -S3154004817000000000000000000000000000000000B5 -S3154004818000000000000000000000000000000000A5 -S315400481900000000000000000000000000000000095 -S315400481A00000000000000000000000000000000085 -S315400481B00000000000000000000000000000000075 -S315400481C00000000000000000000000000000000065 -S315400481D00000000000000000000000000000000055 -S315400481E00000000000000000000000000000000045 +S31540048000000000020000000300000000000000031E +S31540048010FFFFFFFEFFFFFFFF00000002FFFFFFFD23 +S315400480200000000000000000000000010000000005 +S3154004803000000000FFFFFFFF0000000000000001F9 +S31540048040FFFFFFFFFFFFFFFFFFFFFFFF00000001F1 +S31540048050FFFFFFFFFFFFFFFE0000000300000000DC +S31540048060FFFFFFFEFFFFFFFD0000000000000009C8 +S315400480700000000700000001FFFFFFF700000002B8 +S31540048080FFFFFFFCFFFFFFF800000002FFFFFFFCBD +S31540048090FFFFFFF8FFFFFFFC00000002000000089E +S315400480A0FFFFFFFCFFFFFFFEFFFFFFF8FFFFFFF8A8 +S315400480B000000001FFFFFFF8FFFFFFF7000000008C +S315400480C00000000B00000002000000050000002F25 +S315400480D0000000020000001700003039000002A72B +S315400480E000000012FFFF076C0000004DFFFFFCC6B6 +S315400480F000003039FFFFFD59FFFFFFEEFFFF076C1D +S31540048100FFFFFFB30000033A00000091FFFFE84180 +S3154004811000000000FFFFFD84FFFED02F000000009A +S315400481200000F6FA006E49810000000000000000DD +S3154004813000000000000000000000000200000003F0 +S3154004814000000000000000000000000100000000E4 +S31540048150FFFFFFFE0000000355555554FFFFFFFE89 +S315400481600000000355555554700FFFFE00000007EC +S315400481701002492400000000000000000000000036 +S315400481800000000200000003000000060000000298 +S31540048190FFFFFFFDFFFFFFFA0000000000000001A3 +S315400481A00000000000000000FFFFFFFF0000000089 +S315400481B000000001FFFFFFFFFFFFFFFFFFFFFFFF80 +S315400481C000000001FFFFFFFFFFFFFFFE000000036A +S315400481D0FFFFFFFAFFFFFFFEFFFFFFFD0000000663 +S315400481E0000000000000000000000009FFFFF0004E S315400481F00000000000000000000000000000000035 -S315400482000000000000000000000000000000000024 +S31540048200000000000000000100000002000000031E S315400482100000000000000000000000000000000014 -S315400482200000000000000000000000000000000004 -S3154004823000000000000000000000000000000000F4 -S3154004824000000000000000000000000000000000E4 -S3154004825000000000000000000000000000000000D4 -S3154004826000000000000000000000000000000000C4 -S3154004827000000000000000000000000000000000B4 -S3154004828000000000000000000000000000000000A4 -S315400482900000000000000000000000000000000094 -S315400482A00000000000000000000000000000000084 -S315400482B00000000000000000000000000000000074 -S315400482C00000000000000000000000000000000064 -S315400482D00000000000000000000000000000000054 -S315400482E00000000000000000000000000000000044 -S315400482F00000000000000000000000000000000034 -S315400483000000000000000000000000000000000023 -S315400483100000000000000000000000000000000013 -S315400483200000000000000000000000000000000003 -S3154004833000000000000000000000000000000000F3 -S3154004834000000000000000000000000000000000E3 -S3154004835000000000000000000000000000000000D3 -S3154004836000000000000000000000000000000000C3 -S3154004837000000000000000000000000000000000B3 -S3154004838000000000000000000000000000000000A3 -S315400483900000000000000000000000000000000093 -S315400483A00000000000000000000000000000000083 -S315400483B00000000000000000000000000000000073 -S315400483C00000000000000000000000000000000063 -S315400483D00000000000000000000000000000000053 -S315400483E00000000000000000000000000000000043 -S315400483F00000000000000000000000000000000033 -S315400484000000000000000000000000000000000022 -S315400484100000000000000000000000000000000012 -S315400484200000000000000000000000000000000002 -S3154004843000000000000000000000000000000000F2 -S3154004844000000000000000000000000000000000E2 -S3154004845000000000000000000000000000000000D2 -S3154004846000000000000000000000000000000000C2 -S3154004847000000000000000000000000000000000B2 -S3154004848000000000000000000000000000000000A2 -S315400484900000000000000000000000000000000092 -S315400484A00000000000000000000000000000000082 -S315400484B00000000000000000000000000000000072 -S315400484C00000000000000000000000000000000062 -S315400484D00000000000000000000000000000000052 -S315400484E00000000000000000000000000000000042 -S315400484F00000000000000000000000000000000032 -S315400485000000000000000000000000000000000021 -S315400485100000000000000000000000000000000011 -S315400485200000000000000000000000000000000001 -S3154004853000000000000000000000000000000000F1 -S3154004854000000000000000000000000000000000E1 -S3154004855000000000000000000000000000000000D1 -S3154004856000000000000000000000000000000000C1 -S3154004857000000000000000000000000000000000B1 -S3154004858000000000000000000000000000000000A1 -S315400485900000000000000000000000000000000091 -S315400485A00000000000000000000000000000000081 -S315400485B00000000000000000000000000000000071 -S315400485C00000000000000000000000000000000061 -S315400485D00000000000000000000000000000000051 -S315400485E00000000000000000000000000000000041 -S315400485F00000000000000000000000000000000031 -S315400486000000000000000000000000000000000020 -S315400486100000000000000000000000000000000010 -S315400486200000000000000000000000000000000000 -S3154004863000000000000000000000000000000000F0 -S3154004864000000000000000000000000000000000E0 +S315400482200000000000000000400482204004822038 +S31540048230400482284004822840048230400482302C +S3154004824040048238400482384004824040048240DC +S31540048250400482484004824840048250400482508C +S31540048260400482584004825840048260400482603C +S3154004827040048268400482684004827040048270EC +S31540048280400482784004827840048280400482809C +S31540048290400482884004828840048290400482904C +S315400482A04004829840048298400482A0400482A0FC +S315400482B0400482A8400482A8400482B0400482B0AC +S315400482C0400482B8400482B8400482C0400482C05C +S315400482D0400482C8400482C8400482D0400482D00C +S315400482E0400482D8400482D8400482E0400482E0BC +S315400482F0400482E8400482E8400482F0400482F06C +S31540048300400482F8400482F8400483004004830019 +S3154004831040048308400483084004831040048310C7 +S315400483204004831840048318400483204004832077 +S315400483304004832840048328400483304004833027 +S3154004834040048338400483384004834040048340D7 +S315400483504004834840048348400483504004835087 +S315400483604004835840048358400483604004836037 +S3154004837040048368400483684004837040048370E7 +S315400483804004837840048378400483804004838097 +S315400483904004838840048388400483904004839047 +S315400483A04004839840048398400483A0400483A0F7 +S315400483B0400483A8400483A8400483B0400483B0A7 +S315400483C0400483B8400483B8400483C0400483C057 +S315400483D0400483C8400483C8400483D0400483D007 +S315400483E0400483D8400483D8400483E0400483E0B7 +S315400483F0400483E8400483E8400483F0400483F067 +S31540048400400483F8400483F8400484004004840014 +S3154004841040048408400484084004841040048410C2 +S315400484204004841840048418400484204004842072 +S315400484304004842840048428400484304004843022 +S3154004844040048438400484384004844040048440D2 +S315400484504004844840048448400484504004845082 +S315400484604004845840048458400484604004846032 +S3154004847040048468400484684004847040048470E2 +S315400484804004847840048478400484804004848092 +S315400484904004848840048488400484904004849042 +S315400484A04004849840048498400484A0400484A0F2 +S315400484B0400484A8400484A8400484B0400484B0A2 +S315400484C0400484B8400484B8400484C0400484C052 +S315400484D0400484C8400484C8400484D0400484D002 +S315400484E0400484D8400484D8400484E0400484E0B2 +S315400484F0400484E8400484E8400484F0400484F062 +S31540048500400484F8400484F840048500400485000F +S3154004851040048508400485084004851040048510BD +S31540048520400485184004851840048520400485206D +S31540048530400485284004852840048530400485301D +S3154004854040048538400485384004854040048540CD +S31540048550400485484004854840048550400485507D +S31540048560400485584004855840048560400485602D +S3154004857040048568400485684004857040048570DD +S31540048580400485784004857840048580400485808D +S31540048590400485884004858840048590400485903D +S315400485A04004859840048598400485A0400485A0ED +S315400485B0400485A8400485A8400485B0400485B09D +S315400485C0400485B8400485B8400485C0400485C04D +S315400485D0400485C8400485C8400485D0400485D0FD +S315400485E0400485D8400485D8400485E0400485E0AD +S315400485F0400485E8400485E8400485F0400485F05D +S31540048600400485F8400485F840048600400486000A +S3154004861040048608400486084004861040048610B8 +S31540048620400486184004861800020000FFFFFFFF3E +S3154004863000000000400486300000000000000000F6 +S3154004864000000000000000020000000000000000DE S3154004865000000000000000000000000000000000D0 S3154004866000000000000000000000000000000000C0 S3154004867000000000000000000000000000000000B0 S3154004868000000000000000000000000000000000A0 S315400486900000000000000000000000000000000090 -S315400486A00000000000000000000000000000000080 -S315400486B00000000000000000000000000000000070 +S315400486A00000000000000000400486B00000000006 +S315400486B0000000004004899C40048A6840048B34CE S315400486C00000000000000000000000000000000060 S315400486D00000000000000000000000000000000050 -S315400486E00000000000000000000000000000000040 +S315400486E0000000004001D1B8000000000000000076 S315400486F00000000000000000000000000000000030 S31540048700000000000000000000000000000000001F S31540048710000000000000000000000000000000000F S3154004872000000000000000000000000000000000FF S3154004873000000000000000000000000000000000EF S3154004874000000000000000000000000000000000DF -S3154004875000000000000000000000000000000000CF -S3154004876000000000000000000000000000000000BF +S3154004875000000000000000000000000000000001CE +S31540048760330EABCD1234E66DDEEC0005000B000093 S3154004877000000000000000000000000000000000AF S31540048780000000000000000000000000000000009F S31540048790000000000000000000000000000000008F @@ -17774,2055 +17889,7 @@ S31540048BF0000000000000000000000000000000002B S31540048C00000000000000000000000000000000001A S31540048C10000000000000000000000000000000000A S31540048C2000000000000000000000000000000000FA -S31540048C3000000000000000000000000000000000EA -S31540048C4000000000000000000000000000000000DA -S31540048C5000000000000000000000000000000000CA -S31540048C6000000000000000000000000000000000BA -S31540048C7000000000000000000000000000000000AA -S31540048C80000000000000000000000000000000009A -S31540048C90000000000000000000000000000000008A -S31540048CA0000000000000000000000000000000007A -S31540048CB0000000000000000000000000000000006A -S31540048CC0000000000000000000000000000000005A -S31540048CD0000000000000000000000000000000004A -S31540048CE0000000000000000000000000000000003A -S31540048CF0000000000000000000000000000000002A -S31540048D000000000000000000000000000000000019 -S31540048D100000000000000000000000000000000009 -S31540048D2000000000000000000000000000000000F9 -S31540048D3000000000000000000000000000000000E9 -S31540048D4000000000000000000000000000000000D9 -S31540048D5000000000000000000000000000000000C9 -S31540048D6000000000000000000000000000000000B9 -S31540048D7000000000000000000000000000000000A9 -S31540048D800000000000000000000000000000000099 -S31540048D900000000000000000000000000000000089 -S31540048DA00000000000000000000000000000000079 -S31540048DB00000000000000000000000000000000069 -S31540048DC00000000000000000000000000000000059 -S31540048DD00000000000000000000000000000000049 -S31540048DE00000000000000000000000000000000039 -S31540048DF00000000000000000000000000000000029 -S31540048E000000000000000000000000000000000018 -S31540048E100000000000000000000000000000000008 -S31540048E2000000000000000000000000000000000F8 -S31540048E3000000000000000000000000000000000E8 -S31540048E4000000000000000000000000000000000D8 -S31540048E5000000000000000000000000000000000C8 -S31540048E6000000000000000000000000000000000B8 -S31540048E7000000000000000000000000000000000A8 -S31540048E800000000000000000000000000000000098 -S31540048E900000000000000000000000000000000088 -S31540048EA00000000000000000000000000000000078 -S31540048EB00000000000000000000000000000000068 -S31540048EC00000000000000000000000000000000058 -S31540048ED00000000000000000000000000000000048 -S31540048EE00000000000000000000000000000000038 -S31540048EF00000000000000000000000000000000028 -S31540048F000000000000000000000000000000000017 -S31540048F100000000000000000000000000000000007 -S31540048F2000000000000000000000000000000000F7 -S31540048F3000000000000000000000000000000000E7 -S31540048F4000000000000000000000000000000000D7 -S31540048F5000000000000000000000000000000000C7 -S31540048F6000000000000000000000000000000000B7 -S31540048F7000000000000000000000000000000000A7 -S31540048F800000000000000000000000000000000097 -S31540048F900000000000000000000000000000000087 -S31540048FA00000000000000000000000000000000077 -S31540048FB00000000000000000000000000000000067 -S31540048FC00000000000000000000000000000000057 -S31540048FD00000000000000000000000000000000047 -S31540048FE00000000000000000000000000000000037 -S31540048FF00000000000000000000000000000000027 -S315400490000000000000000000000000000000000016 -S315400490100000000000000000000000000000000006 -S3154004902000000000000000000000000000000000F6 -S3154004903000000000000000000000000000000000E6 -S3154004904000000000000000000000000000000000D6 -S3154004905000000000000000000000000000000000C6 -S3154004906000000000000000000000000000000000B6 -S3154004907000000000000000000000000000000000A6 -S315400490800000000000000000000000000000000096 -S315400490900000000000000000000000000000000086 -S315400490A00000000000000000000000000000000076 -S315400490B00000000000000000000000000000000066 -S315400490C00000000000000000000000000000000056 -S315400490D00000000000000000000000000000000046 -S315400490E00000000000000000000000000000000036 -S315400490F00000000000000000000000000000000026 -S315400491000000000000000000000000000000000015 -S315400491100000000000000000000000000000000005 -S3154004912000000000000000000000000000000000F5 -S3154004913000000000000000000000000000000000E5 -S3154004914000000000000000000000000000000000D5 -S3154004915000000000000000000000000000000000C5 -S3154004916000000000000000000000000000000000B5 -S3154004917000000000000000000000000000000000A5 -S315400491800000000000000000000000000000000095 -S315400491900000000000000000000000000000000085 -S315400491A00000000000000000000000000000000075 -S315400491B00000000000000000000000000000000065 -S315400491C00000000000000000000000000000000055 -S315400491D00000000000000000000000000000000045 -S315400491E00000000000000000000000000000000035 -S315400491F00000000000000000000000000000000025 -S315400492000000000000000000000000000000000014 -S315400492100000000000000000000000000000000004 -S3154004922000000000000000000000000000000000F4 -S3154004923000000000000000000000000000000000E4 -S3154004924000000000000000000000000000000000D4 -S3154004925000000000000000000000000000000000C4 -S3154004926000000000000000000000000000000000B4 -S3154004927000000000000000000000000000000000A4 -S315400492800000000000000000000000000000000094 -S315400492900000000000000000000000000000000084 -S315400492A00000000000000000000000000000000074 -S315400492B00000000000000000000000000000000064 -S315400492C00000000000000000000000000000000054 -S315400492D00000000000000000000000000000000044 -S315400492E00000000000000000000000000000000034 -S315400492F00000000000000000000000000000000024 -S315400493000000000000000000000000000000000013 -S315400493100000000000000000000000000000000003 -S3154004932000000000000000000000000000000000F3 -S3154004933000000000000000000000000000000000E3 -S3154004934000000000000000000000000000000000D3 -S3154004935000000000000000000000000000000000C3 -S3154004936000000000000000000000000000000000B3 -S3154004937000000000000000000000000000000000A3 -S315400493800000000000000000000000000000000093 -S315400493900000000000000000000000000000000083 -S315400493A00000000000000000000000000000000073 -S315400493B00000000000000000000000000000000063 -S315400493C00000000000000000000000000000000053 -S315400493D00000000000000000000000000000000043 -S315400493E00000000000000000000000000000000033 -S315400493F00000000000000000000000000000000023 -S315400494000000000000000000000000000000000012 -S315400494100000000000000000000000000000000002 -S3154004942000000000000000000000000000000000F2 -S3154004943000000000000000000000000000000000E2 -S3154004944000000000000000000000000000000000D2 -S3154004945000000000000000000000000000000000C2 -S3154004946000000000000000000000000000000000B2 -S3154004947000000000000000000000000000000000A2 -S315400494800000000000000000000000000000000092 -S315400494900000000000000000000000000000000082 -S315400494A00000000000000000000000000000000072 -S315400494B00000000000000000000000000000000062 -S315400494C00000000000000000000000000000000052 -S315400494D00000000000000000000000000000000042 -S315400494E00000000000000000000000000000000032 -S315400494F00000000000000000000000000000000022 -S315400495000000000000000000000000000000000011 -S315400495100000000000000000000000000000000001 -S3154004952000000000000000000000000000000000F1 -S3154004953000000000000000000000000000000000E1 -S3154004954000000000000000000000000000000000D1 -S3154004955000000000000000000000000000000000C1 -S3154004956000000000000000000000000000000000B1 -S3154004957000000000000000000000000000000000A1 -S315400495800000000000000000000000000000000091 -S315400495900000000000000000000000000000000081 -S315400495A00000000000000000000000000000000071 -S315400495B00000000000000000000000000000000061 -S315400495C00000000000000000000000000000000051 -S315400495D00000000000000000000000000000000041 -S315400495E00000000000000000000000000000000031 -S315400495F00000000000000000000000000000000021 -S315400496000000000000000000000000000000000010 -S315400496100000000000000000000000000000000000 -S3154004962000000000000000000000000000000000F0 -S3154004963000000000000000000000000000000000E0 -S3154004964000000000000000000000000000000000D0 -S3154004965000000000000000000000000000000000C0 -S3154004966000000000000000000000000000000000B0 -S3154004967000000000000000000000000000000000A0 -S315400496800000000000000000000000000000000090 -S315400496900000000000000000000000000000000080 -S315400496A00000000000000000000000000000000070 -S315400496B00000000000000000000000000000000060 -S315400496C00000000000000000000000000000000050 -S315400496D00000000000000000000000000000000040 -S315400496E00000000000000000000000000000000030 -S315400496F00000000000000000000000000000000020 -S31540049700000000000000000000000000000000000F -S3154004971000000000000000000000000000000000FF -S3154004972000000000000000000000000000000000EF -S3154004973000000000000000000000000000000000DF -S3154004974000000000000000000000000000000000CF -S3154004975000000000000000000000000000000000BF -S3154004976000000000000000000000000000000000AF -S31540049770000000000000000000000000000000009F -S31540049780000000000000000000000000000000008F -S31540049790000000000000000000000000000000007F -S315400497A0000000000000000000000000000000006F -S315400497B0000000000000000000000000000000005F -S315400497C0000000000000000000000000000000004F -S315400497D0000000000000000000000000000000003F -S315400497E0000000000000000000000000000000002F -S315400497F0000000000000000000000000000000001F -S31540049800000000000000000000000000000000000E -S3154004981000000000000000000000000000000000FE -S3154004982000000000000000000000000000000000EE -S3154004983000000000000000000000000000000000DE -S3154004984000000000000000000000000000000000CE -S3154004985000000000000000000000000000000000BE -S3154004986000000000000000000000000000000000AE -S31540049870000000000000000000000000000000009E -S31540049880000000000000000000000000000000008E -S31540049890000000000000000000000000000000007E -S315400498A0000000000000000000000000000000006E -S315400498B0000000000000000000000000000000005E -S315400498C0000000000000000000000000000000004E -S315400498D0000000000000000000000000000000003E -S315400498E0000000000000000000000000000000002E -S315400498F0000000000000000000000000000000001E -S31540049900000000000000000000000000000000000D -S3154004991000000000000000000000000000000000FD -S3154004992000000000000000000000000000000000ED -S3154004993000000000000000000000000000000000DD -S3154004994000000000000000000000000000000000CD -S3154004995000000000000000000000000000000000BD -S3154004996000000000000000000000000000000000AD -S31540049970000000000000000000000000000000009D -S31540049980000000000000000000000000000000008D -S31540049990000000000000000000000000000000007D -S315400499A0000000000000000000000000000000006D -S315400499B0000000000000000000000000000000005D -S315400499C0000000000000000000000000000000004D -S315400499D0000000000000000000000000000000003D -S315400499E0000000000000000000000000000000002D -S315400499F0000000000000000000000000000000001D -S31540049A00000000000000000000000000000000000C -S31540049A1000000000000000000000000000000000FC -S31540049A2000000000000000000000000000000000EC -S31540049A3000000000000000000000000000000000DC -S31540049A4000000000000000000000000000000000CC -S31540049A5000000000000000000000000000000000BC -S31540049A6000000000000000000000000000000000AC -S31540049A70000000000000000000000000000000009C -S31540049A80000000000000000000000000000000008C -S31540049A90000000000000000000000000000000007C -S31540049AA0000000000000000000000000000000006C -S31540049AB0000000000000000000000000000000005C -S31540049AC0000000000000000000000000000000004C -S31540049AD0000000000000000000000000000000003C -S31540049AE0000000000000000000000000000000002C -S31540049AF0000000000000000000000000000000001C -S31540049B00000000000000000000000000000000000B -S31540049B1000000000000000000000000000000000FB -S31540049B2000000000000000000000000000000000EB -S31540049B3000000000000000000000000000000000DB -S31540049B4000000000000000000000000000000000CB -S31540049B5000000000000000000000000000000000BB -S31540049B6000000000000000000000000000000000AB -S31540049B70000000000000000000000000000000009B -S31540049B80000000000000000000000000000000008B -S31540049B90000000000000000000000000000000007B -S31540049BA0000000000000000000000000000000006B -S31540049BB0000000000000000000000000000000005B -S31540049BC0000000000000000000000000000000004B -S31540049BD0000000000000000000000000000000003B -S31540049BE0000000000000000000000000000000002B -S31540049BF0000000000000000000000000000000001B -S31540049C00000000000000000000000000000000000A -S31540049C1000000000000000000000000000000000FA -S31540049C2000000000000000000000000000000000EA -S31540049C3000000000000000000000000000000000DA -S31540049C4000000000000000000000000000000000CA -S31540049C5000000000000000000000000000000000BA -S31540049C6000000000000000000000000000000000AA -S31540049C70000000000000000000000000000000009A -S31540049C80000000000000000000000000000000008A -S31540049C90000000000000000000000000000000007A -S31540049CA0000000000000000000000000000000006A -S31540049CB0000000000000000000000000000000005A -S31540049CC0000000000000000000000000000000004A -S31540049CD0000000000000000000000000000000003A -S31540049CE0000000000000000000000000000000002A -S31540049CF0000000000000000000000000000000001A -S31540049D000000000000000000000000000000000009 -S31540049D1000000000000000000000000000000000F9 -S31540049D2000000000000000000000000000000000E9 -S31540049D3000000000000000000000000000000000D9 -S31540049D4000000000000000000000000000000000C9 -S31540049D5000000000000000000000000000000000B9 -S31540049D6000000000000000000000000000000000A9 -S31540049D700000000000000000000000000000000099 -S31540049D800000000000000000000000000000000089 -S31540049D900000000000000000000000000000000079 -S31540049DA00000000000000000000000000000000069 -S31540049DB00000000000000000000000000000000059 -S31540049DC00000000000000000000000000000000049 -S31540049DD00000000000000000000000000000000039 -S31540049DE00000000000000000000000000000000029 -S31540049DF00000000000000000000000000000000019 -S31540049E000000000000000000000000000000000008 -S31540049E1000000000000000000000000000000000F8 -S31540049E2000000000000000000000000000000000E8 -S31540049E3000000000000000000000000000000000D8 -S31540049E4000000000000000000000000000000000C8 -S31540049E5000000000000000000000000000000000B8 -S31540049E6000000000000000000000000000000000A8 -S31540049E700000000000000000000000000000000098 -S31540049E800000000000000000000000000000000088 -S31540049E900000000000000000000000000000000078 -S31540049EA00000000000000000000000000000000068 -S31540049EB00000000000000000000000000000000058 -S31540049EC00000000000000000000000000000000048 -S31540049ED00000000000000000000000000000000038 -S31540049EE00000000000000000000000000000000028 -S31540049EF00000000000000000000000000000000018 -S31540049F000000000000000000000000000000000007 -S31540049F1000000000000000000000000000000000F7 -S31540049F2000000000000000000000000000000000E7 -S31540049F3000000000000000000000000000000000D7 -S31540049F4000000000000000000000000000000000C7 -S31540049F5000000000000000000000000000000000B7 -S31540049F6000000000000000000000000000000000A7 -S31540049F700000000000000000000000000000000097 -S31540049F800000000000000000000000000000000087 -S31540049F900000000000000000000000000000000077 -S31540049FA00000000000000000000000000000000067 -S31540049FB00000000000000000000000000000000057 -S31540049FC00000000000000000000000000000000047 -S31540049FD00000000000000000000000000000000037 -S31540049FE00000000000000000000000000000000027 -S31540049FF00000000000000000000000000000000017 -S3154004A0000000000000000000000000000000000006 -S3154004A01000000000000000000000000000000000F6 -S3154004A02000000000000000000000000000000000E6 -S3154004A03000000000000000000000000000000000D6 -S3154004A04000000000000000000000000000000000C6 -S3154004A05000000000000000000000000000000000B6 -S3154004A06000000000000000000000000000000000A6 -S3154004A0700000000000000000000000000000000096 -S3154004A0800000000000000000000000000000000086 -S3154004A0900000000000000000000000000000000076 -S3154004A0A00000000000000000000000000000000066 -S3154004A0B00000000000000000000000000000000056 -S3154004A0C00000000000000000000000000000000046 -S3154004A0D00000000000000000000000000000000036 -S3154004A0E00000000000000000000000000000000026 -S3154004A0F00000000000000000000000000000000016 -S3154004A1000000000000000000000000000000000005 -S3154004A11000000000000000000000000000000000F5 -S3154004A12000000000000000000000000000000000E5 -S3154004A13000000000000000000000000000000000D5 -S3154004A14000000000000000000000000000000000C5 -S3154004A15000000000000000000000000000000000B5 -S3154004A16000000000000000000000000000000000A5 -S3154004A1700000000000000000000000000000000095 -S3154004A1800000000000000000000000000000000085 -S3154004A1900000000000000000000000000000000075 -S3154004A1A00000000000000000000000000000000065 -S3154004A1B00000000000000000000000000000000055 -S3154004A1C00000000000000000000000000000000045 -S3154004A1D00000000000000000000000000000000035 -S3154004A1E00000000000000000000000000000000025 -S3154004A1F00000000000000000000000000000000015 -S3154004A2000000000000000000000000000000000004 -S3154004A21000000000000000000000000000000000F4 -S3154004A22000000000000000000000000000000000E4 -S3154004A23000000000000000000000000000000000D4 -S3154004A24000000000000000000000000000000000C4 -S3154004A25000000000000000000000000000000000B4 -S3154004A26000000000000000000000000000000000A4 -S3154004A2700000000000000000000000000000000094 -S3154004A2800000000000000000000000000000000084 -S3154004A2900000000000000000000000000000000074 -S3154004A2A00000000000000000000000000000000064 -S3154004A2B00000000000000000000000000000000054 -S3154004A2C00000000000000000000000000000000044 -S3154004A2D00000000000000000000000000000000034 -S3154004A2E00000000000000000000000000000000024 -S3154004A2F00000000000000000000000000000000014 -S3154004A3000000000000000000000000000000000003 -S3154004A31000000000000000000000000000000000F3 -S3154004A32000000000000000000000000000000000E3 -S3154004A33000000000000000000000000000000000D3 -S3154004A34000000000000000000000000000000000C3 -S3154004A35000000000000000000000000000000000B3 -S3154004A36000000000000000000000000000000000A3 -S3154004A3700000000000000000000000000000000093 -S3154004A3800000000000000000000000000000000083 -S3154004A3900000000000000000000000000000000073 -S3154004A3A00000000000000000000000000000000063 -S3154004A3B00000000000000000000000000000000053 -S3154004A3C00000000000000000000000000000000043 -S3154004A3D00000000000000000000000000000000033 -S3154004A3E00000000000000000000000000000000023 -S3154004A3F00000000000000000000000000000000013 -S3154004A4000000000000000000000000000000000002 -S3154004A41000000000000000000000000000000000F2 -S3154004A42000000000000000000000000000000000E2 -S3154004A43000000000000000000000000000000000D2 -S3154004A44000000000000000000000000000000000C2 -S3154004A45000000000000000000000000000000000B2 -S3154004A46000000000000000000000000000000000A2 -S3154004A4700000000000000000000000000000000092 -S3154004A4800000000000000000000000000000000082 -S3154004A4900000000000000000000000000000000072 -S3154004A4A00000000000000000000000000000000062 -S3154004A4B00000000000000000000000000000000052 -S3154004A4C00000000000000000000000000000000042 -S3154004A4D00000000000000000000000000000000032 -S3154004A4E00000000000000000000000000000000022 -S3154004A4F00000000000000000000000000000000012 -S3154004A5000000000000000000000000000000000001 -S3154004A51000000000000000000000000000000000F1 -S3154004A52000000000000000000000000000000000E1 -S3154004A53000000000000000000000000000000000D1 -S3154004A54000000000000000000000000000000000C1 -S3154004A55000000000000000000000000000000000B1 -S3154004A56000000000000000000000000000000000A1 -S3154004A5700000000000000000000000000000000091 -S3154004A5800000000000000000000000000000000081 -S3154004A5900000000000000000000000000000000071 -S3154004A5A00000000000000000000000000000000061 -S3154004A5B00000000000000000000000000000000051 -S3154004A5C00000000000000000000000000000000041 -S3154004A5D00000000000000000000000000000000031 -S3154004A5E00000000000000000000000000000000021 -S3154004A5F00000000000000000000000000000000011 -S3154004A6000000000000000000000000000000000000 -S3154004A61000000000000000000000000000000000F0 -S3154004A62000000000000000000000000000000000E0 -S3154004A63000000000000000000000000000000000D0 -S3154004A64000000000000000000000000000000000C0 -S3154004A65000000000000000000000000000000000B0 -S3154004A66000000000000000000000000000000000A0 -S3154004A6700000000000000000000000000000000090 -S3154004A6800000000000000000000000000000000080 -S3154004A6900000000000000000000000000000000070 -S3154004A6A00000000000000000000000000000000060 -S3154004A6B00000000000000000000000000000000050 -S3154004A6C00000000000000000000000000000000040 -S3154004A6D00000000000000000000000000000000030 -S3154004A6E00000000000000000000000000000000020 -S3154004A6F00000000000000000000000000000000010 -S3154004A70000000000000000000000000000000000FF -S3154004A71000000000000000000000000000000000EF -S3154004A72000000000000000000000000000000000DF -S3154004A73000000000000000000000000000000000CF -S3154004A74000000000000000000000000000000000BF -S3154004A75000000000000000000000000000000000AF -S3154004A760000000000000000000000000000000009F -S3154004A770000000000000000000000000000000008F -S3154004A780000000000000000000000000000000007F -S3154004A790000000000000000000000000000000006F -S3154004A7A0000000000000000000000000000000005F -S3154004A7B0000000000000000000000000000000004F -S3154004A7C0000000000000000000000000000000003F -S3154004A7D0000000000000000000000000000000002F -S3154004A7E0000000000000000000000000000000001F -S3154004A7F0000000000000000000000000000000000F -S3154004A80000000000000000000000000000000000FE -S3154004A81000000000000000000000000000000000EE -S3154004A82000000000000000000000000000000000DE -S3154004A83000000000000000000000000000000000CE -S3154004A84000000000000000000000000000000000BE -S3154004A85000000000000000000000000000000000AE -S3154004A860000000000000000000000000000000009E -S3154004A870000000000000000000000000000000008E -S3154004A880000000000000000000000000000000007E -S3154004A890000000000000000000000000000000006E -S3154004A8A0000000000000000000000000000000005E -S3154004A8B0000000000000000000000000000000004E -S3154004A8C0000000000000000000000000000000003E -S3154004A8D0000000000000000000000000000000002E -S3154004A8E0000000000000000000000000000000001E -S3154004A8F0000000000000000000000000000000000E -S3154004A90000000000000000000000000000000000FD -S3154004A91000000000000000000000000000000000ED -S3154004A92000000000000000000000000000000000DD -S3154004A93000000000000000000000000000000000CD -S3154004A94000000000000000000000000000000000BD -S3154004A95000000000000000000000000000000000AD -S3154004A960000000000000000000000000000000009D -S3154004A970000000000000000000000000000000008D -S3154004A980000000000000000000000000000000007D -S3154004A990000000000000000000000000000000006D -S3154004A9A0000000000000000000000000000000005D -S3154004A9B0000000000000000000000000000000004D -S3154004A9C0000000000000000000000000000000003D -S3154004A9D0000000000000000000000000000000002D -S3154004A9E0000000000000000000000000000000001D -S3154004A9F0000000000000000000000000000000000D -S3154004AA0000000000000000000000000000000000FC -S3154004AA1000000000000000000000000000000000EC -S3154004AA2000000000000000000000000000000000DC -S3154004AA3000000000000000000000000000000000CC -S3154004AA4000000000000000000000000000000000BC -S3154004AA5000000000000000000000000000000000AC -S3154004AA60000000000000000000000000000000009C -S3154004AA70000000000000000000000000000000008C -S3154004AA80000000000000000000000000000000007C -S3154004AA90000000000000000000000000000000006C -S3154004AAA0000000000000000000000000000000005C -S3154004AAB0000000000000000000000000000000004C -S3154004AAC0000000000000000000000000000000003C -S3154004AAD0000000000000000000000000000000002C -S3154004AAE0000000000000000000000000000000001C -S3154004AAF0000000000000000000000000000000000C -S3154004AB0000000000000000000000000000000000FB -S3154004AB1000000000000000000000000000000000EB -S3154004AB2000000000000000000000000000000000DB -S3154004AB3000000000000000000000000000000000CB -S3154004AB4000000000000000000000000000000000BB -S3154004AB5000000000000000000000000000000000AB -S3154004AB60000000000000000000000000000000009B -S3154004AB70000000000000000000000000000000008B -S3154004AB80000000000000000000000000000000007B -S3154004AB90000000000000000000000000000000006B -S3154004ABA0000000000000000000000000000000005B -S3154004ABB0000000000000000000000000000000004B -S3154004ABC0000000000000000000000000000000003B -S3154004ABD0000000000000000000000000000000002B -S3154004ABE0000000000000000000000000000000001B -S3154004ABF0000000000000000000000000000000000B -S3154004AC0000000000000000000000000000000000FA -S3154004AC1000000000000000000000000000000000EA -S3154004AC2000000000000000000000000000000000DA -S3154004AC3000000000000000000000000000000000CA -S3154004AC4000000000000000000000000000000000BA -S3154004AC5000000000000000000000000000000000AA -S3154004AC60000000000000000000000000000000009A -S3154004AC70000000000000000000000000000000008A -S3154004AC80000000000000000000000000000000007A -S3154004AC90000000000000000000000000000000006A -S3154004ACA0000000000000000000000000000000005A -S3154004ACB0000000000000000000000000000000004A -S3154004ACC0000000000000000000000000000000003A -S3154004ACD0000000000000000000000000000000002A -S3154004ACE0000000000000000000000000000000001A -S3154004ACF0000000000000000000000000000000000A -S3154004AD0000000000000000000000000000000000F9 -S3154004AD1000000000000000000000000000000000E9 -S3154004AD2000000000000000000000000000000000D9 -S3154004AD3000000000000000000000000000000000C9 -S3154004AD4000000000000000000000000000000000B9 -S3154004AD5000000000000000000000000000000000A9 -S3154004AD600000000000000000000000000000000099 -S3154004AD700000000000000000000000000000000089 -S3154004AD800000000000000000000000000000000079 -S3154004AD900000000000000000000000000000000069 -S3154004ADA00000000000000000000000000000000059 -S3154004ADB00000000000000000000000000000000049 -S3154004ADC00000000000000000000000000000000039 -S3154004ADD00000000000000000000000000000000029 -S3154004ADE00000000000000000000000000000000019 -S3154004ADF00000000000000000000000000000000009 -S3154004AE0000000000000000000000000000000000F8 -S3154004AE1000000000000000000000000000000000E8 -S3154004AE2000000000000000000000000000000000D8 -S3154004AE3000000000000000000000000000000000C8 -S3154004AE4000000000000000000000000000000000B8 -S3154004AE5000000000000000000000000000000000A8 -S3154004AE600000000000000000000000000000000098 -S3154004AE700000000000000000000000000000000088 -S3154004AE800000000000000000000000000000000078 -S3154004AE900000000000000000000000000000000068 -S3154004AEA00000000000000000000000000000000058 -S3154004AEB00000000000000000000000000000000048 -S3154004AEC00000000000000000000000000000000038 -S3154004AED00000000000000000000000000000000028 -S3154004AEE00000000000000000000000000000000018 -S3154004AEF00000000000000000000000000000000008 -S3154004AF0000000000000000000000000000000000F7 -S3154004AF1000000000000000000000000000000000E7 -S3154004AF2000000000000000000000000000000000D7 -S3154004AF3000000000000000000000000000000000C7 -S3154004AF4000000000000000000000000000000000B7 -S3154004AF5000000000000000000000000000000000A7 -S3154004AF600000000000000000000000000000000097 -S3154004AF700000000000000000000000000000000087 -S3154004AF800000000000000000000000000000000077 -S3154004AF900000000000000000000000000000000067 -S3154004AFA00000000000000000000000000000000057 -S3154004AFB00000000000000000000000000000000047 -S3154004AFC00000000000000000000000000000000037 -S3154004AFD00000000000000000000000000000000027 -S3154004AFE00000000000000000000000000000000017 -S3154004AFF00000000000000000000000000000000007 -S3154004B00000000000000000000000000000000000F6 -S3154004B01000000000000000000000000000000000E6 -S3154004B02000000000000000000000000000000000D6 -S3154004B03000000000000000000000000000000000C6 -S3154004B04000000000000000000000000000000000B6 -S3154004B05000000000000000000000000000000000A6 -S3154004B0600000000000000000000000000000000096 -S3154004B0700000000000000000000000000000000086 -S3154004B0800000000000000000000000000000000076 -S3154004B0900000000000000000000000000000000066 -S3154004B0A00000000000000000000000000000000056 -S3154004B0B00000000000000000000000000000000046 -S3154004B0C00000000000000000000000000000000036 -S3154004B0D00000000000000000000000000000000026 -S3154004B0E00000000000000000000000000000000016 -S3154004B0F00000000000000000000000000000000006 -S3154004B10000000000000000000000000000000000F5 -S3154004B11000000000000000000000000000000000E5 -S3154004B12000000000000000000000000000000000D5 -S3154004B13000000000000000000000000000000000C5 -S3154004B14000000000000000000000000000000000B5 -S3154004B15000000000000000000000000000000000A5 -S3154004B1600000000000000000000000000000000095 -S3154004B1700000000000000000000000000000000085 -S3154004B1800000000000000000000000000000000075 -S3154004B1900000000000000000000000000000000065 -S3154004B1A00000000000000000000000000000000055 -S3154004B1B00000000000000000000000000000000045 -S3154004B1C00000000000000000000000000000000035 -S3154004B1D00000000000000000000000000000000025 -S3154004B1E00000000000000000000000000000000015 -S3154004B1F00000000000000000000000000000000005 -S3154004B20000000000000000000000000000000000F4 -S3154004B21000000000000000000000000000000000E4 -S3154004B22000000000000000000000000000000000D4 -S3154004B23000000000000000000000000000000000C4 -S3154004B24000000000000000000000000000000000B4 -S3154004B25000000000000000000000000000000000A4 -S3154004B2600000000000000000000000000000000094 -S3154004B2700000000000000000000000000000000084 -S3154004B2800000000000000000000000000000000074 -S3154004B2900000000000000000000000000000000064 -S3154004B2A00000000000000000000000000000000054 -S3154004B2B00000000000000000000000000000000044 -S3154004B2C00000000000000000000000000000000034 -S3154004B2D00000000000000000000000000000000024 -S3154004B2E00000000000000000000000000000000014 -S3154004B2F00000000000000000000000000000000004 -S3154004B30000000000000000000000000000000000F3 -S3154004B31000000000000000000000000000000000E3 -S3154004B32000000000000000000000000000000000D3 -S3154004B33000000000000000000000000000000000C3 -S3154004B34000000000000000000000000000000000B3 -S3154004B35000000000000000000000000000000000A3 -S3154004B3600000000000000000000000000000000093 -S3154004B3700000000000000000000000000000000083 -S3154004B3800000000000000000000000000000000073 -S3154004B3900000000000000000000000000000000063 -S3154004B3A00000000000000000000000000000000053 -S3154004B3B00000000000000000000000000000000043 -S3154004B3C00000000000000000000000000000000033 -S3154004B3D00000000000000000000000000000000023 -S3154004B3E00000000000000000000000000000000013 -S3154004B3F00000000000000000000000000000000003 -S3154004B40000000000000000000000000000000000F2 -S3154004B41000000000000000000000000000000000E2 -S3154004B42000000000000000000000000000000000D2 -S3154004B43000000000000000000000000000000000C2 -S3154004B44000000000000000000000000000000000B2 -S3154004B45000000000000000000000000000000000A2 -S3154004B4600000000000000000000000000000000092 -S3154004B4700000000000000000000000000000000082 -S3154004B4800000000000000000000000000000000072 -S3154004B4900000000000000000000000000000000062 -S3154004B4A00000000000000000000000000000000052 -S3154004B4B00000000000000000000000000000000042 -S3154004B4C00000000000000000000000000000000032 -S3154004B4D00000000000000000000000000000000022 -S3154004B4E00000000000000000000000000000000012 -S3154004B4F00000000000000000000000000000000002 -S3154004B50000000000000000000000000000000000F1 -S3154004B51000000000000000000000000000000000E1 -S3154004B52000000000000000000000000000000000D1 -S3154004B53000000000000000000000000000000000C1 -S3154004B54000000000000000000000000000000000B1 -S3154004B55000000000000000000000000000000000A1 -S3154004B5600000000000000000000000000000000091 -S3154004B5700000000000000000000000000000000081 -S3154004B5800000000000000000000000000000000071 -S3154004B5900000000000000000000000000000000061 -S3154004B5A00000000000000000000000000000000051 -S3154004B5B00000000000000000000000000000000041 -S3154004B5C00000000000000000000000000000000031 -S3154004B5D00000000000000000000000000000000021 -S3154004B5E00000000000000000000000000000000011 -S3154004B5F00000000000000000000000000000000001 -S3154004B60000000000000000000000000000000000F0 -S3154004B61000000000000000000000000000000000E0 -S3154004B62000000000000000000000000000000000D0 -S3154004B63000000000000000000000000000000000C0 -S3154004B64000000000000000000000000000000000B0 -S3154004B65000000000000000000000000000000000A0 -S3154004B6600000000000000000000000000000000090 -S3154004B6700000000000000000000000000000000080 -S3154004B6800000000000000000000000000000000070 -S3154004B6900000000000000000000000000000000060 -S3154004B6A00000000000000000000000000000000050 -S3154004B6B00000000000000000000000000000000040 -S3154004B6C00000000000000000000000000000000030 -S3154004B6D00000000000000000000000000000000020 -S3154004B6E00000000000000000000000000000000010 -S3154004B6F00000000000000000000000000000000000 -S3154004B70000000000000000000000000000000000EF -S3154004B71000000000000000000000000000000000DF -S3154004B72000000000000000000000000000000000CF -S3154004B73000000000000000000000000000000000BF -S3154004B74000000000000000000000000000000000AF -S3154004B750000000000000000000000000000000009F -S3154004B760000000000000000000000000000000008F -S3154004B770000000000000000000000000000000007F -S3154004B780000000000000000000000000000000006F -S3154004B790000000000000000000000000000000005F -S3154004B7A0000000000000000000000000000000004F -S3154004B7B0000000000000000000000000000000003F -S3154004B7C0000000000000000000000000000000002F -S3154004B7D0000000000000000000000000000000001F -S3154004B7E0000000000000000000000000000000000F -S3154004B7F000000000000000000000000000000000FF -S3154004B80000000000000000000000000000000000EE -S3154004B81000000000000000000000000000000000DE -S3154004B82000000000000000000000000000000000CE -S3154004B83000000000000000000000000000000000BE -S3154004B84000000000000000000000000000000000AE -S3154004B850000000000000000000000000000000009E -S3154004B860000000000000000000000000000000008E -S3154004B870000000000000000000000000000000007E -S3154004B880000000000000000000000000000000006E -S3154004B890000000000000000000000000000000005E -S3154004B8A0000000000000000000000000000000004E -S3154004B8B0000000000000000000000000000000003E -S3154004B8C0000000000000000000000000000000002E -S3154004B8D0000000000000000000000000000000001E -S3154004B8E0000000000000000000000000000000000E -S3154004B8F000000000000000000000000000000000FE -S3154004B90000000000000000000000000000000000ED -S3154004B91000000000000000000000000000000000DD -S3154004B92000000000000000000000000000000000CD -S3154004B93000000000000000000000000000000000BD -S3154004B94000000000000000000000000000000000AD -S3154004B950000000000000000000000000000000009D -S3154004B960000000000000000000000000000000008D -S3154004B970000000000000000000000000000000007D -S3154004B980000000000000000000000000000000006D -S3154004B990000000000000000000000000000000005D -S3154004B9A0000000000000000000000000000000004D -S3154004B9B0000000000000000000000000000000003D -S3154004B9C0000000000000000000000000000000002D -S3154004B9D0000000000000000000000000000000001D -S3154004B9E0000000000000000000000000000000000D -S3154004B9F000000000000000000000000000000000FD -S3154004BA0000000000000000000000000000000000EC -S3154004BA1000000000000000000000000000000000DC -S3154004BA2000000000000000000000000000000000CC -S3154004BA3000000000000000000000000000000000BC -S3154004BA4000000000000000000000000000000000AC -S3154004BA50000000000000000000000000000000009C -S3154004BA60000000000000000000000000000000008C -S3154004BA70000000000000000000000000000000007C -S3154004BA80000000000000000000000000000000006C -S3154004BA90000000000000000000000000000000005C -S3154004BAA0000000000000000000000000000000004C -S3154004BAB0000000000000000000000000000000003C -S3154004BAC0000000000000000000000000000000002C -S3154004BAD0000000000000000000000000000000001C -S3154004BAE0000000000000000000000000000000000C -S3154004BAF000000000000000000000000000000000FC -S3154004BB0000000000000000000000000000000000EB -S3154004BB1000000000000000000000000000000000DB -S3154004BB2000000000000000000000000000000000CB -S3154004BB3000000000000000000000000000000000BB -S3154004BB4000000000000000000000000000000000AB -S3154004BB50000000000000000000000000000000009B -S3154004BB60000000000000000000000000000000008B -S3154004BB70000000000000000000000000000000007B -S3154004BB80000000000000000000000000000000006B -S3154004BB90000000000000000000000000000000005B -S3154004BBA0000000000000000000000000000000004B -S3154004BBB0000000000000000000000000000000003B -S3154004BBC0000000000000000000000000000000002B -S3154004BBD0000000000000000000000000000000001B -S3154004BBE0000000000000000000000000000000000B -S3154004BBF000000000000000000000000000000000FB -S3154004BC0000000000000000000000000000000000EA -S3154004BC1000000000000000000000000000000000DA -S3154004BC2000000000000000000000000000000000CA -S3154004BC3000000000000000000000000000000000BA -S3154004BC4000000000000000000000000000000000AA -S3154004BC50000000000000000000000000000000009A -S3154004BC60000000000000000000000000000000008A -S3154004BC70000000000000000000000000000000007A -S3154004BC80000000000000000000000000000000006A -S3154004BC90000000000000000000000000000000005A -S3154004BCA0000000000000000000000000000000004A -S3154004BCB0000000000000000000000000000000003A -S3154004BCC0000000000000000000000000000000002A -S3154004BCD0000000000000000000000000000000001A -S3154004BCE0000000000000000000000000000000000A -S3154004BCF000000000000000000000000000000000FA -S3154004BD0000000000000000000000000000000000E9 -S3154004BD1000000000000000000000000000000000D9 -S3154004BD2000000000000000000000000000000000C9 -S3154004BD3000000000000000000000000000000000B9 -S3154004BD4000000000000000000000000000000000A9 -S3154004BD500000000000000000000000000000000099 -S3154004BD600000000000000000000000000000000089 -S3154004BD700000000000000000000000000000000079 -S3154004BD800000000000000000000000000000000069 -S3154004BD900000000000000000000000000000000059 -S3154004BDA00000000000000000000000000000000049 -S3154004BDB00000000000000000000000000000000039 -S3154004BDC00000000000000000000000000000000029 -S3154004BDD00000000000000000000000000000000019 -S3154004BDE00000000000000000000000000000000009 -S3154004BDF000000000000000000000000000000000F9 -S3154004BE0000000000000000000000000000000000E8 -S3154004BE1000000000000000000000000000000000D8 -S3154004BE2000000000000000000000000000000000C8 -S3154004BE3000000000000000000000000000000000B8 -S3154004BE4000000000000000000000000000000000A8 -S3154004BE500000000000000000000000000000000098 -S3154004BE600000000000000000000000000000000088 -S3154004BE700000000000000000000000000000000078 -S3154004BE800000000000000000000000000000000068 -S3154004BE900000000000000000000000000000000058 -S3154004BEA00000000000000000000000000000000048 -S3154004BEB00000000000000000000000000000000038 -S3154004BEC00000000000000000000000000000000028 -S3154004BED00000000000000000000000000000000018 -S3154004BEE00000000000000000000000000000000008 -S3154004BEF000000000000000000000000000000000F8 -S3154004BF0000000000000000000000000000000000E7 -S3154004BF1000000000000000000000000000000000D7 -S3154004BF2000000000000000000000000000000000C7 -S3154004BF3000000000000000000000000000000000B7 -S3154004BF4000000000000000000000000000000000A7 -S3154004BF500000000000000000000000000000000097 -S3154004BF600000000000000000000000000000000087 -S3154004BF700000000000000000000000000000000077 -S3154004BF800000000000000000000000000000000067 -S3154004BF900000000000000000000000000000000057 -S3154004BFA00000000000000000000000000000000047 -S3154004BFB00000000000000000000000000000000037 -S3154004BFC00000000000000000000000000000000027 -S3154004BFD00000000000000000000000000000000017 -S3154004BFE00000000000000000000000000000000007 -S3154004BFF000000000000000000000000000000000F7 -S3154004C00000000000000000000000000000000000E6 -S3154004C01000000000000000000000000000000000D6 -S3154004C02000000000000000000000000000000000C6 -S3154004C03000000000000000000000000000000000B6 -S3154004C04000000000000000000000000000000000A6 -S3154004C0500000000000000000000000000000000096 -S3154004C0600000000000000000000000000000000086 -S3154004C0700000000000000000000000000000000076 -S3154004C0800000000000000000000000000000000066 -S3154004C0900000000000000000000000000000000056 -S3154004C0A00000000000000000000000000000000046 -S3154004C0B00000000000000000000000000000000036 -S3154004C0C00000000000000000000000000000000026 -S3154004C0D00000000000000000000000000000000016 -S3154004C0E00000000000000000000000000000000006 -S3154004C0F000000000000000000000000000000000F6 -S3154004C10000000000000000000000000000000000E5 -S3154004C11000000000000000000000000000000000D5 -S3154004C12000000000000000000000000000000000C5 -S3154004C13000000000000000000000000000000000B5 -S3154004C14000000000000000000000000000000000A5 -S3154004C1500000000000000000000000000000000095 -S3154004C1600000000000000000000000000000000085 -S3154004C1700000000000000000000000000000000075 -S3154004C1800000000000000000000000000000000065 -S3154004C1900000000000000000000000000000000055 -S3154004C1A00000000000000000000000000000000045 -S3154004C1B00000000000000000000000000000000035 -S3154004C1C00000000000000000000000000000000025 -S3154004C1D00000000000000000000000000000000015 -S3154004C1E00000000000000000000000000000000005 -S3154004C1F000000000000000000000000000000000F5 -S3154004C20000000000000000000000000000000000E4 -S3154004C21000000000000000000000000000000000D4 -S3154004C22000000000000000000000000000000000C4 -S3154004C23000000000000000000000000000000000B4 -S3154004C24000000000000000000000000000000000A4 -S3154004C2500000000000000000000000000000000094 -S3154004C2600000000000000000000000000000000084 -S3154004C2700000000000000000000000000000000074 -S3154004C2800000000000000000000000000000000064 -S3154004C2900000000000000000000000000000000054 -S3154004C2A00000000000000000000000000000000044 -S3154004C2B00000000000000000000000000000000034 -S3154004C2C00000000000000000000000000000000024 -S3154004C2D00000000000000000000000000000000014 -S3154004C2E00000000000000000000000000000000004 -S3154004C2F000000000000000000000000000000000F4 -S3154004C30000000000000000000000000000000000E3 -S3154004C31000000000000000000000000000000000D3 -S3154004C32000000000000000000000000000000000C3 -S3154004C33000000000000000000000000000000000B3 -S3154004C34000000000000000000000000000000000A3 -S3154004C3500000000000000000000000000000000093 -S3154004C3600000000000000000000000000000000083 -S3154004C3700000000000000000000000000000000073 -S3154004C3800000000000000000000000000000000063 -S3154004C3900000000000000000000000000000000053 -S3154004C3A00000000000000000000000000000000043 -S3154004C3B00000000000000000000000000000000033 -S3154004C3C00000000000000000000000000000000023 -S3154004C3D00000000000000000000000000000000013 -S3154004C3E00000000000000000000000000000000003 -S3154004C3F000000000000000000000000000000000F3 -S3154004C40000000000000000000000000000000000E2 -S3154004C41000000000000000000000000000000000D2 -S3154004C42000000000000000000000000000000000C2 -S3154004C43000000000000000000000000000000000B2 -S3154004C44000000000000000000000000000000000A2 -S3154004C4500000000000000000000000000000000092 -S3154004C4600000000000000000000000000000000082 -S3154004C4700000000000000000000000000000000072 -S3154004C4800000000000000000000000000000000062 -S3154004C4900000000000000000000000000000000052 -S3154004C4A00000000000000000000000000000000042 -S3154004C4B00000000000000000000000000000000032 -S3154004C4C00000000000000000000000000000000022 -S3154004C4D00000000000000000000000000000000012 -S3154004C4E00000000000000000000000000000000002 -S3154004C4F000000000000000000000000000000000F2 -S3154004C50000000000000000000000000000000000E1 -S3154004C51000000000000000000000000000000000D1 -S3154004C52000000000000000000000000000000000C1 -S3154004C53000000000000000000000000000000000B1 -S3154004C54000000000000000000000000000000000A1 -S3154004C5500000000000000000000000000000000091 -S3154004C5600000000000000000000000000000000081 -S3154004C5700000000000000000000000000000000071 -S3154004C5800000000000000000000000000000000061 -S3154004C5900000000000000000000000000000000051 -S3154004C5A00000000000000000000000000000000041 -S3154004C5B00000000000000000000000000000000031 -S3154004C5C00000000000000000000000000000000021 -S3154004C5D00000000000000000000000000000000011 -S3154004C5E00000000000000000000000000000000001 -S3154004C5F000000000000000000000000000000000F1 -S3154004C60000000000000000000000000000000000E0 -S3154004C61000000000000000000000000000000000D0 -S3154004C62000000000000000000000000000000000C0 -S3154004C63000000000000000000000000000000000B0 -S3154004C64000000000000000000000000000000000A0 -S3154004C6500000000000000000000000000000000090 -S3154004C6600000000000000000000000000000000080 -S3154004C6700000000000000000000000000000000070 -S3154004C6800000000000000000000000000000000060 -S3154004C6900000000000000000000000000000000050 -S3154004C6A00000000000000000000000000000000040 -S3154004C6B00000000000000000000000000000000030 -S3154004C6C00000000000000000000000000000000020 -S3154004C6D00000000000000000000000000000000010 -S3154004C6E00000000000000000000000000000000000 -S3154004C6F000000000000000000000000000000000F0 -S3154004C70000000000000000000000000000000000DF -S3154004C71000000000000000000000000000000000CF -S3154004C72000000000000000000000000000000000BF -S3154004C73000000000000000000000000000000000AF -S3154004C740000000000000000000000000000000009F -S3154004C750000000000000000000000000000000008F -S3154004C760000000000000000000000000000000007F -S3154004C770000000000000000000000000000000006F -S3154004C780000000000000000000000000000000005F -S3154004C790000000000000000000000000000000004F -S3154004C7A0000000000000000000000000000000003F -S3154004C7B0000000000000000000000000000000002F -S3154004C7C0000000000000000000000000000000001F -S3154004C7D0000000000000000000000000000000000F -S3154004C7E000000000000000000000000000000000FF -S3154004C7F000000000000000000000000000000000EF -S3154004C80000000000000000000000000000000000DE -S3154004C81000000000000000000000000000000000CE -S3154004C82000000000000000000000000000000000BE -S3154004C83000000000000000000000000000000000AE -S3154004C840000000000000000000000000000000009E -S3154004C850000000000000000000000000000000008E -S3154004C860000000000000000000000000000000007E -S3154004C870000000000000000000000000000000006E -S3154004C880000000000000000000000000000000005E -S3154004C890000000000000000000000000000000004E -S3154004C8A0000000000000000000000000000000003E -S3154004C8B0000000000000000000000000000000002E -S3154004C8C0000000000000000000000000000000001E -S3154004C8D0000000000000000000000000000000000E -S3154004C8E000000000000000000000000000000000FE -S3154004C8F000000000000000000000000000000000EE -S3154004C90000000000000000000000000000000000DD -S3154004C91000000000000000000000000000000000CD -S3154004C92000000000000000000000000000000000BD -S3154004C93000000000000000000000000000000000AD -S3154004C940000000000000000000000000000000009D -S3154004C950000000000000000000000000000000008D -S3154004C960000000000000000000000000000000007D -S3154004C970000000000000000000000000000000006D -S3154004C980000000000000000000000000000000005D -S3154004C990000000000000000000000000000000004D -S3154004C9A0000000000000000000000000000000003D -S3154004C9B0000000000000000000000000000000002D -S3154004C9C0000000000000000000000000000000001D -S3154004C9D0000000000000000000000000000000000D -S3154004C9E000000000000000000000000000000000FD -S3154004C9F000000000000000000000000000000000ED -S3154004CA0000000000000000000000000000000000DC -S3154004CA1000000000000000000000000000000000CC -S3154004CA2000000000000000000000000000000000BC -S3154004CA3000000000000000000000000000000000AC -S3154004CA40000000000000000000000000000000009C -S3154004CA50000000000000000000000000000000008C -S3154004CA60000000000000000000000000000000007C -S3154004CA70000000000000000000000000000000006C -S3154004CA80000000000000000000000000000000005C -S3154004CA90000000000000000000000000000000004C -S3154004CAA0000000000000000000000000000000003C -S3154004CAB0000000000000000000000000000000002C -S3154004CAC0000000000000000000000000000000001C -S3154004CAD0000000000000000000000000000000000C -S3154004CAE000000000000000000000000000000000FC -S3154004CAF000000000000000000000000000000000EC -S3154004CB0000000000000000000000000000000000DB -S3154004CB1000000000000000000000000000000000CB -S3154004CB2000000000000000000000000000000000BB -S3154004CB3000000000000000000000000000000000AB -S3154004CB40000000000000000000000000000000009B -S3154004CB50000000000000000000000000000000008B -S3154004CB60000000000000000000000000000000007B -S3154004CB70000000000000000000000000000000006B -S3154004CB80000000000000000000000000000000005B -S3154004CB90000000000000000000000000000000004B -S3154004CBA0000000000000000000000000000000003B -S3154004CBB0000000000000000000000000000000002B -S3154004CBC0000000000000000000000000000000001B -S3154004CBD0000000000000000000000000000000000B -S3154004CBE000000000000000000000000000000000FB -S3154004CBF000000000000000000000000000000000EB -S3154004CC0000000000000000000000000000000000DA -S3154004CC1000000000000000000000000000000000CA -S3154004CC2000000000000000000000000000000000BA -S3154004CC3000000000000000000000000000000000AA -S3154004CC40000000000000000000000000000000009A -S3154004CC50000000000000000000000000000000008A -S3154004CC60000000000000000000000000000000007A -S3154004CC70000000000000000000000000000000006A -S3154004CC80000000000000000000000000000000005A -S3154004CC90000000000000000000000000000000004A -S3154004CCA0000000000000000000000000000000003A -S3154004CCB0000000000000000000000000000000002A -S3154004CCC0000000000000000000000000000000001A -S3154004CCD0000000000000000000000000000000000A -S3154004CCE000000000000000000000000000000000FA -S3154004CCF000000000000000000000000000000000EA -S3154004CD0000000000000000000000000000000000D9 -S3154004CD1000000000000000000000000000000000C9 -S3154004CD2000000000000000000000000000000000B9 -S3154004CD3000000000000000000000000000000000A9 -S3154004CD400000000000000000000000000000000099 -S3154004CD500000000000000000000000000000000089 -S3154004CD600000000000000000000000000000000079 -S3154004CD700000000000000000000000000000000069 -S3154004CD800000000000000000000000000000000059 -S3154004CD900000000000000000000000000000000049 -S3154004CDA00000000000000000000000000000000039 -S3154004CDB00000000000000000000000000000000029 -S3154004CDC00000000000000000000000000000000019 -S3154004CDD00000000000000000000000000000000009 -S3154004CDE000000000000000000000000000000000F9 -S3154004CDF000000000000000000000000000000000E9 -S3154004CE0000000000000000000000000000000000D8 -S3154004CE1000000000000000000000000000000000C8 -S3154004CE2000000000000000000000000000000000B8 -S3154004CE3000000000000000000000000000000000A8 -S3154004CE400000000000000000000000000000000098 -S3154004CE500000000000000000000000000000000088 -S3154004CE600000000000000000000000000000000078 -S3154004CE700000000000000000000000000000000068 -S3154004CE800000000000000000000000000000000058 -S3154004CE900000000000000000000000000000000048 -S3154004CEA00000000000000000000000000000000038 -S3154004CEB00000000000000000000000000000000028 -S3154004CEC00000000000000000000000000000000018 -S3154004CED00000000000000000000000000000000008 -S3154004CEE000000000000000000000000000000000F8 -S3154004CEF000000000000000000000000000000000E8 -S3154004CF0000000000000000000000000000000000D7 -S3154004CF1000000000000000000000000000000000C7 -S3154004CF2000000000000000000000000000000000B7 -S3154004CF3000000000000000000000000000000000A7 -S3154004CF400000000000000000000000000000000097 -S3154004CF500000000000000000000000000000000087 -S3154004CF600000000000000000000000000000000077 -S3154004CF700000000000000000000000000000000067 -S3154004CF800000000000000000000000000000000057 -S3154004CF900000000000000000000000000000000047 -S3154004CFA00000000000000000000000000000000037 -S3154004CFB00000000000000000000000000000000027 -S3154004CFC00000000000000000000000000000000017 -S3154004CFD00000000000000000000000000000000007 -S3154004CFE000000000000000000000000000000000F7 -S3154004CFF000000000000000000000000000000000E7 -S3154004D00000000000000000000000000000000000D6 -S3154004D01000000000000000000000000000000000C6 -S3154004D02000000000000000000000000000000000B6 -S3154004D03000000000000000000000000000000000A6 -S3154004D0400000000000000000000000000000000096 -S3154004D0500000000000000000000000000000000086 -S3154004D0600000000000000000000000000000000076 -S3154004D0700000000000000000000000000000000066 -S3154004D0800000000000000000000000000000000056 -S3154004D0900000000000000000000000000000000046 -S3154004D0A00000000000000000000000000000000036 -S3154004D0B00000000000000000000000000000000026 -S3154004D0C00000000000000000000000000000000016 -S3154004D0D00000000000000000000000000000000006 -S3154004D0E000000000000000000000000000000000F6 -S3154004D0F000000000000000000000000000000000E6 -S3154004D10000000000000000000000000000000000D5 -S3154004D11000000000000000000000000000000000C5 -S3154004D12000000000000000000000000000000000B5 -S3154004D13000000000000000000000000000000000A5 -S3154004D1400000000000000000000000000000000095 -S3154004D1500000000000000000000000000000000085 -S3154004D1600000000000000000000000000000000075 -S3154004D1700000000000000000000000000000000065 -S3154004D1800000000000000000000000000000000055 -S3154004D1900000000000000000000000000000000045 -S3154004D1A00000000000000000000000000000000035 -S3154004D1B00000000000000000000000000000000025 -S3154004D1C00000000000000000000000000000000015 -S3154004D1D00000000000000000000000000000000005 -S3154004D1E000000000000000000000000000000000F5 -S3154004D1F000000000000000000000000000000000E5 -S3154004D20000000000000000000000000000000000D4 -S3154004D21000000000000000000000000000000000C4 -S3154004D22000000000000000000000000000000000B4 -S3154004D23000000000000000000000000000000000A4 -S3154004D2400000000000000000000000000000000094 -S3154004D2500000000000000000000000000000000084 -S3154004D2600000000000000000000000000000000074 -S3154004D2700000000000000000000000000000000064 -S3154004D2800000000000000000000000000000000054 -S3154004D2900000000000000000000000000000000044 -S3154004D2A00000000000000000000000000000000034 -S3154004D2B00000000000000000000000000000000024 -S3154004D2C00000000000000000000000000000000014 -S3154004D2D00000000000000000000000000000000004 -S3154004D2E000000000000000000000000000000000F4 -S3154004D2F000000000000000000000000000000000E4 -S3154004D30000000000000000000000000000000000D3 -S3154004D31000000000000000000000000000000000C3 -S3154004D32000000000000000000000000000000000B3 -S3154004D33000000000000000000000000000000000A3 -S3154004D3400000000000000000000000000000000093 -S3154004D3500000000000000000000000000000000083 -S3154004D3600000000000000000000000000000000073 -S3154004D3700000000000000000000000000000000063 -S3154004D3800000000000000000000000000000000053 -S3154004D3900000000000000000000000000000000043 -S3154004D3A00000000000000000000000000000000033 -S3154004D3B00000000000000000000000000000000023 -S3154004D3C00000000000000000000000000000000013 -S3154004D3D00000000000000000000000000000000003 -S3154004D3E000000000000000000000000000000000F3 -S3154004D3F000000000000000000000000000000000E3 -S3154004D40000000000000000000000000000000000D2 -S3154004D41000000000000000000000000000000000C2 -S3154004D42000000000000000000000000000000000B2 -S3154004D43000000000000000000000000000000000A2 -S3154004D4400000000000000000000000000000000092 -S3154004D4500000000000000000000000000000000082 -S3154004D4600000000000000000000000000000000072 -S3154004D4700000000000000000000000000000000062 -S3154004D4800000000000000000000000000000000052 -S3154004D4900000000000000000000000000000000042 -S3154004D4A00000000000000000000000000000000032 -S3154004D4B00000000000000000000000000000000022 -S3154004D4C00000000000000000000000000000000012 -S3154004D4D00000000000000000000000000000000002 -S3154004D4E000000000000000000000000000000000F2 -S3154004D4F000000000000000000000000000000000E2 -S3154004D50000000000000000000000000000000000D1 -S3154004D51000000000000000000000000000000000C1 -S3154004D52000000000000000000000000000000000B1 -S3154004D53000000000000000000000000000000000A1 -S3154004D5400000000000000000000000000000000091 -S3154004D5500000000000000000000000000000000081 -S3154004D5600000000000000000000000000000000071 -S3154004D5700000000000000000000000000000000061 -S3154004D5800000000000000000000000000000000051 -S3154004D5900000000000000000000000000000000041 -S3154004D5A00000000000000000000000000000000031 -S3154004D5B00000000000000000000000000000000021 -S3154004D5C00000000000000000000000000000000011 -S3154004D5D00000000000000000000000000000000001 -S3154004D5E000000000000000000000000000000000F1 -S3154004D5F000000000000000000000000000000000E1 -S3154004D60000000000000000000000000000000000D0 -S3154004D61000000000000000000000000000000000C0 -S3154004D62000000000000000000000000000000000B0 -S3154004D63000000000000000000000000000000000A0 -S3154004D6400000000000000000000000000000000090 -S3154004D6500000000000000000000000000000000080 -S3154004D6600000000000000000000000000000000070 -S3154004D6700000000000000000000000000000000060 -S3154004D6800000000000000000000000000000000050 -S3154004D6900000000000000000000000000000000040 -S3154004D6A00000000000000000000000000000000030 -S3154004D6B00000000000000000000000000000000020 -S3154004D6C00000000000000000000000000000000010 -S3154004D6D00000000000000000000000000000000000 -S3154004D6E000000000000000000000000000000000F0 -S3154004D6F000000000000000000000000000000000E0 -S3154004D70000000000000000000000000000000000CF -S3154004D71000000000000000000000000000000000BF -S3154004D72000000000000000000000000000000000AF -S3154004D730000000000000000000000000000000009F -S3154004D740000000000000000000000000000000008F -S3154004D750000000000000000000000000000000007F -S3154004D760000000000000000000000000000000006F -S3154004D770000000000000000000000000000000005F -S3154004D780000000000000000000000000000000004F -S3154004D790000000000000000000000000000000003F -S3154004D7A0000000000000000000000000000000002F -S3154004D7B0000000000000000000000000000000001F -S3154004D7C0000000000000000000000000000000000F -S3154004D7D000000000000000000000000000000000FF -S3154004D7E000000000000000000000000000000000EF -S3154004D7F000000000000000000000000000000000DF -S3154004D80000000000000000000000000000000000CE -S3154004D81000000000000000000000000000000000BE -S3154004D82000000000000000000000000000000000AE -S3154004D830000000000000000000000000000000009E -S3154004D840000000000000000000000000000000008E -S3154004D850000000000000000000000000000000007E -S3154004D860000000000000000000000000000000006E -S3154004D870000000000000000000000000000000005E -S3154004D880000000000000000000000000000000004E -S3154004D890000000000000000000000000000000003E -S3154004D8A0000000000000000000000000000000002E -S3154004D8B0000000000000000000000000000000001E -S3154004D8C0000000000000000000000000000000000E -S3154004D8D000000000000000000000000000000000FE -S3154004D8E000000000000000000000000000000000EE -S3154004D8F000000000000000000000000000000000DE -S3154004D90000000000000000000000000000000000CD -S3154004D91000000000000000000000000000000000BD -S3154004D92000000000000000000000000000000000AD -S3154004D930000000000000000000000000000000009D -S3154004D940000000000000000000000000000000008D -S3154004D950000000000000000000000000000000007D -S3154004D960000000000000000000000000000000006D -S3154004D970000000000000000000000000000000005D -S3154004D980000000000000000000000000000000004D -S3154004D990000000000000000000000000000000003D -S3154004D9A0000000000000000000000000000000002D -S3154004D9B0000000000000000000000000000000001D -S3154004D9C0000000000000000000000000000000000D -S3154004D9D000000000000000000000000000000000FD -S3154004D9E000000000000000000000000000000000ED -S3154004D9F000000000000000000000000000000000DD -S3154004DA0000000000000000000000000000000000CC -S3154004DA1000000000000000000000000000000000BC -S3154004DA2000000000000000000000000000000000AC -S3154004DA30000000000000000000000000000000009C -S3154004DA40000000000000000000000000000000008C -S3154004DA50000000000000000000000000000000007C -S3154004DA60000000000000000000000000000000006C -S3154004DA70000000000000000000000000000000005C -S3154004DA80000000000000000000000000000000004C -S3154004DA90000000000000000000000000000000003C -S3154004DAA0000000000000000000000000000000002C -S3154004DAB0000000000000000000000000000000001C -S3154004DAC0000000000000000000000000000000000C -S3154004DAD000000000000000000000000000000000FC -S3154004DAE000000000000000000000000000000000EC -S3154004DAF000000000000000000000000000000000DC -S3154004DB0000000000000000000000000000000000CB -S3154004DB1000000000000000000000000000000000BB -S3154004DB2000000000000000000000000000000000AB -S3154004DB30000000000000000000000000000000009B -S3154004DB40000000000000000000000000000000008B -S3154004DB50000000000000000000000000000000007B -S3154004DB60000000000000000000000000000000006B -S3154004DB70000000000000000000000000000000005B -S3154004DB80000000000000000000000000000000004B -S3154004DB90000000000000000000000000000000003B -S3154004DBA0000000000000000000000000000000002B -S3154004DBB0000000000000000000000000000000001B -S3154004DBC0000000000000000000000000000000000B -S3154004DBD000000000000000000000000000000000FB -S3154004DBE000000000000000000000000000000000EB -S3154004DBF000000000000000000000000000000000DB -S3154004DC0000000000000000000000000000000000CA -S3154004DC1000000000000000000000000000000000BA -S3154004DC2000000000000000000000000000000000AA -S3154004DC30000000000000000000000000000000009A -S3154004DC40000000000000000000000000000000008A -S3154004DC50000000000000000000000000000000007A -S3154004DC60000000000000000000000000000000006A -S3154004DC70000000000000000000000000000000005A -S3154004DC80000000000000000000000000000000004A -S3154004DC90000000000000000000000000000000003A -S3154004DCA0000000000000000000000000000000002A -S3154004DCB0000000000000000000000000000000001A -S3154004DCC0000000000000000000000000000000000A -S3154004DCD000000000000000000000000000000000FA -S3154004DCE000000000000000000000000000000000EA -S3154004DCF000000000000000000000000000000000DA -S3154004DD0000000000000000000000000000000000C9 -S3154004DD1000000000000000000000000000000000B9 -S3154004DD2000000000000000000000000000000000A9 -S3154004DD300000000000000000000000000000000099 -S3154004DD400000000000000000000000000000000089 -S3154004DD500000000000000000000000000000000079 -S3154004DD600000000000000000000000000000000069 -S3154004DD700000000000000000000000000000000059 -S3154004DD800000000000000000000000000000000049 -S3154004DD900000000000000000000000000000000039 -S3154004DDA00000000000000000000000000000000029 -S3154004DDB00000000000000000000000000000000019 -S3154004DDC00000000000000000000000000000000009 -S3154004DDD000000000000000000000000000000000F9 -S3154004DDE000000000000000000000000000000000E9 -S3154004DDF000000000000000000000000000000000D9 -S3154004DE0000000000000000000000000000000000C8 -S3154004DE1000000000000000000000000000000000B8 -S3154004DE2000000000000000000000000000000000A8 -S3154004DE300000000000000000000000000000000098 -S3154004DE400000000000000000000000000000000088 -S3154004DE500000000000000000000000000000000078 -S3154004DE600000000000000000000000000000000068 -S3154004DE700000000000000000000000000000000058 -S3154004DE800000000000000000000000000000000048 -S3154004DE900000000000000000000000000000000038 -S3154004DEA00000000000000000000000000000000028 -S3154004DEB00000000000000000000000000000000018 -S3154004DEC00000000000000000000000000000000008 -S3154004DED000000000000000000000000000000000F8 -S3154004DEE000000000000000000000000000000000E8 -S3154004DEF000000000000000000000000000000000D8 -S3154004DF0000000000000000000000000000000000C7 -S3154004DF1000000000000000000000000000000000B7 -S3154004DF2000000000000000000000000000000000A7 -S3154004DF300000000000000000000000000000000097 -S3154004DF400000000000000000000000000000000087 -S3154004DF500000000000000000000000000000000077 -S3154004DF600000000000000000000000000000000067 -S3154004DF700000000000000000000000000000000057 -S3154004DF800000000000000000000000000000000047 -S3154004DF900000000000000000000000000000000037 -S3154004DFA00000000000000000000000000000000027 -S3154004DFB00000000000000000000000000000000017 -S3154004DFC00000000000000000000000000000000007 -S3154004DFD000000000000000000000000000000000F7 -S3154004DFE000000000000000000000000000000000E7 -S3154004DFF000000000000000000000000000000000D7 -S3154004E00000000000000000000000000000000000C6 -S3154004E01000000000000000000000000000000000B6 -S3154004E02000000000000000000000000000000000A6 -S3154004E0300000000000000000000000000000000096 -S3154004E0400000000000000000000000000000000086 -S3154004E0500000000000000000000000000000000076 -S3154004E0600000000000000000000000000000000066 -S3154004E0700000000000000000000000000000000056 -S3154004E0800000000000000000000000000000000046 -S3154004E0900000000000000000000000000000000036 -S3154004E0A00000000000000000000000000000000026 -S3154004E0B00000000000000000000000000000000016 -S3154004E0C00000000000000000000000000000000006 -S3154004E0D000000000000000000000000000000000F6 -S3154004E0E000000000000000000000000000000000E6 -S3154004E0F000000000000000000000000000000000D6 -S3154004E10000000000000000000000000000000000C5 -S3154004E11000000000000000000000000000000000B5 -S3154004E12000000000000000000000000000000000A5 -S3154004E1300000000000000000000000000000000095 -S3154004E1400000000000000000000000000000000085 -S3154004E1500000000000000000000000000000000075 -S3154004E1600000000000000000000000000000000065 -S3154004E1700000000000000000000000000000000055 -S3154004E1800000000000000000000000000000000045 -S3154004E1900000000000000000000000000000000035 -S3154004E1A00000000000000000000000000000000025 -S3154004E1B00000000000000000000000000000000015 -S3154004E1C00000000000000000000000000000000005 -S3154004E1D000000000000000000000000000000000F5 -S3154004E1E000000000000000000000000000000000E5 -S3154004E1F000000000000000000000000000000000D5 -S3154004E20000000000000000000000000000000000C4 -S3154004E21000000000000000000000000000000000B4 -S3154004E22000000000000000000000000000000000A4 -S3154004E2300000000000000000000000000000000094 -S3154004E2400000000000000000000000000000000084 -S3154004E2500000000000000000000000000000000074 -S3154004E2600000000000000000000000000000000064 -S3154004E2700000000000000000000000000000000054 -S3154004E2800000000000000000000000000000000044 -S3154004E2900000000000000000000000000000000034 -S3154004E2A00000000000000000000000000000000024 -S3154004E2B00000000000000000000000000000000014 -S3154004E2C00000000000000000000000000000000004 -S3154004E2D000000000000000000000000000000000F4 -S3154004E2E000000000000000000000000000000000E4 -S3154004E2F000000000000000000000000000000000D4 -S3154004E30000000000000000000000000000000000C3 -S3154004E31000000000000000000000000000000000B3 -S3154004E32000000000000000000000000000000000A3 -S3154004E3300000000000000000000000000000000093 -S3154004E3400000000000000000000000000000000083 -S3154004E3500000000000000000000000000000000073 -S3154004E3600000000000000000000000000000000063 -S3154004E3700000000000000000000000000000000053 -S3154004E3800000000000000000000000000000000043 -S3154004E3900000000000000000000000000000000033 -S3154004E3A00000000000000000000000000000000023 -S3154004E3B00000000000000000000000000000000013 -S3154004E3C00000000000000000000000000000000003 -S3154004E3D000000000000000000000000000000000F3 -S3154004E3E000000000000000000000000000000000E3 -S3154004E3F000000000000000000000000000000000D3 -S3154004E40000000000000000000000000000000000C2 -S3154004E41000000000000000000000000000000000B2 -S3154004E42000000000000000000000000000000000A2 -S3154004E4300000000000000000000000000000000092 -S3154004E4400000000000000000000000000000000082 -S3154004E4500000000000000000000000000000000072 -S3154004E4600000000000000000000000000000000062 -S3154004E4700000000000000000000000000000000052 -S3154004E4800000000000000000000000000000000042 -S3154004E4900000000000000000000000000000000032 -S3154004E4A00000000000000000000000000000000022 -S3154004E4B00000000000000000000000000000000012 -S3154004E4C00000000000000000000000000000000002 -S3154004E4D000000000000000000000000000000000F2 -S3154004E4E000000000000000000000000000000000E2 -S3154004E4F000000000000000000000000000000000D2 -S3154004E50000000000000000000000000000000000C1 -S3154004E51000000000000000000000000000000000B1 -S3154004E52000000000000000000000000000000000A1 -S3154004E5300000000000000000000000000000000091 -S3154004E5400000000000000000000000000000000081 -S3154004E5500000000000000000000000000000000071 -S3154004E5600000000000000000000000000000000061 -S3154004E5700000000000000000000000000000000051 -S3154004E5800000000000000000000000000000000041 -S3154004E5900000000000000000000000000000000031 -S3154004E5A00000000000000000000000000000000021 -S3154004E5B00000000000000000000000000000000011 -S3154004E5C00000000000000000000000000000000001 -S3154004E5D000000000000000000000000000000000F1 -S3154004E5E000000000000000000000000000000000E1 -S3154004E5F000000000000000000000000000000000D1 -S3154004E60000000000000000000000000000000000C0 -S3154004E61000000000000000000000000000000000B0 -S3154004E62000000000000000000000000000000000A0 -S3154004E6300000000000000000000000000000000090 -S3154004E6400000000000000000000000000000000080 -S3154004E6500000000000000000000000000000000070 -S3154004E6600000000000000000000000000000000060 -S3154004E6700000000000000000000000000000000050 -S3154004E6800000000000000000000000000000000040 -S3154004E6900000000000000000000000000000000030 -S3154004E6A00000000000000000000000000000000020 -S3154004E6B00000000000000000000000000000000010 -S3154004E6C00000000000000000000000000000000000 -S3154004E6D000000000000000000000000000000000F0 -S3154004E6E000000000000000000000000000000000E0 -S3154004E6F000000000000000000000000000000000D0 -S3154004E70000000000000000000000000000000000BF -S3154004E71000000000000000000000000000000000AF -S3154004E720000000000000000000000000000000009F -S3154004E730000000000000000000000000000000008F -S3154004E740000000000000000000000000000000007F -S3154004E750000000000000000000000000000000006F -S3154004E760000000000000000000000000000000005F -S3154004E770000000000000000000000000000000004F -S3154004E780000000000000000000000000000000003F -S3154004E790000000000000000000000000000000002F -S3154004E7A0000000000000000000000000000000001F -S3154004E7B0000000000000000000000000000000000F -S3154004E7C000000000000000000000000000000000FF -S3154004E7D000000000000000000000000000000000EF -S3154004E7E000000000000000000000000000000000DF -S3154004E7F000000000000000000000000000000000CF -S3154004E80000000000000000000000000000000000BE -S3154004E81000000000000000000000000000000000AE -S3154004E820000000000000000000000000000000009E -S3154004E830000000000000000000000000000000008E -S3154004E840000000000000000000000000000000007E -S3154004E850000000000000000000000000000000006E -S3154004E860000000000000000000000000000000005E -S3154004E870000000000000000000000000000000004E -S3154004E880000000000000000000000000000000003E -S3154004E890000000000000000000000000000000002E -S3154004E8A0000000000000000000000000000000001E -S3154004E8B0000000000000000000000000000000000E -S3154004E8C000000000000000000000000000000000FE -S3154004E8D000000000000000000000000000000000EE -S3154004E8E000000000000000000000000000000000DE -S3154004E8F000000000000000000000000000000000CE -S3154004E90000000000000000000000000000000000BD -S3154004E91000000000000000000000000000000000AD -S3154004E920000000000000000000000000000000009D -S3154004E930000000000000000000000000000000008D -S3154004E940000000000000000000000000000000007D -S3154004E950000000000000000000000000000000006D -S3154004E960000000000000000000000000000000005D -S3154004E970000000000000000000000000000000004D -S3154004E980000000000000000000000000000000003D -S3154004E990000000000000000000000000000000002D -S3154004E9A0000000000000000000000000000000001D -S3154004E9B0000000000000000000000000000000000D -S3154004E9C000000000000000000000000000000000FD -S3154004E9D000000000000000000000000000000000ED -S3154004E9E000000000000000000000000000000000DD -S3154004E9F000000000000000000000000000000000CD -S3154004EA0000000000000000000000000000000000BC -S3154004EA1000000000000000000000000000000000AC -S3154004EA20000000000000000000000000000000009C -S3154004EA30000000000000000000000000000000008C -S3154004EA40000000000000000000000000000000007C -S3154004EA50000000000000000000000000000000006C -S3154004EA60000000000000000000000000000000005C -S3154004EA70000000000000000000000000000000004C -S3154004EA80000000000000000000000000000000003C -S3154004EA90000000000000000000000000000000002C -S3154004EAA0000000000000000000000000000000001C -S3154004EAB0000000000000000000000000000000000C -S3154004EAC000000000000000000000000000000000FC -S3154004EAD000000000000000000000000000000000EC -S3154004EAE000000000000000000000000000000000DC -S3154004EAF000000000000000000000000000000000CC -S3154004EB0000000000000000000000000000000000BB -S3154004EB1000000000000000000000000000000000AB -S3154004EB20000000000000000000000000000000009B -S3154004EB30000000000000000000000000000000008B -S3154004EB40000000000000000000000000000000007B -S3154004EB50000000000000000000000000000000006B -S3154004EB60000000000000000000000000000000005B -S3154004EB70000000000000000000000000000000004B -S3154004EB80000000000000000000000000000000003B -S3154004EB90000000000000000000000000000000002B -S3154004EBA0000000000000000000000000000000001B -S3154004EBB0000000000000000000000000000000000B -S3154004EBC000000000000000000000000000000000FB -S3154004EBD000000000000000000000000000000000EB -S3154004EBE000000000000000000000000000000000DB -S3154004EBF000000000000000000000000000000000CB -S3154004EC0000000000000000000000000000000000BA -S3154004EC1000000000000000000000000000000000AA -S3154004EC20000000000000000000000000000000009A -S3154004EC30000000000000000000000000000000008A -S3154004EC40000000000000000000000000000000007A -S3154004EC50000000000000000000000000000000006A -S3154004EC60000000000000000000000000000000005A -S3154004EC70000000000000000000000000000000004A -S3154004EC80000000000000000000000000000000003A -S3154004EC90000000000000000000000000000000002A -S3154004ECA0000000000000000000000000000000001A -S3154004ECB0000000000000000000000000000000000A -S3154004ECC000000000000000000000000000000000FA -S3154004ECD000000000000000000000000000000000EA -S3154004ECE000000000000000000000000000000000DA -S3154004ECF000000000000000000000000000000000CA -S3154004ED0000000000000000000000000000000000B9 -S3154004ED1000000000000000000000000000000000A9 -S3154004ED200000000000000000000000000000000099 -S3154004ED300000000000000000000000000000000089 -S3154004ED400000000000000000000000000000000079 -S3154004ED500000000000000000000000000000000069 -S3154004ED600000000000000000000000000000000059 -S3154004ED700000000000000000000000000000000049 -S3154004ED800000000000000000000000000000000039 -S3154004ED900000000000000000000000000000000029 -S3154004EDA00000000000000000000000000000000019 -S3154004EDB00000000000000000000000000000000009 -S3154004EDC000000000000000000000000000000000F9 -S3154004EDD000000000000000000000000000000000E9 -S3154004EDE000000000000000000000000000000000D9 -S3154004EDF000000000000000000000000000000000C9 -S3154004EE0000000000000000000000000000000000B8 -S3154004EE1000000000000000000000000000000000A8 -S3154004EE200000000000000000000000000000000098 -S3154004EE300000000000000000000000000000000088 -S3154004EE400000000000000000000000000000000078 -S3154004EE500000000000000000000000000000000068 -S3154004EE600000000000000000000000000000000058 -S3154004EE700000000000000000000000000000000048 -S3154004EE800000000000000000000000000000000038 -S3154004EE900000000000000000000000000000000028 -S3154004EEA00000000000000000000000000000000018 -S3154004EEB00000000000000000000000000000000008 -S3154004EEC000000000000000000000000000000000F8 -S3154004EED000000000000000000000000000000000E8 -S3154004EEE000000000000000000000000000000000D8 -S3154004EEF000000000000000000000000000000000C8 -S3154004EF0000000000000000000000000000000000B7 -S3154004EF1000000000000000000000000000000000A7 -S3154004EF200000000000000000000000000000000097 -S3154004EF300000000000000000000000000000000087 -S3154004EF400000000000000000000000000000000077 -S3154004EF500000000000000000000000000000000067 -S3154004EF600000000000000000000000000000000057 -S3154004EF700000000000000000000000000000000047 -S3154004EF800000000000000000000000000000000037 -S3154004EF900000000000000000000000000000000027 -S3154004EFA00000000000000000000000000000000017 -S3154004EFB00000000000000000000000000000000007 -S3154004EFC000000000000000000000000000000000F7 -S3154004EFD000000000000000000000000000000000E7 -S3154004EFE000000000000000000000000000000000D7 -S3154004EFF000000000000000000000000000000000C7 -S3154004F00000000000000000000000000000000000B6 -S3154004F01000000000000000000000000000000000A6 -S3154004F0200000000000000000000000000000000096 -S3154004F0300000000000000000000000000000000086 -S3154004F0400000000000000000000000000000000076 -S3154004F0500000000000000000000000000000000066 -S3154004F0600000000000000000000000000000000056 -S3154004F0700000000000000000000000000000000046 -S3154004F0800000000000000000000000000000000036 -S3154004F0900000000000000000000000000000000026 -S3154004F0A00000000000000000000000000000000016 -S3154004F0B00000000000000000000000000000000006 -S3154004F0C000000000000000000000000000000000F6 -S3154004F0D000000000000000000000000000000000E6 -S3154004F0E000000000000000000000000000000000D6 -S3154004F0F000000000000000000000000000000000C6 -S3154004F10000000000000000000000000000000000B5 -S3154004F11000000000000000000000000000000000A5 -S3154004F1200000000000000000000000000000000095 -S3154004F1300000000000000000000000000000000085 -S3154004F1400000000000000000000000000000000075 -S3154004F1500000000000000000000000000000000065 -S3154004F1600000000000000000000000000000000055 -S3154004F1700000000000000000000000000000000045 -S3154004F1800000000000000000000000000000000035 -S3154004F1900000000000000000000000000000000025 -S3154004F1A00000000000000000000000000000000015 -S3154004F1B00000000000000000000000000000000005 -S3154004F1C000000000000000000000000000000000F5 -S3154004F1D000000000000000000000000000000000E5 -S3154004F1E000000000000000000000000000000000D5 -S3154004F1F000000000000000000000000000000000C5 -S3154004F20000000000000000000000000000000000B4 -S3154004F21000000000000000000000000000000000A4 -S3154004F2200000000000000000000000000000000094 -S3154004F2300000000000000000000000000000000084 -S3154004F2400000000000000000000000000000000074 -S3154004F2500000000000000000000000000000000064 -S3154004F2600000000000000000000000000000000054 -S3154004F2700000000000000000000000000000000044 -S3154004F2800000000000000000000000000000000034 -S3154004F2900000000000000000000000000000000024 -S3154004F2A00000000000000000000000000000000014 -S3154004F2B00000000000000000000000000000000004 -S3154004F2C000000000000000000000000000000000F4 -S3154004F2D000000000000000000000000000000000E4 -S3154004F2E000000000000000000000000000000000D4 -S3154004F2F000000000000000000000000000000000C4 -S3154004F30000000000000000000000000000000000B3 -S3154004F31000000000000000000000000000000000A3 -S3154004F3200000000000000000000000000000000093 -S3154004F3300000000000000000000000000000000083 -S3154004F3400000000000000000000000000000000073 -S3154004F3500000000000000000000000000000000063 -S3154004F3600000000000000000000000000000000053 -S3154004F3700000000000000000000000000000000043 -S3154004F3800000000000000000000000000000000033 -S3154004F3900000000000000000000000000000000023 -S3154004F3A00000000000000000000000000000000013 -S3154004F3B00000000000000000000000000000000003 -S3154004F3C000000000000000000000000000000000F3 -S3154004F3D000000000000000000000000000000000E3 -S3154004F3E000000000000000000000000000000000D3 -S3154004F3F000000000000000000000000000000000C3 -S3154004F40000000000000000000000000000000000B2 -S3154004F41000000000000000000000000000000000A2 -S3154004F4200000000000000000000000000000000092 -S3154004F4300000000000000000000000000000000082 -S3154004F4400000000000000000000000000000000072 -S3154004F4500000000000000000000000000000000062 -S3154004F4600000000000000000000000000000000052 -S3154004F4700000000000000000000000000000000042 -S3154004F4800000000000000000000000000000000032 -S3154004F4900000000000000000000000000000000022 -S3154004F4A00000000000000000000000000000000012 -S3154004F4B00000000000000000000000000000000002 -S3154004F4C000000000000000000000000000000000F2 -S3154004F4D000000000000000000000000000000000E2 -S3154004F4E000000000000000000000000000000000D2 -S3154004F4F000000000000000000000000000000000C2 -S3154004F50000000000000000000000000000000000B1 -S3154004F51000000000000000000000000000000000A1 -S3154004F5200000000000000000000000000000000091 -S3154004F5300000000000000000000000000000000081 -S3154004F5400000000000000000000000000000000071 -S3154004F5500000000000000000000000000000000061 -S3154004F5600000000000000000000000000000000051 -S3154004F5700000000000000000000000000000000041 -S3154004F5800000000000000000000000000000000031 -S3154004F5900000000000000000000000000000000021 -S3154004F5A00000000000000000000000000000000011 -S3154004F5B00000000000000000000000000000000001 -S3154004F5C000000000000000000000000000000000F1 -S3154004F5D000000000000000000000000000000000E1 -S3154004F5E000000000000000000000000000000000D1 -S3154004F5F000000000000000000000000000000000C1 -S3154004F60000000000000000000000000000000000B0 -S3154004F61000000000000000000000000000000000A0 -S3154004F6200000000000000000000000000000000090 -S3154004F6300000000000000000000000000000000080 -S3154004F6400000000000000000000000000000000070 -S3154004F6500000000000000000000000000000000060 -S3154004F6600000000000000000000000000000000050 -S3154004F6700000000000000000000000000000000040 -S3154004F6800000000000000000000000000000000030 -S3154004F6900000000000000000000000000000000020 -S3154004F6A00000000000000000000000000000000010 -S3154004F6B00000000000000000000000000000000000 -S3154004F6C000000000000000000000000000000000F0 -S3154004F6D000000000000000000000000000000000E0 -S3154004F6E000000000000000000000000000000000D0 -S3154004F6F000000000000000000000000000000000C0 -S3154004F70000000000000000000000000000000000AF -S3154004F710000000000000000000000000000000009F -S3154004F720000000000000000000000000000000008F -S3154004F730000000000000000000000000000000007F -S3154004F740000000000000000000000000000000006F -S3154004F750000000000000000000000000000000005F -S3154004F760000000000000000000000000000000004F -S3154004F770000000000000000000000000000000003F -S3154004F780000000000000000000000000000000002F -S3154004F790000000000000000000000000000000001F -S3154004F7A0000000000000000000000000000000000F -S3154004F7B000000000000000000000000000000000FF -S3154004F7C000000000000000000000000000000000EF -S3154004F7D000000000000000000000000000000000DF -S3154004F7E000000000000000000000000000000000CF -S3154004F7F000000000000000000000000000000000BF -S3154004F80000000000000000000000000000000000AE -S3154004F810000000000000000000000000000000009E -S3154004F820000000000000000000000000000000008E -S3154004F830000000000000000000000000000000007E -S3154004F840000000000000000000000000000000006E -S3154004F850000000000000000000000000000000005E -S3154004F860000000000000000000000000000000004E -S3154004F870000000000000000000000000000000003E -S3154004F880000000000000000000000000000000002E -S3154004F890000000000000000000000000000000001E -S3154004F8A0000000000000000000000000000000000E -S3154004F8B000000000000000000000000000000000FE -S3154004F8C000000000000000000000000000000000EE -S3154004F8D000000000000000000000000000000000DE -S3154004F8E000000000000000000000000000000000CE -S3154004F8F000000000000000000000000000000000BE -S3154004F90000000000000000000000000000000000AD -S3154004F910000000000000000000000000000000009D -S3154004F920000000000000000000000000000000008D -S3154004F930000000000000000000000000000000007D -S3154004F940000000000000000000000000000000006D -S3154004F950000000000000000000000000000000005D -S3154004F960000000000000000000000000000000004D -S3154004F970000000000000000000000000000000003D -S3154004F980000000000000000000000000000000002D -S3154004F990000000000000000000000000000000001D -S3154004F9A0000000000000000000000000000000000D -S3154004F9B000000000000000000000000000000000FD -S3154004F9C000000000000000000000000000000000ED -S3154004F9D000000000000000000000000000000000DD -S3154004F9E000000000000000000000000000000000CD -S3154004F9F000000000000000000000000000000000BD -S3154004FA0000000000000000000000000000000000AC -S3154004FA10000000000000000000000000000000009C -S3154004FA20000000000000000000000000000000008C -S3154004FA30000000000000000000000000000000007C -S3154004FA40000000000000000000000000000000006C -S3154004FA50000000000000000000000000000000005C -S3154004FA60000000000000000000000000000000004C -S3154004FA70000000000000000000000000000000003C -S3154004FA80000000000000000000000000000000002C -S3154004FA90000000000000000000000000000000001C -S3154004FAA0000000000000000000000000000000000C -S3154004FAB000000000000000000000000000000000FC -S3154004FAC000000000000000000000000000000000EC -S3154004FAD000000000000000000000000000000000DC -S3154004FAE000000000000000000000000000000000CC -S3154004FAF000000000000000000000000000000000BC -S3154004FB0000000000000000000000000000000000AB -S3154004FB10000000000000000000000000000000009B -S3154004FB20000000000000000000000000000000008B -S3154004FB30000000000000000000000000000000007B -S3154004FB40000000000000000000000000000000006B -S3154004FB50000000000000000000000000000000005B -S3154004FB60000000000000000000000000000000004B -S3154004FB70000000000000000000000000000000003B -S3154004FB80000000000000000000000000000000002B -S3154004FB90000000000000000000000000000000001B -S3154004FBA0000000000000000000000000000000000B -S3154004FBB000000000000000000000000000000000FB -S3154004FBC000000000000000000000000000000000EB -S3154004FBD000000000000000000000000000000000DB -S3154004FBE000000000000000000000000000000000CB -S3154004FBF000000000000000000000000000000000BB -S3154004FC0000000000000000000000000000000000AA -S3154004FC10000000000000000000000000000000009A -S3154004FC20000000000000000000000000000000008A -S3154004FC30000000000000000000000000000000007A -S3154004FC40000000000000000000000000000000006A -S3154004FC50000000000000000000000000000000005A -S3154004FC60000000000000000000000000000000004A -S3154004FC70000000000000000000000000000000003A -S3154004FC80000000000000000000000000000000002A -S3154004FC90000000000000000000000000000000001A -S3154004FCA0000000000000000000000000000000000A -S3154004FCB000000000000000000000000000000000FA -S3154004FCC000000000000000000000000000000000EA -S3154004FCD000000000000000000000000000000000DA -S3154004FCE000000000000000000000000000000000CA -S3154004FCF000000000000000000000000000000000BA -S3154004FD0000000000000000000000000000000000A9 -S3154004FD100000000000000000000000000000000099 -S3154004FD200000000000000000000000000000000089 -S3154004FD300000000000000000000000000000000079 -S3154004FD400000000000000000000000000000000069 -S3154004FD500000000000000000000000000000000059 -S3154004FD600000000000000000000000000000000049 -S3154004FD700000000000000000000000000000000039 -S3154004FD800000000000000000000000000000000029 -S3154004FD900000000000000000000000000000000019 -S3154004FDA00000000000000000000000000000000009 -S3154004FDB000000000000000000000000000000000F9 -S3154004FDC000000000000000000000000000000000E9 -S3154004FDD000000000000000000000000000000000D9 -S3154004FDE000000000000000000000000000000000C9 -S3154004FDF000000000000000000000000000000000B9 -S3154004FE0000000000000000000000000000000000A8 -S3154004FE100000000000000000000000000000000098 -S3154004FE200000000000000000000000000000000088 -S3154004FE300000000000000000000000000000000078 -S3154004FE400000000000000000000000000000000068 -S3154004FE500000000000000000000000000000000058 -S3154004FE600000000000000000000000000000000048 -S3154004FE700000000000000000000000000000000038 -S3154004FE800000000000000000000000000000000028 -S3154004FE900000000000000000000000000000000018 -S3154004FEA00000000000000000000000000000000008 -S3154004FEB000000000000000000000000000000000F8 -S3154004FEC000000000000000000000000000000000E8 -S3154004FED000000000000000000000000000000000D8 -S3154004FEE000000000000000000000000000000000C8 -S3154004FEF000000000000000000000000000000000B8 -S3154004FF0000000000000000000000000000000000A7 -S3154004FF100000000000000000000000000000000097 -S3154004FF200000000000000000000000000000000087 -S3154004FF300000000000000000000000000000000077 -S3154004FF400000000000000000000000000000000067 -S3154004FF500000000000000000000000000000000057 -S3154004FF600000000000000000000000000000000047 -S3154004FF700000000000000000000000000000000037 -S3154004FF800000000000000000000000000000000027 -S3154004FF900000000000000000000000000000000017 -S3154004FFA00000000000000000000000000000000007 -S3154004FFB000000000000000000000000000000000F7 -S3154004FFC000000000000000000000000000000000E7 -S3154004FFD000000000000000000000000000000000D7 -S3154004FFE000000000000000000000000000000000C7 -S3154004FFF000000000000000000000000000000000B7 -S3154005000000000002000000030000000000000000A0 -S315400500100000000100000000FFFFFFFE0000000396 -S3154005002055555554FFFFFFFE0000000355555554E1 -S31540050030700FFFFE00000007100249240000000073 -S315400500400000000000000000000000020000000360 -S315400500500000000000000003FFFFFFFEFFFFFFFF5B -S3154005006000000002FFFFFFFD000000000000000049 -S31540050070000000010000000000000000FFFFFFFF38 -S315400500800000000000000001FFFFFFFFFFFFFFFF2C -S31540050090FFFFFFFF00000001FFFFFFFFFFFFFFFE21 -S315400500A00000000300000000FFFFFFFEFFFFFFFD0D -S315400500B000000000000000090000000700000001E4 -S315400500C0FFFFFFF700000002FFFFFFFCFFFFFFF801 -S315400500D000000002FFFFFFFCFFFFFFF8FFFFFFFCEC -S315400500E00000000200000008FFFFFFFCFFFFFFFEC7 -S315400500F0FFFFFFF8FFFFFFF800000001FFFFFFF8D5 -S31540050100FFFFFFF7000000000000000B00000002A3 -S31540050110000000050000002F000000020000001747 -S3154005012000003039000002A700000012FFFF076CEF -S315400501300000004DFFFFFCC600003039FFFFFD59AA -S31540050140FFFFFFEEFFFF076CFFFFFFB30000033A1B -S3154005015000000091FFFFE84100000000FFFFFD841D -S31540050160FFFED02F000000000000F6FA006E498120 -S315400501700000000000000000000000000000000034 -S31540050180FFFFF0000000000200000003000000062B -S3154005019000000002FFFFFFFDFFFFFFFA0000000021 -S315400501A0000000010000000000000000FFFFFFFF07 -S315400501B00000000000000001FFFFFFFFFFFFFFFFFB -S315400501C0FFFFFFFF00000001FFFFFFFFFFFFFFFEF0 -S315400501D000000003FFFFFFFAFFFFFFFEFFFFFFFDE5 -S315400501E000000006000000000000000000000009B5 -S315400501F000000000000000000000000000000000B4 -S31540050200000000000000000100000002000000039D -S315400502100000000000000000000000000000000093 -S31540050220FFFFFFFF00020000000000000000000085 -S3154005023040050228400502284005023040050230A7 -S315400502404005023840050238400502404005024057 -S315400502504005024840050248400502504005025007 -S3154005026040050258400502584005026040050260B7 -S315400502704005026840050268400502704005027067 -S315400502804005027840050278400502804005028017 -S3154005029040050288400502884005029040050290C7 -S315400502A04005029840050298400502A0400502A077 -S315400502B0400502A8400502A8400502B0400502B027 -S315400502C0400502B8400502B8400502C0400502C0D7 -S315400502D0400502C8400502C8400502D0400502D087 -S315400502E0400502D8400502D8400502E0400502E037 -S315400502F0400502E8400502E8400502F0400502F0E7 -S31540050300400502F8400502F8400503004005030094 -S315400503104005030840050308400503104005031042 -S3154005032040050318400503184005032040050320F2 -S3154005033040050328400503284005033040050330A2 -S315400503404005033840050338400503404005034052 -S315400503504005034840050348400503504005035002 -S3154005036040050358400503584005036040050360B2 -S315400503704005036840050368400503704005037062 -S315400503804005037840050378400503804005038012 -S3154005039040050388400503884005039040050390C2 -S315400503A04005039840050398400503A0400503A072 -S315400503B0400503A8400503A8400503B0400503B022 -S315400503C0400503B8400503B8400503C0400503C0D2 -S315400503D0400503C8400503C8400503D0400503D082 -S315400503E0400503D8400503D8400503E0400503E032 -S315400503F0400503E8400503E8400503F0400503F0E2 -S31540050400400503F8400503F840050400400504008F -S31540050410400504084005040840050410400504103D -S3154005042040050418400504184005042040050420ED -S31540050430400504284005042840050430400504309D -S31540050440400504384005043840050440400504404D -S3154005045040050448400504484005045040050450FD -S3154005046040050458400504584005046040050460AD -S31540050470400504684005046840050470400504705D -S31540050480400504784005047840050480400504800D -S3154005049040050488400504884005049040050490BD -S315400504A04005049840050498400504A0400504A06D -S315400504B0400504A8400504A8400504B0400504B01D -S315400504C0400504B8400504B8400504C0400504C0CD -S315400504D0400504C8400504C8400504D0400504D07D -S315400504E0400504D8400504D8400504E0400504E02D -S315400504F0400504E8400504E8400504F0400504F0DD -S31540050500400504F8400504F840050500400505008A -S315400505104005050840050508400505104005051038 -S3154005052040050518400505184005052040050520E8 -S315400505304005052840050528400505304005053098 -S315400505404005053840050538400505404005054048 -S3154005055040050548400505484005055040050550F8 -S3154005056040050558400505584005056040050560A8 -S315400505704005056840050568400505704005057058 -S315400505804005057840050578400505804005058008 -S3154005059040050588400505884005059040050590B8 -S315400505A04005059840050598400505A0400505A068 -S315400505B0400505A8400505A8400505B0400505B018 -S315400505C0400505B8400505B8400505C0400505C0C8 -S315400505D0400505C8400505C8400505D0400505D078 -S315400505E0400505D8400505D8400505E0400505E028 -S315400505F0400505E8400505E8400505F0400505F0D8 -S31540050600400505F8400505F8400506004005060085 -S315400506104005060840050608400506104005061033 -S3154005062040050618400506184005062040050620E3 -S3154005063000000000400506300000000000000000F4 -S31540050640000000000000000200000000000000005D -S31540050650000000000000000000000000000000004F -S31540050660000000000000000000000000000000003F -S31540050670000000000000000000000000000000002F -S31540050680000000000000000000000000000000001F -S31540050690000000000000000000000000000000000F -S315400506A0000000000000000000000000400509941D -S315400506B040050A6040050B2C0000000000000000C4 -S315400506C000000000000000000000000000000000DF -S315400506D00000000000000000000000004001CA8044 -S315400506E000000000000000000000000000000000BF -S315400506F000000000000000000000000000000000AF -S31540050700000000000000000000000000000000009E -S31540050710000000000000000000000000000000008E -S31540050720000000000000000000000000000000007E -S31540050730000000000000000000000000000000006E -S31540050740000000000000000000000000000000005E -S315400507500000000000000001330EABCD1234E66DFB -S31540050760DEEC0005000B0000000000000000000064 -S31540050770000000000000000000000000000000002E -S31540050780000000000000000000000000000000001E -S31540050790000000000000000000000000000000000E -S315400507A000000000000000000000000000000000FE -S315400507B000000000000000000000000000000000EE -S315400507C000000000000000000000000000000000DE -S315400507D000000000000000000000000000000000CE -S315400507E000000000000000000000000000000000BE -S315400507F000000000000000000000000000000000AE -S31540050800000000000000000000000000000000009D -S31540050810000000000000000000000000000000008D -S31540050820000000000000000000000000000000007D -S31540050830000000000000000000000000000000006D -S31540050840000000000000000000000000000000005D -S31540050850000000000000000000000000000000004D -S31540050860000000000000000000000000000000003D -S31540050870000000000000000000000000000000002D -S31540050880000000000000000000000000000000001D -S31540050890000000000000000000000000000000000D -S315400508A000000000000000000000000000000000FD -S315400508B000000000000000000000000000000000ED -S315400508C000000000000000000000000000000000DD -S315400508D000000000000000000000000000000000CD -S315400508E000000000000000000000000000000000BD -S315400508F000000000000000000000000000000000AD -S31540050900000000000000000000000000000000009C -S31540050910000000000000000000000000000000008C -S31540050920000000000000000000000000000000007C -S31540050930000000000000000000000000000000006C -S31540050940000000000000000000000000000000005C -S31540050950000000000000000000000000000000004C -S31540050960000000000000000000000000000000003C -S31540050970000000000000000000000000000000002C -S31540050980000000000000000000000000000000001C -S31540050990000000000000000000000000000000000C -S315400509A000000000000000000000000000000000FC -S315400509B000000000000000000000000000000000EC -S315400509C000000000000000000000000000000000DC -S315400509D000000000000000000000000000000000CC -S315400509E000000000000000000000000000000000BC -S315400509F000000000000000000000000000000000AC -S31540050A00000000000000000000000000000000009B -S31540050A10000000000000000000000000000000008B -S31540050A20000000000000000000000000000000007B -S31540050A30000000000000000000000000000000006B -S31540050A40000000000000000000000000000000005B -S31540050A50000000000000000000000000000000004B -S31540050A60000000000000000000000000000000003B -S31540050A70000000000000000000000000000000002B -S31540050A80000000000000000000000000000000001B -S31540050A90000000000000000000000000000000000B -S31540050AA000000000000000000000000000000000FB -S31540050AB000000000000000000000000000000000EB -S31540050AC000000000000000000000000000000000DB -S31540050AD000000000000000000000000000000000CB -S31540050AE000000000000000000000000000000000BB -S31540050AF000000000000000000000000000000000AB -S31540050B00000000000000000000000000000000009A -S31540050B10000000000000000000000000000000008A -S31540050B20000000000000000000000000000000007A -S31540050B30000000000000000000000000000000006A -S31540050B40000000000000000000000000000000005A -S31540050B50000000000000000000000000000000004A -S31540050B60000000000000000000000000000000003A -S31540050B70000000000000000000000000000000002A -S31540050B80000000000000000000000000000000001A -S31540050B90000000000000000000000000000000000A -S31540050BA000000000000000000000000000000000FA -S31540050BB000000000000000000000000000000000EA -S31540050BC000000000000000000000000000000000DA -S31540050BD000000000000000000000000000000000CA -S31540050BE000000000000000000000000000000000BA -S31540050BF00000000000000000400506A800000000B7 -S31540050C000000000000000000000000000000000099 -S31540050C100000000000000000000000000000000089 -S31540050C200000000000000000000000000000000079 -S31540050C3000000000800001000000000800000007D9 -S31540050C40000000060000000300000000FFFF8AD0F8 -S30940050C5080000310C2 +S31540048C30000000008000010000000008000000075A +S31540048C40000000060000000300000000FFFF8AD079 +S30D40048C5080000310000000003F S70540000000BA diff --git a/designs/leon3-gr-xc3s-1500/testbench.vhd b/designs/leon3-gr-xc3s-1500/testbench.vhd index fefe0e1b..4a8f4cd9 100644 --- a/designs/leon3-gr-xc3s-1500/testbench.vhd +++ b/designs/leon3-gr-xc3s-1500/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -161,22 +161,7 @@ component leon3mp usb_txvalid : out std_ulogic; usb_validh : inout std_ulogic; usb_xcvrsel : out std_ulogic; - usb_vbus : in std_ulogic; - - ata_rstn : out std_logic; - ata_data : inout std_logic_vector(15 downto 0); - ata_da : out std_logic_vector(2 downto 0); - ata_cs0 : out std_logic; - ata_cs1 : out std_logic; - ata_dior : out std_logic; - ata_diow : out std_logic; - ata_iordy : in std_logic; - ata_intrq : in std_logic; - ata_dmarq : in std_logic; - ata_dmack : out std_logic; - --ata_dasp : in std_logic; - ata_csel : out std_logic - + usb_vbus : in std_ulogic ); end component; @@ -267,22 +252,6 @@ signal usb_xcvrsel : std_ulogic; signal usb_vbus : std_ulogic; signal rhvalid : std_ulogic; -signal ata_data : std_logic_vector(15 downto 0); -signal ata_da : std_logic_vector(2 downto 0); -signal ata_cs0 : std_logic; -signal ata_cs1 : std_logic; -signal ata_dior : std_logic; -signal ata_diow : std_logic; -signal ata_iordy : std_logic; -signal ata_intrq : std_logic; -signal ata_dmarq : std_logic; -signal ata_dmack : std_logic; -signal ata_rstn : std_logic; -signal ata_csel : std_logic; - -signal from_ata : ata_out_type := ATAO_RESET_VECTOR; -signal to_ata : ata_in_type := ATAI_RESET_VECTOR; - constant lresp : boolean := false; begin @@ -303,9 +272,6 @@ begin spw_rxdp <= spw_txdp; spw_rxdn <= spw_txdn; spw_rxsp <= spw_txsp; spw_rxsn <= spw_txsn; - ata_iordy <= 'H'; ata_intrq <= 'H'; ata_dmarq <= 'H'; - ata_data <= (others => 'H'); - cpu : leon3mp generic map ( fabtech, memtech, padtech, clktech, disas, dbguart, pclow ) @@ -320,8 +286,7 @@ begin spw_rxsp, spw_rxsn, spw_txdp, spw_txdn, spw_txsp, spw_txsn, usb_clkout, usb_d, usb_linestate, usb_opmode, usb_reset, usb_rxactive, usb_rxerror, usb_rxvalid, usb_suspend, usb_termsel, usb_txready, usb_txvalid, usb_validh, - usb_xcvrsel, usb_vbus, ata_rstn, ata_data, ata_da, ata_cs0, ata_cs1, - ata_dior, ata_diow, ata_iordy, ata_intrq, ata_dmarq, ata_dmack, ata_csel + usb_xcvrsel, usb_vbus ); u0: mt48lc16m16a2 generic map (index => 0, fname => sdramfile) @@ -341,17 +306,6 @@ begin port map (address(romdepth-1 downto 0), data(31 downto 24), romsn(0), writen, oen); - disk: ata_device - generic map( sector_length => 512, log2_size => 14) - port map( clk => clk, rst => rst, d => ata_data, atai => to_ata, - atao => from_ata - ); - to_ata.cs(0)<=ata_cs0; to_ata.cs(1)<=ata_cs1; - to_ata.da<=ata_da; to_ata.dmack<=ata_dmack; - to_ata.dior<=ata_dior; to_ata.diow<=ata_diow; to_ata.reset<=ata_rstn; - ata_dmarq<=from_ata.dmarq; ata_intrq<=from_ata.intrq; ata_iordy<=from_ata.iordy; - - phy0 : if (CFG_GRETH = 1) generate emdio <= 'H'; erxd <= erxdt(3 downto 0); diff --git a/designs/leon3-gr-xc3s-1500/tkconfig.h b/designs/leon3-gr-xc3s-1500/tkconfig.h index 7f8fdc91..a6a39e9a 100644 --- a/designs/leon3-gr-xc3s-1500/tkconfig.h +++ b/designs/leon3-gr-xc3s-1500/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -871,25 +893,6 @@ #define CFG_GRETH_FIFO 8 #endif -#ifndef CONFIG_ATA_ENABLE -#define CONFIG_ATA_ENABLE 0 -#endif - -#ifndef CONFIG_ATAIO -#define CONFIG_ATAIO 0 -#endif - -#ifndef CONFIG_ATAIRQ -#define CONFIG_ATAIRQ 0 -#endif - -#ifndef CONFIG_ATA_MWDMA -#define CONFIG_ATA_MWDMA 0 -#endif - -#ifndef CONFIG_ATA_FIFO -#define CONFIG_ATA_FIFO 8 -#endif #ifndef CONFIG_CAN_ENABLE #define CONFIG_CAN_ENABLE 0 #endif diff --git a/designs/leon3-gr-xc3s-1500/vga_clkgen.vhd b/designs/leon3-gr-xc3s-1500/vga_clkgen.vhd index 7277ec42..b1ee2d14 100644 --- a/designs/leon3-gr-xc3s-1500/vga_clkgen.vhd +++ b/designs/leon3-gr-xc3s-1500/vga_clkgen.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-gr-xc6s/.config b/designs/leon3-gr-xc6s/.config index 18c464c0..8a289386 100644 --- a/designs/leon3-gr-xc6s/.config +++ b/designs/leon3-gr-xc6s/.config @@ -42,6 +42,7 @@ CONFIG_HAS_SHARED_GRFPU=y # CONFIG_SYN_TM65GPLUS is not set # CONFIG_SYN_TSMC90 is not set # CONFIG_SYN_UMC is not set +# CONFIG_SYN_KINTEX7 is not set # CONFIG_SYN_SPARTAN2 is not set # CONFIG_SYN_SPARTAN3 is not set # CONFIG_SYN_SPARTAN3E is not set @@ -52,6 +53,7 @@ CONFIG_SYN_SPARTAN6=y # CONFIG_SYN_VIRTEX4 is not set # CONFIG_SYN_VIRTEX5 is not set # CONFIG_SYN_VIRTEX6 is not set +# CONFIG_SYN_VIRTEX7 is not set # CONFIG_SYN_INFER_RAM is not set # CONFIG_SYN_INFER_PADS is not set # CONFIG_SYN_NO_ASYNC is not set @@ -71,6 +73,7 @@ CONFIG_SYN_SPARTAN6=y # CONFIG_CLK_FUSPLL is not set # CONFIG_CLK_LIB18T is not set # CONFIG_CLK_RHUMC is not set +# CONFIG_CLK_CLKPLLE2 is not set # CONFIG_CLK_CLKDLL is not set CONFIG_CLK_DCM=y CONFIG_CLK_MUL=2 @@ -78,12 +81,16 @@ CONFIG_CLK_DIV=2 # CONFIG_PCI_CLKDLL is not set # CONFIG_CLK_NOFB is not set # CONFIG_PCI_SYSCLK is not set -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 # # Processor # +CONFIG_LEON3=y +CONFIG_PROC_NUM=1 +# CONFIG_LEON3_MIN is not set +# CONFIG_LEON3_GP is not set +# CONFIG_LEON3_HP is not set +CONFIG_LEON3_CUSTOM=y # # Integer unit @@ -173,11 +180,13 @@ CONFIG_MMU_REPARRAY=y CONFIG_MMU_I8=y # CONFIG_MMU_I16 is not set # CONFIG_MMU_I32 is not set +# CONFIG_MMU_I64 is not set # CONFIG_MMU_D2 is not set # CONFIG_MMU_D4 is not set CONFIG_MMU_D8=y # CONFIG_MMU_D16 is not set # CONFIG_MMU_D32 is not set +# CONFIG_MMU_D64 is not set CONFIG_MMU_FASTWB=y CONFIG_MMU_PAGE_4K=y # CONFIG_MMU_PAGE_8K is not set @@ -230,7 +239,6 @@ CONFIG_APB_HADDR=800 # CONFIG_DSU_UART=y CONFIG_DSU_JTAG=y -# CONFIG_GRUSB_DCL is not set CONFIG_DSU_ETH=y # CONFIG_DSU_ETHSZ1 is not set # CONFIG_DSU_ETHSZ2 is not set @@ -294,21 +302,11 @@ CONFIG_GRETH_ENABLE=y CONFIG_GRETH_FIFO32=y # CONFIG_GRETH_FIFO64 is not set -# -# IDE Disk controller -# -# CONFIG_ATA_ENABLE is not set - # # CAN # # CONFIG_CAN_ENABLE is not set -# -# USB 2.0 Device Controller -# -# CONFIG_GRUSBDC_ENABLE is not set - # # USB 2.0 Host Controller # @@ -361,6 +359,7 @@ CONFIG_SPIMCTRL=y CONFIG_SPIMCTRL_READCMD=0B # CONFIG_SPIMCTRL_DUMMYBYTE is not set # CONFIG_SPIMCTRL_DUALOUTPUT is not set +CONFIG_SPIMCTRL_OFFSET=0 CONFIG_SPIMCTRL_SCALER=1 CONFIG_SPIMCTRL_ASCALER=8 CONFIG_SPIMCTRL_PWRUPCNT=0 diff --git a/designs/leon3-gr-xc6s/Makefile b/designs/leon3-gr-xc6s/Makefile index 41a4c1c5..7e7c0e9f 100644 --- a/designs/leon3-gr-xc6s/Makefile +++ b/designs/leon3-gr-xc6s/Makefile @@ -3,6 +3,7 @@ include .config GRLIB=../.. TOP=leon3mp BOARD=gr-xc6s +DESIGN=leon3-gr-xc6s include $(GRLIB)/boards/$(BOARD)/Makefile.inc DEVICE=$(PART)-$(PACKAGE)$(SPEED) #UCF=$(GRLIB)/boards/$(BOARD)/$(TOP).ucf @@ -19,6 +20,7 @@ endif ifeq ("$(CONFIG_GRUSB_DCL)","y") UCF+=usb.ucf endif +UCF_PLANAHEAD=$(UCF) QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf EFFORT=high ISEMAPOPT=-timing @@ -31,10 +33,17 @@ VHDLOPTSYNFILES= mig37/mig_37/user_design/rtl/iodrp_controller.vhd \ mig37/mig_37/user_design/rtl/mcb_soft_calibration_top.vhd \ mig37/mig_37/user_design/rtl/memc3_infrastructure.vhd \ mig37/mig_37/user_design/rtl/memc3_wrapper.vhd \ - mig37/mig_37/user_design/rtl/mig_37.vhd -VHDLSYNFILES= \ - config.vhd rgmii.vhd svga2ch7301c.vhd ahbrom.vhd \ - ahb2mig_grxc6s_2p.vhd vga_clkgen.vhd leon3mp.vhd + mig37/mig_37/user_design/rtl/mig_37.vhd \ + mig39/mig_39/user_design/rtl/iodrp_controller.vhd \ + mig39/mig_39/user_design/rtl/iodrp_mcb_controller.vhd \ + mig39/mig_39/user_design/rtl/mcb_raw_wrapper.vhd \ + mig39/mig_39/user_design/rtl/mcb_soft_calibration.vhd \ + mig39/mig_39/user_design/rtl/mcb_soft_calibration_top.vhd \ + mig39/mig_39/user_design/rtl/memc3_infrastructure.vhd \ + mig39/mig_39/user_design/rtl/memc3_wrapper.vhd \ + mig39/mig_39/user_design/rtl/mig_39.vhd \ + config.vhd svga2ch7301c.vhd ahbrom.vhd \ + ahb2mig_grxc6s_2p.vhd vga_clkgen.vhd usb_spartan6_pll.vhd leon3mp.vhd VHDLSIMFILES=testbench.vhd SIMTOP=testbench #SDCFILE=$(GRLIB)/boards/$(BOARD)/default.sdc @@ -42,20 +51,19 @@ SDCFILE=default.sdc BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut CLEAN=soft-clean VCOMOPT=-explicit -TECHLIBS = secureip unisim - +TECHLIBS = unisim secureip +VSIMOPT= -gdisas=1 -i -t ps -novopt +notimingchecks $(SIMTOP) LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip cypress ihp gleichmann gsi fmf spansion micron + tmtc openchip cypress ihp gsi fmf spansion micron DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci ambatest ddr \ - leon4 leon4b64 l2cache gr1553b iommu haps ascs slink coremp7 pwm \ - ac97 hcan + leon4 leon4v0 l2cache gr1553b iommu ascs slink pwm \ + hcan FILEADD = MCB.vhd FILESKIP = grcan.vhd include $(GRLIB)/bin/Makefile include $(GRLIB)/software/leon3/Makefile - ################## project specific targets ########################## mig: @@ -65,3 +73,13 @@ mig: migclean: -rm -rf mig37/mig_37* mig37/tmp +mig39: + coregen -b mig39/mig.xco -p mig39 + patch -p0 < mig_patch.txt + patch -p0 < memc3_infrastructure_patch.txt + patch -p0 < mcb_soft_calibration_patch.txt + +mig39clean: + -rm -rf mig39/mig_39* mig39/tmp + +.PHONY : mig39 mig39clean \ No newline at end of file diff --git a/designs/leon3-gr-xc6s/README.txt b/designs/leon3-gr-xc6s/README.txt index ea498cbe..a2c7a880 100644 --- a/designs/leon3-gr-xc6s/README.txt +++ b/designs/leon3-gr-xc6s/README.txt @@ -10,16 +10,27 @@ interface. The MIG source code cannot be distributed due to the prohibitive Xilinx license, so the MIG must be re-generated with coregen before simulation and synthesis can be done. -To generate the MIG and install tne Xilinx unisim simulation +To generate the MIG using ISE13 and install the Xilinx unisim simulation library, do as follows: make mig make install-secureip -This will ONLY work with ISE-13 installed, and the XILINX variable -properly set in the shell. To synthesize the design, do +To generate the MIG using ISE14 and install the Xilinx unisim simulation +library, do as follows: + + make mig39 + make install-secureip + +This will ONLY work with correct version of ISE installed, and the XILINX variable +properly set in the shell. For ISE13 it is recommened to use the 'ise' make target +and for ISE14 to use the 'planAhead' target. To synthesize the design, do + + make ise (ISE13) + +or - make ise + make planAhead (ISE14) and then @@ -27,6 +38,12 @@ and then to program the FPGA. +To simulate and run systest.c on the Leon design using the memory +controller from Xilinx use the make targets: + + make soft + make vsim-launch + Design specifics ---------------- @@ -64,7 +81,7 @@ Design specifics i2c dvi init_l4itx_vga * The JTAG DSU interface is enabled and accesible via the USB/JTAG port. - Start grmon with -xilusb to connect. + Start grmon with -xilusb or "-eth -ip 192.168.0.59" to connect. * The four LEDS (D1 - D4) are mapped as follows: @@ -72,188 +89,145 @@ Design specifics D2: Cpu halted due to error D4:D3 Ethernet speed. 00=10M, 01=100M, 10=1G -* Output from GRMON is: - -$ grmon -xilusb -u -nb - - GRMON LEON debug monitor v1.1.49 professional version - - Copyright (C) 2004-2011 Aeroflex Gaisler - all rights reserved. - For latest updates, go to http://www.gaisler.com/ - Comments or bug-reports to support@gaisler.com - - This debug version will expire on 13/3/2012 - Xilinx cable: Cable type/rev : 0x3 - JTAG chain: xc6slx75 - - GRLIB build version: 4108 - - initialising ....................... - detected frequency: 50 MHz - - Component Vendor - LEON3 SPARC V8 Processor Gaisler Research - AHB Debug UART Gaisler Research - AHB Debug JTAG TAP Gaisler Research - GR Ethernet MAC Gaisler Research - GRSPW2 Spacewire Link Gaisler Research - GRSPW2 Spacewire Link Gaisler Research - GRSPW2 Spacewire Link Gaisler Research - LEON2 Memory Controller European Space Agency - AHB/APB Bridge Gaisler Research - LEON3 Debug Support Unit Gaisler Research - Xilinx MIG DDR2 controller Gaisler Research - AHB/APB Bridge Gaisler Research - Generic APB UART Gaisler Research - Multi-processor Interrupt Ctrl Gaisler Research - Modular Timer Unit Gaisler Research - PS/2 interface Gaisler Research - PS/2 interface Gaisler Research - SVGA Controller Gaisler Research - AMBA Wrapper for OC I2C-master Gaisler Research - General purpose I/O port Gaisler Research - General purpose I/O port Gaisler Research - General purpose I/O port Gaisler Research - AHB status register Gaisler Research - - Use command 'info sys' to print a detailed report of attached cores - -grlib> inf sys -00.01:003 Gaisler Research LEON3 SPARC V8 Processor (ver 0x0) - ahb master 0 -01.01:007 Gaisler Research AHB Debug UART (ver 0x0) - ahb master 1 - apb: 80000700 - 80000800 - baud rate 115200, ahb frequency 50.00 -02.01:01c Gaisler Research AHB Debug JTAG TAP (ver 0x1) - ahb master 2 -03.01:01d Gaisler Research GR Ethernet MAC (ver 0x0) - ahb master 3, irq 12 - apb: 80000e00 - 80000f00 - Device index: dev0 - edcl ip 192.168.0.51, buffer 2 kbyte -04.01:029 Gaisler Research GRSPW2 Spacewire Link (ver 0x0) - ahb master 4, irq 10 - apb: 80100a00 - 80100b00 - Number of ports: 1 -05.01:029 Gaisler Research GRSPW2 Spacewire Link (ver 0x0) - ahb master 5, irq 11 - apb: 80100b00 - 80100c00 - Number of ports: 1 -06.01:029 Gaisler Research GRSPW2 Spacewire Link (ver 0x0) - ahb master 6, irq 12 - apb: 80100c00 - 80100d00 - Number of ports: 1 -00.04:00f European Space Agency LEON2 Memory Controller (ver 0x1) - ahb: 00000000 - 20000000 - apb: 80000000 - 80000100 - 8-bit prom @ 0x00000000 -01.01:006 Gaisler Research AHB/APB Bridge (ver 0x0) - ahb: 80000000 - 80100000 -02.01:004 Gaisler Research LEON3 Debug Support Unit (ver 0x1) - ahb: 90000000 - a0000000 - AHB trace 256 lines, 32-bit bus, stack pointer 0x47fffff0 - CPU#0 win 8, hwbp 2, itrace 256, V8 mul/div, srmmu, lddel 1, GRFPU - icache 2 * 8 kbyte, 32 byte/line lru - dcache 2 * 4 kbyte, 16 byte/line lru -04.01:06b Gaisler Research Xilinx MIG DDR2 controller (ver 0x0) - ahb: 40000000 - 48000000 - apb: 80100000 - 80100100 - DDR2: 128 Mbyte -0d.01:006 Gaisler Research AHB/APB Bridge (ver 0x0) - ahb: 80100000 - 80200000 -01.01:00c Gaisler Research Generic APB UART (ver 0x1) - irq 2 - apb: 80000100 - 80000200 - baud rate 38343, DSU mode (FIFO debug) -02.01:00d Gaisler Research Multi-processor Interrupt Ctrl (ver 0x3) - apb: 80000200 - 80000300 -03.01:011 Gaisler Research Modular Timer Unit (ver 0x0) - irq 8 - apb: 80000300 - 80000400 - 8-bit scaler, 2 * 32-bit timers, divisor 50 -04.01:060 Gaisler Research PS/2 interface (ver 0x2) - irq 4 - apb: 80000400 - 80000500 -05.01:060 Gaisler Research PS/2 interface (ver 0x2) - irq 5 - apb: 80000500 - 80000600 -06.01:063 Gaisler Research SVGA Controller (ver 0x0) - apb: 80000600 - 80000700 - clk0: 50.00 MHz -09.01:028 Gaisler Research AMBA Wrapper for OC I2C-master (ver 0x2) - irq 14 - apb: 80000900 - 80000a00 -0a.01:01a Gaisler Research General purpose I/O port (ver 0x1) - apb: 80000a00 - 80000b00 -0b.01:01a Gaisler Research General purpose I/O port (ver 0x1) - apb: 80000b00 - 80000c00 -0c.01:01a Gaisler Research General purpose I/O port (ver 0x1) - apb: 80000c00 - 80000d00 -0f.01:052 Gaisler Research AHB status register (ver 0x0) - irq 7 - apb: 80000f00 - 80001000 -grlib> fla - - Intel-style 8-bit flash on D[31:24] - - Manuf. Intel - Device MT28F640J3 - - Device ID 7c86ffff9e01734a - User ID ffffffffffffffff - - - 1 x 8 Mbyte = 8 Mbyte total @ 0x00000000 - - - CFI info - flash family : 1 - flash size : 64 Mbit - erase regions : 1 - erase blocks : 64 - write buffer : 32 bytes - region 0 : 64 blocks of 128 Kbytes - -grlib> lo ~/examples/dhry412 -section: .text at 0x40000000, size 53296 bytes -section: .data at 0x4000d030, size 2764 bytes -total size: 56060 bytes (888.2 kbit/s) -read 262 symbols -entry point: 0x40000000 -grlib> run +* If the GRUSBHC USB host controller is included then close attention must + be paid to the timing reports. The ULPI interface timing requirements + may be very difficult to meet with this FPGA device. + +* This template design previously contained the USB device controller. + Due to the timing of the FPGA, the USB transceiver having an IO + voltage of 1.8V and the design of the USB device core it is + unlikely that the required timing for the USB device interface can + be reached. + The kit is not suitable for use with the USBDC or USBDCL IP cores. + +* Example output from GRMON is: + +$ grmon -eth -ip 192.168.0.59 -nb -u + + GRMON2 LEON debug monitor v2.0.32 internal version + + Copyright (C) 2012 Aeroflex Gaisler - All rights reserved. + For latest updates, go to http://www.gaisler.com/ + Comments or bug-reports to support@gaisler.com + + +Parsing -eth +Parsing -ip 192.168.0.59 +Parsing -nb +Parsing -u + +Commands missing help: + debug + + Ethernet startup... + GRLIB build version: 4121 + Detected frequency: 50 MHz + + Component Vendor + LEON3 SPARC V8 Processor Aeroflex Gaisler + AHB Debug UART Aeroflex Gaisler + JTAG Debug Link Aeroflex Gaisler + GR Ethernet MAC Aeroflex Gaisler + LEON2 Memory Controller European Space Agency + AHB/APB Bridge Aeroflex Gaisler + LEON3 Debug Support Unit Aeroflex Gaisler + Xilinx MIG DDR2 Controller Aeroflex Gaisler + AHB/APB Bridge Aeroflex Gaisler + Generic UART Aeroflex Gaisler + Multi-processor Interrupt Ctrl. Aeroflex Gaisler + Modular Timer Unit Aeroflex Gaisler + PS2 interface Aeroflex Gaisler + PS2 interface Aeroflex Gaisler + SVGA frame buffer Aeroflex Gaisler + AMBA Wrapper for OC I2C-master Aeroflex Gaisler + General Purpose I/O port Aeroflex Gaisler + General Purpose I/O port Aeroflex Gaisler + General Purpose I/O port Aeroflex Gaisler + AHB Status Register Aeroflex Gaisler + + Use command 'info sys' to print a detailed report of attached cores + +grmon2> info sys + cpu0 Aeroflex Gaisler LEON3 SPARC V8 Processor + AHB Master 0 + ahbuart0 Aeroflex Gaisler AHB Debug UART + AHB Master 1 + APB: 80000700 - 80000800 + Baudrate 115200, AHB frequency 50.00 MHz + ahbjtag0 Aeroflex Gaisler JTAG Debug Link + AHB Master 2 + greth0 Aeroflex Gaisler GR Ethernet MAC + AHB Master 3 + APB: 80000E00 - 80000F00 + IRQ: 12 + edcl ip 192.168.0.59, buffer 16 kbyte + mctrl0 European Space Agency LEON2 Memory Controller + AHB: 00000000 - 20000000 + APB: 80000000 - 80000100 + 8-bit prom @ 0x00000000 + apbmst0 Aeroflex Gaisler AHB/APB Bridge + AHB: 80000000 - 80100000 + dsu0 Aeroflex Gaisler LEON3 Debug Support Unit + AHB: 90000000 - A0000000 + AHB trace: 256 lines, 32-bit bus + CPU0: win 8, hwbp 2, itrace 256, V8 mul/div, srmmu, lddel 1 + stack pointer 0x47fffff0 + icache 2 * 8 kB, 32 B/line rnd + dcache 2 * 4 kB, 16 B/line rnd + mig0 Aeroflex Gaisler Xilinx MIG DDR2 Controller + AHB: 40000000 - 48000000 + APB: 80100000 - 80100100 + SDRAM: 128 Mbyte + apbmst1 Aeroflex Gaisler AHB/APB Bridge + AHB: 80100000 - 80200000 + uart0 Aeroflex Gaisler Generic UART + APB: 80000100 - 80000200 + IRQ: 2 + Baudrate 38343 + irqmp0 Aeroflex Gaisler Multi-processor Interrupt Ctrl. + APB: 80000200 - 80000300 + gptimer0 Aeroflex Gaisler Modular Timer Unit + APB: 80000300 - 80000400 + IRQ: 8 + 8-bit scalar, 2 * 32-bit timers, divisor 50 + ps2ifc0 Aeroflex Gaisler PS2 interface + APB: 80000400 - 80000500 + IRQ: 4 + ps2ifc1 Aeroflex Gaisler PS2 interface + APB: 80000500 - 80000600 + IRQ: 5 + svga0 Aeroflex Gaisler SVGA frame buffer + APB: 80000600 - 80000700 + clk0: 50.00 MHz clk1: inf MHz clk2: inf MHz clk3: inf MHz + i2cmst0 Aeroflex Gaisler AMBA Wrapper for OC I2C-master + APB: 80000900 - 80000A00 + IRQ: 14 + gpio0 Aeroflex Gaisler General Purpose I/O port + APB: 80000A00 - 80000B00 + gpio1 Aeroflex Gaisler General Purpose I/O port + APB: 80000B00 - 80000C00 + gpio2 Aeroflex Gaisler General Purpose I/O port + APB: 80000C00 - 80000D00 + ahbstat0 Aeroflex Gaisler AHB Status Register + APB: 80000F00 - 80001000 + IRQ: 7 + +grmon2> lo /usr/local32/apps/bench/leon3/dhry.leon3 + 40000000 .text 54.7kB / 54.7kB [===============>] 100% + 4000DAF0 .data 2.7kB / 2.7kB [===============>] 100% + Total size: 57.44kB (18.10Mbit/s) + Entry point 0x40000000 + Image /usr/local32/apps/bench/leon3/dhry.leon3 loaded + +grmon2> run Execution starts, 1000000 runs through Dhrystone -Total execution time: 7.3 s -Microseconds for one run through Dhrystone: 7.3 -Dhrystones per Second: 137739.6 - -Dhrystones MIPS : 78.4 - - -Program exited normally. -grlib> lo ~/ibm/src/bench/leonbench/coremark.exe -section: .text at 0x40000000, size 102544 bytes -section: .data at 0x40019090, size 2788 bytes -total size: 105332 bytes (894.7 kbit/s) -read 272 symbols -entry point: 0x40000000 -grlib> run -2K performance run parameters for coremark. -CoreMark Size : 666 -Total ticks : 19975906 -Total time (secs): 19.975906 -Iterations/Sec : 100.120615 -Iterations : 2000 -Compiler version : GCC4.4.2 -Compiler flags : -O3 -mv8 -funroll-loops -fgcse-sm -combine -DPERFORMANCE_RUN=1 -mcpu=v8 -msoft-float -Memory location : STACK -seedcrc : 0xe9f5 -[0]crclist : 0xe714 -[0]crcmatrix : 0x1fd7 -[0]crcstate : 0x8e3a -[0]crcfinal : 0x4983 -Correct operation validated. See readme.txt for run and reporting rules. -CoreMark 1.0 : 100.120615 / GCC4.4.2 -O3 -mv8 -funroll-loops -fgcse-sm -combine -DPERFORMANCE_RUN=1 -mcpu=v8 -msoft-float / Stack - -Program exited normally. -grlib> +Total execution time: 6.2 s +Microseconds for one run through Dhrystone: 6.2 +Dhrystones per Second: 161800.7 + +Dhrystones MIPS : 92.1 + + + Program exited normally. + +grmon2> diff --git a/designs/leon3-gr-xc6s/ahb2mig_grxc6s_2p.vhd b/designs/leon3-gr-xc6s/ahb2mig_grxc6s_2p.vhd index ad099557..8b6ef55f 100644 --- a/designs/leon3-gr-xc6s/ahb2mig_grxc6s_2p.vhd +++ b/designs/leon3-gr-xc6s/ahb2mig_grxc6s_2p.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -56,10 +56,12 @@ entity ahb2mig_grxc6s_2p is mcb3_dram_cke : out std_logic; mcb3_dram_dm : out std_logic; mcb3_dram_udqs : inout std_logic; + mcb3_dram_udqs_n : inout std_logic; mcb3_rzq : inout std_logic; mcb3_zio : inout std_logic; mcb3_dram_udm : out std_logic; mcb3_dram_dqs : inout std_logic; + mcb3_dram_dqs_n : inout std_logic; mcb3_dram_ck : out std_logic; mcb3_dram_ck_n : out std_logic; @@ -72,13 +74,13 @@ entity ahb2mig_grxc6s_2p is calib_done : out std_logic; test_error : out std_logic; - rst_n_syn : in std_logic; + rst_n_syn : out std_logic; rst_n_async : in std_logic; - clk_amba : in std_logic; + clk_amba : out std_logic; clk_mem_n : in std_logic; clk_mem_p : in std_logic; clk_125 : out std_logic; - clkout5 : out std_logic + clk_100 : out std_logic ); end ; @@ -124,7 +126,7 @@ generic c3_clk0 : out std_logic; c3_rst0 : out std_logic; clk_125 : out std_logic; -- 125 MHz for RGMII - clkout5 : out std_logic; -- Extra clock + clk_100 : out std_logic; -- Extra clock mcb3_dram_dqs : inout std_logic; mcb3_dram_dqs_n : inout std_logic; mcb3_dram_ck : out std_logic; @@ -252,10 +254,19 @@ signal r, rin : reg_type; signal r2, r2in : reg2_type; signal i : mcb_type; signal p2 : p2_if_type; +signal clk_amba_i : std_logic; +signal rst_n_syn_i : std_logic; +signal rst_syn : std_logic; +signal calib_done_i : std_logic; begin - comb: process( rst_n_syn, r, ahbsi, i ) + clk_amba <= clk_amba_i; + rst_n_syn <= rst_n_syn_i and calib_done_i; + rst_n_syn_i <= not rst_syn; + calib_done <= calib_done_i; + + comb: process( rst_n_syn_i, r, ahbsi, i ) variable v : reg_type; variable wmask : std_logic_vector(3 downto 0); variable wr_en : std_logic; @@ -377,7 +388,7 @@ begin rd_en := '1'; v.rd_cnt := r.rd_cnt - 1; end if; - if rst_n_syn = '0' then + if rst_n_syn_i = '0' then v.rd_cnt := "000000"; v.bstate := idle; v.hready := '1'; end if; @@ -402,22 +413,21 @@ begin ahbso.hirq <= (others => '0'); ahbso.hindex <= hindex; ahbso.hsplit <= (others => '0'); - ahbso.hcache <= '1'; apbo.pindex <= pindex; apbo.pconfig <= pconfig; apbo.pirq <= (others => '0'); - regs : process(clk_amba) + regs : process(clk_amba_i) begin - if rising_edge(clk_amba) then + if rising_edge(clk_amba_i) then r <= rin; end if; end process; port2 : if vgamst /= 0 generate - comb2: process( rst_n_syn, r2, ahbmo, p2 ) + comb2: process( rst_n_syn_i, r2, ahbmo, p2 ) variable v2 : reg2_type; variable cmd_en : std_logic; variable rd_en : std_logic; @@ -465,7 +475,7 @@ begin end if; v2.haddr(1 downto 0) := "00"; - if rst_n_syn = '0' then + if rst_n_syn_i = '0' then v2.rd_cnt := "000000"; v2.bstate := idle; v2.hready := '1'; end if; @@ -482,16 +492,16 @@ begin ahbmi.hresp <= "00"; ahbmi.hgrant <= (others => '1'); ahbmi.hready <= r2.hready; - ahbmi.hcache <= '1'; ahbmi.testen <= '0'; ahbmi.testrst <= '0'; ahbmi.scanen <= '0'; ahbmi.testoen <= '0'; ahbmi.hirq <= (others => '0'); - - regs : process(clk_amba) + ahbmi.testin <= (others => '0'); + + regs : process(clk_amba_i) begin - if rising_edge(clk_amba) then + if rising_edge(clk_amba_i) then r2 <= r2in; end if; end process; @@ -535,6 +545,7 @@ begin mcb3_dram_cke => mcb3_dram_cke, mcb3_dram_dm => mcb3_dram_dm, mcb3_dram_udqs => mcb3_dram_udqs, + mcb3_dram_udqs_n => mcb3_dram_udqs_n, mcb3_rzq => mcb3_rzq, mcb3_zio => mcb3_zio, mcb3_dram_udm => mcb3_dram_udm, @@ -542,22 +553,23 @@ begin -- c3_sys_clk_n => clk_mem_n, c3_sys_clk => clk_mem_p, c3_sys_rst_n => rst_n_async, - c3_calib_done => calib_done, - c3_clk0 => open, - c3_rst0 => open, + c3_calib_done => calib_done_i, + c3_clk0 => clk_amba_i, + c3_rst0 => rst_syn, clk_125 => clk_125, - clkout5 => clkout5, + clk_100 => clk_100, mcb3_dram_dqs => mcb3_dram_dqs, + mcb3_dram_dqs_n => mcb3_dram_dqs_n, mcb3_dram_ck => mcb3_dram_ck, mcb3_dram_ck_n => mcb3_dram_ck_n, - c3_p0_cmd_clk => clk_amba, + c3_p0_cmd_clk => clk_amba_i, c3_p0_cmd_en => i.cmd_en, c3_p0_cmd_instr => i.cmd_instr, c3_p0_cmd_bl => i.cmd_bl, c3_p0_cmd_byte_addr => i.cmd_byte_addr, c3_p0_cmd_empty => i.cmd_empty, c3_p0_cmd_full => i.cmd_full, - c3_p0_wr_clk => clk_amba, + c3_p0_wr_clk => clk_amba_i, c3_p0_wr_en => i.wr_en, c3_p0_wr_mask => i.wr_mask, c3_p0_wr_data => i.wr_data, @@ -566,7 +578,7 @@ begin c3_p0_wr_count => i.wr_count, c3_p0_wr_underrun => i.wr_underrun, c3_p0_wr_error => i.wr_error, - c3_p0_rd_clk => clk_amba, + c3_p0_rd_clk => clk_amba_i, c3_p0_rd_en => i.rd_en, c3_p0_rd_data => i.rd_data, c3_p0_rd_full => i.rd_full, @@ -574,14 +586,14 @@ begin c3_p0_rd_count => i.rd_count, c3_p0_rd_overflow => i.rd_overflow, c3_p0_rd_error => i.rd_error, - c3_p2_cmd_clk => clk_amba, + c3_p2_cmd_clk => clk_amba_i, c3_p2_cmd_en => p2.cmd_en, c3_p2_cmd_instr => p2.cmd_instr, c3_p2_cmd_bl => p2.cmd_bl, c3_p2_cmd_byte_addr => r2.haddr(29 downto 0), c3_p2_cmd_empty => p2.cmd_empty, c3_p2_cmd_full => p2.cmd_full, - c3_p2_rd_clk => clk_amba, + c3_p2_rd_clk => clk_amba_i, c3_p2_rd_en => p2.rd_en, c3_p2_rd_data => p2.rd_data, c3_p2_rd_full => p2.rd_full, diff --git a/designs/leon3-gr-xc6s/ahbrom.vhd b/designs/leon3-gr-xc6s/ahbrom.vhd index f7c441dc..ac26c7b2 100644 --- a/designs/leon3-gr-xc6s/ahbrom.vhd +++ b/designs/leon3-gr-xc6s/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-gr-xc6s/config.help b/designs/leon3-gr-xc6s/config.help index eaeb0866..ddfdb388 100644 --- a/designs/leon3-gr-xc6s/config.help +++ b/designs/leon3-gr-xc6s/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -664,13 +698,6 @@ CONFIG_DSU_JTAG Amontech JTAG key, various FTDI chip based USB/JTAG devices, and Actel Flash Pro 3/4 cable. -USB DSU enable -CONFIG_GRUSB_DCL - Say Y to enable the USB Debug Communication Link - -CONFIG_GRUSB_DCL_ULPI - Select the interface of the USB transceiver that the USBDCL will be - connected to. Ethernet DSU enable CONFIG_DSU_ETH Say Y to enable the Ethernet Debug Communication Link (EDCL). The link @@ -924,32 +951,6 @@ CONFIG_GRETH_FIFO4 size of the FIFO depth. -ATA interface enable -CONFIG_ATA_ENABLE - Say Y here to enable the ATA interace from OpenCores. The core has one - AHB slave interface for accessing all control registers. - -ATA register address -CONFIG_ATAIO - The control registers of the ATA core occupy 256 byte, and are - mapped in the AHB bus I/O area (0xFFF00000 - 0xFFFFF000). This setting - defines at which address in the I/O area the registers appear (HADDR[19:8]). - -ATA interrupt -CONFIG_ATAIRQ - Defines which interrupt number the ATA core will generate. - -ATA DMA support -CONFIG_ATA_MWDMA - Say yes here to enable IDE multi-word DMA support (MWDMA). - This will increase transfer rate compared to the PIO mode, - but increase area with approxiamtely 5,000 gates. Note that - DMA is not supported by legacy CF cards, so it makes no sense - to enable it on CF card sockets. - -ATA DMA FIFO depth -CONFIG_ATA_FIFO - Defines the DMA FIFO depth. Choose 8 or 16. CAN interface enable CONFIG_CAN_ENABLE Say Y here to enable one or more CAN cores. The cores has one @@ -992,161 +993,6 @@ CONFIG_CAN_SYNCRST when the target library does not implement registers with async reset. Unless you know what you are doing, say N. -Gaisler Research USB 2.0 Device Controller enable -CONFIG_GRUSBDC_ENABLE - Say Y here to enable the Gaisler Research USB 2.0 Device Controller. - The core can be configured with 1-16 IN endpoints and 1-16 OUT - endpoints (including endpoint zero). The core use an AHB slave - interface for configuration. For data transfers the the user have the - option of adding an AHB master interface for DMA, or to use the slave - interface. The core supports 8-bit and 16-bit UTMI/UTMI+ and - ULPI interfaces towards the USB transceiver. - -CONFIG_GRUSBDC_AHBMST - Say Y here to enable the AHB master interface and DMA. When master - interface is disabled all data transfers are handled with the AHB - slave interface. - -CONFIG_GRUSBDC_ULPI - Select the interface of the USB transceiver that the core will be - connected to. - -CONFIG_GRUSBDC_NEPI - Select number of IN endpoints (including endpoint zero). - Valid range is 1 - 16. - -CONFIG_GRUSBDC_NEPO - Select number of OUT endpoints (including endpoint zero). - Valid range is 1 - 16. - -CONFIG_GRUSBDC_I0 - Select buffer size (in bytes) for IN endpoint 0. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O0 - Select buffer size (in bytes) for OUT endpoint 0. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I1 - Select buffer size (in bytes) for IN endpoint 1. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O1 - Select buffer size (in bytes) for OUT endpoint 1. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I2 - Select buffer size (in bytes) for IN endpoint 2. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O2 - Select buffer size (in bytes) for OUT endpoint 2. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I3 - Select buffer size (in bytes) for IN endpoint 3. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O3 - Select buffer size (in bytes) for OUT endpoint 3. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I4 - Select buffer size (in bytes) for IN endpoint 4. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O4 - Select buffer size (in bytes) for OUT endpoint 4. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I5 - Select buffer size (in bytes) for IN endpoint 5. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O5 - Select buffer size (in bytes) for OUT endpoint 5. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I6 - Select buffer size (in bytes) for IN endpoint 6. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O6 - Select buffer size (in bytes) for OUT endpoint 6. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I7 - Select buffer size (in bytes) for IN endpoint 7. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O7 - Select buffer size (in bytes) for OUT endpoint 7. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I8 - Select buffer size (in bytes) for IN endpoint 8. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O8 - Select buffer size (in bytes) for OUT endpoint 8. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I9 - Select buffer size (in bytes) for IN endpoint 9. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O9 - Select buffer size (in bytes) for OUT endpoint 9. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I10 - Select buffer size (in bytes) for IN endpoint 10. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O10 - Select buffer size (in bytes) for OUT endpoint 10. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I11 - Select buffer size (in bytes) for IN endpoint 11. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O11 - Select buffer size (in bytes) for OUT endpoint 11. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I12 - Select buffer size (in bytes) for IN endpoint 12. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O12 - Select buffer size (in bytes) for OUT endpoint 12. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I13 - Select buffer size (in bytes) for IN endpoint 13. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O13 - Select buffer size (in bytes) for OUT endpoint 13. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I14 - Select buffer size (in bytes) for IN endpoint 14. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O14 - Select buffer size (in bytes) for OUT endpoint 14. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_I15 - Select buffer size (in bytes) for IN endpoint 15. - Valid range is 8 - 3072. - -CONFIG_GRUSBDC_O15 - Select buffer size (in bytes) for OUT endpoint 15. - Valid range is 8 - 3072. - Gaisler USB 2.0 Host Controller enable CONFIG_GRUSBHC_ENABLE Say Y here to enable the Gaisler Research USB 2.0 Host Controller. @@ -1533,7 +1379,7 @@ CONFIG_SPIMCTRL_SDCARD Read command CONFIG_SPIMCTRL_READCMD - Read instruction for SPI memory device + Read instruction for SPI memory device (hex). Dummy byte CONFIG_SPIMCTRL_DUMMYBYTE @@ -1543,6 +1389,10 @@ Dual output CONFIG_SPIMCTRL_DUALOUTPUT Memory device supports dual output when reading data. +Address offset +CONFIG_SPIMCTRL_OFFSET + Offset that will be added by core on SPI memory address (hex). + Clock scaler CONFIG_SPIMCTRL_SCALER Selects the divisor used when dividing the system clock to produce diff --git a/designs/leon3-gr-xc6s/config.in b/designs/leon3-gr-xc6s/config.in index 6912e744..7f03c805 100644 --- a/designs/leon3-gr-xc6s/config.in +++ b/designs/leon3-gr-xc6s/config.in @@ -34,7 +34,6 @@ mainmenu_option next_comment comment 'Debug Link ' source lib/gaisler/uart/dcom.in source lib/gaisler/jtag/jtag.in - source lib/gaisler/usb/grusb_dcl.in source lib/gaisler/net/edcl.in endmenu @@ -60,20 +59,11 @@ comment 'Peripherals ' source lib/gaisler/greth/greth.in endmenu - mainmenu_option next_comment - comment 'IDE Disk controller ' - source lib/gaisler/ata/ata.in - endmenu - mainmenu_option next_comment comment 'CAN ' source lib/gaisler/can/can_mc.in endmenu - mainmenu_option next_comment - comment 'USB 2.0 Device Controller ' - source lib/gaisler/usb/grusbdc.in - endmenu mainmenu_option next_comment comment 'USB 2.0 Host Controller ' source lib/gaisler/usb/grusbhc.in diff --git a/designs/leon3-gr-xc6s/config.vhd b/designs/leon3-gr-xc6s/config.vhd index edc2ae38..fa08d9b8 100644 --- a/designs/leon3-gr-xc6s/config.vhd +++ b/designs/leon3-gr-xc6s/config.vhd @@ -1,6 +1,8 @@ + + ----------------------------------------------------------------------------- -- LEON3 Demonstration design test bench configuration -- Copyright (C) 2009 Aeroflex Gaisler @@ -95,10 +97,6 @@ package config is constant CFG_AHB_UART : integer := 1; -- JTAG based DSU interface constant CFG_AHB_JTAG : integer := 1; --- USB DSU - constant CFG_GRUSB_DCL : integer := 0; - constant CFG_GRUSB_DCL_UIFACE : integer := 1; - constant CFG_GRUSB_DCL_DW : integer := 8; -- Ethernet DSU constant CFG_DSU_ETH : integer := 1 + 0 + 0; constant CFG_ETH_BUF : integer := 16; @@ -151,7 +149,6 @@ package config is constant CFG_AHBRODDR : integer := 16#000#; constant CFG_ROMADDR : integer := 16#000#; constant CFG_ROMMASK : integer := 16#E00# + 16#000#; - -- AHB RAM constant CFG_AHBRAMEN : integer := 0; constant CFG_AHBRSZ : integer := 1; @@ -162,13 +159,6 @@ package config is constant CFG_GRETH1G : integer := 0; constant CFG_ETH_FIFO : integer := 32; --- ATA interface - constant CFG_ATA : integer := 0; - constant CFG_ATAIO : integer := 16#0#; - constant CFG_ATAIRQ : integer := 0; - constant CFG_ATADMA : integer := 0; - constant CFG_ATAFIFO : integer := 8; - -- CAN 2.0 interface constant CFG_CAN : integer := 0; constant CFG_CAN_NUM : integer := 1; @@ -178,45 +168,6 @@ package config is constant CFG_CAN_SYNCRST : integer := 0; constant CFG_CANFT : integer := 0; --- GR USB 2.0 Device Controller - constant CFG_GRUSBDC : integer := 0; - constant CFG_GRUSBDC_AIFACE : integer := 0; - constant CFG_GRUSBDC_UIFACE : integer := 1; - constant CFG_GRUSBDC_DW : integer := 8; - constant CFG_GRUSBDC_NEPI : integer := 1; - constant CFG_GRUSBDC_NEPO : integer := 1; - constant CFG_GRUSBDC_I0 : integer := 1024; - constant CFG_GRUSBDC_I1 : integer := 1024; - constant CFG_GRUSBDC_I2 : integer := 1024; - constant CFG_GRUSBDC_I3 : integer := 1024; - constant CFG_GRUSBDC_I4 : integer := 1024; - constant CFG_GRUSBDC_I5 : integer := 1024; - constant CFG_GRUSBDC_I6 : integer := 1024; - constant CFG_GRUSBDC_I7 : integer := 1024; - constant CFG_GRUSBDC_I8 : integer := 1024; - constant CFG_GRUSBDC_I9 : integer := 1024; - constant CFG_GRUSBDC_I10 : integer := 1024; - constant CFG_GRUSBDC_I11 : integer := 1024; - constant CFG_GRUSBDC_I12 : integer := 1024; - constant CFG_GRUSBDC_I13 : integer := 1024; - constant CFG_GRUSBDC_I14 : integer := 1024; - constant CFG_GRUSBDC_I15 : integer := 1024; - constant CFG_GRUSBDC_O0 : integer := 1024; - constant CFG_GRUSBDC_O1 : integer := 1024; - constant CFG_GRUSBDC_O2 : integer := 1024; - constant CFG_GRUSBDC_O3 : integer := 1024; - constant CFG_GRUSBDC_O4 : integer := 1024; - constant CFG_GRUSBDC_O5 : integer := 1024; - constant CFG_GRUSBDC_O6 : integer := 1024; - constant CFG_GRUSBDC_O7 : integer := 1024; - constant CFG_GRUSBDC_O8 : integer := 1024; - constant CFG_GRUSBDC_O9 : integer := 1024; - constant CFG_GRUSBDC_O10 : integer := 1024; - constant CFG_GRUSBDC_O11 : integer := 1024; - constant CFG_GRUSBDC_O12 : integer := 1024; - constant CFG_GRUSBDC_O13 : integer := 1024; - constant CFG_GRUSBDC_O14 : integer := 1024; - constant CFG_GRUSBDC_O15 : integer := 1024; -- USB Host Controller constant CFG_GRUSBHC : integer := 0; constant CFG_GRUSBHC_NPORTS : integer := 1; @@ -293,6 +244,7 @@ package config is constant CFG_SPIMCTRL_SCALER : integer := (1); constant CFG_SPIMCTRL_ASCALER : integer := (8); constant CFG_SPIMCTRL_PWRUPCNT : integer := (0); + constant CFG_SPIMCTRL_OFFSET : integer := 16#0#; -- SPI controller constant CFG_SPICTRL_ENABLE : integer := 1; diff --git a/designs/leon3-gr-xc6s/config.vhd.h b/designs/leon3-gr-xc6s/config.vhd.h index 76dc040e..e88f5b88 100644 --- a/designs/leon3-gr-xc6s/config.vhd.h +++ b/designs/leon3-gr-xc6s/config.vhd.h @@ -88,11 +88,6 @@ -- JTAG based DSU interface constant CFG_AHB_JTAG : integer := CONFIG_DSU_JTAG; --- USB DSU - constant CFG_GRUSB_DCL : integer := CONFIG_GRUSB_DCL; - constant CFG_GRUSB_DCL_UIFACE : integer := CONFIG_GRUSB_DCL_UIFACE; - constant CFG_GRUSB_DCL_DW : integer := CONFIG_GRUSB_DCL_DW; - -- Ethernet DSU constant CFG_DSU_ETH : integer := CONFIG_DSU_ETH + CONFIG_DSU_ETH_PROG + CONFIG_DSU_ETH_DIS; constant CFG_ETH_BUF : integer := CFG_DSU_ETHB; @@ -162,13 +157,6 @@ constant CFG_GRETH1G : integer := CONFIG_GRETH_GIGA; constant CFG_ETH_FIFO : integer := CFG_GRETH_FIFO; --- ATA interface - constant CFG_ATA : integer := CONFIG_ATA_ENABLE; - constant CFG_ATAIO : integer := 16#CONFIG_ATAIO#; - constant CFG_ATAIRQ : integer := CONFIG_ATAIRQ; - constant CFG_ATADMA : integer := CONFIG_ATA_MWDMA; - constant CFG_ATAFIFO : integer := CONFIG_ATA_FIFO; - -- CAN 2.0 interface constant CFG_CAN : integer := CONFIG_CAN_ENABLE; constant CFG_CAN_NUM : integer := CONFIG_CAN_NUM; @@ -178,45 +166,6 @@ constant CFG_CAN_SYNCRST : integer := CONFIG_CAN_SYNCRST; constant CFG_CANFT : integer := CONFIG_CAN_FT; --- GR USB 2.0 Device Controller - constant CFG_GRUSBDC : integer := CONFIG_GRUSBDC_ENABLE; - constant CFG_GRUSBDC_AIFACE : integer := CONFIG_GRUSBDC_AIFACE; - constant CFG_GRUSBDC_UIFACE : integer := CONFIG_GRUSBDC_UIFACE; - constant CFG_GRUSBDC_DW : integer := CONFIG_GRUSBDC_DW; - constant CFG_GRUSBDC_NEPI : integer := CONFIG_GRUSBDC_NEPI; - constant CFG_GRUSBDC_NEPO : integer := CONFIG_GRUSBDC_NEPO; - constant CFG_GRUSBDC_I0 : integer := CONFIG_GRUSBDC_I0; - constant CFG_GRUSBDC_I1 : integer := CONFIG_GRUSBDC_I1; - constant CFG_GRUSBDC_I2 : integer := CONFIG_GRUSBDC_I2; - constant CFG_GRUSBDC_I3 : integer := CONFIG_GRUSBDC_I3; - constant CFG_GRUSBDC_I4 : integer := CONFIG_GRUSBDC_I4; - constant CFG_GRUSBDC_I5 : integer := CONFIG_GRUSBDC_I5; - constant CFG_GRUSBDC_I6 : integer := CONFIG_GRUSBDC_I6; - constant CFG_GRUSBDC_I7 : integer := CONFIG_GRUSBDC_I7; - constant CFG_GRUSBDC_I8 : integer := CONFIG_GRUSBDC_I8; - constant CFG_GRUSBDC_I9 : integer := CONFIG_GRUSBDC_I9; - constant CFG_GRUSBDC_I10 : integer := CONFIG_GRUSBDC_I10; - constant CFG_GRUSBDC_I11 : integer := CONFIG_GRUSBDC_I11; - constant CFG_GRUSBDC_I12 : integer := CONFIG_GRUSBDC_I12; - constant CFG_GRUSBDC_I13 : integer := CONFIG_GRUSBDC_I13; - constant CFG_GRUSBDC_I14 : integer := CONFIG_GRUSBDC_I14; - constant CFG_GRUSBDC_I15 : integer := CONFIG_GRUSBDC_I15; - constant CFG_GRUSBDC_O0 : integer := CONFIG_GRUSBDC_O0; - constant CFG_GRUSBDC_O1 : integer := CONFIG_GRUSBDC_O1; - constant CFG_GRUSBDC_O2 : integer := CONFIG_GRUSBDC_O2; - constant CFG_GRUSBDC_O3 : integer := CONFIG_GRUSBDC_O3; - constant CFG_GRUSBDC_O4 : integer := CONFIG_GRUSBDC_O4; - constant CFG_GRUSBDC_O5 : integer := CONFIG_GRUSBDC_O5; - constant CFG_GRUSBDC_O6 : integer := CONFIG_GRUSBDC_O6; - constant CFG_GRUSBDC_O7 : integer := CONFIG_GRUSBDC_O7; - constant CFG_GRUSBDC_O8 : integer := CONFIG_GRUSBDC_O8; - constant CFG_GRUSBDC_O9 : integer := CONFIG_GRUSBDC_O9; - constant CFG_GRUSBDC_O10 : integer := CONFIG_GRUSBDC_O10; - constant CFG_GRUSBDC_O11 : integer := CONFIG_GRUSBDC_O11; - constant CFG_GRUSBDC_O12 : integer := CONFIG_GRUSBDC_O12; - constant CFG_GRUSBDC_O13 : integer := CONFIG_GRUSBDC_O13; - constant CFG_GRUSBDC_O14 : integer := CONFIG_GRUSBDC_O14; - constant CFG_GRUSBDC_O15 : integer := CONFIG_GRUSBDC_O15; -- USB Host Controller constant CFG_GRUSBHC : integer := CONFIG_GRUSBHC_ENABLE; constant CFG_GRUSBHC_NPORTS : integer := CONFIG_GRUSBHC_NPORTS; @@ -293,6 +242,7 @@ constant CFG_SPIMCTRL_SCALER : integer := CONFIG_SPIMCTRL_SCALER; constant CFG_SPIMCTRL_ASCALER : integer := CONFIG_SPIMCTRL_ASCALER; constant CFG_SPIMCTRL_PWRUPCNT : integer := CONFIG_SPIMCTRL_PWRUPCNT; + constant CFG_SPIMCTRL_OFFSET : integer := 16#CONFIG_SPIMCTRL_OFFSET#; -- SPI controller constant CFG_SPICTRL_ENABLE : integer := CONFIG_SPICTRL_ENABLE; diff --git a/designs/leon3-gr-xc6s/lconfig.tk b/designs/leon3-gr-xc6s/lconfig.tk index a6588928..0e8fb1b4 100755 --- a/designs/leon3-gr-xc6s/lconfig.tk +++ b/designs/leon3-gr-xc6s/lconfig.tk @@ -644,7 +644,7 @@ set active_menus [list] set processed_top_level 0 set ARCH sparc set menus_per_column 4 -set total_menus 30 +set total_menus 28 proc toplevel_menu {num} { if {$num == 4} then {return 3} @@ -666,10 +666,8 @@ proc toplevel_menu {num} { if {$num == 23} then {return 13} if {$num == 24} then {return 13} if {$num == 25} then {return 13} - if {$num == 26} then {return 13} - if {$num == 27} then {return 13} - if {$num == 28} then {return 27} - if {$num == 29} then {return 27} + if {$num == 26} then {return 25} + if {$num == 27} then {return 25} return $num } @@ -763,7 +761,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -773,7 +772,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -916,8 +917,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -936,6 +939,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1025,9 +1032,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1081,10 +1089,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1130,14 +1139,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1210,13 +1221,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1256,22 +1275,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1328,21 +1615,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1389,36 +1676,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1426,48 +1714,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1523,28 +1812,28 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_7 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x4.x.menu 3 bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1585,20 +1874,21 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1607,38 +1897,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_7 + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1695,92 +1986,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1788,18 +2079,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1840,52 +2131,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1893,162 +2185,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2104,45 +2397,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2182,18 +2477,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2201,55 +2497,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2306,24 +2607,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2363,17 +2664,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2381,37 +2683,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2467,22 +2770,22 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - global tmpvar_26 - minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_26 CONFIG_FPUFT_NONE + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" - $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN @@ -2553,26 +2856,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global tmpvar_26 + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 global CONFIG_FPUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} global CONFIG_FPUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} global CONFIG_FPUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} global CONFIG_FPUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2880,30 +3183,22 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG - bool $w.config.f 12 2 "USB Debug Communication Link" CONFIG_GRUSB_DCL - global tmpvar_27 - minimenu $w.config.f 12 3 "USB Transceiver Interface" tmpvar_27 CONFIG_GRUSB_DCL_ULPI - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"USB Transceiver Interface\"" - $w.config.f.x3.x.menu add radiobutton -label "ULPI" -variable tmpvar_27 -value "ULPI" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "UTMI/UTMI+8-bit" -variable tmpvar_27 -value "UTMI/UTMI+8-bit" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "UTMI/UTMI+16-bit" -variable tmpvar_27 -value "UTMI/UTMI+16-bit" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 3 - bool $w.config.f 12 4 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH + bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH global tmpvar_28 - minimenu $w.config.f 12 5 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 - menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x5.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - menusplit $w $w.config.f.x5.x.menu 5 - hex $w.config.f 12 6 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB - hex $w.config.f 12 7 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB - hex $w.config.f 12 8 "MSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHMSB - hex $w.config.f 12 9 "LSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHLSB - bool $w.config.f 12 10 "Programmable 4-bit LSB of MAC/IP address" CONFIG_DSU_ETH_PROG - bool $w.config.f 12 11 "EDCL disable pin " CONFIG_DSU_ETH_DIS + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 5 + hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB + hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB + hex $w.config.f 12 6 "MSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHMSB + hex $w.config.f 12 7 "LSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHLSB + bool $w.config.f 12 8 "Programmable 4-bit LSB of MAC/IP address" CONFIG_DSU_ETH_PROG + bool $w.config.f 12 9 "EDCL disable pin " CONFIG_DSU_ETH_DIS @@ -2940,41 +3235,32 @@ proc menu12 {w title} { } proc update_menu12 {} { - global CONFIG_GRUSB_DCL - if {($CONFIG_GRUSB_DCL == 1)} then {configure_entry .menu12.config.f.x3 normal {x l}} else {configure_entry .menu12.config.f.x3 disabled {x l}} global CONFIG_GRETH_ENABLE global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { - configure_entry .menu12.config.f.x4 normal {n l y}} else {configure_entry .menu12.config.f.x4 disabled {y n l}} - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {configure_entry .menu12.config.f.x5 normal {x l}} else {configure_entry .menu12.config.f.x5 disabled {x l}} + configure_entry .menu12.config.f.x2 normal {n l y}} else {configure_entry .menu12.config.f.x2 disabled {y n l}} + if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {configure_entry .menu12.config.f.x3 normal {x l}} else {configure_entry .menu12.config.f.x3 disabled {x l}} global CONFIG_DSU_IPMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x6.l configure -state normal; } else {.menu12.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x6.l configure -state disabled} + if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x4.l configure -state normal; } else {.menu12.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x4.l configure -state disabled} global CONFIG_DSU_IPLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x7.l configure -state normal; } else {.menu12.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x7.l configure -state disabled} + if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x5.l configure -state normal; } else {.menu12.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x5.l configure -state disabled} global CONFIG_DSU_ETHMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x8.l configure -state normal; } else {.menu12.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x8.l configure -state disabled} + if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x6.l configure -state normal; } else {.menu12.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x6.l configure -state disabled} global CONFIG_DSU_ETHLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x9.l configure -state normal; } else {.menu12.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x9.l configure -state disabled} + if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x7.l configure -state normal; } else {.menu12.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x7.l configure -state disabled} global CONFIG_GRETH_GIGA global CONFIG_DSU_ETH_PROG if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - configure_entry .menu12.config.f.x10 normal {n l y}} else {configure_entry .menu12.config.f.x10 disabled {y n l}} + configure_entry .menu12.config.f.x8 normal {n l y}} else {configure_entry .menu12.config.f.x8 disabled {y n l}} global CONFIG_DSU_ETH_DIS if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - configure_entry .menu12.config.f.x11 normal {n l y}} else {configure_entry .menu12.config.f.x11 disabled {y n l}} + configure_entry .menu12.config.f.x9 normal {n l y}} else {configure_entry .menu12.config.f.x9 disabled {y n l}} } proc update_define_menu12 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_27 - global CONFIG_GRUSB_DCL_ULPI - if {$tmpvar_27 == "ULPI"} then {set CONFIG_GRUSB_DCL_ULPI 1} else {set CONFIG_GRUSB_DCL_ULPI 0} - global CONFIG_GRUSB_DCL_UTMI8 - if {$tmpvar_27 == "UTMI/UTMI+8-bit"} then {set CONFIG_GRUSB_DCL_UTMI8 1} else {set CONFIG_GRUSB_DCL_UTMI8 0} - global CONFIG_GRUSB_DCL_UTMI16 - if {$tmpvar_27 == "UTMI/UTMI+16-bit"} then {set CONFIG_GRUSB_DCL_UTMI16 1} else {set CONFIG_GRUSB_DCL_UTMI16 0} global CONFIG_GRETH_ENABLE global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { @@ -3062,14 +3348,12 @@ proc menu13 {w title} { submenu $w.config.f 13 0 "Memory controller " 14 submenu $w.config.f 13 1 "On-chip RAM/ROM " 18 submenu $w.config.f 13 2 "Ethernet " 19 - submenu $w.config.f 13 3 "IDE Disk controller " 20 - submenu $w.config.f 13 4 "CAN " 21 - submenu $w.config.f 13 5 "USB 2.0 Device Controller " 22 - submenu $w.config.f 13 6 "USB 2.0 Host Controller " 23 - submenu $w.config.f 13 7 "UART, timer, I/O port and interrupt controller" 24 - submenu $w.config.f 13 8 "Spacewire " 25 - submenu $w.config.f 13 9 "Keybord and VGA interface" 26 - submenu $w.config.f 13 10 "SPI" 27 + submenu $w.config.f 13 3 "CAN " 20 + submenu $w.config.f 13 4 "USB 2.0 Host Controller " 21 + submenu $w.config.f 13 5 "UART, timer, I/O port and interrupt controller" 22 + submenu $w.config.f 13 6 "Spacewire " 23 + submenu $w.config.f 13 7 "Keybord and VGA interface" 24 + submenu $w.config.f 13 8 "SPI" 25 @@ -4012,9 +4296,9 @@ proc menu20 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 20]] message $w.m -width 400 -aspect 300 -text \ - "IDE Disk controller " -relief raised + "CAN " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "IDE Disk controller " + wm title $w "CAN " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu21 .menu21 \"$title\"" @@ -4054,11 +4338,13 @@ proc menu20 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 20 0 "Enable ATA interface " CONFIG_ATA_ENABLE - hex $w.config.f 20 1 "ATA I/O area start address (haddr\[19:8\]) " CONFIG_ATAIO - int $w.config.f 20 2 "Interrupt number " CONFIG_ATAIRQ - bool $w.config.f 20 3 "Enable MWDMA support " CONFIG_ATA_MWDMA - int $w.config.f 20 4 "FIFO depth " CONFIG_ATA_FIFO + bool $w.config.f 20 0 "Enable multi-core CAN interface " CONFIG_CAN_ENABLE + int $w.config.f 20 1 "Number of CAN cores " CONFIG_CAN_NUM + hex $w.config.f 20 2 "CAN I/O area start address (haddr\[19:8\]) " CONFIG_CANIO + int $w.config.f 20 3 "Interrupt number " CONFIG_CANIRQ + bool $w.config.f 20 4 "Enable separate interrupts " CONFIG_CANSEPIRQ + bool $w.config.f 20 5 "Enable synchronous reset " CONFIG_CAN_SYNCRST + bool $w.config.f 20 6 "Enable FT FIFO memory " CONFIG_CAN_FT @@ -4096,32 +4382,44 @@ proc menu20 {w title} { } proc update_menu20 {} { - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {.menu20.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x1.l configure -state normal; } else {.menu20.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x1.l configure -state disabled} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {.menu20.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x2.l configure -state normal; } else {.menu20.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x2.l configure -state disabled} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - configure_entry .menu20.config.f.x3 normal {n l y}} else {configure_entry .menu20.config.f.x3 disabled {y n l}} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {.menu20.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x4.l configure -state normal; } else {.menu20.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x4.l configure -state disabled} + global CONFIG_CAN_ENABLE + global CONFIG_CAN_NUM + if {($CONFIG_CAN_ENABLE == 1)} then {.menu20.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x1.l configure -state normal; } else {.menu20.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x1.l configure -state disabled} + global CONFIG_CANIO + if {($CONFIG_CAN_ENABLE == 1)} then {.menu20.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x2.l configure -state normal; } else {.menu20.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x2.l configure -state disabled} + global CONFIG_CANIRQ + if {($CONFIG_CAN_ENABLE == 1)} then {.menu20.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x3.l configure -state normal; } else {.menu20.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x3.l configure -state disabled} + global CONFIG_CANSEPIRQ + if {($CONFIG_CAN_ENABLE == 1)} then { + configure_entry .menu20.config.f.x4 normal {n l y}} else {configure_entry .menu20.config.f.x4 disabled {y n l}} + global CONFIG_CAN_SYNCRST + if {($CONFIG_CAN_ENABLE == 1)} then { + configure_entry .menu20.config.f.x5 normal {n l y}} else {configure_entry .menu20.config.f.x5 disabled {y n l}} + global CONFIG_CAN_FT + if {($CONFIG_CAN_ENABLE == 1)} then { + configure_entry .menu20.config.f.x6 normal {n l y}} else {configure_entry .menu20.config.f.x6 disabled {y n l}} } proc update_define_menu20 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {validate_hex CONFIG_ATAIO "$CONFIG_ATAIO" A00} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {validate_int CONFIG_ATAIRQ "$CONFIG_ATAIRQ" 10} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA&15]} else {set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA|16]} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {validate_int CONFIG_ATA_FIFO "$CONFIG_ATA_FIFO" 8} + global CONFIG_CAN_ENABLE + global CONFIG_CAN_NUM + if {($CONFIG_CAN_ENABLE == 1)} then {validate_int CONFIG_CAN_NUM "$CONFIG_CAN_NUM" 1} + global CONFIG_CANIO + if {($CONFIG_CAN_ENABLE == 1)} then {validate_hex CONFIG_CANIO "$CONFIG_CANIO" C00} + global CONFIG_CANIRQ + if {($CONFIG_CAN_ENABLE == 1)} then {validate_int CONFIG_CANIRQ "$CONFIG_CANIRQ" 13} + global CONFIG_CANSEPIRQ + if {($CONFIG_CAN_ENABLE == 1)} then { + set CONFIG_CANSEPIRQ [expr $CONFIG_CANSEPIRQ&15]} else {set CONFIG_CANSEPIRQ [expr $CONFIG_CANSEPIRQ|16]} + global CONFIG_CAN_SYNCRST + if {($CONFIG_CAN_ENABLE == 1)} then { + set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST&15]} else {set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST|16]} + global CONFIG_CAN_FT + if {($CONFIG_CAN_ENABLE == 1)} then { + set CONFIG_CAN_FT [expr $CONFIG_CAN_FT&15]} else {set CONFIG_CAN_FT [expr $CONFIG_CAN_FT|16]} } @@ -4134,9 +4432,9 @@ proc menu21 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 21]] message $w.m -width 400 -aspect 300 -text \ - "CAN " -relief raised + "USB 2.0 Host Controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "CAN " + wm title $w "USB 2.0 Host Controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu22 .menu22 \"$title\"" @@ -4176,13 +4474,65 @@ proc menu21 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 21 0 "Enable multi-core CAN interface " CONFIG_CAN_ENABLE - int $w.config.f 21 1 "Number of CAN cores " CONFIG_CAN_NUM - hex $w.config.f 21 2 "CAN I/O area start address (haddr\[19:8\]) " CONFIG_CANIO - int $w.config.f 21 3 "Interrupt number " CONFIG_CANIRQ - bool $w.config.f 21 4 "Enable separate interrupts " CONFIG_CANSEPIRQ - bool $w.config.f 21 5 "Enable synchronous reset " CONFIG_CAN_SYNCRST - bool $w.config.f 21 6 "Enable FT FIFO memory " CONFIG_CAN_FT + bool $w.config.f 21 0 "Gaisler Research USB 2.0 Host Controller " CONFIG_GRUSBHC_ENABLE + bool $w.config.f 21 1 "Enable Enhanced Host Controller " CONFIG_GRUSBHC_EHC + bool $w.config.f 21 2 "Enable Universal Host Controller " CONFIG_GRUSBHC_UHC + int $w.config.f 21 3 "Number of Universal Host Controllers (1-15)" CONFIG_GRUSBHC_NCC + int $w.config.f 21 4 "Total number of ports (1-15)" CONFIG_GRUSBHC_NPORTS + global tmpvar_31 + minimenu $w.config.f 21 5 "Transceiver interface" tmpvar_31 CONFIG_GRUSBHC_ULPI + menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"Transceiver interface\"" + $w.config.f.x5.x.menu add radiobutton -label "ULPI" -variable tmpvar_31 -value "ULPI" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "UTMI+16-bit" -variable tmpvar_31 -value "UTMI+16-bit" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "UTMI+8-bit" -variable tmpvar_31 -value "UTMI+8-bit" -command "update_active" + menusplit $w $w.config.f.x5.x.menu 3 + global tmpvar_32 + minimenu $w.config.f 21 6 "Bus power generation" tmpvar_32 CONFIG_GRUSBHC_VBUSEXT + menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"Bus power generation\"" + $w.config.f.x6.x.menu add radiobutton -label "External" -variable tmpvar_32 -value "External" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Internal" -variable tmpvar_32 -value "Internal" -command "update_active" + menusplit $w $w.config.f.x6.x.menu 2 + global tmpvar_33 + minimenu $w.config.f 21 7 "External bus fault indicator" tmpvar_33 CONFIG_GRUSBHC_FAULTL + menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"External bus fault indicator\"" + $w.config.f.x7.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_33 -value "ActiveLow" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_33 -value "ActiveHigh" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "None" -variable tmpvar_33 -value "None" -command "update_active" + menusplit $w $w.config.f.x7.x.menu 3 + global tmpvar_34 + minimenu $w.config.f 21 8 "Bus power enable signal" tmpvar_34 CONFIG_GRUSBHC_ENABLEH + menu $w.config.f.x8.x.menu -tearoffcommand "menutitle \"Bus power enable signal\"" + $w.config.f.x8.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_34 -value "ActiveHigh" -command "update_active" + $w.config.f.x8.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_34 -value "ActiveLow" -command "update_active" + menusplit $w $w.config.f.x8.x.menu 2 + global tmpvar_35 + minimenu $w.config.f 21 9 "Bus power fault indicator" tmpvar_35 CONFIG_GRUSBHC_FAULT2H + menu $w.config.f.x9.x.menu -tearoffcommand "menutitle \"Bus power fault indicator\"" + $w.config.f.x9.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_35 -value "ActiveHigh" -command "update_active" + $w.config.f.x9.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_35 -value "ActiveLow" -command "update_active" + menusplit $w $w.config.f.x9.x.menu 2 + comment $w.config.f 21 10 "Memory interface" + bool $w.config.f 21 11 "Enable big endian register interface" CONFIG_GRUSBHC_BEREGS + bool $w.config.f 21 12 "Enable big endian descriptors" CONFIG_GRUSBHC_BEDESC + int $w.config.f 21 13 "Maximum burst length in words (1-256)" CONFIG_GRUSBHC_BWRD + comment $w.config.f 21 14 "Port routing" + bool $w.config.f 21 15 "Port routing rules" CONFIG_GRUSBHC_PRR + int $w.config.f 21 16 "Number of ports per companion controller (1-15)" CONFIG_GRUSBHC_NPCC + int $w.config.f 21 17 "Route port 1 to companion controller " CONFIG_GRUSBHC_PR1 + int $w.config.f 21 18 "Route port 2 to companion controller " CONFIG_GRUSBHC_PR2 + int $w.config.f 21 19 "Route port 3 to companion controller " CONFIG_GRUSBHC_PR3 + int $w.config.f 21 20 "Route port 4 to companion controller " CONFIG_GRUSBHC_PR4 + int $w.config.f 21 21 "Route port 5 to companion controller " CONFIG_GRUSBHC_PR5 + int $w.config.f 21 22 "Route port 6 to companion controller " CONFIG_GRUSBHC_PR6 + int $w.config.f 21 23 "Route port 7 to companion controller " CONFIG_GRUSBHC_PR7 + int $w.config.f 21 24 "Route port 8 to companion controller " CONFIG_GRUSBHC_PR8 + int $w.config.f 21 25 "Route port 9 to companion controller " CONFIG_GRUSBHC_PR9 + int $w.config.f 21 26 "Route port 10 to companion controller " CONFIG_GRUSBHC_PR10 + int $w.config.f 21 27 "Route port 11 to companion controller " CONFIG_GRUSBHC_PR11 + int $w.config.f 21 28 "Route port 12 to companion controller " CONFIG_GRUSBHC_PR12 + int $w.config.f 21 29 "Route port 13 to companion controller " CONFIG_GRUSBHC_PR13 + int $w.config.f 21 30 "Route port 14 to companion controller " CONFIG_GRUSBHC_PR14 + int $w.config.f 21 31 "Route port 15 to companion controller " CONFIG_GRUSBHC_PR15 @@ -4220,553 +4570,73 @@ proc menu21 {w title} { } proc update_menu21 {} { - global CONFIG_CAN_ENABLE - global CONFIG_CAN_NUM - if {($CONFIG_CAN_ENABLE == 1)} then {.menu21.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x1.l configure -state normal; } else {.menu21.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x1.l configure -state disabled} - global CONFIG_CANIO - if {($CONFIG_CAN_ENABLE == 1)} then {.menu21.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x2.l configure -state normal; } else {.menu21.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x2.l configure -state disabled} - global CONFIG_CANIRQ - if {($CONFIG_CAN_ENABLE == 1)} then {.menu21.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x3.l configure -state normal; } else {.menu21.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x3.l configure -state disabled} - global CONFIG_CANSEPIRQ - if {($CONFIG_CAN_ENABLE == 1)} then { - configure_entry .menu21.config.f.x4 normal {n l y}} else {configure_entry .menu21.config.f.x4 disabled {y n l}} - global CONFIG_CAN_SYNCRST - if {($CONFIG_CAN_ENABLE == 1)} then { - configure_entry .menu21.config.f.x5 normal {n l y}} else {configure_entry .menu21.config.f.x5 disabled {y n l}} - global CONFIG_CAN_FT - if {($CONFIG_CAN_ENABLE == 1)} then { - configure_entry .menu21.config.f.x6 normal {n l y}} else {configure_entry .menu21.config.f.x6 disabled {y n l}} -} - - -proc update_define_menu21 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_CAN_ENABLE - global CONFIG_CAN_NUM - if {($CONFIG_CAN_ENABLE == 1)} then {validate_int CONFIG_CAN_NUM "$CONFIG_CAN_NUM" 1} - global CONFIG_CANIO - if {($CONFIG_CAN_ENABLE == 1)} then {validate_hex CONFIG_CANIO "$CONFIG_CANIO" C00} - global CONFIG_CANIRQ - if {($CONFIG_CAN_ENABLE == 1)} then {validate_int CONFIG_CANIRQ "$CONFIG_CANIRQ" 13} - global CONFIG_CANSEPIRQ - if {($CONFIG_CAN_ENABLE == 1)} then { - set CONFIG_CANSEPIRQ [expr $CONFIG_CANSEPIRQ&15]} else {set CONFIG_CANSEPIRQ [expr $CONFIG_CANSEPIRQ|16]} - global CONFIG_CAN_SYNCRST - if {($CONFIG_CAN_ENABLE == 1)} then { - set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST&15]} else {set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST|16]} - global CONFIG_CAN_FT - if {($CONFIG_CAN_ENABLE == 1)} then { - set CONFIG_CAN_FT [expr $CONFIG_CAN_FT&15]} else {set CONFIG_CAN_FT [expr $CONFIG_CAN_FT|16]} -} - - -proc menu22 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 22} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 22]] - message $w.m -width 400 -aspect 300 -text \ - "USB 2.0 Device Controller " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "USB 2.0 Device Controller " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu23 .menu23 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 22 0 "Gaisler Research USB 2.0 Device Controller " CONFIG_GRUSBDC_ENABLE - bool $w.config.f 22 1 "AHB Master Interface" CONFIG_GRUSBDC_AIFACE - global tmpvar_31 - minimenu $w.config.f 22 2 "USB Transceiver Interface" tmpvar_31 CONFIG_GRUSBDC_ULPI - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"USB Transceiver Interface\"" - $w.config.f.x2.x.menu add radiobutton -label "ULPI" -variable tmpvar_31 -value "ULPI" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "UTMI/UTMI+8-bit" -variable tmpvar_31 -value "UTMI/UTMI+8-bit" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "UTMI/UTMI+16-bit" -variable tmpvar_31 -value "UTMI/UTMI+16-bit" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 3 - int $w.config.f 22 3 "Number of IN endpoints " CONFIG_GRUSBDC_NEPI - int $w.config.f 22 4 "Number of OUT endpoints" CONFIG_GRUSBDC_NEPO - int $w.config.f 22 5 "Buffer size for IN endpoint 0 " CONFIG_GRUSBDC_I0 - int $w.config.f 22 6 "Buffer size for IN endpoint 1 " CONFIG_GRUSBDC_I1 - int $w.config.f 22 7 "Buffer size for IN endpoint 2 " CONFIG_GRUSBDC_I2 - int $w.config.f 22 8 "Buffer size for IN endpoint 3 " CONFIG_GRUSBDC_I3 - int $w.config.f 22 9 "Buffer size for IN endpoint 4 " CONFIG_GRUSBDC_I4 - int $w.config.f 22 10 "Buffer size for IN endpoint 5 " CONFIG_GRUSBDC_I5 - int $w.config.f 22 11 "Buffer size for IN endpoint 6 " CONFIG_GRUSBDC_I6 - int $w.config.f 22 12 "Buffer size for IN endpoint 7 " CONFIG_GRUSBDC_I7 - int $w.config.f 22 13 "Buffer size for IN endpoint 8 " CONFIG_GRUSBDC_I8 - int $w.config.f 22 14 "Buffer size for IN endpoint 9 " CONFIG_GRUSBDC_I9 - int $w.config.f 22 15 "Buffer size for IN endpoint 10 " CONFIG_GRUSBDC_I10 - int $w.config.f 22 16 "Buffer size for IN endpoint 11 " CONFIG_GRUSBDC_I11 - int $w.config.f 22 17 "Buffer size for IN endpoint 12 " CONFIG_GRUSBDC_I12 - int $w.config.f 22 18 "Buffer size for IN endpoint 13 " CONFIG_GRUSBDC_I13 - int $w.config.f 22 19 "Buffer size for IN endpoint 14 " CONFIG_GRUSBDC_I14 - int $w.config.f 22 20 "Buffer size for IN endpoint 15 " CONFIG_GRUSBDC_I15 - int $w.config.f 22 21 "Buffer size for OUT endpoint 0" CONFIG_GRUSBDC_O0 - int $w.config.f 22 22 "Buffer size for OUT endpoint 1" CONFIG_GRUSBDC_O1 - int $w.config.f 22 23 "Buffer size for OUT endpoint 2" CONFIG_GRUSBDC_O2 - int $w.config.f 22 24 "Buffer size for OUT endpoint 3" CONFIG_GRUSBDC_O3 - int $w.config.f 22 25 "Buffer size for OUT endpoint 4" CONFIG_GRUSBDC_O4 - int $w.config.f 22 26 "Buffer size for OUT endpoint 5" CONFIG_GRUSBDC_O5 - int $w.config.f 22 27 "Buffer size for OUT endpoint 6" CONFIG_GRUSBDC_O6 - int $w.config.f 22 28 "Buffer size for OUT endpoint 7" CONFIG_GRUSBDC_O7 - int $w.config.f 22 29 "Buffer size for OUT endpoint 8" CONFIG_GRUSBDC_O8 - int $w.config.f 22 30 "Buffer size for OUT endpoint 9" CONFIG_GRUSBDC_O9 - int $w.config.f 22 31 "Buffer size for OUT endpoint 10" CONFIG_GRUSBDC_O10 - int $w.config.f 22 32 "Buffer size for OUT endpoint 11" CONFIG_GRUSBDC_O11 - int $w.config.f 22 33 "Buffer size for OUT endpoint 12" CONFIG_GRUSBDC_O12 - int $w.config.f 22 34 "Buffer size for OUT endpoint 13" CONFIG_GRUSBDC_O13 - int $w.config.f 22 35 "Buffer size for OUT endpoint 14" CONFIG_GRUSBDC_O14 - int $w.config.f 22 36 "Buffer size for OUT endpoint 15" CONFIG_GRUSBDC_O15 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu22 {} { - global CONFIG_GRUSBDC_ENABLE - global CONFIG_GRUSBDC_AIFACE - if {($CONFIG_GRUSBDC_ENABLE == 1)} then { - configure_entry .menu22.config.f.x1 normal {n l y}} else {configure_entry .menu22.config.f.x1 disabled {y n l}} - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {configure_entry .menu22.config.f.x2 normal {x l}} else {configure_entry .menu22.config.f.x2 disabled {x l}} - global CONFIG_GRUSBDC_NEPI - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x3.l configure -state normal; } else {.menu22.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x3.l configure -state disabled} - global CONFIG_GRUSBDC_NEPO - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x4.l configure -state normal; } else {.menu22.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x4.l configure -state disabled} - global CONFIG_GRUSBDC_I0 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x5.l configure -state normal; } else {.menu22.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x5.l configure -state disabled} - global CONFIG_GRUSBDC_I1 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x6.l configure -state normal; } else {.menu22.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x6.l configure -state disabled} - global CONFIG_GRUSBDC_I2 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x7.l configure -state normal; } else {.menu22.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x7.l configure -state disabled} - global CONFIG_GRUSBDC_I3 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x8.l configure -state normal; } else {.menu22.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x8.l configure -state disabled} - global CONFIG_GRUSBDC_I4 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x9.l configure -state normal; } else {.menu22.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x9.l configure -state disabled} - global CONFIG_GRUSBDC_I5 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x10.l configure -state normal; } else {.menu22.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x10.l configure -state disabled} - global CONFIG_GRUSBDC_I6 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x11.l configure -state normal; } else {.menu22.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x11.l configure -state disabled} - global CONFIG_GRUSBDC_I7 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x12.l configure -state normal; } else {.menu22.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x12.l configure -state disabled} - global CONFIG_GRUSBDC_I8 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x13.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x13.l configure -state normal; } else {.menu22.config.f.x13.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x13.l configure -state disabled} - global CONFIG_GRUSBDC_I9 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x14.l configure -state normal; } else {.menu22.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x14.l configure -state disabled} - global CONFIG_GRUSBDC_I10 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x15.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x15.l configure -state normal; } else {.menu22.config.f.x15.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x15.l configure -state disabled} - global CONFIG_GRUSBDC_I11 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x16.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x16.l configure -state normal; } else {.menu22.config.f.x16.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x16.l configure -state disabled} - global CONFIG_GRUSBDC_I12 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x17.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x17.l configure -state normal; } else {.menu22.config.f.x17.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x17.l configure -state disabled} - global CONFIG_GRUSBDC_I13 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x18.l configure -state normal; } else {.menu22.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x18.l configure -state disabled} - global CONFIG_GRUSBDC_I14 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x19.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x19.l configure -state normal; } else {.menu22.config.f.x19.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x19.l configure -state disabled} - global CONFIG_GRUSBDC_I15 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x20.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x20.l configure -state normal; } else {.menu22.config.f.x20.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x20.l configure -state disabled} - global CONFIG_GRUSBDC_O0 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x21.l configure -state normal; } else {.menu22.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x21.l configure -state disabled} - global CONFIG_GRUSBDC_O1 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x22.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x22.l configure -state normal; } else {.menu22.config.f.x22.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x22.l configure -state disabled} - global CONFIG_GRUSBDC_O2 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x23.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x23.l configure -state normal; } else {.menu22.config.f.x23.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x23.l configure -state disabled} - global CONFIG_GRUSBDC_O3 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x24.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x24.l configure -state normal; } else {.menu22.config.f.x24.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x24.l configure -state disabled} - global CONFIG_GRUSBDC_O4 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x25.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x25.l configure -state normal; } else {.menu22.config.f.x25.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x25.l configure -state disabled} - global CONFIG_GRUSBDC_O5 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x26.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x26.l configure -state normal; } else {.menu22.config.f.x26.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x26.l configure -state disabled} - global CONFIG_GRUSBDC_O6 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x27.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x27.l configure -state normal; } else {.menu22.config.f.x27.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x27.l configure -state disabled} - global CONFIG_GRUSBDC_O7 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x28.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x28.l configure -state normal; } else {.menu22.config.f.x28.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x28.l configure -state disabled} - global CONFIG_GRUSBDC_O8 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x29.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x29.l configure -state normal; } else {.menu22.config.f.x29.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x29.l configure -state disabled} - global CONFIG_GRUSBDC_O9 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x30.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x30.l configure -state normal; } else {.menu22.config.f.x30.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x30.l configure -state disabled} - global CONFIG_GRUSBDC_O10 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x31.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x31.l configure -state normal; } else {.menu22.config.f.x31.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x31.l configure -state disabled} - global CONFIG_GRUSBDC_O11 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x32.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x32.l configure -state normal; } else {.menu22.config.f.x32.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x32.l configure -state disabled} - global CONFIG_GRUSBDC_O12 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x33.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x33.l configure -state normal; } else {.menu22.config.f.x33.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x33.l configure -state disabled} - global CONFIG_GRUSBDC_O13 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x34.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x34.l configure -state normal; } else {.menu22.config.f.x34.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x34.l configure -state disabled} - global CONFIG_GRUSBDC_O14 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x35.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x35.l configure -state normal; } else {.menu22.config.f.x35.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x35.l configure -state disabled} - global CONFIG_GRUSBDC_O15 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {.menu22.config.f.x36.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x36.l configure -state normal; } else {.menu22.config.f.x36.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x36.l configure -state disabled} -} - - -proc update_define_menu22 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_GRUSBDC_ENABLE - global CONFIG_GRUSBDC_AIFACE - if {($CONFIG_GRUSBDC_ENABLE == 1)} then { - set CONFIG_GRUSBDC_AIFACE [expr $CONFIG_GRUSBDC_AIFACE&15]} else {set CONFIG_GRUSBDC_AIFACE [expr $CONFIG_GRUSBDC_AIFACE|16]} - global tmpvar_31 - global CONFIG_GRUSBDC_ULPI - if {$tmpvar_31 == "ULPI"} then {set CONFIG_GRUSBDC_ULPI 1} else {set CONFIG_GRUSBDC_ULPI 0} - global CONFIG_GRUSBDC_UTMI8 - if {$tmpvar_31 == "UTMI/UTMI+8-bit"} then {set CONFIG_GRUSBDC_UTMI8 1} else {set CONFIG_GRUSBDC_UTMI8 0} - global CONFIG_GRUSBDC_UTMI16 - if {$tmpvar_31 == "UTMI/UTMI+16-bit"} then {set CONFIG_GRUSBDC_UTMI16 1} else {set CONFIG_GRUSBDC_UTMI16 0} - global CONFIG_GRUSBDC_NEPI - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_NEPI "$CONFIG_GRUSBDC_NEPI" 1} - global CONFIG_GRUSBDC_NEPO - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_NEPO "$CONFIG_GRUSBDC_NEPO" 1} - global CONFIG_GRUSBDC_I0 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I0 "$CONFIG_GRUSBDC_I0" 1024} - global CONFIG_GRUSBDC_I1 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I1 "$CONFIG_GRUSBDC_I1" 1024} - global CONFIG_GRUSBDC_I2 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I2 "$CONFIG_GRUSBDC_I2" 1024} - global CONFIG_GRUSBDC_I3 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I3 "$CONFIG_GRUSBDC_I3" 1024} - global CONFIG_GRUSBDC_I4 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I4 "$CONFIG_GRUSBDC_I4" 1024} - global CONFIG_GRUSBDC_I5 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I5 "$CONFIG_GRUSBDC_I5" 1024} - global CONFIG_GRUSBDC_I6 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I6 "$CONFIG_GRUSBDC_I6" 1024} - global CONFIG_GRUSBDC_I7 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I7 "$CONFIG_GRUSBDC_I7" 1024} - global CONFIG_GRUSBDC_I8 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I8 "$CONFIG_GRUSBDC_I8" 1024} - global CONFIG_GRUSBDC_I9 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I9 "$CONFIG_GRUSBDC_I9" 1024} - global CONFIG_GRUSBDC_I10 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I10 "$CONFIG_GRUSBDC_I10" 1024} - global CONFIG_GRUSBDC_I11 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I11 "$CONFIG_GRUSBDC_I11" 1024} - global CONFIG_GRUSBDC_I12 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I12 "$CONFIG_GRUSBDC_I12" 1024} - global CONFIG_GRUSBDC_I13 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I13 "$CONFIG_GRUSBDC_I13" 1024} - global CONFIG_GRUSBDC_I14 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I14 "$CONFIG_GRUSBDC_I14" 1024} - global CONFIG_GRUSBDC_I15 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_I15 "$CONFIG_GRUSBDC_I15" 1024} - global CONFIG_GRUSBDC_O0 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O0 "$CONFIG_GRUSBDC_O0" 1024} - global CONFIG_GRUSBDC_O1 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O1 "$CONFIG_GRUSBDC_O1" 1024} - global CONFIG_GRUSBDC_O2 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O2 "$CONFIG_GRUSBDC_O2" 1024} - global CONFIG_GRUSBDC_O3 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O3 "$CONFIG_GRUSBDC_O3" 1024} - global CONFIG_GRUSBDC_O4 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O4 "$CONFIG_GRUSBDC_O4" 1024} - global CONFIG_GRUSBDC_O5 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O5 "$CONFIG_GRUSBDC_O5" 1024} - global CONFIG_GRUSBDC_O6 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O6 "$CONFIG_GRUSBDC_O6" 1024} - global CONFIG_GRUSBDC_O7 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O7 "$CONFIG_GRUSBDC_O7" 1024} - global CONFIG_GRUSBDC_O8 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O8 "$CONFIG_GRUSBDC_O8" 1024} - global CONFIG_GRUSBDC_O9 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O9 "$CONFIG_GRUSBDC_O9" 1024} - global CONFIG_GRUSBDC_O10 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O10 "$CONFIG_GRUSBDC_O10" 1024} - global CONFIG_GRUSBDC_O11 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O11 "$CONFIG_GRUSBDC_O11" 1024} - global CONFIG_GRUSBDC_O12 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O12 "$CONFIG_GRUSBDC_O12" 1024} - global CONFIG_GRUSBDC_O13 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O13 "$CONFIG_GRUSBDC_O13" 1024} - global CONFIG_GRUSBDC_O14 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O14 "$CONFIG_GRUSBDC_O14" 1024} - global CONFIG_GRUSBDC_O15 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {validate_int CONFIG_GRUSBDC_O15 "$CONFIG_GRUSBDC_O15" 1024} -} - - -proc menu23 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 23} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 23]] - message $w.m -width 400 -aspect 300 -text \ - "USB 2.0 Host Controller " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "USB 2.0 Host Controller " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu24 .menu24 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 23 0 "Gaisler Research USB 2.0 Host Controller " CONFIG_GRUSBHC_ENABLE - bool $w.config.f 23 1 "Enable Enhanced Host Controller " CONFIG_GRUSBHC_EHC - bool $w.config.f 23 2 "Enable Universal Host Controller " CONFIG_GRUSBHC_UHC - int $w.config.f 23 3 "Number of Universal Host Controllers (1-15)" CONFIG_GRUSBHC_NCC - int $w.config.f 23 4 "Total number of ports (1-15)" CONFIG_GRUSBHC_NPORTS - global tmpvar_32 - minimenu $w.config.f 23 5 "Transceiver interface" tmpvar_32 CONFIG_GRUSBHC_ULPI - menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"Transceiver interface\"" - $w.config.f.x5.x.menu add radiobutton -label "ULPI" -variable tmpvar_32 -value "ULPI" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "UTMI+16-bit" -variable tmpvar_32 -value "UTMI+16-bit" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "UTMI+8-bit" -variable tmpvar_32 -value "UTMI+8-bit" -command "update_active" - menusplit $w $w.config.f.x5.x.menu 3 - global tmpvar_33 - minimenu $w.config.f 23 6 "Bus power generation" tmpvar_33 CONFIG_GRUSBHC_VBUSEXT - menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"Bus power generation\"" - $w.config.f.x6.x.menu add radiobutton -label "External" -variable tmpvar_33 -value "External" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Internal" -variable tmpvar_33 -value "Internal" -command "update_active" - menusplit $w $w.config.f.x6.x.menu 2 - global tmpvar_34 - minimenu $w.config.f 23 7 "External bus fault indicator" tmpvar_34 CONFIG_GRUSBHC_FAULTL - menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"External bus fault indicator\"" - $w.config.f.x7.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_34 -value "ActiveLow" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_34 -value "ActiveHigh" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "None" -variable tmpvar_34 -value "None" -command "update_active" - menusplit $w $w.config.f.x7.x.menu 3 - global tmpvar_35 - minimenu $w.config.f 23 8 "Bus power enable signal" tmpvar_35 CONFIG_GRUSBHC_ENABLEH - menu $w.config.f.x8.x.menu -tearoffcommand "menutitle \"Bus power enable signal\"" - $w.config.f.x8.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_35 -value "ActiveHigh" -command "update_active" - $w.config.f.x8.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_35 -value "ActiveLow" -command "update_active" - menusplit $w $w.config.f.x8.x.menu 2 - global tmpvar_36 - minimenu $w.config.f 23 9 "Bus power fault indicator" tmpvar_36 CONFIG_GRUSBHC_FAULT2H - menu $w.config.f.x9.x.menu -tearoffcommand "menutitle \"Bus power fault indicator\"" - $w.config.f.x9.x.menu add radiobutton -label "ActiveHigh" -variable tmpvar_36 -value "ActiveHigh" -command "update_active" - $w.config.f.x9.x.menu add radiobutton -label "ActiveLow" -variable tmpvar_36 -value "ActiveLow" -command "update_active" - menusplit $w $w.config.f.x9.x.menu 2 - comment $w.config.f 23 10 "Memory interface" - bool $w.config.f 23 11 "Enable big endian register interface" CONFIG_GRUSBHC_BEREGS - bool $w.config.f 23 12 "Enable big endian descriptors" CONFIG_GRUSBHC_BEDESC - int $w.config.f 23 13 "Maximum burst length in words (1-256)" CONFIG_GRUSBHC_BWRD - comment $w.config.f 23 14 "Port routing" - bool $w.config.f 23 15 "Port routing rules" CONFIG_GRUSBHC_PRR - int $w.config.f 23 16 "Number of ports per companion controller (1-15)" CONFIG_GRUSBHC_NPCC - int $w.config.f 23 17 "Route port 1 to companion controller " CONFIG_GRUSBHC_PR1 - int $w.config.f 23 18 "Route port 2 to companion controller " CONFIG_GRUSBHC_PR2 - int $w.config.f 23 19 "Route port 3 to companion controller " CONFIG_GRUSBHC_PR3 - int $w.config.f 23 20 "Route port 4 to companion controller " CONFIG_GRUSBHC_PR4 - int $w.config.f 23 21 "Route port 5 to companion controller " CONFIG_GRUSBHC_PR5 - int $w.config.f 23 22 "Route port 6 to companion controller " CONFIG_GRUSBHC_PR6 - int $w.config.f 23 23 "Route port 7 to companion controller " CONFIG_GRUSBHC_PR7 - int $w.config.f 23 24 "Route port 8 to companion controller " CONFIG_GRUSBHC_PR8 - int $w.config.f 23 25 "Route port 9 to companion controller " CONFIG_GRUSBHC_PR9 - int $w.config.f 23 26 "Route port 10 to companion controller " CONFIG_GRUSBHC_PR10 - int $w.config.f 23 27 "Route port 11 to companion controller " CONFIG_GRUSBHC_PR11 - int $w.config.f 23 28 "Route port 12 to companion controller " CONFIG_GRUSBHC_PR12 - int $w.config.f 23 29 "Route port 13 to companion controller " CONFIG_GRUSBHC_PR13 - int $w.config.f 23 30 "Route port 14 to companion controller " CONFIG_GRUSBHC_PR14 - int $w.config.f 23 31 "Route port 15 to companion controller " CONFIG_GRUSBHC_PR15 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu23 {} { global CONFIG_GRUSBHC_ENABLE global CONFIG_GRUSBHC_EHC if {($CONFIG_GRUSBHC_ENABLE == 1)} then { - configure_entry .menu23.config.f.x1 normal {n l y}} else {configure_entry .menu23.config.f.x1 disabled {y n l}} + configure_entry .menu21.config.f.x1 normal {n l y}} else {configure_entry .menu21.config.f.x1 disabled {y n l}} global CONFIG_GRUSBHC_UHC if {($CONFIG_GRUSBHC_ENABLE == 1)} then { - configure_entry .menu23.config.f.x2 normal {n l y}} else {configure_entry .menu23.config.f.x2 disabled {y n l}} + configure_entry .menu21.config.f.x2 normal {n l y}} else {configure_entry .menu21.config.f.x2 disabled {y n l}} global CONFIG_GRUSBHC_NCC - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_UHC == 1)} then {.menu23.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x3.l configure -state normal; } else {.menu23.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x3.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_UHC == 1)} then {.menu21.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x3.l configure -state normal; } else {.menu21.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x3.l configure -state disabled} global CONFIG_GRUSBHC_NPORTS - if {($CONFIG_GRUSBHC_ENABLE == 1)} then {.menu23.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x4.l configure -state normal; } else {.menu23.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x4.l configure -state disabled} - if {($CONFIG_GRUSBHC_ENABLE == 1)} then {configure_entry .menu23.config.f.x5 normal {x l}} else {configure_entry .menu23.config.f.x5 disabled {x l}} + if {($CONFIG_GRUSBHC_ENABLE == 1)} then {.menu21.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x4.l configure -state normal; } else {.menu21.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x4.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1)} then {configure_entry .menu21.config.f.x5 normal {x l}} else {configure_entry .menu21.config.f.x5 disabled {x l}} global CONFIG_GRUSBHC_ULPI - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI == 1)} then {configure_entry .menu23.config.f.x6 normal {x l}} else {configure_entry .menu23.config.f.x6 disabled {x l}} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI == 1)} then {configure_entry .menu21.config.f.x6 normal {x l}} else {configure_entry .menu21.config.f.x6 disabled {x l}} global CONFIG_GRUSBHC_VBUSEXT - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI == 1) && ($CONFIG_GRUSBHC_VBUSEXT == 1)} then {configure_entry .menu23.config.f.x7 normal {x l}} else {configure_entry .menu23.config.f.x7 disabled {x l}} - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI != 1)} then {configure_entry .menu23.config.f.x8 normal {x l}} else {configure_entry .menu23.config.f.x8 disabled {x l}} - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI != 1)} then {configure_entry .menu23.config.f.x9 normal {x l}} else {configure_entry .menu23.config.f.x9 disabled {x l}} - if {($CONFIG_GRUSBHC_ENABLE == 1)} then {configure_entry .menu23.config.f.x10 normal {m}} else {configure_entry .menu23.config.f.x10 disabled {m}} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI == 1) && ($CONFIG_GRUSBHC_VBUSEXT == 1)} then {configure_entry .menu21.config.f.x7 normal {x l}} else {configure_entry .menu21.config.f.x7 disabled {x l}} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI != 1)} then {configure_entry .menu21.config.f.x8 normal {x l}} else {configure_entry .menu21.config.f.x8 disabled {x l}} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI != 1)} then {configure_entry .menu21.config.f.x9 normal {x l}} else {configure_entry .menu21.config.f.x9 disabled {x l}} + if {($CONFIG_GRUSBHC_ENABLE == 1)} then {configure_entry .menu21.config.f.x10 normal {m}} else {configure_entry .menu21.config.f.x10 disabled {m}} global CONFIG_GRUSBHC_BEREGS if {($CONFIG_GRUSBHC_ENABLE == 1)} then { - configure_entry .menu23.config.f.x11 normal {n l y}} else {configure_entry .menu23.config.f.x11 disabled {y n l}} + configure_entry .menu21.config.f.x11 normal {n l y}} else {configure_entry .menu21.config.f.x11 disabled {y n l}} global CONFIG_GRUSBHC_BEDESC if {($CONFIG_GRUSBHC_ENABLE == 1)} then { - configure_entry .menu23.config.f.x12 normal {n l y}} else {configure_entry .menu23.config.f.x12 disabled {y n l}} + configure_entry .menu21.config.f.x12 normal {n l y}} else {configure_entry .menu21.config.f.x12 disabled {y n l}} global CONFIG_GRUSBHC_BWRD - if {($CONFIG_GRUSBHC_ENABLE == 1)} then {.menu23.config.f.x13.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x13.l configure -state normal; } else {.menu23.config.f.x13.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x13.l configure -state disabled} - if {($CONFIG_GRUSBHC_ENABLE == 1)} then {configure_entry .menu23.config.f.x14 normal {m}} else {configure_entry .menu23.config.f.x14 disabled {m}} + if {($CONFIG_GRUSBHC_ENABLE == 1)} then {.menu21.config.f.x13.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x13.l configure -state normal; } else {.menu21.config.f.x13.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x13.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1)} then {configure_entry .menu21.config.f.x14 normal {m}} else {configure_entry .menu21.config.f.x14 disabled {m}} global CONFIG_GRUSBHC_PRR if {($CONFIG_GRUSBHC_ENABLE == 1)} then { - configure_entry .menu23.config.f.x15 normal {n l y}} else {configure_entry .menu23.config.f.x15 disabled {y n l}} + configure_entry .menu21.config.f.x15 normal {n l y}} else {configure_entry .menu21.config.f.x15 disabled {y n l}} global CONFIG_GRUSBHC_NPCC - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR == 0)} then {.menu23.config.f.x16.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x16.l configure -state normal; } else {.menu23.config.f.x16.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x16.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR == 0)} then {.menu21.config.f.x16.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x16.l configure -state normal; } else {.menu21.config.f.x16.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x16.l configure -state disabled} global CONFIG_GRUSBHC_PR1 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x17.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x17.l configure -state normal; } else {.menu23.config.f.x17.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x17.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x17.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x17.l configure -state normal; } else {.menu21.config.f.x17.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x17.l configure -state disabled} global CONFIG_GRUSBHC_PR2 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x18.l configure -state normal; } else {.menu23.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x18.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x18.l configure -state normal; } else {.menu21.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x18.l configure -state disabled} global CONFIG_GRUSBHC_PR3 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x19.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x19.l configure -state normal; } else {.menu23.config.f.x19.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x19.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x19.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x19.l configure -state normal; } else {.menu21.config.f.x19.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x19.l configure -state disabled} global CONFIG_GRUSBHC_PR4 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x20.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x20.l configure -state normal; } else {.menu23.config.f.x20.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x20.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x20.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x20.l configure -state normal; } else {.menu21.config.f.x20.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x20.l configure -state disabled} global CONFIG_GRUSBHC_PR5 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x21.l configure -state normal; } else {.menu23.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x21.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x21.l configure -state normal; } else {.menu21.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x21.l configure -state disabled} global CONFIG_GRUSBHC_PR6 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x22.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x22.l configure -state normal; } else {.menu23.config.f.x22.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x22.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x22.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x22.l configure -state normal; } else {.menu21.config.f.x22.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x22.l configure -state disabled} global CONFIG_GRUSBHC_PR7 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x23.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x23.l configure -state normal; } else {.menu23.config.f.x23.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x23.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x23.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x23.l configure -state normal; } else {.menu21.config.f.x23.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x23.l configure -state disabled} global CONFIG_GRUSBHC_PR8 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x24.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x24.l configure -state normal; } else {.menu23.config.f.x24.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x24.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x24.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x24.l configure -state normal; } else {.menu21.config.f.x24.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x24.l configure -state disabled} global CONFIG_GRUSBHC_PR9 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x25.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x25.l configure -state normal; } else {.menu23.config.f.x25.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x25.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x25.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x25.l configure -state normal; } else {.menu21.config.f.x25.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x25.l configure -state disabled} global CONFIG_GRUSBHC_PR10 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x26.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x26.l configure -state normal; } else {.menu23.config.f.x26.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x26.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x26.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x26.l configure -state normal; } else {.menu21.config.f.x26.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x26.l configure -state disabled} global CONFIG_GRUSBHC_PR11 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x27.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x27.l configure -state normal; } else {.menu23.config.f.x27.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x27.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x27.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x27.l configure -state normal; } else {.menu21.config.f.x27.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x27.l configure -state disabled} global CONFIG_GRUSBHC_PR12 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x28.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x28.l configure -state normal; } else {.menu23.config.f.x28.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x28.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x28.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x28.l configure -state normal; } else {.menu21.config.f.x28.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x28.l configure -state disabled} global CONFIG_GRUSBHC_PR13 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x29.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x29.l configure -state normal; } else {.menu23.config.f.x29.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x29.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x29.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x29.l configure -state normal; } else {.menu21.config.f.x29.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x29.l configure -state disabled} global CONFIG_GRUSBHC_PR14 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x30.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x30.l configure -state normal; } else {.menu23.config.f.x30.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x30.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x30.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x30.l configure -state normal; } else {.menu21.config.f.x30.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x30.l configure -state disabled} global CONFIG_GRUSBHC_PR15 - if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu23.config.f.x31.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x31.l configure -state normal; } else {.menu23.config.f.x31.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x31.l configure -state disabled} + if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_PRR != 0)} then {.menu21.config.f.x31.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x31.l configure -state normal; } else {.menu21.config.f.x31.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x31.l configure -state disabled} } -proc update_define_menu23 {} { +proc update_define_menu21 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_GRUSBHC_ENABLE @@ -4780,35 +4650,35 @@ proc update_define_menu23 {} { if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_UHC == 1)} then {validate_int CONFIG_GRUSBHC_NCC "$CONFIG_GRUSBHC_NCC" 1} global CONFIG_GRUSBHC_NPORTS if {($CONFIG_GRUSBHC_ENABLE == 1)} then {validate_int CONFIG_GRUSBHC_NPORTS "$CONFIG_GRUSBHC_NPORTS" 1} - global tmpvar_32 + global tmpvar_31 global CONFIG_GRUSBHC_ULPI - if {$tmpvar_32 == "ULPI"} then {set CONFIG_GRUSBHC_ULPI 1} else {set CONFIG_GRUSBHC_ULPI 0} + if {$tmpvar_31 == "ULPI"} then {set CONFIG_GRUSBHC_ULPI 1} else {set CONFIG_GRUSBHC_ULPI 0} global CONFIG_GRUSBHC_UTMI16 - if {$tmpvar_32 == "UTMI+16-bit"} then {set CONFIG_GRUSBHC_UTMI16 1} else {set CONFIG_GRUSBHC_UTMI16 0} + if {$tmpvar_31 == "UTMI+16-bit"} then {set CONFIG_GRUSBHC_UTMI16 1} else {set CONFIG_GRUSBHC_UTMI16 0} global CONFIG_GRUSBHC_UTMI8 - if {$tmpvar_32 == "UTMI+8-bit"} then {set CONFIG_GRUSBHC_UTMI8 1} else {set CONFIG_GRUSBHC_UTMI8 0} - global tmpvar_33 + if {$tmpvar_31 == "UTMI+8-bit"} then {set CONFIG_GRUSBHC_UTMI8 1} else {set CONFIG_GRUSBHC_UTMI8 0} + global tmpvar_32 global CONFIG_GRUSBHC_VBUSEXT - if {$tmpvar_33 == "External"} then {set CONFIG_GRUSBHC_VBUSEXT 1} else {set CONFIG_GRUSBHC_VBUSEXT 0} + if {$tmpvar_32 == "External"} then {set CONFIG_GRUSBHC_VBUSEXT 1} else {set CONFIG_GRUSBHC_VBUSEXT 0} global CONFIG_GRUSBHC_VBUSINT - if {$tmpvar_33 == "Internal"} then {set CONFIG_GRUSBHC_VBUSINT 1} else {set CONFIG_GRUSBHC_VBUSINT 0} - global tmpvar_34 + if {$tmpvar_32 == "Internal"} then {set CONFIG_GRUSBHC_VBUSINT 1} else {set CONFIG_GRUSBHC_VBUSINT 0} + global tmpvar_33 global CONFIG_GRUSBHC_FAULTL - if {$tmpvar_34 == "ActiveLow"} then {set CONFIG_GRUSBHC_FAULTL 1} else {set CONFIG_GRUSBHC_FAULTL 0} + if {$tmpvar_33 == "ActiveLow"} then {set CONFIG_GRUSBHC_FAULTL 1} else {set CONFIG_GRUSBHC_FAULTL 0} global CONFIG_GRUSBHC_FAULTH - if {$tmpvar_34 == "ActiveHigh"} then {set CONFIG_GRUSBHC_FAULTH 1} else {set CONFIG_GRUSBHC_FAULTH 0} + if {$tmpvar_33 == "ActiveHigh"} then {set CONFIG_GRUSBHC_FAULTH 1} else {set CONFIG_GRUSBHC_FAULTH 0} global CONFIG_GRUSBHC_FAULTN - if {$tmpvar_34 == "None"} then {set CONFIG_GRUSBHC_FAULTN 1} else {set CONFIG_GRUSBHC_FAULTN 0} - global tmpvar_35 + if {$tmpvar_33 == "None"} then {set CONFIG_GRUSBHC_FAULTN 1} else {set CONFIG_GRUSBHC_FAULTN 0} + global tmpvar_34 global CONFIG_GRUSBHC_ENABLEH - if {$tmpvar_35 == "ActiveHigh"} then {set CONFIG_GRUSBHC_ENABLEH 1} else {set CONFIG_GRUSBHC_ENABLEH 0} + if {$tmpvar_34 == "ActiveHigh"} then {set CONFIG_GRUSBHC_ENABLEH 1} else {set CONFIG_GRUSBHC_ENABLEH 0} global CONFIG_GRUSBHC_ENABLEL - if {$tmpvar_35 == "ActiveLow"} then {set CONFIG_GRUSBHC_ENABLEL 1} else {set CONFIG_GRUSBHC_ENABLEL 0} - global tmpvar_36 + if {$tmpvar_34 == "ActiveLow"} then {set CONFIG_GRUSBHC_ENABLEL 1} else {set CONFIG_GRUSBHC_ENABLEL 0} + global tmpvar_35 global CONFIG_GRUSBHC_FAULT2H - if {$tmpvar_36 == "ActiveHigh"} then {set CONFIG_GRUSBHC_FAULT2H 1} else {set CONFIG_GRUSBHC_FAULT2H 0} + if {$tmpvar_35 == "ActiveHigh"} then {set CONFIG_GRUSBHC_FAULT2H 1} else {set CONFIG_GRUSBHC_FAULT2H 0} global CONFIG_GRUSBHC_FAULT2L - if {$tmpvar_36 == "ActiveLow"} then {set CONFIG_GRUSBHC_FAULT2L 1} else {set CONFIG_GRUSBHC_FAULT2L 0} + if {$tmpvar_35 == "ActiveLow"} then {set CONFIG_GRUSBHC_FAULT2L 1} else {set CONFIG_GRUSBHC_FAULT2L 0} global CONFIG_GRUSBHC_BEREGS if {($CONFIG_GRUSBHC_ENABLE == 1)} then { set CONFIG_GRUSBHC_BEREGS [expr $CONFIG_GRUSBHC_BEREGS&15]} else {set CONFIG_GRUSBHC_BEREGS [expr $CONFIG_GRUSBHC_BEREGS|16]} @@ -4855,30 +4725,30 @@ proc update_define_menu23 {} { } -proc menu24 {w title} { +proc menu22 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 24} + catch {destroy $w; unregister_active 22} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 24]] + set active_menus [lsort -integer [linsert $active_menus end 22]] message $w.m -width 400 -aspect 300 -text \ "UART, timer, I/O port and interrupt controller" -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "UART, timer, I/O port and interrupt controller" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu25 .menu25 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu23 .menu23 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4906,42 +4776,42 @@ proc menu24 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 24 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_37 - minimenu $w.config.f 24 1 "UART1 FIFO depth" tmpvar_37 CONFIG_UA1_FIFO1 + bool $w.config.f 22 0 "Enable console UART " CONFIG_UART1_ENABLE + global tmpvar_36 + minimenu $w.config.f 22 1 "UART1 FIFO depth" tmpvar_36 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_37 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_37 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_37 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_37 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_37 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_37 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_36 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_36 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_36 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_36 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_36 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_36 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 - bool $w.config.f 24 2 "Enable secondary UART " CONFIG_UART2_ENABLE - global tmpvar_38 - minimenu $w.config.f 24 3 "UART2 FIFO depth" tmpvar_38 CONFIG_UA2_FIFO1 + bool $w.config.f 22 2 "Enable secondary UART " CONFIG_UART2_ENABLE + global tmpvar_37 + minimenu $w.config.f 22 3 "UART2 FIFO depth" tmpvar_37 CONFIG_UA2_FIFO1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_38 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_38 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_38 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_38 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_38 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_38 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_37 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_37 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_37 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_37 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_37 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_37 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 6 - bool $w.config.f 24 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE - bool $w.config.f 24 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC - int $w.config.f 24 6 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC - bool $w.config.f 24 7 "Enable Timer Unit " CONFIG_GPT_ENABLE - int $w.config.f 24 8 "Number of timers (1 - 7) " CONFIG_GPT_NTIM - int $w.config.f 24 9 "Scaler width (2 - 16) " CONFIG_GPT_SW - int $w.config.f 24 10 "Timer width (2 - 32) " CONFIG_GPT_TW - int $w.config.f 24 11 "Timer unit interrupt " CONFIG_GPT_IRQ - bool $w.config.f 24 12 "Separate interrupts " CONFIG_GPT_SEPIRQ - bool $w.config.f 24 13 "Watchdog enable " CONFIG_GPT_WDOGEN - hex $w.config.f 24 14 "Initial watchdog time-out value " CONFIG_GPT_WDOG - bool $w.config.f 24 15 "Enable generic GPIO port " CONFIG_GRGPIO_ENABLE - int $w.config.f 24 16 "GPIO width " CONFIG_GRGPIO_WIDTH - hex $w.config.f 24 17 "GPIO interrupt mask " CONFIG_GRGPIO_IMASK + bool $w.config.f 22 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE + bool $w.config.f 22 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC + int $w.config.f 22 6 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC + bool $w.config.f 22 7 "Enable Timer Unit " CONFIG_GPT_ENABLE + int $w.config.f 22 8 "Number of timers (1 - 7) " CONFIG_GPT_NTIM + int $w.config.f 22 9 "Scaler width (2 - 16) " CONFIG_GPT_SW + int $w.config.f 22 10 "Timer width (2 - 32) " CONFIG_GPT_TW + int $w.config.f 22 11 "Timer unit interrupt " CONFIG_GPT_IRQ + bool $w.config.f 22 12 "Separate interrupts " CONFIG_GPT_SEPIRQ + bool $w.config.f 22 13 "Watchdog enable " CONFIG_GPT_WDOGEN + hex $w.config.f 22 14 "Initial watchdog time-out value " CONFIG_GPT_WDOG + bool $w.config.f 22 15 "Enable generic GPIO port " CONFIG_GRGPIO_ENABLE + int $w.config.f 22 16 "GPIO width " CONFIG_GRGPIO_WIDTH + hex $w.config.f 22 17 "GPIO interrupt mask " CONFIG_GRGPIO_IMASK @@ -4978,78 +4848,78 @@ proc menu24 {w title} { } } -proc update_menu24 {} { +proc update_menu22 {} { global CONFIG_UART1_ENABLE - if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu24.config.f.x1 normal {x l}} else {configure_entry .menu24.config.f.x1 disabled {x l}} + if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu22.config.f.x1 normal {x l}} else {configure_entry .menu22.config.f.x1 disabled {x l}} global CONFIG_DSU_UART global CONFIG_UART2_ENABLE if {($CONFIG_DSU_UART != 1)} then { - configure_entry .menu24.config.f.x2 normal {n l y}} else {configure_entry .menu24.config.f.x2 disabled {y n l}} - if {($CONFIG_DSU_UART != 1) && ($CONFIG_UART2_ENABLE == 1)} then {configure_entry .menu24.config.f.x3 normal {x l}} else {configure_entry .menu24.config.f.x3 disabled {x l}} + configure_entry .menu22.config.f.x2 normal {n l y}} else {configure_entry .menu22.config.f.x2 disabled {y n l}} + if {($CONFIG_DSU_UART != 1) && ($CONFIG_UART2_ENABLE == 1)} then {configure_entry .menu22.config.f.x3 normal {x l}} else {configure_entry .menu22.config.f.x3 disabled {x l}} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { - configure_entry .menu24.config.f.x5 normal {n l y}} else {configure_entry .menu24.config.f.x5 disabled {y n l}} + configure_entry .menu22.config.f.x5 normal {n l y}} else {configure_entry .menu22.config.f.x5 disabled {y n l}} global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu24.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x6.l configure -state normal; } else {.menu24.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x6.l configure -state disabled} + if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu22.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x6.l configure -state normal; } else {.menu22.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x6.l configure -state disabled} global CONFIG_GPT_ENABLE global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {.menu24.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x8.l configure -state normal; } else {.menu24.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x8.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu22.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x8.l configure -state normal; } else {.menu22.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x8.l configure -state disabled} global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu24.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x9.l configure -state normal; } else {.menu24.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x9.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu22.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x9.l configure -state normal; } else {.menu22.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x9.l configure -state disabled} global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu24.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x10.l configure -state normal; } else {.menu24.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x10.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu22.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x10.l configure -state normal; } else {.menu22.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x10.l configure -state disabled} global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {.menu24.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x11.l configure -state normal; } else {.menu24.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x11.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu22.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x11.l configure -state normal; } else {.menu22.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x11.l configure -state disabled} global CONFIG_GPT_SEPIRQ if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu24.config.f.x12 normal {n l y}} else {configure_entry .menu24.config.f.x12 disabled {y n l}} + configure_entry .menu22.config.f.x12 normal {n l y}} else {configure_entry .menu22.config.f.x12 disabled {y n l}} global CONFIG_GPT_WDOGEN if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu24.config.f.x13 normal {n l y}} else {configure_entry .menu24.config.f.x13 disabled {y n l}} + configure_entry .menu22.config.f.x13 normal {n l y}} else {configure_entry .menu22.config.f.x13 disabled {y n l}} global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu24.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x14.l configure -state normal; } else {.menu24.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x14.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu22.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x14.l configure -state normal; } else {.menu22.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x14.l configure -state disabled} global CONFIG_GRGPIO_ENABLE global CONFIG_GRGPIO_WIDTH - if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu24.config.f.x16.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x16.l configure -state normal; } else {.menu24.config.f.x16.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x16.l configure -state disabled} + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu22.config.f.x16.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x16.l configure -state normal; } else {.menu22.config.f.x16.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x16.l configure -state disabled} global CONFIG_GRGPIO_IMASK - if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu24.config.f.x17.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x17.l configure -state normal; } else {.menu24.config.f.x17.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x17.l configure -state disabled} + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu22.config.f.x17.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x17.l configure -state normal; } else {.menu22.config.f.x17.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x17.l configure -state disabled} } -proc update_define_menu24 {} { +proc update_define_menu22 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_37 + global tmpvar_36 global CONFIG_UA1_FIFO1 - if {$tmpvar_37 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_36 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_37 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_36 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_37 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_36 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_37 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_36 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_37 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_36 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_37 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_36 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_DSU_UART global CONFIG_UART2_ENABLE if {($CONFIG_DSU_UART != 1)} then { set CONFIG_UART2_ENABLE [expr $CONFIG_UART2_ENABLE&15]} else {set CONFIG_UART2_ENABLE [expr $CONFIG_UART2_ENABLE|16]} - global tmpvar_38 + global tmpvar_37 global CONFIG_UA2_FIFO1 - if {$tmpvar_38 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} + if {$tmpvar_37 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} global CONFIG_UA2_FIFO2 - if {$tmpvar_38 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} + if {$tmpvar_37 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} global CONFIG_UA2_FIFO4 - if {$tmpvar_38 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} + if {$tmpvar_37 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} global CONFIG_UA2_FIFO8 - if {$tmpvar_38 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} + if {$tmpvar_37 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} global CONFIG_UA2_FIFO16 - if {$tmpvar_38 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} + if {$tmpvar_37 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} global CONFIG_UA2_FIFO32 - if {$tmpvar_38 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} + if {$tmpvar_37 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -5081,30 +4951,30 @@ proc update_define_menu24 {} { } -proc menu25 {w title} { +proc menu23 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 25} + catch {destroy $w; unregister_active 23} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 25]] + set active_menus [lsort -integer [linsert $active_menus end 23]] message $w.m -width 400 -aspect 300 -text \ "Spacewire " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "Spacewire " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu26 .menu26 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu24 .menu24 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -5132,59 +5002,59 @@ proc menu25 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 25 0 "Enable Spacewire links " CONFIG_SPW_ENABLE - int $w.config.f 25 1 "Number of links (1 - 3)" CONFIG_SPW_NUM - global tmpvar_39 - minimenu $w.config.f 25 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_39 CONFIG_SPW_AHBFIFO4 + bool $w.config.f 23 0 "Enable Spacewire links " CONFIG_SPW_ENABLE + int $w.config.f 23 1 "Number of links (1 - 3)" CONFIG_SPW_NUM + global tmpvar_38 + minimenu $w.config.f 23 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_38 CONFIG_SPW_AHBFIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB RX/TX FIFO size (32-bit words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_39 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_39 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_39 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_39 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_38 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_38 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_38 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_38 -value "32" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_40 - minimenu $w.config.f 25 3 "Receiver FIFO size (bytes) " tmpvar_40 CONFIG_SPW_RXFIFO16 + global tmpvar_39 + minimenu $w.config.f 23 3 "Receiver FIFO size (bytes) " tmpvar_39 CONFIG_SPW_RXFIFO16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Receiver FIFO size (bytes) \"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_40 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_40 -value "32" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_40 -value "64" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_39 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_39 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_39 -value "64" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 - bool $w.config.f 25 4 "Enable RMAP protocol " CONFIG_SPW_RMAP - global tmpvar_41 - minimenu $w.config.f 25 5 "RMAP buffer size (bytes) " tmpvar_41 CONFIG_SPW_RMAPBUF2 + bool $w.config.f 23 4 "Enable RMAP protocol " CONFIG_SPW_RMAP + global tmpvar_40 + minimenu $w.config.f 23 5 "RMAP buffer size (bytes) " tmpvar_40 CONFIG_SPW_RMAPBUF2 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"RMAP buffer size (bytes) \"" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_41 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_41 -value "128" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_41 -value "192" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_41 -value "256" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_40 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_40 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_40 -value "192" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_40 -value "256" -command "update_active" menusplit $w $w.config.f.x5.x.menu 4 - bool $w.config.f 25 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC - bool $w.config.f 25 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL - bool $w.config.f 25 8 "Spacewire FIFO protection " CONFIG_SPW_FT - bool $w.config.f 25 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST - int $w.config.f 25 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS - global tmpvar_42 - minimenu $w.config.f 25 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_42 CONFIG_SPW_GRSPW1 + bool $w.config.f 23 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC + bool $w.config.f 23 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL + bool $w.config.f 23 8 "Spacewire FIFO protection " CONFIG_SPW_FT + bool $w.config.f 23 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST + int $w.config.f 23 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS + global tmpvar_41 + minimenu $w.config.f 23 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_41 CONFIG_SPW_GRSPW1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Select GRSPW core (GRSPW1/GRSPW2) \"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_42 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_42 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_41 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_41 -value "2" -command "update_active" menusplit $w $w.config.f.x11.x.menu 2 - int $w.config.f 25 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN - bool $w.config.f 25 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME - global tmpvar_43 - minimenu $w.config.f 25 14 "Select receiver clock type " tmpvar_43 CONFIG_SPW_RX_SDR + int $w.config.f 23 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN + bool $w.config.f 23 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME + global tmpvar_42 + minimenu $w.config.f 23 14 "Select receiver clock type " tmpvar_42 CONFIG_SPW_RX_SDR menu $w.config.f.x14.x.menu -tearoffcommand "menutitle \"Select receiver clock type \"" - $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_43 -value "SDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_43 -value "DDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_43 -value "Xor" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_43 -value "Aeroflex" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_42 -value "SDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_42 -value "DDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_42 -value "Xor" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_42 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x14.x.menu 4 - global tmpvar_44 - minimenu $w.config.f 25 15 "Select transmitter clock type " tmpvar_44 CONFIG_SPW_TX_SDR + global tmpvar_43 + minimenu $w.config.f 23 15 "Select transmitter clock type " tmpvar_43 CONFIG_SPW_TX_SDR menu $w.config.f.x15.x.menu -tearoffcommand "menutitle \"Select transmitter clock type \"" - $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_44 -value "SDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_44 -value "DDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_44 -value "Aeroflex" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_43 -value "SDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_43 -value "DDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_43 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x15.x.menu 3 @@ -5222,76 +5092,76 @@ proc menu25 {w title} { } } -proc update_menu25 {} { +proc update_menu23 {} { global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM - if {($CONFIG_SPW_ENABLE == 1)} then {.menu25.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu25.config.f.x1.l configure -state normal; } else {.menu25.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu25.config.f.x1.l configure -state disabled} - if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu25.config.f.x2 normal {x l}} else {configure_entry .menu25.config.f.x2 disabled {x l}} - if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu25.config.f.x3 normal {x l}} else {configure_entry .menu25.config.f.x3 disabled {x l}} + if {($CONFIG_SPW_ENABLE == 1)} then {.menu23.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x1.l configure -state normal; } else {.menu23.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x1.l configure -state disabled} + if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu23.config.f.x2 normal {x l}} else {configure_entry .menu23.config.f.x2 disabled {x l}} + if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu23.config.f.x3 normal {x l}} else {configure_entry .menu23.config.f.x3 disabled {x l}} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { - configure_entry .menu25.config.f.x4 normal {n l y}} else {configure_entry .menu25.config.f.x4 disabled {y n l}} - if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then {configure_entry .menu25.config.f.x5 normal {x l}} else {configure_entry .menu25.config.f.x5 disabled {x l}} + configure_entry .menu23.config.f.x4 normal {n l y}} else {configure_entry .menu23.config.f.x4 disabled {y n l}} + if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then {configure_entry .menu23.config.f.x5 normal {x l}} else {configure_entry .menu23.config.f.x5 disabled {x l}} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { - configure_entry .menu25.config.f.x6 normal {n l y}} else {configure_entry .menu25.config.f.x6 disabled {y n l}} + configure_entry .menu23.config.f.x6 normal {n l y}} else {configure_entry .menu23.config.f.x6 disabled {y n l}} global CONFIG_SPW_RXUNAL if {($CONFIG_SPW_ENABLE == 1)} then { - configure_entry .menu25.config.f.x7 normal {n l y}} else {configure_entry .menu25.config.f.x7 disabled {y n l}} + configure_entry .menu23.config.f.x7 normal {n l y}} else {configure_entry .menu23.config.f.x7 disabled {y n l}} global CONFIG_SPW_FT if {($CONFIG_SPW_ENABLE == 1)} then { - configure_entry .menu25.config.f.x8 normal {n l y}} else {configure_entry .menu25.config.f.x8 disabled {y n l}} + configure_entry .menu23.config.f.x8 normal {n l y}} else {configure_entry .menu23.config.f.x8 disabled {y n l}} global CONFIG_SPW_NETLIST if {($CONFIG_SPW_ENABLE == 1)} then { - configure_entry .menu25.config.f.x9 normal {n l y}} else {configure_entry .menu25.config.f.x9 disabled {y n l}} + configure_entry .menu23.config.f.x9 normal {n l y}} else {configure_entry .menu23.config.f.x9 disabled {y n l}} global CONFIG_SPW_PORTS - if {($CONFIG_SPW_ENABLE == 1)} then {.menu25.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu25.config.f.x10.l configure -state normal; } else {.menu25.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu25.config.f.x10.l configure -state disabled} - if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu25.config.f.x11 normal {x l}} else {configure_entry .menu25.config.f.x11 disabled {x l}} + if {($CONFIG_SPW_ENABLE == 1)} then {.menu23.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x10.l configure -state normal; } else {.menu23.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x10.l configure -state disabled} + if {($CONFIG_SPW_ENABLE == 1)} then {configure_entry .menu23.config.f.x11 normal {x l}} else {configure_entry .menu23.config.f.x11 disabled {x l}} global CONFIG_SPW_GRSPW2 global CONFIG_SPW_DMACHAN - if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {.menu25.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu25.config.f.x12.l configure -state normal; } else {.menu25.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu25.config.f.x12.l configure -state disabled} + if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {.menu23.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x12.l configure -state normal; } else {.menu23.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x12.l configure -state disabled} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - configure_entry .menu25.config.f.x13 normal {n l y}} else {configure_entry .menu25.config.f.x13 disabled {y n l}} - if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {configure_entry .menu25.config.f.x14 normal {x l}} else {configure_entry .menu25.config.f.x14 disabled {x l}} - if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {configure_entry .menu25.config.f.x15 normal {x l}} else {configure_entry .menu25.config.f.x15 disabled {x l}} + configure_entry .menu23.config.f.x13 normal {n l y}} else {configure_entry .menu23.config.f.x13 disabled {y n l}} + if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {configure_entry .menu23.config.f.x14 normal {x l}} else {configure_entry .menu23.config.f.x14 disabled {x l}} + if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {configure_entry .menu23.config.f.x15 normal {x l}} else {configure_entry .menu23.config.f.x15 disabled {x l}} } -proc update_define_menu25 {} { +proc update_define_menu23 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_NUM "$CONFIG_SPW_NUM" 1} - global tmpvar_39 + global tmpvar_38 global CONFIG_SPW_AHBFIFO4 - if {$tmpvar_39 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} + if {$tmpvar_38 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} global CONFIG_SPW_AHBFIFO8 - if {$tmpvar_39 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} + if {$tmpvar_38 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} global CONFIG_SPW_AHBFIFO16 - if {$tmpvar_39 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} + if {$tmpvar_38 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} global CONFIG_SPW_AHBFIFO32 - if {$tmpvar_39 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} - global tmpvar_40 + if {$tmpvar_38 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} + global tmpvar_39 global CONFIG_SPW_RXFIFO16 - if {$tmpvar_40 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} + if {$tmpvar_39 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} global CONFIG_SPW_RXFIFO32 - if {$tmpvar_40 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} + if {$tmpvar_39 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} global CONFIG_SPW_RXFIFO64 - if {$tmpvar_40 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} + if {$tmpvar_39 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP&15]} else {set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP|16]} - global tmpvar_41 + global tmpvar_40 global CONFIG_SPW_RMAPBUF2 - if {$tmpvar_41 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} + if {$tmpvar_40 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} global CONFIG_SPW_RMAPBUF4 - if {$tmpvar_41 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} + if {$tmpvar_40 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} global CONFIG_SPW_RMAPBUF6 - if {$tmpvar_41 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} + if {$tmpvar_40 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} global CONFIG_SPW_RMAPBUF8 - if {$tmpvar_41 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} + if {$tmpvar_40 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC&15]} else {set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC|16]} @@ -5306,59 +5176,59 @@ proc update_define_menu25 {} { set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST&15]} else {set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST|16]} global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_PORTS "$CONFIG_SPW_PORTS" 1} - global tmpvar_42 + global tmpvar_41 global CONFIG_SPW_GRSPW1 - if {$tmpvar_42 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} + if {$tmpvar_41 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} global CONFIG_SPW_GRSPW2 - if {$tmpvar_42 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} + if {$tmpvar_41 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} global CONFIG_SPW_DMACHAN if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {validate_int CONFIG_SPW_DMACHAN "$CONFIG_SPW_DMACHAN" 1} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME&15]} else {set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME|16]} - global tmpvar_43 + global tmpvar_42 global CONFIG_SPW_RX_SDR - if {$tmpvar_43 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} + if {$tmpvar_42 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} global CONFIG_SPW_RX_DDR - if {$tmpvar_43 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} + if {$tmpvar_42 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} global CONFIG_SPW_RX_XOR - if {$tmpvar_43 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} + if {$tmpvar_42 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} global CONFIG_SPW_RX_AFLEX - if {$tmpvar_43 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} - global tmpvar_44 + if {$tmpvar_42 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} + global tmpvar_43 global CONFIG_SPW_TX_SDR - if {$tmpvar_44 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} + if {$tmpvar_43 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} global CONFIG_SPW_TX_DDR - if {$tmpvar_44 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} + if {$tmpvar_43 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} global CONFIG_SPW_TX_AFLEX - if {$tmpvar_44 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} + if {$tmpvar_43 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} } -proc menu26 {w title} { +proc menu24 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 26} + catch {destroy $w; unregister_active 24} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 26]] + set active_menus [lsort -integer [linsert $active_menus end 24]] message $w.m -width 400 -aspect 300 -text \ "Keybord and VGA interface" -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "Keybord and VGA interface" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 26; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 26; menu27 .menu27 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu25 .menu25 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 26" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 26; menu25 .menu25 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 26; menu25 .menu25 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -5386,9 +5256,9 @@ proc menu26 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 26 0 "Keyboard/mouse (PS2) interface " CONFIG_KBD_ENABLE - bool $w.config.f 26 1 "Text-based VGA interface " CONFIG_VGA_ENABLE - bool $w.config.f 26 2 "SVGA graphical frame buffer " CONFIG_SVGA_ENABLE + bool $w.config.f 24 0 "Keyboard/mouse (PS2) interface " CONFIG_KBD_ENABLE + bool $w.config.f 24 1 "Text-based VGA interface " CONFIG_VGA_ENABLE + bool $w.config.f 24 2 "SVGA graphical frame buffer " CONFIG_SVGA_ENABLE @@ -5425,15 +5295,15 @@ proc menu26 {w title} { } } -proc update_menu26 {} { +proc update_menu24 {} { global CONFIG_VGA_ENABLE global CONFIG_SVGA_ENABLE if {($CONFIG_VGA_ENABLE == 0)} then { - configure_entry .menu26.config.f.x2 normal {n l y}} else {configure_entry .menu26.config.f.x2 disabled {y n l}} + configure_entry .menu24.config.f.x2 normal {n l y}} else {configure_entry .menu24.config.f.x2 disabled {y n l}} } -proc update_define_menu26 {} { +proc update_define_menu24 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_VGA_ENABLE @@ -5443,30 +5313,30 @@ proc update_define_menu26 {} { } -proc menu27 {w title} { +proc menu25 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 27} + catch {destroy $w; unregister_active 25} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 27]] + set active_menus [lsort -integer [linsert $active_menus end 25]] message $w.m -width 400 -aspect 300 -text \ "SPI" -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "SPI" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 27; break" - set nextscript "catch {focus $oldFocus}; menu28 .menu28 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; break" + set nextscript "catch {focus $oldFocus}; menu26 .menu26 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 27" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 27; menu26 .menu26 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 27; menu26 .menu26 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -5494,8 +5364,8 @@ proc menu27 {w title} { pack $w.config.canvas -side right -fill y - submenu $w.config.f 27 0 "SPI memory controller " 28 - submenu $w.config.f 27 1 "SPI controller(s) " 29 + submenu $w.config.f 25 0 "SPI memory controller " 26 + submenu $w.config.f 25 1 "SPI controller(s) " 27 @@ -5532,40 +5402,40 @@ proc menu27 {w title} { } } -proc update_menu27 {} { +proc update_menu25 {} { } -proc update_define_menu27 {} { +proc update_define_menu25 {} { update_define_mainmenu global CONFIG_MODULES } -proc menu28 {w title} { +proc menu26 {w title} { set oldFocus [focus] - catch {focus .menu27} - catch {destroy $w; unregister_active 28} + catch {focus .menu25} + catch {destroy $w; unregister_active 26} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 28]] + set active_menus [lsort -integer [linsert $active_menus end 26]] message $w.m -width 400 -aspect 300 -text \ "SPI memory controller " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "SPI memory controller " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 28; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 28; menu29 .menu29 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 26; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 26; menu27 .menu27 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 28" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 26" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 28; menu27 .menu27 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 28; menu27 .menu27 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 26; menu25 .menu25 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 26; menu25 .menu25 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -5593,22 +5463,23 @@ proc menu28 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 28 0 "Enable SPI memory controller " CONFIG_SPIMCTRL - bool $w.config.f 28 1 "Enable SD card support " CONFIG_SPIMCTRL_SDCARD - hex $w.config.f 28 2 "Read instruction " CONFIG_SPIMCTRL_READCMD - bool $w.config.f 28 3 "Read instruction requires dummy byte " CONFIG_SPIMCTRL_DUMMYBYTE - bool $w.config.f 28 4 "Enable dual output for reads " CONFIG_SPIMCTRL_DUALOUTPUT - int $w.config.f 28 5 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER - int $w.config.f 28 6 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER - int $w.config.f 28 7 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT + bool $w.config.f 26 0 "Enable SPI memory controller " CONFIG_SPIMCTRL + bool $w.config.f 26 1 "Enable SD card support " CONFIG_SPIMCTRL_SDCARD + hex $w.config.f 26 2 "Read instruction " CONFIG_SPIMCTRL_READCMD + bool $w.config.f 26 3 "Read instruction requires dummy byte " CONFIG_SPIMCTRL_DUMMYBYTE + bool $w.config.f 26 4 "Enable dual output for reads " CONFIG_SPIMCTRL_DUALOUTPUT + hex $w.config.f 26 5 "Address offset " CONFIG_SPIMCTRL_OFFSET + int $w.config.f 26 6 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER + int $w.config.f 26 7 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER + int $w.config.f 26 8 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT focus $w update_active global winx; global winy - if {[winfo exists .menu27] == 0} then {menu27 .menu27 "SPI"} - set winx [expr [winfo x .menu27]+30]; set winy [expr [winfo y .menu27]+30] + if {[winfo exists .menu25] == 0} then {menu25 .menu25 "SPI"} + set winx [expr [winfo x .menu25]+30]; set winy [expr [winfo y .menu25]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f @@ -5637,29 +5508,31 @@ proc menu28 {w title} { } } -proc update_menu28 {} { +proc update_menu26 {} { global CONFIG_SPIMCTRL global CONFIG_SPIMCTRL_SDCARD if {($CONFIG_SPIMCTRL == 1)} then { - configure_entry .menu28.config.f.x1 normal {n l y}} else {configure_entry .menu28.config.f.x1 disabled {y n l}} + configure_entry .menu26.config.f.x1 normal {n l y}} else {configure_entry .menu26.config.f.x1 disabled {y n l}} global CONFIG_SPIMCTRL_READCMD - if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu28.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu28.config.f.x2.l configure -state normal; } else {.menu28.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu28.config.f.x2.l configure -state disabled} + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu26.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu26.config.f.x2.l configure -state normal; } else {.menu26.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu26.config.f.x2.l configure -state disabled} global CONFIG_SPIMCTRL_DUMMYBYTE if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { - configure_entry .menu28.config.f.x3 normal {n l y}} else {configure_entry .menu28.config.f.x3 disabled {y n l}} + configure_entry .menu26.config.f.x3 normal {n l y}} else {configure_entry .menu26.config.f.x3 disabled {y n l}} global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { - configure_entry .menu28.config.f.x4 normal {n l y}} else {configure_entry .menu28.config.f.x4 disabled {y n l}} + configure_entry .menu26.config.f.x4 normal {n l y}} else {configure_entry .menu26.config.f.x4 disabled {y n l}} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu26.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu26.config.f.x5.l configure -state normal; } else {.menu26.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu26.config.f.x5.l configure -state disabled} global CONFIG_SPIMCTRL_SCALER - if {($CONFIG_SPIMCTRL == 1)} then {.menu28.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu28.config.f.x5.l configure -state normal; } else {.menu28.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu28.config.f.x5.l configure -state disabled} + if {($CONFIG_SPIMCTRL == 1)} then {.menu26.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu26.config.f.x6.l configure -state normal; } else {.menu26.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu26.config.f.x6.l configure -state disabled} global CONFIG_SPIMCTRL_ASCALER - if {($CONFIG_SPIMCTRL == 1)} then {.menu28.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu28.config.f.x6.l configure -state normal; } else {.menu28.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu28.config.f.x6.l configure -state disabled} + if {($CONFIG_SPIMCTRL == 1)} then {.menu26.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu26.config.f.x7.l configure -state normal; } else {.menu26.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu26.config.f.x7.l configure -state disabled} global CONFIG_SPIMCTRL_PWRUPCNT - if {($CONFIG_SPIMCTRL == 1)} then {.menu28.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu28.config.f.x7.l configure -state normal; } else {.menu28.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu28.config.f.x7.l configure -state disabled} + if {($CONFIG_SPIMCTRL == 1)} then {.menu26.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu26.config.f.x8.l configure -state normal; } else {.menu26.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu26.config.f.x8.l configure -state disabled} } -proc update_define_menu28 {} { +proc update_define_menu26 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_SPIMCTRL @@ -5674,6 +5547,8 @@ proc update_define_menu28 {} { global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT&15]} else {set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT|16]} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {validate_hex CONFIG_SPIMCTRL_OFFSET "$CONFIG_SPIMCTRL_OFFSET" 0} global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_SCALER "$CONFIG_SPIMCTRL_SCALER" 1} global CONFIG_SPIMCTRL_ASCALER @@ -5683,30 +5558,30 @@ proc update_define_menu28 {} { } -proc menu29 {w title} { +proc menu27 {w title} { set oldFocus [focus] - catch {focus .menu27} - catch {destroy $w; unregister_active 29} + catch {focus .menu25} + catch {destroy $w; unregister_active 27} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 29]] + set active_menus [lsort -integer [linsert $active_menus end 27]] message $w.m -width 400 -aspect 300 -text \ "SPI controller(s) " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "SPI controller(s) " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 29; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 29; catch {destroy .menu27}; unregister_active 27; catch {destroy .menu13}; unregister_active 13; menu30 .menu30 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 27; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 27; catch {destroy .menu25}; unregister_active 25; catch {destroy .menu13}; unregister_active 13; menu28 .menu28 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 29" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 27" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 29; menu28 .menu28 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 29; menu28 .menu28 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 27; menu26 .menu26 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 27; menu26 .menu26 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -5734,23 +5609,23 @@ proc menu29 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 29 0 "Enable SPI controller(s) " CONFIG_SPICTRL_ENABLE - int $w.config.f 29 1 "Number of SPI controllers " CONFIG_SPICTRL_NUM - int $w.config.f 29 2 "Slave select lines " CONFIG_SPICTRL_SLVS - int $w.config.f 29 3 "FIFO depth (2^N) " CONFIG_SPICTRL_FIFO - bool $w.config.f 29 4 "Enable slave select registers" CONFIG_SPICTRL_SLVREG - bool $w.config.f 29 5 "Enable automatic slave select" CONFIG_SPICTRL_ASEL - bool $w.config.f 29 6 "Support automated transfers " CONFIG_SPICTRL_AM - bool $w.config.f 29 7 "Support open drain mode " CONFIG_SPICTRL_ODMODE - bool $w.config.f 29 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN - int $w.config.f 29 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN - bool $w.config.f 29 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_45 - minimenu $w.config.f 29 11 "Fault-tolerance" tmpvar_45 CONFIG_SPICTRL_NOFT + bool $w.config.f 27 0 "Enable SPI controller(s) " CONFIG_SPICTRL_ENABLE + int $w.config.f 27 1 "Number of SPI controllers " CONFIG_SPICTRL_NUM + int $w.config.f 27 2 "Slave select lines " CONFIG_SPICTRL_SLVS + int $w.config.f 27 3 "FIFO depth (2^N) " CONFIG_SPICTRL_FIFO + bool $w.config.f 27 4 "Enable slave select registers" CONFIG_SPICTRL_SLVREG + bool $w.config.f 27 5 "Enable automatic slave select" CONFIG_SPICTRL_ASEL + bool $w.config.f 27 6 "Support automated transfers " CONFIG_SPICTRL_AM + bool $w.config.f 27 7 "Support open drain mode " CONFIG_SPICTRL_ODMODE + bool $w.config.f 27 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN + int $w.config.f 27 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN + bool $w.config.f 27 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM + global tmpvar_44 + minimenu $w.config.f 27 11 "Fault-tolerance" tmpvar_44 CONFIG_SPICTRL_NOFT menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_45 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_45 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_45 -value "TMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_44 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_44 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_44 -value "TMR" -command "update_active" menusplit $w $w.config.f.x11.x.menu 3 @@ -5758,8 +5633,8 @@ proc menu29 {w title} { focus $w update_active global winx; global winy - if {[winfo exists .menu27] == 0} then {menu27 .menu27 "SPI"} - set winx [expr [winfo x .menu27]+30]; set winy [expr [winfo y .menu27]+30] + if {[winfo exists .menu25] == 0} then {menu25 .menu25 "SPI"} + set winx [expr [winfo x .menu25]+30]; set winy [expr [winfo y .menu25]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f @@ -5788,39 +5663,39 @@ proc menu29 {w title} { } } -proc update_menu29 {} { +proc update_menu27 {} { global CONFIG_SPICTRL_ENABLE global CONFIG_SPICTRL_NUM - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu29.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu29.config.f.x1.l configure -state normal; } else {.menu29.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu29.config.f.x1.l configure -state disabled} + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu27.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu27.config.f.x1.l configure -state normal; } else {.menu27.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu27.config.f.x1.l configure -state disabled} global CONFIG_SPICTRL_SLVS - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu29.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu29.config.f.x2.l configure -state normal; } else {.menu29.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu29.config.f.x2.l configure -state disabled} + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu27.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu27.config.f.x2.l configure -state normal; } else {.menu27.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu27.config.f.x2.l configure -state disabled} global CONFIG_SPICTRL_FIFO - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu29.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu29.config.f.x3.l configure -state normal; } else {.menu29.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu29.config.f.x3.l configure -state disabled} + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu27.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu27.config.f.x3.l configure -state normal; } else {.menu27.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu27.config.f.x3.l configure -state disabled} global CONFIG_SPICTRL_SLVREG if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu29.config.f.x4 normal {n l y}} else {configure_entry .menu29.config.f.x4 disabled {y n l}} + configure_entry .menu27.config.f.x4 normal {n l y}} else {configure_entry .menu27.config.f.x4 disabled {y n l}} global CONFIG_SPICTRL_ASEL if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu29.config.f.x5 normal {n l y}} else {configure_entry .menu29.config.f.x5 disabled {y n l}} + configure_entry .menu27.config.f.x5 normal {n l y}} else {configure_entry .menu27.config.f.x5 disabled {y n l}} global CONFIG_SPICTRL_AM if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu29.config.f.x6 normal {n l y}} else {configure_entry .menu29.config.f.x6 disabled {y n l}} + configure_entry .menu27.config.f.x6 normal {n l y}} else {configure_entry .menu27.config.f.x6 disabled {y n l}} global CONFIG_SPICTRL_ODMODE if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu29.config.f.x7 normal {n l y}} else {configure_entry .menu29.config.f.x7 disabled {y n l}} + configure_entry .menu27.config.f.x7 normal {n l y}} else {configure_entry .menu27.config.f.x7 disabled {y n l}} global CONFIG_SPICTRL_TWEN if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu29.config.f.x8 normal {n l y}} else {configure_entry .menu29.config.f.x8 disabled {y n l}} + configure_entry .menu27.config.f.x8 normal {n l y}} else {configure_entry .menu27.config.f.x8 disabled {y n l}} global CONFIG_SPICTRL_MAXWLEN - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu29.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu29.config.f.x9.l configure -state normal; } else {.menu29.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu29.config.f.x9.l configure -state disabled} + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu27.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu27.config.f.x9.l configure -state normal; } else {.menu27.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu27.config.f.x9.l configure -state disabled} global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu29.config.f.x10 normal {n l y}} else {configure_entry .menu29.config.f.x10 disabled {y n l}} - if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then {configure_entry .menu29.config.f.x11 normal {x l}} else {configure_entry .menu29.config.f.x11 disabled {x l}} + configure_entry .menu27.config.f.x10 normal {n l y}} else {configure_entry .menu27.config.f.x10 disabled {y n l}} + if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then {configure_entry .menu27.config.f.x11 normal {x l}} else {configure_entry .menu27.config.f.x11 disabled {x l}} } -proc update_define_menu29 {} { +proc update_define_menu27 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_SPICTRL_ENABLE @@ -5850,41 +5725,41 @@ proc update_define_menu29 {} { global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_45 + global tmpvar_44 global CONFIG_SPICTRL_NOFT - if {$tmpvar_45 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + if {$tmpvar_44 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} global CONFIG_SPICTRL_DMRFT - if {$tmpvar_45 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + if {$tmpvar_44 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} global CONFIG_SPICTRL_TMRFT - if {$tmpvar_45 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} + if {$tmpvar_44 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } -menu_option menu30 30 "VHDL Debugging " -proc menu30 {w title} { +menu_option menu28 28 "VHDL Debugging " +proc menu28 {w title} { set oldFocus [focus] - catch {destroy $w; unregister_active 30} + catch {destroy $w; unregister_active 28} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 30]] + set active_menus [lsort -integer [linsert $active_menus end 28]] message $w.m -width 400 -aspect 300 -text \ "VHDL Debugging " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "VHDL Debugging " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 30; break" - set nextscript "catch {focus $oldFocus}; menu31 .menu31 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 28; break" + set nextscript "catch {focus $oldFocus}; menu29 .menu29 \"$title\"" frame $w.f button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 30" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 28" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript $w.f.next configure -state disabled bind all "puts \"no more menus\" " button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 30; menu29 .menu29 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 30; menu29 .menu29 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 28; menu27 .menu27 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 28; menu27 .menu27 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -5912,7 +5787,7 @@ proc menu30 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 30 0 "Accelerated UART tracing " CONFIG_DEBUG_UART + bool $w.config.f 28 0 "Accelerated UART tracing " CONFIG_DEBUG_UART @@ -5948,11 +5823,11 @@ proc menu30 {w title} { } } -proc update_menu30 {} { +proc update_menu28 {} { } -proc update_define_menu30 {} { +proc update_define_menu28 {} { update_define_mainmenu global CONFIG_MODULES } @@ -5998,7 +5873,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -6008,6 +5884,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -6032,6 +5910,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -6044,14 +5923,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -6064,28 +5948,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -6095,17 +5979,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -6117,12 +6001,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -6132,10 +6016,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -6146,7 +6030,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -6158,26 +6042,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -6185,27 +6071,27 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_FPUFT_NONE 0 set CONFIG_FPUFT_PAR 0 set CONFIG_FPUFT_DMR 0 @@ -6229,11 +6115,6 @@ set CONFIG_AHB_MONWAR 0 set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 -set CONFIG_GRUSB_DCL 0 -set tmpvar_27 "(not set)" -set CONFIG_GRUSB_DCL_ULPI 0 -set CONFIG_GRUSB_DCL_UTMI8 0 -set CONFIG_GRUSB_DCL_UTMI16 0 set CONFIG_DSU_ETH 0 set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 @@ -6308,11 +6189,6 @@ set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 -set CONFIG_ATA_ENABLE 0 -set CONFIG_ATAIO A00 -set CONFIG_ATAIRQ 10 -set CONFIG_ATA_MWDMA 0 -set CONFIG_ATA_FIFO 8 set CONFIG_CAN_ENABLE 0 set CONFIG_CAN_NUM 1 set CONFIG_CANIO C00 @@ -6320,66 +6196,26 @@ set CONFIG_CANIRQ 13 set CONFIG_CANSEPIRQ 0 set CONFIG_CAN_SYNCRST 0 set CONFIG_CAN_FT 0 -set CONFIG_GRUSBDC_ENABLE 0 -set CONFIG_GRUSBDC_AIFACE 0 -set tmpvar_31 "(not set)" -set CONFIG_GRUSBDC_ULPI 0 -set CONFIG_GRUSBDC_UTMI8 0 -set CONFIG_GRUSBDC_UTMI16 0 -set CONFIG_GRUSBDC_NEPI 1 -set CONFIG_GRUSBDC_NEPO 1 -set CONFIG_GRUSBDC_I0 1024 -set CONFIG_GRUSBDC_I1 1024 -set CONFIG_GRUSBDC_I2 1024 -set CONFIG_GRUSBDC_I3 1024 -set CONFIG_GRUSBDC_I4 1024 -set CONFIG_GRUSBDC_I5 1024 -set CONFIG_GRUSBDC_I6 1024 -set CONFIG_GRUSBDC_I7 1024 -set CONFIG_GRUSBDC_I8 1024 -set CONFIG_GRUSBDC_I9 1024 -set CONFIG_GRUSBDC_I10 1024 -set CONFIG_GRUSBDC_I11 1024 -set CONFIG_GRUSBDC_I12 1024 -set CONFIG_GRUSBDC_I13 1024 -set CONFIG_GRUSBDC_I14 1024 -set CONFIG_GRUSBDC_I15 1024 -set CONFIG_GRUSBDC_O0 1024 -set CONFIG_GRUSBDC_O1 1024 -set CONFIG_GRUSBDC_O2 1024 -set CONFIG_GRUSBDC_O3 1024 -set CONFIG_GRUSBDC_O4 1024 -set CONFIG_GRUSBDC_O5 1024 -set CONFIG_GRUSBDC_O6 1024 -set CONFIG_GRUSBDC_O7 1024 -set CONFIG_GRUSBDC_O8 1024 -set CONFIG_GRUSBDC_O9 1024 -set CONFIG_GRUSBDC_O10 1024 -set CONFIG_GRUSBDC_O11 1024 -set CONFIG_GRUSBDC_O12 1024 -set CONFIG_GRUSBDC_O13 1024 -set CONFIG_GRUSBDC_O14 1024 -set CONFIG_GRUSBDC_O15 1024 set CONFIG_GRUSBHC_ENABLE 0 set CONFIG_GRUSBHC_EHC 0 set CONFIG_GRUSBHC_UHC 0 set CONFIG_GRUSBHC_NCC 1 set CONFIG_GRUSBHC_NPORTS 1 -set tmpvar_32 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_GRUSBHC_ULPI 0 set CONFIG_GRUSBHC_UTMI16 0 set CONFIG_GRUSBHC_UTMI8 0 -set tmpvar_33 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_GRUSBHC_VBUSEXT 0 set CONFIG_GRUSBHC_VBUSINT 0 -set tmpvar_34 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_GRUSBHC_FAULTL 0 set CONFIG_GRUSBHC_FAULTH 0 set CONFIG_GRUSBHC_FAULTN 0 -set tmpvar_35 "(not set)" +set tmpvar_34 "(not set)" set CONFIG_GRUSBHC_ENABLEH 0 set CONFIG_GRUSBHC_ENABLEL 0 -set tmpvar_36 "(not set)" +set tmpvar_35 "(not set)" set CONFIG_GRUSBHC_FAULT2H 0 set CONFIG_GRUSBHC_FAULT2L 0 set CONFIG_GRUSBHC_BEREGS 0 @@ -6403,7 +6239,7 @@ set CONFIG_GRUSBHC_PR13 0 set CONFIG_GRUSBHC_PR14 0 set CONFIG_GRUSBHC_PR15 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_37 "(not set)" +set tmpvar_36 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -6411,7 +6247,7 @@ set CONFIG_UA1_FIFO8 0 set CONFIG_UA1_FIFO16 0 set CONFIG_UA1_FIFO32 0 set CONFIG_UART2_ENABLE 0 -set tmpvar_38 "(not set)" +set tmpvar_37 "(not set)" set CONFIG_UA2_FIFO1 0 set CONFIG_UA2_FIFO2 0 set CONFIG_UA2_FIFO4 0 @@ -6434,17 +6270,17 @@ set CONFIG_GRGPIO_WIDTH 8 set CONFIG_GRGPIO_IMASK 0000 set CONFIG_SPW_ENABLE 0 set CONFIG_SPW_NUM 1 -set tmpvar_39 "(not set)" +set tmpvar_38 "(not set)" set CONFIG_SPW_AHBFIFO4 0 set CONFIG_SPW_AHBFIFO8 0 set CONFIG_SPW_AHBFIFO16 0 set CONFIG_SPW_AHBFIFO32 0 -set tmpvar_40 "(not set)" +set tmpvar_39 "(not set)" set CONFIG_SPW_RXFIFO16 0 set CONFIG_SPW_RXFIFO32 0 set CONFIG_SPW_RXFIFO64 0 set CONFIG_SPW_RMAP 0 -set tmpvar_41 "(not set)" +set tmpvar_40 "(not set)" set CONFIG_SPW_RMAPBUF2 0 set CONFIG_SPW_RMAPBUF4 0 set CONFIG_SPW_RMAPBUF6 0 @@ -6454,17 +6290,17 @@ set CONFIG_SPW_RXUNAL 0 set CONFIG_SPW_FT 0 set CONFIG_SPW_NETLIST 0 set CONFIG_SPW_PORTS 1 -set tmpvar_42 "(not set)" +set tmpvar_41 "(not set)" set CONFIG_SPW_GRSPW1 0 set CONFIG_SPW_GRSPW2 0 set CONFIG_SPW_DMACHAN 1 set CONFIG_SPW_RTSAME 0 -set tmpvar_43 "(not set)" +set tmpvar_42 "(not set)" set CONFIG_SPW_RX_SDR 0 set CONFIG_SPW_RX_DDR 0 set CONFIG_SPW_RX_XOR 0 set CONFIG_SPW_RX_AFLEX 0 -set tmpvar_44 "(not set)" +set tmpvar_43 "(not set)" set CONFIG_SPW_TX_SDR 0 set CONFIG_SPW_TX_DDR 0 set CONFIG_SPW_TX_AFLEX 0 @@ -6476,6 +6312,7 @@ set CONFIG_SPIMCTRL_SDCARD 0 set CONFIG_SPIMCTRL_READCMD 0B set CONFIG_SPIMCTRL_DUMMYBYTE 0 set CONFIG_SPIMCTRL_DUALOUTPUT 0 +set CONFIG_SPIMCTRL_OFFSET 0 set CONFIG_SPIMCTRL_SCALER 1 set CONFIG_SPIMCTRL_ASCALER 8 set CONFIG_SPIMCTRL_PWRUPCNT 0 @@ -6490,7 +6327,7 @@ set CONFIG_SPICTRL_ODMODE 0 set CONFIG_SPICTRL_TWEN 0 set CONFIG_SPICTRL_MAXWLEN 0 set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_45 "(not set)" +set tmpvar_44 "(not set)" set CONFIG_SPICTRL_NOFT 0 set CONFIG_SPICTRL_DMRFT 0 set CONFIG_SPICTRL_TMRFT 0 @@ -6555,7 +6392,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -6565,6 +6403,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -6603,6 +6443,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -6615,9 +6456,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -6631,245 +6473,390 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -6911,13 +6898,6 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_DSU_UART $CONFIG_DSU_UART [list $notmod] 2 global CONFIG_DSU_JTAG write_tristate $cfg $autocfg CONFIG_DSU_JTAG $CONFIG_DSU_JTAG [list $notmod] 2 - global CONFIG_GRUSB_DCL - write_tristate $cfg $autocfg CONFIG_GRUSB_DCL $CONFIG_GRUSB_DCL [list $notmod] 2 - global tmpvar_27 - if {($CONFIG_GRUSB_DCL == 1)} then { - if { $tmpvar_27 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 0 [list $notmod] 2 } - if { $tmpvar_27 == "UTMI/UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 0 [list $notmod] 2 } - if { $tmpvar_27 == "UTMI/UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 0 [list $notmod] 2 }} global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } @@ -7056,17 +7036,6 @@ proc writeconfig {file1 file2} { if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} - write_comment $cfg $autocfg "IDE Disk controller " - global CONFIG_ATA_ENABLE - write_tristate $cfg $autocfg CONFIG_ATA_ENABLE $CONFIG_ATA_ENABLE [list $notmod] 2 - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_ATAIO $CONFIG_ATAIO $notmod } - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_ATAIRQ $CONFIG_ATAIRQ $notmod } - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_ATA_MWDMA $CONFIG_ATA_MWDMA [list $notmod] 2 } - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {write_int $cfg $autocfg CONFIG_ATA_FIFO $CONFIG_ATA_FIFO $notmod } write_comment $cfg $autocfg "CAN " global CONFIG_CAN_ENABLE write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 @@ -7082,84 +7051,6 @@ proc writeconfig {file1 file2} { if {($CONFIG_CAN_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_CAN_SYNCRST $CONFIG_CAN_SYNCRST [list $notmod] 2 } global CONFIG_CAN_FT if {($CONFIG_CAN_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_CAN_FT $CONFIG_CAN_FT [list $notmod] 2 } - write_comment $cfg $autocfg "USB 2.0 Device Controller " - global CONFIG_GRUSBDC_ENABLE - write_tristate $cfg $autocfg CONFIG_GRUSBDC_ENABLE $CONFIG_GRUSBDC_ENABLE [list $notmod] 2 - global CONFIG_GRUSBDC_AIFACE - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRUSBDC_AIFACE $CONFIG_GRUSBDC_AIFACE [list $notmod] 2 } - global tmpvar_31 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then { - if { $tmpvar_31 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_ULPI 0 [list $notmod] 2 } - if { $tmpvar_31 == "UTMI/UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI8 0 [list $notmod] 2 } - if { $tmpvar_31 == "UTMI/UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBDC_UTMI16 0 [list $notmod] 2 }} - global CONFIG_GRUSBDC_NEPI - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_NEPI $CONFIG_GRUSBDC_NEPI $notmod } - global CONFIG_GRUSBDC_NEPO - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_NEPO $CONFIG_GRUSBDC_NEPO $notmod } - global CONFIG_GRUSBDC_I0 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I0 $CONFIG_GRUSBDC_I0 $notmod } - global CONFIG_GRUSBDC_I1 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I1 $CONFIG_GRUSBDC_I1 $notmod } - global CONFIG_GRUSBDC_I2 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I2 $CONFIG_GRUSBDC_I2 $notmod } - global CONFIG_GRUSBDC_I3 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I3 $CONFIG_GRUSBDC_I3 $notmod } - global CONFIG_GRUSBDC_I4 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I4 $CONFIG_GRUSBDC_I4 $notmod } - global CONFIG_GRUSBDC_I5 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I5 $CONFIG_GRUSBDC_I5 $notmod } - global CONFIG_GRUSBDC_I6 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I6 $CONFIG_GRUSBDC_I6 $notmod } - global CONFIG_GRUSBDC_I7 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I7 $CONFIG_GRUSBDC_I7 $notmod } - global CONFIG_GRUSBDC_I8 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I8 $CONFIG_GRUSBDC_I8 $notmod } - global CONFIG_GRUSBDC_I9 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I9 $CONFIG_GRUSBDC_I9 $notmod } - global CONFIG_GRUSBDC_I10 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I10 $CONFIG_GRUSBDC_I10 $notmod } - global CONFIG_GRUSBDC_I11 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I11 $CONFIG_GRUSBDC_I11 $notmod } - global CONFIG_GRUSBDC_I12 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I12 $CONFIG_GRUSBDC_I12 $notmod } - global CONFIG_GRUSBDC_I13 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I13 $CONFIG_GRUSBDC_I13 $notmod } - global CONFIG_GRUSBDC_I14 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I14 $CONFIG_GRUSBDC_I14 $notmod } - global CONFIG_GRUSBDC_I15 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_I15 $CONFIG_GRUSBDC_I15 $notmod } - global CONFIG_GRUSBDC_O0 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O0 $CONFIG_GRUSBDC_O0 $notmod } - global CONFIG_GRUSBDC_O1 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O1 $CONFIG_GRUSBDC_O1 $notmod } - global CONFIG_GRUSBDC_O2 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O2 $CONFIG_GRUSBDC_O2 $notmod } - global CONFIG_GRUSBDC_O3 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O3 $CONFIG_GRUSBDC_O3 $notmod } - global CONFIG_GRUSBDC_O4 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O4 $CONFIG_GRUSBDC_O4 $notmod } - global CONFIG_GRUSBDC_O5 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O5 $CONFIG_GRUSBDC_O5 $notmod } - global CONFIG_GRUSBDC_O6 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O6 $CONFIG_GRUSBDC_O6 $notmod } - global CONFIG_GRUSBDC_O7 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O7 $CONFIG_GRUSBDC_O7 $notmod } - global CONFIG_GRUSBDC_O8 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O8 $CONFIG_GRUSBDC_O8 $notmod } - global CONFIG_GRUSBDC_O9 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O9 $CONFIG_GRUSBDC_O9 $notmod } - global CONFIG_GRUSBDC_O10 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O10 $CONFIG_GRUSBDC_O10 $notmod } - global CONFIG_GRUSBDC_O11 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O11 $CONFIG_GRUSBDC_O11 $notmod } - global CONFIG_GRUSBDC_O12 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O12 $CONFIG_GRUSBDC_O12 $notmod } - global CONFIG_GRUSBDC_O13 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O13 $CONFIG_GRUSBDC_O13 $notmod } - global CONFIG_GRUSBDC_O14 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O14 $CONFIG_GRUSBDC_O14 $notmod } - global CONFIG_GRUSBDC_O15 - if {($CONFIG_GRUSBDC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBDC_O15 $CONFIG_GRUSBDC_O15 $notmod } write_comment $cfg $autocfg "USB 2.0 Host Controller " global CONFIG_GRUSBHC_ENABLE write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLE $CONFIG_GRUSBHC_ENABLE [list $notmod] 2 @@ -7171,30 +7062,30 @@ proc writeconfig {file1 file2} { if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_UHC == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBHC_NCC $CONFIG_GRUSBHC_NCC $notmod } global CONFIG_GRUSBHC_NPORTS if {($CONFIG_GRUSBHC_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRUSBHC_NPORTS $CONFIG_GRUSBHC_NPORTS $notmod } - global tmpvar_32 + global tmpvar_31 if {($CONFIG_GRUSBHC_ENABLE == 1)} then { - if { $tmpvar_32 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ULPI 0 [list $notmod] 2 } - if { $tmpvar_32 == "UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI16 0 [list $notmod] 2 } - if { $tmpvar_32 == "UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI8 0 [list $notmod] 2 }} - global tmpvar_33 + if { $tmpvar_31 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ULPI 0 [list $notmod] 2 } + if { $tmpvar_31 == "UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI16 0 [list $notmod] 2 } + if { $tmpvar_31 == "UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_UTMI8 0 [list $notmod] 2 }} + global tmpvar_32 global CONFIG_GRUSBHC_ULPI if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI == 1)} then { - if { $tmpvar_33 == "External" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSEXT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSEXT 0 [list $notmod] 2 } - if { $tmpvar_33 == "Internal" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSINT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSINT 0 [list $notmod] 2 }} - global tmpvar_34 + if { $tmpvar_32 == "External" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSEXT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSEXT 0 [list $notmod] 2 } + if { $tmpvar_32 == "Internal" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSINT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_VBUSINT 0 [list $notmod] 2 }} + global tmpvar_33 global CONFIG_GRUSBHC_VBUSEXT if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI == 1) && ($CONFIG_GRUSBHC_VBUSEXT == 1)} then { - if { $tmpvar_34 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTL 0 [list $notmod] 2 } - if { $tmpvar_34 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTH 0 [list $notmod] 2 } - if { $tmpvar_34 == "None" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTN 0 [list $notmod] 2 }} - global tmpvar_35 + if { $tmpvar_33 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTL 0 [list $notmod] 2 } + if { $tmpvar_33 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTH 0 [list $notmod] 2 } + if { $tmpvar_33 == "None" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULTN 0 [list $notmod] 2 }} + global tmpvar_34 if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI != 1)} then { - if { $tmpvar_35 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEH 0 [list $notmod] 2 } - if { $tmpvar_35 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEL 0 [list $notmod] 2 }} - global tmpvar_36 + if { $tmpvar_34 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEH 0 [list $notmod] 2 } + if { $tmpvar_34 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_ENABLEL 0 [list $notmod] 2 }} + global tmpvar_35 if {($CONFIG_GRUSBHC_ENABLE == 1) && ($CONFIG_GRUSBHC_ULPI != 1)} then { - if { $tmpvar_36 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2H 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2H 0 [list $notmod] 2 } - if { $tmpvar_36 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2L 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2L 0 [list $notmod] 2 }} + if { $tmpvar_35 == "ActiveHigh" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2H 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2H 0 [list $notmod] 2 } + if { $tmpvar_35 == "ActiveLow" } then { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2L 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSBHC_FAULT2L 0 [list $notmod] 2 }} if {($CONFIG_GRUSBHC_ENABLE == 1)} then {write_comment $cfg $autocfg "Memory interface"} global CONFIG_GRUSBHC_BEREGS if {($CONFIG_GRUSBHC_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRUSBHC_BEREGS $CONFIG_GRUSBHC_BEREGS [list $notmod] 2 } @@ -7240,24 +7131,24 @@ proc writeconfig {file1 file2} { write_comment $cfg $autocfg "UART, timer, I/O port and interrupt controller" global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_37 + global tmpvar_36 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_37 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_37 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_37 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_37 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_37 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_37 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_36 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_36 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_36 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_36 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_36 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_36 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_UART2_ENABLE if {($CONFIG_DSU_UART != 1)} then {write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2 } - global tmpvar_38 + global tmpvar_37 if {($CONFIG_DSU_UART != 1) && ($CONFIG_UART2_ENABLE == 1)} then { - if { $tmpvar_38 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_38 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_38 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_38 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_38 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_38 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_37 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_37 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_37 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_37 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_37 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_37 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -7291,25 +7182,25 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_SPW_ENABLE $CONFIG_SPW_ENABLE [list $notmod] 2 global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_NUM $CONFIG_SPW_NUM $notmod } - global tmpvar_39 + global tmpvar_38 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_39 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } - if { $tmpvar_39 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } - if { $tmpvar_39 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } - if { $tmpvar_39 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} - global tmpvar_40 + if { $tmpvar_38 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } + if { $tmpvar_38 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } + if { $tmpvar_38 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } + if { $tmpvar_38 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} + global tmpvar_39 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_40 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } - if { $tmpvar_40 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } - if { $tmpvar_40 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} + if { $tmpvar_39 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } + if { $tmpvar_39 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } + if { $tmpvar_39 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAP $CONFIG_SPW_RMAP [list $notmod] 2 } - global tmpvar_41 + global tmpvar_40 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then { - if { $tmpvar_41 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } - if { $tmpvar_41 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } - if { $tmpvar_41 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } - if { $tmpvar_41 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} + if { $tmpvar_40 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } + if { $tmpvar_40 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } + if { $tmpvar_40 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } + if { $tmpvar_40 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAPCRC $CONFIG_SPW_RMAPCRC [list $notmod] 2 } global CONFIG_SPW_RXUNAL @@ -7320,26 +7211,26 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_NETLIST $CONFIG_SPW_NETLIST [list $notmod] 2 } global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_PORTS $CONFIG_SPW_PORTS $notmod } - global tmpvar_42 + global tmpvar_41 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_42 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } - if { $tmpvar_42 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} + if { $tmpvar_41 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } + if { $tmpvar_41 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} global CONFIG_SPW_DMACHAN global CONFIG_SPW_GRSPW2 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_int $cfg $autocfg CONFIG_SPW_DMACHAN $CONFIG_SPW_DMACHAN $notmod } global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RTSAME $CONFIG_SPW_RTSAME [list $notmod] 2 } - global tmpvar_43 + global tmpvar_42 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_43 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } - if { $tmpvar_43 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } - if { $tmpvar_43 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } - if { $tmpvar_43 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} - global tmpvar_44 + if { $tmpvar_42 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } + if { $tmpvar_42 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } + if { $tmpvar_42 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } + if { $tmpvar_42 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} + global tmpvar_43 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_44 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } - if { $tmpvar_44 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } - if { $tmpvar_44 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} + if { $tmpvar_43 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } + if { $tmpvar_43 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } + if { $tmpvar_43 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} write_comment $cfg $autocfg "Keybord and VGA interface" global CONFIG_KBD_ENABLE write_tristate $cfg $autocfg CONFIG_KBD_ENABLE $CONFIG_KBD_ENABLE [list $notmod] 2 @@ -7359,6 +7250,8 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUMMYBYTE $CONFIG_SPIMCTRL_DUMMYBYTE [list $notmod] 2 } global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUALOUTPUT $CONFIG_SPIMCTRL_DUALOUTPUT [list $notmod] 2 } + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_hex $cfg $autocfg CONFIG_SPIMCTRL_OFFSET $CONFIG_SPIMCTRL_OFFSET $notmod } global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_SCALER $CONFIG_SPIMCTRL_SCALER $notmod } global CONFIG_SPIMCTRL_ASCALER @@ -7388,11 +7281,11 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_45 + global tmpvar_44 if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_45 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_45 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_45 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_44 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_44 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_44 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -7437,7 +7330,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -7447,6 +7341,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -7465,8 +7361,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -7549,11 +7450,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -7578,9 +7481,6 @@ proc clear_choices { } { global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 - global CONFIG_GRUSB_DCL_ULPI; set CONFIG_GRUSB_DCL_ULPI 0 - global CONFIG_GRUSB_DCL_UTMI8; set CONFIG_GRUSB_DCL_UTMI8 0 - global CONFIG_GRUSB_DCL_UTMI16; set CONFIG_GRUSB_DCL_UTMI16 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -7598,9 +7498,6 @@ proc clear_choices { } { global CONFIG_GRETH_FIFO16; set CONFIG_GRETH_FIFO16 0 global CONFIG_GRETH_FIFO32; set CONFIG_GRETH_FIFO32 0 global CONFIG_GRETH_FIFO64; set CONFIG_GRETH_FIFO64 0 - global CONFIG_GRUSBDC_ULPI; set CONFIG_GRUSBDC_ULPI 0 - global CONFIG_GRUSBDC_UTMI8; set CONFIG_GRUSBDC_UTMI8 0 - global CONFIG_GRUSBDC_UTMI16; set CONFIG_GRUSBDC_UTMI16 0 global CONFIG_GRUSBHC_ULPI; set CONFIG_GRUSBHC_ULPI 0 global CONFIG_GRUSBHC_UTMI16; set CONFIG_GRUSBHC_UTMI16 0 global CONFIG_GRUSBHC_UTMI8; set CONFIG_GRUSBHC_UTMI8 0 @@ -7724,8 +7621,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -7744,6 +7643,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -7784,288 +7687,296 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_FPUFT_NONE - if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_FPUFT_PAR - if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_FPUFT_DMR - if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_FPUFT_TMR - if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "ULPI" - global CONFIG_GRUSB_DCL_ULPI - if { $CONFIG_GRUSB_DCL_ULPI == 1 } then { set tmpvar_27 "ULPI" } - global CONFIG_GRUSB_DCL_UTMI8 - if { $CONFIG_GRUSB_DCL_UTMI8 == 1 } then { set tmpvar_27 "UTMI/UTMI+8-bit" } - global CONFIG_GRUSB_DCL_UTMI16 - if { $CONFIG_GRUSB_DCL_UTMI16 == 1 } then { set tmpvar_27 "UTMI/UTMI+16-bit" } + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } global tmpvar_28 set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 @@ -8108,134 +8019,126 @@ proc update_choices { } { if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } global tmpvar_31 set tmpvar_31 "ULPI" - global CONFIG_GRUSBDC_ULPI - if { $CONFIG_GRUSBDC_ULPI == 1 } then { set tmpvar_31 "ULPI" } - global CONFIG_GRUSBDC_UTMI8 - if { $CONFIG_GRUSBDC_UTMI8 == 1 } then { set tmpvar_31 "UTMI/UTMI+8-bit" } - global CONFIG_GRUSBDC_UTMI16 - if { $CONFIG_GRUSBDC_UTMI16 == 1 } then { set tmpvar_31 "UTMI/UTMI+16-bit" } - global tmpvar_32 - set tmpvar_32 "ULPI" global CONFIG_GRUSBHC_ULPI - if { $CONFIG_GRUSBHC_ULPI == 1 } then { set tmpvar_32 "ULPI" } + if { $CONFIG_GRUSBHC_ULPI == 1 } then { set tmpvar_31 "ULPI" } global CONFIG_GRUSBHC_UTMI16 - if { $CONFIG_GRUSBHC_UTMI16 == 1 } then { set tmpvar_32 "UTMI+16-bit" } + if { $CONFIG_GRUSBHC_UTMI16 == 1 } then { set tmpvar_31 "UTMI+16-bit" } global CONFIG_GRUSBHC_UTMI8 - if { $CONFIG_GRUSBHC_UTMI8 == 1 } then { set tmpvar_32 "UTMI+8-bit" } - global tmpvar_33 - set tmpvar_33 "External" + if { $CONFIG_GRUSBHC_UTMI8 == 1 } then { set tmpvar_31 "UTMI+8-bit" } + global tmpvar_32 + set tmpvar_32 "External" global CONFIG_GRUSBHC_VBUSEXT - if { $CONFIG_GRUSBHC_VBUSEXT == 1 } then { set tmpvar_33 "External" } + if { $CONFIG_GRUSBHC_VBUSEXT == 1 } then { set tmpvar_32 "External" } global CONFIG_GRUSBHC_VBUSINT - if { $CONFIG_GRUSBHC_VBUSINT == 1 } then { set tmpvar_33 "Internal" } - global tmpvar_34 - set tmpvar_34 "ActiveLow" + if { $CONFIG_GRUSBHC_VBUSINT == 1 } then { set tmpvar_32 "Internal" } + global tmpvar_33 + set tmpvar_33 "ActiveLow" global CONFIG_GRUSBHC_FAULTL - if { $CONFIG_GRUSBHC_FAULTL == 1 } then { set tmpvar_34 "ActiveLow" } + if { $CONFIG_GRUSBHC_FAULTL == 1 } then { set tmpvar_33 "ActiveLow" } global CONFIG_GRUSBHC_FAULTH - if { $CONFIG_GRUSBHC_FAULTH == 1 } then { set tmpvar_34 "ActiveHigh" } + if { $CONFIG_GRUSBHC_FAULTH == 1 } then { set tmpvar_33 "ActiveHigh" } global CONFIG_GRUSBHC_FAULTN - if { $CONFIG_GRUSBHC_FAULTN == 1 } then { set tmpvar_34 "None" } - global tmpvar_35 - set tmpvar_35 "ActiveHigh" + if { $CONFIG_GRUSBHC_FAULTN == 1 } then { set tmpvar_33 "None" } + global tmpvar_34 + set tmpvar_34 "ActiveHigh" global CONFIG_GRUSBHC_ENABLEH - if { $CONFIG_GRUSBHC_ENABLEH == 1 } then { set tmpvar_35 "ActiveHigh" } + if { $CONFIG_GRUSBHC_ENABLEH == 1 } then { set tmpvar_34 "ActiveHigh" } global CONFIG_GRUSBHC_ENABLEL - if { $CONFIG_GRUSBHC_ENABLEL == 1 } then { set tmpvar_35 "ActiveLow" } - global tmpvar_36 - set tmpvar_36 "ActiveHigh" + if { $CONFIG_GRUSBHC_ENABLEL == 1 } then { set tmpvar_34 "ActiveLow" } + global tmpvar_35 + set tmpvar_35 "ActiveHigh" global CONFIG_GRUSBHC_FAULT2H - if { $CONFIG_GRUSBHC_FAULT2H == 1 } then { set tmpvar_36 "ActiveHigh" } + if { $CONFIG_GRUSBHC_FAULT2H == 1 } then { set tmpvar_35 "ActiveHigh" } global CONFIG_GRUSBHC_FAULT2L - if { $CONFIG_GRUSBHC_FAULT2L == 1 } then { set tmpvar_36 "ActiveLow" } - global tmpvar_37 - set tmpvar_37 "1" + if { $CONFIG_GRUSBHC_FAULT2L == 1 } then { set tmpvar_35 "ActiveLow" } + global tmpvar_36 + set tmpvar_36 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_37 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_36 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_37 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_36 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_37 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_36 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_37 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_36 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_37 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_36 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_37 "32" } - global tmpvar_38 - set tmpvar_38 "1" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_36 "32" } + global tmpvar_37 + set tmpvar_37 "1" global CONFIG_UA2_FIFO1 - if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_38 "1" } + if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_37 "1" } global CONFIG_UA2_FIFO2 - if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_38 "2" } + if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_37 "2" } global CONFIG_UA2_FIFO4 - if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_38 "4" } + if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_37 "4" } global CONFIG_UA2_FIFO8 - if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_38 "8" } + if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_37 "8" } global CONFIG_UA2_FIFO16 - if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_38 "16" } + if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_37 "16" } global CONFIG_UA2_FIFO32 - if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_38 "32" } - global tmpvar_39 - set tmpvar_39 "16" + if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_37 "32" } + global tmpvar_38 + set tmpvar_38 "16" global CONFIG_SPW_AHBFIFO4 - if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_39 "4" } + if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_38 "4" } global CONFIG_SPW_AHBFIFO8 - if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_39 "8" } + if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_38 "8" } global CONFIG_SPW_AHBFIFO16 - if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_39 "16" } + if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_38 "16" } global CONFIG_SPW_AHBFIFO32 - if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_39 "32" } - global tmpvar_40 - set tmpvar_40 "16" + if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_38 "32" } + global tmpvar_39 + set tmpvar_39 "16" global CONFIG_SPW_RXFIFO16 - if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_40 "16" } + if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_39 "16" } global CONFIG_SPW_RXFIFO32 - if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_40 "32" } + if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_39 "32" } global CONFIG_SPW_RXFIFO64 - if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_40 "64" } - global tmpvar_41 - set tmpvar_41 "64" + if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_39 "64" } + global tmpvar_40 + set tmpvar_40 "64" global CONFIG_SPW_RMAPBUF2 - if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_41 "64" } + if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_40 "64" } global CONFIG_SPW_RMAPBUF4 - if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_41 "128" } + if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_40 "128" } global CONFIG_SPW_RMAPBUF6 - if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_41 "192" } + if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_40 "192" } global CONFIG_SPW_RMAPBUF8 - if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_41 "256" } - global tmpvar_42 - set tmpvar_42 "2" + if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_40 "256" } + global tmpvar_41 + set tmpvar_41 "2" global CONFIG_SPW_GRSPW1 - if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_42 "1" } + if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_41 "1" } global CONFIG_SPW_GRSPW2 - if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_42 "2" } - global tmpvar_43 - set tmpvar_43 "DDR" + if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_41 "2" } + global tmpvar_42 + set tmpvar_42 "DDR" global CONFIG_SPW_RX_SDR - if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_43 "SDR" } + if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_42 "SDR" } global CONFIG_SPW_RX_DDR - if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_43 "DDR" } + if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_42 "DDR" } global CONFIG_SPW_RX_XOR - if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_43 "Xor" } + if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_42 "Xor" } global CONFIG_SPW_RX_AFLEX - if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_43 "Aeroflex" } - global tmpvar_44 - set tmpvar_44 "SDR" + if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_42 "Aeroflex" } + global tmpvar_43 + set tmpvar_43 "SDR" global CONFIG_SPW_TX_SDR - if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_44 "SDR" } + if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_43 "SDR" } global CONFIG_SPW_TX_DDR - if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_44 "DDR" } + if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_43 "DDR" } global CONFIG_SPW_TX_AFLEX - if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_44 "Aeroflex" } - global tmpvar_45 - set tmpvar_45 "None" + if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_43 "Aeroflex" } + global tmpvar_44 + set tmpvar_44 "None" global CONFIG_SPICTRL_NOFT - if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_45 "None" } + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_44 "None" } global CONFIG_SPICTRL_DMRFT - if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_45 "Parity-DMR" } + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_44 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT - if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_45 "TMR" } + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_44 "TMR" } } diff --git a/designs/leon3-gr-xc6s/leon3mp.ucf b/designs/leon3-gr-xc6s/leon3mp.ucf index 931a59f5..4d733c49 100644 --- a/designs/leon3-gr-xc6s/leon3mp.ucf +++ b/designs/leon3-gr-xc6s/leon3mp.ucf @@ -7,57 +7,69 @@ # Bank 2 => 3.3V # Bank 3 => 1.8V (DDR2) -# main clocks - -NET "clkm" TNM_NET = "clkm"; -NET "ddr2clk" TNM_NET = "ddr2clk"; -TIMESPEC "TS_clkm_ddr2clk" = FROM "clkm" TO "ddr2clk" TIG; -TIMESPEC "TS_ddr2clk_clkm" = FROM "ddr2clk" TO "clkm" TIG; - -################################################################## +############################################################################ +# VCC AUX VOLTAGE +############################################################################ +CONFIG VCCAUX=3.3; + +############################################################################ +# DDR2 requires the MCB to operate in Extended performance mode with higher Vccint +# specification to achieve maximum frequency. Therefore, the following CONFIG constraint +# follows the corresponding GUI option setting. However, DDR3 can operate at higher +# frequencies with any Vcciint value by operating MCB in extended mode. Please do not +# remove/edit the below constraint to avoid false errors. +############################################################################ +CONFIG MCB_PERFORMANCE= STANDARD; + +# --- MIG37 --- +NET "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG; +NET "mig_gen.ddrc/MCB_inst/c?_pll_lock" TIG; +NET "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/CKE_Train" TIG; ## This path exists for DDR2 only + +# --- MIG39 --- +INST "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL*" TIG; + +############################################################################ +# Main clocks +############################################################################ + +# Input clock +NET "clk" TNM_NET = "clk"; +TIMESPEC "TS_clk" = PERIOD "clk" 20.000 ns HIGH 50.00%; + +# Input clock 2 +NET "clk2" TNM_NET = "clk2"; +TIMESPEC "TS_clk2" = PERIOD "clk2" 5.000 ns HIGH 50.00%; + +# ------------------------------- +# RGMII interface -NET video_clk period = 20.000 ; -NET "video_clk" TNM_NET = "video_clk"; -TIMESPEC "TS_clkm_videoclk" = FROM "clkm" TO "video_clk" 10 ns DATAPATHONLY; -TIMESPEC "TS_videoclk_clkm" = FROM "video_clk" TO "clkm" 10 ns DATAPATHONLY; +NET "erx_clk" TNM_NET = "erx_clk"; +TIMESPEC "TS_erx_clk" = PERIOD "erx_clk" 8.000 ns HIGH 50.00%; +#OFFSET = IN 10ns VALID 5ns BEFORE erx_clk TIMEGRP "erx_clk" RISING; +OFFSET = IN 5ns valid 8ns BEFORE erx_clk TIMEGRP "erx_clk" RISING; -################################################################## -# RGMII interface -NET erx_clk PERIOD = 8.000 ; -OFFSET = in : 10.000 : BEFORE erx_clk ; +NET "clk125" TNM_NET = "clk125"; +TIMESPEC "TS_clk125" = PERIOD "clk125" 8.000 ns HIGH 50.00%; +NET "clkm" TNM_NET = "clkm"; NET "rgmii0?tx_clk" TNM_NET = "rgmii0_tx_clk"; +TIMESPEC "TS_tx_clk_freq" = PERIOD rgmii0_tx_clk 8.00 ns; TIMESPEC "TS_clkm_rgmii0_tx_clk" = FROM "clkm" TO "rgmii0_tx_clk" 8 ns DATAPATHONLY; TIMESPEC "TS_rgmii0_tx_clk_clkm" = FROM "rgmii0_tx_clk" TO "clkm" 8 ns DATAPATHONLY; -TIMESPEC "TS_tx_clk_freq" = PERIOD rgmii0_tx_clk 8.00 ns; #NET "gmiii_gtx_clk" TNM_NET = "gmiii_gtx_clk"; #TIMESPEC "TS_clkm_rgmiii_gtx_clk" = FROM "clkm" TO "gmiii_gtx_clk" TIG; #TIMESPEC "TS_gmiii_gtx_clk_clkm" = FROM "gmiii_gtx_clk" TO "clkm" TIG; -################################################################## +# ------------------------------- -CONFIG VCCAUX = 3.3; +############################################################################ +# I/O STANDARDS AND LOCATIONS +############################################################################ -NET "clk" period = 20.000 ; -NET "clk2" period = 5.000 ; NET "clk" LOC = "J20" | IOSTANDARD =LVCMOS33; # soldered oscillator, 50 MHz NET "clk2" LOC = "K20" | IOSTANDARD =LVCMOS33; # socket - user provided frequency -# Synplify versions of DDR2 false paths -#NET "mig_gen.ddrc.MCB_inst.memc?_wrapper_inst.memc?_mcb_raw_wrapper_inst.selfrefresh_mcb_mode" TIG; -#NET "mig_gen.ddrc.MCB_inst.c?_pll_lock" TIG; -#NET "mig_gen.ddrc.MCB_inst.memc?_wrapper_inst.memc?_mcb_raw_wrapper_inst.gen_term_calib.mcb_soft_calibration_top_inst.mcb_soft_calibration_inst.CKE_Train" TIG; ## This path exists for DDR2 only -#NET "mig_gen.ddrc.i.calib_done" TIG; - -# XST versions of DDR2 false paths -NET "mig_gen.ddrc?MCB_inst?memc?_wrapper_inst?memc?_mcb_raw_wrapper_inst?selfrefresh_mcb_mode" TIG; -NET "mig_gen.ddrc?MCB_inst?c?_pll_lock" TIG; -NET "mig_gen.ddrc?MCB_inst?memc?_wrapper_inst?memc?_mcb_raw_wrapper_inst?gen_term_calib.mcb_soft_calibration_top_inst?mcb_soft_calibration_inst?CKE_Train" TIG; ## This path exists for DDR2 only -NET "mig_gen.ddrc?MCB_inst?memc?_wrapper_inst?memc?_mcb_raw_wrapper_inst?gen_term_calib.mcb_soft_calibration_top_inst?mcb_soft_calibration_inst?DONE_SOFTANDHARD_CAL" TIG; - -NET "clk" CLOCK_DEDICATED_ROUTE = FALSE; -#PIN "clkgen0?xc3s.v?bufg0.O" CLOCK_DEDICATED_ROUTE = FALSE; - # memory interface (for Parallel Flash U8) # on I/O BANK1 and I/O BANK2 => 3.3V logic @@ -66,7 +78,7 @@ NET "clk" CLOCK_DEDICATED_ROUTE = FALSE; NET "address(0)" LOC = "Y3" | IOSTANDARD =LVCMOS33; NET "address(1)" LOC = "AB10" | IOSTANDARD =LVCMOS33; NET "address(2)" LOC = "AB4" | IOSTANDARD =LVCMOS33; -NET "address(3)" LOC = "AA4" | IOSTANDARD =LVCMOS33; +NET "address(3)" LOC = "AA4" | IOSTANDARD =LVCMOS33; NET "address(4)" LOC = "AB8" | IOSTANDARD =LVCMOS33; NET "address(5)" LOC = "AB12" | IOSTANDARD =LVCMOS33; NET "address(6)" LOC = "AA10" | IOSTANDARD =LVCMOS33; @@ -101,8 +113,8 @@ NET "data(30)" LOC = "AB3" | IOSTANDARD =LVCMOS33; NET "data(31)" LOC = "AB7" | IOSTANDARD =LVCMOS33; NET "writen" LOC = "H17" | IOSTANDARD = LVCMOS33; -#NET "read" LOC = "a14" | IOSTANDARD = LVCMOS33; -#NET "iosn" LOC = "b14" | IOSTANDARD = LVCMOS33; +#NET "read" LOC = "a14" | IOSTANDARD = LVCMOS33; +#NET "iosn" LOC = "b14" | IOSTANDARD = LVCMOS33; NET "romsn" LOC = "AA22" | IOSTANDARD = LVCMOS33; # also used as pin M0 NET "oen" LOC = "H16" | IOSTANDARD = LVCMOS33; @@ -110,93 +122,76 @@ NET "oen" LOC = "H16" | IOSTANDARD = LVCMOS33; NET "resetn" LOC = "aa12" | IOSTANDARD = LVCMOS33; NET "wdogn" LOC = "a4" | IOSTANDARD = LVCMOS33; - # DDR2 memory interface, to U7 # on I/O BANK3 => 1.8V logic NET "ddr_dq(*)" IN_TERM = NONE; NET "ddr_dqs(*)" IN_TERM = NONE; -NET "ddr_dq(*)" IOSTANDARD = SSTL18_II; - -NET "ddr_ad(13)" LOC = "g6" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(12)" LOC = "d1" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(11)" LOC = "c1" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(10)" LOC = "g4" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(9)" LOC = "e1" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(8)" LOC = "e3" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(7)" LOC = "h6" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(6)" LOC = "j4" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(5)" LOC = "k3" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(4)" LOC = "f3" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(3)" LOC = "k6" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(2)" LOC = "h5" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(1)" LOC = "h1" | IOSTANDARD = SSTL18_II; -NET "ddr_ad(0)" LOC = "h2" | IOSTANDARD = SSTL18_II; - -NET "ddr_ba(2)" LOC = "f1" | IOSTANDARD = SSTL18_II; -NET "ddr_ba(1)" LOC = "g1" | IOSTANDARD = SSTL18_II; -NET "ddr_ba(0)" LOC = "g3" | IOSTANDARD = SSTL18_II; - -NET "ddr_cas" LOC = "k4" | IOSTANDARD = SSTL18_II; -NET "ddr_cke" LOC = "d2" | IOSTANDARD = SSTL18_II; - -NET "ddr_clk" LOC = "h4" | IOSTANDARD = DIFF_SSTL18_II; -NET "ddr_clkb" LOC = "h3" | IOSTANDARD = DIFF_SSTL18_II; - -#NET "ddr_clk_fb" LOC = "c3" | IOSTANDARD = SSTL18_II; -#NET "ddr_clk_fb_out" LOC = "e4" | IOSTANDARD = SSTL18_II; - -NET "ddr_dm(1)" LOC = "m3" | IOSTANDARD = SSTL18_II; -NET "ddr_dm(0)" LOC = "l4" | IOSTANDARD = SSTL18_II; - -NET "ddr_dq(0)" LOC = "N3" ; -NET "ddr_dq(10)" LOC = "R3" ; -NET "ddr_dq(11)" LOC = "R1" ; -NET "ddr_dq(12)" LOC = "U3" ; -NET "ddr_dq(13)" LOC = "U1" ; -NET "ddr_dq(14)" LOC = "V2" ; -NET "ddr_dq(15)" LOC = "V1" ; -NET "ddr_dq(1)" LOC = "N1" ; -NET "ddr_dq(2)" LOC = "M2" ; -NET "ddr_dq(3)" LOC = "M1" ; -NET "ddr_dq(4)" LOC = "J3" ; -NET "ddr_dq(5)" LOC = "J1" ; -NET "ddr_dq(6)" LOC = "K2" ; -NET "ddr_dq(7)" LOC = "K1" ; -NET "ddr_dq(8)" LOC = "P2" ; -NET "ddr_dq(9)" LOC = "P1" ; - -#NET "ddr_dqsn(1)" LOC = "t1" | IOSTANDARD = DIFF_SSTL18_II; -#NET "ddr_dqsn(0)" LOC = "l1" | IOSTANDARD = DIFF_SSTL18_II; - -#NET "ddr_dqs(1)" LOC = "t2" | IOSTANDARD = DIFF_SSTL18_II; -#NET "ddr_dqs(0)" LOC = "l3" | IOSTANDARD = DIFF_SSTL18_II; - -#NET "ddr_dqsn(1)" LOC = "t1" | IOSTANDARD = SSTL18_II; -#NET "ddr_dqsn(0)" LOC = "l1" | IOSTANDARD = SSTL18_II; - +NET "ddr_dqsn(*)" IN_TERM = NONE; + +NET "ddr_ad(13)" LOC = "g6" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(12)" LOC = "d1" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(11)" LOC = "c1" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(10)" LOC = "g4" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(9)" LOC = "e1" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(8)" LOC = "e3" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(7)" LOC = "h6" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(6)" LOC = "j4" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(5)" LOC = "k3" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(4)" LOC = "f3" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(3)" LOC = "k6" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(2)" LOC = "h5" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(1)" LOC = "h1" | IOSTANDARD = SSTL18_II; +NET "ddr_ad(0)" LOC = "h2" | IOSTANDARD = SSTL18_II; + +NET "ddr_ba(2)" LOC = "f1" | IOSTANDARD = SSTL18_II; +NET "ddr_ba(1)" LOC = "g1" | IOSTANDARD = SSTL18_II; +NET "ddr_ba(0)" LOC = "g3" | IOSTANDARD = SSTL18_II; +NET "ddr_cas" LOC = "k4" | IOSTANDARD = SSTL18_II; +NET "ddr_cke" LOC = "d2" | IOSTANDARD = SSTL18_II; +NET "ddr_csn" LOC = "c3" | IOSTANDARD = SSTL18_II; +NET "ddr_clk" LOC = "h4" | IOSTANDARD = DIFF_SSTL18_II; +NET "ddr_clkb" LOC = "h3" | IOSTANDARD = DIFF_SSTL18_II; +NET "ddr_dm(1)" LOC = "m3" | IOSTANDARD = SSTL18_II; +NET "ddr_dm(0)" LOC = "l4" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(0)" LOC = "N3" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(10)" LOC = "R3" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(11)" LOC = "R1" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(12)" LOC = "U3" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(13)" LOC = "U1" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(14)" LOC = "V2" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(15)" LOC = "V1" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(1)" LOC = "N1" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(2)" LOC = "M2" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(3)" LOC = "M1" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(4)" LOC = "J3" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(5)" LOC = "J1" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(6)" LOC = "K2" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(7)" LOC = "K1" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(8)" LOC = "P2" | IOSTANDARD = SSTL18_II; +NET "ddr_dq(9)" LOC = "P1" | IOSTANDARD = SSTL18_II; +NET "ddr_dqsn(1)" LOC = "t1" | IOSTANDARD = DIFF_SSTL18_II; +NET "ddr_dqsn(0)" LOC = "l1" | IOSTANDARD = DIFF_SSTL18_II; NET "ddr_dqs(1)" LOC = "t2" | IOSTANDARD = DIFF_SSTL18_II; NET "ddr_dqs(0)" LOC = "l3" | IOSTANDARD = DIFF_SSTL18_II; - NET "ddr_odt" LOC = "j6" | IOSTANDARD = SSTL18_II; NET "ddr_ras" LOC = "k5" | IOSTANDARD = SSTL18_II; NET "ddr_we" LOC = "f2" | IOSTANDARD = SSTL18_II; - -NET "ddr_rzq" LOC = "k7" | IOSTANDARD = SSTL18_II; -NET "ddr_zio" LOC = "d5" | IOSTANDARD = SSTL18_II; +NET "ddr_rzq" LOC = "k7" | IOSTANDARD = SSTL18_II; +NET "ddr_zio" LOC = "d5" | IOSTANDARD = SSTL18_II; # RMII Ethernet Interface, to 10/100/1000 RGMII PHY, U3 # on I/O BANK1 => 3.3V logic # dedicated 25MHz clock is generated by crystal locally to PHY # Optionally PHY can generate 125MHz output clock as input to FPGA -NET "clk125" LOC = "m20" | IOSTANDARD =LVCMOS33; +NET "clk125" LOC = "m20" | IOSTANDARD =LVCMOS33; NET "emdc" LOC = "j16" | IOSTANDARD =LVCMOS33; NET "emdint" LOC = "l15" | IOSTANDARD =LVCMOS33; NET "emdio" LOC = "h18" | IOSTANDARD =LVCMOS33; -NET "erx_dv" LOC = "k16" | IOSTANDARD =LVCMOS33 | IOBDELAY = NONE; +NET "erx_dv" LOC = "k16" | IOSTANDARD =LVCMOS33 | IOBDELAY = NONE; NET "erx_clk" LOC = "k19" | IOSTANDARD =LVCMOS33 | IOBDELAY = NONE; NET "erxd(0)" LOC = "h19" | IOSTANDARD =LVCMOS33 | IOBDELAY = NONE; diff --git a/designs/leon3-gr-xc6s/leon3mp.vhd b/designs/leon3-gr-xc6s/leon3mp.vhd index 51f0b05f..ab151a41 100644 --- a/designs/leon3-gr-xc6s/leon3mp.vhd +++ b/designs/leon3-gr-xc6s/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2011, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -21,7 +21,6 @@ -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------ - library ieee; use ieee.std_logic_1164.all; library grlib, techmap; @@ -42,7 +41,6 @@ use gaisler.net.all; use gaisler.jtag.all; use gaisler.spacewire.all; use gaisler.grusb.all; ---use gaisler.ata.all; -- pragma translate_off use gaisler.sim.all; -- pragma translate_on @@ -82,9 +80,11 @@ entity leon3mp is ddr_we : out std_ulogic; -- ddr write enable ddr_ras : out std_ulogic; -- ddr ras + ddr_csn : out std_ulogic; -- ddr csn ddr_cas : out std_ulogic; -- ddr cas ddr_dm : out std_logic_vector (1 downto 0); -- ddr dm ddr_dqs : inout std_logic_vector (1 downto 0); -- ddr dqs + ddr_dqsn : inout std_logic_vector (1 downto 0); -- ddr dqs n ddr_ad : out std_logic_vector (12 downto 0); -- ddr address ddr_ba : out std_logic_vector (2 downto 0); -- ddr bank address ddr_dq : inout std_logic_vector (15 downto 0); -- ddr data @@ -158,24 +158,6 @@ entity leon3mp is usb_stp : out std_logic; usb_dir : in std_logic; usb_resetn : out std_ulogic; - - -- ATA / IDE Interface - --- This interface shares pins with GENIO port. - - -- ata_rstn : out std_logic; - -- ata_data : inout std_logic_vector(15 downto 0); - -- ata_da : out std_logic_vector(2 downto 0); - -- ata_cs0 : out std_logic; - -- ata_cs1 : out std_logic; - -- ata_dior : out std_logic; - -- ata_diow : out std_logic; - -- ata_iordy : in std_logic; - -- ata_intrq : in std_logic; - -- ata_dmarq : in std_logic; - -- ata_dmack : out std_logic; - -- --ata_dasp : in std_logic - -- ata_csel : out std_logic; -- SPI flash spi_sel_n : inout std_ulogic; @@ -202,8 +184,7 @@ attribute syn_netlist_hierarchy of rtl : architecture is false; constant blength : integer := 12; constant fifodepth : integer := 8; constant maxahbm : integer := CFG_NCPU+CFG_AHB_UART+CFG_GRETH+ - CFG_AHB_JTAG+CFG_SPW_NUM*CFG_SPW_EN+CFG_GRUSB_DCL+ - CFG_ATA+CFG_GRUSBDC; + CFG_AHB_JTAG+CFG_SPW_NUM*CFG_SPW_EN+CFG_GRUSBHC*CFG_GRUSBHC_UHC+1; signal vcc, gnd : std_logic; @@ -228,8 +209,8 @@ signal clkm, rstn, rstraw, sdclkl : std_ulogic; signal clk_200 : std_ulogic; signal clk25, clk40, clk65 : std_ulogic; -signal cgi, cgi2 : clkgen_in_type; -signal cgo, cgo2 : clkgen_out_type; +signal cgi, cgi2, cgi3 : clkgen_in_type; +signal cgo, cgo2, cgo3 : clkgen_out_type; signal u1i, u2i, dui : uart_in_type; signal u1o, u2o, duo : uart_out_type; @@ -265,7 +246,7 @@ signal can_lrx, can_ltx : std_logic_vector(0 to 7); signal lock, calib_done, clkml, lclk, rst, ndsuact, wdogl : std_ulogic; signal tck, tckn, tms, tdi, tdo : std_ulogic; -signal uclk : std_ulogic; +signal uclk, usb_clk_buf : std_ulogic; signal usbi : grusb_in_vector(0 downto 0); signal usbo : grusb_out_vector(0 downto 0); @@ -290,7 +271,7 @@ signal spmo2 : spimctrl_out_type; constant BOARD_FREQ : integer := 50000; -- input frequency in KHz constant CPU_FREQ : integer := BOARD_FREQ * CFG_CLKMUL / CFG_CLKDIV; -- cpu frequency in KHz -constant IOAEN : integer := CFG_CAN + CFG_ATA + CFG_GRUSBDC; +constant IOAEN : integer := CFG_CAN + CFG_GRUSBHC*CFG_GRUSBHC_UHC; constant DDR2_FREQ : integer := 200000; -- DDR2 input frequency in KHz @@ -300,6 +281,9 @@ signal dtmp : std_logic_vector(CFG_SPW_NUM-1 downto 0); signal stmp : std_logic_vector(CFG_SPW_NUM-1 downto 0); signal spw_clkl : std_ulogic; signal spw_clkln : std_ulogic; +signal spw_rstn : std_ulogic; +signal spw_rstn_sync : std_ulogic; + signal rxclko : std_logic_vector(CFG_SPW_NUM-1 downto 0); signal stati : ahbstat_in_type; signal lusb_clk : std_ulogic; @@ -323,7 +307,7 @@ signal clk_sel : std_logic_vector(1 downto 0); signal clkvga, clkvga_p, clkvga_n : std_ulogic; signal clk_125 : std_ulogic; signal nerror : std_ulogic; - + attribute keep : boolean; attribute syn_keep : boolean; attribute syn_preserve : boolean; @@ -340,7 +324,13 @@ attribute syn_preserve of spw100 : signal is true; attribute keep of spw100 : signal is true; attribute syn_preserve of clkm : signal is true; attribute keep of clkm : signal is true; +attribute syn_preserve of uclk : signal is true; +attribute keep of uclk : signal is true; +attribute maxdelay: string; +attribute maxdelay of usb_dir: signal is "2000 ps"; +attribute maxskew: string; +attribute maxskew of usb_dir : signal is "2000 ps"; begin ---------------------------------------------------------------------- @@ -350,23 +340,31 @@ begin vcc <= '1'; gnd <= '0'; cgi.pllctrl <= "00"; cgi.pllrst <= rstraw; --- pllref_pad : clkpad generic map (tech => padtech) port map (pllref, cgi.pllref); --- ethclk_pad : inpad generic map (tech => padtech) port map(clk2, ethclk); - ethclk <= lclk; clk_pad : clkpad generic map (tech => padtech) port map (clk, lclk); --- clkddr_pad : clkpad generic map (tech => padtech) port map (clk, ddr2clk); - ddr2clk <= lclk; + ddr2clk <= lclk; + ethclk <= lclk; + + no_clk_mig : if CFG_MIG_DDR2 = 0 generate + clkgen0 : clkgen -- clock generator generic map (clktech, CFG_CLKMUL, CFG_CLKDIV, CFG_MCTRL_SDEN, CFG_CLK_NOFB, 0, 0, 0, BOARD_FREQ) port map (lclk, lclk, clkm, open, open, sdclkl, open, cgi, cgo, open, clk50, clk100); + rst0 : rstgen -- reset generator + port map (rst, clkm, lock, rstn, rstraw); + + end generate; + + clk_mig : if CFG_MIG_DDR2 = 1 generate + clk50 <= clkm; + rstraw <= rst; + cgo.clklock <= '1'; + end generate; resetn_pad : inpad generic map (tech => padtech) port map (resetn, rst); - rst0 : rstgen -- reset generator - port map (rst, clkm, lock, rstn, rstraw); --- lock <= cgo.clklock and calib_done when CFG_MIG_DDR2 = 1 else cgo.clklock; - lock <= calib_done; + + lock <= cgo.clklock and calib_done and ulock; ---------------------------------------------------------------------- --- AHB CONTROLLER -------------------------------------------------- @@ -529,47 +527,52 @@ begin --- DDR2 memory controller ------------------------------------------ ---------------------------------------------------------------------- + ddr_csn <= '0'; + mig_gen : if (CFG_MIG_DDR2 = 1) generate - ddrc : entity work.ahb2mig_grxc6s_2p generic map( - hindex => 4, haddr => 16#400#, hmask => 16#F80#, - pindex => 0, paddr => 0, vgamst => CFG_SVGA_ENABLE, vgaburst => 64, - clkdiv => 10) + ddrc : entity work.ahb2mig_grxc6s_2p + generic map( + hindex => 4, haddr => 16#400#, hmask => 16#F80#, + pindex => 0, paddr => 0, vgamst => CFG_SVGA_ENABLE, vgaburst => 64, + clkdiv => 10) port map( - mcb3_dram_dq => ddr_dq, - mcb3_dram_a => ddr_ad, - mcb3_dram_ba => ddr_ba, - mcb3_dram_ras_n => ddr_ras, - mcb3_dram_cas_n => ddr_cas, - mcb3_dram_we_n => ddr_we, - mcb3_dram_odt => ddr_odt, - mcb3_dram_cke => ddr_cke, - mcb3_dram_dm => ddr_dm(0), - mcb3_dram_udqs => ddr_dqs(1), - mcb3_rzq => ddr_rzq, - mcb3_zio => ddr_zio, - mcb3_dram_udm => ddr_dm(1), - mcb3_dram_dqs => ddr_dqs(0), - mcb3_dram_ck => ddr_clk, - mcb3_dram_ck_n => ddr_clkb, - ahbsi => ahbsi, - ahbso => ahbso(4), - ahbmi => vahbmi, - ahbmo => vahbmo, - apbi => apbi2, - apbo => apbo2(0), - calib_done => calib_done, - rst_n_syn => rstn, - rst_n_async => rstraw, - clk_amba => clkm, - clk_mem_n => ddr2clk, - clk_mem_p => ddr2clk, - test_error => open, - clk_125 => clk_125, - clkout5 => open - ); + mcb3_dram_dq => ddr_dq, + mcb3_dram_a => ddr_ad, + mcb3_dram_ba => ddr_ba, + mcb3_dram_ras_n => ddr_ras, + mcb3_dram_cas_n => ddr_cas, + mcb3_dram_we_n => ddr_we, + mcb3_dram_odt => ddr_odt, + mcb3_dram_cke => ddr_cke, + mcb3_dram_dm => ddr_dm(0), + mcb3_dram_udqs => ddr_dqs(1), + mcb3_dram_udqs_n => ddr_dqsn(1), + mcb3_rzq => ddr_rzq, + mcb3_zio => ddr_zio, + mcb3_dram_udm => ddr_dm(1), + mcb3_dram_dqs => ddr_dqs(0), + mcb3_dram_dqs_n => ddr_dqsn(0), + mcb3_dram_ck => ddr_clk, + mcb3_dram_ck_n => ddr_clkb, + ahbsi => ahbsi, + ahbso => ahbso(4), + ahbmi => vahbmi, + ahbmo => vahbmo, + apbi => apbi2, + apbo => apbo2(0), + calib_done => calib_done, + rst_n_syn => rstn, + rst_n_async => rstraw, + clk_amba => clkm, + clk_mem_n => ddr2clk, + clk_mem_p => ddr2clk, + test_error => open, + clk_125 => clk_125, + clk_100 => clk100 + ); end generate; - noddr : if (CFG_DDR2SP+CFG_MIG_DDR2) = 0 generate lock <= '1'; end generate; + noddr : if (CFG_DDR2SP+CFG_MIG_DDR2) = 0 generate calib_done <= '1'; end generate; ---------------------------------------------------------------------- --- SPI Memory Controller-------------------------------------------- @@ -600,6 +603,15 @@ begin port map (spi_sel_n, spmo.csn); end generate; + nospimc: if ((CFG_SPICTRL_ENABLE = 0 and CFG_SPIMCTRL = 0) or + (CFG_SPICTRL_ENABLE = 1 and CFG_SPIMCTRL = 1) or + (CFG_SPICTRL_ENABLE = 1 and CFG_SPIMCTRL = 0))generate + mosi_pad : outpad generic map (tech => padtech) + port map (spi_mosi, '0'); + sck_pad : outpad generic map (tech => padtech) + port map (spi_clk, '0'); + end generate; + ---------------------------------------------------------------------- --- APB Bridge and various periherals ------------------------------- ---------------------------------------------------------------------- @@ -624,6 +636,7 @@ begin rts1_pad : outpad generic map (tech => padtech) port map (rtsn1, u1o.rtsn); end generate; noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate; + rts1_pad : outpad generic map (tech => padtech) port map (rtsn2, '0'); irqctrl : if CFG_IRQ3_ENABLE /= 0 generate irqctrl0 : irqmp -- interrupt controller @@ -689,7 +702,8 @@ begin vahbmo, clk_sel); end generate; - b0 : techbuf generic map (2, fabtech) port map (clk50, video_clk); + --b0 : techbuf generic map (2, fabtech) port map (clk50, video_clk); + video_clk <= clk50; vgadvi : if (CFG_VGA_ENABLE + CFG_SVGA_ENABLE) /= 0 generate dvi0 : entity work.svga2ch7301c generic map (tech => fabtech, dynamic => 1) port map (clkm, vgao, video_clk, clkvga_p, clkvga_n, @@ -751,9 +765,8 @@ begin -- make an additonal 32 bit GPIO port for genio(31..0) - -- Pins only usable if ATA interface is not enabled. - gpio1 : if CFG_ATA /=1 and CFG_GRGPIO_ENABLE /= 0 generate -- GPIO unit + gpio1 : if CFG_GRGPIO_ENABLE /= 0 generate -- GPIO unit grgpio1: grgpio generic map(pindex => 11, paddr => 11, imask => CFG_GRGPIO_IMASK, nbits => 32) port map(rst => rstn, clk => clkm, apbi => apbi, apbo => apbo(11), @@ -764,12 +777,8 @@ begin end generate; end generate; - - - -- make an additonal 28 bit GPIO port for genio(59..32) - -- Pins only usable if ATA interface is not enabled. - gpio2 : if CFG_ATA /=1 and CFG_GRGPIO_ENABLE /= 0 generate -- GPIO unit + gpio2 : if CFG_GRGPIO_ENABLE /= 0 generate -- GPIO unit grgpio2: grgpio generic map(pindex => 12, paddr => 12, imask => CFG_GRGPIO_IMASK, nbits => 28) port map(rst => rstn, clk => clkm, apbi => apbi, apbo => apbo(12), @@ -807,13 +816,11 @@ begin led(3 downto 2) <= not (gmiio.gbit & gmiio.speed); - rgmii0 : entity work.rgmii generic map (fabtech, CFG_GRETH1G, 1) --- rgmii0 : entity work.rgmii generic map (fabtech, 1, 1) - port map (rstn, lclk, gmiii, gmiio, rgmiii, rgmiio); + rgmii0 : rgmii generic map (fabtech, CFG_GRETH1G, 1) + port map (rstn, clkm, clk_125, gmiii, gmiio, rgmiii, rgmiio); ethpads : if (CFG_GRETH = 1) generate -- eth pads --- clk125_pad : inpad generic map (tech => padtech) --- port map (clk125, rgmiii.gtx_clk); - rgmiii.gtx_clk <= clk_125; + clk125_pad : inpad generic map (tech => padtech) + port map (clk125, rgmiii.gtx_clk); emdio_pad : iopad generic map (tech => padtech) port map (emdio, rgmiio.mdio_o, rgmiio.mdio_oe, rgmiii.mdio_i); etxc_pad : outpad generic map (tech => padtech) @@ -835,6 +842,7 @@ begin port map (emdc, rgmiio.mdc); end generate; + ----------------------------------------------------------------------- --- AHB RAM ---------------------------------------------------------- ----------------------------------------------------------------------- @@ -893,6 +901,7 @@ begin core0: if CFG_SPW_GRSPW = 1 generate spw_clkl <= clkm; + spw_rstn <= rstn; end generate; core1 : if CFG_SPW_GRSPW = 2 generate @@ -904,6 +913,17 @@ begin -- port map (clk100, spw100); spw100 <= clk100; spw_clkl <= spw100; spw_clkln <= not spw100; + --spw_rstn <= rstn; + spw_rstn_sync_proc : process(rstn,spw_clkl) + begin + if rstn = '0' then + spw_rstn_sync <= '0'; + spw_rstn <= '0'; + elsif rising_edge(spw_clkl) then + spw_rstn_sync <= '1'; + spw_rstn <= spw_rstn_sync; + end if; + end process spw_rstn_sync_proc; end generate; swloop : for i in 0 to CFG_SPW_NUM-1 generate @@ -914,7 +934,7 @@ begin tech => memtech, input_type => CFG_SPW_INPUT) port map( - rstn => rstn, + rstn => spw_rstn, rxclki => spw_clkl, rxclkin => spw_clkln, nrxclki => spw_clkl, @@ -957,7 +977,6 @@ begin core0 : if CFG_SPW_GRSPW = 1 generate spwi(i).d(0) <= dtmp(i); spwi(i).s(0) <= stmp(i); end generate; - spw_rxd_pad : inpad_ds generic map (padtech, lvds, x33v, 1) port map (spw_rxdp(i), spw_rxdn(i), dtmp(i)); spw_rxs_pad : inpad_ds generic map (padtech, lvds, x33v, 1) @@ -973,37 +992,6 @@ begin ------------------------------------------------------------------------------- -- USB ------------------------------------------------------------------------ ------------------------------------------------------------------------------- - -- Note that more than one USB component can not be instantiated at the same - -- time (board has only one USB transceiver), therefore they share AHB - -- master/slave indexes - ----------------------------------------------------------------------------- - -- Shared pads - ----------------------------------------------------------------------------- - usbpads: if (CFG_GRUSBHC + CFG_GRUSBDC + CFG_GRUSB_DCL) /= 0 generate - -- Incoming 60 MHz clock from transceiver, arch 3 = through BUFGDLL or - -- similiar. --- usb_clkout_pad : clkpad generic map (tech => padtech, arch => 3) port map (usb_clk, uclk, cgo.clklock, ulock); --- usb_clkout_pad : clkpad generic map (tech => padtech, arch => 0) port map (usb_clk, lusb_clk); - usb_clk_pad : clkpad generic map (tech => padtech, arch => 0) port map (usb_clk, uclk); - --- x0 : clkmul_virtex2 port map (rstn, lusb_clk, uclk, ulock); - - usb_d_pad: iopadv - generic map(tech => padtech, width => 8) - port map (usb_d, usbo(0).dataout(7 downto 0), usbo(0).oen, - usbi(0).datain(7 downto 0)); - usb_nxt_pad : inpad generic map (tech => padtech) - port map (usb_nxt, usbi(0).nxt); - usb_dir_pad : inpad generic map (tech => padtech) - port map (usb_dir, usbi(0).dir); - usb_resetn_pad : outpad generic map (tech => padtech, slew => 1) - port map (usb_resetn, usbo(0).reset); - usb_stp_pad : outpad generic map (tech => padtech, slew => 1) - port map (usb_stp, usbo(0).stp); - end generate usbpads; - nousb: if (CFG_GRUSBHC + CFG_GRUSBDC + CFG_GRUSB_DCL) = 0 generate - ulock <= '1'; - end generate nousb; ----------------------------------------------------------------------------- -- USB 2.0 Host Controller @@ -1032,115 +1020,36 @@ begin CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRETH+CFG_SPW_EN*CFG_SPW_NUM+1), ahbso(8 downto 8), usbo,usbi); - end generate usbhc0; - - ----------------------------------------------------------------------------- - -- USB 2.0 Device Controller - ----------------------------------------------------------------------------- - usbdc0: if CFG_GRUSBDC = 1 generate - usbdc0: grusbdc - generic map( - hsindex => 8, hirq => 9, haddr => 16#004#, hmask => 16#FFC#, - -- hmindex => CFG_NCPU+CFG_AHB_UART+log2x(CFG_PCI)+CFG_AHB_JTAG+CFG_GRETH+CFG_SPW_EN*CFG_SPW_NUM, - hmindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRETH+CFG_SPW_EN*CFG_SPW_NUM, - aiface => CFG_GRUSBDC_AIFACE, uiface => 1, - nepi => CFG_GRUSBDC_NEPI, nepo => CFG_GRUSBDC_NEPO, - i0 => CFG_GRUSBDC_I0, i1 => CFG_GRUSBDC_I1, - i2 => CFG_GRUSBDC_I2, i3 => CFG_GRUSBDC_I3, - i4 => CFG_GRUSBDC_I4, i5 => CFG_GRUSBDC_I5, - i6 => CFG_GRUSBDC_I6, i7 => CFG_GRUSBDC_I7, - i8 => CFG_GRUSBDC_I8, i9 => CFG_GRUSBDC_I9, - i10 => CFG_GRUSBDC_I10, i11 => CFG_GRUSBDC_I11, - i12 => CFG_GRUSBDC_I12, i13 => CFG_GRUSBDC_I13, - i14 => CFG_GRUSBDC_I14, i15 => CFG_GRUSBDC_I15, - o0 => CFG_GRUSBDC_O0, o1 => CFG_GRUSBDC_O1, - o2 => CFG_GRUSBDC_O2, o3 => CFG_GRUSBDC_O3, - o4 => CFG_GRUSBDC_O4, o5 => CFG_GRUSBDC_O5, - o6 => CFG_GRUSBDC_O6, o7 => CFG_GRUSBDC_O7, - o8 => CFG_GRUSBDC_O8, o9 => CFG_GRUSBDC_O9, - o10 => CFG_GRUSBDC_O10, o11 => CFG_GRUSBDC_O11, - o12 => CFG_GRUSBDC_O12, o13 => CFG_GRUSBDC_O13, - o14 => CFG_GRUSBDC_O14, o15 => CFG_GRUSBDC_O15, - memtech => memtech, keepclk => 1) - port map( - uclk => uclk, - usbi => usbi(0), - usbo => usbo(0), - hclk => clkm, - hrst => rstn, - ahbmi => ahbmi, --- ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+log2x(CFG_PCI)+CFG_AHB_JTAG+CFG_GRETH+CFG_SPW_EN*CFG_SPW_NUM), - ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRETH+CFG_SPW_EN*CFG_SPW_NUM), - ahbsi => ahbsi, - ahbso => ahbso(8) - ); - end generate usbdc0; - - ----------------------------------------------------------------------------- - -- USB DCL - ----------------------------------------------------------------------------- - usb_dcl0: if CFG_GRUSB_DCL = 1 generate - usb_dcl0: grusb_dcl - generic map ( --- hindex => CFG_NCPU+CFG_AHB_UART+log2x(CFG_PCI)+CFG_AHB_JTAG+CFG_GRETH+CFG_SPW_EN*CFG_SPW_NUM, - hindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRETH+CFG_SPW_EN*CFG_SPW_NUM, - memtech => memtech, keepclk => 1, uiface => 1) - port map ( - uclk, usbi(0), usbo(0), clkm, rstn, ahbmi, - -- ahbmo(CFG_NCPU+CFG_AHB_UART+log2x(CFG_PCI)+CFG_AHB_JTAG+CFG_GRETH+CFG_SPW_EN*CFG_SPW_NUM)); - ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRETH+CFG_SPW_EN*CFG_SPW_NUM)); - end generate usb_dcl0; ------------------------------------------------------------------------ ---- AHB ATA ---------------------------------------------------------- ------------------------------------------------------------------------ + -- Incoming 60 MHz clock from transceiver, arch 2 = through BUFG + usb_clk_pad : clkpad generic map (tech => padtech, arch => 2) port map (usb_clk,usb_clk_buf); --- ata0 : if CFG_ATA = 1 generate --- atac0 : atactrl --- generic map( --- tech => 0, fdepth => CFG_ATAFIFO, --- mhindex => CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+CFG_SVGA_ENABLE+ --- CFG_SPW_NUM*CFG_SPW_EN+CFG_GRUSB_DCL+CFG_GRUSBDC, --- shindex => 3, haddr => 16--A00--, hmask => 16--fff--, pirq => CFG_ATAIRQ, --- mwdma => CFG_ATADMA, TWIDTH => 8, --- -- PIO mode 0 settings (@100MHz clock) --- PIO_mode0_T1 => 6, -- 70ns --- PIO_mode0_T2 => 28, -- 290ns --- PIO_mode0_T4 => 2, -- 30ns --- PIO_mode0_Teoc => 23 -- 240ns ==> T0 - T1 - T2 = 600 - 70 - 290 = 240 --- ) --- port map( --- rst => rstn, arst => vcc, clk => clkm, ahbmi => ahbmi, --- ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_GRETH+CFG_AHB_JTAG+ --- CFG_SVGA_ENABLE+CFG_SPW_NUM*CFG_SPW_EN+ --- CFG_GRUSB_DCL+CFG_GRUSBDC), --- ahbsi => ahbsi, ahbso => ahbso(11), atai => idei, atao => ideo); --- --- ata_rstn_pad : outpad generic map (tech => padtech) --- port map (ata_rstn, ideo.rstn); --- ata_data_pad : iopadv generic map (tech => padtech, width => 16, oepol => 1) --- port map (ata_data, ideo.ddo, ideo.oen, idei.ddi); --- ata_da_pad : outpadv generic map (tech => padtech, width => 3) --- port map (ata_da, ideo.da); --- ata_cs0_pad : outpad generic map (tech => padtech) --- port map (ata_cs0, ideo.cs0); --- ata_cs1_pad : outpad generic map (tech => padtech) --- port map (ata_cs1, ideo.cs1); --- ata_dior_pad : outpad generic map (tech => padtech) --- port map (ata_dior, ideo.dior); --- ata_diow_pad : outpad generic map (tech => padtech) --- port map (ata_diow, ideo.diow); --- iordy_pad : inpad generic map (tech => padtech) --- port map (ata_iordy, idei.iordy); --- intrq_pad : inpad generic map (tech => padtech) --- port map (ata_intrq, idei.intrq); --- dmarq_pad : inpad generic map (tech => padtech) --- port map (ata_dmarq, idei.dmarq); --- dmack_pad : outpad generic map (tech => padtech) --- port map (ata_dmack, ideo.dmack); --- ata_csel <= '0'; --- end generate; - + -- Use a ADV PLL for clock network deskew. + clkgen_usb :entity work.usb_spartan6_pll + generic map(16667,8,8,1) + port map (usb_clk_buf,rstraw,uclk,open,ulock); + + usb_d_pad: iopadv + generic map(tech => padtech, width => 8) + port map (usb_d, usbo(0).dataout(7 downto 0), usbo(0).oen, + usbi(0).datain(7 downto 0)); + usb_nxt_pad : inpad generic map (tech => padtech) + port map (usb_nxt, usbi(0).nxt); + usb_dir_pad : inpad generic map (tech => padtech) + port map (usb_dir, usbi(0).dir); + usb_resetn_pad : outpad generic map (tech => padtech, slew => 1) + port map (usb_resetn, usbo(0).reset); + usb_stp_pad : outpad generic map (tech => padtech, slew => 1) + port map (usb_stp, usbo(0).stp); + end generate usbhc0; + nousb: if CFG_GRUSBHC = 0 generate + ulock <= '1'; + usb_resetn_pad : outpad generic map (tech => padtech, slew => 1) + port map (usb_resetn, '0'); + usb_stp_pad : outpad generic map (tech => padtech, slew => 1) + port map (usb_stp, '0'); + end generate nousb; + ----------------------------------------------------------------------- --- Drive unused bus elements --------------------------------------- ----------------------------------------------------------------------- diff --git a/designs/leon3-gr-xc6s/mcb_soft_calibration_patch.txt b/designs/leon3-gr-xc6s/mcb_soft_calibration_patch.txt new file mode 100644 index 00000000..ef221fad --- /dev/null +++ b/designs/leon3-gr-xc6s/mcb_soft_calibration_patch.txt @@ -0,0 +1,1049 @@ +--- ./mig39/mig_39//user_design/rtl/mcb_soft_calibration.vhd 2013-01-15 15:13:18.000000000 +0100 ++++ ./p/a/t/c/h/mig39/mig_39//user_design/rtl/mcb_soft_calibration.vhd 2013-01-15 15:19:15.608793398 +0100 +@@ -94,15 +94,7 @@ + -- 3.7: 04/26/10: Added DDR2 Initialization fix to meet 400 ns wait as outlined in step d) of JEDEC DDR2 spec . + -- 3.8: 05/05/10: Added fixes for the CR# 559092 (updated Mult_Divide function) and 555416 (added IOB attribute to DONE_SOFTANDHARD_CAL). + -- 3.9: 05/24/10: Added 200us Wait logic to control CKE_Train. The 200us Wait counter assumes UI_CLK freq not higher than 100 MHz. +--- 3.10 10/22/10: Fixed PERFORM_START_DYN_CAL_AFTER_SELFREFRESH logic. +--- 3.11 2/14/11: Apply a different skkew for the P and N inputs for the differential LDQS and UDQS signals to provide more noise immunity. +--- 4.1 03/08/12: Fixed SELFREFRESH_MCB_REQ logic. It should not need depend on the SM STATE so that +--- MCB can come out of selfresh mode. SM requires refresh cycle to update the DQS value. +--- 4.2 05/10/12: All P/N terms of input and bidir memory pins are initialized with value of ZERO. TZQINIT_MAXCNT +--- are set to 8 for LPDDR,DDR and DDR2 interface . +--- Keep the UICMDEN in assertion state when SM is in RST_DELAY state so that MCB will not start doing +--- Premable detection until the second deassertion of MCB_SYSRST. +- ++-- 3.10 10/22/10: Fixed PERFORM_START_DYN_CAL_AFTER_SELFREFRESH logic. + + -- End Revision + --********************************************************************************** +@@ -157,17 +149,17 @@ + MCB_UIADDR : out std_logic_vector(4 downto 0) := "00000"; -- to MCB's UIADDR port (gets passed to IODRP2_MCB's AUXADDR port + MCB_UICMDEN : out std_logic := '1'; -- set to 1 to take control of UI interface - removes control from internal calib block + MCB_UIDONECAL : out std_logic := '0'; -- set to 0 to "tell" controller that it's still in a calibrate state +- MCB_UIDQLOWERDEC : out std_logic ; +- MCB_UIDQLOWERINC : out std_logic ; +- MCB_UIDQUPPERDEC : out std_logic ; +- MCB_UIDQUPPERINC : out std_logic ; ++ MCB_UIDQLOWERDEC : out std_logic := '0'; ++ MCB_UIDQLOWERINC : out std_logic := '0'; ++ MCB_UIDQUPPERDEC : out std_logic := '0'; ++ MCB_UIDQUPPERINC : out std_logic := '0'; + MCB_UILDQSDEC : out std_logic := '0'; + MCB_UILDQSINC : out std_logic := '0'; + MCB_UIREAD : out std_logic; -- enables read w/o writing by turning on a SDO->SDI loopback inside the IODRP2_MCBs (doesn't exist in + -- regular IODRP2). IODRPCTRLR_R_WB becomes don't-care. + MCB_UIUDQSDEC : out std_logic := '0'; + MCB_UIUDQSINC : out std_logic := '0'; +- MCB_RECAL : out std_logic ; -- future hook to drive MCB's RECAL pin - initiates a hard re-calibration sequence when high ++ MCB_RECAL : out std_logic := '0'; -- future hook to drive MCB's RECAL pin - initiates a hard re-calibration sequence when high + MCB_UICMD : out std_logic; + MCB_UICMDIN : out std_logic; + MCB_UIDQCOUNT : out std_logic_vector(3 downto 0); +@@ -234,50 +226,31 @@ + constant WAIT5 : std_logic_vector(5 downto 0) := "001111"; + constant BROADCAST_NTERM : std_logic_vector(5 downto 0) := "010000"; + constant WAIT6 : std_logic_vector(5 downto 0) := "010001"; +- +- constant LDQS_CLK_WRITE_P_TERM : std_logic_vector(5 downto 0) := "010010"; +- constant LDQS_CLK_P_TERM_WAIT : std_logic_vector(5 downto 0) := "010011"; +- constant LDQS_CLK_WRITE_N_TERM : std_logic_vector(5 downto 0) := "010100"; +- constant LDQS_CLK_N_TERM_WAIT : std_logic_vector(5 downto 0) := "010101"; +- constant LDQS_PIN_WRITE_P_TERM : std_logic_vector(5 downto 0) := "010110"; +- constant LDQS_PIN_P_TERM_WAIT : std_logic_vector(5 downto 0) := "010111"; +- constant LDQS_PIN_WRITE_N_TERM : std_logic_vector(5 downto 0) := "011000"; +- constant LDQS_PIN_N_TERM_WAIT : std_logic_vector(5 downto 0) := "011001"; +- constant UDQS_CLK_WRITE_P_TERM : std_logic_vector(5 downto 0) := "011010"; +- constant UDQS_CLK_P_TERM_WAIT : std_logic_vector(5 downto 0) := "011011"; +- constant UDQS_CLK_WRITE_N_TERM : std_logic_vector(5 downto 0) := "011100"; +- constant UDQS_CLK_N_TERM_WAIT : std_logic_vector(5 downto 0) := "011101"; +- constant UDQS_PIN_WRITE_P_TERM : std_logic_vector(5 downto 0) := "011110"; +- constant UDQS_PIN_P_TERM_WAIT : std_logic_vector(5 downto 0) := "011111"; +- constant UDQS_PIN_WRITE_N_TERM : std_logic_vector(5 downto 0) := "100000"; +- constant UDQS_PIN_N_TERM_WAIT : std_logic_vector(5 downto 0) := "100001"; +- +- constant OFF_RZQ_PTERM : std_logic_vector(5 downto 0) := "100010"; +- constant WAIT7 : std_logic_vector(5 downto 0) := "100011"; +- constant OFF_ZIO_NTERM : std_logic_vector(5 downto 0) := "100100"; +- constant WAIT8 : std_logic_vector(5 downto 0) := "100101"; +- constant RST_DELAY : std_logic_vector(5 downto 0) := "100110"; +- constant START_DYN_CAL_PRE : std_logic_vector(5 downto 0) := "100111"; +- constant WAIT_FOR_UODONE : std_logic_vector(5 downto 0) := "101000"; +- constant LDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "101001"; +- constant LDQS_WAIT1 : std_logic_vector(5 downto 0) := "101010"; +- constant LDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "101011"; +- constant LDQS_WAIT2 : std_logic_vector(5 downto 0) := "101100"; +- constant UDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "101101"; +- constant UDQS_WAIT1 : std_logic_vector(5 downto 0) := "101110"; +- constant UDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "101111"; +- constant UDQS_WAIT2 : std_logic_vector(5 downto 0) := "110000"; +- constant START_DYN_CAL : std_logic_vector(5 downto 0) := "110001"; +- constant WRITE_CALIBRATE : std_logic_vector(5 downto 0) := "110010"; +- constant WAIT9 : std_logic_vector(5 downto 0) := "110011"; +- constant READ_MAX_VALUE : std_logic_vector(5 downto 0) := "110100"; +- constant WAIT10 : std_logic_vector(5 downto 0) := "110101"; +- constant ANALYZE_MAX_VALUE : std_logic_vector(5 downto 0) := "110110"; +- constant FIRST_DYN_CAL : std_logic_vector(5 downto 0) := "110111"; +- constant INCREMENT : std_logic_vector(5 downto 0) := "111000"; +- constant DECREMENT : std_logic_vector(5 downto 0) := "111001"; +- constant DONE : std_logic_vector(5 downto 0) := "111010"; +- --constant INCREMENT_TA : std_logic_vector(5 downto 0) := "111011"; ++ constant OFF_RZQ_PTERM : std_logic_vector(5 downto 0) := "010010"; ++ constant WAIT7 : std_logic_vector(5 downto 0) := "010011"; ++ constant OFF_ZIO_NTERM : std_logic_vector(5 downto 0) := "010100"; ++ constant WAIT8 : std_logic_vector(5 downto 0) := "010101"; ++ constant RST_DELAY : std_logic_vector(5 downto 0) := "010110"; ++ constant START_DYN_CAL_PRE : std_logic_vector(5 downto 0) := "010111"; ++ constant WAIT_FOR_UODONE : std_logic_vector(5 downto 0) := "011000"; ++ constant LDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "011001"; ++ constant LDQS_WAIT1 : std_logic_vector(5 downto 0) := "011010"; ++ constant LDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "011011"; ++ constant LDQS_WAIT2 : std_logic_vector(5 downto 0) := "011100"; ++ constant UDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "011101"; ++ constant UDQS_WAIT1 : std_logic_vector(5 downto 0) := "011110"; ++ constant UDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "011111"; ++ constant UDQS_WAIT2 : std_logic_vector(5 downto 0) := "100000"; ++ constant START_DYN_CAL : std_logic_vector(5 downto 0) := "100001"; ++ constant WRITE_CALIBRATE : std_logic_vector(5 downto 0) := "100010"; ++ constant WAIT9 : std_logic_vector(5 downto 0) := "100011"; ++ constant READ_MAX_VALUE : std_logic_vector(5 downto 0) := "100100"; ++ constant WAIT10 : std_logic_vector(5 downto 0) := "100101"; ++ constant ANALYZE_MAX_VALUE : std_logic_vector(5 downto 0) := "100110"; ++ constant FIRST_DYN_CAL : std_logic_vector(5 downto 0) := "100111"; ++ constant INCREMENT : std_logic_vector(5 downto 0) := "101000"; ++ constant DECREMENT : std_logic_vector(5 downto 0) := "101001"; ++ constant DONE : std_logic_vector(5 downto 0) := "101010"; + + constant RZQ : std_logic_vector(1 downto 0) := "00"; + constant ZIO : std_logic_vector(1 downto 0) := "01"; +@@ -315,12 +288,10 @@ + constant DIV : integer := 4; + + constant PNSKEW : std_logic := '1'; -- Default is 1'b1. Change to 1'b0 if PSKEW and NSKEW are not required +- constant PNSKEWDQS : std_logic := '1'; +- +- constant MULT_S : integer := 9; +- constant DIV_S : integer := 8; +- constant MULT_W : integer := 7; +- constant DIV_W : integer := 8; ++ constant PSKEW_MULT : integer := 9; ++ constant PSKEW_DIV : integer := 8; ++ constant NSKEW_MULT : integer := 7; ++ constant NSKEW_DIV : integer := 8; + + constant DQS_NUMERATOR : integer := 3; + constant DQS_DENOMINATOR : integer := 8; +@@ -329,23 +300,11 @@ + -- 3 for three eighths + + constant RST_CNT : std_logic_vector(9 downto 0) := "0000010000"; ++ constant TZQINIT_MAXCNT : std_logic_vector(9 downto 0) := C_MEM_TZQINIT_MAXCNT + RST_CNT; + + constant IN_TERM_PASS : std_logic := '0'; + constant DYN_CAL_PASS : std_logic := '1'; + +- function TZQINIT_MAXCNT_W return std_logic_vector is +- variable temp : std_logic_vector(9 downto 0) := (others=>'0'); +- begin +- if (C_MEM_TYPE = "DDR3") then +- temp := C_MEM_TZQINIT_MAXCNT + RST_CNT; +- else +- temp := 8 + RST_CNT; +- end if; +- return temp(9 downto 0); +- end function; +- +- constant TZQINIT_MAXCNT : std_logic_vector(9 downto 0) := TZQINIT_MAXCNT_W; +- + component iodrp_mcb_controller is + port ( + memcell_address : in std_logic_vector(7 downto 0); +@@ -387,15 +346,11 @@ + end component; + + signal P_Term : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term : std_logic_vector(6 downto 0) := "0000000"; +- signal P_Term_s : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term_s : std_logic_vector(6 downto 0) := "0000000"; +- signal P_Term_w : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term_w : std_logic_vector(6 downto 0) := "0000000"; ++ signal N_Term : std_logic_vector(6 downto 0) := "0000000"; + signal P_Term_Prev : std_logic_vector(5 downto 0) := "000000"; + signal N_Term_Prev : std_logic_vector(6 downto 0) := "0000000"; + +- signal STATE : std_logic_vector(5 downto 0); ++ signal STATE : std_logic_vector(5 downto 0) := START; + signal IODRPCTRLR_MEMCELL_ADDR : std_logic_vector(7 downto 0); + signal IODRPCTRLR_WRITE_DATA : std_logic_vector(7 downto 0); + signal Active_IODRP : std_logic_vector(1 downto 0); +@@ -411,7 +366,7 @@ + signal count : std_logic_vector(5 downto 0) := "000000"; -- counter for adding 18 extra clock cycles after setting Calibrate bit + signal counter_en : std_logic := '0'; -- counter enable for "count" + signal First_Dyn_Cal_Done : std_logic := '0'; -- flag - high after the very first dynamic calibration is done +- signal START_BROADCAST : std_logic ; -- Trigger to start Broadcast to IODRP2_MCBs to set Input Impedance - ++ signal START_BROADCAST : std_logic := '1'; -- Trigger to start Broadcast to IODRP2_MCBs to set Input Impedance - + -- state machine will wait for this to be high + signal DQS_DELAY_INITIAL : std_logic_vector(7 downto 0) := "00000000"; + signal DQS_DELAY : std_logic_vector(7 downto 0); -- contains the latest values written to LDQS and UDQS Input Delays +@@ -474,24 +429,15 @@ + signal MCB_UISDI_xilinx11 : std_logic; + signal MCB_UICS_xilinx6 : std_logic; + signal MCB_UIBROADCAST_xilinx4 : std_logic; +- signal MCB_UIADDR_int : std_logic_vector(4 downto 0); ++ signal MCB_UIADDR_xilinx3 : std_logic_vector(4 downto 0); + signal MCB_UIDONECAL_xilinx7 : std_logic; + signal MCB_UIREAD_xilinx10 : std_logic; + signal SELFREFRESH_MODE_xilinx11 : std_logic; + signal Max_Value_int : std_logic_vector(7 downto 0); + signal Rst_condition1 : std_logic; +- --signal Rst_condition2 : std_logic; ++ signal Rst_condition2 : std_logic; + signal non_violating_rst : std_logic; + signal WAIT_200us_COUNTER : std_logic_vector(15 downto 0); +- signal WaitTimer : std_logic_vector(7 downto 0); +- signal WarmEnough : std_logic; +- signal WaitCountEnable : std_logic; +- signal State_Start_DynCal_R1 : std_logic; +- signal State_Start_DynCal : std_logic; +- +- signal pre_sysrst_minpulse_width_ok : std_logic; +- signal pre_sysrst_cnt : std_logic_vector(3 downto 0); +- + -- This function multiplies by a constant MULT and then divides by the DIV constant + function Mult_Divide (Input : std_logic_vector(7 downto 0); MULT : integer ; DIV : integer ) return std_logic_vector is + variable Result : integer := 0; +@@ -505,19 +451,9 @@ + return temp(7 downto 0); + end function Mult_Divide; + +- +- + attribute syn_preserve : boolean; + attribute syn_preserve of P_Term : signal is TRUE; + attribute syn_preserve of N_Term : signal is TRUE; +- attribute syn_preserve of P_Term_s : signal is TRUE; +- attribute syn_preserve of N_Term_s : signal is TRUE; +- attribute syn_preserve of P_Term_w : signal is TRUE; +- attribute syn_preserve of N_Term_w : signal is TRUE; +- +- +- +- + attribute syn_preserve of P_Term_Prev : signal is TRUE; + attribute syn_preserve of N_Term_Prev : signal is TRUE; + attribute syn_preserve of IODRPCTRLR_MEMCELL_ADDR : signal is TRUE; +@@ -530,18 +466,6 @@ + + begin + +- +--- move the default assignment here to make FORMALITY happy. +- +- START_BROADCAST <= '1'; +- MCB_RECAL <= '0'; +- MCB_UIDQLOWERDEC <= '0'; +- MCB_UIADDR <= MCB_UIADDR_int; +- MCB_UIDQLOWERINC <= '0'; +- MCB_UIDQUPPERDEC <= '0'; +- MCB_UIDQUPPERINC <= '0'; +- +- + Max_Value <= Max_Value_int; + -- Drive referenced outputs + IODRP_ADD <= IODRP_ADD_xilinx0; +@@ -550,6 +474,7 @@ + MCB_UISDI <= MCB_UISDI_xilinx11; + MCB_UICS <= MCB_UICS_xilinx6; + MCB_UIBROADCAST <= MCB_UIBROADCAST_xilinx4; ++ MCB_UIADDR <= MCB_UIADDR_xilinx3; + MCB_UIDONECAL <= MCB_UIDONECAL_xilinx7; + MCB_UIREAD <= MCB_UIREAD_xilinx10; + SELFREFRESH_MODE <= SELFREFRESH_MODE_xilinx11; +@@ -607,7 +532,7 @@ + cmd_valid => MCB_CMD_VALID, + rdy_busy_n => MCB_RDY_BUSY_N, + use_broadcast => MCB_USE_BKST, +- drp_ioi_addr => MCB_UIADDR_int, ++ drp_ioi_addr => MCB_UIADDR_xilinx3, + sync_rst => RST_reg, + DRP_CLK => UI_CLK, + DRP_CS => MCB_UICS_xilinx6, +@@ -618,13 +543,10 @@ + MCB_UIREAD => MCB_UIREAD_xilinx10 + ); + ++ init_sequence: if (C_SIMULATION = "FALSE") generate + process (UI_CLK, RST) begin + if (RST = '1') then +- if (C_SIMULATION = "TRUE") then +- WAIT_200us_COUNTER <= X"7FF0"; +- else + WAIT_200us_COUNTER <= (others => '0'); +- end if; + elsif (UI_CLK'event and UI_CLK = '1') then + if (WAIT_200us_COUNTER(15) = '1') then + WAIT_200us_COUNTER <= WAIT_200us_COUNTER; +@@ -633,15 +555,16 @@ + end if; + end if; + end process; ++ end generate; + +- -- init_sequence_skip: if (C_SIMULATION = "TRUE") generate +- -- WAIT_200us_COUNTER <= X"FFFF"; +- -- process +- -- begin +- -- report "The 200 us wait period required before CKE goes active has been skipped in Simulation"; +- -- wait; +- -- end process; +- -- end generate; ++ init_sequence_skip: if (C_SIMULATION = "TRUE") generate ++ WAIT_200us_COUNTER <= X"FFFF"; ++ process ++ begin ++ report "The 200 us wait period required before CKE goes active has been skipped in Simulation"; ++ wait; ++ end process; ++ end generate; + + + gen_CKE_Train_a: if (C_MEM_TYPE = "DDR2") generate +@@ -653,8 +576,6 @@ + CKE_Train <= '0'; + elsif (WAIT_200us_COUNTER(15) = '1' and MCB_UODONECAL = '0') then + CKE_Train <= '1'; +- else +- CKE_Train <= '0'; + end if; + end if; + end process; +@@ -671,20 +592,19 @@ + --******************************************** + -- PLL_LOCK and RST signals + --******************************************** +- --MCB_SYSRST <= Pre_SYSRST or RST_reg; -- Pre_SYSRST is generated from the STATE state machine, and is OR'd with RST_reg input to drive MCB's ++ MCB_SYSRST <= Pre_SYSRST or RST_reg; -- Pre_SYSRST is generated from the STATE state machine, and is OR'd with RST_reg input to drive MCB's + -- SYSRST pin (MCB_SYSRST) +- + rst_tmp <= not(SELFREFRESH_MODE_xilinx11) and not(PLL_LOCK_R2); -- rst_tmp becomes 1 if you lose Lock and the device is not in SUSPEND + + process (UI_CLK, RST) begin + if (RST = '1') then +- --Block_Reset <= '0'; +- --RstCounter <= (others => '0'); +- --elsif (UI_CLK'event and UI_CLK = '1') then +- -- if (rst_tmp = '1') then -- this is to deal with not allowing the user-reset "RST" to violate TZQINIT_MAXCNT (min time between resets to DDR3) ++ Block_Reset <= '0'; ++ RstCounter <= (others => '0'); ++ elsif (UI_CLK'event and UI_CLK = '1') then ++ if (rst_tmp = '1') then -- this is to deal with not allowing the user-reset "RST" to violate TZQINIT_MAXCNT (min time between resets to DDR3) + Block_Reset <= '0'; + RstCounter <= (others => '0'); +- elsif (UI_CLK'event and UI_CLK = '1') then ++ else + Block_Reset <= '0'; -- default to allow STATE to move out of RST_DELAY state + if (Pre_SYSRST = '1') then + RstCounter <= RST_CNT; -- whenever STATE wants to reset the MCB, set RstCounter to h10 +@@ -695,14 +615,11 @@ + end if; + end if; + end if; +- --end if; ++ end if; + end process; +- +- -- Rst_contidtion1 is to make sure RESET will not happen again within TZQINIT_MAXCNT +- non_violating_rst <= RST and Rst_condition1; +- MCB_SYSRST <= Pre_SYSRST; + +- process (UI_CLK) begin ++ non_violating_rst <= RST and Rst_condition1; ++ process (UI_CLK) begin + if (UI_CLK'event and UI_CLK = '1') then + if (RstCounter >= TZQINIT_MAXCNT) then + Rst_condition1 <= '1'; +@@ -712,31 +629,18 @@ + end if; + end process; + +--- -- non_violating_rst asserts whenever (system-level reset) RST is asserted but must be after TZQINIT_MAXCNT is reached (min-time between resets for DDR3) +--- -- After power stablizes, we will hold MCB in reset state for at least 200us before beginning initialization process. +--- -- If the PLL loses lock during normal operation, no ui_clk will be present because mcb_drp_clk is from a BUFGCE which +--- is gated by pll's lock signal. When the PLL locks again, the RST_reg stays asserted for at least 200 us which +--- will cause MCB to reset and reinitialize the memory afterwards. +--- -- During SUSPEND operation, the PLL will lose lock but non_violating_rst remains low (de-asserted) and WAIT_200us_COUNTER stays at +--- its terminal count. The PLL_LOCK input does not come direct from PLL, rather it is driven by gated_pll_lock from mcb_raw_wrapper module +--- The gated_pll_lock in the mcb_raw_wrapper does not de-assert during SUSPEND operation, hence PLL_LOCK will not de-assert, and the soft calibration +--- state machine will not reset during SUSPEND. +--- -- RST_reg is the control signal that resets the mcb_soft_calibration's State Machine. The MCB_SYSRST is now equal to +--- Pre_SYSRST. When State Machine is performing "INPUT Termination Calibration", it holds the MCB in reset by assertign MCB_SYSRST. +--- It will deassert the MCB_SYSRST so that it can grab the bus to broadcast the P and N term value to all of the DQ pins. Once the calibrated INPUT +--- termination is set, the State Machine will issue another short MCB_SYSRST so that MCB will use the tuned input termination during DQS preamble calibration. + + +- --process (UI_CLK) begin +- -- if (UI_CLK'event and UI_CLK = '1') then +- -- +- -- if (RstCounter < RST_CNT) then +- -- Rst_condition2 <= '1'; +- -- else +- -- Rst_condition2 <= '0'; +- -- end if; +- -- end if; +- --end process; ++ process (UI_CLK) begin ++ if (UI_CLK'event and UI_CLK = '1') then ++ ++ if (RstCounter < RST_CNT) then ++ Rst_condition2 <= '1'; ++ else ++ Rst_condition2 <= '0'; ++ end if; ++ end if; ++ end process; + + process (UI_CLK, non_violating_rst) begin + if (non_violating_rst = '1') then +@@ -745,47 +649,18 @@ + if (WAIT_200us_COUNTER(15) = '0') then + RST_reg <= '1'; + else +- --RST_reg <= Rst_condition2 or rst_tmp; -- insures RST_reg is at least h10 pulses long +- RST_reg <= rst_tmp; -- insures RST_reg is at least h10 pulses long ++ RST_reg <= Rst_condition2 or rst_tmp; -- insures RST_reg is at least h10 pulses long + end if; + end if; + end process; + +---************************************************************* +--- Stretching the pre_sysrst to satisfy the minimum pulse width +---************************************************************* +- +-process (UI_CLK) begin +-if (UI_CLK'event and UI_CLK = '1') then +- if (STATE = START_DYN_CAL_PRE) then +- pre_sysrst_cnt <= pre_sysrst_cnt + '1'; +- else +- pre_sysrst_cnt <= (others=>'0'); +- end if; +-end if; +-end process; +- +-pre_sysrst_minpulse_width_ok <= pre_sysrst_cnt(3); +- ++ + --******************************************** + -- SUSPEND Logic + --******************************************** +- process (UI_CLK,RST) ++ process (UI_CLK) + begin +- if (RST = '1') then +- +- SELFREFRESH_MCB_MODE_R1 <= '0'; +- SELFREFRESH_MCB_MODE_R2 <= '0'; +- SELFREFRESH_MCB_MODE_R3 <= '0'; +- +- SELFREFRESH_REQ_R1 <= '0'; +- SELFREFRESH_REQ_R2 <= '0'; +- SELFREFRESH_REQ_R3 <= '0'; +- +- PLL_LOCK_R1 <= '0'; +- PLL_LOCK_R2 <= '0'; +- +- elsif (UI_CLK'event and UI_CLK = '1') then ++ if (UI_CLK'event and UI_CLK = '1') then + -- SELFREFRESH_MCB_MODE is clocked by sysclk_2x_180 + SELFREFRESH_MCB_MODE_R1 <= SELFREFRESH_MCB_MODE; + SELFREFRESH_MCB_MODE_R2 <= SELFREFRESH_MCB_MODE_R1; +@@ -810,10 +685,9 @@ + if (UI_CLK'event and UI_CLK = '1') then + if (RST = '1') then + SELFREFRESH_MCB_REQ <= '0'; +- --elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R3 = '0') and (STATE = START_DYN_CAL)) then +- elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R3 = '0')) then ++ elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R1 = '0') and (STATE = START_DYN_CAL)) then + SELFREFRESH_MCB_REQ <= '0'; +- elsif ((STATE = START_DYN_CAL) and (SELFREFRESH_REQ_R3 = '1')) then ++ elsif ((STATE = START_DYN_CAL) and (SELFREFRESH_REQ_R1 = '1')) then + SELFREFRESH_MCB_REQ <= '1'; + end if; + end if; +@@ -859,10 +733,6 @@ + + -- SELFREFRESH_MCB_MODE deasserted status is hold off + -- until Soft_Calib has at least done one loop of DQS update. +--- New logic WarmeEnough is added to make sure PLL_Lock is lockec and all IOs stable before +--- deassert the status of MCB's SELFREFRESH_MODE. This is to ensure all IOs are stable before +--- user logic sending new commands to MCB. +- + process (UI_CLK) + begin + if (UI_CLK'event and UI_CLK = '1') then +@@ -870,76 +740,12 @@ + SELFREFRESH_MODE_xilinx11 <= '0'; + elsif (SELFREFRESH_MCB_MODE_R2 = '1') then + SELFREFRESH_MODE_xilinx11 <= '1'; +- elsif (WarmEnough = '1') then +- SELFREFRESH_MODE_xilinx11 <= '0'; +- end if; +- end if; +- end process; +- +- +- +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- WaitCountEnable <= '0'; +- elsif (SELFREFRESH_REQ_R2 = '0' and SELFREFRESH_REQ_R1 = '1') then +- WaitCountEnable <= '0'; + elsif ((PERFORM_START_DYN_CAL_AFTER_SELFREFRESH = '0') and (PERFORM_START_DYN_CAL_AFTER_SELFREFRESH_R1 = '1')) then +- WaitCountEnable <= '1'; +- else +- WaitCountEnable <= WaitCountEnable; ++ SELFREFRESH_MODE_xilinx11 <= '0'; + end if; + end if; + end process; + +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- State_Start_DynCal <= '0'; +- elsif (STATE = START_DYN_CAL) then +- State_Start_DynCal <= '1'; +- else +- State_Start_DynCal <= '0'; +- end if; +- end if; +- end process; +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- State_Start_DynCal_R1 <= '0'; +- else +- State_Start_DynCal_R1 <= State_Start_DynCal; +- end if; +- end if; +- end process; +- +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- WaitTimer <= (others => '0'); +- WarmEnough <= '1'; +- elsif ((SELFREFRESH_REQ_R2 = '0') and (SELFREFRESH_REQ_R1 = '1')) then +- WaitTimer <= (others => '0'); +- WarmEnough <= '0'; +- elsif (WaitTimer = X"04") then +- WaitTimer <= WaitTimer ; +- WarmEnough <= '1'; +- elsif (WaitCountEnable = '1') then +- WaitTimer <= WaitTimer + '1'; +- else +- WaitTimer <= WaitTimer ; +- end if; +- end if; +- end process; +- + --******************************************** + --Comparitor for Dynamic Calibration circuit + --******************************************** +@@ -1014,7 +820,7 @@ + if (UI_CLK'event and UI_CLK = '1') then + if (RST_reg = '1') then -- Synchronous reset + MCB_CMD_VALID <= '0'; +- MCB_UIADDR_int <= "00000"; -- take control of UI/UO port ++ MCB_UIADDR_xilinx3 <= "00000"; -- take control of UI/UO port + MCB_UICMDEN <= '1'; -- tells MCB that it is in Soft Cal. + MCB_UIDONECAL_xilinx7 <= '0'; + MCB_USE_BKST <= '0'; +@@ -1027,11 +833,6 @@ + IODRPCTRLR_USE_BKST <= '0'; + P_Term <= "000000"; + N_Term <= "0000000"; +- P_Term_s <= "000000"; +- N_Term_w <= "0000000"; +- P_Term_w <= "000000"; +- N_Term_s <= "0000000"; +- + P_Term_Prev <= "000000"; + N_Term_Prev <= "0000000"; + Active_IODRP <= RZQ; +@@ -1079,10 +880,7 @@ + Pre_SYSRST <= '1'; -- keeps MCB in reset + LastPass_DynCal <= IN_TERM_PASS; + if (SKIP_IN_TERM_CAL = 1) then +- --STATE <= WRITE_CALIBRATE; +- STATE <= WAIT_FOR_START_BROADCAST; +- P_Term <= "000000"; +- N_Term <= "0000000"; ++ STATE <= WRITE_CALIBRATE; + elsif (IODRPCTRLR_RDY_BUSY_N = '1') then + STATE <= LOAD_RZQ_NTERM; + else +@@ -1135,8 +933,7 @@ + STATE <= LOAD_RZQ_PTERM; + + when MULTIPLY_DIVIDE => -- h06 +- -- 13/4/2011 compensate the added sync FF +- P_Term <= Mult_Divide(("00" & (P_Term - '1')),MULT,DIV)(5 downto 0); ++ P_Term <= Mult_Divide(("00" & P_Term),MULT,DIV)(5 downto 0); + STATE <= LOAD_ZIO_PTERM; + + when LOAD_ZIO_PTERM => --h07 +@@ -1188,13 +985,8 @@ + STATE <= LOAD_ZIO_NTERM; + + when SKEW => -- h0C +- +- P_Term_s <= Mult_Divide(("00" & P_Term), MULT_S, DIV_S)(5 downto 0); +- N_Term_w <= Mult_Divide(('0' & (N_Term-'1')), MULT_W, DIV_W)(6 downto 0); +- P_Term_w <= Mult_Divide(("00" & P_Term), MULT_W, DIV_W)(5 downto 0); +- N_Term_s <= Mult_Divide(('0' & (N_Term-'1')), MULT_S, DIV_S)(6 downto 0); +- P_Term <= Mult_Divide(("00" & P_Term), MULT_S, DIV_S)(5 downto 0); +- N_Term <= Mult_Divide(('0' & (N_Term-'1')), MULT_W, DIV_W)(6 downto 0); ++ P_Term <= Mult_Divide(("00" & P_Term), PSKEW_MULT, PSKEW_DIV)(5 downto 0); ++ N_Term <= Mult_Divide(('0' & N_Term), NSKEW_MULT, NSKEW_DIV)(6 downto 0); + STATE <= WAIT_FOR_START_BROADCAST; + + when WAIT_FOR_START_BROADCAST => --h0D +@@ -1202,7 +994,7 @@ + -- keeping the MCB in calibration mode + Active_IODRP <= MCB_PORT; + if ((START_BROADCAST and IODRPCTRLR_RDY_BUSY_N) = '1') then +- if ((P_Term /= P_Term_Prev) or (SKIP_IN_TERM_CAL = 1)) then ++ if (P_Term /= P_Term_Prev) then + STATE <= BROADCAST_PTERM; + P_Term_Prev <= P_Term; + elsif (N_Term /= N_Term_Prev) then +@@ -1272,184 +1064,10 @@ + STATE <= WAIT6; -- wait for a Refresh cycle + end if; + else +- -- if (PNSKEWDQS = '1') then +- STATE <= LDQS_CLK_WRITE_P_TERM; +- -- else +- -- STATE <= OFF_RZQ_PTERM; +- -- end if; +- end if; +- +--- ********************* +- when LDQS_CLK_WRITE_P_TERM => -- h12 +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_w; +- MCB_UIADDR_int <= IOI_LDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_CLK_WRITE_P_TERM; +- else +- STATE <= LDQS_CLK_P_TERM_WAIT; +- end if; +- +- +- when LDQS_CLK_P_TERM_WAIT => --7'h13 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_CLK_P_TERM_WAIT; +- else +- STATE <= LDQS_CLK_WRITE_N_TERM; +- end if; +- +- when LDQS_CLK_WRITE_N_TERM => --7'h14 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_s; +- MCB_UIADDR_int <= IOI_LDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_CLK_WRITE_N_TERM; +- else +- STATE <= LDQS_CLK_N_TERM_WAIT; +- end if; +- +- --** +- when LDQS_CLK_N_TERM_WAIT => --7'h15 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_CLK_N_TERM_WAIT; +- else +- STATE <= LDQS_PIN_WRITE_P_TERM; +- end if; +- +- +- when LDQS_PIN_WRITE_P_TERM => --7'h16 +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_s; +- MCB_UIADDR_int <= IOI_LDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_PIN_WRITE_P_TERM; +- else +- STATE <= LDQS_PIN_P_TERM_WAIT; +- end if; +- +- +- when LDQS_PIN_P_TERM_WAIT => --7'h17 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_PIN_P_TERM_WAIT; +- else +- STATE <= LDQS_PIN_WRITE_N_TERM; +- end if; +- +- +- when LDQS_PIN_WRITE_N_TERM => --7'h18 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_w; +- MCB_UIADDR_int <= IOI_LDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_PIN_WRITE_N_TERM; +- else +- STATE <= LDQS_PIN_N_TERM_WAIT; +- end if; +- +- +- when LDQS_PIN_N_TERM_WAIT => --7'h19 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_PIN_N_TERM_WAIT; +- else +- STATE <= UDQS_CLK_WRITE_P_TERM; +- end if; +- +- +- +- when UDQS_CLK_WRITE_P_TERM => --7'h1A +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_w; +- MCB_UIADDR_int <= IOI_UDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_CLK_WRITE_P_TERM; +- else +- STATE <= UDQS_CLK_P_TERM_WAIT; +- end if; +- +- +- when UDQS_CLK_P_TERM_WAIT => --7'h1B +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_CLK_P_TERM_WAIT; +- else +- STATE <= UDQS_CLK_WRITE_N_TERM; +- end if; +- +- +- when UDQS_CLK_WRITE_N_TERM => --7'h1C +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_s; +- MCB_UIADDR_int <= IOI_UDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_CLK_WRITE_N_TERM; +- else +- STATE <= UDQS_CLK_N_TERM_WAIT; +- end if; +- +- when UDQS_CLK_N_TERM_WAIT => --7'h1D +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_CLK_N_TERM_WAIT; +- else +- STATE <= UDQS_PIN_WRITE_P_TERM; +- end if; +- +- +- +- when UDQS_PIN_WRITE_P_TERM => --7'h1E +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_s; +- MCB_UIADDR_int <= IOI_UDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_PIN_WRITE_P_TERM; +- else +- STATE <= UDQS_PIN_P_TERM_WAIT; +- end if; +- +- +- when UDQS_PIN_P_TERM_WAIT => --7'h1F +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_PIN_P_TERM_WAIT; +- else +- STATE <= UDQS_PIN_WRITE_N_TERM; +- end if; +- +- when UDQS_PIN_WRITE_N_TERM => --7'h20 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_w; +- MCB_UIADDR_int <= IOI_UDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_PIN_WRITE_N_TERM; +- else +- STATE <= UDQS_PIN_N_TERM_WAIT; +- end if; +- +- +- when UDQS_PIN_N_TERM_WAIT => --7'h21 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_PIN_N_TERM_WAIT; +- else +- STATE <= OFF_RZQ_PTERM; ++ STATE <= OFF_RZQ_PTERM; + end if; +- +--- ********************* + +- +- when OFF_RZQ_PTERM => -- h22 ++ when OFF_RZQ_PTERM => -- h12 + Active_IODRP <= RZQ; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= PTerm; +@@ -1464,14 +1082,14 @@ + STATE <= WAIT7; + end if; + +- when WAIT7 => -- h23 ++ when WAIT7 => -- h13 + if ((not(IODRPCTRLR_RDY_BUSY_N)) = '1') then + STATE <= WAIT7; + else + STATE <= OFF_ZIO_NTERM; + end if; + +- when OFF_ZIO_NTERM => -- h24 ++ when OFF_ZIO_NTERM => -- h14 + Active_IODRP <= ZIO; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= NTerm; +@@ -1483,7 +1101,7 @@ + STATE <= WAIT8; + end if; + +- when WAIT8 => -- h25 ++ when WAIT8 => -- h15 + if (IODRPCTRLR_RDY_BUSY_N = '0') then + STATE <= WAIT8; + else +@@ -1494,8 +1112,8 @@ + end if; + end if; + +- when RST_DELAY => -- h26 +- --MCB_UICMDEN <= '0'; -- release control of UI/UO port ++ when RST_DELAY => -- h16 ++ MCB_UICMDEN <= '0'; -- release control of UI/UO port + if (Block_Reset = '1') then -- this ensures that more than 512 clock cycles occur since the last reset after MCB_WRITE_CALIBRATE ??? + STATE <= RST_DELAY; + else +@@ -1505,18 +1123,18 @@ + --*************************** + --DYNAMIC CALIBRATION PORTION + --*************************** +- when START_DYN_CAL_PRE => -- h27 ++ when START_DYN_CAL_PRE => -- h17 + LastPass_DynCal <= IN_TERM_PASS; + MCB_UICMDEN <= '0'; -- release UICMDEN + MCB_UIDONECAL_xilinx7 <= '1'; -- release UIDONECAL - MCB will now initialize. + Pre_SYSRST <= '1'; -- SYSRST pulse + if (CALMODE_EQ_CALIBRATION = '0') then -- if C_MC_CALIBRATION_MODE is set to NOCALIBRATION + STATE <= START_DYN_CAL; -- we'll skip setting the DQS delays manually +- elsif (pre_sysrst_minpulse_width_ok = '1') then ++ else + STATE <= WAIT_FOR_UODONE; + end if; + +- when WAIT_FOR_UODONE => -- h28 ++ when WAIT_FOR_UODONE => -- h18 + Pre_SYSRST <= '0'; -- SYSRST pulse + if ((IODRPCTRLR_RDY_BUSY_N and MCB_UODONECAL) = '1')then --IODRP Controller needs to be ready, & MCB needs to be done with hard calibration + MCB_UICMDEN <= '1'; -- grab UICMDEN +@@ -1526,11 +1144,11 @@ + STATE <= WAIT_FOR_UODONE; + end if; + +- when LDQS_WRITE_POS_INDELAY => -- h29 ++ when LDQS_WRITE_POS_INDELAY => -- h19 + IODRPCTRLR_MEMCELL_ADDR <= PosEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_LDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_LDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1') then + STATE <= LDQS_WRITE_POS_INDELAY; +@@ -1538,18 +1156,18 @@ + STATE <= LDQS_WAIT1; + end if; + +- when LDQS_WAIT1 => -- h2A ++ when LDQS_WAIT1 => -- h1A + if (MCB_RDY_BUSY_N = '0')then + STATE <= LDQS_WAIT1; + else + STATE <= LDQS_WRITE_NEG_INDELAY; + end if; + +- when LDQS_WRITE_NEG_INDELAY => -- h2B ++ when LDQS_WRITE_NEG_INDELAY => -- h1B + IODRPCTRLR_MEMCELL_ADDR <= NegEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_LDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_LDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= LDQS_WRITE_NEG_INDELAY; +@@ -1557,18 +1175,18 @@ + STATE <= LDQS_WAIT2; + end if; + +- when LDQS_WAIT2 => -- 7'h2C ++ when LDQS_WAIT2 => -- 7'h1C + if(MCB_RDY_BUSY_N = '0')then + STATE <= LDQS_WAIT2; + else + STATE <= UDQS_WRITE_POS_INDELAY; + end if; + +- when UDQS_WRITE_POS_INDELAY => -- 7'h2D ++ when UDQS_WRITE_POS_INDELAY => -- 7'h1D + IODRPCTRLR_MEMCELL_ADDR <= PosEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_UDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_UDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= UDQS_WRITE_POS_INDELAY; +@@ -1576,18 +1194,18 @@ + STATE <= UDQS_WAIT1; + end if; + +- when UDQS_WAIT1 => -- 7'h2E ++ when UDQS_WAIT1 => -- 7'h1E + if (MCB_RDY_BUSY_N = '0')then + STATE <= UDQS_WAIT1; + else + STATE <= UDQS_WRITE_NEG_INDELAY; + end if; + +- when UDQS_WRITE_NEG_INDELAY => -- 7'h2F ++ when UDQS_WRITE_NEG_INDELAY => -- 7'h1F + IODRPCTRLR_MEMCELL_ADDR <= NegEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_UDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_UDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= UDQS_WRITE_NEG_INDELAY; +@@ -1595,7 +1213,7 @@ + STATE <= UDQS_WAIT2; + end if; + +- when UDQS_WAIT2 => -- 7'h30 ++ when UDQS_WAIT2 => -- 7'h20 + if (MCB_RDY_BUSY_N = '0')then + STATE <= UDQS_WAIT2; + else +@@ -1604,7 +1222,7 @@ + STATE <= START_DYN_CAL; + end if; + +- when START_DYN_CAL => -- h31 ++ when START_DYN_CAL => -- h21 + Pre_SYSRST <= '0'; -- SYSRST not driven + counter_inc <= (others => '0'); + counter_dec <= (others => '0'); +@@ -1624,7 +1242,7 @@ + STATE <= START_DYN_CAL; + end if; + +- when WRITE_CALIBRATE => -- h32 ++ when WRITE_CALIBRATE => -- h22 + Pre_SYSRST <= '0'; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= DelayControl; +@@ -1637,7 +1255,7 @@ + STATE <= WAIT9; + end if; + +- when WAIT9 => -- h33 ++ when WAIT9 => -- h23 + counter_en <= '1'; + if (count < "100110") then -- this adds approximately 22 extra clock cycles after WRITE_CALIBRATE + STATE <= WAIT9; +@@ -1645,7 +1263,7 @@ + STATE <= READ_MAX_VALUE; + end if; + +- when READ_MAX_VALUE => -- h34 ++ when READ_MAX_VALUE => -- h24 + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= MaxValue; + IODRPCTRLR_R_WB <= READ_MODE; +@@ -1656,7 +1274,7 @@ + STATE <= WAIT10; + end if; + +- when WAIT10 => -- h35 ++ when WAIT10 => -- h25 + if (IODRPCTRLR_RDY_BUSY_N = '0') then + STATE <= WAIT10; + else +@@ -1669,7 +1287,7 @@ + end if; + end if; + +- when ANALYZE_MAX_VALUE => -- h36 only do a Inc or Dec during a REFRESH cycle. ++ when ANALYZE_MAX_VALUE => -- h26 only do a Inc or Dec during a REFRESH cycle. + if (First_Dyn_Cal_Done = '0')then + STATE <= FIRST_DYN_CAL; + elsif ((Max_Value_int < Max_Value_Previous) and (Max_Value_Delta_Dn >= INCDEC_THRESHOLD)) then +@@ -1684,11 +1302,11 @@ + STATE <= START_DYN_CAL; + end if; + +- when FIRST_DYN_CAL => -- h37 ++ when FIRST_DYN_CAL => -- h27 + First_Dyn_Cal_Done <= '1'; -- set flag that the First Dynamic Calibration has been completed + STATE <= START_DYN_CAL; + +- when INCREMENT => -- h38 ++ when INCREMENT => -- h28 + STATE <= START_DYN_CAL; -- Default case: Inc is not high or no longer in REFRSH + MCB_UILDQSINC <= '0'; -- Default case: no inc or dec + MCB_UIUDQSINC <= '0'; -- Default case: no inc or dec +@@ -1712,7 +1330,7 @@ + STATE <= START_DYN_CAL; + end case; + +- when DECREMENT => -- h39 ++ when DECREMENT => -- h29 + STATE <= START_DYN_CAL; -- Default case: Dec is not high or no longer in REFRSH + MCB_UILDQSINC <= '0'; -- Default case: no inc or dec + MCB_UIUDQSINC <= '0'; -- Default case: no inc or dec +@@ -1738,7 +1356,7 @@ + end case; + end if; + +- when DONE => -- h3A ++ when DONE => -- h2A + Pre_SYSRST <= '0'; -- SYSRST cleared + MCB_UICMDEN <= '0'; -- release UICMDEN + STATE <= DONE; diff --git a/designs/leon3-gr-xc6s/memc3_infrastructure_patch.txt b/designs/leon3-gr-xc6s/memc3_infrastructure_patch.txt new file mode 100644 index 00000000..9b5bab81 --- /dev/null +++ b/designs/leon3-gr-xc6s/memc3_infrastructure_patch.txt @@ -0,0 +1,93 @@ +--- ./mig39/mig_39//user_design/rtl/memc3_infrastructure.vhd 2013-01-15 15:30:14.000000000 +0100 ++++ ./p/a/t/c/h/mig39/mig_39//user_design/rtl/memc3_infrastructure.vhd 2013-01-15 15:27:28.724788178 +0100 +@@ -77,6 +77,7 @@ + C_CLKOUT1_DIVIDE : integer := 1; + C_CLKOUT2_DIVIDE : integer := 16; + C_CLKOUT3_DIVIDE : integer := 8; ++ C_CLKOUT5_DIVIDE : integer := 8; + C_CLKFBOUT_MULT : integer := 2; + C_DIVCLK_DIVIDE : integer := 1 + +@@ -95,7 +96,10 @@ + mcb_drp_clk : out std_logic; + pll_ce_0 : out std_logic; + pll_ce_90 : out std_logic; +- pll_lock : out std_logic ++ pll_lock : out std_logic; ++ pll_lock0 : out std_logic; ++ clk_125 : out std_logic; ++ clk_100 : out std_logic + + ); + end entity; +@@ -130,6 +134,8 @@ + signal locked : std_logic; + signal bufpll_mcb_locked : std_logic; + signal mcb_drp_clk_sig : std_logic; ++ signal clk_125_in : std_logic; ++ signal clk_100_in : std_logic; + + attribute max_fanout : string; + attribute syn_maxfan : integer; +@@ -142,6 +148,7 @@ + + sys_rst <= not(sys_rst_i) when (C_RST_ACT_LOW /= 0) else sys_rst_i; + clk0 <= clk0_bufg; ++ pll_lock0 <= locked; + pll_lock <= bufpll_mcb_locked; + mcb_drp_clk <= mcb_drp_clk_sig; + +@@ -165,7 +172,8 @@ + --*********************************************************************** + -- SINGLE_ENDED input clock input buffers + --*********************************************************************** +- u_ibufg_sys_clk : IBUFG ++-- u_ibufg_sys_clk : IBUFG ++ u_ibufg_sys_clk : BUFG + port map ( + I => sys_clk, + O => sys_clk_ibufg +@@ -184,10 +192,10 @@ + CLKIN2_PERIOD => CLK_PERIOD_NS, + CLKOUT0_DIVIDE => C_CLKOUT0_DIVIDE, + CLKOUT1_DIVIDE => C_CLKOUT1_DIVIDE, +- CLKOUT2_DIVIDE => C_CLKOUT2_DIVIDE, ++ CLKOUT2_DIVIDE => 10, + CLKOUT3_DIVIDE => C_CLKOUT3_DIVIDE, +- CLKOUT4_DIVIDE => 1, +- CLKOUT5_DIVIDE => 1, ++ CLKOUT4_DIVIDE => 4, ++ CLKOUT5_DIVIDE => 5, + CLKOUT0_PHASE => 0.000, + CLKOUT1_PHASE => 180.000, + CLKOUT2_PHASE => 0.000, +@@ -232,8 +240,8 @@ + CLKOUT1 => clk_2x_180, + CLKOUT2 => clk0_bufg_in, + CLKOUT3 => mcb_drp_clk_bufg_in, +- CLKOUT4 => open, +- CLKOUT5 => open, ++ CLKOUT4 => clk_125_in, ++ CLKOUT5 => clk_100_in, + DO => open, + DRDY => open, + LOCKED => locked +@@ -258,6 +266,18 @@ + I => mcb_drp_clk_bufg_in, + CE => locked + ); ++ ++ U_BUFG_CLK2 : BUFG ++ port map ( ++ O => clk_125, ++ I => clk_125_in ++ ); ++ ++ U_BUFG_CLK3 : BUFG ++ port map ( ++ O => clk_100, ++ I => clk_100_in ++ ); + + process (mcb_drp_clk_sig, sys_rst) + begin diff --git a/designs/leon3-gr-xc6s/mig.diff b/designs/leon3-gr-xc6s/mig.diff index 41f74818..fd9028b8 100644 --- a/designs/leon3-gr-xc6s/mig.diff +++ b/designs/leon3-gr-xc6s/mig.diff @@ -1,60 +1,5 @@ -diff -Naur mig37/mig_37/user_design/rtl/memc3_infrastructure.vhd /home/jiri/ibm/vhdl/grlib/designs/leon3-gr-xc6s/mig37/mig_37/user_design/rtl/memc3_infrastructure.vhd ---- mig37/mig_37/user_design/rtl/memc3_infrastructure.vhd 2012-04-22 22:38:23.000000000 +0200 -+++ /home/jiri/ibm/vhdl/grlib/designs/leon3-gr-xc6s/mig37/mig_37/user_design/rtl/memc3_infrastructure.vhd 2012-04-22 22:41:09.259790939 +0200 -@@ -77,6 +77,7 @@ - C_CLKOUT1_DIVIDE : integer := 1; - C_CLKOUT2_DIVIDE : integer := 16; - C_CLKOUT3_DIVIDE : integer := 8; -+ C_CLKOUT5_DIVIDE : integer := 8; - C_CLKFBOUT_MULT : integer := 2; - C_DIVCLK_DIVIDE : integer := 1 - -@@ -95,7 +96,9 @@ - mcb_drp_clk : out std_logic; - pll_ce_0 : out std_logic; - pll_ce_90 : out std_logic; -- pll_lock : out std_logic -+ pll_lock : out std_logic; -+ clk_125 : out std_logic; -+ clkout5 : out std_logic - - ); - end entity; -@@ -164,7 +167,8 @@ - --*********************************************************************** - -- SINGLE_ENDED input clock input buffers - --*********************************************************************** -- u_ibufg_sys_clk : IBUFG -+-- u_ibufg_sys_clk : IBUFG -+ u_ibufg_sys_clk : BUFG - port map ( - I => sys_clk, - O => sys_clk_ibufg -@@ -185,8 +189,8 @@ - CLKOUT1_DIVIDE => C_CLKOUT1_DIVIDE, - CLKOUT2_DIVIDE => C_CLKOUT2_DIVIDE, - CLKOUT3_DIVIDE => C_CLKOUT3_DIVIDE, -- CLKOUT4_DIVIDE => 1, -- CLKOUT5_DIVIDE => 1, -+ CLKOUT4_DIVIDE => 4, -+ CLKOUT5_DIVIDE => C_CLKOUT5_DIVIDE, - CLKOUT0_PHASE => 0.000, - CLKOUT1_PHASE => 180.000, - CLKOUT2_PHASE => 0.000, -@@ -231,8 +235,8 @@ - CLKOUT1 => clk_2x_180, - CLKOUT2 => clk0_bufg_in, - CLKOUT3 => mcb_drp_clk_bufg_in, -- CLKOUT4 => open, -- CLKOUT5 => open, -+ CLKOUT4 => clk_125, -+ CLKOUT5 => clkout5, - DO => open, - DRDY => open, - LOCKED => locked -diff -Naur mig37/mig_37/user_design/rtl/mig_37.vhd /home/jiri/ibm/vhdl/grlib/designs/leon3-gr-xc6s/mig37/mig_37/user_design/rtl/mig_37.vhd ---- mig37/mig_37/user_design/rtl/mig_37.vhd 2012-04-22 22:38:24.000000000 +0200 -+++ /home/jiri/ibm/vhdl/grlib/designs/leon3-gr-xc6s/mig37/mig_37/user_design/rtl/mig_37.vhd 2012-04-22 22:41:49.776513469 +0200 +--- ./mig37/mig_37/user_design/rtl/mig_37.vhd 2013-01-15 16:04:40.000000000 +0100 ++++ ./p/a/t/c/h/mig37/mig_37/user_design/rtl/mig_37.vhd 2013-01-15 16:09:19.236761589 +0100 @@ -95,8 +95,9 @@ -- External memory data width. C3_MEM_ADDR_WIDTH : integer := 13; @@ -71,7 +16,7 @@ diff -Naur mig37/mig_37/user_design/rtl/mig_37.vhd /home/jiri/ibm/vhdl/grlib/des c3_clk0 : out std_logic; c3_rst0 : out std_logic; + clk_125 : out std_logic; -+ clkout5 : out std_logic; ++ clk_100 : out std_logic; mcb3_dram_dqs : inout std_logic; mcb3_dram_dqs_n : inout std_logic; mcb3_dram_ck : out std_logic; @@ -94,7 +39,7 @@ diff -Naur mig37/mig_37/user_design/rtl/mig_37.vhd /home/jiri/ibm/vhdl/grlib/des - mcb_drp_clk : out std_logic - + clk_125 : out std_logic; -+ clkout5 : out std_logic ++ clk_100 : out std_logic ); end component; @@ -117,7 +62,15 @@ diff -Naur mig37/mig_37/user_design/rtl/mig_37.vhd /home/jiri/ibm/vhdl/grlib/des signal c3_sys_clk_p : std_logic; signal c3_sys_clk_n : std_logic; -@@ -468,6 +474,7 @@ +@@ -457,7 +463,6 @@ + + c3_sys_clk_p <= '0'; + c3_sys_clk_n <= '0'; +- + memc3_infrastructure_inst : memc3_infrastructure + + generic map +@@ -468,6 +473,7 @@ C_CLKOUT1_DIVIDE => C3_CLKOUT1_DIVIDE, C_CLKOUT2_DIVIDE => C3_CLKOUT2_DIVIDE, C_CLKOUT3_DIVIDE => C3_CLKOUT3_DIVIDE, @@ -125,7 +78,7 @@ diff -Naur mig37/mig_37/user_design/rtl/mig_37.vhd /home/jiri/ibm/vhdl/grlib/des C_CLKFBOUT_MULT => C3_CLKFBOUT_MULT, C_DIVCLK_DIVIDE => C3_DIVCLK_DIVIDE, C_INCLK_PERIOD => C3_INCLK_PERIOD -@@ -483,10 +490,12 @@ +@@ -483,10 +489,12 @@ async_rst => c3_async_rst, sysclk_2x => c3_sysclk_2x, sysclk_2x_180 => c3_sysclk_2x_180, @@ -135,7 +88,100 @@ diff -Naur mig37/mig_37/user_design/rtl/mig_37.vhd /home/jiri/ibm/vhdl/grlib/des pll_lock => c3_pll_lock, - mcb_drp_clk => c3_mcb_drp_clk + clk_125 => clk_125, -+ clkout5 => clkout5 ++ clk_100 => clk_100 ); +--- ./mig37/mig_37/user_design/rtl/memc3_infrastructure.vhd 2013-01-15 16:04:40.000000000 +0100 ++++ ./p/a/t/c/h/mig37/mig_37/user_design/rtl/memc3_infrastructure.vhd 2013-01-15 16:07:09.836762961 +0100 +@@ -77,6 +77,7 @@ + C_CLKOUT1_DIVIDE : integer := 1; + C_CLKOUT2_DIVIDE : integer := 16; + C_CLKOUT3_DIVIDE : integer := 8; ++ C_CLKOUT5_DIVIDE : integer := 8; + C_CLKFBOUT_MULT : integer := 2; + C_DIVCLK_DIVIDE : integer := 1 + +@@ -95,7 +96,10 @@ + mcb_drp_clk : out std_logic; + pll_ce_0 : out std_logic; + pll_ce_90 : out std_logic; +- pll_lock : out std_logic ++ pll_lock : out std_logic; ++ pll_lock0 : out std_logic; ++ clk_125 : out std_logic; ++ clk_100 : out std_logic + + ); + end entity; +@@ -129,6 +133,8 @@ + signal locked : std_logic; + signal bufpll_mcb_locked : std_logic; + signal mcb_drp_clk_sig : std_logic; ++ signal clk_125_in : std_logic; ++ signal clk_100_in : std_logic; + + attribute max_fanout : string; + attribute syn_maxfan : integer; +@@ -141,6 +147,7 @@ + + sys_rst <= not(sys_rst_n) when (C_RST_ACT_LOW /= 0) else sys_rst_n; + clk0 <= clk0_bufg; ++ pll_lock0 <= locked; + pll_lock <= bufpll_mcb_locked; + mcb_drp_clk <= mcb_drp_clk_sig; + +@@ -164,7 +171,8 @@ + --*********************************************************************** + -- SINGLE_ENDED input clock input buffers + --*********************************************************************** +- u_ibufg_sys_clk : IBUFG ++-- u_ibufg_sys_clk : IBUFG ++ u_ibufg_sys_clk : BUFG + port map ( + I => sys_clk, + O => sys_clk_ibufg +@@ -183,10 +191,10 @@ + CLKIN2_PERIOD => CLK_PERIOD_NS, + CLKOUT0_DIVIDE => C_CLKOUT0_DIVIDE, + CLKOUT1_DIVIDE => C_CLKOUT1_DIVIDE, +- CLKOUT2_DIVIDE => C_CLKOUT2_DIVIDE, ++ CLKOUT2_DIVIDE => 10, + CLKOUT3_DIVIDE => C_CLKOUT3_DIVIDE, +- CLKOUT4_DIVIDE => 1, +- CLKOUT5_DIVIDE => 1, ++ CLKOUT4_DIVIDE => 4, ++ CLKOUT5_DIVIDE => 5, + CLKOUT0_PHASE => 0.000, + CLKOUT1_PHASE => 180.000, + CLKOUT2_PHASE => 0.000, +@@ -231,8 +239,8 @@ + CLKOUT1 => clk_2x_180, + CLKOUT2 => clk0_bufg_in, + CLKOUT3 => mcb_drp_clk_bufg_in, +- CLKOUT4 => open, +- CLKOUT5 => open, ++ CLKOUT4 => clk_125_in, ++ CLKOUT5 => clk_100_in, + DO => open, + DRDY => open, + LOCKED => locked +@@ -251,6 +259,18 @@ + I => mcb_drp_clk_bufg_in + ); + ++ U_BUFG_CLK2 : BUFG ++ port map ( ++ O => clk_125, ++ I => clk_125_in ++ ); ++ ++ U_BUFG_CLK3 : BUFG ++ port map ( ++ O => clk_100, ++ I => clk_100_in ++ ); ++ + process (clk0_bufg, sys_rst) + begin + if(sys_rst = '1') then diff --git a/designs/leon3-gr-xc6s/mig39/coregen.cgc b/designs/leon3-gr-xc6s/mig39/coregen.cgc new file mode 100644 index 00000000..8e788169 --- /dev/null +++ b/designs/leon3-gr-xc6s/mig39/coregen.cgc @@ -0,0 +1,953 @@ + + + xilinx.com + CoreGen + coregen + 1.0 + + + mig_39 + MIG Virtex-6 and Spartan-6 + + + mig_39 + ./mig_39/user_design/mig.prj + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg/ + + + xc6slx75 + spartan6 + fgg484 + -2 + + + BusFormatParenNotRipped + VHDL + true + Synplicity + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + 2012-10-13+03:35 + + + + + model_parameter_resolution_generator + + + ip_xco_generator + + ./mig_39.xco + xco + Wed Dec 19 14:14:01 GMT 2012 + 0x671A1DD1 + generationID_1879581046 + + + + implementation_source_generator + + ./mig_39/docs/ug388.pdf + ignore + pdf + Wed Dec 19 14:14:01 GMT 2012 + 0x90FCF0D1 + generationID_1879581046 + + + ./mig_39/docs/ug416.pdf + ignore + pdf + Wed Dec 19 14:14:01 GMT 2012 + 0x5A2D5D89 + generationID_1879581046 + + + ./mig_39/example_design/datasheet.txt + ignore + txt + Wed Dec 19 14:14:02 GMT 2012 + 0xAC7DB514 + generationID_1879581046 + + + ./mig_39/example_design/mig.prj + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x9262FF56 + generationID_1879581046 + + + ./mig_39/example_design/par/example_top.ucf + ignore + ucf + Wed Dec 19 14:14:02 GMT 2012 + 0x98717D17 + generationID_1879581046 + + + ./mig_39/example_design/par/icon_coregen.xco + ignore + xco + Wed Dec 19 14:14:02 GMT 2012 + 0xFAB6CB97 + generationID_1879581046 + + + ./mig_39/example_design/par/ila_coregen.xco + ignore + xco + Wed Dec 19 14:14:02 GMT 2012 + 0x425A86A3 + generationID_1879581046 + + + ./mig_39/example_design/par/ise_flow.sh + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x95B1A5E5 + generationID_1879581046 + + + ./mig_39/example_design/par/ise_run.txt + ignore + txt + Wed Dec 19 14:14:02 GMT 2012 + 0xEA962BB5 + generationID_1879581046 + + + ./mig_39/example_design/par/makeproj.sh + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0xCFE64DF9 + generationID_1879581046 + + + ./mig_39/example_design/par/mem_interface_top.ut + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0xCDD0105F + generationID_1879581046 + + + ./mig_39/example_design/par/readme.txt + ignore + txt + Wed Dec 19 14:14:02 GMT 2012 + 0xE0953675 + generationID_1879581046 + + + ./mig_39/example_design/par/rem_files.sh + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0xBC4318C8 + generationID_1879581046 + + + ./mig_39/example_design/par/vio_coregen.xco + ignore + xco + Wed Dec 19 14:14:02 GMT 2012 + 0xDAB085AD + generationID_1879581046 + + + ./mig_39/example_design/rtl/example_top.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xD92A26A8 + generationID_1879581046 + + + ./mig_39/example_design/rtl/iodrp_controller.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x5A2197DD + generationID_1879581046 + + + ./mig_39/example_design/rtl/iodrp_mcb_controller.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x69237401 + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_raw_wrapper.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xA3623325 + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_soft_calibration.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x9B8E0B5E + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_soft_calibration_top.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xC37A23BB + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_infrastructure.vhd + ignore + vhdl + Wed Dec 19 14:14:01 GMT 2012 + 0x702DFF2F + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_tb_top.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x3C33A218 + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_wrapper.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xF1684A57 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/afifo.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x26568D9A + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/cmd_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xC6EF0126 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/cmd_prbs_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x893B0F01 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/data_prbs_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x6E88FB8E + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/init_mem_pattern_ctr.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x26DEA717 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/mcb_flow_control.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xB9D71414 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/mcb_traffic_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x125A1D59 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/rd_data_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x50A90B14 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/read_data_path.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xDFA5DAF7 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/read_posted_fifo.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xBC61DAC4 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/sp6_data_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xA9170C59 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/tg_status.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x7B717096 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/v6_data_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x24F3E550 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/wr_data_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x91BCA941 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/write_data_path.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x391A16CE + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/ddr2_model_c3.v + ignore + verilog + Wed Dec 19 14:14:02 GMT 2012 + 0xAF612EFE + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/ddr2_model_parameters_c3.vh + ignore + verilog + Wed Dec 19 14:14:02 GMT 2012 + 0x6902BBB9 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/isim.sh + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x1EDD2EEF + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/isim.tcl + ignore + tcl + Wed Dec 19 14:14:02 GMT 2012 + 0x02F76428 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/mig_39.prj + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0xF7B8FBCD + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/readme.txt + ignore + txt + Wed Dec 19 14:14:02 GMT 2012 + 0xFA4BA7C6 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/sim.do + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x4AEFC8F2 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/sim_tb_top.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x3FC41CC5 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/timing_sim.sh + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0xD1170B9A + generationID_1879581046 + + + ./mig_39/example_design/synth/example_top.lso + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0xEEDE3797 + generationID_1879581046 + + + ./mig_39/example_design/synth/example_top.prj + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x45A82CBA + generationID_1879581046 + + + ./mig_39/example_design/synth/mem_interface_top_synp.sdc + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x44043337 + generationID_1879581046 + + + ./mig_39/example_design/synth/script_synp.tcl + ignore + tcl + Wed Dec 19 14:14:02 GMT 2012 + 0x29C8E312 + generationID_1879581046 + + + ./mig_39/user_design/datasheet.txt + ignore + txt + Wed Dec 19 14:14:02 GMT 2012 + 0x11A670FE + generationID_1879581046 + + + ./mig_39/user_design/mig.prj + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x9262FF56 + generationID_1879581046 + + + ./mig_39/user_design/par/icon_coregen.xco + ignore + xco + Wed Dec 19 14:14:02 GMT 2012 + 0xFAB6CB97 + generationID_1879581046 + + + ./mig_39/user_design/par/ila_coregen.xco + ignore + xco + Wed Dec 19 14:14:02 GMT 2012 + 0x425A86A3 + generationID_1879581046 + + + ./mig_39/user_design/par/ise_flow.sh + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x4FF5A5F3 + generationID_1879581046 + + + ./mig_39/user_design/par/ise_run.txt + ignore + txt + Wed Dec 19 14:14:02 GMT 2012 + 0xDD9A2939 + generationID_1879581046 + + + ./mig_39/user_design/par/makeproj.sh + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0xCFE64DF9 + generationID_1879581046 + + + ./mig_39/user_design/par/mem_interface_top.ut + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0xCDD0105F + generationID_1879581046 + + + ./mig_39/user_design/par/mig_39.ucf + ucf + Wed Dec 19 14:14:02 GMT 2012 + 0xC685B099 + generationID_1879581046 + + + ./mig_39/user_design/par/readme.txt + ignore + txt + Wed Dec 19 14:14:02 GMT 2012 + 0xD26FC611 + generationID_1879581046 + + + ./mig_39/user_design/par/rem_files.sh + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x107D2E3F + generationID_1879581046 + + + ./mig_39/user_design/par/vio_coregen.xco + ignore + xco + Wed Dec 19 14:14:02 GMT 2012 + 0xDAB085AD + generationID_1879581046 + + + ./mig_39/user_design/rtl/iodrp_controller.vhd + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x5A2197DD + generationID_1879581046 + + + ./mig_39/user_design/rtl/iodrp_mcb_controller.vhd + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x69237401 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_raw_wrapper.vhd + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xA3623325 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_soft_calibration.vhd + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x9B8E0B5E + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_soft_calibration_top.vhd + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xC37A23BB + generationID_1879581046 + + + ./mig_39/user_design/rtl/memc3_infrastructure.vhd + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x702DFF2F + generationID_1879581046 + + + ./mig_39/user_design/rtl/memc3_wrapper.vhd + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xF1684A57 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mig_39.vhd + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x53E3B518 + generationID_1879581046 + + + ./mig_39/user_design/sim/afifo.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x26568D9A + generationID_1879581046 + + + ./mig_39/user_design/sim/cmd_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xC6EF0126 + generationID_1879581046 + + + ./mig_39/user_design/sim/cmd_prbs_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x893B0F01 + generationID_1879581046 + + + ./mig_39/user_design/sim/data_prbs_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x6E88FB8E + generationID_1879581046 + + + ./mig_39/user_design/sim/ddr2_model_c3.v + ignore + verilog + Wed Dec 19 14:14:02 GMT 2012 + 0xAF612EFE + generationID_1879581046 + + + ./mig_39/user_design/sim/ddr2_model_parameters_c3.vh + ignore + verilog + Wed Dec 19 14:14:02 GMT 2012 + 0x6902BBB9 + generationID_1879581046 + + + ./mig_39/user_design/sim/init_mem_pattern_ctr.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x26DEA717 + generationID_1879581046 + + + ./mig_39/user_design/sim/isim.sh + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x1EDD2EEF + generationID_1879581046 + + + ./mig_39/user_design/sim/isim.tcl + ignore + tcl + Wed Dec 19 14:14:02 GMT 2012 + 0x02F76428 + generationID_1879581046 + + + ./mig_39/user_design/sim/mcb_flow_control.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xB9D71414 + generationID_1879581046 + + + ./mig_39/user_design/sim/mcb_traffic_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x125A1D59 + generationID_1879581046 + + + ./mig_39/user_design/sim/memc3_tb_top.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x3C33A218 + generationID_1879581046 + + + ./mig_39/user_design/sim/mig_39.prj + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0xFA831D8D + generationID_1879581046 + + + ./mig_39/user_design/sim/rd_data_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x50A90B14 + generationID_1879581046 + + + ./mig_39/user_design/sim/read_data_path.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xDFA5DAF7 + generationID_1879581046 + + + ./mig_39/user_design/sim/read_posted_fifo.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xBC61DAC4 + generationID_1879581046 + + + ./mig_39/user_design/sim/readme.txt + ignore + txt + Wed Dec 19 14:14:02 GMT 2012 + 0xFA4BA7C6 + generationID_1879581046 + + + ./mig_39/user_design/sim/sim.do + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x0F0EC58D + generationID_1879581046 + + + ./mig_39/user_design/sim/sim_tb_top.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xB75A0D81 + generationID_1879581046 + + + ./mig_39/user_design/sim/sp6_data_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0xA9170C59 + generationID_1879581046 + + + ./mig_39/user_design/sim/tg_status.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x7B717096 + generationID_1879581046 + + + ./mig_39/user_design/sim/v6_data_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x24F3E550 + generationID_1879581046 + + + ./mig_39/user_design/sim/wr_data_gen.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x91BCA941 + generationID_1879581046 + + + ./mig_39/user_design/sim/write_data_path.vhd + ignore + vhdl + Wed Dec 19 14:14:02 GMT 2012 + 0x391A16CE + generationID_1879581046 + + + ./mig_39/user_design/synth/mem_interface_top_synp.sdc + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x76EDF97D + generationID_1879581046 + + + ./mig_39/user_design/synth/mig_39.lso + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0xEEDE3797 + generationID_1879581046 + + + ./mig_39/user_design/synth/mig_39.prj + ignore + unknown + Wed Dec 19 14:14:02 GMT 2012 + 0x1521D75B + generationID_1879581046 + + + ./mig_39/user_design/synth/script_synp.tcl + ignore + tcl + Wed Dec 19 14:14:02 GMT 2012 + 0x35FBFD6E + generationID_1879581046 + + + ./mig_39.vho + vho + Wed Dec 19 14:14:02 GMT 2012 + 0x2AA2ABF9 + generationID_1879581046 + + + ./mig_39_readme.txt + ignore + txt + Wed Dec 19 14:14:02 GMT 2012 + 0xF3C340EC + generationID_1879581046 + + + ./mig_39_xmdf.tcl + ignore + tcl + Wed Dec 19 14:14:02 GMT 2012 + 0x87D169C0 + generationID_1879581046 + + + + instantiation_template_generator + + + asy_generator + + + xmdf_generator + + + ise_generator + + ./mig_39.gise + ignore + gise + Wed Dec 19 14:14:10 GMT 2012 + 0x8CB3D14A + generationID_1879581046 + + + ./mig_39.xise + ignore + xise + Wed Dec 19 14:14:10 GMT 2012 + 0x08D69702 + generationID_1879581046 + + + + deliver_readme_generator + + + flist_generator + + ./mig_39_flist.txt + ignore + txtFlist + txt + Wed Dec 19 14:14:10 GMT 2012 + 0xBFA4D285 + generationID_1879581046 + + + + + + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg + + + xc6slx75 + spartan6 + fgg484 + -2 + + + BusFormatParenNotRipped + VHDL + true + Synplicity + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + + + diff --git a/designs/leon3-xilinx-ml510/coregen.cgp b/designs/leon3-gr-xc6s/mig39/coregen.cgp similarity index 76% rename from designs/leon3-xilinx-ml510/coregen.cgp rename to designs/leon3-gr-xc6s/mig39/coregen.cgp index bd7e54d7..e9304336 100644 --- a/designs/leon3-xilinx-ml510/coregen.cgp +++ b/designs/leon3-gr-xc6s/mig39/coregen.cgp @@ -1,17 +1,17 @@ -# Date: Mon Jun 27 10:26:50 2011 +# Date: Mon May 30 11:48:06 2011 SET addpads = false SET asysymbol = true SET busformat = BusFormatParenNotRipped SET createndf = false SET designentry = VHDL -SET device = xc5vfx130t -SET devicefamily = virtex5 +SET device = xc6slx75 +SET devicefamily = spartan6 SET flowvendor = Synplicity SET formalverification = false SET foundationsym = false SET implementationfiletype = Ngc -SET package = ff1738 +SET package = fgg484 SET removerpms = false SET simulationfiles = Behavioral SET speedgrade = -2 @@ -19,4 +19,4 @@ SET verilogsim = false SET vhdlsim = true SET workingdirectory = ./tmp/ -# CRC: 3a72440f +# CRC: 9a1e529b diff --git a/designs/leon3-gr-xc6s/mig39/mig.prj b/designs/leon3-gr-xc6s/mig39/mig.prj new file mode 100644 index 00000000..ca923089 --- /dev/null +++ b/designs/leon3-gr-xc6s/mig39/mig.prj @@ -0,0 +1,62 @@ + + + mig_39 + xc6slx75-fgg484/-2 + 3.92 + + DDR2_SDRAM/Components/MT47H64M16XX-25 + 4000 + 0 + 1 + FALSE + + 13 + 10 + 3 + + + + 4(010) + 4 + Enable-Normal + Fullstrength + 50ohms + 0 + OCD Exit + Enable + Disable + Enable + Disable + NATIVE,NATIVE,NATIVE,NATIVE,NATIVE,NATIVE + Class II + Class II + CALIB_TERM + 25 Ohms + + + + Single-Ended + 1 + Disable + Single-Ended + Two 32-bit bi-directional and four 32-bit unidirectional ports + K7 + D5 + Port0,Port2 + Bi-directional,none,Read,none,none,none + ROW_BANK_COLUMN + Round Robin + 02 + 20 + 02 + 20 + 02 + 20 + 02 + 20 + 02 + 20 + 02 + 20 + + diff --git a/designs/leon3-xilinx-ml510/mig.xco b/designs/leon3-gr-xc6s/mig39/mig.xco similarity index 79% rename from designs/leon3-xilinx-ml510/mig.xco rename to designs/leon3-gr-xc6s/mig39/mig.xco index eff02b2b..e90f95a1 100644 --- a/designs/leon3-xilinx-ml510/mig.xco +++ b/designs/leon3-gr-xc6s/mig39/mig.xco @@ -1,7 +1,7 @@ ############################################################## # # Xilinx Core Generator version 13.1 -# Date: Mon Jun 27 10:31:46 2011 +# Date: Mon May 30 12:17:32 2011 # ############################################################## # @@ -18,13 +18,13 @@ SET asysymbol = true SET busformat = BusFormatParenNotRipped SET createndf = false SET designentry = VHDL -SET device = xc5vfx130t -SET devicefamily = virtex5 +SET device = xc6slx75 +SET devicefamily = spartan6 SET flowvendor = Synplicity SET formalverification = false SET foundationsym = false SET implementationfiletype = Ngc -SET package = ff1738 +SET package = fgg484 SET removerpms = false SET simulationfiles = Behavioral SET speedgrade = -2 @@ -32,11 +32,11 @@ SET verilogsim = false SET vhdlsim = true # END Project Options # BEGIN Select -SELECT MIG family Xilinx,_Inc. 3.61 +SELECT MIG_Virtex-6_and_Spartan-6 family Xilinx,_Inc. 3.92 # END Select # BEGIN Parameters -CSET component_name=mig_36_1 -CSET xml_input_file=mig.prj +CSET component_name=mig_39 +CSET xml_input_file=./mig.prj # END Parameters GENERATE -# CRC: acfe6864 +# CRC: f45a862b diff --git a/designs/leon3-gr-xc6s/mig_patch.txt b/designs/leon3-gr-xc6s/mig_patch.txt new file mode 100644 index 00000000..f6792c3f --- /dev/null +++ b/designs/leon3-gr-xc6s/mig_patch.txt @@ -0,0 +1,123 @@ +--- ./mig39/mig_39//user_design/rtl/mig_39.vhd 2013-01-15 15:30:15.000000000 +0100 ++++ ./p/a/t/c/h/mig39/mig_39//user_design/rtl/mig_39.vhd 2013-01-15 15:27:15.860788313 +0100 +@@ -65,7 +65,7 @@ + --***************************************************************************** + library ieee; + use ieee.std_logic_1164.all; +-entity mig_39 is ++entity mig_37 is + generic + ( + C3_P0_MASK_SIZE : integer := 4; +@@ -95,8 +95,9 @@ + -- External memory data width. + C3_MEM_ADDR_WIDTH : integer := 13; + -- External memory address width. +- C3_MEM_BANKADDR_WIDTH : integer := 3 ++ C3_MEM_BANKADDR_WIDTH : integer := 3; + -- External memory bank address width. ++ C3_CLKOUT5_DIVIDE : integer := 10 + ); + + port +@@ -117,10 +118,14 @@ + mcb3_zio : inout std_logic; + mcb3_dram_udm : out std_logic; + c3_sys_clk : in std_logic; +- c3_sys_rst_i : in std_logic; ++ c3_sys_rst_n : in std_logic; + c3_calib_done : out std_logic; + c3_clk0 : out std_logic; + c3_rst0 : out std_logic; ++ clk_125 : out std_logic; ++ clk_100 : out std_logic; ++ pll_lock : out std_logic; ++ pll_lock0 : out std_logic; + mcb3_dram_dqs : inout std_logic; + mcb3_dram_dqs_n : inout std_logic; + mcb3_dram_ck : out std_logic; +@@ -165,9 +170,9 @@ + c3_p2_rd_overflow : out std_logic; + c3_p2_rd_error : out std_logic + ); +-end mig_39; ++end mig_37; + +-architecture arc of mig_39 is ++architecture arc of mig_37 is + + + +@@ -179,6 +184,7 @@ + C_CLKOUT1_DIVIDE : integer; + C_CLKOUT2_DIVIDE : integer; + C_CLKOUT3_DIVIDE : integer; ++ C_CLKOUT5_DIVIDE : integer; + C_CLKFBOUT_MULT : integer; + C_DIVCLK_DIVIDE : integer; + C_INCLK_PERIOD : integer +@@ -194,11 +200,13 @@ + async_rst : out std_logic; + sysclk_2x : out std_logic; + sysclk_2x_180 : out std_logic; ++ mcb_drp_clk : out std_logic; + pll_ce_0 : out std_logic; + pll_ce_90 : out std_logic; + pll_lock : out std_logic; +- mcb_drp_clk : out std_logic +- ++ pll_lock0 : out std_logic; ++ clk_125 : out std_logic; ++ clk_100 : out std_logic + ); + end component; + +@@ -362,7 +370,8 @@ + constant C3_CLKOUT1_DIVIDE : integer := 1; + constant C3_CLKOUT2_DIVIDE : integer := 16; + constant C3_CLKOUT3_DIVIDE : integer := 8; +- constant C3_CLKFBOUT_MULT : integer := 2; ++-- constant C3_CLKFBOUT_MULT : integer := 2; ++ constant C3_CLKFBOUT_MULT : integer := 10; + constant C3_DIVCLK_DIVIDE : integer := 1; + constant C3_INCLK_PERIOD : integer := ((C3_MEMCLK_PERIOD * C3_CLKFBOUT_MULT) / (C3_DIVCLK_DIVIDE * C3_CLKOUT0_DIVIDE * 2)); + constant C3_ARB_NUM_TIME_SLOTS : integer := 12; +@@ -460,7 +469,7 @@ + c3_sys_clk_p <= '0'; + c3_sys_clk_n <= '0'; + c3_selfrefresh_enter <= '0'; +-c3_selfrefresh_enter <= '0'; ++pll_lock <= c3_pll_lock; + memc3_infrastructure_inst : memc3_infrastructure + + generic map +@@ -471,6 +480,7 @@ + C_CLKOUT1_DIVIDE => C3_CLKOUT1_DIVIDE, + C_CLKOUT2_DIVIDE => C3_CLKOUT2_DIVIDE, + C_CLKOUT3_DIVIDE => C3_CLKOUT3_DIVIDE, ++ C_CLKOUT5_DIVIDE => C3_CLKOUT5_DIVIDE, + C_CLKFBOUT_MULT => C3_CLKFBOUT_MULT, + C_DIVCLK_DIVIDE => C3_DIVCLK_DIVIDE, + C_INCLK_PERIOD => C3_INCLK_PERIOD +@@ -480,16 +490,19 @@ + sys_clk_p => c3_sys_clk_p, + sys_clk_n => c3_sys_clk_n, + sys_clk => c3_sys_clk, +- sys_rst_i => c3_sys_rst_i, ++ sys_rst_i => c3_sys_rst_n, + clk0 => c3_clk0, + rst0 => c3_rst0, + async_rst => c3_async_rst, + sysclk_2x => c3_sysclk_2x, + sysclk_2x_180 => c3_sysclk_2x_180, ++ mcb_drp_clk => c3_mcb_drp_clk, + pll_ce_0 => c3_pll_ce_0, + pll_ce_90 => c3_pll_ce_90, + pll_lock => c3_pll_lock, +- mcb_drp_clk => c3_mcb_drp_clk ++ pll_lock0 => pll_lock0, ++ clk_125 => clk_125, ++ clk_100 => clk_100 + ); + + diff --git a/designs/leon3-gr-xc6s/res.txt b/designs/leon3-gr-xc6s/res.txt deleted file mode 100644 index 4498c266..00000000 --- a/designs/leon3-gr-xc6s/res.txt +++ /dev/null @@ -1,13 +0,0 @@ - -SPARTAN6 50 MHz, MIG DDR2, 2x8 + 2x4 cache, GRFPU - - LEON3 LEON3FTV2 -Dhrystone 78.4 78.4 -Whetstone DP 27.7 27.7 -gzip 43.98 s 41.38 s -bzip2 248.22 s 200.10 s -176.gcc 208.62 s 180.48 s -coremark 100.12 i/s 100.12 i/s -aocs_v8 12388.7 i/s 12388.7 i/s -basicmath_large 13245.0 i/s 13245.0 i/s -linpack_unroll_dp_v8 3265 KFLOPS 3563 KFLOPS diff --git a/designs/leon3-gr-xc6s/spacewire.ucf b/designs/leon3-gr-xc6s/spacewire.ucf index 6a384cc2..09e9c82a 100644 --- a/designs/leon3-gr-xc6s/spacewire.ucf +++ b/designs/leon3-gr-xc6s/spacewire.ucf @@ -1,10 +1,13 @@ ################################################################## -# Enable these is you have enabled any Spacewire ports +# Only enable these is you have enabled any Spacewire ports and +# Space Wire Clock is not in phase with the system clock. +# Please note that this isn't the case when using the leon3-gr-xc6s +# ref design -NET spw100 period = 10.000 ; -NET "spw100" TNM_NET = "spw100"; -TIMESPEC "TS_clkm_spw100" = FROM "clkm" TO "spw100" 8 ns DATAPATHONLY; -TIMESPEC "TS_spw100_clkm" = FROM "spw100" TO "clkm" 8 ns DATAPATHONLY; +#NET spw100 period = 10.000 ; +#NET "spw100" TNM_NET = "spw100"; +#TIMESPEC "TS_clkm_spw100" = FROM "clkm" TO "spw100" 8 ns DATAPATHONLY; +#TIMESPEC "TS_spw100_clkm" = FROM "spw100" TO "clkm" 8 ns DATAPATHONLY; ################################################################## diff --git a/designs/leon3-gr-xc6s/svga2ch7301c.vhd b/designs/leon3-gr-xc6s/svga2ch7301c.vhd index 8f95178b..4f9a1eac 100644 --- a/designs/leon3-gr-xc6s/svga2ch7301c.vhd +++ b/designs/leon3-gr-xc6s/svga2ch7301c.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-gr-xc6s/systest.c b/designs/leon3-gr-xc6s/systest.c index d5cc837a..3b94b290 100644 --- a/designs/leon3-gr-xc6s/systest.c +++ b/designs/leon3-gr-xc6s/systest.c @@ -2,17 +2,26 @@ main() { - report_start(); + report_start(); -// svgactrl_test(0x80000600, 1, 0, 0x40200000, -1, 0, 0); - base_test(); + base_test(); +// svgactrl_test(0x80000600, 1, 0, 0x40200000, -1, 0, 0); +// greth_test(0x80000e00); + /* - greth_test(0x80000e00); - spw_test(0x80100A00); - spw_test(0x80100B00); - spw_test(0x80100C00); - svgactrl_test(0x80000600, 1, 0, 0x40200000, -1, 0, 0); + spw_test(0x80100A00); + spw_test(0x80100B00); + spw_test(0x80100C00); */ - report_end(); + +// grusbhc_test(0x80000d00, 0xfffa0000, 0, 0); + /* Delay end of testing if GRUSB_DCL (with real timing) is to be tested. + The core needs about 4 ms of simulation time to get into a running + state. After that the amount of simulation time needed depends on how + much data that is transfered. */ +/* for (i = 0; i < 140000; i++) */ +/* ; */ + + report_end(); } diff --git a/designs/leon3-gr-xc6s/testbench.vhd b/designs/leon3-gr-xc6s/testbench.vhd index d5e56f02..f31d3ad1 100644 --- a/designs/leon3-gr-xc6s/testbench.vhd +++ b/designs/leon3-gr-xc6s/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -31,6 +31,8 @@ use techmap.gencomp.all; use work.debug.all; library hynix; use hynix.components.all; +library grlib; +use grlib.stdlib.all; use work.config.all; -- configuration @@ -177,7 +179,9 @@ begin ps2clk <= "HH"; ps2data <= "HH"; pio(4) <= pio(5); pio(1) <= pio(2); pio <= (others => 'H'); wdogn <= 'H'; - usb_clkout <= not usb_clkout after 8.33 ns; -- ~60MHz + nousbtr: if (CFG_GRUSBHC = 0) generate + usb_clkout <= not usb_clkout after 8.33 ns; -- ~60MHz + end generate nousbtr; switch(7) <= '1'; switch(8) <= '0'; emdio <= 'H'; @@ -190,8 +194,8 @@ begin disas, dbguart, pclow ) port map (rst, clk, clk2, clk125, wdogn, address(24 downto 0), data, oen, writen, romsn, - ddr_clk, ddr_clkb, ddr_cke, ddr_odt, ddr_we, ddr_ras, ddr_cas, ddr_dm, - ddr_dqs, ddr_ad, ddr_ba, ddr_dq, ddr_rzq, ddr_zio, + ddr_clk, ddr_clkb, ddr_cke, ddr_odt, ddr_we, ddr_ras, ddr_csb ,ddr_cas, ddr_dm, + ddr_dqs, ddr_dqsn, ddr_ad, ddr_ba, ddr_dq, ddr_rzq, ddr_zio, txd1, rxd1, ctsn1, rtsn1, txd2, rxd2, ctsn2, rtsn2, pio, genio, switch, led, erx_clk, emdio, erxd(3 downto 0), erx_dv, emdint, etx_clk, etxd(3 downto 0), etx_en, emdc, @@ -214,8 +218,7 @@ begin ddr2mem0 : for i in 0 to 0 generate u1 : HY5PS121621F generic map (TimingCheckFlag => false, PUSCheckFlag => false, - index => i, bbits => 16, fname => sdramfile, - fdelay => 150) + index => i, bbits => 16, fname => sdramfile, fdelay => 340) port map (DQ => ddr_dq(i*16+15 downto i*16), LDQS => ddr_dqs(i*2), LDQSB => ddr_dqsn(i*2), UDQS => ddr_dqs(i*2+1), UDQSB => ddr_dqsn(i*2+1), @@ -241,14 +244,10 @@ begin erx_er, erx_col, erx_crs, etxd, etx_en, etx_er, emdc, etx_clk); end generate; - iuerr : process - begin - wait for 5000 ns; - if to_x01(errorn) = '1' then wait on errorn; end if; - assert (to_x01(errorn) = '1') - report "*** IU in error mode, simulation halted ***" - severity failure ; - end process; + usbtr: if (CFG_GRUSBHC = 1) generate + u0: ulpi + port map (usb_clkout, usb_d, usb_nxt, usb_stp, usb_dir, usb_resetn); + end generate usbtr; data <= buskeep(data) after 5 ns; @@ -260,6 +259,7 @@ begin begin dsutx <= '1'; dsurst <= '0'; + wait for 201 us; wait for 2500 ns; dsurst <= '1'; wait; diff --git a/designs/leon3-gr-xc6s/tkconfig.h b/designs/leon3-gr-xc6s/tkconfig.h index 0475ab74..68049f59 100644 --- a/designs/leon3-gr-xc6s/tkconfig.h +++ b/designs/leon3-gr-xc6s/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -694,20 +716,6 @@ #define CONFIG_DSU_JTAG 0 #endif -#ifndef CONFIG_GRUSB_DCL -#define CONFIG_GRUSB_DCL 0 -#endif - -#if defined CONFIG_GRUSB_DCL_UTMI16 -#define CONFIG_GRUSB_DCL_UIFACE 0 -#define CONFIG_GRUSB_DCL_DW 16 -#elif defined CONFIG_GRUSB_DCL_UTMI8 -#define CONFIG_GRUSB_DCL_UIFACE 0 -#define CONFIG_GRUSB_DCL_DW 8 -#else -#define CONFIG_GRUSB_DCL_UIFACE 1 -#define CONFIG_GRUSB_DCL_DW 8 -#endif #ifndef CONFIG_DSU_ETH #define CONFIG_DSU_ETH 0 #endif @@ -888,6 +896,10 @@ #define CONFIG_DDR2SP_FTWIDTH 0 #endif +#ifndef CONFIG_MIG_DDR3 +#define CONFIG_MIG_DDR3 0 +#endif + #ifndef CONFIG_MIG_DDR2 #define CONFIG_MIG_DDR2 0 #endif @@ -986,25 +998,6 @@ #define CFG_GRETH_FIFO 8 #endif -#ifndef CONFIG_ATA_ENABLE -#define CONFIG_ATA_ENABLE 0 -#endif - -#ifndef CONFIG_ATAIO -#define CONFIG_ATAIO 0 -#endif - -#ifndef CONFIG_ATAIRQ -#define CONFIG_ATAIRQ 0 -#endif - -#ifndef CONFIG_ATA_MWDMA -#define CONFIG_ATA_MWDMA 0 -#endif - -#ifndef CONFIG_ATA_FIFO -#define CONFIG_ATA_FIFO 8 -#endif #ifndef CONFIG_CAN_ENABLE #define CONFIG_CAN_ENABLE 0 #endif @@ -1033,129 +1026,6 @@ #define CONFIG_CAN_FT 0 #endif -#ifndef CONFIG_GRUSBDC_ENABLE -#define CONFIG_GRUSBDC_ENABLE 0 -#endif - -#ifndef CONFIG_GRUSBDC_AIFACE -#define CONFIG_GRUSBDC_AIFACE 0 -#endif - -#if defined CONFIG_GRUSBDC_UTMI16 -#define CONFIG_GRUSBDC_UIFACE 0 -#define CONFIG_GRUSBDC_DW 16 -#elif defined CONFIG_GRUSBDC_UTMI8 -#define CONFIG_GRUSBDC_UIFACE 0 -#define CONFIG_GRUSBDC_DW 8 -#else -#define CONFIG_GRUSBDC_UIFACE 1 -#define CONFIG_GRUSBDC_DW 8 -#endif - -#ifndef CONFIG_GRUSBDC_NEPI -#define CONFIG_GRUSBDC_NEPI 1 -#endif - -#ifndef CONFIG_GRUSBDC_NEPO -#define CONFIG_GRUSBDC_NEPO 1 -#endif - -#ifndef CONFIG_GRUSBDC_I0 -#define CONFIG_GRUSBDC_I0 1024 -#endif -#ifndef CONFIG_GRUSBDC_I1 -#define CONFIG_GRUSBDC_I1 1024 -#endif -#ifndef CONFIG_GRUSBDC_I2 -#define CONFIG_GRUSBDC_I2 1024 -#endif -#ifndef CONFIG_GRUSBDC_I3 -#define CONFIG_GRUSBDC_I3 1024 -#endif -#ifndef CONFIG_GRUSBDC_I4 -#define CONFIG_GRUSBDC_I4 1024 -#endif -#ifndef CONFIG_GRUSBDC_I5 -#define CONFIG_GRUSBDC_I5 1024 -#endif -#ifndef CONFIG_GRUSBDC_I6 -#define CONFIG_GRUSBDC_I6 1024 -#endif -#ifndef CONFIG_GRUSBDC_I7 -#define CONFIG_GRUSBDC_I7 1024 -#endif -#ifndef CONFIG_GRUSBDC_I8 -#define CONFIG_GRUSBDC_I8 1024 -#endif -#ifndef CONFIG_GRUSBDC_I9 -#define CONFIG_GRUSBDC_I9 1024 -#endif -#ifndef CONFIG_GRUSBDC_I10 -#define CONFIG_GRUSBDC_I10 1024 -#endif -#ifndef CONFIG_GRUSBDC_I11 -#define CONFIG_GRUSBDC_I11 1024 -#endif -#ifndef CONFIG_GRUSBDC_I12 -#define CONFIG_GRUSBDC_I12 1024 -#endif -#ifndef CONFIG_GRUSBDC_I13 -#define CONFIG_GRUSBDC_I13 1024 -#endif -#ifndef CONFIG_GRUSBDC_I14 -#define CONFIG_GRUSBDC_I14 1024 -#endif -#ifndef CONFIG_GRUSBDC_I15 -#define CONFIG_GRUSBDC_I15 1024 -#endif -#ifndef CONFIG_GRUSBDC_O0 -#define CONFIG_GRUSBDC_O0 1024 -#endif -#ifndef CONFIG_GRUSBDC_O1 -#define CONFIG_GRUSBDC_O1 1024 -#endif -#ifndef CONFIG_GRUSBDC_O2 -#define CONFIG_GRUSBDC_O2 1024 -#endif -#ifndef CONFIG_GRUSBDC_O3 -#define CONFIG_GRUSBDC_O3 1024 -#endif -#ifndef CONFIG_GRUSBDC_O4 -#define CONFIG_GRUSBDC_O4 1024 -#endif -#ifndef CONFIG_GRUSBDC_O5 -#define CONFIG_GRUSBDC_O5 1024 -#endif -#ifndef CONFIG_GRUSBDC_O6 -#define CONFIG_GRUSBDC_O6 1024 -#endif -#ifndef CONFIG_GRUSBDC_O7 -#define CONFIG_GRUSBDC_O7 1024 -#endif -#ifndef CONFIG_GRUSBDC_O8 -#define CONFIG_GRUSBDC_O8 1024 -#endif -#ifndef CONFIG_GRUSBDC_O9 -#define CONFIG_GRUSBDC_O9 1024 -#endif -#ifndef CONFIG_GRUSBDC_O10 -#define CONFIG_GRUSBDC_O10 1024 -#endif -#ifndef CONFIG_GRUSBDC_O11 -#define CONFIG_GRUSBDC_O11 1024 -#endif -#ifndef CONFIG_GRUSBDC_O12 -#define CONFIG_GRUSBDC_O12 1024 -#endif -#ifndef CONFIG_GRUSBDC_O13 -#define CONFIG_GRUSBDC_O13 1024 -#endif -#ifndef CONFIG_GRUSBDC_O14 -#define CONFIG_GRUSBDC_O14 1024 -#endif -#ifndef CONFIG_GRUSBDC_O15 -#define CONFIG_GRUSBDC_O15 1024 -#endif #ifndef CONFIG_GRUSBHC_ENABLE #define CONFIG_GRUSBHC_ENABLE 0 #endif @@ -1567,6 +1437,10 @@ #ifndef CONFIG_SPIMCTRL_PWRUPCNT #define CONFIG_SPIMCTRL_PWRUPCNT 0 #endif + +#ifndef CONFIG_SPIMCTRL_OFFSET +#define CONFIG_SPIMCTRL_OFFSET 0 +#endif #ifndef CONFIG_SPICTRL_ENABLE #define CONFIG_SPICTRL_ENABLE 0 #endif diff --git a/designs/leon3-gr-xc6s/usb.ucf b/designs/leon3-gr-xc6s/usb.ucf index 1bbc7b6c..18f8ac75 100644 --- a/designs/leon3-gr-xc6s/usb.ucf +++ b/designs/leon3-gr-xc6s/usb.ucf @@ -1,4 +1,30 @@ -NET usb_clk period = 16.667; -OFFSET = out : 10.000 : AFTER usb_clk ; -OFFSET = in : 8.000 : BEFORE usb_clk ; +# Set the ULPI_CLK constraints +#NET “usb_clk†TNM_NET = “usb_clkâ€; +#TIMESPEC “TS_usb_clk†= PERIOD “usb_clk†16.667 ns HIGH 50%; +NET "usb_clk" PERIOD = 16.667 ns HIGH 50 %; + +#offset in constraints are calculated as follows. +#clock frequency is 16.667ns +#ULPI PHY output delay for output clock mode for ISP1504A is 3.8ns +#onboard trace delay would be 1ns +#input offset = (clock period - PHY outputdelay - trance delay) +#with 1ns hold requirement for the PHY, considering 200ps clock jitter +#OFFSET IN valid period would be 800ps. +# Set the OFFSET IN delay as 12.167 ns with respect to ULPI CLK +OFFSET = IN 12.167 ns VALID 12.967 ns BEFORE usb_clk RISING; + +# ULPI PHY setup time for output clock mode is 3ns in nom case +# leaving 1ns for onboard trace delay. +# OFFSET OUT = clock period - (PHY setup time + trace delay) +# Set the OFFSET OUT delay as 12.667 ns with respect to ULPI_CLK +OFFSET = OUT 12.667 ns AFTER usb_clk RISING; + +# Set MAX DELAY constraint on ULPI DIR pin +NET "usb_dir" TNM = "usb_pin_grp"; +TIMESPEC TS_usb_dir = FROM "usb_pin_grp" TO PADS 4 ns; + +# Cross clock domain timing Constraints between ULPI Clock and AMBA clock +NET "uclk" TNM_NET = "uclk"; +TIMESPEC "TS_clkm_usb_clk" = FROM "clkm" TO "uclk" 16 ns DATAPATHONLY; +TIMESPEC "TS_usb_clk_clkm" = FROM "uclk" TO "clkm" 16 ns DATAPATHONLY; diff --git a/designs/leon3-gr-xc6s/usb_spartan6_pll.vhd b/designs/leon3-gr-xc6s/usb_spartan6_pll.vhd new file mode 100644 index 00000000..b980629d --- /dev/null +++ b/designs/leon3-gr-xc6s/usb_spartan6_pll.vhd @@ -0,0 +1,183 @@ +----------------------------------------------------------------------------- +-- LEON3 Demonstration design test bench +-- Copyright (C) 2013 Fredrik Ringhage, Gaisler Research +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler +-- +-- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +------------------------------------------------------------------------------ + +library ieee; +use ieee.std_logic_1164.all; +library unisim; +use unisim.vcomponents.all; + +entity usb_spartan6_pll is +generic + ( + C_INCLK_PERIOD : integer := 16667; + C_CLKOUT0_DIVIDE : integer := 8; + C_CLKFBOUT_MULT : integer := 8; + C_DIVCLK_DIVIDE : integer := 1 + + ); +port +( + sys_clk : in std_logic; + sys_rst_n : in std_logic; + clk0 : out std_logic; + rst0 : out std_logic; + locked : out std_logic +); +end entity; +architecture syn of usb_spartan6_pll is + + constant RST_SYNC_NUM : integer := 25; + constant CLK_PERIOD_NS : real := (real(C_INCLK_PERIOD)) / 1000.0; + constant CLK_PERIOD_INT : integer := C_INCLK_PERIOD/1000; + + signal clk0_bufg : std_logic; + signal clk0_bufg_in : std_logic; + signal clkfbout_clkfb_in : std_logic; + signal clkfbout_clkfb_bufg : std_logic; + signal clkfbout_clkfb : std_logic; + signal rst0_sync_r : std_logic_vector(RST_SYNC_NUM-1 downto 0); + signal sys_rst_i : std_logic; + signal pll_locked : std_logic; + + attribute keep : boolean; + attribute syn_keep : boolean; + attribute syn_preserve : boolean; + + attribute keep of clk0_bufg : signal is true; + attribute syn_keep of clk0_bufg : signal is true; + attribute syn_preserve of clk0_bufg : signal is true; + +begin + + clk0 <= clk0_bufg; + + sys_rst_i <= not(sys_rst_n); + + u_pll_adv : PLL_ADV + generic map + ( + BANDWIDTH => "OPTIMIZED", + CLKIN1_PERIOD => CLK_PERIOD_NS, + CLKIN2_PERIOD => CLK_PERIOD_NS, + CLKOUT0_DIVIDE => C_CLKOUT0_DIVIDE, + CLKOUT1_DIVIDE => 1, + CLKOUT2_DIVIDE => 1, + CLKOUT3_DIVIDE => 1, + CLKOUT4_DIVIDE => 1, + CLKOUT5_DIVIDE => 1, + CLKOUT0_PHASE => 0.000, + CLKOUT1_PHASE => 0.000, + CLKOUT2_PHASE => 0.000, + CLKOUT3_PHASE => 0.000, + CLKOUT4_PHASE => 0.000, + CLKOUT5_PHASE => 0.000, + CLKOUT0_DUTY_CYCLE => 0.500, + CLKOUT1_DUTY_CYCLE => 0.500, + CLKOUT2_DUTY_CYCLE => 0.500, + CLKOUT3_DUTY_CYCLE => 0.500, + CLKOUT4_DUTY_CYCLE => 0.500, + CLKOUT5_DUTY_CYCLE => 0.500, + SIM_DEVICE => "SPARTAN6", + COMPENSATION => "SYSTEM_SYNCHRONOUS", + DIVCLK_DIVIDE => C_DIVCLK_DIVIDE, + CLKFBOUT_MULT => C_CLKFBOUT_MULT, + CLKFBOUT_PHASE => 0.0, + REF_JITTER => 0.005000 + ) + port map + ( + CLKFBIN => clkfbout_clkfb, + CLKINSEL => '1', + CLKIN1 => sys_clk, + CLKIN2 => '0', + DADDR => (others => '0'), + DCLK => '0', + DEN => '0', + DI => (others => '0'), + DWE => '0', + REL => '0', + RST => sys_rst_i, + CLKFBDCM => open, + CLKFBOUT => clkfbout_clkfb_in, + CLKOUTDCM0 => open, + CLKOUTDCM1 => open, + CLKOUTDCM2 => open, + CLKOUTDCM3 => open, + CLKOUTDCM4 => open, + CLKOUTDCM5 => open, + CLKOUT0 => clk0_bufg_in, + CLKOUT1 => open, + CLKOUT2 => open, + CLKOUT3 => open, + CLKOUT4 => open, + CLKOUT5 => open, + DO => open, + DRDY => open, + LOCKED => pll_locked + ); + + U_BUFG_CLK0 : BUFG + port map + ( + O => clk0_bufg, + I => clk0_bufg_in + ); + + U_BUFG_CLK1 : BUFG + port map + ( + O => clkfbout_clkfb_bufg, + I => clkfbout_clkfb_in + ); + + U_BUFG_CLK2 : BUFIO2FB + port map + ( + O => clkfbout_clkfb, + I => clkfbout_clkfb_bufg + ); + + process (clk0_bufg, sys_rst_i) + begin + if (sys_rst_i = '1') then + locked <= '0'; + elsif (rising_edge(clk0_bufg)) then + if (pll_locked = '1') then + locked <= '1'; + end if; + end if; + end process; + + process (clk0_bufg, sys_rst_n) + begin + if (sys_rst_i = '1') then + rst0_sync_r <= (others => '1'); + elsif (rising_edge(clk0_bufg)) then + rst0_sync_r <= rst0_sync_r(RST_SYNC_NUM-2 downto 0) & '0'; -- logical left shift by one (pads with 0) + end if; + end process; + + rst0 <= rst0_sync_r(RST_SYNC_NUM-1); + +end architecture syn; + diff --git a/designs/leon3-gr-xc6s/vga_clkgen.vhd b/designs/leon3-gr-xc6s/vga_clkgen.vhd index 7277ec42..b1ee2d14 100644 --- a/designs/leon3-gr-xc6s/vga_clkgen.vhd +++ b/designs/leon3-gr-xc6s/vga_clkgen.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-jopdesign-ep1c12/Makefile b/designs/leon3-jopdesign-ep1c12/Makefile index ea1a78a3..77c207aa 100644 --- a/designs/leon3-jopdesign-ep1c12/Makefile +++ b/designs/leon3-jopdesign-ep1c12/Makefile @@ -17,10 +17,9 @@ CLEAN=soft-clean TECHLIBS = altera altera_mf LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc ihp hynix cypress gleichmann + tmtc ihp hynix cypress DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan leon3ft \ - ddr grusbhc usb haps spi ac97 \ - slink ascs coremp7 + ddr grusbhc usb spi slink ascs FILESKIP = grcan.vhd diff --git a/designs/leon3-jopdesign-ep1c12/ahbrom.vhd b/designs/leon3-jopdesign-ep1c12/ahbrom.vhd index f94b8866..753697a1 100644 --- a/designs/leon3-jopdesign-ep1c12/ahbrom.vhd +++ b/designs/leon3-jopdesign-ep1c12/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-jopdesign-ep1c12/config.help b/designs/leon3-jopdesign-ep1c12/config.help index ca82d286..4cd9d3aa 100644 --- a/designs/leon3-jopdesign-ep1c12/config.help +++ b/designs/leon3-jopdesign-ep1c12/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-jopdesign-ep1c12/lconfig.tk b/designs/leon3-jopdesign-ep1c12/lconfig.tk index def181b0..13455cbd 100755 --- a/designs/leon3-jopdesign-ep1c12/lconfig.tk +++ b/designs/leon3-jopdesign-ep1c12/lconfig.tk @@ -757,7 +757,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -767,7 +768,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -910,8 +913,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -930,6 +935,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1019,9 +1028,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1075,10 +1085,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1124,14 +1135,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1204,13 +1217,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1250,22 +1271,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1322,21 +1611,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1383,36 +1672,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1420,48 +1710,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1517,27 +1808,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1578,16 +1869,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1596,34 +1888,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1680,92 +1973,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1773,18 +2066,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1825,52 +2118,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1878,162 +2172,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2089,45 +2384,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2167,18 +2464,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2186,55 +2484,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2291,24 +2594,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2348,17 +2651,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2366,37 +2670,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2452,16 +2757,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2509,9 +2821,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2533,21 +2843,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2856,14 +3171,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2937,17 +3252,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3226,32 +3541,32 @@ proc menu15 {w title} { int $w.config.f 15 3 "RAM waitstates" CONFIG_SRCTRL_RAMWS int $w.config.f 15 4 "IO waitstates" CONFIG_SRCTRL_IOWS bool $w.config.f 15 5 "Use read-modify-write for sub-word writes " CONFIG_SRCTRL_RMW - global tmpvar_27 - minimenu $w.config.f 15 6 "SRAM banks" tmpvar_27 CONFIG_SRCTRL_SRBANKS1 + global tmpvar_29 + minimenu $w.config.f 15 6 "SRAM banks" tmpvar_29 CONFIG_SRCTRL_SRBANKS1 menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"SRAM banks\"" - $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_27 -value "3" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_27 -value "5" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_29 -value "3" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_29 -value "5" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 - global tmpvar_28 - minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_28 CONFIG_SRCTRL_BANKSZ0 + global tmpvar_30 + minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_30 CONFIG_SRCTRL_BANKSZ0 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"SRAM bank size (kb) (0 for programmable)\"" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_28 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_28 -value "256" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_28 -value "512" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_28 -value "1024" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_28 -value "2048" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_28 -value "4096" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_28 -value "8192" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_28 -value "16384" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_28 -value "32768" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_28 -value "65536" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_30 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_30 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_30 -value "512" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_30 -value "1024" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_30 -value "2048" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_30 -value "4096" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_30 -value "8192" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_30 -value "16384" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_30 -value "32768" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_30 -value "65536" -command "update_active" menusplit $w $w.config.f.x7.x.menu 14 int $w.config.f 15 8 "PROM bank select address bit (0 - 28)" CONFIG_SRCTRL_ROMASEL @@ -3327,46 +3642,46 @@ proc update_define_menu15 {} { global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then { set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW&15]} else {set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_SRCTRL_SRBANKS1 - if {$tmpvar_27 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} global CONFIG_SRCTRL_SRBANKS2 - if {$tmpvar_27 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} global CONFIG_SRCTRL_SRBANKS3 - if {$tmpvar_27 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} + if {$tmpvar_29 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} global CONFIG_SRCTRL_SRBANKS4 - if {$tmpvar_27 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} global CONFIG_SRCTRL_SRBANKS5 - if {$tmpvar_27 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} - global tmpvar_28 + if {$tmpvar_29 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} + global tmpvar_30 global CONFIG_SRCTRL_BANKSZ0 - if {$tmpvar_28 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} + if {$tmpvar_30 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} global CONFIG_SRCTRL_BANKSZ1 - if {$tmpvar_28 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} + if {$tmpvar_30 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} global CONFIG_SRCTRL_BANKSZ2 - if {$tmpvar_28 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} + if {$tmpvar_30 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} global CONFIG_SRCTRL_BANKSZ3 - if {$tmpvar_28 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} + if {$tmpvar_30 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} global CONFIG_SRCTRL_BANKSZ4 - if {$tmpvar_28 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} + if {$tmpvar_30 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} global CONFIG_SRCTRL_BANKSZ5 - if {$tmpvar_28 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} + if {$tmpvar_30 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} global CONFIG_SRCTRL_BANKSZ6 - if {$tmpvar_28 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} + if {$tmpvar_30 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} global CONFIG_SRCTRL_BANKSZ7 - if {$tmpvar_28 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} + if {$tmpvar_30 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} global CONFIG_SRCTRL_BANKSZ8 - if {$tmpvar_28 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} + if {$tmpvar_30 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} global CONFIG_SRCTRL_BANKSZ9 - if {$tmpvar_28 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} + if {$tmpvar_30 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} global CONFIG_SRCTRL_BANKSZ10 - if {$tmpvar_28 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} + if {$tmpvar_30 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} global CONFIG_SRCTRL_BANKSZ11 - if {$tmpvar_28 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} + if {$tmpvar_30 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} global CONFIG_SRCTRL_BANKSZ12 - if {$tmpvar_28 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} + if {$tmpvar_30 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} global CONFIG_SRCTRL_BANKSZ13 - if {$tmpvar_28 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} + if {$tmpvar_30 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_ROMASEL "$CONFIG_SRCTRL_ROMASEL" 19} } @@ -3718,16 +4033,16 @@ proc menu18 {w title} { hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_29 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 + global tmpvar_31 + minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_31 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3789,21 +4104,21 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_29 + global tmpvar_31 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_31 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3863,14 +4178,14 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 19 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_30 - minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 + global tmpvar_32 + minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_32 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_32 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3924,17 +4239,17 @@ proc update_define_menu19 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_30 + global tmpvar_32 global CONFIG_GRETH_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_32 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_32 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_32 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_32 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_32 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -4125,29 +4440,29 @@ proc menu21 {w title} { bool $w.config.f 21 2 "PCI DMA controller " CONFIG_PCI_MASTER_TARGET_DMA hex $w.config.f 21 3 "PCI vendor ID" CONFIG_PCI_VENDORID hex $w.config.f 21 4 "PCI device ID" CONFIG_PCI_DEVICEID - global tmpvar_31 - minimenu $w.config.f 21 5 "PCI FIFO depth" tmpvar_31 CONFIG_PCI_FIFO0 + global tmpvar_33 + minimenu $w.config.f 21 5 "PCI FIFO depth" tmpvar_33 CONFIG_PCI_FIFO0 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"PCI FIFO depth\"" - $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_31 -value "None" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_31 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_33 -value "None" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_33 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_33 -value "128" -command "update_active" menusplit $w $w.config.f.x5.x.menu 6 hex $w.config.f 21 6 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR bool $w.config.f 21 7 "PCI arbiter " CONFIG_PCI_ARBITER bool $w.config.f 21 8 "PCI arbiter APB interface " CONFIG_PCI_ARBITER_APB int $w.config.f 21 9 "Number of PCI REQ/GNT pairs" CONFIG_PCI_ARBITER_NREQ bool $w.config.f 21 10 "Enable PCI trace buffer " CONFIG_PCI_TRACE - global tmpvar_32 - minimenu $w.config.f 21 11 "PCI trace buffer depth" tmpvar_32 CONFIG_PCI_TRACE256 + global tmpvar_34 + minimenu $w.config.f 21 11 "PCI trace buffer depth" tmpvar_34 CONFIG_PCI_TRACE256 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"PCI trace buffer depth\"" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_32 -value "256" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_32 -value "512" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_32 -value "1024" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_32 -value "2048" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_32 -value "4096" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_34 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_34 -value "512" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_34 -value "1024" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_34 -value "2048" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_34 -value "4096" -command "update_active" menusplit $w $w.config.f.x11.x.menu 5 @@ -4231,19 +4546,19 @@ proc update_define_menu21 {} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_VENDORID "$CONFIG_PCI_VENDORID" 1AC8} global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_DEVICEID "$CONFIG_PCI_DEVICEID" 0054} - global tmpvar_31 + global tmpvar_33 global CONFIG_PCI_FIFO0 - if {$tmpvar_31 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} + if {$tmpvar_33 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} global CONFIG_PCI_FIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} + if {$tmpvar_33 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} global CONFIG_PCI_FIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} + if {$tmpvar_33 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} global CONFIG_PCI_FIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} + if {$tmpvar_33 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} global CONFIG_PCI_FIFO64 - if {$tmpvar_31 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} + if {$tmpvar_33 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} global CONFIG_PCI_FIFO128 - if {$tmpvar_31 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} + if {$tmpvar_33 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_HADDR "$CONFIG_PCI_HADDR" E00} global CONFIG_PCI_ARBITER @@ -4252,17 +4567,17 @@ proc update_define_menu21 {} { set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB&15]} else {set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB|16]} global CONFIG_PCI_ARBITER_NREQ if {($CONFIG_PCI_ARBITER == 1)} then {validate_int CONFIG_PCI_ARBITER_NREQ "$CONFIG_PCI_ARBITER_NREQ" 4} - global tmpvar_32 + global tmpvar_34 global CONFIG_PCI_TRACE256 - if {$tmpvar_32 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} + if {$tmpvar_34 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} global CONFIG_PCI_TRACE512 - if {$tmpvar_32 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} + if {$tmpvar_34 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} global CONFIG_PCI_TRACE1024 - if {$tmpvar_32 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} + if {$tmpvar_34 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} global CONFIG_PCI_TRACE2048 - if {$tmpvar_32 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} + if {$tmpvar_34 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} global CONFIG_PCI_TRACE4096 - if {$tmpvar_32 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} + if {$tmpvar_34 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} } @@ -4319,57 +4634,57 @@ proc menu22 {w title} { bool $w.config.f 22 0 "Enable Spacewire links " CONFIG_SPW_ENABLE int $w.config.f 22 1 "Number of links (1 - 3)" CONFIG_SPW_NUM - global tmpvar_33 - minimenu $w.config.f 22 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_33 CONFIG_SPW_AHBFIFO4 + global tmpvar_35 + minimenu $w.config.f 22 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_35 CONFIG_SPW_AHBFIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB RX/TX FIFO size (32-bit words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_33 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_35 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_35 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_35 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_35 -value "32" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_34 - minimenu $w.config.f 22 3 "Receiver FIFO size (bytes) " tmpvar_34 CONFIG_SPW_RXFIFO16 + global tmpvar_36 + minimenu $w.config.f 22 3 "Receiver FIFO size (bytes) " tmpvar_36 CONFIG_SPW_RXFIFO16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Receiver FIFO size (bytes) \"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_34 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_34 -value "32" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_34 -value "64" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_36 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_36 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_36 -value "64" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 22 4 "Enable RMAP protocol " CONFIG_SPW_RMAP - global tmpvar_35 - minimenu $w.config.f 22 5 "RMAP buffer size (bytes) " tmpvar_35 CONFIG_SPW_RMAPBUF2 + global tmpvar_37 + minimenu $w.config.f 22 5 "RMAP buffer size (bytes) " tmpvar_37 CONFIG_SPW_RMAPBUF2 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"RMAP buffer size (bytes) \"" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_35 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_35 -value "128" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_35 -value "192" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_35 -value "256" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_37 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_37 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_37 -value "192" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_37 -value "256" -command "update_active" menusplit $w $w.config.f.x5.x.menu 4 bool $w.config.f 22 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC bool $w.config.f 22 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL bool $w.config.f 22 8 "Spacewire FIFO protection " CONFIG_SPW_FT bool $w.config.f 22 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST int $w.config.f 22 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS - global tmpvar_36 - minimenu $w.config.f 22 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_36 CONFIG_SPW_GRSPW1 + global tmpvar_38 + minimenu $w.config.f 22 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_38 CONFIG_SPW_GRSPW1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Select GRSPW core (GRSPW1/GRSPW2) \"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_36 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_36 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_38 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_38 -value "2" -command "update_active" menusplit $w $w.config.f.x11.x.menu 2 int $w.config.f 22 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN bool $w.config.f 22 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME - global tmpvar_37 - minimenu $w.config.f 22 14 "Select receiver clock type " tmpvar_37 CONFIG_SPW_RX_SDR + global tmpvar_39 + minimenu $w.config.f 22 14 "Select receiver clock type " tmpvar_39 CONFIG_SPW_RX_SDR menu $w.config.f.x14.x.menu -tearoffcommand "menutitle \"Select receiver clock type \"" - $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_37 -value "SDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_37 -value "DDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_37 -value "Xor" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_37 -value "Aeroflex" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_39 -value "SDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_39 -value "DDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_39 -value "Xor" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_39 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x14.x.menu 4 - global tmpvar_38 - minimenu $w.config.f 22 15 "Select transmitter clock type " tmpvar_38 CONFIG_SPW_TX_SDR + global tmpvar_40 + minimenu $w.config.f 22 15 "Select transmitter clock type " tmpvar_40 CONFIG_SPW_TX_SDR menu $w.config.f.x15.x.menu -tearoffcommand "menutitle \"Select transmitter clock type \"" - $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_38 -value "SDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_38 -value "DDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_38 -value "Aeroflex" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_40 -value "SDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_40 -value "DDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_40 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x15.x.menu 3 @@ -4449,34 +4764,34 @@ proc update_define_menu22 {} { global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_NUM "$CONFIG_SPW_NUM" 1} - global tmpvar_33 + global tmpvar_35 global CONFIG_SPW_AHBFIFO4 - if {$tmpvar_33 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} + if {$tmpvar_35 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} global CONFIG_SPW_AHBFIFO8 - if {$tmpvar_33 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} + if {$tmpvar_35 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} global CONFIG_SPW_AHBFIFO16 - if {$tmpvar_33 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} + if {$tmpvar_35 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} global CONFIG_SPW_AHBFIFO32 - if {$tmpvar_33 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} - global tmpvar_34 + if {$tmpvar_35 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} + global tmpvar_36 global CONFIG_SPW_RXFIFO16 - if {$tmpvar_34 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} + if {$tmpvar_36 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} global CONFIG_SPW_RXFIFO32 - if {$tmpvar_34 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} + if {$tmpvar_36 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} global CONFIG_SPW_RXFIFO64 - if {$tmpvar_34 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} + if {$tmpvar_36 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP&15]} else {set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP|16]} - global tmpvar_35 + global tmpvar_37 global CONFIG_SPW_RMAPBUF2 - if {$tmpvar_35 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} + if {$tmpvar_37 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} global CONFIG_SPW_RMAPBUF4 - if {$tmpvar_35 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} + if {$tmpvar_37 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} global CONFIG_SPW_RMAPBUF6 - if {$tmpvar_35 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} + if {$tmpvar_37 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} global CONFIG_SPW_RMAPBUF8 - if {$tmpvar_35 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} + if {$tmpvar_37 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC&15]} else {set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC|16]} @@ -4491,32 +4806,32 @@ proc update_define_menu22 {} { set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST&15]} else {set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST|16]} global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_PORTS "$CONFIG_SPW_PORTS" 1} - global tmpvar_36 + global tmpvar_38 global CONFIG_SPW_GRSPW1 - if {$tmpvar_36 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} + if {$tmpvar_38 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} global CONFIG_SPW_GRSPW2 - if {$tmpvar_36 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} + if {$tmpvar_38 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} global CONFIG_SPW_DMACHAN if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {validate_int CONFIG_SPW_DMACHAN "$CONFIG_SPW_DMACHAN" 1} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME&15]} else {set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME|16]} - global tmpvar_37 + global tmpvar_39 global CONFIG_SPW_RX_SDR - if {$tmpvar_37 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} + if {$tmpvar_39 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} global CONFIG_SPW_RX_DDR - if {$tmpvar_37 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} + if {$tmpvar_39 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} global CONFIG_SPW_RX_XOR - if {$tmpvar_37 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} + if {$tmpvar_39 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} global CONFIG_SPW_RX_AFLEX - if {$tmpvar_37 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} - global tmpvar_38 + if {$tmpvar_39 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} + global tmpvar_40 global CONFIG_SPW_TX_SDR - if {$tmpvar_38 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} + if {$tmpvar_40 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} global CONFIG_SPW_TX_DDR - if {$tmpvar_38 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} + if {$tmpvar_40 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} global CONFIG_SPW_TX_AFLEX - if {$tmpvar_38 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} + if {$tmpvar_40 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} } @@ -4572,26 +4887,26 @@ proc menu23 {w title} { bool $w.config.f 23 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_39 - minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_39 CONFIG_UA1_FIFO1 + global tmpvar_41 + minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_41 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_39 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_39 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_39 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_39 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_39 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_39 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_41 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_41 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_41 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_41 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_41 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_41 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 23 2 "Enable secondary UART " CONFIG_UART2_ENABLE - global tmpvar_40 - minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_40 CONFIG_UA2_FIFO1 + global tmpvar_42 + minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_42 CONFIG_UA2_FIFO1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_40 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_40 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_40 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_40 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_40 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_40 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_42 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_42 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_42 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_42 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_42 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_42 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 6 bool $w.config.f 23 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 23 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4682,32 +4997,32 @@ proc update_menu23 {} { proc update_define_menu23 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_39 + global tmpvar_41 global CONFIG_UA1_FIFO1 - if {$tmpvar_39 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_41 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_39 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_41 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_39 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_41 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_39 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_41 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_39 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_41 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_39 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global tmpvar_40 + if {$tmpvar_41 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + global tmpvar_42 global CONFIG_UA2_FIFO1 - if {$tmpvar_40 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} + if {$tmpvar_42 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} global CONFIG_UA2_FIFO2 - if {$tmpvar_40 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} + if {$tmpvar_42 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} global CONFIG_UA2_FIFO4 - if {$tmpvar_40 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} + if {$tmpvar_42 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} global CONFIG_UA2_FIFO8 - if {$tmpvar_40 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} + if {$tmpvar_42 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} global CONFIG_UA2_FIFO16 - if {$tmpvar_40 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} + if {$tmpvar_42 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} global CONFIG_UA2_FIFO32 - if {$tmpvar_40 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} + if {$tmpvar_42 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4877,7 +5192,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4887,6 +5203,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4911,6 +5229,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4923,14 +5242,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4943,27 +5267,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4973,17 +5297,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4995,12 +5319,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -5010,10 +5334,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -5024,7 +5348,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -5036,26 +5360,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -5063,27 +5389,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -5104,7 +5434,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -5122,13 +5452,13 @@ set CONFIG_SRCTRL_PROMWS 3 set CONFIG_SRCTRL_RAMWS 0 set CONFIG_SRCTRL_IOWS 0 set CONFIG_SRCTRL_RMW 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_SRCTRL_SRBANKS1 0 set CONFIG_SRCTRL_SRBANKS2 0 set CONFIG_SRCTRL_SRBANKS3 0 set CONFIG_SRCTRL_SRBANKS4 0 set CONFIG_SRCTRL_SRBANKS5 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_SRCTRL_BANKSZ0 0 set CONFIG_SRCTRL_BANKSZ1 0 set CONFIG_SRCTRL_BANKSZ2 0 @@ -5163,7 +5493,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -5174,7 +5504,7 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 @@ -5191,7 +5521,7 @@ set CONFIG_PCI_MASTER_TARGET 0 set CONFIG_PCI_MASTER_TARGET_DMA 0 set CONFIG_PCI_VENDORID 1AC8 set CONFIG_PCI_DEVICEID 0054 -set tmpvar_31 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_PCI_FIFO0 0 set CONFIG_PCI_FIFO8 0 set CONFIG_PCI_FIFO16 0 @@ -5203,7 +5533,7 @@ set CONFIG_PCI_ARBITER 0 set CONFIG_PCI_ARBITER_APB 0 set CONFIG_PCI_ARBITER_NREQ 4 set CONFIG_PCI_TRACE 0 -set tmpvar_32 "(not set)" +set tmpvar_34 "(not set)" set CONFIG_PCI_TRACE256 0 set CONFIG_PCI_TRACE512 0 set CONFIG_PCI_TRACE1024 0 @@ -5211,17 +5541,17 @@ set CONFIG_PCI_TRACE2048 0 set CONFIG_PCI_TRACE4096 0 set CONFIG_SPW_ENABLE 0 set CONFIG_SPW_NUM 1 -set tmpvar_33 "(not set)" +set tmpvar_35 "(not set)" set CONFIG_SPW_AHBFIFO4 0 set CONFIG_SPW_AHBFIFO8 0 set CONFIG_SPW_AHBFIFO16 0 set CONFIG_SPW_AHBFIFO32 0 -set tmpvar_34 "(not set)" +set tmpvar_36 "(not set)" set CONFIG_SPW_RXFIFO16 0 set CONFIG_SPW_RXFIFO32 0 set CONFIG_SPW_RXFIFO64 0 set CONFIG_SPW_RMAP 0 -set tmpvar_35 "(not set)" +set tmpvar_37 "(not set)" set CONFIG_SPW_RMAPBUF2 0 set CONFIG_SPW_RMAPBUF4 0 set CONFIG_SPW_RMAPBUF6 0 @@ -5231,22 +5561,22 @@ set CONFIG_SPW_RXUNAL 0 set CONFIG_SPW_FT 0 set CONFIG_SPW_NETLIST 0 set CONFIG_SPW_PORTS 1 -set tmpvar_36 "(not set)" +set tmpvar_38 "(not set)" set CONFIG_SPW_GRSPW1 0 set CONFIG_SPW_GRSPW2 0 set CONFIG_SPW_DMACHAN 1 set CONFIG_SPW_RTSAME 0 -set tmpvar_37 "(not set)" +set tmpvar_39 "(not set)" set CONFIG_SPW_RX_SDR 0 set CONFIG_SPW_RX_DDR 0 set CONFIG_SPW_RX_XOR 0 set CONFIG_SPW_RX_AFLEX 0 -set tmpvar_38 "(not set)" +set tmpvar_40 "(not set)" set CONFIG_SPW_TX_SDR 0 set CONFIG_SPW_TX_DDR 0 set CONFIG_SPW_TX_AFLEX 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_39 "(not set)" +set tmpvar_41 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5254,7 +5584,7 @@ set CONFIG_UA1_FIFO8 0 set CONFIG_UA1_FIFO16 0 set CONFIG_UA1_FIFO32 0 set CONFIG_UART2_ENABLE 0 -set tmpvar_40 "(not set)" +set tmpvar_42 "(not set)" set CONFIG_UA2_FIFO1 0 set CONFIG_UA2_FIFO2 0 set CONFIG_UA2_FIFO4 0 @@ -5332,7 +5662,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5342,6 +5673,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5380,6 +5713,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5392,9 +5726,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5408,239 +5743,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5685,13 +6170,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5720,29 +6205,29 @@ proc writeconfig {file1 file2} { if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_IOWS $CONFIG_SRCTRL_IOWS $notmod } global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_RMW $CONFIG_SRCTRL_RMW [list $notmod] 2 } - global tmpvar_27 + global tmpvar_29 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } - if { $tmpvar_27 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } - if { $tmpvar_27 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} - global tmpvar_28 + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } + if { $tmpvar_29 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } + if { $tmpvar_29 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} + global tmpvar_30 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } - if { $tmpvar_28 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } - if { $tmpvar_28 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } - if { $tmpvar_28 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } - if { $tmpvar_28 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } - if { $tmpvar_28 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } - if { $tmpvar_28 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } - if { $tmpvar_28 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } - if { $tmpvar_28 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } + if { $tmpvar_30 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } + if { $tmpvar_30 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } + if { $tmpvar_30 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } + if { $tmpvar_30 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } + if { $tmpvar_30 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } + if { $tmpvar_30 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } + if { $tmpvar_30 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } + if { $tmpvar_30 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } + if { $tmpvar_30 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } + if { $tmpvar_30 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_ROMASEL $CONFIG_SRCTRL_ROMASEL $notmod } write_comment $cfg $autocfg "Leon2 memory controller " @@ -5786,27 +6271,27 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_30 + global tmpvar_32 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_32 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "CAN " global CONFIG_CAN_ENABLE write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 @@ -5832,14 +6317,14 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_VENDORID $CONFIG_PCI_VENDORID $notmod } global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_DEVICEID $CONFIG_PCI_DEVICEID $notmod } - global tmpvar_31 + global tmpvar_33 if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then { - if { $tmpvar_31 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } - if { $tmpvar_31 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} + if { $tmpvar_33 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } + if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_33 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } + if { $tmpvar_33 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_HADDR $CONFIG_PCI_HADDR $notmod } global CONFIG_PCI_ARBITER @@ -5850,37 +6335,37 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_ARBITER == 1)} then {write_int $cfg $autocfg CONFIG_PCI_ARBITER_NREQ $CONFIG_PCI_ARBITER_NREQ $notmod } global CONFIG_PCI_TRACE write_tristate $cfg $autocfg CONFIG_PCI_TRACE $CONFIG_PCI_TRACE [list $notmod] 2 - global tmpvar_32 + global tmpvar_34 if {($CONFIG_PCI_TRACE == 1)} then { - if { $tmpvar_32 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } - if { $tmpvar_32 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } - if { $tmpvar_32 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } - if { $tmpvar_32 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } - if { $tmpvar_32 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} + if { $tmpvar_34 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } + if { $tmpvar_34 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } + if { $tmpvar_34 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } + if { $tmpvar_34 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } + if { $tmpvar_34 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} write_comment $cfg $autocfg "Spacewire " global CONFIG_SPW_ENABLE write_tristate $cfg $autocfg CONFIG_SPW_ENABLE $CONFIG_SPW_ENABLE [list $notmod] 2 global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_NUM $CONFIG_SPW_NUM $notmod } - global tmpvar_33 + global tmpvar_35 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_33 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } - if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } - if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } - if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} - global tmpvar_34 + if { $tmpvar_35 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } + if { $tmpvar_35 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } + if { $tmpvar_35 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } + if { $tmpvar_35 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} + global tmpvar_36 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_34 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } - if { $tmpvar_34 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } - if { $tmpvar_34 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} + if { $tmpvar_36 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } + if { $tmpvar_36 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } + if { $tmpvar_36 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAP $CONFIG_SPW_RMAP [list $notmod] 2 } - global tmpvar_35 + global tmpvar_37 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then { - if { $tmpvar_35 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } - if { $tmpvar_35 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } - if { $tmpvar_35 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } - if { $tmpvar_35 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} + if { $tmpvar_37 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } + if { $tmpvar_37 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } + if { $tmpvar_37 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } + if { $tmpvar_37 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAPCRC $CONFIG_SPW_RMAPCRC [list $notmod] 2 } global CONFIG_SPW_RXUNAL @@ -5891,47 +6376,47 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_NETLIST $CONFIG_SPW_NETLIST [list $notmod] 2 } global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_PORTS $CONFIG_SPW_PORTS $notmod } - global tmpvar_36 + global tmpvar_38 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_36 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } - if { $tmpvar_36 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} + if { $tmpvar_38 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } + if { $tmpvar_38 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} global CONFIG_SPW_DMACHAN global CONFIG_SPW_GRSPW2 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_int $cfg $autocfg CONFIG_SPW_DMACHAN $CONFIG_SPW_DMACHAN $notmod } global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RTSAME $CONFIG_SPW_RTSAME [list $notmod] 2 } - global tmpvar_37 + global tmpvar_39 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_37 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } - if { $tmpvar_37 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } - if { $tmpvar_37 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } - if { $tmpvar_37 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} - global tmpvar_38 + if { $tmpvar_39 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } + if { $tmpvar_39 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } + if { $tmpvar_39 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } + if { $tmpvar_39 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} + global tmpvar_40 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_38 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } - if { $tmpvar_38 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } - if { $tmpvar_38 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} + if { $tmpvar_40 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } + if { $tmpvar_40 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } + if { $tmpvar_40 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_39 + global tmpvar_41 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_39 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_39 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_39 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_39 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_39 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_39 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_41 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_41 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_41 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_41 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_41 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_41 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_UART2_ENABLE write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2 - global tmpvar_40 + global tmpvar_42 if {($CONFIG_UART2_ENABLE == 1)} then { - if { $tmpvar_40 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_40 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_40 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_40 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_40 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_40 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_42 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_42 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_42 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_42 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_42 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_42 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -6004,7 +6489,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -6014,6 +6500,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -6032,8 +6520,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -6116,11 +6609,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -6141,6 +6636,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -6296,8 +6795,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -6316,6 +6817,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -6356,458 +6861,484 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "1" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "1" global CONFIG_SRCTRL_SRBANKS1 - if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_29 "1" } global CONFIG_SRCTRL_SRBANKS2 - if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_29 "2" } global CONFIG_SRCTRL_SRBANKS3 - if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_27 "3" } + if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_29 "3" } global CONFIG_SRCTRL_SRBANKS4 - if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_29 "4" } global CONFIG_SRCTRL_SRBANKS5 - if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_27 "5" } - global tmpvar_28 - set tmpvar_28 "0" + if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_29 "5" } + global tmpvar_30 + set tmpvar_30 "0" global CONFIG_SRCTRL_BANKSZ0 - if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_30 "8" } global CONFIG_SRCTRL_BANKSZ1 - if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_30 "16" } global CONFIG_SRCTRL_BANKSZ2 - if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_30 "32" } global CONFIG_SRCTRL_BANKSZ3 - if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_28 "64" } + if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_30 "64" } global CONFIG_SRCTRL_BANKSZ4 - if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_28 "128" } + if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_30 "128" } global CONFIG_SRCTRL_BANKSZ5 - if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_28 "256" } + if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_30 "256" } global CONFIG_SRCTRL_BANKSZ6 - if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_28 "512" } + if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_30 "512" } global CONFIG_SRCTRL_BANKSZ7 - if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_28 "1024" } + if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_30 "1024" } global CONFIG_SRCTRL_BANKSZ8 - if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_28 "2048" } + if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_30 "2048" } global CONFIG_SRCTRL_BANKSZ9 - if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_28 "4096" } + if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_30 "4096" } global CONFIG_SRCTRL_BANKSZ10 - if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_28 "8192" } + if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_30 "8192" } global CONFIG_SRCTRL_BANKSZ11 - if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_28 "16384" } + if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_30 "16384" } global CONFIG_SRCTRL_BANKSZ12 - if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_28 "32768" } + if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_30 "32768" } global CONFIG_SRCTRL_BANKSZ13 - if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_28 "65536" } - global tmpvar_29 - set tmpvar_29 "4" + if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_30 "65536" } + global tmpvar_31 + set tmpvar_31 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_31 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_31 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_31 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_31 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_31 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_31 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } - global tmpvar_30 - set tmpvar_30 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_31 "64" } + global tmpvar_32 + set tmpvar_32 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_32 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_32 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_32 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_32 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } - global tmpvar_31 - set tmpvar_31 "8" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_32 "64" } + global tmpvar_33 + set tmpvar_33 "8" global CONFIG_PCI_FIFO0 - if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_31 "None" } + if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_33 "None" } global CONFIG_PCI_FIFO8 - if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_33 "8" } global CONFIG_PCI_FIFO16 - if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_33 "16" } global CONFIG_PCI_FIFO32 - if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_31 "32" } + if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_33 "32" } global CONFIG_PCI_FIFO64 - if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_31 "64" } + if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_33 "64" } global CONFIG_PCI_FIFO128 - if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_31 "128" } - global tmpvar_32 - set tmpvar_32 "256" + if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_33 "128" } + global tmpvar_34 + set tmpvar_34 "256" global CONFIG_PCI_TRACE256 - if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_32 "256" } + if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_34 "256" } global CONFIG_PCI_TRACE512 - if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_32 "512" } + if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_34 "512" } global CONFIG_PCI_TRACE1024 - if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_32 "1024" } + if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_34 "1024" } global CONFIG_PCI_TRACE2048 - if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_32 "2048" } + if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_34 "2048" } global CONFIG_PCI_TRACE4096 - if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_32 "4096" } - global tmpvar_33 - set tmpvar_33 "16" + if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_34 "4096" } + global tmpvar_35 + set tmpvar_35 "16" global CONFIG_SPW_AHBFIFO4 - if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_33 "4" } + if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_35 "4" } global CONFIG_SPW_AHBFIFO8 - if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_33 "8" } + if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_35 "8" } global CONFIG_SPW_AHBFIFO16 - if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_33 "16" } + if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_35 "16" } global CONFIG_SPW_AHBFIFO32 - if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_33 "32" } - global tmpvar_34 - set tmpvar_34 "16" + if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_35 "32" } + global tmpvar_36 + set tmpvar_36 "16" global CONFIG_SPW_RXFIFO16 - if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_34 "16" } + if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_36 "16" } global CONFIG_SPW_RXFIFO32 - if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_34 "32" } + if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_36 "32" } global CONFIG_SPW_RXFIFO64 - if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_34 "64" } - global tmpvar_35 - set tmpvar_35 "64" + if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_36 "64" } + global tmpvar_37 + set tmpvar_37 "64" global CONFIG_SPW_RMAPBUF2 - if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_35 "64" } + if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_37 "64" } global CONFIG_SPW_RMAPBUF4 - if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_35 "128" } + if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_37 "128" } global CONFIG_SPW_RMAPBUF6 - if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_35 "192" } + if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_37 "192" } global CONFIG_SPW_RMAPBUF8 - if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_35 "256" } - global tmpvar_36 - set tmpvar_36 "2" + if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_37 "256" } + global tmpvar_38 + set tmpvar_38 "2" global CONFIG_SPW_GRSPW1 - if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_36 "1" } + if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_38 "1" } global CONFIG_SPW_GRSPW2 - if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_36 "2" } - global tmpvar_37 - set tmpvar_37 "DDR" + if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_38 "2" } + global tmpvar_39 + set tmpvar_39 "DDR" global CONFIG_SPW_RX_SDR - if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_37 "SDR" } + if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_39 "SDR" } global CONFIG_SPW_RX_DDR - if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_37 "DDR" } + if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_39 "DDR" } global CONFIG_SPW_RX_XOR - if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_37 "Xor" } + if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_39 "Xor" } global CONFIG_SPW_RX_AFLEX - if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_37 "Aeroflex" } - global tmpvar_38 - set tmpvar_38 "SDR" + if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_39 "Aeroflex" } + global tmpvar_40 + set tmpvar_40 "SDR" global CONFIG_SPW_TX_SDR - if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_38 "SDR" } + if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_40 "SDR" } global CONFIG_SPW_TX_DDR - if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_38 "DDR" } + if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_40 "DDR" } global CONFIG_SPW_TX_AFLEX - if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_38 "Aeroflex" } - global tmpvar_39 - set tmpvar_39 "1" + if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_40 "Aeroflex" } + global tmpvar_41 + set tmpvar_41 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_39 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_41 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_39 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_41 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_39 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_41 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_39 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_41 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_39 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_41 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_39 "32" } - global tmpvar_40 - set tmpvar_40 "1" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_41 "32" } + global tmpvar_42 + set tmpvar_42 "1" global CONFIG_UA2_FIFO1 - if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_40 "1" } + if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_42 "1" } global CONFIG_UA2_FIFO2 - if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_40 "2" } + if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_42 "2" } global CONFIG_UA2_FIFO4 - if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_40 "4" } + if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_42 "4" } global CONFIG_UA2_FIFO8 - if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_40 "8" } + if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_42 "8" } global CONFIG_UA2_FIFO16 - if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_40 "16" } + if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_42 "16" } global CONFIG_UA2_FIFO32 - if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_40 "32" } + if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_42 "32" } } diff --git a/designs/leon3-jopdesign-ep1c12/leon3mp.vhd b/designs/leon3-jopdesign-ep1c12/leon3mp.vhd index cbc8dc9f..7644bf48 100644 --- a/designs/leon3-jopdesign-ep1c12/leon3mp.vhd +++ b/designs/leon3-jopdesign-ep1c12/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-jopdesign-ep1c12/testbench.vhd b/designs/leon3-jopdesign-ep1c12/testbench.vhd index a66b1d6d..c79b491b 100644 --- a/designs/leon3-jopdesign-ep1c12/testbench.vhd +++ b/designs/leon3-jopdesign-ep1c12/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-jopdesign-ep1c12/tkconfig.h b/designs/leon3-jopdesign-ep1c12/tkconfig.h index f47757f7..b839a88a 100644 --- a/designs/leon3-jopdesign-ep1c12/tkconfig.h +++ b/designs/leon3-jopdesign-ep1c12/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-lattice-latticeECP3/.config b/designs/leon3-lattice-latticeECP3/.config deleted file mode 100755 index 6f286aaa..00000000 --- a/designs/leon3-lattice-latticeECP3/.config +++ /dev/null @@ -1,285 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_LEON3FT_PRESENT=y -CONFIG_HAS_SHARED_GRFPU=y - -# -# Synthesis -# -# CONFIG_SYN_INFERRED is not set -# CONFIG_SYN_STRATIX is not set -# CONFIG_SYN_STRATIXII is not set -# CONFIG_SYN_STRATIXIII is not set -# CONFIG_SYN_CYCLONEIII is not set -# CONFIG_SYN_ALTERA is not set -# CONFIG_SYN_ATC18 is not set -CONFIG_SYN_LATTICE=y -# CONFIG_SYN_ECLIPSE is not set -# CONFIG_SYN_UMC is not set -# CONFIG_SYN_SPARTAN2 is not set -# CONFIG_SYN_SPARTAN3 is not set -# CONFIG_SYN_SPARTAN3E is not set -# CONFIG_SYN_SPARTAN6 is not set -# CONFIG_SYN_VIRTEX is not set -# CONFIG_SYN_VIRTEXE is not set -# CONFIG_SYN_VIRTEX2 is not set -# CONFIG_SYN_VIRTEX4 is not set -# CONFIG_SYN_VIRTEX5 is not set -# CONFIG_SYN_VIRTEX6 is not set -CONFIG_SYN_INFER_RAM=y -CONFIG_SYN_INFER_PADS=y -# CONFIG_SYN_NO_ASYNC is not set -# CONFIG_SYN_SCAN is not set - -# -# Clock generation -# -CONFIG_CLK_INFERRED=y -# CONFIG_CLK_HCLKBUF is not set -# CONFIG_CLK_UT130HBD is not set -# CONFIG_CLK_ALTDLL is not set -# CONFIG_CLK_LATDLL is not set -# CONFIG_CLK_PRO3PLL is not set -# CONFIG_CLK_PRO3EPLL is not set -# CONFIG_CLK_PRO3LPLL is not set -# CONFIG_CLK_FUSPLL is not set -# CONFIG_CLK_LIB18T is not set -# CONFIG_CLK_RHUMC is not set -# CONFIG_CLK_CLKDLL is not set -# CONFIG_CLK_DCM is not set -# CONFIG_PCI_SYSCLK is not set -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 - -# -# Processor -# - -# -# Integer unit -# -CONFIG_IU_NWINDOWS=8 -CONFIG_IU_V8MULDIV=y -CONFIG_IU_MUL_LATENCY_2=y -# CONFIG_IU_MUL_LATENCY_4 is not set -# CONFIG_IU_MUL_LATENCY_5 is not set -CONFIG_IU_MUL_INFERRED=y -# CONFIG_IU_MUL_MODGEN is not set -# CONFIG_IU_MUL_TECHSPEC is not set -# CONFIG_IU_MUL_DW is not set -CONFIG_IU_BP=y -CONFIG_IU_SVT=y -# CONFIG_NOTAG is not set -CONFIG_IU_LDELAY=1 -CONFIG_IU_WATCHPOINTS=2 -CONFIG_PWD=y -CONFIG_IU_RSTADDR=00000 - -# -# Floating-point unit -# -# CONFIG_FPU_ENABLE is not set - -# -# Cache system -# -CONFIG_ICACHE_ENABLE=y -# CONFIG_ICACHE_ASSO1 is not set -CONFIG_ICACHE_ASSO2=y -# CONFIG_ICACHE_ASSO3 is not set -# CONFIG_ICACHE_ASSO4 is not set -# CONFIG_ICACHE_SZ1 is not set -# CONFIG_ICACHE_SZ2 is not set -# CONFIG_ICACHE_SZ4 is not set -CONFIG_ICACHE_SZ8=y -# CONFIG_ICACHE_SZ16 is not set -# CONFIG_ICACHE_SZ32 is not set -# CONFIG_ICACHE_SZ64 is not set -# CONFIG_ICACHE_SZ128 is not set -# CONFIG_ICACHE_SZ256 is not set -# CONFIG_ICACHE_LZ16 is not set -CONFIG_ICACHE_LZ32=y -# CONFIG_ICACHE_ALGORND is not set -# CONFIG_ICACHE_ALGODIR is not set -# CONFIG_ICACHE_ALGOLRR is not set -CONFIG_ICACHE_ALGOLRU=y -# CONFIG_ICACHE_LOCK is not set -CONFIG_DCACHE_ENABLE=y -# CONFIG_DCACHE_ASSO1 is not set -CONFIG_DCACHE_ASSO2=y -# CONFIG_DCACHE_ASSO3 is not set -# CONFIG_DCACHE_ASSO4 is not set -# CONFIG_DCACHE_SZ1 is not set -# CONFIG_DCACHE_SZ2 is not set -CONFIG_DCACHE_SZ4=y -# CONFIG_DCACHE_SZ8 is not set -# CONFIG_DCACHE_SZ16 is not set -# CONFIG_DCACHE_SZ32 is not set -# CONFIG_DCACHE_SZ64 is not set -# CONFIG_DCACHE_SZ128 is not set -# CONFIG_DCACHE_SZ256 is not set -CONFIG_DCACHE_LZ16=y -# CONFIG_DCACHE_LZ32 is not set -# CONFIG_DCACHE_ALGORND is not set -# CONFIG_DCACHE_ALGODIR is not set -# CONFIG_DCACHE_ALGOLRR is not set -CONFIG_DCACHE_ALGOLRU=y -# CONFIG_DCACHE_LOCK is not set -CONFIG_DCACHE_SNOOP=y -CONFIG_DCACHE_SNOOP_FAST=y -CONFIG_DCACHE_SNOOP_SEPTAG=y -CONFIG_CACHE_FIXED=0 - -# -# MMU -# -CONFIG_MMU_ENABLE=y -# CONFIG_MMU_COMBINED is not set -CONFIG_MMU_SPLIT=y -CONFIG_MMU_REPARRAY=y -# CONFIG_MMU_REPINCREMENT is not set -# CONFIG_MMU_I2 is not set -# CONFIG_MMU_I4 is not set -CONFIG_MMU_I8=y -# CONFIG_MMU_I16 is not set -# CONFIG_MMU_I32 is not set -# CONFIG_MMU_D2 is not set -# CONFIG_MMU_D4 is not set -CONFIG_MMU_D8=y -# CONFIG_MMU_D16 is not set -# CONFIG_MMU_D32 is not set -CONFIG_MMU_FASTWB=y -CONFIG_MMU_PAGE_4K=y -# CONFIG_MMU_PAGE_8K is not set -# CONFIG_MMU_PAGE_16K is not set -# CONFIG_MMU_PAGE_32K is not set -# CONFIG_MMU_PAGE_PROG is not set - -# -# Debug Support Unit -# -CONFIG_DSU_ENABLE=y -CONFIG_DSU_ITRACE=y -# CONFIG_DSU_ITRACESZ1 is not set -# CONFIG_DSU_ITRACESZ2 is not set -CONFIG_DSU_ITRACESZ4=y -# CONFIG_DSU_ITRACESZ8 is not set -# CONFIG_DSU_ITRACESZ16 is not set -CONFIG_DSU_ATRACE=y -# CONFIG_DSU_ATRACESZ1 is not set -# CONFIG_DSU_ATRACESZ2 is not set -CONFIG_DSU_ATRACESZ4=y -# CONFIG_DSU_ATRACESZ8 is not set -# CONFIG_DSU_ATRACESZ16 is not set - -# -# Fault-tolerance -# -# CONFIG_LEON3FT_EN is not set - -# -# VHDL debug settings -# -# CONFIG_IU_DISAS is not set -# CONFIG_DEBUG_PC32 is not set - -# -# AMBA configuration -# -CONFIG_AHB_DEFMST=0 -CONFIG_AHB_RROBIN=y -CONFIG_AHB_SPLIT=y -# CONFIG_AHB_FPNPEN is not set -CONFIG_AHB_IOADDR=FFF -CONFIG_APB_HADDR=800 -# CONFIG_AHB_MON is not set -# CONFIG_AHB_DTRACE is not set - -# -# Debug Link -# -CONFIG_DSU_UART=y -# CONFIG_DSU_JTAG is not set -CONFIG_DSU_ETH=y -# CONFIG_DSU_ETHSZ1 is not set -# CONFIG_DSU_ETHSZ2 is not set -CONFIG_DSU_ETHSZ4=y -# CONFIG_DSU_ETHSZ8 is not set -# CONFIG_DSU_ETHSZ16 is not set -CONFIG_DSU_IPMSB=C0A8 -CONFIG_DSU_IPLSB=0085 -CONFIG_DSU_ETHMSB=020000 -CONFIG_DSU_ETHLSB=000033 -# CONFIG_DSU_ETH_PROG is not set -# CONFIG_DSU_ETH_DIS is not set - -# -# Peripherals -# - -# -# Memory controllers -# - -# -# Leon2 memory controller -# -CONFIG_MCTRL_LEON2=y -# CONFIG_MCTRL_8BIT is not set -CONFIG_MCTRL_16BIT=y -# CONFIG_MCTRL_5CS is not set -# CONFIG_MCTRL_SDRAM is not set - -# -# On-chip RAM/ROM -# -CONFIG_AHBROM_ENABLE=y -CONFIG_AHBROM_START=000 -CONFIG_AHBROM_PIPE=y -CONFIG_AHBRAM_ENABLE=y -# CONFIG_AHBRAM_SZ1 is not set -# CONFIG_AHBRAM_SZ2 is not set -CONFIG_AHBRAM_SZ4=y -# CONFIG_AHBRAM_SZ8 is not set -# CONFIG_AHBRAM_SZ16 is not set -# CONFIG_AHBRAM_SZ32 is not set -# CONFIG_AHBRAM_SZ64 is not set -CONFIG_AHBRAM_START=A00 - -# -# Ethernet interface -# -CONFIG_GRETH_ENABLE=y -# CONFIG_GRETH_GIGA is not set -# CONFIG_GRETH_FIFO4 is not set -# CONFIG_GRETH_FIFO8 is not set -# CONFIG_GRETH_FIFO16 is not set -CONFIG_GRETH_FIFO32=y -# CONFIG_GRETH_FIFO64 is not set - -# -# UARTs, timers and irq control -# -CONFIG_UART1_ENABLE=y -# CONFIG_UA1_FIFO1 is not set -# CONFIG_UA1_FIFO2 is not set -CONFIG_UA1_FIFO4=y -# CONFIG_UA1_FIFO8 is not set -# CONFIG_UA1_FIFO16 is not set -# CONFIG_UA1_FIFO32 is not set -CONFIG_IRQ3_ENABLE=y -# CONFIG_IRQ3_SEC is not set -CONFIG_GPT_ENABLE=y -CONFIG_GPT_NTIM=2 -CONFIG_GPT_SW=8 -CONFIG_GPT_TW=32 -CONFIG_GPT_IRQ=8 -CONFIG_GPT_SEPIRQ=y -CONFIG_GPT_WDOGEN=y -CONFIG_GPT_WDOG=FFFF - -# -# VHDL Debugging -# -CONFIG_DEBUG_UART=y diff --git a/designs/leon3-lattice-latticeECP3/Makefile b/designs/leon3-lattice-latticeECP3/Makefile deleted file mode 100644 index 00f90cb2..00000000 --- a/designs/leon3-lattice-latticeECP3/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -include .config -GRLIB=../.. -TOP=leon3mp -BOARD=lattice-ecp3-lfe3-35ea -include $(GRLIB)/boards/$(BOARD)/Makefile.inc -DEVICE=$(PART)-$(PACKAGE)$(SPEED) -LPF=$(GRLIB)/boards/$(BOARD)/$(TOP).lpf -PRF=$(GRLIB)/boards/$(BOARD)/$(TOP).prf -EFFORT=high -SYNPOPT="set_option -pipe 0; set_option -retiming 0; set_option -write_apr_constraint 0" -VHDLSYNFILES=config.vhd ahbrom.vhd leon3mp.vhd -VHDLSIMFILES=testbench.vhd -SIMTOP=testbench - -#VHDLOPTSYNFILES= \ - -SDCFILE=default.sdc -BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut -CLEAN=soft-clean -TECHLIBS = secureip - -LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann usbhc spw gsi cypress hynix \ - spansion - -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - usb grusbhc spacewire ata haps coremp7 ascs slink spi hcan \ - leon4 leon4b64 l2cache pwm gr1553b iommu ac97 - -FILESKIP = grcan.vhd ddr2.v mobile_ddr.v - -#GRLIB_CONFIG = grlib_config.vhd - -include $(GRLIB)/bin/Makefile -include $(GRLIB)/software/leon3/Makefile - -################## project specific targets ########################## - diff --git a/designs/leon3-lattice-latticeECP3/README.txt b/designs/leon3-lattice-latticeECP3/README.txt deleted file mode 100644 index 6deb907a..00000000 --- a/designs/leon3-lattice-latticeECP3/README.txt +++ /dev/null @@ -1,116 +0,0 @@ - -This leon3 design is tailored to the LatticeECP3 Versa Evaluation Board ------------------------------------------------------------------------ - -Design specifics: - -* System reset is mapped to the FPGA GSRN button - -* FTDI High-Speed USB IC contains UART interface where AHB DSU UART is - connected (I/O pins G19, G20). - -* Additional UART, the console UART (APB UART 1), is available on - x3 Expansion Connector - pins 6, 7. - -* The GRETH core (connected to PHY#2 interface) is enabled and runs without - problems at 100 Mbit. Using 1 Gbit is also possible with the commercial - grlib version. Ethernet debug link (EDCL) is enabled, - default IP is 192.168.0.133. - -* Design contains memory controller instantiation for connecting to - simulation model of generic 16-bit async SRAM. This helps to simulate the design. - -* The JTAG DSU interface is not available - JTAG TAP controller is under development. - -* DDR3 support is under development. - -* PCI Express x1 support is under development. - -* The LEON3 processor can run up to 65 - 80 MHz on the board in the typical - configuration. - -* LEDs on the board are configured as follows: - led(0) <= not cgo.clklock; - led(1) <= not cgo1.clklock; - led(2) <= errorn_s; - led(4) <= not dsuo.active; - led(5) <= not gpto.wdog; - led(6) <= not dui.rxd; (possibly not uart1i.rxd or not etho.tx_en) - led(7) <= not duo.txd; (possibly not uart1o.txd or not etho.tx_er) - - -* Sample output from GRMON is: - - GRMON2 LEON debug monitor v2.0.24b internal version - - Copyright (C) 2012 Aeroflex Gaisler - All rights reserved. - For latest updates, go to http://www.gaisler.com/ - Comments or bug-reports to support@gaisler.com - - -Parsing -eth 192.168.0.133 - ethernet startup - -Commands missing help: - - GRLIB build version: 4113 - Detected frequency: 100 MHz - - Component Vendor - LEON3 SPARC V8 Processor Aeroflex Gaisler - AHB Debug UART Aeroflex Gaisler - GR Ethernet MAC Aeroflex Gaisler - LEON2 Memory Controller European Space Agency - AHB/APB Bridge Aeroflex Gaisler - LEON3 Debug Support Unit Aeroflex Gaisler - Single-port AHB SRAM module Aeroflex Gaisler - Generic AHB ROM Aeroflex Gaisler - Generic UART Aeroflex Gaisler - Multi-processor Interrupt Ctrl. Aeroflex Gaisler - Modular Timer Unit Aeroflex Gaisler - - Use command 'info sys' to print a detailed report of attached cores - - -grmon2> info sys - cpu0 Aeroflex Gaisler LEON3 SPARC V8 Processor - AHB Master 0 - ahbuart0 Aeroflex Gaisler AHB Debug UART - AHB Master 1 - APB: 80000700 - 80000800 - Baudrate 115200, AHB frequency 100000000.00 - greth0 Aeroflex Gaisler GR Ethernet MAC - AHB Master 2 - APB: 80000F00 - 80001000 - IRQ: 12 - edcl ip 192.168.0.133, buffer 4 kbyte - mctrl0 European Space Agency LEON2 Memory Controller - APB: 80000000 - 80000100 - apbmst0 Aeroflex Gaisler AHB/APB Bridge - AHB: 80000000 - 80100000 - dsu0 Aeroflex Gaisler LEON3 Debug Support Unit - AHB: 90000000 - A0000000 - AHB trace: 256 lines, 32-bit bus - CPU0: win 8, hwbp 2, itrace 256, V8 mul/div, srmmu, lddel 1 - stack pointer 0xa0000ff0 - icache 2 * 8 kB, 32 B/line lru - dcache 2 * 4 kB, 16 B/line lru - ahbram0 Aeroflex Gaisler Single-port AHB SRAM module - AHB: A0000000 - A0100000 - 32-bit static ram: 4 kB @ 0xa0000000 - adev7 Aeroflex Gaisler Generic AHB ROM - AHB: 00000000 - 00100000 - uart0 Aeroflex Gaisler Generic UART - APB: 80000100 - 80000200 - IRQ: 2 - Baudrate 38343 - irqmp0 Aeroflex Gaisler Multi-processor Interrupt Ctrl. - APB: 80000200 - 80000300 - gptimer0 Aeroflex Gaisler Modular Timer Unit - APB: 80000300 - 80000400 - IRQ: 8 - 8-bit scalar, 2 * 32-bit timers, divisor 100 - -grmon2> - - diff --git a/designs/leon3-lattice-latticeECP3/default.sdc b/designs/leon3-lattice-latticeECP3/default.sdc deleted file mode 100644 index 3ddb9a8c..00000000 --- a/designs/leon3-lattice-latticeECP3/default.sdc +++ /dev/null @@ -1,52 +0,0 @@ -# Synopsys, Inc. constraint file -# /home/martins/GRLib/from_web/grlib-gpl-1.1.0-b4113/designs/leon3-lattice-latticeECP3/default.sdc -# Written on Fri Mar 23 11:11:37 2012 -# by Synplify Pro, D-2010.03-SP1-1 Scope Editor - -# -# Collections -# - -# -# Clocks -# -define_clock -name {clk_in} -freq 100.000 -clockgroup default_clkgroup -define_clock -name {txc} -freq 50.000 -clockgroup phy_tx_clkgroup -route 10.000 -define_clock -name {rxc} -freq 50.000 -clockgroup phy_rx_clkgroup -route 2.000 -define_clock -name {leon3mp|egtx_clk} -freq 125.000 -clockgroup phy_egtx_clkgroup -route 2.000 -define_clock -name {leon3mp|clkgen0.clkin} -freq 100.000 -route 2.0 -clockgroup ahb_clkgroup - -# -# Clock to Clock -# - -# -# Inputs/Outputs -# -define_output_delay -disable -default 10.00 -improve 0.00 -route 0.00 -ref {clk:r} -define_input_delay -disable -default 10.00 -improve 0.00 -route 0.00 -ref {clk:r} - -# -# Registers -# - -# -# Delay Paths -# - -# -# Attributes -# -define_global_attribute {syn_useioff} {1} - -# -# I/O Standards -# - -# -# Compile Points -# - -# -# Other -# diff --git a/designs/leon3-lattice-latticeECP3/lconfig.tk b/designs/leon3-lattice-latticeECP3/lconfig.tk deleted file mode 100755 index 53e3fe5e..00000000 --- a/designs/leon3-lattice-latticeECP3/lconfig.tk +++ /dev/null @@ -1,5280 +0,0 @@ -# FILE: header.tk -# This file is boilerplate TCL/TK function definitions for 'make xconfig'. -# -# CHANGES -# ======= -# -# 8 January 1999, Michael Elizabeth Chastain, -# - Remove unused do_cmd function (part of the 2.0 sound support). -# - Arrange buttons in three columns for better screen fitting. -# - Add CONSTANT_Y, CONSTANT_M, CONSTANT_N for commands like: -# dep_tristate 'foo' CONFIG_FOO m -# -# 23 January 1999, Michael Elizabeth Chastain, -# - Shut vfix the hell up. -# -# 24 January 1999, Michael Elizabeth Chastain, -# - Improve the exit message (Jeff Ronne). - -# -# This is a handy replacement for ".widget cget" that requires neither tk4 -# nor additional source code uglification. -# -proc cget { w option } { - return "[lindex [$w configure $option] 4]" -} - -# -# Function to compensate for broken config.in scripts like the sound driver, -# which make dependencies on variables that are never even conditionally -# defined. -# -proc vfix { var } { - global $var - if [ catch {eval concat $$var} ] { - set $var 4 - } -} - -# -# Constant values used by certain dep_tristate commands. -# -set CONSTANT_Y 1 -set CONSTANT_M 2 -set CONSTANT_N 0 -set CONSTANT_E 4 - -# -# Create a "reference" object to steal colors from. -# -button .ref - -# -# On monochrome displays, -disabledforeground is blank by default; that's -# bad. Fill it with -foreground instead. -# -if { [cget .ref -disabledforeground] == "" } { - .ref configure -disabledforeground [cget .ref -foreground] -} - - -# -# Define some macros we will need to parse the config.in file. -# - -proc mainmenu_name { text } { - wm title . "$text" -} - -proc menu_option { w menu_num text } { - global menus_per_column - global processed_top_level - set processed_top_level [expr $processed_top_level + 1] - if { $processed_top_level <= $menus_per_column } then { - set myframe left - } elseif { $processed_top_level <= [expr 2 * $menus_per_column] } then { - set myframe middle - } else { - set myframe right - } - button .f0.x$menu_num -anchor w -text "$text" \ - -command "$w .$w \"$text\"" - pack .f0.x$menu_num -pady 0 -side top -fill x -in .f0.$myframe -} - -proc load_configfile { w title func } { - catch {destroy $w} - toplevel $w -class Dialog - global loadfile - frame $w.x - label $w.bm -bitmap questhead - pack $w.bm -pady 10 -side top -padx 10 - label $w.x.l -text "Enter filename:" -relief raised - entry $w.x.x -width 35 -relief sunken -borderwidth 2 \ - -textvariable loadfile - pack $w.x.l $w.x.x -anchor w -side left - pack $w.x -side top -pady 10 - wm title $w "$title" - - set oldFocus [focus] - frame $w.f - button $w.f.back -text "OK" -width 20 \ - -command "destroy $w; focus $oldFocus;$func .fileio" - button $w.f.canc -text "Cancel" \ - -width 20 -command "destroy $w; focus $oldFocus" - pack $w.f.back $w.f.canc -side left -pady 10 -padx 45 - pack $w.f -pady 10 -side bottom -padx 10 -anchor w - focus $w - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - wm geometry $w +$winx+$winy -} - -bind all {maybe_exit .maybe} - -proc maybe_exit { w } { - catch {destroy $w} - toplevel $w -class Dialog - label $w.bm -bitmap questhead - pack $w.bm -pady 10 -side top -padx 10 - message $w.m -width 400 -aspect 300 \ - -text "Changes will be lost. Are you sure?" -relief flat - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Are you sure?" - - set oldFocus [focus] - frame $w.f - button $w.f.back -text "OK" -width 20 \ - -command "exit 1" - button $w.f.canc -text "Cancel" \ - -width 20 -command "destroy $w; focus $oldFocus" - pack $w.f.back $w.f.canc -side left -pady 10 -padx 45 - pack $w.f -pady 10 -side bottom -padx 10 -anchor w - bind $w "exit 1" - bind $w "destroy $w; focus $oldFocus" - focus $w - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - wm geometry $w +$winx+$winy -} - -proc read_config_file { w } { - global loadfile - if { [string length $loadfile] != 0 && [file readable $loadfile] == 1 } then { - read_config $loadfile - } else { - catch {destroy $w} - toplevel $w -class Dialog - message $w.m -width 400 -aspect 300 -text \ - "Unable to read file $loadfile" \ - -relief raised - label $w.bm -bitmap error - pack $w.bm $w.m -pady 10 -side top -padx 10 - wm title $w "Xconfig Internal Error" - - set oldFocus [focus] - frame $w.f - button $w.f.back -text "Bummer" \ - -width 10 -command "destroy $w; focus $oldFocus" - pack $w.f.back -side bottom -pady 10 -anchor s - pack $w.f -pady 10 -side top -padx 10 -anchor s - focus $w - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - wm geometry $w +$winx+$winy - } -} - -proc write_config_file { w } { - global loadfile - if { [string length $loadfile] != 0 - && ([file writable $loadfile] == 1 || ([file exists $loadfile] == 0 && [file writable [file dirname $loadfile]] == 1)) } then { - writeconfig $loadfile .null - } else { - catch {destroy $w} - toplevel $w -class Dialog - message $w.m -width 400 -aspect 300 -text \ - "Unable to write file $loadfile" \ - -relief raised - label $w.bm -bitmap error - pack $w.bm $w.m -pady 10 -side top -padx 10 - wm title $w "Xconfig Internal Error" - - set oldFocus [focus] - frame $w.f - button $w.f.back -text "OK" \ - -width 10 -command "destroy $w; focus $oldFocus" - pack $w.f.back -side bottom -pady 10 -anchor s - pack $w.f -pady 10 -side top -padx 10 -anchor s - focus $w - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - wm geometry $w +$winx+$winy - } -} - -proc read_config { filename } { - set file1 [open $filename r] - clear_choices - while { [gets $file1 line] >= 0} { - if [regexp {([0-9A-Za-z_]+)=([ynm])} $line foo var value] { - if { $value == "y" } then { set cmd "global $var; set $var 1" } - if { $value == "n" } then { set cmd "global $var; set $var 0" } - if { $value == "m" } then { set cmd "global $var; set $var 2" } - eval $cmd - } - if [regexp {# ([0-9A-Za-z_]+) is not set} $line foo var] { - set cmd "global $var; set $var 0" - eval $cmd - } - if [regexp {([0-9A-Za-z_]+)=([0-9A-Fa-f]+)} $line foo var value] { - set cmd "global $var; set $var $value" - eval $cmd - } - if [regexp {([0-9A-Za-z_]+)="([^"]*)"} $line foo var value] { - set cmd "global $var; set $var \"$value\"" - eval $cmd - } - } - close $file1 - update_choices - update_mainmenu -} -proc write_comment { file1 file2 text } { - puts $file1 "" - puts $file1 "#" - puts $file1 "# $text" - puts $file1 "#" - puts $file2 "/*" - puts $file2 " * $text" - puts $file2 " */" -} - -proc effective_dep { deplist } { - global CONFIG_MODULES - set depend 1 - foreach i $deplist { - if {$i == 0} then {set depend 0} - if {$i == 2 && $depend == 1} then {set depend 2} - } - if {$depend == 2 && $CONFIG_MODULES == 0} then {set depend 0} - return $depend -} - -proc sync_tristate { var dep } { - global CONFIG_MODULES - if {$dep == 0 && ($var == 1 || $var == 2)} then { - set var 0 - } elseif {$dep == 2 && $var == 1} then { - set var 2 - } elseif {$var == 2 && $CONFIG_MODULES == 0} then { - if {$dep == 1} then {set var 1} else {set var 0} - } - return $var -} - -proc sync_bool { var dep modset } { - set var [sync_tristate $var $dep] - if {$dep == 2 && $var == 2} then { - set var $modset - } - return $var -} - -proc write_tristate { file1 file2 varname variable deplist modset } { - set variable [sync_tristate $variable [effective_dep $deplist]] - if { $variable == 2 } \ - then { set variable $modset } - if { $variable == 1 } \ - then { puts $file1 "$varname=y"; \ - puts $file2 "#define $varname 1" } \ - elseif { $variable == 2 } \ - then { puts $file1 "$varname=m"; \ - puts $file2 "#undef $varname"; \ - puts $file2 "#define ${varname}_MODULE 1" } \ - elseif { $variable == 0 } \ - then { puts $file1 "# $varname is not set"; \ - puts $file2 "#undef $varname"} \ - else { \ - puts stdout "ERROR - Attempting to write value for unconfigured variable ($varname)." \ - } -} - -proc write_int { file1 file2 varname variable dep } { - if { $dep == 0 } \ - then { puts $file1 "# $varname is not set"; \ - puts $file2 "#undef $varname"} \ - else { - puts $file1 "$varname=$variable"; \ - puts $file2 "#define $varname ($variable)"; \ - } -} - -proc write_hex { file1 file2 varname variable dep } { - if { $dep == 0 } \ - then { puts $file1 "# $varname is not set"; \ - puts $file2 "#undef $varname"} \ - else { - puts $file1 "$varname=$variable"; \ - puts -nonewline $file2 "#define $varname "; \ - puts $file2 [exec echo $variable | sed s/^0\[xX\]//]; \ - } -} - -proc write_string { file1 file2 varname variable dep } { - if { $dep == 0 } \ - then { puts $file1 "# $varname is not set"; \ - puts $file2 "#undef $varname"} \ - else { - puts $file1 "$varname=\"$variable\""; \ - puts $file2 "#define $varname \"$variable\""; \ - } -} - -proc option_name {w mnum line text helpidx} { - button $w.x$line.l -text "$text" -relief groove -anchor w - $w.x$line.l configure -activefore [cget $w.x$line.l -fg] \ - -activeback [cget $w.x$line.l -bg] - button $w.x$line.help -text "Help" -relief raised \ - -command "dohelp .dohelp $helpidx .menu$mnum" - pack $w.x$line.help -side right -fill y - pack $w.x$line.l -side right -fill both -expand on -} - -proc toggle_switch2 {w mnum line text variable} { - frame $w.x$line -relief sunken - radiobutton $w.x$line.y -text "y" -variable $variable -value 1 \ - -relief groove -width 2 -command "update_active" -# radiobutton $w.x$line.m -text "-" -variable $variable -value 2 \ -# -relief groove -width 2 -command "update_active" - radiobutton $w.x$line.n -text "n" -variable $variable -value 0 \ - -relief groove -width 2 -command "update_active" - - option_name $w $mnum $line $text $variable - - pack $w.x$line.n $w.x$line.y -side right -fill y -} - -proc toggle_switch3 {w mnum line text variable} { - frame $w.x$line -relief sunken - radiobutton $w.x$line.y -text "y" -variable $variable -value 1 \ - -relief groove -width 2 -command "update_active" - radiobutton $w.x$line.m -text "m" -variable $variable -value 2 \ - -relief groove -width 2 -command "update_active" - radiobutton $w.x$line.n -text "n" -variable $variable -value 0 \ - -relief groove -width 2 -command "update_active" - - option_name $w $mnum $line $text $variable - - global CONFIG_MODULES - if {($CONFIG_MODULES == 0)} then { - $w.x$line.m configure -state disabled - } - pack $w.x$line.n $w.x$line.m $w.x$line.y -side right -fill y -} - -proc bool {w mnum line text variable} { - toggle_switch2 $w $mnum $line $text $variable -# $w.x$line.m configure -state disabled - pack $w.x$line -anchor w -fill both -expand on -} - -proc tristate {w mnum line text variable } { - toggle_switch3 $w $mnum $line $text $variable - pack $w.x$line -anchor w -fill both -expand on -} - -proc dep_tristate {w mnum line text variable } { - tristate $w $mnum $line $text $variable -} - -proc dep_bool {w mnum line text variable } { - bool $w $mnum $line $text $variable -} - -proc int { w mnum line text variable } { - frame $w.x$line - entry $w.x$line.x -width 11 -relief sunken -borderwidth 2 \ - -textvariable $variable - option_name $w $mnum $line $text $variable - pack $w.x$line.x -anchor w -side right -fill y - pack $w.x$line -anchor w -fill both -expand on -} - -proc hex { w mnum line text variable } { - int $w $mnum $line $text $variable -} - -proc istring { w mnum line text variable } { - frame $w.x$line - entry $w.x$line.x -width 18 -relief sunken -borderwidth 2 \ - -textvariable $variable - option_name $w $mnum $line $text $variable - pack $w.x$line.x -anchor w -side right -fill y - pack $w.x$line -anchor w -fill both -expand on -} - -proc minimenu { w mnum line text variable helpidx } { - frame $w.x$line - menubutton $w.x$line.x -textvariable $variable -menu \ - $w.x$line.x.menu -relief raised \ - -anchor w - option_name $w $mnum $line $text $helpidx - pack $w.x$line.x -anchor w -side right -fill y - pack $w.x$line -anchor w -fill both -expand on -} - -proc menusplit {w m n} { - if { $n > 2 } then { - update idletasks - set menuoptsize [expr [$m yposition 2] - [$m yposition 1]] - set maxsize [winfo screenheight $w] - set splitpoint [expr $maxsize * 4 / 5 / $menuoptsize - 1] - for {set i [expr $splitpoint + 1]} {$i <= $n} {incr i $splitpoint} { - $m entryconfigure $i -columnbreak 1 - } - } -} - -proc menutitle {text menu w} { - wm title $w "$text" -} - -proc submenu { w mnum line text subnum } { - frame $w.x$line - button $w.x$line.l -text "" -width 9 -relief groove - $w.x$line.l configure -activefore [cget $w.x$line.l -fg] \ - -activeback [cget $w.x$line.l -bg] -state disabled - button $w.x$line.m -text "$text" -relief raised -anchor w \ - -command "catch {destroy .menu$subnum}; menu$subnum .menu$subnum \"$text\"" - pack $w.x$line.l -side left -fill both - pack $w.x$line.m -anchor w -side right -fill both -expand on - pack $w.x$line -anchor w -fill both -expand on -} - -proc comment {w mnum line text } { - frame $w.x$line - button $w.x$line.l -text "" -width 15 -relief groove - $w.x$line.l configure -activefore [cget $w.x$line.l -fg] \ - -activeback [cget $w.x$line.l -bg] -state disabled - button $w.x$line.m -text "$text" -relief groove -anchor w - $w.x$line.m configure -activefore [cget $w.x$line.m -fg] \ - -activeback [cget $w.x$line.m -bg] - pack $w.x$line.l -side left -fill both - pack $w.x$line.m -anchor w -side right -fill both -expand on - pack $w.x$line -anchor w -fill both -expand on -} - -proc readhelp {tag fn} { - set message "" - set b 0 - if { [file readable $fn] == 1} then { - set fhandle [open $fn r] - while {[gets $fhandle inline] >= 0} { - if { $b == 0 } { - if { [regexp $tag $inline ] } { - set b 1 - set message "$inline:\n" - } - } else { - if { [regexp {^[^ \t]} $inline]} { - break - } - set message "$message\n$inline" - } - } - close $fhandle - } - return $message -} - -proc dohelp {w var parent} { - catch {destroy $w} - toplevel $w -class Dialog - - set filefound 0 - set found 0 - set lineno 0 - - if { [file readable config.help] == 1} then { - set filefound 1 - # First escape sed regexp special characters in var: - set var [exec echo "$var" | sed s/\[\]\[\/.^$*\]/\\\\&/g] - # Now pick out right help text: - set message [readhelp $var config.help] - set found [expr [string length "$message"] > 0] - } - - frame $w.f1 - pack $w.f1 -fill both -expand on - - # Do the OK button - # - set oldFocus [focus] - frame $w.f2 - button $w.f2.ok -text "OK" \ - -width 10 -command "destroy $w; catch {focus $oldFocus}" - pack $w.f2.ok -side bottom -pady 6 -anchor n - pack $w.f2 -side bottom -padx 10 -anchor s - - scrollbar $w.f1.vscroll -command "$w.f1.canvas yview" - pack $w.f1.vscroll -side right -fill y - - canvas $w.f1.canvas -relief flat -borderwidth 0 \ - -yscrollcommand "$w.f1.vscroll set" - frame $w.f1.f - pack $w.f1.canvas -side right -fill y -expand on - - if { $found == 0 } then { - if { $filefound == 0 } then { - message $w.f1.f.m -width 750 -aspect 300 -relief flat -text \ - "No help available - unable to open file config.help." - } else { - message $w.f1.f.m -width 400 -aspect 300 -relief flat -text \ - "No help available for $var" - } - label $w.f1.bm -bitmap error - wm title $w "RTFM" - } else { - text $w.f1.f.m -width 73 -relief flat -wrap word - $w.f1.f.m insert 0.0 $message - $w.f1.f.m conf -state disabled -height [$w.f1.f.m index end] - - label $w.f1.bm -bitmap info - wm title $w "Configuration help" - } - pack $w.f1.f.m -side left - pack $w.f1.bm $w.f1.f -side left -padx 10 - - focus $w - set winx [expr [winfo x $parent]+20] - set winy [expr [winfo y $parent]+20] - wm geometry $w +$winx+$winy - set sizok [expr [winfo reqheight $w.f2.ok] + 12] - set maxy [expr [winfo screenheight .] * 3 / 4] - set canvtotal [winfo reqheight $w.f1.f.m] - if [expr $sizok + $canvtotal < $maxy] { - set sizy $canvtotal - } else { - set sizy [expr $maxy - $sizok] - } - $w.f1.canvas configure -height $sizy -width [winfo reqwidth $w.f1.f.m] \ - -scrollregion "0 0 [winfo reqwidth $w.f1.f.m] \ - [winfo reqheight $w.f1.f.m]" - $w.f1.canvas create window 0 0 -anchor nw -window $w.f1.f - update idletasks - - set maxy [winfo screenheight .] - if [expr $sizok + $canvtotal < $maxy] { - set sizy [expr $sizok + $canvtotal] - } else { - set sizy $maxy - } - wm maxsize $w [winfo width $w] $sizy -} - -bind all { catch {exec cp -f .config .config.old}; \ - writeconfig .config config.h; wrapup .wrap } - -proc wrapup {w } { - catch {destroy $w} - toplevel $w -class Dialog - - global CONFIG_MODVERSIONS; vfix CONFIG_MODVERSIONS - message $w.m -width 460 -aspect 300 -relief raised -text \ - "End of design configuration. " - label $w.bm -bitmap info - pack $w.bm $w.m -pady 10 -side top -padx 10 - wm title $w "LEON build instructions" - - set oldFocus [focus] - frame $w.f - button $w.f.back -text "OK" \ - -width 10 -command "exit 2" - pack $w.f.back -side bottom -pady 10 -anchor s - pack $w.f -pady 10 -side top -padx 10 -anchor s - focus $w - bind $w "exit 2" - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - wm geometry $w +$winx+$winy - -} - -proc unregister_active {num} { - global active_menus - set index [lsearch -exact $active_menus $num] - if {$index != -1} then {set active_menus [lreplace $active_menus $index $index]} -} - -proc update_active {} { - global active_menus total_menus - set max 0 - if {[llength $active_menus] > 0} then { - set max [lindex $active_menus end] - update_define [toplevel_menu [lindex $active_menus 0]] $max 0 - } - foreach i $active_menus { - if {[winfo exists .menu$i] == 0} then { - unregister_active $i - } else { - update_menu$i - } - } - update_define [expr $max + 1] $total_menus 1 - update_mainmenu -} - -proc configure_entry {w option items} { - foreach i $items { - $w.$i configure -state $option - } -} - -proc validate_int {name val default} { - if {([exec echo $val | sed s/^-//g | tr -d \[:digit:\] ] != "")} then { - global $name; set $name $default - } -} - -proc validate_hex {name val default} { - if {([exec echo $val | tr -d \[:xdigit:\] ] != "")} then { - global $name; set $name $default - } -} - -proc update_define {first last allow_update} { - for {set i $first} {$i <= $last} {incr i} { - update_define_menu$i - if {$allow_update == 1} then update - } -} - -# -# Next set up the particulars for the top level menu, and define a few -# buttons which we will stick down at the bottom. -# - -frame .f0 -frame .f0.left -frame .f0.middle -frame .f0.right - -set active_menus [list] -set processed_top_level 0 -set ARCH sparc -set menus_per_column 4 -set total_menus 19 - -proc toplevel_menu {num} { - if {$num == 4} then {return 3} - if {$num == 5} then {return 3} - if {$num == 6} then {return 3} - if {$num == 7} then {return 3} - if {$num == 8} then {return 3} - if {$num == 9} then {return 3} - if {$num == 10} then {return 3} - if {$num == 14} then {return 13} - if {$num == 15} then {return 14} - if {$num == 16} then {return 13} - if {$num == 17} then {return 13} - if {$num == 18} then {return 13} - return $num -} - -mainmenu_name "LEON3MP LatticeECP3 Versa Design Configuration" -menu_option menu1 1 "Synthesis " -proc menu1 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 1} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 1]] - message $w.m -width 400 -aspect 300 -text \ - "Synthesis " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Synthesis " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 1; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 1; menu2 .menu2 \"$title\"" - frame $w.f - button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 1" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 1; menu0 .menu0 \"$title\"" - $w.f.prev configure -state disabled - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - global tmpvar_0 - minimenu $w.config.f 1 0 "Target technology " tmpvar_0 CONFIG_SYN_INFERRED - menu $w.config.f.x0.x.menu -tearoffcommand "menutitle \"Target technology \"" - $w.config.f.x0.x.menu add radiobutton -label "Inferred" -variable tmpvar_0 -value "Inferred" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Altera-Stratix" -variable tmpvar_0 -value "Altera-Stratix" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Altera-StratixII" -variable tmpvar_0 -value "Altera-StratixII" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Altera-StratixIII" -variable tmpvar_0 -value "Altera-StratixIII" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Altera-CycloneIII" -variable tmpvar_0 -value "Altera-CycloneIII" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Altera-Others" -variable tmpvar_0 -value "Altera-Others" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Atmel-ATC18" -variable tmpvar_0 -value "Atmel-ATC18" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Lattice-EC/ECP/XP" -variable tmpvar_0 -value "Lattice-EC/ECP/XP" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Quicklogic-Eclipse" -variable tmpvar_0 -value "Quicklogic-Eclipse" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex" -variable tmpvar_0 -value "Xilinx-Virtex" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-VirtexE" -variable tmpvar_0 -value "Xilinx-VirtexE" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex2" -variable tmpvar_0 -value "Xilinx-Virtex2" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 20 - global tmpvar_1 - minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" - $w.config.f.x1.x.menu add radiobutton -label "Inferred" -variable tmpvar_1 -value "Inferred" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "UMC18" -variable tmpvar_1 -value "UMC18" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Virage" -variable tmpvar_1 -value "Virage" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Virage-TSMC90" -variable tmpvar_1 -value "Virage-TSMC90" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 4 - bool $w.config.f 1 2 "Infer RAM" CONFIG_SYN_INFER_RAM - bool $w.config.f 1 3 "Infer pads" CONFIG_SYN_INFER_PADS - bool $w.config.f 1 4 "Disable asynchronous reset" CONFIG_SYN_NO_ASYNC - bool $w.config.f 1 5 "Enable scan support " CONFIG_SYN_SCAN - - - - focus $w - update_active - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu1 {} { - global CONFIG_SYN_INFERRED - global CONFIG_SYN_CUSTOM1 - global CONFIG_SYN_ATC18 - global CONFIG_SYN_TSMC90 - global CONFIG_SYN_UMC - global CONFIG_SYN_RHUMC - global CONFIG_SYN_ARTISAN - if {($CONFIG_SYN_INFERRED == 1 || $CONFIG_SYN_CUSTOM1 == 1 || $CONFIG_SYN_ATC18 == 1 || $CONFIG_SYN_TSMC90 == 1 || $CONFIG_SYN_UMC == 1 || $CONFIG_SYN_RHUMC == 1 || $CONFIG_SYN_ARTISAN == 1)} then {configure_entry .menu1.config.f.x1 normal {x l}} else {configure_entry .menu1.config.f.x1 disabled {x l}} - global CONFIG_SYN_INFER_RAM - if {($CONFIG_SYN_INFERRED != 1)} then { - configure_entry .menu1.config.f.x2 normal {n l y}} else {configure_entry .menu1.config.f.x2 disabled {y n l}} - global CONFIG_SYN_INFER_PADS - if {($CONFIG_SYN_INFERRED != 1)} then { - configure_entry .menu1.config.f.x3 normal {n l y}} else {configure_entry .menu1.config.f.x3 disabled {y n l}} -} - - -proc update_define_menu1 {} { - update_define_mainmenu - global CONFIG_MODULES - global tmpvar_0 - global CONFIG_SYN_INFERRED - if {$tmpvar_0 == "Inferred"} then {set CONFIG_SYN_INFERRED 1} else {set CONFIG_SYN_INFERRED 0} - global CONFIG_SYN_STRATIX - if {$tmpvar_0 == "Altera-Stratix"} then {set CONFIG_SYN_STRATIX 1} else {set CONFIG_SYN_STRATIX 0} - global CONFIG_SYN_STRATIXII - if {$tmpvar_0 == "Altera-StratixII"} then {set CONFIG_SYN_STRATIXII 1} else {set CONFIG_SYN_STRATIXII 0} - global CONFIG_SYN_STRATIXIII - if {$tmpvar_0 == "Altera-StratixIII"} then {set CONFIG_SYN_STRATIXIII 1} else {set CONFIG_SYN_STRATIXIII 0} - global CONFIG_SYN_CYCLONEIII - if {$tmpvar_0 == "Altera-CycloneIII"} then {set CONFIG_SYN_CYCLONEIII 1} else {set CONFIG_SYN_CYCLONEIII 0} - global CONFIG_SYN_ALTERA - if {$tmpvar_0 == "Altera-Others"} then {set CONFIG_SYN_ALTERA 1} else {set CONFIG_SYN_ALTERA 0} - global CONFIG_SYN_ATC18 - if {$tmpvar_0 == "Atmel-ATC18"} then {set CONFIG_SYN_ATC18 1} else {set CONFIG_SYN_ATC18 0} - global CONFIG_SYN_LATTICE - if {$tmpvar_0 == "Lattice-EC/ECP/XP"} then {set CONFIG_SYN_LATTICE 1} else {set CONFIG_SYN_LATTICE 0} - global CONFIG_SYN_ECLIPSE - if {$tmpvar_0 == "Quicklogic-Eclipse"} then {set CONFIG_SYN_ECLIPSE 1} else {set CONFIG_SYN_ECLIPSE 0} - global CONFIG_SYN_UMC - if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} - global CONFIG_SYN_SPARTAN3 - if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} - global CONFIG_SYN_SPARTAN3E - if {$tmpvar_0 == "Xilinx-Spartan3E"} then {set CONFIG_SYN_SPARTAN3E 1} else {set CONFIG_SYN_SPARTAN3E 0} - global CONFIG_SYN_SPARTAN6 - if {$tmpvar_0 == "Xilinx-Spartan6"} then {set CONFIG_SYN_SPARTAN6 1} else {set CONFIG_SYN_SPARTAN6 0} - global CONFIG_SYN_VIRTEX - if {$tmpvar_0 == "Xilinx-Virtex"} then {set CONFIG_SYN_VIRTEX 1} else {set CONFIG_SYN_VIRTEX 0} - global CONFIG_SYN_VIRTEXE - if {$tmpvar_0 == "Xilinx-VirtexE"} then {set CONFIG_SYN_VIRTEXE 1} else {set CONFIG_SYN_VIRTEXE 0} - global CONFIG_SYN_VIRTEX2 - if {$tmpvar_0 == "Xilinx-Virtex2"} then {set CONFIG_SYN_VIRTEX2 1} else {set CONFIG_SYN_VIRTEX2 0} - global CONFIG_SYN_VIRTEX4 - if {$tmpvar_0 == "Xilinx-Virtex4"} then {set CONFIG_SYN_VIRTEX4 1} else {set CONFIG_SYN_VIRTEX4 0} - global CONFIG_SYN_VIRTEX5 - if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} - global CONFIG_SYN_VIRTEX6 - if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} - global tmpvar_1 - global CONFIG_MEM_INFERRED - if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} - global CONFIG_MEM_UMC - if {$tmpvar_1 == "UMC18"} then {set CONFIG_MEM_UMC 1} else {set CONFIG_MEM_UMC 0} - global CONFIG_MEM_VIRAGE - if {$tmpvar_1 == "Virage"} then {set CONFIG_MEM_VIRAGE 1} else {set CONFIG_MEM_VIRAGE 0} - global CONFIG_MEM_VIRAGE90 - if {$tmpvar_1 == "Virage-TSMC90"} then {set CONFIG_MEM_VIRAGE90 1} else {set CONFIG_MEM_VIRAGE90 0} - global CONFIG_SYN_INFER_RAM - if {($CONFIG_SYN_INFERRED != 1)} then { - set CONFIG_SYN_INFER_RAM [expr $CONFIG_SYN_INFER_RAM&15]} else {set CONFIG_SYN_INFER_RAM [expr $CONFIG_SYN_INFER_RAM|16]} - global CONFIG_SYN_INFER_PADS - if {($CONFIG_SYN_INFERRED != 1)} then { - set CONFIG_SYN_INFER_PADS [expr $CONFIG_SYN_INFER_PADS&15]} else {set CONFIG_SYN_INFER_PADS [expr $CONFIG_SYN_INFER_PADS|16]} -} - - -menu_option menu2 2 "Clock generation" -proc menu2 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 2} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 2]] - message $w.m -width 400 -aspect 300 -text \ - "Clock generation" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Clock generation" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 2; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 2; menu3 .menu3 \"$title\"" - frame $w.f - button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 2" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 2; menu1 .menu1 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 2; menu1 .menu1 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - global tmpvar_2 - minimenu $w.config.f 2 0 "Clock generator " tmpvar_2 CONFIG_CLK_INFERRED - menu $w.config.f.x0.x.menu -tearoffcommand "menutitle \"Clock generator \"" - $w.config.f.x0.x.menu add radiobutton -label "Inferred" -variable tmpvar_2 -value "Inferred" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Actel-HCLKBUF" -variable tmpvar_2 -value "Actel-HCLKBUF" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Aeroflex-UT130HBD" -variable tmpvar_2 -value "Aeroflex-UT130HBD" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Altera-ALTPLL" -variable tmpvar_2 -value "Altera-ALTPLL" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Lattice-EXPLL" -variable tmpvar_2 -value "Lattice-EXPLL" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Proasic3-PLL" -variable tmpvar_2 -value "Proasic3-PLL" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Proasic3E-PLL" -variable tmpvar_2 -value "Proasic3E-PLL" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Proasic3L-PLL" -variable tmpvar_2 -value "Proasic3L-PLL" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 - int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL - int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV - int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV - int $w.config.f 2 4 "Outout division factor, 2nd clk (0 - 32, see help)" CONFIG_OCLKB_DIV - int $w.config.f 2 5 "Outout division factor, 3rd clk (0 - 32, see help)" CONFIG_OCLKC_DIV - bool $w.config.f 2 6 "Enable Xilinx CLKDLL for PCI clock" CONFIG_PCI_CLKDLL - bool $w.config.f 2 7 "Disable external feedback for SDRAM clock" CONFIG_CLK_NOFB - bool $w.config.f 2 8 "Use PCI clock as system clock" CONFIG_PCI_SYSCLK - - - - focus $w - update_active - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu2 {} { - global CONFIG_CLK_DCM - global CONFIG_CLK_ALTDLL - global CONFIG_CLK_LATDLL - global CONFIG_CLK_PRO3PLL - global CONFIG_CLK_PRO3EPLL - global CONFIG_CLK_PRO3LPLL - global CONFIG_CLK_CLKDLL - global CONFIG_CLK_LIB18T - global CONFIG_CLK_FUSPLL - global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} - global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} - global CONFIG_OCLK_DIV - if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} - global CONFIG_OCLKB_DIV - if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x4.l configure -state normal; } else {.menu2.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x4.l configure -state disabled} - global CONFIG_OCLKC_DIV - if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x5.l configure -state normal; } else {.menu2.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x5.l configure -state disabled} - global CONFIG_PCI_CLKDLL - if {($CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_DCM == 1)} then { - configure_entry .menu2.config.f.x6 normal {n l y}} else {configure_entry .menu2.config.f.x6 disabled {y n l}} - global CONFIG_CLK_NOFB - if {($CONFIG_CLK_DCM == 1)} then { - configure_entry .menu2.config.f.x7 normal {n l y}} else {configure_entry .menu2.config.f.x7 disabled {y n l}} - global CONFIG_PCI_ENABLE - global CONFIG_PCI_SYSCLK - if {($CONFIG_PCI_ENABLE != 1)} then { - configure_entry .menu2.config.f.x8 normal {n l y}} else {configure_entry .menu2.config.f.x8 disabled {y n l}} -} - - -proc update_define_menu2 {} { - update_define_mainmenu - global CONFIG_MODULES - global tmpvar_2 - global CONFIG_CLK_INFERRED - if {$tmpvar_2 == "Inferred"} then {set CONFIG_CLK_INFERRED 1} else {set CONFIG_CLK_INFERRED 0} - global CONFIG_CLK_HCLKBUF - if {$tmpvar_2 == "Actel-HCLKBUF"} then {set CONFIG_CLK_HCLKBUF 1} else {set CONFIG_CLK_HCLKBUF 0} - global CONFIG_CLK_UT130HBD - if {$tmpvar_2 == "Aeroflex-UT130HBD"} then {set CONFIG_CLK_UT130HBD 1} else {set CONFIG_CLK_UT130HBD 0} - global CONFIG_CLK_ALTDLL - if {$tmpvar_2 == "Altera-ALTPLL"} then {set CONFIG_CLK_ALTDLL 1} else {set CONFIG_CLK_ALTDLL 0} - global CONFIG_CLK_LATDLL - if {$tmpvar_2 == "Lattice-EXPLL"} then {set CONFIG_CLK_LATDLL 1} else {set CONFIG_CLK_LATDLL 0} - global CONFIG_CLK_PRO3PLL - if {$tmpvar_2 == "Proasic3-PLL"} then {set CONFIG_CLK_PRO3PLL 1} else {set CONFIG_CLK_PRO3PLL 0} - global CONFIG_CLK_PRO3EPLL - if {$tmpvar_2 == "Proasic3E-PLL"} then {set CONFIG_CLK_PRO3EPLL 1} else {set CONFIG_CLK_PRO3EPLL 0} - global CONFIG_CLK_PRO3LPLL - if {$tmpvar_2 == "Proasic3L-PLL"} then {set CONFIG_CLK_PRO3LPLL 1} else {set CONFIG_CLK_PRO3LPLL 0} - global CONFIG_CLK_FUSPLL - if {$tmpvar_2 == "Fusion-PLL"} then {set CONFIG_CLK_FUSPLL 1} else {set CONFIG_CLK_FUSPLL 0} - global CONFIG_CLK_LIB18T - if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} - global CONFIG_CLK_RHUMC - if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} - global CONFIG_CLK_CLKDLL - if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} - global CONFIG_CLK_DCM - if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} - global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} - global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} - global CONFIG_OCLK_DIV - if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} - global CONFIG_OCLKB_DIV - if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLKB_DIV "$CONFIG_OCLKB_DIV" 0} - global CONFIG_OCLKC_DIV - if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLKC_DIV "$CONFIG_OCLKC_DIV" 0} - global CONFIG_PCI_CLKDLL - if {($CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_DCM == 1)} then { - set CONFIG_PCI_CLKDLL [expr $CONFIG_PCI_CLKDLL&15]} else {set CONFIG_PCI_CLKDLL [expr $CONFIG_PCI_CLKDLL|16]} - global CONFIG_CLK_NOFB - if {($CONFIG_CLK_DCM == 1)} then { - set CONFIG_CLK_NOFB [expr $CONFIG_CLK_NOFB&15]} else {set CONFIG_CLK_NOFB [expr $CONFIG_CLK_NOFB|16]} - global CONFIG_PCI_ENABLE - global CONFIG_PCI_SYSCLK - if {($CONFIG_PCI_ENABLE != 1)} then { - set CONFIG_PCI_SYSCLK [expr $CONFIG_PCI_SYSCLK&15]} else {set CONFIG_PCI_SYSCLK [expr $CONFIG_PCI_SYSCLK|16]} -} - - -menu_option menu3 3 "Processor " -proc menu3 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 3} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 3]] - message $w.m -width 400 -aspect 300 -text \ - "Processor " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Processor " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 3; break" - set nextscript "catch {focus $oldFocus}; menu4 .menu4 \"$title\"" - frame $w.f - button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 3" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 3; menu2 .menu2 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 3; menu2 .menu2 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 - int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 - - - - focus $w - update_active - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu3 {} { - global CONFIG_LEON3 - global CONFIG_PROC_NUM - if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} -} - - -proc update_define_menu3 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_PROC_NUM - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} -} - - -proc menu4 {w title} { - set oldFocus [focus] - catch {focus .menu3} - catch {destroy $w; unregister_active 4} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 4]] - message $w.m -width 400 -aspect 300 -text \ - "Integer unit " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Integer unit " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 4; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 4; menu5 .menu5 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 4" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 4; menu3 .menu3 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 4; menu3 .menu3 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS - bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 3 - bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 4 - bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP - bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT - bool $w.config.f 4 7 "Disable tagged ADD/SUB and CASA" CONFIG_NOTAG - int $w.config.f 4 8 "Load delay" CONFIG_IU_LDELAY - int $w.config.f 4 9 "Hardware watchpoints" CONFIG_IU_WATCHPOINTS - bool $w.config.f 4 10 "Enable power-down mode " CONFIG_PWD - hex $w.config.f 4 11 " Reset start address (addr\[31:12\]) " CONFIG_IU_RSTADDR - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor "} - set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu4 {} { - global CONFIG_LEON3 - global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} - global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { - configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} - global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} - global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} - global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} - global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} - global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} - global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} - global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} -} - - -proc update_define_menu4 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} - global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 - global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} - global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} - global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} - global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { - set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 - global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} - global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} - global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} - global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} - global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} - global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} - global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} - global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} - global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} - global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} - global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} -} - - -proc menu5 {w title} { - set oldFocus [focus] - catch {focus .menu3} - catch {destroy $w; unregister_active 5} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 5]] - message $w.m -width 400 -aspect 300 -text \ - "Floating-point unit" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Floating-point unit" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 5; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 5; menu6 .menu6 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 5" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 5; menu4 .menu4 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 5; menu4 .menu4 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 4 - bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_7 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 3 - bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor "} - set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu5 {} { - global CONFIG_LEON3 - global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} - global CONFIG_HAS_SHARED_GRFPU - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { - configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} - global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} - global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} -} - - -proc update_define_menu5 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 - global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} - global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} - global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 - global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} - global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} - global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} - global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global CONFIG_HAS_SHARED_GRFPU - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { - set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_7 - global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} - global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} - global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} - global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} -} - - -proc menu6 {w title} { - set oldFocus [focus] - catch {focus .menu3} - catch {destroy $w; unregister_active 6} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 6]] - message $w.m -width 400 -aspect 300 -text \ - "Cache system" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Cache system" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 6; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 6; menu7 .menu7 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 6" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 6; menu5 .menu5 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 6; menu5 .menu5 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 4 - bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK - bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 - menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" - menusplit $w $w.config.f.x7.x.menu 9 - hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART - bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 - menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" - menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 - menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" - menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 - menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" - menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND - menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" - menusplit $w $w.config.f.x13.x.menu 4 - bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK - bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP - bool $w.config.f 6 16 "Fast snooping " CONFIG_DCACHE_SNOOP_FAST - bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG - hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED - bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 - menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" - menusplit $w $w.config.f.x20.x.menu 9 - hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor "} - set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu6 {} { - global CONFIG_LEON3 - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} - global CONFIG_MMU_ENABLE - global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { - configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { - configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { - configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { - configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} -} - - -proc update_define_menu6 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 - global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} - global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} - global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} - global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 - global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} - global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} - global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} - global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} - global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} - global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} - global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} - global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} - global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 - global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} - global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 - global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} - global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} - global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} - global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} - global CONFIG_MMU_ENABLE - global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { - set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 - global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} - global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} - global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} - global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} - global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} - global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} - global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} - global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} - global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 - global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} - global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} - global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} - global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 - global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} - global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} - global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} - global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} - global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} - global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} - global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} - global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} - global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 - global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} - global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 - global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} - global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} - global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} - global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { - set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { - set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { - set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 - global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} - global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} - global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} - global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} - global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} - global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} - global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} - global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} - global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} -} - - -proc menu7 {w title} { - set oldFocus [focus] - catch {focus .menu3} - catch {destroy $w; unregister_active 7} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 7]] - message $w.m -width 400 -aspect 300 -text \ - "MMU" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "MMU" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 7; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 7; menu8 .menu8 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 7" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 7; menu6 .menu6 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 7; menu6 .menu6 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 - global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 - bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K - menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" - menusplit $w $w.config.f.x6.x.menu 5 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor "} - set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu7 {} { - global CONFIG_LEON3 - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} -} - - -proc update_define_menu7 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 - global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} - global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 - global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} - global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 - global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} - global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} - global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} - global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} - global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 - global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} - global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} - global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} - global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} - global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 - global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} - global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} - global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} - global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} - global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} -} - - -proc menu8 {w title} { - set oldFocus [focus] - catch {focus .menu3} - catch {destroy $w; unregister_active 8} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 8]] - message $w.m -width 400 -aspect 300 -text \ - "Debug Support Unit " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Debug Support Unit " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 8; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 8; menu9 .menu9 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 8" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 8; menu7 .menu7 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 8; menu7 .menu7 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE - bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 5 - bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor "} - set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu8 {} { - global CONFIG_LEON3 - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { - configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { - configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} -} - - -proc update_define_menu8 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { - set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 - global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} - global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} - global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} - global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} - global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { - set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 - global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} - global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} - global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} - global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} - global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} -} - - -proc menu9 {w title} { - set oldFocus [focus] - catch {focus .menu3} - catch {destroy $w; unregister_active 9} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 9]] - message $w.m -width 400 -aspect 300 -text \ - "Fault-tolerance " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Fault-tolerance " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 9; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 9; menu10 .menu10 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 9" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 9; menu8 .menu8 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 9; menu8 .menu8 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN - bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ - bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN - int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ - bool $w.config.f 9 6 "Use LEON3FT netlist " CONFIG_LEON3_NETLIST - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor "} - set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu9 {} { - global CONFIG_LEON3 - global CONFIG_LEON3FT_EN - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} - global CONFIG_RF_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} - global CONFIG_CACHE_FT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - configure_entry .menu9.config.f.x4 normal {n l y}} else {configure_entry .menu9.config.f.x4 disabled {y n l}} - global CONFIG_CACHE_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {.menu9.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu9.config.f.x5.l configure -state normal; } else {.menu9.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu9.config.f.x5.l configure -state disabled} - global CONFIG_LEON3_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - configure_entry .menu9.config.f.x6 normal {n l y}} else {configure_entry .menu9.config.f.x6 disabled {y n l}} -} - - -proc update_define_menu9 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_LEON3FT_EN - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 - global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} - global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} - global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} - global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} - global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} - global CONFIG_RF_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} - global CONFIG_CACHE_FT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - set CONFIG_CACHE_FT_EN [expr $CONFIG_CACHE_FT_EN&15]} else {set CONFIG_CACHE_FT_EN [expr $CONFIG_CACHE_FT_EN|16]} - global CONFIG_CACHE_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {validate_int CONFIG_CACHE_ERRINJ "$CONFIG_CACHE_ERRINJ" 0} - global CONFIG_LEON3_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - set CONFIG_LEON3_NETLIST [expr $CONFIG_LEON3_NETLIST&15]} else {set CONFIG_LEON3_NETLIST [expr $CONFIG_LEON3_NETLIST|16]} -} - - -proc menu10 {w title} { - set oldFocus [focus] - catch {focus .menu3} - catch {destroy $w; unregister_active 10} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 10]] - message $w.m -width 400 -aspect 300 -text \ - "VHDL debug settings " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "VHDL debug settings " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 10; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 10; catch {destroy .menu3}; unregister_active 3; menu11 .menu11 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 10" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 10; menu9 .menu9 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 10; menu9 .menu9 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 10 0 "Processor disassembly to console " CONFIG_IU_DISAS - bool $w.config.f 10 1 "Processor disassembly in netlist " CONFIG_IU_DISAS_NET - bool $w.config.f 10 2 "32-bit program counters " CONFIG_DEBUG_PC32 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu3] == 0} then {menu3 .menu3 "Processor "} - set winx [expr [winfo x .menu3]+30]; set winy [expr [winfo y .menu3]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu10 {} { - global CONFIG_LEON3 - global CONFIG_IU_DISAS - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu10.config.f.x0 normal {n l y}} else {configure_entry .menu10.config.f.x0 disabled {y n l}} - global CONFIG_IU_DISAS_NET - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_DISAS == 1)} then { - configure_entry .menu10.config.f.x1 normal {n l y}} else {configure_entry .menu10.config.f.x1 disabled {y n l}} - global CONFIG_DEBUG_PC32 - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu10.config.f.x2 normal {n l y}} else {configure_entry .menu10.config.f.x2 disabled {y n l}} -} - - -proc update_define_menu10 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_IU_DISAS - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_IU_DISAS [expr $CONFIG_IU_DISAS&15]} else {set CONFIG_IU_DISAS [expr $CONFIG_IU_DISAS|16]} - global CONFIG_IU_DISAS_NET - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_DISAS == 1)} then { - set CONFIG_IU_DISAS_NET [expr $CONFIG_IU_DISAS_NET&15]} else {set CONFIG_IU_DISAS_NET [expr $CONFIG_IU_DISAS_NET|16]} - global CONFIG_DEBUG_PC32 - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_DEBUG_PC32 [expr $CONFIG_DEBUG_PC32&15]} else {set CONFIG_DEBUG_PC32 [expr $CONFIG_DEBUG_PC32|16]} -} - - -menu_option menu11 11 "AMBA configuration" -proc menu11 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 11} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 11]] - message $w.m -width 400 -aspect 300 -text \ - "AMBA configuration" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "AMBA configuration" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 11; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 11; menu12 .menu12 \"$title\"" - frame $w.f - button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 11" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 11; menu10 .menu10 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 11; menu10 .menu10 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - int $w.config.f 11 0 "Default AHB master" CONFIG_AHB_DEFMST - bool $w.config.f 11 1 "Round-robin arbiter " CONFIG_AHB_RROBIN - bool $w.config.f 11 2 "AHB split-transaction support " CONFIG_AHB_SPLIT - bool $w.config.f 11 3 "Enable full plug&play decoding " CONFIG_AHB_FPNPEN - hex $w.config.f 11 4 "I/O area start address (haddr\[31:20\]) " CONFIG_AHB_IOADDR - hex $w.config.f 11 5 "AHB/APB bridge address (haddr\[31:20\]) " CONFIG_APB_HADDR - bool $w.config.f 11 6 "Enable AMBA AHB monitor " CONFIG_AHB_MON - bool $w.config.f 11 7 "Report AHB errors " CONFIG_AHB_MONERR - bool $w.config.f 11 8 "Report AHB warings " CONFIG_AHB_MONWAR - bool $w.config.f 11 9 "Write trace to simulation console " CONFIG_AHB_DTRACE - - - - focus $w - update_active - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu11 {} { - global CONFIG_AHB_MON - global CONFIG_AHB_MONERR - if {($CONFIG_AHB_MON == 1)} then { - configure_entry .menu11.config.f.x7 normal {n l y}} else {configure_entry .menu11.config.f.x7 disabled {y n l}} - global CONFIG_AHB_MONWAR - if {($CONFIG_AHB_MON == 1)} then { - configure_entry .menu11.config.f.x8 normal {n l y}} else {configure_entry .menu11.config.f.x8 disabled {y n l}} -} - - -proc update_define_menu11 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_AHB_MON - global CONFIG_AHB_MONERR - if {($CONFIG_AHB_MON == 1)} then { - set CONFIG_AHB_MONERR [expr $CONFIG_AHB_MONERR&15]} else {set CONFIG_AHB_MONERR [expr $CONFIG_AHB_MONERR|16]} - global CONFIG_AHB_MONWAR - if {($CONFIG_AHB_MON == 1)} then { - set CONFIG_AHB_MONWAR [expr $CONFIG_AHB_MONWAR&15]} else {set CONFIG_AHB_MONWAR [expr $CONFIG_AHB_MONWAR|16]} -} - - -menu_option menu12 12 "Debug Link " -proc menu12 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 12} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 12]] - message $w.m -width 400 -aspect 300 -text \ - "Debug Link " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Debug Link " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 12; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 12; menu13 .menu13 \"$title\"" - frame $w.f - button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 12" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 12; menu11 .menu11 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 12; menu11 .menu11 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART - bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG - bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 - hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB - hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB - hex $w.config.f 12 6 "MSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHMSB - hex $w.config.f 12 7 "LSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHLSB - bool $w.config.f 12 8 "Programmable 4-bit LSB of MAC/IP address" CONFIG_DSU_ETH_PROG - bool $w.config.f 12 9 "EDCL disable pin " CONFIG_DSU_ETH_DIS - - - - focus $w - update_active - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu12 {} { - global CONFIG_GRETH_ENABLE - global CONFIG_DSU_ETH - if {($CONFIG_GRETH_ENABLE == 1)} then { - configure_entry .menu12.config.f.x2 normal {n l y}} else {configure_entry .menu12.config.f.x2 disabled {y n l}} - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {configure_entry .menu12.config.f.x3 normal {x l}} else {configure_entry .menu12.config.f.x3 disabled {x l}} - global CONFIG_DSU_IPMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x4.l configure -state normal; } else {.menu12.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x4.l configure -state disabled} - global CONFIG_DSU_IPLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x5.l configure -state normal; } else {.menu12.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x5.l configure -state disabled} - global CONFIG_DSU_ETHMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x6.l configure -state normal; } else {.menu12.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x6.l configure -state disabled} - global CONFIG_DSU_ETHLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x7.l configure -state normal; } else {.menu12.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x7.l configure -state disabled} - global CONFIG_GRETH_GIGA - global CONFIG_DSU_ETH_PROG - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - configure_entry .menu12.config.f.x8 normal {n l y}} else {configure_entry .menu12.config.f.x8 disabled {y n l}} - global CONFIG_DSU_ETH_DIS - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - configure_entry .menu12.config.f.x9 normal {n l y}} else {configure_entry .menu12.config.f.x9 disabled {y n l}} -} - - -proc update_define_menu12 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_GRETH_ENABLE - global CONFIG_DSU_ETH - if {($CONFIG_GRETH_ENABLE == 1)} then { - set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 - global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} - global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} - global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} - global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} - global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} - global CONFIG_DSU_IPMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} - global CONFIG_DSU_IPLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPLSB "$CONFIG_DSU_IPLSB" 0033} - global CONFIG_DSU_ETHMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_ETHMSB "$CONFIG_DSU_ETHMSB" 020000} - global CONFIG_DSU_ETHLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_ETHLSB "$CONFIG_DSU_ETHLSB" 000000} - global CONFIG_GRETH_GIGA - global CONFIG_DSU_ETH_PROG - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - set CONFIG_DSU_ETH_PROG [expr $CONFIG_DSU_ETH_PROG&15]} else {set CONFIG_DSU_ETH_PROG [expr $CONFIG_DSU_ETH_PROG|16]} - global CONFIG_DSU_ETH_DIS - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - set CONFIG_DSU_ETH_DIS [expr $CONFIG_DSU_ETH_DIS&15]} else {set CONFIG_DSU_ETH_DIS [expr $CONFIG_DSU_ETH_DIS|16]} -} - - -menu_option menu13 13 "Peripherals " -proc menu13 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 13} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 13]] - message $w.m -width 400 -aspect 300 -text \ - "Peripherals " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Peripherals " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 13; break" - set nextscript "catch {focus $oldFocus}; menu14 .menu14 \"$title\"" - frame $w.f - button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 13" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 13; menu12 .menu12 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 13; menu12 .menu12 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - submenu $w.config.f 13 0 "Memory controllers " 14 - submenu $w.config.f 13 1 "On-chip RAM/ROM " 16 - submenu $w.config.f 13 2 "Ethernet interface " 17 - submenu $w.config.f 13 3 "UARTs, timers and irq control " 18 - - - - focus $w - update_active - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu13 {} { -} - - -proc update_define_menu13 {} { - update_define_mainmenu - global CONFIG_MODULES -} - - -proc menu14 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 14} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 14]] - message $w.m -width 400 -aspect 300 -text \ - "Memory controllers " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Memory controllers " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 14; break" - set nextscript "catch {focus $oldFocus}; menu15 .menu15 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 14" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 14; menu13 .menu13 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 14; menu13 .menu13 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - submenu $w.config.f 14 0 "Leon2 memory controller " 15 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu14 {} { -} - - -proc update_define_menu14 {} { - update_define_mainmenu - global CONFIG_MODULES -} - - -proc menu15 {w title} { - set oldFocus [focus] - catch {focus .menu14} - catch {destroy $w; unregister_active 15} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 15]] - message $w.m -width 400 -aspect 300 -text \ - "Leon2 memory controller " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Leon2 memory controller " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 15; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 15; catch {destroy .menu14}; unregister_active 14; menu16 .menu16 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 15" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 15; menu14 .menu14 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 15; menu14 .menu14 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 15 0 "Enable Leon2 memory controller " CONFIG_MCTRL_LEON2 - bool $w.config.f 15 1 "8-bit PROM/SRAM bus support " CONFIG_MCTRL_8BIT - bool $w.config.f 15 2 "16-bit PROM/SRAM bus support " CONFIG_MCTRL_16BIT - bool $w.config.f 15 3 "5th SRAM chip-select " CONFIG_MCTRL_5CS - bool $w.config.f 15 4 "SDRAM controller " CONFIG_MCTRL_SDRAM - bool $w.config.f 15 5 "Separate address and data buses" CONFIG_MCTRL_SDRAM_SEPBUS - bool $w.config.f 15 6 "64-bit SDRAM data bus" CONFIG_MCTRL_SDRAM_BUS64 - bool $w.config.f 15 7 "Unsynchronized sdclock" CONFIG_MCTRL_SDRAM_INVCLK - bool $w.config.f 15 8 "Enable page burst operation " CONFIG_MCTRL_PAGE - bool $w.config.f 15 9 "Enable programmable page burst " CONFIG_MCTRL_PROGPAGE - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers "} - set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu15 {} { - global CONFIG_MCTRL_LEON2 - global CONFIG_MCTRL_8BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu15.config.f.x1 normal {n l y}} else {configure_entry .menu15.config.f.x1 disabled {y n l}} - global CONFIG_MCTRL_16BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu15.config.f.x2 normal {n l y}} else {configure_entry .menu15.config.f.x2 disabled {y n l}} - global CONFIG_MCTRL_5CS - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu15.config.f.x3 normal {n l y}} else {configure_entry .menu15.config.f.x3 disabled {y n l}} - global CONFIG_MCTRL_SDRAM - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu15.config.f.x4 normal {n l y}} else {configure_entry .menu15.config.f.x4 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_SEPBUS - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - configure_entry .menu15.config.f.x5 normal {n l y}} else {configure_entry .menu15.config.f.x5 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_BUS64 - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - configure_entry .menu15.config.f.x6 normal {n l y}} else {configure_entry .menu15.config.f.x6 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_INVCLK - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - configure_entry .menu15.config.f.x7 normal {n l y}} else {configure_entry .menu15.config.f.x7 disabled {y n l}} - global CONFIG_MCTRL_PAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - configure_entry .menu15.config.f.x8 normal {n l y}} else {configure_entry .menu15.config.f.x8 disabled {y n l}} - global CONFIG_MCTRL_PROGPAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { - configure_entry .menu15.config.f.x9 normal {n l y}} else {configure_entry .menu15.config.f.x9 disabled {y n l}} -} - - -proc update_define_menu15 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_MCTRL_LEON2 - global CONFIG_MCTRL_8BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT&15]} else {set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT|16]} - global CONFIG_MCTRL_16BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT&15]} else {set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT|16]} - global CONFIG_MCTRL_5CS - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS&15]} else {set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS|16]} - global CONFIG_MCTRL_SDRAM - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM&15]} else {set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM|16]} - global CONFIG_MCTRL_SDRAM_SEPBUS - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS&15]} else {set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS|16]} - global CONFIG_MCTRL_SDRAM_BUS64 - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64&15]} else {set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64|16]} - global CONFIG_MCTRL_SDRAM_INVCLK - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK&15]} else {set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK|16]} - global CONFIG_MCTRL_PAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE&15]} else {set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE|16]} - global CONFIG_MCTRL_PROGPAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { - set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE&15]} else {set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE|16]} -} - - -proc menu16 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 16} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 16]] - message $w.m -width 400 -aspect 300 -text \ - "On-chip RAM/ROM " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "On-chip RAM/ROM " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 16; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 16; menu17 .menu17 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 16" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 16; menu15 .menu15 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 16; menu15 .menu15 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 16 0 "On-chip AHB ROM " CONFIG_AHBROM_ENABLE - hex $w.config.f 16 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START - bool $w.config.f 16 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE - bool $w.config.f 16 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 16 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 7 - hex $w.config.f 16 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu16 {} { - global CONFIG_AHBROM_ENABLE - global CONFIG_AHBROM_START - if {($CONFIG_AHBROM_ENABLE == 1)} then {.menu16.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x1.l configure -state normal; } else {.menu16.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x1.l configure -state disabled} - global CONFIG_AHBROM_PIPE - if {($CONFIG_AHBROM_ENABLE == 1)} then { - configure_entry .menu16.config.f.x2 normal {n l y}} else {configure_entry .menu16.config.f.x2 disabled {y n l}} - global CONFIG_AHBRAM_ENABLE - if {($CONFIG_AHBRAM_ENABLE == 1)} then {configure_entry .menu16.config.f.x4 normal {x l}} else {configure_entry .menu16.config.f.x4 disabled {x l}} - global CONFIG_AHBRAM_START - if {($CONFIG_AHBRAM_ENABLE == 1)} then {.menu16.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x5.l configure -state normal; } else {.menu16.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x5.l configure -state disabled} -} - - -proc update_define_menu16 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_AHBROM_ENABLE - global CONFIG_AHBROM_START - if {($CONFIG_AHBROM_ENABLE == 1)} then {validate_hex CONFIG_AHBROM_START "$CONFIG_AHBROM_START" 000} - global CONFIG_AHBROM_PIPE - if {($CONFIG_AHBROM_ENABLE == 1)} then { - set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 - global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} - global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} - global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} - global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} - global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} - global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} - global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} - global CONFIG_AHBRAM_ENABLE - global CONFIG_AHBRAM_START - if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} -} - - -proc menu17 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 17} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 17]] - message $w.m -width 400 -aspect 300 -text \ - "Ethernet interface " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Ethernet interface " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 17; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 17; menu18 .menu18 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 17" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 17; menu16 .menu16 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 17; menu16 .menu16 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 17 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE - bool $w.config.f 17 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 17 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 5 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu17 {} { - global CONFIG_GRETH_ENABLE - global CONFIG_GRETH_GIGA - if {($CONFIG_GRETH_ENABLE == 1)} then { - configure_entry .menu17.config.f.x1 normal {n l y}} else {configure_entry .menu17.config.f.x1 disabled {y n l}} - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then {configure_entry .menu17.config.f.x2 normal {x l}} else {configure_entry .menu17.config.f.x2 disabled {x l}} -} - - -proc update_define_menu17 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_GRETH_ENABLE - global CONFIG_GRETH_GIGA - if {($CONFIG_GRETH_ENABLE == 1)} then { - set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 - global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} - global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} - global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} - global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} - global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} -} - - -proc menu18 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 18} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 18]] - message $w.m -width 400 -aspect 300 -text \ - "UARTs, timers and irq control " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "UARTs, timers and irq control " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; catch {destroy .menu13}; unregister_active 13; menu19 .menu19 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu17 .menu17 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu17 .menu17 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 18 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 6 - bool $w.config.f 18 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE - bool $w.config.f 18 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC - int $w.config.f 18 4 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC - bool $w.config.f 18 5 "Enable Timer Unit " CONFIG_GPT_ENABLE - int $w.config.f 18 6 "Number of timers (1 - 7) " CONFIG_GPT_NTIM - int $w.config.f 18 7 "Scaler width (2 - 16) " CONFIG_GPT_SW - int $w.config.f 18 8 "Timer width (2 - 32) " CONFIG_GPT_TW - int $w.config.f 18 9 "Timer unit interrupt " CONFIG_GPT_IRQ - bool $w.config.f 18 10 "Separate interrupts " CONFIG_GPT_SEPIRQ - bool $w.config.f 18 11 "Watchdog enable " CONFIG_GPT_WDOGEN - hex $w.config.f 18 12 "Initial watchdog time-out value " CONFIG_GPT_WDOG - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu18 {} { - global CONFIG_UART1_ENABLE - if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu18.config.f.x1 normal {x l}} else {configure_entry .menu18.config.f.x1 disabled {x l}} - global CONFIG_IRQ3_ENABLE - global CONFIG_IRQ3_SEC - if {($CONFIG_IRQ3_ENABLE == 1)} then { - configure_entry .menu18.config.f.x3 normal {n l y}} else {configure_entry .menu18.config.f.x3 disabled {y n l}} - global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu18.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x4.l configure -state normal; } else {.menu18.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x4.l configure -state disabled} - global CONFIG_GPT_ENABLE - global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {.menu18.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x6.l configure -state normal; } else {.menu18.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x6.l configure -state disabled} - global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu18.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x7.l configure -state normal; } else {.menu18.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x7.l configure -state disabled} - global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu18.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x8.l configure -state normal; } else {.menu18.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x8.l configure -state disabled} - global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {.menu18.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x9.l configure -state normal; } else {.menu18.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x9.l configure -state disabled} - global CONFIG_GPT_SEPIRQ - if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu18.config.f.x10 normal {n l y}} else {configure_entry .menu18.config.f.x10 disabled {y n l}} - global CONFIG_GPT_WDOGEN - if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu18.config.f.x11 normal {n l y}} else {configure_entry .menu18.config.f.x11 disabled {y n l}} - global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu18.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x12.l configure -state normal; } else {.menu18.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x12.l configure -state disabled} -} - - -proc update_define_menu18 {} { - update_define_mainmenu - global CONFIG_MODULES - global tmpvar_29 - global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} - global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} - global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} - global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} - global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} - global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global CONFIG_IRQ3_ENABLE - global CONFIG_IRQ3_SEC - if {($CONFIG_IRQ3_ENABLE == 1)} then { - set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC&15]} else {set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC|16]} - global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {validate_int CONFIG_IRQ3_NSEC "$CONFIG_IRQ3_NSEC" 12} - global CONFIG_GPT_ENABLE - global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_NTIM "$CONFIG_GPT_NTIM" 2} - global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_SW "$CONFIG_GPT_SW" 8} - global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_TW "$CONFIG_GPT_TW" 32} - global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_IRQ "$CONFIG_GPT_IRQ" 8} - global CONFIG_GPT_SEPIRQ - if {($CONFIG_GPT_ENABLE == 1)} then { - set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ&15]} else {set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ|16]} - global CONFIG_GPT_WDOGEN - if {($CONFIG_GPT_ENABLE == 1)} then { - set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN&15]} else {set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN|16]} - global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {validate_hex CONFIG_GPT_WDOG "$CONFIG_GPT_WDOG" FFFF} -} - - -menu_option menu19 19 "VHDL Debugging " -proc menu19 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 19} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 19]] - message $w.m -width 400 -aspect 300 -text \ - "VHDL Debugging " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "VHDL Debugging " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; break" - set nextscript "catch {focus $oldFocus}; menu20 .menu20 \"$title\"" - frame $w.f - button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - $w.f.next configure -state disabled - bind all "puts \"no more menus\" " - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 19 0 "Accelerated UART tracing " CONFIG_DEBUG_UART - - - - focus $w - update_active - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu19 {} { -} - - -proc update_define_menu19 {} { - update_define_mainmenu - global CONFIG_MODULES -} - - -proc update_mainmenu {} { -} - - -set tmpvar_0 "(not set)" -set CONFIG_SYN_INFERRED 0 -set CONFIG_SYN_STRATIX 0 -set CONFIG_SYN_STRATIXII 0 -set CONFIG_SYN_STRATIXIII 0 -set CONFIG_SYN_CYCLONEIII 0 -set CONFIG_SYN_ALTERA 0 -set CONFIG_SYN_ATC18 0 -set CONFIG_SYN_LATTICE 0 -set CONFIG_SYN_ECLIPSE 0 -set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 -set CONFIG_SYN_SPARTAN3 0 -set CONFIG_SYN_SPARTAN3E 0 -set CONFIG_SYN_SPARTAN6 0 -set CONFIG_SYN_VIRTEX 0 -set CONFIG_SYN_VIRTEXE 0 -set CONFIG_SYN_VIRTEX2 0 -set CONFIG_SYN_VIRTEX4 0 -set CONFIG_SYN_VIRTEX5 0 -set CONFIG_SYN_VIRTEX6 0 -set tmpvar_1 "(not set)" -set CONFIG_MEM_INFERRED 0 -set CONFIG_MEM_UMC 0 -set CONFIG_MEM_VIRAGE 0 -set CONFIG_MEM_VIRAGE90 0 -set CONFIG_SYN_INFER_RAM 0 -set CONFIG_SYN_INFER_PADS 0 -set CONFIG_SYN_NO_ASYNC 0 -set CONFIG_SYN_SCAN 0 -set tmpvar_2 "(not set)" -set CONFIG_CLK_INFERRED 0 -set CONFIG_CLK_HCLKBUF 0 -set CONFIG_CLK_UT130HBD 0 -set CONFIG_CLK_ALTDLL 0 -set CONFIG_CLK_LATDLL 0 -set CONFIG_CLK_PRO3PLL 0 -set CONFIG_CLK_PRO3EPLL 0 -set CONFIG_CLK_PRO3LPLL 0 -set CONFIG_CLK_FUSPLL 0 -set CONFIG_CLK_LIB18T 0 -set CONFIG_CLK_RHUMC 0 -set CONFIG_CLK_CLKDLL 0 -set CONFIG_CLK_DCM 0 -set CONFIG_CLK_MUL 2 -set CONFIG_CLK_DIV 2 -set CONFIG_OCLK_DIV 1 -set CONFIG_OCLKB_DIV 0 -set CONFIG_OCLKC_DIV 0 -set CONFIG_PCI_CLKDLL 0 -set CONFIG_CLK_NOFB 0 -set CONFIG_PCI_SYSCLK 0 -set CONFIG_LEON3 0 -set CONFIG_PROC_NUM 1 -set CONFIG_IU_NWINDOWS 8 -set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" -set CONFIG_IU_MUL_LATENCY_2 0 -set CONFIG_IU_MUL_LATENCY_4 0 -set CONFIG_IU_MUL_LATENCY_5 0 -set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" -set CONFIG_IU_MUL_INFERRED 0 -set CONFIG_IU_MUL_MODGEN 0 -set CONFIG_IU_MUL_TECHSPEC 0 -set CONFIG_IU_MUL_DW 0 -set CONFIG_IU_BP 0 -set CONFIG_IU_SVT 0 -set CONFIG_NOTAG 0 -set CONFIG_IU_LDELAY 1 -set CONFIG_IU_WATCHPOINTS 0 -set CONFIG_PWD 0 -set CONFIG_IU_RSTADDR 00000 -set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" -set CONFIG_FPU_GRFPU 0 -set CONFIG_FPU_GRFPULITE 0 -set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" -set CONFIG_FPU_GRFPU_INFMUL 0 -set CONFIG_FPU_GRFPU_DWMUL 0 -set CONFIG_FPU_GRFPU_MODGEN 0 -set CONFIG_FPU_GRFPU_TECHSPEC 0 -set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_7 "(not set)" -set CONFIG_FPU_GRFPC0 0 -set CONFIG_FPU_GRFPC1 0 -set CONFIG_FPU_GRFPC2 0 -set CONFIG_FPU_NETLIST 0 -set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" -set CONFIG_ICACHE_ASSO1 0 -set CONFIG_ICACHE_ASSO2 0 -set CONFIG_ICACHE_ASSO3 0 -set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" -set CONFIG_ICACHE_SZ1 0 -set CONFIG_ICACHE_SZ2 0 -set CONFIG_ICACHE_SZ4 0 -set CONFIG_ICACHE_SZ8 0 -set CONFIG_ICACHE_SZ16 0 -set CONFIG_ICACHE_SZ32 0 -set CONFIG_ICACHE_SZ64 0 -set CONFIG_ICACHE_SZ128 0 -set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" -set CONFIG_ICACHE_LZ16 0 -set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" -set CONFIG_ICACHE_ALGORND 0 -set CONFIG_ICACHE_ALGODIR 0 -set CONFIG_ICACHE_ALGOLRR 0 -set CONFIG_ICACHE_ALGOLRU 0 -set CONFIG_ICACHE_LOCK 0 -set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" -set CONFIG_ICACHE_LRAM_SZ1 0 -set CONFIG_ICACHE_LRAM_SZ2 0 -set CONFIG_ICACHE_LRAM_SZ4 0 -set CONFIG_ICACHE_LRAM_SZ8 0 -set CONFIG_ICACHE_LRAM_SZ16 0 -set CONFIG_ICACHE_LRAM_SZ32 0 -set CONFIG_ICACHE_LRAM_SZ64 0 -set CONFIG_ICACHE_LRAM_SZ128 0 -set CONFIG_ICACHE_LRAM_SZ256 0 -set CONFIG_ICACHE_LRSTART 8e -set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" -set CONFIG_DCACHE_ASSO1 0 -set CONFIG_DCACHE_ASSO2 0 -set CONFIG_DCACHE_ASSO3 0 -set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" -set CONFIG_DCACHE_SZ1 0 -set CONFIG_DCACHE_SZ2 0 -set CONFIG_DCACHE_SZ4 0 -set CONFIG_DCACHE_SZ8 0 -set CONFIG_DCACHE_SZ16 0 -set CONFIG_DCACHE_SZ32 0 -set CONFIG_DCACHE_SZ64 0 -set CONFIG_DCACHE_SZ128 0 -set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" -set CONFIG_DCACHE_LZ16 0 -set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" -set CONFIG_DCACHE_ALGORND 0 -set CONFIG_DCACHE_ALGODIR 0 -set CONFIG_DCACHE_ALGOLRR 0 -set CONFIG_DCACHE_ALGOLRU 0 -set CONFIG_DCACHE_LOCK 0 -set CONFIG_DCACHE_SNOOP 0 -set CONFIG_DCACHE_SNOOP_FAST 0 -set CONFIG_DCACHE_SNOOP_SEPTAG 0 -set CONFIG_CACHE_FIXED 0 -set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" -set CONFIG_DCACHE_LRAM_SZ1 0 -set CONFIG_DCACHE_LRAM_SZ2 0 -set CONFIG_DCACHE_LRAM_SZ4 0 -set CONFIG_DCACHE_LRAM_SZ8 0 -set CONFIG_DCACHE_LRAM_SZ16 0 -set CONFIG_DCACHE_LRAM_SZ32 0 -set CONFIG_DCACHE_LRAM_SZ64 0 -set CONFIG_DCACHE_LRAM_SZ128 0 -set CONFIG_DCACHE_LRAM_SZ256 0 -set CONFIG_DCACHE_LRSTART 8f -set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" -set CONFIG_MMU_COMBINED 0 -set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" -set CONFIG_MMU_REPARRAY 0 -set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" -set CONFIG_MMU_I2 0 -set CONFIG_MMU_I4 0 -set CONFIG_MMU_I8 0 -set CONFIG_MMU_I16 0 -set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" -set CONFIG_MMU_D2 0 -set CONFIG_MMU_D4 0 -set CONFIG_MMU_D8 0 -set CONFIG_MMU_D16 0 -set CONFIG_MMU_D32 0 -set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" -set CONFIG_MMU_PAGE_4K 0 -set CONFIG_MMU_PAGE_8K 0 -set CONFIG_MMU_PAGE_16K 0 -set CONFIG_MMU_PAGE_32K 0 -set CONFIG_MMU_PAGE_PROG 0 -set CONFIG_DSU_ENABLE 0 -set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" -set CONFIG_DSU_ITRACESZ1 0 -set CONFIG_DSU_ITRACESZ2 0 -set CONFIG_DSU_ITRACESZ4 0 -set CONFIG_DSU_ITRACESZ8 0 -set CONFIG_DSU_ITRACESZ16 0 -set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" -set CONFIG_DSU_ATRACESZ1 0 -set CONFIG_DSU_ATRACESZ2 0 -set CONFIG_DSU_ATRACESZ4 0 -set CONFIG_DSU_ATRACESZ8 0 -set CONFIG_DSU_ATRACESZ16 0 -set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" -set CONFIG_IUFT_NONE 0 -set CONFIG_IUFT_PAR 0 -set CONFIG_IUFT_DMR 0 -set CONFIG_IUFT_BCH 0 -set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 -set CONFIG_RF_ERRINJ 0 -set CONFIG_CACHE_FT_EN 0 -set CONFIG_CACHE_ERRINJ 0 -set CONFIG_LEON3_NETLIST 0 -set CONFIG_IU_DISAS 0 -set CONFIG_IU_DISAS_NET 0 -set CONFIG_DEBUG_PC32 0 -set CONFIG_AHB_DEFMST 0 -set CONFIG_AHB_RROBIN 0 -set CONFIG_AHB_SPLIT 0 -set CONFIG_AHB_FPNPEN 0 -set CONFIG_AHB_IOADDR FFF -set CONFIG_APB_HADDR 800 -set CONFIG_AHB_MON 0 -set CONFIG_AHB_MONERR 0 -set CONFIG_AHB_MONWAR 0 -set CONFIG_AHB_DTRACE 0 -set CONFIG_DSU_UART 0 -set CONFIG_DSU_JTAG 0 -set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" -set CONFIG_DSU_ETHSZ1 0 -set CONFIG_DSU_ETHSZ2 0 -set CONFIG_DSU_ETHSZ4 0 -set CONFIG_DSU_ETHSZ8 0 -set CONFIG_DSU_ETHSZ16 0 -set CONFIG_DSU_IPMSB C0A8 -set CONFIG_DSU_IPLSB 0033 -set CONFIG_DSU_ETHMSB 020000 -set CONFIG_DSU_ETHLSB 000000 -set CONFIG_DSU_ETH_PROG 0 -set CONFIG_DSU_ETH_DIS 0 -set CONFIG_MCTRL_LEON2 0 -set CONFIG_MCTRL_8BIT 0 -set CONFIG_MCTRL_16BIT 0 -set CONFIG_MCTRL_5CS 0 -set CONFIG_MCTRL_SDRAM 0 -set CONFIG_MCTRL_SDRAM_SEPBUS 0 -set CONFIG_MCTRL_SDRAM_BUS64 0 -set CONFIG_MCTRL_SDRAM_INVCLK 0 -set CONFIG_MCTRL_PAGE 0 -set CONFIG_MCTRL_PROGPAGE 0 -set CONFIG_AHBROM_ENABLE 0 -set CONFIG_AHBROM_START 000 -set CONFIG_AHBROM_PIPE 0 -set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" -set CONFIG_AHBRAM_SZ1 0 -set CONFIG_AHBRAM_SZ2 0 -set CONFIG_AHBRAM_SZ4 0 -set CONFIG_AHBRAM_SZ8 0 -set CONFIG_AHBRAM_SZ16 0 -set CONFIG_AHBRAM_SZ32 0 -set CONFIG_AHBRAM_SZ64 0 -set CONFIG_AHBRAM_START A00 -set CONFIG_GRETH_ENABLE 0 -set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" -set CONFIG_GRETH_FIFO4 0 -set CONFIG_GRETH_FIFO8 0 -set CONFIG_GRETH_FIFO16 0 -set CONFIG_GRETH_FIFO32 0 -set CONFIG_GRETH_FIFO64 0 -set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" -set CONFIG_UA1_FIFO1 0 -set CONFIG_UA1_FIFO2 0 -set CONFIG_UA1_FIFO4 0 -set CONFIG_UA1_FIFO8 0 -set CONFIG_UA1_FIFO16 0 -set CONFIG_UA1_FIFO32 0 -set CONFIG_IRQ3_ENABLE 0 -set CONFIG_IRQ3_SEC 0 -set CONFIG_IRQ3_NSEC 12 -set CONFIG_GPT_ENABLE 0 -set CONFIG_GPT_NTIM 2 -set CONFIG_GPT_SW 8 -set CONFIG_GPT_TW 32 -set CONFIG_GPT_IRQ 8 -set CONFIG_GPT_SEPIRQ 0 -set CONFIG_GPT_WDOGEN 0 -set CONFIG_GPT_WDOG FFFF -set CONFIG_DEBUG_UART 0 -set CONFIG_LEON3FT_PRESENT 4 -set CONFIG_HAS_SHARED_GRFPU 4 -set CONFIG_SYN_CUSTOM1 4 -set CONFIG_SYN_TSMC90 4 -set CONFIG_SYN_RHUMC 4 -set CONFIG_SYN_ARTISAN 4 -set CONFIG_PCI_ENABLE 4 -set CONFIG_MODULES 4 -proc writeconfig {file1 file2} { - set cfg [open $file1 w] - set autocfg [open $file2 w] - set notmod 1 - set notset 0 - puts $cfg "#" - puts $cfg "# Automatically generated make config: don't edit" - puts $cfg "#" - puts $autocfg "/*" - puts $autocfg " * Automatically generated C config: don't edit" - puts $autocfg " */" - puts $autocfg "#define AUTOCONF_INCLUDED" - global CONFIG_LEON3FT_PRESENT - global CONSTANT_Y - write_tristate $cfg $autocfg CONFIG_LEON3FT_PRESENT $CONFIG_LEON3FT_PRESENT [list $notmod] 2 - global CONFIG_HAS_SHARED_GRFPU - write_tristate $cfg $autocfg CONFIG_HAS_SHARED_GRFPU $CONFIG_HAS_SHARED_GRFPU [list $notmod] 2 - write_comment $cfg $autocfg "Synthesis " - global tmpvar_0 - - if { $tmpvar_0 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_SYN_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_0 == "Altera-Stratix" } then { write_tristate $cfg $autocfg CONFIG_SYN_STRATIX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_STRATIX 0 [list $notmod] 2 } - if { $tmpvar_0 == "Altera-StratixII" } then { write_tristate $cfg $autocfg CONFIG_SYN_STRATIXII 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_STRATIXII 0 [list $notmod] 2 } - if { $tmpvar_0 == "Altera-StratixIII" } then { write_tristate $cfg $autocfg CONFIG_SYN_STRATIXIII 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_STRATIXIII 0 [list $notmod] 2 } - if { $tmpvar_0 == "Altera-CycloneIII" } then { write_tristate $cfg $autocfg CONFIG_SYN_CYCLONEIII 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_CYCLONEIII 0 [list $notmod] 2 } - if { $tmpvar_0 == "Altera-Others" } then { write_tristate $cfg $autocfg CONFIG_SYN_ALTERA 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ALTERA 0 [list $notmod] 2 } - if { $tmpvar_0 == "Atmel-ATC18" } then { write_tristate $cfg $autocfg CONFIG_SYN_ATC18 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ATC18 0 [list $notmod] 2 } - if { $tmpvar_0 == "Lattice-EC/ECP/XP" } then { write_tristate $cfg $autocfg CONFIG_SYN_LATTICE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_LATTICE 0 [list $notmod] 2 } - if { $tmpvar_0 == "Quicklogic-Eclipse" } then { write_tristate $cfg $autocfg CONFIG_SYN_ECLIPSE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ECLIPSE 0 [list $notmod] 2 } - if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Virtex" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-VirtexE" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEXE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEXE 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Virtex2" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX2 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } - global tmpvar_1 - global CONFIG_SYN_INFERRED - global CONFIG_SYN_CUSTOM1 - global CONFIG_SYN_ATC18 - global CONFIG_SYN_TSMC90 - global CONFIG_SYN_UMC - global CONFIG_SYN_RHUMC - global CONFIG_SYN_ARTISAN - if {($CONFIG_SYN_INFERRED == 1 || $CONFIG_SYN_CUSTOM1 == 1 || $CONFIG_SYN_ATC18 == 1 || $CONFIG_SYN_TSMC90 == 1 || $CONFIG_SYN_UMC == 1 || $CONFIG_SYN_RHUMC == 1 || $CONFIG_SYN_ARTISAN == 1)} then { - if { $tmpvar_1 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_MEM_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MEM_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_1 == "UMC18" } then { write_tristate $cfg $autocfg CONFIG_MEM_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MEM_UMC 0 [list $notmod] 2 } - if { $tmpvar_1 == "Virage" } then { write_tristate $cfg $autocfg CONFIG_MEM_VIRAGE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MEM_VIRAGE 0 [list $notmod] 2 } - if { $tmpvar_1 == "Virage-TSMC90" } then { write_tristate $cfg $autocfg CONFIG_MEM_VIRAGE90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MEM_VIRAGE90 0 [list $notmod] 2 }} - global CONFIG_SYN_INFER_RAM - if {($CONFIG_SYN_INFERRED != 1)} then {write_tristate $cfg $autocfg CONFIG_SYN_INFER_RAM $CONFIG_SYN_INFER_RAM [list $notmod] 2 } - global CONFIG_SYN_INFER_PADS - if {($CONFIG_SYN_INFERRED != 1)} then {write_tristate $cfg $autocfg CONFIG_SYN_INFER_PADS $CONFIG_SYN_INFER_PADS [list $notmod] 2 } - global CONFIG_SYN_NO_ASYNC - write_tristate $cfg $autocfg CONFIG_SYN_NO_ASYNC $CONFIG_SYN_NO_ASYNC [list $notmod] 2 - global CONFIG_SYN_SCAN - write_tristate $cfg $autocfg CONFIG_SYN_SCAN $CONFIG_SYN_SCAN [list $notmod] 2 - write_comment $cfg $autocfg "Clock generation" - global tmpvar_2 - - if { $tmpvar_2 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_CLK_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_2 == "Actel-HCLKBUF" } then { write_tristate $cfg $autocfg CONFIG_CLK_HCLKBUF 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_HCLKBUF 0 [list $notmod] 2 } - if { $tmpvar_2 == "Aeroflex-UT130HBD" } then { write_tristate $cfg $autocfg CONFIG_CLK_UT130HBD 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_UT130HBD 0 [list $notmod] 2 } - if { $tmpvar_2 == "Altera-ALTPLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_ALTDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_ALTDLL 0 [list $notmod] 2 } - if { $tmpvar_2 == "Lattice-EXPLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LATDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LATDLL 0 [list $notmod] 2 } - if { $tmpvar_2 == "Proasic3-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_PRO3PLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_PRO3PLL 0 [list $notmod] 2 } - if { $tmpvar_2 == "Proasic3E-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_PRO3EPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_PRO3EPLL 0 [list $notmod] 2 } - if { $tmpvar_2 == "Proasic3L-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_PRO3LPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_PRO3LPLL 0 [list $notmod] 2 } - if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } - if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } - if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } - if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } - if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } - global CONFIG_CLK_MUL - global CONFIG_CLK_DCM - global CONFIG_CLK_ALTDLL - global CONFIG_CLK_LATDLL - global CONFIG_CLK_PRO3PLL - global CONFIG_CLK_PRO3EPLL - global CONFIG_CLK_PRO3LPLL - global CONFIG_CLK_CLKDLL - global CONFIG_CLK_LIB18T - global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } - global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } - global CONFIG_OCLK_DIV - if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } - global CONFIG_OCLKB_DIV - if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLKB_DIV $CONFIG_OCLKB_DIV $notmod } - global CONFIG_OCLKC_DIV - if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLKC_DIV $CONFIG_OCLKC_DIV $notmod } - global CONFIG_PCI_CLKDLL - if {($CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_DCM == 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_CLKDLL $CONFIG_PCI_CLKDLL [list $notmod] 2 } - global CONFIG_CLK_NOFB - if {($CONFIG_CLK_DCM == 1)} then {write_tristate $cfg $autocfg CONFIG_CLK_NOFB $CONFIG_CLK_NOFB [list $notmod] 2 } - global CONFIG_PCI_SYSCLK - global CONFIG_PCI_ENABLE - if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } - global CONFIG_LEON3 - write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 - global CONFIG_PROC_NUM - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} - global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } - global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} - global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } - global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } - global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } - global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } - global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } - global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } - global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} - global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } - global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} - global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } - global tmpvar_7 - global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} - global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} - global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} - global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} - global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } - global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } - global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} - global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} - global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} - global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } - global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } - global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} - global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} - global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} - global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } - global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } - global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } - global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} - global CONFIG_LEON3FT_EN - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } - global CONFIG_RF_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } - global CONFIG_CACHE_FT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_CACHE_FT_EN $CONFIG_CACHE_FT_EN [list $notmod] 2 } - global CONFIG_CACHE_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_int $cfg $autocfg CONFIG_CACHE_ERRINJ $CONFIG_CACHE_ERRINJ $notmod } - global CONFIG_LEON3_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3_NETLIST $CONFIG_LEON3_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "VHDL debug settings "} - global CONFIG_IU_DISAS - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_DISAS $CONFIG_IU_DISAS [list $notmod] 2 } - global CONFIG_IU_DISAS_NET - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_DISAS == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_DISAS_NET $CONFIG_IU_DISAS_NET [list $notmod] 2 } - global CONFIG_DEBUG_PC32 - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DEBUG_PC32 $CONFIG_DEBUG_PC32 [list $notmod] 2 } - write_comment $cfg $autocfg "AMBA configuration" - global CONFIG_AHB_DEFMST - write_int $cfg $autocfg CONFIG_AHB_DEFMST $CONFIG_AHB_DEFMST $notmod - global CONFIG_AHB_RROBIN - write_tristate $cfg $autocfg CONFIG_AHB_RROBIN $CONFIG_AHB_RROBIN [list $notmod] 2 - global CONFIG_AHB_SPLIT - write_tristate $cfg $autocfg CONFIG_AHB_SPLIT $CONFIG_AHB_SPLIT [list $notmod] 2 - global CONFIG_AHB_FPNPEN - write_tristate $cfg $autocfg CONFIG_AHB_FPNPEN $CONFIG_AHB_FPNPEN [list $notmod] 2 - global CONFIG_AHB_IOADDR - write_hex $cfg $autocfg CONFIG_AHB_IOADDR $CONFIG_AHB_IOADDR $notmod - global CONFIG_APB_HADDR - write_hex $cfg $autocfg CONFIG_APB_HADDR $CONFIG_APB_HADDR $notmod - global CONFIG_AHB_MON - write_tristate $cfg $autocfg CONFIG_AHB_MON $CONFIG_AHB_MON [list $notmod] 2 - global CONFIG_AHB_MONERR - if {($CONFIG_AHB_MON == 1)} then {write_tristate $cfg $autocfg CONFIG_AHB_MONERR $CONFIG_AHB_MONERR [list $notmod] 2 } - global CONFIG_AHB_MONWAR - if {($CONFIG_AHB_MON == 1)} then {write_tristate $cfg $autocfg CONFIG_AHB_MONWAR $CONFIG_AHB_MONWAR [list $notmod] 2 } - global CONFIG_AHB_DTRACE - write_tristate $cfg $autocfg CONFIG_AHB_DTRACE $CONFIG_AHB_DTRACE [list $notmod] 2 - write_comment $cfg $autocfg "Debug Link " - global CONFIG_DSU_UART - write_tristate $cfg $autocfg CONFIG_DSU_UART $CONFIG_DSU_UART [list $notmod] 2 - global CONFIG_DSU_JTAG - write_tristate $cfg $autocfg CONFIG_DSU_JTAG $CONFIG_DSU_JTAG [list $notmod] 2 - global CONFIG_DSU_ETH - global CONFIG_GRETH_ENABLE - if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_IPMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } - global CONFIG_DSU_IPLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPLSB $CONFIG_DSU_IPLSB $notmod } - global CONFIG_DSU_ETHMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_ETHMSB $CONFIG_DSU_ETHMSB $notmod } - global CONFIG_DSU_ETHLSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_ETHLSB $CONFIG_DSU_ETHLSB $notmod } - global CONFIG_DSU_ETH_PROG - global CONFIG_GRETH_GIGA - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH_PROG $CONFIG_DSU_ETH_PROG [list $notmod] 2 } - global CONFIG_DSU_ETH_DIS - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH_DIS $CONFIG_DSU_ETH_DIS [list $notmod] 2 } - write_comment $cfg $autocfg "Peripherals " - write_comment $cfg $autocfg "Memory controllers " - write_comment $cfg $autocfg "Leon2 memory controller " - global CONFIG_MCTRL_LEON2 - write_tristate $cfg $autocfg CONFIG_MCTRL_LEON2 $CONFIG_MCTRL_LEON2 [list $notmod] 2 - global CONFIG_MCTRL_8BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_8BIT $CONFIG_MCTRL_8BIT [list $notmod] 2 } - global CONFIG_MCTRL_16BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_16BIT $CONFIG_MCTRL_16BIT [list $notmod] 2 } - global CONFIG_MCTRL_5CS - if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_5CS $CONFIG_MCTRL_5CS [list $notmod] 2 } - global CONFIG_MCTRL_SDRAM - if {($CONFIG_MCTRL_LEON2 == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM $CONFIG_MCTRL_SDRAM [list $notmod] 2 } - global CONFIG_MCTRL_SDRAM_SEPBUS - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM_SEPBUS $CONFIG_MCTRL_SDRAM_SEPBUS [list $notmod] 2 } - global CONFIG_MCTRL_SDRAM_BUS64 - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM_BUS64 $CONFIG_MCTRL_SDRAM_BUS64 [list $notmod] 2 } - global CONFIG_MCTRL_SDRAM_INVCLK - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_SDRAM_INVCLK $CONFIG_MCTRL_SDRAM_INVCLK [list $notmod] 2 } - global CONFIG_MCTRL_PAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PAGE $CONFIG_MCTRL_PAGE [list $notmod] 2 } - global CONFIG_MCTRL_PROGPAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PROGPAGE $CONFIG_MCTRL_PROGPAGE [list $notmod] 2 } - write_comment $cfg $autocfg "On-chip RAM/ROM " - global CONFIG_AHBROM_ENABLE - write_tristate $cfg $autocfg CONFIG_AHBROM_ENABLE $CONFIG_AHBROM_ENABLE [list $notmod] 2 - global CONFIG_AHBROM_START - if {($CONFIG_AHBROM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBROM_START $CONFIG_AHBROM_START $notmod } - global CONFIG_AHBROM_PIPE - if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } - global CONFIG_AHBRAM_ENABLE - write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 - if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} - global CONFIG_AHBRAM_START - if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } - write_comment $cfg $autocfg "Ethernet interface " - write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 - if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} - write_comment $cfg $autocfg "UARTs, timers and irq control " - global CONFIG_UART1_ENABLE - write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 - if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} - global CONFIG_IRQ3_ENABLE - write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 - global CONFIG_IRQ3_SEC - if {($CONFIG_IRQ3_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_IRQ3_SEC $CONFIG_IRQ3_SEC [list $notmod] 2 } - global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {write_int $cfg $autocfg CONFIG_IRQ3_NSEC $CONFIG_IRQ3_NSEC $notmod } - global CONFIG_GPT_ENABLE - write_tristate $cfg $autocfg CONFIG_GPT_ENABLE $CONFIG_GPT_ENABLE [list $notmod] 2 - global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GPT_NTIM $CONFIG_GPT_NTIM $notmod } - global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GPT_SW $CONFIG_GPT_SW $notmod } - global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GPT_TW $CONFIG_GPT_TW $notmod } - global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GPT_IRQ $CONFIG_GPT_IRQ $notmod } - global CONFIG_GPT_SEPIRQ - if {($CONFIG_GPT_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GPT_SEPIRQ $CONFIG_GPT_SEPIRQ [list $notmod] 2 } - global CONFIG_GPT_WDOGEN - if {($CONFIG_GPT_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GPT_WDOGEN $CONFIG_GPT_WDOGEN [list $notmod] 2 } - global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {write_hex $cfg $autocfg CONFIG_GPT_WDOG $CONFIG_GPT_WDOG $notmod } - write_comment $cfg $autocfg "VHDL Debugging " - global CONFIG_DEBUG_UART - write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 - close $cfg - close $autocfg -} - - -proc clear_choices { } { - global CONFIG_SYN_INFERRED; set CONFIG_SYN_INFERRED 0 - global CONFIG_SYN_STRATIX; set CONFIG_SYN_STRATIX 0 - global CONFIG_SYN_STRATIXII; set CONFIG_SYN_STRATIXII 0 - global CONFIG_SYN_STRATIXIII; set CONFIG_SYN_STRATIXIII 0 - global CONFIG_SYN_CYCLONEIII; set CONFIG_SYN_CYCLONEIII 0 - global CONFIG_SYN_ALTERA; set CONFIG_SYN_ALTERA 0 - global CONFIG_SYN_ATC18; set CONFIG_SYN_ATC18 0 - global CONFIG_SYN_LATTICE; set CONFIG_SYN_LATTICE 0 - global CONFIG_SYN_ECLIPSE; set CONFIG_SYN_ECLIPSE 0 - global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 - global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 - global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 - global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 - global CONFIG_SYN_VIRTEX; set CONFIG_SYN_VIRTEX 0 - global CONFIG_SYN_VIRTEXE; set CONFIG_SYN_VIRTEXE 0 - global CONFIG_SYN_VIRTEX2; set CONFIG_SYN_VIRTEX2 0 - global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 - global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 - global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 - global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 - global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 - global CONFIG_MEM_VIRAGE; set CONFIG_MEM_VIRAGE 0 - global CONFIG_MEM_VIRAGE90; set CONFIG_MEM_VIRAGE90 0 - global CONFIG_CLK_INFERRED; set CONFIG_CLK_INFERRED 0 - global CONFIG_CLK_HCLKBUF; set CONFIG_CLK_HCLKBUF 0 - global CONFIG_CLK_UT130HBD; set CONFIG_CLK_UT130HBD 0 - global CONFIG_CLK_ALTDLL; set CONFIG_CLK_ALTDLL 0 - global CONFIG_CLK_LATDLL; set CONFIG_CLK_LATDLL 0 - global CONFIG_CLK_PRO3PLL; set CONFIG_CLK_PRO3PLL 0 - global CONFIG_CLK_PRO3EPLL; set CONFIG_CLK_PRO3EPLL 0 - global CONFIG_CLK_PRO3LPLL; set CONFIG_CLK_PRO3LPLL 0 - global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 - global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 - global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 - global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 - global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 - global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 - global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 - global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 - global CONFIG_IU_MUL_INFERRED; set CONFIG_IU_MUL_INFERRED 0 - global CONFIG_IU_MUL_MODGEN; set CONFIG_IU_MUL_MODGEN 0 - global CONFIG_IU_MUL_TECHSPEC; set CONFIG_IU_MUL_TECHSPEC 0 - global CONFIG_IU_MUL_DW; set CONFIG_IU_MUL_DW 0 - global CONFIG_FPU_GRFPU; set CONFIG_FPU_GRFPU 0 - global CONFIG_FPU_GRFPULITE; set CONFIG_FPU_GRFPULITE 0 - global CONFIG_FPU_MEIKO; set CONFIG_FPU_MEIKO 0 - global CONFIG_FPU_GRFPU_INFMUL; set CONFIG_FPU_GRFPU_INFMUL 0 - global CONFIG_FPU_GRFPU_DWMUL; set CONFIG_FPU_GRFPU_DWMUL 0 - global CONFIG_FPU_GRFPU_MODGEN; set CONFIG_FPU_GRFPU_MODGEN 0 - global CONFIG_FPU_GRFPU_TECHSPEC; set CONFIG_FPU_GRFPU_TECHSPEC 0 - global CONFIG_FPU_GRFPC0; set CONFIG_FPU_GRFPC0 0 - global CONFIG_FPU_GRFPC1; set CONFIG_FPU_GRFPC1 0 - global CONFIG_FPU_GRFPC2; set CONFIG_FPU_GRFPC2 0 - global CONFIG_ICACHE_ASSO1; set CONFIG_ICACHE_ASSO1 0 - global CONFIG_ICACHE_ASSO2; set CONFIG_ICACHE_ASSO2 0 - global CONFIG_ICACHE_ASSO3; set CONFIG_ICACHE_ASSO3 0 - global CONFIG_ICACHE_ASSO4; set CONFIG_ICACHE_ASSO4 0 - global CONFIG_ICACHE_SZ1; set CONFIG_ICACHE_SZ1 0 - global CONFIG_ICACHE_SZ2; set CONFIG_ICACHE_SZ2 0 - global CONFIG_ICACHE_SZ4; set CONFIG_ICACHE_SZ4 0 - global CONFIG_ICACHE_SZ8; set CONFIG_ICACHE_SZ8 0 - global CONFIG_ICACHE_SZ16; set CONFIG_ICACHE_SZ16 0 - global CONFIG_ICACHE_SZ32; set CONFIG_ICACHE_SZ32 0 - global CONFIG_ICACHE_SZ64; set CONFIG_ICACHE_SZ64 0 - global CONFIG_ICACHE_SZ128; set CONFIG_ICACHE_SZ128 0 - global CONFIG_ICACHE_SZ256; set CONFIG_ICACHE_SZ256 0 - global CONFIG_ICACHE_LZ16; set CONFIG_ICACHE_LZ16 0 - global CONFIG_ICACHE_LZ32; set CONFIG_ICACHE_LZ32 0 - global CONFIG_ICACHE_ALGORND; set CONFIG_ICACHE_ALGORND 0 - global CONFIG_ICACHE_ALGODIR; set CONFIG_ICACHE_ALGODIR 0 - global CONFIG_ICACHE_ALGOLRR; set CONFIG_ICACHE_ALGOLRR 0 - global CONFIG_ICACHE_ALGOLRU; set CONFIG_ICACHE_ALGOLRU 0 - global CONFIG_ICACHE_LRAM_SZ1; set CONFIG_ICACHE_LRAM_SZ1 0 - global CONFIG_ICACHE_LRAM_SZ2; set CONFIG_ICACHE_LRAM_SZ2 0 - global CONFIG_ICACHE_LRAM_SZ4; set CONFIG_ICACHE_LRAM_SZ4 0 - global CONFIG_ICACHE_LRAM_SZ8; set CONFIG_ICACHE_LRAM_SZ8 0 - global CONFIG_ICACHE_LRAM_SZ16; set CONFIG_ICACHE_LRAM_SZ16 0 - global CONFIG_ICACHE_LRAM_SZ32; set CONFIG_ICACHE_LRAM_SZ32 0 - global CONFIG_ICACHE_LRAM_SZ64; set CONFIG_ICACHE_LRAM_SZ64 0 - global CONFIG_ICACHE_LRAM_SZ128; set CONFIG_ICACHE_LRAM_SZ128 0 - global CONFIG_ICACHE_LRAM_SZ256; set CONFIG_ICACHE_LRAM_SZ256 0 - global CONFIG_DCACHE_ASSO1; set CONFIG_DCACHE_ASSO1 0 - global CONFIG_DCACHE_ASSO2; set CONFIG_DCACHE_ASSO2 0 - global CONFIG_DCACHE_ASSO3; set CONFIG_DCACHE_ASSO3 0 - global CONFIG_DCACHE_ASSO4; set CONFIG_DCACHE_ASSO4 0 - global CONFIG_DCACHE_SZ1; set CONFIG_DCACHE_SZ1 0 - global CONFIG_DCACHE_SZ2; set CONFIG_DCACHE_SZ2 0 - global CONFIG_DCACHE_SZ4; set CONFIG_DCACHE_SZ4 0 - global CONFIG_DCACHE_SZ8; set CONFIG_DCACHE_SZ8 0 - global CONFIG_DCACHE_SZ16; set CONFIG_DCACHE_SZ16 0 - global CONFIG_DCACHE_SZ32; set CONFIG_DCACHE_SZ32 0 - global CONFIG_DCACHE_SZ64; set CONFIG_DCACHE_SZ64 0 - global CONFIG_DCACHE_SZ128; set CONFIG_DCACHE_SZ128 0 - global CONFIG_DCACHE_SZ256; set CONFIG_DCACHE_SZ256 0 - global CONFIG_DCACHE_LZ16; set CONFIG_DCACHE_LZ16 0 - global CONFIG_DCACHE_LZ32; set CONFIG_DCACHE_LZ32 0 - global CONFIG_DCACHE_ALGORND; set CONFIG_DCACHE_ALGORND 0 - global CONFIG_DCACHE_ALGODIR; set CONFIG_DCACHE_ALGODIR 0 - global CONFIG_DCACHE_ALGOLRR; set CONFIG_DCACHE_ALGOLRR 0 - global CONFIG_DCACHE_ALGOLRU; set CONFIG_DCACHE_ALGOLRU 0 - global CONFIG_DCACHE_LRAM_SZ1; set CONFIG_DCACHE_LRAM_SZ1 0 - global CONFIG_DCACHE_LRAM_SZ2; set CONFIG_DCACHE_LRAM_SZ2 0 - global CONFIG_DCACHE_LRAM_SZ4; set CONFIG_DCACHE_LRAM_SZ4 0 - global CONFIG_DCACHE_LRAM_SZ8; set CONFIG_DCACHE_LRAM_SZ8 0 - global CONFIG_DCACHE_LRAM_SZ16; set CONFIG_DCACHE_LRAM_SZ16 0 - global CONFIG_DCACHE_LRAM_SZ32; set CONFIG_DCACHE_LRAM_SZ32 0 - global CONFIG_DCACHE_LRAM_SZ64; set CONFIG_DCACHE_LRAM_SZ64 0 - global CONFIG_DCACHE_LRAM_SZ128; set CONFIG_DCACHE_LRAM_SZ128 0 - global CONFIG_DCACHE_LRAM_SZ256; set CONFIG_DCACHE_LRAM_SZ256 0 - global CONFIG_MMU_COMBINED; set CONFIG_MMU_COMBINED 0 - global CONFIG_MMU_SPLIT; set CONFIG_MMU_SPLIT 0 - global CONFIG_MMU_REPARRAY; set CONFIG_MMU_REPARRAY 0 - global CONFIG_MMU_REPINCREMENT; set CONFIG_MMU_REPINCREMENT 0 - global CONFIG_MMU_I2; set CONFIG_MMU_I2 0 - global CONFIG_MMU_I4; set CONFIG_MMU_I4 0 - global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 - global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 - global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 - global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 - global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 - global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 - global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 - global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 - global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 - global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 - global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 - global CONFIG_MMU_PAGE_32K; set CONFIG_MMU_PAGE_32K 0 - global CONFIG_MMU_PAGE_PROG; set CONFIG_MMU_PAGE_PROG 0 - global CONFIG_DSU_ITRACESZ1; set CONFIG_DSU_ITRACESZ1 0 - global CONFIG_DSU_ITRACESZ2; set CONFIG_DSU_ITRACESZ2 0 - global CONFIG_DSU_ITRACESZ4; set CONFIG_DSU_ITRACESZ4 0 - global CONFIG_DSU_ITRACESZ8; set CONFIG_DSU_ITRACESZ8 0 - global CONFIG_DSU_ITRACESZ16; set CONFIG_DSU_ITRACESZ16 0 - global CONFIG_DSU_ATRACESZ1; set CONFIG_DSU_ATRACESZ1 0 - global CONFIG_DSU_ATRACESZ2; set CONFIG_DSU_ATRACESZ2 0 - global CONFIG_DSU_ATRACESZ4; set CONFIG_DSU_ATRACESZ4 0 - global CONFIG_DSU_ATRACESZ8; set CONFIG_DSU_ATRACESZ8 0 - global CONFIG_DSU_ATRACESZ16; set CONFIG_DSU_ATRACESZ16 0 - global CONFIG_IUFT_NONE; set CONFIG_IUFT_NONE 0 - global CONFIG_IUFT_PAR; set CONFIG_IUFT_PAR 0 - global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 - global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 - global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 - global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 - global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 - global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 - global CONFIG_DSU_ETHSZ8; set CONFIG_DSU_ETHSZ8 0 - global CONFIG_DSU_ETHSZ16; set CONFIG_DSU_ETHSZ16 0 - global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 - global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0 - global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0 - global CONFIG_AHBRAM_SZ8; set CONFIG_AHBRAM_SZ8 0 - global CONFIG_AHBRAM_SZ16; set CONFIG_AHBRAM_SZ16 0 - global CONFIG_AHBRAM_SZ32; set CONFIG_AHBRAM_SZ32 0 - global CONFIG_AHBRAM_SZ64; set CONFIG_AHBRAM_SZ64 0 - global CONFIG_GRETH_FIFO4; set CONFIG_GRETH_FIFO4 0 - global CONFIG_GRETH_FIFO8; set CONFIG_GRETH_FIFO8 0 - global CONFIG_GRETH_FIFO16; set CONFIG_GRETH_FIFO16 0 - global CONFIG_GRETH_FIFO32; set CONFIG_GRETH_FIFO32 0 - global CONFIG_GRETH_FIFO64; set CONFIG_GRETH_FIFO64 0 - global CONFIG_UA1_FIFO1; set CONFIG_UA1_FIFO1 0 - global CONFIG_UA1_FIFO2; set CONFIG_UA1_FIFO2 0 - global CONFIG_UA1_FIFO4; set CONFIG_UA1_FIFO4 0 - global CONFIG_UA1_FIFO8; set CONFIG_UA1_FIFO8 0 - global CONFIG_UA1_FIFO16; set CONFIG_UA1_FIFO16 0 - global CONFIG_UA1_FIFO32; set CONFIG_UA1_FIFO32 0 -} - - -proc update_choices { } { - global tmpvar_0 - set tmpvar_0 "Inferred" - global CONFIG_SYN_INFERRED - if { $CONFIG_SYN_INFERRED == 1 } then { set tmpvar_0 "Inferred" } - global CONFIG_SYN_STRATIX - if { $CONFIG_SYN_STRATIX == 1 } then { set tmpvar_0 "Altera-Stratix" } - global CONFIG_SYN_STRATIXII - if { $CONFIG_SYN_STRATIXII == 1 } then { set tmpvar_0 "Altera-StratixII" } - global CONFIG_SYN_STRATIXIII - if { $CONFIG_SYN_STRATIXIII == 1 } then { set tmpvar_0 "Altera-StratixIII" } - global CONFIG_SYN_CYCLONEIII - if { $CONFIG_SYN_CYCLONEIII == 1 } then { set tmpvar_0 "Altera-CycloneIII" } - global CONFIG_SYN_ALTERA - if { $CONFIG_SYN_ALTERA == 1 } then { set tmpvar_0 "Altera-Others" } - global CONFIG_SYN_ATC18 - if { $CONFIG_SYN_ATC18 == 1 } then { set tmpvar_0 "Atmel-ATC18" } - global CONFIG_SYN_LATTICE - if { $CONFIG_SYN_LATTICE == 1 } then { set tmpvar_0 "Lattice-EC/ECP/XP" } - global CONFIG_SYN_ECLIPSE - if { $CONFIG_SYN_ECLIPSE == 1 } then { set tmpvar_0 "Quicklogic-Eclipse" } - global CONFIG_SYN_UMC - if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } - global CONFIG_SYN_SPARTAN3 - if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } - global CONFIG_SYN_SPARTAN3E - if { $CONFIG_SYN_SPARTAN3E == 1 } then { set tmpvar_0 "Xilinx-Spartan3E" } - global CONFIG_SYN_SPARTAN6 - if { $CONFIG_SYN_SPARTAN6 == 1 } then { set tmpvar_0 "Xilinx-Spartan6" } - global CONFIG_SYN_VIRTEX - if { $CONFIG_SYN_VIRTEX == 1 } then { set tmpvar_0 "Xilinx-Virtex" } - global CONFIG_SYN_VIRTEXE - if { $CONFIG_SYN_VIRTEXE == 1 } then { set tmpvar_0 "Xilinx-VirtexE" } - global CONFIG_SYN_VIRTEX2 - if { $CONFIG_SYN_VIRTEX2 == 1 } then { set tmpvar_0 "Xilinx-Virtex2" } - global CONFIG_SYN_VIRTEX4 - if { $CONFIG_SYN_VIRTEX4 == 1 } then { set tmpvar_0 "Xilinx-Virtex4" } - global CONFIG_SYN_VIRTEX5 - if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } - global CONFIG_SYN_VIRTEX6 - if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } - global tmpvar_1 - set tmpvar_1 "Inferred" - global CONFIG_MEM_INFERRED - if { $CONFIG_MEM_INFERRED == 1 } then { set tmpvar_1 "Inferred" } - global CONFIG_MEM_UMC - if { $CONFIG_MEM_UMC == 1 } then { set tmpvar_1 "UMC18" } - global CONFIG_MEM_VIRAGE - if { $CONFIG_MEM_VIRAGE == 1 } then { set tmpvar_1 "Virage" } - global CONFIG_MEM_VIRAGE90 - if { $CONFIG_MEM_VIRAGE90 == 1 } then { set tmpvar_1 "Virage-TSMC90" } - global tmpvar_2 - set tmpvar_2 "Inferred" - global CONFIG_CLK_INFERRED - if { $CONFIG_CLK_INFERRED == 1 } then { set tmpvar_2 "Inferred" } - global CONFIG_CLK_HCLKBUF - if { $CONFIG_CLK_HCLKBUF == 1 } then { set tmpvar_2 "Actel-HCLKBUF" } - global CONFIG_CLK_UT130HBD - if { $CONFIG_CLK_UT130HBD == 1 } then { set tmpvar_2 "Aeroflex-UT130HBD" } - global CONFIG_CLK_ALTDLL - if { $CONFIG_CLK_ALTDLL == 1 } then { set tmpvar_2 "Altera-ALTPLL" } - global CONFIG_CLK_LATDLL - if { $CONFIG_CLK_LATDLL == 1 } then { set tmpvar_2 "Lattice-EXPLL" } - global CONFIG_CLK_PRO3PLL - if { $CONFIG_CLK_PRO3PLL == 1 } then { set tmpvar_2 "Proasic3-PLL" } - global CONFIG_CLK_PRO3EPLL - if { $CONFIG_CLK_PRO3EPLL == 1 } then { set tmpvar_2 "Proasic3E-PLL" } - global CONFIG_CLK_PRO3LPLL - if { $CONFIG_CLK_PRO3LPLL == 1 } then { set tmpvar_2 "Proasic3L-PLL" } - global CONFIG_CLK_FUSPLL - if { $CONFIG_CLK_FUSPLL == 1 } then { set tmpvar_2 "Fusion-PLL" } - global CONFIG_CLK_LIB18T - if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } - global CONFIG_CLK_RHUMC - if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } - global CONFIG_CLK_CLKDLL - if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } - global CONFIG_CLK_DCM - if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } - global tmpvar_3 - set tmpvar_3 "5-cycles" - global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } - global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } - global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" - global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } - global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } - global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } - global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" - global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } - global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } - global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" - global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } - global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } - global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } - global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" - global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } - global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } - global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" - global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } - global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } - global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } - global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" - global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } - global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } - global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } - global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } - global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } - global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } - global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } - global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } - global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" - global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } - global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" - global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } - global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } - global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } - global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" - global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } - global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } - global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } - global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } - global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } - global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } - global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } - global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } - global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" - global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } - global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } - global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } - global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" - global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } - global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } - global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } - global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } - global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } - global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } - global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } - global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } - global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" - global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } - global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" - global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } - global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } - global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } - global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" - global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } - global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } - global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } - global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } - global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } - global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } - global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } - global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } - global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" - global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } - global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" - global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } - global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" - global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } - global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } - global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } - global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } - global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" - global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } - global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } - global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } - global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } - global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" - global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } - global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } - global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } - global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } - global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" - global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } - global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } - global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } - global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } - global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" - global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } - global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } - global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } - global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } - global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" - global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } - global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } - global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } - global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } - global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" - global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } - global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } - global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } - global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } - global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" - global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } - global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } - global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } - global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } - global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } - global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } - global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" - global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } - global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } - global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } - global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } - global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" - global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } - global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } - global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } - global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } - global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } - global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } -} - - -proc update_define_mainmenu {} { - global CONFIG_MODULES - global CONFIG_LEON3FT_PRESENT - global CONFIG_HAS_SHARED_GRFPU - global CONSTANT_Y - set CONFIG_LEON3FT_PRESENT $CONSTANT_Y - set CONFIG_HAS_SHARED_GRFPU $CONSTANT_Y -} - - -# FILE: tail.tk -# This file is boilerplate TCL/TK function definitions for 'make xconfig'. -# -# CHANGES -# ======= -# -# 8 January 1998, Michael Elizabeth Chastain, -# Arrange buttons in three columns for better screen fitting. -# - -# -# Read the user's settings from .config. These will override whatever is -# in config.in. Don't do this if the user specified a -D to force -# the defaults. -# - -set defaults defconfig - -if { [file readable .config] == 1} then { - if { $argc > 0 } then { - if { [lindex $argv 0] != "-D" } then { - read_config .config - } - else - { - read_config $defaults - } - } else { - read_config .config - } -} else { - read_config $defaults -} - -update_define 1 $total_menus 0 -update_mainmenu - -button .f0.right.save -anchor w -text "Save and Exit" -underline 0\ - -command { catch {exec cp -f .config .config.old}; \ - writeconfig .config config.h; wrapup .wrap } - -button .f0.right.quit -anchor w -text "Quit Without Saving" -underline 0\ - -command { maybe_exit .maybe } - -button .f0.right.load -anchor w -text "Load Configuration from File" \ - -command { load_configfile .load "Load Configuration from file" read_config_file -} - -button .f0.right.store -anchor w -text "Store Configuration to File" \ - -command { load_configfile .load "Store Configuration to file" write_config_file } - -# -# Now pack everything. -# - -pack .f0.right.store .f0.right.load .f0.right.quit .f0.right.save \ - -padx 0 -pady 0 -side bottom -fill x -pack .f0.left .f0.middle .f0.right -side left -padx 5 -pady 0 -fill y -pack .f0 -padx 5 -pady 5 - -update idletasks -set winy [expr 10 + [winfo reqheight .f0]] -set scry [lindex [wm maxsize .] 1] -set winx [expr 10 + [winfo reqwidth .f0]] -set scrx [lindex [wm maxsize .] 0] -if {$winx < $scrx} then {set maxx -1} else {set maxx $winx} -if {$winy < $scry} then {set maxy -1} else {set maxy $winy} -.f0 configure -width $winx -height $winy -wm maxsize . $maxx $maxy - -# -# If we cannot write our config files, disable the write button. -# -if { [file exists .config] == 1 } then { - if { [file writable .config] == 0 } then { - .f0.right.save configure -state disabled - } - } else { - if { [file writable .] == 0 } then { - .f0.right.save configure -state disabled - } - } - -#if { [file exists include/linux/autoconf.h] == 1 } then { -# if { [file writable include/linux/autoconf.h] == 0 } then { -# .f0.right.save configure -state disabled -# } -# } else { -# if { [file writable include/linux/] == 0 } then { -# .f0.right.save configure -state disabled -# } -# } diff --git a/designs/leon3-lattice-latticeECP3/leon3mp.pty b/designs/leon3-lattice-latticeECP3/leon3mp.pty deleted file mode 100644 index 537921ff..00000000 --- a/designs/leon3-lattice-latticeECP3/leon3mp.pty +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/designs/leon3-lattice-latticeECP3/leon3mp.vhd b/designs/leon3-lattice-latticeECP3/leon3mp.vhd deleted file mode 100644 index ad356daf..00000000 --- a/designs/leon3-lattice-latticeECP3/leon3mp.vhd +++ /dev/null @@ -1,496 +0,0 @@ ------------------------------------------------------------------------------- --- LEON3 Demonstration design --- Copyright (C) 2006 Jiri Gaisler, Gaisler Research ------------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; -use ieee.numeric_std.all; - -library grlib; -use grlib.amba.all; -use grlib.stdlib.all; -use grlib.devices.all; -library techmap; -use techmap.gencomp.all; -use techmap.allclkgen.all; -library gaisler; -use gaisler.memctrl.all; -use gaisler.leon3.all; -use gaisler.uart.all; -use gaisler.misc.all; -use gaisler.net.all; -use gaisler.jtag.all; -library esa; -use esa.memoryctrl.all; -use work.config.all; --- pragma translate_off -use gaisler.sim.all; --- pragma translate_on - -entity leon3mp is - generic (fabtech : integer := CFG_FABTECH; - memtech : integer := CFG_MEMTECH; - padtech : integer := CFG_PADTECH; - disas : integer := CFG_DISAS; -- Enable disassembly to console - dbguart : integer := CFG_DUART; -- Print UART on console - pclow : integer := CFG_PCLOW - ); - port (reset_n : in std_ulogic; - clk_in : in std_ulogic; -- 100 MHz main clock --- dip_switch : in std_logic_vector (7 downto 0); - errorn : out std_ulogic; - ---only for running tests!!! - address : out std_logic_vector(19 downto 2); - data : inout std_logic_vector(31 downto 0); - ramsn : out std_logic_vector(1 downto 0); - mben : out std_logic_vector(3 downto 0); - oen : out std_ulogic; - writen : out std_ulogic; - - -- Debug Support Unit - dsubre : in std_ulogic; -- Debug Unit break (connect to button) - dsuact : out std_ulogic; - - -- DSU AHB UART interface - dsurx : in std_ulogic; - dsutx : out std_ulogic; - - -- Console UART1 interface - rxd1 : in std_ulogic; -- UART1 rx data - txd1 : out std_ulogic; -- UART1 tx data - - -- Ethernet interface #1 signals - rstn : out std_ulogic; - mdio : inout std_logic; - mdc : out std_ulogic; - rxc : in std_ulogic; - rx_er : in std_ulogic; - rx_dv : in std_ulogic; - rx_d : in std_logic_vector(7 downto 0); - txc : in std_ulogic; - tx_en : out std_ulogic; - tx_er : out std_ulogic; - tx_d : out std_logic_vector(7 downto 0); - gtxclk : out std_logic; - crs : in std_ulogic; - col : in std_ulogic; - clk125 : in std_ulogic; --- emdint : in std_ulogic; - - -- Output signals to LEDs - led : out std_logic_vector(7 downto 0); - seg14_led_out : out std_logic_vector(14 downto 0) - ); -end; - - -architecture rtl of leon3mp is - - signal vcc : std_logic; - signal gnd : std_logic; - - signal memi : memory_in_type; - signal memo : memory_out_type; - signal wpo : wprot_out_type; - - signal sdi : sdctrl_in_type; - signal sdo : sdram_out_type; - - signal apbi : apb_slv_in_type; - signal apbo : apb_slv_out_vector := (others => apb_none); - signal ahbsi : ahb_slv_in_type; - signal ahbso : ahb_slv_out_vector := (others => ahbs_none); - signal ahbmi : ahb_mst_in_type; - signal ahbmo : ahb_mst_out_vector := (others => ahbm_none); - - signal dui : uart_in_type; - signal duo : uart_out_type; - - signal irqi : irq_in_vector(0 to CFG_NCPU-1); - signal irqo : irq_out_vector(0 to CFG_NCPU-1); - - signal dbgi : l3_debug_in_vector(0 to CFG_NCPU-1); - signal dbgo : l3_debug_out_vector(0 to CFG_NCPU-1); - - signal dsui : dsu_in_type; - signal dsuo : dsu_out_type; - - signal ethi : eth_in_type; - signal etho : eth_out_type; - signal egtx_clk : std_ulogic; - - signal gpti : gptimer_in_type; - signal gpto : gptimer_out_type; - - signal lclk, clk_ddr : std_ulogic; - - signal rst_pad_n : std_logic; - signal gen_rst_n : std_ulogic; - signal rstraw : std_logic; - - signal clkm : std_ulogic; - signal clkml : std_ulogic; - - signal lock : std_logic; - signal errorn_s : std_logic; - - signal cgi : clkgen_in_type; - signal cgo : clkgen_out_type; - signal cgi1 : clkgen_in_type; - signal cgo1 : clkgen_out_type; - - signal tb_rst : std_logic; - signal tb_clk : std_logic; - signal phy_init_done : std_logic; - - -- Console UART1 - signal uart1i : uart_in_type; - signal uart1o : uart_out_type; - - attribute keep : boolean; - attribute syn_keep : boolean; - attribute syn_preserve : boolean; - - attribute syn_keep of clkm : signal is true; - attribute syn_preserve of clkm : signal is true; - attribute syn_keep of egtx_clk : signal is true; - attribute syn_preserve of egtx_clk : signal is true; - - attribute keep of clkm : signal is true; - attribute keep of egtx_clk : signal is true; - - constant BOARD_FREQ : integer := 100000; -- input frequency in KHz --- constant CPU_FREQ : integer := BOARD_FREQ * CFG_CLKMUL / CFG_CLKDIV; -- CPU frequency in KHz ---TEMPORARY!!! - constant CPU_FREQ : integer := BOARD_FREQ * 8 / 10; -- CPU frequency in KHz - constant IOAEN : integer := 0; - -begin ----------------------------------------------------------------------- ---- Reset and Clock generation ------------------------------------- ----------------------------------------------------------------------- - vcc <= '1'; - gnd <= '0'; - --- pllref_pad : clkpad generic map (tech => padtech) --- port map (pllref, cgi.pllref); - - clk_pad : clkpad generic map (tech => padtech) port map (pad => clk_in, o => lclk); - -- system clock generator - clkgen0 : clkgen generic map (tech => padtech , clk_mul => CFG_CLKMUL, clk_div => CFG_CLKDIV, sdramen => CFG_MCTRL_SDEN, noclkfb => CFG_CLK_NOFB, pcien => 0, pcidll => 0, pcisysclk => 0, - freq => BOARD_FREQ, clk2xen => 0) - port map (clkin => lclk, pciclkin => lclk, clk => clkm, clkn => open, clk2x => open, sdclk => open, pciclk => open, cgi => cgi, cgo => cgo); - cgi.pllctrl <= "00"; - cgi.pllrst <= rstraw; - led(0) <= not cgo.clklock; - - -- Ethernet 1G PHY clock generator (125MHz) --- clkgen1 : clkgen generic map (tech => padtech, clk_mul => 5, clk_div => 4, sdramen => 0, noclkfb => 0, pcien => 0, pcidll => 0, pcisysclk => 0, --- freq => BOARD_FREQ, clk2xen => 0) --- port map (clkin => lclk, pciclkin => gnd, clk => egtx_clk, clkn => open, clk2x => open, sdclk => open, pciclk => open, cgi => cgi2, cgo => cgo2); ---TEMPORARY!!! - clkgen1 : clkgen generic map (tech => padtech, clk_mul => 1, clk_div => 1, sdramen => 0, noclkfb => 0, pcien => 0, pcidll => 0, pcisysclk => 0, - freq => 125000, clk2xen => 0) - port map (clkin => clk125, pciclkin => gnd, clk => egtx_clk, clkn => open, clk2x => open, sdclk => open, pciclk => open, cgi => cgi1, cgo => cgo1); - cgi1.pllctrl <= "00"; - cgi1.pllrst <= rstraw; ---cgi1.pllref <= egtx_clk_fb; - led(1) <= not cgo1.clklock; - - gtxclk_pad : outpad generic map (tech => padtech) - port map (pad => gtxclk, i => egtx_clk); - - -- Glitch free reset that can be used for the Eth Phy and flash memory - resetn_pad : inpad generic map (tech => padtech) port map (reset_n, rst_pad_n); - -- reset generator - rst0 : rstgen generic map (acthigh => 0) - port map (rstin => rst_pad_n, clk => clkm, clklock => cgo.clklock, rstout => gen_rst_n, rstoutraw => rstraw); - - ----------------------------------------------------------------------- ---- AHB CONTROLLER -------------------------------------------------- ----------------------------------------------------------------------- - ahb0 : ahbctrl generic map (defmast => CFG_DEFMST, split => CFG_SPLIT, rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO, ioen => IOAEN, nahbm => CFG_NCPU + CFG_GRETH + CFG_AHB_UART, nahbs => 8) - port map (rst => gen_rst_n, clk => clkm, msti => ahbmi, msto => ahbmo, slvi => ahbsi, slvo => ahbso); - - ----------------------------------------------------------------------- ---- LEON3 processor and DSU ----------------------------------------- ----------------------------------------------------------------------- - l3 : if CFG_LEON3 = 1 generate - cpu : for i in 0 to CFG_NCPU - 1 generate - -- LEON3 processor - u0 : leon3s generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, - 0, CFG_MAC, pclow, 0, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, - CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, - CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, - CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, - CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU - 1) - port map (clkm, gen_rst_n, ahbmi, ahbmo(i), ahbsi, ahbso, irqi(i), irqo(i), dbgi(i), dbgo(i)); - end generate; - - errorn_s <= dbgo(0).error; -- active low - led(2) <= errorn_s; - error_pad : outpad generic map (tech => padtech) port map (pad => errorn, i => errorn_s); - - dsugen : if CFG_DSU = 1 generate - -- LEON3 Debug Support Unit - dsu0 : dsu3 generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#, ncpu => CFG_NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ) - port map (gen_rst_n, clkm, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo); - dsui.enable <= '1'; - led(4) <= not dsuo.active; - dsubre_pad : inpad generic map (tech => padtech) port map (dsubre, dsui.break); - dsuact_pad : outpad generic map (tech => padtech) port map (dsuact, dsuo.active); - end generate; - end generate; - nodsu : if CFG_DSU = 0 generate - dsuo.tstop <= '0'; - dsuo.active <= '0'; - end generate; - - dcomgen : if CFG_AHB_UART = 1 generate - -- Debug UART - dcom0: ahbuart generic map (hindex => CFG_NCPU, pindex => 7, paddr => 7) - port map (gen_rst_n, clkm, dui, duo, apbi, apbo(7), ahbmi, ahbmo(CFG_NCPU)); - dui.extclk <= '0'; - led(6) <= not dui.rxd; - led(7) <= not duo.txd; - dsurx_pad : inpad generic map (tech => padtech) port map (dsurx, dui.rxd); - dsutx_pad : outpad generic map (tech => padtech) port map (dsutx, duo.txd); - end generate; - nouah : if CFG_AHB_UART = 0 generate - apbo(7) <= apb_none; - end generate; - - ----------------------------------------------------------------------- ---- Memory controllers ---------------------------------------------- ----------------------------------------------------------------------- - memi.writen <= '1'; - memi.wrn <= "1111"; - memi.bwidth <= "00"; - - mctrl0 : mctrl generic map (hindex => 0, pindex => 0, rommask => 16#000#, iomask => 16#000#, paddr => 0, srbanks => 1, ram8 => CFG_MCTRL_RAM8BIT, - ram16 => CFG_MCTRL_RAM16BIT, sden => CFG_MCTRL_SDEN, invclk => CFG_CLK_NOFB, sepbus => CFG_MCTRL_SEPBUS) - port map (gen_rst_n, clkm, memi, memo, ahbsi, ahbso(0), apbi, apbo(0), wpo, sdo); - - addr_pad : outpadv generic map (width => 18, tech => padtech) - port map (address, memo.address(19 downto 2)); - ramsa_pad : outpad generic map (tech => padtech) - port map (ramsn(0), memo.ramsn(0)); - ramsb_pad : outpad generic map (tech => padtech) - port map (ramsn(1), memo.ramsn(0)); - oen_pad : outpad generic map (tech => padtech) - port map (oen, memo.oen); - wri_pad : outpad generic map (tech => padtech) - port map (writen, memo.writen); - mben_pads : outpadv generic map (tech => padtech, width => 4) - port map (mben, memo.mben); - - data_pads : iopadvv generic map (tech => padtech, width => 32) - port map (data, memo.data(31 downto 0), memo.vbdrive(31 downto 0), memi.data(31 downto 0)); - - ----------------------------------------------------------------------- ---- APB Bridge and various periherals ------------------------------- ----------------------------------------------------------------------- - -- APB Bridge - apb0 : apbctrl generic map (hindex => 1, haddr => CFG_APBADDR, nslaves => 16) - port map (gen_rst_n, clkm, ahbsi, ahbso(1), apbi, apbo); - - uart1 : if CFG_UART1_ENABLE /= 0 generate - -- Console UART1 - uart1 : apbuart generic map (pindex => 1, paddr => 1, pirq => 2, console => dbguart, fifosize => CFG_UART1_FIFO) - port map (gen_rst_n, clkm, apbi, apbo(1), uart1i, uart1o); - uart1i.extclk <= '0'; - uart1i.ctsn <= '0'; ---commented because using inpad/outpad --- uart1i.rxd <= rxd1; --- txd1 <= uart1o.txd; - uart1_rx_pad : inpad generic map (tech => padtech) port map (pad => rxd1, o => uart1i.rxd); - uart1_tx_pad : outpad generic map (tech => padtech) port map (pad => txd1, i => uart1o.txd); - --shared with GRETH signals tx_en, tx_er --- led(6) <= not uart1i.rxd; --- led(7) <= not uart1o.txd; - end generate; - noua0 : if CFG_UART1_ENABLE = 0 generate - apbo(1) <= apb_none; - end generate; - - -- Interrupt controller - irqctrl : if CFG_IRQ3_ENABLE /= 0 generate - irqctrl0 : irqmp generic map (pindex => 2, paddr => 2, ncpu => CFG_NCPU) - port map (gen_rst_n, clkm, apbi, apbo(2), irqo, irqi); - end generate; - irq3 : if CFG_IRQ3_ENABLE = 0 generate - x : for i in 0 to (CFG_NCPU - 1) generate - irqi(i).irl <= "0000"; - end generate; - apbo(2) <= apb_none; - end generate; - - -- Time Unit - gpt : if CFG_GPT_ENABLE /= 0 generate - timer0 : gptimer generic map (pindex => 3, paddr => 3, pirq => CFG_GPT_IRQ, sepirq => CFG_GPT_SEPIRQ, sbits => CFG_GPT_SW, ntimers => CFG_GPT_NTIM, nbits => CFG_GPT_TW) - port map (gen_rst_n, clkm, apbi, apbo(3), gpti, gpto); - gpti.dhalt <= dsuo.tstop; - gpti.extclk <= '0'; - led(5) <= not gpto.wdog; - end generate; - notim : if CFG_GPT_ENABLE = 0 generate - apbo(3) <= apb_none; - end generate; - - -- GPIO Unit --- gpio0 : if CFG_GRGPIO_ENABLE /= 0 generate --- grgpio0: grgpio --- generic map(pindex => 11, paddr => 11, imask => CFG_GRGPIO_IMASK, nbits => 12) --- port map(gen_rst_n, clkm, apbi, apbo(11), gpioi, gpioo); --- end generate; - - ------------------------------------------------------------------------ ---- ETHERNET --------------------------------------------------------- ------------------------------------------------------------------------ - eth1 : if (CFG_GRETH = 1) generate -- Gaisler Ethernet Interface #1 - e1 : grethm generic map (hindex => CFG_NCPU + CFG_AHB_UART, pindex => 15, paddr => 15, pirq => 12, memtech => memtech, - mdcscaler => CPU_FREQ / 1000, enable_mdio => 1, fifosize => CFG_ETH_FIFO, nsync => 1, edcl => CFG_DSU_ETH, edclbufsz => CFG_ETH_BUF, - macaddrh => CFG_ETH_ENM, macaddrl => CFG_ETH_ENL, phyrstadr => 0, ipaddrh => CFG_ETH_IPM, ipaddrl => CFG_ETH_IPL, giga => CFG_GRETH1G)--, enable_mdint => 1) - port map (rst => gen_rst_n, clk => clkm, ahbmi => ahbmi, ahbmo => ahbmo(CFG_NCPU + CFG_AHB_UART), apbi => apbi, apbo => apbo(15), ethi => ethi, etho => etho); --- led(6) <= not etho.tx_en; --- led(7) <= not etho.tx_er; - end generate; - - ethpads1 : if (CFG_GRETH = 1) generate -- GRETH #1 pads - emdio_pad : iopad generic map (tech => padtech) - port map (pad => mdio, - i => etho.mdio_o, - en => etho.mdio_oe, - o => ethi.mdio_i); - - etxc_pad : clkpad generic map (tech => padtech) - port map (pad => txc, - o => ethi.tx_clk); - erxc_pad : clkpad generic map (tech => padtech) - port map (pad => rxc, - o => ethi.rx_clk); - erxd_pad : inpadv generic map (tech => padtech, width => 8) - port map (pad => rx_d(7 downto 0), - o => ethi.rxd(7 downto 0)); - erxdv_pad : inpad generic map (tech => padtech) - port map (pad => rx_dv, - o => ethi.rx_dv); - erxer_pad : inpad generic map (tech => padtech) - port map (pad => rx_er, - o => ethi.rx_er); - erxco_pad : inpad generic map (tech => padtech) - port map (pad => col, - o => ethi.rx_col); - erxcr_pad : inpad generic map (tech => padtech) - port map (pad => crs, - o => ethi.rx_crs); - - etxd_pad : outpadv generic map (tech => padtech, width => 8) - port map (pad => tx_d(7 downto 0), - i => etho.txd(7 downto 0)); - - etxen_pad : outpad generic map (tech => padtech) - port map (pad => tx_en, - i => etho.tx_en); - tx_er <= '0'; -- not present in Marvel 88E1119R Gigabit Ethernet transceiver device --- etxer_pad : outpad generic map (tech => padtech) --- port map (pad => tx_er, --- i => etho.tx_er); - emdc_pad : outpad generic map (tech => padtech) - port map (pad => mdc, - i => etho.mdc); - erst_pad : outpad generic map (tech => padtech) - port map (pad => rstn, --- i => etho.reset); - i => gen_rst_n); - - ethi.gtx_clk <= egtx_clk; - end generate; - - ------------------------------------------------------------------------ ---- 14-SEGMENT ALPHA-NUMERIC LED DISPLAY ----------------------------- ------------------------------------------------------------------------ - seg14_led_out <= (others => '0'); - - ------------------------------------------------------------------------ ---- AHB ROM ---------------------------------------------------------- ------------------------------------------------------------------------ - bpromgen : if CFG_AHBROMEN /= 0 generate - brom : entity work.ahbrom generic map (hindex => 6, haddr => CFG_AHBRODDR, pipe => CFG_AHBROPIP) - port map (gen_rst_n, clkm, ahbsi, ahbso(6)); - end generate; - - nobpromgen : if CFG_AHBROMEN = 0 generate - ahbso(6) <= ahbs_none; - end generate; - - ------------------------------------------------------------------------ ---- AHB RAM ---------------------------------------------------------- ------------------------------------------------------------------------ - ahbramgen : if CFG_AHBRAMEN = 1 generate - ahbram0 : ahbram generic map (hindex => 3, haddr => CFG_AHBRADDR, tech => CFG_MEMTECH, kbytes => CFG_AHBRSZ) - port map (gen_rst_n, clkm, ahbsi, ahbso(3)); - end generate; - - nram : if CFG_AHBRAMEN = 0 generate - ahbso(3) <= ahbs_none; - end generate; - - ------------------------------------------------------------------------ ---- Test report module ---------------------------------------------- ------------------------------------------------------------------------ --- pragma translate_off - test0 : ahbrep generic map (hindex => 4, haddr => 16#200#) - port map (gen_rst_n, clkm, ahbsi, ahbso(4)); --- pragma translate_on - - ------------------------------------------------------------------------ ---- Drive unused bus elements --------------------------------------- ------------------------------------------------------------------------ - nam1 : for i in (CFG_NCPU + CFG_GRETH + CFG_AHB_UART + 1) to (NAHBMST - 1) generate - ahbmo(i) <= ahbm_none; - end generate; - - ------------------------------------------------------------------------ ---- Boot message ---------------------------------------------------- ------------------------------------------------------------------------ --- pragma translate_off - x : report_version generic map (msg1 => "LEON3 Demonstration design for LatticeECP3 Versa Evaluation Board", - msg2 => "GRLIB Version " & tost(LIBVHDL_VERSION/1000) & "." & tost((LIBVHDL_VERSION mod 1000)/100) & "." & tost(LIBVHDL_VERSION mod 100) & ", build " & tost(LIBVHDL_BUILD), - msg3 => "Target technology: " & tech_table(fabtech) & ", memory library: " & tech_table(memtech), - mdel => 1); --- pragma translate_on - -end rtl; - diff --git a/designs/leon3-lattice-latticeECP3/prom.S b/designs/leon3-lattice-latticeECP3/prom.S deleted file mode 100644 index 1e9a59f7..00000000 --- a/designs/leon3-lattice-latticeECP3/prom.S +++ /dev/null @@ -1,190 +0,0 @@ - -/* Template boot-code for LEON3 test benches */ - -#include "prom.h" - -#ifndef STACKSIZE -#define STACKSIZE 0x00020000 -#endif - - - .seg "text" - .proc 0 - .align 4 - .global start -start: - - flush - set 0x10e0, %g1 ! init IU - mov %g1, %psr - mov %g0, %wim - mov %g0, %tbr - mov %g0, %y - mov %g0, %asr16 - nop - set 0x81000f, %g1 - sta %g1, [%g0] 2 - mov %g0, %g2 - nop - nop - nop - nop - nop - or %g2, %g2, %g0 - nop - nop - nop - nop - nop -#ifdef DSUADDR - set DSUADDR, %g2 - st %g0, [%g2] - st %g0, [%g2+0x08] - st %g0, [%g2+0x20] - st %g0, [%g2+0x24] - st %g0, [%g2+0x40] - st %g0, [%g2+0x44] - st %g0, [%g2+0x50] - st %g0, [%g2+0x54] - st %g0, [%g2+0x58] - st %g0, [%g2+0x5C] - st %g0, [%g2+0x54] -#endif - -2: - mov %asr17, %g3 - and %g3, 0x1f, %g3 - mov %g0, %g4 - mov %g0, %g5 - mov %g0, %g6 - mov %g0, %g7 -1: - mov %g0, %l0 - mov %g0, %l1 - mov %g0, %l2 - mov %g0, %l3 - mov %g0, %l4 - mov %g0, %l5 - mov %g0, %l6 - mov %g0, %l7 - mov %g0, %o0 - mov %g0, %o1 - mov %g0, %o2 - mov %g0, %o3 - mov %g0, %o4 - mov %g0, %o5 - mov %g0, %o6 - mov %g0, %o7 - subcc %g3, 1, %g3 - bge 1b - save - - mov 2, %g1 - mov %g1, %wim - set 0x10e0, %g1 ! enable traps - mov %g1, %psr - nop; nop; nop; - - mov %psr, %g1 - srl %g1, 12, %g1 - andcc %g1, 1, %g0 - be 1f - nop - - set _fsrxx, %g3 - ld [%g3], %fsr - ldd [%g3], %f0 - ldd [%g3], %f2 - ldd [%g3], %f4 - ldd [%g3], %f6 - ldd [%g3], %f8 - ldd [%g3], %f10 - ldd [%g3], %f12 - ldd [%g3], %f14 - ldd [%g3], %f16 - ldd [%g3], %f18 - ldd [%g3], %f20 - ldd [%g3], %f22 - ldd [%g3], %f24 - ldd [%g3], %f26 - ldd [%g3], %f28 - ldd [%g3], %f30 - nop - nop - nop - nop - nop - faddd %f0, %f2, %f4 - nop - nop - nop - nop - ba 1f - nop - - -.align 8 -_fsrxx: - .word 0 - .word 0 - -1: - mov %asr17, %g3 - srl %g3, 28, %g3 - andcc %g3, 0x0f, %g3 - bne 1f - - set L2MCTRLIO, %g1 - set MCFG1, %g2 - st %g2, [%g1] - set MCFG2, %g2 - st %g2, [%g1+4] - set MCFG3, %g2 - st %g2, [%g1+8] -! set IRQCTRL, %g1 -! set 0x0ffff, %g2 -! st %g2, [%g1+0x10] - -#ifdef DDR2CTRLIO - set DDR2CTRLIO, %g1 - set DDR2CFG4, %g2 - st %g2, [%g1+12] -#endif - -#ifdef ASDCFG -#ifndef SDCTRLPNP -#define SDCTRLPNP 0xFFFFF860 -#endif - set SDCTRLPNP, %g1 - ld [%g1], %g2 - srl %g2, 12, %g2 - set 0x01009, %g1 - subcc %g1, %g2, %g0 - bne 1f - - set ASDCFG, %g1 - set DSDCFG, %g2 - st %g2, [%g1] -#endif - - ! %g3 = cpu index -1: set STACKSIZE, %g2 - mov %g0, %g1 -2: subcc %g3, 0, %g0 - be 3f - nop - add %g1, %g2, %g1 - ba 2b - sub %g3, 1, %g3 - - -3: set RAMSTART+ RAMSIZE-32, %fp - sub %fp, %g1, %fp - sub %fp, 96, %sp - - set RAMSTART, %g1 - - jmp %g1 - nop - -.align 32 diff --git a/designs/leon3-lattice-latticeECP3/systest.c b/designs/leon3-lattice-latticeECP3/systest.c deleted file mode 100644 index c04f5213..00000000 --- a/designs/leon3-lattice-latticeECP3/systest.c +++ /dev/null @@ -1,17 +0,0 @@ - -main() - -{ - report_start(); - -// base_test(); - leon3_test(1, 0x80000200, 0); -// apbuart_test(0x80000100); - irqtest(0x80000200); - gptimer_test(0x80000300, 8); - - /* Ethernet #1 core test */ - greth_test(0x80000f00); - - report_end(); -} diff --git a/designs/leon3-lattice-latticeECP3/testbench.vhd b/designs/leon3-lattice-latticeECP3/testbench.vhd deleted file mode 100644 index e0751c50..00000000 --- a/designs/leon3-lattice-latticeECP3/testbench.vhd +++ /dev/null @@ -1,305 +0,0 @@ ------------------------------------------------------------------------------ --- LEON3 Demonstration design test bench --- Copyright (C) 2004 Jiri Gaisler, Gaisler Research ------------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; -library gaisler; -use gaisler.libdcom.all; -use gaisler.sim.all; -use gaisler.jtagtst.all; -library techmap; -use techmap.gencomp.all; -use work.debug.all; - -use work.config.all; - -entity testbench is - generic ( - fabtech : integer := CFG_FABTECH; - memtech : integer := CFG_MEMTECH; - padtech : integer := CFG_PADTECH; - disas : integer := CFG_DISAS; -- Enable disassembly to console - dbguart : integer := CFG_DUART; -- Print UART on console - pclow : integer := CFG_PCLOW; - clkperiod : integer := 10 -- system clock period (10ns) - ); -end; - -architecture behav of testbench is - constant promfile : string := "prom.srec"; -- rom contents - constant sdramfile : string := "sdram.srec"; -- sdram contents - - constant lresp : boolean := false; - constant ct : integer := clkperiod / 2; - - signal clk : std_logic := '0'; - signal clk200p : std_logic := '1'; - signal clk200n : std_logic := '0'; - signal rst_n : std_logic := '0'; - signal rstn1 : std_logic; - signal rstn2 : std_logic; - signal errorn : std_logic; - - signal dip_switch : std_logic_vector(7 downto 0); - signal seg14_led_out : std_logic_vector(14 downto 0); - ---only for running tests!!! - signal address : std_logic_vector(19 downto 0); - signal data : std_logic_vector(31 downto 0); - signal mben : std_logic_vector(3 downto 0); - signal ramsn : std_logic_vector(1 downto 0); - signal oen : std_ulogic; - signal writen : std_ulogic; - - -- Debug support unit - signal dsubre : std_ulogic; - signal dsuen : std_ulogic; - - -- AHB DSU UART - signal dsurx : std_ulogic; - signal dsutx : std_ulogic; - signal dsurst : std_ulogic; - - -- APB Console UART1 - signal txd1 : std_ulogic; - signal rxd1 : std_ulogic; - -- simulation signals - signal txd2 : std_ulogic; - signal rxd2 : std_ulogic; - - -- Ethernet interface #1 signals - signal eth_rstn : std_ulogic; - signal etx_clk : std_ulogic; - signal erx_clk : std_ulogic; - signal erxdt : std_logic_vector(7 downto 0); - signal erx_dv : std_ulogic; - signal erx_er : std_ulogic; - signal erx_col : std_ulogic; - signal erx_crs : std_ulogic; - signal etxdt : std_logic_vector(7 downto 0); - signal etx_en : std_ulogic; - signal etx_er : std_ulogic; - signal emdc : std_ulogic; - signal emdio : std_logic; - signal egtx_clk : std_logic; - signal eth_clk125 : std_ulogic := '0'; - - -- Output signals for LEDs - signal led : std_logic_vector(7 downto 0); - - signal brdyn : std_ulogic; - -begin - -- clock and reset - clk <= not clk after ct * 1 ns; - - rst_n <= dsurst; - dsuen <= '1'; - dsubre <= '0'; - - clk200p <= not clk200p after 2.5 ns; - clk200n <= not clk200n after 2.5 ns; - - eth_clk125 <= not eth_clk125 after 4 ns; - - rstn1 <= rst_n; - - -- AHB DSU UART's rx pulled high - dsurx <= 'H'; - -- APB Console UART1's rx pulled high - rxd1 <= 'H'; - - DUT : entity work.leon3mp generic map (fabtech, memtech, padtech, disas, dbguart, pclow) - port map (reset_n => rst_n, - clk_in => clk, --- dip_switch => dip_switch, - errorn => errorn, ---only for running tests!!! - address => address(19 downto 2), - data => data(31 downto 0), - ramsn => ramsn, - mben => mben, - oen => oen, - writen => writen, - -- Debug Unit - dsubre => dsubre, - -- DSU AHB UART interface - dsutx => dsutx, - dsurx => dsurx, - -- Console UART1 interface - rxd1 => rxd1, - txd1 => txd1, - -- ETH #1 - rstn => eth_rstn, - mdio => emdio, - mdc => emdc, - rxc => erx_clk, - rx_er => erx_er, - rx_dv => erx_dv, - rx_d => erxdt(7 downto 0), - txc => etx_clk, - tx_en => etx_en, - tx_er => etx_er, - tx_d => etxdt(7 downto 0), - gtxclk => egtx_clk, - crs => erx_crs, - col => erx_col, - clk125 => eth_clk125, - - led => led, - seg14_led_out => seg14_led_out - ); - - address(1 downto 0) <= "00"; - sram0 : for i in 0 to 1 generate - sr0 : sram16 generic map (index => i * 2, abits => 18, fname => sdramfile) - port map (address(19 downto 2), data(31 - i * 16 downto 16 - i * 16), mben(i * 2 + 1), mben(i * 2), ramsn(i), writen, oen); - end generate; - - phy1 : if (CFG_GRETH = 1) generate - p0: phy generic map (address => 0) - port map(rstn => eth_rstn, - mdio => emdio, - tx_clk => etx_clk, - rx_clk => erx_clk, - rxd => erxdt(7 downto 0), - rx_dv => erx_dv, - rx_er => erx_er, - rx_col => erx_col, - rx_crs => erx_crs, - txd => etxdt(7 downto 0), - tx_en => etx_en, - tx_er => etx_er, - mdc => emdc, - gtx_clk => egtx_clk); - end generate; - - iuerr : process - begin - wait for 5000 ns; - if to_x01(not errorn) = '0' then - wait on errorn; - end if; - assert (to_x01(not errorn) = '0') - report "*** IU in error mode, simulation halted ***" - severity failure ; - end process; - - data <= buskeep(data), (others => 'H') after 250 ns; - - dsucom : process - procedure dsucfg(signal dsurx : in std_ulogic; signal dsutx : out std_ulogic) is - variable w32 : std_logic_vector(31 downto 0); - variable c8 : std_logic_vector(7 downto 0); - constant txp : time := 320 * 1 ns; - begin --- dsutx <= '1'; - dsurst <= '0'; - wait for 2500 ns; - dsurst <= '1'; - wait; - wait for 5000 ns; - txc(dsutx, 16#55#, txp); -- sync uart - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); - txa(dsutx, 16#00#, 16#00#, 16#20#, 16#2e#, txp); - - wait for 25000 ns; - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#01#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#40#, 16#00#, 16#24#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0D#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#70#, 16#11#, 16#78#, txp); - txa(dsutx, 16#91#, 16#00#, 16#00#, 16#0D#, txp); - - txa(dsutx, 16#90#, 16#40#, 16#00#, 16#44#, txp); - txa(dsutx, 16#00#, 16#00#, 16#20#, 16#00#, txp); - - txc(dsutx, 16#80#, txp); - txa(dsutx, 16#90#, 16#40#, 16#00#, 16#44#, txp); - - wait; - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#00#, 16#00#, 16#0a#, 16#aa#, txp); - txa(dsutx, 16#00#, 16#55#, 16#00#, 16#55#, txp); - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#00#, 16#00#, 16#0a#, 16#a0#, txp); - txa(dsutx, 16#01#, 16#02#, 16#09#, 16#33#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#2e#, txp); - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#91#, 16#00#, 16#00#, 16#00#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#2e#, txp); - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0f#, txp); - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#00#, txp); - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#80#, 16#00#, 16#02#, 16#10#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0f#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#91#, 16#40#, 16#00#, 16#24#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#24#, txp); - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#91#, 16#70#, 16#00#, 16#00#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#03#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); - txa(dsutx, 16#00#, 16#00#, 16#ff#, 16#ff#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#40#, 16#00#, 16#48#, txp); - txa(dsutx, 16#00#, 16#00#, 16#00#, 16#12#, txp); - - txc(dsutx, 16#c0#, txp); - txa(dsutx, 16#90#, 16#40#, 16#00#, 16#60#, txp); - txa(dsutx, 16#00#, 16#00#, 16#12#, 16#10#, txp); - - txc(dsutx, 16#80#, txp); - txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); - rxi(dsurx, w32, txp, lresp); - - txc(dsutx, 16#a0#, txp); - txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); - rxi(dsurx, w32, txp, lresp); - end; - - begin - dsucfg(txd2, rxd2); - wait; - end process; - -end; - diff --git a/designs/leon3-lattice-latticeECP3/wave.do b/designs/leon3-lattice-latticeECP3/wave.do deleted file mode 100644 index afa24320..00000000 --- a/designs/leon3-lattice-latticeECP3/wave.do +++ /dev/null @@ -1,68 +0,0 @@ -onerror {resume} -quietly WaveActivateNextPane {} 0 -add wave -noupdate /testbench/clk -add wave -noupdate /testbench/errorn -add wave -noupdate -radix hexadecimal /testbench/address -add wave -noupdate -radix hexadecimal /testbench/data -add wave -noupdate /testbench/ramsn -add wave -noupdate /testbench/oen -add wave -noupdate /testbench/writen -add wave -noupdate /testbench/dsuen -add wave -noupdate /testbench/dsubre -add wave -noupdate -divider eth -add wave -noupdate /testbench/eth_rstn -add wave -noupdate /testbench/etx_clk -add wave -noupdate /testbench/erx_clk -add wave -noupdate -radix hexadecimal /testbench/erxdt -add wave -noupdate /testbench/erx_dv -add wave -noupdate /testbench/erx_er -add wave -noupdate /testbench/erx_col -add wave -noupdate /testbench/erx_crs -add wave -noupdate -radix hexadecimal /testbench/etxdt -add wave -noupdate /testbench/etx_en -add wave -noupdate /testbench/etx_er -add wave -noupdate /testbench/emdc -add wave -noupdate /testbench/emdio -add wave -noupdate /testbench/egtx_clk -add wave -noupdate /testbench/eth_clk125 -add wave -noupdate /testbench/led -add wave -noupdate -childformat {{/testbench/DUT/eth1/e1/ethi.rxd -radix hexadecimal}} -subitemconfig {/testbench/DUT/eth1/e1/ethi.rxd {-height 16 -radix hexadecimal}} /testbench/DUT/eth1/e1/ethi -add wave -noupdate /testbench/DUT/eth1/e1/etho -add wave -noupdate -radix hexadecimal -childformat {{/testbench/DUT/eth1/e1/ahbmi.hgrant -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmi.hready -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmi.hresp -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmi.hrdata -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmi.hcache -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmi.hirq -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmi.testen -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmi.testrst -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmi.scanen -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmi.testoen -radix hexadecimal}} -subitemconfig {/testbench/DUT/eth1/e1/ahbmi.hgrant {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmi.hready {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmi.hresp {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmi.hrdata {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmi.hcache {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmi.hirq {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmi.testen {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmi.testrst {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmi.scanen {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmi.testoen {-height 16 -radix hexadecimal}} /testbench/DUT/eth1/e1/ahbmi -add wave -noupdate -radix hexadecimal -childformat {{/testbench/DUT/eth1/e1/ahbmo.hbusreq -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmo.hlock -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmo.htrans -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmo.haddr -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmo.hwrite -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmo.hsize -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmo.hburst -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmo.hprot -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmo.hwdata -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmo.hirq -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmo.hconfig -radix hexadecimal} {/testbench/DUT/eth1/e1/ahbmo.hindex -radix hexadecimal}} -subitemconfig {/testbench/DUT/eth1/e1/ahbmo.hbusreq {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmo.hlock {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmo.htrans {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmo.haddr {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmo.hwrite {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmo.hsize {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmo.hburst {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmo.hprot {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmo.hwdata {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmo.hirq {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmo.hconfig {-height 16 -radix hexadecimal} /testbench/DUT/eth1/e1/ahbmo.hindex {-height 16 -radix hexadecimal}} /testbench/DUT/eth1/e1/ahbmo -add wave -noupdate -divider {New Divider} -add wave -noupdate -radix hexadecimal /testbench/sram0(1)/sr0/d -add wave -noupdate -radix hexadecimal /testbench/sram0(1)/sr0/sr0/d -add wave -noupdate -radix hexadecimal /testbench/sram0(1)/sr0/sr1/d -add wave -noupdate -divider {New Divider} -add wave -noupdate -radix hexadecimal /testbench/sram0(0)/sr0/d -add wave -noupdate -radix hexadecimal /testbench/sram0(0)/sr0/sr0/d -add wave -noupdate -radix hexadecimal /testbench/sram0(0)/sr0/sr1/d -add wave -noupdate -divider {CPU 1} -add wave -noupdate -radix hexadecimal -childformat {{/testbench/DUT/apbi.psel -radix hexadecimal} {/testbench/DUT/apbi.penable -radix hexadecimal} {/testbench/DUT/apbi.paddr -radix hexadecimal} {/testbench/DUT/apbi.pwrite -radix hexadecimal} {/testbench/DUT/apbi.pwdata -radix hexadecimal} {/testbench/DUT/apbi.pirq -radix hexadecimal} {/testbench/DUT/apbi.testen -radix hexadecimal} {/testbench/DUT/apbi.testrst -radix hexadecimal} {/testbench/DUT/apbi.scanen -radix hexadecimal} {/testbench/DUT/apbi.testoen -radix hexadecimal}} -subitemconfig {/testbench/DUT/apbi.psel {-height 16 -radix hexadecimal} /testbench/DUT/apbi.penable {-height 16 -radix hexadecimal} /testbench/DUT/apbi.paddr {-height 16 -radix hexadecimal} /testbench/DUT/apbi.pwrite {-height 16 -radix hexadecimal} /testbench/DUT/apbi.pwdata {-height 16 -radix hexadecimal} /testbench/DUT/apbi.pirq {-height 16 -radix hexadecimal} /testbench/DUT/apbi.testen {-height 16 -radix hexadecimal} /testbench/DUT/apbi.testrst {-height 16 -radix hexadecimal} /testbench/DUT/apbi.scanen {-height 16 -radix hexadecimal} /testbench/DUT/apbi.testoen {-height 16 -radix hexadecimal}} /testbench/DUT/apbi -add wave -noupdate -radix hexadecimal /testbench/DUT/apbo -add wave -noupdate -radix hexadecimal -childformat {{/testbench/DUT/ahbsi.hsel -radix hexadecimal} {/testbench/DUT/ahbsi.haddr -radix hexadecimal} {/testbench/DUT/ahbsi.hwrite -radix hexadecimal} {/testbench/DUT/ahbsi.htrans -radix hexadecimal} {/testbench/DUT/ahbsi.hsize -radix hexadecimal} {/testbench/DUT/ahbsi.hburst -radix hexadecimal} {/testbench/DUT/ahbsi.hwdata -radix hexadecimal} {/testbench/DUT/ahbsi.hprot -radix hexadecimal} {/testbench/DUT/ahbsi.hready -radix hexadecimal} {/testbench/DUT/ahbsi.hmaster -radix hexadecimal} {/testbench/DUT/ahbsi.hmastlock -radix hexadecimal} {/testbench/DUT/ahbsi.hmbsel -radix hexadecimal} {/testbench/DUT/ahbsi.hcache -radix hexadecimal} {/testbench/DUT/ahbsi.hirq -radix hexadecimal} {/testbench/DUT/ahbsi.testen -radix hexadecimal} {/testbench/DUT/ahbsi.testrst -radix hexadecimal} {/testbench/DUT/ahbsi.scanen -radix hexadecimal} {/testbench/DUT/ahbsi.testoen -radix hexadecimal}} -subitemconfig {/testbench/DUT/ahbsi.hsel {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.haddr {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.hwrite {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.htrans {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.hsize {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.hburst {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.hwdata {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.hprot {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.hready {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.hmaster {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.hmastlock {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.hmbsel {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.hcache {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.hirq {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.testen {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.testrst {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.scanen {-height 16 -radix hexadecimal} /testbench/DUT/ahbsi.testoen {-height 16 -radix hexadecimal}} /testbench/DUT/ahbsi -add wave -noupdate -radix hexadecimal /testbench/DUT/ahbso -add wave -noupdate -radix hexadecimal /testbench/DUT/ahbmi -add wave -noupdate -radix hexadecimal /testbench/DUT/ahbmo -add wave -noupdate -radix hexadecimal -childformat {{/testbench/DUT/test0/r.hwrite -radix hexadecimal} {/testbench/DUT/test0/r.hsel -radix hexadecimal} {/testbench/DUT/test0/r.haddr -radix hexadecimal} {/testbench/DUT/test0/r.htrans -radix hexadecimal}} -subitemconfig {/testbench/DUT/test0/r.hwrite {-height 16 -radix hexadecimal} /testbench/DUT/test0/r.hsel {-height 16 -radix hexadecimal} /testbench/DUT/test0/r.haddr {-height 16 -radix hexadecimal} /testbench/DUT/test0/r.htrans {-height 16 -radix hexadecimal}} /testbench/DUT/test0/r -add wave -noupdate -radix hexadecimal -childformat {{/testbench/DUT/irqctrl/irqctrl0/r.imask -radix hexadecimal} {/testbench/DUT/irqctrl/irqctrl0/r.ilevel -radix hexadecimal} {/testbench/DUT/irqctrl/irqctrl0/r.ipend -radix hexadecimal} {/testbench/DUT/irqctrl/irqctrl0/r.iforce -radix hexadecimal} {/testbench/DUT/irqctrl/irqctrl0/r.ibroadcast -radix hexadecimal} {/testbench/DUT/irqctrl/irqctrl0/r.irl -radix hexadecimal} {/testbench/DUT/irqctrl/irqctrl0/r.cpurst -radix hexadecimal}} -subitemconfig {/testbench/DUT/irqctrl/irqctrl0/r.imask {-height 16 -radix hexadecimal} /testbench/DUT/irqctrl/irqctrl0/r.ilevel {-height 16 -radix hexadecimal} /testbench/DUT/irqctrl/irqctrl0/r.ipend {-height 16 -radix hexadecimal} /testbench/DUT/irqctrl/irqctrl0/r.iforce {-height 16 -radix hexadecimal} /testbench/DUT/irqctrl/irqctrl0/r.ibroadcast {-height 16 -radix hexadecimal} /testbench/DUT/irqctrl/irqctrl0/r.irl {-height 16 -radix hexadecimal} /testbench/DUT/irqctrl/irqctrl0/r.cpurst {-height 16 -radix hexadecimal}} /testbench/DUT/irqctrl/irqctrl0/r -add wave -noupdate -radix hexadecimal -childformat {{/testbench/DUT/irqctrl/irqctrl0/irqi(0) -radix hexadecimal}} -subitemconfig {/testbench/DUT/irqctrl/irqctrl0/irqi(0) {-height 16 -radix hexadecimal}} /testbench/DUT/irqctrl/irqctrl0/irqi -add wave -noupdate -radix hexadecimal -childformat {{/testbench/DUT/irqctrl/irqctrl0/irqo(0) -radix hexadecimal}} -subitemconfig {/testbench/DUT/irqctrl/irqctrl0/irqo(0) {-height 16 -radix hexadecimal}} /testbench/DUT/irqctrl/irqctrl0/irqo -TreeUpdate [SetDefaultTree] -WaveRestoreCursors {{Cursor 1} {1222798611 ps} 0} -configure wave -namecolwidth 205 -configure wave -valuecolwidth 146 -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 0 -configure wave -timelineunits ns -update -WaveRestoreZoom {1222817786 ps} {1222935690 ps} diff --git a/designs/leon3-memec-v2mb1000/Makefile b/designs/leon3-memec-v2mb1000/Makefile index ffe75bf1..0664e509 100644 --- a/designs/leon3-memec-v2mb1000/Makefile +++ b/designs/leon3-memec-v2mb1000/Makefile @@ -19,9 +19,9 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix ihp gleichmann usbhc + tmtc openchip hynix ihp usbhc DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - usb grusbhc haps hcan + usb grusbhc hcan FILESKIP = grcan.vhd i2cmst.vhd include $(GRLIB)/bin/Makefile diff --git a/designs/leon3-memec-v2mb1000/ahbrom.vhd b/designs/leon3-memec-v2mb1000/ahbrom.vhd index a61a155a..2091c411 100644 --- a/designs/leon3-memec-v2mb1000/ahbrom.vhd +++ b/designs/leon3-memec-v2mb1000/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-memec-v2mb1000/config.help b/designs/leon3-memec-v2mb1000/config.help index ff755148..47476586 100644 --- a/designs/leon3-memec-v2mb1000/config.help +++ b/designs/leon3-memec-v2mb1000/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-memec-v2mb1000/lconfig.tk b/designs/leon3-memec-v2mb1000/lconfig.tk index b5112ae6..7e875872 100755 --- a/designs/leon3-memec-v2mb1000/lconfig.tk +++ b/designs/leon3-memec-v2mb1000/lconfig.tk @@ -753,7 +753,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -763,7 +764,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -906,8 +909,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -926,6 +931,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1015,9 +1024,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1071,10 +1081,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1120,14 +1131,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1200,13 +1213,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1246,22 +1267,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1318,21 +1607,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1379,36 +1668,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1416,48 +1706,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1513,27 +1804,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1574,16 +1865,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1592,34 +1884,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1676,92 +1969,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1769,18 +2062,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1821,52 +2114,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1874,162 +2168,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2085,45 +2380,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2163,18 +2460,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2182,55 +2480,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2287,24 +2590,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2344,17 +2647,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2362,37 +2666,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2448,16 +2753,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2505,9 +2817,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2529,21 +2839,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2852,14 +3167,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2933,17 +3248,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3518,16 +3833,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3589,21 +3904,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3663,14 +3978,14 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 18 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3724,17 +4039,17 @@ proc update_define_menu18 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3790,15 +4105,15 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3894,19 +4209,19 @@ proc update_menu19 {} { proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4080,7 +4395,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4090,6 +4406,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4114,6 +4432,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4126,14 +4445,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4146,27 +4470,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4176,17 +4500,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4198,12 +4522,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4213,10 +4537,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4227,7 +4551,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4239,26 +4563,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4266,27 +4592,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4307,7 +4637,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4339,7 +4669,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4350,14 +4680,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4437,7 +4767,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4447,6 +4778,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4485,6 +4818,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4497,9 +4831,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4513,239 +4848,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4790,13 +5275,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -4861,38 +5346,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4971,7 +5456,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4981,6 +5467,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4999,8 +5487,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5083,11 +5576,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5108,6 +5603,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5207,8 +5706,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5227,6 +5728,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5267,324 +5772,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-memec-v2mb1000/leon3mp.vhd b/designs/leon3-memec-v2mb1000/leon3mp.vhd index 3ea1a629..0506e17f 100644 --- a/designs/leon3-memec-v2mb1000/leon3mp.vhd +++ b/designs/leon3-memec-v2mb1000/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-memec-v2mb1000/testbench.vhd b/designs/leon3-memec-v2mb1000/testbench.vhd index 60a0e8af..396546f9 100644 --- a/designs/leon3-memec-v2mb1000/testbench.vhd +++ b/designs/leon3-memec-v2mb1000/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-memec-v2mb1000/tkconfig.h b/designs/leon3-memec-v2mb1000/tkconfig.h index ece231a4..bbf7c9b6 100644 --- a/designs/leon3-memec-v2mb1000/tkconfig.h +++ b/designs/leon3-memec-v2mb1000/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-nuhorizons-3s1500/Makefile b/designs/leon3-nuhorizons-3s1500/Makefile index 42829b6c..ad31282e 100644 --- a/designs/leon3-nuhorizons-3s1500/Makefile +++ b/designs/leon3-nuhorizons-3s1500/Makefile @@ -1,4 +1,4 @@ -#GRLIB=../.. +GRLIB=../.. TOP=leon3mp BOARD=nuhorizons-sp3-1500 include $(GRLIB)/boards/$(BOARD)/Makefile.inc @@ -16,10 +16,10 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp gleichmann usbhc spw gsi fmf spansion + tmtc openchip hynix cypress ihp usbhc spw gsi fmf spansion DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest ddr \ - grusbhc ata ac97 spacewire usb coremp7 leon4 leon4b64 l2cache \ - slink ascs pwm haps gr1553b iommu + grusbhc spacewire usb leon4 leon4v0 l2cache \ + slink ascs pwm gr1553b iommu FILESKIP = grcan.vhd include $(GRLIB)/bin/Makefile diff --git a/designs/leon3-nuhorizons-3s1500/ahbrom.vhd b/designs/leon3-nuhorizons-3s1500/ahbrom.vhd index e5eb66ec..df5aba6a 100644 --- a/designs/leon3-nuhorizons-3s1500/ahbrom.vhd +++ b/designs/leon3-nuhorizons-3s1500/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-nuhorizons-3s1500/config.help b/designs/leon3-nuhorizons-3s1500/config.help index fc3448c2..447e8bd6 100644 --- a/designs/leon3-nuhorizons-3s1500/config.help +++ b/designs/leon3-nuhorizons-3s1500/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -610,7 +643,13 @@ CONFIG_AHB_SPLIT Unless you actually have an AHB slave that can generate AHB split responses, say N and save some gates. -Default AHB master +Enable full PnP decoding +CONFIG_AHB_FPNPEN + Say Y here to enable full decoding of the PnP configuration records in + in the AHB arbiter. When disabled the user-defined registers in the + PnP configuration records are not mapped in the configuration area. + +IO area start address CONFIG_AHB_IOADDR Selects the MSB adddress (HADDR[31:20]) of the AHB IO area, as defined in the plug&play extentions of the AMBA bus. Should be kept to FFF diff --git a/designs/leon3-nuhorizons-3s1500/config.vhd.h b/designs/leon3-nuhorizons-3s1500/config.vhd.h index fe8f5811..91b761e4 100644 --- a/designs/leon3-nuhorizons-3s1500/config.vhd.h +++ b/designs/leon3-nuhorizons-3s1500/config.vhd.h @@ -29,7 +29,7 @@ constant CFG_NOTAG : integer := CONFIG_NOTAG; constant CFG_NWP : integer := CONFIG_IU_WATCHPOINTS; constant CFG_PWD : integer := CONFIG_PWD*2; - constant CFG_FPU : integer := CONFIG_FPU + 16*CONFIG_FPU_NETLIST; + constant CFG_FPU : integer := CONFIG_FPU + 16*CONFIG_FPU_NETLIST + 32*CONFIG_FPU_GRFPU_SHARED; constant CFG_GRFPUSH : integer := CONFIG_FPU_GRFPU_SHARED; constant CFG_ICEN : integer := CONFIG_ICACHE_ENABLE; constant CFG_ISETS : integer := CFG_IU_ISETS; @@ -74,6 +74,7 @@ constant CFG_DEFMST : integer := CONFIG_AHB_DEFMST; constant CFG_RROBIN : integer := CONFIG_AHB_RROBIN; constant CFG_SPLIT : integer := CONFIG_AHB_SPLIT; + constant CFG_FPNPEN : integer := CONFIG_AHB_FPNPEN; constant CFG_AHBIO : integer := 16#CONFIG_AHB_IOADDR#; constant CFG_APBADDR : integer := 16#CONFIG_APB_HADDR#; constant CFG_AHB_MON : integer := CONFIG_AHB_MON; diff --git a/designs/leon3-nuhorizons-3s1500/lconfig.tk b/designs/leon3-nuhorizons-3s1500/lconfig.tk index 311ac428..731b38b2 100755 --- a/designs/leon3-nuhorizons-3s1500/lconfig.tk +++ b/designs/leon3-nuhorizons-3s1500/lconfig.tk @@ -752,7 +752,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -762,7 +763,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -905,8 +908,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -925,6 +930,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1014,9 +1023,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1070,10 +1080,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1119,14 +1130,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1199,13 +1212,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1245,22 +1266,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1317,21 +1606,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1378,36 +1667,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1415,48 +1705,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1512,27 +1803,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1573,16 +1864,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1591,34 +1883,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1675,92 +1968,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1768,18 +2061,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1820,52 +2113,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1873,162 +2167,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2084,45 +2379,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2162,18 +2459,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2181,55 +2479,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2286,24 +2589,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2343,17 +2646,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2361,37 +2665,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2446,6 +2751,28 @@ proc menu9 {w title} { pack $w.config.canvas -side right -fill y + bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE + menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x1.x.menu 5 + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ + bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN + int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ + bool $w.config.f 9 6 "Use LEON3FT netlist " CONFIG_LEON3_NETLIST @@ -2483,12 +2810,65 @@ proc menu9 {w title} { } proc update_menu9 {} { + global CONFIG_LEON3 + global CONFIG_LEON3FT_EN + if {($CONFIG_LEON3 == 1)} then { + configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} + global CONFIG_FPU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} + global CONFIG_RF_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} + global CONFIG_CACHE_FT_EN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + configure_entry .menu9.config.f.x4 normal {n l y}} else {configure_entry .menu9.config.f.x4 disabled {y n l}} + global CONFIG_CACHE_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {.menu9.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu9.config.f.x5.l configure -state normal; } else {.menu9.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu9.config.f.x5.l configure -state disabled} + global CONFIG_LEON3_NETLIST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + configure_entry .menu9.config.f.x6 normal {n l y}} else {configure_entry .menu9.config.f.x6 disabled {y n l}} } proc update_define_menu9 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_LEON3 + global CONFIG_LEON3FT_EN + if {($CONFIG_LEON3 == 1)} then { + set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} + global tmpvar_26 + global CONFIG_IUFT_NONE + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + global CONFIG_IUFT_PAR + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + global CONFIG_IUFT_DMR + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + global CONFIG_IUFT_BCH + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + global CONFIG_IUFT_TMR + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} + global CONFIG_RF_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} + global CONFIG_CACHE_FT_EN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + set CONFIG_CACHE_FT_EN [expr $CONFIG_CACHE_FT_EN&15]} else {set CONFIG_CACHE_FT_EN [expr $CONFIG_CACHE_FT_EN|16]} + global CONFIG_CACHE_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {validate_int CONFIG_CACHE_ERRINJ "$CONFIG_CACHE_ERRINJ" 0} + global CONFIG_LEON3_NETLIST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + set CONFIG_LEON3_NETLIST [expr $CONFIG_LEON3_NETLIST&15]} else {set CONFIG_LEON3_NETLIST [expr $CONFIG_LEON3_NETLIST|16]} } @@ -2666,12 +3046,13 @@ proc menu11 {w title} { int $w.config.f 11 0 "Default AHB master" CONFIG_AHB_DEFMST bool $w.config.f 11 1 "Round-robin arbiter " CONFIG_AHB_RROBIN bool $w.config.f 11 2 "AHB split-transaction support " CONFIG_AHB_SPLIT - hex $w.config.f 11 3 "I/O area start address (haddr\[31:20\]) " CONFIG_AHB_IOADDR - hex $w.config.f 11 4 "AHB/APB bridge address (haddr\[31:20\]) " CONFIG_APB_HADDR - bool $w.config.f 11 5 "Enable AMBA AHB monitor " CONFIG_AHB_MON - bool $w.config.f 11 6 "Report AHB errors " CONFIG_AHB_MONERR - bool $w.config.f 11 7 "Report AHB warings " CONFIG_AHB_MONWAR - bool $w.config.f 11 8 "Write trace to simulation console " CONFIG_AHB_DTRACE + bool $w.config.f 11 3 "Enable full plug&play decoding " CONFIG_AHB_FPNPEN + hex $w.config.f 11 4 "I/O area start address (haddr\[31:20\]) " CONFIG_AHB_IOADDR + hex $w.config.f 11 5 "AHB/APB bridge address (haddr\[31:20\]) " CONFIG_APB_HADDR + bool $w.config.f 11 6 "Enable AMBA AHB monitor " CONFIG_AHB_MON + bool $w.config.f 11 7 "Report AHB errors " CONFIG_AHB_MONERR + bool $w.config.f 11 8 "Report AHB warings " CONFIG_AHB_MONWAR + bool $w.config.f 11 9 "Write trace to simulation console " CONFIG_AHB_DTRACE @@ -2711,10 +3092,10 @@ proc update_menu11 {} { global CONFIG_AHB_MON global CONFIG_AHB_MONERR if {($CONFIG_AHB_MON == 1)} then { - configure_entry .menu11.config.f.x6 normal {n l y}} else {configure_entry .menu11.config.f.x6 disabled {y n l}} + configure_entry .menu11.config.f.x7 normal {n l y}} else {configure_entry .menu11.config.f.x7 disabled {y n l}} global CONFIG_AHB_MONWAR if {($CONFIG_AHB_MON == 1)} then { - configure_entry .menu11.config.f.x7 normal {n l y}} else {configure_entry .menu11.config.f.x7 disabled {y n l}} + configure_entry .menu11.config.f.x8 normal {n l y}} else {configure_entry .menu11.config.f.x8 disabled {y n l}} } @@ -2785,14 +3166,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2866,17 +3247,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3214,16 +3595,16 @@ proc menu15 {w title} { hex $w.config.f 15 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 15 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 15 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 15 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 15 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 15 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3285,21 +3666,21 @@ proc update_define_menu15 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3359,14 +3740,14 @@ proc menu16 {w title} { bool $w.config.f 16 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 16 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 16 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 16 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3420,17 +3801,17 @@ proc update_define_menu16 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3617,26 +3998,26 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 18 2 "Enable secondary UART " CONFIG_UART2_ENABLE - global tmpvar_30 - minimenu $w.config.f 18 3 "UART2 FIFO depth" tmpvar_30 CONFIG_UA2_FIFO1 + global tmpvar_32 + minimenu $w.config.f 18 3 "UART2 FIFO depth" tmpvar_32 CONFIG_UA2_FIFO1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_32 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_32 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 6 bool $w.config.f 18 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 18 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3730,36 +4111,36 @@ proc update_menu18 {} { proc update_define_menu18 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_DSU_UART global CONFIG_UART2_ENABLE if {($CONFIG_DSU_UART == 0)} then { set CONFIG_UART2_ENABLE [expr $CONFIG_UART2_ENABLE&15]} else {set CONFIG_UART2_ENABLE [expr $CONFIG_UART2_ENABLE|16]} - global tmpvar_30 + global tmpvar_32 global CONFIG_UA2_FIFO1 - if {$tmpvar_30 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} + if {$tmpvar_32 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} global CONFIG_UA2_FIFO2 - if {$tmpvar_30 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} + if {$tmpvar_32 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} global CONFIG_UA2_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} + if {$tmpvar_32 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} global CONFIG_UA2_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} + if {$tmpvar_32 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} global CONFIG_UA2_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} + if {$tmpvar_32 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} global CONFIG_UA2_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} + if {$tmpvar_32 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3929,7 +4310,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -3939,6 +4321,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -3963,6 +4347,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -3975,14 +4360,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -3995,27 +4385,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4025,17 +4415,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4047,12 +4437,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4062,10 +4452,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4076,7 +4466,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4088,26 +4478,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4115,25 +4507,42 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 +set CONFIG_LEON3FT_EN 0 +set tmpvar_26 "(not set)" +set CONFIG_IUFT_NONE 0 +set CONFIG_IUFT_PAR 0 +set CONFIG_IUFT_DMR 0 +set CONFIG_IUFT_BCH 0 +set CONFIG_IUFT_TMR 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 +set CONFIG_RF_ERRINJ 0 +set CONFIG_CACHE_FT_EN 0 +set CONFIG_CACHE_ERRINJ 0 +set CONFIG_LEON3_NETLIST 0 set CONFIG_IU_DISAS 0 set CONFIG_IU_DISAS_NET 0 set CONFIG_DEBUG_PC32 0 set CONFIG_AHB_DEFMST 0 set CONFIG_AHB_RROBIN 0 set CONFIG_AHB_SPLIT 0 +set CONFIG_AHB_FPNPEN 0 set CONFIG_AHB_IOADDR FFF set CONFIG_APB_HADDR 800 set CONFIG_AHB_MON 0 @@ -4143,7 +4552,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4169,7 +4578,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4180,7 +4589,7 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 @@ -4193,7 +4602,7 @@ set CONFIG_CANLOOP 0 set CONFIG_CAN_SYNCRST 0 set CONFIG_CAN_FT 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4201,7 +4610,7 @@ set CONFIG_UA1_FIFO8 0 set CONFIG_UA1_FIFO16 0 set CONFIG_UA1_FIFO32 0 set CONFIG_UART2_ENABLE 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_UA2_FIFO1 0 set CONFIG_UA2_FIFO2 0 set CONFIG_UA2_FIFO4 0 @@ -4228,18 +4637,6 @@ set CONFIG_SYN_ARTISAN 4 set CONFIG_PCI_ENABLE 4 set CONFIG_HAS_SHARED_GRFPU 4 set CONFIG_FPU_GRFPU_SH 4 -set CONFIG_LEON3FT_PRESENT 4 -set CONFIG_LEON3FT_EN 4 -set CONFIG_IUFT_NONE 4 -set CONFIG_IUFT_PAR 4 -set CONFIG_IUFT_DMR 4 -set CONFIG_IUFT_BCH 4 -set CONFIG_IUFT_TMR 4 -set CONFIG_FPUFT_EN 4 -set CONFIG_RF_ERRINJ 4 -set CONFIG_CACHE_FT_EN 4 -set CONFIG_CACHE_ERRINJ 4 -set CONFIG_LEON3_NETLIST 4 set CONFIG_MODULES 4 proc writeconfig {file1 file2} { set cfg [open $file1 w] @@ -4296,7 +4693,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4306,6 +4704,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4344,6 +4744,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4356,9 +4757,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4372,228 +4774,396 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} + global CONFIG_LEON3FT_EN + if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } + global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} + global CONFIG_RF_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } + global CONFIG_CACHE_FT_EN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_CACHE_FT_EN $CONFIG_CACHE_FT_EN [list $notmod] 2 } + global CONFIG_CACHE_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_int $cfg $autocfg CONFIG_CACHE_ERRINJ $CONFIG_CACHE_ERRINJ $notmod } + global CONFIG_LEON3_NETLIST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3_NETLIST $CONFIG_LEON3_NETLIST [list $notmod] 2 } if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "VHDL debug settings "} global CONFIG_IU_DISAS if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_DISAS $CONFIG_IU_DISAS [list $notmod] 2 } @@ -4608,6 +5178,8 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_AHB_RROBIN $CONFIG_AHB_RROBIN [list $notmod] 2 global CONFIG_AHB_SPLIT write_tristate $cfg $autocfg CONFIG_AHB_SPLIT $CONFIG_AHB_SPLIT [list $notmod] 2 + global CONFIG_AHB_FPNPEN + write_tristate $cfg $autocfg CONFIG_AHB_FPNPEN $CONFIG_AHB_FPNPEN [list $notmod] 2 global CONFIG_AHB_IOADDR write_hex $cfg $autocfg CONFIG_AHB_IOADDR $CONFIG_AHB_IOADDR $notmod global CONFIG_APB_HADDR @@ -4628,13 +5200,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -4679,27 +5251,27 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "CAN " global CONFIG_CAN_ENABLE write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 @@ -4716,24 +5288,24 @@ proc writeconfig {file1 file2} { write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_UART2_ENABLE if {($CONFIG_DSU_UART == 0)} then {write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2 } - global tmpvar_30 + global tmpvar_32 if {($CONFIG_DSU_UART == 0) && ($CONFIG_UART2_ENABLE == 1)} then { - if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_32 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_32 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4806,7 +5378,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4816,6 +5389,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4834,8 +5409,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -4918,11 +5498,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -4938,6 +5520,15 @@ proc clear_choices { } { global CONFIG_DSU_ATRACESZ4; set CONFIG_DSU_ATRACESZ4 0 global CONFIG_DSU_ATRACESZ8; set CONFIG_DSU_ATRACESZ8 0 global CONFIG_DSU_ATRACESZ16; set CONFIG_DSU_ATRACESZ16 0 + global CONFIG_IUFT_NONE; set CONFIG_IUFT_NONE 0 + global CONFIG_IUFT_PAR; set CONFIG_IUFT_PAR 0 + global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 + global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 + global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5043,8 +5634,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5063,6 +5656,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5103,326 +5700,364 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } global tmpvar_26 - set tmpvar_26 "2" + set tmpvar_26 "None" + global CONFIG_IUFT_NONE + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } + global CONFIG_IUFT_PAR + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + global CONFIG_IUFT_DMR + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + global CONFIG_IUFT_BCH + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } + global CONFIG_IUFT_TMR + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } - global tmpvar_30 - set tmpvar_30 "1" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } + global tmpvar_32 + set tmpvar_32 "1" global CONFIG_UA2_FIFO1 - if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_30 "1" } + if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_32 "1" } global CONFIG_UA2_FIFO2 - if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_30 "2" } + if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_32 "2" } global CONFIG_UA2_FIFO4 - if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_32 "4" } global CONFIG_UA2_FIFO8 - if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_32 "8" } global CONFIG_UA2_FIFO16 - if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_32 "16" } global CONFIG_UA2_FIFO32 - if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_32 "32" } } diff --git a/designs/leon3-nuhorizons-3s1500/leon3mp.vhd b/designs/leon3-nuhorizons-3s1500/leon3mp.vhd index 770a7957..b041dfab 100644 --- a/designs/leon3-nuhorizons-3s1500/leon3mp.vhd +++ b/designs/leon3-nuhorizons-3s1500/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-nuhorizons-3s1500/nuhosp3.vhd b/designs/leon3-nuhorizons-3s1500/nuhosp3.vhd index 620964ef..44a202af 100644 --- a/designs/leon3-nuhorizons-3s1500/nuhosp3.vhd +++ b/designs/leon3-nuhorizons-3s1500/nuhosp3.vhd @@ -154,7 +154,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '0'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-nuhorizons-3s1500/smc_mctrl.vhd b/designs/leon3-nuhorizons-3s1500/smc_mctrl.vhd index cbeb3dfa..238e8791 100644 --- a/designs/leon3-nuhorizons-3s1500/smc_mctrl.vhd +++ b/designs/leon3-nuhorizons-3s1500/smc_mctrl.vhd @@ -897,7 +897,6 @@ begin ribdrive <= vbdrive; risbdrive <= vsbdrive; - ahbso.hcache <= not r.area(io); memo.address <= r.address; memo.sa <= r.sa; memo.ramsn <= "111" & r.ramsn; diff --git a/designs/leon3-nuhorizons-3s1500/testbench.vhd b/designs/leon3-nuhorizons-3s1500/testbench.vhd index 15b13d80..d4a6e616 100644 --- a/designs/leon3-nuhorizons-3s1500/testbench.vhd +++ b/designs/leon3-nuhorizons-3s1500/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-nuhorizons-3s1500/tkconfig.h b/designs/leon3-nuhorizons-3s1500/tkconfig.h index e20b6e75..9baca540 100644 --- a/designs/leon3-nuhorizons-3s1500/tkconfig.h +++ b/designs/leon3-nuhorizons-3s1500/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -657,6 +679,10 @@ #define CONFIG_AHB_RROBIN 0 #endif +#ifndef CONFIG_AHB_FPNPEN +#define CONFIG_AHB_FPNPEN 0 +#endif + #ifndef CONFIG_AHB_IOADDR #define CONFIG_AHB_IOADDR FFF #endif diff --git a/designs/leon3-terasic-de0-nano/Makefile b/designs/leon3-terasic-de0-nano/Makefile index 95894648..298f524b 100644 --- a/designs/leon3-terasic-de0-nano/Makefile +++ b/designs/leon3-terasic-de0-nano/Makefile @@ -20,12 +20,12 @@ SYNPOPT="set_option -pipe 1; set_option -retiming 1; set_option -write_apr_const TECHLIBS = altera altera_mf cycloneiii LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp gleichmann fmf spansion gsi -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr ata haps \ - slink ascs coremp7 ac97 eon3ft leon4 leon4b64 l2cache \ + tmtc openchip hynix cypress ihp fmf spansion gsi +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr \ + slink ascs leon3ft leon4 leon4v0 l2cache \ spacewire usb pwm gr1553b iommu pci leon3ft hcan -FILESKIP = grcan.vhd simple_spi_top.v ata_device.v i2c_slave_model.v +FILESKIP = grcan.vhd ata_device.v i2c_slave_model.v include $(GRLIB)/bin/Makefile include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-terasic-de0-nano/ahbrom.vhd b/designs/leon3-terasic-de0-nano/ahbrom.vhd index 47d2dd1b..5bd3e7c3 100644 --- a/designs/leon3-terasic-de0-nano/ahbrom.vhd +++ b/designs/leon3-terasic-de0-nano/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-terasic-de0-nano/clkgen_de0.vhd b/designs/leon3-terasic-de0-nano/clkgen_de0.vhd index d7777c05..7dab9963 100644 --- a/designs/leon3-terasic-de0-nano/clkgen_de0.vhd +++ b/designs/leon3-terasic-de0-nano/clkgen_de0.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-terasic-de0-nano/config.help b/designs/leon3-terasic-de0-nano/config.help index cdad048e..f4bcacb9 100644 --- a/designs/leon3-terasic-de0-nano/config.help +++ b/designs/leon3-terasic-de0-nano/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. diff --git a/designs/leon3-terasic-de0-nano/lconfig.tk b/designs/leon3-terasic-de0-nano/lconfig.tk index d6e940b2..9fdb08e7 100755 --- a/designs/leon3-terasic-de0-nano/lconfig.tk +++ b/designs/leon3-terasic-de0-nano/lconfig.tk @@ -753,7 +753,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -763,7 +764,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -906,8 +909,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -926,6 +931,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1015,9 +1024,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1071,10 +1081,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1120,14 +1131,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1200,13 +1213,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1246,22 +1267,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1318,21 +1607,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1379,36 +1668,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1416,48 +1706,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1513,28 +1804,28 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_7 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x4.x.menu 3 bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1575,20 +1866,21 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1597,38 +1889,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_7 + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1685,92 +1978,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1778,18 +2071,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1830,52 +2123,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1883,162 +2177,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2094,45 +2389,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2172,18 +2469,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2191,55 +2489,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2296,24 +2599,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2353,17 +2656,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2371,37 +2675,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2457,22 +2762,22 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - global tmpvar_26 - minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_26 CONFIG_FPUFT_NONE + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" - $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN @@ -2543,26 +2848,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global tmpvar_26 + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 global CONFIG_FPUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} global CONFIG_FPUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} global CONFIG_FPUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} global CONFIG_FPUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -3449,16 +3754,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_28 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3520,21 +3825,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_28 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3593,15 +3898,15 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_28 - minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_28 CONFIG_UA1_FIFO1 + global tmpvar_29 + minimenu $w.config.f 18 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 18 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 18 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3698,19 +4003,19 @@ proc update_menu18 {} { proc update_define_menu18 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_28 + global tmpvar_29 global CONFIG_UA1_FIFO1 - if {$tmpvar_28 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_28 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3907,12 +4212,12 @@ proc menu20 {w title} { bool $w.config.f 20 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN int $w.config.f 20 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN bool $w.config.f 20 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_29 - minimenu $w.config.f 20 11 "Fault-tolerance" tmpvar_29 CONFIG_SPICTRL_NOFT + global tmpvar_30 + minimenu $w.config.f 20 11 "Fault-tolerance" tmpvar_30 CONFIG_SPICTRL_NOFT menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_29 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_29 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_29 -value "TMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_30 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_30 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_30 -value "TMR" -command "update_active" menusplit $w $w.config.f.x11.x.menu 3 @@ -4012,13 +4317,13 @@ proc update_define_menu20 {} { global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_29 + global tmpvar_30 global CONFIG_SPICTRL_NOFT - if {$tmpvar_29 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + if {$tmpvar_30 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} global CONFIG_SPICTRL_DMRFT - if {$tmpvar_29 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + if {$tmpvar_30 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} global CONFIG_SPICTRL_TMRFT - if {$tmpvar_29 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} + if {$tmpvar_30 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } @@ -4160,7 +4465,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4170,6 +4476,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4194,6 +4502,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4206,14 +4515,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4226,28 +4540,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4257,17 +4571,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4279,12 +4593,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4294,10 +4608,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4308,7 +4622,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4320,26 +4634,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4347,27 +4663,27 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_FPUFT_NONE 0 set CONFIG_FPUFT_PAR 0 set CONFIG_FPUFT_DMR 0 @@ -4410,7 +4726,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4420,7 +4736,7 @@ set CONFIG_AHBRAM_SZ32 0 set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_UART1_ENABLE 0 -set tmpvar_28 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4456,7 +4772,7 @@ set CONFIG_SPICTRL_ODMODE 0 set CONFIG_SPICTRL_TWEN 0 set CONFIG_SPICTRL_MAXWLEN 0 set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_29 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_SPICTRL_NOFT 0 set CONFIG_SPICTRL_DMRFT 0 set CONFIG_SPICTRL_TMRFT 0 @@ -4518,7 +4834,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4528,6 +4845,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4566,6 +4885,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4578,9 +4898,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4594,245 +4915,390 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4917,28 +5383,28 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_28 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "UARTs, timers and I/O port " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_28 + global tmpvar_29 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4999,11 +5465,11 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_29 + global tmpvar_30 if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_29 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_29 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_29 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_30 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_30 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_30 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -5048,7 +5514,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5058,6 +5525,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5076,8 +5545,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5160,11 +5634,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5281,8 +5757,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5301,6 +5779,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5341,318 +5823,334 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_FPUFT_NONE - if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_FPUFT_PAR - if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_FPUFT_DMR - if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_FPUFT_TMR - if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "1" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } + global tmpvar_29 + set tmpvar_29 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_28 "32" } - global tmpvar_29 - set tmpvar_29 "None" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + global tmpvar_30 + set tmpvar_30 "None" global CONFIG_SPICTRL_NOFT - if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_29 "None" } + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_30 "None" } global CONFIG_SPICTRL_DMRFT - if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_29 "Parity-DMR" } + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_30 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT - if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_29 "TMR" } + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_30 "TMR" } } diff --git a/designs/leon3-terasic-de0-nano/leon3mp.vhd b/designs/leon3-terasic-de0-nano/leon3mp.vhd index 86192d65..109e0016 100644 --- a/designs/leon3-terasic-de0-nano/leon3mp.vhd +++ b/designs/leon3-terasic-de0-nano/leon3mp.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-terasic-de0-nano/sdctrl16.vhd b/designs/leon3-terasic-de0-nano/sdctrl16.vhd index 25790d01..b39c88e3 100644 --- a/designs/leon3-terasic-de0-nano/sdctrl16.vhd +++ b/designs/leon3-terasic-de0-nano/sdctrl16.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -939,7 +939,6 @@ begin ahbso.hready <= r.hready; ahbso.hresp <= r.hresp; ahbso.hrdata <= ahbdrivedata(dout); - ahbso.hcache <= not r.hio; end process; diff --git a/designs/leon3-terasic-de0-nano/testbench.vhd b/designs/leon3-terasic-de0-nano/testbench.vhd index 873a0b8e..47503599 100644 --- a/designs/leon3-terasic-de0-nano/testbench.vhd +++ b/designs/leon3-terasic-de0-nano/testbench.vhd @@ -5,7 +5,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-terasic-de0-nano/tkconfig.h b/designs/leon3-terasic-de0-nano/tkconfig.h index 7a5af0d9..7d287f4e 100644 --- a/designs/leon3-terasic-de0-nano/tkconfig.h +++ b/designs/leon3-terasic-de0-nano/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else diff --git a/designs/leon3-terasic-de2-115/Makefile b/designs/leon3-terasic-de2-115/Makefile index 76ac3af4..d6c3fa04 100644 --- a/designs/leon3-terasic-de2-115/Makefile +++ b/designs/leon3-terasic-de2-115/Makefile @@ -22,12 +22,12 @@ SYNPOPT="set_option -pipe 1; set_option -retiming 1; set_option -write_apr_const TECHLIBS = altera altera_mf cycloneiii LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress ihp gleichmann fmf spansion gsi -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr ata haps \ - slink ascs coremp7 ac97 eon3ft leon4 leon4b64 l2cache \ + tmtc openchip hynix cypress ihp fmf spansion gsi +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr \ + slink ascs leon3ft leon4 leon4v0 l2cache \ spacewire usb pwm gr1553b iommu pci leon3ft hcan -FILESKIP = grcan.vhd simple_spi_top.v ata_device.v i2c_slave_model.v +FILESKIP = grcan.vhd ata_device.v i2c_slave_model.v include $(GRLIB)/bin/Makefile include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-terasic-de2-115/config.help b/designs/leon3-terasic-de2-115/config.help index 76c099c1..514cb2de 100644 --- a/designs/leon3-terasic-de2-115/config.help +++ b/designs/leon3-terasic-de2-115/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-terasic-de2-115/lconfig.tk b/designs/leon3-terasic-de2-115/lconfig.tk index 790995a3..ea7f84ee 100755 --- a/designs/leon3-terasic-de2-115/lconfig.tk +++ b/designs/leon3-terasic-de2-115/lconfig.tk @@ -755,7 +755,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -765,7 +766,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -908,8 +911,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -928,6 +933,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1017,9 +1026,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1073,10 +1083,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1122,14 +1133,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1202,13 +1215,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1248,22 +1269,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1320,21 +1609,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1381,36 +1670,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1418,48 +1708,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1515,28 +1806,28 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_7 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x4.x.menu 3 bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1577,20 +1868,21 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1599,38 +1891,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_7 + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1687,92 +1980,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1780,18 +2073,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1832,52 +2125,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1885,162 +2179,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2096,45 +2391,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2174,18 +2471,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2193,55 +2491,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2298,24 +2601,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2355,17 +2658,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2373,37 +2677,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2459,16 +2764,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2516,9 +2828,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2540,21 +2850,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2863,14 +3178,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2944,17 +3259,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3394,16 +3709,16 @@ proc menu16 {w title} { bool $w.config.f 16 0 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 16 1 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 16 1 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x1.x.menu 7 hex $w.config.f 16 2 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3453,21 +3768,21 @@ proc update_menu16 {} { proc update_define_menu16 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3527,14 +3842,14 @@ proc menu17 {w title} { bool $w.config.f 17 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 17 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 17 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 17 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3588,17 +3903,17 @@ proc update_define_menu17 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3899,12 +4214,12 @@ proc menu20 {w title} { bool $w.config.f 20 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN int $w.config.f 20 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN bool $w.config.f 20 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_29 - minimenu $w.config.f 20 11 "Fault-tolerance" tmpvar_29 CONFIG_SPICTRL_NOFT + global tmpvar_31 + minimenu $w.config.f 20 11 "Fault-tolerance" tmpvar_31 CONFIG_SPICTRL_NOFT menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_29 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_29 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_29 -value "TMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_31 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_31 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_31 -value "TMR" -command "update_active" menusplit $w $w.config.f.x11.x.menu 3 @@ -4004,13 +4319,13 @@ proc update_define_menu20 {} { global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_29 + global tmpvar_31 global CONFIG_SPICTRL_NOFT - if {$tmpvar_29 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + if {$tmpvar_31 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} global CONFIG_SPICTRL_DMRFT - if {$tmpvar_29 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + if {$tmpvar_31 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} global CONFIG_SPICTRL_TMRFT - if {$tmpvar_29 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} + if {$tmpvar_31 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } @@ -4210,15 +4525,15 @@ proc menu22 {w title} { bool $w.config.f 22 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_30 - minimenu $w.config.f 22 1 "UART1 FIFO depth" tmpvar_30 CONFIG_UA1_FIFO1 + global tmpvar_32 + minimenu $w.config.f 22 1 "UART1 FIFO depth" tmpvar_32 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_32 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_32 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 22 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 22 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4307,19 +4622,19 @@ proc update_menu22 {} { proc update_define_menu22 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_30 + global tmpvar_32 global CONFIG_UA1_FIFO1 - if {$tmpvar_30 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_32 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_30 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_32 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_32 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_32 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_32 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_32 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4489,7 +4804,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4499,6 +4815,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4523,6 +4841,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4535,14 +4854,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4555,28 +4879,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4586,17 +4910,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4608,12 +4932,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4623,10 +4947,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4637,7 +4961,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4649,26 +4973,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4676,27 +5002,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4717,7 +5047,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4742,7 +5072,7 @@ set CONFIG_MCTRL_PROGPAGE 0 set CONFIG_AHBSTAT_ENABLE 0 set CONFIG_AHBSTAT_NFTSLV 1 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4753,7 +5083,7 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 @@ -4777,7 +5107,7 @@ set CONFIG_SPICTRL_ODMODE 0 set CONFIG_SPICTRL_TWEN 0 set CONFIG_SPICTRL_MAXWLEN 0 set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_SPICTRL_NOFT 0 set CONFIG_SPICTRL_DMRFT 0 set CONFIG_SPICTRL_TMRFT 0 @@ -4791,7 +5121,7 @@ set CONFIG_SPI2AHB_RESEN 0 set CONFIG_SPI2AHB_CPOL 0 set CONFIG_SPI2AHB_CPHA 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4870,7 +5200,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4880,6 +5211,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4918,6 +5251,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4930,9 +5264,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4946,241 +5281,390 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5225,13 +5709,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5275,27 +5759,27 @@ proc writeconfig {file1 file2} { write_comment $cfg $autocfg "On-chip RAM/ROM " global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "CAN " global CONFIG_CAN_ENABLE write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 @@ -5335,11 +5819,11 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_29 + global tmpvar_31 if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_29 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_29 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_29 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_31 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_31 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_31 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "SPI to AHB bridge " global CONFIG_SPI2AHB write_tristate $cfg $autocfg CONFIG_SPI2AHB $CONFIG_SPI2AHB [list $notmod] 2 @@ -5362,14 +5846,14 @@ proc writeconfig {file1 file2} { write_comment $cfg $autocfg "UARTs, timers and I/O port " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_30 + global tmpvar_32 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_32 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_32 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5442,7 +5926,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5452,6 +5937,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5470,8 +5957,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5554,11 +6046,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5579,6 +6073,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5681,8 +6179,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5701,6 +6201,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5741,332 +6245,358 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "None" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "None" global CONFIG_SPICTRL_NOFT - if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_29 "None" } + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_31 "None" } global CONFIG_SPICTRL_DMRFT - if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_29 "Parity-DMR" } + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_31 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT - if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_29 "TMR" } - global tmpvar_30 - set tmpvar_30 "1" + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_31 "TMR" } + global tmpvar_32 + set tmpvar_32 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_30 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_32 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_30 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_32 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_32 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_32 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_32 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_32 "32" } } diff --git a/designs/leon3-terasic-de2-115/leon3mp.vhd b/designs/leon3-terasic-de2-115/leon3mp.vhd index 2f4dea2c..8e5c15ed 100644 --- a/designs/leon3-terasic-de2-115/leon3mp.vhd +++ b/designs/leon3-terasic-de2-115/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-terasic-de2-115/testbench.vhd b/designs/leon3-terasic-de2-115/testbench.vhd index b4c0bf10..40f290b0 100644 --- a/designs/leon3-terasic-de2-115/testbench.vhd +++ b/designs/leon3-terasic-de2-115/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-terasic-de2-115/tkconfig.h b/designs/leon3-terasic-de2-115/tkconfig.h index cbd824f3..f74a5fa7 100644 --- a/designs/leon3-terasic-de2-115/tkconfig.h +++ b/designs/leon3-terasic-de2-115/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-wildcard-xcv300e/.config b/designs/leon3-wildcard-xcv300e/.config deleted file mode 100644 index c8963522..00000000 --- a/designs/leon3-wildcard-xcv300e/.config +++ /dev/null @@ -1,63 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 - -# -# Processor -# - -# -# Integer unit -# -CONFIG_IU_NWINDOWS=2 -# CONFIG_IU_V8MULDIV is not set -# CONFIG_IU_BP is not set -# CONFIG_IU_SVT is not set -# CONFIG_NOTAG is not set -CONFIG_IU_LDELAY=2 -CONFIG_IU_WATCHPOINTS=0 -# CONFIG_PWD is not set -CONFIG_IU_RSTADDR=00000 - -# -# Floating-point unit -# -# CONFIG_FPU_ENABLE is not set - -# -# Cache system -# -# CONFIG_ICACHE_ENABLE is not set -# CONFIG_ICACHE_LRAM is not set -# CONFIG_DCACHE_ENABLE is not set -# CONFIG_DCACHE_LRAM is not set - -# -# MMU -# -# CONFIG_MMU_ENABLE is not set - -# -# Debug Support Unit -# -CONFIG_DSU_ENABLE=y -# CONFIG_DSU_ITRACE is not set -# CONFIG_DSU_ATRACE is not set - -# -# Fault-tolerance -# -# CONFIG_LEON3FT_EN is not set - -# -# VHDL debug settings -# -# CONFIG_IU_DISAS is not set -# CONFIG_DEBUG_PC32 is not set - -# -# On-chip RAM -# -# CONFIG_AHBRAM_ENABLE is not set diff --git a/designs/leon3-wildcard-xcv300e/Makefile b/designs/leon3-wildcard-xcv300e/Makefile deleted file mode 100644 index 3e7e41e4..00000000 --- a/designs/leon3-wildcard-xcv300e/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -GRLIB=../../ -#WILDCARD_BASE={path to wildcard root directory} -TOP=wildfpga -BOARD=wildcard-xcv300e -include $(GRLIB)/boards/$(BOARD)/Makefile.inc -DEVICE=$(PART)-$(PACKAGE)$(SPEED) -UCF=$(GRLIB)/boards/$(BOARD)/default.ucf -EFFORT=high -XSTOPT= -ISEMAPOPT=-r -SYNPOPT="set_option -pipe 0; set_option -retiming 0; set_option -write_apr_constraint 0; set_option -resource_sharing 1" -VHDLSYNFILES=config.vhd wildfpga.vhd -VHDLSIMFILES= -SIMTOP=system_cfg -SDCFILE=$(GRLIB)/boards/$(BOARD)/default.sdc -BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut -CLEAN=soft-clean - -TECHLIBS=unisim -LIBSKIP=apa proasic3 axcelerator ecaltera altera_mf stratixii ec altera \ - eclipsee cycloneiii virage atc18 umc18 dw02 spw usbhc eth gleichmann \ - fmf spansion gsi cypress hynix ihp25 sgb25vrh ut025crh rh_lib18t ihp \ - artisan virage90 tsmc90 dare nextreme micron stratixiii \ - core1553bbc core1553brt core1553brm corePCIF gr1553 openchip tmtc -DIRSKIP=spw usbhc spacewire greth grusbhc can leon3ft pcif b1553 crypto satcan \ - hcan -FILESKIP=simple_spi_top.v - -include $(GRLIB)/software/leon3/Makefile -include $(GRLIB)/bin/Makefile - -################## project specific targets ########################## - diff --git a/designs/leon3-wildcard-xcv300e/config.in b/designs/leon3-wildcard-xcv300e/config.in deleted file mode 100644 index 8cdb7909..00000000 --- a/designs/leon3-wildcard-xcv300e/config.in +++ /dev/null @@ -1,18 +0,0 @@ -# -# LEON3 configuration written in linux configuration language -# -# Gaisler Research -# -# Comments and bug reports to support@gaisler.com -# -# - -mainmenu_name "LEON3 WildCard Design Configuration" - -source lib/gaisler/leon3/leon3.in - - mainmenu_option next_comment - comment 'On-chip RAM' - source lib/gaisler/misc/ahbram.in - endmenu - diff --git a/designs/leon3-wildcard-xcv300e/config.vhd b/designs/leon3-wildcard-xcv300e/config.vhd deleted file mode 100644 index c9cca6dd..00000000 --- a/designs/leon3-wildcard-xcv300e/config.vhd +++ /dev/null @@ -1,72 +0,0 @@ - - - - ------------------------------------------------------------------------------ --- LEON3 Demonstration design test bench configuration --- Copyright (C) 2009 Aeroflex Gaisler ------------------------------------------------------------------------------- - - -library techmap; -use techmap.gencomp.all; - -package config is --- LEON3 processor core - constant CFG_LEON3 : integer := 1; - constant CFG_NCPU : integer := (1); - constant CFG_NWIN : integer := (2); - constant CFG_V8 : integer := 0 + 4*0; - constant CFG_MAC : integer := 0; - constant CFG_BP : integer := 0; - constant CFG_SVT : integer := 0; - constant CFG_RSTADDR : integer := 16#00000#; - constant CFG_LDDEL : integer := (2); - constant CFG_NOTAG : integer := 0; - constant CFG_NWP : integer := (0); - constant CFG_PWD : integer := 0*2; - constant CFG_FPU : integer := 0 + 16*0 + 32*0; - constant CFG_GRFPUSH : integer := 0; - constant CFG_ICEN : integer := 0; - constant CFG_ISETS : integer := 1; - constant CFG_ISETSZ : integer := 1; - constant CFG_ILINE : integer := 8; - constant CFG_IREPL : integer := 0; - constant CFG_ILOCK : integer := 0; - constant CFG_ILRAMEN : integer := 0; - constant CFG_ILRAMADDR: integer := 16#8E#; - constant CFG_ILRAMSZ : integer := 1; - constant CFG_DCEN : integer := 0; - constant CFG_DSETS : integer := 1; - constant CFG_DSETSZ : integer := 1; - constant CFG_DLINE : integer := 8; - constant CFG_DREPL : integer := 0; - constant CFG_DLOCK : integer := 0; - constant CFG_DSNOOP : integer := 0 + 0 + 4*0; - constant CFG_DFIXED : integer := 16#0#; - constant CFG_DLRAMEN : integer := 0; - constant CFG_DLRAMADDR: integer := 16#8F#; - constant CFG_DLRAMSZ : integer := 1; - constant CFG_MMUEN : integer := 0; - constant CFG_ITLBNUM : integer := 2; - constant CFG_DTLBNUM : integer := 2; - constant CFG_TLB_TYPE : integer := 1 + 0*2; - constant CFG_TLB_REP : integer := 1; - constant CFG_MMU_PAGE : integer := 0; - constant CFG_DSU : integer := 1; - constant CFG_ITBSZ : integer := 0; - constant CFG_ATBSZ : integer := 0; - constant CFG_LEON3FT_EN : integer := 0; - constant CFG_IUFT_EN : integer := 0; - constant CFG_FPUFT_EN : integer := 0; - constant CFG_RF_ERRINJ : integer := 0; - constant CFG_CACHE_FT_EN : integer := 0; - constant CFG_CACHE_ERRINJ : integer := 0; - constant CFG_LEON3_NETLIST: integer := 0; - constant CFG_DISAS : integer := 0 + 0; - constant CFG_PCLOW : integer := 2; --- AHB RAM - constant CFG_AHBRAMEN : integer := 0; - constant CFG_AHBRSZ : integer := 1; - constant CFG_AHBRADDR : integer := 16#A00#; -end; diff --git a/designs/leon3-wildcard-xcv300e/host_arch.vhd b/designs/leon3-wildcard-xcv300e/host_arch.vhd deleted file mode 100644 index 444b2c51..00000000 --- a/designs/leon3-wildcard-xcv300e/host_arch.vhd +++ /dev/null @@ -1,518 +0,0 @@ ------------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---============================================================================-- --- Design unit : Host emulation (architecture declarations) --- --- File name : host_arch.vhd --- --- Purpose : Host emulator for test bench --- --- Library : System --- --- Authors : Aeroflex Gaisler AB --- --- Contact : mailto:support@gaisler.com --- http://www.gaisler.com --- --- Disclaimer : All information is provided "as is", there is no warranty that --- the information is correct or suitable for any purpose, --- neither implicit nor explicit. ---============================================================================-- - ---============================== Architecture ================================-- - -library Std; -use Std.TextIO.all; - -library IEEE; -use IEEE.Std_Logic_1164.all; -use IEEE.Std_Logic_Arith.all; -use IEEE.Std_Logic_TextIO.all; - -library PE_Lib; -use PE_Lib.PE_Package.all; - -library SYSTEM; -use SYSTEM.Host_Package.all; - -architecture Validate of Host is - ----------------------------------------------------------------------------- - -- Registers - ----------------------------------------------------------------------------- - constant cStat: DWORD := 16#00000000#; - constant cCtrl: DWORD := 16#00000004#; - constant cSize: DWORD := 16#00000008#; - constant cVer: DWORD := 16#0000000c#; - constant cRAddr: DWORD := 16#00000010#; - constant cWAddr: DWORD := 16#00000020#; - constant cRData: DWORD := 16#00000200#; - constant cWData: DWORD := 16#00000300#; - - constant cSSRAML: DWORD := 16#40000000#; - constant cSSRAMR: DWORD := 16#60000000#; - constant cAHBRam: DWORD := 16#a0000000#; - -begin - ----------------------------------------------------------------------------- - -- - ----------------------------------------------------------------------------- - Main: process - -------------------------------------------------------------------------- - -- - -------------------------------------------------------------------------- - variable device: WC_DeviceNum := 0; - variable enable: Boolean := False; - variable burstLength: Integer; - variable fClkFreq: Float := 10.0; - variable dwordOffset: DWORD; - variable dwordCount: DWORD; - variable regData: DWORD_array (0 to 255); - variable memData: DWORD_array (0 to 255); - variable Done: Boolean; - variable timeoutMilliSeconds: DWORD; - variable data: DWORD; - variable dv: DWORD_array (0 to 255); - variable cv: DWORD_array (0 to 255); - - variable ready: Integer; - - variable L: Line; - - procedure wcmd (a: in DWORD; d: in DWORD) is - begin - Write(L, Now, Right, 15); - Write(L, String'(" : Write: addr = ")); - HWrite(L, Conv_Std_Logic_Vector(a, 32)); - Write(L, String'(" : data = ")); - HWrite(L, Conv_Std_Logic_Vector(d, 32)); - WriteLine(Output, L); - - dwordOffset := cWData/4; - dwordCount := 1; - regData(0) := d; - WC_PeRegWrite(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - - dwordOffset := cSize/4; - dwordCount := 1; - regData(0) := 0; - WC_PeRegWrite(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - - dwordOffset := cWAddr/4; - dwordCount := 1; - regData(0) := a; - WC_PeRegWrite(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - - ready := 0; - while ready=0 loop - dwordOffset := cStat/4; - dwordCount := 1; - WC_PeRegRead(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - ready := regData(0) mod 2; - end loop; - end procedure; - - procedure rcmd (a: in DWORD; d: out DWORD) is - begin - dwordOffset := cSize/4; - dwordCount := 1; - regData(0) := 0; - WC_PeRegWrite(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - - dwordOffset := cRAddr/4; - dwordCount := 1; - regData(0) := a; - WC_PeRegWrite(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - - ready := 0; - while ready=0 loop - dwordOffset := cStat/4; - dwordCount := 1; - WC_PeRegRead(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - ready := regData(0) mod 2; - end loop; - - dwordOffset := cRData/4; - dwordCount := 1; - WC_PeRegRead(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - d := regData(0); - - Write(L, Now, Right, 15); - Write(L, String'(" : Read: addr = ")); - HWrite(L, Conv_Std_Logic_Vector(a, 32)); - Write(L, String'(" : data = ")); - HWrite(L, Conv_Std_Logic_Vector(regData(0), 32)); - WriteLine(Output, L); - end procedure; - - - - procedure wcmd (a: in DWORD; d: in DWORD_array) is - begin - for i in 0 to d'Length-1 loop - Write(L, Now, Right, 15); - Write(L, String'(" : Write: addr = ")); - HWrite(L, Conv_Std_Logic_Vector(a+i*4, 32)); - Write(L, String'(" : data = ")); - HWrite(L, Conv_Std_Logic_Vector(d(i), 32)); - WriteLine(Output, L); - end loop; - - dwordOffset := cWData/4; - dwordCount := d'Length; - regData(0 to d'length-1) := d; - WC_PeRegWrite(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - - dwordOffset := cSize/4; - dwordCount := 1; - regData(0) := d'Length; - WC_PeRegWrite(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - - dwordOffset := cWAddr/4; - dwordCount := 1; - regData(0) := a; - WC_PeRegWrite(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - - ready := 0; - while ready=0 loop - dwordOffset := cStat/4; - dwordCount := 1; - WC_PeRegRead(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - ready := regData(0) mod 2; - end loop; - end procedure; - - procedure rcmd (a: in DWORD; d: out DWORD_array) is - begin - - dwordOffset := cSize/4; - dwordCount := 1; - regData(0) := d'Length; - WC_PeRegWrite(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - - - dwordOffset := cRAddr/4; - dwordCount := 1; - regData(0) := a; - WC_PeRegWrite(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - - ready := 0; - - while ready=0 loop - dwordOffset := cStat/4; - dwordCount := 1; - WC_PeRegRead(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - ready := regData(0) mod 2; - end loop; - - dwordOffset := cRData/4; - dwordCount := d'Length; - WC_PeRegRead(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - d := regData(0 to d'Length-1); - for i in 0 to d'Length-1 loop - Write(L, Now, Right, 15); - Write(L, String'(" : Read: addr = ")); - HWrite(L, Conv_Std_Logic_Vector(a+i*4, 32)); - Write(L, String'(" : data = ")); - HWrite(L, Conv_Std_Logic_Vector(regData(i), 32)); - WriteLine(Output, L); - end loop; - end procedure; - - variable burst: Integer := 0; - begin - - -------------------------------------------------------------------------- - -- At first, deassert the command request signal - -------------------------------------------------------------------------- - Cmd_Req <= False; - - -------------------------------------------------------------------------- - -- We are using device 0 - -------------------------------------------------------------------------- - device := 0; - - --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - -- - -- Step 1: Initialize the simulated CardBus controller. - -- - --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - - -------------------------------------------------------------------------- - -- Enable the K_Clk (CardBus/LAD-bus clock) to the device - -------------------------------------------------------------------------- - enable := True; - Debug_Enable_K_Clk(Cmd_Req, - Cmd_Ack, - device, - enable); - - -------------------------------------------------------------------------- - -- Enable LAD bus bursts to/from the device - -------------------------------------------------------------------------- - enable := True; - Debug_Enable_Burst(Cmd_Req, - Cmd_Ack, - device, - enable); - - -------------------------------------------------------------------------- - -- Set the length of read bursts from the device - -------------------------------------------------------------------------- - burstLength := 4; - Debug_Set_Read_Burst_Length(Cmd_Req, - Cmd_Ack, - device, - burstLength); - - -------------------------------------------------------------------------- - -- Set the length of write bursts from the device - -------------------------------------------------------------------------- - burstLength := 32; - Debug_Set_Write_Burst_Length(Cmd_Req, - Cmd_Ack, - device, - burstLength); - - --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - -- - -- Step 2: Configure the memory clock and processing element clock. - -- - --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - - -------------------------------------------------------------------------- - -- Set the F_Clk frequency (which will set the M_Clk and P_Clk - -- frequencies to F_CLK and F_CLK/2, respectively) - -------------------------------------------------------------------------- - fClkFreq := 40.0; - WC_ClkSetFrequency(Cmd_Req, - Cmd_Ack, - device, - fClkFreq); - - --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - -- - -- Step 3: Reset the PE, clear any PE interrupts, and enable PE interrupts - -- - --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - - -------------------------------------------------------------------------- - -- Set up the PE's interrupt and toggle the reset line - -------------------------------------------------------------------------- - enable := True; - WC_PeReset(Cmd_Req, - Cmd_Ack, - device, - enable); - - WC_IntReset(Cmd_Req, - Cmd_Ack, - device); - - enable := False; - WC_IntEnable(Cmd_Req, - Cmd_Ack, - device, - enable); - wait for 5 us; - - enable := False; - WC_PeReset(Cmd_Req, - Cmd_Ack, - device, - enable); - - wait for 20 us; - - report "======== PE is now reset and the clocks are running ========" - severity Note; - - --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - -- - -- - -- - --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - Write(L, String'("")); - WriteLine(Output, L); - WriteLine(Output, L); - - - WriteLine(Output, L); - Write(L, Now, Right, 15); - Write(L, String'(" : Check burst capability.")); - WriteLine(Output, L); - dwordOffset := cVer/4; - dwordCount := 1; - WC_PeRegRead(Cmd_Req, - Cmd_Ack, - device, - dwordOffset, - dwordCount, - regData); - - Write(L, Now, Right, 15); - Write(L, String'(" : Read: addr = ")); - HWrite(L, Conv_Std_Logic_Vector(cVer, 32)); - Write(L, String'(" : data = ")); - HWrite(L, Conv_Std_Logic_Vector(regData(0), 32)); - WriteLine(Output, L); - burst := regData(0) / 16; - - for i in 0 to 255 loop dv(i) := i; end loop; - - if burst > 1 then - WriteLine(Output, L); - Write(L, Now, Right, 15); - Write(L, String'(" : Test left memory, burst access.")); - WriteLine(Output, L); - - wcmd(cSSRAML, dv(0 to burst-1)); - rcmd(cSSRAML, cv(0 to burst-1)); - - for i in 0 to burst-1 loop - if cv(i) /= dv(i) then - Write(L, Now, Right, 15); - Write(L, String'(" : Error: read = ")); - HWrite(L, Conv_Std_Logic_Vector(cv(i), 32)); - Write(L, String'(" : expected = ")); - HWrite(L, Conv_Std_Logic_Vector(dv(i), 32)); - WriteLine(Output, L); - end if; - end loop; - end if; - - WriteLine(Output, L); - Write(L, Now, Right, 15); - Write(L, String'(" : Test on-chip memory, single access.")); - WriteLine(Output, L); - wcmd(cAHBRam, 16#12345678#); - rcmd(cAHBRam, data); - - WriteLine(Output, L); - Write(L, Now, Right, 15); - Write(L, String'(" : Test left memory, single burst.")); - WriteLine(Output, L); - wcmd(cSSRAML, dv(255)); - rcmd(cSSRAML, cv(255)); - - WriteLine(Output, L); - Write(L, Now, Right, 15); - Write(L, String'(" : Test left memory, single access.")); - WriteLine(Output, L); - wcmd(cSSRAML, 16#abcd0001#); - rcmd(cSSRAML, data); - - WriteLine(Output, L); - Write(L, Now, Right, 15); - Write(L, String'(" : Test right memory, single access.")); - WriteLine(Output, L); - wcmd(cSSRAMR, 16#abcd0002#); - rcmd(cSSRAMR, data); - - WriteLine(Output, L); - WriteLine(Output, L); - wait for 10 us; - -------------------------------------------------------------------------- - -- End of the simulated host program - -------------------------------------------------------------------------- - report "End of test" - severity Failure; - - wait; - end process Main; -end architecture Validate; --=================================================-- diff --git a/designs/leon3-wildcard-xcv300e/lconfig.tk b/designs/leon3-wildcard-xcv300e/lconfig.tk deleted file mode 100755 index b772393d..00000000 --- a/designs/leon3-wildcard-xcv300e/lconfig.tk +++ /dev/null @@ -1,3284 +0,0 @@ -# FILE: header.tk -# This file is boilerplate TCL/TK function definitions for 'make xconfig'. -# -# CHANGES -# ======= -# -# 8 January 1999, Michael Elizabeth Chastain, -# - Remove unused do_cmd function (part of the 2.0 sound support). -# - Arrange buttons in three columns for better screen fitting. -# - Add CONSTANT_Y, CONSTANT_M, CONSTANT_N for commands like: -# dep_tristate 'foo' CONFIG_FOO m -# -# 23 January 1999, Michael Elizabeth Chastain, -# - Shut vfix the hell up. -# -# 24 January 1999, Michael Elizabeth Chastain, -# - Improve the exit message (Jeff Ronne). - -# -# This is a handy replacement for ".widget cget" that requires neither tk4 -# nor additional source code uglification. -# -proc cget { w option } { - return "[lindex [$w configure $option] 4]" -} - -# -# Function to compensate for broken config.in scripts like the sound driver, -# which make dependencies on variables that are never even conditionally -# defined. -# -proc vfix { var } { - global $var - if [ catch {eval concat $$var} ] { - set $var 4 - } -} - -# -# Constant values used by certain dep_tristate commands. -# -set CONSTANT_Y 1 -set CONSTANT_M 2 -set CONSTANT_N 0 -set CONSTANT_E 4 - -# -# Create a "reference" object to steal colors from. -# -button .ref - -# -# On monochrome displays, -disabledforeground is blank by default; that's -# bad. Fill it with -foreground instead. -# -if { [cget .ref -disabledforeground] == "" } { - .ref configure -disabledforeground [cget .ref -foreground] -} - - -# -# Define some macros we will need to parse the config.in file. -# - -proc mainmenu_name { text } { - wm title . "$text" -} - -proc menu_option { w menu_num text } { - global menus_per_column - global processed_top_level - set processed_top_level [expr $processed_top_level + 1] - if { $processed_top_level <= $menus_per_column } then { - set myframe left - } elseif { $processed_top_level <= [expr 2 * $menus_per_column] } then { - set myframe middle - } else { - set myframe right - } - button .f0.x$menu_num -anchor w -text "$text" \ - -command "$w .$w \"$text\"" - pack .f0.x$menu_num -pady 0 -side top -fill x -in .f0.$myframe -} - -proc load_configfile { w title func } { - catch {destroy $w} - toplevel $w -class Dialog - global loadfile - frame $w.x - label $w.bm -bitmap questhead - pack $w.bm -pady 10 -side top -padx 10 - label $w.x.l -text "Enter filename:" -relief raised - entry $w.x.x -width 35 -relief sunken -borderwidth 2 \ - -textvariable loadfile - pack $w.x.l $w.x.x -anchor w -side left - pack $w.x -side top -pady 10 - wm title $w "$title" - - set oldFocus [focus] - frame $w.f - button $w.f.back -text "OK" -width 20 \ - -command "destroy $w; focus $oldFocus;$func .fileio" - button $w.f.canc -text "Cancel" \ - -width 20 -command "destroy $w; focus $oldFocus" - pack $w.f.back $w.f.canc -side left -pady 10 -padx 45 - pack $w.f -pady 10 -side bottom -padx 10 -anchor w - focus $w - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - wm geometry $w +$winx+$winy -} - -bind all {maybe_exit .maybe} - -proc maybe_exit { w } { - catch {destroy $w} - toplevel $w -class Dialog - label $w.bm -bitmap questhead - pack $w.bm -pady 10 -side top -padx 10 - message $w.m -width 400 -aspect 300 \ - -text "Changes will be lost. Are you sure?" -relief flat - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Are you sure?" - - set oldFocus [focus] - frame $w.f - button $w.f.back -text "OK" -width 20 \ - -command "exit 1" - button $w.f.canc -text "Cancel" \ - -width 20 -command "destroy $w; focus $oldFocus" - pack $w.f.back $w.f.canc -side left -pady 10 -padx 45 - pack $w.f -pady 10 -side bottom -padx 10 -anchor w - bind $w "exit 1" - bind $w "destroy $w; focus $oldFocus" - focus $w - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - wm geometry $w +$winx+$winy -} - -proc read_config_file { w } { - global loadfile - if { [string length $loadfile] != 0 && [file readable $loadfile] == 1 } then { - read_config $loadfile - } else { - catch {destroy $w} - toplevel $w -class Dialog - message $w.m -width 400 -aspect 300 -text \ - "Unable to read file $loadfile" \ - -relief raised - label $w.bm -bitmap error - pack $w.bm $w.m -pady 10 -side top -padx 10 - wm title $w "Xconfig Internal Error" - - set oldFocus [focus] - frame $w.f - button $w.f.back -text "Bummer" \ - -width 10 -command "destroy $w; focus $oldFocus" - pack $w.f.back -side bottom -pady 10 -anchor s - pack $w.f -pady 10 -side top -padx 10 -anchor s - focus $w - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - wm geometry $w +$winx+$winy - } -} - -proc write_config_file { w } { - global loadfile - if { [string length $loadfile] != 0 - && ([file writable $loadfile] == 1 || ([file exists $loadfile] == 0 && [file writable [file dirname $loadfile]] == 1)) } then { - writeconfig $loadfile .null - } else { - catch {destroy $w} - toplevel $w -class Dialog - message $w.m -width 400 -aspect 300 -text \ - "Unable to write file $loadfile" \ - -relief raised - label $w.bm -bitmap error - pack $w.bm $w.m -pady 10 -side top -padx 10 - wm title $w "Xconfig Internal Error" - - set oldFocus [focus] - frame $w.f - button $w.f.back -text "OK" \ - -width 10 -command "destroy $w; focus $oldFocus" - pack $w.f.back -side bottom -pady 10 -anchor s - pack $w.f -pady 10 -side top -padx 10 -anchor s - focus $w - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - wm geometry $w +$winx+$winy - } -} - -proc read_config { filename } { - set file1 [open $filename r] - clear_choices - while { [gets $file1 line] >= 0} { - if [regexp {([0-9A-Za-z_]+)=([ynm])} $line foo var value] { - if { $value == "y" } then { set cmd "global $var; set $var 1" } - if { $value == "n" } then { set cmd "global $var; set $var 0" } - if { $value == "m" } then { set cmd "global $var; set $var 2" } - eval $cmd - } - if [regexp {# ([0-9A-Za-z_]+) is not set} $line foo var] { - set cmd "global $var; set $var 0" - eval $cmd - } - if [regexp {([0-9A-Za-z_]+)=([0-9A-Fa-f]+)} $line foo var value] { - set cmd "global $var; set $var $value" - eval $cmd - } - if [regexp {([0-9A-Za-z_]+)="([^"]*)"} $line foo var value] { - set cmd "global $var; set $var \"$value\"" - eval $cmd - } - } - close $file1 - update_choices - update_mainmenu -} -proc write_comment { file1 file2 text } { - puts $file1 "" - puts $file1 "#" - puts $file1 "# $text" - puts $file1 "#" - puts $file2 "/*" - puts $file2 " * $text" - puts $file2 " */" -} - -proc effective_dep { deplist } { - global CONFIG_MODULES - set depend 1 - foreach i $deplist { - if {$i == 0} then {set depend 0} - if {$i == 2 && $depend == 1} then {set depend 2} - } - if {$depend == 2 && $CONFIG_MODULES == 0} then {set depend 0} - return $depend -} - -proc sync_tristate { var dep } { - global CONFIG_MODULES - if {$dep == 0 && ($var == 1 || $var == 2)} then { - set var 0 - } elseif {$dep == 2 && $var == 1} then { - set var 2 - } elseif {$var == 2 && $CONFIG_MODULES == 0} then { - if {$dep == 1} then {set var 1} else {set var 0} - } - return $var -} - -proc sync_bool { var dep modset } { - set var [sync_tristate $var $dep] - if {$dep == 2 && $var == 2} then { - set var $modset - } - return $var -} - -proc write_tristate { file1 file2 varname variable deplist modset } { - set variable [sync_tristate $variable [effective_dep $deplist]] - if { $variable == 2 } \ - then { set variable $modset } - if { $variable == 1 } \ - then { puts $file1 "$varname=y"; \ - puts $file2 "#define $varname 1" } \ - elseif { $variable == 2 } \ - then { puts $file1 "$varname=m"; \ - puts $file2 "#undef $varname"; \ - puts $file2 "#define ${varname}_MODULE 1" } \ - elseif { $variable == 0 } \ - then { puts $file1 "# $varname is not set"; \ - puts $file2 "#undef $varname"} \ - else { \ - puts stdout "ERROR - Attempting to write value for unconfigured variable ($varname)." \ - } -} - -proc write_int { file1 file2 varname variable dep } { - if { $dep == 0 } \ - then { puts $file1 "# $varname is not set"; \ - puts $file2 "#undef $varname"} \ - else { - puts $file1 "$varname=$variable"; \ - puts $file2 "#define $varname ($variable)"; \ - } -} - -proc write_hex { file1 file2 varname variable dep } { - if { $dep == 0 } \ - then { puts $file1 "# $varname is not set"; \ - puts $file2 "#undef $varname"} \ - else { - puts $file1 "$varname=$variable"; \ - puts -nonewline $file2 "#define $varname "; \ - puts $file2 [exec echo $variable | sed s/^0\[xX\]//]; \ - } -} - -proc write_string { file1 file2 varname variable dep } { - if { $dep == 0 } \ - then { puts $file1 "# $varname is not set"; \ - puts $file2 "#undef $varname"} \ - else { - puts $file1 "$varname=\"$variable\""; \ - puts $file2 "#define $varname \"$variable\""; \ - } -} - -proc option_name {w mnum line text helpidx} { - button $w.x$line.l -text "$text" -relief groove -anchor w - $w.x$line.l configure -activefore [cget $w.x$line.l -fg] \ - -activeback [cget $w.x$line.l -bg] - button $w.x$line.help -text "Help" -relief raised \ - -command "dohelp .dohelp $helpidx .menu$mnum" - pack $w.x$line.help -side right -fill y - pack $w.x$line.l -side right -fill both -expand on -} - -proc toggle_switch2 {w mnum line text variable} { - frame $w.x$line -relief sunken - radiobutton $w.x$line.y -text "y" -variable $variable -value 1 \ - -relief groove -width 2 -command "update_active" -# radiobutton $w.x$line.m -text "-" -variable $variable -value 2 \ -# -relief groove -width 2 -command "update_active" - radiobutton $w.x$line.n -text "n" -variable $variable -value 0 \ - -relief groove -width 2 -command "update_active" - - option_name $w $mnum $line $text $variable - - pack $w.x$line.n $w.x$line.y -side right -fill y -} - -proc toggle_switch3 {w mnum line text variable} { - frame $w.x$line -relief sunken - radiobutton $w.x$line.y -text "y" -variable $variable -value 1 \ - -relief groove -width 2 -command "update_active" - radiobutton $w.x$line.m -text "m" -variable $variable -value 2 \ - -relief groove -width 2 -command "update_active" - radiobutton $w.x$line.n -text "n" -variable $variable -value 0 \ - -relief groove -width 2 -command "update_active" - - option_name $w $mnum $line $text $variable - - global CONFIG_MODULES - if {($CONFIG_MODULES == 0)} then { - $w.x$line.m configure -state disabled - } - pack $w.x$line.n $w.x$line.m $w.x$line.y -side right -fill y -} - -proc bool {w mnum line text variable} { - toggle_switch2 $w $mnum $line $text $variable -# $w.x$line.m configure -state disabled - pack $w.x$line -anchor w -fill both -expand on -} - -proc tristate {w mnum line text variable } { - toggle_switch3 $w $mnum $line $text $variable - pack $w.x$line -anchor w -fill both -expand on -} - -proc dep_tristate {w mnum line text variable } { - tristate $w $mnum $line $text $variable -} - -proc dep_bool {w mnum line text variable } { - bool $w $mnum $line $text $variable -} - -proc int { w mnum line text variable } { - frame $w.x$line - entry $w.x$line.x -width 11 -relief sunken -borderwidth 2 \ - -textvariable $variable - option_name $w $mnum $line $text $variable - pack $w.x$line.x -anchor w -side right -fill y - pack $w.x$line -anchor w -fill both -expand on -} - -proc hex { w mnum line text variable } { - int $w $mnum $line $text $variable -} - -proc istring { w mnum line text variable } { - frame $w.x$line - entry $w.x$line.x -width 18 -relief sunken -borderwidth 2 \ - -textvariable $variable - option_name $w $mnum $line $text $variable - pack $w.x$line.x -anchor w -side right -fill y - pack $w.x$line -anchor w -fill both -expand on -} - -proc minimenu { w mnum line text variable helpidx } { - frame $w.x$line - menubutton $w.x$line.x -textvariable $variable -menu \ - $w.x$line.x.menu -relief raised \ - -anchor w - option_name $w $mnum $line $text $helpidx - pack $w.x$line.x -anchor w -side right -fill y - pack $w.x$line -anchor w -fill both -expand on -} - -proc menusplit {w m n} { - if { $n > 2 } then { - update idletasks - set menuoptsize [expr [$m yposition 2] - [$m yposition 1]] - set maxsize [winfo screenheight $w] - set splitpoint [expr $maxsize * 4 / 5 / $menuoptsize - 1] - for {set i [expr $splitpoint + 1]} {$i <= $n} {incr i $splitpoint} { - $m entryconfigure $i -columnbreak 1 - } - } -} - -proc menutitle {text menu w} { - wm title $w "$text" -} - -proc submenu { w mnum line text subnum } { - frame $w.x$line - button $w.x$line.l -text "" -width 9 -relief groove - $w.x$line.l configure -activefore [cget $w.x$line.l -fg] \ - -activeback [cget $w.x$line.l -bg] -state disabled - button $w.x$line.m -text "$text" -relief raised -anchor w \ - -command "catch {destroy .menu$subnum}; menu$subnum .menu$subnum \"$text\"" - pack $w.x$line.l -side left -fill both - pack $w.x$line.m -anchor w -side right -fill both -expand on - pack $w.x$line -anchor w -fill both -expand on -} - -proc comment {w mnum line text } { - frame $w.x$line - button $w.x$line.l -text "" -width 15 -relief groove - $w.x$line.l configure -activefore [cget $w.x$line.l -fg] \ - -activeback [cget $w.x$line.l -bg] -state disabled - button $w.x$line.m -text "$text" -relief groove -anchor w - $w.x$line.m configure -activefore [cget $w.x$line.m -fg] \ - -activeback [cget $w.x$line.m -bg] - pack $w.x$line.l -side left -fill both - pack $w.x$line.m -anchor w -side right -fill both -expand on - pack $w.x$line -anchor w -fill both -expand on -} - -proc readhelp {tag fn} { - set message "" - set b 0 - if { [file readable $fn] == 1} then { - set fhandle [open $fn r] - while {[gets $fhandle inline] >= 0} { - if { $b == 0 } { - if { [regexp $tag $inline ] } { - set b 1 - set message "$inline:\n" - } - } else { - if { [regexp {^[^ \t]} $inline]} { - break - } - set message "$message\n$inline" - } - } - close $fhandle - } - return $message -} - -proc dohelp {w var parent} { - catch {destroy $w} - toplevel $w -class Dialog - - set filefound 0 - set found 0 - set lineno 0 - - if { [file readable config.help] == 1} then { - set filefound 1 - # First escape sed regexp special characters in var: - set var [exec echo "$var" | sed s/\[\]\[\/.^$*\]/\\\\&/g] - # Now pick out right help text: - set message [readhelp $var config.help] - set found [expr [string length "$message"] > 0] - } - - frame $w.f1 - pack $w.f1 -fill both -expand on - - # Do the OK button - # - set oldFocus [focus] - frame $w.f2 - button $w.f2.ok -text "OK" \ - -width 10 -command "destroy $w; catch {focus $oldFocus}" - pack $w.f2.ok -side bottom -pady 6 -anchor n - pack $w.f2 -side bottom -padx 10 -anchor s - - scrollbar $w.f1.vscroll -command "$w.f1.canvas yview" - pack $w.f1.vscroll -side right -fill y - - canvas $w.f1.canvas -relief flat -borderwidth 0 \ - -yscrollcommand "$w.f1.vscroll set" - frame $w.f1.f - pack $w.f1.canvas -side right -fill y -expand on - - if { $found == 0 } then { - if { $filefound == 0 } then { - message $w.f1.f.m -width 750 -aspect 300 -relief flat -text \ - "No help available - unable to open file config.help." - } else { - message $w.f1.f.m -width 400 -aspect 300 -relief flat -text \ - "No help available for $var" - } - label $w.f1.bm -bitmap error - wm title $w "RTFM" - } else { - text $w.f1.f.m -width 73 -relief flat -wrap word - $w.f1.f.m insert 0.0 $message - $w.f1.f.m conf -state disabled -height [$w.f1.f.m index end] - - label $w.f1.bm -bitmap info - wm title $w "Configuration help" - } - pack $w.f1.f.m -side left - pack $w.f1.bm $w.f1.f -side left -padx 10 - - focus $w - set winx [expr [winfo x $parent]+20] - set winy [expr [winfo y $parent]+20] - wm geometry $w +$winx+$winy - set sizok [expr [winfo reqheight $w.f2.ok] + 12] - set maxy [expr [winfo screenheight .] * 3 / 4] - set canvtotal [winfo reqheight $w.f1.f.m] - if [expr $sizok + $canvtotal < $maxy] { - set sizy $canvtotal - } else { - set sizy [expr $maxy - $sizok] - } - $w.f1.canvas configure -height $sizy -width [winfo reqwidth $w.f1.f.m] \ - -scrollregion "0 0 [winfo reqwidth $w.f1.f.m] \ - [winfo reqheight $w.f1.f.m]" - $w.f1.canvas create window 0 0 -anchor nw -window $w.f1.f - update idletasks - - set maxy [winfo screenheight .] - if [expr $sizok + $canvtotal < $maxy] { - set sizy [expr $sizok + $canvtotal] - } else { - set sizy $maxy - } - wm maxsize $w [winfo width $w] $sizy -} - -bind all { catch {exec cp -f .config .config.old}; \ - writeconfig .config config.h; wrapup .wrap } - -proc wrapup {w } { - catch {destroy $w} - toplevel $w -class Dialog - - global CONFIG_MODVERSIONS; vfix CONFIG_MODVERSIONS - message $w.m -width 460 -aspect 300 -relief raised -text \ - "End of design configuration. " - label $w.bm -bitmap info - pack $w.bm $w.m -pady 10 -side top -padx 10 - wm title $w "LEON build instructions" - - set oldFocus [focus] - frame $w.f - button $w.f.back -text "OK" \ - -width 10 -command "exit 2" - pack $w.f.back -side bottom -pady 10 -anchor s - pack $w.f -pady 10 -side top -padx 10 -anchor s - focus $w - bind $w "exit 2" - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - wm geometry $w +$winx+$winy - -} - -proc unregister_active {num} { - global active_menus - set index [lsearch -exact $active_menus $num] - if {$index != -1} then {set active_menus [lreplace $active_menus $index $index]} -} - -proc update_active {} { - global active_menus total_menus - set max 0 - if {[llength $active_menus] > 0} then { - set max [lindex $active_menus end] - update_define [toplevel_menu [lindex $active_menus 0]] $max 0 - } - foreach i $active_menus { - if {[winfo exists .menu$i] == 0} then { - unregister_active $i - } else { - update_menu$i - } - } - update_define [expr $max + 1] $total_menus 1 - update_mainmenu -} - -proc configure_entry {w option items} { - foreach i $items { - $w.$i configure -state $option - } -} - -proc validate_int {name val default} { - if {([exec echo $val | sed s/^-//g | tr -d \[:digit:\] ] != "")} then { - global $name; set $name $default - } -} - -proc validate_hex {name val default} { - if {([exec echo $val | tr -d \[:xdigit:\] ] != "")} then { - global $name; set $name $default - } -} - -proc update_define {first last allow_update} { - for {set i $first} {$i <= $last} {incr i} { - update_define_menu$i - if {$allow_update == 1} then update - } -} - -# -# Next set up the particulars for the top level menu, and define a few -# buttons which we will stick down at the bottom. -# - -frame .f0 -frame .f0.left -frame .f0.middle -frame .f0.right - -set active_menus [list] -set processed_top_level 0 -set ARCH sparc -set menus_per_column 2 -set total_menus 9 - -proc toplevel_menu {num} { - if {$num == 2} then {return 1} - if {$num == 3} then {return 1} - if {$num == 4} then {return 1} - if {$num == 5} then {return 1} - if {$num == 6} then {return 1} - if {$num == 7} then {return 1} - if {$num == 8} then {return 1} - return $num -} - -mainmenu_name "LEON3 WildCard Design Configuration" -menu_option menu1 1 "Processor " -proc menu1 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 1} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 1]] - message $w.m -width 400 -aspect 300 -text \ - "Processor " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Processor " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 1; break" - set nextscript "catch {focus $oldFocus}; menu2 .menu2 \"$title\"" - frame $w.f - button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 1" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 1; menu0 .menu0 \"$title\"" - $w.f.prev configure -state disabled - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 1 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 - int $w.config.f 1 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 1 2 "Integer unit " 2 - submenu $w.config.f 1 3 "Floating-point unit" 3 - submenu $w.config.f 1 4 "Cache system" 4 - submenu $w.config.f 1 5 "MMU" 5 - submenu $w.config.f 1 6 "Debug Support Unit " 6 - submenu $w.config.f 1 7 "Fault-tolerance " 7 - submenu $w.config.f 1 8 "VHDL debug settings " 8 - - - - focus $w - update_active - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu1 {} { - global CONFIG_LEON3 - global CONFIG_PROC_NUM - if {($CONFIG_LEON3 == 1)} then {.menu1.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu1.config.f.x1.l configure -state normal; } else {.menu1.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu1.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu1.config.f.x2 normal {m}} else {configure_entry .menu1.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu1.config.f.x3 normal {m}} else {configure_entry .menu1.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu1.config.f.x4 normal {m}} else {configure_entry .menu1.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu1.config.f.x5 normal {m}} else {configure_entry .menu1.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu1.config.f.x6 normal {m}} else {configure_entry .menu1.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu1.config.f.x7 normal {m}} else {configure_entry .menu1.config.f.x7 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu1.config.f.x8 normal {m}} else {configure_entry .menu1.config.f.x8 disabled {m}} -} - - -proc update_define_menu1 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_PROC_NUM - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} -} - - -proc menu2 {w title} { - set oldFocus [focus] - catch {focus .menu1} - catch {destroy $w; unregister_active 2} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 2]] - message $w.m -width 400 -aspect 300 -text \ - "Integer unit " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Integer unit " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 2; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 2; menu3 .menu3 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 2" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 2; menu1 .menu1 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 2; menu1 .menu1 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - int $w.config.f 2 0 "SPARC register windows" CONFIG_IU_NWINDOWS - bool $w.config.f 2 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_0 - minimenu $w.config.f 2 2 "Hardware multiplier latency" tmpvar_0 CONFIG_IU_MUL_LATENCY_2 - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_0 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_0 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_0 -value "5-cycles" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 3 - bool $w.config.f 2 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_1 - minimenu $w.config.f 2 4 "Multipler structure " tmpvar_1 CONFIG_IU_MUL_INFERRED - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_1 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_1 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_1 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_1 -value "Designware" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 4 - bool $w.config.f 2 5 "Branch prediction " CONFIG_IU_BP - bool $w.config.f 2 6 "Single-vector trapping" CONFIG_IU_SVT - bool $w.config.f 2 7 "Disable tagged ADD/SUB and CASA" CONFIG_NOTAG - int $w.config.f 2 8 "Load delay" CONFIG_IU_LDELAY - int $w.config.f 2 9 "Hardware watchpoints" CONFIG_IU_WATCHPOINTS - bool $w.config.f 2 10 "Enable power-down mode " CONFIG_PWD - hex $w.config.f 2 11 " Reset start address (addr\[31:12\]) " CONFIG_IU_RSTADDR - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu1] == 0} then {menu1 .menu1 "Processor "} - set winx [expr [winfo x .menu1]+30]; set winy [expr [winfo y .menu1]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu2 {} { - global CONFIG_LEON3 - global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu2.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x0.l configure -state normal; } else {.menu2.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x0.l configure -state disabled} - global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu2.config.f.x1 normal {n l y}} else {configure_entry .menu2.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu2.config.f.x2 normal {x l}} else {configure_entry .menu2.config.f.x2 disabled {x l}} - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { - configure_entry .menu2.config.f.x3 normal {n l y}} else {configure_entry .menu2.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu2.config.f.x4 normal {x l}} else {configure_entry .menu2.config.f.x4 disabled {x l}} - global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu2.config.f.x5 normal {n l y}} else {configure_entry .menu2.config.f.x5 disabled {y n l}} - global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu2.config.f.x6 normal {n l y}} else {configure_entry .menu2.config.f.x6 disabled {y n l}} - global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu2.config.f.x7 normal {n l y}} else {configure_entry .menu2.config.f.x7 disabled {y n l}} - global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu2.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x8.l configure -state normal; } else {.menu2.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x8.l configure -state disabled} - global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu2.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x9.l configure -state normal; } else {.menu2.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x9.l configure -state disabled} - global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu2.config.f.x10 normal {n l y}} else {configure_entry .menu2.config.f.x10 disabled {y n l}} - global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu2.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x11.l configure -state normal; } else {.menu2.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x11.l configure -state disabled} -} - - -proc update_define_menu2 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} - global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_0 - global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_0 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} - global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_0 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} - global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_0 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} - global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { - set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_1 - global CONFIG_IU_MUL_INFERRED - if {$tmpvar_1 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} - global CONFIG_IU_MUL_MODGEN - if {$tmpvar_1 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} - global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_1 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} - global CONFIG_IU_MUL_DW - if {$tmpvar_1 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} - global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} - global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} - global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} - global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} - global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} - global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} - global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} -} - - -proc menu3 {w title} { - set oldFocus [focus] - catch {focus .menu1} - catch {destroy $w; unregister_active 3} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 3]] - message $w.m -width 400 -aspect 300 -text \ - "Floating-point unit" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Floating-point unit" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 3; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 3; menu4 .menu4 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 3" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 3; menu2 .menu2 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 3; menu2 .menu2 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 3 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_2 - minimenu $w.config.f 3 1 "FPU core" tmpvar_2 CONFIG_FPU_GRFPU - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_2 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_2 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_2 -value "Meiko" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_3 - minimenu $w.config.f 3 2 "GRFPU multiplier" tmpvar_3 CONFIG_FPU_GRFPU_INFMUL - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_3 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_3 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_3 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_3 -value "TechSpec" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_4 - minimenu $w.config.f 3 3 "GRFPU-LITE controller" tmpvar_4 CONFIG_FPU_GRFPC0 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_4 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_4 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_4 -value "Non-blocking" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 3 - bool $w.config.f 3 4 "Use VHDL netlist " CONFIG_FPU_NETLIST - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu1] == 0} then {menu1 .menu1 "Processor "} - set winx [expr [winfo x .menu1]+30]; set winy [expr [winfo y .menu1]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu3 {} { - global CONFIG_LEON3 - global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu3.config.f.x0 normal {n l y}} else {configure_entry .menu3.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu3.config.f.x1 normal {x l}} else {configure_entry .menu3.config.f.x1 disabled {x l}} - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} - global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu3.config.f.x3 normal {x l}} else {configure_entry .menu3.config.f.x3 disabled {x l}} - global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu3.config.f.x4 normal {n l y}} else {configure_entry .menu3.config.f.x4 disabled {y n l}} -} - - -proc update_define_menu3 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_2 - global CONFIG_FPU_GRFPU - if {$tmpvar_2 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} - global CONFIG_FPU_GRFPULITE - if {$tmpvar_2 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} - global CONFIG_FPU_MEIKO - if {$tmpvar_2 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_3 - global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_3 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} - global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_3 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} - global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_3 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} - global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_3 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_4 - global CONFIG_FPU_GRFPC0 - if {$tmpvar_4 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} - global CONFIG_FPU_GRFPC1 - if {$tmpvar_4 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} - global CONFIG_FPU_GRFPC2 - if {$tmpvar_4 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} - global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} -} - - -proc menu4 {w title} { - set oldFocus [focus] - catch {focus .menu1} - catch {destroy $w; unregister_active 4} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 4]] - message $w.m -width 400 -aspect 300 -text \ - "Cache system" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Cache system" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 4; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 4; menu5 .menu5 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 4" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 4; menu3 .menu3 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 4; menu3 .menu3 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 4 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_5 - minimenu $w.config.f 4 1 "Associativity (sets) " tmpvar_5 CONFIG_ICACHE_ASSO1 - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_5 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_5 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_5 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_5 -value "4" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_6 - minimenu $w.config.f 4 2 "Way size (kbytes/way)" tmpvar_6 CONFIG_ICACHE_SZ1 - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_6 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_6 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_6 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_6 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_6 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_6 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_6 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_6 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_6 -value "256" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_7 - minimenu $w.config.f 4 3 "Line size (bytes/line)" tmpvar_7 CONFIG_ICACHE_LZ16 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_7 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_7 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_8 - minimenu $w.config.f 4 4 "Replacement alorithm" tmpvar_8 CONFIG_ICACHE_ALGORND - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_8 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_8 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_8 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_8 -value "LRU" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 4 - bool $w.config.f 4 5 "Cache locking " CONFIG_ICACHE_LOCK - bool $w.config.f 4 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_9 - minimenu $w.config.f 4 7 "Local data RAM size (kbytes)" tmpvar_9 CONFIG_ICACHE_LRAM_SZ1 - menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" - menusplit $w $w.config.f.x7.x.menu 9 - hex $w.config.f 4 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART - bool $w.config.f 4 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_10 - minimenu $w.config.f 4 10 "Associativity (sets)" tmpvar_10 CONFIG_DCACHE_ASSO1 - menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_10 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" - menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_11 - minimenu $w.config.f 4 11 "Set size (kbytes/set)" tmpvar_11 CONFIG_DCACHE_SZ1 - menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_11 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_11 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_11 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_11 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_11 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_11 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_11 -value "256" -command "update_active" - menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_12 - minimenu $w.config.f 4 12 "Line size (bytes/line)" tmpvar_12 CONFIG_DCACHE_LZ16 - menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_13 - minimenu $w.config.f 4 13 "Replacement alorithm" tmpvar_13 CONFIG_DCACHE_ALGORND - menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_13 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_13 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_13 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_13 -value "LRU" -command "update_active" - menusplit $w $w.config.f.x13.x.menu 4 - bool $w.config.f 4 14 "Cache locking " CONFIG_DCACHE_LOCK - bool $w.config.f 4 15 "AHB snooping " CONFIG_DCACHE_SNOOP - bool $w.config.f 4 16 "Fast snooping " CONFIG_DCACHE_SNOOP_FAST - bool $w.config.f 4 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG - hex $w.config.f 4 18 "Fixed cacheability map " CONFIG_CACHE_FIXED - bool $w.config.f 4 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_14 - minimenu $w.config.f 4 20 "Local data RAM size (kbytes)" tmpvar_14 CONFIG_DCACHE_LRAM_SZ1 - menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" - menusplit $w $w.config.f.x20.x.menu 9 - hex $w.config.f 4 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu1] == 0} then {menu1 .menu1 "Processor "} - set winx [expr [winfo x .menu1]+30]; set winy [expr [winfo y .menu1]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu4 {} { - global CONFIG_LEON3 - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu4.config.f.x0 normal {n l y}} else {configure_entry .menu4.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu4.config.f.x1 normal {x l}} else {configure_entry .menu4.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu4.config.f.x3 normal {x l}} else {configure_entry .menu4.config.f.x3 disabled {x l}} - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} - global CONFIG_MMU_ENABLE - global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { - configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu4.config.f.x7 normal {x l}} else {configure_entry .menu4.config.f.x7 disabled {x l}} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu4.config.f.x9 normal {n l y}} else {configure_entry .menu4.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu4.config.f.x10 normal {x l}} else {configure_entry .menu4.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu4.config.f.x11 normal {x l}} else {configure_entry .menu4.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu4.config.f.x12 normal {x l}} else {configure_entry .menu4.config.f.x12 disabled {x l}} - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu4.config.f.x13 normal {x l}} else {configure_entry .menu4.config.f.x13 disabled {x l}} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - configure_entry .menu4.config.f.x14 normal {n l y}} else {configure_entry .menu4.config.f.x14 disabled {y n l}} - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - configure_entry .menu4.config.f.x15 normal {n l y}} else {configure_entry .menu4.config.f.x15 disabled {y n l}} - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { - configure_entry .menu4.config.f.x16 normal {n l y}} else {configure_entry .menu4.config.f.x16 disabled {y n l}} - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { - configure_entry .menu4.config.f.x17 normal {n l y}} else {configure_entry .menu4.config.f.x17 disabled {y n l}} - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu4.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x18.l configure -state normal; } else {.menu4.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x18.l configure -state disabled} - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { - configure_entry .menu4.config.f.x19 normal {n l y}} else {configure_entry .menu4.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu4.config.f.x20 normal {x l}} else {configure_entry .menu4.config.f.x20 disabled {x l}} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu4.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x21.l configure -state normal; } else {.menu4.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x21.l configure -state disabled} -} - - -proc update_define_menu4 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_5 - global CONFIG_ICACHE_ASSO1 - if {$tmpvar_5 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} - global CONFIG_ICACHE_ASSO2 - if {$tmpvar_5 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} - global CONFIG_ICACHE_ASSO3 - if {$tmpvar_5 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} - global CONFIG_ICACHE_ASSO4 - if {$tmpvar_5 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_6 - global CONFIG_ICACHE_SZ1 - if {$tmpvar_6 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} - global CONFIG_ICACHE_SZ2 - if {$tmpvar_6 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} - global CONFIG_ICACHE_SZ4 - if {$tmpvar_6 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} - global CONFIG_ICACHE_SZ8 - if {$tmpvar_6 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} - global CONFIG_ICACHE_SZ16 - if {$tmpvar_6 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} - global CONFIG_ICACHE_SZ32 - if {$tmpvar_6 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} - global CONFIG_ICACHE_SZ64 - if {$tmpvar_6 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} - global CONFIG_ICACHE_SZ128 - if {$tmpvar_6 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} - global CONFIG_ICACHE_SZ256 - if {$tmpvar_6 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_7 - global CONFIG_ICACHE_LZ16 - if {$tmpvar_7 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} - global CONFIG_ICACHE_LZ32 - if {$tmpvar_7 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_8 - global CONFIG_ICACHE_ALGORND - if {$tmpvar_8 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} - global CONFIG_ICACHE_ALGODIR - if {$tmpvar_8 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} - global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_8 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} - global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_8 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} - global CONFIG_MMU_ENABLE - global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { - set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_9 - global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} - global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} - global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} - global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} - global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} - global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} - global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} - global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} - global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_10 - global CONFIG_DCACHE_ASSO1 - if {$tmpvar_10 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} - global CONFIG_DCACHE_ASSO2 - if {$tmpvar_10 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} - global CONFIG_DCACHE_ASSO3 - if {$tmpvar_10 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} - global CONFIG_DCACHE_ASSO4 - if {$tmpvar_10 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_11 - global CONFIG_DCACHE_SZ1 - if {$tmpvar_11 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} - global CONFIG_DCACHE_SZ2 - if {$tmpvar_11 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} - global CONFIG_DCACHE_SZ4 - if {$tmpvar_11 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} - global CONFIG_DCACHE_SZ8 - if {$tmpvar_11 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} - global CONFIG_DCACHE_SZ16 - if {$tmpvar_11 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} - global CONFIG_DCACHE_SZ32 - if {$tmpvar_11 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} - global CONFIG_DCACHE_SZ64 - if {$tmpvar_11 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} - global CONFIG_DCACHE_SZ128 - if {$tmpvar_11 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} - global CONFIG_DCACHE_SZ256 - if {$tmpvar_11 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_12 - global CONFIG_DCACHE_LZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} - global CONFIG_DCACHE_LZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_13 - global CONFIG_DCACHE_ALGORND - if {$tmpvar_13 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} - global CONFIG_DCACHE_ALGODIR - if {$tmpvar_13 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} - global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_13 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} - global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_13 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { - set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { - set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { - set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_14 - global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} - global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} - global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} - global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} - global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} - global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} - global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} - global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} - global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} -} - - -proc menu5 {w title} { - set oldFocus [focus] - catch {focus .menu1} - catch {destroy $w; unregister_active 5} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 5]] - message $w.m -width 400 -aspect 300 -text \ - "MMU" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "MMU" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 5; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 5; menu6 .menu6 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 5" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 5; menu4 .menu4 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 5; menu4 .menu4 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 5 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_15 - minimenu $w.config.f 5 1 "MMU type " tmpvar_15 CONFIG_MMU_COMBINED - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_15 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_15 -value "split" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 5 2 "TLB replacement sheme " tmpvar_16 CONFIG_MMU_REPARRAY - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_16 -value "Increment" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_17 - minimenu $w.config.f 5 3 "Instruction (or combined) TLB entries" tmpvar_17 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 - global tmpvar_18 - minimenu $w.config.f 5 4 "Data TLB entries" tmpvar_18 CONFIG_MMU_D2 - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 - bool $w.config.f 5 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_19 - minimenu $w.config.f 5 6 "MMU page size" tmpvar_19 CONFIG_MMU_PAGE_4K - menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_19 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_19 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_19 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_19 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_19 -value "Programmable" -command "update_active" - menusplit $w $w.config.f.x6.x.menu 5 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu1] == 0} then {menu1 .menu1 "Processor "} - set winx [expr [winfo x .menu1]+30]; set winy [expr [winfo y .menu1]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu5 {} { - global CONFIG_LEON3 - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu5.config.f.x6 normal {x l}} else {configure_entry .menu5.config.f.x6 disabled {x l}} -} - - -proc update_define_menu5 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_15 - global CONFIG_MMU_COMBINED - if {$tmpvar_15 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} - global CONFIG_MMU_SPLIT - if {$tmpvar_15 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_16 - global CONFIG_MMU_REPARRAY - if {$tmpvar_16 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} - global CONFIG_MMU_REPINCREMENT - if {$tmpvar_16 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_17 - global CONFIG_MMU_I2 - if {$tmpvar_17 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} - global CONFIG_MMU_I4 - if {$tmpvar_17 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} - global CONFIG_MMU_I8 - if {$tmpvar_17 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} - global CONFIG_MMU_I16 - if {$tmpvar_17 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} - global CONFIG_MMU_I32 - if {$tmpvar_17 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_18 - global CONFIG_MMU_D2 - if {$tmpvar_18 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} - global CONFIG_MMU_D4 - if {$tmpvar_18 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} - global CONFIG_MMU_D8 - if {$tmpvar_18 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} - global CONFIG_MMU_D16 - if {$tmpvar_18 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} - global CONFIG_MMU_D32 - if {$tmpvar_18 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_19 - global CONFIG_MMU_PAGE_4K - if {$tmpvar_19 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} - global CONFIG_MMU_PAGE_8K - if {$tmpvar_19 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} - global CONFIG_MMU_PAGE_16K - if {$tmpvar_19 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} - global CONFIG_MMU_PAGE_32K - if {$tmpvar_19 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} - global CONFIG_MMU_PAGE_PROG - if {$tmpvar_19 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} -} - - -proc menu6 {w title} { - set oldFocus [focus] - catch {focus .menu1} - catch {destroy $w; unregister_active 6} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 6]] - message $w.m -width 400 -aspect 300 -text \ - "Debug Support Unit " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Debug Support Unit " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 6; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 6; menu7 .menu7 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 6" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 6; menu5 .menu5 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 6; menu5 .menu5 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 6 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE - bool $w.config.f 6 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_20 - minimenu $w.config.f 6 2 "Instruction trace buffer size (kbytes)" tmpvar_20 CONFIG_DSU_ITRACESZ1 - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_20 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 5 - bool $w.config.f 6 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_21 - minimenu $w.config.f 6 4 "AHB trace buffer size (kbytes)" tmpvar_21 CONFIG_DSU_ATRACESZ1 - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_21 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu1] == 0} then {menu1 .menu1 "Processor "} - set winx [expr [winfo x .menu1]+30]; set winy [expr [winfo y .menu1]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu6 {} { - global CONFIG_LEON3 - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { - configure_entry .menu6.config.f.x1 normal {n l y}} else {configure_entry .menu6.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { - configure_entry .menu6.config.f.x3 normal {n l y}} else {configure_entry .menu6.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} -} - - -proc update_define_menu6 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { - set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_20 - global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_20 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} - global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_20 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} - global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_20 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} - global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_20 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} - global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_20 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { - set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_21 - global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_21 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} - global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_21 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} - global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_21 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} - global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_21 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} - global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_21 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} -} - - -proc menu7 {w title} { - set oldFocus [focus] - catch {focus .menu1} - catch {destroy $w; unregister_active 7} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 7]] - message $w.m -width 400 -aspect 300 -text \ - "Fault-tolerance " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Fault-tolerance " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 7; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 7; menu8 .menu8 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 7" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 7; menu6 .menu6 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 7; menu6 .menu6 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 7 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_22 - minimenu $w.config.f 7 1 "IU Register file protection " tmpvar_22 CONFIG_IUFT_NONE - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_22 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_22 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_22 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_22 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_22 -value "TMR" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 7 2 "FPU Register file protection " CONFIG_FPUFT_EN - bool $w.config.f 7 3 "Register file error injection" CONFIG_RF_ERRINJ - bool $w.config.f 7 4 "Cache memory protection " CONFIG_CACHE_FT_EN - int $w.config.f 7 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ - bool $w.config.f 7 6 "Use LEON3FT netlist " CONFIG_LEON3_NETLIST - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu1] == 0} then {menu1 .menu1 "Processor "} - set winx [expr [winfo x .menu1]+30]; set winy [expr [winfo y .menu1]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu7 {} { - global CONFIG_LEON3 - global CONFIG_LEON3FT_EN - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu7.config.f.x2 normal {n l y}} else {configure_entry .menu7.config.f.x2 disabled {y n l}} - global CONFIG_RF_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - configure_entry .menu7.config.f.x3 normal {n l y}} else {configure_entry .menu7.config.f.x3 disabled {y n l}} - global CONFIG_CACHE_FT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - configure_entry .menu7.config.f.x4 normal {n l y}} else {configure_entry .menu7.config.f.x4 disabled {y n l}} - global CONFIG_CACHE_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {.menu7.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x5.l configure -state normal; } else {.menu7.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x5.l configure -state disabled} - global CONFIG_LEON3_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - configure_entry .menu7.config.f.x6 normal {n l y}} else {configure_entry .menu7.config.f.x6 disabled {y n l}} -} - - -proc update_define_menu7 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_LEON3FT_EN - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_22 - global CONFIG_IUFT_NONE - if {$tmpvar_22 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} - global CONFIG_IUFT_PAR - if {$tmpvar_22 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} - global CONFIG_IUFT_DMR - if {$tmpvar_22 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} - global CONFIG_IUFT_BCH - if {$tmpvar_22 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} - global CONFIG_IUFT_TMR - if {$tmpvar_22 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} - global CONFIG_RF_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} - global CONFIG_CACHE_FT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - set CONFIG_CACHE_FT_EN [expr $CONFIG_CACHE_FT_EN&15]} else {set CONFIG_CACHE_FT_EN [expr $CONFIG_CACHE_FT_EN|16]} - global CONFIG_CACHE_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {validate_int CONFIG_CACHE_ERRINJ "$CONFIG_CACHE_ERRINJ" 0} - global CONFIG_LEON3_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - set CONFIG_LEON3_NETLIST [expr $CONFIG_LEON3_NETLIST&15]} else {set CONFIG_LEON3_NETLIST [expr $CONFIG_LEON3_NETLIST|16]} -} - - -proc menu8 {w title} { - set oldFocus [focus] - catch {focus .menu1} - catch {destroy $w; unregister_active 8} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 8]] - message $w.m -width 400 -aspect 300 -text \ - "VHDL debug settings " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "VHDL debug settings " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 8; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 8; catch {destroy .menu1}; unregister_active 1; menu9 .menu9 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 8" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 8; menu7 .menu7 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 8; menu7 .menu7 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 8 0 "Processor disassembly to console " CONFIG_IU_DISAS - bool $w.config.f 8 1 "Processor disassembly in netlist " CONFIG_IU_DISAS_NET - bool $w.config.f 8 2 "32-bit program counters " CONFIG_DEBUG_PC32 - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu1] == 0} then {menu1 .menu1 "Processor "} - set winx [expr [winfo x .menu1]+30]; set winy [expr [winfo y .menu1]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu8 {} { - global CONFIG_LEON3 - global CONFIG_IU_DISAS - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} - global CONFIG_IU_DISAS_NET - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_DISAS == 1)} then { - configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - global CONFIG_DEBUG_PC32 - if {($CONFIG_LEON3 == 1)} then { - configure_entry .menu8.config.f.x2 normal {n l y}} else {configure_entry .menu8.config.f.x2 disabled {y n l}} -} - - -proc update_define_menu8 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_LEON3 - global CONFIG_IU_DISAS - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_IU_DISAS [expr $CONFIG_IU_DISAS&15]} else {set CONFIG_IU_DISAS [expr $CONFIG_IU_DISAS|16]} - global CONFIG_IU_DISAS_NET - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_DISAS == 1)} then { - set CONFIG_IU_DISAS_NET [expr $CONFIG_IU_DISAS_NET&15]} else {set CONFIG_IU_DISAS_NET [expr $CONFIG_IU_DISAS_NET|16]} - global CONFIG_DEBUG_PC32 - if {($CONFIG_LEON3 == 1)} then { - set CONFIG_DEBUG_PC32 [expr $CONFIG_DEBUG_PC32&15]} else {set CONFIG_DEBUG_PC32 [expr $CONFIG_DEBUG_PC32|16]} -} - - -menu_option menu9 9 "On-chip RAM" -proc menu9 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 9} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 9]] - message $w.m -width 400 -aspect 300 -text \ - "On-chip RAM" -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "On-chip RAM" - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 9; break" - set nextscript "catch {focus $oldFocus}; menu10 .menu10 \"$title\"" - frame $w.f - button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 9" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - $w.f.next configure -state disabled - bind all "puts \"no more menus\" " - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 9; menu8 .menu8 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 9; menu8 .menu8 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 9 0 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_23 - minimenu $w.config.f 9 1 "AHB RAM size (Kbyte)" tmpvar_23 CONFIG_AHBRAM_SZ1 - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_23 -value "32" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "64" -variable tmpvar_23 -value "64" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 7 - hex $w.config.f 9 2 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START - - - - focus $w - update_active - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu9 {} { - global CONFIG_AHBRAM_ENABLE - if {($CONFIG_AHBRAM_ENABLE == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} - global CONFIG_AHBRAM_START - if {($CONFIG_AHBRAM_ENABLE == 1)} then {.menu9.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu9.config.f.x2.l configure -state normal; } else {.menu9.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu9.config.f.x2.l configure -state disabled} -} - - -proc update_define_menu9 {} { - update_define_mainmenu - global CONFIG_MODULES - global tmpvar_23 - global CONFIG_AHBRAM_SZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} - global CONFIG_AHBRAM_SZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} - global CONFIG_AHBRAM_SZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} - global CONFIG_AHBRAM_SZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} - global CONFIG_AHBRAM_SZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} - global CONFIG_AHBRAM_SZ32 - if {$tmpvar_23 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} - global CONFIG_AHBRAM_SZ64 - if {$tmpvar_23 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} - global CONFIG_AHBRAM_ENABLE - global CONFIG_AHBRAM_START - if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} -} - - -proc update_mainmenu {} { -} - - -set CONFIG_LEON3 0 -set CONFIG_PROC_NUM 1 -set CONFIG_IU_NWINDOWS 8 -set CONFIG_IU_V8MULDIV 0 -set tmpvar_0 "(not set)" -set CONFIG_IU_MUL_LATENCY_2 0 -set CONFIG_IU_MUL_LATENCY_4 0 -set CONFIG_IU_MUL_LATENCY_5 0 -set CONFIG_IU_MUL_MAC 0 -set tmpvar_1 "(not set)" -set CONFIG_IU_MUL_INFERRED 0 -set CONFIG_IU_MUL_MODGEN 0 -set CONFIG_IU_MUL_TECHSPEC 0 -set CONFIG_IU_MUL_DW 0 -set CONFIG_IU_BP 0 -set CONFIG_IU_SVT 0 -set CONFIG_NOTAG 0 -set CONFIG_IU_LDELAY 1 -set CONFIG_IU_WATCHPOINTS 0 -set CONFIG_PWD 0 -set CONFIG_IU_RSTADDR 00000 -set CONFIG_FPU_ENABLE 0 -set tmpvar_2 "(not set)" -set CONFIG_FPU_GRFPU 0 -set CONFIG_FPU_GRFPULITE 0 -set CONFIG_FPU_MEIKO 0 -set tmpvar_3 "(not set)" -set CONFIG_FPU_GRFPU_INFMUL 0 -set CONFIG_FPU_GRFPU_DWMUL 0 -set CONFIG_FPU_GRFPU_MODGEN 0 -set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_4 "(not set)" -set CONFIG_FPU_GRFPC0 0 -set CONFIG_FPU_GRFPC1 0 -set CONFIG_FPU_GRFPC2 0 -set CONFIG_FPU_NETLIST 0 -set CONFIG_ICACHE_ENABLE 0 -set tmpvar_5 "(not set)" -set CONFIG_ICACHE_ASSO1 0 -set CONFIG_ICACHE_ASSO2 0 -set CONFIG_ICACHE_ASSO3 0 -set CONFIG_ICACHE_ASSO4 0 -set tmpvar_6 "(not set)" -set CONFIG_ICACHE_SZ1 0 -set CONFIG_ICACHE_SZ2 0 -set CONFIG_ICACHE_SZ4 0 -set CONFIG_ICACHE_SZ8 0 -set CONFIG_ICACHE_SZ16 0 -set CONFIG_ICACHE_SZ32 0 -set CONFIG_ICACHE_SZ64 0 -set CONFIG_ICACHE_SZ128 0 -set CONFIG_ICACHE_SZ256 0 -set tmpvar_7 "(not set)" -set CONFIG_ICACHE_LZ16 0 -set CONFIG_ICACHE_LZ32 0 -set tmpvar_8 "(not set)" -set CONFIG_ICACHE_ALGORND 0 -set CONFIG_ICACHE_ALGODIR 0 -set CONFIG_ICACHE_ALGOLRR 0 -set CONFIG_ICACHE_ALGOLRU 0 -set CONFIG_ICACHE_LOCK 0 -set CONFIG_ICACHE_LRAM 0 -set tmpvar_9 "(not set)" -set CONFIG_ICACHE_LRAM_SZ1 0 -set CONFIG_ICACHE_LRAM_SZ2 0 -set CONFIG_ICACHE_LRAM_SZ4 0 -set CONFIG_ICACHE_LRAM_SZ8 0 -set CONFIG_ICACHE_LRAM_SZ16 0 -set CONFIG_ICACHE_LRAM_SZ32 0 -set CONFIG_ICACHE_LRAM_SZ64 0 -set CONFIG_ICACHE_LRAM_SZ128 0 -set CONFIG_ICACHE_LRAM_SZ256 0 -set CONFIG_ICACHE_LRSTART 8e -set CONFIG_DCACHE_ENABLE 0 -set tmpvar_10 "(not set)" -set CONFIG_DCACHE_ASSO1 0 -set CONFIG_DCACHE_ASSO2 0 -set CONFIG_DCACHE_ASSO3 0 -set CONFIG_DCACHE_ASSO4 0 -set tmpvar_11 "(not set)" -set CONFIG_DCACHE_SZ1 0 -set CONFIG_DCACHE_SZ2 0 -set CONFIG_DCACHE_SZ4 0 -set CONFIG_DCACHE_SZ8 0 -set CONFIG_DCACHE_SZ16 0 -set CONFIG_DCACHE_SZ32 0 -set CONFIG_DCACHE_SZ64 0 -set CONFIG_DCACHE_SZ128 0 -set CONFIG_DCACHE_SZ256 0 -set tmpvar_12 "(not set)" -set CONFIG_DCACHE_LZ16 0 -set CONFIG_DCACHE_LZ32 0 -set tmpvar_13 "(not set)" -set CONFIG_DCACHE_ALGORND 0 -set CONFIG_DCACHE_ALGODIR 0 -set CONFIG_DCACHE_ALGOLRR 0 -set CONFIG_DCACHE_ALGOLRU 0 -set CONFIG_DCACHE_LOCK 0 -set CONFIG_DCACHE_SNOOP 0 -set CONFIG_DCACHE_SNOOP_FAST 0 -set CONFIG_DCACHE_SNOOP_SEPTAG 0 -set CONFIG_CACHE_FIXED 0 -set CONFIG_DCACHE_LRAM 0 -set tmpvar_14 "(not set)" -set CONFIG_DCACHE_LRAM_SZ1 0 -set CONFIG_DCACHE_LRAM_SZ2 0 -set CONFIG_DCACHE_LRAM_SZ4 0 -set CONFIG_DCACHE_LRAM_SZ8 0 -set CONFIG_DCACHE_LRAM_SZ16 0 -set CONFIG_DCACHE_LRAM_SZ32 0 -set CONFIG_DCACHE_LRAM_SZ64 0 -set CONFIG_DCACHE_LRAM_SZ128 0 -set CONFIG_DCACHE_LRAM_SZ256 0 -set CONFIG_DCACHE_LRSTART 8f -set CONFIG_MMU_ENABLE 0 -set tmpvar_15 "(not set)" -set CONFIG_MMU_COMBINED 0 -set CONFIG_MMU_SPLIT 0 -set tmpvar_16 "(not set)" -set CONFIG_MMU_REPARRAY 0 -set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_17 "(not set)" -set CONFIG_MMU_I2 0 -set CONFIG_MMU_I4 0 -set CONFIG_MMU_I8 0 -set CONFIG_MMU_I16 0 -set CONFIG_MMU_I32 0 -set tmpvar_18 "(not set)" -set CONFIG_MMU_D2 0 -set CONFIG_MMU_D4 0 -set CONFIG_MMU_D8 0 -set CONFIG_MMU_D16 0 -set CONFIG_MMU_D32 0 -set CONFIG_MMU_FASTWB 0 -set tmpvar_19 "(not set)" -set CONFIG_MMU_PAGE_4K 0 -set CONFIG_MMU_PAGE_8K 0 -set CONFIG_MMU_PAGE_16K 0 -set CONFIG_MMU_PAGE_32K 0 -set CONFIG_MMU_PAGE_PROG 0 -set CONFIG_DSU_ENABLE 0 -set CONFIG_DSU_ITRACE 0 -set tmpvar_20 "(not set)" -set CONFIG_DSU_ITRACESZ1 0 -set CONFIG_DSU_ITRACESZ2 0 -set CONFIG_DSU_ITRACESZ4 0 -set CONFIG_DSU_ITRACESZ8 0 -set CONFIG_DSU_ITRACESZ16 0 -set CONFIG_DSU_ATRACE 0 -set tmpvar_21 "(not set)" -set CONFIG_DSU_ATRACESZ1 0 -set CONFIG_DSU_ATRACESZ2 0 -set CONFIG_DSU_ATRACESZ4 0 -set CONFIG_DSU_ATRACESZ8 0 -set CONFIG_DSU_ATRACESZ16 0 -set CONFIG_LEON3FT_EN 0 -set tmpvar_22 "(not set)" -set CONFIG_IUFT_NONE 0 -set CONFIG_IUFT_PAR 0 -set CONFIG_IUFT_DMR 0 -set CONFIG_IUFT_BCH 0 -set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 -set CONFIG_RF_ERRINJ 0 -set CONFIG_CACHE_FT_EN 0 -set CONFIG_CACHE_ERRINJ 0 -set CONFIG_LEON3_NETLIST 0 -set CONFIG_IU_DISAS 0 -set CONFIG_IU_DISAS_NET 0 -set CONFIG_DEBUG_PC32 0 -set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_23 "(not set)" -set CONFIG_AHBRAM_SZ1 0 -set CONFIG_AHBRAM_SZ2 0 -set CONFIG_AHBRAM_SZ4 0 -set CONFIG_AHBRAM_SZ8 0 -set CONFIG_AHBRAM_SZ16 0 -set CONFIG_AHBRAM_SZ32 0 -set CONFIG_AHBRAM_SZ64 0 -set CONFIG_AHBRAM_START A00 -set CONFIG_HAS_SHARED_GRFPU 4 -set CONFIG_FPU_GRFPU_SH 4 -set CONFIG_MODULES 4 -proc writeconfig {file1 file2} { - set cfg [open $file1 w] - set autocfg [open $file2 w] - set notmod 1 - set notset 0 - puts $cfg "#" - puts $cfg "# Automatically generated make config: don't edit" - puts $cfg "#" - puts $autocfg "/*" - puts $autocfg " * Automatically generated C config: don't edit" - puts $autocfg " */" - puts $autocfg "#define AUTOCONF_INCLUDED" - global CONFIG_LEON3 - write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 - global CONFIG_PROC_NUM - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} - global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } - global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_0 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_0 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_0 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_0 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_1 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_1 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_1 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_1 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} - global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } - global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } - global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } - global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } - global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } - global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } - global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} - global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } - global tmpvar_2 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_2 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_2 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_2 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} - global tmpvar_3 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_3 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_3 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_3 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_3 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global tmpvar_4 - global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_4 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_4 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_4 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} - global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_5 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_5 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_5 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_5 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} - global tmpvar_6 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_6 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_6 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_6 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_6 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_6 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_6 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_6 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_6 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_6 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} - global tmpvar_7 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_7 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_7 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} - global tmpvar_8 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_8 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_8 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_8 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_8 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } - global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } - global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_10 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} - global tmpvar_11 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_11 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_11 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_11 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_11 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_11 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_11 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_11 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} - global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} - global tmpvar_13 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_13 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_13 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_13 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_13 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } - global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } - global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_15 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_15 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} - global tmpvar_16 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_16 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} - global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} - global tmpvar_18 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } - global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_19 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_19 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_19 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_19 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } - global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_20 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } - global tmpvar_21 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_21 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} - global CONFIG_LEON3FT_EN - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_22 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_22 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_22 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_22 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_22 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } - global CONFIG_RF_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } - global CONFIG_CACHE_FT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_CACHE_FT_EN $CONFIG_CACHE_FT_EN [list $notmod] 2 } - global CONFIG_CACHE_ERRINJ - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_int $cfg $autocfg CONFIG_CACHE_ERRINJ $CONFIG_CACHE_ERRINJ $notmod } - global CONFIG_LEON3_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3_NETLIST $CONFIG_LEON3_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "VHDL debug settings "} - global CONFIG_IU_DISAS - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_DISAS $CONFIG_IU_DISAS [list $notmod] 2 } - global CONFIG_IU_DISAS_NET - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_DISAS == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_DISAS_NET $CONFIG_IU_DISAS_NET [list $notmod] 2 } - global CONFIG_DEBUG_PC32 - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DEBUG_PC32 $CONFIG_DEBUG_PC32 [list $notmod] 2 } - write_comment $cfg $autocfg "On-chip RAM" - global CONFIG_AHBRAM_ENABLE - write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_23 - if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_23 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_23 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} - global CONFIG_AHBRAM_START - if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } - close $cfg - close $autocfg -} - - -proc clear_choices { } { - global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 - global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 - global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 - global CONFIG_IU_MUL_INFERRED; set CONFIG_IU_MUL_INFERRED 0 - global CONFIG_IU_MUL_MODGEN; set CONFIG_IU_MUL_MODGEN 0 - global CONFIG_IU_MUL_TECHSPEC; set CONFIG_IU_MUL_TECHSPEC 0 - global CONFIG_IU_MUL_DW; set CONFIG_IU_MUL_DW 0 - global CONFIG_FPU_GRFPU; set CONFIG_FPU_GRFPU 0 - global CONFIG_FPU_GRFPULITE; set CONFIG_FPU_GRFPULITE 0 - global CONFIG_FPU_MEIKO; set CONFIG_FPU_MEIKO 0 - global CONFIG_FPU_GRFPU_INFMUL; set CONFIG_FPU_GRFPU_INFMUL 0 - global CONFIG_FPU_GRFPU_DWMUL; set CONFIG_FPU_GRFPU_DWMUL 0 - global CONFIG_FPU_GRFPU_MODGEN; set CONFIG_FPU_GRFPU_MODGEN 0 - global CONFIG_FPU_GRFPU_TECHSPEC; set CONFIG_FPU_GRFPU_TECHSPEC 0 - global CONFIG_FPU_GRFPC0; set CONFIG_FPU_GRFPC0 0 - global CONFIG_FPU_GRFPC1; set CONFIG_FPU_GRFPC1 0 - global CONFIG_FPU_GRFPC2; set CONFIG_FPU_GRFPC2 0 - global CONFIG_ICACHE_ASSO1; set CONFIG_ICACHE_ASSO1 0 - global CONFIG_ICACHE_ASSO2; set CONFIG_ICACHE_ASSO2 0 - global CONFIG_ICACHE_ASSO3; set CONFIG_ICACHE_ASSO3 0 - global CONFIG_ICACHE_ASSO4; set CONFIG_ICACHE_ASSO4 0 - global CONFIG_ICACHE_SZ1; set CONFIG_ICACHE_SZ1 0 - global CONFIG_ICACHE_SZ2; set CONFIG_ICACHE_SZ2 0 - global CONFIG_ICACHE_SZ4; set CONFIG_ICACHE_SZ4 0 - global CONFIG_ICACHE_SZ8; set CONFIG_ICACHE_SZ8 0 - global CONFIG_ICACHE_SZ16; set CONFIG_ICACHE_SZ16 0 - global CONFIG_ICACHE_SZ32; set CONFIG_ICACHE_SZ32 0 - global CONFIG_ICACHE_SZ64; set CONFIG_ICACHE_SZ64 0 - global CONFIG_ICACHE_SZ128; set CONFIG_ICACHE_SZ128 0 - global CONFIG_ICACHE_SZ256; set CONFIG_ICACHE_SZ256 0 - global CONFIG_ICACHE_LZ16; set CONFIG_ICACHE_LZ16 0 - global CONFIG_ICACHE_LZ32; set CONFIG_ICACHE_LZ32 0 - global CONFIG_ICACHE_ALGORND; set CONFIG_ICACHE_ALGORND 0 - global CONFIG_ICACHE_ALGODIR; set CONFIG_ICACHE_ALGODIR 0 - global CONFIG_ICACHE_ALGOLRR; set CONFIG_ICACHE_ALGOLRR 0 - global CONFIG_ICACHE_ALGOLRU; set CONFIG_ICACHE_ALGOLRU 0 - global CONFIG_ICACHE_LRAM_SZ1; set CONFIG_ICACHE_LRAM_SZ1 0 - global CONFIG_ICACHE_LRAM_SZ2; set CONFIG_ICACHE_LRAM_SZ2 0 - global CONFIG_ICACHE_LRAM_SZ4; set CONFIG_ICACHE_LRAM_SZ4 0 - global CONFIG_ICACHE_LRAM_SZ8; set CONFIG_ICACHE_LRAM_SZ8 0 - global CONFIG_ICACHE_LRAM_SZ16; set CONFIG_ICACHE_LRAM_SZ16 0 - global CONFIG_ICACHE_LRAM_SZ32; set CONFIG_ICACHE_LRAM_SZ32 0 - global CONFIG_ICACHE_LRAM_SZ64; set CONFIG_ICACHE_LRAM_SZ64 0 - global CONFIG_ICACHE_LRAM_SZ128; set CONFIG_ICACHE_LRAM_SZ128 0 - global CONFIG_ICACHE_LRAM_SZ256; set CONFIG_ICACHE_LRAM_SZ256 0 - global CONFIG_DCACHE_ASSO1; set CONFIG_DCACHE_ASSO1 0 - global CONFIG_DCACHE_ASSO2; set CONFIG_DCACHE_ASSO2 0 - global CONFIG_DCACHE_ASSO3; set CONFIG_DCACHE_ASSO3 0 - global CONFIG_DCACHE_ASSO4; set CONFIG_DCACHE_ASSO4 0 - global CONFIG_DCACHE_SZ1; set CONFIG_DCACHE_SZ1 0 - global CONFIG_DCACHE_SZ2; set CONFIG_DCACHE_SZ2 0 - global CONFIG_DCACHE_SZ4; set CONFIG_DCACHE_SZ4 0 - global CONFIG_DCACHE_SZ8; set CONFIG_DCACHE_SZ8 0 - global CONFIG_DCACHE_SZ16; set CONFIG_DCACHE_SZ16 0 - global CONFIG_DCACHE_SZ32; set CONFIG_DCACHE_SZ32 0 - global CONFIG_DCACHE_SZ64; set CONFIG_DCACHE_SZ64 0 - global CONFIG_DCACHE_SZ128; set CONFIG_DCACHE_SZ128 0 - global CONFIG_DCACHE_SZ256; set CONFIG_DCACHE_SZ256 0 - global CONFIG_DCACHE_LZ16; set CONFIG_DCACHE_LZ16 0 - global CONFIG_DCACHE_LZ32; set CONFIG_DCACHE_LZ32 0 - global CONFIG_DCACHE_ALGORND; set CONFIG_DCACHE_ALGORND 0 - global CONFIG_DCACHE_ALGODIR; set CONFIG_DCACHE_ALGODIR 0 - global CONFIG_DCACHE_ALGOLRR; set CONFIG_DCACHE_ALGOLRR 0 - global CONFIG_DCACHE_ALGOLRU; set CONFIG_DCACHE_ALGOLRU 0 - global CONFIG_DCACHE_LRAM_SZ1; set CONFIG_DCACHE_LRAM_SZ1 0 - global CONFIG_DCACHE_LRAM_SZ2; set CONFIG_DCACHE_LRAM_SZ2 0 - global CONFIG_DCACHE_LRAM_SZ4; set CONFIG_DCACHE_LRAM_SZ4 0 - global CONFIG_DCACHE_LRAM_SZ8; set CONFIG_DCACHE_LRAM_SZ8 0 - global CONFIG_DCACHE_LRAM_SZ16; set CONFIG_DCACHE_LRAM_SZ16 0 - global CONFIG_DCACHE_LRAM_SZ32; set CONFIG_DCACHE_LRAM_SZ32 0 - global CONFIG_DCACHE_LRAM_SZ64; set CONFIG_DCACHE_LRAM_SZ64 0 - global CONFIG_DCACHE_LRAM_SZ128; set CONFIG_DCACHE_LRAM_SZ128 0 - global CONFIG_DCACHE_LRAM_SZ256; set CONFIG_DCACHE_LRAM_SZ256 0 - global CONFIG_MMU_COMBINED; set CONFIG_MMU_COMBINED 0 - global CONFIG_MMU_SPLIT; set CONFIG_MMU_SPLIT 0 - global CONFIG_MMU_REPARRAY; set CONFIG_MMU_REPARRAY 0 - global CONFIG_MMU_REPINCREMENT; set CONFIG_MMU_REPINCREMENT 0 - global CONFIG_MMU_I2; set CONFIG_MMU_I2 0 - global CONFIG_MMU_I4; set CONFIG_MMU_I4 0 - global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 - global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 - global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 - global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 - global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 - global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 - global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 - global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 - global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 - global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 - global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 - global CONFIG_MMU_PAGE_32K; set CONFIG_MMU_PAGE_32K 0 - global CONFIG_MMU_PAGE_PROG; set CONFIG_MMU_PAGE_PROG 0 - global CONFIG_DSU_ITRACESZ1; set CONFIG_DSU_ITRACESZ1 0 - global CONFIG_DSU_ITRACESZ2; set CONFIG_DSU_ITRACESZ2 0 - global CONFIG_DSU_ITRACESZ4; set CONFIG_DSU_ITRACESZ4 0 - global CONFIG_DSU_ITRACESZ8; set CONFIG_DSU_ITRACESZ8 0 - global CONFIG_DSU_ITRACESZ16; set CONFIG_DSU_ITRACESZ16 0 - global CONFIG_DSU_ATRACESZ1; set CONFIG_DSU_ATRACESZ1 0 - global CONFIG_DSU_ATRACESZ2; set CONFIG_DSU_ATRACESZ2 0 - global CONFIG_DSU_ATRACESZ4; set CONFIG_DSU_ATRACESZ4 0 - global CONFIG_DSU_ATRACESZ8; set CONFIG_DSU_ATRACESZ8 0 - global CONFIG_DSU_ATRACESZ16; set CONFIG_DSU_ATRACESZ16 0 - global CONFIG_IUFT_NONE; set CONFIG_IUFT_NONE 0 - global CONFIG_IUFT_PAR; set CONFIG_IUFT_PAR 0 - global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 - global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 - global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 - global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 - global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0 - global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0 - global CONFIG_AHBRAM_SZ8; set CONFIG_AHBRAM_SZ8 0 - global CONFIG_AHBRAM_SZ16; set CONFIG_AHBRAM_SZ16 0 - global CONFIG_AHBRAM_SZ32; set CONFIG_AHBRAM_SZ32 0 - global CONFIG_AHBRAM_SZ64; set CONFIG_AHBRAM_SZ64 0 -} - - -proc update_choices { } { - global tmpvar_0 - set tmpvar_0 "5-cycles" - global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_0 "2-cycles" } - global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_0 "4-cycles" } - global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_0 "5-cycles" } - global tmpvar_1 - set tmpvar_1 "Inferred" - global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_1 "Inferred" } - global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_1 "NTNU_Modgen" } - global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_1 "TechSpec" } - global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_1 "Designware" } - global tmpvar_2 - set tmpvar_2 "GRFPU" - global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_2 "GRFPU" } - global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_2 "GRFPU-LITE" } - global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_2 "Meiko" } - global tmpvar_3 - set tmpvar_3 "Inferred" - global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_3 "Inferred" } - global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_3 "DW" } - global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_3 "ModGen" } - global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_3 "TechSpec" } - global tmpvar_4 - set tmpvar_4 "Simple" - global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_4 "Simple" } - global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_4 "Data-forwarding" } - global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_4 "Non-blocking" } - global tmpvar_5 - set tmpvar_5 "1" - global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_5 "1" } - global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_5 "2" } - global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_5 "3" } - global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_5 "4" } - global tmpvar_6 - set tmpvar_6 "4" - global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_6 "1" } - global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_6 "2" } - global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_6 "4" } - global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_6 "8" } - global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_6 "16" } - global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_6 "32" } - global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_6 "64" } - global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_6 "128" } - global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_6 "256" } - global tmpvar_7 - set tmpvar_7 "32" - global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_7 "16" } - global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_7 "32" } - global tmpvar_8 - set tmpvar_8 "Random" - global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_8 "Random" } - global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_8 "Direct" } - global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_8 "LRR" } - global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_8 "LRU" } - global tmpvar_9 - set tmpvar_9 "4" - global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_9 "1" } - global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_9 "2" } - global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_9 "4" } - global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_9 "8" } - global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_9 "16" } - global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_9 "32" } - global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_9 "64" } - global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_9 "128" } - global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "1" - global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_10 "1" } - global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_10 "2" } - global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_10 "3" } - global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_10 "4" } - global tmpvar_11 - set tmpvar_11 "4" - global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_11 "1" } - global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_11 "2" } - global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_11 "4" } - global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_11 "8" } - global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_11 "16" } - global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_11 "32" } - global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_11 "64" } - global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_11 "128" } - global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_11 "256" } - global tmpvar_12 - set tmpvar_12 "32" - global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_12 "16" } - global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_12 "32" } - global tmpvar_13 - set tmpvar_13 "Random" - global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_13 "Random" } - global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_13 "Direct" } - global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_13 "LRR" } - global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_13 "LRU" } - global tmpvar_14 - set tmpvar_14 "4" - global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_14 "1" } - global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_14 "2" } - global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_14 "4" } - global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_14 "8" } - global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_14 "16" } - global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_14 "32" } - global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_14 "64" } - global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_14 "128" } - global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "combined" - global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_15 "combined" } - global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_15 "split" } - global tmpvar_16 - set tmpvar_16 "Increment" - global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_16 "LRU" } - global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_16 "Increment" } - global tmpvar_17 - set tmpvar_17 "8" - global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_17 "2" } - global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_17 "4" } - global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_17 "8" } - global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_17 "16" } - global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_17 "32" } - global tmpvar_18 - set tmpvar_18 "8" - global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_18 "2" } - global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_18 "4" } - global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_18 "8" } - global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_18 "16" } - global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_18 "32" } - global tmpvar_19 - set tmpvar_19 "4K" - global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_19 "4K" } - global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_19 "8K" } - global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_19 "16K" } - global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_19 "32K" } - global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_19 "Programmable" } - global tmpvar_20 - set tmpvar_20 "1" - global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_20 "1" } - global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_20 "2" } - global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_20 "4" } - global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_20 "8" } - global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_20 "16" } - global tmpvar_21 - set tmpvar_21 "1" - global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_21 "1" } - global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_21 "2" } - global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_21 "4" } - global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_21 "8" } - global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_21 "16" } - global tmpvar_22 - set tmpvar_22 "None" - global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_22 "None" } - global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_22 "Parity" } - global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_22 "PDMR" } - global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_22 "BCH" } - global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_22 "TMR" } - global tmpvar_23 - set tmpvar_23 "4" - global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_23 "1" } - global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_23 "2" } - global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_23 "4" } - global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_23 "8" } - global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_23 "16" } - global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_23 "32" } - global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_23 "64" } -} - - -proc update_define_mainmenu {} { - global CONFIG_MODULES -} - - -# FILE: tail.tk -# This file is boilerplate TCL/TK function definitions for 'make xconfig'. -# -# CHANGES -# ======= -# -# 8 January 1998, Michael Elizabeth Chastain, -# Arrange buttons in three columns for better screen fitting. -# - -# -# Read the user's settings from .config. These will override whatever is -# in config.in. Don't do this if the user specified a -D to force -# the defaults. -# - -set defaults defconfig - -if { [file readable .config] == 1} then { - if { $argc > 0 } then { - if { [lindex $argv 0] != "-D" } then { - read_config .config - } - else - { - read_config $defaults - } - } else { - read_config .config - } -} else { - read_config $defaults -} - -update_define 1 $total_menus 0 -update_mainmenu - -button .f0.right.save -anchor w -text "Save and Exit" -underline 0\ - -command { catch {exec cp -f .config .config.old}; \ - writeconfig .config config.h; wrapup .wrap } - -button .f0.right.quit -anchor w -text "Quit Without Saving" -underline 0\ - -command { maybe_exit .maybe } - -button .f0.right.load -anchor w -text "Load Configuration from File" \ - -command { load_configfile .load "Load Configuration from file" read_config_file -} - -button .f0.right.store -anchor w -text "Store Configuration to File" \ - -command { load_configfile .load "Store Configuration to file" write_config_file } - -# -# Now pack everything. -# - -pack .f0.right.store .f0.right.load .f0.right.quit .f0.right.save \ - -padx 0 -pady 0 -side bottom -fill x -pack .f0.left .f0.middle .f0.right -side left -padx 5 -pady 0 -fill y -pack .f0 -padx 5 -pady 5 - -update idletasks -set winy [expr 10 + [winfo reqheight .f0]] -set scry [lindex [wm maxsize .] 1] -set winx [expr 10 + [winfo reqwidth .f0]] -set scrx [lindex [wm maxsize .] 0] -if {$winx < $scrx} then {set maxx -1} else {set maxx $winx} -if {$winy < $scry} then {set maxy -1} else {set maxy $winy} -.f0 configure -width $winx -height $winy -wm maxsize . $maxx $maxy - -# -# If we cannot write our config files, disable the write button. -# -if { [file exists .config] == 1 } then { - if { [file writable .config] == 0 } then { - .f0.right.save configure -state disabled - } - } else { - if { [file writable .] == 0 } then { - .f0.right.save configure -state disabled - } - } - -#if { [file exists include/linux/autoconf.h] == 1 } then { -# if { [file writable include/linux/autoconf.h] == 0 } then { -# .f0.right.save configure -state disabled -# } -# } else { -# if { [file writable include/linux/] == 0 } then { -# .f0.right.save configure -state disabled -# } -# } diff --git a/designs/leon3-wildcard-xcv300e/pe_arch.vhd b/designs/leon3-wildcard-xcv300e/pe_arch.vhd deleted file mode 100644 index 54e3a1d6..00000000 --- a/designs/leon3-wildcard-xcv300e/pe_arch.vhd +++ /dev/null @@ -1,173 +0,0 @@ ------------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---============================================================================-- --- Design unit : PE architecture (architecture declarations) --- --- File name : pe_arch.vhd --- --- Purpose : Wrapper for simulation --- --- Library : PE_Lib --- --- Authors : Aeroflex Gaisler AB --- --- Contact : mailto:support@gaisler.com --- http://www.gaisler.com --- --- Disclaimer : All information is provided "as is", there is no warranty that --- the information is correct or suitable for any purpose, --- neither implicit nor explicit. ---============================================================================-- - ---============================== Architecture ================================-- - -library IEEE; -use IEEE.Std_Logic_1164.all; - -library PE_Lib; -use PE_Lib.PE_Package.all; - -architecture Wrapper of PE is - - component WildFpga is - port ( - Clocks_F_Clk: in std_logic; - Clocks_M_Clk: in std_logic; - Clocks_P_Clk: in std_logic; - Clocks_K_Clk: in std_logic; - Clocks_IO_Clk: in std_logic; - - Clocks_M_Clk_Out_PE: out std_logic; - Clocks_M_Clk_Out_CB_Ctrl: out std_logic; - Clocks_M_Clk_Out_Right_Mem: out std_logic; - Clocks_M_Clk_Out_Left_Mem: out std_logic; - Clocks_P_Clk_Out_PE: out std_logic; - Clocks_P_Clk_Out_CB_Ctrl: out std_logic; - - Reset_Reset: in std_logic; - Audio_Audio: out std_logic; - - LAD_Bus_Addr_Data: inout std_logic_vector (31 downto 0); - LAD_Bus_AS_n: in std_logic; - LAD_Bus_DS_n: in std_logic; - LAD_Bus_WR_n: in std_logic; - LAD_Bus_CS_n: in std_logic; - LAD_Bus_Reg_n: in std_logic; - LAD_Bus_Ack_n: out std_logic; - LAD_Bus_Int_Req_n: out std_logic; - LAD_Bus_DMA_0_Data_OK_n: out std_logic; - LAD_Bus_DMA_0_Burst_OK: out std_logic; - LAD_Bus_DMA_1_Data_OK_n: out std_logic; - LAD_Bus_DMA_1_Burst_OK: out std_logic; - LAD_Bus_Reg_Data_OK_n: out std_logic; - LAD_Bus_Reg_Burst_OK: out std_logic; - LAD_Bus_Force_K_Clk_n: out std_logic; - LAD_Bus_Reserved: out std_logic; - - Left_Mem_Addr: out std_logic_vector (18 downto 0); - Left_Mem_Data: inout std_logic_vector (35 downto 0); - Left_Mem_Byte_WR_n: out std_logic_vector (3 downto 0); - Left_Mem_CS_n: out std_logic; - Left_Mem_CE_n: out std_logic; - Left_Mem_WE_n: out std_logic; - Left_Mem_OE_n: out std_logic; - Left_Mem_Sleep_EN: out std_logic; - Left_Mem_Load_EN_n: out std_logic; - Left_Mem_Burst_Mode: out std_logic; - - Right_Mem_Addr: out std_logic_vector (18 downto 0); - Right_Mem_Data: inout std_logic_vector (35 downto 0); - Right_Mem_Byte_WR_n: out std_logic_vector (3 downto 0); - Right_Mem_CS_n: out std_logic; - Right_Mem_CE_n: out std_logic; - Right_Mem_WE_n: out std_logic; - Right_Mem_OE_n: out std_logic; - Right_Mem_Sleep_EN: out std_logic; - Right_Mem_Load_EN_n: out std_logic; - Right_Mem_Burst_Mode: out std_logic; - - Left_IO: inout std_logic_vector (12 downto 0); - Right_IO: inout std_logic_vector (12 downto 0)); - end component; - - signal Clocks_M_Clk_Out_Right_Del: std_logic; - signal Clocks_M_Clk_Out_Left_Del: std_logic; - -begin - - Init_PE_Pads ( Pads ); - - Pads.Clocks.M_Clk_Out_Right_Mem <= transport Clocks_M_Clk_Out_Right_Del after 2 ns; - Pads.Clocks.M_Clk_Out_Left_Mem <= transport Clocks_M_Clk_Out_Left_Del after 2 ns; - - FPGA: WildFpga - port map ( - Clocks_F_Clk => Pads.Clocks.F_Clk, - Clocks_M_Clk => Pads.Clocks.M_Clk, - Clocks_P_Clk => Pads.Clocks.P_Clk, - Clocks_K_Clk => Pads.Clocks.K_Clk, - Clocks_IO_Clk => Pads.Clocks.IO_Clk, - Clocks_M_Clk_Out_PE => Pads.Clocks.M_Clk_Out_PE, - Clocks_M_Clk_Out_CB_Ctrl => Pads.Clocks.M_Clk_Out_CB_Ctrl, - Clocks_M_Clk_Out_Right_Mem => Clocks_M_Clk_Out_Right_Del, - Clocks_M_Clk_Out_Left_Mem => Clocks_M_Clk_Out_Left_Del, - Clocks_P_Clk_Out_PE => Pads.Clocks.P_Clk_Out_PE, - Clocks_P_Clk_Out_CB_Ctrl => Pads.Clocks.P_Clk_Out_CB_Ctrl, - Reset_Reset => Pads.Reset, - Audio_Audio => Pads.Audio, - LAD_Bus_Addr_Data => Pads.LAD_Bus.Addr_Data, - LAD_Bus_AS_n => Pads.LAD_Bus.AS_n, - LAD_Bus_DS_n => Pads.LAD_Bus.DS_n, - LAD_Bus_WR_n => Pads.LAD_Bus.WR_n, - LAD_Bus_CS_n => Pads.LAD_Bus.CS_n, - LAD_Bus_Reg_n => Pads.LAD_Bus.Reg_n, - LAD_Bus_Ack_n => Pads.LAD_Bus.Ack_n, - LAD_Bus_Int_Req_n => Pads.LAD_Bus.Int_Req_n, - LAD_Bus_DMA_0_Data_OK_n => Pads.LAD_Bus.DMA_0_Data_OK_n, - LAD_Bus_DMA_0_Burst_OK => Pads.LAD_Bus.DMA_0_Burst_OK, - LAD_Bus_DMA_1_Data_OK_n => Pads.LAD_Bus.DMA_1_Data_OK_n, - LAD_Bus_DMA_1_Burst_OK => Pads.LAD_Bus.DMA_1_Burst_OK, - LAD_Bus_Reg_Data_OK_n => Pads.LAD_Bus.Reg_Data_OK_n, - LAD_Bus_Reg_Burst_OK => Pads.LAD_Bus.Reg_Burst_OK, - LAD_Bus_Force_K_Clk_n => Pads.LAD_Bus.Force_K_Clk_n, - LAD_Bus_Reserved => Pads.LAD_Bus.Reserved, - Left_Mem_Addr => Pads.Left_Mem.Addr, - Left_Mem_Data => Pads.Left_Mem.Data, - Left_Mem_Byte_WR_n => Pads.Left_Mem.Byte_WR_n, - Left_Mem_CS_n => Pads.Left_Mem.CS_n, - Left_Mem_CE_n => Pads.Left_Mem.CE_n, - Left_Mem_WE_n => Pads.Left_Mem.WE_n, - Left_Mem_OE_n => Pads.Left_Mem.OE_n, - Left_Mem_Sleep_EN => Pads.Left_Mem.Sleep_EN, - Left_Mem_Load_EN_n => Pads.Left_Mem.Load_EN_n, - Left_Mem_Burst_Mode => Pads.Left_Mem.Burst_Mode, - Right_Mem_Addr => Pads.Right_Mem.Addr, - Right_Mem_Data => Pads.Right_Mem.Data, - Right_Mem_Byte_WR_n => Pads.Right_Mem.Byte_WR_n, - Right_Mem_CS_n => Pads.Right_Mem.CS_n, - Right_Mem_CE_n => Pads.Right_Mem.CE_n, - Right_Mem_WE_n => Pads.Right_Mem.WE_n, - Right_Mem_OE_n => Pads.Right_Mem.OE_n, - Right_Mem_Sleep_EN => Pads.Right_Mem.Sleep_EN, - Right_Mem_Load_EN_n => Pads.Right_Mem.Load_EN_n, - Right_Mem_Burst_Mode => Pads.Right_Mem.Burst_Mode, - Left_IO => Pads.Left_IO, - Right_IO => Pads.Right_IO); - -end architecture Wrapper; --==================================================-- diff --git a/designs/leon3-wildcard-xcv300e/readme.txt b/designs/leon3-wildcard-xcv300e/readme.txt deleted file mode 100644 index 20ac440d..00000000 --- a/designs/leon3-wildcard-xcv300e/readme.txt +++ /dev/null @@ -1,24 +0,0 @@ --============================================================================-- -The WildCard FPGA template design is based on the GRLIB VHDL IP core library. - -The design can be synthesized using only GRLIB IP cores: - -- make ise Synthesis, place and route using Xilinx ISE - -- make ise-synp Synthesis using Synplify, place and route using Xilinx ISE - -- make ise-prom Generation of wildcard-xcv300e.bin programming file - -To simulate the design, one requires access to the VHDL templates that are -delivered with the WildCard device. Set WILDCARD_BASE variable to WildCard VHDL -directory path. - -- make vsim Compile FPGA design with ModelSim - -- make vsim-wildcard Compile WildCard test environment with ModelSim - -- vsim system_config Simulate WildCard design with ModelSim - -All information is provided "as is", there is no warranty that the information -is correct or suitable for any purpose, neither implicit nor explicit. ---============================================================================-- diff --git a/designs/leon3-wildcard-xcv300e/system_cfg.vhd b/designs/leon3-wildcard-xcv300e/system_cfg.vhd deleted file mode 100644 index 89947de4..00000000 --- a/designs/leon3-wildcard-xcv300e/system_cfg.vhd +++ /dev/null @@ -1,75 +0,0 @@ ------------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---============================================================================-- --- Design unit : System_Config (configuration declaration) --- --- File name : system_cfg.vhd --- --- Purpose : System configuration for co-simulation of host and WildCard --- --- Library : System --- --- Authors : Aeroflex Gaisler AB --- --- Contact : mailto:support@gaisler.com --- http://www.gaisler.com --- --- Disclaimer : All information is provided "as is", there is no warranty that --- the information is correct or suitable for any purpose, --- neither implicit nor explicit. ---============================================================================-- -library SYSTEM; -library PE_Lib; -library Work; - -configuration System_Config of System is - for Structure - for U_Host: Host - use entity SYSTEM.Host(Validate); - end for; - - for U_WILDCARD: WILDCARD - use entity SYSTEM.WILDCARD(Standard); - for Standard - for U_PE: PE - use entity PE_Lib.PE(Wrapper); - for Wrapper - for FPGA: WildFpga - use entity Work.WildFpga(Rtl) - generic map ( - fabtech => 1, - memtech => 1, - padtech => 1, - clktech => 1, - netlist => 1); - end for; - end for; - end for; - for U_Left_Mem: Memory_Bank - use entity SYSTEM.Memory_Bank( Static ) - generic map(MEM_SIZE => 2**19); - end for; - for U_Right_Mem: Memory_Bank - use entity SYSTEM.Memory_Bank( Static ) - generic map(MEM_SIZE => 2**19); - end for; - end for; - end for; - end for; -end configuration System_Config; --===========================================-- \ No newline at end of file diff --git a/designs/leon3-wildcard-xcv300e/wave.do b/designs/leon3-wildcard-xcv300e/wave.do deleted file mode 100644 index b9b7242e..00000000 --- a/designs/leon3-wildcard-xcv300e/wave.do +++ /dev/null @@ -1,79 +0,0 @@ -onerror {resume} -quietly WaveActivateNextPane {} 0 -add wave -noupdate -divider External -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/clocks_f_clk -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/clocks_m_clk -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/clocks_p_clk -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/clocks_k_clk -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/clocks_io_clk -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/clocks_m_clk_out_pe -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/clocks_m_clk_out_cb_ctrl -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/clocks_m_clk_out_right_mem -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/clocks_m_clk_out_left_mem -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/clocks_p_clk_out_pe -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/clocks_p_clk_out_cb_ctrl -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/reset_reset -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/audio_audio -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/lad_bus_addr_data -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_as_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_ds_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_wr_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_cs_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_reg_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_ack_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_int_req_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_dma_0_data_ok_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_dma_0_burst_ok -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_dma_1_data_ok_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_dma_1_burst_ok -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_reg_data_ok_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_reg_burst_ok -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_force_k_clk_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/lad_bus_reserved -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/left_mem_addr -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/left_mem_data -add wave -noupdate -format Literal /system/u_wildcard/u_pe/fpga/left_mem_byte_wr_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/left_mem_cs_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/left_mem_ce_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/left_mem_we_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/left_mem_oe_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/left_mem_sleep_en -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/left_mem_load_en_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/left_mem_burst_mode -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/right_mem_addr -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/right_mem_data -add wave -noupdate -format Literal /system/u_wildcard/u_pe/fpga/right_mem_byte_wr_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/right_mem_cs_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/right_mem_ce_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/right_mem_we_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/right_mem_oe_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/right_mem_sleep_en -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/right_mem_load_en_n -add wave -noupdate -format Logic /system/u_wildcard/u_pe/fpga/right_mem_burst_mode -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/left_io -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/right_io -add wave -noupdate -divider Amba -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/ladi -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/lado -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/apbi -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/apbo -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/ahbsi -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/ahbso -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/ahbmi -add wave -noupdate -format Literal -radix hexadecimal /system/u_wildcard/u_pe/fpga/ahbmo -TreeUpdate [SetDefaultTree] -WaveRestoreCursors {{Cursor 1} {43611000 ps} 0} -configure wave -namecolwidth 222 -configure wave -valuecolwidth 115 -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 0 -update -WaveRestoreZoom {0 ps} {40983991 ps} diff --git a/designs/leon3-wildcard-xcv300e/wildfpga.vhd b/designs/leon3-wildcard-xcv300e/wildfpga.vhd deleted file mode 100644 index 33a3d389..00000000 --- a/designs/leon3-wildcard-xcv300e/wildfpga.vhd +++ /dev/null @@ -1,588 +0,0 @@ ------------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ---============================================================================-- --- Design unit : WildCard FPGA (entity and architecture declarations) --- --- File name : wildfpga.vhd --- --- Purpose : WildCard FPGA design --- --- Library : Work --- --- Authors : Aeroflex Gaisler AB --- --- Contact : mailto:support@gaisler.com --- http://www.gaisler.com --- --- Disclaimer : All information is provided "as is", there is no warranty that --- the information is correct or suitable for any purpose, --- neither implicit nor explicit. ---============================================================================-- - ------------------------------------ Glossary ----------------------------------- --- --- Name Key: --- ========= --- _AS : Address Strobe --- _CE : Clock Enable --- _CS : Chip Select --- _DS : Data Strobe --- _EN : Enable --- _OE : Output Enable --- _RD : Read Select --- _WE : Write Enable --- _WR : Write Select --- _d[d...] : Delayed (registered) signal (each 'd' denotes one --- level of delay) --- _n : Active low signals (must be last part of name) --- --- Port Name Dir Description --- ============================ === ================================ --- Clocks_F_Clk I Frequency synthesizer clock --- Clocks_M_Clk I Memory clock --- Clocks_P_Clk I Processor clock --- Clocks_K_Clk I LAD-bus clock --- Clocks_IO_Clk I External I/O connector clock --- Clocks_M_Clk_Out_Pe O M_Clk to the PE --- Clocks_M_Clk_Out_CB_Ctrl O M_Clk to the CardBus controller --- Clocks_M_Clk_Out_Right_Mem O M_Clk to the right memory bank --- Clocks_M_Clk_Out_Left_Mem O M_Clk to the left memory bank --- Clocks_P_Clk_Out_Pe O P_Clk to the PE --- Clocks_P_Clk_Out_CB_Ctrl O P_Clk to the CardBus controller --- Reset_Reset I Global PE reset --- Audio_Audio O Pulse-width modulated audio pad --- LAD_Bus_Addr_Data B LAD-bus shared address/data bus --- LAD_Bus_AS_n I LAD-bus address strobe --- LAD_Bus_DS_n I LAD-bus data strobe --- LAD_Bus_WR_n I LAD-bus write select --- LAD_Bus_CS_n I LAD-bus chip select --- LAD_Bus_Reg_n I LAD-bus register select --- LAD_Bus_Ack_n O LAD-bus acknowledge strobe --- LAD_Bus_Int_Req_n O LAD-bus interrupt request --- LAD_Bus_DMA_0_Data_OK_n O LAD-bus DMA chan 0 data OK flag --- LAD_Bus_DMA_0_Burst_OK_n O LAD-bus DMA chan 0 burst OK flag --- LAD_Bus_DMA_1_Data_OK_n O LAD-bus DMA chan 1 data OK flag --- LAD_Bus_DMA_1_Burst_OK_n O LAD-bus DMA chan 1 burst OK flag --- LAD_Bus_Reg_Data_OK_n O LAD-bus reg space data OK flag --- LAD_Bus_Reg_Burst_OK_n O LAD-bus reg space burst OK flag --- LAD_Bus_Force_K_Clk_n O LAD-bus K_Clk forced-run select --- LAD_Bus_Reserved - Reserved for future use --- Left_Mem_Addr O Left memory address bus --- Left_Mem_Data B Left memory data bus --- Left_Mem_Byte_WR_n O Left memory byte write select --- Left_Mem_CS_n O Left memory chip select --- Left_Mem_CE_n O Left memory clock enable --- Left_Mem_WE_n O Left memory write enable --- Left_Mem_OE_n O Left memory output enable --- Left_Mem_Sleep_EN O Left memory sleep enable --- Left_Mem_Load_EN_n O Left memory load enable --- Left_Mem_Burst_Mode O Left memory burst mode select --- Right_Mem_Addr O Right memory address bus --- Right_Mem_Data B Right memory data bus --- Right_Mem_Byte_WR_n O Right memory byte write select --- Right_Mem_CS_n O Right memory chip select --- Right_Mem_CE_n O Right memory clock enable --- Right_Mem_WE_n O Right memory write enable --- Right_Mem_OE_n O Right memory output enable --- Right_Mem_Sleep_EN O Right memory sleep enable --- Right_Mem_Load_EN_n O Right memory load enable --- Left_Mem_Burst_Mode O Right memory burst mode select --- Left_IO B Left external I/O connector --- Right_IO B Right external I/O connector ---============================================================================-- - -library IEEE; -use IEEE.Std_Logic_1164.all; - -entity WildFpga is - generic ( - fabtech: integer := 1; - memtech: integer := 1; - padtech: integer := 1; - clktech: integer := 1; - netlist: integer := 1); - port ( - Clocks_F_Clk: in std_logic; - Clocks_M_Clk: in std_logic; - Clocks_P_Clk: in std_logic; - Clocks_K_Clk: in std_logic; - Clocks_IO_Clk: in std_logic; - - Clocks_M_Clk_Out_PE: out std_logic; - Clocks_M_Clk_Out_CB_Ctrl: out std_logic; - Clocks_M_Clk_Out_Right_Mem: out std_logic; - Clocks_M_Clk_Out_Left_Mem: out std_logic; - Clocks_P_Clk_Out_PE: out std_logic; - Clocks_P_Clk_Out_CB_Ctrl: out std_logic; - - Reset_Reset: in std_logic; - Audio_Audio: out std_logic; - - LAD_Bus_Addr_Data: inout std_logic_vector (31 downto 0); - LAD_Bus_AS_n: in std_logic; - LAD_Bus_DS_n: in std_logic; - LAD_Bus_WR_n: in std_logic; - LAD_Bus_CS_n: in std_logic; - LAD_Bus_Reg_n: in std_logic; - LAD_Bus_Ack_n: out std_logic; - LAD_Bus_Int_Req_n: out std_logic; - LAD_Bus_DMA_0_Data_OK_n: out std_logic; - LAD_Bus_DMA_0_Burst_OK: out std_logic; - LAD_Bus_DMA_1_Data_OK_n: out std_logic; - LAD_Bus_DMA_1_Burst_OK: out std_logic; - LAD_Bus_Reg_Data_OK_n: out std_logic; - LAD_Bus_Reg_Burst_OK: out std_logic; - LAD_Bus_Force_K_Clk_n: out std_logic; - LAD_Bus_Reserved: out std_logic; - - Left_Mem_Addr: out std_logic_vector (18 downto 0); - Left_Mem_Data: inout std_logic_vector (35 downto 0); - Left_Mem_Byte_WR_n: out std_logic_vector (3 downto 0); - Left_Mem_CS_n: out std_logic; - Left_Mem_CE_n: out std_logic; - Left_Mem_WE_n: out std_logic; - Left_Mem_OE_n: out std_logic; - Left_Mem_Sleep_EN: out std_logic; - Left_Mem_Load_EN_n: out std_logic; - Left_Mem_Burst_Mode: out std_logic; - - Right_Mem_Addr: out std_logic_vector (18 downto 0); - Right_Mem_Data: inout std_logic_vector (35 downto 0); - Right_Mem_Byte_WR_n: out std_logic_vector (3 downto 0); - Right_Mem_CS_n: out std_logic; - Right_Mem_CE_n: out std_logic; - Right_Mem_WE_n: out std_logic; - Right_Mem_OE_n: out std_logic; - Right_Mem_Sleep_EN: out std_logic; - Right_Mem_Load_EN_n: out std_logic; - Right_Mem_Burst_Mode: out std_logic; - - Left_IO: inout std_logic_vector (12 downto 0); - Right_IO: inout std_logic_vector (12 downto 0)); -end entity WildFpga; --=======================================================-- - -library IEEE; -use IEEE.Std_Logic_1164.all; - -library Work; -use Work.config.all; - -library grlib; -use grlib.amba.all; - -library gaisler; -use gaisler.memctrl.all; -use gaisler.misc.all; -use gaisler.uart.all; -use gaisler.leon3.all; -use gaisler.haps.all; -use gaisler.wild.all; - -library techmap; -use techmap.gencomp.all; - -architecture RTL of WildFpga is - - -- clock generation - signal rst, rstn: Std_ULogic; - - signal kclk, clkk, clkkn, rstkn, rstkraw: Std_ULogic; - signal cgik: clkgen_in_type; - signal cgok: clkgen_out_type; - - signal fclk, clkf1, clkf, rstfn, rstfraw: Std_ULogic; - signal cgif: clkgen_in_type; - signal cgof: clkgen_out_type; - - signal vcc, gnd: Std_ULogic; - - -- gpio - signal gpioi: gpio_in_type; - signal gpioo: gpio_out_type; - - -- uarts - signal u1i, u2i: uart_in_type; - signal u1o, u2o: uart_out_type; - - -- timers - signal gpti: gptimer_in_type; - - -- memory interface - signal memir, memil: memory_in_type; - signal memor, memol: memory_out_type; - - -- LEON3 debug interface - signal dbgi: l3_debug_in_vector(0 to 0); - signal dbgo: l3_debug_out_vector(0 to 0); - - signal dsui: dsu_in_type; - signal dsuo: dsu_out_type; - - -- interrupt controller - signal irqi: irq_in_vector(0 to 0); - signal irqo: irq_out_vector(0 to 0); - - -- local address and data bus - signal ladi: lad_in_type; - signal lado: lad_out_type; - - -- amba apb interface - signal apbi: APB_Slv_In_Type; - signal apbo: APB_Slv_Out_Vector := (others => apb_none); - signal ahbsi: AHB_Slv_In_Type; - signal ahbso: AHB_Slv_Out_Vector := (others => ahbs_none); - signal ahbmi: AHB_Mst_In_Type; - signal ahbmo: AHB_Mst_Out_Vector := (others => ahbm_none); - -begin - - ----------------------------------------------------------------------------- - -- Reset and Clock generation - ----------------------------------------------------------------------------- - vcc <= '1'; - gnd <= '0'; - - -- Reset input - rst_pad : inpad - port map(Reset_Reset, rst); - - rstn <= not rst; - - - -- PCI clock domain, 33 MHz, Clk_K - cgik.pllctrl <= "00"; - cgik.pllrst <= rstkraw; - cgik.pllref <= '0'; - - clkk_pad : clkpad - generic map (tech => padtech) - port map (Clocks_K_Clk, kclk); - - clkgenk : clkgen -- clock generator - generic map (0, 2, 2, 0, 0, 0, 0, 0) - port map (kclk, kclk, clkk, clkkn, open, open, open, cgik, cgok); - - rstgenk : rstgen -- reset generator - port map (rstn, clkkn, cgok.clklock, rstkn, rstkraw); - - -- Main clock domain, X MHz, Clk_F - cgif.pllctrl <= "00"; - cgif.pllrst <= rstfraw; - - clkfk_pad : clkpad - generic map (tech => padtech) - port map (Clocks_F_Clk, fclk); - - pllref_pad : clkpad - generic map (tech => padtech) - port map (Clocks_M_Clk, cgif.pllref); - - clkgenf : clkgen -- clock generator - generic map (clktech, 2, 2, 1, 0, 0, 0, 0, 10000, 0) - port map (fclk, gnd, clkf, open, open, clkf1, open, cgif, cgof); - - rstgenf : rstgen -- reset generator - port map (rstn, clkf, cgof.clklock, rstfn, rstfraw); - - - Clocks_P_Clk_Out_PE_PAD: outpad - generic map (tech => padtech, slew => 1, strength => 24) - port map(Clocks_P_Clk_Out_PE, clkf1); - - Clocks_P_Clk_Out_CB_Ctrl_PAD: outpad - generic map (tech => padtech, slew => 1, strength => 24) - port map(Clocks_P_Clk_Out_CB_Ctrl, clkf1); - - Clocks_M_Clk_Out_PE_PAD: outpad - generic map (tech => padtech, slew => 1, strength => 24) - port map(Clocks_M_Clk_Out_PE, clkf1); - - Clocks_M_Clk_Out_CB_Ctrl_PAD: outpad - generic map (tech => padtech, slew => 1, strength => 24) - port map(Clocks_M_Clk_Out_CB_Ctrl, clkf1); - - Clocks_M_Clk_Out_Right_Mem_PAD: outpad - generic map (tech => padtech, slew => 1, strength => 24) - port map(Clocks_M_Clk_Out_Right_Mem, clkf1); - - Clocks_M_Clk_Out_Left_Mem_PAD: outpad - generic map (tech => padtech, slew => 1, strength => 24) - port map(Clocks_M_Clk_Out_Left_Mem, clkf1); - - ----------------------------------------------------------------------------- - -- AMBA AHB Controller - ----------------------------------------------------------------------------- - ahb0 : ahbctrl -- AHB arbiter/multiplexer - generic map ( - nahbm => 1+CFG_LEON3, - nahbs => 3+CFG_DSU+CFG_AHBRAMEN, - fpnpen => 1) - port map (rstfn, clkf, ahbmi, ahbmo, ahbsi, ahbso); - - ----------------------------------------------------------------------------- - -- LEON3 processor with Debug Support Unit - ----------------------------------------------------------------------------- - leongen : if CFG_LEON3=1 and CFG_NCPU=1 generate - u0 : leon3s - generic map (0, fabtech, memtech, - CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, 0, CFG_MAC, CFG_PCLOW, 0, CFG_NWP, - CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, CFG_ISETSZ, CFG_ILOCK, - CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, CFG_DLOCK, CFG_DSNOOP, - CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, - CFG_DLRAMEN, CFG_DLRAMSZ, CFG_DLRAMADDR, - CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, - CFG_LDDEL, CFG_DISAS, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, 0, CFG_DFIXED) - port map (clkf, rstfn, ahbmi, ahbmo(0), ahbsi, ahbso, - irqi(0), irqo(0), dbgi(0), dbgo(0)); - end generate; - - dsugen : if CFG_DSU=1 generate - dsu0 : dsu3 - generic map (hindex => 1, haddr => 16#900#, hmask => 16#F00#, - ncpu => 1, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ) - port map (rstfn, clkf, ahbmi, ahbsi, ahbso(1), dbgo, dbgi, dsui, dsuo); - - dsui.enable <= '1'; dsui.break <= '0'; - end generate; - - ----------------------------------------------------------------------------- - -- Local Address and Data Bus to AMBA AHB bus DMA interface - ----------------------------------------------------------------------------- - wild2ahb0: wild2ahb - generic map ( - hindex => CFG_LEON3, - burst => 5, - syncrst => 1) - port map(rstkn, clkk, rstfn, clkf, ahbmi, ahbmo(CFG_LEON3), ladi, lado); - - ----------------------------------------------------------------------------- - -- AHB/APB Bridge - ----------------------------------------------------------------------------- - apb0 : apbctrl -- AHB/APB bridge - generic map ( - hindex => 0, - haddr => 16#800#, - hmask => 16#FFF#, - nslaves => 16) - port map (rstfn, clkf, ahbsi, ahbso(0), apbi, apbo); - --- apbo(0) <= apb_none; --- apbo(1) <= apb_none; --- apbo(2) <= apb_none; --- apbo(3) <= apb_none; --- apbo(4) <= apb_none; --- apbo(5) <= apb_none; - apbo(6) <= apb_none; - apbo(7) <= apb_none; - apbo(8) <= apb_none; - apbo(9) <= apb_none; - apbo(10) <= apb_none; - apbo(11) <= apb_none; - apbo(12) <= apb_none; - apbo(13) <= apb_none; - apbo(14) <= apb_none; - apbo(15) <= apb_none; - - ----------------------------------------------------------------------------- - -- Interrupt controller, timer and uart - ----------------------------------------------------------------------------- - irqctrl0 : irqmp -- interrupt controller - generic map (pindex => 0, paddr => 2, ncpu => 1) - port map (rstfn, clkf, apbi, apbo(0), irqo, irqi); - - timer0: gptimer -- timers - generic map (pindex => 1, paddr => 3, pirq => 8, sepirq => 1, - sbits => 8, ntimers => 2, nbits => 32, wdog => 0) - port map (rstfn, clkf, apbi, apbo(1), gpti, open); - gpti.dhalt <= dsuo.tstop; gpti.extclk <= '0'; - - uart1: apbuart -- uart - generic map (pindex => 2, paddr => 1, pirq => 2, console => 0, fifosize => 2) - port map (rstfn, clkf, apbi, apbo(2), u1i, u1o); - u1i.extclk <= '0'; u1i.ctsn <= '0'; u1i.rxd <= u1o.txd; - - ----------------------------------------------------------------------------- - -- General Purpose Input Output with pads - ----------------------------------------------------------------------------- - grgpio0: grgpio - generic map(pindex => 3, paddr => 11, imask => 0, nbits => 27, oepol => 0, syncrst =>0) - port map(rstfn, clkf, apbi, apbo(3), gpioi, gpioo); - - left_io_pads : for i in 12 downto 0 generate - left_io_pad : iopad - generic map (tech => padtech) - port map (Left_IO(i), gpioo.dout(i+13), gpioo.oen(i+13), gpioi.din(i+13)); - end generate; - - right_io_pads : for i in 12 downto 0 generate - right_io_pad : iopad - generic map (tech => padtech) - port map (Right_IO(i), gpioo.dout(i), gpioo.oen(i), gpioi.din(i)); - end generate; - - ----------------------------------------------------------------------------- - -- Audio pad - ----------------------------------------------------------------------------- - audio_io_pad : toutpad - generic map (tech => padtech) - port map (Audio_Audio, gpioo.dout(26), gpioo.oen(26)); - - ----------------------------------------------------------------------------- - -- SSRAM controller - left - ----------------------------------------------------------------------------- - ssraml : sram_1x1 - generic map (hindex => 1+CFG_DSU, pindex => 4, paddr => 4, - romaddr => 16#100#, rommask => 0, - ioaddr => 16#200#, iomask => 0, - ramaddr => 16#400#, rammask => 16#FFF#, - bus16 => netlist, netlist => netlist, tech => 2) - port map (rstfn, clkf, ahbsi, ahbso(1+CFG_DSU), apbi, apbo(4), memil, memol); - - memil.writen <= '1'; memil.wrn <= "1111"; memil.bwidth <= "10"; - memil.brdyn <= '1'; memil.bexcn <= '1'; - - -- ssram pads - addr_l_pad : outpadv - generic map (width => 19, tech => padtech, slew => 1) - port map (Left_Mem_Addr, memol.address(20 downto 2)); - rams_l_pad : outpad - generic map (tech => padtech, slew => 1) - port map (Left_Mem_CS_n, memol.ramsn(0)); - oen_l_pad : outpad - generic map (tech => padtech, slew => 1) - port map (Left_Mem_OE_n, memol.oen); - write_l_pad : outpad - generic map (tech => padtech, slew => 1) - port map (Left_Mem_WE_n, memol.writen); - rwen_l_pad0 : outpad - generic map (tech => padtech, slew => 1) - port map (Left_Mem_Byte_WR_n(0), memol.wrn(3)); - rwen_l_pad1 : outpad - generic map (tech => padtech, slew => 1) - port map (Left_Mem_Byte_WR_n(1), memol.wrn(2)); - rwen_l_pad2 : outpad - generic map (tech => padtech, slew => 1) - port map (Left_Mem_Byte_WR_n(2), memol.wrn(1)); - rwen_l_pad3 : outpad - generic map (tech => padtech, slew => 1) - port map (Left_Mem_Byte_WR_n(3), memol.wrn(0)); - data_l_pads : iopadvv - generic map (tech => padtech, width => 32, slew => 1) - port map (Left_Mem_Data(31 downto 0), memol.data(31 downto 0), - memol.vbdrive(31 downto 0), memil.data(31 downto 0)); - - Left_Mem_Sleep_EN <= '0'; - Left_Mem_Burst_Mode <= '0'; - Left_Mem_Load_EN_n <= '0'; - Left_Mem_CE_n <= '0'; - Left_Mem_Data(35 downto 32) <= (others => 'Z'); - - ----------------------------------------------------------------------------- - -- SSRAM controller - right - ----------------------------------------------------------------------------- - ssramr : sram_1x1 - generic map (hindex => 2+CFG_DSU, pindex => 5, paddr => 5, - romaddr => 16#300#, rommask => 0, - ioaddr => 16#500#, iomask => 0, - ramaddr => 16#600#, rammask => 16#FFF#, - bus16 => netlist, netlist => netlist, tech => 2) - port map (rstfn, clkf, ahbsi, ahbso(2+CFG_DSU), apbi, apbo(5), memir, memor); - - memir.writen <= '1'; memir.wrn <= "1111"; memir.bwidth <= "10"; - memir.brdyn <= '1'; memir.bexcn <= '1'; - - -- ssram pads - addr_r_pad : outpadv - generic map (width => 19, tech => padtech, slew => 1) - port map (Right_Mem_Addr, memor.address(20 downto 2)); - rams_r_pad : outpad - generic map (tech => padtech, slew => 1) - port map (Right_Mem_CS_n, memor.ramsn(0)); - oen_r_pad : outpad - generic map (tech => padtech, slew => 1) - port map (Right_Mem_OE_n, memor.oen); - write_r_pad : outpad - generic map (tech => padtech, slew => 1) - port map (Right_Mem_WE_n, memor.writen); - rwen_r_pad0 : outpad - generic map (tech => padtech, slew => 1) - port map (Right_Mem_Byte_WR_n(0), memor.wrn(3)); - rwen_r_pad1 : outpad - generic map (tech => padtech, slew => 1) - port map (Right_Mem_Byte_WR_n(1), memor.wrn(2)); - rwen_r_pad2 : outpad - generic map (tech => padtech, slew => 1) - port map (Right_Mem_Byte_WR_n(2), memor.wrn(1)); - rwen_r_pad3 : outpad - generic map (tech => padtech, slew => 1) - port map (Right_Mem_Byte_WR_n(3), memor.wrn(0)); - data_r_pads : iopadvv - generic map (tech => padtech, width => 32, slew => 1) - port map (Right_Mem_Data(31 downto 0), memor.data(31 downto 0), - memor.vbdrive(31 downto 0), memir.data(31 downto 0)); - - Right_Mem_Sleep_EN <= '0'; - Right_Mem_Burst_Mode <= '0'; - Right_Mem_Load_EN_n <= '0'; - Right_Mem_CE_n <= '0'; - Right_Mem_Data(35 downto 32) <= (others => 'Z'); - - ----------------------------------------------------------------------------- - -- On-chip memory - ----------------------------------------------------------------------------- - memgen : if CFG_AHBRAMEN=1 generate - mem0: ahbram - generic map (hindex => 3+CFG_DSU, haddr => CFG_AHBRADDR, hmask => 16#FFF#, - tech => memtech, kbytes => CFG_AHBRSZ) - port map (rstfn, clkf, ahbsi, ahbso(3+CFG_DSU)); - end generate; - - ----------------------------------------------------------------------------- - -- Local Address and Data Bus pads - ----------------------------------------------------------------------------- - addr_data_pad : for i in LAD_Bus_Addr_Data'range generate - ad_pad : iopad - generic map( - slew => 1, - strength => 24) - port map( - pad => LAD_Bus_Addr_Data(i), - i => lado.Addr_Data(i), - en => lado.Addr_Data_OE_n(i), - o => ladi.Addr_Data(i)); - end generate; - - ladi.AS_n <= LAD_Bus_AS_n; - ladi.DS_n <= LAD_Bus_DS_n; - ladi.WR_n <= LAD_Bus_WR_n; - ladi.CS_n <= LAD_Bus_CS_n; - ladi.Reg_n <= LAD_Bus_Reg_n; - - LAD_Bus_Ack_n <= lado.Ack_n; - LAD_Bus_Int_Req_n <= lado.Int_Req_n; - LAD_Bus_DMA_0_Data_OK_n <= lado.DMA_0_Data_OK_n; - LAD_Bus_DMA_0_Burst_OK <= lado.DMA_0_Burst_OK; - LAD_Bus_DMA_1_Data_OK_n <= lado.DMA_1_Data_OK_n; - LAD_Bus_DMA_1_Burst_OK <= lado.DMA_1_Burst_OK; - LAD_Bus_Reg_Data_OK_n <= lado.Reg_Data_OK_n; - LAD_Bus_Reg_Burst_OK <= lado.Reg_Burst_OK; - LAD_Bus_Force_K_Clk_n <= lado.Force_K_Clk_n; - LAD_Bus_Reserved <= lado.Reserved; - -end architecture RTL; --======================================================-- diff --git a/designs/leon3-ge-hpe-midi-ep2s180/.config b/designs/leon3-xilinx-kc705/.config similarity index 72% rename from designs/leon3-ge-hpe-midi-ep2s180/.config rename to designs/leon3-xilinx-kc705/.config index 3ed51f9a..f662732b 100644 --- a/designs/leon3-ge-hpe-midi-ep2s180/.config +++ b/designs/leon3-xilinx-kc705/.config @@ -1,14 +1,15 @@ # # Automatically generated make config: don't edit # -CONFIG_MCTRL_RMW=y +CONFIG_LEON3FT_PRESENT=y +CONFIG_HAS_SHARED_GRFPU=y # # Synthesis # # CONFIG_SYN_INFERRED is not set # CONFIG_SYN_STRATIX is not set -CONFIG_SYN_STRATIXII=y +# CONFIG_SYN_STRATIXII is not set # CONFIG_SYN_STRATIXIII is not set # CONFIG_SYN_CYCLONEIII is not set # CONFIG_SYN_ALTERA is not set @@ -41,6 +42,7 @@ CONFIG_SYN_STRATIXII=y # CONFIG_SYN_TM65GPLUS is not set # CONFIG_SYN_TSMC90 is not set # CONFIG_SYN_UMC is not set +CONFIG_SYN_KINTEX7=y # CONFIG_SYN_SPARTAN2 is not set # CONFIG_SYN_SPARTAN3 is not set # CONFIG_SYN_SPARTAN3E is not set @@ -51,6 +53,7 @@ CONFIG_SYN_STRATIXII=y # CONFIG_SYN_VIRTEX4 is not set # CONFIG_SYN_VIRTEX5 is not set # CONFIG_SYN_VIRTEX6 is not set +# CONFIG_SYN_VIRTEX7 is not set # CONFIG_SYN_INFER_RAM is not set # CONFIG_SYN_INFER_PADS is not set # CONFIG_SYN_NO_ASYNC is not set @@ -70,45 +73,56 @@ CONFIG_SYN_STRATIXII=y # CONFIG_CLK_FUSPLL is not set # CONFIG_CLK_LIB18T is not set # CONFIG_CLK_RHUMC is not set +CONFIG_CLK_CLKPLLE2=y # CONFIG_CLK_CLKDLL is not set -CONFIG_CLK_DCM=y +# CONFIG_CLK_DCM is not set CONFIG_CLK_MUL=4 -CONFIG_CLK_DIV=4 -# CONFIG_PCI_CLKDLL is not set -# CONFIG_CLK_NOFB is not set +CONFIG_CLK_DIV=8 # CONFIG_PCI_SYSCLK is not set -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 # # Processor # +CONFIG_LEON3=y +CONFIG_PROC_NUM=1 +# CONFIG_LEON3_MIN is not set +# CONFIG_LEON3_GP is not set +# CONFIG_LEON3_HP is not set +CONFIG_LEON3_CUSTOM=y # # Integer unit # CONFIG_IU_NWINDOWS=8 CONFIG_IU_V8MULDIV=y -# CONFIG_IU_MUL_LATENCY_2 is not set +CONFIG_IU_MUL_LATENCY_2=y # CONFIG_IU_MUL_LATENCY_4 is not set -CONFIG_IU_MUL_LATENCY_5=y -# CONFIG_IU_MUL_MAC is not set +# CONFIG_IU_MUL_LATENCY_5 is not set CONFIG_IU_MUL_INFERRED=y # CONFIG_IU_MUL_MODGEN is not set # CONFIG_IU_MUL_TECHSPEC is not set # CONFIG_IU_MUL_DW is not set -# CONFIG_IU_BP is not set +CONFIG_IU_BP=y CONFIG_IU_SVT=y # CONFIG_NOTAG is not set CONFIG_IU_LDELAY=1 -CONFIG_IU_WATCHPOINTS=2 -# CONFIG_PWD is not set +CONFIG_IU_WATCHPOINTS=4 +CONFIG_PWD=y CONFIG_IU_RSTADDR=00000 # # Floating-point unit # -# CONFIG_FPU_ENABLE is not set +CONFIG_FPU_ENABLE=y +CONFIG_FPU_GRFPU=y +# CONFIG_FPU_GRFPULITE is not set +# CONFIG_FPU_MEIKO is not set +CONFIG_FPU_GRFPU_INFMUL=y +# CONFIG_FPU_GRFPU_DWMUL is not set +# CONFIG_FPU_GRFPU_MODGEN is not set +# CONFIG_FPU_GRFPU_TECHSPEC is not set +# CONFIG_FPU_GRFPU_SH is not set +# CONFIG_FPU_NETLIST is not set # # Cache system @@ -120,15 +134,15 @@ CONFIG_ICACHE_ASSO2=y # CONFIG_ICACHE_ASSO4 is not set # CONFIG_ICACHE_SZ1 is not set # CONFIG_ICACHE_SZ2 is not set -# CONFIG_ICACHE_SZ4 is not set -CONFIG_ICACHE_SZ8=y +CONFIG_ICACHE_SZ4=y +# CONFIG_ICACHE_SZ8 is not set # CONFIG_ICACHE_SZ16 is not set # CONFIG_ICACHE_SZ32 is not set # CONFIG_ICACHE_SZ64 is not set # CONFIG_ICACHE_SZ128 is not set # CONFIG_ICACHE_SZ256 is not set -# CONFIG_ICACHE_LZ16 is not set -CONFIG_ICACHE_LZ32=y +CONFIG_ICACHE_LZ16=y +# CONFIG_ICACHE_LZ32 is not set # CONFIG_ICACHE_ALGORND is not set # CONFIG_ICACHE_ALGODIR is not set # CONFIG_ICACHE_ALGOLRR is not set @@ -157,7 +171,7 @@ CONFIG_DCACHE_ALGOLRU=y # CONFIG_DCACHE_LOCK is not set CONFIG_DCACHE_SNOOP=y # CONFIG_DCACHE_SNOOP_FAST is not set -# CONFIG_DCACHE_SNOOP_SEPTAG is not set +CONFIG_DCACHE_SNOOP_SEPTAG=y CONFIG_CACHE_FIXED=0 # @@ -170,14 +184,16 @@ CONFIG_MMU_REPARRAY=y # CONFIG_MMU_REPINCREMENT is not set # CONFIG_MMU_I2 is not set # CONFIG_MMU_I4 is not set -CONFIG_MMU_I8=y -# CONFIG_MMU_I16 is not set +# CONFIG_MMU_I8 is not set +CONFIG_MMU_I16=y # CONFIG_MMU_I32 is not set +# CONFIG_MMU_I64 is not set # CONFIG_MMU_D2 is not set # CONFIG_MMU_D4 is not set -CONFIG_MMU_D8=y -# CONFIG_MMU_D16 is not set +# CONFIG_MMU_D8 is not set +CONFIG_MMU_D16=y # CONFIG_MMU_D32 is not set +# CONFIG_MMU_D64 is not set CONFIG_MMU_FASTWB=y CONFIG_MMU_PAGE_4K=y # CONFIG_MMU_PAGE_8K is not set @@ -191,16 +207,11 @@ CONFIG_MMU_PAGE_4K=y CONFIG_DSU_ENABLE=y CONFIG_DSU_ITRACE=y # CONFIG_DSU_ITRACESZ1 is not set -CONFIG_DSU_ITRACESZ2=y -# CONFIG_DSU_ITRACESZ4 is not set +# CONFIG_DSU_ITRACESZ2 is not set +CONFIG_DSU_ITRACESZ4=y # CONFIG_DSU_ITRACESZ8 is not set # CONFIG_DSU_ITRACESZ16 is not set -CONFIG_DSU_ATRACE=y -# CONFIG_DSU_ATRACESZ1 is not set -CONFIG_DSU_ATRACESZ2=y -# CONFIG_DSU_ATRACESZ4 is not set -# CONFIG_DSU_ATRACESZ8 is not set -# CONFIG_DSU_ATRACESZ16 is not set +# CONFIG_DSU_ATRACE is not set # # Fault-tolerance @@ -211,7 +222,7 @@ CONFIG_DSU_ATRACESZ2=y # VHDL debug settings # # CONFIG_IU_DISAS is not set -# CONFIG_DEBUG_PC32 is not set +CONFIG_DEBUG_PC32=y # # AMBA configuration @@ -219,7 +230,7 @@ CONFIG_DSU_ATRACESZ2=y CONFIG_AHB_DEFMST=0 CONFIG_AHB_RROBIN=y # CONFIG_AHB_SPLIT is not set -# CONFIG_AHB_FPNPEN is not set +CONFIG_AHB_FPNPEN=y CONFIG_AHB_IOADDR=FFF CONFIG_APB_HADDR=800 # CONFIG_AHB_MON is not set @@ -230,80 +241,53 @@ CONFIG_APB_HADDR=800 # CONFIG_DSU_UART=y CONFIG_DSU_JTAG=y -CONFIG_DSU_ETH=y -# CONFIG_DSU_ETHSZ1 is not set -CONFIG_DSU_ETHSZ2=y -# CONFIG_DSU_ETHSZ4 is not set -# CONFIG_DSU_ETHSZ8 is not set -# CONFIG_DSU_ETHSZ16 is not set -CONFIG_DSU_IPMSB=C0A8 -CONFIG_DSU_IPLSB=0034 -CONFIG_DSU_ETHMSB=020000 -CONFIG_DSU_ETHLSB=00001E -# CONFIG_DSU_ETH_PROG is not set -# CONFIG_DSU_ETH_DIS is not set -# CONFIG_GRUSB_DCL is not set # # Peripherals # # -# Memory controllers +# Memory controller # -# -# 8/32-bit PROM/SRAM controller -# -# CONFIG_SRCTRL is not set - # # Leon2 memory controller # CONFIG_MCTRL_LEON2=y -# CONFIG_MCTRL_8BIT is not set -# CONFIG_MCTRL_16BIT is not set +CONFIG_MCTRL_8BIT=y +CONFIG_MCTRL_16BIT=y # CONFIG_MCTRL_5CS is not set -CONFIG_MCTRL_SDRAM=y -# CONFIG_MCTRL_SDRAM_SEPBUS is not set -CONFIG_MCTRL_PAGE=y -# CONFIG_MCTRL_PROGPAGE is not set +# CONFIG_MCTRL_SDRAM is not set # -# PC133 SDRAM controller +# MIG memory controller # -# CONFIG_SDCTRL is not set +# CONFIG_MIG_DDR2 is not set # -# On-chip RAM/ROM +# MIG Series 7 memory controller # -# CONFIG_AHBROM_ENABLE is not set -# CONFIG_AHBRAM_ENABLE is not set +CONFIG_MIG_SERIES7=y +# CONFIG_AHBSTAT_ENABLE is not set # -# Ethernet -# -CONFIG_GRETH_ENABLE=y -# CONFIG_GRETH_GIGA is not set -# CONFIG_GRETH_FIFO4 is not set -# CONFIG_GRETH_FIFO8 is not set -# CONFIG_GRETH_FIFO16 is not set -CONFIG_GRETH_FIFO32=y -# CONFIG_GRETH_FIFO64 is not set - -# -# CAN -# -# CONFIG_CAN_ENABLE is not set - -# -# SPI +# On-chip RAM/ROM # +# CONFIG_AHBROM_ENABLE is not set +CONFIG_AHBRAM_ENABLE=y +# CONFIG_AHBRAM_SZ1 is not set +# CONFIG_AHBRAM_SZ2 is not set +CONFIG_AHBRAM_SZ4=y +# CONFIG_AHBRAM_SZ8 is not set +# CONFIG_AHBRAM_SZ16 is not set +# CONFIG_AHBRAM_SZ32 is not set +# CONFIG_AHBRAM_SZ64 is not set +CONFIG_AHBRAM_START=A00 # -# SPI controller(s) +# Ethernet # -# CONFIG_SPICTRL_ENABLE is not set +# CONFIG_GRETH_ENABLE is not set # # UARTs, timers and irq control @@ -311,10 +295,10 @@ CONFIG_GRETH_FIFO32=y CONFIG_UART1_ENABLE=y # CONFIG_UA1_FIFO1 is not set # CONFIG_UA1_FIFO2 is not set -CONFIG_UA1_FIFO4=y +# CONFIG_UA1_FIFO4 is not set # CONFIG_UA1_FIFO8 is not set # CONFIG_UA1_FIFO16 is not set -# CONFIG_UA1_FIFO32 is not set +CONFIG_UA1_FIFO32=y CONFIG_IRQ3_ENABLE=y # CONFIG_IRQ3_SEC is not set CONFIG_GPT_ENABLE=y @@ -324,6 +308,10 @@ CONFIG_GPT_TW=32 CONFIG_GPT_IRQ=8 CONFIG_GPT_SEPIRQ=y # CONFIG_GPT_WDOGEN is not set +CONFIG_GRGPIO_ENABLE=y +CONFIG_GRGPIO_WIDTH=8 +CONFIG_GRGPIO_IMASK=0000 +CONFIG_I2C_ENABLE=y # # Keybord and VGA interface @@ -333,13 +321,18 @@ CONFIG_GPT_SEPIRQ=y # CONFIG_SVGA_ENABLE is not set # -# Gleichmann Options +# SPI +# + +# +# SPI memory controller +# +# CONFIG_SPIMCTRL is not set + # -# CONFIG_AHB2HPI_ENABLE is not set -# CONFIG_ADCDAC_ENABLE is not set -# CONFIG_SPI_OC_ENABLE is not set -# CONFIG_MULTIIO_ENABLE is not set -# CONFIG_AC97_OC_ENABLE is not set +# SPI controller(s) +# +# CONFIG_SPICTRL_ENABLE is not set # # VHDL Debugging diff --git a/designs/leon3-xilinx-kc705/Makefile b/designs/leon3-xilinx-kc705/Makefile new file mode 100644 index 00000000..435b5081 --- /dev/null +++ b/designs/leon3-xilinx-kc705/Makefile @@ -0,0 +1,67 @@ +include .config + +GRLIB=../.. +TOP=leon3mp +BOARD=xilinx-kc705-xc7k325t +DESIGN=leon3-xilinx-kc705 + +include $(GRLIB)/boards/$(BOARD)/Makefile.inc + +DEVICE=$(PART)$(PACKAGE)-$(SPEED) +XDC=$(GRLIB)/boards/$(BOARD)/$(BOARD).xdc + +VHDLSYNFILES= \ + config.vhd ahbrom.vhd leon3mp.vhd ./ddr_dummy.vhd +VHDLSIMFILES=testbench.vhd +SIMTOP=testbench +BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut +CLEAN=soft-clean +VCOMOPT=-explicit +ifeq ($(CONFIG_MIG_SERIES7),y) +VLOGOPT= +define+1Gb +define+sg125 +define+x8 +VSIMOPT= -gUSE_MIG_INTERFACE_MODEL=true -gdisas=1 -gDEBUG=0 -i -do preload_ddr3_dimm.do -t ps -novopt +notimingchecks -L secureip_ver -L xilinxcorelib_ver -L unisims_ver glbl $(SIMTOP) +else +VSIMOPT= -gdisas=1 -i -t ps $(SIMTOP) +endif +TECHLIBS = secureip unisim +EXTRA_SOFT = gen_hex_dim + +LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ + tmtc openchip ihp usbhc spw gsi cypress hynix \ + spansion leon4 leon4v0 secureip +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci ambatest can \ + usb grusbhc spacewire ascs slink spi hcan \ + leon4 leon4v0 l2cache pwm gr1553b iommu ac97 secureip +FILESKIP = grcan.vhd ddr2.v mobile_ddr.v + +include $(GRLIB)/bin/Makefile +include $(GRLIB)/software/leon3/Makefile + +################## project specific targets ########################## + +all: help-local + +help-local: help + @echo + @echo " design specific targets:" + @echo " (Only needed to generate and compile MIG Series7)" + @echo + @echo " make compile_xilinx_verilog_lib : compile xilinx library" + @echo " make clean_xilinx_verilog_lib : remove xilinx library" + @echo " make mig_series7 : create xilinx memory controller using coregen." + @echo " make mig_series7_clean : remove generated memory controller" + @echo + @echo " ================================================================" + @echo " Quick start guide for simulation of systest.c" + @echo + @echo " 1. Setup search paths for Xilinx, GCC and Modelsim " + @echo " 2. make vsim" + @echo " 3. make mig_series7" + @echo " 4. make soft" + @echo " 5. make vsim-launch" + @echo + @echo " Please note that this quick start guide will compile and simulate" + @echo " a preconfigured version of the leon3 processor system." + @echo " For customizing the leon3 susbsystem run make 'xconfig'" + @echo " ================================================================" + @echo diff --git a/designs/leon3-xilinx-kc705/README.txt b/designs/leon3-xilinx-kc705/README.txt new file mode 100644 index 00000000..7a040048 --- /dev/null +++ b/designs/leon3-xilinx-kc705/README.txt @@ -0,0 +1,225 @@ +This leon3 design is tailored to the Xilinx kintex-7 KC705 board + +http://www.xilinx.com/kc705 + +Simulation and synthesis +------------------------ + +The design uses the Xilinx MIG memory interface with an AHB-2.0 +interface. The MIG source code cannot be distributed due to the +prohibitive Xilinx license, so the MIG must be re-generated with +coregen before simulation and synthesis can be done. + +To generate the MIG and install the Xilinx unisim simulation +library, do as follows: + + make vsim + make mig_series7 + +To simulate and run systest.c on the Leon design using the memory +controller from Xilinx use the make targets: + + make soft + make vsim-launch + +With the generic USE_MIG_INTERFACE_MODEL can the user select to use the real +XILINX memory contoller + MICRON memory model or a simplified model. For speed +select the simplified model by setting the generic USE_MIG_INTERFACE_MODEL to TRUE. + +Synthesis will ONLY work with Vivado 2012.02 installed or newer, and +the XILINX variable properly set in the shell. To synthesize the design, do + + make vivado + +and then + + make vivado-prog-fpga + + or use xilinx programming tool + + impact -b vivado/leon3-xilinx-kc705/leon3-xilinx-kc705.runs/impl_1/leon3mp.bit + +to program the FPGA. + +The MIG can be disabled either by deselecting the MIG controller in 'xconfig' or +manually editing the config.vhd file. When no MIG is present in the system normal +GRLIB flow can be used and no extra compile steps are needed. Also when when no +MIG is present it is possible to control and set the system frequency via xconfig. +Note that the system frequency can be modified via Xilinx Coregen when the +MIG is present. + +Compiling and launching modelsim when no memory controller is present: + + make vsim + make vsim-launch + +Simulation options +------------------ + +All options are set either by editing the testbench or specify/modify the generic +default value when launching the simulator. For Modelsim use the option "-g" i.e. +to enable processor disassembly to console launch modelsim with the option: "-gdisas=1" + +USE_MIG_INTERFACE_MODEL - Use MIG simulation model for faster simulation run time + +disas - Enable processor disassembly to console + +DEBUG - Enable extra debug information when using Micron DDR3 models + +Design specifics +---------------- + +* Synthesis should be done using Vivado 2012.02 or newer + +* The DDR3 controller is implemented with Xilinx MIG Series7 1.6 and + runs of the 200 MHz clock. The DDR3 memory runs at 400 MHz + (DDR3-800). grmon-2.0.30-74 or later is needed to detect the + DDR3 memory. + +* The AHB clock is generated by the MMCM module in the DDR3 + controller, and can be controlled via Coregen. When the + MIG DDR3 controller isn't present the AHB clock is generated + from CLKGEN, and can be controlled via xconfig + +* System reset is mapped to the EAST button + (This is since the CPU RESET button pin is used for DDR VTP) + +* DSU break is mapped to GPIO east button + +* LED 0 indicates processor in debug mode + +* LED 1 indicates processor in error mode, execution halted + +* LED 2 indicates DDR3 PHY initialization done (Only valid when MIG is present) + +* LED 3 indicates internal PLL has locked (Only valid when MIG isn't present) + +* 16-bit flash prom can be read at address 0. It can be programmed + with GRMON version 2.0.30-74 or later. + +* The system can be simulated with xilinxs memory interface in normal or fast mode. + For normal mode i.e. with the MIG IP and Memory models from MICRON all simulaion libraries + needs to be installed and compiled with the following command: Please, note the MIG Series7 + only have to be generated if it is going to be used in the system. + + make vsim + make mig_series7 + + Then rebuild the scripts and simulation model: + + make distclean vsim + + Modelsim v10.1 or newer is required and simulate Xilinx memory + controller for Series 7. + + The normal leon3 test bench can be executed as the DDR3 model + is pre-loading with the systest. A model of the DDR3 interface + exist and can be used for faster simulations and software debug + +* The application UART1 is connected to the USB/RS232 connector + +* The JTAG DSU interface is enabled and accesible via the JTAG port. + Start grmon with -xilusb to connect. + + +* Output from GRMON is: + + grmon -xilusb + + GRMON2 LEON debug monitor v2.0.30-149-ga91ee12 internal version + + Copyright (C) 2012 Aeroflex Gaisler - All rights reserved. + For latest updates, go to http://www.gaisler.com/ + Comments or bug-reports to support@gaisler.com + + +Parsing -xilusb +Xilusb: Cable type/rev : 0x3 + JTAG chain (1): xc7k325t + +Commands missing help: + debug + + GRLIB build version: 4118 + Detected frequency: 100 MHz + + Component Vendor + LEON3 SPARC V8 Processor Aeroflex Gaisler + AHB Debug UART Aeroflex Gaisler + JTAG Debug Link Aeroflex Gaisler + LEON2 Memory Controller European Space Agency + AHB/APB Bridge Aeroflex Gaisler + LEON3 Debug Support Unit Aeroflex Gaisler + Single-port AHB SRAM module Aeroflex Gaisler + Unknown device Aeroflex Gaisler + Single-port AHB SRAM module Aeroflex Gaisler + Generic UART Aeroflex Gaisler + Multi-processor Interrupt Ctrl. Aeroflex Gaisler + Modular Timer Unit Aeroflex Gaisler + AMBA Wrapper for OC I2C-master Aeroflex Gaisler + General Purpose I/O port Aeroflex Gaisler + + Use command 'info sys' to print a detailed report of attached cores + +grmon2> info sys + cpu0 Aeroflex Gaisler LEON3 SPARC V8 Processor + AHB Master 0 + ahbuart0 Aeroflex Gaisler AHB Debug UART + AHB Master 1 + APB: 80000700 - 80000800 + Baudrate 115200, AHB frequency 100.00 MHz + ahbjtag0 Aeroflex Gaisler JTAG Debug Link + AHB Master 2 + mctrl0 European Space Agency LEON2 Memory Controller + AHB: 00000000 - 20000000 + APB: 80000000 - 80000100 + 16-bit prom @ 0x00000000 + apbmst0 Aeroflex Gaisler AHB/APB Bridge + AHB: 80000000 - 80100000 + dsu0 Aeroflex Gaisler LEON3 Debug Support Unit + AHB: 90000000 - A0000000 + AHB trace: 256 lines, 32-bit bus + CPU0: win 8, hwbp 2, itrace 256, V8 mul/div, srmmu, lddel 1 + stack pointer 0x20000ff0 + icache 4 * 8 kB, 32 B/line dir + dcache 4 * 8 kB, 32 B/line dir + ahbram0 Aeroflex Gaisler Single-port AHB SRAM module + AHB: 20000000 - 20100000 + 32-bit static ram: 4 kB @ 0x20000000 + adev7 Aeroflex Gaisler Unknown device + AHB: 40000000 - 48000000 + APB: 80000400 - 80000500 + ahbram1 Aeroflex Gaisler Single-port AHB SRAM module + AHB: A0000000 - A0100000 + 32-bit static ram: 4 kB @ 0xa0000000 + uart0 Aeroflex Gaisler Generic UART + APB: 80000100 - 80000200 + IRQ: 2 + Baudrate 38343 + irqmp0 Aeroflex Gaisler Multi-processor Interrupt Ctrl. + APB: 80000200 - 80000300 + gptimer0 Aeroflex Gaisler Modular Timer Unit + APB: 80000300 - 80000400 + IRQ: 8 + 8-bit scalar, 2 * 32-bit timers, divisor 100 + i2cmst0 Aeroflex Gaisler AMBA Wrapper for OC I2C-master + APB: 80000800 - 80000900 + IRQ: 11 + gpio0 Aeroflex Gaisler General Purpose I/O port + APB: 80000A00 - 80000B00 + +grmon2> load systest.exe + 40000000 .text 112.2kB / 112.2kB [===============>] 100% + 40020000 .data 163.1kB / 163.1kB [===============>] 100% + Total size: 275.28kB (1.19Mbit/s) + Entry point 0x40000000 + Image /home/ringhage/grlib_git/designs/leon3-xilinx-kc705/systest.exe loaded + +grmon2> verify systest.exe + 40000000 .text 112.2kB / 112.2kB [===============>] 100% + 40020000 .data 163.1kB / 163.1kB [===============>] 100% + Total size: 275.28kB (85.23kbit/s) + Entry point 0x40000000 + Image of /home/ringhage/grlib_git/designs/leon3-xilinx-kc705/systest.exe verified without errors + +grmon2> diff --git a/designs/leon3-xilinx-kc705/ahb2mig.vhd b/designs/leon3-xilinx-kc705/ahb2mig.vhd new file mode 100644 index 00000000..bde8c45b --- /dev/null +++ b/designs/leon3-xilinx-kc705/ahb2mig.vhd @@ -0,0 +1,708 @@ +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler +-- +-- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +------------------------------------------------------------------------------- +-- Entity: ahb2mig +-- File: ahb2mig.vhd +-- Author: Fredrik Ringhage - Aeroflex Gaisler AB +-- +-- This is a AHB-2.0 interface for the Xilinx Virtex-7 MIG. +-- +------------------------------------------------------------------------------- + +library ieee,work; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library grlib; +use grlib.amba.all; +use grlib.stdlib.all; +use grlib.devices.all; + +entity ahb2mig is + generic( + hindex : integer := 0; + haddr : integer := 0; + hmask : integer := 16#f00#; + pindex : integer := 0; + paddr : integer := 0; + pmask : integer := 16#fff#; + maxwriteburst : integer := 8; + maxreadburst : integer := 8; + SIM_BYPASS_INIT_CAL : string := "OFF"; + SIMULATION : string := "FALSE"; + USE_MIG_INTERFACE_MODEL : boolean := false + ); + port( + ddr3_dq : inout std_logic_vector(63 downto 0); + ddr3_dqs_p : inout std_logic_vector(7 downto 0); + ddr3_dqs_n : inout std_logic_vector(7 downto 0); + ddr3_addr : out std_logic_vector(13 downto 0); + ddr3_ba : out std_logic_vector(2 downto 0); + ddr3_ras_n : out std_logic; + ddr3_cas_n : out std_logic; + ddr3_we_n : out std_logic; + ddr3_reset_n : out std_logic; + ddr3_ck_p : out std_logic_vector(0 downto 0); + ddr3_ck_n : out std_logic_vector(0 downto 0); + ddr3_cke : out std_logic_vector(0 downto 0); + ddr3_cs_n : out std_logic_vector(0 downto 0); + ddr3_dm : out std_logic_vector(7 downto 0); + ddr3_odt : out std_logic_vector(0 downto 0); + ahbso : out ahb_slv_out_type; + ahbsi : in ahb_slv_in_type; + apbi : in apb_slv_in_type; + apbo : out apb_slv_out_type; + calib_done : out std_logic; + rst_n_syn : in std_logic; + rst_n_async : in std_logic; + clk_amba : in std_logic; + sys_clk_p : in std_logic; + sys_clk_n : in std_logic; + ui_clk : out std_logic; + ui_clk_sync_rst : out std_logic + ); +end ; + +architecture rtl of ahb2mig is + +type bstate_type is (idle, start, read_cmd, read_data, read_output, write_cmd, write_burst); + +constant hconfig : ahb_config_type := ( + 0 => ahb_device_reg ( VENDOR_GAISLER, GAISLER_MIGDDR3, 0, 0, 0), + 4 => ahb_membar(haddr, '1', '1', hmask), + others => zero32); + +constant pconfig : apb_config_type := ( + 0 => ahb_device_reg ( VENDOR_GAISLER, GAISLER_MIGDDR3, 0, 0, 0), + 1 => apb_iobar(paddr, pmask)); + +type reg_type is record + bstate : bstate_type; + cmd : std_logic_vector(2 downto 0); + cmd_en : std_logic; + wr_en : std_logic; + wr_end : std_logic; + cmd_count : unsigned(6 downto 0); + wr_count : unsigned(6 downto 0); + rd_count : unsigned(6 downto 0); + hready : std_logic; + hwrite : std_logic; + hwdata : std_logic_vector(31 downto 0); + hwdata_burst : std_logic_vector(1023 downto 0); + mask_burst : std_logic_vector(127 downto 0); + htrans : std_logic_vector(1 downto 0); + hburst : std_logic_vector(2 downto 0); + hsize : std_logic_vector(2 downto 0); + hrdata : std_logic_vector(31 downto 0); + haddr : std_logic_vector(31 downto 0); + haddr_start : std_logic_vector(31 downto 0); + haddr_burst : std_logic_vector(31 downto 0); + hmaster : std_logic_vector(3 downto 0); + int_buffer : unsigned(1024-1 downto 0); + rd_buffer : unsigned(1024-1 downto 0); + wdf_data_buffer : std_logic_vector(511 downto 0); + wdf_mask_buffer : std_logic_vector(63 downto 0); +end record; + +type mig_in_type is record + cmd_en : std_logic; + app_addr : std_logic_vector(27 downto 0); + app_cmd : std_logic_vector(2 downto 0); + app_en : std_logic; + app_wdf_data : std_logic_vector(511 downto 0); + app_wdf_end : std_logic; + app_wdf_mask : std_logic_vector(63 downto 0); + app_wdf_wren : std_logic; +end record; + +type mig_out_type is record + app_rd_data : std_logic_vector(511 downto 0); + app_rd_data_end : std_logic; + app_rd_data_valid : std_logic; + app_rdy : std_logic; + app_wdf_rdy : std_logic; +end record; + +signal r, rin : reg_type; +signal migin : mig_in_type; +signal migout,migoutraw : mig_out_type; + +component mig is + generic( + SIM_BYPASS_INIT_CAL : string := "OFF"; + SIMULATION : string := "FALSE" + ); + port ( + ddr3_dq : inout std_logic_vector(63 downto 0); + ddr3_addr : out std_logic_vector(13 downto 0); + ddr3_ba : out std_logic_vector(2 downto 0); + ddr3_ras_n : out std_logic; + ddr3_cas_n : out std_logic; + ddr3_we_n : out std_logic; + ddr3_reset_n : out std_logic; + ddr3_dqs_n : inout std_logic_vector(7 downto 0); + ddr3_dqs_p : inout std_logic_vector(7 downto 0); + ddr3_ck_p : out std_logic_vector(0 downto 0); + ddr3_ck_n : out std_logic_vector(0 downto 0); + ddr3_cke : out std_logic_vector(0 downto 0); + ddr3_cs_n : out std_logic_vector(0 downto 0); + ddr3_dm : out std_logic_vector(7 downto 0); + ddr3_odt : out std_logic_vector(0 downto 0); + sys_clk_p : in std_logic; + sys_clk_n : in std_logic; + app_addr : in std_logic_vector(27 downto 0); + app_cmd : in std_logic_vector(2 downto 0); + app_en : in std_logic; + app_wdf_data : in std_logic_vector(511 downto 0); + app_wdf_end : in std_logic; + app_wdf_mask : in std_logic_vector(63 downto 0); + app_wdf_wren : in std_logic; + app_rd_data : out std_logic_vector(511 downto 0); + app_rd_data_end : out std_logic; + app_rd_data_valid : out std_logic; + app_rdy : out std_logic; + app_wdf_rdy : out std_logic; + app_sr_req : in std_logic; + app_sr_active : out std_logic; + app_ref_req : in std_logic; + app_ref_ack : out std_logic; + app_zq_req : in std_logic; + app_zq_ack : out std_logic; + ui_clk : out std_logic; + ui_clk_sync_rst : out std_logic; + init_calib_complete : out std_logic; + sys_rst : in std_logic + ); +end component mig; + +component mig_interface_model is + port ( + app_addr : in std_logic_vector(27 downto 0); + app_cmd : in std_logic_vector(2 downto 0); + app_en : in std_logic; + app_wdf_data : in std_logic_vector(511 downto 0); + app_wdf_end : in std_logic; + app_wdf_mask : in std_logic_vector(63 downto 0); + app_wdf_wren : in std_logic; + app_rd_data : out std_logic_vector(511 downto 0); + app_rd_data_end : out std_logic; + app_rd_data_valid : out std_logic; + app_rdy : out std_logic; + app_wdf_rdy : out std_logic; + ui_clk : out std_logic; + ui_clk_sync_rst : out std_logic; + init_calib_complete : out std_logic; + sys_rst : in std_logic + ); +end component mig_interface_model; + + +begin + + comb: process( rst_n_syn, r, ahbsi, migout ) + + -- Design temp variables + variable v : reg_type; + variable wmask : std_logic_vector(3 downto 0); + variable writedata : std_logic_vector(31 downto 0); + variable shift_steps : natural; + variable hrdata_temp : unsigned(v.rd_buffer'length-1 downto 0); + variable hrdata_shift_steps : natural; + variable shift_steps_write : natural; + variable shift_steps_write_mask : natural; + + begin + + -- Make all register visible for the statemachine + v := r; + + case r.bstate is + when idle => + + -- Clear Read data response + v.hrdata := (others => '0'); + + -- Clear old pointers and MIG command signals + v.cmd := (others => '0'); + v.cmd_en := '0'; + v.wr_en := '0'; + v.wr_end := '0'; + v.hready := '1'; + v.hwrite := '0'; + v.hwdata_burst := (others => '0'); + v.mask_burst := (others => '0'); + v.rd_count := (others => '0'); + + -- Check if this is a single or burst transfer (and not a BUSY transfer) + if ((ahbsi.hready and ahbsi.hsel(hindex) and ahbsi.htrans(1)) = '1' + and (ahbsi.hwrite = '0' or ahbsi.hwrite = '1' )) then + + -- Hold info regarding transaction and execute + v.hburst := ahbsi.hburst; + v.hwrite := ahbsi.hwrite; + v.hsize := ahbsi.hsize; + v.hmaster := ahbsi.hmaster; + v.hready := '0'; + v.htrans := ahbsi.htrans; + v.bstate := start; + v.haddr := "0" & "000000" & ahbsi.haddr(27 downto 6) & "000"; + v.haddr_start := ahbsi.haddr; + v.cmd := (others => '0'); + v.cmd(0) := not ahbsi.hwrite; + + end if; + + when start => + -- Check if a write command shall be issued to the DDR3 memory + if r.hwrite = '1' then + + case r.hsize is + when "000" => + case r.haddr_start(1 downto 0) is + when "00" => wmask := "0010"; + when "01" => wmask := "0001"; + when "10" => wmask := "1000"; + when others => wmask := "0100"; + end case; + + when "001" => + case r.haddr_start(1) is + when '0' => wmask := "0011"; + when others => wmask := "1100"; + end case; + when "010" => wmask := "1111"; + when others => wmask := "1111"; + end case; + + -- Work out write offset/start + if ((r.htrans = "11") or ahbsi.htrans = "11") then + shift_steps_write := to_integer(unsigned(v.rd_count - 2)&"00000") + + to_integer(unsigned(r.haddr_start(5 downto 2))&"00000"); + shift_steps_write_mask := to_integer(unsigned(v.rd_count - 2)&"00") + + to_integer(unsigned(r.haddr_start(5 downto 2))&"00") ; + else + shift_steps_write := to_integer(unsigned(v.rd_count)&"00000") + + to_integer(unsigned(r.haddr_start(5 downto 2))&"00000"); + shift_steps_write_mask := to_integer(unsigned(v.rd_count)&"00") + + to_integer(unsigned(r.haddr_start(5 downto 2))&"00") ; + end if; + + if (ahbsi.htrans = "11") then + v.htrans := "11"; + end if; + + -- generate mask for complete burst + v.mask_burst := v.mask_burst or std_logic_vector(shift_left(resize(unsigned(wmask), + v.mask_burst'length),shift_steps_write_mask)); + + -- fetch all wdata before write to memory can begin + writedata := ahbsi.hwdata(15 downto 0) & ahbsi.hwdata(31 downto 16); + v.hwdata_burst := v.hwdata_burst or std_logic_vector(shift_left(resize(unsigned(writedata), + v.hwdata_burst'length ) ,shift_steps_write)); + + -- Check if this is acont burst longer than internal buffer + if (ahbsi.htrans = "11") then + + if ((v.rd_count < maxwriteburst) and (v.rd_count > 0)) then + v.hready := '1'; + else + v.hready := '0'; + end if; + + if (v.rd_count >= maxwriteburst) and (r.hready = '0') then + if (r.htrans = "11") then + v.bstate := write_cmd; + end if; + v.htrans := ahbsi.htrans; + v.haddr_burst := ahbsi.haddr; + end if; + + else + v.bstate := write_cmd; + v.htrans := ahbsi.htrans; + end if; + + -- Else issue a read command when ready + else + if migout.app_rdy = '1' and migout.app_wdf_rdy = '1' then + v.cmd := "001"; + v.bstate := read_cmd; + v.htrans := ahbsi.htrans; + v.cmd_count := to_unsigned(0,v.cmd_count'length); + + -- Always do a read burst + if (ahbsi.htrans /= "11") then + v.rd_count := to_unsigned(0,v.rd_count'length); + else + v.rd_count := to_unsigned(1,v.rd_count'length); + end if; + end if; + end if; + + when write_cmd => + -- Check if burst has ended due to max size burst + if (ahbsi.hsel(hindex) = '0') then + v.htrans := (others => '0'); + end if; + + -- Stop when addr and write command is accepted by mig + if (v.wr_count >= 2) and (v.cmd_count >= 2) then + if (r.htrans /= "11") then + --v.bstate := idle; + if ((ahbsi.hsel(hindex) = '1') and (ahbsi.htrans = "11")) then + -- Hold info regarding transaction and execute + v.hburst := ahbsi.hburst; + v.hwrite := ahbsi.hwrite; + v.hsize := ahbsi.hsize; + v.hmaster := ahbsi.hmaster; + v.hready := '0'; + v.htrans := ahbsi.htrans; + v.bstate := start; + + -- Need to work-out the offset by looking at transfer size + if (ahbsi.hsize = "000") then + v.haddr_start := ahbsi.haddr - 1; + elsif (ahbsi.hsize = "001") then + v.haddr_start := ahbsi.haddr - 2; + else + v.haddr_start := ahbsi.haddr - 4; + end if; + + v.haddr := "0"&"000000" & v.haddr_start(27 downto 6)&"000"; + v.cmd := (others => '0'); + v.cmd(0) := not ahbsi.hwrite; + v.hwdata_burst := (others => '0'); + v.mask_burst := (others => '0'); + v.rd_count := (others => '0'); + v.cmd_count := (others => '0'); + v.wr_count := (others => '0'); + v.rd_count := (others => '0'); + else + v.bstate := idle; + end if; + + else -- Cont burst and work out new offset for next write command + v.bstate := write_burst; + v.haddr := "0" & "000000" & r.haddr_burst(27 downto 6) & "000"; + v.haddr_start := r.haddr_burst; + end if; + end if; + + when write_burst => + v.bstate := start; + v.hready := '1'; + + when read_cmd => + v.hready := '0'; + + v.rd_count := (others => '0'); + + -- stop when read command is accepted ny mig. + if (v.cmd_count >= 2) then + v.bstate := read_data; + end if; + + when read_data => + + -- We are not ready yet so issue a read command to the memory controller + v.hready := '0'; + + -- If read data is valid store data in buffers + if (migout.app_rd_data_valid = '1') then + if (v.rd_count = 0) then + v.int_buffer(511 downto 0) := unsigned(migout.app_rd_data); + v.rd_count := to_unsigned(1,v.rd_count'length); + -- Check if this wasn't a burst command + if (v.htrans /= "11") then + v.rd_count := to_unsigned(2,v.rd_count'length); + v.int_buffer(1023 downto 512) := (others => '0'); + end if; + else + v.int_buffer(1023 downto 512) := unsigned(migout.app_rd_data); + v.rd_count := to_unsigned(2,v.rd_count'length); + end if; + end if; + + if (v.rd_count >= 2) then + shift_steps := to_integer(unsigned(r.haddr_start(5 downto 2))&"00000"); + v.rd_buffer := shift_right(v.int_buffer,shift_steps); + v.bstate := read_output; + v.rd_count := to_unsigned(0,v.rd_count'length); + end if; + + when read_output => + -- Data is fetched from memory and ready to be transfered + v.hready := '1'; + + -- uses the "wr_count" signal to keep track of number of bytes output'd to AHB + -- Select correct 32bit to output + hrdata_shift_steps := to_integer(v.wr_count & "00000"); + hrdata_temp := shift_right(v.rd_buffer,hrdata_shift_steps); + + case r.hsize is + when "000" => + case r.haddr_start(1 downto 0) is + when "11" => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(23 downto 16) + & hrdata_temp(23 downto 16) & hrdata_temp(23 downto 16) & hrdata_temp(23 downto 16)); + when "10" => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(31 downto 24) + & hrdata_temp(31 downto 24) & hrdata_temp(31 downto 24) & hrdata_temp(31 downto 24)); + when "01" => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(7 downto 0) + & hrdata_temp(7 downto 0) & hrdata_temp(7 downto 0) & hrdata_temp(7 downto 0)); + when others => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(15 downto 8) + & hrdata_temp(15 downto 8) & hrdata_temp(15 downto 8) & hrdata_temp(15 downto 8)); + end case; + when "001" => + case r.haddr_start(1) is + when '1' => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(31 downto 16) + & hrdata_temp(31 downto 16)); + when others => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(15 downto 0) + & hrdata_temp(15 downto 0)); + end case; + when "010" => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(15 downto 0) & hrdata_temp(31 downto 16)); + when others => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(15 downto 0) & hrdata_temp(31 downto 16)); + end case; + + -- Count number of bytes send + v.wr_count := v.wr_count + 1; + + -- Check if this was the last transaction + if (v.wr_count >= maxreadburst) then + v.bstate := idle; + v.wr_count := (others => '0'); + end if; + + -- Check if transfer was interrupted or no burst + if (ahbsi.htrans = "00") or ((ahbsi.htrans = "10") and (v.wr_count < 7)) then + v.bstate := idle; + v.wr_count := (others => '0'); + end if; + + when others => + v.bstate := idle; + end case; + + if ((ahbsi.hsel(hindex) = '0') and ((r.bstate = write_cmd) or (r.bstate = write_burst) or (r.bstate = start))) then + v.hready := '0'; + elsif ((ahbsi.htrans /= "11") and (r.bstate = start)) then + v.hready := '0'; + end if; + + if rst_n_syn = '0' then + v.bstate := idle; v.hready := '1'; v.cmd_en := '0'; v.wr_en := '0'; v.wr_end := '0'; + end if; + + rin <= v; + + end process; + + comb_hready: process(r, ahbsi) + begin + if ((ahbsi.hsel(hindex) = '0') and ((r.bstate = write_cmd) or (r.bstate = write_burst) or (r.bstate = start))) then + ahbso.hready <= '0'; + elsif ((ahbsi.htrans /= "11") and (r.bstate = start)) then + ahbso.hready <= '0'; + else + ahbso.hready <= r.hready; + end if; + end process; + + ahbso.hresp <= "00"; --r.hresp; + ahbso.hrdata <= r.hrdata; + + migin.app_addr <= r.haddr(27 downto 2) & "00"; + migin.app_cmd <= r.cmd; + migin.app_en <= r.cmd_en; + + migin.app_wdf_data <= r.wdf_data_buffer; + migin.app_wdf_end <= r.wr_end; + migin.app_wdf_mask <= r.wdf_mask_buffer; + migin.app_wdf_wren <= r.wr_en; + + ahbso.hconfig <= hconfig; + ahbso.hirq <= (others => '0'); + ahbso.hindex <= hindex; + ahbso.hsplit <= (others => '0'); + + apbo.pindex <= pindex; + apbo.pconfig <= pconfig; + apbo.pirq <= (others => '0'); + apbo.prdata <= (others => '0'); + + regs : process(clk_amba) + begin + if rising_edge(clk_amba) then + + -- Copy variables into registers (Default values) + r <= rin; + + -- add extra pipe-stage for read data + migout <= migoutraw; + + -- IDLE Clear + if r.bstate = idle then + r.cmd_count <= (others => '0'); + r.wr_count <= (others => '0'); + r.rd_count <= (others => '0'); + end if; + + -- Read AHB write data + if (r.bstate = start) and (r.hwrite = '1') then + if ((r.htrans = "11") and (r.rd_count = 0)) then + r.rd_count <= (others => '0'); + r.htrans <= "10"; + else + r.rd_count <= r.rd_count + 1; + end if; + end if; + + -- Write command repsonse + if r.bstate = write_cmd then + if (r.cmd_count < 1) then + r.cmd_en <= '1'; + end if; + if (migoutraw.app_rdy = '1') and (r.cmd_en = '1' ) then + r.cmd_count <= r.cmd_count + 1; + if (r.cmd_count = 0 ) then + r.haddr <= r.haddr + 8; + end if; + if (r.cmd_count >= 1) then + r.cmd_en <= '0'; + end if; + end if; + if (r.wr_count < 1 ) then + r.wr_en <= '1'; + r.wr_end <= '1'; + r.wdf_mask_buffer <= not r.mask_burst(63 downto 0); + r.wdf_data_buffer <= r.hwdata_burst(511 downto 0); + end if; + if (migoutraw.app_wdf_rdy = '1') and (r.wr_en = '1' ) then + r.wdf_mask_buffer <= not r.mask_burst(127 downto 64); + r.wdf_data_buffer <= r.hwdata_burst(1023 downto 512); + r.wr_count <= r.wr_count + 1; + if (r.wr_count >= 1 ) then + r.wr_en <= '0'; + r.wr_end <= '0'; + end if; + end if; + end if; + + -- Burst Write Wait + if r.bstate = write_burst then + r.cmd_count <= (others => '0'); + r.wr_count <= (others => '0'); + r.rd_count <= (others => '0'); + -- To make it easier to debug + r.mask_burst <= (others => '0'); + r.hwdata_burst <= (others => '0'); + end if; + + -- Read command repsonse + if r.bstate = read_cmd then + if (r.cmd_count < 1) then + r.cmd_en <= '1'; + end if; + if (migoutraw.app_rdy = '1') and (r.cmd_en = '1' ) then + r.cmd_count <= r.cmd_count + 1; + if (r.cmd_count = 0 ) then + r.haddr <= r.haddr + 8; + if (ahbsi.htrans /= "11") then + r.cmd_en <= '0'; + r.cmd_count <= to_unsigned(2,r.cmd_count'length); + end if; + end if; + if (r.cmd_count >= 1) then + r.cmd_en <= '0'; + end if; + end if; + end if; + end if; + end process; + + gen_mig : if (USE_MIG_INTERFACE_MODEL /= true) generate + MCB_inst : mig + generic map( + SIM_BYPASS_INIT_CAL => SIM_BYPASS_INIT_CAL, + SIMULATION => SIMULATION) + port map ( + ddr3_dq => ddr3_dq, + ddr3_dqs_p => ddr3_dqs_p, + ddr3_dqs_n => ddr3_dqs_n, + ddr3_addr => ddr3_addr, + ddr3_ba => ddr3_ba, + ddr3_ras_n => ddr3_ras_n, + ddr3_cas_n => ddr3_cas_n, + ddr3_we_n => ddr3_we_n, + ddr3_reset_n => ddr3_reset_n, + ddr3_ck_p => ddr3_ck_p, + ddr3_ck_n => ddr3_ck_n, + ddr3_cke => ddr3_cke, + ddr3_cs_n => ddr3_cs_n, + ddr3_dm => ddr3_dm, + ddr3_odt => ddr3_odt, + sys_clk_p => sys_clk_p, + sys_clk_n => sys_clk_n, + app_addr => migin.app_addr, + app_cmd => migin.app_cmd, + app_en => migin.app_en, + app_rdy => migoutraw.app_rdy, + app_wdf_data => migin.app_wdf_data, + app_wdf_end => migin.app_wdf_end, + app_wdf_mask => migin.app_wdf_mask, + app_wdf_wren => migin.app_wdf_wren, + app_wdf_rdy => migoutraw.app_wdf_rdy, + app_rd_data => migoutraw.app_rd_data, + app_rd_data_end => migoutraw.app_rd_data_end, + app_rd_data_valid => migoutraw.app_rd_data_valid, + app_sr_req => '0', + app_sr_active => open, + app_ref_req => '0', + app_ref_ack => open, + app_zq_req => '0', + app_zq_ack => open, + ui_clk => ui_clk, + ui_clk_sync_rst => ui_clk_sync_rst, + init_calib_complete => calib_done, + sys_rst => rst_n_async + ); + end generate gen_mig; + + gen_mig_model : if (USE_MIG_INTERFACE_MODEL = true) generate + MCB_model_inst : mig_interface_model + port map ( + -- user interface signals + app_addr => migin.app_addr, + app_cmd => migin.app_cmd, + app_en => migin.app_en, + app_rdy => migoutraw.app_rdy, + app_wdf_data => migin.app_wdf_data, + app_wdf_end => migin.app_wdf_end, + app_wdf_mask => migin.app_wdf_mask, + app_wdf_wren => migin.app_wdf_wren, + app_wdf_rdy => migoutraw.app_wdf_rdy, + app_rd_data => migoutraw.app_rd_data, + app_rd_data_end => migoutraw.app_rd_data_end, + app_rd_data_valid => migoutraw.app_rd_data_valid, + ui_clk => ui_clk, + ui_clk_sync_rst => ui_clk_sync_rst, + init_calib_complete => calib_done, + sys_rst => rst_n_async + ); + end generate gen_mig_model; + + +end; diff --git a/designs/leon3-xilinx-kc705/ahbrom.vhd b/designs/leon3-xilinx-kc705/ahbrom.vhd new file mode 100644 index 00000000..ac26c7b2 --- /dev/null +++ b/designs/leon3-xilinx-kc705/ahbrom.vhd @@ -0,0 +1,231 @@ + +---------------------------------------------------------------------------- +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2009 Aeroflex Gaisler +---------------------------------------------------------------------------- +-- Entity: ahbrom +-- File: ahbrom.vhd +-- Author: Jiri Gaisler - Gaisler Research +-- Description: AHB rom. 0/1-waitstate read +---------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; +library grlib; +use grlib.amba.all; +use grlib.stdlib.all; +use grlib.devices.all; + +entity ahbrom is + generic ( + hindex : integer := 0; + haddr : integer := 0; + hmask : integer := 16#fff#; + pipe : integer := 0; + tech : integer := 0; + kbytes : integer := 1); + port ( + rst : in std_ulogic; + clk : in std_ulogic; + ahbsi : in ahb_slv_in_type; + ahbso : out ahb_slv_out_type + ); +end; + +architecture rtl of ahbrom is +constant abits : integer := 10; +constant bytes : integer := 560; + +constant hconfig : ahb_config_type := ( + 0 => ahb_device_reg ( VENDOR_GAISLER, GAISLER_AHBROM, 0, 0, 0), + 4 => ahb_membar(haddr, '1', '1', hmask), others => zero32); + +signal romdata : std_logic_vector(31 downto 0); +signal addr : std_logic_vector(abits-1 downto 2); +signal hsel, hready : std_ulogic; + +begin + + ahbso.hresp <= "00"; + ahbso.hsplit <= (others => '0'); + ahbso.hirq <= (others => '0'); + ahbso.hconfig <= hconfig; + ahbso.hindex <= hindex; + + reg : process (clk) + begin + if rising_edge(clk) then + addr <= ahbsi.haddr(abits-1 downto 2); + end if; + end process; + + p0 : if pipe = 0 generate + ahbso.hrdata <= ahbdrivedata(romdata); + ahbso.hready <= '1'; + end generate; + + p1 : if pipe = 1 generate + reg2 : process (clk) + begin + if rising_edge(clk) then + hsel <= ahbsi.hsel(hindex) and ahbsi.htrans(1); + hready <= ahbsi.hready; + ahbso.hready <= (not rst) or (hsel and hready) or + (ahbsi.hsel(hindex) and not ahbsi.htrans(1) and ahbsi.hready); + ahbso.hrdata <= ahbdrivedata(romdata); + end if; + end process; + end generate; + + comb : process (addr) + begin + case conv_integer(addr) is + when 16#00000# => romdata <= X"81D82000"; + when 16#00001# => romdata <= X"03000004"; + when 16#00002# => romdata <= X"821060E0"; + when 16#00003# => romdata <= X"81884000"; + when 16#00004# => romdata <= X"81900000"; + when 16#00005# => romdata <= X"81980000"; + when 16#00006# => romdata <= X"81800000"; + when 16#00007# => romdata <= X"A1800000"; + when 16#00008# => romdata <= X"01000000"; + when 16#00009# => romdata <= X"03002040"; + when 16#0000A# => romdata <= X"8210600F"; + when 16#0000B# => romdata <= X"C2A00040"; + when 16#0000C# => romdata <= X"84100000"; + when 16#0000D# => romdata <= X"01000000"; + when 16#0000E# => romdata <= X"01000000"; + when 16#0000F# => romdata <= X"01000000"; + when 16#00010# => romdata <= X"01000000"; + when 16#00011# => romdata <= X"01000000"; + when 16#00012# => romdata <= X"80108002"; + when 16#00013# => romdata <= X"01000000"; + when 16#00014# => romdata <= X"01000000"; + when 16#00015# => romdata <= X"01000000"; + when 16#00016# => romdata <= X"01000000"; + when 16#00017# => romdata <= X"01000000"; + when 16#00018# => romdata <= X"87444000"; + when 16#00019# => romdata <= X"8608E01F"; + when 16#0001A# => romdata <= X"88100000"; + when 16#0001B# => romdata <= X"8A100000"; + when 16#0001C# => romdata <= X"8C100000"; + when 16#0001D# => romdata <= X"8E100000"; + when 16#0001E# => romdata <= X"A0100000"; + when 16#0001F# => romdata <= X"A2100000"; + when 16#00020# => romdata <= X"A4100000"; + when 16#00021# => romdata <= X"A6100000"; + when 16#00022# => romdata <= X"A8100000"; + when 16#00023# => romdata <= X"AA100000"; + when 16#00024# => romdata <= X"AC100000"; + when 16#00025# => romdata <= X"AE100000"; + when 16#00026# => romdata <= X"90100000"; + when 16#00027# => romdata <= X"92100000"; + when 16#00028# => romdata <= X"94100000"; + when 16#00029# => romdata <= X"96100000"; + when 16#0002A# => romdata <= X"98100000"; + when 16#0002B# => romdata <= X"9A100000"; + when 16#0002C# => romdata <= X"9C100000"; + when 16#0002D# => romdata <= X"9E100000"; + when 16#0002E# => romdata <= X"86A0E001"; + when 16#0002F# => romdata <= X"16BFFFEF"; + when 16#00030# => romdata <= X"81E00000"; + when 16#00031# => romdata <= X"82102002"; + when 16#00032# => romdata <= X"81904000"; + when 16#00033# => romdata <= X"03000004"; + when 16#00034# => romdata <= X"821060E0"; + when 16#00035# => romdata <= X"81884000"; + when 16#00036# => romdata <= X"01000000"; + when 16#00037# => romdata <= X"01000000"; + when 16#00038# => romdata <= X"01000000"; + when 16#00039# => romdata <= X"83480000"; + when 16#0003A# => romdata <= X"8330600C"; + when 16#0003B# => romdata <= X"80886001"; + when 16#0003C# => romdata <= X"02800024"; + when 16#0003D# => romdata <= X"01000000"; + when 16#0003E# => romdata <= X"07000000"; + when 16#0003F# => romdata <= X"8610E178"; + when 16#00040# => romdata <= X"C108C000"; + when 16#00041# => romdata <= X"C118C000"; + when 16#00042# => romdata <= X"C518C000"; + when 16#00043# => romdata <= X"C918C000"; + when 16#00044# => romdata <= X"CD18C000"; + when 16#00045# => romdata <= X"D118C000"; + when 16#00046# => romdata <= X"D518C000"; + when 16#00047# => romdata <= X"D918C000"; + when 16#00048# => romdata <= X"DD18C000"; + when 16#00049# => romdata <= X"E118C000"; + when 16#0004A# => romdata <= X"E518C000"; + when 16#0004B# => romdata <= X"E918C000"; + when 16#0004C# => romdata <= X"ED18C000"; + when 16#0004D# => romdata <= X"F118C000"; + when 16#0004E# => romdata <= X"F518C000"; + when 16#0004F# => romdata <= X"F918C000"; + when 16#00050# => romdata <= X"FD18C000"; + when 16#00051# => romdata <= X"01000000"; + when 16#00052# => romdata <= X"01000000"; + when 16#00053# => romdata <= X"01000000"; + when 16#00054# => romdata <= X"01000000"; + when 16#00055# => romdata <= X"01000000"; + when 16#00056# => romdata <= X"89A00842"; + when 16#00057# => romdata <= X"01000000"; + when 16#00058# => romdata <= X"01000000"; + when 16#00059# => romdata <= X"01000000"; + when 16#0005A# => romdata <= X"01000000"; + when 16#0005B# => romdata <= X"10800005"; + when 16#0005C# => romdata <= X"01000000"; + when 16#0005D# => romdata <= X"01000000"; + when 16#0005E# => romdata <= X"00000000"; + when 16#0005F# => romdata <= X"00000000"; + when 16#00060# => romdata <= X"87444000"; + when 16#00061# => romdata <= X"8730E01C"; + when 16#00062# => romdata <= X"8688E00F"; + when 16#00063# => romdata <= X"12800015"; + when 16#00064# => romdata <= X"03200000"; + when 16#00065# => romdata <= X"05040E00"; + when 16#00066# => romdata <= X"8410A033"; + when 16#00067# => romdata <= X"C4204000"; + when 16#00068# => romdata <= X"0539AE1B"; + when 16#00069# => romdata <= X"8410A260"; + when 16#0006A# => romdata <= X"C4206004"; + when 16#0006B# => romdata <= X"050003FC"; + when 16#0006C# => romdata <= X"C4206008"; + when 16#0006D# => romdata <= X"82103860"; + when 16#0006E# => romdata <= X"C4004000"; + when 16#0006F# => romdata <= X"8530A00C"; + when 16#00070# => romdata <= X"03000004"; + when 16#00071# => romdata <= X"82106009"; + when 16#00072# => romdata <= X"80A04002"; + when 16#00073# => romdata <= X"12800005"; + when 16#00074# => romdata <= X"03200000"; + when 16#00075# => romdata <= X"0539A81B"; + when 16#00076# => romdata <= X"8410A260"; + when 16#00077# => romdata <= X"C4204000"; + when 16#00078# => romdata <= X"05000080"; + when 16#00079# => romdata <= X"82100000"; + when 16#0007A# => romdata <= X"80A0E000"; + when 16#0007B# => romdata <= X"02800005"; + when 16#0007C# => romdata <= X"01000000"; + when 16#0007D# => romdata <= X"82004002"; + when 16#0007E# => romdata <= X"10BFFFFC"; + when 16#0007F# => romdata <= X"8620E001"; + when 16#00080# => romdata <= X"3D1003FF"; + when 16#00081# => romdata <= X"BC17A3E0"; + when 16#00082# => romdata <= X"BC278001"; + when 16#00083# => romdata <= X"9C27A060"; + when 16#00084# => romdata <= X"03100000"; + when 16#00085# => romdata <= X"81C04000"; + when 16#00086# => romdata <= X"01000000"; + when 16#00087# => romdata <= X"01000000"; + when 16#00088# => romdata <= X"00000000"; + when 16#00089# => romdata <= X"00000000"; + when 16#0008A# => romdata <= X"00000000"; + when 16#0008B# => romdata <= X"00000000"; + when 16#0008C# => romdata <= X"00000000"; + when others => romdata <= (others => '-'); + end case; + end process; + -- pragma translate_off + bootmsg : report_version + generic map ("ahbrom" & tost(hindex) & + ": 32-bit AHB ROM Module, " & tost(bytes/4) & " words, " & tost(abits-2) & " address bits" ); + -- pragma translate_on + end; diff --git a/designs/leon3-ge-hpe-midi-ep2s180/config.help b/designs/leon3-xilinx-kc705/config.help similarity index 86% rename from designs/leon3-ge-hpe-midi-ep2s180/config.help rename to designs/leon3-xilinx-kc705/config.help index a39fb533..0b647288 100644 --- a/designs/leon3-ge-hpe-midi-ep2s180/config.help +++ b/designs/leon3-xilinx-kc705/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -699,55 +732,6 @@ Programmable MAC/IP address CONFIG_DSU_ETH_PROG Say Y to make the LSB 4 bits of the EDCL MAC and IP address configurable using the ethi.edcladdr inputs. -USB DSU enable -CONFIG_GRUSB_DCL - Say Y to enable the USB Debug Communication Link - -CONFIG_GRUSB_DCL_ULPI - Select the interface of the USB transceiver that the USBDCL will be - connected to. -PROM/SRAM memory controller -CONFIG_SRCTRL - Say Y here to enable a simple (and small) PROM/SRAM memory controller. - The controller has a fixed number of waitstates, and is primarily - intended for FPGA implementations. The RAM data bus is always 32 bits, - the PROM can be configured to either 8 or 32 bits (hardwired). - -8-bit memory support -CONFIG_SRCTRL_8BIT - If you say Y here, the simple PROM/SRAM memory controller will - implement 8-bit PROM mode. - -PROM waitstates -CONFIG_SRCTRL_PROMWS - Select the number of waitstates for PROM access. - -RAM waitstates -CONFIG_SRCTRL_RAMWS - Select the number of waitstates for RAM access. - -IO waitstates -CONFIG_SRCTRL_IOWS - Select the number of waitstates for IO access. - -Read-modify-write support -CONFIG_SRCTRL_RMW - Say Y here to perform byte- and half-word writes as a - read-modify-write sequence. This is necessary if your - SRAM does not have individual byte enables. If you are - unsure, it is safe to say Y. - -SRAM bank select -CONFIG_SRCTRL_SRBANKS - Select number of SRAM banks. - -SRAM bank size select -CONFIG_SRCTRL_BANKSZ - Select size of SRAM banks in kBytes. - -PROM address bit select -CONFIG_SRCTRL_ROMASEL - Select address bit for PROM bank decoding. Leon2 memory controller CONFIG_MCTRL_LEON2 Say Y here to enable the LEON2 memory controller. The controller @@ -824,34 +808,16 @@ CONFIG_MCTRL_PROGPAGE will allow to dynamically enable/disable page burst by setting bit 17 in MCFG2. -SDRAM controller enable -CONFIG_SDCTRL - Say Y here to enabled a 32/64-bit PC133 SDRAM controller. - -SDRAM controller inverted clock -CONFIG_SDCTRL_INVCLK - If you say Y here, the SDRAM clock will be inverted in respect to the - system clock and the SDRAM signals. This will limit the SDRAM frequency - to 50/66 MHz, but has the benefit that you will not need a PLL to - generate the SDRAM clock. On FPGA targets, say Y. On ASIC targets, - say N and tell your foundry to balance the SDRAM clock output. - -64-bit data bus -CONFIG_SDCTRL_BUS64 - Say Y here to enable 64-bit data bus. +AHB status register +CONFIG_AHBSTAT_ENABLE + Say Y here to enable the AHB status register (AHBSTAT IP). + The register will latch the AHB address and master index when + an error response is returned by any AHB slave. -Page burst enable -CONFIG_SDCTRL_PAGE - Say Y here to enable SDRAM page burst operation. This will implement - read operations using page bursts rather than 8-word bursts and save - about 500 gates (100 LUTs). Note that not all SDRAM supports page - burst, so use this option with care. - -Programmable page burst enable -CONFIG_SDCTRL_PROGPAGE - Say Y here to enable programmable SDRAM page burst operation. This - will allow to dynamically enable/disable page burst by setting - bit 17 in MCFG2. +SDRAM separate address buses +CONFIG_AHBSTAT_NFTSLV + The AHB status register can also latch the AHB address on an external + input. Select here how many of such inputs are required. On-chip rom CONFIG_AHBROM_ENABLE @@ -917,65 +883,6 @@ CONFIG_GRETH_FIFO4 size of the FIFO depth. -CAN interface enable -CONFIG_CAN_ENABLE - Say Y here to enable the CAN interace from OpenCores. The core has one - AHB slave interface for accessing the control registers. The CAN core - ir register-compatible with the SAJ1000 core from Philips. - -CAN register address -CONFIG_CANIO - The control registers of the CAN core occupy 4 kbyte, and are - mapped in the AHB bus I/O area (0xFFF00000 - 0xFFFFF000). This setting - defines at which address in the I/O area the registers appear (HADDR[19:8]). - -CAN interrupt -CONFIG_CANIRQ - Defines which interrupt number the CAN core will generate. - -CAN loob-back testing -CONFIG_CANLOOP - If you say Y here, the receiver and trasmitter of the CAN core will - be connected together in a loop-back fashion. This will make it - possible to perform loop-back test, but not data will be sent - or received from the outside. ONLY for testing! - -CAN Synchronous reset -CONFIG_CAN_SYNCRST - If you say Y here, the CAN core will be implemented with - synchronous reset rather than asynchronous. This is needed - when the target library does not implement registers with - async reset. Unless you know what you are doing, say N. - -CAN FT memories -CONFIG_CAN_FT - If you say Y here, the CAN FIFOs will be implemented using - SEU protected RAM blocks. Only applicable to the FT version - of grlib. -Gaisler Research SPI controller -CONFIG_SPICTRL_ENABLE - Say Y here to enable the SPI controller(s) - -CONFIG_SPICTRL_NUM - Number of SPI controllers to implement in design. Note that most - template designs are limited to one SPI controller. - Configuration options made here in xconfig will apply to all - implemented SPI controllers. - -CONFIG_SPICTRL_MAXWLEN - 0: Core will support lengths up to 32 bits - 1-2: Illegal values - 3-15: Maximum word length will be value+1 (4-16) - -CONFIG_SPICTRL_SYNCRAM - Say Y here to use SYNCRAM_2P components for the core's receive - and transmit queues. This is the recommended setting, particularly - if the core is implemented with support for automatic mode. - -CONFIG_SPICTRL_FT - Fault-tolerance for internal buffers. Only applicable if core - buffers are implemented with SYNCRAM components. - UART1 enable CONFIG_UART1_ENABLE Say Y here to enable UART1, or the console UART. This is needed to @@ -1053,6 +960,25 @@ Watchdog time-out value CONFIG_GPT_WDOG This value will be loaded in the watchdog timer at reset. +GPIO port +CONFIG_GRGPIO_ENABLE + Say Y here to enable a general purpose I/O port. The port can be + configured from 1 - 32 bits, whith each port signal individually + programmable as input or output. The port signals can also serve + as interrupt inputs. + +GPIO port witdth +CONFIG_GRGPIO_WIDTH + Number of bits in the I/O port. Must be in the range of 1 - 32. + +GPIO interrupt mask +CONFIG_GRGPIO_IMASK + The I/O port interrupt mask defines which bits in the I/O port + should be able to create an interrupt. + +OpenCores I2C Master +CONFIG_I2C_ENABLE + Say Y here to enable the OpenCores I2C master. Text-mode VGA CONFIG_VGA_ENABLE Say Y here to enable a simple text-mode VGA controller. The controller @@ -1069,21 +995,74 @@ PS2 KBD interface CONFIG_KBD_ENABLE Say Y here to enable a PS/2 keyboard or mouse interface. -MultiIO Design -CONFIG_AHB2HPI_ENABLE - Say Y here to enable a simple bidirectional AHB2HPI bridge. -ADCDAC -CONFIG_ADCDAC_ENABLE - Say Y here to enable the Analog-to-Digital- and Digital-to-Analog-Converter. -OpenCores SPI Controller -CONFIG_SPI_OC_ENABLE - Say Y here to enable the SPI Controller from OpenCores. This requires Mixed Language Support (VHDL/Verilog). -MultiIO Design -CONFIG_MULTIIO_ENABLE - Say Y here to enable a simple MultiIO Design (LEDS, DIPSWITCHES, etc.). -OpenCores AC97 Controller -CONFIG_AC97_OC_ENABLE - Say Y here to enable the AC97 Controller from OpenCores. This requires Mixed Language Support (VHDL/Verilog). +SPI memory controller +CONFIG_SPIMCTRL + Say Y here to enable a simple SPI memory controller. + The controller maps a SPI memory device into AMBA address space and + also has a simple interface that allows sending commands directly + to the SPI device. + +SD card support +CONFIG_SPIMCTRL_SDCARD + Memory device connected to controller is SD card. + +Read command +CONFIG_SPIMCTRL_READCMD + Read instruction for SPI memory device (hex). + +Dummy byte +CONFIG_SPIMCTRL_DUMMYBYTE + Output dummy byte after address when issuing read instruction. + +Dual output +CONFIG_SPIMCTRL_DUALOUTPUT + Memory device supports dual output when reading data. + +Address offset +CONFIG_SPIMCTRL_OFFSET + Offset that will be added by core on SPI memory address (hex). + +Clock scaler +CONFIG_SPIMCTRL_SCALER + Selects the divisor used when dividing the system clock to produce + the memory device clock. The divisor used is two to the power of the + specified value. This value must be at least 1. + +Alternate clock scaler +CONFIG_SPIMCTRL_ASCALER + Selects the divisor used when dividing the system clock to produce + the alternate memory device clock. If the selected memory device is + a SD Card this clock will be used during card initialization. The + divisor used is two to the power of the specified value. This + value must be at least 1. + +Power-up cnt +CONFIG_SPIMCTRL_PWRUPCNT + Number of system clock cycles to wait before issuing first command. +Gaisler Research SPI controller +CONFIG_SPICTRL_ENABLE + Say Y here to enable the SPI controller(s) + +CONFIG_SPICTRL_NUM + Number of SPI controllers to implement in design. Note that most + template designs are limited to one SPI controller. + Configuration options made here in xconfig will apply to all + implemented SPI controllers. + +CONFIG_SPICTRL_MAXWLEN + 0: Core will support lengths up to 32 bits + 1-2: Illegal values + 3-15: Maximum word length will be value+1 (4-16) + +CONFIG_SPICTRL_SYNCRAM + Say Y here to use SYNCRAM_2P components for the core's receive + and transmit queues. This is the recommended setting, particularly + if the core is implemented with support for automatic mode. + +CONFIG_SPICTRL_FT + Fault-tolerance for internal buffers. Only applicable if core + buffers are implemented with SYNCRAM components. + UART debugging CONFIG_DEBUG_UART During simulation, the output from the UARTs is printed on the diff --git a/designs/leon3-ge-hpe-mini/config.in b/designs/leon3-xilinx-kc705/config.in similarity index 76% rename from designs/leon3-ge-hpe-mini/config.in rename to designs/leon3-xilinx-kc705/config.in index 9f9d0611..4c40dec3 100644 --- a/designs/leon3-ge-hpe-mini/config.in +++ b/designs/leon3-xilinx-kc705/config.in @@ -8,8 +8,10 @@ # #define_bool CONFIG_MCTRL_RMW y +define_bool CONFIG_LEON3FT_PRESENT y +define_bool CONFIG_HAS_SHARED_GRFPU y -mainmenu_name "LEON3MINI Design Configuration" +mainmenu_name "LEON3MP Xilinx KC705 Design Configuration" mainmenu_option next_comment comment 'Synthesis ' @@ -35,9 +37,11 @@ mainmenu_option next_comment comment 'Peripherals ' mainmenu_option next_comment - comment 'Memory controllers ' - source lib/gaisler/memctrl/srctrl.in + comment 'Memory controller ' source lib/esa/memoryctrl/mctrl.in + source lib/gaisler/ddr/mig.in + source lib/gaisler/ddr/mig_series7.in + source lib/gaisler/misc/ahbstat.in endmenu mainmenu_option next_comment @@ -51,33 +55,26 @@ comment 'Peripherals ' source lib/gaisler/greth/greth.in endmenu -# mainmenu_option next_comment -# comment 'CAN ' -# source lib/gaisler/misc/can_oc.in -# endmenu - mainmenu_option next_comment comment 'UARTs, timers and irq control ' source lib/gaisler/uart/uart1.in source lib/gaisler/leon3/irqmp.in source lib/gaisler/misc/gptimer.in + source lib/gaisler/misc/grgpio.in + source lib/gaisler/i2c/i2c.in endmenu - mainmenu_option next_comment - comment 'ATA Controller' - source lib/gaisler/ata/ata.in - endmenu - mainmenu_option next_comment comment 'Keybord and VGA interface' source lib/gaisler/misc/ps2vga.in endmenu -endmenu -mainmenu_option next_comment -comment 'Gleichmann Options ' - source lib/gleichmann/ahb2hpi/ahb2hpi.in - source lib/gleichmann/dac/dac_ahb.in + mainmenu_option next_comment + comment 'SPI' + source lib/gaisler/spi/spimctrl.in + source lib/gaisler/spi/spictrl.in + endmenu + endmenu mainmenu_option next_comment diff --git a/designs/leon3-ge-hpe-midi-ep2s180/config.vhd b/designs/leon3-xilinx-kc705/config.vhd similarity index 55% rename from designs/leon3-ge-hpe-midi-ep2s180/config.vhd rename to designs/leon3-xilinx-kc705/config.vhd index 39564dea..43bab06b 100644 --- a/designs/leon3-ge-hpe-midi-ep2s180/config.vhd +++ b/designs/leon3-xilinx-kc705/config.vhd @@ -1,9 +1,6 @@ - - - ----------------------------------------------------------------------------- -- LEON3 Demonstration design test bench configuration -- Copyright (C) 2009 Aeroflex Gaisler @@ -12,53 +9,18 @@ library techmap; use techmap.gencomp.all; -library gleichmann; -use gleichmann.miscellaneous.all; package config is - - ----------------------------------------------------------------------------- - -- GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- - - -- HPE board version - -- for valid options see package miscellaneous - constant CFG_HPEVER : integer := midi; - - -- provide ahb signals for an external slave - -- slave number can be defined below - -- numbers 8 to 15 can be used safely, numbers below - -- might be used by other LEON cores depending on configuration - constant CFG_EXTAHB : integer := 0; - - constant CFG_EXTAHB_ADDR : integer := 16#0#; - - -- interrupt number the external slave is assigned to - -- unused at the moment - constant CFG_EXTAHB_IRQ : integer := 0; - - -- AHB slave number the external slave is assigned to - constant CFG_EXTAHB_NR : integer := 8; - - -- index number the external slave is assigned to - constant CFG_EXTAHB_ID : integer := 8; - - -- lsb sdram address to bit - constant CFG_SDSHIFT : integer := 0; - - ----------------------------------------------------------------------------- - -- END GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- -- Technology and synthesis options - constant CFG_FABTECH : integer := stratix2; - constant CFG_MEMTECH : integer := stratix2; - constant CFG_PADTECH : integer := stratix2; + constant CFG_FABTECH : integer := kintex7; + constant CFG_MEMTECH : integer := kintex7; + constant CFG_PADTECH : integer := kintex7; constant CFG_NOASYNC : integer := 0; constant CFG_SCAN : integer := 0; -- Clock generator - constant CFG_CLKTECH : integer := stratix2; + constant CFG_CLKTECH : integer := kintex7; constant CFG_CLKMUL : integer := (4); - constant CFG_CLKDIV : integer := (4); + constant CFG_CLKDIV : integer := (8); constant CFG_OCLKDIV : integer := 1; constant CFG_OCLKBDIV : integer := 0; constant CFG_OCLKCDIV : integer := 0; @@ -69,21 +31,21 @@ package config is constant CFG_LEON3 : integer := 1; constant CFG_NCPU : integer := (1); constant CFG_NWIN : integer := (8); - constant CFG_V8 : integer := 2 + 4*0; + constant CFG_V8 : integer := 16#32# + 4*0; constant CFG_MAC : integer := 0; - constant CFG_BP : integer := 0; + constant CFG_BP : integer := 1; constant CFG_SVT : integer := 1; constant CFG_RSTADDR : integer := 16#00000#; constant CFG_LDDEL : integer := (1); constant CFG_NOTAG : integer := 0; - constant CFG_NWP : integer := (2); - constant CFG_PWD : integer := 0*2; - constant CFG_FPU : integer := 0 + 16*0 + 32*0; + constant CFG_NWP : integer := (4); + constant CFG_PWD : integer := 1*2; + constant CFG_FPU : integer := (1+0) + 16*0 + 32*0; constant CFG_GRFPUSH : integer := 0; constant CFG_ICEN : integer := 1; constant CFG_ISETS : integer := 2; - constant CFG_ISETSZ : integer := 8; - constant CFG_ILINE : integer := 8; + constant CFG_ISETSZ : integer := 4; + constant CFG_ILINE : integer := 4; constant CFG_IREPL : integer := 0; constant CFG_ILOCK : integer := 0; constant CFG_ILRAMEN : integer := 0; @@ -95,20 +57,20 @@ package config is constant CFG_DLINE : integer := 4; constant CFG_DREPL : integer := 0; constant CFG_DLOCK : integer := 0; - constant CFG_DSNOOP : integer := 1 + 0 + 4*0; + constant CFG_DSNOOP : integer := 1 + 0 + 4*1; constant CFG_DFIXED : integer := 16#0#; constant CFG_DLRAMEN : integer := 0; constant CFG_DLRAMADDR: integer := 16#8F#; constant CFG_DLRAMSZ : integer := 1; constant CFG_MMUEN : integer := 1; - constant CFG_ITLBNUM : integer := 8; - constant CFG_DTLBNUM : integer := 8; + constant CFG_ITLBNUM : integer := 16; + constant CFG_DTLBNUM : integer := 16; constant CFG_TLB_TYPE : integer := 0 + 1*2; constant CFG_TLB_REP : integer := 0; constant CFG_MMU_PAGE : integer := 0; constant CFG_DSU : integer := 1; - constant CFG_ITBSZ : integer := 2; - constant CFG_ATBSZ : integer := 2; + constant CFG_ITBSZ : integer := 4; + constant CFG_ATBSZ : integer := 0; constant CFG_LEON3FT_EN : integer := 0; constant CFG_IUFT_EN : integer := 0; constant CFG_FPUFT_EN : integer := 0; @@ -117,12 +79,12 @@ package config is constant CFG_CACHE_ERRINJ : integer := 0; constant CFG_LEON3_NETLIST: integer := 0; constant CFG_DISAS : integer := 0 + 0; - constant CFG_PCLOW : integer := 2; + constant CFG_PCLOW : integer := 0; -- AMBA settings constant CFG_DEFMST : integer := (0); constant CFG_RROBIN : integer := 1; constant CFG_SPLIT : integer := 0; - constant CFG_FPNPEN : integer := 0; + constant CFG_FPNPEN : integer := 1; constant CFG_AHBIO : integer := 16#FFF#; constant CFG_APBADDR : integer := 16#800#; constant CFG_AHB_MON : integer := 0; @@ -134,41 +96,34 @@ package config is -- JTAG based DSU interface constant CFG_AHB_JTAG : integer := 1; -- Ethernet DSU - constant CFG_DSU_ETH : integer := 1 + 0 + 0; - constant CFG_ETH_BUF : integer := 2; + constant CFG_DSU_ETH : integer := 0 + 0 + 0; + constant CFG_ETH_BUF : integer := 1; constant CFG_ETH_IPM : integer := 16#C0A8#; - constant CFG_ETH_IPL : integer := 16#0034#; + constant CFG_ETH_IPL : integer := 16#0033#; constant CFG_ETH_ENM : integer := 16#020000#; - constant CFG_ETH_ENL : integer := 16#00001E#; --- USB DSU - constant CFG_GRUSB_DCL : integer := 0; - constant CFG_GRUSB_DCL_UIFACE : integer := 1; - constant CFG_GRUSB_DCL_DW : integer := 8; --- PROM/SRAM controller - constant CFG_SRCTRL : integer := 0; - constant CFG_SRCTRL_PROMWS : integer := 0; - constant CFG_SRCTRL_RAMWS : integer := 0; - constant CFG_SRCTRL_IOWS : integer := 0; - constant CFG_SRCTRL_RMW : integer := 0; - constant CFG_SRCTRL_8BIT : integer := 0; - constant CFG_SRCTRL_SRBANKS : integer := 1; - constant CFG_SRCTRL_BANKSZ : integer := 0; - constant CFG_SRCTRL_ROMASEL : integer := 0; + constant CFG_ETH_ENL : integer := 16#000009#; -- LEON2 memory controller constant CFG_MCTRL_LEON2 : integer := 1; - constant CFG_MCTRL_RAM8BIT : integer := 0; - constant CFG_MCTRL_RAM16BIT : integer := 0; + constant CFG_MCTRL_RAM8BIT : integer := 1; + constant CFG_MCTRL_RAM16BIT : integer := 1; constant CFG_MCTRL_5CS : integer := 0; - constant CFG_MCTRL_SDEN : integer := 1; + constant CFG_MCTRL_SDEN : integer := 0; constant CFG_MCTRL_SEPBUS : integer := 0; constant CFG_MCTRL_INVCLK : integer := 0; constant CFG_MCTRL_SD64 : integer := 0; - constant CFG_MCTRL_PAGE : integer := 1 + 0; --- SDRAM controller - constant CFG_SDCTRL : integer := 0; - constant CFG_SDCTRL_INVCLK : integer := 0; - constant CFG_SDCTRL_SD64 : integer := 0; - constant CFG_SDCTRL_PAGE : integer := 0 + 0; + constant CFG_MCTRL_PAGE : integer := 0 + 0; +-- Xilinx MIG + constant CFG_MIG_DDR2 : integer := 0; + constant CFG_MIG_RANKS : integer := 1; + constant CFG_MIG_COLBITS : integer := 10; + constant CFG_MIG_ROWBITS : integer := 13; + constant CFG_MIG_BANKBITS: integer := 2; + constant CFG_MIG_HMASK : integer := 16#F00#; +-- Xilinx MIG Series 7 + constant CFG_MIG_SERIES7 : integer := 1; +-- AHB status register + constant CFG_AHBSTAT : integer := 0; + constant CFG_AHBSTATN : integer := 1; -- AHB ROM constant CFG_AHBROMEN : integer := 0; constant CFG_AHBROPIP : integer := 0; @@ -176,39 +131,23 @@ package config is constant CFG_ROMADDR : integer := 16#000#; constant CFG_ROMMASK : integer := 16#E00# + 16#000#; -- AHB RAM - constant CFG_AHBRAMEN : integer := 0; - constant CFG_AHBRSZ : integer := 1; + constant CFG_AHBRAMEN : integer := 1; + constant CFG_AHBRSZ : integer := 4; constant CFG_AHBRADDR : integer := 16#A00#; + -- Gaisler Ethernet core - constant CFG_GRETH : integer := 1; + constant CFG_GRETH : integer := 0; constant CFG_GRETH1G : integer := 0; - constant CFG_ETH_FIFO : integer := 32; --- CAN 2.0 interface - constant CFG_CAN : integer := 0; - constant CFG_CANIO : integer := 16#0#; - constant CFG_CANIRQ : integer := 0; - constant CFG_CANLOOP : integer := 0; - constant CFG_CAN_SYNCRST : integer := 0; - constant CFG_CANFT : integer := 0; --- SPI controller - constant CFG_SPICTRL_ENABLE : integer := 0; - constant CFG_SPICTRL_NUM : integer := 1; - constant CFG_SPICTRL_SLVS : integer := 1; - constant CFG_SPICTRL_FIFO : integer := 1; - constant CFG_SPICTRL_SLVREG : integer := 0; - constant CFG_SPICTRL_ODMODE : integer := 0; - constant CFG_SPICTRL_AM : integer := 0; - constant CFG_SPICTRL_ASEL : integer := 0; - constant CFG_SPICTRL_TWEN : integer := 0; - constant CFG_SPICTRL_MAXWLEN : integer := 0; - constant CFG_SPICTRL_SYNCRAM : integer := 0; - constant CFG_SPICTRL_FT : integer := 0; + constant CFG_ETH_FIFO : integer := 8; + -- UART 1 constant CFG_UART1_ENABLE : integer := 1; - constant CFG_UART1_FIFO : integer := 4; + constant CFG_UART1_FIFO : integer := 32; + -- LEON3 interrupt controller constant CFG_IRQ3_ENABLE : integer := 1; constant CFG_IRQ3_NSEC : integer := 0; + -- Modular timer constant CFG_GPT_ENABLE : integer := 1; constant CFG_GPT_NTIM : integer := (2); @@ -218,20 +157,45 @@ package config is constant CFG_GPT_SEPIRQ : integer := 1; constant CFG_GPT_WDOGEN : integer := 0; constant CFG_GPT_WDOG : integer := 16#0#; + +-- GPIO port + constant CFG_GRGPIO_ENABLE : integer := 1; + constant CFG_GRGPIO_IMASK : integer := 16#0000#; + constant CFG_GRGPIO_WIDTH : integer := (8); + +-- I2C master + constant CFG_I2C_ENABLE : integer := 1; + -- VGA and PS2/ interface constant CFG_KBD_ENABLE : integer := 0; constant CFG_VGA_ENABLE : integer := 0; constant CFG_SVGA_ENABLE : integer := 0; --- AHB2HPI enable - constant CFG_AHB2HPI : integer := 0; --- ADCDAC enable - constant CFG_ADCDAC : integer := 0; --- SPI_OC enable - constant CFG_SPI_OC : integer := 0; --- MultiIO enable - constant CFG_MULTIIO : integer := 0; --- AC97_OC enable - constant CFG_AC97_OC : integer := 0; + +-- SPI memory controller + constant CFG_SPIMCTRL : integer := 0; + constant CFG_SPIMCTRL_SDCARD : integer := 0; + constant CFG_SPIMCTRL_READCMD : integer := 16#0#; + constant CFG_SPIMCTRL_DUMMYBYTE : integer := 0; + constant CFG_SPIMCTRL_DUALOUTPUT : integer := 0; + constant CFG_SPIMCTRL_SCALER : integer := 1; + constant CFG_SPIMCTRL_ASCALER : integer := 1; + constant CFG_SPIMCTRL_PWRUPCNT : integer := 0; + constant CFG_SPIMCTRL_OFFSET : integer := 16#0#; + +-- SPI controller + constant CFG_SPICTRL_ENABLE : integer := 0; + constant CFG_SPICTRL_NUM : integer := 1; + constant CFG_SPICTRL_SLVS : integer := 1; + constant CFG_SPICTRL_FIFO : integer := 1; + constant CFG_SPICTRL_SLVREG : integer := 0; + constant CFG_SPICTRL_ODMODE : integer := 0; + constant CFG_SPICTRL_AM : integer := 0; + constant CFG_SPICTRL_ASEL : integer := 0; + constant CFG_SPICTRL_TWEN : integer := 0; + constant CFG_SPICTRL_MAXWLEN : integer := 0; + constant CFG_SPICTRL_SYNCRAM : integer := 0; + constant CFG_SPICTRL_FT : integer := 0; + -- GRLIB debugging constant CFG_DUART : integer := 0; end; diff --git a/designs/leon3-ge-hpe-midi-ep2s180/config.vhd.h b/designs/leon3-xilinx-kc705/config.vhd.h similarity index 81% rename from designs/leon3-ge-hpe-midi-ep2s180/config.vhd.h rename to designs/leon3-xilinx-kc705/config.vhd.h index eaab03fa..d3303929 100644 --- a/designs/leon3-ge-hpe-midi-ep2s180/config.vhd.h +++ b/designs/leon3-xilinx-kc705/config.vhd.h @@ -96,22 +96,6 @@ constant CFG_ETH_ENM : integer := 16#CONFIG_DSU_ETHMSB#; constant CFG_ETH_ENL : integer := 16#CONFIG_DSU_ETHLSB#; --- USB DSU - constant CFG_GRUSB_DCL : integer := CONFIG_GRUSB_DCL; - constant CFG_GRUSB_DCL_UIFACE : integer := CONFIG_GRUSB_DCL_UIFACE; - constant CFG_GRUSB_DCL_DW : integer := CONFIG_GRUSB_DCL_DW; - --- PROM/SRAM controller - constant CFG_SRCTRL : integer := CONFIG_SRCTRL; - constant CFG_SRCTRL_PROMWS : integer := CONFIG_SRCTRL_PROMWS; - constant CFG_SRCTRL_RAMWS : integer := CONFIG_SRCTRL_RAMWS; - constant CFG_SRCTRL_IOWS : integer := CONFIG_SRCTRL_IOWS; - constant CFG_SRCTRL_RMW : integer := CONFIG_SRCTRL_RMW; - constant CFG_SRCTRL_8BIT : integer := CONFIG_SRCTRL_8BIT; - - constant CFG_SRCTRL_SRBANKS : integer := CFG_SR_CTRL_SRBANKS; - constant CFG_SRCTRL_BANKSZ : integer := CFG_SR_CTRL_BANKSZ; - constant CFG_SRCTRL_ROMASEL : integer := CONFIG_SRCTRL_ROMASEL; -- LEON2 memory controller constant CFG_MCTRL_LEON2 : integer := CONFIG_MCTRL_LEON2; constant CFG_MCTRL_RAM8BIT : integer := CONFIG_MCTRL_8BIT; @@ -123,11 +107,21 @@ constant CFG_MCTRL_SD64 : integer := CONFIG_MCTRL_SDRAM_BUS64; constant CFG_MCTRL_PAGE : integer := CONFIG_MCTRL_PAGE + CONFIG_MCTRL_PROGPAGE; --- SDRAM controller - constant CFG_SDCTRL : integer := CONFIG_SDCTRL; - constant CFG_SDCTRL_INVCLK : integer := CONFIG_SDCTRL_INVCLK; - constant CFG_SDCTRL_SD64 : integer := CONFIG_SDCTRL_BUS64; - constant CFG_SDCTRL_PAGE : integer := CONFIG_SDCTRL_PAGE + CONFIG_SDCTRL_PROGPAGE; +-- Xilinx MIG + constant CFG_MIG_DDR2 : integer := CONFIG_MIG_DDR2; + constant CFG_MIG_RANKS : integer := CONFIG_MIG_RANKS; + constant CFG_MIG_COLBITS : integer := CONFIG_MIG_COLBITS; + constant CFG_MIG_ROWBITS : integer := CONFIG_MIG_ROWBITS; + constant CFG_MIG_BANKBITS: integer := CONFIG_MIG_BANKBITS; + constant CFG_MIG_HMASK : integer := 16#CONFIG_MIG_HMASK#; + + +-- Xilinx MIG Series 7 + constant CFG_MIG_SERIES7 : integer := CONFIG_MIG_SERIES7; + +-- AHB status register + constant CFG_AHBSTAT : integer := CONFIG_AHBSTAT_ENABLE; + constant CFG_AHBSTATN : integer := CONFIG_AHBSTAT_NFTSLV; -- AHB ROM constant CFG_AHBROMEN : integer := CONFIG_AHBROM_ENABLE; @@ -146,28 +140,6 @@ constant CFG_GRETH1G : integer := CONFIG_GRETH_GIGA; constant CFG_ETH_FIFO : integer := CFG_GRETH_FIFO; --- CAN 2.0 interface - constant CFG_CAN : integer := CONFIG_CAN_ENABLE; - constant CFG_CANIO : integer := 16#CONFIG_CANIO#; - constant CFG_CANIRQ : integer := CONFIG_CANIRQ; - constant CFG_CANLOOP : integer := CONFIG_CANLOOP; - constant CFG_CAN_SYNCRST : integer := CONFIG_CAN_SYNCRST; - constant CFG_CANFT : integer := CONFIG_CAN_FT; - --- SPI controller - constant CFG_SPICTRL_ENABLE : integer := CONFIG_SPICTRL_ENABLE; - constant CFG_SPICTRL_NUM : integer := CONFIG_SPICTRL_NUM; - constant CFG_SPICTRL_SLVS : integer := CONFIG_SPICTRL_SLVS; - constant CFG_SPICTRL_FIFO : integer := CONFIG_SPICTRL_FIFO; - constant CFG_SPICTRL_SLVREG : integer := CONFIG_SPICTRL_SLVREG; - constant CFG_SPICTRL_ODMODE : integer := CONFIG_SPICTRL_ODMODE; - constant CFG_SPICTRL_AM : integer := CONFIG_SPICTRL_AM; - constant CFG_SPICTRL_ASEL : integer := CONFIG_SPICTRL_ASEL; - constant CFG_SPICTRL_TWEN : integer := CONFIG_SPICTRL_TWEN; - constant CFG_SPICTRL_MAXWLEN : integer := CONFIG_SPICTRL_MAXWLEN; - constant CFG_SPICTRL_SYNCRAM : integer := CONFIG_SPICTRL_SYNCRAM; - constant CFG_SPICTRL_FT : integer := CONFIG_SPICTRL_FT; - -- UART 1 constant CFG_UART1_ENABLE : integer := CONFIG_UART1_ENABLE; constant CFG_UART1_FIFO : integer := CFG_UA1_FIFO; @@ -186,25 +158,43 @@ constant CFG_GPT_WDOGEN : integer := CONFIG_GPT_WDOGEN; constant CFG_GPT_WDOG : integer := 16#CONFIG_GPT_WDOG#; +-- GPIO port + constant CFG_GRGPIO_ENABLE : integer := CONFIG_GRGPIO_ENABLE; + constant CFG_GRGPIO_IMASK : integer := 16#CONFIG_GRGPIO_IMASK#; + constant CFG_GRGPIO_WIDTH : integer := CONFIG_GRGPIO_WIDTH; + +-- I2C master + constant CFG_I2C_ENABLE : integer := CONFIG_I2C_ENABLE; + -- VGA and PS2/ interface constant CFG_KBD_ENABLE : integer := CONFIG_KBD_ENABLE; constant CFG_VGA_ENABLE : integer := CONFIG_VGA_ENABLE; constant CFG_SVGA_ENABLE : integer := CONFIG_SVGA_ENABLE; --- AHB2HPI enable - constant CFG_AHB2HPI : integer := CONFIG_AHB2HPI_ENABLE; - --- ADCDAC enable - constant CFG_ADCDAC : integer := CONFIG_ADCDAC_ENABLE; - --- SPI_OC enable - constant CFG_SPI_OC : integer := CONFIG_SPI_OC_ENABLE; - --- MultiIO enable - constant CFG_MULTIIO : integer := CONFIG_MULTIIO_ENABLE; +-- SPI memory controller + constant CFG_SPIMCTRL : integer := CONFIG_SPIMCTRL; + constant CFG_SPIMCTRL_SDCARD : integer := CONFIG_SPIMCTRL_SDCARD; + constant CFG_SPIMCTRL_READCMD : integer := 16#CONFIG_SPIMCTRL_READCMD#; + constant CFG_SPIMCTRL_DUMMYBYTE : integer := CONFIG_SPIMCTRL_DUMMYBYTE; + constant CFG_SPIMCTRL_DUALOUTPUT : integer := CONFIG_SPIMCTRL_DUALOUTPUT; + constant CFG_SPIMCTRL_SCALER : integer := CONFIG_SPIMCTRL_SCALER; + constant CFG_SPIMCTRL_ASCALER : integer := CONFIG_SPIMCTRL_ASCALER; + constant CFG_SPIMCTRL_PWRUPCNT : integer := CONFIG_SPIMCTRL_PWRUPCNT; + constant CFG_SPIMCTRL_OFFSET : integer := 16#CONFIG_SPIMCTRL_OFFSET#; --- AC97_OC enable - constant CFG_AC97_OC : integer := CONFIG_AC97_OC_ENABLE; +-- SPI controller + constant CFG_SPICTRL_ENABLE : integer := CONFIG_SPICTRL_ENABLE; + constant CFG_SPICTRL_NUM : integer := CONFIG_SPICTRL_NUM; + constant CFG_SPICTRL_SLVS : integer := CONFIG_SPICTRL_SLVS; + constant CFG_SPICTRL_FIFO : integer := CONFIG_SPICTRL_FIFO; + constant CFG_SPICTRL_SLVREG : integer := CONFIG_SPICTRL_SLVREG; + constant CFG_SPICTRL_ODMODE : integer := CONFIG_SPICTRL_ODMODE; + constant CFG_SPICTRL_AM : integer := CONFIG_SPICTRL_AM; + constant CFG_SPICTRL_ASEL : integer := CONFIG_SPICTRL_ASEL; + constant CFG_SPICTRL_TWEN : integer := CONFIG_SPICTRL_TWEN; + constant CFG_SPICTRL_MAXWLEN : integer := CONFIG_SPICTRL_MAXWLEN; + constant CFG_SPICTRL_SYNCRAM : integer := CONFIG_SPICTRL_SYNCRAM; + constant CFG_SPICTRL_FT : integer := CONFIG_SPICTRL_FT; -- GRLIB debugging constant CFG_DUART : integer := CONFIG_DEBUG_UART; diff --git a/designs/basic_passthru/config.vhd.in b/designs/leon3-xilinx-kc705/config.vhd.in similarity index 99% rename from designs/basic_passthru/config.vhd.in rename to designs/leon3-xilinx-kc705/config.vhd.in index 17917add..0b22306b 100644 --- a/designs/basic_passthru/config.vhd.in +++ b/designs/leon3-xilinx-kc705/config.vhd.in @@ -1,5 +1,6 @@ #include "config.h" #include "tkconfig.h" + ----------------------------------------------------------------------------- -- LEON3 Demonstration design test bench configuration -- Copyright (C) 2009 Aeroflex Gaisler @@ -13,4 +14,6 @@ package config is #include "config.vhd.h" + + end; diff --git a/designs/leon3-xilinx-kc705/ddr_dummy.vhd b/designs/leon3-xilinx-kc705/ddr_dummy.vhd new file mode 100644 index 00000000..cf6a9d46 --- /dev/null +++ b/designs/leon3-xilinx-kc705/ddr_dummy.vhd @@ -0,0 +1,141 @@ +---------------------------------------------------------------------------- +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2012 Aeroflex Gaisler +---------------------------------------------------------------------------- +-- Package: ddr_dummy +-- File:ddr_dummy.vhd +-- Author:Fredrik Ringhage - Gaisler Research +-- Description: Xilinx MIG wrapper +------------------------------------------------------------------------------ + + +library ieee; +use ieee.std_logic_1164.all; +library techmap; +use techmap.gencomp.all; +-- pragma translate_off +library unisim; +use unisim.IBUF; +-- pragma translate_on + +library work; + +entity ddr_dummy is + generic ( + USE_MIG_INTERFACE_MODEL : boolean := false; + nCS_PER_RANK : integer := 1; -- # of unique CS outputs per rank + BANK_WIDTH : integer := 3; -- # of bank address + CKE_WIDTH : integer := 1; -- # of clock enable outputs + CS_WIDTH : integer := 1; -- # of chip select + DM_WIDTH : integer := 8; -- # of data mask + DQ_WIDTH : integer := 64; -- # of data bits + DQS_WIDTH : integer := 8; -- # of strobe pairs + ODT_WIDTH : integer := 1; -- # of ODT outputs + ROW_WIDTH : integer := 14 -- # of row/column address + ); + port ( + ddr_ck_p : out std_logic_vector(0 downto 0); + ddr_ck_n : out std_logic_vector(0 downto 0); + ddr_addr : out std_logic_vector(ROW_WIDTH-1 downto 0); + ddr_ba : out std_logic_vector(BANK_WIDTH-1 downto 0); + ddr_cas_n : out std_logic; + ddr_cke : out std_logic_vector(CKE_WIDTH-1 downto 0); + ddr_cs_n : out std_logic_vector(CS_WIDTH*nCS_PER_RANK-1 downto 0); + ddr_dm : out std_logic_vector(DM_WIDTH-1 downto 0); + ddr_odt : out std_logic_vector(ODT_WIDTH-1 downto 0); + ddr_ras_n : out std_logic; + ddr_we_n : out std_logic; + ddr_reset_n : out std_logic; + ddr_dq : inout std_logic_vector(DQ_WIDTH-1 downto 0); + ddr_dqs : inout std_logic_vector(DQS_WIDTH-1 downto 0); + ddr_dqs_n : inout std_logic_vector(DQS_WIDTH-1 downto 0) + ); +end; + +architecture rtl of ddr_dummy is + + component OBUF generic (IOSTANDARD : string := "SSTL15"); + port (O : out std_ulogic; I : in std_ulogic); + end component; + + component IOBUF generic (IOSTANDARD : string := "SSTL15_T_DCI"); + port (O : out std_ulogic; IO : inout std_logic; I, T : in std_ulogic); + end component; + + component OBUFDS generic(IOSTANDARD : string := "DIFF_SSTL15"); + port(O : out std_ulogic; OB : out std_ulogic; I : in std_ulogic); +end component; + + component IOBUFDS generic (IOSTANDARD : string := "DIFF_SSTL15"); + port (O : out std_ulogic; IO, IOB : inout std_logic; I, T : in std_ulogic); + end component; + + signal in_dq : std_logic_vector(DQ_WIDTH-1 downto 0); + signal in_dqs : std_logic_vector(DQS_WIDTH-1 downto 0); + +begin + + io_cas : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_cas_n, I => '0'); + + io_ras : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_ras_n, I => '0'); + + io_we : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_we_n, I => '0'); + + io_ck : OBUFDS generic map (IOSTANDARD => "DIFF_SSTL15") + port map (O => ddr_ck_p(0), OB => ddr_ck_n(0), I => '0'); + + io_addr_gen : for i in 0 to ROW_WIDTH-1 generate + begin + io_addr : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_addr(i), I => '0'); + end generate io_addr_gen; + + io_ba_gen : for i in 0 to BANK_WIDTH-1 generate + begin + io_addr : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_ba(i), I => '0'); + end generate io_ba_gen; + + io_cs_gen : for i in 0 to CS_WIDTH*nCS_PER_RANK-1 generate + begin + io_cs : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_cs_n(i), I => '0'); + end generate io_cs_gen; + + io_odt_gen : for i in 0 to ODT_WIDTH-1 generate + begin + io_odt : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_odt(i), I => '0'); + end generate io_odt_gen; + + io_dm_gen : for i in 0 to DM_WIDTH-1 generate + begin + io_dm : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_dm(i), I => '0'); + end generate io_dm_gen; + + io_cke_gen : for i in 0 to CKE_WIDTH-1 generate + begin + io_cke : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_cke(i), I => '0'); + end generate io_cke_gen; + + op_reset : OBUF generic map (IOSTANDARD => "LVCMOS15") + port map (O => ddr_reset_n, I => '1'); + + io_dq_gen : for i in 0 to DQ_WIDTH-1 generate + begin + io_dq : IOBUF generic map (IOSTANDARD => "SSTL15_T_DCI") + port map (O => in_dq(i), IO => ddr_dq(i), I => '0', T => '0'); + end generate io_dq_gen; + + io_dqs_gen : for i in 0 to DQS_WIDTH-1 generate + begin + io_dqs : IOBUFDS generic map (IOSTANDARD => "DIFF_SSTL15_T_DCI") + port map (O => in_dqs(i), IO => ddr_dqs(i), IOB => ddr_dqs_n(i), I => '0', T => '1'); + end generate io_dqs_gen; + +end architecture rtl; \ No newline at end of file diff --git a/designs/leon3-ge-hpe-midi-ep2s180/lconfig.tk b/designs/leon3-xilinx-kc705/lconfig.tk similarity index 69% rename from designs/leon3-ge-hpe-midi-ep2s180/lconfig.tk rename to designs/leon3-xilinx-kc705/lconfig.tk index 7619615f..8d87b9f2 100755 --- a/designs/leon3-ge-hpe-midi-ep2s180/lconfig.tk +++ b/designs/leon3-xilinx-kc705/lconfig.tk @@ -644,7 +644,7 @@ set active_menus [list] set processed_top_level 0 set ARCH sparc set menus_per_column 4 -set total_menus 26 +set total_menus 25 proc toplevel_menu {num} { if {$num == 4} then {return 3} @@ -662,13 +662,13 @@ proc toplevel_menu {num} { if {$num == 19} then {return 13} if {$num == 20} then {return 13} if {$num == 21} then {return 13} - if {$num == 22} then {return 21} - if {$num == 23} then {return 13} - if {$num == 24} then {return 13} + if {$num == 22} then {return 13} + if {$num == 23} then {return 22} + if {$num == 24} then {return 22} return $num } -mainmenu_name "LEON3MIDI Design Configuration" +mainmenu_name "LEON3MP Xilinx KC705 Design Configuration" menu_option menu1 1 "Synthesis " proc menu1 {w title} { set oldFocus [focus] @@ -758,7 +758,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -768,7 +769,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -911,8 +914,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -931,6 +936,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1020,9 +1029,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1076,10 +1086,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1125,14 +1136,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1205,13 +1218,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1251,22 +1272,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1323,21 +1612,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1384,36 +1673,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1421,48 +1711,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1518,29 +1809,30 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 3 - bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST + bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH + global tmpvar_8 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 + menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 3 + bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1579,17 +1871,22 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + global CONFIG_HAS_SHARED_GRFPU + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1597,34 +1894,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global CONFIG_HAS_SHARED_GRFPU + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1681,92 +1983,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1774,18 +2076,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1826,52 +2128,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1879,162 +2182,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2090,45 +2394,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2168,18 +2474,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2187,55 +2494,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2292,24 +2604,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2349,17 +2661,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2367,37 +2680,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2453,16 +2767,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2510,9 +2831,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2534,21 +2853,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2857,14 +3181,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2872,14 +3196,6 @@ proc menu12 {w title} { hex $w.config.f 12 7 "LSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHLSB bool $w.config.f 12 8 "Programmable 4-bit LSB of MAC/IP address" CONFIG_DSU_ETH_PROG bool $w.config.f 12 9 "EDCL disable pin " CONFIG_DSU_ETH_DIS - bool $w.config.f 12 10 "USB Debug Communication Link" CONFIG_GRUSB_DCL - global tmpvar_27 - minimenu $w.config.f 12 11 "USB Transceiver Interface" tmpvar_27 CONFIG_GRUSB_DCL_ULPI - menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"USB Transceiver Interface\"" - $w.config.f.x11.x.menu add radiobutton -label "ULPI" -variable tmpvar_27 -value "ULPI" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "UTMI/UTMI+8-bit" -variable tmpvar_27 -value "UTMI/UTMI+8-bit" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "UTMI/UTMI+16-bit" -variable tmpvar_27 -value "UTMI/UTMI+16-bit" -command "update_active" - menusplit $w $w.config.f.x11.x.menu 3 @@ -2936,8 +3252,6 @@ proc update_menu12 {} { global CONFIG_DSU_ETH_DIS if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { configure_entry .menu12.config.f.x9 normal {n l y}} else {configure_entry .menu12.config.f.x9 disabled {y n l}} - global CONFIG_GRUSB_DCL - if {($CONFIG_GRUSB_DCL == 1)} then {configure_entry .menu12.config.f.x11 normal {x l}} else {configure_entry .menu12.config.f.x11 disabled {x l}} } @@ -2948,17 +3262,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -2974,13 +3288,6 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH_DIS if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { set CONFIG_DSU_ETH_DIS [expr $CONFIG_DSU_ETH_DIS&15]} else {set CONFIG_DSU_ETH_DIS [expr $CONFIG_DSU_ETH_DIS|16]} - global tmpvar_27 - global CONFIG_GRUSB_DCL_ULPI - if {$tmpvar_27 == "ULPI"} then {set CONFIG_GRUSB_DCL_ULPI 1} else {set CONFIG_GRUSB_DCL_ULPI 0} - global CONFIG_GRUSB_DCL_UTMI8 - if {$tmpvar_27 == "UTMI/UTMI+8-bit"} then {set CONFIG_GRUSB_DCL_UTMI8 1} else {set CONFIG_GRUSB_DCL_UTMI8 0} - global CONFIG_GRUSB_DCL_UTMI16 - if {$tmpvar_27 == "UTMI/UTMI+16-bit"} then {set CONFIG_GRUSB_DCL_UTMI16 1} else {set CONFIG_GRUSB_DCL_UTMI16 0} } @@ -3035,13 +3342,12 @@ proc menu13 {w title} { pack $w.config.canvas -side right -fill y - submenu $w.config.f 13 0 "Memory controllers " 14 + submenu $w.config.f 13 0 "Memory controller " 14 submenu $w.config.f 13 1 "On-chip RAM/ROM " 18 submenu $w.config.f 13 2 "Ethernet " 19 - submenu $w.config.f 13 3 "CAN " 20 - submenu $w.config.f 13 4 "SPI " 21 - submenu $w.config.f 13 5 "UARTs, timers and irq control " 23 - submenu $w.config.f 13 6 "Keybord and VGA interface" 24 + submenu $w.config.f 13 3 "UARTs, timers and irq control " 20 + submenu $w.config.f 13 4 "Keybord and VGA interface" 21 + submenu $w.config.f 13 5 "SPI" 22 @@ -3096,9 +3402,9 @@ proc menu14 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 14]] message $w.m -width 400 -aspect 300 -text \ - "Memory controllers " -relief raised + "Memory controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "Memory controllers " + wm title $w "Memory controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 14; break" set nextscript "catch {focus $oldFocus}; menu15 .menu15 \"$title\"" @@ -3138,9 +3444,11 @@ proc menu14 {w title} { pack $w.config.canvas -side right -fill y - submenu $w.config.f 14 0 "8/32-bit PROM/SRAM controller " 15 - submenu $w.config.f 14 1 "Leon2 memory controller " 16 - submenu $w.config.f 14 2 "PC133 SDRAM controller " 17 + submenu $w.config.f 14 0 "Leon2 memory controller " 15 + submenu $w.config.f 14 1 "MIG memory controller " 16 + submenu $w.config.f 14 2 "MIG Series 7 memory controller " 17 + bool $w.config.f 14 3 "Enable AHB Status Register " CONFIG_AHBSTAT_ENABLE + int $w.config.f 14 4 "Number of correctable-error slaves " CONFIG_AHBSTAT_NFTSLV @@ -3178,12 +3486,18 @@ proc menu14 {w title} { } proc update_menu14 {} { + global CONFIG_AHBSTAT_ENABLE + global CONFIG_AHBSTAT_NFTSLV + if {($CONFIG_AHBSTAT_ENABLE == 1)} then {.menu14.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu14.config.f.x4.l configure -state normal; } else {.menu14.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu14.config.f.x4.l configure -state disabled} } proc update_define_menu14 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_AHBSTAT_ENABLE + global CONFIG_AHBSTAT_NFTSLV + if {($CONFIG_AHBSTAT_ENABLE == 1)} then {validate_int CONFIG_AHBSTAT_NFTSLV "$CONFIG_AHBSTAT_NFTSLV" 1} } @@ -3196,9 +3510,9 @@ proc menu15 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 15]] message $w.m -width 400 -aspect 300 -text \ - "8/32-bit PROM/SRAM controller " -relief raised + "Leon2 memory controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "8/32-bit PROM/SRAM controller " + wm title $w "Leon2 memory controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 15; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 15; menu16 .menu16 \"$title\"" @@ -3238,47 +3552,23 @@ proc menu15 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 15 0 "Enable 8/32-bit PROM/SRAM controller " CONFIG_SRCTRL - bool $w.config.f 15 1 "8-bit PROM interface " CONFIG_SRCTRL_8BIT - int $w.config.f 15 2 "PROM waitstates" CONFIG_SRCTRL_PROMWS - int $w.config.f 15 3 "RAM waitstates" CONFIG_SRCTRL_RAMWS - int $w.config.f 15 4 "IO waitstates" CONFIG_SRCTRL_IOWS - bool $w.config.f 15 5 "Use read-modify-write for sub-word writes " CONFIG_SRCTRL_RMW - global tmpvar_28 - minimenu $w.config.f 15 6 "SRAM banks" tmpvar_28 CONFIG_SRCTRL_SRBANKS1 - menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"SRAM banks\"" - $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_28 -value "3" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_28 -value "5" -command "update_active" - menusplit $w $w.config.f.x6.x.menu 5 - global tmpvar_29 - minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_29 CONFIG_SRCTRL_BANKSZ0 - menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"SRAM bank size (kb) (0 for programmable)\"" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_29 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_29 -value "256" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_29 -value "512" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_29 -value "1024" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_29 -value "2048" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_29 -value "4096" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_29 -value "8192" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_29 -value "16384" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_29 -value "32768" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_29 -value "65536" -command "update_active" - menusplit $w $w.config.f.x7.x.menu 14 - int $w.config.f 15 8 "PROM bank select address bit (0 - 28)" CONFIG_SRCTRL_ROMASEL + bool $w.config.f 15 0 "Enable Leon2 memory controller " CONFIG_MCTRL_LEON2 + bool $w.config.f 15 1 "8-bit PROM/SRAM bus support " CONFIG_MCTRL_8BIT + bool $w.config.f 15 2 "16-bit PROM/SRAM bus support " CONFIG_MCTRL_16BIT + bool $w.config.f 15 3 "5th SRAM chip-select " CONFIG_MCTRL_5CS + bool $w.config.f 15 4 "SDRAM controller " CONFIG_MCTRL_SDRAM + bool $w.config.f 15 5 "Separate address and data buses" CONFIG_MCTRL_SDRAM_SEPBUS + bool $w.config.f 15 6 "64-bit SDRAM data bus" CONFIG_MCTRL_SDRAM_BUS64 + bool $w.config.f 15 7 "Unsynchronized sdclock" CONFIG_MCTRL_SDRAM_INVCLK + bool $w.config.f 15 8 "Enable page burst operation " CONFIG_MCTRL_PAGE + bool $w.config.f 15 9 "Enable programmable page burst " CONFIG_MCTRL_PROGPAGE focus $w update_active global winx; global winy - if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers "} + if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controller "} set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks @@ -3309,84 +3599,68 @@ proc menu15 {w title} { } proc update_menu15 {} { - global CONFIG_SRCTRL - global CONFIG_SRCTRL_8BIT - if {($CONFIG_SRCTRL == 1)} then { + global CONFIG_MCTRL_LEON2 + global CONFIG_MCTRL_8BIT + if {($CONFIG_MCTRL_LEON2 == 1)} then { configure_entry .menu15.config.f.x1 normal {n l y}} else {configure_entry .menu15.config.f.x1 disabled {y n l}} - global CONFIG_SRCTRL_PROMWS - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x2.l configure -state normal; } else {.menu15.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x2.l configure -state disabled} - global CONFIG_SRCTRL_RAMWS - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x3.l configure -state normal; } else {.menu15.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x3.l configure -state disabled} - global CONFIG_SRCTRL_IOWS - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x4.l configure -state normal; } else {.menu15.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x4.l configure -state disabled} - global CONFIG_SRCTRL_RMW - if {($CONFIG_SRCTRL == 1)} then { + global CONFIG_MCTRL_16BIT + if {($CONFIG_MCTRL_LEON2 == 1)} then { + configure_entry .menu15.config.f.x2 normal {n l y}} else {configure_entry .menu15.config.f.x2 disabled {y n l}} + global CONFIG_MCTRL_5CS + if {($CONFIG_MCTRL_LEON2 == 1)} then { + configure_entry .menu15.config.f.x3 normal {n l y}} else {configure_entry .menu15.config.f.x3 disabled {y n l}} + global CONFIG_MCTRL_SDRAM + if {($CONFIG_MCTRL_LEON2 == 1)} then { + configure_entry .menu15.config.f.x4 normal {n l y}} else {configure_entry .menu15.config.f.x4 disabled {y n l}} + global CONFIG_MCTRL_SDRAM_SEPBUS + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { configure_entry .menu15.config.f.x5 normal {n l y}} else {configure_entry .menu15.config.f.x5 disabled {y n l}} - if {($CONFIG_SRCTRL == 1)} then {configure_entry .menu15.config.f.x6 normal {x l}} else {configure_entry .menu15.config.f.x6 disabled {x l}} - if {($CONFIG_SRCTRL == 1)} then {configure_entry .menu15.config.f.x7 normal {x l}} else {configure_entry .menu15.config.f.x7 disabled {x l}} - global CONFIG_SRCTRL_ROMASEL - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x8.l configure -state normal; } else {.menu15.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x8.l configure -state disabled} + global CONFIG_MCTRL_SDRAM_BUS64 + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { + configure_entry .menu15.config.f.x6 normal {n l y}} else {configure_entry .menu15.config.f.x6 disabled {y n l}} + global CONFIG_MCTRL_SDRAM_INVCLK + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { + configure_entry .menu15.config.f.x7 normal {n l y}} else {configure_entry .menu15.config.f.x7 disabled {y n l}} + global CONFIG_MCTRL_PAGE + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { + configure_entry .menu15.config.f.x8 normal {n l y}} else {configure_entry .menu15.config.f.x8 disabled {y n l}} + global CONFIG_MCTRL_PROGPAGE + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { + configure_entry .menu15.config.f.x9 normal {n l y}} else {configure_entry .menu15.config.f.x9 disabled {y n l}} } proc update_define_menu15 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_SRCTRL - global CONFIG_SRCTRL_8BIT - if {($CONFIG_SRCTRL == 1)} then { - set CONFIG_SRCTRL_8BIT [expr $CONFIG_SRCTRL_8BIT&15]} else {set CONFIG_SRCTRL_8BIT [expr $CONFIG_SRCTRL_8BIT|16]} - global CONFIG_SRCTRL_PROMWS - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_PROMWS "$CONFIG_SRCTRL_PROMWS" 3} - global CONFIG_SRCTRL_RAMWS - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_RAMWS "$CONFIG_SRCTRL_RAMWS" 0} - global CONFIG_SRCTRL_IOWS - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_IOWS "$CONFIG_SRCTRL_IOWS" 0} - global CONFIG_SRCTRL_RMW - if {($CONFIG_SRCTRL == 1)} then { - set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW&15]} else {set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW|16]} - global tmpvar_28 - global CONFIG_SRCTRL_SRBANKS1 - if {$tmpvar_28 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} - global CONFIG_SRCTRL_SRBANKS2 - if {$tmpvar_28 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} - global CONFIG_SRCTRL_SRBANKS3 - if {$tmpvar_28 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} - global CONFIG_SRCTRL_SRBANKS4 - if {$tmpvar_28 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} - global CONFIG_SRCTRL_SRBANKS5 - if {$tmpvar_28 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} - global tmpvar_29 - global CONFIG_SRCTRL_BANKSZ0 - if {$tmpvar_29 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} - global CONFIG_SRCTRL_BANKSZ1 - if {$tmpvar_29 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} - global CONFIG_SRCTRL_BANKSZ2 - if {$tmpvar_29 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} - global CONFIG_SRCTRL_BANKSZ3 - if {$tmpvar_29 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} - global CONFIG_SRCTRL_BANKSZ4 - if {$tmpvar_29 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} - global CONFIG_SRCTRL_BANKSZ5 - if {$tmpvar_29 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} - global CONFIG_SRCTRL_BANKSZ6 - if {$tmpvar_29 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} - global CONFIG_SRCTRL_BANKSZ7 - if {$tmpvar_29 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} - global CONFIG_SRCTRL_BANKSZ8 - if {$tmpvar_29 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} - global CONFIG_SRCTRL_BANKSZ9 - if {$tmpvar_29 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} - global CONFIG_SRCTRL_BANKSZ10 - if {$tmpvar_29 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} - global CONFIG_SRCTRL_BANKSZ11 - if {$tmpvar_29 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} - global CONFIG_SRCTRL_BANKSZ12 - if {$tmpvar_29 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} - global CONFIG_SRCTRL_BANKSZ13 - if {$tmpvar_29 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} - global CONFIG_SRCTRL_ROMASEL - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_ROMASEL "$CONFIG_SRCTRL_ROMASEL" 19} + global CONFIG_MCTRL_LEON2 + global CONFIG_MCTRL_8BIT + if {($CONFIG_MCTRL_LEON2 == 1)} then { + set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT&15]} else {set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT|16]} + global CONFIG_MCTRL_16BIT + if {($CONFIG_MCTRL_LEON2 == 1)} then { + set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT&15]} else {set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT|16]} + global CONFIG_MCTRL_5CS + if {($CONFIG_MCTRL_LEON2 == 1)} then { + set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS&15]} else {set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS|16]} + global CONFIG_MCTRL_SDRAM + if {($CONFIG_MCTRL_LEON2 == 1)} then { + set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM&15]} else {set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM|16]} + global CONFIG_MCTRL_SDRAM_SEPBUS + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { + set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS&15]} else {set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS|16]} + global CONFIG_MCTRL_SDRAM_BUS64 + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { + set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64&15]} else {set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64|16]} + global CONFIG_MCTRL_SDRAM_INVCLK + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { + set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK&15]} else {set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK|16]} + global CONFIG_MCTRL_PAGE + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { + set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE&15]} else {set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE|16]} + global CONFIG_MCTRL_PROGPAGE + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { + set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE&15]} else {set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE|16]} } @@ -3399,9 +3673,9 @@ proc menu16 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 16]] message $w.m -width 400 -aspect 300 -text \ - "Leon2 memory controller " -relief raised + "MIG memory controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "Leon2 memory controller " + wm title $w "MIG memory controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 16; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 16; menu17 .menu17 \"$title\"" @@ -3441,23 +3715,19 @@ proc menu16 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 16 0 "Enable Leon2 memory controller " CONFIG_MCTRL_LEON2 - bool $w.config.f 16 1 "8-bit PROM/SRAM bus support " CONFIG_MCTRL_8BIT - bool $w.config.f 16 2 "16-bit PROM/SRAM bus support " CONFIG_MCTRL_16BIT - bool $w.config.f 16 3 "5th SRAM chip-select " CONFIG_MCTRL_5CS - bool $w.config.f 16 4 "SDRAM controller " CONFIG_MCTRL_SDRAM - bool $w.config.f 16 5 "Separate address and data buses" CONFIG_MCTRL_SDRAM_SEPBUS - bool $w.config.f 16 6 "64-bit SDRAM data bus" CONFIG_MCTRL_SDRAM_BUS64 - bool $w.config.f 16 7 "Unsynchronized sdclock" CONFIG_MCTRL_SDRAM_INVCLK - bool $w.config.f 16 8 "Enable page burst operation " CONFIG_MCTRL_PAGE - bool $w.config.f 16 9 "Enable programmable page burst " CONFIG_MCTRL_PROGPAGE + bool $w.config.f 16 0 "Enable Xilinx MIG memory controller" CONFIG_MIG_DDR2 + int $w.config.f 16 1 "Chip selects (ranks) " CONFIG_MIG_RANKS + int $w.config.f 16 2 "Column bits " CONFIG_MIG_COLBITS + int $w.config.f 16 3 "Row bits " CONFIG_MIG_ROWBITS + int $w.config.f 16 4 "Bank bits " CONFIG_MIG_BANKBITS + hex $w.config.f 16 5 "AHB HMASK " CONFIG_MIG_HMASK focus $w update_active global winx; global winy - if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers "} + if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controller "} set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks @@ -3488,68 +3758,34 @@ proc menu16 {w title} { } proc update_menu16 {} { - global CONFIG_MCTRL_LEON2 - global CONFIG_MCTRL_8BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu16.config.f.x1 normal {n l y}} else {configure_entry .menu16.config.f.x1 disabled {y n l}} - global CONFIG_MCTRL_16BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu16.config.f.x2 normal {n l y}} else {configure_entry .menu16.config.f.x2 disabled {y n l}} - global CONFIG_MCTRL_5CS - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu16.config.f.x3 normal {n l y}} else {configure_entry .menu16.config.f.x3 disabled {y n l}} - global CONFIG_MCTRL_SDRAM - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu16.config.f.x4 normal {n l y}} else {configure_entry .menu16.config.f.x4 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_SEPBUS - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - configure_entry .menu16.config.f.x5 normal {n l y}} else {configure_entry .menu16.config.f.x5 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_BUS64 - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - configure_entry .menu16.config.f.x6 normal {n l y}} else {configure_entry .menu16.config.f.x6 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_INVCLK - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - configure_entry .menu16.config.f.x7 normal {n l y}} else {configure_entry .menu16.config.f.x7 disabled {y n l}} - global CONFIG_MCTRL_PAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - configure_entry .menu16.config.f.x8 normal {n l y}} else {configure_entry .menu16.config.f.x8 disabled {y n l}} - global CONFIG_MCTRL_PROGPAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { - configure_entry .menu16.config.f.x9 normal {n l y}} else {configure_entry .menu16.config.f.x9 disabled {y n l}} + global CONFIG_MIG_DDR2 + global CONFIG_MIG_RANKS + if {($CONFIG_MIG_DDR2 == 1)} then {.menu16.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x1.l configure -state normal; } else {.menu16.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x1.l configure -state disabled} + global CONFIG_MIG_COLBITS + if {($CONFIG_MIG_DDR2 == 1)} then {.menu16.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x2.l configure -state normal; } else {.menu16.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x2.l configure -state disabled} + global CONFIG_MIG_ROWBITS + if {($CONFIG_MIG_DDR2 == 1)} then {.menu16.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x3.l configure -state normal; } else {.menu16.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x3.l configure -state disabled} + global CONFIG_MIG_BANKBITS + if {($CONFIG_MIG_DDR2 == 1)} then {.menu16.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x4.l configure -state normal; } else {.menu16.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x4.l configure -state disabled} + global CONFIG_MIG_HMASK + if {($CONFIG_MIG_DDR2 == 1)} then {.menu16.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x5.l configure -state normal; } else {.menu16.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x5.l configure -state disabled} } proc update_define_menu16 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_MCTRL_LEON2 - global CONFIG_MCTRL_8BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT&15]} else {set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT|16]} - global CONFIG_MCTRL_16BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT&15]} else {set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT|16]} - global CONFIG_MCTRL_5CS - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS&15]} else {set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS|16]} - global CONFIG_MCTRL_SDRAM - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM&15]} else {set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM|16]} - global CONFIG_MCTRL_SDRAM_SEPBUS - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS&15]} else {set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS|16]} - global CONFIG_MCTRL_SDRAM_BUS64 - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64&15]} else {set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64|16]} - global CONFIG_MCTRL_SDRAM_INVCLK - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK&15]} else {set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK|16]} - global CONFIG_MCTRL_PAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE&15]} else {set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE|16]} - global CONFIG_MCTRL_PROGPAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { - set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE&15]} else {set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE|16]} + global CONFIG_MIG_DDR2 + global CONFIG_MIG_RANKS + if {($CONFIG_MIG_DDR2 == 1)} then {validate_int CONFIG_MIG_RANKS "$CONFIG_MIG_RANKS" 1} + global CONFIG_MIG_COLBITS + if {($CONFIG_MIG_DDR2 == 1)} then {validate_int CONFIG_MIG_COLBITS "$CONFIG_MIG_COLBITS" 10} + global CONFIG_MIG_ROWBITS + if {($CONFIG_MIG_DDR2 == 1)} then {validate_int CONFIG_MIG_ROWBITS "$CONFIG_MIG_ROWBITS" 13} + global CONFIG_MIG_BANKBITS + if {($CONFIG_MIG_DDR2 == 1)} then {validate_int CONFIG_MIG_BANKBITS "$CONFIG_MIG_BANKBITS" 2} + global CONFIG_MIG_HMASK + if {($CONFIG_MIG_DDR2 == 1)} then {validate_hex CONFIG_MIG_HMASK "$CONFIG_MIG_HMASK" F00} } @@ -3562,9 +3798,9 @@ proc menu17 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 17]] message $w.m -width 400 -aspect 300 -text \ - "PC133 SDRAM controller " -relief raised + "MIG Series 7 memory controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "PC133 SDRAM controller " + wm title $w "MIG Series 7 memory controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 17; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 17; catch {destroy .menu14}; unregister_active 14; menu18 .menu18 \"$title\"" @@ -3604,18 +3840,14 @@ proc menu17 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 17 0 "Enable PC133 SDRAM controller " CONFIG_SDCTRL - bool $w.config.f 17 1 "64-bit SDRAM data bus" CONFIG_SDCTRL_BUS64 - bool $w.config.f 17 2 "Unsynchronized sdclock" CONFIG_SDCTRL_INVCLK - bool $w.config.f 17 3 "Enable page burst operation " CONFIG_SDCTRL_PAGE - bool $w.config.f 17 4 "Enable programmable page burst " CONFIG_SDCTRL_PROGPAGE + bool $w.config.f 17 0 "Enable Xilinx DDR3 MIG memory controller" CONFIG_MIG_SERIES7 focus $w update_active global winx; global winy - if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers "} + if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controller "} set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks @@ -3646,38 +3878,12 @@ proc menu17 {w title} { } proc update_menu17 {} { - global CONFIG_SDCTRL - global CONFIG_SDCTRL_BUS64 - if {($CONFIG_SDCTRL == 1)} then { - configure_entry .menu17.config.f.x1 normal {n l y}} else {configure_entry .menu17.config.f.x1 disabled {y n l}} - global CONFIG_SDCTRL_INVCLK - if {($CONFIG_SDCTRL == 1)} then { - configure_entry .menu17.config.f.x2 normal {n l y}} else {configure_entry .menu17.config.f.x2 disabled {y n l}} - global CONFIG_SDCTRL_PAGE - if {($CONFIG_SDCTRL == 1)} then { - configure_entry .menu17.config.f.x3 normal {n l y}} else {configure_entry .menu17.config.f.x3 disabled {y n l}} - global CONFIG_SDCTRL_PROGPAGE - if {($CONFIG_SDCTRL == 1) && ($CONFIG_SDCTRL_PAGE == 1)} then { - configure_entry .menu17.config.f.x4 normal {n l y}} else {configure_entry .menu17.config.f.x4 disabled {y n l}} } proc update_define_menu17 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_SDCTRL - global CONFIG_SDCTRL_BUS64 - if {($CONFIG_SDCTRL == 1)} then { - set CONFIG_SDCTRL_BUS64 [expr $CONFIG_SDCTRL_BUS64&15]} else {set CONFIG_SDCTRL_BUS64 [expr $CONFIG_SDCTRL_BUS64|16]} - global CONFIG_SDCTRL_INVCLK - if {($CONFIG_SDCTRL == 1)} then { - set CONFIG_SDCTRL_INVCLK [expr $CONFIG_SDCTRL_INVCLK&15]} else {set CONFIG_SDCTRL_INVCLK [expr $CONFIG_SDCTRL_INVCLK|16]} - global CONFIG_SDCTRL_PAGE - if {($CONFIG_SDCTRL == 1)} then { - set CONFIG_SDCTRL_PAGE [expr $CONFIG_SDCTRL_PAGE&15]} else {set CONFIG_SDCTRL_PAGE [expr $CONFIG_SDCTRL_PAGE|16]} - global CONFIG_SDCTRL_PROGPAGE - if {($CONFIG_SDCTRL == 1) && ($CONFIG_SDCTRL_PAGE == 1)} then { - set CONFIG_SDCTRL_PROGPAGE [expr $CONFIG_SDCTRL_PROGPAGE&15]} else {set CONFIG_SDCTRL_PROGPAGE [expr $CONFIG_SDCTRL_PROGPAGE|16]} } @@ -3736,16 +3942,16 @@ proc menu18 {w title} { hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_30 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_30 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3807,21 +4013,21 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_30 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_30 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_30 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_30 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_30 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_30 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_30 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_30 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3881,14 +4087,14 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 19 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_31 - minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_31 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3942,17 +4148,17 @@ proc update_define_menu19 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_31 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_31 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_31 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3965,9 +4171,9 @@ proc menu20 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 20]] message $w.m -width 400 -aspect 300 -text \ - "CAN " -relief raised + "UARTs, timers and irq control " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "CAN " + wm title $w "UARTs, timers and irq control " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu21 .menu21 \"$title\"" @@ -4007,12 +4213,32 @@ proc menu20 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 20 0 "Enable CAN interface " CONFIG_CAN_ENABLE - hex $w.config.f 20 1 "CAN I/O area start address (haddr\[19:8\]) " CONFIG_CANIO - int $w.config.f 20 2 "Interrupt number " CONFIG_CANIRQ - bool $w.config.f 20 3 "Enable loop-back testing " CONFIG_CANLOOP - bool $w.config.f 20 4 "Enable synchronous reset " CONFIG_CAN_SYNCRST - bool $w.config.f 20 5 "Enable FT FIFO memory " CONFIG_CAN_FT + bool $w.config.f 20 0 "Enable console UART " CONFIG_UART1_ENABLE + global tmpvar_31 + minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 + menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + menusplit $w $w.config.f.x1.x.menu 6 + bool $w.config.f 20 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE + bool $w.config.f 20 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC + int $w.config.f 20 4 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC + bool $w.config.f 20 5 "Enable Timer Unit " CONFIG_GPT_ENABLE + int $w.config.f 20 6 "Number of timers (1 - 7) " CONFIG_GPT_NTIM + int $w.config.f 20 7 "Scaler width (2 - 16) " CONFIG_GPT_SW + int $w.config.f 20 8 "Timer width (2 - 32) " CONFIG_GPT_TW + int $w.config.f 20 9 "Timer unit interrupt " CONFIG_GPT_IRQ + bool $w.config.f 20 10 "Separate interrupts " CONFIG_GPT_SEPIRQ + bool $w.config.f 20 11 "Watchdog enable " CONFIG_GPT_WDOGEN + hex $w.config.f 20 12 "Initial watchdog time-out value " CONFIG_GPT_WDOG + bool $w.config.f 20 13 "Enable generic GPIO port " CONFIG_GRGPIO_ENABLE + int $w.config.f 20 14 "GPIO width " CONFIG_GRGPIO_WIDTH + hex $w.config.f 20 15 "GPIO interrupt mask " CONFIG_GRGPIO_IMASK + bool $w.config.f 20 16 "Enable I2C master " CONFIG_I2C_ENABLE @@ -4050,40 +4276,83 @@ proc menu20 {w title} { } proc update_menu20 {} { - global CONFIG_CAN_ENABLE - global CONFIG_CANIO - if {($CONFIG_CAN_ENABLE == 1)} then {.menu20.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x1.l configure -state normal; } else {.menu20.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x1.l configure -state disabled} - global CONFIG_CANIRQ - if {($CONFIG_CAN_ENABLE == 1)} then {.menu20.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x2.l configure -state normal; } else {.menu20.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x2.l configure -state disabled} - global CONFIG_CANLOOP - if {($CONFIG_CAN_ENABLE == 1)} then { + global CONFIG_UART1_ENABLE + if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu20.config.f.x1 normal {x l}} else {configure_entry .menu20.config.f.x1 disabled {x l}} + global CONFIG_IRQ3_ENABLE + global CONFIG_IRQ3_SEC + if {($CONFIG_IRQ3_ENABLE == 1)} then { configure_entry .menu20.config.f.x3 normal {n l y}} else {configure_entry .menu20.config.f.x3 disabled {y n l}} - global CONFIG_CAN_SYNCRST - if {($CONFIG_CAN_ENABLE == 1)} then { - configure_entry .menu20.config.f.x4 normal {n l y}} else {configure_entry .menu20.config.f.x4 disabled {y n l}} - global CONFIG_CAN_FT - if {($CONFIG_CAN_ENABLE == 1)} then { - configure_entry .menu20.config.f.x5 normal {n l y}} else {configure_entry .menu20.config.f.x5 disabled {y n l}} + global CONFIG_IRQ3_NSEC + if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu20.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x4.l configure -state normal; } else {.menu20.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x4.l configure -state disabled} + global CONFIG_GPT_ENABLE + global CONFIG_GPT_NTIM + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x6.l configure -state normal; } else {.menu20.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x6.l configure -state disabled} + global CONFIG_GPT_SW + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x7.l configure -state normal; } else {.menu20.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x7.l configure -state disabled} + global CONFIG_GPT_TW + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x8.l configure -state normal; } else {.menu20.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x8.l configure -state disabled} + global CONFIG_GPT_IRQ + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x9.l configure -state normal; } else {.menu20.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x9.l configure -state disabled} + global CONFIG_GPT_SEPIRQ + if {($CONFIG_GPT_ENABLE == 1)} then { + configure_entry .menu20.config.f.x10 normal {n l y}} else {configure_entry .menu20.config.f.x10 disabled {y n l}} + global CONFIG_GPT_WDOGEN + if {($CONFIG_GPT_ENABLE == 1)} then { + configure_entry .menu20.config.f.x11 normal {n l y}} else {configure_entry .menu20.config.f.x11 disabled {y n l}} + global CONFIG_GPT_WDOG + if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu20.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x12.l configure -state normal; } else {.menu20.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x12.l configure -state disabled} + global CONFIG_GRGPIO_ENABLE + global CONFIG_GRGPIO_WIDTH + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu20.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x14.l configure -state normal; } else {.menu20.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x14.l configure -state disabled} + global CONFIG_GRGPIO_IMASK + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu20.config.f.x15.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x15.l configure -state normal; } else {.menu20.config.f.x15.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x15.l configure -state disabled} } proc update_define_menu20 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_CAN_ENABLE - global CONFIG_CANIO - if {($CONFIG_CAN_ENABLE == 1)} then {validate_hex CONFIG_CANIO "$CONFIG_CANIO" C00} - global CONFIG_CANIRQ - if {($CONFIG_CAN_ENABLE == 1)} then {validate_int CONFIG_CANIRQ "$CONFIG_CANIRQ" 13} - global CONFIG_CANLOOP - if {($CONFIG_CAN_ENABLE == 1)} then { - set CONFIG_CANLOOP [expr $CONFIG_CANLOOP&15]} else {set CONFIG_CANLOOP [expr $CONFIG_CANLOOP|16]} - global CONFIG_CAN_SYNCRST - if {($CONFIG_CAN_ENABLE == 1)} then { - set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST&15]} else {set CONFIG_CAN_SYNCRST [expr $CONFIG_CAN_SYNCRST|16]} - global CONFIG_CAN_FT - if {($CONFIG_CAN_ENABLE == 1)} then { - set CONFIG_CAN_FT [expr $CONFIG_CAN_FT&15]} else {set CONFIG_CAN_FT [expr $CONFIG_CAN_FT|16]} + global tmpvar_31 + global CONFIG_UA1_FIFO1 + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + global CONFIG_UA1_FIFO2 + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + global CONFIG_UA1_FIFO4 + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + global CONFIG_UA1_FIFO8 + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + global CONFIG_UA1_FIFO16 + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + global CONFIG_UA1_FIFO32 + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + global CONFIG_IRQ3_ENABLE + global CONFIG_IRQ3_SEC + if {($CONFIG_IRQ3_ENABLE == 1)} then { + set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC&15]} else {set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC|16]} + global CONFIG_IRQ3_NSEC + if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {validate_int CONFIG_IRQ3_NSEC "$CONFIG_IRQ3_NSEC" 12} + global CONFIG_GPT_ENABLE + global CONFIG_GPT_NTIM + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_NTIM "$CONFIG_GPT_NTIM" 2} + global CONFIG_GPT_SW + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_SW "$CONFIG_GPT_SW" 8} + global CONFIG_GPT_TW + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_TW "$CONFIG_GPT_TW" 32} + global CONFIG_GPT_IRQ + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_IRQ "$CONFIG_GPT_IRQ" 8} + global CONFIG_GPT_SEPIRQ + if {($CONFIG_GPT_ENABLE == 1)} then { + set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ&15]} else {set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ|16]} + global CONFIG_GPT_WDOGEN + if {($CONFIG_GPT_ENABLE == 1)} then { + set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN&15]} else {set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN|16]} + global CONFIG_GPT_WDOG + if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {validate_hex CONFIG_GPT_WDOG "$CONFIG_GPT_WDOG" FFFF} + global CONFIG_GRGPIO_ENABLE + global CONFIG_GRGPIO_WIDTH + if {($CONFIG_GRGPIO_ENABLE == 1)} then {validate_int CONFIG_GRGPIO_WIDTH "$CONFIG_GRGPIO_WIDTH" 8} + global CONFIG_GRGPIO_IMASK + if {($CONFIG_GRGPIO_ENABLE == 1)} then {validate_hex CONFIG_GRGPIO_IMASK "$CONFIG_GRGPIO_IMASK" 0000} } @@ -4096,12 +4365,12 @@ proc menu21 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 21]] message $w.m -width 400 -aspect 300 -text \ - "SPI " -relief raised + "Keybord and VGA interface" -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "SPI " + wm title $w "Keybord and VGA interface" bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; break" - set nextscript "catch {focus $oldFocus}; menu22 .menu22 \"$title\"" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu22 .menu22 \"$title\"" frame $w.f button $w.f.back -text "OK" \ -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21" @@ -4138,7 +4407,9 @@ proc menu21 {w title} { pack $w.config.canvas -side right -fill y - submenu $w.config.f 21 0 "SPI controller(s) " 22 + bool $w.config.f 21 0 "Keyboard/mouse (PS2) interface " CONFIG_KBD_ENABLE + bool $w.config.f 21 1 "Text-based VGA interface " CONFIG_VGA_ENABLE + bool $w.config.f 21 2 "SVGA graphical frame buffer " CONFIG_SVGA_ENABLE @@ -4176,30 +4447,38 @@ proc menu21 {w title} { } proc update_menu21 {} { + global CONFIG_VGA_ENABLE + global CONFIG_SVGA_ENABLE + if {($CONFIG_VGA_ENABLE == 0)} then { + configure_entry .menu21.config.f.x2 normal {n l y}} else {configure_entry .menu21.config.f.x2 disabled {y n l}} } proc update_define_menu21 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_VGA_ENABLE + global CONFIG_SVGA_ENABLE + if {($CONFIG_VGA_ENABLE == 0)} then { + set CONFIG_SVGA_ENABLE [expr $CONFIG_SVGA_ENABLE&15]} else {set CONFIG_SVGA_ENABLE [expr $CONFIG_SVGA_ENABLE|16]} } proc menu22 {w title} { set oldFocus [focus] - catch {focus .menu21} + catch {focus .menu13} catch {destroy $w; unregister_active 22} toplevel $w -class Dialog wm withdraw $w global active_menus set active_menus [lsort -integer [linsert $active_menus end 22]] message $w.m -width 400 -aspect 300 -text \ - "SPI controller(s) " -relief raised + "SPI" -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "SPI controller(s) " + wm title $w "SPI" bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 22; catch {destroy .menu21}; unregister_active 21; menu23 .menu23 \"$title\"" + set nextscript "catch {focus $oldFocus}; menu23 .menu23 \"$title\"" frame $w.f button $w.f.back -text "OK" \ -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22" @@ -4236,32 +4515,16 @@ proc menu22 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 22 0 "Enable SPI controller(s) " CONFIG_SPICTRL_ENABLE - int $w.config.f 22 1 "Number of SPI controllers " CONFIG_SPICTRL_NUM - int $w.config.f 22 2 "Slave select lines " CONFIG_SPICTRL_SLVS - int $w.config.f 22 3 "FIFO depth (2^N) " CONFIG_SPICTRL_FIFO - bool $w.config.f 22 4 "Enable slave select registers" CONFIG_SPICTRL_SLVREG - bool $w.config.f 22 5 "Enable automatic slave select" CONFIG_SPICTRL_ASEL - bool $w.config.f 22 6 "Support automated transfers " CONFIG_SPICTRL_AM - bool $w.config.f 22 7 "Support open drain mode " CONFIG_SPICTRL_ODMODE - bool $w.config.f 22 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN - int $w.config.f 22 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN - bool $w.config.f 22 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_32 - minimenu $w.config.f 22 11 "Fault-tolerance" tmpvar_32 CONFIG_SPICTRL_NOFT - menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_32 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_32 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_32 -value "TMR" -command "update_active" - menusplit $w $w.config.f.x11.x.menu 3 + submenu $w.config.f 22 0 "SPI memory controller " 23 + submenu $w.config.f 22 1 "SPI controller(s) " 24 focus $w update_active global winx; global winy - if {[winfo exists .menu21] == 0} then {menu21 .menu21 "SPI "} - set winx [expr [winfo x .menu21]+30]; set winy [expr [winfo y .menu21]+30] + if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} + set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f @@ -4291,89 +4554,27 @@ proc menu22 {w title} { } proc update_menu22 {} { - global CONFIG_SPICTRL_ENABLE - global CONFIG_SPICTRL_NUM - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu22.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x1.l configure -state normal; } else {.menu22.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x1.l configure -state disabled} - global CONFIG_SPICTRL_SLVS - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu22.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x2.l configure -state normal; } else {.menu22.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x2.l configure -state disabled} - global CONFIG_SPICTRL_FIFO - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu22.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x3.l configure -state normal; } else {.menu22.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x3.l configure -state disabled} - global CONFIG_SPICTRL_SLVREG - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x4 normal {n l y}} else {configure_entry .menu22.config.f.x4 disabled {y n l}} - global CONFIG_SPICTRL_ASEL - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x5 normal {n l y}} else {configure_entry .menu22.config.f.x5 disabled {y n l}} - global CONFIG_SPICTRL_AM - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x6 normal {n l y}} else {configure_entry .menu22.config.f.x6 disabled {y n l}} - global CONFIG_SPICTRL_ODMODE - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x7 normal {n l y}} else {configure_entry .menu22.config.f.x7 disabled {y n l}} - global CONFIG_SPICTRL_TWEN - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x8 normal {n l y}} else {configure_entry .menu22.config.f.x8 disabled {y n l}} - global CONFIG_SPICTRL_MAXWLEN - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu22.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x9.l configure -state normal; } else {.menu22.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x9.l configure -state disabled} - global CONFIG_SPICTRL_SYNCRAM - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x10 normal {n l y}} else {configure_entry .menu22.config.f.x10 disabled {y n l}} - if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then {configure_entry .menu22.config.f.x11 normal {x l}} else {configure_entry .menu22.config.f.x11 disabled {x l}} } proc update_define_menu22 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_SPICTRL_ENABLE - global CONFIG_SPICTRL_NUM - if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_NUM "$CONFIG_SPICTRL_NUM" 1} - global CONFIG_SPICTRL_SLVS - if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_SLVS "$CONFIG_SPICTRL_SLVS" 1} - global CONFIG_SPICTRL_FIFO - if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_FIFO "$CONFIG_SPICTRL_FIFO" 1} - global CONFIG_SPICTRL_SLVREG - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - set CONFIG_SPICTRL_SLVREG [expr $CONFIG_SPICTRL_SLVREG&15]} else {set CONFIG_SPICTRL_SLVREG [expr $CONFIG_SPICTRL_SLVREG|16]} - global CONFIG_SPICTRL_ASEL - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - set CONFIG_SPICTRL_ASEL [expr $CONFIG_SPICTRL_ASEL&15]} else {set CONFIG_SPICTRL_ASEL [expr $CONFIG_SPICTRL_ASEL|16]} - global CONFIG_SPICTRL_AM - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - set CONFIG_SPICTRL_AM [expr $CONFIG_SPICTRL_AM&15]} else {set CONFIG_SPICTRL_AM [expr $CONFIG_SPICTRL_AM|16]} - global CONFIG_SPICTRL_ODMODE - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - set CONFIG_SPICTRL_ODMODE [expr $CONFIG_SPICTRL_ODMODE&15]} else {set CONFIG_SPICTRL_ODMODE [expr $CONFIG_SPICTRL_ODMODE|16]} - global CONFIG_SPICTRL_TWEN - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - set CONFIG_SPICTRL_TWEN [expr $CONFIG_SPICTRL_TWEN&15]} else {set CONFIG_SPICTRL_TWEN [expr $CONFIG_SPICTRL_TWEN|16]} - global CONFIG_SPICTRL_MAXWLEN - if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_MAXWLEN "$CONFIG_SPICTRL_MAXWLEN" 0} - global CONFIG_SPICTRL_SYNCRAM - if {($CONFIG_SPICTRL_ENABLE == 1)} then { - set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_32 - global CONFIG_SPICTRL_NOFT - if {$tmpvar_32 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} - global CONFIG_SPICTRL_DMRFT - if {$tmpvar_32 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} - global CONFIG_SPICTRL_TMRFT - if {$tmpvar_32 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } proc menu23 {w title} { set oldFocus [focus] - catch {focus .menu13} + catch {focus .menu22} catch {destroy $w; unregister_active 23} toplevel $w -class Dialog wm withdraw $w global active_menus set active_menus [lsort -integer [linsert $active_menus end 23]] message $w.m -width 400 -aspect 300 -text \ - "UARTs, timers and irq control " -relief raised + "SPI memory controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "UARTs, timers and irq control " + wm title $w "SPI memory controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu24 .menu24 \"$title\"" @@ -4413,36 +4614,23 @@ proc menu23 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 23 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_33 - minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_33 CONFIG_UA1_FIFO1 - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_33 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_33 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_33 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 6 - bool $w.config.f 23 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE - bool $w.config.f 23 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC - int $w.config.f 23 4 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC - bool $w.config.f 23 5 "Enable Timer Unit " CONFIG_GPT_ENABLE - int $w.config.f 23 6 "Number of timers (1 - 7) " CONFIG_GPT_NTIM - int $w.config.f 23 7 "Scaler width (2 - 16) " CONFIG_GPT_SW - int $w.config.f 23 8 "Timer width (2 - 32) " CONFIG_GPT_TW - int $w.config.f 23 9 "Timer unit interrupt " CONFIG_GPT_IRQ - bool $w.config.f 23 10 "Separate interrupts " CONFIG_GPT_SEPIRQ - bool $w.config.f 23 11 "Watchdog enable " CONFIG_GPT_WDOGEN - hex $w.config.f 23 12 "Initial watchdog time-out value " CONFIG_GPT_WDOG + bool $w.config.f 23 0 "Enable SPI memory controller " CONFIG_SPIMCTRL + bool $w.config.f 23 1 "Enable SD card support " CONFIG_SPIMCTRL_SDCARD + hex $w.config.f 23 2 "Read instruction " CONFIG_SPIMCTRL_READCMD + bool $w.config.f 23 3 "Read instruction requires dummy byte " CONFIG_SPIMCTRL_DUMMYBYTE + bool $w.config.f 23 4 "Enable dual output for reads " CONFIG_SPIMCTRL_DUALOUTPUT + hex $w.config.f 23 5 "Address offset " CONFIG_SPIMCTRL_OFFSET + int $w.config.f 23 6 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER + int $w.config.f 23 7 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER + int $w.config.f 23 8 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT focus $w update_active global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] + if {[winfo exists .menu22] == 0} then {menu22 .menu22 "SPI"} + set winx [expr [winfo x .menu22]+30]; set winy [expr [winfo y .menu22]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f @@ -4472,91 +4660,70 @@ proc menu23 {w title} { } proc update_menu23 {} { - global CONFIG_UART1_ENABLE - if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu23.config.f.x1 normal {x l}} else {configure_entry .menu23.config.f.x1 disabled {x l}} - global CONFIG_IRQ3_ENABLE - global CONFIG_IRQ3_SEC - if {($CONFIG_IRQ3_ENABLE == 1)} then { + global CONFIG_SPIMCTRL + global CONFIG_SPIMCTRL_SDCARD + if {($CONFIG_SPIMCTRL == 1)} then { + configure_entry .menu23.config.f.x1 normal {n l y}} else {configure_entry .menu23.config.f.x1 disabled {y n l}} + global CONFIG_SPIMCTRL_READCMD + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu23.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x2.l configure -state normal; } else {.menu23.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x2.l configure -state disabled} + global CONFIG_SPIMCTRL_DUMMYBYTE + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { configure_entry .menu23.config.f.x3 normal {n l y}} else {configure_entry .menu23.config.f.x3 disabled {y n l}} - global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu23.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x4.l configure -state normal; } else {.menu23.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x4.l configure -state disabled} - global CONFIG_GPT_ENABLE - global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {.menu23.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x6.l configure -state normal; } else {.menu23.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x6.l configure -state disabled} - global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu23.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x7.l configure -state normal; } else {.menu23.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x7.l configure -state disabled} - global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu23.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x8.l configure -state normal; } else {.menu23.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x8.l configure -state disabled} - global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {.menu23.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x9.l configure -state normal; } else {.menu23.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x9.l configure -state disabled} - global CONFIG_GPT_SEPIRQ - if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu23.config.f.x10 normal {n l y}} else {configure_entry .menu23.config.f.x10 disabled {y n l}} - global CONFIG_GPT_WDOGEN - if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu23.config.f.x11 normal {n l y}} else {configure_entry .menu23.config.f.x11 disabled {y n l}} - global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu23.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x12.l configure -state normal; } else {.menu23.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x12.l configure -state disabled} + global CONFIG_SPIMCTRL_DUALOUTPUT + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { + configure_entry .menu23.config.f.x4 normal {n l y}} else {configure_entry .menu23.config.f.x4 disabled {y n l}} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu23.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x5.l configure -state normal; } else {.menu23.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x5.l configure -state disabled} + global CONFIG_SPIMCTRL_SCALER + if {($CONFIG_SPIMCTRL == 1)} then {.menu23.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x6.l configure -state normal; } else {.menu23.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x6.l configure -state disabled} + global CONFIG_SPIMCTRL_ASCALER + if {($CONFIG_SPIMCTRL == 1)} then {.menu23.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x7.l configure -state normal; } else {.menu23.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x7.l configure -state disabled} + global CONFIG_SPIMCTRL_PWRUPCNT + if {($CONFIG_SPIMCTRL == 1)} then {.menu23.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x8.l configure -state normal; } else {.menu23.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x8.l configure -state disabled} } proc update_define_menu23 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_33 - global CONFIG_UA1_FIFO1 - if {$tmpvar_33 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} - global CONFIG_UA1_FIFO2 - if {$tmpvar_33 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} - global CONFIG_UA1_FIFO4 - if {$tmpvar_33 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} - global CONFIG_UA1_FIFO8 - if {$tmpvar_33 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} - global CONFIG_UA1_FIFO16 - if {$tmpvar_33 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} - global CONFIG_UA1_FIFO32 - if {$tmpvar_33 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global CONFIG_IRQ3_ENABLE - global CONFIG_IRQ3_SEC - if {($CONFIG_IRQ3_ENABLE == 1)} then { - set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC&15]} else {set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC|16]} - global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {validate_int CONFIG_IRQ3_NSEC "$CONFIG_IRQ3_NSEC" 12} - global CONFIG_GPT_ENABLE - global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_NTIM "$CONFIG_GPT_NTIM" 2} - global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_SW "$CONFIG_GPT_SW" 8} - global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_TW "$CONFIG_GPT_TW" 32} - global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_IRQ "$CONFIG_GPT_IRQ" 8} - global CONFIG_GPT_SEPIRQ - if {($CONFIG_GPT_ENABLE == 1)} then { - set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ&15]} else {set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ|16]} - global CONFIG_GPT_WDOGEN - if {($CONFIG_GPT_ENABLE == 1)} then { - set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN&15]} else {set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN|16]} - global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {validate_hex CONFIG_GPT_WDOG "$CONFIG_GPT_WDOG" FFFF} + global CONFIG_SPIMCTRL + global CONFIG_SPIMCTRL_SDCARD + if {($CONFIG_SPIMCTRL == 1)} then { + set CONFIG_SPIMCTRL_SDCARD [expr $CONFIG_SPIMCTRL_SDCARD&15]} else {set CONFIG_SPIMCTRL_SDCARD [expr $CONFIG_SPIMCTRL_SDCARD|16]} + global CONFIG_SPIMCTRL_READCMD + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {validate_hex CONFIG_SPIMCTRL_READCMD "$CONFIG_SPIMCTRL_READCMD" 0B} + global CONFIG_SPIMCTRL_DUMMYBYTE + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { + set CONFIG_SPIMCTRL_DUMMYBYTE [expr $CONFIG_SPIMCTRL_DUMMYBYTE&15]} else {set CONFIG_SPIMCTRL_DUMMYBYTE [expr $CONFIG_SPIMCTRL_DUMMYBYTE|16]} + global CONFIG_SPIMCTRL_DUALOUTPUT + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { + set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT&15]} else {set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT|16]} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {validate_hex CONFIG_SPIMCTRL_OFFSET "$CONFIG_SPIMCTRL_OFFSET" 0} + global CONFIG_SPIMCTRL_SCALER + if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_SCALER "$CONFIG_SPIMCTRL_SCALER" 1} + global CONFIG_SPIMCTRL_ASCALER + if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_ASCALER "$CONFIG_SPIMCTRL_ASCALER" 8} + global CONFIG_SPIMCTRL_PWRUPCNT + if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_PWRUPCNT "$CONFIG_SPIMCTRL_PWRUPCNT" 0} } proc menu24 {w title} { set oldFocus [focus] - catch {focus .menu13} + catch {focus .menu22} catch {destroy $w; unregister_active 24} toplevel $w -class Dialog wm withdraw $w global active_menus set active_menus [lsort -integer [linsert $active_menus end 24]] message $w.m -width 400 -aspect 300 -text \ - "Keybord and VGA interface" -relief raised + "SPI controller(s) " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "Keybord and VGA interface" + wm title $w "SPI controller(s) " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 24; catch {destroy .menu13}; unregister_active 13; menu25 .menu25 \"$title\"" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 24; catch {destroy .menu22}; unregister_active 22; catch {destroy .menu13}; unregister_active 13; menu25 .menu25 \"$title\"" frame $w.f button $w.f.back -text "OK" \ -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24" @@ -4593,17 +4760,32 @@ proc menu24 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 24 0 "Keyboard/mouse (PS2) interface " CONFIG_KBD_ENABLE - bool $w.config.f 24 1 "Text-based VGA interface " CONFIG_VGA_ENABLE - bool $w.config.f 24 2 "SVGA graphical frame buffer " CONFIG_SVGA_ENABLE + bool $w.config.f 24 0 "Enable SPI controller(s) " CONFIG_SPICTRL_ENABLE + int $w.config.f 24 1 "Number of SPI controllers " CONFIG_SPICTRL_NUM + int $w.config.f 24 2 "Slave select lines " CONFIG_SPICTRL_SLVS + int $w.config.f 24 3 "FIFO depth (2^N) " CONFIG_SPICTRL_FIFO + bool $w.config.f 24 4 "Enable slave select registers" CONFIG_SPICTRL_SLVREG + bool $w.config.f 24 5 "Enable automatic slave select" CONFIG_SPICTRL_ASEL + bool $w.config.f 24 6 "Support automated transfers " CONFIG_SPICTRL_AM + bool $w.config.f 24 7 "Support open drain mode " CONFIG_SPICTRL_ODMODE + bool $w.config.f 24 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN + int $w.config.f 24 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN + bool $w.config.f 24 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM + global tmpvar_32 + minimenu $w.config.f 24 11 "Fault-tolerance" tmpvar_32 CONFIG_SPICTRL_NOFT + menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_32 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_32 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_32 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x11.x.menu 3 focus $w update_active global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] + if {[winfo exists .menu22] == 0} then {menu22 .menu22 "SPI"} + set winx [expr [winfo x .menu22]+30]; set winy [expr [winfo y .menu22]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f @@ -4633,149 +4815,102 @@ proc menu24 {w title} { } proc update_menu24 {} { - global CONFIG_VGA_ENABLE - global CONFIG_SVGA_ENABLE - if {($CONFIG_VGA_ENABLE == 0)} then { - configure_entry .menu24.config.f.x2 normal {n l y}} else {configure_entry .menu24.config.f.x2 disabled {y n l}} + global CONFIG_SPICTRL_ENABLE + global CONFIG_SPICTRL_NUM + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu24.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x1.l configure -state normal; } else {.menu24.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x1.l configure -state disabled} + global CONFIG_SPICTRL_SLVS + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu24.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x2.l configure -state normal; } else {.menu24.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x2.l configure -state disabled} + global CONFIG_SPICTRL_FIFO + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu24.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x3.l configure -state normal; } else {.menu24.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x3.l configure -state disabled} + global CONFIG_SPICTRL_SLVREG + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x4 normal {n l y}} else {configure_entry .menu24.config.f.x4 disabled {y n l}} + global CONFIG_SPICTRL_ASEL + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x5 normal {n l y}} else {configure_entry .menu24.config.f.x5 disabled {y n l}} + global CONFIG_SPICTRL_AM + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x6 normal {n l y}} else {configure_entry .menu24.config.f.x6 disabled {y n l}} + global CONFIG_SPICTRL_ODMODE + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x7 normal {n l y}} else {configure_entry .menu24.config.f.x7 disabled {y n l}} + global CONFIG_SPICTRL_TWEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x8 normal {n l y}} else {configure_entry .menu24.config.f.x8 disabled {y n l}} + global CONFIG_SPICTRL_MAXWLEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu24.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x9.l configure -state normal; } else {.menu24.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x9.l configure -state disabled} + global CONFIG_SPICTRL_SYNCRAM + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x10 normal {n l y}} else {configure_entry .menu24.config.f.x10 disabled {y n l}} + if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then {configure_entry .menu24.config.f.x11 normal {x l}} else {configure_entry .menu24.config.f.x11 disabled {x l}} } proc update_define_menu24 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_VGA_ENABLE - global CONFIG_SVGA_ENABLE - if {($CONFIG_VGA_ENABLE == 0)} then { - set CONFIG_SVGA_ENABLE [expr $CONFIG_SVGA_ENABLE&15]} else {set CONFIG_SVGA_ENABLE [expr $CONFIG_SVGA_ENABLE|16]} -} - - -menu_option menu25 25 "Gleichmann Options " -proc menu25 {w title} { - set oldFocus [focus] - catch {destroy $w; unregister_active 25} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 25]] - message $w.m -width 400 -aspect 300 -text \ - "Gleichmann Options " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "Gleichmann Options " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu26 .menu26 \"$title\"" - frame $w.f - button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 25 0 "AHB2HPI Bridge" CONFIG_AHB2HPI_ENABLE - bool $w.config.f 25 1 "ADCDAC" CONFIG_ADCDAC_ENABLE - bool $w.config.f 25 2 "OpenCores SPI Controller" CONFIG_SPI_OC_ENABLE - bool $w.config.f 25 3 "MultiIO enable" CONFIG_MULTIIO_ENABLE - bool $w.config.f 25 4 "OpenCores AC97 Controller" CONFIG_AC97_OC_ENABLE - - - - focus $w - update_active - global winx; global winy - set winx [expr [winfo x .]+30]; set winy [expr [winfo y .]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu25 {} { -} - - -proc update_define_menu25 {} { - update_define_mainmenu - global CONFIG_MODULES + global CONFIG_SPICTRL_ENABLE + global CONFIG_SPICTRL_NUM + if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_NUM "$CONFIG_SPICTRL_NUM" 1} + global CONFIG_SPICTRL_SLVS + if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_SLVS "$CONFIG_SPICTRL_SLVS" 1} + global CONFIG_SPICTRL_FIFO + if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_FIFO "$CONFIG_SPICTRL_FIFO" 1} + global CONFIG_SPICTRL_SLVREG + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_SLVREG [expr $CONFIG_SPICTRL_SLVREG&15]} else {set CONFIG_SPICTRL_SLVREG [expr $CONFIG_SPICTRL_SLVREG|16]} + global CONFIG_SPICTRL_ASEL + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_ASEL [expr $CONFIG_SPICTRL_ASEL&15]} else {set CONFIG_SPICTRL_ASEL [expr $CONFIG_SPICTRL_ASEL|16]} + global CONFIG_SPICTRL_AM + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_AM [expr $CONFIG_SPICTRL_AM&15]} else {set CONFIG_SPICTRL_AM [expr $CONFIG_SPICTRL_AM|16]} + global CONFIG_SPICTRL_ODMODE + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_ODMODE [expr $CONFIG_SPICTRL_ODMODE&15]} else {set CONFIG_SPICTRL_ODMODE [expr $CONFIG_SPICTRL_ODMODE|16]} + global CONFIG_SPICTRL_TWEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_TWEN [expr $CONFIG_SPICTRL_TWEN&15]} else {set CONFIG_SPICTRL_TWEN [expr $CONFIG_SPICTRL_TWEN|16]} + global CONFIG_SPICTRL_MAXWLEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_MAXWLEN "$CONFIG_SPICTRL_MAXWLEN" 0} + global CONFIG_SPICTRL_SYNCRAM + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} + global tmpvar_32 + global CONFIG_SPICTRL_NOFT + if {$tmpvar_32 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + global CONFIG_SPICTRL_DMRFT + if {$tmpvar_32 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + global CONFIG_SPICTRL_TMRFT + if {$tmpvar_32 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } -menu_option menu26 26 "VHDL Debugging " -proc menu26 {w title} { +menu_option menu25 25 "VHDL Debugging " +proc menu25 {w title} { set oldFocus [focus] - catch {destroy $w; unregister_active 26} + catch {destroy $w; unregister_active 25} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 26]] + set active_menus [lsort -integer [linsert $active_menus end 25]] message $w.m -width 400 -aspect 300 -text \ "VHDL Debugging " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "VHDL Debugging " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 26; break" - set nextscript "catch {focus $oldFocus}; menu27 .menu27 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; break" + set nextscript "catch {focus $oldFocus}; menu26 .menu26 \"$title\"" frame $w.f button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 26" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript $w.f.next configure -state disabled bind all "puts \"no more menus\" " button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 26; menu25 .menu25 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 26; menu25 .menu25 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4803,7 +4938,7 @@ proc menu26 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 26 0 "Accelerated UART tracing " CONFIG_DEBUG_UART + bool $w.config.f 25 0 "Accelerated UART tracing " CONFIG_DEBUG_UART @@ -4839,11 +4974,11 @@ proc menu26 {w title} { } } -proc update_menu26 {} { +proc update_menu25 {} { } -proc update_define_menu26 {} { +proc update_define_menu25 {} { update_define_mainmenu global CONFIG_MODULES } @@ -4889,7 +5024,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4899,6 +5035,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4923,6 +5061,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4935,14 +5074,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4955,27 +5099,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set CONFIG_FPU_GRFPU_SH 0 +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4985,17 +5130,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -5007,12 +5152,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -5022,10 +5167,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -5036,7 +5181,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -5048,26 +5193,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -5075,27 +5222,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -5116,7 +5267,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -5128,39 +5279,6 @@ set CONFIG_DSU_ETHMSB 020000 set CONFIG_DSU_ETHLSB 000000 set CONFIG_DSU_ETH_PROG 0 set CONFIG_DSU_ETH_DIS 0 -set CONFIG_GRUSB_DCL 0 -set tmpvar_27 "(not set)" -set CONFIG_GRUSB_DCL_ULPI 0 -set CONFIG_GRUSB_DCL_UTMI8 0 -set CONFIG_GRUSB_DCL_UTMI16 0 -set CONFIG_SRCTRL 0 -set CONFIG_SRCTRL_8BIT 0 -set CONFIG_SRCTRL_PROMWS 3 -set CONFIG_SRCTRL_RAMWS 0 -set CONFIG_SRCTRL_IOWS 0 -set CONFIG_SRCTRL_RMW 0 -set tmpvar_28 "(not set)" -set CONFIG_SRCTRL_SRBANKS1 0 -set CONFIG_SRCTRL_SRBANKS2 0 -set CONFIG_SRCTRL_SRBANKS3 0 -set CONFIG_SRCTRL_SRBANKS4 0 -set CONFIG_SRCTRL_SRBANKS5 0 -set tmpvar_29 "(not set)" -set CONFIG_SRCTRL_BANKSZ0 0 -set CONFIG_SRCTRL_BANKSZ1 0 -set CONFIG_SRCTRL_BANKSZ2 0 -set CONFIG_SRCTRL_BANKSZ3 0 -set CONFIG_SRCTRL_BANKSZ4 0 -set CONFIG_SRCTRL_BANKSZ5 0 -set CONFIG_SRCTRL_BANKSZ6 0 -set CONFIG_SRCTRL_BANKSZ7 0 -set CONFIG_SRCTRL_BANKSZ8 0 -set CONFIG_SRCTRL_BANKSZ9 0 -set CONFIG_SRCTRL_BANKSZ10 0 -set CONFIG_SRCTRL_BANKSZ11 0 -set CONFIG_SRCTRL_BANKSZ12 0 -set CONFIG_SRCTRL_BANKSZ13 0 -set CONFIG_SRCTRL_ROMASEL 19 set CONFIG_MCTRL_LEON2 0 set CONFIG_MCTRL_8BIT 0 set CONFIG_MCTRL_16BIT 0 @@ -5171,16 +5289,20 @@ set CONFIG_MCTRL_SDRAM_BUS64 0 set CONFIG_MCTRL_SDRAM_INVCLK 0 set CONFIG_MCTRL_PAGE 0 set CONFIG_MCTRL_PROGPAGE 0 -set CONFIG_SDCTRL 0 -set CONFIG_SDCTRL_BUS64 0 -set CONFIG_SDCTRL_INVCLK 0 -set CONFIG_SDCTRL_PAGE 0 -set CONFIG_SDCTRL_PROGPAGE 0 +set CONFIG_MIG_DDR2 0 +set CONFIG_MIG_RANKS 1 +set CONFIG_MIG_COLBITS 10 +set CONFIG_MIG_ROWBITS 13 +set CONFIG_MIG_BANKBITS 2 +set CONFIG_MIG_HMASK F00 +set CONFIG_MIG_SERIES7 0 +set CONFIG_AHBSTAT_ENABLE 0 +set CONFIG_AHBSTAT_NFTSLV 1 set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_30 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -5191,35 +5313,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_31 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 -set CONFIG_CAN_ENABLE 0 -set CONFIG_CANIO C00 -set CONFIG_CANIRQ 13 -set CONFIG_CANLOOP 0 -set CONFIG_CAN_SYNCRST 0 -set CONFIG_CAN_FT 0 -set CONFIG_SPICTRL_ENABLE 0 -set CONFIG_SPICTRL_NUM 1 -set CONFIG_SPICTRL_SLVS 1 -set CONFIG_SPICTRL_FIFO 1 -set CONFIG_SPICTRL_SLVREG 0 -set CONFIG_SPICTRL_ASEL 0 -set CONFIG_SPICTRL_AM 0 -set CONFIG_SPICTRL_ODMODE 0 -set CONFIG_SPICTRL_TWEN 0 -set CONFIG_SPICTRL_MAXWLEN 0 -set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_32 "(not set)" -set CONFIG_SPICTRL_NOFT 0 -set CONFIG_SPICTRL_DMRFT 0 -set CONFIG_SPICTRL_TMRFT 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_33 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5237,20 +5338,42 @@ set CONFIG_GPT_IRQ 8 set CONFIG_GPT_SEPIRQ 0 set CONFIG_GPT_WDOGEN 0 set CONFIG_GPT_WDOG FFFF +set CONFIG_GRGPIO_ENABLE 0 +set CONFIG_GRGPIO_WIDTH 8 +set CONFIG_GRGPIO_IMASK 0000 +set CONFIG_I2C_ENABLE 0 set CONFIG_KBD_ENABLE 0 set CONFIG_VGA_ENABLE 0 set CONFIG_SVGA_ENABLE 0 -set CONFIG_AHB2HPI_ENABLE 0 -set CONFIG_ADCDAC_ENABLE 0 -set CONFIG_SPI_OC_ENABLE 0 -set CONFIG_MULTIIO_ENABLE 0 -set CONFIG_AC97_OC_ENABLE 0 +set CONFIG_SPIMCTRL 0 +set CONFIG_SPIMCTRL_SDCARD 0 +set CONFIG_SPIMCTRL_READCMD 0B +set CONFIG_SPIMCTRL_DUMMYBYTE 0 +set CONFIG_SPIMCTRL_DUALOUTPUT 0 +set CONFIG_SPIMCTRL_OFFSET 0 +set CONFIG_SPIMCTRL_SCALER 1 +set CONFIG_SPIMCTRL_ASCALER 8 +set CONFIG_SPIMCTRL_PWRUPCNT 0 +set CONFIG_SPICTRL_ENABLE 0 +set CONFIG_SPICTRL_NUM 1 +set CONFIG_SPICTRL_SLVS 1 +set CONFIG_SPICTRL_FIFO 1 +set CONFIG_SPICTRL_SLVREG 0 +set CONFIG_SPICTRL_ASEL 0 +set CONFIG_SPICTRL_AM 0 +set CONFIG_SPICTRL_ODMODE 0 +set CONFIG_SPICTRL_TWEN 0 +set CONFIG_SPICTRL_MAXWLEN 0 +set CONFIG_SPICTRL_SYNCRAM 0 +set tmpvar_32 "(not set)" +set CONFIG_SPICTRL_NOFT 0 +set CONFIG_SPICTRL_DMRFT 0 +set CONFIG_SPICTRL_TMRFT 0 set CONFIG_DEBUG_UART 0 -set CONFIG_MCTRL_RMW 4 +set CONFIG_LEON3FT_PRESENT 4 +set CONFIG_HAS_SHARED_GRFPU 4 set CONFIG_SYN_ARTISAN 4 set CONFIG_PCI_ENABLE 4 -set CONFIG_HAS_SHARED_GRFPU 4 -set CONFIG_FPU_GRFPU_SH 4 set CONFIG_MODULES 4 proc writeconfig {file1 file2} { set cfg [open $file1 w] @@ -5264,9 +5387,11 @@ proc writeconfig {file1 file2} { puts $autocfg " * Automatically generated C config: don't edit" puts $autocfg " */" puts $autocfg "#define AUTOCONF_INCLUDED" - global CONFIG_MCTRL_RMW + global CONFIG_LEON3FT_PRESENT global CONSTANT_Y - write_tristate $cfg $autocfg CONFIG_MCTRL_RMW $CONFIG_MCTRL_RMW [list $notmod] 2 + write_tristate $cfg $autocfg CONFIG_LEON3FT_PRESENT $CONFIG_LEON3FT_PRESENT [list $notmod] 2 + global CONFIG_HAS_SHARED_GRFPU + write_tristate $cfg $autocfg CONFIG_HAS_SHARED_GRFPU $CONFIG_HAS_SHARED_GRFPU [list $notmod] 2 write_comment $cfg $autocfg "Synthesis " global tmpvar_0 @@ -5305,7 +5430,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5315,6 +5441,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5353,6 +5481,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5365,9 +5494,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5381,239 +5511,390 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5658,13 +5939,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5678,53 +5959,8 @@ proc writeconfig {file1 file2} { if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH_PROG $CONFIG_DSU_ETH_PROG [list $notmod] 2 } global CONFIG_DSU_ETH_DIS if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH_DIS $CONFIG_DSU_ETH_DIS [list $notmod] 2 } - global CONFIG_GRUSB_DCL - write_tristate $cfg $autocfg CONFIG_GRUSB_DCL $CONFIG_GRUSB_DCL [list $notmod] 2 - global tmpvar_27 - if {($CONFIG_GRUSB_DCL == 1)} then { - if { $tmpvar_27 == "ULPI" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_ULPI 0 [list $notmod] 2 } - if { $tmpvar_27 == "UTMI/UTMI+8-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI8 0 [list $notmod] 2 } - if { $tmpvar_27 == "UTMI/UTMI+16-bit" } then { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRUSB_DCL_UTMI16 0 [list $notmod] 2 }} write_comment $cfg $autocfg "Peripherals " - write_comment $cfg $autocfg "Memory controllers " - write_comment $cfg $autocfg "8/32-bit PROM/SRAM controller " - global CONFIG_SRCTRL - write_tristate $cfg $autocfg CONFIG_SRCTRL $CONFIG_SRCTRL [list $notmod] 2 - global CONFIG_SRCTRL_8BIT - if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_8BIT $CONFIG_SRCTRL_8BIT [list $notmod] 2 } - global CONFIG_SRCTRL_PROMWS - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_PROMWS $CONFIG_SRCTRL_PROMWS $notmod } - global CONFIG_SRCTRL_RAMWS - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_RAMWS $CONFIG_SRCTRL_RAMWS $notmod } - global CONFIG_SRCTRL_IOWS - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_IOWS $CONFIG_SRCTRL_IOWS $notmod } - global CONFIG_SRCTRL_RMW - if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_RMW $CONFIG_SRCTRL_RMW [list $notmod] 2 } - global tmpvar_28 - if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } - if { $tmpvar_28 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } - if { $tmpvar_28 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} - global tmpvar_29 - if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } - if { $tmpvar_29 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } - if { $tmpvar_29 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } - if { $tmpvar_29 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } - if { $tmpvar_29 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } - if { $tmpvar_29 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } - if { $tmpvar_29 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } - if { $tmpvar_29 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } - if { $tmpvar_29 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } - if { $tmpvar_29 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } - if { $tmpvar_29 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} - global CONFIG_SRCTRL_ROMASEL - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_ROMASEL $CONFIG_SRCTRL_ROMASEL $notmod } + write_comment $cfg $autocfg "Memory controller " write_comment $cfg $autocfg "Leon2 memory controller " global CONFIG_MCTRL_LEON2 write_tristate $cfg $autocfg CONFIG_MCTRL_LEON2 $CONFIG_MCTRL_LEON2 [list $notmod] 2 @@ -5746,17 +5982,26 @@ proc writeconfig {file1 file2} { if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PAGE $CONFIG_MCTRL_PAGE [list $notmod] 2 } global CONFIG_MCTRL_PROGPAGE if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PROGPAGE $CONFIG_MCTRL_PROGPAGE [list $notmod] 2 } - write_comment $cfg $autocfg "PC133 SDRAM controller " - global CONFIG_SDCTRL - write_tristate $cfg $autocfg CONFIG_SDCTRL $CONFIG_SDCTRL [list $notmod] 2 - global CONFIG_SDCTRL_BUS64 - if {($CONFIG_SDCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SDCTRL_BUS64 $CONFIG_SDCTRL_BUS64 [list $notmod] 2 } - global CONFIG_SDCTRL_INVCLK - if {($CONFIG_SDCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SDCTRL_INVCLK $CONFIG_SDCTRL_INVCLK [list $notmod] 2 } - global CONFIG_SDCTRL_PAGE - if {($CONFIG_SDCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SDCTRL_PAGE $CONFIG_SDCTRL_PAGE [list $notmod] 2 } - global CONFIG_SDCTRL_PROGPAGE - if {($CONFIG_SDCTRL == 1) && ($CONFIG_SDCTRL_PAGE == 1)} then {write_tristate $cfg $autocfg CONFIG_SDCTRL_PROGPAGE $CONFIG_SDCTRL_PROGPAGE [list $notmod] 2 } + write_comment $cfg $autocfg "MIG memory controller " + global CONFIG_MIG_DDR2 + write_tristate $cfg $autocfg CONFIG_MIG_DDR2 $CONFIG_MIG_DDR2 [list $notmod] 2 + global CONFIG_MIG_RANKS + if {($CONFIG_MIG_DDR2 == 1)} then {write_int $cfg $autocfg CONFIG_MIG_RANKS $CONFIG_MIG_RANKS $notmod } + global CONFIG_MIG_COLBITS + if {($CONFIG_MIG_DDR2 == 1)} then {write_int $cfg $autocfg CONFIG_MIG_COLBITS $CONFIG_MIG_COLBITS $notmod } + global CONFIG_MIG_ROWBITS + if {($CONFIG_MIG_DDR2 == 1)} then {write_int $cfg $autocfg CONFIG_MIG_ROWBITS $CONFIG_MIG_ROWBITS $notmod } + global CONFIG_MIG_BANKBITS + if {($CONFIG_MIG_DDR2 == 1)} then {write_int $cfg $autocfg CONFIG_MIG_BANKBITS $CONFIG_MIG_BANKBITS $notmod } + global CONFIG_MIG_HMASK + if {($CONFIG_MIG_DDR2 == 1)} then {write_hex $cfg $autocfg CONFIG_MIG_HMASK $CONFIG_MIG_HMASK $notmod } + write_comment $cfg $autocfg "MIG Series 7 memory controller " + global CONFIG_MIG_SERIES7 + write_tristate $cfg $autocfg CONFIG_MIG_SERIES7 $CONFIG_MIG_SERIES7 [list $notmod] 2 + global CONFIG_AHBSTAT_ENABLE + write_tristate $cfg $autocfg CONFIG_AHBSTAT_ENABLE $CONFIG_AHBSTAT_ENABLE [list $notmod] 2 + global CONFIG_AHBSTAT_NFTSLV + if {($CONFIG_AHBSTAT_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_AHBSTAT_NFTSLV $CONFIG_AHBSTAT_NFTSLV $notmod } write_comment $cfg $autocfg "On-chip RAM/ROM " global CONFIG_AHBROM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBROM_ENABLE $CONFIG_AHBROM_ENABLE [list $notmod] 2 @@ -5766,80 +6011,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_30 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_31 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} - write_comment $cfg $autocfg "CAN " - global CONFIG_CAN_ENABLE - write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 - global CONFIG_CANIO - if {($CONFIG_CAN_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CANIO $CONFIG_CANIO $notmod } - global CONFIG_CANIRQ - if {($CONFIG_CAN_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_CANIRQ $CONFIG_CANIRQ $notmod } - global CONFIG_CANLOOP - if {($CONFIG_CAN_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_CANLOOP $CONFIG_CANLOOP [list $notmod] 2 } - global CONFIG_CAN_SYNCRST - if {($CONFIG_CAN_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_CAN_SYNCRST $CONFIG_CAN_SYNCRST [list $notmod] 2 } - global CONFIG_CAN_FT - if {($CONFIG_CAN_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_CAN_FT $CONFIG_CAN_FT [list $notmod] 2 } - write_comment $cfg $autocfg "SPI " - write_comment $cfg $autocfg "SPI controller(s) " - global CONFIG_SPICTRL_ENABLE - write_tristate $cfg $autocfg CONFIG_SPICTRL_ENABLE $CONFIG_SPICTRL_ENABLE [list $notmod] 2 - global CONFIG_SPICTRL_NUM - if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_NUM $CONFIG_SPICTRL_NUM $notmod } - global CONFIG_SPICTRL_SLVS - if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_SLVS $CONFIG_SPICTRL_SLVS $notmod } - global CONFIG_SPICTRL_FIFO - if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_FIFO $CONFIG_SPICTRL_FIFO $notmod } - global CONFIG_SPICTRL_SLVREG - if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SLVREG $CONFIG_SPICTRL_SLVREG [list $notmod] 2 } - global CONFIG_SPICTRL_ASEL - if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_ASEL $CONFIG_SPICTRL_ASEL [list $notmod] 2 } - global CONFIG_SPICTRL_AM - if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_AM $CONFIG_SPICTRL_AM [list $notmod] 2 } - global CONFIG_SPICTRL_ODMODE - if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_ODMODE $CONFIG_SPICTRL_ODMODE [list $notmod] 2 } - global CONFIG_SPICTRL_TWEN - if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_TWEN $CONFIG_SPICTRL_TWEN [list $notmod] 2 } - global CONFIG_SPICTRL_MAXWLEN - if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } - global CONFIG_SPICTRL_SYNCRAM - if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_32 - if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_32 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_32 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_32 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_33 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_33 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_33 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_33 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5862,6 +6065,14 @@ proc writeconfig {file1 file2} { if {($CONFIG_GPT_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GPT_WDOGEN $CONFIG_GPT_WDOGEN [list $notmod] 2 } global CONFIG_GPT_WDOG if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {write_hex $cfg $autocfg CONFIG_GPT_WDOG $CONFIG_GPT_WDOG $notmod } + global CONFIG_GRGPIO_ENABLE + write_tristate $cfg $autocfg CONFIG_GRGPIO_ENABLE $CONFIG_GRGPIO_ENABLE [list $notmod] 2 + global CONFIG_GRGPIO_WIDTH + if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRGPIO_WIDTH $CONFIG_GRGPIO_WIDTH $notmod } + global CONFIG_GRGPIO_IMASK + if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_GRGPIO_IMASK $CONFIG_GRGPIO_IMASK $notmod } + global CONFIG_I2C_ENABLE + write_tristate $cfg $autocfg CONFIG_I2C_ENABLE $CONFIG_I2C_ENABLE [list $notmod] 2 write_comment $cfg $autocfg "Keybord and VGA interface" global CONFIG_KBD_ENABLE write_tristate $cfg $autocfg CONFIG_KBD_ENABLE $CONFIG_KBD_ENABLE [list $notmod] 2 @@ -5869,17 +6080,54 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_VGA_ENABLE $CONFIG_VGA_ENABLE [list $notmod] 2 global CONFIG_SVGA_ENABLE if {($CONFIG_VGA_ENABLE == 0)} then {write_tristate $cfg $autocfg CONFIG_SVGA_ENABLE $CONFIG_SVGA_ENABLE [list $notmod] 2 } - write_comment $cfg $autocfg "Gleichmann Options " - global CONFIG_AHB2HPI_ENABLE - write_tristate $cfg $autocfg CONFIG_AHB2HPI_ENABLE $CONFIG_AHB2HPI_ENABLE [list $notmod] 2 - global CONFIG_ADCDAC_ENABLE - write_tristate $cfg $autocfg CONFIG_ADCDAC_ENABLE $CONFIG_ADCDAC_ENABLE [list $notmod] 2 - global CONFIG_SPI_OC_ENABLE - write_tristate $cfg $autocfg CONFIG_SPI_OC_ENABLE $CONFIG_SPI_OC_ENABLE [list $notmod] 2 - global CONFIG_MULTIIO_ENABLE - write_tristate $cfg $autocfg CONFIG_MULTIIO_ENABLE $CONFIG_MULTIIO_ENABLE [list $notmod] 2 - global CONFIG_AC97_OC_ENABLE - write_tristate $cfg $autocfg CONFIG_AC97_OC_ENABLE $CONFIG_AC97_OC_ENABLE [list $notmod] 2 + write_comment $cfg $autocfg "SPI" + write_comment $cfg $autocfg "SPI memory controller " + global CONFIG_SPIMCTRL + write_tristate $cfg $autocfg CONFIG_SPIMCTRL $CONFIG_SPIMCTRL [list $notmod] 2 + global CONFIG_SPIMCTRL_SDCARD + if {($CONFIG_SPIMCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_SDCARD $CONFIG_SPIMCTRL_SDCARD [list $notmod] 2 } + global CONFIG_SPIMCTRL_READCMD + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_hex $cfg $autocfg CONFIG_SPIMCTRL_READCMD $CONFIG_SPIMCTRL_READCMD $notmod } + global CONFIG_SPIMCTRL_DUMMYBYTE + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUMMYBYTE $CONFIG_SPIMCTRL_DUMMYBYTE [list $notmod] 2 } + global CONFIG_SPIMCTRL_DUALOUTPUT + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUALOUTPUT $CONFIG_SPIMCTRL_DUALOUTPUT [list $notmod] 2 } + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_hex $cfg $autocfg CONFIG_SPIMCTRL_OFFSET $CONFIG_SPIMCTRL_OFFSET $notmod } + global CONFIG_SPIMCTRL_SCALER + if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_SCALER $CONFIG_SPIMCTRL_SCALER $notmod } + global CONFIG_SPIMCTRL_ASCALER + if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_ASCALER $CONFIG_SPIMCTRL_ASCALER $notmod } + global CONFIG_SPIMCTRL_PWRUPCNT + if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_PWRUPCNT $CONFIG_SPIMCTRL_PWRUPCNT $notmod } + write_comment $cfg $autocfg "SPI controller(s) " + global CONFIG_SPICTRL_ENABLE + write_tristate $cfg $autocfg CONFIG_SPICTRL_ENABLE $CONFIG_SPICTRL_ENABLE [list $notmod] 2 + global CONFIG_SPICTRL_NUM + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_NUM $CONFIG_SPICTRL_NUM $notmod } + global CONFIG_SPICTRL_SLVS + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_SLVS $CONFIG_SPICTRL_SLVS $notmod } + global CONFIG_SPICTRL_FIFO + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_FIFO $CONFIG_SPICTRL_FIFO $notmod } + global CONFIG_SPICTRL_SLVREG + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SLVREG $CONFIG_SPICTRL_SLVREG [list $notmod] 2 } + global CONFIG_SPICTRL_ASEL + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_ASEL $CONFIG_SPICTRL_ASEL [list $notmod] 2 } + global CONFIG_SPICTRL_AM + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_AM $CONFIG_SPICTRL_AM [list $notmod] 2 } + global CONFIG_SPICTRL_ODMODE + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_ODMODE $CONFIG_SPICTRL_ODMODE [list $notmod] 2 } + global CONFIG_SPICTRL_TWEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_TWEN $CONFIG_SPICTRL_TWEN [list $notmod] 2 } + global CONFIG_SPICTRL_MAXWLEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } + global CONFIG_SPICTRL_SYNCRAM + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } + global tmpvar_32 + if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { + if { $tmpvar_32 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -5924,7 +6172,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5934,6 +6183,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5952,8 +6203,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -6036,11 +6292,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -6061,33 +6319,15 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 global CONFIG_DSU_ETHSZ8; set CONFIG_DSU_ETHSZ8 0 global CONFIG_DSU_ETHSZ16; set CONFIG_DSU_ETHSZ16 0 - global CONFIG_GRUSB_DCL_ULPI; set CONFIG_GRUSB_DCL_ULPI 0 - global CONFIG_GRUSB_DCL_UTMI8; set CONFIG_GRUSB_DCL_UTMI8 0 - global CONFIG_GRUSB_DCL_UTMI16; set CONFIG_GRUSB_DCL_UTMI16 0 - global CONFIG_SRCTRL_SRBANKS1; set CONFIG_SRCTRL_SRBANKS1 0 - global CONFIG_SRCTRL_SRBANKS2; set CONFIG_SRCTRL_SRBANKS2 0 - global CONFIG_SRCTRL_SRBANKS3; set CONFIG_SRCTRL_SRBANKS3 0 - global CONFIG_SRCTRL_SRBANKS4; set CONFIG_SRCTRL_SRBANKS4 0 - global CONFIG_SRCTRL_SRBANKS5; set CONFIG_SRCTRL_SRBANKS5 0 - global CONFIG_SRCTRL_BANKSZ0; set CONFIG_SRCTRL_BANKSZ0 0 - global CONFIG_SRCTRL_BANKSZ1; set CONFIG_SRCTRL_BANKSZ1 0 - global CONFIG_SRCTRL_BANKSZ2; set CONFIG_SRCTRL_BANKSZ2 0 - global CONFIG_SRCTRL_BANKSZ3; set CONFIG_SRCTRL_BANKSZ3 0 - global CONFIG_SRCTRL_BANKSZ4; set CONFIG_SRCTRL_BANKSZ4 0 - global CONFIG_SRCTRL_BANKSZ5; set CONFIG_SRCTRL_BANKSZ5 0 - global CONFIG_SRCTRL_BANKSZ6; set CONFIG_SRCTRL_BANKSZ6 0 - global CONFIG_SRCTRL_BANKSZ7; set CONFIG_SRCTRL_BANKSZ7 0 - global CONFIG_SRCTRL_BANKSZ8; set CONFIG_SRCTRL_BANKSZ8 0 - global CONFIG_SRCTRL_BANKSZ9; set CONFIG_SRCTRL_BANKSZ9 0 - global CONFIG_SRCTRL_BANKSZ10; set CONFIG_SRCTRL_BANKSZ10 0 - global CONFIG_SRCTRL_BANKSZ11; set CONFIG_SRCTRL_BANKSZ11 0 - global CONFIG_SRCTRL_BANKSZ12; set CONFIG_SRCTRL_BANKSZ12 0 - global CONFIG_SRCTRL_BANKSZ13; set CONFIG_SRCTRL_BANKSZ13 0 global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0 global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0 @@ -6100,15 +6340,15 @@ proc clear_choices { } { global CONFIG_GRETH_FIFO16; set CONFIG_GRETH_FIFO16 0 global CONFIG_GRETH_FIFO32; set CONFIG_GRETH_FIFO32 0 global CONFIG_GRETH_FIFO64; set CONFIG_GRETH_FIFO64 0 - global CONFIG_SPICTRL_NOFT; set CONFIG_SPICTRL_NOFT 0 - global CONFIG_SPICTRL_DMRFT; set CONFIG_SPICTRL_DMRFT 0 - global CONFIG_SPICTRL_TMRFT; set CONFIG_SPICTRL_TMRFT 0 global CONFIG_UA1_FIFO1; set CONFIG_UA1_FIFO1 0 global CONFIG_UA1_FIFO2; set CONFIG_UA1_FIFO2 0 global CONFIG_UA1_FIFO4; set CONFIG_UA1_FIFO4 0 global CONFIG_UA1_FIFO8; set CONFIG_UA1_FIFO8 0 global CONFIG_UA1_FIFO16; set CONFIG_UA1_FIFO16 0 global CONFIG_UA1_FIFO32; set CONFIG_UA1_FIFO32 0 + global CONFIG_SPICTRL_NOFT; set CONFIG_SPICTRL_NOFT 0 + global CONFIG_SPICTRL_DMRFT; set CONFIG_SPICTRL_DMRFT 0 + global CONFIG_SPICTRL_TMRFT; set CONFIG_SPICTRL_TMRFT 0 } @@ -6185,8 +6425,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -6205,6 +6447,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -6245,360 +6491,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "ULPI" - global CONFIG_GRUSB_DCL_ULPI - if { $CONFIG_GRUSB_DCL_ULPI == 1 } then { set tmpvar_27 "ULPI" } - global CONFIG_GRUSB_DCL_UTMI8 - if { $CONFIG_GRUSB_DCL_UTMI8 == 1 } then { set tmpvar_27 "UTMI/UTMI+8-bit" } - global CONFIG_GRUSB_DCL_UTMI16 - if { $CONFIG_GRUSB_DCL_UTMI16 == 1 } then { set tmpvar_27 "UTMI/UTMI+16-bit" } - global tmpvar_28 - set tmpvar_28 "1" - global CONFIG_SRCTRL_SRBANKS1 - if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_28 "1" } - global CONFIG_SRCTRL_SRBANKS2 - if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_28 "2" } - global CONFIG_SRCTRL_SRBANKS3 - if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_28 "3" } - global CONFIG_SRCTRL_SRBANKS4 - if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_28 "4" } - global CONFIG_SRCTRL_SRBANKS5 - if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_28 "5" } + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } global tmpvar_29 - set tmpvar_29 "0" - global CONFIG_SRCTRL_BANKSZ0 - if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_29 "8" } - global CONFIG_SRCTRL_BANKSZ1 - if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_29 "16" } - global CONFIG_SRCTRL_BANKSZ2 - if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_29 "32" } - global CONFIG_SRCTRL_BANKSZ3 - if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_29 "64" } - global CONFIG_SRCTRL_BANKSZ4 - if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_29 "128" } - global CONFIG_SRCTRL_BANKSZ5 - if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_29 "256" } - global CONFIG_SRCTRL_BANKSZ6 - if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_29 "512" } - global CONFIG_SRCTRL_BANKSZ7 - if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_29 "1024" } - global CONFIG_SRCTRL_BANKSZ8 - if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_29 "2048" } - global CONFIG_SRCTRL_BANKSZ9 - if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_29 "4096" } - global CONFIG_SRCTRL_BANKSZ10 - if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_29 "8192" } - global CONFIG_SRCTRL_BANKSZ11 - if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_29 "16384" } - global CONFIG_SRCTRL_BANKSZ12 - if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_29 "32768" } - global CONFIG_SRCTRL_BANKSZ13 - if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_29 "65536" } - global tmpvar_30 - set tmpvar_30 "4" + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_30 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_30 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_30 "64" } - global tmpvar_31 - set tmpvar_31 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_31 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_31 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_31 "64" } + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" + global CONFIG_UA1_FIFO1 + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } + global CONFIG_UA1_FIFO2 + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } + global CONFIG_UA1_FIFO4 + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } + global CONFIG_UA1_FIFO8 + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } + global CONFIG_UA1_FIFO16 + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } + global CONFIG_UA1_FIFO32 + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } global tmpvar_32 set tmpvar_32 "None" global CONFIG_SPICTRL_NOFT @@ -6607,28 +6843,16 @@ proc update_choices { } { if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_32 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_32 "TMR" } - global tmpvar_33 - set tmpvar_33 "1" - global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_33 "1" } - global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_33 "2" } - global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_33 "4" } - global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_33 "8" } - global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_33 "16" } - global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_33 "32" } } proc update_define_mainmenu {} { global CONFIG_MODULES - global CONFIG_MCTRL_RMW + global CONFIG_LEON3FT_PRESENT + global CONFIG_HAS_SHARED_GRFPU global CONSTANT_Y - set CONFIG_MCTRL_RMW $CONSTANT_Y + set CONFIG_LEON3FT_PRESENT $CONSTANT_Y + set CONFIG_HAS_SHARED_GRFPU $CONSTANT_Y } diff --git a/designs/leon3-xilinx-kc705/leon3mp.vhd b/designs/leon3-xilinx-kc705/leon3mp.vhd new file mode 100644 index 00000000..ac0f7f5a --- /dev/null +++ b/designs/leon3-xilinx-kc705/leon3mp.vhd @@ -0,0 +1,644 @@ +----------------------------------------------------------------------------- +-- LEON3 Xilinx KC705 Demonstration design +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler +-- +-- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +------------------------------------------------------------------------------ + +library ieee; +use ieee.std_logic_1164.all; +library grlib, techmap; +use grlib.amba.all; +use grlib.stdlib.all; +use techmap.gencomp.all; +use techmap.allclkgen.all; +library gaisler; +use gaisler.memctrl.all; +use gaisler.leon3.all; +use gaisler.uart.all; +use gaisler.misc.all; +use gaisler.i2c.all; +use gaisler.net.all; +use gaisler.jtag.all; +-- pragma translate_off +use gaisler.sim.all; +library unisim; +use unisim.all; +-- pragma translate_on + + +library esa; +use esa.memoryctrl.all; + +use work.config.all; + +entity leon3mp is + generic ( + fabtech : integer := CFG_FABTECH; + memtech : integer := CFG_MEMTECH; + padtech : integer := CFG_PADTECH; + clktech : integer := CFG_CLKTECH; + disas : integer := CFG_DISAS; -- Enable disassembly to console + dbguart : integer := CFG_DUART; -- Print UART on console + pclow : integer := CFG_PCLOW; + testahb : boolean := false; + SIM_BYPASS_INIT_CAL : string := "OFF"; + SIMULATION : string := "FALSE"; + USE_MIG_INTERFACE_MODEL : boolean := false + ); + port ( + reset : in std_ulogic; + clk200p : in std_ulogic; -- 200 MHz clock + clk200n : in std_ulogic; -- 200 MHz clock + address : out std_logic_vector(25 downto 0); + data : inout std_logic_vector(15 downto 0); + oen : out std_ulogic; + writen : out std_ulogic; + romsn : out std_logic; + adv : out std_logic; + ddr3_dq : inout std_logic_vector(63 downto 0); + ddr3_dqs_p : inout std_logic_vector(7 downto 0); + ddr3_dqs_n : inout std_logic_vector(7 downto 0); + ddr3_addr : out std_logic_vector(13 downto 0); + ddr3_ba : out std_logic_vector(2 downto 0); + ddr3_ras_n : out std_logic; + ddr3_cas_n : out std_logic; + ddr3_we_n : out std_logic; + ddr3_reset_n : out std_logic; + ddr3_ck_p : out std_logic_vector(0 downto 0); + ddr3_ck_n : out std_logic_vector(0 downto 0); + ddr3_cke : out std_logic_vector(0 downto 0); + ddr3_cs_n : out std_logic_vector(0 downto 0); + ddr3_dm : out std_logic_vector(7 downto 0); + ddr3_odt : out std_logic_vector(0 downto 0); + dsurx : in std_ulogic; + dsutx : out std_ulogic; + dsuctsn : in std_ulogic; + dsurtsn : out std_ulogic; + button : in std_logic_vector(2 downto 0); + switch : inout std_logic_vector(3 downto 0); + led : out std_logic_vector(6 downto 0); + iic_scl : inout std_ulogic; + iic_sda : inout std_ulogic + ); +end; + +architecture rtl of leon3mp is + +component ahb2mig_series7 + generic( + hindex : integer := 0; + haddr : integer := 0; + hmask : integer := 16#f00#; + pindex : integer := 0; + paddr : integer := 0; + pmask : integer := 16#fff#; + SIM_BYPASS_INIT_CAL : string := "OFF"; + SIMULATION : string := "FALSE"; + USE_MIG_INTERFACE_MODEL : boolean := false + ); + port( + ddr3_dq : inout std_logic_vector(63 downto 0); + ddr3_dqs_p : inout std_logic_vector(7 downto 0); + ddr3_dqs_n : inout std_logic_vector(7 downto 0); + ddr3_addr : out std_logic_vector(13 downto 0); + ddr3_ba : out std_logic_vector(2 downto 0); + ddr3_ras_n : out std_logic; + ddr3_cas_n : out std_logic; + ddr3_we_n : out std_logic; + ddr3_reset_n : out std_logic; + ddr3_ck_p : out std_logic_vector(0 downto 0); + ddr3_ck_n : out std_logic_vector(0 downto 0); + ddr3_cke : out std_logic_vector(0 downto 0); + ddr3_cs_n : out std_logic_vector(0 downto 0); + ddr3_dm : out std_logic_vector(7 downto 0); + ddr3_odt : out std_logic_vector(0 downto 0); + ahbso : out ahb_slv_out_type; + ahbsi : in ahb_slv_in_type; + apbi : in apb_slv_in_type; + apbo : out apb_slv_out_type; + calib_done : out std_logic; + rst_n_syn : in std_logic; + rst_n_async : in std_logic; + clk_amba : in std_logic; + sys_clk_p : in std_logic; + sys_clk_n : in std_logic; + ui_clk : out std_logic; + ui_clk_sync_rst : out std_logic + ); +end component ; + +component ddr_dummy + port ( + ddr_dq : inout std_logic_vector(63 downto 0); + ddr_dqs : inout std_logic_vector(7 downto 0); + ddr_dqs_n : inout std_logic_vector(7 downto 0); + ddr_addr : out std_logic_vector(13 downto 0); + ddr_ba : out std_logic_vector(2 downto 0); + ddr_ras_n : out std_logic; + ddr_cas_n : out std_logic; + ddr_we_n : out std_logic; + ddr_reset_n : out std_logic; + ddr_ck_p : out std_logic_vector(0 downto 0); + ddr_ck_n : out std_logic_vector(0 downto 0); + ddr_cke : out std_logic_vector(0 downto 0); + ddr_cs_n : out std_logic_vector(0 downto 0); + ddr_dm : out std_logic_vector(7 downto 0); + ddr_odt : out std_logic_vector(0 downto 0) + ); +end component ; + +constant maxahbm : integer := CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG; +constant maxahbs : integer := 1+CFG_DSU+CFG_MCTRL_LEON2+CFG_AHBROMEN+CFG_AHBRAMEN+2; +constant maxapbs : integer := CFG_IRQ3_ENABLE+CFG_GPT_ENABLE+CFG_GRGPIO_ENABLE+CFG_AHBSTAT+CFG_AHBSTAT; + +signal vcc, gnd : std_logic; +signal memi : memory_in_type; +signal memo : memory_out_type; +signal wpo : wprot_out_type; +signal sdi : sdctrl_in_type; +signal sdo : sdram_out_type; +signal sdo2, sdo3 : sdctrl_out_type; + +signal apbi : apb_slv_in_type; +signal apbo : apb_slv_out_vector := (others => apb_none); +signal ahbsi : ahb_slv_in_type; +signal ahbso : ahb_slv_out_vector := (others => ahbs_none); +signal ahbmi : ahb_mst_in_type; +signal vahbmi : ahb_mst_in_type; +signal ahbmo : ahb_mst_out_vector := (others => ahbm_none); +signal vahbmo : ahb_mst_out_type; + +signal ui_clk : std_ulogic; +signal clkm, rstn, rstraw, sdclkl : std_ulogic; +signal clk_200 : std_ulogic; +signal clk25, clk40, clk65 : std_ulogic; + +signal cgi, cgi2 : clkgen_in_type; +signal cgo, cgo2 : clkgen_out_type; +signal u1i, u2i, dui : uart_in_type; +signal u1o, u2o, duo : uart_out_type; + +signal irqi : irq_in_vector(0 to CFG_NCPU-1); +signal irqo : irq_out_vector(0 to CFG_NCPU-1); + +signal dbgi : l3_debug_in_vector(0 to CFG_NCPU-1); +signal dbgo : l3_debug_out_vector(0 to CFG_NCPU-1); + +signal dsui : dsu_in_type; +signal dsuo : dsu_out_type; + +signal rxd1 : std_logic; +signal txd1 : std_logic; + +signal ethi : eth_in_type; +signal etho : eth_out_type; +signal egtx_clk :std_ulogic; +signal negtx_clk :std_ulogic; + +signal gpti : gptimer_in_type; +signal gpto : gptimer_out_type; + +signal gpioi : gpio_in_type; +signal gpioo : gpio_out_type; + +signal clklock, elock, ulock : std_ulogic; + +signal lock, calib_done, clkml, lclk, rst, ndsuact : std_ulogic; +signal tck, tckn, tms, tdi, tdo : std_ulogic; + +signal lcd_datal : std_logic_vector(11 downto 0); +signal lcd_hsyncl, lcd_vsyncl, lcd_del, lcd_reset_bl : std_ulogic; + +signal i2ci, dvi_i2ci : i2c_in_type; +signal i2co, dvi_i2co : i2c_out_type; + +constant BOARD_FREQ : integer := 200000; -- input frequency in KHz +constant CPU_FREQ : integer := BOARD_FREQ * CFG_CLKMUL / CFG_CLKDIV; -- cpu frequency in KHz + +signal stati : ahbstat_in_type; + +signal fpi : grfpu_in_vector_type; +signal fpo : grfpu_out_vector_type; + +attribute keep : boolean; +attribute syn_keep : string; +attribute keep of clkm : signal is true; + +begin + +---------------------------------------------------------------------- +--- Reset and Clock generation ------------------------------------- +---------------------------------------------------------------------- + + vcc <= '1'; gnd <= '0'; + cgi.pllctrl <= "00"; cgi.pllrst <= rstraw; + + clk_gen : if (CFG_MIG_SERIES7 = 0) generate + clk_pad_ds : clkpad_ds generic map (tech => padtech, level => sstl, voltage => x15v) port map (clk200p, clk200n, lclk); + clkgen0 : clkgen -- clock generator + generic map (clktech, CFG_CLKMUL, CFG_CLKDIV, CFG_MCTRL_SDEN, + CFG_CLK_NOFB, 0, 0, 0, BOARD_FREQ) + port map (lclk, lclk, clkm, open, open, open, open, cgi, cgo, open, open, open); + end generate; + + reset_pad : inpad generic map (tech => padtech, level => cmos, voltage => x15v) port map (reset, rst); + rst0 : rstgen -- reset generator + generic map (acthigh => 1) + port map (rst, clkm, lock, rstn, rstraw); + lock <= calib_done when CFG_MIG_SERIES7 = 1 else cgo.clklock; + +---------------------------------------------------------------------- +--- AHB CONTROLLER -------------------------------------------------- +---------------------------------------------------------------------- + + ahb0 : ahbctrl -- AHB arbiter/multiplexer + generic map (defmast => CFG_DEFMST, split => CFG_SPLIT, + rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO, fpnpen => CFG_FPNPEN, + nahbm => maxahbm, nahbs => maxahbs) + port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso); + +---------------------------------------------------------------------- +--- LEON3 processor and DSU ----------------------------------------- +---------------------------------------------------------------------- + + nosh : if CFG_GRFPUSH = 0 generate + cpu : for i in 0 to CFG_NCPU-1 generate + l3ft : if CFG_LEON3FT_EN /= 0 generate + leon3ft0 : leon3ft -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, + CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, + CFG_IUFT_EN, CFG_FPUFT_EN, CFG_CACHE_FT_EN, CFG_RF_ERRINJ, + CFG_CACHE_ERRINJ, CFG_DFIXED, CFG_LEON3_NETLIST, CFG_SCAN, CFG_MMU_PAGE) + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + irqi(i), irqo(i), dbgi(i), dbgo(i), clkm); + end generate; + + l3s : if CFG_LEON3FT_EN = 0 generate + u0 : leon3s -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, + CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, + CFG_DFIXED, CFG_SCAN, CFG_MMU_PAGE, CFG_BP) + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + irqi(i), irqo(i), dbgi(i), dbgo(i)); + end generate; + end generate; + end generate; + + sh : if CFG_GRFPUSH = 1 generate + cpu : for i in 0 to CFG_NCPU-1 generate + l3ft : if CFG_LEON3FT_EN /= 0 generate + leon3ft0 : leon3ftsh -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, + CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, + CFG_IUFT_EN, CFG_FPUFT_EN, CFG_CACHE_FT_EN, CFG_RF_ERRINJ, + CFG_CACHE_ERRINJ, CFG_DFIXED, CFG_LEON3_NETLIST, CFG_SCAN, CFG_MMU_PAGE) + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + irqi(i), irqo(i), dbgi(i), dbgo(i), clkm, fpi(i), fpo(i)); + + end generate; + l3s : if CFG_LEON3FT_EN = 0 generate + u0 : leon3sh -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, + CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, + CFG_DFIXED, CFG_SCAN, CFG_MMU_PAGE) + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + irqi(i), irqo(i), dbgi(i), dbgo(i), fpi(i), fpo(i)); + end generate; + end generate; + + grfpush0 : grfpushwx generic map ((CFG_FPU-1), CFG_NCPU, fabtech) + port map (clkm, rstn, fpi, fpo); + + end generate; + + led1_pad : outpad generic map (tech => padtech, level => cmos, voltage => x15v) port map (led(1), dbgo(0).error); + + dsugen : if CFG_DSU = 1 generate + dsu0 : dsu3 -- LEON3 Debug Support Unit + generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#, + ncpu => CFG_NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ) + port map (rstn, clkm, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo); + dsui.enable <= '1'; + dsui_break_pad : inpad generic map (level => cmos, voltage => x15v, tech => padtech) port map (button(2), dsui.break); + dsuact_pad : outpad generic map (tech => padtech, level => cmos, voltage => x15v) port map (led(0), ndsuact); + ndsuact <= not dsuo.active; + end generate; + + nodsu : if CFG_DSU = 0 generate + dsuo.tstop <= '0'; dsuo.active <= '0'; ahbso(2) <= ahbs_none; + end generate; + + -- Debug UART + dcomgen : if CFG_AHB_UART = 1 generate + dcom0 : ahbuart + generic map (hindex => CFG_NCPU, pindex => 7, paddr => 7) + port map (rstn, clkm, dui, duo, apbi, apbo(7), ahbmi, ahbmo(CFG_NCPU)); + dui.extclk <= '0'; + end generate; + + nouah : if CFG_AHB_UART = 0 generate + apbo(7) <= apb_none; + duo.txd <= '0'; + duo.rtsn <= '0'; + dui.extclk <= '0'; + end generate; + + dsurx_pad : inpad generic map (level => cmos, voltage => x25v, tech => padtech) port map (dsurx, dui.rxd); + dsutx_pad : outpad generic map (level => cmos, voltage => x25v, tech => padtech) port map (dsutx, duo.txd); + dsuctsn_pad : inpad generic map (level => cmos, voltage => x25v, tech => padtech) port map (dsuctsn, dui.ctsn); + dsurtsn_pad : outpad generic map (level => cmos, voltage => x25v, tech => padtech) port map (dsurtsn, duo.rtsn); + + + ahbjtaggen0 :if CFG_AHB_JTAG = 1 generate + ahbjtag0 : ahbjtag generic map(tech => fabtech, hindex => CFG_NCPU+1) + port map(rstn, clkm, tck, tms, tdi, tdo, ahbmi, ahbmo(CFG_NCPU+1), + open, open, open, open, open, open, open, gnd); + end generate; + + nojtag : if CFG_AHB_JTAG = 0 generate apbo(CFG_NCPU+1) <= apb_none; end generate; + +---------------------------------------------------------------------- +--- Memory controllers ---------------------------------------------- +---------------------------------------------------------------------- + + memi.writen <= '1'; memi.wrn <= "1111"; memi.bwidth <= "01"; + memi.brdyn <= '0'; memi.bexcn <= '1'; + + mctrl_gen : if CFG_MCTRL_LEON2 /= 0 generate + mctrl0 : mctrl generic map (hindex => 0, pindex => 0, + paddr => 0, srbanks => 2, ram8 => CFG_MCTRL_RAM8BIT, + ram16 => CFG_MCTRL_RAM16BIT, sden => CFG_MCTRL_SDEN, + invclk => CFG_CLK_NOFB, sepbus => CFG_MCTRL_SEPBUS, + pageburst => CFG_MCTRL_PAGE, rammask => 0, iomask => 0) + port map (rstn, clkm, memi, memo, ahbsi, ahbso(0), apbi, apbo(0), wpo, sdo); + + addr_pad : outpadv generic map (width => 26, tech => padtech, level => cmos, voltage => x25v) + port map (address(25 downto 0), memo.address(26 downto 1)); + roms_pad : outpad generic map (tech => padtech, level => cmos, voltage => x25v) + port map (romsn, memo.romsn(0)); + oen_pad : outpad generic map (tech => padtech, level => cmos, voltage => x25v) + port map (oen, memo.oen); + adv_pad : outpad generic map (tech => padtech, level => cmos, voltage => x25v) + port map (adv, '0'); + wri_pad : outpad generic map (tech => padtech, level => cmos, voltage => x25v) + port map (writen, memo.writen); + data_pad : iopadvv generic map (tech => padtech, width => 16, level => cmos, voltage => x25v) + port map (data(15 downto 0), memo.data(31 downto 16), + memo.vbdrive(31 downto 16), memi.data(31 downto 16)); + end generate; + +---------------------------------------------------------------------- +--- DDR3 memory controller ------------------------------------------ +---------------------------------------------------------------------- + + mig_gen : if (CFG_MIG_SERIES7 = 1) generate + ddrc : ahb2mig_series7 generic map( + hindex => 4, haddr => 16#400#, hmask => 16#F80#, + pindex => 4, paddr => 4, + SIM_BYPASS_INIT_CAL => SIM_BYPASS_INIT_CAL, + SIMULATION => SIMULATION, USE_MIG_INTERFACE_MODEL => USE_MIG_INTERFACE_MODEL) + port map( + ddr3_dq => ddr3_dq, + ddr3_dqs_p => ddr3_dqs_p, + ddr3_dqs_n => ddr3_dqs_n, + ddr3_addr => ddr3_addr, + ddr3_ba => ddr3_ba, + ddr3_ras_n => ddr3_ras_n, + ddr3_cas_n => ddr3_cas_n, + ddr3_we_n => ddr3_we_n, + ddr3_reset_n => ddr3_reset_n, + ddr3_ck_p => ddr3_ck_p, + ddr3_ck_n => ddr3_ck_n, + ddr3_cke => ddr3_cke, + ddr3_cs_n => ddr3_cs_n, + ddr3_dm => ddr3_dm, + ddr3_odt => ddr3_odt, + ahbsi => ahbsi, + ahbso => ahbso(4), + apbi => apbi, + apbo => apbo(4), + calib_done => calib_done, + rst_n_syn => rstn, + rst_n_async => rstraw, + clk_amba => clkm, + sys_clk_p => clk200p, + sys_clk_n => clk200n, + ui_clk => clkm, + ui_clk_sync_rst => open + ); + end generate; + + no_mig_gen : if (CFG_MIG_SERIES7 = 0) generate + ahbram0 : ahbram + generic map (hindex => 4, haddr => 16#400#, tech => CFG_MEMTECH, kbytes => 32) + port map ( rstn, clkm, ahbsi, ahbso(4)); + + ddrdummy0 : ddr_dummy + port map ( + ddr_dq => ddr3_dq, + ddr_dqs => ddr3_dqs_p, + ddr_dqs_n => ddr3_dqs_n, + ddr_addr => ddr3_addr, + ddr_ba => ddr3_ba, + ddr_ras_n => ddr3_ras_n, + ddr_cas_n => ddr3_cas_n, + ddr_we_n => ddr3_we_n, + ddr_reset_n => ddr3_reset_n, + ddr_ck_p => ddr3_ck_p, + ddr_ck_n => ddr3_ck_n, + ddr_cke => ddr3_cke, + ddr_cs_n => ddr3_cs_n, + ddr_dm => ddr3_dm, + ddr_odt => ddr3_odt + ); + + calib_done <= '1'; + end generate; + + led2_pad : outpad generic map (tech => padtech, level => cmos, voltage => x15v) + port map (led(2), calib_done); + led3_pad : outpad generic map (tech => padtech, level => cmos, voltage => x15v) + port map (led(3), lock); + led4_pad : outpad generic map (tech => padtech, level => cmos, voltage => x25v) + port map (led(4), ahbso(4).hready); + +---------------------------------------------------------------------- +--- I2C Controller-------------------------------------------- +---------------------------------------------------------------------- + + i2cm: if CFG_I2C_ENABLE = 1 generate -- I2C master + i2c0 : i2cmst + generic map (pindex => 8, paddr => 8, pmask => 16#FFF#, + pirq => 11, filter => 8) + port map (rstn, clkm, apbi, apbo(8), i2ci, i2co); + -- The EEK does not use a bi-directional line for the I2C clock + i2ci.scl <= i2co.scloen; -- No clock stretch possible + -- When SCL output enable is activated the line should go low + i2c_scl_pad : outpad generic map (tech => padtech, level => cmos, voltage => x25v) + port map (iic_scl, i2co.scloen); + i2c_sda_pad : iopad generic map (tech => padtech, level => cmos, voltage => x25v) + port map (iic_sda, i2co.sda, i2co.sdaoen, i2ci.sda); + end generate i2cm; + + +---------------------------------------------------------------------- +--- APB Bridge and various periherals ------------------------------- +---------------------------------------------------------------------- + + apb0 : apbctrl -- AHB/APB bridge + generic map (hindex => 1, haddr => CFG_APBADDR, nslaves => 16) + port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo ); + + irqctrl : if CFG_IRQ3_ENABLE /= 0 generate + irqctrl0 : irqmp -- interrupt controller + generic map (pindex => 2, paddr => 2, ncpu => CFG_NCPU) + port map (rstn, clkm, apbi, apbo(2), irqo, irqi); + end generate; + irq3 : if CFG_IRQ3_ENABLE = 0 generate + x : for i in 0 to CFG_NCPU-1 generate + irqi(i).irl <= "0000"; + end generate; + apbo(2) <= apb_none; + end generate; + + gpt : if CFG_GPT_ENABLE /= 0 generate + timer0 : gptimer -- timer unit + generic map (pindex => 3, paddr => 3, pirq => CFG_GPT_IRQ, + sepirq => CFG_GPT_SEPIRQ, sbits => CFG_GPT_SW, ntimers => CFG_GPT_NTIM, + nbits => CFG_GPT_TW, wdog => 0) + port map (rstn, clkm, apbi, apbo(3), gpti, gpto); + gpti.dhalt <= dsuo.tstop; gpti.extclk <= '0'; + end generate; + + nogpt : if CFG_GPT_ENABLE = 0 generate apbo(3) <= apb_none; end generate; + + gpio0 : if CFG_GRGPIO_ENABLE /= 0 generate -- GPIO unit + grgpio0: grgpio + generic map(pindex => 10, paddr => 10, imask => CFG_GRGPIO_IMASK, nbits => 7) + port map(rst => rstn, clk => clkm, apbi => apbi, apbo => apbo(10), + gpioi => gpioi, gpioo => gpioo); + pio_pads : for i in 0 to 3 generate + pio_pad : iopad generic map (tech => padtech, level => cmos, voltage => x25v) + port map (switch(i), gpioo.dout(i), gpioo.oen(i), gpioi.din(i)); + end generate; + pio_pads2 : for i in 4 to 5 generate + pio_pad : inpad generic map (tech => padtech, level => cmos, voltage => x15v) + port map (button(i-4), gpioi.din(i)); + end generate; + end generate; + + ua1 : if CFG_UART1_ENABLE /= 0 generate + uart1 : apbuart -- UART 1 + generic map (pindex => 1, paddr => 1, pirq => 2, console => dbguart, + fifosize => CFG_UART1_FIFO) + port map (rstn, clkm, apbi, apbo(1), u1i, u1o); + u1i.rxd <= rxd1; + u1i.ctsn <= '0'; + u1i.extclk <= '0'; + txd1 <= u1o.txd; + serrx_pad : outpad generic map (level => cmos, voltage => x25v, tech => padtech) + port map (led(5), rxd1); + sertx_pad : outpad generic map (level => cmos, voltage => x25v, tech => padtech) + port map (led(6), txd1); + end generate; + noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate; + + ahbs : if CFG_AHBSTAT = 1 generate -- AHB status register + ahbstat0 : ahbstat generic map (pindex => 15, paddr => 15, pirq => 7, + nftslv => CFG_AHBSTATN) + port map (rstn, clkm, ahbmi, ahbsi, stati, apbi, apbo(15)); + end generate; + +----------------------------------------------------------------------- +--- AHB ROM ---------------------------------------------------------- +----------------------------------------------------------------------- + + bpromgen : if CFG_AHBROMEN /= 0 generate + brom : entity work.ahbrom + generic map (hindex => 7, haddr => CFG_AHBRODDR, pipe => CFG_AHBROPIP) + port map ( rstn, clkm, ahbsi, ahbso(7)); + end generate; + +----------------------------------------------------------------------- +--- AHB RAM ---------------------------------------------------------- +----------------------------------------------------------------------- + + ocram : if CFG_AHBRAMEN = 1 generate + ahbram0 : ahbram generic map (hindex => 5, haddr => CFG_AHBRADDR, + tech => CFG_MEMTECH, kbytes => CFG_AHBRSZ) + port map ( rstn, clkm, ahbsi, ahbso(5)); + end generate; + +----------------------------------------------------------------------- +--- Test report module ---------------------------------------------- +----------------------------------------------------------------------- + + -- pragma translate_off + test0_gen : if (testahb = true) generate + test0 : ahbrep generic map (hindex => 3, haddr => 16#200#) + port map (rstn, clkm, ahbsi, ahbso(3)); + end generate; + -- pragma translate_on + + test1_gen : if (testahb = false) generate + ahbram0 : ahbram generic map (hindex => 3, haddr => 16#200#, + tech => CFG_MEMTECH, kbytes => CFG_AHBRSZ) + port map ( rstn, clkm, ahbsi, ahbso(3)); + end generate; + + ----------------------------------------------------------------------- + --- Drive unused bus elements --------------------------------------- + ----------------------------------------------------------------------- + + nam1 : for i in (CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRETH+1) to NAHBMST-1 generate + ahbmo(i) <= ahbm_none; + end generate; + + ----------------------------------------------------------------------- + --- Boot message ---------------------------------------------------- + ----------------------------------------------------------------------- + + -- pragma translate_off + x : report_version + generic map ( + msg1 => "LEON3 Xilinx KC705 Demonstration design", + msg2 => "GRLIB Version " & tost(LIBVHDL_VERSION/1000) & "." & tost((LIBVHDL_VERSION mod 1000)/100) + & "." & tost(LIBVHDL_VERSION mod 100) & ", build " & tost(LIBVHDL_BUILD), + msg3 => "Target technology: " & tech_table(fabtech) & ", memory library: " & tech_table(memtech), + mdel => 1 + ); + -- pragma translate_on + end; + diff --git a/designs/leon3-xilinx-kc705/mig_interface_model.v b/designs/leon3-xilinx-kc705/mig_interface_model.v new file mode 100644 index 00000000..9496c788 --- /dev/null +++ b/designs/leon3-xilinx-kc705/mig_interface_model.v @@ -0,0 +1,168 @@ + +/***************************************************************************** +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- +-- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +------------------------------------------------------------------------------- +-- Entity: mig_interface_model +-- File: mig_interface_model.v +-- Author: Fredrik Ringhage - Aeroflex Gaisler AB +-- +-- This is a interface model for Xilinx Virtex-7 MIG used on eval board +-- VC707 and KC705. +-- +------------------------------------------------------------------------------- +*****************************************************************************/ + +`timescale 1ps/1ps + +module mig_interface_model + ( + // user interface signals + input [27:0] app_addr, + input [2:0] app_cmd, + input app_en, + input [511:0] app_wdf_data, + input app_wdf_end, + input [63:0] app_wdf_mask, + input app_wdf_wren, + output wire [511:0] app_rd_data, + output wire app_rd_data_end, + output wire app_rd_data_valid, + output wire app_rdy, + output wire app_wdf_rdy, + output reg ui_clk, + output reg ui_clk_sync_rst, + output reg init_calib_complete, + input sys_rst + ); + + parameter AddressSize = 28 - 12; + parameter WordSize = 512; + parameter MEM_SIZE = (1<> 4) + 0]; +// assign app_rd_data_hi = Mem[(app_addr_r >> 4) + 1]; +// assign app_rd_data_hi_data = {app_rd_data_hi[255:0],app_rd_data_lo[511:256]}; +// assign test = app_addr_r[3]; +// assign #100 app_rd_data = test ? app_rd_data_hi_data : app_rd_data_lo; + assign #100 app_rd_data = Mem[app_addr_r >> 3]; + + // Clear memory + initial + begin + for (k = 0; k < MEM_SIZE ; k = k + 1) + begin + Mem[k] = 512'd0; + end + end + + initial + begin + app_rd_data_valid_r = 1'b0; + app_rd_data_end_r = 1'b0; + app_rdy_r = 1'b1; + app_wdf_rdy_r = 1'b1; + init_calib_complete = 1'b0; + ui_clk_sync_rst = 1'b0; + ui_clk = 1'b0; + end + + // Generate clocks + always + begin + forever begin + #5000; + ui_clk = ~ui_clk; + end + end + + // Release reset and calibration + initial + begin + #10000; + $display("Reset release of simulation time is %d",$time); + @(posedge ui_clk) ui_clk_sync_rst = 1'b1; + #1000; + $display("Calibration release of simulation time is %d",$time); + @(posedge ui_clk) init_calib_complete = 1'b1; + end + + // Write Process + always@(posedge app_wdf_wren) + begin + #100; + for (k = 0; k < 511 ; k = k + 1) + begin + mask[k] = ~ app_wdf_mask[k >> 3]; + end + Mem[app_addr >> 3] = (app_wdf_data & mask) | (Mem[app_addr >> 3] & (~ mask) ); + #10000; + if (app_wdf_wren) begin + #100; + for (k = 0; k < 512 ; k = k + 1) + begin + mask[k] = ~ app_wdf_mask[k >> 3]; + end + Mem[app_addr >> 3] = (app_wdf_data & mask) | (Mem[app_addr >> 3] & (~ mask) ); + end + end + + // Read Process + always@(posedge app_en) + begin + #100; + if (app_cmd == 3'd1) begin + app_addr_r1 = app_addr; + #10000; + app_addr_r2 = app_addr; + #40000; + app_addr_r = app_addr_r1; + #100; + app_rd_data_valid_r = 1'b1; + #10000; + app_addr_r = app_addr_r2; + #10000; + app_rd_data_valid_r = 1'b0; + #10000; + end + end +endmodule diff --git a/designs/leon3-xilinx-kc705/preload_ddr3_dimm.do b/designs/leon3-xilinx-kc705/preload_ddr3_dimm.do new file mode 100644 index 00000000..c4ab1091 --- /dev/null +++ b/designs/leon3-xilinx-kc705/preload_ddr3_dimm.do @@ -0,0 +1,52 @@ +# Procedure to load memory from file +proc reload_mem {} { + # Load memory with system test and display memory + if {[examine /testbench/led(3)] == 1} { + if {[examine sim:/config@work/CFG_MIG_SERIES7] == 1} { + echo "Loading DDR3 memory with System Test" + if {[examine /testbench/USE_MIG_INTERFACE_MODEL] == FALSE} { + mem load -startaddress 0 -format hex -infile sdram_dimm1.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(0)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm2.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(1)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm3.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(2)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm4.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(3)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm5.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(4)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm6.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(5)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm7.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(6)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm8.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(7)/u1/memory + + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(0)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(1)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(2)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(3)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(4)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(5)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(6)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(7)/u1/address + + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(0)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(1)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(2)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(3)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(4)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(5)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(6)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(7)/u1/memory_used 1111111111111111 + } + + if {[examine /testbench/USE_MIG_INTERFACE_MODEL] == TRUE} { + echo "MIG Model found" + mem load -startaddress 0 -format hex -infile sdram_dimm_merge.hex -filltype value -filldata 1'b0 sim:/testbench/cpu/mig_gen/ddrc/gen_mig_model/MCB_model_inst/Mem + } + + #do wave.do + } + } +} + +set init_path /testbench/led(3); + +when -label when1 "$init_path'event and $init_path ='1'" { + reload_mem +} + +#run 2 ms diff --git a/designs/leon3-lattice-latticeECP3/prom.h b/designs/leon3-xilinx-kc705/prom.h similarity index 79% rename from designs/leon3-lattice-latticeECP3/prom.h rename to designs/leon3-xilinx-kc705/prom.h index 5be23f55..e283ab8b 100644 --- a/designs/leon3-lattice-latticeECP3/prom.h +++ b/designs/leon3-xilinx-kc705/prom.h @@ -1,5 +1,5 @@ -#define MCFG1 0x10380033 -#define MCFG2 0xe6B86e20 +#define MCFG1 0x10380133 +#define MCFG2 0xe6B86e60 #define MCFG3 0x000ff000 #define ASDCFG 0x80000000 #define DSDCFG 0xe6A06e60 diff --git a/designs/leon3-ge-hpe-mini/prom.srec b/designs/leon3-xilinx-kc705/prom.srec similarity index 75% rename from designs/leon3-ge-hpe-mini/prom.srec rename to designs/leon3-xilinx-kc705/prom.srec index bd8fcca3..a2497cbf 100755 --- a/designs/leon3-ge-hpe-mini/prom.srec +++ b/designs/leon3-xilinx-kc705/prom.srec @@ -23,15 +23,15 @@ S1130140FD18C000010000000100000001000000D3 S1130150010000000100000089A008420100000025 S113016001000000010000000100000010800005F3 S11301700100000001000000000000000000000079 -S1130180874440008730E01C8688E00F1280001608 -S11301900320000005040E008410A233C420400094 +S1130180874440008730E01C8688E00F1280001509 +S11301900320000005040E008410A133C420400095 S11301A00539AE1B8410A260C4206004050003FC62 S11301B0C420600882103860C40040008530A00C60 -S11301C0030000048210600980A04002128000062F -S11301D0033FFC00821061000539A81B8410A26053 -S11301E0C4204000050000808210000080A0E000D0 -S11301F002800005010000008200400210BFFFFCE5 -S11302008620E0013D1003FFBC17A3E0BC2780015A -S11302109C27A0600310000081C040000100000082 +S11301C0030000048210600980A040021280000530 +S11301D0032000000539A81B8410A260C42040003D +S11301E0050000808210000080A0E000028000056D +S11301F0010000008200400210BFFFFC8620E001E5 +S11302003D1003FFBC17A3E0BC2780019C27A0601E +S11302100310000081C04000010000000100000044 S113022000000000000000000000000000000000CA S9030000FC diff --git a/designs/leon3-ge-hpe-midi-ep2s180/sdram.srec b/designs/leon3-xilinx-kc705/sdram.srec similarity index 70% rename from designs/leon3-ge-hpe-midi-ep2s180/sdram.srec rename to designs/leon3-xilinx-kc705/sdram.srec index 926a7ff7..9eece58d 100755 --- a/designs/leon3-ge-hpe-midi-ep2s180/sdram.srec +++ b/designs/leon3-xilinx-kc705/sdram.srec @@ -1,14 +1,14 @@ S00D0000736472616D2E7372656300 -S31540000000881000000910006C81C1206C01000000BE -S31540000010A1480000A75000001080203BAC102001F2 +S31540000000881000000910006C81C122980100000090 +S31540000010A1480000A75000001080203EAC102001EF S3154000002091D0200001000000010000000100000006 S3154000003091D02000010000000100000001000000F6 -S31540000040A14800002910006B81C523A401000000CF -S31540000050A14800002910006981C522C8010000009E -S31540000060A14800002910006981C523340100000021 +S31540000040A14800002910006C81C521EC0100000088 +S31540000050A14800002910006981C522A401000000C2 +S31540000060A14800002910006981C523100100000045 S3154000007091D02000010000000100000001000000B6 S3154000008091D02000010000000100000001000000A6 -S31540000090A1480000A75000001080201BAC1020098A +S31540000090A1480000A75000001080201EAC10200987 S315400000A091D0200001000000010000000100000086 S315400000B091D0200001000000010000000100000076 S315400000C091D0200001000000010000000100000066 @@ -16,21 +16,21 @@ S315400000D091D0200001000000010000000100000056 S315400000E091D0200001000000010000000100000046 S315400000F091D0200001000000010000000100000036 S3154000010091D0200001000000010000000100000025 -S31540000110AE102001A148000010806A33A7500000AD -S31540000120AE102002A148000010806A2FA7500000A0 -S31540000130AE102003A148000010806A2BA750000093 -S31540000140AE102004A148000010806A27A750000086 -S31540000150AE102005A148000010806A23A750000079 -S31540000160AE102006A148000010806A1FA75000006C -S31540000170AE102007A148000010806A1BA75000005F -S31540000180AE102008A148000010806A17A750000052 -S31540000190AE102009A148000010806A13A750000045 -S315400001A0AE10200AA148000010806A0FA750000038 -S315400001B0AE10200BA148000010806A0BA75000002B -S315400001C0AE10200CA148000010806A07A75000001E -S315400001D0AE10200DA148000010806A03A750000011 -S315400001E0AE10200EA1480000108069FFA750000005 -S315400001F0AE10200FA1480000108069FBA7500000F8 +S31540000110AE102001A148000010806A2AA7500000B6 +S31540000120AE102002A148000010806A26A7500000A9 +S31540000130AE102003A148000010806A22A75000009C +S31540000140AE102004A148000010806A1EA75000008F +S31540000150AE102005A148000010806A1AA750000082 +S31540000160AE102006A148000010806A16A750000075 +S31540000170AE102007A148000010806A12A750000068 +S31540000180AE102008A148000010806A0EA75000005B +S31540000190AE102009A148000010806A0AA75000004E +S315400001A0AE10200AA148000010806A06A750000041 +S315400001B0AE10200BA148000010806A02A750000034 +S315400001C0AE10200CA1480000108069FEA750000028 +S315400001D0AE10200DA1480000108069FAA75000001B +S315400001E0AE10200EA1480000108069F6A75000000E +S315400001F0AE10200FA1480000108069F2A750000001 S3154000020091D0200001000000010000000100000024 S3154000021091D0200001000000010000000100000014 S3154000022091D0200001000000010000000100000004 @@ -129,10 +129,10 @@ S315400007E091D020000100000001000000010000003F S315400007F091D020000100000001000000010000002F S3154000080091D020000100000001000000010000001E S3154000081091D020000100000001000000010000000E -S31540000820A14800002910006A81C521080100000086 -S31540000830A1480000108067D9A750000001000000C1 +S31540000820A14800002910006A81C520E401000000AB +S31540000830A1480000108067D0A750000001000000CA S3154000084091D02000010000000100000001000000DE -S31540000850A14800002910006A81C520EC0100000073 +S31540000850A14800002910006A81C520C80100000097 S3154000086091D02000010000000100000001000000BE S3154000087091D02000010000000100000001000000AE S3154000088091D020000100000001000000010000009E @@ -255,250 +255,250 @@ S31540000FC091D0200001000000010000000100000057 S31540000FD091D0200001000000010000000100000047 S31540000FE091D0200001000000010000000100000037 S31540000FF091D0200001000000010000000100000027 -S315400010009DE3BFC0051001438410A0600710014452 -S315400010108610E188821000008620C00286A0E00883 -S3154000102036BFFFFFC038800311100144901221885B -S31540001030C02200004000666601000000400066666F -S315400010400100000040006818010000001110006D0A -S31540001050901221A040006166010000004000694AEC -S3154000106001000000400000430100000040006743CB -S315400010700100000081C7E00881E800009DE3BF98B9 -S3154000108023100143C20C606080A0600012800015EE -S315400010902110008010800005C204200C9FC3400030 -S315400010A0C224200CC204200CDA00400080A3600059 -S315400010B012BFFFFB82006004030000008210600044 -S315400010C080A0600002800006821020011110006D91 -S315400010D06FFFFBCC9012213082102001C22C606041 -S315400010E081C7E00881E800009DE3BF9881C7E0081A -S315400010F081E800009DE3BF98030000008210600075 -S315400011001110006D1310014380A060009012213031 -S3154000111002800004921260646FFFFBBA0100000077 -S315400011201B100144C203618880A060000280000950 -S31540001130B0136188030000008210600080A0600048 -S3154000114002800004010000006FFFFBAE81E8000052 -S315400011500100000081C7E00881E800009DE3BF98D8 -S3154000116081C7E00881E8000081C3E0080100000073 -S315400011709DE3BF9840000007010000004000014683 -S31540001180010000004000000E81E800000100000060 -S315400011909DE3BF98400000290100000080A2200086 -S315400011A01280000503100080D80060109A102001BC -S315400011B0DA23201081C7E00891E820000310008060 -S315400011C0D80060109A102001DA23201481C3E00869 -S315400011D09010200003100080DA006010D0234000F9 -S315400011E081C3E0089010200003100080DA006010F0 -S315400011F0D023600881C3E0089010200003100080CF -S31540001200DA006010D023600481C3E008901020000B -S3154000121013100080921260149010200081C3E008E1 -S31540001220D0EA4020901020001310008092126014E3 -S3154000123081C3E008D0224000914440009132201CF6 -S3154000124081C3E008900A200F81C3E008D0820020C5 -S315400012509010200C81C3E008D08200408210000824 -S3154000126080A20009148000039022000990224001C8 -S3154000127081C3E00801000000932A60028210200129 -S31540001280C22200099810200080A3000A1680000A96 -S3154000129096102001832B2002DA02000180A0000D67 -S315400012A0826020009803200180A3000A06BFFFFA4F -S315400012B0960AC00180A2E00002BFFFF49810200009 -S315400012C081C3E008010000009DE3BF98C2062010DC -S315400012D08330601CA0100018A400600180A4A00107 -S315400012E00280006CB0103FFF7FFFFFD4010000007A -S315400012F0AA100008912A20047FFFFFBC9002200715 -S315400013007FFFFFD40100000003020000808A000135 -S315400013100280005C010000009A05600182102001F5 -S315400013208328400D11100080C2242010901220A066 -S31540001330921000157FFFFFD1941000120310008019 -S3154000134082106018A12D6002C0204010DA004010C3 -S31540001350A610000180A36009291001431480002BC8 -S31540001360AC1000017FFFFFAB0100000080A220000F -S3154000137012BFFFFD01000000B010200080A6001241 -S31540001380168000140100000010800005A21000160F -S3154000139080A600121680000F01000000832E200256 -S315400013A0D0044010D20440017FFFFFADB0062001BB -S315400013B080A2200104BFFFF7901020027FFFFF901C -S315400013C00100000080A6001206BFFFF6832E200211 -S315400013D0C205207C82006001C225207C7FFFFF92EF -S315400013E001000000C204C01082006001C224C01087 -S315400013F0DA04C01080A3600904BFFFDB111000802F -S31540001400108000049012205C111000809012205C25 -S31540001410921000157FFFFF9994100012832CA002B2 -S3154000142082004012A0004001DA05207C80A4000D15 -S3154000143002800004231001437FFFFF7190102003B8 -S31540001440C204607C80A060000480000601000000A9 -S31540001450C204607C80A400011680000580A560005F -S315400014607FFFFF679010200380A56000228000095F -S31540001470B010200091D0200010800006B01020004F -S315400014807FFFFF5F9010200110BFFFA59A05600106 -S3154000149081C7E00881E800009DE3BF98C20620109E -S315400014A0A01000188330601C80A0600002800009F4 -S315400014B0B0103FFF7FFFFF610100000080A22000C7 -S315400014C0128000040300003F821063FFC2242010F4 -S315400014D081C7E00881E800009DE3BF98C20620105E -S315400014E08330601CA400600180A4A00102800068D3 -S315400014F0B0103FFF7FFFFF5101000000AA10000817 -S31540001500912A20047FFFFF39900220077FFFFF5179 -S315400015100100000003020000808A0001028000589A -S315400015200100000011100080901220A092100015BA -S315400015307FFFFF5294100012031000808210601843 -S31540001540A12D6002C0204010DA004010A610000114 -S3154000155080A36009291001431480002BAC100001C0 -S315400015607FFFFF2C0100000080A2200012BFFFFD7C -S3154000157001000000B010200080A600121680001462 -S315400015800100000010800005A210001680A600127F -S315400015901680000F01000000832E2002D004401068 -S315400015A0D20440017FFFFF2EB006200180A2200119 -S315400015B004BFFFF7901020027FFFFF1101000000DB -S315400015C080A6001206BFFFF6832E2002C205207CAD -S315400015D082006001C225207C7FFFFF1301000000CE -S315400015E0C204C01082006001C224C010DA04C010D8 -S315400015F080A3600904BFFFDB111000801080000447 -S315400016009012205C111000809012205C9210001500 -S315400016107FFFFF1A94100012832CA0028200401212 -S31540001620A0004001DA05207C80A4000D0280000461 -S31540001630231001437FFFFEF290102003C204607C1A -S3154000164080A060000480000601000000C204607CA7 -S3154000165080A400011680000580A560007FFFFEE89B -S315400016609010200380A5600022800009B010200061 -S3154000167091D0200010800006B01020007FFFFEE0D1 -S315400016809010200110BFFFA91110008081C7E0080B -S3154000169081E800009DE3BF983120000092162200A9 -S315400016A09410200040003E599010200140003B62BB -S315400016B0901622009016230040003EBE921020084D -S315400016C0B016210040003A4F81E8000001000000BA -S315400016D09DE3BF9821200000921422009410200020 -S315400016E040003E4A9010200140003B539014220097 -S315400016F09210001840003EAF90142300B014210011 -S3154000170040003A4081E8000001000000000000006F -S315400017100000000000000000000000000000000083 -S315400017200000000000000000000000000000000073 -S315400017300000000000000000000000000000000063 -S315400017400000000000000000000000000000000053 -S315400017500000000000000000000000000000000043 -S315400017600000000000000000000000000000000033 -S315400017700000000000000000000000000000000023 -S315400017800000000000000000000000000000000013 -S315400017900000000000000000000000000000000003 -S315400017A000000000000000000000000000000000F3 -S315400017B000000000000000000000000000000000E3 -S315400017C000000000000000000000000000000000D3 -S315400017D000000000000000000000000000000000C3 -S315400017E000000000000000000000000000000000B3 -S315400017F000000000000000000000000000000000A3 -S315400018000000000000000000000000000000000092 -S315400018100000000000000000000000000000000082 -S315400018200000000000000000000000000000000072 -S315400018300000000000000000000000000000000062 -S315400018400000000000000000000000000000000052 -S315400018500000000000000000000000000000000042 -S315400018600000000000000000000000000000000032 -S315400018700000000000000000000000000000000022 -S315400018800000000000000000000000000000000012 -S315400018900000000000000000000000000000000002 -S315400018A000000000000000000000000000000000F2 -S315400018B000000000000000000000000000000000E2 -S315400018C000000000000000000000000000000000D2 -S315400018D000000000000000000000000000000000C2 -S315400018E000000000000000000000000000000000B2 -S315400018F000000000000000000000000000000000A2 -S315400019000000000000000000000000000000000091 -S315400019100000000000000000000000000000000081 -S315400019200000000000000000000000000000000071 -S315400019300000000000000000000000000000000061 -S315400019400000000000000000000000000000000051 -S315400019500000000000000000000000000000000041 -S315400019600000000000000000000000000000000031 -S315400019700000000000000000000000000000000021 -S315400019800000000000000000000000000000000011 -S315400019900000000000000000000000000000000001 -S315400019A000000000000000000000000000000000F1 -S315400019B000000000000000000000000000000000E1 -S315400019C000000000000000000000000000000000D1 -S315400019D000000000000000000000000000000000C1 -S315400019E000000000000000000000000000000000B1 -S315400019F000000000000000000000000000000000A1 -S31540001A000000000000000000000000000000000090 -S31540001A100000000000000000000000000000000080 -S31540001A200000000000000000000000000000000070 -S31540001A300000000000000000000000000000000060 -S31540001A400000000000000000000000000000000050 -S31540001A500000000000000000000000000000000040 -S31540001A600000000000000000000000000000000030 -S31540001A700000000000000000000000000000000020 -S31540001A800000000000000000000000000000000010 -S31540001A900000000000000000000000000000000000 -S31540001AA000000000000000000000000000000000F0 -S31540001AB000000000000000000000000000000000E0 -S31540001AC000000000000000000000000000000000D0 -S31540001AD000000000000000000000000000000000C0 -S31540001AE000000000000000000000000000000000B0 -S31540001AF000000000000000000000000000000000A0 -S31540001B00000000000000000000000000000000008F -S31540001B10000000000000000000000000000000007F -S31540001B20000000000000000000000000000000006F -S31540001B30000000000000000000000000000000005F -S31540001B40000000000000000000000000000000004F -S31540001B50000000000000000000000000000000003F -S31540001B60000000000000000000000000000000002F -S31540001B70000000000000000000000000000000001F -S31540001B80000000000000000000000000000000000F -S31540001B9000000000000000000000000000000000FF -S31540001BA000000000000000000000000000000000EF -S31540001BB000000000000000000000000000000000DF -S31540001BC000000000000000000000000000000000CF -S31540001BD000000000000000000000000000000000BF -S31540001BE000000000000000000000000000000000AF -S31540001BF0000000000000000000000000000000009F -S31540001C00000000000000000000000000000000008E -S31540001C10000000000000000000000000000000007E -S31540001C20000000000000000000000000000000006E -S31540001C30000000000000000000000000000000005E -S31540001C40000000000000000000000000000000004E -S31540001C50000000000000000000000000000000003E -S31540001C60000000000000000000000000000000002E -S31540001C70000000000000000000000000000000001E -S31540001C80000000000000000000000000000000000E -S31540001C9000000000000000000000000000000000FE -S31540001CA000000000000000000000000000000000EE -S31540001CB000000000000000000000000000000000DE -S31540001CC000000000000000000000000000000000CE -S31540001CD000000000000000000000000000000000BE -S31540001CE000000000000000000000000000000000AE -S31540001CF0000000000000000000000000000000009E -S31540001D00000000000000000000000000000000008D -S31540001D10000000000000000000000000000000007D -S31540001D20000000000000000000000000000000006D -S31540001D30000000000000000000000000000000005D -S31540001D40000000000000000000000000000000004D -S31540001D50000000000000000000000000000000003D -S31540001D60000000000000000000000000000000002D -S31540001D70000000000000000000000000000000001D -S31540001D80000000000000000000000000000000000D -S31540001D9000000000000000000000000000000000FD -S31540001DA000000000000000000000000000000000ED -S31540001DB000000000000000000000000000000000DD -S31540001DC000000000000000000000000000000000CD -S31540001DD000000000000000000000000000000000BD -S31540001DE000000000000000000000000000000000AD -S31540001DF0000000000000000000000000000000009D -S31540001E00000000000000000000000000000000008C -S31540001E10000000000000000000000000000000007C -S31540001E20000000000000000000000000000000006C -S31540001E30000000000000000000000000000000005C -S31540001E40000000000000000000000000000000004C -S31540001E50000000000000000000000000000000003C -S31540001E60000000000000000000000000000000002C -S31540001E70000000000000000000000000000000001C -S31540001E80000000000000000000000000000000000C -S31540001E9000000000000000000000000000000000FC -S31540001EA000000000000000000000000000000000EC -S31540001EB000000000000000000000000000000000DC -S31540001EC000000000000000000000000000000000CC -S31540001ED000000000000000000000000000000000BC -S31540001EE000000000000000000000000000000000AC -S31540001EF0000000000000000000000000000000009C -S31540001F00000000000000000000000000000000008B -S31540001F10000000000000000000000000000000007B -S31540001F20000000000000000000000000000000006B -S31540001F30000000000000000000000000000000005B +S315400010009DE3BFC0051001238410A05007100125A1 +S315400010108610E168821000008620C00286A0E008A3 +S3154000102036BFFFFFC038800311100125901221689A +S31540001030C02200004000665D010000004000665D81 +S3154000104001000000400068A301000000111000707C +S31540001050901220BC400061C30100000040006C11AA +S3154000106001000000400002300100000040006730EF +S315400010700100000081C7E00881E800009DE3BFA0B1 +S3154000108021100123C20C205080A060001280002253 +S3154000109023100123C20460542710007025100070ED +S315400010A0A614E024A414A028A4248013A53CA002DE +S315400010B0A404BFFF80A040123A80000E0300000047 +S315400010C0A21460548200600185286002C224400058 +S315400010D0C204C0029FC0400001000000C20440009C +S315400010E080A040120ABFFFF98200600103000000A1 +S315400010F08210600080A060000280000682102001FD +S315400011001110006E6FFFFBBF90122020821020014D +S31540001110C22C205081C7E00881E800009DE3BFA0B3 +S3154000112081C7E00881E800009DE3BFA003000000FE +S315400011308210600080A06000228000081110012506 +S315400011401110006E13100123901220206FFFFBAD8B +S315400011509212605811100125C202216880A06000D9 +S31540001160028000099012216803000000821060008E +S3154000117080A0600002800004010000009FC0400083 +S315400011800100000081C7E00881E800009DE3BFA0A0 +S3154000119081C7E00881E800008292200002800015A5 +S315400011A001000000C400400080A0A0002280001181 +S315400011B092102001C600600880A240032A800008E1 +S315400011C08200600C8800FFFF8401000280A240027A +S315400011D02880000AC20060048200600CC4004000FF +S315400011E080A0A00032BFFFF5C60060089210200123 +S315400011F081C3E00890100009920240019222400308 +S3154000120081C3E008901000099DE3BFA0C2064000DC +S3154000121080A060001280001582007FFFC206600831 +S3154000122080A0600322800014C206600CD2062014FF +S31540001230D006600C4000615394102034C206600C06 +S3154000124082006034C226600CC2066004B0007FFE95 +S3154000125082007FFFB0104018C2266004B136201FBE +S3154000126081C7E00881E80000C226400081C7E00847 +S3154000127091E82000C4062014C6008000C620400025 +S31540001280C600A004C6206004C400A008C4206008AC +S31540001290C206600C8200600CC226600CC206600466 +S315400012A0B0007FFE82007FFFB0104018C226600467 +S315400012B0B136201F81C7E00881E800009DE3BFA04A +S315400012C0C2064000C406A0149B3060188930600CEA +S315400012D088092FFF8608601F833060058208601FDB +S315400012E0DA2EA011C836A012C228A001C628800056 +S315400012F01700003F9612E3F0C2066004C220A02801 +S3154000130082102000C6066008C620A02CC606600CC7 +S31540001310C620A03086064001C600E01080A0E0004E +S315400013209A1020000280000B881020009B30E004B9 +S315400013308808C00B9B2B6014892920109808E00F61 +S315400013409A20000D80A320030280000A8808C0046A +S31540001350860080018200600480A06010DA20E014DC +S3154000136012BFFFEDC820E00481C7E00881E8000015 +S315400013708931200C9A380003881100189B33600489 +S315400013809A0B6FFF9B2B60089A1360FF10BFFFF10B +S315400013909A0360019DE3BEF8F627A050FA27A058AD +S315400013A080A660000280010AA81020102B0003FCD2 +S315400013B0A0102000AA160015A407BFA4A607BFDCEC +S315400013C0A207BF7010800005AC10200180A4001455 +S315400013D01680003437000040932C200594102020BE +S315400013E092024015400060E790100012C207BFA469 +S315400013F080A0600022BFFFF6A0042001C024E010B8 +S31540001400C024C000C024E004C024E008C024E00C8E +S31540001410C0244000C0246004C0246008C024600C7E +S31540001420C0246010C0246014C0246018C024601C0E +S31540001430C0246020C0246024C0246028C024602CBE +S31540001440C0246030E227BFF0EC2FBFEC90100018AC +S31540001450921000127FFFFF9A94100013C20FBFED47 +S3154000146080A0401C32BFFFDAA0042001C217BFEEA5 +S31540001470C407A05880A0400232BFFFD5A004200177 +S31540001480D207A0507FFFFF619010001380A220007A +S3154000149002BFFFCFA004200181C7E00891E82001E8 +S315400014A02D0003FE3B003FFF3300003F9206A04065 +S315400014B0AC160016BA1763FFB21663F0A0102000F0 +S315400014C0A607BFDCA207BF70B616E020AA07BFC4B6 +S315400014D0AE07BFF410800005D227BF6C80A5001070 +S315400014E0048000AE01000000932C200590100012ED +S315400014F092024016400060A394102020C207BFA469 +S3154000150080A0600022BFFFF6A004200182102001C7 +S31540001510C024E010C22FBFECC024C000C024E004A9 +S31540001520C024E008C024E00CC0244000C02460046D +S31540001530C0246008C024600CC0246010C02460141D +S31540001540C0246018C024601CC0246020C0246024CD +S31540001550C0246028C024602CC0246030E227BFF03D +S3154000156090100018921000127FFFFF559410001340 +S31540001570C20FBFED80A7000102800051C217BFEE27 +S31540001580C207BFEC8208401D80A0401B2280005B42 +S31540001590C207BFF0050000408410A00680A04002AC +S315400015A032BFFFCFA0042001C207BFF0C6006004CF +S315400015B088102003030003FC8210C001108000063F +S315400015C08400607880A0400222BFFFC5A0042001AD +S315400015D082006008DA00400080A3600002BFFFFA84 +S315400015E0D8006004920B601F973360189533600CE7 +S315400015F09B3360059A0B601F940AAFFFC025C0005D +S31540001600D22FBFF4DA2FBFF5130003FF9B3320041C +S31540001610921263FF9A0B6FFF9B2B60089A2A400D2C +S315400016209A036001133FFC00DA27BFFCC025400047 +S315400016309A0B0019C02560049B2B6004980B000987 +S31540001640C02560089933200CC025600C980B400CCF +S31540001650EE27BFD898130003C82FBFD4D62FBFD5C7 +S31540001660D437BFD680A7000B12BFFFD7D827BFF805 +S31540001670DA07A05880A3400A12BFFFD480A04002D8 +S31540001680D207A050C227BF60C427BF64C627BF5C2D +S31540001690C827BF687FFFFEDD90100015C207BF60F8 +S315400016A080A22000C407BF64C607BF5C12BFFF7B91 +S315400016B0C807BF6810BFFFC580A04002DA07A05820 +S315400016C080A3400112BFFFB0C207BFECD207A050B3 +S315400016D07FFFFECE9010001380A2200012BFFF6F46 +S315400016E0C207BFEC8208401D80A0401B12BFFFAB63 +S315400016F005000040C207BFF0C408600180A0A000FA +S3154000170022BFFF77A004200180A6A0000280001718 +S31540001710D000602C82102000C406800180A0A0006A +S315400017200280000880A2000222BFFF6DA0042001B3 +S315400017308200600480A0604032BFFFF9C406800189 +S31540001740C607BF6C8210001AC400400080A0A000EB +S3154000175022800014D02040008200600480A0400314 +S3154000176032BFFFFBC4004000D607A050DA07A0589E +S31540001770921000139410001A7FFFFF079810001C68 +S3154000178080A2200012BFFF45A004200180A50010C2 +S3154000179014BFFF57932C200581C7E00891E820002D +S315400017A0D607A05092100013DA07A0589410001ADA +S315400017B07FFFFEF99810001C80A2200012BFFF3761 +S315400017C0A004200110BFFFF380A5001080A6A00052 +S315400017D00280000B8210001A8606A040C40040001A +S315400017E080A0A00022800008F02040008200600413 +S315400017F080A0400332BFFFFBC400400010BFFEEC98 +S31540001800A810204010BFFEEAA81020409DE3BF501C +S315400018109407BFB08210200398100018C022A00879 +S31540001820C022A00CC022A010C022A014C022A01822 +S31540001830C022A01CC022A020C022A024C022A028D2 +S31540001840C022A02CC022A030C022A034C022A03882 +S31540001850C022A03CA0102001F427BFFCC027BFB087 +S31540001860C027BFB4C027BFF09A100019E027BFF4C5 +S31540001870C227BFF8921020009607BFF07FFFFEC632 +S31540001880113FFC00F007BFF4B024001881C7E00800 +S3154000189081E800009DE3BF9090102001A007BFF4AF +S315400018A09210200C7FFFFFDA9410001080A22001D6 +S315400018B00280001A0310012390102001921020117B +S315400018C07FFFFFD39410001080A220010280000DFC +S315400018D00710012494100010901020017FFFFFCCC8 +S315400018E09210200D80A220011280000403100123D3 +S315400018F0C407BFF8C420602C81C7E00881E8000017 +S31540001900C207BFF884006010C220E0A40310012380 +S3154000191010BFFFF1C4206028C407BFF810BFFFE71F +S31540001920C42060349DE3BFA04000002301000000B6 +S3154000193040000174010000004000000381E80000FF +S315400019400100000003100080C200600C84102001DA +S3154000195090102000C420601481C3E00801000000FC +S3154000196003100080C200600C841000089010200014 +S31540001970C420400081C3E00801000000031000803D +S31540001980C200600C8410000890102000C42060083B +S3154000199081C3E0080100000003100080C200600C13 +S315400019A08410000890102000C420600481C3E00821 +S315400019B0010000009DE3BFA04000001401000000AC +S315400019C080A220001280000503100080C200600C37 +S315400019D084102001C420601081C7E00891E82000EF +S315400019E013100080921260109010200081C3E0080E +S315400019F0D0EA402090102000131000809212601010 +S31540001A0081C3E008D0224000914440009132201C1E +S31540001A1081C3E008900A200F81C3E008D0820020ED +S31540001A209010200C81C3E008D08200409DE3BFA007 +S31540001A30C2062010A01000188330601C80A06000F1 +S31540001A4002800009B0103FFF7FFFFFF00100000059 +S31540001A5080A22000128000040300003F821063FF32 +S31540001A60C224201081C7E00881E800009DE3BFA0A2 +S31540001A70E4062010A534A01CA404A00180A4A00163 +S31540001A800280003CB0103FFF7FFFFFE001000000F6 +S31540001A90AA100008912A20047FFFFFB99002200770 +S31540001AA07FFFFFE00100000003020000808A000182 +S31540001AB00280007401000000A72D6002091000801A +S31540001AC0881120148210200184102001C2210013A5 +S31540001AD08210200080A480011480000987286002BB +S31540001AE080A0A000128000258210200084102001D2 +S31540001AF080A4800104BFFFFB87286002C601000363 +S31540001B0080A00003820060018660200010BFFFF2C3 +S31540001B1084088003C205A074852CA003A12CA001D3 +S31540001B20A004000280A4000102800004010000001D +S31540001B307FFFFF9A90102003C205A07480A060002A +S31540001B400480000603100123C200607480A40001D3 +S31540001B501680000580A560007FFFFF90901020034F +S31540001B6080A5600002800003B010200091D02000C4 +S31540001B7081C7E00881E8000023100080A214609C21 +S31540001B802D100123C0244013C204401380A06009D5 +S31540001B901480002709100080A815A0747FFFFF91CC +S31540001BA00100000080A2200012BFFFFD80A4A0001B +S31540001BB00480001301000000A0102000C40440135C +S31540001BC0832C2002C204400180A08001A004200191 +S31540001BD004800003862040028620800180A0E00128 +S31540001BE00480000580A480107FFFFF6C90102002C7 +S31540001BF080A4801014BFFFF201000000C20500005F +S31540001C0082006001C22500007FFFFF7B01000000CB +S31540001C10C204401382006001C2244013C204401330 +S31540001C2080A0600904BFFFDE09100080881120589B +S31540001C308210200184102001C2210013821020004E +S31540001C4080A48001148000098728600280A0A0003B +S31540001C5012BFFFB1821020008410200180A48001B1 +S31540001C6004BFFFFB87286002C601000380A0000373 +S31540001C70820060018660200010BFFFF28408800366 +S31540001C807FFFFF469010200110BFFF8DA72D6002F9 +S31540001C909DE3BFA0E4062010A0100018A534A01CA8 +S31540001CA0A404A00180A4A0010280003FB0103FFF21 +S31540001CB07FFFFF5601000000AA100008912A200469 +S31540001CC07FFFFF2F900220077FFFFF560100000095 +S31540001CD003020000808A00010280007701000000B4 +S31540001CE0A72D60020910008088112014821020015F +S31540001CF08405600185284002C4242010C2210013B7 +S31540001D00841020018210200080A4800114800009E4 +S31540001D108728600280A0A000128000258210200043 +S31540001D208410200180A4800104BFFFFB8728600245 +S31540001D30C601000380A00003820060018660200087 +S31540001D4010BFFFF284088003C205A074852CA0034F +S31540001D50A12CA001A004000280A40001028000047E +S31540001D60010000007FFFFF0D90102003C205A07404 +S31540001D7080A060000480000603100123C200607446 +S31540001D8080A400011680000580A560007FFFFF0348 +S31540001D909010200380A5600002800003B010200050 +S31540001DA091D0200081C7E00881E800002310008020 +S31540001DB0A214609C2D100123C0244013C20440137A +S31540001DC080A060091480002709100080A815A0741F +S31540001DD07FFFFF040100000080A2200012BFFFFD2C +S31540001DE080A4A0000480001301000000A010200081 +S31540001DF0C4044013832C2002C204400180A0800109 +S31540001E00A004200104800003862040028620800131 +S31540001E1080A0E0010480000580A480107FFFFEDFE3 +S31540001E209010200280A4801014BFFFF20100000031 +S31540001E30C205000082006001C22500007FFFFEEE61 +S31540001E4001000000C204401382006001C224401316 +S31540001E50C204401380A0600904BFFFDE0910008061 +S31540001E60881120588210200184102001C2210013BD +S31540001E708210200080A48001148000098728600217 +S31540001E8080A0A00012BFFFB1821020008410200164 +S31540001E9080A4800104BFFFFB87286002C6010003BF +S31540001EA080A00003820060018660200010BFFFF220 +S31540001EB0840880037FFFFEB99010200110BFFF8A7F +S31540001EC0A72D60029DE3BFA02120000094102000B2 +S31540001ED09214220040003C4F9010200140003B07E6 +S31540001EE0901422009210001840003C939014230056 +S31540001EF0B01421004000384381E800000100000092 +S31540001F009DE3BFA0312000009410200092162200CD +S31540001F1040003C409010200140003AF890162200C4 +S31540001F209016230040003C8492102008B0162100F1 +S31540001F304000383481E80000010000000000000045 S31540001F40000000000000000000000000000000004B S31540001F50000000000000000000000000000000003B S31540001F60000000000000000000000000000000002B @@ -2049,39 +2049,39 @@ S31540007FE0000000000000000000000000000000004B S31540007FF0000000000000000000000000000000003B S315400080009DE3BF9081C7E00881E8000003000010AF S31540008010C48000408088800112BFFFFE010000003E -S315400080209DE3BF909DE3BF909DE3BF909DE3BF90CE -S315400080309DE3BF909DE3BF9021044444A0142111C9 -S3154000804023088888A2146222250CCCCCA414A3331E -S3154000805027111111A614E04429155555A815215587 -S315400080602B199999AA1562662D1DDDDDAC15A377EE -S315400080702F222222AE15E08801100000E03FBFE02B -S31540008080E43FBFE8E83FBFF0EC3FBFF88210001E78 -S315400080908220601CC0A041E082206008C0A041E070 -S315400080A082206008C0A041E082206008C0A041E074 -S315400080B0C0A002209DE3BF909DE3BF9081E80000F1 -S315400080C081E800000100000001000000E01FBFE061 -S315400080D0E41FBFE8E81FBFF0EC1FBFF80100000037 -S315400080E00100000081E8000081E8000081E800000E -S315400080F081E8000081E8000081C7E00881E80000CF -S31540008100A7500000AA102400A8102300EC854320A5 -S31540008110EA8503202F100020AE15E150EE05C00081 -S31540008120E805C000EA05E004EC05E008AC15A0004F -S31540008130C0A58300EA250000AE05E00C2B10002008 -S31540008140AA156150EE25400081C4400081CC8000D4 -S3154000815000000000010000000000000000000000D8 -S3154000816000000000000000000000000000000000C9 +S31540008020C46FBFF89DE3BF909DE3BF909DE3BF90B3 +S315400080309DE3BF909DE3BF909DE3BF9021044444E0 +S31540008040A014211123088888A2146222250CCCCCC6 +S31540008050A414A33327111111A614E044291555552C +S31540008060A81521552B199999AA1562662D1DDDDD96 +S31540008070AC15A3772F222222AE15E088011000000E +S31540008080E03FBFE0E43FBFE8E83FBFF0EC3FBFF86A +S315400080908210001E8220601CC0A041E08220600841 +S315400080A0C0A041E082206008C0A041E08220600874 +S315400080B0C0A041E0C0A002209DE3BF909DE3BF90D9 +S315400080C081E8000081E80000010000000100000096 +S315400080D0E01FBFE0E41FBFE8E81FBFF0EC1FBFF89A +S315400080E0EC6FBFF8EC7FBFF8010000000100000014 +S315400080F081E8000081E8000081E8000081E8000096 +S3154000810081E8000081C7E00881E80000A750000030 +S31540008110AA102400A8102300EC854320EA850320FA +S315400081202F100020AE15E160EE05C000E805C00046 +S31540008130EA05E004EC05E008AC15A000C0A5830004 +S31540008140EA250000AE05E00C2B100020AA15616060 +S31540008150EE25400081C4400081CC80000100000033 +S3154000816000000000010000000000000000000000C8 S3154000817000000000000000000000000000000000B9 S3154000818000000000000000000000000000000000A9 -S315400081900000000001000000010000000100000096 -S315400081A00100000001000000010000000100000085 +S315400081900000000000000000000000000000000099 +S315400081A00000000001000000010000000100000086 S315400081B00100000001000000010000000100000075 -S315400081C00100000001000000010000000100000065 +S315400081C081C3E008D0A003200100000001000000A8 S315400081D00100000001000000010000000100000055 -S315400081E00100000001000000010000000100000045 -S315400081F00100000001000000010000000100000035 -S315400082000100000001000000010000000100000024 -S315400082100100000001000000010000000100000014 -S315400082200100000001000000010000000100000004 +S315400081E09DE3BF90FC2780009007A0019410001EDD +S315400081F0D1E7816AD1E7816A9402A0019002200109 +S31540008200D1E7816AD1E7816AD60780009622C01EEF +S31540008210B0A2E00202800004900020017FFFE5DF6B +S315400082200100000081C7E00881E80000010000006D S3154000823001000000010000000100000001000000F4 S3154000824001000000010000000100000001000000E4 S3154000825001000000010000000100000001000000D4 @@ -4095,3250 +4095,4438 @@ S3154000FFC001000000010000000100000001000000E7 S3154000FFD001000000010000000100000001000000D7 S3154000FFE001000000010000000100000001000000C7 S3154000FFF001000000010000000100000001000000B7 -S315400100009DE3BF987FFFC4741100403080A2200059 -S31540010010128000F382102001C226200CC026200443 +S315400100009DE3BFA07FFFC6571100403080A220006C +S31540010010128000AF82102001C226200CC026200487 S31540010020C0260000C026200882102002C2262008D1 S31540010030C0260000C026000082102003C2262008E8 -S315400100409A102083DA262008A2102063C0260000D9 -S31540010050A2847FFF1CBFFFFE01000000A2102063A7 -S31540010060C2060000A2847FFF1CBFFFFE8210200251 -S31540010070C2262008A4062004C28480208088600409 -S3154001008002BFFFFE01000000C0262008C026000076 -S31540010090A6102001C2848020833860148208603F04 -S315400100A080A0600122800093A604E0018210200313 -S315400100B0C2262008C2848020808860010280000711 -S315400100C080886004C2860020C284802080886001C6 -S315400100D012BFFFFD8088600402BFFFFB808860027B -S315400100E002BFFFF901000000C0262008C0262004F7 -S315400100F080A4E0010480000821100080C284802091 -S315400101008208608080A06001028000AE010000008C -S3154001011021100080DA4C20F0DA260000C2848020CB -S315400101208208600480A060010280009A01000000FC -S31540010130C284802080A4E001048000208210200136 -S31540010140A210200180A440131680000D2B100080C0 -S31540010150A81420F0E00560E8901000114000247AD0 -S3154001016092100010C24D0008A2046001C226000090 -S3154001017080A4401306BFFFFA90100011C28480206C -S315400101808208608080A06001028000920100000028 -S31540010190C2848020833860148208603F80A0401367 -S315400101A002800004010000007FFFC4159010200664 -S315400101B0C284802082102001C226200CDA8480204D -S315400101C0808B60011280006801000000821020834C -S315400101D0C226200880A4E0010280005201000000EE -S315400101E0C28480208088640002BFFFFE01000000B7 -S315400101F0C284802080886001028000530100000093 -S3154001020080A4E00124800012A2102000C284802034 -S315400102108330601A80A04013028000040100000070 -S315400102207FFFC3F790102009C28480208088610037 -S315400102300280005501000000C2848020808864004D -S315400102400280004D01000000A210200080A440134E -S315400102501680001203100080A81060F02B10008059 -S31540010260E08600209010001140002437D20560E856 -S31540010270C24D0008A204600180A040100280000423 -S315400102809010200C7FFFC3DE0100000080A44013C4 -S3154001029006BFFFF40100000080A4E0010480000FC6 -S315400102A001000000C28480208088610012800042E3 -S315400102B001000000C28480208330601A80A0600063 -S315400102C01280003A01000000C284802080886400C8 -S315400102D01280003301000000C284802080886001C2 -S315400102E01280001D01000000C02620083080003C1D -S315400102F0C0260000C2848020833860148208603F93 -S3154001030080A0401322BFFFFBA604E00180A4E001C8 -S3154001031034BFFF67A604FFFF10BFFF6682102003AC -S31540010320C28480208088600112BFFFB201000000B4 -S31540010330C28480208088600102BFFFFA010000006C -S3154001034030BFFFAC7FFFC3AE9010200810BFFFAE99 -S3154001035080A4E0017FFFC3AA9010200CC02620088C -S315400103603080001F7FFFC3A69010200710BFFF9962 -S31540010370821020837FFFC3A29010200B10BFFFB4D1 -S31540010380A21020007FFFC39E9010200A30BFFFAB12 -S315400103907FFFC39B9010200130BFFF667FFFC3984C -S315400103A09010200B30BFFFCD7FFFC3959010200EDC -S315400103B030BFFFC67FFFC3929010200D30BFFFBEF6 -S315400103C07FFFC38F9010200410BFFF532110008080 -S315400103D07FFFC38B9010200530BFFF6E81C7E008B9 -S315400103E091E8200017100143DA02E08090022010C4 -S315400103F09B2B60029812E080D023000DC202E08060 -S3154001040082006001C222E08081C3E0080100000051 -S31540010410C0220000C022204082103FFFC222200C91 -S315400104209A10200103100143DA20608081C3E0085D -S31540010430010000009DE3BF7803100144F02060CC29 -S315400104407FFFC365110040347FFFFFF29010001813 -S31540010450A010200123100040921000104000298F67 -S31540010460901463E4A004200180A4200F04BFFFFC84 -S3154001047092100010C20620208330601CAE0060013D -S31540010480AC10200080A58017168000ED0300003FC8 -S31540010490B81063FE2B1001430300002AB61062AA6E -S315400104A0BA102001B410001CB2156080832DA00C37 -S315400104B080A5E00114800119A600401880A5A0007E -S315400104C01280010A01000000F824E008C204E00895 -S315400104D080A0401C02800004010000007FFFC34849 -S315400104E090102001F824E040C204E04080A0401C66 -S315400104F002800004010000007FFFC34190102002EA -S31540010500C204E00880A0600012BFFFFE01000000A7 -S31540010510C205608080A0601002800005251001435D -S315400105207FFFC3379010200325100143A0102001FF -S31540010530A414A080A2102020832C20029A244010CB -S31540010540D8048001A004200180A3000D028000048C -S31540010550901020047FFFC32A0100000080A4200FD1 -S3154001056004BFFFF7832C2002FA256080F624C000E1 -S31540010570F424E040C204C00080A0401B0280000475 -S31540010580A010001A7FFFC31E90102005C204E04050 -S3154001059080A0401002800004010000007FFFC318C4 -S315400105A090102005F424E008C204E00880A0600011 -S315400105B012BFFFFE01000000C205608080A06010EE -S315400105C002800005251001437FFFC30D90102006D0 -S315400105D025100143A0102001A414A080A210201FC1 -S315400105E09B2C2002C204800D80A04011A004200152 -S315400105F0A2047FFE02800004901020077FFFC30003 -S315400106000100000080A4200704BFFFF79B2C2002B5 -S31540010610A4066028A210201CA0102005C204800058 -S3154001062080A04011A404A004A2047FFE028000041D -S31540010630901020087FFFC2F201000000A0843FFF16 -S315400106401CBFFFF701000000FA27BFE8C207BFE859 -S3154001065082006001C227BFECDA07BFEC9A03600152 -S31540010660DA27BFF0C207BFF082006001C227BFF49C -S315400106709A102006DA27BFD8C024C000C024E04023 -S31540010680FA256080A0102002E024E040E024E00842 -S31540010690834440008088610002800005010000001B -S315400106A0805000018050000180500001C207BFD830 -S315400106B0C227BFDCDA07BFD880A3600602800004E8 -S315400106C0010000007FFFC2CE9010200AE024E0081E -S315400106D001000000C207BFD8C227BFDCDA07BFD876 -S315400106E080A3600602800004010000007FFFC2C4AF -S315400106F09010200AE024E00801000000C027BFDC7A -S31540010700C207BFDC80A06000128000960100000095 -S31540010710C204E00880A0600012BFFFFE0100000095 -S31540010720C205608080A06004028000050300003F8E -S315400107307FFFC2B39010200D0300003FC024E0406C -S31540010740821063FEC224E008031001439A1020017F -S31540010750DA206080400003E801000000400003E821 -S3154001076090122F0082103FFFC224E040C204E040B5 -S3154001077080A0600002BFFFFE01000000C20560804C -S3154001078080A0600202800004A01560807FFFC29CA9 -S315400107909010200EC204200480A0601F0280000435 -S315400107A0010000007FFFC2969010200F400003D247 -S315400107B0A8100010400003D290023F00A010200272 -S315400107C0A4102020400003CC01000000400003CCCF -S315400107D090023F00C2056080A204200180A0401122 -S315400107E002800004901020107FFFC28501000000A6 -S315400107F0832C20029A248010D8050001A0100011F4 -S3154001080080A3000D02800004901020117FFFC27C5E -S315400108100100000080A4200F04BFFFEB010000008F -S31540010820C024E040AC05A00182103FFFC224E00C89 -S3154001083080A5801706BFFF1F832DA00C80A5E00170 -S315400108400480004B01000000C0262024C20620245B -S3154001085080A060001280003F0100000021040000DA -S31540010860E0262024C206202480A0401002800005F4 -S31540010870821020017FFFC262901020148210200155 -S31540010880C2262020C0262024C206202480A0401053 -S3154001089002800004010000007FFFC259901020151C -S315400108A0C0262020C0262024C206202480A0600025 -S315400108B0128000240100000082102002C22620205E -S315400108C0DA062020808B60020280001B01000000B6 -S315400108D0C0262020C2062020808860020280002493 -S315400108E001000000308000117FFFFECA9010001306 -S315400108F09B2DA01CDA24E024C204E0248330601C32 -S3154001090080A0401602BFFEF1010000007FFFC23CFD -S315400109109010201230BFFEED7FFFC23490100016BA -S3154001092010BFFEE880A5A0007FFFC23590102018B9 -S315400109303080000F7FFFC2329010201730BFFFE595 -S315400109407FFFC22F9010201610BFFFDD82102002BC -S315400109507FFFC22B9010201310BFFFC2210400005D -S315400109607FFFC2279010200B30BFFF6A81C7E00886 -S3154001097091E8200003100143DA0060C8C0236008F3 -S3154001098081C3E008901020009DE3BF902F100144E1 -S31540010990E205E0CCA004610027100143C204200413 -S315400109A0F024E0C87FFFC21190102010030180009F -S315400109B0DA04200482106020808B40011280010DF0 -S315400109C001000000DA046100DA27BFF0C2046100C9 -S315400109D080A3400102800005821020017FFFC208EA -S315400109E09010200282102001C2242004DA04610002 -S315400109F0DA27BFF0C204610080A3400102800120D2 -S31540010A0001000000C0242004DA046100DA27BFF0A7 -S31540010A10C204610080A340010280000580A7200036 -S31540010A207FFFC1F79010200480A72000128000B7F5 -S31540010A3080A72001B010200180A6001A1680001759 -S31540010A40A8102001108000052510004280A6001A3A -S31540010A5016800013DA04E0C8A206C0189014A174E7 -S31540010A609210001180A4601F14BFFFF9B006200147 -S31540010A704000280A01000000D805E0CCC20320400E -S31540010A809B2D00118210400DC223204080A6001AE2 -S31540010A9006BFFFF3A206C018DA04E0C89606A00313 -S31540010AA0C0236004833AE01FC023601098103FFFC3 -S31540010AB08330601EAA02C001D8236014D823600C7B -S31540010AC0A2102000AD3D600280A720000280008A6E -S31540010AD0A810200180A4401C168000ECC204E0C886 -S31540010AE080A7200104800015B010200080A5A00039 -S31540010AF00480001380A0001C9B2C6010832C60187E -S31540010B008210400D992C60088210400C82104011D1 -S31540010B10993D6002DA04E0C8C2236020B006200194 -S31540010B2080A72001048000059A03600480A3001871 -S31540010B3014BFFFFA0100000080A0001CB0603FFF17 -S31540010B4080A6001A16800016C204E0C8250180005E -S31540010B5080A72000028000058206C01880A72001D8 -S31540010B60028000848206C011C2242004D804E0C851 -S31540010B70832D00189B3E4018C2232008808B6001BC -S31540010B80128000859A10000CB006200180A6001A3A -S31540010B9006BFFFF180A72000C204E0C8C02060085C -S31540010BA0808E600112800009B0102000B00620013D -S31540010BB080A6201F14800005833E4018808860016E -S31540010BC022BFFFFCB006200180A72000028000065C -S31540010BD08206C01880A72001028000048216E02008 -S31540010BE08206C01182106020C2242004DA04E0C8C3 -S31540010BF0832D0018C2236008C203600880A06000EC -S31540010C0012BFFFFE01000000C2042004808860205C -S31540010C100280009801000000DA042004030100006C -S31540010C20808B40010280009001000000DA0420041C -S31540010C3003008000808B4001028000880100000093 -S31540010C40C2042008C227BFF0DA04200CDA27BFF419 -S31540010C50C204E0C8992D0018D82060089A100001F6 -S31540010C60C203600880A0600012BFFFFE01000000C1 -S31540010C70C2042004808860200280007501000000C3 -S31540010C80DA04200403010000808B40010280006DDC -S31540010C9001000000DA04200403008000808B40013B -S31540010CA00280006501000000DA042008C207BFF097 -S31540010CB080A0400D02800004010000007FFFC1506A -S31540010CC09010200EDA04200CC207BFF480A0400D1C -S31540010CD002800005030180007FFFC1499010200F6B -S31540010CE003018000C224200480A7200012BFFF7A9E -S31540010CF0A204600180A4600004BFFF7B80A720019D -S31540010D0010800062C204E0C80280003D111000421A -S31540010D10B010200080A6001C16BFFF60A81020015D -S31540010D20108000052510004280A6001C16BFFF5CFE -S31540010D30DA04E0C8A206C0189014A17492100011FA -S31540010D4080A4601F14BFFFF9B0062001400027535D -S31540010D5001000000D805E0CCC20320409B2D0011C4 -S31540010D608210400DC223204010BFFFF180A6001C17 -S31540010D70F6242004D804E0C8832D00189B3E401871 -S31540010D80C2232008808B600122BFFF81B00620016B -S31540010D909A10000CC203600880A0600012BFFFFEDB -S31540010DA001000000DA04200403010000808B4001A9 -S31540010DB00280001E01000000DA04200403008000C6 -S31540010DC0808B40010280001601000000E4242004CB -S31540010DD0C20420048088401222BFFF6DB006200164 -S31540010DE07FFFC1079010200710BFFF69B0062001A1 -S31540010DF07FFFC1039010200130BFFEF39012217492 -S31540010E00400027269210001BDA05E0CC832F001BF9 -S31540010E10C223604010BFFF22DA04E0C87FFFC0F85A -S31540010E209010200630BFFFEA7FFFC0F590102005E5 -S31540010E3030BFFFE27FFFC0F29010200D30BFFF9B15 -S31540010E407FFFC0EF9010200C30BFFF937FFFC0ECB7 -S31540010E509010200B30BFFF8B7FFFC0E99010200A16 -S31540010E6030BFFF787FFFC0E69010200930BFFF708A -S31540010E707FFFC0E39010200830BFFF687FFFC0E0CE -S31540010E809010200330BFFEE0C020600CDA05E0CCB4 -S31540010E90C023604082103FFFC223600C81C7E00837 -S31540010EA091E820009DE3BF983B100144E60760CCE2 -S31540010EB07FFFC0CE90102011C024E01CC204E01C6C -S31540010EC080A060000280004801000000C204E01CCE -S31540010ED08330601B80A0401A0A80003F0100000059 -S31540010EE0A410200080A4801A1A8000422D100143CC -S31540010EF0AA102001AE15A080A32CA002E006401145 -S31540010F007FFFFD4490100013A804A0019B2D4012C1 -S31540010F10832D20108210400DC224E01C9A103FFF01 -S31540010F20DA24E040D80600119A10201FDA23200463 -S31540010F30A0043FFFDA230000A12C20048204000C08 -S31540010F409A102005DA206010C0206014EA2060184B -S31540010F509A100001C203601080A0600012BFFFFE1C -S31540010F6001000000A004000CC204201080A0600013 -S31540010F7002BFFFFE01000000C0242018C205A08068 -S31540010F8080A06002028000069A04A011900480129B -S31540010F907FFFC09B900220039A04A011C205E00482 -S31540010FA080A0400D22800006A410001490048012F7 -S31540010FB07FFFC09390022004A4100014C024E01CBB -S31540010FC080A5001A0ABFFFCEA32CA0021080000AFA -S31540010FD0DA0760CC7FFFC08A9010200210BFFFC2A3 -S31540010FE0A41020007FFFC0869010200130BFFFB8BB -S31540010FF0DA0760CCC023604082103FFFC223600CF9 -S3154001100081C7E00891E820009DE3BF987FFFC08B30 -S315400110100100000080A220000280002680A6200058 -S3154001102012800029010000007FFFC08401000000FA -S31540011030912A20047FFFC06D900220034000186D65 -S315400110400100000080A220001280002B0100000058 -S315400110504000182B01000000400017E40100000089 -S31540011060400002270100000080A6A0001280002D4A -S31540011070031001447FFFC071B41060D0912A200251 -S31540011080C206800880A060001280003080A6200041 -S3154001109012800039010000004000048E010000006A -S315400110A040001E0201000000400015C181E8000019 -S315400110B07FFFC0491100400C80A6200002BFFFDB24 -S315400110C0010000007FFFC0F5901000197FFFC05B53 -S315400110D001000000912A20047FFFC04490022003B2 -S315400110E0400018440100000080A2200002BFFFD941 -S315400110F0010000007FFFC04290102001400018000F -S3154001110001000000400017B901000000400001FC49 -S315400111100100000080A6A00002BFFFD703100144D2 -S3154001112040001DED01000000031001447FFFC04354 -S31540011130B41060D0912A2002C206800880A06000C7 -S3154001114002BFFFD480A620007FFFC03C0100000003 -S315400111507FFFC03AA0100008912A2002C2068008EB -S315400111609FC040009010001080A6200002BFFFCB18 -S31540011170010000007FFFC0D99010001940000455BE -S315400111800100000040001DC9010000004000158813 -S3154001119081E800000100000003100143DA0060CC41 -S315400111A09A036001DA2060CC81C3E00801000000A7 -S315400111B09DE3BF987FFFC00811004044D806200830 -S315400111C082103FFFC2262004DA060000C206000054 -S315400111D080A340010280006FA60B20078210201FCA -S315400111E0C2262004C226000080A4E000028000330B -S315400111F082100018A2100013C0206018A2847FFF3D -S3154001120012BFFFFE82006010A210200080A440138E -S315400112101680002B80A4E001A810200FA010001812 -S315400112207FFFBFF290100011C0242010E824201443 -S3154001123082102006C2242018DA04201080A3600FF1 -S3154001124002800004010000007FFFBFED90102003E3 -S31540011250E82420189A10200EC204201080A0400DC8 -S3154001126012BFFFFE010000009A837FFF1CBFFFFBF8 -S31540011270A4100010C204201080A0600F12BFFFFE10 -S3154001128001000000C20420188088601002800035E9 -S3154001129082102010C224A018DA042018808B601016 -S315400112A01280003801000000A204600180A44013AE -S315400112B006BFFFDCA004201080A4E00114800010CA -S315400112C080A4E0000280000782100018A2100013DB -S315400112D0C0206018A2847FFF12BFFFFE820060100B -S315400112E021100144C20420CC80A060000280002D60 -S315400112F0111000441080000D921000197FFFBFBBF2 -S31540011300901020088210200FC22620189A10202FF4 -S31540011310DA262028C206202080A0600D12BFFFFEDB -S3154001132080A4E00030BFFFE8400025DC9012219800 -S315400113307FFFFC38D00420CC82102001832840193D -S31540011340DA0420CCC22360409810200FD8262014FE -S315400113508210200DC2262018A7800000308000117F -S315400113607FFFBFA79010200482102010C224A0182E -S31540011370DA042018808B601022BFFFCDA2046001E1 -S315400113807FFFBF9F9010200510BFFFC9A2046001D7 -S315400113907FFFBF9B9010200110BFFF928210201F3C -S315400113A081C7E00881E8000000000000000000005D -S315400113B000000000000000000000000000000000E6 -S315400113C001000000010000000100000001000000D2 -S315400113D0010000000100000081C3E0080100000097 -S315400113E001000000010000000100000001000000B2 -S315400113F0010000000100000081C3E0080100000077 -S315400114000100000001000000010000000100000091 -S31540011410010000000100000081C3E0080100000056 -S315400114200100000001000000010000000100000071 -S31540011430010000000100000081C3E0080100000036 -S31540011440D482018090A2000916BFFFFE9612800B3E -S3154001145081C3E0089010000BD48201C090A200091C -S3154001146016BFFFFE9612800B81C3E0089010000B59 -S3154001147090A22004C0A201A090A22004C0A201A073 -S3154001148090A22004C0A201A090A22004C0A201A063 -S31540011490C0A2018090A2200414BFFFF70100000002 -S315400114A081C3E0080100000090A22004C0A201E02F -S315400114B090A22004C0A201E090A22004C0A201E0B3 -S315400114C090A22004C0A201E0C0A201C090A22004C3 -S315400114D014BFFFF70100000081C3E00801000000CE -S315400114E0981000089610000A98A3200814BFFFFF21 -S315400114F0D43B00099810000898A3200814BFFFFFA9 -S31540011500C01B00099810000898A32004D6030009BF -S3154001151080A2C00A1280000698A3200434BFFFFDB2 -S31540011520D603000981C3E0089010200090102001E5 -S31540011530981000089610000A98A3200814BFFFFFD0 -S31540011540D43B00099810000898A32004D60300094B -S3154001155080A2C00A1280000698A3200434BFFFFD72 -S31540011560D603000981C3E0089010200090102001A5 -S315400115709810000898A32004D2A301A0DA8301A001 -S3154001158080A340091280000698A3200414BFFFFCE3 -S31540011590D2A301A081C3E008901020009010200141 -S315400115A09A1000089AA3400AD6A34180D883418065 -S315400115B0981B000B988B0009128000069AA3400ADB -S315400115C014BFFFFBD6A3418081C3E00890102000E1 -S315400115D0901020019A1000089AA3400BD8A241CD41 -S315400115E0C48241CD8418800C8488800A128000060A -S315400115F09AA3400B14BFFFFBD8A241CD81C3E0089B -S315400116009010200090102001010000000100000010 -S31540011610010000001310008092126138D40240008C -S3154001162080A2A0011280000780A0A002D40240003F -S31540011630D4024000952AA002108000050100000056 -S315400116403280000381E80000D402400081E00000BE -S3154001165093480000818A602023100045A2146278D5 -S31540011660A40460040100000081C4400081CC8000D4 -S3154001167091D0200191D020012680000590002001C3 -S3154001168090222001912A2001912A200281C3E0085B -S315400116900100000081C3E008D082004081C3E00818 -S315400116A0D2A2004081C3E008D082018081C3E00814 -S315400116B0D2A2018081C3E008D08201A081C3E008A3 -S315400116C0D2A201A081C3E008D08201C081C3E00853 -S315400116D0D2A201C081C3E008D08201E081C3E00803 -S315400116E0D2A201E081C3E008D2A2000081C3E00892 -S315400116F0D082000081C3E00891480000818A000041 -S3154001170001000000010000000100000081C3E00863 -S315400117100100000081C3E008C0A000A081C3E00829 -S31540011720C0A000C081C3E008D01A0000010000003B -S31540011730010000000100000001000000010000005E -S315400117409DE3BF701310006DCD1A6160CD3FBFE0C0 -S31540011750111000801B100080C91B61E0C51A21D8F9 -S31540011760C11FBFE095A088C4D53FBFF0D91FBFF0C8 -S3154001177003100080D11861E881AB0A4801000000DE -S315400117800380002BC13FBFD8F91FBFD8B5A0055C68 -S31540011790F53FBFF0ED1FBFF0F11FBFF0A5A589587A -S315400117A0E91FBFE0A1A488D41510006DA1A00130A6 -S315400117B0DD1AA16881AC0ACE010000000D80002D22 -S315400117C0F53FBFD0C51FBFD083A018C291A0492104 -S315400117D099A01928D51FBFE091A308CA1710006D1B -S315400117E091A00128FD1AE17081AA0ADE01000000DC -S315400117F00D80002F01000000400001AE01000000F5 -S315400118004000020C0100000080A22000128000313D -S3154001181001000000400002610100000080A220009A -S315400118200280003501000000308000317FFFBE7428 -S3154001183090102001F91FBFD8B5A0055CF53FBFF058 -S31540011840ED1FBFF0F11FBFF0A5A58958E91FBFE005 -S31540011850A1A488D41510006DA1A00130DD1AA1689C -S3154001186081AC0ACE010000001BBFFFD7F53FBFD0B8 -S315400118707FFFBE6390102002C51FBFD083A018C250 -S3154001188091A0492199A01928D51FBFE091A308CA63 -S315400118901710006D91A00128FD1AE17081AA0ADE98 -S315400118A0010000001BBFFFD5010000007FFFBE54B1 -S315400118B0901020034000017F01000000400001DD3F -S315400118C00100000080A2200002BFFFD301000000FA -S315400118D07FFFBE4B010000004000023001000000C6 -S315400118E080A2200002800004010000007FFFBE4468 -S315400118F09010200581C7E00881E800009DE3BF986C -S315400119007FFFFF7D210000047FFFFF7D90120010C5 -S315400119107FFFFF79B0102000808A00100280000B03 -S315400119209010200040000267010000007FFFBE4387 -S3154001193001000000912A20047FFFBE2C900220085E -S315400119407FFFFF800100000081C7E00881E80000B9 -S31540011950191000809813217811100200921020006E -S31540011960150FF76C9412A3D7D03B0000D42320085F -S31540011970C11B0000C503200887A089220100000081 -S3154001198089A005408DA0892281A8CA2601000000B0 -S3154001199033800003901020009010200181C3E0089D -S315400119A001000000C11A0000C51A400089A0084282 -S315400119B081C3E008C93A8000C11A0000C51A400037 -S315400119C089A0094281C3E008C93A80001910008004 -S315400119D098132178D0230000D2232008C1030000A8 -S315400119E0C303200885A00D2181C3E008C53A8000C4 -S315400119F0C11A0000C51A400089A009C2C93A80002F -S31540011A0081C3E00801000000C11A000085A005401D -S31540011A10C53A400081C3E008010000000100000012 -S31540011A20010000000100000001000000010000006B -S31540011A30010000000100000001000000010000005B -S31540011A40010000000100000001000000010000004B -S31540011A50010000000100000001000000010000003B -S31540011A60010000000100000001000000010000002B -S31540011A70010000000100000001000000010000001B -S31540011A80010000000100000001000000010000000B -S31540011A9001000000010000000100000081A00020BB -S31540011AA081C3E00801000000C11A000081C3E008BB -S31540011AB001000000C51A000089A009C2C93A4000C8 -S31540011AC081C3E00801000000131000809212617882 -S31540011AD0D0224000C102400085A01900C53A40000D -S31540011AE081C3E008D01A4000131000809212617839 -S31540011AF0D0224000C102400085A01880C522400086 -S31540011B0081C3E008D0024000151000809412A178EC -S31540011B10D03A8000C11A800085A01A40C5228000B3 -S31540011B2081C3E008D0028000151000809412A1788C -S31540011B30D0228000C102800085A01A20C5228000E3 -S31540011B4081C3E008D0028000151000809412A1786C -S31540011B50D0228000C102800081A01920C13A8000B4 -S31540011B6081C3E008D01A8000151000809412A17834 -S31540011B70D03A8000C11A800081A018C0C1228000DD -S31540011B8081C3E008D0028000151000809412A1782C -S31540011B90D0228000CB0280008DA00025CD2280007E -S31540011BA081C3E008D0028000151000809412A1780C -S31540011BB0D0228000CB0280008DA000A5CD228000DE -S31540011BC081C3E008D0028000151000809412A178EC -S31540011BD0D0228000CB0280008DA00125CD2280003D -S31540011BE081C3E008D0028000191000809813217843 -S31540011BF0D03B0000D43B2008C11B0000C51B200878 -S31540011C0081A80A420100000033800009901020009B -S31540011C1029800007901020012D8000059010200298 -S31540011C202F8000039010200391D0200081C3E0084B -S31540011C30010000001910008098132178D03B000064 -S31540011C40D43B2008C11B0000C51B200881A80AC23D -S31540011C500100000033BFFFF69010200029BFFFF4BA -S31540011C60901020012DBFFFF2901020022FBFFFF0F0 -S31540011C709010200391D020001910008098132178EC +S3154001004082102083C226200882102000C02600008C +S315400100508200600180A0606412BFFFFD01000000C4 +S3154001006082102000C40600008200600180A0606406 +S3154001007012BFFFFD0100000082102002C2262008A7 +S31540010080A0062004C28400208088600402BFFFFECF +S3154001009001000000C0262008C0260000C2840020BE +S315400100A084102001833860148208603F80A060017B +S315400100B002800004A21020011080000E821020034D +S315400100C0C0260000A200A001C2840020833860142B +S315400100D08208603F80A0401122BFFFFA84100001D0 +S315400100E080A4600134800002A21000028210200325 +S315400100F0C2262008C28400208208600780A06006CC +S315400101000280000801000000C2860020C28400204F +S315400101108208600780A0600612BFFFFC0100000054 +S31540010120C0262008C026200480A460010480000463 +S3154001013082102034C284002082102034C22600005E +S31540010140C2840020C284002080A46001048000197A +S315400101508210200129100070A4102001A81520301A +S3154001016090100012400024D592102041C24D000843 +S31540010170C2260000A404A00180A4801112BFFFFA88 +S3154001018090100012C2840020C2840020833860147B +S315400101908208603F80A040110280000401000000F7 +S315400101A07FFFC5FE90102006C284002082102001E8 +S315400101B0C226200CC2840020808860011280005330 +S315400101C082102083C226200880A46001028000425A +S315400101D001000000C28400208088640002BFFFFE47 +S315400101E001000000C2840020808860010280004F27 +S315400101F080A460010480005280A46000C284002073 +S315400102008330601A80A04011028000040100000082 +S315400102107FFFC5E290102009C284002080886100DA +S315400102200280004A01000000C284002080886400E8 +S315400102300280004C0100000029100070A41020002B +S31540010240A8152030E6860020921020414000249BCC +S3154001025090100012C24D000880A040132280000574 +S31540010260A404A0017FFFC5CD9010200CA404A001D9 +S3154001027080A4401214BFFFF480A460010480000FE3 +S3154001028001000000C2840020808861001280003F86 +S3154001029001000000C28400208330601A80A0600003 +S315400102A01280003701000000C2840020808864006B +S315400102B01280003001000000E0840020808C200183 +S315400102C01280000E01000000C026200881C7E00808 +S315400102D091E82000C28400208088600112BFFFC2DD +S315400102E001000000C28400208088600102BFFFFA3D +S315400102F00100000030BFFFBC7FFFC5A89010200C55 +S31540010300C026200830BFFFF27FFFC5A4901020070A +S3154001031082102083C226200880A4600112BFFFAE4E +S315400103200100000030BFFFEC7FFFC59C9010200804 +S3154001033080A4600114BFFFB280A4600034BFFFC037 +S315400103402910007030BFFFDD7FFFC5949010200A51 +S31540010350C28400208088640032BFFFB92910007032 +S315400103607FFFC58E9010200B10BFFFB5291000707E +S315400103707FFFC58A9010200B30BFFFD07FFFC58716 +S315400103809010200E30BFFFC97FFFC5849010200D0D +S3154001039030BFFFC103100123C40060788528A00245 +S315400103A08610607890022010D020C002C400607888 +S315400103B08400A001C420607881C3E00801000000E8 +S315400103C0C0220000C022204082103FFFC222200CE2 +S315400103D00310012384102001C420607881C3E00802 +S315400103E00100000003100123C20060C090102000EC +S315400103F0C020600881C3E008010000009DE3BFA062 +S3154001040023100124E00461107FFFC55D9010201187 +S31540010410C024201CC204201C80A060000280004C25 +S3154001042001000000C204201C8330601B80A0401ADA +S315400104300A80004E80A6A0000280003FC2046110DF +S315400104402B100123A6102004AA156078BA102000AB +S31540010450A4102000AE103FFFA8102001AC10201FB1 +S31540010460B8102005BB2F6002C606401DC0240000FF +S31540010470C0242040EE24200CE8254000832D0012A4 +S31540010480A404A001852CA01082108001C224201C46 +S31540010490EE2420408928E0049A00FFFFC206001D91 +S315400104A0980040049B2B60048400400DEC206004BE +S315400104B0EC204000F8204004C0232004E820A01886 +S315400104C0C400400480A0A00012BFFFFE010000004E +S315400104D08728E004C400400380A0A00002BFFFFEBD +S315400104E0010000008200400DC0206018C205400096 +S315400104F080A0600202800004010000007FFFC52742 +S315400105009004FFFFC40560048204A01080A080010E +S3154001051002800004BA1000127FFFC520901000131C +S31540010520C024201C80A6801218BFFFCFA604E0027B +S31540010530C204611084103FFFB0102000C02060400B +S31540010540C420600C81C7E00881E800007FFFC51325 +S3154001055090102001C204201C8330601B80A0401AE9 +S315400105601ABFFFB680A6A0007FFFC50C90102002DF +S3154001057010BFFFB52B1001239DE3BF80231001233C +S3154001058021100124E6042110A404E100C204A004C0 +S31540010590F02460C07FFFC4FA90102010C204A0046A +S315400105A0050180008410A020808840021280014508 +S315400105B001000000C404E100C204E10080A0800102 +S315400105C002800005821020017FFFC4F490102002B2 +S315400105D082102001C224A004C404E100C204E10047 +S315400105E080A080010280014201000000C024A004D5 +S315400105F0C404E100C204E10080A08001028000053C +S3154001060080A720007FFFC4E59010200480A720002A +S315400106101280011180A7200180A6A0010480001A42 +S315400106202F100040A606E001AE15E3E4A810200114 +S31540010630AC14211010800005AA10200180A6801458 +S3154001064004800011A604E00180A4E01F34BFFFFC32 +S31540010650A8052001921000134000290090100017B0 +S31540010660C2058000C4006040872D40138410C0023B +S31540010670C4206040A805200180A6801414BFFFF362 +S31540010680A604E00180A0001C84603FFFC427BFF0A0 +S31540010690C60460C082103FFFF627BFF8C027BFFCE3 +S315400106A0C020E004C020E010C220E014C220E00CCB +S315400106B08206A0038538601F8530A01E8200800116 +S315400106C0AF386002C207BFF08200401B8416E020AB +S315400106D0C227BFECC427BFE829100123AC10200173 +S315400106E0A81520C0310100003B0080002B0180008D +S315400106F080A7200002800003821020018210001C86 +S31540010700C407BFFC80A08001168000CB80A72001D2 +S315400107100480001680A5E00004800014C207BFFCD7 +S31540010720C407BFFC8928601883286010881100011E +S315400107308328A008881100028400E0248811000162 +S3154001074082102001C820E0201080000680A04017BA +S31540010750C8208000820060018400A00480A0401768 +S3154001076012BFFFFC01000000C207BFF0E827BFF43B +S3154001077080A68001A2100001048000338400E008B5 +S315400107801080000EE607BFECE624A004832D8011FD +S31540010790C220E008833E4011808860011280001328 +S315400107A08400E008A204600180A68011048000262E +S315400107B0A604E001C605000080A7200002BFFFF3A2 +S315400107C080A7200102800079C407BFF8C424A00491 +S315400107D0832D8011C220E008833E4011808860014C +S315400107E002BFFFF18400E008C200800080A06000E3 +S315400107F012BFFFFE01000000C204A0048088401819 +S315400108000280006701000000C204A0048088401DE8 +S315400108100280006001000000EA24A004C204A00492 +S31540010820808840151280005601000000C405000072 +S315400108308400A008A204600180A6801114BFFFDED7 +S31540010840A604E001C020800010800005A21020000F +S3154001085080A460200280000780A72000833E4011CB +S315400108608088600122BFFFFBA204600180A72000AF +S315400108701280005180A720018204401B8210602013 +S31540010880C224A004A32D8011E2208000C200800072 +S3154001089080A0600012BFFFFE01000000C204A00458 +S315400108A0808860200280005D01000000C204A0042F +S315400108B0808840180280005601000000C204A0044E +S315400108C08088401D0280004E01000000C207BFF42F +S315400108D0C4004000C204A008E604A00C8600A0089B +S315400108E0E220A008C400C00080A0A00012BFFFFE05 +S315400108F001000000C404A0048088A0202280003C9E +S31540010900C227BFE4C404A004808880182280003432 +S31540010910C227BFE4C404A0048088801D2280002C25 +S31540010920C227BFE4C404A00880A04002028000049C +S31540010930010000007FFFC4199010200EC204A00CD4 +S3154001094080A4C00102800005C407BFF47FFFC41321 +S315400109509010200FC407BFF4C207BFFCC600800039 +S31540010960C407BFF8820060018400A001EA24A00404 +S31540010970C227BFFC10BFFF5FC427BFF87FFFC40774 +S3154001098090102007C405000010BFFFAB8400A008EB +S315400109907FFFC4029010200630BFFFA07FFFC3FF38 +S315400109A09010200530BFFF99F624A00410BFFF79AF +S315400109B0832D80110280001CC607BFF88210E020FB +S315400109C0C224A00410BFFFB1A32D80117FFFC3F342 +S315400109D09010200D10BFFFD4C207BFE47FFFC3EFC5 +S315400109E09010200C10BFFFCCC207BFE47FFFC3EBC2 +S315400109F09010200B10BFFFC4C207BFE47FFFC3E7BF +S31540010A009010200A10BFFFB3C207BFF47FFFC3E3B4 +S31540010A109010200930BFFFAA7FFFC3E09010200845 +S31540010A2030BFFFA3C607BFE8C624A00410BFFF9787 +S31540010A30A32D8011C2042110C020E00C84103FFF79 +S31540010A40B0102000C0206040C420600C81C7E0087F +S31540010A5081E800000280001E1110004080A720009E +S31540010A60A610001B04BFFF08A81020002F1000404D +S31540010A70AC142110AE15E3E410800005AA10200144 +S31540010A8080A7001404BFFF00A604E00180A4E01F74 +S31540010A9034BFFFFCA805200192100013400027EF48 +S31540010AA090100017C2058000C4006040872D401396 +S31540010AB08410C002C420604010BFFFF2A805200187 +S31540010AC07FFFC3B69010200130BFFEBB9210001BC2 +S31540010AD0400027E2901223E4C2042110852F001B17 +S31540010AE0C420604010BFFEE980A0001C7FFFC3AB5D +S31540010AF09010200330BFFEBE9DE3BF80031001244A +S31540010B0011004034231000407FFFC396F02061104E +S31540010B10C0260000C026204082103FFFC226200C7E +S31540010B200310012384102001A0102001C420607805 +S31540010B30A214639492100010400027C8901000112F +S31540010B40A004200180A4201012BFFFFC92100010C7 +S31540010B50F8062020B937201C231001232D00003F21 +S31540010B603700002AB8072001A2146078AC15A3FE0D +S31540010B70B616E2AAA6100018AE102000B4103FFF28 +S31540010B80BA102001A8102020AA10202180A72001F8 +S31540010B900280000580A5E0007FFFC3799010001711 +S31540010BA080A5E0000280000F01000000C024C000C3 +S31540010BB0C024E040F424E00CFA244000832DE01CDC +S31540010BC0C224E024C204E0248330601C80A0401784 +S31540010BD002800004010000007FFFC37090102012C4 +S31540010BE0EC24E008C204E00880A04016028000041C +S31540010BF0010000007FFFC36990102001EC24E04012 +S31540010C00C204E04080A040160280000401000000BA +S31540010C107FFFC36290102002C204E00880A06000FA +S31540010C2012BFFFFE01000000C204400080A0601018 +S31540010C3002800005A01020017FFFC35890102003B9 +S31540010C40A0102001832C2002C204400184250010FB +S31540010C5080A0800122800005A00420017FFFC34FB0 +S31540010C6090102004A004200180A4201012BFFFF799 +S31540010C70832C2002FA244000F624C000EC24E040F4 +S31540010C80C204C00080A0401B028000040100000095 +S31540010C907FFFC34290102005C204E04080A0401669 +S31540010CA002800004010000007FFFC33C9010200534 +S31540010CB0EC24E008C204E00880A0600012BFFFFEF9 +S31540010CC001000000C204400080A0601002800005BF +S31540010CD0A410201F7FFFC33190102006A410201FAF +S31540010CE0A0102001832C2002C204400180A04012A2 +S31540010CF022800005A00420017FFFC3289010200711 +S31540010D00A004200180A4200812BFFFF7A404BFFE5F +S31540010D10A410201CA010200A832C2002C2044001EA +S31540010D2080A0401222800005A00420017FFFC31B42 +S31540010D3090102008A004200180A4201012BFFFF7C4 +S31540010D40A404BFFEFA27BFF082102002C407BFF0F9 +S31540010D508400A001C427BFF4C407BFF48400A001E6 +S31540010D60C427BFF8C407BFF88400A001C427BFFC4D +S31540010D7084102006C427BFE0C024C000C024E04040 +S31540010D80FA244000C224E040C224E00883444000E3 +S31540010D90808861000280000501000000805000014A +S31540010DA08050000180500001C207BFE0C227BFE466 +S31540010DB0C207BFE080A060060280000582102002C3 +S31540010DC07FFFC2F69010200A82102002C224E0085A +S31540010DD001000000C207BFE0C227BFE4C207BFE06F +S31540010DE080A0600602800005821020027FFFC2EBD0 +S31540010DF09010200A82102002C224E008010000005F +S31540010E00C027BFE4C207BFE480A060001280007320 +S31540010E1001000000C204E00880A0600012BFFFFE8E +S31540010E2001000000C204400080A06004028000046A +S31540010E30010000007FFFC2D99010200DC024E04080 +S31540010E40EC24E008FA2440004000020B01000000B7 +S31540010E504000020B90122F00EC24E040C204E04017 +S31540010E6080A0600002BFFFFE01000000C2044000F6 +S31540010E7080A0600202800004010000007FFFC2C71B +S31540010E809010200EC204600480A0601F02800004FE +S31540010E90010000007FFFC2C19010200F400001F603 +S31540010EA0A4102002400001F690023F00400001F2EA +S31540010EB001000000400001F290023F00C2044000E0 +S31540010EC0A004A00180A0401022800005A52CA0020C +S31540010ED07FFFC2B290102010A52CA002C40440127C +S31540010EE08225401080A0800102800004A4100010D9 +S31540010EF07FFFC2AA9010201180A4201012BFFFECE0 +S31540010F0001000000C024E040F424E00CAE05E001FD +S31540010F1080A7001714BFFF1EA624F00080A720015A +S31540010F200480002C01000000C0262024C206202493 +S31540010F3080A060001280002C010000000304000024 +S31540010F40C2262024C406202480A0800102800005F8 +S31540010F50821020017FFFC29190102014821020013F +S31540010F60C2262020C026202403040000C4062024D3 +S31540010F7080A0800102800004010000007FFFC2873B +S31540010F8090102015C0262020C0262024C2062024E9 +S31540010F9080A060001280001B010000008210200228 +S31540010FA0C2262020C20620208088600202800012CC +S31540010FB001000000C0262020C20620208088600251 +S31540010FC002800004010000007FFFC27490102018C7 +S31540010FD081C7E00891E820007FFFC2709010200B86 +S31540010FE030BFFF8D7FFFC26D9010201310BFFFD51C +S31540010FF0030400007FFFC2699010201730BFFFEE47 +S315400110007FFFC2669010201610BFFFE682102002B5 +S315400110109DE3BFA07FFFC27D0100000080A22000AA +S315400110200280003B0100000080A6200012800035AE +S31540011030010000007FFFC27501000000912A2004D3 +S315400110407FFFC24F9002200340001880010000003C +S3154001105080A2200012800028010000004000181FD5 +S3154001106001000000400017CD01000000400001E3EF +S315400110700100000080A6A0001280001C01000000B3 +S315400110807FFFC26221100124912A2002A01421145B +S31540011090C204000880A060000280000A80A62000E9 +S315400110A07FFFC25A01000000912A20027FFFC257EA +S315400110B0E00400089FC400000100000080A6200053 +S315400110C002800004010000007FFFC26990100019F0 +S315400110D0400004400100000040001E4F0100000096 +S315400110E0400015D281E8000040001F2101000000A8 +S315400110F030BFFFE47FFFC2299010200130BFFFD8E7 +S315400111007FFFC24B9010001930BFFFCB7FFFC21546 +S315400111101100400C10BFFFC680A62000031001231A +S31540011120C40060C48400A001C42060C481C3E00837 +S31540011130010000009DE3BFA07FFFC20A11004044A9 +S3154001114082103FFFE4062008C2262004A40CA00713 +S31540011150C4060000C206000080A08001028000741F +S31540011160010000008210201FC2262004C226000072 +S3154001117080A4A0000280004E8210200085286004D1 +S31540011180840600028200600180A04012C020A0189F +S3154001119012BFFFFC85286004A0102000A610200F76 +S315400111A0AA102006A81020107FFFC1F5901000104C +S315400111B0A2042001832C600486060001A12C200490 +S315400111C0C026000184060010E620E004EA20A018AB +S315400111D0C206000180A0600F028000058206001051 +S315400111E07FFFC1EE90102003820600108410200E6E +S315400111F0872C6004E6206018C206000380A04002E6 +S3154001120012BFFFFE010000008400BFFF80A0BFFFA8 +S3154001121012BFFFFA01000000852C6004C2060002DD +S3154001122080A0600F12BFFFFE82060010C200601848 +S315400112308088601002800033A0060010E824201840 +S31540011240C204201880886010128000350100000019 +S3154001125080A4801114BFFFD5A010001180A4A00165 +S315400112600480000C821020007FFFC1C59010200829 +S315400112708210200FC22620188210202FC226202835 +S31540011280C206202080A0600D12BFFFFE8210200002 +S3154001129085286004840600028200600180A0401215 +S315400112A0C020A01812BFFFFC85286004211001242C +S315400112B0C204211080A06000028000109210001923 +S315400112C011100044400025E59012211C7FFFFC3D92 +S315400112D0D0042110C204211084102001B3288019A2 +S315400112E0F22060408210200FC22620148210200D69 +S315400112F0C2262018A780000081C7E00881E80000C7 +S315400113007FFFC1A690102004E8242018C2042018AB +S315400113108088601022BFFFD080A480117FFFC19FCB +S315400113209010200510BFFFCC80A480117FFFC19B88 +S315400113309010200110BFFF8D8210201F0000000079 +S315400113400100000001000000010000000100000052 +S31540011350010000000100000081C3E0080100000017 +S315400113600100000001000000010000000100000032 +S31540011370010000000100000081C3E00801000000F7 +S315400113800100000001000000010000000100000012 +S31540011390010000000100000081C3E00801000000D7 +S315400113A001000000010000000100000001000000F2 +S315400113B0010000000100000081C3E00801000000B7 +S315400113C0D482018090A2000916BFFFFE9612800BBF +S315400113D081C3E0089010000BD48201C090A200099D +S315400113E016BFFFFE9612800B81C3E0089010000BDA +S315400113F090A22004C0A201A090A22004C0A201A0F4 +S3154001140090A22004C0A201A090A22004C0A201A0E3 +S31540011410C0A2018090A2200414BFFFF70100000082 +S3154001142081C3E0080100000090A22004C0A201E0AF +S3154001143090A22004C0A201E090A22004C0A201E033 +S3154001144090A22004C0A201E0C0A201C090A2200443 +S3154001145014BFFFF70100000081C3E008010000004E +S31540011460981000089610000A98A3200814BFFFFFA1 +S31540011470D43B00099810000898A3200814BFFFFF29 +S31540011480C01B00099810000898A32004D603000940 +S3154001149080A2C00A1280000698A3200434BFFFFD33 +S315400114A0D603000981C3E008901020009010200166 +S315400114B0981000089610000A98A3200814BFFFFF51 +S315400114C0D43B00099810000898A32004D6030009CC +S315400114D080A2C00A1280000698A3200434BFFFFDF3 +S315400114E0D603000981C3E008901020009010200126 +S315400114F09810000898A32004D2A301A0DA8301A082 +S3154001150080A340091280000698A3200414BFFFFC63 +S31540011510D2A301A081C3E0089010200090102001C1 +S315400115209A1000089AA3400AD6A34180D8834180E5 +S31540011530981B000B988B0009128000069AA3400A5B +S3154001154014BFFFFBD6A3418081C3E0089010200061 +S31540011550901020019A1000089AA3400BD8A241CDC1 +S31540011560C48241CD8418800C8488800A128000068A +S315400115709AA3400B14BFFFFBD8A241CD81C3E0081B +S315400115809010200090102001010000000100000091 +S315400115900100000013100080921260E0D402400066 +S315400115A080A2A0011280000780A0A002D4024000C0 +S315400115B0D4024000952AA0021080000501000000D7 +S315400115C03280000381E80000D402400081E000003F +S315400115D093480000818A602023100045A21461F8D7 +S315400115E0A40460040100000081C4400081CC800055 +S315400115F091D0200191D02001268000059000200144 +S3154001160090222001912A2001912A200281C3E008DB +S315400116100100000081C3E008D082004081C3E00898 +S31540011620D2A2004081C3E008D082018081C3E00894 +S31540011630D2A2018081C3E008D08201A081C3E00823 +S31540011640D2A201A081C3E008D08201C081C3E008D3 +S31540011650D2A201C081C3E008D08201E081C3E00883 +S31540011660D2A201E081C3E008D2A2000081C3E00812 +S31540011670D082000081C3E00891480000818A0000C1 +S3154001168001000000010000000100000081C3E008E4 +S315400116900100000081C3E008C0A000A081C3E008AA +S315400116A0C0A000C081C3E008D01A000001000000BC +S315400116B001000000010000000100000001000000DF +S315400116C09DE3BF8803100070D1186078D13FBFF009 +S315400116D003100080D11FBFF0D9186180031000802C +S315400116E0D518618895A308CAD53FBFF80310008075 +S315400116F0D91FBFF8D518619081AB0A4A0100000095 +S3154001170023800038D127BFEC91A005480310007013 +S31540011710D13FBFF8D51FBFF8D91FBFF899A3094AD2 +S31540011720D51FBFF099A308CA99A0012CD51860808E +S3154001173081AB0ACA010000002D800024D127BFECED +S3154001174091A018C891A20928D51FBFF091A01928C8 +S3154001175091A208CA91A0012803100070D51860888B +S3154001176081AA0ACA010000000D800015010000008F +S315400117704000019001000000400001EE0100000020 +S3154001178080A220001280000B0100000040000243AD +S315400117900100000080A22000128000040100000028 +S315400117A081C7E00881E800007FFFC07C91E8200501 +S315400117B07FFFC07A0100000030BFFFF57FFFC07791 +S315400117C09010200330BFFFEBD327BFE87FFFC073E4 +S315400117D090102002D307BFE810BFFFDAD107BFEC54 +S315400117E0D327BFE87FFFC06D90102001D307BFE824 +S315400117F010BFFFC6D107BFEC9DE3BFA07FFFFF9E91 +S31540011800210000047FFFFF9E901200107FFFFF9A88 +S3154001181001000000808A001012800004B0102000F0 +S3154001182081C7E00881E80000400002669010200070 +S315400118307FFFC07601000000912A20047FFFC0503F +S31540011840900220087FFFFF9F81E800000100000011 +S3154001185019100080981321201110020092102000C7 +S31540011860150FF76C9412A3D7D03B0000D423200860 +S31540011870C11B0000C503200887A089220100000082 +S3154001188089A005408DA0892281A8CA2601000000B1 +S3154001189033800003901020009010200181C3E0089E +S315400118A001000000C11A0000C51A400089A0084283 +S315400118B081C3E008C93A8000C11A0000C51A400038 +S315400118C089A0094281C3E008C93A80001910008005 +S315400118D098132120D0230000D2232008C103000001 +S315400118E0C303200885A00D2181C3E008C53A8000C5 +S315400118F0C11A0000C51A400089A009C2C93A800030 +S3154001190081C3E00801000000C11A000085A005401E +S31540011910C53A400081C3E008010000000100000013 +S31540011920010000000100000001000000010000006C +S31540011930010000000100000001000000010000005C +S31540011940010000000100000001000000010000004C +S31540011950010000000100000001000000010000003C +S31540011960010000000100000001000000010000002C +S31540011970010000000100000001000000010000001C +S31540011980010000000100000001000000010000000C +S3154001199001000000010000000100000081A00020BC +S315400119A081C3E00801000000C11A000081C3E008BC +S315400119B001000000C51A000089A009C2C93A4000C9 +S315400119C081C3E008010000001310008092126120DB +S315400119D0D0224000C102400085A01900C53A40000E +S315400119E081C3E008D01A4000131000809212612092 +S315400119F0D0224000C102400085A01880C522400087 +S31540011A0081C3E008D0024000151000809412A12045 +S31540011A10D03A8000C11A800085A01A40C5228000B4 +S31540011A2081C3E008D0028000151000809412A120E5 +S31540011A30D0228000C102800085A01A20C5228000E4 +S31540011A4081C3E008D0028000151000809412A120C5 +S31540011A50D0228000C102800081A01920C13A8000B5 +S31540011A6081C3E008D01A8000151000809412A1208D +S31540011A70D03A8000C11A800081A018C0C1228000DE +S31540011A8081C3E008D0028000151000809412A12085 +S31540011A90D0228000CB0280008DA00025CD2280007F +S31540011AA081C3E008D0028000151000809412A12065 +S31540011AB0D0228000CB0280008DA000A5CD228000DF +S31540011AC081C3E008D0028000151000809412A12045 +S31540011AD0D0228000CB0280008DA00125CD2280003E +S31540011AE081C3E008D002800019100080981321209C +S31540011AF0D03B0000D43B2008C11B0000C51B200879 +S31540011B0081A80A420100000033800009901020009C +S31540011B1029800007901020012D8000059010200299 +S31540011B202F8000039010200391D0200081C3E0084C +S31540011B30010000001910008098132120D03B0000BD +S31540011B40D43B2008C11B0000C51B200881A80AC23E +S31540011B500100000033BFFFF69010200029BFFFF4BB +S31540011B60901020012DBFFFF2901020022FBFFFF0F1 +S31540011B709010200391D02000191000809813212045 +S31540011B80D0230000D2232008C1030000C30320084C +S31540011B9081A80A210100000033BFFFE59010200013 +S31540011BA029BFFFE3901020012DBFFFE190102002D5 +S31540011BB02FBFFFDF9010200391D020001910008025 +S31540011BC098132120D0230000D2232008C10300000E +S31540011BD0C303200881A80AA10100000033BFFFD436 +S31540011BE09010200029BFFFD2901020012DBFFFD0B9 +S31540011BF0901020022FBFFFCE9010200391D02000DD +S31540011C001910008098132120D03B0000D43B2008B6 +S31540011C10C11B0000C51B200889A008C2C93B0000A2 +S31540011C2081C3E008D01B00001910008098132120C1 +S31540011C30D0230000D2232008C1030000C30320089B +S31540011C4085A00821C523000081C3E008D003000018 +S31540011C501910008098132120D0230000D223200898 +S31540011C60C1030000C303200885A008A1C5230000C5 +S31540011C7081C3E008D0030000191000809813212089 S31540011C80D0230000D2232008C1030000C30320084B -S31540011C9081A80A210100000033BFFFE59010200012 -S31540011CA029BFFFE3901020012DBFFFE190102002D4 -S31540011CB02FBFFFDF9010200391D020001910008024 -S31540011CC098132178D0230000D2232008C1030000B5 -S31540011CD0C303200881A80AA10100000033BFFFD435 -S31540011CE09010200029BFFFD2901020012DBFFFD0B8 -S31540011CF0901020022FBFFFCE9010200391D02000DC -S31540011D001910008098132178D03B0000D43B20085D -S31540011D10C11B0000C51B200889A008C2C93B0000A1 -S31540011D2081C3E008D01B0000191000809813217868 -S31540011D30D0230000D2232008C1030000C30320089A -S31540011D4085A00821C523000081C3E008D003000017 -S31540011D501910008098132178D0230000D22320083F -S31540011D60C1030000C303200885A008A1C5230000C4 -S31540011D7081C3E008D0030000191000809813217830 -S31540011D80D0230000D2232008C1030000C30320084A -S31540011D9085A00921C523000081C3E008D0030000C6 -S31540011DA01910008098132178D0230000D2232008EF -S31540011DB0C1030000C303200885A009A1C523000073 -S31540011DC081C3E008D00300001910008098132178E0 -S31540011DD0D0230000C103000083A00520C3230000D7 -S31540011DE081C3E008D0030000131000809212619075 -S31540011DF0C51A6008C11A400089A0084091A108C2CD -S31540011E0095A209C495A2894281C3E008D53A00004A -S31540011E1013100080921261B0C1024000C3026004F7 -S31540011E2085A0082087A088A189A0C9A289A10921E6 -S31540011E3081C3E008C92200009610200213100080D9 -S31540011E4092126190151000809412A190D502400023 -S31540011E50D7028000D5220000D8020000131000806E -S31540011E60921261B096A2E00112BFFFF90100000093 -S31540011E7081C3E008010000001310008092126190B6 -S31540011E80151000809412A1B0C1028000C51A6010DD -S31540011E9083A0082089A088C08BA109A18DA10942F0 -S31540011EA08FA1492691A0054681C3E008D13A000099 -S31540011EB01110008090122188C11A0000C51A000035 -S31540011EC0C91A0000CD1A0000D11A0000D51A000027 -S31540011ED0D91A0000DD1A0000E11A0000E51A0000D7 -S31540011EE0E91A0000ED1A0000F11A0000F51A000087 -S31540011EF0F91A0000FD1A000081C3E0080100000044 -S31540011F0029100080A815215827100080A614E1C089 -S31540011F10C12CC000E604C000A134E00EA00C20078D -S31540011F20A0A42002AE1020002D100080AC15A1C047 -S31540011F30AE05E001AC05A008C1358000C12D000009 -S31540011F40EA050000AB35600DAA8D600112BFFFF9AD -S31540011F5001000000808000100280002F2B3C1FFFF3 -S31540011F60AA1563FFA60CC015E6250000C10D0000A9 -S31540011F702B100080AA1561CC2D100047AC15A3E0AB -S31540011F80AE25E001E0054000E025800081D8200033 -S31540011F9001000000010000000100000001000000F6 -S31540011FA001000000010000000100000001000000E6 -S31540011FB001000000010000000100000001000000D6 -S31540011FC001000000010000000100000001000000C6 -S31540011FD001000000010000000100000001000000B6 -S31540011FE00000000080A5C00012BFFFE6AA056008F8 -S31540011FF0C12D0000E60500002B03C000A614C01544 -S31540012000E6250000C10D000081C4400081CC80005E -S315400120100100000081C4800081CCA00401000000C1 -S315400120200100000081C3E008915800000100000052 -S315400120301110008090122158C10A0000C0220000F0 -S31540012040C10A0000C12A0000D40200001300038027 -S31540012050942A800980A0000A3280004D9010200306 -S315400120601303E000D223BFA0C023BFA4C10BBFA06E -S31540012070C023BFA0151000809412A170C102800038 -S315400120800100000001000000C10BBFA0C10BBFA4AD -S3154001209083A00520C12BBFA0D003BFA0808A220008 -S315400120A02280003B901020049010200015100080E3 -S315400120B09412A140C5028000C902A008D102A00C19 -S315400120C01310008092126170C70240008DA08944AE -S315400120D081A98AC8010000000380000501000000B3 -S315400120E0901020011080002A01000000C5028000E6 -S315400120F0C902A008D102A00C13100080921261708F -S31540012100CB0240008DA0894481A98AC80100000004 -S315400121100380000501000000901020011080001C82 -S315400121200100000025100080A414A168C11C800094 -S31540012130C51C800080A000003280000685A008C032 -S3154001214081A80AC2010000001380000301000000BB -S31540012150901020050100000025100080A414A168FC -S31540012160C11C8000C51C800080A000000100000049 -S315400121703280000685A008C081A80AC2010000007D -S3154001218013800003010000009010200701000000A9 -S3154001219081C3E00801000000901020019544000031 -S315400121A09532A01E940AA00380A2800002800040BE -S315400121B09010200080A2A0030280003D13100080F1 -S315400121C0921261F0C11A4000C51A6008FD026018FA -S315400121D095A0003E99A0003E9DA0003E170000C07C -S315400121E09612E078A182C0000100000001000000C3 -S315400121F00100000001000000010000000100000094 -S3154001220081A0002083A0002195A0002A99A0002C3E -S315400122109DA0002E170000C09612E07CA182C0004E -S315400122200100000001000000010000000100000063 -S31540012230010000000100000085A0002287A00023C4 -S31540012240A180000001000000010000000100000023 -S3154001225001000000010000000100000089A00842C1 -S31540012260A9A2883ED93A4000DD224000CD1A60102D -S31540012270D102600881A90A46010000000380000CD2 -S3154001228081AD0A2801000000038000099344000043 -S315400122909332601B920A60079010200080A2A00131 -S315400122A002800003902260079022600481C3E00807 -S315400122B001000000C12BBFA081C3E008D003BFA02D -S315400122C0D023BFA081C3E008C10BBFA0010000001D -S315400122D09DE3BF6040001B17B0102000913A200AD1 -S315400122E0900A200380A220011280111101000000F2 -S315400122F07FFFBBBE9010200D190C40291B23CD1B1F -S315400123009410200096102000981320069A13609B83 -S31540012310D43FBFE0D43FBFC0D43FBFE87FFFFF42B9 -S31540012320D83FBFF0900A3000032804009012208065 -S315400123308210600FC22200001B1000479002200449 -S315400123409A1363009A234008191000009B3B6002D0 -S31540012350032784009A13400C82106010C222200485 -S315400123607FFFFED4DA2200007FFFFFD61103E00093 -S315400123702D100080C025A1C07FFFFDD49010200004 -S31540012380809200091280000601000000C205A1C02A -S3154001239080A0600002800004010000007FFFBB981E -S315400123A09010200B7FFFFDC990103FFA03300600C5 -S315400123B080A200011280000480A2600002800EDB30 -S315400123C0010000007FFFBB8E9010200B7FFFFDBFF9 -S315400123D09010201403100D0080A200011280000409 -S315400123E080A2600002800ECC010000007FFFBB840A -S315400123F09010200B7FFFFDB5901020620310162030 -S3154001240080A200011280000480A2600002800EBDFD -S31540012410010000007FFFBB7A9010200B7FFFFDB3C8 -S31540012420901020050310280080A2000112800006AA -S3154001243001000000C205A1C080A060000280000426 -S31540012440010000007FFFBB6E9010200B7FFFFF9DB8 -S315400124501103C000111C00007FFFFDAC921020004B -S31540012460031FFFFF821063FF80A200011280000A52 -S315400124701B000070C205A1C09A13601F190000100D -S315400124808208400D9813201080A0400C0280000560 -S31540012490113C00007FFFBB5A9010200C113C0000FC -S315400124A07FFFFD9A921020000320000080A20001C8 -S315400124B01280000A1B000070C205A1C09A13601F5A -S315400124C0190000108208400D9813201080A0400C7E -S315400124D002800004010000007FFFBB499010200CE0 -S315400124E0C025A1C0901020007FFFFD8892102000DA -S315400124F080A220001280000601000000C205A1C092 -S3154001250080A0600002800005110144007FFFBB3CB2 -S315400125109010200C11014400132840009012230210 -S315400125207FFFFD7A9212600180A220001280000690 -S3154001253001000000C205A1C080A060002280000504 -S315400125401111FFFF7FFFBB2E9010200C1111FFFFD1 -S315400125507FFFFD76901223FF0300007F821063FF09 -S3154001256080A200011280000601000000C205A1C040 -S3154001257080A06000028000052F1000857FFFBB20F0 -S315400125809010200C2F1000857FFFFD60D01DE0C804 -S31540012590031FFFFF821063FF80A200011280000A21 -S315400125A01B000070C205A1C09A13601F19000010DC -S315400125B08208400D9813201080A0400C028000052F -S315400125C0031000857FFFBB0E9010200C0310008581 -S315400125D0D01860D8C025A1C07FFFFD4C0100000086 -S315400125E00320000080A200011280000A1B00007037 -S315400125F0C205A1C09A13601F190000108208400D40 -S315400126009813201080A0400C028000051910008507 -S315400126107FFFBAFB9010200C19100085C025A1C080 -S315400126207FFFFD3AD01B20B8031FFFFF821063FFD7 -S3154001263080A200011280000A1B000070C205A1C0E1 -S315400126409A13601F190000108208400D981320103C -S3154001265080A0400C02800005331000857FFFBAE858 -S315400126609010200C33100085C025A1C07FFFFD27A7 -S31540012670D01E60F0C205A1C08330600E820860039F -S3154001268080A0600202800004211000807FFFBADC36 -S315400126909010200C7FFFFF0B1103C000111158044D -S315400126A0C02421C07FFFFD299012223403102B0044 -S315400126B08210624680A200011280000503200000BC -S315400126C080A2400102800FC5010000007FFFBACC05 -S315400126D09010200D113C02AF7FFFFD1C901220D1BE -S315400126E0033180558210639A80A200011280000551 -S315400126F00308000080A2400102800FDB01000000B8 -S315400127007FFFBABF9010200D1111FC007FFFFD170E -S3154001271092102000031FE00080A200011280000AEF -S315400127201B000070C205A1C09A13601F190000105A -S315400127308208400D9813200880A0400C02800005B5 -S3154001274011207C017FFFBAAE9010200D11207C0133 -S31540012750C025A1C0901220307FFFFD041300010067 -S315400127600320000080A200011280000A1B000070B5 -S31540012770C205A1C09A13601F190000108208400DBE -S315400127809813200480A0400C028000040100000040 -S315400127907FFFBA9B9010200DC025A1C0901020004C -S315400127A07FFFFCF29210200080A2200012800006DA -S315400127B001000000C205A1C080A0600002800004A3 -S315400127C0010000007FFFBA8E9010200D7FFFFCE7CD -S315400127D0D01DE0C803100085DA0060C080A2000D5C -S315400127E01280000601000000C205A1C080A0600061 -S315400127F0028000051B1000857FFFBA819010200DD5 -S315400128001B1000857FFFFCD9D01B60D0031FE00061 -S3154001281080A200011280000601000000C205A1C08D -S3154001282080A0600002800005031000857FFFBA7416 -S315400128309010200D031000857FFFFCCCD01860B8A6 -S3154001284003100085DA0060A880A2000D1280000AFC -S315400128501B000070C205A1C09A13601F1900001029 -S315400128608208400D9813201080A0400C028000047D -S31540012870010000007FFFBA629010200DC025A1C063 -S315400128807FFFFCBAD01E60F0C205A1C08330600E46 -S315400128908208600380A06002028000042310008049 -S315400128A07FFFBA579010200D7FFFFE861103E0008F -S315400128B02108C6AF901420DEC02461C07FFFFCB35F -S315400128C0A01420DE80A20010128000060100000044 -S315400128D0C20461C080A06000028000052108C6AF25 -S315400128E07FFFBA479010200E2108C6AF7FFFFCB785 -S315400128F0901420DEA01420DE80A200101280000673 -S3154001290001000000C205A1C080A060002280000530 -S315400129101128C6AF7FFFBA3A9010200E1128C6AFD4 -S315400129207FFFFCAA901220DE0308C6AF821060DE4C -S3154001293080A200011280000601000000C205A1C06C -S3154001294080A06000228000051108C6AF7FFFBA2C27 -S315400129509010200E1108C6AF7FFFFC94901220DE26 -S315400129600328C6AF821060DE80A2000112800006F5 -S3154001297001000000C205A1C080A0600022800005C0 -S315400129801128C6AF7FFFBA1E9010200E1128C6AF80 -S315400129907FFFFC86901220DE0308C6AF821060DE00 -S315400129A080A200011280000601000000C205A1C0FC -S315400129B080A0600002800004010000007FFFBA1081 -S315400129C09010200E7FFFFE3F1103E00011151BC042 -S315400129D01310C82115351BC01710C82190122103A9 -S315400129E0921261419412A1037FFFFC809612E1414C -S315400129F080A220021280000601000000C205A1C08B -S31540012A0080A060000280000511351BC07FFFB9FC24 -S31540012A109010200F11351BC01310C82115151BC06E -S31540012A201710C82190122103921261419412A103F9 -S31540012A307FFFFC6E9612E14180A2200112800006C2 -S31540012A4001000000C205A1C080A06000028000050F -S31540012A50901020007FFFB9EA9010200F90102000BF -S31540012A6092102000152000007FFFFC609610200088 -S31540012A7080A220001280000601000000C205A1C00C -S31540012A8080A0600002800005191000857FFFB9DC37 -S31540012A909010200F191000851B100085D01B20D0E7 -S31540012AA07FFFFC52D41B60D880A220021280000610 -S31540012AB001000000C205A1C080A06000028000059F -S31540012AC011151BC07FFFB9CE9010200F11151BC0E9 -S31540012AD01310C82115151BE81710C82190122103A0 -S31540012AE0921261419412A1037FFFFC409612E1418B -S31540012AF080A220011280000601000000C205A1C08B -S31540012B0080A060000280000511151BE87FFFB9BC5B -S31540012B109010200F11151BE81310C82115151BC065 -S31540012B201710C82190122103921261419412A103F8 -S31540012B307FFFFC2E9612E14180A220021280000600 -S31540012B4001000000C205A1C080A06000028000050E -S31540012B5011151BE87FFFB9AA9010200F11151BE82C -S31540012B601310C82190122103921261417FFFFC1F6D -S31540012B70D41DE0C880A22003128000060100000097 -S31540012B80C205A1C080A06000028000050310008537 -S31540012B907FFFB99B9010200F0310008511151BE88C -S31540012BA01310C82190122103921261417FFFFC0F3D -S31540012BB0D41860B880A220031280000A1B0000705E -S31540012BC0C205A1C09A13601F190000108208400D6A -S31540012BD09813201080A0400C0280000511151BE8B7 -S31540012BE07FFFB9879010200F11151BE81310C821DC -S31540012BF0C025A1C090122103921261417FFFFBFBC8 -S31540012C00D41E60F080A2200212800006010000005E -S31540012C10C205A1C080A060000280000515151BE811 -S31540012C207FFFB9779010200F15151BE81710C821A3 -S31540012C30D01E60F09412A1037FFFFBEC9612E14196 -S31540012C4080A220011280000601000000C205A1C039 -S31540012C5080A060000280000515151BE87FFFB9685A -S31540012C609010200F15151BE81710C821D01DE0C87C -S31540012C709412A1037FFFFBDD9612E14180A220035E -S31540012C801280000601000000C205A1C080A06000BC -S31540012C9002800005191000857FFFB9599010200F59 -S31540012CA01910008515151BE81710C821D01B20B82F -S31540012CB09412A1037FFFFBCD9612E14180A220032E -S31540012CC01280000A1B000070C205A1C09A13601F42 -S31540012CD0190000108208400D9813201080A0400C66 -S31540012CE00280000511151BC07FFFB9459010200FCA -S31540012CF011151BC01310C82115351BC01710C8214B -S31540012D00C025A1C090122103921261419412A103E0 -S31540012D107FFFFBC99612E14180A220021280000684 -S31540012D2001000000C205A1C080A06000028000052C -S31540012D3011351BC07FFFB9329010200F11351BC0D2 -S31540012D401310C82115151BC01710C8219012210355 -S31540012D50921261419412A1037FFFFBB79612E141A2 -S31540012D6080A220011280000601000000C205A1C018 -S31540012D7080A0600002800005901020007FFFB920EE -S31540012D809010200F90102000921020001520000076 -S31540012D907FFFFBA99610200080A22000128000062A -S31540012DA001000000C205A1C080A0600002800005AC -S31540012DB01B1000857FFFB9129010200F1B10008554 -S31540012DC003100085D01B60D07FFFFB9BD41860D8D1 -S31540012DD080A220021280000601000000C205A1C0A7 -S31540012DE080A060000280000511151BC07FFFB90459 -S31540012DF09010200F11151BC01310C82115151BE883 -S31540012E001710C82190122103921261419412A10315 -S31540012E107FFFFB899612E14180A2200112800006C4 -S31540012E2001000000C205A1C080A06000028000052B -S31540012E3011151BE87FFFB8F29010200F11151BE802 -S31540012E401310C82115151BC01710C8219012210354 -S31540012E50921261419412A1037FFFFB779612E141E1 -S31540012E6080A220021280000601000000C205A1C016 -S31540012E7080A060000280000511151BE87FFFB8E0C5 -S31540012E809010200F11151BE81310C8219012210331 -S31540012E90921261417FFFFB68D41DE0C880A22003E6 -S31540012EA01280000A1B000070C205A1C09A13601F60 -S31540012EB0190000108208400D9813201080A0400C84 -S31540012EC002800005191000857FFFB8CD9010200FB4 -S31540012ED01910008511151BE81310C8219012210302 -S31540012EE0921261417FFFFB54D41B20B880A220037C -S31540012EF01280000A1B000070C205A1C09A13601F10 -S31540012F00190000108208400D9813201080A0400C33 -S31540012F100280000511151BE87FFFB8B99010200FFC -S31540012F2011151BE81310C821C025A1C09012210319 -S31540012F30921261417FFFFB40D41E60F080A22002C5 -S31540012F401280000601000000C205A1C080A06000F9 -S31540012F500280000515151BE87FFFB8A99010200FC8 -S31540012F6015151BE81710C821D01E60F09412A10355 -S31540012F707FFFFB319612E14180A2200112800006BB -S31540012F8001000000C205A1C080A0600002800005CA -S31540012F9015151BE87FFFB89A9010200F15151BE8F1 -S31540012FA01710C821D01DE0C89412A1037FFFFB2250 -S31540012FB09612E14180A220031280000A1B00007094 -S31540012FC0C205A1C09A13601F190000108208400D66 -S31540012FD09813201080A0400C028000051B1000852C -S31540012FE07FFFB8879010200F1B10008515151BE831 -S31540012FF01710C821D01B60B89412A1037FFFFB0EA6 -S315400130009612E14180A220031280000A1B00007043 -S31540013010C205A1C09A13601F190000108208400D15 -S315400130209813201080A0400C02800005110048EA48 -S315400130307FFFB8739010200F110048EA13048D15D5 -S31540013040C025A1C0901223CD7FFFFB0C921262785E -S3154001305080A220011280000601000000C205A1C025 -S3154001306080A0600002800005110048EA7FFFB86435 -S315400130709010200F110048EA13048D15901223CDAC -S315400130807FFFFB0F9212627880A220011280000618 -S3154001309001000000C205A1C080A0600002800004BA -S315400130A0010000007FFFB8569010200FC025A1C037 -S315400130B07FFFFC841103C000291001449007BFF033 -S315400130C09207BFE87FFFFA3894152120C207BFF067 -S315400130D0DA05212080A0400D1280000782152120AB -S315400130E0DA006004C207BFF480A0400D02800D598A -S315400130F0010000007FFFB842901020103710008574 -S315400131009007BFF09216E0E07FFFFA279415212041 -S31540013110C206E0E0DA05212080A340018215212084 -S31540013120128000079816E0E0DA006004C20320042A -S3154001313080A3400102800D42010000007FFFB830AC -S31540013140901020109007BFF09215E0C87FFFFA1645 -S3154001315094152120C205E0C8DA05212080A340014B -S3154001316082152120128000079815E0C8DA00600414 -S31540013170C203200480A3400102800D2C01000000FF -S315400131807FFFB81F9010201003100085921060B881 -S315400131909007BFF07FFFFA04941521201B000070B1 -S315400131A0C205A1C09A13601F190000108208400D84 -S315400131B09813201080A0400C028000042110014485 -S315400131C07FFFB80F9010201003100080C02061C00F -S315400131D07FFFFC3C901020001310008594142120A1 -S315400131E0921260B87FFFF9F09007BFF03910008561 -S315400131F0C20720B0DA04212080A340019414212083 -S3154001320012800007821720B0DA02A004C2006004CF -S3154001321080A3400102800004010000007FFFB7F84F -S31540013220901020107FFFFC271103C0009007BFF0CC -S31540013230921660F07FFFF9DC94152120C205A1C0EA -S315400132408330600E8208600380A060022110014431 -S3154001325002800004231000807FFFB7E99010201000 -S3154001326094142120C02461C09007BFE87FFFF9CEA6 -S315400132709207BFF0DA042120C207BFF080A34001C4 -S315400132801280000794142120DA02A004C207BFF479 -S3154001329080A3400102800D21010000007FFFB7D8C5 -S315400132A0901020109007BFE89216E0E07FFFF9BE2C -S315400132B094152120C206E0E0DA05212080A34001D1 -S315400132C082152120128000079816E0E0DA0060049A -S315400132D0C203200480A3400102800D0B01000000BF -S315400132E07FFFB7C7901020109007BFE89215E0C83E -S315400132F07FFFF9AD94152120C205E0C8DA052120EA -S3154001330080A3400182152120128000079815E0C84C -S31540013310DA006004C203200480A3400102800CF558 -S31540013320010000007FFFB7B69010201019100085EC -S31540013330921320B89007BFE87FFFF99B941521208F -S315400133401B000070C205A1C09A13601F190000102E -S315400133508208400D9813201080A0400C0280000482 -S31540013360211001447FFFB7A6901020107FFFFBD5A7 -S31540013370901020001310008594142120921260B8F9 -S315400133807FFFF9899007BFE8C20720B0DA04212000 -S3154001339080A340019414212012800007821720B097 -S315400133A0DA02A004C200600480A340010280000446 -S315400133B0010000007FFFB792901020107FFFFBC1F4 -S315400133C01103C0009007BFE8921660F07FFFF976BF -S315400133D094152120C205A1C08330600E8208600386 -S315400133E080A0600221100144028000042310008065 -S315400133F07FFFB7839010201094142120C02461C010 -S315400134009016E0E07FFFF9689207BFF0C206E0E060 -S31540013410DA04212080A34001941421201280000760 -S315400134208216E0E0DA02A004C200600480A34001F3 -S3154001343002800CAB010000007FFFB7719010201095 -S315400134409016E0E09207BFE87FFFF95794152120D7 -S31540013450C206E0E0DA05212080A340018215212041 -S31540013460128000079816E0E0DA006004C2032004E7 -S3154001347080A3400102800C95010000007FFFB760E8 -S31540013480901020101B100085901360D092100008F8 -S315400134907FFFF9459415212019100085C20320D0DC -S315400134A0DA05212080A340018215212012800007E0 -S315400134B0981320D0DA006004C203200480A340019F -S315400134C002800C7D010000007FFFB74D9010201057 -S315400134D01B100085901360D8921000087FFFF932C7 -S315400134E09415212019100085C20320D8DA05212020 -S315400134F080A340018215212012800007981320D80D -S31540013500DA006004C203200480A3400102800C65F6 -S31540013510010000007FFFB73A901020101B10008574 -S3154001352003100085901360D8921060D07FFFF91E7A -S31540013530941521201B000070C205A1C09A13601F7B -S31540013540190000108208400D9813201080A0400CED -S3154001355002800004211001447FFFB72990102010FA -S315400135607FFFFB5890102000111000851310008535 -S3154001357094142120901220D87FFFF90B921260D02B -S31540013580C20720B0DA04212080A3400194142120EF -S3154001359012800007821720B0DA02A004C20060043C -S315400135A080A3400102800004010000007FFFB714A0 -S315400135B0901020107FFFFB431103C00019100085B6 -S315400135C01B100085901320D0921360D8C025A1C04E -S315400135D07FFFF8F594152120C20720B0DA05212096 -S315400135E080A340018215212012800007981720B040 -S315400135F0DA006004C203200480A3400102800C1F4C -S315400136001B0000707FFFB6FE901020109016E0E080 -S31540013610921660F07FFFF8E494152120C205A1C0FF -S315400136208330600E8208600380A06002211001444D -S3154001363002800004231000807FFFB6F19010201015 -S3154001364094142120C02461C09015E0C87FFFF8D6AC -S315400136509207BFF0C205E0C8DA04212080A34001E9 -S3154001366094142120128000078215E0C8DA02A004D2 -S31540013670C200600480A3400102800B9C010000004F -S315400136807FFFB6DF901020109015E0C89207BFE883 -S315400136907FFFF8C594152120C205E0C8DA0521202F -S315400136A080A3400182152120128000079815E0C8A9 -S315400136B0DA006004C203200480A3400102800B8625 -S315400136C0010000007FFFB6CE901020109015E0C893 -S315400136D09216E0E07FFFF8B494152120C205E0C8B8 -S315400136E0DA05212080A3400182152120128000079E -S315400136F09815E0C8DA006004C203200480A34001A3 -S3154001370002800B70010000007FFFB6BD90102010B3 -S315400137109015E0C8921000087FFFF8A39415212068 -S31540013720C205E0C8DA05212080A340018215212087 -S31540013730128000079815E0C8DA006004C20320042D -S3154001374080A3400102800B5A010000007FFFB6AC06 -S315400137509010201003100085921060B89015E0C8B3 -S315400137607FFFF8919415212003000070A610601F79 -S31540013770DA05A1C0030000109A0B4013AA1060108D -S3154001378080A34015231000852510014402800004C2 -S31540013790211000807FFFB69A90102010C02421C0CE -S315400137A0901460B89207BFF07FFFF87F9414A12070 -S315400137B0C20421C08208401380A040150280000443 -S315400137C0010000007FFFB68E90102010C02421C05A -S315400137D0901460B89207BFE87FFFF8739414A12054 -S315400137E0C20421C08208401380A040150280000413 -S315400137F0010000007FFFB68290102010C02421C036 -S31540013800901460B89216E0E07FFFF8679414A12007 -S31540013810C20421C08208401380A0401502800005E1 -S31540013820131000857FFFB676901020101310008587 -S31540013830C02421C0921260C8901460B87FFFF85A24 -S315400138409414A120C20421C08208401380A04015CF -S3154001385002800005901460B87FFFB6699010201071 -S31540013860901460B8C02421C0921000087FFFF84E22 -S315400138709414A120C20421C08208401380A040159F -S3154001388002800004010000007FFFB65D9010201009 -S31540013890C02421C0901460B8921660F07FFFF842B0 -S315400138A09414A120C20421C08330600E82086003B3 -S315400138B080A06002228000051103C0007FFFB65040 -S315400138C0901020101103C0007FFFFA7E3B10008448 -S315400138D0A2176210C02421C0AA14A120A40460101A -S315400138E0A0102000A6046008B010200C920400131A -S315400138F0900400117FFFF82C94152120DA048010E2 -S3154001390098040012C2052120A004201880A340017A -S315400139101280000790102010DA032004C2056004CB -S3154001392080A3400122800005B0863FFF7FFFB63469 -S3154001393001000000B0863FFF1CBFFFEE920400135A -S31540013940C205A1C080A06000128009890100000063 -S315400139501110008490122348920220087FFFF8122A -S315400139609415212098176210C2052120DA032148B7 -S3154001397080A340011280000782152120DA03214CE1 -S31540013980C200600480A3400122800AAB031000807C -S315400139907FFFB61B901020101110008490122360F7 -S315400139A0920220087FFFF800941521209817621093 -S315400139B0C2052120DA03216080A34001128000075D -S315400139C082152120DA032164C200600480A34001EC -S315400139D002800AA41B0000707FFFB60990102010D8 -S315400139E01110008490122378920220087FFFF7EE8F -S315400139F09415212098176210C2052120DA032178F7 -S31540013A0080A340011280000782152120DA03217C20 -S31540013A10C200600480A3400102800A9C1B00007022 -S31540013A207FFFB5F790102010C025A1C011100000EE -S31540013A3092102000150FFC007FFFF8B2961020006F -S31540013A40030FFC0080A200011280000880A26000E2 -S31540013A501280000601000000C205A1C080A06000DE -S31540013A6002800005111000007FFFB5E5901020107F -S31540013A701110000092102000152FFC007FFFF8A1C5 -S31540013A80961020000310020080A200011280000857 -S31540013A9080A260001280000601000000C205A1C09C -S31540013AA080A0600002800005113000007FFFB5D480 -S31540013AB0901020101130000092102000150FFC00CC -S31540013AC07FFFF890961020000330020080A200018B -S31540013AD01280000880A260001280000601000000EA -S31540013AE0C205A1C080A0600002800005113000001F -S31540013AF07FFFB5C3901020101130000092102000B6 -S31540013B00152FFC007FFFF87F96102000032FFC0045 -S31540013B1080A200011280000880A260001280000687 -S31540013B2001000000C205A1C080A06000028000051E -S31540013B30111000007FFFB5B2901020101110000047 -S31540013B407FFFF87A130FE0000310100080A20001F6 -S31540013B501280000601000000C205A1C080A06000DD -S31540013B6002800005111000007FFFB5A590102010BE -S31540013B70111000007FFFF877130FE000030FE000FC -S31540013B8080A200011280000601000000C205A1C00A -S31540013B9080A0600022800005191000857FFFB5983E -S31540013BA09010201019100085921320E8C025A1C05D -S31540013BB09007BFF07FFFF78F9415212019100085DC -S31540013BC0C20320D8DA05212080A340018215212095 -S31540013BD012800007981320D8DA006004C20320043B -S31540013BE080A3400102800A461B0000707FFFB58416 -S31540013BF0901020111B100085921360D0C025A1C0E2 -S31540013C009007BFF07FFFF77B94152120C207BFE0E5 -S31540013C10DA05212080A34001128000078215212068 -S31540013C20DA006004C207BFE480A3400102800A3E75 -S31540013C30010000007FFFB572901020119007BFF080 -S31540013C409215E0C87FFFF76B94152120C205E0C8A5 -S31540013C50DA05212080A34001821521201280000728 -S31540013C609815E0C8DA006004C203200480A340012D -S31540013C7002800A32010000007FFFB56190102011D9 -S31540013C8003100085921060B89007BFF07FFFF75987 -S31540013C9094152120C20720B0DA05212080A34001D6 -S31540013CA08215212012800007981720B0DA0060049F -S31540013CB0C203200480A3400102800A251B00007034 -S31540013CC07FFFB54F901020119007BFF0921660F01C -S31540013CD07FFFF74894152120C205A1C01B00007043 -S31540013CE08208400D1900002080A0400C211001449B -S31540013CF002800004231000807FFFB54190102011FF -S31540013D0094142120C02461C09007BFE87FFFF73992 -S31540013D109207BFF0DA042120C207BFE880A3400121 -S31540013D201280000794142120DA02A004C207BFECD6 -S31540013D3080A3400102800A10010000007FFFB530D8 -S31540013D409010201119100085901320E89207BFE0CA -S31540013D507FFFF72894152120C20720B0DA052120DC -S31540013D6080A340018215212012800007981720B0B8 -S31540013D70DA006004C203200480A3400102800A03E2 -S31540013D801B0000707FFFB51E901020111B1000858F -S31540013D9003100085901360E8921060D0C025A1C041 -S31540013DA07FFFF7149415212019100085C20320E8DE -S31540013DB0DA05212080A340018215212012800007C7 -S31540013DC0981320E8DA006004C203200480A340016E -S31540013DD0028009F8010000007FFFB509901020110B -S31540013DE09007BFE89215E0C87FFFF702941521209E -S31540013DF0C205E0C8DA05212080A3400182152120B1 -S31540013E00128000079815E0C8DA006004C203200456 -S31540013E1080A34001028009EC010000007FFFB4F855 -S31540013E20901020071B100085921360B89007BFE8D9 -S31540013E307FFFF6F09415212025000070D805A1C01A -S31540013E409A14A01F03000010980B000D82106010F9 -S31540013E5080A3000121100144028000042310008048 -S31540013E607FFFB4E790102011C02461C09007BFE8DE -S31540013E70921660F07FFFF6DF94142120C20461C0E0 -S31540013E80820840121B00002080A0400D22800005C0 -S31540013E90031000857FFFB4DA9010201103100085CE -S31540013EA0901060D894142120C02461C07FFFF6D1C0 -S31540013EB09207BFF019100085C20320D8DA042120E9 -S31540013EC080A340019414212012800007821320D838 -S31540013ED0DA02A004C200600480A34001028008B84F -S31540013EE0010000007FFFB4C6901020111B10008511 -S31540013EF003100085901360D8921060E87FFFF6BDED -S31540013F009415212019100085C20320D0DA052120FD -S31540013F1080A340018215212012800007981320D0EA -S31540013F20DA006004C203200480A34001028008A98C -S31540013F30010000007FFFB4B2901020119016E0E01E -S31540013F40921000087FFFF6AB94152120C20720B0DE -S31540013F50DA05212080A34001821521201280000725 -S31540013F60981720B0DA006004C203200480A3400100 -S31540013F700280089D1B0000707FFFB4A190102011A4 -S31540013F80C025A1C09016E0E09215E0C87FFFF699E2 -S31540013F9094152120C205E0C8DA05212080A34001FD -S31540013FA082152120128000079815E0C8DA006004C6 -S31540013FB0C203200480A3400102800894010000004E -S31540013FC07FFFB48F901020111B100085921360B8AB -S31540013FD09016E0E07FFFF68794152120C20720B0B6 -S31540013FE0DA05212080A34001821521201280000795 -S31540013FF0981720B0DA006004C203200480A3400170 -S31540014000028008871B0000707FFFB47D901020114D -S31540014010C025A1C09016E0E0921660F07FFFF675CC -S3154001402094152120C205A1C01B0000708208400DD5 -S315400140301900002080A0400C23100080028000045B -S31540014040211001447FFFB46E901020119414212059 -S31540014050C02461C09015E0C87FFFF6669207BFF0A5 -S31540014060C205E0C8DA04212080A34001941421202E -S31540014070128000078215E0C8DA02A004C20060047B -S3154001408080A340010280086F010000007FFFB45CFD -S31540014090901020119015E0C89207BFE87FFFF655B2 -S315400140A094152120C205E0C8DA05212080A34001EC -S315400140B082152120128000079815E0C8DA006004B5 -S315400140C0C203200480A3400102800863010000006E -S315400140D07FFFB44B901020119015E0C89216E0E096 -S315400140E07FFFF64494152120C205E0C8DA05212058 -S315400140F080A3400182152120128000079815E0C84F -S31540014100DA006004C203200480A3400102800857FC -S31540014110010000007FFFB43A901020119015E0C8CD -S31540014120921000087FFFF63394152120C205E0C89E -S31540014130DA05212080A34001821521201280000743 -S315400141409815E0C8DA006004C203200480A3400148 -S31540014150028007F3010000007FFFB429901020116F -S3154001416003100085921060B89015E0C87FFFF621D4 -S3154001417094152120C20720B0DA05212080A34001F1 -S315400141808215212012800007981720B0DA006004BA -S31540014190C203200480A34001028007E61B00007091 -S315400141A07FFFB417901020119015E0C8921660F069 -S315400141B07FFFF61094152120C205A1C03100007081 -S315400141C0820840183B00002080A0401D2310014476 -S315400141D002800004211000807FFFB4099010201155 -S315400141E019100085901320B89207BFF07FFFF601A2 -S315400141F094146120C20421C0AA16201F3500001064 -S3154001420082084015A616A01080A040130280000423 -S31540014210251000857FFFB3FA90102011C02421C0DC -S315400142209014A0B89207BFE87FFFF5F2941461207D -S31540014230C20421C08208401580A0401302800004B8 -S31540014240010000007FFFB3EE90102011C02421C071 -S315400142509014A0B89216E0E07FFFF5E69414612031 -S31540014260C20421C08208401580A040130280000587 -S31540014270131000857FFFB3E29010201113100085C3 -S31540014280C02421C0921260C89014A0B87FFFF5D90E -S3154001429094146120C20421C08208401580A04013B5 -S315400142A0028000059014A0B87FFFB3D5901020116D -S315400142B09014A0B8C02421C0921000087FFFF5CD0C -S315400142C094146120C20421C08208401580A0401385 -S315400142D002800005131000857FFFB3C9901020119D -S315400142E013100085C02421C09014A0B8921260F02A -S315400142F07FFFF5C094146120C20421C08208401892 -S3154001430080A0401D2280000515203E837FFFB3BC5F -S315400143109010201115203E83170021C89412A3FF47 -S315400143209612E3A1191FC0001B00C0009A1360B08A -S3154001433098132102D43FBFD0D83FBFD8C02421C053 -S315400143409007BFD89207BFD07FFFF5AA9407BFC891 -S31540014350DA07BFC8033FFC0080A340010280070B78 -S31540014360A207BFC87FFFB3A6901020111510868300 -S31540014370170021C89412A3FF9612E3A11900400029 -S315400143801B00C0009A1360B098132102D43FBFD0DE -S31540014390D83FBFD8C025A1C09007BFD89207BFD08C -S315400143A07FFFF5949407BFC8DA046004C207BFC80B -S315400143B08090400D1280000A1B000070C205A1C00A -S315400143C09A13601F190000108208400D98132004AB -S315400143D080A0400C22800005150FFC007FFFB388AA -S315400143E090102011150FFC00170281D89412A0409D -S315400143F09612E10C9A102010190006AFD43FBFD097 -S31540014400D83FBFD8C025A1C09007BFD89207BFD01B -S315400144107FFFF5789407BFC8030006AEDA07BFC829 -S315400144208210639580A340011280000703003A9AE7 -S31540014430DA0460048210630F80A3400102800733CF -S31540014440010000007FFFB36E90102011150FFFFF92 -S31540014450170281D89412A3409612E10C9A102010AB -S31540014460190006AFD43FBFD0D83FBFD8C025A1C0A1 -S315400144709007BFD89207BFD07FFFF55E9407BFC8AC -S31540014480DA046004C207BFC88090400D1280000A5A -S315400144901B000070C205A1C09A13601F19000010CD -S315400144A08208400D9813200480A0400C028000042D -S315400144B0010000007FFFB35290102011C025A1C01A -S315400144C0111088007FFFF63713100100031066C9EB -S315400144D0821062CA80A2000112800006010000001B -S315400144E0C205A1C080A06000028000051111BBFE7B -S315400144F07FFFB343901020111111BBFE901223FF91 -S315400145007FFFF628130C7040031527CA8210611EDF -S3154001451080A200011280000601000000C205A1C070 -S3154001452080A06000028000051310C7FF7FFFB334EF -S31540014530901020111310C7FF921263FC7FFFF619EA -S31540014540111E607E031D73FC8210633880A2000138 -S315400145501280000601000000C205A1C080A06000D3 -S3154001456002800005130FE0007FFFB3259010201154 -S31540014570130FE000921260017FFFF60A110020003E -S3154001458080A220001280000A1B000070C205A1C053 -S315400145909A13601F190000108208400D98132004D9 -S315400145A080A0400C02800005110FE0007FFFB3148C -S315400145B090102011110FE000C025A1C07FFFF5F931 -S315400145C092100008030FE00080A20001128000064D -S315400145D001000000C205A1C080A060000280000564 -S315400145E0130FE0007FFFB30690102011130FE00078 -S315400145F0921260017FFFF5EB1100200080A220009E -S315400146001280000A1B000070C205A1C09A13601FE8 -S31540014610190000108208400D9813200480A0400C18 -S31540014620028000051B1000857FFFB2F59010201116 -S315400146301B100085921360E8C025A1C09007BFF00A -S315400146407FFFF4DE9415212019100085C20320E86E -S31540014650DA05212080A3400182152120128000071E -S31540014660981320E8DA006004C203200480A34001C5 -S31540014670028006BA010000007FFFB2E190102012CD -S315400146801B100085921360D09007BFF07FFFF4CBDB -S315400146909415212019100085C20320D0DA05212066 -S315400146A080A340018215212012800007981320D053 -S315400146B0DA006004C203200480A34001028006ACF4 -S315400146C0010000007FFFB2CE901020129007BFF08C -S315400146D09215E0C87FFFF4B994152120C205E0C8C0 -S315400146E0DA05212080A3400182152120128000078E -S315400146F09815E0C8DA006004C203200480A3400193 -S31540014700028006A0010000007FFFB2BD901020127A -S315400147101B100085921360B89007BFF07FFFF4A786 -S3154001472094152120C20720B0DA05212080A340013B -S315400147308215212012800007981720B0DA00600404 -S31540014740C203200480A34001028006931B0000702F -S315400147507FFFB2AB901020129007BFF0921660F027 -S315400147607FFFF49694152120C205A1C01B0000705D -S315400147708208400D1900002080A0400C2110014400 -S3154001478002800004231000807FFFB29D901020120A -S3154001479094142120C02461C09007BFE87FFFF487AD -S315400147A09207BFF0DA042120C207BFE880A3400187 -S315400147B01280000794142120DA02A004C207BFEC3C -S315400147C080A34001028006DE010000007FFFB28C1B -S315400147D0901020120310008519100085901060E892 -S315400147E0921320D87FFFF47594152120C20720B07B -S315400147F0DA05212080A3400182152120128000077D -S31540014800981720B0DA006004C203200480A3400157 -S31540014810028006D01B0000707FFFB27990102012F3 -S31540014820C025A1C09007BFE89215E0C87FFFF46399 -S3154001483094152120C205E0C8DA05212080A3400154 -S3154001484082152120128000079815E0C8DA0060041D -S31540014850C203200480A34001028006C70100000074 -S315400148607FFFB267901024991B100085921360B8A0 -S315400148709007BFE87FFFF45194152120C20720B06D -S31540014880DA05212080A340018215212012800007EC -S31540014890981720B0DA006004C203200480A34001C7 -S315400148A0028006BA1B0000707FFFB255901020129D -S315400148B09007BFE8921660F07FFFF44094152120DF -S315400148C0C205A1C01B0000708208400D19000020DE -S315400148D080A0400C21100144028000042310008076 -S315400148E07FFFB2479010201294142120C02461C04A -S315400148F09016E0E07FFFF4319207BFF0C206E0E098 -S31540014900DA04212080A3400194142120128000075B -S315400149108216E0E0DA02A004C200600480A34001EE -S31540014920028006A4010000007FFFB23590102012DC -S315400149309016E0E09207BFE87FFFF420941521200E -S31540014940C20720B0DA05212080A34001821521202B -S3154001495012800007981720B0DA006004C2032004D1 -S3154001496080A34001028006981B0000707FFFB2249D -S3154001497090102012C025A1C09016E0E09215E0C823 -S315400149807FFFF40E94152120C205E0C8DA052120E7 -S3154001499080A3400182152120128000079815E0C8A6 -S315400149A0DA006004C203200480A340010280068F1E -S315400149B0010000007FFFB212901020120310008503 -S315400149C0921060B89016E0E07FFFF3FC9415212029 -S315400149D0C20720B0DA05212080A34001821521209B -S315400149E012800007981720B0DA006004C203200441 -S315400149F080A34001028006821B0000707FFFB20047 -S31540014A00901020129016E0E0921660F07FFFF3EBD3 -S31540014A1094152120C205A1C01B0000708208400DDB -S31540014A201900002080A0400C21100144028000049E -S31540014A30231000807FFFB1F29010201294142120A0 -S31540014A40C02461C09015E0C87FFFF3DC9207BFF038 -S31540014A50C205E0C8DA04212080A340019414212034 -S31540014A60128000078215E0C8DA02A004C200600481 -S31540014A7080A340010280061E010000007FFFB1E0D5 -S31540014A80901020129015E0C89207BFE87FFFF3CB44 -S31540014A9094152120C205E0C8DA05212080A34001F2 -S31540014AA082152120128000079815E0C8DA006004BB -S31540014AB0C203200480A340010280061201000000C7 -S31540014AC07FFFB1CF901020129015E0C89216E0E01A -S31540014AD07FFFF3BA94152120C205E0C8DA052120EB -S31540014AE080A3400182152120128000079815E0C855 -S31540014AF0DA006004C203200480A340010280060656 -S31540014B00010000007FFFB1BE901020129015E0C851 -S31540014B10921000087FFFF3A994152120C205E0C831 -S31540014B20DA05212080A34001821521201280000749 -S31540014B309815E0C8DA006004C203200480A340014E -S31540014B40028005FA010000007FFFB1AD90102012EE -S31540014B50191000859015E0C8921320B87FFFF3978E -S31540014B609415212003000070A610601FDA05A1C02C -S31540014B70030000109A0B4013AA10601080A3401541 -S31540014B802510008523100144028000042110008075 -S31540014B907FFFB19B90102012C02421C09014A0B871 -S31540014BA09207BFF07FFFF38594146120C20421C0B0 -S31540014BB08208401380A040150280000401000000D5 -S31540014BC07FFFB18F90102012C02421C09014A0B84D -S31540014BD09207BFE87FFFF37994146120C20421C094 -S31540014BE08208401380A040150280000401000000A5 -S31540014BF07FFFB18390102012C02421C09014A0B829 -S31540014C009216E0E07FFFF36D94146120C20421C047 -S31540014C108208401380A040150280000513100085CC -S31540014C207FFFB1779010201213100085C02421C058 -S31540014C30921260C89014A0B87FFFF360941461206B -S31540014C40C20421C08208401380A04015028000059D -S31540014C509014A0B87FFFB16A901020129014A0B8AA -S31540014C60C02421C0921000087FFFF35494146120A0 -S31540014C70C20421C08208401380A04015028000046E -S31540014C80010000007FFFB15E90102012C02421C0B8 -S31540014C909014A0B8921660F07FFFF34894146120F7 -S31540014CA0C20421C08330600E8208600380A0600286 -S31540014CB0228000051103C0007FFFB15190102012E0 -S31540014CC01103C0007FFFF57F3B100084A41763905A -S31540014CD0AA146120C02421C0A604A008A210200065 -S31540014CE0B0102005A00440129204401394152120CF -S31540014CF07FFFF33290100010DA042010C205212004 -S31540014D00A204601880A3400112800007901020126F -S31540014D10DA042014C205600480A3400102800474B1 -S31540014D20010000007FFFB13601000000B0863FFF61 -S31540014D303CBFFFEEA00440121110008590122020C6 -S31540014D40920220087FFFF31D941521209817639046 -S31540014D50C2052120DA0320A080A34001128000076A -S31540014D6082152120DA0320A4C200600480A34001F9 -S31540014D70028004DC1B0000707FFFB12190102012DD -S31540014D801110008590122038C025A1C0920220083A -S31540014D907FFFF30A9415212098176390C2052120BD -S31540014DA0DA0320B880A34001128000078215212032 -S31540014DB0DA0320BCC200600480A340010280047F64 -S31540014DC01B0000707FFFB10E90102012111000855C -S31540014DD090122050C025A1C0920220087FFFF2F711 -S31540014DE09415212098176390C2052120DA0320D01B -S31540014DF080A340011280000782152120DA0320D4C6 -S31540014E00C200600480A34001028004761B0000704A -S31540014E107FFFB0FB90102012111000859012206880 -S31540014E20C025A1C0920220087FFFF2E494152120FB -S31540014E3098176390C2052120DA0320E880A3400138 -S31540014E401280000782152120DA0320ECC20060049B -S31540014E5080A340010280046D1B0000707FFFB0E813 -S31540014E60901020121110008590122080C025A1C0FB -S31540014E70920220087FFFF2D1941521209817639062 -S31540014E80C2052120DA03210080A3400112800007D8 -S31540014E9082152120DA032104C200600480A3400167 -S31540014EA0028004641B0000707FFFB0D59010201271 -S31540014EB0C025A1C0111010007FFFF3B013100000F0 -S31540014EC00310300080A2000112800006010000009C -S31540014ED0C205A1C080A0600002800005111FE0004C -S31540014EE07FFFB0C790102012111FE0001310000081 -S31540014EF07FFFF2B794152120031FFC00DA0521201C -S31540014F0080A340011280000A82152120C20060045C -S31540014F1080A060001280000601000000C205A1C009 -S31540014F2080A0600002800005111FE0007FFFB0B441 -S31540014F309010201B111FE000133000007FFFF2A4E8 -S31540014F4094152120033FFC00DA05212080A340016E -S31540014F501280000A82152120C200600480A06000F0 -S31540014F601280000601000000C205A1C080A06000B9 -S31540014F7002800005111000007FFFB0A19010201C97 -S31540014F8011100000921020107FFFF29194152120FC -S31540014F90C205A1C01B0000708208400D1900002007 -S31540014FA080A0400C2110014402800004231000809F -S31540014FB07FFFB0939010201D94142120C02461C01E -S31540014FC0110020007FFFF282130FC000DA04212076 -S31540014FD0030E000080A340011280000A9414212090 -S31540014FE0C202A00480A060001280000601000000F9 -S31540014FF0C20461C080A0600002800005111FDFFF6E -S315400150007FFFB07F9010201E111FDFFF901223FFFC -S31540015010131000007FFFF26E941521200311FFFF4C -S31540015020821063FFDA05212080A340011280000728 -S3154001503082152120DA0060040338000080A3400174 -S3154001504002800405010000007FFFB06D9010201F13 -S31540015050111FD000130FF0007FFFF25D9415212040 -S315400150600311FC80DA05212080A340011280000A49 -S3154001507082152120C200600480A0600012800006D3 -S3154001508001000000C205A1C080A0600002800005A9 -S31540015090111FDFFF7FFFB05A90102021111FDFFF44 -S315400150A0901223FF921000087FFFF24994152120A8 -S315400150B00313FBFF821063FFDA05212080A3400121 -S315400150C01280000882152120DA00600403300000B6 -S315400150D08210602080A34001028003E401000000A9 -S315400150E07FFFB047901020207FFFF4761103C00068 -S315400150F0C025A1C09007BFE07FFFF2449215212051 -S31540015100C207BFE0DA05212080A3400112800007D3 -S3154001511082152120DA006004C207BFE480A3400162 -S31540015120028003D7010000007FFFB03590102013A5 -S315400151301B100085901360E87FFFF2349215212001 -S3154001514003100085DA0060E8C205212080A0400DE9 -S31540015150191000858215212012800007901320E83E -S31540015160DA006004C202200480A34001028003C920 -S31540015170010000007FFFB022901020131B10008514 -S31540015180901360D07FFFF2219215212019100085DE -S31540015190C20320D0DA05212080A3400182152120B7 -S315400151A012800007981320D0DA006004C20320045D -S315400151B080A34001028003BC010000007FFFB010C4 -S315400151C0901020131B100085901360D87FFFF20FBB -S315400151D092152120C20720B0DA05212080A3400183 -S315400151E08215212012800007981720B0DA0060044A -S315400151F0C203200480A34001028003B01B0000705B -S315400152007FFFAFFF9010201303100085901060B808 -S31540015210C025A1C07FFFF1FD92152120C20720B014 -S31540015220DA05212080A34001821521201280000742 -S31540015230981720B0DA006004C203200480A340011D -S315400152400280040F1B0000707FFFAFED901020130A -S31540015250C025A1C09015E0C87FFFF1EC9215212031 -S31540015260C2052120DA05E0C880A0400D8215212023 -S31540015270128000079015E0C8DA006004C2022004DB -S3154001528080A3400102800407010000007FFFAFDCDC -S3154001529090102013170C00089A10200019100C00CA -S315400152A015300F789612E001D83FBFF0D43FBFC00A -S315400152B09007BFF07FFFF1D592152120031004001E -S315400152C0DA05212080A340011280000A821521209F -S315400152D0C200600480A06000128000060100000048 -S315400152E0C205A1C080A06000028000059007BFC032 -S315400152F07FFFAFC3901020139007BFC07FFFF1C35C -S3154001530092152120C2052120DA0720B080A0400D48 -S315400153108215212012800007981720B0DA00600418 -S31540015320C203200480A34001028003E31B000070F6 -S315400153307FFFAFB390102013901660F07FFFF1B35B -S3154001534092152120C205A1C08330600E82086003F8 -S3154001535080A0600202800004211000807FFFAFA878 -S3154001536090102013C02421C07FFFF2981111F20042 -S315400153700310E80080A2000112800006010000002F -S31540015380C20421C080A06000028000040100000028 -S315400153907FFFAF9B901020137FFFF3CA11100000CF -S315400153A01101F5897FFFF289901221E20308E96430 -S315400153B080A200011280000601000000C205A1C0C2 -S315400153C080A0600002800004010000007FFFAF8CD6 -S315400153D0901020237FFFF27D1112A2080311410094 -S315400153E080A200011280000601000000C205A1C092 -S315400153F080A0600002800004010000007FFFAF80B2 -S31540015400901020237FFFF3AF110010009007BFF0EB -S31540015410921660F07FFFF1649415212003100C0071 -S31540015420DA05212080A340011280000A821521203D -S31540015430C200600480A060001280000601000000E6 -S31540015440C205A1C080A0600002800005901660F0F0 -S315400154507FFFAF6B90102014901660F09207BFC08B -S315400154607FFFF1569415212003200000DA05212003 -S3154001547080A340011280000A82152120C2006004E7 -S3154001548080A060001280000601000000C205A1C094 -S3154001549080A0600002800004010000007FFFAF5839 -S315400154A0901020147FFFF19190102001030FE0002E -S315400154B080A200011280000601000000C205A1C0C1 -S315400154C080A0600002800004010000007FFFAF4C15 -S315400154D0901020147FFFF17D90102001030FFC00F6 -S315400154E080A200011280000880A26000128000069E -S315400154F001000000C205A1C080A060000280000436 -S31540015500010000007FFFAF3E901020147FFFF36D36 -S315400155101110100019100085D41B20D07FFFF1F91E -S31540015520D01E60F003100085D03D2120DA0060D8FE -S31540015530C205212080A0400D191000858215212029 -S3154001554012800007901320D8DA006004C2022004BA -S3154001555080A3400102800361010000007FFFAF2864 -S31540015560901020227FFFF35711100000170400808E -S31540015570150F28009612E0F09A102000190FFC0032 -S31540015580D43FBFC0D83FBFF09007BFF09207BFC01E -S315400155907FFFF10594152120030FFC00DA05212038 -S315400155A080A340011280000682152120C2006004BA -S315400155B080A0600002800004010000007FFFAF1060 -S315400155C0901020157FFFF33F112000001700004087 -S315400155D0150014009612E0019A102000190FFC00E4 -S315400155E0D43FBFC0D83FBFF09007BFF09207BFC0BE -S315400155F07FFFF0ED94152120030FFC00DA052120F1 -S3154001560080A340011280000682152120C200600459 -S3154001561080A0600102800004010000007FFFAEF817 -S31540015620901020157FFFF32711300000170000402E -S31540015630152014009612E0019A102000192FFC0043 -S31540015640D43FBFC0D83FBFF09007BFF09207BFC05D -S315400156507FFFF0D594152120032FFC00DA05212088 -S3154001566080A340011280000682152120C2006004F9 -S3154001567080A0600102800004010000007FFFAEE0CF -S31540015680901020157FFFF30F11100000190FFC0039 -S315400156909A102000D83FBFF09007BFF09216E0E085 -S315400156A07FFFF0C194152120C206E0E0DA052120F2 -S315400156B080A3400182152120128000079816E0E060 -S315400156C0DA006004C203200480A340010280000482 -S315400156D0010000007FFFAECA901020157FFFF2F94E -S315400156E01120000017000040150014009612E00139 -S315400156F0190FFC009A102000D43FBFC0D83FBFF01D -S315400157009007BFF09216E0E07FFFF0A794152120A5 -S31540015710C206E0E0DA05212080A34001821521205E -S31540015720128000079816E0E0DA006004C203200404 -S3154001573080A3400102800004010000007FFFAEB05B -S31540015740901020157FFFF2DF113000001700004056 -S31540015750152014009612E0019A102000192FFC0022 -S31540015760D43FBFC0D83FBFF09007BFF09216E0E0EC -S315400157707FFFF08D94152120C2052120DA06E0E055 -S3154001578080A0400D82152120128000079016E0E08E -S31540015790DA006004C202200480A3400102800004B2 -S315400157A0010000007FFFAE96901020157FFFF2C5E5 -S315400157B01110000015100000961020019A102001CA -S315400157C0190FFC00D43FBFC0D83FBFF09007BFF0D0 -S315400157D09207BFC07FFFF079941521200310000086 -S315400157E0DA05212080A3400112800006821521207E -S315400157F0C200600480A06002028000040100000033 -S315400158007FFFAE7F901020157FFFF2AE1120000082 -S315400158109007BFF09207BFC07FFFF0689415212023 -S3154001582003100000DA05212080A340011280000602 -S3154001583082152120C200600480A06003028000041A -S31540015840010000007FFFAE6E901020157FFFF29D94 -S31540015850113000009A102001192FFC00D83FBFF0EB -S315400158609007BFF09207BFC07FFFF05494152120E7 -S3154001587003300000DA05212080A340011280000692 -S3154001588082152120C200600480A0600302800004CA -S31540015890010000007FFFAE5A901020157FFFF2896C -S315400158A011100000150FFC04172F26159412A01293 -S315400158B09612E231190FFEAE1B1CD2E89A13601103 -S315400158C098132154D43FBFC0D83FBFF09007BFF0D3 -S315400158D09207BFC07FFFF04794152120030FFEA713 -S315400158E082106296DA05212080A3400112800008C9 -S315400158F082152120DA006004032C1B348210602FAC -S3154001590080A3400102800004010000007FFFAE3CFD -S31540015910901020157FFFF26B112000009007BFF019 -S315400159209207BFC07FFFF03394152120030FFEA7D6 -S3154001593082106296DA05212080A340011280000878 -S3154001594082152120DA006004032C1B34821060305A -S3154001595080A3400102800004010000007FFFAE28C1 -S31540015960901020157FFFF25711300000192FFC04CB -S315400159701B2F26159A13623198132012D83FBFC0A8 -S315400159809007BFF09207BFC07FFFF01A9415212000 -S31540015990032FFEA782106296DA05212080A34001DB -S315400159A01280000882152120DA006004032C1B3482 -S315400159B08210603080A34001028000040100000093 -S315400159C07FFFAE0F901020157FFFF23E11100000B1 -S315400159D015101000961020009A102000191038005A -S315400159E0D43FBFC0D83FBFF09007BFF09207BFC0BA -S315400159F07FFFF0009415212003102400DA052120B1 -S31540015A0080A340011280000682152120C200600455 -S31540015A1080A0600002800004010000007FFFADF815 -S31540015A20901020157FFFF227112000009007BFF04C -S31540015A309207BFC07FFFEFEF94152120031024008A -S31540015A40DA05212080A3400112800006821521201B -S31540015A50C200600480A060000280000401000000D2 -S31540015A607FFFADE7901020157FFFF2161130000041 -S31540015A709007BFF09207BFC07FFFEFDE941521204C -S31540015A8003102400DA05212080A34001128000067C -S31540015A9082152120C200600480A0600002800004BB -S31540015AA0010000007FFFADD6901020157FFFF20563 -S31540015AB011100000210FE000110020007FFFF0B916 -S31540015AC09214200180A220001280012301000000CF -S31540015AD07FFFF1FC11200000110020007FFFF0B193 -S31540015AE09214200180A220001280011801000000BA -S31540015AF07FFFF1F411300000921420017FFFF0A9DD -S31540015B001100200080A220001280010D010000003A -S31540015B107FFFF1EC111000009A102000190FFC00D4 -S31540015B20D83FBFF09007BFF07FFFEFB89215212015 -S31540015B30C207BFF0DA05212080A340011280000789 -S31540015B4082152120DA006004C207BFF480A3400118 -S31540015B50028002A7010000007FFFADA99010201529 -S31540015B607FFFF1D8112000009007BFF07FFFEFA71C -S31540015B7092152120C207BFF0DA05212080A34001FA -S31540015B801280000782152120DA006004C207BFF4A3 -S31540015B9080A340010280029B010000007FFFAD9877 -S31540015BA0901020157FFFF1C7113000009007BFF01C -S31540015BB07FFFEF9692152120C207BFF0DA0521201B -S31540015BC080A340011280000782152120DA0060047B -S31540015BD0C207BFF480A340010280028F010000008A -S31540015BE07FFFAD87901020157FFFF1B611100000A1 -S31540015BF0030FDFFF901063FF7FFFF074A0100008D2 -S31540015C0080A2001002800004010000007FFFAD7CED -S31540015C10901020157FFFF1AB112000007FFFF06B44 -S31540015C2090100010030FE00080A2000102800004E2 -S31540015C30010000007FFFAD72901020157FFFF1A19A -S31540015C40113000007FFFF0619010001080A200101B -S31540015C5002800004010000007FFFAD69901020150D -S31540015C607FFFF198901020007FFFF0609015212072 -S31540015C70032FFE00DA05212080A340011280000691 -S31540015C8082152120C200600480A0600002800005C8 -S31540015C90211001447FFFAD5A901020162110014476 -S31540015CA07FFFF05C90142128DA042128032FF000AD -S31540015CB080A3400102800004A21421287FFFAD5039 -S31540015CC0901020167FFFF05D90100011DA04212814 -S31540015CD0030FE00080A340010280000401000000A0 -S31540015CE07FFFAD47901020167FFFF064901521206D -S31540015CF0030FFBF7821063F0DA05212080A34001F0 -S31540015D001280000882152120DA0060040303FF1285 -S31540015D108210604A80A3400102800005921660F01D -S31540015D207FFFAD3790102016921660F09007BFF0B6 -S31540015D307FFFEF3094152120C205A1C08330600E4C -S31540015D408208600780A060020280000519100046A3 -S31540015D507FFFAD2B901020171910004617100080B9 -S31540015D60DA02E1C8821321F880A0400DE00321F850 -S31540015D7002800004A212E1C87FFFAD2190102018D5 -S31540015D80C204600480A040100280000401000000AB -S31540015D907FFFAD1B90102018C204600880A06000F0 -S31540015DA01280007701000000C204600C80A06000F0 -S31540015DB01280006C010000007FFFEEE6010000004A -S31540015DC080A220010280019801000000190C40299F -S31540015DD01B23CD1B9A13609B981320069410200019 -S31540015DE096102000D83FBFF0D43FBFC07FFFEF2FB2 -S31540015DF09007BFF003100083A21062101B100081B0 -S31540015E0003100144A0136210A4106120B0102000B9 -S31540015E10832E2002DA044001DA27BFC09007BFC0B3 -S31540015E207FFFEF25921521209B2E2003D804000DDC -S31540015E30C2052120B00620019603401080A300012F -S31540015E401280000790102019DA02E004C204A0046F -S31540015E5080A340010280000580A620FF7FFFACE8B9 -S31540015E600100000080A620FF04BFFFEB832E200225 -S31540015E7003100083A41062101B100080031001441C -S31540015E80A2136210A6106120B0102000A12E20029C -S31540015E90C2048010C227BFC0921521207FFFEEDBCE -S31540015EA09007BFC0DA044010C2052120B006200287 -S31540015EB09804001180A34001128000079010201A17 -S31540015EC0DA032004C204E00480A3400102800005F5 -S31540015ED080A620FF7FFFACCA0100000080A620FFFC -S31540015EE024BFFFECA12E200230800211C205A1C0C1 -S31540015EF080A0600022BFFB8FB0863FFF30BFFB8A88 -S31540015F00C205A1C080A0600002BFF14501000000AA -S31540015F1030BFF141C205A1C080A0600002BFF13689 -S31540015F200100000030BFF132C205A1C080A060006F -S31540015F3002BFF1270100000030BFF1237FFFACB063 -S31540015F409010201530BFFEF37FFFACAD90102015A9 -S31540015F5030BFFEE87FFFACAA9010201530BFFEDDB2 -S31540015F607FFFACA79010201830BFFF947FFFACA4F1 -S31540015F709010201010BFF678111000847FFFACA05E -S31540015F809010201830BFFF89C207BFCC80A06000A7 -S31540015F9012BFF8F501000000C20421C08208401575 -S31540015FA09A16A00880A0400D12BFF8EF010000002C -S31540015FB010BFF8F015108683C205A1C09A13601F61 -S31540015FC0190000108208400D9813200880A0400C4B -S31540015FD012BFFB7D1110008510BFFB7F9012205030 -S31540015FE0C205A1C09A13601F190000108208400D16 -S31540015FF09813200880A0400C12BFFB861110008523 -S3154001600010BFFB8890122068C205A1C09A13601F79 -S31540016010190000108208400D9813200480A0400CFE -S3154001602012BFFB8F1110008510BFFB91901220808B -S31540016030C205A1C09A13601F190000108208400DC5 -S315400160409813200880A0400C12BFFB980100000065 -S3154001605030BFFB98C205A1C080A0600002BFFBFE15 -S31540016060111FD00030BFFBF9C205A1C080A060005E -S3154001607002BFFC1E0100000030BFFC1AC205A1C0D0 -S3154001608080A0600002BFFC2C1B10008530BFFC279E -S31540016090C205A1C080A0600002BFFC3A1B1000856A -S315400160A030BFFC35C205A1C080A0600002BFFC47DD -S315400160B01B10008530BFFC42C205A1C09A13601F68 -S315400160C0190000108208400D9813201080A0400C42 -S315400160D012BFFC4C0310008510BFFC4E901060B8F7 -S315400160E0C205A1C09A13601F190000108208400D15 -S315400160F09813200480A0400C12BFFB20111000858C -S3154001610010BFFB2290122038C205A1C080A06000BA -S3154001611022BFF8D0150FFFFF30BFF8CBC205A1C093 -S3154001612080A0600002BFF8100310008530BFF80B55 -S31540016130C205A1C09A13601F190000108208400DC4 -S315400161409813201080A0400C12BFF8169015E0C895 -S3154001615010BFF818921660F0C205A1C080A0600079 -S3154001616002BFF9491B10008530BFF944C205A1C0E1 -S3154001617080A0600002BFF9579007BFF030BFF952C7 -S31540016180C205A1C080A0600002BFF9631B10008553 -S3154001619030BFF95EC205A1C09A13601F19000010F5 -S315400161A08208400D9813201080A0400C12BFF96957 -S315400161B09007BFF010BFF96B921660F0C20461C040 -S315400161C080A0600002BFF74B1B10008530BFF74629 -S315400161D0C205A1C080A0600002BFF75A9016E0E058 -S315400161E030BFF755C205A1C09A13601F19000010B0 -S315400161F08208400D9813201080A0400C12BFF75F13 -S315400162000100000030BFF75FC205A1C080A0600059 -S3154001621002BFF76F1B10008530BFF76AC205A1C0E8 -S315400162209A13601F190000108208400D9813201020 -S3154001623080A0400C12BFF7750100000030BFF77512 -S31540016240C20461C080A0600002BFF7949015E0C807 -S3154001625030BFF78FC205A1C080A0600002BFF7A082 -S315400162609015E0C830BFF79BC205A1C080A0600071 -S3154001627002BFF7AC9015E0C830BFF7A7C205A1C071 -S315400162809A13601F190000108208400D98132010C0 -S3154001629080A0400C12BFFBED0100000030BFFBEDBA -S315400162A0C205A1C080A0600002BFFBFC170C00081C -S315400162B030BFFBF7C205A1C09A13601F1900001039 -S315400162C08208400D9813201080A0400C12BFFC1983 -S315400162D0901660F030BFFC1AC205A1C080A06000D4 -S315400162E002BFFCA10100000030BFFC9DC20461C099 -S315400162F080A0600002BFF9E59015E0C830BFF9E023 -S31540016300C205A1C080A0600002BFF9F19015E0C8A6 -S3154001631030BFF9ECC205A1C080A0600002BFF9FD03 -S315400163209015E0C830BFF9F8C205A1C080A0600051 -S3154001633002BFFA091910008530BFFA04C20461C0D0 -S3154001634080A0600002BFF9250310008530BFF92007 -S31540016350C205A1C09A13601F190000108208400DA2 -S315400163609813201080A0400C12BFF92C01000000A8 -S3154001637030BFF92CC205A1C080A0600002BFF93C24 -S315400163801B10008530BFF937C205A1C09A13601FA3 -S31540016390190000108208400D9813201080A0400C6F -S315400163A012BFF9429007BFE810BFF944921660F058 -S315400163B0C20461C080A0600002BFF95F9016E0E0B0 -S315400163C030BFF95AC205A1C09A13601F19000010C7 -S315400163D08208400D9813201080A0400C12BFF9642A -S315400163E00100000030BFF964C205A1C080A0600071 -S315400163F002BFF9740310008530BFF96FC205A1C011 -S315400164009A13601F190000108208400D981320103E -S3154001641080A0400C12BFF97A9016E0E010BFF97CDB -S31540016420921660F07FFFAB769010201910BFFE697F -S31540016430190C4029D80061C01B0000709A13601FD7 -S3154001644003000010980B000D8210600880A3000124 -S3154001645012BFF5501110008410BFF55290122360FF -S31540016460C205A1C09A13601F190000108208400D91 -S315400164709813200480A0400C12BFF55811100084D7 -S3154001648010BFF55A90122378C205A1C09A13601F16 -S31540016490190000108208400D9813200480A0400C7A -S315400164A012BFF5600100000030BFF560C205A1C012 -S315400164B080A0600002BFF4A90310008530BFF4A498 -S315400164C0C205A1C080A0600002BFF4939015E0C848 -S315400164D030BFF48EC205A1C080A0600002BFF47D2A -S315400164E09015E0C830BFF478C20461C080A0600056 -S315400164F002BFF4679015E0C830BFF462C205A1C07F -S315400165009A13601F190000108208400D981320024B -S3154001651080A0400C12BFF5B61B10008510BFF5B820 -S31540016520921360D0C205A1C080A0600002BFF5C52C -S315400165309007BFF030BFF5C0C205A1C080A0600082 -S3154001654002BFF5D10310008530BFF5CCC205A1C00D -S315400165509A13601F190000108208400D98132010ED -S3154001656080A0400C12BFF5D79007BFF010BFF5D9F8 -S31540016570921660F0C20461C080A0600022BFF5F3AC -S315400165801910008530BFF5EEC205A1C09A13601FF0 -S31540016590190000108208400D9813201080A0400C6D -S315400165A012BFF5F91B10008510BFF5FB03100085DE -S315400165B0C205A1C080A0600002BFF60B9007BFE8EC -S315400165C030BFF606C205A1C080A0600002BFF61723 -S315400165D01B10008530BFF612C20421C080A06000A6 -S315400165E022BFF03E113C02AF30BFF039C205A1C017 -S315400165F080A0600002BFFD5B0100000030BFFD5777 -S31540016600C205A1C080A0600002BFFD670100000075 -S3154001661030BFFD63C205A1C080A0600002BFFD730B -S315400166200100000030BFFD6FC205A1C080A060001F -S3154001663002BFF2D70310008530BFF2D2C205A1C016 -S3154001664080A0600002BFF2C19007BFF030BFF2BC2C -S31540016650C205A1C080A0600002BFF2AA3710008522 -S3154001666030BFF2A5C205A1C080A0600002BFF028DC -S315400166701111FC0030BFF023C205A1C09A13601F5F -S31540016680190000108208400D9813201080A0400C7C -S3154001669012BFF3DD9016E0E010BFF3DF921660F013 -S315400166A0C205A1C080A0600002BFF39E1B100085F9 -S315400166B030BFF399C205A1C080A0600002BFF38636 -S315400166C01B10008530BFF381C205A1C080A06000C8 -S315400166D002BFF36E1B10008530BFF369C20461C06F -S315400166E080A0600002BFF3589016E0E030BFF3533C -S315400166F0C205A1C080A0600002BFF30E191000853B -S3154001670030BFF309C205A1C080A0600002BFF2F804 -S315400167109007BFE830BFF2F3C20461C080A06000B9 -S3154001672002BFF2E29007BFE830BFF2DD81C7E00861 -S3154001673081E80000D27A000081C3E0080100000030 -S3154001674081C3E008900A20209332600492126001CE -S315400167508213C0007FFFFFF89E1040000100000039 -S3154001676081D8200081C3E008010000009DE3BF9865 -S315400167707FFFFFFC0100000082102400C0A04300FF -S3154001678081C7E00881E80000833220189A1000088A -S315400167908088600F028000049010200083336010CF -S315400167A09008600381C3E008010000009DE3BF98A3 -S315400167B0031000C01B1000C1B0106000A21360009E -S315400167C0031000C21B1000C2A4106000A613610092 -S315400167D0031000201B100020A8106158AA13600066 -S315400167E07FFFEBAD9010200C808A2008028001FDCE -S315400167F0010000007FFFAA7D9010200ED08003206B -S315400168007FFFFFE2010000000310014380A2200246 -S31540016810028000C6D02060D080A22002148000E40D -S3154001682080A2200380A22001028000D1821020197B -S31540016830331000A02F1000A0391000A0371000A07F -S31540016840351000A07FFFFFC7210100007FFFFFC871 -S31540016850BA04A00C921000117FFFFFBC90100018E3 -S31540016860921000117FFFFFB990062004901000118D -S315400168707FFFFFB19210200ADA066014110800006A -S31540016880913A000DC205E010900A0001912A2002BA -S3154001689013008000900200117FFFFFA79212600A49 -S315400168A0DA06601411100000913A000DC205E0109D -S315400168B0900A0001912A2002900200117FFFFF9E5B -S315400168C09214208EDA066014111C0000913A000DD4 -S315400168D0C205E010900A0001912A20021301C0006E -S315400168E0900200117FFFFF949212608E9334A004B0 -S315400168F09004600C7FFFFF90921260019214201E5B -S315400169007FFFFF8D9004A0089010001D7FFFFF8A36 -S31540016910921020009334E004921260017FFFFF86BB -S315400169209004A004111000C2901221087FFFFF823B -S3154001693092102000031000E0A01060009334200460 -S31540016940111000C2901221047FFFFF7B9212601A40 -S3154001695003048D1582106278C2242004111000E0D0 -S3154001696015100120C0222000A2102003AC12A00065 -S31540016970A004E00C90047FFD40000A7392102003AE -S315400169801B100143C20360D08200600C932A0001B0 -S315400169909202401693326004901000107FFFFF660A -S315400169A09212601EA204600180A4600A04BFFFF235 -S315400169B0A0042004C206E008D807200C8208600122 -S315400169C08328400CD605E010111000E0D406A00043 -S315400169D0DA06601498122000960AE003972AC00D41 -S315400169E0920AA002111000A0DA022004940AA00122 -S315400169F0952A800D932A400D1B1000209612C00146 -S31540016A00E8236150030100001B0076418210601E9D -S31540016A109A1361C09212C00999332004C2252004F9 -S31540016A20DA2520089612C00A9E13200E913560047D -S31540016A301B1000C2031000C2821061049012201E76 -S31540016A40953620049813201E9A136108D625202CCA -S31540016A50D8252010D025201CD2252020DE2520280F -S31540016A60D6252014940ABFF0FA250000DA2520180D -S31540016A70C2252024C225200CA2102100D4A44320E3 -S31540016A80C2800320D88443209A102001A0102200FE -S31540016A90DAA40320D884032082102000C2A4032054 -S31540016AA0DAA0032081D820007FFFC55901000000EC -S31540016AB0C2800320E2844320E0840320DA05E0100B -S31540016AC0D6066014C206E0089A0B60039B2B400B66 -S31540016AD082086001D407200CD806A000111000A03E -S31540016AE08328400A980B2001D60220049A134001BC -S31540016AF0992B000B9A13400CC203400080A0600002 -S31540016B0012800008821360041B048D15D8004000D2 -S31540016B109A13627880A3000D02800038C205E01006 -S31540016B2010800000010000008210201A331000A0DE -S31540016B30C22660149810203F2F1000A0391000A0E3 -S31540016B40351000A09A1020148210200E151000A0B6 -S31540016B50371000A0DA27200CC222A004D826A000B4 -S31540016B60D825E01010BFFF38D826E0089A10207FBC -S31540016B70331000A02F1000A0C2266014DA25E010C1 -S31540016B809810203F391000A0351000A08210201324 -S31540016B909A10200D111000A0371000A0C227200C1A -S31540016BA0DA22200410BFFFF0D826A00012BFFF2230 -S31540016BB0331000A08210201CC22660149A102015A2 -S31540016BC08210207F391000A0371000A0DA27200C50 -S31540016BD0C226E0089810200F2F1000A0351000A003 -S31540016BE01B1000A08210203FD8236004C226A000BB -S31540016BF010BFFF15D825E010DA06E008D806601464 -S31540016C00820860039A0B6002D607200C8328400C49 -S31540016C109B2B400B8210400DD80040001B100000FA -S31540016C20C203400080A3000102800004D406E008AC -S31540016C301080000001000000C205E010980AA00182 -S31540016C40D207200CD6066014820860038328400BC5 -S31540016C50992B0009940AA0039810400CDA06A0006B -S31540016C60111000A0952A80099A0B6001D6022004D2 -S31540016C708210400AC20040009B2B400B9813000D26 -S31540016C800321D9509813200482106321C2230000A6 -S31540016C90DA03000080A3400102800004C206E00836 -S31540016CA01080000001000000D407200CDA05E01036 -S31540016CB082086001D60660148328400A9A0B600355 -S31540016CC0D806A0009B2B400B151000A0D602A004AD -S31540016CD0980B20019A134001992B000B9813400CF5 -S31540016CE08210000C05048D158410A278072AF37BC7 -S31540016CF08610E301C4384000C438400003048D15B2 -S31540016D00DA0300008210627880A340010280000409 -S31540016D108213200410800000010000001B2AF37B2F -S31540016D20D80040009A13630180A3000D12BFFFFAF9 -S31540016D30C205E010D6066014D806E0088208600352 -S31540016D40D407200C8328400B980B2001DA06A000BB -S31540016D50111000A0992B000A9A0B6003D602200459 -S31540016D608210400C9B2B400B15100143A010400D87 -S31540016D70F002A0D0A2102003E0240000C0A002200F -S31540016D80921020034000097090047FFD8206200C7A -S31540016D9098102001912A0001992B00011B10012016 -S31540016DA09610000182136000DA02000180A34010B0 -S31540016DB0A204600112800087A004000C80A4600A2E -S31540016DC024BFFFEFE0240000C0A0022003100120F1 -S31540016DD0A810000BAA106000A0102000A2102003EA -S31540016DE090047FFD4000095892102003832C6002D5 -S31540016DF0912A0014DA04C00190020015820B6060EA -S31540016E009132200480A000019012201EA040001063 -S31540016E109A0B7F9F900A3F9F80A340081280006F84 -S31540016E20A204600180A4600A24BFFFEF90047FFDA5 -S31540016E3080A4200012800004C205E01010800000EA -S31540016E4001000000D6066014D806E00882086003F7 -S31540016E50D407200CDA06A000111000A08328400BAD -S31540016E60980B2001992B000AD60220049A0B600246 -S31540016E708210400C9B2B400BAA10400D9FC5400031 -S31540016E800100000082102400C0A04300C0A00220DF -S31540016E90A0102000A21020039B2C6002C204C00D4A -S31540016EA08208606080A00001A0400010A204600139 -S31540016EB080A4600A24BFFFFA9B2C600280A42008AC -S31540016EC022800004D004E00410800000010000008C -S31540016ED0808A204002800007010000007FFFFE19E2 -S31540016EE00100000080A22000128000040100000081 -S31540016EF010800000010000007FFFFE12D004A008B0 -S31540016F0080A22000128000040100000010800000D1 -S31540016F10010000007FFFFE0BD004E00880A22000A4 -S31540016F2012800004010000001080000001000000F2 -S31540016F3083480000842860808188A0000100000009 -S31540016F400100000001000000D806E008D407200C2B -S31540016F50DA05E010980B2001D6066014992B000A39 -S31540016F609A0B6003C206A0009B2B400B151000A094 -S31540016F70D602A004820860018328400B9A13400C74 -S31540016F809A1340019A136004C203400092102004F0 -S31540016F9091D02002010000007FFFC41D01000000C6 -S31540016FA0981020009A102200D8A343208210200175 -S31540016FB0C2A34320D8A3432003100000DA804380B4 -S31540016FC0DAA04380D8A0032081D820003080000574 -S31540016FD01080000001000000108000000100000048 -S31540016FE081C7E00891E820009DE3BF98400007D1A2 -S31540016FF001000000808A21000280003F010000005C -S315400170007FFFA88E01000000912A20047FFFA87708 -S31540017010900220050310014082106048DA006004A6 -S3154001702080A360002280001503100140B0100001CA -S31540017030C20600009B38601F81836000DA06200487 -S3154001704001000000010000008278400DDA062008A8 -S31540017050B006200C80A0400D028000049010200153 -S315400170607FFFA86701000000C206200480A06000DF -S3154001707012BFFFF00310014082106000DA00600485 -S3154001708080A360000280001501000000B0100001DD -S31540017090C206000081800000DA06200401000000DB -S315400170A0010000009A70400D8210000DDA0620089A -S315400170B0B006200C80A0400D0280000490102002F2 -S315400170C07FFFA84F01000000C206200480A0600097 -S315400170D012BFFFF00100000040000824010000003B -S315400170E080A2200012800004010000007FFFA84416 -S315400170F09010200381C7E00891E820009DE3BF98E6 -S315400171007FFFA84E01000000912A20047FFFA83787 -S3154001711090022004400007890100000080A221233B -S3154001712002800004010000007FFFA8359010200175 -S315400171304000078001000000808A21000280002B68 -S315400171400310014082106184DA00600880A360095F -S315400171500280001101000000B0100001C2060000CB -S31540017160DA062004D80620088258400DB006200CC5 -S3154001717080A0400C02800004901020027FFFA820CE -S3154001718001000000C206200880A0600912BFFFF47A -S3154001719001000000400007760100000080A22000A7 -S315400171A00280000F0100000040000762010000005C -S315400171B0808A22000280000D010000004000079EE7 -S315400171C00100000080A2200012800008010000009A -S315400171D07FFFA80B90102004308000047FFFA80891 -S315400171E09010200330BFFFF181C7E00891E82000ED -S315400171F09DE3BFA0941020001110005C9012222440 -S315400172001310005C921262281710005C9612E2304D -S315400172101910005C9813223493C2000081C24000C9 -S315400172201080019181C2C00081C300001080018E8F -S315400172309402A0019402A00180A2A0031280018AB7 -S3154001724001000000874400008D30E00E8C89A007C4 -S3154001725080A1A000028000C701000000AF30E00B12 -S31540017260AE0DE00780A5E000128000C201000000DB -S3154001727080A1A00212800035010000002510000007 -S31540017280E41C80002510000029100000A8152104E7 -S31540017290A6100012AA100012AC100014A1802046BC -S315400172A0A4100000AA10000001000000A180204E99 -S315400172B0A810210001000000A1800000010000008B -S315400172C001000000E83CA03082A4801312800166D0 -S315400172D082A5001612800164010000000100000031 -S315400172E001000000874400008D30E00B8C89A00727 -S315400172F08CA1A0051280015CA18000000100000064 -S315400173000100000001000000E81CA03082A5001623 -S315400173101280015582A54012A4100000128001522C -S315400173200100000001000000874400008D30E00BA1 -S315400173308C89A0078CA1A0031280014B010000009B -S315400173401080008C0100000080A1A0011280002362 -S3154001735025100000E41C80002510000029100000C3 -S31540017360A8152104A6100012AA100012AC10001490 -S31540017370A1802046A4100000AA10000001000000D0 -S31540017380A180204EA810210001000000A18000002C -S31540017390010000000100000001000000E83C8000FF -S315400173A082A480131280013082A500161280012E1C -S315400173B00100000001000000874400008D30E00B11 -S315400173C08C89A0078CA1A002128001270100000030 -S315400173D0108000680100000080A1A00312800065B2 -S315400173E0A6100000A210200EA1844000A6100000A5 -S315400173F0A1800000A814E000AB4400000100000099 -S31540017400AC14E00001000000AF44000080A520005C -S3154001741012800115AA8D6E0080A5400012800112CE -S3154001742080A5A00012800110AF35E00BAE0DE0073C -S3154001743080A5E0011280010C01000000A0100000AF -S31540017440A1844000A6100000A1800000E8180000B9 -S31540017450AC100000AE100000EC04C000EE04E004E5 -S3154001746080A500161280010080A54017128000FEFB -S3154001747001000000A5440000A534A00BA40CA00700 -S3154001748080A4A001128000F801000000A0100000B5 -S31540017490A1844000A6100000A1800000A210200A8D -S315400174A0A1844000A4100000A1800000E81800005B -S315400174B0AC100000AE100000EC04C012EE04E00473 -S315400174C080A50016128000E880A54017128000E6CC -S315400174D001000000A5440000A534A00BA40CA007A0 -S315400174E080A4A002068000E00100000021100140B6 -S315400174F0A0142200EC1C0000A0042008E81C000097 -S31540017500A1844000A6100000A1800000A210200E18 -S31540017510A1844000A4100010AC100000AE10000081 -S31540017520A18000000100000001000000EC3C801336 -S31540017530AC100000AE100000E81CC01280A5001679 -S31540017540128000C980A54017128000C701000000C3 -S31540017550A5440000A534A00BA40CA00780A4A00458 -S31540017560128000C1010000001080000201000000ED -S315400175708B4440008A09601F80A160010280000A95 -S315400175808C1000059DE3BFA08AA1600116BFFFFED6 -S315400175900100000081E800008CA1A00116BFFFFE9A -S315400175A0010000000100000001000000A023A080AE -S315400175B0A02C20078E100010A3480000E2240000F2 -S315400175C0C2242004C43C2008C83C2010CC3C2018CE -S315400175D0F03C2020F43C2028F83C2030FC3C20386C -S315400175E0D03C2040D43C2048D83C2050DC3C20585C -S315400175F0A5500000E424206080102008821020015C -S315400176008410200286102003881020048A10200549 -S315400176108C10200681900000A42C601F818C800074 -S31540017620010000000100000001000000030040408D -S3154001763082106101841000008610000089444000D8 -S315400176408809201F86100004A01000028400400211 -S31540017650A210000284004002A410000284004002ED -S31540017660A610000284004002A810000284004002D5 -S31540017670AA10000284004002AC10000284004002BD -S31540017680AE100002840040029010000284004002C5 -S3154001769092100002840040029410000284004002CD -S315400176A096100002840040029810000284004002B5 -S315400176B09A100002840040029C100002840040029D -S315400176C09E1000028400400281E0000086A0E00195 -S315400176D016BFFFDE01000000030040408210610139 -S315400176E0841000008610000480A400021280003F2E -S315400176F08400400280A440021280003C8400400283 -S3154001770080A48002128000398400400280A4C00215 -S31540017710128000368400400280A5000212800033A8 -S315400177208400400280A5400212800030840040025D -S3154001773080A580021280002D8400400280A5C002EF -S315400177401280002A8400400280A200021280002793 -S315400177508400400280A2400212800024840040023C -S3154001776080A28002128000218400400280A2C002D1 -S315400177701280001E8400400280A300021280001B7A -S315400177808400400280A34002128000188400400217 -S3154001779080A38002128000158400400280A3C002AB -S315400177A0128000128400400281E0000086A0E001C0 -S315400177B016BFFFCE0100000080A020001280000B02 -S315400177C080A0FFFF1280000980A16005128000079A -S315400177D080A1A0061280000501000000A01000074C -S315400177E010800006C0242020A01000079010200120 -S315400177F010800002D024202082100007C4004000DF -S3154001780081888000010000000100000001000000A5 -S31540017810C4186008C8186010CC186018F0186020A9 -S31540017820F4186028F8186030FC186038D0186040A9 -S31540017830D4186048D8186050DC186058E40060607D -S31540017840C200600481948000010000000100000034 -S3154001785001000000A0100007F004202081C7E008C5 -S3154001786081E8000010BFFFFCB010000001000000DD -S3154001787081D8200081C3E008010000001B100144AB -S31540017880D8036150821020018328400C1B1001440B -S3154001789082007FFFD803615482084008932A400C36 -S315400178A0900040098213C0007FFFE77F9E10400091 -S315400178B0010000001B100144D803615082102001D1 -S315400178C08328400C1B10014482007FFFD80361547A -S315400178D0932A400C82084008900040099210000A01 -S315400178E08213C0007FFFE7729E1040000100000036 -S315400178F01B100144D8036150821020018328400C9B -S315400179001B10014482007FFFD8036154932A400C27 -S3154001791082084008900040099210000A8213C00074 -S315400179207FFFE7679E104000010000001B100144E5 -S31540017930D8036150821020018328400C1B1001445A -S3154001794082007FFFD803615482084008932A400C85 -S31540017950900040098213C0007FFFE7579E10400008 -S31540017960010000001B100144D803615C8210200114 -S315400179708328400C1B10014482007FFFD803616CB1 -S31540017980932A400C82084008900040099210000A50 -S315400179908213C0007FFFE74E9E10400001000000A9 -S315400179A01B100144D803615C821020018328400CDE -S315400179B01B10014482007FFFD803616C932A400C5F -S315400179C082084008900040099210000A8213C000C4 -S315400179D07FFFE7439E104000010000009DE3BF5832 -S315400179E02D100144A2102000C205A16080A44001CF -S315400179F01680001BA01020002B10014429100144C1 -S31540017A0027100144A4102001D005615C912C800807 -S31540017A10C205216C90023FFF832C0001900A001899 -S31540017A207FFFE72990020001C204E14C901E000845 -S31540017A30900A000180A00008A2647FFFA0042001F3 -S31540017A40C205A16080A4000126BFFFF1D005615C9B -S31540017A5080A4600012800003B0102000B010200105 -S31540017A6081C7E00881E800001B100144D803615C2E -S31540017A70821020018328400C1B10014482007FFFA5 -S31540017A80D803616C82084008932A400C9000400953 -S31540017A908213C0007FFFE70C9E10400001000000EA -S31540017AA01B100144D803615C821020018328400CDD -S31540017AB01B10014482007FFFD803616C8208400895 -S31540017AC0932A400C900040098213C0007FFFE702D1 -S31540017AD09E10400001000000952AA00D03280000D9 -S31540017AE094028009D02040009422B000D420600442 -S31540017AF081C3E00801000000033FFFBF821062F826 -S31540017B009DE38001193FFFBF94132368B407BFF873 -S31540017B10031000459606800A82106020C222E00CBE -S31540017B2003100044821063E0C222E0041B100044AB -S31540017B309A1363C0033FFFBFDA26800A901323805E -S31540017B40331000458210635C94068008981323C065 -S31540017B50921660008200401ED222E008D4204000E6 -S31540017B60B006800C7FFFA5A1901020067FFFE6CAD4 -S31540017B7090102000920A3FF07FFFE6C99010200046 -S31540017B80210000307FFFE6C490102000808A00105B -S31540017B9012BFFFFD010000007FFFFF3621000030CC -S31540017BA07FFFE6BD90102000808A001012BFFFFDC6 -S31540017BB0010000007FFFE6B890102000030020403E -S31540017BC08210600F921200017FFFE6B590102000EF -S31540017BD07FFFE6B19010200821100144D0242148AE -S31540017BE07FFFE6AD9010200CA73A2010993A201459 -S31540017BF0A60CE007980B200FDA042148A8230013AE -S31540017C00A80520089F3B6014933B60109B3B60187E -S31540017C1094050013A2102001AC03200A9E0BE00F2D -S31540017C2096102400AE0B60039402A00221200000AE -S31540017C30992AC00C1B1001448203E00A952C400A84 -S31540017C409424000A832C4001D8236168A0240001B2 -S31540017C501B10014403100144EC23615C972AC00FB9 -S31540017C60AA03E00A1B100144D620614403100144D3 -S31540017C70EA236154EA2061501B1001440310014478 -S31540017C80D423614C920A6007A53A2018D020615846 -S31540017C90153FFFBF932C4009A40CA00303100144D8 -S31540017CA09412A358932C4009A404A001391001440D -S31540017CB037100144EC20616C9B2C40149402801EC9 -S31540017CC0E0272164E426E160AA027FFFDA228000F0 -S31540017CD0AC85E0010280000CBB2C4013033FFFBF83 -S31540017CE082106368A0068001A4100016D00400002B -S31540017CF09FC20000A0042004A484BFFF32BFFFFD41 -S31540017D00D00400007FFFE66490102000920A3FFCF9 -S31540017D107FFFE66390102000A410200080A4801607 -S31540017D2016800022A2102000033FFFBFAE106368F9 -S31540017D30A610001AA010200080A400163680001854 -S31540017D40A404A00110800005A810001780A4001605 -S31540017D5036800013A404A001921000107FFFFEC8D4 -S31540017D60D004C014820A001580A0401512BFFFF846 -S31540017D70A0042001C204C01482184008DA07216415 -S31540017D808208400D80A00001A2647FFF80A40016F6 -S31540017D9006BFFFF392100010A404A00180A4801630 -S31540017DA006BFFFE5A604E0047FFFE63B90102000F6 -S31540017DB0A6100008901020007FFFE6399214E003D8 -S31540017DC080A46000028001B101000000833CE00C08 -S31540017DD080886003128000A5030048D1833CE013EC -S31540017DE080886003128001AD010000007FFFFEA183 -S31540017DF0210000307FFFE62890102000808A001085 -S31540017E0012BFFFFDA6100008A4102000C206E160C3 -S31540017E1080A480011680000D832CA00292100012CE -S31540017E20901000187FFFFED094102000A404A001FA -S31540017E30C206E16080A4800106BFFFFA92100012DB -S31540017E40A4102000832CA002A404A001C026000196 -S31540017E5080A4A01E04BFFFFD832CA0028210200532 -S31540017E60C22600009A102001DA2620048210200240 -S31540017E70C22620089A102003DA26200C7FFFFED85E -S31540017E809010001880A22000028001D3010000005A -S31540017E90C206000080A060050280000401000000C7 -S31540017EA07FFFA4D7901020067FFFFECD90100018CB -S31540017EB080A22000128001C401000000A41020000D -S31540017EC0C206E16080A480011680000F9210001264 -S31540017ED0A0062004941020007FFFFEB290100018E7 -S31540017EE092100012901000107FFFFEAE94102000F9 -S31540017EF0A404A001C206E16080A4800106BFFFF68A -S31540017F00921000127FFFE5FA901000187FFFE5F806 -S31540017F10900620207FFFE5F6900620407FFFE5F49E -S31540017F2090062060A4102000C206E16080A4800172 -S31540017F3006800196A21020007FFFA4B19010200870 -S31540017F40173FFFBF8212E3C0940680018212E35CB1 -S31540017F508200401ED81A8000C2004000D838400036 -S31540017F609612E380C206800B80A06005128000064F -S31540017F708206800BDA00600480A36001028000055E -S31540017F80A41020007FFFA49E90102009A410200079 -S31540017F90C206E16080A4800116800011A210200073 -S31540017FA0A0062004921000127FFFFEBE9010001022 -S31540017FB0901A200180A00008A2647FFFA404A001BA -S31540017FC0C206E16080A4800106BFFFF8921000124C -S31540017FD080A4600102800005833CE0137FFFA488F2 -S31540017FE09010200A833CE013808860031280018050 -S31540017FF082102005C22600009A102001DA262004AC -S3154001800082102002C22620089A102003DA26200C6C -S315400180101B3FFFBF9A1363589A03401ED00340008B -S315400180204000048D9210001D032EEEEEA12A20027F -S31540018030A21063BBE22600107FFFFE699010001874 -S3154001804080A220001280016701000000C2060010D4 -S3154001805080A0401102800005030048D17FFFA4683B -S3154001806090102012030048D1821061671B226AF3E7 -S31540018070C22620209A1361EFDA262024C20E202040 -S3154001808080A0600102800004010000007FFFA45C23 -S315400180909010201AC20E202180A060230280000485 -S315400180A0010000007FFFA4569010201BC20E202223 -S315400180B080A0604502800004010000007FFFA450BB -S315400180C09010201CC20E202380A06067028000040D -S315400180D0010000007FFFA44A9010201DC20E2024FB -S315400180E080A0608902800004010000007FFFA44453 -S315400180F09010201EC20E202580A060AB0280000495 -S31540018100010000007FFFA43E9010201FC20E2026D2 -S3154001811080A060CD02800004010000007FFFA438EA -S3154001812090102020C20E202780A060EF028000041C -S31540018130010000007FFFA43290102021C2162020AA -S31540018140832860108330601080A061230280000480 -S31540018150010000007FFFA42A90102022DA16202277 -S315400181609B2B6010030000119B33601082106167E6 -S3154001817080A3400102800004010000007FFFA4208B -S3154001818090102023DA1620249B2B60100300002236 -S315400181909B336010821061AB80A3400102800004D2 -S315400181A0010000007FFFA41690102024DA16202635 -S315400181B09B2B6010030000339B336010821061EFEC -S315400181C080A3400102800005821020307FFFA40C6D -S315400181D09010202582102030C22E2020030C08D179 -S315400181E0DA0620208210616780A3400102800005E3 -S315400181F0821020317FFFA402901020278210203167 -S31540018200C22E2021030C0C51DA0620208210616710 -S3154001821080A3400102800005821020327FFFA3F82F -S315400182209010202882102032C22E2022210C0C4C84 -S31540018230DA0620208214226780A3400102800005CD -S31540018240821020337FFFA3EE901020298210203325 -S31540018250C22E20239A142233C206202080A0400D2C -S3154001826002800005821020347FFFA3E59010202A6A -S3154001827082102034C22E2024030D2AF3DA0620244C -S31540018280821061EF80A340010280000582102035F3 -S315400182907FFFA3DB9010202B82102035C22E202594 -S315400182A0030D0D73DA062024821061EF80A340018D -S315400182B002800005821020367FFFA3D19010202C2A -S315400182C082102036C22E2026210D0D4DDA0620249D -S315400182D0821422EF80A340010280000582102037DC -S315400182E07FFFA3C79010202D82102037C22E202752 -S315400182F09A142237C206202480A0400D0280000530 -S31540018300210000107FFFA3BE9010202E21000010F7 -S3154001831082142041C23620200310104CDA06202058 -S315400183208210623380A340010280000582142243F9 -S315400183307FFFA3B39010202F82142243C2362022FE -S3154001834003101050DA0620208210624380A34001B8 -S3154001835002800005210000117FFFA3A99010203063 -S315400183602100001182142045C23620240311114DEB -S31540018370DA0620248210623780A34001028000057C -S31540018380821422477FFFA39E9010203182142247F8 -S31540018390C236202603111151DA0620248210624783 -S315400183A080A3400102800004010000007FFFA394E6 -S315400183B0901020327FFFFD2FA4102000C206E160FD -S315400183C080A48001168000151B100144D403616C02 -S315400183D096100001A010200080A4001D3680000CDC -S315400183E0A404A001832C800A9B286002992CA0102A -S315400183F082130010C226000DA004200180A4001D96 -S3154001840006BFFFFC9A036004A404A00180A4800B6C -S3154001841026BFFFF2A01020007FFFE49F90102000AE -S3154001842003000010808A000112BFFFFC010000001A -S31540018430A4102000C206E16080A4800116800114C8 -S31540018440921000127FFFFD8990100018151001440B -S31540018450C202A14C900A0001820E000180A20001D5 -S31540018460A404A00112BFFFF4901020337FFFA36440 -S3154001847001000000C206E16080A4800106BFFFF250 -S3154001848092100012308001027FFFA35D90102001FF -S3154001849010BFFE50833CE00C7FFFE47F901020002C -S315400184A0133FFFF09212603F920A0009A61000089E -S315400184B07FFFE47B901020007FFFE3D2A4102000D1 -S315400184C01303C0009214C0097FFFE4759010200089 -S315400184D080A4801616800009921000129016600042 -S315400184E07FFFFD0494102000A404A00180A48016FF -S315400184F006BFFFFB921000127FFFE3C2010000009E -S315400185007FFFE46590102000913A200A900A2003EB -S3154001851080A2200102800004010000007FFFA338F1 -S315400185209010200201000000921020009016600079 -S315400185307FFFFCE194102000010000007FFFE4561C -S31540018540901020001303C000922A00097FFFE454D3 -S3154001855090102000010000007FFFE3AA0100000007 -S315400185607FFFE44D90102000913A200C900A2003A1 -S3154001857080A2200102BFFE1E010000007FFFA32052 -S315400185809010200330BFFE1A921000127FFFFD4566 -S3154001859090100018901A200580A00008A2647FFF61 -S315400185A0A404A001C206E16080A4800106BFFFF8D1 -S315400185B09210001280A4600012BFFE63173FFFBFF6 -S315400185C030BFFE5E7FFFA30E9010200710BFFE3D19 -S315400185D0A41020007FFFA30A9010200530BFFE2D76 -S315400185E07FFFA3079010201130BFFE997FFFE42A39 -S315400185F090102000033FFFF08210603F920A000175 -S315400186007FFFE42790102000033FFFBFA010638047 -S3154001861092102000941020007FFFFCE2900680100B -S315400186207FFFE41D901020000303C0009212000159 -S315400186307FFFE41B9010200010800006A41020004C -S31540018640900680107FFFFCD794102005A404A0015A -S31540018650C206E16080A4800106BFFFFA92100012B3 -S31540018660033FFFBFA01063809A102001DA2E8010CD -S3154001867003004000D80680108210600580A30001E7 -S3154001868002800004010000007FFFA2DD9010200B54 -S315400186907FFFE40190102000913A2006900A2003C2 -S315400186A080A2200102800004010000007FFFA2D4C5 -S315400186B09010200C7FFFE3F8901020001303C000B8 -S315400186C0922A00097FFFE3F69010200092102000C5 -S315400186D0900680107FFFFCB3941020007FFFE3EEED -S315400186E0901020002103C000921200107FFFE3EC9E -S315400186F0901020007FFFE3E890102000808A001050 -S3154001870002BFFFFDA6100008A4102000C206E160CA -S3154001871080A480011680000E033FFFBF9A102001FE -S31540018720A2106380A12B401D921000129006801169 -S315400187307FFFFC8D94043FFFA404A001C206E160C3 -S3154001874080A4800106BFFFFA921000121303C000F5 -S31540018750922CC0097FFFE3D2901020002103C00074 -S315400187607FFFE3CD90102000808A001012BFFFFDED -S315400187701B004000213FFFBF82142380D8068001A1 -S315400187809A13600580A3000D0280000401000000D9 -S315400187907FFFA29B9010200D7FFFE3BF901020002A -S315400187A0913A2008900A200380A2200122800005E8 -S315400187B0A01423787FFFA2929010200FA014237853 -S315400187C094068010981020119A102055D83A8000AE -S315400187D07FFFE3B1901020000303C0009212000115 -S315400187E0920A7F3F7FFFE3AE90102000A0068010E3 -S315400187F07FFFE3CD9010001010800006A4102000EA -S31540018800900420047FFFFC6794102055A404A00126 -S31540018810C206E16080A4800106BFFFFA92100012F1 -S31540018820113FFFBF901223787FFFE3BF9006800878 -S3154001883080A220111280000480A2605502800004AB -S31540018840010000007FFFA26E901020107FFFE3928F -S3154001885090102000833A20068208600380A06001C0 -S3154001886002800004A61000087FFFA2659010201028 -S31540018870133C3FF09212603F920CC0097FFFE388A0 -S315400188809010200010BFFDDC821020057FFFE3829F -S31540018890901020009212200F7FFFE381901020005C -S315400188A081C7E00891E820009DE3BF987FFFFC93D4 -S315400188B001000000B0100008130020409212600F22 -S315400188C07FFFE377901020000100000081C7E00898 -S315400188D081E80000033FFFBF821063589DE380019A -S315400188E07FFFFBE401000000400002380100000068 -S315400188F07FFFE36990102008A21000087FFFE3661E -S315400189009010200C7FFFA24DA0100008912A200450 -S315400189107FFFA2369002200C973C6014833C60187E -S31540018920953C2014993C201882086003960AE00F72 -S31540018930820060019602E00AA33C6010A13C20102F -S31540018940980B2003940AA00FA728400B98032001F7 -S31540018950A20C6007A00C20079402A00A9A102001DD -S31540018960A2046002A0042002B12B000A03200000E9 -S31540018970AB2B4011A52B40109620401898057FFF40 -S31540018980822040139A04BFFFAE130001A213400B8D -S31540018990210000307FFFE34090102000808A0010C4 -S315400189A012BFFFFD033FFFBF9A07BFF8821063C0A6 -S315400189B0A00340012D155555901000189210001036 -S315400189C07FFFE2C89415A15580A220001280004B7A -S315400189D0292AAAAA92100010901000187FFFE2D50A -S315400189E0941522AA80A220001280004E01000000A8 -S315400189F07FFFA21201000000912A20047FFFA1FB04 -S31540018A009002200A400001EE01000000921522006A -S31540018A10920C400990100018941000119610001203 -S31540018A207FFFE2ED981522AA80A220001280005114 -S31540018A30010000009215A10090100018920C400907 -S31540018A4094100011961000127FFFE2E39815A1558C -S31540018A5080A2200012800044010000007FFFA1F7A0 -S31540018A6001000000912A20047FFFA1E09002200B23 -S31540018A70901000137FFFE2BF9215A15580A22000FE -S31540018A801280003501000000901000137FFFE2B90B -S31540018A90921522AA80A220001280002C010000001B -S31540018AA07FFFA1E601000000912A20047FFFA1CFAC -S31540018AB0900220099010001392100017941000158F -S31540018AC07FFFE2B8961522AA80A220001280001BE1 -S31540018AD00100000090100013921000179410001529 -S31540018AE07FFFE2B09615A15580A2200002800025A5 -S31540018AF0010000003080000E7FFFA1C190102001CF -S31540018B00292AAAAA92100010901000187FFFE28924 -S31540018B10941522AA80A2200002BFFFB601000000E0 -S31540018B207FFFA1B79010200230BFFFB27FFFA1B4F3 -S31540018B3090102008308000137FFFA1B190102007CC -S31540018B4010BFFFE6901000137FFFA1AD90102006E5 -S31540018B5030BFFFD47FFFA1AA9010200510BFFFCCE4 -S31540018B60901000137FFFA1A69010200430BFFFBCD8 -S31540018B707FFFA1A39010200310BFFFB09215A10063 -S31540018B807FFFFB3CB0102000400001900100000037 -S31540018B900100000081C7E00881E800009DE3BF981D -S31540018BA07FFFA18D1100412CDA062004D80620044E -S31540018BB09A0B6003993B200282102007C2262008A7 -S31540018BC0BA036001B20B27FF010000009010200A92 -S31540018BD0C02600007FFFA1850100000017000200AA -S31540018BE082103FFFC226000B032AAAAA1B15555520 -S31540018BF0D806000BAC102000821062AA9A13615568 -S31540018C00AA0B000180A5801D16800038A80B000D17 -S31540018C109612E020A72E600880A4E0000480000C94 -S31540018C20A2102000832DA0028200401819000200E4 -S31540018C309A10000BE820400CEA20400DA204601077 -S31540018C4080A4C01114BFFFFC82006040AC05A001A6 -S31540018C5080A5801D06BFFFF280A4E000AC10200075 -S31540018C6080A5801D1680002103000200B8106020F7 -S31540018C70A72E6008AE10001880A4E00004800017FB -S31540018C80A210200003000200A4060001A005C01C9A -S31540018C90C2048000A2046010A404A04080A0401435 -S31540018CA002800004901020017FFFA15501000000C1 -S31540018CB0C2040000A004204080A0401502800004A8 -S31540018CC0901020017FFFA14E0100000080A4C01139 -S31540018CD014BFFFF001000000AC05A00180A5801D76 -S31540018CE006BFFFE6AE05E0047FFFA1409010200CD1 -S31540018CF0AC10200080A5801D1680008803155555AF -S31540018D009E1061551B000800032AAAAA9A13600403 -S31540018D10901062AAA72E600880A4E0000480000E8D -S31540018D20A2102000832DA0138200401813000800D2 -S31540018D309410000F9610000D98100008D420400999 -S31540018D40D820400BA204600280A4C01114BFFFFCCE -S31540018D5082006008AC05A00180A5801D06BFFFF01A -S31540018D6080A4E000AC10200080A5801D1680006B19 -S31540018D7003155555B81061551B000800032AAAAAC8 -S31540018D80B6136004B41062AAA72E600880A4E0005E -S31540018D9004800019A2102000832DA013A0004018C2 -S31540018DA02F000800AA10001CA810001BA410001ACE -S31540018DB0C2040017A204600280A04015028000048C -S31540018DC0901020037FFFA10E01000000C204001491 -S31540018DD0A004200880A040120280000490102003C5 -S31540018DE07FFFA1070100000080A4C01114BFFFF15D -S31540018DF001000000AC05A00180A5801D06BFFFE56E -S31540018E0080A4E000AC10200080A5801D16800043A0 -S31540018E10030008009E1060041B155555032AAAAA93 -S31540018E209A136155901062AAA72E600880A4E000AB -S31540018E300480000EA2102000832DA013820040184A -S31540018E40130008009410000F9610000D98100008AA -S31540018E50D620400AD8204009A204600280A4C0114D -S31540018E6014BFFFFC82006008AC05A00180A5801DEF -S31540018E7006BFFFF080A4E000AC10200080A5801D55 -S31540018E801680002603155555B81061551B2AAAAA06 -S31540018E9003000800A72E6008B61362AAB410600446 -S31540018EA080A4E00004800019A2102000832DA013A5 -S31540018EB0A00040182F000800AA10001CA810001B93 -S31540018EC0A410001AC2040012A204600280A0401538 -S31540018ED002800004901020047FFFA0C90100000019 -S31540018EE0C2040017A004200880A040140280000498 -S31540018EF0901020047FFFA0C20100000080A4C01191 -S31540018F0014BFFFF101000000AC05A00180A5801D42 -S31540018F1006BFFFE580A4E00082102005C226200896 -S31540018F201B200000DA26000081C7E00881E8000026 -S31540018F3081C3E00891444000808000001510014043 -S31540018F409412A18090102000921022468180000048 -S31540018F50010000000100000001000000D002800075 -S31540018F609122400881C3E008010000008180000091 -S31540018F70901020018090200180D020011280002C89 -S31540018F800100000080D23FFF168000290100000049 -S31540018F9080DA3FFF9340000080A27FFF12800024C9 -S31540018FA00100000080D23FFF9348000093326014D5 -S31540018FB0920A600F80A260081280001D0100000025 -S31540018FC08180000090102001945220049452A00404 -S31540018FD09452A00496A2A040128000150100000000 -S31540018FE0818000009010200280A000003280001095 -S31540018FF09052000880A220021280000D010000005C -S31540019000818000009010200280A000000100000035 -S31540019010328000079052000880A22002128000048C -S315400190200100000081C3E0089010200181C3E008DF -S31540019030901000001315555592126155A5824000B6 -S31540019040010000000100000001000000954480007D -S3154001905080A2400A1280004301000000923A40007B -S31540019060A58240000100000001000000010000004F -S315400190709544800080A2400A1280003A0100000017 -S315400190801100003F901223FFA5800000818000005F -S3154001909001000000010000000100000093F23FFFC3 -S315400190A09A10000993F23FFF93F23FFF93F23FFF7D -S315400190B093F23FFF93F23FFF93F23FFF93F23FFF5D -S315400190C09940000097448000153FFC009412A00887 -S315400190D080A2400A1280002380A2400B1280002108 -S315400190E080A320071280001F113FFF8090122001AC -S315400190F080A340081280001B1100003F901223FFFD -S31540019100A5800000818000000100000001000000F0 -S315400191100100000093FA3FFF93FA3FFF93FA3FFFA6 -S3154001912093FA3FFF93FA3FFF93FA3FFF93FA3FFFCC -S3154001913093FA3FFF994000009744800080A260085F -S315400191401280000880A260081280000680A32000D9 -S31540019150128000040100000081C3E0089010200144 -S3154001916081C3E00890100000818000009010200229 -S3154001917080A00000328000109072000880A2200278 -S315400191801280000D01000000818000009010200235 -S3154001919080A00000010000003280000790720008A4 -S315400191A080A22002128000040100000081C3E00871 -S315400191B09010200181C3E00890100000C0A000403B -S315400191C081C3E00801000000110020409012200FE9 -S315400191D0D0A0004081C3E008010000009DE3BF9894 -S315400191E07FFFE12D90102008A21000087FFFE12AA1 -S315400191F09010200C833C60149B3A2014A13A20180D -S31540019200A33C6018A20C6003A00C20038208600FE7 -S315400192109A0B600F8200600A9A03600AA2046001F9 -S31540019220A0042001A32C40017FFFFFE5A12C000DE6 -S315400192307FFFE090901000117FFFE09C901000109E -S315400192407FFFF98C010000007FFFFFE081E800000D -S315400192500100000098120009818200009AAB2FFF9D -S315400192600280002598880000992300099923000966 -S315400192709923000999230009992300099923000993 -S315400192809923000999230009992300099923000983 -S315400192909923000999230009992300099923000973 -S315400192A09923000999230009992300099923000963 -S315400192B09923000999230009992300099923000953 -S315400192C09923000999230009992300099923000943 -S315400192D09923000999230009992300099923000933 -S315400192E099230009992300099923000081C3E008C5 -S315400192F09140000099230009992300099923000907 -S315400193009923000999230009992300099923000902 -S3154001931099230009992300099923000999230009F2 -S3154001932099230009992300009B400000992B200CAA -S315400193309B33601481C3E0089013400C1080000BEE -S31540019340861020008092400816800008861000088A -S31540019350809240001680000480920000168000032F -S3154001936092200009902000089A9240001280000540 -S315400193709610000891D0200281C3E00890100000A9 -S3154001938080A2C00D0A8000959410000003020000DF -S3154001939080A2C0010A8000289810000080A34001E5 -S315400193A01A80000D841020019B2B600410BFFFFC26 -S315400193B0980320019A83400D1A8000078400A0017A -S315400193C0832860049B3360019A03400110800007A3 -S315400193D08420A00180A3400B0ABFFFF701000000D3 -S315400193E0028000020100000084A0A00106800076F0 -S315400193F0010000009622C00D941020011080000A41 -S3154001940001000000952AA001068000059B336001FA -S315400194109622C00D108000049402A0019602C00D50 -S315400194209422A00184A0A00116BFFFF78092C0003C -S31540019430308000659B2B600480A3400B08BFFFFE74 -S315400194409883200102800065982320018092C00004 -S31540019450952AA0040680002F9B33600196A2C00D79 -S31540019460068000179B33600196A2C00D0680000B53 -S315400194709B33600196A2C00D068000059B336001B7 -S3154001948096A2C00D108000509402A00F9682C00D86 -S315400194901080004D9402A00D9682C00D06800005F5 -S315400194A09B33600196A2C00D108000479402A00B29 -S315400194B09682C00D108000449402A0099682C00D88 -S315400194C00680000B9B33600196A2C00D0680000505 -S315400194D09B33600196A2C00D1080003B9402A00709 -S315400194E09682C00D108000389402A0059682C00D68 -S315400194F0068000059B33600196A2C00D10800032A4 -S315400195009402A0039682C00D1080002F9402A00100 -S315400195109682C00D068000179B33600196A2C00D4E -S315400195200680000B9B33600196A2C00D06800005A4 -S315400195309B33600196A2C00D108000239402BFFFA9 -S315400195409682C00D108000209402BFFD9682C00D08 -S31540019550068000059B33600196A2C00D1080001A5B -S315400195609402BFFB9682C00D108000179402BFF98A -S315400195709682C00D0680000B9B33600196A2C00DFA -S31540019580068000059B33600196A2C00D1080000E37 -S315400195909402BFF79682C00D1080000B9402BFF56E -S315400195A09682C00D068000059B33600196A2C00DD0 -S315400195B0108000059402BFF39682C00D1080000210 -S315400195C09402BFF198A3200116BFFFA28092C0006A -S315400195D0268000029602C0098090C00026800002C3 -S315400195E09620000B81C3E0089010000B92100008F2 -S315400195F09010200094102000961020008213C00085 -S31540019600400000039E104000010000009DE3BF980A -S3154001961023100143400005F6901460F40310006DD9 -S31540019620E0006178D004214880A220002280002DEC -S315400196309004214CD602200480A2E01F1480001D14 -S315400196400100000080A620001280000B94022088B1 -S31540019650832AE0029A02E00182004008DA222004CD -S31540019660F2206008400005FA901460F41080002250 -S31540019670B0102000821020019328400B992AE00265 -S31540019680DA02A1009A1340098203000AF62060809B -S31540019690F422800C80A6200212BFFFEEDA22A1003E -S315400196A0C202A1048210400910BFFFEAC222A104EE -S315400196B0400000139010219080A220000280000BF0 -S315400196C096102000C2042148C2220000D02421481D -S315400196D0C0222004C022218810BFFFDBC022218C7A -S315400196E010BFFFD5D0242148400005D9901460F41D -S315400196F0B0103FFF81C7E00881E8000092100008E2 -S3154001970003100141D00063708213C0004000000A7B -S315400197109E10400001000000921000080310014114 -S31540019720D00063708213C000400002199E104000B1 -S31540019730010000009DE3BF988206600B80A0601681 -S31540019740A610001818800003A0087FF8A01020106A -S3154001975080A400199A4020008334201F8090400D38 -S31540019760128001B0B0102000400001B090100013EB -S3154001977080A421F718800017993420093910014136 -S315400197808217238098040001F003200C80A6000C68 -S315400197900280004E9F342003C206200494087FFCB9 -S315400197A09A06000AC203600482106001D006200CAA -S315400197B0D2062008D2222008C2236004D022600C9F -S315400197C0400001A09010001310800196B0062008B9 -S315400197D080A32000128000289F34200339100141C4 -S315400197E09B2BE003821723809A0340011080000AD5 -S315400197F0F003600C94087FFC9622801080A2E00F53 -S315400198001480010980A2E00036BFFFE79A06000AEC -S31540019810F006200C80A6000D32BFFFF7C2062004D9 -S315400198209E03E001251001419814A388F003200806 -S3154001983080A6000C0280005D833BE01FC206200427 -S3154001984094087FFC9622801080A2E00F1480009F2E -S3154001985080A2E000D823200C06800023D8232008CC -S315400198609A06000AC20360048210600110BFFFD548 -S31540019870C22360048334200680A3200408BFFFD896 -S315400198809E00603880A3201408BFFFD59E03205B4D -S315400198908334200C80A3205408BFFFD19E00606E04 -S315400198A08334200F80A3215408BFFFCD9E006077EB -S315400198B08334201280A3255408BFFFC99E00607CD3 -S315400198C010BFFFC79E10207E98062008F003200C8B -S315400198D080A6000C32BFFFB2C206200410BFFFD2E1 -S315400198E09E03E00280A2A1FF088000BE9B32A00336 -S315400198F09732A00980A2E0002280001796172380A4 -S315400199008332A00680A2E004088000129A006038E3 -S3154001991080A2E0140880000F9A02E05B8332A00C1B -S3154001992080A2E0540880000B9A00606E8332A00F3B -S3154001993080A2E154088000079A0060778332A01222 -S3154001994080A2E554088000039A00607C9A10207E2C -S3154001995096172380832B60039000400BD202200888 -S3154001996080A240082280010F99336002C20260043E -S3154001997082087FFC80A0400A28800007D002600C44 -S31540019980D202600880A2400832BFFFFAC2026004D8 -S31540019990D002600CD026200CD2262008F022600C82 -S315400199A0F0222008833BE01F8330601E8203C00102 -S315400199B03910014183386002981723809A1020019B -S315400199C0932B4001D803200480A2400C1880004B01 -S315400199D0AE172380808B00091280000D03100141D0 -S315400199E0820BFFFC92024009808B0009128000071E -S315400199F09E0060048210000C920240098088400952 -S31540019A0002BFFFFE9E03E00403100141A2106380E2 -S31540019A10A8100011832BE003980040119010000F0D -S31540019A209A10000C1080000AF003600C94087FFC29 -S31540019A309622801080A2E00F1480007D80A2E00073 -S31540019A403680008B9A06000AF006200C80A6000D8F -S31540019A5032BFFFF7C20620049E03E001808BE0037C -S31540019A6012BFFFF19A036008808A200398033FF8EA -S31540019A70028000D490023FFFC203200880A0400C20 -S31540019A8002BFFFFB808A200392024009C2052004DF -S31540019A9080A24001188000183910014180A260005F -S31540019AA0128000068088400910800014AE1723807A -S31540019AB09E03E0048088400922BFFFFE92024009CE -S31540019AC010BFFFD6832BE0038214200194060010B9 -S31540019AD0C2262004D423200CD42320088212E0017C -S31540019AE0D622800BD822A008C222A00410BFFF357F -S31540019AF0D822A00CAE172380F005E008C206200448 -S31540019B00AA087FFC80A540109A4020009625401067 -S31540019B1080A2E00F14800042821020018093400110 -S31540019B200280002703100143DA0061982D1001419C -S31540019B309A04000DC205A378A810001580A07FFFE6 -S31540019B40A203601002800004A406001582046FFF80 -S31540019B50A208700090100013400000C0921000113E -S31540019B6080A23FFF02800008B210000880A20012C6 -S31540019B701A8000463B10014380A60017228000440C -S31540019B80C207616882172380D8006008DA0320047F -S31540019B909A0B7FFC80A340109840200096234010EA -S31540019BA080A2E00F04800003821020018210200071 -S31540019BB080930001128000980100000098172380CD -S31540019BC0F003200882142001C22620049A060010C0 -S31540019BD08212E001C223600410BFFEFADA23200894 -S31540019BE098033FF8832B60039000400C9B3360023F -S31540019BF0821020018328400DD2022008DA03200476 -S31540019C009A134001D026200CD2262008F022600C5F -S31540019C10DA23200410BFFF64F022200810BFFFC0E2 -S31540019C208210200010BFFEFF9E03FFFFD006200CCE -S31540019C30D20620089A142001940600108214A388A3 -S31540019C40D2222008D022600CDA262004D420600CCF -S31540019C50D42060089A12E001D622800BC222A008C5 -S31540019C60DA22A00410BFFED7C222A00CC2036004B0 -S31540019C7082106001D006200CD2062008C22360045F -S31540019C8010BFFECFD2222008C20761688200401170 -S31540019C9080A640120280004FC2276168C205A378A0 -S31540019CA080A07FFF02800045C20761689A26401264 -S31540019CB08200400DC22761689A8E600702800005C6 -S31540019CC0A410200082102008A420400DB2064012A4 -S31540019CD09A0640119A0B6FFF030000048220400D43 -S31540019CE0A4048001901000134000005C9210001201 -S31540019CF080A23FFF2280003FA4102000822200194B -S31540019D009000401282172380DA0761689A03401255 -S31540019D1080A60001F2206008DA27616802800037D8 -S31540019D208212200180A5600F38800005C22660049A -S31540019D308210200110BFFF94C2266004C20620048F -S31540019D409A057FF4A80B7FF88208600182104014BF -S31540019D50C22620049A06001482102005C2236008F8 -S31540019D6080A5200F18800027C223600419100143E3 -S31540019D70DA076168C203219480A34001388000025A -S31540019D80DA23219419100143C203219080A3400193 -S31540019D9038BFFF7DDA23219010BFFF7C82172380D5 -S31540019DA09A102001C202E0049B2B400C8210400D08 -S31540019DB010BFFEF9C222E00410BFFFC0F225A3780E -S31540019DC0C20460048228400910BFFF30C2246004E7 -S31540019DD0808E6FFF12BFFFB3C205A3789004401473 -S31540019DE0DA05E0088212200110BFFFE1C2236004B8 -S31540019DF010BFFFC39010001910BFFFDDC2266004DB -S31540019E0092062008400000629010001310BFFFD94F -S31540019E10191001434000000B90100013B0102000B0 -S31540019E2081C7E00881E800001110014290122388A1 -S31540019E308213C000400003EE9E1040000100000066 -S31540019E4011100142901223888213C0004000040081 -S31540019E509E104000010000009DE3BF98211001447F -S31540019E60C02421704000020D9010001980A23FFFCE -S31540019E7012800006C204217080A0600002800003A7 -S31540019E8001000000C226000081C7E00891E80008F1 -S31540019E909DE3BF987FFFFFE5901000180310014135 -S31540019EA0A2106380DA046008C2036004A0087FFC44 -S31540019EB0B2240019B2066FEFB20E7000B2067000FE -S31540019EC09210200080A66FFF0480000A90100018AF -S31540019ED07FFFFFE201000000C204600882004010DB -S31540019EE080A04008922000190280000590100018B9 -S31540019EF07FFFFFD4B0102000308000237FFFFFD7C3 -S31540019F00901000188224001980A23FFF8210600140 -S31540019F1092102000191001430280000B9010001886 -S31540019F20DA046008C2236004C20321688220401912 -S31540019F30901000187FFFFFC3C223216810800012D2 -S31540019F40B01020017FFFFFC50100000098100008F6 -S31540019F50D6046008A023000B9010001880A4200F9F -S31540019F6004BFFFE4B214200103100141DA00637813 -S31540019F709A23000D03100143DA20616810BFFFDD0B -S31540019F80F222E00481C7E00881E800009DE3BF9822 -S31540019F9080A660000280009DA41000187FFFFFA3E9 -S31540019FA090100018A0067FF8D6042004900AFFFE00 -S31540019FB01910014194040008A2132380DA02A00477 -S31540019FC0C204600880A0400A028000449E0B7FFCC8 -S31540019FD0808AE001DE22A0041280000CB01020002D -S31540019FE0F2067FF8A024001982046008DA042008EA -S31540019FF080A340010280007D90020019D204200C0A -S3154001A000DA226008D223600C8202800FDA006004F3 -S3154001A010808B60011280000A8212200180A62000F6 -S3154001A020028000229002000FDA02A008D202A00CA0 -S3154001A030DA226008D223600C82122001C224200455 -S3154001A04080A6200002800005D0240008B01000122E -S3154001A0507FFFFF7C81E8000080A221FF1880003647 -S3154001A060973220099B32200398132380832B600368 -S3154001A0709200400C9B336002821020018328400DE0 -S3154001A080D6026008DA0320049A134001D224200C38 -S3154001A090D6242008E022E00CDA232004E0226008DE -S3154001A0A010BFFFECB010001203100141DA02A00804 -S3154001A0B08210638880A3400132BFFFDED202A00C2A -S3154001A0C0E023600CE0236008DA242008DA24200C1F -S3154001A0D010BFFFDAB0102001808AE001128000092A -S3154001A0E09002000FF2067FF8A0240019D204200C3A -S3154001A0F0D6042008D622600890020019D222E00C2C -S3154001A10003100141DA00637C98122001E0246008C3 -S3154001A11080A2000D0ABFFFCFD824200403100143BB -S3154001A120D20061987FFFFF5B901000127FFFFF45D1 -S3154001A13081E8000080A2E000028000169B322003E5 -S3154001A1408332200680A2E004088000129A0060381B -S3154001A15080A2E0140880000F9A02E05B8332200C53 -S3154001A16080A2E0540880000B9A00606E8332200F73 -S3154001A17080A2E154088000079A006077833220125A -S3154001A18080A2E554088000039A00607C9A10207EE4 -S3154001A19094132380832B60039200400AD602600801 -S3154001A1A080A2C0090280001399336002C202E00412 -S3154001A1B082087FFC80A0400828800007D202E00C7C -S3154001A1C0D602E00880A2C00932BFFFFAC202E0040B -S3154001A1D0D202E00CD224200CD6242008E022E00C46 -S3154001A1E010BFFFB0E022600810BFFF88B010200109 -S3154001A1F09A102001C202A0049B2B400C8210400DF4 -S3154001A20010BFFFF5C222A00481C7E00881E8000023 -S3154001A2109DE3BF98D206400080A2600012800004F0 -S3154001A220901000187FFFFF5A81E800007FFFFFF979 -S3154001A230010000007FFFFF5681E800000100000099 -S3154001A2409DE3BF9803100141DA00637080A6000DBB -S3154001A2500280004101000000D206204C80A260002D -S3154001A2601280001CA0102000D206214880A2600066 -S3154001A2702280000FD2062054A006214C80A2401015 -S3154001A2802280000BD206205410800005B21000092E -S3154001A290F20640007FFFFF3E9010001880A400198F -S3154001A2A012BFFFFC92100019D206205480A2600012 -S3154001A2B01280002501000000C206203880A06000FF -S3154001A2C0028000250100000010800017C206203CD4 -S3154001A2D0832C2002F202400180A660002280000BFE -S3154001A2E0A004200192100019F20640007FFFFF28CA -S3154001A2F09010001880A6600012BFFFFC9210001952 -S3154001A300D206204CA004200180A4200E04BFFFF2F7 -S3154001A310832C20027FFFFF1E9010001810BFFFD430 -S3154001A320D20621489FC0400090100018F20622E054 -S3154001A33080A6600002800008010000007FFFFFB593 -S3154001A34081E800007FFFFF129010001810BFFFDC6C -S3154001A350C206203881C7E00881E800009DE3BF9826 -S3154001A36080A620000280001D03100141E406214819 -S3154001A37080A4A00022800013C206203CE204A0046F -S3154001A380A2847FFF0C80000A832C60028200401267 -S3154001A390A0006008C20400009FC04000A0043FFC2A -S3154001A3A0A2847FFF3CBFFFFDC2040000E40480009D -S3154001A3B080A4A00032BFFFF3E204A004C206203C01 -S3154001A3C080A0600002800007010000009FC040009D -S3154001A3D0901000183080000310BFFFE5F000637055 -S3154001A3E081C7E00881E800001080000B861020003C -S3154001A3F08092400816800008861A400880924000E4 -S3154001A4001680000480920000168000039220000905 -S3154001A410902000089A92400012800005961000088C -S3154001A42091D0200281C3E0089010000080A2C00DA7 -S3154001A4300A800095941000000302000080A2C0012A -S3154001A4400A8000289810000080A340011A80000D60 -S3154001A450841020019B2B600410BFFFFC9803200150 -S3154001A4609A83400D1A8000078400A0018328600466 -S3154001A4709B3360019A034001108000078420A001AC -S3154001A48080A3400B0ABFFFF70100000002800002D3 -S3154001A4900100000084A0A0010680007601000000B2 -S3154001A4A09622C00D941020011080000A0100000080 -S3154001A4B0952AA001068000059B3360019622C00DB6 -S3154001A4C0108000049402A0019602C00D9422A001BE -S3154001A4D084A0A00116BFFFF78092C00030800065BE -S3154001A4E09B2B600480A3400B08BFFFFE988320018D -S3154001A4F002800065982320018092C000952AA0041D -S3154001A5000680002F9B33600196A2C00D068000177E -S3154001A5109B33600196A2C00D0680000B9B33600100 -S3154001A52096A2C00D068000059B33600196A2C00D20 -S3154001A530108000509402A00F9682C00D1080004DED -S3154001A5409402A00D9682C00D068000059B336001E2 -S3154001A55096A2C00D108000479402A00B9682C00DB2 -S3154001A560108000449402A0099682C00D0680000B1B -S3154001A5709B33600196A2C00D068000059B336001A6 -S3154001A58096A2C00D1080003B9402A0079682C00D92 -S3154001A590108000389402A0059682C00D0680000501 -S3154001A5A09B33600196A2C00D108000329402A00335 -S3154001A5B09682C00D1080002F9402A0019682C00D94 -S3154001A5C0068000179B33600196A2C00D0680000BE2 -S3154001A5D09B33600196A2C00D068000059B33600146 -S3154001A5E096A2C00D108000239402BFFF9682C00D33 -S3154001A5F0108000209402BFFD9682C00D06800005A2 -S3154001A6009B33600196A2C00D1080001A9402BFFBD5 -S3154001A6109682C00D108000179402BFF99682C00D34 -S3154001A6200680000B9B33600196A2C00D0680000593 -S3154001A6309B33600196A2C00D1080000E9402BFF7B5 -S3154001A6409682C00D1080000B9402BFF59682C00D14 -S3154001A650068000059B33600196A2C00D108000055F -S3154001A6609402BFF39682C00D108000029402BFF19E -S3154001A67098A3200116BFFFA28092C0002680000247 -S3154001A6809422A0018090C000268000029420000AF6 -S3154001A69081C3E0089010000A19100144DA032174BD -S3154001A6A080A3600012800006820340080310014423 -S3154001A6B09A106188DA23217482034008C2232174E7 -S3154001A6C081C3E0089010000DA7500000AE100001B4 -S3154001A6D08334E00129100143E8052038A92CC01430 -S3154001A6E08215000181E000008190400001000000D8 -S3154001A6F00100000001000000E03BA000E43BA0088F -S3154001A700E83BA010EC3BA018F03BA020F43BA0286E -S3154001A710F83BA030FC3BA03881E8000082100017CE -S3154001A72081C4400081CC800001000000010000008E -S3154001A73001000000A7500000A92CE0012B100143A5 -S3154001A740EA056038AB34C015AA154014819540001E -S3154001A75001000000010000000100000081E8000046 -S3154001A76081E80000E01BA000E41BA008E81BA01044 -S3154001A770EC1BA018F01BA020F41BA028F81BA0304E -S3154001A780FC1BA03881E0000081E0000081C440004C -S3154001A79081CC8000A75000002910006CADC5210472 -S3154001A7A00100000027100143A614E018E024C00070 -S3154001A7B0818C202001000000010000000100000002 -S3154001A7C09DE3BFA09DE3BFA09DE3BFA09DE3BFA0C6 -S3154001A7D09DE3BFA09DE3BFA09DE3BFA081E800002C -S3154001A7E081E8000081E8000081E8000081E800007E -S3154001A7F081E8000081E8000027100143A614E01813 -S3154001A800C024C000E203A068A4046004E223A0645B -S3154001A810E423A06810800262AC10000029100142B6 -S3154001A820A81523FCC2252000C8252004E0252010B8 -S3154001A830E2252014E4252018E825201C81E80000A3 -S3154001A8408348000082106F0081886020010000006B -S3154001A850010000000100000009100143C801203831 -S3154001A86081E000008821200180A920FF02800003A9 -S3154001A870010000000100000080A1000012BFFFF9A5 -S3154001A8800100000009100143C801203881E8000099 -S3154001A89080A920FF028000030100000001000000A2 -S3154001A8A08821200180A1000012BFFFF901000000AC -S3154001A8B081E0000029100142A81523FCC8052004A7 -S3154001A8C0C2052000E0052010E2052014E405201809 -S3154001A8D0C025201C818C20000100000001000000E1 -S3154001A8E00100000081C4800081CCA004A0142F0087 -S3154001A8F0818C000001000000010000000100000001 -S3154001A90081C4800081CCA00480A66002128000052B -S3154001A910A8142F00818D0000B01420203080001F24 -S3154001A92080A6600312800006A80E2F00AA2C2F00D5 -S3154001A930A8154014818D00003080001880A660045F -S3154001A94012800008A9480000A8152040818D00000A -S3154001A9500100000001000000010000003080000FEE -S3154001A96080A6600512800008A9480000A82D204055 -S3154001A970818D00000100000001000000010000007F -S3154001A9803080000680A660061280000301000000A8 -S3154001A99030BFFFA391D0200081C4800081CCA004A8 -S3154001A9A09210200381C3E00891D020029210200228 -S3154001A9B081C3E00891D020029210200681C3E008AD -S3154001A9C091D0200281C3E0080100000081C3E00864 -S3154001A9D00100000081C3E00801000000AE25A0107F -S3154001A9E0A75000002D10006AAC15A1F02910006C8B -S3154001A9F081C522AC010000001110014390122024B0 -S3154001AA00D202000092026001D2220000932DE0089A -S3154001AA10902C2F0092120009111001439012201C14 -S3154001AA20D002000080A000082280000292126F002E -S3154001AA30818A602001000000010000000100000041 -S3154001AA4090100017400000319203A06092142F002D -S3154001AA50818A602001000000010000000100000021 -S3154001AA601110014390122024D2020000922260016B -S3154001AA70D22200001080022DAC1000001B100144B0 -S3154001AA809A13602C912A2002C2034008C222600C0C -S3154001AA9081C3E008D22340089DE3BF9803100144D7 -S3154001AAA08210602C992E60021B100143972E600480 -S3154001AAB0D800400C9A13622C901000199202C00DD6 -S3154001AAC080A6601F1480000F8210200010800006AF -S3154001AAD080A320002280000AC2024000D803200C35 -S3154001AAE080A3200012BFFFFC80A300097FFFFFE483 -S3154001AAF0F02240001080000382102000F022400026 -S3154001AB0081C7E00891E800019DE3BF981B1001430E -S3154001AB1082136028D800600480A300180280004494 -S3154001AB20C203602880A6200022800002B010000CDB -S3154001AB3003100144A32E20028210602CE000401134 -S3154001AB4080A420000280003D0310014310800012C2 -S3154001AB50A41061A8D2042008941000199FC30000D4 -S3154001AB609010001803100143C20061A080A060004C -S3154001AB701280002B01000000C204801182007FFF79 -S3154001AB80C2248011E004200C80A420000280002B06 -S3154001AB9001000000D804000080A3200022BFFFFB73 -S3154001ABA0E004200C03100143DA00622880A3600010 -S3154001ABB0128000089610001203100143821061A80A -S3154001ABC0DA00401180A3600032BFFFF0E004200CA0 -S3154001ABD0DA02C011031001439A036001C20061A465 -S3154001ABE080A0600002BFFFDCDA22C0119FC0400096 -S3154001ABF001000000D8040000D20420089410001976 -S3154001AC009FC300009010001803100143C20061A0C9 -S3154001AC1080A0600022BFFFDAC20480119FC04000BD -S3154001AC200100000010BFFFD6C2048011DA0060C0E7 -S3154001AC3010BFFFBDB00B601F81C7E00881E800006F -S3154001AC408C10000FA74800008B34E0188A09600F6A -S3154001AC5080A160030280000C0B1001438A11603011 -S3154001AC600920000088112070C82140000B100143C3 -S3154001AC708A1160500920000088112040C8214000F7 -S3154001AC80108000399010200192102006400001DD0D -S3154001AC900100000080A0000802800033010000008E -S3154001ACA0C2022010113FFC0082084008110003FC3B -S3154001ACB08410400890100002921020019410200C3C -S3154001ACC0400001E60100000080A000080280002645 -S3154001ACD001000000400001F6921000010B100143F3 -S3154001ACE08A116030D221400090100002921020015A -S3154001ACF094102011400001D90100000080A00008F5 -S3154001AD000280001901000000400001E99210000193 -S3154001AD10920260100B1001438A116050D22140000B -S3154001AD2090100002921020019410200D400001CB9A -S3154001AD300100000080A000080280000B0100000015 -S3154001AD40400001DB921000010B1001438A1160287B -S3154001AD50D2214000D40260109532A010940AA00F6F -S3154001AD60D42160049E10000681C3E0080100000062 -S3154001AD7003100143821060488210200191D02000C7 -S3154001AD8081C3E008010000009DE3BF980310014420 -S3154001AD90C20060C8901000189210001980A060008F -S3154001ADA002800005B01020009FC040000100000055 -S3154001ADB0B010000881C7E00881E800009DE3BF9814 -S3154001ADC003100144C20060C49010001880A06000C6 -S3154001ADD002800005B01020009FC040000100000025 -S3154001ADE0B010000881C7E00881E800009DE3BF98E4 -S3154001ADF003100144C20060BC9010001880A060009E -S3154001AE0002800005B01020009FC0400001000000F4 -S3154001AE10B010000881C7E00881E800009DE3BF98B3 -S3154001AE2003100144C20060C09010001880A0600069 -S3154001AE3002800005B01020009FC0400001000000C4 -S3154001AE40B010000881C7E00881E800009DE3BF9883 -S3154001AE5003100144C20060B89010001880A0600041 -S3154001AE6002800005B01020009FC040000100000094 -S3154001AE70B010000881C7E00881E800009DE3BF9853 -S3154001AE8003100144C20060B49010001880A0600015 -S3154001AE9002800005B01020009FC040000100000064 -S3154001AEA0B010000881C7E00881E800009DE3BF9823 -S3154001AEB003100144C20060B09010001880A06000E9 -S3154001AEC002800005B01020009FC040000100000034 -S3154001AED0B010000881C7E00881E800009DE3BF98F3 -S3154001AEE003100144C20060AC901000189210001982 -S3154001AEF080A0600002800005B01020009FC0400085 -S3154001AF0001000000B010000881C7E00881E8000098 -S3154001AF10010000000310006B821063E09FC04000F7 -S3154001AF20010000000310000082106000819840007B -S3154001AF300310006C821060649FC040000100000055 -S3154001AF400310006B821063D09FC0400001000000D7 -S3154001AF508B4800008B3160188A09600380A1600329 -S3154001AF6012800007010000008B4440008B31601CB9 -S3154001AF7080A1400012800006010000007FFFFF31E2 -S3154001AF80010000007FFF9879010000009C23A0404A -S3154001AF907FFF981C010000008210200191D0200003 -S3154001AFA00100000029000004A68C00143280000331 -S3154001AFB0A02C001491D02000818C000001000000DB -S3154001AFC0010000000100000081C4800081CCA00482 -S3154001AFD081C3E0080100000081C1E00801000000D2 -S3154001AFE0A74800008B34E0188A09600380A16003FA -S3154001AFF0128000080100000021100143A0142040E6 -S3154001B000A2102003E22400008B4440001080000877 -S3154001B01021100143A0142040A2102002E224000086 -S3154001B02021200000E60420248B34E0148A09601FA5 -S3154001B03027100143A614E038CA24C0008A016001E2 -S3154001B04027100143A614E034CA24C0002710014347 -S3154001B050A614E03C8A216002CA24C00081C3E008EC -S3154001B0600100000081C3E0080100000083480000A0 -S3154001B070833060188208600380A060031280000656 -S3154001B0800100000083444000050000088228400278 -S3154001B090A3804000881000000910006B81C1231471 -S3154001B0A0010000009DE3BF980310006D1B10006D69 -S3154001B0B0A01061609A13616080A4000D1A8000108F -S3154001B0C0A210000D10800006C204000080A40011E9 -S3154001B0D01A80000B01000000C204000080A060003D -S3154001B0E002BFFFFBA00420049FC0400001000000F6 -S3154001B0F080A400112ABFFFFAC204000081C7E008FC -S3154001B10081E80000AA27A0B0E0256060E2256064DE -S3154001B110E4256068C2256074C43D6078C83D60809E -S3154001B120CC3D608885400000C425606CF03D609050 -S3154001B130F43D6098F83D60A0FC3D60A8A810200150 -S3154001B140A92D0010808D001302800013010000001C -S3154001B1508534E00107100143C600E038A72CC0033F -S3154001B1608414C0028408A0FF81E000008190A00001 -S3154001B170E03BA000E43BA008E83BA010EC3BA01854 -S3154001B180F03BA020F43BA028F83BA030FC3BA03884 -S3154001B19081E8000081C5A0089C10001505100143F7 -S3154001B1A08410A19CC400800080A08000028000041D -S3154001B1B0010000009FC080009203A060818C2000A6 -S3154001B1C0821020028328401005100143C400A03498 -S3154001B1D085304002821040028550000080888001FF -S3154001B1E0028000208328A00107100143C600E038F1 -S3154001B1F08530800382104002820860FF81906000A2 -S3154001B200C203A06C81806000F01BA090F41BA09843 -S3154001B210F81BA0A0FC1BA0A8C203A074C41BA07865 -S3154001B220C81BA080CC1BA088E003A060E203A064F9 -S3154001B230E403A06881E80000E01BA000E41BA0082D -S3154001B240E81BA010EC1BA018F01BA020F41BA028A3 -S3154001B250F81BA030FC1BA0381080000F81E00000D5 -S3154001B260C203A06C81806000F01BA090F41BA098E3 -S3154001B270F81BA0A0FC1BA0A8C203A074C41BA07805 -S3154001B280C81BA080CC1BA088E003A060E203A06499 -S3154001B290E403A068818C2000010000000100000049 -S3154001B2A00100000081C4400081CC8000AA27A0B0E3 -S3154001B2B0C2256074C43D6078C83D6080CC3D6088DD -S3154001B2C085400000C425606CA8102001A92D0010FE -S3154001B2D0808D001302800013010000008534E001D7 -S3154001B2E007100143C600E038A72CC0038414C002EE -S3154001B2F08408A0FF81E000008190A000E03BA0000F -S3154001B300E43BA008E83BA010EC3BA018F03BA02092 -S3154001B310F43BA028F83BA030FC3BA03881E8000074 -S3154001B32081C5A0089C100015051001438410A19CFD -S3154001B330C400800080A0800002800004010000005B -S3154001B3409FC080009203A060818C20008210200261 -S3154001B3508328401005100143C400A03485304002C3 -S3154001B36082104002855000008088800102800019C9 -S3154001B3708328A00107100143C600E03885308003C9 -S3154001B38082104002820860FF81906000C203A06C77 -S3154001B39081806000C203A074C41BA078C81BA08032 -S3154001B3A0CC1BA08881E80000E01BA000E41BA0089C -S3154001B3B0E81BA010EC1BA018F01BA020F41BA02832 -S3154001B3C0F81BA030FC1BA0381080000881E000006B -S3154001B3D0C203A06C81806000C203A074C41BA07824 -S3154001B3E0C81BA080CC1BA088818C200001000000D6 -S3154001B3F0010000000100000081C4400081CC8000B2 -S3154001B400821000089A10380096102000912AE00513 -S3154001B41098034008D40340089132A01880A2000145 -S3154001B420328000089602E0019132A00C900A2FFF6B -S3154001B43080A20009028000079410000C9602E001E8 -S3154001B44080A2E00728BFFFF3912AE005941020006F -S3154001B45081C3E0089010000A82100008981020006D -S3154001B460912B20039A004008D60040089132E018FB -S3154001B47080A2000932800008980320019132E00C35 -S3154001B480900A2FFF80A2000A028000079610000D45 -S3154001B4909803200180A3200F28BFFFF3912B20039F -S3154001B4A09610200081C3E0089010000BD4022004BE -S3154001B4B0173FFC00920A400B900A800B9132200CF8 -S3154001B4C0921240081100003F901223F0940A80081E -S3154001B4D0952AA0049412800B920A400A81C3E0087F -S3154001B4E0901000099DE3BF980310006D82106148DA -S3154001B4F0DA007FFC80A37FFF02800009A0007FFC69 -S3154001B5008210000D9FC04000A0043FFCC204000011 -S3154001B51080A07FFF12BFFFFC0100000081C7E00849 -S3154001B52081E800009DE3BF9881C7E00881E80000FB -S3154001B53000000000000000000000000000000000C4 -S3154001B54000000002FFFFFFFF0000000000000000B6 -S3154001B55000000002FFFFFFFF0000000000000000A6 -S3154001B56040080000000000003CD203AF9EE756169B -S3154001B5703E7AD7F29ABCAF4840050220000000004F -S3154001B580430000009DE3BFA07FFF96DB0100000062 -S3154001B5907FFFFFD50100000081C7E00881E8000078 -S3154001B5A09DE3BFA07FFF96B60100000081C7E0087A -S3154001B5B081E80000000000000000000000000000DB -S315400200000000000100000000000000004001B55859 -S315400200102000000000000000000000000000000078 +S31540011C9085A00921C523000081C3E008D0030000C7 +S31540011CA01910008098132120D0230000D223200848 +S31540011CB0C1030000C303200885A009A1C523000074 +S31540011CC081C3E008D0030000191000809813212039 +S31540011CD0D0230000C103000083A00520C3230000D8 +S31540011CE081C3E008D00300001310008092126138CE +S31540011CF0C51A6008C11A400089A0084091A108C2CE +S31540011D0095A209C495A2894281C3E008D53A00004B +S31540011D101310008092126158C1024000C302600450 +S31540011D2085A0082087A088A189A0C9A289A10921E7 +S31540011D3081C3E008C92200009610200213100080DA +S31540011D4092126138151000809412A138D5024000D4 +S31540011D50D7028000D5220000D8020000131000806F +S31540011D609212615896A2E00112BFFFF901000000EC +S31540011D7081C3E0080100000013100080921261380F +S31540011D80151000809412A158C1028000C51A601036 +S31540011D9083A0082089A088C08BA109A18DA10942F1 +S31540011DA08FA1492691A0054681C3E008D13A00009A +S31540011DB01110008090122130C11A0000C51A00008E +S31540011DC0C91A0000CD1A0000D11A0000D51A000028 +S31540011DD0D91A0000DD1A0000E11A0000E51A0000D8 +S31540011DE0E91A0000ED1A0000F11A0000F51A000088 +S31540011DF0F91A0000FD1A000081C3E0080100000045 +S31540011E0029100080A81520F827100080A614E16843 +S31540011E10C12CC000E604C000A134E00EA00C20078E +S31540011E20A0A42002AE1020002D100080AC15A168A0 +S31540011E30AE05E001AC05A008C1358000C12D00000A +S31540011E40EA050000AB35600DAA8D600112BFFFF9AE +S31540011E5001000000808000100280002F2B3C1FFFF4 +S31540011E60AA1563FFA60CC015E6250000C10D0000AA +S31540011E702B100080AA1561742D100047AC15A2E005 +S31540011E80AE25E001E0054000E025800081D8200034 +S31540011E9001000000010000000100000001000000F7 +S31540011EA001000000010000000100000001000000E7 +S31540011EB001000000010000000100000001000000D7 +S31540011EC001000000010000000100000001000000C7 +S31540011ED001000000010000000100000001000000B7 +S31540011EE00000000080A5C00012BFFFE6AA056008F9 +S31540011EF0C12D0000E60500002B03C000A614C01545 +S31540011F00E6250000C10D000081C4400081CC80005F +S31540011F100100000081C4800081CCA00401000000C2 +S31540011F200100000081C3E008915800000100000053 +S31540011F3011100080901220F8C10A0000C022000052 +S31540011F40C10A0000C12A0000D40200001300038028 +S31540011F50942A800980A0000A3280004D9010200307 +S31540011F601303E000D223BFA0C023BFA4C10BBFA06F +S31540011F70C023BFA0151000809412A0E8C1028000C2 +S31540011F800100000001000000C10BBFA0C10BBFA4AE +S31540011F9083A00520C12BBFA0D003BFA0808A220009 +S31540011FA02280003B901020049010200015100080E4 +S31540011FB09412A108C5028000C902A008D102A00C52 +S31540011FC013100080921260E8C70240008DA0894438 +S31540011FD081A98AC8010000000380000501000000B4 +S31540011FE0901020011080002A01000000C5028000E7 +S31540011FF0C902A008D102A00C13100080921260E819 +S31540012000CB0240008DA0894481A98AC80100000005 +S315400120100380000501000000901020011080001C83 +S315400120200100000025100080A414A0F0C11C80000E +S31540012030C51C800080A000003280000685A008C033 +S3154001204081A80AC2010000001380000301000000BC +S31540012050901020050100000025100080A414A0F076 +S31540012060C11C8000C51C800080A00000010000004A +S315400120703280000685A008C081A80AC2010000007E +S3154001208013800003010000009010200701000000AA +S3154001209081C3E00801000000901020019544000032 +S315400120A09532A01E940AA00380A2800002800040BF +S315400120B09010200080A2A0021680003D13100080DF +S315400120C092126198C11A4000C51A6008FD02601853 +S315400120D095A0003E99A0003E9DA0003E170000C07D +S315400120E09612E078A182C0000100000001000000C4 +S315400120F00100000001000000010000000100000095 +S3154001210081A0002083A0002195A0002A99A0002C3F +S315400121109DA0002E170000C09612E07CA182C0004F +S315400121200100000001000000010000000100000064 +S31540012130010000000100000085A0002287A00023C5 +S31540012140A180000001000000010000000100000024 +S3154001215001000000010000000100000089A00842C2 +S31540012160A9A2883ED93A4000DD224000CD1A60102E +S31540012170D102600881A90A46010000000380000CD3 +S3154001218081AD0A2801000000038000099344000044 +S315400121909332601B920A60079010200080A2A00132 +S315400121A002800003902260079022600481C3E00808 +S315400121B001000000C12BBFA081C3E008D003BFA02E +S315400121C0D023BFA081C3E008C10BBFA0010000001E +S315400121D09DE3BF6040001B94B0102000833A200A63 +S315400121E08208600380A060010280000401000000B3 +S315400121F081C7E00881E800007FFFBDE19010200D16 +S31540012200050C40290723CD1B8410A0068610E09BB0 +S31540012210C027BFF0C027BFF4C43FBFF8C027BFD017 +S31540012220C027BFD4C027BFC87FFFFF3FC027BFCC51 +S31540012230820A30008210608084006004072804000E +S315400122408610E00F09100047C62040008811220081 +S3154001225007100000882100028939200286110003F7 +S31540012260C620600425100080032784008210601078 +S315400122707FFFFED0C220A0047FFFFFD21103E00002 +S3154001228090102000C024A1687FFFFDD0010000000E +S31540012290809200091280000601000000C204A16874 +S315400122A080A0600002800004010000007FFFBDBBEA +S315400122B09010200B7FFFFDC590103FFA03300600BA +S315400122C080A2000102800CF880A260007FFFBDB3AE +S315400122D09010200B7FFFFDBD9010201403100D00C0 +S315400122E080A200010280113680A260007FFFBDAB53 +S315400122F09010200B7FFFFDB5901020620310162031 +S3154001230080A200010280112780A260007FFFBDA349 +S315400123109010200B7FFFFDB590102005031028007B +S3154001232080A2000112800CB501000000C204A16820 +S3154001233080A0600012800CB1010000007FFFFFA168 +S315400123401103C000111C00007FFFFDB09210200058 +S31540012350031FFFFF821063FF80A200011280000B62 +S3154001236001000000C404A168030000708210601FD0 +S3154001237084088001030000108210601080A0800153 +S3154001238002800005113C00007FFFBD849010200CA7 +S31540012390113C00007FFFFD9D9210200003200000AC +S315400123A080A200011280000B01000000C404A16854 +S315400123B0030000708210601F840880010300001032 +S315400123C08210601080A0800102800004010000009C +S315400123D07FFFBD729010200CC024A1689010200090 +S315400123E07FFFFD8A9210200080A220001280000605 +S315400123F003100080C200616880A060000280000571 +S31540012400110144007FFFBD659010200C110144006D +S3154001241013284000901223027FFFFD7C9212600137 +S3154001242080A220001280000601000000C204A168BB +S3154001243080A06000228000051111FFFF7FFFBD577C +S315400124409010200C1111FFFF7FFFFD78901223FFA2 +S315400124500300007F821063FF80A2000112800C639B +S3154001246001000000C204A16880A0600012800C5FD8 +S3154001247001000000271000807FFFFD64D01CE1E0D1 +S31540012480031FFFFF821063FF80A200011280000B31 +S3154001249001000000C404A168030000708210601F9F +S315400124A084088001030000108210601080A0800122 +S315400124B002800005351000807FFFBD389010200C4A +S315400124C035100080D01EA1D0C024A1687FFFFD4FEA +S315400124D0010000000320000080A200011280000BD1 +S315400124E003100080C4006168030000708210601F01 +S315400124F084088001030000108210601080A08001D2 +S31540012500028000052B1000807FFFBD249010200C17 +S315400125102B100080D01D61F0C024A1687FFFFD3BD8 +S3154001252001000000031FFFFF821063FF80A200012C +S315400125301280000B03100080C40061680300007024 +S315400125408210601F84088001030000108210601011 +S3154001255080A08001028000052F1000807FFFBD0F03 +S315400125609010200C2F100080D01DE1B8C024A16826 +S315400125707FFFFD2601000000C204A1688330600E82 +S315400125808208600380A0600202800004010000000E +S315400125907FFFBD029010200C7FFFFF0A1103C00090 +S315400125A011115804C024A1687FFFFD2890122234DE +S315400125B003102B008210624680A200010280107136 +S315400125C0032000007FFFBCF59010200D113C02AFA7 +S315400125D07FFFFD1E901220D1033180558210639AF0 +S315400125E080A200010280105F030800007FFFBCEB60 +S315400125F09010200D1111FC007FFFFD1C9210200050 +S31540012600031FE00080A200011280000B01000000C0 +S31540012610C404A168030000708210601F8408800111 +S31540012620030000108210600880A08001028000042F +S31540012630010000007FFFBCD99010200DC024A16885 +S3154001264011207C01130001007FFFFD08901220300C +S315400126500320000080A200011280000B03100080BD +S31540012660C4006168030000708210601F8408800105 +S31540012670030000108210600480A0800102800004E3 +S31540012680010000007FFFBCC59010200DC024A16849 +S31540012690901020007FFFFCF59210200080A22000C0 +S315400126A01280000603100080C200616880A06000AD +S315400126B002800004010000007FFFBCB89010200D8D +S315400126C07FFFFCEAD01CE1E003100080C20061E814 +S315400126D080A2000112800BC101000000C204A16862 +S315400126E080A0600012800BBD010000003710008001 +S315400126F07FFFFCDED01EE1D8031FE00080A200016F +S3154001270012800BB301000000C204A16880A06000E2 +S3154001271012800BAF010000007FFFFCD4D01D61F099 +S3154001272003100080C200620080A200011280000BEB +S3154001273001000000C404A168030000708210601FFC +S3154001274084088001030000108210601080A080017F +S3154001275002800005D01DE1B87FFFBC909010200D8E +S31540012760D01DE1B8C024A1687FFFFCC00100000074 +S31540012770C204A1688330600E8208600380A06002B3 +S3154001278002800004010000007FFFBC849010200DF0 +S315400127907FFFFE8C1103E0002108C6AFC024A1686B +S315400127A0901420DE7FFFFCB9A01420DE80A2001029 +S315400127B012800B8303100080C200616880A0600014 +S315400127C012800B7F010000002108C6AF901420DE65 +S315400127D07FFFFCBEA01420DE80A2001012800B7485 +S315400127E001000000C204A16880A0600012800B7045 +S315400127F0010000001128C6AF7FFFFCB4901220DE15 +S315400128000308C6AF821060DE80A2000112800B640D +S3154001281001000000C204A16880A0600012800B6024 +S31540012820010000001108C6AF7FFFFCA0901220DE18 +S315400128300328C6AF821060DE80A2000112800B54CD +S3154001284001000000C204A16880A0600012800B5004 +S31540012850010000001128C6AF7FFFFC94901220DED4 +S315400128600308C6AF821060DE80A2000112800B45CC +S3154001287001000000C204A16880A0600012800B41E3 +S31540012880010000007FFFFE4F1103E00011151BC040 +S315400128901310C821901221039212614115351BC0B4 +S315400128A01710C8219412A1037FFFFC909612E141B3 +S315400128B080A2200212800B2B01000000C204A168F5 +S315400128C080A0600012800B270100000011351BC05B +S315400128D01310C821901221039212614115151BC094 +S315400128E01710C8219412A1037FFFFC809612E14183 +S315400128F080A2200112800B1F01000000C204A168C2 +S3154001290080A0600012800B1B010000009010200087 +S3154001291092102000152000007FFFFC7496102000C5 +S3154001292080A220001280000601000000C204A168B6 +S3154001293080A0600002800005D01EE1D87FFFBC1751 +S315400129409010200FD01EE1D87FFFFC68D41EA1D085 +S3154001295080A2200212800AFF01000000C204A16881 +S3154001296080A0600012800AFB0100000011151BC007 +S315400129701310C821901221039212614115151BE8CB +S315400129801710C8219412A1037FFFFC589612E1410A +S3154001299080A2200112800AEB01000000C204A16856 +S315400129A080A0600012800AE70100000011151BE8B3 +S315400129B01310C821901221039212614115151BC0B3 +S315400129C01710C8219412A1037FFFFC489612E141DA +S315400129D080A2200212800AD701000000C204A16829 +S315400129E080A0600012800AD301000000D41CE1E0FF +S315400129F011151BE81310C821901221037FFFFC3BE0 +S31540012A009212614180A2200312800AC60100000091 +S31540012A10C204A16880A0600012800AC201000000C1 +S31540012A20D41D61F011151BE81310C8219012210322 +S31540012A307FFFFC2E9212614180A220031280000B7F +S31540012A4001000000C404A168030000708210601FE9 +S31540012A5084088001030000108210601080A080016C +S31540012A6002800005D41DE1B87FFFBBCC9010200F3A +S31540012A70D41DE1B8C024A16811151BE81310C82163 +S31540012A80901221037FFFFC199212614180A220021C +S31540012A9012800AA003100080C200616880A0600015 +S31540012AA012800A9C01000000D01DE1B815151BE8F3 +S31540012AB01710C8219412A1037FFFFC0C9612E14125 +S31540012AC080A2200112800A8B01000000C204A16885 +S31540012AD080A0600012800A8701000000D01CE1E05E +S31540012AE015151BE81710C8219412A1037FFFFBFFA0 +S31540012AF09612E14180A2200312800A820100000061 +S31540012B00C204A16880A0600012800A7E0100000014 +S31540012B10D01D61F015151BE81710C8219412A103A9 +S31540012B207FFFFBF29612E14180A220031280000B47 +S31540012B3001000000C404A168030000708210601FF8 +S31540012B4084088001030000108210601080A080017B +S31540012B5002800004010000007FFFBB909010200F0F +S31540012B60C024A16811151BC01310C821901221035E +S31540012B709212614115351BC01710C8219412A10349 +S31540012B807FFFFBED9612E14180A2200212800A5599 +S31540012B9003100080C200616880A0600012800A5163 +S31540012BA00100000011351BC01310C82190122103EA +S31540012BB09212614115151BC01710C8219412A10329 +S31540012BC07FFFFBDD9612E14180A2200112800A417E +S31540012BD001000000C204A16880A0600012800A3D85 +S31540012BE001000000901020009210200015200000E6 +S31540012BF07FFFFBD19610200080A2200012800006A4 +S31540012C0001000000C204A16880A0600002800005A6 +S31540012C10D01EE1D87FFFBB619010200FD01EE1D8B6 +S31540012C207FFFFBC5D41EA1D080A2200212800A25B7 +S31540012C3001000000C204A16880A0600012800A2140 +S31540012C400100000011151BC01310C8219012210369 +S31540012C509212614115151BE81710C8219412A10360 +S31540012C607FFFFBB59612E14180A2200112800A1135 +S31540012C7001000000C204A16880A0600012800A0D14 +S31540012C800100000011151BE81310C8219012210301 +S31540012C909212614115151BC01710C8219412A10348 +S31540012CA07FFFFBA59612E14180A22002128009FD19 +S31540012CB001000000C204A16880A06000128009F9E9 +S31540012CC001000000D41CE1E011151BE81310C821D6 +S31540012CD0901221037FFFFB989212614180A220034B +S31540012CE01280000B01000000C404A16803000070BB +S31540012CF08210601F8408800103000010821060105A +S31540012D0080A0800102800005D41D61F07FFFBB23B6 +S31540012D109010200FD41D61F011151BE81310C82126 +S31540012D20901221037FFFFB849212614180A220030E +S31540012D301280000B01000000C404A168030000706A +S31540012D408210601F84088001030000108210601009 +S31540012D5080A0800102800005D41DE1B87FFFBB0F32 +S31540012D609010200FD41DE1B8C024A16811151BE8AD +S31540012D701310C821901221037FFFFB6F921261410C +S31540012D8080A22002128009BF03100080C200616840 +S31540012D9080A06000128009BB01000000D01DE1B88F +S31540012DA015151BE81710C8219412A1037FFFFB627A +S31540012DB09612E14180A22001128009B6010000006D +S31540012DC0C204A16880A06000128009B2010000001F +S31540012DD0D01CE1E015151BE81710C8219412A10378 +S31540012DE07FFFFB559612E14180A220031280000B22 +S31540012DF001000000C404A168030000708210601F36 +S31540012E0084088001030000108210601080A08001B8 +S31540012E1002800005D01D61F07FFFBAE09010200FBF +S31540012E20D01D61F015151BE81710C8219412A10396 +S31540012E307FFFFB419612E14180A220031280000BE5 +S31540012E4001000000C404A168030000708210601FE5 +S31540012E5084088001030000108210601080A0800168 +S31540012E6002800004010000007FFFBACC9010200FC1 +S31540012E70C024A168110048EA13048D15901223CD90 +S31540012E807FFFFB3E9212627880A22001128009796F +S31540012E9003100080C200616880A06000128009753D +S31540012EA001000000110048EA13048D15901223CD4C +S31540012EB07FFFFB439212627880A220011280096A49 +S31540012EC001000000C204A16880A06000128009666A +S31540012ED001000000C024A1687FFFFCBA1103C000B5 +S31540012EE023100124A807BFF8BA07BFD090100014D9 +S31540012EF09210001D7FFFFA6C94146160C2046160F8 +S31540012F00C407BFF880A0800102800E0CA014616046 +S31540012F107FFFBAA2901020102D100080901000144F +S31540012F209215A1C87FFFFA6094146160C404616080 +S31540012F30C205A1C880A0800122800DF6C4042004E8 +S31540012F407FFFBA9690102010901000149214E1E081 +S31540012F507FFFFA5594146160C4046160C204E1E0E4 +S31540012F6080A0800102800DE1B214E1E07FFFBA8BBF +S31540012F709010201090100014921561F07FFFFA4ACC +S31540012F8094146160C404A168030000708210601F3C +S31540012F9084088001030000108210601080A0800127 +S31540012FA002800004010000007FFFBA7C90102010CF +S31540012FB0C024A1687FFFFC8390102000901000146C +S31540012FC0921561F07FFFFA389414616039100080E0 +S31540012FD0C4046160C20721F880A0800122800DBD32 +S31540012FE0C40420047FFFBA6D901020107FFFFC754A +S31540012FF01103C000901000149215E1B87FFFFA2A20 +S3154001300094146160C204A1688330600E8208600333 +S3154001301080A0600202800004010000007FFFBA5FC9 +S3154001302090102010C024A1689010001D9210001429 +S315400130307FFFFA1D94146160C4046160C207BFF842 +S3154001304080A0800122800D9AC40420047FFFBA53D8 +S31540013050901020109010001D9215A1C87FFFFA1202 +S3154001306094146160C4046160C205A1C880A0800156 +S3154001307022800D84C40420047FFFBA48901020109A +S315400130809010001D9214E1E07FFFFA0794146160ED +S31540013090C4046160C204E1E080A0800122800D7019 +S315400130A0C40420047FFFBA3D901020109010001DEB +S315400130B0921561F07FFFF9FC94146160C404A16824 +S315400130C0030000708210601F840880010300001015 +S315400130D08210601080A0800102800004010000007F +S315400130E07FFFBA2E901020107FFFFC3690102000F3 +S315400130F09010001D921561F07FFFF9EB9414616009 +S31540013100C4046160C20721F880A0800122800D4D70 +S31540013110C40420047FFFBA21901020107FFFFC29B0 +S315400131201103C0009010001D9215E1B87FFFF9DE32 +S3154001313094146160C204A1688330600E8208600302 +S3154001314080A0600202800004010000007FFFBA13E4 +S3154001315090102010C024A1689015A1C892100014A7 +S315400131607FFFF9D194146160C4046160C205A1C8AE +S3154001317080A0800122800D28C40420047FFFBA0765 +S31540013180901020109015A1C89210001D7FFFF9C61E +S3154001319094146160C4046160C205A1C880A0800125 +S315400131A022800D12C40420047FFFB9FC9010201028 +S315400131B09016E1D8941461607FFFF9BB9210000824 +S315400131C0C4046160C206E1D880A0800122800CFC63 +S315400131D0C40420047FFFB9F1901020109016A1D0AD +S315400131E0941461607FFFF9B092100008C4046160D5 +S315400131F0C206A1D080A0800122800CE6C40420042E +S315400132007FFFB9E6901020109016A1D09216E1D812 +S315400132107FFFF9A594146160C404A168030000709E +S315400132208210601F84088001030000108210601024 +S3154001323080A0800102800004010000007FFFB9D711 +S31540013240901020107FFFFBDF901020009016A1D038 +S315400132509216E1D87FFFF99494146160C4046160C9 +S31540013260C20721F880A0800122800CC3C404200437 +S315400132707FFFB9CA901020107FFFFBD21103C00017 +S315400132809016E1D8C024A1689216A1D07FFFF98695 +S3154001329094146160C4046160C20721F880A0800172 +S315400132A022800CA4C40420047FFFB9BC90102010D6 +S315400132B09015A1C89215E1B87FFFF97B941461601E +S315400132C0C204A1688330600E8208600380A0600258 +S315400132D002800004010000007FFFB9B09010201069 +S315400132E0C024A1689014E1E0921000147FFFF96EAA +S315400132F094146160C4046160C204E1E080A080016D +S3154001330022800C83C40420047FFFB9A490102010AE +S315400133109014E1E09210001D7FFFF96394146160FF +S31540013320C4046160C204E1E080A0800122800C6F88 +S31540013330C40420047FFFB999901020109014E1E055 +S315400133409215A1C87FFFF95894146160C404616065 +S31540013350C204E1E080A0800122800C5BC404200409 +S315400133607FFFB98E901020109014E1E094146160B3 +S315400133707FFFF94D92100008C4046160C204E1E088 +S3154001338080A0800122800C47C40420047FFFB983BA +S31540013390901020109014E1E0921561F07FFFF94200 +S315400133A094146160C404A168030000708210601F18 +S315400133B084088001030000108210601080A0800103 +S315400133C002800004010000007FFFB97490102010B4 +S315400133D0C024A168901561F0921000147FFFF93264 +S315400133E094146160C404A168030000708210601FD8 +S315400133F084088001030000108210601080A08001C3 +S3154001340002800004010000007FFFB9649010201083 +S31540013410C024A168901561F09210001D7FFFF9222A +S3154001342094146160C404A168030000708210601F97 +S3154001343084088001030000108210601080A0800182 +S3154001344002800004010000007FFFB9549010201053 +S31540013450C024A168901561F09215A1C87FFFF912A9 +S3154001346094146160C404A168030000708210601F57 +S3154001347084088001030000108210601080A0800142 +S3154001348002800004010000007FFFB9449010201023 +S31540013490C024A168901561F09214E1E07FFFF90222 +S315400134A094146160C404A168030000708210601F17 +S315400134B084088001030000108210601080A0800102 +S315400134C002800005901561F07FFFB93490102010FD +S315400134D0901561F0C024A168941461607FFFF8F2F1 +S315400134E092100008C404A168030000708210601F96 +S315400134F084088001030000108210601080A08001C2 +S3154001350002800004010000007FFFB92490102010C2 +S31540013510C024A168901561F09215E1B87FFFF8E2E9 +S3154001352094146160C204A1688330600E820860030E +S3154001353080A0600202800004010000007FFFB917ED +S31540013540901020107FFFFB1F1103C0000310008065 +S31540013550C024A1688210633010800009B010200099 +S315400135607FFFB90E90102010C207BFC4B0062001DC +S3154001357080A6200D0280002282006018852E20033D +S31540013580912E200590220002051000808410A32070 +S31540013590C227BFC490008008932E20011510012434 +S315400135A0920240189412A16092026001932A60032C +S315400135B07FFFF8BD92008009C207BFC4C600400024 +S315400135C0C404000080A0C00232BFFFE6C227BFC4C8 +S315400135D0C60060040910012488112160C401200439 +S315400135E080A0C00232BFFFDFC227BFC4B0062001A0 +S315400135F080A6200D12BFFFE282006018C204A168B6 +S3154001360080A0600012800BA3010000001110008110 +S3154001361094146160901220587FFFF8A3920220080B +S315400136200310008082106320C4006148C2046160B7 +S3154001363080A0800102800B86071000807FFFB8D7EB +S315400136409010201011100081941461609012207026 +S315400136507FFFF8959202200809100080C20461603C +S3154001366088112320C401216080A0800122800B693A +S31540013670C40121647FFFB8C9901020101110008148 +S3154001368094146160901220887FFFF8879202200887 +S315400136900310008082106320C4006178C204616017 +S315400136A080A0800102800B4B071000807FFFB8BBD2 +S315400136B090102010C024A168111000009210200023 +S315400136C0150FFC007FFFF94F96102000030FFC00F9 +S315400136D080A2000102800B3880A260007FFFB8AF54 +S315400136E0901020101110000092102000152FFC00A0 +S315400136F07FFFF944961020000310020080A20001CA +S3154001370002800B2680A260007FFFB8A49010201093 +S315400137101130000092102000150FFC007FFFF9398F +S31540013720961020000330020080A2000102800B1493 +S3154001373080A260007FFFB8999010201011300000E0 +S3154001374092102000152FFC007FFFF92E96102000C5 +S31540013750032FFC0080A2000102800B0280A26000C0 +S315400137607FFFB88E90102010111000007FFFF92FB7 +S31540013770130FE0000310100080A20001128007B66B +S3154001378001000000C204A16880A06000128007B257 +S3154001379001000000111000007FFFF92E130FE00019 +S315400137A0030FE00080A20001128007A7010000007C +S315400137B0C204A16880A06000128007A30100000036 +S315400137C009100080C024A16890100014941461600F +S315400137D07FFFF848921121C0C4046160C206A1D09E +S315400137E080A0800122800ACFC40420047FFFB86BE9 +S315400137F090102011C024A168901000149216E1D8AF +S315400138007FFFF83C94146160C4046160C207BFC87D +S3154001381080A0800122800ABAC40420047FFFB85FD9 +S3154001382090102011901000149214E1E07FFFF831BE +S3154001383094146160C4046160C204E1E080A0800127 +S3154001384022800AA6C40420047FFFB8549010201198 +S3154001385090100014921561F07FFFF8269414616070 +S31540013860C4046160C20721F880A0800122800A8ACF +S31540013870C40420047FFFB849901020119010001411 +S315400138809215E1B87FFFF81B941461600300007044 +S31540013890C404A168840880010300002080A080013F +S315400138A002800004010000007FFFB83C9010201107 +S315400138B0C024A1689010001D921000147FFFF80DDE +S315400138C094146160C4046160C207BFD080A08001C6 +S315400138D022800A68C40420047FFFB830901020116A +S315400138E0031000809207BFC8901061C07FFFF801A6 +S315400138F094146160C4046160C20721F880A080010C +S3154001390022800A4CC40420047FFFB8249010201161 +S3154001391009100080C024A168901121C09216E1D8F7 +S315400139207FFFF7F494146160C4046160071000805E +S31540013930C200E1C080A0800122800A34C404200470 +S315400139407FFFB816901020119010001D9214E1E0EF +S315400139507FFFF7E894146160C4046160C204E1E04A +S3154001396080A0800122800A20C40420047FFFB80B76 +S31540013970901020079010001D921561F07FFFF7DD32 +S3154001398094146160C404A168030000708210601F32 +S3154001399084088001030000108210601080A080011D +S315400139A002800004010000007FFFB7FC9010201147 +S315400139B0C024A1689010001D9215E1B87FFFF7CD94 +S315400139C09414616003000070C404A16884088001F6 +S315400139D00300002080A08001028000040100000055 +S315400139E07FFFB7EE90102011C024A1689016A1D098 +S315400139F0921000147FFFF7BF94146160C4046160A4 +S31540013A00C206A1D080A08001228009ECC404200412 +S31540013A107FFFB7E290102011091000809016A1D0C7 +S31540013A20921121C07FFFF7B394146160C4046160B1 +S31540013A30C206E1D880A08001228009D5C4042004B1 +S31540013A407FFFB7D6901020119015A1C894146160DC +S31540013A507FFFF7A892100008C4046160C20721F8ED +S31540013A6080A08001228009BAC40420047FFFB7CB1D +S31540013A7090102011C024A1689015A1C89214E1E0CC +S31540013A807FFFF79C94146160C4046160C204E1E065 +S31540013A9080A08001228009A5C40420047FFFB7BF0E +S31540013AA0901020119015A1C8921561F07FFFF791F2 +S31540013AB094146160C4046160C20721F880A080014A +S31540013AC02280098AC40420047FFFB7B490102011D4 +S31540013AD0C024A1689015A1C89215E1B87FFFF7856A +S31540013AE09414616003000070C404A16884088001D5 +S31540013AF00300002080A08001028000040100000034 +S31540013B007FFFB7A690102011C024A1689014E1E070 +S31540013B10921000147FFFF77794146160C4046160CA +S31540013B20C204E1E080A0800122800967C404200428 +S31540013B307FFFB79A901020119014E1E09210001D7A +S31540013B407FFFF76C94146160C4046160C204E1E0D4 +S31540013B5080A0800122800953C40420047FFFB78FCF +S31540013B60901020119014E1E09215A1C87FFFF761F2 +S31540013B7094146160C4046160C204E1E080A08001E4 +S31540013B802280093FC40420047FFFB784901020118E +S31540013B909014E1E0941461607FFFF756921000089B +S31540013BA0C4046160C204E1E080A080012280092B47 +S31540013BB0C40420047FFFB779901020119014E1E0EE +S31540013BC0921561F07FFFF74B94146160C404616004 +S31540013BD0C20721F880A080012280090FC404200475 +S31540013BE07FFFB76E901020119014E1E09215E1B875 +S31540013BF07FFFF7409414616003000070C404A1681C +S31540013C00840880010300002080A080010280000515 +S31540013C10901561F07FFFB76190102011901561F00A +S31540013C20921000147FFFF73394146160C404A168B5 +S31540013C30030000708210601F840880010300001099 +S31540013C408210601080A08001028000040100000003 +S31540013C507FFFB75290102011C024A168901561F0E2 +S31540013C609210001D7FFFF72394146160C404A1687C +S31540013C70030000708210601F840880010300001059 +S31540013C808210601080A080010280000401000000C3 +S31540013C907FFFB74290102011C024A168901561F0B2 +S31540013CA09215A1C87FFFF71394146160C404A168FB +S31540013CB0030000708210601F840880010300001019 +S31540013CC08210601080A08001028000040100000083 +S31540013CD07FFFB73290102011C024A168901561F082 +S31540013CE09214E1E07FFFF70394146160C404A16874 +S31540013CF0030000708210601F8408800103000010D9 +S31540013D008210601080A0800102800005901561F04C +S31540013D107FFFB72290102011901561F0C024A16851 +S31540013D20941461607FFFF6F392100008C404A16801 +S31540013D30030000708210601F840880010300001098 +S31540013D408210601080A08001028000040100000002 +S31540013D507FFFB71290102011C024A168901561F021 +S31540013D609215E1B87FFFF6E3941461600300007099 +S31540013D70C404A168840880010300002080A080015A +S31540013D8002800005051FC0007FFFB7049010201177 +S31540013D90051FC0000700C0008410A1028610E0B0D4 +S31540013DA0C024A168B007BFE0C43FBFE805203E83F9 +S31540013DB0070021C88410A3FF8610E3A19007BFE83E +S31540013DC092100018C43FBFE07FFFF6CA9407BFD8E0 +S31540013DD0C407BFD8033FFC0080A080010280088051 +S31540013DE0C207BFDC7FFFB6ED9010201105004000F1 +S31540013DF00700C0008410A1028610E0B0C024A1686B +S31540013E009007BFE8C43FBFE805108683070021C875 +S31540013E108410A3FF8610E3A1921000189407BFD81F +S31540013E207FFFF6B4C43FBFE0C207BFDCC407BFD8BB +S31540013E30809080011280000B03100080C4006168ED +S31540013E40030000708210601F840880010300001087 +S31540013E508210600480A0800102800005050006AF43 +S31540013E607FFFB6CE90102011050006AF86102010B8 +S31540013E70C024A1689007BFE8C43FBFE8050FFC0016 +S31540013E80070281D88410A0408610E10C92100018D8 +S31540013E909407BFD87FFFF697C43FBFE0C407BFD89A +S31540013EA0030006AE8210639580A08001028008421D +S31540013EB0C407BFDC7FFFB6B990102011050006AFDD +S31540013EC086102010C024A1689007BFE8C43FBFE810 +S31540013ED0050FFFFF070281D88410A3408610E10C2D +S31540013EE0921000189407BFD87FFFF682C43FBFE007 +S31540013EF0C207BFDCC407BFD8809080011280000B87 +S31540013F0003100080C4006168030000708210601FC6 +S31540013F1084088001030000108210600480A08001A3 +S31540013F2002800004010000007FFFB69C9010201122 +S31540013F30C024A168111088007FFFF75A13100100B1 +S31540013F40031066C9821062CA80A20001128005BAB6 +S31540013F5003100080C200616880A06000128005B62F +S31540013F60010000001111BBFE130C70407FFFF74D9D +S31540013F70901223FF031527CA8210611E80A20001F9 +S31540013F80128005A901000000C204A16880A060005A +S31540013F90128005A501000000111E607E1310C7FFA7 +S31540013FA07FFFF740921263FC031D73FC8210633856 +S31540013FB080A200011280059801000000C204A16898 +S31540013FC080A06000128005940100000011002000CD +S31540013FD0130FE0007FFFF7339212600180A22000A9 +S31540013FE01280000B01000000C404A16803000070A8 +S31540013FF08210601F84088001030000108210600453 +S3154001400080A0800102800005110FE0007FFFB663AA +S3154001401090102011110FE000C024A1687FFFF72105 +S3154001402092100008030FE00080A20001128005767D +S3154001403003100080C200616880A060001280057292 +S315400140400100000011002000130FE0007FFFF7156B +S315400140509212600180A220001280000B0100000034 +S31540014060C404A168030000708210601F84088001A7 +S31540014070030000108210600480A0800102800005C8 +S31540014080031000807FFFB645901020110310008079 +S31540014090C024A168921061C0901000147FFFF607FA +S315400140A094146160C404616007100080C200E1C0DD +S315400140B080A08001228007B6C40420047FFFB63762 +S315400140C090102012901000149216E1D87FFFF5FB54 +S315400140D094146160C4046160C206E1D880A0800185 +S315400140E0228007A0C40420047FFFB62C9010201222 +S315400140F0901000149214E1E07FFFF5F09414616092 +S31540014100C4046160C204E1E080A080012280078C82 +S31540014110C40420047FFFB621901020129010001491 +S31540014120921561F07FFFF5E594146160C404616006 +S31540014130C20721F880A0800122800770C4042004B0 +S315400141407FFFB61690102012901000149215E1B818 +S315400141507FFFF5DA9414616003000070C404A1681E +S31540014160840880010300002080A0800102800004B1 +S31540014170010000007FFFB60990102012C024A168FB +S315400141809010001D921000147FFFF5CC94146160CD +S31540014190C4046160C207BFD080A080012280074E5F +S315400141A0C40420047FFFB5FD901020120310008047 +S315400141B09216A1D0901061C07FFFF5C09414616042 +S315400141C0C4046160C20721F880A0800122800732C1 +S315400141D0C40420047FFFB5F190102012C024A168C9 +S315400141E09010001D9214E1E07FFFF5B494146160D4 +S315400141F0C4046160C204E1E080A080012280071D01 +S31540014200C40420047FFFB5E5901024999010001D49 +S31540014210921561F07FFFF5A994146160C404616051 +S31540014220C20721F880A0800122800701C40420042E +S315400142307FFFB5DA901020129010001D9215E1B85B +S315400142407FFFF59E9414616003000070C404A16869 +S31540014250840880010300002080A0800102800004C0 +S31540014260010000007FFFB5CD90102012C024A16847 +S315400142709015A1C8921000147FFFF59094146160C7 +S31540014280C4046160C205A1C880A08001228006DD08 +S31540014290C40420047FFFB5C1901020129015A1C817 +S315400142A09210001D7FFFF58594146160C40461601E +S315400142B0C20721F880A08001228006C2C4042004DE +S315400142C07FFFB5B690102012C024A1689015A1C8F1 +S315400142D09214E1E07FFFF57994146160C404616052 +S315400142E0C204E1E080A08001228006ADC40420041E +S315400142F07FFFB5AA901020129015A1C8921561F0C2 +S315400143007FFFF56E94146160C4046160C20721F8B1 +S3154001431080A0800122800691C40420047FFFB59FBE +S31540014320901020129015A1C89215E1B87FFFF56350 +S315400143309414616003000070C404A168840880017C +S315400143400300002080A080010280000401000000DB +S315400143507FFFB59290102012C024A1689014E1E02D +S31540014360921000147FFFF55594146160C404616096 +S31540014370C204E1E080A080012280066FC4042004CB +S315400143807FFFB586901020129014E1E09210001D37 +S315400143907FFFF54A94146160C4046160C204E1E0A0 +S315400143A080A080012280065BC40420047FFFB57B88 +S315400143B0901020129014E1E09215A1C87FFFF53FBD +S315400143C094146160C4046160C204E1E080A080018C +S315400143D022800647C40420047FFFB5709010201246 +S315400143E09014E1E0941461607FFFF5349210000867 +S315400143F0C4046160C204E1E080A0800122800633EA +S31540014400C40420047FFFB565901020129014E1E0AA +S31540014410921561F07FFFF52994146160C404A16887 +S31540014420030000708210601F8408800103000010A1 +S315400144308210601080A0800102800004010000000B +S315400144407FFFB55690102012C024A168901561F0E7 +S31540014450921000147FFFF51994146160C404A16899 +S31540014460030000708210601F840880010300001061 +S315400144708210601080A080010280000401000000CB +S315400144807FFFB54690102012C024A1689210001DEE +S31540014490901561F07FFFF50994146160C404A16829 +S315400144A0030000708210601F840880010300001021 +S315400144B08210601080A0800102800004010000008B +S315400144C07FFFB53690102012C024A168901561F087 +S315400144D09215A1C87FFFF4F994146160C404A168E0 +S315400144E0030000708210601F8408800103000010E1 +S315400144F08210601080A0800102800004010000004B +S315400145007FFFB52690102012C024A168901561F056 +S315400145109214E1E07FFFF4E994146160C404A16858 +S31540014520030000708210601F8408800103000010A0 +S315400145308210601080A0800102800005901561F014 +S315400145407FFFB51690102012901561F0C024A16826 +S31540014550941461607FFFF4D992100008C404A168E5 +S31540014560030000708210601F840880010300001060 +S315400145708210601080A080010280000401000000CA +S315400145807FFFB50690102012C024A168901561F0F6 +S315400145909215E1B87FFFF4C994146160C204A16821 +S315400145A08330600E8208600380A0600202800005AD +S315400145B01103C0007FFFB4F9901020121103C0000F +S315400145C07FFFF70031100080B0162228C024A16871 +S315400145D010800008BA1020007FFFB4F0901020121E +S315400145E0BA07600180A7600602800024B006201841 +S315400145F0832F60030910008088112218912F6005CE +S31540014600932F6001902200019202401D9001000803 +S315400146109202600115100124932A60039412A1604D +S315400146207FFFF4A692010009C4060000C2040000FF +S3154001463080A0800112BFFFE907100124C4062004AF +S315400146408610E160C200E00480A0800112BFFFE352 +S315400146500910008088112168C201000080A0600015 +S3154001466012BFFFDE01000000BA07600180A76006A5 +S3154001467012BFFFE0B006201811100080941461604B +S31540014680901222A87FFFF48D920220080310008029 +S3154001469082106218C40060A0C204616080A08001DB +S315400146A00280057A071000807FFFB4BC901020126B +S315400146B0C024A1681110008094146160901222C038 +S315400146C07FFFF47E9202200809100080C2046160D7 +S315400146D088112218C40120B880A080012280055D7E +S315400146E0C40120BC7FFFB4AD90102012C024A16844 +S315400146F01110008094146160901222D87FFFF46FEC +S31540014700920220080310008082106218C40060D013 +S31540014710C204616080A080010280053E07100080CE +S315400147207FFFB49E90102012C024A1681110008012 +S3154001473094146160901222F07FFFF4609202200887 +S3154001474009100080C204616088112218C40120E862 +S3154001475080A0800122800521C40120EC7FFFB48F17 +S3154001476090102012C024A168111000809414616039 +S31540014770901223087FFFF451920220080310008013 +S3154001478082106218C4006100C204616080A0800189 +S3154001479002800502071000807FFFB480901020122E +S315400147A0C024A168111010007FFFF53413100000DA +S315400147B00310300080A20001128003B7031000806D +S315400147C0C200616880A06000128003B3010000004E +S315400147D0111FE000131000007FFFF43D9414616047 +S315400147E0C4046160031FFC0080A08001228004E3B1 +S315400147F0C20420047FFFB4699010201B111FE00002 +S31540014800133000007FFFF43294146160C404616088 +S31540014810033FFC0080A08001228004D0C204200412 +S315400148207FFFB45E9010201C1110000092102010E2 +S315400148307FFFF4279414616003000070C404A168EB +S31540014840840880010300002080A0800102800004CA +S31540014850010000007FFFB4519010201DC024A168C3 +S3154001486011002000130FC0007FFFF41994146160FA +S31540014870C4046160030E000080A08001228004AF61 +S31540014880C20420047FFFB4459010201E111FDFFF94 +S3154001489013100000901223FF7FFFF40D9414616002 +S315400148A0C40461600311FFFF821063FF80A0800191 +S315400148B022800499C40420047FFFB4389010201F3D +S315400148C0111FD000130FF0007FFFF40194146160B3 +S315400148D0C40461600311FC8080A0800122800486AB +S315400148E0C20420047FFFB42D90102021111FDFFF49 +S315400148F094146160901223FF7FFFF3F59210000834 +S31540014900C40461600313FBFF821063FF80A0800132 +S315400149102280046FC40420047FFFB420901020201D +S315400149207FFFF6281103C0009007BFC8C024A168C5 +S315400149307FFFF3F692146160C4046160C207BFC889 +S3154001494080A0800122800459C40420047FFFB4134F +S315400149509010201309100080921461607FFFF3EBE1 +S31540014960901121C005100080C200A1C0C40461603D +S3154001497080A0800102800442071000807FFFB407B7 +S31540014980901020139016E1D87FFFF3E092146160F6 +S31540014990C4046160C206E1D880A080010280042D72 +S315400149A0091000807FFFB3FD901020139016A1D00F +S315400149B07FFFF3D692146160C4046160C20721F897 +S315400149C080A0800122800413C40420047FFFB3F336 +S315400149D090102013C024A168901561F07FFFF3CB9E +S315400149E092146160C4046160C20721F880A080010D +S315400149F0228003F8C40420047FFFB3E890102013FB +S31540014A00C024A1689014E1E07FFFF3C09214616075 +S31540014A10C204E1E0C404616080A08001228003E415 +S31540014A20C20660047FFFB3DD9010201305100C0011 +S31540014A30861020009010001492146160C43FBFF8A4 +S31540014A4005300F78070C00088610E0017FFFF3AFB1 +S31540014A50C43FBFF0C40461600310040080A080011C +S31540014A60228003CBC20420047FFFB3CC90102013D5 +S31540014A70A607BFF0921461607FFFF3A49010001364 +S31540014A80C20721F8C404616080A08001028003B09E +S31540014A90051000807FFFB3C1901020139015E1B837 +S31540014AA07FFFF39A92146160C204A1688330600E5D +S31540014AB08208600380A060020280000401000000B9 +S31540014AC07FFFB3B690102013C024A1687FFFF47F07 +S31540014AD01111F2000310E80080A20001128002EBDE +S31540014AE003100080C200616880A06000128002E766 +S31540014AF0010000007FFFF5B3111000001101F58997 +S31540014B007FFFF472901221E20308E96480A200015A +S31540014B10128002DB01000000C204A16880A060008F +S31540014B20128002D7010000007FFFF4681112A2082B +S31540014B300311410080A20001128002CE0100000053 +S31540014B40C204A16880A06000128002CA0100000070 +S31540014B507FFFF59C11001000901000149215E1B8EA +S31540014B607FFFF35194146160C404616003100C002B +S31540014B7080A080012280036EC20420047FFFB38798 +S31540014B80901020149015E1B8921000137FFFF34B5B +S31540014B9094146160C40461600320000080A0800118 +S31540014BA02280035BC20420047FFFB37C9010201453 +S31540014BB07FFFF38E90102001030FE00080A20001D9 +S31540014BC0128002A901000000C204A16880A0600011 +S31540014BD0128002A5010000007FFFF37C90102001A6 +S31540014BE0030FFC0080A200010280034280A2600004 +S31540014BF07FFFB36A901020147FFFF57211101000E9 +S31540014C00D41EE1D87FFFF3FFD01DE1B8C206A1D083 +S31540014C10D024616080A040080280032BD224200466 +S31540014C207FFFB35E901020227FFFF56611100000D2 +S31540014C30050FFC00861020009010001492100013FE +S31540014C40C43FBFF8050F2800070400808610E0F036 +S31540014C50941461607FFFF314C43FBFF0C4046160E4 +S31540014C60030FFC0080A0800122800313C2042004AC +S31540014C707FFFB34A901020157FFFF55211200000A7 +S31540014C80050FFC00861020009010001492100013AE +S31540014C90C43FBFF805001400070000408610E0013C +S31540014CA0941461607FFFF300C43FBFF0C4046160A8 +S31540014CB0030FFC0080A08001228002FBC204200475 +S31540014CC07FFFB336901020157FFFF53E113000006F +S31540014CD0052FFC008610200090100014921000133E +S31540014CE0C43FBFF805201400070000408610E001CC +S31540014CF0941461607FFFF2ECC43FBFF0C40461606D +S31540014D00032FFC0080A08001228002E3C20420041C +S31540014D107FFFB322901020157FFFF52A1110000066 +S31540014D20050FFC0086102000901000149215A1C8B2 +S31540014D30C43FBFF87FFFF2DC94146160C404616034 +S31540014D40C205A1C880A08001228002CCC4042004EF +S31540014D507FFFB312901020157FFFF51A1120000036 +S31540014D60050FFC0086102000901000149215A1C872 +S31540014D70C43FBFF805001400070000408610E0015B +S31540014D80941461607FFFF2C8C43FBFF0C404616000 +S31540014D90C205A1C880A08001228002B1C4042004BA +S31540014DA07FFFB2FE901020157FFFF50611300000FF +S31540014DB0052FFC0086102000901000149215A1C802 +S31540014DC0C43FBFF805201400070000408610E001EB +S31540014DD0941461607FFFF2B4C43FBFF0C205A1C81D +S31540014DE0C404616080A0800102800296091000809F +S31540014DF07FFFB2EA901020157FFFF4F211100000F8 +S31540014E00050FFC008610200190100014921000132B +S31540014E10C43FBFF80510000086102001941461605C +S31540014E207FFFF2A6C43FBFF0C404616003100000D7 +S31540014E3080A080012280027FC20420047FFFB2D776 +S31540014E40901020157FFFF4DF112000009010001410 +S31540014E50921000137FFFF29994146160C40461605B +S31540014E600310000080A080012280026EC20420044B +S31540014E707FFFB2CA901020157FFFF4D21130000097 +S31540014E80052FFC008610200190100014921000138B +S31540014E90C43FBFF87FFFF28994146160C404616026 +S31540014EA00330000080A080012280025AC2042004FF +S31540014EB07FFFB2BA901020157FFFF4C21110000097 +S31540014EC0050FFEAE071CD2E88410A1548610E011EE +S31540014ED09010001492100013C43FBFF8050FFC0454 +S31540014EE0072F26158410A0128610E23194146160B2 +S31540014EF07FFFF280C43FBFF0C4046160030FFEA789 +S31540014F008210629680A080012280023CC404200463 +S31540014F107FFFB2A2901020157FFFF4AA1120000056 +S31540014F2090100014921000137FFFF2729414616086 +S31540014F30C4046160030FFEA78210629680A08001BF +S31540014F4022800228C40420047FFFB29490102015C9 +S31540014F507FFFF49C11300000052FFC04072F261516 +S31540014F608410A0128610E2319010001492100013A2 +S31540014F70C43FBFF07FFFF25F94146160C404616077 +S31540014F80032FFEA78210629680A080012280020F25 +S31540014F90C40420047FFFB281901020157FFFF4895D +S31540014FA011100000051038008610200090100014E2 +S31540014FB092100013C43FBFF8051010008610200060 +S31540014FC0941461607FFFF24BC43FBFF0C40461603B +S31540014FD00310240080A08001228001F8C20420042D +S31540014FE07FFFB26E901020157FFFF47611200000EE +S31540014FF090100014921000137FFFF23E94146160EA +S31540015000C40461600310240080A08001228001E76E +S31540015010C20420047FFFB261901020157FFFF4691E +S315400150201130000090100014921000137FFFF231EE +S3154001503094146160C40461600310240080A080015F +S31540015040228001D6C20420047FFFB254901020155D +S315400150507FFFF45C1110000011002000130FE000E7 +S315400150607FFFF3109212600180A22000128001C8D6 +S31540015070010000007FFFF4531120000011002000C1 +S31540015080130FE0007FFFF3079212600180A2200018 +S31540015090128001BC010000007FFFF44A113000007C +S315400150A011002000130FE0007FFFF2FE9212600113 +S315400150B080A22000128001B0010000007FFFF44170 +S315400150C011100000050FFC008610200090100014FE +S315400150D0921461607FFFF20DC43FBFF8C404616062 +S315400150E0C207BFF880A080012280019AC40420042F +S315400150F07FFFB22A901020157FFFF4321120000065 +S31540015100901000147FFFF20192146160C404616043 +S31540015110C207BFF880A0800122800185C404200413 +S315400151207FFFB21E901020157FFFF426113000003C +S31540015130901000147FFFF1F592146160C404616020 +S31540015140C207BFF880A0800122800170C4042004F8 +S315400151507FFFB212901020157FFFF41A1110000044 +S315400151602B0FDFFF901563FF7FFFF2D8AA1563FF70 +S3154001517080A2001502800004010000007FFFB207F3 +S31540015180901020157FFFF40F11200000110FDFFF53 +S315400151907FFFF2CE901223FF030FE00080A20001B1 +S315400151A002800004010000007FFFB1FC9010201531 +S315400151B07FFFF404113000002B0FDFFF901563FFD2 +S315400151C07FFFF2C2AA1563FF80A200150280000488 +S315400151D0010000007FFFB1F1901020157FFFF3F928 +S315400151E0901020007FFFF2C190146160C404616099 +S315400151F0032FFE0080A0800122800140C2042004CA +S315400152007FFFB1E6901020162B1001247FFFF2C1DB +S3154001521090156168C4056168032FF00080A0800184 +S3154001522002800004010000007FFFB1DC90102016CF +S315400152307FFFF2C290156168C4056168030FE00003 +S3154001524080A0800102800004010000007FFFB1D3ED +S31540015250901020167FFFF2C990146160C40461600A +S31540015260030FFBF7821063F080A080012280011CAE +S31540015270C40420047FFFB1C9901020169215E1B8ED +S31540015280901000147FFFF19B94146160C204A168E1 +S315400152908330600E8208600780A0600202800005AC +S315400152A0031000807FFFB1BD9010201703100080CE +S315400152B0C400617003100046E40060F8821060F893 +S315400152C080A0400202800005031000807FFFB1B339 +S315400152D09010201803100080C200617480A0401213 +S315400152E002800005031000807FFFB1AC90102018AA +S315400152F003100080C200617880A06000128000F433 +S315400153000100000003100080C200617C80A06000A3 +S31540015310128000EC010000007FFFF14E0100000009 +S3154001532080A220010280052D01000000050C4029C4 +S315400153300723CD1B8410A0068610E09B9010001415 +S31540015340C027BFF0C027BFF4C43FBFF82910008172 +S315400153507FFFF1962B100082AA1560A0A4102000B1 +S31540015360A81520A0AC146160BA1000151080000881 +S31540015370AE1000107FFFB18990102019A404A0043B +S3154001538080A4A400228000172B100084C2050012BD +S31540015390C224C000901000137FFFF18792100016BF +S315400153A0832CA001C4040000C605400180A0C002B0 +S315400153B012BFFFF182074001C4006004C205E00448 +S315400153C080A0800112BFFFEC01000000A404A004EC +S315400153D080A4A40032BFFFEFC20500122B10008447 +S315400153E0A2146160AA1560A0A4102000AE10001599 +S315400153F010800008AC1000107FFFB1689010201A91 +S31540015400A404A00880A4A4000280001501000000A5 +S31540015410C2050012C224C000921000117FFFF13B69 +S3154001542090100013C4054012C204000080A0800100 +S3154001543012BFFFF28205C012C4006004C205A00477 +S3154001544080A0800112BFFFED01000000A404A00866 +S3154001545080A4A40032BFFFF0C205001281C7E00854 +S3154001546081E800007FFFB14D9010200F30BFF69AC2 +S315400154707FFFB14A9010200F10BFF68C110048EA09 +S315400154807FFFB1469010200F10BFF646D01DE1B800 +S315400154907FFFB1429010200F10BFF64FD01CE1E0C4 +S315400154A07FFFB13E9010200F10BFF608D41CE1E0FB +S315400154B07FFFB13A9010200F10BFF5F411151BE88C +S315400154C07FFFB1369010200F10BFF5E011151BC0BC +S315400154D07FFFB1329010200F10BFF5C4901020000D +S315400154E07FFFB12E9010200F10BFF5B011351BC0B4 +S315400154F07FFFB12A9010200F10BFF57AD01CE1E052 +S315400155007FFFB1269010200F10BFF583D01D61F0AB +S315400155107FFFB1229010200F10BFF565D01DE1B875 +S315400155207FFFB11E9010200F10BFF53FD41D61F0D3 +S315400155307FFFB11A9010200F10BFF52ED41CE1E069 +S315400155407FFFB1169010200F10BFF51A11151BE8F9 +S315400155507FFFB1129010200F10BFF50611151BC029 +S315400155607FFFB10E9010200F10BFF4DA11351BC02A +S315400155707FFFB10A9010200F10BFF4E69010200073 +S315400155807FFFB1069010200E30BFF4BF7FFFB103FD +S315400155909010200E10BFF4B11128C6AF7FFFB0FFA7 +S315400155A09010200E10BFF4A11108C6AF7FFFB0FBCB +S315400155B09010200E10BFF4911128C6AF7FFFB0F7AF +S315400155C09010200E10BFF4822108C6AF7FFFB0F3C2 +S315400155D09010200D30BFF4517FFFB0F09010200D98 +S315400155E010BFF444371000807FFFB0EC9010200CC0 +S315400155F010BFF3A2271000807FFFB0E89010200B68 +S3154001560030BFF34F7FFFB0E59010201110BFFA8FE6 +S31540015610110020007FFFB0E19010201110BFFA6DFC +S31540015620110020007FFFB0DD9010201110BFFA5C01 +S31540015630111E607E7FFFB0D99010201110BFFA4B2A +S315400156401111BBFE7FFFB0D59010201010BFF85E40 +S31540015650091000807FFFB0D19010201010BFF84F85 +S31540015660111000007FFFB0CD9010201430BFFD5BBC +S315400156707FFFB0CA9010202330BFFD367FFFB0C7F1 +S315400156809010202330BFFD297FFFB0C49010201316 +S3154001569030BFFD197FFFB0C19010201210BFFC4EE4 +S315400156A0111FE00012BFF30A01000000C204A16805 +S315400156B080A0600002BFF3080100000030BFF30480 +S315400156C07FFFB0B69010201830BFFF147FFFB0B3F4 +S315400156D09010201810BFFF0D031000800303FF1226 +S315400156E08210604A80A0800112BFFEE39215E1B8A4 +S315400156F010BFFEE59010001480A0600002BFFEC4FA +S315400157002B10012430BFFEBFC207BFFC80A0800121 +S3154001571012BFFE9001000000C204A16880A0600093 +S3154001572002BFFE8E0100000030BFFE8AC207BFFCE9 +S3154001573080A0800112BFFE7B01000000C204A16867 +S3154001574080A0600002BFFE790100000030BFFE75F7 +S31540015750C207BFFC80A0800112BFFE6601000000A7 +S31540015760C204A16880A0600002BFFE64010000007F +S3154001577030BFFE607FFFB0899010201530BFFE50CC +S315400157807FFFB0869010201530BFFE447FFFB08367 +S315400157909010201530BFFE3880A0600002BFFE2D5C +S315400157A00100000030BFFE2980A0600002BFFE1C40 +S315400157B00100000030BFFE1880A0600002BFFE0B52 +S315400157C00100000030BFFE07032C1B3482106030FD +S315400157D080A0800112BFFDF00100000030BFFDF046 +S315400157E0032C1B348210603080A0800112BFFDD78C +S315400157F00100000030BFFDD7032C1B348210602FFF +S3154001580080A0800112BFFDC30100000030BFFDC36F +S3154001581080A0600312BFFDA70100000030BFFDA7B5 +S3154001582080A0600312BFFD930100000030BFFD93CD +S3154001583080A0600212BFFD820100000030BFFD82E0 +S31540015840C4042004881121C8C201200480A080011B +S3154001585012BFFD680100000030BFFD6807100080DF +S315400158608610E1C8C200E00480A0800112BFFD4D50 +S315400158700100000030BFFD4D09100080881121C88C +S31540015880C201200480A0800112BFFD320100000048 +S3154001589030BFFD3280A0600112BFFD1E0100000035 +S315400158A030BFFD1E80A0600112BFFD060100000051 +S315400158B030BFFD0680A0600002BFFCF00100000081 +S315400158C030BFFCEC071000808610E1D0C200E00436 +S315400158D080A0400912BFFCD301000000C204A168A8 +S315400158E080A0600002BFFCD10100000030BFFCCDAA +S315400158F012BFFCC001000000C204A16880A0600084 +S3154001590002BFFCBE0100000030BFFCBA80A06000AF +S3154001591012BFFCA601000000C204A16880A060007D +S3154001592002BFFCA40100000030BFFCA080A06000C3 +S3154001593012BFFC9301000000C204A16880A0600070 +S3154001594002BFFC929015E1B830BFFC8D8410A1F8DE +S31540015950C200A004C404200480A0800112BFFC4EF2 +S3154001596001000000C404A168030000708210601F9A +S3154001597084088001030000108210601080A080011D +S3154001598012BFFC459015E1B830BFFC4680A06000CF +S3154001599012BFFC3601000000C204A16880A060006D +S315400159A002BFFC35A607BFF030BFFC30C40420045B +S315400159B080A0800112BFFC1C03100080C2006168F8 +S315400159C080A0600002BFFC1B05100C0030BFFC1616 +S315400159D009100080881121F8C201200480A08001AD +S315400159E012BFFC0603100080C4006168030000700A +S315400159F08210601F8408800103000010821060102D +S31540015A0080A0800112BFFBFD0100000030BFFBFDFD +S31540015A10071000808610E1F8C200E00480A08001F2 +S31540015A2012BFFBEB01000000C404A1680300007033 +S31540015A308210601F840880010300001082106010EC +S31540015A4080A0800112BFFBE20100000030BFFBE2F3 +S31540015A50C4042004881121D8C201200480A08001F9 +S31540015A6012BFFBD101000000C204A16880A0600002 +S31540015A7002BFFBD09016A1D030BFFBCBC40420049B +S31540015A808610E1C0C200E00480A0800112BFFBBCC9 +S31540015A9001000000C204A16880A0600002BFFBBBF8 +S31540015AA09016E1D830BFFBB6C207BFCC80A08001BB +S31540015AB012BFFBA703100080C200616880A060008E +S31540015AC002BFFBA60910008030BFFBA103300000D6 +S31540015AD08210602080A0800112BFFB90010000006F +S31540015AE0C204A16880A0600002BFFB8E01000000D5 +S31540015AF030BFFB8A80A0600012BFFB7B0100000023 +S31540015B00C204A16880A0600002BFFB7A111FDFFFBB +S31540015B1030BFFB750338000080A0800112BFFB67D0 +S31540015B2001000000C204A16880A0600002BFFB66BC +S31540015B30111FD00030BFFB6180A0600012BFFB5235 +S31540015B4003100080C200616880A0600002BFFB5163 +S31540015B50111FDFFF30BFFB4C80A0600012BFFB313D +S31540015B6001000000C204A16880A0600002BFFB30B2 +S31540015B701110000030BFFB2B80A0600012BFFB1E3E +S31540015B8001000000C204A16880A0600002BFFB1DA5 +S31540015B90111FE00030BFFB18C20420048610E21832 +S31540015BA0C400E10480A0800112BFFAFC031000800A +S31540015BB0C4006168030000708210601F8408800180 +S31540015BC0030000108210600880A0800112BFFAF322 +S31540015BD00100000030BFFAF3C204200480A0800116 +S31540015BE012BFFADF03100080C40061680300007031 +S31540015BF08210601F84088001030000108210600437 +S31540015C0080A0800112BFFAD60100000030BFFAD64B +S31540015C10C20420048610E218C400E0D480A08001AA +S31540015C2012BFFAC003100080C4006168030000700F +S31540015C308210601F840880010300001082106008F2 +S31540015C4080A0800112BFFAB70100000030BFFAB749 +S31540015C50C204200480A0800112BFFAA30310008071 +S31540015C60C4006168030000708210601F84088001CF +S31540015C70030000108210600880A0800112BFFA9ACA +S31540015C800100000030BFFA9AC20420048610E218CF +S31540015C90C400E0A480A0800112BFFA840100000084 +S31540015CA0C404A168030000708210601F840880014B +S31540015CB0030000108210600480A0800112BFFA7BAD +S31540015CC00100000030BFFA7BC206600480A080015B +S31540015CD012BFF9CD01000000C204A16880A0600096 +S31540015CE002BFF9CC9014E1E030BFF9C7C2066004A7 +S31540015CF080A0800112BFF9B901000000C204A16869 +S31540015D0080A0600002BFF9B89014E1E030BFF9B35A +S31540015D10C206600480A0800112BFF9A501000000FF +S31540015D20C204A16880A0600002BFF9A49014E1E01A +S31540015D3030BFF99FC206600480A0800112BFF9916D +S31540015D4003100080C200616880A0600002BFF99024 +S31540015D509014E1E030BFF98B071000808610E1F81E +S31540015D60C200E00480A0800112BFF96D010000006D +S31540015D70C404A168030000708210601F840880017A +S31540015D80030000108210601080A0800112BFF964E8 +S31540015D909015A1C810BFF9669215E1B8C206600414 +S31540015DA080A0800112BFF95303100080C2006168D0 +S31540015DB080A0600002BFF9529015A1C830BFF94DCD +S31540015DC009100080881121F8C201200480A08001B9 +S31540015DD012BFF93C01000000C404A1680300007031 +S31540015DE08210601F84088001030000108210601039 +S31540015DF080A0800112BFF9330100000030BFF933A2 +S31540015E00071000808610E1C8C200E00480A080012E +S31540015E1012BFF92103100080C200616880A06000B2 +S31540015E2002BFF9209015A1C830BFF91B09100080A7 +S31540015E30881121F8C201200480A0800112BFF8FD1B +S31540015E4001000000C404A168030000708210601FB5 +S31540015E5084088001030000108210601080A0800138 +S31540015E6012BFF8F49010001D10BFF8F69215E1B874 +S31540015E70C206600480A0800112BFF8E303100080CF +S31540015E80C200616880A0600002BFF8E29010001D68 +S31540015E9030BFF8DD071000808610E1F8C200E0044B +S31540015EA080A0800112BFF8CC01000000C404A168A3 +S31540015EB0030000708210601F8408800103000010F7 +S31540015EC08210601080A0800112BFF8C3010000005B +S31540015ED030BFF8C3C207BFD480A0800112BFF8B259 +S31540015EE003100080C200616880A0600002BFF8B163 +S31540015EF00310008030BFF8AC09100080881121F8EA +S31540015F00C201200480A0800112BFF88E010000006A +S31540015F10C404A168030000708210601F84088001D8 +S31540015F20030000108210601080A0800112BFF88526 +S31540015F309010001410BFF8879215E1B8C2066004AC +S31540015F4080A0800112BFF87401000000C204A1685C +S31540015F5080A0600002BFF8739010001430BFF86E45 +S31540015F60071000808610E1D8C200E00480A08001BD +S31540015F7012BFF85E01000000C204A16880A0600063 +S31540015F8002BFF85D9010001430BFF8588810E1C088 +S31540015F90C201200480A0800112BFF849031000808D +S31540015FA0C200616880A0600002BFF84890100014EA +S31540015FB030BFF84303003A9A8210630F80A08001F4 +S31540015FC012BFF7BD03100080C200616880A0600067 +S31540015FD002BFF7BC050006AF30BFF7B780A060002F +S31540015FE012BFF78103100080C4006168030000708E +S31540015FF08210601F8408800103000010821060082F +S3154001600080A0800112BFF7780500400010BFF77AE3 +S315400160100700C00009100080881121F8C201200440 +S3154001602080A0800112BFF6EF01000000C404A16800 +S31540016030030000708210601F840880010300001075 +S315400160408210601080A0800112BFF6E69014E1E054 +S3154001605010BFF6E89215E1B8C206600480A080013F +S3154001606012BFF6D501000000C204A16880A06000FD +S3154001607002BFF6D49014E1E030BFF6CFC206600409 +S3154001608080A0800112BFF6C101000000C204A168D0 +S3154001609080A0600002BFF6C09014E1E030BFF6BBBD +S315400160A0C206600480A0800112BFF6AD0100000067 +S315400160B0C204A16880A0600002BFF6AC9014E1E082 +S315400160C030BFF6A7C206600480A0800112BFF699D0 +S315400160D003100080C200616880A0600002BFF6988C +S315400160E09014E1E030BFF693071000808610E1F886 +S315400160F0C200E00480A0800112BFF67401000000D6 +S31540016100C404A168030000708210601F84088001E6 +S31540016110030000108210601080A0800112BFF66B50 +S315400161200100000030BFF66BC206600480A080010A +S3154001613012BFF65B03100080C200616880A0600058 +S3154001614002BFF65A9015A1C830BFF6550910008016 +S31540016150881121F8C201200480A0800112BFF644B3 +S3154001616001000000C404A168030000708210601F92 +S3154001617084088001030000108210601080A0800115 +S3154001618012BFF63B0100000030BFF63B071000800E +S315400161908610E1D8C200E00480A0800112BFF62932 +S315400161A001000000C204A16880A0600002BFF62879 +S315400161B09015A1C830BFF623071000808610E1D0A4 +S315400161C0C200E00480A0800112BFF61203100080D5 +S315400161D0C200616880A0600002BFF611091000800C +S315400161E030BFF60CC206600480A0800112BFF5E004 +S315400161F001000000C204A16880A0600002BFF5DF73 +S315400162009010001D30BFF5DA8810E1C0C2012004AC +S3154001621080A0800112BFF5CB03100080C2006168E7 +S3154001622080A0600002BFF5CA9010001D30BFF5C5C1 +S31540016230071000808610E1F8C200E00480A08001CA +S3154001624012BFF5B201000000C404A168030000704A +S315400162508210601F840880010300001082106010C4 +S3154001626080A0800112BFF5A90910008030BFF5AAB0 +S31540016270C207BFD480A0800112BFF59803100080E9 +S31540016280C200616880A0600002BFF59703100080DC +S3154001629030BFF59209100080881121F8C20120040F +S315400162A080A0800112BFF57401000000C404A168FA +S315400162B0030000708210601F8408800103000010F3 +S315400162C08210601080A0800112BFF56B90100014FF +S315400162D010BFF56D9215E1B8C206600480A0800139 +S315400162E012BFF55A01000000C204A16880A06000F7 +S315400162F002BFF5599010001430BFF554C207BFCC08 +S3154001630080A0800112BFF54603100080C20061687B +S3154001631080A0600002BFF5459010001430BFF540E3 +S31540016320071000808610E1D0C200E00480A0800101 +S3154001633012BFF52F03100080C4006168030000708E +S315400163408210601F840880010300001082106002E1 +S3154001635080A0800112BFF5260100000030BFF5265E +S3154001636012BFF50001000000C204A16880A06000D0 +S3154001637002BFF4FF1110000030BFF4FA12BFF4EE71 +S3154001638001000000C204A16880A0600002BFF4EDD4 +S315400163901130000030BFF4E812BFF4DC0100000008 +S315400163A0C204A16880A0600002BFF4DB1130000086 +S315400163B030BFF4D612BFF4CA03100080C200616830 +S315400163C080A0600002BFF4C91110000030BFF4C4C0 +S315400163D0C20420048610E320C400E17C80A0800131 +S315400163E012BFF4B301000000C404A16803000070A9 +S315400163F08210601F8408800103000010821060042F +S3154001640080A0800112BFF4AA0100000030BFF4AAA7 +S31540016410C204200480A0800112BFF497010000004D +S31540016420C404A168030000708210601F84088001C3 +S31540016430030000108210600480A0800112BFF48E18 +S315400164401110008110BFF49094146160C2042004BD +S315400164508610E320C400E14C80A0800112BFF4788D +S3154001646001000000C404A168030000708210601F8F +S3154001647084088001030000108210600880A080011A +S3154001648012BFF46F1110008110BFF4719414616052 +S315400164907FFFAD429010201010BFF45E11100081B5 +S315400164A0C206600480A0800112BFF3B9010000005A +S315400164B0C204A16880A0600002BFF3B89014E1E075 +S315400164C030BFF3B3C206600480A0800112BFF3A5BA +S315400164D001000000C204A16880A0600002BFF3A4CD +S315400164E09014E1E030BFF39FC206600480A08001B2 +S315400164F012BFF39101000000C204A16880A06000B0 +S3154001650002BFF3909014E1E030BFF38BC206600402 +S3154001651080A0800112BFF37D03100080C200616834 +S3154001652080A0600002BFF37C9014E1E030BFF377B6 +S3154001653009100080881121F8C201200480A0800141 +S3154001654012BFF35A03100080C40061680300007053 +S315400165508210601F840880010300001082106010C1 +S3154001656080A0800112BFF3519015A1C810BFF3530B +S315400165709215E1B8071000808610E1F8C200E004E8 +S3154001658080A0800112BFF33B0100000030BFF33B06 +S3154001659009100080881121D0C201200480A0800109 +S315400165A012BFF31801000000C204A16880A0600078 +S315400165B002BFF3179016A1D030BFF3120710008027 +S315400165C08610E1D8C200E00480A0800112BFF30228 +S315400165D001000000C204A16880A0600002BFF3016F +S315400165E09016A1D030BFF2FC09100080881121C855 +S315400165F0C201200480A0800112BFF2EC010000001C +S31540016600C204A16880A0600002BFF2EB9016E1D8F7 +S3154001661030BFF2E6071000808610E1C8C200E004F0 +S3154001662080A0800112BFF2D603100080C2006168CB +S3154001663080A0600002BFF2D59015A1C830BFF2D04C +S3154001664009100080881121F8C201200480A0800130 +S3154001665012BFF2B10100000030BFF2B1C2066004C0 +S3154001666080A0800112BFF29001000000C204A1681F +S3154001667080A0600002BFF28F9010001D30BFF28AE9 +S31540016680071000808610E1C8C200E00480A08001A6 +S3154001669012BFF27A01000000C204A16880A0600026 +S315400166A002BFF2799010001D30BFF274C207BFFCE1 +S315400166B080A0800112BFF26603100080C2006168AB +S315400166C080A0600002BFF2659010001D30BFF260ED +S315400166D0881721F8C201200480A0800112BFF2422E +S315400166E00100000030BFF242C4042004C206600427 +S315400166F080A0800112BFF21E01000000C204A16801 +S3154001670080A0600002BFF21D9010001430BFF21845 +S315400167108615A1C8C200E00480A0800112BFF2091B +S3154001672001000000C204A16880A0600002BFF20817 +S315400167309010001430BFF203C2042004C407BFFC0A +S3154001674080A0800112BFF1F303100080C20061688E +S3154001675080A0600002BFF1F22D10008030BFF1ED44 +S3154001676080A2400112BFEFA201000000C204A1684D +S3154001677080A0600002BFEFA11111FC0030BFEF9C69 +S3154001678080A2400112BFEF9003100080C2006168F1 +S3154001679080A0600022BFEF8F113C02AF30BFEF8A6D +S315400167A012BFEEDB01000000C204A16880A06000B8 +S315400167B002BFEED90100000030BFEED512BFEECCCC +S315400167C001000000C204A16880A0600002BFEECAB9 +S315400167D00100000030BFEEC67FFFAC70901020195B +S315400167E010BFFAD4050C402981D8200081C3E008A6 +S315400167F00100000081D8200082102400C0A043007F +S3154001680081C3E00801000000853220109132201832 +S31540016810900A200F8408A00380A00008826020000F +S3154001682081C3E008900880019DE3BF887FFFEB7A32 +S315400168309010200C808A200812800004010000007C +S3154001684081C7E00891E820007FFFAC4D9010200EF3 +S31540016850C2800320853060188088A00F028000DD49 +S315400168602F100123833060108208600380A06002EC +S31540016870028000E0C225E0C880A06003028000FFDC +S3154001688080A06001028000EC2910010C2310010C4C +S315400168902110010C2B10010C2710010C2510010CA5 +S315400168A081D8200081D8200082102400C0A0430056 +S315400168B0031000A1051000A0821060008410A00002 +S315400168C0873060048610E00188100003C878800094 +S315400168D08800A004C67900008610200AC6784000C8 +S315400168E0C8046000C60420041B008000190800008B +S315400168F09A13600A993B0004980B0003992B2002D6 +S3154001690098030001DA7B00001B010000171000000C +S315400169109813608E973AC004960AC003972AE002FC +S315400169209602C001D87AC000171C00001901C000A8 +S31540016930893AC0049813208E860900038728E0020D +S315400169408600C001D878C0003B1000A28200600CCE +S31540016950BA176000873760048610E001C6784000A8 +S315400169608213601E86076008C278C000821020002C +S315400169708807600C86100001C67900002D1000A220 +S315400169809A076004AC15A1008735A004B81000161B +S315400169908610E001C67B4000B405A008C27E800097 +S315400169A01B1000C0B605A004861360008330E004C6 +S315400169B09810601AD87EC000C02360001B048D1554 +S315400169C09A136278DA20E004DA05E0C83310010050 +S315400169D09A03600CB21660008605A00CB010200028 +S315400169E0C627BFF8DA27BFFC901000189210200383 +S315400169F0C227BFF0C427BFEC40000AB0C827BFF486 +S31540016A00DA07BFFC992A000DC607BFF8980300199B +S31540016A10993320049813201ED878C000B00620016F +S31540016A208600E00480A62008C207BFF0C407BFEC79 +S31540016A3012BFFFECC807BFF417100020DE05200C7B +S31540016A408612E168C822E16809100020D005600875 +S31540016A50D804A014DA04E010D2042004D40460005F +S31540016A60960BE001972AC008C6212160880A600377 +S31540016A708929000A8812C004960B2002972AC00D64 +S31540016A809611000B8530A004D620E0209610600EAA +S31540016A90D620E0289608BFF0840B20018528800D7A +S31540016AA0841100028210601EC420E02CC420E01430 +S31540016AB0050100008410A01EC220E010C420E0049D +S31540016AC0F620E00CF420E018F620E024050076419B +S31540016AD0031000208410A1C082106000C420E00889 +S31540016AE0833060048210601EC220E01C82102100A7 +S31540016AF0D6A04320C4800320C280432084102001B5 +S31540016B0082102200C4A04320C68043208610200064 +S31540016B10C6A04320C4A0032081D820007FFFEABE3F +S31540016B2090102000913A200C808A20030280006553 +S31540016B3001000000C280032082102100C280432050 +S31540016B4082102200C2804320C80420048809200301 +S31540016B50C2046000C605200CC4056008D404A01414 +S31540016B60D604E010832900019808E0019A0AA001A1 +S31540016B70992B00029B2B400B981300019A13000D91 +S31540016B80C803400080A120000280000388136004EE +S31540016B9030800000D201000011048D159012227838 +S31540016BA080A2400812BFFFFB111000009E08E002C0 +S31540016BB0D00200009F2BC0029E13C001DE03C0001D +S31540016BC080A3C008228000428608E003308000008E +S31540016BD02310010C2110010CC025E0C82B10010C1B +S31540016BE02910010C2710010C10BFFF2E2510010C96 +S31540016BF02110010C2910010C2510010C2310010C48 +S31540016C008210203F2B10010C2710010CC2242004B6 +S31540016C10C224A014C225200C8210201AC22460006E +S31540016C2082102014C22560088210200E10BFFF1D5D +S31540016C30C224E0102510010C2310010C8210203FC4 +S31540016C402110010C2B10010C2710010CC225200C20 +S31540016C50C224A01482102019C22460008210207F11 +S31540016C60C224200482102013C22560088210200D00 +S31540016C7010BFFF0CC224E0102110010C2710010C9B +S31540016C802310010C8210200F2B10010C2910010C2E +S31540016C902510010CC224E010C22420048210201CBD +S31540016CA0C224600082102015C22560088210207F10 +S31540016CB0C225200C8210203F10BFFEFAC224A01428 +S31540016CC07FFFC4D30100000030BFFF9B8528C0026F +S31540016CD082108001C20040000321D95082106321F5 +S31540016CE0C2210000C401000080A08001028000038F +S31540016CF001000000308000008210000D05048D1552 +S31540016D008410A278072AF37B8610E301C438400039 +S31540016D10C4384000C203400080A0400902800003FD +S31540016D200100000030800000C4010000032AF37B0B +S31540016D308210630180A0800112BFFFFBC205E0C83B +S31540016D40940AA0038200600C972A800B84102001CC +S31540016D50AE13000B85288001B0102000EE25C0003F +S31540016D60C0A0022092102003C227BFF0C427BFEC67 +S31540016D70400009D290100018C207BFF0912A0001C5 +S31540016D80C606400880A0C01712800008C407BFECA1 +S31540016D90B006200180A6200802800005AE05C0028B +S31540016DA010BFFFF0EE25C00030800000C0A00220D9 +S31540016DB0AE102003B0102000852DE002C4058002EC +S31540016DC08608A06080A00003C227BFF0B04000182B +S31540016DD0C427BFEC9005FFFD400009B8921020037F +S31540016DE0C207BFF0C407BFEC872A000186064003ED +S31540016DF08730E0048610E01E8418C0028088BF9F59 +S31540016E0012800009AE05E00180A5E00B32BFFFEC20 +S31540016E10852DE00280A6200012800004D805200CB2 +S31540016E203080000030800000C8056008DA04200484 +S31540016E30C4046000C604A014C204E010980B2001EB +S31540016E409A0B6003892B0004852B40028608E002D9 +S31540016E50841100028328C001821080019FC0400036 +S31540016E600100000082102400C0A04300C0A00220FF +S31540016E708210200084072020C607200C8608E06087 +S31540016E8080A00003B80720048240000180A70002C9 +S31540016E9032BFFFFBC607200C80A06008228000039A +S31540016EA0C206C00030800000808860400280000435 +S31540016EB08088602032800003C2076008308000006D +S31540016EC08088602032800003C20680003080000046 +S31540016ED0808860201280000301000000308000009D +S31540016EE083480000842860808188A000010000005A +S31540016EF00100000001000000D8042004C80460001D +S31540016F00DA05200CC4056008C604A014C204E010CA +S31540016F10980B20039A0B6001892B0004852B4002B4 +S31540016F208608E001841100028328C0018410A00470 +S31540016F3082108001C20040009210200491D02002AC +S31540016F40010000007FFFE9B490102000913A200C27 +S31540016F50808A200312800005841020007FFFC42C04 +S31540016F60010000008410200082102200C4A04320AA +S31540016F7086102001C6A04320C4A043200310000070 +S31540016F80C4804380C4A043807FFFC48E90102000FC +S31540016F9081D8200030BFFE2B9DE3BFA040000822D0 +S31540016FA001000000808A21001280000401000000D7 +S31540016FB081C7E00891E820007FFFAA9423100120B1 +S31540016FC0912A20047FFFAA6E90022005A214600038 +S31540016FD0C204600480A060000280001A8210200072 +S31540016FE0A010200084044001C8044001C600A0044A +S31540016FF0C200A0089B39201F818360000100000068 +S3154001700001000000010000008479000380A0800196 +S3154001701002800004A00420017FFFAA609010200195 +S3154001702082040010820040108328600284044001DB +S31540017030C400A00480A0A00012BFFFEC840440015C +S3154001704023100120A2146138C204600480A06000AC +S315400170500280001982102000A01020008404400103 +S31540017060C8044001C600A004C200A00881802000D7 +S3154001707001000000010000000100000084710003CE +S3154001708080A0800102800004A00420017FFFAA4362 +S315400170909010200282040010820040108328600272 +S315400170A084044001C400A00480A0A00012BFFFEDEB +S315400170B084044001400008890100000080A22000AC +S315400170C012BFFFBC901020037FFFAA34B0102000EE +S315400170D081C7E00881E800009DE3BFA07FFFAA4B7E +S315400170E001000000912A20047FFFAA259002200476 +S315400170F0400007CF0100000080A221230280000446 +S31540017100010000007FFFAA2590102001400007C61C +S3154001711001000000808A21000280002923100120FD +S31540017120A2146180C204600880A060090280001533 +S3154001713082102000A010200084044001C6044001B2 +S31540017140C800A004C200A0088459000380A08001A1 +S3154001715002800004A00420017FFFAA1090102002A3 +S31540017160820400108200401083286002840440019A +S31540017170C400A00880A0A00912BFFFF18404400109 +S31540017180400007B80100000080A2200002800023D1 +S3154001719001000000400007B30100000080A220006A +S315400171A002800016010000004000079F0100000018 +S315400171B0808A2200128000040100000081C7E00895 +S315400171C091E82000400007F80100000080A220005D +S315400171D00280001A01000000400007F30100000090 +S315400171E080A2200012BFFFF6010000007FFFA9EB3D +S315400171F09010200430BFFFF27FFFA9E890102003D2 +S315400172004000078901000000808A220002BFFFEC8E +S315400172100100000030BFFFEC7FFFA9E09010200382 +S31540017220400007900100000080A2200012BFFFDF4E +S315400172300100000030BFFFF17FFFA9D89010200464 +S3154001724030BFFFE6000000009DE3BFA09410200080 +S315400172501110005C9012227C1310005C9212628025 +S315400172601710005C9612E2881910005C9813228C64 +S3154001727093C2000081C240001080019181C2C000CA +S3154001728081C300001080018E9402A0019402A001E6 +S3154001729080A2A0031280018A0100000087440000F9 +S315400172A08D30E00E8C89A00780A1A000028000C726 +S315400172B001000000AF30E00BAE0DE00780A5E00015 +S315400172C0128000C20100000080A1A0021280003598 +S315400172D00100000025100000E41C8000251000007C +S315400172E029100000A8152104A6100012AA100012A8 +S315400172F0AC100014A1802046A4100000AA10000082 +S3154001730001000000A180204EA810210001000000CC +S31540017310A18000000100000001000000E83CA0300F +S3154001732082A480131280016682A500161280016430 +S315400173300100000001000000010000008744000038 +S315400173408D30E00B8C89A0078CA1A0051280015CD1 +S31540017350A1800000010000000100000001000000C2 +S31540017360E81CA03082A500161280015582A5401264 +S31540017370A41000001280015201000000010000002B +S31540017380874400008D30E00B8C89A0078CA1A003B7 +S315400173901280014B010000001080008C01000000AA +S315400173A080A1A0011280002325100000E41C80006A +S315400173B02510000029100000A8152104A61000126E +S315400173C0AA100012AC100014A1802046A41000009F +S315400173D0AA10000001000000A180204EA810210043 +S315400173E001000000A1800000010000000100000032 +S315400173F001000000E83C800082A480131280013025 +S3154001740082A500161280012E010000000100000035 +S31540017410874400008D30E00B8C89A0078CA1A00227 +S315400174201280012701000000108000680100000061 +S3154001743080A1A00312800065A6100000A210200EB4 +S31540017440A1844000A6100000A1800000A814E0001D +S31540017450AB44000001000000AC14E0000100000054 +S31540017460AF44000080A5200012800115AA8D6E0050 +S3154001747080A540001280011280A5A0001280011053 +S31540017480AF35E00BAE0DE00780A5E0011280010C9F +S3154001749001000000A0100000A1844000A6100000D9 +S315400174A0A1800000E8180000AC100000AE100000FA +S315400174B0EC04C000EE04E00480A500161280010031 +S315400174C080A54017128000FE01000000A54400007F +S315400174D0A534A00BA40CA00780A4A001128000F83B +S315400174E001000000A0100000A1844000A610000089 +S315400174F0A1800000A210200AA1844000A41000002F +S31540017500A1800000E8180000AC100000AE10000099 +S31540017510EC04C012EE04E00480A50016128000E8D7 +S3154001752080A54017128000E601000000A544000036 +S31540017530A534A00BA40CA00780A4A002068000E0FD +S315400175400100000021100120A0142200EC1C0000C3 +S31540017550A0042008E81C0000A1844000A6100000F9 +S31540017560A1800000A210200EA1844000A4100010AA +S31540017570AC100000AE100000A18000000100000028 +S3154001758001000000EC3C8013AC100000AE1000007E +S31540017590E81CC01280A50016128000C980A54017BC +S315400175A0128000C701000000A5440000A534A00BCD +S315400175B0A40CA00780A4A004128000C10100000011 +S315400175C010800002010000008B4440008A09601FC0 +S315400175D080A160010280000A8C1000059DE3BFA0D6 +S315400175E08AA1600116BFFFFE0100000081E800008C +S315400175F08CA1A00116BFFFFE0100000001000000A2 +S3154001760001000000A023A080A02C20078E100010AE +S31540017610A3480000E2240000C2242004C43C200800 +S31540017620C83C2010CC3C2018F03C2020F43C2028BB +S31540017630F83C2030FC3C2038D03C2040D43C20480B +S31540017640D83C2050DC3C2058A5500000E424206062 +S315400176508010200882102001841020028610200309 +S31540017660881020048A1020058C1020068190000085 +S31540017670A42C601F818C80000100000001000000E5 +S3154001768001000000030040408210610184100000A7 +S3154001769086100000894440008809201F8610000496 +S315400176A0A010000284004002A210000284004002A1 +S315400176B0A410000284004002A61000028400400289 +S315400176C0A810000284004002AA1000028400400271 +S315400176D0AC10000284004002AE1000028400400259 +S315400176E09010000284004002921000028400400281 +S315400176F09410000284004002961000028400400269 +S3154001770098100002840040029A1000028400400250 +S315400177109C100002840040029E1000028400400238 +S3154001772081E0000086A0E00116BFFFDE01000000F7 +S31540017730030040408210610184100000861000045D +S3154001774080A400021280003F8400400280A44002CF +S315400177501280003C8400400280A4800212800039DD +S315400177608400400280A4C002128000368400400298 +S3154001777080A50002128000338400400280A54002A9 +S31540017780128000308400400280A580021280002DC4 +S315400177908400400280A5C0021280002A8400400273 +S315400177A080A20002128000278400400280A240028B +S315400177B0128000248400400280A2800212800021AF +S315400177C08400400280A2C0021280001E8400400252 +S315400177D080A300021280001B8400400280A3400265 +S315400177E0128000188400400280A380021280001596 +S315400177F08400400280A3C00212800012840040022D +S3154001780081E0000086A0E00116BFFFCE0100000026 +S3154001781080A020001280000B80A0FFFF128000098B +S3154001782080A160051280000780A1A0061280000594 +S3154001783001000000A010000710800006C02420208F +S31540017840A01000079010200110800002D0242020B3 +S3154001785082100007C40040008188800001000000BA +S315400178600100000001000000C4186008C81860103B +S31540017870CC186018F0186020F4186028F8186030A9 +S31540017880FC186038D0186040D4186048D818605049 +S31540017890DC186058E4006060C20060048194800096 +S315400178A0010000000100000001000000A0100007D7 +S315400178B0F004202081C7E00881E8000010BFFFFCEA +S315400178C0B01000000100000081D8200081C3E0080B +S315400178D0010000000328000084106004952AA00DD1 +S315400178E0D0204000922270009202400AD2208000AD +S315400178F081C3E0080100000003100124C40061AC0B +S3154001790003100124C200619C852A40028610200191 +S315400179108328C00182007FFF900A00019000800801 +S315400179208213C0007FFFE74C9E104000010000001B +S3154001793003100124C40061AC03100124C200619C00 +S31540017940852A4002861020018328C00182007FFFDC +S31540017950900A0001900080088213C0007FFFE73A39 +S315400179609E104000010000009DE3BFA02D100124A0 +S31540017970C205A1A0A410001880A0600004800020C8 +S31540017980B01020012F1001242B100124D005E1ACA9 +S3154001799029100124AC15A1A0AE15E1ACAA15619C34 +S315400179A0A815218CA0102000A2102000A6102001AD +S315400179B0C2054000832CC00182007FFF820C8001FA +S315400179C0912C00087FFFE72090020001C2050000CC +S315400179D0901A0012820A000180A00001C2058000AF +S315400179E0A2647FFFA004200180A0401034BFFFF1B4 +S315400179F0D005C00080A00011B0603FFF81C7E008FC +S31540017A0081E800009DE3BFA003100124C40061ACDE +S31540017A1003100124C200619CB32E40028410200150 +S31540017A208328800182007FFF820E00019210001A96 +S31540017A307FFFE70B9006400181C7E00881E800001F +S31540017A409DE3BFA003100124C40061AC03100124CF +S31540017A50C200619CB32E400284102001832880011C +S31540017A6082007FFF820E00019210001A7FFFE6F826 +S31540017A709006400181C7E00881E800000310012417 +S31540017A80C400619403100124C2006190852A40021A +S31540017A90861020018328C00182007FFF900A0001E1 +S31540017AA0900080088213C0007FFFE6E39E104000ED +S31540017AB0010000009DE3BFA003100124C4006194AE +S31540017AC003100124C2006190B32E400284102001AC +S31540017AD08328800182007FFF820E00019210001AE6 +S31540017AE07FFFE6D79006400181C7E00881E80000A4 +S31540017AF09DE3BFA003100124C40061940310012437 +S31540017B00C2006190B32E4002841020018328800177 +S31540017B1082007FFF820E00019210001A7FFFE6C4A9 +S31540017B209006400181C7E00881E800000310012466 +S31540017B30C400619403100124C2006190852A400269 +S31540017B40861020018328C00182007FFF900A000130 +S31540017B50900080088213C0007FFFE6B39E1040006C +S31540017B6001000000033FFFBF821063089DE38001CF +S31540017B700310004482106360C227BFEC0310004427 +S31540017B80821063A02F100044C227BFF4AE15E34014 +S31540017B9035100044EE27BFE8B416A38090102006A6 +S31540017BA07FFFA777F427BFF07FFFE69B9010200069 +S31540017BB0213FFFBF920A3FF0A01423689010200096 +S31540017BC07FFFE697A0078010230000307FFFE692F3 +S31540017BD090102000808A001112BFFFFD01000000B5 +S31540017BE081D82000230000307FFFE68B90102000D3 +S31540017BF0808A001112BFFFFD0100000023100124FD +S31540017C007FFFE6859010200013002040A410000855 +S31540017C109212600F921200097FFFE68190102000B8 +S31540017C207FFFE67D90102008D02461887FFFE67AA9 +S31540017C309010200C09100124C40461889938A014BD +S31540017C4013100124980B200F8603200AC621219088 +S31540017C50091001240310012496102400C621219401 +S31540017C60893A20148809200F9401200AD422619C64 +S31540017C70131001242D100124D0206198D42261AC27 +S31540017C8015100124932AC004833A2018D222A1A8B0 +S31540017C901510012482086003820060011B20000048 +S31540017CA08801200837100124C225A1A09201200293 +S31540017CB0821020019328400992234009D222A18CA7 +S31540017CC01510012487284003913A20109A23400336 +S31540017CD0992AC00CDA26E1A4D822A184A20A200757 +S31540017CE08738A018A93CA00CBA210011A408E003CA +S31540017CF08538A010A88D2003AA08A007A404A001D6 +S31540017D00AB284015A3284011AB2840159010001709 +S31540017D10AA057FFFA610200002800123B807BFE80D +S31540017D20A6042020030048D182106167C224C00006 +S31540017D3003226AF3821061EFC2242024C20C202060 +S31540017D4080A0600102800004010000007FFFA713AC +S31540017D509010201AC20C202180A0602302800004CA +S31540017D60010000007FFFA70D9010201BC20C2022AE +S31540017D7080A0604502800004010000007FFFA70744 +S31540017D809010201CC20C202380A060670280000452 +S31540017D90010000007FFFA7019010201DC20C202486 +S31540017DA080A0608902800004010000007FFFA6FBDD +S31540017DB09010201EC20C202580A060AB02800004DA +S31540017DC0010000007FFFA6F59010201FC20C20265F +S31540017DD080A060CD02800004010000007FFFA6EF75 +S31540017DE090102020C20C202780A060EF0280000462 +S31540017DF0010000007FFFA6E990102021C214202037 +S31540017E00832860108330601080A0612302800004C3 +S31540017E10010000007FFFA6E190102022C414202219 +S31540017E208528A010030000118530A01082106167DB +S31540017E3080A0800102800004010000007FFFA6D7D8 +S31540017E4090102023C41420248528A010030000226A +S31540017E508530A010821061AB80A0800102800004B1 +S31540017E60010000007FFFA6CD90102024C4142026D7 +S31540017E708528A010030000338530A010821061EFE1 +S31540017E8080A0800102800005821020307FFFA6C3BA +S31540017E909010202582102030C22C2020030C08D1BE +S31540017EA082106167C404C00080A080010280000581 +S31540017EB0821020317FFFA6B99010202782102031F1 +S31540017EC0C22C2021030C0C5182106167C404C000EE +S31540017ED080A0800102800005821020327FFFA6AF7C +S31540017EE09010202882102032C22C2022030C0C4CE8 +S31540017EF082106267C404C00080A080010280000530 +S31540017F00821020337FFFA6A59010202982102033AE +S31540017F10C22C2023030C0C4C82106233C404C000D3 +S31540017F2080A0800102800005821020347FFFA69B3D +S31540017F309010202A82102034C22C2024030D2AF3CB +S31540017F40821061EFC404202480A0800102800005D4 +S31540017F50821020357FFFA6919010202B821020356C +S31540017F60C22C2025030D0D73821061EFC404202419 +S31540017F7080A0800102800005821020367FFFA687FF +S31540017F809010202C82102036C22C2026030D0D4D38 +S31540017F90821062EFC404202480A080010280000583 +S31540017FA0821020377FFFA67D9010202D821020372A +S31540017FB0C22C2027030D0D4D82106237C4042024A4 +S31540017FC080A0800102800005030000107FFFA67398 +S31540017FD09010202E0300001082106041C2342020F0 +S31540017FE00310104C82106233C404C00080A080018B +S31540017FF002800005030000107FFFA6689010202F25 +S315400180000300001082106243C23420220310105034 +S3154001801082106243C404C00080A080010280000532 +S31540018020030000117FFFA65D901020300300001170 +S3154001803082106045C23420240311114D82106237EB +S31540018040C404202480A080010280000503000011A1 +S315400180507FFFA65290102031030000118210624723 +S31540018060C23420260311115182106247C4042024D0 +S3154001807080A0800102800004010000007FFFA64726 +S315400180809010203281D82000C205A1A080A06000B6 +S315400180900480001B80A5200025100124191001240D +S315400180A0A414A1A0981321AC8810200080A46000DC +S315400180B09B2920100480000C82102000C40300007C +S315400180C085290002840040028528A0028610400DC1 +S315400180D082006001C624000280A0401132BFFFF930 +S315400180E0C4030000C20480008801200180A040042E +S315400180F014BFFFF080A4600080A5200012800028F4 +S31540018100230000107FFFE54490102000808A001173 +S3154001811012BFFFFDC205A1A080A060000480001B24 +S31540018120010000002510012427100124A414A1A058 +S31540018130A614E18C10800006A2102000A204600162 +S3154001814080A040110480001101000000921000112E +S315400181507FFFFDF890100010C204C000901C00087B +S31540018160808A000132BFFFF6C20480007FFFA60B62 +S3154001817090102033C2048000A204600180A0401107 +S3154001818014BFFFF4921000117FFFE52390102000E9 +S315400181909212200F7FFFE5229010200081C7E00850 +S315400181A091E820009FC20000A604E00180A480134C +S315400181B004800008832CE002D00700019FC2000022 +S315400181C0A604E00180A4801314BFFFFC832CE002C7 +S315400181D07FFFE51190102000B616E1A4920A3FFCFC +S315400181E0A8102000901020007FFFE50DB810200058 +S315400181F0B207BFE810800005A610200080A48013B6 +S3154001820024800012A8052001921000137FFFFE482A +S3154001821090100017820A001580A0401512BFFFF882 +S31540018220A604E001C206C000901DC008900A0001E4 +S3154001823080A00008B8673FFF80A4801314BFFFF4F5 +S3154001824092100013A805200180A480140480000424 +S31540018250832D200210BFFFE8EE0640017FFFE4EECA +S3154001826090102000A6100008901020007FFFE4EC3B +S315400182709214E00380A720000280018301000000E0 +S31540018280A73CE013808CE0031280018501000000C9 +S3154001829081D82000250000307FFFE4DF90102000C8 +S315400182A0808A001212BFFFFDAA100008C205A1A0D4 +S315400182B080A060000480000F053FFFBF2510012408 +S315400182C0A6102000A414A1A0921000139010001033 +S315400182D07FFFFDDC94102000C2048000A604E0016B +S315400182E080A0401314BFFFFA92100013053FFFBF51 +S315400182F0821020008410A36884078002C0204002B7 +S315400183008200600480A0607C12BFFFFD0100000076 +S3154001831082102005C224000082102001C2242004BC +S3154001832082102002C224200882102003C224200C7D +S31540018330901000107FFFFD8DA804200480A220002C +S315400183400280014A01000000C204000080A06005CD +S3154001835002800004010000007FFFA59090102006D6 +S315400183607FFFFD829010001080A2200012800199AB +S31540018370C205A1A080A06000048000120100000097 +S3154001838025100124A6102000A414A1A092100013C8 +S31540018390941020007FFFFD9C901000109210001356 +S315400183A0901000147FFFFD9894102000C2048000B5 +S315400183B0A604E00180A0401314BFFFF692100013FB +S315400183C07FFFE4AB90100010A60420207FFFE4A8B5 +S315400183D0901000137FFFE4A6900420407FFFE4A4A1 +S315400183E090042060C205A1A080A0600004800180A5 +S315400183F0B810200025100124A414A1A0AE1020001D +S31540018400921000177FFFFD3D90100010C2048000BE +S31540018410901A200580A00008AE05E001B8673FFF2D +S3154001842080A0401714BFFFF89210001780A72000C4 +S315400184300280016F01000000033FFFBF82106368A5 +S31540018440C41F8001C43FBFA8C207BFA880A0600562 +S315400184501280000601000000C207BFAC80A0600187 +S3154001846002800005C205A1A07FFFA54C90102009FE +S31540018470C205A1A080A06000048000382510012417 +S31540018480B8102000A414A1A0AE102000921000172D +S315400184907FFFFD1A90100014C2048000901A20013B +S315400184A080A00008AE05E001B8673FFF80A04017F5 +S315400184B014BFFFF89210001780A7200112800027F1 +S315400184C0833D6013808860031280002A010000000A +S315400184D0C2042004C224000082102005C2240000E8 +S315400184E090102001D024200482102002C2242008AA +S315400184F082102003C224200C92100011400003B3C5 +S31540018500912A001DA52A2002032EEEEE821063BB9E +S31540018510C22400127FFFFD159010001080A220009A +S315400185201280013701000000C4040012032EEEEE52 +S31540018530A93D600C821063BB80A0800102BFFDFA99 +S31540018540A80D2003901020127FFFA514A93D600CB1 +S3154001855010BFFDF5A80D20037FFFA5109010200A3E +S31540018560833D60138088600302BFFFDA010000008B +S315400185707FFFE42990102000033FFFF08210603F07 +S31540018580920A00017FFFE4269010200092102000FD +S3154001859094102000AA07BFA87FFFFD1B901000156D +S315400185A07FFFE41D901020000303C00092120001DA +S315400185B07FFFE41B90102000C205A1A080A06000AF +S315400185C00480000F8210200125100124A8102000EC +S315400185D0A414A1A092100014901000157FFFFD0A6B +S315400185E094102005C2048000A805200180A04014F3 +S315400185F014BFFFFA9210001482102001C22FBFA8A7 +S315400186000300400082106005C407BFA880A0800116 +S3154001861002800004010000007FFFA4E09010200BBF +S315400186207FFFE3FD90102000833A20068208600315 +S3154001863080A0600102800004010000007FFFA4D7F2 +S315400186409010200C7FFFE3F4901020000303C0003C +S3154001865025000030922A00017FFFE3F190102000AF +S315400186607FFFE3ED90102000808A001212BFFFFDCC +S3154001867092102000941020007FFFFCE3901000151B +S315400186807FFFE3E5901020002503C00092120012FF +S315400186907FFFE3E3901020007FFFE3DF901020008F +S315400186A0808A001202BFFFFDAE100008C205A1A0DC +S315400186B080A060000480001025100124B81020011C +S315400186C0B92F0011A414A1A0B8073FFFA81020009C +S315400186D092100014901000157FFFFCDA9410001CD4 +S315400186E0C2048000A805200180A0401414BFFFFAEF +S315400186F0921000141303C00090102000922DC0095F +S315400187007FFFE3C72503C0007FFFE3C3901020002E +S31540018710808A001212BFFFFD01000000C407BFA8F6 +S31540018720030040008210600580A0800102800004A1 +S31540018730010000007FFFA4999010200D7FFFE3B652 +S3154001874090102000833A20088208600380A06001CF +S3154001875002800005841020117FFFA4909010200F05 +S3154001876084102011861020559010200025000030DD +S31540018770C43FBFF87FFFE3A801000000033C3FFF71 +S315400187800503C0008210633F820A00019010200059 +S315400187907FFFE3A3921040027FFFE39F90102000EA +S315400187A0808A001212BFFFFDAE07BFF87FFFE3BE0E +S315400187B090100017C205A1A080A060000480000FA0 +S315400187C00100000025100124AA07BFFCA414A1A0A2 +S315400187D0A810200092100014901000157FFFFC8A0B +S315400187E094102055C2048000A805200180A04014A1 +S315400187F014BFFFFA921000147FFFE3AB90100017ED +S3154001880080A220110280008180A260557FFFA4636F +S31540018810901020107FFFE38090102000833A2006BD +S315400188208208600380A0600102800004A410000851 +S315400188307FFFA45A90102010133C3FF09010200067 +S315400188409212603F920C80097FFFE375250000304C +S315400188507FFFE37190102000808A001212BFFFFD56 +S31540018860AA10000830BFFF1B7FFFA44C90102005C3 +S31540018870C204000080A0600512BFFEB801000000DE +S3154001888030BFFEB87FFFA44590102001A73CE013FE +S31540018890808CE00302BFFE7F010000007FFFE35EA4 +S315400188A090102000133FFFF0AA1000089212603F7B +S315400188B0920A00097FFFE35A901020007FFFE2B140 +S315400188C0A810001A0303C000133C3FFF901020007C +S315400188D0921263FC920D4009A61020007FFFE350DF +S315400188E09212400192100013901000147FFFFC7207 +S315400188F094102000A604E00180A4801334BFFFFB3E +S3154001890092100013901020001303C0007FFFE34430 +S31540018910921540097FFFE29B010000007FFFE33E85 +S3154001892090102000833A200A8208600380A06001EB +S3154001893002800005250000307FFFA4189010200218 +S31540018940250000307FFFE33490102000808A00121A +S3154001895012BFFFFD0100000001000000920A3FFC2A +S315400189607FFFE32F901020009010001492102000FA +S315400189707FFFFC6094102000010000007FFFE3268A +S3154001898090102000033C3FFF821063FC820A0001E5 +S31540018990901020007FFFE322921060030100000047 +S315400189A07FFFE278010000007FFFE31B901020006B +S315400189B0833A200C8208600380A0600102BFFE3525 +S315400189C0010000007FFFA3F59010200330BFFE3168 +S315400189D07FFFA3F290102007C205A1A080A06000EE +S315400189E034BFFE692510012430BFFE767FFFA3EB1D +S315400189F09010200810BFFE92033FFFBF7FFFA3E701 +S31540018A009010201130BFFEC912BFFF810100000046 +S31540018A1030BFFF819DE3BFA07FFFFC5301000000F3 +S31540018A2013002040B01000089212600F7FFFE2FC55 +S31540018A309010200081C7E00881E800009DE3BFA0B7 +S31540018A407FFFA3C81100412C82102007EC062004A9 +S31540018A50E0062004C2262008AC0DA003AC05A00107 +S31540018A6001000000C02600007FFFA3C59010200A28 +S31540018A700300020084103FFFB8060001C42600012E +S31540018A80A13C2002292AAAAAA00C27FFA81522AA9E +S31540018A902B155555A12C2008AA1561558810001C87 +S31540018AA0C2060001A8084014AA0840159A102000E1 +S31540018AB080A420002280000D9A03600186012020B7 +S31540018AC08410000482102000EA208000E820C000C3 +S31540018AD0820060108400A04080A0401006BFFFFBCA +S31540018AE08600E0409A03600180A5800D14BFFFF126 +S31540018AF0880120043B000200AE102000BA17602016 +S31540018B00BA06001D80A4200022800017AE05E001B0 +S31540018B10A610001CA410001DA2102000C204C00013 +S31540018B2080A0401502800004010000007FFFA39B46 +S31540018B3090102001C204800080A0401422800005CC +S31540018B40A20460107FFFA39590102001A20460103B +S31540018B50A604E04080A4401006BFFFF1A404A04053 +S31540018B60AE05E00180A5801714BFFFE7BA07600490 +S31540018B707FFFA3839010200C2F0008001B1555552D +S31540018B80AE060017092AAAAA9A136155881122AA84 +S31540018B9098100017961020001500020080A42000AE +S31540018BA02280000D9602E001860320048410000C09 +S31540018BB082102000DA208000C820C00082006002B6 +S31540018BC08400A00880A0401006BFFFFB8600E00895 +S31540018BD09602E00180A5800B14BFFFF19803000ABD +S31540018BE02B155555292AAAAAAA156155A81522AAAF +S31540018BF0BA1020003900020080A42000228000170C +S31540018C00BA076001A605E004A4100017A2102000CF +S31540018C10C204800080A040150280000401000000CB +S31540018C207FFFA35E90102003C204C00080A04014C1 +S31540018C3022800005A20460027FFFA3589010200302 +S31540018C40A2046002A404A00880A4401006BFFFF15C +S31540018C50A604E008BA07600180A5801D14BFFFE79E +S31540018C60AE05C01C2F0008001B155555AE15E00476 +S31540018C70092AAAAAAE0600179A136155881122AA93 +S31540018C8098100017961020001500020080A42000BD +S31540018C902280000D9602E00186033FFC8410000C01 +S31540018CA082102000DA208000C820C00082006002C5 +S31540018CB08400A00880A0401006BFFFFB8600E008A4 +S31540018CC09602E00180A5800B14BFFFF19803000ACC +S31540018CD02B155555292AAAAAAA156155A81522AABE +S31540018CE0BA1020003900020080A42000228000171B +S31540018CF0BA076001A605FFFCA4100017A2102000C8 +S31540018D00C204800080A040150280000401000000DA +S31540018D107FFFA32290102004C204C00080A040140B +S31540018D2022800005A20460027FFFA31C901020044C +S31540018D30A2046002A404A00880A4401006BFFFF16B +S31540018D40A604E008BA07600180A5801D14BFFFE7AD +S31540018D50AE05C01C82102005C22620080320000053 +S31540018D60C226000081C7E00881E80000033FFFBF3B +S31540018D70821063609DE380017FFFFAD425200000C5 +S31540018D804000016E2D0000307FFFE2239010200845 +S31540018D90AA1000087FFFE2209010200C7FFFA31B42 +S31540018DA0AE100008912A20047FFFA2F59002200C04 +S31540018DB082102001873D60148608E00F8600E00A94 +S31540018DC0A73D6010A13D6018853DE014A60CE00763 +S31540018DD08408A00FA604E0028400A00AA728401335 +S31540018DE0A00C2003A93DE010A0042001A80D2007F6 +S31540018DF0A12C0003A8052002AA2480108604FFFFA7 +S31540018E00A9284014A33DE01882053FFFA20C600348 +S31540018E10A2046001AA154003A32C4002A424801198 +S31540018E20A41480017FFFE1FC90102000808A001687 +S31540018E3012BFFFFD133FFFBF90100011921263C096 +S31540018E4015155555920780097FFFE1869412A15564 +S31540018E5080A220001280007001000000133FFFBF76 +S31540018E6090100011921263C0152AAAAA920780098E +S31540018E707FFFE1909412A2AA80A220001280006393 +S31540018E80010000007FFFA2E101000000912A2004B9 +S31540018E907FFFA2BB9002200A40000125010000008D +S31540018EA0032AAAAA981062AA8210620090100011A1 +S31540018EB0920C8001941000127FFFE1A796100014D6 +S31540018EC080A220001280004D010000000315555577 +S31540018ED09810615582106100901000119410001293 +S31540018EE0961000147FFFE19C920C800180A2200025 +S31540018EF01280003F010000007FFFA2C40100000074 +S31540018F00912A20047FFFA29E9002200B9010001010 +S31540018F10131555557FFFE1779212615580A22000C6 +S31540018F201280002F0100000090100010132AAAAAF7 +S31540018F307FFFE170921262AA80A220001280002572 +S31540018F40010000007FFFA2B101000000912A200428 +S31540018F507FFFA28B900220099010001092100015FD +S31540018F6094100013172AAAAA7FFFE16E9612E2AA6D +S31540018F7080A2200012800013010000009010001012 +S31540018F809210001594100013171555557FFFE16592 +S31540018F909612E15580A220000280000401000000E3 +S31540018FA07FFFA27E901020087FFFFA48B010200074 +S31540018FB0400000E20100000081C7E00881E80000AE +S31540018FC07FFFA2769010200710BFFFEE9010001091 +S31540018FD07FFFA2729010200630BFFFDB7FFFA26F9A +S31540018FE09010200510BFFFD2901000107FFFA26B9A +S31540018FF09010200430BFFFC17FFFA268901020036C +S3154001900010BFFFB4031555557FFFA264901020028F +S3154001901030BFFF9D7FFFA2619010200110BFFF91DD +S31540019020133FFFBF81C3E0089144400080800000A8 +S31540019030151001209412A1EC9010200092102246A6 +S3154001904081800000010000000100000001000000D5 +S31540019050D00280009122400881C3E008010000004F +S3154001906081800000901020018090200180F0200135 +S315400190701280004B010000000100000001000000C9 +S31540019080010000008090200180F8200112800044F8 +S315400190900100000001000000010000000100000085 +S315400190A08090200180FA3FFF010000001680003CBD +S315400190B00100000001000000010000000100000065 +S315400190C08180000090102001809020010100000065 +S315400190D080D0200112800032010000000100000012 +S315400190E0010000000100000080D220010280002C16 +S315400190F00100000080D23FFF1680002901000000D8 +S3154001910080DA3FFF9340000080A27FFF1280002457 +S315400191100100000080D23FFF934800009332601463 +S31540019120920A600F80A260081280001D01000000B3 +S315400191308180000090102001945220049452A00492 +S315400191409452A00496A2A04012800015010000008E +S31540019150818000009010200280A000003280001023 +S315400191609052000880A220021280000D01000000EA +S31540019170818000009010200280A0000001000000C4 +S31540019180328000079052000880A22002128000041B +S315400191900100000081C3E0089010200181C3E0086E +S315400191A0901000001315555592126155A582400045 +S315400191B0010000000100000001000000954480000C +S315400191C080A2400A1280004301000000923A40000A +S315400191D0A5824000010000000100000001000000DE +S315400191E09544800080A2400A1280003A01000000A6 +S315400191F01100003F901223FFA580000081800000EE +S3154001920001000000010000000100000093F23FFF51 +S315400192109A10000993F23FFF93F23FFF93F23FFF0B +S3154001922093F23FFF93F23FFF93F23FFF93F23FFFEB +S315400192309940000097448000153FFC009412A00815 +S3154001924080A2400A1280002380A2400B1280002196 +S3154001925080A320071280001F113FFF80901220013A +S3154001926080A340081280001B1100003F901223FF8B +S31540019270A58000008180000001000000010000007F +S315400192800100000093FA3FFF93FA3FFF93FA3FFF35 +S3154001929093FA3FFF93FA3FFF93FA3FFF93FA3FFF5B +S315400192A093FA3FFF994000009744800080A26008EE +S315400192B01280000880A260081280000680A3200068 +S315400192C0128000040100000081C3E00890102001D3 +S315400192D081C3E008901000008180000090102002B8 +S315400192E080A00000328000109072000880A2200207 +S315400192F01280000D010000008180000090102002C4 +S3154001930080A0000001000000328000079072000832 +S3154001931080A22002128000040100000081C3E008FF +S315400193209010200181C3E00890100000C0A00040C9 +S3154001933081C3E00801000000110020409012200F77 +S31540019340D0A0004081C3E008010000009DE3BFA01A +S315400193507FFFE0B190102008A21000087FFFE0AE29 +S315400193609010200CA0100008C0A00040833C60145F +S315400193708208600F8200600A913C6018900A2003BF +S31540019380900220017FFFE01B912A0001833C2014BB +S315400193908208600F8200600A913C2018900A2003DF +S315400193A0900220017FFFE021912A00017FFFF947CA +S315400193B001000000110020409012200FD0A0004073 +S315400193C081C7E00881E80000981200098182000007 +S315400193D09AAB2FFF02800025988800009923000947 +S315400193E09923000999230009992300099923000922 +S315400193F09923000999230009992300099923000912 +S315400194009923000999230009992300099923000901 +S3154001941099230009992300099923000999230009F1 +S3154001942099230009992300099923000999230009E1 +S3154001943099230009992300099923000999230009D1 +S3154001944099230009992300099923000999230009C1 +S3154001945099230009992300099923000999230000BA +S3154001946081C3E0089140000099230009992300092E +S315400194709923000999230009992300099923000991 +S315400194809923000999230009992300099923000981 +S315400194909923000999230009992300009B40000064 +S315400194A0992B200C9B33601481C3E0089013400C28 +S315400194B01080000B8610200080924008168000081C +S315400194C086100008809240001680000480920000B9 +S315400194D01680000392200009902000089A924000CD +S315400194E0128000059610000891D0200281C3E00841 +S315400194F09010000080A2C00D0A80009594100000D3 +S315400195000302000080A2C0010A80002898100000D2 +S3154001951080A340011A80000D841020019B2B60041A +S3154001952010BFFFFC980320019A83400D1A80000763 +S315400195308400A001832860049B3360019A034001A3 +S31540019540108000078420A00180A3400B0ABFFFF7CB +S3154001955001000000028000020100000084A0A00179 +S3154001956006800076010000009622C00D941020016D +S315400195701080000A01000000952AA001068000051E +S315400195809B3360019622C00D108000049402A00115 +S315400195909602C00D9422A00184A0A00116BFFFF738 +S315400195A08092C000308000659B2B600480A3400BF5 +S315400195B008BFFFFE988320010280006598232001A1 +S315400195C08092C000952AA0040680002F9B3360013B +S315400195D096A2C00D068000179B33600196A2C00D6E +S315400195E00680000B9B33600196A2C00D06800005E4 +S315400195F09B33600196A2C00D108000509402A00FCB +S315400196009682C00D1080004D9402A00D9682C00D29 +S31540019610068000059B33600196A2C00D108000476D +S315400196209402A00B9682C00D108000449402A009BA +S315400196309682C00D0680000B9B33600196A2C00D39 +S31540019640068000059B33600196A2C00D1080003B49 +S315400196509402A0079682C00D108000389402A0059E +S315400196609682C00D068000059B33600196A2C00D0F +S31540019670108000329402A0039682C00D1080002F04 +S315400196809402A0019682C00D068000179B336001AB +S3154001969096A2C00D0680000B9B33600196A2C00DB9 +S315400196A0068000059B33600196A2C00D1080002301 +S315400196B09402BFFF9682C00D108000209402BFFD28 +S315400196C09682C00D068000059B33600196A2C00DAF +S315400196D01080001A9402BFFB9682C00D10800017BD +S315400196E09402BFF99682C00D0680000B9B33600140 +S315400196F096A2C00D068000059B33600196A2C00D5F +S315400197001080000E9402BFF79682C00D1080000BA8 +S315400197109402BFF59682C00D068000059B33600119 +S3154001972096A2C00D108000059402BFF39682C00D2B +S31540019730108000029402BFF198A3200116BFFFA238 +S315400197408092C000268000029602C0098090C00027 +S31540019750268000029620000B81C3E0089010000B82 +S3154001976092100008941020009010200096102000BE +S315400197708213C000400000429E10400001000000DC +S315400197809DE3BFA080A6A00F9A100018881000196B +S31540019790088000068610001A8216401880886003E9 +S315400197A00280000D8410001980A0E00002800008AC +S315400197B082102000C4090001C42B400182006001CF +S315400197C080A0400332BFFFFDC409000181C7E00804 +S315400197D081E8000082100018DA008000DA2040009B +S315400197E08600FFF080A0E00FDA00A004DA206004D2 +S315400197F0DA00A008DA206008DA00A00CDA20600C52 +S315400198008400A01018BFFFF582006010B406BFF0B7 +S315400198109B36A004832B60049A036001B426800121 +S315400198209B2B600480A6A0038806400D8610001A73 +S3154001983008BFFFDE9A06000D82102000C401000118 +S31540019840C4234001820060048426800180A0A003D5 +S3154001985038BFFFFCC4010001B406BFFC8336A00239 +S315400198608728600282006001862680038328600281 +S315400198708801000110BFFFCD9A0340019DE3BFA0BF +S3154001988021100123400005F7901420EC03100070CD +S31540019890E2006090D004614880A220002280003D11 +S315400198A09004614CC202200480A0601F1480001EF7 +S315400198B00100000080A620000280001284006002A0 +S315400198C0C4022004820060228600A04289286002E8 +S315400198D08728E002C2022188F4220004F62200030E +S315400198E0861020018728C00282104003C2222188A7 +S315400198F080A62002028000198210000284006002C4 +S315400199008528A00282006001C2222004F2220002C0 +S31540019910B0102000400005E9901420EC81C7E00812 +S3154001992081E80000400000289010219080A220008C +S315400199302280001A901420ECC2046148C222000021 +S31540019940D0246148C0222004C0222188C022218C13 +S3154001995010BFFFD982102000C202218C861040031D +S3154001996082100002840060028528A002C622218C52 +S3154001997082006001F2220002C2222004B0102000BF +S31540019980400005CE901420EC81C7E00881E8000034 +S3154001999010BFFFC5D0246148400005C8B0103FFF45 +S315400199A081C7E00881E800009210000803100120F9 +S315400199B0D00062208213C000400002179E10400072 +S315400199C0010000009210000803100120D00062201F +S315400199D08213C000400000039E10400001000000B9 +S315400199E09DE3BFA0841020008206600B80A0601614 +S315400199F008800004A0102010A0087FF88534201F9D +S31540019A0080A400190A8000468088A0FF1280004485 +S31540019A1001000000400001AF9010001880A421F71A +S31540019A20188000418334200923100121A214637850 +S31540019A3082044010E400600C80A480010280010F82 +S31540019A4099342003C604A004C404A00CC204A0088F +S31540019A508608FFFC86048003C800E00488112001C3 +S31540019A60C220A008C820E004C420600C9010001851 +S31540019A7040000192B004A00881C7E00881E80000D7 +S31540019A80E6046008E804E004A80D3FFC82250010C6 +S31540019A9080A0600F148000D280A40014031001231B +S31540019AA02F100122EA006160C205E384AA05601015 +S31540019AB080A07FFF02800004AA054010AA056FFF1F +S31540019AC0AA0D7000901000184000018892100015F0 +S31540019AD080A23FFF02800009A41000088404C0143C +S31540019AE080A08008088000EC2D10012380A440133B +S31540019AF0028000EAC205A16CC2046008C400600489 +S31540019B008408BFFC8220801080A0600F148001224F +S31540019B1080A40002400001699010001881C7E00846 +S31540019B2091E820009934200380A060000280000F54 +S31540019B30872B200380A06004088000929934200678 +S31540019B409800605B80A0601408800008872B200382 +S31540019B5080A060541880011380A061549934200C70 +S31540019B609803206E872B200323100121A2146378CA +S31540019B7086044003E400E00C80A0C0123280000B52 +S31540019B80C404A004108000109803200136800068A8 +S31540019B90C604A00CE404A00C80A0C0122280000AD6 +S31540019BA098032001C404A0048408BFFC82208010CD +S31540019BB080A0600F04BFFFF680A0600098033FFFBE +S31540019BC098032001071001218610E380E400E00894 +S31540019BD080A0C0122280002AC2046004C404A004EA +S31540019BE08408BFFC8220801080A0600F1480008A08 +S31540019BF080A06000C620E00C16800059C620E0080F +S31540019C0080A0A1FF288000628530A0038330A0098F +S31540019C1080A06004188000E98800605B8930A00656 +S31540019C20880120389B2920039A04400DC20360080D +S31540019C3080A0400D32800008C8006004108000E911 +S31540019C40DA04600480A3400122800008C400600C4D +S31540019C50C800600488093FFC80A080042ABFFFFA3F +S31540019C60C2006008C400600CC424A00CC224A00831 +S31540019C70E420600CE420A008C2046004853B200275 +S31540019C80881020018929000280A040042ABFFF7E56 +S31540019C90E6046008808840042280004B980B3FFC14 +S31540019CA0952B20039610000C9404400A9A10000A42 +S31540019CB0E403600C80A340123280000BC404A0046C +S31540019CC0108000589602E00136800019C604A00CA7 +S31540019CD0E404A00C80A34012228000529602E001C7 +S31540019CE0C404A0048408BFFC8220801080A0600FB9 +S31540019CF004BFFFF680A06000DA04A00CC804A008E7 +S31540019D0084048010A0142001C8236008DA21200CA5 +S31540019D10C420E00CC420E008E024A004C220800155 +S31540019D20C620A00810800010C620A00CC204A008BE +S31540019D3084048002C800A00488112001C220E008E2 +S31540019D40C820A004C620600C90100018400000DB1B +S31540019D50B004A00881C7E00881E8000084048002BD +S31540019D60C200A00482106001C220A0049010001815 +S31540019D70400000D2B004A00881C7E00881E8000095 +S31540019D809803203810BFFF79872B20038928A00329 +S31540019D9088044004DA012008D6046004C824A00CD3 +S31540019DA0DA24A0088538A00282102001E423600C41 +S31540019DB083284002E42120088210400B10BFFFB0E7 +S31540019DC0C2246004892920018088400402BFFFFE25 +S31540019DD09803200410BFFFB4952B200338BFFF31F1 +S31540019DE003100123E404600884048010A0142001B8 +S31540019DF082106001E024A004C220A0049010001843 +S31540019E00C4246008400000ADB004A00881C7E00842 +S31540019E1081E800008404801010BFFFBEA014200119 +S31540019E20808AE00312BFFFA39A04A008808B200317 +S31540019E300280009C8202BFF8D400600880A28001A3 +S31540019E4022BFFFFB98033FFFC2046004892920011A +S31540019E5080A1000118BFFF0B80A1200022BFFF0A8D +S31540019E60E604600880890001228000928929200148 +S31540019E7010BFFF8C9810000B8204A008E400600C10 +S31540019E8080A0401202BFFF509803200210BFFEEF90 +S31540019E90C604A004C205A16C8205400180A08012BF +S31540019EA002800067C225A16CC605E38480A0FFFF3E +S31540019EB02280006B0310012282048001842040022B +S31540019EC0C425A16C848CA00702800006030000040F +S31540019ED08210200882204002A40480018220700062 +S31540019EE0AA04801590100018AA0D6FFFAA204015EC +S31540019EF04000007E9210001580A23FFF0280006064 +S31540019F008410200184220012840080158410A0014F +S31540019F10C205A16C82054001C225A16CC424A004DE +S31540019F2080A4401302800010E424600880A5200F1D +S31540019F300880003A84053FF48408BFF88604C002CD +S31540019F40C804E0048809200188108004C824E0047C +S31540019F5088102005C820E00880A0A00F1880004284 +S31540019F60C820E00405100123C600A16480A0400377 +S31540019F7038800002C220A16405100123C600A168F1 +S31540019F8080A0400338BFFEDDC220A16810BFFEDCC1 +S31540019F90C204600828BFFF95E404600830BFFEDEB6 +S31540019FA01880001780A065549934200F98032077B4 +S31540019FB010BFFEEE872B200380A0601408BFFF1B55 +S31540019FC09B29200380A060541880001780A061540B +S31540019FD08930A00C8801206E10BFFF149B292003F5 +S31540019FE08939200284102001852880048413400287 +S31540019FF0C424600410BFFF1D84100001861023F0A5 +S3154001A00018BFFEDA9810207E993420129803207CDE +S3154001A01010BFFED6872B20038210200110BFFEB74A +S3154001A020C224A0041880001880A065548930A00F6E +S3154001A0308801207710BFFEFD9B2920038088AFFF52 +S3154001A04012BFFF9BC605E384C4046008860540141D +S3154001A0508610E00110BFFFC4C620A00410BFFF9ABE +S3154001A060E42063849204E0084000006B90100018DD +S3154001A0700310012310BFFFBCC200616C10BFFFA5D6 +S3154001A080AA1020009A1023F018BFFEE88810207EFF +S3154001A0908930A0128801207C10BFFEE49B29200351 +S3154001A0A0C20460048228400410BFFF68C2246004D1 +S3154001A0B010BFFF6D9602E004111001229012238811 +S3154001A0C08213C000400003FD9E10400001000000C5 +S3154001A0D011100122901223888213C000400003E12F +S3154001A0E09E104000010000009DE3BFA02110012405 +S3154001A0F0901000194000015DC02421B080A23FFFAD +S3154001A10002800004C20421B081C7E00891E800083A +S3154001A11080A0600002BFFFFD01000000C2260000D2 +S3154001A12081C7E00891E800089DE3BFA07FFFFFE9F2 +S3154001A1309010001821100121A0142378C204200890 +S3154001A140E2006004A20C7FFC82046FEFB22040194A +S3154001A150B20E7000B206700080A66FFF048000093F +S3154001A160901000187FFFFFE192102000C2042008E2 +S3154001A1708200401180A20001028000079010001861 +S3154001A180901000187FFFFFCDB010200081C7E00876 +S3154001A19081E800007FFFFFD59220001980A23FFF92 +S3154001A1A00280000EA2244019C4042008A2146001B2 +S3154001A1B003100123E220A00490100018B0102001E2 +S3154001A1C0C400616CB22080197FFFFFBCF220616C34 +S3154001A1D081C7E00881E80000901000187FFFFFC3A7 +S3154001A1E092102000C20420088422000180A0A00F02 +S3154001A1F004BFFFE407100122C600E3849022000356 +S3154001A200071001238410A001D020E16C10BFFFDDAF +S3154001A210C42060049DE3BFA080A660000280005078 +S3154001A220010000007FFFFFAB9010001884067FF805 +S3154001A230D800A004820B3FFE09100121860080014F +S3154001A24088112378DA00E004D601200880A2C003F1 +S3154001A250028000639A0B7FFCDA20E004808B2001A8 +S3154001A2601280000E98102000D8067FF88420800CBA +S3154001A2708200400CD600A0089801200880A2C00C9C +S3154001A2800280000698102001D400A00CD422E00CD4 +S3154001A29098102000D622A0089600C00DD602E004F0 +S3154001A2A0808AE0013280000A8610600180A3200086 +S3154001A2B00280002D8200400DDA00E008C600E00C65 +S3154001A2C0C623600CDA20E00886106001C2208001B6 +S3154001A2D080A3200012800020C620A00480A061FF38 +S3154001A2E028800030833060038730600980A0E00415 +S3154001A2F0188000529800E05B993060069803203838 +S3154001A3009B2B20039A01000DC603600880A0C00D57 +S3154001A31032800008C800E00410800052DA012004AF +S3154001A32080A3400322800008C200E00CC800E0047C +S3154001A33088093FFC80A040042ABFFFFAC600E00816 +S3154001A340C200E00CC220A00CC620A008C420E00C2C +S3154001A350C42060087FFFFF5981E8000081C7E008FB +S3154001A36081E80000DA00E008171001219612E38027 +S3154001A37080A3400B32BFFFD3C600E00CC423600C60 +S3154001A380C4236008C2208001DA20A008821060013F +S3154001A390DA20A00CC220A0047FFFFF4881E800001C +S3154001A3A08728600386010003DA00E008C620A00C76 +S3154001A3B0DA20A008D8012004C423600CC420E00898 +S3154001A3C083386002841020018328800182130001B2 +S3154001A3D0C22120047FFFFF3981E80000808B2001E4 +S3154001A3E01280000982034001D8067FF88420800C40 +S3154001A3F0DA00A00CC600A0088200400CC623600803 +S3154001A400DA20E00CC421200886106001C620A00491 +S3154001A41005100122C400A38080A040020ABFFFCEDE +S3154001A42003100123D20061607FFFFF4090100018A6 +S3154001A4307FFFFF2281E8000080A0E01408BFFFB241 +S3154001A4409B2B200380A0E0541880000D80A0E1548E +S3154001A4509930600C9803206E10BFFFAB9B2B2003F5 +S3154001A460993B2002821020018328400C821340012F +S3154001A470C221200410BFFFB48210000318800006D9 +S3154001A48080A0E5549930600F9803207710BFFF9E56 +S3154001A4909B2B20039A1023F018BFFF9B9810207E18 +S3154001A4A0993060129803207C10BFFF979B2B2003A5 +S3154001A4B09DE3BFA080A620000280001F031001205B +S3154001A4C0E406214880A4A00022800014C206203C54 +S3154001A4D0C204A004A0807FFF2C80000CE40480000D +S3154001A4E0A2006001A32C6002A2048011C2044000B4 +S3154001A4F09FC04000A2047FFCA0843FFF3CBFFFFDFC +S3154001A500C2044000E404800080A4A00032BFFFF2F0 +S3154001A510C204A004C206203C80A060000280000460 +S3154001A520010000009FC040009010001881C7E0085C +S3154001A53081E8000010BFFFE3F00062209DE3BFA069 +S3154001A540D206400080A260000280000401000000A3 +S3154001A5507FFFFFFB901000187FFFFF2F81E800006F +S3154001A560010000009DE3BFA003100120C20062204C +S3154001A57080A600010280003201000000D206204C74 +S3154001A58080A2600022800016E0062148A210200029 +S3154001A590E002401180A420002280000BA204600446 +S3154001A5A092100010901000187FFFFF1BE00400007E +S3154001A5B080A4200012BFFFFC92100010D206204C4E +S3154001A5C0A204600480A4603C32BFFFF3E002401164 +S3154001A5D07FFFFF1190100018E006214880A420005B +S3154001A5E02280000ED2062054A206214C80A40011DE +S3154001A5F02280000AD20620549210001090100018B2 +S3154001A6007FFFFF05E004000080A4401012BFFFFC5D +S3154001A61092100010D206205480A2600022800005CC +S3154001A620C20620387FFFFEFC90100018C206203873 +S3154001A63080A0600032800004C206203C81C7E00849 +S3154001A64081E800009FC0400090100018F20622E009 +S3154001A65080A6600002BFFFFA010000007FFFFFB83D +S3154001A66081E800000100000005100124C200A1B4E8 +S3154001A67080A060002280000603100125900040085A +S3154001A680D020A1B481C3E008901000018210616816 +S3154001A69090004008C220A1B4D020A1B481C3E008F3 +S3154001A6A090100001A7500000AE1000018334E00174 +S3154001A6B029100123E805203CA92CC014821500016C +S3154001A6C081E000008190400001000000010000008F +S3154001A6D001000000E03BA000E43BA008E83BA010DD +S3154001A6E0EC3BA018F03BA020F43BA028F83BA0305F +S3154001A6F0FC3BA03881E800008210001781C440006D +S3154001A70081CC800001000000010000000100000032 +S3154001A710A7500000A92CE0012B100123EA05603C5B +S3154001A720AB34C015AA1540148195400001000000C4 +S3154001A730010000000100000081E8000081E80000FE +S3154001A740E01BA000E41BA008E81BA010EC1BA0180E +S3154001A750F01BA020F41BA028F81BA030FC1BA0383E +S3154001A76081E0000081E0000081C4400081CC80008E +S3154001A770A75000002910006CADC5231C0100000044 +S3154001A78027100123A614E018E024C000818C202064 +S3154001A7900100000001000000010000009DE3BFA090 +S3154001A7A09DE3BFA09DE3BFA09DE3BFA09DE3BFA0E6 +S3154001A7B09DE3BFA09DE3BFA081E8000081E80000C2 +S3154001A7C081E8000081E8000081E8000081E800009E +S3154001A7D081E8000027100123A614E018C024C00018 +S3154001A7E0E203A068A4046004E223A064E423A06811 +S3154001A7F0108002F1AC10000029100122A81523FC9B +S3154001A800C2252000C8252004E0252010E225201479 +S3154001A810E4252018E825201C81E800008348000033 +S3154001A82082106F0081886020010000000100000055 +S3154001A8300100000009100123C801203C81E000000D +S3154001A8408821200180A920FF028000030100000029 +S3154001A8500100000080A1000012BFFFF901000000C5 +S3154001A86009100123C801203C81E8000080A920FF8E +S3154001A8700280000301000000010000008821200140 +S3154001A88080A1000012BFFFF90100000081E0000035 +S3154001A89029100122A81523FCC8052004C205200061 +S3154001A8A0E0052010E2052014E4052018C025201CEF +S3154001A8B0818C200001000000010000000100000021 +S3154001A8C081C4800081CCA004A0142F00818C00009B +S3154001A8D001000000010000000100000081C4800069 +S3154001A8E081CCA00480A6600212800005A8142F0026 +S3154001A8F0818D0000B01420203080001F80A66003A7 +S3154001A90012800006A80E2F00AA2C2F00A81540146D +S3154001A910818D00003080001880A6600412800008F6 +S3154001A920A9480000A8152040818D000001000000C3 +S3154001A93001000000010000003080000F80A6600584 +S3154001A94012800008A9480000A82D2040818D0000F2 +S3154001A95001000000010000000100000030800006F7 +S3154001A96080A66006128000030100000030BFFFA3ED +S3154001A97091D0200081C4800081CCA0049210200394 +S3154001A98081C3E00891D020029210200281C3E008E1 +S3154001A99091D020029210200681C3E00891D0200276 +S3154001A9A081C3E0080100000081C3E0080100000006 +S3154001A9B081C3E00801000000AE25A010A7500000A9 +S3154001A9C02D10006AAC15A1CC2910006D81C520C49B +S3154001A9D0010000001110012390122024D202000030 +S3154001A9E092026001D2220000932DE008902C2F00A4 +S3154001A9F092120009111001239012201CD00200006E +S3154001AA0080A000082280000292126F00818A602095 +S3154001AA100100000001000000010000009010001735 +S3154001AA20400000379203A06092142F00818A602073 +S3154001AA300100000001000000010000001110012387 +S3154001AA4090122024D202000092226001D2220000FC +S3154001AA50108002BCAC1000009DE3BFA01B10012377 +S3154001AA60892E60029A13619480A6601F821020008D +S3154001AA7014800017C6034004B32E60041910012345 +S3154001AA8080A0E000981322140280000D8406400C39 +S3154001AA9080A0C00212800006821000031080000EC2 +S3154001AAA0C206400C2280000CC206400CC200600C5B +S3154001AAB080A0600012BFFFFC80A08001C423400437 +S3154001AAC0F026400CC620A00C8210200081C7E00869 +S3154001AAD091E80001F026400C81C7E00891E80001A9 +S3154001AAE0912A20020310012382106194C400400878 +S3154001AAF0C422600C81C3E008D22040089DE3BFA078 +S3154001AB00051001238210A02CC200600480A04018C9 +S3154001AB1022800040C400A02C80A620002280000292 +S3154001AB20B0100001A32E200203100123821061946C +S3154001AB30E000401180A42000028000342910012445 +S3154001AB402D1001242B10012427100124A8152014AF +S3154001AB50AC15A098AA15609C1080001DA614E0189B +S3154001AB60A41000138400A001C4248011C4058000F0 +S3154001AB7080A0A00022800006D20420089FC0800049 +S3154001AB8001000000C2040000D20420089010001801 +S3154001AB909FC0400094100019C205400080A060008B +S3154001ABA022800005C20480119FC0400001000000C0 +S3154001ABB0C204801182007FFFC2248011E004200C70 +S3154001ABC080A420000280001101000000C2040000A0 +S3154001ABD080A0600022BFFFFBE004200CC4050000FA +S3154001ABE080A0A00012BFFFDFC404C01180A0A00056 +S3154001ABF002BFFFDDA4100013E004200C80A4200056 +S3154001AC0032BFFFF4C204000081C7E00881E80000BA +S3154001AC10F000A0C010BFFFC1B00E201F8C10000F66 +S3154001AC20A74800008B34E0188A09600F80A16003B1 +S3154001AC3002800002108000399010200192102006F7 +S3154001AC40400002760100000080A000080280003327 +S3154001AC5001000000C2022010113FFC00820840089A +S3154001AC60110003FC8410400890100002921020014C +S3154001AC709410200C4000027F0100000080A00008D3 +S3154001AC8002800026010000004000028F9210000160 +S3154001AC900B1001238A116034D2214000901000022A +S3154001ACA09210200194102011400002720100000010 +S3154001ACB080A00008028000190100000040000282C5 +S3154001ACC092100001920260100B1001238A11602834 +S3154001ACD0D221400090100002921020019410200DC4 +S3154001ACE0400002640100000080A000080280000BC1 +S3154001ACF00100000040000274921000010B10012374 +S3154001AD008A11602CD2214000D40260109532A010E5 +S3154001AD10940AA00FD42160049E10000681C3E00866 +S3154001AD2001000000031001238210604882102001B7 +S3154001AD3091D0200081C3E008010000009DE3BFA03F +S3154001AD40051001248410A1B8C200A09080A0600023 +S3154001AD50028000278600A0941080000688102000FB +S3154001AD608801200180A100011A8000210100000014 +S3154001AD70D800C000DA0300009733601880A2C018DB +S3154001AD8012BFFFF88600E0049733600C960AEFFF86 +S3154001AD9080A2C01932BFFFF48801200180A6A0001D +S3154001ADA0028000039A0B600FDA268000C20320045A +S3154001ADB0860120648728E00284008003C400A00441 +S3154001ADC03100003F073FFC00B01623F0B0084018A1 +S3154001ADD082084003B12E20048330600CB00E00017E +S3154001ADE0B016000281C7E00881E8000081C7E0088B +S3154001ADF091E820009DE3BFA003100124C40060AC8C +S3154001AE0080A0A00012800078841020012310012424 +S3154001AE10C42060AC92102000A01461B8941023A401 +S3154001AE20400002379010001084102000821030003C +S3154001AE308728A00288040003C600400080A0E000E5 +S3154001AE400280000480A070E0C22120048400A00199 +S3154001AE5032BFFFF882006020C42461B8DA0420487A +S3154001AE6082103800840360128528A00286040002FD +S3154001AE70C400400080A0A0000280000480A078E0C9 +S3154001AE80C220E0049A03600112BFFFF782006020EE +S3154001AE9080A360000480003FDA2420482500003F5B +S3154001AEA08404204CA414A3F09E102000821020009C +S3154001AEB010800005230003FC80A340010480003577 +S3154001AEC08400A004C6008000C800C000D600E0107F +S3154001AED08731201880A0E00132BFFFF8820060016F +S3154001AEE08931200C88092FFF80A1200632BFFFF34C +S3154001AEF082006001D804209080A3203F3480000264 +S3154001AF00861020008088E0FF2280001E82006001BA +S3154001AF10A60AC01288102000A72CE010A60AC0136A +S3154001AF208614C011D600C00080A2E0000280001144 +S3154001AF3088012001D60420909002E0249202E06428 +S3154001AF409402E0A4912A2002932A60029004000808 +S3154001AF5092040009952AA0029404000A9602E0018F +S3154001AF60C6222004E6226004DE22A004D6242090D4 +S3154001AF7080A1200F0480001E9803200182006001F9 +S3154001AF809E03E00180A3400114BFFFCF8400A004CB +S3154001AF90901020019210200D941020007FFFFF6831 +S3154001AFA02110012380A2200032800002D024202CCF +S3154001AFB09010200192102011151001247FFFFF608F +S3154001AFC09412A0A880A2200002800003031001244D +S3154001AFD0D02060A4C204202C80A0600032800002F0 +S3154001AFE0C020604081C7E00881E8000080A3203F7F +S3154001AFF034BFFFE48200600110BFFFCB8600E0084A +S3154001B0009DE3BFA003100124C20060B08410001864 +S3154001B01080A0600002800006B0102000901000025F +S3154001B0209FC0400092100019B010000881C7E00887 +S3154001B03081E800009DE3BFA003100124C20060B473 +S3154001B04080A0600002800005841020009FC040005F +S3154001B050901000188410000881C7E00891E80002AA +S3154001B0609DE3BFA003100124C20060BC80A0600024 +S3154001B07002800005841020009FC0400090100018F7 +S3154001B0808410000881C7E00891E800029DE3BFA053 +S3154001B09003100124C20060B880A060000280000550 +S3154001B0A0841020009FC040009010001884100008B2 +S3154001B0B081C7E00891E800029DE3BFA00310012487 +S3154001B0C0C20060C080A0600002800005841020009C +S3154001B0D09FC04000901000188410000881C7E00806 +S3154001B0E091E800029DE3BFA003100124C20060C4A1 +S3154001B0F080A0600002800005841020009FC04000AF +S3154001B100901000188410000881C7E00891E80002F9 +S3154001B1109DE3BFA003100124C20060C880A0600067 +S3154001B12002800005841020009FC040009010001846 +S3154001B1308410000881C7E00891E800029DE3BFA0A2 +S3154001B14003100124C20060CC8410001880A0600066 +S3154001B15002800006B0102000901000029FC04000FF +S3154001B16092100019B010000881C7E00881E800007C +S3154001B170010000000310006C821062289FC040004D +S3154001B1800100000003100000821060008198400019 +S3154001B1900310006C821062909FC0400001000000C5 +S3154001B1A00310006C821062189FC04000010000002D +S3154001B1B08B4440008B31601C80A140001280000608 +S3154001B1C0010000007FFFFE96010000007FFF99B25B +S3154001B1D0010000009C23A0407FFF978A01000000E8 +S3154001B1E08210200191D020000100000029000004B6 +S3154001B1F0A68C001432800003A02C001491D02000AC +S3154001B200818C0000010000000100000001000000E7 +S3154001B21081C4800081CCA00481C3E0080100000004 +S3154001B22081C1E00801000000A74800008B34E01806 +S3154001B2308A09600380A160031280000801000000B2 +S3154001B24021100123A0142044A2102003E22400006F +S3154001B2508B444000108000018A09601F271001239A +S3154001B260A614E03CCA24C0008A01600127100123CC +S3154001B270A614E038CA24C00027100123A614E040D2 +S3154001B2808A216002CA24C00081C3E008010000008F +S3154001B29081C3E00801000000834800008330601844 +S3154001B2A08208600380A0600312800006010000004E +S3154001B2B0834440000500000882284002A3804000E4 +S3154001B2C0881000000910006C81C121740100000042 +S3154001B2D09DE3BFA02110007023100070A014203000 +S3154001B2E0A214603080A400111A80000B01000000F6 +S3154001B2F0D004000080A2200002800004A0042004A3 +S3154001B3009FC200000100000080A400112ABFFFFA7D +S3154001B310D004000081C7E00881E80000AA27A0B058 +S3154001B320E0256060E2256064E4256068C2256074BA +S3154001B330C43D6078C83D6080CC3D60888540000052 +S3154001B340C425606CF03D6090F43D6098F83D60A086 +S3154001B350FC3D60A8A8102001A92D0010808D001386 +S3154001B36002800013010000008534E001071001232B +S3154001B370C600E03CA72CC0038414C0028408A0FF89 +S3154001B38081E000008190A000E03BA000E43BA008E2 +S3154001B390E83BA010EC3BA018F03BA020F43BA028D2 +S3154001B3A0F83BA030FC3BA03881E8000081C5A008ED +S3154001B3B09C100015051001248410A0A0C400800033 +S3154001B3C080A0800002800004010000009FC0800030 +S3154001B3D09203A060818C20008210200283284010B5 +S3154001B3E005100123C400A038853040028210400276 +S3154001B3F08550000080888001028000208328A001BA +S3154001B40007100123C600E03C8530800382104002CC +S3154001B410820860FF81906000C203A06C8180600059 +S3154001B420F01BA090F41BA098F81BA0A0FC1BA0A8A1 +S3154001B430C203A074C41BA078C81BA080CC1BA088E3 +S3154001B440E003A060E203A064E403A06881E8000091 +S3154001B450E01BA000E41BA008E81BA010EC1BA018F1 +S3154001B460F01BA020F41BA028F81BA030FC1BA03821 +S3154001B4701080000F81E00000C203A06C8180600053 +S3154001B480F01BA090F41BA098F81BA0A0FC1BA0A841 +S3154001B490C203A074C41BA078C81BA080CC1BA08883 +S3154001B4A0E003A060E203A064E403A068818C20006D +S3154001B4B001000000010000000100000081C44000BD +S3154001B4C081CC8000AA27A0B0C2256074C43D6078B3 +S3154001B4D0C83D6080CC3D608885400000C425606CD5 +S3154001B4E0A8102001A92D0010808D001302800013A1 +S3154001B4F0010000008534E00107100123C600E03C4D +S3154001B500A72CC0038414C0028408A0FF81E0000078 +S3154001B5108190A000E03BA000E43BA008E83BA010DE +S3154001B520EC3BA018F03BA020F43BA028F83BA03010 +S3154001B530FC3BA03881E8000081C5A0089C1000159D +S3154001B540051001248410A0A0C400800080A08000C2 +S3154001B55002800004010000009FC080009203A060A9 +S3154001B560818C20008210200283284010051001237F +S3154001B570C400A03885304002821040028550000048 +S3154001B58080888001028000198328A00107100123C9 +S3154001B590C600E03C8530800382104002820860FF8D +S3154001B5A081906000C203A06C81806000C203A074D8 +S3154001B5B0C41BA078C81BA080CC1BA08881E80000D2 +S3154001B5C0E01BA000E41BA008E81BA010EC1BA01880 +S3154001B5D0F01BA020F41BA028F81BA030FC1BA038B0 +S3154001B5E01080000881E00000C203A06C81806000E9 +S3154001B5F0C203A074C41BA078C81BA080CC1BA08822 +S3154001B600818C2000010000000100000001000000C3 +S3154001B61081C4400081CC8000821000089A10380015 +S3154001B62096102000912AE00598034008D40340086B +S3154001B6309132A01880A20001328000089602E001F2 +S3154001B6409132A00C900A2FFF80A2000902800007C8 +S3154001B6509410000C9602E00180A2E00728BFFFF398 +S3154001B660912AE0059410200081C3E0089010000A59 +S3154001B6708210000898102000912B20039A00400860 +S3154001B680D60040089132E01880A2000932800008B5 +S3154001B690980320019132E00C900A2FFF80A2000A04 +S3154001B6A0028000079610000D9803200180A3200F09 +S3154001B6B028BFFFF3912B20039610200081C3E00899 +S3154001B6C09010000BD4022004173FFC00920A400B55 +S3154001B6D0900A800B9132200C921240081100003FD3 +S3154001B6E0901223F0940A8008952AA0049412800BA4 +S3154001B6F0920A400A81C3E008901000099DE3BFA069 +S3154001B700860E60FF80A6A0030880002A84100018D8 +S3154001B710808E20033280002A821020008328E00890 +S3154001B7208210400380A6A00F852860109A10001849 +S3154001B730841080018810001A0880001182100018B8 +S3154001B740C4204000C4206004C4206008C420600CAA +S3154001B75088013FF080A1200F18BFFFFA82006010D8 +S3154001B7608206BFF0B408600F9A087FF080A6A00356 +S3154001B7709A0360100880000E9A06000D8210200080 +S3154001B780C4234001820060048826800180A12003F1 +S3154001B79038BFFFFDC42340018206BFFCB4086003E5 +S3154001B7A082087FFC820060049A0340018410000DE8 +S3154001B7B080A6A0000280000782102000C6288001D2 +S3154001B7C08200600180A0401A32BFFFFEC628800178 +S3154001B7D081C7E00881E800009DE3BFA02110007009 +S3154001B7E0A0142018C2043FFC80A07FFF02800008FD +S3154001B7F0A0043FFC9FC04000A0043FFCC2040000DF +S3154001B80080A07FFF12BFFFFC0100000081C7E00856 +S3154001B81081E800009DE3BFA081C7E00881E8000000 +S3154001B8200000001000000000017A5200047C0F0164 +S3154001B8301B0C0E000000001000000018FFFE595CB2 +S3154001B8400000007000000000000000180000002CFD +S3154001B850FFFE59B8000000B400410D1E2D4A090FE4 +S3154001B8601F0000000000001800000048FFFE5A506B +S3154001B870000000D800410D1E2D6C090F1F0000006D +S3154001B8800000001800000064FFFE5B0C0000047815 +S3154001B89000410D1E2D4D090F1F000000000000182C +S3154001B8A000000080FFFE5F680000008800410D1E19 +S3154001B8B02D5B090F1F000000000000180000009CCE +S3154001B8C0FFFE5FD40000009000410D1E2D43090F7D +S3154001B8D01F00000000000014000000B8FFFE604891 +S3154001B8E00000002000410D1E2D090F1F0000001011 +S3154001B8F0000000D0FFFE60500000001C0000000068 +S3154001B90000000010000000E4FFFE60580000001C2B +S3154001B9100000000000000010000000F8FFFE60601B +S3154001B9200000001C00000000000000100000010C97 +S3154001B930FFFE60680000001C0000000000000014CB +S3154001B94000000120FFFE60700000002C00410D1E2A +S3154001B9502D090F1F0000001800000138FFFE60D0BE +S3154001B9600000004000410D1E2D46090F1F0000003A +S3154001B9700000001800000154FFFE60F4000002249C +S3154001B98000410D1E2D46090F1F0000000000001842 +S3154001B99000000170FFFE62FC0000023400410D1EF2 +S3154001B9A02D47090F1F000000000000180000018C00 +S3154001B9B0FFFE65140000003C00410D1E2D43090F9A +S3154001B9C01F00000000000018000001A8FFFE6534BA +S3154001B9D00000003C00410D1E2D43090F1F000000D1 +S3154001B9E000000014000001C4FFFF46180000039444 +S3154001B9F000410D1E2D090F1F00000010000001DC43 +S3154001BA00FFFF49940000002C0000000000000010D8 +S3154001BA10000001F0FFFF49AC0000002400000000D7 +S3154001BA200000001000000204FFFF49BC000000189E +S3154001BA30000000000000001800000218FFFF49C086 +S3154001BA400000017C00410D1E2D42090F1F00000020 +S3154001BA500000001800000234FFFF4B200000058063 +S3154001BA6000410D1E2D46090F1F0000000000001861 +S3154001BA7000000250FFFF50840000051800410D1ED2 +S3154001BA802D43090F1F000000000000140000026C46 +S3154001BA90FFFF55800000010C00410D1E2D090F1FAF +S3154001BAA00000001000000284FFFF567400000018D9 +S3154001BAB0000000000000001400000298FFFF5678C5 +S3154001BAC00000020800410D1E2D090F1F0000001441 +S3154001BAD0000002B0FFFF66FC0000461800410D1E43 +S3154001BAE02D090F1F00000010000002C8FFFFACFC2B +S3154001BAF00000000C0000000000000010000002DC05 +S3154001BB00FFFFACF40000001400000000000000102C +S3154001BB10000002F0FFFFACF400000020000000002E +S3154001BB200000001400000304FFFFAD000000077091 +S3154001BB3000410D1E2D090F1F000000100000031CBF +S3154001BB40FFFFBD880000000C00000000000000104F +S3154001BB5000000330FFFFBD8000000024000000000C +S3154001BB600000001000000344FFFFBD9000000038B4 +S3154001BB70000000000000001000000358FFFFBDB4A4 +S3154001BB800000003800000000000000180000036CAF +S3154001BB90FFFFBDD80000009C00410D1E2D56090F28 +S3154001BBA01F0000000000001800000388FFFFBE5878 +S3154001BBB00000003C00410D1E2D4A090F1F000000E8 +S3154001BBC000000018000003A4FFFFBE780000003CFF +S3154001BBD000410D1E2D4A090F1F00000000000010F4 +S3154001BBE0000003C0FFFFBE980000003800000000BF +S3154001BBF000000018000003D4FFFFBEBC0000003C5B +S3154001BC0000410D1E2D4A090F1F00000000000018BB +S3154001BC10000003F0FFFFBEDC0000003C00410D1EAA +S3154001BC202D4A090F1F000000000000100000040CFF +S3154001BC30FFFFBEFC000000380000000000000018B5 +S3154001BC4000000420FFFFBF2000000EB000430D1E80 +S3154001BC502D4C090F1F000000000000140000043C99 +S3154001BC60FFFFCDB40000002800410D1E2D090F1F16 +S3154001BC700000001400000454FFFFCDC4000003304F +S3154001BC8000410D1E2D090F1F000000140000046C19 +S3154001BC90FFFFD0DC000002B800430D1E2D090F1F27 +S3154001BCA00000001000000484FFFFD6840000000C51 +S3154001BCB0000000000000001000000498FFFFD67C41 +S3154001BCC0000000140000000000000014000004AC55 +S3154001BCD0FFFFD67C0000007C00410D1E2D090F1F81 +S3154001BCE000000010000004C4FFFFDA7800000020C5 +S3154001BCF00000000000000018000004D8FFFFDA84AD +S3154001BD00000000FC00410D1E2D54090F1F000000CC +S3154001BD1000000018000004F4FFFFDB640000012C62 +S3154001BD2000410D1E2D41090F1F00000000000010AB +S3154001BD3000000510FFFFDC740000001C000000003D +S3154001BD400000001000000524FFFFDC7C0000001C01 +S3154001BD50000000000000001800000538FFFFDC84E9 +S3154001BD60000006D800410D1E2D4C090F1F00000092 +S3154001BD700000001000000554FFFFE34000000018DA +S3154001BD80000000000000001000000568FFFFE344CA +S3154001BD900000001800000000000000180000057CAB +S3154001BDA0FFFFE3480000004000410D1E2D42090FF0 +S3154001BDB01F0000000000001400000598FFFFE36C1F +S3154001BDC0000000EC00410D1E2D090F1F0000001858 +S3154001BDD0000005B0FFFFE4400000029C00410D1E3B +S3154001BDE02D43090F1F00000000000018000005CC7C +S3154001BDF0FFFFE6C00000008C00410D1E2D4F090FCC +S3154001BE001F00000000000018000005E8FFFFE730B2 +S3154001BE100000002800410D1E2D44090F1F0000009F +S3154001BE200000001800000604FFFFE73C0000010483 +S3154001BE3000410D1E2D45090F1F0000000000001096 +S3154001BE4000000620FFFFE8240000003C000000003F +S3154001BE500000001800000634FFFFEC0000000088D7 +S3154001BE6000410D1E2D52090F1F0000000000001059 +S3154001BE7000000650FFFFEC6C0000001C00000000B3 +S3154001BE800000001800000664FFFFEC74000001206A +S3154001BE9000410D1E2D58090F1F0000000000001023 +S3154001BEA000000680FFFFEE88000000100000000041 +S3154001BEB00000001800000694FFFFEE84000000B861 +S3154001BEC000410D1E2D48090F1F00000000000018FB +S3154001BED0000006B0FFFFEF200000020C00410D1EDE +S3154001BEE02D4A090F1F00000000000018000006CC73 +S3154001BEF0FFFFF1100000003400410D1E2D47090FD0 +S3154001BF001F00000000000018000006E8FFFFF128AE +S3154001BF100000002C00410D1E2D45090F1F00000099 +S3154001BF200000001800000704FFFFF1380000002C54 +S3154001BF3000410D1E2D45090F1F000000000000188D +S3154001BF4000000720FFFFF1480000002C00410D1EB4 +S3154001BF502D45090F1F000000000000180000073C96 +S3154001BF60FFFFF1580000002C00410D1E2D45090F21 +S3154001BF701F0000000000001800000758FFFFF1688D +S3154001BF800000002C00410D1E2D45090F1F00000029 +S3154001BF900000001800000774FFFFF1780000002C34 +S3154001BFA000410D1E2D45090F1F000000000000181D +S3154001BFB000000790FFFFF1880000003400410D1E8C +S3154001BFC02D47090F1F00000000000018000007ACB4 +S3154001BFD0FFFFF3000000004C00410D1E2D47090FE5 +S3154001BFE01F00000000000018000007C8FFFFF710FF +S3154001BFF0000000DC00410D1E2D76090F1F000000D8 +S3154001C00000000000000000000000000000000000E9 +S3154001C01000000002FFFFFFFF0000000000000000DB +S3154001C02000000002FFFFFFFF0000000000000000CB +S3154001C030343074693934612B3079676979753035B3 +S3154001C0407968617035796934682B612B69697978CA +S3154001C0506869346B35396A30713930356A6B6F7955 +S3154001C06070686F70746A72686961346979302B34AB +S3154001C0700000000000000000400800000000000031 +S3154001C0803CD203AF9EE756163E7AD7F29ABCAF48EA +S3154001C0904004822800000000430000000000000028 +S3154001C0A09DE3BFA07FFF9421010000007FFFFDCBF0 +S3154001C0B00100000081C7E00881E800009DE3BFA0C0 +S3154001C0C07FFF93EF0100000081C7E00881E800008F +S3154001C0D00000000000000000000000000000000019 +S3154001C0E00000000000000000000000000000000009 +S3154001C0F000000000000000000000000000000000F9 +S3154001C10000000000000000000000000000000000E8 +S3154001C11000000000000000000000000000000000D8 +S3154001C12000000000000000000000000000000000C8 +S3154001C13000000000000000000000000000000000B8 +S3154001C14000000000000000000000000000000000A8 +S3154001C1500000000000000000000000000000000098 +S3154001C1600000000000000000000000000000000088 +S3154001C1700000000000000000000000000000000078 +S3154001C1800000000000000000000000000000000068 +S3154001C1900000000000000000000000000000000058 +S3154001C1A00000000000000000000000000000000048 +S3154001C1B00000000000000000000000000000000038 +S3154001C1C00000000000000000000000000000000028 +S3154001C1D00000000000000000000000000000000018 +S3154001C1E00000000000000000000000000000000008 +S3154001C1F000000000000000000000000000000000F8 +S3154001C20000000000000000000000000000000000E7 +S3154001C21000000000000000000000000000000000D7 +S3154001C22000000000000000000000000000000000C7 +S3154001C23000000000000000000000000000000000B7 +S3154001C24000000000000000000000000000000000A7 +S3154001C2500000000000000000000000000000000097 +S3154001C2600000000000000000000000000000000087 +S3154001C2700000000000000000000000000000000077 +S3154001C2800000000000000000000000000000000067 +S3154001C2900000000000000000000000000000000057 +S3154001C2A00000000000000000000000000000000047 +S3154001C2B00000000000000000000000000000000037 +S3154001C2C00000000000000000000000000000000027 +S3154001C2D00000000000000000000000000000000017 +S3154001C2E00000000000000000000000000000000007 +S3154001C2F000000000000000000000000000000000F7 +S3154001C30000000000000000000000000000000000E6 +S3154001C31000000000000000000000000000000000D6 +S3154001C32000000000000000000000000000000000C6 +S3154001C33000000000000000000000000000000000B6 +S3154001C34000000000000000000000000000000000A6 +S3154001C3500000000000000000000000000000000096 +S3154001C3600000000000000000000000000000000086 +S3154001C3700000000000000000000000000000000076 +S3154001C3800000000000000000000000000000000066 +S3154001C3900000000000000000000000000000000056 +S3154001C3A00000000000000000000000000000000046 +S3154001C3B00000000000000000000000000000000036 +S3154001C3C00000000000000000000000000000000026 +S3154001C3D00000000000000000000000000000000016 +S3154001C3E00000000000000000000000000000000006 +S3154001C3F000000000000000000000000000000000F6 +S3154001C40000000000000000000000000000000000E5 +S3154001C41000000000000000000000000000000000D5 +S3154001C42000000000000000000000000000000000C5 +S3154001C43000000000000000000000000000000000B5 +S3154001C44000000000000000000000000000000000A5 +S3154001C4500000000000000000000000000000000095 +S3154001C4600000000000000000000000000000000085 +S3154001C4700000000000000000000000000000000075 +S3154001C4800000000000000000000000000000000065 +S3154001C4900000000000000000000000000000000055 +S3154001C4A00000000000000000000000000000000045 +S3154001C4B00000000000000000000000000000000035 +S3154001C4C00000000000000000000000000000000025 +S3154001C4D00000000000000000000000000000000015 +S3154001C4E00000000000000000000000000000000005 +S3154001C4F000000000000000000000000000000000F5 +S3154001C50000000000000000000000000000000000E4 +S3154001C51000000000000000000000000000000000D4 +S3154001C52000000000000000000000000000000000C4 +S3154001C53000000000000000000000000000000000B4 +S3154001C54000000000000000000000000000000000A4 +S3154001C5500000000000000000000000000000000094 +S3154001C5600000000000000000000000000000000084 +S3154001C5700000000000000000000000000000000074 +S3154001C5800000000000000000000000000000000064 +S3154001C5900000000000000000000000000000000054 +S3154001C5A00000000000000000000000000000000044 +S3154001C5B00000000000000000000000000000000034 +S3154001C5C00000000000000000000000000000000024 +S3154001C5D00000000000000000000000000000000014 +S3154001C5E00000000000000000000000000000000004 +S3154001C5F000000000000000000000000000000000F4 +S3154001C60000000000000000000000000000000000E3 +S3154001C61000000000000000000000000000000000D3 +S3154001C62000000000000000000000000000000000C3 +S3154001C63000000000000000000000000000000000B3 +S3154001C64000000000000000000000000000000000A3 +S3154001C6500000000000000000000000000000000093 +S3154001C6600000000000000000000000000000000083 +S3154001C6700000000000000000000000000000000073 +S3154001C6800000000000000000000000000000000063 +S3154001C6900000000000000000000000000000000053 +S3154001C6A00000000000000000000000000000000043 +S3154001C6B00000000000000000000000000000000033 +S3154001C6C00000000000000000000000000000000023 +S3154001C6D00000000000000000000000000000000013 +S3154001C6E00000000000000000000000000000000003 +S3154001C6F000000000000000000000000000000000F3 +S3154001C70000000000000000000000000000000000E2 +S3154001C71000000000000000000000000000000000D2 +S3154001C72000000000000000000000000000000000C2 +S3154001C73000000000000000000000000000000000B2 +S3154001C74000000000000000000000000000000000A2 +S3154001C7500000000000000000000000000000000092 +S3154001C7600000000000000000000000000000000082 +S3154001C7700000000000000000000000000000000072 +S3154001C7800000000000000000000000000000000062 +S3154001C7900000000000000000000000000000000052 +S3154001C7A00000000000000000000000000000000042 +S3154001C7B00000000000000000000000000000000032 +S3154001C7C00000000000000000000000000000000022 +S3154001C7D00000000000000000000000000000000012 +S3154001C7E00000000000000000000000000000000002 +S3154001C7F000000000000000000000000000000000F2 +S3154001C80000000000000000000000000000000000E1 +S3154001C81000000000000000000000000000000000D1 +S3154001C82000000000000000000000000000000000C1 +S3154001C83000000000000000000000000000000000B1 +S3154001C84000000000000000000000000000000000A1 +S3154001C8500000000000000000000000000000000091 +S3154001C8600000000000000000000000000000000081 +S3154001C8700000000000000000000000000000000071 +S3154001C8800000000000000000000000000000000061 +S3154001C8900000000000000000000000000000000051 +S3154001C8A00000000000000000000000000000000041 +S3154001C8B00000000000000000000000000000000031 +S3154001C8C00000000000000000000000000000000021 +S3154001C8D00000000000000000000000000000000011 +S3154001C8E00000000000000000000000000000000001 +S3154001C8F000000000000000000000000000000000F1 +S3154001C90000000000000000000000000000000000E0 +S3154001C91000000000000000000000000000000000D0 +S3154001C92000000000000000000000000000000000C0 +S3154001C93000000000000000000000000000000000B0 +S3154001C94000000000000000000000000000000000A0 +S3154001C9500000000000000000000000000000000090 +S3154001C9600000000000000000000000000000000080 +S3154001C9700000000000000000000000000000000070 +S3154001C9800000000000000000000000000000000060 +S3154001C9900000000000000000000000000000000050 +S3154001C9A00000000000000000000000000000000040 +S3154001C9B00000000000000000000000000000000030 +S3154001C9C00000000000000000000000000000000020 +S3154001C9D00000000000000000000000000000000010 +S3154001C9E00000000000000000000000000000000000 +S3154001C9F000000000000000000000000000000000F0 +S3154001CA0000000000000000000000000000000000DF +S3154001CA1000000000000000000000000000000000CF +S3154001CA2000000000000000000000000000000000BF +S3154001CA3000000000000000000000000000000000AF +S3154001CA40000000000000000000000000000000009F +S3154001CA50000000000000000000000000000000008F +S3154001CA60000000000000000000000000000000007F +S3154001CA70000000000000000000000000000000006F +S3154001CA80000000000000000000000000000000005F +S3154001CA90000000000000000000000000000000004F +S3154001CAA0000000000000000000000000000000003F +S3154001CAB0000000000000000000000000000000002F +S3154001CAC0000000000000000000000000000000001F +S3154001CAD0000000000000000000000000000000000F +S3154001CAE000000000000000000000000000000000FF +S3154001CAF000000000000000000000000000000000EF +S3154001CB0000000000000000000000000000000000DE +S3154001CB1000000000000000000000000000000000CE +S3154001CB2000000000000000000000000000000000BE +S3154001CB3000000000000000000000000000000000AE +S3154001CB40000000000000000000000000000000009E +S3154001CB50000000000000000000000000000000008E +S3154001CB60000000000000000000000000000000007E +S3154001CB70000000000000000000000000000000006E +S3154001CB80000000000000000000000000000000005E +S3154001CB90000000000000000000000000000000004E +S3154001CBA0000000000000000000000000000000003E +S3154001CBB0000000000000000000000000000000002E +S3154001CBC0000000000000000000000000000000001E +S3154001CBD0000000000000000000000000000000000E +S3154001CBE000000000000000000000000000000000FE +S3154001CBF000000000000000000000000000000000EE +S3154001CC0000000000000000000000000000000000DD +S3154001CC1000000000000000000000000000000000CD +S3154001CC2000000000000000000000000000000000BD +S3154001CC3000000000000000000000000000000000AD +S3154001CC40000000000000000000000000000000009D +S3154001CC50000000000000000000000000000000008D +S3154001CC60000000000000000000000000000000007D +S3154001CC70000000000000000000000000000000006D +S3154001CC80000000000000000000000000000000005D +S3154001CC90000000000000000000000000000000004D +S3154001CCA0000000000000000000000000000000003D +S3154001CCB0000000000000000000000000000000002D +S3154001CCC0000000000000000000000000000000001D +S3154001CCD0000000000000000000000000000000000D +S3154001CCE000000000000000000000000000000000FD +S3154001CCF000000000000000000000000000000000ED +S3154001CD0000000000000000000000000000000000DC +S3154001CD1000000000000000000000000000000000CC +S3154001CD2000000000000000000000000000000000BC +S3154001CD3000000000000000000000000000000000AC +S3154001CD40000000000000000000000000000000009C +S3154001CD50000000000000000000000000000000008C +S3154001CD60000000000000000000000000000000007C +S3154001CD70000000000000000000000000000000006C +S3154001CD80000000000000000000000000000000005C +S3154001CD90000000000000000000000000000000004C +S3154001CDA0000000000000000000000000000000003C +S3154001CDB0000000000000000000000000000000002C +S3154001CDC0000000000000000000000000000000001C +S3154001CDD0000000000000000000000000000000000C +S3154001CDE000000000000000000000000000000000FC +S3154001CDF000000000000000000000000000000000EC +S3154001CE0000000000000000000000000000000000DB +S3154001CE1000000000000000000000000000000000CB +S3154001CE2000000000000000000000000000000000BB +S3154001CE3000000000000000000000000000000000AB +S3154001CE40000000000000000000000000000000009B +S3154001CE50000000000000000000000000000000008B +S3154001CE60000000000000000000000000000000007B +S3154001CE70000000000000000000000000000000006B +S3154001CE80000000000000000000000000000000005B +S3154001CE90000000000000000000000000000000004B +S3154001CEA0000000000000000000000000000000003B +S3154001CEB0000000000000000000000000000000002B +S3154001CEC0000000000000000000000000000000001B +S3154001CED0000000000000000000000000000000000B +S3154001CEE000000000000000000000000000000000FB +S3154001CEF000000000000000000000000000000000EB +S3154001CF0000000000000000000000000000000000DA +S3154001CF1000000000000000000000000000000000CA +S3154001CF2000000000000000000000000000000000BA +S3154001CF3000000000000000000000000000000000AA +S3154001CF40000000000000000000000000000000009A +S3154001CF50000000000000000000000000000000008A +S3154001CF60000000000000000000000000000000007A +S3154001CF70000000000000000000000000000000006A +S3154001CF80000000000000000000000000000000005A +S3154001CF90000000000000000000000000000000004A +S3154001CFA0000000000000000000000000000000003A +S3154001CFB0000000000000000000000000000000002A +S3154001CFC0000000000000000000000000000000001A +S3154001CFD0000000000000000000000000000000000A +S3154001CFE000000000000000000000000000000000FA +S3154001CFF000000000000000000000000000000000EA +S3154001D00000000000000000000000000000000000D9 +S3154001D01000000000000000000000000000000000C9 +S3154001D02000000000000000000000000000000000B9 +S3154001D03000000000000000000000000000000000A9 +S3154001D0400000000000000000000000000000000099 +S3154001D0500000000000000000000000000000000089 +S3154001D0600000000000000000000000000000000079 +S3154001D0700000000000000000000000000000000069 +S3154001D0800000000000000000000000000000000059 +S3154001D0900000000000000000000000000000000049 +S3154001D0A00000000000000000000000000000000039 +S3154001D0B00000000000000000000000000000000029 +S3154001D0C00000000000000000000000000000000019 +S3154001D0D00000000000000000000000000000000009 +S3154001D0E000000000000000000000000000000000F9 +S3154001D0F000000000000000000000000000000000E9 +S3154001D10000000000000000000000000000000000D8 +S3154001D11000000000000000000000000000000000C8 +S3154001D12000000000000000000000000000000000B8 +S3154001D13000000000000000000000000000000000A8 +S3154001D1400000000000000000000000000000000098 +S3154001D1500000000000000000000000000000000088 +S3154001D1600000000000000000000000000000000078 +S3154001D1700000000000000000000000000000000068 +S3154001D1800000000000000000000000000000000058 +S3154001D1900000000000000000000000000000000048 +S3154001D1A00000000000000000000000000000000038 +S3154001D1B00000000000000000000000000000000028 +S3154001D1C00000000000000000000000000000000018 +S3154001D1D00000000000000000000000000000000008 +S3154001D1E000000000000000000000000000000000F8 +S3154001D1F000000000000000000000000000000000E8 +S3154001D20000000000000000000000000000000000D7 +S3154001D21000000000000000000000000000000000C7 +S3154001D22000000000000000000000000000000000B7 +S3154001D23000000000000000000000000000000000A7 +S3154001D2400000000000000000000000000000000097 +S3154001D2500000000000000000000000000000000087 +S3154001D2600000000000000000000000000000000077 +S3154001D2700000000000000000000000000000000067 +S3154001D2800000000000000000000000000000000057 +S3154001D2900000000000000000000000000000000047 +S3154001D2A00000000000000000000000000000000037 +S3154001D2B00000000000000000000000000000000027 +S3154001D2C00000000000000000000000000000000017 +S3154001D2D00000000000000000000000000000000007 +S3154001D2E000000000000000000000000000000000F7 +S3154001D2F000000000000000000000000000000000E7 +S3154001D30000000000000000000000000000000000D6 +S3154001D31000000000000000000000000000000000C6 +S3154001D32000000000000000000000000000000000B6 +S3154001D33000000000000000000000000000000000A6 +S3154001D3400000000000000000000000000000000096 +S3154001D3500000000000000000000000000000000086 +S3154001D3600000000000000000000000000000000076 +S3154001D3700000000000000000000000000000000066 +S3154001D3800000000000000000000000000000000056 +S3154001D3900000000000000000000000000000000046 +S3154001D3A00000000000000000000000000000000036 +S3154001D3B00000000000000000000000000000000026 +S3154001D3C00000000000000000000000000000000016 +S3154001D3D00000000000000000000000000000000006 +S3154001D3E000000000000000000000000000000000F6 +S3154001D3F000000000000000000000000000000000E6 +S3154001D40000000000000000000000000000000000D5 +S3154001D41000000000000000000000000000000000C5 +S3154001D42000000000000000000000000000000000B5 +S3154001D43000000000000000000000000000000000A5 +S3154001D4400000000000000000000000000000000095 +S3154001D4500000000000000000000000000000000085 +S3154001D4600000000000000000000000000000000075 +S3154001D4700000000000000000000000000000000065 +S3154001D4800000000000000000000000000000000055 +S3154001D4900000000000000000000000000000000045 +S3154001D4A00000000000000000000000000000000035 +S3154001D4B00000000000000000000000000000000025 +S3154001D4C00000000000000000000000000000000015 +S3154001D4D00000000000000000000000000000000005 +S3154001D4E000000000000000000000000000000000F5 +S3154001D4F000000000000000000000000000000000E5 +S3154001D50000000000000000000000000000000000D4 +S3154001D51000000000000000000000000000000000C4 +S3154001D52000000000000000000000000000000000B4 +S3154001D53000000000000000000000000000000000A4 +S3154001D5400000000000000000000000000000000094 +S3154001D5500000000000000000000000000000000084 +S3154001D5600000000000000000000000000000000074 +S3154001D5700000000000000000000000000000000064 +S3154001D5800000000000000000000000000000000054 +S3154001D5900000000000000000000000000000000044 +S3154001D5A00000000000000000000000000000000034 +S3154001D5B00000000000000000000000000000000024 +S3154001D5C00000000000000000000000000000000014 +S3154001D5D00000000000000000000000000000000004 +S3154001D5E000000000000000000000000000000000F4 +S3154001D5F000000000000000000000000000000000E4 +S3154001D60000000000000000000000000000000000D3 +S3154001D61000000000000000000000000000000000C3 +S3154001D62000000000000000000000000000000000B3 +S3154001D63000000000000000000000000000000000A3 +S3154001D6400000000000000000000000000000000093 +S3154001D6500000000000000000000000000000000083 +S3154001D6600000000000000000000000000000000073 +S3154001D6700000000000000000000000000000000063 +S3154001D6800000000000000000000000000000000053 +S3154001D6900000000000000000000000000000000043 +S3154001D6A00000000000000000000000000000000033 +S3154001D6B00000000000000000000000000000000023 +S3154001D6C00000000000000000000000000000000013 +S3154001D6D00000000000000000000000000000000003 +S3154001D6E000000000000000000000000000000000F3 +S3154001D6F000000000000000000000000000000000E3 +S3154001D70000000000000000000000000000000000D2 +S3154001D71000000000000000000000000000000000C2 +S3154001D72000000000000000000000000000000000B2 +S3154001D73000000000000000000000000000000000A2 +S3154001D7400000000000000000000000000000000092 +S3154001D7500000000000000000000000000000000082 +S3154001D7600000000000000000000000000000000072 +S3154001D7700000000000000000000000000000000062 +S3154001D7800000000000000000000000000000000052 +S3154001D7900000000000000000000000000000000042 +S3154001D7A00000000000000000000000000000000032 +S3154001D7B00000000000000000000000000000000022 +S3154001D7C00000000000000000000000000000000012 +S3154001D7D00000000000000000000000000000000002 +S3154001D7E000000000000000000000000000000000F2 +S3154001D7F000000000000000000000000000000000E2 +S3154001D80000000000000000000000000000000000D1 +S3154001D81000000000000000000000000000000000C1 +S3154001D82000000000000000000000000000000000B1 +S3154001D83000000000000000000000000000000000A1 +S3154001D8400000000000000000000000000000000091 +S3154001D8500000000000000000000000000000000081 +S3154001D8600000000000000000000000000000000071 +S3154001D8700000000000000000000000000000000061 +S3154001D8800000000000000000000000000000000051 +S3154001D8900000000000000000000000000000000041 +S3154001D8A00000000000000000000000000000000031 +S3154001D8B00000000000000000000000000000000021 +S3154001D8C00000000000000000000000000000000011 +S3154001D8D00000000000000000000000000000000001 +S3154001D8E000000000000000000000000000000000F1 +S3154001D8F000000000000000000000000000000000E1 +S3154001D90000000000000000000000000000000000D0 +S3154001D91000000000000000000000000000000000C0 +S3154001D92000000000000000000000000000000000B0 +S3154001D93000000000000000000000000000000000A0 +S3154001D9400000000000000000000000000000000090 +S3154001D9500000000000000000000000000000000080 +S3154001D9600000000000000000000000000000000070 +S3154001D9700000000000000000000000000000000060 +S3154001D9800000000000000000000000000000000050 +S3154001D9900000000000000000000000000000000040 +S3154001D9A00000000000000000000000000000000030 +S3154001D9B00000000000000000000000000000000020 +S3154001D9C00000000000000000000000000000000010 +S3154001D9D00000000000000000000000000000000000 +S3154001D9E000000000000000000000000000000000F0 +S3154001D9F000000000000000000000000000000000E0 +S3154001DA0000000000000000000000000000000000CF +S3154001DA1000000000000000000000000000000000BF +S3154001DA2000000000000000000000000000000000AF +S3154001DA30000000000000000000000000000000009F +S3154001DA40000000000000000000000000000000008F +S3154001DA50000000000000000000000000000000007F +S3154001DA60000000000000000000000000000000006F +S3154001DA70000000000000000000000000000000005F +S3154001DA80000000000000000000000000000000004F +S3154001DA90000000000000000000000000000000003F +S3154001DAA0000000000000000000000000000000002F +S3154001DAB0000000000000000000000000000000001F +S3154001DAC0000000000000000000000000000000000F +S3154001DAD000000000000000000000000000000000FF +S3154001DAE000000000000000000000000000000000EF +S3154001DAF000000000000000000000000000000000DF +S3154001DB0000000000000000000000000000000000CE +S3154001DB1000000000000000000000000000000000BE +S3154001DB2000000000000000000000000000000000AE +S3154001DB30000000000000000000000000000000009E +S3154001DB40000000000000000000000000000000008E +S3154001DB50000000000000000000000000000000007E +S3154001DB60000000000000000000000000000000006E +S3154001DB70000000000000000000000000000000005E +S3154001DB80000000000000000000000000000000004E +S3154001DB90000000000000000000000000000000003E +S3154001DBA0000000000000000000000000000000002E +S3154001DBB0000000000000000000000000000000001E +S3154001DBC0000000000000000000000000000000000E +S3154001DBD000000000000000000000000000000000FE +S3154001DBE000000000000000000000000000000000EE +S3154001DBF000000000000000000000000000000000DE +S3154001DC0000000000000000000000000000000000CD +S3154001DC1000000000000000000000000000000000BD +S3154001DC2000000000000000000000000000000000AD +S3154001DC30000000000000000000000000000000009D +S3154001DC40000000000000000000000000000000008D +S3154001DC50000000000000000000000000000000007D +S3154001DC60000000000000000000000000000000006D +S3154001DC70000000000000000000000000000000005D +S3154001DC80000000000000000000000000000000004D +S3154001DC90000000000000000000000000000000003D +S3154001DCA0000000000000000000000000000000002D +S3154001DCB0000000000000000000000000000000001D +S3154001DCC0000000000000000000000000000000000D +S3154001DCD000000000000000000000000000000000FD +S3154001DCE000000000000000000000000000000000ED +S3154001DCF000000000000000000000000000000000DD +S3154001DD0000000000000000000000000000000000CC +S3154001DD1000000000000000000000000000000000BC +S3154001DD2000000000000000000000000000000000AC +S3154001DD30000000000000000000000000000000009C +S3154001DD40000000000000000000000000000000008C +S3154001DD50000000000000000000000000000000007C +S3154001DD60000000000000000000000000000000006C +S3154001DD70000000000000000000000000000000005C +S3154001DD80000000000000000000000000000000004C +S3154001DD90000000000000000000000000000000003C +S3154001DDA0000000000000000000000000000000002C +S3154001DDB0000000000000000000000000000000001C +S3154001DDC0000000000000000000000000000000000C +S3154001DDD000000000000000000000000000000000FC +S3154001DDE000000000000000000000000000000000EC +S3154001DDF000000000000000000000000000000000DC +S3154001DE0000000000000000000000000000000000CB +S3154001DE1000000000000000000000000000000000BB +S3154001DE2000000000000000000000000000000000AB +S3154001DE30000000000000000000000000000000009B +S3154001DE40000000000000000000000000000000008B +S3154001DE50000000000000000000000000000000007B +S3154001DE60000000000000000000000000000000006B +S3154001DE70000000000000000000000000000000005B +S3154001DE80000000000000000000000000000000004B +S3154001DE90000000000000000000000000000000003B +S3154001DEA0000000000000000000000000000000002B +S3154001DEB0000000000000000000000000000000001B +S3154001DEC0000000000000000000000000000000000B +S3154001DED000000000000000000000000000000000FB +S3154001DEE000000000000000000000000000000000EB +S3154001DEF000000000000000000000000000000000DB +S3154001DF0000000000000000000000000000000000CA +S3154001DF1000000000000000000000000000000000BA +S3154001DF2000000000000000000000000000000000AA +S3154001DF30000000000000000000000000000000009A +S3154001DF40000000000000000000000000000000008A +S3154001DF50000000000000000000000000000000007A +S3154001DF60000000000000000000000000000000006A +S3154001DF70000000000000000000000000000000005A +S3154001DF80000000000000000000000000000000004A +S3154001DF90000000000000000000000000000000003A +S3154001DFA0000000000000000000000000000000002A +S3154001DFB0000000000000000000000000000000001A +S3154001DFC0000000000000000000000000000000000A +S3154001DFD000000000000000000000000000000000FA +S3154001DFE000000000000000000000000000000000EA +S3154001DFF000000000000000000000000000000000DA +S3154001E00000000000000000000000000000000000C9 +S3154001E01000000000000000000000000000000000B9 +S3154001E02000000000000000000000000000000000A9 +S3154001E0300000000000000000000000000000000099 +S3154001E0400000000000000000000000000000000089 +S3154001E0500000000000000000000000000000000079 +S3154001E0600000000000000000000000000000000069 +S3154001E0700000000000000000000000000000000059 +S3154001E0800000000000000000000000000000000049 +S3154001E0900000000000000000000000000000000039 +S3154001E0A00000000000000000000000000000000029 +S3154001E0B00000000000000000000000000000000019 +S3154001E0C00000000000000000000000000000000009 +S3154001E0D000000000000000000000000000000000F9 +S3154001E0E000000000000000000000000000000000E9 +S3154001E0F000000000000000000000000000000000D9 +S3154001E10000000000000000000000000000000000C8 +S3154001E11000000000000000000000000000000000B8 +S3154001E12000000000000000000000000000000000A8 +S3154001E1300000000000000000000000000000000098 +S3154001E1400000000000000000000000000000000088 +S3154001E1500000000000000000000000000000000078 +S3154001E1600000000000000000000000000000000068 +S3154001E1700000000000000000000000000000000058 +S3154001E1800000000000000000000000000000000048 +S3154001E1900000000000000000000000000000000038 +S3154001E1A00000000000000000000000000000000028 +S3154001E1B00000000000000000000000000000000018 +S3154001E1C00000000000000000000000000000000008 +S3154001E1D000000000000000000000000000000000F8 +S3154001E1E000000000000000000000000000000000E8 +S3154001E1F000000000000000000000000000000000D8 +S3154001E20000000000000000000000000000000000C7 +S3154001E21000000000000000000000000000000000B7 +S3154001E22000000000000000000000000000000000A7 +S3154001E2300000000000000000000000000000000097 +S3154001E2400000000000000000000000000000000087 +S3154001E2500000000000000000000000000000000077 +S3154001E2600000000000000000000000000000000067 +S3154001E2700000000000000000000000000000000057 +S3154001E2800000000000000000000000000000000047 +S3154001E2900000000000000000000000000000000037 +S3154001E2A00000000000000000000000000000000027 +S3154001E2B00000000000000000000000000000000017 +S3154001E2C00000000000000000000000000000000007 +S3154001E2D000000000000000000000000000000000F7 +S3154001E2E000000000000000000000000000000000E7 +S3154001E2F000000000000000000000000000000000D7 +S3154001E30000000000000000000000000000000000C6 +S3154001E31000000000000000000000000000000000B6 +S3154001E32000000000000000000000000000000000A6 +S3154001E3300000000000000000000000000000000096 +S3154001E3400000000000000000000000000000000086 +S3154001E3500000000000000000000000000000000076 +S3154001E3600000000000000000000000000000000066 +S3154001E3700000000000000000000000000000000056 +S3154001E3800000000000000000000000000000000046 +S3154001E3900000000000000000000000000000000036 +S3154001E3A00000000000000000000000000000000026 +S3154001E3B00000000000000000000000000000000016 +S3154001E3C00000000000000000000000000000000006 +S3154001E3D000000000000000000000000000000000F6 +S3154001E3E000000000000000000000000000000000E6 +S3154001E3F000000000000000000000000000000000D6 +S3154001E40000000000000000000000000000000000C5 +S3154001E41000000000000000000000000000000000B5 +S3154001E42000000000000000000000000000000000A5 +S3154001E4300000000000000000000000000000000095 +S3154001E4400000000000000000000000000000000085 +S3154001E4500000000000000000000000000000000075 +S3154001E4600000000000000000000000000000000065 +S3154001E4700000000000000000000000000000000055 +S3154001E4800000000000000000000000000000000045 +S3154001E4900000000000000000000000000000000035 +S3154001E4A00000000000000000000000000000000025 +S3154001E4B00000000000000000000000000000000015 +S3154001E4C00000000000000000000000000000000005 +S3154001E4D000000000000000000000000000000000F5 +S3154001E4E000000000000000000000000000000000E5 +S3154001E4F000000000000000000000000000000000D5 +S3154001E50000000000000000000000000000000000C4 +S3154001E51000000000000000000000000000000000B4 +S3154001E52000000000000000000000000000000000A4 +S3154001E5300000000000000000000000000000000094 +S3154001E5400000000000000000000000000000000084 +S3154001E5500000000000000000000000000000000074 +S3154001E5600000000000000000000000000000000064 +S3154001E5700000000000000000000000000000000054 +S3154001E5800000000000000000000000000000000044 +S3154001E5900000000000000000000000000000000034 +S3154001E5A00000000000000000000000000000000024 +S3154001E5B00000000000000000000000000000000014 +S3154001E5C00000000000000000000000000000000004 +S3154001E5D000000000000000000000000000000000F4 +S3154001E5E000000000000000000000000000000000E4 +S3154001E5F000000000000000000000000000000000D4 +S3154001E60000000000000000000000000000000000C3 +S3154001E61000000000000000000000000000000000B3 +S3154001E62000000000000000000000000000000000A3 +S3154001E6300000000000000000000000000000000093 +S3154001E6400000000000000000000000000000000083 +S3154001E6500000000000000000000000000000000073 +S3154001E6600000000000000000000000000000000063 +S3154001E6700000000000000000000000000000000053 +S3154001E6800000000000000000000000000000000043 +S3154001E6900000000000000000000000000000000033 +S3154001E6A00000000000000000000000000000000023 +S3154001E6B00000000000000000000000000000000013 +S3154001E6C00000000000000000000000000000000003 +S3154001E6D000000000000000000000000000000000F3 +S3154001E6E000000000000000000000000000000000E3 +S3154001E6F000000000000000000000000000000000D3 +S3154001E70000000000000000000000000000000000C2 +S3154001E71000000000000000000000000000000000B2 +S3154001E72000000000000000000000000000000000A2 +S3154001E7300000000000000000000000000000000092 +S3154001E7400000000000000000000000000000000082 +S3154001E7500000000000000000000000000000000072 +S3154001E7600000000000000000000000000000000062 +S3154001E7700000000000000000000000000000000052 +S3154001E7800000000000000000000000000000000042 +S3154001E7900000000000000000000000000000000032 +S3154001E7A00000000000000000000000000000000022 +S3154001E7B00000000000000000000000000000000012 +S3154001E7C00000000000000000000000000000000002 +S3154001E7D000000000000000000000000000000000F2 +S3154001E7E000000000000000000000000000000000E2 +S3154001E7F000000000000000000000000000000000D2 +S3154001E80000000000000000000000000000000000C1 +S3154001E81000000000000000000000000000000000B1 +S3154001E82000000000000000000000000000000000A1 +S3154001E8300000000000000000000000000000000091 +S3154001E8400000000000000000000000000000000081 +S3154001E8500000000000000000000000000000000071 +S3154001E8600000000000000000000000000000000061 +S3154001E8700000000000000000000000000000000051 +S3154001E8800000000000000000000000000000000041 +S3154001E8900000000000000000000000000000000031 +S3154001E8A00000000000000000000000000000000021 +S3154001E8B00000000000000000000000000000000011 +S3154001E8C00000000000000000000000000000000001 +S3154001E8D000000000000000000000000000000000F1 +S3154001E8E000000000000000000000000000000000E1 +S3154001E8F000000000000000000000000000000000D1 +S3154001E90000000000000000000000000000000000C0 +S3154001E91000000000000000000000000000000000B0 +S3154001E92000000000000000000000000000000000A0 +S3154001E9300000000000000000000000000000000090 +S3154001E9400000000000000000000000000000000080 +S3154001E9500000000000000000000000000000000070 +S3154001E9600000000000000000000000000000000060 +S3154001E9700000000000000000000000000000000050 +S3154001E9800000000000000000000000000000000040 +S3154001E9900000000000000000000000000000000030 +S3154001E9A00000000000000000000000000000000020 +S3154001E9B00000000000000000000000000000000010 +S3154001E9C00000000000000000000000000000000000 +S3154001E9D000000000000000000000000000000000F0 +S3154001E9E000000000000000000000000000000000E0 +S3154001E9F000000000000000000000000000000000D0 +S3154001EA0000000000000000000000000000000000BF +S3154001EA1000000000000000000000000000000000AF +S3154001EA20000000000000000000000000000000009F +S3154001EA30000000000000000000000000000000008F +S3154001EA40000000000000000000000000000000007F +S3154001EA50000000000000000000000000000000006F +S3154001EA60000000000000000000000000000000005F +S3154001EA70000000000000000000000000000000004F +S3154001EA80000000000000000000000000000000003F +S3154001EA90000000000000000000000000000000002F +S3154001EAA0000000000000000000000000000000001F +S3154001EAB0000000000000000000000000000000000F +S3154001EAC000000000000000000000000000000000FF +S3154001EAD000000000000000000000000000000000EF +S3154001EAE000000000000000000000000000000000DF +S3154001EAF000000000000000000000000000000000CF +S3154001EB0000000000000000000000000000000000BE +S3154001EB1000000000000000000000000000000000AE +S3154001EB20000000000000000000000000000000009E +S3154001EB30000000000000000000000000000000008E +S3154001EB40000000000000000000000000000000007E +S3154001EB50000000000000000000000000000000006E +S3154001EB60000000000000000000000000000000005E +S3154001EB70000000000000000000000000000000004E +S3154001EB80000000000000000000000000000000003E +S3154001EB90000000000000000000000000000000002E +S3154001EBA0000000000000000000000000000000001E +S3154001EBB0000000000000000000000000000000000E +S3154001EBC000000000000000000000000000000000FE +S3154001EBD000000000000000000000000000000000EE +S3154001EBE000000000000000000000000000000000DE +S3154001EBF000000000000000000000000000000000CE +S3154001EC0000000000000000000000000000000000BD +S3154001EC1000000000000000000000000000000000AD +S3154001EC20000000000000000000000000000000009D +S3154001EC30000000000000000000000000000000008D +S3154001EC40000000000000000000000000000000007D +S3154001EC50000000000000000000000000000000006D +S3154001EC60000000000000000000000000000000005D +S3154001EC70000000000000000000000000000000004D +S3154001EC80000000000000000000000000000000003D +S3154001EC90000000000000000000000000000000002D +S3154001ECA0000000000000000000000000000000001D +S3154001ECB0000000000000000000000000000000000D +S3154001ECC000000000000000000000000000000000FD +S3154001ECD000000000000000000000000000000000ED +S3154001ECE000000000000000000000000000000000DD +S3154001ECF000000000000000000000000000000000CD +S3154001ED0000000000000000000000000000000000BC +S3154001ED1000000000000000000000000000000000AC +S3154001ED20000000000000000000000000000000009C +S3154001ED30000000000000000000000000000000008C +S3154001ED40000000000000000000000000000000007C +S3154001ED50000000000000000000000000000000006C +S3154001ED60000000000000000000000000000000005C +S3154001ED70000000000000000000000000000000004C +S3154001ED80000000000000000000000000000000003C +S3154001ED90000000000000000000000000000000002C +S3154001EDA0000000000000000000000000000000001C +S3154001EDB0000000000000000000000000000000000C +S3154001EDC000000000000000000000000000000000FC +S3154001EDD000000000000000000000000000000000EC +S3154001EDE000000000000000000000000000000000DC +S3154001EDF000000000000000000000000000000000CC +S3154001EE0000000000000000000000000000000000BB +S3154001EE1000000000000000000000000000000000AB +S3154001EE20000000000000000000000000000000009B +S3154001EE30000000000000000000000000000000008B +S3154001EE40000000000000000000000000000000007B +S3154001EE50000000000000000000000000000000006B +S3154001EE60000000000000000000000000000000005B +S3154001EE70000000000000000000000000000000004B +S3154001EE80000000000000000000000000000000003B +S3154001EE90000000000000000000000000000000002B +S3154001EEA0000000000000000000000000000000001B +S3154001EEB0000000000000000000000000000000000B +S3154001EEC000000000000000000000000000000000FB +S3154001EED000000000000000000000000000000000EB +S3154001EEE000000000000000000000000000000000DB +S3154001EEF000000000000000000000000000000000CB +S3154001EF0000000000000000000000000000000000BA +S3154001EF1000000000000000000000000000000000AA +S3154001EF20000000000000000000000000000000009A +S3154001EF30000000000000000000000000000000008A +S3154001EF40000000000000000000000000000000007A +S3154001EF50000000000000000000000000000000006A +S3154001EF60000000000000000000000000000000005A +S3154001EF70000000000000000000000000000000004A +S3154001EF80000000000000000000000000000000003A +S3154001EF90000000000000000000000000000000002A +S3154001EFA0000000000000000000000000000000001A +S3154001EFB0000000000000000000000000000000000A +S3154001EFC000000000000000000000000000000000FA +S3154001EFD000000000000000000000000000000000EA +S3154001EFE000000000000000000000000000000000DA +S3154001EFF000000000000000000000000000000000CA +S3154001F00000000000000000000000000000000000B9 +S3154001F01000000000000000000000000000000000A9 +S3154001F0200000000000000000000000000000000099 +S3154001F0300000000000000000000000000000000089 +S3154001F0400000000000000000000000000000000079 +S3154001F0500000000000000000000000000000000069 +S3154001F0600000000000000000000000000000000059 +S3154001F0700000000000000000000000000000000049 +S3154001F0800000000000000000000000000000000039 +S3154001F0900000000000000000000000000000000029 +S3154001F0A00000000000000000000000000000000019 +S3154001F0B00000000000000000000000000000000009 +S3154001F0C000000000000000000000000000000000F9 +S3154001F0D000000000000000000000000000000000E9 +S3154001F0E000000000000000000000000000000000D9 +S3154001F0F000000000000000000000000000000000C9 +S3154001F10000000000000000000000000000000000B8 +S3154001F11000000000000000000000000000000000A8 +S3154001F1200000000000000000000000000000000098 +S3154001F1300000000000000000000000000000000088 +S3154001F1400000000000000000000000000000000078 +S3154001F1500000000000000000000000000000000068 +S3154001F1600000000000000000000000000000000058 +S3154001F1700000000000000000000000000000000048 +S3154001F1800000000000000000000000000000000038 +S3154001F1900000000000000000000000000000000028 +S3154001F1A00000000000000000000000000000000018 +S3154001F1B00000000000000000000000000000000008 +S3154001F1C000000000000000000000000000000000F8 +S3154001F1D000000000000000000000000000000000E8 +S3154001F1E000000000000000000000000000000000D8 +S3154001F1F000000000000000000000000000000000C8 +S3154001F20000000000000000000000000000000000B7 +S3154001F21000000000000000000000000000000000A7 +S3154001F2200000000000000000000000000000000097 +S3154001F2300000000000000000000000000000000087 +S3154001F2400000000000000000000000000000000077 +S3154001F2500000000000000000000000000000000067 +S3154001F2600000000000000000000000000000000057 +S3154001F2700000000000000000000000000000000047 +S3154001F2800000000000000000000000000000000037 +S3154001F2900000000000000000000000000000000027 +S3154001F2A00000000000000000000000000000000017 +S3154001F2B00000000000000000000000000000000007 +S3154001F2C000000000000000000000000000000000F7 +S3154001F2D000000000000000000000000000000000E7 +S3154001F2E000000000000000000000000000000000D7 +S3154001F2F000000000000000000000000000000000C7 +S3154001F30000000000000000000000000000000000B6 +S3154001F31000000000000000000000000000000000A6 +S3154001F3200000000000000000000000000000000096 +S3154001F3300000000000000000000000000000000086 +S3154001F3400000000000000000000000000000000076 +S3154001F3500000000000000000000000000000000066 +S3154001F3600000000000000000000000000000000056 +S3154001F3700000000000000000000000000000000046 +S3154001F3800000000000000000000000000000000036 +S3154001F3900000000000000000000000000000000026 +S3154001F3A00000000000000000000000000000000016 +S3154001F3B00000000000000000000000000000000006 +S3154001F3C000000000000000000000000000000000F6 +S3154001F3D000000000000000000000000000000000E6 +S3154001F3E000000000000000000000000000000000D6 +S3154001F3F000000000000000000000000000000000C6 +S3154001F40000000000000000000000000000000000B5 +S3154001F41000000000000000000000000000000000A5 +S3154001F4200000000000000000000000000000000095 +S3154001F4300000000000000000000000000000000085 +S3154001F4400000000000000000000000000000000075 +S3154001F4500000000000000000000000000000000065 +S3154001F4600000000000000000000000000000000055 +S3154001F4700000000000000000000000000000000045 +S3154001F4800000000000000000000000000000000035 +S3154001F4900000000000000000000000000000000025 +S3154001F4A00000000000000000000000000000000015 +S3154001F4B00000000000000000000000000000000005 +S3154001F4C000000000000000000000000000000000F5 +S3154001F4D000000000000000000000000000000000E5 +S3154001F4E000000000000000000000000000000000D5 +S3154001F4F000000000000000000000000000000000C5 +S3154001F50000000000000000000000000000000000B4 +S3154001F51000000000000000000000000000000000A4 +S3154001F5200000000000000000000000000000000094 +S3154001F5300000000000000000000000000000000084 +S3154001F5400000000000000000000000000000000074 +S3154001F5500000000000000000000000000000000064 +S3154001F5600000000000000000000000000000000054 +S3154001F5700000000000000000000000000000000044 +S3154001F5800000000000000000000000000000000034 +S3154001F5900000000000000000000000000000000024 +S3154001F5A00000000000000000000000000000000014 +S3154001F5B00000000000000000000000000000000004 +S3154001F5C000000000000000000000000000000000F4 +S3154001F5D000000000000000000000000000000000E4 +S3154001F5E000000000000000000000000000000000D4 +S3154001F5F000000000000000000000000000000000C4 +S3154001F60000000000000000000000000000000000B3 +S3154001F61000000000000000000000000000000000A3 +S3154001F6200000000000000000000000000000000093 +S3154001F6300000000000000000000000000000000083 +S3154001F6400000000000000000000000000000000073 +S3154001F6500000000000000000000000000000000063 +S3154001F6600000000000000000000000000000000053 +S3154001F6700000000000000000000000000000000043 +S3154001F6800000000000000000000000000000000033 +S3154001F6900000000000000000000000000000000023 +S3154001F6A00000000000000000000000000000000013 +S3154001F6B00000000000000000000000000000000003 +S3154001F6C000000000000000000000000000000000F3 +S3154001F6D000000000000000000000000000000000E3 +S3154001F6E000000000000000000000000000000000D3 +S3154001F6F000000000000000000000000000000000C3 +S3154001F70000000000000000000000000000000000B2 +S3154001F71000000000000000000000000000000000A2 +S3154001F7200000000000000000000000000000000092 +S3154001F7300000000000000000000000000000000082 +S3154001F7400000000000000000000000000000000072 +S3154001F7500000000000000000000000000000000062 +S3154001F7600000000000000000000000000000000052 +S3154001F7700000000000000000000000000000000042 +S3154001F7800000000000000000000000000000000032 +S3154001F7900000000000000000000000000000000022 +S3154001F7A00000000000000000000000000000000012 +S3154001F7B00000000000000000000000000000000002 +S3154001F7C000000000000000000000000000000000F2 +S3154001F7D000000000000000000000000000000000E2 +S3154001F7E000000000000000000000000000000000D2 +S3154001F7F000000000000000000000000000000000C2 +S3154001F80000000000000000000000000000000000B1 +S3154001F81000000000000000000000000000000000A1 +S3154001F8200000000000000000000000000000000091 +S3154001F8300000000000000000000000000000000081 +S3154001F8400000000000000000000000000000000071 +S3154001F8500000000000000000000000000000000061 +S3154001F8600000000000000000000000000000000051 +S3154001F8700000000000000000000000000000000041 +S3154001F8800000000000000000000000000000000031 +S3154001F8900000000000000000000000000000000021 +S3154001F8A00000000000000000000000000000000011 +S3154001F8B00000000000000000000000000000000001 +S3154001F8C000000000000000000000000000000000F1 +S3154001F8D000000000000000000000000000000000E1 +S3154001F8E000000000000000000000000000000000D1 +S3154001F8F000000000000000000000000000000000C1 +S3154001F90000000000000000000000000000000000B0 +S3154001F91000000000000000000000000000000000A0 +S3154001F9200000000000000000000000000000000090 +S3154001F9300000000000000000000000000000000080 +S3154001F9400000000000000000000000000000000070 +S3154001F9500000000000000000000000000000000060 +S3154001F9600000000000000000000000000000000050 +S3154001F9700000000000000000000000000000000040 +S3154001F9800000000000000000000000000000000030 +S3154001F9900000000000000000000000000000000020 +S3154001F9A00000000000000000000000000000000010 +S3154001F9B00000000000000000000000000000000000 +S3154001F9C000000000000000000000000000000000F0 +S3154001F9D000000000000000000000000000000000E0 +S3154001F9E000000000000000000000000000000000D0 +S3154001F9F000000000000000000000000000000000C0 +S3154001FA0000000000000000000000000000000000AF +S3154001FA10000000000000000000000000000000009F +S3154001FA20000000000000000000000000000000008F +S3154001FA30000000000000000000000000000000007F +S3154001FA40000000000000000000000000000000006F +S3154001FA50000000000000000000000000000000005F +S3154001FA60000000000000000000000000000000004F +S3154001FA70000000000000000000000000000000003F +S3154001FA80000000000000000000000000000000002F +S3154001FA90000000000000000000000000000000001F +S3154001FAA0000000000000000000000000000000000F +S3154001FAB000000000000000000000000000000000FF +S3154001FAC000000000000000000000000000000000EF +S3154001FAD000000000000000000000000000000000DF +S3154001FAE000000000000000000000000000000000CF +S3154001FAF000000000000000000000000000000000BF +S3154001FB0000000000000000000000000000000000AE +S3154001FB10000000000000000000000000000000009E +S3154001FB20000000000000000000000000000000008E +S3154001FB30000000000000000000000000000000007E +S3154001FB40000000000000000000000000000000006E +S3154001FB50000000000000000000000000000000005E +S3154001FB60000000000000000000000000000000004E +S3154001FB70000000000000000000000000000000003E +S3154001FB80000000000000000000000000000000002E +S3154001FB90000000000000000000000000000000001E +S3154001FBA0000000000000000000000000000000000E +S3154001FBB000000000000000000000000000000000FE +S3154001FBC000000000000000000000000000000000EE +S3154001FBD000000000000000000000000000000000DE +S3154001FBE000000000000000000000000000000000CE +S3154001FBF000000000000000000000000000000000BE +S3154001FC0000000000000000000000000000000000AD +S3154001FC10000000000000000000000000000000009D +S3154001FC20000000000000000000000000000000008D +S3154001FC30000000000000000000000000000000007D +S3154001FC40000000000000000000000000000000006D +S3154001FC50000000000000000000000000000000005D +S3154001FC60000000000000000000000000000000004D +S3154001FC70000000000000000000000000000000003D +S3154001FC80000000000000000000000000000000002D +S3154001FC90000000000000000000000000000000001D +S3154001FCA0000000000000000000000000000000000D +S3154001FCB000000000000000000000000000000000FD +S3154001FCC000000000000000000000000000000000ED +S3154001FCD000000000000000000000000000000000DD +S3154001FCE000000000000000000000000000000000CD +S3154001FCF000000000000000000000000000000000BD +S3154001FD0000000000000000000000000000000000AC +S3154001FD10000000000000000000000000000000009C +S3154001FD20000000000000000000000000000000008C +S3154001FD30000000000000000000000000000000007C +S3154001FD40000000000000000000000000000000006C +S3154001FD50000000000000000000000000000000005C +S3154001FD60000000000000000000000000000000004C +S3154001FD70000000000000000000000000000000003C +S3154001FD80000000000000000000000000000000002C +S3154001FD90000000000000000000000000000000001C +S3154001FDA0000000000000000000000000000000000C +S3154001FDB000000000000000000000000000000000FC +S3154001FDC000000000000000000000000000000000EC +S3154001FDD000000000000000000000000000000000DC +S3154001FDE000000000000000000000000000000000CC +S3154001FDF000000000000000000000000000000000BC +S3154001FE0000000000000000000000000000000000AB +S3154001FE10000000000000000000000000000000009B +S3154001FE20000000000000000000000000000000008B +S3154001FE30000000000000000000000000000000007B +S3154001FE40000000000000000000000000000000006B +S3154001FE50000000000000000000000000000000005B +S3154001FE60000000000000000000000000000000004B +S3154001FE70000000000000000000000000000000003B +S3154001FE80000000000000000000000000000000002B +S3154001FE90000000000000000000000000000000001B +S3154001FEA0000000000000000000000000000000000B +S3154001FEB000000000000000000000000000000000FB +S3154001FEC000000000000000000000000000000000EB +S3154001FED000000000000000000000000000000000DB +S3154001FEE000000000000000000000000000000000CB +S3154001FEF000000000000000000000000000000000BB +S3154001FF0000000000000000000000000000000000AA +S3154001FF10000000000000000000000000000000009A +S3154001FF20000000000000000000000000000000008A +S3154001FF30000000000000000000000000000000007A +S3154001FF40000000000000000000000000000000006A +S3154001FF50000000000000000000000000000000005A +S3154001FF60000000000000000000000000000000004A +S3154001FF70000000000000000000000000000000003A +S3154001FF80000000000000000000000000000000002A +S3154001FF90000000000000000000000000000000001A +S3154001FFA0000000000000000000000000000000000A +S3154001FFB000000000000000000000000000000000FA +S3154001FFC000000000000000000000000000000000EA +S3154001FFD000000000000000000000000000000000DA +S3154001FFE000000000000000000000000000000000CA +S3154001FFF000000000000000000000000000000000BA +S315400200000000000100000000000000002000000087 +S315400200100000000000000000000000000000000098 S315400200200000000000000000000000000000000088 S315400200300000000000000000000000000000000078 S315400200400000000000000000000000000000000068 -S315400200500000000000000000000000010000000057 +S315400200500000000000000001000000000000000057 S315400200600000000000000000000000000000000048 S315400200700000000000000000000000000000000038 S315400200800000000000000000000000000000000028 -S315400200900000000000000000000000000000000117 +S315400200900000000000000000000000010000000017 S315400200A00000000000000000000000000000000008 S315400200B000000000000000000000000000000000F8 S315400200C000000000000000000000000000000000E8 -S315400200D000000000000000000000000000000000D8 -S315400200E00000000100000000000000410000000086 -S315400200F0343074693934612B3079676979753035B2 -S315400201007968617035796934682B612B69697978C8 -S315400201106869346B35396A30713930356A6B6F7953 -S3154002012070686F70746A72686961346979302B34A9 -S315400201300000000000000000000000010000000076 -S3154002014040000000000000004008000000000000DF -S31540020150401800000000000080000000000000007F -S315400201600000000000000000BFF000000000000098 -S31540020170BF800000000000000000000000000000F8 -S315400201800000000000000000000000000000000027 -S315400201903FF00000000000004008000000000000A0 -S315400201A03FF0000040000000000000000000000098 -S315400201B03F800000404000000000000000000000B8 -S315400201C000000000000000000000000000000000E7 -S315400201D0000000000000000048000001000000008E -S315400201E0480000000000000046C000000000000079 -S315400201F03FF0000000000000400000000000000048 -S3154002020040080000000000003F800000000000009F -S31540020210529000000000000052900FF807F60DEBD6 -S3154002022052901FE03F61BAD052902FB8D4E30F48A4 -S3154002023052903F81F636B80C52904F3BD03C0A64FE -S3154002024052905EE68EFAD48B52906E825DA8FC2B5B -S3154002025052907E0F66AFED0752908D8DD3B1D9AADB -S3154002026052909CFDCD8ED0095290AC5F7C69A3C85A -S315400202705290BBB307ACAFDB5290CAF8960E710DE3 -S315400202805290DA304D95FB065290E95A539F492CCB -S315400202905290F876CCDF6CD952910785DD689A295F -S315400202A052911687A8AE14A35291257C5187FD0917 -S315400202B052913463FA37014E5291433EC467EFFB83 -S315400202C05291520CD1372FEB529160CE41341D746C -S315400202D052916F8334644DF952917E2BCA46BAB914 -S315400202E052918CC821D6D3E352919B58598F7C9F09 -S315400202F05291A9DC8F6DF1045291B854E0F496A064 -S315400203005291C6C16B2DB8705291D5224AAE2EE19A -S315400203105291E3779B97F4A85291F1C1799CA8FF39 -S31540020320529200000000000052920E33499A21A9CF -S3154002033052921C5B70D9F82452922A788FC76DE587 -S315400203405292388AC0059C28529246921AD4EA4959 -S315400203505292548EB9151E8552926280B347609668 -S315400203605292706821902E9A52927E451BB944C38E -S3154002037052928C17B9337834529299E01118857596 -S315400203805292A79E3A2CD2E65292B5524AE1278E13 -S315400203905292C2FC595456A75292D09C7B54E03E8C -S315400203A05292DE32C66287415292EBBF4FAFDD4B6D -S315400203B05292F9422C23C47E529306BB705AE7C32B -S315400203C05293142B30A929AB52932191811B0A4196 -S315400203D052932EEE7577041652933C42213EE0C963 -S315400203E05293498C97B10540529356CDEBC9B5E22B -S315400203F0529364063044530652937135779C8DCBA3 -S3154002040052937E5BD40F95A152938B79579D3EAB07 -S315400204105293988E1409212E5293A59A1ADBB257FB -S315400204205293B29D7D6356625293BF984CB56C7798 -S315400204305293CC8A99AF54535293D97474F76DF24E -S315400204405293E655EEFE13675293F32F17FE8D0431 -S31540020450529400000000000052940CC8B6D657C20F -S31540020460529419894C2329F052942641CF569572BB -S31540020470529432F24FB01C7A52943F9ADC3F79CE74 -S3154002048052944C3B83E57153529458D455549C1A1A -S31540020490529465655F122FF6529471EEAF76C2C6DC -S315400204A052947E7054AF098952948AEA5CBC935F37 -S315400204B05294975CD57680885294A3C7CC8A358A63 -S315400204C05294B02B4F7C0A885294BC876BA7F6ECA9 -S315400204D05294C8DC2E4239805294D529A457FCFC4A -S315400204E05294E16FDACFF9375294EDAEDE6B10FEDD -S315400204F05294F9E6BBC4ECB3529506177F5491BBAE -S3154002050052951241356CF6E052951E63EA3D95B01E -S3154002051052952A7FA9D2F8EA529536948017481006 -S31540020520529542A278D2D03652954EA99FAC8A0FA6 -S3154002053052955AAA002A9D5A529566A3A5B2E1B18E -S31540020540529572969B8B5CD852957E82ECDABE8D22 -S3154002055052958A68A4A8D9F352959647CDDF1CA531 -S315400205605295A220734903775295ADF29F948CFB24 -S315400205705295B9BE5D52A9DA5295C583B6F7AB0319 -S315400205805295D142B6DBADC55295DCFB673B05DFE2 -S315400205905295E8ADD236A58F5295F45A01D483B41A -S315400205A0529600000000000052960B9FD68A455490 -S315400205B0529617398F2AAA48529622CD337F0FE890 -S315400205C052962E5ACD0C3EBE529639E2653E421B9B -S315400205D0529645640568C1C3529650DFB6C759F470 -S315400205E052965C55827DF1D2529667C57199104BEF -S315400205F05296732F8D0E2F7752967E93DDBC0E73D5 -S31540020600529689F26C6B01D05296954B41CD4293EC -S315400206100BC0A4068F346C9B0BC093731C185447B3 -S315400206200BC083008E183C230BC072AE83A9704A5E -S315400206300BC0627C9CC166FF0BC0526A7ACE64A430 -S315400206400BC04277C0B04ADA0BC032A412B191A0B5 -S315400206500BC022EF168069500BC0135873280473DF -S315400206600BC003DFD10A08480BBFE909B3B04632D3 -S315400206700BBFCA8E711B8E880BBFAC4D32D4143061 -S315400206800BBF8E4553D34B1B0BBF7076318237EF70 -S315400206900BBF52DF2BADF99C0BBF357FA47C936C0D -S315400206A00BBF18570061F5EB0BBEFB64A61545154B -S315400206B00BBEDEA7FE865A2B0BBEC22074D37FBC6E -S315400206C00BBEA5CD763F66690BBE89AE722750F04A -S315400206D00BBE6DC2D9F976230BBE520A212B976CFB -S315400206E00BBE3683BD31CAA20BBE1B2F257575CAFA -S315400206F00BBE000BD34C7BAF0BBDE51941F097FE09 -S315400207000BBDCA56EE76E9D00BBDAFC457C7AB7325 -S315400207100BBD9560FE9616690BBD7B2C65587275AE -S315400207200BBD612610404EC00BBD474D8532E409D4 -S315400207300BBD2DA24BC19EDF0BBD1423ED22D10171 -S315400207400BBCFAD1F42A88E40BBCE1ABED438E80B4 -S315400207500BBCC8B1666884820BBCAFE1EF1D2D01AC -S315400207600BBC973D1867D0EF0BBC7EC274CAC962F8 -S315400207700BBC6671983E29FE0BBC4E4A18298BA9C2 -S315400207800BBC364B8B5DF6DB0BBC1E758A0FECBF82 -S315400207900BBC06C7ADD18E7E0BBBEF41918CE1F609 -S315400207A00BBBD7E2D17E33360BBBC0AB0B2E921BB3 -S315400207B00BBBA999DD6E6B650BBB92AEE8503CA7AD -S315400207C00BBB7BE9CD2362720BBB654A2E6F002CB5 -S315400207D00BBB4ECFAFED00FE0BBB3879F685313FF2 -S315400207E00BBB2248A8486FDE0BBB0C3B6C6BF73B3E -S315400207F00BBAF651EB44BCEE0BBAE08BCE42E7F1B4 -S315400208000BBACAE8BFED5CC00BBAB5686BDD5EDDFC -S315400208100BBAA00A7EBA475E0BBA8ACEA6354FEB12 -S315400208200BBA75B4910571DB0BBA60BBEEE358EFB8 -S315400208300BBA4BE4708569410BBA372DC79BD7FE7D -S315400208400BBA2297A6CCD68C0BBA0E21C1B0CFA03A -S315400208500BB9F9CBCCCEB6050BB9E5957D98648B31 -S315400208600BB9D17E8A670EE70BB9BD86AA77C3104C -S315400208700BB9A9AD95E7FAC40BB995F305B23CE5B8 -S315400208800BB98256B3AACE570BB96ED85A7C7206AA -S315400208900BB95B77B5A537C80BB94834817359CCC8 -S315400208A00BB9350E7B02284D0BB922056037032E54 -S315400208B00BB90F18EFBE614A0BB8FC48E908E522AE -S315400208C00BB8E9950C487EA90BB8D6FD1A6D99E886 -S315400208D00BB8C480D5245A340BB8B21FFED1E1BC42 -S315400208E00BB89FDA5A91A5260BB88DAFAC32CB0A1C -S315400208F00BB87B9FB83596F60BB869AA43C8DFE1B9 -S315400209000BB857CF14C791B50BB8460DF1B639C6D9 -S315400209100BB83466A1C09DF90BB822D8ECB75E6E0F -S315400209200BB811649B0DA16B0BB8000975D6C9595A -S315400209300BB7EEC746C434A50BB7DD9DD823075285 -S315400209400BB7CC8CF4D9FE010BB7BB9468674A50FF -S315400209500BB7AAB3FEDE78540BB799EB84E65D0C6F -S315400209600BB7893AC7B70D960BB778A19517DF0132 -S315400209700BB7681FBB5D6E910BB757B50967B24C93 -S315400209800BB747614EA011A20BB737245AF786140C -S315400209900BB726FDFEE4C3A00BB716EE0B6268E862 -S315400209A00BB706F451ED36CE0BB6F710A4824F8044 -S315400209B00BB6E742D59D7CB40BB6D78AB8377D0EC7 -S315400209C00BB6C7E81FC458720BB6B85AE031BB32F1 -S315400209D00BB6A8E2CDE557F90BB6997FBDBB50459C -S315400209E00BB68A318504A35C0BB67AF7F985A39BCD -S315400209F00BB66BD2F17471FF0BB65CC243777FCEF6 -S31540020A000BB64DC5C6A416420BB63EDD527CE4116A -S31540020A100BB63008BEF090CF0BB62147E45855EBE3 -S31540020A200BB6129A9B769D520BB60400BD75A584F1 -S31540020A300BB5F57A23E62B070BB5E706A8BE172CAE -S31540020A400BB5D8A6265733FF0BB5CA58776DE54B7B -S31540020A500BB5BC1D771FE6AB0BB5ADF500EB0E78BB -S31540020A600BB59FDEF0AC15940BB591DB229D63F27C -S31540020A700BB583E97355E1C10BB57609BFC7CD32D4 -S31540020A800BB5683BE53F94B80BB55A7FC162B5B624 -S31540020A900BB54CD5322E9F7F0BB53F3C15F79AA12D -S31540020AA00BB531B44B67B45A0BB5243DB17DAE306C -S31540020AB00BB516D8278BF18F0BB509838D37876710 -S31540020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB69 -S31540020AD00BB4E1EA1D1EA6680BB4D4D8040308E59C -S31540020AE00BB4C7D63D722B370BB4BAE4AAEBF9481E -S31540020AF00BB4AE032E3C2D7E0BB4A131A97965C948 -S31540020B000BB4946FFF043C1C0BB487BE118662364D -S31540020B100BB47B1BC3F1C0BF0BB46E88F97F999BA4 -S31540020B200BB4620595AFAD730BB455917C476454D3 -S31540020B300BB4492C9150F96C0BB43CD6B91AA9C8DE -S31540020B400BB4308FD835E60B0BB42457D3768716C1 -S31540020B500BB4182E8FF205900BB40C13F2FEB43B75 -S31540020B600BB40007E232FD1F0BB3F40A4364A167DC -S31540020B700BB3E81AFCA7FBF00BB3DC39F44F468AF9 -S31540020B800BB3D06710E9E1C30BB3C4A239439F4FFD -S31540020B900BB3B8EB54640EF10BB3AD42498DCDDFC6 -S31540020BA00BB3A1A7003DD89B0BB39619602ADF2B46 -S31540020BB00BB38A9951449BB80BB37F26BBB32B79AF -S31540020BC00BB373C187D669EA0BB368699E454E4437 -S31540020BD00BB35D1EE7CD4B2D0BB351E14D71B09872 -S31540020BE00BB346B0B86B0FC30BB33B8D1226A15A5B -S31540020BF00BB330764445ADAC0BB3256C389CF6EB63 -S31540020C000BB31A6ED934256E0BB30F7E104535F5EC -S31540020C100BB30499C83BE9D60BB2F9C1EBB53923FC -S31540020C200BB2EEF6657EC6AA0BB2E437209655D5D0 -S31540020C300BB2D984082942630BB2CEDD0793F9E79A -S31540020C400BB2C4420A6177190BB2B9B2FC4ABEDA98 -S31540020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1F9 -S31540020C600BB29A4CA48F90E30BB28FEC8BA9777997 -S31540020C700BB28597FF1D694D0BB27B4EEBAE48DD3D -S31540020C800BB271113E499CEE0BB266DEE4071AA81E -S31540020C900BB25CB7CA2831380BB2529BDE1796F7B5 -S31540020CA00BB2488B0D68D8030BB23E8545D7E65A40 -S31540020CB00BB2348A7548AB540BB22A9A89C69A97B4 -S31540020CC00BB220B5718446610BB216DB1ADAF53FD8 -S31540020CD00BB20D0B744A39100BB203466C77876C14 -S31540020CE00BB1F98BF22DD3490BB1EFDBF45D27FF44 -S31540020CF00BB1E636621A457E0BB1DC9B2A9E3DD588 -S31540020D000BB1D30A3D4613EE0BB1C98389925B817F -S31540020D100BB1C006FF26DA3F0BB1B6948DCA2A281C -S31540020D200BB1AD2C25655D0F0BB1A3CDB603A13D2D -S31540020D300BB19A792FD1E7410BB1912E831E88D2FE -S31540020D400BB187EDA058F0D60BB17EB6781144733D -S31540020D500BB17588FAF80D3A0BB16C6519DDE45D95 -S31540020D600BB1634AC5B31EEF0BB15A39EF877B28E5 -S31540020D700BB151328889CEAE0BB148348207B5DB0E -S31540020D800BB13F3FCD6D43FF0BB136545C44B49A31 -S31540020D900BB12D7220361D870BB124990B07221BEE -S31540020DA00BB11BC90E9AA72D0BB113021CF0880F6B -S31540020DB00BB10A4428254C650BB1018F2271DEE541 -S31540020DC00BB0F8E2FE2B44F40BB0F03FADC2572312 -S31540020DD00BB0E7A523C37A850BB0DF1352D65AD997 -S31540020DE00BB0D68A2DBDA58C0BB0CE09A756C589A8 -S31540020DF00BB0C591B2999FDB0BB0BD2242985115FB -S31540020E000BB0B4BB4A7EEB870BB0AC5CBD933636B7 -S31540020E1065300000653010006530200065303000D6 -S31540020E2065304000653050006530600065307000C6 -S31540020E3065308000653090006530A0006530B000B6 -S31540020E406530C0006530D0006530E0006530F000A6 -S31540020E506531000065311000653120006531300092 -S31540020E606531400065315000653160006531700082 -S31540020E7065318000653190006531A0006531B00072 -S31540020E806531C0006531D0006531E0006531F00062 -S31540020E90653200006532100065322000653230004E -S31540020EA0653240006532500065326000653270003E -S31540020EB065328000653290006532A0006532B0002E -S31540020EC06532C0006532D0006532E0006532F0001E -S31540020ED0653300006533100065332000653330000A -S31540020EE065334000653350006533600065337000FA -S31540020EF065338000653390006533A0006533B000EA -S31540020F006533C0006533D0006533E0006533F000D9 -S31540020F1065340000653410006534200065343000C5 -S31540020F2065344000653450006534600065347000B5 -S31540020F3065348000653490006534A0006534B000A5 -S31540020F406534C0006534D0006534E0006534F00095 -S31540020F506535000065351000653520006535300081 -S31540020F606535400065355000653560006535700071 -S31540020F7065358000653590006535A0006535B00061 -S31540020F806535C0006535D0006535E0006535F00051 -S31540020F90653600006536100065362000653630003D -S31540020FA0653640006536500065366000653670002D -S31540020FB065368000653690006536A0006536B0001D -S31540020FC06536C0006536D0006536E0006536F0000D -S31540020FD065370000653710006537200065373000F9 -S31540020FE065374000653750006537600065377000E9 -S31540020FF065378000653790006537A0006537B000D9 -S315400210006537C0006537D0006537E0006537F000C8 -S3154002101065380000653810006538200065383000B4 -S3154002102065384000653850006538600065387000A4 -S3154002103065388000653890006538A0006538B00094 -S315400210406538C0006538D0006538E0006538F00084 -S315400210506539000065391000653920006539300070 -S315400210606539400065395000653960006539700060 -S3154002107065398000653990006539A0006539B00050 -S315400210806539C0006539D0006539E0006539F00040 -S31540021090653A0000653A1000653A2000653A30002C -S315400210A0653A4000653A5000653A6000653A70001C -S315400210B0653A8000653A9000653AA000653AB0000C -S315400210C0653AC000653AD000653AE000653AF000FC -S315400210D0653B0000653B1000653B2000653B3000E8 -S315400210E0653B4000653B5000653B6000653B7000D8 -S315400210F0653B8000653B9000653BA000653BB000C8 -S31540021100653BC000653BD000653BE000653BF000B7 -S31540021110653C0000653C1000653C2000653C3000A3 -S31540021120653C4000653C5000653C6000653C700093 -S31540021130653C8000653C9000653CA000653CB00083 -S31540021140653CC000653CD000653CE000653CF00073 -S31540021150653D0000653D1000653D2000653D30005F -S31540021160653D4000653D5000653D6000653D70004F -S31540021170653D8000653D9000653DA000653DB0003F -S31540021180653DC000653DD000653DE000653DF0002F -S31540021190653E0000653E1000653E2000653E30001B -S315400211A0653E4000653E5000653E6000653E70000B -S315400211B0653E8000653E9000653EA000653EB000FB -S315400211C0653EC000653ED000653EE000653EF000EB -S315400211D0653F0000653F1000653F2000653F3000D7 -S315400211E0653F4000653F5000653F6000653F7000C7 -S315400211F0653F8000653F9000653FA000653FB000B7 -S31540021200653FC000653FD000653FE000653FF000A6 -S315400212104200000000000000400FFFFFFFFFFFFFFB -S315400212204200000000200000420FFFFFFFFFFFFFC9 -S3154002123040000000000000004210000000080000CC -S3154002124042000000000000013EB000000000000124 -S315400212504200000000000002420F484C0137D2080B -S31540021260C20E780F256007AB41BA079B7AF94BA0AD -S315400212704201484C0137D208420E780F256007AB2F -S315400212804217E02D934BECDA420F484C0137D20815 -S31540021290C21E780F256007ABC20DA7D249883D4EC4 -S315400212A0421F484C0137D208C20E780F256007AB61 -S315400212B042100C446E87CE32C03340AB371208918F -S315400212C00000000000000000C03340AB3712089116 -S315400212D00000000000000000C29E7A0F236007A6AD -S315400212E0C29E7A0F236007A66F3F484C0137D20849 -S315400212F06E2E780F256007AB6F3F485B3D3F64B863 -S315400213006F3F484C0137D208EE2E780F256007AB67 -S315400213106F3F483CC5303F587FE2F780AB123809F1 -S315400213207FD00000000000007FEAF780AB12380948 -S31540021330002000000000000080280000000000009D -S3154002134080100000000000007FEFF780AB123809E2 -S315400213507FEFF2010203A1117FF0000000000000BE -S315400213600010000000001000801FFFFFF203A111D1 -S315400213708000000000000000001ABCD000023809BC -S31540021380801ABCD0000001110000000000000000DD -S315400213907E71000000000000416010000000000065 -S315400213A07FE11100000000000178100000000000FB -S315400213B03E880000FFF0000000120C00C073F800E7 -S315400213C0C1EFFFFFC00020003FB3C75D224F280F89 -S315400213D0C1B3C75CFAC08192A12FFF8000001FFFF4 -S315400213E03EE0000000FF0000A01FFF8001FE18073C -S315400213F041CFFFFE0000002040303FFFFFFFFFFDD0 -S3154002140042103FFEFC00000D3FD000003FEFFFFFC1 -S31540021410BFD0000010000000BFB000004FF0003FF8 -S3154002142001701000000000003E8000011A0000001A -S3154002143000000000000000007E7C0000000000006A -S31540021440416A1000010000107FF000000000000019 -S3154002145075012034056AC000FA1009091000104FC0 -S31540021460FFF00000000000000100203040030200AF -S31540021470003020340000A00B0000000000000000F5 -S315400214807FE0001010200001400000000010200AFA -S315400214907FF00000000000003FEFDFF00FFC484AFB -S315400214A0BFF80000000000007FFF000000000000BF -S315400214B07FFFE000000000007FF400000000000013 -S315400214C07FC00000000000007FF80000000000001E -S315400214D07FF0000000000000FFF000000000000066 -S315400214E0FFF0000000000000800000000000000045 -S315400214F000000000000100000000000000000000A3 +S315400200D000000000000000000000000000000001D7 +S315400200E00000000100000000BF8000000000000088 +S315400200F0BFF0000000000000800000000000000089 +S315400201000000000000000000400000000000000067 +S3154002011040080000000000004018000000000000F7 +S315400201200000000000000000000000000000000087 +S3154002013000000000000000003FF000000000000048 +S3154002014040080000000000003FF0000040000000B0 +S3154002015000000000000000003F8000004040000018 +S315400201600000000000000000000000000000000047 +S315400201700000000000000000000000000000000037 +S315400201804800000100000000480000000000000096 +S3154002019046C00000000000003FF0000000000000E2 +S315400201A0400000000000000040080000000000007F +S315400201B03F80000000000000000000000001000037 +S315400201C08000000000000000FFF000000000000078 +S315400201D0FFF00000000000007FF000000000000079 +S315400201E07FF80000000000007FC000000000000011 +S315400201F07FF40000000000007FFFE00000000000E6 +S315400202007FFF000000000000BFF800000000000071 +S315400202103FEFDFF00FFC484A7E710000000000000D +S3154002022041601000000000007FE111000000000064 +S3154002023001781000000000003E880000FFF0000038 +S3154002024000120C00C073F800C1EFFFFFC00020008F +S315400202503FB3C75D224F280FC1B3C75CFAC0819234 +S31540020260A12FFF8000001FFF3EE0000000FF0000BC +S31540020270A01FFF8001FE180741CFFFFE00000020AD +S3154002028040303FFFFFFFFFFD42103FFEFC00000DE6 +S315400202903FD000003FEFFFFFBFD00000100000003C +S315400202A0BFB000004FF0003F017010000000000098 +S315400202B03E8000011A00000000000000000000001D +S315400202C07E7C000000000000416A10000100001020 +S315400202D07FF000000000000075012034056AC0006E +S315400202E0FA1009091000104FFFF00000000000004C +S315400202F00100203040030200003020340000A00BF1 +S3154002030000000000000000007FE000101020000105 +S31540020310400000000010200A7FF0000000000000AC +S315400203204200000000000000400FFFFFFFFFFFFFFA +S315400203304200000000200000420FFFFFFFFFFFFFC8 +S3154002034040000000000000004210000000080000CB +S3154002035042000000000000013EB000000000000123 +S315400203604200000000000002420F484C0137D2080A +S31540020370C20E780F256007AB41BA079B7AF94BA0AC +S315400203804201484C0137D208420E780F256007AB2E +S315400203904217E02D934BECDA420F484C0137D20814 +S315400203A0C21E780F256007ABC20DA7D249883D4EC3 +S315400203B0421F484C0137D208C20E780F256007AB60 +S315400203C042100C446E87CE32C03340AB371208918E +S315400203D00000000000000000C03340AB3712089115 +S315400203E00000000000000000C29E7A0F236007A6AC +S315400203F0C29E7A0F236007A66F3F484C0137D20848 +S315400204006E2E780F256007AB6F3F485B3D3F64B861 +S315400204106F3F484C0137D208EE2E780F256007AB66 +S315400204206F3F483CC5303F587FE2F780AB123809F0 +S315400204307FD00000000000007FEAF780AB12380947 +S31540020440002000000000000080280000000000009C +S3154002045080100000000000007FEFF780AB123809E1 +S315400204607FEFF2010203A1117FF0000000000000BD +S315400204700010000000001000801FFFFFF203A111D0 +S315400204808000000000000000001ABCD000023809BB +S31540020490801ABCD0000001110000000000000000DC +S315400204A06530000065301000653020006530300050 +S315400204B06530400065305000653060006530700040 +S315400204C065308000653090006530A0006530B00030 +S315400204D06530C0006530D0006530E0006530F00020 +S315400204E0653100006531100065312000653130000C +S315400204F065314000653150006531600065317000FC +S3154002050065318000653190006531A0006531B000EB +S315400205106531C0006531D0006531E0006531F000DB +S3154002052065320000653210006532200065323000C7 +S3154002053065324000653250006532600065327000B7 +S3154002054065328000653290006532A0006532B000A7 +S315400205506532C0006532D0006532E0006532F00097 +S315400205606533000065331000653320006533300083 +S315400205706533400065335000653360006533700073 +S3154002058065338000653390006533A0006533B00063 +S315400205906533C0006533D0006533E0006533F00053 +S315400205A0653400006534100065342000653430003F +S315400205B0653440006534500065346000653470002F +S315400205C065348000653490006534A0006534B0001F +S315400205D06534C0006534D0006534E0006534F0000F +S315400205E065350000653510006535200065353000FB +S315400205F065354000653550006535600065357000EB +S3154002060065358000653590006535A0006535B000DA +S315400206106535C0006535D0006535E0006535F000CA +S3154002062065360000653610006536200065363000B6 +S3154002063065364000653650006536600065367000A6 +S3154002064065368000653690006536A0006536B00096 +S315400206506536C0006536D0006536E0006536F00086 +S315400206606537000065371000653720006537300072 +S315400206706537400065375000653760006537700062 +S3154002068065378000653790006537A0006537B00052 +S315400206906537C0006537D0006537E0006537F00042 +S315400206A0653800006538100065382000653830002E +S315400206B0653840006538500065386000653870001E +S315400206C065388000653890006538A0006538B0000E +S315400206D06538C0006538D0006538E0006538F000FE +S315400206E065390000653910006539200065393000EA +S315400206F065394000653950006539600065397000DA +S3154002070065398000653990006539A0006539B000C9 +S315400207106539C0006539D0006539E0006539F000B9 +S31540020720653A0000653A1000653A2000653A3000A5 +S31540020730653A4000653A5000653A6000653A700095 +S31540020740653A8000653A9000653AA000653AB00085 +S31540020750653AC000653AD000653AE000653AF00075 +S31540020760653B0000653B1000653B2000653B300061 +S31540020770653B4000653B5000653B6000653B700051 +S31540020780653B8000653B9000653BA000653BB00041 +S31540020790653BC000653BD000653BE000653BF00031 +S315400207A0653C0000653C1000653C2000653C30001D +S315400207B0653C4000653C5000653C6000653C70000D +S315400207C0653C8000653C9000653CA000653CB000FD +S315400207D0653CC000653CD000653CE000653CF000ED +S315400207E0653D0000653D1000653D2000653D3000D9 +S315400207F0653D4000653D5000653D6000653D7000C9 +S31540020800653D8000653D9000653DA000653DB000B8 +S31540020810653DC000653DD000653DE000653DF000A8 +S31540020820653E0000653E1000653E2000653E300094 +S31540020830653E4000653E5000653E6000653E700084 +S31540020840653E8000653E9000653EA000653EB00074 +S31540020850653EC000653ED000653EE000653EF00064 +S31540020860653F0000653F1000653F2000653F300050 +S31540020870653F4000653F5000653F6000653F700040 +S31540020880653F8000653F9000653FA000653FB00030 +S31540020890653FC000653FD000653FE000653FF00020 +S315400208A00BC0A4068F346C9B0BC093731C18544721 +S315400208B00BC083008E183C230BC072AE83A9704ACC +S315400208C00BC0627C9CC166FF0BC0526A7ACE64A49E +S315400208D00BC04277C0B04ADA0BC032A412B191A023 +S315400208E00BC022EF168069500BC01358732804734D +S315400208F00BC003DFD10A08480BBFE909B3B0463241 +S315400209000BBFCA8E711B8E880BBFAC4D32D41430CE +S315400209100BBF8E4553D34B1B0BBF7076318237EFDD +S315400209200BBF52DF2BADF99C0BBF357FA47C936C7A +S315400209300BBF18570061F5EB0BBEFB64A6154515B8 +S315400209400BBEDEA7FE865A2B0BBEC22074D37FBCDB +S315400209500BBEA5CD763F66690BBE89AE722750F0B7 +S315400209600BBE6DC2D9F976230BBE520A212B976C68 +S315400209700BBE3683BD31CAA20BBE1B2F257575CA67 +S315400209800BBE000BD34C7BAF0BBDE51941F097FE76 +S315400209900BBDCA56EE76E9D00BBDAFC457C7AB7393 +S315400209A00BBD9560FE9616690BBD7B2C655872751C +S315400209B00BBD612610404EC00BBD474D8532E40942 +S315400209C00BBD2DA24BC19EDF0BBD1423ED22D101DF +S315400209D00BBCFAD1F42A88E40BBCE1ABED438E8022 +S315400209E00BBCC8B1666884820BBCAFE1EF1D2D011A +S315400209F00BBC973D1867D0EF0BBC7EC274CAC96266 +S31540020A000BBC6671983E29FE0BBC4E4A18298BA92F +S31540020A100BBC364B8B5DF6DB0BBC1E758A0FECBFEF +S31540020A200BBC06C7ADD18E7E0BBBEF41918CE1F676 +S31540020A300BBBD7E2D17E33360BBBC0AB0B2E921B20 +S31540020A400BBBA999DD6E6B650BBB92AEE8503CA71A +S31540020A500BBB7BE9CD2362720BBB654A2E6F002C22 +S31540020A600BBB4ECFAFED00FE0BBB3879F685313F5F +S31540020A700BBB2248A8486FDE0BBB0C3B6C6BF73BAB +S31540020A800BBAF651EB44BCEE0BBAE08BCE42E7F121 +S31540020A900BBACAE8BFED5CC00BBAB5686BDD5EDD6A +S31540020AA00BBAA00A7EBA475E0BBA8ACEA6354FEB80 +S31540020AB00BBA75B4910571DB0BBA60BBEEE358EF26 +S31540020AC00BBA4BE4708569410BBA372DC79BD7FEEB +S31540020AD00BBA2297A6CCD68C0BBA0E21C1B0CFA0A8 +S31540020AE00BB9F9CBCCCEB6050BB9E5957D98648B9F +S31540020AF00BB9D17E8A670EE70BB9BD86AA77C310BA +S31540020B000BB9A9AD95E7FAC40BB995F305B23CE525 +S31540020B100BB98256B3AACE570BB96ED85A7C720617 +S31540020B200BB95B77B5A537C80BB94834817359CC35 +S31540020B300BB9350E7B02284D0BB922056037032EC1 +S31540020B400BB90F18EFBE614A0BB8FC48E908E5221B +S31540020B500BB8E9950C487EA90BB8D6FD1A6D99E8F3 +S31540020B600BB8C480D5245A340BB8B21FFED1E1BCAF +S31540020B700BB89FDA5A91A5260BB88DAFAC32CB0A89 +S31540020B800BB87B9FB83596F60BB869AA43C8DFE126 +S31540020B900BB857CF14C791B50BB8460DF1B639C647 +S31540020BA00BB83466A1C09DF90BB822D8ECB75E6E7D +S31540020BB00BB811649B0DA16B0BB8000975D6C959C8 +S31540020BC00BB7EEC746C434A50BB7DD9DD8230752F3 +S31540020BD00BB7CC8CF4D9FE010BB7BB9468674A506D +S31540020BE00BB7AAB3FEDE78540BB799EB84E65D0CDD +S31540020BF00BB7893AC7B70D960BB778A19517DF01A0 +S31540020C000BB7681FBB5D6E910BB757B50967B24C00 +S31540020C100BB747614EA011A20BB737245AF7861479 +S31540020C200BB726FDFEE4C3A00BB716EE0B6268E8CF +S31540020C300BB706F451ED36CE0BB6F710A4824F80B1 +S31540020C400BB6E742D59D7CB40BB6D78AB8377D0E34 +S31540020C500BB6C7E81FC458720BB6B85AE031BB325E +S31540020C600BB6A8E2CDE557F90BB6997FBDBB504509 +S31540020C700BB68A318504A35C0BB67AF7F985A39B3A +S31540020C800BB66BD2F17471FF0BB65CC243777FCE63 +S31540020C900BB64DC5C6A416420BB63EDD527CE411D8 +S31540020CA00BB63008BEF090CF0BB62147E45855EB51 +S31540020CB00BB6129A9B769D520BB60400BD75A5845F +S31540020CC00BB5F57A23E62B070BB5E706A8BE172C1C +S31540020CD00BB5D8A6265733FF0BB5CA58776DE54BE9 +S31540020CE00BB5BC1D771FE6AB0BB5ADF500EB0E7829 +S31540020CF00BB59FDEF0AC15940BB591DB229D63F2EA +S31540020D000BB583E97355E1C10BB57609BFC7CD3241 +S31540020D100BB5683BE53F94B80BB55A7FC162B5B691 +S31540020D200BB54CD5322E9F7F0BB53F3C15F79AA19A +S31540020D300BB531B44B67B45A0BB5243DB17DAE30D9 +S31540020D400BB516D8278BF18F0BB509838D3787677D +S31540020D500BB4FC3FC27713AE0BB4EF0CA791D4BBD6 +S31540020D600BB4E1EA1D1EA6680BB4D4D8040308E509 +S31540020D700BB4C7D63D722B370BB4BAE4AAEBF9488B +S31540020D800BB4AE032E3C2D7E0BB4A131A97965C9B5 +S31540020D900BB4946FFF043C1C0BB487BE11866236BB +S31540020DA00BB47B1BC3F1C0BF0BB46E88F97F999B12 +S31540020DB00BB4620595AFAD730BB455917C47645441 +S31540020DC00BB4492C9150F96C0BB43CD6B91AA9C84C +S31540020DD00BB4308FD835E60B0BB42457D37687162F +S31540020DE00BB4182E8FF205900BB40C13F2FEB43BE3 +S31540020DF00BB40007E232FD1F0BB3F40A4364A1674A +S31540020E000BB3E81AFCA7FBF00BB3DC39F44F468A66 +S31540020E100BB3D06710E9E1C30BB3C4A239439F4F6A +S31540020E200BB3B8EB54640EF10BB3AD42498DCDDF33 +S31540020E300BB3A1A7003DD89B0BB39619602ADF2BB3 +S31540020E400BB38A9951449BB80BB37F26BBB32B791C +S31540020E500BB373C187D669EA0BB368699E454E44A4 +S31540020E600BB35D1EE7CD4B2D0BB351E14D71B098DF +S31540020E700BB346B0B86B0FC30BB33B8D1226A15AC8 +S31540020E800BB330764445ADAC0BB3256C389CF6EBD0 +S31540020E900BB31A6ED934256E0BB30F7E104535F55A +S31540020EA00BB30499C83BE9D60BB2F9C1EBB539236A +S31540020EB00BB2EEF6657EC6AA0BB2E437209655D53E +S31540020EC00BB2D984082942630BB2CEDD0793F9E708 +S31540020ED00BB2C4420A6177190BB2B9B2FC4ABEDA06 +S31540020EE00BB2AF2FC9365EFF0BB2A4B85D37EEC167 +S31540020EF00BB29A4CA48F90E30BB28FEC8BA9777905 +S31540020F000BB28597FF1D694D0BB27B4EEBAE48DDAA +S31540020F100BB271113E499CEE0BB266DEE4071AA88B +S31540020F200BB25CB7CA2831380BB2529BDE1796F722 +S31540020F300BB2488B0D68D8030BB23E8545D7E65AAD +S31540020F400BB2348A7548AB540BB22A9A89C69A9721 +S31540020F500BB220B5718446610BB216DB1ADAF53F45 +S31540020F600BB20D0B744A39100BB203466C77876C81 +S31540020F700BB1F98BF22DD3490BB1EFDBF45D27FFB1 +S31540020F800BB1E636621A457E0BB1DC9B2A9E3DD5F5 +S31540020F900BB1D30A3D4613EE0BB1C98389925B81ED +S31540020FA00BB1C006FF26DA3F0BB1B6948DCA2A288A +S31540020FB00BB1AD2C25655D0F0BB1A3CDB603A13D9B +S31540020FC00BB19A792FD1E7410BB1912E831E88D26C +S31540020FD00BB187EDA058F0D60BB17EB678114473AB +S31540020FE00BB17588FAF80D3A0BB16C6519DDE45D03 +S31540020FF00BB1634AC5B31EEF0BB15A39EF877B2853 +S315400210000BB151328889CEAE0BB148348207B5DB7B +S315400210100BB13F3FCD6D43FF0BB136545C44B49A9E +S315400210200BB12D7220361D870BB124990B07221B5B +S315400210300BB11BC90E9AA72D0BB113021CF0880FD8 +S315400210400BB10A4428254C650BB1018F2271DEE5AE +S315400210500BB0F8E2FE2B44F40BB0F03FADC257237F +S315400210600BB0E7A523C37A850BB0DF1352D65AD904 +S315400210700BB0D68A2DBDA58C0BB0CE09A756C58915 +S315400210800BB0C591B2999FDB0BB0BD224298511568 +S315400210900BB0B4BB4A7EEB870BB0AC5CBD93363625 +S315400210A0529000000000000052900FF807F60DEB38 +S315400210B052901FE03F61BAD052902FB8D4E30F4806 +S315400210C052903F81F636B80C52904F3BD03C0A6460 +S315400210D052905EE68EFAD48B52906E825DA8FC2BBD +S315400210E052907E0F66AFED0752908D8DD3B1D9AA3D +S315400210F052909CFDCD8ED0095290AC5F7C69A3C8BC +S315400211005290BBB307ACAFDB5290CAF8960E710D44 +S315400211105290DA304D95FB065290E95A539F492C2C +S315400211205290F876CCDF6CD952910785DD689A29C0 +S3154002113052911687A8AE14A35291257C5187FD0978 +S3154002114052913463FA37014E5291433EC467EFFBE4 +S315400211505291520CD1372FEB529160CE41341D74CD +S3154002116052916F8334644DF952917E2BCA46BAB975 +S3154002117052918CC821D6D3E352919B58598F7C9F6A +S315400211805291A9DC8F6DF1045291B854E0F496A0C5 +S315400211905291C6C16B2DB8705291D5224AAE2EE1FC +S315400211A05291E3779B97F4A85291F1C1799CA8FF9B +S315400211B0529200000000000052920E33499A21A931 +S315400211C052921C5B70D9F82452922A788FC76DE5E9 +S315400211D05292388AC0059C28529246921AD4EA49BB +S315400211E05292548EB9151E8552926280B3476096CA +S315400211F05292706821902E9A52927E451BB944C3F0 +S3154002120052928C17B9337834529299E011188575F7 +S315400212105292A79E3A2CD2E65292B5524AE1278E74 +S315400212205292C2FC595456A75292D09C7B54E03EED +S315400212305292DE32C66287415292EBBF4FAFDD4BCE +S315400212405292F9422C23C47E529306BB705AE7C38C +S315400212505293142B30A929AB52932191811B0A41F7 +S3154002126052932EEE7577041652933C42213EE0C9C4 +S315400212705293498C97B10540529356CDEBC9B5E28C +S31540021280529364063044530652937135779C8DCB04 +S3154002129052937E5BD40F95A152938B79579D3EAB69 +S315400212A05293988E1409212E5293A59A1ADBB2575D +S315400212B05293B29D7D6356625293BF984CB56C77FA +S315400212C05293CC8A99AF54535293D97474F76DF2B0 +S315400212D05293E655EEFE13675293F32F17FE8D0493 +S315400212E0529400000000000052940CC8B6D657C271 +S315400212F0529419894C2329F052942641CF5695721D +S31540021300529432F24FB01C7A52943F9ADC3F79CED5 +S3154002131052944C3B83E57153529458D455549C1A7B +S31540021320529465655F122FF6529471EEAF76C2C63D +S3154002133052947E7054AF098952948AEA5CBC935F98 +S315400213405294975CD57680885294A3C7CC8A358AC4 +S315400213505294B02B4F7C0A885294BC876BA7F6EC0A +S315400213605294C8DC2E4239805294D529A457FCFCAB +S315400213705294E16FDACFF9375294EDAEDE6B10FE3E +S315400213805294F9E6BBC4ECB3529506177F5491BB0F +S3154002139052951241356CF6E052951E63EA3D95B080 +S315400213A052952A7FA9D2F8EA529536948017481068 +S315400213B0529542A278D2D03652954EA99FAC8A0F08 +S315400213C052955AAA002A9D5A529566A3A5B2E1B1F0 +S315400213D0529572969B8B5CD852957E82ECDABE8D84 +S315400213E052958A68A4A8D9F352959647CDDF1CA593 +S315400213F05295A220734903775295ADF29F948CFB86 +S315400214005295B9BE5D52A9DA5295C583B6F7AB037A +S315400214105295D142B6DBADC55295DCFB673B05DF43 +S315400214205295E8ADD236A58F5295F45A01D483B47B +S31540021430529600000000000052960B9FD68A4554F1 +S31540021440529617398F2AAA48529622CD337F0FE8F1 +S3154002145052962E5ACD0C3EBE529639E2653E421BFC +S31540021460529645640568C1C3529650DFB6C759F4D1 +S3154002147052965C55827DF1D2529667C57199104B50 +S315400214805296732F8D0E2F7752967E93DDBC0E7336 +S31540021490529689F26C6B01D05296954B41CD42934E +S315400214A000000000000000000000000000000000F4 +S315400214B000000000000000000000000000000000E4 +S315400214C000000000000000000000000000000000D4 +S315400214D000000000000000000000000000000000C4 +S315400214E000000000000000000000000000000000B4 +S315400214F000000000000000000000000000000000A4 S315400215000000000000000000000000000000000093 S315400215100000000000000000000000000000000083 S315400215200000000000000000000000000000000073 @@ -9051,8 +10239,8 @@ S31540027FC00000000000000000000000000000000069 S31540027FD00000000000000000000000000000000059 S31540027FE00000000000000000000000000000000049 S31540027FF00000000000000000000000000000000039 -S315400280000000003F0000000C0000003F000000128C -S31540028010000000FF00000018000000000000000001 +S315400280000000000000000000000000000000000028 +S315400280100000000000000000000000000000000018 S315400280200000000000000000000000000000000008 S3154002803000000000000000000000000000000000F8 S3154002804000000000000000000000000000000000E8 @@ -15963,8 +17151,8 @@ S31540042FC000000000000000000000000000000000B7 S31540042FD000000000000000000000000000000000A7 S31540042FE00000000000000000000000000000000097 S31540042FF00000000000000000000000000000000087 -S315400430000000000000000000000000000000000076 -S315400430100000000000000000000000000000000066 +S3154004300000000018000000FF000000120000003F0E +S315400430100000000C0000003F00000000000000001B S315400430200000000000000000000000000000000056 S315400430300000000000000000000000000000000046 S315400430400000000000000000000000000000000036 @@ -17243,44 +18431,44 @@ S31540047FC00000000000000000000000000000000067 S31540047FD00000000000000000000000000000000057 S31540047FE00000000000000000000000000000000047 S31540047FF00000000000000000000000000000000037 -S315400480000000000000000000000000000000000026 -S315400480100000000000000000000000000000000016 -S315400480200000000000000000000000000000000006 -S3154004803000000000000000000000000000000000F6 -S3154004804000000000000000000000000000000000E6 -S3154004805000000000000000000000000000000000D6 -S3154004806000000000000000000000000000000000C6 -S3154004807000000000000000000000000000000000B6 -S3154004808000000000000000000000000000000000A6 -S315400480900000000000000000000000000000000096 -S315400480A00000000000000000000000000000000086 -S315400480B00000000000000000000000000000000076 -S315400480C00000000000000000000000000000000066 -S315400480D00000000000000000000000000000000056 -S315400480E00000000000000000000000000000000046 -S315400480F00000000000000000000000000000000036 -S315400481000000000000000000000000000000000025 -S315400481100000000000000000000000000000000015 -S315400481200000000000000000000000000000000005 -S3154004813000000000000000000000000000000000F5 -S3154004814000000000000000000000000000000000E5 -S3154004815000000000000000000000000000000000D5 -S3154004816000000000000000000000000000000000C5 -S3154004817000000000000000000000000000000000B5 -S3154004818000000000000000000000000000000000A5 -S315400481900000000000000000000000000000000095 -S315400481A00000000000000000000000000000000085 -S315400481B00000000000000000000000000000000075 -S315400481C00000000000000000000000000000000065 -S315400481D00000000000000000000000000000000055 -S315400481E00000000000000000000000000000000045 +S31540048000000000020000000300000000000000031E +S31540048010FFFFFFFEFFFFFFFF00000002FFFFFFFD23 +S315400480200000000000000000000000010000000005 +S3154004803000000000FFFFFFFF0000000000000001F9 +S31540048040FFFFFFFFFFFFFFFFFFFFFFFF00000001F1 +S31540048050FFFFFFFFFFFFFFFE0000000300000000DC +S31540048060FFFFFFFEFFFFFFFD0000000000000009C8 +S315400480700000000700000001FFFFFFF700000002B8 +S31540048080FFFFFFFCFFFFFFF800000002FFFFFFFCBD +S31540048090FFFFFFF8FFFFFFFC00000002000000089E +S315400480A0FFFFFFFCFFFFFFFEFFFFFFF8FFFFFFF8A8 +S315400480B000000001FFFFFFF8FFFFFFF7000000008C +S315400480C00000000B00000002000000050000002F25 +S315400480D0000000020000001700003039000002A72B +S315400480E000000012FFFF076C0000004DFFFFFCC6B6 +S315400480F000003039FFFFFD59FFFFFFEEFFFF076C1D +S31540048100FFFFFFB30000033A00000091FFFFE84180 +S3154004811000000000FFFFFD84FFFED02F000000009A +S315400481200000F6FA006E49810000000000000000DD +S3154004813000000000000000000000000200000003F0 +S3154004814000000000000000000000000100000000E4 +S31540048150FFFFFFFE0000000355555554FFFFFFFE89 +S315400481600000000355555554700FFFFE00000007EC +S315400481701002492400000000000000000000000036 +S315400481800000000200000003000000060000000298 +S31540048190FFFFFFFDFFFFFFFA0000000000000001A3 +S315400481A00000000000000000FFFFFFFF0000000089 +S315400481B000000001FFFFFFFFFFFFFFFFFFFFFFFF80 +S315400481C000000001FFFFFFFFFFFFFFFE000000036A +S315400481D0FFFFFFFAFFFFFFFEFFFFFFFD0000000663 +S315400481E0000000000000000000000009FFFFF0004E S315400481F00000000000000000000000000000000035 -S315400482000000000000000000000000000000000024 +S31540048200000000000000000100000002000000031E S315400482100000000000000000000000000000000014 -S315400482200000000000000000000000000000000004 -S3154004823000000000000000000000000000000000F4 +S315400482204004822800000000000000004004851439 +S31540048230400485E0400486AC0000000000000000D5 S3154004824000000000000000000000000000000000E4 -S3154004825000000000000000000000000000000000D4 +S315400482500000000000000000000000004001C0983B S3154004826000000000000000000000000000000000C4 S3154004827000000000000000000000000000000000B4 S3154004828000000000000000000000000000000000A4 @@ -17288,8 +18476,8 @@ S315400482900000000000000000000000000000000094 S315400482A00000000000000000000000000000000084 S315400482B00000000000000000000000000000000074 S315400482C00000000000000000000000000000000064 -S315400482D00000000000000000000000000000000054 -S315400482E00000000000000000000000000000000044 +S315400482D00000000000000001330EABCD1234E66D01 +S315400482E0DEEC0005000B000000000000000000006A S315400482F00000000000000000000000000000000034 S315400483000000000000000000000000000000000023 S315400483100000000000000000000000000000000013 @@ -17363,72 +18551,72 @@ S3154004874000000000000000000000000000000000DF S3154004875000000000000000000000000000000000CF S3154004876000000000000000000000000000000000BF S3154004877000000000000000000000000000000000AF -S31540048780000000000000000000000000000000009F -S31540048790000000000000000000000000000000008F -S315400487A0000000000000000000000000000000007F -S315400487B0000000000000000000000000000000006F -S315400487C0000000000000000000000000000000005F -S315400487D0000000000000000000000000000000004F -S315400487E0000000000000000000000000000000003F -S315400487F0000000000000000000000000000000002F -S31540048800000000000000000000000000000000001E -S31540048810000000000000000000000000000000000E -S3154004882000000000000000000000000000000000FE -S3154004883000000000000000000000000000000000EE -S3154004884000000000000000000000000000000000DE -S3154004885000000000000000000000000000000000CE -S3154004886000000000000000000000000000000000BE -S3154004887000000000000000000000000000000000AE -S31540048880000000000000000000000000000000009E -S31540048890000000000000000000000000000000008E -S315400488A0000000000000000000000000000000007E -S315400488B0000000000000000000000000000000006E -S315400488C0000000000000000000000000000000005E -S315400488D0000000000000000000000000000000004E -S315400488E0000000000000000000000000000000003E -S315400488F0000000000000000000000000000000002E -S31540048900000000000000000000000000000000001D -S31540048910000000000000000000000000000000000D -S3154004892000000000000000000000000000000000FD -S3154004893000000000000000000000000000000000ED -S3154004894000000000000000000000000000000000DD -S3154004895000000000000000000000000000000000CD -S3154004896000000000000000000000000000000000BD -S3154004897000000000000000000000000000000000AD -S31540048980000000000000000000000000000000009D -S31540048990000000000000000000000000000000008D -S315400489A0000000000000000000000000000000007D -S315400489B0000000000000000000000000000000006D -S315400489C0000000000000000000000000000000005D -S315400489D0000000000000000000000000000000004D -S315400489E0000000000000000000000000000000003D -S315400489F0000000000000000000000000000000002D -S31540048A00000000000000000000000000000000001C -S31540048A10000000000000000000000000000000000C -S31540048A2000000000000000000000000000000000FC -S31540048A3000000000000000000000000000000000EC -S31540048A4000000000000000000000000000000000DC -S31540048A5000000000000000000000000000000000CC -S31540048A6000000000000000000000000000000000BC -S31540048A7000000000000000000000000000000000AC -S31540048A80000000000000000000000000000000009C -S31540048A90000000000000000000000000000000008C -S31540048AA0000000000000000000000000000000007C -S31540048AB0000000000000000000000000000000006C -S31540048AC0000000000000000000000000000000005C -S31540048AD0000000000000000000000000000000004C -S31540048AE0000000000000000000000000000000003C -S31540048AF0000000000000000000000000000000002C -S31540048B00000000000000000000000000000000001B -S31540048B10000000000000000000000000000000000B -S31540048B2000000000000000000000000000000000FB -S31540048B3000000000000000000000000000000000EB -S31540048B4000000000000000000000000000000000DB -S31540048B5000000000000000000000000000000000CB -S31540048B6000000000000000000000000000000000BB -S31540048B7000000000000000000000000000000000AB -S31540048B80000000000000000000000000000000009B -S31540048B90000000000000000000000000000000008B +S315400487804004877840048778400487804004878083 +S315400487904004878840048788400487904004879033 +S315400487A04004879840048798400487A0400487A0E3 +S315400487B0400487A8400487A8400487B0400487B093 +S315400487C0400487B8400487B8400487C0400487C043 +S315400487D0400487C8400487C8400487D0400487D0F3 +S315400487E0400487D8400487D8400487E0400487E0A3 +S315400487F0400487E8400487E8400487F0400487F053 +S31540048800400487F8400487F8400488004004880000 +S3154004881040048808400488084004881040048810AE +S31540048820400488184004881840048820400488205E +S31540048830400488284004882840048830400488300E +S3154004884040048838400488384004884040048840BE +S31540048850400488484004884840048850400488506E +S31540048860400488584004885840048860400488601E +S3154004887040048868400488684004887040048870CE +S31540048880400488784004887840048880400488807E +S31540048890400488884004888840048890400488902E +S315400488A04004889840048898400488A0400488A0DE +S315400488B0400488A8400488A8400488B0400488B08E +S315400488C0400488B8400488B8400488C0400488C03E +S315400488D0400488C8400488C8400488D0400488D0EE +S315400488E0400488D8400488D8400488E0400488E09E +S315400488F0400488E8400488E8400488F0400488F04E +S31540048900400488F8400488F84004890040048900FB +S3154004891040048908400489084004891040048910A9 +S315400489204004891840048918400489204004892059 +S315400489304004892840048928400489304004893009 +S3154004894040048938400489384004894040048940B9 +S315400489504004894840048948400489504004895069 +S315400489604004895840048958400489604004896019 +S3154004897040048968400489684004897040048970C9 +S315400489804004897840048978400489804004898079 +S315400489904004898840048988400489904004899029 +S315400489A04004899840048998400489A0400489A0D9 +S315400489B0400489A8400489A8400489B0400489B089 +S315400489C0400489B8400489B8400489C0400489C039 +S315400489D0400489C8400489C8400489D0400489D0E9 +S315400489E0400489D8400489D8400489E0400489E099 +S315400489F0400489E8400489E8400489F0400489F049 +S31540048A00400489F8400489F840048A0040048A00F6 +S31540048A1040048A0840048A0840048A1040048A10A4 +S31540048A2040048A1840048A1840048A2040048A2054 +S31540048A3040048A2840048A2840048A3040048A3004 +S31540048A4040048A3840048A3840048A4040048A40B4 +S31540048A5040048A4840048A4840048A5040048A5064 +S31540048A6040048A5840048A5840048A6040048A6014 +S31540048A7040048A6840048A6840048A7040048A70C4 +S31540048A8040048A7840048A7840048A8040048A8074 +S31540048A9040048A8840048A8840048A9040048A9024 +S31540048AA040048A9840048A9840048AA040048AA0D4 +S31540048AB040048AA840048AA840048AB040048AB084 +S31540048AC040048AB840048AB840048AC040048AC034 +S31540048AD040048AC840048AC840048AD040048AD0E4 +S31540048AE040048AD840048AD840048AE040048AE094 +S31540048AF040048AE840048AE840048AF040048AF044 +S31540048B0040048AF840048AF840048B0040048B00F1 +S31540048B1040048B0840048B0840048B1040048B109F +S31540048B2040048B1840048B1840048B2040048B204F +S31540048B3040048B2840048B2840048B3040048B30FF +S31540048B4040048B3840048B3840048B4040048B40AF +S31540048B5040048B4840048B4840048B5040048B505F +S31540048B6040048B5840048B5840048B6040048B600F +S31540048B7040048B6840048B6840048B7040048B70BF +S31540048B8000020000FFFFFFFF0000000040048B8846 +S31540048B900000000000000000000000000000000289 S31540048BA0000000000000000000000000000000007B S31540048BB0000000000000000000000000000000006B S31540048BC0000000000000000000000000000000005B @@ -17437,2056 +18625,7 @@ S31540048BE0000000000000000000000000000000003B S31540048BF0000000000000000000000000000000002B S31540048C00000000000000000000000000000000001A S31540048C10000000000000000000000000000000000A -S31540048C2000000000000000000000000000000000FA -S31540048C3000000000000000000000000000000000EA -S31540048C4000000000000000000000000000000000DA -S31540048C5000000000000000000000000000000000CA -S31540048C6000000000000000000000000000000000BA -S31540048C7000000000000000000000000000000000AA -S31540048C80000000000000000000000000000000009A -S31540048C90000000000000000000000000000000008A -S31540048CA0000000000000000000000000000000007A -S31540048CB0000000000000000000000000000000006A -S31540048CC0000000000000000000000000000000005A -S31540048CD0000000000000000000000000000000004A -S31540048CE0000000000000000000000000000000003A -S31540048CF0000000000000000000000000000000002A -S31540048D000000000000000000000000000000000019 -S31540048D100000000000000000000000000000000009 -S31540048D2000000000000000000000000000000000F9 -S31540048D3000000000000000000000000000000000E9 -S31540048D4000000000000000000000000000000000D9 -S31540048D5000000000000000000000000000000000C9 -S31540048D6000000000000000000000000000000000B9 -S31540048D7000000000000000000000000000000000A9 -S31540048D800000000000000000000000000000000099 -S31540048D900000000000000000000000000000000089 -S31540048DA00000000000000000000000000000000079 -S31540048DB00000000000000000000000000000000069 -S31540048DC00000000000000000000000000000000059 -S31540048DD00000000000000000000000000000000049 -S31540048DE00000000000000000000000000000000039 -S31540048DF00000000000000000000000000000000029 -S31540048E000000000000000000000000000000000018 -S31540048E100000000000000000000000000000000008 -S31540048E2000000000000000000000000000000000F8 -S31540048E3000000000000000000000000000000000E8 -S31540048E4000000000000000000000000000000000D8 -S31540048E5000000000000000000000000000000000C8 -S31540048E6000000000000000000000000000000000B8 -S31540048E7000000000000000000000000000000000A8 -S31540048E800000000000000000000000000000000098 -S31540048E900000000000000000000000000000000088 -S31540048EA00000000000000000000000000000000078 -S31540048EB00000000000000000000000000000000068 -S31540048EC00000000000000000000000000000000058 -S31540048ED00000000000000000000000000000000048 -S31540048EE00000000000000000000000000000000038 -S31540048EF00000000000000000000000000000000028 -S31540048F000000000000000000000000000000000017 -S31540048F100000000000000000000000000000000007 -S31540048F2000000000000000000000000000000000F7 -S31540048F3000000000000000000000000000000000E7 -S31540048F4000000000000000000000000000000000D7 -S31540048F5000000000000000000000000000000000C7 -S31540048F6000000000000000000000000000000000B7 -S31540048F7000000000000000000000000000000000A7 -S31540048F800000000000000000000000000000000097 -S31540048F900000000000000000000000000000000087 -S31540048FA00000000000000000000000000000000077 -S31540048FB00000000000000000000000000000000067 -S31540048FC00000000000000000000000000000000057 -S31540048FD00000000000000000000000000000000047 -S31540048FE00000000000000000000000000000000037 -S31540048FF00000000000000000000000000000000027 -S315400490000000000000000000000000000000000016 -S315400490100000000000000000000000000000000006 -S3154004902000000000000000000000000000000000F6 -S3154004903000000000000000000000000000000000E6 -S3154004904000000000000000000000000000000000D6 -S3154004905000000000000000000000000000000000C6 -S3154004906000000000000000000000000000000000B6 -S3154004907000000000000000000000000000000000A6 -S315400490800000000000000000000000000000000096 -S315400490900000000000000000000000000000000086 -S315400490A00000000000000000000000000000000076 -S315400490B00000000000000000000000000000000066 -S315400490C00000000000000000000000000000000056 -S315400490D00000000000000000000000000000000046 -S315400490E00000000000000000000000000000000036 -S315400490F00000000000000000000000000000000026 -S315400491000000000000000000000000000000000015 -S315400491100000000000000000000000000000000005 -S3154004912000000000000000000000000000000000F5 -S3154004913000000000000000000000000000000000E5 -S3154004914000000000000000000000000000000000D5 -S3154004915000000000000000000000000000000000C5 -S3154004916000000000000000000000000000000000B5 -S3154004917000000000000000000000000000000000A5 -S315400491800000000000000000000000000000000095 -S315400491900000000000000000000000000000000085 -S315400491A00000000000000000000000000000000075 -S315400491B00000000000000000000000000000000065 -S315400491C00000000000000000000000000000000055 -S315400491D00000000000000000000000000000000045 -S315400491E00000000000000000000000000000000035 -S315400491F00000000000000000000000000000000025 -S315400492000000000000000000000000000000000014 -S315400492100000000000000000000000000000000004 -S3154004922000000000000000000000000000000000F4 -S3154004923000000000000000000000000000000000E4 -S3154004924000000000000000000000000000000000D4 -S3154004925000000000000000000000000000000000C4 -S3154004926000000000000000000000000000000000B4 -S3154004927000000000000000000000000000000000A4 -S315400492800000000000000000000000000000000094 -S315400492900000000000000000000000000000000084 -S315400492A00000000000000000000000000000000074 -S315400492B00000000000000000000000000000000064 -S315400492C00000000000000000000000000000000054 -S315400492D00000000000000000000000000000000044 -S315400492E00000000000000000000000000000000034 -S315400492F00000000000000000000000000000000024 -S315400493000000000000000000000000000000000013 -S315400493100000000000000000000000000000000003 -S3154004932000000000000000000000000000000000F3 -S3154004933000000000000000000000000000000000E3 -S3154004934000000000000000000000000000000000D3 -S3154004935000000000000000000000000000000000C3 -S3154004936000000000000000000000000000000000B3 -S3154004937000000000000000000000000000000000A3 -S315400493800000000000000000000000000000000093 -S315400493900000000000000000000000000000000083 -S315400493A00000000000000000000000000000000073 -S315400493B00000000000000000000000000000000063 -S315400493C00000000000000000000000000000000053 -S315400493D00000000000000000000000000000000043 -S315400493E00000000000000000000000000000000033 -S315400493F00000000000000000000000000000000023 -S315400494000000000000000000000000000000000012 -S315400494100000000000000000000000000000000002 -S3154004942000000000000000000000000000000000F2 -S3154004943000000000000000000000000000000000E2 -S3154004944000000000000000000000000000000000D2 -S3154004945000000000000000000000000000000000C2 -S3154004946000000000000000000000000000000000B2 -S3154004947000000000000000000000000000000000A2 -S315400494800000000000000000000000000000000092 -S315400494900000000000000000000000000000000082 -S315400494A00000000000000000000000000000000072 -S315400494B00000000000000000000000000000000062 -S315400494C00000000000000000000000000000000052 -S315400494D00000000000000000000000000000000042 -S315400494E00000000000000000000000000000000032 -S315400494F00000000000000000000000000000000022 -S315400495000000000000000000000000000000000011 -S315400495100000000000000000000000000000000001 -S3154004952000000000000000000000000000000000F1 -S3154004953000000000000000000000000000000000E1 -S3154004954000000000000000000000000000000000D1 -S3154004955000000000000000000000000000000000C1 -S3154004956000000000000000000000000000000000B1 -S3154004957000000000000000000000000000000000A1 -S315400495800000000000000000000000000000000091 -S315400495900000000000000000000000000000000081 -S315400495A00000000000000000000000000000000071 -S315400495B00000000000000000000000000000000061 -S315400495C00000000000000000000000000000000051 -S315400495D00000000000000000000000000000000041 -S315400495E00000000000000000000000000000000031 -S315400495F00000000000000000000000000000000021 -S315400496000000000000000000000000000000000010 -S315400496100000000000000000000000000000000000 -S3154004962000000000000000000000000000000000F0 -S3154004963000000000000000000000000000000000E0 -S3154004964000000000000000000000000000000000D0 -S3154004965000000000000000000000000000000000C0 -S3154004966000000000000000000000000000000000B0 -S3154004967000000000000000000000000000000000A0 -S315400496800000000000000000000000000000000090 -S315400496900000000000000000000000000000000080 -S315400496A00000000000000000000000000000000070 -S315400496B00000000000000000000000000000000060 -S315400496C00000000000000000000000000000000050 -S315400496D00000000000000000000000000000000040 -S315400496E00000000000000000000000000000000030 -S315400496F00000000000000000000000000000000020 -S31540049700000000000000000000000000000000000F -S3154004971000000000000000000000000000000000FF -S3154004972000000000000000000000000000000000EF -S3154004973000000000000000000000000000000000DF -S3154004974000000000000000000000000000000000CF -S3154004975000000000000000000000000000000000BF -S3154004976000000000000000000000000000000000AF -S31540049770000000000000000000000000000000009F -S31540049780000000000000000000000000000000008F -S31540049790000000000000000000000000000000007F -S315400497A0000000000000000000000000000000006F -S315400497B0000000000000000000000000000000005F -S315400497C0000000000000000000000000000000004F -S315400497D0000000000000000000000000000000003F -S315400497E0000000000000000000000000000000002F -S315400497F0000000000000000000000000000000001F -S31540049800000000000000000000000000000000000E -S3154004981000000000000000000000000000000000FE -S3154004982000000000000000000000000000000000EE -S3154004983000000000000000000000000000000000DE -S3154004984000000000000000000000000000000000CE -S3154004985000000000000000000000000000000000BE -S3154004986000000000000000000000000000000000AE -S31540049870000000000000000000000000000000009E -S31540049880000000000000000000000000000000008E -S31540049890000000000000000000000000000000007E -S315400498A0000000000000000000000000000000006E -S315400498B0000000000000000000000000000000005E -S315400498C0000000000000000000000000000000004E -S315400498D0000000000000000000000000000000003E -S315400498E0000000000000000000000000000000002E -S315400498F0000000000000000000000000000000001E -S31540049900000000000000000000000000000000000D -S3154004991000000000000000000000000000000000FD -S3154004992000000000000000000000000000000000ED -S3154004993000000000000000000000000000000000DD -S3154004994000000000000000000000000000000000CD -S3154004995000000000000000000000000000000000BD -S3154004996000000000000000000000000000000000AD -S31540049970000000000000000000000000000000009D -S31540049980000000000000000000000000000000008D -S31540049990000000000000000000000000000000007D -S315400499A0000000000000000000000000000000006D -S315400499B0000000000000000000000000000000005D -S315400499C0000000000000000000000000000000004D -S315400499D0000000000000000000000000000000003D -S315400499E0000000000000000000000000000000002D -S315400499F0000000000000000000000000000000001D -S31540049A00000000000000000000000000000000000C -S31540049A1000000000000000000000000000000000FC -S31540049A2000000000000000000000000000000000EC -S31540049A3000000000000000000000000000000000DC -S31540049A4000000000000000000000000000000000CC -S31540049A5000000000000000000000000000000000BC -S31540049A6000000000000000000000000000000000AC -S31540049A70000000000000000000000000000000009C -S31540049A80000000000000000000000000000000008C -S31540049A90000000000000000000000000000000007C -S31540049AA0000000000000000000000000000000006C -S31540049AB0000000000000000000000000000000005C -S31540049AC0000000000000000000000000000000004C -S31540049AD0000000000000000000000000000000003C -S31540049AE0000000000000000000000000000000002C -S31540049AF0000000000000000000000000000000001C -S31540049B00000000000000000000000000000000000B -S31540049B1000000000000000000000000000000000FB -S31540049B2000000000000000000000000000000000EB -S31540049B3000000000000000000000000000000000DB -S31540049B4000000000000000000000000000000000CB -S31540049B5000000000000000000000000000000000BB -S31540049B6000000000000000000000000000000000AB -S31540049B70000000000000000000000000000000009B -S31540049B80000000000000000000000000000000008B -S31540049B90000000000000000000000000000000007B -S31540049BA0000000000000000000000000000000006B -S31540049BB0000000000000000000000000000000005B -S31540049BC0000000000000000000000000000000004B -S31540049BD0000000000000000000000000000000003B -S31540049BE0000000000000000000000000000000002B -S31540049BF0000000000000000000000000000000001B -S31540049C00000000000000000000000000000000000A -S31540049C1000000000000000000000000000000000FA -S31540049C2000000000000000000000000000000000EA -S31540049C3000000000000000000000000000000000DA -S31540049C4000000000000000000000000000000000CA -S31540049C5000000000000000000000000000000000BA -S31540049C6000000000000000000000000000000000AA -S31540049C70000000000000000000000000000000009A -S31540049C80000000000000000000000000000000008A -S31540049C90000000000000000000000000000000007A -S31540049CA0000000000000000000000000000000006A -S31540049CB0000000000000000000000000000000005A -S31540049CC0000000000000000000000000000000004A -S31540049CD0000000000000000000000000000000003A -S31540049CE0000000000000000000000000000000002A -S31540049CF0000000000000000000000000000000001A -S31540049D000000000000000000000000000000000009 -S31540049D1000000000000000000000000000000000F9 -S31540049D2000000000000000000000000000000000E9 -S31540049D3000000000000000000000000000000000D9 -S31540049D4000000000000000000000000000000000C9 -S31540049D5000000000000000000000000000000000B9 -S31540049D6000000000000000000000000000000000A9 -S31540049D700000000000000000000000000000000099 -S31540049D800000000000000000000000000000000089 -S31540049D900000000000000000000000000000000079 -S31540049DA00000000000000000000000000000000069 -S31540049DB00000000000000000000000000000000059 -S31540049DC00000000000000000000000000000000049 -S31540049DD00000000000000000000000000000000039 -S31540049DE00000000000000000000000000000000029 -S31540049DF00000000000000000000000000000000019 -S31540049E000000000000000000000000000000000008 -S31540049E1000000000000000000000000000000000F8 -S31540049E2000000000000000000000000000000000E8 -S31540049E3000000000000000000000000000000000D8 -S31540049E4000000000000000000000000000000000C8 -S31540049E5000000000000000000000000000000000B8 -S31540049E6000000000000000000000000000000000A8 -S31540049E700000000000000000000000000000000098 -S31540049E800000000000000000000000000000000088 -S31540049E900000000000000000000000000000000078 -S31540049EA00000000000000000000000000000000068 -S31540049EB00000000000000000000000000000000058 -S31540049EC00000000000000000000000000000000048 -S31540049ED00000000000000000000000000000000038 -S31540049EE00000000000000000000000000000000028 -S31540049EF00000000000000000000000000000000018 -S31540049F000000000000000000000000000000000007 -S31540049F1000000000000000000000000000000000F7 -S31540049F2000000000000000000000000000000000E7 -S31540049F3000000000000000000000000000000000D7 -S31540049F4000000000000000000000000000000000C7 -S31540049F5000000000000000000000000000000000B7 -S31540049F6000000000000000000000000000000000A7 -S31540049F700000000000000000000000000000000097 -S31540049F800000000000000000000000000000000087 -S31540049F900000000000000000000000000000000077 -S31540049FA00000000000000000000000000000000067 -S31540049FB00000000000000000000000000000000057 -S31540049FC00000000000000000000000000000000047 -S31540049FD00000000000000000000000000000000037 -S31540049FE00000000000000000000000000000000027 -S31540049FF00000000000000000000000000000000017 -S3154004A0000000000000000000000000000000000006 -S3154004A01000000000000000000000000000000000F6 -S3154004A02000000000000000000000000000000000E6 -S3154004A03000000000000000000000000000000000D6 -S3154004A04000000000000000000000000000000000C6 -S3154004A05000000000000000000000000000000000B6 -S3154004A06000000000000000000000000000000000A6 -S3154004A0700000000000000000000000000000000096 -S3154004A0800000000000000000000000000000000086 -S3154004A0900000000000000000000000000000000076 -S3154004A0A00000000000000000000000000000000066 -S3154004A0B00000000000000000000000000000000056 -S3154004A0C00000000000000000000000000000000046 -S3154004A0D00000000000000000000000000000000036 -S3154004A0E00000000000000000000000000000000026 -S3154004A0F00000000000000000000000000000000016 -S3154004A1000000000000000000000000000000000005 -S3154004A11000000000000000000000000000000000F5 -S3154004A12000000000000000000000000000000000E5 -S3154004A13000000000000000000000000000000000D5 -S3154004A14000000000000000000000000000000000C5 -S3154004A15000000000000000000000000000000000B5 -S3154004A16000000000000000000000000000000000A5 -S3154004A1700000000000000000000000000000000095 -S3154004A1800000000000000000000000000000000085 -S3154004A1900000000000000000000000000000000075 -S3154004A1A00000000000000000000000000000000065 -S3154004A1B00000000000000000000000000000000055 -S3154004A1C00000000000000000000000000000000045 -S3154004A1D00000000000000000000000000000000035 -S3154004A1E00000000000000000000000000000000025 -S3154004A1F00000000000000000000000000000000015 -S3154004A2000000000000000000000000000000000004 -S3154004A21000000000000000000000000000000000F4 -S3154004A22000000000000000000000000000000000E4 -S3154004A23000000000000000000000000000000000D4 -S3154004A24000000000000000000000000000000000C4 -S3154004A25000000000000000000000000000000000B4 -S3154004A26000000000000000000000000000000000A4 -S3154004A2700000000000000000000000000000000094 -S3154004A2800000000000000000000000000000000084 -S3154004A2900000000000000000000000000000000074 -S3154004A2A00000000000000000000000000000000064 -S3154004A2B00000000000000000000000000000000054 -S3154004A2C00000000000000000000000000000000044 -S3154004A2D00000000000000000000000000000000034 -S3154004A2E00000000000000000000000000000000024 -S3154004A2F00000000000000000000000000000000014 -S3154004A3000000000000000000000000000000000003 -S3154004A31000000000000000000000000000000000F3 -S3154004A32000000000000000000000000000000000E3 -S3154004A33000000000000000000000000000000000D3 -S3154004A34000000000000000000000000000000000C3 -S3154004A35000000000000000000000000000000000B3 -S3154004A36000000000000000000000000000000000A3 -S3154004A3700000000000000000000000000000000093 -S3154004A3800000000000000000000000000000000083 -S3154004A3900000000000000000000000000000000073 -S3154004A3A00000000000000000000000000000000063 -S3154004A3B00000000000000000000000000000000053 -S3154004A3C00000000000000000000000000000000043 -S3154004A3D00000000000000000000000000000000033 -S3154004A3E00000000000000000000000000000000023 -S3154004A3F00000000000000000000000000000000013 -S3154004A4000000000000000000000000000000000002 -S3154004A41000000000000000000000000000000000F2 -S3154004A42000000000000000000000000000000000E2 -S3154004A43000000000000000000000000000000000D2 -S3154004A44000000000000000000000000000000000C2 -S3154004A45000000000000000000000000000000000B2 -S3154004A46000000000000000000000000000000000A2 -S3154004A4700000000000000000000000000000000092 -S3154004A4800000000000000000000000000000000082 -S3154004A4900000000000000000000000000000000072 -S3154004A4A00000000000000000000000000000000062 -S3154004A4B00000000000000000000000000000000052 -S3154004A4C00000000000000000000000000000000042 -S3154004A4D00000000000000000000000000000000032 -S3154004A4E00000000000000000000000000000000022 -S3154004A4F00000000000000000000000000000000012 -S3154004A5000000000000000000000000000000000001 -S3154004A51000000000000000000000000000000000F1 -S3154004A52000000000000000000000000000000000E1 -S3154004A53000000000000000000000000000000000D1 -S3154004A54000000000000000000000000000000000C1 -S3154004A55000000000000000000000000000000000B1 -S3154004A56000000000000000000000000000000000A1 -S3154004A5700000000000000000000000000000000091 -S3154004A5800000000000000000000000000000000081 -S3154004A5900000000000000000000000000000000071 -S3154004A5A00000000000000000000000000000000061 -S3154004A5B00000000000000000000000000000000051 -S3154004A5C00000000000000000000000000000000041 -S3154004A5D00000000000000000000000000000000031 -S3154004A5E00000000000000000000000000000000021 -S3154004A5F00000000000000000000000000000000011 -S3154004A6000000000000000000000000000000000000 -S3154004A61000000000000000000000000000000000F0 -S3154004A62000000000000000000000000000000000E0 -S3154004A63000000000000000000000000000000000D0 -S3154004A64000000000000000000000000000000000C0 -S3154004A65000000000000000000000000000000000B0 -S3154004A66000000000000000000000000000000000A0 -S3154004A6700000000000000000000000000000000090 -S3154004A6800000000000000000000000000000000080 -S3154004A6900000000000000000000000000000000070 -S3154004A6A00000000000000000000000000000000060 -S3154004A6B00000000000000000000000000000000050 -S3154004A6C00000000000000000000000000000000040 -S3154004A6D00000000000000000000000000000000030 -S3154004A6E00000000000000000000000000000000020 -S3154004A6F00000000000000000000000000000000010 -S3154004A70000000000000000000000000000000000FF -S3154004A71000000000000000000000000000000000EF -S3154004A72000000000000000000000000000000000DF -S3154004A73000000000000000000000000000000000CF -S3154004A74000000000000000000000000000000000BF -S3154004A75000000000000000000000000000000000AF -S3154004A760000000000000000000000000000000009F -S3154004A770000000000000000000000000000000008F -S3154004A780000000000000000000000000000000007F -S3154004A790000000000000000000000000000000006F -S3154004A7A0000000000000000000000000000000005F -S3154004A7B0000000000000000000000000000000004F -S3154004A7C0000000000000000000000000000000003F -S3154004A7D0000000000000000000000000000000002F -S3154004A7E0000000000000000000000000000000001F -S3154004A7F0000000000000000000000000000000000F -S3154004A80000000000000000000000000000000000FE -S3154004A81000000000000000000000000000000000EE -S3154004A82000000000000000000000000000000000DE -S3154004A83000000000000000000000000000000000CE -S3154004A84000000000000000000000000000000000BE -S3154004A85000000000000000000000000000000000AE -S3154004A860000000000000000000000000000000009E -S3154004A870000000000000000000000000000000008E -S3154004A880000000000000000000000000000000007E -S3154004A890000000000000000000000000000000006E -S3154004A8A0000000000000000000000000000000005E -S3154004A8B0000000000000000000000000000000004E -S3154004A8C0000000000000000000000000000000003E -S3154004A8D0000000000000000000000000000000002E -S3154004A8E0000000000000000000000000000000001E -S3154004A8F0000000000000000000000000000000000E -S3154004A90000000000000000000000000000000000FD -S3154004A91000000000000000000000000000000000ED -S3154004A92000000000000000000000000000000000DD -S3154004A93000000000000000000000000000000000CD -S3154004A94000000000000000000000000000000000BD -S3154004A95000000000000000000000000000000000AD -S3154004A960000000000000000000000000000000009D -S3154004A970000000000000000000000000000000008D -S3154004A980000000000000000000000000000000007D -S3154004A990000000000000000000000000000000006D -S3154004A9A0000000000000000000000000000000005D -S3154004A9B0000000000000000000000000000000004D -S3154004A9C0000000000000000000000000000000003D -S3154004A9D0000000000000000000000000000000002D -S3154004A9E0000000000000000000000000000000001D -S3154004A9F0000000000000000000000000000000000D -S3154004AA0000000000000000000000000000000000FC -S3154004AA1000000000000000000000000000000000EC -S3154004AA2000000000000000000000000000000000DC -S3154004AA3000000000000000000000000000000000CC -S3154004AA4000000000000000000000000000000000BC -S3154004AA5000000000000000000000000000000000AC -S3154004AA60000000000000000000000000000000009C -S3154004AA70000000000000000000000000000000008C -S3154004AA80000000000000000000000000000000007C -S3154004AA90000000000000000000000000000000006C -S3154004AAA0000000000000000000000000000000005C -S3154004AAB0000000000000000000000000000000004C -S3154004AAC0000000000000000000000000000000003C -S3154004AAD0000000000000000000000000000000002C -S3154004AAE0000000000000000000000000000000001C -S3154004AAF0000000000000000000000000000000000C -S3154004AB0000000000000000000000000000000000FB -S3154004AB1000000000000000000000000000000000EB -S3154004AB2000000000000000000000000000000000DB -S3154004AB3000000000000000000000000000000000CB -S3154004AB4000000000000000000000000000000000BB -S3154004AB5000000000000000000000000000000000AB -S3154004AB60000000000000000000000000000000009B -S3154004AB70000000000000000000000000000000008B -S3154004AB80000000000000000000000000000000007B -S3154004AB90000000000000000000000000000000006B -S3154004ABA0000000000000000000000000000000005B -S3154004ABB0000000000000000000000000000000004B -S3154004ABC0000000000000000000000000000000003B -S3154004ABD0000000000000000000000000000000002B -S3154004ABE0000000000000000000000000000000001B -S3154004ABF0000000000000000000000000000000000B -S3154004AC0000000000000000000000000000000000FA -S3154004AC1000000000000000000000000000000000EA -S3154004AC2000000000000000000000000000000000DA -S3154004AC3000000000000000000000000000000000CA -S3154004AC4000000000000000000000000000000000BA -S3154004AC5000000000000000000000000000000000AA -S3154004AC60000000000000000000000000000000009A -S3154004AC70000000000000000000000000000000008A -S3154004AC80000000000000000000000000000000007A -S3154004AC90000000000000000000000000000000006A -S3154004ACA0000000000000000000000000000000005A -S3154004ACB0000000000000000000000000000000004A -S3154004ACC0000000000000000000000000000000003A -S3154004ACD0000000000000000000000000000000002A -S3154004ACE0000000000000000000000000000000001A -S3154004ACF0000000000000000000000000000000000A -S3154004AD0000000000000000000000000000000000F9 -S3154004AD1000000000000000000000000000000000E9 -S3154004AD2000000000000000000000000000000000D9 -S3154004AD3000000000000000000000000000000000C9 -S3154004AD4000000000000000000000000000000000B9 -S3154004AD5000000000000000000000000000000000A9 -S3154004AD600000000000000000000000000000000099 -S3154004AD700000000000000000000000000000000089 -S3154004AD800000000000000000000000000000000079 -S3154004AD900000000000000000000000000000000069 -S3154004ADA00000000000000000000000000000000059 -S3154004ADB00000000000000000000000000000000049 -S3154004ADC00000000000000000000000000000000039 -S3154004ADD00000000000000000000000000000000029 -S3154004ADE00000000000000000000000000000000019 -S3154004ADF00000000000000000000000000000000009 -S3154004AE0000000000000000000000000000000000F8 -S3154004AE1000000000000000000000000000000000E8 -S3154004AE2000000000000000000000000000000000D8 -S3154004AE3000000000000000000000000000000000C8 -S3154004AE4000000000000000000000000000000000B8 -S3154004AE5000000000000000000000000000000000A8 -S3154004AE600000000000000000000000000000000098 -S3154004AE700000000000000000000000000000000088 -S3154004AE800000000000000000000000000000000078 -S3154004AE900000000000000000000000000000000068 -S3154004AEA00000000000000000000000000000000058 -S3154004AEB00000000000000000000000000000000048 -S3154004AEC00000000000000000000000000000000038 -S3154004AED00000000000000000000000000000000028 -S3154004AEE00000000000000000000000000000000018 -S3154004AEF00000000000000000000000000000000008 -S3154004AF0000000000000000000000000000000000F7 -S3154004AF1000000000000000000000000000000000E7 -S3154004AF2000000000000000000000000000000000D7 -S3154004AF3000000000000000000000000000000000C7 -S3154004AF4000000000000000000000000000000000B7 -S3154004AF5000000000000000000000000000000000A7 -S3154004AF600000000000000000000000000000000097 -S3154004AF700000000000000000000000000000000087 -S3154004AF800000000000000000000000000000000077 -S3154004AF900000000000000000000000000000000067 -S3154004AFA00000000000000000000000000000000057 -S3154004AFB00000000000000000000000000000000047 -S3154004AFC00000000000000000000000000000000037 -S3154004AFD00000000000000000000000000000000027 -S3154004AFE00000000000000000000000000000000017 -S3154004AFF00000000000000000000000000000000007 -S3154004B00000000000000000000000000000000000F6 -S3154004B01000000000000000000000000000000000E6 -S3154004B02000000000000000000000000000000000D6 -S3154004B03000000000000000000000000000000000C6 -S3154004B04000000000000000000000000000000000B6 -S3154004B05000000000000000000000000000000000A6 -S3154004B0600000000000000000000000000000000096 -S3154004B0700000000000000000000000000000000086 -S3154004B0800000000000000000000000000000000076 -S3154004B0900000000000000000000000000000000066 -S3154004B0A00000000000000000000000000000000056 -S3154004B0B00000000000000000000000000000000046 -S3154004B0C00000000000000000000000000000000036 -S3154004B0D00000000000000000000000000000000026 -S3154004B0E00000000000000000000000000000000016 -S3154004B0F00000000000000000000000000000000006 -S3154004B10000000000000000000000000000000000F5 -S3154004B11000000000000000000000000000000000E5 -S3154004B12000000000000000000000000000000000D5 -S3154004B13000000000000000000000000000000000C5 -S3154004B14000000000000000000000000000000000B5 -S3154004B15000000000000000000000000000000000A5 -S3154004B1600000000000000000000000000000000095 -S3154004B1700000000000000000000000000000000085 -S3154004B1800000000000000000000000000000000075 -S3154004B1900000000000000000000000000000000065 -S3154004B1A00000000000000000000000000000000055 -S3154004B1B00000000000000000000000000000000045 -S3154004B1C00000000000000000000000000000000035 -S3154004B1D00000000000000000000000000000000025 -S3154004B1E00000000000000000000000000000000015 -S3154004B1F00000000000000000000000000000000005 -S3154004B20000000000000000000000000000000000F4 -S3154004B21000000000000000000000000000000000E4 -S3154004B22000000000000000000000000000000000D4 -S3154004B23000000000000000000000000000000000C4 -S3154004B24000000000000000000000000000000000B4 -S3154004B25000000000000000000000000000000000A4 -S3154004B2600000000000000000000000000000000094 -S3154004B2700000000000000000000000000000000084 -S3154004B2800000000000000000000000000000000074 -S3154004B2900000000000000000000000000000000064 -S3154004B2A00000000000000000000000000000000054 -S3154004B2B00000000000000000000000000000000044 -S3154004B2C00000000000000000000000000000000034 -S3154004B2D00000000000000000000000000000000024 -S3154004B2E00000000000000000000000000000000014 -S3154004B2F00000000000000000000000000000000004 -S3154004B30000000000000000000000000000000000F3 -S3154004B31000000000000000000000000000000000E3 -S3154004B32000000000000000000000000000000000D3 -S3154004B33000000000000000000000000000000000C3 -S3154004B34000000000000000000000000000000000B3 -S3154004B35000000000000000000000000000000000A3 -S3154004B3600000000000000000000000000000000093 -S3154004B3700000000000000000000000000000000083 -S3154004B3800000000000000000000000000000000073 -S3154004B3900000000000000000000000000000000063 -S3154004B3A00000000000000000000000000000000053 -S3154004B3B00000000000000000000000000000000043 -S3154004B3C00000000000000000000000000000000033 -S3154004B3D00000000000000000000000000000000023 -S3154004B3E00000000000000000000000000000000013 -S3154004B3F00000000000000000000000000000000003 -S3154004B40000000000000000000000000000000000F2 -S3154004B41000000000000000000000000000000000E2 -S3154004B42000000000000000000000000000000000D2 -S3154004B43000000000000000000000000000000000C2 -S3154004B44000000000000000000000000000000000B2 -S3154004B45000000000000000000000000000000000A2 -S3154004B4600000000000000000000000000000000092 -S3154004B4700000000000000000000000000000000082 -S3154004B4800000000000000000000000000000000072 -S3154004B4900000000000000000000000000000000062 -S3154004B4A00000000000000000000000000000000052 -S3154004B4B00000000000000000000000000000000042 -S3154004B4C00000000000000000000000000000000032 -S3154004B4D00000000000000000000000000000000022 -S3154004B4E00000000000000000000000000000000012 -S3154004B4F00000000000000000000000000000000002 -S3154004B50000000000000000000000000000000000F1 -S3154004B51000000000000000000000000000000000E1 -S3154004B52000000000000000000000000000000000D1 -S3154004B53000000000000000000000000000000000C1 -S3154004B54000000000000000000000000000000000B1 -S3154004B55000000000000000000000000000000000A1 -S3154004B5600000000000000000000000000000000091 -S3154004B5700000000000000000000000000000000081 -S3154004B5800000000000000000000000000000000071 -S3154004B5900000000000000000000000000000000061 -S3154004B5A00000000000000000000000000000000051 -S3154004B5B00000000000000000000000000000000041 -S3154004B5C00000000000000000000000000000000031 -S3154004B5D00000000000000000000000000000000021 -S3154004B5E00000000000000000000000000000000011 -S3154004B5F00000000000000000000000000000000001 -S3154004B60000000000000000000000000000000000F0 -S3154004B61000000000000000000000000000000000E0 -S3154004B62000000000000000000000000000000000D0 -S3154004B63000000000000000000000000000000000C0 -S3154004B64000000000000000000000000000000000B0 -S3154004B65000000000000000000000000000000000A0 -S3154004B6600000000000000000000000000000000090 -S3154004B6700000000000000000000000000000000080 -S3154004B6800000000000000000000000000000000070 -S3154004B6900000000000000000000000000000000060 -S3154004B6A00000000000000000000000000000000050 -S3154004B6B00000000000000000000000000000000040 -S3154004B6C00000000000000000000000000000000030 -S3154004B6D00000000000000000000000000000000020 -S3154004B6E00000000000000000000000000000000010 -S3154004B6F00000000000000000000000000000000000 -S3154004B70000000000000000000000000000000000EF -S3154004B71000000000000000000000000000000000DF -S3154004B72000000000000000000000000000000000CF -S3154004B73000000000000000000000000000000000BF -S3154004B74000000000000000000000000000000000AF -S3154004B750000000000000000000000000000000009F -S3154004B760000000000000000000000000000000008F -S3154004B770000000000000000000000000000000007F -S3154004B780000000000000000000000000000000006F -S3154004B790000000000000000000000000000000005F -S3154004B7A0000000000000000000000000000000004F -S3154004B7B0000000000000000000000000000000003F -S3154004B7C0000000000000000000000000000000002F -S3154004B7D0000000000000000000000000000000001F -S3154004B7E0000000000000000000000000000000000F -S3154004B7F000000000000000000000000000000000FF -S3154004B80000000000000000000000000000000000EE -S3154004B81000000000000000000000000000000000DE -S3154004B82000000000000000000000000000000000CE -S3154004B83000000000000000000000000000000000BE -S3154004B84000000000000000000000000000000000AE -S3154004B850000000000000000000000000000000009E -S3154004B860000000000000000000000000000000008E -S3154004B870000000000000000000000000000000007E -S3154004B880000000000000000000000000000000006E -S3154004B890000000000000000000000000000000005E -S3154004B8A0000000000000000000000000000000004E -S3154004B8B0000000000000000000000000000000003E -S3154004B8C0000000000000000000000000000000002E -S3154004B8D0000000000000000000000000000000001E -S3154004B8E0000000000000000000000000000000000E -S3154004B8F000000000000000000000000000000000FE -S3154004B90000000000000000000000000000000000ED -S3154004B91000000000000000000000000000000000DD -S3154004B92000000000000000000000000000000000CD -S3154004B93000000000000000000000000000000000BD -S3154004B94000000000000000000000000000000000AD -S3154004B950000000000000000000000000000000009D -S3154004B960000000000000000000000000000000008D -S3154004B970000000000000000000000000000000007D -S3154004B980000000000000000000000000000000006D -S3154004B990000000000000000000000000000000005D -S3154004B9A0000000000000000000000000000000004D -S3154004B9B0000000000000000000000000000000003D -S3154004B9C0000000000000000000000000000000002D -S3154004B9D0000000000000000000000000000000001D -S3154004B9E0000000000000000000000000000000000D -S3154004B9F000000000000000000000000000000000FD -S3154004BA0000000000000000000000000000000000EC -S3154004BA1000000000000000000000000000000000DC -S3154004BA2000000000000000000000000000000000CC -S3154004BA3000000000000000000000000000000000BC -S3154004BA4000000000000000000000000000000000AC -S3154004BA50000000000000000000000000000000009C -S3154004BA60000000000000000000000000000000008C -S3154004BA70000000000000000000000000000000007C -S3154004BA80000000000000000000000000000000006C -S3154004BA90000000000000000000000000000000005C -S3154004BAA0000000000000000000000000000000004C -S3154004BAB0000000000000000000000000000000003C -S3154004BAC0000000000000000000000000000000002C -S3154004BAD0000000000000000000000000000000001C -S3154004BAE0000000000000000000000000000000000C -S3154004BAF000000000000000000000000000000000FC -S3154004BB0000000000000000000000000000000000EB -S3154004BB1000000000000000000000000000000000DB -S3154004BB2000000000000000000000000000000000CB -S3154004BB3000000000000000000000000000000000BB -S3154004BB4000000000000000000000000000000000AB -S3154004BB50000000000000000000000000000000009B -S3154004BB60000000000000000000000000000000008B -S3154004BB70000000000000000000000000000000007B -S3154004BB80000000000000000000000000000000006B -S3154004BB90000000000000000000000000000000005B -S3154004BBA0000000000000000000000000000000004B -S3154004BBB0000000000000000000000000000000003B -S3154004BBC0000000000000000000000000000000002B -S3154004BBD0000000000000000000000000000000001B -S3154004BBE0000000000000000000000000000000000B -S3154004BBF000000000000000000000000000000000FB -S3154004BC0000000000000000000000000000000000EA -S3154004BC1000000000000000000000000000000000DA -S3154004BC2000000000000000000000000000000000CA -S3154004BC3000000000000000000000000000000000BA -S3154004BC4000000000000000000000000000000000AA -S3154004BC50000000000000000000000000000000009A -S3154004BC60000000000000000000000000000000008A -S3154004BC70000000000000000000000000000000007A -S3154004BC80000000000000000000000000000000006A -S3154004BC90000000000000000000000000000000005A -S3154004BCA0000000000000000000000000000000004A -S3154004BCB0000000000000000000000000000000003A -S3154004BCC0000000000000000000000000000000002A -S3154004BCD0000000000000000000000000000000001A -S3154004BCE0000000000000000000000000000000000A -S3154004BCF000000000000000000000000000000000FA -S3154004BD0000000000000000000000000000000000E9 -S3154004BD1000000000000000000000000000000000D9 -S3154004BD2000000000000000000000000000000000C9 -S3154004BD3000000000000000000000000000000000B9 -S3154004BD4000000000000000000000000000000000A9 -S3154004BD500000000000000000000000000000000099 -S3154004BD600000000000000000000000000000000089 -S3154004BD700000000000000000000000000000000079 -S3154004BD800000000000000000000000000000000069 -S3154004BD900000000000000000000000000000000059 -S3154004BDA00000000000000000000000000000000049 -S3154004BDB00000000000000000000000000000000039 -S3154004BDC00000000000000000000000000000000029 -S3154004BDD00000000000000000000000000000000019 -S3154004BDE00000000000000000000000000000000009 -S3154004BDF000000000000000000000000000000000F9 -S3154004BE0000000000000000000000000000000000E8 -S3154004BE1000000000000000000000000000000000D8 -S3154004BE2000000000000000000000000000000000C8 -S3154004BE3000000000000000000000000000000000B8 -S3154004BE4000000000000000000000000000000000A8 -S3154004BE500000000000000000000000000000000098 -S3154004BE600000000000000000000000000000000088 -S3154004BE700000000000000000000000000000000078 -S3154004BE800000000000000000000000000000000068 -S3154004BE900000000000000000000000000000000058 -S3154004BEA00000000000000000000000000000000048 -S3154004BEB00000000000000000000000000000000038 -S3154004BEC00000000000000000000000000000000028 -S3154004BED00000000000000000000000000000000018 -S3154004BEE00000000000000000000000000000000008 -S3154004BEF000000000000000000000000000000000F8 -S3154004BF0000000000000000000000000000000000E7 -S3154004BF1000000000000000000000000000000000D7 -S3154004BF2000000000000000000000000000000000C7 -S3154004BF3000000000000000000000000000000000B7 -S3154004BF4000000000000000000000000000000000A7 -S3154004BF500000000000000000000000000000000097 -S3154004BF600000000000000000000000000000000087 -S3154004BF700000000000000000000000000000000077 -S3154004BF800000000000000000000000000000000067 -S3154004BF900000000000000000000000000000000057 -S3154004BFA00000000000000000000000000000000047 -S3154004BFB00000000000000000000000000000000037 -S3154004BFC00000000000000000000000000000000027 -S3154004BFD00000000000000000000000000000000017 -S3154004BFE00000000000000000000000000000000007 -S3154004BFF000000000000000000000000000000000F7 -S3154004C00000000000000000000000000000000000E6 -S3154004C01000000000000000000000000000000000D6 -S3154004C02000000000000000000000000000000000C6 -S3154004C03000000000000000000000000000000000B6 -S3154004C04000000000000000000000000000000000A6 -S3154004C0500000000000000000000000000000000096 -S3154004C0600000000000000000000000000000000086 -S3154004C0700000000000000000000000000000000076 -S3154004C0800000000000000000000000000000000066 -S3154004C0900000000000000000000000000000000056 -S3154004C0A00000000000000000000000000000000046 -S3154004C0B00000000000000000000000000000000036 -S3154004C0C00000000000000000000000000000000026 -S3154004C0D00000000000000000000000000000000016 -S3154004C0E00000000000000000000000000000000006 -S3154004C0F000000000000000000000000000000000F6 -S3154004C10000000000000000000000000000000000E5 -S3154004C11000000000000000000000000000000000D5 -S3154004C12000000000000000000000000000000000C5 -S3154004C13000000000000000000000000000000000B5 -S3154004C14000000000000000000000000000000000A5 -S3154004C1500000000000000000000000000000000095 -S3154004C1600000000000000000000000000000000085 -S3154004C1700000000000000000000000000000000075 -S3154004C1800000000000000000000000000000000065 -S3154004C1900000000000000000000000000000000055 -S3154004C1A00000000000000000000000000000000045 -S3154004C1B00000000000000000000000000000000035 -S3154004C1C00000000000000000000000000000000025 -S3154004C1D00000000000000000000000000000000015 -S3154004C1E00000000000000000000000000000000005 -S3154004C1F000000000000000000000000000000000F5 -S3154004C20000000000000000000000000000000000E4 -S3154004C21000000000000000000000000000000000D4 -S3154004C22000000000000000000000000000000000C4 -S3154004C23000000000000000000000000000000000B4 -S3154004C24000000000000000000000000000000000A4 -S3154004C2500000000000000000000000000000000094 -S3154004C2600000000000000000000000000000000084 -S3154004C2700000000000000000000000000000000074 -S3154004C2800000000000000000000000000000000064 -S3154004C2900000000000000000000000000000000054 -S3154004C2A00000000000000000000000000000000044 -S3154004C2B00000000000000000000000000000000034 -S3154004C2C00000000000000000000000000000000024 -S3154004C2D00000000000000000000000000000000014 -S3154004C2E00000000000000000000000000000000004 -S3154004C2F000000000000000000000000000000000F4 -S3154004C30000000000000000000000000000000000E3 -S3154004C31000000000000000000000000000000000D3 -S3154004C32000000000000000000000000000000000C3 -S3154004C33000000000000000000000000000000000B3 -S3154004C34000000000000000000000000000000000A3 -S3154004C3500000000000000000000000000000000093 -S3154004C3600000000000000000000000000000000083 -S3154004C3700000000000000000000000000000000073 -S3154004C3800000000000000000000000000000000063 -S3154004C3900000000000000000000000000000000053 -S3154004C3A00000000000000000000000000000000043 -S3154004C3B00000000000000000000000000000000033 -S3154004C3C00000000000000000000000000000000023 -S3154004C3D00000000000000000000000000000000013 -S3154004C3E00000000000000000000000000000000003 -S3154004C3F000000000000000000000000000000000F3 -S3154004C40000000000000000000000000000000000E2 -S3154004C41000000000000000000000000000000000D2 -S3154004C42000000000000000000000000000000000C2 -S3154004C43000000000000000000000000000000000B2 -S3154004C44000000000000000000000000000000000A2 -S3154004C4500000000000000000000000000000000092 -S3154004C4600000000000000000000000000000000082 -S3154004C4700000000000000000000000000000000072 -S3154004C4800000000000000000000000000000000062 -S3154004C4900000000000000000000000000000000052 -S3154004C4A00000000000000000000000000000000042 -S3154004C4B00000000000000000000000000000000032 -S3154004C4C00000000000000000000000000000000022 -S3154004C4D00000000000000000000000000000000012 -S3154004C4E00000000000000000000000000000000002 -S3154004C4F000000000000000000000000000000000F2 -S3154004C50000000000000000000000000000000000E1 -S3154004C51000000000000000000000000000000000D1 -S3154004C52000000000000000000000000000000000C1 -S3154004C53000000000000000000000000000000000B1 -S3154004C54000000000000000000000000000000000A1 -S3154004C5500000000000000000000000000000000091 -S3154004C5600000000000000000000000000000000081 -S3154004C5700000000000000000000000000000000071 -S3154004C5800000000000000000000000000000000061 -S3154004C5900000000000000000000000000000000051 -S3154004C5A00000000000000000000000000000000041 -S3154004C5B00000000000000000000000000000000031 -S3154004C5C00000000000000000000000000000000021 -S3154004C5D00000000000000000000000000000000011 -S3154004C5E00000000000000000000000000000000001 -S3154004C5F000000000000000000000000000000000F1 -S3154004C60000000000000000000000000000000000E0 -S3154004C61000000000000000000000000000000000D0 -S3154004C62000000000000000000000000000000000C0 -S3154004C63000000000000000000000000000000000B0 -S3154004C64000000000000000000000000000000000A0 -S3154004C6500000000000000000000000000000000090 -S3154004C6600000000000000000000000000000000080 -S3154004C6700000000000000000000000000000000070 -S3154004C6800000000000000000000000000000000060 -S3154004C6900000000000000000000000000000000050 -S3154004C6A00000000000000000000000000000000040 -S3154004C6B00000000000000000000000000000000030 -S3154004C6C00000000000000000000000000000000020 -S3154004C6D00000000000000000000000000000000010 -S3154004C6E00000000000000000000000000000000000 -S3154004C6F000000000000000000000000000000000F0 -S3154004C70000000000000000000000000000000000DF -S3154004C71000000000000000000000000000000000CF -S3154004C72000000000000000000000000000000000BF -S3154004C73000000000000000000000000000000000AF -S3154004C740000000000000000000000000000000009F -S3154004C750000000000000000000000000000000008F -S3154004C760000000000000000000000000000000007F -S3154004C770000000000000000000000000000000006F -S3154004C780000000000000000000000000000000005F -S3154004C790000000000000000000000000000000004F -S3154004C7A0000000000000000000000000000000003F -S3154004C7B0000000000000000000000000000000002F -S3154004C7C0000000000000000000000000000000001F -S3154004C7D0000000000000000000000000000000000F -S3154004C7E000000000000000000000000000000000FF -S3154004C7F000000000000000000000000000000000EF -S3154004C80000000000000000000000000000000000DE -S3154004C81000000000000000000000000000000000CE -S3154004C82000000000000000000000000000000000BE -S3154004C83000000000000000000000000000000000AE -S3154004C840000000000000000000000000000000009E -S3154004C850000000000000000000000000000000008E -S3154004C860000000000000000000000000000000007E -S3154004C870000000000000000000000000000000006E -S3154004C880000000000000000000000000000000005E -S3154004C890000000000000000000000000000000004E -S3154004C8A0000000000000000000000000000000003E -S3154004C8B0000000000000000000000000000000002E -S3154004C8C0000000000000000000000000000000001E -S3154004C8D0000000000000000000000000000000000E -S3154004C8E000000000000000000000000000000000FE -S3154004C8F000000000000000000000000000000000EE -S3154004C90000000000000000000000000000000000DD -S3154004C91000000000000000000000000000000000CD -S3154004C92000000000000000000000000000000000BD -S3154004C93000000000000000000000000000000000AD -S3154004C940000000000000000000000000000000009D -S3154004C950000000000000000000000000000000008D -S3154004C960000000000000000000000000000000007D -S3154004C970000000000000000000000000000000006D -S3154004C980000000000000000000000000000000005D -S3154004C990000000000000000000000000000000004D -S3154004C9A0000000000000000000000000000000003D -S3154004C9B0000000000000000000000000000000002D -S3154004C9C0000000000000000000000000000000001D -S3154004C9D0000000000000000000000000000000000D -S3154004C9E000000000000000000000000000000000FD -S3154004C9F000000000000000000000000000000000ED -S3154004CA0000000000000000000000000000000000DC -S3154004CA1000000000000000000000000000000000CC -S3154004CA2000000000000000000000000000000000BC -S3154004CA3000000000000000000000000000000000AC -S3154004CA40000000000000000000000000000000009C -S3154004CA50000000000000000000000000000000008C -S3154004CA60000000000000000000000000000000007C -S3154004CA70000000000000000000000000000000006C -S3154004CA80000000000000000000000000000000005C -S3154004CA90000000000000000000000000000000004C -S3154004CAA0000000000000000000000000000000003C -S3154004CAB0000000000000000000000000000000002C -S3154004CAC0000000000000000000000000000000001C -S3154004CAD0000000000000000000000000000000000C -S3154004CAE000000000000000000000000000000000FC -S3154004CAF000000000000000000000000000000000EC -S3154004CB0000000000000000000000000000000000DB -S3154004CB1000000000000000000000000000000000CB -S3154004CB2000000000000000000000000000000000BB -S3154004CB3000000000000000000000000000000000AB -S3154004CB40000000000000000000000000000000009B -S3154004CB50000000000000000000000000000000008B -S3154004CB60000000000000000000000000000000007B -S3154004CB70000000000000000000000000000000006B -S3154004CB80000000000000000000000000000000005B -S3154004CB90000000000000000000000000000000004B -S3154004CBA0000000000000000000000000000000003B -S3154004CBB0000000000000000000000000000000002B -S3154004CBC0000000000000000000000000000000001B -S3154004CBD0000000000000000000000000000000000B -S3154004CBE000000000000000000000000000000000FB -S3154004CBF000000000000000000000000000000000EB -S3154004CC0000000000000000000000000000000000DA -S3154004CC1000000000000000000000000000000000CA -S3154004CC2000000000000000000000000000000000BA -S3154004CC3000000000000000000000000000000000AA -S3154004CC40000000000000000000000000000000009A -S3154004CC50000000000000000000000000000000008A -S3154004CC60000000000000000000000000000000007A -S3154004CC70000000000000000000000000000000006A -S3154004CC80000000000000000000000000000000005A -S3154004CC90000000000000000000000000000000004A -S3154004CCA0000000000000000000000000000000003A -S3154004CCB0000000000000000000000000000000002A -S3154004CCC0000000000000000000000000000000001A -S3154004CCD0000000000000000000000000000000000A -S3154004CCE000000000000000000000000000000000FA -S3154004CCF000000000000000000000000000000000EA -S3154004CD0000000000000000000000000000000000D9 -S3154004CD1000000000000000000000000000000000C9 -S3154004CD2000000000000000000000000000000000B9 -S3154004CD3000000000000000000000000000000000A9 -S3154004CD400000000000000000000000000000000099 -S3154004CD500000000000000000000000000000000089 -S3154004CD600000000000000000000000000000000079 -S3154004CD700000000000000000000000000000000069 -S3154004CD800000000000000000000000000000000059 -S3154004CD900000000000000000000000000000000049 -S3154004CDA00000000000000000000000000000000039 -S3154004CDB00000000000000000000000000000000029 -S3154004CDC00000000000000000000000000000000019 -S3154004CDD00000000000000000000000000000000009 -S3154004CDE000000000000000000000000000000000F9 -S3154004CDF000000000000000000000000000000000E9 -S3154004CE0000000000000000000000000000000000D8 -S3154004CE1000000000000000000000000000000000C8 -S3154004CE2000000000000000000000000000000000B8 -S3154004CE3000000000000000000000000000000000A8 -S3154004CE400000000000000000000000000000000098 -S3154004CE500000000000000000000000000000000088 -S3154004CE600000000000000000000000000000000078 -S3154004CE700000000000000000000000000000000068 -S3154004CE800000000000000000000000000000000058 -S3154004CE900000000000000000000000000000000048 -S3154004CEA00000000000000000000000000000000038 -S3154004CEB00000000000000000000000000000000028 -S3154004CEC00000000000000000000000000000000018 -S3154004CED00000000000000000000000000000000008 -S3154004CEE000000000000000000000000000000000F8 -S3154004CEF000000000000000000000000000000000E8 -S3154004CF0000000000000000000000000000000000D7 -S3154004CF1000000000000000000000000000000000C7 -S3154004CF2000000000000000000000000000000000B7 -S3154004CF3000000000000000000000000000000000A7 -S3154004CF400000000000000000000000000000000097 -S3154004CF500000000000000000000000000000000087 -S3154004CF600000000000000000000000000000000077 -S3154004CF700000000000000000000000000000000067 -S3154004CF800000000000000000000000000000000057 -S3154004CF900000000000000000000000000000000047 -S3154004CFA00000000000000000000000000000000037 -S3154004CFB00000000000000000000000000000000027 -S3154004CFC00000000000000000000000000000000017 -S3154004CFD00000000000000000000000000000000007 -S3154004CFE000000000000000000000000000000000F7 -S3154004CFF000000000000000000000000000000000E7 -S3154004D00000000000000000000000000000000000D6 -S3154004D01000000000000000000000000000000000C6 -S3154004D02000000000000000000000000000000000B6 -S3154004D03000000000000000000000000000000000A6 -S3154004D0400000000000000000000000000000000096 -S3154004D0500000000000000000000000000000000086 -S3154004D0600000000000000000000000000000000076 -S3154004D0700000000000000000000000000000000066 -S3154004D0800000000000000000000000000000000056 -S3154004D0900000000000000000000000000000000046 -S3154004D0A00000000000000000000000000000000036 -S3154004D0B00000000000000000000000000000000026 -S3154004D0C00000000000000000000000000000000016 -S3154004D0D00000000000000000000000000000000006 -S3154004D0E000000000000000000000000000000000F6 -S3154004D0F000000000000000000000000000000000E6 -S3154004D10000000000000000000000000000000000D5 -S3154004D11000000000000000000000000000000000C5 -S3154004D12000000000000000000000000000000000B5 -S3154004D13000000000000000000000000000000000A5 -S3154004D1400000000000000000000000000000000095 -S3154004D1500000000000000000000000000000000085 -S3154004D1600000000000000000000000000000000075 -S3154004D1700000000000000000000000000000000065 -S3154004D1800000000000000000000000000000000055 -S3154004D1900000000000000000000000000000000045 -S3154004D1A00000000000000000000000000000000035 -S3154004D1B00000000000000000000000000000000025 -S3154004D1C00000000000000000000000000000000015 -S3154004D1D00000000000000000000000000000000005 -S3154004D1E000000000000000000000000000000000F5 -S3154004D1F000000000000000000000000000000000E5 -S3154004D20000000000000000000000000000000000D4 -S3154004D21000000000000000000000000000000000C4 -S3154004D22000000000000000000000000000000000B4 -S3154004D23000000000000000000000000000000000A4 -S3154004D2400000000000000000000000000000000094 -S3154004D2500000000000000000000000000000000084 -S3154004D2600000000000000000000000000000000074 -S3154004D2700000000000000000000000000000000064 -S3154004D2800000000000000000000000000000000054 -S3154004D2900000000000000000000000000000000044 -S3154004D2A00000000000000000000000000000000034 -S3154004D2B00000000000000000000000000000000024 -S3154004D2C00000000000000000000000000000000014 -S3154004D2D00000000000000000000000000000000004 -S3154004D2E000000000000000000000000000000000F4 -S3154004D2F000000000000000000000000000000000E4 -S3154004D30000000000000000000000000000000000D3 -S3154004D31000000000000000000000000000000000C3 -S3154004D32000000000000000000000000000000000B3 -S3154004D33000000000000000000000000000000000A3 -S3154004D3400000000000000000000000000000000093 -S3154004D3500000000000000000000000000000000083 -S3154004D3600000000000000000000000000000000073 -S3154004D3700000000000000000000000000000000063 -S3154004D3800000000000000000000000000000000053 -S3154004D3900000000000000000000000000000000043 -S3154004D3A00000000000000000000000000000000033 -S3154004D3B00000000000000000000000000000000023 -S3154004D3C00000000000000000000000000000000013 -S3154004D3D00000000000000000000000000000000003 -S3154004D3E000000000000000000000000000000000F3 -S3154004D3F000000000000000000000000000000000E3 -S3154004D40000000000000000000000000000000000D2 -S3154004D41000000000000000000000000000000000C2 -S3154004D42000000000000000000000000000000000B2 -S3154004D43000000000000000000000000000000000A2 -S3154004D4400000000000000000000000000000000092 -S3154004D4500000000000000000000000000000000082 -S3154004D4600000000000000000000000000000000072 -S3154004D4700000000000000000000000000000000062 -S3154004D4800000000000000000000000000000000052 -S3154004D4900000000000000000000000000000000042 -S3154004D4A00000000000000000000000000000000032 -S3154004D4B00000000000000000000000000000000022 -S3154004D4C00000000000000000000000000000000012 -S3154004D4D00000000000000000000000000000000002 -S3154004D4E000000000000000000000000000000000F2 -S3154004D4F000000000000000000000000000000000E2 -S3154004D50000000000000000000000000000000000D1 -S3154004D51000000000000000000000000000000000C1 -S3154004D52000000000000000000000000000000000B1 -S3154004D53000000000000000000000000000000000A1 -S3154004D5400000000000000000000000000000000091 -S3154004D5500000000000000000000000000000000081 -S3154004D5600000000000000000000000000000000071 -S3154004D5700000000000000000000000000000000061 -S3154004D5800000000000000000000000000000000051 -S3154004D5900000000000000000000000000000000041 -S3154004D5A00000000000000000000000000000000031 -S3154004D5B00000000000000000000000000000000021 -S3154004D5C00000000000000000000000000000000011 -S3154004D5D00000000000000000000000000000000001 -S3154004D5E000000000000000000000000000000000F1 -S3154004D5F000000000000000000000000000000000E1 -S3154004D60000000000000000000000000000000000D0 -S3154004D61000000000000000000000000000000000C0 -S3154004D62000000000000000000000000000000000B0 -S3154004D63000000000000000000000000000000000A0 -S3154004D6400000000000000000000000000000000090 -S3154004D6500000000000000000000000000000000080 -S3154004D6600000000000000000000000000000000070 -S3154004D6700000000000000000000000000000000060 -S3154004D6800000000000000000000000000000000050 -S3154004D6900000000000000000000000000000000040 -S3154004D6A00000000000000000000000000000000030 -S3154004D6B00000000000000000000000000000000020 -S3154004D6C00000000000000000000000000000000010 -S3154004D6D00000000000000000000000000000000000 -S3154004D6E000000000000000000000000000000000F0 -S3154004D6F000000000000000000000000000000000E0 -S3154004D70000000000000000000000000000000000CF -S3154004D71000000000000000000000000000000000BF -S3154004D72000000000000000000000000000000000AF -S3154004D730000000000000000000000000000000009F -S3154004D740000000000000000000000000000000008F -S3154004D750000000000000000000000000000000007F -S3154004D760000000000000000000000000000000006F -S3154004D770000000000000000000000000000000005F -S3154004D780000000000000000000000000000000004F -S3154004D790000000000000000000000000000000003F -S3154004D7A0000000000000000000000000000000002F -S3154004D7B0000000000000000000000000000000001F -S3154004D7C0000000000000000000000000000000000F -S3154004D7D000000000000000000000000000000000FF -S3154004D7E000000000000000000000000000000000EF -S3154004D7F000000000000000000000000000000000DF -S3154004D80000000000000000000000000000000000CE -S3154004D81000000000000000000000000000000000BE -S3154004D82000000000000000000000000000000000AE -S3154004D830000000000000000000000000000000009E -S3154004D840000000000000000000000000000000008E -S3154004D850000000000000000000000000000000007E -S3154004D860000000000000000000000000000000006E -S3154004D870000000000000000000000000000000005E -S3154004D880000000000000000000000000000000004E -S3154004D890000000000000000000000000000000003E -S3154004D8A0000000000000000000000000000000002E -S3154004D8B0000000000000000000000000000000001E -S3154004D8C0000000000000000000000000000000000E -S3154004D8D000000000000000000000000000000000FE -S3154004D8E000000000000000000000000000000000EE -S3154004D8F000000000000000000000000000000000DE -S3154004D90000000000000000000000000000000000CD -S3154004D91000000000000000000000000000000000BD -S3154004D92000000000000000000000000000000000AD -S3154004D930000000000000000000000000000000009D -S3154004D940000000000000000000000000000000008D -S3154004D950000000000000000000000000000000007D -S3154004D960000000000000000000000000000000006D -S3154004D970000000000000000000000000000000005D -S3154004D980000000000000000000000000000000004D -S3154004D990000000000000000000000000000000003D -S3154004D9A0000000000000000000000000000000002D -S3154004D9B0000000000000000000000000000000001D -S3154004D9C0000000000000000000000000000000000D -S3154004D9D000000000000000000000000000000000FD -S3154004D9E000000000000000000000000000000000ED -S3154004D9F000000000000000000000000000000000DD -S3154004DA0000000000000000000000000000000000CC -S3154004DA1000000000000000000000000000000000BC -S3154004DA2000000000000000000000000000000000AC -S3154004DA30000000000000000000000000000000009C -S3154004DA40000000000000000000000000000000008C -S3154004DA50000000000000000000000000000000007C -S3154004DA60000000000000000000000000000000006C -S3154004DA70000000000000000000000000000000005C -S3154004DA80000000000000000000000000000000004C -S3154004DA90000000000000000000000000000000003C -S3154004DAA0000000000000000000000000000000002C -S3154004DAB0000000000000000000000000000000001C -S3154004DAC0000000000000000000000000000000000C -S3154004DAD000000000000000000000000000000000FC -S3154004DAE000000000000000000000000000000000EC -S3154004DAF000000000000000000000000000000000DC -S3154004DB0000000000000000000000000000000000CB -S3154004DB1000000000000000000000000000000000BB -S3154004DB2000000000000000000000000000000000AB -S3154004DB30000000000000000000000000000000009B -S3154004DB40000000000000000000000000000000008B -S3154004DB50000000000000000000000000000000007B -S3154004DB60000000000000000000000000000000006B -S3154004DB70000000000000000000000000000000005B -S3154004DB80000000000000000000000000000000004B -S3154004DB90000000000000000000000000000000003B -S3154004DBA0000000000000000000000000000000002B -S3154004DBB0000000000000000000000000000000001B -S3154004DBC0000000000000000000000000000000000B -S3154004DBD000000000000000000000000000000000FB -S3154004DBE000000000000000000000000000000000EB -S3154004DBF000000000000000000000000000000000DB -S3154004DC0000000000000000000000000000000000CA -S3154004DC1000000000000000000000000000000000BA -S3154004DC2000000000000000000000000000000000AA -S3154004DC30000000000000000000000000000000009A -S3154004DC40000000000000000000000000000000008A -S3154004DC50000000000000000000000000000000007A -S3154004DC60000000000000000000000000000000006A -S3154004DC70000000000000000000000000000000005A -S3154004DC80000000000000000000000000000000004A -S3154004DC90000000000000000000000000000000003A -S3154004DCA0000000000000000000000000000000002A -S3154004DCB0000000000000000000000000000000001A -S3154004DCC0000000000000000000000000000000000A -S3154004DCD000000000000000000000000000000000FA -S3154004DCE000000000000000000000000000000000EA -S3154004DCF000000000000000000000000000000000DA -S3154004DD0000000000000000000000000000000000C9 -S3154004DD1000000000000000000000000000000000B9 -S3154004DD2000000000000000000000000000000000A9 -S3154004DD300000000000000000000000000000000099 -S3154004DD400000000000000000000000000000000089 -S3154004DD500000000000000000000000000000000079 -S3154004DD600000000000000000000000000000000069 -S3154004DD700000000000000000000000000000000059 -S3154004DD800000000000000000000000000000000049 -S3154004DD900000000000000000000000000000000039 -S3154004DDA00000000000000000000000000000000029 -S3154004DDB00000000000000000000000000000000019 -S3154004DDC00000000000000000000000000000000009 -S3154004DDD000000000000000000000000000000000F9 -S3154004DDE000000000000000000000000000000000E9 -S3154004DDF000000000000000000000000000000000D9 -S3154004DE0000000000000000000000000000000000C8 -S3154004DE1000000000000000000000000000000000B8 -S3154004DE2000000000000000000000000000000000A8 -S3154004DE300000000000000000000000000000000098 -S3154004DE400000000000000000000000000000000088 -S3154004DE500000000000000000000000000000000078 -S3154004DE600000000000000000000000000000000068 -S3154004DE700000000000000000000000000000000058 -S3154004DE800000000000000000000000000000000048 -S3154004DE900000000000000000000000000000000038 -S3154004DEA00000000000000000000000000000000028 -S3154004DEB00000000000000000000000000000000018 -S3154004DEC00000000000000000000000000000000008 -S3154004DED000000000000000000000000000000000F8 -S3154004DEE000000000000000000000000000000000E8 -S3154004DEF000000000000000000000000000000000D8 -S3154004DF0000000000000000000000000000000000C7 -S3154004DF1000000000000000000000000000000000B7 -S3154004DF2000000000000000000000000000000000A7 -S3154004DF300000000000000000000000000000000097 -S3154004DF400000000000000000000000000000000087 -S3154004DF500000000000000000000000000000000077 -S3154004DF600000000000000000000000000000000067 -S3154004DF700000000000000000000000000000000057 -S3154004DF800000000000000000000000000000000047 -S3154004DF900000000000000000000000000000000037 -S3154004DFA00000000000000000000000000000000027 -S3154004DFB00000000000000000000000000000000017 -S3154004DFC00000000000000000000000000000000007 -S3154004DFD000000000000000000000000000000000F7 -S3154004DFE000000000000000000000000000000000E7 -S3154004DFF000000000000000000000000000000000D7 -S3154004E00000000000000000000000000000000000C6 -S3154004E01000000000000000000000000000000000B6 -S3154004E02000000000000000000000000000000000A6 -S3154004E0300000000000000000000000000000000096 -S3154004E0400000000000000000000000000000000086 -S3154004E0500000000000000000000000000000000076 -S3154004E0600000000000000000000000000000000066 -S3154004E0700000000000000000000000000000000056 -S3154004E0800000000000000000000000000000000046 -S3154004E0900000000000000000000000000000000036 -S3154004E0A00000000000000000000000000000000026 -S3154004E0B00000000000000000000000000000000016 -S3154004E0C00000000000000000000000000000000006 -S3154004E0D000000000000000000000000000000000F6 -S3154004E0E000000000000000000000000000000000E6 -S3154004E0F000000000000000000000000000000000D6 -S3154004E10000000000000000000000000000000000C5 -S3154004E11000000000000000000000000000000000B5 -S3154004E12000000000000000000000000000000000A5 -S3154004E1300000000000000000000000000000000095 -S3154004E1400000000000000000000000000000000085 -S3154004E1500000000000000000000000000000000075 -S3154004E1600000000000000000000000000000000065 -S3154004E1700000000000000000000000000000000055 -S3154004E1800000000000000000000000000000000045 -S3154004E1900000000000000000000000000000000035 -S3154004E1A00000000000000000000000000000000025 -S3154004E1B00000000000000000000000000000000015 -S3154004E1C00000000000000000000000000000000005 -S3154004E1D000000000000000000000000000000000F5 -S3154004E1E000000000000000000000000000000000E5 -S3154004E1F000000000000000000000000000000000D5 -S3154004E20000000000000000000000000000000000C4 -S3154004E21000000000000000000000000000000000B4 -S3154004E22000000000000000000000000000000000A4 -S3154004E2300000000000000000000000000000000094 -S3154004E2400000000000000000000000000000000084 -S3154004E2500000000000000000000000000000000074 -S3154004E2600000000000000000000000000000000064 -S3154004E2700000000000000000000000000000000054 -S3154004E2800000000000000000000000000000000044 -S3154004E2900000000000000000000000000000000034 -S3154004E2A00000000000000000000000000000000024 -S3154004E2B00000000000000000000000000000000014 -S3154004E2C00000000000000000000000000000000004 -S3154004E2D000000000000000000000000000000000F4 -S3154004E2E000000000000000000000000000000000E4 -S3154004E2F000000000000000000000000000000000D4 -S3154004E30000000000000000000000000000000000C3 -S3154004E31000000000000000000000000000000000B3 -S3154004E32000000000000000000000000000000000A3 -S3154004E3300000000000000000000000000000000093 -S3154004E3400000000000000000000000000000000083 -S3154004E3500000000000000000000000000000000073 -S3154004E3600000000000000000000000000000000063 -S3154004E3700000000000000000000000000000000053 -S3154004E3800000000000000000000000000000000043 -S3154004E3900000000000000000000000000000000033 -S3154004E3A00000000000000000000000000000000023 -S3154004E3B00000000000000000000000000000000013 -S3154004E3C00000000000000000000000000000000003 -S3154004E3D000000000000000000000000000000000F3 -S3154004E3E000000000000000000000000000000000E3 -S3154004E3F000000000000000000000000000000000D3 -S3154004E40000000000000000000000000000000000C2 -S3154004E41000000000000000000000000000000000B2 -S3154004E42000000000000000000000000000000000A2 -S3154004E4300000000000000000000000000000000092 -S3154004E4400000000000000000000000000000000082 -S3154004E4500000000000000000000000000000000072 -S3154004E4600000000000000000000000000000000062 -S3154004E4700000000000000000000000000000000052 -S3154004E4800000000000000000000000000000000042 -S3154004E4900000000000000000000000000000000032 -S3154004E4A00000000000000000000000000000000022 -S3154004E4B00000000000000000000000000000000012 -S3154004E4C00000000000000000000000000000000002 -S3154004E4D000000000000000000000000000000000F2 -S3154004E4E000000000000000000000000000000000E2 -S3154004E4F000000000000000000000000000000000D2 -S3154004E50000000000000000000000000000000000C1 -S3154004E51000000000000000000000000000000000B1 -S3154004E52000000000000000000000000000000000A1 -S3154004E5300000000000000000000000000000000091 -S3154004E5400000000000000000000000000000000081 -S3154004E5500000000000000000000000000000000071 -S3154004E5600000000000000000000000000000000061 -S3154004E5700000000000000000000000000000000051 -S3154004E5800000000000000000000000000000000041 -S3154004E5900000000000000000000000000000000031 -S3154004E5A00000000000000000000000000000000021 -S3154004E5B00000000000000000000000000000000011 -S3154004E5C00000000000000000000000000000000001 -S3154004E5D000000000000000000000000000000000F1 -S3154004E5E000000000000000000000000000000000E1 -S3154004E5F000000000000000000000000000000000D1 -S3154004E60000000000000000000000000000000000C0 -S3154004E61000000000000000000000000000000000B0 -S3154004E62000000000000000000000000000000000A0 -S3154004E6300000000000000000000000000000000090 -S3154004E6400000000000000000000000000000000080 -S3154004E6500000000000000000000000000000000070 -S3154004E6600000000000000000000000000000000060 -S3154004E6700000000000000000000000000000000050 -S3154004E6800000000000000000000000000000000040 -S3154004E6900000000000000000000000000000000030 -S3154004E6A00000000000000000000000000000000020 -S3154004E6B00000000000000000000000000000000010 -S3154004E6C00000000000000000000000000000000000 -S3154004E6D000000000000000000000000000000000F0 -S3154004E6E000000000000000000000000000000000E0 -S3154004E6F000000000000000000000000000000000D0 -S3154004E70000000000000000000000000000000000BF -S3154004E71000000000000000000000000000000000AF -S3154004E720000000000000000000000000000000009F -S3154004E730000000000000000000000000000000008F -S3154004E740000000000000000000000000000000007F -S3154004E750000000000000000000000000000000006F -S3154004E760000000000000000000000000000000005F -S3154004E770000000000000000000000000000000004F -S3154004E780000000000000000000000000000000003F -S3154004E790000000000000000000000000000000002F -S3154004E7A0000000000000000000000000000000001F -S3154004E7B0000000000000000000000000000000000F -S3154004E7C000000000000000000000000000000000FF -S3154004E7D000000000000000000000000000000000EF -S3154004E7E000000000000000000000000000000000DF -S3154004E7F000000000000000000000000000000000CF -S3154004E80000000000000000000000000000000000BE -S3154004E81000000000000000000000000000000000AE -S3154004E820000000000000000000000000000000009E -S3154004E830000000000000000000000000000000008E -S3154004E840000000000000000000000000000000007E -S3154004E850000000000000000000000000000000006E -S3154004E860000000000000000000000000000000005E -S3154004E870000000000000000000000000000000004E -S3154004E880000000000000000000000000000000003E -S3154004E890000000000000000000000000000000002E -S3154004E8A0000000000000000000000000000000001E -S3154004E8B0000000000000000000000000000000000E -S3154004E8C000000000000000000000000000000000FE -S3154004E8D000000000000000000000000000000000EE -S3154004E8E000000000000000000000000000000000DE -S3154004E8F000000000000000000000000000000000CE -S3154004E90000000000000000000000000000000000BD -S3154004E91000000000000000000000000000000000AD -S3154004E920000000000000000000000000000000009D -S3154004E930000000000000000000000000000000008D -S3154004E940000000000000000000000000000000007D -S3154004E950000000000000000000000000000000006D -S3154004E960000000000000000000000000000000005D -S3154004E970000000000000000000000000000000004D -S3154004E980000000000000000000000000000000003D -S3154004E990000000000000000000000000000000002D -S3154004E9A0000000000000000000000000000000001D -S3154004E9B0000000000000000000000000000000000D -S3154004E9C000000000000000000000000000000000FD -S3154004E9D000000000000000000000000000000000ED -S3154004E9E000000000000000000000000000000000DD -S3154004E9F000000000000000000000000000000000CD -S3154004EA0000000000000000000000000000000000BC -S3154004EA1000000000000000000000000000000000AC -S3154004EA20000000000000000000000000000000009C -S3154004EA30000000000000000000000000000000008C -S3154004EA40000000000000000000000000000000007C -S3154004EA50000000000000000000000000000000006C -S3154004EA60000000000000000000000000000000005C -S3154004EA70000000000000000000000000000000004C -S3154004EA80000000000000000000000000000000003C -S3154004EA90000000000000000000000000000000002C -S3154004EAA0000000000000000000000000000000001C -S3154004EAB0000000000000000000000000000000000C -S3154004EAC000000000000000000000000000000000FC -S3154004EAD000000000000000000000000000000000EC -S3154004EAE000000000000000000000000000000000DC -S3154004EAF000000000000000000000000000000000CC -S3154004EB0000000000000000000000000000000000BB -S3154004EB1000000000000000000000000000000000AB -S3154004EB20000000000000000000000000000000009B -S3154004EB30000000000000000000000000000000008B -S3154004EB40000000000000000000000000000000007B -S3154004EB50000000000000000000000000000000006B -S3154004EB60000000000000000000000000000000005B -S3154004EB70000000000000000000000000000000004B -S3154004EB80000000000000000000000000000000003B -S3154004EB90000000000000000000000000000000002B -S3154004EBA0000000000000000000000000000000001B -S3154004EBB0000000000000000000000000000000000B -S3154004EBC000000000000000000000000000000000FB -S3154004EBD000000000000000000000000000000000EB -S3154004EBE000000000000000000000000000000000DB -S3154004EBF000000000000000000000000000000000CB -S3154004EC0000000000000000000000000000000000BA -S3154004EC1000000000000000000000000000000000AA -S3154004EC20000000000000000000000000000000009A -S3154004EC30000000000000000000000000000000008A -S3154004EC40000000000000000000000000000000007A -S3154004EC50000000000000000000000000000000006A -S3154004EC60000000000000000000000000000000005A -S3154004EC70000000000000000000000000000000004A -S3154004EC80000000000000000000000000000000003A -S3154004EC90000000000000000000000000000000002A -S3154004ECA0000000000000000000000000000000001A -S3154004ECB0000000000000000000000000000000000A -S3154004ECC000000000000000000000000000000000FA -S3154004ECD000000000000000000000000000000000EA -S3154004ECE000000000000000000000000000000000DA -S3154004ECF000000000000000000000000000000000CA -S3154004ED0000000000000000000000000000000000B9 -S3154004ED1000000000000000000000000000000000A9 -S3154004ED200000000000000000000000000000000099 -S3154004ED300000000000000000000000000000000089 -S3154004ED400000000000000000000000000000000079 -S3154004ED500000000000000000000000000000000069 -S3154004ED600000000000000000000000000000000059 -S3154004ED700000000000000000000000000000000049 -S3154004ED800000000000000000000000000000000039 -S3154004ED900000000000000000000000000000000029 -S3154004EDA00000000000000000000000000000000019 -S3154004EDB00000000000000000000000000000000009 -S3154004EDC000000000000000000000000000000000F9 -S3154004EDD000000000000000000000000000000000E9 -S3154004EDE000000000000000000000000000000000D9 -S3154004EDF000000000000000000000000000000000C9 -S3154004EE0000000000000000000000000000000000B8 -S3154004EE1000000000000000000000000000000000A8 -S3154004EE200000000000000000000000000000000098 -S3154004EE300000000000000000000000000000000088 -S3154004EE400000000000000000000000000000000078 -S3154004EE500000000000000000000000000000000068 -S3154004EE600000000000000000000000000000000058 -S3154004EE700000000000000000000000000000000048 -S3154004EE800000000000000000000000000000000038 -S3154004EE900000000000000000000000000000000028 -S3154004EEA00000000000000000000000000000000018 -S3154004EEB00000000000000000000000000000000008 -S3154004EEC000000000000000000000000000000000F8 -S3154004EED000000000000000000000000000000000E8 -S3154004EEE000000000000000000000000000000000D8 -S3154004EEF000000000000000000000000000000000C8 -S3154004EF0000000000000000000000000000000000B7 -S3154004EF1000000000000000000000000000000000A7 -S3154004EF200000000000000000000000000000000097 -S3154004EF300000000000000000000000000000000087 -S3154004EF400000000000000000000000000000000077 -S3154004EF500000000000000000000000000000000067 -S3154004EF600000000000000000000000000000000057 -S3154004EF700000000000000000000000000000000047 -S3154004EF800000000000000000000000000000000037 -S3154004EF900000000000000000000000000000000027 -S3154004EFA00000000000000000000000000000000017 -S3154004EFB00000000000000000000000000000000007 -S3154004EFC000000000000000000000000000000000F7 -S3154004EFD000000000000000000000000000000000E7 -S3154004EFE000000000000000000000000000000000D7 -S3154004EFF000000000000000000000000000000000C7 -S3154004F00000000000000000000000000000000000B6 -S3154004F01000000000000000000000000000000000A6 -S3154004F0200000000000000000000000000000000096 -S3154004F0300000000000000000000000000000000086 -S3154004F0400000000000000000000000000000000076 -S3154004F0500000000000000000000000000000000066 -S3154004F0600000000000000000000000000000000056 -S3154004F0700000000000000000000000000000000046 -S3154004F0800000000000000000000000000000000036 -S3154004F0900000000000000000000000000000000026 -S3154004F0A00000000000000000000000000000000016 -S3154004F0B00000000000000000000000000000000006 -S3154004F0C000000000000000000000000000000000F6 -S3154004F0D000000000000000000000000000000000E6 -S3154004F0E000000000000000000000000000000000D6 -S3154004F0F000000000000000000000000000000000C6 -S3154004F10000000000000000000000000000000000B5 -S3154004F11000000000000000000000000000000000A5 -S3154004F1200000000000000000000000000000000095 -S3154004F1300000000000000000000000000000000085 -S3154004F1400000000000000000000000000000000075 -S3154004F1500000000000000000000000000000000065 -S3154004F1600000000000000000000000000000000055 -S3154004F1700000000000000000000000000000000045 -S3154004F1800000000000000000000000000000000035 -S3154004F1900000000000000000000000000000000025 -S3154004F1A00000000000000000000000000000000015 -S3154004F1B00000000000000000000000000000000005 -S3154004F1C000000000000000000000000000000000F5 -S3154004F1D000000000000000000000000000000000E5 -S3154004F1E000000000000000000000000000000000D5 -S3154004F1F000000000000000000000000000000000C5 -S3154004F20000000000000000000000000000000000B4 -S3154004F21000000000000000000000000000000000A4 -S3154004F2200000000000000000000000000000000094 -S3154004F2300000000000000000000000000000000084 -S3154004F2400000000000000000000000000000000074 -S3154004F2500000000000000000000000000000000064 -S3154004F2600000000000000000000000000000000054 -S3154004F2700000000000000000000000000000000044 -S3154004F2800000000000000000000000000000000034 -S3154004F2900000000000000000000000000000000024 -S3154004F2A00000000000000000000000000000000014 -S3154004F2B00000000000000000000000000000000004 -S3154004F2C000000000000000000000000000000000F4 -S3154004F2D000000000000000000000000000000000E4 -S3154004F2E000000000000000000000000000000000D4 -S3154004F2F000000000000000000000000000000000C4 -S3154004F30000000000000000000000000000000000B3 -S3154004F31000000000000000000000000000000000A3 -S3154004F3200000000000000000000000000000000093 -S3154004F3300000000000000000000000000000000083 -S3154004F3400000000000000000000000000000000073 -S3154004F3500000000000000000000000000000000063 -S3154004F3600000000000000000000000000000000053 -S3154004F3700000000000000000000000000000000043 -S3154004F3800000000000000000000000000000000033 -S3154004F3900000000000000000000000000000000023 -S3154004F3A00000000000000000000000000000000013 -S3154004F3B00000000000000000000000000000000003 -S3154004F3C000000000000000000000000000000000F3 -S3154004F3D000000000000000000000000000000000E3 -S3154004F3E000000000000000000000000000000000D3 -S3154004F3F000000000000000000000000000000000C3 -S3154004F40000000000000000000000000000000000B2 -S3154004F41000000000000000000000000000000000A2 -S3154004F4200000000000000000000000000000000092 -S3154004F4300000000000000000000000000000000082 -S3154004F4400000000000000000000000000000000072 -S3154004F4500000000000000000000000000000000062 -S3154004F4600000000000000000000000000000000052 -S3154004F4700000000000000000000000000000000042 -S3154004F4800000000000000000000000000000000032 -S3154004F4900000000000000000000000000000000022 -S3154004F4A00000000000000000000000000000000012 -S3154004F4B00000000000000000000000000000000002 -S3154004F4C000000000000000000000000000000000F2 -S3154004F4D000000000000000000000000000000000E2 -S3154004F4E000000000000000000000000000000000D2 -S3154004F4F000000000000000000000000000000000C2 -S3154004F50000000000000000000000000000000000B1 -S3154004F51000000000000000000000000000000000A1 -S3154004F5200000000000000000000000000000000091 -S3154004F5300000000000000000000000000000000081 -S3154004F5400000000000000000000000000000000071 -S3154004F5500000000000000000000000000000000061 -S3154004F5600000000000000000000000000000000051 -S3154004F5700000000000000000000000000000000041 -S3154004F5800000000000000000000000000000000031 -S3154004F5900000000000000000000000000000000021 -S3154004F5A00000000000000000000000000000000011 -S3154004F5B00000000000000000000000000000000001 -S3154004F5C000000000000000000000000000000000F1 -S3154004F5D000000000000000000000000000000000E1 -S3154004F5E000000000000000000000000000000000D1 -S3154004F5F000000000000000000000000000000000C1 -S3154004F60000000000000000000000000000000000B0 -S3154004F61000000000000000000000000000000000A0 -S3154004F6200000000000000000000000000000000090 -S3154004F6300000000000000000000000000000000080 -S3154004F6400000000000000000000000000000000070 -S3154004F6500000000000000000000000000000000060 -S3154004F6600000000000000000000000000000000050 -S3154004F6700000000000000000000000000000000040 -S3154004F6800000000000000000000000000000000030 -S3154004F6900000000000000000000000000000000020 -S3154004F6A00000000000000000000000000000000010 -S3154004F6B00000000000000000000000000000000000 -S3154004F6C000000000000000000000000000000000F0 -S3154004F6D000000000000000000000000000000000E0 -S3154004F6E000000000000000000000000000000000D0 -S3154004F6F000000000000000000000000000000000C0 -S3154004F70000000000000000000000000000000000AF -S3154004F710000000000000000000000000000000009F -S3154004F720000000000000000000000000000000008F -S3154004F730000000000000000000000000000000007F -S3154004F740000000000000000000000000000000006F -S3154004F750000000000000000000000000000000005F -S3154004F760000000000000000000000000000000004F -S3154004F770000000000000000000000000000000003F -S3154004F780000000000000000000000000000000002F -S3154004F790000000000000000000000000000000001F -S3154004F7A0000000000000000000000000000000000F -S3154004F7B000000000000000000000000000000000FF -S3154004F7C000000000000000000000000000000000EF -S3154004F7D000000000000000000000000000000000DF -S3154004F7E000000000000000000000000000000000CF -S3154004F7F000000000000000000000000000000000BF -S3154004F80000000000000000000000000000000000AE -S3154004F810000000000000000000000000000000009E -S3154004F820000000000000000000000000000000008E -S3154004F830000000000000000000000000000000007E -S3154004F840000000000000000000000000000000006E -S3154004F850000000000000000000000000000000005E -S3154004F860000000000000000000000000000000004E -S3154004F870000000000000000000000000000000003E -S3154004F880000000000000000000000000000000002E -S3154004F890000000000000000000000000000000001E -S3154004F8A0000000000000000000000000000000000E -S3154004F8B000000000000000000000000000000000FE -S3154004F8C000000000000000000000000000000000EE -S3154004F8D000000000000000000000000000000000DE -S3154004F8E000000000000000000000000000000000CE -S3154004F8F000000000000000000000000000000000BE -S3154004F90000000000000000000000000000000000AD -S3154004F910000000000000000000000000000000009D -S3154004F920000000000000000000000000000000008D -S3154004F930000000000000000000000000000000007D -S3154004F940000000000000000000000000000000006D -S3154004F950000000000000000000000000000000005D -S3154004F960000000000000000000000000000000004D -S3154004F970000000000000000000000000000000003D -S3154004F980000000000000000000000000000000002D -S3154004F990000000000000000000000000000000001D -S3154004F9A0000000000000000000000000000000000D -S3154004F9B000000000000000000000000000000000FD -S3154004F9C000000000000000000000000000000000ED -S3154004F9D000000000000000000000000000000000DD -S3154004F9E000000000000000000000000000000000CD -S3154004F9F000000000000000000000000000000000BD -S3154004FA0000000000000000000000000000000000AC -S3154004FA10000000000000000000000000000000009C -S3154004FA20000000000000000000000000000000008C -S3154004FA30000000000000000000000000000000007C -S3154004FA40000000000000000000000000000000006C -S3154004FA50000000000000000000000000000000005C -S3154004FA60000000000000000000000000000000004C -S3154004FA70000000000000000000000000000000003C -S3154004FA80000000000000000000000000000000002C -S3154004FA90000000000000000000000000000000001C -S3154004FAA0000000000000000000000000000000000C -S3154004FAB000000000000000000000000000000000FC -S3154004FAC000000000000000000000000000000000EC -S3154004FAD000000000000000000000000000000000DC -S3154004FAE000000000000000000000000000000000CC -S3154004FAF000000000000000000000000000000000BC -S3154004FB0000000000000000000000000000000000AB -S3154004FB10000000000000000000000000000000009B -S3154004FB20000000000000000000000000000000008B -S3154004FB30000000000000000000000000000000007B -S3154004FB40000000000000000000000000000000006B -S3154004FB50000000000000000000000000000000005B -S3154004FB60000000000000000000000000000000004B -S3154004FB70000000000000000000000000000000003B -S3154004FB80000000000000000000000000000000002B -S3154004FB90000000000000000000000000000000001B -S3154004FBA0000000000000000000000000000000000B -S3154004FBB000000000000000000000000000000000FB -S3154004FBC000000000000000000000000000000000EB -S3154004FBD000000000000000000000000000000000DB -S3154004FBE000000000000000000000000000000000CB -S3154004FBF000000000000000000000000000000000BB -S3154004FC0000000000000000000000000000000000AA -S3154004FC10000000000000000000000000000000009A -S3154004FC20000000000000000000000000000000008A -S3154004FC30000000000000000000000000000000007A -S3154004FC40000000000000000000000000000000006A -S3154004FC50000000000000000000000000000000005A -S3154004FC60000000000000000000000000000000004A -S3154004FC70000000000000000000000000000000003A -S3154004FC80000000000000000000000000000000002A -S3154004FC90000000000000000000000000000000001A -S3154004FCA0000000000000000000000000000000000A -S3154004FCB000000000000000000000000000000000FA -S3154004FCC000000000000000000000000000000000EA -S3154004FCD000000000000000000000000000000000DA -S3154004FCE000000000000000000000000000000000CA -S3154004FCF000000000000000000000000000000000BA -S3154004FD0000000000000000000000000000000000A9 -S3154004FD100000000000000000000000000000000099 -S3154004FD200000000000000000000000000000000089 -S3154004FD300000000000000000000000000000000079 -S3154004FD400000000000000000000000000000000069 -S3154004FD500000000000000000000000000000000059 -S3154004FD600000000000000000000000000000000049 -S3154004FD700000000000000000000000000000000039 -S3154004FD800000000000000000000000000000000029 -S3154004FD900000000000000000000000000000000019 -S3154004FDA00000000000000000000000000000000009 -S3154004FDB000000000000000000000000000000000F9 -S3154004FDC000000000000000000000000000000000E9 -S3154004FDD000000000000000000000000000000000D9 -S3154004FDE000000000000000000000000000000000C9 -S3154004FDF000000000000000000000000000000000B9 -S3154004FE0000000000000000000000000000000000A8 -S3154004FE100000000000000000000000000000000098 -S3154004FE200000000000000000000000000000000088 -S3154004FE300000000000000000000000000000000078 -S3154004FE400000000000000000000000000000000068 -S3154004FE500000000000000000000000000000000058 -S3154004FE600000000000000000000000000000000048 -S3154004FE700000000000000000000000000000000038 -S3154004FE800000000000000000000000000000000028 -S3154004FE900000000000000000000000000000000018 -S3154004FEA00000000000000000000000000000000008 -S3154004FEB000000000000000000000000000000000F8 -S3154004FEC000000000000000000000000000000000E8 -S3154004FED000000000000000000000000000000000D8 -S3154004FEE000000000000000000000000000000000C8 -S3154004FEF000000000000000000000000000000000B8 -S3154004FF0000000000000000000000000000000000A7 -S3154004FF100000000000000000000000000000000097 -S3154004FF200000000000000000000000000000000087 -S3154004FF300000000000000000000000000000000077 -S3154004FF400000000000000000000000000000000067 -S3154004FF500000000000000000000000000000000057 -S3154004FF600000000000000000000000000000000047 -S3154004FF700000000000000000000000000000000037 -S3154004FF800000000000000000000000000000000027 -S3154004FF900000000000000000000000000000000017 -S3154004FFA00000000000000000000000000000000007 -S3154004FFB000000000000000000000000000000000F7 -S3154004FFC000000000000000000000000000000000E7 -S3154004FFD000000000000000000000000000000000D7 -S3154004FFE000000000000000000000000000000000C7 -S3154004FFF000000000000000000000000000000000B7 -S3154005000000000002000000030000000000000000A0 -S315400500100000000100000000FFFFFFFE0000000396 -S3154005002055555554FFFFFFFE0000000355555554E1 -S31540050030700FFFFE00000007100249240000000073 -S315400500400000000000000000000000020000000360 -S315400500500000000000000003FFFFFFFEFFFFFFFF5B -S3154005006000000002FFFFFFFD000000000000000049 -S31540050070000000010000000000000000FFFFFFFF38 -S315400500800000000000000001FFFFFFFFFFFFFFFF2C -S31540050090FFFFFFFF00000001FFFFFFFFFFFFFFFE21 -S315400500A00000000300000000FFFFFFFEFFFFFFFD0D -S315400500B000000000000000090000000700000001E4 -S315400500C0FFFFFFF700000002FFFFFFFCFFFFFFF801 -S315400500D000000002FFFFFFFCFFFFFFF8FFFFFFFCEC -S315400500E00000000200000008FFFFFFFCFFFFFFFEC7 -S315400500F0FFFFFFF8FFFFFFF800000001FFFFFFF8D5 -S31540050100FFFFFFF7000000000000000B00000002A3 -S31540050110000000050000002F000000020000001747 -S3154005012000003039000002A700000012FFFF076CEF -S315400501300000004DFFFFFCC600003039FFFFFD59AA -S31540050140FFFFFFEEFFFF076CFFFFFFB30000033A1B -S3154005015000000091FFFFE84100000000FFFFFD841D -S31540050160FFFED02F000000000000F6FA006E498120 -S315400501700000000000000000000000000000000034 -S31540050180FFFFF0000000000200000003000000062B -S3154005019000000002FFFFFFFDFFFFFFFA0000000021 -S315400501A0000000010000000000000000FFFFFFFF07 -S315400501B00000000000000001FFFFFFFFFFFFFFFFFB -S315400501C0FFFFFFFF00000001FFFFFFFFFFFFFFFEF0 -S315400501D000000003FFFFFFFAFFFFFFFEFFFFFFFDE5 -S315400501E000000006000000000000000000000009B5 -S315400501F000000000000000000000000000000000B4 -S31540050200000000000000000100000002000000039D -S315400502100000000000000000000000000000000093 -S31540050220000000004005050C400505D8400506A41C -S315400502300000000000000000000000000000000073 -S315400502400000000000000000000000000000000063 -S31540050250000000004001B5800000000000000000DD -S315400502600000000000000000000000000000000043 -S315400502700000000000000000000000000000000033 -S315400502800000000000000000000000000000000023 -S315400502900000000000000000000000000000000013 -S315400502A00000000000000000000000000000000003 -S315400502B000000000000000000000000000000000F3 -S315400502C000000000000000000000000000000001E2 -S315400502D0330EABCD1234E66DDEEC0005000B0000A7 -S315400502E000000000000000000000000000000000C3 -S315400502F000000000000000000000000000000000B3 -S3154005030000000000000000000000000000000000A2 -S315400503100000000000000000000000000000000092 -S315400503200000000000000000000000000000000082 -S315400503300000000000000000000000000000000072 -S315400503400000000000000000000000000000000062 -S315400503500000000000000000000000000000000052 -S315400503600000000000000000000000000000000042 -S315400503700000000000000000000000000000000032 -S315400503800000000000000000000000000000000022 -S315400503900000000000000000000000000000000012 -S315400503A00000000000000000000000000000000002 -S315400503B000000000000000000000000000000000F2 -S315400503C000000000000000000000000000000000E2 -S315400503D000000000000000000000000000000000D2 -S315400503E000000000000000000000000000000000C2 -S315400503F000000000000000000000000000000000B2 -S3154005040000000000000000000000000000000000A1 -S315400504100000000000000000000000000000000091 -S315400504200000000000000000000000000000000081 -S315400504300000000000000000000000000000000071 -S315400504400000000000000000000000000000000061 -S315400504500000000000000000000000000000000051 -S315400504600000000000000000000000000000000041 -S315400504700000000000000000000000000000000031 -S315400504800000000000000000000000000000000021 -S315400504900000000000000000000000000000000011 -S315400504A00000000000000000000000000000000001 -S315400504B000000000000000000000000000000000F1 -S315400504C000000000000000000000000000000000E1 -S315400504D000000000000000000000000000000000D1 -S315400504E000000000000000000000000000000000C1 -S315400504F000000000000000000000000000000000B1 -S3154005050000000000000000000000000000000000A0 -S315400505100000000000000000000000000000000090 -S315400505200000000000000000000000000000000080 -S315400505300000000000000000000000000000000070 -S315400505400000000000000000000000000000000060 -S315400505500000000000000000000000000000000050 -S315400505600000000000000000000000000000000040 -S315400505700000000000000000000000000000000030 -S315400505800000000000000000000000000000000020 -S315400505900000000000000000000000000000000010 -S315400505A00000000000000000000000000000000000 -S315400505B000000000000000000000000000000000F0 -S315400505C000000000000000000000000000000000E0 -S315400505D000000000000000000000000000000000D0 -S315400505E000000000000000000000000000000000C0 -S315400505F000000000000000000000000000000000B0 -S31540050600000000000000000000000000000000009F -S31540050610000000000000000000000000000000008F -S31540050620000000000000000000000000000000007F -S31540050630000000000000000000000000000000006F -S31540050640000000000000000000000000000000005F -S31540050650000000000000000000000000000000004F -S31540050660000000000000000000000000000000003F -S31540050670000000000000000000000000000000002F -S31540050680000000000000000000000000000000001F -S31540050690000000000000000000000000000000000F -S315400506A000000000000000000000000000000000FF -S315400506B000000000000000000000000000000000EF -S315400506C000000000000000000000000000000000DF -S315400506D000000000000000000000000000000000CF -S315400506E000000000000000000000000000000000BF -S315400506F000000000000000000000000000000000AF -S31540050700000000000000000000000000000000009E -S31540050710000000000000000000000000000000008E -S31540050720000000000000000000000000000000007E -S31540050730000000000000000000000000000000006E -S31540050740000000000000000000000000000000005E -S31540050750000000000000000000000000000000004E -S31540050760000000000000000000000000000000003E -S315400507704005022000000000FFFFFFFF00020000C9 -S315400507800000000000000000400507804005078086 -S3154005079040050788400507884005079040050790AE -S315400507A04005079840050798400507A0400507A05E -S315400507B0400507A8400507A8400507B0400507B00E -S315400507C0400507B8400507B8400507C0400507C0BE -S315400507D0400507C8400507C8400507D0400507D06E -S315400507E0400507D8400507D8400507E0400507E01E -S315400507F0400507E8400507E8400507F0400507F0CE -S31540050800400507F8400507F840050800400508007B -S315400508104005080840050808400508104005081029 -S3154005082040050818400508184005082040050820D9 -S315400508304005082840050828400508304005083089 -S315400508404005083840050838400508404005084039 -S3154005085040050848400508484005085040050850E9 -S315400508604005085840050858400508604005086099 -S315400508704005086840050868400508704005087049 -S3154005088040050878400508784005088040050880F9 -S3154005089040050888400508884005089040050890A9 -S315400508A04005089840050898400508A0400508A059 -S315400508B0400508A8400508A8400508B0400508B009 -S315400508C0400508B8400508B8400508C0400508C0B9 -S315400508D0400508C8400508C8400508D0400508D069 -S315400508E0400508D8400508D8400508E0400508E019 -S315400508F0400508E8400508E8400508F0400508F0C9 -S31540050900400508F8400508F8400509004005090076 -S315400509104005090840050908400509104005091024 -S3154005092040050918400509184005092040050920D4 -S315400509304005092840050928400509304005093084 -S315400509404005093840050938400509404005094034 -S3154005095040050948400509484005095040050950E4 -S315400509604005095840050958400509604005096094 -S315400509704005096840050968400509704005097044 -S3154005098040050978400509784005098040050980F4 -S3154005099040050988400509884005099040050990A4 -S315400509A04005099840050998400509A0400509A054 -S315400509B0400509A8400509A8400509B0400509B004 -S315400509C0400509B8400509B8400509C0400509C0B4 -S315400509D0400509C8400509C8400509D0400509D064 -S315400509E0400509D8400509D8400509E0400509E014 -S315400509F0400509E8400509E8400509F0400509F0C4 -S31540050A00400509F8400509F840050A0040050A0071 -S31540050A1040050A0840050A0840050A1040050A101F -S31540050A2040050A1840050A1840050A2040050A20CF -S31540050A3040050A2840050A2840050A3040050A307F -S31540050A4040050A3840050A3840050A4040050A402F -S31540050A5040050A4840050A4840050A5040050A50DF -S31540050A6040050A5840050A5840050A6040050A608F -S31540050A7040050A6840050A6840050A7040050A703F -S31540050A8040050A7840050A7840050A8040050A80EF -S31540050A9040050A8840050A8840050A9040050A909F -S31540050AA040050A9840050A9840050AA040050AA04F -S31540050AB040050AA840050AA840050AB040050AB0FF -S31540050AC040050AB840050AB840050AC040050AC0AF -S31540050AD040050AC840050AC840050AD040050AD05F -S31540050AE040050AD840050AD840050AE040050AE00F -S31540050AF040050AE840050AE840050AF040050AF0BF -S31540050B0040050AF840050AF840050B0040050B006C -S31540050B1040050B0840050B0840050B1040050B101A -S31540050B2040050B1840050B1840050B2040050B20CA -S31540050B3040050B2840050B2840050B3040050B307A -S31540050B4040050B3840050B3840050B4040050B402A -S31540050B5040050B4840050B4840050B5040050B50DA -S31540050B6040050B5840050B5840050B6040050B608A -S31540050B7040050B6840050B6840050B7040050B703A -S31540050B8040050B7840050B780000000040050B88B2 -S31540050B900000000000000000000000000000000208 -S31540050BA000000000000000000000000000000000FA -S31540050BB000000000000000000000000000000000EA -S31540050BC000000000000000000000000000000000DA -S31540050BD000000000000000000000000000000000CA -S31540050BE000000000000000000000000000000000BA -S31540050BF000000000000000000000000000000000AA -S31540050C000000000000000000000000000000000099 -S31540050C100000000000000000000000000000000089 -S31540050C200000000000000000000000000000000079 -S31540050C3080000100000000080000000700000006D3 -S31540050C40000000030000000000000000FFFF8AD0FE -S30940050C5080000310C2 +S31540048C200000000000000000800003100000000067 +S31540048C30000000008000010000000008000000075A +S31540048C40000000060000000300000000FFFF8AD079 S70540000000BA diff --git a/designs/leon3-ge-hpe-mini-lattice/systest.c b/designs/leon3-xilinx-kc705/systest.c similarity index 96% rename from designs/leon3-ge-hpe-mini-lattice/systest.c rename to designs/leon3-xilinx-kc705/systest.c index 100c2697..f5647a5f 100644 --- a/designs/leon3-ge-hpe-mini-lattice/systest.c +++ b/designs/leon3-xilinx-kc705/systest.c @@ -1,7 +1,9 @@ + main() { + report_start(); base_test(); diff --git a/designs/leon3-xilinx-kc705/testbench.vhd b/designs/leon3-xilinx-kc705/testbench.vhd new file mode 100644 index 00000000..8bfa83eb --- /dev/null +++ b/designs/leon3-xilinx-kc705/testbench.vhd @@ -0,0 +1,513 @@ +----------------------------------------------------------------------------- +-- LEON3 Demonstration design test bench +-- Copyright (C) 2004 Jiri Gaisler, Gaisler Research +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler +-- +-- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +------------------------------------------------------------------------------ + +library ieee; +use ieee.std_logic_1164.all; +library gaisler; +use gaisler.libdcom.all; +use gaisler.sim.all; +library grlib; +use grlib.amba.all; +use grlib.stdlib.all; +use grlib.devices.all; +library micron; +use micron.all; +library techmap; +use techmap.gencomp.all; +use work.debug.all; + +use work.config.all; + +entity testbench is + generic ( + fabtech : integer := CFG_FABTECH; + memtech : integer := CFG_MEMTECH; + padtech : integer := CFG_PADTECH; + clktech : integer := CFG_CLKTECH; + disas : integer := CFG_DISAS; -- Enable disassembly to console + dbguart : integer := CFG_DUART; -- Print UART on console + pclow : integer := CFG_PCLOW; + testahb : boolean := true; + USE_MIG_INTERFACE_MODEL : boolean := false + + ); +end; + +architecture behav of testbench is + +-- DDR3 Simulation parameters +constant SIM_BYPASS_INIT_CAL : string := "FAST"; + -- # = "OFF" - Complete memory init & + -- calibration sequence + -- # = "SKIP" - Not supported + -- # = "FAST" - Complete memory init & use + -- abbreviated calib sequence + +constant SIMULATION : string := "TRUE"; + -- Should be TRUE during design simulations and + -- FALSE during implementations + + +constant promfile : string := "prom.srec"; -- rom contents +constant sramfile : string := "sram.srec"; -- ram contents +constant sdramfile : string := "sdram.srec"; -- sdram contents + +signal clk : std_logic := '0'; +signal Rst : std_logic := '0'; + +signal address : std_logic_vector(25 downto 0); +signal data : std_logic_vector(15 downto 0); +signal button : std_logic_vector(2 downto 0) := "000"; +signal genio : std_logic_vector(59 downto 0); +signal romsn : std_logic; +signal oen : std_ulogic; +signal writen : std_ulogic; +signal adv : std_logic; + +signal GND : std_ulogic := '0'; +signal VCC : std_ulogic := '1'; +signal NC : std_ulogic := 'Z'; + +signal txd1 , rxd1 , dsurx : std_logic; +signal txd2 , rxd2 , dsutx : std_logic; +signal ctsn1 , rtsn1 , dsuctsn : std_ulogic; +signal ctsn2 , rtsn2 , dsurtsn : std_ulogic; + +signal phy_mii_data : std_logic; +signal phy_tx_clk : std_ulogic; +signal phy_rx_clk : std_ulogic; +signal phy_rx_data : std_logic_vector(7 downto 0); +signal phy_dv : std_ulogic; +signal phy_rx_er : std_ulogic; +signal phy_col : std_ulogic; +signal phy_crs : std_ulogic; +signal phy_tx_data : std_logic_vector(7 downto 0); +signal phy_tx_en : std_ulogic; +signal phy_tx_er : std_ulogic; +signal phy_mii_clk : std_ulogic; +signal phy_rst_n : std_ulogic; +signal phy_gtx_clk : std_ulogic; +signal phy_mii_int_n : std_ulogic; + +signal clk27 : std_ulogic := '0'; +signal clk200p : std_ulogic := '0'; +signal clk200n : std_ulogic := '1'; +signal clk33 : std_ulogic := '0'; + +signal iic_scl : std_ulogic; +signal iic_sda : std_ulogic; +signal ddc_scl : std_ulogic; +signal ddc_sda : std_ulogic; +signal dvi_iic_scl : std_logic; +signal dvi_iic_sda : std_logic; + +signal tft_lcd_data : std_logic_vector(11 downto 0); +signal tft_lcd_clk_p : std_ulogic; +signal tft_lcd_clk_n : std_ulogic; +signal tft_lcd_hsync : std_ulogic; +signal tft_lcd_vsync : std_ulogic; +signal tft_lcd_de : std_ulogic; +signal tft_lcd_reset_b : std_ulogic; + +-- DDR3 memory +signal ddr3_dq : std_logic_vector(63 downto 0); +signal ddr3_dqs_p : std_logic_vector(7 downto 0); +signal ddr3_dqs_n : std_logic_vector(7 downto 0); +signal ddr3_addr : std_logic_vector(13 downto 0); +signal ddr3_ba : std_logic_vector(2 downto 0); +signal ddr3_ras_n : std_logic; +signal ddr3_cas_n : std_logic; +signal ddr3_we_n : std_logic; +signal ddr3_reset_n : std_logic; +signal ddr3_ck_p : std_logic_vector(0 downto 0); +signal ddr3_ck_n : std_logic_vector(0 downto 0); +signal ddr3_cke : std_logic_vector(0 downto 0); +signal ddr3_cs_n : std_logic_vector(0 downto 0); +signal ddr3_dm : std_logic_vector(7 downto 0); +signal ddr3_odt : std_logic_vector(0 downto 0); + +-- SPI flash +signal spi_sel_n : std_ulogic; +signal spi_clk : std_ulogic; +signal spi_mosi : std_ulogic; + +signal dsurst : std_ulogic; +signal errorn : std_logic; + +signal switch : std_logic_vector(3 downto 0); -- I/O port +signal led : std_logic_vector(6 downto 0); -- I/O port +constant lresp : boolean := false; + +signal tdqs_n : std_logic; + +component leon3mp is + generic ( + fabtech : integer := CFG_FABTECH; + memtech : integer := CFG_MEMTECH; + padtech : integer := CFG_PADTECH; + clktech : integer := CFG_CLKTECH; + disas : integer := CFG_DISAS; -- Enable disassembly to console + dbguart : integer := CFG_DUART; -- Print UART on console + pclow : integer := CFG_PCLOW; + testahb : boolean := false; + SIM_BYPASS_INIT_CAL : string := "OFF"; + SIMULATION : string := "FALSE"; + USE_MIG_INTERFACE_MODEL : boolean := false + ); + port ( + reset : in std_ulogic; + clk200p : in std_ulogic; -- 200 MHz clock + clk200n : in std_ulogic; -- 200 MHz clock + address : out std_logic_vector(25 downto 0); + data : inout std_logic_vector(15 downto 0); + oen : out std_ulogic; + writen : out std_ulogic; + romsn : out std_logic; + adv : out std_logic; + ddr3_dq : inout std_logic_vector(63 downto 0); + ddr3_dqs_p : inout std_logic_vector(7 downto 0); + ddr3_dqs_n : inout std_logic_vector(7 downto 0); + ddr3_addr : out std_logic_vector(13 downto 0); + ddr3_ba : out std_logic_vector(2 downto 0); + ddr3_ras_n : out std_logic; + ddr3_cas_n : out std_logic; + ddr3_we_n : out std_logic; + ddr3_reset_n : out std_logic; + ddr3_ck_p : out std_logic_vector(0 downto 0); + ddr3_ck_n : out std_logic_vector(0 downto 0); + ddr3_cke : out std_logic_vector(0 downto 0); + ddr3_cs_n : out std_logic_vector(0 downto 0); + ddr3_dm : out std_logic_vector(7 downto 0); + ddr3_odt : out std_logic_vector(0 downto 0); + dsurx : in std_ulogic; + dsutx : out std_ulogic; + dsuctsn : in std_ulogic; + dsurtsn : out std_ulogic; + button : in std_logic_vector(2 downto 0); + switch : inout std_logic_vector(3 downto 0); + led : out std_logic_vector(6 downto 0); + iic_scl : inout std_ulogic; + iic_sda : inout std_ulogic + ); +end component; + +component ddr3_model is + port ( + rst_n : in std_logic; + ck : in std_logic; + ck_n : in std_logic; + cke : in std_logic; + cs_n : in std_logic; + ras_n : in std_logic; + cas_n : in std_logic; + we_n : in std_logic; + dm_tdqs : inout std_logic; + ba : in std_logic_vector(2 downto 0); + addr : in std_logic_vector(13 downto 0); + dq : inout std_logic_vector(7 downto 0); + dqs : inout std_logic; + dqs_n : inout std_logic; + tdqs_n : out std_logic; + odt : in std_logic + ); +end component ddr3_model; + +begin + + -- clock, reset and misc + clk200p <= not clk200p after 2.5 ns; + clk200n <= not clk200n after 2.5 ns; + rst <= not dsurst; + rxd1 <= 'H'; ctsn1 <= '0'; + rxd2 <= 'H'; ctsn2 <= '0'; + button <= "000"; + switch <= "0000"; + + cpu : leon3mp + generic map ( + fabtech => fabtech, + memtech => memtech, + padtech => padtech, + clktech => clktech, + disas => disas, + dbguart => dbguart, + pclow => pclow, + testahb => testahb, + SIM_BYPASS_INIT_CAL => SIM_BYPASS_INIT_CAL, + SIMULATION => SIMULATION, + USE_MIG_INTERFACE_MODEL => USE_MIG_INTERFACE_MODEL + ) + port map ( + reset => rst, + clk200p => clk200p, + clk200n => clk200n, + address => address, + data => data, + oen => oen, + writen => writen, + romsn => romsn, + adv => adv, + ddr3_dq => ddr3_dq, + ddr3_dqs_p => ddr3_dqs_p, + ddr3_dqs_n => ddr3_dqs_n, + ddr3_addr => ddr3_addr, + ddr3_ba => ddr3_ba, + ddr3_ras_n => ddr3_ras_n, + ddr3_cas_n => ddr3_cas_n, + ddr3_we_n => ddr3_we_n, + ddr3_reset_n => ddr3_reset_n, + ddr3_ck_p => ddr3_ck_p, + ddr3_ck_n => ddr3_ck_n, + ddr3_cke => ddr3_cke, + ddr3_cs_n => ddr3_cs_n, + ddr3_dm => ddr3_dm, + ddr3_odt => ddr3_odt, + dsurx => dsurx, + dsutx => dsutx, + dsuctsn => dsuctsn, + dsurtsn => dsurtsn, + button => button, + switch => switch, + led => led, + iic_scl => iic_scl, + iic_sda => iic_sda + ); + + prom0 : for i in 0 to 1 generate + sr0 : sram generic map (index => i+4, abits => 26, fname => promfile) + port map (address(25 downto 0), data(15-i*8 downto 8-i*8), romsn, + writen, oen); + end generate; + + -- ************************************************************************** + -- * Memory Models instantiations + -- ************************************************************************** + gen_mem_model : if (USE_MIG_INTERFACE_MODEL /= true) generate + ddr3mem : if (CFG_MIG_SERIES7 = 1) generate + gen_mem: for i in 0 to 7 generate + u1: ddr3_model port map + ( + rst_n => ddr3_reset_n, + ck => ddr3_ck_p(0), + ck_n => ddr3_ck_n(0), + cke => ddr3_cke(0), + cs_n => ddr3_cs_n(0), + ras_n => ddr3_ras_n, + cas_n => ddr3_cas_n, + we_n => ddr3_we_n, + dm_tdqs => ddr3_dm(i), + ba => ddr3_ba, + addr => ddr3_addr, + dq => ddr3_dq((8*i+7) downto (8*i)), + dqs => ddr3_dqs_p(i), + dqs_n => ddr3_dqs_n(i), + tdqs_n => OPEN, + odt => ddr3_odt(0) + ); + end generate gen_mem; + end generate ddr3mem; -- DDR3 + end generate gen_mem_model; + + mig_mem_model : if (USE_MIG_INTERFACE_MODEL = true) generate + ddr3_dq <= (others => 'Z'); + ddr3_dqs_p <= (others => 'Z'); + ddr3_dqs_n <= (others => 'Z'); + end generate mig_mem_model; + + errorn <= led(1); + errorn <= 'H'; -- ERROR pull-up + + phy0 : if (CFG_GRETH = 1) generate + phy_mii_data <= 'H'; + p0: phy + generic map (address => 7) + port map(phy_rst_n, phy_mii_data, phy_tx_clk, phy_rx_clk, phy_rx_data, + phy_dv, phy_rx_er, phy_col, phy_crs, phy_tx_data, phy_tx_en, + phy_tx_er, phy_mii_clk, phy_gtx_clk); + end generate; + + iuerr : process + begin + wait for 210 us; -- This is for proper DDR3 behaviour durign init phase not needed durin simulation + wait on led(3); -- DDR3 Memory Init ready + wait for 5000 ns; + if to_x01(errorn) = '1' then wait on errorn; end if; + assert (to_x01(errorn) = '1') + report "*** IU in error mode, simulation halted ***" + severity failure ; -- this should be a failure + end process; + + data <= buskeep(data) after 5 ns; + + dsucom : process + procedure dsucfg(signal dsurx : in std_ulogic; signal dsutx : out std_ulogic) is + variable w32 : std_logic_vector(31 downto 0); + variable c8 : std_logic_vector(7 downto 0); + constant txp : time := 320 * 1 ns; + begin + dsutx <= '1'; + dsurst <= '0'; + wait for 2500 ns; + wait for 210 us; -- This is for proper DDR3 behaviour durign init phase not needed durin simulation + dsurst <= '1'; + wait on led(3); -- Wait for DDR3 Memory Init ready + wait for 5000 ns; + txc(dsutx, 16#55#, txp); -- sync uart + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); + rxi(dsurx, w32, txp, lresp); + wait; + + -- do test read and writes to DDR3 to check status + -- Write + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); + txa(dsutx, 16#01#, 16#23#, 16#45#, 16#67#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#04#, txp); + txa(dsutx, 16#89#, 16#AB#, 16#CD#, 16#EF#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#08#, txp); + txa(dsutx, 16#08#, 16#19#, 16#2A#, 16#3B#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#0C#, txp); + txa(dsutx, 16#4C#, 16#5D#, 16#6E#, 16#7F#, txp); + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); + rxi(dsurx, w32, txp, lresp); + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#04#, txp); + rxi(dsurx, w32, txp, lresp); + report "* Read " & tost(w32); + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#08#, txp); + rxi(dsurx, w32, txp, lresp); + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#0C#, txp); + rxi(dsurx, w32, txp, lresp); + wait; + wait for 5000 ns; + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); + txa(dsutx, 16#00#, 16#00#, 16#80#, 16#02#, txp); + wait; + -- Register 0x90000000 (DSU Control Register) + -- Data 0x0000202e (b0010 0000 0010 1110) + -- [0] - Trace Enable + -- [1] - Break On Error + -- [2] - Break on IU watchpoint + -- [3] - Break on s/w break points + -- + -- [4] - (Break on trap) + -- [5] - Break on error traps + -- [6] - Debug mode (Read mode only) + -- [7] - DSUEN (read mode) + -- + -- [8] - DSUBRE (read mode) + -- [9] - Processor mode error (clears error) + -- [10] - processor halt (returns 1 if processor halted) + -- [11] - power down mode (return 1 if processor in power down mode) + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); + txa(dsutx, 16#00#, 16#00#, 16#20#, 16#2e#, txp); + + wait for 25000 ns; + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#01#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#40#, 16#00#, 16#24#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0D#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#70#, 16#11#, 16#78#, txp); + txa(dsutx, 16#91#, 16#00#, 16#00#, 16#0D#, txp); + + txa(dsutx, 16#90#, 16#40#, 16#00#, 16#44#, txp); + txa(dsutx, 16#00#, 16#00#, 16#20#, 16#00#, txp); + + txc(dsutx, 16#80#, txp); + txa(dsutx, 16#90#, 16#40#, 16#00#, 16#44#, txp); + + wait; + -- This is only kept for reference + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#00#, 16#00#, 16#0a#, 16#aa#, txp); + txa(dsutx, 16#00#, 16#55#, 16#00#, 16#55#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#00#, 16#00#, 16#0a#, 16#a0#, txp); + txa(dsutx, 16#01#, 16#02#, 16#09#, 16#33#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#2e#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#91#, 16#00#, 16#00#, 16#00#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#2e#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0f#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#00#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#80#, 16#00#, 16#02#, 16#10#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0f#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#91#, 16#40#, 16#00#, 16#24#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#24#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#91#, 16#70#, 16#00#, 16#00#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#03#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); + txa(dsutx, 16#00#, 16#00#, 16#ff#, 16#ff#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#40#, 16#00#, 16#48#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#12#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#40#, 16#00#, 16#60#, txp); + txa(dsutx, 16#00#, 16#00#, 16#12#, 16#10#, txp); + + txc(dsutx, 16#80#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); + rxi(dsurx, w32, txp, lresp); + + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); + rxi(dsurx, w32, txp, lresp); + + end; + + begin + dsuctsn <= '0'; + dsucfg(dsutx, dsurx); + wait; + end process; +end ; + diff --git a/designs/leon3-ge-hpe-midi-ep2s180/tkconfig.h b/designs/leon3-xilinx-kc705/tkconfig.h similarity index 86% rename from designs/leon3-ge-hpe-midi-ep2s180/tkconfig.h rename to designs/leon3-xilinx-kc705/tkconfig.h index ce81145a..0dae996c 100644 --- a/designs/leon3-ge-hpe-midi-ep2s180/tkconfig.h +++ b/designs/leon3-xilinx-kc705/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -738,95 +760,6 @@ #define CONFIG_DSU_ETH_DIS 0 #endif -#ifndef CONFIG_GRUSB_DCL -#define CONFIG_GRUSB_DCL 0 -#endif - -#if defined CONFIG_GRUSB_DCL_UTMI16 -#define CONFIG_GRUSB_DCL_UIFACE 0 -#define CONFIG_GRUSB_DCL_DW 16 -#elif defined CONFIG_GRUSB_DCL_UTMI8 -#define CONFIG_GRUSB_DCL_UIFACE 0 -#define CONFIG_GRUSB_DCL_DW 8 -#else -#define CONFIG_GRUSB_DCL_UIFACE 1 -#define CONFIG_GRUSB_DCL_DW 8 -#endif - -#ifndef CONFIG_SRCTRL -#define CONFIG_SRCTRL 0 -#endif - -#ifndef CONFIG_SRCTRL_PROMWS -#define CONFIG_SRCTRL_PROMWS 0 -#endif - -#ifndef CONFIG_SRCTRL_RAMWS -#define CONFIG_SRCTRL_RAMWS 0 -#endif - -#ifndef CONFIG_SRCTRL_IOWS -#define CONFIG_SRCTRL_IOWS 0 -#endif - -#ifndef CONFIG_SRCTRL_RMW -#define CONFIG_SRCTRL_RMW 0 -#endif - -#ifndef CONFIG_SRCTRL_8BIT -#define CONFIG_SRCTRL_8BIT 0 -#endif - - -#ifndef CONFIG_SRCTRL_ROMASEL -#define CONFIG_SRCTRL_ROMASEL 0 -#endif - -#if defined CONFIG_SRCTRL_SRBANKS1 -#define CFG_SR_CTRL_SRBANKS 1 -#elif defined CONFIG_SRCTRL_SRBANKS2 -#define CFG_SR_CTRL_SRBANKS 2 -#elif defined CONFIG_SRCTRL_SRBANKS3 -#define CFG_SR_CTRL_SRBANKS 3 -#elif defined CONFIG_SRCTRL_SRBANKS4 -#define CFG_SR_CTRL_SRBANKS 4 -#elif defined CONFIG_SRCTRL_SRBANKS5 -#define CFG_SR_CTRL_SRBANKS 5 -#else -#define CFG_SR_CTRL_SRBANKS 1 -#endif - -#if defined CONFIG_SRCTRL_BANKSZ0 -#define CFG_SR_CTRL_BANKSZ 0 -#elif defined CONFIG_SRCTRL_BANKSZ1 -#define CFG_SR_CTRL_BANKSZ 1 -#elif defined CONFIG_SRCTRL_BANKSZ2 -#define CFG_SR_CTRL_BANKSZ 2 -#elif defined CONFIG_SRCTRL_BANKSZ3 -#define CFG_SR_CTRL_BANKSZ 3 -#elif defined CONFIG_SRCTRL_BANKSZ4 -#define CFG_SR_CTRL_BANKSZ 4 -#elif defined CONFIG_SRCTRL_BANKSZ5 -#define CFG_SR_CTRL_BANKSZ 5 -#elif defined CONFIG_SRCTRL_BANKSZ6 -#define CFG_SR_CTRL_BANKSZ 6 -#elif defined CONFIG_SRCTRL_BANKSZ7 -#define CFG_SR_CTRL_BANKSZ 7 -#elif defined CONFIG_SRCTRL_BANKSZ8 -#define CFG_SR_CTRL_BANKSZ 8 -#elif defined CONFIG_SRCTRL_BANKSZ9 -#define CFG_SR_CTRL_BANKSZ 9 -#elif defined CONFIG_SRCTRL_BANKSZ10 -#define CFG_SR_CTRL_BANKSZ 10 -#elif defined CONFIG_SRCTRL_BANKSZ11 -#define CFG_SR_CTRL_BANKSZ 11 -#elif defined CONFIG_SRCTRL_BANKSZ12 -#define CFG_SR_CTRL_BANKSZ 12 -#elif defined CONFIG_SRCTRL_BANKSZ13 -#define CFG_SR_CTRL_BANKSZ 13 -#else -#define CFG_SR_CTRL_BANKSZ 0 -#endif #ifndef CONFIG_MCTRL_LEON2 #define CONFIG_MCTRL_LEON2 0 #endif @@ -871,28 +804,44 @@ #define CONFIG_MCTRL_PROGPAGE 0 #endif -#ifndef CONFIG_SDCTRL -#define CONFIG_SDCTRL 0 + +#ifndef CONFIG_MIG_DDR3 +#define CONFIG_MIG_DDR3 0 +#endif + +#ifndef CONFIG_MIG_DDR2 +#define CONFIG_MIG_DDR2 0 #endif -#ifndef CONFIG_SDCTRL_SEPBUS -#define CONFIG_SDCTRL_SEPBUS 0 +#ifndef CONFIG_MIG_RANKS +#define CONFIG_MIG_RANKS 1 #endif -#ifndef CONFIG_SDCTRL_INVCLK -#define CONFIG_SDCTRL_INVCLK 0 +#ifndef CONFIG_MIG_COLBITS +#define CONFIG_MIG_COLBITS 10 #endif -#ifndef CONFIG_SDCTRL_BUS64 -#define CONFIG_SDCTRL_BUS64 0 +#ifndef CONFIG_MIG_ROWBITS +#define CONFIG_MIG_ROWBITS 13 #endif -#ifndef CONFIG_SDCTRL_PAGE -#define CONFIG_SDCTRL_PAGE 0 +#ifndef CONFIG_MIG_BANKBITS +#define CONFIG_MIG_BANKBITS 2 #endif -#ifndef CONFIG_SDCTRL_PROGPAGE -#define CONFIG_SDCTRL_PROGPAGE 0 +#ifndef CONFIG_MIG_HMASK +#define CONFIG_MIG_HMASK F00 +#endif + +#ifndef CONFIG_MIG_SERIES7 +#define CONFIG_MIG_SERIES7 0 +#endif +#ifndef CONFIG_AHBSTAT_ENABLE +#define CONFIG_AHBSTAT_ENABLE 0 +#endif + +#ifndef CONFIG_AHBSTAT_NFTSLV +#define CONFIG_AHBSTAT_NFTSLV 1 #endif #ifndef CONFIG_AHBROM_ENABLE @@ -962,70 +911,6 @@ #define CFG_GRETH_FIFO 8 #endif -#ifndef CONFIG_CAN_ENABLE -#define CONFIG_CAN_ENABLE 0 -#endif - -#ifndef CONFIG_CANIO -#define CONFIG_CANIO 0 -#endif - -#ifndef CONFIG_CANIRQ -#define CONFIG_CANIRQ 0 -#endif - -#ifndef CONFIG_CANLOOP -#define CONFIG_CANLOOP 0 -#endif - -#ifndef CONFIG_CAN_SYNCRST -#define CONFIG_CAN_SYNCRST 0 -#endif - - -#ifndef CONFIG_CAN_FT -#define CONFIG_CAN_FT 0 -#endif -#ifndef CONFIG_SPICTRL_ENABLE -#define CONFIG_SPICTRL_ENABLE 0 -#endif -#ifndef CONFIG_SPICTRL_NUM -#define CONFIG_SPICTRL_NUM 1 -#endif -#ifndef CONFIG_SPICTRL_SLVS -#define CONFIG_SPICTRL_SLVS 1 -#endif -#ifndef CONFIG_SPICTRL_FIFO -#define CONFIG_SPICTRL_FIFO 1 -#endif -#ifndef CONFIG_SPICTRL_SLVREG -#define CONFIG_SPICTRL_SLVREG 0 -#endif -#ifndef CONFIG_SPICTRL_ODMODE -#define CONFIG_SPICTRL_ODMODE 0 -#endif -#ifndef CONFIG_SPICTRL_AM -#define CONFIG_SPICTRL_AM 0 -#endif -#ifndef CONFIG_SPICTRL_ASEL -#define CONFIG_SPICTRL_ASEL 0 -#endif -#ifndef CONFIG_SPICTRL_TWEN -#define CONFIG_SPICTRL_TWEN 0 -#endif -#ifndef CONFIG_SPICTRL_MAXWLEN -#define CONFIG_SPICTRL_MAXWLEN 0 -#endif -#ifndef CONFIG_SPICTRL_SYNCRAM -#define CONFIG_SPICTRL_SYNCRAM 0 -#endif -#if defined(CONFIG_SPICTRL_DMRFT) -#define CONFIG_SPICTRL_FT 1 -#elif defined(CONFIG_SPICTRL_TMRFT) -#define CONFIG_SPICTRL_FT 2 -#else -#define CONFIG_SPICTRL_FT 0 -#endif #ifndef CONFIG_UART1_ENABLE #define CONFIG_UART1_ENABLE 0 #endif @@ -1107,6 +992,19 @@ #define CONFIG_GPT_WDOG 0 #endif +#ifndef CONFIG_GRGPIO_ENABLE +#define CONFIG_GRGPIO_ENABLE 0 +#endif +#ifndef CONFIG_GRGPIO_IMASK +#define CONFIG_GRGPIO_IMASK 0000 +#endif +#ifndef CONFIG_GRGPIO_WIDTH +#define CONFIG_GRGPIO_WIDTH 1 +#endif + +#ifndef CONFIG_I2C_ENABLE +#define CONFIG_I2C_ENABLE 0 +#endif #ifndef CONFIG_VGA_ENABLE #define CONFIG_VGA_ENABLE 0 #endif @@ -1117,26 +1015,82 @@ #define CONFIG_KBD_ENABLE 0 #endif -#ifndef CONFIG_AHB2HPI_ENABLE -#define CONFIG_AHB2HPI_ENABLE 0 + +#ifndef CONFIG_SPIMCTRL +#define CONFIG_SPIMCTRL 0 +#endif + +#ifndef CONFIG_SPIMCTRL_SDCARD +#define CONFIG_SPIMCTRL_SDCARD 0 #endif -#ifndef CONFIG_ADCDAC_ENABLE -#define CONFIG_ADCDAC_ENABLE 0 +#ifndef CONFIG_SPIMCTRL_READCMD +#define CONFIG_SPIMCTRL_READCMD 0 #endif -#ifndef CONFIG_SPI_OC_ENABLE -#define CONFIG_SPI_OC_ENABLE 0 +#ifndef CONFIG_SPIMCTRL_DUMMYBYTE +#define CONFIG_SPIMCTRL_DUMMYBYTE 0 #endif -#ifndef CONFIG_MULTIIO_ENABLE -#define CONFIG_MULTIIO_ENABLE 0 +#ifndef CONFIG_SPIMCTRL_DUALOUTPUT +#define CONFIG_SPIMCTRL_DUALOUTPUT 0 #endif -#ifndef CONFIG_AC97_OC_ENABLE -#define CONFIG_AC97_OC_ENABLE 0 +#ifndef CONFIG_SPIMCTRL_SCALER +#define CONFIG_SPIMCTRL_SCALER 1 #endif +#ifndef CONFIG_SPIMCTRL_ASCALER +#define CONFIG_SPIMCTRL_ASCALER 1 +#endif + +#ifndef CONFIG_SPIMCTRL_PWRUPCNT +#define CONFIG_SPIMCTRL_PWRUPCNT 0 +#endif + +#ifndef CONFIG_SPIMCTRL_OFFSET +#define CONFIG_SPIMCTRL_OFFSET 0 +#endif +#ifndef CONFIG_SPICTRL_ENABLE +#define CONFIG_SPICTRL_ENABLE 0 +#endif +#ifndef CONFIG_SPICTRL_NUM +#define CONFIG_SPICTRL_NUM 1 +#endif +#ifndef CONFIG_SPICTRL_SLVS +#define CONFIG_SPICTRL_SLVS 1 +#endif +#ifndef CONFIG_SPICTRL_FIFO +#define CONFIG_SPICTRL_FIFO 1 +#endif +#ifndef CONFIG_SPICTRL_SLVREG +#define CONFIG_SPICTRL_SLVREG 0 +#endif +#ifndef CONFIG_SPICTRL_ODMODE +#define CONFIG_SPICTRL_ODMODE 0 +#endif +#ifndef CONFIG_SPICTRL_AM +#define CONFIG_SPICTRL_AM 0 +#endif +#ifndef CONFIG_SPICTRL_ASEL +#define CONFIG_SPICTRL_ASEL 0 +#endif +#ifndef CONFIG_SPICTRL_TWEN +#define CONFIG_SPICTRL_TWEN 0 +#endif +#ifndef CONFIG_SPICTRL_MAXWLEN +#define CONFIG_SPICTRL_MAXWLEN 0 +#endif +#ifndef CONFIG_SPICTRL_SYNCRAM +#define CONFIG_SPICTRL_SYNCRAM 0 +#endif +#if defined(CONFIG_SPICTRL_DMRFT) +#define CONFIG_SPICTRL_FT 1 +#elif defined(CONFIG_SPICTRL_TMRFT) +#define CONFIG_SPICTRL_FT 2 +#else +#define CONFIG_SPICTRL_FT 0 +#endif #ifndef CONFIG_DEBUG_UART #define CONFIG_DEBUG_UART 0 diff --git a/designs/leon3-xilinx-ml403/Makefile b/designs/leon3-xilinx-ml403/Makefile index 8d07375d..b3b62b21 100644 --- a/designs/leon3-xilinx-ml403/Makefile +++ b/designs/leon3-xilinx-ml403/Makefile @@ -22,10 +22,10 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix ihp gleichmann fmf gsi spansion + tmtc openchip hynix ihp fmf gsi spansion DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can usb \ - hcan leon4 leon4b64 l2cache slink ascs pwm haps coremp7 gr1553b iommu \ - spi ac97 + hcan leon4 leon4v0 l2cache slink ascs pwm gr1553b iommu \ + spi FILESKIP = grcan.vhd include $(GRLIB)/software/leon3/Makefile diff --git a/designs/leon3-xilinx-ml403/ahbrom.vhd b/designs/leon3-xilinx-ml403/ahbrom.vhd index e5eb66ec..df5aba6a 100644 --- a/designs/leon3-xilinx-ml403/ahbrom.vhd +++ b/designs/leon3-xilinx-ml403/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-xilinx-ml403/config.help b/designs/leon3-xilinx-ml403/config.help index c311f948..4d7ca3c2 100644 --- a/designs/leon3-xilinx-ml403/config.help +++ b/designs/leon3-xilinx-ml403/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-xilinx-ml403/doc/Makefile b/designs/leon3-xilinx-ml403/doc/Makefile deleted file mode 100644 index 2b8abafd..00000000 --- a/designs/leon3-xilinx-ml403/doc/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -clean: - -rm *backup* *.ps *.log diff --git a/designs/leon3-xilinx-ml403/doc/leon3-ml401.pdf b/designs/leon3-xilinx-ml403/doc/leon3-ml401.pdf deleted file mode 100644 index 2282b4a8c55f336c8dd3315c05afbe916619ea86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215497 zcma%?Q?MXSp2aWw+O}=mwr$(CZQHhuzP8cVwry>H6T7ny^D-}$85tE76>h8)X>bT8sL8>Q(hrq~Jk*s_GmcO{S7?edyTG2` z)Zk1W+s+%tDySN+KF!QY=jF7U+AvN*eha11rH*x`ofnT>QhFvSAfZ*IJVK5#rn9FBRo z`i@SKJe&et?r3_J#CUhx>Y^hxdLYT^cN40`Qhd+ow#GHv))liq@HD1@z33DR_2{Y3 zxj6bN5&FIG3RAo6vZ^FS4>B*GZ~-b*&*7`Ic*fymh12!O1vIRgT13-KgpV6W=ew9ZaI8StAq+j5D+;RN1*fEi*9 z1ne<+CUbG!Y*gYjM{akxU{XZ?hIY-t1DF1WZSj2Y?hazdJ*;H~f>+Pe&dlv&>X)?9 z0s|XBwBDv5!q_T@9qr^{JOV~JFZRy7O?OxjO2gU6Z+_Wk!G?EjSB_i>Flhi-RM?Ds z%jj_(wRrfTz0Yh+;%}TZr2zs=(T3XaNe*i$N=N?3veyQ}O=WxLAr_Etff%blJRIqm zI)e&$n+PoWm-#0LnOxPZA^8HeH;gf=wl0JiX=n=uOvazH*?FvUM<65b%}aeaN%n&SS;?n3y3Oy<+FgmlKCL@MiN8iS45Aj6_)LE0D{Lv~Wz zCc&-cM5KW%#vrU`EaCg+#xP_KWs9}!K$_ve&6O`Wk+J6DBraFJV{usqRE{cHctZMSR{&4{K>%9W>J`l_2}QYvS?ys)m_+S8gd|^vRMfjqK(nIX=BMqOLUei z(qO{yBHf*_AZ|}mvV6|`dwzPTQc`d#&6c(U)EnL#_r!yDd>vc@%m+E zq2VFRM!|g4hn)oC_TnKcHcLE=Vqf6UqpL+0Lmf$7Fw98ln7=?qcxW-}U3o({flcq6 zw!DT=M`o1by7OHwB^=LNT?ZT_0MZFo#fojGJKe^n9CMo`XGh?xF$)QF-Bsqsf}qbV zYz>k0VG{%Vmlp4x_t3tuLt~=g6&#rf6{tA#6Mlp54e;>{)>2KLl_?61goD?WvxPAu zZ1_ZuS#V7A-NgSQoU)6lbX_clW_q%Is} zuxe4DXSXF$(5JK`5#|}7SNx7lH$dKubd(U%r}SV-VNAg)9dP-IsX(@-dNiRtT=#8C zQ51!z*CN=TY)l!@(rGo&q|q85i_n7XpdEt6M~irT>1&Jz(i(sJ6;LyDG+F7TIU-28 z<*G#y{>V$CMZp|v*s9p6dC-VLh?r+VwX5W*Jg6#(m1f$ic$=1+S|d+TAUUY&jx%5} zt!fJ`BwaGX>Z1Z|=_IJp>TekyGRtuayEPy;FE$afrBEd9w0>bC(c{q|G-K%C| zC^`3rc~ZHTi}C%u975WMNmAn1O!pEv#JI5c5-2pBJ-70Exz>a&?IKmX^{U$un}XEr zYvo?XQEE6px(lfFfmB4mvTk}~(Fiz4p5k=?rcSJXr`6iF)+f%IfT~aEQPk9k$bBfV zTWzarpBU8D1f#aO3;q@)gz zA*P+@9h1M3g$3W4X1}?j0P{*FrZ2Fdw)B_rvNKM`B1y8k{2vAsqo`ML z{b+BPl+Ygv!`Mw-z*Jyib&+1c_=9~zy~6e^7)o0fD@_(l(Bi!9bQD_>aYuPmP=?&5 z{*5Pde{iLc4WV12W{9Q%W06!gQ_vxZJO#s&cXuLHN0buVq4N-p@Dk$9+3j^m3U--H zpx{H%{Dl$MaOY9`>KWJY8gbmY5!N9A+UACy!?g{aaMo6nK=$huha&6frZ}|tir`Yv*(tAmGbJAI+!)B zCJD+6U5V)&9d6u@}J9Ke*T$}BF4{30Fk^Tr#^5;XBdBkOy< zon1K8vVsXunQcVBoi zhdzz1mEk$txcb$v!2BByXc%0v_gAL!4njSZ1RU#Fymk<+Nzs(L4P0n5z#p0#a1nb> zv*Z!rL7Lk>wxA)QJH^bqFWPx*NrHJA`j81%8;n^mrP|E0w^j~>=-`|?mspBIf~5M( zp)XWNu0LS!*JB{VF!4E1uMj!uaHiFfP@CCb0#p1gcr7VI6h{W}Ju&HH(Mtdn53BCJ zB9?s5g+q7tH`U{e=Qs?xq*okt%t^ABj8pi;6y_NRVbUH z)D@77gn&-0c805CJU6$Z%DciZtCdZE=#R<|aN7sCfTBVAk{#R^jz_n>D^S_UR#?2yQ$iWqQ*o$#5O#U#v$gq;^Wg2SG3 z`pCs8tpvJ`$B{gt$>cKeKFD^}R|13ZzwFi)_%XS(5jm1t*Vc}dCQ~RA`msKHrP6N| z`-`^Yi-V6!qLJR|Mzh7L@irDA4C*fP_D$s^5cSCqYhk>}9lu3W>!_sqWw@ZS+es?0 z)qoV=986{c!rfxh3&6RTAP_7CuyGublZ?T`8O3H4z0{5qiN{+ciE`X#M$|=N4e4tP zSr`RzKh7j#a!0p0a5@P)TU!}V;w_-%NlAoip%BQHlI8LuxDdNWK#y5_JSz#0D2POq zi766TnUZ!)H_>s0LX*dc*$(16YhwX|WcA;H{-}8RfbyxjYHOg>^a~5c!D{Av_FPgoLP*%8@JjxPB9M)Et1m zg3|k~KL}o={eFUowMf9^oKMF=eLkup=vN?uAlTQCs#S@Y5^UD7WWqn2&$NyqXrk*g z`_tIFi&Y*d*4ljSdH%mL9F736C}gjAb}o9%D$G`?h>)?@38J)uwG*gR=^ks8yepVm+2Zg zrYR3a>yh&${2DzEn*{((WepY1&P+M{ZL5V@q-UM^)xE3lVKawS76;N3XPrLErR=tD zh0{GvcNwNj)TSrq2{_18PxmhAEVatAQldN@ppL%50W?uW3Z66vYr^ z;n4-hqUu;<*~D!JZkX`ApFQ+F5Nfk-s*rKfShv(hx9Yj^_v{5{Lh$AguM8&o&MT{O z>N1ArbUkUB6X>=N_z$f&P2Vlx4E3ceuaGIIgu z?@f0Zd~b!-4{!;vh*jcA|jx1MnIGXeSi(^3n;O$nf~5;As(ShAK#%E z>L-ex7H8!ciqeYN_ZuLrM&`ZICvsXO(%wNz_CPv6dKwKrB3~Y4G@snl@#zLkcnRpH zHx74eL_tHjW#}A$db)JWf^c%`J3>B)g(icgh7e}Peie9>2!nX7$ax#lz`lv8&9FF_ zQD!Kcuxw4^pqEZoJMb~?w%#lGA56nTK-UE&(Fvn45EJ^JVUDHXT|qvb;`#E!qL>p@ zp~zcy^}=uQ;3Ik3B0f#&RM#@qglCcE@8|6PLr(HJLFXM-Ar}K0egVwL&fd@IWGrC4 z@>#C!bXY6c@68CXIPZbjq@`^Nn1x*qQ&p@R%QUDUv4`3zo{z=e`0V=CwjQHba3 z7dm;#mwHnAwN!dzat5<>$==lvPBPIpmdS@$c17ed-B3GthCm?NFbHZ~i3=?*{BE*CuL0A0ZuoI_p7I~IJ zuh>=Iy}`A~`?v!0`$e$}8EnK>1mkYI3vR`XhZjg&OSiZgn7uofStvFOc`V8mQojZ| z)(S67JFy1vJc(&&M{ZEB5&py}xbc~8Bb4c2x86<0)~BcN4jw1DjV;B0(5of?Vai*R zXByv(3?Ab>KP6ex(e33;AiSYq6-vkpvbz&D@qiBxQa(lVZpkm1!jNudfyU7M+fHuy zghP?g_3USju_3$(ByjtR<3~S^mXuE*zE&oGKZ91{@4*@cl57}A3yalabaD&VvMA%y z(YyHQbH+mGUhXSUs=0Xw{CxL8x(W-ieeV#Bn!%;<`CYsvI&pXZenp^qlZ7@*HRJN* z=GN==dRRXBdF90Q`+*F3ySq(o-Wa|=K6_ia=;F(b{muLJy%(0Z^L?==l`}Kxd`Z|S z_fDZrB`W+o?1o{{?8evc{rmOknAjTsZ)Wtj_fO9B zPrCF^%go9`5Ba}iER6pVLa{LYH!0L~#-w8rJ96lYFJw)rexTI^umL7K0((XG94Fm5G{$&6VO zS+NJ0i=0I4%%7$t5`%E~=H9#(GH}G+urG390b!o0dCokJC7mCm)&*Ot2c8*v0Vhn) zDY1*`%d93>13oli_PZBpLYFv1m8HgVs+XImvTHmAC(mBKnQ}5=sO^zo9S5%Rj zWz)2!3d&6nacsM#qZx?wGo>&M?DjWQkW3_4kaSm&TmyaXdwLhu2uc!c*bp>OL*wv% z&|ii|v=_JF?4O>k-&=iixTX|%ZWXB>2QwbKSj7?yUsLml^|`xCFzI0ta@l2qe@>4x zg#dij8n)AUmZAz9fNj77H*DL}G*Kgju~IHM?c`_3;0=1NK5MpPlF zCO3YgSDNUWI>5*`O19;DF$1a0hP7(+2v^iRUm>*CA?Fl&>qb&b;}6c7Vvq} z_h|Hlefl^nXdTwDsk)IS47QGO=;RjF5m2^B8mmyiths~K9=K{P^d@vH(2<8&7TxFs z=CCtFut5r-_7i{35rISXBR-$ynUz-_c&ZW5=!A2CQ|(zVLdI`)K#=3c*4zrk_W|8` z#kWjy9xQ5GHd8HN&Vbv3lj{HMamo^TW`;me^iW-trp;4MMstyyAw^Ul00_X@H@pY- zwnOVOfj5>=(Iaz?DOtJU%Jlhq;g~_t#3Y-fk~UaCVU>o40brPhhJnJn5oQA|J0zdZ z(d6YDn2J&oJd(zQ*`I3nm^O^PLYQYNqXLn@uAQ2Xc7U_$*h0CIKvf(-r*P?1N)`@} z(@>_casYfBM4I-wFJSro4ccI)3l!LM_@!K&Vf5#44=#FXIyia8v=9QQr%Hub{0BUf zyOtqD_@pK5q6nkX9~PLe$Z1*0)wseNe70T)5$0=O{hWuf_4jxtJxUYt%s0S`S$mL4 zh^Y4MpFj#^cD43(b?Ij2_F;3VXbf)gec1_8pjYWUKVFu*GwTPy=mT+!tlS>jnHh%4 zkcCX201{x}p8=@Q@As!b@x*+fvuB>cZ6VCQ4M%FL^QZ=9qJbW*&Aq%Ik<(j*C4v-p#0vtc0S3@ z?-e9KbpT6dQBW!4O6hAvCp`=jmk z=h0ttMyjTjbLOFWwH3o|v+#T5UQZR~Ta#tU=gS&Xy+6d>(1!S0(R{z+Hl{s>wVjAb zC6h{TYy{!*Q@!T#=i9z zeeJwsOu0LtUP$GD2N(jQ?M}A_ehhNC!Bql)0@LwD_0JrPa?2DSp$2rky2?=;buI4P z*22+hM~?s)W1(|%>l9=67sj3=&j)ne51{DAJmY`x@L!<&2Z#)e^vwST;{Q?d|5JGu zj{gRTDXLqp>!R?zCltqy%Sgsod8+3*F*y6kh>%Mz8;^papjDs|;)J2Sa(PvC3m7#+ za9( z9jT#54_DQa4^tmL@4XR(vNFRiT58kah8`Xacv7I@()@+osBpd6(vHIdIn6=&O1F$pKWYy}%i)qS= z%XxsUMU!LdeSFg<8;zrjM>;MyR)g|YLONMNZnkX&LrC-WXH`P0c-;8KQzIyve#0-#eKTzYJ`Xb>uYp~#uus^*RpN5HPt+tsMxjK z$I2q(Z;f+m7mE4g&C`f%vu&ibmYfWR_XVMgx#h~Yz8mUJ@ zHpCRq&5M)WrN)TvX|F(rX|BpUf!DP6S)6;7?FjY!#Oz*(zm{tj-iMZBvr`6qD8q#b z$x4gyls70O%()lv6;vZy(()$?{#bVfb^GV>NF0?*G(Tj*ArPL@k%Z%e*W!xJ^tR~{ zilxmsyeJ+&YPwKxjJ_z*rHV`B&np@rp>nc%Te#Z z%Z{HXoj?kQ(jeJY_<%5=ftwF*?JfC3BFlx8ZlNQwT>Zil%sR~K#K$@-60M((e=L}I zP=PqqQBS^JcZpLov0uFChtYKNazUM=x^KKpJYGc64G<;>lv=?nI#^v?-70~%_GHWM z+iE8pUM`_O>J>KOjL?bxg9kScHJV_jdqXUl=Yr^QNxTA%)flqyp~?AElmi~)voI7U z5Fo`p&Eljv(Ydx11lPtsaqEqp9~r#QBJfm9SOgx{zs;kB!UnnGkaL37RuJQQBnMRi z@}$QWZ`duz*)|Jr*r4Z~DF^QC_5NS3x1Ug|>sx@evX0w!}(%sJ@s}zja9J_mz`<(_gJiZ@IWB_Pc zD;ox-b9={8^d*8~D2@OT}%l!uMXN-7ZB(rXMR2J57>C;Sbw(Zgrj-Bm_~9w?axd zQ(NSG=6@HU_8hl4i%(>MX|9HbJ>=Tq;(-@s*WYSd(iz?U@2Q^+z*sQ=iOIzXVwax18usw!&3Y6Vwmcebv zefS2Ox>GX5pv}J@Jo)mbRBL#iTQ!l@#=Pv!fbA^}=&x`vt-vh-hraY)8Rnf7?C-#N zmIxkPNgLF5HELX3=yShy`l}fyf;XimDXw7bNe@h~B~{S_-hAilPB|%R5`*mH&Y1jy zSQk#3Kq#uB{yfV|OT;~AIo|od<^>EnMrnWn#EerA?Ocab7(S$uLzeE|45KX#;s+^A zRIA$50#bujIIPzmecYz{4x+v8k?s~NjQQ-#go9WO6DYd09!N;1@4;o6i_O|k9LB5*<`@AlZG_e6$&E5!t4qcXb9#JkD zyv@@`&-{M9$ny0Qs@~K+`acxJ2YYz+U6Kua{W+_2bSeOKzz z+i+Zp7;dn6IoZf`%nn+XonMH3;!7H8YG`YT$)@wRb{g@(9Zj<}Wsh>RiLnC#1mIr* z=Dus-Q>a0{B!1-5fEBWLZ=QDB0-}=%zu0t8XGepIoGPFwqVAUcIgAZrs-tPV_7E1DEBC}HOa#c~^m=~EXkDl8T^ZI`hO5_R z>eL4HM)*i6B8&YsF67Y;7W-ep>eU?C6LrfcChosZ3Xsu3lvuL}Tp4D@?;pC~5=)G0 zT56(0A&E!`XfGIhE%IYVk{7FC{3uT*+{#47zpG7jOldqu^s|a>Kc6L27oRM-cCK5Q zfwSDzYU|Q18$8q699zF#t2U-R*R9(wWHbwOI5ej3WjnL$#bc1{vT%IDC&2O!t0tC8 zy}d>r2+YkJEm|d9a8R^Z7Im1SL<_nMl&)=AFS;(WfGSZ&Z*t)bh^m69L z)CiZ3yeFA2yg6)CyG((v2$#|IWb;=nQ&rJNTY(#-H7hk&@7ZOhdErtjy8rBI$uyx8 z$h?{Q`Y?62+hpdJyBESM_eHpu4ET6cI_%30nt9~Vx>=Pjto`1cDr1wbjJa&y)9SWc z{8sr@PT<`+vHLdB*CUa)p3GLfPonCbG3(04tv8ru27^-x`)4q#?2Zv>)OhhWtlEoB zi$t|zLhbipX4QBg%G^wHom?E<_AQW=kcTTTbD<(2?Z>x{B2wFSrG`;jRMf+PaFV^T zHX2S6EPKYn+gR~P1toaORyY~9x3i#7j8>rUBN8udz6 z9rdWXw-CBhsOhVbmn67_BvSk$(19BI>f@z$ay{oaHVaXG8&wL5W>Sq0NEuVUV58C zbG;Bu@+M0awCn$v ztbC!I%^{*&5k_S2M%AN@qL&DO5WAHuo#DL0faoT5@Gj@}jPM8IoczdrgF6&==%C0)Pf7MAQJU#0M1N$J2p*~z1^0iU0k6e^r4vTNi8q_*^|V= z?wiY7S687q+12thb%vJf^66hT_!nN_WtKxF=ddaVq&+7>fAt>Ya&n&CvkQ)U#L;{Xf9ZLf>P`o`a3QaYQ~Qk_?vU^t*nb>a5;&_7)cL$M?o!1x8-i~#6e9fYv*G9Fd**73x+a~LL14w`A*cO-~ zd|X*fxsnQ`J+Yk~YoD`1)Boi+Iq%Y{7deHbafZR0e_gJ$`?kRH5FCBwl`UbS*&*%A7Hcd}_KXKsvnh*pf-oROs*?DpDWO$eW=Tj3y(VjmW8URGSQygDJC5gu`5gW^%K3sY_ z57Gd-fF6BH6Sq*3y^zE{NyUjS;+AoX)!+!x|Wpv&OYp;uWFa!(RAANh3c@?cY&i&xEGpp?6ndHS^cxamH_^5jQ$Uu`&;}de6Z0^ zr)iO$b~%d(&XSkjl7$8 zC}~kok1K|(d2?U#NElbP2FMYQD(qG?$zrJY+`5Mhjtn@5Mgm8H)Y#uF!*pj>to4X1 zOO9p|Q+H6zg(xnGO;ZQ$g$L62Iwltb1vyW|e7+>MRLSS}q0U1iR_XfO=b(Sd~=sr%|0gVE*bjG(V+BR0t- z8t{on@5NEnwO|Y3%ti>AzdUU+`sAV!u4GSe;?ZA@6{!G09Q_azV8@Cw14| zX7B4IMJFcq5CfbQ3K-a+UzQjau2szNt}4#sElifc+OYc1ua4W$xDIU~Uh3vkXbFX5 z=6DNK=0gM_<93Hixi7L3zpZ!CW-PQh_~FN}QG`=Pu1psQUTLOLPsrlvdS1VoHomja z=<5Z*v*53$ba<3YoG?Nf*-_md6-7y^Rf!%;HV9dl#RE?-u-|X$9!rB-g*|2H@QuTt zGn17mT3Nm+^Ll>z-^g_16qoc7Wt9VP(kr89_K}N##u0rmZsj}TopKM1E4taZe~&#l zcq2U=8gM%|i#v+8P|q+yMHIeG4H#`7)91F!e1c%MWO_WXpA|mvlHikdAa^bJ+z>ez z0u`Nv#5I0`(h0i+zD^S&C;$UmK@%z^c~-j7 zcv;9P>v1Y5Knjv`&92VY^W8s|M|XI=_nzXqTw7q{XSFo?&AH=U0mPJu*5t61f{CxK zygnH=_Haz_2Jxai3BD?M7R}yOV{r-U-Sjk{zdwLp}cm$+O%SAh0@p$zB>Am49qzlF?X zJh9!n&vX!Vd-?kI+8aYfAoGKW^+IvxHF19Nj|ht$Z{1DH$^kM??q45A;09j4&y@yT8yF#{OyM(3EKDf zS<3kkT&)LXwL&+&*;$^mv-5rNuLi%B@MYB4nqoFSg7H<=4b)hV-k@7xk5kcb5Y`+G z0Gufx1qa`RlY{jCeIpKpEEe)ZZh4B!UO_0WZV@-dm)Bd}KR8RZNVHYZ8ePXKuv77l zmF)>^7ULk@rsI8;Cc5OmZ6g=`sIlt5s>6Gd2{t2S zi}J1NnAgPo9F=Iv?G)-tNcg~exZ}V?i;gS{esAF1_j5xoekNWTC15hn9h)In;q*kD z`hqQRY5cqy?=1Yjcix8&O5Bn4{>k4WkoGorsy}0l3Aza3=4lB4fOpY zHHAW3U>XPeP9X@pzhz$uTL&GQcJq2^-Ahb_->LFu$M22M*hbI&tBoDiUtst0?{UOt z+LQa-P2%GZ86l(H(+1oQSl`JxrrUh7o{E4#Oc&`S){>ier!S#_&YhQFY+rADh#L%H z|6w=(8;Sg)wQMjJ1 zdJRl7kBFtKoXBbWp67F2=S&NLid-=ieR=2(Fa>S;E2u;NjgCNzg!o(LN0;uG;wQk* z4(vCJd^6z!-wM>-yW{P>AVxuQ`zND5BuTeb$weV}j%~@`kGH@)FZ8<=XQm01EuwhGXWY(E0W0u{JB}J>7l7pw?cYpZD)46BoTJ;~H#g-h% zX{d$_S%|%`sKuAM;g7g|82KN!Q|pc4{LC2kENVQ`2iMoQ$vk;!nq5A4r=>{*&6}=R z(D@pSSmpRmmr9PTK=R*_YmQtxei_-u;4Erd+Da&z|$^n z&zv1Ytw#JBc{|=ZtGbJ`Ftf^xLlX+tj-GzQkP|D(9KR23d){XA^Ya;}!a;ZB?sa$h z8}1Vu4HV~C_tccw%**SSPA>Kzxv5QWw4n_qM4(ddW9l#Nk2NcJv7*wB)0$#9peIp- zQ_XfUrGy1#R3oLZls1M(FBFO(<^VR}u{IsqtkZ^?X0`QM+I z(LLm%QmeuOu?XeVs!d*bvgFD2kBnrnI^!OT)86u2s613~csY4Eyj!d?hEA??E~TO^ zk_QVyxdS?{(?gFsF>OuRrbX1mcvlLS>>;!MrmegAQ+0Gspx|Cll!rXewdjp&88O!C zv0AFp&asj-#Pm00!J(Aba)qtkq2sPGxTtHo(osn7?q`=EOPL*PO!Do?qV+Jg(YNE5 zZaydz^})P{pDo(4VBD~6O}a`x3zXq3dIQGZcr2x%8n?DD^1dO4V8YP=E}6)j+2E6^W|Hc;him`LmwT~sIS`V>pb>LlBr`6&fa)3ZosEo_~p!)K)fv4 zLg_l47WVe3rhCr0XpMV)qjqui7|JjQ*J{rT*X9f_3qAp^?Q2VHhWzjOKiV=wO)<^GkeXy5b2 zuYoV~9>TtedB+xAZ&2hKn^*v9<3}6j%t1id=DK~X=y`u*E&rZBZ>Chuos4Iu7wDQ0 z42)aW11@Xj^zyqz^@Fbm@JMhV&&Mi+=gvM>1Y;uYf9TR9pZcwc)1+|;giuc@0d1;7<6R&xa`QQ z0tgL1QLi&!IkRR#u@?;;{otaKXmD3C6AR*hS`&Y|0gCdpVZWs%)_);%CmS-@vx{3pX+-WAnj8M{2g0bE>mUc=-!lbM&K3X^!!>l}Cg) zl0j@od;|c>q{lAiV*ioh>`!6RDBBg9hhU^qhYT!QE?-o6@O?COlra!8aHOB!U=CP$ zXmHg(%I_02H(3@b54h|NmBZ(evStS+3T&-0s+c}KfLAgoE4U6+?4um>jn`<~H}vG% z;2%Q1F?CWkEbhbU4oa`)4(6hi&r&n1(~D5!>kXYqujgYCjpLndjW31Eq4X>lx&d+s zyihy1FW0@<2SpSQ+GZo9ovJD!Owf zmqCwdOWHVB)yE!QHKEZK#fu5pu*EqP!lN0{Yl5YkCW{1aGbQ!XSgN4b_pTkMMe$i4mx^Sd`Q9k4t zM;G_`d#I93lz1Rvz>!KqRLZ>%ftKv$WxyCK*`_qK#JBJ?XG%{ve)GsQO9$nMC51{X z^(JuYL>@l3wD7%c8N<_3-;EZDyrhJ!s2t0 z$XJ$4PvhqzC_0nuREy${I`sMK=fBfgE&N*WR$&RamH4Olw)wlnfWBXw*gq!ECfja) z-jm&P9^$ND#km63A!*r_lQr)dFhAzVB^g=N`y8tvAVTt3K4a}$oasM0w zEHpLO&si$#dM$T{{E``At@^Ocj!k>^|2<#bng7&@&;|yktcj>I0?Pb2$Grqjj-Tznnf*;$U zr;$|aqihQFna`;~n$b=JGs)n-;!J8p@JYY|!qubkoEjXgSFwb22{kx1<) zHPRuUT?L>zG4s=x&w!j>aUykgrGjl=Ni+-$b1g<9sul!-7!9qW(=X};(GY3d4K{i7tbHYW5&j~Pd|9q z^GH8jzKqVxx20j%w5HC_VUS_(RyHGHGA$4ehMudKKvM(?RaJwGaW3S5@dI`;LH9$t z&=KQGgro6?mvCdGqbbW2QtDQ26DOq)Ogi`AP>2c`2A+k-8j+mJMIU?MuA-$M->7dD znY+e-vuxH@WYzN01IrwF`+GMS_S+UOG3R+%Q*JzoFuT(&hRNHhdJrtcTNx`C%hBNC2{90M zYgr2g+T^?e&tuY2|L+bHZl5)3eTXn?gjm5DBt_{d+kqau8TJvFy>i=)C`aC6{{ASl zX>?Zvdj6{14mY>x27fhOU>*k=dWd*%FdW}&4JxJQc8e4$p7#p-lmU64;Sg^b9XyZ& znX0IP5`-&^{-aAJSJ0e>Ipg#E)AhA1F+~FT6H?NSgdYb9Lj(FZ4rt?Q ztx10GAmsuu6g^XF@@`azwY#Uol){$2P>c8!=ui|K>CkOB&iVbPG6Bu zoWhTGE|OgceRkLvOjS=kX!Q?xQ8!GE4wF4 zcVSc?J%8htt>)H2uVy3nJ`TRK1n!)y9gdc&U$#m^va|ynKJAR*QgzLty-EV${gH$} zh5={`5IhQ{Wyg2Aj2Lz5&RAu@wK9Jbk3 zS&xbsOGz0}=#=adC8YOEaI;qU6UmbDPy3OT=D9QL`+7X$iq{x!Vk?YSvR*dos)pe> z)%jg)PTP6iS%zkD=8n|C9Z4+aO*?Xp*w@ds+qFd=(i~I3v};MzCzk~Sk0>AZXYesN zXwox>l)I&SBuFDd)V#Id3%|;>WmsoSsAt`3!#);X#4~%GC`tpJC`xYZvY~wSM}zuD zacK6oi|sM82Aa1!&phG{XY2j2r6cIr4rrrXYpnJpS`(e zocDyFU^#KSx@bx9ucp!zTy_zW4iV9?o!T=nsF^j~k#%r~)2Rrc$sy@Ib%)Z{XRKU! zwQ{@7e4!hTV$R?=+dKPr##nfhT= z07_C)Lf-XaE-{3;}17EPIRFgk8(;I7la}f#TO5ZF<&qA;1&|6lZnn2h}vUm?bUJC{h z`*;zSOT1u8p@ENzhGNmbOkBHvbS}dfLDjA8?JNyh6kf6uZBatVlv(B>I}B0!#-;i~ zo|$8`z{<_2LZ4Dsh7wAVi!w?wJYLeY&#ga-+X*^v@E;CWoJqebTw1HMIBdyziet9jOVws$CCd9SvW2rGS?V-R}juktblHWGElX ziZviiZiP&tP5L2~puU10m5eu$JM1fVk*m%`n7G^(EhT7ZS91SRs61S5vm2sEJura( z5?mWwrA~S3#2D$+`?Px7I_sCf%pg|PFDne@Aaj^c`8Fvi;6=*Th}t!v$IGISNsa+wZeKo32bCkpkx$+l z<_SOSy76{JD{**$kDrF#8FuHeSGZIxi|Ru&BKzpF=5c%r#`#N|rT1Ky`*BOwohNdg z$!)v>`-(lh)TCD~-W*Nl7vKA=^&NI*CJuQHj(LZ?hcS%x`lbDGfz1foYm987xIlUW z>jS+^^P~1BxvOd_J@=={EmNb{ZVGXj!mH9j)1@nyBSg+A`RG?zau=nbN z+ppi~T-%5GCEU_PzcO1b#VsgV=QNdYBCp1A5#7R%7iDRaLY6Z+sROlTOYRf6BWpLG z@&-i`q08>tmMb<_e4Nf)#C4ZcU~CEX2WxwYN+qP}nwq0GeZQHilWwXnA{hb&0-WPFh#5;d?-t$V zq2O`5sy5^GJ|#BxPfP~>35^Ubd;MNo;hsG(fd{gY>~9Nup+afq3Z>EoPo^e3j~yU{ z?$QRkeJQ>)9Xn?7u8gf-`_5j>yg`}Lqt$TvQa}hC14^LYT`zC|$hWhJ)TBLq$`S+E zVTXhR2DdIFo(89LSv45pCc6n8ThjL%h67|oIksHYAi}g&Y<^#iI6VjFpXcY;cCQz+ zL;w~ek%iQCd-zNK>$Z`lXkwl`*zcG4yx}rYurVBNyF4HKj|#&c${A(3Kd+9trH03@z<@?m8H7jUmGFB$d=cS(Gx}nlU}ew ztM%Qu6D%;Bx4T&72j9d90#{vre^!qTYP=!n;Jh0f<&5sXDmhdZ4(8^V5_u;MNF0;M zoO4Vc}-{ zFVq8h=R+@n>0N_pm_yGMZliO3X&X|^Nik!@kLn+>kUDhMXfZM1(uv|N9HIsf7!B7c zfb~4!3kWA!Qn0FKt+Ui(WnZbd0OK@Jc(=&OicNM~Ts0Is{=lJ$I40r5f=iJqKQ!Ux z;IX@6(*-PWKnk%RpB2kO#MM<`lqs9YaaCw9T7w>223s-D087KvYqsvxTKe7$i)3ol zlb$PIM$qb@tTyM?09pu#RX#GnUtpx$cRB8AJ@w{K?vInZ!qj!G=i+7KJPBIQqjD+_ zB*<>>m$Y5G$VBDHaV+whEdq=FIOUp}))8ceJ4X#T_)0>lFX`x(uM#gDpEKGkT=LBrY>95jj)wde=eI zpmJRP=pzOK=F$HaBMBsSfKA6l2nrk9u$YzgQet*t@=19^otdGTv&|cL`};<5J!aq2 zUtHV3n>>BZ|5z3T(VYBq9~q9Q@mzfGTu@QUkCFLp%m3of!~3BkqAKr;xUA*}5*pxb z6_(Rx{zHhuv5bvl%Iav!DnU&-TraK`EepwvuMpoeJ4McvY!iAlh$-O|Wm~crbBP#K z?A7Ct$Vde8jHA;bqCfR>crKN+xLoJ0L)O-sJKqaGy+p0hR*+D*bA&zbJlD{-fh>+E z5!htF)3SK6_&U1_^jmWGn}heuQqbB2QvtQ3#Lh>rF)`=f-f{siQzYl5n2;X>-bOs9 zr`2-W64gro((g$66pEsUOs-t(L{$GTp?O?o%Tey?-ljxXi} z*5NXv-Ue+QA$FIGYg1Y8#TSJiP15;@MeG6S>#8$uJz!(I*3sQHHTug3TC1}#Zkq?+ zt2hI36yrL~>xiJF@^W_?U;*W?Em6jJClJr>)O*Cp^u=KGgpi|`<07}~L#fIBhmtJk zOaKL~cY(k56e5N|&_u-CdOP~`{HBDjDH5LqZ7%A&-8G)!_FP27u|uG_f9eN-2qMd9 z0w1e8Fh>I>UsMUmh4aj$3rE;)k<+Yme%Hf)heFoPozn=+sT=~E%sZuLT8CpyeBW>S9%=)Rqzt3c8H0TfiziM{AH>A4t_b&+|1ve7?5f0!a@nP?*&urSkX4$Doz5?!VakJaCG;trWx#LjQ;^Oq_? ziJA;o{m~n$4FP;R=k&KiTSWdYUlRr$MqZXek&#&Gi|xah621+>= z?eyewh1KkjP|!38QPaZDqIM?9fx6T*xzx}g;Crx)U+kk-#1xIF{c#FqkvEW9mNcEs zn;Dy|paQ7t>+$%zD0j9V*~K8m5*KL--^Sb9_l55_VdEpE+F~FZw^=T7F{g6DT0@b$ zRtgYAvx1mP_o0{PJ^be8Otk8%RyCz!OA$Y?RSx2%6Xx9%4v3nw0>ghz$0U446Sf5PzCa00B}{1R;LH06zX(x> zb->xDQ}NI+-B zuf*;;LSEZmMO{lg5%fT--HYOx_Ps%pFG`P%YLg_Z*WKa5sHks75ef<lVsmTq79b;WStGlY6b$2*OkKF<(g`@W^ehdvlc5ZTSbzv z1XkrTu1b+`>t9@@HY?=!rNkulr6q|f!}opeEsL3E)m3%zEY>=P$uQ_LhH1r3=25OQ zdbvu-_F@U44H*GWNT*waBb?&)F`Wn;m23Xvzl(Z*$aU_pF8_A(Hc}F6n0zZ2qvF{M z7yff0pPCxGl{AL& zD*X^+pdtU}m1EqKx-8Ilh3QN4NJKfIoM@jdbLpMKXEf(;*NtZe&?ki30(nLk=zV10 zu%-65s)w5m6Kh*oRX!MVyftb3mK-iJjKz6F0Y`opBL0CRR9`=-TKO#0GPt=a4>_S+dpVai=88zJpsv8*Fr(6)zr0BTzf!o` z`{Lf~%MMETu1>&TxMUcx9cWRdgZi~BE8HJ?aR#3Qm7WjUQo!pQA z!E-os#?iXidT0G_QHQRn{1wj=9LRFQ*zTvgf%JkqJJ~J})-ekviT{F>9SB=eFNf!n1 z=f!YNj<{|eGFnrds&yy!TUW${U>L~v>np|CwoX?}^)D|YMBu(!K0Uc@_7Sn{% zZl)7?v=Fzww85LNoQtryFO7U1nT0hXj#bJ$tk~hA7fZ2A{%&n>|FhZ3QJY3zg;UES zQwj0vO5(bT^knD8-s2Cj{9d@%A-$hz<37ShZA4i5cjJ}iqud6FiS}A)cSabk^~o`Po3Cz?J3JX5~1KBczA=^t(@67 zztfxe7`*xSOZekgV%H`=Pm#9rEzYVbm-p6#pW};Gg`Y`~_zs;{pY#m4k+-)^Ue4~< zjM3c|fJG&Q4--`5y|ru$;pM=RJg}%9_+3lE#8L6GPd^bc;BPQQ9cw6Er}wh_Hvy;u z?BN>j5@iGmO)4#rHQo~Bd7pd}k*xlm&h%Z#aY{!PLEqM=PDL)L6{*QzXpYup!rtgk;fmoy)%;Y1vi-gM*_qm+Cx912}DH?M)TQ4pUD^iPY zC)=IMTtKW+rOc9 zg%?+-1xcq*>z{iPD-@x){ynMepQuiAxqqTg{B{|(SDvnZi!E!vqNv1^zUJGS!?QQ? zr^N|8)tAq7xSpP)sGNe3ZT@|!sdI>B3dm+l)gO`G0P2F^9ABuiGo^qd8v6okOsMA70W&hx;h}8}0ZPo%k2+U||1m!HV<0 zRILApcKl-p`TwOIGknQLi4q~@ z)>qRPEoHX^RpG1&rt1fU$?sjS{X&4RKnWQ{#-GoZ69&RF;?EwL?_Ubmg5TE80`654 zGeJ%wlv=#l1Z!%UeH@v^d+h-@!8L|Z3wz@Z#N4WN$KQ}s~$|IC3@2o`# z#S1`YaYc~h_M*Oac}a2BJiRNW@e?E*PR6tpU^u;3RSvsrt2TMa95b@1z%+J#A%3)D)t8pHY?Em04HXEw+D2fr;!% zi33CDbI?hd6IWElVUouj3ajNd_IRT~j?AUH_oJF5*t+>q6}&p$Q2rXts$`4&C5}8X zsfa`Y@oTcRmZ!v|af(2Z4;a5R39>d9myQqyzjBm(h;>YrbLR@GOu%RQ@}Pa{(q=Ee zdREa4RH^!f(~Gu|pe<_yheREHEBzDvPb)PWw+f3`(wI+lBbw(q!9#82$F|s>>@Sjn zcQ#l!>k0{^5Hr2AU&yw`tfMGKwmUMo)-|09xF{wJ5NpB~M(Se(AxAqG4)pbI>gr|b zIavnH$glTT=X3`|CrXSw&UJAgOH+Mu^{;#^6vWG)TT>OYn}t;V5QKB2zMwv>PEn0BN#Zu2o> zAr-+~K;UkYHP<$B9Y76&7uq@}_oR7p^Im}#EWN~f?DR2v8dH|yaj-(S=eU&c+vfUe z!&QZAFL$F}o27Trx>`A{g_i|dOSKq( z+&jjlxzQE2A=;>=F#FG~22cf?@5>4hyIdp*GtcI_REm z{3s~m$=m9`EvJMMXeiAmsVjk;8WrvbFaQ$cy#UFCzdwqyfNNM_J|hU$=Ow^O^pD|K zigvWj$Wjp9bt#4uR1A79*+(y5Ltz!u;=X~OHKE7>LRo>(k}*jV%JBgEpYR5{MRJd& z#a^f(WE_Zpp*K7I2l_o8agy9P9`W_P3+a2YEhHL-1^KAVL zIf;%C?r_aKpqCdz%W$m`IA%&X0Gv&T$UVA0i3Sx+=SZEQ3iFg9zBgdTScZ8(r)UJx*&HGdjnyM9Gau4E{0Ec$y8VOscVpC_7@lPqk`Y5u3n5%* zE|c6RMf&ZIQSj5vP;j=30SfE+kpgO_(~AM0pepd6``Qpr&NEkaWqMGo;smEl74o7B z^dI@JN5>~-W&3s;my7Tr$@%4S{XtcDtp|RMuXmvUf)r^#re3SZu87P_8kSG}89v1d ziF+HwKoCi&@R7;0#9z|1HyhsSHq$HZAo%EgJOj4UQ7SM%=E7`zqil3-@sBHqOJ9R} z${PXk@NdHy_-Z%Kk4WE;71aOX*kT%NHvdtzcz$+` zdZjU=wY2D0i0uKC+f6UEe|}N3>g|t=y&a-M;8=izE(mwJ#K`FvFf%H_tv#=Nk(V>C zow&>9_h2vjVW6(GSLPErfCy_RoU9Gf6y}?qJ*l<9$oX2p<~|wj4>m6%qN}exR5vL` z@Sqgm+GMtW`;hTzMc?TMk(K%%PReyn<7Oim zBcxcn0jw0UYc#6MT9*Nw0863C72`aNBH$t*K7x6+cqFJ$HT(A{i{WM$>sid(RsE#l zweQRc>0sv7nm!UMide+t^sqJ#T9)!{V2-paW&GPDI0!6@`opqE+CxhQN zmo**Yu^2%S>@02E1Grd1<(mkkXM1gVnN3P(3rCYc-e7z6>qj~_Yk@8cpg8Toy8Ked{W z&u~9*Rq@p4Y8tQhYxQ+)Rcrj?A(9iVZPflkjWT0GSwY8QBSfZKW+NpU_CKQDs6%d7 zs${cJfyQf9*ZBN*Cb*O(F4-90FO{5Y#~QA*)LXpRcw6@t;Z_x`2l#rao6Mj#D{!1Qt++#JJhLIc=jY`^6hGguU;Jf1?|CHOEF6n*u1Sbby~}d) zrUvimVpJ37l4R^&-PbA-9yevxpS|fhf(_b-Y0p`XKWcO66uO}v7E_L%R=Kt&Zr7;& zl;Kw5V2gNR{k8hECZd6VU|-IKMm)JZ2fz!uOckO$OEx?MeqR}ib7%i`JVjp^8gPg> z;Mg=YVQ<~R-I(j(n%9iU#e_ z@YFXnCu8;OzZqh=pB-ZmJnDXQ6hX=C`}qBSaamvL?Dw=wPwF{)c~MILF~*9dE0uaT z(>+5DO(sUExBArWG=X!9`=e_;LW$B;Xo_#6)Imh;=IeUcQgTE^(dx`F0qM=1rh45< zkW4A7^U8?!mLexLoba4CK~#ON@`w+<<*#QAON%rS?jTY6+11FK{&ea=g~_?XKB%ma z*rl`~S6Crt*VTD*<10%6(ZtQ<^y?<=v)8G&AJ!8rYfe`Ad8LeiFc_ZlVD(l)VSrAM z{SlPi+S154<@c#06aAx-KmP)p$$65Jmb)1u=~5PM-MTkaN$H2%WPnA0MHD^?{^Y4W-Q&7p$HWUeWWiY z7|%U2veI!HCT>)eYR;~Pq4EF_4Q0?h^`VFq!pCO1acw%*`d>qv4cr;hghePB6M?`v3yrOv^hQLuFf8
orKCZWFL(y{2O&JJbOop-!fjVU#ZN*GHq3 zC202 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 Uk>xWJ^6hdIXWFY4c^45omHyy8 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%0A&I1sP-K#N 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 I=@ttA17kgLj{pDw diff --git a/designs/leon3-xilinx-ml403/lconfig.tk b/designs/leon3-xilinx-ml403/lconfig.tk index 3c746128..3b004d62 100755 --- a/designs/leon3-xilinx-ml403/lconfig.tk +++ b/designs/leon3-xilinx-ml403/lconfig.tk @@ -755,7 +755,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -765,7 +766,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -908,8 +911,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -928,6 +933,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1017,9 +1026,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1073,10 +1083,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1122,14 +1133,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1202,13 +1215,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1248,22 +1269,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1320,21 +1609,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1381,36 +1670,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1418,48 +1708,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1515,27 +1806,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1576,16 +1867,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1594,34 +1886,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1678,92 +1971,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1771,18 +2064,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1823,52 +2116,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1876,162 +2170,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2087,45 +2382,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2165,18 +2462,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2184,55 +2482,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2289,24 +2592,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2346,17 +2649,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2364,37 +2668,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2450,16 +2755,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2507,9 +2819,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2531,21 +2841,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2854,14 +3169,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2935,17 +3250,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3637,16 +3952,16 @@ proc menu18 {w title} { hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3708,21 +4023,21 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3782,14 +4097,14 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 19 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3843,17 +4158,17 @@ proc update_define_menu19 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3909,15 +4224,15 @@ proc menu20 {w title} { bool $w.config.f 20 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 20 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 20 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4007,19 +4322,19 @@ proc update_menu20 {} { proc update_define_menu20 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4297,7 +4612,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4307,6 +4623,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4331,6 +4649,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4343,14 +4662,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4363,27 +4687,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4393,17 +4717,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4415,12 +4739,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4430,10 +4754,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4444,7 +4768,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4456,26 +4780,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4483,27 +4809,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4524,7 +4854,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4560,7 +4890,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4571,14 +4901,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4659,7 +4989,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4669,6 +5000,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4707,6 +5040,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4719,9 +5053,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4735,239 +5070,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5012,13 +5497,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5092,38 +5577,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UART, timer, I2C, I/O port and interrupt controller" global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5205,7 +5690,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5215,6 +5701,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5233,8 +5721,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5317,11 +5810,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5342,6 +5837,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5441,8 +5940,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5461,6 +5962,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5501,324 +6006,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-xilinx-ml403/leon3mp.vhd b/designs/leon3-xilinx-ml403/leon3mp.vhd index 0aa6501a..26bf211b 100644 --- a/designs/leon3-xilinx-ml403/leon3mp.vhd +++ b/designs/leon3-xilinx-ml403/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -380,7 +380,8 @@ begin hindex => 0, haddr => 16#400#, hmask => 16#F00#, ioaddr => 1, pwron => CFG_DDRSP_INIT, MHz => BOARD_FREQ/1000, clkmul => CFG_DDRSP_FREQ/10, clkdiv => 10, ahbfreq => CPU_FREQ/1000, - col => CFG_DDRSP_COL, Mbyte => CFG_DDRSP_SIZE, ddrbits => 32) + col => CFG_DDRSP_COL, Mbyte => CFG_DDRSP_SIZE, ddrbits => 32, + phyiconf => 1) port map ( rst, rstn, lclk, clkm, lock, clkml, clkml, ahbsi, ahbso(0), ddr_clkv, ddr_clkbv, open, ddr_clk_fb, diff --git a/designs/leon3-xilinx-ml403/testbench.vhd b/designs/leon3-xilinx-ml403/testbench.vhd index 6a5e1da6..e4825650 100644 --- a/designs/leon3-xilinx-ml403/testbench.vhd +++ b/designs/leon3-xilinx-ml403/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-ml403/tkconfig.h b/designs/leon3-xilinx-ml403/tkconfig.h index fd7911b6..f6fa5a70 100644 --- a/designs/leon3-xilinx-ml403/tkconfig.h +++ b/designs/leon3-xilinx-ml403/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-xilinx-ml40x/Makefile b/designs/leon3-xilinx-ml40x/Makefile index d173e035..0e91059d 100644 --- a/designs/leon3-xilinx-ml40x/Makefile +++ b/designs/leon3-xilinx-ml40x/Makefile @@ -22,11 +22,11 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix ihp gleichmann fmf gsi spansion + tmtc openchip hynix ihp fmf gsi spansion DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can usb \ - hcan leon4 leon4b64 l2cache slink ascs pwm haps coremp7 gr1553b iommu + hcan leon4 leon4v0 l2cache slink ascs pwm gr1553b iommu -FILESKIP = grcan.vhd simple_spi_top.v +FILESKIP = grcan.vhd include $(GRLIB)/software/leon3/Makefile XLDFLAGS=-L./ lib3tests.a -Ttext=0x40000000 diff --git a/designs/leon3-xilinx-ml40x/ahbrom.vhd b/designs/leon3-xilinx-ml40x/ahbrom.vhd index e5eb66ec..df5aba6a 100644 --- a/designs/leon3-xilinx-ml40x/ahbrom.vhd +++ b/designs/leon3-xilinx-ml40x/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-xilinx-ml40x/config.help b/designs/leon3-xilinx-ml40x/config.help index 84994664..7759d4ef 100644 --- a/designs/leon3-xilinx-ml40x/config.help +++ b/designs/leon3-xilinx-ml40x/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-xilinx-ml40x/doc/Makefile b/designs/leon3-xilinx-ml40x/doc/Makefile deleted file mode 100644 index 2b8abafd..00000000 --- a/designs/leon3-xilinx-ml40x/doc/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -clean: - -rm *backup* *.ps *.log diff --git a/designs/leon3-xilinx-ml40x/doc/leon3-ml401.pdf b/designs/leon3-xilinx-ml40x/doc/leon3-ml401.pdf deleted file mode 100644 index 2282b4a8c55f336c8dd3315c05afbe916619ea86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215497 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
orKCZWFL(y{2O&JJbOop-!fjVU#ZN*GHq3 zC202 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 Uk>xWJ^6hdIXWFY4c^45omHyy8 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%0A&I1sP-K#N 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 I=@ttA17kgLj{pDw diff --git a/designs/leon3-xilinx-ml40x/lconfig.tk b/designs/leon3-xilinx-ml40x/lconfig.tk index 6ff2585f..53cc907a 100755 --- a/designs/leon3-xilinx-ml40x/lconfig.tk +++ b/designs/leon3-xilinx-ml40x/lconfig.tk @@ -756,7 +756,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -766,7 +767,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -909,8 +912,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -929,6 +934,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1125,9 +1134,10 @@ proc menu3 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_3 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_3 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_3 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_3 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_3 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_3 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 3 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 3 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 3 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1181,10 +1191,11 @@ proc update_menu3 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x2.l configure -state normal; } else {.menu3.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu3.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x2.l configure -state normal; } else {.menu3.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x3.l configure -state normal; } else {.menu3.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1230,14 +1241,16 @@ proc update_define_menu3 {} { if {$tmpvar_3 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_3 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_3 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_3 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_3 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1310,13 +1323,21 @@ proc menu4 {w title} { bool $w.config.f 4 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 4 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 4 2 "Integer unit " 5 - submenu $w.config.f 4 3 "Floating-point unit" 6 - submenu $w.config.f 4 4 "Cache system" 7 - submenu $w.config.f 4 5 "MMU" 8 - submenu $w.config.f 4 6 "Debug Support Unit " 9 - submenu $w.config.f 4 7 "Fault-tolerance " 10 - submenu $w.config.f 4 8 "VHDL debug settings " 11 + global tmpvar_4 + minimenu $w.config.f 4 2 "Force values from example configuration (see help)" tmpvar_4 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_4 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_4 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_4 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_4 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 4 3 "Integer unit " 5 + submenu $w.config.f 4 4 "Floating-point unit" 6 + submenu $w.config.f 4 5 "Cache system" 7 + submenu $w.config.f 4 6 "MMU" 8 + submenu $w.config.f 4 7 "Debug Support Unit " 9 + submenu $w.config.f 4 8 "Fault-tolerance " 10 + submenu $w.config.f 4 9 "VHDL debug settings " 11 @@ -1356,22 +1377,290 @@ proc update_menu4 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x1.l configure -state normal; } else {.menu4.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x2 normal {m}} else {configure_entry .menu4.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x3 normal {m}} else {configure_entry .menu4.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x4 normal {m}} else {configure_entry .menu4.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x5 normal {m}} else {configure_entry .menu4.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x6 normal {m}} else {configure_entry .menu4.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x7 normal {m}} else {configure_entry .menu4.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x3 normal {m}} else {configure_entry .menu4.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x4 normal {m}} else {configure_entry .menu4.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x5 normal {m}} else {configure_entry .menu4.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x6 normal {m}} else {configure_entry .menu4.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x7 normal {m}} else {configure_entry .menu4.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x8 normal {m}} else {configure_entry .menu4.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x9 normal {m}} else {configure_entry .menu4.config.f.x9 disabled {m}} } proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_4 + global CONFIG_LEON3_MIN + if {$tmpvar_4 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_4 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_4 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_4 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1428,21 +1717,21 @@ proc menu5 {w title} { int $w.config.f 5 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 5 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_4 - minimenu $w.config.f 5 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_5 + minimenu $w.config.f 5 2 "Hardware multiplier latency" tmpvar_5 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_5 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_5 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_5 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 5 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_5 - minimenu $w.config.f 5 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED + global tmpvar_6 + minimenu $w.config.f 5 4 "Multipler structure " tmpvar_6 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_6 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_6 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 5 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 5 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1489,36 +1778,37 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x0.l configure -state normal; } else {.menu5.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x0.l configure -state normal; } else {.menu5.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x1 normal {n l y}} else {configure_entry .menu5.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x6 normal {n l y}} else {configure_entry .menu5.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x7 normal {n l y}} else {configure_entry .menu5.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x8.l configure -state normal; } else {.menu5.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x8.l configure -state normal; } else {.menu5.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x9.l configure -state normal; } else {.menu5.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x9.l configure -state normal; } else {.menu5.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x10 normal {n l y}} else {configure_entry .menu5.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x11.l configure -state normal; } else {.menu5.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x11.l configure -state normal; } else {.menu5.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x11.l configure -state disabled} } @@ -1526,48 +1816,49 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_5 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_5 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_5 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_6 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_6 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_6 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_6 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1623,27 +1914,27 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_6 - minimenu $w.config.f 6 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU + global tmpvar_7 + minimenu $w.config.f 6 1 "FPU core" tmpvar_7 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_7 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_7 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_7 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_7 - minimenu $w.config.f 6 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_8 + minimenu $w.config.f 6 2 "GRFPU multiplier" tmpvar_8 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_8 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_8 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_8 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_8 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_8 - minimenu $w.config.f 6 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 + global tmpvar_9 + minimenu $w.config.f 6 3 "GRFPU-LITE controller" tmpvar_9 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_9 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_9 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_9 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 6 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1684,16 +1975,17 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu6.config.f.x4 normal {n l y}} else {configure_entry .menu6.config.f.x4 disabled {y n l}} } @@ -1702,34 +1994,35 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_6 + global tmpvar_7 global CONFIG_FPU_GRFPU - if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_7 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_7 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_7 + if {$tmpvar_7 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_8 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_8 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_8 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_8 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_8 + if {$tmpvar_8 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_9 global CONFIG_FPU_GRFPC0 - if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_9 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_9 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_9 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1786,92 +2079,92 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_9 - minimenu $w.config.f 7 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 + global tmpvar_10 + minimenu $w.config.f 7 1 "Associativity (sets) " tmpvar_10 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_10 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_10 - minimenu $w.config.f 7 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 + global tmpvar_11 + minimenu $w.config.f 7 2 "Way size (kbytes/way)" tmpvar_11 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_11 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_11 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_11 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_11 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_11 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_11 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_11 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_11 - minimenu $w.config.f 7 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 + global tmpvar_12 + minimenu $w.config.f 7 3 "Line size (bytes/line)" tmpvar_12 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_12 - minimenu $w.config.f 7 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND + global tmpvar_13 + minimenu $w.config.f 7 4 "Replacement alorithm" tmpvar_13 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_13 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_13 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_13 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_13 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 7 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 7 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_13 - minimenu $w.config.f 7 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_14 + minimenu $w.config.f 7 7 "Local data RAM size (kbytes)" tmpvar_14 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 7 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 7 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_14 - minimenu $w.config.f 7 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 + global tmpvar_15 + minimenu $w.config.f 7 10 "Associativity (sets)" tmpvar_15 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_15 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_15 - minimenu $w.config.f 7 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 + global tmpvar_16 + minimenu $w.config.f 7 11 "Set size (kbytes/set)" tmpvar_16 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_16 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_16 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_16 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_16 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_16 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_16 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_16 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_16 - minimenu $w.config.f 7 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 + global tmpvar_17 + minimenu $w.config.f 7 12 "Line size (bytes/line)" tmpvar_17 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_17 - minimenu $w.config.f 7 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND + global tmpvar_18 + minimenu $w.config.f 7 13 "Replacement alorithm" tmpvar_18 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_18 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_18 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_18 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_18 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 7 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 7 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1879,18 +2172,18 @@ proc menu7 {w title} { bool $w.config.f 7 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 7 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 7 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_18 - minimenu $w.config.f 7 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_19 + minimenu $w.config.f 7 20 "Local data RAM size (kbytes)" tmpvar_19 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_19 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_19 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_19 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_19 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_19 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_19 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_19 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_19 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_19 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 7 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1931,52 +2224,53 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu7.config.f.x6 normal {n l y}} else {configure_entry .menu7.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x7 normal {x l}} else {configure_entry .menu7.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x7 normal {x l}} else {configure_entry .menu7.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu7.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x8.l configure -state normal; } else {.menu7.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu7.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x8.l configure -state normal; } else {.menu7.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x9 normal {n l y}} else {configure_entry .menu7.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x10 normal {x l}} else {configure_entry .menu7.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x11 normal {x l}} else {configure_entry .menu7.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x12 normal {x l}} else {configure_entry .menu7.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x10 normal {x l}} else {configure_entry .menu7.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x11 normal {x l}} else {configure_entry .menu7.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x12 normal {x l}} else {configure_entry .menu7.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x13 normal {x l}} else {configure_entry .menu7.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x13 normal {x l}} else {configure_entry .menu7.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu7.config.f.x14 normal {n l y}} else {configure_entry .menu7.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu7.config.f.x15 normal {n l y}} else {configure_entry .menu7.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu7.config.f.x16 normal {n l y}} else {configure_entry .menu7.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu7.config.f.x17 normal {n l y}} else {configure_entry .menu7.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu7.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x18.l configure -state normal; } else {.menu7.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu7.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x18.l configure -state normal; } else {.menu7.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu7.config.f.x19 normal {n l y}} else {configure_entry .menu7.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x20 normal {x l}} else {configure_entry .menu7.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x20 normal {x l}} else {configure_entry .menu7.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu7.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x21.l configure -state normal; } else {.menu7.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu7.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x21.l configure -state normal; } else {.menu7.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x21.l configure -state disabled} } @@ -1984,162 +2278,163 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_9 + global tmpvar_10 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_10 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_10 + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_11 global CONFIG_ICACHE_SZ1 - if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_11 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_11 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_11 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_11 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_11 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_11 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_11 + if {$tmpvar_11 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_12 global CONFIG_ICACHE_LZ16 - if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_12 + if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_13 global CONFIG_ICACHE_ALGORND - if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_13 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_13 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_13 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_13 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_14 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_14 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_14 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_14 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_14 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_14 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_14 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_14 + global tmpvar_15 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_15 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_15 + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_16 global CONFIG_DCACHE_SZ1 - if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_16 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_16 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_16 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_16 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_16 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_16 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_16 + if {$tmpvar_16 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_17 global CONFIG_DCACHE_LZ16 - if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_17 + if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_18 global CONFIG_DCACHE_ALGORND - if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_18 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_18 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_18 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_18 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_19 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_19 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_19 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_19 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_19 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_19 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_19 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_19 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_19 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2195,45 +2490,47 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_19 - minimenu $w.config.f 8 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED + global tmpvar_20 + minimenu $w.config.f 8 1 "MMU type " tmpvar_20 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_20 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_20 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 8 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY + global tmpvar_21 + minimenu $w.config.f 8 2 "TLB replacement sheme " tmpvar_21 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_21 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_21 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_21 - minimenu $w.config.f 8 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_22 - minimenu $w.config.f 8 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 + minimenu $w.config.f 8 3 "Instruction (or combined) TLB entries" tmpvar_22 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_23 + minimenu $w.config.f 8 4 "Data TLB entries" tmpvar_23 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_23 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_23 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 8 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_23 - minimenu $w.config.f 8 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K + global tmpvar_24 + minimenu $w.config.f 8 6 "MMU page size" tmpvar_24 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_24 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_24 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_24 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_24 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_24 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2273,18 +2570,19 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x1 normal {x l}} else {configure_entry .menu8.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x3 normal {x l}} else {configure_entry .menu8.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x1 normal {x l}} else {configure_entry .menu8.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x3 normal {x l}} else {configure_entry .menu8.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu8.config.f.x5 normal {n l y}} else {configure_entry .menu8.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x6 normal {x l}} else {configure_entry .menu8.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x6 normal {x l}} else {configure_entry .menu8.config.f.x6 disabled {x l}} } @@ -2292,55 +2590,60 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_19 + global tmpvar_20 global CONFIG_MMU_COMBINED - if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_20 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_20 + if {$tmpvar_20 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_21 global CONFIG_MMU_REPARRAY - if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_21 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_21 + if {$tmpvar_21 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_22 global CONFIG_MMU_I2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_22 + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_23 global CONFIG_MMU_D2 - if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_23 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_23 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_23 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_23 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_23 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_23 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_MMU_PAGE_4K - if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_24 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_24 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_24 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_24 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_24 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2397,24 +2700,24 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 9 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_24 - minimenu $w.config.f 9 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 + global tmpvar_25 + minimenu $w.config.f 9 2 "Instruction trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 9 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_25 - minimenu $w.config.f 9 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 + global tmpvar_26 + minimenu $w.config.f 9 4 "AHB trace buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2454,17 +2757,18 @@ proc menu9 {w title} { proc update_menu9 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu9.config.f.x1 normal {n l y}} else {configure_entry .menu9.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu9.config.f.x4 normal {x l}} else {configure_entry .menu9.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu9.config.f.x4 normal {x l}} else {configure_entry .menu9.config.f.x4 disabled {x l}} } @@ -2472,37 +2776,38 @@ proc update_define_menu9 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2558,16 +2863,23 @@ proc menu10 {w title} { bool $w.config.f 10 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_26 - minimenu $w.config.f 10 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE + global tmpvar_27 + minimenu $w.config.f 10 1 "IU Register file protection " tmpvar_27 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_27 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 10 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_28 + minimenu $w.config.f 10 2 "FPU Register file protection " tmpvar_28 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_28 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_28 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_28 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_28 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 10 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 10 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 10 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2615,9 +2927,7 @@ proc update_menu10 {} { configure_entry .menu10.config.f.x0 normal {n l y}} else {configure_entry .menu10.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu10.config.f.x1 normal {x l}} else {configure_entry .menu10.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu10.config.f.x2 normal {n l y}} else {configure_entry .menu10.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu10.config.f.x2 normal {x l}} else {configure_entry .menu10.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu10.config.f.x3 normal {n l y}} else {configure_entry .menu10.config.f.x3 disabled {y n l}} @@ -2639,21 +2949,26 @@ proc update_define_menu10 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_26 + global tmpvar_27 global CONFIG_IUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_27 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_27 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_28 + global CONFIG_FPUFT_NONE + if {$tmpvar_28 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_28 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_28 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_28 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2962,14 +3277,14 @@ proc menu13 {w title} { bool $w.config.f 13 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 13 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 13 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_27 - minimenu $w.config.f 13 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_27 CONFIG_DSU_ETHSZ1 + global tmpvar_29 + minimenu $w.config.f 13 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_29 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 13 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 13 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -3043,17 +3358,17 @@ proc update_define_menu13 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3746,16 +4061,16 @@ proc menu19 {w title} { hex $w.config.f 19 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 19 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 19 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_28 - minimenu $w.config.f 19 4 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 + global tmpvar_30 + minimenu $w.config.f 19 4 "AHB RAM size (Kbyte)" tmpvar_30 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 19 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3817,21 +4132,21 @@ proc update_define_menu19 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_30 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_30 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3891,14 +4206,14 @@ proc menu20 {w title} { bool $w.config.f 20 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 20 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_29 - minimenu $w.config.f 20 2 "AHB FIFO size (words) " tmpvar_29 CONFIG_GRETH_FIFO4 + global tmpvar_31 + minimenu $w.config.f 20 2 "AHB FIFO size (words) " tmpvar_31 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3952,17 +4267,17 @@ proc update_define_menu20 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_29 + global tmpvar_31 global CONFIG_GRETH_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_29 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_31 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -4018,15 +4333,15 @@ proc menu21 {w title} { bool $w.config.f 21 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_30 - minimenu $w.config.f 21 1 "UART1 FIFO depth" tmpvar_30 CONFIG_UA1_FIFO1 + global tmpvar_32 + minimenu $w.config.f 21 1 "UART1 FIFO depth" tmpvar_32 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_32 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_32 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 21 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 21 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4116,19 +4431,19 @@ proc update_menu21 {} { proc update_define_menu21 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_30 + global tmpvar_32 global CONFIG_UA1_FIFO1 - if {$tmpvar_30 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_32 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_30 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_32 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_32 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_32 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_32 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_32 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4504,7 +4819,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4514,6 +4830,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4541,6 +4859,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4553,14 +4872,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_4 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4573,27 +4897,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4603,17 +4927,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4625,12 +4949,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4640,10 +4964,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4654,7 +4978,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4666,26 +4990,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_21 "(not set)" +set tmpvar_22 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_22 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_23 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4693,27 +5019,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_28 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4734,7 +5064,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4770,7 +5100,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4781,14 +5111,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4870,7 +5200,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4880,6 +5211,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4923,6 +5256,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_3 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_3 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_3 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_3 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4935,9 +5269,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4951,239 +5286,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_4 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_4 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_4 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_4 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_4 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_5 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_5 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_6 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_6 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_6 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_7 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_7 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_7 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_7 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_8 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_8 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_9 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_9 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_9 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_9 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_10 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_11 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_11 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_11 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_11 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_11 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_11 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_11 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_12 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_13 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_13 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_15 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_16 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_16 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_16 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_16 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_16 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_16 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_16 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_17 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_18 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_18 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_19 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_19 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_19 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_19 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_19 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_19 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_19 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_19 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_19 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_20 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_21 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_21 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_22 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_23 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_23 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_24 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_24 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_24 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_24 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_24 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_26 + global tmpvar_27 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_28 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_28 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_28 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_28 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_28 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5228,13 +5713,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_27 + global tmpvar_29 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5308,38 +5793,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_28 + global tmpvar_30 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_29 + global tmpvar_31 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UART, timer, I2C, I/O port and interrupt controller" global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_30 + global tmpvar_32 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_32 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_32 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5424,7 +5909,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5434,6 +5920,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5454,8 +5942,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5538,11 +6031,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5563,6 +6058,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5662,8 +6161,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5682,6 +6183,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5728,324 +6233,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_3 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_3 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_3 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_3 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_3 "Xilinx-DCM" } global tmpvar_4 - set tmpvar_4 "5-cycles" + set tmpvar_4 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_4 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_4 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_4 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_4 "Custom-configuration" } + global tmpvar_5 + set tmpvar_5 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_5 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_5 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } - global tmpvar_5 - set tmpvar_5 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_5 "5-cycles" } + global tmpvar_6 + set tmpvar_6 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_6 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_6 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } - global tmpvar_6 - set tmpvar_6 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_6 "Designware" } + global tmpvar_7 + set tmpvar_7 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_7 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_7 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } - global tmpvar_7 - set tmpvar_7 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_7 "Meiko" } + global tmpvar_8 + set tmpvar_8 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_8 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_8 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_8 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } - global tmpvar_8 - set tmpvar_8 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_8 "TechSpec" } + global tmpvar_9 + set tmpvar_9 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_9 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_9 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } - global tmpvar_9 - set tmpvar_9 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_9 "Non-blocking" } + global tmpvar_10 + set tmpvar_10 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_10 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } - global tmpvar_10 - set tmpvar_10 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_10 "4" } + global tmpvar_11 + set tmpvar_11 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_11 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_11 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_11 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_11 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_11 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_11 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_11 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } - global tmpvar_11 - set tmpvar_11 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_11 "256" } + global tmpvar_12 + set tmpvar_12 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_12 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } - global tmpvar_12 - set tmpvar_12 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_12 "32" } + global tmpvar_13 + set tmpvar_13 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_13 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_13 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_13 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } - global tmpvar_13 - set tmpvar_13 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_13 "LRU" } + global tmpvar_14 + set tmpvar_14 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_14 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_14 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_14 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_14 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_14 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_14 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_14 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_14 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } - global tmpvar_14 - set tmpvar_14 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_14 "256" } + global tmpvar_15 + set tmpvar_15 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_15 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } - global tmpvar_15 - set tmpvar_15 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_15 "4" } + global tmpvar_16 + set tmpvar_16 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_16 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_16 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_16 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_16 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_16 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_16 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_16 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } - global tmpvar_16 - set tmpvar_16 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_16 "256" } + global tmpvar_17 + set tmpvar_17 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_17 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } - global tmpvar_17 - set tmpvar_17 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_17 "32" } + global tmpvar_18 + set tmpvar_18 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_18 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_18 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_18 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } - global tmpvar_18 - set tmpvar_18 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_18 "LRU" } + global tmpvar_19 + set tmpvar_19 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_19 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_19 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_19 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_19 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_19 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_19 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_19 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_19 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } - global tmpvar_19 - set tmpvar_19 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_19 "256" } + global tmpvar_20 + set tmpvar_20 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_20 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } - global tmpvar_20 - set tmpvar_20 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_20 "split" } + global tmpvar_21 + set tmpvar_21 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_21 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_21 "Increment" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_23 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_23 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_23 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_23 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } - global tmpvar_23 - set tmpvar_23 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_23 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_23 "64" } + global tmpvar_24 + set tmpvar_24 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_24 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_24 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_24 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_24 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_24 "Programmable" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_26 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_26 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_26 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_26 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_26 "16" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_27 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_28 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_28 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_28 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_28 "TMR" } + global tmpvar_29 + set tmpvar_29 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_27 "16" } - global tmpvar_28 - set tmpvar_28 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_29 "16" } + global tmpvar_30 + set tmpvar_30 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_30 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_30 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_30 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_30 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_30 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_30 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_31 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_29 "64" } - global tmpvar_30 - set tmpvar_30 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_31 "64" } + global tmpvar_32 + set tmpvar_32 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_30 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_32 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_30 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_32 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_32 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_32 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_32 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_32 "32" } } diff --git a/designs/leon3-xilinx-ml40x/leon3mp.vhd b/designs/leon3-xilinx-ml40x/leon3mp.vhd index 585cd374..358f78e4 100644 --- a/designs/leon3-xilinx-ml40x/leon3mp.vhd +++ b/designs/leon3-xilinx-ml40x/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -396,12 +396,13 @@ begin port map (sram_flash_data, memo.data, memo.vbdrive, memi.data); ddrsp0 : if (CFG_DDRSP /= 0) generate - + -- phyiconf => 1 = no diff pads for DDR clock pairs ddrc0 : ddrspa generic map ( fabtech => CFG_FABTECH, memtech => memtech, hindex => 0, haddr => 16#400#, hmask => 16#F00#, ioaddr => 1, pwron => CFG_DDRSP_INIT, MHz => BOARD_FREQ/1000, clkmul => CFG_DDRSP_FREQ/10, clkdiv => 10, ahbfreq => CPU_FREQ/1000, - col => CFG_DDRSP_COL, Mbyte => CFG_DDRSP_SIZE, ddrbits => 32) + col => CFG_DDRSP_COL, Mbyte => CFG_DDRSP_SIZE, ddrbits => 32, + phyiconf => 1) port map ( rst, rstn, lclk, clkm, lock, clkml, clkml, ahbsi, ahbso(0), ddr_clkv, ddr_clkbv, open, ddr_clk_fb, diff --git a/designs/leon3-xilinx-ml40x/testbench.vhd b/designs/leon3-xilinx-ml40x/testbench.vhd index 5285d5d6..6a9864ba 100644 --- a/designs/leon3-xilinx-ml40x/testbench.vhd +++ b/designs/leon3-xilinx-ml40x/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-ml40x/tkconfig.h b/designs/leon3-xilinx-ml40x/tkconfig.h index 9d68168d..eb869351 100644 --- a/designs/leon3-xilinx-ml40x/tkconfig.h +++ b/designs/leon3-xilinx-ml40x/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/leon3-xilinx-ml501/Makefile b/designs/leon3-xilinx-ml501/Makefile index a468a5b2..3c9e7550 100644 --- a/designs/leon3-xilinx-ml501/Makefile +++ b/designs/leon3-xilinx-ml501/Makefile @@ -60,12 +60,12 @@ XLDFLAGS=-L./ lib3tests.a -Ttext=0x40000000 TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann usbhc spw fmf gsi spansion -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan can ata pci leon3ft ambatest \ - grusbhc usb spacewire hcan leon4 leon4b64 l2cache \ - slink ascs pwm haps coremp7 gr1553b iommu + tmtc openchip ihp usbhc spw fmf gsi spansion +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan can pci leon3ft ambatest \ + grusbhc usb spacewire hcan leon4 leon4v0 l2cache \ + slink ascs pwm gr1553b iommu -FILESKIP = grcan.vhd simple_spi_top.v +FILESKIP = grcan.vhd include $(GRLIB)/bin/Makefile diff --git a/designs/leon3-xilinx-ml501/README.txt b/designs/leon3-xilinx-ml501/README.txt index a40243fc..6e4f1337 100644 --- a/designs/leon3-xilinx-ml501/README.txt +++ b/designs/leon3-xilinx-ml501/README.txt @@ -43,6 +43,9 @@ Design specifics: without having to regenerate the MIG itself. The default settings are compatible with the provided 256 Mbyte SODIMM. + It is essential to use ISE 13.4. MIG generation is not supported + for any other ISE version in this design. + * The SSRAM can be interfaced with the LEON2 Memory controller. Start GRMON with -ramrws 1 when the LEON2 controller is used. diff --git a/designs/leon3-xilinx-ml501/ahb2mig_ml50x.vhd b/designs/leon3-xilinx-ml501/ahb2mig_ml50x.vhd index cef83932..fc328732 100644 --- a/designs/leon3-xilinx-ml501/ahb2mig_ml50x.vhd +++ b/designs/leon3-xilinx-ml501/ahb2mig_ml50x.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -428,7 +428,6 @@ begin ahbso.hready <= ra.hready; ahbso.hresp <= ra.hresp; ahbso.hrdata <= ahbdrivedata(ra.hrdata); - ahbso.hcache <= '1'; -- migi.app_addr <= '0' & ra.acc.haddr(28 downto 6) & "000"; migi.app_addr <= "00000" & ra.acc.haddr(28 downto 5) & "00"; diff --git a/designs/leon3-xilinx-ml501/ahbrom.vhd b/designs/leon3-xilinx-ml501/ahbrom.vhd index e5eb66ec..df5aba6a 100644 --- a/designs/leon3-xilinx-ml501/ahbrom.vhd +++ b/designs/leon3-xilinx-ml501/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-xilinx-ml501/config.help b/designs/leon3-xilinx-ml501/config.help index 10380303..5a9cd175 100644 --- a/designs/leon3-xilinx-ml501/config.help +++ b/designs/leon3-xilinx-ml501/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-xilinx-ml501/lconfig.tk b/designs/leon3-xilinx-ml501/lconfig.tk index f3a1f7c5..6dded157 100755 --- a/designs/leon3-xilinx-ml501/lconfig.tk +++ b/designs/leon3-xilinx-ml501/lconfig.tk @@ -756,7 +756,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -766,7 +767,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -909,8 +912,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -929,6 +934,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1018,9 +1027,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1074,10 +1084,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1123,14 +1134,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1203,13 +1216,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1249,22 +1270,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1321,21 +1610,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1382,36 +1671,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1419,48 +1709,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1516,27 +1807,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1577,16 +1868,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1595,34 +1887,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1679,92 +1972,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1772,18 +2065,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1824,52 +2117,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1877,162 +2171,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2088,45 +2383,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2166,18 +2463,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2185,55 +2483,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2290,24 +2593,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2347,17 +2650,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2365,37 +2669,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2451,16 +2756,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2508,9 +2820,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2532,21 +2842,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2855,14 +3170,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2936,17 +3251,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3735,16 +4050,16 @@ proc menu18 {w title} { hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3806,21 +4121,21 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3880,14 +4195,14 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 19 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3941,17 +4256,17 @@ proc update_define_menu19 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -4007,15 +4322,15 @@ proc menu20 {w title} { bool $w.config.f 20 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 20 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 20 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4106,19 +4421,19 @@ proc update_menu20 {} { proc update_define_menu20 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4494,7 +4809,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4504,6 +4820,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4528,6 +4846,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4540,14 +4859,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4560,27 +4884,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4590,17 +4914,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4612,12 +4936,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4627,10 +4951,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4641,7 +4965,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4653,26 +4977,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4680,27 +5006,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4721,7 +5051,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4777,7 +5107,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4788,14 +5118,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4878,7 +5208,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4888,6 +5219,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4926,6 +5259,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4938,9 +5272,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4954,239 +5289,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5231,13 +5716,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5345,38 +5830,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UART, timer, I2C, SysMon, I/O port and interrupt controller" global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5463,7 +5948,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5473,6 +5959,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5491,8 +5979,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5575,11 +6068,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5600,6 +6095,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5699,8 +6198,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5719,6 +6220,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5759,324 +6264,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-xilinx-ml501/leon3mp.vhd b/designs/leon3-xilinx-ml501/leon3mp.vhd index 17334891..6801f4a6 100644 --- a/designs/leon3-xilinx-ml501/leon3mp.vhd +++ b/designs/leon3-xilinx-ml501/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-ml501/svga2ch7301c.vhd b/designs/leon3-xilinx-ml501/svga2ch7301c.vhd index 0c28c28c..e0fa9171 100644 --- a/designs/leon3-xilinx-ml501/svga2ch7301c.vhd +++ b/designs/leon3-xilinx-ml501/svga2ch7301c.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-ml501/testbench.vhd b/designs/leon3-xilinx-ml501/testbench.vhd index 3bfc3647..db686a97 100644 --- a/designs/leon3-xilinx-ml501/testbench.vhd +++ b/designs/leon3-xilinx-ml501/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-ml501/tkconfig.h b/designs/leon3-xilinx-ml501/tkconfig.h index a617e6a7..33dd02bc 100644 --- a/designs/leon3-xilinx-ml501/tkconfig.h +++ b/designs/leon3-xilinx-ml501/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -783,6 +805,10 @@ #endif +#ifndef CONFIG_MIG_DDR3 +#define CONFIG_MIG_DDR3 0 +#endif + #ifndef CONFIG_MIG_DDR2 #define CONFIG_MIG_DDR2 0 #endif diff --git a/designs/leon3-xilinx-ml50x/Makefile b/designs/leon3-xilinx-ml50x/Makefile index eb141df2..930f35c7 100644 --- a/designs/leon3-xilinx-ml50x/Makefile +++ b/designs/leon3-xilinx-ml50x/Makefile @@ -72,12 +72,12 @@ XLDFLAGS=-L./ lib3tests.a -Ttext=0x40000000 TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann usbhc spw fmf gsi spansion -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan can ata pci leon3ft ambatest \ - grusbhc usb spacewire hcan leon4 leon4b64 l2cache \ - slink ascs pwm haps coremp7 gr1553b iommu + tmtc openchip ihp usbhc spw fmf gsi spansion +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan can pci leon3ft ambatest \ + grusbhc usb spacewire hcan leon4 leon4v0 l2cache \ + slink ascs pwm gr1553b iommu -FILESKIP = grcan.vhd simple_spi_top.v +FILESKIP = grcan.vhd include $(GRLIB)/bin/Makefile diff --git a/designs/leon3-xilinx-ml50x/README.txt b/designs/leon3-xilinx-ml50x/README.txt index b97a0346..b352ea82 100644 --- a/designs/leon3-xilinx-ml50x/README.txt +++ b/designs/leon3-xilinx-ml50x/README.txt @@ -37,7 +37,8 @@ Design specifics: make mig make install-unisim - It is essential to use ISE-13.4 or later. + It is essential to use ISE 13.4. MIG generation is not supported + for any other ISE version in this design. * The SSRAM can be interfaced with the LEON2 Memory controller. Start GRMON with -ramrws 1 when the LEON2 controller is used. diff --git a/designs/leon3-xilinx-ml50x/ahb2mig_ml50x.vhd b/designs/leon3-xilinx-ml50x/ahb2mig_ml50x.vhd index cef83932..fc328732 100644 --- a/designs/leon3-xilinx-ml50x/ahb2mig_ml50x.vhd +++ b/designs/leon3-xilinx-ml50x/ahb2mig_ml50x.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -428,7 +428,6 @@ begin ahbso.hready <= ra.hready; ahbso.hresp <= ra.hresp; ahbso.hrdata <= ahbdrivedata(ra.hrdata); - ahbso.hcache <= '1'; -- migi.app_addr <= '0' & ra.acc.haddr(28 downto 6) & "000"; migi.app_addr <= "00000" & ra.acc.haddr(28 downto 5) & "00"; diff --git a/designs/leon3-xilinx-ml50x/ahbrom.vhd b/designs/leon3-xilinx-ml50x/ahbrom.vhd index e5eb66ec..df5aba6a 100644 --- a/designs/leon3-xilinx-ml50x/ahbrom.vhd +++ b/designs/leon3-xilinx-ml50x/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-xilinx-ml50x/config.help b/designs/leon3-xilinx-ml50x/config.help index b61e6bca..5a9cd175 100644 --- a/designs/leon3-xilinx-ml50x/config.help +++ b/designs/leon3-xilinx-ml50x/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. diff --git a/designs/leon3-xilinx-ml50x/grlib_config.vhd b/designs/leon3-xilinx-ml50x/grlib_config.vhd index 931f70c1..0e5a2140 100644 --- a/designs/leon3-xilinx-ml50x/grlib_config.vhd +++ b/designs/leon3-xilinx-ml50x/grlib_config.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -26,6 +26,8 @@ library ieee; use ieee.std_logic_1164.all; +library grlib; +use grlib.config_types.all; package config is @@ -53,7 +55,14 @@ constant CFG_AHBDW : integer := 64; -- constant CFG_AHB_ACDM : integer := 0; -constant grlib_debug_level : integer := 0; -constant grlib_debug_mask : integer := 0; +-- GRLIB_CONFIG_ARRAY - Array of configuration values +-- +-- The length of this array and the meaning of different positions is defined +-- in the grlib.config_types package. +constant GRLIB_CONFIG_ARRAY : grlib_config_array_type := ( + grlib_debug_level => 0, + grlib_debug_mask => 0, + grlib_techmap_strict_ram => 0, + others => 0); end; diff --git a/designs/leon3-xilinx-ml50x/lconfig.tk b/designs/leon3-xilinx-ml50x/lconfig.tk index 65a92e24..5917f410 100755 --- a/designs/leon3-xilinx-ml50x/lconfig.tk +++ b/designs/leon3-xilinx-ml50x/lconfig.tk @@ -756,7 +756,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -766,7 +767,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -909,8 +912,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -929,6 +934,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1131,9 +1140,10 @@ proc menu3 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_3 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_3 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_3 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_3 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_3 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_3 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 3 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 3 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 3 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1187,10 +1197,11 @@ proc update_menu3 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x2.l configure -state normal; } else {.menu3.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu3.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x2.l configure -state normal; } else {.menu3.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x3.l configure -state normal; } else {.menu3.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1236,14 +1247,16 @@ proc update_define_menu3 {} { if {$tmpvar_3 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_3 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_3 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_3 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_3 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1316,13 +1329,21 @@ proc menu4 {w title} { bool $w.config.f 4 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 4 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 4 2 "Integer unit " 5 - submenu $w.config.f 4 3 "Floating-point unit" 6 - submenu $w.config.f 4 4 "Cache system" 7 - submenu $w.config.f 4 5 "MMU" 8 - submenu $w.config.f 4 6 "Debug Support Unit " 9 - submenu $w.config.f 4 7 "Fault-tolerance " 10 - submenu $w.config.f 4 8 "VHDL debug settings " 11 + global tmpvar_4 + minimenu $w.config.f 4 2 "Force values from example configuration (see help)" tmpvar_4 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_4 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_4 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_4 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_4 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 4 3 "Integer unit " 5 + submenu $w.config.f 4 4 "Floating-point unit" 6 + submenu $w.config.f 4 5 "Cache system" 7 + submenu $w.config.f 4 6 "MMU" 8 + submenu $w.config.f 4 7 "Debug Support Unit " 9 + submenu $w.config.f 4 8 "Fault-tolerance " 10 + submenu $w.config.f 4 9 "VHDL debug settings " 11 @@ -1362,22 +1383,290 @@ proc update_menu4 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x1.l configure -state normal; } else {.menu4.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x2 normal {m}} else {configure_entry .menu4.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x3 normal {m}} else {configure_entry .menu4.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x4 normal {m}} else {configure_entry .menu4.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x5 normal {m}} else {configure_entry .menu4.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x6 normal {m}} else {configure_entry .menu4.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x7 normal {m}} else {configure_entry .menu4.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x3 normal {m}} else {configure_entry .menu4.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x4 normal {m}} else {configure_entry .menu4.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x5 normal {m}} else {configure_entry .menu4.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x6 normal {m}} else {configure_entry .menu4.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x7 normal {m}} else {configure_entry .menu4.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x8 normal {m}} else {configure_entry .menu4.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x9 normal {m}} else {configure_entry .menu4.config.f.x9 disabled {m}} } proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_4 + global CONFIG_LEON3_MIN + if {$tmpvar_4 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_4 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_4 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_4 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1434,21 +1723,21 @@ proc menu5 {w title} { int $w.config.f 5 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 5 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_4 - minimenu $w.config.f 5 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_5 + minimenu $w.config.f 5 2 "Hardware multiplier latency" tmpvar_5 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_5 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_5 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_5 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 5 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_5 - minimenu $w.config.f 5 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED + global tmpvar_6 + minimenu $w.config.f 5 4 "Multipler structure " tmpvar_6 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_6 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_6 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 5 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 5 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1495,36 +1784,37 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x0.l configure -state normal; } else {.menu5.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x0.l configure -state normal; } else {.menu5.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x1 normal {n l y}} else {configure_entry .menu5.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x6 normal {n l y}} else {configure_entry .menu5.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x7 normal {n l y}} else {configure_entry .menu5.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x8.l configure -state normal; } else {.menu5.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x8.l configure -state normal; } else {.menu5.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x9.l configure -state normal; } else {.menu5.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x9.l configure -state normal; } else {.menu5.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x10 normal {n l y}} else {configure_entry .menu5.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x11.l configure -state normal; } else {.menu5.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x11.l configure -state normal; } else {.menu5.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x11.l configure -state disabled} } @@ -1532,48 +1822,49 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_5 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_5 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_5 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_6 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_6 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_6 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_6 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1629,27 +1920,27 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_6 - minimenu $w.config.f 6 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU + global tmpvar_7 + minimenu $w.config.f 6 1 "FPU core" tmpvar_7 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_7 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_7 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_7 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_7 - minimenu $w.config.f 6 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_8 + minimenu $w.config.f 6 2 "GRFPU multiplier" tmpvar_8 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_8 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_8 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_8 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_8 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_8 - minimenu $w.config.f 6 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 + global tmpvar_9 + minimenu $w.config.f 6 3 "GRFPU-LITE controller" tmpvar_9 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_9 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_9 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_9 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 6 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1690,16 +1981,17 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu6.config.f.x4 normal {n l y}} else {configure_entry .menu6.config.f.x4 disabled {y n l}} } @@ -1708,34 +2000,35 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_6 + global tmpvar_7 global CONFIG_FPU_GRFPU - if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_7 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_7 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_7 + if {$tmpvar_7 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_8 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_8 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_8 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_8 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_8 + if {$tmpvar_8 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_9 global CONFIG_FPU_GRFPC0 - if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_9 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_9 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_9 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1792,92 +2085,92 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_9 - minimenu $w.config.f 7 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 + global tmpvar_10 + minimenu $w.config.f 7 1 "Associativity (sets) " tmpvar_10 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_10 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_10 - minimenu $w.config.f 7 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 + global tmpvar_11 + minimenu $w.config.f 7 2 "Way size (kbytes/way)" tmpvar_11 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_11 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_11 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_11 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_11 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_11 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_11 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_11 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_11 - minimenu $w.config.f 7 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 + global tmpvar_12 + minimenu $w.config.f 7 3 "Line size (bytes/line)" tmpvar_12 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_12 - minimenu $w.config.f 7 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND + global tmpvar_13 + minimenu $w.config.f 7 4 "Replacement alorithm" tmpvar_13 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_13 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_13 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_13 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_13 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 7 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 7 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_13 - minimenu $w.config.f 7 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_14 + minimenu $w.config.f 7 7 "Local data RAM size (kbytes)" tmpvar_14 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 7 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 7 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_14 - minimenu $w.config.f 7 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 + global tmpvar_15 + minimenu $w.config.f 7 10 "Associativity (sets)" tmpvar_15 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_15 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_15 - minimenu $w.config.f 7 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 + global tmpvar_16 + minimenu $w.config.f 7 11 "Set size (kbytes/set)" tmpvar_16 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_16 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_16 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_16 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_16 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_16 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_16 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_16 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_16 - minimenu $w.config.f 7 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 + global tmpvar_17 + minimenu $w.config.f 7 12 "Line size (bytes/line)" tmpvar_17 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_17 - minimenu $w.config.f 7 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND + global tmpvar_18 + minimenu $w.config.f 7 13 "Replacement alorithm" tmpvar_18 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_18 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_18 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_18 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_18 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 7 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 7 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1885,18 +2178,18 @@ proc menu7 {w title} { bool $w.config.f 7 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 7 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 7 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_18 - minimenu $w.config.f 7 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_19 + minimenu $w.config.f 7 20 "Local data RAM size (kbytes)" tmpvar_19 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_19 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_19 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_19 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_19 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_19 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_19 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_19 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_19 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_19 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 7 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1937,52 +2230,53 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu7.config.f.x6 normal {n l y}} else {configure_entry .menu7.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x7 normal {x l}} else {configure_entry .menu7.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x7 normal {x l}} else {configure_entry .menu7.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu7.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x8.l configure -state normal; } else {.menu7.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu7.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x8.l configure -state normal; } else {.menu7.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x9 normal {n l y}} else {configure_entry .menu7.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x10 normal {x l}} else {configure_entry .menu7.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x11 normal {x l}} else {configure_entry .menu7.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x12 normal {x l}} else {configure_entry .menu7.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x10 normal {x l}} else {configure_entry .menu7.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x11 normal {x l}} else {configure_entry .menu7.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x12 normal {x l}} else {configure_entry .menu7.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x13 normal {x l}} else {configure_entry .menu7.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x13 normal {x l}} else {configure_entry .menu7.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu7.config.f.x14 normal {n l y}} else {configure_entry .menu7.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu7.config.f.x15 normal {n l y}} else {configure_entry .menu7.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu7.config.f.x16 normal {n l y}} else {configure_entry .menu7.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu7.config.f.x17 normal {n l y}} else {configure_entry .menu7.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu7.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x18.l configure -state normal; } else {.menu7.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu7.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x18.l configure -state normal; } else {.menu7.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu7.config.f.x19 normal {n l y}} else {configure_entry .menu7.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x20 normal {x l}} else {configure_entry .menu7.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x20 normal {x l}} else {configure_entry .menu7.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu7.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x21.l configure -state normal; } else {.menu7.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu7.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x21.l configure -state normal; } else {.menu7.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x21.l configure -state disabled} } @@ -1990,162 +2284,163 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_9 + global tmpvar_10 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_10 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_10 + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_11 global CONFIG_ICACHE_SZ1 - if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_11 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_11 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_11 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_11 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_11 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_11 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_11 + if {$tmpvar_11 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_12 global CONFIG_ICACHE_LZ16 - if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_12 + if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_13 global CONFIG_ICACHE_ALGORND - if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_13 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_13 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_13 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_13 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_14 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_14 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_14 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_14 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_14 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_14 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_14 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_14 + global tmpvar_15 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_15 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_15 + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_16 global CONFIG_DCACHE_SZ1 - if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_16 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_16 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_16 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_16 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_16 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_16 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_16 + if {$tmpvar_16 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_17 global CONFIG_DCACHE_LZ16 - if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_17 + if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_18 global CONFIG_DCACHE_ALGORND - if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_18 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_18 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_18 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_18 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_19 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_19 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_19 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_19 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_19 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_19 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_19 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_19 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_19 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2201,45 +2496,47 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_19 - minimenu $w.config.f 8 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED + global tmpvar_20 + minimenu $w.config.f 8 1 "MMU type " tmpvar_20 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_20 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_20 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 8 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY + global tmpvar_21 + minimenu $w.config.f 8 2 "TLB replacement sheme " tmpvar_21 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_21 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_21 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_21 - minimenu $w.config.f 8 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_22 - minimenu $w.config.f 8 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 + minimenu $w.config.f 8 3 "Instruction (or combined) TLB entries" tmpvar_22 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_23 + minimenu $w.config.f 8 4 "Data TLB entries" tmpvar_23 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_23 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_23 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 8 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_23 - minimenu $w.config.f 8 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K + global tmpvar_24 + minimenu $w.config.f 8 6 "MMU page size" tmpvar_24 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_24 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_24 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_24 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_24 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_24 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2279,18 +2576,19 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x1 normal {x l}} else {configure_entry .menu8.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x3 normal {x l}} else {configure_entry .menu8.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x1 normal {x l}} else {configure_entry .menu8.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x3 normal {x l}} else {configure_entry .menu8.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu8.config.f.x5 normal {n l y}} else {configure_entry .menu8.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x6 normal {x l}} else {configure_entry .menu8.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x6 normal {x l}} else {configure_entry .menu8.config.f.x6 disabled {x l}} } @@ -2298,55 +2596,60 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_19 + global tmpvar_20 global CONFIG_MMU_COMBINED - if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_20 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_20 + if {$tmpvar_20 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_21 global CONFIG_MMU_REPARRAY - if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_21 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_21 + if {$tmpvar_21 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_22 global CONFIG_MMU_I2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_22 + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_23 global CONFIG_MMU_D2 - if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_23 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_23 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_23 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_23 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_23 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_23 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_MMU_PAGE_4K - if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_24 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_24 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_24 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_24 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_24 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2403,24 +2706,24 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 9 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_24 - minimenu $w.config.f 9 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 + global tmpvar_25 + minimenu $w.config.f 9 2 "Instruction trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 9 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_25 - minimenu $w.config.f 9 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 + global tmpvar_26 + minimenu $w.config.f 9 4 "AHB trace buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2460,17 +2763,18 @@ proc menu9 {w title} { proc update_menu9 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu9.config.f.x1 normal {n l y}} else {configure_entry .menu9.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu9.config.f.x4 normal {x l}} else {configure_entry .menu9.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu9.config.f.x4 normal {x l}} else {configure_entry .menu9.config.f.x4 disabled {x l}} } @@ -2478,37 +2782,38 @@ proc update_define_menu9 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2564,22 +2869,22 @@ proc menu10 {w title} { bool $w.config.f 10 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_26 - minimenu $w.config.f 10 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE + global tmpvar_27 + minimenu $w.config.f 10 1 "IU Register file protection " tmpvar_27 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_27 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - global tmpvar_27 - minimenu $w.config.f 10 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + global tmpvar_28 + minimenu $w.config.f 10 2 "FPU Register file protection " tmpvar_28 CONFIG_FPUFT_NONE menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" - $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_28 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_28 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_28 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_28 -value "TMR" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 10 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 10 4 "Cache memory protection " CONFIG_CACHE_FT_EN @@ -2650,26 +2955,26 @@ proc update_define_menu10 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_26 + global tmpvar_27 global CONFIG_IUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_27 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global tmpvar_27 + if {$tmpvar_27 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_28 global CONFIG_FPUFT_NONE - if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + if {$tmpvar_28 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} global CONFIG_FPUFT_PAR - if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + if {$tmpvar_28 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} global CONFIG_FPUFT_DMR - if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + if {$tmpvar_28 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} global CONFIG_FPUFT_TMR - if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} + if {$tmpvar_28 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2978,14 +3283,14 @@ proc menu13 {w title} { bool $w.config.f 13 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 13 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 13 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_28 - minimenu $w.config.f 13 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 + global tmpvar_29 + minimenu $w.config.f 13 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_29 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 13 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 13 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -3059,17 +3364,17 @@ proc update_define_menu13 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_28 + global tmpvar_29 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3858,16 +4163,16 @@ proc menu19 {w title} { hex $w.config.f 19 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 19 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 19 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_29 - minimenu $w.config.f 19 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 + global tmpvar_30 + minimenu $w.config.f 19 4 "AHB RAM size (Kbyte)" tmpvar_30 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 19 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3929,21 +4234,21 @@ proc update_define_menu19 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_29 + global tmpvar_30 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_30 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_30 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -4003,14 +4308,14 @@ proc menu20 {w title} { bool $w.config.f 20 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 20 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_30 - minimenu $w.config.f 20 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 + global tmpvar_31 + minimenu $w.config.f 20 2 "AHB FIFO size (words) " tmpvar_31 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -4064,17 +4369,17 @@ proc update_define_menu20 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_30 + global tmpvar_31 global CONFIG_GRETH_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_31 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -4130,15 +4435,15 @@ proc menu21 {w title} { bool $w.config.f 21 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_31 - minimenu $w.config.f 21 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 + global tmpvar_32 + minimenu $w.config.f 21 1 "UART1 FIFO depth" tmpvar_32 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_32 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_32 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 21 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 21 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4229,19 +4534,19 @@ proc update_menu21 {} { proc update_define_menu21 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_31 + global tmpvar_32 global CONFIG_UA1_FIFO1 - if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_32 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_32 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_32 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_32 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_32 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_32 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4617,7 +4922,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4627,6 +4933,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4656,6 +4964,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4668,14 +4977,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_4 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4688,27 +5002,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4718,17 +5032,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4740,12 +5054,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4755,10 +5069,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4769,7 +5083,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4781,26 +5095,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_21 "(not set)" +set tmpvar_22 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_22 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_23 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4808,27 +5124,27 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set tmpvar_27 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_FPUFT_NONE 0 set CONFIG_FPUFT_PAR 0 set CONFIG_FPUFT_DMR 0 @@ -4853,7 +5169,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_28 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4909,7 +5225,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4920,14 +5236,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_30 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_31 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5010,7 +5326,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5020,6 +5337,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5065,6 +5384,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_3 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_3 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_3 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_3 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5077,9 +5397,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5093,243 +5414,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_4 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_4 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_4 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_4 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_4 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_5 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_5 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_6 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_6 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_6 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_7 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_7 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_7 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_7 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_8 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_8 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_9 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_9 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_9 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_9 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_10 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_11 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_11 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_11 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_11 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_11 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_11 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_11 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_12 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_13 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_13 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_15 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_16 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_16 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_16 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_16 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_16 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_16 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_16 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_17 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_18 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_18 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_19 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_19 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_19 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_19 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_19 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_19 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_19 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_19 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_19 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_20 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_21 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_21 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_22 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_23 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_23 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_24 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_24 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_24 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_24 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_24 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_26 - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_28 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} + if { $tmpvar_28 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_28 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_28 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_28 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5374,13 +5841,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_28 + global tmpvar_29 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5488,38 +5955,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_30 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_30 + global tmpvar_31 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UART, timer, I2C, SysMon, I/O port and interrupt controller" global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_31 + global tmpvar_32 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_32 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_32 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5606,7 +6073,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5616,6 +6084,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5638,8 +6108,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5722,11 +6197,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5850,8 +6327,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5870,6 +6349,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5920,334 +6403,350 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_3 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_3 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_3 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_3 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_3 "Xilinx-DCM" } global tmpvar_4 - set tmpvar_4 "5-cycles" + set tmpvar_4 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_4 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_4 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_4 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_4 "Custom-configuration" } + global tmpvar_5 + set tmpvar_5 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_5 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_5 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } - global tmpvar_5 - set tmpvar_5 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_5 "5-cycles" } + global tmpvar_6 + set tmpvar_6 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_6 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_6 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } - global tmpvar_6 - set tmpvar_6 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_6 "Designware" } + global tmpvar_7 + set tmpvar_7 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_7 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_7 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } - global tmpvar_7 - set tmpvar_7 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_7 "Meiko" } + global tmpvar_8 + set tmpvar_8 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_8 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_8 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_8 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } - global tmpvar_8 - set tmpvar_8 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_8 "TechSpec" } + global tmpvar_9 + set tmpvar_9 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_9 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_9 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } - global tmpvar_9 - set tmpvar_9 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_9 "Non-blocking" } + global tmpvar_10 + set tmpvar_10 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_10 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } - global tmpvar_10 - set tmpvar_10 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_10 "4" } + global tmpvar_11 + set tmpvar_11 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_11 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_11 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_11 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_11 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_11 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_11 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_11 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } - global tmpvar_11 - set tmpvar_11 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_11 "256" } + global tmpvar_12 + set tmpvar_12 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_12 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } - global tmpvar_12 - set tmpvar_12 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_12 "32" } + global tmpvar_13 + set tmpvar_13 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_13 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_13 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_13 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } - global tmpvar_13 - set tmpvar_13 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_13 "LRU" } + global tmpvar_14 + set tmpvar_14 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_14 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_14 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_14 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_14 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_14 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_14 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_14 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_14 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } - global tmpvar_14 - set tmpvar_14 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_14 "256" } + global tmpvar_15 + set tmpvar_15 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_15 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } - global tmpvar_15 - set tmpvar_15 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_15 "4" } + global tmpvar_16 + set tmpvar_16 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_16 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_16 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_16 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_16 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_16 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_16 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_16 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } - global tmpvar_16 - set tmpvar_16 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_16 "256" } + global tmpvar_17 + set tmpvar_17 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_17 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } - global tmpvar_17 - set tmpvar_17 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_17 "32" } + global tmpvar_18 + set tmpvar_18 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_18 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_18 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_18 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } - global tmpvar_18 - set tmpvar_18 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_18 "LRU" } + global tmpvar_19 + set tmpvar_19 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_19 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_19 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_19 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_19 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_19 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_19 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_19 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_19 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } - global tmpvar_19 - set tmpvar_19 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_19 "256" } + global tmpvar_20 + set tmpvar_20 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_20 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } - global tmpvar_20 - set tmpvar_20 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_20 "split" } + global tmpvar_21 + set tmpvar_21 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_21 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_21 "Increment" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_23 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_23 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_23 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_23 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } - global tmpvar_23 - set tmpvar_23 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_23 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_23 "64" } + global tmpvar_24 + set tmpvar_24 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_24 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_24 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_24 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_24 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_24 "Programmable" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_26 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_26 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_26 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_26 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_26 "16" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_27 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "None" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "None" global CONFIG_FPUFT_NONE - if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_28 "None" } global CONFIG_FPUFT_PAR - if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_28 "Parity" } global CONFIG_FPUFT_DMR - if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_28 "PDMR" } global CONFIG_FPUFT_TMR - if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } - global tmpvar_28 - set tmpvar_28 "2" + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_28 "TMR" } + global tmpvar_29 + set tmpvar_29 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } - global tmpvar_29 - set tmpvar_29 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_29 "16" } + global tmpvar_30 + set tmpvar_30 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_30 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_30 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_30 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_30 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_30 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_30 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } - global tmpvar_30 - set tmpvar_30 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_31 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } - global tmpvar_31 - set tmpvar_31 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_31 "64" } + global tmpvar_32 + set tmpvar_32 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_32 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_32 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_32 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_32 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_32 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_32 "32" } } diff --git a/designs/leon3-xilinx-ml50x/leon3mp.vhd b/designs/leon3-xilinx-ml50x/leon3mp.vhd index 5b62bb2c..38a2d9a2 100644 --- a/designs/leon3-xilinx-ml50x/leon3mp.vhd +++ b/designs/leon3-xilinx-ml50x/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-ml50x/svga2ch7301c.vhd b/designs/leon3-xilinx-ml50x/svga2ch7301c.vhd index 0c28c28c..e0fa9171 100644 --- a/designs/leon3-xilinx-ml50x/svga2ch7301c.vhd +++ b/designs/leon3-xilinx-ml50x/svga2ch7301c.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-ml50x/testbench.vhd b/designs/leon3-xilinx-ml50x/testbench.vhd index 570d5633..4bdb2cc6 100644 --- a/designs/leon3-xilinx-ml50x/testbench.vhd +++ b/designs/leon3-xilinx-ml50x/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-ml50x/tkconfig.h b/designs/leon3-xilinx-ml50x/tkconfig.h index 77acfd71..33dd02bc 100644 --- a/designs/leon3-xilinx-ml50x/tkconfig.h +++ b/designs/leon3-xilinx-ml50x/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -783,6 +805,10 @@ #endif +#ifndef CONFIG_MIG_DDR3 +#define CONFIG_MIG_DDR3 0 +#endif + #ifndef CONFIG_MIG_DDR2 #define CONFIG_MIG_DDR2 0 #endif diff --git a/designs/leon3-xilinx-ml510/.config b/designs/leon3-xilinx-ml510/.config index d7679438..9a24f4a2 100644 --- a/designs/leon3-xilinx-ml510/.config +++ b/designs/leon3-xilinx-ml510/.config @@ -41,7 +41,8 @@ CONFIG_HAS_SHARED_GRFPU=y # CONFIG_SYN_TM65GPLUS is not set # CONFIG_SYN_TSMC90 is not set # CONFIG_SYN_UMC is not set -# CONFIG_SYN_SPARTAN2 is not set +# CONFIG_SYN_ARTIX7 is not set +# CONFIG_SYN_KINTEX7 is not set # CONFIG_SYN_SPARTAN3 is not set # CONFIG_SYN_SPARTAN3E is not set # CONFIG_SYN_SPARTAN6 is not set @@ -51,6 +52,8 @@ CONFIG_HAS_SHARED_GRFPU=y # CONFIG_SYN_VIRTEX4 is not set CONFIG_SYN_VIRTEX5=y # CONFIG_SYN_VIRTEX6 is not set +# CONFIG_SYN_VIRTEX7 is not set +# CONFIG_SYN_ZYNQ7000 is not set # CONFIG_SYN_INFER_RAM is not set # CONFIG_SYN_INFER_PADS is not set # CONFIG_SYN_NO_ASYNC is not set @@ -70,6 +73,7 @@ CONFIG_SYN_VIRTEX5=y # CONFIG_CLK_FUSPLL is not set # CONFIG_CLK_LIB18T is not set # CONFIG_CLK_RHUMC is not set +# CONFIG_CLK_CLKPLLE2 is not set # CONFIG_CLK_CLKDLL is not set CONFIG_CLK_DCM=y CONFIG_CLK_MUL=8 @@ -77,12 +81,16 @@ CONFIG_CLK_DIV=10 # CONFIG_PCI_CLKDLL is not set CONFIG_CLK_NOFB=y # CONFIG_PCI_SYSCLK is not set -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 # # Processor # +CONFIG_LEON3=y +CONFIG_PROC_NUM=2 +# CONFIG_LEON3_MIN is not set +# CONFIG_LEON3_GP is not set +# CONFIG_LEON3_HP is not set +CONFIG_LEON3_CUSTOM=y # # Integer unit @@ -156,7 +164,7 @@ CONFIG_DCACHE_ALGOLRU=y # CONFIG_DCACHE_LOCK is not set CONFIG_DCACHE_SNOOP=y CONFIG_DCACHE_SNOOP_FAST=y -# CONFIG_DCACHE_SNOOP_SEPTAG is not set +CONFIG_DCACHE_SNOOP_SEPTAG=y CONFIG_CACHE_FIXED=0 # @@ -172,11 +180,13 @@ CONFIG_MMU_REPARRAY=y CONFIG_MMU_I8=y # CONFIG_MMU_I16 is not set # CONFIG_MMU_I32 is not set +# CONFIG_MMU_I64 is not set # CONFIG_MMU_D2 is not set # CONFIG_MMU_D4 is not set CONFIG_MMU_D8=y # CONFIG_MMU_D16 is not set # CONFIG_MMU_D32 is not set +# CONFIG_MMU_D64 is not set CONFIG_MMU_FASTWB=y CONFIG_MMU_PAGE_4K=y # CONFIG_MMU_PAGE_8K is not set @@ -204,6 +214,7 @@ CONFIG_DSU_ATRACESZ2=y # # Fault-tolerance # +# CONFIG_LEON3FT_EN is not set # # VHDL debug settings @@ -217,6 +228,7 @@ CONFIG_DSU_ATRACESZ2=y CONFIG_AHB_DEFMST=0 CONFIG_AHB_RROBIN=y CONFIG_AHB_SPLIT=y +# CONFIG_AHB_FPNPEN is not set CONFIG_AHB_IOADDR=FFF CONFIG_APB_HADDR=C00 CONFIG_AHB_MON=y @@ -259,11 +271,6 @@ CONFIG_MCTRL_16BIT=y # CONFIG_MCTRL_5CS is not set # CONFIG_MCTRL_SDRAM is not set -# -# Xilinx MIG DDR2 controller -# -# CONFIG_MIG_DDR2 is not set - # # DDR2 SDRAM controller # @@ -273,7 +280,7 @@ CONFIG_DDR2SP_NOSYNC=y CONFIG_DDR2SP_TRFC=130 CONFIG_DDR2SP_COL=10 CONFIG_DDR2SP_MBYTE=512 -CONFIG_DDR2SP_DATAWIDTH=32 +CONFIG_DDR2SP_DATAWIDTH=64 # CONFIG_DDR2SP_FTEN is not set CONFIG_DDR2SP_DELAY0=8 CONFIG_DDR2SP_DELAY1=8 diff --git a/designs/leon3-xilinx-ml510/Makefile b/designs/leon3-xilinx-ml510/Makefile index f563ec06..5153f3ac 100644 --- a/designs/leon3-xilinx-ml510/Makefile +++ b/designs/leon3-xilinx-ml510/Makefile @@ -4,39 +4,13 @@ TOP=leon3mp BOARD=xilinx-ml510-xc5vfx130t include $(GRLIB)/boards/$(BOARD)/Makefile.inc DEVICE=$(PART)-$(PACKAGE)$(SPEED) -ifeq ("$(CONFIG_MIG_DDR2)","y") -UCF=leon3mp_mig.ucf -else UCF=leon3mp.ucf -endif XSTOPT=-uc leon3mp.xcf QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf EFFORT=high ISEMAPOPT=-m -timing SYNPOPT="set_option -pipe 1; set_option -retiming 1; set_option -write_apr_constraint 0" -VHDLOPTSYNFILES= \ - mig_36_1/user_design/rtl/ddr2_chipscope.vhd \ - mig_36_1/user_design/rtl/ddr2_ctrl.vhd \ - mig_36_1/user_design/rtl/ddr2_idelay_ctrl.vhd \ - mig_36_1/user_design/rtl/ddr2_infrastructure.vhd \ - mig_36_1/user_design/rtl/ddr2_mem_if_top.vhd \ - mig_36_1/user_design/rtl/ddr2_phy_calib.vhd \ - mig_36_1/user_design/rtl/ddr2_phy_ctl_io.vhd \ - mig_36_1/user_design/rtl/ddr2_phy_dm_iob.vhd \ - mig_36_1/user_design/rtl/ddr2_phy_dq_iob.vhd \ - mig_36_1/user_design/rtl/ddr2_phy_dqs_iob.vhd \ - mig_36_1/user_design/rtl/ddr2_phy_init.vhd \ - mig_36_1/user_design/rtl/ddr2_phy_io.vhd \ - mig_36_1/user_design/rtl/ddr2_phy_top.vhd \ - mig_36_1/user_design/rtl/ddr2_phy_write.vhd \ - mig_36_1/user_design/rtl/ddr2_top.vhd \ - mig_36_1/user_design/rtl/ddr2_usr_addr_fifo.vhd \ - mig_36_1/user_design/rtl/ddr2_usr_rd.vhd \ - mig_36_1/user_design/rtl/ddr2_usr_top.vhd \ - mig_36_1/user_design/rtl/ddr2_usr_wr.vhd \ - mig_36_1/user_design/rtl/mig_36_1.vhd -VHDLSYNFILES= config.vhd \ - ahb2mig_ml510.vhd ahbrom.vhd \ +VHDLSYNFILES= config.vhd ahbrom.vhd \ svga2ch7301c.vhd leon3mp.vhd VHDLSIMFILES=testbench.vhd SIMTOP=testbench @@ -49,23 +23,14 @@ XLDFLAGS=-L./ lib3tests.a -Ttext=0x40000000 TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann usbhc spw micron -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan can ata leon3ft \ - grusbhc usb spacewire hcan leon4 leon4b64 l2cache \ - slink ascs pwm haps coremp7 gr1553b iommu ac97 ambatest atf + tmtc openchip ihp usbhc spw micron +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan can leon3ft \ + grusbhc usb spacewire hcan leon4 leon4v0 l2cache \ + slink ascs pwm gr1553b iommu ambatest atf -FILESKIP = grcan.vhd simple_spi_top.v +FILESKIP = grcan.vhd include $(GRLIB)/bin/Makefile ################## project specific targets ########################## - -mig_36_1 mig: - cp mig_rdimm.prj mig.prj - coregen -b mig.xco -p . - patch -p0 < mig.diff - -migclean: - -rm -rf mig_36* tmp coregen.log - diff --git a/designs/leon3-xilinx-ml510/README.txt b/designs/leon3-xilinx-ml510/README.txt index 2f816df0..f95d7305 100644 --- a/designs/leon3-xilinx-ml510/README.txt +++ b/designs/leon3-xilinx-ml510/README.txt @@ -10,6 +10,9 @@ NOTE1: With revision 1 of the DDR2SPA controller, the controller can NOTE2: The ML510 has a bug that prevents the use of 64 bit unbuffered DDR2. See description of the DDR2 interface below. +NOTE3: To intialize the correct DDR2 delay values, issue the GRMON command: + ddr2delay scan (see GRMON example below) + Design specifics: * System reset is mapped to the CPU RESET button @@ -112,250 +115,281 @@ Design specifics: * Sample output from GRMON is: -grmon -eth -ip 192.168.0.52 - - GRMON LEON debug monitor v1.1.32 - - Copyright (C) 2004-2008 Gaisler Research - all rights reserved. - For latest updates, go to http://www.gaisler.com/ - Comments or bug-reports to support@gaisler.com - - - ethernet startup. - Device ID: : 0x510 - GRLIB build version: 3293 - - initialising ........................ - detected frequency: 80 MHz - - Component Vendor - LEON3 SPARC V8 Processor Gaisler Research - AHB Debug UART Gaisler Research - AHB Debug JTAG TAP Gaisler Research - SVGA frame buffer Gaisler Research - GR Ethernet MAC Gaisler Research - Fast 32-bit PCI Bridge Gaisler Research - PCI/AHB DMA controller Gaisler Research - DDR2 Controller Gaisler Research - DDR2 Controller Gaisler Research - LEON3 Debug Support Unit Gaisler Research - LEON2 Memory Controller European Space Agency - AHB/APB Bridge Gaisler Research - System ACE I/F Controller Gaisler Research - AMBA Wrapper for System Monitor Gaisler Research - Generic APB UART Gaisler Research - Multi-processor Interrupt Ctrl Gaisler Research - Modular Timer Unit Gaisler Research - AMBA Wrapper for OC I2C-master Gaisler Research - General purpose I/O port Gaisler Research - AMBA Wrapper for OC I2C-master Gaisler Research - SPI Controller Gaisler Research - PCI trace buffer Gaisler Research - PCI Arbiter European Space Agency - AHB status register Gaisler Research - - Use command 'info sys' to print a detailed report of attached cores - -grlib> inf sys -00.01:003 Gaisler Research LEON3 SPARC V8 Processor (ver 0x0) - ahb master 0 -01.01:007 Gaisler Research AHB Debug UART (ver 0x0) - ahb master 1 - apb: c0000700 - c0000800 - baud rate 115200, ahb frequency 80.00 -02.01:01c Gaisler Research AHB Debug JTAG TAP (ver 0x0) - ahb master 2 -03.01:063 Gaisler Research SVGA frame buffer (ver 0x0) - ahb master 3 - apb: c0000e00 - c0000f00 - clk0: 25.00 MHz clk1: 25.00 MHz clk2: 40.00 MHz clk3: 65.00 MHz -04.01:01d Gaisler Research GR Ethernet MAC (ver 0x0) - ahb master 4, irq 4 - apb: c0000b00 - c0000c00 - edcl ip 192.168.0.52, buffer 2 kbyte -05.01:014 Gaisler Research Fast 32-bit PCI Bridge (ver 0x0) - ahb master 5, irq 5 - ahb: 80000000 - c0000000 - ahb: fff40000 - fff60000 - apb: c0000400 - c0000500 -06.01:016 Gaisler Research PCI/AHB DMA controller (ver 0x0) - ahb master 6 - apb: c0000500 - c0000600 -00.01:02e Gaisler Research DDR2 Controller (ver 0x0) - ahb: 40000000 - 60000000 - ahb: fff00100 - fff00200 - 32-bit DDR2 : 2 * 256 Mbyte @ 0x40000000 - 160 MHz, col 10, ref 7.8 us, trfc 131 ns -01.01:02e Gaisler Research DDR2 Controller (ver 0x0) - ahb: 60000000 - 80000000 - ahb: fff00200 - fff00300 - 32-bit DDR2 : 2 * 256 Mbyte @ 0x60000000 - 160 MHz, col 10, ref 7.8 us, trfc 131 ns -02.01:004 Gaisler Research LEON3 Debug Support Unit (ver 0x1) - ahb: d0000000 - e0000000 - AHB trace 128 lines, stack pointer 0x5ffffff0 - CPU#0 win 8, hwbp 2, itrace 128, V8 mul/div, srmmu, lddel 1, GRFPU - icache 4 * 8 kbyte, 32 byte/line lru - dcache 4 * 4 kbyte, 16 byte/line lru -03.04:00f European Space Agency LEON2 Memory Controller (ver 0x1) - ahb: 00000000 - 20000000 - ahb: 20000000 - 40000000 - apb: c0000000 - c0000100 - 16-bit prom @ 0x00000000 -04.01:006 Gaisler Research AHB/APB Bridge (ver 0x0) - ahb: c0000000 - c0100000 -05.01:067 Gaisler Research System ACE I/F Controller (ver 0x0) - irq 13 - ahb: fff00000 - fff00100 -08.01:066 Gaisler Research AMBA Wrapper for System Monitor (ver 0x0) - irq 1 - ahb: fff00300 - fff00400 - ahb: fff00400 - fff00600 - SYSMON registers are on word boundaries -01.01:00c Gaisler Research Generic APB UART (ver 0x1) - irq 2 - apb: c0000100 - c0000200 - baud rate 38461 -02.01:00d Gaisler Research Multi-processor Interrupt Ctrl (ver 0x3) - apb: c0000200 - c0000300 -03.01:011 Gaisler Research Modular Timer Unit (ver 0x0) - irq 8 - apb: c0000300 - c0000400 - 8-bit scaler, 2 * 32-bit timers, divisor 80 -06.01:028 Gaisler Research AMBA Wrapper for OC I2C-master (ver 0x0) - irq 14 - apb: c0000600 - c0000700 - Controller index for use in GRMON: 1 -08.01:01a Gaisler Research General purpose I/O port (ver 0x0) - apb: c0000800 - c0000900 -09.01:028 Gaisler Research AMBA Wrapper for OC I2C-master (ver 0x0) - irq 3 - apb: c0000900 - c0000a00 - Controller index for use in GRMON: 2 -0a.01:02d Gaisler Research SPI Controller (ver 0x1) - irq 12 - apb: c0000a00 - c0000b00 - FIFO depth: 4, 1 slave select signals -0c.01:015 Gaisler Research PCI trace buffer (ver 0x0) - apb: c0010000 - c0020000 - 1024 line trace buffer -0d.04:010 European Space Agency PCI Arbiter (ver 0x0) - apb: c0000d00 - c0000e00 -0f.01:052 Gaisler Research AHB status register (ver 0x0) - irq 15 - apb: c0000f00 - c0001000 -grlib> fla - - Intel-style 16-bit flash on D[31:16] - - Manuf. Intel - Device Strataflash P30 - - Device ID c26cffff01c94716 - User ID ffffffffffffffff - - - 1 x 32 Mbyte = 32 Mbyte total @ 0x00000000 - - - CFI info - flash family : 1 - flash size : 256 Mbit - erase regions : 2 - erase blocks : 259 - write buffer : 64 bytes - lock-down : yes - region 0 : 255 blocks of 128 Kbytes - region 1 : 4 blocks of 32 Kbytes - -grlib> i2c 1 scan - -Scanning 7-bit address space on I2C bus: - Detected I2C device at address 0x50 - Detected I2C device at address 0x76 -Scan of I2C bus completed. 2 devices found - -grlib> i2c 2 scan - -Scanning 7-bit address space on I2C bus: - Detected I2C device at address 0x2e - Detected I2C device at address 0x33 - Detected I2C device at address 0x34 - Detected I2C device at address 0x47 - Detected I2C device at address 0x50 - Detected I2C device at address 0x51 - Detected I2C device at address 0x53 - Detected I2C device at address 0x54 -Scan of I2C bus completed. 8 devices found - -grlib> i2c 1 dvi init_ml50x_dvi - - Transmitter was not set to Chrontel CH7301C (AS=0), changing.. - - DVI transmitter set to Chrontel CH7301C (AS=0) - - Initializing CH7301 for ML50x Leon3/GRLIB template design.. - Initialization done.. - -grlib> i2c 1 dvi showreg - - Registers for Chrontel CH7301C (AS=0) DVI transmitter: - - 0x1c: 04 - 0x1d: 45 - 0x1e: f0 - 0x1f: 9a - 0x20: 2e - 0x21: 00 - 0x23: 00 - 0x31: 80 - 0x33: 08 - 0x34: 16 - 0x35: 30 - 0x36: 60 - 0x37: 00 - 0x48: 18 - 0x49: c0 - 0x4a: 95 - 0x4b: 17 - 0x56: 00 - -grlib> spi selftest - - Starting SPI controller self test.............................. - Self test PASSED - -grlib> grpci info - -GRPCI initiator/target (in system slot): - - BAR0: 0x00000000 - PAGE0: 0x40000001 - BAR1: 0x00000000 - PAGE1: 0x00000000 - Bus master: yes - Mem. space en: no - Latency timer: 0x0 - MMAP: 0x0 - IOMAP: 0x0000 - -grlib> grpci init -grlib> grpci scan - -Found PCI device in slot 7, function 0, (0xfff53800) - vendor: 0x10b9, device: 0x5451 - BAR1 size: 4 kbyte (Memory space) - -Found PCI device in slot 8, function 0, (0xfff54000) - vendor: 0x10b9, device: 0x1533 - -Found PCI device in slot 9, function 0, (0xfff54800) - vendor: 0x10b9, device: 0x5457 - BAR0 size: 4 kbyte (Memory space) +bash-3.2$ grmon2cli -xilusb -regmem -u + + GRMON2 LEON debug monitor v2.0.30-194-g937ff0a internal version + + Copyright (C) 2012 Aeroflex Gaisler - All rights reserved. + For latest updates, go to http://www.gaisler.com/ + Comments or bug-reports to support@gaisler.com + +Xilusb: Cable type/rev : 0x3 + JTAG chain (2): xc5vfx130t xccace + + Device ID: 0x510 + GRLIB build version: 4120 + Detected frequency: 80 MHz + + Component Vendor + LEON3 SPARC V8 Processor Aeroflex Gaisler + LEON3 SPARC V8 Processor Aeroflex Gaisler + AHB Debug UART Aeroflex Gaisler + JTAG Debug Link Aeroflex Gaisler + SVGA frame buffer Aeroflex Gaisler + GR Ethernet MAC Aeroflex Gaisler + Fast 32-bit PCI Bridge Aeroflex Gaisler + PCI/AHB DMA controller Aeroflex Gaisler + Single-port DDR2 controller Aeroflex Gaisler + Single-port DDR2 controller Aeroflex Gaisler + LEON3 Debug Support Unit Aeroflex Gaisler + LEON2 Memory Controller European Space Agency + AHB/APB Bridge Aeroflex Gaisler + System ACE I/F Controller Aeroflex Gaisler + Generic UART Aeroflex Gaisler + Multi-processor Interrupt Ctrl. Aeroflex Gaisler + Modular Timer Unit Aeroflex Gaisler + AMBA Wrapper for OC I2C-master Aeroflex Gaisler + General Purpose I/O port Aeroflex Gaisler + AMBA Wrapper for OC I2C-master Aeroflex Gaisler + SPI Controller Aeroflex Gaisler + 32-bit PCI Trace Buffer Aeroflex Gaisler + PCI Arbiter European Space Agency + AHB Status Register Aeroflex Gaisler + + Use command 'info sys' to print a detailed report of attached cores + +grmon2> ddr2delay scan + DDR2 Delay calibration routine + - Resetting delays + - Trying read-delay 0 cycles + Bits 63-56: ---------------------------------------------------------------- -1 + Bits 55-48: ---------------------------------------------------------------- -1 + Bits 47-40: ---------------------------------------------------------------- -1 + Bits 39-32: ---------------------------------------------------------------- -1 + Bits 31-24: ---------------------------------------------------------------- -1 + Bits 23-16: ---------------------------------------------------------------- -1 + Bits 15- 8: ---------------------------------------------------------------- -1 + Bits 7- 0: ---------------------------------------------------------------- -1 + - Trying read-delay 1 cycles + Bits 63-56: OOOOOOOOOOOOOOOO-O-O------------------------------------OOOOOOOO 4 + Bits 55-48: OOOOOOOOOOOOOOOOOOOO-O----------------------------------OOOOOOOO 6 + Bits 47-40: OOOOOOOOOOOOOOOOOOOOOO----------------------------------OOOOOOOO 7 + Bits 39-32: OOOOOOOOOOOOOOOOOOO-------------------------------------OOOOOOOO 5 + Bits 31-24: OOOOOOOOOOOOOOOOOOOO------------------------------------OOOOOOOO 6 + Bits 23-16: OOOOOOOOOOOOOOOOOOOOOO----------------------------------OOOOOOOO 7 + Bits 15- 8: OOOOOOOOOOOOOOOOOOOOOOO---------------------------------OOOOOOOO 7 + Bits 7- 0: OOOOOOOOOOOOOOOOOOOOO-O---------------------------------OOOOOOOO 6 + - Verifying + - Calibration done + +grmon2> info sys + cpu0 Aeroflex Gaisler LEON3 SPARC V8 Processor + AHB Master 0 + cpu1 Aeroflex Gaisler LEON3 SPARC V8 Processor + AHB Master 1 + ahbuart0 Aeroflex Gaisler AHB Debug UART + AHB Master 2 + APB: C0000700 - C0000800 + Baudrate 115200, AHB frequency 80.00 MHz + ahbjtag0 Aeroflex Gaisler JTAG Debug Link + AHB Master 3 + svga0 Aeroflex Gaisler SVGA frame buffer + AHB Master 4 + APB: C0000E00 - C0000F00 + clk0: 25.00 MHz clk1: 25.00 MHz clk2: 40.00 MHz clk3: 65.00 MHz + greth0 Aeroflex Gaisler GR Ethernet MAC + AHB Master 5 + APB: C0000B00 - C0000C00 + IRQ: 4 + edcl ip 192.168.0.52, buffer 2 kbyte + pci0 Aeroflex Gaisler Fast 32-bit PCI Bridge + AHB Master 6 + AHB: 80000000 - C0000000 + AHB: FFF40000 - FFF60000 + APB: C0000400 - C0000500 + IRQ: 5 + adev7 Aeroflex Gaisler PCI/AHB DMA controller + AHB Master 7 + APB: C0000500 - C0000600 + ddr2spa0 Aeroflex Gaisler Single-port DDR2 controller + AHB: 40000000 - 60000000 + AHB: FFF00100 - FFF00200 + 64-bit DDR2 : 1 * 256 MB @ 0x40000000, 4 internal banks + 160 MHz, col 10, ref 7.8 us, trfc 131 ns + ddr2spa1 Aeroflex Gaisler Single-port DDR2 controller + AHB: 60000000 - 80000000 + AHB: FFF00200 - FFF00300 + No SDRAM found + dsu0 Aeroflex Gaisler LEON3 Debug Support Unit + AHB: D0000000 - E0000000 + AHB trace: 128 lines, 32-bit bus + CPU0: win 8, hwbp 2, V8 mul/div, srmmu, lddel 1 + stack pointer 0x4ffffff0 + icache 4 * 8 kB, 32 B/line lru + dcache 4 * 4 kB, 16 B/line lru + CPU1: win 8, hwbp 2, V8 mul/div, srmmu, lddel 1 + stack pointer 0x4ffffff0 + icache 4 * 8 kB, 32 B/line lru + dcache 4 * 4 kB, 16 B/line lru + mctrl0 European Space Agency LEON2 Memory Controller + AHB: 00000000 - 20000000 + AHB: 20000000 - 40000000 + APB: C0000000 - C0000100 + 16-bit prom @ 0x00000000 + apbmst0 Aeroflex Gaisler AHB/APB Bridge + AHB: C0000000 - C0100000 + adev13 Aeroflex Gaisler System ACE I/F Controller + AHB: FFF00000 - FFF00100 + IRQ: 13 + uart0 Aeroflex Gaisler Generic UART + APB: C0000100 - C0000200 + IRQ: 2 + Baudrate 38461 + irqmp0 Aeroflex Gaisler Multi-processor Interrupt Ctrl. + APB: C0000200 - C0000300 + gptimer0 Aeroflex Gaisler Modular Timer Unit + APB: C0000300 - C0000400 + IRQ: 8 + 8-bit scalar, 2 * 32-bit timers, divisor 80 + i2cmst0 Aeroflex Gaisler AMBA Wrapper for OC I2C-master + APB: C0000600 - C0000700 + IRQ: 14 + Index for use in GRMON: 0 + gpio0 Aeroflex Gaisler General Purpose I/O port + APB: C0000800 - C0000900 + i2cmst1 Aeroflex Gaisler AMBA Wrapper for OC I2C-master + APB: C0000900 - C0000A00 + IRQ: 3 + Index for use in GRMON: 1 + spi0 Aeroflex Gaisler SPI Controller + APB: C0000A00 - C0000B00 + IRQ: 12 + FIFO depth: 4, 1 slave select signals + Maximum word length: 32 bits + Supports 3-wire mode + Controller index for use in GRMON: 0 + pcitrace0 Aeroflex Gaisler 32-bit PCI Trace Buffer + APB: C0010000 - C0020000 + Trace buffer size: 1024 lines + adev22 European Space Agency PCI Arbiter + APB: C0000D00 - C0000E00 + ahbstat0 Aeroflex Gaisler AHB Status Register + APB: C0000F00 - C0001000 + IRQ: 15 + +grmon2> fla + + Intel-style 16-bit flash on D[31:16] + + Manuf. : Intel + Device : Strataflash P30 + Device ID : 01c94716c26cffff + User ID : ffffffffffffffff + + 1 x 32 Mbytes = 32 Mbytes total @ 0x00000000 + + CFI information + Flash family : 1 + Flash size : 256 Mbit + Erase regions : 2 + Erase blocks : 259 + Write buffer : 64 bytes + Lock-down : Not supported + Region 0 : 255 blocks of 128 kbytes + Region 1 : 4 blocks of 32 kbytes + +grmon2> load /usr/local32/apps/bench/leon3/dhry.leon3 + 40000000 .text 54.7kB / 54.7kB [===============>] 100% + 4000DAF0 .data 2.7kB / 2.7kB [===============>] 100% + Total size: 57.44kB (1.15Mbit/s) + Entry point 0x40000000 + Image /usr/local32/apps/bench/leon3/dhry.leon3 loaded + +grmon2> verify /usr/local32/apps/bench/leon3/dhry.leon3 + 40000000 .text 54.7kB / 54.7kB [===============>] 100% + 4000DAF0 .data 2.7kB / 2.7kB [===============>] 100% + Total size: 57.44kB (85.12kbit/s) + Entry point 0x40000000 + Image of /usr/local32/apps/bench/leon3/dhry.leon3 verified without errors + +grmon2> run +Execution starts, 1000000 runs through Dhrystone +Total execution time: 5.2 s +Microseconds for one run through Dhrystone: 5.2 +Dhrystones per Second: 191785.4 + +Dhrystones MIPS : 109.2 + + + CPU 0: Program exited normally. + CPU 1: Power down mode + +grmon2> i2c 0 scan + Scanning 7-bit address space on I2C bus: + Detected I2C device at address 0x76 + + Scan of I2C bus completed. 1 device found + +grmon2> i2c 1 scan + Scanning 7-bit address space on I2C bus: + Detected I2C device at address 0x2e + Detected I2C device at address 0x47 + Detected I2C device at address 0x50 + Detected I2C device at address 0x51 + Detected I2C device at address 0x54 + + Scan of I2C bus completed. 5 devices found + +grmon2> i2c 0 dvi init_ml50x_dvi +Transmitter was not set to Chrontel CH7301C (AS=0), changing... + Initialized CH7301 DVI output for LEON/GRLIB design. + +grmon2> i2c 0 dvi showreg + Registers for Chrontel CH7301C (AS=0) DVI transmitter: + + 0x1c: 04 + 0x1d: 45 + 0x1e: f0 + 0x1f: 8a + 0x20: 0e + 0x21: 00 + 0x23: 00 + 0x31: 80 + 0x33: 08 + 0x34: 16 + 0x35: 30 + 0x36: 60 + 0x37: 00 + 0x48: 18 + 0x49: c0 + 0x4a: 95 + 0x4b: 17 + 0x56: 00 + +grmon2> spi selftest + Self test PASSED + +grmon2> pci info + + GRPCI initiator/target (in system slot): + + Bus master: yes + Mem. space en: no + Latency timer: 0x0 + Byte twisting: disabled + + MMAP: 0x0 + IOMAP: 0x0000 + + BAR0: 0x00000000 + PAGE0: 0x40000001 + BAR1: 0x00000000 + PAGE1: 0x00000000 + + +grmon2> -Found PCI device in slot 18, function 0, (0xfff59000) - vendor: 0x10b9, device: 0x7101 -Found PCI device in slot 21, function 0, (0xfff5a800) - vendor: 0x10b9, device: 0x5237 - BAR0 size: 4 kbyte (Memory space) -grlib> -grlib> * Example MKPROM2 command line, creating bootable image from the application "hello": diff --git a/designs/leon3-xilinx-ml510/ahb2mig_ml510.vhd b/designs/leon3-xilinx-ml510/ahb2mig_ml510.vhd deleted file mode 100644 index 24dfd786..00000000 --- a/designs/leon3-xilinx-ml510/ahb2mig_ml510.vhd +++ /dev/null @@ -1,435 +0,0 @@ ------------------------------------------------------------------------------- --- This file is a part of the GRLIB VHDL IP LIBRARY --- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler --- --- 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. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------ --- Entity: ahb2mig --- File: ahb2mig.vhd --- Author: Jiri Gaisler, Gaisler Research --- Description: AHB wrapper for Xilinx Virtex5 DDR2/3 MIG ------------------------------------------------------------------------------- - -library ieee; -use ieee.std_logic_1164.all; -library grlib; -use grlib.amba.all; - -package ml510 is - - constant nCS_PER_RANK : integer := 1; - constant BANK_WIDTH : integer := 2; - constant CK_WIDTH : integer := 1; - constant CKE_WIDTH : integer := 1; - constant COL_WIDTH : integer := 10; - constant CS_WIDTH : integer := 1; - constant DM_WIDTH : integer := 9; --8; - constant DQ_WIDTH : integer := 72; --64; - constant DQS_WIDTH : integer := DM_WIDTH; - constant ROW_WIDTH : integer := 14; --13; - constant PAYLOAD_WIDTH : integer := 36; --32; - constant ADDR_WIDTH : integer := 31; - - type mig_app_in_type is record - app_wdf_wren : std_logic; - app_wdf_data : std_logic_vector((4*PAYLOAD_WIDTH)-1 downto 0); - app_wdf_mask : std_logic_vector((4*PAYLOAD_WIDTH)/8-1 downto 0); - app_addr : std_logic_vector(ADDR_WIDTH-1 downto 0); - app_cmd : std_logic_vector(2 downto 0); - app_en : std_logic; - end record; - - type mig_app_out_type is record - app_af_afull : std_logic; - app_wdf_afull : std_logic; - app_rd_data : std_logic_vector((4*PAYLOAD_WIDTH)-1 downto 0); - app_rd_data_valid : std_logic; - end record; - -end package; - -library ieee; -use ieee.std_logic_1164.all; -library grlib; -use grlib.amba.all; -use grlib.stdlib.all; -library gaisler; -use grlib.devices.all; -use gaisler.memctrl.all; -library techmap; -use techmap.gencomp.all; -use work.ml510.all; - -entity ahb2mig_ml510 is - generic ( - memtech : integer := 0; - hindex : integer := 0; - haddr : integer := 0; - hmask : integer := 16#e00#; - MHz : integer := 100; - Mbyte : integer := 512; - nosync : integer := 0 - ); - port ( - rst_ddr : in std_ulogic; - rst_ahb : in std_ulogic; - clk_ddr : in std_ulogic; - clk_ahb : in std_ulogic; - ahbsi : in ahb_slv_in_type; - ahbso : out ahb_slv_out_type; - migi : out mig_app_in_type; - migo : in mig_app_out_type - ); -end; - -architecture rtl of ahb2mig_ml510 is - -constant REVISION : integer := 0; - -constant hconfig : ahb_config_type := ( - 0 => ahb_device_reg ( VENDOR_GAISLER, GAISLER_MIGDDR2, 0, REVISION, 0), - 4 => ahb_membar(haddr, '1', '1', hmask), - others => zero32); - -type ahb_state_type is (midle, rhold, dread, dwrite, whold1, whold2); -type ddr_state_type is (midle, rhold, dread, dwrite, whold1, whold2); -constant abuf : integer := 6; -type access_param is record - haddr : std_logic_vector(31 downto 0); - size : std_logic_vector(2 downto 0); - hwrite : std_ulogic; -end record; --- local registers - -type mem is array(0 to 7) of std_logic_vector(31 downto 0); -type wrm is array(0 to 7) of std_logic_vector(3 downto 0); - -type ahb_reg_type is record - hready : std_ulogic; - hsel : std_ulogic; - startsd : std_ulogic; - state : ahb_state_type; - haddr : std_logic_vector(31 downto 0); - hrdata : std_logic_vector(127 downto 0); - hwrite : std_ulogic; - htrans : std_logic_vector(1 downto 0); - hresp : std_logic_vector(1 downto 0); - raddr : std_logic_vector(abuf-1 downto 0); - size : std_logic_vector(2 downto 0); - acc : access_param; - sync : std_ulogic; - hwdata : mem; - write : wrm; -end record; - -type ddr_reg_type is record - startsd : std_ulogic; - hrdata : std_logic_vector(255 downto 0); - sync : std_ulogic; - dstate : ahb_state_type; -end record; - -signal vcc, clk_ahb1, clk_ahb2 : std_ulogic; -signal r, ri : ddr_reg_type; -signal ra, rai : ahb_reg_type; -signal rbdrive, ribdrive : std_logic_vector(31 downto 0); -signal hwdata, hwdatab : std_logic_vector(127 downto 0); - -begin - - vcc <= '1'; - - ahb_ctrl : process(rst_ahb, ahbsi, r, ra, migo, hwdata) - variable va : ahb_reg_type; -- local variables for registers - variable startsd : std_ulogic; - variable ready : std_logic; - variable tmp : std_logic_vector(3 downto 0); - variable waddr : integer; - variable rdata : std_logic_vector(127 downto 0); - begin - - va := ra; va.hresp := HRESP_OKAY; - tmp := (others => '0'); - - case ra.raddr(2 downto 2) is - when "0" => rdata := r.hrdata(127 downto 0); - when others => rdata := r.hrdata(255 downto 128); - end case; - - if AHBDW > 64 and ra.size = HSIZE_4WORD then - va.hrdata := rdata(63 downto 0) & rdata(127 downto 64); - elsif AHBDW > 32 and ra.size = HSIZE_DWORD then - if ra.raddr(1) = '1' then va.hrdata(63 downto 0) := rdata(127 downto 64); - else va.hrdata(63 downto 0) := rdata(63 downto 0); end if; - va.hrdata(127 downto 64) := va.hrdata(63 downto 0); - else - case ra.raddr(1 downto 0) is - when "00" => va.hrdata(31 downto 0) := rdata(63 downto 32); - when "01" => va.hrdata(31 downto 0) := rdata(31 downto 0); - when "10" => va.hrdata(31 downto 0) := rdata(127 downto 96); - when others => va.hrdata(31 downto 0) := rdata(95 downto 64); - end case; - va.hrdata(127 downto 32) := va.hrdata(31 downto 0) & - va.hrdata(31 downto 0) & - va.hrdata(31 downto 0); - end if; - - if nosync = 0 then - va.sync := r.startsd; - if ra.startsd = ra.sync then ready := '1'; - else ready := '0'; end if; - else - if ra.startsd = r.startsd then ready := '1'; - else ready := '0'; end if; - end if; - - if ((ahbsi.hready and ahbsi.hsel(hindex)) = '1') then - va.htrans := ahbsi.htrans; va.haddr := ahbsi.haddr; - va.size := ahbsi.hsize(2 downto 0); va.hwrite := ahbsi.hwrite; - if ahbsi.htrans(1) = '1' then - va.hsel := '1'; va.hready := '0'; - end if; - end if; - - if ahbsi.hready = '1' then va.hsel := ahbsi.hsel(hindex); end if; - - case ra.state is - when midle => - va.write := (others => "0000"); - if ((va.hsel and va.htrans(1)) = '1') then - if va.hwrite = '0' then - va.state := rhold; va.startsd := not ra.startsd; - else - va.state := dwrite; va.hready := '1'; - end if; - end if; - va.raddr := ra.haddr(7 downto 2); - if ((ahbsi.hready and ahbsi.hsel(hindex)) = '1') then - va.acc := (va.haddr, va.size, va.hwrite); - end if; - when rhold => - va.raddr := ra.haddr(7 downto 2); - if ready = '1' then - va.state := dread; va.hready := '1'; - if AHBDW > 64 and ra.size(2) = '1' then va.raddr := ra.raddr + 4; - elsif AHBDW > 32 and andv(ra.size(1 downto 0)) = '1' then va.raddr := ra.raddr + 2; - else va.raddr := ra.raddr + 1; end if; - end if; - when dread => - va.hready := '1'; - if AHBDW > 64 and ra.size(2) = '1' then va.raddr := ra.raddr + 4; - elsif AHBDW > 32 and andv(ra.size(1 downto 0)) = '1' then va.raddr := ra.raddr + 2; - else va.raddr := ra.raddr + 1; end if; - if ((va.hsel and va.htrans(1) and va.htrans(0)) = '0') - or (ra.raddr(2 downto 0) = "000") then - va.state := midle; va.hready := '0'; - end if; - va.acc := (va.haddr, va.size, va.hwrite); - when dwrite => - va.raddr := ra.haddr(7 downto 2); va.hready := '1'; - if (((va.hsel and va.htrans(1) and va.htrans(0)) = '0') - or (ra.haddr(4 downto 2) = "111") - or (AHBDW > 32 and ra.haddr(5 downto 2) = "1110" and andv(ra.size(1 downto 0)) = '1') - or (AHBDW > 64 and ra.haddr(5 downto 2) = "1100" and ra.size(2) = '1')) then - va.startsd := not ra.startsd; va.state := whold1; - va.hready := '0'; - end if; - tmp := decode(ra.haddr(1 downto 0)); - waddr := conv_integer(ra.haddr(4 downto 2)); - va.hwdata(waddr) := hwdata(31 downto 0); - case ra.size is - when "000" => va.write(waddr) := tmp(0) & tmp(1) & tmp(2) & tmp(3); - when "001" => va.write(waddr) := tmp(0) & tmp(0) & tmp(2) & tmp(2); - when "010" => va.write(waddr) := "1111"; - when "011" => va.write(waddr) := "1111"; va.write(waddr+1) := "1111"; - va.hwdata(waddr+1) := hwdata((63 mod AHBDW) downto (32 mod AHBDW)); - when others => va.write(waddr) := "1111"; va.write(waddr+1) := "1111"; - va.write(waddr+2) := "1111"; va.write(waddr+3) := "1111"; - va.hwdata(waddr+1) := hwdata((63 mod AHBDW) downto (32 mod AHBDW)); - va.hwdata(waddr+2) := hwdata((95 mod AHBDW) downto (64 mod AHBDW)); - va.hwdata(waddr+3) := hwdata((127 mod AHBDW) downto (96 mod AHBDW)); - end case; - when whold1 => - va.state := whold2; - when whold2 => - if ready = '1' then - va.state := midle; va.acc := (va.haddr, va.size, va.hwrite); - end if; - end case; - - if (ahbsi.hready and ahbsi.hsel(hindex) ) = '1' then - if ahbsi.htrans(1) = '0' then va.hready := '1'; end if; - end if; - - if rst_ahb = '0' then - va.hsel := '0'; - va.hready := '1'; - va.state := midle; - va.startsd := '0'; - va.acc.hwrite := '0'; - va.acc.haddr := (others => '0'); - end if; - - rai <= va; - - end process; - - ahbso.hready <= ra.hready; - ahbso.hresp <= ra.hresp; - ahbso.hrdata <= ahbdrivedata(ra.hrdata); - ahbso.hcache <= '1'; - --- migi.app_addr <= '0' & ra.acc.haddr(28 downto 6) & "000"; - migi.app_addr <= "00000" & ra.acc.haddr(28 downto 5) & "00"; - - ddr_ctrl : process(rst_ddr, r, ra, migo) - variable v : ddr_reg_type; -- local variables for registers - variable startsd : std_ulogic; - variable raddr : std_logic_vector(13 downto 0); - variable adec : std_ulogic; - variable haddr : std_logic_vector(31 downto 0); - variable hsize : std_logic_vector(1 downto 0); - variable hwrite : std_ulogic; - variable htrans : std_logic_vector(1 downto 0); - variable hready : std_ulogic; - variable app_en : std_ulogic; - variable app_cmd : std_logic_vector(2 downto 0); - variable app_wdf_mask : std_logic_vector((4*PAYLOAD_WIDTH)/8-1 downto 0); - variable app_wdf_wren : std_ulogic; - variable app_wdf_data : std_logic_vector((4*PAYLOAD_WIDTH)-1 downto 0); - - begin - --- Variable default settings to avoid latches - - v := r; app_en := '0'; app_cmd := "000"; app_wdf_wren := '0'; - app_wdf_mask := (others => '0'); - app_wdf_mask(15 downto 0) := ra.write(2) & ra.write(3) & ra.write(0) & ra.write(1); - app_wdf_data := (others => '0'); - app_wdf_data(127 downto 0) := ra.hwdata(2) & ra.hwdata(3) & ra.hwdata(0) & ra.hwdata(1); - if ra.acc.hwrite = '0' then app_cmd(0) := '1'; else app_cmd(0) := '0'; end if; - v.sync := ra.startsd; - - if nosync = 0 then - if r.startsd /= r.sync then startsd := '1'; - else startsd := '0'; end if; - else - if ra.startsd /= r.startsd then startsd := '1'; - else startsd := '0'; end if; - end if; - - case r.dstate is - when midle => - if (startsd = '1') and (migo.app_af_afull = '0') then - if ra.acc.hwrite = '0' then - v.dstate := dread; app_en := '1'; - elsif migo.app_wdf_afull = '0' then - v.dstate := dwrite; app_en := '1'; app_wdf_wren := '1'; - end if; - end if; - when dread => - if migo.app_rd_data_valid = '1' then - v.hrdata(127 downto 0) := migo.app_rd_data(127 downto 0); - v.dstate := rhold; - end if; - when rhold => - v.hrdata(255 downto 128) := migo.app_rd_data(127 downto 0); - v.dstate := midle; - v.startsd := not r.startsd; - when dwrite => - app_wdf_wren := '1'; - app_wdf_mask(15 downto 0) := ra.write(6) & ra.write(7) & ra.write(4) & ra.write(5); - app_wdf_data(127 downto 0) := ra.hwdata(6) & ra.hwdata(7) & ra.hwdata(4) & ra.hwdata(5); - v.startsd := not r.startsd; - v.dstate := midle; - when others => - end case; - --- reset - - if rst_ddr = '0' then - v.startsd := '0'; - app_en := '0'; - v.dstate := midle; - end if; - - ri <= v; - migi.app_cmd <= app_cmd; - migi.app_en <= app_en; - migi.app_wdf_wren <= app_wdf_wren; - migi.app_wdf_mask <= not app_wdf_mask; - migi.app_wdf_data <= app_wdf_data; - - end process; - - ahbso.hconfig <= hconfig; - ahbso.hirq <= (others => '0'); - ahbso.hindex <= hindex; - ahbso.hsplit <= (others => '0'); - - clk_ahb1 <= clk_ahb; clk_ahb2 <= clk_ahb1; -- sync clock deltas - ahbregs : process(clk_ahb2) begin - if rising_edge(clk_ahb2) then - ra <= rai; - end if; - end process; - - ddrregs : process(clk_ddr) begin - if rising_edge(clk_ddr) then - r <= ri; - end if; - end process; - - -- Write data selection. - AHB32: if AHBDW = 32 generate - hwdata <= ahbsi.hwdata(31 downto 0) & ahbsi.hwdata(31 downto 0) & - ahbsi.hwdata(31 downto 0) & ahbsi.hwdata(31 downto 0); - end generate AHB32; - AHB64: if AHBDW = 64 generate - -- With CORE_ACDM set to 0 hwdata will always be ahbsi.hwdata(63 downto 0) - -- otherwise the valid data slice will be selected, and possibly uplicated, - -- from ahbsi.hwdata. - hwdatab(63 downto 0) <= ahbreaddword(ahbsi.hwdata, ra.haddr(4 downto 2)) when (CORE_ACDM = 0 or ra.size(1 downto 0) = "11") else - (ahbreadword(ahbsi.hwdata, ra.haddr(4 downto 2)) & - ahbreadword(ahbsi.hwdata, ra.haddr(4 downto 2))); - hwdata <= hwdatab(31 downto 0) & hwdatab(63 downto 32) & - hwdatab(31 downto 0) & hwdatab(63 downto 32); - end generate AHB64; - AHBWIDE: if AHBDW > 64 generate - -- With CORE_ACDM set to 0 hwdata will always be ahbsi.hwdata(127 downto 0) - -- otherwise the valid data slice will be selected, and possibly uplicated, - -- from ahbsi.hwdata. - hwdatab <= ahbread4word(ahbsi.hwdata, ra.haddr(4 downto 2)) when (CORE_ACDM = 0 or ra.size(2) = '1') else - (ahbreaddword(ahbsi.hwdata, ra.haddr(4 downto 2)) & - ahbreaddword(ahbsi.hwdata, ra.haddr(4 downto 2))) when (ra.size = "011") else - (ahbreadword(ahbsi.hwdata, ra.haddr(4 downto 2)) & - ahbreadword(ahbsi.hwdata, ra.haddr(4 downto 2)) & - ahbreadword(ahbsi.hwdata, ra.haddr(4 downto 2)) & - ahbreadword(ahbsi.hwdata, ra.haddr(4 downto 2))); - hwdata <= hwdatab(31 downto 0) & hwdatab(63 downto 32) & - hwdatab(95 downto 64) & hwdatab(127 downto 96); - end generate AHBWIDE; - --- pragma translate_off - bootmsg : report_version - generic map ( - msg1 => "ahb2mig" & tost(hindex) & ": 64-bit DDR2/3 controller rev " & - tost(REVISION) & ", " & tost(Mbyte) & " Mbyte, " & tost(MHz) & - " MHz DDR clock"); --- pragma translate_on - -end; - diff --git a/designs/leon3-xilinx-ml510/ahbrom.vhd b/designs/leon3-xilinx-ml510/ahbrom.vhd index 0a8f2dd0..d8976b7a 100644 --- a/designs/leon3-xilinx-ml510/ahbrom.vhd +++ b/designs/leon3-xilinx-ml510/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-xilinx-ml510/config.help b/designs/leon3-xilinx-ml510/config.help index f31039ca..950132f2 100644 --- a/designs/leon3-xilinx-ml510/config.help +++ b/designs/leon3-xilinx-ml510/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -610,7 +643,13 @@ CONFIG_AHB_SPLIT Unless you actually have an AHB slave that can generate AHB split responses, say N and save some gates. -Default AHB master +Enable full PnP decoding +CONFIG_AHB_FPNPEN + Say Y here to enable full decoding of the PnP configuration records in + in the AHB arbiter. When disabled the user-defined registers in the + PnP configuration records are not mapped in the configuration area. + +IO area start address CONFIG_AHB_IOADDR Selects the MSB adddress (HADDR[31:20]) of the AHB IO area, as defined in the plug&play extentions of the AMBA bus. Should be kept to FFF diff --git a/designs/leon3-xilinx-ml510/config.in b/designs/leon3-xilinx-ml510/config.in index eb93d313..9b80f519 100644 --- a/designs/leon3-xilinx-ml510/config.in +++ b/designs/leon3-xilinx-ml510/config.in @@ -38,7 +38,6 @@ comment 'Peripherals ' mainmenu_option next_comment comment 'Memory controller ' source lib/esa/memoryctrl/mctrl.in - source lib/gaisler/ddr/mig.in source lib/gaisler/ddr/ddr2sp.in source lib/gaisler/misc/ahbstat.in endmenu diff --git a/designs/leon3-xilinx-ml510/config.vhd b/designs/leon3-xilinx-ml510/config.vhd index c8f2a30f..eb76a4c9 100644 --- a/designs/leon3-xilinx-ml510/config.vhd +++ b/designs/leon3-xilinx-ml510/config.vhd @@ -30,7 +30,7 @@ package config is constant CFG_CLK_NOFB : integer := 1; -- LEON3 processor core constant CFG_LEON3 : integer := 1; - constant CFG_NCPU : integer := (1); + constant CFG_NCPU : integer := (2); constant CFG_NWIN : integer := (8); constant CFG_V8 : integer := 16#32# + 4*0; constant CFG_MAC : integer := 0; @@ -41,7 +41,7 @@ package config is constant CFG_NOTAG : integer := 0; constant CFG_NWP : integer := (2); constant CFG_PWD : integer := 1*2; - constant CFG_FPU : integer := 0 + 16*0; + constant CFG_FPU : integer := 0 + 16*0 + 32*0; constant CFG_GRFPUSH : integer := 0; constant CFG_ICEN : integer := 1; constant CFG_ISETS : integer := 4; @@ -58,7 +58,7 @@ package config is constant CFG_DLINE : integer := 4; constant CFG_DREPL : integer := 0; constant CFG_DLOCK : integer := 0; - constant CFG_DSNOOP : integer := 1 + 1 + 4*0; + constant CFG_DSNOOP : integer := 1 + 1 + 4*1; constant CFG_DFIXED : integer := 16#0#; constant CFG_DLRAMEN : integer := 0; constant CFG_DLRAMADDR: integer := 16#8F#; @@ -85,6 +85,7 @@ package config is constant CFG_DEFMST : integer := (0); constant CFG_RROBIN : integer := 1; constant CFG_SPLIT : integer := 1; + constant CFG_FPNPEN : integer := 0; constant CFG_AHBIO : integer := 16#FFF#; constant CFG_APBADDR : integer := 16#C00#; constant CFG_AHB_MON : integer := 1; @@ -112,14 +113,14 @@ package config is constant CFG_MCTRL_INVCLK : integer := 0; constant CFG_MCTRL_SD64 : integer := 0; constant CFG_MCTRL_PAGE : integer := 0 + 0; --- Xilinx MIG - constant CFG_MIG_DDR2 : integer := 0; -- DDR controller constant CFG_DDR2SP : integer := 1; constant CFG_DDR2SP_INIT : integer := 1; constant CFG_DDR2SP_FREQ : integer := 100; constant CFG_DDR2SP_TRFC : integer := (130); - constant CFG_DDR2SP_DATAWIDTH : integer := (32); + constant CFG_DDR2SP_DATAWIDTH : integer := (64); + constant CFG_DDR2SP_FTEN : integer := 0; + constant CFG_DDR2SP_FTWIDTH : integer := 0; constant CFG_DDR2SP_COL : integer := (10); constant CFG_DDR2SP_SIZE : integer := (512); constant CFG_DDR2SP_DELAY0 : integer := (8); @@ -140,12 +141,10 @@ package config is constant CFG_AHBRODDR : integer := 16#000#; constant CFG_ROMADDR : integer := 16#000#; constant CFG_ROMMASK : integer := 16#E00# + 16#000#; - -- AHB RAM constant CFG_AHBRAMEN : integer := 0; constant CFG_AHBRSZ : integer := 1; constant CFG_AHBRADDR : integer := 16#A00#; - -- Gaisler Ethernet core constant CFG_GRETH : integer := 1; constant CFG_GRETH1G : integer := 0; diff --git a/designs/leon3-xilinx-ml510/config.vhd.h b/designs/leon3-xilinx-ml510/config.vhd.h index cacae194..d5b2035c 100644 --- a/designs/leon3-xilinx-ml510/config.vhd.h +++ b/designs/leon3-xilinx-ml510/config.vhd.h @@ -29,7 +29,7 @@ constant CFG_NOTAG : integer := CONFIG_NOTAG; constant CFG_NWP : integer := CONFIG_IU_WATCHPOINTS; constant CFG_PWD : integer := CONFIG_PWD*2; - constant CFG_FPU : integer := CONFIG_FPU + 16*CONFIG_FPU_NETLIST; + constant CFG_FPU : integer := CONFIG_FPU + 16*CONFIG_FPU_NETLIST + 32*CONFIG_FPU_GRFPU_SHARED; constant CFG_GRFPUSH : integer := CONFIG_FPU_GRFPU_SHARED; constant CFG_ICEN : integer := CONFIG_ICACHE_ENABLE; constant CFG_ISETS : integer := CFG_IU_ISETS; @@ -74,6 +74,7 @@ constant CFG_DEFMST : integer := CONFIG_AHB_DEFMST; constant CFG_RROBIN : integer := CONFIG_AHB_RROBIN; constant CFG_SPLIT : integer := CONFIG_AHB_SPLIT; + constant CFG_FPNPEN : integer := CONFIG_AHB_FPNPEN; constant CFG_AHBIO : integer := 16#CONFIG_AHB_IOADDR#; constant CFG_APBADDR : integer := 16#CONFIG_APB_HADDR#; constant CFG_AHB_MON : integer := CONFIG_AHB_MON; @@ -106,16 +107,14 @@ constant CFG_MCTRL_SD64 : integer := CONFIG_MCTRL_SDRAM_BUS64; constant CFG_MCTRL_PAGE : integer := CONFIG_MCTRL_PAGE + CONFIG_MCTRL_PROGPAGE; --- Xilinx MIG - constant CFG_MIG_DDR2 : integer := CONFIG_MIG_DDR2; - - -- DDR controller - constant CFG_DDR2SP : integer := CONFIG_DDR2SP; + constant CFG_DDR2SP : integer := CONFIG_DDR2SP; constant CFG_DDR2SP_INIT : integer := CONFIG_DDR2SP_INIT; constant CFG_DDR2SP_FREQ : integer := CONFIG_DDR2SP_FREQ; constant CFG_DDR2SP_TRFC : integer := CONFIG_DDR2SP_TRFC; - constant CFG_DDR2SP_DATAWIDTH : integer := CONFIG_DDR2SP_DATAWIDTH; + constant CFG_DDR2SP_DATAWIDTH : integer := CONFIG_DDR2SP_DATAWIDTH; + constant CFG_DDR2SP_FTEN : integer := CONFIG_DDR2SP_FTEN; + constant CFG_DDR2SP_FTWIDTH : integer := CONFIG_DDR2SP_FTWIDTH; constant CFG_DDR2SP_COL : integer := CONFIG_DDR2SP_COL; constant CFG_DDR2SP_SIZE : integer := CONFIG_DDR2SP_MBYTE; constant CFG_DDR2SP_DELAY0 : integer := CONFIG_DDR2SP_DELAY0; diff --git a/designs/leon3-xilinx-ml510/coregen.cgc b/designs/leon3-xilinx-ml510/coregen.cgc deleted file mode 100644 index 370fbda8..00000000 --- a/designs/leon3-xilinx-ml510/coregen.cgc +++ /dev/null @@ -1,978 +0,0 @@ - - - xilinx.com - CoreGen - coregen - 1.0 - - - mig_36_1 - MIG - - - mig_36_1 - ./mig_36_1/user_design/mig.prj - - - - - coregen - ./ - ./tmp/ - ./tmp/_cg/ - - - xc5vfx130t - virtex5 - ff1738 - -2 - - - BusFormatParenNotRipped - VHDL - true - Synplicity - false - false - false - Ngc - false - - - Behavioral - VHDL - false - - - - - model_parameter_resolution_generator - - - ip_xco_generator - - ./mig_36_1.xco - xco - Tue Nov 29 15:31:03 GMT 2011 - 0xEFB7755F - generationid_2277480361 - - - - implementation_source_generator - - ./mig_36_1/docs/adr_cntrl_timing.xls - ignore - unknown - Tue Nov 29 15:31:04 GMT 2011 - 0xAF35ABC0 - generationid_2277480361 - - - ./mig_36_1/docs/read_data_timing.xls - ignore - unknown - Tue Nov 29 15:31:04 GMT 2011 - 0xD41334D2 - generationid_2277480361 - - - ./mig_36_1/docs/ug086.pdf - ignore - pdf - Tue Nov 29 15:31:04 GMT 2011 - 0xE22E2DD9 - generationid_2277480361 - - - ./mig_36_1/docs/write_data_timing.xls - ignore - unknown - Tue Nov 29 15:31:04 GMT 2011 - 0x605046E7 - generationid_2277480361 - - - ./mig_36_1/docs/xapp858.url - ignore - unknown - Tue Nov 29 15:31:04 GMT 2011 - 0x5698FE61 - generationid_2277480361 - - - ./mig_36_1/example_design/datasheet.txt - ignore - txt - Tue Nov 29 15:31:05 GMT 2011 - 0x6DF1849F - generationid_2277480361 - - - ./mig_36_1/example_design/log.txt - ignore - txt - Tue Nov 29 15:31:05 GMT 2011 - 0x5FBBD44D - generationid_2277480361 - - - ./mig_36_1/example_design/mig.prj - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xD6AF0D47 - generationid_2277480361 - - - ./mig_36_1/example_design/par/icon4_cg.xco - ignore - xco - Tue Nov 29 15:31:04 GMT 2011 - 0x7B06BD87 - generationid_2277480361 - - - ./mig_36_1/example_design/par/ise_flow.sh - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0x8CDF35C3 - generationid_2277480361 - - - ./mig_36_1/example_design/par/makeproj.sh - ignore - unknown - Tue Nov 29 15:31:04 GMT 2011 - 0xCFE64DF9 - generationid_2277480361 - - - ./mig_36_1/example_design/par/mem_interface_top.ut - ignore - unknown - Tue Nov 29 15:31:04 GMT 2011 - 0x86B57F5F - generationid_2277480361 - - - ./mig_36_1/example_design/par/mig_36_1.cdc - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0x6EE977AF - generationid_2277480361 - - - ./mig_36_1/example_design/par/mig_36_1.ucf - ignore - ucf - Tue Nov 29 15:31:04 GMT 2011 - 0x78C7E859 - generationid_2277480361 - - - ./mig_36_1/example_design/par/readme.txt - ignore - txt - Tue Nov 29 15:31:05 GMT 2011 - 0x67A0882A - generationid_2277480361 - - - ./mig_36_1/example_design/par/rem_files.sh - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xD71CF538 - generationid_2277480361 - - - ./mig_36_1/example_design/par/vio_async_in100_cg.xco - ignore - xco - Tue Nov 29 15:31:05 GMT 2011 - 0xCDC17572 - generationid_2277480361 - - - ./mig_36_1/example_design/par/vio_async_in192_cg.xco - ignore - xco - Tue Nov 29 15:31:05 GMT 2011 - 0xE89A5043 - generationid_2277480361 - - - ./mig_36_1/example_design/par/vio_async_in96_cg.xco - ignore - xco - Tue Nov 29 15:31:05 GMT 2011 - 0x11F8FD04 - generationid_2277480361 - - - ./mig_36_1/example_design/par/vio_sync_out32_cg.xco - ignore - xco - Tue Nov 29 15:31:05 GMT 2011 - 0xFE83F4F7 - generationid_2277480361 - - - ./mig_36_1/example_design/par/xst_run.txt - ignore - txt - Tue Nov 29 15:31:05 GMT 2011 - 0xD7903C1C - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_chipscope.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0xAF4D142E - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_ctrl.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x58746BDE - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_idelay_ctrl.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x6A9C9146 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_infrastructure.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x5141207F - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_mem_if_top.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x6A44636F - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_phy_calib.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0xD74A7F2F - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_phy_ctl_io.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x9D7E36A4 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_phy_dm_iob.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x7F660442 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_phy_dq_iob.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x1AD54EC9 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_phy_dqs_iob.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x8DCFD13B - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_phy_init.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x429C4334 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_phy_io.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0xD101A4A6 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_phy_top.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0xC5E9925D - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_phy_write.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0xFE3E4E47 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_tb_test_addr_gen.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0xCDFE7324 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_tb_test_cmp.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0xE311288B - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_tb_test_data_gen.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x25F0DA7A - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_tb_test_gen.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x7C4457F5 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_tb_top.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x1237F424 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_top.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x43AA08DC - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_usr_addr_fifo.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x0E71DC48 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_usr_rd.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x1652D798 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_usr_top.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x609A43A0 - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/ddr2_usr_wr.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x89369B8F - generationid_2277480361 - - - ./mig_36_1/example_design/rtl/mig_36_1.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x5DE788B9 - generationid_2277480361 - - - ./mig_36_1/example_design/sim/ddr2_model.v - ignore - verilog - Tue Nov 29 15:31:04 GMT 2011 - 0xF630302C - generationid_2277480361 - - - ./mig_36_1/example_design/sim/ddr2_model_parameters.vh - ignore - unknown - Tue Nov 29 15:31:04 GMT 2011 - 0x1D074097 - generationid_2277480361 - - - ./mig_36_1/example_design/sim/sim.do - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xD54BF87B - generationid_2277480361 - - - ./mig_36_1/example_design/sim/sim_tb_top.vhd - ignore - vhdl - Tue Nov 29 15:31:04 GMT 2011 - 0x022D10F6 - generationid_2277480361 - - - ./mig_36_1/example_design/sim/wiredly.vhd - ignore - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0xF6D086FB - generationid_2277480361 - - - ./mig_36_1/example_design/synth/mem_interface_top_synp.sdc - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xB7AD3897 - generationid_2277480361 - - - ./mig_36_1/example_design/synth/mig_36_1.lso - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xEEDE3797 - generationid_2277480361 - - - ./mig_36_1/example_design/synth/mig_36_1.prj - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0x1994297A - generationid_2277480361 - - - ./mig_36_1/example_design/synth/script_synp.tcl - ignore - tcl - Tue Nov 29 15:31:05 GMT 2011 - 0x9418A0ED - generationid_2277480361 - - - ./mig_36_1/user_design/datasheet.txt - ignore - txt - Tue Nov 29 15:31:05 GMT 2011 - 0xC9A3634D - generationid_2277480361 - - - ./mig_36_1/user_design/log.txt - ignore - txt - Tue Nov 29 15:31:05 GMT 2011 - 0x83DBF2F3 - generationid_2277480361 - - - ./mig_36_1/user_design/mig.prj - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xD6AF0D47 - generationid_2277480361 - - - ./mig_36_1/user_design/par/icon4_cg.xco - ignore - xco - Tue Nov 29 15:31:05 GMT 2011 - 0x7B06BD87 - generationid_2277480361 - - - ./mig_36_1/user_design/par/ise_flow.sh - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0x8CDF35C3 - generationid_2277480361 - - - ./mig_36_1/user_design/par/makeproj.sh - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xCFE64DF9 - generationid_2277480361 - - - ./mig_36_1/user_design/par/mem_interface_top.ut - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0x86B57F5F - generationid_2277480361 - - - ./mig_36_1/user_design/par/mig_36_1.cdc - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0x6EE977AF - generationid_2277480361 - - - ./mig_36_1/user_design/par/mig_36_1.ucf - ucf - Tue Nov 29 15:31:05 GMT 2011 - 0x1784E9D4 - generationid_2277480361 - - - ./mig_36_1/user_design/par/readme.txt - ignore - txt - Tue Nov 29 15:31:05 GMT 2011 - 0xC6462211 - generationid_2277480361 - - - ./mig_36_1/user_design/par/rem_files.sh - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xD71CF538 - generationid_2277480361 - - - ./mig_36_1/user_design/par/vio_async_in100_cg.xco - ignore - xco - Tue Nov 29 15:31:05 GMT 2011 - 0xCDC17572 - generationid_2277480361 - - - ./mig_36_1/user_design/par/vio_async_in192_cg.xco - ignore - xco - Tue Nov 29 15:31:05 GMT 2011 - 0xE89A5043 - generationid_2277480361 - - - ./mig_36_1/user_design/par/vio_async_in96_cg.xco - ignore - xco - Tue Nov 29 15:31:05 GMT 2011 - 0x11F8FD04 - generationid_2277480361 - - - ./mig_36_1/user_design/par/vio_sync_out32_cg.xco - ignore - xco - Tue Nov 29 15:31:05 GMT 2011 - 0xFE83F4F7 - generationid_2277480361 - - - ./mig_36_1/user_design/par/xst_run.txt - ignore - txt - Tue Nov 29 15:31:05 GMT 2011 - 0xD7903C1C - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_chipscope.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0xAF4D142E - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_ctrl.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x58746BDE - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_idelay_ctrl.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x6A9C9146 - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_infrastructure.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x5141207F - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_mem_if_top.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x6A44636F - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_phy_calib.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0xD74A7F2F - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_phy_ctl_io.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x9D7E36A4 - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_phy_dm_iob.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x7F660442 - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_phy_dq_iob.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x1AD54EC9 - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_phy_dqs_iob.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x8DCFD13B - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_phy_init.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x429C4334 - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_phy_io.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0xD101A4A6 - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_phy_top.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0xC5E9925D - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_phy_write.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0xFE3E4E47 - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_top.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x43AA08DC - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_usr_addr_fifo.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x0E71DC48 - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_usr_rd.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x1652D798 - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_usr_top.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x609A43A0 - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/ddr2_usr_wr.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x89369B8F - generationid_2277480361 - - - ./mig_36_1/user_design/rtl/mig_36_1.vhd - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x2EAC7E3D - generationid_2277480361 - - - ./mig_36_1/user_design/sim/ddr2_model.v - ignore - verilog - Tue Nov 29 15:31:05 GMT 2011 - 0xF630302C - generationid_2277480361 - - - ./mig_36_1/user_design/sim/ddr2_model_parameters.vh - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0x1D074097 - generationid_2277480361 - - - ./mig_36_1/user_design/sim/ddr2_tb_test_addr_gen.vhd - ignore - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0xCDFE7324 - generationid_2277480361 - - - ./mig_36_1/user_design/sim/ddr2_tb_test_cmp.vhd - ignore - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0xE311288B - generationid_2277480361 - - - ./mig_36_1/user_design/sim/ddr2_tb_test_data_gen.vhd - ignore - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x25F0DA7A - generationid_2277480361 - - - ./mig_36_1/user_design/sim/ddr2_tb_test_gen.vhd - ignore - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x7C4457F5 - generationid_2277480361 - - - ./mig_36_1/user_design/sim/ddr2_tb_top.vhd - ignore - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x1237F424 - generationid_2277480361 - - - ./mig_36_1/user_design/sim/sim.do - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xD54BF87B - generationid_2277480361 - - - ./mig_36_1/user_design/sim/sim_tb_top.vhd - ignore - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0x1D86F4EC - generationid_2277480361 - - - ./mig_36_1/user_design/sim/wiredly.vhd - ignore - vhdl - Tue Nov 29 15:31:05 GMT 2011 - 0xF6D086FB - generationid_2277480361 - - - ./mig_36_1/user_design/synth/mem_interface_top_synp.sdc - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xB7AD3897 - generationid_2277480361 - - - ./mig_36_1/user_design/synth/mig_36_1.lso - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xEEDE3797 - generationid_2277480361 - - - ./mig_36_1/user_design/synth/mig_36_1.prj - ignore - unknown - Tue Nov 29 15:31:05 GMT 2011 - 0xE3025A67 - generationid_2277480361 - - - ./mig_36_1/user_design/synth/script_synp.tcl - ignore - tcl - Tue Nov 29 15:31:05 GMT 2011 - 0x8FE181B5 - generationid_2277480361 - - - ./mig_36_1.vho - vho - Tue Nov 29 15:31:05 GMT 2011 - 0x84BD3FC9 - generationid_2277480361 - - - ./mig_36_1_xmdf.tcl - ignore - tcl - Tue Nov 29 15:31:05 GMT 2011 - 0x33DABBBA - generationid_2277480361 - - - - instantiation_template_generator - - - asy_generator - - - xmdf_generator - - - ise_generator - - ./mig_36_1.gise - ignore - gise - Tue Nov 29 15:31:11 GMT 2011 - 0xD06B341A - generationid_2277480361 - - - ./mig_36_1.xise - ignore - xise - Tue Nov 29 15:31:11 GMT 2011 - 0x11A66908 - generationid_2277480361 - - - - deliver_readme_generator - - - flist_generator - - ./mig_36_1_flist.txt - ignore - txtFlist - txt - Tue Nov 29 15:31:12 GMT 2011 - 0xCAF34298 - generationid_2277480361 - - - - - - - - - - coregen - ./ - ./tmp/ - ./tmp/_cg - - - xc5vfx130t - virtex5 - ff1738 - -2 - - - BusFormatParenNotRipped - VHDL - true - Synplicity - false - false - false - Ngc - false - - - Behavioral - VHDL - false - - - - - diff --git a/designs/leon3-xilinx-ml510/ddr2_udimm.cfg b/designs/leon3-xilinx-ml510/ddr2_udimm.cfg deleted file mode 100644 index d7679438..00000000 --- a/designs/leon3-xilinx-ml510/ddr2_udimm.cfg +++ /dev/null @@ -1,387 +0,0 @@ -# -# Automatically generated make config: don't edit -# -CONFIG_HAS_SHARED_GRFPU=y - -# -# Synthesis -# -# CONFIG_SYN_INFERRED is not set -# CONFIG_SYN_STRATIX is not set -# CONFIG_SYN_STRATIXII is not set -# CONFIG_SYN_STRATIXIII is not set -# CONFIG_SYN_CYCLONEIII is not set -# CONFIG_SYN_ALTERA is not set -# CONFIG_SYN_AXCEL is not set -# CONFIG_SYN_AXDSP is not set -# CONFIG_SYN_PROASIC is not set -# CONFIG_SYN_PROASICPLUS is not set -# CONFIG_SYN_PROASIC3 is not set -# CONFIG_SYN_PROASIC3E is not set -# CONFIG_SYN_PROASIC3L is not set -# CONFIG_SYN_IGLOO is not set -# CONFIG_SYN_FUSION is not set -# CONFIG_SYN_UT025CRH is not set -# CONFIG_SYN_UT130HBD is not set -# CONFIG_SYN_UT90NHBD is not set -# CONFIG_SYN_ATC18 is not set -# CONFIG_SYN_ATC18RHA is not set -# CONFIG_SYN_CMOS9SF is not set -# CONFIG_SYN_CUSTOM1 is not set -# CONFIG_SYN_EASIC90 is not set -# CONFIG_SYN_EASIC45 is not set -# CONFIG_SYN_IHP25 is not set -# CONFIG_SYN_IHP25RH is not set -# CONFIG_SYN_LATTICE is not set -# CONFIG_SYN_ECLIPSE is not set -# CONFIG_SYN_PEREGRINE is not set -# CONFIG_SYN_RH_LIB18T is not set -# CONFIG_SYN_RHUMC is not set -# CONFIG_SYN_SMIC13 is not set -# CONFIG_SYN_TM65GPLUS is not set -# CONFIG_SYN_TSMC90 is not set -# CONFIG_SYN_UMC is not set -# CONFIG_SYN_SPARTAN2 is not set -# CONFIG_SYN_SPARTAN3 is not set -# CONFIG_SYN_SPARTAN3E is not set -# CONFIG_SYN_SPARTAN6 is not set -# CONFIG_SYN_VIRTEX is not set -# CONFIG_SYN_VIRTEXE is not set -# CONFIG_SYN_VIRTEX2 is not set -# CONFIG_SYN_VIRTEX4 is not set -CONFIG_SYN_VIRTEX5=y -# CONFIG_SYN_VIRTEX6 is not set -# CONFIG_SYN_INFER_RAM is not set -# CONFIG_SYN_INFER_PADS is not set -# CONFIG_SYN_NO_ASYNC is not set -# CONFIG_SYN_SCAN is not set - -# -# Clock generation -# -# CONFIG_CLK_INFERRED is not set -# CONFIG_CLK_HCLKBUF is not set -# CONFIG_CLK_UT130HBD is not set -# CONFIG_CLK_ALTDLL is not set -# CONFIG_CLK_LATDLL is not set -# CONFIG_CLK_PRO3PLL is not set -# CONFIG_CLK_PRO3EPLL is not set -# CONFIG_CLK_PRO3LPLL is not set -# CONFIG_CLK_FUSPLL is not set -# CONFIG_CLK_LIB18T is not set -# CONFIG_CLK_RHUMC is not set -# CONFIG_CLK_CLKDLL is not set -CONFIG_CLK_DCM=y -CONFIG_CLK_MUL=8 -CONFIG_CLK_DIV=10 -# CONFIG_PCI_CLKDLL is not set -CONFIG_CLK_NOFB=y -# CONFIG_PCI_SYSCLK is not set -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 - -# -# Processor -# - -# -# Integer unit -# -CONFIG_IU_NWINDOWS=8 -CONFIG_IU_V8MULDIV=y -CONFIG_IU_MUL_LATENCY_2=y -# CONFIG_IU_MUL_LATENCY_4 is not set -# CONFIG_IU_MUL_LATENCY_5 is not set -CONFIG_IU_MUL_INFERRED=y -# CONFIG_IU_MUL_MODGEN is not set -# CONFIG_IU_MUL_TECHSPEC is not set -# CONFIG_IU_MUL_DW is not set -CONFIG_IU_BP=y -CONFIG_IU_SVT=y -# CONFIG_NOTAG is not set -CONFIG_IU_LDELAY=1 -CONFIG_IU_WATCHPOINTS=2 -CONFIG_PWD=y -CONFIG_IU_RSTADDR=00000 - -# -# Floating-point unit -# -# CONFIG_FPU_ENABLE is not set - -# -# Cache system -# -CONFIG_ICACHE_ENABLE=y -# CONFIG_ICACHE_ASSO1 is not set -# CONFIG_ICACHE_ASSO2 is not set -# CONFIG_ICACHE_ASSO3 is not set -CONFIG_ICACHE_ASSO4=y -# CONFIG_ICACHE_SZ1 is not set -# CONFIG_ICACHE_SZ2 is not set -# CONFIG_ICACHE_SZ4 is not set -CONFIG_ICACHE_SZ8=y -# CONFIG_ICACHE_SZ16 is not set -# CONFIG_ICACHE_SZ32 is not set -# CONFIG_ICACHE_SZ64 is not set -# CONFIG_ICACHE_SZ128 is not set -# CONFIG_ICACHE_SZ256 is not set -# CONFIG_ICACHE_LZ16 is not set -CONFIG_ICACHE_LZ32=y -# CONFIG_ICACHE_ALGORND is not set -# CONFIG_ICACHE_ALGODIR is not set -# CONFIG_ICACHE_ALGOLRR is not set -CONFIG_ICACHE_ALGOLRU=y -# CONFIG_ICACHE_LOCK is not set -CONFIG_DCACHE_ENABLE=y -# CONFIG_DCACHE_ASSO1 is not set -# CONFIG_DCACHE_ASSO2 is not set -# CONFIG_DCACHE_ASSO3 is not set -CONFIG_DCACHE_ASSO4=y -# CONFIG_DCACHE_SZ1 is not set -# CONFIG_DCACHE_SZ2 is not set -CONFIG_DCACHE_SZ4=y -# CONFIG_DCACHE_SZ8 is not set -# CONFIG_DCACHE_SZ16 is not set -# CONFIG_DCACHE_SZ32 is not set -# CONFIG_DCACHE_SZ64 is not set -# CONFIG_DCACHE_SZ128 is not set -# CONFIG_DCACHE_SZ256 is not set -CONFIG_DCACHE_LZ16=y -# CONFIG_DCACHE_LZ32 is not set -# CONFIG_DCACHE_ALGORND is not set -# CONFIG_DCACHE_ALGODIR is not set -# CONFIG_DCACHE_ALGOLRR is not set -CONFIG_DCACHE_ALGOLRU=y -# CONFIG_DCACHE_LOCK is not set -CONFIG_DCACHE_SNOOP=y -CONFIG_DCACHE_SNOOP_FAST=y -# CONFIG_DCACHE_SNOOP_SEPTAG is not set -CONFIG_CACHE_FIXED=0 - -# -# MMU -# -CONFIG_MMU_ENABLE=y -# CONFIG_MMU_COMBINED is not set -CONFIG_MMU_SPLIT=y -CONFIG_MMU_REPARRAY=y -# CONFIG_MMU_REPINCREMENT is not set -# CONFIG_MMU_I2 is not set -# CONFIG_MMU_I4 is not set -CONFIG_MMU_I8=y -# CONFIG_MMU_I16 is not set -# CONFIG_MMU_I32 is not set -# CONFIG_MMU_D2 is not set -# CONFIG_MMU_D4 is not set -CONFIG_MMU_D8=y -# CONFIG_MMU_D16 is not set -# CONFIG_MMU_D32 is not set -CONFIG_MMU_FASTWB=y -CONFIG_MMU_PAGE_4K=y -# CONFIG_MMU_PAGE_8K is not set -# CONFIG_MMU_PAGE_16K is not set -# CONFIG_MMU_PAGE_32K is not set -# CONFIG_MMU_PAGE_PROG is not set - -# -# Debug Support Unit -# -CONFIG_DSU_ENABLE=y -CONFIG_DSU_ITRACE=y -# CONFIG_DSU_ITRACESZ1 is not set -CONFIG_DSU_ITRACESZ2=y -# CONFIG_DSU_ITRACESZ4 is not set -# CONFIG_DSU_ITRACESZ8 is not set -# CONFIG_DSU_ITRACESZ16 is not set -CONFIG_DSU_ATRACE=y -# CONFIG_DSU_ATRACESZ1 is not set -CONFIG_DSU_ATRACESZ2=y -# CONFIG_DSU_ATRACESZ4 is not set -# CONFIG_DSU_ATRACESZ8 is not set -# CONFIG_DSU_ATRACESZ16 is not set - -# -# Fault-tolerance -# - -# -# VHDL debug settings -# -# CONFIG_IU_DISAS is not set -# CONFIG_DEBUG_PC32 is not set - -# -# AMBA configuration -# -CONFIG_AHB_DEFMST=0 -CONFIG_AHB_RROBIN=y -CONFIG_AHB_SPLIT=y -CONFIG_AHB_IOADDR=FFF -CONFIG_APB_HADDR=C00 -CONFIG_AHB_MON=y -CONFIG_AHB_MONERR=y -CONFIG_AHB_MONWAR=y -# CONFIG_AHB_DTRACE is not set - -# -# Debug Link -# -CONFIG_DSU_UART=y -CONFIG_DSU_JTAG=y -CONFIG_DSU_ETH=y -# CONFIG_DSU_ETHSZ1 is not set -CONFIG_DSU_ETHSZ2=y -# CONFIG_DSU_ETHSZ4 is not set -# CONFIG_DSU_ETHSZ8 is not set -# CONFIG_DSU_ETHSZ16 is not set -CONFIG_DSU_IPMSB=C0A8 -CONFIG_DSU_IPLSB=0034 -CONFIG_DSU_ETHMSB=020000 -CONFIG_DSU_ETHLSB=000035 -# CONFIG_DSU_ETH_PROG is not set -# CONFIG_DSU_ETH_DIS is not set - -# -# Peripherals -# - -# -# Memory controller -# - -# -# Leon2 memory controller -# -CONFIG_MCTRL_LEON2=y -# CONFIG_MCTRL_8BIT is not set -CONFIG_MCTRL_16BIT=y -# CONFIG_MCTRL_5CS is not set -# CONFIG_MCTRL_SDRAM is not set - -# -# Xilinx MIG DDR2 controller -# -# CONFIG_MIG_DDR2 is not set - -# -# DDR2 SDRAM controller -# -CONFIG_DDR2SP=y -CONFIG_DDR2SP_INIT=y -CONFIG_DDR2SP_NOSYNC=y -CONFIG_DDR2SP_TRFC=130 -CONFIG_DDR2SP_COL=10 -CONFIG_DDR2SP_MBYTE=512 -CONFIG_DDR2SP_DATAWIDTH=32 -# CONFIG_DDR2SP_FTEN is not set -CONFIG_DDR2SP_DELAY0=8 -CONFIG_DDR2SP_DELAY1=8 -CONFIG_DDR2SP_DELAY2=8 -CONFIG_DDR2SP_DELAY3=8 -CONFIG_DDR2SP_DELAY4=8 -CONFIG_DDR2SP_DELAY5=8 -CONFIG_DDR2SP_DELAY6=8 -CONFIG_DDR2SP_DELAY7=8 -CONFIG_AHBSTAT_ENABLE=y -CONFIG_AHBSTAT_NFTSLV=1 - -# -# On-chip RAM/ROM -# -# CONFIG_AHBROM_ENABLE is not set -# CONFIG_AHBRAM_ENABLE is not set - -# -# Ethernet -# -CONFIG_GRETH_ENABLE=y -# CONFIG_GRETH_GIGA is not set -# CONFIG_GRETH_FIFO4 is not set -# CONFIG_GRETH_FIFO8 is not set -# CONFIG_GRETH_FIFO16 is not set -# CONFIG_GRETH_FIFO32 is not set -CONFIG_GRETH_FIFO64=y - -# -# UART, timer, I/O port and interrupt controller -# -CONFIG_UART1_ENABLE=y -# CONFIG_UA1_FIFO1 is not set -# CONFIG_UA1_FIFO2 is not set -CONFIG_UA1_FIFO4=y -# CONFIG_UA1_FIFO8 is not set -# CONFIG_UA1_FIFO16 is not set -# CONFIG_UA1_FIFO32 is not set -CONFIG_IRQ3_ENABLE=y -# CONFIG_IRQ3_SEC is not set -CONFIG_GPT_ENABLE=y -CONFIG_GPT_NTIM=2 -CONFIG_GPT_SW=8 -CONFIG_GPT_TW=32 -CONFIG_GPT_IRQ=8 -CONFIG_GPT_SEPIRQ=y -# CONFIG_GPT_WDOGEN is not set -CONFIG_GRGPIO_ENABLE=y -CONFIG_GRGPIO_WIDTH=12 -CONFIG_GRGPIO_IMASK=0060 - -# -# I2C and SPI -# -CONFIG_I2C_ENABLE=y - -# -# SPI controller(s) -# -CONFIG_SPICTRL_ENABLE=y -CONFIG_SPICTRL_NUM=1 -CONFIG_SPICTRL_SLVS=1 -CONFIG_SPICTRL_FIFO=2 -CONFIG_SPICTRL_SLVREG=y -# CONFIG_SPICTRL_ASEL is not set -# CONFIG_SPICTRL_AM is not set -# CONFIG_SPICTRL_ODMODE is not set -# CONFIG_SPICTRL_TWEN is not set -CONFIG_SPICTRL_MAXWLEN=0 -# CONFIG_SPICTRL_SYNCRAM is not set - -# -# PCI -# -CONFIG_PCI_MASTER_TARGET=y -CONFIG_PCI_MASTER_TARGET_DMA=y -CONFIG_PCI_VENDORID=1AC8 -CONFIG_PCI_DEVICEID=0054 -# CONFIG_PCI_FIFO0 is not set -# CONFIG_PCI_FIFO8 is not set -# CONFIG_PCI_FIFO16 is not set -# CONFIG_PCI_FIFO32 is not set -# CONFIG_PCI_FIFO64 is not set -CONFIG_PCI_FIFO128=y -CONFIG_PCI_HADDR=E00 -CONFIG_PCI_ARBITER=y -CONFIG_PCI_ARBITER_APB=y -CONFIG_PCI_ARBITER_NREQ=8 -CONFIG_PCI_TRACE=y -# CONFIG_PCI_TRACE256 is not set -# CONFIG_PCI_TRACE512 is not set -# CONFIG_PCI_TRACE1024 is not set -# CONFIG_PCI_TRACE2048 is not set -CONFIG_PCI_TRACE4096=y - -# -# VGA interface -# -CONFIG_SVGA_ENABLE=y - -# -# System ACE and System Monitor -# -CONFIG_GRACECTRL=y -# CONFIG_GRSYSMON is not set - -# -# VHDL Debugging -# -# CONFIG_DEBUG_UART is not set diff --git a/designs/leon3-xilinx-ml510/lconfig.tk b/designs/leon3-xilinx-ml510/lconfig.tk index 4ae27c16..b35aa54f 100755 --- a/designs/leon3-xilinx-ml510/lconfig.tk +++ b/designs/leon3-xilinx-ml510/lconfig.tk @@ -644,7 +644,7 @@ set active_menus [list] set processed_top_level 0 set ARCH sparc set menus_per_column 4 -set total_menus 26 +set total_menus 25 proc toplevel_menu {num} { if {$num == 4} then {return 3} @@ -657,15 +657,14 @@ proc toplevel_menu {num} { if {$num == 14} then {return 13} if {$num == 15} then {return 14} if {$num == 16} then {return 14} - if {$num == 17} then {return 14} + if {$num == 17} then {return 13} if {$num == 18} then {return 13} if {$num == 19} then {return 13} if {$num == 20} then {return 13} - if {$num == 21} then {return 13} - if {$num == 22} then {return 21} + if {$num == 21} then {return 20} + if {$num == 22} then {return 13} if {$num == 23} then {return 13} if {$num == 24} then {return 13} - if {$num == 25} then {return 13} return $num } @@ -759,7 +758,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -769,7 +769,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -912,8 +914,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -932,6 +936,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1021,9 +1029,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1077,10 +1086,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1126,14 +1136,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1206,13 +1218,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1252,22 +1272,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1324,21 +1612,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1385,36 +1673,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1422,48 +1711,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1519,28 +1809,28 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_7 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x4.x.menu 3 bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1581,20 +1871,21 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1603,38 +1894,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_7 + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1691,92 +1983,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1784,18 +2076,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1836,52 +2128,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1889,162 +2182,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2100,45 +2394,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2178,18 +2474,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2197,55 +2494,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2302,24 +2604,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2359,17 +2661,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2377,37 +2680,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2462,6 +2766,28 @@ proc menu9 {w title} { pack $w.config.canvas -side right -fill y + bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE + menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x1.x.menu 5 + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ + bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN + int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ + bool $w.config.f 9 6 "Use LEON3FT netlist " CONFIG_LEON3_NETLIST @@ -2499,12 +2825,65 @@ proc menu9 {w title} { } proc update_menu9 {} { + global CONFIG_LEON3 + global CONFIG_LEON3FT_EN + if {($CONFIG_LEON3 == 1)} then { + configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} + global CONFIG_FPU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} + global CONFIG_RF_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} + global CONFIG_CACHE_FT_EN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + configure_entry .menu9.config.f.x4 normal {n l y}} else {configure_entry .menu9.config.f.x4 disabled {y n l}} + global CONFIG_CACHE_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {.menu9.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu9.config.f.x5.l configure -state normal; } else {.menu9.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu9.config.f.x5.l configure -state disabled} + global CONFIG_LEON3_NETLIST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + configure_entry .menu9.config.f.x6 normal {n l y}} else {configure_entry .menu9.config.f.x6 disabled {y n l}} } proc update_define_menu9 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_LEON3 + global CONFIG_LEON3FT_EN + if {($CONFIG_LEON3 == 1)} then { + set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} + global tmpvar_26 + global CONFIG_IUFT_NONE + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + global CONFIG_IUFT_PAR + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + global CONFIG_IUFT_DMR + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + global CONFIG_IUFT_BCH + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + global CONFIG_IUFT_TMR + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} + global CONFIG_RF_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} + global CONFIG_CACHE_FT_EN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + set CONFIG_CACHE_FT_EN [expr $CONFIG_CACHE_FT_EN&15]} else {set CONFIG_CACHE_FT_EN [expr $CONFIG_CACHE_FT_EN|16]} + global CONFIG_CACHE_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {validate_int CONFIG_CACHE_ERRINJ "$CONFIG_CACHE_ERRINJ" 0} + global CONFIG_LEON3_NETLIST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + set CONFIG_LEON3_NETLIST [expr $CONFIG_LEON3_NETLIST&15]} else {set CONFIG_LEON3_NETLIST [expr $CONFIG_LEON3_NETLIST|16]} } @@ -2682,12 +3061,13 @@ proc menu11 {w title} { int $w.config.f 11 0 "Default AHB master" CONFIG_AHB_DEFMST bool $w.config.f 11 1 "Round-robin arbiter " CONFIG_AHB_RROBIN bool $w.config.f 11 2 "AHB split-transaction support " CONFIG_AHB_SPLIT - hex $w.config.f 11 3 "I/O area start address (haddr\[31:20\]) " CONFIG_AHB_IOADDR - hex $w.config.f 11 4 "AHB/APB bridge address (haddr\[31:20\]) " CONFIG_APB_HADDR - bool $w.config.f 11 5 "Enable AMBA AHB monitor " CONFIG_AHB_MON - bool $w.config.f 11 6 "Report AHB errors " CONFIG_AHB_MONERR - bool $w.config.f 11 7 "Report AHB warings " CONFIG_AHB_MONWAR - bool $w.config.f 11 8 "Write trace to simulation console " CONFIG_AHB_DTRACE + bool $w.config.f 11 3 "Enable full plug&play decoding " CONFIG_AHB_FPNPEN + hex $w.config.f 11 4 "I/O area start address (haddr\[31:20\]) " CONFIG_AHB_IOADDR + hex $w.config.f 11 5 "AHB/APB bridge address (haddr\[31:20\]) " CONFIG_APB_HADDR + bool $w.config.f 11 6 "Enable AMBA AHB monitor " CONFIG_AHB_MON + bool $w.config.f 11 7 "Report AHB errors " CONFIG_AHB_MONERR + bool $w.config.f 11 8 "Report AHB warings " CONFIG_AHB_MONWAR + bool $w.config.f 11 9 "Write trace to simulation console " CONFIG_AHB_DTRACE @@ -2727,10 +3107,10 @@ proc update_menu11 {} { global CONFIG_AHB_MON global CONFIG_AHB_MONERR if {($CONFIG_AHB_MON == 1)} then { - configure_entry .menu11.config.f.x6 normal {n l y}} else {configure_entry .menu11.config.f.x6 disabled {y n l}} + configure_entry .menu11.config.f.x7 normal {n l y}} else {configure_entry .menu11.config.f.x7 disabled {y n l}} global CONFIG_AHB_MONWAR if {($CONFIG_AHB_MON == 1)} then { - configure_entry .menu11.config.f.x7 normal {n l y}} else {configure_entry .menu11.config.f.x7 disabled {y n l}} + configure_entry .menu11.config.f.x8 normal {n l y}} else {configure_entry .menu11.config.f.x8 disabled {y n l}} } @@ -2801,14 +3181,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2882,17 +3262,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -2963,13 +3343,13 @@ proc menu13 {w title} { submenu $w.config.f 13 0 "Memory controller " 14 - submenu $w.config.f 13 1 "On-chip RAM/ROM " 18 - submenu $w.config.f 13 2 "Ethernet " 19 - submenu $w.config.f 13 3 "UART, timer, I/O port and interrupt controller" 20 - submenu $w.config.f 13 4 "I2C and SPI " 21 - submenu $w.config.f 13 5 "PCI " 23 - submenu $w.config.f 13 6 "VGA interface" 24 - submenu $w.config.f 13 7 "System ACE and System Monitor" 25 + submenu $w.config.f 13 1 "On-chip RAM/ROM " 17 + submenu $w.config.f 13 2 "Ethernet " 18 + submenu $w.config.f 13 3 "UART, timer, I/O port and interrupt controller" 19 + submenu $w.config.f 13 4 "I2C and SPI " 20 + submenu $w.config.f 13 5 "PCI " 22 + submenu $w.config.f 13 6 "VGA interface" 23 + submenu $w.config.f 13 7 "System ACE and System Monitor" 24 @@ -3067,10 +3447,9 @@ proc menu14 {w title} { submenu $w.config.f 14 0 "Leon2 memory controller " 15 - submenu $w.config.f 14 1 "Xilinx MIG DDR2 controller " 16 - submenu $w.config.f 14 2 "DDR2 SDRAM controller " 17 - bool $w.config.f 14 3 "Enable AHB Status Register " CONFIG_AHBSTAT_ENABLE - int $w.config.f 14 4 "Number of correctable-error slaves " CONFIG_AHBSTAT_NFTSLV + submenu $w.config.f 14 1 "DDR2 SDRAM controller " 16 + bool $w.config.f 14 2 "Enable AHB Status Register " CONFIG_AHBSTAT_ENABLE + int $w.config.f 14 3 "Number of correctable-error slaves " CONFIG_AHBSTAT_NFTSLV @@ -3110,7 +3489,7 @@ proc menu14 {w title} { proc update_menu14 {} { global CONFIG_AHBSTAT_ENABLE global CONFIG_AHBSTAT_NFTSLV - if {($CONFIG_AHBSTAT_ENABLE == 1)} then {.menu14.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu14.config.f.x4.l configure -state normal; } else {.menu14.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu14.config.f.x4.l configure -state disabled} + if {($CONFIG_AHBSTAT_ENABLE == 1)} then {.menu14.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu14.config.f.x3.l configure -state normal; } else {.menu14.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu14.config.f.x3.l configure -state disabled} } @@ -3295,12 +3674,12 @@ proc menu16 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 16]] message $w.m -width 400 -aspect 300 -text \ - "Xilinx MIG DDR2 controller " -relief raised + "DDR2 SDRAM controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "Xilinx MIG DDR2 controller " + wm title $w "DDR2 SDRAM controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 16; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 16; menu17 .menu17 \"$title\"" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 16; catch {destroy .menu14}; unregister_active 14; menu17 .menu17 \"$title\"" frame $w.f button $w.f.back -text "OK" \ -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 16" @@ -3337,7 +3716,28 @@ proc menu16 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 16 0 "Enable Xilinx MIG DDR2/3 controller" CONFIG_MIG_DDR2 + bool $w.config.f 16 0 "Enable DDR2 SDRAM controller " CONFIG_DDR2SP + bool $w.config.f 16 1 "Enable power-on initialization " CONFIG_DDR2SP_INIT + bool $w.config.f 16 2 "DDR clock is aligned to system clock " CONFIG_DDR2SP_NOSYNC + int $w.config.f 16 3 "Memory frequency (MHz) " CONFIG_DDR2SP_FREQ + int $w.config.f 16 4 "Refresh to Activate (tRFC) in ns " CONFIG_DDR2SP_TRFC + int $w.config.f 16 5 "Column address bits (9 - 12) " CONFIG_DDR2SP_COL + int $w.config.f 16 6 "Chip select bank size (Mbyte) " CONFIG_DDR2SP_MBYTE + int $w.config.f 16 7 "Data width (64, 32, 16) bit " CONFIG_DDR2SP_DATAWIDTH + bool $w.config.f 16 8 "Fault-tolerant DDR2 controller " CONFIG_DDR2SP_FTEN + int $w.config.f 16 9 "Checkbits width (32,16,8) bit " CONFIG_DDR2SP_FTWIDTH + int $w.config.f 16 10 "Input pad delay for bits 7:0 (0 - 63)" CONFIG_DDR2SP_DELAY0 + int $w.config.f 16 11 "Input pad delay for bits 15:8 (0 - 63)" CONFIG_DDR2SP_DELAY1 + int $w.config.f 16 12 "Input pad delay for bits 23:16 (0 - 63)" CONFIG_DDR2SP_DELAY2 + int $w.config.f 16 13 "Input pad delay for bits 31:24 (0 - 63)" CONFIG_DDR2SP_DELAY3 + int $w.config.f 16 14 "Input pad delay for bits 39:32 (0 - 63)" CONFIG_DDR2SP_DELAY4 + int $w.config.f 16 15 "Input pad delay for bits 47:40 (0 - 63)" CONFIG_DDR2SP_DELAY5 + int $w.config.f 16 16 "Input pad delay for bits 55:48 (0 - 63)" CONFIG_DDR2SP_DELAY6 + int $w.config.f 16 17 "Input pad delay for bits 63:56 (0 - 63)" CONFIG_DDR2SP_DELAY7 + int $w.config.f 16 18 "Input pad delay for checkbits 7:0 (0 - 63)" CONFIG_DDR2SP_CBDELAY0 + int $w.config.f 16 19 "Input pad delay for checkbits 15:8 (0 - 63)" CONFIG_DDR2SP_CBDELAY1 + int $w.config.f 16 20 "Input pad delay for checkbits 23:16 (0 - 63)" CONFIG_DDR2SP_CBDELAY2 + int $w.config.f 16 21 "Input pad delay for checkbits 31:24 (0 - 63)" CONFIG_DDR2SP_CBDELAY3 @@ -3375,30 +3775,128 @@ proc menu16 {w title} { } proc update_menu16 {} { + global CONFIG_MIG_DDR2 + global CONFIG_DDR2SP + if {($CONFIG_MIG_DDR2 != 1)} then { + configure_entry .menu16.config.f.x0 normal {n l y}} else {configure_entry .menu16.config.f.x0 disabled {y n l}} + global CONFIG_DDR2SP_INIT + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then { + configure_entry .menu16.config.f.x1 normal {n l y}} else {configure_entry .menu16.config.f.x1 disabled {y n l}} + global CONFIG_DDR2SP_NOSYNC + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then { + configure_entry .menu16.config.f.x2 normal {n l y}} else {configure_entry .menu16.config.f.x2 disabled {y n l}} + global CONFIG_DDR2SP_FREQ + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_NOSYNC == 0)} then {.menu16.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x3.l configure -state normal; } else {.menu16.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x3.l configure -state disabled} + global CONFIG_DDR2SP_TRFC + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {.menu16.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x4.l configure -state normal; } else {.menu16.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x4.l configure -state disabled} + global CONFIG_DDR2SP_COL + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {.menu16.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x5.l configure -state normal; } else {.menu16.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x5.l configure -state disabled} + global CONFIG_DDR2SP_MBYTE + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {.menu16.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x6.l configure -state normal; } else {.menu16.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x6.l configure -state disabled} + global CONFIG_DDR2SP_DATAWIDTH + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {.menu16.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x7.l configure -state normal; } else {.menu16.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x7.l configure -state disabled} + global CONFIG_DDR2SP_FTEN + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then { + configure_entry .menu16.config.f.x8 normal {n l y}} else {configure_entry .menu16.config.f.x8 disabled {y n l}} + global CONFIG_DDR2SP_FTWIDTH + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {.menu16.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x9.l configure -state normal; } else {.menu16.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x9.l configure -state disabled} + global CONFIG_DDR2SP_DELAY0 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {.menu16.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x10.l configure -state normal; } else {.menu16.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x10.l configure -state disabled} + global CONFIG_DDR2SP_DELAY1 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {.menu16.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x11.l configure -state normal; } else {.menu16.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x11.l configure -state disabled} + global CONFIG_DDR2SP_DELAY2 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {.menu16.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x12.l configure -state normal; } else {.menu16.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x12.l configure -state disabled} + global CONFIG_DDR2SP_DELAY3 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {.menu16.config.f.x13.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x13.l configure -state normal; } else {.menu16.config.f.x13.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x13.l configure -state disabled} + global CONFIG_DDR2SP_DELAY4 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {.menu16.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x14.l configure -state normal; } else {.menu16.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x14.l configure -state disabled} + global CONFIG_DDR2SP_DELAY5 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {.menu16.config.f.x15.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x15.l configure -state normal; } else {.menu16.config.f.x15.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x15.l configure -state disabled} + global CONFIG_DDR2SP_DELAY6 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {.menu16.config.f.x16.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x16.l configure -state normal; } else {.menu16.config.f.x16.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x16.l configure -state disabled} + global CONFIG_DDR2SP_DELAY7 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {.menu16.config.f.x17.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x17.l configure -state normal; } else {.menu16.config.f.x17.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x17.l configure -state disabled} + global CONFIG_DDR2SP_CBDELAY0 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {.menu16.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x18.l configure -state normal; } else {.menu16.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x18.l configure -state disabled} + global CONFIG_DDR2SP_CBDELAY1 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {.menu16.config.f.x19.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x19.l configure -state normal; } else {.menu16.config.f.x19.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x19.l configure -state disabled} + global CONFIG_DDR2SP_CBDELAY2 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {.menu16.config.f.x20.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x20.l configure -state normal; } else {.menu16.config.f.x20.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x20.l configure -state disabled} + global CONFIG_DDR2SP_CBDELAY3 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {.menu16.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x21.l configure -state normal; } else {.menu16.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x21.l configure -state disabled} } proc update_define_menu16 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_MIG_DDR2 + global CONFIG_DDR2SP + if {($CONFIG_MIG_DDR2 != 1)} then { + set CONFIG_DDR2SP [expr $CONFIG_DDR2SP&15]} else {set CONFIG_DDR2SP [expr $CONFIG_DDR2SP|16]} + global CONFIG_DDR2SP_INIT + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then { + set CONFIG_DDR2SP_INIT [expr $CONFIG_DDR2SP_INIT&15]} else {set CONFIG_DDR2SP_INIT [expr $CONFIG_DDR2SP_INIT|16]} + global CONFIG_DDR2SP_NOSYNC + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then { + set CONFIG_DDR2SP_NOSYNC [expr $CONFIG_DDR2SP_NOSYNC&15]} else {set CONFIG_DDR2SP_NOSYNC [expr $CONFIG_DDR2SP_NOSYNC|16]} + global CONFIG_DDR2SP_FREQ + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_NOSYNC == 0)} then {validate_int CONFIG_DDR2SP_FREQ "$CONFIG_DDR2SP_FREQ" 100} + global CONFIG_DDR2SP_TRFC + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_TRFC "$CONFIG_DDR2SP_TRFC" 130} + global CONFIG_DDR2SP_COL + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {validate_int CONFIG_DDR2SP_COL "$CONFIG_DDR2SP_COL" 9} + global CONFIG_DDR2SP_MBYTE + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {validate_int CONFIG_DDR2SP_MBYTE "$CONFIG_DDR2SP_MBYTE" 16} + global CONFIG_DDR2SP_DATAWIDTH + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DATAWIDTH "$CONFIG_DDR2SP_DATAWIDTH" 64} + global CONFIG_DDR2SP_FTEN + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then { + set CONFIG_DDR2SP_FTEN [expr $CONFIG_DDR2SP_FTEN&15]} else {set CONFIG_DDR2SP_FTEN [expr $CONFIG_DDR2SP_FTEN|16]} + global CONFIG_DDR2SP_FTWIDTH + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {validate_int CONFIG_DDR2SP_FTWIDTH "$CONFIG_DDR2SP_FTWIDTH" 32} + global CONFIG_DDR2SP_DELAY0 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY0 "$CONFIG_DDR2SP_DELAY0" 0} + global CONFIG_DDR2SP_DELAY1 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY1 "$CONFIG_DDR2SP_DELAY1" 0} + global CONFIG_DDR2SP_DELAY2 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY2 "$CONFIG_DDR2SP_DELAY2" 0} + global CONFIG_DDR2SP_DELAY3 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY3 "$CONFIG_DDR2SP_DELAY3" 0} + global CONFIG_DDR2SP_DELAY4 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY4 "$CONFIG_DDR2SP_DELAY4" 0} + global CONFIG_DDR2SP_DELAY5 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY5 "$CONFIG_DDR2SP_DELAY5" 0} + global CONFIG_DDR2SP_DELAY6 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY6 "$CONFIG_DDR2SP_DELAY6" 0} + global CONFIG_DDR2SP_DELAY7 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY7 "$CONFIG_DDR2SP_DELAY7" 0} + global CONFIG_DDR2SP_CBDELAY0 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {validate_int CONFIG_DDR2SP_CBDELAY0 "$CONFIG_DDR2SP_CBDELAY0" 0} + global CONFIG_DDR2SP_CBDELAY1 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {validate_int CONFIG_DDR2SP_CBDELAY1 "$CONFIG_DDR2SP_CBDELAY1" 0} + global CONFIG_DDR2SP_CBDELAY2 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {validate_int CONFIG_DDR2SP_CBDELAY2 "$CONFIG_DDR2SP_CBDELAY2" 0} + global CONFIG_DDR2SP_CBDELAY3 + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {validate_int CONFIG_DDR2SP_CBDELAY3 "$CONFIG_DDR2SP_CBDELAY3" 0} } proc menu17 {w title} { set oldFocus [focus] - catch {focus .menu14} + catch {focus .menu13} catch {destroy $w; unregister_active 17} toplevel $w -class Dialog wm withdraw $w global active_menus set active_menus [lsort -integer [linsert $active_menus end 17]] message $w.m -width 400 -aspect 300 -text \ - "DDR2 SDRAM controller " -relief raised + "On-chip RAM/ROM " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "DDR2 SDRAM controller " + wm title $w "On-chip RAM/ROM " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 17; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 17; catch {destroy .menu14}; unregister_active 14; menu18 .menu18 \"$title\"" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 17; menu18 .menu18 \"$title\"" frame $w.f button $w.f.back -text "OK" \ -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 17" @@ -3435,36 +3933,30 @@ proc menu17 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 17 0 "Enable DDR2 SDRAM controller " CONFIG_DDR2SP - bool $w.config.f 17 1 "Enable power-on initialization " CONFIG_DDR2SP_INIT - bool $w.config.f 17 2 "DDR clock is aligned to system clock " CONFIG_DDR2SP_NOSYNC - int $w.config.f 17 3 "Memory frequency (MHz) " CONFIG_DDR2SP_FREQ - int $w.config.f 17 4 "Refresh to Activate (tRFC) in ns " CONFIG_DDR2SP_TRFC - int $w.config.f 17 5 "Column address bits (9 - 12) " CONFIG_DDR2SP_COL - int $w.config.f 17 6 "Chip select bank size (Mbyte) " CONFIG_DDR2SP_MBYTE - int $w.config.f 17 7 "Data width (64, 32, 16) bit " CONFIG_DDR2SP_DATAWIDTH - bool $w.config.f 17 8 "Fault-tolerant DDR2 controller " CONFIG_DDR2SP_FTEN - int $w.config.f 17 9 "Checkbits width (32,16,8) bit " CONFIG_DDR2SP_FTWIDTH - int $w.config.f 17 10 "Input pad delay for bits 7:0 (0 - 63)" CONFIG_DDR2SP_DELAY0 - int $w.config.f 17 11 "Input pad delay for bits 15:8 (0 - 63)" CONFIG_DDR2SP_DELAY1 - int $w.config.f 17 12 "Input pad delay for bits 23:16 (0 - 63)" CONFIG_DDR2SP_DELAY2 - int $w.config.f 17 13 "Input pad delay for bits 31:24 (0 - 63)" CONFIG_DDR2SP_DELAY3 - int $w.config.f 17 14 "Input pad delay for bits 39:32 (0 - 63)" CONFIG_DDR2SP_DELAY4 - int $w.config.f 17 15 "Input pad delay for bits 47:40 (0 - 63)" CONFIG_DDR2SP_DELAY5 - int $w.config.f 17 16 "Input pad delay for bits 55:48 (0 - 63)" CONFIG_DDR2SP_DELAY6 - int $w.config.f 17 17 "Input pad delay for bits 63:56 (0 - 63)" CONFIG_DDR2SP_DELAY7 - int $w.config.f 17 18 "Input pad delay for checkbits 7:0 (0 - 63)" CONFIG_DDR2SP_CBDELAY0 - int $w.config.f 17 19 "Input pad delay for checkbits 15:8 (0 - 63)" CONFIG_DDR2SP_CBDELAY1 - int $w.config.f 17 20 "Input pad delay for checkbits 23:16 (0 - 63)" CONFIG_DDR2SP_CBDELAY2 - int $w.config.f 17 21 "Input pad delay for checkbits 31:24 (0 - 63)" CONFIG_DDR2SP_CBDELAY3 + bool $w.config.f 17 0 "On-chip AHB ROM " CONFIG_AHBROM_ENABLE + hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START + bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE + bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE + global tmpvar_29 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 + menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 7 + hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START focus $w update_active global winx; global winy - if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controller "} - set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30] + if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} + set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f @@ -3494,225 +3986,20 @@ proc menu17 {w title} { } proc update_menu17 {} { - global CONFIG_DDR2SP - global CONFIG_DDR2SP_INIT - if {($CONFIG_DDR2SP == 1)} then { - configure_entry .menu17.config.f.x1 normal {n l y}} else {configure_entry .menu17.config.f.x1 disabled {y n l}} - global CONFIG_DDR2SP_NOSYNC - if {($CONFIG_DDR2SP == 1)} then { + global CONFIG_AHBROM_ENABLE + global CONFIG_AHBROM_START + if {($CONFIG_AHBROM_ENABLE == 1)} then {.menu17.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x1.l configure -state normal; } else {.menu17.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x1.l configure -state disabled} + global CONFIG_AHBROM_PIPE + if {($CONFIG_AHBROM_ENABLE == 1)} then { configure_entry .menu17.config.f.x2 normal {n l y}} else {configure_entry .menu17.config.f.x2 disabled {y n l}} - global CONFIG_DDR2SP_FREQ - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_NOSYNC == 0)} then {.menu17.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x3.l configure -state normal; } else {.menu17.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x3.l configure -state disabled} - global CONFIG_DDR2SP_TRFC - if {($CONFIG_DDR2SP == 1)} then {.menu17.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x4.l configure -state normal; } else {.menu17.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x4.l configure -state disabled} - global CONFIG_DDR2SP_COL - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {.menu17.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x5.l configure -state normal; } else {.menu17.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x5.l configure -state disabled} - global CONFIG_DDR2SP_MBYTE - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {.menu17.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x6.l configure -state normal; } else {.menu17.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x6.l configure -state disabled} - global CONFIG_DDR2SP_DATAWIDTH - if {($CONFIG_DDR2SP == 1)} then {.menu17.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x7.l configure -state normal; } else {.menu17.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x7.l configure -state disabled} - global CONFIG_DDR2SP_FTEN - if {($CONFIG_DDR2SP == 1)} then { - configure_entry .menu17.config.f.x8 normal {n l y}} else {configure_entry .menu17.config.f.x8 disabled {y n l}} - global CONFIG_DDR2SP_FTWIDTH - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {.menu17.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x9.l configure -state normal; } else {.menu17.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x9.l configure -state disabled} - global CONFIG_DDR2SP_DELAY0 - if {($CONFIG_DDR2SP == 1)} then {.menu17.config.f.x10.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x10.l configure -state normal; } else {.menu17.config.f.x10.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x10.l configure -state disabled} - global CONFIG_DDR2SP_DELAY1 - if {($CONFIG_DDR2SP == 1)} then {.menu17.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x11.l configure -state normal; } else {.menu17.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x11.l configure -state disabled} - global CONFIG_DDR2SP_DELAY2 - if {($CONFIG_DDR2SP == 1)} then {.menu17.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x12.l configure -state normal; } else {.menu17.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x12.l configure -state disabled} - global CONFIG_DDR2SP_DELAY3 - if {($CONFIG_DDR2SP == 1)} then {.menu17.config.f.x13.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x13.l configure -state normal; } else {.menu17.config.f.x13.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x13.l configure -state disabled} - global CONFIG_DDR2SP_DELAY4 - if {($CONFIG_DDR2SP == 1)} then {.menu17.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x14.l configure -state normal; } else {.menu17.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x14.l configure -state disabled} - global CONFIG_DDR2SP_DELAY5 - if {($CONFIG_DDR2SP == 1)} then {.menu17.config.f.x15.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x15.l configure -state normal; } else {.menu17.config.f.x15.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x15.l configure -state disabled} - global CONFIG_DDR2SP_DELAY6 - if {($CONFIG_DDR2SP == 1)} then {.menu17.config.f.x16.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x16.l configure -state normal; } else {.menu17.config.f.x16.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x16.l configure -state disabled} - global CONFIG_DDR2SP_DELAY7 - if {($CONFIG_DDR2SP == 1)} then {.menu17.config.f.x17.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x17.l configure -state normal; } else {.menu17.config.f.x17.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x17.l configure -state disabled} - global CONFIG_DDR2SP_CBDELAY0 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {.menu17.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x18.l configure -state normal; } else {.menu17.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x18.l configure -state disabled} - global CONFIG_DDR2SP_CBDELAY1 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {.menu17.config.f.x19.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x19.l configure -state normal; } else {.menu17.config.f.x19.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x19.l configure -state disabled} - global CONFIG_DDR2SP_CBDELAY2 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {.menu17.config.f.x20.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x20.l configure -state normal; } else {.menu17.config.f.x20.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x20.l configure -state disabled} - global CONFIG_DDR2SP_CBDELAY3 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {.menu17.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x21.l configure -state normal; } else {.menu17.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x21.l configure -state disabled} -} - - -proc update_define_menu17 {} { - update_define_mainmenu - global CONFIG_MODULES - global CONFIG_DDR2SP - global CONFIG_DDR2SP_INIT - if {($CONFIG_DDR2SP == 1)} then { - set CONFIG_DDR2SP_INIT [expr $CONFIG_DDR2SP_INIT&15]} else {set CONFIG_DDR2SP_INIT [expr $CONFIG_DDR2SP_INIT|16]} - global CONFIG_DDR2SP_NOSYNC - if {($CONFIG_DDR2SP == 1)} then { - set CONFIG_DDR2SP_NOSYNC [expr $CONFIG_DDR2SP_NOSYNC&15]} else {set CONFIG_DDR2SP_NOSYNC [expr $CONFIG_DDR2SP_NOSYNC|16]} - global CONFIG_DDR2SP_FREQ - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_NOSYNC == 0)} then {validate_int CONFIG_DDR2SP_FREQ "$CONFIG_DDR2SP_FREQ" 100} - global CONFIG_DDR2SP_TRFC - if {($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_TRFC "$CONFIG_DDR2SP_TRFC" 130} - global CONFIG_DDR2SP_COL - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {validate_int CONFIG_DDR2SP_COL "$CONFIG_DDR2SP_COL" 9} - global CONFIG_DDR2SP_MBYTE - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {validate_int CONFIG_DDR2SP_MBYTE "$CONFIG_DDR2SP_MBYTE" 16} - global CONFIG_DDR2SP_DATAWIDTH - if {($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DATAWIDTH "$CONFIG_DDR2SP_DATAWIDTH" 64} - global CONFIG_DDR2SP_FTEN - if {($CONFIG_DDR2SP == 1)} then { - set CONFIG_DDR2SP_FTEN [expr $CONFIG_DDR2SP_FTEN&15]} else {set CONFIG_DDR2SP_FTEN [expr $CONFIG_DDR2SP_FTEN|16]} - global CONFIG_DDR2SP_FTWIDTH - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {validate_int CONFIG_DDR2SP_FTWIDTH "$CONFIG_DDR2SP_FTWIDTH" 32} - global CONFIG_DDR2SP_DELAY0 - if {($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY0 "$CONFIG_DDR2SP_DELAY0" 0} - global CONFIG_DDR2SP_DELAY1 - if {($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY1 "$CONFIG_DDR2SP_DELAY1" 0} - global CONFIG_DDR2SP_DELAY2 - if {($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY2 "$CONFIG_DDR2SP_DELAY2" 0} - global CONFIG_DDR2SP_DELAY3 - if {($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY3 "$CONFIG_DDR2SP_DELAY3" 0} - global CONFIG_DDR2SP_DELAY4 - if {($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY4 "$CONFIG_DDR2SP_DELAY4" 0} - global CONFIG_DDR2SP_DELAY5 - if {($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY5 "$CONFIG_DDR2SP_DELAY5" 0} - global CONFIG_DDR2SP_DELAY6 - if {($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY6 "$CONFIG_DDR2SP_DELAY6" 0} - global CONFIG_DDR2SP_DELAY7 - if {($CONFIG_DDR2SP == 1)} then {validate_int CONFIG_DDR2SP_DELAY7 "$CONFIG_DDR2SP_DELAY7" 0} - global CONFIG_DDR2SP_CBDELAY0 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {validate_int CONFIG_DDR2SP_CBDELAY0 "$CONFIG_DDR2SP_CBDELAY0" 0} - global CONFIG_DDR2SP_CBDELAY1 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {validate_int CONFIG_DDR2SP_CBDELAY1 "$CONFIG_DDR2SP_CBDELAY1" 0} - global CONFIG_DDR2SP_CBDELAY2 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {validate_int CONFIG_DDR2SP_CBDELAY2 "$CONFIG_DDR2SP_CBDELAY2" 0} - global CONFIG_DDR2SP_CBDELAY3 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {validate_int CONFIG_DDR2SP_CBDELAY3 "$CONFIG_DDR2SP_CBDELAY3" 0} -} - - -proc menu18 {w title} { - set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 18} - toplevel $w -class Dialog - wm withdraw $w - global active_menus - set active_menus [lsort -integer [linsert $active_menus end 18]] - message $w.m -width 400 -aspect 300 -text \ - "On-chip RAM/ROM " -relief raised - pack $w.m -pady 10 -side top -padx 10 - wm title $w "On-chip RAM/ROM " - - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu19 .menu19 \"$title\"" - frame $w.f - button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18" - button $w.f.next -text "Next" -underline 0\ - -width 15 -command $nextscript - bind all $nextscript - button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu17 .menu17 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu17 .menu17 \"$title\";break" - pack $w.f.back $w.f.next $w.f.prev -side left -expand on - pack $w.f -pady 10 -side bottom -anchor w -fill x - frame $w.topline -relief ridge -borderwidth 2 -height 2 - pack $w.topline -side top -fill x - - frame $w.botline -relief ridge -borderwidth 2 -height 2 - pack $w.botline -side bottom -fill x - - frame $w.config - pack $w.config -fill y -expand on - - scrollbar $w.config.vscroll -command "$w.config.canvas yview" - pack $w.config.vscroll -side right -fill y - - canvas $w.config.canvas -height 1\ - -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ - -width [expr [winfo screenwidth .] * 1 / 2] - frame $w.config.f - bind $w "$w.config.canvas yview scroll 1 unit;break;" - bind $w "$w.config.canvas yview scroll -1 unit;break;" - bind $w "$w.config.canvas yview scroll 1 page;break;" - bind $w "$w.config.canvas yview scroll -1 page;break;" - bind $w "$w.config.canvas yview moveto 0;break;" - bind $w "$w.config.canvas yview moveto 1 ;break;" - pack $w.config.canvas -side right -fill y - - - bool $w.config.f 18 0 "On-chip AHB ROM " CONFIG_AHBROM_ENABLE - hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START - bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE - bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 - menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 7 - hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START - - - - focus $w - update_active - global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] - if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} - update idletasks - if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f - - $w.config.canvas configure \ - -width [expr [winfo reqwidth $w.config.f] + 1]\ - -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ - [expr [winfo reqheight $w.config.f] + 1]" - - set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] - set scry [expr [winfo screenh $w] / 2] - set maxy [expr [winfo screenh $w] * 3 / 4] - set canvtotal [expr [winfo reqh $w.config.f] + 2] - if [expr $winy + $canvtotal < $maxy] { - $w.config.canvas configure -height $canvtotal - } else { - $w.config.canvas configure -height [expr $scry - $winy] - } - } - update idletasks - if {[winfo exists $w]} then { - wm maxsize $w [winfo width $w] [winfo screenheight $w] - wm minsize $w [winfo width $w] 100 - - wm deiconify $w -} -} - -proc update_menu18 {} { - global CONFIG_AHBROM_ENABLE - global CONFIG_AHBROM_START - if {($CONFIG_AHBROM_ENABLE == 1)} then {.menu18.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x1.l configure -state normal; } else {.menu18.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x1.l configure -state disabled} - global CONFIG_AHBROM_PIPE - if {($CONFIG_AHBROM_ENABLE == 1)} then { - configure_entry .menu18.config.f.x2 normal {n l y}} else {configure_entry .menu18.config.f.x2 disabled {y n l}} global CONFIG_AHBRAM_ENABLE - if {($CONFIG_AHBRAM_ENABLE == 1)} then {configure_entry .menu18.config.f.x4 normal {x l}} else {configure_entry .menu18.config.f.x4 disabled {x l}} + if {($CONFIG_AHBRAM_ENABLE == 1)} then {configure_entry .menu17.config.f.x4 normal {x l}} else {configure_entry .menu17.config.f.x4 disabled {x l}} global CONFIG_AHBRAM_START - if {($CONFIG_AHBRAM_ENABLE == 1)} then {.menu18.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu18.config.f.x5.l configure -state normal; } else {.menu18.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu18.config.f.x5.l configure -state disabled} + if {($CONFIG_AHBRAM_ENABLE == 1)} then {.menu17.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x5.l configure -state normal; } else {.menu17.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x5.l configure -state disabled} } -proc update_define_menu18 {} { +proc update_define_menu17 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_AHBROM_ENABLE @@ -3721,51 +4008,51 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} } -proc menu19 {w title} { +proc menu18 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 19} + catch {destroy $w; unregister_active 18} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 19]] + set active_menus [lsort -integer [linsert $active_menus end 18]] message $w.m -width 400 -aspect 300 -text \ "Ethernet " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "Ethernet " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu20 .menu20 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu19 .menu19 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu17 .menu17 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 18; menu17 .menu17 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -3793,16 +4080,16 @@ proc menu19 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE - bool $w.config.f 19 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + bool $w.config.f 18 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE + bool $w.config.f 18 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA + global tmpvar_30 + minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3840,60 +4127,60 @@ proc menu19 {w title} { } } -proc update_menu19 {} { +proc update_menu18 {} { global CONFIG_GRETH_ENABLE global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { - configure_entry .menu19.config.f.x1 normal {n l y}} else {configure_entry .menu19.config.f.x1 disabled {y n l}} - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then {configure_entry .menu19.config.f.x2 normal {x l}} else {configure_entry .menu19.config.f.x2 disabled {x l}} + configure_entry .menu18.config.f.x1 normal {n l y}} else {configure_entry .menu18.config.f.x1 disabled {y n l}} + if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then {configure_entry .menu18.config.f.x2 normal {x l}} else {configure_entry .menu18.config.f.x2 disabled {x l}} } -proc update_define_menu19 {} { +proc update_define_menu18 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_GRETH_ENABLE global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } -proc menu20 {w title} { +proc menu19 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 20} + catch {destroy $w; unregister_active 19} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 20]] + set active_menus [lsort -integer [linsert $active_menus end 19]] message $w.m -width 400 -aspect 300 -text \ "UART, timer, I/O port and interrupt controller" -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "UART, timer, I/O port and interrupt controller" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu21 .menu21 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu20 .menu20 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 19; menu18 .menu18 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -3921,31 +4208,31 @@ proc menu20 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 20 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE + global tmpvar_31 + minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 - bool $w.config.f 20 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE - bool $w.config.f 20 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC - int $w.config.f 20 4 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC - bool $w.config.f 20 5 "Enable Timer Unit " CONFIG_GPT_ENABLE - int $w.config.f 20 6 "Number of timers (1 - 7) " CONFIG_GPT_NTIM - int $w.config.f 20 7 "Scaler width (2 - 16) " CONFIG_GPT_SW - int $w.config.f 20 8 "Timer width (2 - 32) " CONFIG_GPT_TW - int $w.config.f 20 9 "Timer unit interrupt " CONFIG_GPT_IRQ - bool $w.config.f 20 10 "Separate interrupts " CONFIG_GPT_SEPIRQ - bool $w.config.f 20 11 "Watchdog enable " CONFIG_GPT_WDOGEN - hex $w.config.f 20 12 "Initial watchdog time-out value " CONFIG_GPT_WDOG - bool $w.config.f 20 13 "Enable generic GPIO port " CONFIG_GRGPIO_ENABLE - int $w.config.f 20 14 "GPIO width " CONFIG_GRGPIO_WIDTH - hex $w.config.f 20 15 "GPIO interrupt mask " CONFIG_GRGPIO_IMASK + bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE + bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC + int $w.config.f 19 4 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC + bool $w.config.f 19 5 "Enable Timer Unit " CONFIG_GPT_ENABLE + int $w.config.f 19 6 "Number of timers (1 - 7) " CONFIG_GPT_NTIM + int $w.config.f 19 7 "Scaler width (2 - 16) " CONFIG_GPT_SW + int $w.config.f 19 8 "Timer width (2 - 32) " CONFIG_GPT_TW + int $w.config.f 19 9 "Timer unit interrupt " CONFIG_GPT_IRQ + bool $w.config.f 19 10 "Separate interrupts " CONFIG_GPT_SEPIRQ + bool $w.config.f 19 11 "Watchdog enable " CONFIG_GPT_WDOGEN + hex $w.config.f 19 12 "Initial watchdog time-out value " CONFIG_GPT_WDOG + bool $w.config.f 19 13 "Enable generic GPIO port " CONFIG_GRGPIO_ENABLE + int $w.config.f 19 14 "GPIO width " CONFIG_GRGPIO_WIDTH + hex $w.config.f 19 15 "GPIO interrupt mask " CONFIG_GRGPIO_IMASK @@ -3982,56 +4269,56 @@ proc menu20 {w title} { } } -proc update_menu20 {} { +proc update_menu19 {} { global CONFIG_UART1_ENABLE - if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu20.config.f.x1 normal {x l}} else {configure_entry .menu20.config.f.x1 disabled {x l}} + if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu19.config.f.x1 normal {x l}} else {configure_entry .menu19.config.f.x1 disabled {x l}} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { - configure_entry .menu20.config.f.x3 normal {n l y}} else {configure_entry .menu20.config.f.x3 disabled {y n l}} + configure_entry .menu19.config.f.x3 normal {n l y}} else {configure_entry .menu19.config.f.x3 disabled {y n l}} global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu20.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x4.l configure -state normal; } else {.menu20.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x4.l configure -state disabled} + if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu19.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x4.l configure -state normal; } else {.menu19.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x4.l configure -state disabled} global CONFIG_GPT_ENABLE global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x6.l configure -state normal; } else {.menu20.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x6.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu19.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x6.l configure -state normal; } else {.menu19.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x6.l configure -state disabled} global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x7.l configure -state normal; } else {.menu20.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x7.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu19.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x7.l configure -state normal; } else {.menu19.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x7.l configure -state disabled} global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x8.l configure -state normal; } else {.menu20.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x8.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu19.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x8.l configure -state normal; } else {.menu19.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x8.l configure -state disabled} global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x9.l configure -state normal; } else {.menu20.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x9.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1)} then {.menu19.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x9.l configure -state normal; } else {.menu19.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x9.l configure -state disabled} global CONFIG_GPT_SEPIRQ if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu20.config.f.x10 normal {n l y}} else {configure_entry .menu20.config.f.x10 disabled {y n l}} + configure_entry .menu19.config.f.x10 normal {n l y}} else {configure_entry .menu19.config.f.x10 disabled {y n l}} global CONFIG_GPT_WDOGEN if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu20.config.f.x11 normal {n l y}} else {configure_entry .menu20.config.f.x11 disabled {y n l}} + configure_entry .menu19.config.f.x11 normal {n l y}} else {configure_entry .menu19.config.f.x11 disabled {y n l}} global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu20.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x12.l configure -state normal; } else {.menu20.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x12.l configure -state disabled} + if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu19.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x12.l configure -state normal; } else {.menu19.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x12.l configure -state disabled} global CONFIG_GRGPIO_ENABLE global CONFIG_GRGPIO_WIDTH - if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu20.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x14.l configure -state normal; } else {.menu20.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x14.l configure -state disabled} + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu19.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x14.l configure -state normal; } else {.menu19.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x14.l configure -state disabled} global CONFIG_GRGPIO_IMASK - if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu20.config.f.x15.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x15.l configure -state normal; } else {.menu20.config.f.x15.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x15.l configure -state disabled} + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu19.config.f.x15.x configure -state normal -foreground [ cget .ref -foreground ]; .menu19.config.f.x15.l configure -state normal; } else {.menu19.config.f.x15.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu19.config.f.x15.l configure -state disabled} } -proc update_define_menu20 {} { +proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4063,30 +4350,30 @@ proc update_define_menu20 {} { } -proc menu21 {w title} { +proc menu20 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 21} + catch {destroy $w; unregister_active 20} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 21]] + set active_menus [lsort -integer [linsert $active_menus end 20]] message $w.m -width 400 -aspect 300 -text \ "I2C and SPI " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "I2C and SPI " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; break" - set nextscript "catch {focus $oldFocus}; menu22 .menu22 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; break" + set nextscript "catch {focus $oldFocus}; menu21 .menu21 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu19 .menu19 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4114,8 +4401,8 @@ proc menu21 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 21 0 "Enable I2C master " CONFIG_I2C_ENABLE - submenu $w.config.f 21 1 "SPI controller(s) " 22 + bool $w.config.f 20 0 "Enable I2C master " CONFIG_I2C_ENABLE + submenu $w.config.f 20 1 "SPI controller(s) " 21 @@ -4152,40 +4439,40 @@ proc menu21 {w title} { } } -proc update_menu21 {} { +proc update_menu20 {} { } -proc update_define_menu21 {} { +proc update_define_menu20 {} { update_define_mainmenu global CONFIG_MODULES } -proc menu22 {w title} { +proc menu21 {w title} { set oldFocus [focus] - catch {focus .menu21} - catch {destroy $w; unregister_active 22} + catch {focus .menu20} + catch {destroy $w; unregister_active 21} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 22]] + set active_menus [lsort -integer [linsert $active_menus end 21]] message $w.m -width 400 -aspect 300 -text \ "SPI controller(s) " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "SPI controller(s) " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 22; catch {destroy .menu21}; unregister_active 21; menu23 .menu23 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 21; catch {destroy .menu20}; unregister_active 20; menu22 .menu22 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu20 .menu20 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4213,23 +4500,23 @@ proc menu22 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 22 0 "Enable SPI controller(s) " CONFIG_SPICTRL_ENABLE - int $w.config.f 22 1 "Number of SPI controllers " CONFIG_SPICTRL_NUM - int $w.config.f 22 2 "Slave select lines " CONFIG_SPICTRL_SLVS - int $w.config.f 22 3 "FIFO depth (2^N) " CONFIG_SPICTRL_FIFO - bool $w.config.f 22 4 "Enable slave select registers" CONFIG_SPICTRL_SLVREG - bool $w.config.f 22 5 "Enable automatic slave select" CONFIG_SPICTRL_ASEL - bool $w.config.f 22 6 "Support automated transfers " CONFIG_SPICTRL_AM - bool $w.config.f 22 7 "Support open drain mode " CONFIG_SPICTRL_ODMODE - bool $w.config.f 22 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN - int $w.config.f 22 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN - bool $w.config.f 22 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_30 - minimenu $w.config.f 22 11 "Fault-tolerance" tmpvar_30 CONFIG_SPICTRL_NOFT + bool $w.config.f 21 0 "Enable SPI controller(s) " CONFIG_SPICTRL_ENABLE + int $w.config.f 21 1 "Number of SPI controllers " CONFIG_SPICTRL_NUM + int $w.config.f 21 2 "Slave select lines " CONFIG_SPICTRL_SLVS + int $w.config.f 21 3 "FIFO depth (2^N) " CONFIG_SPICTRL_FIFO + bool $w.config.f 21 4 "Enable slave select registers" CONFIG_SPICTRL_SLVREG + bool $w.config.f 21 5 "Enable automatic slave select" CONFIG_SPICTRL_ASEL + bool $w.config.f 21 6 "Support automated transfers " CONFIG_SPICTRL_AM + bool $w.config.f 21 7 "Support open drain mode " CONFIG_SPICTRL_ODMODE + bool $w.config.f 21 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN + int $w.config.f 21 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN + bool $w.config.f 21 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM + global tmpvar_32 + minimenu $w.config.f 21 11 "Fault-tolerance" tmpvar_32 CONFIG_SPICTRL_NOFT menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_30 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_30 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_30 -value "TMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_32 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_32 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_32 -value "TMR" -command "update_active" menusplit $w $w.config.f.x11.x.menu 3 @@ -4237,8 +4524,8 @@ proc menu22 {w title} { focus $w update_active global winx; global winy - if {[winfo exists .menu21] == 0} then {menu21 .menu21 "I2C and SPI "} - set winx [expr [winfo x .menu21]+30]; set winy [expr [winfo y .menu21]+30] + if {[winfo exists .menu20] == 0} then {menu20 .menu20 "I2C and SPI "} + set winx [expr [winfo x .menu20]+30]; set winy [expr [winfo y .menu20]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f @@ -4267,39 +4554,39 @@ proc menu22 {w title} { } } -proc update_menu22 {} { +proc update_menu21 {} { global CONFIG_SPICTRL_ENABLE global CONFIG_SPICTRL_NUM - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu22.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x1.l configure -state normal; } else {.menu22.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x1.l configure -state disabled} + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu21.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x1.l configure -state normal; } else {.menu21.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x1.l configure -state disabled} global CONFIG_SPICTRL_SLVS - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu22.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x2.l configure -state normal; } else {.menu22.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x2.l configure -state disabled} + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu21.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x2.l configure -state normal; } else {.menu21.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x2.l configure -state disabled} global CONFIG_SPICTRL_FIFO - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu22.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x3.l configure -state normal; } else {.menu22.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x3.l configure -state disabled} + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu21.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x3.l configure -state normal; } else {.menu21.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x3.l configure -state disabled} global CONFIG_SPICTRL_SLVREG if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x4 normal {n l y}} else {configure_entry .menu22.config.f.x4 disabled {y n l}} + configure_entry .menu21.config.f.x4 normal {n l y}} else {configure_entry .menu21.config.f.x4 disabled {y n l}} global CONFIG_SPICTRL_ASEL if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x5 normal {n l y}} else {configure_entry .menu22.config.f.x5 disabled {y n l}} + configure_entry .menu21.config.f.x5 normal {n l y}} else {configure_entry .menu21.config.f.x5 disabled {y n l}} global CONFIG_SPICTRL_AM if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x6 normal {n l y}} else {configure_entry .menu22.config.f.x6 disabled {y n l}} + configure_entry .menu21.config.f.x6 normal {n l y}} else {configure_entry .menu21.config.f.x6 disabled {y n l}} global CONFIG_SPICTRL_ODMODE if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x7 normal {n l y}} else {configure_entry .menu22.config.f.x7 disabled {y n l}} + configure_entry .menu21.config.f.x7 normal {n l y}} else {configure_entry .menu21.config.f.x7 disabled {y n l}} global CONFIG_SPICTRL_TWEN if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x8 normal {n l y}} else {configure_entry .menu22.config.f.x8 disabled {y n l}} + configure_entry .menu21.config.f.x8 normal {n l y}} else {configure_entry .menu21.config.f.x8 disabled {y n l}} global CONFIG_SPICTRL_MAXWLEN - if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu22.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x9.l configure -state normal; } else {.menu22.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x9.l configure -state disabled} + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu21.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x9.l configure -state normal; } else {.menu21.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x9.l configure -state disabled} global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { - configure_entry .menu22.config.f.x10 normal {n l y}} else {configure_entry .menu22.config.f.x10 disabled {y n l}} - if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then {configure_entry .menu22.config.f.x11 normal {x l}} else {configure_entry .menu22.config.f.x11 disabled {x l}} + configure_entry .menu21.config.f.x10 normal {n l y}} else {configure_entry .menu21.config.f.x10 disabled {y n l}} + if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then {configure_entry .menu21.config.f.x11 normal {x l}} else {configure_entry .menu21.config.f.x11 disabled {x l}} } -proc update_define_menu22 {} { +proc update_define_menu21 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_SPICTRL_ENABLE @@ -4329,40 +4616,40 @@ proc update_define_menu22 {} { global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_30 + global tmpvar_32 global CONFIG_SPICTRL_NOFT - if {$tmpvar_30 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + if {$tmpvar_32 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} global CONFIG_SPICTRL_DMRFT - if {$tmpvar_30 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + if {$tmpvar_32 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} global CONFIG_SPICTRL_TMRFT - if {$tmpvar_30 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} + if {$tmpvar_32 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } -proc menu23 {w title} { +proc menu22 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 23} + catch {destroy $w; unregister_active 22} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 23]] + set active_menus [lsort -integer [linsert $active_menus end 22]] message $w.m -width 400 -aspect 300 -text \ "PCI " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "PCI " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu24 .menu24 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu23 .menu23 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4390,33 +4677,33 @@ proc menu23 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 23 0 "PCI interface, master-target " CONFIG_PCI_MASTER_TARGET - bool $w.config.f 23 1 "PCI DMA controller " CONFIG_PCI_MASTER_TARGET_DMA - hex $w.config.f 23 2 "PCI vendor ID" CONFIG_PCI_VENDORID - hex $w.config.f 23 3 "PCI device ID" CONFIG_PCI_DEVICEID - global tmpvar_31 - minimenu $w.config.f 23 4 "PCI FIFO depth" tmpvar_31 CONFIG_PCI_FIFO0 + bool $w.config.f 22 0 "PCI interface, master-target " CONFIG_PCI_MASTER_TARGET + bool $w.config.f 22 1 "PCI DMA controller " CONFIG_PCI_MASTER_TARGET_DMA + hex $w.config.f 22 2 "PCI vendor ID" CONFIG_PCI_VENDORID + hex $w.config.f 22 3 "PCI device ID" CONFIG_PCI_DEVICEID + global tmpvar_33 + minimenu $w.config.f 22 4 "PCI FIFO depth" tmpvar_33 CONFIG_PCI_FIFO0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"PCI FIFO depth\"" - $w.config.f.x4.x.menu add radiobutton -label "None" -variable tmpvar_31 -value "None" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "128" -variable tmpvar_31 -value "128" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "None" -variable tmpvar_33 -value "None" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_33 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "128" -variable tmpvar_33 -value "128" -command "update_active" menusplit $w $w.config.f.x4.x.menu 6 - hex $w.config.f 23 5 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR - bool $w.config.f 23 6 "PCI arbiter " CONFIG_PCI_ARBITER - bool $w.config.f 23 7 "PCI arbiter APB interface " CONFIG_PCI_ARBITER_APB - int $w.config.f 23 8 "Number of PCI REQ/GNT pairs" CONFIG_PCI_ARBITER_NREQ - bool $w.config.f 23 9 "Enable PCI trace buffer " CONFIG_PCI_TRACE - global tmpvar_32 - minimenu $w.config.f 23 10 "PCI trace buffer depth" tmpvar_32 CONFIG_PCI_TRACE256 + hex $w.config.f 22 5 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR + bool $w.config.f 22 6 "PCI arbiter " CONFIG_PCI_ARBITER + bool $w.config.f 22 7 "PCI arbiter APB interface " CONFIG_PCI_ARBITER_APB + int $w.config.f 22 8 "Number of PCI REQ/GNT pairs" CONFIG_PCI_ARBITER_NREQ + bool $w.config.f 22 9 "Enable PCI trace buffer " CONFIG_PCI_TRACE + global tmpvar_34 + minimenu $w.config.f 22 10 "PCI trace buffer depth" tmpvar_34 CONFIG_PCI_TRACE256 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"PCI trace buffer depth\"" - $w.config.f.x10.x.menu add radiobutton -label "256" -variable tmpvar_32 -value "256" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "512" -variable tmpvar_32 -value "512" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "1024" -variable tmpvar_32 -value "1024" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2048" -variable tmpvar_32 -value "2048" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4096" -variable tmpvar_32 -value "4096" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "256" -variable tmpvar_34 -value "256" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "512" -variable tmpvar_34 -value "512" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1024" -variable tmpvar_34 -value "1024" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2048" -variable tmpvar_34 -value "2048" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4096" -variable tmpvar_34 -value "4096" -command "update_active" menusplit $w $w.config.f.x10.x.menu 5 @@ -4454,34 +4741,34 @@ proc menu23 {w title} { } } -proc update_menu23 {} { +proc update_menu22 {} { global CONFIG_PCI_SIMPLE_TARGET global CONFIG_PCI_ACTEL global CONFIG_PCI_MASTER_TARGET if {($CONFIG_PCI_SIMPLE_TARGET != 1 && $CONFIG_PCI_ACTEL != 1)} then { - configure_entry .menu23.config.f.x0 normal {n l y}} else {configure_entry .menu23.config.f.x0 disabled {y n l}} + configure_entry .menu22.config.f.x0 normal {n l y}} else {configure_entry .menu22.config.f.x0 disabled {y n l}} global CONFIG_PCI_MASTER_TARGET_DMA if {($CONFIG_PCI_MASTER_TARGET == 1)} then { - configure_entry .menu23.config.f.x1 normal {n l y}} else {configure_entry .menu23.config.f.x1 disabled {y n l}} + configure_entry .menu22.config.f.x1 normal {n l y}} else {configure_entry .menu22.config.f.x1 disabled {y n l}} global CONFIG_PCI_VENDORID - if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {.menu23.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x2.l configure -state normal; } else {.menu23.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x2.l configure -state disabled} + if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {.menu22.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x2.l configure -state normal; } else {.menu22.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x2.l configure -state disabled} global CONFIG_PCI_DEVICEID - if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {.menu23.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x3.l configure -state normal; } else {.menu23.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x3.l configure -state disabled} - if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {configure_entry .menu23.config.f.x4 normal {x l}} else {configure_entry .menu23.config.f.x4 disabled {x l}} + if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {.menu22.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x3.l configure -state normal; } else {.menu22.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x3.l configure -state disabled} + if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {configure_entry .menu22.config.f.x4 normal {x l}} else {configure_entry .menu22.config.f.x4 disabled {x l}} global CONFIG_PCI_HADDR - if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {.menu23.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x5.l configure -state normal; } else {.menu23.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x5.l configure -state disabled} + if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {.menu22.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x5.l configure -state normal; } else {.menu22.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x5.l configure -state disabled} global CONFIG_PCI_ARBITER global CONFIG_PCI_ARBITER_APB if {($CONFIG_PCI_ARBITER == 1)} then { - configure_entry .menu23.config.f.x7 normal {n l y}} else {configure_entry .menu23.config.f.x7 disabled {y n l}} + configure_entry .menu22.config.f.x7 normal {n l y}} else {configure_entry .menu22.config.f.x7 disabled {y n l}} global CONFIG_PCI_ARBITER_NREQ - if {($CONFIG_PCI_ARBITER == 1)} then {.menu23.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x8.l configure -state normal; } else {.menu23.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x8.l configure -state disabled} + if {($CONFIG_PCI_ARBITER == 1)} then {.menu22.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x8.l configure -state normal; } else {.menu22.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x8.l configure -state disabled} global CONFIG_PCI_TRACE - if {($CONFIG_PCI_TRACE == 1)} then {configure_entry .menu23.config.f.x10 normal {x l}} else {configure_entry .menu23.config.f.x10 disabled {x l}} + if {($CONFIG_PCI_TRACE == 1)} then {configure_entry .menu22.config.f.x10 normal {x l}} else {configure_entry .menu22.config.f.x10 disabled {x l}} } -proc update_define_menu23 {} { +proc update_define_menu22 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_PCI_SIMPLE_TARGET @@ -4496,19 +4783,19 @@ proc update_define_menu23 {} { if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_VENDORID "$CONFIG_PCI_VENDORID" 1AC8} global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_DEVICEID "$CONFIG_PCI_DEVICEID" 0054} - global tmpvar_31 + global tmpvar_33 global CONFIG_PCI_FIFO0 - if {$tmpvar_31 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} + if {$tmpvar_33 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} global CONFIG_PCI_FIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} + if {$tmpvar_33 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} global CONFIG_PCI_FIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} + if {$tmpvar_33 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} global CONFIG_PCI_FIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} + if {$tmpvar_33 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} global CONFIG_PCI_FIFO64 - if {$tmpvar_31 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} + if {$tmpvar_33 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} global CONFIG_PCI_FIFO128 - if {$tmpvar_31 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} + if {$tmpvar_33 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} global CONFIG_PCI_HADDR if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_HADDR "$CONFIG_PCI_HADDR" E00} global CONFIG_PCI_ARBITER @@ -4517,44 +4804,44 @@ proc update_define_menu23 {} { set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB&15]} else {set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB|16]} global CONFIG_PCI_ARBITER_NREQ if {($CONFIG_PCI_ARBITER == 1)} then {validate_int CONFIG_PCI_ARBITER_NREQ "$CONFIG_PCI_ARBITER_NREQ" 4} - global tmpvar_32 + global tmpvar_34 global CONFIG_PCI_TRACE256 - if {$tmpvar_32 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} + if {$tmpvar_34 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} global CONFIG_PCI_TRACE512 - if {$tmpvar_32 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} + if {$tmpvar_34 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} global CONFIG_PCI_TRACE1024 - if {$tmpvar_32 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} + if {$tmpvar_34 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} global CONFIG_PCI_TRACE2048 - if {$tmpvar_32 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} + if {$tmpvar_34 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} global CONFIG_PCI_TRACE4096 - if {$tmpvar_32 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} + if {$tmpvar_34 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} } -proc menu24 {w title} { +proc menu23 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 24} + catch {destroy $w; unregister_active 23} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 24]] + set active_menus [lsort -integer [linsert $active_menus end 23]] message $w.m -width 400 -aspect 300 -text \ "VGA interface" -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "VGA interface" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu25 .menu25 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu24 .menu24 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4582,7 +4869,7 @@ proc menu24 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 24 0 "SVGA graphical frame buffer " CONFIG_SVGA_ENABLE + bool $w.config.f 23 0 "SVGA graphical frame buffer " CONFIG_SVGA_ENABLE @@ -4619,40 +4906,40 @@ proc menu24 {w title} { } } -proc update_menu24 {} { +proc update_menu23 {} { } -proc update_define_menu24 {} { +proc update_define_menu23 {} { update_define_mainmenu global CONFIG_MODULES } -proc menu25 {w title} { +proc menu24 {w title} { set oldFocus [focus] catch {focus .menu13} - catch {destroy $w; unregister_active 25} + catch {destroy $w; unregister_active 24} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 25]] + set active_menus [lsort -integer [linsert $active_menus end 24]] message $w.m -width 400 -aspect 300 -text \ "System ACE and System Monitor" -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "System ACE and System Monitor" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 25; catch {destroy .menu13}; unregister_active 13; menu26 .menu26 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 24; catch {destroy .menu13}; unregister_active 13; menu25 .menu25 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4680,8 +4967,8 @@ proc menu25 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 25 0 "Enable System ACE I/F Controller " CONFIG_GRACECTRL - bool $w.config.f 25 1 "Enable System Monitor " CONFIG_GRSYSMON + bool $w.config.f 24 0 "Enable System ACE I/F Controller " CONFIG_GRACECTRL + bool $w.config.f 24 1 "Enable System Monitor " CONFIG_GRSYSMON @@ -4718,41 +5005,41 @@ proc menu25 {w title} { } } -proc update_menu25 {} { +proc update_menu24 {} { } -proc update_define_menu25 {} { +proc update_define_menu24 {} { update_define_mainmenu global CONFIG_MODULES } -menu_option menu26 26 "VHDL Debugging " -proc menu26 {w title} { +menu_option menu25 25 "VHDL Debugging " +proc menu25 {w title} { set oldFocus [focus] - catch {destroy $w; unregister_active 26} + catch {destroy $w; unregister_active 25} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 26]] + set active_menus [lsort -integer [linsert $active_menus end 25]] message $w.m -width 400 -aspect 300 -text \ "VHDL Debugging " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "VHDL Debugging " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 26; break" - set nextscript "catch {focus $oldFocus}; menu27 .menu27 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; break" + set nextscript "catch {focus $oldFocus}; menu26 .menu26 \"$title\"" frame $w.f button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 26" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript $w.f.next configure -state disabled bind all "puts \"no more menus\" " button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 26; menu25 .menu25 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 26; menu25 .menu25 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4780,7 +5067,7 @@ proc menu26 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 26 0 "Accelerated UART tracing " CONFIG_DEBUG_UART + bool $w.config.f 25 0 "Accelerated UART tracing " CONFIG_DEBUG_UART @@ -4816,11 +5103,11 @@ proc menu26 {w title} { } } -proc update_menu26 {} { +proc update_menu25 {} { } -proc update_define_menu26 {} { +proc update_define_menu25 {} { update_define_mainmenu global CONFIG_MODULES } @@ -4866,7 +5153,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4876,6 +5164,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4900,6 +5190,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4912,14 +5203,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4932,28 +5228,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4963,17 +5259,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4985,12 +5281,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -5000,10 +5296,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -5014,7 +5310,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -5026,26 +5322,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -5053,25 +5351,42 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 +set CONFIG_LEON3FT_EN 0 +set tmpvar_26 "(not set)" +set CONFIG_IUFT_NONE 0 +set CONFIG_IUFT_PAR 0 +set CONFIG_IUFT_DMR 0 +set CONFIG_IUFT_BCH 0 +set CONFIG_IUFT_TMR 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 +set CONFIG_RF_ERRINJ 0 +set CONFIG_CACHE_FT_EN 0 +set CONFIG_CACHE_ERRINJ 0 +set CONFIG_LEON3_NETLIST 0 set CONFIG_IU_DISAS 0 set CONFIG_IU_DISAS_NET 0 set CONFIG_DEBUG_PC32 0 set CONFIG_AHB_DEFMST 0 set CONFIG_AHB_RROBIN 0 set CONFIG_AHB_SPLIT 0 +set CONFIG_AHB_FPNPEN 0 set CONFIG_AHB_IOADDR FFF set CONFIG_APB_HADDR 800 set CONFIG_AHB_MON 0 @@ -5081,7 +5396,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -5103,7 +5418,6 @@ set CONFIG_MCTRL_SDRAM_BUS64 0 set CONFIG_MCTRL_SDRAM_INVCLK 0 set CONFIG_MCTRL_PAGE 0 set CONFIG_MCTRL_PROGPAGE 0 -set CONFIG_MIG_DDR2 0 set CONFIG_DDR2SP 0 set CONFIG_DDR2SP_INIT 0 set CONFIG_DDR2SP_NOSYNC 0 @@ -5132,7 +5446,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -5143,14 +5457,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5183,7 +5497,7 @@ set CONFIG_SPICTRL_ODMODE 0 set CONFIG_SPICTRL_TWEN 0 set CONFIG_SPICTRL_MAXWLEN 0 set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_SPICTRL_NOFT 0 set CONFIG_SPICTRL_DMRFT 0 set CONFIG_SPICTRL_TMRFT 0 @@ -5191,7 +5505,7 @@ set CONFIG_PCI_MASTER_TARGET 0 set CONFIG_PCI_MASTER_TARGET_DMA 0 set CONFIG_PCI_VENDORID 1AC8 set CONFIG_PCI_DEVICEID 0054 -set tmpvar_31 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_PCI_FIFO0 0 set CONFIG_PCI_FIFO8 0 set CONFIG_PCI_FIFO16 0 @@ -5203,7 +5517,7 @@ set CONFIG_PCI_ARBITER 0 set CONFIG_PCI_ARBITER_APB 0 set CONFIG_PCI_ARBITER_NREQ 4 set CONFIG_PCI_TRACE 0 -set tmpvar_32 "(not set)" +set tmpvar_34 "(not set)" set CONFIG_PCI_TRACE256 0 set CONFIG_PCI_TRACE512 0 set CONFIG_PCI_TRACE1024 0 @@ -5216,18 +5530,7 @@ set CONFIG_DEBUG_UART 0 set CONFIG_HAS_SHARED_GRFPU 4 set CONFIG_SYN_ARTISAN 4 set CONFIG_PCI_ENABLE 4 -set CONFIG_LEON3FT_PRESENT 4 -set CONFIG_LEON3FT_EN 4 -set CONFIG_IUFT_NONE 4 -set CONFIG_IUFT_PAR 4 -set CONFIG_IUFT_DMR 4 -set CONFIG_IUFT_BCH 4 -set CONFIG_IUFT_TMR 4 -set CONFIG_FPUFT_EN 4 -set CONFIG_RF_ERRINJ 4 -set CONFIG_CACHE_FT_EN 4 -set CONFIG_CACHE_ERRINJ 4 -set CONFIG_LEON3_NETLIST 4 +set CONFIG_MIG_DDR2 4 set CONFIG_PCI_SIMPLE_TARGET 4 set CONFIG_PCI_ACTEL 4 set CONFIG_MODULES 4 @@ -5284,7 +5587,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5294,6 +5598,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5332,6 +5638,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5344,9 +5651,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5360,230 +5668,398 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} + global CONFIG_LEON3FT_EN + if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } + global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} + global CONFIG_RF_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } + global CONFIG_CACHE_FT_EN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_CACHE_FT_EN $CONFIG_CACHE_FT_EN [list $notmod] 2 } + global CONFIG_CACHE_ERRINJ + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_int $cfg $autocfg CONFIG_CACHE_ERRINJ $CONFIG_CACHE_ERRINJ $notmod } + global CONFIG_LEON3_NETLIST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3_NETLIST $CONFIG_LEON3_NETLIST [list $notmod] 2 } if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "VHDL debug settings "} global CONFIG_IU_DISAS if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_DISAS $CONFIG_IU_DISAS [list $notmod] 2 } @@ -5598,6 +6074,8 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_AHB_RROBIN $CONFIG_AHB_RROBIN [list $notmod] 2 global CONFIG_AHB_SPLIT write_tristate $cfg $autocfg CONFIG_AHB_SPLIT $CONFIG_AHB_SPLIT [list $notmod] 2 + global CONFIG_AHB_FPNPEN + write_tristate $cfg $autocfg CONFIG_AHB_FPNPEN $CONFIG_AHB_FPNPEN [list $notmod] 2 global CONFIG_AHB_IOADDR write_hex $cfg $autocfg CONFIG_AHB_IOADDR $CONFIG_AHB_IOADDR $notmod global CONFIG_APB_HADDR @@ -5618,13 +6096,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5661,54 +6139,52 @@ proc writeconfig {file1 file2} { if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PAGE $CONFIG_MCTRL_PAGE [list $notmod] 2 } global CONFIG_MCTRL_PROGPAGE if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PROGPAGE $CONFIG_MCTRL_PROGPAGE [list $notmod] 2 } - write_comment $cfg $autocfg "Xilinx MIG DDR2 controller " - global CONFIG_MIG_DDR2 - write_tristate $cfg $autocfg CONFIG_MIG_DDR2 $CONFIG_MIG_DDR2 [list $notmod] 2 write_comment $cfg $autocfg "DDR2 SDRAM controller " global CONFIG_DDR2SP - write_tristate $cfg $autocfg CONFIG_DDR2SP $CONFIG_DDR2SP [list $notmod] 2 + global CONFIG_MIG_DDR2 + if {($CONFIG_MIG_DDR2 != 1)} then {write_tristate $cfg $autocfg CONFIG_DDR2SP $CONFIG_DDR2SP [list $notmod] 2 } global CONFIG_DDR2SP_INIT - if {($CONFIG_DDR2SP == 1)} then {write_tristate $cfg $autocfg CONFIG_DDR2SP_INIT $CONFIG_DDR2SP_INIT [list $notmod] 2 } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_tristate $cfg $autocfg CONFIG_DDR2SP_INIT $CONFIG_DDR2SP_INIT [list $notmod] 2 } global CONFIG_DDR2SP_NOSYNC - if {($CONFIG_DDR2SP == 1)} then {write_tristate $cfg $autocfg CONFIG_DDR2SP_NOSYNC $CONFIG_DDR2SP_NOSYNC [list $notmod] 2 } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_tristate $cfg $autocfg CONFIG_DDR2SP_NOSYNC $CONFIG_DDR2SP_NOSYNC [list $notmod] 2 } global CONFIG_DDR2SP_FREQ - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_NOSYNC == 0)} then {write_int $cfg $autocfg CONFIG_DDR2SP_FREQ $CONFIG_DDR2SP_FREQ $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_NOSYNC == 0)} then {write_int $cfg $autocfg CONFIG_DDR2SP_FREQ $CONFIG_DDR2SP_FREQ $notmod } global CONFIG_DDR2SP_TRFC - if {($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_TRFC $CONFIG_DDR2SP_TRFC $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_TRFC $CONFIG_DDR2SP_TRFC $notmod } global CONFIG_DDR2SP_COL - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_COL $CONFIG_DDR2SP_COL $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_COL $CONFIG_DDR2SP_COL $notmod } global CONFIG_DDR2SP_MBYTE - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_MBYTE $CONFIG_DDR2SP_MBYTE $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_INIT == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_MBYTE $CONFIG_DDR2SP_MBYTE $notmod } global CONFIG_DDR2SP_DATAWIDTH - if {($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DATAWIDTH $CONFIG_DDR2SP_DATAWIDTH $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DATAWIDTH $CONFIG_DDR2SP_DATAWIDTH $notmod } global CONFIG_DDR2SP_FTEN - if {($CONFIG_DDR2SP == 1)} then {write_tristate $cfg $autocfg CONFIG_DDR2SP_FTEN $CONFIG_DDR2SP_FTEN [list $notmod] 2 } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_tristate $cfg $autocfg CONFIG_DDR2SP_FTEN $CONFIG_DDR2SP_FTEN [list $notmod] 2 } global CONFIG_DDR2SP_FTWIDTH - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_FTWIDTH $CONFIG_DDR2SP_FTWIDTH $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_FTWIDTH $CONFIG_DDR2SP_FTWIDTH $notmod } global CONFIG_DDR2SP_DELAY0 - if {($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY0 $CONFIG_DDR2SP_DELAY0 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY0 $CONFIG_DDR2SP_DELAY0 $notmod } global CONFIG_DDR2SP_DELAY1 - if {($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY1 $CONFIG_DDR2SP_DELAY1 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY1 $CONFIG_DDR2SP_DELAY1 $notmod } global CONFIG_DDR2SP_DELAY2 - if {($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY2 $CONFIG_DDR2SP_DELAY2 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY2 $CONFIG_DDR2SP_DELAY2 $notmod } global CONFIG_DDR2SP_DELAY3 - if {($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY3 $CONFIG_DDR2SP_DELAY3 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY3 $CONFIG_DDR2SP_DELAY3 $notmod } global CONFIG_DDR2SP_DELAY4 - if {($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY4 $CONFIG_DDR2SP_DELAY4 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY4 $CONFIG_DDR2SP_DELAY4 $notmod } global CONFIG_DDR2SP_DELAY5 - if {($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY5 $CONFIG_DDR2SP_DELAY5 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY5 $CONFIG_DDR2SP_DELAY5 $notmod } global CONFIG_DDR2SP_DELAY6 - if {($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY6 $CONFIG_DDR2SP_DELAY6 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY6 $CONFIG_DDR2SP_DELAY6 $notmod } global CONFIG_DDR2SP_DELAY7 - if {($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY7 $CONFIG_DDR2SP_DELAY7 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_DELAY7 $CONFIG_DDR2SP_DELAY7 $notmod } global CONFIG_DDR2SP_CBDELAY0 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_CBDELAY0 $CONFIG_DDR2SP_CBDELAY0 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_CBDELAY0 $CONFIG_DDR2SP_CBDELAY0 $notmod } global CONFIG_DDR2SP_CBDELAY1 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_CBDELAY1 $CONFIG_DDR2SP_CBDELAY1 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_CBDELAY1 $CONFIG_DDR2SP_CBDELAY1 $notmod } global CONFIG_DDR2SP_CBDELAY2 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_CBDELAY2 $CONFIG_DDR2SP_CBDELAY2 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_CBDELAY2 $CONFIG_DDR2SP_CBDELAY2 $notmod } global CONFIG_DDR2SP_CBDELAY3 - if {($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_CBDELAY3 $CONFIG_DDR2SP_CBDELAY3 $notmod } + if {($CONFIG_MIG_DDR2 != 1) && ($CONFIG_DDR2SP == 1) && ($CONFIG_DDR2SP_FTEN == 1)} then {write_int $cfg $autocfg CONFIG_DDR2SP_CBDELAY3 $CONFIG_DDR2SP_CBDELAY3 $notmod } global CONFIG_AHBSTAT_ENABLE write_tristate $cfg $autocfg CONFIG_AHBSTAT_ENABLE $CONFIG_AHBSTAT_ENABLE [list $notmod] 2 global CONFIG_AHBSTAT_NFTSLV @@ -5722,38 +6198,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UART, timer, I/O port and interrupt controller" global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5808,11 +6284,11 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_30 + global tmpvar_32 if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_30 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_30 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_30 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_32 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "PCI " global CONFIG_PCI_MASTER_TARGET global CONFIG_PCI_SIMPLE_TARGET @@ -5824,14 +6300,14 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_VENDORID $CONFIG_PCI_VENDORID $notmod } global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_DEVICEID $CONFIG_PCI_DEVICEID $notmod } - global tmpvar_31 + global tmpvar_33 if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then { - if { $tmpvar_31 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } - if { $tmpvar_31 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} + if { $tmpvar_33 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } + if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_33 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } + if { $tmpvar_33 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} global CONFIG_PCI_HADDR if {($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_HADDR $CONFIG_PCI_HADDR $notmod } global CONFIG_PCI_ARBITER @@ -5842,13 +6318,13 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_ARBITER == 1)} then {write_int $cfg $autocfg CONFIG_PCI_ARBITER_NREQ $CONFIG_PCI_ARBITER_NREQ $notmod } global CONFIG_PCI_TRACE write_tristate $cfg $autocfg CONFIG_PCI_TRACE $CONFIG_PCI_TRACE [list $notmod] 2 - global tmpvar_32 + global tmpvar_34 if {($CONFIG_PCI_TRACE == 1)} then { - if { $tmpvar_32 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } - if { $tmpvar_32 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } - if { $tmpvar_32 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } - if { $tmpvar_32 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } - if { $tmpvar_32 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} + if { $tmpvar_34 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } + if { $tmpvar_34 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } + if { $tmpvar_34 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } + if { $tmpvar_34 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } + if { $tmpvar_34 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} write_comment $cfg $autocfg "VGA interface" global CONFIG_SVGA_ENABLE write_tristate $cfg $autocfg CONFIG_SVGA_ENABLE $CONFIG_SVGA_ENABLE [list $notmod] 2 @@ -5901,7 +6377,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5911,6 +6388,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5929,8 +6408,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -6013,11 +6497,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -6033,6 +6519,15 @@ proc clear_choices { } { global CONFIG_DSU_ATRACESZ4; set CONFIG_DSU_ATRACESZ4 0 global CONFIG_DSU_ATRACESZ8; set CONFIG_DSU_ATRACESZ8 0 global CONFIG_DSU_ATRACESZ16; set CONFIG_DSU_ATRACESZ16 0 + global CONFIG_IUFT_NONE; set CONFIG_IUFT_NONE 0 + global CONFIG_IUFT_PAR; set CONFIG_IUFT_PAR 0 + global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 + global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 + global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -6146,8 +6641,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -6166,6 +6663,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -6206,346 +6707,384 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } global tmpvar_26 - set tmpvar_26 "2" + set tmpvar_26 "None" + global CONFIG_IUFT_NONE + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } + global CONFIG_IUFT_PAR + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + global CONFIG_IUFT_DMR + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + global CONFIG_IUFT_BCH + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } + global CONFIG_IUFT_TMR + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } - global tmpvar_30 - set tmpvar_30 "None" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } + global tmpvar_32 + set tmpvar_32 "None" global CONFIG_SPICTRL_NOFT - if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_30 "None" } + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_32 "None" } global CONFIG_SPICTRL_DMRFT - if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_30 "Parity-DMR" } + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_32 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT - if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_30 "TMR" } - global tmpvar_31 - set tmpvar_31 "8" + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_32 "TMR" } + global tmpvar_33 + set tmpvar_33 "8" global CONFIG_PCI_FIFO0 - if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_31 "None" } + if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_33 "None" } global CONFIG_PCI_FIFO8 - if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_33 "8" } global CONFIG_PCI_FIFO16 - if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_33 "16" } global CONFIG_PCI_FIFO32 - if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_31 "32" } + if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_33 "32" } global CONFIG_PCI_FIFO64 - if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_31 "64" } + if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_33 "64" } global CONFIG_PCI_FIFO128 - if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_31 "128" } - global tmpvar_32 - set tmpvar_32 "256" + if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_33 "128" } + global tmpvar_34 + set tmpvar_34 "256" global CONFIG_PCI_TRACE256 - if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_32 "256" } + if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_34 "256" } global CONFIG_PCI_TRACE512 - if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_32 "512" } + if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_34 "512" } global CONFIG_PCI_TRACE1024 - if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_32 "1024" } + if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_34 "1024" } global CONFIG_PCI_TRACE2048 - if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_32 "2048" } + if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_34 "2048" } global CONFIG_PCI_TRACE4096 - if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_32 "4096" } + if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_34 "4096" } } diff --git a/designs/leon3-xilinx-ml510/leon3mp.vhd b/designs/leon3-xilinx-ml510/leon3mp.vhd index 38c62245..90f7a7ef 100644 --- a/designs/leon3-xilinx-ml510/leon3mp.vhd +++ b/designs/leon3-xilinx-ml510/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2011, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -22,6 +22,7 @@ ------------------------------------------------------------------------------ + library ieee; use ieee.std_logic_1164.all; library grlib, techmap; @@ -46,7 +47,6 @@ library esa; use esa.memoryctrl.all; use esa.pcicomp.all; use work.config.all; -use work.ml510.all; -- pragma translate_off library unisim; @@ -233,139 +233,6 @@ end; architecture rtl of leon3mp is - component mig_36_1 - generic( - BANK_WIDTH : integer := 2; - -- # of memory bank addr bits. - CKE_WIDTH : integer := 1; - -- # of memory clock enable outputs. - CLK_WIDTH : integer := 1; - -- # of clock outputs. - COL_WIDTH : integer := 10; - -- # of memory column bits. - CS_NUM : integer := 1; - -- # of separate memory chip selects. - CS_WIDTH : integer := 1; - -- # of total memory chip selects. - CS_BITS : integer := 0; - -- set to log2(CS_NUM) (rounded up). - DM_WIDTH : integer := 9; - -- # of data mask bits. - DQ_WIDTH : integer := 72; - -- # of data width. - DQ_PER_DQS : integer := 8; - -- # of DQ data bits per strobe. - DQS_WIDTH : integer := 9; - -- # of DQS strobes. - DQ_BITS : integer := 7; - -- set to log2(DQS_WIDTH*DQ_PER_DQS). - DQS_BITS : integer := 4; - -- set to log2(DQS_WIDTH). - ODT_WIDTH : integer := 1; - -- # of memory on-die term enables. - ROW_WIDTH : integer := 14; - -- # of memory row and # of addr bits. - ADDITIVE_LAT : integer := 0; - -- additive write latency. - BURST_LEN : integer := 4; - -- burst length (in double words). - BURST_TYPE : integer := 0; - -- burst type (=0 seq; =1 interleaved). - CAS_LAT : integer := 3; - -- CAS latency. - ECC_ENABLE : integer := 0; - -- enable ECC (=1 enable). - APPDATA_WIDTH : integer := 144; - -- # of usr read/write data bus bits. - MULTI_BANK_EN : integer := 1; - -- Keeps multiple banks open. (= 1 enable). - TWO_T_TIME_EN : integer := 0; - -- 2t timing for unbuffered dimms. - ODT_TYPE : integer := 1; - -- ODT (=0(none),=1(75),=2(150),=3(50)). - REDUCE_DRV : integer := 0; - -- reduced strength mem I/O (=1 yes). - REG_ENABLE : integer := 1; - -- registered addr/ctrl (=1 yes). - TREFI_NS : integer := 7800; - -- auto refresh interval (ns). - TRAS : integer := 40000; - -- active->precharge delay. - TRCD : integer := 15000; - -- active->read/write delay. - TRFC : integer := 105000; - -- refresh->refresh, refresh->active delay. - TRP : integer := 15000; - -- precharge->command delay. - TRTP : integer := 7500; - -- read->precharge delay. - TWR : integer := 15000; - -- used to determine write->precharge. - TWTR : integer := 10000; - -- write->read delay. - HIGH_PERFORMANCE_MODE : boolean := TRUE; - -- # = TRUE, the IODELAY performance mode is set - -- to high. - -- # = FALSE, the IODELAY performance mode is set - -- to low. - SIM_ONLY : integer := 0; - -- = 1 to skip SDRAM power up delay. - DEBUG_EN : integer := 0; - -- Enable debug signals/controls. - -- When this parameter is changed from 0 to 1, - -- make sure to uncomment the coregen commands - -- in ise_flow.bat or create_ise.bat files in - -- par folder. - CLK_PERIOD : integer := 5000; - -- Core/Memory clock period (in ps). - DLL_FREQ_MODE : string := "HIGH"; - -- DCM Frequency range. - CLK_TYPE : string := "SINGLE_ENDED"; - -- # = "DIFFERENTIAL " ->; Differential input clocks , - -- # = "SINGLE_ENDED" -> Single ended input clocks. - NOCLK200 : boolean := FALSE; - -- clk200 enable and disable - RST_ACT_LOW : integer := 1 - -- =1 for active low reset, =0 for active high. - ); - port( - ddr2_dq : inout std_logic_vector((DQ_WIDTH-1) downto 0); - ddr2_a : out std_logic_vector((ROW_WIDTH-1) downto 0); - ddr2_ba : out std_logic_vector((BANK_WIDTH-1) downto 0); - ddr2_ras_n : out std_logic; - ddr2_cas_n : out std_logic; - ddr2_we_n : out std_logic; - ddr2_cs_n : out std_logic_vector((CS_WIDTH-1) downto 0); - ddr2_odt : out std_logic_vector((ODT_WIDTH-1) downto 0); - ddr2_cke : out std_logic_vector((CKE_WIDTH-1) downto 0); - ddr2_reset_n : out std_logic; - ddr2_dm : out std_logic_vector((DM_WIDTH-1) downto 0); - sys_clk : in std_logic; - idly_clk_200 : in std_logic; - sys_rst_n : in std_logic; - phy_init_done : out std_logic; - rst0_tb : out std_logic; - clk0_tb : out std_logic; - app_wdf_afull : out std_logic; - app_af_afull : out std_logic; - rd_data_valid : out std_logic; - app_wdf_wren : in std_logic; - app_af_wren : in std_logic; - app_af_addr : in std_logic_vector(30 downto 0); - app_af_cmd : in std_logic_vector(2 downto 0); - rd_data_fifo_out : out std_logic_vector((APPDATA_WIDTH-1) downto 0); - app_wdf_data : in std_logic_vector((APPDATA_WIDTH-1) downto 0); - app_wdf_mask_data : in std_logic_vector((APPDATA_WIDTH/8-1) downto 0); - ddr2_dqs : inout std_logic_vector((DQS_WIDTH-1) downto 0); - ddr2_dqs_n : inout std_logic_vector((DQS_WIDTH-1) downto 0); - ddr2_ck : out std_logic_vector((CLK_WIDTH-1) downto 0); - ddr2_ck_n : out std_logic_vector((CLK_WIDTH-1) downto 0); - clk100 : out std_ulogic; - clkdiv : out std_ulogic - ); - -end component; - component svga2ch7301c generic ( tech : integer := 0; @@ -506,10 +373,6 @@ signal pcii : pci_in_type; signal pcio : pci_out_type; signal clkma, clkmb, clkmc : std_ulogic; - -- Used for connecting input/output signals to the DDR3 controller - signal migi : mig_app_in_type; - signal migo : mig_app_out_type; - signal clk0_tb, rst0_tb, rst0_tbn : std_ulogic; signal phy_init_done : std_ulogic; -- Logan signals @@ -606,6 +469,10 @@ begin port map (rst, clkm, clklock, rstn, rstraw); clklock <= lock0 and lock1 and cgo.clklock and cgo3.clklock; + clk_pad : clkpad generic map (tech => padtech, arch => 2, level => cmos, voltage => x25v) + port map (user_clksys, lclk); + + ---------------------------------------------------------------------- --- AHB CONTROLLER -------------------------------------------------- ---------------------------------------------------------------------- @@ -728,70 +595,11 @@ begin flash_d_pads : iopadvv generic map (tech => padtech, width => 16) port map (flash_d, memo.data(31 downto 16), memo.vbdrive(31 downto 16), memi.data(31 downto 16)); - - migsp0 : if (CFG_MIG_DDR2 = 1) generate - - ahb2mig0 : entity work.ahb2mig_ml510 - generic map ( hindex => 0, haddr => 16#400#, hmask => 16#E00#, - MHz => 400, Mbyte => 512, nosync => 0) --boolean'pos(CFG_MIG_CLK4=12)) --CFG_CLKDIV/12) - port map ( - rst_ahb => rstn, rst_ddr => rst0_tbn, clk_ahb => clkm, clk_ddr => clk0_tb, - ahbsi => ahbsi, ahbso => ahbso(0), migi => migi, migo => migo); - - BUFGCLK200 : BUFG port map (I => clk_200, O => clkddr); - - migv5 : mig_36_1 --- generic map (SIM_BYPASS_INIT_CAL => "FAST", CLKOUT_DIVIDE4 => CFG_MIG_CLK4) - generic map (NOCLK200 => true, SIM_ONLY => 1) - port map( -- sys_clk_p, sys_clk_n, --- clk_ref_p, clk_ref_n, - ddr2_dq => dimm0_ddr2_dq(DQ_WIDTH-1 downto 0), - ddr2_a => dimm0_ddr2_a(ROW_WIDTH-1 downto 0), - ddr2_ba => dimm0_ddr2_ba(1 downto 0), ddr2_ras_n => dimm0_ddr2_ras_b, - ddr2_cas_n => dimm0_ddr2_cas_b, ddr2_we_n => dimm0_ddr2_we_b, - ddr2_cs_n => dimm0_ddr2_s_b(0 downto 0), ddr2_odt => dimm0_ddr2_odt(0 downto 0), - ddr2_cke => dimm0_ddr2_cke(0 downto 0), - ddr2_dm => dimm0_ddr2_dqm(DM_WIDTH-1 downto 0), - ddr2_reset_n => dimm0_ddr2_reset_n, - sys_clk => user_clksys, idly_clk_200 => clkddr, sys_rst_n => rstraw, - phy_init_done => phy_init_done, - rst0_tb => rst0_tb, clk0_tb => clk0_tb, - app_wdf_afull => migo.app_wdf_afull, - app_af_afull => migo.app_af_afull, - rd_data_valid => migo.app_rd_data_valid, - app_wdf_wren => migi.app_wdf_wren, - app_af_wren => migi.app_en, app_af_addr => migi.app_addr, - app_af_cmd => migi.app_cmd, - rd_data_fifo_out => migo.app_rd_data, app_wdf_data => migi.app_wdf_data, - app_wdf_mask_data => migi.app_wdf_mask, - ddr2_dqs => dimm0_ddr2_dqs_p(DQS_WIDTH-1 downto 0), - ddr2_dqs_n => dimm0_ddr2_dqs_n(DQS_WIDTH-1 downto 0), - ddr2_ck => ddr0_clkv((CK_WIDTH-1) downto 0), - ddr2_ck_n => ddr0_clkbv((CK_WIDTH-1) downto 0), - clk100 => lclk - ); - - dimm0_ddr2_pll_clkin_p <= ddr0_clkv(0); - dimm0_ddr2_pll_clkin_n <= ddr0_clkbv(0); - lock0 <= phy_init_done; - lock1 <= phy_init_done; - -- Tri-state unused data strobe - xtra : if DQS_WIDTH = 8 generate - dimm0_dqsp_notused8_pad : iopad generic map (tech => padtech, level => SSTL18_II) - port map (dimm0_ddr2_dqs_p(8), gnd(0), vcc(0), open); - dimm0_dqsn_notused8_pad : iopad generic map (tech => padtech, level => SSTL18_II) - port map (dimm0_ddr2_dqs_n(8), gnd(0), vcc(0), open); - end generate; - end generate; dbg_led0_pad : outpad generic map (tech => padtech, level => cmos, voltage => x33v) port map (dbg_led(3), phy_init_done); - nomigsp0 : if (CFG_MIG_DDR2 = 0) generate - clk_pad : clkpad generic map (tech => padtech, arch => 2, level => cmos, voltage => x25v) - port map (user_clksys, lclk); - end generate; - clkm <= clkma; clkma <= clkmb; clkmb <= clkmc; + clkm <= clkma; clkma <= clkmb; clkmb <= clkmc; ddrsp0 : if (CFG_DDR2SP /= 0) generate diff --git a/designs/leon3-xilinx-ml510/leon3mp_mig.ucf b/designs/leon3-xilinx-ml510/leon3mp_mig.ucf deleted file mode 100644 index 679c69a3..00000000 --- a/designs/leon3-xilinx-ml510/leon3mp_mig.ucf +++ /dev/null @@ -1,1286 +0,0 @@ -///////////////////////////////////////////////////// -// FPGA reset -///////////////////////////////////////////////////// - -NET "FPGA_CPU_RESET_B" LOC ="J15"; -NET "FPGA_CPU_RESET_B" PULLUP; -NET "FPGA_CPU_RESET_B" TIG; - -///////////////////////////////////////////////////// -// Board clocks -///////////////////////////////////////////////////// -# Main clock -#NET "USER_CLKSYS" period = 10.000; -NET "USER_CLKSYS" LOC ="L29"; - -# User supplied clock -#NET "USER_CLK2" LOC ="K29"; - -# -#NET "USER_SMA_CLK_P" LOC ="K30"; -#NET "USER_SMA_CLK_N" LOC ="L30"; - -# -#NET "SATACLK_QO_P" LOC ="F4"; -#NET "SATACLK_QO_N" LOC ="F3"; - -# -#NET "LVDS_CLKEXT_P_C" LOC ="V4"; -#NET "LVDS_CLKEXT_N_C" LOC ="V3"; - -# System ACE clock -NET "SYSACE_FPGA_CLK" LOC ="L17"; -NET "SYSACE_FPGA_CLK" period = 29.000; - -///////////////////////////////////////////////////// -// Design clocks -///////////////////////////////////////////////////// - -NET "clkm" TNM_NET = "clkm"; -NET "clk0_tb" TNM_NET = "clk0_tb"; - -NET "pciclk" TNM_NET="pciclk"; -TIMESPEC "TS_clkm_pciclk" = FROM "clkm" TO "pciclk" TIG; -TIMESPEC "TS_pciclk_clkm" = FROM "pciclk" TO "clkm" TIG; -TIMESPEC "TS_clk0_tb_clkm" = FROM "clk0_tb" TO "clkm" TIG; -TIMESPEC "TS_clkm_clk0_tb" = FROM "clkm" TO "clk0_tb" TIG; -NET "*/phy_init_done" TIG; - -# PCI clock feedback. PCI_P_CLK5_R is generated by FPGA -# and PCI_P_CLK5 is the feedback. -NET "PCI_P_CLK5" period = 30.000; - -///////////////////////////////////////////////////// -// Delays -///////////////////////////////////////////////////// - -OFFSET = OUT : 11.000 : AFTER PCI_P_CLK5; -OFFSET = IN : 7.000 : BEFORE PCI_P_CLK5; - -///////////////////////////////////////////////////// -// VGA clocks -///////////////////////////////////////////////////// - -NET "clkvga" TNM_NET = "clkvga" | PERIOD = 15.385; -NET "clk25" TNM_NET = "clk25" | PERIOD = 40.000; -NET "clk40" TNM_NET = "clk40" | PERIOD = 25.000; -NET "clk65" TNM_NET = "clk65" | PERIOD = 15.385; -TIMESPEC "TSPLB_TFT25" = FROM "clkm" TO "clk25" TIG; -TIMESPEC "TSPLB_TFT40" = FROM "clkm" TO "clk40" TIG; -TIMESPEC "TSPLB_TFT65" = FROM "clkm" TO "clk65" TIG; -TIMESPEC "TSTFT25_PLB" = FROM "clk25" TO "clkm" TIG; -TIMESPEC "TSTFT25_TFT40" = FROM "clk25" TO "clk40" TIG; -TIMESPEC "TSTFT25_TFT65" = FROM "clk25" TO "clk65" TIG; -TIMESPEC "TSTFT40_PLB" = FROM "clk40" TO "clkm" TIG; -TIMESPEC "TSTFT40_TFT25" = FROM "clk40" TO "clk25" TIG; -TIMESPEC "TSTFT40_TFT65" = FROM "clk40" TO "clk65" TIG; -TIMESPEC "TSTFT65_PLB" = FROM "clk65" TO "clkm" TIG; -TIMESPEC "TSTFT65_TFT25" = FROM "clk65" TO "clk25" TIG; -TIMESPEC "TSTFT65_TFT40" = FROM "clk65" TO "clk40" TIG; - -# MIG contraints - - - -#NET "*/u_ddr2_infrastructure/sys_clk_ibufg" TNM_NET = "SYS_CLK"; -NET "user_clksys" TNM_NET = "SYS_CLK"; -TIMESPEC "TS_SYS_CLK" = PERIOD "SYS_CLK" 10 ns HIGH 50 %; - -#NET "*/u_ddr2_infrastructure/clk200_ibufg" TNM_NET = "SYS_CLK_200"; -#TIMESPEC "TS_SYS_CLK_200" = PERIOD "SYS_CLK_200" 5 ns HIGH 50 %; -############################################################################### -# Define multicycle paths - these paths may take longer because additional -# time allowed for logic to settle in calibration/initialization FSM -############################################################################### - -# MIG 2.1: Eliminate Timegroup definitions for CLK0, and CLK90. Instead trace -# multicycle paths from originating flip-flop to ANY destination -# flip-flop (or in some cases, it can also be a BRAM) -# MUX Select for either rising/falling CLK0 for 2nd stage read capture -INST "*/u_phy_calib/gen_rd_data_sel*.u_ff_rd_data_sel" TNM = "TNM_RD_DATA_SEL"; -TIMESPEC "TS_MC_RD_DATA_SEL" = FROM "TNM_RD_DATA_SEL" TO FFS -"TS_SYS_CLK" * 2; -# MUX select for read data - optional delay on data to account for byte skews -INST "*/u_usr_rd/gen_rden_sel_mux*.u_ff_rden_sel_mux" TNM = "TNM_RDEN_SEL_MUX"; -TIMESPEC "TS_MC_RDEN_SEL_MUX" = FROM "TNM_RDEN_SEL_MUX" TO FFS -"TS_SYS_CLK" * 2; -# Calibration/Initialization complete status flag (for PHY logic only) - can -# be used to drive both flip-flops and BRAMs -INST "*/u_phy_init/u_ff_phy_init_data_sel" TNM = "TNM_PHY_INIT_DATA_SEL"; -TIMESPEC "TS_MC_PHY_INIT_DATA_SEL_0" = FROM "TNM_PHY_INIT_DATA_SEL" TO FFS -"TS_SYS_CLK" * 2; -# The RAM path is only used in cases where Write Latency (Additive Latency + -# (CAS Latency - 1) + (1 in case of RDIMM)) is 2 or below. So these constraints are -# valid for CAS Latency = 3, Additive Latency = 0 and selected part is not RDIMM. -# If Write Latency is higher than 3, then a warning will appear in PAR, -# and the constraint can be ignored as this path does not exist. RAM constraint -# can be safely removed if the warning is not to be displayed. -TIMESPEC "TS_MC_PHY_INIT_DATA_SEL_90" = FROM "TNM_PHY_INIT_DATA_SEL" TO RAMS -"TS_SYS_CLK" * 2; -# Select (address) bits for SRL32 shift registers used in stage3/stage4 -# calibration -INST "*/u_phy_calib/gen_gate_dly*.u_ff_gate_dly" TNM = "TNM_GATE_DLY"; -TIMESPEC "TS_MC_GATE_DLY" = FROM "TNM_GATE_DLY" TO FFS "TS_SYS_CLK" * 2; - -INST "*/u_phy_calib/gen_rden_dly*.u_ff_rden_dly" TNM = "TNM_RDEN_DLY"; -TIMESPEC "TS_MC_RDEN_DLY" = FROM "TNM_RDEN_DLY" TO FFS "TS_SYS_CLK" * 2; - -INST "*/u_phy_calib/gen_cal_rden_dly*.u_ff_cal_rden_dly" - TNM = "TNM_CAL_RDEN_DLY"; -TIMESPEC "TS_MC_CAL_RDEN_DLY" = FROM "TNM_CAL_RDEN_DLY" TO FFS -"TS_SYS_CLK" * 2; -############################################################################### -#The following constraint is added to prevent (false) hold time violations on -#the data path from stage1 to stage2 capture flops. Stage1 flops are clocked by -#the delayed DQS and stage2 flops are clocked by the clk0 clock. Placing a TIG -#on the DQ IDDR capture flop instance to achieve this is acceptable because timing -#is guaranteed through the use of separate Predictable IP constraints. These -#violations are reported when anunconstrained path report is run. -############################################################################### -INST "*/gen*.u_iob_dq/gen*.u_iddr_dq" TIG ; -############################################################################### -# DQS Read Post amble Glitch Squelch circuit related constraints -############################################################################### - -############################################################################### -# LOC placement of DQS-squelch related IDDR and IDELAY elements -# Each circuit can be located at any of the following locations: -# 1. Unused "N"-side of DQS differential pair I/O -# 2. DM data mask (output only, input side is free for use) -# 3. Any output-only site -############################################################################### - -############################################################################### -#The following constraint is added to avoid the HOLD violations in the trace report -#when run for unconstrained paths.These two FF groups will be clocked by two different -# clocks and hence there should be no timing analysis performed on this path. -############################################################################### -INST "*/u_mem_if_top/u_phy_top/u_phy_io/u_phy_calib/gen_gate.*.u_en_dqs_ff" TNM = EN_DQS_FF; -TIMESPEC TS_FROM_EN_DQS_FF_TO_DQ_CE_FF = FROM EN_DQS_FF TO TNM_DQ_CE_IDDR 3.85 ns DATAPATHONLY; - -INST "*/gen_dqs.0.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y340"; -INST "*/gen_dqs.0.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y340"; -INST "*/gen_dqs.1.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y338"; -INST "*/gen_dqs.1.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y338"; -INST "*/gen_dqs.2.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y336"; -INST "*/gen_dqs.2.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y336"; -INST "*/gen_dqs.3.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y300"; -INST "*/gen_dqs.3.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y300"; -INST "*/gen_dqs.4.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y298"; -INST "*/gen_dqs.4.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y298"; -INST "*/gen_dqs.5.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y296"; -INST "*/gen_dqs.5.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y296"; -INST "*/gen_dqs.6.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y262"; -INST "*/gen_dqs.6.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y262"; -INST "*/gen_dqs.7.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y260"; -INST "*/gen_dqs.7.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y260"; -INST "*/gen_dqs.8.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y258"; -INST "*/gen_dqs.8.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y258"; - -#INST "*/gen_dqs.0.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y382"; -#INST "*/gen_dqs.0.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y382"; -#INST "*/gen_dqs.1.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y380"; -#INST "*/gen_dqs.1.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y380"; -#INST "*/gen_dqs.2.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y378"; -#INST "*/gen_dqs.2.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y378"; -#INST "*/gen_dqs.3.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y342"; -#INST "*/gen_dqs.3.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y342"; -#INST "*/gen_dqs.4.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y340"; -#INST "*/gen_dqs.4.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y340"; -#INST "*/gen_dqs.5.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y338"; -#INST "*/gen_dqs.5.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y338"; -#INST "*/gen_dqs.6.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y302"; -#INST "*/gen_dqs.6.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y302"; -#INST "*/gen_dqs.7.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y300"; -#INST "*/gen_dqs.7.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y300"; -#INST "*/gen_dqs.8.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y298"; -#INST "*/gen_dqs.8.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y298"; - -############################################################################### -# LOC and timing constraints for flop driving DQS CE enable signal -# from fabric logic. Even though the absolute delay on this path is -# calibrated out (when synchronizing this output to DQS), the delay -# should still be kept as low as possible to reduce post-calibration -# voltage/temp variations - these are roughly proportional to the -# absolute delay of the path. -# The following code has been commented for V5 as the predictable IP will take -# care of placement of these flops by meeting the MAXDELAY requirement. -# These constraints will be removed in the next release. -############################################################################### - -INST "*/u_phy_calib/gen_gate.0.u_en_dqs_ff" LOC = SLICE_X0Y170; -INST "*/u_phy_calib/gen_gate.1.u_en_dqs_ff" LOC = SLICE_X0Y169; -INST "*/u_phy_calib/gen_gate.2.u_en_dqs_ff" LOC = SLICE_X0Y168; -INST "*/u_phy_calib/gen_gate.3.u_en_dqs_ff" LOC = SLICE_X0Y150; -INST "*/u_phy_calib/gen_gate.4.u_en_dqs_ff" LOC = SLICE_X0Y149; -INST "*/u_phy_calib/gen_gate.5.u_en_dqs_ff" LOC = SLICE_X0Y148; -INST "*/u_phy_calib/gen_gate.6.u_en_dqs_ff" LOC = SLICE_X0Y131; -INST "*/u_phy_calib/gen_gate.7.u_en_dqs_ff" LOC = SLICE_X0Y130; -INST "*/u_phy_calib/gen_gate.8.u_en_dqs_ff" LOC = SLICE_X0Y129; - -#INST "*/u_phy_calib/gen_gate.0.u_en_dqs_ff" LOC = SLICE_X0Y191; -#INST "*/u_phy_calib/gen_gate.1.u_en_dqs_ff" LOC = SLICE_X0Y190; -#INST "*/u_phy_calib/gen_gate.2.u_en_dqs_ff" LOC = SLICE_X0Y189; -#INST "*/u_phy_calib/gen_gate.3.u_en_dqs_ff" LOC = SLICE_X0Y171; -#INST "*/u_phy_calib/gen_gate.4.u_en_dqs_ff" LOC = SLICE_X0Y170; -#INST "*/u_phy_calib/gen_gate.5.u_en_dqs_ff" LOC = SLICE_X0Y169; -#INST "*/u_phy_calib/gen_gate.6.u_en_dqs_ff" LOC = SLICE_X0Y151; -#INST "*/u_phy_calib/gen_gate.7.u_en_dqs_ff" LOC = SLICE_X0Y150; -#INST "*/u_phy_calib/gen_gate.8.u_en_dqs_ff" LOC = SLICE_X0Y149; - -# Control for DQS gate - from fabric flop. Prevent "runaway" delay - -# two parts to this path: (1) from fabric flop to IDELAY, (2) from -# IDELAY to asynchronous reset of IDDR that drives the DQ CE's -# This can be relaxed by the user for lower frequencies: -# 300MHz = 850ps, 267MHz = 900ps. At 200MHz = 950ps. -# In general PAR should be able to route this -# within 900ps over all speed grades. -NET "*/u_phy_io/en_dqs[*]" MAXDELAY = 600 ps; -NET "*/u_phy_io/gen_dqs*.u_iob_dqs/en_dqs_sync" MAXDELAY = 800 ps; - -############################################################################### -# "Half-cycle" path constraint from IOB flip-flop to CE pin for all DQ IDDR's -# for DQS Read Post amble Glitch Squelch circuit -############################################################################### - -# Max delay from output of IOB flip-flop to CE input of DQ IDDRs = -# tRPST + some slack where slack account for rise-time of DQS on board. -# For now assume slack = 0.400ns (based on initial SPICE simulations, -# assumes use of ODT), so time = 0.4*Tcyc + 0.40ns = 1.6ns @333MHz -INST "*/gen_dqs.*.u_iob_dqs/u_iddr_dq_ce" TNM = "TNM_DQ_CE_IDDR"; -INST "*/gen_dq.*.u_iob_dq/gen_stg2_*.u_iddr_dq" TNM = "TNM_DQS_FLOPS"; -TIMESPEC "TS_DQ_CE" = FROM "TNM_DQ_CE_IDDR" TO "TNM_DQS_FLOPS" 2.4 ns; - - - - - -///////////////////////////////////////////////////// -// Flash -///////////////////////////////////////////////////// - -NET "FLASH_WE_B" LOC ="AM28"; -NET "FLASH_WAIT" LOC ="W11"; -NET "FLASH_RESET_B" LOC ="K7"; -NET "FLASH_OE_B" LOC ="AM13"; -NET "FLASH_D(9)" LOC ="AL15"; -NET "FLASH_D(8)" LOC ="AL16"; -NET "FLASH_D(7)" LOC ="AN13"; -NET "FLASH_D(6)" LOC ="AP13"; -NET "FLASH_D(5)" LOC ="AK28"; -NET "FLASH_D(4)" LOC ="AK29"; -NET "FLASH_D(3)" LOC ="AN14"; -NET "FLASH_D(2)" LOC ="AM14"; -NET "FLASH_D(15)" LOC ="AN30"; -NET "FLASH_D(14)" LOC ="AP30"; -NET "FLASH_D(13)" LOC ="AK17"; -NET "FLASH_D(12)" LOC ="AL17"; -NET "FLASH_D(11)" LOC ="AN29"; -NET "FLASH_D(10)" LOC ="AP28"; -NET "FLASH_D(1)" LOC ="AK27"; -NET "FLASH_D(0)" LOC ="AJ26"; -NET "FLASH_CLK" LOC ="AN28"; -NET "FLASH_CE_B" LOC ="AL14"; -NET "FLASH_ADV_B" LOC ="AL29"; -NET "FLASH_A(9)" LOC ="N15"; -NET "FLASH_A(8)" LOC ="N14"; -NET "FLASH_A(7)" LOC ="N28"; -NET "FLASH_A(6)" LOC ="N29"; -NET "FLASH_A(5)" LOC ="M14"; -NET "FLASH_A(4)" LOC ="M13"; -NET "FLASH_A(3)" LOC ="N30"; -NET "FLASH_A(21)" LOC ="AL30"; -NET "FLASH_A(20)" LOC ="AM29"; -NET "FLASH_A(2)" LOC ="M29"; -NET "FLASH_A(19)" LOC ="N25"; -NET "FLASH_A(18)" LOC ="P25"; -NET "FLASH_A(17)" LOC ="P18"; -NET "FLASH_A(16)" LOC ="P17"; -NET "FLASH_A(15)" LOC ="P26"; -NET "FLASH_A(14)" LOC ="N26"; -NET "FLASH_A(13)" LOC ="M16"; -NET "FLASH_A(12)" LOC ="N16"; -NET "FLASH_A(11)" LOC ="P27"; -NET "FLASH_A(10)" LOC ="P28"; -NET "FLASH_A(1)" LOC ="N13"; -NET "FLASH_A(0)" LOC ="P13"; -# These are mapped exclusively for flash on the SoC -#NET "SYSACE_FLASH_CFGA1" LOC ="AK12"; -#NET "SYSACE_FLASH_CFGA0" LOC ="AK13"; -#NET "FLASH_A(23)" LOC ="AK12"; -#NET "FLASH_A(22)" LOC ="AK13"; - -///////////////////////////////////////////////////// -// DDR2 -///////////////////////////////////////////////////// - -# DIMM1 -NET "DIMM1_DDR2_WE_B" LOC ="V40"; -NET "DIMM1_DDR2_S_B(0)" LOC ="AE37"; -NET "DIMM1_DDR2_S_B(1)" LOC ="AU42"; -NET "DIMM1_DDR2_RAS_B" LOC ="V41"; -NET "DIMM1_DDR2_PLL_CLKIN_P" LOC ="Y39"; -NET "DIMM1_DDR2_PLL_CLKIN_N" LOC ="Y38"; -NET "DIMM1_DDR2_ODT(1)" LOC ="AF37"; -NET "DIMM1_DDR2_ODT(0)" LOC ="AV41"; -NET "DIMM1_DDR2_DQS_P(8)" LOC ="AH34"; -NET "DIMM1_DDR2_DQS_N(8)" LOC ="AG34"; -NET "DIMM1_DDR2_DQS_P(7)" LOC ="AF35"; -NET "DIMM1_DDR2_DQS_N(7)" LOC ="AF36"; -NET "DIMM1_DDR2_DQS_P(6)" LOC ="AE35"; -NET "DIMM1_DDR2_DQS_N(6)" LOC ="AF34"; -NET "DIMM1_DDR2_DQS_P(5)" LOC ="AT39"; -NET "DIMM1_DDR2_DQS_N(5)" LOC ="AR39"; -NET "DIMM1_DDR2_DQS_P(4)" LOC ="AV40"; -NET "DIMM1_DDR2_DQS_N(4)" LOC ="AU39"; -NET "DIMM1_DDR2_DQS_P(3)" LOC ="AR40"; -NET "DIMM1_DDR2_DQS_N(3)" LOC ="AT40"; -NET "DIMM1_DDR2_DQS_P(2)" LOC ="AC40"; -NET "DIMM1_DDR2_DQS_N(2)" LOC ="AC39"; -NET "DIMM1_DDR2_DQS_P(1)" LOC ="AE40"; -NET "DIMM1_DDR2_DQS_N(1)" LOC ="AD40"; -NET "DIMM1_DDR2_DQS_P(0)" LOC ="AB39"; -NET "DIMM1_DDR2_DQS_N(0)" LOC ="AC38"; -NET "DIMM1_DDR2_DQM(8)" LOC ="AD33"; -NET "DIMM1_DDR2_DQM(7)" LOC ="AV39"; -NET "DIMM1_DDR2_DQM(6)" LOC ="AK35"; -NET "DIMM1_DDR2_DQM(5)" LOC ="AN40"; -NET "DIMM1_DDR2_DQM(4)" LOC ="AG37"; -NET "DIMM1_DDR2_DQM(3)" LOC ="AC36"; -NET "DIMM1_DDR2_DQM(2)" LOC ="AP41"; -NET "DIMM1_DDR2_DQM(1)" LOC ="AH41"; -NET "DIMM1_DDR2_DQM(0)" LOC ="AC41"; -NET "DIMM1_DDR2_DQ(9)" LOC ="AF42"; -NET "DIMM1_DDR2_DQ(8)" LOC ="AE42"; -NET "DIMM1_DDR2_DQ(7)" LOC ="AF41"; -NET "DIMM1_DDR2_DQ(63)" LOC ="AN34"; -NET "DIMM1_DDR2_DQ(62)" LOC ="AU38"; -NET "DIMM1_DDR2_DQ(61)" LOC ="AR37"; -NET "DIMM1_DDR2_DQ(60)" LOC ="AN36"; -NET "DIMM1_DDR2_DQ(6)" LOC ="AF40"; -NET "DIMM1_DDR2_DQ(59)" LOC ="AU37"; -NET "DIMM1_DDR2_DQ(58)" LOC ="AT36"; -NET "DIMM1_DDR2_DQ(57)" LOC ="AT37"; -NET "DIMM1_DDR2_DQ(56)" LOC ="AP35"; -NET "DIMM1_DDR2_DQ(55)" LOC ="AK34"; -NET "DIMM1_DDR2_DQ(54)" LOC ="AR38"; -NET "DIMM1_DDR2_DQ(53)" LOC ="AL36"; -NET "DIMM1_DDR2_DQ(52)" LOC ="AE32"; -NET "DIMM1_DDR2_DQ(51)" LOC ="AL34"; -NET "DIMM1_DDR2_DQ(50)" LOC ="AM34"; -NET "DIMM1_DDR2_DQ(5)" LOC ="AB42"; -NET "DIMM1_DDR2_DQ(49)" LOC ="AM36"; -NET "DIMM1_DDR2_DQ(48)" LOC ="AL35"; -NET "DIMM1_DDR2_DQ(47)" LOC ="AN39"; -NET "DIMM1_DDR2_DQ(46)" LOC ="AN38"; -NET "DIMM1_DDR2_DQ(45)" LOC ="AK38"; -NET "DIMM1_DDR2_DQ(44)" LOC ="AL39"; -NET "DIMM1_DDR2_DQ(43)" LOC ="AP38"; -NET "DIMM1_DDR2_DQ(42)" LOC ="AM37"; -NET "DIMM1_DDR2_DQ(41)" LOC ="AP40"; -NET "DIMM1_DDR2_DQ(40)" LOC ="AM38"; -NET "DIMM1_DDR2_DQ(4)" LOC ="AB41"; -NET "DIMM1_DDR2_DQ(39)" LOC ="AJ37"; -NET "DIMM1_DDR2_DQ(38)" LOC ="AK39"; -NET "DIMM1_DDR2_DQ(37)" LOC ="AG38"; -NET "DIMM1_DDR2_DQ(36)" LOC ="AF39"; -NET "DIMM1_DDR2_DQ(35)" LOC ="AM39"; -NET "DIMM1_DDR2_DQ(34)" LOC ="AL37"; -NET "DIMM1_DDR2_DQ(33)" LOC ="AH38"; -NET "DIMM1_DDR2_DQ(32)" LOC ="AJ38"; -NET "DIMM1_DDR2_DQ(31)" LOC ="AD37"; -NET "DIMM1_DDR2_DQ(30)" LOC ="AD35"; -NET "DIMM1_DDR2_DQ(3)" LOC ="AD41"; -NET "DIMM1_DDR2_DQ(29)" LOC ="AC35"; -NET "DIMM1_DDR2_DQ(28)" LOC ="AB34"; -NET "DIMM1_DDR2_DQ(27)" LOC ="AE38"; -NET "DIMM1_DDR2_DQ(26)" LOC ="AD36"; -NET "DIMM1_DDR2_DQ(25)" LOC ="AC34"; -NET "DIMM1_DDR2_DQ(24)" LOC ="AB36"; -NET "DIMM1_DDR2_DQ(23)" LOC ="AT41"; -NET "DIMM1_DDR2_DQ(22)" LOC ="AT42"; -NET "DIMM1_DDR2_DQ(21)" LOC ="AM41"; -NET "DIMM1_DDR2_DQ(20)" LOC ="AN41"; -NET "DIMM1_DDR2_DQ(2)" LOC ="AD42"; -NET "DIMM1_DDR2_DQ(19)" LOC ="AR42"; -NET "DIMM1_DDR2_DQ(18)" LOC ="AP42"; -NET "DIMM1_DDR2_DQ(17)" LOC ="AL42"; -NET "DIMM1_DDR2_DQ(16)" LOC ="AK42"; -NET "DIMM1_DDR2_DQ(15)" LOC ="AL41"; -NET "DIMM1_DDR2_DQ(14)" LOC ="AJ42"; -NET "DIMM1_DDR2_DQ(13)" LOC ="AH40"; -NET "DIMM1_DDR2_DQ(12)" LOC ="AG42"; -NET "DIMM1_DDR2_DQ(11)" LOC ="AJ40"; -NET "DIMM1_DDR2_DQ(10)" LOC ="AJ41"; -NET "DIMM1_DDR2_DQ(1)" LOC ="AB37"; -NET "DIMM1_DDR2_DQ(0)" LOC ="AB38"; -NET "DIMM1_DDR2_CKE(1)" LOC ="AE39"; -NET "DIMM1_DDR2_CKE(0)" LOC ="AU41"; -NET "DIMM1_DDR2_CB(7)" LOC ="AE33"; -NET "DIMM1_DDR2_CB(6)" LOC ="AE34"; -NET "DIMM1_DDR2_CB(5)" LOC ="AC33"; -NET "DIMM1_DDR2_CB(4)" LOC ="AB32"; -NET "DIMM1_DDR2_CB(3)" LOC ="AH36"; -NET "DIMM1_DDR2_CB(2)" LOC ="AG36"; -NET "DIMM1_DDR2_CB(1)" LOC ="AD32"; -NET "DIMM1_DDR2_CB(0)" LOC ="AB33"; -NET "DIMM1_DDR2_CAS_B" LOC ="Y42"; -NET "DIMM1_DDR2_BA(2)" LOC ="AH35"; -NET "DIMM1_DDR2_BA(1)" LOC ="AJ36"; -NET "DIMM1_DDR2_BA(0)" LOC ="AJ35"; -NET "DIMM1_DDR2_A(9)" LOC ="F42"; -NET "DIMM1_DDR2_A(8)" LOC ="G42"; -NET "DIMM1_DDR2_A(7)" LOC ="J42"; -NET "DIMM1_DDR2_A(6)" LOC ="H41"; -NET "DIMM1_DDR2_A(5)" LOC ="M42"; -NET "DIMM1_DDR2_A(4)" LOC ="L42"; -NET "DIMM1_DDR2_A(3)" LOC ="K42"; -NET "DIMM1_DDR2_A(2)" LOC ="M41"; -NET "DIMM1_DDR2_A(13)" LOC ="W41"; -NET "DIMM1_DDR2_A(12)" LOC ="F41"; -NET "DIMM1_DDR2_A(11)" LOC ="G41"; -NET "DIMM1_DDR2_A(10)" LOC ="W42"; -NET "DIMM1_DDR2_A(1)" LOC ="J41"; -NET "DIMM1_DDR2_A(0)" LOC ="R40"; - -NET "DIMM*_DDR2_DQ[*]" IOSTANDARD = SSTL18_II_DCI; -NET "DIMM*_DDR2_DQM[*]" IOSTANDARD = SSTL18_II_DCI; -NET "DIMM0_DDR2_DQS_P[*]" IOSTANDARD = DIFF_SSTL18_II_DCI; -NET "DIMM0_DDR2_DQS_N[*]" IOSTANDARD = DIFF_SSTL18_II_DCI; -NET "DIMM1_DDR2_DQS_P[*]" IOSTANDARD = SSTL18_II_DCI; -NET "DIMM1_DDR2_DQS_N[*]" IOSTANDARD = SSTL18_II_DCI; -NET "DIMM*_DDR2_A[*]" IOSTANDARD = SSTL18_II; -NET "DIMM*_DDR2_BA[*]" IOSTANDARD = SSTL18_II; -NET "DIMM*_DDR2_WE_B" IOSTANDARD = SSTL18_II; -NET "DIMM*_DDR2_RAS_B" IOSTANDARD = SSTL18_II; -NET "DIMM*_DDR2_CAS_B" IOSTANDARD = SSTL18_II; -NET "DIMM*_DDR2_S_B[*]" IOSTANDARD = SSTL18_II; -NET "DIMM*_DDR2_ODT[*]" IOSTANDARD = SSTL18_II; -NET "DIMM*_DDR2_CKE[*]" IOSTANDARD = SSTL18_II; -NET "DIMM*_DDR2_CB[*]" IOSTANDARD = SSTL18_II; -NET "DIMM0_DDR2_PLL_CLKIN_P" IOSTANDARD = DIFF_SSTL18_II; -NET "DIMM0_DDR2_PLL_CLKIN_N" IOSTANDARD = DIFF_SSTL18_II; -NET "DIMM1_DDR2_PLL_CLKIN_P" IOSTANDARD = SSTL18_II; -NET "DIMM1_DDR2_PLL_CLKIN_N" IOSTANDARD = SSTL18_II; - -NET "PHY0_*" IOSTANDARD = LVCMOS25; -NET "PHY1_*" IOSTANDARD = LVCMOS25; - -# DIMM0 -NET "DIMM0_DDR2_WE_B" LOC ="Y40"; -NET "DIMM0_DDR2_S_B(1)" LOC ="M37"; -NET "DIMM0_DDR2_S_B(0)" LOC ="U32"; -NET "DIMM0_DDR2_RAS_B" LOC ="W40"; -NET "DIMM0_DDR2_PLL_CLKIN_P" LOC ="AA40"; -NET "DIMM0_DDR2_PLL_CLKIN_N" LOC ="AA39"; -NET "DIMM0_DDR2_ODT(1)" LOC ="K35"; -NET "DIMM0_DDR2_ODT(0)" LOC ="U31"; -NET "DIMM0_DDR2_DQS_P(8)" LOC ="H40"; -NET "DIMM0_DDR2_DQS_N(8)" LOC ="J40"; -NET "DIMM0_DDR2_DQS_P(7)" LOC ="K38"; -NET "DIMM0_DDR2_DQS_N(7)" LOC ="J38"; -NET "DIMM0_DDR2_DQS_P(6)" LOC ="M38"; -NET "DIMM0_DDR2_DQS_N(6)" LOC ="L39"; -NET "DIMM0_DDR2_DQS_P(5)" LOC ="U36"; -NET "DIMM0_DDR2_DQS_N(5)" LOC ="V36"; -NET "DIMM0_DDR2_DQS_P(4)" LOC ="R35"; -NET "DIMM0_DDR2_DQS_N(4)" LOC ="T36"; -NET "DIMM0_DDR2_DQS_P(3)" LOC ="T34"; -NET "DIMM0_DDR2_DQS_N(3)" LOC ="U33"; -NET "DIMM0_DDR2_DQS_P(2)" LOC ="E32"; -NET "DIMM0_DDR2_DQS_N(2)" LOC ="E33"; -NET "DIMM0_DDR2_DQS_P(1)" LOC ="F31"; -NET "DIMM0_DDR2_DQS_N(1)" LOC ="F32"; -NET "DIMM0_DDR2_DQS_P(0)" LOC ="E34"; -NET "DIMM0_DDR2_DQS_N(0)" LOC ="F34"; -NET "DIMM0_DDR2_DQM(8)" LOC ="G39"; -NET "DIMM0_DDR2_DQM(7)" LOC ="W36"; -NET "DIMM0_DDR2_DQM(6)" LOC ="T39"; -NET "DIMM0_DDR2_DQM(5)" LOC ="V35"; -NET "DIMM0_DDR2_DQM(4)" LOC ="M36"; -NET "DIMM0_DDR2_DQM(3)" LOC ="F36"; -NET "DIMM0_DDR2_DQM(2)" LOC ="P33"; -NET "DIMM0_DDR2_DQM(1)" LOC ="L32"; -NET "DIMM0_DDR2_DQM(0)" LOC ="F35"; -NET "DIMM0_DDR2_DQ(9)" LOC ="L31"; -NET "DIMM0_DDR2_DQ(8)" LOC ="J33"; -NET "DIMM0_DDR2_DQ(7)" LOC ="H34"; -NET "DIMM0_DDR2_DQ(63)" LOC ="W35"; -NET "DIMM0_DDR2_DQ(62)" LOC ="W37"; -NET "DIMM0_DDR2_DQ(61)" LOC ="T37"; -NET "DIMM0_DDR2_DQ(60)" LOC ="P37"; -NET "DIMM0_DDR2_DQ(6)" LOC ="H31"; -NET "DIMM0_DDR2_DQ(59)" LOC ="Y34"; -NET "DIMM0_DDR2_DQ(58)" LOC ="AA34"; -NET "DIMM0_DDR2_DQ(57)" LOC ="AA36"; -NET "DIMM0_DDR2_DQ(56)" LOC ="AA35"; -NET "DIMM0_DDR2_DQ(55)" LOC ="V39"; -NET "DIMM0_DDR2_DQ(54)" LOC ="R37"; -NET "DIMM0_DDR2_DQ(53)" LOC ="R39"; -NET "DIMM0_DDR2_DQ(52)" LOC ="N38"; -NET "DIMM0_DDR2_DQ(51)" LOC ="W38"; -NET "DIMM0_DDR2_DQ(50)" LOC ="Y35"; -NET "DIMM0_DDR2_DQ(5)" LOC ="G33"; -NET "DIMM0_DDR2_DQ(49)" LOC ="P38"; -NET "DIMM0_DDR2_DQ(48)" LOC ="U38"; -NET "DIMM0_DDR2_DQ(47)" LOC ="W33"; -NET "DIMM0_DDR2_DQ(46)" LOC ="Y33"; -NET "DIMM0_DDR2_DQ(45)" LOC ="T35"; -NET "DIMM0_DDR2_DQ(44)" LOC ="R34"; -NET "DIMM0_DDR2_DQ(43)" LOC ="AA32"; -NET "DIMM0_DDR2_DQ(42)" LOC ="Y32"; -NET "DIMM0_DDR2_DQ(41)" LOC ="W32"; -NET "DIMM0_DDR2_DQ(40)" LOC ="V33"; -NET "DIMM0_DDR2_DQ(4)" LOC ="G32"; -NET "DIMM0_DDR2_DQ(39)" LOC ="P35"; -NET "DIMM0_DDR2_DQ(38)" LOC ="N36"; -NET "DIMM0_DDR2_DQ(37)" LOC ="L36"; -NET "DIMM0_DDR2_DQ(36)" LOC ="J35"; -NET "DIMM0_DDR2_DQ(35)" LOC ="U34"; -NET "DIMM0_DDR2_DQ(34)" LOC ="V34"; -NET "DIMM0_DDR2_DQ(33)" LOC ="P36"; -NET "DIMM0_DDR2_DQ(32)" LOC ="N35"; -NET "DIMM0_DDR2_DQ(31)" LOC ="J37"; -NET "DIMM0_DDR2_DQ(30)" LOC ="H35"; -NET "DIMM0_DDR2_DQ(3)" LOC ="H33"; -NET "DIMM0_DDR2_DQ(29)" LOC ="E38"; -NET "DIMM0_DDR2_DQ(28)" LOC ="D37"; -NET "DIMM0_DDR2_DQ(27)" LOC ="K37"; -NET "DIMM0_DDR2_DQ(26)" LOC ="J36"; -NET "DIMM0_DDR2_DQ(25)" LOC ="G36"; -NET "DIMM0_DDR2_DQ(24)" LOC ="F37"; -NET "DIMM0_DDR2_DQ(23)" LOC ="T31"; -NET "DIMM0_DDR2_DQ(22)" LOC ="R32"; -NET "DIMM0_DDR2_DQ(21)" LOC ="P31"; -NET "DIMM0_DDR2_DQ(20)" LOC ="N34"; -NET "DIMM0_DDR2_DQ(2)" LOC ="J31"; -NET "DIMM0_DDR2_DQ(19)" LOC ="T32"; -NET "DIMM0_DDR2_DQ(18)" LOC ="R33"; -NET "DIMM0_DDR2_DQ(17)" LOC ="P32"; -NET "DIMM0_DDR2_DQ(16)" LOC ="N33"; -NET "DIMM0_DDR2_DQ(15)" LOC ="N31"; -NET "DIMM0_DDR2_DQ(14)" LOC ="M32"; -NET "DIMM0_DDR2_DQ(13)" LOC ="K33"; -NET "DIMM0_DDR2_DQ(12)" LOC ="K32"; -NET "DIMM0_DDR2_DQ(11)" LOC ="M34"; -NET "DIMM0_DDR2_DQ(10)" LOC ="M33"; -NET "DIMM0_DDR2_DQ(1)" LOC ="G31"; -NET "DIMM0_DDR2_DQ(0)" LOC ="E35"; -NET "DIMM0_DDR2_CKE(1)" LOC ="L37"; -NET "DIMM0_DDR2_CKE(0)" LOC ="M31"; -NET "dimm0_ddr2_reset_n" IOSTANDARD = LVCMOS25; -NET "dimm0_ddr2_reset_n" LOC = "AG33" ; #Bank 11 -NET "DIMM0_DDR2_DQ(71)" LOC ="H39"; -NET "DIMM0_DDR2_DQ(70)" LOC ="G38"; -NET "DIMM0_DDR2_DQ(69)" LOC ="E39"; -NET "DIMM0_DDR2_DQ(68)" LOC ="E40"; -NET "DIMM0_DDR2_DQ(67)" LOC ="H38"; -NET "DIMM0_DDR2_DQ(66)" LOC ="K40"; -NET "DIMM0_DDR2_DQ(65)" LOC ="F39"; -NET "DIMM0_DDR2_DQ(64)" LOC ="F40"; -NET "DIMM0_DDR2_CB(7)" LOC ="H39"; -NET "DIMM0_DDR2_CB(6)" LOC ="G38"; -NET "DIMM0_DDR2_CB(5)" LOC ="E39"; -NET "DIMM0_DDR2_CB(4)" LOC ="E40"; -NET "DIMM0_DDR2_CB(3)" LOC ="H38"; -NET "DIMM0_DDR2_CB(2)" LOC ="K40"; -NET "DIMM0_DDR2_CB(1)" LOC ="F39"; -NET "DIMM0_DDR2_CB(0)" LOC ="F40"; -NET "DIMM0_DDR2_CAS_B" LOC ="AA37"; -NET "DIMM0_DDR2_BA(2)" LOC ="K39"; -NET "DIMM0_DDR2_BA(1)" LOC ="M39"; -NET "DIMM0_DDR2_BA(0)" LOC ="N39"; -NET "DIMM0_DDR2_A(9)" LOC ="L40"; -NET "DIMM0_DDR2_A(8)" LOC ="P42"; -NET "DIMM0_DDR2_A(7)" LOC ="R42"; -NET "DIMM0_DDR2_A(6)" LOC ="P41"; -NET "DIMM0_DDR2_A(5)" LOC ="T40"; -NET "DIMM0_DDR2_A(4)" LOC ="U42"; -NET "DIMM0_DDR2_A(3)" LOC ="T42"; -NET "DIMM0_DDR2_A(2)" LOC ="U41"; -NET "DIMM0_DDR2_A(13)" LOC ="Y37"; -NET "DIMM0_DDR2_A(12)" LOC ="N41"; -NET "DIMM0_DDR2_A(11)" LOC ="N40"; -NET "DIMM0_DDR2_A(10)" LOC ="AA41"; -NET "DIMM0_DDR2_A(1)" LOC ="P40"; -NET "DIMM0_DDR2_A(0)" LOC ="AA42"; - -///////////////////////////////////////////////////// -// Ethernet -///////////////////////////////////////////////////// - -# PHY 1 uses SGMII which is not supported by GRETH -#NET "PHY1_RESET_SGMII" LOC ="AL25"; -#NET "PHY1_MDIO" LOC ="AT32"; -#NET "PHY1_MDC" LOC ="AU31"; -#NET "PHY1_INT_SGMII" LOC ="AV31"; -#NET "SGMIICLK_QO_P" LOC ="C4"; -#NET "SGMIICLK_QO_N" LOC ="C3"; - -# PHY 0 -NET "PHY0_TXER" LOC ="AT31"; -NET "PHY0_TXD(3)" LOC ="AN31"; -NET "PHY0_TXD(2)" LOC ="AR32"; -NET "PHY0_TXD(1)" LOC ="AP32"; -NET "PHY0_TXD(0)" LOC ="AR33"; -NET "PHY0_TXCTL_TXEN" LOC ="AP31"; -NET "PHY0_TXCLK" LOC ="M26"; -NET "PHY0_RXER" LOC ="AP33"; -NET "PHY0_RXD(3)" LOC ="AM33"; -NET "PHY0_RXD(2)" LOC ="AK33"; -NET "PHY0_RXD(1)" LOC ="AJ33"; -NET "PHY0_RXD(0)" LOC ="AJ32"; -NET "PHY0_RXCTL_RXDV" LOC ="AN33"; -NET "PHY0_RXCLK" LOC ="J17"; -NET "PHY0_RESET" LOC ="AK32"; -NET "PHY0_MDIO" LOC ="AL31"; -NET "PHY0_MDC" LOC ="AM32"; -# Not used by GRETH -#NET "PHY0_INT" LOC ="AL32"; -# Only for RGMII, which is not supported -#NET "PHY0_GTXCLK" LOC ="AM31"; - -///////////////////////////////////////////////////// -// System ACE MPU -///////////////////////////////////////////////////// - -NET "SYSACE_MPWE" LOC ="AR8"; -NET "SYSACE_MPOE" LOC ="AK10"; -NET "SYSACE_MPIRQ" LOC ="AK9"; -NET "SYSACE_MPD(9)" LOC ="AV5"; -NET "SYSACE_MPD(8)" LOC ="AV6"; -NET "SYSACE_MPD(7)" LOC ="AH11"; -NET "SYSACE_MPD(6)" LOC ="AH10"; -NET "SYSACE_MPD(5)" LOC ="AU6"; -NET "SYSACE_MPD(4)" LOC ="AT5"; -NET "SYSACE_MPD(3)" LOC ="AH9"; -NET "SYSACE_MPD(2)" LOC ="AG9"; -NET "SYSACE_MPD(15)" LOC ="AK8"; -NET "SYSACE_MPD(14)" LOC ="AP8"; -NET "SYSACE_MPD(13)" LOC ="AT7"; -NET "SYSACE_MPD(12)" LOC ="AJ8"; -NET "SYSACE_MPD(11)" LOC ="AJ10"; -NET "SYSACE_MPD(10)" LOC ="AJ11"; -NET "SYSACE_MPD(1)" LOC ="AR5"; -NET "SYSACE_MPD(0)" LOC ="AT6"; -NET "SYSACE_MPCE" LOC ="AN8"; -# Not used -#NET "SYSACE_MPBRDY" LOC ="AN4"; -NET "SYSACE_MPA(6)" LOC ="AG11"; -NET "SYSACE_MPA(5)" LOC ="AG12"; -NET "SYSACE_MPA(4)" LOC ="AM8"; -NET "SYSACE_MPA(3)" LOC ="AM7"; -NET "SYSACE_MPA(2)" LOC ="AM6"; -NET "SYSACE_MPA(1)" LOC ="AN6"; -NET "SYSACE_MPA(0)" LOC ="AR7"; -# Removed -#NET "SYSACE_FLASH_CFGA1" LOC ="AK12"; -#NET "SYSACE_FLASH_CFGA0" LOC ="AK13"; - -///////////////////////////////////////////////////// -// Green LEDs -///////////////////////////////////////////////////// - -NET "DBG_LED(3)" LOC ="AL6"; -NET "DBG_LED(2)" LOC ="AN5"; -NET "DBG_LED(1)" LOC ="AP6"; -NET "DBG_LED(0)" LOC ="AL7"; - -///////////////////////////////////////////////////// -// Red/Green LEDs -///////////////////////////////////////////////////// - -NET "OPB_BUS_ERROR" LOC ="AL19"; -NET "PLB_BUS_ERROR" LOC ="AK24"; -#NET "FPGA_DONE" LOC ="R14"; -#NET "FPGA_INIT" LOC ="T14"; - -///////////////////////////////////////////////////// -// LCD -///////////////////////////////////////////////////// - -#NET "FPGA_LCD_RW" LOC ="Y9"; -#NET "FPGA_LCD_RS" LOC ="Y8"; -#NET "FPGA_LCD_E" LOC ="W10"; -#NET "FPGA_LCD_DB(7)" LOC ="Y10"; -#NET "FPGA_LCD_DB(6)" LOC ="AA9"; -#NET "FPGA_LCD_DB(5)" LOC ="AA10"; -#NET "FPGA_LCD_DB(4)" LOC ="AA11"; -#NET "FPGA_LCD_DB(3)" LOC ="T4"; -#NET "FPGA_LCD_DB(2)" LOC ="T5"; -#NET "FPGA_LCD_DB(1)" LOC ="R5"; -#NET "FPGA_LCD_DB(0)" LOC ="R4"; - -///////////////////////////////////////////////////// -// JTAG Trace/Debug -///////////////////////////////////////////////////// - -#NET "ATCB_CLK_R" LOC ="J16"; -#NET "TRC_TS6" LOC ="AR17"; -#NET "TRC_TS5" LOC ="AP17"; -#NET "TRC_TS4" LOC ="AT27"; -#NET "TRC_TS3" LOC ="AU28"; -#NET "TRC_TS2" LOC ="AT16"; -#NET "TRC_TS1" LOC ="AT17"; -#NET "TRC_TS0" LOC ="AT29"; -#NET "TRC_ES4" LOC ="AR15"; -#NET "TRC_ES3" LOC ="AT26"; -#NET "TRC_ES2" LOC ="AT15"; -#NET "TRC_ES1" LOC ="AN20"; -#NET "TRC_ES0" LOC ="AN19"; -#NET "TRC_CLK_R" LOC ="AR27"; -#NET "TRC_BS2_BR2" LOC ="AN18"; -#NET "TRC_BS1_BR1" LOC ="AM18"; -#NET "TRC_BS0_BR0" LOC ="AN26"; -#NET "CPU_TRST_B" LOC ="AT30"; -#NET "CPU_TMS" LOC ="AR14"; -#NET "CPU_TDO_TMP" LOC ="AR28"; -#NET "CPU_TDI" LOC ="AR30"; -#NET "CPU_TCK" LOC ="AT14"; -#NET "CPU_HALT_B" LOC ="AR29"; -#NET "ATD_4" LOC ="AM24"; -#NET "ATD_3" LOC ="AT19"; -#NET "ATD_2" LOC ="AP25"; -#NET "ATD_1" LOC ="AN25"; -#NET "ATD_0" LOC ="AP26"; - -///////////////////////////////////////////////////// -// DVI -///////////////////////////////////////////////////// - -NET "DVI_XCLK_P" LOC ="AG8"; -NET "DVI_XCLK_N" LOC ="AH8"; -NET "DVI_V" LOC ="AM17"; -NET "DVI_RESET_B" LOC ="AM9"; -NET "DVI_H" LOC ="AP27"; -NET "DVI_GPIO1" LOC ="AN9"; -NET "DVI_DE" LOC ="M8"; -NET "DVI_D(9)" LOC ="AK15"; -NET "DVI_D(8)" LOC ="AM16"; -NET "DVI_D(7)" LOC ="AM27"; -NET "DVI_D(6)" LOC ="AM26"; -NET "DVI_D(5)" LOC ="AN15"; -NET "DVI_D(4)" LOC ="AN16"; -NET "DVI_D(3)" LOC ="AL27"; -NET "DVI_D(2)" LOC ="AL26"; -NET "DVI_D(11)" LOC ="AK30"; -NET "DVI_D(10)" LOC ="AJ30"; -NET "DVI_D(1)" LOC ="AP16"; -NET "DVI_D(0)" LOC ="AP15"; - -///////////////////////////////////////////////////// -// PCI -///////////////////////////////////////////////////// - -NET "PCI_P_TRDY_B" LOC ="V10" | PULLUP | BYPASS; -NET "PCI_P_STOP_B" LOC ="G9" | PULLUP | BYPASS; -NET "PCI_P_SERR_B" LOC ="G8" | PULLUP | BYPASS; -NET "PCI_P_RST_B" LOC ="H11" | PULLUP | BYPASS; -NET "PCI_P_REQ_B(4)" LOC ="R7"; -NET "PCI_P_REQ_B(3)" LOC ="F6"; -NET "PCI_P_REQ_B(2)" LOC ="D7"; -NET "PCI_P_REQ_B(1)" LOC ="R8"; -NET "PCI_P_REQ_B(0)" LOC ="E7"; -# The tools insist on disregarding the IOSTANDARD of the PCI_P_REQ pads even -# though the pads should not be optimized away when disabling the PCI core. -NET "PCI_P_REQ_B(*)" IOSTANDARD="PCI33_3" | PULLUP; -NET "PCI_P_PERR_B" LOC ="G7" | PULLUP | BYPASS; -NET "PCI_P_PAR" LOC ="E8" | PULLUP | BYPASS; -NET "PCI_P_LOCK_B" LOC ="J12" | PULLUP | BYPASS; -NET "PCI_P_IRDY_B" LOC ="P8" | PULLUP | BYPASS; -NET "PCI_P_INTD_B" LOC ="F11"; -NET "PCI_P_INTC_B" LOC ="F12"; -NET "PCI_P_INTB_B" LOC ="G11"; -NET "PCI_P_INTA_B" LOC ="G12"; -NET "PCI_P_GNT_B(4)" LOC ="E5"; -NET "PCI_P_GNT_B(3)" LOC ="R9"; -NET "PCI_P_GNT_B(2)" LOC ="F5"; -NET "PCI_P_GNT_B(1)" LOC ="F7"; -NET "PCI_P_GNT_B(0)" LOC ="T9"; -NET "PCI_P_GNT_B(*)" PULLUP; -NET "PCI_P_FRAME_B" LOC ="P7" | PULLUP | BYPASS; -NET "PCI_P_DEVSEL_B" LOC ="F9" | PULLUP | BYPASS; -NET "PCI_P_CLK5_R" LOC ="V9"; -NET "PCI_P_CLK5" LOC ="L16"; -NET "PCI_P_CLK4_R" LOC ="U11"; -NET "PCI_P_CLK3_R" LOC ="M9"; -NET "PCI_P_CLK1_R" LOC ="U9"; -NET "PCI_P_CLK0_R" LOC ="U8"; -NET "PCI_P_CBE_B(3)" LOC ="F15"; -NET "PCI_P_CBE_B(2)" LOC ="N9"; -NET "PCI_P_CBE_B(1)" LOC ="N8"; -NET "PCI_P_CBE_B(0)" LOC ="E9"; -NET "PCI_P_CBE_B(*)" BYPASS; -NET "PCI_P_AD(9)" LOC ="P12"; -NET "PCI_P_AD(8)" LOC ="E12"; -NET "PCI_P_AD(7)" LOC ="D12"; -NET "PCI_P_AD(6)" LOC ="P11"; -NET "PCI_P_AD(5)" LOC ="N10"; -NET "PCI_P_AD(4)" LOC ="D13"; -NET "PCI_P_AD(31)" LOC ="F10"; -NET "PCI_P_AD(30)" LOC ="K14"; -NET "PCI_P_AD(3)" LOC ="E14"; -NET "PCI_P_AD(29)" LOC ="K13"; -NET "PCI_P_AD(28)" LOC ="K12"; -NET "PCI_P_AD(27)" LOC ="J11"; -NET "PCI_P_AD(26)" LOC ="J13"; -NET "PCI_P_AD(25)" LOC ="H13"; -NET "PCI_P_AD(24)" LOC ="H10"; -NET "PCI_P_AD(23)" LOC ="J10"; -NET "PCI_P_AD(22)" LOC ="H14"; -NET "PCI_P_AD(21)" LOC ="H15"; -NET "PCI_P_AD(20)" LOC ="K10"; -NET "PCI_P_AD(2)" LOC ="R10"; -NET "PCI_P_AD(19)" LOC ="L10"; -NET "PCI_P_AD(18)" LOC ="L12"; -NET "PCI_P_AD(17)" LOC ="L11"; -NET "PCI_P_AD(16)" LOC ="G13"; -NET "PCI_P_AD(15)" LOC ="G14"; -NET "PCI_P_AD(14)" LOC ="M11"; -NET "PCI_P_AD(13)" LOC ="M12"; -NET "PCI_P_AD(12)" LOC ="F14"; -NET "PCI_P_AD(11)" LOC ="E13"; -NET "PCI_P_AD(10)" LOC ="N11"; -NET "PCI_P_AD(1)" LOC ="P10"; -NET "PCI_P_AD(0)" LOC ="E15"; -NET "PCI_P_AD(*)" BYPASS; -#NET "PCI_FPGA_IDSEL" LOC ="E10"; - -# Southbridge sideband -NET "SBR_PWG_RSM_RSTJ" LOC ="M17"; -NET "SBR_NMI_R" LOC ="AU29"; -NET "SBR_INTR_R" LOC ="K28"; -NET "SBR_IDE_RST_B" LOC ="AR19"; - -///////////////////////////////////////////////////// -// IIC/SMBus -///////////////////////////////////////////////////// - -NET "IIC_SDA_DVI" LOC ="M7"; -NET "IIC_SCL_DVI" LOC ="L9"; - -NET "FPGA_SDA" LOC ="K8"; -NET "FPGA_SCL" LOC ="L7"; -NET "IIC_THERM_B" LOC ="AN24"; -NET "IIC_RESET_B" LOC ="AK19"; -NET "IIC_IRQ_B" LOC ="AK25"; -NET "IIC_ALERT_B" LOC ="AK18"; - -///////////////////////////////////////////////////// -// SPI -///////////////////////////////////////////////////// - -NET "SPI_DATA_OUT" LOC ="AP7"; -NET "SPI_DATA_IN" LOC ="AP5"; -NET "SPI_DATA_CS_B" LOC ="AL10"; -NET "SPI_CLK" LOC ="AL9"; - -///////////////////////////////////////////////////// -// UARTs -///////////////////////////////////////////////////// - -NET "UART1_TXD" LOC ="T10"; -NET "UART1_RXD" LOC ="V11"; -NET "UART1_RTS_B" LOC ="K9"; -NET "UART1_CTS_B" LOC ="J8"; -NET "UART0_TXD" LOC ="H9"; -NET "UART0_RXD" LOC ="T11"; -NET "UART0_RTS_B" LOC ="J7"; -# Not used by AHBUART: -#NET "UART0_CTS_B" LOC ="H8"; - -///////////////////////////////////////////////////// -// System monitor -///////////////////////////////////////////////////// - -#NET "TEST_MON_VREFP" LOC ="AB22"; -NET "TEST_MON_VP0_P" LOC ="AA22"; -NET "TEST_MON_VN0_N" LOC ="AB21"; -#NET "TEST_MON_AVDD" LOC ="Y22"; - -///////////////////////////////////////////////////// -// PCI Express -///////////////////////////////////////////////////// - -# Slot A -#NET "GTP122_PCIE_SLOTA_CLK_P" LOC ="AT4"; -#NET "GTP122_PCIE_SLOTA_CLK_N" LOC ="AT3"; -#NET "GTP126_PCIE_SLOTA_CLK_P" LOC ="AW4"; -#NET "GTP126_PCIE_SLOTA_CLK_N" LOC ="AY4"; -#NET "PCIE_SLOTA_WAKE_B_R" LOC ="K17"; -#NET "PCIE_SLOTA_PRSNT2_B_R" LOC ="M28"; -#NET "PCIE_SLOTA_PERST_B" LOC ="L27"; -#NET "GTP_122_TX1_P_C" LOC ="AW2"; -#NET "GTP_122_TX1_N_C" LOC ="AV2"; -#NET "GTP_122_TX0_P_C" LOC ="AP2"; -#NET "GTP_122_TX0_N_C" LOC ="AR2"; -#NET "GTP_122_RX1_P" LOC ="AV1"; -#NET "GTP_122_RX1_N" LOC ="AU1"; -#NET "GTP_122_RX0_P" LOC ="AR1"; -#NET "GTP_122_RX0_N" LOC ="AT1"; -#NET "GTP_126_TX1_P_C" LOC ="BA6"; -#NET "GTP_126_TX1_N_C" LOC ="BA5"; -#NET "GTP_126_TX0_P_C" LOC ="BA1"; -#NET "GTP_126_TX0_N_C" LOC ="BA2"; -#NET "GTP_126_RX1_P" LOC ="BB5"; -#NET "GTP_126_RX1_N" LOC ="BB4"; -#NET "GTP_126_RX0_P" LOC ="BB2"; -#NET "GTP_126_RX0_N" LOC ="BB3"; -#NET "GTP_130_TX1_P_C" LOC ="BA12"; -#NET "GTP_130_TX1_N_C" LOC ="BA11"; -#NET "GTP_130_TX0_P_C" LOC ="BA7"; -#NET "GTP_130_TX0_N_C" LOC ="BA8"; -#NET "GTP_130_RX1_P" LOC ="BB11"; -#NET "GTP_130_RX1_N" LOC ="BB10"; -#NET "GTP_130_RX0_P" LOC ="BB8"; -#NET "GTP_130_RX0_N" LOC ="BB9"; -#NET "GTP_130_AVCC_PLL" LOC ="AY11"; -#NET "GTP_130_AVCC" LOC ="AW10"; -#NET "GTP_130_AVCC" LOC ="AY10"; - -# Slot B -#NET "GTP132_PCIE_SLOTB_CLK_P" LOC ="D16"; -#NET "GTP132_PCIE_SLOTB_CLK_N" LOC ="C16"; -#NET "GTP128_PCIE_SLOTB_CLK_P" LOC ="D10"; -#NET "GTP128_PCIE_SLOTB_CLK_N" LOC ="C10"; -#NET "PCIE_SLOTB_WAKE_B_R" LOC ="J30"; -#NET "PCIE_SLOTB_PRSNT2_B_R" LOC ="K15"; -#NET "PCIE_SLOTB_PERST_B" LOC ="L15"; -#NET "GTP_128_TX1_P_C" LOC ="B7"; -#NET "GTP_128_TX1_N_C" LOC ="B8"; -#NET "GTP_128_TX0_P_C" LOC ="B12"; -#NET "GTP_128_TX0_N_C" LOC ="B11"; -#NET "GTP_128_RX1_P" LOC ="A8"; -#NET "GTP_128_RX1_N" LOC ="A9"; -#NET "GTP_128_RX0_P" LOC ="A11"; -#NET "GTP_128_RX0_N" LOC ="A10"; -#NET "GTP_132_TX1_P_C" LOC ="B13"; -#NET "GTP_132_TX1_N_C" LOC ="B14"; -#NET "GTP_132_TX0_P_C" LOC ="B18"; -#NET "GTP_132_TX0_N_C" LOC ="B17"; -#NET "GTP_132_RX1_P" LOC ="A14"; -#NET "GTP_132_RX1_N" LOC ="A15"; -#NET "GTP_132_RX0_P" LOC ="A17"; -#NET "GTP_132_RX0_N" LOC ="A16"; - -///////////////////////////////////////////////////// -// Serial ATA -///////////////////////////////////////////////////// -#NET "GTP_120_TX1_P" LOC ="J2"; -#NET "GTP_120_TX1_N" LOC ="H2"; -#NET "GTP_120_TX0_P" LOC ="D2"; -#NET "GTP_120_TX0_N" LOC ="E2"; -#NET "GTP_120_RX1_P" LOC ="H1"; -#NET "GTP_120_RX1_N" LOC ="G1"; -#NET "GTP_120_RX0_P" LOC ="E1"; -#NET "GTP_120_RX0_N" LOC ="F1"; - -////////////////////////////////////////// -// Personality module -////////////////////////////////////////// -#NET "PM_IO_9_N" LOC ="J25"; -#NET "PM_IO_95_N" LOC ="AV34"; -#NET "PM_IO_94_P" LOC ="AV33"; -#NET "PM_IO_93_N" LOC ="AU33"; -#NET "PM_IO_92_P" LOC ="AU32"; -#NET "PM_IO_91_N" LOC ="AR34"; -#NET "PM_IO_90_P" LOC ="AR35"; -#NET "PM_IO_8_P" LOC ="K25"; -#NET "PM_IO_89_N" LOC ="AT34"; -#NET "PM_IO_88_P" LOC ="AU34"; -#NET "PM_IO_87_N" LOC ="AT35"; -#NET "PM_IO_86_P" LOC ="AU36"; -#NET "PM_IO_85_N" LOC ="AV36"; -#NET "PM_IO_84_P" LOC ="AV35"; -#NET "PM_IO_83_N" LOC ="AJ31"; -#NET "PM_IO_82_P" LOC ="AH31"; -#NET "PM_IO_81_N" LOC ="AG32"; -#NET "PM_IO_80_P" LOC ="AH33"; -#NET "PM_IO_7_N" LOC ="F17"; -#NET "PM_IO_79_N" LOC ="AG33"; -#NET "PM_IO_78_P" LOC ="AF32"; -#NET "PM_IO_77_N" LOC ="AF31"; -#NET "PM_IO_76_P" LOC ="AG31"; -#NET "PM_IO_75_N" LOC ="AF12"; -#NET "PM_IO_74_P" LOC ="AF11"; -#NET "PM_IO_73_N" LOC ="AE10"; -#NET "PM_IO_72_P" LOC ="AE9"; -#NET "PM_IO_71_N" LOC ="AF10"; -#NET "PM_IO_70_P" LOC ="AF9"; -#NET "PM_IO_6_P" LOC ="F16"; -#NET "PM_IO_69_N" LOC ="AE8"; -#NET "PM_IO_68_P" LOC ="AD8"; -#NET "PM_IO_67_N" LOC ="AE7"; -#NET "PM_IO_66_P" LOC ="AF7"; -#NET "PM_IO_65_N" LOC ="AD5"; -#NET "PM_IO_64_P" LOC ="AE5"; -#NET "PM_IO_63_N" LOC ="AG7"; -#NET "PM_IO_62_P" LOC ="AG6"; -#NET "PM_IO_61_N" LOC ="AF6"; -#NET "PM_IO_60_P" LOC ="AF5"; -#NET "PM_IO_5_N" LOC ="L25"; -#NET "PM_IO_59_N" LOC ="AC6"; -#NET "PM_IO_58_P" LOC ="AC5"; -#NET "PM_IO_57_N" LOC ="AB6"; -#NET "PM_IO_56_P" LOC ="AB7"; -#NET "PM_IO_55_N" LOC ="AH4"; -#NET "PM_IO_54_P" LOC ="AG4"; -#NET "PM_IO_53_N" LOC ="AD11"; -#NET "PM_IO_52_P" LOC ="AD10"; -#NET "PM_IO_51_N" LOC ="AH5"; -#NET "PM_IO_50_P" LOC ="AH6"; -#NET "PM_IO_4_P" LOC ="K24"; -#NET "PM_IO_49_N" LOC ="AC9"; -#NET "PM_IO_48_P" LOC ="AC8"; -#NET "PM_IO_47_N_J" LOC ="AJ5"; -#NET "PM_IO_46_P_J" LOC ="AJ6"; -#NET "PM_IO_45_N" LOC ="AB8"; -#NET "PM_IO_44_P" LOC ="AB9"; -#NET "PM_IO_43_N" LOC ="AK5"; -#NET "PM_IO_42_P" LOC ="AL5"; -#NET "PM_IO_41_N" LOC ="AC10"; -#NET "PM_IO_40_P" LOC ="AB11"; -#NET "PM_IO_3_N" LOC ="E17"; -#NET "PM_IO_3V_9_N" LOC ="U6"; -#NET "PM_IO_3V_8_N" LOC ="J5"; -#NET "PM_IO_3V_7_N" LOC ="M6"; -#NET "PM_IO_3V_6_P" LOC ="H6"; -#NET "PM_IO_3V_5_P" LOC ="N5"; -#NET "PM_IO_3V_4_P" LOC ="AA7"; -#NET "PM_IO_3V_3_P" LOC ="K4"; -#NET "PM_IO_3V_2_N" LOC ="K5"; -#NET "PM_IO_3V_25_N" LOC ="V6"; -#NET "PM_IO_3V_24_P" LOC ="T7"; -#NET "PM_IO_3V_23_N" LOC ="W7"; -#NET "PM_IO_3V_22_P" LOC ="L6"; -#NET "PM_IO_3V_21_N" LOC ="H5"; -#NET "PM_IO_3V_20_P" LOC ="G6"; -#NET "PM_IO_3V_1_N" LOC ="L5"; -#NET "PM_IO_3V_19_N" LOC ="T6"; -#NET "PM_IO_3V_18_P" LOC ="V5"; -#NET "PM_IO_3V_17_N" LOC ="N6"; -#NET "PM_IO_3V_16_N" LOC ="V8"; -#NET "PM_IO_3V_15_N" LOC ="W6"; -#NET "PM_IO_3V_14_P" LOC ="J6"; -#NET "PM_IO_3V_13_P" LOC ="U7"; -#NET "PM_IO_3V_12_P" LOC ="W8"; -#NET "PM_IO_3V_11_P" LOC ="Y7"; -#NET "PM_IO_3V_10_N" LOC ="AA6"; -#NET "PM_IO_3V_0_P" LOC ="W5"; -#NET "PM_IO_39_N" LOC ="AK7"; -#NET "PM_IO_38_P" LOC ="AJ7"; -#NET "PM_IO_37_N_J" LOC ="H30"; -#NET "PM_IO_36_P_J" LOC ="H29"; -#NET "PM_IO_35_N" LOC ="L19"; -#NET "PM_IO_34_P" LOC ="L20"; -#NET "PM_IO_33_N" LOC ="F29"; -#NET "PM_IO_32_P" LOC ="G29"; -#NET "PM_IO_31_N" LOC ="N18"; -#NET "PM_IO_30_P" LOC ="M18"; -#NET "PM_IO_2_P" LOC ="E18"; -#NET "PM_IO_29_N" LOC ="H28"; -#NET "PM_IO_28_P" LOC ="G28"; -#NET "PM_IO_27_N" LOC ="N19"; -#NET "PM_IO_26_P" LOC ="M19"; -#NET "PM_IO_25_N" LOC ="F27"; -#NET "PM_IO_24_P" LOC ="G27"; -#NET "PM_IO_23_N" LOC ="L26"; -#NET "PM_IO_22_P" LOC ="K27"; -#NET "PM_IO_21_N" LOC ="K19"; -#NET "PM_IO_20_P" LOC ="K18"; -#NET "PM_IO_1_N" LOC ="M24"; -#NET "PM_IO_19_N" LOC ="H18"; -#NET "PM_IO_18_P" LOC ="J18"; -#NET "PM_IO_17_N" LOC ="J27"; -#NET "PM_IO_16_P" LOC ="J28"; -#NET "PM_IO_15_N" LOC ="G17"; -#NET "PM_IO_14_P" LOC ="G18"; -#NET "PM_IO_13_N" LOC ="J26"; -#NET "PM_IO_12_P" LOC ="H26"; -#NET "PM_IO_11_N" LOC ="H16"; -#NET "PM_IO_10_P" LOC ="G16"; -#NET "PM_IO_0_P" LOC ="L24"; -#NET "PM_CLK_TOP" LOC ="M27"; -#NET "PM_CLK_BOT" LOC ="L14"; - -////////////////////////////////////////// -// RocketIO -////////////////////////////////////////// -#NET "GTP_VREF" LOC ="AA4"; -#NET "GTP_134_VTTTX" LOC ="AY13"; -#NET "GTP_134_VTTTX" LOC ="AY18"; -#NET "GTP_134_VTTRX" LOC ="AY14"; -#NET "GTP_134_TX1_P_C" LOC ="BA18"; -#NET "GTP_134_TX1_N_C" LOC ="BA17"; -#NET "GTP_134_TX0_P_C" LOC ="BA13"; -#NET "GTP_134_TX0_N_C" LOC ="BA14"; -#NET "GTP_134_RX1_P" LOC ="BB17"; -#NET "GTP_134_RX1_N" LOC ="BB16"; -#NET "GTP_134_RX0_P" LOC ="BB14"; -#NET "GTP_134_RX0_N" LOC ="BB15"; -#NET "GTP_134_AVCC_PLL" LOC ="AY17"; -#NET "GTP_134_AVCC" LOC ="AW16"; -#NET "GTP_134_AVCC" LOC ="AY16"; -#NET "GTP_132_VTTTX" LOC ="C13"; -#NET "GTP_132_VTTTX" LOC ="C18"; -#NET "GTP_132_VTTRX" LOC ="C17"; -#NET "GTP_132_AVCC_PLL" LOC ="C14"; -#NET "GTP_132_AVCC" LOC ="C15"; -#NET "GTP_132_AVCC" LOC ="D15"; -#NET "GTP_130_VTTTX" LOC ="AY12"; -#NET "GTP_130_VTTTX" LOC ="AY7"; -#NET "GTP_130_VTTRX" LOC ="AY8"; -#NET "GTP_128_VTTTX" LOC ="C12"; -#NET "GTP_128_VTTTX" LOC ="C7"; -#NET "GTP_128_VTTRX" LOC ="C11"; -#NET "GTP_128_AVCC_PLL" LOC ="C8"; -#NET "GTP_128_AVCC" LOC ="C9"; -#NET "GTP_128_AVCC" LOC ="D9"; -#NET "GTP_126_VTTTX" LOC ="AY1"; -#NET "GTP_126_VTTTX" LOC ="AY6"; -#NET "GTP_126_VTTRX" LOC ="AY2"; -#NET "GTP_126_AVCC_PLL" LOC ="AY5"; -#NET "GTP_126_AVCC" LOC ="AW5"; -#NET "GTP_126_AVCC" LOC ="AY3"; -#NET "GTP_124_VTTTX" LOC ="C1"; -#NET "GTP_124_VTTTX" LOC ="C6"; -#NET "GTP_124_VTTRX" LOC ="C5"; -#NET "GTP_124_TX1_P" LOC ="B1"; -#NET "GTP_124_TX1_N" LOC ="B2"; -#NET "GTP_124_TX0_P" LOC ="B6"; -#NET "GTP_124_TX0_N" LOC ="B5"; -#NET "GTP_124_RX1_P" LOC ="A2"; -#NET "GTP_124_RX1_N" LOC ="A3"; -#NET "GTP_124_RX0_P" LOC ="A5"; -#NET "GTP_124_RX0_N" LOC ="A4"; -#NET "GTP_124_RTERM" LOC ="Y5"; -#NET "GTP_124_AVCC_PLL" LOC ="C2"; -#NET "GTP_124_AVCC" LOC ="D4"; -#NET "GTP_124_AVCC" LOC ="D5"; -#NET "GTP_122_VTTTX" LOC ="AP3"; -#NET "GTP_122_VTTTX" LOC ="AW3"; -#NET "GTP_122_VTTRX" LOC ="AR3"; -#NET "GTP_122_AVCC_PLL" LOC ="AV3"; -#NET "GTP_122_AVCC" LOC ="AU3"; -#NET "GTP_122_AVCC" LOC ="AU4"; -#NET "GTP_120_VTTTX" LOC ="D3"; -#NET "GTP_120_VTTTX" LOC ="J3"; -#NET "GTP_120_VTTRX" LOC ="E3"; -#NET "GTP_120_AVCC_PLL" LOC ="H3"; -#NET "GTP_120_AVCC" LOC ="G3"; -#NET "GTP_120_AVCC" LOC ="G4"; -#NET "GTP_118_VTTTX" LOC ="AH3"; -#NET "GTP_118_VTTTX" LOC ="AN3"; -#NET "GTP_118_VTTRX" LOC ="AJ3"; -#NET "GTP_118_TX1_P" LOC ="AN2"; -#NET "GTP_118_TX1_N" LOC ="AM2"; -#NET "GTP_118_TX0_P" LOC ="AH2"; -#NET "GTP_118_TX0_N" LOC ="AJ2"; -#NET "GTP_118_RX1_P" LOC ="AM1"; -#NET "GTP_118_RX1_N" LOC ="AL1"; -#NET "GTP_118_RX0_P" LOC ="AJ1"; -#NET "GTP_118_RX0_N" LOC ="AK1"; -#NET "GTP_118_AVCC_PLL" LOC ="AM3"; -#NET "GTP_118_AVCC" LOC ="AL3"; -#NET "GTP_118_AVCC" LOC ="AL4"; -#NET "GTP_116_VTTTX" LOC ="K3"; -#NET "GTP_116_VTTTX" LOC ="R3"; -#NET "GTP_116_VTTRX" LOC ="L3"; -#NET "GTP_116_TX1_P" LOC ="R2"; -#NET "GTP_116_TX1_N" LOC ="P2"; -#NET "GTP_116_TX0_P" LOC ="K2"; -#NET "GTP_116_TX0_N" LOC ="L2"; -#NET "GTP_116_RX1_P" LOC ="P1"; -#NET "GTP_116_RX1_N" LOC ="N1"; -#NET "GTP_116_RX0_P" LOC ="L1"; -#NET "GTP_116_RX0_N" LOC ="M1"; -#NET "GTP_116_AVCC_PLL" LOC ="P3"; -#NET "GTP_116_AVCC" LOC ="N3"; -#NET "GTP_116_AVCC" LOC ="N4"; -#NET "GTP_114_VTTTX" LOC ="AB3"; -#NET "GTP_114_VTTTX" LOC ="AG3"; -#NET "GTP_114_VTTRX" LOC ="AC3"; -#NET "GTP_114_TX1_P" LOC ="AG2"; -#NET "GTP_114_TX1_N" LOC ="AF2"; -#NET "GTP_114_TX0_P" LOC ="AB2"; -#NET "GTP_114_TX0_N" LOC ="AC2"; -#NET "GTP_114_RX1_P" LOC ="AF1"; -#NET "GTP_114_RX1_N" LOC ="AE1"; -#NET "GTP_114_RX0_P" LOC ="AC1"; -#NET "GTP_114_RX0_N" LOC ="AD1"; -#NET "GTP_114_GTPCLK_P" LOC ="AD4"; -#NET "GTP_114_GTPCLK_N" LOC ="AD3"; -#NET "GTP_114_AVCC_PLL" LOC ="AF3"; -#NET "GTP_114_AVCC" LOC ="AE3"; -#NET "GTP_114_AVCC" LOC ="AE4"; -#NET "GTP_112_VTTTX" LOC ="AA3"; -#NET "GTP_112_VTTTX" LOC ="T3"; -#NET "GTP_112_VTTRX" LOC ="U3"; -#NET "GTP_112_TX1_P" LOC ="AA2"; -#NET "GTP_112_TX1_N" LOC ="Y2"; -#NET "GTP_112_TX0_P" LOC ="T2"; -#NET "GTP_112_TX0_N" LOC ="U2"; -#NET "GTP_112_RX1_P" LOC ="Y1"; -#NET "GTP_112_RX1_N" LOC ="W1"; -#NET "GTP_112_RX0_P" LOC ="U1"; -#NET "GTP_112_RX0_N" LOC ="V1"; -#NET "GTP_112_RREF" LOC ="AB4"; -#NET "GTP_112_AVCC_PLL" LOC ="Y3"; -#NET "GTP_112_AVCC" LOC ="W3"; -#NET "GTP_112_AVCC" LOC ="W4"; - -////////////////////////////////////////// - -#NET "VTRXC" LOC ="AA5"; -#NET "VRP_BANK6" LOC ="AP18"; -#NET "VRP_BANK5" LOC ="P20"; -#NET "VRP_BANK23" LOC ="K34"; -#NET "VRP_BANK21" LOC ="AP36"; -#NET "VRP_BANK19" LOC ="G37"; -#NET "VRP_BANK18" LOC ="AD7"; -#NET "VRP_BANK17" LOC ="AH39"; -#NET "VRP_BANK15" LOC ="U37"; -#NET "VRP_BANK13" LOC ="AL40"; -#NET "VRP_BANK12" LOC ="P6"; -#NET "VRN_BANK6" LOC ="AR18"; -#NET "VRN_BANK5" LOC ="N20"; -#NET "VRN_BANK23" LOC ="L34"; -#NET "VRN_BANK21" LOC ="AP37"; -#NET "VRN_BANK19" LOC ="H36"; -#NET "VRN_BANK18" LOC ="AD6"; -#NET "VRN_BANK17" LOC ="AG39"; -#NET "VRN_BANK15" LOC ="V38"; -#NET "VRN_BANK13" LOC ="AK40"; -#NET "VRN_BANK12" LOC ="P5"; -#NET "VREF_DDR2" LOC ="T41"; -#NET "VDDA_SATACLK" LOC ="AA8"; -#NET "VDDA_SATACLK" LOC ="U10"; -#NET "VCC3_PCI" LOC ="L8"; -#NET "VCC3V3" LOC ="AG30"; -#NET "VCC2V5" LOC ="E26"; -#NET "VCC1V8" LOC ="AA38"; -#NET "VCC1V0" LOC ="AA14"; - -#NET "FPGA_VBATT" LOC ="P30"; -#NET "FPGA_TMS" LOC ="AH15"; -#NET "FPGA_TDO" LOC ="AJ15"; -#NET "FPGA_TDI" LOC ="AH16"; -#NET "FPGA_TCK" LOC ="AG29"; - -#NET "FPGA_PROG_B" LOC ="R29"; -#NET "FPGA_MODE_2" LOC ="AJ28"; -#NET "FPGA_MODE_1" LOC ="AH30"; -#NET "FPGA_MODE_0" LOC ="AH29"; -#NET "FPGA_LED_USER2" LOC ="AL24"; -#NET "FPGA_LED_USER1" LOC ="AM19"; - -#NET "FPGA_HSWAP" LOC ="P15"; -#NET "FPGA_DX_P" LOC ="AC22"; -#NET "FPGA_DX_N" LOC ="AC21"; - -#NET "FPGA_CCLK" LOC ="AH14"; -#NET "FPGA_A22" LOC ="AK14"; - -#NET "$3N7315" LOC ="R30"; -#NET "$3N7288" LOC ="AF30"; -#NET "$3N7283" LOC ="T30"; diff --git a/designs/leon3-xilinx-ml510/mig.diff b/designs/leon3-xilinx-ml510/mig.diff deleted file mode 100644 index 7e030fb7..00000000 --- a/designs/leon3-xilinx-ml510/mig.diff +++ /dev/null @@ -1,98 +0,0 @@ -diff -Naur mig_36_1/user_design/rtl/ddr2_infrastructure.vhd mig_36_1_ddr2/user_design/rtl/ddr2_infrastructure.vhd ---- mig_36_1/user_design/rtl/ddr2_infrastructure.vhd 2011-09-22 11:29:57.000000000 +0200 -+++ mig_36_1_ddr2/user_design/rtl/ddr2_infrastructure.vhd 2011-09-22 16:02:13.000000000 +0200 -@@ -104,7 +104,8 @@ - rst0 : out std_logic; - rst90 : out std_logic; - rst200 : out std_logic; -- rstdiv0 : out std_logic -+ rstdiv0 : out std_logic; -+ clkinp : out std_logic - ); - end entity ddr2_infrastructure; - -@@ -166,6 +167,7 @@ - clk90 <= clk90_bufg; - clk200 <= clk200_bufg; - clkdiv0 <= clkdiv0_bufg; -+ clkinp <= sys_clk_ibufg; - - DIFF_ENDED_CLKS_INST : if(CLK_TYPE = "DIFFERENTIAL") generate - begin -@@ -220,7 +222,7 @@ - end generate; - - NOCLK200_CHECK_GND: if ( (NOCLK200 = true) and (CLK_TYPE = "SINGLE_ENDED")) generate -- clk200_bufg <= '0'; -+ clk200_bufg <= idly_clk_200; - end generate; - - -@@ -233,7 +235,7 @@ - u_pll_adv: PLL_ADV - generic map ( - BANDWIDTH => "OPTIMIZED", -- CLKIN1_PERIOD => CLK_PERIOD_NS, -+ CLKIN1_PERIOD => CLK_PERIOD_NS*2.0, - CLKIN2_PERIOD => 10.000, - CLKOUT0_DIVIDE => CLK_PERIOD_INT, - CLKOUT1_DIVIDE => CLK_PERIOD_INT, -@@ -255,7 +257,7 @@ - CLKOUT5_DUTY_CYCLE => 0.500, - COMPENSATION => "SYSTEM_SYNCHRONOUS", - DIVCLK_DIVIDE => 1, -- CLKFBOUT_MULT => CLK_PERIOD_INT, -+ CLKFBOUT_MULT => CLK_PERIOD_INT*2, - CLKFBOUT_PHASE => 0.0, - REF_JITTER => 0.005000 - ) -diff -Naur mig_36_1/user_design/rtl/mig_36_1.vhd mig_36_1_ddr2/user_design/rtl/mig_36_1.vhd ---- mig_36_1/user_design/rtl/mig_36_1.vhd 2011-09-22 11:29:57.000000000 +0200 -+++ mig_36_1_ddr2/user_design/rtl/mig_36_1.vhd 2011-09-22 14:19:51.000000000 +0200 -@@ -195,7 +195,9 @@ - ddr2_dqs : inout std_logic_vector((DQS_WIDTH-1) downto 0); - ddr2_dqs_n : inout std_logic_vector((DQS_WIDTH-1) downto 0); - ddr2_ck : out std_logic_vector((CLK_WIDTH-1) downto 0); -- ddr2_ck_n : out std_logic_vector((CLK_WIDTH-1) downto 0) -+ ddr2_ck_n : out std_logic_vector((CLK_WIDTH-1) downto 0); -+ clk100 : out std_ulogic; -+ clkdiv : out std_ulogic - ); - - end entity mig_36_1; -@@ -240,17 +242,18 @@ - clk200_p : in std_logic; - clk200_n : in std_logic; - idly_clk_200 : in std_logic; -- sys_rst_n : in std_logic; -- rst0 : out std_logic; -- rst90 : out std_logic; -- rstdiv0 : out std_logic; -- rst200 : out std_logic; - clk0 : out std_logic; - clk90 : out std_logic; -- clkdiv0 : out std_logic; - clk200 : out std_logic; -- idelay_ctrl_rdy : in std_logic -+ clkdiv0 : out std_logic; - -+ sys_rst_n : in std_logic; -+ idelay_ctrl_rdy : in std_logic; -+ rst0 : out std_logic; -+ rst90 : out std_logic; -+ rst200 : out std_logic; -+ rstdiv0 : out std_logic; -+ clkinp : out std_logic - ); - end component; - -@@ -473,7 +476,8 @@ - clk90 => clk90, - clkdiv0 => clkdiv0, - clk200 => clk200, -- idelay_ctrl_rdy => idelay_ctrl_rdy -+ idelay_ctrl_rdy => idelay_ctrl_rdy, -+ clkinp => clk100 - ); - - u_ddr2_top_0 : ddr2_top diff --git a/designs/leon3-xilinx-ml510/mig.prj b/designs/leon3-xilinx-ml510/mig.prj deleted file mode 100644 index 92e3d249..00000000 --- a/designs/leon3-xilinx-ml510/mig.prj +++ /dev/null @@ -1,61 +0,0 @@ - - - 1 - mig_36_1 - 0 - 1 - 0 - Class II - Disable - xc5vfx130t-ff1738/-2 - 3.6.1 - Single-Ended - FALSE - HIGH - - DDR2_SDRAM/RDIMMs/MT9HTF6472Y-40E - 5000 - 72 - 1 - 1 - FALSE - - 14 - 10 - 2 - - - - ECC Disabled - - - - - - - - - - - - - - - 4(010) - sequential(0) - 3(011) - normal(0) - no(0) - fast exit(0) - 3(010) - Enable-Normal(0) - Fullstrength(0) - 75ohms(01) - 0(000) - OCD Exit(000) - Enable(0) - Disable(0) - Enable(0) - NATIVE - - diff --git a/designs/leon3-xilinx-ml510/mig_ddr2.prj b/designs/leon3-xilinx-ml510/mig_ddr2.prj deleted file mode 100644 index 78d72af6..00000000 --- a/designs/leon3-xilinx-ml510/mig_ddr2.prj +++ /dev/null @@ -1,61 +0,0 @@ - - - 1 - mig_36_1 - 0 - 1 - 0 - Class II - Disable - xc5vfx130t-ff1738/-2 - 3.6.1 - Single-Ended - FALSE - HIGH - - DDR2_SDRAM/UDIMMs/MT4HTF3264AY-40E - 5000 - 64 - 1 - 1 - FALSE - - 13 - 10 - 2 - - - - ECC Disabled - - - - - - - - - - - - - - - 4(010) - sequential(0) - 3(011) - normal(0) - no(0) - fast exit(0) - - Enable-Normal(0) - Fullstrength(0) - 75ohms(01) - 0(000) - OCD Exit(000) - Enable(0) - Disable(0) - Enable(0) - NATIVE - - diff --git a/designs/leon3-xilinx-ml510/mig_rdimm.prj b/designs/leon3-xilinx-ml510/mig_rdimm.prj deleted file mode 100644 index 92e3d249..00000000 --- a/designs/leon3-xilinx-ml510/mig_rdimm.prj +++ /dev/null @@ -1,61 +0,0 @@ - - - 1 - mig_36_1 - 0 - 1 - 0 - Class II - Disable - xc5vfx130t-ff1738/-2 - 3.6.1 - Single-Ended - FALSE - HIGH - - DDR2_SDRAM/RDIMMs/MT9HTF6472Y-40E - 5000 - 72 - 1 - 1 - FALSE - - 14 - 10 - 2 - - - - ECC Disabled - - - - - - - - - - - - - - - 4(010) - sequential(0) - 3(011) - normal(0) - no(0) - fast exit(0) - 3(010) - Enable-Normal(0) - Fullstrength(0) - 75ohms(01) - 0(000) - OCD Exit(000) - Enable(0) - Disable(0) - Enable(0) - NATIVE - - diff --git a/designs/leon3-xilinx-ml510/mig_rdimm_333.prj b/designs/leon3-xilinx-ml510/mig_rdimm_333.prj deleted file mode 100644 index d291f059..00000000 --- a/designs/leon3-xilinx-ml510/mig_rdimm_333.prj +++ /dev/null @@ -1,61 +0,0 @@ - - - 1 - mig_36_1 - 0 - 1 - 0 - Class II - Disable - xc5vfx130t-ff1738/-2 - 3.6.1 - Single-Ended - FALSE - HIGH - - DDR2_SDRAM/RDIMMs/MT9HTF6472Y-667 - 5000 - 72 - 1 - 1 - FALSE - - 14 - 10 - 2 - - - - ECC Disabled - - - - - - - - - - - - - - - 4(010) - sequential(0) - 5(101) - normal(0) - no(0) - fast exit(0) - 5(100) - Enable-Normal(0) - Fullstrength(0) - 75ohms(01) - 0(000) - OCD Exit(000) - Enable(0) - Disable(0) - Enable(0) - NATIVE - - diff --git a/designs/leon3-xilinx-ml510/rdimm_ddr2.diff b/designs/leon3-xilinx-ml510/rdimm_ddr2.diff deleted file mode 100644 index 4cca8c1d..00000000 --- a/designs/leon3-xilinx-ml510/rdimm_ddr2.diff +++ /dev/null @@ -1,834 +0,0 @@ -diff -Naur mig_36_1/example_design/datasheet.txt mig_36_1.org/example_design/datasheet.txt ---- mig_36_1/example_design/datasheet.txt 2011-09-25 23:35:44.000000000 +0200 -+++ mig_36_1.org/example_design/datasheet.txt 2011-09-22 11:29:57.000000000 +0200 -@@ -33,10 +33,10 @@ - Controller Options : - Memory : DDR2_SDRAM - Design Clock Frequency : 5000 ps(200.00 MHz) -- Memory Type : RDIMMs -- Memory Part : MT9HTF6472Y-40E -+ Memory Type : UDIMMs -+ Memory Part : MT4HTF3264AY-40E - Equivalent Part(s) : -- -- Data Width : 72 -+ Data Width : 64 - Memory Depth : 1 - ECC : ECC Disabled - Data Mask : enabled -@@ -57,7 +57,7 @@ - bank 13(38) -> Number of pins used : 0 - bank 15(38) -> Number of pins used : 0 - bank 17(38) -> Number of pins used : 0 -- bank 19(38) -> Number of pins used : 33 -+ bank 19(38) -> Number of pins used : 22 - bank 21(38) -> Number of pins used : 0 - bank 23(38) -> Number of pins used : 33 - bank 25(38) -> Number of pins used : 0 -@@ -66,9 +66,9 @@ - - Address/Control:bank 11(38) -> Number of pins used : 0 - bank 13(38) -> Number of pins used : 0 -- bank 15(38) -> Number of pins used : 16 -+ bank 15(38) -> Number of pins used : 7 - bank 17(38) -> Number of pins used : 0 -- bank 19(38) -> Number of pins used : 3 -+ bank 19(38) -> Number of pins used : 14 - bank 21(38) -> Number of pins used : 0 - bank 23(38) -> Number of pins used : 3 - bank 25(38) -> Number of pins used : 0 -@@ -89,5 +89,5 @@ - System Clock :bank 3(19) -> Number of pins used : 2 - bank 4(19) -> Number of pins used : 0 - -- Total IOs used : 129 -+ Total IOs used : 120 - -diff -Naur mig_36_1/example_design/log.txt mig_36_1.org/example_design/log.txt ---- mig_36_1/example_design/log.txt 2011-09-25 23:35:44.000000000 +0200 -+++ mig_36_1.org/example_design/log.txt 2011-09-22 11:29:57.000000000 +0200 -@@ -1,6 +1,6 @@ - Log file - --Generated by MIG MIG Version 3.6.1Build NumberSW_VERSION on Sun Sep 25 23:35:43 2011 -+Generated by MIG MIG Version 3.6.1Build NumberSW_VERSION on Thu Sep 22 11:29:55 2011 - - - Reading design libraries of xc5vfx130t-ff1738... successful ! -@@ -37,10 +37,10 @@ - Allocating pins to System Control signals ...successful! - Allocating pins to system clock signals ...successful! - Copying all the files from docs ... --copying /home/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/adr_cntrl_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs --copying /home/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/read_data_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs --copying /home/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/write_data_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs --copying /home/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/xapp858.url to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs -+copying /usr/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/adr_cntrl_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs -+copying /usr/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/read_data_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs -+copying /usr/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/write_data_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs -+copying /usr/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/xapp858.url to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs - Generating the file /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/example_design/rtl/ddr2_chipscope.vhd ...successful! - Generating the file /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/example_design/rtl/ddr2_ctrl.vhd ...successful! - Generating the file /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/example_design/rtl/ddr2_top.vhd ...successful! -diff -Naur mig_36_1/example_design/mig.prj mig_36_1.org/example_design/mig.prj ---- mig_36_1/example_design/mig.prj 2011-09-25 23:35:44.000000000 +0200 -+++ mig_36_1.org/example_design/mig.prj 2011-09-22 11:29:57.000000000 +0200 -@@ -13,14 +13,14 @@ - FALSE - HIGH - -- DDR2_SDRAM/RDIMMs/MT9HTF6472Y-40E -+ DDR2_SDRAM/UDIMMs/MT4HTF3264AY-40E - 5000 -- 72 -+ 64 - 1 - 1 - FALSE - -- 14 -+ 13 - 10 - 2 - -@@ -47,7 +47,7 @@ - normal(0) - no(0) - fast exit(0) -- 3(010) -+ - Enable-Normal(0) - Fullstrength(0) - 75ohms(01) -diff -Naur mig_36_1/example_design/par/mig_36_1.ucf mig_36_1.org/example_design/par/mig_36_1.ucf ---- mig_36_1/example_design/par/mig_36_1.ucf 2011-09-25 23:35:43.000000000 +0200 -+++ mig_36_1.org/example_design/par/mig_36_1.ucf 2011-09-22 11:29:57.000000000 +0200 -@@ -1,7 +1,7 @@ - ############################################################################ - ## - ## Xilinx, Inc. 2006 www.xilinx.com --## Sun Sep 25 23:35:43 2011 -+## Thu Sep 22 11:29:55 2011 - ## Generated by MIG Version 3.6.1 - ## - ############################################################################ -@@ -32,8 +32,8 @@ - ############################################################################ - ######################################################################## - # Controller 0 --# Memory Device: DDR2_SDRAM->RDIMMs->MT9HTF6472Y-40E --# Data Width: 72 -+# Memory Device: DDR2_SDRAM->UDIMMs->MT4HTF3264AY-40E -+# Data Width: 64 - # Frequency: 200 - # Time Period: 5000 - # Data Mask: 1 -@@ -53,7 +53,6 @@ - NET "ddr2_cs_n[*]" IOSTANDARD = SSTL18_II; - NET "ddr2_odt[*]" IOSTANDARD = SSTL18_II; - NET "ddr2_cke[*]" IOSTANDARD = SSTL18_II; --NET "ddr2_reset_n" IOSTANDARD = LVCMOS18; - NET "ddr2_dm[*]" IOSTANDARD = SSTL18_II_DCI; - NET "sys_clk" IOSTANDARD = LVCMOS25; - NET "idly_clk_200" IOSTANDARD = LVCMOS25; -@@ -133,37 +132,27 @@ - NET "ddr2_dq[61]" LOC = "F36" ; #Bank 19 - NET "ddr2_dq[62]" LOC = "G36" ; #Bank 19 - NET "ddr2_dq[63]" LOC = "F37" ; #Bank 19 --NET "ddr2_dq[64]" LOC = "E38" ; #Bank 19 --NET "ddr2_dq[65]" LOC = "D37" ; #Bank 19 --NET "ddr2_dq[66]" LOC = "V35" ; #Bank 19 --NET "ddr2_dq[67]" LOC = "V34" ; #Bank 19 --NET "ddr2_dq[68]" LOC = "W33" ; #Bank 19 --NET "ddr2_dq[69]" LOC = "Y33" ; #Bank 19 --NET "ddr2_dq[70]" LOC = "W32" ; #Bank 19 --NET "ddr2_dq[71]" LOC = "Y32" ; #Bank 19 --NET "ddr2_a[13]" LOC = "D42" ; #Bank 27 --NET "ddr2_a[12]" LOC = "E32" ; #Bank 23 --NET "ddr2_a[11]" LOC = "E33" ; #Bank 23 --NET "ddr2_a[10]" LOC = "T31" ; #Bank 23 --NET "ddr2_a[9]" LOC = "U36" ; #Bank 19 --NET "ddr2_a[8]" LOC = "V36" ; #Bank 19 --NET "ddr2_a[7]" LOC = "AA32" ; #Bank 19 --NET "ddr2_a[6]" LOC = "H38" ; #Bank 15 --NET "ddr2_a[5]" LOC = "H39" ; #Bank 15 --NET "ddr2_a[4]" LOC = "G38" ; #Bank 15 --NET "ddr2_a[3]" LOC = "G39" ; #Bank 15 --NET "ddr2_a[2]" LOC = "F39" ; #Bank 15 --NET "ddr2_a[1]" LOC = "F40" ; #Bank 15 --NET "ddr2_a[0]" LOC = "E39" ; #Bank 15 --NET "ddr2_ba[1]" LOC = "E40" ; #Bank 15 --NET "ddr2_ba[0]" LOC = "R39" ; #Bank 15 --NET "ddr2_ras_n" LOC = "R37" ; #Bank 15 --NET "ddr2_cas_n" LOC = "P37" ; #Bank 15 --NET "ddr2_we_n" LOC = "P38" ; #Bank 15 --NET "ddr2_cs_n[0]" LOC = "N38" ; #Bank 15 --NET "ddr2_odt[0]" LOC = "N39" ; #Bank 15 --NET "ddr2_cke[0]" LOC = "M39" ; #Bank 15 --NET "ddr2_reset_n" LOC = "M38" ; #Bank 15 -+NET "ddr2_a[12]" LOC = "D42" ; #Bank 27 -+NET "ddr2_a[11]" LOC = "T31" ; #Bank 23 -+NET "ddr2_a[10]" LOC = "U36" ; #Bank 19 -+NET "ddr2_a[9]" LOC = "V36" ; #Bank 19 -+NET "ddr2_a[8]" LOC = "E38" ; #Bank 19 -+NET "ddr2_a[7]" LOC = "D37" ; #Bank 19 -+NET "ddr2_a[6]" LOC = "V35" ; #Bank 19 -+NET "ddr2_a[5]" LOC = "V34" ; #Bank 19 -+NET "ddr2_a[4]" LOC = "V33" ; #Bank 19 -+NET "ddr2_a[3]" LOC = "W33" ; #Bank 19 -+NET "ddr2_a[2]" LOC = "Y33" ; #Bank 19 -+NET "ddr2_a[1]" LOC = "W32" ; #Bank 19 -+NET "ddr2_a[0]" LOC = "Y32" ; #Bank 19 -+NET "ddr2_ba[1]" LOC = "AA32" ; #Bank 19 -+NET "ddr2_ba[0]" LOC = "H38" ; #Bank 15 -+NET "ddr2_ras_n" LOC = "H39" ; #Bank 15 -+NET "ddr2_cas_n" LOC = "G38" ; #Bank 15 -+NET "ddr2_we_n" LOC = "G39" ; #Bank 15 -+NET "ddr2_cs_n[0]" LOC = "F39" ; #Bank 15 -+NET "ddr2_odt[0]" LOC = "F40" ; #Bank 15 -+NET "ddr2_cke[0]" LOC = "E39" ; #Bank 15 - NET "ddr2_dm[0]" LOC = "A30" ; #Bank 27 - NET "ddr2_dm[1]" LOC = "A34" ; #Bank 27 - NET "ddr2_dm[2]" LOC = "B42" ; #Bank 27 -@@ -172,12 +161,11 @@ - NET "ddr2_dm[5]" LOC = "R33" ; #Bank 23 - NET "ddr2_dm[6]" LOC = "L37" ; #Bank 19 - NET "ddr2_dm[7]" LOC = "K37" ; #Bank 19 --NET "ddr2_dm[8]" LOC = "V33" ; #Bank 19 - NET "sys_clk" LOC = "J17" ; #Bank 3 - NET "idly_clk_200" LOC = "M27" ; #Bank 3 --NET "sys_rst_n" LOC = "L39" ; #Bank 15 --NET "phy_init_done" LOC = "K38" ; #Bank 15 --NET "error" LOC = "J38" ; #Bank 15 -+NET "sys_rst_n" LOC = "E40" ; #Bank 15 -+NET "phy_init_done" LOC = "R39" ; #Bank 15 -+NET "error" LOC = "R37" ; #Bank 15 - NET "ddr2_dqs[0]" LOC = "D35" ; #Bank 27 - NET "ddr2_dqs_n[0]" LOC = "D36" ; #Bank 27 - NET "ddr2_dqs[1]" LOC = "C36" ; #Bank 27 -@@ -194,10 +182,12 @@ - NET "ddr2_dqs_n[6]" LOC = "T35" ; #Bank 19 - NET "ddr2_dqs[7]" LOC = "T34" ; #Bank 19 - NET "ddr2_dqs_n[7]" LOC = "U33" ; #Bank 19 --NET "ddr2_dqs[8]" LOC = "R35" ; #Bank 19 --NET "ddr2_dqs_n[8]" LOC = "T36" ; #Bank 19 - NET "ddr2_ck[0]" LOC = "B37" ; #Bank 27 - NET "ddr2_ck_n[0]" LOC = "B36" ; #Bank 27 -+NET "ddr2_ck[1]" LOC = "E32" ; #Bank 23 -+NET "ddr2_ck_n[1]" LOC = "E33" ; #Bank 23 -+NET "ddr2_ck[2]" LOC = "R35" ; #Bank 19 -+NET "ddr2_ck_n[2]" LOC = "T36" ; #Bank 19 - - - ############################################################################### -@@ -286,8 +276,6 @@ - INST "*/gen_dqs.6.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y302"; - INST "*/gen_dqs.7.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y300"; - INST "*/gen_dqs.7.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y300"; --INST "*/gen_dqs.8.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y298"; --INST "*/gen_dqs.8.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y298"; - - ############################################################################### - # LOC and timing constraints for flop driving DQS CE enable signal -@@ -309,7 +297,6 @@ - INST "*/u_phy_calib/gen_gate.5.u_en_dqs_ff" LOC = SLICE_X0Y169; - INST "*/u_phy_calib/gen_gate.6.u_en_dqs_ff" LOC = SLICE_X0Y151; - INST "*/u_phy_calib/gen_gate.7.u_en_dqs_ff" LOC = SLICE_X0Y150; --INST "*/u_phy_calib/gen_gate.8.u_en_dqs_ff" LOC = SLICE_X0Y149; - - # Control for DQS gate - from fabric flop. Prevent "runaway" delay - - # two parts to this path: (1) from fabric flop to IDELAY, (2) from -diff -Naur mig_36_1/example_design/rtl/ddr2_phy_top.vhd mig_36_1.org/example_design/rtl/ddr2_phy_top.vhd ---- mig_36_1/example_design/rtl/ddr2_phy_top.vhd 2011-09-25 23:35:43.000000000 +0200 -+++ mig_36_1.org/example_design/rtl/ddr2_phy_top.vhd 2011-09-22 11:29:57.000000000 +0200 -@@ -395,7 +395,7 @@ - "mig_v3_61_ddr2_sdram_v5, Coregen 12.4"; - - attribute CORE_GENERATION_INFO : string; -- attribute CORE_GENERATION_INFO of syn : architecture IS "ddr2_sdram_v5,mig_v3_61,{component_name=ddr2_phy_top, BANK_WIDTH=2, CKE_WIDTH=1, CLK_WIDTH=1, COL_WIDTH=10, CS_NUM=1, CS_WIDTH=1, DM_WIDTH=9, DQ_WIDTH=72, DQ_PER_DQS=8, DQS_WIDTH=9, ODT_WIDTH=1, ROW_WIDTH=14, ADDITIVE_LAT=0, BURST_LEN=4, BURST_TYPE=0, CAS_LAT=3, ECC_ENABLE=0, MULTI_BANK_EN=1, TWO_T_TIME_EN=0, ODT_TYPE=1, REDUCE_DRV=0, REG_ENABLE=1, TREFI_NS=7800, TRAS=40000, TRCD=15000, TRFC=105000, TRP=15000, TRTP=7500, TWR=15000, TWTR=10000, CLK_PERIOD=5000, RST_ACT_LOW=1, INTERFACE_TYPE=DDR2_SDRAM, LANGUAGE=VHDL, SYNTHESIS_TOOL=synplicity, NO_OF_CONTROLLERS=1}"; -+ attribute CORE_GENERATION_INFO of syn : architecture IS "ddr2_sdram_v5,mig_v3_61,{component_name=ddr2_phy_top, BANK_WIDTH=2, CKE_WIDTH=1, CLK_WIDTH=3, COL_WIDTH=10, CS_NUM=1, CS_WIDTH=1, DM_WIDTH=8, DQ_WIDTH=64, DQ_PER_DQS=8, DQS_WIDTH=8, ODT_WIDTH=1, ROW_WIDTH=13, ADDITIVE_LAT=0, BURST_LEN=4, BURST_TYPE=0, CAS_LAT=3, ECC_ENABLE=0, MULTI_BANK_EN=1, TWO_T_TIME_EN=1, ODT_TYPE=1, REDUCE_DRV=0, REG_ENABLE=0, TREFI_NS=7800, TRAS=40000, TRCD=15000, TRFC=105000, TRP=15000, TRTP=7500, TWR=15000, TWTR=10000, CLK_PERIOD=5000, RST_ACT_LOW=1, INTERFACE_TYPE=DDR2_SDRAM, LANGUAGE=VHDL, SYNTHESIS_TOOL=synplicity, NO_OF_CONTROLLERS=1}"; - - begin - -diff -Naur mig_36_1/example_design/rtl/mig_36_1.vhd mig_36_1.org/example_design/rtl/mig_36_1.vhd ---- mig_36_1/example_design/rtl/mig_36_1.vhd 2011-09-25 23:35:44.000000000 +0200 -+++ mig_36_1.org/example_design/rtl/mig_36_1.vhd 2011-09-22 11:29:57.000000000 +0200 -@@ -79,7 +79,7 @@ - -- # of memory bank addr bits. - CKE_WIDTH : integer := 1; - -- # of memory clock enable outputs. -- CLK_WIDTH : integer := 1; -+ CLK_WIDTH : integer := 3; - -- # of clock outputs. - COL_WIDTH : integer := 10; - -- # of memory column bits. -@@ -89,21 +89,21 @@ - -- # of total memory chip selects. - CS_BITS : integer := 0; - -- set to log2(CS_NUM) (rounded up). -- DM_WIDTH : integer := 9; -+ DM_WIDTH : integer := 8; - -- # of data mask bits. -- DQ_WIDTH : integer := 72; -+ DQ_WIDTH : integer := 64; - -- # of data width. - DQ_PER_DQS : integer := 8; - -- # of DQ data bits per strobe. -- DQS_WIDTH : integer := 9; -+ DQS_WIDTH : integer := 8; - -- # of DQS strobes. -- DQ_BITS : integer := 7; -+ DQ_BITS : integer := 6; - -- set to log2(DQS_WIDTH*DQ_PER_DQS). -- DQS_BITS : integer := 4; -+ DQS_BITS : integer := 3; - -- set to log2(DQS_WIDTH). - ODT_WIDTH : integer := 1; - -- # of memory on-die term enables. -- ROW_WIDTH : integer := 14; -+ ROW_WIDTH : integer := 13; - -- # of memory row and # of addr bits. - ADDITIVE_LAT : integer := 0; - -- additive write latency. -@@ -115,17 +115,17 @@ - -- CAS latency. - ECC_ENABLE : integer := 0; - -- enable ECC (=1 enable). -- APPDATA_WIDTH : integer := 144; -+ APPDATA_WIDTH : integer := 128; - -- # of usr read/write data bus bits. - MULTI_BANK_EN : integer := 1; - -- Keeps multiple banks open. (= 1 enable). -- TWO_T_TIME_EN : integer := 0; -+ TWO_T_TIME_EN : integer := 1; - -- 2t timing for unbuffered dimms. - ODT_TYPE : integer := 1; - -- ODT (=0(none),=1(75),=2(150),=3(50)). - REDUCE_DRV : integer := 0; - -- reduced strength mem I/O (=1 yes). -- REG_ENABLE : integer := 1; -+ REG_ENABLE : integer := 0; - -- registered addr/ctrl (=1 yes). - TREFI_NS : integer := 7800; - -- auto refresh interval (ns). -@@ -178,7 +178,6 @@ - ddr2_cs_n : out std_logic_vector((CS_WIDTH-1) downto 0); - ddr2_odt : out std_logic_vector((ODT_WIDTH-1) downto 0); - ddr2_cke : out std_logic_vector((CKE_WIDTH-1) downto 0); -- ddr2_reset_n : out std_logic; - ddr2_dm : out std_logic_vector((DM_WIDTH-1) downto 0); - sys_clk : in std_logic; - idly_clk_200 : in std_logic; -@@ -459,12 +458,11 @@ - "mig_v3_61_ddr2_v5, Coregen 12.4"; - - attribute CORE_GENERATION_INFO : string; -- attribute CORE_GENERATION_INFO of arc_mem_interface_top : architecture IS "ddr2_v5,mig_v3_61,{component_name=mig_36_1, BANK_WIDTH=2, CKE_WIDTH=1, CLK_WIDTH=1, COL_WIDTH=10, CS_NUM=1, CS_WIDTH=1, DM_WIDTH=9, DQ_WIDTH=72, DQ_PER_DQS=8, DQS_WIDTH=9, ODT_WIDTH=1, ROW_WIDTH=14, ADDITIVE_LAT=0, BURST_LEN=4, BURST_TYPE=0, CAS_LAT=3, ECC_ENABLE=0, MULTI_BANK_EN=1, TWO_T_TIME_EN=0, ODT_TYPE=1, REDUCE_DRV=0, REG_ENABLE=1, TREFI_NS=7800, TRAS=40000, TRCD=15000, TRFC=105000, TRP=15000, TRTP=7500, TWR=15000, TWTR=10000, CLK_PERIOD=5000, RST_ACT_LOW=1, INTERFACE_TYPE=DDR2_SDRAM, LANGUAGE=VHDL, SYNTHESIS_TOOL=synplicity, NO_OF_CONTROLLERS=1}"; -+ attribute CORE_GENERATION_INFO of arc_mem_interface_top : architecture IS "ddr2_v5,mig_v3_61,{component_name=mig_36_1, BANK_WIDTH=2, CKE_WIDTH=1, CLK_WIDTH=3, COL_WIDTH=10, CS_NUM=1, CS_WIDTH=1, DM_WIDTH=8, DQ_WIDTH=64, DQ_PER_DQS=8, DQS_WIDTH=8, ODT_WIDTH=1, ROW_WIDTH=13, ADDITIVE_LAT=0, BURST_LEN=4, BURST_TYPE=0, CAS_LAT=3, ECC_ENABLE=0, MULTI_BANK_EN=1, TWO_T_TIME_EN=1, ODT_TYPE=1, REDUCE_DRV=0, REG_ENABLE=0, TREFI_NS=7800, TRAS=40000, TRCD=15000, TRFC=105000, TRP=15000, TRTP=7500, TWR=15000, TWTR=10000, CLK_PERIOD=5000, RST_ACT_LOW=1, INTERFACE_TYPE=DDR2_SDRAM, LANGUAGE=VHDL, SYNTHESIS_TOOL=synplicity, NO_OF_CONTROLLERS=1}"; - - begin - - --*************************************************************************** -- ddr2_reset_n <= not(rst0); - phy_init_done <= i_phy_init_done; - sys_clk_p <= '1'; - sys_clk_n <= '0'; -diff -Naur mig_36_1/example_design/sim/sim.do mig_36_1.org/example_design/sim/sim.do ---- mig_36_1/example_design/sim/sim.do 2011-09-25 23:35:44.000000000 +0200 -+++ mig_36_1.org/example_design/sim/sim.do 2011-09-22 11:29:57.000000000 +0200 -@@ -70,7 +70,7 @@ - vlog ../sim/*.v - vcom ../sim/*.vhd - #Pass the parameters for memory model parameter file# --vlog +incdir+. +define+x512Mb +define+sg5E +define+x8 ddr2_model.v -+vlog +incdir+. +define+x512Mb +define+sg5E +define+x16 ddr2_model.v - - #Load the design. Use required libraries.# - vsim -t ps -novopt +notimingchecks -L unisim work.sim_tb_top glbl -diff -Naur mig_36_1/example_design/sim/sim_tb_top.vhd mig_36_1.org/example_design/sim/sim_tb_top.vhd ---- mig_36_1/example_design/sim/sim_tb_top.vhd 2011-09-25 23:35:43.000000000 +0200 -+++ mig_36_1.org/example_design/sim/sim_tb_top.vhd 2011-09-22 11:29:57.000000000 +0200 -@@ -72,32 +72,32 @@ - -- memory controller parameters - constant BANK_WIDTH : integer := 2; -- # of memory bank addr bits - constant CKE_WIDTH : integer := 1; -- # of memory clock enable outputs -- constant CLK_WIDTH : integer := 1; -- # of clock outputs -+ constant CLK_WIDTH : integer := 3; -- # of clock outputs - constant CLK_TYPE : string := "SINGLE_ENDED"; -- # of clock type - constant COL_WIDTH : integer := 10; -- # of memory column bits - constant CS_NUM : integer := 1; -- # of separate memory chip selects - constant CS_WIDTH : integer := 1; -- # of total memory chip selects - constant CS_BITS : integer := 0; -- set to log2(CS_NUM) (rounded up) -- constant DM_WIDTH : integer := 9; -- # of data mask bits -- constant DQ_WIDTH : integer := 72; -- # of data width -+ constant DM_WIDTH : integer := 8; -- # of data mask bits -+ constant DQ_WIDTH : integer := 64; -- # of data width - constant DQ_PER_DQS : integer := 8; -- # of DQ data bits per strobe -- constant DQ_BITS : integer := 7; -- set to log2(DQS_WIDTH*DQ_PER_DQS) -- constant DQS_WIDTH : integer := 9; -- # of DQS strobes -- constant DQS_BITS : integer := 4; -- set to log2(DQS_WIDTH) -+ constant DQ_BITS : integer := 6; -- set to log2(DQS_WIDTH*DQ_PER_DQS) -+ constant DQS_WIDTH : integer := 8; -- # of DQS strobes -+ constant DQS_BITS : integer := 3; -- set to log2(DQS_WIDTH) - constant HIGH_PERFORMANCE_MODE : boolean := TRUE; -- Sets the performance mode for IODELAY elements - constant ODT_WIDTH : integer := 1; -- # of memory on-die term enables -- constant ROW_WIDTH : integer := 14; -- # of memory row & # of addr bits -- constant APPDATA_WIDTH : integer := 144; -- # of usr read/write data bus bits -+ constant ROW_WIDTH : integer := 13; -- # of memory row & # of addr bits -+ constant APPDATA_WIDTH : integer := 128; -- # of usr read/write data bus bits - constant ADDITIVE_LAT : integer := 0; -- additive write latency - constant BURST_LEN : integer := 4; -- burst length (in double words) - constant BURST_TYPE : integer := 0; -- burst type (=0 seq; =1 interlved) - constant CAS_LAT : integer := 3; -- CAS latency - constant ECC_ENABLE : integer := 0; -- enable ECC (=1 enable) - constant MULTI_BANK_EN : integer := 1; -- enable bank management -- constant TWO_T_TIME_EN : integer := 0; -- 2t timing for unbuffered dimms -+ constant TWO_T_TIME_EN : integer := 1; -- 2t timing for unbuffered dimms - constant ODT_TYPE : integer := 1; -- ODT (=0(none),=1(75),=2(150),=3(50)) - constant REDUCE_DRV : integer := 0; -- reduced strength mem I/O (=1 yes) -- constant REG_ENABLE : integer := 1; -- registered addr/ctrl (=1 yes) -+ constant REG_ENABLE : integer := 0; -- registered addr/ctrl (=1 yes) - constant TREFI_NS : integer := 7800; -- auto refresh interval (ns) - constant TRAS : integer := 40000; -- active->precharge delay - constant TRCD : integer := 15000; -- active->read/write delay -@@ -112,7 +112,7 @@ - constant DLL_FREQ_MODE : string := "HIGH"; -- DCM Frequency range - constant CLK_PERIOD : integer := 5000; -- Core/Mem clk period (in ps) - -- constant DEVICE_WIDTH : integer := 8; -- Memory device data width -+ constant DEVICE_WIDTH : integer := 16; -- Memory device data width - constant CLK_PERIOD_NS : real := 5000.0 / 1000.0; - constant TCYC_SYS : real := CLK_PERIOD_NS/2.0; - constant TCYC_SYS_0 : time := CLK_PERIOD_NS * 1 ns; -@@ -186,7 +186,6 @@ - ddr2_dqs : inout std_logic_vector((DQS_WIDTH-1) downto 0); - ddr2_dqs_n : inout std_logic_vector((DQS_WIDTH-1) downto 0); - ddr2_dm : out std_logic_vector((DM_WIDTH-1) downto 0); -- ddr2_reset_n : out std_logic; - - error : out std_logic; - -@@ -381,7 +380,6 @@ - ddr2_cke => ddr2_cke_fpga, - ddr2_odt => ddr2_odt_fpga, - ddr2_dm => ddr2_dm_fpga, -- ddr2_reset_n => ddr2_reset_n_fpga, - ddr2_dq => ddr2_dq_fpga, - ddr2_dqs => ddr2_dqs_fpga, - ddr2_dqs_n => ddr2_dqs_n_fpga, -diff -Naur mig_36_1/user_design/datasheet.txt mig_36_1.org/user_design/datasheet.txt ---- mig_36_1/user_design/datasheet.txt 2011-09-25 23:35:45.000000000 +0200 -+++ mig_36_1.org/user_design/datasheet.txt 2011-09-22 11:29:58.000000000 +0200 -@@ -33,10 +33,10 @@ - Controller Options : - Memory : DDR2_SDRAM - Design Clock Frequency : 5000 ps(200.00 MHz) -- Memory Type : RDIMMs -- Memory Part : MT9HTF6472Y-40E -+ Memory Type : UDIMMs -+ Memory Part : MT4HTF3264AY-40E - Equivalent Part(s) : -- -- Data Width : 72 -+ Data Width : 64 - Memory Depth : 1 - ECC : ECC Disabled - Data Mask : enabled -@@ -57,7 +57,7 @@ - bank 13(38) -> Number of pins used : 0 - bank 15(38) -> Number of pins used : 0 - bank 17(38) -> Number of pins used : 0 -- bank 19(38) -> Number of pins used : 33 -+ bank 19(38) -> Number of pins used : 22 - bank 21(38) -> Number of pins used : 0 - bank 23(38) -> Number of pins used : 33 - bank 25(38) -> Number of pins used : 0 -@@ -66,9 +66,9 @@ - - Address/Control:bank 11(38) -> Number of pins used : 0 - bank 13(38) -> Number of pins used : 0 -- bank 15(38) -> Number of pins used : 16 -+ bank 15(38) -> Number of pins used : 7 - bank 17(38) -> Number of pins used : 0 -- bank 19(38) -> Number of pins used : 3 -+ bank 19(38) -> Number of pins used : 14 - bank 21(38) -> Number of pins used : 0 - bank 23(38) -> Number of pins used : 3 - bank 25(38) -> Number of pins used : 0 -@@ -89,5 +89,5 @@ - System Clock :bank 3(19) -> Number of pins used : 2 - bank 4(19) -> Number of pins used : 0 - -- Total IOs used : 128 -+ Total IOs used : 119 - -diff -Naur mig_36_1/user_design/log.txt mig_36_1.org/user_design/log.txt ---- mig_36_1/user_design/log.txt 2011-09-25 23:35:45.000000000 +0200 -+++ mig_36_1.org/user_design/log.txt 2011-09-22 11:29:58.000000000 +0200 -@@ -1,6 +1,6 @@ - Log file - --Generated by MIG MIG Version 3.6.1Build NumberSW_VERSION on Sun Sep 25 23:35:44 2011 -+Generated by MIG MIG Version 3.6.1Build NumberSW_VERSION on Thu Sep 22 11:29:57 2011 - - - Reading design libraries of xc5vfx130t-ff1738... successful ! -@@ -30,10 +30,10 @@ - Checking pins allocated to Address bits ... - Checking pins allocated to BankAddress bits ... - Copying all the files from docs ... --copying /home/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/adr_cntrl_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs --copying /home/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/read_data_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs --copying /home/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/write_data_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs --copying /home/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/xapp858.url to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs -+copying /usr/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/adr_cntrl_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs -+copying /usr/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/read_data_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs -+copying /usr/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/write_data_timing.xls to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs -+copying /usr/local/xilinx/ise13i01/ISE_DS/ISE/coregen/ip/xilinx/other/com/xilinx/ip/mig_v3_61/bin/lin/../../data/docs/virtex5/ddr2_sdram/xapp858.url to /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/docs - Generating the file /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/user_design/rtl/ddr2_chipscope.vhd ...successful! - Generating the file /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/user_design/rtl/ddr2_ctrl.vhd ...successful! - Generating the file /home/jiri/ibm/vhdl/grlib/designs/leon3-xilinx-ml510/tmp/_cg/mig_36_1/user_design/rtl/ddr2_top.vhd ...successful! -diff -Naur mig_36_1/user_design/mig.prj mig_36_1.org/user_design/mig.prj ---- mig_36_1/user_design/mig.prj 2011-09-25 23:35:45.000000000 +0200 -+++ mig_36_1.org/user_design/mig.prj 2011-09-22 11:29:58.000000000 +0200 -@@ -13,14 +13,14 @@ - FALSE - HIGH - -- DDR2_SDRAM/RDIMMs/MT9HTF6472Y-40E -+ DDR2_SDRAM/UDIMMs/MT4HTF3264AY-40E - 5000 -- 72 -+ 64 - 1 - 1 - FALSE - -- 14 -+ 13 - 10 - 2 - -@@ -47,7 +47,7 @@ - normal(0) - no(0) - fast exit(0) -- 3(010) -+ - Enable-Normal(0) - Fullstrength(0) - 75ohms(01) -diff -Naur mig_36_1/user_design/par/mig_36_1.ucf mig_36_1.org/user_design/par/mig_36_1.ucf ---- mig_36_1/user_design/par/mig_36_1.ucf 2011-09-25 23:35:45.000000000 +0200 -+++ mig_36_1.org/user_design/par/mig_36_1.ucf 2011-09-22 11:29:58.000000000 +0200 -@@ -1,7 +1,7 @@ - ############################################################################ - ## - ## Xilinx, Inc. 2006 www.xilinx.com --## Sun Sep 25 23:35:43 2011 -+## Thu Sep 22 11:29:55 2011 - ## Generated by MIG Version 3.6.1 - ## - ############################################################################ -@@ -32,8 +32,8 @@ - ############################################################################ - ######################################################################## - # Controller 0 --# Memory Device: DDR2_SDRAM->RDIMMs->MT9HTF6472Y-40E --# Data Width: 72 -+# Memory Device: DDR2_SDRAM->UDIMMs->MT4HTF3264AY-40E -+# Data Width: 64 - # Frequency: 200 - # Time Period: 5000 - # Data Mask: 1 -@@ -53,7 +53,6 @@ - NET "ddr2_cs_n[*]" IOSTANDARD = SSTL18_II; - NET "ddr2_odt[*]" IOSTANDARD = SSTL18_II; - NET "ddr2_cke[*]" IOSTANDARD = SSTL18_II; --NET "ddr2_reset_n" IOSTANDARD = LVCMOS18; - NET "ddr2_dm[*]" IOSTANDARD = SSTL18_II_DCI; - NET "sys_clk" IOSTANDARD = LVCMOS25; - NET "idly_clk_200" IOSTANDARD = LVCMOS25; -@@ -132,37 +131,27 @@ - NET "ddr2_dq[61]" LOC = "F36" ; #Bank 19 - NET "ddr2_dq[62]" LOC = "G36" ; #Bank 19 - NET "ddr2_dq[63]" LOC = "F37" ; #Bank 19 --NET "ddr2_dq[64]" LOC = "E38" ; #Bank 19 --NET "ddr2_dq[65]" LOC = "D37" ; #Bank 19 --NET "ddr2_dq[66]" LOC = "V35" ; #Bank 19 --NET "ddr2_dq[67]" LOC = "V34" ; #Bank 19 --NET "ddr2_dq[68]" LOC = "W33" ; #Bank 19 --NET "ddr2_dq[69]" LOC = "Y33" ; #Bank 19 --NET "ddr2_dq[70]" LOC = "W32" ; #Bank 19 --NET "ddr2_dq[71]" LOC = "Y32" ; #Bank 19 --NET "ddr2_a[13]" LOC = "D42" ; #Bank 27 --NET "ddr2_a[12]" LOC = "E32" ; #Bank 23 --NET "ddr2_a[11]" LOC = "E33" ; #Bank 23 --NET "ddr2_a[10]" LOC = "T31" ; #Bank 23 --NET "ddr2_a[9]" LOC = "U36" ; #Bank 19 --NET "ddr2_a[8]" LOC = "V36" ; #Bank 19 --NET "ddr2_a[7]" LOC = "AA32" ; #Bank 19 --NET "ddr2_a[6]" LOC = "H38" ; #Bank 15 --NET "ddr2_a[5]" LOC = "H39" ; #Bank 15 --NET "ddr2_a[4]" LOC = "G38" ; #Bank 15 --NET "ddr2_a[3]" LOC = "G39" ; #Bank 15 --NET "ddr2_a[2]" LOC = "F39" ; #Bank 15 --NET "ddr2_a[1]" LOC = "F40" ; #Bank 15 --NET "ddr2_a[0]" LOC = "E39" ; #Bank 15 --NET "ddr2_ba[1]" LOC = "E40" ; #Bank 15 --NET "ddr2_ba[0]" LOC = "R39" ; #Bank 15 --NET "ddr2_ras_n" LOC = "R37" ; #Bank 15 --NET "ddr2_cas_n" LOC = "P37" ; #Bank 15 --NET "ddr2_we_n" LOC = "P38" ; #Bank 15 --NET "ddr2_cs_n[0]" LOC = "N38" ; #Bank 15 --NET "ddr2_odt[0]" LOC = "N39" ; #Bank 15 --NET "ddr2_cke[0]" LOC = "M39" ; #Bank 15 --NET "ddr2_reset_n" LOC = "M38" ; #Bank 15 -+NET "ddr2_a[12]" LOC = "D42" ; #Bank 27 -+NET "ddr2_a[11]" LOC = "T31" ; #Bank 23 -+NET "ddr2_a[10]" LOC = "U36" ; #Bank 19 -+NET "ddr2_a[9]" LOC = "V36" ; #Bank 19 -+NET "ddr2_a[8]" LOC = "E38" ; #Bank 19 -+NET "ddr2_a[7]" LOC = "D37" ; #Bank 19 -+NET "ddr2_a[6]" LOC = "V35" ; #Bank 19 -+NET "ddr2_a[5]" LOC = "V34" ; #Bank 19 -+NET "ddr2_a[4]" LOC = "V33" ; #Bank 19 -+NET "ddr2_a[3]" LOC = "W33" ; #Bank 19 -+NET "ddr2_a[2]" LOC = "Y33" ; #Bank 19 -+NET "ddr2_a[1]" LOC = "W32" ; #Bank 19 -+NET "ddr2_a[0]" LOC = "Y32" ; #Bank 19 -+NET "ddr2_ba[1]" LOC = "AA32" ; #Bank 19 -+NET "ddr2_ba[0]" LOC = "H38" ; #Bank 15 -+NET "ddr2_ras_n" LOC = "H39" ; #Bank 15 -+NET "ddr2_cas_n" LOC = "G38" ; #Bank 15 -+NET "ddr2_we_n" LOC = "G39" ; #Bank 15 -+NET "ddr2_cs_n[0]" LOC = "F39" ; #Bank 15 -+NET "ddr2_odt[0]" LOC = "F40" ; #Bank 15 -+NET "ddr2_cke[0]" LOC = "E39" ; #Bank 15 - NET "ddr2_dm[0]" LOC = "A30" ; #Bank 27 - NET "ddr2_dm[1]" LOC = "A34" ; #Bank 27 - NET "ddr2_dm[2]" LOC = "B42" ; #Bank 27 -@@ -171,11 +160,10 @@ - NET "ddr2_dm[5]" LOC = "R33" ; #Bank 23 - NET "ddr2_dm[6]" LOC = "L37" ; #Bank 19 - NET "ddr2_dm[7]" LOC = "K37" ; #Bank 19 --NET "ddr2_dm[8]" LOC = "V33" ; #Bank 19 - NET "sys_clk" LOC = "J17" ; #Bank 3 - NET "idly_clk_200" LOC = "M27" ; #Bank 3 --NET "sys_rst_n" LOC = "L39" ; #Bank 15 --NET "phy_init_done" LOC = "K38" ; #Bank 15 -+NET "sys_rst_n" LOC = "E40" ; #Bank 15 -+NET "phy_init_done" LOC = "R39" ; #Bank 15 - NET "ddr2_dqs[0]" LOC = "D35" ; #Bank 27 - NET "ddr2_dqs_n[0]" LOC = "D36" ; #Bank 27 - NET "ddr2_dqs[1]" LOC = "C36" ; #Bank 27 -@@ -192,10 +180,12 @@ - NET "ddr2_dqs_n[6]" LOC = "T35" ; #Bank 19 - NET "ddr2_dqs[7]" LOC = "T34" ; #Bank 19 - NET "ddr2_dqs_n[7]" LOC = "U33" ; #Bank 19 --NET "ddr2_dqs[8]" LOC = "R35" ; #Bank 19 --NET "ddr2_dqs_n[8]" LOC = "T36" ; #Bank 19 - NET "ddr2_ck[0]" LOC = "B37" ; #Bank 27 - NET "ddr2_ck_n[0]" LOC = "B36" ; #Bank 27 -+NET "ddr2_ck[1]" LOC = "E32" ; #Bank 23 -+NET "ddr2_ck_n[1]" LOC = "E33" ; #Bank 23 -+NET "ddr2_ck[2]" LOC = "R35" ; #Bank 19 -+NET "ddr2_ck_n[2]" LOC = "T36" ; #Bank 19 - - - ############################################################################### -@@ -284,8 +274,6 @@ - INST "*/gen_dqs.6.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y302"; - INST "*/gen_dqs.7.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y300"; - INST "*/gen_dqs.7.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y300"; --INST "*/gen_dqs.8.u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y298"; --INST "*/gen_dqs.8.u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y298"; - - ############################################################################### - # LOC and timing constraints for flop driving DQS CE enable signal -@@ -307,7 +295,6 @@ - INST "*/u_phy_calib/gen_gate.5.u_en_dqs_ff" LOC = SLICE_X0Y169; - INST "*/u_phy_calib/gen_gate.6.u_en_dqs_ff" LOC = SLICE_X0Y151; - INST "*/u_phy_calib/gen_gate.7.u_en_dqs_ff" LOC = SLICE_X0Y150; --INST "*/u_phy_calib/gen_gate.8.u_en_dqs_ff" LOC = SLICE_X0Y149; - - # Control for DQS gate - from fabric flop. Prevent "runaway" delay - - # two parts to this path: (1) from fabric flop to IDELAY, (2) from -diff -Naur mig_36_1/user_design/rtl/ddr2_phy_top.vhd mig_36_1.org/user_design/rtl/ddr2_phy_top.vhd ---- mig_36_1/user_design/rtl/ddr2_phy_top.vhd 2011-09-25 23:35:44.000000000 +0200 -+++ mig_36_1.org/user_design/rtl/ddr2_phy_top.vhd 2011-09-22 11:29:57.000000000 +0200 -@@ -395,7 +395,7 @@ - "mig_v3_61_ddr2_sdram_v5, Coregen 12.4"; - - attribute CORE_GENERATION_INFO : string; -- attribute CORE_GENERATION_INFO of syn : architecture IS "ddr2_sdram_v5,mig_v3_61,{component_name=ddr2_phy_top, BANK_WIDTH=2, CKE_WIDTH=1, CLK_WIDTH=1, COL_WIDTH=10, CS_NUM=1, CS_WIDTH=1, DM_WIDTH=9, DQ_WIDTH=72, DQ_PER_DQS=8, DQS_WIDTH=9, ODT_WIDTH=1, ROW_WIDTH=14, ADDITIVE_LAT=0, BURST_LEN=4, BURST_TYPE=0, CAS_LAT=3, ECC_ENABLE=0, MULTI_BANK_EN=1, TWO_T_TIME_EN=0, ODT_TYPE=1, REDUCE_DRV=0, REG_ENABLE=1, TREFI_NS=7800, TRAS=40000, TRCD=15000, TRFC=105000, TRP=15000, TRTP=7500, TWR=15000, TWTR=10000, CLK_PERIOD=5000, RST_ACT_LOW=1, INTERFACE_TYPE=DDR2_SDRAM, LANGUAGE=VHDL, SYNTHESIS_TOOL=synplicity, NO_OF_CONTROLLERS=1}"; -+ attribute CORE_GENERATION_INFO of syn : architecture IS "ddr2_sdram_v5,mig_v3_61,{component_name=ddr2_phy_top, BANK_WIDTH=2, CKE_WIDTH=1, CLK_WIDTH=3, COL_WIDTH=10, CS_NUM=1, CS_WIDTH=1, DM_WIDTH=8, DQ_WIDTH=64, DQ_PER_DQS=8, DQS_WIDTH=8, ODT_WIDTH=1, ROW_WIDTH=13, ADDITIVE_LAT=0, BURST_LEN=4, BURST_TYPE=0, CAS_LAT=3, ECC_ENABLE=0, MULTI_BANK_EN=1, TWO_T_TIME_EN=1, ODT_TYPE=1, REDUCE_DRV=0, REG_ENABLE=0, TREFI_NS=7800, TRAS=40000, TRCD=15000, TRFC=105000, TRP=15000, TRTP=7500, TWR=15000, TWTR=10000, CLK_PERIOD=5000, RST_ACT_LOW=1, INTERFACE_TYPE=DDR2_SDRAM, LANGUAGE=VHDL, SYNTHESIS_TOOL=synplicity, NO_OF_CONTROLLERS=1}"; - - begin - -diff -Naur mig_36_1/user_design/rtl/mig_36_1.vhd mig_36_1.org/user_design/rtl/mig_36_1.vhd ---- mig_36_1/user_design/rtl/mig_36_1.vhd 2011-09-25 23:35:44.000000000 +0200 -+++ mig_36_1.org/user_design/rtl/mig_36_1.vhd 2011-09-22 11:29:57.000000000 +0200 -@@ -76,7 +76,7 @@ - -- # of memory bank addr bits. - CKE_WIDTH : integer := 1; - -- # of memory clock enable outputs. -- CLK_WIDTH : integer := 1; -+ CLK_WIDTH : integer := 3; - -- # of clock outputs. - COL_WIDTH : integer := 10; - -- # of memory column bits. -@@ -86,21 +86,21 @@ - -- # of total memory chip selects. - CS_BITS : integer := 0; - -- set to log2(CS_NUM) (rounded up). -- DM_WIDTH : integer := 9; -+ DM_WIDTH : integer := 8; - -- # of data mask bits. -- DQ_WIDTH : integer := 72; -+ DQ_WIDTH : integer := 64; - -- # of data width. - DQ_PER_DQS : integer := 8; - -- # of DQ data bits per strobe. -- DQS_WIDTH : integer := 9; -+ DQS_WIDTH : integer := 8; - -- # of DQS strobes. -- DQ_BITS : integer := 7; -+ DQ_BITS : integer := 6; - -- set to log2(DQS_WIDTH*DQ_PER_DQS). -- DQS_BITS : integer := 4; -+ DQS_BITS : integer := 3; - -- set to log2(DQS_WIDTH). - ODT_WIDTH : integer := 1; - -- # of memory on-die term enables. -- ROW_WIDTH : integer := 14; -+ ROW_WIDTH : integer := 13; - -- # of memory row and # of addr bits. - ADDITIVE_LAT : integer := 0; - -- additive write latency. -@@ -112,17 +112,17 @@ - -- CAS latency. - ECC_ENABLE : integer := 0; - -- enable ECC (=1 enable). -- APPDATA_WIDTH : integer := 144; -+ APPDATA_WIDTH : integer := 128; - -- # of usr read/write data bus bits. - MULTI_BANK_EN : integer := 1; - -- Keeps multiple banks open. (= 1 enable). -- TWO_T_TIME_EN : integer := 0; -+ TWO_T_TIME_EN : integer := 1; - -- 2t timing for unbuffered dimms. - ODT_TYPE : integer := 1; - -- ODT (=0(none),=1(75),=2(150),=3(50)). - REDUCE_DRV : integer := 0; - -- reduced strength mem I/O (=1 yes). -- REG_ENABLE : integer := 1; -+ REG_ENABLE : integer := 0; - -- registered addr/ctrl (=1 yes). - TREFI_NS : integer := 7800; - -- auto refresh interval (ns). -@@ -175,7 +175,6 @@ - ddr2_cs_n : out std_logic_vector((CS_WIDTH-1) downto 0); - ddr2_odt : out std_logic_vector((ODT_WIDTH-1) downto 0); - ddr2_cke : out std_logic_vector((CKE_WIDTH-1) downto 0); -- ddr2_reset_n : out std_logic; - ddr2_dm : out std_logic_vector((DM_WIDTH-1) downto 0); - sys_clk : in std_logic; - idly_clk_200 : in std_logic; -@@ -427,14 +426,13 @@ - "mig_v3_61_ddr2_v5, Coregen 12.4"; - - attribute CORE_GENERATION_INFO : string; -- attribute CORE_GENERATION_INFO of arc_mem_interface_top : architecture IS "ddr2_v5,mig_v3_61,{component_name=mig_36_1, BANK_WIDTH=2, CKE_WIDTH=1, CLK_WIDTH=1, COL_WIDTH=10, CS_NUM=1, CS_WIDTH=1, DM_WIDTH=9, DQ_WIDTH=72, DQ_PER_DQS=8, DQS_WIDTH=9, ODT_WIDTH=1, ROW_WIDTH=14, ADDITIVE_LAT=0, BURST_LEN=4, BURST_TYPE=0, CAS_LAT=3, ECC_ENABLE=0, MULTI_BANK_EN=1, TWO_T_TIME_EN=0, ODT_TYPE=1, REDUCE_DRV=0, REG_ENABLE=1, TREFI_NS=7800, TRAS=40000, TRCD=15000, TRFC=105000, TRP=15000, TRTP=7500, TWR=15000, TWTR=10000, CLK_PERIOD=5000, RST_ACT_LOW=1, INTERFACE_TYPE=DDR2_SDRAM, LANGUAGE=VHDL, SYNTHESIS_TOOL=synplicity, NO_OF_CONTROLLERS=1}"; -+ attribute CORE_GENERATION_INFO of arc_mem_interface_top : architecture IS "ddr2_v5,mig_v3_61,{component_name=mig_36_1, BANK_WIDTH=2, CKE_WIDTH=1, CLK_WIDTH=3, COL_WIDTH=10, CS_NUM=1, CS_WIDTH=1, DM_WIDTH=8, DQ_WIDTH=64, DQ_PER_DQS=8, DQS_WIDTH=8, ODT_WIDTH=1, ROW_WIDTH=13, ADDITIVE_LAT=0, BURST_LEN=4, BURST_TYPE=0, CAS_LAT=3, ECC_ENABLE=0, MULTI_BANK_EN=1, TWO_T_TIME_EN=1, ODT_TYPE=1, REDUCE_DRV=0, REG_ENABLE=0, TREFI_NS=7800, TRAS=40000, TRCD=15000, TRFC=105000, TRP=15000, TRTP=7500, TWR=15000, TWTR=10000, CLK_PERIOD=5000, RST_ACT_LOW=1, INTERFACE_TYPE=DDR2_SDRAM, LANGUAGE=VHDL, SYNTHESIS_TOOL=synplicity, NO_OF_CONTROLLERS=1}"; - - begin - - --*************************************************************************** - rst0_tb <= rst0; - clk0_tb <= clk0; -- ddr2_reset_n <= not(rst0); - phy_init_done <= i_phy_init_done; - sys_clk_p <= '1'; - sys_clk_n <= '0'; -diff -Naur mig_36_1/user_design/sim/sim.do mig_36_1.org/user_design/sim/sim.do ---- mig_36_1/user_design/sim/sim.do 2011-09-25 23:35:45.000000000 +0200 -+++ mig_36_1.org/user_design/sim/sim.do 2011-09-22 11:29:58.000000000 +0200 -@@ -70,7 +70,7 @@ - vlog ../sim/*.v - vcom ../sim/*.vhd - #Pass the parameters for memory model parameter file# --vlog +incdir+. +define+x512Mb +define+sg5E +define+x8 ddr2_model.v -+vlog +incdir+. +define+x512Mb +define+sg5E +define+x16 ddr2_model.v - - #Load the design. Use required libraries.# - vsim -t ps -novopt +notimingchecks -L unisim work.sim_tb_top glbl -diff -Naur mig_36_1/user_design/sim/sim_tb_top.vhd mig_36_1.org/user_design/sim/sim_tb_top.vhd ---- mig_36_1/user_design/sim/sim_tb_top.vhd 2011-09-25 23:35:44.000000000 +0200 -+++ mig_36_1.org/user_design/sim/sim_tb_top.vhd 2011-09-22 11:29:57.000000000 +0200 -@@ -72,32 +72,32 @@ - -- memory controller parameters - constant BANK_WIDTH : integer := 2; -- # of memory bank addr bits - constant CKE_WIDTH : integer := 1; -- # of memory clock enable outputs -- constant CLK_WIDTH : integer := 1; -- # of clock outputs -+ constant CLK_WIDTH : integer := 3; -- # of clock outputs - constant CLK_TYPE : string := "SINGLE_ENDED"; -- # of clock type - constant COL_WIDTH : integer := 10; -- # of memory column bits - constant CS_NUM : integer := 1; -- # of separate memory chip selects - constant CS_WIDTH : integer := 1; -- # of total memory chip selects - constant CS_BITS : integer := 0; -- set to log2(CS_NUM) (rounded up) -- constant DM_WIDTH : integer := 9; -- # of data mask bits -- constant DQ_WIDTH : integer := 72; -- # of data width -+ constant DM_WIDTH : integer := 8; -- # of data mask bits -+ constant DQ_WIDTH : integer := 64; -- # of data width - constant DQ_PER_DQS : integer := 8; -- # of DQ data bits per strobe -- constant DQ_BITS : integer := 7; -- set to log2(DQS_WIDTH*DQ_PER_DQS) -- constant DQS_WIDTH : integer := 9; -- # of DQS strobes -- constant DQS_BITS : integer := 4; -- set to log2(DQS_WIDTH) -+ constant DQ_BITS : integer := 6; -- set to log2(DQS_WIDTH*DQ_PER_DQS) -+ constant DQS_WIDTH : integer := 8; -- # of DQS strobes -+ constant DQS_BITS : integer := 3; -- set to log2(DQS_WIDTH) - constant HIGH_PERFORMANCE_MODE : boolean := TRUE; -- Sets the performance mode for IODELAY elements - constant ODT_WIDTH : integer := 1; -- # of memory on-die term enables -- constant ROW_WIDTH : integer := 14; -- # of memory row & # of addr bits -- constant APPDATA_WIDTH : integer := 144; -- # of usr read/write data bus bits -+ constant ROW_WIDTH : integer := 13; -- # of memory row & # of addr bits -+ constant APPDATA_WIDTH : integer := 128; -- # of usr read/write data bus bits - constant ADDITIVE_LAT : integer := 0; -- additive write latency - constant BURST_LEN : integer := 4; -- burst length (in double words) - constant BURST_TYPE : integer := 0; -- burst type (=0 seq; =1 interlved) - constant CAS_LAT : integer := 3; -- CAS latency - constant ECC_ENABLE : integer := 0; -- enable ECC (=1 enable) - constant MULTI_BANK_EN : integer := 1; -- enable bank management -- constant TWO_T_TIME_EN : integer := 0; -- 2t timing for unbuffered dimms -+ constant TWO_T_TIME_EN : integer := 1; -- 2t timing for unbuffered dimms - constant ODT_TYPE : integer := 1; -- ODT (=0(none),=1(75),=2(150),=3(50)) - constant REDUCE_DRV : integer := 0; -- reduced strength mem I/O (=1 yes) -- constant REG_ENABLE : integer := 1; -- registered addr/ctrl (=1 yes) -+ constant REG_ENABLE : integer := 0; -- registered addr/ctrl (=1 yes) - constant TREFI_NS : integer := 7800; -- auto refresh interval (ns) - constant TRAS : integer := 40000; -- active->precharge delay - constant TRCD : integer := 15000; -- active->read/write delay -@@ -112,7 +112,7 @@ - constant DLL_FREQ_MODE : string := "HIGH"; -- DCM Frequency range - constant CLK_PERIOD : integer := 5000; -- Core/Mem clk period (in ps) - -- constant DEVICE_WIDTH : integer := 8; -- Memory device data width -+ constant DEVICE_WIDTH : integer := 16; -- Memory device data width - constant CLK_PERIOD_NS : real := 5000.0 / 1000.0; - constant TCYC_SYS : real := CLK_PERIOD_NS/2.0; - constant TCYC_SYS_0 : time := CLK_PERIOD_NS * 1 ns; -@@ -186,7 +186,6 @@ - ddr2_dqs : inout std_logic_vector((DQS_WIDTH-1) downto 0); - ddr2_dqs_n : inout std_logic_vector((DQS_WIDTH-1) downto 0); - ddr2_dm : out std_logic_vector((DM_WIDTH-1) downto 0); -- ddr2_reset_n : out std_logic; - - clk0_tb : out std_logic; - rst0_tb : out std_logic; -@@ -434,7 +433,6 @@ - ddr2_cke => ddr2_cke_fpga, - ddr2_odt => ddr2_odt_fpga, - ddr2_dm => ddr2_dm_fpga, -- ddr2_reset_n => ddr2_reset_n_fpga, - ddr2_dq => ddr2_dq_fpga, - ddr2_dqs => ddr2_dqs_fpga, - ddr2_dqs_n => ddr2_dqs_n_fpga, diff --git a/designs/leon3-xilinx-ml510/svga2ch7301c.vhd b/designs/leon3-xilinx-ml510/svga2ch7301c.vhd index 0c28c28c..e0fa9171 100644 --- a/designs/leon3-xilinx-ml510/svga2ch7301c.vhd +++ b/designs/leon3-xilinx-ml510/svga2ch7301c.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-ml510/testbench.vhd b/designs/leon3-xilinx-ml510/testbench.vhd index d3cdf4d3..8a3e19fc 100644 --- a/designs/leon3-xilinx-ml510/testbench.vhd +++ b/designs/leon3-xilinx-ml510/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -35,7 +35,6 @@ use hynix.components.all; use work.debug.all; use work.config.all; -- configuration -use work.ml510.all; -- configuration entity testbench is generic ( @@ -303,7 +302,7 @@ begin u1 : HY5PS121621F generic map (TimingCheckFlag => true, PUSCheckFlag => false, index => (1 + 2*(CFG_DDR2SP_DATAWIDTH/64))-i, bbits => CFG_DDR2SP_DATAWIDTH, - fname => sdramfile, fdelay => 100*CFG_MIG_DDR2) + fname => sdramfile, fdelay => 0) port map (DQ => dimm0_ddr2_dq2(i*16+15+32*(32/CFG_DDR2SP_DATAWIDTH) downto i*16+32*(32/CFG_DDR2SP_DATAWIDTH)), LDQS => dimm0_ddr2_dqs_p(i*2+4*(32/CFG_DDR2SP_DATAWIDTH)), LDQSB => dimm0_ddr2_dqs_n(i*2+4*(32/CFG_DDR2SP_DATAWIDTH)), @@ -322,7 +321,7 @@ begin u1 : HY5PS121621F generic map (TimingCheckFlag => true, PUSCheckFlag => false, index => (1 + 2*(CFG_DDR2SP_DATAWIDTH/64))-i, bbits => CFG_DDR2SP_DATAWIDTH, - fname => sdramfile, fdelay => 100*CFG_MIG_DDR2) + fname => sdramfile, fdelay => 0) port map (DQ => dimm1_ddr2_dq2(i*16+15+32*(32/CFG_DDR2SP_DATAWIDTH) downto i*16+32*(32/CFG_DDR2SP_DATAWIDTH)), LDQS => dimm1_ddr2_dqs_p(i*2+4*(32/CFG_DDR2SP_DATAWIDTH)), LDQSB => dimm1_ddr2_dqs_n(i*2+4*(32/CFG_DDR2SP_DATAWIDTH)), @@ -337,23 +336,13 @@ begin UDM => dimm1_ddr2_dqm(i*2+1+4*(32/CFG_DDR2SP_DATAWIDTH))); end generate; - nodelgen : if CFG_MIG_DDR2 = 1 generate - ddr2delay0 : delay_wire - generic map(data_width => dimm0_ddr2_dq'length, delay_atob => 0.0, delay_btoa => 0.0) - port map(a => dimm0_ddr2_dq, b => dimm0_ddr2_dq2); - ddr2delay1 : delay_wire - generic map(data_width => dimm1_ddr2_dq'length, delay_atob => 0.0, delay_btoa => 0.0) - port map(a => dimm1_ddr2_dq, b => dimm1_ddr2_dq2); - end generate; - delgen : if CFG_MIG_DDR2 = 0 generate - ddr2delay0 : delay_wire - generic map(data_width => dimm0_ddr2_dq'length, delay_atob => 0.0, delay_btoa => 2.5) - port map(a => dimm0_ddr2_dq, b => dimm0_ddr2_dq2); - ddr2delay1 : delay_wire - generic map(data_width => dimm1_ddr2_dq'length, delay_atob => 0.0, delay_btoa => 2.5) - port map(a => dimm1_ddr2_dq, b => dimm1_ddr2_dq2); - end generate; + ddr2delay0 : delay_wire + generic map(data_width => dimm0_ddr2_dq'length, delay_atob => 0.0, delay_btoa => 2.5) + port map(a => dimm0_ddr2_dq, b => dimm0_ddr2_dq2); + ddr2delay1 : delay_wire + generic map(data_width => dimm1_ddr2_dq'length, delay_atob => 0.0, delay_btoa => 2.5) + port map(a => dimm1_ddr2_dq, b => dimm1_ddr2_dq2); prom0 : sram16 generic map (index => 4, abits => romdepth, fname => promfile) port map (flash_a(romdepth-1 downto 0), flash_d(15 downto 0), diff --git a/designs/leon3-xilinx-ml510/tkconfig.h b/designs/leon3-xilinx-ml510/tkconfig.h index a96032a9..d6b2903a 100644 --- a/designs/leon3-xilinx-ml510/tkconfig.h +++ b/designs/leon3-xilinx-ml510/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -657,6 +679,10 @@ #define CONFIG_AHB_RROBIN 0 #endif +#ifndef CONFIG_AHB_FPNPEN +#define CONFIG_AHB_FPNPEN 0 +#endif + #ifndef CONFIG_AHB_IOADDR #define CONFIG_AHB_IOADDR FFF #endif @@ -778,10 +804,6 @@ #define CONFIG_MCTRL_PROGPAGE 0 #endif - -#ifndef CONFIG_MIG_DDR2 -#define CONFIG_MIG_DDR2 0 -#endif #ifndef CONFIG_DDR2SP #define CONFIG_DDR2SP 0 #endif @@ -869,6 +891,10 @@ #ifndef CONFIG_DDR2SP_FTEN #define CONFIG_DDR2SP_FTEN 0 #endif + +#ifndef CONFIG_DDR2SP_FTWIDTH +#define CONFIG_DDR2SP_FTWIDTH 0 +#endif #ifndef CONFIG_AHBSTAT_ENABLE #define CONFIG_AHBSTAT_ENABLE 0 #endif diff --git a/designs/leon3-xilinx-ml605/.config b/designs/leon3-xilinx-ml605/.config index 04f0fcbc..392e7f0d 100755 --- a/designs/leon3-xilinx-ml605/.config +++ b/designs/leon3-xilinx-ml605/.config @@ -42,7 +42,8 @@ CONFIG_HAS_SHARED_GRFPU=y # CONFIG_SYN_TM65GPLUS is not set # CONFIG_SYN_TSMC90 is not set # CONFIG_SYN_UMC is not set -# CONFIG_SYN_SPARTAN2 is not set +# CONFIG_SYN_ARTIX7 is not set +# CONFIG_SYN_KINTEX7 is not set # CONFIG_SYN_SPARTAN3 is not set # CONFIG_SYN_SPARTAN3E is not set # CONFIG_SYN_SPARTAN6 is not set @@ -52,6 +53,8 @@ CONFIG_HAS_SHARED_GRFPU=y # CONFIG_SYN_VIRTEX4 is not set # CONFIG_SYN_VIRTEX5 is not set CONFIG_SYN_VIRTEX6=y +# CONFIG_SYN_VIRTEX7 is not set +# CONFIG_SYN_ZYNQ7000 is not set # CONFIG_SYN_INFER_RAM is not set # CONFIG_SYN_INFER_PADS is not set # CONFIG_SYN_NO_ASYNC is not set @@ -65,12 +68,16 @@ CONFIG_FREQ75=y # CONFIG_FREQ80 is not set # CONFIG_FREQ100 is not set # CONFIG_FREQ120 is not set -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 # # Processor # +CONFIG_LEON3=y +CONFIG_PROC_NUM=1 +# CONFIG_LEON3_MIN is not set +# CONFIG_LEON3_GP is not set +# CONFIG_LEON3_HP is not set +CONFIG_LEON3_CUSTOM=y # # Integer unit @@ -151,21 +158,16 @@ CONFIG_CACHE_FIXED=0 # MMU # CONFIG_MMU_ENABLE=y -# CONFIG_MMU_COMBINED is not set -CONFIG_MMU_SPLIT=y -CONFIG_MMU_REPARRAY=y -# CONFIG_MMU_REPINCREMENT is not set +CONFIG_MMU_COMBINED=y +# CONFIG_MMU_SPLIT is not set +# CONFIG_MMU_REPARRAY is not set +CONFIG_MMU_REPINCREMENT=y # CONFIG_MMU_I2 is not set # CONFIG_MMU_I4 is not set CONFIG_MMU_I8=y # CONFIG_MMU_I16 is not set # CONFIG_MMU_I32 is not set -# CONFIG_MMU_D2 is not set -# CONFIG_MMU_D4 is not set -CONFIG_MMU_D8=y -# CONFIG_MMU_D16 is not set -# CONFIG_MMU_D32 is not set -CONFIG_MMU_FASTWB=y +# CONFIG_MMU_I64 is not set CONFIG_MMU_PAGE_4K=y # CONFIG_MMU_PAGE_8K is not set # CONFIG_MMU_PAGE_16K is not set diff --git a/designs/leon3-xilinx-ml605/Makefile b/designs/leon3-xilinx-ml605/Makefile index 6af55af8..99a39892 100644 --- a/designs/leon3-xilinx-ml605/Makefile +++ b/designs/leon3-xilinx-ml605/Makefile @@ -1,11 +1,14 @@ include .config GRLIB=../.. TOP=leon3mp +DESIGN=leon3-xilinx-ml605 BOARD=xilinx-ml605-xc6vlx240t include $(GRLIB)/boards/$(BOARD)/Makefile.inc DEVICE=$(PART)-$(PACKAGE)$(SPEED) #UCF=$(GRLIB)/boards/$(BOARD)/$(TOP).ucf UCF=$(TOP).ucf +UCF_PLANAHEAD=$(TOP)_mig39.ucf + #ISEMAPOPT=-timing QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf EFFORT=high @@ -64,6 +67,14 @@ VHDLOPTSYNFILES= \ mig_37/user_design/rtl/ui/ui_rd_data.vhd \ mig_37/user_design/rtl/ui/ui_top.vhd \ mig_37/user_design/rtl/ui/ui_wr_data.vhd +VERILOGOPTSYNFILES= \ + mig/user_design/rtl/controller/*.v \ + mig/user_design/rtl/ecc/*.v \ + mig/user_design/rtl/ip_top/*.v \ + mig/user_design/rtl/phy/*.v \ + mig/user_design/rtl/phy/*.v \ + mig/user_design/rtl/ui/*.v \ + $$XILINX/verilog/src/glbl.v VHDLSYNFILES= \ ahb2mig_ml605.vhd config.vhd ahbrom.vhd \ svga2ch7301c.vhd gtxclk.vhd leon3mp.vhd @@ -73,13 +84,16 @@ SDCFILE=default.sdc BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut CLEAN=soft-clean TECHLIBS = secureip unisim +VLOGOPT= +define+x1Gb +define+sg187E +define+x16 +VSIMOPT= -gdisas=1 -gDEBUG=0 -i -do preload_ddr3_dimm.do -t ps -novopt +notimingchecks -L secureip_ver -L xilinxcorelib_ver -L unisims_ver glbl $(SIMTOP) +EXTRA_SOFT = gen_hex_dim16 LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann usbhc spw gsi cypress hynix \ + tmtc openchip ihp usbhc spw gsi cypress hynix \ spansion DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci ambatest can \ - usb grusbhc spacewire ata haps coremp7 ascs slink spi hcan \ - leon4 leon4b64 l2cache pwm gr1553b iommu ac97 + usb grusbhc spacewire ascs slink spi hcan \ + leon4 leon4v0 l2cache pwm gr1553b iommu ac97 FILESKIP = grcan.vhd ddr2.v mobile_ddr.v GRLIB_CONFIG = grlib_config.vhd @@ -93,4 +107,14 @@ mig_37 mig: patch -p1 < mig.diff migclean: - -rm -rf mig_37* tmp coregen.log \ No newline at end of file + -rm -rf mig_37* tmp coregen.log + +mig39: + coregen -b mig39.xco -p mig39.cgp + patch -p1 < mig_patch.txt + patch -p1 < mig_iodelay_ctrl_patch.txt + patch -p1 < mig_infrastructure_patch.txt + patch -p1 < mig_ucf_patch.txt + +mig39clean: + -rm -rf mig tmp coregen.log diff --git a/designs/leon3-xilinx-ml605/README.txt b/designs/leon3-xilinx-ml605/README.txt index 383138b0..705dae21 100644 --- a/designs/leon3-xilinx-ml605/README.txt +++ b/designs/leon3-xilinx-ml605/README.txt @@ -2,8 +2,8 @@ This leon3 design is tailored to the Xilinx Virtex-6 ML605 board http://www.xilinx.com/ml605 -Simulation and synthesis ------------------------- +Simulation and synthesis for ISE-13 +----------------------------------- The design uses the Xilinx MIG memory interface with an AHB-2.0 interface. The MIG source code cannot be distributed due to the @@ -27,10 +27,42 @@ and then to program the FPGA. +Simulation and synthesis for ISE-14 +----------------------------------- + +The design uses the Xilinx MIG memory interface with an AHB-2.0 +interface. The MIG source code cannot be distributed due to the +prohibitive Xilinx license, so the MIG must be re-generated with +coregen before simulation and synthesis can be done. + +To generate the MIG and install the Xilinx unisim simulation +library, do as follows: + + make mig39 + make compile_xilinx_verilog_lib + make map_xilinx_verilog_lib + +To simulate and run systest.c on the Leon design using the memory +controller from Xilinx use the make targets: + + make soft + make vsim-launch + +This will ONLY work with ISE-14 installed, and the XILINX variable +properly set in the shell. To build the design, do + + make planAhead + +and then + + make ise-prog-fpga + +to program the FPGA. + Design specifics ---------------- -* Synthesis shold be done using ISE-13 +* Synthesis should be done using ISE-13 or ISE-14 * The DDR3 controller is implemented with Xilinx MIG-3.7 and runs of the 200 MHz clock. The DDR3 memory runs at 400 MHz @@ -50,7 +82,7 @@ Design specifics * LED 2 indicates processor in debug mode -* LED 3 indicates DDR3 PHY initialization done +* LED 7 indicates processor in error mode * The GRETH core is enabled and runs without problems at both 100 and 1000 Mbit. The 1000 Mbit operation requires the commercial @@ -60,7 +92,7 @@ Design specifics * 16-bit flash prom can be read at address 0. It can be programmed with GRMON version 1.1.16 or later. -* The system can be simulated if the secure IP models are installed: +* When using ISE-13 the system can be simulated if the secure IP models are installed: make install-secureip @@ -70,8 +102,16 @@ Design specifics Modelsim v6.5e or newer is required to build the secure IP models. - The normal leon3 test bench cannot be executed as the DDR3 model - does not support pre-loading. +* When using ISE-14 the system can be simulated if xilinx core libs are installed: + + make compile_xilinx_verilog_lib + make map_xilinx_verilog_lib + + Then rebuild the scripts and simulation model: + + make distclean vsim-launch + + Modelsim v10.1a has been used to run systest.c. * The application UART1 is connected to the USB/RS232 connector @@ -84,7 +124,7 @@ Design specifics * Output from GRMON is: -grmon -eth -ip 192.168.0.52 -u -nb +grmon -eth -ip 192.168.0.51 -u -nb GRMON LEON debug monitor v1.1.47 professional version diff --git a/designs/leon3-xilinx-ml605/ahb2mig_ml605.vhd b/designs/leon3-xilinx-ml605/ahb2mig_ml605.vhd index 602a693e..63670692 100644 --- a/designs/leon3-xilinx-ml605/ahb2mig_ml605.vhd +++ b/designs/leon3-xilinx-ml605/ahb2mig_ml605.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -313,7 +313,6 @@ begin ahbso.hready <= ra.hready; ahbso.hresp <= ra.hresp; ahbso.hrdata <= ahbdrivedata(ra.hrdata); - ahbso.hcache <= '1'; migi.app_addr <= '0' & ra.acc.haddr(28 downto 6) & "000"; diff --git a/designs/leon3-xilinx-ml605/ahbrom.vhd b/designs/leon3-xilinx-ml605/ahbrom.vhd index c997d1ce..48a5a6a8 100644 --- a/designs/leon3-xilinx-ml605/ahbrom.vhd +++ b/designs/leon3-xilinx-ml605/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-xilinx-ml605/config.help b/designs/leon3-xilinx-ml605/config.help index 4d338b53..5530e085 100644 --- a/designs/leon3-xilinx-ml605/config.help +++ b/designs/leon3-xilinx-ml605/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,6 +63,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. diff --git a/designs/leon3-xilinx-ml605/config.vhd b/designs/leon3-xilinx-ml605/config.vhd index f8400dd2..161984cc 100644 --- a/designs/leon3-xilinx-ml605/config.vhd +++ b/designs/leon3-xilinx-ml605/config.vhd @@ -2,8 +2,6 @@ - - ----------------------------------------------------------------------------- -- LEON3 Demonstration design test bench configuration -- Copyright (C) 2009 Aeroflex Gaisler @@ -57,9 +55,9 @@ package config is constant CFG_DLRAMSZ : integer := 1; constant CFG_MMUEN : integer := 1; constant CFG_ITLBNUM : integer := 8; - constant CFG_DTLBNUM : integer := 8; - constant CFG_TLB_TYPE : integer := 0 + 1*2; - constant CFG_TLB_REP : integer := 0; + constant CFG_DTLBNUM : integer := 2; + constant CFG_TLB_TYPE : integer := 1 + 0*2; + constant CFG_TLB_REP : integer := 1; constant CFG_MMU_PAGE : integer := 0; constant CFG_DSU : integer := 1; constant CFG_ITBSZ : integer := 4; diff --git a/designs/leon3-xilinx-ml605/grlib_config.vhd b/designs/leon3-xilinx-ml605/grlib_config.vhd index 34827930..c594ac71 100644 --- a/designs/leon3-xilinx-ml605/grlib_config.vhd +++ b/designs/leon3-xilinx-ml605/grlib_config.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -26,6 +26,8 @@ library ieee; use ieee.std_logic_1164.all; +library grlib; +use grlib.config_types.all; package config is @@ -53,7 +55,14 @@ constant CFG_AHBDW : integer := 64; -- constant CFG_AHB_ACDM : integer := 0; -constant grlib_debug_level : integer := 0; -constant grlib_debug_mask : integer := 0; +-- GRLIB_CONFIG_ARRAY - Array of configuration values +-- +-- The length of this array and the meaning of different positions is defined +-- in the grlib.config_types package. +constant GRLIB_CONFIG_ARRAY : grlib_config_array_type := ( + grlib_debug_level => 0, + grlib_debug_mask => 0, + grlib_techmap_strict_ram => 0, + others => 0); end; diff --git a/designs/leon3-xilinx-ml605/lconfig.tk b/designs/leon3-xilinx-ml605/lconfig.tk index 60d0b937..8ca96879 100755 --- a/designs/leon3-xilinx-ml605/lconfig.tk +++ b/designs/leon3-xilinx-ml605/lconfig.tk @@ -755,7 +755,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -765,7 +766,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -908,8 +911,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -928,6 +933,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1121,13 +1130,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1167,22 +1184,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1239,21 +1524,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1300,36 +1585,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1337,48 +1623,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1434,28 +1721,28 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_7 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x4.x.menu 3 bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1496,20 +1783,21 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1518,38 +1806,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_7 + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1606,92 +1895,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1699,18 +1988,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1751,52 +2040,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1804,162 +2094,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2015,45 +2306,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2093,18 +2386,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2112,55 +2406,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2217,24 +2516,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2274,17 +2573,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2292,37 +2592,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2378,22 +2679,22 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - global tmpvar_26 - minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_26 CONFIG_FPUFT_NONE + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" - $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN @@ -2464,26 +2765,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global tmpvar_26 + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 global CONFIG_FPUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} global CONFIG_FPUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} global CONFIG_FPUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} global CONFIG_FPUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2792,14 +3093,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_27 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_27 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2873,17 +3174,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_27 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3419,16 +3720,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_28 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3490,21 +3791,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_28 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3564,14 +3865,14 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 18 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_29 - minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_29 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3625,17 +3926,17 @@ proc update_define_menu18 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_29 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_29 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3691,15 +3992,15 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_30 - minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_30 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3789,19 +4090,19 @@ proc update_menu19 {} { proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_30 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_30 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_30 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4177,7 +4478,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4187,6 +4489,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4207,14 +4511,19 @@ set CONFIG_FREQ100 0 set CONFIG_FREQ120 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4227,28 +4536,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4258,17 +4567,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4280,12 +4589,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4295,10 +4604,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4309,7 +4618,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4321,26 +4630,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4348,27 +4659,27 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_FPUFT_NONE 0 set CONFIG_FPUFT_PAR 0 set CONFIG_FPUFT_DMR 0 @@ -4393,7 +4704,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_27 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4420,7 +4731,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_28 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4431,14 +4742,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_29 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_30 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4524,7 +4835,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4534,6 +4846,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4566,245 +4880,390 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "80MHz" } then { write_tristate $cfg $autocfg CONFIG_FREQ80 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FREQ80 0 [list $notmod] 2 } if { $tmpvar_2 == "100MHz" } then { write_tristate $cfg $autocfg CONFIG_FREQ100 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FREQ100 0 [list $notmod] 2 } if { $tmpvar_2 == "120MHz" } then { write_tristate $cfg $autocfg CONFIG_FREQ120 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FREQ120 0 [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4849,13 +5308,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_27 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -4904,38 +5363,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_28 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_29 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_30 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5020,7 +5479,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5030,6 +5490,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5042,6 +5504,10 @@ proc clear_choices { } { global CONFIG_FREQ80; set CONFIG_FREQ80 0 global CONFIG_FREQ100; set CONFIG_FREQ100 0 global CONFIG_FREQ120; set CONFIG_FREQ120 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5124,11 +5590,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5252,8 +5720,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5272,6 +5742,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5301,329 +5775,343 @@ proc update_choices { } { global CONFIG_FREQ120 if { $CONFIG_FREQ120 == 1 } then { set tmpvar_2 "120MHz" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_FPUFT_NONE - if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_FPUFT_PAR - if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_FPUFT_DMR - if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_FPUFT_TMR - if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "2" + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_27 "16" } - global tmpvar_28 - set tmpvar_28 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_29 "64" } - global tmpvar_30 - set tmpvar_30 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_30 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_30 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } } diff --git a/designs/leon3-xilinx-ml605/leon3mp.ucf b/designs/leon3-xilinx-ml605/leon3mp.ucf index d3d212fe..8f9ed523 100644 --- a/designs/leon3-xilinx-ml605/leon3mp.ucf +++ b/designs/leon3-xilinx-ml605/leon3mp.ucf @@ -484,6 +484,8 @@ NET "led(1)" LOC = "AC24"; ## 2 on LED DS11, 2 on J62 NET "led(2)" LOC = "AE22"; ## 2 on LED DS9, 3 on J62 NET "led(3)" LOC = "AE23"; ## 2 on LED DS10, 4 on J62 NET "led(4)" LOC = "AB23"; ## 2 on LED DS15, 5 on J62 +NET "led(4)" LOC = "AB23"; ## 2 on LED DS15, 5 on J62 +NET "led(5)" LOC = "AG23"; ## 2 on LED DS14, 6 on J62 #NET "GPIO_LED_5" LOC = "AG23"; ## 2 on LED DS14, 6 on J62 #NET "GPIO_LED_6" LOC = "AE24"; ## 2 on LED DS22, 7 on J62 #NET "GPIO_LED_7" LOC = "AD24"; ## 2 on LED DS21, 8 on J62 diff --git a/designs/leon3-xilinx-ml605/leon3mp.vhd b/designs/leon3-xilinx-ml605/leon3mp.vhd index e98ce6a1..429eddd3 100644 --- a/designs/leon3-xilinx-ml605/leon3mp.vhd +++ b/designs/leon3-xilinx-ml605/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2010, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -56,7 +56,8 @@ entity leon3mp is padtech : integer := CFG_PADTECH; disas : integer := CFG_DISAS; -- Enable disassembly to console dbguart : integer := CFG_DUART; -- Print UART on console - pclow : integer := CFG_PCLOW + pclow : integer := CFG_PCLOW; + SIM_BYPASS_INIT_CAL : string := "OFF" ); port ( reset : in std_ulogic; @@ -72,24 +73,22 @@ entity leon3mp is writen : out std_ulogic; alatch : out std_ulogic; - -- DDR3 memory - ddr3_dq : inout std_logic_vector(DQ_WIDTH-1 downto 0); - ddr3_dm : out std_logic_vector(DM_WIDTH-1 downto 0); - ddr3_addr : out std_logic_vector(ROW_WIDTH-1 downto 0); - ddr3_ba : out std_logic_vector(BANK_WIDTH-1 downto 0); - ddr3_ras_n : out std_logic; - ddr3_cas_n : out std_logic; - ddr3_we_n : out std_logic; - ddr3_reset_n : out std_logic; - ddr3_cs_n : out std_logic_vector((CS_WIDTH*nCS_PER_RANK)-1 downto 0); - ddr3_odt : out std_logic_vector((CS_WIDTH*nCS_PER_RANK)-1 downto 0); - ddr3_cke : out std_logic_vector(CKE_WIDTH-1 downto 0); - ddr3_dqs_p : inout std_logic_vector(DQS_WIDTH-1 downto 0); - ddr3_dqs_n : inout std_logic_vector(DQS_WIDTH-1 downto 0); - ddr3_ck_p : out std_logic_vector(CK_WIDTH-1 downto 0); - ddr3_ck_n : out std_logic_vector(CK_WIDTH-1 downto 0); --- sda : inout std_logic; --- scl : out std_logic; + -- DDR3 memory + ddr3_dq : inout std_logic_vector(DQ_WIDTH-1 downto 0); + ddr3_dm : out std_logic_vector(DM_WIDTH-1 downto 0); + ddr3_addr : out std_logic_vector(ROW_WIDTH-1 downto 0); + ddr3_ba : out std_logic_vector(BANK_WIDTH-1 downto 0); + ddr3_ras_n : out std_logic; + ddr3_cas_n : out std_logic; + ddr3_we_n : out std_logic; + ddr3_reset_n : out std_logic; + ddr3_cs_n : out std_logic_vector((CS_WIDTH*nCS_PER_RANK)-1 downto 0); + ddr3_odt : out std_logic_vector((CS_WIDTH*nCS_PER_RANK)-1 downto 0); + ddr3_cke : out std_logic_vector(CKE_WIDTH-1 downto 0); + ddr3_dqs_p : inout std_logic_vector(DQS_WIDTH-1 downto 0); + ddr3_dqs_n : inout std_logic_vector(DQS_WIDTH-1 downto 0); + ddr3_ck_p : out std_logic_vector(CK_WIDTH-1 downto 0); + ddr3_ck_n : out std_logic_vector(CK_WIDTH-1 downto 0); -- Debug support unit dsubre : in std_ulogic; -- Debug Unit break (connect to button) @@ -140,7 +139,7 @@ entity leon3mp is sysace_d : inout std_logic_vector(7 downto 0); -- Output signals to LEDs - led : out std_logic_vector(4 downto 0) + led : out std_logic_vector(6 downto 0) ); end; @@ -198,7 +197,7 @@ architecture rtl of leon3mp is -- RS232 APB Uart signal rxd1 : std_logic; signal txd1 : std_logic; - + -- VGA signal vgao : apbvga_out_type; signal lcd_datal : std_logic_vector(11 downto 0); @@ -220,6 +219,9 @@ architecture rtl of leon3mp is -- Used for connecting input/output signals to the DDR3 controller signal migi : mig_app_in_type; signal migo : mig_app_out_type; + + signal counter : unsigned(31 downto 0); + signal led_int : std_logic; attribute keep : boolean; @@ -253,15 +255,15 @@ begin rst0 : rstgen generic map (acthigh => 1) port map (reset, clkm, lock, rstn, rstraw); - ----------------------------------------------------------------------- + +---------------------------------------------------------------------- --- AHB CONTROLLER -------------------------------------------------- ---------------------------------------------------------------------- ahb0 : ahbctrl generic map (defmast => CFG_DEFMST, split => CFG_SPLIT, - rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO, ioen => 1, - nahbm => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRETH+CFG_SVGA_ENABLE, + rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO, ioen => 1, + nahbm => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRETH+CFG_SVGA_ENABLE, nahbs => 8) port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso); @@ -273,16 +275,16 @@ begin nosh : if CFG_GRFPUSH = 0 generate cpu : for i in 0 to CFG_NCPU-1 generate l3ft : if CFG_LEON3FT_EN /= 0 generate - leon3ft0 : leon3ft -- LEON3 processor - generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, - 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + leon3ft0 : leon3ft -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, - CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, - CFG_IUFT_EN, CFG_FPUFT_EN, CFG_CACHE_FT_EN, CFG_RF_ERRINJ, + CFG_IUFT_EN, CFG_FPUFT_EN, CFG_CACHE_FT_EN, CFG_RF_ERRINJ, CFG_CACHE_ERRINJ, CFG_DFIXED, CFG_LEON3_NETLIST, CFG_SCAN, CFG_MMU_PAGE) - port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, irqi(i), irqo(i), dbgi(i), dbgo(i), clkm); end generate; @@ -304,16 +306,16 @@ begin sh : if CFG_GRFPUSH = 1 generate cpu : for i in 0 to CFG_NCPU-1 generate l3ft : if CFG_LEON3FT_EN /= 0 generate - leon3ft0 : leon3ftsh -- LEON3 processor - generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, - 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + leon3ft0 : leon3ftsh -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, - CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, - CFG_IUFT_EN, CFG_FPUFT_EN, CFG_CACHE_FT_EN, CFG_RF_ERRINJ, + CFG_IUFT_EN, CFG_FPUFT_EN, CFG_CACHE_FT_EN, CFG_RF_ERRINJ, CFG_CACHE_ERRINJ, CFG_DFIXED, CFG_LEON3_NETLIST, CFG_SCAN, CFG_MMU_PAGE) - port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, irqi(i), irqo(i), dbgi(i), dbgo(i), clkm, fpi(i), fpo(i)); end generate; @@ -340,7 +342,7 @@ begin error_pad : odpad generic map (level => cmos, voltage => x25v, tech => padtech) port map (errorn, lerrorn); dsugen : if CFG_DSU = 1 generate - -- LEON3 Debug Support Unit + -- LEON3 Debug Support Unit dsugen : if CFG_DSU = 1 generate dsu0 : dsu3 generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#, @@ -353,7 +355,7 @@ begin led(2) <= dsuo.active; end generate; end generate; - nodsu : if CFG_DSU = 0 generate + nodsu : if CFG_DSU = 0 generate ahbso(2) <= ahbs_none; dsuo.tstop <= '0'; dsuo.active <= '0'; end generate; @@ -391,7 +393,7 @@ begin memi.wrn <= "1111"; memi.bwidth <= "01"; - mg0 : if (CFG_MCTRL_LEON2 = 0) generate + mg0 : if (CFG_MCTRL_LEON2 = 0) generate apbo(0) <= apb_none; ahbso(5) <= ahbs_none; roms_pad : outpad generic map (level => cmos, voltage => x25v, tech => padtech) @@ -399,7 +401,7 @@ begin memo.bdrive(0) <= '1'; end generate; - mgpads : if (CFG_MCTRL_LEON2 /= 0) generate + mgpads : if (CFG_MCTRL_LEON2 /= 0) generate addr_pad : outpadv generic map (level => cmos, voltage => x25v, tech => padtech, width => 24) port map (address, memo.address(24 downto 1)); roms_pad : outpad generic map (level => cmos, voltage => x25v, tech => padtech) @@ -413,45 +415,87 @@ begin bdr : iopadvv generic map (level => cmos, voltage => x25v, tech => padtech, width => 16) port map (data(15 downto 0), memo.data(31 downto 16), memo.vbdrive(31 downto 16), memi.data(31 downto 16)); - + ---------------------------------------------------------------------- --- DDR3 memory controller ------------------------------------------ ---------------------------------------------------------------------- - --- mig_gen : if (CFG_MIG_DDR2 = 1) generate + +-- mig_gen : if (CFG_MIG_DDR2 = 1) generate ahb2mig0 : ahb2mig_ml605 - generic map ( hindex => 0, haddr => 16#400#, hmask => 16#E00#, - MHz => 400, Mbyte => 512, nosync => boolean'pos(CFG_MIG_CLK4=12)) --CFG_CLKDIV/12) - port map ( - rst => rstn, clk_ahb => clkm, clk_ddr => clk_ddr, - ahbsi => ahbsi, ahbso => ahbso(0), migi => migi, migo => migo); - - ddr3ctrl : entity work.mig_37 - generic map (SIM_BYPASS_INIT_CAL => "FAST", CLKOUT_DIVIDE4 => CFG_MIG_CLK4) - port map( -- sys_clk_p, sys_clk_n, - clk_ref_p, clk_ref_n, - ddr3_dq, ddr3_dm, ddr3_addr, ddr3_ba, ddr3_ras_n, - ddr3_cas_n, ddr3_we_n, ddr3_reset_n, ddr3_cs_n, ddr3_odt, - ddr3_cke, ddr3_dqs_p, ddr3_dqs_n, ddr3_ck_p, ddr3_ck_n , --- sda, scl, - migi.app_wdf_wren, migi.app_wdf_data, migi.app_wdf_mask, - migi.app_wdf_end, migi.app_addr, migi.app_cmd, migi.app_en, migo.app_rdy, - migo.app_wdf_rdy, migo.app_rd_data, migo.app_rd_data_valid, tb_rst, clk_ddr, - phy_init_done, clkm, clk100, sys_rst + generic map ( hindex => 0, haddr => 16#400#, hmask => 16#E00#, + MHz => 400, Mbyte => 512, nosync => boolean'pos(CFG_MIG_CLK4=12)) --CFG_CLKDIV/12) + port map ( + rst => rstn, clk_ahb => clkm, clk_ddr => clk_ddr, + ahbsi => ahbsi, ahbso => ahbso(0), migi => migi, migo => migo); + + ddr3ctrl : entity work.mig_37 + generic map (SIM_BYPASS_INIT_CAL => SIM_BYPASS_INIT_CAL,CLKOUT_DIVIDE4 => CFG_MIG_CLK4) + port map( + clk_ref_p => clk_ref_p, + clk_ref_n => clk_ref_n, + ddr3_dq => ddr3_dq, + ddr3_addr => ddr3_addr, + ddr3_ba => ddr3_ba, + ddr3_ras_n => ddr3_ras_n, + ddr3_cas_n => ddr3_cas_n, + ddr3_we_n => ddr3_we_n, + ddr3_reset_n => ddr3_reset_n, + ddr3_cs_n => ddr3_cs_n, + ddr3_odt => ddr3_odt, + ddr3_cke => ddr3_cke, + ddr3_dm => ddr3_dm, + ddr3_dqs_p => ddr3_dqs_p, + ddr3_dqs_n => ddr3_dqs_n, + ddr3_ck_p => ddr3_ck_p, + ddr3_ck_n => ddr3_ck_n, + app_wdf_wren => migi.app_wdf_wren, + app_wdf_data => migi.app_wdf_data, + app_wdf_mask => migi.app_wdf_mask, + app_wdf_end => migi.app_wdf_end, + app_addr => migi.app_addr, + app_cmd => migi.app_cmd, + app_en => migi.app_en, + app_rdy => migo.app_rdy, + app_wdf_rdy => migo.app_wdf_rdy, + app_rd_data => migo.app_rd_data, + app_rd_data_valid => migo.app_rd_data_valid, + tb_rst => open, + tb_clk => clk_ddr, + clk_ahb => clkm, + clk100 => clk100, + phy_init_done => phy_init_done, + sys_rst => rstraw ); led(3) <= phy_init_done; led(4) <= ahbmi.hready; + led(5) <= reset; + led(6) <= led_int; sys_rst <= reset; lock <= phy_init_done; -- and cgo.clklock; --- end generate; +-- end generate; -- noddr : if (CFG_DDR2SP+CFG_MIG_DDR2) = 0 generate lock <= cgo.clklock; end generate; + regs : process(clkm,rstn) + begin + if (rstn = '0') then + counter <= (others => '0'); + led_int <= '0'; + elsif rising_edge(clkm) then + if (counter >= 75000000) then + counter <= (others => '0'); + led_int <= not led_int; + else + counter <= counter + 1; + led_int <= led_int; + end if; + end if; + end process; ---------------------------------------------------------------------- --- System ACE I/F Controller --------------------------------------- ---------------------------------------------------------------------- - + grace: if CFG_GRACECTRL = 1 generate grace0 : gracectrl generic map (hindex => 7, hirq => 10, mode => 2, haddr => 16#002#, hmask => 16#fff#, split => CFG_SPLIT) @@ -460,22 +504,22 @@ begin nograce: if CFG_GRACECTRL /= 1 generate aceo <= gracectrl_none; end generate; - - clk_33_pad : clkpad generic map (level => cmos, voltage => x25v, tech => padtech) + + clk_33_pad : clkpad generic map (level => cmos, voltage => x25v, tech => padtech) port map (clk_33, clkace); - sysace_mpa_pads : outpadv generic map (level => cmos, voltage => x25v, width => 7, tech => padtech) - port map (sysace_mpa, aceo.addr); + sysace_mpa_pads : outpadv generic map (level => cmos, voltage => x25v, width => 7, tech => padtech) + port map (sysace_mpa, aceo.addr); sysace_mpce_pad : outpad generic map (level => cmos, voltage => x25v, tech => padtech) - port map (sysace_mpce, aceo.cen); + port map (sysace_mpce, aceo.cen); sysace_d_pads : iopadv generic map (level => cmos, voltage => x25v, tech => padtech, width => 8) - port map (sysace_d(7 downto 0), aceo.do(7 downto 0), aceo.doen, acei.di(7 downto 0)); + port map (sysace_d(7 downto 0), aceo.do(7 downto 0), aceo.doen, acei.di(7 downto 0)); acei.di(15 downto 8) <= (others => '0'); sysace_mpoe_pad : outpad generic map (level => cmos, voltage => x25v, tech => padtech) port map (sysace_mpoe, aceo.oen); sysace_mpwe_pad : outpad generic map (level => cmos, voltage => x25v, tech => padtech) - port map (sysace_mpwe, aceo.wen); + port map (sysace_mpwe, aceo.wen); sysace_mpirq_pad : inpad generic map (level => cmos, voltage => x25v, tech => padtech) - port map (sysace_mpirq, acei.irq); + port map (sysace_mpirq, acei.irq); ---------------------------------------------------------------------- --- APB Bridge and various periherals ------------------------------- @@ -560,22 +604,22 @@ begin hindex => CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG, clk0 => 40000, clk1 => 24000, clk2 => 20000, clk3 => 16000, burstlen => 4, ahbaccsz => CFG_AHBDW) - port map(rstn, clkm, clkvga, apbi, apbo(6), vgao, ahbmi, + port map(rstn, clkm, clkvga, apbi, apbo(6), vgao, ahbmi, ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG), clk_sel); end generate; - vgadvi : if (CFG_VGA_ENABLE + CFG_SVGA_ENABLE) /= 0 generate + vgadvi : if (CFG_VGA_ENABLE + CFG_SVGA_ENABLE) /= 0 generate dvi0 : entity work.svga2ch7301c generic map (tech => fabtech, idf => 2) - port map (clk100, ethi.gtx_clk, lock, clk_sel, vgao, clkvga, clkvga_p, clkvga_n, + port map (clk100, ethi.gtx_clk, lock, clk_sel, vgao, clkvga, clkvga_p, clkvga_n, lcd_datal, lcd_hsyncl, lcd_vsyncl, lcd_del); - + i2cdvi : i2cmst generic map (pindex => 9, paddr => 9, pmask => 16#FFF#, pirq => 14, filter => I2C_FILTER) port map (rstn, clkm, apbi, apbo(9), dvi_i2ci, dvi_i2co); end generate; - novga : if (CFG_VGA_ENABLE + CFG_SVGA_ENABLE) = 0 generate + novga : if (CFG_VGA_ENABLE + CFG_SVGA_ENABLE) = 0 generate apbo(6) <= apb_none; lcd_datal <= (others => '0'); clkvga_p <= '0'; clkvga_n <= '0'; lcd_hsyncl <= '0'; lcd_vsyncl <= '0'; lcd_del <= '0'; @@ -611,26 +655,26 @@ begin pindex => 15, paddr => 15, pirq => 12, memtech => memtech, mdcscaler => CPU_FREQ/1000, enable_mdio => 1, fifosize => CFG_ETH_FIFO, nsync => 1, edcl => CFG_DSU_ETH, edclbufsz => CFG_ETH_BUF, - macaddrh => CFG_ETH_ENM, macaddrl => CFG_ETH_ENL, phyrstadr => 7, + macaddrh => CFG_ETH_ENM, macaddrl => CFG_ETH_ENL, phyrstadr => 7, ipaddrh => CFG_ETH_IPM, ipaddrl => CFG_ETH_IPL, giga => CFG_GRETH1G, enable_mdint => 1) port map(rst => rstn, clk => clkm, ahbmi => ahbmi, - ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_SVGA_ENABLE), - apbi => apbi, apbo => apbo(15), ethi => ethi, etho => etho); + ahbmo => ahbmo(CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_SVGA_ENABLE), + apbi => apbi, apbo => apbo(15), ethi => ethi, etho => etho); end generate; -- greth1g: if CFG_GRETH1G = 1 generate gtxclk0 : entity work.gtxclk port map ( - clk_p => gmiiclk_p, clk_n => gmiiclk_n, clkint => ethi.gtx_clk, + clk_p => gmiiclk_p, clk_n => gmiiclk_n, clkint => ethi.gtx_clk, clkout => egtx_clk); -- end generate; ethpads : if (CFG_GRETH = 1) generate -- eth pads emdio_pad : iopad generic map (level => cmos, voltage => x25v, tech => padtech) port map (emdio, etho.mdio_o, etho.mdio_oe, ethi.mdio_i); - etxc_pad : clkpad generic map (level => cmos, voltage => x25v, tech => padtech, arch => 2) + etxc_pad : clkpad generic map (level => cmos, voltage => x25v, tech => padtech, arch => 2) port map (etx_clk, ethi.tx_clk); - erxc_pad : clkpad generic map (level => cmos, voltage => x25v, tech => padtech, arch => 2) + erxc_pad : clkpad generic map (level => cmos, voltage => x25v, tech => padtech, arch => 2) port map (erx_clk, ethi.rx_clk); erxd_pad : inpadv generic map (level => cmos, voltage => x25v, tech => padtech, width => 8) port map (erxd, ethi.rxd(7 downto 0)); @@ -642,7 +686,7 @@ begin port map (erx_col, ethi.rx_col); erxcr_pad : inpad generic map (level => cmos, voltage => x25v, tech => padtech) port map (erx_crs, ethi.rx_crs); - emdint_pad : inpad generic map (level => cmos, voltage => x25v, tech => padtech) + emdint_pad : inpad generic map (level => cmos, voltage => x25v, tech => padtech) port map (emdint, ethi.mdint); diff --git a/designs/leon3-xilinx-ml605/leon3mp_mig39.ucf b/designs/leon3-xilinx-ml605/leon3mp_mig39.ucf new file mode 100644 index 00000000..f25ee033 --- /dev/null +++ b/designs/leon3-xilinx-ml605/leon3mp_mig39.ucf @@ -0,0 +1,195 @@ + +NET "clk_ref_p" TNM_NET = TNM_clk_ref; +TIMESPEC "TS_clk_ref" = PERIOD "TNM_clk_ref" 5 ns ; + +NET "reset" IOSTANDARD = SSTL15; +NET "reset" LOC = "H10"; +NET "errorn" LOC = "AD24"; + +NET "address(0)" LOC = "AL8"; ## 29 on U4, A1 on U27 +NET "address(1)" LOC = "AK8"; ## 25 on U4, B1 on U27 +NET "address(2)" LOC = "AC9"; ## 24 on U4, C1 on U27 +NET "address(3)" LOC = "AD10"; ## 23 on U4, D1 on U27 +NET "address(4)" LOC = "C8"; ## 22 on U4, D2 on U27 +NET "address(5)" LOC = "B8"; ## 21 on U4, A2 on U27 +NET "address(6)" LOC = "E9"; ## 20 on U4, C2 on U27 +NET "address(7)" LOC = "E8"; ## 19 on U4, A3 on U27 +NET "address(8)" LOC = "A8"; ## 8 on U4, B3 on U27 +NET "address(9)" LOC = "A9"; ## 7 on U4, C3 on U27 +NET "address(10)" LOC = "D9"; ## 6 on U4, D3 on U27 +NET "address(11)" LOC = "C9"; ## 5 on U4, C4 on U27 +NET "address(12)" LOC = "D10"; ## 4 on U4, A5 on U27 +NET "address(13)" LOC = "C10"; ## 3 on U4, B5 on U27 +NET "address(14)" LOC = "F10"; ## 2 on U4, C5 on U27 +NET "address(15)" LOC = "F9"; ## 1 on U4, D7 on U27 +NET "address(16)" LOC = "AH8"; ## 55 on U4, D8 on U27 +NET "address(17)" LOC = "AG8"; ## 18 on U4, A7 on U27 +NET "address(18)" LOC = "AP9"; ## 17 on U4, B7 on U27 +NET "address(19)" LOC = "AN9"; ## 16 on U4, C7 on U27 +NET "address(20)" LOC = "AF10"; ## 11 on U4, C8 on U27 +NET "address(21)" LOC = "AF9"; ## 10 on U4, A8 on U27 +NET "address(22)" LOC = "AL9"; ## 9 on U4, G1 on U27 +NET "address(23)" LOC = "AA23"; ## 26 on U4 +NET "data(0)" LOC = "AF24"; ## 34 on U4, F2 on U27 +NET "data(1)" LOC = "AF25"; ## 36 on U4, E2 on U27 +NET "data(2)" LOC = "W24"; ## 39 on U4, G3 on U27 +NET "data(3)" LOC = "V24"; ## 41 on U4, E4 on U27 +NET "data(4)" LOC = "H24"; ## 47 on U4, E5 on U27 +NET "data(5)" LOC = "H25"; ## 49 on U4, G5 on U27 +NET "data(6)" LOC = "P24"; ## 51 on U4, G6 on U27 +NET "data(7)" LOC = "R24"; ## 53 on U4, H7 on U27 +NET "data(8)" LOC = "G23"; ## 35 on U4, E1 on U27 +NET "data(9)" LOC = "H23"; ## 37 on U4, E3 on U27 +NET "data(10)" LOC = "N24"; ## 40 on U4, F3 on U27 +NET "data(11)" LOC = "N23"; ## 42 on U4, F4 on U27 +NET "data(12)" LOC = "F23"; ## 48 on U4, F5 on U27 +NET "data(13)" LOC = "F24"; ## 50 on U4, H5 on U27 +NET "data(14)" LOC = "L24"; ## 52 on U4, G7 on U27 +NET "data(15)" LOC = "M23"; ## 54 on U4, E7 on U27 +#NET "FLASH_WAIT" LOC = "J26"; ## 56 on U4 +NET "writen" LOC = "AF23"; ## 14 on U4, G8 on U27 +NET "oen" LOC = "AA24"; ## 32 on U4, F8 on U27 +#NET "FPGA_CCLK" LOC = "K8"; ## F1 on U27 +NET "alatch" LOC = "AC23"; ## H1 on U27 +NET "romsn" LOC = "Y24"; ## 30 on U4, B4 on U27 (U10 and switch S2.2 setting select either U4 or U27) +## + +NET "erx_col" LOC = "AK13"; ## 114 on U80 +NET "erx_crs" LOC = "AL13"; ## 115 on U80 +NET "emdint" LOC = "AH14"; ## 32 on U80 +NET "emdc" LOC = "AP14"; ## 35 on U80 +NET "emdio" LOC = "AN14"; ## 33 on U80 +NET "erstn" LOC = "AH13"; ## 36 on U80 +NET "erx_clk" LOC = "AP11"; ## 7 on U80 +NET "erx_dv" LOC = "AM13"; ## 4 on U80 +NET "erxd(0)" LOC = "AN13"; ## 3 on U80 +NET "erxd(1)" LOC = "AF14"; ## 128 on U80 +NET "erxd(2)" LOC = "AE14"; ## 126 on U80 +NET "erxd(3)" LOC = "AN12"; ## 125 on U80 +NET "erxd(4)" LOC = "AM12"; ## 124 on U80 +NET "erxd(5)" LOC = "AD11"; ## 123 on U80 +NET "erxd(6)" LOC = "AC12"; ## 121 on U80 +NET "erxd(7)" LOC = "AC13"; ## 120 on U80 +NET "erx_er" LOC = "AG12"; ## 9 on U80 +NET "etx_clk" LOC = "AD12"; ## 10 on U80 +NET "etx_en" LOC = "AJ10"; ## 16 on U80 +NET "egtx_clk" LOC = "AH12"; ## 14 on U80 +NET "etxd(0)" LOC = "AM11"; ## 18 on U80 +NET "etxd(1)" LOC = "AL11"; ## 19 on U80 +NET "etxd(2)" LOC = "AG10"; ## 20 on U80 +NET "etxd(3)" LOC = "AG11"; ## 24 on U80 +NET "etxd(4)" LOC = "AL10"; ## 25 on U80 +NET "etxd(5)" LOC = "AM10"; ## 26 on U80 +NET "etxd(6)" LOC = "AE11"; ## 28 on U80 +NET "etxd(7)" LOC = "AF11"; ## 29 on U80 +NET "etx_er" LOC = "AH10"; ## 13 on U80 + +NET "dsurx" LOC = "J24"; ## 24 on U34 +NET "dsutx" LOC = "J25"; ## 25 on U34 + +#NET "GPIO_DIP_SW1" LOC = "D22"; ## 1 on SW1 DIP switch (active-high) +#NET "GPIO_DIP_SW2" LOC = "C22"; ## 2 on SW1 DIP switch (active-high) +#NET "GPIO_DIP_SW3" LOC = "L21"; ## 3 on SW1 DIP switch (active-high) +#NET "GPIO_DIP_SW4" LOC = "L20"; ## 4 on SW1 DIP switch (active-high) +#NET "GPIO_DIP_SW5" LOC = "C18"; ## 5 on SW1 DIP switch (active-high) +NET "dsubre" LOC = "B18"; ## 6 on SW1 DIP switch (active-high) +#NET "GPIO_DIP_SW7" LOC = "K22"; ## 7 on SW1 DIP switch (active-high) +#NET "GPIO_DIP_SW8" LOC = "K21"; ## 8 on SW1 DIP switch (active-high) +## + +NET "led(0)" LOC = "AC22"; ## 2 on LED DS12, 1 on J62 +NET "led(1)" LOC = "AC24"; ## 2 on LED DS11, 2 on J62 +NET "led(2)" LOC = "AE22"; ## 2 on LED DS9, 3 on J62 +NET "led(3)" LOC = "AE23"; ## 2 on LED DS10, 4 on J62 +NET "led(4)" LOC = "AB23"; ## 2 on LED DS15, 5 on J62 +NET "led(5)" LOC = "AG23"; ## 2 on LED DS14, 6 on J62 +NET "led(6)" LOC = "AE24"; ## 2 on LED DS22, 7 on J62 +#NET "led(7)" LOC = "AD24"; ## 2 on LED DS21, 8 on J62 + +NET "dvi_iic_scl" LOC = "AN10"; ## 2 on Q5, 15 on U38 +NET "iic_scl_main" LOC = "AK9"; ## 2 on Q19 +#NET "IIC_SCL_SFP" LOC = "AA34"; ## 2 on Q23 +NET "dvi_iic_sda" LOC = "AP10"; ## 2 on Q6, 14 on U38 +NET "iic_sda_main" LOC = "AE9"; ## 2 on Q20 +#NET "IIC_SDA_SFP" LOC = "AA33"; ## 2 on Q21 + +NET "tft_lcd_data(0)" LOC = "AJ19"; ## 63 on U38 (thru series R111 47.5 ohm) +NET "tft_lcd_data(1)" LOC = "AH19"; ## 62 on U38 (thru series R110 47.5 ohm) +NET "tft_lcd_data(2)" LOC = "AM17"; ## 61 on U38 (thru series R109 47.5 ohm) +NET "tft_lcd_data(3)" LOC = "AM16"; ## 60 on U38 (thru series R108 47.5 ohm) +NET "tft_lcd_data(4)" LOC = "AD17"; ## 59 on U38 (thru series R107 47.5 ohm) +NET "tft_lcd_data(5)" LOC = "AE17"; ## 58 on U38 (thru series R106 47.5 ohm) +NET "tft_lcd_data(6)" LOC = "AK18"; ## 55 on U38 (thru series R105 47.5 ohm) +NET "tft_lcd_data(7)" LOC = "AK17"; ## 54 on U38 (thru series R104 47.5 ohm) +NET "tft_lcd_data(8)" LOC = "AE18"; ## 53 on U38 (thru series R103 47.5 ohm) +NET "tft_lcd_data(9)" LOC = "AF18"; ## 52 on U38 (thru series R102 47.5 ohm) +NET "tft_lcd_data(10)" LOC = "AL16"; ## 51 on U38 (thru series R101 47.5 ohm) +NET "tft_lcd_data(11)" LOC = "AK16"; ## 50 on U38 (thru series R100 47.5 ohm) +NET "tft_lcd_de" LOC = "AD16"; ## 2 on U38 (thru series R112 47.5 ohm) +#NET "DVI_GPIO1_FMC_C2M_PG_LS" LOC = "K9"; ## 18 on U32 (not wired to U38) +NET "tft_lcd_hsync" LOC = "AN17"; ## 4 on U38 (thru series R113 47.5 ohm) +NET "tft_lcd_reset_b" LOC = "AP17"; ## 2 on U32 (DVI_RESET_B pin 13 on U38) +NET "tft_lcd_vsync" LOC = "AD15"; ## 5 on U38 (thru series R114 47.5 ohm) +NET "tft_lcd_clk_n" LOC = "AC17"; ## 56 on U38 +NET "tft_lcd_clk_p" LOC = "AC18"; ## 57 on U38 + +#NET "SYSACE_CFGTDI" LOC = "AC8"; ## 81 on U19 +NET "sysace_d(0)" LOC = "AM15"; ## 66 on U19 +NET "sysace_d(1)" LOC = "AJ17"; ## 65 on U19 +NET "sysace_d(2)" LOC = "AJ16"; ## 63 on U19 +NET "sysace_d(3)" LOC = "AP16"; ## 62 on U19 +NET "sysace_d(4)" LOC = "AG16"; ## 61 on U19 +NET "sysace_d(5)" LOC = "AH15"; ## 60 on U19 +NET "sysace_d(6)" LOC = "AF16"; ## 59 on U19 +NET "sysace_d(7)" LOC = "AN15"; ## 58 on U19 +NET "sysace_mpa(0)" LOC = "AC15"; ## 70 on U19 +NET "sysace_mpa(1)" LOC = "AP15"; ## 69 on U19 +NET "sysace_mpa(2)" LOC = "AG17"; ## 68 on U19 +NET "sysace_mpa(3)" LOC = "AH17"; ## 67 on U19 +NET "sysace_mpa(4)" LOC = "AG15"; ## 45 on U19 +NET "sysace_mpa(5)" LOC = "AF15"; ## 44 on U19 +NET "sysace_mpa(6)" LOC = "AK14"; ## 43 on U19 +#NET "SYSACE_MPBRDY" LOC = "AJ15"; ## 39 on U19 +NET "sysace_mpce" LOC = "AJ14"; ## 42 on U19 +NET "sysace_mpirq" LOC = "L9"; ## 41 on U19 +NET "sysace_mpoe" LOC = "AL15"; ## 77 on U19 +NET "sysace_mpwe" LOC = "AL14"; ## 76 on U19 +NET "clk_33" LOC = "AE16"; ## 93 on U19 +NET "clk_33" PERIOD = 30.000 ; +OFFSET = IN : 20.000 : BEFORE clk_33 ; +OFFSET = OUT : 20.000 : AFTER clk_33 ; + + +NET "clkm" TNM_NET = "clkm"; +NET "clk_ddr" TNM_NET = "clk_ddr"; + +TIMESPEC "TS_clkm_clk_ddr" = FROM "clkm" TO "clk_ddr" TIG; +TIMESPEC "TS_clk_ddr_clkm" = FROM "clk_ddr" TO "clkm" TIG; + +NET "erx_clk" PERIOD = 8.000 ; +OFFSET = IN : 5.000 : BEFORE erx_clk ; +#OFFSET = IN : 2.000 : BEFORE erx_clk ; + +NET "etx_clk" PERIOD = 40.000 ; +OFFSET = OUT : 15.000 : AFTER etx_clk ; +OFFSET = IN : 8.000 : BEFORE etx_clk ; + +NET "etx_clk" MAXSKEW= 1.0 ns; +NET "erx_clk" MAXSKEW= 1.0 ns; + +#NET "egtx_clk" PERIOD = 8.000 ; +#OFFSET = OUT : 5.500 : AFTER egtx_clk; +#NET "egtx_clk" CLOCK_DEDICATED_ROUTE = FALSE; + +NET "gmiiclk_p" LOC = "H6"; +NET "gmiiclk_n" LOC = "H5"; +NET "gmiiclk_p" PERIOD = 8.000 ; +OFFSET = OUT : 12.000 : AFTER gmiiclk_p; + +//////////////////////////////////////////////////////////////////////////// +// VGA clock +//////////////////////////////////////////////////////////////////////////// +#NET "clkvga" TNM_NET = "clkvga" | PERIOD = 15.385; +#TIMESPEC "TSPLB_TFT25" = FROM "clkm" TO "clkvga" TIG; +#TIMESPEC "TSPLB_TFT40" = FROM "clkvga" TO "clkm" TIG; + diff --git a/designs/leon3-xilinx-ml605/mig.xco b/designs/leon3-xilinx-ml605/mig.xco index dc093522..1727e7a6 100644 --- a/designs/leon3-xilinx-ml605/mig.xco +++ b/designs/leon3-xilinx-ml605/mig.xco @@ -1,42 +1,42 @@ -############################################################## -# -# Xilinx Core Generator version 13.1 -# Date: Sat Feb 19 19:51:50 2011 -# -############################################################## -# -# This file contains the customisation parameters for a -# Xilinx CORE Generator IP GUI. It is strongly recommended -# that you do not manually alter this file as it may cause -# unexpected and unsupported behavior. -# -############################################################## -# -# BEGIN Project Options -SET addpads = false -SET asysymbol = true -SET busformat = BusFormatParenNotRipped -SET createndf = false -SET designentry = VHDL -SET device = xc6vlx240t -SET devicefamily = virtex6 -SET flowvendor = Synplicity -SET formalverification = false -SET foundationsym = false -SET implementationfiletype = Ngc -SET package = ff1156 -SET removerpms = false -SET simulationfiles = Behavioral -SET speedgrade = -1 -SET verilogsim = false -SET vhdlsim = true -# END Project Options -# BEGIN Select -SELECT MIG_Virtex6_and_Spartan6 family Xilinx,_Inc. 3.7 -# END Select -# BEGIN Parameters -CSET component_name=mig_37 -CSET xml_input_file=./mig.prj -# END Parameters -GENERATE -# CRC: 362dace +############################################################## +# +# Xilinx Core Generator version 13.1 +# Date: Sat Feb 19 19:51:50 2011 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatParenNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6vlx240t +SET devicefamily = virtex6 +SET flowvendor = Synplicity +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ff1156 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -1 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT MIG_Virtex6_and_Spartan6 family Xilinx,_Inc. 3.7 +# END Select +# BEGIN Parameters +CSET component_name=mig_37 +CSET xml_input_file=./mig.prj +# END Parameters +GENERATE +# CRC: 362dace diff --git a/designs/leon3-xilinx-ml605/mig39.cgp b/designs/leon3-xilinx-ml605/mig39.cgp new file mode 100644 index 00000000..6ba986e5 --- /dev/null +++ b/designs/leon3-xilinx-ml605/mig39.cgp @@ -0,0 +1,22 @@ +# Date: Wed Dec 5 12:56:18 2012 + +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatParenNotRipped +SET createndf = false +SET designentry = Verilog +SET device = xc6vlx240t +SET devicefamily = virtex6 +SET flowvendor = Synplicity +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ff1156 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -1 +SET verilogsim = true +SET vhdlsim = false +SET workingdirectory = ./tmp/ + +# CRC: 59c905fa diff --git a/designs/leon3-xilinx-ml605/mig39.prj b/designs/leon3-xilinx-ml605/mig39.prj new file mode 100644 index 00000000..24f482aa --- /dev/null +++ b/designs/leon3-xilinx-ml605/mig39.prj @@ -0,0 +1,194 @@ + + + mig + 1 + 0 + OFF + xc6vlx240t-ff1156/-1 + 3.92 + Differential + TRUE + HIGH + 0 + + DDR3_SDRAM/SODIMMs/MT4JSF6464HY-1G1 + 2500 + 64 + 1 + 1 + FALSE + + 13 + 10 + 3 + 25 + + + + Disabled + 1 + 36 + BANK_ROW_COLUMN + Normal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8 - Fixed + Sequential + 6 + Normal + No + Slow Exit + Enable + RZQ/7 + RZQ/4 + 0 + Disabled + Enabled + Output Buffer Enabled + Full Array + 5 + Enabled + Normal + Dynamic ODT off + NATIVE + + diff --git a/designs/leon3-xilinx-ml605/mig39.xco b/designs/leon3-xilinx-ml605/mig39.xco new file mode 100644 index 00000000..10dff04a --- /dev/null +++ b/designs/leon3-xilinx-ml605/mig39.xco @@ -0,0 +1,49 @@ +############################################################## +# +# Xilinx Core Generator version 14.4 +# Date: Tue Jan 15 12:55:41 2013 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:mig:3.92 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatParenNotRipped +SET createndf = false +SET designentry = Verilog +SET device = xc6vlx240t +SET devicefamily = virtex6 +SET flowvendor = Synplicity +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ff1156 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -1 +SET verilogsim = true +SET vhdlsim = false +# END Project Options +# BEGIN Select +SELECT MIG_Virtex-6_and_Spartan-6 family Xilinx,_Inc. 3.92 +# END Select +# BEGIN Parameters +CSET component_name=mig +CSET xml_input_file=./mig39.prj +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-10-13T03:35:42Z +# END Extra information +GENERATE +# CRC: 1dbe8904 diff --git a/designs/leon3-xilinx-ml605/mig_infrastructure_patch.txt b/designs/leon3-xilinx-ml605/mig_infrastructure_patch.txt new file mode 100644 index 00000000..986c831a --- /dev/null +++ b/designs/leon3-xilinx-ml605/mig_infrastructure_patch.txt @@ -0,0 +1,109 @@ +--- ./mig/user_design/rtl/ip_top/infrastructure.v 2012-12-18 14:40:25.000000000 +0100 ++++ ./mig_patch/p/a/t/c/h/mig_design/infrastructure.v 2012-12-18 10:03:46.821589702 +0100 +@@ -88,6 +88,7 @@ + parameter DIVCLK_DIVIDE = 1, // write PLL VCO divisor + parameter CLKOUT_DIVIDE = 2, // VCO output divisor for fast + // (memory) clocks ++ parameter CLKOUT_DIVIDE4 = 12, + parameter RST_ACT_LOW = 1 + ) + ( +@@ -101,6 +102,8 @@ + output clk_mem, // 2x logic clock + output clk, // 1x logic clock + output clk_rd_base, // 2x base read clock ++ output clk_amba, ++ output clk_100, + // Reset outputs + output rstdiv0, // Reset CLK and CLKDIV logic (incl I/O), + // Phase Shift Interface +@@ -135,10 +138,14 @@ + localparam CLKOUT0_DIVIDE_F = CLKOUT_DIVIDE; + localparam CLKOUT1_DIVIDE = CLKOUT_DIVIDE * nCK_PER_CLK; + localparam CLKOUT2_DIVIDE = CLKOUT_DIVIDE; ++ localparam CLKOUT3_DIVIDE = CLKOUT_DIVIDE * nCK_PER_CLK * 2; ++ localparam CLKOUT4_DIVIDE = CLKOUT_DIVIDE4; + + localparam CLKOUT0_PERIOD = VCO_PERIOD * CLKOUT0_DIVIDE_F; + localparam CLKOUT1_PERIOD = VCO_PERIOD * CLKOUT1_DIVIDE; + localparam CLKOUT2_PERIOD = VCO_PERIOD * CLKOUT2_DIVIDE; ++ localparam CLKOUT3_PERIOD = VCO_PERIOD * CLKOUT3_DIVIDE; ++ localparam CLKOUT4_PERIOD = VCO_PERIOD * CLKOUT4_DIVIDE; + + //synthesis translate_off + initial begin +@@ -152,9 +159,12 @@ + $display("CLKOUT0_DIVIDE_F = %7d", CLKOUT0_DIVIDE_F); + $display("CLKOUT1_DIVIDE = %7d", CLKOUT1_DIVIDE ); + $display("CLKOUT2_DIVIDE = %7d", CLKOUT2_DIVIDE ); +- $display("CLKOUT0_PERIOD = %7d", CLKOUT0_PERIOD ); ++ $display("CLKOUT3_DIVIDE = %7d", CLKOUT3_DIVIDE ); ++ $display("CLKOUT4_DIVIDE = %7d", CLKOUT4_DIVIDE ); + $display("CLKOUT1_PERIOD = %7d", CLKOUT1_PERIOD ); + $display("CLKOUT2_PERIOD = %7d", CLKOUT2_PERIOD ); ++ $display("CLKOUT3_PERIOD = %7d", CLKOUT3_PERIOD ); ++ $display("CLKOUT4_PERIOD = %7d", CLKOUT4_PERIOD ); + $display("############################################################\n"); + end + //synthesis translate_on +@@ -163,6 +173,8 @@ + wire clk_mem_bufg; + wire clk_mem_pll; + wire clk_pll; ++ wire clk_pll_amba; ++ wire clk_pll_100; + wire clkfbout_pll; + wire pll_lock + /* synthesis syn_maxfan = 10 */; +@@ -225,15 +237,15 @@ + .CLKOUT2_DUTY_CYCLE (0.500), + .CLKOUT2_PHASE (0.000), + .CLKOUT2_USE_FINE_PS ("TRUE"), +- .CLKOUT3_DIVIDE (1), ++ .CLKOUT3_DIVIDE (CLKOUT3_DIVIDE), + .CLKOUT3_DUTY_CYCLE (0.500), + .CLKOUT3_PHASE (0.000), +- .CLKOUT3_USE_FINE_PS ("FALSE"), ++ .CLKOUT3_USE_FINE_PS ("TRUE"), + .CLKOUT4_CASCADE ("FALSE"), +- .CLKOUT4_DIVIDE (1), ++ .CLKOUT4_DIVIDE (CLKOUT4_DIVIDE), + .CLKOUT4_DUTY_CYCLE (0.500), + .CLKOUT4_PHASE (0.000), +- .CLKOUT4_USE_FINE_PS ("FALSE"), ++ .CLKOUT4_USE_FINE_PS ("TRUE"), + .CLKOUT5_DIVIDE (1), + .CLKOUT5_DUTY_CYCLE (0.500), + .CLKOUT5_PHASE (0.000), +@@ -255,9 +267,9 @@ + .CLKOUT1B (), + .CLKOUT2 (clk_rd_base), + .CLKOUT2B (), +- .CLKOUT3 (), ++ .CLKOUT3 (clk_pll_100), + .CLKOUT3B (), +- .CLKOUT4 (), ++ .CLKOUT4 (clk_pll_amba), + .CLKOUT5 (), + .CLKOUT6 (), + .DO (), +@@ -292,6 +304,19 @@ + .I (clk_pll) + ); + ++ BUFG u_bufg_clkamba ++ ( ++ .O (clk_amba), ++ .I (clk_pll_amba) ++ ); ++ ++ BUFG u_bufg_clk100 ++ ( ++ .O (clk_100), ++ .I (clk_pll_100) ++ ); ++ ++ + //*************************************************************************** + // RESET SYNCHRONIZATION DESCRIPTION: + // Various resets are generated to ensure that: diff --git a/designs/leon3-xilinx-ml605/mig_iodelay_ctrl_patch.txt b/designs/leon3-xilinx-ml605/mig_iodelay_ctrl_patch.txt new file mode 100644 index 00000000..09fdc752 --- /dev/null +++ b/designs/leon3-xilinx-ml605/mig_iodelay_ctrl_patch.txt @@ -0,0 +1,18 @@ +--- ./mig/user_design/rtl/ip_top/iodelay_ctrl.v 2012-12-18 14:40:25.000000000 +0100 ++++ ./mig_patch/p/a/t/c/h/mig_design/iodelay_ctrl.v 2012-12-17 07:40:31.662595674 +0100 +@@ -92,6 +92,7 @@ + input clk_ref_n, + input clk_ref, + input sys_rst, ++ output clk_200, // single 200MHz clock for ML605 + output iodelay_ctrl_rdy + ); + +@@ -159,6 +160,7 @@ + .O (clk_ref_bufg), + .I (clk_ref_ibufg) + ); ++ assign clk_200 = clk_ref_bufg; // ML605 single 200MHz clock source + + //***************************************************************** + // IDELAYCTRL reset diff --git a/designs/leon3-xilinx-ml605/mig_patch.txt b/designs/leon3-xilinx-ml605/mig_patch.txt new file mode 100644 index 00000000..cf19852b --- /dev/null +++ b/designs/leon3-xilinx-ml605/mig_patch.txt @@ -0,0 +1,159 @@ +--- ./mig/user_design/rtl/ip_top/mig.v 2012-12-18 14:40:26.000000000 +0100 ++++ ./mig_patch/p/a/t/c/h/mig_design/mig.v 2012-12-18 14:24:36.329423978 +0100 +@@ -74,7 +74,7 @@ + + `timescale 1ps/1ps + +-module mig # ++module mig_37 # + ( + parameter REFCLK_FREQ = 200, + // # = 200 for all design frequencies of +@@ -91,9 +91,10 @@ + // MMCM programming algorithm + parameter CLKFBOUT_MULT_F = 6, + // write PLL VCO multiplier. +- parameter DIVCLK_DIVIDE = 2, ++ parameter DIVCLK_DIVIDE = 1, // ML605 200MHz input clock (VCO = 1200MHz)use "2" for 400MHz SMA, + // write PLL VCO divisor. +- parameter CLKOUT_DIVIDE = 3, ++ parameter CLKOUT_DIVIDE4 = 12, // Leon3 Amba clock control ++ parameter CLKOUT_DIVIDE = 3, //400MHz clock + // VCO output divisor for fast (memory) clocks. + parameter nCK_PER_CLK = 2, + // # of memory CKs per fabric clock. +@@ -136,14 +137,14 @@ + // # of DQS/DQS# bits. + parameter ROW_WIDTH = 13, + // # of memory Row Address bits. +- parameter BURST_MODE = "8", ++ parameter BURST_MODE = "OTF", + // Burst Length (Mode Register 0). + // # = "8", "4", "OTF". + parameter BM_CNT_WIDTH = 2, + // # = ceil(log2(nBANK_MACHS)). + parameter ADDR_CMD_MODE = "1T" , + // # = "2T", "1T". +- parameter ORDERING = "NORM", ++ parameter ORDERING = "STRICT", + // # = "NORM", "STRICT". + parameter WRLVL = "ON", + // # = "ON" - DDR3 SDRAM +@@ -210,8 +211,8 @@ + ) + ( + +- input sys_clk_p, //differential system clocks +- input sys_clk_n, ++// input sys_clk_p, //differential system clocks ++// input sys_clk_n, + input clk_ref_p, //differential iodelayctrl clk + input clk_ref_n, + inout [DQ_WIDTH-1:0] ddr3_dq, +@@ -229,8 +230,8 @@ + inout [DQS_WIDTH-1:0] ddr3_dqs_n, + output [CK_WIDTH-1:0] ddr3_ck_p, + output [CK_WIDTH-1:0] ddr3_ck_n, +- inout sda, +- output scl, ++ //inout sda, ++ //output scl, + input app_wdf_wren, + input [(4*PAYLOAD_WIDTH)-1:0] app_wdf_data, + input [(4*PAYLOAD_WIDTH)/8-1:0] app_wdf_mask, +@@ -241,10 +242,12 @@ + output app_rdy, + output app_wdf_rdy, + output [(4*PAYLOAD_WIDTH)-1:0] app_rd_data, +- output app_rd_data_end, ++ //output app_rd_data_end, + output app_rd_data_valid, +- output ui_clk_sync_rst, +- output ui_clk, ++ output tb_rst, ++ output tb_clk, ++ output clk_ahb, ++ output clk100, + output phy_init_done, + + input sys_rst // System reset +@@ -266,9 +269,9 @@ + wire sys_clk; + wire mmcm_clk; + wire iodelay_ctrl_rdy; +- +- (* KEEP = "TRUE" *) wire sda_i; +- (* KEEP = "TRUE" *) wire scl_i; ++ wire app_rd_data_end; ++// (* KEEP = "TRUE" *) wire sda_i; ++// (* KEEP = "TRUE" *) wire scl_i; + wire rst; + wire clk; + wire clk_mem; +@@ -365,9 +368,9 @@ + + assign app_hi_pri = 1'b0; + +- assign ui_clk = clk; +- assign ui_clk_sync_rst = rst; +- MUXCY scl_inst ++ assign tb_clk = clk; ++ assign tb_rst = rst; ++ /* MUXCY scl_inst + ( + .O (scl), + .CI (scl_i), +@@ -382,8 +385,11 @@ + .DI (1'b0), + .S (1'b1) + ); ++*/ + assign clk_ref = 1'b0; +- assign sys_clk = 1'b0; ++// assign sys_clk = 1'b0; ++// ML605 200MHz clock sourced from BUFG within "idelay_ctrl" module. ++ wire clk_200; + + + iodelay_ctrl # +@@ -399,8 +405,11 @@ + .clk_ref_n (clk_ref_n), + .clk_ref (clk_ref), + .sys_rst (sys_rst), ++ .clk_200 (clk_200), // ML605 200MHz clock from BUFG to MMCM CLKIN1 + .iodelay_ctrl_rdy (iodelay_ctrl_rdy) + ); ++/* ML605 comment out "clk_ibuf" module. MIG default requires 2 inputs clocks. ++ + clk_ibuf # + ( + .INPUT_CLK_TYPE (INPUT_CLK_TYPE) +@@ -412,6 +421,8 @@ + .sys_clk (sys_clk), + .mmcm_clk (mmcm_clk) + ); ++*/ ++ + infrastructure # + ( + .TCQ (TCQ), +@@ -420,6 +431,7 @@ + .MMCM_ADV_BANDWIDTH (MMCM_ADV_BANDWIDTH), + .CLKFBOUT_MULT_F (CLKFBOUT_MULT_F), + .DIVCLK_DIVIDE (DIVCLK_DIVIDE), ++ .CLKOUT_DIVIDE4 (CLKOUT_DIVIDE4), + .CLKOUT_DIVIDE (CLKOUT_DIVIDE), + .RST_ACT_LOW (RST_ACT_LOW) + ) +@@ -428,8 +440,10 @@ + .clk_mem (clk_mem), + .clk (clk), + .clk_rd_base (clk_rd_base), ++ .clk_amba (clk_ahb), ++ .clk_100 (clk100), + .rstdiv0 (rst), +- .mmcm_clk (mmcm_clk), ++ .mmcm_clk (clk_200), // ML605 single input clock 200MHz from "iodelay_ctrl" + .sys_rst (sys_rst), + .iodelay_ctrl_rdy (iodelay_ctrl_rdy), + .PSDONE (pd_PSDONE), diff --git a/designs/leon3-xilinx-ml605/mig_ucf_patch.txt b/designs/leon3-xilinx-ml605/mig_ucf_patch.txt new file mode 100644 index 00000000..a5a8bc32 --- /dev/null +++ b/designs/leon3-xilinx-ml605/mig_ucf_patch.txt @@ -0,0 +1,204 @@ +--- ./mig/user_design/par/mig.ucf 2012-12-18 14:40:26.000000000 +0100 ++++ ./mig_patch/p/a/t/c/h/mig_design/mig.ucf 2012-12-18 12:01:45.861514738 +0100 +@@ -20,16 +20,16 @@ + # Timing constraints # + ############################################################################ + +-NET "sys_clk_p" TNM_NET = TNM_sys_clk; +-TIMESPEC "TS_sys_clk" = PERIOD "TNM_sys_clk" 2.5 ns; ++#NET "sys_clk_p" TNM_NET = TNM_sys_clk; ++#TIMESPEC "TS_sys_clk" = PERIOD "TNM_sys_clk" 2.5 ns; + +-NET "clk_ref_p" TNM_NET = TNM_clk_ref; +-TIMESPEC "TS_clk_ref" = PERIOD "TNM_clk_ref" 5 ns ; ++#NET "clk_ref_p" TNM_NET = TNM_clk_ref; ++#TIMESPEC "TS_clk_ref" = PERIOD "TNM_clk_ref" 5 ns ; + + # Constrain BUFR clocks used to synchronize data from IOB to fabric logic + # Note that ISE cannot infer this from other PERIOD constraints because + # of the use of OSERDES blocks in the BUFR clock generation path +-NET "u_memc_ui_top/u_mem_intfc/phy_top0/clk_rsync[?]" TNM_NET = TNM_clk_rsync; ++NET "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/clk_rsync[?]" TNM_NET = TNM_clk_rsync; + TIMESPEC "TS_clk_rsync" = PERIOD "TNM_clk_rsync" 5 ns; + + # Paths between DQ/DQS ISERDES.Q outputs and CLB flops clocked by falling +@@ -44,13 +44,13 @@ + TIMEGRP "TG_clk_rsync_rise" = RISING "TNM_clk_rsync"; + TIMEGRP "TG_clk_rsync_fall" = FALLING "TNM_clk_rsync"; + TIMESPEC "TS_clk_rsync_rise_to_fall" = +- FROM "TG_clk_rsync_rise" TO "TG_clk_rsync_fall" "TS_sys_clk" * 2; ++ FROM "TG_clk_rsync_rise" TO "TG_clk_rsync_fall" "TS_clk_ref" * 1; + + # Signal to select between controller and physical layer signals. Four divided by two clock + # cycles (4 memory clock cycles) are provided by design for the signal to settle down. + # Used only by the phy modules. +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_init/u_ff_phy_init_data_sel" TNM = "TNM_PHY_INIT_SEL"; +-TIMESPEC "TS_MC_PHY_INIT_SEL" = FROM "TNM_PHY_INIT_SEL" TO FFS = "TS_sys_clk"*4; ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_init/u_ff_phy_init_data_sel" TNM = "TNM_PHY_INIT_SEL"; ++TIMESPEC "TS_MC_PHY_INIT_SEL" = FROM "TNM_PHY_INIT_SEL" TO FFS = "TS_clk_ref"*2; + ############################################################################ + ######################################################################## + # Controller 0 +@@ -77,14 +77,14 @@ + NET "ddr3_odt[*]" IOSTANDARD = SSTL15; + NET "ddr3_cs_n[*]" IOSTANDARD = SSTL15; + NET "ddr3_dm[*]" IOSTANDARD = SSTL15; +-NET "sys_clk_p" IOSTANDARD = LVDS_25; +-NET "sys_clk_n" IOSTANDARD = LVDS_25; ++#NET "sys_clk_p" IOSTANDARD = LVDS_25; ++#NET "sys_clk_n" IOSTANDARD = LVDS_25; + NET "clk_ref_p" IOSTANDARD = LVDS_25; + NET "clk_ref_n" IOSTANDARD = LVDS_25; +-NET "sda" IOSTANDARD = LVCMOS25; +-NET "scl" IOSTANDARD = LVCMOS25; +-NET "sys_rst" IOSTANDARD = LVCMOS25; +-NET "phy_init_done" IOSTANDARD = LVCMOS25; ++#NET "sda" IOSTANDARD = LVCMOS25; ++#NET "scl" IOSTANDARD = LVCMOS25; ++#NET "sys_rst" IOSTANDARD = LVCMOS25; ++#NET "phy_init_done" IOSTANDARD = LVCMOS25; + NET "ddr3_dqs_p[*]" IOSTANDARD = DIFF_SSTL15_T_DCI; + NET "ddr3_dqs_n[*]" IOSTANDARD = DIFF_SSTL15_T_DCI; + NET "ddr3_ck_p[*]" IOSTANDARD = DIFF_SSTL15; +@@ -93,14 +93,15 @@ + ################################################################################ + ##SAVE attributes to reserve the pins + ################################################################################ +-NET "sda" S; +-NET "scl" S; ++#NET "sda" S; ++#NET "scl" S; + + ############################################################################### + #DCI_CASCADING + #Syntax : CONFIG DCI_CASCADE = " .."; + ############################################################################### +-CONFIG DCI_CASCADE = "25 26"; ++CONFIG DCI_CASCADE = "26 25"; ++CONFIG DCI_CASCADE = "36 35"; + + + ################################################################################## +@@ -201,14 +202,14 @@ + NET "ddr3_dm[5]" LOC = "A26" ; #Bank 25 + NET "ddr3_dm[6]" LOC = "A29" ; #Bank 25 + NET "ddr3_dm[7]" LOC = "A31" ; #Bank 25 +-NET "sys_clk_p" LOC = "A10" ; #Bank 34 +-NET "sys_clk_n" LOC = "B10" ; #Bank 34 ++#NET "sys_clk_p" LOC = "A10" ; #Bank 34 ++#NET "sys_clk_n" LOC = "B10" ; #Bank 34 + NET "clk_ref_p" LOC = "J9" ; #Bank 34 + NET "clk_ref_n" LOC = "H9" ; #Bank 34 +-NET "sda" LOC = "AA33" ; #Bank 13 +-NET "scl" LOC = "AA34" ; #Bank 13 +-NET "sys_rst" LOC = "H10" ; #Bank 35 +-NET "phy_init_done" LOC = "AE23" ; #Bank 24 ++#NET "sda" LOC = "AA33" ; #Bank 13 ++#NET "scl" LOC = "AA34" ; #Bank 13 ++#NET "sys_rst" LOC = "H10" ; #Bank 35 ++#NET "phy_init_done" LOC = "AE23" ; #Bank 24 + NET "ddr3_dqs_p[0]" LOC = "D12" ; #Bank 35 + NET "ddr3_dqs_n[0]" LOC = "E12" ; #Bank 35 + NET "ddr3_dqs_p[1]" LOC = "H12" ; #Bank 35 +@@ -251,21 +252,21 @@ + ###################################################################################### + + ##Site: C29 -- Bank 25 +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col1.u_oserdes_rsync" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col1.u_oserdes_rsync" + LOC = "OLOGIC_X1Y139"; +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col1.u_odelay_rsync" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col1.u_odelay_rsync" + LOC = "IODELAY_X1Y139"; + +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col1.u_bufr_rsync" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col1.u_bufr_rsync" + LOC = "BUFR_X1Y6"; + + ##Site: M12 -- Bank 35 +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col0.u_oserdes_rsync" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col0.u_oserdes_rsync" + LOC = "OLOGIC_X2Y139"; +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col0.u_odelay_rsync" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col0.u_odelay_rsync" + LOC = "IODELAY_X2Y139"; + +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col0.u_bufr_rsync" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_loop_col0.u_bufr_rsync" + LOC = "BUFR_X2Y6"; + + ################################################################################################## +@@ -282,51 +283,51 @@ + ###################################################################################### + + ##Site: C13 -- Bank 35 +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[0].u_oserdes_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[0].u_oserdes_cpt" + LOC = "OLOGIC_X2Y137"; +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[0].u_odelay_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[0].u_odelay_cpt" + LOC = "IODELAY_X2Y137"; + + ##Site: L13 -- Bank 35 +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[1].u_oserdes_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[1].u_oserdes_cpt" + LOC = "OLOGIC_X2Y141"; +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[1].u_odelay_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[1].u_odelay_cpt" + LOC = "IODELAY_X2Y141"; + + ##Site: K14 -- Bank 35 +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[2].u_oserdes_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[2].u_oserdes_cpt" + LOC = "OLOGIC_X2Y143"; +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[2].u_odelay_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[2].u_odelay_cpt" + LOC = "IODELAY_X2Y143"; + + ##Site: F21 -- Bank 26 +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[3].u_oserdes_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[3].u_oserdes_cpt" + LOC = "OLOGIC_X1Y179"; +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[3].u_odelay_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[3].u_odelay_cpt" + LOC = "IODELAY_X1Y179"; + + ##Site: B20 -- Bank 26 +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[4].u_oserdes_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[4].u_oserdes_cpt" + LOC = "OLOGIC_X1Y181"; +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[4].u_odelay_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[4].u_odelay_cpt" + LOC = "IODELAY_X1Y181"; + + ##Site: F25 -- Bank 25 +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[5].u_oserdes_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[5].u_oserdes_cpt" + LOC = "OLOGIC_X1Y137"; +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[5].u_odelay_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[5].u_odelay_cpt" + LOC = "IODELAY_X1Y137"; + + ##Site: C28 -- Bank 25 +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[6].u_oserdes_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[6].u_oserdes_cpt" + LOC = "OLOGIC_X1Y141"; +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[6].u_odelay_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[6].u_odelay_cpt" + LOC = "IODELAY_X1Y141"; + + ##Site: D24 -- Bank 25 +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[7].u_oserdes_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[7].u_oserdes_cpt" + LOC = "OLOGIC_X1Y143"; +-INST "u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[7].u_odelay_cpt" ++INST "ddr3ctrl/u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/*gen_ck_cpt[7].u_odelay_cpt" + LOC = "IODELAY_X1Y143"; + + +@@ -334,4 +335,4 @@ + ## MMCM_ADV CONSTRAINTS ## + ###################################################################################### + +-INST "u_infrastructure/u_mmcm_adv" LOC = "MMCM_ADV_X0Y8"; #Banks 16, 26, 36 ++INST "ddr3ctrl/u_infrastructure/u_mmcm_adv" LOC = "MMCM_ADV_X0Y8"; #Banks 16, 26, 36 diff --git a/designs/leon3-xilinx-ml605/preload_ddr3_dimm.do b/designs/leon3-xilinx-ml605/preload_ddr3_dimm.do new file mode 100644 index 00000000..66e20fde --- /dev/null +++ b/designs/leon3-xilinx-ml605/preload_ddr3_dimm.do @@ -0,0 +1,40 @@ +# Procedure to load memory from file +proc reload_mem {} { + # Load memory with system test and display memory + if {[examine /testbench/led(3)] == 1} { + #if {[examine sim:/config@work/CFG_MIG_SERIES7] == 1} { + echo "Loading DDR3 memory with System Test" + #if {[examine /testbench/USE_MIG_INTERFACE_MODEL] == FALSE} { + mem load -startaddress 0 -format hex -infile sdram_dimm_merge3.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem(0)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm_merge4.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem(1)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm_merge1.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem(2)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm_merge2.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem(3)/u1/memory + + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem(0)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem(1)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem(2)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem(3)/u1/address + + change sim:/testbench/gen_mem(0)/u1/memory_used 11111111111111111111111111111111 + change sim:/testbench/gen_mem(1)/u1/memory_used 11111111111111111111111111111111 + change sim:/testbench/gen_mem(2)/u1/memory_used 11111111111111111111111111111111 + change sim:/testbench/gen_mem(3)/u1/memory_used 11111111111111111111111111111111 + #} + + #if {[examine /testbench/USE_MIG_INTERFACE_MODEL] == TRUE} { + # echo "MIG Model found" + # mem load -startaddress 0 -format hex -infile sdram_dimm_merge.hex -filltype value -filldata 1'b0 sim:/testbench/cpu/mig_gen/ddrc/gen_mig_model/MCB_model_inst/Mem + #} + + #do wave.do + #} + } +} + +set init_path /testbench/led(3); + +when -label when1 "$init_path'event and $init_path ='1'" { + reload_mem +} + +#run 2 ms diff --git a/designs/leon3-xilinx-ml605/prom.S b/designs/leon3-xilinx-ml605/prom.S deleted file mode 100644 index f48df0d9..00000000 --- a/designs/leon3-xilinx-ml605/prom.S +++ /dev/null @@ -1,244 +0,0 @@ - -/* Template boot-code for LEON3 test benches */ - -#include "prom.h" - -#ifndef STACKSIZE -#define STACKSIZE 0x00020000 -#endif - - - .seg "text" - .proc 0 - .align 4 - .global start -start: - - flush - set 0x10e0, %g1 ! init IU - mov %g1, %psr - mov %g0, %wim - mov %g0, %tbr - mov %g0, %y - mov %g0, %asr16 - nop - set 0x81000f, %g1 - sta %g1, [%g0] 2 - mov %g0, %g2 - nop - nop - nop - nop - nop - or %g2, %g2, %g0 - nop - nop - nop - nop - nop -#ifdef DSUADDR - set DSUADDR, %g2 - st %g0, [%g2] - st %g0, [%g2+0x08] - st %g0, [%g2+0x20] - st %g0, [%g2+0x24] - st %g0, [%g2+0x40] - st %g0, [%g2+0x44] - st %g0, [%g2+0x50] - st %g0, [%g2+0x54] - st %g0, [%g2+0x58] - st %g0, [%g2+0x5C] - st %g0, [%g2+0x54] -#endif - -2: - mov %asr17, %g3 - and %g3, 0x1f, %g3 - mov %g0, %g4 - mov %g0, %g5 - mov %g0, %g6 - mov %g0, %g7 -1: - mov %g0, %l0 - mov %g0, %l1 - mov %g0, %l2 - mov %g0, %l3 - mov %g0, %l4 - mov %g0, %l5 - mov %g0, %l6 - mov %g0, %l7 - mov %g0, %o0 - mov %g0, %o1 - mov %g0, %o2 - mov %g0, %o3 - mov %g0, %o4 - mov %g0, %o5 - mov %g0, %o6 - mov %g0, %o7 - subcc %g3, 1, %g3 - bge 1b - save - - mov 2, %g1 - mov %g1, %wim - set 0x10e0, %g1 ! enable traps - mov %g1, %psr - nop; nop; nop; - - mov %psr, %g1 - srl %g1, 12, %g1 - andcc %g1, 1, %g0 - be 1f - nop - - set _fsrxx, %g3 - ld [%g3], %fsr - ldd [%g3], %f0 - ldd [%g3], %f2 - ldd [%g3], %f4 - ldd [%g3], %f6 - ldd [%g3], %f8 - ldd [%g3], %f10 - ldd [%g3], %f12 - ldd [%g3], %f14 - ldd [%g3], %f16 - ldd [%g3], %f18 - ldd [%g3], %f20 - ldd [%g3], %f22 - ldd [%g3], %f24 - ldd [%g3], %f26 - ldd [%g3], %f28 - ldd [%g3], %f30 - nop - nop - nop - nop - nop - faddd %f0, %f2, %f4 - nop - nop - nop - nop - ba 1f - nop - - -.align 8 -_fsrxx: - .word 0 - .word 0 - -1: - mov %asr17, %g3 - srl %g3, 28, %g3 - andcc %g3, 0x0f, %g3 - bne 1f - - set L2MCTRLIO, %g1 - set MCFG1, %g2 - st %g2, [%g1] - set MCFG2, %g2 - st %g2, [%g1+4] - set MCFG3, %g2 - st %g2, [%g1+8] -! set IRQCTRL, %g1 -! set 0x0ffff, %g2 -! st %g2, [%g1+0x10] - - ! %g3 = cpu index -1: set STACKSIZE, %g2 - mov %g0, %g1 -2: subcc %g3, 0, %g0 - be 3f - nop - add %g1, %g2, %g1 - ba 2b - sub %g3, 1, %g3 - - -3: set RAMSTART+ RAMSIZE-32, %fp - sub %fp, %g1, %fp - sub %fp, 96, %sp - - set RAMSTART, %g1 -! st %g1, [%g1] - -! SVGA - set 0x80000600, %g3 - st %g1, [%g3 + 0x14] - set (1023 << 16) | 767, %g2 - st %g2, [%g3 + 0x04] - set 0x000A000A, %g2 - st %g2, [%g3 + 0x08] - st %g2, [%g3 + 0x0C] - set (1043 << 16) | 787, %g2 - st %g2, [%g3 + 0x04] - set 0x21, %g2 - st %g2, [%g3 + 0x00] - - -! DDR3 test - set 64, %g2 -4: - subcc %g2, 1, %g2 - bge,a 4b - stb %g2, [%g1+%g2] - - set 64, %g2 -5: - subcc %g2, 1, %g2 - bge,a 5b - ldub [%g1+%g2], %g3 - - add %g1, 64, %g1 - set 64, %g2 -4: - subcc %g2, 2, %g2 - bge,a 4b - sth %g2, [%g1+%g2] - - set 64, %g2 -5: - subcc %g2, 2, %g2 - bge,a 5b - lduh [%g1+%g2], %g3 - - add %g1, 64, %g1 - set 64, %g2 -4: - subcc %g2, 4, %g2 - bge,a 4b - st %g2, [%g1+%g2] - - set 64, %g2 -5: - subcc %g2, 4, %g2 - bge,a 5b - ld [%g1+%g2], %g3 - - add %g1, 64, %g1 - set 64, %g2 -4: - subcc %g2, 8, %g2 - bge,a 4b - std %g2, [%g1+%g2] - - set 64, %g2 -5: - subcc %g2, 8, %g2 - bge,a 5b - ldd [%g1+%g2], %g4 - - ba 3b - nop - - ld [%g1], %g2 - ldd [%g1], %g2 - ldd [%g1+0x10], %g2 - add %g1, 0x20, %g1 - ba 4b - nop - jmp %g1 - nop - -.align 32 diff --git a/designs/leon3-xilinx-ml605/prom.srec b/designs/leon3-xilinx-ml605/prom.srec index 5b94cf74..3250e7e1 100755 --- a/designs/leon3-xilinx-ml605/prom.srec +++ b/designs/leon3-xilinx-ml605/prom.srec @@ -23,27 +23,15 @@ S1130140FD18C000010000000100000001000000D3 S1130150010000000100000089A008420100000025 S113016001000000010000000100000010800005F3 S11301700100000001000000000000000000000079 -S1130180874440008730E01C8688E00F1280000A14 +S1130180874440008730E01C8688E00F1280001608 S11301900320000005040E008410A133C420400095 S11301A00539AE038410A250C4206004050003FC8A -S11301B0C4206008050000808210000080A0E000D8 -S11301C002800005010000008200400210BFFFFC15 -S11301D08620E0013D1003FFBC17A3E0BC2780018B -S11301E09C27A06003100000072000018610E20095 -S11301F0C220E0140500FFC08410A2FFC420E00464 -S1130200050002808410A00AC420E008C420E00C89 -S1130210050104C08410A313C420E0048410202129 -S1130220C420E0008410204084A0A00136BFFFFF5A -S1130230C42840028410204084A0A00136BFFFFFE0 -S1130240C6084002820060408410204084A0A002BE -S113025036BFFFFFC43040028410204084A0A002B7 -S113026036BFFFFFC6104002820060408410204069 -S113027084A0A00436BFFFFFC420400284102040A5 -S113028084A0A00436BFFFFFC60040028200604085 -S11302908410204084A0A00836BFFFFFC438400269 -S11302A08410204084A0A00836BFFFFFC818400275 -S11302B010BFFFC901000000C4004000C418400082 -S11302C0C41860108200602010BFFFF3010000001A -S11302D081C0400001000000010000000100000096 -S11302E0000000000000000000000000000000000A +S11301B0C420600882103860C40040008530A00C60 +S11301C0030000048210600980A04002128000062F +S11301D0033FFC0082106100052488208410A3CD15 +S11301E0C4204000050000808210000080A0E000D0 +S11301F002800005010000008200400210BFFFFCE5 +S11302008620E0013D1003FFBC17A3E0BC2780015A +S11302109C27A0600310000081C040000100000082 +S113022000000000000000000000000000000000CA S9030000FC diff --git a/designs/leon3-xilinx-ml605/sdram.srec b/designs/leon3-xilinx-ml605/sdram.srec index 468fc5d7..9eece58d 100755 --- a/designs/leon3-xilinx-ml605/sdram.srec +++ b/designs/leon3-xilinx-ml605/sdram.srec @@ -1,11 +1,11 @@ S00D0000736472616D2E7372656300 -S31540000000881000000910006C81C1207401000000B6 +S31540000000881000000910006C81C122980100000090 S31540000010A1480000A75000001080203EAC102001EF S3154000002091D0200001000000010000000100000006 S3154000003091D02000010000000100000001000000F6 -S31540000040A14800002910006B81C523AC01000000C7 -S31540000050A14800002910006981C522D00100000096 -S31540000060A14800002910006981C5233C0100000019 +S31540000040A14800002910006C81C521EC0100000088 +S31540000050A14800002910006981C522A401000000C2 +S31540000060A14800002910006981C523100100000045 S3154000007091D02000010000000100000001000000B6 S3154000008091D02000010000000100000001000000A6 S31540000090A1480000A75000001080201EAC10200987 @@ -16,21 +16,21 @@ S315400000D091D0200001000000010000000100000056 S315400000E091D0200001000000010000000100000046 S315400000F091D0200001000000010000000100000036 S3154000010091D0200001000000010000000100000025 -S31540000110AE102001A148000010806A35A7500000AB -S31540000120AE102002A148000010806A31A75000009E -S31540000130AE102003A148000010806A2DA750000091 -S31540000140AE102004A148000010806A29A750000084 -S31540000150AE102005A148000010806A25A750000077 -S31540000160AE102006A148000010806A21A75000006A -S31540000170AE102007A148000010806A1DA75000005D -S31540000180AE102008A148000010806A19A750000050 -S31540000190AE102009A148000010806A15A750000043 -S315400001A0AE10200AA148000010806A11A750000036 -S315400001B0AE10200BA148000010806A0DA750000029 -S315400001C0AE10200CA148000010806A09A75000001C -S315400001D0AE10200DA148000010806A05A75000000F -S315400001E0AE10200EA148000010806A01A750000002 -S315400001F0AE10200FA1480000108069FDA7500000F6 +S31540000110AE102001A148000010806A2AA7500000B6 +S31540000120AE102002A148000010806A26A7500000A9 +S31540000130AE102003A148000010806A22A75000009C +S31540000140AE102004A148000010806A1EA75000008F +S31540000150AE102005A148000010806A1AA750000082 +S31540000160AE102006A148000010806A16A750000075 +S31540000170AE102007A148000010806A12A750000068 +S31540000180AE102008A148000010806A0EA75000005B +S31540000190AE102009A148000010806A0AA75000004E +S315400001A0AE10200AA148000010806A06A750000041 +S315400001B0AE10200BA148000010806A02A750000034 +S315400001C0AE10200CA1480000108069FEA750000028 +S315400001D0AE10200DA1480000108069FAA75000001B +S315400001E0AE10200EA1480000108069F6A75000000E +S315400001F0AE10200FA1480000108069F2A750000001 S3154000020091D0200001000000010000000100000024 S3154000021091D0200001000000010000000100000014 S3154000022091D0200001000000010000000100000004 @@ -129,10 +129,10 @@ S315400007E091D020000100000001000000010000003F S315400007F091D020000100000001000000010000002F S3154000080091D020000100000001000000010000001E S3154000081091D020000100000001000000010000000E -S31540000820A14800002910006A81C52110010000007E -S31540000830A1480000108067DBA750000001000000BF +S31540000820A14800002910006A81C520E401000000AB +S31540000830A1480000108067D0A750000001000000CA S3154000084091D02000010000000100000001000000DE -S31540000850A14800002910006A81C520F4010000006B +S31540000850A14800002910006A81C520C80100000097 S3154000086091D02000010000000100000001000000BE S3154000087091D02000010000000100000001000000AE S3154000088091D020000100000001000000010000009E @@ -255,250 +255,250 @@ S31540000FC091D0200001000000010000000100000057 S31540000FD091D0200001000000010000000100000047 S31540000FE091D0200001000000010000000100000037 S31540000FF091D0200001000000010000000100000027 -S315400010009DE3BFC0051001438410A0600710014452 -S315400010108610E188821000008620C00286A0E00883 -S3154000102036BFFFFFC038800311100144901221885B -S31540001030C02200004000666801000000400066686B -S31540001040010000004000681A010000001110006D08 -S31540001050901221B040006168010000004000694ED6 -S3154000106001000000400000430100000040006745C9 -S315400010700100000081C7E00881E800009DE3BF98B9 -S3154000108023100143C20C606080A0600012800015EE -S315400010902110008010800005C204200C9FC3400030 -S315400010A0C224200CC204200CDA00400080A3600059 -S315400010B012BFFFFB82006004030000008210600044 -S315400010C080A0600002800006821020011110006D91 -S315400010D06FFFFBCC9012214082102001C22C606031 -S315400010E081C7E00881E800009DE3BF9881C7E0081A -S315400010F081E800009DE3BF98030000008210600075 -S315400011001110006D1310014380A060009012214021 -S3154000111002800004921260646FFFFBBA0100000077 -S315400011201B100144C203618880A060000280000950 -S31540001130B0136188030000008210600080A0600048 -S3154000114002800004010000006FFFFBAE81E8000052 -S315400011500100000081C7E00881E800009DE3BF98D8 -S3154000116081C7E00881E8000081C3E0080100000073 -S315400011709DE3BF9840000007010000004000014683 -S31540001180010000004000000E81E800000100000060 -S315400011909DE3BF98400000290100000080A2200086 -S315400011A01280000503100080D80060109A102001BC -S315400011B0DA23201081C7E00891E820000310008060 -S315400011C0D80060109A102001DA23201481C3E00869 -S315400011D09010200003100080DA006010D0234000F9 -S315400011E081C3E0089010200003100080DA006010F0 -S315400011F0D023600881C3E0089010200003100080CF -S31540001200DA006010D023600481C3E008901020000B -S3154000121013100080921260149010200081C3E008E1 -S31540001220D0EA4020901020001310008092126014E3 -S3154000123081C3E008D0224000914440009132201CF6 -S3154000124081C3E008900A200F81C3E008D0820020C5 -S315400012509010200C81C3E008D08200408210000824 -S3154000126080A20009148000039022000990224001C8 -S3154000127081C3E00801000000932A60028210200129 -S31540001280C22200099810200080A3000A1680000A96 -S3154000129096102001832B2002DA02000180A0000D67 -S315400012A0826020009803200180A3000A06BFFFFA4F -S315400012B0960AC00180A2E00002BFFFF49810200009 -S315400012C081C3E008010000009DE3BF98C2062010DC -S315400012D08330601CA0100018A400600180A4A00107 -S315400012E00280006CB0103FFF7FFFFFD4010000007A -S315400012F0AA100008912A20047FFFFFBC9002200715 -S315400013007FFFFFD40100000003020000808A000135 -S315400013100280005C010000009A05600182102001F5 -S315400013208328400D11100080C2242010901220A066 -S31540001330921000157FFFFFD1941000120310008019 -S3154000134082106018A12D6002C0204010DA004010C3 -S31540001350A610000180A36009291001431480002BC8 -S31540001360AC1000017FFFFFAB0100000080A220000F -S3154000137012BFFFFD01000000B010200080A6001241 -S31540001380168000140100000010800005A21000160F -S3154000139080A600121680000F01000000832E200256 -S315400013A0D0044010D20440017FFFFFADB0062001BB -S315400013B080A2200104BFFFF7901020027FFFFF901C -S315400013C00100000080A6001206BFFFF6832E200211 -S315400013D0C205207C82006001C225207C7FFFFF92EF -S315400013E001000000C204C01082006001C224C01087 -S315400013F0DA04C01080A3600904BFFFDB111000802F -S31540001400108000049012205C111000809012205C25 -S31540001410921000157FFFFF9994100012832CA002B2 -S3154000142082004012A0004001DA05207C80A4000D15 -S3154000143002800004231001437FFFFF7190102003B8 -S31540001440C204607C80A060000480000601000000A9 -S31540001450C204607C80A400011680000580A560005F -S315400014607FFFFF679010200380A56000228000095F -S31540001470B010200091D0200010800006B01020004F -S315400014807FFFFF5F9010200110BFFFA59A05600106 -S3154000149081C7E00881E800009DE3BF98C20620109E -S315400014A0A01000188330601C80A0600002800009F4 -S315400014B0B0103FFF7FFFFF610100000080A22000C7 -S315400014C0128000040300003F821063FFC2242010F4 -S315400014D081C7E00881E800009DE3BF98C20620105E -S315400014E08330601CA400600180A4A00102800068D3 -S315400014F0B0103FFF7FFFFF5101000000AA10000817 -S31540001500912A20047FFFFF39900220077FFFFF5179 -S315400015100100000003020000808A0001028000589A -S315400015200100000011100080901220A092100015BA -S315400015307FFFFF5294100012031000808210601843 -S31540001540A12D6002C0204010DA004010A610000114 -S3154000155080A36009291001431480002BAC100001C0 -S315400015607FFFFF2C0100000080A2200012BFFFFD7C -S3154000157001000000B010200080A600121680001462 -S315400015800100000010800005A210001680A600127F -S315400015901680000F01000000832E2002D004401068 -S315400015A0D20440017FFFFF2EB006200180A2200119 -S315400015B004BFFFF7901020027FFFFF1101000000DB -S315400015C080A6001206BFFFF6832E2002C205207CAD -S315400015D082006001C225207C7FFFFF1301000000CE -S315400015E0C204C01082006001C224C010DA04C010D8 -S315400015F080A3600904BFFFDB111000801080000447 -S315400016009012205C111000809012205C9210001500 -S315400016107FFFFF1A94100012832CA0028200401212 -S31540001620A0004001DA05207C80A4000D0280000461 -S31540001630231001437FFFFEF290102003C204607C1A -S3154000164080A060000480000601000000C204607CA7 -S3154000165080A400011680000580A560007FFFFEE89B -S315400016609010200380A5600022800009B010200061 -S3154000167091D0200010800006B01020007FFFFEE0D1 -S315400016809010200110BFFFA91110008081C7E0080B -S3154000169081E800009DE3BF983120000092162200A9 -S315400016A09410200040003E589010200140003B62BC -S315400016B0901622009016230040003EBD921020084E -S315400016C0B016210040003A4F81E8000001000000BA -S315400016D09DE3BF9821200000921422009410200020 -S315400016E040003E499010200140003B539014220098 -S315400016F09210001840003EAE90142300B014210012 -S3154000170040003A4081E8000001000000000000006F -S315400017100000000000000000000000000000000083 -S315400017200000000000000000000000000000000073 -S315400017300000000000000000000000000000000063 -S315400017400000000000000000000000000000000053 -S315400017500000000000000000000000000000000043 -S315400017600000000000000000000000000000000033 -S315400017700000000000000000000000000000000023 -S315400017800000000000000000000000000000000013 -S315400017900000000000000000000000000000000003 -S315400017A000000000000000000000000000000000F3 -S315400017B000000000000000000000000000000000E3 -S315400017C000000000000000000000000000000000D3 -S315400017D000000000000000000000000000000000C3 -S315400017E000000000000000000000000000000000B3 -S315400017F000000000000000000000000000000000A3 -S315400018000000000000000000000000000000000092 -S315400018100000000000000000000000000000000082 -S315400018200000000000000000000000000000000072 -S315400018300000000000000000000000000000000062 -S315400018400000000000000000000000000000000052 -S315400018500000000000000000000000000000000042 -S315400018600000000000000000000000000000000032 -S315400018700000000000000000000000000000000022 -S315400018800000000000000000000000000000000012 -S315400018900000000000000000000000000000000002 -S315400018A000000000000000000000000000000000F2 -S315400018B000000000000000000000000000000000E2 -S315400018C000000000000000000000000000000000D2 -S315400018D000000000000000000000000000000000C2 -S315400018E000000000000000000000000000000000B2 -S315400018F000000000000000000000000000000000A2 -S315400019000000000000000000000000000000000091 -S315400019100000000000000000000000000000000081 -S315400019200000000000000000000000000000000071 -S315400019300000000000000000000000000000000061 -S315400019400000000000000000000000000000000051 -S315400019500000000000000000000000000000000041 -S315400019600000000000000000000000000000000031 -S315400019700000000000000000000000000000000021 -S315400019800000000000000000000000000000000011 -S315400019900000000000000000000000000000000001 -S315400019A000000000000000000000000000000000F1 -S315400019B000000000000000000000000000000000E1 -S315400019C000000000000000000000000000000000D1 -S315400019D000000000000000000000000000000000C1 -S315400019E000000000000000000000000000000000B1 -S315400019F000000000000000000000000000000000A1 -S31540001A000000000000000000000000000000000090 -S31540001A100000000000000000000000000000000080 -S31540001A200000000000000000000000000000000070 -S31540001A300000000000000000000000000000000060 -S31540001A400000000000000000000000000000000050 -S31540001A500000000000000000000000000000000040 -S31540001A600000000000000000000000000000000030 -S31540001A700000000000000000000000000000000020 -S31540001A800000000000000000000000000000000010 -S31540001A900000000000000000000000000000000000 -S31540001AA000000000000000000000000000000000F0 -S31540001AB000000000000000000000000000000000E0 -S31540001AC000000000000000000000000000000000D0 -S31540001AD000000000000000000000000000000000C0 -S31540001AE000000000000000000000000000000000B0 -S31540001AF000000000000000000000000000000000A0 -S31540001B00000000000000000000000000000000008F -S31540001B10000000000000000000000000000000007F -S31540001B20000000000000000000000000000000006F -S31540001B30000000000000000000000000000000005F -S31540001B40000000000000000000000000000000004F -S31540001B50000000000000000000000000000000003F -S31540001B60000000000000000000000000000000002F -S31540001B70000000000000000000000000000000001F -S31540001B80000000000000000000000000000000000F -S31540001B9000000000000000000000000000000000FF -S31540001BA000000000000000000000000000000000EF -S31540001BB000000000000000000000000000000000DF -S31540001BC000000000000000000000000000000000CF -S31540001BD000000000000000000000000000000000BF -S31540001BE000000000000000000000000000000000AF -S31540001BF0000000000000000000000000000000009F -S31540001C00000000000000000000000000000000008E -S31540001C10000000000000000000000000000000007E -S31540001C20000000000000000000000000000000006E -S31540001C30000000000000000000000000000000005E -S31540001C40000000000000000000000000000000004E -S31540001C50000000000000000000000000000000003E -S31540001C60000000000000000000000000000000002E -S31540001C70000000000000000000000000000000001E -S31540001C80000000000000000000000000000000000E -S31540001C9000000000000000000000000000000000FE -S31540001CA000000000000000000000000000000000EE -S31540001CB000000000000000000000000000000000DE -S31540001CC000000000000000000000000000000000CE -S31540001CD000000000000000000000000000000000BE -S31540001CE000000000000000000000000000000000AE -S31540001CF0000000000000000000000000000000009E -S31540001D00000000000000000000000000000000008D -S31540001D10000000000000000000000000000000007D -S31540001D20000000000000000000000000000000006D -S31540001D30000000000000000000000000000000005D -S31540001D40000000000000000000000000000000004D -S31540001D50000000000000000000000000000000003D -S31540001D60000000000000000000000000000000002D -S31540001D70000000000000000000000000000000001D -S31540001D80000000000000000000000000000000000D -S31540001D9000000000000000000000000000000000FD -S31540001DA000000000000000000000000000000000ED -S31540001DB000000000000000000000000000000000DD -S31540001DC000000000000000000000000000000000CD -S31540001DD000000000000000000000000000000000BD -S31540001DE000000000000000000000000000000000AD -S31540001DF0000000000000000000000000000000009D -S31540001E00000000000000000000000000000000008C -S31540001E10000000000000000000000000000000007C -S31540001E20000000000000000000000000000000006C -S31540001E30000000000000000000000000000000005C -S31540001E40000000000000000000000000000000004C -S31540001E50000000000000000000000000000000003C -S31540001E60000000000000000000000000000000002C -S31540001E70000000000000000000000000000000001C -S31540001E80000000000000000000000000000000000C -S31540001E9000000000000000000000000000000000FC -S31540001EA000000000000000000000000000000000EC -S31540001EB000000000000000000000000000000000DC -S31540001EC000000000000000000000000000000000CC -S31540001ED000000000000000000000000000000000BC -S31540001EE000000000000000000000000000000000AC -S31540001EF0000000000000000000000000000000009C -S31540001F00000000000000000000000000000000008B -S31540001F10000000000000000000000000000000007B -S31540001F20000000000000000000000000000000006B -S31540001F30000000000000000000000000000000005B +S315400010009DE3BFC0051001238410A05007100125A1 +S315400010108610E168821000008620C00286A0E008A3 +S3154000102036BFFFFFC038800311100125901221689A +S31540001030C02200004000665D010000004000665D81 +S3154000104001000000400068A301000000111000707C +S31540001050901220BC400061C30100000040006C11AA +S3154000106001000000400002300100000040006730EF +S315400010700100000081C7E00881E800009DE3BFA0B1 +S3154000108021100123C20C205080A060001280002253 +S3154000109023100123C20460542710007025100070ED +S315400010A0A614E024A414A028A4248013A53CA002DE +S315400010B0A404BFFF80A040123A80000E0300000047 +S315400010C0A21460548200600185286002C224400058 +S315400010D0C204C0029FC0400001000000C20440009C +S315400010E080A040120ABFFFF98200600103000000A1 +S315400010F08210600080A060000280000682102001FD +S315400011001110006E6FFFFBBF90122020821020014D +S31540001110C22C205081C7E00881E800009DE3BFA0B3 +S3154000112081C7E00881E800009DE3BFA003000000FE +S315400011308210600080A06000228000081110012506 +S315400011401110006E13100123901220206FFFFBAD8B +S315400011509212605811100125C202216880A06000D9 +S31540001160028000099012216803000000821060008E +S3154000117080A0600002800004010000009FC0400083 +S315400011800100000081C7E00881E800009DE3BFA0A0 +S3154000119081C7E00881E800008292200002800015A5 +S315400011A001000000C400400080A0A0002280001181 +S315400011B092102001C600600880A240032A800008E1 +S315400011C08200600C8800FFFF8401000280A240027A +S315400011D02880000AC20060048200600CC4004000FF +S315400011E080A0A00032BFFFF5C60060089210200123 +S315400011F081C3E00890100009920240019222400308 +S3154000120081C3E008901000099DE3BFA0C2064000DC +S3154000121080A060001280001582007FFFC206600831 +S3154000122080A0600322800014C206600CD2062014FF +S31540001230D006600C4000615394102034C206600C06 +S3154000124082006034C226600CC2066004B0007FFE95 +S3154000125082007FFFB0104018C2266004B136201FBE +S3154000126081C7E00881E80000C226400081C7E00847 +S3154000127091E82000C4062014C6008000C620400025 +S31540001280C600A004C6206004C400A008C4206008AC +S31540001290C206600C8200600CC226600CC206600466 +S315400012A0B0007FFE82007FFFB0104018C226600467 +S315400012B0B136201F81C7E00881E800009DE3BFA04A +S315400012C0C2064000C406A0149B3060188930600CEA +S315400012D088092FFF8608601F833060058208601FDB +S315400012E0DA2EA011C836A012C228A001C628800056 +S315400012F01700003F9612E3F0C2066004C220A02801 +S3154000130082102000C6066008C620A02CC606600CC7 +S31540001310C620A03086064001C600E01080A0E0004E +S315400013209A1020000280000B881020009B30E004B9 +S315400013308808C00B9B2B6014892920109808E00F61 +S315400013409A20000D80A320030280000A8808C0046A +S31540001350860080018200600480A06010DA20E014DC +S3154000136012BFFFEDC820E00481C7E00881E8000015 +S315400013708931200C9A380003881100189B33600489 +S315400013809A0B6FFF9B2B60089A1360FF10BFFFF10B +S315400013909A0360019DE3BEF8F627A050FA27A058AD +S315400013A080A660000280010AA81020102B0003FCD2 +S315400013B0A0102000AA160015A407BFA4A607BFDCEC +S315400013C0A207BF7010800005AC10200180A4001455 +S315400013D01680003437000040932C200594102020BE +S315400013E092024015400060E790100012C207BFA469 +S315400013F080A0600022BFFFF6A0042001C024E010B8 +S31540001400C024C000C024E004C024E008C024E00C8E +S31540001410C0244000C0246004C0246008C024600C7E +S31540001420C0246010C0246014C0246018C024601C0E +S31540001430C0246020C0246024C0246028C024602CBE +S31540001440C0246030E227BFF0EC2FBFEC90100018AC +S31540001450921000127FFFFF9A94100013C20FBFED47 +S3154000146080A0401C32BFFFDAA0042001C217BFEEA5 +S31540001470C407A05880A0400232BFFFD5A004200177 +S31540001480D207A0507FFFFF619010001380A220007A +S3154000149002BFFFCFA004200181C7E00891E82001E8 +S315400014A02D0003FE3B003FFF3300003F9206A04065 +S315400014B0AC160016BA1763FFB21663F0A0102000F0 +S315400014C0A607BFDCA207BF70B616E020AA07BFC4B6 +S315400014D0AE07BFF410800005D227BF6C80A5001070 +S315400014E0048000AE01000000932C200590100012ED +S315400014F092024016400060A394102020C207BFA469 +S3154000150080A0600022BFFFF6A004200182102001C7 +S31540001510C024E010C22FBFECC024C000C024E004A9 +S31540001520C024E008C024E00CC0244000C02460046D +S31540001530C0246008C024600CC0246010C02460141D +S31540001540C0246018C024601CC0246020C0246024CD +S31540001550C0246028C024602CC0246030E227BFF03D +S3154000156090100018921000127FFFFF559410001340 +S31540001570C20FBFED80A7000102800051C217BFEE27 +S31540001580C207BFEC8208401D80A0401B2280005B42 +S31540001590C207BFF0050000408410A00680A04002AC +S315400015A032BFFFCFA0042001C207BFF0C6006004CF +S315400015B088102003030003FC8210C001108000063F +S315400015C08400607880A0400222BFFFC5A0042001AD +S315400015D082006008DA00400080A3600002BFFFFA84 +S315400015E0D8006004920B601F973360189533600CE7 +S315400015F09B3360059A0B601F940AAFFFC025C0005D +S31540001600D22FBFF4DA2FBFF5130003FF9B3320041C +S31540001610921263FF9A0B6FFF9B2B60089A2A400D2C +S315400016209A036001133FFC00DA27BFFCC025400047 +S315400016309A0B0019C02560049B2B6004980B000987 +S31540001640C02560089933200CC025600C980B400CCF +S31540001650EE27BFD898130003C82FBFD4D62FBFD5C7 +S31540001660D437BFD680A7000B12BFFFD7D827BFF805 +S31540001670DA07A05880A3400A12BFFFD480A04002D8 +S31540001680D207A050C227BF60C427BF64C627BF5C2D +S31540001690C827BF687FFFFEDD90100015C207BF60F8 +S315400016A080A22000C407BF64C607BF5C12BFFF7B91 +S315400016B0C807BF6810BFFFC580A04002DA07A05820 +S315400016C080A3400112BFFFB0C207BFECD207A050B3 +S315400016D07FFFFECE9010001380A2200012BFFF6F46 +S315400016E0C207BFEC8208401D80A0401B12BFFFAB63 +S315400016F005000040C207BFF0C408600180A0A000FA +S3154000170022BFFF77A004200180A6A0000280001718 +S31540001710D000602C82102000C406800180A0A0006A +S315400017200280000880A2000222BFFF6DA0042001B3 +S315400017308200600480A0604032BFFFF9C406800189 +S31540001740C607BF6C8210001AC400400080A0A000EB +S3154000175022800014D02040008200600480A0400314 +S3154000176032BFFFFBC4004000D607A050DA07A0589E +S31540001770921000139410001A7FFFFF079810001C68 +S3154000178080A2200012BFFF45A004200180A50010C2 +S3154000179014BFFF57932C200581C7E00891E820002D +S315400017A0D607A05092100013DA07A0589410001ADA +S315400017B07FFFFEF99810001C80A2200012BFFF3761 +S315400017C0A004200110BFFFF380A5001080A6A00052 +S315400017D00280000B8210001A8606A040C40040001A +S315400017E080A0A00022800008F02040008200600413 +S315400017F080A0400332BFFFFBC400400010BFFEEC98 +S31540001800A810204010BFFEEAA81020409DE3BF501C +S315400018109407BFB08210200398100018C022A00879 +S31540001820C022A00CC022A010C022A014C022A01822 +S31540001830C022A01CC022A020C022A024C022A028D2 +S31540001840C022A02CC022A030C022A034C022A03882 +S31540001850C022A03CA0102001F427BFFCC027BFB087 +S31540001860C027BFB4C027BFF09A100019E027BFF4C5 +S31540001870C227BFF8921020009607BFF07FFFFEC632 +S31540001880113FFC00F007BFF4B024001881C7E00800 +S3154000189081E800009DE3BF9090102001A007BFF4AF +S315400018A09210200C7FFFFFDA9410001080A22001D6 +S315400018B00280001A0310012390102001921020117B +S315400018C07FFFFFD39410001080A220010280000DFC +S315400018D00710012494100010901020017FFFFFCCC8 +S315400018E09210200D80A220011280000403100123D3 +S315400018F0C407BFF8C420602C81C7E00881E8000017 +S31540001900C207BFF884006010C220E0A40310012380 +S3154000191010BFFFF1C4206028C407BFF810BFFFE71F +S31540001920C42060349DE3BFA04000002301000000B6 +S3154000193040000174010000004000000381E80000FF +S315400019400100000003100080C200600C84102001DA +S3154000195090102000C420601481C3E00801000000FC +S3154000196003100080C200600C841000089010200014 +S31540001970C420400081C3E00801000000031000803D +S31540001980C200600C8410000890102000C42060083B +S3154000199081C3E0080100000003100080C200600C13 +S315400019A08410000890102000C420600481C3E00821 +S315400019B0010000009DE3BFA04000001401000000AC +S315400019C080A220001280000503100080C200600C37 +S315400019D084102001C420601081C7E00891E82000EF +S315400019E013100080921260109010200081C3E0080E +S315400019F0D0EA402090102000131000809212601010 +S31540001A0081C3E008D0224000914440009132201C1E +S31540001A1081C3E008900A200F81C3E008D0820020ED +S31540001A209010200C81C3E008D08200409DE3BFA007 +S31540001A30C2062010A01000188330601C80A06000F1 +S31540001A4002800009B0103FFF7FFFFFF00100000059 +S31540001A5080A22000128000040300003F821063FF32 +S31540001A60C224201081C7E00881E800009DE3BFA0A2 +S31540001A70E4062010A534A01CA404A00180A4A00163 +S31540001A800280003CB0103FFF7FFFFFE001000000F6 +S31540001A90AA100008912A20047FFFFFB99002200770 +S31540001AA07FFFFFE00100000003020000808A000182 +S31540001AB00280007401000000A72D6002091000801A +S31540001AC0881120148210200184102001C2210013A5 +S31540001AD08210200080A480011480000987286002BB +S31540001AE080A0A000128000258210200084102001D2 +S31540001AF080A4800104BFFFFB87286002C601000363 +S31540001B0080A00003820060018660200010BFFFF2C3 +S31540001B1084088003C205A074852CA003A12CA001D3 +S31540001B20A004000280A4000102800004010000001D +S31540001B307FFFFF9A90102003C205A07480A060002A +S31540001B400480000603100123C200607480A40001D3 +S31540001B501680000580A560007FFFFF90901020034F +S31540001B6080A5600002800003B010200091D02000C4 +S31540001B7081C7E00881E8000023100080A214609C21 +S31540001B802D100123C0244013C204401380A06009D5 +S31540001B901480002709100080A815A0747FFFFF91CC +S31540001BA00100000080A2200012BFFFFD80A4A0001B +S31540001BB00480001301000000A0102000C40440135C +S31540001BC0832C2002C204400180A08001A004200191 +S31540001BD004800003862040028620800180A0E00128 +S31540001BE00480000580A480107FFFFF6C90102002C7 +S31540001BF080A4801014BFFFF201000000C20500005F +S31540001C0082006001C22500007FFFFF7B01000000CB +S31540001C10C204401382006001C2244013C204401330 +S31540001C2080A0600904BFFFDE09100080881120589B +S31540001C308210200184102001C2210013821020004E +S31540001C4080A48001148000098728600280A0A0003B +S31540001C5012BFFFB1821020008410200180A48001B1 +S31540001C6004BFFFFB87286002C601000380A0000373 +S31540001C70820060018660200010BFFFF28408800366 +S31540001C807FFFFF469010200110BFFF8DA72D6002F9 +S31540001C909DE3BFA0E4062010A0100018A534A01CA8 +S31540001CA0A404A00180A4A0010280003FB0103FFF21 +S31540001CB07FFFFF5601000000AA100008912A200469 +S31540001CC07FFFFF2F900220077FFFFF560100000095 +S31540001CD003020000808A00010280007701000000B4 +S31540001CE0A72D60020910008088112014821020015F +S31540001CF08405600185284002C4242010C2210013B7 +S31540001D00841020018210200080A4800114800009E4 +S31540001D108728600280A0A000128000258210200043 +S31540001D208410200180A4800104BFFFFB8728600245 +S31540001D30C601000380A00003820060018660200087 +S31540001D4010BFFFF284088003C205A074852CA0034F +S31540001D50A12CA001A004000280A40001028000047E +S31540001D60010000007FFFFF0D90102003C205A07404 +S31540001D7080A060000480000603100123C200607446 +S31540001D8080A400011680000580A560007FFFFF0348 +S31540001D909010200380A5600002800003B010200050 +S31540001DA091D0200081C7E00881E800002310008020 +S31540001DB0A214609C2D100123C0244013C20440137A +S31540001DC080A060091480002709100080A815A0741F +S31540001DD07FFFFF040100000080A2200012BFFFFD2C +S31540001DE080A4A0000480001301000000A010200081 +S31540001DF0C4044013832C2002C204400180A0800109 +S31540001E00A004200104800003862040028620800131 +S31540001E1080A0E0010480000580A480107FFFFEDFE3 +S31540001E209010200280A4801014BFFFF20100000031 +S31540001E30C205000082006001C22500007FFFFEEE61 +S31540001E4001000000C204401382006001C224401316 +S31540001E50C204401380A0600904BFFFDE0910008061 +S31540001E60881120588210200184102001C2210013BD +S31540001E708210200080A48001148000098728600217 +S31540001E8080A0A00012BFFFB1821020008410200164 +S31540001E9080A4800104BFFFFB87286002C6010003BF +S31540001EA080A00003820060018660200010BFFFF220 +S31540001EB0840880037FFFFEB99010200110BFFF8A7F +S31540001EC0A72D60029DE3BFA02120000094102000B2 +S31540001ED09214220040003C4F9010200140003B07E6 +S31540001EE0901422009210001840003C939014230056 +S31540001EF0B01421004000384381E800000100000092 +S31540001F009DE3BFA0312000009410200092162200CD +S31540001F1040003C409010200140003AF890162200C4 +S31540001F209016230040003C8492102008B0162100F1 +S31540001F304000383481E80000010000000000000045 S31540001F40000000000000000000000000000000004B S31540001F50000000000000000000000000000000003B S31540001F60000000000000000000000000000000002B @@ -2049,7 +2049,7 @@ S31540007FE0000000000000000000000000000000004B S31540007FF0000000000000000000000000000000003B S315400080009DE3BF9081C7E00881E8000003000010AF S31540008010C48000408088800112BFFFFE010000003E -S31540008020EC6FBFF89DE3BF909DE3BF909DE3BF908B +S31540008020C46FBFF89DE3BF909DE3BF909DE3BF90B3 S315400080309DE3BF909DE3BF909DE3BF9021044444E0 S31540008040A014211123088888A2146222250CCCCCC6 S31540008050A414A33327111111A614E044291555552C @@ -2080,7 +2080,7 @@ S315400081D00100000001000000010000000100000055 S315400081E09DE3BF90FC2780009007A0019410001EDD S315400081F0D1E7816AD1E7816A9402A0019002200109 S31540008200D1E7816AD1E7816AD60780009622C01EEF -S31540008210B0A2E00202800004900020017FFFE3F854 +S31540008210B0A2E00202800004900020017FFFE5DF6B S315400082200100000081C7E00881E80000010000006D S3154000823001000000010000000100000001000000F4 S3154000824001000000010000000100000001000000E4 @@ -4095,3251 +4095,4438 @@ S3154000FFC001000000010000000100000001000000E7 S3154000FFD001000000010000000100000001000000D7 S3154000FFE001000000010000000100000001000000C7 S3154000FFF001000000010000000100000001000000B7 -S315400100009DE3BF987FFFC4741100403080A2200059 -S31540010010128000F382102001C226200CC026200443 +S315400100009DE3BFA07FFFC6571100403080A220006C +S31540010010128000AF82102001C226200CC026200487 S31540010020C0260000C026200882102002C2262008D1 S31540010030C0260000C026000082102003C2262008E8 -S315400100409A102083DA262008A2102063C0260000D9 -S31540010050A2847FFF1CBFFFFE01000000A2102063A7 -S31540010060C2060000A2847FFF1CBFFFFE8210200251 -S31540010070C2262008A4062004C28480208088600409 -S3154001008002BFFFFE01000000C0262008C026000076 -S31540010090A6102001C2848020833860148208603F04 -S315400100A080A0600122800093A604E0018210200313 -S315400100B0C2262008C2848020808860010280000711 -S315400100C080886004C2860020C284802080886001C6 -S315400100D012BFFFFD8088600402BFFFFB808860027B -S315400100E002BFFFF901000000C0262008C0262004F7 -S315400100F080A4E0010480000821100080C284802091 -S315400101008208608080A06001028000AE010000008C -S3154001011021100080DA4C20F0DA260000C2848020CB -S315400101208208600480A060010280009A01000000FC -S31540010130C284802080A4E001048000208210200136 -S31540010140A210200180A440131680000D2B100080C0 -S31540010150A81420F0E00560E8901000114000247CCE -S3154001016092100010C24D0008A2046001C226000090 -S3154001017080A4401306BFFFFA90100011C28480206C -S315400101808208608080A06001028000920100000028 -S31540010190C2848020833860148208603F80A0401367 -S315400101A002800004010000007FFFC4159010200664 -S315400101B0C284802082102001C226200CDA8480204D -S315400101C0808B60011280006801000000821020834C -S315400101D0C226200880A4E0010280005201000000EE -S315400101E0C28480208088640002BFFFFE01000000B7 -S315400101F0C284802080886001028000530100000093 -S3154001020080A4E00124800012A2102000C284802034 -S315400102108330601A80A04013028000040100000070 -S315400102207FFFC3F790102009C28480208088610037 -S315400102300280005501000000C2848020808864004D -S315400102400280004D01000000A210200080A440134E -S315400102501680001203100080A81060F02B10008059 -S31540010260E08600209010001140002439D20560E854 -S31540010270C24D0008A204600180A040100280000423 -S315400102809010200C7FFFC3DE0100000080A44013C4 -S3154001029006BFFFF40100000080A4E0010480000FC6 -S315400102A001000000C28480208088610012800042E3 -S315400102B001000000C28480208330601A80A0600063 -S315400102C01280003A01000000C284802080886400C8 -S315400102D01280003301000000C284802080886001C2 -S315400102E01280001D01000000C02620083080003C1D -S315400102F0C0260000C2848020833860148208603F93 -S3154001030080A0401322BFFFFBA604E00180A4E001C8 -S3154001031034BFFF67A604FFFF10BFFF6682102003AC -S31540010320C28480208088600112BFFFB201000000B4 -S31540010330C28480208088600102BFFFFA010000006C -S3154001034030BFFFAC7FFFC3AE9010200810BFFFAE99 -S3154001035080A4E0017FFFC3AA9010200CC02620088C -S315400103603080001F7FFFC3A69010200710BFFF9962 -S31540010370821020837FFFC3A29010200B10BFFFB4D1 -S31540010380A21020007FFFC39E9010200A30BFFFAB12 -S315400103907FFFC39B9010200130BFFF667FFFC3984C -S315400103A09010200B30BFFFCD7FFFC3959010200EDC -S315400103B030BFFFC67FFFC3929010200D30BFFFBEF6 -S315400103C07FFFC38F9010200410BFFF532110008080 -S315400103D07FFFC38B9010200530BFFF6E81C7E008B9 -S315400103E091E8200017100143DA02E08090022010C4 -S315400103F09B2B60029812E080D023000DC202E08060 -S3154001040082006001C222E08081C3E0080100000051 -S31540010410C0220000C022204082103FFFC222200C91 -S315400104209A10200103100143DA20608081C3E0085D -S31540010430010000009DE3BF7803100144F02060CC29 -S315400104407FFFC365110040347FFFFFF29010001813 -S31540010450A010200123100040921000104000299165 -S31540010460901463E4A004200180A4200F04BFFFFC84 -S3154001047092100010C20620208330601CAE0060013D -S31540010480AC10200080A58017168000EC0300003FC9 -S31540010490B81063FE2B1001430300002AB61062AA6E -S315400104A0BA102001B410001CB2156080832DA00C37 -S315400104B080A5E00114800118A600401880A5A0007F -S315400104C01280010901000000F824E008C204E00896 -S315400104D080A0401C02800004010000007FFFC34849 -S315400104E090102001F824E040C204E04080A0401C66 -S315400104F002800004010000007FFFC34190102002EA -S31540010500C204E00880A0600012BFFFFE01000000A7 -S31540010510C205608080A0601002800005251001435D -S315400105207FFFC3379010200325100143A0102001FF -S31540010530A414A080A2102020832C20029A244010CB -S31540010540D8048001A004200180A3000D028000048C -S31540010550901020047FFFC32A0100000080A4200FD1 -S3154001056004BFFFF7832C2002FA256080F624C000E1 -S31540010570F424E040C204C00080A0401B0280000475 -S31540010580A010001A7FFFC31E90102005C204E04050 -S3154001059080A0401002800004010000007FFFC318C4 -S315400105A090102005F424E008C204E00880A0600011 -S315400105B012BFFFFE01000000C205608080A06010EE -S315400105C002800005251001437FFFC30D90102006D0 -S315400105D025100143A0102001A414A080A210201FC1 -S315400105E09B2C2002C204800D80A04011A004200152 -S315400105F0A2047FFE02800004901020077FFFC30003 -S315400106000100000080A4200704BFFFF79B2C2002B5 -S31540010610A4066028A210201CA0102005C204800058 -S3154001062080A04011A404A004A2047FFE028000041D -S31540010630901020087FFFC2F201000000A0843FFF16 -S315400106401CBFFFF701000000FA27BFE8C207BFE859 -S3154001065082006001C227BFECDA07BFEC9A03600152 -S31540010660DA27BFF0C207BFF082006001C227BFF49C -S315400106709A102006DA27BFD8C024C000C024E04023 -S31540010680FA256080A0102002E024E040E024E00842 -S31540010690834440008088610002800005010000001B -S315400106A0805000018050000180500001C207BFD830 -S315400106B0C227BFDCDA07BFD880A3600602800004E8 -S315400106C0010000007FFFC2CE9010200AE024E0081E -S315400106D001000000C207BFD8C227BFDCDA07BFD876 -S315400106E080A3600602800004010000007FFFC2C4AF -S315400106F09010200AE024E00801000000C027BFDC7A -S31540010700C207BFDC80A06000128000950100000096 -S31540010710C204E00880A0600012BFFFFE0100000095 -S31540010720C205608080A06004028000052100003F70 -S315400107307FFFC2B39010200D2100003FC024E0404E -S31540010740A01423FE9A10200103100143E024E0087F -S31540010750DA206080400003E801000000400003E821 -S3154001076090122F00E024E040C204E04080A06000E7 -S3154001077002BFFFFE01000000C205608080A060024A -S3154001078002800004A01560807FFFC29D9010200E5C -S31540010790C204200480A0601F028000040100000002 -S315400107A07FFFC2979010200F400003D3A81000107E -S315400107B0400003D390023F00A0102002A410202045 -S315400107C0400003CD01000000400003CD90023F00F0 -S315400107D0C2056080A204200180A04011028000046D -S315400107E0901020107FFFC28601000000832C20025A -S315400107F09A248010D8050001A010001180A3000D95 -S3154001080002800004901020117FFFC27D010000008C -S3154001081080A4200F04BFFFEB01000000C024E0408C -S31540010820AC05A00182103FFFC224E00C80A58017D1 -S3154001083006BFFF20832DA00C80A5E0010480004B5C -S3154001084001000000C0262024C206202480A06000AA -S315400108501280003F0100000021040000E026202410 -S31540010860C206202480A0401002800005821020018B -S315400108707FFFC2639010201482102001C2262020DF -S31540010880C0262024C206202480A0401002800004F5 -S31540010890010000007FFFC25A90102015C02620207B -S315400108A0C0262024C206202480A060001280002495 -S315400108B00100000082102002C2262020DA062020F4 -S315400108C0808B60020280001B01000000C0262020B0 -S315400108D0C2062020808860020280002401000000B8 -S315400108E0308000117FFFFECB901000139B2DA01C82 -S315400108F0DA24E024C204E0248330601C80A0401640 -S3154001090002BFFEF2010000007FFFC23D901020129F -S3154001091030BFFEEE7FFFC2359010001610BFFEE9D4 -S3154001092080A5A0007FFFC236901020183080000FAE -S315400109307FFFC2339010201730BFFFE57FFFC230E3 -S315400109409010201610BFFFDD821020027FFFC22CBF -S315400109509010201310BFFFC2210400007FFFC22860 -S315400109609010200B30BFFF6B81C7E00891E8200053 -S3154001097003100143DA0060C8C023600881C3E00860 -S31540010980901020009DE3BF902F100144E205E0CC7A -S31540010990A004610027100143C2042004F024E0C8EA -S315400109A07FFFC2129010201003018000DA04200458 -S315400109B082106020808B40011280010D01000000F1 -S315400109C0DA046100DA27BFF0C204610080A3400166 -S315400109D002800005821020017FFFC209901020028B -S315400109E082102001C2242004DA046100DA27BFF014 -S315400109F0C204610080A34001028001200100000081 -S31540010A00C0242004DA046100DA27BFF0C204610081 -S31540010A1080A340010280000580A720007FFFC1F826 -S31540010A209010200480A72000128000B780A72001E3 -S31540010A30B010200180A6001A16800017A8102001C8 -S31540010A40108000052510004280A6001A168000136A -S31540010A50DA04E0C8A206C0189014A17092100011E1 -S31540010A6080A4601F14BFFFF9B00620014000280D85 -S31540010A7001000000D805E0CCC20320409B2D0011A7 -S31540010A808210400DC223204080A6001A06BFFFF304 -S31540010A90A206C018DA04E0C89606A003C023600483 -S31540010AA0833AE01FC023601098103FFF8330601ED9 -S31540010AB0AA02C001D8236014D823600CA2102000DA -S31540010AC0AD3D600280A720000280008AA810200167 -S31540010AD080A4401C168000ECC204E0C880A7200117 -S31540010AE004800015B010200080A5A00004800013EA -S31540010AF080A0001C9B2C6010832C60188210400D36 -S31540010B00992C60088210400C82104011993D600278 -S31540010B10DA04E0C8C2236020B006200180A7200184 -S31540010B20048000059A03600480A3001814BFFFFAED -S31540010B300100000080A0001CB0603FFF80A6001AA3 -S31540010B4016800016C204E0C82501800080A7200057 -S31540010B50028000058206C01880A720010280008419 -S31540010B608206C011C2242004D804E0C8832D00188F -S31540010B709B3E4018C2232008808B6001128000856D -S31540010B809A10000CB006200180A6001A06BFFFF19C -S31540010B9080A72000C204E0C8C0206008808E6001A2 -S31540010BA012800009B0102000B006200180A6201F47 -S31540010BB014800005833E40188088600122BFFFFCF7 -S31540010BC0B006200180A72000028000068206C018D8 -S31540010BD080A72001028000048216E0208206C0110F -S31540010BE082106020C2242004DA04E0C8832D001854 -S31540010BF0C2236008C203600880A0600012BFFFFEE6 -S31540010C0001000000C2042004808860200280009810 -S31540010C1001000000DA04200403010000808B40013A -S31540010C200280009001000000DA04200403008000E5 -S31540010C30808B40010280008801000000C204200828 -S31540010C40C227BFF0DA04200CDA27BFF4C204E0C899 -S31540010C50992D0018D82060089A100001C203600837 -S31540010C6080A0600012BFFFFE01000000C204200404 -S31540010C70808860200280007501000000DA042004AB -S31540010C8003010000808B40010280006D01000000DD -S31540010C90DA04200403008000808B40010280006555 -S31540010CA001000000DA042008C207BFF080A0400D11 -S31540010CB002800004010000007FFFC1519010200E08 -S31540010CC0DA04200CC207BFF480A0400D0280000563 -S31540010CD0030180007FFFC14A9010200F030180006D -S31540010CE0C224200480A7200012BFFF7AA20460011B -S31540010CF080A4600004BFFF7B80A7200110800062B2 -S31540010D00C204E0C80280003D11100042B01020002C -S31540010D1080A6001C16BFFF60A810200110800005A8 -S31540010D202510004280A6001C16BFFF5CDA04E0C80D -S31540010D30A206C0189014A1709210001180A4601FE1 -S31540010D4014BFFFF9B00620014000275601000000FC -S31540010D50D805E0CCC20320409B2D00118210400DE6 -S31540010D60C223204010BFFFF180A6001CF6242004B8 -S31540010D70D804E0C8832D00189B3E4018C2232008A2 -S31540010D80808B600122BFFF81B00620019A10000CC2 -S31540010D90C203600880A0600012BFFFFE0100000090 -S31540010DA0DA04200403010000808B40010280001E0A -S31540010DB001000000DA04200403008000808B40011A -S31540010DC00280001601000000E4242004C20420042D -S31540010DD08088401222BFFF6DB00620017FFFC10807 -S31540010DE09010200710BFFF69B00620017FFFC104A4 -S31540010DF09010200130BFFEF3901221704000272948 -S31540010E009210001BDA05E0CC832F001BC223604001 -S31540010E1010BFFF22DA04E0C87FFFC0F99010200618 -S31540010E2030BFFFEA7FFFC0F69010200530BFFFE2DA -S31540010E307FFFC0F39010200D30BFFF9B7FFFC0F0B6 -S31540010E409010200C30BFFF937FFFC0ED9010200B18 -S31540010E5030BFFF8B7FFFC0EA9010200A30BFFF787A -S31540010E607FFFC0E79010200930BFFF707FFFC0E4CD -S31540010E709010200830BFFF687FFFC0E1901020032B -S31540010E8030BFFEE0C020600CDA05E0CCC0236040F4 -S31540010E9082103FFFC223600C81C7E00891E8200021 -S31540010EA09DE3BF983B100144E60760CC7FFFC0CF6E -S31540010EB090102011C024E01CC204E01C80A06000F8 -S31540010EC00280004801000000C204E01C8330601B20 -S31540010ED080A0401A0A80003F01000000A4102000B3 -S31540010EE080A4801A1A8000422D100143AA102001C5 -S31540010EF0AE15A080A32CA002E00640117FFFFD4560 -S31540010F0090100013A804A0019B2D4012832D2010A0 -S31540010F108210400DC224E01C9A103FFFDA24E040C3 -S31540010F20D80600119A10201FDA232004A0043FFF9F -S31540010F30DA230000A12C20048204000C9A1020051B -S31540010F40DA206010C0206014EA2060189A1000016F -S31540010F50C203601080A0600012BFFFFE01000000C6 -S31540010F60A004000CC204201080A0600002BFFFFE56 -S31540010F7001000000C0242018C205A08080A06002A4 -S31540010F80028000069A04A011900480127FFFC09C43 -S31540010F90900220039A04A011C205E00480A0400DEE -S31540010FA022800006A4100014900480127FFFC09492 -S31540010FB090022004A4100014C024E01C80A5001A4D -S31540010FC00ABFFFCEA32CA0021080000ADA0760CC2C -S31540010FD07FFFC08B9010200210BFFFC2A4102000DB -S31540010FE07FFFC0879010200130BFFFB8DA0760CC81 -S31540010FF0C023604082103FFFC223600C81C7E008D6 -S3154001100091E820009DE3BF987FFFC08C010000005E -S3154001101080A220000280002680A62000128000299E -S31540011020010000007FFFC08501000000912A2004D5 -S315400110307FFFC06E9002200340001870010000003F -S3154001104080A220001280002B010000004000182DD4 -S3154001105001000000400017E60100000040000228A0 -S315400110600100000080A6A0001280002D031001445B -S315400110707FFFC072B41060D0912A2002C206800858 -S3154001108080A060001280003080A6200012800039C6 -S31540011090010000004000048F0100000040001E05D1 -S315400110A001000000400015C281E800007FFFC04AF0 -S315400110B01100400C80A6200002BFFFDB01000000AA -S315400110C07FFFC0F6901000197FFFC05C0100000051 -S315400110D0912A20047FFFC045900220034000184713 -S315400110E00100000080A2200002BFFFD901000000DC -S315400110F07FFFC0439010200140001802010000000C -S31540011100400017BB01000000400001FD0100000046 -S3154001111080A6A00002BFFFD70310014440001DF086 -S3154001112001000000031001447FFFC044B41060D0A9 -S31540011130912A2002C206800880A0600002BFFFD427 -S3154001114080A620007FFFC03D010000007FFFC03B1D -S31540011150A0100008912A2002C20680089FC04000C4 -S315400111609010001080A6200002BFFFCB01000000B6 -S315400111707FFFC0DA901000194000045601000000BC -S3154001118040001DCC010000004000158981E80000A7 -S315400111900100000003100143DA0060CC9A036001AC -S315400111A0DA2060CC81C3E008010000009DE3BF98CE -S315400111B07FFFC00911004044D806200882103FFF36 -S315400111C0C2262004DA060000C206000080A34001C0 -S315400111D00280006FA60B20078210201FC226200422 -S315400111E0C226000080A4E00002800033821000186D -S315400111F0A2100013C0206018A2847FFF12BFFFFE19 -S3154001120082006010A210200080A440131680002B9B -S3154001121080A4E001A810200FA01000187FFFBFF3A3 -S3154001122090100011C0242010E824201482102006BA -S31540011230C2242018DA04201080A3600F0280000423 -S31540011240010000007FFFBFEE90102003E824201824 -S315400112509A10200EC204201080A0400D12BFFFFE3E -S31540011260010000009A837FFF1CBFFFFBA410001002 -S31540011270C204201080A0600F12BFFFFE01000000D3 -S31540011280C204201880886010028000358210201028 -S31540011290C224A018DA042018808B6010128000380E -S315400112A001000000A204600180A4401306BFFFDCD8 -S315400112B0A004201080A4E0011480001080A4E00066 -S315400112C00280000782100018A2100013C020601887 -S315400112D0A2847FFF12BFFFFE8200601021100144ED -S315400112E0C20420CC80A060000280002D1110004471 -S315400112F01080000D921000197FFFBFBC901020088E -S315400113008210200FC22620189A10202FDA26202874 -S31540011310C206202080A0600D12BFFFFE80A4E0001F -S3154001132030BFFFE8400025DF901221947FFFFC3952 -S31540011330D00420CC8210200183284019DA0420CC25 -S31540011340C22360409810200FD82620148210200D09 -S31540011350C2262018A7800000308000117FFFBFA859 -S315400113609010200482102010C224A018DA042018FC -S31540011370808B601022BFFFCDA20460017FFFBFA01A -S315400113809010200510BFFFC9A20460017FFFBF9CDA -S315400113909010200110BFFF928210201F81C7E008E4 -S315400113A081E800000000000000000000000000008D -S315400113B000000000000000000000000000000000E6 -S315400113C001000000010000000100000001000000D2 -S315400113D0010000000100000081C3E0080100000097 -S315400113E001000000010000000100000001000000B2 -S315400113F0010000000100000081C3E0080100000077 -S315400114000100000001000000010000000100000091 -S31540011410010000000100000081C3E0080100000056 -S315400114200100000001000000010000000100000071 -S31540011430010000000100000081C3E0080100000036 -S31540011440D482018090A2000916BFFFFE9612800B3E -S3154001145081C3E0089010000BD48201C090A200091C -S3154001146016BFFFFE9612800B81C3E0089010000B59 -S3154001147090A22004C0A201A090A22004C0A201A073 -S3154001148090A22004C0A201A090A22004C0A201A063 -S31540011490C0A2018090A2200414BFFFF70100000002 -S315400114A081C3E0080100000090A22004C0A201E02F -S315400114B090A22004C0A201E090A22004C0A201E0B3 -S315400114C090A22004C0A201E0C0A201C090A22004C3 -S315400114D014BFFFF70100000081C3E00801000000CE -S315400114E0981000089610000A98A3200814BFFFFF21 -S315400114F0D43B00099810000898A3200814BFFFFFA9 -S31540011500C01B00099810000898A32004D6030009BF -S3154001151080A2C00A1280000698A3200434BFFFFDB2 -S31540011520D603000981C3E0089010200090102001E5 -S31540011530981000089610000A98A3200814BFFFFFD0 -S31540011540D43B00099810000898A32004D60300094B -S3154001155080A2C00A1280000698A3200434BFFFFD72 -S31540011560D603000981C3E0089010200090102001A5 -S315400115709810000898A32004D2A301A0DA8301A001 -S3154001158080A340091280000698A3200414BFFFFCE3 -S31540011590D2A301A081C3E008901020009010200141 -S315400115A09A1000089AA3400AD6A34180D883418065 -S315400115B0981B000B988B0009128000069AA3400ADB -S315400115C014BFFFFBD6A3418081C3E00890102000E1 -S315400115D0901020019A1000089AA3400BD8A241CD41 -S315400115E0C48241CD8418800C8488800A128000060A -S315400115F09AA3400B14BFFFFBD8A241CD81C3E0089B -S315400116009010200090102001010000000100000010 -S31540011610010000001310008092126138D40240008C -S3154001162080A2A0011280000780A0A002D40240003F -S31540011630D4024000952AA002108000050100000056 -S315400116403280000381E80000D402400081E00000BE -S3154001165093480000818A602023100045A2146278D5 -S31540011660A40460040100000081C4400081CC8000D4 -S3154001167091D0200191D020012680000590002001C3 -S3154001168090222001912A2001912A200281C3E0085B -S315400116900100000081C3E008D082004081C3E00818 -S315400116A0D2A2004081C3E008D082018081C3E00814 -S315400116B0D2A2018081C3E008D08201A081C3E008A3 -S315400116C0D2A201A081C3E008D08201C081C3E00853 -S315400116D0D2A201C081C3E008D08201E081C3E00803 -S315400116E0D2A201E081C3E008D2A2000081C3E00892 -S315400116F0D082000081C3E00891480000818A000041 -S3154001170001000000010000000100000081C3E00863 -S315400117100100000081C3E008C0A000A081C3E00829 -S31540011720C0A000C081C3E008D01A0000010000003B -S31540011730010000000100000001000000010000005E -S315400117409DE3BF701310006DCD1A6170CD3FBFE0B0 -S31540011750111000801B100080C91B61E0C51A21D8F9 -S31540011760C11FBFE095A088C4D53FBFF0D91FBFF0C8 -S3154001177003100080D11861E881AB0A4801000000DE -S315400117800380002BC13FBFD8F91FBFD8B5A0055C68 -S31540011790F53FBFF0ED1FBFF0F11FBFF0A5A589587A -S315400117A0E91FBFE0A1A488D41510006DA1A00130A6 -S315400117B0DD1AA17881AC0ACE010000000D80002D12 -S315400117C0F53FBFD0C51FBFD083A018C291A0492104 -S315400117D099A01928D51FBFE091A308CA1710006D1B -S315400117E091A00128FD1AE18081AA0ADE01000000CC -S315400117F00D80002F01000000400001AE01000000F5 -S315400118004000020C0100000080A22000128000313D -S3154001181001000000400002610100000080A220009A -S315400118200280003501000000308000317FFFBE7428 -S3154001183090102001F91FBFD8B5A0055CF53FBFF058 -S31540011840ED1FBFF0F11FBFF0A5A58958E91FBFE005 -S31540011850A1A488D41510006DA1A00130DD1AA1788C -S3154001186081AC0ACE010000001BBFFFD7F53FBFD0B8 -S315400118707FFFBE6390102002C51FBFD083A018C250 -S3154001188091A0492199A01928D51FBFE091A308CA63 -S315400118901710006D91A00128FD1AE18081AA0ADE88 -S315400118A0010000001BBFFFD5010000007FFFBE54B1 -S315400118B0901020034000017F01000000400001DD3F -S315400118C00100000080A2200002BFFFD301000000FA -S315400118D07FFFBE4B010000004000023001000000C6 -S315400118E080A2200002800004010000007FFFBE4468 -S315400118F09010200581C7E00881E800009DE3BF986C -S315400119007FFFFF7D210000047FFFFF7D90120010C5 -S315400119107FFFFF79B0102000808A00100280000B03 -S315400119209010200040000267010000007FFFBE4387 -S3154001193001000000912A20047FFFBE2C900220085E -S315400119407FFFFF800100000081C7E00881E80000B9 -S31540011950191000809813217811100200921020006E -S31540011960150FF76C9412A3D7D03B0000D42320085F -S31540011970C11B0000C503200887A089220100000081 -S3154001198089A005408DA0892281A8CA2601000000B0 -S3154001199033800003901020009010200181C3E0089D -S315400119A001000000C11A0000C51A400089A0084282 -S315400119B081C3E008C93A8000C11A0000C51A400037 -S315400119C089A0094281C3E008C93A80001910008004 -S315400119D098132178D0230000D2232008C1030000A8 -S315400119E0C303200885A00D2181C3E008C53A8000C4 -S315400119F0C11A0000C51A400089A009C2C93A80002F -S31540011A0081C3E00801000000C11A000085A005401D -S31540011A10C53A400081C3E008010000000100000012 -S31540011A20010000000100000001000000010000006B -S31540011A30010000000100000001000000010000005B -S31540011A40010000000100000001000000010000004B -S31540011A50010000000100000001000000010000003B -S31540011A60010000000100000001000000010000002B -S31540011A70010000000100000001000000010000001B -S31540011A80010000000100000001000000010000000B -S31540011A9001000000010000000100000081A00020BB -S31540011AA081C3E00801000000C11A000081C3E008BB -S31540011AB001000000C51A000089A009C2C93A4000C8 -S31540011AC081C3E00801000000131000809212617882 -S31540011AD0D0224000C102400085A01900C53A40000D -S31540011AE081C3E008D01A4000131000809212617839 -S31540011AF0D0224000C102400085A01880C522400086 -S31540011B0081C3E008D0024000151000809412A178EC -S31540011B10D03A8000C11A800085A01A40C5228000B3 -S31540011B2081C3E008D0028000151000809412A1788C -S31540011B30D0228000C102800085A01A20C5228000E3 -S31540011B4081C3E008D0028000151000809412A1786C -S31540011B50D0228000C102800081A01920C13A8000B4 -S31540011B6081C3E008D01A8000151000809412A17834 -S31540011B70D03A8000C11A800081A018C0C1228000DD -S31540011B8081C3E008D0028000151000809412A1782C -S31540011B90D0228000CB0280008DA00025CD2280007E -S31540011BA081C3E008D0028000151000809412A1780C -S31540011BB0D0228000CB0280008DA000A5CD228000DE -S31540011BC081C3E008D0028000151000809412A178EC -S31540011BD0D0228000CB0280008DA00125CD2280003D -S31540011BE081C3E008D0028000191000809813217843 -S31540011BF0D03B0000D43B2008C11B0000C51B200878 -S31540011C0081A80A420100000033800009901020009B -S31540011C1029800007901020012D8000059010200298 -S31540011C202F8000039010200391D0200081C3E0084B -S31540011C30010000001910008098132178D03B000064 -S31540011C40D43B2008C11B0000C51B200881A80AC23D -S31540011C500100000033BFFFF69010200029BFFFF4BA -S31540011C60901020012DBFFFF2901020022FBFFFF0F0 -S31540011C709010200391D020001910008098132178EC +S3154001004082102083C226200882102000C02600008C +S315400100508200600180A0606412BFFFFD01000000C4 +S3154001006082102000C40600008200600180A0606406 +S3154001007012BFFFFD0100000082102002C2262008A7 +S31540010080A0062004C28400208088600402BFFFFECF +S3154001009001000000C0262008C0260000C2840020BE +S315400100A084102001833860148208603F80A060017B +S315400100B002800004A21020011080000E821020034D +S315400100C0C0260000A200A001C2840020833860142B +S315400100D08208603F80A0401122BFFFFA84100001D0 +S315400100E080A4600134800002A21000028210200325 +S315400100F0C2262008C28400208208600780A06006CC +S315400101000280000801000000C2860020C28400204F +S315400101108208600780A0600612BFFFFC0100000054 +S31540010120C0262008C026200480A460010480000463 +S3154001013082102034C284002082102034C22600005E +S31540010140C2840020C284002080A46001048000197A +S315400101508210200129100070A4102001A81520301A +S3154001016090100012400024D592102041C24D000843 +S31540010170C2260000A404A00180A4801112BFFFFA88 +S3154001018090100012C2840020C2840020833860147B +S315400101908208603F80A040110280000401000000F7 +S315400101A07FFFC5FE90102006C284002082102001E8 +S315400101B0C226200CC2840020808860011280005330 +S315400101C082102083C226200880A46001028000425A +S315400101D001000000C28400208088640002BFFFFE47 +S315400101E001000000C2840020808860010280004F27 +S315400101F080A460010480005280A46000C284002073 +S315400102008330601A80A04011028000040100000082 +S315400102107FFFC5E290102009C284002080886100DA +S315400102200280004A01000000C284002080886400E8 +S315400102300280004C0100000029100070A41020002B +S31540010240A8152030E6860020921020414000249BCC +S3154001025090100012C24D000880A040132280000574 +S31540010260A404A0017FFFC5CD9010200CA404A001D9 +S3154001027080A4401214BFFFF480A460010480000FE3 +S3154001028001000000C2840020808861001280003F86 +S3154001029001000000C28400208330601A80A0600003 +S315400102A01280003701000000C2840020808864006B +S315400102B01280003001000000E0840020808C200183 +S315400102C01280000E01000000C026200881C7E00808 +S315400102D091E82000C28400208088600112BFFFC2DD +S315400102E001000000C28400208088600102BFFFFA3D +S315400102F00100000030BFFFBC7FFFC5A89010200C55 +S31540010300C026200830BFFFF27FFFC5A4901020070A +S3154001031082102083C226200880A4600112BFFFAE4E +S315400103200100000030BFFFEC7FFFC59C9010200804 +S3154001033080A4600114BFFFB280A4600034BFFFC037 +S315400103402910007030BFFFDD7FFFC5949010200A51 +S31540010350C28400208088640032BFFFB92910007032 +S315400103607FFFC58E9010200B10BFFFB5291000707E +S315400103707FFFC58A9010200B30BFFFD07FFFC58716 +S315400103809010200E30BFFFC97FFFC5849010200D0D +S3154001039030BFFFC103100123C40060788528A00245 +S315400103A08610607890022010D020C002C400607888 +S315400103B08400A001C420607881C3E00801000000E8 +S315400103C0C0220000C022204082103FFFC222200CE2 +S315400103D00310012384102001C420607881C3E00802 +S315400103E00100000003100123C20060C090102000EC +S315400103F0C020600881C3E008010000009DE3BFA062 +S3154001040023100124E00461107FFFC55D9010201187 +S31540010410C024201CC204201C80A060000280004C25 +S3154001042001000000C204201C8330601B80A0401ADA +S315400104300A80004E80A6A0000280003FC2046110DF +S315400104402B100123A6102004AA156078BA102000AB +S31540010450A4102000AE103FFFA8102001AC10201FB1 +S31540010460B8102005BB2F6002C606401DC0240000FF +S31540010470C0242040EE24200CE8254000832D0012A4 +S31540010480A404A001852CA01082108001C224201C46 +S31540010490EE2420408928E0049A00FFFFC206001D91 +S315400104A0980040049B2B60048400400DEC206004BE +S315400104B0EC204000F8204004C0232004E820A01886 +S315400104C0C400400480A0A00012BFFFFE010000004E +S315400104D08728E004C400400380A0A00002BFFFFEBD +S315400104E0010000008200400DC0206018C205400096 +S315400104F080A0600202800004010000007FFFC52742 +S315400105009004FFFFC40560048204A01080A080010E +S3154001051002800004BA1000127FFFC520901000131C +S31540010520C024201C80A6801218BFFFCFA604E0027B +S31540010530C204611084103FFFB0102000C02060400B +S31540010540C420600C81C7E00881E800007FFFC51325 +S3154001055090102001C204201C8330601B80A0401AE9 +S315400105601ABFFFB680A6A0007FFFC50C90102002DF +S3154001057010BFFFB52B1001239DE3BF80231001233C +S3154001058021100124E6042110A404E100C204A004C0 +S31540010590F02460C07FFFC4FA90102010C204A0046A +S315400105A0050180008410A020808840021280014508 +S315400105B001000000C404E100C204E10080A0800102 +S315400105C002800005821020017FFFC4F490102002B2 +S315400105D082102001C224A004C404E100C204E10047 +S315400105E080A080010280014201000000C024A004D5 +S315400105F0C404E100C204E10080A08001028000053C +S3154001060080A720007FFFC4E59010200480A720002A +S315400106101280011180A7200180A6A0010480001A42 +S315400106202F100040A606E001AE15E3E4A810200114 +S31540010630AC14211010800005AA10200180A6801458 +S3154001064004800011A604E00180A4E01F34BFFFFC32 +S31540010650A8052001921000134000290090100017B0 +S31540010660C2058000C4006040872D40138410C0023B +S31540010670C4206040A805200180A6801414BFFFF362 +S31540010680A604E00180A0001C84603FFFC427BFF0A0 +S31540010690C60460C082103FFFF627BFF8C027BFFCE3 +S315400106A0C020E004C020E010C220E014C220E00CCB +S315400106B08206A0038538601F8530A01E8200800116 +S315400106C0AF386002C207BFF08200401B8416E020AB +S315400106D0C227BFECC427BFE829100123AC10200173 +S315400106E0A81520C0310100003B0080002B0180008D +S315400106F080A7200002800003821020018210001C86 +S31540010700C407BFFC80A08001168000CB80A72001D2 +S315400107100480001680A5E00004800014C207BFFCD7 +S31540010720C407BFFC8928601883286010881100011E +S315400107308328A008881100028400E0248811000162 +S3154001074082102001C820E0201080000680A04017BA +S31540010750C8208000820060018400A00480A0401768 +S3154001076012BFFFFC01000000C207BFF0E827BFF43B +S3154001077080A68001A2100001048000338400E008B5 +S315400107801080000EE607BFECE624A004832D8011FD +S31540010790C220E008833E4011808860011280001328 +S315400107A08400E008A204600180A68011048000262E +S315400107B0A604E001C605000080A7200002BFFFF3A2 +S315400107C080A7200102800079C407BFF8C424A00491 +S315400107D0832D8011C220E008833E4011808860014C +S315400107E002BFFFF18400E008C200800080A06000E3 +S315400107F012BFFFFE01000000C204A0048088401819 +S315400108000280006701000000C204A0048088401DE8 +S315400108100280006001000000EA24A004C204A00492 +S31540010820808840151280005601000000C405000072 +S315400108308400A008A204600180A6801114BFFFDED7 +S31540010840A604E001C020800010800005A21020000F +S3154001085080A460200280000780A72000833E4011CB +S315400108608088600122BFFFFBA204600180A72000AF +S315400108701280005180A720018204401B8210602013 +S31540010880C224A004A32D8011E2208000C200800072 +S3154001089080A0600012BFFFFE01000000C204A00458 +S315400108A0808860200280005D01000000C204A0042F +S315400108B0808840180280005601000000C204A0044E +S315400108C08088401D0280004E01000000C207BFF42F +S315400108D0C4004000C204A008E604A00C8600A0089B +S315400108E0E220A008C400C00080A0A00012BFFFFE05 +S315400108F001000000C404A0048088A0202280003C9E +S31540010900C227BFE4C404A004808880182280003432 +S31540010910C227BFE4C404A0048088801D2280002C25 +S31540010920C227BFE4C404A00880A04002028000049C +S31540010930010000007FFFC4199010200EC204A00CD4 +S3154001094080A4C00102800005C407BFF47FFFC41321 +S315400109509010200FC407BFF4C207BFFCC600800039 +S31540010960C407BFF8820060018400A001EA24A00404 +S31540010970C227BFFC10BFFF5FC427BFF87FFFC40774 +S3154001098090102007C405000010BFFFAB8400A008EB +S315400109907FFFC4029010200630BFFFA07FFFC3FF38 +S315400109A09010200530BFFF99F624A00410BFFF79AF +S315400109B0832D80110280001CC607BFF88210E020FB +S315400109C0C224A00410BFFFB1A32D80117FFFC3F342 +S315400109D09010200D10BFFFD4C207BFE47FFFC3EFC5 +S315400109E09010200C10BFFFCCC207BFE47FFFC3EBC2 +S315400109F09010200B10BFFFC4C207BFE47FFFC3E7BF +S31540010A009010200A10BFFFB3C207BFF47FFFC3E3B4 +S31540010A109010200930BFFFAA7FFFC3E09010200845 +S31540010A2030BFFFA3C607BFE8C624A00410BFFF9787 +S31540010A30A32D8011C2042110C020E00C84103FFF79 +S31540010A40B0102000C0206040C420600C81C7E0087F +S31540010A5081E800000280001E1110004080A720009E +S31540010A60A610001B04BFFF08A81020002F1000404D +S31540010A70AC142110AE15E3E410800005AA10200144 +S31540010A8080A7001404BFFF00A604E00180A4E01F74 +S31540010A9034BFFFFCA805200192100013400027EF48 +S31540010AA090100017C2058000C4006040872D401396 +S31540010AB08410C002C420604010BFFFF2A805200187 +S31540010AC07FFFC3B69010200130BFFEBB9210001BC2 +S31540010AD0400027E2901223E4C2042110852F001B17 +S31540010AE0C420604010BFFEE980A0001C7FFFC3AB5D +S31540010AF09010200330BFFEBE9DE3BF80031001244A +S31540010B0011004034231000407FFFC396F02061104E +S31540010B10C0260000C026204082103FFFC226200C7E +S31540010B200310012384102001A0102001C420607805 +S31540010B30A214639492100010400027C8901000112F +S31540010B40A004200180A4201012BFFFFC92100010C7 +S31540010B50F8062020B937201C231001232D00003F21 +S31540010B603700002AB8072001A2146078AC15A3FE0D +S31540010B70B616E2AAA6100018AE102000B4103FFF28 +S31540010B80BA102001A8102020AA10202180A72001F8 +S31540010B900280000580A5E0007FFFC3799010001711 +S31540010BA080A5E0000280000F01000000C024C000C3 +S31540010BB0C024E040F424E00CFA244000832DE01CDC +S31540010BC0C224E024C204E0248330601C80A0401784 +S31540010BD002800004010000007FFFC37090102012C4 +S31540010BE0EC24E008C204E00880A04016028000041C +S31540010BF0010000007FFFC36990102001EC24E04012 +S31540010C00C204E04080A040160280000401000000BA +S31540010C107FFFC36290102002C204E00880A06000FA +S31540010C2012BFFFFE01000000C204400080A0601018 +S31540010C3002800005A01020017FFFC35890102003B9 +S31540010C40A0102001832C2002C204400184250010FB +S31540010C5080A0800122800005A00420017FFFC34FB0 +S31540010C6090102004A004200180A4201012BFFFF799 +S31540010C70832C2002FA244000F624C000EC24E040F4 +S31540010C80C204C00080A0401B028000040100000095 +S31540010C907FFFC34290102005C204E04080A0401669 +S31540010CA002800004010000007FFFC33C9010200534 +S31540010CB0EC24E008C204E00880A0600012BFFFFEF9 +S31540010CC001000000C204400080A0601002800005BF +S31540010CD0A410201F7FFFC33190102006A410201FAF +S31540010CE0A0102001832C2002C204400180A04012A2 +S31540010CF022800005A00420017FFFC3289010200711 +S31540010D00A004200180A4200812BFFFF7A404BFFE5F +S31540010D10A410201CA010200A832C2002C2044001EA +S31540010D2080A0401222800005A00420017FFFC31B42 +S31540010D3090102008A004200180A4201012BFFFF7C4 +S31540010D40A404BFFEFA27BFF082102002C407BFF0F9 +S31540010D508400A001C427BFF4C407BFF48400A001E6 +S31540010D60C427BFF8C407BFF88400A001C427BFFC4D +S31540010D7084102006C427BFE0C024C000C024E04040 +S31540010D80FA244000C224E040C224E00883444000E3 +S31540010D90808861000280000501000000805000014A +S31540010DA08050000180500001C207BFE0C227BFE466 +S31540010DB0C207BFE080A060060280000582102002C3 +S31540010DC07FFFC2F69010200A82102002C224E0085A +S31540010DD001000000C207BFE0C227BFE4C207BFE06F +S31540010DE080A0600602800005821020027FFFC2EBD0 +S31540010DF09010200A82102002C224E008010000005F +S31540010E00C027BFE4C207BFE480A060001280007320 +S31540010E1001000000C204E00880A0600012BFFFFE8E +S31540010E2001000000C204400080A06004028000046A +S31540010E30010000007FFFC2D99010200DC024E04080 +S31540010E40EC24E008FA2440004000020B01000000B7 +S31540010E504000020B90122F00EC24E040C204E04017 +S31540010E6080A0600002BFFFFE01000000C2044000F6 +S31540010E7080A0600202800004010000007FFFC2C71B +S31540010E809010200EC204600480A0601F02800004FE +S31540010E90010000007FFFC2C19010200F400001F603 +S31540010EA0A4102002400001F690023F00400001F2EA +S31540010EB001000000400001F290023F00C2044000E0 +S31540010EC0A004A00180A0401022800005A52CA0020C +S31540010ED07FFFC2B290102010A52CA002C40440127C +S31540010EE08225401080A0800102800004A4100010D9 +S31540010EF07FFFC2AA9010201180A4201012BFFFECE0 +S31540010F0001000000C024E040F424E00CAE05E001FD +S31540010F1080A7001714BFFF1EA624F00080A720015A +S31540010F200480002C01000000C0262024C206202493 +S31540010F3080A060001280002C010000000304000024 +S31540010F40C2262024C406202480A0800102800005F8 +S31540010F50821020017FFFC29190102014821020013F +S31540010F60C2262020C026202403040000C4062024D3 +S31540010F7080A0800102800004010000007FFFC2873B +S31540010F8090102015C0262020C0262024C2062024E9 +S31540010F9080A060001280001B010000008210200228 +S31540010FA0C2262020C20620208088600202800012CC +S31540010FB001000000C0262020C20620208088600251 +S31540010FC002800004010000007FFFC27490102018C7 +S31540010FD081C7E00891E820007FFFC2709010200B86 +S31540010FE030BFFF8D7FFFC26D9010201310BFFFD51C +S31540010FF0030400007FFFC2699010201730BFFFEE47 +S315400110007FFFC2669010201610BFFFE682102002B5 +S315400110109DE3BFA07FFFC27D0100000080A22000AA +S315400110200280003B0100000080A6200012800035AE +S31540011030010000007FFFC27501000000912A2004D3 +S315400110407FFFC24F9002200340001880010000003C +S3154001105080A2200012800028010000004000181FD5 +S3154001106001000000400017CD01000000400001E3EF +S315400110700100000080A6A0001280001C01000000B3 +S315400110807FFFC26221100124912A2002A01421145B +S31540011090C204000880A060000280000A80A62000E9 +S315400110A07FFFC25A01000000912A20027FFFC257EA +S315400110B0E00400089FC400000100000080A6200053 +S315400110C002800004010000007FFFC26990100019F0 +S315400110D0400004400100000040001E4F0100000096 +S315400110E0400015D281E8000040001F2101000000A8 +S315400110F030BFFFE47FFFC2299010200130BFFFD8E7 +S315400111007FFFC24B9010001930BFFFCB7FFFC21546 +S315400111101100400C10BFFFC680A62000031001231A +S31540011120C40060C48400A001C42060C481C3E00837 +S31540011130010000009DE3BFA07FFFC20A11004044A9 +S3154001114082103FFFE4062008C2262004A40CA00713 +S31540011150C4060000C206000080A08001028000741F +S31540011160010000008210201FC2262004C226000072 +S3154001117080A4A0000280004E8210200085286004D1 +S31540011180840600028200600180A04012C020A0189F +S3154001119012BFFFFC85286004A0102000A610200F76 +S315400111A0AA102006A81020107FFFC1F5901000104C +S315400111B0A2042001832C600486060001A12C200490 +S315400111C0C026000184060010E620E004EA20A018AB +S315400111D0C206000180A0600F028000058206001051 +S315400111E07FFFC1EE90102003820600108410200E6E +S315400111F0872C6004E6206018C206000380A04002E6 +S3154001120012BFFFFE010000008400BFFF80A0BFFFA8 +S3154001121012BFFFFA01000000852C6004C2060002DD +S3154001122080A0600F12BFFFFE82060010C200601848 +S315400112308088601002800033A0060010E824201840 +S31540011240C204201880886010128000350100000019 +S3154001125080A4801114BFFFD5A010001180A4A00165 +S315400112600480000C821020007FFFC1C59010200829 +S315400112708210200FC22620188210202FC226202835 +S31540011280C206202080A0600D12BFFFFE8210200002 +S3154001129085286004840600028200600180A0401215 +S315400112A0C020A01812BFFFFC85286004211001242C +S315400112B0C204211080A06000028000109210001923 +S315400112C011100044400025E59012211C7FFFFC3D92 +S315400112D0D0042110C204211084102001B3288019A2 +S315400112E0F22060408210200FC22620148210200D69 +S315400112F0C2262018A780000081C7E00881E80000C7 +S315400113007FFFC1A690102004E8242018C2042018AB +S315400113108088601022BFFFD080A480117FFFC19FCB +S315400113209010200510BFFFCC80A480117FFFC19B88 +S315400113309010200110BFFF8D8210201F0000000079 +S315400113400100000001000000010000000100000052 +S31540011350010000000100000081C3E0080100000017 +S315400113600100000001000000010000000100000032 +S31540011370010000000100000081C3E00801000000F7 +S315400113800100000001000000010000000100000012 +S31540011390010000000100000081C3E00801000000D7 +S315400113A001000000010000000100000001000000F2 +S315400113B0010000000100000081C3E00801000000B7 +S315400113C0D482018090A2000916BFFFFE9612800BBF +S315400113D081C3E0089010000BD48201C090A200099D +S315400113E016BFFFFE9612800B81C3E0089010000BDA +S315400113F090A22004C0A201A090A22004C0A201A0F4 +S3154001140090A22004C0A201A090A22004C0A201A0E3 +S31540011410C0A2018090A2200414BFFFF70100000082 +S3154001142081C3E0080100000090A22004C0A201E0AF +S3154001143090A22004C0A201E090A22004C0A201E033 +S3154001144090A22004C0A201E0C0A201C090A2200443 +S3154001145014BFFFF70100000081C3E008010000004E +S31540011460981000089610000A98A3200814BFFFFFA1 +S31540011470D43B00099810000898A3200814BFFFFF29 +S31540011480C01B00099810000898A32004D603000940 +S3154001149080A2C00A1280000698A3200434BFFFFD33 +S315400114A0D603000981C3E008901020009010200166 +S315400114B0981000089610000A98A3200814BFFFFF51 +S315400114C0D43B00099810000898A32004D6030009CC +S315400114D080A2C00A1280000698A3200434BFFFFDF3 +S315400114E0D603000981C3E008901020009010200126 +S315400114F09810000898A32004D2A301A0DA8301A082 +S3154001150080A340091280000698A3200414BFFFFC63 +S31540011510D2A301A081C3E0089010200090102001C1 +S315400115209A1000089AA3400AD6A34180D8834180E5 +S31540011530981B000B988B0009128000069AA3400A5B +S3154001154014BFFFFBD6A3418081C3E0089010200061 +S31540011550901020019A1000089AA3400BD8A241CDC1 +S31540011560C48241CD8418800C8488800A128000068A +S315400115709AA3400B14BFFFFBD8A241CD81C3E0081B +S315400115809010200090102001010000000100000091 +S315400115900100000013100080921260E0D402400066 +S315400115A080A2A0011280000780A0A002D4024000C0 +S315400115B0D4024000952AA0021080000501000000D7 +S315400115C03280000381E80000D402400081E000003F +S315400115D093480000818A602023100045A21461F8D7 +S315400115E0A40460040100000081C4400081CC800055 +S315400115F091D0200191D02001268000059000200144 +S3154001160090222001912A2001912A200281C3E008DB +S315400116100100000081C3E008D082004081C3E00898 +S31540011620D2A2004081C3E008D082018081C3E00894 +S31540011630D2A2018081C3E008D08201A081C3E00823 +S31540011640D2A201A081C3E008D08201C081C3E008D3 +S31540011650D2A201C081C3E008D08201E081C3E00883 +S31540011660D2A201E081C3E008D2A2000081C3E00812 +S31540011670D082000081C3E00891480000818A0000C1 +S3154001168001000000010000000100000081C3E008E4 +S315400116900100000081C3E008C0A000A081C3E008AA +S315400116A0C0A000C081C3E008D01A000001000000BC +S315400116B001000000010000000100000001000000DF +S315400116C09DE3BF8803100070D1186078D13FBFF009 +S315400116D003100080D11FBFF0D9186180031000802C +S315400116E0D518618895A308CAD53FBFF80310008075 +S315400116F0D91FBFF8D518619081AB0A4A0100000095 +S3154001170023800038D127BFEC91A005480310007013 +S31540011710D13FBFF8D51FBFF8D91FBFF899A3094AD2 +S31540011720D51FBFF099A308CA99A0012CD51860808E +S3154001173081AB0ACA010000002D800024D127BFECED +S3154001174091A018C891A20928D51FBFF091A01928C8 +S3154001175091A208CA91A0012803100070D51860888B +S3154001176081AA0ACA010000000D800015010000008F +S315400117704000019001000000400001EE0100000020 +S3154001178080A220001280000B0100000040000243AD +S315400117900100000080A22000128000040100000028 +S315400117A081C7E00881E800007FFFC07C91E8200501 +S315400117B07FFFC07A0100000030BFFFF57FFFC07791 +S315400117C09010200330BFFFEBD327BFE87FFFC073E4 +S315400117D090102002D307BFE810BFFFDAD107BFEC54 +S315400117E0D327BFE87FFFC06D90102001D307BFE824 +S315400117F010BFFFC6D107BFEC9DE3BFA07FFFFF9E91 +S31540011800210000047FFFFF9E901200107FFFFF9A88 +S3154001181001000000808A001012800004B0102000F0 +S3154001182081C7E00881E80000400002669010200070 +S315400118307FFFC07601000000912A20047FFFC0503F +S31540011840900220087FFFFF9F81E800000100000011 +S3154001185019100080981321201110020092102000C7 +S31540011860150FF76C9412A3D7D03B0000D423200860 +S31540011870C11B0000C503200887A089220100000082 +S3154001188089A005408DA0892281A8CA2601000000B1 +S3154001189033800003901020009010200181C3E0089E +S315400118A001000000C11A0000C51A400089A0084283 +S315400118B081C3E008C93A8000C11A0000C51A400038 +S315400118C089A0094281C3E008C93A80001910008005 +S315400118D098132120D0230000D2232008C103000001 +S315400118E0C303200885A00D2181C3E008C53A8000C5 +S315400118F0C11A0000C51A400089A009C2C93A800030 +S3154001190081C3E00801000000C11A000085A005401E +S31540011910C53A400081C3E008010000000100000013 +S31540011920010000000100000001000000010000006C +S31540011930010000000100000001000000010000005C +S31540011940010000000100000001000000010000004C +S31540011950010000000100000001000000010000003C +S31540011960010000000100000001000000010000002C +S31540011970010000000100000001000000010000001C +S31540011980010000000100000001000000010000000C +S3154001199001000000010000000100000081A00020BC +S315400119A081C3E00801000000C11A000081C3E008BC +S315400119B001000000C51A000089A009C2C93A4000C9 +S315400119C081C3E008010000001310008092126120DB +S315400119D0D0224000C102400085A01900C53A40000E +S315400119E081C3E008D01A4000131000809212612092 +S315400119F0D0224000C102400085A01880C522400087 +S31540011A0081C3E008D0024000151000809412A12045 +S31540011A10D03A8000C11A800085A01A40C5228000B4 +S31540011A2081C3E008D0028000151000809412A120E5 +S31540011A30D0228000C102800085A01A20C5228000E4 +S31540011A4081C3E008D0028000151000809412A120C5 +S31540011A50D0228000C102800081A01920C13A8000B5 +S31540011A6081C3E008D01A8000151000809412A1208D +S31540011A70D03A8000C11A800081A018C0C1228000DE +S31540011A8081C3E008D0028000151000809412A12085 +S31540011A90D0228000CB0280008DA00025CD2280007F +S31540011AA081C3E008D0028000151000809412A12065 +S31540011AB0D0228000CB0280008DA000A5CD228000DF +S31540011AC081C3E008D0028000151000809412A12045 +S31540011AD0D0228000CB0280008DA00125CD2280003E +S31540011AE081C3E008D002800019100080981321209C +S31540011AF0D03B0000D43B2008C11B0000C51B200879 +S31540011B0081A80A420100000033800009901020009C +S31540011B1029800007901020012D8000059010200299 +S31540011B202F8000039010200391D0200081C3E0084C +S31540011B30010000001910008098132120D03B0000BD +S31540011B40D43B2008C11B0000C51B200881A80AC23E +S31540011B500100000033BFFFF69010200029BFFFF4BB +S31540011B60901020012DBFFFF2901020022FBFFFF0F1 +S31540011B709010200391D02000191000809813212045 +S31540011B80D0230000D2232008C1030000C30320084C +S31540011B9081A80A210100000033BFFFE59010200013 +S31540011BA029BFFFE3901020012DBFFFE190102002D5 +S31540011BB02FBFFFDF9010200391D020001910008025 +S31540011BC098132120D0230000D2232008C10300000E +S31540011BD0C303200881A80AA10100000033BFFFD436 +S31540011BE09010200029BFFFD2901020012DBFFFD0B9 +S31540011BF0901020022FBFFFCE9010200391D02000DD +S31540011C001910008098132120D03B0000D43B2008B6 +S31540011C10C11B0000C51B200889A008C2C93B0000A2 +S31540011C2081C3E008D01B00001910008098132120C1 +S31540011C30D0230000D2232008C1030000C30320089B +S31540011C4085A00821C523000081C3E008D003000018 +S31540011C501910008098132120D0230000D223200898 +S31540011C60C1030000C303200885A008A1C5230000C5 +S31540011C7081C3E008D0030000191000809813212089 S31540011C80D0230000D2232008C1030000C30320084B -S31540011C9081A80A210100000033BFFFE59010200012 -S31540011CA029BFFFE3901020012DBFFFE190102002D4 -S31540011CB02FBFFFDF9010200391D020001910008024 -S31540011CC098132178D0230000D2232008C1030000B5 -S31540011CD0C303200881A80AA10100000033BFFFD435 -S31540011CE09010200029BFFFD2901020012DBFFFD0B8 -S31540011CF0901020022FBFFFCE9010200391D02000DC -S31540011D001910008098132178D03B0000D43B20085D -S31540011D10C11B0000C51B200889A008C2C93B0000A1 -S31540011D2081C3E008D01B0000191000809813217868 -S31540011D30D0230000D2232008C1030000C30320089A -S31540011D4085A00821C523000081C3E008D003000017 -S31540011D501910008098132178D0230000D22320083F -S31540011D60C1030000C303200885A008A1C5230000C4 -S31540011D7081C3E008D0030000191000809813217830 -S31540011D80D0230000D2232008C1030000C30320084A -S31540011D9085A00921C523000081C3E008D0030000C6 -S31540011DA01910008098132178D0230000D2232008EF -S31540011DB0C1030000C303200885A009A1C523000073 -S31540011DC081C3E008D00300001910008098132178E0 -S31540011DD0D0230000C103000083A00520C3230000D7 -S31540011DE081C3E008D0030000131000809212619075 -S31540011DF0C51A6008C11A400089A0084091A108C2CD -S31540011E0095A209C495A2894281C3E008D53A00004A -S31540011E1013100080921261B0C1024000C3026004F7 -S31540011E2085A0082087A088A189A0C9A289A10921E6 -S31540011E3081C3E008C92200009610200213100080D9 -S31540011E4092126190151000809412A190D502400023 -S31540011E50D7028000D5220000D8020000131000806E -S31540011E60921261B096A2E00112BFFFF90100000093 -S31540011E7081C3E008010000001310008092126190B6 -S31540011E80151000809412A1B0C1028000C51A6010DD -S31540011E9083A0082089A088C08BA109A18DA10942F0 -S31540011EA08FA1492691A0054681C3E008D13A000099 -S31540011EB01110008090122188C11A0000C51A000035 -S31540011EC0C91A0000CD1A0000D11A0000D51A000027 -S31540011ED0D91A0000DD1A0000E11A0000E51A0000D7 -S31540011EE0E91A0000ED1A0000F11A0000F51A000087 -S31540011EF0F91A0000FD1A000081C3E0080100000044 -S31540011F0029100080A815215827100080A614E1C089 -S31540011F10C12CC000E604C000A134E00EA00C20078D -S31540011F20A0A42002AE1020002D100080AC15A1C047 -S31540011F30AE05E001AC05A008C1358000C12D000009 -S31540011F40EA050000AB35600DAA8D600112BFFFF9AD -S31540011F5001000000808000100280002F2B3C1FFFF3 -S31540011F60AA1563FFA60CC015E6250000C10D0000A9 -S31540011F702B100080AA1561CC2D100047AC15A3E0AB -S31540011F80AE25E001E0054000E025800081D8200033 -S31540011F9001000000010000000100000001000000F6 -S31540011FA001000000010000000100000001000000E6 -S31540011FB001000000010000000100000001000000D6 -S31540011FC001000000010000000100000001000000C6 -S31540011FD001000000010000000100000001000000B6 -S31540011FE00000000080A5C00012BFFFE6AA056008F8 -S31540011FF0C12D0000E60500002B03C000A614C01544 -S31540012000E6250000C10D000081C4400081CC80005E -S315400120100100000081C4800081CCA00401000000C1 -S315400120200100000081C3E008915800000100000052 -S315400120301110008090122158C10A0000C0220000F0 -S31540012040C10A0000C12A0000D40200001300038027 -S31540012050942A800980A0000A3280004D9010200306 -S315400120601303E000D223BFA0C023BFA4C10BBFA06E -S31540012070C023BFA0151000809412A170C102800038 -S315400120800100000001000000C10BBFA0C10BBFA4AD -S3154001209083A00520C12BBFA0D003BFA0808A220008 -S315400120A02280003B901020049010200015100080E3 -S315400120B09412A140C5028000C902A008D102A00C19 -S315400120C01310008092126170C70240008DA08944AE -S315400120D081A98AC8010000000380000501000000B3 -S315400120E0901020011080002A01000000C5028000E6 -S315400120F0C902A008D102A00C13100080921261708F -S31540012100CB0240008DA0894481A98AC80100000004 -S315400121100380000501000000901020011080001C82 -S315400121200100000025100080A414A168C11C800094 -S31540012130C51C800080A000003280000685A008C032 -S3154001214081A80AC2010000001380000301000000BB -S31540012150901020050100000025100080A414A168FC -S31540012160C11C8000C51C800080A000000100000049 -S315400121703280000685A008C081A80AC2010000007D -S3154001218013800003010000009010200701000000A9 -S3154001219081C3E00801000000901020019544000031 -S315400121A09532A01E940AA00380A2800002800040BE -S315400121B09010200080A2A0030280003D13100080F1 -S315400121C0921261F0C11A4000C51A6008FD026018FA -S315400121D095A0003E99A0003E9DA0003E170000C07C -S315400121E09612E078A182C0000100000001000000C3 -S315400121F00100000001000000010000000100000094 -S3154001220081A0002083A0002195A0002A99A0002C3E -S315400122109DA0002E170000C09612E07CA182C0004E -S315400122200100000001000000010000000100000063 -S31540012230010000000100000085A0002287A00023C4 -S31540012240A180000001000000010000000100000023 -S3154001225001000000010000000100000089A00842C1 -S31540012260A9A2883ED93A4000DD224000CD1A60102D -S31540012270D102600881A90A46010000000380000CD2 -S3154001228081AD0A2801000000038000099344000043 -S315400122909332601B920A60079010200080A2A00131 -S315400122A002800003902260079022600481C3E00807 -S315400122B001000000C12BBFA081C3E008D003BFA02D -S315400122C0D023BFA081C3E008C10BBFA0010000001D -S315400122D09DE3BF6040001B19B0102000913A200ACF -S315400122E0900A200380A220011280111101000000F2 -S315400122F07FFFBBBE9010200D190C40291B23CD1B1F -S315400123009410200096102000981320069A13609B83 -S31540012310D43FBFE0D43FBFC0D43FBFE87FFFFF42B9 -S31540012320D83FBFF0900A3000032804009012208065 -S315400123308210600FC22200001B1000479002200449 -S315400123409A1363009A234008191000009B3B6002D0 -S31540012350032784009A13400C82106010C222200485 -S315400123607FFFFED4DA2200007FFFFFD61103E00093 -S315400123702D100080C025A1C07FFFFDD49010200004 -S31540012380809200091280000601000000C205A1C02A -S3154001239080A0600002800004010000007FFFBB981E -S315400123A09010200B7FFFFDC990103FFA03300600C5 -S315400123B080A200011280000480A2600002800EDB30 -S315400123C0010000007FFFBB8E9010200B7FFFFDBFF9 -S315400123D09010201403100D0080A200011280000409 -S315400123E080A2600002800ECC010000007FFFBB840A -S315400123F09010200B7FFFFDB5901020620310162030 -S3154001240080A200011280000480A2600002800EBDFD -S31540012410010000007FFFBB7A9010200B7FFFFDB3C8 -S31540012420901020050310280080A2000112800006AA -S3154001243001000000C205A1C080A060000280000426 -S31540012440010000007FFFBB6E9010200B7FFFFF9DB8 -S315400124501103C000111C00007FFFFDAC921020004B -S31540012460031FFFFF821063FF80A200011280000A52 -S315400124701B000070C205A1C09A13601F190000100D -S315400124808208400D9813201080A0400C0280000560 -S31540012490113C00007FFFBB5A9010200C113C0000FC -S315400124A07FFFFD9A921020000320000080A20001C8 -S315400124B01280000A1B000070C205A1C09A13601F5A -S315400124C0190000108208400D9813201080A0400C7E -S315400124D002800004010000007FFFBB499010200CE0 -S315400124E0C025A1C0901020007FFFFD8892102000DA -S315400124F080A220001280000601000000C205A1C092 -S3154001250080A0600002800005110144007FFFBB3CB2 -S315400125109010200C11014400132840009012230210 -S315400125207FFFFD7A9212600180A220001280000690 -S3154001253001000000C205A1C080A060002280000504 -S315400125401111FFFF7FFFBB2E9010200C1111FFFFD1 -S315400125507FFFFD76901223FF0300007F821063FF09 -S3154001256080A200011280000601000000C205A1C040 -S3154001257080A06000028000052F1000857FFFBB20F0 -S315400125809010200C2F1000857FFFFD60D01DE0C804 -S31540012590031FFFFF821063FF80A200011280000A21 -S315400125A01B000070C205A1C09A13601F19000010DC -S315400125B08208400D9813201080A0400C028000052F -S315400125C0031000857FFFBB0E9010200C0310008581 -S315400125D0D01860D8C025A1C07FFFFD4C0100000086 -S315400125E00320000080A200011280000A1B00007037 -S315400125F0C205A1C09A13601F190000108208400D40 -S315400126009813201080A0400C028000051910008507 -S315400126107FFFBAFB9010200C19100085C025A1C080 -S315400126207FFFFD3AD01B20B8031FFFFF821063FFD7 -S3154001263080A200011280000A1B000070C205A1C0E1 -S315400126409A13601F190000108208400D981320103C -S3154001265080A0400C02800005331000857FFFBAE858 -S315400126609010200C33100085C025A1C07FFFFD27A7 -S31540012670D01E60F0C205A1C08330600E820860039F -S3154001268080A0600202800004211000807FFFBADC36 -S315400126909010200C7FFFFF0B1103C000111158044D -S315400126A0C02421C07FFFFD299012223403102B0044 -S315400126B08210624680A200011280000503200000BC -S315400126C080A2400102800FC5010000007FFFBACC05 -S315400126D09010200D113C02AF7FFFFD1C901220D1BE -S315400126E0033180558210639A80A200011280000551 -S315400126F00308000080A2400102800FDB01000000B8 -S315400127007FFFBABF9010200D1111FC007FFFFD170E -S3154001271092102000031FE00080A200011280000AEF -S315400127201B000070C205A1C09A13601F190000105A -S315400127308208400D9813200880A0400C02800005B5 -S3154001274011207C017FFFBAAE9010200D11207C0133 -S31540012750C025A1C0901220307FFFFD041300010067 -S315400127600320000080A200011280000A1B000070B5 -S31540012770C205A1C09A13601F190000108208400DBE -S315400127809813200480A0400C028000040100000040 -S315400127907FFFBA9B9010200DC025A1C0901020004C -S315400127A07FFFFCF29210200080A2200012800006DA -S315400127B001000000C205A1C080A0600002800004A3 -S315400127C0010000007FFFBA8E9010200D7FFFFCE7CD -S315400127D0D01DE0C803100085DA0060C080A2000D5C -S315400127E01280000601000000C205A1C080A0600061 -S315400127F0028000051B1000857FFFBA819010200DD5 -S315400128001B1000857FFFFCD9D01B60D0031FE00061 -S3154001281080A200011280000601000000C205A1C08D -S3154001282080A0600002800005031000857FFFBA7416 -S315400128309010200D031000857FFFFCCCD01860B8A6 -S3154001284003100085DA0060A880A2000D1280000AFC -S315400128501B000070C205A1C09A13601F1900001029 -S315400128608208400D9813201080A0400C028000047D -S31540012870010000007FFFBA629010200DC025A1C063 -S315400128807FFFFCBAD01E60F0C205A1C08330600E46 -S315400128908208600380A06002028000042310008049 -S315400128A07FFFBA579010200D7FFFFE861103E0008F -S315400128B02108C6AF901420DEC02461C07FFFFCB35F -S315400128C0A01420DE80A20010128000060100000044 -S315400128D0C20461C080A06000028000052108C6AF25 -S315400128E07FFFBA479010200E2108C6AF7FFFFCB785 -S315400128F0901420DEA01420DE80A200101280000673 -S3154001290001000000C205A1C080A060002280000530 -S315400129101128C6AF7FFFBA3A9010200E1128C6AFD4 -S315400129207FFFFCAA901220DE0308C6AF821060DE4C -S3154001293080A200011280000601000000C205A1C06C -S3154001294080A06000228000051108C6AF7FFFBA2C27 -S315400129509010200E1108C6AF7FFFFC94901220DE26 -S315400129600328C6AF821060DE80A2000112800006F5 -S3154001297001000000C205A1C080A0600022800005C0 -S315400129801128C6AF7FFFBA1E9010200E1128C6AF80 -S315400129907FFFFC86901220DE0308C6AF821060DE00 -S315400129A080A200011280000601000000C205A1C0FC -S315400129B080A0600002800004010000007FFFBA1081 -S315400129C09010200E7FFFFE3F1103E00011151BC042 -S315400129D01310C82115351BC01710C82190122103A9 -S315400129E0921261419412A1037FFFFC809612E1414C -S315400129F080A220021280000601000000C205A1C08B -S31540012A0080A060000280000511351BC07FFFB9FC24 -S31540012A109010200F11351BC01310C82115151BC06E -S31540012A201710C82190122103921261419412A103F9 -S31540012A307FFFFC6E9612E14180A2200112800006C2 -S31540012A4001000000C205A1C080A06000028000050F -S31540012A50901020007FFFB9EA9010200F90102000BF -S31540012A6092102000152000007FFFFC609610200088 -S31540012A7080A220001280000601000000C205A1C00C -S31540012A8080A0600002800005191000857FFFB9DC37 -S31540012A909010200F191000851B100085D01B20D0E7 -S31540012AA07FFFFC52D41B60D880A220021280000610 -S31540012AB001000000C205A1C080A06000028000059F -S31540012AC011151BC07FFFB9CE9010200F11151BC0E9 -S31540012AD01310C82115151BE81710C82190122103A0 -S31540012AE0921261419412A1037FFFFC409612E1418B -S31540012AF080A220011280000601000000C205A1C08B -S31540012B0080A060000280000511151BE87FFFB9BC5B -S31540012B109010200F11151BE81310C82115151BC065 -S31540012B201710C82190122103921261419412A103F8 -S31540012B307FFFFC2E9612E14180A220021280000600 -S31540012B4001000000C205A1C080A06000028000050E -S31540012B5011151BE87FFFB9AA9010200F11151BE82C -S31540012B601310C82190122103921261417FFFFC1F6D -S31540012B70D41DE0C880A22003128000060100000097 -S31540012B80C205A1C080A06000028000050310008537 -S31540012B907FFFB99B9010200F0310008511151BE88C -S31540012BA01310C82190122103921261417FFFFC0F3D -S31540012BB0D41860B880A220031280000A1B0000705E -S31540012BC0C205A1C09A13601F190000108208400D6A -S31540012BD09813201080A0400C0280000511151BE8B7 -S31540012BE07FFFB9879010200F11151BE81310C821DC -S31540012BF0C025A1C090122103921261417FFFFBFBC8 -S31540012C00D41E60F080A2200212800006010000005E -S31540012C10C205A1C080A060000280000515151BE811 -S31540012C207FFFB9779010200F15151BE81710C821A3 -S31540012C30D01E60F09412A1037FFFFBEC9612E14196 -S31540012C4080A220011280000601000000C205A1C039 -S31540012C5080A060000280000515151BE87FFFB9685A -S31540012C609010200F15151BE81710C821D01DE0C87C -S31540012C709412A1037FFFFBDD9612E14180A220035E -S31540012C801280000601000000C205A1C080A06000BC -S31540012C9002800005191000857FFFB9599010200F59 -S31540012CA01910008515151BE81710C821D01B20B82F -S31540012CB09412A1037FFFFBCD9612E14180A220032E -S31540012CC01280000A1B000070C205A1C09A13601F42 -S31540012CD0190000108208400D9813201080A0400C66 -S31540012CE00280000511151BC07FFFB9459010200FCA -S31540012CF011151BC01310C82115351BC01710C8214B -S31540012D00C025A1C090122103921261419412A103E0 -S31540012D107FFFFBC99612E14180A220021280000684 -S31540012D2001000000C205A1C080A06000028000052C -S31540012D3011351BC07FFFB9329010200F11351BC0D2 -S31540012D401310C82115151BC01710C8219012210355 -S31540012D50921261419412A1037FFFFBB79612E141A2 -S31540012D6080A220011280000601000000C205A1C018 -S31540012D7080A0600002800005901020007FFFB920EE -S31540012D809010200F90102000921020001520000076 -S31540012D907FFFFBA99610200080A22000128000062A -S31540012DA001000000C205A1C080A0600002800005AC -S31540012DB01B1000857FFFB9129010200F1B10008554 -S31540012DC003100085D01B60D07FFFFB9BD41860D8D1 -S31540012DD080A220021280000601000000C205A1C0A7 -S31540012DE080A060000280000511151BC07FFFB90459 -S31540012DF09010200F11151BC01310C82115151BE883 -S31540012E001710C82190122103921261419412A10315 -S31540012E107FFFFB899612E14180A2200112800006C4 -S31540012E2001000000C205A1C080A06000028000052B -S31540012E3011151BE87FFFB8F29010200F11151BE802 -S31540012E401310C82115151BC01710C8219012210354 -S31540012E50921261419412A1037FFFFB779612E141E1 -S31540012E6080A220021280000601000000C205A1C016 -S31540012E7080A060000280000511151BE87FFFB8E0C5 -S31540012E809010200F11151BE81310C8219012210331 -S31540012E90921261417FFFFB68D41DE0C880A22003E6 -S31540012EA01280000A1B000070C205A1C09A13601F60 -S31540012EB0190000108208400D9813201080A0400C84 -S31540012EC002800005191000857FFFB8CD9010200FB4 -S31540012ED01910008511151BE81310C8219012210302 -S31540012EE0921261417FFFFB54D41B20B880A220037C -S31540012EF01280000A1B000070C205A1C09A13601F10 -S31540012F00190000108208400D9813201080A0400C33 -S31540012F100280000511151BE87FFFB8B99010200FFC -S31540012F2011151BE81310C821C025A1C09012210319 -S31540012F30921261417FFFFB40D41E60F080A22002C5 -S31540012F401280000601000000C205A1C080A06000F9 -S31540012F500280000515151BE87FFFB8A99010200FC8 -S31540012F6015151BE81710C821D01E60F09412A10355 -S31540012F707FFFFB319612E14180A2200112800006BB -S31540012F8001000000C205A1C080A0600002800005CA -S31540012F9015151BE87FFFB89A9010200F15151BE8F1 -S31540012FA01710C821D01DE0C89412A1037FFFFB2250 -S31540012FB09612E14180A220031280000A1B00007094 -S31540012FC0C205A1C09A13601F190000108208400D66 -S31540012FD09813201080A0400C028000051B1000852C -S31540012FE07FFFB8879010200F1B10008515151BE831 -S31540012FF01710C821D01B60B89412A1037FFFFB0EA6 -S315400130009612E14180A220031280000A1B00007043 -S31540013010C205A1C09A13601F190000108208400D15 -S315400130209813201080A0400C02800005110048EA48 -S315400130307FFFB8739010200F110048EA13048D15D5 -S31540013040C025A1C0901223CD7FFFFB0C921262785E -S3154001305080A220011280000601000000C205A1C025 -S3154001306080A0600002800005110048EA7FFFB86435 -S315400130709010200F110048EA13048D15901223CDAC -S315400130807FFFFB0F9212627880A220011280000618 -S3154001309001000000C205A1C080A0600002800004BA -S315400130A0010000007FFFB8569010200FC025A1C037 -S315400130B07FFFFC841103C000291001449007BFF033 -S315400130C09207BFE87FFFFA3894152120C207BFF067 -S315400130D0DA05212080A0400D1280000782152120AB -S315400130E0DA006004C207BFF480A0400D02800D598A -S315400130F0010000007FFFB842901020103710008574 -S315400131009007BFF09216E0E07FFFFA279415212041 -S31540013110C206E0E0DA05212080A340018215212084 -S31540013120128000079816E0E0DA006004C20320042A -S3154001313080A3400102800D42010000007FFFB830AC -S31540013140901020109007BFF09215E0C87FFFFA1645 -S3154001315094152120C205E0C8DA05212080A340014B -S3154001316082152120128000079815E0C8DA00600414 -S31540013170C203200480A3400102800D2C01000000FF -S315400131807FFFB81F9010201003100085921060B881 -S315400131909007BFF07FFFFA04941521201B000070B1 -S315400131A0C205A1C09A13601F190000108208400D84 -S315400131B09813201080A0400C028000042110014485 -S315400131C07FFFB80F9010201003100080C02061C00F -S315400131D07FFFFC3C901020001310008594142120A1 -S315400131E0921260B87FFFF9F09007BFF03910008561 -S315400131F0C20720B0DA04212080A340019414212083 -S3154001320012800007821720B0DA02A004C2006004CF -S3154001321080A3400102800004010000007FFFB7F84F -S31540013220901020107FFFFC271103C0009007BFF0CC -S31540013230921660F07FFFF9DC94152120C205A1C0EA -S315400132408330600E8208600380A060022110014431 -S3154001325002800004231000807FFFB7E99010201000 -S3154001326094142120C02461C09007BFE87FFFF9CEA6 -S315400132709207BFF0DA042120C207BFF080A34001C4 -S315400132801280000794142120DA02A004C207BFF479 -S3154001329080A3400102800D21010000007FFFB7D8C5 -S315400132A0901020109007BFE89216E0E07FFFF9BE2C -S315400132B094152120C206E0E0DA05212080A34001D1 -S315400132C082152120128000079816E0E0DA0060049A -S315400132D0C203200480A3400102800D0B01000000BF -S315400132E07FFFB7C7901020109007BFE89215E0C83E -S315400132F07FFFF9AD94152120C205E0C8DA052120EA -S3154001330080A3400182152120128000079815E0C84C -S31540013310DA006004C203200480A3400102800CF558 -S31540013320010000007FFFB7B69010201019100085EC -S31540013330921320B89007BFE87FFFF99B941521208F -S315400133401B000070C205A1C09A13601F190000102E -S315400133508208400D9813201080A0400C0280000482 -S31540013360211001447FFFB7A6901020107FFFFBD5A7 -S31540013370901020001310008594142120921260B8F9 -S315400133807FFFF9899007BFE8C20720B0DA04212000 -S3154001339080A340019414212012800007821720B097 -S315400133A0DA02A004C200600480A340010280000446 -S315400133B0010000007FFFB792901020107FFFFBC1F4 -S315400133C01103C0009007BFE8921660F07FFFF976BF -S315400133D094152120C205A1C08330600E8208600386 -S315400133E080A0600221100144028000042310008065 -S315400133F07FFFB7839010201094142120C02461C010 -S315400134009016E0E07FFFF9689207BFF0C206E0E060 -S31540013410DA04212080A34001941421201280000760 -S315400134208216E0E0DA02A004C200600480A34001F3 -S3154001343002800CAB010000007FFFB7719010201095 -S315400134409016E0E09207BFE87FFFF95794152120D7 -S31540013450C206E0E0DA05212080A340018215212041 -S31540013460128000079816E0E0DA006004C2032004E7 -S3154001347080A3400102800C95010000007FFFB760E8 -S31540013480901020101B100085901360D092100008F8 -S315400134907FFFF9459415212019100085C20320D0DC -S315400134A0DA05212080A340018215212012800007E0 -S315400134B0981320D0DA006004C203200480A340019F -S315400134C002800C7D010000007FFFB74D9010201057 -S315400134D01B100085901360D8921000087FFFF932C7 -S315400134E09415212019100085C20320D8DA05212020 -S315400134F080A340018215212012800007981320D80D -S31540013500DA006004C203200480A3400102800C65F6 -S31540013510010000007FFFB73A901020101B10008574 -S3154001352003100085901360D8921060D07FFFF91E7A -S31540013530941521201B000070C205A1C09A13601F7B -S31540013540190000108208400D9813201080A0400CED -S3154001355002800004211001447FFFB72990102010FA -S315400135607FFFFB5890102000111000851310008535 -S3154001357094142120901220D87FFFF90B921260D02B -S31540013580C20720B0DA04212080A3400194142120EF -S3154001359012800007821720B0DA02A004C20060043C -S315400135A080A3400102800004010000007FFFB714A0 -S315400135B0901020107FFFFB431103C00019100085B6 -S315400135C01B100085901320D0921360D8C025A1C04E -S315400135D07FFFF8F594152120C20720B0DA05212096 -S315400135E080A340018215212012800007981720B040 -S315400135F0DA006004C203200480A3400102800C1F4C -S315400136001B0000707FFFB6FE901020109016E0E080 -S31540013610921660F07FFFF8E494152120C205A1C0FF -S315400136208330600E8208600380A06002211001444D -S3154001363002800004231000807FFFB6F19010201015 -S3154001364094142120C02461C09015E0C87FFFF8D6AC -S315400136509207BFF0C205E0C8DA04212080A34001E9 -S3154001366094142120128000078215E0C8DA02A004D2 -S31540013670C200600480A3400102800B9C010000004F -S315400136807FFFB6DF901020109015E0C89207BFE883 -S315400136907FFFF8C594152120C205E0C8DA0521202F -S315400136A080A3400182152120128000079815E0C8A9 -S315400136B0DA006004C203200480A3400102800B8625 -S315400136C0010000007FFFB6CE901020109015E0C893 -S315400136D09216E0E07FFFF8B494152120C205E0C8B8 -S315400136E0DA05212080A3400182152120128000079E -S315400136F09815E0C8DA006004C203200480A34001A3 -S3154001370002800B70010000007FFFB6BD90102010B3 -S315400137109015E0C8921000087FFFF8A39415212068 -S31540013720C205E0C8DA05212080A340018215212087 -S31540013730128000079815E0C8DA006004C20320042D -S3154001374080A3400102800B5A010000007FFFB6AC06 -S315400137509010201003100085921060B89015E0C8B3 -S315400137607FFFF8919415212003000070A610601F79 -S31540013770DA05A1C0030000109A0B4013AA1060108D -S3154001378080A34015231000852510014402800004C2 -S31540013790211000807FFFB69A90102010C02421C0CE -S315400137A0901460B89207BFF07FFFF87F9414A12070 -S315400137B0C20421C08208401380A040150280000443 -S315400137C0010000007FFFB68E90102010C02421C05A -S315400137D0901460B89207BFE87FFFF8739414A12054 -S315400137E0C20421C08208401380A040150280000413 -S315400137F0010000007FFFB68290102010C02421C036 -S31540013800901460B89216E0E07FFFF8679414A12007 -S31540013810C20421C08208401380A0401502800005E1 -S31540013820131000857FFFB676901020101310008587 -S31540013830C02421C0921260C8901460B87FFFF85A24 -S315400138409414A120C20421C08208401380A04015CF -S3154001385002800005901460B87FFFB6699010201071 -S31540013860901460B8C02421C0921000087FFFF84E22 -S315400138709414A120C20421C08208401380A040159F -S3154001388002800004010000007FFFB65D9010201009 -S31540013890C02421C0901460B8921660F07FFFF842B0 -S315400138A09414A120C20421C08330600E82086003B3 -S315400138B080A06002228000051103C0007FFFB65040 -S315400138C0901020101103C0007FFFFA7E3B10008448 -S315400138D0A2176210C02421C0AA14A120A40460101A -S315400138E0A0102000A6046008B010200C920400131A -S315400138F0900400117FFFF82C94152120DA048010E2 -S3154001390098040012C2052120A004201880A340017A -S315400139101280000790102010DA032004C2056004CB -S3154001392080A3400122800005B0863FFF7FFFB63469 -S3154001393001000000B0863FFF1CBFFFEE920400135A -S31540013940C205A1C080A06000128009890100000063 -S315400139501110008490122348920220087FFFF8122A -S315400139609415212098176210C2052120DA032148B7 -S3154001397080A340011280000782152120DA03214CE1 -S31540013980C200600480A3400122800AAB031000807C -S315400139907FFFB61B901020101110008490122360F7 -S315400139A0920220087FFFF800941521209817621093 -S315400139B0C2052120DA03216080A34001128000075D -S315400139C082152120DA032164C200600480A34001EC -S315400139D002800AA41B0000707FFFB60990102010D8 -S315400139E01110008490122378920220087FFFF7EE8F -S315400139F09415212098176210C2052120DA032178F7 -S31540013A0080A340011280000782152120DA03217C20 -S31540013A10C200600480A3400102800A9C1B00007022 -S31540013A207FFFB5F790102010C025A1C011100000EE -S31540013A3092102000150FFC007FFFF8B2961020006F -S31540013A40030FFC0080A200011280000880A26000E2 -S31540013A501280000601000000C205A1C080A06000DE -S31540013A6002800005111000007FFFB5E5901020107F -S31540013A701110000092102000152FFC007FFFF8A1C5 -S31540013A80961020000310020080A200011280000857 -S31540013A9080A260001280000601000000C205A1C09C -S31540013AA080A0600002800005113000007FFFB5D480 -S31540013AB0901020101130000092102000150FFC00CC -S31540013AC07FFFF890961020000330020080A200018B -S31540013AD01280000880A260001280000601000000EA -S31540013AE0C205A1C080A0600002800005113000001F -S31540013AF07FFFB5C3901020101130000092102000B6 -S31540013B00152FFC007FFFF87F96102000032FFC0045 -S31540013B1080A200011280000880A260001280000687 -S31540013B2001000000C205A1C080A06000028000051E -S31540013B30111000007FFFB5B2901020101110000047 -S31540013B407FFFF87A130FE0000310100080A20001F6 -S31540013B501280000601000000C205A1C080A06000DD -S31540013B6002800005111000007FFFB5A590102010BE -S31540013B70111000007FFFF877130FE000030FE000FC -S31540013B8080A200011280000601000000C205A1C00A -S31540013B9080A0600022800005191000857FFFB5983E -S31540013BA09010201019100085921320E8C025A1C05D -S31540013BB09007BFF07FFFF78F9415212019100085DC -S31540013BC0C20320D8DA05212080A340018215212095 -S31540013BD012800007981320D8DA006004C20320043B -S31540013BE080A3400102800A461B0000707FFFB58416 -S31540013BF0901020111B100085921360D0C025A1C0E2 -S31540013C009007BFF07FFFF77B94152120C207BFE0E5 -S31540013C10DA05212080A34001128000078215212068 -S31540013C20DA006004C207BFE480A3400102800A3E75 -S31540013C30010000007FFFB572901020119007BFF080 -S31540013C409215E0C87FFFF76B94152120C205E0C8A5 -S31540013C50DA05212080A34001821521201280000728 -S31540013C609815E0C8DA006004C203200480A340012D -S31540013C7002800A32010000007FFFB56190102011D9 -S31540013C8003100085921060B89007BFF07FFFF75987 -S31540013C9094152120C20720B0DA05212080A34001D6 -S31540013CA08215212012800007981720B0DA0060049F -S31540013CB0C203200480A3400102800A251B00007034 -S31540013CC07FFFB54F901020119007BFF0921660F01C -S31540013CD07FFFF74894152120C205A1C01B00007043 -S31540013CE08208400D1900002080A0400C211001449B -S31540013CF002800004231000807FFFB54190102011FF -S31540013D0094142120C02461C09007BFE87FFFF73992 -S31540013D109207BFF0DA042120C207BFE880A3400121 -S31540013D201280000794142120DA02A004C207BFECD6 -S31540013D3080A3400102800A10010000007FFFB530D8 -S31540013D409010201119100085901320E89207BFE0CA -S31540013D507FFFF72894152120C20720B0DA052120DC -S31540013D6080A340018215212012800007981720B0B8 -S31540013D70DA006004C203200480A3400102800A03E2 -S31540013D801B0000707FFFB51E901020111B1000858F -S31540013D9003100085901360E8921060D0C025A1C041 -S31540013DA07FFFF7149415212019100085C20320E8DE -S31540013DB0DA05212080A340018215212012800007C7 -S31540013DC0981320E8DA006004C203200480A340016E -S31540013DD0028009F8010000007FFFB509901020110B -S31540013DE09007BFE89215E0C87FFFF702941521209E -S31540013DF0C205E0C8DA05212080A3400182152120B1 -S31540013E00128000079815E0C8DA006004C203200456 -S31540013E1080A34001028009EC010000007FFFB4F855 -S31540013E20901020071B100085921360B89007BFE8D9 -S31540013E307FFFF6F09415212025000070D805A1C01A -S31540013E409A14A01F03000010980B000D82106010F9 -S31540013E5080A3000121100144028000042310008048 -S31540013E607FFFB4E790102011C02461C09007BFE8DE -S31540013E70921660F07FFFF6DF94142120C20461C0E0 -S31540013E80820840121B00002080A0400D22800005C0 -S31540013E90031000857FFFB4DA9010201103100085CE -S31540013EA0901060D894142120C02461C07FFFF6D1C0 -S31540013EB09207BFF019100085C20320D8DA042120E9 -S31540013EC080A340019414212012800007821320D838 -S31540013ED0DA02A004C200600480A34001028008B84F -S31540013EE0010000007FFFB4C6901020111B10008511 -S31540013EF003100085901360D8921060E87FFFF6BDED -S31540013F009415212019100085C20320D0DA052120FD -S31540013F1080A340018215212012800007981320D0EA -S31540013F20DA006004C203200480A34001028008A98C -S31540013F30010000007FFFB4B2901020119016E0E01E -S31540013F40921000087FFFF6AB94152120C20720B0DE -S31540013F50DA05212080A34001821521201280000725 -S31540013F60981720B0DA006004C203200480A3400100 -S31540013F700280089D1B0000707FFFB4A190102011A4 -S31540013F80C025A1C09016E0E09215E0C87FFFF699E2 -S31540013F9094152120C205E0C8DA05212080A34001FD -S31540013FA082152120128000079815E0C8DA006004C6 -S31540013FB0C203200480A3400102800894010000004E -S31540013FC07FFFB48F901020111B100085921360B8AB -S31540013FD09016E0E07FFFF68794152120C20720B0B6 -S31540013FE0DA05212080A34001821521201280000795 -S31540013FF0981720B0DA006004C203200480A3400170 -S31540014000028008871B0000707FFFB47D901020114D -S31540014010C025A1C09016E0E0921660F07FFFF675CC -S3154001402094152120C205A1C01B0000708208400DD5 -S315400140301900002080A0400C23100080028000045B -S31540014040211001447FFFB46E901020119414212059 -S31540014050C02461C09015E0C87FFFF6669207BFF0A5 -S31540014060C205E0C8DA04212080A34001941421202E -S31540014070128000078215E0C8DA02A004C20060047B -S3154001408080A340010280086F010000007FFFB45CFD -S31540014090901020119015E0C89207BFE87FFFF655B2 -S315400140A094152120C205E0C8DA05212080A34001EC -S315400140B082152120128000079815E0C8DA006004B5 -S315400140C0C203200480A3400102800863010000006E -S315400140D07FFFB44B901020119015E0C89216E0E096 -S315400140E07FFFF64494152120C205E0C8DA05212058 -S315400140F080A3400182152120128000079815E0C84F -S31540014100DA006004C203200480A3400102800857FC -S31540014110010000007FFFB43A901020119015E0C8CD -S31540014120921000087FFFF63394152120C205E0C89E -S31540014130DA05212080A34001821521201280000743 -S315400141409815E0C8DA006004C203200480A3400148 -S31540014150028007F3010000007FFFB429901020116F -S3154001416003100085921060B89015E0C87FFFF621D4 -S3154001417094152120C20720B0DA05212080A34001F1 -S315400141808215212012800007981720B0DA006004BA -S31540014190C203200480A34001028007E61B00007091 -S315400141A07FFFB417901020119015E0C8921660F069 -S315400141B07FFFF61094152120C205A1C03100007081 -S315400141C0820840183B00002080A0401D2310014476 -S315400141D002800004211000807FFFB4099010201155 -S315400141E019100085901320B89207BFF07FFFF601A2 -S315400141F094146120C20421C0AA16201F3500001064 -S3154001420082084015A616A01080A040130280000423 -S31540014210251000857FFFB3FA90102011C02421C0DC -S315400142209014A0B89207BFE87FFFF5F2941461207D -S31540014230C20421C08208401580A0401302800004B8 -S31540014240010000007FFFB3EE90102011C02421C071 -S315400142509014A0B89216E0E07FFFF5E69414612031 -S31540014260C20421C08208401580A040130280000587 -S31540014270131000857FFFB3E29010201113100085C3 -S31540014280C02421C0921260C89014A0B87FFFF5D90E -S3154001429094146120C20421C08208401580A04013B5 -S315400142A0028000059014A0B87FFFB3D5901020116D -S315400142B09014A0B8C02421C0921000087FFFF5CD0C -S315400142C094146120C20421C08208401580A0401385 -S315400142D002800005131000857FFFB3C9901020119D -S315400142E013100085C02421C09014A0B8921260F02A -S315400142F07FFFF5C094146120C20421C08208401892 -S3154001430080A0401D2280000515203E837FFFB3BC5F -S315400143109010201115203E83170021C89412A3FF47 -S315400143209612E3A1191FC0001B00C0009A1360B08A -S3154001433098132102D43FBFD0D83FBFD8C02421C053 -S315400143409007BFD89207BFD07FFFF5AA9407BFC891 -S31540014350DA07BFC8033FFC0080A340010280070B78 -S31540014360A207BFC87FFFB3A6901020111510868300 -S31540014370170021C89412A3FF9612E3A11900400029 -S315400143801B00C0009A1360B098132102D43FBFD0DE -S31540014390D83FBFD8C025A1C09007BFD89207BFD08C -S315400143A07FFFF5949407BFC8DA046004C207BFC80B -S315400143B08090400D1280000A1B000070C205A1C00A -S315400143C09A13601F190000108208400D98132004AB -S315400143D080A0400C22800005150FFC007FFFB388AA -S315400143E090102011150FFC00170281D89412A0409D -S315400143F09612E10C9A102010190006AFD43FBFD097 -S31540014400D83FBFD8C025A1C09007BFD89207BFD01B -S315400144107FFFF5789407BFC8030006AEDA07BFC829 -S315400144208210639580A340011280000703003A9AE7 -S31540014430DA0460048210630F80A3400102800733CF -S31540014440010000007FFFB36E90102011150FFFFF92 -S31540014450170281D89412A3409612E10C9A102010AB -S31540014460190006AFD43FBFD0D83FBFD8C025A1C0A1 -S315400144709007BFD89207BFD07FFFF55E9407BFC8AC -S31540014480DA046004C207BFC88090400D1280000A5A -S315400144901B000070C205A1C09A13601F19000010CD -S315400144A08208400D9813200480A0400C028000042D -S315400144B0010000007FFFB35290102011C025A1C01A -S315400144C0111088007FFFF63713100100031066C9EB -S315400144D0821062CA80A2000112800006010000001B -S315400144E0C205A1C080A06000028000051111BBFE7B -S315400144F07FFFB343901020111111BBFE901223FF91 -S315400145007FFFF628130C7040031527CA8210611EDF -S3154001451080A200011280000601000000C205A1C070 -S3154001452080A06000028000051310C7FF7FFFB334EF -S31540014530901020111310C7FF921263FC7FFFF619EA -S31540014540111E607E031D73FC8210633880A2000138 -S315400145501280000601000000C205A1C080A06000D3 -S3154001456002800005130FE0007FFFB3259010201154 -S31540014570130FE000921260017FFFF60A110020003E -S3154001458080A220001280000A1B000070C205A1C053 -S315400145909A13601F190000108208400D98132004D9 -S315400145A080A0400C02800005110FE0007FFFB3148C -S315400145B090102011110FE000C025A1C07FFFF5F931 -S315400145C092100008030FE00080A20001128000064D -S315400145D001000000C205A1C080A060000280000564 -S315400145E0130FE0007FFFB30690102011130FE00078 -S315400145F0921260017FFFF5EB1100200080A220009E -S315400146001280000A1B000070C205A1C09A13601FE8 -S31540014610190000108208400D9813200480A0400C18 -S31540014620028000051B1000857FFFB2F59010201116 -S315400146301B100085921360E8C025A1C09007BFF00A -S315400146407FFFF4DE9415212019100085C20320E86E -S31540014650DA05212080A3400182152120128000071E -S31540014660981320E8DA006004C203200480A34001C5 -S31540014670028006BA010000007FFFB2E190102012CD -S315400146801B100085921360D09007BFF07FFFF4CBDB -S315400146909415212019100085C20320D0DA05212066 -S315400146A080A340018215212012800007981320D053 -S315400146B0DA006004C203200480A34001028006ACF4 -S315400146C0010000007FFFB2CE901020129007BFF08C -S315400146D09215E0C87FFFF4B994152120C205E0C8C0 -S315400146E0DA05212080A3400182152120128000078E -S315400146F09815E0C8DA006004C203200480A3400193 -S31540014700028006A0010000007FFFB2BD901020127A -S315400147101B100085921360B89007BFF07FFFF4A786 -S3154001472094152120C20720B0DA05212080A340013B -S315400147308215212012800007981720B0DA00600404 -S31540014740C203200480A34001028006931B0000702F -S315400147507FFFB2AB901020129007BFF0921660F027 -S315400147607FFFF49694152120C205A1C01B0000705D -S315400147708208400D1900002080A0400C2110014400 -S3154001478002800004231000807FFFB29D901020120A -S3154001479094142120C02461C09007BFE87FFFF487AD -S315400147A09207BFF0DA042120C207BFE880A3400187 -S315400147B01280000794142120DA02A004C207BFEC3C -S315400147C080A34001028006DE010000007FFFB28C1B -S315400147D0901020120310008519100085901060E892 -S315400147E0921320D87FFFF47594152120C20720B07B -S315400147F0DA05212080A3400182152120128000077D -S31540014800981720B0DA006004C203200480A3400157 -S31540014810028006D01B0000707FFFB27990102012F3 -S31540014820C025A1C09007BFE89215E0C87FFFF46399 -S3154001483094152120C205E0C8DA05212080A3400154 -S3154001484082152120128000079815E0C8DA0060041D -S31540014850C203200480A34001028006C70100000074 -S315400148607FFFB267901024991B100085921360B8A0 -S315400148709007BFE87FFFF45194152120C20720B06D -S31540014880DA05212080A340018215212012800007EC -S31540014890981720B0DA006004C203200480A34001C7 -S315400148A0028006BA1B0000707FFFB255901020129D -S315400148B09007BFE8921660F07FFFF44094152120DF -S315400148C0C205A1C01B0000708208400D19000020DE -S315400148D080A0400C21100144028000042310008076 -S315400148E07FFFB2479010201294142120C02461C04A -S315400148F09016E0E07FFFF4319207BFF0C206E0E098 -S31540014900DA04212080A3400194142120128000075B -S315400149108216E0E0DA02A004C200600480A34001EE -S31540014920028006A4010000007FFFB23590102012DC -S315400149309016E0E09207BFE87FFFF420941521200E -S31540014940C20720B0DA05212080A34001821521202B -S3154001495012800007981720B0DA006004C2032004D1 -S3154001496080A34001028006981B0000707FFFB2249D -S3154001497090102012C025A1C09016E0E09215E0C823 -S315400149807FFFF40E94152120C205E0C8DA052120E7 -S3154001499080A3400182152120128000079815E0C8A6 -S315400149A0DA006004C203200480A340010280068F1E -S315400149B0010000007FFFB212901020120310008503 -S315400149C0921060B89016E0E07FFFF3FC9415212029 -S315400149D0C20720B0DA05212080A34001821521209B -S315400149E012800007981720B0DA006004C203200441 -S315400149F080A34001028006821B0000707FFFB20047 -S31540014A00901020129016E0E0921660F07FFFF3EBD3 -S31540014A1094152120C205A1C01B0000708208400DDB -S31540014A201900002080A0400C21100144028000049E -S31540014A30231000807FFFB1F29010201294142120A0 -S31540014A40C02461C09015E0C87FFFF3DC9207BFF038 -S31540014A50C205E0C8DA04212080A340019414212034 -S31540014A60128000078215E0C8DA02A004C200600481 -S31540014A7080A340010280061E010000007FFFB1E0D5 -S31540014A80901020129015E0C89207BFE87FFFF3CB44 -S31540014A9094152120C205E0C8DA05212080A34001F2 -S31540014AA082152120128000079815E0C8DA006004BB -S31540014AB0C203200480A340010280061201000000C7 -S31540014AC07FFFB1CF901020129015E0C89216E0E01A -S31540014AD07FFFF3BA94152120C205E0C8DA052120EB -S31540014AE080A3400182152120128000079815E0C855 -S31540014AF0DA006004C203200480A340010280060656 -S31540014B00010000007FFFB1BE901020129015E0C851 -S31540014B10921000087FFFF3A994152120C205E0C831 -S31540014B20DA05212080A34001821521201280000749 -S31540014B309815E0C8DA006004C203200480A340014E -S31540014B40028005FA010000007FFFB1AD90102012EE -S31540014B50191000859015E0C8921320B87FFFF3978E -S31540014B609415212003000070A610601FDA05A1C02C -S31540014B70030000109A0B4013AA10601080A3401541 -S31540014B802510008523100144028000042110008075 -S31540014B907FFFB19B90102012C02421C09014A0B871 -S31540014BA09207BFF07FFFF38594146120C20421C0B0 -S31540014BB08208401380A040150280000401000000D5 -S31540014BC07FFFB18F90102012C02421C09014A0B84D -S31540014BD09207BFE87FFFF37994146120C20421C094 -S31540014BE08208401380A040150280000401000000A5 -S31540014BF07FFFB18390102012C02421C09014A0B829 -S31540014C009216E0E07FFFF36D94146120C20421C047 -S31540014C108208401380A040150280000513100085CC -S31540014C207FFFB1779010201213100085C02421C058 -S31540014C30921260C89014A0B87FFFF360941461206B -S31540014C40C20421C08208401380A04015028000059D -S31540014C509014A0B87FFFB16A901020129014A0B8AA -S31540014C60C02421C0921000087FFFF35494146120A0 -S31540014C70C20421C08208401380A04015028000046E -S31540014C80010000007FFFB15E90102012C02421C0B8 -S31540014C909014A0B8921660F07FFFF34894146120F7 -S31540014CA0C20421C08330600E8208600380A0600286 -S31540014CB0228000051103C0007FFFB15190102012E0 -S31540014CC01103C0007FFFF57F3B100084A41763905A -S31540014CD0AA146120C02421C0A604A008A210200065 -S31540014CE0B0102005A00440129204401394152120CF -S31540014CF07FFFF33290100010DA042010C205212004 -S31540014D00A204601880A3400112800007901020126F -S31540014D10DA042014C205600480A3400102800474B1 -S31540014D20010000007FFFB13601000000B0863FFF61 -S31540014D303CBFFFEEA00440121110008590122020C6 -S31540014D40920220087FFFF31D941521209817639046 -S31540014D50C2052120DA0320A080A34001128000076A -S31540014D6082152120DA0320A4C200600480A34001F9 -S31540014D70028004DC1B0000707FFFB12190102012DD -S31540014D801110008590122038C025A1C0920220083A -S31540014D907FFFF30A9415212098176390C2052120BD -S31540014DA0DA0320B880A34001128000078215212032 -S31540014DB0DA0320BCC200600480A340010280047F64 -S31540014DC01B0000707FFFB10E90102012111000855C -S31540014DD090122050C025A1C0920220087FFFF2F711 -S31540014DE09415212098176390C2052120DA0320D01B -S31540014DF080A340011280000782152120DA0320D4C6 -S31540014E00C200600480A34001028004761B0000704A -S31540014E107FFFB0FB90102012111000859012206880 -S31540014E20C025A1C0920220087FFFF2E494152120FB -S31540014E3098176390C2052120DA0320E880A3400138 -S31540014E401280000782152120DA0320ECC20060049B -S31540014E5080A340010280046D1B0000707FFFB0E813 -S31540014E60901020121110008590122080C025A1C0FB -S31540014E70920220087FFFF2D1941521209817639062 -S31540014E80C2052120DA03210080A3400112800007D8 -S31540014E9082152120DA032104C200600480A3400167 -S31540014EA0028004641B0000707FFFB0D59010201271 -S31540014EB0C025A1C0111010007FFFF3B013100000F0 -S31540014EC00310300080A2000112800006010000009C -S31540014ED0C205A1C080A0600002800005111FE0004C -S31540014EE07FFFB0C790102012111FE0001310000081 -S31540014EF07FFFF2B794152120031FFC00DA0521201C -S31540014F0080A340011280000A82152120C20060045C -S31540014F1080A060001280000601000000C205A1C009 -S31540014F2080A0600002800005111FE0007FFFB0B441 -S31540014F309010201B111FE000133000007FFFF2A4E8 -S31540014F4094152120033FFC00DA05212080A340016E -S31540014F501280000A82152120C200600480A06000F0 -S31540014F601280000601000000C205A1C080A06000B9 -S31540014F7002800005111000007FFFB0A19010201C97 -S31540014F8011100000921020107FFFF29194152120FC -S31540014F90C205A1C01B0000708208400D1900002007 -S31540014FA080A0400C2110014402800004231000809F -S31540014FB07FFFB0939010201D94142120C02461C01E -S31540014FC0110020007FFFF282130FC000DA04212076 -S31540014FD0030E000080A340011280000A9414212090 -S31540014FE0C202A00480A060001280000601000000F9 -S31540014FF0C20461C080A0600002800005111FDFFF6E -S315400150007FFFB07F9010201E111FDFFF901223FFFC -S31540015010131000007FFFF26E941521200311FFFF4C -S31540015020821063FFDA05212080A340011280000728 -S3154001503082152120DA0060040338000080A3400174 -S3154001504002800405010000007FFFB06D9010201F13 -S31540015050111FD000130FF0007FFFF25D9415212040 -S315400150600311FC80DA05212080A340011280000A49 -S3154001507082152120C200600480A0600012800006D3 -S3154001508001000000C205A1C080A0600002800005A9 -S31540015090111FDFFF7FFFB05A90102021111FDFFF44 -S315400150A0901223FF921000087FFFF24994152120A8 -S315400150B00313FBFF821063FFDA05212080A3400121 -S315400150C01280000882152120DA00600403300000B6 -S315400150D08210602080A34001028003E401000000A9 -S315400150E07FFFB047901020207FFFF4761103C00068 -S315400150F0C025A1C09007BFE07FFFF2449215212051 -S31540015100C207BFE0DA05212080A3400112800007D3 -S3154001511082152120DA006004C207BFE480A3400162 -S31540015120028003D7010000007FFFB03590102013A5 -S315400151301B100085901360E87FFFF2349215212001 -S3154001514003100085DA0060E8C205212080A0400DE9 -S31540015150191000858215212012800007901320E83E -S31540015160DA006004C202200480A34001028003C920 -S31540015170010000007FFFB022901020131B10008514 -S31540015180901360D07FFFF2219215212019100085DE -S31540015190C20320D0DA05212080A3400182152120B7 -S315400151A012800007981320D0DA006004C20320045D -S315400151B080A34001028003BC010000007FFFB010C4 -S315400151C0901020131B100085901360D87FFFF20FBB -S315400151D092152120C20720B0DA05212080A3400183 -S315400151E08215212012800007981720B0DA0060044A -S315400151F0C203200480A34001028003B01B0000705B -S315400152007FFFAFFF9010201303100085901060B808 -S31540015210C025A1C07FFFF1FD92152120C20720B014 -S31540015220DA05212080A34001821521201280000742 -S31540015230981720B0DA006004C203200480A340011D -S315400152400280040F1B0000707FFFAFED901020130A -S31540015250C025A1C09015E0C87FFFF1EC9215212031 -S31540015260C2052120DA05E0C880A0400D8215212023 -S31540015270128000079015E0C8DA006004C2022004DB -S3154001528080A3400102800407010000007FFFAFDCDC -S3154001529090102013170C00089A10200019100C00CA -S315400152A015300F789612E001D83FBFF0D43FBFC00A -S315400152B09007BFF07FFFF1D592152120031004001E -S315400152C0DA05212080A340011280000A821521209F -S315400152D0C200600480A06000128000060100000048 -S315400152E0C205A1C080A06000028000059007BFC032 -S315400152F07FFFAFC3901020139007BFC07FFFF1C35C -S3154001530092152120C2052120DA0720B080A0400D48 -S315400153108215212012800007981720B0DA00600418 -S31540015320C203200480A34001028003E31B000070F6 -S315400153307FFFAFB390102013901660F07FFFF1B35B -S3154001534092152120C205A1C08330600E82086003F8 -S3154001535080A0600202800004211000807FFFAFA878 -S3154001536090102013C02421C07FFFF2981111F20042 -S315400153700310E80080A2000112800006010000002F -S31540015380C20421C080A06000028000040100000028 -S315400153907FFFAF9B901020137FFFF3CA11100000CF -S315400153A01101F5897FFFF289901221E20308E96430 -S315400153B080A200011280000601000000C205A1C0C2 -S315400153C080A0600002800004010000007FFFAF8CD6 -S315400153D0901020237FFFF27D1112A2080311410094 -S315400153E080A200011280000601000000C205A1C092 -S315400153F080A0600002800004010000007FFFAF80B2 -S31540015400901020237FFFF3AF110010009007BFF0EB -S31540015410921660F07FFFF1649415212003100C0071 -S31540015420DA05212080A340011280000A821521203D -S31540015430C200600480A060001280000601000000E6 -S31540015440C205A1C080A0600002800005901660F0F0 -S315400154507FFFAF6B90102014901660F09207BFC08B -S315400154607FFFF1569415212003200000DA05212003 -S3154001547080A340011280000A82152120C2006004E7 -S3154001548080A060001280000601000000C205A1C094 -S3154001549080A0600002800004010000007FFFAF5839 -S315400154A0901020147FFFF19190102001030FE0002E -S315400154B080A200011280000601000000C205A1C0C1 -S315400154C080A0600002800004010000007FFFAF4C15 -S315400154D0901020147FFFF17D90102001030FFC00F6 -S315400154E080A200011280000880A26000128000069E -S315400154F001000000C205A1C080A060000280000436 -S31540015500010000007FFFAF3E901020147FFFF36D36 -S315400155101110100019100085D41B20D07FFFF1F91E -S31540015520D01E60F003100085D03D2120DA0060D8FE -S31540015530C205212080A0400D191000858215212029 -S3154001554012800007901320D8DA006004C2022004BA -S3154001555080A3400102800361010000007FFFAF2864 -S31540015560901020227FFFF35711100000170400808E -S31540015570150F28009612E0F09A102000190FFC0032 -S31540015580D43FBFC0D83FBFF09007BFF09207BFC01E -S315400155907FFFF10594152120030FFC00DA05212038 -S315400155A080A340011280000682152120C2006004BA -S315400155B080A0600002800004010000007FFFAF1060 -S315400155C0901020157FFFF33F112000001700004087 -S315400155D0150014009612E0019A102000190FFC00E4 -S315400155E0D43FBFC0D83FBFF09007BFF09207BFC0BE -S315400155F07FFFF0ED94152120030FFC00DA052120F1 -S3154001560080A340011280000682152120C200600459 -S3154001561080A0600102800004010000007FFFAEF817 -S31540015620901020157FFFF32711300000170000402E -S31540015630152014009612E0019A102000192FFC0043 -S31540015640D43FBFC0D83FBFF09007BFF09207BFC05D -S315400156507FFFF0D594152120032FFC00DA05212088 -S3154001566080A340011280000682152120C2006004F9 -S3154001567080A0600102800004010000007FFFAEE0CF -S31540015680901020157FFFF30F11100000190FFC0039 -S315400156909A102000D83FBFF09007BFF09216E0E085 -S315400156A07FFFF0C194152120C206E0E0DA052120F2 -S315400156B080A3400182152120128000079816E0E060 -S315400156C0DA006004C203200480A340010280000482 -S315400156D0010000007FFFAECA901020157FFFF2F94E -S315400156E01120000017000040150014009612E00139 -S315400156F0190FFC009A102000D43FBFC0D83FBFF01D -S315400157009007BFF09216E0E07FFFF0A794152120A5 -S31540015710C206E0E0DA05212080A34001821521205E -S31540015720128000079816E0E0DA006004C203200404 -S3154001573080A3400102800004010000007FFFAEB05B -S31540015740901020157FFFF2DF113000001700004056 -S31540015750152014009612E0019A102000192FFC0022 -S31540015760D43FBFC0D83FBFF09007BFF09216E0E0EC -S315400157707FFFF08D94152120C2052120DA06E0E055 -S3154001578080A0400D82152120128000079016E0E08E -S31540015790DA006004C202200480A3400102800004B2 -S315400157A0010000007FFFAE96901020157FFFF2C5E5 -S315400157B01110000015100000961020019A102001CA -S315400157C0190FFC00D43FBFC0D83FBFF09007BFF0D0 -S315400157D09207BFC07FFFF079941521200310000086 -S315400157E0DA05212080A3400112800006821521207E -S315400157F0C200600480A06002028000040100000033 -S315400158007FFFAE7F901020157FFFF2AE1120000082 -S315400158109007BFF09207BFC07FFFF0689415212023 -S3154001582003100000DA05212080A340011280000602 -S3154001583082152120C200600480A06003028000041A -S31540015840010000007FFFAE6E901020157FFFF29D94 -S31540015850113000009A102001192FFC00D83FBFF0EB -S315400158609007BFF09207BFC07FFFF05494152120E7 -S3154001587003300000DA05212080A340011280000692 -S3154001588082152120C200600480A0600302800004CA -S31540015890010000007FFFAE5A901020157FFFF2896C -S315400158A011100000150FFC04172F26159412A01293 -S315400158B09612E231190FFEAE1B1CD2E89A13601103 -S315400158C098132154D43FBFC0D83FBFF09007BFF0D3 -S315400158D09207BFC07FFFF04794152120030FFEA713 -S315400158E082106296DA05212080A3400112800008C9 -S315400158F082152120DA006004032C1B348210602FAC -S3154001590080A3400102800004010000007FFFAE3CFD -S31540015910901020157FFFF26B112000009007BFF019 -S315400159209207BFC07FFFF03394152120030FFEA7D6 -S3154001593082106296DA05212080A340011280000878 -S3154001594082152120DA006004032C1B34821060305A -S3154001595080A3400102800004010000007FFFAE28C1 -S31540015960901020157FFFF25711300000192FFC04CB -S315400159701B2F26159A13623198132012D83FBFC0A8 -S315400159809007BFF09207BFC07FFFF01A9415212000 -S31540015990032FFEA782106296DA05212080A34001DB -S315400159A01280000882152120DA006004032C1B3482 -S315400159B08210603080A34001028000040100000093 -S315400159C07FFFAE0F901020157FFFF23E11100000B1 -S315400159D015101000961020009A102000191038005A -S315400159E0D43FBFC0D83FBFF09007BFF09207BFC0BA -S315400159F07FFFF0009415212003102400DA052120B1 -S31540015A0080A340011280000682152120C200600455 -S31540015A1080A0600002800004010000007FFFADF815 -S31540015A20901020157FFFF227112000009007BFF04C -S31540015A309207BFC07FFFEFEF94152120031024008A -S31540015A40DA05212080A3400112800006821521201B -S31540015A50C200600480A060000280000401000000D2 -S31540015A607FFFADE7901020157FFFF2161130000041 -S31540015A709007BFF09207BFC07FFFEFDE941521204C -S31540015A8003102400DA05212080A34001128000067C -S31540015A9082152120C200600480A0600002800004BB -S31540015AA0010000007FFFADD6901020157FFFF20563 -S31540015AB011100000210FE000110020007FFFF0B916 -S31540015AC09214200180A220001280012301000000CF -S31540015AD07FFFF1FC11200000110020007FFFF0B193 -S31540015AE09214200180A220001280011801000000BA -S31540015AF07FFFF1F411300000921420017FFFF0A9DD -S31540015B001100200080A220001280010D010000003A -S31540015B107FFFF1EC111000009A102000190FFC00D4 -S31540015B20D83FBFF09007BFF07FFFEFB89215212015 -S31540015B30C207BFF0DA05212080A340011280000789 -S31540015B4082152120DA006004C207BFF480A3400118 -S31540015B50028002A7010000007FFFADA99010201529 -S31540015B607FFFF1D8112000009007BFF07FFFEFA71C -S31540015B7092152120C207BFF0DA05212080A34001FA -S31540015B801280000782152120DA006004C207BFF4A3 -S31540015B9080A340010280029B010000007FFFAD9877 -S31540015BA0901020157FFFF1C7113000009007BFF01C -S31540015BB07FFFEF9692152120C207BFF0DA0521201B -S31540015BC080A340011280000782152120DA0060047B -S31540015BD0C207BFF480A340010280028F010000008A -S31540015BE07FFFAD87901020157FFFF1B611100000A1 -S31540015BF0030FDFFF901063FF7FFFF074A0100008D2 -S31540015C0080A2001002800004010000007FFFAD7CED -S31540015C10901020157FFFF1AB112000007FFFF06B44 -S31540015C2090100010030FE00080A2000102800004E2 -S31540015C30010000007FFFAD72901020157FFFF1A19A -S31540015C40113000007FFFF0619010001080A200101B -S31540015C5002800004010000007FFFAD69901020150D -S31540015C607FFFF198901020007FFFF0609015212072 -S31540015C70032FFE00DA05212080A340011280000691 -S31540015C8082152120C200600480A0600002800005C8 -S31540015C90211001447FFFAD5A901020162110014476 -S31540015CA07FFFF05C90142128DA042128032FF000AD -S31540015CB080A3400102800004A21421287FFFAD5039 -S31540015CC0901020167FFFF05D90100011DA04212814 -S31540015CD0030FE00080A340010280000401000000A0 -S31540015CE07FFFAD47901020167FFFF064901521206D -S31540015CF0030FFBF7821063F0DA05212080A34001F0 -S31540015D001280000882152120DA0060040303FF1285 -S31540015D108210604A80A3400102800005921660F01D -S31540015D207FFFAD3790102016921660F09007BFF0B6 -S31540015D307FFFEF3094152120C205A1C08330600E4C -S31540015D408208600780A060020280000519100046A3 -S31540015D507FFFAD2B901020171910004617100080B9 -S31540015D60DA02E1C8821321F880A0400DE00321F850 -S31540015D7002800004A212E1C87FFFAD2190102018D5 -S31540015D80C204600480A040100280000401000000AB -S31540015D907FFFAD1B90102018C204600880A06000F0 -S31540015DA01280007701000000C204600C80A06000F0 -S31540015DB01280006C010000007FFFEEE6010000004A -S31540015DC080A220010280019801000000190C40299F -S31540015DD01B23CD1B9A13609B981320069410200019 -S31540015DE096102000D83FBFF0D43FBFC07FFFEF2FB2 -S31540015DF09007BFF003100083A21062101B100081B0 -S31540015E0003100144A0136210A4106120B0102000B9 -S31540015E10832E2002DA044001DA27BFC09007BFC0B3 -S31540015E207FFFEF25921521209B2E2003D804000DDC -S31540015E30C2052120B00620019603401080A300012F -S31540015E401280000790102019DA02E004C204A0046F -S31540015E5080A340010280000580A620FF7FFFACE8B9 -S31540015E600100000080A620FF04BFFFEB832E200225 -S31540015E7003100083A41062101B100080031001441C -S31540015E80A2136210A6106120B0102000A12E20029C -S31540015E90C2048010C227BFC0921521207FFFEEDBCE -S31540015EA09007BFC0DA044010C2052120B006200287 -S31540015EB09804001180A34001128000079010201A17 -S31540015EC0DA032004C204E00480A3400102800005F5 -S31540015ED080A620FF7FFFACCA0100000080A620FFFC -S31540015EE024BFFFECA12E200230800211C205A1C0C1 -S31540015EF080A0600022BFFB8FB0863FFF30BFFB8A88 -S31540015F00C205A1C080A0600002BFF14501000000AA -S31540015F1030BFF141C205A1C080A0600002BFF13689 -S31540015F200100000030BFF132C205A1C080A060006F -S31540015F3002BFF1270100000030BFF1237FFFACB063 -S31540015F409010201530BFFEF37FFFACAD90102015A9 -S31540015F5030BFFEE87FFFACAA9010201530BFFEDDB2 -S31540015F607FFFACA79010201830BFFF947FFFACA4F1 -S31540015F709010201010BFF678111000847FFFACA05E -S31540015F809010201830BFFF89C207BFCC80A06000A7 -S31540015F9012BFF8F501000000C20421C08208401575 -S31540015FA09A16A00880A0400D12BFF8EF010000002C -S31540015FB010BFF8F015108683C205A1C09A13601F61 -S31540015FC0190000108208400D9813200880A0400C4B -S31540015FD012BFFB7D1110008510BFFB7F9012205030 -S31540015FE0C205A1C09A13601F190000108208400D16 -S31540015FF09813200880A0400C12BFFB861110008523 -S3154001600010BFFB8890122068C205A1C09A13601F79 -S31540016010190000108208400D9813200480A0400CFE -S3154001602012BFFB8F1110008510BFFB91901220808B -S31540016030C205A1C09A13601F190000108208400DC5 -S315400160409813200880A0400C12BFFB980100000065 -S3154001605030BFFB98C205A1C080A0600002BFFBFE15 -S31540016060111FD00030BFFBF9C205A1C080A060005E -S3154001607002BFFC1E0100000030BFFC1AC205A1C0D0 -S3154001608080A0600002BFFC2C1B10008530BFFC279E -S31540016090C205A1C080A0600002BFFC3A1B1000856A -S315400160A030BFFC35C205A1C080A0600002BFFC47DD -S315400160B01B10008530BFFC42C205A1C09A13601F68 -S315400160C0190000108208400D9813201080A0400C42 -S315400160D012BFFC4C0310008510BFFC4E901060B8F7 -S315400160E0C205A1C09A13601F190000108208400D15 -S315400160F09813200480A0400C12BFFB20111000858C -S3154001610010BFFB2290122038C205A1C080A06000BA -S3154001611022BFF8D0150FFFFF30BFF8CBC205A1C093 -S3154001612080A0600002BFF8100310008530BFF80B55 -S31540016130C205A1C09A13601F190000108208400DC4 -S315400161409813201080A0400C12BFF8169015E0C895 -S3154001615010BFF818921660F0C205A1C080A0600079 -S3154001616002BFF9491B10008530BFF944C205A1C0E1 -S3154001617080A0600002BFF9579007BFF030BFF952C7 -S31540016180C205A1C080A0600002BFF9631B10008553 -S3154001619030BFF95EC205A1C09A13601F19000010F5 -S315400161A08208400D9813201080A0400C12BFF96957 -S315400161B09007BFF010BFF96B921660F0C20461C040 -S315400161C080A0600002BFF74B1B10008530BFF74629 -S315400161D0C205A1C080A0600002BFF75A9016E0E058 -S315400161E030BFF755C205A1C09A13601F19000010B0 -S315400161F08208400D9813201080A0400C12BFF75F13 -S315400162000100000030BFF75FC205A1C080A0600059 -S3154001621002BFF76F1B10008530BFF76AC205A1C0E8 -S315400162209A13601F190000108208400D9813201020 -S3154001623080A0400C12BFF7750100000030BFF77512 -S31540016240C20461C080A0600002BFF7949015E0C807 -S3154001625030BFF78FC205A1C080A0600002BFF7A082 -S315400162609015E0C830BFF79BC205A1C080A0600071 -S3154001627002BFF7AC9015E0C830BFF7A7C205A1C071 -S315400162809A13601F190000108208400D98132010C0 -S3154001629080A0400C12BFFBED0100000030BFFBEDBA -S315400162A0C205A1C080A0600002BFFBFC170C00081C -S315400162B030BFFBF7C205A1C09A13601F1900001039 -S315400162C08208400D9813201080A0400C12BFFC1983 -S315400162D0901660F030BFFC1AC205A1C080A06000D4 -S315400162E002BFFCA10100000030BFFC9DC20461C099 -S315400162F080A0600002BFF9E59015E0C830BFF9E023 -S31540016300C205A1C080A0600002BFF9F19015E0C8A6 -S3154001631030BFF9ECC205A1C080A0600002BFF9FD03 -S315400163209015E0C830BFF9F8C205A1C080A0600051 -S3154001633002BFFA091910008530BFFA04C20461C0D0 -S3154001634080A0600002BFF9250310008530BFF92007 -S31540016350C205A1C09A13601F190000108208400DA2 -S315400163609813201080A0400C12BFF92C01000000A8 -S3154001637030BFF92CC205A1C080A0600002BFF93C24 -S315400163801B10008530BFF937C205A1C09A13601FA3 -S31540016390190000108208400D9813201080A0400C6F -S315400163A012BFF9429007BFE810BFF944921660F058 -S315400163B0C20461C080A0600002BFF95F9016E0E0B0 -S315400163C030BFF95AC205A1C09A13601F19000010C7 -S315400163D08208400D9813201080A0400C12BFF9642A -S315400163E00100000030BFF964C205A1C080A0600071 -S315400163F002BFF9740310008530BFF96FC205A1C011 -S315400164009A13601F190000108208400D981320103E -S3154001641080A0400C12BFF97A9016E0E010BFF97CDB -S31540016420921660F07FFFAB769010201910BFFE697F -S31540016430190C4029D80061C01B0000709A13601FD7 -S3154001644003000010980B000D8210600880A3000124 -S3154001645012BFF5501110008410BFF55290122360FF -S31540016460C205A1C09A13601F190000108208400D91 -S315400164709813200480A0400C12BFF55811100084D7 -S3154001648010BFF55A90122378C205A1C09A13601F16 -S31540016490190000108208400D9813200480A0400C7A -S315400164A012BFF5600100000030BFF560C205A1C012 -S315400164B080A0600002BFF4A90310008530BFF4A498 -S315400164C0C205A1C080A0600002BFF4939015E0C848 -S315400164D030BFF48EC205A1C080A0600002BFF47D2A -S315400164E09015E0C830BFF478C20461C080A0600056 -S315400164F002BFF4679015E0C830BFF462C205A1C07F -S315400165009A13601F190000108208400D981320024B -S3154001651080A0400C12BFF5B61B10008510BFF5B820 -S31540016520921360D0C205A1C080A0600002BFF5C52C -S315400165309007BFF030BFF5C0C205A1C080A0600082 -S3154001654002BFF5D10310008530BFF5CCC205A1C00D -S315400165509A13601F190000108208400D98132010ED -S3154001656080A0400C12BFF5D79007BFF010BFF5D9F8 -S31540016570921660F0C20461C080A0600022BFF5F3AC -S315400165801910008530BFF5EEC205A1C09A13601FF0 -S31540016590190000108208400D9813201080A0400C6D -S315400165A012BFF5F91B10008510BFF5FB03100085DE -S315400165B0C205A1C080A0600002BFF60B9007BFE8EC -S315400165C030BFF606C205A1C080A0600002BFF61723 -S315400165D01B10008530BFF612C20421C080A06000A6 -S315400165E022BFF03E113C02AF30BFF039C205A1C017 -S315400165F080A0600002BFFD5B0100000030BFFD5777 -S31540016600C205A1C080A0600002BFFD670100000075 -S3154001661030BFFD63C205A1C080A0600002BFFD730B -S315400166200100000030BFFD6FC205A1C080A060001F -S3154001663002BFF2D70310008530BFF2D2C205A1C016 -S3154001664080A0600002BFF2C19007BFF030BFF2BC2C -S31540016650C205A1C080A0600002BFF2AA3710008522 -S3154001666030BFF2A5C205A1C080A0600002BFF028DC -S315400166701111FC0030BFF023C205A1C09A13601F5F -S31540016680190000108208400D9813201080A0400C7C -S3154001669012BFF3DD9016E0E010BFF3DF921660F013 -S315400166A0C205A1C080A0600002BFF39E1B100085F9 -S315400166B030BFF399C205A1C080A0600002BFF38636 -S315400166C01B10008530BFF381C205A1C080A06000C8 -S315400166D002BFF36E1B10008530BFF369C20461C06F -S315400166E080A0600002BFF3589016E0E030BFF3533C -S315400166F0C205A1C080A0600002BFF30E191000853B -S3154001670030BFF309C205A1C080A0600002BFF2F804 -S315400167109007BFE830BFF2F3C20461C080A06000B9 -S3154001672002BFF2E29007BFE830BFF2DD81C7E00861 -S3154001673081E80000D27A000081C3E0080100000030 -S3154001674081C3E008900A20209332600492126001CE -S315400167508213C0007FFFFFF89E1040000100000039 -S3154001676081D8200081C3E008010000009DE3BF9865 -S315400167707FFFFFFC0100000082102400C0A04300FF -S3154001678081C7E00881E80000833220189A1000088A -S315400167908088600F028000049010200083336010CF -S315400167A09008600381C3E008010000009DE3BF98A3 -S315400167B0031000C01B1000C1B0106000A21360009E -S315400167C0031000C21B1000C2A4106000A613610092 -S315400167D0031000201B100020A8106168AA13600056 -S315400167E07FFFEBAD9010200C808A2008028001FECD -S315400167F0010000007FFFAA7D9010200ED08003206B -S315400168007FFFFFE2010000000310014380A2200246 -S31540016810028000C6D02060D080A22002148000E40D -S3154001682080A2200380A22001028000D1821020197B -S31540016830331000A02F1000A0391000A0371000A07F -S31540016840351000A07FFFFFC7210100007FFFFFC871 -S31540016850BA04A00C921000117FFFFFBC90100018E3 -S31540016860921000117FFFFFB990062004901000118D -S315400168707FFFFFB19210200ADA066014110800006A -S31540016880913A000DC205E010900A0001912A2002BA -S3154001689013008000900200117FFFFFA79212600A49 -S315400168A0DA06601411100000913A000DC205E0109D -S315400168B0900A0001912A2002900200117FFFFF9E5B -S315400168C09214208EDA066014111C0000913A000DD4 -S315400168D0C205E010900A0001912A20021301C0006E -S315400168E0900200117FFFFF949212608E9334A004B0 -S315400168F09004600C7FFFFF90921260019214201E5B -S315400169007FFFFF8D9004A0089010001D7FFFFF8A36 -S31540016910921020009334E004921260017FFFFF86BB -S315400169209004A004111000C2901221087FFFFF823B -S3154001693092102000031000E0A01060009334200460 -S31540016940111000C2901221047FFFFF7B9212601A40 -S3154001695003048D1582106278C2242004111000E0D0 -S3154001696015100120C0222000A2102003AC12A00065 -S31540016970A004E00C90047FFD40000A7592102003AC -S315400169801B100143C20360D08200600C932A0001B0 -S315400169909202401693326004901000107FFFFF660A -S315400169A09212601EA204600180A4600A04BFFFF235 -S315400169B0A0042004C206E008D807200C8208600122 -S315400169C08328400CD605E010111000E0D406A00043 -S315400169D0DA06601498122000960AE003972AC00D41 -S315400169E0920AA002111000A0DA022004940AA00122 -S315400169F0952A800D932A400D1B1000209612C00146 -S31540016A00E8236160030100001B0076418210601E8D -S31540016A109A1361C09212C00999332004C2252004F9 -S31540016A20DA2520089612C00A9E13200E913560047D -S31540016A301B1000C2031000C2821061049012201E76 -S31540016A40953620049813201E9A136108D625202CCA -S31540016A50D8252010D025201CD2252020DE2520280F -S31540016A60D6252014940ABFF0FA250000DA2520180D -S31540016A70C2252024C225200CA2102100D4A44320E3 -S31540016A80C2800320D88443209A102001A0102200FE -S31540016A90DAA40320D884032082102000C2A4032054 -S31540016AA0DAA0032081D820007FFFC55901000000EC -S31540016AB0C2800320E2844320E0840320DA05E0100B -S31540016AC0D6066014C206E0089A0B60039B2B400B66 -S31540016AD082086001D407200CD806A000111000A03E -S31540016AE08328400A980B2001D60220049A134001BC -S31540016AF0992B000B9A13400CC203400080A0600002 -S31540016B0012800008821360041B048D15D8004000D2 -S31540016B109A13627880A3000D02800038C205E01006 -S31540016B2010800000010000008210201A331000A0DE -S31540016B30C22660149810203F2F1000A0391000A0E3 -S31540016B40351000A09A1020148210200E151000A0B6 -S31540016B50371000A0DA27200CC222A004D826A000B4 -S31540016B60D825E01010BFFF38D826E0089A10207FBC -S31540016B70331000A02F1000A0C2266014DA25E010C1 -S31540016B809810203F391000A0351000A08210201324 -S31540016B909A10200D111000A0371000A0C227200C1A -S31540016BA0DA22200410BFFFF0D826A00012BFFF2230 -S31540016BB0331000A08210201CC22660149A102015A2 -S31540016BC08210207F391000A0371000A0DA27200C50 -S31540016BD0C226E0089810200F2F1000A0351000A003 -S31540016BE01B1000A08210203FD8236004C226A000BB -S31540016BF010BFFF15D825E010DA06E008D806601464 -S31540016C00820860039A0B6002D607200C8328400C49 -S31540016C109B2B400B8210400DD80040001B100000FA -S31540016C20C203400080A3000102800004D406E008AC -S31540016C301080000001000000C205E010980AA00182 -S31540016C40D207200CD6066014820860038328400BC5 -S31540016C50992B0009940AA0039810400CDA06A0006B -S31540016C60111000A0952A80099A0B6001D6022004D2 -S31540016C708210400AC20040009B2B400B9813000D26 -S31540016C800321D9509813200482106321C2230000A6 -S31540016C90DA03000080A3400102800004C206E00836 -S31540016CA01080000001000000D407200CDA05E01036 -S31540016CB082086001D60660148328400A9A0B600355 -S31540016CC0D806A0009B2B400B151000A0D602A004AD -S31540016CD0980B20019A134001992B000B9813400CF5 -S31540016CE08210000C05048D158410A278072AF37BC7 -S31540016CF08610E301C4384000C438400003048D15B2 -S31540016D00DA0300008210627880A340010280000409 -S31540016D108213200410800000010000001B2AF37B2F -S31540016D20D80040009A13630180A3000D12BFFFFAF9 -S31540016D30C205E010D6066014D806E0088208600352 -S31540016D40D407200C8328400B980B2001DA06A000BB -S31540016D50111000A0992B000A9A0B6003D602200459 -S31540016D608210400C9B2B400B15100143A010400D87 -S31540016D70F002A0D0A2102003E0240000C0A002200F -S31540016D80921020034000097290047FFD8206200C78 -S31540016D9098102001912A0001992B00011B10012016 -S31540016DA09610000182136000DA02000180A34010B0 -S31540016DB0A204600112800088A004000C80A4600A2D -S31540016DC024BFFFEFE0240000C0A0022003100120F1 -S31540016DD0A810000BAA106000A0102000A2102003EA -S31540016DE090047FFD4000095A92102003832C6002D3 -S31540016DF0912A0014DA04C00190020015820B6060EA -S31540016E009132200480A000019012201EA040001063 -S31540016E109A0B7F9F900A3F9F80A340081280007083 -S31540016E20A204600180A4600A24BFFFEF90047FFDA5 -S31540016E3080A4200012800004C205E01010800000EA -S31540016E4001000000D6066014D806E00882086003F7 -S31540016E50D407200CDA06A000111000A08328400BAD -S31540016E60980B2001992B000AD60220049A0B600246 -S31540016E708210400C9B2B400BAA10400D9FC5400031 -S31540016E800100000082102400C0A04300C0A00220DF -S31540016E90A0102000A21020039B2C6002C204C00D4A -S31540016EA08208606080A00001A0400010A204600139 -S31540016EB080A4600A24BFFFFA9B2C600280A42008AC -S31540016EC022800004D004E00410800000010000008C -S31540016ED0808A204002800007010000007FFFFE19E2 -S31540016EE00100000080A22000128000040100000081 -S31540016EF010800000010000007FFFFE12D004A008B0 -S31540016F0080A22000128000040100000010800000D1 -S31540016F10010000007FFFFE0BD004E00880A22000A4 -S31540016F2012800004010000001080000001000000F2 -S31540016F3083480000842860808188A0000100000009 -S31540016F400100000001000000D806E008D407200C2B -S31540016F50DA05E010980B2001D6066014992B000A39 -S31540016F609A0B6003C206A0009B2B400B151000A094 -S31540016F70D602A004820860018328400B9A13400C74 -S31540016F809A1340019A136004C203400092102004F0 -S31540016F9091D02002010000007FFFC41D01000000C6 -S31540016FA0981020009A102200D8A343208210200175 -S31540016FB0C2A34320D8A3432003100000DA804380B4 -S31540016FC0DAA043807FFFC47F9010200081D8200043 -S31540016FD03080000510800000010000001080000094 -S31540016FE00100000081C7E00891E820009DE3BF98B9 -S31540016FF0400007D201000000808A21000280003F44 -S31540017000010000007FFFA88D01000000912A2004A5 -S315400170107FFFA87690022005031001408210604848 -S31540017020DA00600480A3600022800015031001404D -S31540017030B0100001C20600009B38601F81836000CA -S31540017040DA06200401000000010000008278400DAC -S31540017050DA062008B006200C80A0400D028000040C -S31540017060901020017FFFA86601000000C20620049F -S3154001707080A0600012BFFFF0031001408210600043 -S31540017080DA00600480A36000028000150100000060 -S31540017090B0100001C206000081800000DA0620041B -S315400170A001000000010000009A70400D8210000DA1 -S315400170B0DA062008B006200C80A0400D02800004AC -S315400170C0901020027FFFA84E01000000C206200456 -S315400170D080A0600012BFFFF00100000040000825BB -S315400170E00100000080A2200012800004010000007F -S315400170F07FFFA8439010200381C7E00891E8200054 -S315400171009DE3BF987FFFA84D01000000912A20040E -S315400171107FFFA836900220044000078A0100000044 -S3154001712080A2212302800004010000007FFFA834D1 -S31540017130901020014000078101000000808A210053 -S315400171400280002B0310014082106184DA0060083E -S3154001715080A360090280001101000000B010000107 -S31540017160C2060000DA062004D80620088258400DDF -S31540017170B006200C80A0400C028000049010200232 -S315400171807FFFA81F01000000C206200880A06009F9 -S3154001719012BFFFF401000000400007770100000024 -S315400171A080A220000280000F01000000400007631A -S315400171B001000000808A22000280000D01000000CB -S315400171C04000079F0100000080A2200012800008B5 -S315400171D0010000007FFFA80A9010200430800004BF -S315400171E07FFFA8079010200330BFFFF181C7E00859 -S315400171F091E82000000000009DE3BFA0941020000C -S315400172001110005C9012222C1310005C9212623015 -S315400172101710005C9612E2381910005C9813223C54 -S3154001722093C2000081C240001080019181C2C0001A -S3154001723081C300001080018E9402A0019402A00136 -S3154001724080A2A0031280018A010000008744000049 -S315400172508D30E00E8C89A00780A1A000028000C776 -S3154001726001000000AF30E00BAE0DE00780A5E00065 -S31540017270128000C20100000080A1A00212800035E8 -S315400172800100000025100000E41C800025100000CC -S3154001729029100000A8152104A6100012AA100012F8 -S315400172A0AC100014A1802046A4100000AA100000D2 -S315400172B001000000A180204EA8102100010000001D -S315400172C0A18000000100000001000000E83CA03060 -S315400172D082A480131280016682A500161280016481 -S315400172E00100000001000000010000008744000089 -S315400172F08D30E00B8C89A0078CA1A0051280015C22 -S31540017300A180000001000000010000000100000012 -S31540017310E81CA03082A500161280015582A54012B4 -S31540017320A41000001280015201000000010000007B -S31540017330874400008D30E00B8C89A0078CA1A00307 -S315400173401280014B010000001080008C01000000FA -S3154001735080A1A0011280002325100000E41C8000BA -S315400173602510000029100000A8152104A6100012BE -S31540017370AA100012AC100014A1802046A4100000EF -S31540017380AA10000001000000A180204EA810210093 -S3154001739001000000A1800000010000000100000082 -S315400173A001000000E83C800082A480131280013075 -S315400173B082A500161280012E010000000100000086 -S315400173C0874400008D30E00B8C89A0078CA1A00278 -S315400173D012800127010000001080006801000000B2 -S315400173E080A1A00312800065A6100000A210200E05 -S315400173F0A1844000A6100000A1800000A814E0006E -S31540017400AB44000001000000AC14E00001000000A4 -S31540017410AF44000080A5200012800115AA8D6E00A0 -S3154001742080A540001280011280A5A00012800110A3 -S31540017430AF35E00BAE0DE00780A5E0011280010CEF -S3154001744001000000A0100000A1844000A610000029 -S31540017450A1800000E8180000AC100000AE1000004A -S31540017460EC04C000EE04E00480A500161280010081 -S3154001747080A54017128000FE01000000A5440000CF -S31540017480A534A00BA40CA00780A4A001128000F88B +S31540011C9085A00921C523000081C3E008D0030000C7 +S31540011CA01910008098132120D0230000D223200848 +S31540011CB0C1030000C303200885A009A1C523000074 +S31540011CC081C3E008D0030000191000809813212039 +S31540011CD0D0230000C103000083A00520C3230000D8 +S31540011CE081C3E008D00300001310008092126138CE +S31540011CF0C51A6008C11A400089A0084091A108C2CE +S31540011D0095A209C495A2894281C3E008D53A00004B +S31540011D101310008092126158C1024000C302600450 +S31540011D2085A0082087A088A189A0C9A289A10921E7 +S31540011D3081C3E008C92200009610200213100080DA +S31540011D4092126138151000809412A138D5024000D4 +S31540011D50D7028000D5220000D8020000131000806F +S31540011D609212615896A2E00112BFFFF901000000EC +S31540011D7081C3E0080100000013100080921261380F +S31540011D80151000809412A158C1028000C51A601036 +S31540011D9083A0082089A088C08BA109A18DA10942F1 +S31540011DA08FA1492691A0054681C3E008D13A00009A +S31540011DB01110008090122130C11A0000C51A00008E +S31540011DC0C91A0000CD1A0000D11A0000D51A000028 +S31540011DD0D91A0000DD1A0000E11A0000E51A0000D8 +S31540011DE0E91A0000ED1A0000F11A0000F51A000088 +S31540011DF0F91A0000FD1A000081C3E0080100000045 +S31540011E0029100080A81520F827100080A614E16843 +S31540011E10C12CC000E604C000A134E00EA00C20078E +S31540011E20A0A42002AE1020002D100080AC15A168A0 +S31540011E30AE05E001AC05A008C1358000C12D00000A +S31540011E40EA050000AB35600DAA8D600112BFFFF9AE +S31540011E5001000000808000100280002F2B3C1FFFF4 +S31540011E60AA1563FFA60CC015E6250000C10D0000AA +S31540011E702B100080AA1561742D100047AC15A2E005 +S31540011E80AE25E001E0054000E025800081D8200034 +S31540011E9001000000010000000100000001000000F7 +S31540011EA001000000010000000100000001000000E7 +S31540011EB001000000010000000100000001000000D7 +S31540011EC001000000010000000100000001000000C7 +S31540011ED001000000010000000100000001000000B7 +S31540011EE00000000080A5C00012BFFFE6AA056008F9 +S31540011EF0C12D0000E60500002B03C000A614C01545 +S31540011F00E6250000C10D000081C4400081CC80005F +S31540011F100100000081C4800081CCA00401000000C2 +S31540011F200100000081C3E008915800000100000053 +S31540011F3011100080901220F8C10A0000C022000052 +S31540011F40C10A0000C12A0000D40200001300038028 +S31540011F50942A800980A0000A3280004D9010200307 +S31540011F601303E000D223BFA0C023BFA4C10BBFA06F +S31540011F70C023BFA0151000809412A0E8C1028000C2 +S31540011F800100000001000000C10BBFA0C10BBFA4AE +S31540011F9083A00520C12BBFA0D003BFA0808A220009 +S31540011FA02280003B901020049010200015100080E4 +S31540011FB09412A108C5028000C902A008D102A00C52 +S31540011FC013100080921260E8C70240008DA0894438 +S31540011FD081A98AC8010000000380000501000000B4 +S31540011FE0901020011080002A01000000C5028000E7 +S31540011FF0C902A008D102A00C13100080921260E819 +S31540012000CB0240008DA0894481A98AC80100000005 +S315400120100380000501000000901020011080001C83 +S315400120200100000025100080A414A0F0C11C80000E +S31540012030C51C800080A000003280000685A008C033 +S3154001204081A80AC2010000001380000301000000BC +S31540012050901020050100000025100080A414A0F076 +S31540012060C11C8000C51C800080A00000010000004A +S315400120703280000685A008C081A80AC2010000007E +S3154001208013800003010000009010200701000000AA +S3154001209081C3E00801000000901020019544000032 +S315400120A09532A01E940AA00380A2800002800040BF +S315400120B09010200080A2A0021680003D13100080DF +S315400120C092126198C11A4000C51A6008FD02601853 +S315400120D095A0003E99A0003E9DA0003E170000C07D +S315400120E09612E078A182C0000100000001000000C4 +S315400120F00100000001000000010000000100000095 +S3154001210081A0002083A0002195A0002A99A0002C3F +S315400121109DA0002E170000C09612E07CA182C0004F +S315400121200100000001000000010000000100000064 +S31540012130010000000100000085A0002287A00023C5 +S31540012140A180000001000000010000000100000024 +S3154001215001000000010000000100000089A00842C2 +S31540012160A9A2883ED93A4000DD224000CD1A60102E +S31540012170D102600881A90A46010000000380000CD3 +S3154001218081AD0A2801000000038000099344000044 +S315400121909332601B920A60079010200080A2A00132 +S315400121A002800003902260079022600481C3E00808 +S315400121B001000000C12BBFA081C3E008D003BFA02E +S315400121C0D023BFA081C3E008C10BBFA0010000001E +S315400121D09DE3BF6040001B94B0102000833A200A63 +S315400121E08208600380A060010280000401000000B3 +S315400121F081C7E00881E800007FFFBDE19010200D16 +S31540012200050C40290723CD1B8410A0068610E09BB0 +S31540012210C027BFF0C027BFF4C43FBFF8C027BFD017 +S31540012220C027BFD4C027BFC87FFFFF3FC027BFCC51 +S31540012230820A30008210608084006004072804000E +S315400122408610E00F09100047C62040008811220081 +S3154001225007100000882100028939200286110003F7 +S31540012260C620600425100080032784008210601078 +S315400122707FFFFED0C220A0047FFFFFD21103E00002 +S3154001228090102000C024A1687FFFFDD0010000000E +S31540012290809200091280000601000000C204A16874 +S315400122A080A0600002800004010000007FFFBDBBEA +S315400122B09010200B7FFFFDC590103FFA03300600BA +S315400122C080A2000102800CF880A260007FFFBDB3AE +S315400122D09010200B7FFFFDBD9010201403100D00C0 +S315400122E080A200010280113680A260007FFFBDAB53 +S315400122F09010200B7FFFFDB5901020620310162031 +S3154001230080A200010280112780A260007FFFBDA349 +S315400123109010200B7FFFFDB590102005031028007B +S3154001232080A2000112800CB501000000C204A16820 +S3154001233080A0600012800CB1010000007FFFFFA168 +S315400123401103C000111C00007FFFFDB09210200058 +S31540012350031FFFFF821063FF80A200011280000B62 +S3154001236001000000C404A168030000708210601FD0 +S3154001237084088001030000108210601080A0800153 +S3154001238002800005113C00007FFFBD849010200CA7 +S31540012390113C00007FFFFD9D9210200003200000AC +S315400123A080A200011280000B01000000C404A16854 +S315400123B0030000708210601F840880010300001032 +S315400123C08210601080A0800102800004010000009C +S315400123D07FFFBD729010200CC024A1689010200090 +S315400123E07FFFFD8A9210200080A220001280000605 +S315400123F003100080C200616880A060000280000571 +S31540012400110144007FFFBD659010200C110144006D +S3154001241013284000901223027FFFFD7C9212600137 +S3154001242080A220001280000601000000C204A168BB +S3154001243080A06000228000051111FFFF7FFFBD577C +S315400124409010200C1111FFFF7FFFFD78901223FFA2 +S315400124500300007F821063FF80A2000112800C639B +S3154001246001000000C204A16880A0600012800C5FD8 +S3154001247001000000271000807FFFFD64D01CE1E0D1 +S31540012480031FFFFF821063FF80A200011280000B31 +S3154001249001000000C404A168030000708210601F9F +S315400124A084088001030000108210601080A0800122 +S315400124B002800005351000807FFFBD389010200C4A +S315400124C035100080D01EA1D0C024A1687FFFFD4FEA +S315400124D0010000000320000080A200011280000BD1 +S315400124E003100080C4006168030000708210601F01 +S315400124F084088001030000108210601080A08001D2 +S31540012500028000052B1000807FFFBD249010200C17 +S315400125102B100080D01D61F0C024A1687FFFFD3BD8 +S3154001252001000000031FFFFF821063FF80A200012C +S315400125301280000B03100080C40061680300007024 +S315400125408210601F84088001030000108210601011 +S3154001255080A08001028000052F1000807FFFBD0F03 +S315400125609010200C2F100080D01DE1B8C024A16826 +S315400125707FFFFD2601000000C204A1688330600E82 +S315400125808208600380A0600202800004010000000E +S315400125907FFFBD029010200C7FFFFF0A1103C00090 +S315400125A011115804C024A1687FFFFD2890122234DE +S315400125B003102B008210624680A200010280107136 +S315400125C0032000007FFFBCF59010200D113C02AFA7 +S315400125D07FFFFD1E901220D1033180558210639AF0 +S315400125E080A200010280105F030800007FFFBCEB60 +S315400125F09010200D1111FC007FFFFD1C9210200050 +S31540012600031FE00080A200011280000B01000000C0 +S31540012610C404A168030000708210601F8408800111 +S31540012620030000108210600880A08001028000042F +S31540012630010000007FFFBCD99010200DC024A16885 +S3154001264011207C01130001007FFFFD08901220300C +S315400126500320000080A200011280000B03100080BD +S31540012660C4006168030000708210601F8408800105 +S31540012670030000108210600480A0800102800004E3 +S31540012680010000007FFFBCC59010200DC024A16849 +S31540012690901020007FFFFCF59210200080A22000C0 +S315400126A01280000603100080C200616880A06000AD +S315400126B002800004010000007FFFBCB89010200D8D +S315400126C07FFFFCEAD01CE1E003100080C20061E814 +S315400126D080A2000112800BC101000000C204A16862 +S315400126E080A0600012800BBD010000003710008001 +S315400126F07FFFFCDED01EE1D8031FE00080A200016F +S3154001270012800BB301000000C204A16880A06000E2 +S3154001271012800BAF010000007FFFFCD4D01D61F099 +S3154001272003100080C200620080A200011280000BEB +S3154001273001000000C404A168030000708210601FFC +S3154001274084088001030000108210601080A080017F +S3154001275002800005D01DE1B87FFFBC909010200D8E +S31540012760D01DE1B8C024A1687FFFFCC00100000074 +S31540012770C204A1688330600E8208600380A06002B3 +S3154001278002800004010000007FFFBC849010200DF0 +S315400127907FFFFE8C1103E0002108C6AFC024A1686B +S315400127A0901420DE7FFFFCB9A01420DE80A2001029 +S315400127B012800B8303100080C200616880A0600014 +S315400127C012800B7F010000002108C6AF901420DE65 +S315400127D07FFFFCBEA01420DE80A2001012800B7485 +S315400127E001000000C204A16880A0600012800B7045 +S315400127F0010000001128C6AF7FFFFCB4901220DE15 +S315400128000308C6AF821060DE80A2000112800B640D +S3154001281001000000C204A16880A0600012800B6024 +S31540012820010000001108C6AF7FFFFCA0901220DE18 +S315400128300328C6AF821060DE80A2000112800B54CD +S3154001284001000000C204A16880A0600012800B5004 +S31540012850010000001128C6AF7FFFFC94901220DED4 +S315400128600308C6AF821060DE80A2000112800B45CC +S3154001287001000000C204A16880A0600012800B41E3 +S31540012880010000007FFFFE4F1103E00011151BC040 +S315400128901310C821901221039212614115351BC0B4 +S315400128A01710C8219412A1037FFFFC909612E141B3 +S315400128B080A2200212800B2B01000000C204A168F5 +S315400128C080A0600012800B270100000011351BC05B +S315400128D01310C821901221039212614115151BC094 +S315400128E01710C8219412A1037FFFFC809612E14183 +S315400128F080A2200112800B1F01000000C204A168C2 +S3154001290080A0600012800B1B010000009010200087 +S3154001291092102000152000007FFFFC7496102000C5 +S3154001292080A220001280000601000000C204A168B6 +S3154001293080A0600002800005D01EE1D87FFFBC1751 +S315400129409010200FD01EE1D87FFFFC68D41EA1D085 +S3154001295080A2200212800AFF01000000C204A16881 +S3154001296080A0600012800AFB0100000011151BC007 +S315400129701310C821901221039212614115151BE8CB +S315400129801710C8219412A1037FFFFC589612E1410A +S3154001299080A2200112800AEB01000000C204A16856 +S315400129A080A0600012800AE70100000011151BE8B3 +S315400129B01310C821901221039212614115151BC0B3 +S315400129C01710C8219412A1037FFFFC489612E141DA +S315400129D080A2200212800AD701000000C204A16829 +S315400129E080A0600012800AD301000000D41CE1E0FF +S315400129F011151BE81310C821901221037FFFFC3BE0 +S31540012A009212614180A2200312800AC60100000091 +S31540012A10C204A16880A0600012800AC201000000C1 +S31540012A20D41D61F011151BE81310C8219012210322 +S31540012A307FFFFC2E9212614180A220031280000B7F +S31540012A4001000000C404A168030000708210601FE9 +S31540012A5084088001030000108210601080A080016C +S31540012A6002800005D41DE1B87FFFBBCC9010200F3A +S31540012A70D41DE1B8C024A16811151BE81310C82163 +S31540012A80901221037FFFFC199212614180A220021C +S31540012A9012800AA003100080C200616880A0600015 +S31540012AA012800A9C01000000D01DE1B815151BE8F3 +S31540012AB01710C8219412A1037FFFFC0C9612E14125 +S31540012AC080A2200112800A8B01000000C204A16885 +S31540012AD080A0600012800A8701000000D01CE1E05E +S31540012AE015151BE81710C8219412A1037FFFFBFFA0 +S31540012AF09612E14180A2200312800A820100000061 +S31540012B00C204A16880A0600012800A7E0100000014 +S31540012B10D01D61F015151BE81710C8219412A103A9 +S31540012B207FFFFBF29612E14180A220031280000B47 +S31540012B3001000000C404A168030000708210601FF8 +S31540012B4084088001030000108210601080A080017B +S31540012B5002800004010000007FFFBB909010200F0F +S31540012B60C024A16811151BC01310C821901221035E +S31540012B709212614115351BC01710C8219412A10349 +S31540012B807FFFFBED9612E14180A2200212800A5599 +S31540012B9003100080C200616880A0600012800A5163 +S31540012BA00100000011351BC01310C82190122103EA +S31540012BB09212614115151BC01710C8219412A10329 +S31540012BC07FFFFBDD9612E14180A2200112800A417E +S31540012BD001000000C204A16880A0600012800A3D85 +S31540012BE001000000901020009210200015200000E6 +S31540012BF07FFFFBD19610200080A2200012800006A4 +S31540012C0001000000C204A16880A0600002800005A6 +S31540012C10D01EE1D87FFFBB619010200FD01EE1D8B6 +S31540012C207FFFFBC5D41EA1D080A2200212800A25B7 +S31540012C3001000000C204A16880A0600012800A2140 +S31540012C400100000011151BC01310C8219012210369 +S31540012C509212614115151BE81710C8219412A10360 +S31540012C607FFFFBB59612E14180A2200112800A1135 +S31540012C7001000000C204A16880A0600012800A0D14 +S31540012C800100000011151BE81310C8219012210301 +S31540012C909212614115151BC01710C8219412A10348 +S31540012CA07FFFFBA59612E14180A22002128009FD19 +S31540012CB001000000C204A16880A06000128009F9E9 +S31540012CC001000000D41CE1E011151BE81310C821D6 +S31540012CD0901221037FFFFB989212614180A220034B +S31540012CE01280000B01000000C404A16803000070BB +S31540012CF08210601F8408800103000010821060105A +S31540012D0080A0800102800005D41D61F07FFFBB23B6 +S31540012D109010200FD41D61F011151BE81310C82126 +S31540012D20901221037FFFFB849212614180A220030E +S31540012D301280000B01000000C404A168030000706A +S31540012D408210601F84088001030000108210601009 +S31540012D5080A0800102800005D41DE1B87FFFBB0F32 +S31540012D609010200FD41DE1B8C024A16811151BE8AD +S31540012D701310C821901221037FFFFB6F921261410C +S31540012D8080A22002128009BF03100080C200616840 +S31540012D9080A06000128009BB01000000D01DE1B88F +S31540012DA015151BE81710C8219412A1037FFFFB627A +S31540012DB09612E14180A22001128009B6010000006D +S31540012DC0C204A16880A06000128009B2010000001F +S31540012DD0D01CE1E015151BE81710C8219412A10378 +S31540012DE07FFFFB559612E14180A220031280000B22 +S31540012DF001000000C404A168030000708210601F36 +S31540012E0084088001030000108210601080A08001B8 +S31540012E1002800005D01D61F07FFFBAE09010200FBF +S31540012E20D01D61F015151BE81710C8219412A10396 +S31540012E307FFFFB419612E14180A220031280000BE5 +S31540012E4001000000C404A168030000708210601FE5 +S31540012E5084088001030000108210601080A0800168 +S31540012E6002800004010000007FFFBACC9010200FC1 +S31540012E70C024A168110048EA13048D15901223CD90 +S31540012E807FFFFB3E9212627880A22001128009796F +S31540012E9003100080C200616880A06000128009753D +S31540012EA001000000110048EA13048D15901223CD4C +S31540012EB07FFFFB439212627880A220011280096A49 +S31540012EC001000000C204A16880A06000128009666A +S31540012ED001000000C024A1687FFFFCBA1103C000B5 +S31540012EE023100124A807BFF8BA07BFD090100014D9 +S31540012EF09210001D7FFFFA6C94146160C2046160F8 +S31540012F00C407BFF880A0800102800E0CA014616046 +S31540012F107FFFBAA2901020102D100080901000144F +S31540012F209215A1C87FFFFA6094146160C404616080 +S31540012F30C205A1C880A0800122800DF6C4042004E8 +S31540012F407FFFBA9690102010901000149214E1E081 +S31540012F507FFFFA5594146160C4046160C204E1E0E4 +S31540012F6080A0800102800DE1B214E1E07FFFBA8BBF +S31540012F709010201090100014921561F07FFFFA4ACC +S31540012F8094146160C404A168030000708210601F3C +S31540012F9084088001030000108210601080A0800127 +S31540012FA002800004010000007FFFBA7C90102010CF +S31540012FB0C024A1687FFFFC8390102000901000146C +S31540012FC0921561F07FFFFA389414616039100080E0 +S31540012FD0C4046160C20721F880A0800122800DBD32 +S31540012FE0C40420047FFFBA6D901020107FFFFC754A +S31540012FF01103C000901000149215E1B87FFFFA2A20 +S3154001300094146160C204A1688330600E8208600333 +S3154001301080A0600202800004010000007FFFBA5FC9 +S3154001302090102010C024A1689010001D9210001429 +S315400130307FFFFA1D94146160C4046160C207BFF842 +S3154001304080A0800122800D9AC40420047FFFBA53D8 +S31540013050901020109010001D9215A1C87FFFFA1202 +S3154001306094146160C4046160C205A1C880A0800156 +S3154001307022800D84C40420047FFFBA48901020109A +S315400130809010001D9214E1E07FFFFA0794146160ED +S31540013090C4046160C204E1E080A0800122800D7019 +S315400130A0C40420047FFFBA3D901020109010001DEB +S315400130B0921561F07FFFF9FC94146160C404A16824 +S315400130C0030000708210601F840880010300001015 +S315400130D08210601080A0800102800004010000007F +S315400130E07FFFBA2E901020107FFFFC3690102000F3 +S315400130F09010001D921561F07FFFF9EB9414616009 +S31540013100C4046160C20721F880A0800122800D4D70 +S31540013110C40420047FFFBA21901020107FFFFC29B0 +S315400131201103C0009010001D9215E1B87FFFF9DE32 +S3154001313094146160C204A1688330600E8208600302 +S3154001314080A0600202800004010000007FFFBA13E4 +S3154001315090102010C024A1689015A1C892100014A7 +S315400131607FFFF9D194146160C4046160C205A1C8AE +S3154001317080A0800122800D28C40420047FFFBA0765 +S31540013180901020109015A1C89210001D7FFFF9C61E +S3154001319094146160C4046160C205A1C880A0800125 +S315400131A022800D12C40420047FFFB9FC9010201028 +S315400131B09016E1D8941461607FFFF9BB9210000824 +S315400131C0C4046160C206E1D880A0800122800CFC63 +S315400131D0C40420047FFFB9F1901020109016A1D0AD +S315400131E0941461607FFFF9B092100008C4046160D5 +S315400131F0C206A1D080A0800122800CE6C40420042E +S315400132007FFFB9E6901020109016A1D09216E1D812 +S315400132107FFFF9A594146160C404A168030000709E +S315400132208210601F84088001030000108210601024 +S3154001323080A0800102800004010000007FFFB9D711 +S31540013240901020107FFFFBDF901020009016A1D038 +S315400132509216E1D87FFFF99494146160C4046160C9 +S31540013260C20721F880A0800122800CC3C404200437 +S315400132707FFFB9CA901020107FFFFBD21103C00017 +S315400132809016E1D8C024A1689216A1D07FFFF98695 +S3154001329094146160C4046160C20721F880A0800172 +S315400132A022800CA4C40420047FFFB9BC90102010D6 +S315400132B09015A1C89215E1B87FFFF97B941461601E +S315400132C0C204A1688330600E8208600380A0600258 +S315400132D002800004010000007FFFB9B09010201069 +S315400132E0C024A1689014E1E0921000147FFFF96EAA +S315400132F094146160C4046160C204E1E080A080016D +S3154001330022800C83C40420047FFFB9A490102010AE +S315400133109014E1E09210001D7FFFF96394146160FF +S31540013320C4046160C204E1E080A0800122800C6F88 +S31540013330C40420047FFFB999901020109014E1E055 +S315400133409215A1C87FFFF95894146160C404616065 +S31540013350C204E1E080A0800122800C5BC404200409 +S315400133607FFFB98E901020109014E1E094146160B3 +S315400133707FFFF94D92100008C4046160C204E1E088 +S3154001338080A0800122800C47C40420047FFFB983BA +S31540013390901020109014E1E0921561F07FFFF94200 +S315400133A094146160C404A168030000708210601F18 +S315400133B084088001030000108210601080A0800103 +S315400133C002800004010000007FFFB97490102010B4 +S315400133D0C024A168901561F0921000147FFFF93264 +S315400133E094146160C404A168030000708210601FD8 +S315400133F084088001030000108210601080A08001C3 +S3154001340002800004010000007FFFB9649010201083 +S31540013410C024A168901561F09210001D7FFFF9222A +S3154001342094146160C404A168030000708210601F97 +S3154001343084088001030000108210601080A0800182 +S3154001344002800004010000007FFFB9549010201053 +S31540013450C024A168901561F09215A1C87FFFF912A9 +S3154001346094146160C404A168030000708210601F57 +S3154001347084088001030000108210601080A0800142 +S3154001348002800004010000007FFFB9449010201023 +S31540013490C024A168901561F09214E1E07FFFF90222 +S315400134A094146160C404A168030000708210601F17 +S315400134B084088001030000108210601080A0800102 +S315400134C002800005901561F07FFFB93490102010FD +S315400134D0901561F0C024A168941461607FFFF8F2F1 +S315400134E092100008C404A168030000708210601F96 +S315400134F084088001030000108210601080A08001C2 +S3154001350002800004010000007FFFB92490102010C2 +S31540013510C024A168901561F09215E1B87FFFF8E2E9 +S3154001352094146160C204A1688330600E820860030E +S3154001353080A0600202800004010000007FFFB917ED +S31540013540901020107FFFFB1F1103C0000310008065 +S31540013550C024A1688210633010800009B010200099 +S315400135607FFFB90E90102010C207BFC4B0062001DC +S3154001357080A6200D0280002282006018852E20033D +S31540013580912E200590220002051000808410A32070 +S31540013590C227BFC490008008932E20011510012434 +S315400135A0920240189412A16092026001932A60032C +S315400135B07FFFF8BD92008009C207BFC4C600400024 +S315400135C0C404000080A0C00232BFFFE6C227BFC4C8 +S315400135D0C60060040910012488112160C401200439 +S315400135E080A0C00232BFFFDFC227BFC4B0062001A0 +S315400135F080A6200D12BFFFE282006018C204A168B6 +S3154001360080A0600012800BA3010000001110008110 +S3154001361094146160901220587FFFF8A3920220080B +S315400136200310008082106320C4006148C2046160B7 +S3154001363080A0800102800B86071000807FFFB8D7EB +S315400136409010201011100081941461609012207026 +S315400136507FFFF8959202200809100080C20461603C +S3154001366088112320C401216080A0800122800B693A +S31540013670C40121647FFFB8C9901020101110008148 +S3154001368094146160901220887FFFF8879202200887 +S315400136900310008082106320C4006178C204616017 +S315400136A080A0800102800B4B071000807FFFB8BBD2 +S315400136B090102010C024A168111000009210200023 +S315400136C0150FFC007FFFF94F96102000030FFC00F9 +S315400136D080A2000102800B3880A260007FFFB8AF54 +S315400136E0901020101110000092102000152FFC00A0 +S315400136F07FFFF944961020000310020080A20001CA +S3154001370002800B2680A260007FFFB8A49010201093 +S315400137101130000092102000150FFC007FFFF9398F +S31540013720961020000330020080A2000102800B1493 +S3154001373080A260007FFFB8999010201011300000E0 +S3154001374092102000152FFC007FFFF92E96102000C5 +S31540013750032FFC0080A2000102800B0280A26000C0 +S315400137607FFFB88E90102010111000007FFFF92FB7 +S31540013770130FE0000310100080A20001128007B66B +S3154001378001000000C204A16880A06000128007B257 +S3154001379001000000111000007FFFF92E130FE00019 +S315400137A0030FE00080A20001128007A7010000007C +S315400137B0C204A16880A06000128007A30100000036 +S315400137C009100080C024A16890100014941461600F +S315400137D07FFFF848921121C0C4046160C206A1D09E +S315400137E080A0800122800ACFC40420047FFFB86BE9 +S315400137F090102011C024A168901000149216E1D8AF +S315400138007FFFF83C94146160C4046160C207BFC87D +S3154001381080A0800122800ABAC40420047FFFB85FD9 +S3154001382090102011901000149214E1E07FFFF831BE +S3154001383094146160C4046160C204E1E080A0800127 +S3154001384022800AA6C40420047FFFB8549010201198 +S3154001385090100014921561F07FFFF8269414616070 +S31540013860C4046160C20721F880A0800122800A8ACF +S31540013870C40420047FFFB849901020119010001411 +S315400138809215E1B87FFFF81B941461600300007044 +S31540013890C404A168840880010300002080A080013F +S315400138A002800004010000007FFFB83C9010201107 +S315400138B0C024A1689010001D921000147FFFF80DDE +S315400138C094146160C4046160C207BFD080A08001C6 +S315400138D022800A68C40420047FFFB830901020116A +S315400138E0031000809207BFC8901061C07FFFF801A6 +S315400138F094146160C4046160C20721F880A080010C +S3154001390022800A4CC40420047FFFB8249010201161 +S3154001391009100080C024A168901121C09216E1D8F7 +S315400139207FFFF7F494146160C4046160071000805E +S31540013930C200E1C080A0800122800A34C404200470 +S315400139407FFFB816901020119010001D9214E1E0EF +S315400139507FFFF7E894146160C4046160C204E1E04A +S3154001396080A0800122800A20C40420047FFFB80B76 +S31540013970901020079010001D921561F07FFFF7DD32 +S3154001398094146160C404A168030000708210601F32 +S3154001399084088001030000108210601080A080011D +S315400139A002800004010000007FFFB7FC9010201147 +S315400139B0C024A1689010001D9215E1B87FFFF7CD94 +S315400139C09414616003000070C404A16884088001F6 +S315400139D00300002080A08001028000040100000055 +S315400139E07FFFB7EE90102011C024A1689016A1D098 +S315400139F0921000147FFFF7BF94146160C4046160A4 +S31540013A00C206A1D080A08001228009ECC404200412 +S31540013A107FFFB7E290102011091000809016A1D0C7 +S31540013A20921121C07FFFF7B394146160C4046160B1 +S31540013A30C206E1D880A08001228009D5C4042004B1 +S31540013A407FFFB7D6901020119015A1C894146160DC +S31540013A507FFFF7A892100008C4046160C20721F8ED +S31540013A6080A08001228009BAC40420047FFFB7CB1D +S31540013A7090102011C024A1689015A1C89214E1E0CC +S31540013A807FFFF79C94146160C4046160C204E1E065 +S31540013A9080A08001228009A5C40420047FFFB7BF0E +S31540013AA0901020119015A1C8921561F07FFFF791F2 +S31540013AB094146160C4046160C20721F880A080014A +S31540013AC02280098AC40420047FFFB7B490102011D4 +S31540013AD0C024A1689015A1C89215E1B87FFFF7856A +S31540013AE09414616003000070C404A16884088001D5 +S31540013AF00300002080A08001028000040100000034 +S31540013B007FFFB7A690102011C024A1689014E1E070 +S31540013B10921000147FFFF77794146160C4046160CA +S31540013B20C204E1E080A0800122800967C404200428 +S31540013B307FFFB79A901020119014E1E09210001D7A +S31540013B407FFFF76C94146160C4046160C204E1E0D4 +S31540013B5080A0800122800953C40420047FFFB78FCF +S31540013B60901020119014E1E09215A1C87FFFF761F2 +S31540013B7094146160C4046160C204E1E080A08001E4 +S31540013B802280093FC40420047FFFB784901020118E +S31540013B909014E1E0941461607FFFF756921000089B +S31540013BA0C4046160C204E1E080A080012280092B47 +S31540013BB0C40420047FFFB779901020119014E1E0EE +S31540013BC0921561F07FFFF74B94146160C404616004 +S31540013BD0C20721F880A080012280090FC404200475 +S31540013BE07FFFB76E901020119014E1E09215E1B875 +S31540013BF07FFFF7409414616003000070C404A1681C +S31540013C00840880010300002080A080010280000515 +S31540013C10901561F07FFFB76190102011901561F00A +S31540013C20921000147FFFF73394146160C404A168B5 +S31540013C30030000708210601F840880010300001099 +S31540013C408210601080A08001028000040100000003 +S31540013C507FFFB75290102011C024A168901561F0E2 +S31540013C609210001D7FFFF72394146160C404A1687C +S31540013C70030000708210601F840880010300001059 +S31540013C808210601080A080010280000401000000C3 +S31540013C907FFFB74290102011C024A168901561F0B2 +S31540013CA09215A1C87FFFF71394146160C404A168FB +S31540013CB0030000708210601F840880010300001019 +S31540013CC08210601080A08001028000040100000083 +S31540013CD07FFFB73290102011C024A168901561F082 +S31540013CE09214E1E07FFFF70394146160C404A16874 +S31540013CF0030000708210601F8408800103000010D9 +S31540013D008210601080A0800102800005901561F04C +S31540013D107FFFB72290102011901561F0C024A16851 +S31540013D20941461607FFFF6F392100008C404A16801 +S31540013D30030000708210601F840880010300001098 +S31540013D408210601080A08001028000040100000002 +S31540013D507FFFB71290102011C024A168901561F021 +S31540013D609215E1B87FFFF6E3941461600300007099 +S31540013D70C404A168840880010300002080A080015A +S31540013D8002800005051FC0007FFFB7049010201177 +S31540013D90051FC0000700C0008410A1028610E0B0D4 +S31540013DA0C024A168B007BFE0C43FBFE805203E83F9 +S31540013DB0070021C88410A3FF8610E3A19007BFE83E +S31540013DC092100018C43FBFE07FFFF6CA9407BFD8E0 +S31540013DD0C407BFD8033FFC0080A080010280088051 +S31540013DE0C207BFDC7FFFB6ED9010201105004000F1 +S31540013DF00700C0008410A1028610E0B0C024A1686B +S31540013E009007BFE8C43FBFE805108683070021C875 +S31540013E108410A3FF8610E3A1921000189407BFD81F +S31540013E207FFFF6B4C43FBFE0C207BFDCC407BFD8BB +S31540013E30809080011280000B03100080C4006168ED +S31540013E40030000708210601F840880010300001087 +S31540013E508210600480A0800102800005050006AF43 +S31540013E607FFFB6CE90102011050006AF86102010B8 +S31540013E70C024A1689007BFE8C43FBFE8050FFC0016 +S31540013E80070281D88410A0408610E10C92100018D8 +S31540013E909407BFD87FFFF697C43FBFE0C407BFD89A +S31540013EA0030006AE8210639580A08001028008421D +S31540013EB0C407BFDC7FFFB6B990102011050006AFDD +S31540013EC086102010C024A1689007BFE8C43FBFE810 +S31540013ED0050FFFFF070281D88410A3408610E10C2D +S31540013EE0921000189407BFD87FFFF682C43FBFE007 +S31540013EF0C207BFDCC407BFD8809080011280000B87 +S31540013F0003100080C4006168030000708210601FC6 +S31540013F1084088001030000108210600480A08001A3 +S31540013F2002800004010000007FFFB69C9010201122 +S31540013F30C024A168111088007FFFF75A13100100B1 +S31540013F40031066C9821062CA80A20001128005BAB6 +S31540013F5003100080C200616880A06000128005B62F +S31540013F60010000001111BBFE130C70407FFFF74D9D +S31540013F70901223FF031527CA8210611E80A20001F9 +S31540013F80128005A901000000C204A16880A060005A +S31540013F90128005A501000000111E607E1310C7FFA7 +S31540013FA07FFFF740921263FC031D73FC8210633856 +S31540013FB080A200011280059801000000C204A16898 +S31540013FC080A06000128005940100000011002000CD +S31540013FD0130FE0007FFFF7339212600180A22000A9 +S31540013FE01280000B01000000C404A16803000070A8 +S31540013FF08210601F84088001030000108210600453 +S3154001400080A0800102800005110FE0007FFFB663AA +S3154001401090102011110FE000C024A1687FFFF72105 +S3154001402092100008030FE00080A20001128005767D +S3154001403003100080C200616880A060001280057292 +S315400140400100000011002000130FE0007FFFF7156B +S315400140509212600180A220001280000B0100000034 +S31540014060C404A168030000708210601F84088001A7 +S31540014070030000108210600480A0800102800005C8 +S31540014080031000807FFFB645901020110310008079 +S31540014090C024A168921061C0901000147FFFF607FA +S315400140A094146160C404616007100080C200E1C0DD +S315400140B080A08001228007B6C40420047FFFB63762 +S315400140C090102012901000149216E1D87FFFF5FB54 +S315400140D094146160C4046160C206E1D880A0800185 +S315400140E0228007A0C40420047FFFB62C9010201222 +S315400140F0901000149214E1E07FFFF5F09414616092 +S31540014100C4046160C204E1E080A080012280078C82 +S31540014110C40420047FFFB621901020129010001491 +S31540014120921561F07FFFF5E594146160C404616006 +S31540014130C20721F880A0800122800770C4042004B0 +S315400141407FFFB61690102012901000149215E1B818 +S315400141507FFFF5DA9414616003000070C404A1681E +S31540014160840880010300002080A0800102800004B1 +S31540014170010000007FFFB60990102012C024A168FB +S315400141809010001D921000147FFFF5CC94146160CD +S31540014190C4046160C207BFD080A080012280074E5F +S315400141A0C40420047FFFB5FD901020120310008047 +S315400141B09216A1D0901061C07FFFF5C09414616042 +S315400141C0C4046160C20721F880A0800122800732C1 +S315400141D0C40420047FFFB5F190102012C024A168C9 +S315400141E09010001D9214E1E07FFFF5B494146160D4 +S315400141F0C4046160C204E1E080A080012280071D01 +S31540014200C40420047FFFB5E5901024999010001D49 +S31540014210921561F07FFFF5A994146160C404616051 +S31540014220C20721F880A0800122800701C40420042E +S315400142307FFFB5DA901020129010001D9215E1B85B +S315400142407FFFF59E9414616003000070C404A16869 +S31540014250840880010300002080A0800102800004C0 +S31540014260010000007FFFB5CD90102012C024A16847 +S315400142709015A1C8921000147FFFF59094146160C7 +S31540014280C4046160C205A1C880A08001228006DD08 +S31540014290C40420047FFFB5C1901020129015A1C817 +S315400142A09210001D7FFFF58594146160C40461601E +S315400142B0C20721F880A08001228006C2C4042004DE +S315400142C07FFFB5B690102012C024A1689015A1C8F1 +S315400142D09214E1E07FFFF57994146160C404616052 +S315400142E0C204E1E080A08001228006ADC40420041E +S315400142F07FFFB5AA901020129015A1C8921561F0C2 +S315400143007FFFF56E94146160C4046160C20721F8B1 +S3154001431080A0800122800691C40420047FFFB59FBE +S31540014320901020129015A1C89215E1B87FFFF56350 +S315400143309414616003000070C404A168840880017C +S315400143400300002080A080010280000401000000DB +S315400143507FFFB59290102012C024A1689014E1E02D +S31540014360921000147FFFF55594146160C404616096 +S31540014370C204E1E080A080012280066FC4042004CB +S315400143807FFFB586901020129014E1E09210001D37 +S315400143907FFFF54A94146160C4046160C204E1E0A0 +S315400143A080A080012280065BC40420047FFFB57B88 +S315400143B0901020129014E1E09215A1C87FFFF53FBD +S315400143C094146160C4046160C204E1E080A080018C +S315400143D022800647C40420047FFFB5709010201246 +S315400143E09014E1E0941461607FFFF5349210000867 +S315400143F0C4046160C204E1E080A0800122800633EA +S31540014400C40420047FFFB565901020129014E1E0AA +S31540014410921561F07FFFF52994146160C404A16887 +S31540014420030000708210601F8408800103000010A1 +S315400144308210601080A0800102800004010000000B +S315400144407FFFB55690102012C024A168901561F0E7 +S31540014450921000147FFFF51994146160C404A16899 +S31540014460030000708210601F840880010300001061 +S315400144708210601080A080010280000401000000CB +S315400144807FFFB54690102012C024A1689210001DEE +S31540014490901561F07FFFF50994146160C404A16829 +S315400144A0030000708210601F840880010300001021 +S315400144B08210601080A0800102800004010000008B +S315400144C07FFFB53690102012C024A168901561F087 +S315400144D09215A1C87FFFF4F994146160C404A168E0 +S315400144E0030000708210601F8408800103000010E1 +S315400144F08210601080A0800102800004010000004B +S315400145007FFFB52690102012C024A168901561F056 +S315400145109214E1E07FFFF4E994146160C404A16858 +S31540014520030000708210601F8408800103000010A0 +S315400145308210601080A0800102800005901561F014 +S315400145407FFFB51690102012901561F0C024A16826 +S31540014550941461607FFFF4D992100008C404A168E5 +S31540014560030000708210601F840880010300001060 +S315400145708210601080A080010280000401000000CA +S315400145807FFFB50690102012C024A168901561F0F6 +S315400145909215E1B87FFFF4C994146160C204A16821 +S315400145A08330600E8208600380A0600202800005AD +S315400145B01103C0007FFFB4F9901020121103C0000F +S315400145C07FFFF70031100080B0162228C024A16871 +S315400145D010800008BA1020007FFFB4F0901020121E +S315400145E0BA07600180A7600602800024B006201841 +S315400145F0832F60030910008088112218912F6005CE +S31540014600932F6001902200019202401D9001000803 +S315400146109202600115100124932A60039412A1604D +S315400146207FFFF4A692010009C4060000C2040000FF +S3154001463080A0800112BFFFE907100124C4062004AF +S315400146408610E160C200E00480A0800112BFFFE352 +S315400146500910008088112168C201000080A0600015 +S3154001466012BFFFDE01000000BA07600180A76006A5 +S3154001467012BFFFE0B006201811100080941461604B +S31540014680901222A87FFFF48D920220080310008029 +S3154001469082106218C40060A0C204616080A08001DB +S315400146A00280057A071000807FFFB4BC901020126B +S315400146B0C024A1681110008094146160901222C038 +S315400146C07FFFF47E9202200809100080C2046160D7 +S315400146D088112218C40120B880A080012280055D7E +S315400146E0C40120BC7FFFB4AD90102012C024A16844 +S315400146F01110008094146160901222D87FFFF46FEC +S31540014700920220080310008082106218C40060D013 +S31540014710C204616080A080010280053E07100080CE +S315400147207FFFB49E90102012C024A1681110008012 +S3154001473094146160901222F07FFFF4609202200887 +S3154001474009100080C204616088112218C40120E862 +S3154001475080A0800122800521C40120EC7FFFB48F17 +S3154001476090102012C024A168111000809414616039 +S31540014770901223087FFFF451920220080310008013 +S3154001478082106218C4006100C204616080A0800189 +S3154001479002800502071000807FFFB480901020122E +S315400147A0C024A168111010007FFFF53413100000DA +S315400147B00310300080A20001128003B7031000806D +S315400147C0C200616880A06000128003B3010000004E +S315400147D0111FE000131000007FFFF43D9414616047 +S315400147E0C4046160031FFC0080A08001228004E3B1 +S315400147F0C20420047FFFB4699010201B111FE00002 +S31540014800133000007FFFF43294146160C404616088 +S31540014810033FFC0080A08001228004D0C204200412 +S315400148207FFFB45E9010201C1110000092102010E2 +S315400148307FFFF4279414616003000070C404A168EB +S31540014840840880010300002080A0800102800004CA +S31540014850010000007FFFB4519010201DC024A168C3 +S3154001486011002000130FC0007FFFF41994146160FA +S31540014870C4046160030E000080A08001228004AF61 +S31540014880C20420047FFFB4459010201E111FDFFF94 +S3154001489013100000901223FF7FFFF40D9414616002 +S315400148A0C40461600311FFFF821063FF80A0800191 +S315400148B022800499C40420047FFFB4389010201F3D +S315400148C0111FD000130FF0007FFFF40194146160B3 +S315400148D0C40461600311FC8080A0800122800486AB +S315400148E0C20420047FFFB42D90102021111FDFFF49 +S315400148F094146160901223FF7FFFF3F59210000834 +S31540014900C40461600313FBFF821063FF80A0800132 +S315400149102280046FC40420047FFFB420901020201D +S315400149207FFFF6281103C0009007BFC8C024A168C5 +S315400149307FFFF3F692146160C4046160C207BFC889 +S3154001494080A0800122800459C40420047FFFB4134F +S315400149509010201309100080921461607FFFF3EBE1 +S31540014960901121C005100080C200A1C0C40461603D +S3154001497080A0800102800442071000807FFFB407B7 +S31540014980901020139016E1D87FFFF3E092146160F6 +S31540014990C4046160C206E1D880A080010280042D72 +S315400149A0091000807FFFB3FD901020139016A1D00F +S315400149B07FFFF3D692146160C4046160C20721F897 +S315400149C080A0800122800413C40420047FFFB3F336 +S315400149D090102013C024A168901561F07FFFF3CB9E +S315400149E092146160C4046160C20721F880A080010D +S315400149F0228003F8C40420047FFFB3E890102013FB +S31540014A00C024A1689014E1E07FFFF3C09214616075 +S31540014A10C204E1E0C404616080A08001228003E415 +S31540014A20C20660047FFFB3DD9010201305100C0011 +S31540014A30861020009010001492146160C43FBFF8A4 +S31540014A4005300F78070C00088610E0017FFFF3AFB1 +S31540014A50C43FBFF0C40461600310040080A080011C +S31540014A60228003CBC20420047FFFB3CC90102013D5 +S31540014A70A607BFF0921461607FFFF3A49010001364 +S31540014A80C20721F8C404616080A08001028003B09E +S31540014A90051000807FFFB3C1901020139015E1B837 +S31540014AA07FFFF39A92146160C204A1688330600E5D +S31540014AB08208600380A060020280000401000000B9 +S31540014AC07FFFB3B690102013C024A1687FFFF47F07 +S31540014AD01111F2000310E80080A20001128002EBDE +S31540014AE003100080C200616880A06000128002E766 +S31540014AF0010000007FFFF5B3111000001101F58997 +S31540014B007FFFF472901221E20308E96480A200015A +S31540014B10128002DB01000000C204A16880A060008F +S31540014B20128002D7010000007FFFF4681112A2082B +S31540014B300311410080A20001128002CE0100000053 +S31540014B40C204A16880A06000128002CA0100000070 +S31540014B507FFFF59C11001000901000149215E1B8EA +S31540014B607FFFF35194146160C404616003100C002B +S31540014B7080A080012280036EC20420047FFFB38798 +S31540014B80901020149015E1B8921000137FFFF34B5B +S31540014B9094146160C40461600320000080A0800118 +S31540014BA02280035BC20420047FFFB37C9010201453 +S31540014BB07FFFF38E90102001030FE00080A20001D9 +S31540014BC0128002A901000000C204A16880A0600011 +S31540014BD0128002A5010000007FFFF37C90102001A6 +S31540014BE0030FFC0080A200010280034280A2600004 +S31540014BF07FFFB36A901020147FFFF57211101000E9 +S31540014C00D41EE1D87FFFF3FFD01DE1B8C206A1D083 +S31540014C10D024616080A040080280032BD224200466 +S31540014C207FFFB35E901020227FFFF56611100000D2 +S31540014C30050FFC00861020009010001492100013FE +S31540014C40C43FBFF8050F2800070400808610E0F036 +S31540014C50941461607FFFF314C43FBFF0C4046160E4 +S31540014C60030FFC0080A0800122800313C2042004AC +S31540014C707FFFB34A901020157FFFF55211200000A7 +S31540014C80050FFC00861020009010001492100013AE +S31540014C90C43FBFF805001400070000408610E0013C +S31540014CA0941461607FFFF300C43FBFF0C4046160A8 +S31540014CB0030FFC0080A08001228002FBC204200475 +S31540014CC07FFFB336901020157FFFF53E113000006F +S31540014CD0052FFC008610200090100014921000133E +S31540014CE0C43FBFF805201400070000408610E001CC +S31540014CF0941461607FFFF2ECC43FBFF0C40461606D +S31540014D00032FFC0080A08001228002E3C20420041C +S31540014D107FFFB322901020157FFFF52A1110000066 +S31540014D20050FFC0086102000901000149215A1C8B2 +S31540014D30C43FBFF87FFFF2DC94146160C404616034 +S31540014D40C205A1C880A08001228002CCC4042004EF +S31540014D507FFFB312901020157FFFF51A1120000036 +S31540014D60050FFC0086102000901000149215A1C872 +S31540014D70C43FBFF805001400070000408610E0015B +S31540014D80941461607FFFF2C8C43FBFF0C404616000 +S31540014D90C205A1C880A08001228002B1C4042004BA +S31540014DA07FFFB2FE901020157FFFF50611300000FF +S31540014DB0052FFC0086102000901000149215A1C802 +S31540014DC0C43FBFF805201400070000408610E001EB +S31540014DD0941461607FFFF2B4C43FBFF0C205A1C81D +S31540014DE0C404616080A0800102800296091000809F +S31540014DF07FFFB2EA901020157FFFF4F211100000F8 +S31540014E00050FFC008610200190100014921000132B +S31540014E10C43FBFF80510000086102001941461605C +S31540014E207FFFF2A6C43FBFF0C404616003100000D7 +S31540014E3080A080012280027FC20420047FFFB2D776 +S31540014E40901020157FFFF4DF112000009010001410 +S31540014E50921000137FFFF29994146160C40461605B +S31540014E600310000080A080012280026EC20420044B +S31540014E707FFFB2CA901020157FFFF4D21130000097 +S31540014E80052FFC008610200190100014921000138B +S31540014E90C43FBFF87FFFF28994146160C404616026 +S31540014EA00330000080A080012280025AC2042004FF +S31540014EB07FFFB2BA901020157FFFF4C21110000097 +S31540014EC0050FFEAE071CD2E88410A1548610E011EE +S31540014ED09010001492100013C43FBFF8050FFC0454 +S31540014EE0072F26158410A0128610E23194146160B2 +S31540014EF07FFFF280C43FBFF0C4046160030FFEA789 +S31540014F008210629680A080012280023CC404200463 +S31540014F107FFFB2A2901020157FFFF4AA1120000056 +S31540014F2090100014921000137FFFF2729414616086 +S31540014F30C4046160030FFEA78210629680A08001BF +S31540014F4022800228C40420047FFFB29490102015C9 +S31540014F507FFFF49C11300000052FFC04072F261516 +S31540014F608410A0128610E2319010001492100013A2 +S31540014F70C43FBFF07FFFF25F94146160C404616077 +S31540014F80032FFEA78210629680A080012280020F25 +S31540014F90C40420047FFFB281901020157FFFF4895D +S31540014FA011100000051038008610200090100014E2 +S31540014FB092100013C43FBFF8051010008610200060 +S31540014FC0941461607FFFF24BC43FBFF0C40461603B +S31540014FD00310240080A08001228001F8C20420042D +S31540014FE07FFFB26E901020157FFFF47611200000EE +S31540014FF090100014921000137FFFF23E94146160EA +S31540015000C40461600310240080A08001228001E76E +S31540015010C20420047FFFB261901020157FFFF4691E +S315400150201130000090100014921000137FFFF231EE +S3154001503094146160C40461600310240080A080015F +S31540015040228001D6C20420047FFFB254901020155D +S315400150507FFFF45C1110000011002000130FE000E7 +S315400150607FFFF3109212600180A22000128001C8D6 +S31540015070010000007FFFF4531120000011002000C1 +S31540015080130FE0007FFFF3079212600180A2200018 +S31540015090128001BC010000007FFFF44A113000007C +S315400150A011002000130FE0007FFFF2FE9212600113 +S315400150B080A22000128001B0010000007FFFF44170 +S315400150C011100000050FFC008610200090100014FE +S315400150D0921461607FFFF20DC43FBFF8C404616062 +S315400150E0C207BFF880A080012280019AC40420042F +S315400150F07FFFB22A901020157FFFF4321120000065 +S31540015100901000147FFFF20192146160C404616043 +S31540015110C207BFF880A0800122800185C404200413 +S315400151207FFFB21E901020157FFFF426113000003C +S31540015130901000147FFFF1F592146160C404616020 +S31540015140C207BFF880A0800122800170C4042004F8 +S315400151507FFFB212901020157FFFF41A1110000044 +S315400151602B0FDFFF901563FF7FFFF2D8AA1563FF70 +S3154001517080A2001502800004010000007FFFB207F3 +S31540015180901020157FFFF40F11200000110FDFFF53 +S315400151907FFFF2CE901223FF030FE00080A20001B1 +S315400151A002800004010000007FFFB1FC9010201531 +S315400151B07FFFF404113000002B0FDFFF901563FFD2 +S315400151C07FFFF2C2AA1563FF80A200150280000488 +S315400151D0010000007FFFB1F1901020157FFFF3F928 +S315400151E0901020007FFFF2C190146160C404616099 +S315400151F0032FFE0080A0800122800140C2042004CA +S315400152007FFFB1E6901020162B1001247FFFF2C1DB +S3154001521090156168C4056168032FF00080A0800184 +S3154001522002800004010000007FFFB1DC90102016CF +S315400152307FFFF2C290156168C4056168030FE00003 +S3154001524080A0800102800004010000007FFFB1D3ED +S31540015250901020167FFFF2C990146160C40461600A +S31540015260030FFBF7821063F080A080012280011CAE +S31540015270C40420047FFFB1C9901020169215E1B8ED +S31540015280901000147FFFF19B94146160C204A168E1 +S315400152908330600E8208600780A0600202800005AC +S315400152A0031000807FFFB1BD9010201703100080CE +S315400152B0C400617003100046E40060F8821060F893 +S315400152C080A0400202800005031000807FFFB1B339 +S315400152D09010201803100080C200617480A0401213 +S315400152E002800005031000807FFFB1AC90102018AA +S315400152F003100080C200617880A06000128000F433 +S315400153000100000003100080C200617C80A06000A3 +S31540015310128000EC010000007FFFF14E0100000009 +S3154001532080A220010280052D01000000050C4029C4 +S315400153300723CD1B8410A0068610E09B9010001415 +S31540015340C027BFF0C027BFF4C43FBFF82910008172 +S315400153507FFFF1962B100082AA1560A0A4102000B1 +S31540015360A81520A0AC146160BA1000151080000881 +S31540015370AE1000107FFFB18990102019A404A0043B +S3154001538080A4A400228000172B100084C2050012BD +S31540015390C224C000901000137FFFF18792100016BF +S315400153A0832CA001C4040000C605400180A0C002B0 +S315400153B012BFFFF182074001C4006004C205E00448 +S315400153C080A0800112BFFFEC01000000A404A004EC +S315400153D080A4A40032BFFFEFC20500122B10008447 +S315400153E0A2146160AA1560A0A4102000AE10001599 +S315400153F010800008AC1000107FFFB1689010201A91 +S31540015400A404A00880A4A4000280001501000000A5 +S31540015410C2050012C224C000921000117FFFF13B69 +S3154001542090100013C4054012C204000080A0800100 +S3154001543012BFFFF28205C012C4006004C205A00477 +S3154001544080A0800112BFFFED01000000A404A00866 +S3154001545080A4A40032BFFFF0C205001281C7E00854 +S3154001546081E800007FFFB14D9010200F30BFF69AC2 +S315400154707FFFB14A9010200F10BFF68C110048EA09 +S315400154807FFFB1469010200F10BFF646D01DE1B800 +S315400154907FFFB1429010200F10BFF64FD01CE1E0C4 +S315400154A07FFFB13E9010200F10BFF608D41CE1E0FB +S315400154B07FFFB13A9010200F10BFF5F411151BE88C +S315400154C07FFFB1369010200F10BFF5E011151BC0BC +S315400154D07FFFB1329010200F10BFF5C4901020000D +S315400154E07FFFB12E9010200F10BFF5B011351BC0B4 +S315400154F07FFFB12A9010200F10BFF57AD01CE1E052 +S315400155007FFFB1269010200F10BFF583D01D61F0AB +S315400155107FFFB1229010200F10BFF565D01DE1B875 +S315400155207FFFB11E9010200F10BFF53FD41D61F0D3 +S315400155307FFFB11A9010200F10BFF52ED41CE1E069 +S315400155407FFFB1169010200F10BFF51A11151BE8F9 +S315400155507FFFB1129010200F10BFF50611151BC029 +S315400155607FFFB10E9010200F10BFF4DA11351BC02A +S315400155707FFFB10A9010200F10BFF4E69010200073 +S315400155807FFFB1069010200E30BFF4BF7FFFB103FD +S315400155909010200E10BFF4B11128C6AF7FFFB0FFA7 +S315400155A09010200E10BFF4A11108C6AF7FFFB0FBCB +S315400155B09010200E10BFF4911128C6AF7FFFB0F7AF +S315400155C09010200E10BFF4822108C6AF7FFFB0F3C2 +S315400155D09010200D30BFF4517FFFB0F09010200D98 +S315400155E010BFF444371000807FFFB0EC9010200CC0 +S315400155F010BFF3A2271000807FFFB0E89010200B68 +S3154001560030BFF34F7FFFB0E59010201110BFFA8FE6 +S31540015610110020007FFFB0E19010201110BFFA6DFC +S31540015620110020007FFFB0DD9010201110BFFA5C01 +S31540015630111E607E7FFFB0D99010201110BFFA4B2A +S315400156401111BBFE7FFFB0D59010201010BFF85E40 +S31540015650091000807FFFB0D19010201010BFF84F85 +S31540015660111000007FFFB0CD9010201430BFFD5BBC +S315400156707FFFB0CA9010202330BFFD367FFFB0C7F1 +S315400156809010202330BFFD297FFFB0C49010201316 +S3154001569030BFFD197FFFB0C19010201210BFFC4EE4 +S315400156A0111FE00012BFF30A01000000C204A16805 +S315400156B080A0600002BFF3080100000030BFF30480 +S315400156C07FFFB0B69010201830BFFF147FFFB0B3F4 +S315400156D09010201810BFFF0D031000800303FF1226 +S315400156E08210604A80A0800112BFFEE39215E1B8A4 +S315400156F010BFFEE59010001480A0600002BFFEC4FA +S315400157002B10012430BFFEBFC207BFFC80A0800121 +S3154001571012BFFE9001000000C204A16880A0600093 +S3154001572002BFFE8E0100000030BFFE8AC207BFFCE9 +S3154001573080A0800112BFFE7B01000000C204A16867 +S3154001574080A0600002BFFE790100000030BFFE75F7 +S31540015750C207BFFC80A0800112BFFE6601000000A7 +S31540015760C204A16880A0600002BFFE64010000007F +S3154001577030BFFE607FFFB0899010201530BFFE50CC +S315400157807FFFB0869010201530BFFE447FFFB08367 +S315400157909010201530BFFE3880A0600002BFFE2D5C +S315400157A00100000030BFFE2980A0600002BFFE1C40 +S315400157B00100000030BFFE1880A0600002BFFE0B52 +S315400157C00100000030BFFE07032C1B3482106030FD +S315400157D080A0800112BFFDF00100000030BFFDF046 +S315400157E0032C1B348210603080A0800112BFFDD78C +S315400157F00100000030BFFDD7032C1B348210602FFF +S3154001580080A0800112BFFDC30100000030BFFDC36F +S3154001581080A0600312BFFDA70100000030BFFDA7B5 +S3154001582080A0600312BFFD930100000030BFFD93CD +S3154001583080A0600212BFFD820100000030BFFD82E0 +S31540015840C4042004881121C8C201200480A080011B +S3154001585012BFFD680100000030BFFD6807100080DF +S315400158608610E1C8C200E00480A0800112BFFD4D50 +S315400158700100000030BFFD4D09100080881121C88C +S31540015880C201200480A0800112BFFD320100000048 +S3154001589030BFFD3280A0600112BFFD1E0100000035 +S315400158A030BFFD1E80A0600112BFFD060100000051 +S315400158B030BFFD0680A0600002BFFCF00100000081 +S315400158C030BFFCEC071000808610E1D0C200E00436 +S315400158D080A0400912BFFCD301000000C204A168A8 +S315400158E080A0600002BFFCD10100000030BFFCCDAA +S315400158F012BFFCC001000000C204A16880A0600084 +S3154001590002BFFCBE0100000030BFFCBA80A06000AF +S3154001591012BFFCA601000000C204A16880A060007D +S3154001592002BFFCA40100000030BFFCA080A06000C3 +S3154001593012BFFC9301000000C204A16880A0600070 +S3154001594002BFFC929015E1B830BFFC8D8410A1F8DE +S31540015950C200A004C404200480A0800112BFFC4EF2 +S3154001596001000000C404A168030000708210601F9A +S3154001597084088001030000108210601080A080011D +S3154001598012BFFC459015E1B830BFFC4680A06000CF +S3154001599012BFFC3601000000C204A16880A060006D +S315400159A002BFFC35A607BFF030BFFC30C40420045B +S315400159B080A0800112BFFC1C03100080C2006168F8 +S315400159C080A0600002BFFC1B05100C0030BFFC1616 +S315400159D009100080881121F8C201200480A08001AD +S315400159E012BFFC0603100080C4006168030000700A +S315400159F08210601F8408800103000010821060102D +S31540015A0080A0800112BFFBFD0100000030BFFBFDFD +S31540015A10071000808610E1F8C200E00480A08001F2 +S31540015A2012BFFBEB01000000C404A1680300007033 +S31540015A308210601F840880010300001082106010EC +S31540015A4080A0800112BFFBE20100000030BFFBE2F3 +S31540015A50C4042004881121D8C201200480A08001F9 +S31540015A6012BFFBD101000000C204A16880A0600002 +S31540015A7002BFFBD09016A1D030BFFBCBC40420049B +S31540015A808610E1C0C200E00480A0800112BFFBBCC9 +S31540015A9001000000C204A16880A0600002BFFBBBF8 +S31540015AA09016E1D830BFFBB6C207BFCC80A08001BB +S31540015AB012BFFBA703100080C200616880A060008E +S31540015AC002BFFBA60910008030BFFBA103300000D6 +S31540015AD08210602080A0800112BFFB90010000006F +S31540015AE0C204A16880A0600002BFFB8E01000000D5 +S31540015AF030BFFB8A80A0600012BFFB7B0100000023 +S31540015B00C204A16880A0600002BFFB7A111FDFFFBB +S31540015B1030BFFB750338000080A0800112BFFB67D0 +S31540015B2001000000C204A16880A0600002BFFB66BC +S31540015B30111FD00030BFFB6180A0600012BFFB5235 +S31540015B4003100080C200616880A0600002BFFB5163 +S31540015B50111FDFFF30BFFB4C80A0600012BFFB313D +S31540015B6001000000C204A16880A0600002BFFB30B2 +S31540015B701110000030BFFB2B80A0600012BFFB1E3E +S31540015B8001000000C204A16880A0600002BFFB1DA5 +S31540015B90111FE00030BFFB18C20420048610E21832 +S31540015BA0C400E10480A0800112BFFAFC031000800A +S31540015BB0C4006168030000708210601F8408800180 +S31540015BC0030000108210600880A0800112BFFAF322 +S31540015BD00100000030BFFAF3C204200480A0800116 +S31540015BE012BFFADF03100080C40061680300007031 +S31540015BF08210601F84088001030000108210600437 +S31540015C0080A0800112BFFAD60100000030BFFAD64B +S31540015C10C20420048610E218C400E0D480A08001AA +S31540015C2012BFFAC003100080C4006168030000700F +S31540015C308210601F840880010300001082106008F2 +S31540015C4080A0800112BFFAB70100000030BFFAB749 +S31540015C50C204200480A0800112BFFAA30310008071 +S31540015C60C4006168030000708210601F84088001CF +S31540015C70030000108210600880A0800112BFFA9ACA +S31540015C800100000030BFFA9AC20420048610E218CF +S31540015C90C400E0A480A0800112BFFA840100000084 +S31540015CA0C404A168030000708210601F840880014B +S31540015CB0030000108210600480A0800112BFFA7BAD +S31540015CC00100000030BFFA7BC206600480A080015B +S31540015CD012BFF9CD01000000C204A16880A0600096 +S31540015CE002BFF9CC9014E1E030BFF9C7C2066004A7 +S31540015CF080A0800112BFF9B901000000C204A16869 +S31540015D0080A0600002BFF9B89014E1E030BFF9B35A +S31540015D10C206600480A0800112BFF9A501000000FF +S31540015D20C204A16880A0600002BFF9A49014E1E01A +S31540015D3030BFF99FC206600480A0800112BFF9916D +S31540015D4003100080C200616880A0600002BFF99024 +S31540015D509014E1E030BFF98B071000808610E1F81E +S31540015D60C200E00480A0800112BFF96D010000006D +S31540015D70C404A168030000708210601F840880017A +S31540015D80030000108210601080A0800112BFF964E8 +S31540015D909015A1C810BFF9669215E1B8C206600414 +S31540015DA080A0800112BFF95303100080C2006168D0 +S31540015DB080A0600002BFF9529015A1C830BFF94DCD +S31540015DC009100080881121F8C201200480A08001B9 +S31540015DD012BFF93C01000000C404A1680300007031 +S31540015DE08210601F84088001030000108210601039 +S31540015DF080A0800112BFF9330100000030BFF933A2 +S31540015E00071000808610E1C8C200E00480A080012E +S31540015E1012BFF92103100080C200616880A06000B2 +S31540015E2002BFF9209015A1C830BFF91B09100080A7 +S31540015E30881121F8C201200480A0800112BFF8FD1B +S31540015E4001000000C404A168030000708210601FB5 +S31540015E5084088001030000108210601080A0800138 +S31540015E6012BFF8F49010001D10BFF8F69215E1B874 +S31540015E70C206600480A0800112BFF8E303100080CF +S31540015E80C200616880A0600002BFF8E29010001D68 +S31540015E9030BFF8DD071000808610E1F8C200E0044B +S31540015EA080A0800112BFF8CC01000000C404A168A3 +S31540015EB0030000708210601F8408800103000010F7 +S31540015EC08210601080A0800112BFF8C3010000005B +S31540015ED030BFF8C3C207BFD480A0800112BFF8B259 +S31540015EE003100080C200616880A0600002BFF8B163 +S31540015EF00310008030BFF8AC09100080881121F8EA +S31540015F00C201200480A0800112BFF88E010000006A +S31540015F10C404A168030000708210601F84088001D8 +S31540015F20030000108210601080A0800112BFF88526 +S31540015F309010001410BFF8879215E1B8C2066004AC +S31540015F4080A0800112BFF87401000000C204A1685C +S31540015F5080A0600002BFF8739010001430BFF86E45 +S31540015F60071000808610E1D8C200E00480A08001BD +S31540015F7012BFF85E01000000C204A16880A0600063 +S31540015F8002BFF85D9010001430BFF8588810E1C088 +S31540015F90C201200480A0800112BFF849031000808D +S31540015FA0C200616880A0600002BFF84890100014EA +S31540015FB030BFF84303003A9A8210630F80A08001F4 +S31540015FC012BFF7BD03100080C200616880A0600067 +S31540015FD002BFF7BC050006AF30BFF7B780A060002F +S31540015FE012BFF78103100080C4006168030000708E +S31540015FF08210601F8408800103000010821060082F +S3154001600080A0800112BFF7780500400010BFF77AE3 +S315400160100700C00009100080881121F8C201200440 +S3154001602080A0800112BFF6EF01000000C404A16800 +S31540016030030000708210601F840880010300001075 +S315400160408210601080A0800112BFF6E69014E1E054 +S3154001605010BFF6E89215E1B8C206600480A080013F +S3154001606012BFF6D501000000C204A16880A06000FD +S3154001607002BFF6D49014E1E030BFF6CFC206600409 +S3154001608080A0800112BFF6C101000000C204A168D0 +S3154001609080A0600002BFF6C09014E1E030BFF6BBBD +S315400160A0C206600480A0800112BFF6AD0100000067 +S315400160B0C204A16880A0600002BFF6AC9014E1E082 +S315400160C030BFF6A7C206600480A0800112BFF699D0 +S315400160D003100080C200616880A0600002BFF6988C +S315400160E09014E1E030BFF693071000808610E1F886 +S315400160F0C200E00480A0800112BFF67401000000D6 +S31540016100C404A168030000708210601F84088001E6 +S31540016110030000108210601080A0800112BFF66B50 +S315400161200100000030BFF66BC206600480A080010A +S3154001613012BFF65B03100080C200616880A0600058 +S3154001614002BFF65A9015A1C830BFF6550910008016 +S31540016150881121F8C201200480A0800112BFF644B3 +S3154001616001000000C404A168030000708210601F92 +S3154001617084088001030000108210601080A0800115 +S3154001618012BFF63B0100000030BFF63B071000800E +S315400161908610E1D8C200E00480A0800112BFF62932 +S315400161A001000000C204A16880A0600002BFF62879 +S315400161B09015A1C830BFF623071000808610E1D0A4 +S315400161C0C200E00480A0800112BFF61203100080D5 +S315400161D0C200616880A0600002BFF611091000800C +S315400161E030BFF60CC206600480A0800112BFF5E004 +S315400161F001000000C204A16880A0600002BFF5DF73 +S315400162009010001D30BFF5DA8810E1C0C2012004AC +S3154001621080A0800112BFF5CB03100080C2006168E7 +S3154001622080A0600002BFF5CA9010001D30BFF5C5C1 +S31540016230071000808610E1F8C200E00480A08001CA +S3154001624012BFF5B201000000C404A168030000704A +S315400162508210601F840880010300001082106010C4 +S3154001626080A0800112BFF5A90910008030BFF5AAB0 +S31540016270C207BFD480A0800112BFF59803100080E9 +S31540016280C200616880A0600002BFF59703100080DC +S3154001629030BFF59209100080881121F8C20120040F +S315400162A080A0800112BFF57401000000C404A168FA +S315400162B0030000708210601F8408800103000010F3 +S315400162C08210601080A0800112BFF56B90100014FF +S315400162D010BFF56D9215E1B8C206600480A0800139 +S315400162E012BFF55A01000000C204A16880A06000F7 +S315400162F002BFF5599010001430BFF554C207BFCC08 +S3154001630080A0800112BFF54603100080C20061687B +S3154001631080A0600002BFF5459010001430BFF540E3 +S31540016320071000808610E1D0C200E00480A0800101 +S3154001633012BFF52F03100080C4006168030000708E +S315400163408210601F840880010300001082106002E1 +S3154001635080A0800112BFF5260100000030BFF5265E +S3154001636012BFF50001000000C204A16880A06000D0 +S3154001637002BFF4FF1110000030BFF4FA12BFF4EE71 +S3154001638001000000C204A16880A0600002BFF4EDD4 +S315400163901130000030BFF4E812BFF4DC0100000008 +S315400163A0C204A16880A0600002BFF4DB1130000086 +S315400163B030BFF4D612BFF4CA03100080C200616830 +S315400163C080A0600002BFF4C91110000030BFF4C4C0 +S315400163D0C20420048610E320C400E17C80A0800131 +S315400163E012BFF4B301000000C404A16803000070A9 +S315400163F08210601F8408800103000010821060042F +S3154001640080A0800112BFF4AA0100000030BFF4AAA7 +S31540016410C204200480A0800112BFF497010000004D +S31540016420C404A168030000708210601F84088001C3 +S31540016430030000108210600480A0800112BFF48E18 +S315400164401110008110BFF49094146160C2042004BD +S315400164508610E320C400E14C80A0800112BFF4788D +S3154001646001000000C404A168030000708210601F8F +S3154001647084088001030000108210600880A080011A +S3154001648012BFF46F1110008110BFF4719414616052 +S315400164907FFFAD429010201010BFF45E11100081B5 +S315400164A0C206600480A0800112BFF3B9010000005A +S315400164B0C204A16880A0600002BFF3B89014E1E075 +S315400164C030BFF3B3C206600480A0800112BFF3A5BA +S315400164D001000000C204A16880A0600002BFF3A4CD +S315400164E09014E1E030BFF39FC206600480A08001B2 +S315400164F012BFF39101000000C204A16880A06000B0 +S3154001650002BFF3909014E1E030BFF38BC206600402 +S3154001651080A0800112BFF37D03100080C200616834 +S3154001652080A0600002BFF37C9014E1E030BFF377B6 +S3154001653009100080881121F8C201200480A0800141 +S3154001654012BFF35A03100080C40061680300007053 +S315400165508210601F840880010300001082106010C1 +S3154001656080A0800112BFF3519015A1C810BFF3530B +S315400165709215E1B8071000808610E1F8C200E004E8 +S3154001658080A0800112BFF33B0100000030BFF33B06 +S3154001659009100080881121D0C201200480A0800109 +S315400165A012BFF31801000000C204A16880A0600078 +S315400165B002BFF3179016A1D030BFF3120710008027 +S315400165C08610E1D8C200E00480A0800112BFF30228 +S315400165D001000000C204A16880A0600002BFF3016F +S315400165E09016A1D030BFF2FC09100080881121C855 +S315400165F0C201200480A0800112BFF2EC010000001C +S31540016600C204A16880A0600002BFF2EB9016E1D8F7 +S3154001661030BFF2E6071000808610E1C8C200E004F0 +S3154001662080A0800112BFF2D603100080C2006168CB +S3154001663080A0600002BFF2D59015A1C830BFF2D04C +S3154001664009100080881121F8C201200480A0800130 +S3154001665012BFF2B10100000030BFF2B1C2066004C0 +S3154001666080A0800112BFF29001000000C204A1681F +S3154001667080A0600002BFF28F9010001D30BFF28AE9 +S31540016680071000808610E1C8C200E00480A08001A6 +S3154001669012BFF27A01000000C204A16880A0600026 +S315400166A002BFF2799010001D30BFF274C207BFFCE1 +S315400166B080A0800112BFF26603100080C2006168AB +S315400166C080A0600002BFF2659010001D30BFF260ED +S315400166D0881721F8C201200480A0800112BFF2422E +S315400166E00100000030BFF242C4042004C206600427 +S315400166F080A0800112BFF21E01000000C204A16801 +S3154001670080A0600002BFF21D9010001430BFF21845 +S315400167108615A1C8C200E00480A0800112BFF2091B +S3154001672001000000C204A16880A0600002BFF20817 +S315400167309010001430BFF203C2042004C407BFFC0A +S3154001674080A0800112BFF1F303100080C20061688E +S3154001675080A0600002BFF1F22D10008030BFF1ED44 +S3154001676080A2400112BFEFA201000000C204A1684D +S3154001677080A0600002BFEFA11111FC0030BFEF9C69 +S3154001678080A2400112BFEF9003100080C2006168F1 +S3154001679080A0600022BFEF8F113C02AF30BFEF8A6D +S315400167A012BFEEDB01000000C204A16880A06000B8 +S315400167B002BFEED90100000030BFEED512BFEECCCC +S315400167C001000000C204A16880A0600002BFEECAB9 +S315400167D00100000030BFEEC67FFFAC70901020195B +S315400167E010BFFAD4050C402981D8200081C3E008A6 +S315400167F00100000081D8200082102400C0A043007F +S3154001680081C3E00801000000853220109132201832 +S31540016810900A200F8408A00380A00008826020000F +S3154001682081C3E008900880019DE3BF887FFFEB7A32 +S315400168309010200C808A200812800004010000007C +S3154001684081C7E00891E820007FFFAC4D9010200EF3 +S31540016850C2800320853060188088A00F028000DD49 +S315400168602F100123833060108208600380A06002EC +S31540016870028000E0C225E0C880A06003028000FFDC +S3154001688080A06001028000EC2910010C2310010C4C +S315400168902110010C2B10010C2710010C2510010CA5 +S315400168A081D8200081D8200082102400C0A0430056 +S315400168B0031000A1051000A0821060008410A00002 +S315400168C0873060048610E00188100003C878800094 +S315400168D08800A004C67900008610200AC6784000C8 +S315400168E0C8046000C60420041B008000190800008B +S315400168F09A13600A993B0004980B0003992B2002D6 +S3154001690098030001DA7B00001B010000171000000C +S315400169109813608E973AC004960AC003972AE002FC +S315400169209602C001D87AC000171C00001901C000A8 +S31540016930893AC0049813208E860900038728E0020D +S315400169408600C001D878C0003B1000A28200600CCE +S31540016950BA176000873760048610E001C6784000A8 +S315400169608213601E86076008C278C000821020002C +S315400169708807600C86100001C67900002D1000A220 +S315400169809A076004AC15A1008735A004B81000161B +S315400169908610E001C67B4000B405A008C27E800097 +S315400169A01B1000C0B605A004861360008330E004C6 +S315400169B09810601AD87EC000C02360001B048D1554 +S315400169C09A136278DA20E004DA05E0C83310010050 +S315400169D09A03600CB21660008605A00CB010200028 +S315400169E0C627BFF8DA27BFFC901000189210200383 +S315400169F0C227BFF0C427BFEC40000AB0C827BFF486 +S31540016A00DA07BFFC992A000DC607BFF8980300199B +S31540016A10993320049813201ED878C000B00620016F +S31540016A208600E00480A62008C207BFF0C407BFEC79 +S31540016A3012BFFFECC807BFF417100020DE05200C7B +S31540016A408612E168C822E16809100020D005600875 +S31540016A50D804A014DA04E010D2042004D40460005F +S31540016A60960BE001972AC008C6212160880A600377 +S31540016A708929000A8812C004960B2002972AC00D64 +S31540016A809611000B8530A004D620E0209610600EAA +S31540016A90D620E0289608BFF0840B20018528800D7A +S31540016AA0841100028210601EC420E02CC420E01430 +S31540016AB0050100008410A01EC220E010C420E0049D +S31540016AC0F620E00CF420E018F620E024050076419B +S31540016AD0031000208410A1C082106000C420E00889 +S31540016AE0833060048210601EC220E01C82102100A7 +S31540016AF0D6A04320C4800320C280432084102001B5 +S31540016B0082102200C4A04320C68043208610200064 +S31540016B10C6A04320C4A0032081D820007FFFEABE3F +S31540016B2090102000913A200C808A20030280006553 +S31540016B3001000000C280032082102100C280432050 +S31540016B4082102200C2804320C80420048809200301 +S31540016B50C2046000C605200CC4056008D404A01414 +S31540016B60D604E010832900019808E0019A0AA001A1 +S31540016B70992B00029B2B400B981300019A13000D91 +S31540016B80C803400080A120000280000388136004EE +S31540016B9030800000D201000011048D159012227838 +S31540016BA080A2400812BFFFFB111000009E08E002C0 +S31540016BB0D00200009F2BC0029E13C001DE03C0001D +S31540016BC080A3C008228000428608E003308000008E +S31540016BD02310010C2110010CC025E0C82B10010C1B +S31540016BE02910010C2710010C10BFFF2E2510010C96 +S31540016BF02110010C2910010C2510010C2310010C48 +S31540016C008210203F2B10010C2710010CC2242004B6 +S31540016C10C224A014C225200C8210201AC22460006E +S31540016C2082102014C22560088210200E10BFFF1D5D +S31540016C30C224E0102510010C2310010C8210203FC4 +S31540016C402110010C2B10010C2710010CC225200C20 +S31540016C50C224A01482102019C22460008210207F11 +S31540016C60C224200482102013C22560088210200D00 +S31540016C7010BFFF0CC224E0102110010C2710010C9B +S31540016C802310010C8210200F2B10010C2910010C2E +S31540016C902510010CC224E010C22420048210201CBD +S31540016CA0C224600082102015C22560088210207F10 +S31540016CB0C225200C8210203F10BFFEFAC224A01428 +S31540016CC07FFFC4D30100000030BFFF9B8528C0026F +S31540016CD082108001C20040000321D95082106321F5 +S31540016CE0C2210000C401000080A08001028000038F +S31540016CF001000000308000008210000D05048D1552 +S31540016D008410A278072AF37B8610E301C438400039 +S31540016D10C4384000C203400080A0400902800003FD +S31540016D200100000030800000C4010000032AF37B0B +S31540016D308210630180A0800112BFFFFBC205E0C83B +S31540016D40940AA0038200600C972A800B84102001CC +S31540016D50AE13000B85288001B0102000EE25C0003F +S31540016D60C0A0022092102003C227BFF0C427BFEC67 +S31540016D70400009D290100018C207BFF0912A0001C5 +S31540016D80C606400880A0C01712800008C407BFECA1 +S31540016D90B006200180A6200802800005AE05C0028B +S31540016DA010BFFFF0EE25C00030800000C0A00220D9 +S31540016DB0AE102003B0102000852DE002C4058002EC +S31540016DC08608A06080A00003C227BFF0B04000182B +S31540016DD0C427BFEC9005FFFD400009B8921020037F +S31540016DE0C207BFF0C407BFEC872A000186064003ED +S31540016DF08730E0048610E01E8418C0028088BF9F59 +S31540016E0012800009AE05E00180A5E00B32BFFFEC20 +S31540016E10852DE00280A6200012800004D805200CB2 +S31540016E203080000030800000C8056008DA04200484 +S31540016E30C4046000C604A014C204E010980B2001EB +S31540016E409A0B6003892B0004852B40028608E002D9 +S31540016E50841100028328C001821080019FC0400036 +S31540016E600100000082102400C0A04300C0A00220FF +S31540016E708210200084072020C607200C8608E06087 +S31540016E8080A00003B80720048240000180A70002C9 +S31540016E9032BFFFFBC607200C80A06008228000039A +S31540016EA0C206C00030800000808860400280000435 +S31540016EB08088602032800003C2076008308000006D +S31540016EC08088602032800003C20680003080000046 +S31540016ED0808860201280000301000000308000009D +S31540016EE083480000842860808188A000010000005A +S31540016EF00100000001000000D8042004C80460001D +S31540016F00DA05200CC4056008C604A014C204E010CA +S31540016F10980B20039A0B6001892B0004852B4002B4 +S31540016F208608E001841100028328C0018410A00470 +S31540016F3082108001C20040009210200491D02002AC +S31540016F40010000007FFFE9B490102000913A200C27 +S31540016F50808A200312800005841020007FFFC42C04 +S31540016F60010000008410200082102200C4A04320AA +S31540016F7086102001C6A04320C4A043200310000070 +S31540016F80C4804380C4A043807FFFC48E90102000FC +S31540016F9081D8200030BFFE2B9DE3BFA040000822D0 +S31540016FA001000000808A21001280000401000000D7 +S31540016FB081C7E00891E820007FFFAA9423100120B1 +S31540016FC0912A20047FFFAA6E90022005A214600038 +S31540016FD0C204600480A060000280001A8210200072 +S31540016FE0A010200084044001C8044001C600A0044A +S31540016FF0C200A0089B39201F818360000100000068 +S3154001700001000000010000008479000380A0800196 +S3154001701002800004A00420017FFFAA609010200195 +S3154001702082040010820040108328600284044001DB +S31540017030C400A00480A0A00012BFFFEC840440015C +S3154001704023100120A2146138C204600480A06000AC +S315400170500280001982102000A01020008404400103 +S31540017060C8044001C600A004C200A00881802000D7 +S3154001707001000000010000000100000084710003CE +S3154001708080A0800102800004A00420017FFFAA4362 +S315400170909010200282040010820040108328600272 +S315400170A084044001C400A00480A0A00012BFFFEDEB +S315400170B084044001400008890100000080A22000AC +S315400170C012BFFFBC901020037FFFAA34B0102000EE +S315400170D081C7E00881E800009DE3BFA07FFFAA4B7E +S315400170E001000000912A20047FFFAA259002200476 +S315400170F0400007CF0100000080A221230280000446 +S31540017100010000007FFFAA2590102001400007C61C +S3154001711001000000808A21000280002923100120FD +S31540017120A2146180C204600880A060090280001533 +S3154001713082102000A010200084044001C6044001B2 +S31540017140C800A004C200A0088459000380A08001A1 +S3154001715002800004A00420017FFFAA1090102002A3 +S31540017160820400108200401083286002840440019A +S31540017170C400A00880A0A00912BFFFF18404400109 +S31540017180400007B80100000080A2200002800023D1 +S3154001719001000000400007B30100000080A220006A +S315400171A002800016010000004000079F0100000018 +S315400171B0808A2200128000040100000081C7E00895 +S315400171C091E82000400007F80100000080A220005D +S315400171D00280001A01000000400007F30100000090 +S315400171E080A2200012BFFFF6010000007FFFA9EB3D +S315400171F09010200430BFFFF27FFFA9E890102003D2 +S315400172004000078901000000808A220002BFFFEC8E +S315400172100100000030BFFFEC7FFFA9E09010200382 +S31540017220400007900100000080A2200012BFFFDF4E +S315400172300100000030BFFFF17FFFA9D89010200464 +S3154001724030BFFFE6000000009DE3BFA09410200080 +S315400172501110005C9012227C1310005C9212628025 +S315400172601710005C9612E2881910005C9813228C64 +S3154001727093C2000081C240001080019181C2C000CA +S3154001728081C300001080018E9402A0019402A001E6 +S3154001729080A2A0031280018A0100000087440000F9 +S315400172A08D30E00E8C89A00780A1A000028000C726 +S315400172B001000000AF30E00BAE0DE00780A5E00015 +S315400172C0128000C20100000080A1A0021280003598 +S315400172D00100000025100000E41C8000251000007C +S315400172E029100000A8152104A6100012AA100012A8 +S315400172F0AC100014A1802046A4100000AA10000082 +S3154001730001000000A180204EA810210001000000CC +S31540017310A18000000100000001000000E83CA0300F +S3154001732082A480131280016682A500161280016430 +S315400173300100000001000000010000008744000038 +S315400173408D30E00B8C89A0078CA1A0051280015CD1 +S31540017350A1800000010000000100000001000000C2 +S31540017360E81CA03082A500161280015582A5401264 +S31540017370A41000001280015201000000010000002B +S31540017380874400008D30E00B8C89A0078CA1A003B7 +S315400173901280014B010000001080008C01000000AA +S315400173A080A1A0011280002325100000E41C80006A +S315400173B02510000029100000A8152104A61000126E +S315400173C0AA100012AC100014A1802046A41000009F +S315400173D0AA10000001000000A180204EA810210043 +S315400173E001000000A1800000010000000100000032 +S315400173F001000000E83C800082A480131280013025 +S3154001740082A500161280012E010000000100000035 +S31540017410874400008D30E00B8C89A0078CA1A00227 +S315400174201280012701000000108000680100000061 +S3154001743080A1A00312800065A6100000A210200EB4 +S31540017440A1844000A6100000A1800000A814E0001D +S31540017450AB44000001000000AC14E0000100000054 +S31540017460AF44000080A5200012800115AA8D6E0050 +S3154001747080A540001280011280A5A0001280011053 +S31540017480AF35E00BAE0DE00780A5E0011280010C9F S3154001749001000000A0100000A1844000A6100000D9 -S315400174A0A1800000A210200AA1844000A41000007F -S315400174B0A1800000E8180000AC100000AE100000EA -S315400174C0EC04C012EE04E00480A50016128000E828 -S315400174D080A54017128000E601000000A544000087 -S315400174E0A534A00BA40CA00780A4A002068000E04E -S315400174F00100000021100140A0142200EC1C0000F4 -S31540017500A0042008E81C0000A1844000A610000049 -S31540017510A1800000A210200EA1844000A4100010FA -S31540017520AC100000AE100000A18000000100000078 -S3154001753001000000EC3C8013AC100000AE100000CE -S31540017540E81CC01280A50016128000C980A540170C -S31540017550128000C701000000A5440000A534A00B1D -S31540017560A40CA00780A4A004128000C10100000061 -S3154001757010800002010000008B4440008A09601F10 -S3154001758080A160010280000A8C1000059DE3BFA026 -S315400175908AA1600116BFFFFE0100000081E80000DC -S315400175A08CA1A00116BFFFFE0100000001000000F2 -S315400175B001000000A023A080A02C20078E100010FF -S315400175C0A3480000E2240000C2242004C43C200851 -S315400175D0C83C2010CC3C2018F03C2020F43C20280C -S315400175E0F83C2030FC3C2038D03C2040D43C20485C -S315400175F0D83C2050DC3C2058A5500000E4242060B3 -S315400176008010200882102001841020028610200359 -S31540017610881020048A1020058C10200681900000D5 -S31540017620A42C601F818C8000010000000100000035 -S3154001763001000000030040408210610184100000F7 -S3154001764086100000894440008809201F86100004E6 -S31540017650A010000284004002A210000284004002F1 -S31540017660A410000284004002A610000284004002D9 -S31540017670A810000284004002AA10000284004002C1 -S31540017680AC10000284004002AE10000284004002A9 -S3154001769090100002840040029210000284004002D1 -S315400176A094100002840040029610000284004002B9 -S315400176B098100002840040029A10000284004002A1 -S315400176C09C100002840040029E1000028400400289 -S315400176D081E0000086A0E00116BFFFDE0100000048 -S315400176E003004040821061018410000086100004AE -S315400176F080A400021280003F8400400280A4400220 -S315400177001280003C8400400280A48002128000392D -S315400177108400400280A4C0021280003684004002E8 -S3154001772080A50002128000338400400280A54002F9 -S31540017730128000308400400280A580021280002D14 -S315400177408400400280A5C0021280002A84004002C3 -S3154001775080A20002128000278400400280A24002DB -S31540017760128000248400400280A2800212800021FF -S315400177708400400280A2C0021280001E84004002A2 -S3154001778080A300021280001B8400400280A34002B5 -S31540017790128000188400400280A3800212800015E6 -S315400177A08400400280A3C00212800012840040027D -S315400177B081E0000086A0E00116BFFFCE0100000077 -S315400177C080A020001280000B80A0FFFF12800009DC -S315400177D080A160051280000780A1A00612800005E5 -S315400177E001000000A010000710800006C0242020E0 -S315400177F0A01000079010200110800002D024202004 -S3154001780082100007C400400081888000010000000A -S315400178100100000001000000C4186008C81860108B -S31540017820CC186018F0186020F4186028F8186030F9 -S31540017830FC186038D0186040D4186048D818605099 -S31540017840DC186058E4006060C200600481948000E6 -S31540017850010000000100000001000000A010000727 -S31540017860F004202081C7E00881E8000010BFFFFC3A -S31540017870B01000000100000081D8200081C3E0085B -S31540017880010000001B100144D80361508210200101 -S315400178908328400C1B10014482007FFFD8036154AA -S315400178A082084008932A400C900040098213C00088 -S315400178B07FFFE77D9E104000010000001B10014440 -S315400178C0D8036150821020018328400C1B100144CB -S315400178D082007FFFD8036154932A400C82084008F6 -S315400178E0900040099210000A8213C0007FFFE770A2 -S315400178F09E104000010000001B100144D803615056 -S31540017900821020018328400C1B10014482007FFF16 -S31540017910D8036154932A400C8208400890004009DC -S315400179209210000A8213C0007FFFE7659E10400057 -S31540017930010000001B100144D80361508210200150 -S315400179408328400C1B10014482007FFFD8036154F9 -S3154001795082084008932A400C900040098213C000D7 -S315400179607FFFE7559E104000010000001B100144B7 -S31540017970D803615C821020018328400C1B1001440E -S3154001798082007FFFD803616C932A400C820840082D -S31540017990900040099210000A8213C0007FFFE74C15 -S315400179A09E104000010000001B100144D803615C99 -S315400179B0821020018328400C1B10014482007FFF66 -S315400179C0D803616C932A400C820840089000400914 -S315400179D09210000A8213C0007FFFE7419E104000CB -S315400179E0010000009DE3BF582D100144A210200064 -S315400179F0C205A16080A440011680001BA010200092 -S31540017A002B1001442910014427100144A4102001E0 -S31540017A10D005615C912C8008C205216C90023FFF24 -S31540017A20832C0001900A00187FFFE727900200018E -S31540017A30C204E14C901E0008900A000180A0000893 -S31540017A40A2647FFFA0042001C205A16080A40001B9 -S31540017A5026BFFFF1D005615C80A46000128000035F -S31540017A60B0102000B010200181C7E00881E8000075 -S31540017A701B100144D803615C821020018328400C0D -S31540017A801B10014482007FFFD803616C82084008C5 -S31540017A90932A400C900040098213C0007FFFE70AF9 -S31540017AA09E104000010000001B100144D803615C98 -S31540017AB0821020018328400C1B10014482007FFF65 -S31540017AC0D803616C82084008932A400C9000400913 -S31540017AD08213C0007FFFE7009E10400001000000B6 -S31540017AE0952AA00D0328000094028009D020400069 -S31540017AF09422B000D420600481C3E0080100000054 -S31540017B00033FFFBF821062F89DE38001193FFFBF2B -S31540017B1094132368B407BFF8031000459606800AFC -S31540017B2082106020C222E00C03100044821063E000 -S31540017B30C222E0041B1000449A1363C0033FFFBFF7 -S31540017B40DA26800A90132380331000458210635C45 -S31540017B5094068008981323C0921660008200401E46 -S31540017B60D222E008D4204000B006800C7FFFA59FBA -S31540017B70901020067FFFE6C890102000920A3FF041 -S31540017B807FFFE6C790102000210000307FFFE6C24C -S31540017B9090102000808A001012BFFFFD01000000F6 -S31540017BA07FFFFF36210000307FFFE6BB90102000AB -S31540017BB0808A001012BFFFFD010000007FFFE6B67C -S31540017BC090102000030020408210600F92120001A5 -S31540017BD07FFFE6B3901020007FFFE6AF90102008AC -S31540017BE021100144D02421487FFFE6AB9010200CA0 -S31540017BF0A73A2010993A2014A60CE007980B200FBB -S31540017C00DA042148A8230013A80520089F3B6014E5 -S31540017C10933B60109B3B601894050013A210200112 -S31540017C20AC03200A9E0BE00F96102400AE0B6003B6 -S31540017C309402A00221200000992AC00C1B10014485 -S31540017C408203E00A952C400A9424000A832C4001C1 -S31540017C50D8236168A02400011B100144031001448C -S31540017C60EC23615C972AC00FAA03E00A1B1001446A -S31540017C70D620614403100144EA236154EA2061504D -S31540017C801B10014403100144D423614C920A60073E -S31540017C90A53A2018D0206158153FFFBF932C4009C3 -S31540017CA0A40CA003031001449412A358932C400939 -S31540017CB0A404A0013910014437100144EC20616C41 -S31540017CC09B2C40149402801EE0272164E426E16047 -S31540017CD0AA027FFFDA228000AC85E0010280000C17 -S31540017CE0BB2C4013033FFFBF82106368A00680018F -S31540017CF0A4100016D00400009FC20000A004200476 -S31540017D00A484BFFF32BFFFFDD00400007FFFE662BF -S31540017D1090102000920A3FFC7FFFE6619010200000 -S31540017D20A410200080A4801616800022A2102000F4 -S31540017D30033FFFBFAE106368A610001AA0102000D3 -S31540017D4080A4001636800018A404A0011080000506 -S31540017D50A810001780A4001636800013A404A001C1 -S31540017D60921000107FFFFEC8D004C014820A00158D -S31540017D7080A0401512BFFFF8A0042001C204C01420 -S31540017D8082184008DA0721648208400D80A000016C -S31540017D90A2647FFF80A4001606BFFFF39210001075 -S31540017DA0A404A00180A4801606BFFFE5A604E00452 -S31540017DB07FFFE63990102000A610000890102000A1 -S31540017DC07FFFE6379214E00380A46000028001B190 -S31540017DD001000000833CE00C80886003128000A50E -S31540017DE0030048D1833CE01380886003128001ADD3 -S31540017DF0010000007FFFFEA1210000307FFFE62643 -S31540017E0090102000808A001012BFFFFDA6100008C6 -S31540017E10A4102000C206E16080A480011680000DF6 -S31540017E20832CA00292100012901000187FFFFED002 -S31540017E3094102000A404A001C206E16080A4800140 -S31540017E4006BFFFFA92100012A4102000832CA00254 -S31540017E50A404A001C026000180A4A01E04BFFFFD0A -S31540017E60832CA00282102005C22600009A10200110 -S31540017E70DA26200482102002C22620089A10200306 -S31540017E80DA26200C7FFFFED89010001880A2200031 -S31540017E90028001D301000000C206000080A06005F7 -S31540017EA002800004010000007FFFA4D59010200647 -S31540017EB07FFFFECD9010001880A22000128001C4E1 -S31540017EC001000000A4102000C206E16080A48001E8 -S31540017ED01680000F92100012A00620049410200074 -S31540017EE07FFFFEB290100018921000129010001001 -S31540017EF07FFFFEAE94102000A404A001C206E160FB -S31540017F0080A4800106BFFFF6921000127FFFE5F8BC -S31540017F10901000187FFFE5F6900620207FFFE5F4DC -S31540017F20900620407FFFE5F290062060A4102000D5 -S31540017F30C206E16080A4800106800196A21020005D -S31540017F407FFFA4AF90102008173FFFBF8212E3C006 -S31540017F50940680018212E35C8200401ED81A80009A -S31540017F60C2004000D83840009612E380C206800B1A -S31540017F7080A06005128000068206800BDA0060044C -S31540017F8080A3600102800005A41020007FFFA49C0D -S31540017F9090102009A4102000C206E16080A480014F -S31540017FA016800011A2102000A00620049210001293 -S31540017FB07FFFFEBE90100010901A200180A000089D -S31540017FC0A2647FFFA404A001C206E16080A48001EF -S31540017FD006BFFFF89210001280A4600102800005DE -S31540017FE0833CE0137FFFA4869010200A833CE01374 -S31540017FF0808860031280018082102005C22600001D -S315400180009A102001DA26200482102002C226200876 -S315400180109A102003DA26200C1B3FFFBF9A136358A0 -S315400180209A03401ED00340004000048D9210001D6B -S31540018030032EEEEEA12A2002A21063BBE226001017 -S315400180407FFFFE699010001880A220001280016710 -S3154001805001000000C206001080A040110280000508 -S31540018060030048D17FFFA46690102012030048D137 -S31540018070821061671B226AF3C22620209A1361EFA0 -S31540018080DA262024C20E202080A06001028000044E -S31540018090010000007FFFA45A9010201AC20E202131 -S315400180A080A0602302800004010000007FFFA454E9 -S315400180B09010201BC20E202280A060450280000441 -S315400180C0010000007FFFA44E9010201CC20E202309 -S315400180D080A0606702800004010000007FFFA44881 -S315400180E09010201DC20E202480A0608902800004C9 -S315400180F0010000007FFFA4429010201EC20E2025E1 -S3154001810080A060AB02800004010000007FFFA43C18 -S315400181109010201FC20E202680A060CD0280000450 -S31540018120010000007FFFA43690102020C20E2027B8 -S3154001813080A060EF02800004010000007FFFA430B0 -S3154001814090102021C21620208328601083306010B1 -S3154001815080A0612302800004010000007FFFA42863 -S3154001816090102022DA1620229B2B6010030000116A -S315400181709B3360108210616780A340010280000436 -S31540018180010000007FFFA41E90102023DA16202450 -S315400181909B2B6010030000229B336010821061AB61 -S315400181A080A3400102800004010000007FFFA41467 -S315400181B090102024DA1620269B2B601003000033F2 -S315400181C09B336010821061EF80A34001028000055D -S315400181D0821020307FFFA40A901020258210203083 -S315400181E0C22E2020030C08D1DA06202082106167B6 -S315400181F080A3400102800005821020317FFFA40048 -S315400182009010202782102031C22E2021030C0C51C0 -S31540018210DA0620208210616780A3400102800005B2 -S31540018220821020327FFFA3F6901020288210203240 -S31540018230C22E2022210C0C4CDA0620208214226701 -S3154001824080A3400102800005821020337FFFA3EC0A -S315400182509010202982102033C22E20239A142233D3 -S31540018260C206202080A0400D0280000582102034E5 -S315400182707FFFA3E39010202A82102034C22E2024AF -S31540018280030D2AF3DA062024821061EF80A3400110 -S3154001829002800005821020357FFFA3D99010202B44 -S315400182A082102035C22E2025030D0D73DA062024B7 -S315400182B0821061EF80A340010280000582102036C2 -S315400182C07FFFA3CF9010202C82102036C22E20266D -S315400182D0210D0D4DDA062024821422EF80A34001A0 -S315400182E002800005821020377FFFA3C59010202D04 -S315400182F082102037C22E20279A142237C206202404 -S3154001830080A0400D02800005210000107FFFA3BC24 -S315400183109010202E2100001082142041C2362020C8 -S315400183200310104CDA0620208210623380A34001EC -S3154001833002800005821422437FFFA3B19010202FB3 -S3154001834082142243C236202203101050DA0620201E -S315400183508210624380A34001028000052100001182 -S315400183607FFFA3A7901020302100001182142045E1 -S31540018370C23620240311114DDA06202482106237B9 -S3154001838080A3400102800005821422477FFFA39CFF -S315400183909010203182142247C236202603111151F2 -S315400183A0DA0620248210624780A34001028000043D -S315400183B0010000007FFFA392901020327FFFFD2F26 -S315400183C0A4102000C206E16080A480011680001539 -S315400183D01B100144D403616C96100001A0102000CB -S315400183E080A4001D3680000CA404A001832C800AC1 -S315400183F09B286002992CA01082130010C226000D02 -S31540018400A004200180A4001D06BFFFFC9A0360045E -S31540018410A404A00180A4800B26BFFFF2A010200077 -S315400184207FFFE49D9010200003000010808A000128 -S3154001843012BFFFFC01000000A4102000C206E1604B -S3154001844080A4800116800114921000127FFFFD89DD -S315400184509010001815100144C202A14C900A000167 -S31540018460820E000180A20001A404A00112BFFFF404 -S31540018470901020337FFFA36201000000C206E16035 -S3154001848080A4800106BFFFF29210001230800102E3 -S315400184907FFFA35B9010200110BFFE50833CE00C90 -S315400184A07FFFE47D90102000133FFFF09212603F62 -S315400184B0920A0009A61000087FFFE4799010200077 -S315400184C07FFFE3D0A41020001303C0009214C0091B -S315400184D07FFFE4739010200080A480161680000967 -S315400184E092100012901660007FFFFD049410200048 -S315400184F0A404A00180A4801606BFFFFB92100012BF -S315400185007FFFE3C0010000007FFFE463901020007D -S31540018510913A200A900A200380A220010280000499 -S31540018520010000007FFFA3369010200201000000E9 -S3154001853092102000901660007FFFFCE1941020000D -S31540018540010000007FFFE454901020001303C00097 -S31540018550922A00097FFFE45290102000010000009A -S315400185607FFFE3A8010000007FFFE44B901020004D -S31540018570913A200C900A200380A2200102BFFE1EE0 -S31540018580010000007FFFA31E9010200330BFFE1A9A -S31540018590921000127FFFFD4590100018901A200599 -S315400185A080A00008A2647FFFA404A001C206E16086 -S315400185B080A4800106BFFFF89210001280A46000DB -S315400185C012BFFE63173FFFBF30BFFE5E7FFFA30CA6 -S315400185D09010200710BFFE3DA41020007FFFA30886 -S315400185E09010200530BFFE2D7FFFA305901020116E -S315400185F030BFFE997FFFE42890102000033FFFF033 -S315400186008210603F920A00017FFFE425901020000E -S31540018610033FFFBFA01063809210200094102000FA -S315400186207FFFFCE2900680107FFFE41B9010200044 -S315400186300303C000921200017FFFE419901020004D -S3154001864010800006A4102000900680107FFFFCD702 -S3154001865094102005A404A001C206E16080A4800113 -S3154001866006BFFFFA92100012033FFFBFA0106380BE -S315400186709A102001DA2E801003004000D80680109F -S315400186808210600580A30001028000040100000001 -S315400186907FFFA2DB9010200B7FFFE3FF90102000AD -S315400186A0913A2006900A200380A22001028000040C -S315400186B0010000007FFFA2D29010200C7FFFE3F65D -S315400186C0901020001303C000922A00097FFFE3F4B3 -S315400186D09010200092102000900680107FFFFCB37E -S315400186E0941020007FFFE3EC901020002103C0008E -S315400186F0921200107FFFE3EA901020007FFFE3E62D -S3154001870090102000808A001002BFFFFDA6100008CD -S31540018710A4102000C206E16080A480011680000EEC -S31540018720033FFFBF9A102001A2106380A12B401D79 -S3154001873092100012900680117FFFFC8D94043FFF3A -S31540018740A404A001C206E16080A4800106BFFFFA2D -S31540018750921000121303C000922CC0097FFFE3D090 -S31540018760901020002103C0007FFFE3CB9010200032 -S31540018770808A001012BFFFFD1B004000213FFFBF52 -S3154001878082142380D80680019A13600580A3000DC8 -S3154001879002800004010000007FFFA2999010200D85 -S315400187A07FFFE3BD90102000913A2008900A2003F4 -S315400187B080A2200122800005A01423787FFFA29089 -S315400187C09010200FA0142378940680109810201141 -S315400187D09A102055D83A80007FFFE3AF90102000D1 -S315400187E00303C00092120001920A7F3F7FFFE3AC70 -S315400187F090102000A00680107FFFE3CB9010001060 -S3154001880010800006A4102000900420047FFFFC671E -S3154001881094102055A404A001C206E16080A4800101 -S3154001882006BFFFFA92100012113FFFBF9012237844 -S315400188307FFFE3BD9006800880A2201112800004CC -S3154001884080A2605502800004010000007FFFA26CF7 -S31540018850901020107FFFE39090102000833A20066D -S315400188608208600380A0600102800004A61000080F -S315400188707FFFA26390102010133C3FF09212603F9D -S31540018880920CC0097FFFE3869010200010BFFDDCEB -S31540018890821020057FFFE380901020009212200F66 -S315400188A07FFFE37F9010200081C7E00891E8200018 -S315400188B09DE3BF987FFFFC9301000000B0100008C4 -S315400188C0130020409212600F7FFFE3759010200045 -S315400188D00100000081C7E00881E80000033FFFBFB7 -S315400188E0821063589DE380017FFFFBE40100000095 -S315400188F040000238010000007FFFE3679010200826 -S31540018900A21000087FFFE3649010200C7FFFA24B6A -S31540018910A0100008912A20047FFFA2349002200C67 -S31540018920973C6014833C6018953C2014993C201870 -S3154001893082086003960AE00F820060019602E00A0F -S31540018940A33C6010A13C2010980B2003940AA00F71 -S31540018950A728400B98032001A20C6007A00C200712 -S315400189609402A00A9A102001A2046002A0042002E7 -S31540018970B12B000A03200000AB2B4011A52B401060 -S315400189809620401898057FFF822040139A04BFFF26 -S31540018990AE130001A213400B210000307FFFE33EDE -S315400189A090102000808A001012BFFFFD033FFFBFD9 -S315400189B09A07BFF8821063C0A00340012D15555593 -S315400189C090100018921000107FFFE2C69415A15531 -S315400189D080A220001280004B292AAAAA92100010D8 -S315400189E0901000187FFFE2D3941522AA80A220009E -S315400189F01280004E010000007FFFA210010000001E -S31540018A00912A20047FFFA1F99002200A400001EE3D -S31540018A100100000092152200920C400990100018A6 -S31540018A2094100011961000127FFFE2EB981522AACE -S31540018A3080A2200012800051010000009215A10081 -S31540018A4090100018920C40099410001196100012D3 -S31540018A507FFFE2E19815A15580A2200012800044D3 -S31540018A60010000007FFFA1F501000000912A2004CA -S31540018A707FFFA1DE9002200B901000137FFFE2BD25 -S31540018A809215A15580A220001280003501000000F8 -S31540018A90901000137FFFE2B7921522AA80A2200010 -S31540018AA01280002C010000007FFFA1E401000000BC -S31540018AB0912A20047FFFA1CD900220099010001336 -S31540018AC092100017941000157FFFE2B6961522AA60 -S31540018AD080A220001280001B0100000090100013AC -S31540018AE092100017941000157FFFE2AE9615A1551E -S31540018AF080A2200002800025010000003080000E87 -S31540018B007FFFA1BF90102001292AAAAA9210001026 -S31540018B10901000187FFFE287941522AA80A22000B8 -S31540018B2002BFFFB6010000007FFFA1B590102002F1 -S31540018B3030BFFFB27FFFA1B29010200830800013F2 -S31540018B407FFFA1AF9010200710BFFFE690100013E2 -S31540018B507FFFA1AB9010200630BFFFD47FFFA1A8B5 -S31540018B609010200510BFFFCC901000137FFFA1A4E9 -S31540018B709010200430BFFFBC7FFFA1A190102003BD -S31540018B8010BFFFB09215A1007FFFFB3CB010200043 -S31540018B9040000190010000000100000081C7E0088B -S31540018BA081E800009DE3BF987FFFA18B1100412C16 -S31540018BB0DA062004D80620049A0B6003993B20026A -S31540018BC082102007C2262008BA036001B20B27FF94 -S31540018BD0010000009010200AC02600007FFFA183FB -S31540018BE0010000001700020082103FFFC226000B61 -S31540018BF0032AAAAA1B155555D806000BAC1020000E -S31540018C00821062AA9A136155AA0B000180A5801DA4 -S31540018C1016800038A80B000D9612E020A72E60089A -S31540018C2080A4E0000480000CA2102000832DA00245 -S31540018C3082004018190002009A10000BE820400CEF -S31540018C40EA20400DA204601080A4C01114BFFFFCAD -S31540018C5082006040AC05A00180A5801D06BFFFF2E1 -S31540018C6080A4E000AC10200080A5801D1680002164 -S31540018C7003000200B8106020A72E6008AE1000184D -S31540018C8080A4E00004800017A21020000300020027 -S31540018C90A4060001A005C01CC2048000A204601005 -S31540018CA0A404A04080A0401402800004901020013A -S31540018CB07FFFA15301000000C2040000A004204030 -S31540018CC080A0401502800004901020017FFFA14C36 -S31540018CD00100000080A4C01114BFFFF00100000094 -S31540018CE0AC05A00180A5801D06BFFFE6AE05E004E8 -S31540018CF07FFFA13E9010200CAC10200080A5801D66 -S31540018D0016800088031555559E1061551B000800B5 -S31540018D10032AAAAA9A136004901062AAA72E600891 -S31540018D2080A4E0000480000EA2102000832DA01331 -S31540018D3082004018130008009410000F9610000D91 -S31540018D4098100008D4204009D820400BA2046002A4 -S31540018D5080A4C01114BFFFFC82006008AC05A001CD -S31540018D6080A5801D06BFFFF080A4E000AC10200066 -S31540018D7080A5801D1680006B03155555B8106155A9 -S31540018D801B000800032AAAAAB6136004B41062AAFB -S31540018D90A72E600880A4E00004800019A2102000DC -S31540018DA0832DA013A00040182F000800AA10001C14 -S31540018DB0A810001BA410001AC2040017A2046002E6 -S31540018DC080A0401502800004901020037FFFA10C73 -S31540018DD001000000C2040014A004200880A0401233 -S31540018DE002800004901020037FFFA10501000000CE -S31540018DF080A4C01114BFFFF101000000AC05A00121 -S31540018E0080A5801D06BFFFE580A4E000AC102000D0 -S31540018E1080A5801D16800043030008009E10600453 -S31540018E201B155555032AAAAA9A136155901062AA91 -S31540018E30A72E600880A4E0000480000EA210200046 -S31540018E40832DA01382004018130008009410000FD0 -S31540018E509610000D98100008D620400AD8204009E7 -S31540018E60A204600280A4C01114BFFFFC8200600806 -S31540018E70AC05A00180A5801D06BFFFF080A4E000DF -S31540018E80AC10200080A5801D16800026031555557F -S31540018E90B81061551B2AAAAA03000800A72E60082C -S31540018EA0B61362AAB410600480A4E00004800019DD -S31540018EB0A2102000832DA013A00040182F00080007 -S31540018EC0AA10001CA810001BA410001AC20400120C -S31540018ED0A204600280A04015028000049010200484 -S31540018EE07FFFA0C701000000C2040017A0042008AC -S31540018EF080A0401402800004901020047FFFA0C08F -S31540018F000100000080A4C01114BFFFF10100000060 -S31540018F10AC05A00180A5801D06BFFFE580A4E00049 -S31540018F2082102005C22620081B200000DA260000F8 -S31540018F3081C7E00881E8000081C3E0089144400010 -S31540018F4080800000151001409412A18090102000ED -S31540018F5092102246818000000100000001000000BD -S31540018F6001000000D00280009122400881C3E00840 -S31540018F7001000000818000009010200180902001B6 -S31540018F8080D020011280002C0100000080D23FFFDA -S31540018F90168000290100000080DA3FFF934000005F -S31540018FA080A27FFF128000240100000080D23FFF93 -S31540018FB09348000093326014920A600F80A26008C1 -S31540018FC01280001D010000008180000090102001E8 -S31540018FD0945220049452A0049452A00496A2A04014 -S31540018FE012800015010000008180000090102002CF -S31540018FF080A00000328000109052000880A220021A -S315400190001280000D010000008180000090102002B6 -S3154001901080A0000001000000328000079052000845 -S3154001902080A22002128000040100000081C3E008F2 -S315400190309010200181C3E00890100000131555558A -S3154001904092126155A5824000010000000100000016 -S31540019050010000009544800080A2400A128000432E -S3154001906001000000923A4000A58240000100000044 -S3154001907001000000010000009544800080A2400AE2 -S315400190801280003A010000001100003F901223FFB8 -S31540019090A580000081800000010000000100000061 -S315400190A00100000093F23FFF9A10000993F23FFF3F -S315400190B093F23FFF93F23FFF93F23FFF93F23FFF5D -S315400190C093F23FFF93F23FFF99400000974480009F -S315400190D0153FFC009412A00880A2400A128000238A -S315400190E080A2400B1280002180A320071280001F1E -S315400190F0113FFF809012200180A340081280001B7F -S315400191001100003F901223FFA580000081800000DE -S3154001911001000000010000000100000093FA3FFF3A -S3154001912093FA3FFF93FA3FFF93FA3FFF93FA3FFFCC -S3154001913093FA3FFF93FA3FFF93FA3FFF99400000AE -S315400191409744800080A260081280000880A26008CF -S315400191501280000680A32000128000040100000056 -S3154001916081C3E0089010200181C3E00890100000FF -S31540019170818000009010200280A000003280001003 -S315400191809072000880A220021280000D01000000AA -S31540019190818000009010200280A0000001000000A4 -S315400191A0328000079072000880A2200212800004DB -S315400191B00100000081C3E0089010200181C3E0084E -S315400191C090100000C0A0004081C3E00801000000EB -S315400191D0110020409012200FD0A0004081C3E0082A -S315400191E0010000009DE3BF987FFFE12B901020080E -S315400191F0A21000087FFFE1289010200C833C6014E8 -S315400192009B3A2014A13A2018A33C6018A20C600393 -S31540019210A00C20038208600F9A0B600F8200600A3F -S315400192209A03600AA2046001A0042001A32C400114 -S315400192307FFFFFE5A12C000D7FFFE08E901000110E -S315400192407FFFE09A901000107FFFF98C010000002B -S315400192507FFFFFE081E8000001000000981200094D -S31540019260818200009AAB2FFF02800025988800007A -S315400192709923000999230009992300099923000993 -S315400192809923000999230009992300099923000983 -S315400192909923000999230009992300099923000973 -S315400192A09923000999230009992300099923000963 -S315400192B09923000999230009992300099923000953 -S315400192C09923000999230009992300099923000943 -S315400192D09923000999230009992300099923000933 -S315400192E09923000999230009992300099923000923 -S315400192F09923000081C3E0089140000099230009A9 -S315400193009923000999230009992300099923000902 -S3154001931099230009992300099923000999230009F2 -S3154001932099230009992300099923000999230000EB -S315400193309B400000992B200C9B33601481C3E008AD -S315400193409013400C1080000B86102000809240083C -S31540019350168000088610000880924000168000049E -S315400193608092000016800003922000099020000898 -S315400193709A924000128000059610000891D0200272 -S3154001938081C3E0089010000080A2C00D0A800095BC -S31540019390941000000302000080A2C0010A80002848 -S315400193A09810000080A340011A80000D841020010E -S315400193B09B2B600410BFFFFC980320019A83400D4C -S315400193C01A8000078400A001832860049B33600152 -S315400193D09A034001108000078420A00180A3400B1E -S315400193E00ABFFFF7010000000280000201000000F1 -S315400193F084A0A00106800076010000009622C00DDF -S31540019400941020011080000A01000000952AA00155 -S31540019410068000059B3360019622C00D1080000432 -S315400194209402A0019602C00D9422A00184A0A0013D -S3154001943016BFFFF78092C000308000659B2B600409 -S3154001944080A3400B08BFFFFE988320010280006580 -S31540019450982320018092C000952AA0040680002FFF -S315400194609B33600196A2C00D068000179B336001B5 -S3154001947096A2C00D0680000B9B33600196A2C00DDB -S31540019480068000059B33600196A2C00D10800050F6 -S315400194909402A00F9682C00D1080004D9402A00D3B -S315400194A09682C00D068000059B33600196A2C00DD1 -S315400194B0108000479402A00B9682C00D1080004494 -S315400194C09402A0099682C00D0680000B9B33600171 -S315400194D096A2C00D068000059B33600196A2C00D81 -S315400194E01080003B9402A0079682C00D1080003880 -S315400194F09402A0059682C00D068000059B3360014B -S3154001950096A2C00D108000329402A0039682C00D2F -S315400195101080002F9402A0019682C00D068000178C -S315400195209B33600196A2C00D0680000B9B33600100 -S3154001953096A2C00D068000059B33600196A2C00D20 -S31540019540108000239402BFFF9682C00D1080002038 -S315400195509402BFFD9682C00D068000059B336001D3 -S3154001956096A2C00D1080001A9402BFFB9682C00DD0 -S31540019570108000179402BFF99682C00D0680000B39 -S315400195809B33600196A2C00D068000059B336001A6 -S3154001959096A2C00D1080000E9402BFF79682C00DB0 -S315400195A01080000B9402BFF59682C00D068000051F -S315400195B09B33600196A2C00D108000059402BFF353 -S315400195C09682C00D108000029402BFF198A320013B -S315400195D016BFFFA28092C000268000029602C009F3 -S315400195E08090C000268000029620000B81C3E008CF -S315400195F09010000B9210000890102000941020004B -S31540019600961020008213C000400000039E104000C7 -S31540019610010000009DE3BF9823100143400005F679 -S31540019620901460F40310006DE0006188D004214875 -S3154001963080A220002280002D9004214CD6022004D5 -S3154001964080A2E01F1480001D0100000080A62000BA -S315400196501280000B94022088832AE0029A02E001DC -S3154001966082004008DA222004F2206008400005FA10 -S31540019670901460F410800022B01020008210200166 -S315400196809328400B992AE002DA02A1009A13400975 -S315400196908203000AF6206080F422800C80A6200214 -S315400196A012BFFFEEDA22A100C202A10482104009D4 -S315400196B010BFFFEAC222A10440000013901021907E -S315400196C080A220000280000B96102000C20421488F -S315400196D0C2220000D0242148C0222004C022218871 -S315400196E010BFFFDBC022218C10BFFFD5D0242148FB -S315400196F0400005D9901460F4B0103FFF81C7E008DF -S3154001970081E800009210000803100141D000637007 -S315400197108213C0004000000A9E1040000100000074 -S315400197209210000803100141D00063708213C000FB -S31540019730400002199E104000010000009DE3BF98C1 -S315400197408206600B80A06016A610001818800003E0 -S31540019750A0087FF8A010201080A400199A4020008C -S315400197608334201F8090400D128001B0B01020003C -S31540019770400001B09010001380A421F71880001713 -S315400197809934200939100141821723809804000138 -S31540019790F003200C80A6000C0280004E9F3420036B -S315400197A0C206200494087FFC9A06000AC20360049C -S315400197B082106001D006200CD2062008D222200851 -S315400197C0C2236004D022600C400001A09010001317 -S315400197D010800196B006200880A320001280002840 -S315400197E09F342003391001419B2BE00382172380CC -S315400197F09A0340011080000AF003600C94087FFC34 -S315400198009622801080A2E00F1480010980A2E00018 -S3154001981036BFFFE79A06000AF006200C80A6000D27 -S3154001982032BFFFF7C20620049E03E0012510014125 -S315400198309814A388F003200880A6000C0280005DDE -S31540019840833BE01FC206200494087FFC96228010C9 -S3154001985080A2E00F1480009F80A2E000D823200C54 -S3154001986006800023D82320089A06000AC203600412 -S315400198708210600110BFFFD5C223600483342006E5 -S3154001988080A3200408BFFFD89E00603880A320141F -S3154001989008BFFFD59E03205B8334200C80A3205450 -S315400198A008BFFFD19E00606E8334200F80A32154F0 -S315400198B008BFFFCD9E0060778334201280A32554D4 -S315400198C008BFFFC99E00607C10BFFFC79E10207E67 -S315400198D098062008F003200C80A6000C32BFFFB288 -S315400198E0C206200410BFFFD29E03E00280A2A1FF60 -S315400198F0088000BE9B32A0039732A00980A2E000F7 -S3154001990022800017961723808332A00680A2E004A6 -S31540019910088000129A00603880A2E0140880000F87 -S315400199209A02E05B8332A00C80A2E0540880000BCF -S315400199309A00606E8332A00F80A2E154088000072E -S315400199409A0060778332A01280A2E5540880000312 -S315400199509A00607C9A10207E96172380832B6003A1 -S315400199609000400BD202200880A240082280010FBD -S3154001997099336002C202600482087FFC80A0400ADB -S3154001998028800007D002600CD202600880A24008FD -S3154001999032BFFFFAC2026004D002600CD026200C0E -S315400199A0D2262008F022600CF0222008833BE01FDB -S315400199B08330601E8203C001391001418338600241 -S315400199C0981723809A102001932B4001D803200435 -S315400199D080A2400C1880004BAE172380808B000973 -S315400199E01280000D03100141820BFFFC92024009D7 -S315400199F0808B0009128000079E0060048210000CD3 -S31540019A00920240098088400902BFFFFE9E03E0049E -S31540019A1003100141A2106380A8100011832BE003BB -S31540019A20980040119010000F9A10000C1080000A07 -S31540019A30F003600C94087FFC9622801080A2E00F10 -S31540019A401480007D80A2E0003680008B9A06000AD1 -S31540019A50F006200C80A6000D32BFFFF7C206200497 -S31540019A609E03E001808BE00312BFFFF19A03600879 -S31540019A70808A200398033FF8028000D490023FFF7A -S31540019A80C203200880A0400C02BFFFFB808A20034E -S31540019A9092024009C205200480A2400118800018A4 -S31540019AA03910014180A26000128000068088400979 -S31540019AB010800014AE1723809E03E004808840097D -S31540019AC022BFFFFE9202400910BFFFD6832BE0035F -S31540019AD08214200194060010C2262004D423200CAF -S31540019AE0D42320088212E001D622800BD822A00876 -S31540019AF0C222A00410BFFF35D822A00CAE17238086 -S31540019B00F005E008C2062004AA087FFC80A54010A3 -S31540019B109A4020009625401080A2E00F1480004212 -S31540019B2082102001809340010280002703100143E7 -S31540019B30DA0061982D1001419A04000DC205A378FF -S31540019B40A810001580A07FFFA203601002800004C8 -S31540019B50A406001582046FFFA2087000901000133E -S31540019B60400000C09210001180A23FFF0280000811 -S31540019B70B210000880A200121A8000463B10014331 -S31540019B8080A6001722800044C2076168821723809D -S31540019B90D8006008DA0320049A0B7FFC80A34010AA -S31540019BA0984020009623401080A2E00F04800003D5 -S31540019BB082102001821020008093000112800098BB -S31540019BC00100000098172380F00320088214200129 -S31540019BD0C22620049A0600108212E001C2236004C4 -S31540019BE010BFFEFADA23200898033FF8832B60035F -S31540019BF09000400C9B336002821020018328400D67 -S31540019C00D2022008DA0320049A134001D026200C00 -S31540019C10D2262008F022600CDA23200410BFFF640C -S31540019C20F022200810BFFFC08210200010BFFEFFA7 -S31540019C309E03FFFFD006200CD20620089A1420016D -S31540019C40940600108214A388D2222008D022600CE8 -S31540019C50DA262004D420600CD42060089A12E00150 -S31540019C60D622800BC222A008DA22A00410BFFED75A -S31540019C70C222A00CC203600482106001D006200CEF -S31540019C80D2062008C223600410BFFECFD22220088C -S31540019C90C20761688200401180A640120280004FCF -S31540019CA0C2276168C205A37880A07FFF0280004574 -S31540019CB0C20761689A2640128200400DC227616838 -S31540019CC09A8E600702800005A410200082102008A9 -S31540019CD0A420400DB20640129A0640119A0B6FFF1E -S31540019CE0030000048220400DA4048001901000135B -S31540019CF04000005C9210001280A23FFF2280003F8C -S31540019D00A41020008222001990004012821723805D -S31540019D10DA0761689A03401280A60001F2206008C2 -S31540019D20DA276168028000378212200180A5600F20 -S31540019D3038800005C22660048210200110BFFF94BE -S31540019D40C2266004C20620049A057FF4A80B7FF858 -S31540019D508208600182104014C22620049A0600142B -S31540019D6082102005C223600880A5200F1880002795 -S31540019D70C223600419100143DA076168C2032194C2 -S31540019D8080A3400138800002DA232194191001434F -S31540019D90C203219080A3400138BFFF7DDA23219081 -S31540019DA010BFFF7C821723809A102001C202E00473 -S31540019DB09B2B400C8210400D10BFFEF9C222E004DD -S31540019DC010BFFFC0F225A378C2046004822840096F -S31540019DD010BFFF30C2246004808E6FFF12BFFFB3F5 -S31540019DE0C205A37890044014DA05E00882122001E6 -S31540019DF010BFFFE1C223600410BFFFC390100019DA -S31540019E0010BFFFDDC22660049206200840000062B2 -S31540019E109010001310BFFFD9191001434000000BE9 -S31540019E2090100013B010200081C7E00881E80000BF -S31540019E3011100142901223888213C000400003EEA4 -S31540019E409E1040000100000011100142901223882B -S31540019E508213C000400004009E1040000100000033 -S31540019E609DE3BF9821100144C02421704000020D9A -S31540019E709010001980A23FFF12800006C204217093 -S31540019E8080A060000280000301000000C22600009D -S31540019E9081C7E00891E800089DE3BF987FFFFFE591 -S31540019EA09010001803100141A2106380DA04600883 -S31540019EB0C2036004A0087FFCB2240019B2066FEF0A -S31540019EC0B20E7000B20670009210200080A66FFF9D -S31540019ED00480000A901000187FFFFFE20100000095 -S31540019EE0C20460088200401080A0400892200019F8 -S31540019EF002800005901000187FFFFFD4B0102000AB -S31540019F00308000237FFFFFD790100018822400196C -S31540019F1080A23FFF82106001921020001910014378 -S31540019F200280000B90100018DA046008C223600416 -S31540019F30C203216882204019901000187FFFFFC399 -S31540019F40C223216810800012B01020017FFFFFC597 -S31540019F500100000098100008D6046008A023000BF9 -S31540019F609010001880A4200F04BFFFE4B214200112 -S31540019F7003100141DA0063789A23000D031001436F -S31540019F80DA20616810BFFFDDF222E00481C7E008F4 -S31540019F9081E800009DE3BF9880A660000280009D95 -S31540019FA0A41000187FFFFFA390100018A0067FF8A9 -S31540019FB0D6042004900AFFFE1910014194040008BA -S31540019FC0A2132380DA02A004C204600880A0400ADA -S31540019FD0028000449E0B7FFC808AE001DE22A004C1 -S31540019FE01280000CB0102000F2067FF8A024001960 -S31540019FF082046008DA04200880A340010280007DC3 -S3154001A00090020019D204200CDA226008D223600C97 -S3154001A0108202800FDA006004808B60011280000AA0 -S3154001A0208212200180A62000028000229002000FA9 -S3154001A030DA02A008D202A00CDA226008D223600C10 -S3154001A04082122001C224200480A62000028000053D -S3154001A050D0240008B01000127FFFFF7C81E8000089 -S3154001A06080A221FF18800036973220099B322003B7 -S3154001A07098132380832B60039200400C9B3360022C -S3154001A080821020018328400DD6026008DA0320049D -S3154001A0909A134001D224200CD6242008E022E00C59 -S3154001A0A0DA232004E022600810BFFFECB010001252 -S3154001A0B003100141DA02A0088210638880A340019F -S3154001A0C032BFFFDED202A00CE023600CE023600821 -S3154001A0D0DA242008DA24200C10BFFFDAB010200160 -S3154001A0E0808AE001128000099002000FF2067FF893 -S3154001A0F0A0240019D204200CD6042008D6226008D8 -S3154001A10090020019D222E00C03100141DA00637C6F -S3154001A11098122001E024600880A2000D0ABFFFCFFB -S3154001A120D824200403100143D20061987FFFFF5BCE -S3154001A130901000127FFFFF4581E8000080A2E000F9 -S3154001A140028000169B3220038332200680A2E0045F -S3154001A150088000129A00603880A2E0140880000F3F -S3154001A1609A02E05B8332200C80A2E0540880000B07 -S3154001A1709A00606E8332200F80A2E1540880000766 -S3154001A1809A0060778332201280A2E554088000034A -S3154001A1909A00607C9A10207E94132380832B60035F -S3154001A1A09200400AD602600880A2C00902800013CC -S3154001A1B099336002C202E00482087FFC80A0400815 -S3154001A1C028800007D202E00CD602E00880A2C0092E -S3154001A1D032BFFFFAC202E004D202E00CD224200CC4 -S3154001A1E0D6242008E022E00C10BFFFB0E022600830 -S3154001A1F010BFFF88B01020019A102001C202A004AE -S3154001A2009B2B400C8210400D10BFFFF5C222A004CB -S3154001A21081C7E00881E800009DE3BF98D20640006F -S3154001A22080A2600012800004901000187FFFFF5A40 -S3154001A23081E800007FFFFFF9010000007FFFFF5624 -S3154001A24081E80000010000009DE3BF980310014131 -S3154001A250DA00637080A6000D028000410100000013 -S3154001A260D206204C80A260001280001CA010200063 -S3154001A270D206214880A260002280000FD2062054D7 -S3154001A280A006214C80A240102280000BD206205409 -S3154001A29010800005B2100009F20640007FFFFF3E24 -S3154001A2A09010001880A4001912BFFFFC92100019EB -S3154001A2B0D206205480A260001280002501000000D1 -S3154001A2C0C206203880A060000280002501000000FF -S3154001A2D010800017C206203C832C2002F202400166 -S3154001A2E080A660002280000BA00420019210001974 -S3154001A2F0F20640007FFFFF289010001880A66000FC -S3154001A30012BFFFFC92100019D206204CA004200176 -S3154001A31080A4200E04BFFFF2832C20027FFFFF1E84 -S3154001A3209010001810BFFFD4D20621489FC04000AC -S3154001A33090100018F20622E080A660000280000814 -S3154001A340010000007FFFFFB581E800007FFFFF129B -S3154001A3509010001810BFFFDCC206203881C7E00804 -S3154001A36081E800009DE3BF9880A620000280001D81 -S3154001A37003100141E406214880A4A0002280001375 -S3154001A380C206203CE204A004A2847FFF0C80000A9E -S3154001A390832C600282004012A0006008C2040000C3 -S3154001A3A09FC04000A0043FFCA2847FFF3CBFFFFD4D -S3154001A3B0C2040000E404800080A4A00032BFFFF381 -S3154001A3C0E204A004C206203C80A06000028000078F -S3154001A3D0010000009FC0400090100018308000032B -S3154001A3E010BFFFE5F000637081C7E00881E8000017 -S3154001A3F01080000B861020008092400816800008CD -S3154001A400861A40088092400016800004809200001F -S3154001A4101680000392200009902000089A9240007D -S3154001A420128000059610000891D0200281C3E008F1 -S3154001A4309010000080A2C00D0A8000959410000083 -S3154001A4400302000080A2C0010A8000289810000083 -S3154001A45080A340011A80000D841020019B2B6004CB -S3154001A46010BFFFFC980320019A83400D1A80000714 -S3154001A4708400A001832860049B3360019A03400154 -S3154001A480108000078420A00180A3400B0ABFFFF77C -S3154001A49001000000028000020100000084A0A0012A -S3154001A4A006800076010000009622C00D941020011E -S3154001A4B01080000A01000000952AA00106800005CF -S3154001A4C09B3360019622C00D108000049402A001C6 -S3154001A4D09602C00D9422A00184A0A00116BFFFF7E9 -S3154001A4E08092C000308000659B2B600480A3400BA6 -S3154001A4F008BFFFFE98832001028000659823200152 -S3154001A5008092C000952AA0040680002F9B336001EB -S3154001A51096A2C00D068000179B33600196A2C00D1E -S3154001A5200680000B9B33600196A2C00D0680000594 -S3154001A5309B33600196A2C00D108000509402A00F7B -S3154001A5409682C00D1080004D9402A00D9682C00DDA -S3154001A550068000059B33600196A2C00D108000471E -S3154001A5609402A00B9682C00D108000449402A0096B -S3154001A5709682C00D0680000B9B33600196A2C00DEA -S3154001A580068000059B33600196A2C00D1080003BFA -S3154001A5909402A0079682C00D108000389402A0054F -S3154001A5A09682C00D068000059B33600196A2C00DC0 -S3154001A5B0108000329402A0039682C00D1080002FB5 -S3154001A5C09402A0019682C00D068000179B3360015C -S3154001A5D096A2C00D0680000B9B33600196A2C00D6A -S3154001A5E0068000059B33600196A2C00D10800023B2 -S3154001A5F09402BFFF9682C00D108000209402BFFDD9 -S3154001A6009682C00D068000059B33600196A2C00D5F -S3154001A6101080001A9402BFFB9682C00D108000176D -S3154001A6209402BFF99682C00D0680000B9B336001F0 -S3154001A63096A2C00D068000059B33600196A2C00D0F -S3154001A6401080000E9402BFF79682C00D1080000B59 -S3154001A6509402BFF59682C00D068000059B336001CA -S3154001A66096A2C00D108000059402BFF39682C00DDC -S3154001A670108000029402BFF198A3200116BFFFA2E9 -S3154001A6808092C000268000029422A0018090C000E2 -S3154001A690268000029420000A81C3E0089010000A37 -S3154001A6A019100144DA03217480A360001280000668 -S3154001A6B082034008031001449A106188DA23217409 -S3154001A6C082034008C223217481C3E0089010000D23 -S3154001A6D0A7500000AE1000018334E0012910014368 -S3154001A6E0E8052038A92CC0148215000181E000003C -S3154001A6F081904000010000000100000001000000BF -S3154001A700E03BA000E43BA008E83BA010EC3BA018CE -S3154001A710F03BA020F43BA028F83BA030FC3BA038FE -S3154001A72081E800008210001781C4400081CC80007E -S3154001A730010000000100000001000000A7500000D8 -S3154001A740A92CE0012B100143EA056038AB34C01552 -S3154001A750AA15401481954000010000000100000047 -S3154001A7600100000081E8000081E80000E01BA00034 -S3154001A770E41BA008E81BA010EC1BA018F01BA020AE -S3154001A780F41BA028F81BA030FC1BA03881E0000078 -S3154001A79081E0000081C4400081CC8000A7500000C8 -S3154001A7A02910006CADC5210C0100000027100143A2 -S3154001A7B0A614E018E024C000818C2020010000008E -S3154001A7C001000000010000009DE3BFA09DE3BFA082 -S3154001A7D09DE3BFA09DE3BFA09DE3BFA09DE3BFA0B6 -S3154001A7E09DE3BFA081E8000081E8000081E8000008 -S3154001A7F081E8000081E8000081E8000081E800006E -S3154001A80027100143A614E018C024C000E203A06843 -S3154001A810A4046004E223A064E423A06810800262D9 -S3154001A820AC10000029100142A81523FCC2252000C6 -S3154001A830C8252004E0252010E2252014E42520180F -S3154001A840E825201C81E800008348000082106F0043 -S3154001A8508188602001000000010000000100000025 -S3154001A86009100143C801203881E0000088212001F8 -S3154001A87080A920FF028000030100000001000000C2 -S3154001A88080A1000012BFFFF9010000000910014339 -S3154001A890C801203881E8000080A920FF028000031A -S3154001A8A001000000010000008821200180A1000074 -S3154001A8B012BFFFF90100000081E0000029100142AA -S3154001A8C0A81523FCC8052004C2052000E005201078 -S3154001A8D0E2052014E4052018C025201C818C2000A7 -S3154001A8E001000000010000000100000081C4800059 -S3154001A8F081CCA004A0142F00818C0000010000002F -S3154001A900010000000100000081C4800081CCA00448 -S3154001A91080A6600212800005A8142F00818D0000D8 -S3154001A920B01420203080001F80A6600312800006EC -S3154001A930A80E2F00AA2C2F00A8154014818D0000C7 -S3154001A9403080001880A6600412800008A9480000E3 -S3154001A950A8152040818D0000010000000100000083 -S3154001A960010000003080000F80A6600512800008BB -S3154001A970A9480000A82D2040818D0000010000005B -S3154001A98001000000010000003080000680A660063C -S3154001A990128000030100000030BFFFA391D02000C8 -S3154001A9A081C4800081CCA0049210200381C3E008B9 -S3154001A9B091D020029210200281C3E00891D020025A -S3154001A9C09210200681C3E00891D0200281C3E0089D -S3154001A9D00100000081C3E0080100000081C3E008D6 -S3154001A9E001000000AE25A010A75000002D10006AFE -S3154001A9F0AC15A1F82910006C81C522B401000000F4 -S3154001AA001110014390122024D202000092026001EB -S3154001AA10D2220000932DE008902C2F0092120009BB -S3154001AA20111001439012201CD002000080A00008A2 -S3154001AA302280000292126F00818A6020010000008C -S3154001AA400100000001000000901000174000003195 -S3154001AA509203A06092142F00818A602001000000B9 -S3154001AA600100000001000000111001439012202452 -S3154001AA70D202000092226001D22200001080022DF3 -S3154001AA80AC1000001B1001449A13602C912A20023D -S3154001AA90C2034008C222600C81C3E008D2234008A9 -S3154001AAA09DE3BF98031001448210602C992E6002E9 -S3154001AAB01B100143972E6004D800400C9A13622C58 -S3154001AAC0901000199202C00D80A6601F1480000FDD -S3154001AAD0821020001080000680A320002280000AF8 -S3154001AAE0C2024000D803200C80A3200012BFFFFC05 -S3154001AAF080A300097FFFFFE4F0224000108000039D -S3154001AB0082102000F022400081C7E00891E8000150 -S3154001AB109DE3BF981B10014382136028D80060044F -S3154001AB2080A3001802800044C203602880A620004A -S3154001AB3022800002B010000C03100144A32E200213 -S3154001AB408210602CE000401180A420000280003D6C -S3154001AB500310014310800012A41061A8D2042008FA -S3154001AB60941000199FC30000901000180310014370 -S3154001AB70C20061A080A060001280002B010000008D -S3154001AB80C204801182007FFFC2248011E004200CA0 -S3154001AB9080A420000280002B01000000D8040000A0 -S3154001ABA080A3200022BFFFFBE004200C03100143D9 -S3154001ABB0DA00622880A36000128000089610001215 -S3154001ABC003100143821061A8DA00401180A360009E -S3154001ABD032BFFFF0E004200CDA02C011031001433A -S3154001ABE09A036001C20061A480A0600002BFFFDC3D -S3154001ABF0DA22C0119FC0400001000000D8040000C5 -S3154001AC00D2042008941000199FC300009010001828 -S3154001AC1003100143C20061A080A0600022BFFFDA99 -S3154001AC20C20480119FC040000100000010BFFFD642 -S3154001AC30C2048011DA0060C010BFFFBDB00B601FB7 -S3154001AC4081C7E00881E800008C10000FA74800008A -S3154001AC508B34E0188A09600F80A160030280000CE2 -S3154001AC600B1001438A1160300920000088112070C1 -S3154001AC70C82140000B1001438A1160500920000091 -S3154001AC8088112040C82140001080003990102001D1 -S3154001AC9092102006400001DD0100000080A000085E -S3154001ACA00280003301000000C2022010113FFC0067 -S3154001ACB082084008110003FC8410400890100002ED -S3154001ACC0921020019410200C400001E60100000082 -S3154001ACD080A000080280002601000000400001F625 -S3154001ACE0921000010B1001438A116030D2214000BD -S3154001ACF0901000029210200194102011400001D9B9 -S3154001AD000100000080A00008028000190100000037 -S3154001AD10400001E992100001920260100B100143BC -S3154001AD208A116050D22140009010000292102001F9 -S3154001AD309410200D400001CB0100000080A00008C6 -S3154001AD400280000B01000000400001DB921000016F -S3154001AD500B1001438A116028D2214000D4026010B1 -S3154001AD609532A010940AA00FD42160049E100006CB -S3154001AD7081C3E008010000000310014382106048CE -S3154001AD808210200191D0200081C3E008010000001B -S3154001AD909DE3BF9803100144C20060C8901000189B -S3154001ADA09210001980A0600002800005B0102000BA -S3154001ADB09FC0400001000000B010000881C7E008B4 -S3154001ADC081E800009DE3BF9803100144C20060C4BE -S3154001ADD09010001880A0600002800005B01020008D -S3154001ADE09FC0400001000000B010000881C7E00884 -S3154001ADF081E800009DE3BF9803100144C20060BC96 -S3154001AE009010001880A0600002800005B01020005C -S3154001AE109FC0400001000000B010000881C7E00853 -S3154001AE2081E800009DE3BF9803100144C20060C061 -S3154001AE309010001880A0600002800005B01020002C -S3154001AE409FC0400001000000B010000881C7E00823 -S3154001AE5081E800009DE3BF9803100144C20060B839 -S3154001AE609010001880A0600002800005B0102000FC -S3154001AE709FC0400001000000B010000881C7E008F3 -S3154001AE8081E800009DE3BF9803100144C20060B40D -S3154001AE909010001880A0600002800005B0102000CC -S3154001AEA09FC0400001000000B010000881C7E008C3 -S3154001AEB081E800009DE3BF9803100144C20060B0E1 -S3154001AEC09010001880A0600002800005B01020009C -S3154001AED09FC0400001000000B010000881C7E00893 -S3154001AEE081E800009DE3BF9803100144C20060ACB5 -S3154001AEF0901000189210001980A060000280000591 -S3154001AF00B01020009FC0400001000000B0100008B2 -S3154001AF1081C7E00881E80000010000000310006BD2 -S3154001AF20821063E89FC0400001000000031000004A -S3154001AF3082106000819840000310006C8210606CA2 -S3154001AF409FC04000010000000310006B821063D8CF -S3154001AF509FC04000010000008B4800008B31601803 -S3154001AF608A09600380A16003128000070100000086 -S3154001AF708B4440008B31601C80A14000128000064A -S3154001AF80010000007FFFFF31010000007FFF98773D -S3154001AF90010000009C23A0407FFF981A0100000099 -S3154001AFA08210200191D020000100000029000004F8 -S3154001AFB0A68C001432800003A02C001491D02000EE -S3154001AFC0818C00000100000001000000010000002A -S3154001AFD081C4800081CCA00481C3E0080100000047 -S3154001AFE081C1E00801000000A74800008B34E01849 -S3154001AFF08A09600380A160031280000801000000F5 -S3154001B00021100143A0142040A2102003E224000095 -S3154001B0108B4440001080000821100143A0142040B9 -S3154001B020A2102002E224000021200000E604202490 -S3154001B0308B34E0148A09601F27100143A614E038B7 -S3154001B040CA24C0008A01600127100143A614E034D6 -S3154001B050CA24C00027100143A614E03C8A2160029D -S3154001B060CA24C00081C3E0080100000081C3E00892 -S3154001B07001000000834800008330601882086003A5 -S3154001B08080A0600312800006010000008344400056 -S3154001B0900500000882284002A38040008810000075 -S3154001B0A00910006B81C1231C010000009DE3BF987C -S3154001B0B00310006D1B10006DA01061709A13617032 -S3154001B0C080A4000D1A800010A210000D1080000609 -S3154001B0D0C204000080A400111A80000B0100000088 -S3154001B0E0C204000080A0600002BFFFFBA004200450 -S3154001B0F09FC040000100000080A400112ABFFFFA52 -S3154001B100C204000081C7E00881E80000AA27A0B078 -S3154001B110E0256060E2256064E4256068C2256074CC -S3154001B120C43D6078C83D6080CC3D60888540000064 -S3154001B130C425606CF03D6090F43D6098F83D60A098 -S3154001B140FC3D60A8A8102001A92D0010808D001398 -S3154001B15002800013010000008534E001071001431D -S3154001B160C600E038A72CC0038414C0028408A0FF9F -S3154001B17081E000008190A000E03BA000E43BA008F4 -S3154001B180E83BA010EC3BA018F03BA020F43BA028E4 -S3154001B190F83BA030FC3BA03881E8000081C5A008FF -S3154001B1A09C100015051001438410A19CC400800029 -S3154001B1B080A0800002800004010000009FC0800042 -S3154001B1C09203A060818C20008210200283284010C7 -S3154001B1D005100143C400A03485304002821040026C -S3154001B1E08550000080888001028000208328A001CC -S3154001B1F007100143C600E0388530800382104002C3 -S3154001B200820860FF81906000C203A06C818060006B -S3154001B210F01BA090F41BA098F81BA0A0FC1BA0A8B3 -S3154001B220C203A074C41BA078C81BA080CC1BA088F5 -S3154001B230E003A060E203A064E403A06881E80000A3 -S3154001B240E01BA000E41BA008E81BA010EC1BA01803 -S3154001B250F01BA020F41BA028F81BA030FC1BA03833 -S3154001B2601080000F81E00000C203A06C8180600065 -S3154001B270F01BA090F41BA098F81BA0A0FC1BA0A853 -S3154001B280C203A074C41BA078C81BA080CC1BA08895 -S3154001B290E003A060E203A064E403A068818C20007F -S3154001B2A001000000010000000100000081C44000CF -S3154001B2B081CC8000AA27A0B0C2256074C43D6078C5 -S3154001B2C0C83D6080CC3D608885400000C425606CE7 -S3154001B2D0A8102001A92D0010808D001302800013B3 -S3154001B2E0010000008534E00107100143C600E03843 -S3154001B2F0A72CC0038414C0028408A0FF81E000008B -S3154001B3008190A000E03BA000E43BA008E83BA010F0 -S3154001B310EC3BA018F03BA020F43BA028F83BA03022 -S3154001B320FC3BA03881E8000081C5A0089C100015AF -S3154001B330051001438410A19CC400800080A08000B8 -S3154001B34002800004010000009FC080009203A060BB -S3154001B350818C200082102002832840100510014371 -S3154001B360C400A0348530400282104002855000005E -S3154001B37080888001028000198328A00107100143BB -S3154001B380C600E0388530800382104002820860FFA3 -S3154001B39081906000C203A06C81806000C203A074EA -S3154001B3A0C41BA078C81BA080CC1BA08881E80000E4 -S3154001B3B0E01BA000E41BA008E81BA010EC1BA01892 -S3154001B3C0F01BA020F41BA028F81BA030FC1BA038C2 -S3154001B3D01080000881E00000C203A06C81806000FB -S3154001B3E0C203A074C41BA078C81BA080CC1BA08834 -S3154001B3F0818C2000010000000100000001000000D6 -S3154001B40081C4400081CC8000821000089A10380027 -S3154001B41096102000912AE00598034008D40340087D -S3154001B4209132A01880A20001328000089602E00104 -S3154001B4309132A00C900A2FFF80A2000902800007DA -S3154001B4409410000C9602E00180A2E00728BFFFF3AA -S3154001B450912AE0059410200081C3E0089010000A6B -S3154001B4608210000898102000912B20039A00400872 -S3154001B470D60040089132E01880A2000932800008C7 -S3154001B480980320019132E00C900A2FFF80A2000A16 -S3154001B490028000079610000D9803200180A3200F1B -S3154001B4A028BFFFF3912B20039610200081C3E008AB -S3154001B4B09010000BD4022004173FFC00920A400B67 -S3154001B4C0900A800B9132200C921240081100003FE5 -S3154001B4D0901223F0940A8008952AA0049412800BB6 -S3154001B4E0920A400A81C3E008901000099DE3BF9883 -S3154001B4F00310006D82106158DA007FFC80A37FFF44 -S3154001B50002800009A0007FFC8210000D9FC0400010 -S3154001B510A0043FFCC204000080A07FFF12BFFFFCD5 -S3154001B5200100000081C7E00881E800009DE3BF9863 -S3154001B53081C7E00881E8000000000000000000002B -S3154001B54000000000000000000000000000000000B4 -S3154001B55000000002FFFFFFFF0000000000000000A6 -S3154001B56000000002FFFFFFFF000000000000000096 -S3154001B57040080000000000003CD203AF9EE756168B -S3154001B5803E7AD7F29ABCAF4840050220000000003F -S3154001B590430000009DE3BFA07FFF96D70100000056 -S3154001B5A07FFFFFD30100000081C7E00881E800006A -S3154001B5B09DE3BFA07FFF96B20100000081C7E0086E -S3154001B5C081E80000000000000000000000000000CB -S315400200000000000100000000000000004001B56849 -S315400200102000000000000000000000000000000078 +S315400174A0A1800000E8180000AC100000AE100000FA +S315400174B0EC04C000EE04E00480A500161280010031 +S315400174C080A54017128000FE01000000A54400007F +S315400174D0A534A00BA40CA00780A4A001128000F83B +S315400174E001000000A0100000A1844000A610000089 +S315400174F0A1800000A210200AA1844000A41000002F +S31540017500A1800000E8180000AC100000AE10000099 +S31540017510EC04C012EE04E00480A50016128000E8D7 +S3154001752080A54017128000E601000000A544000036 +S31540017530A534A00BA40CA00780A4A002068000E0FD +S315400175400100000021100120A0142200EC1C0000C3 +S31540017550A0042008E81C0000A1844000A6100000F9 +S31540017560A1800000A210200EA1844000A4100010AA +S31540017570AC100000AE100000A18000000100000028 +S3154001758001000000EC3C8013AC100000AE1000007E +S31540017590E81CC01280A50016128000C980A54017BC +S315400175A0128000C701000000A5440000A534A00BCD +S315400175B0A40CA00780A4A004128000C10100000011 +S315400175C010800002010000008B4440008A09601FC0 +S315400175D080A160010280000A8C1000059DE3BFA0D6 +S315400175E08AA1600116BFFFFE0100000081E800008C +S315400175F08CA1A00116BFFFFE0100000001000000A2 +S3154001760001000000A023A080A02C20078E100010AE +S31540017610A3480000E2240000C2242004C43C200800 +S31540017620C83C2010CC3C2018F03C2020F43C2028BB +S31540017630F83C2030FC3C2038D03C2040D43C20480B +S31540017640D83C2050DC3C2058A5500000E424206062 +S315400176508010200882102001841020028610200309 +S31540017660881020048A1020058C1020068190000085 +S31540017670A42C601F818C80000100000001000000E5 +S3154001768001000000030040408210610184100000A7 +S3154001769086100000894440008809201F8610000496 +S315400176A0A010000284004002A210000284004002A1 +S315400176B0A410000284004002A61000028400400289 +S315400176C0A810000284004002AA1000028400400271 +S315400176D0AC10000284004002AE1000028400400259 +S315400176E09010000284004002921000028400400281 +S315400176F09410000284004002961000028400400269 +S3154001770098100002840040029A1000028400400250 +S315400177109C100002840040029E1000028400400238 +S3154001772081E0000086A0E00116BFFFDE01000000F7 +S31540017730030040408210610184100000861000045D +S3154001774080A400021280003F8400400280A44002CF +S315400177501280003C8400400280A4800212800039DD +S315400177608400400280A4C002128000368400400298 +S3154001777080A50002128000338400400280A54002A9 +S31540017780128000308400400280A580021280002DC4 +S315400177908400400280A5C0021280002A8400400273 +S315400177A080A20002128000278400400280A240028B +S315400177B0128000248400400280A2800212800021AF +S315400177C08400400280A2C0021280001E8400400252 +S315400177D080A300021280001B8400400280A3400265 +S315400177E0128000188400400280A380021280001596 +S315400177F08400400280A3C00212800012840040022D +S3154001780081E0000086A0E00116BFFFCE0100000026 +S3154001781080A020001280000B80A0FFFF128000098B +S3154001782080A160051280000780A1A0061280000594 +S3154001783001000000A010000710800006C02420208F +S31540017840A01000079010200110800002D0242020B3 +S3154001785082100007C40040008188800001000000BA +S315400178600100000001000000C4186008C81860103B +S31540017870CC186018F0186020F4186028F8186030A9 +S31540017880FC186038D0186040D4186048D818605049 +S31540017890DC186058E4006060C20060048194800096 +S315400178A0010000000100000001000000A0100007D7 +S315400178B0F004202081C7E00881E8000010BFFFFCEA +S315400178C0B01000000100000081D8200081C3E0080B +S315400178D0010000000328000084106004952AA00DD1 +S315400178E0D0204000922270009202400AD2208000AD +S315400178F081C3E0080100000003100124C40061AC0B +S3154001790003100124C200619C852A40028610200191 +S315400179108328C00182007FFF900A00019000800801 +S315400179208213C0007FFFE74C9E104000010000001B +S3154001793003100124C40061AC03100124C200619C00 +S31540017940852A4002861020018328C00182007FFFDC +S31540017950900A0001900080088213C0007FFFE73A39 +S315400179609E104000010000009DE3BFA02D100124A0 +S31540017970C205A1A0A410001880A0600004800020C8 +S31540017980B01020012F1001242B100124D005E1ACA9 +S3154001799029100124AC15A1A0AE15E1ACAA15619C34 +S315400179A0A815218CA0102000A2102000A6102001AD +S315400179B0C2054000832CC00182007FFF820C8001FA +S315400179C0912C00087FFFE72090020001C2050000CC +S315400179D0901A0012820A000180A00001C2058000AF +S315400179E0A2647FFFA004200180A0401034BFFFF1B4 +S315400179F0D005C00080A00011B0603FFF81C7E008FC +S31540017A0081E800009DE3BFA003100124C40061ACDE +S31540017A1003100124C200619CB32E40028410200150 +S31540017A208328800182007FFF820E00019210001A96 +S31540017A307FFFE70B9006400181C7E00881E800001F +S31540017A409DE3BFA003100124C40061AC03100124CF +S31540017A50C200619CB32E400284102001832880011C +S31540017A6082007FFF820E00019210001A7FFFE6F826 +S31540017A709006400181C7E00881E800000310012417 +S31540017A80C400619403100124C2006190852A40021A +S31540017A90861020018328C00182007FFF900A0001E1 +S31540017AA0900080088213C0007FFFE6E39E104000ED +S31540017AB0010000009DE3BFA003100124C4006194AE +S31540017AC003100124C2006190B32E400284102001AC +S31540017AD08328800182007FFF820E00019210001AE6 +S31540017AE07FFFE6D79006400181C7E00881E80000A4 +S31540017AF09DE3BFA003100124C40061940310012437 +S31540017B00C2006190B32E4002841020018328800177 +S31540017B1082007FFF820E00019210001A7FFFE6C4A9 +S31540017B209006400181C7E00881E800000310012466 +S31540017B30C400619403100124C2006190852A400269 +S31540017B40861020018328C00182007FFF900A000130 +S31540017B50900080088213C0007FFFE6B39E1040006C +S31540017B6001000000033FFFBF821063089DE38001CF +S31540017B700310004482106360C227BFEC0310004427 +S31540017B80821063A02F100044C227BFF4AE15E34014 +S31540017B9035100044EE27BFE8B416A38090102006A6 +S31540017BA07FFFA777F427BFF07FFFE69B9010200069 +S31540017BB0213FFFBF920A3FF0A01423689010200096 +S31540017BC07FFFE697A0078010230000307FFFE692F3 +S31540017BD090102000808A001112BFFFFD01000000B5 +S31540017BE081D82000230000307FFFE68B90102000D3 +S31540017BF0808A001112BFFFFD0100000023100124FD +S31540017C007FFFE6859010200013002040A410000855 +S31540017C109212600F921200097FFFE68190102000B8 +S31540017C207FFFE67D90102008D02461887FFFE67AA9 +S31540017C309010200C09100124C40461889938A014BD +S31540017C4013100124980B200F8603200AC621219088 +S31540017C50091001240310012496102400C621219401 +S31540017C60893A20148809200F9401200AD422619C64 +S31540017C70131001242D100124D0206198D42261AC27 +S31540017C8015100124932AC004833A2018D222A1A8B0 +S31540017C901510012482086003820060011B20000048 +S31540017CA08801200837100124C225A1A09201200293 +S31540017CB0821020019328400992234009D222A18CA7 +S31540017CC01510012487284003913A20109A23400336 +S31540017CD0992AC00CDA26E1A4D822A184A20A200757 +S31540017CE08738A018A93CA00CBA210011A408E003CA +S31540017CF08538A010A88D2003AA08A007A404A001D6 +S31540017D00AB284015A3284011AB2840159010001709 +S31540017D10AA057FFFA610200002800123B807BFE80D +S31540017D20A6042020030048D182106167C224C00006 +S31540017D3003226AF3821061EFC2242024C20C202060 +S31540017D4080A0600102800004010000007FFFA713AC +S31540017D509010201AC20C202180A0602302800004CA +S31540017D60010000007FFFA70D9010201BC20C2022AE +S31540017D7080A0604502800004010000007FFFA70744 +S31540017D809010201CC20C202380A060670280000452 +S31540017D90010000007FFFA7019010201DC20C202486 +S31540017DA080A0608902800004010000007FFFA6FBDD +S31540017DB09010201EC20C202580A060AB02800004DA +S31540017DC0010000007FFFA6F59010201FC20C20265F +S31540017DD080A060CD02800004010000007FFFA6EF75 +S31540017DE090102020C20C202780A060EF0280000462 +S31540017DF0010000007FFFA6E990102021C214202037 +S31540017E00832860108330601080A0612302800004C3 +S31540017E10010000007FFFA6E190102022C414202219 +S31540017E208528A010030000118530A01082106167DB +S31540017E3080A0800102800004010000007FFFA6D7D8 +S31540017E4090102023C41420248528A010030000226A +S31540017E508530A010821061AB80A0800102800004B1 +S31540017E60010000007FFFA6CD90102024C4142026D7 +S31540017E708528A010030000338530A010821061EFE1 +S31540017E8080A0800102800005821020307FFFA6C3BA +S31540017E909010202582102030C22C2020030C08D1BE +S31540017EA082106167C404C00080A080010280000581 +S31540017EB0821020317FFFA6B99010202782102031F1 +S31540017EC0C22C2021030C0C5182106167C404C000EE +S31540017ED080A0800102800005821020327FFFA6AF7C +S31540017EE09010202882102032C22C2022030C0C4CE8 +S31540017EF082106267C404C00080A080010280000530 +S31540017F00821020337FFFA6A59010202982102033AE +S31540017F10C22C2023030C0C4C82106233C404C000D3 +S31540017F2080A0800102800005821020347FFFA69B3D +S31540017F309010202A82102034C22C2024030D2AF3CB +S31540017F40821061EFC404202480A0800102800005D4 +S31540017F50821020357FFFA6919010202B821020356C +S31540017F60C22C2025030D0D73821061EFC404202419 +S31540017F7080A0800102800005821020367FFFA687FF +S31540017F809010202C82102036C22C2026030D0D4D38 +S31540017F90821062EFC404202480A080010280000583 +S31540017FA0821020377FFFA67D9010202D821020372A +S31540017FB0C22C2027030D0D4D82106237C4042024A4 +S31540017FC080A0800102800005030000107FFFA67398 +S31540017FD09010202E0300001082106041C2342020F0 +S31540017FE00310104C82106233C404C00080A080018B +S31540017FF002800005030000107FFFA6689010202F25 +S315400180000300001082106243C23420220310105034 +S3154001801082106243C404C00080A080010280000532 +S31540018020030000117FFFA65D901020300300001170 +S3154001803082106045C23420240311114D82106237EB +S31540018040C404202480A080010280000503000011A1 +S315400180507FFFA65290102031030000118210624723 +S31540018060C23420260311115182106247C4042024D0 +S3154001807080A0800102800004010000007FFFA64726 +S315400180809010203281D82000C205A1A080A06000B6 +S315400180900480001B80A5200025100124191001240D +S315400180A0A414A1A0981321AC8810200080A46000DC +S315400180B09B2920100480000C82102000C40300007C +S315400180C085290002840040028528A0028610400DC1 +S315400180D082006001C624000280A0401132BFFFF930 +S315400180E0C4030000C20480008801200180A040042E +S315400180F014BFFFF080A4600080A5200012800028F4 +S31540018100230000107FFFE54490102000808A001173 +S3154001811012BFFFFDC205A1A080A060000480001B24 +S31540018120010000002510012427100124A414A1A058 +S31540018130A614E18C10800006A2102000A204600162 +S3154001814080A040110480001101000000921000112E +S315400181507FFFFDF890100010C204C000901C00087B +S31540018160808A000132BFFFF6C20480007FFFA60B62 +S3154001817090102033C2048000A204600180A0401107 +S3154001818014BFFFF4921000117FFFE52390102000E9 +S315400181909212200F7FFFE5229010200081C7E00850 +S315400181A091E820009FC20000A604E00180A480134C +S315400181B004800008832CE002D00700019FC2000022 +S315400181C0A604E00180A4801314BFFFFC832CE002C7 +S315400181D07FFFE51190102000B616E1A4920A3FFCFC +S315400181E0A8102000901020007FFFE50DB810200058 +S315400181F0B207BFE810800005A610200080A48013B6 +S3154001820024800012A8052001921000137FFFFE482A +S3154001821090100017820A001580A0401512BFFFF882 +S31540018220A604E001C206C000901DC008900A0001E4 +S3154001823080A00008B8673FFF80A4801314BFFFF4F5 +S3154001824092100013A805200180A480140480000424 +S31540018250832D200210BFFFE8EE0640017FFFE4EECA +S3154001826090102000A6100008901020007FFFE4EC3B +S315400182709214E00380A720000280018301000000E0 +S31540018280A73CE013808CE0031280018501000000C9 +S3154001829081D82000250000307FFFE4DF90102000C8 +S315400182A0808A001212BFFFFDAA100008C205A1A0D4 +S315400182B080A060000480000F053FFFBF2510012408 +S315400182C0A6102000A414A1A0921000139010001033 +S315400182D07FFFFDDC94102000C2048000A604E0016B +S315400182E080A0401314BFFFFA92100013053FFFBF51 +S315400182F0821020008410A36884078002C0204002B7 +S315400183008200600480A0607C12BFFFFD0100000076 +S3154001831082102005C224000082102001C2242004BC +S3154001832082102002C224200882102003C224200C7D +S31540018330901000107FFFFD8DA804200480A220002C +S315400183400280014A01000000C204000080A06005CD +S3154001835002800004010000007FFFA59090102006D6 +S315400183607FFFFD829010001080A2200012800199AB +S31540018370C205A1A080A06000048000120100000097 +S3154001838025100124A6102000A414A1A092100013C8 +S31540018390941020007FFFFD9C901000109210001356 +S315400183A0901000147FFFFD9894102000C2048000B5 +S315400183B0A604E00180A0401314BFFFF692100013FB +S315400183C07FFFE4AB90100010A60420207FFFE4A8B5 +S315400183D0901000137FFFE4A6900420407FFFE4A4A1 +S315400183E090042060C205A1A080A0600004800180A5 +S315400183F0B810200025100124A414A1A0AE1020001D +S31540018400921000177FFFFD3D90100010C2048000BE +S31540018410901A200580A00008AE05E001B8673FFF2D +S3154001842080A0401714BFFFF89210001780A72000C4 +S315400184300280016F01000000033FFFBF82106368A5 +S31540018440C41F8001C43FBFA8C207BFA880A0600562 +S315400184501280000601000000C207BFAC80A0600187 +S3154001846002800005C205A1A07FFFA54C90102009FE +S31540018470C205A1A080A06000048000382510012417 +S31540018480B8102000A414A1A0AE102000921000172D +S315400184907FFFFD1A90100014C2048000901A20013B +S315400184A080A00008AE05E001B8673FFF80A04017F5 +S315400184B014BFFFF89210001780A7200112800027F1 +S315400184C0833D6013808860031280002A010000000A +S315400184D0C2042004C224000082102005C2240000E8 +S315400184E090102001D024200482102002C2242008AA +S315400184F082102003C224200C92100011400003B3C5 +S31540018500912A001DA52A2002032EEEEE821063BB9E +S31540018510C22400127FFFFD159010001080A220009A +S315400185201280013701000000C4040012032EEEEE52 +S31540018530A93D600C821063BB80A0800102BFFDFA99 +S31540018540A80D2003901020127FFFA514A93D600CB1 +S3154001855010BFFDF5A80D20037FFFA5109010200A3E +S31540018560833D60138088600302BFFFDA010000008B +S315400185707FFFE42990102000033FFFF08210603F07 +S31540018580920A00017FFFE4269010200092102000FD +S3154001859094102000AA07BFA87FFFFD1B901000156D +S315400185A07FFFE41D901020000303C00092120001DA +S315400185B07FFFE41B90102000C205A1A080A06000AF +S315400185C00480000F8210200125100124A8102000EC +S315400185D0A414A1A092100014901000157FFFFD0A6B +S315400185E094102005C2048000A805200180A04014F3 +S315400185F014BFFFFA9210001482102001C22FBFA8A7 +S315400186000300400082106005C407BFA880A0800116 +S3154001861002800004010000007FFFA4E09010200BBF +S315400186207FFFE3FD90102000833A20068208600315 +S3154001863080A0600102800004010000007FFFA4D7F2 +S315400186409010200C7FFFE3F4901020000303C0003C +S3154001865025000030922A00017FFFE3F190102000AF +S315400186607FFFE3ED90102000808A001212BFFFFDCC +S3154001867092102000941020007FFFFCE3901000151B +S315400186807FFFE3E5901020002503C00092120012FF +S315400186907FFFE3E3901020007FFFE3DF901020008F +S315400186A0808A001202BFFFFDAE100008C205A1A0DC +S315400186B080A060000480001025100124B81020011C +S315400186C0B92F0011A414A1A0B8073FFFA81020009C +S315400186D092100014901000157FFFFCDA9410001CD4 +S315400186E0C2048000A805200180A0401414BFFFFAEF +S315400186F0921000141303C00090102000922DC0095F +S315400187007FFFE3C72503C0007FFFE3C3901020002E +S31540018710808A001212BFFFFD01000000C407BFA8F6 +S31540018720030040008210600580A0800102800004A1 +S31540018730010000007FFFA4999010200D7FFFE3B652 +S3154001874090102000833A20088208600380A06001CF +S3154001875002800005841020117FFFA4909010200F05 +S3154001876084102011861020559010200025000030DD +S31540018770C43FBFF87FFFE3A801000000033C3FFF71 +S315400187800503C0008210633F820A00019010200059 +S315400187907FFFE3A3921040027FFFE39F90102000EA +S315400187A0808A001212BFFFFDAE07BFF87FFFE3BE0E +S315400187B090100017C205A1A080A060000480000FA0 +S315400187C00100000025100124AA07BFFCA414A1A0A2 +S315400187D0A810200092100014901000157FFFFC8A0B +S315400187E094102055C2048000A805200180A04014A1 +S315400187F014BFFFFA921000147FFFE3AB90100017ED +S3154001880080A220110280008180A260557FFFA4636F +S31540018810901020107FFFE38090102000833A2006BD +S315400188208208600380A0600102800004A410000851 +S315400188307FFFA45A90102010133C3FF09010200067 +S315400188409212603F920C80097FFFE375250000304C +S315400188507FFFE37190102000808A001212BFFFFD56 +S31540018860AA10000830BFFF1B7FFFA44C90102005C3 +S31540018870C204000080A0600512BFFEB801000000DE +S3154001888030BFFEB87FFFA44590102001A73CE013FE +S31540018890808CE00302BFFE7F010000007FFFE35EA4 +S315400188A090102000133FFFF0AA1000089212603F7B +S315400188B0920A00097FFFE35A901020007FFFE2B140 +S315400188C0A810001A0303C000133C3FFF901020007C +S315400188D0921263FC920D4009A61020007FFFE350DF +S315400188E09212400192100013901000147FFFFC7207 +S315400188F094102000A604E00180A4801334BFFFFB3E +S3154001890092100013901020001303C0007FFFE34430 +S31540018910921540097FFFE29B010000007FFFE33E85 +S3154001892090102000833A200A8208600380A06001EB +S3154001893002800005250000307FFFA4189010200218 +S31540018940250000307FFFE33490102000808A00121A +S3154001895012BFFFFD0100000001000000920A3FFC2A +S315400189607FFFE32F901020009010001492102000FA +S315400189707FFFFC6094102000010000007FFFE3268A +S3154001898090102000033C3FFF821063FC820A0001E5 +S31540018990901020007FFFE322921060030100000047 +S315400189A07FFFE278010000007FFFE31B901020006B +S315400189B0833A200C8208600380A0600102BFFE3525 +S315400189C0010000007FFFA3F59010200330BFFE3168 +S315400189D07FFFA3F290102007C205A1A080A06000EE +S315400189E034BFFE692510012430BFFE767FFFA3EB1D +S315400189F09010200810BFFE92033FFFBF7FFFA3E701 +S31540018A009010201130BFFEC912BFFF810100000046 +S31540018A1030BFFF819DE3BFA07FFFFC5301000000F3 +S31540018A2013002040B01000089212600F7FFFE2FC55 +S31540018A309010200081C7E00881E800009DE3BFA0B7 +S31540018A407FFFA3C81100412C82102007EC062004A9 +S31540018A50E0062004C2262008AC0DA003AC05A00107 +S31540018A6001000000C02600007FFFA3C59010200A28 +S31540018A700300020084103FFFB8060001C42600012E +S31540018A80A13C2002292AAAAAA00C27FFA81522AA9E +S31540018A902B155555A12C2008AA1561558810001C87 +S31540018AA0C2060001A8084014AA0840159A102000E1 +S31540018AB080A420002280000D9A03600186012020B7 +S31540018AC08410000482102000EA208000E820C000C3 +S31540018AD0820060108400A04080A0401006BFFFFBCA +S31540018AE08600E0409A03600180A5800D14BFFFF126 +S31540018AF0880120043B000200AE102000BA17602016 +S31540018B00BA06001D80A4200022800017AE05E001B0 +S31540018B10A610001CA410001DA2102000C204C00013 +S31540018B2080A0401502800004010000007FFFA39B46 +S31540018B3090102001C204800080A0401422800005CC +S31540018B40A20460107FFFA39590102001A20460103B +S31540018B50A604E04080A4401006BFFFF1A404A04053 +S31540018B60AE05E00180A5801714BFFFE7BA07600490 +S31540018B707FFFA3839010200C2F0008001B1555552D +S31540018B80AE060017092AAAAA9A136155881122AA84 +S31540018B9098100017961020001500020080A42000AE +S31540018BA02280000D9602E001860320048410000C09 +S31540018BB082102000DA208000C820C00082006002B6 +S31540018BC08400A00880A0401006BFFFFB8600E00895 +S31540018BD09602E00180A5800B14BFFFF19803000ABD +S31540018BE02B155555292AAAAAAA156155A81522AAAF +S31540018BF0BA1020003900020080A42000228000170C +S31540018C00BA076001A605E004A4100017A2102000CF +S31540018C10C204800080A040150280000401000000CB +S31540018C207FFFA35E90102003C204C00080A04014C1 +S31540018C3022800005A20460027FFFA3589010200302 +S31540018C40A2046002A404A00880A4401006BFFFF15C +S31540018C50A604E008BA07600180A5801D14BFFFE79E +S31540018C60AE05C01C2F0008001B155555AE15E00476 +S31540018C70092AAAAAAE0600179A136155881122AA93 +S31540018C8098100017961020001500020080A42000BD +S31540018C902280000D9602E00186033FFC8410000C01 +S31540018CA082102000DA208000C820C00082006002C5 +S31540018CB08400A00880A0401006BFFFFB8600E008A4 +S31540018CC09602E00180A5800B14BFFFF19803000ACC +S31540018CD02B155555292AAAAAAA156155A81522AABE +S31540018CE0BA1020003900020080A42000228000171B +S31540018CF0BA076001A605FFFCA4100017A2102000C8 +S31540018D00C204800080A040150280000401000000DA +S31540018D107FFFA32290102004C204C00080A040140B +S31540018D2022800005A20460027FFFA31C901020044C +S31540018D30A2046002A404A00880A4401006BFFFF16B +S31540018D40A604E008BA07600180A5801D14BFFFE7AD +S31540018D50AE05C01C82102005C22620080320000053 +S31540018D60C226000081C7E00881E80000033FFFBF3B +S31540018D70821063609DE380017FFFFAD425200000C5 +S31540018D804000016E2D0000307FFFE2239010200845 +S31540018D90AA1000087FFFE2209010200C7FFFA31B42 +S31540018DA0AE100008912A20047FFFA2F59002200C04 +S31540018DB082102001873D60148608E00F8600E00A94 +S31540018DC0A73D6010A13D6018853DE014A60CE00763 +S31540018DD08408A00FA604E0028400A00AA728401335 +S31540018DE0A00C2003A93DE010A0042001A80D2007F6 +S31540018DF0A12C0003A8052002AA2480108604FFFFA7 +S31540018E00A9284014A33DE01882053FFFA20C600348 +S31540018E10A2046001AA154003A32C4002A424801198 +S31540018E20A41480017FFFE1FC90102000808A001687 +S31540018E3012BFFFFD133FFFBF90100011921263C096 +S31540018E4015155555920780097FFFE1869412A15564 +S31540018E5080A220001280007001000000133FFFBF76 +S31540018E6090100011921263C0152AAAAA920780098E +S31540018E707FFFE1909412A2AA80A220001280006393 +S31540018E80010000007FFFA2E101000000912A2004B9 +S31540018E907FFFA2BB9002200A40000125010000008D +S31540018EA0032AAAAA981062AA8210620090100011A1 +S31540018EB0920C8001941000127FFFE1A796100014D6 +S31540018EC080A220001280004D010000000315555577 +S31540018ED09810615582106100901000119410001293 +S31540018EE0961000147FFFE19C920C800180A2200025 +S31540018EF01280003F010000007FFFA2C40100000074 +S31540018F00912A20047FFFA29E9002200B9010001010 +S31540018F10131555557FFFE1779212615580A22000C6 +S31540018F201280002F0100000090100010132AAAAAF7 +S31540018F307FFFE170921262AA80A220001280002572 +S31540018F40010000007FFFA2B101000000912A200428 +S31540018F507FFFA28B900220099010001092100015FD +S31540018F6094100013172AAAAA7FFFE16E9612E2AA6D +S31540018F7080A2200012800013010000009010001012 +S31540018F809210001594100013171555557FFFE16592 +S31540018F909612E15580A220000280000401000000E3 +S31540018FA07FFFA27E901020087FFFFA48B010200074 +S31540018FB0400000E20100000081C7E00881E80000AE +S31540018FC07FFFA2769010200710BFFFEE9010001091 +S31540018FD07FFFA2729010200630BFFFDB7FFFA26F9A +S31540018FE09010200510BFFFD2901000107FFFA26B9A +S31540018FF09010200430BFFFC17FFFA268901020036C +S3154001900010BFFFB4031555557FFFA264901020028F +S3154001901030BFFF9D7FFFA2619010200110BFFF91DD +S31540019020133FFFBF81C3E0089144400080800000A8 +S31540019030151001209412A1EC9010200092102246A6 +S3154001904081800000010000000100000001000000D5 +S31540019050D00280009122400881C3E008010000004F +S3154001906081800000901020018090200180F0200135 +S315400190701280004B010000000100000001000000C9 +S31540019080010000008090200180F8200112800044F8 +S315400190900100000001000000010000000100000085 +S315400190A08090200180FA3FFF010000001680003CBD +S315400190B00100000001000000010000000100000065 +S315400190C08180000090102001809020010100000065 +S315400190D080D0200112800032010000000100000012 +S315400190E0010000000100000080D220010280002C16 +S315400190F00100000080D23FFF1680002901000000D8 +S3154001910080DA3FFF9340000080A27FFF1280002457 +S315400191100100000080D23FFF934800009332601463 +S31540019120920A600F80A260081280001D01000000B3 +S315400191308180000090102001945220049452A00492 +S315400191409452A00496A2A04012800015010000008E +S31540019150818000009010200280A000003280001023 +S315400191609052000880A220021280000D01000000EA +S31540019170818000009010200280A0000001000000C4 +S31540019180328000079052000880A22002128000041B +S315400191900100000081C3E0089010200181C3E0086E +S315400191A0901000001315555592126155A582400045 +S315400191B0010000000100000001000000954480000C +S315400191C080A2400A1280004301000000923A40000A +S315400191D0A5824000010000000100000001000000DE +S315400191E09544800080A2400A1280003A01000000A6 +S315400191F01100003F901223FFA580000081800000EE +S3154001920001000000010000000100000093F23FFF51 +S315400192109A10000993F23FFF93F23FFF93F23FFF0B +S3154001922093F23FFF93F23FFF93F23FFF93F23FFFEB +S315400192309940000097448000153FFC009412A00815 +S3154001924080A2400A1280002380A2400B1280002196 +S3154001925080A320071280001F113FFF80901220013A +S3154001926080A340081280001B1100003F901223FF8B +S31540019270A58000008180000001000000010000007F +S315400192800100000093FA3FFF93FA3FFF93FA3FFF35 +S3154001929093FA3FFF93FA3FFF93FA3FFF93FA3FFF5B +S315400192A093FA3FFF994000009744800080A26008EE +S315400192B01280000880A260081280000680A3200068 +S315400192C0128000040100000081C3E00890102001D3 +S315400192D081C3E008901000008180000090102002B8 +S315400192E080A00000328000109072000880A2200207 +S315400192F01280000D010000008180000090102002C4 +S3154001930080A0000001000000328000079072000832 +S3154001931080A22002128000040100000081C3E008FF +S315400193209010200181C3E00890100000C0A00040C9 +S3154001933081C3E00801000000110020409012200F77 +S31540019340D0A0004081C3E008010000009DE3BFA01A +S315400193507FFFE0B190102008A21000087FFFE0AE29 +S315400193609010200CA0100008C0A00040833C60145F +S315400193708208600F8200600A913C6018900A2003BF +S31540019380900220017FFFE01B912A0001833C2014BB +S315400193908208600F8200600A913C2018900A2003DF +S315400193A0900220017FFFE021912A00017FFFF947CA +S315400193B001000000110020409012200FD0A0004073 +S315400193C081C7E00881E80000981200098182000007 +S315400193D09AAB2FFF02800025988800009923000947 +S315400193E09923000999230009992300099923000922 +S315400193F09923000999230009992300099923000912 +S315400194009923000999230009992300099923000901 +S3154001941099230009992300099923000999230009F1 +S3154001942099230009992300099923000999230009E1 +S3154001943099230009992300099923000999230009D1 +S3154001944099230009992300099923000999230009C1 +S3154001945099230009992300099923000999230000BA +S3154001946081C3E0089140000099230009992300092E +S315400194709923000999230009992300099923000991 +S315400194809923000999230009992300099923000981 +S315400194909923000999230009992300009B40000064 +S315400194A0992B200C9B33601481C3E0089013400C28 +S315400194B01080000B8610200080924008168000081C +S315400194C086100008809240001680000480920000B9 +S315400194D01680000392200009902000089A924000CD +S315400194E0128000059610000891D0200281C3E00841 +S315400194F09010000080A2C00D0A80009594100000D3 +S315400195000302000080A2C0010A80002898100000D2 +S3154001951080A340011A80000D841020019B2B60041A +S3154001952010BFFFFC980320019A83400D1A80000763 +S315400195308400A001832860049B3360019A034001A3 +S31540019540108000078420A00180A3400B0ABFFFF7CB +S3154001955001000000028000020100000084A0A00179 +S3154001956006800076010000009622C00D941020016D +S315400195701080000A01000000952AA001068000051E +S315400195809B3360019622C00D108000049402A00115 +S315400195909602C00D9422A00184A0A00116BFFFF738 +S315400195A08092C000308000659B2B600480A3400BF5 +S315400195B008BFFFFE988320010280006598232001A1 +S315400195C08092C000952AA0040680002F9B3360013B +S315400195D096A2C00D068000179B33600196A2C00D6E +S315400195E00680000B9B33600196A2C00D06800005E4 +S315400195F09B33600196A2C00D108000509402A00FCB +S315400196009682C00D1080004D9402A00D9682C00D29 +S31540019610068000059B33600196A2C00D108000476D +S315400196209402A00B9682C00D108000449402A009BA +S315400196309682C00D0680000B9B33600196A2C00D39 +S31540019640068000059B33600196A2C00D1080003B49 +S315400196509402A0079682C00D108000389402A0059E +S315400196609682C00D068000059B33600196A2C00D0F +S31540019670108000329402A0039682C00D1080002F04 +S315400196809402A0019682C00D068000179B336001AB +S3154001969096A2C00D0680000B9B33600196A2C00DB9 +S315400196A0068000059B33600196A2C00D1080002301 +S315400196B09402BFFF9682C00D108000209402BFFD28 +S315400196C09682C00D068000059B33600196A2C00DAF +S315400196D01080001A9402BFFB9682C00D10800017BD +S315400196E09402BFF99682C00D0680000B9B33600140 +S315400196F096A2C00D068000059B33600196A2C00D5F +S315400197001080000E9402BFF79682C00D1080000BA8 +S315400197109402BFF59682C00D068000059B33600119 +S3154001972096A2C00D108000059402BFF39682C00D2B +S31540019730108000029402BFF198A3200116BFFFA238 +S315400197408092C000268000029602C0098090C00027 +S31540019750268000029620000B81C3E0089010000B82 +S3154001976092100008941020009010200096102000BE +S315400197708213C000400000429E10400001000000DC +S315400197809DE3BFA080A6A00F9A100018881000196B +S31540019790088000068610001A8216401880886003E9 +S315400197A00280000D8410001980A0E00002800008AC +S315400197B082102000C4090001C42B400182006001CF +S315400197C080A0400332BFFFFDC409000181C7E00804 +S315400197D081E8000082100018DA008000DA2040009B +S315400197E08600FFF080A0E00FDA00A004DA206004D2 +S315400197F0DA00A008DA206008DA00A00CDA20600C52 +S315400198008400A01018BFFFF582006010B406BFF0B7 +S315400198109B36A004832B60049A036001B426800121 +S315400198209B2B600480A6A0038806400D8610001A73 +S3154001983008BFFFDE9A06000D82102000C401000118 +S31540019840C4234001820060048426800180A0A003D5 +S3154001985038BFFFFCC4010001B406BFFC8336A00239 +S315400198608728600282006001862680038328600281 +S315400198708801000110BFFFCD9A0340019DE3BFA0BF +S3154001988021100123400005F7901420EC03100070CD +S31540019890E2006090D004614880A220002280003D11 +S315400198A09004614CC202200480A0601F1480001EF7 +S315400198B00100000080A620000280001284006002A0 +S315400198C0C4022004820060228600A04289286002E8 +S315400198D08728E002C2022188F4220004F62200030E +S315400198E0861020018728C00282104003C2222188A7 +S315400198F080A62002028000198210000284006002C4 +S315400199008528A00282006001C2222004F2220002C0 +S31540019910B0102000400005E9901420EC81C7E00812 +S3154001992081E80000400000289010219080A220008C +S315400199302280001A901420ECC2046148C222000021 +S31540019940D0246148C0222004C0222188C022218C13 +S3154001995010BFFFD982102000C202218C861040031D +S3154001996082100002840060028528A002C622218C52 +S3154001997082006001F2220002C2222004B0102000BF +S31540019980400005CE901420EC81C7E00881E8000034 +S3154001999010BFFFC5D0246148400005C8B0103FFF45 +S315400199A081C7E00881E800009210000803100120F9 +S315400199B0D00062208213C000400002179E10400072 +S315400199C0010000009210000803100120D00062201F +S315400199D08213C000400000039E10400001000000B9 +S315400199E09DE3BFA0841020008206600B80A0601614 +S315400199F008800004A0102010A0087FF88534201F9D +S31540019A0080A400190A8000468088A0FF1280004485 +S31540019A1001000000400001AF9010001880A421F71A +S31540019A20188000418334200923100121A214637850 +S31540019A3082044010E400600C80A480010280010F82 +S31540019A4099342003C604A004C404A00CC204A0088F +S31540019A508608FFFC86048003C800E00488112001C3 +S31540019A60C220A008C820E004C420600C9010001851 +S31540019A7040000192B004A00881C7E00881E80000D7 +S31540019A80E6046008E804E004A80D3FFC82250010C6 +S31540019A9080A0600F148000D280A40014031001231B +S31540019AA02F100122EA006160C205E384AA05601015 +S31540019AB080A07FFF02800004AA054010AA056FFF1F +S31540019AC0AA0D7000901000184000018892100015F0 +S31540019AD080A23FFF02800009A41000088404C0143C +S31540019AE080A08008088000EC2D10012380A440133B +S31540019AF0028000EAC205A16CC2046008C400600489 +S31540019B008408BFFC8220801080A0600F148001224F +S31540019B1080A40002400001699010001881C7E00846 +S31540019B2091E820009934200380A060000280000F54 +S31540019B30872B200380A06004088000929934200678 +S31540019B409800605B80A0601408800008872B200382 +S31540019B5080A060541880011380A061549934200C70 +S31540019B609803206E872B200323100121A2146378CA +S31540019B7086044003E400E00C80A0C0123280000B52 +S31540019B80C404A004108000109803200136800068A8 +S31540019B90C604A00CE404A00C80A0C0122280000AD6 +S31540019BA098032001C404A0048408BFFC82208010CD +S31540019BB080A0600F04BFFFF680A0600098033FFFBE +S31540019BC098032001071001218610E380E400E00894 +S31540019BD080A0C0122280002AC2046004C404A004EA +S31540019BE08408BFFC8220801080A0600F1480008A08 +S31540019BF080A06000C620E00C16800059C620E0080F +S31540019C0080A0A1FF288000628530A0038330A0098F +S31540019C1080A06004188000E98800605B8930A00656 +S31540019C20880120389B2920039A04400DC20360080D +S31540019C3080A0400D32800008C8006004108000E911 +S31540019C40DA04600480A3400122800008C400600C4D +S31540019C50C800600488093FFC80A080042ABFFFFA3F +S31540019C60C2006008C400600CC424A00CC224A00831 +S31540019C70E420600CE420A008C2046004853B200275 +S31540019C80881020018929000280A040042ABFFF7E56 +S31540019C90E6046008808840042280004B980B3FFC14 +S31540019CA0952B20039610000C9404400A9A10000A42 +S31540019CB0E403600C80A340123280000BC404A0046C +S31540019CC0108000589602E00136800019C604A00CA7 +S31540019CD0E404A00C80A34012228000529602E001C7 +S31540019CE0C404A0048408BFFC8220801080A0600FB9 +S31540019CF004BFFFF680A06000DA04A00CC804A008E7 +S31540019D0084048010A0142001C8236008DA21200CA5 +S31540019D10C420E00CC420E008E024A004C220800155 +S31540019D20C620A00810800010C620A00CC204A008BE +S31540019D3084048002C800A00488112001C220E008E2 +S31540019D40C820A004C620600C90100018400000DB1B +S31540019D50B004A00881C7E00881E8000084048002BD +S31540019D60C200A00482106001C220A0049010001815 +S31540019D70400000D2B004A00881C7E00881E8000095 +S31540019D809803203810BFFF79872B20038928A00329 +S31540019D9088044004DA012008D6046004C824A00CD3 +S31540019DA0DA24A0088538A00282102001E423600C41 +S31540019DB083284002E42120088210400B10BFFFB0E7 +S31540019DC0C2246004892920018088400402BFFFFE25 +S31540019DD09803200410BFFFB4952B200338BFFF31F1 +S31540019DE003100123E404600884048010A0142001B8 +S31540019DF082106001E024A004C220A0049010001843 +S31540019E00C4246008400000ADB004A00881C7E00842 +S31540019E1081E800008404801010BFFFBEA014200119 +S31540019E20808AE00312BFFFA39A04A008808B200317 +S31540019E300280009C8202BFF8D400600880A28001A3 +S31540019E4022BFFFFB98033FFFC2046004892920011A +S31540019E5080A1000118BFFF0B80A1200022BFFF0A8D +S31540019E60E604600880890001228000928929200148 +S31540019E7010BFFF8C9810000B8204A008E400600C10 +S31540019E8080A0401202BFFF509803200210BFFEEF90 +S31540019E90C604A004C205A16C8205400180A08012BF +S31540019EA002800067C225A16CC605E38480A0FFFF3E +S31540019EB02280006B0310012282048001842040022B +S31540019EC0C425A16C848CA00702800006030000040F +S31540019ED08210200882204002A40480018220700062 +S31540019EE0AA04801590100018AA0D6FFFAA204015EC +S31540019EF04000007E9210001580A23FFF0280006064 +S31540019F008410200184220012840080158410A0014F +S31540019F10C205A16C82054001C225A16CC424A004DE +S31540019F2080A4401302800010E424600880A5200F1D +S31540019F300880003A84053FF48408BFF88604C002CD +S31540019F40C804E0048809200188108004C824E0047C +S31540019F5088102005C820E00880A0A00F1880004284 +S31540019F60C820E00405100123C600A16480A0400377 +S31540019F7038800002C220A16405100123C600A168F1 +S31540019F8080A0400338BFFEDDC220A16810BFFEDCC1 +S31540019F90C204600828BFFF95E404600830BFFEDEB6 +S31540019FA01880001780A065549934200F98032077B4 +S31540019FB010BFFEEE872B200380A0601408BFFF1B55 +S31540019FC09B29200380A060541880001780A061540B +S31540019FD08930A00C8801206E10BFFF149B292003F5 +S31540019FE08939200284102001852880048413400287 +S31540019FF0C424600410BFFF1D84100001861023F0A5 +S3154001A00018BFFEDA9810207E993420129803207CDE +S3154001A01010BFFED6872B20038210200110BFFEB74A +S3154001A020C224A0041880001880A065548930A00F6E +S3154001A0308801207710BFFEFD9B2920038088AFFF52 +S3154001A04012BFFF9BC605E384C4046008860540141D +S3154001A0508610E00110BFFFC4C620A00410BFFF9ABE +S3154001A060E42063849204E0084000006B90100018DD +S3154001A0700310012310BFFFBCC200616C10BFFFA5D6 +S3154001A080AA1020009A1023F018BFFEE88810207EFF +S3154001A0908930A0128801207C10BFFEE49B29200351 +S3154001A0A0C20460048228400410BFFF68C2246004D1 +S3154001A0B010BFFF6D9602E004111001229012238811 +S3154001A0C08213C000400003FD9E10400001000000C5 +S3154001A0D011100122901223888213C000400003E12F +S3154001A0E09E104000010000009DE3BFA02110012405 +S3154001A0F0901000194000015DC02421B080A23FFFAD +S3154001A10002800004C20421B081C7E00891E800083A +S3154001A11080A0600002BFFFFD01000000C2260000D2 +S3154001A12081C7E00891E800089DE3BFA07FFFFFE9F2 +S3154001A1309010001821100121A0142378C204200890 +S3154001A140E2006004A20C7FFC82046FEFB22040194A +S3154001A150B20E7000B206700080A66FFF048000093F +S3154001A160901000187FFFFFE192102000C2042008E2 +S3154001A1708200401180A20001028000079010001861 +S3154001A180901000187FFFFFCDB010200081C7E00876 +S3154001A19081E800007FFFFFD59220001980A23FFF92 +S3154001A1A00280000EA2244019C4042008A2146001B2 +S3154001A1B003100123E220A00490100018B0102001E2 +S3154001A1C0C400616CB22080197FFFFFBCF220616C34 +S3154001A1D081C7E00881E80000901000187FFFFFC3A7 +S3154001A1E092102000C20420088422000180A0A00F02 +S3154001A1F004BFFFE407100122C600E3849022000356 +S3154001A200071001238410A001D020E16C10BFFFDDAF +S3154001A210C42060049DE3BFA080A660000280005078 +S3154001A220010000007FFFFFAB9010001884067FF805 +S3154001A230D800A004820B3FFE09100121860080014F +S3154001A24088112378DA00E004D601200880A2C003F1 +S3154001A250028000639A0B7FFCDA20E004808B2001A8 +S3154001A2601280000E98102000D8067FF88420800CBA +S3154001A2708200400CD600A0089801200880A2C00C9C +S3154001A2800280000698102001D400A00CD422E00CD4 +S3154001A29098102000D622A0089600C00DD602E004F0 +S3154001A2A0808AE0013280000A8610600180A3200086 +S3154001A2B00280002D8200400DDA00E008C600E00C65 +S3154001A2C0C623600CDA20E00886106001C2208001B6 +S3154001A2D080A3200012800020C620A00480A061FF38 +S3154001A2E028800030833060038730600980A0E00415 +S3154001A2F0188000529800E05B993060069803203838 +S3154001A3009B2B20039A01000DC603600880A0C00D57 +S3154001A31032800008C800E00410800052DA012004AF +S3154001A32080A3400322800008C200E00CC800E0047C +S3154001A33088093FFC80A040042ABFFFFAC600E00816 +S3154001A340C200E00CC220A00CC620A008C420E00C2C +S3154001A350C42060087FFFFF5981E8000081C7E008FB +S3154001A36081E80000DA00E008171001219612E38027 +S3154001A37080A3400B32BFFFD3C600E00CC423600C60 +S3154001A380C4236008C2208001DA20A008821060013F +S3154001A390DA20A00CC220A0047FFFFF4881E800001C +S3154001A3A08728600386010003DA00E008C620A00C76 +S3154001A3B0DA20A008D8012004C423600CC420E00898 +S3154001A3C083386002841020018328800182130001B2 +S3154001A3D0C22120047FFFFF3981E80000808B2001E4 +S3154001A3E01280000982034001D8067FF88420800C40 +S3154001A3F0DA00A00CC600A0088200400CC623600803 +S3154001A400DA20E00CC421200886106001C620A00491 +S3154001A41005100122C400A38080A040020ABFFFCEDE +S3154001A42003100123D20061607FFFFF4090100018A6 +S3154001A4307FFFFF2281E8000080A0E01408BFFFB241 +S3154001A4409B2B200380A0E0541880000D80A0E1548E +S3154001A4509930600C9803206E10BFFFAB9B2B2003F5 +S3154001A460993B2002821020018328400C821340012F +S3154001A470C221200410BFFFB48210000318800006D9 +S3154001A48080A0E5549930600F9803207710BFFF9E56 +S3154001A4909B2B20039A1023F018BFFF9B9810207E18 +S3154001A4A0993060129803207C10BFFF979B2B2003A5 +S3154001A4B09DE3BFA080A620000280001F031001205B +S3154001A4C0E406214880A4A00022800014C206203C54 +S3154001A4D0C204A004A0807FFF2C80000CE40480000D +S3154001A4E0A2006001A32C6002A2048011C2044000B4 +S3154001A4F09FC04000A2047FFCA0843FFF3CBFFFFDFC +S3154001A500C2044000E404800080A4A00032BFFFF2F0 +S3154001A510C204A004C206203C80A060000280000460 +S3154001A520010000009FC040009010001881C7E0085C +S3154001A53081E8000010BFFFE3F00062209DE3BFA069 +S3154001A540D206400080A260000280000401000000A3 +S3154001A5507FFFFFFB901000187FFFFF2F81E800006F +S3154001A560010000009DE3BFA003100120C20062204C +S3154001A57080A600010280003201000000D206204C74 +S3154001A58080A2600022800016E0062148A210200029 +S3154001A590E002401180A420002280000BA204600446 +S3154001A5A092100010901000187FFFFF1BE00400007E +S3154001A5B080A4200012BFFFFC92100010D206204C4E +S3154001A5C0A204600480A4603C32BFFFF3E002401164 +S3154001A5D07FFFFF1190100018E006214880A420005B +S3154001A5E02280000ED2062054A206214C80A40011DE +S3154001A5F02280000AD20620549210001090100018B2 +S3154001A6007FFFFF05E004000080A4401012BFFFFC5D +S3154001A61092100010D206205480A2600022800005CC +S3154001A620C20620387FFFFEFC90100018C206203873 +S3154001A63080A0600032800004C206203C81C7E00849 +S3154001A64081E800009FC0400090100018F20622E009 +S3154001A65080A6600002BFFFFA010000007FFFFFB83D +S3154001A66081E800000100000005100124C200A1B4E8 +S3154001A67080A060002280000603100125900040085A +S3154001A680D020A1B481C3E008901000018210616816 +S3154001A69090004008C220A1B4D020A1B481C3E008F3 +S3154001A6A090100001A7500000AE1000018334E00174 +S3154001A6B029100123E805203CA92CC014821500016C +S3154001A6C081E000008190400001000000010000008F +S3154001A6D001000000E03BA000E43BA008E83BA010DD +S3154001A6E0EC3BA018F03BA020F43BA028F83BA0305F +S3154001A6F0FC3BA03881E800008210001781C440006D +S3154001A70081CC800001000000010000000100000032 +S3154001A710A7500000A92CE0012B100123EA05603C5B +S3154001A720AB34C015AA1540148195400001000000C4 +S3154001A730010000000100000081E8000081E80000FE +S3154001A740E01BA000E41BA008E81BA010EC1BA0180E +S3154001A750F01BA020F41BA028F81BA030FC1BA0383E +S3154001A76081E0000081E0000081C4400081CC80008E +S3154001A770A75000002910006CADC5231C0100000044 +S3154001A78027100123A614E018E024C000818C202064 +S3154001A7900100000001000000010000009DE3BFA090 +S3154001A7A09DE3BFA09DE3BFA09DE3BFA09DE3BFA0E6 +S3154001A7B09DE3BFA09DE3BFA081E8000081E80000C2 +S3154001A7C081E8000081E8000081E8000081E800009E +S3154001A7D081E8000027100123A614E018C024C00018 +S3154001A7E0E203A068A4046004E223A064E423A06811 +S3154001A7F0108002F1AC10000029100122A81523FC9B +S3154001A800C2252000C8252004E0252010E225201479 +S3154001A810E4252018E825201C81E800008348000033 +S3154001A82082106F0081886020010000000100000055 +S3154001A8300100000009100123C801203C81E000000D +S3154001A8408821200180A920FF028000030100000029 +S3154001A8500100000080A1000012BFFFF901000000C5 +S3154001A86009100123C801203C81E8000080A920FF8E +S3154001A8700280000301000000010000008821200140 +S3154001A88080A1000012BFFFF90100000081E0000035 +S3154001A89029100122A81523FCC8052004C205200061 +S3154001A8A0E0052010E2052014E4052018C025201CEF +S3154001A8B0818C200001000000010000000100000021 +S3154001A8C081C4800081CCA004A0142F00818C00009B +S3154001A8D001000000010000000100000081C4800069 +S3154001A8E081CCA00480A6600212800005A8142F0026 +S3154001A8F0818D0000B01420203080001F80A66003A7 +S3154001A90012800006A80E2F00AA2C2F00A81540146D +S3154001A910818D00003080001880A6600412800008F6 +S3154001A920A9480000A8152040818D000001000000C3 +S3154001A93001000000010000003080000F80A6600584 +S3154001A94012800008A9480000A82D2040818D0000F2 +S3154001A95001000000010000000100000030800006F7 +S3154001A96080A66006128000030100000030BFFFA3ED +S3154001A97091D0200081C4800081CCA0049210200394 +S3154001A98081C3E00891D020029210200281C3E008E1 +S3154001A99091D020029210200681C3E00891D0200276 +S3154001A9A081C3E0080100000081C3E0080100000006 +S3154001A9B081C3E00801000000AE25A010A7500000A9 +S3154001A9C02D10006AAC15A1CC2910006D81C520C49B +S3154001A9D0010000001110012390122024D202000030 +S3154001A9E092026001D2220000932DE008902C2F00A4 +S3154001A9F092120009111001239012201CD00200006E +S3154001AA0080A000082280000292126F00818A602095 +S3154001AA100100000001000000010000009010001735 +S3154001AA20400000379203A06092142F00818A602073 +S3154001AA300100000001000000010000001110012387 +S3154001AA4090122024D202000092226001D2220000FC +S3154001AA50108002BCAC1000009DE3BFA01B10012377 +S3154001AA60892E60029A13619480A6601F821020008D +S3154001AA7014800017C6034004B32E60041910012345 +S3154001AA8080A0E000981322140280000D8406400C39 +S3154001AA9080A0C00212800006821000031080000EC2 +S3154001AAA0C206400C2280000CC206400CC200600C5B +S3154001AAB080A0600012BFFFFC80A08001C423400437 +S3154001AAC0F026400CC620A00C8210200081C7E00869 +S3154001AAD091E80001F026400C81C7E00891E80001A9 +S3154001AAE0912A20020310012382106194C400400878 +S3154001AAF0C422600C81C3E008D22040089DE3BFA078 +S3154001AB00051001238210A02CC200600480A04018C9 +S3154001AB1022800040C400A02C80A620002280000292 +S3154001AB20B0100001A32E200203100123821061946C +S3154001AB30E000401180A42000028000342910012445 +S3154001AB402D1001242B10012427100124A8152014AF +S3154001AB50AC15A098AA15609C1080001DA614E0189B +S3154001AB60A41000138400A001C4248011C4058000F0 +S3154001AB7080A0A00022800006D20420089FC0800049 +S3154001AB8001000000C2040000D20420089010001801 +S3154001AB909FC0400094100019C205400080A060008B +S3154001ABA022800005C20480119FC0400001000000C0 +S3154001ABB0C204801182007FFFC2248011E004200C70 +S3154001ABC080A420000280001101000000C2040000A0 +S3154001ABD080A0600022BFFFFBE004200CC4050000FA +S3154001ABE080A0A00012BFFFDFC404C01180A0A00056 +S3154001ABF002BFFFDDA4100013E004200C80A4200056 +S3154001AC0032BFFFF4C204000081C7E00881E80000BA +S3154001AC10F000A0C010BFFFC1B00E201F8C10000F66 +S3154001AC20A74800008B34E0188A09600F80A16003B1 +S3154001AC3002800002108000399010200192102006F7 +S3154001AC40400002760100000080A000080280003327 +S3154001AC5001000000C2022010113FFC00820840089A +S3154001AC60110003FC8410400890100002921020014C +S3154001AC709410200C4000027F0100000080A00008D3 +S3154001AC8002800026010000004000028F9210000160 +S3154001AC900B1001238A116034D2214000901000022A +S3154001ACA09210200194102011400002720100000010 +S3154001ACB080A00008028000190100000040000282C5 +S3154001ACC092100001920260100B1001238A11602834 +S3154001ACD0D221400090100002921020019410200DC4 +S3154001ACE0400002640100000080A000080280000BC1 +S3154001ACF00100000040000274921000010B10012374 +S3154001AD008A11602CD2214000D40260109532A010E5 +S3154001AD10940AA00FD42160049E10000681C3E00866 +S3154001AD2001000000031001238210604882102001B7 +S3154001AD3091D0200081C3E008010000009DE3BFA03F +S3154001AD40051001248410A1B8C200A09080A0600023 +S3154001AD50028000278600A0941080000688102000FB +S3154001AD608801200180A100011A8000210100000014 +S3154001AD70D800C000DA0300009733601880A2C018DB +S3154001AD8012BFFFF88600E0049733600C960AEFFF86 +S3154001AD9080A2C01932BFFFF48801200180A6A0001D +S3154001ADA0028000039A0B600FDA268000C20320045A +S3154001ADB0860120648728E00284008003C400A00441 +S3154001ADC03100003F073FFC00B01623F0B0084018A1 +S3154001ADD082084003B12E20048330600CB00E00017E +S3154001ADE0B016000281C7E00881E8000081C7E0088B +S3154001ADF091E820009DE3BFA003100124C40060AC8C +S3154001AE0080A0A00012800078841020012310012424 +S3154001AE10C42060AC92102000A01461B8941023A401 +S3154001AE20400002379010001084102000821030003C +S3154001AE308728A00288040003C600400080A0E000E5 +S3154001AE400280000480A070E0C22120048400A00199 +S3154001AE5032BFFFF882006020C42461B8DA0420487A +S3154001AE6082103800840360128528A00286040002FD +S3154001AE70C400400080A0A0000280000480A078E0C9 +S3154001AE80C220E0049A03600112BFFFF782006020EE +S3154001AE9080A360000480003FDA2420482500003F5B +S3154001AEA08404204CA414A3F09E102000821020009C +S3154001AEB010800005230003FC80A340010480003577 +S3154001AEC08400A004C6008000C800C000D600E0107F +S3154001AED08731201880A0E00132BFFFF8820060016F +S3154001AEE08931200C88092FFF80A1200632BFFFF34C +S3154001AEF082006001D804209080A3203F3480000264 +S3154001AF00861020008088E0FF2280001E82006001BA +S3154001AF10A60AC01288102000A72CE010A60AC0136A +S3154001AF208614C011D600C00080A2E0000280001144 +S3154001AF3088012001D60420909002E0249202E06428 +S3154001AF409402E0A4912A2002932A60029004000808 +S3154001AF5092040009952AA0029404000A9602E0018F +S3154001AF60C6222004E6226004DE22A004D6242090D4 +S3154001AF7080A1200F0480001E9803200182006001F9 +S3154001AF809E03E00180A3400114BFFFCF8400A004CB +S3154001AF90901020019210200D941020007FFFFF6831 +S3154001AFA02110012380A2200032800002D024202CCF +S3154001AFB09010200192102011151001247FFFFF608F +S3154001AFC09412A0A880A2200002800003031001244D +S3154001AFD0D02060A4C204202C80A0600032800002F0 +S3154001AFE0C020604081C7E00881E8000080A3203F7F +S3154001AFF034BFFFE48200600110BFFFCB8600E0084A +S3154001B0009DE3BFA003100124C20060B08410001864 +S3154001B01080A0600002800006B0102000901000025F +S3154001B0209FC0400092100019B010000881C7E00887 +S3154001B03081E800009DE3BFA003100124C20060B473 +S3154001B04080A0600002800005841020009FC040005F +S3154001B050901000188410000881C7E00891E80002AA +S3154001B0609DE3BFA003100124C20060BC80A0600024 +S3154001B07002800005841020009FC0400090100018F7 +S3154001B0808410000881C7E00891E800029DE3BFA053 +S3154001B09003100124C20060B880A060000280000550 +S3154001B0A0841020009FC040009010001884100008B2 +S3154001B0B081C7E00891E800029DE3BFA00310012487 +S3154001B0C0C20060C080A0600002800005841020009C +S3154001B0D09FC04000901000188410000881C7E00806 +S3154001B0E091E800029DE3BFA003100124C20060C4A1 +S3154001B0F080A0600002800005841020009FC04000AF +S3154001B100901000188410000881C7E00891E80002F9 +S3154001B1109DE3BFA003100124C20060C880A0600067 +S3154001B12002800005841020009FC040009010001846 +S3154001B1308410000881C7E00891E800029DE3BFA0A2 +S3154001B14003100124C20060CC8410001880A0600066 +S3154001B15002800006B0102000901000029FC04000FF +S3154001B16092100019B010000881C7E00881E800007C +S3154001B170010000000310006C821062289FC040004D +S3154001B1800100000003100000821060008198400019 +S3154001B1900310006C821062909FC0400001000000C5 +S3154001B1A00310006C821062189FC04000010000002D +S3154001B1B08B4440008B31601C80A140001280000608 +S3154001B1C0010000007FFFFE96010000007FFF99B25B +S3154001B1D0010000009C23A0407FFF978A01000000E8 +S3154001B1E08210200191D020000100000029000004B6 +S3154001B1F0A68C001432800003A02C001491D02000AC +S3154001B200818C0000010000000100000001000000E7 +S3154001B21081C4800081CCA00481C3E0080100000004 +S3154001B22081C1E00801000000A74800008B34E01806 +S3154001B2308A09600380A160031280000801000000B2 +S3154001B24021100123A0142044A2102003E22400006F +S3154001B2508B444000108000018A09601F271001239A +S3154001B260A614E03CCA24C0008A01600127100123CC +S3154001B270A614E038CA24C00027100123A614E040D2 +S3154001B2808A216002CA24C00081C3E008010000008F +S3154001B29081C3E00801000000834800008330601844 +S3154001B2A08208600380A0600312800006010000004E +S3154001B2B0834440000500000882284002A3804000E4 +S3154001B2C0881000000910006C81C121740100000042 +S3154001B2D09DE3BFA02110007023100070A014203000 +S3154001B2E0A214603080A400111A80000B01000000F6 +S3154001B2F0D004000080A2200002800004A0042004A3 +S3154001B3009FC200000100000080A400112ABFFFFA7D +S3154001B310D004000081C7E00881E80000AA27A0B058 +S3154001B320E0256060E2256064E4256068C2256074BA +S3154001B330C43D6078C83D6080CC3D60888540000052 +S3154001B340C425606CF03D6090F43D6098F83D60A086 +S3154001B350FC3D60A8A8102001A92D0010808D001386 +S3154001B36002800013010000008534E001071001232B +S3154001B370C600E03CA72CC0038414C0028408A0FF89 +S3154001B38081E000008190A000E03BA000E43BA008E2 +S3154001B390E83BA010EC3BA018F03BA020F43BA028D2 +S3154001B3A0F83BA030FC3BA03881E8000081C5A008ED +S3154001B3B09C100015051001248410A0A0C400800033 +S3154001B3C080A0800002800004010000009FC0800030 +S3154001B3D09203A060818C20008210200283284010B5 +S3154001B3E005100123C400A038853040028210400276 +S3154001B3F08550000080888001028000208328A001BA +S3154001B40007100123C600E03C8530800382104002CC +S3154001B410820860FF81906000C203A06C8180600059 +S3154001B420F01BA090F41BA098F81BA0A0FC1BA0A8A1 +S3154001B430C203A074C41BA078C81BA080CC1BA088E3 +S3154001B440E003A060E203A064E403A06881E8000091 +S3154001B450E01BA000E41BA008E81BA010EC1BA018F1 +S3154001B460F01BA020F41BA028F81BA030FC1BA03821 +S3154001B4701080000F81E00000C203A06C8180600053 +S3154001B480F01BA090F41BA098F81BA0A0FC1BA0A841 +S3154001B490C203A074C41BA078C81BA080CC1BA08883 +S3154001B4A0E003A060E203A064E403A068818C20006D +S3154001B4B001000000010000000100000081C44000BD +S3154001B4C081CC8000AA27A0B0C2256074C43D6078B3 +S3154001B4D0C83D6080CC3D608885400000C425606CD5 +S3154001B4E0A8102001A92D0010808D001302800013A1 +S3154001B4F0010000008534E00107100123C600E03C4D +S3154001B500A72CC0038414C0028408A0FF81E0000078 +S3154001B5108190A000E03BA000E43BA008E83BA010DE +S3154001B520EC3BA018F03BA020F43BA028F83BA03010 +S3154001B530FC3BA03881E8000081C5A0089C1000159D +S3154001B540051001248410A0A0C400800080A08000C2 +S3154001B55002800004010000009FC080009203A060A9 +S3154001B560818C20008210200283284010051001237F +S3154001B570C400A03885304002821040028550000048 +S3154001B58080888001028000198328A00107100123C9 +S3154001B590C600E03C8530800382104002820860FF8D +S3154001B5A081906000C203A06C81806000C203A074D8 +S3154001B5B0C41BA078C81BA080CC1BA08881E80000D2 +S3154001B5C0E01BA000E41BA008E81BA010EC1BA01880 +S3154001B5D0F01BA020F41BA028F81BA030FC1BA038B0 +S3154001B5E01080000881E00000C203A06C81806000E9 +S3154001B5F0C203A074C41BA078C81BA080CC1BA08822 +S3154001B600818C2000010000000100000001000000C3 +S3154001B61081C4400081CC8000821000089A10380015 +S3154001B62096102000912AE00598034008D40340086B +S3154001B6309132A01880A20001328000089602E001F2 +S3154001B6409132A00C900A2FFF80A2000902800007C8 +S3154001B6509410000C9602E00180A2E00728BFFFF398 +S3154001B660912AE0059410200081C3E0089010000A59 +S3154001B6708210000898102000912B20039A00400860 +S3154001B680D60040089132E01880A2000932800008B5 +S3154001B690980320019132E00C900A2FFF80A2000A04 +S3154001B6A0028000079610000D9803200180A3200F09 +S3154001B6B028BFFFF3912B20039610200081C3E00899 +S3154001B6C09010000BD4022004173FFC00920A400B55 +S3154001B6D0900A800B9132200C921240081100003FD3 +S3154001B6E0901223F0940A8008952AA0049412800BA4 +S3154001B6F0920A400A81C3E008901000099DE3BFA069 +S3154001B700860E60FF80A6A0030880002A84100018D8 +S3154001B710808E20033280002A821020008328E00890 +S3154001B7208210400380A6A00F852860109A10001849 +S3154001B730841080018810001A0880001182100018B8 +S3154001B740C4204000C4206004C4206008C420600CAA +S3154001B75088013FF080A1200F18BFFFFA82006010D8 +S3154001B7608206BFF0B408600F9A087FF080A6A00356 +S3154001B7709A0360100880000E9A06000D8210200080 +S3154001B780C4234001820060048826800180A12003F1 +S3154001B79038BFFFFDC42340018206BFFCB4086003E5 +S3154001B7A082087FFC820060049A0340018410000DE8 +S3154001B7B080A6A0000280000782102000C6288001D2 +S3154001B7C08200600180A0401A32BFFFFEC628800178 +S3154001B7D081C7E00881E800009DE3BFA02110007009 +S3154001B7E0A0142018C2043FFC80A07FFF02800008FD +S3154001B7F0A0043FFC9FC04000A0043FFCC2040000DF +S3154001B80080A07FFF12BFFFFC0100000081C7E00856 +S3154001B81081E800009DE3BFA081C7E00881E8000000 +S3154001B8200000001000000000017A5200047C0F0164 +S3154001B8301B0C0E000000001000000018FFFE595CB2 +S3154001B8400000007000000000000000180000002CFD +S3154001B850FFFE59B8000000B400410D1E2D4A090FE4 +S3154001B8601F0000000000001800000048FFFE5A506B +S3154001B870000000D800410D1E2D6C090F1F0000006D +S3154001B8800000001800000064FFFE5B0C0000047815 +S3154001B89000410D1E2D4D090F1F000000000000182C +S3154001B8A000000080FFFE5F680000008800410D1E19 +S3154001B8B02D5B090F1F000000000000180000009CCE +S3154001B8C0FFFE5FD40000009000410D1E2D43090F7D +S3154001B8D01F00000000000014000000B8FFFE604891 +S3154001B8E00000002000410D1E2D090F1F0000001011 +S3154001B8F0000000D0FFFE60500000001C0000000068 +S3154001B90000000010000000E4FFFE60580000001C2B +S3154001B9100000000000000010000000F8FFFE60601B +S3154001B9200000001C00000000000000100000010C97 +S3154001B930FFFE60680000001C0000000000000014CB +S3154001B94000000120FFFE60700000002C00410D1E2A +S3154001B9502D090F1F0000001800000138FFFE60D0BE +S3154001B9600000004000410D1E2D46090F1F0000003A +S3154001B9700000001800000154FFFE60F4000002249C +S3154001B98000410D1E2D46090F1F0000000000001842 +S3154001B99000000170FFFE62FC0000023400410D1EF2 +S3154001B9A02D47090F1F000000000000180000018C00 +S3154001B9B0FFFE65140000003C00410D1E2D43090F9A +S3154001B9C01F00000000000018000001A8FFFE6534BA +S3154001B9D00000003C00410D1E2D43090F1F000000D1 +S3154001B9E000000014000001C4FFFF46180000039444 +S3154001B9F000410D1E2D090F1F00000010000001DC43 +S3154001BA00FFFF49940000002C0000000000000010D8 +S3154001BA10000001F0FFFF49AC0000002400000000D7 +S3154001BA200000001000000204FFFF49BC000000189E +S3154001BA30000000000000001800000218FFFF49C086 +S3154001BA400000017C00410D1E2D42090F1F00000020 +S3154001BA500000001800000234FFFF4B200000058063 +S3154001BA6000410D1E2D46090F1F0000000000001861 +S3154001BA7000000250FFFF50840000051800410D1ED2 +S3154001BA802D43090F1F000000000000140000026C46 +S3154001BA90FFFF55800000010C00410D1E2D090F1FAF +S3154001BAA00000001000000284FFFF567400000018D9 +S3154001BAB0000000000000001400000298FFFF5678C5 +S3154001BAC00000020800410D1E2D090F1F0000001441 +S3154001BAD0000002B0FFFF66FC0000461800410D1E43 +S3154001BAE02D090F1F00000010000002C8FFFFACFC2B +S3154001BAF00000000C0000000000000010000002DC05 +S3154001BB00FFFFACF40000001400000000000000102C +S3154001BB10000002F0FFFFACF400000020000000002E +S3154001BB200000001400000304FFFFAD000000077091 +S3154001BB3000410D1E2D090F1F000000100000031CBF +S3154001BB40FFFFBD880000000C00000000000000104F +S3154001BB5000000330FFFFBD8000000024000000000C +S3154001BB600000001000000344FFFFBD9000000038B4 +S3154001BB70000000000000001000000358FFFFBDB4A4 +S3154001BB800000003800000000000000180000036CAF +S3154001BB90FFFFBDD80000009C00410D1E2D56090F28 +S3154001BBA01F0000000000001800000388FFFFBE5878 +S3154001BBB00000003C00410D1E2D4A090F1F000000E8 +S3154001BBC000000018000003A4FFFFBE780000003CFF +S3154001BBD000410D1E2D4A090F1F00000000000010F4 +S3154001BBE0000003C0FFFFBE980000003800000000BF +S3154001BBF000000018000003D4FFFFBEBC0000003C5B +S3154001BC0000410D1E2D4A090F1F00000000000018BB +S3154001BC10000003F0FFFFBEDC0000003C00410D1EAA +S3154001BC202D4A090F1F000000000000100000040CFF +S3154001BC30FFFFBEFC000000380000000000000018B5 +S3154001BC4000000420FFFFBF2000000EB000430D1E80 +S3154001BC502D4C090F1F000000000000140000043C99 +S3154001BC60FFFFCDB40000002800410D1E2D090F1F16 +S3154001BC700000001400000454FFFFCDC4000003304F +S3154001BC8000410D1E2D090F1F000000140000046C19 +S3154001BC90FFFFD0DC000002B800430D1E2D090F1F27 +S3154001BCA00000001000000484FFFFD6840000000C51 +S3154001BCB0000000000000001000000498FFFFD67C41 +S3154001BCC0000000140000000000000014000004AC55 +S3154001BCD0FFFFD67C0000007C00410D1E2D090F1F81 +S3154001BCE000000010000004C4FFFFDA7800000020C5 +S3154001BCF00000000000000018000004D8FFFFDA84AD +S3154001BD00000000FC00410D1E2D54090F1F000000CC +S3154001BD1000000018000004F4FFFFDB640000012C62 +S3154001BD2000410D1E2D41090F1F00000000000010AB +S3154001BD3000000510FFFFDC740000001C000000003D +S3154001BD400000001000000524FFFFDC7C0000001C01 +S3154001BD50000000000000001800000538FFFFDC84E9 +S3154001BD60000006D800410D1E2D4C090F1F00000092 +S3154001BD700000001000000554FFFFE34000000018DA +S3154001BD80000000000000001000000568FFFFE344CA +S3154001BD900000001800000000000000180000057CAB +S3154001BDA0FFFFE3480000004000410D1E2D42090FF0 +S3154001BDB01F0000000000001400000598FFFFE36C1F +S3154001BDC0000000EC00410D1E2D090F1F0000001858 +S3154001BDD0000005B0FFFFE4400000029C00410D1E3B +S3154001BDE02D43090F1F00000000000018000005CC7C +S3154001BDF0FFFFE6C00000008C00410D1E2D4F090FCC +S3154001BE001F00000000000018000005E8FFFFE730B2 +S3154001BE100000002800410D1E2D44090F1F0000009F +S3154001BE200000001800000604FFFFE73C0000010483 +S3154001BE3000410D1E2D45090F1F0000000000001096 +S3154001BE4000000620FFFFE8240000003C000000003F +S3154001BE500000001800000634FFFFEC0000000088D7 +S3154001BE6000410D1E2D52090F1F0000000000001059 +S3154001BE7000000650FFFFEC6C0000001C00000000B3 +S3154001BE800000001800000664FFFFEC74000001206A +S3154001BE9000410D1E2D58090F1F0000000000001023 +S3154001BEA000000680FFFFEE88000000100000000041 +S3154001BEB00000001800000694FFFFEE84000000B861 +S3154001BEC000410D1E2D48090F1F00000000000018FB +S3154001BED0000006B0FFFFEF200000020C00410D1EDE +S3154001BEE02D4A090F1F00000000000018000006CC73 +S3154001BEF0FFFFF1100000003400410D1E2D47090FD0 +S3154001BF001F00000000000018000006E8FFFFF128AE +S3154001BF100000002C00410D1E2D45090F1F00000099 +S3154001BF200000001800000704FFFFF1380000002C54 +S3154001BF3000410D1E2D45090F1F000000000000188D +S3154001BF4000000720FFFFF1480000002C00410D1EB4 +S3154001BF502D45090F1F000000000000180000073C96 +S3154001BF60FFFFF1580000002C00410D1E2D45090F21 +S3154001BF701F0000000000001800000758FFFFF1688D +S3154001BF800000002C00410D1E2D45090F1F00000029 +S3154001BF900000001800000774FFFFF1780000002C34 +S3154001BFA000410D1E2D45090F1F000000000000181D +S3154001BFB000000790FFFFF1880000003400410D1E8C +S3154001BFC02D47090F1F00000000000018000007ACB4 +S3154001BFD0FFFFF3000000004C00410D1E2D47090FE5 +S3154001BFE01F00000000000018000007C8FFFFF710FF +S3154001BFF0000000DC00410D1E2D76090F1F000000D8 +S3154001C00000000000000000000000000000000000E9 +S3154001C01000000002FFFFFFFF0000000000000000DB +S3154001C02000000002FFFFFFFF0000000000000000CB +S3154001C030343074693934612B3079676979753035B3 +S3154001C0407968617035796934682B612B69697978CA +S3154001C0506869346B35396A30713930356A6B6F7955 +S3154001C06070686F70746A72686961346979302B34AB +S3154001C0700000000000000000400800000000000031 +S3154001C0803CD203AF9EE756163E7AD7F29ABCAF48EA +S3154001C0904004822800000000430000000000000028 +S3154001C0A09DE3BFA07FFF9421010000007FFFFDCBF0 +S3154001C0B00100000081C7E00881E800009DE3BFA0C0 +S3154001C0C07FFF93EF0100000081C7E00881E800008F +S3154001C0D00000000000000000000000000000000019 +S3154001C0E00000000000000000000000000000000009 +S3154001C0F000000000000000000000000000000000F9 +S3154001C10000000000000000000000000000000000E8 +S3154001C11000000000000000000000000000000000D8 +S3154001C12000000000000000000000000000000000C8 +S3154001C13000000000000000000000000000000000B8 +S3154001C14000000000000000000000000000000000A8 +S3154001C1500000000000000000000000000000000098 +S3154001C1600000000000000000000000000000000088 +S3154001C1700000000000000000000000000000000078 +S3154001C1800000000000000000000000000000000068 +S3154001C1900000000000000000000000000000000058 +S3154001C1A00000000000000000000000000000000048 +S3154001C1B00000000000000000000000000000000038 +S3154001C1C00000000000000000000000000000000028 +S3154001C1D00000000000000000000000000000000018 +S3154001C1E00000000000000000000000000000000008 +S3154001C1F000000000000000000000000000000000F8 +S3154001C20000000000000000000000000000000000E7 +S3154001C21000000000000000000000000000000000D7 +S3154001C22000000000000000000000000000000000C7 +S3154001C23000000000000000000000000000000000B7 +S3154001C24000000000000000000000000000000000A7 +S3154001C2500000000000000000000000000000000097 +S3154001C2600000000000000000000000000000000087 +S3154001C2700000000000000000000000000000000077 +S3154001C2800000000000000000000000000000000067 +S3154001C2900000000000000000000000000000000057 +S3154001C2A00000000000000000000000000000000047 +S3154001C2B00000000000000000000000000000000037 +S3154001C2C00000000000000000000000000000000027 +S3154001C2D00000000000000000000000000000000017 +S3154001C2E00000000000000000000000000000000007 +S3154001C2F000000000000000000000000000000000F7 +S3154001C30000000000000000000000000000000000E6 +S3154001C31000000000000000000000000000000000D6 +S3154001C32000000000000000000000000000000000C6 +S3154001C33000000000000000000000000000000000B6 +S3154001C34000000000000000000000000000000000A6 +S3154001C3500000000000000000000000000000000096 +S3154001C3600000000000000000000000000000000086 +S3154001C3700000000000000000000000000000000076 +S3154001C3800000000000000000000000000000000066 +S3154001C3900000000000000000000000000000000056 +S3154001C3A00000000000000000000000000000000046 +S3154001C3B00000000000000000000000000000000036 +S3154001C3C00000000000000000000000000000000026 +S3154001C3D00000000000000000000000000000000016 +S3154001C3E00000000000000000000000000000000006 +S3154001C3F000000000000000000000000000000000F6 +S3154001C40000000000000000000000000000000000E5 +S3154001C41000000000000000000000000000000000D5 +S3154001C42000000000000000000000000000000000C5 +S3154001C43000000000000000000000000000000000B5 +S3154001C44000000000000000000000000000000000A5 +S3154001C4500000000000000000000000000000000095 +S3154001C4600000000000000000000000000000000085 +S3154001C4700000000000000000000000000000000075 +S3154001C4800000000000000000000000000000000065 +S3154001C4900000000000000000000000000000000055 +S3154001C4A00000000000000000000000000000000045 +S3154001C4B00000000000000000000000000000000035 +S3154001C4C00000000000000000000000000000000025 +S3154001C4D00000000000000000000000000000000015 +S3154001C4E00000000000000000000000000000000005 +S3154001C4F000000000000000000000000000000000F5 +S3154001C50000000000000000000000000000000000E4 +S3154001C51000000000000000000000000000000000D4 +S3154001C52000000000000000000000000000000000C4 +S3154001C53000000000000000000000000000000000B4 +S3154001C54000000000000000000000000000000000A4 +S3154001C5500000000000000000000000000000000094 +S3154001C5600000000000000000000000000000000084 +S3154001C5700000000000000000000000000000000074 +S3154001C5800000000000000000000000000000000064 +S3154001C5900000000000000000000000000000000054 +S3154001C5A00000000000000000000000000000000044 +S3154001C5B00000000000000000000000000000000034 +S3154001C5C00000000000000000000000000000000024 +S3154001C5D00000000000000000000000000000000014 +S3154001C5E00000000000000000000000000000000004 +S3154001C5F000000000000000000000000000000000F4 +S3154001C60000000000000000000000000000000000E3 +S3154001C61000000000000000000000000000000000D3 +S3154001C62000000000000000000000000000000000C3 +S3154001C63000000000000000000000000000000000B3 +S3154001C64000000000000000000000000000000000A3 +S3154001C6500000000000000000000000000000000093 +S3154001C6600000000000000000000000000000000083 +S3154001C6700000000000000000000000000000000073 +S3154001C6800000000000000000000000000000000063 +S3154001C6900000000000000000000000000000000053 +S3154001C6A00000000000000000000000000000000043 +S3154001C6B00000000000000000000000000000000033 +S3154001C6C00000000000000000000000000000000023 +S3154001C6D00000000000000000000000000000000013 +S3154001C6E00000000000000000000000000000000003 +S3154001C6F000000000000000000000000000000000F3 +S3154001C70000000000000000000000000000000000E2 +S3154001C71000000000000000000000000000000000D2 +S3154001C72000000000000000000000000000000000C2 +S3154001C73000000000000000000000000000000000B2 +S3154001C74000000000000000000000000000000000A2 +S3154001C7500000000000000000000000000000000092 +S3154001C7600000000000000000000000000000000082 +S3154001C7700000000000000000000000000000000072 +S3154001C7800000000000000000000000000000000062 +S3154001C7900000000000000000000000000000000052 +S3154001C7A00000000000000000000000000000000042 +S3154001C7B00000000000000000000000000000000032 +S3154001C7C00000000000000000000000000000000022 +S3154001C7D00000000000000000000000000000000012 +S3154001C7E00000000000000000000000000000000002 +S3154001C7F000000000000000000000000000000000F2 +S3154001C80000000000000000000000000000000000E1 +S3154001C81000000000000000000000000000000000D1 +S3154001C82000000000000000000000000000000000C1 +S3154001C83000000000000000000000000000000000B1 +S3154001C84000000000000000000000000000000000A1 +S3154001C8500000000000000000000000000000000091 +S3154001C8600000000000000000000000000000000081 +S3154001C8700000000000000000000000000000000071 +S3154001C8800000000000000000000000000000000061 +S3154001C8900000000000000000000000000000000051 +S3154001C8A00000000000000000000000000000000041 +S3154001C8B00000000000000000000000000000000031 +S3154001C8C00000000000000000000000000000000021 +S3154001C8D00000000000000000000000000000000011 +S3154001C8E00000000000000000000000000000000001 +S3154001C8F000000000000000000000000000000000F1 +S3154001C90000000000000000000000000000000000E0 +S3154001C91000000000000000000000000000000000D0 +S3154001C92000000000000000000000000000000000C0 +S3154001C93000000000000000000000000000000000B0 +S3154001C94000000000000000000000000000000000A0 +S3154001C9500000000000000000000000000000000090 +S3154001C9600000000000000000000000000000000080 +S3154001C9700000000000000000000000000000000070 +S3154001C9800000000000000000000000000000000060 +S3154001C9900000000000000000000000000000000050 +S3154001C9A00000000000000000000000000000000040 +S3154001C9B00000000000000000000000000000000030 +S3154001C9C00000000000000000000000000000000020 +S3154001C9D00000000000000000000000000000000010 +S3154001C9E00000000000000000000000000000000000 +S3154001C9F000000000000000000000000000000000F0 +S3154001CA0000000000000000000000000000000000DF +S3154001CA1000000000000000000000000000000000CF +S3154001CA2000000000000000000000000000000000BF +S3154001CA3000000000000000000000000000000000AF +S3154001CA40000000000000000000000000000000009F +S3154001CA50000000000000000000000000000000008F +S3154001CA60000000000000000000000000000000007F +S3154001CA70000000000000000000000000000000006F +S3154001CA80000000000000000000000000000000005F +S3154001CA90000000000000000000000000000000004F +S3154001CAA0000000000000000000000000000000003F +S3154001CAB0000000000000000000000000000000002F +S3154001CAC0000000000000000000000000000000001F +S3154001CAD0000000000000000000000000000000000F +S3154001CAE000000000000000000000000000000000FF +S3154001CAF000000000000000000000000000000000EF +S3154001CB0000000000000000000000000000000000DE +S3154001CB1000000000000000000000000000000000CE +S3154001CB2000000000000000000000000000000000BE +S3154001CB3000000000000000000000000000000000AE +S3154001CB40000000000000000000000000000000009E +S3154001CB50000000000000000000000000000000008E +S3154001CB60000000000000000000000000000000007E +S3154001CB70000000000000000000000000000000006E +S3154001CB80000000000000000000000000000000005E +S3154001CB90000000000000000000000000000000004E +S3154001CBA0000000000000000000000000000000003E +S3154001CBB0000000000000000000000000000000002E +S3154001CBC0000000000000000000000000000000001E +S3154001CBD0000000000000000000000000000000000E +S3154001CBE000000000000000000000000000000000FE +S3154001CBF000000000000000000000000000000000EE +S3154001CC0000000000000000000000000000000000DD +S3154001CC1000000000000000000000000000000000CD +S3154001CC2000000000000000000000000000000000BD +S3154001CC3000000000000000000000000000000000AD +S3154001CC40000000000000000000000000000000009D +S3154001CC50000000000000000000000000000000008D +S3154001CC60000000000000000000000000000000007D +S3154001CC70000000000000000000000000000000006D +S3154001CC80000000000000000000000000000000005D +S3154001CC90000000000000000000000000000000004D +S3154001CCA0000000000000000000000000000000003D +S3154001CCB0000000000000000000000000000000002D +S3154001CCC0000000000000000000000000000000001D +S3154001CCD0000000000000000000000000000000000D +S3154001CCE000000000000000000000000000000000FD +S3154001CCF000000000000000000000000000000000ED +S3154001CD0000000000000000000000000000000000DC +S3154001CD1000000000000000000000000000000000CC +S3154001CD2000000000000000000000000000000000BC +S3154001CD3000000000000000000000000000000000AC +S3154001CD40000000000000000000000000000000009C +S3154001CD50000000000000000000000000000000008C +S3154001CD60000000000000000000000000000000007C +S3154001CD70000000000000000000000000000000006C +S3154001CD80000000000000000000000000000000005C +S3154001CD90000000000000000000000000000000004C +S3154001CDA0000000000000000000000000000000003C +S3154001CDB0000000000000000000000000000000002C +S3154001CDC0000000000000000000000000000000001C +S3154001CDD0000000000000000000000000000000000C +S3154001CDE000000000000000000000000000000000FC +S3154001CDF000000000000000000000000000000000EC +S3154001CE0000000000000000000000000000000000DB +S3154001CE1000000000000000000000000000000000CB +S3154001CE2000000000000000000000000000000000BB +S3154001CE3000000000000000000000000000000000AB +S3154001CE40000000000000000000000000000000009B +S3154001CE50000000000000000000000000000000008B +S3154001CE60000000000000000000000000000000007B +S3154001CE70000000000000000000000000000000006B +S3154001CE80000000000000000000000000000000005B +S3154001CE90000000000000000000000000000000004B +S3154001CEA0000000000000000000000000000000003B +S3154001CEB0000000000000000000000000000000002B +S3154001CEC0000000000000000000000000000000001B +S3154001CED0000000000000000000000000000000000B +S3154001CEE000000000000000000000000000000000FB +S3154001CEF000000000000000000000000000000000EB +S3154001CF0000000000000000000000000000000000DA +S3154001CF1000000000000000000000000000000000CA +S3154001CF2000000000000000000000000000000000BA +S3154001CF3000000000000000000000000000000000AA +S3154001CF40000000000000000000000000000000009A +S3154001CF50000000000000000000000000000000008A +S3154001CF60000000000000000000000000000000007A +S3154001CF70000000000000000000000000000000006A +S3154001CF80000000000000000000000000000000005A +S3154001CF90000000000000000000000000000000004A +S3154001CFA0000000000000000000000000000000003A +S3154001CFB0000000000000000000000000000000002A +S3154001CFC0000000000000000000000000000000001A +S3154001CFD0000000000000000000000000000000000A +S3154001CFE000000000000000000000000000000000FA +S3154001CFF000000000000000000000000000000000EA +S3154001D00000000000000000000000000000000000D9 +S3154001D01000000000000000000000000000000000C9 +S3154001D02000000000000000000000000000000000B9 +S3154001D03000000000000000000000000000000000A9 +S3154001D0400000000000000000000000000000000099 +S3154001D0500000000000000000000000000000000089 +S3154001D0600000000000000000000000000000000079 +S3154001D0700000000000000000000000000000000069 +S3154001D0800000000000000000000000000000000059 +S3154001D0900000000000000000000000000000000049 +S3154001D0A00000000000000000000000000000000039 +S3154001D0B00000000000000000000000000000000029 +S3154001D0C00000000000000000000000000000000019 +S3154001D0D00000000000000000000000000000000009 +S3154001D0E000000000000000000000000000000000F9 +S3154001D0F000000000000000000000000000000000E9 +S3154001D10000000000000000000000000000000000D8 +S3154001D11000000000000000000000000000000000C8 +S3154001D12000000000000000000000000000000000B8 +S3154001D13000000000000000000000000000000000A8 +S3154001D1400000000000000000000000000000000098 +S3154001D1500000000000000000000000000000000088 +S3154001D1600000000000000000000000000000000078 +S3154001D1700000000000000000000000000000000068 +S3154001D1800000000000000000000000000000000058 +S3154001D1900000000000000000000000000000000048 +S3154001D1A00000000000000000000000000000000038 +S3154001D1B00000000000000000000000000000000028 +S3154001D1C00000000000000000000000000000000018 +S3154001D1D00000000000000000000000000000000008 +S3154001D1E000000000000000000000000000000000F8 +S3154001D1F000000000000000000000000000000000E8 +S3154001D20000000000000000000000000000000000D7 +S3154001D21000000000000000000000000000000000C7 +S3154001D22000000000000000000000000000000000B7 +S3154001D23000000000000000000000000000000000A7 +S3154001D2400000000000000000000000000000000097 +S3154001D2500000000000000000000000000000000087 +S3154001D2600000000000000000000000000000000077 +S3154001D2700000000000000000000000000000000067 +S3154001D2800000000000000000000000000000000057 +S3154001D2900000000000000000000000000000000047 +S3154001D2A00000000000000000000000000000000037 +S3154001D2B00000000000000000000000000000000027 +S3154001D2C00000000000000000000000000000000017 +S3154001D2D00000000000000000000000000000000007 +S3154001D2E000000000000000000000000000000000F7 +S3154001D2F000000000000000000000000000000000E7 +S3154001D30000000000000000000000000000000000D6 +S3154001D31000000000000000000000000000000000C6 +S3154001D32000000000000000000000000000000000B6 +S3154001D33000000000000000000000000000000000A6 +S3154001D3400000000000000000000000000000000096 +S3154001D3500000000000000000000000000000000086 +S3154001D3600000000000000000000000000000000076 +S3154001D3700000000000000000000000000000000066 +S3154001D3800000000000000000000000000000000056 +S3154001D3900000000000000000000000000000000046 +S3154001D3A00000000000000000000000000000000036 +S3154001D3B00000000000000000000000000000000026 +S3154001D3C00000000000000000000000000000000016 +S3154001D3D00000000000000000000000000000000006 +S3154001D3E000000000000000000000000000000000F6 +S3154001D3F000000000000000000000000000000000E6 +S3154001D40000000000000000000000000000000000D5 +S3154001D41000000000000000000000000000000000C5 +S3154001D42000000000000000000000000000000000B5 +S3154001D43000000000000000000000000000000000A5 +S3154001D4400000000000000000000000000000000095 +S3154001D4500000000000000000000000000000000085 +S3154001D4600000000000000000000000000000000075 +S3154001D4700000000000000000000000000000000065 +S3154001D4800000000000000000000000000000000055 +S3154001D4900000000000000000000000000000000045 +S3154001D4A00000000000000000000000000000000035 +S3154001D4B00000000000000000000000000000000025 +S3154001D4C00000000000000000000000000000000015 +S3154001D4D00000000000000000000000000000000005 +S3154001D4E000000000000000000000000000000000F5 +S3154001D4F000000000000000000000000000000000E5 +S3154001D50000000000000000000000000000000000D4 +S3154001D51000000000000000000000000000000000C4 +S3154001D52000000000000000000000000000000000B4 +S3154001D53000000000000000000000000000000000A4 +S3154001D5400000000000000000000000000000000094 +S3154001D5500000000000000000000000000000000084 +S3154001D5600000000000000000000000000000000074 +S3154001D5700000000000000000000000000000000064 +S3154001D5800000000000000000000000000000000054 +S3154001D5900000000000000000000000000000000044 +S3154001D5A00000000000000000000000000000000034 +S3154001D5B00000000000000000000000000000000024 +S3154001D5C00000000000000000000000000000000014 +S3154001D5D00000000000000000000000000000000004 +S3154001D5E000000000000000000000000000000000F4 +S3154001D5F000000000000000000000000000000000E4 +S3154001D60000000000000000000000000000000000D3 +S3154001D61000000000000000000000000000000000C3 +S3154001D62000000000000000000000000000000000B3 +S3154001D63000000000000000000000000000000000A3 +S3154001D6400000000000000000000000000000000093 +S3154001D6500000000000000000000000000000000083 +S3154001D6600000000000000000000000000000000073 +S3154001D6700000000000000000000000000000000063 +S3154001D6800000000000000000000000000000000053 +S3154001D6900000000000000000000000000000000043 +S3154001D6A00000000000000000000000000000000033 +S3154001D6B00000000000000000000000000000000023 +S3154001D6C00000000000000000000000000000000013 +S3154001D6D00000000000000000000000000000000003 +S3154001D6E000000000000000000000000000000000F3 +S3154001D6F000000000000000000000000000000000E3 +S3154001D70000000000000000000000000000000000D2 +S3154001D71000000000000000000000000000000000C2 +S3154001D72000000000000000000000000000000000B2 +S3154001D73000000000000000000000000000000000A2 +S3154001D7400000000000000000000000000000000092 +S3154001D7500000000000000000000000000000000082 +S3154001D7600000000000000000000000000000000072 +S3154001D7700000000000000000000000000000000062 +S3154001D7800000000000000000000000000000000052 +S3154001D7900000000000000000000000000000000042 +S3154001D7A00000000000000000000000000000000032 +S3154001D7B00000000000000000000000000000000022 +S3154001D7C00000000000000000000000000000000012 +S3154001D7D00000000000000000000000000000000002 +S3154001D7E000000000000000000000000000000000F2 +S3154001D7F000000000000000000000000000000000E2 +S3154001D80000000000000000000000000000000000D1 +S3154001D81000000000000000000000000000000000C1 +S3154001D82000000000000000000000000000000000B1 +S3154001D83000000000000000000000000000000000A1 +S3154001D8400000000000000000000000000000000091 +S3154001D8500000000000000000000000000000000081 +S3154001D8600000000000000000000000000000000071 +S3154001D8700000000000000000000000000000000061 +S3154001D8800000000000000000000000000000000051 +S3154001D8900000000000000000000000000000000041 +S3154001D8A00000000000000000000000000000000031 +S3154001D8B00000000000000000000000000000000021 +S3154001D8C00000000000000000000000000000000011 +S3154001D8D00000000000000000000000000000000001 +S3154001D8E000000000000000000000000000000000F1 +S3154001D8F000000000000000000000000000000000E1 +S3154001D90000000000000000000000000000000000D0 +S3154001D91000000000000000000000000000000000C0 +S3154001D92000000000000000000000000000000000B0 +S3154001D93000000000000000000000000000000000A0 +S3154001D9400000000000000000000000000000000090 +S3154001D9500000000000000000000000000000000080 +S3154001D9600000000000000000000000000000000070 +S3154001D9700000000000000000000000000000000060 +S3154001D9800000000000000000000000000000000050 +S3154001D9900000000000000000000000000000000040 +S3154001D9A00000000000000000000000000000000030 +S3154001D9B00000000000000000000000000000000020 +S3154001D9C00000000000000000000000000000000010 +S3154001D9D00000000000000000000000000000000000 +S3154001D9E000000000000000000000000000000000F0 +S3154001D9F000000000000000000000000000000000E0 +S3154001DA0000000000000000000000000000000000CF +S3154001DA1000000000000000000000000000000000BF +S3154001DA2000000000000000000000000000000000AF +S3154001DA30000000000000000000000000000000009F +S3154001DA40000000000000000000000000000000008F +S3154001DA50000000000000000000000000000000007F +S3154001DA60000000000000000000000000000000006F +S3154001DA70000000000000000000000000000000005F +S3154001DA80000000000000000000000000000000004F +S3154001DA90000000000000000000000000000000003F +S3154001DAA0000000000000000000000000000000002F +S3154001DAB0000000000000000000000000000000001F +S3154001DAC0000000000000000000000000000000000F +S3154001DAD000000000000000000000000000000000FF +S3154001DAE000000000000000000000000000000000EF +S3154001DAF000000000000000000000000000000000DF +S3154001DB0000000000000000000000000000000000CE +S3154001DB1000000000000000000000000000000000BE +S3154001DB2000000000000000000000000000000000AE +S3154001DB30000000000000000000000000000000009E +S3154001DB40000000000000000000000000000000008E +S3154001DB50000000000000000000000000000000007E +S3154001DB60000000000000000000000000000000006E +S3154001DB70000000000000000000000000000000005E +S3154001DB80000000000000000000000000000000004E +S3154001DB90000000000000000000000000000000003E +S3154001DBA0000000000000000000000000000000002E +S3154001DBB0000000000000000000000000000000001E +S3154001DBC0000000000000000000000000000000000E +S3154001DBD000000000000000000000000000000000FE +S3154001DBE000000000000000000000000000000000EE +S3154001DBF000000000000000000000000000000000DE +S3154001DC0000000000000000000000000000000000CD +S3154001DC1000000000000000000000000000000000BD +S3154001DC2000000000000000000000000000000000AD +S3154001DC30000000000000000000000000000000009D +S3154001DC40000000000000000000000000000000008D +S3154001DC50000000000000000000000000000000007D +S3154001DC60000000000000000000000000000000006D +S3154001DC70000000000000000000000000000000005D +S3154001DC80000000000000000000000000000000004D +S3154001DC90000000000000000000000000000000003D +S3154001DCA0000000000000000000000000000000002D +S3154001DCB0000000000000000000000000000000001D +S3154001DCC0000000000000000000000000000000000D +S3154001DCD000000000000000000000000000000000FD +S3154001DCE000000000000000000000000000000000ED +S3154001DCF000000000000000000000000000000000DD +S3154001DD0000000000000000000000000000000000CC +S3154001DD1000000000000000000000000000000000BC +S3154001DD2000000000000000000000000000000000AC +S3154001DD30000000000000000000000000000000009C +S3154001DD40000000000000000000000000000000008C +S3154001DD50000000000000000000000000000000007C +S3154001DD60000000000000000000000000000000006C +S3154001DD70000000000000000000000000000000005C +S3154001DD80000000000000000000000000000000004C +S3154001DD90000000000000000000000000000000003C +S3154001DDA0000000000000000000000000000000002C +S3154001DDB0000000000000000000000000000000001C +S3154001DDC0000000000000000000000000000000000C +S3154001DDD000000000000000000000000000000000FC +S3154001DDE000000000000000000000000000000000EC +S3154001DDF000000000000000000000000000000000DC +S3154001DE0000000000000000000000000000000000CB +S3154001DE1000000000000000000000000000000000BB +S3154001DE2000000000000000000000000000000000AB +S3154001DE30000000000000000000000000000000009B +S3154001DE40000000000000000000000000000000008B +S3154001DE50000000000000000000000000000000007B +S3154001DE60000000000000000000000000000000006B +S3154001DE70000000000000000000000000000000005B +S3154001DE80000000000000000000000000000000004B +S3154001DE90000000000000000000000000000000003B +S3154001DEA0000000000000000000000000000000002B +S3154001DEB0000000000000000000000000000000001B +S3154001DEC0000000000000000000000000000000000B +S3154001DED000000000000000000000000000000000FB +S3154001DEE000000000000000000000000000000000EB +S3154001DEF000000000000000000000000000000000DB +S3154001DF0000000000000000000000000000000000CA +S3154001DF1000000000000000000000000000000000BA +S3154001DF2000000000000000000000000000000000AA +S3154001DF30000000000000000000000000000000009A +S3154001DF40000000000000000000000000000000008A +S3154001DF50000000000000000000000000000000007A +S3154001DF60000000000000000000000000000000006A +S3154001DF70000000000000000000000000000000005A +S3154001DF80000000000000000000000000000000004A +S3154001DF90000000000000000000000000000000003A +S3154001DFA0000000000000000000000000000000002A +S3154001DFB0000000000000000000000000000000001A +S3154001DFC0000000000000000000000000000000000A +S3154001DFD000000000000000000000000000000000FA +S3154001DFE000000000000000000000000000000000EA +S3154001DFF000000000000000000000000000000000DA +S3154001E00000000000000000000000000000000000C9 +S3154001E01000000000000000000000000000000000B9 +S3154001E02000000000000000000000000000000000A9 +S3154001E0300000000000000000000000000000000099 +S3154001E0400000000000000000000000000000000089 +S3154001E0500000000000000000000000000000000079 +S3154001E0600000000000000000000000000000000069 +S3154001E0700000000000000000000000000000000059 +S3154001E0800000000000000000000000000000000049 +S3154001E0900000000000000000000000000000000039 +S3154001E0A00000000000000000000000000000000029 +S3154001E0B00000000000000000000000000000000019 +S3154001E0C00000000000000000000000000000000009 +S3154001E0D000000000000000000000000000000000F9 +S3154001E0E000000000000000000000000000000000E9 +S3154001E0F000000000000000000000000000000000D9 +S3154001E10000000000000000000000000000000000C8 +S3154001E11000000000000000000000000000000000B8 +S3154001E12000000000000000000000000000000000A8 +S3154001E1300000000000000000000000000000000098 +S3154001E1400000000000000000000000000000000088 +S3154001E1500000000000000000000000000000000078 +S3154001E1600000000000000000000000000000000068 +S3154001E1700000000000000000000000000000000058 +S3154001E1800000000000000000000000000000000048 +S3154001E1900000000000000000000000000000000038 +S3154001E1A00000000000000000000000000000000028 +S3154001E1B00000000000000000000000000000000018 +S3154001E1C00000000000000000000000000000000008 +S3154001E1D000000000000000000000000000000000F8 +S3154001E1E000000000000000000000000000000000E8 +S3154001E1F000000000000000000000000000000000D8 +S3154001E20000000000000000000000000000000000C7 +S3154001E21000000000000000000000000000000000B7 +S3154001E22000000000000000000000000000000000A7 +S3154001E2300000000000000000000000000000000097 +S3154001E2400000000000000000000000000000000087 +S3154001E2500000000000000000000000000000000077 +S3154001E2600000000000000000000000000000000067 +S3154001E2700000000000000000000000000000000057 +S3154001E2800000000000000000000000000000000047 +S3154001E2900000000000000000000000000000000037 +S3154001E2A00000000000000000000000000000000027 +S3154001E2B00000000000000000000000000000000017 +S3154001E2C00000000000000000000000000000000007 +S3154001E2D000000000000000000000000000000000F7 +S3154001E2E000000000000000000000000000000000E7 +S3154001E2F000000000000000000000000000000000D7 +S3154001E30000000000000000000000000000000000C6 +S3154001E31000000000000000000000000000000000B6 +S3154001E32000000000000000000000000000000000A6 +S3154001E3300000000000000000000000000000000096 +S3154001E3400000000000000000000000000000000086 +S3154001E3500000000000000000000000000000000076 +S3154001E3600000000000000000000000000000000066 +S3154001E3700000000000000000000000000000000056 +S3154001E3800000000000000000000000000000000046 +S3154001E3900000000000000000000000000000000036 +S3154001E3A00000000000000000000000000000000026 +S3154001E3B00000000000000000000000000000000016 +S3154001E3C00000000000000000000000000000000006 +S3154001E3D000000000000000000000000000000000F6 +S3154001E3E000000000000000000000000000000000E6 +S3154001E3F000000000000000000000000000000000D6 +S3154001E40000000000000000000000000000000000C5 +S3154001E41000000000000000000000000000000000B5 +S3154001E42000000000000000000000000000000000A5 +S3154001E4300000000000000000000000000000000095 +S3154001E4400000000000000000000000000000000085 +S3154001E4500000000000000000000000000000000075 +S3154001E4600000000000000000000000000000000065 +S3154001E4700000000000000000000000000000000055 +S3154001E4800000000000000000000000000000000045 +S3154001E4900000000000000000000000000000000035 +S3154001E4A00000000000000000000000000000000025 +S3154001E4B00000000000000000000000000000000015 +S3154001E4C00000000000000000000000000000000005 +S3154001E4D000000000000000000000000000000000F5 +S3154001E4E000000000000000000000000000000000E5 +S3154001E4F000000000000000000000000000000000D5 +S3154001E50000000000000000000000000000000000C4 +S3154001E51000000000000000000000000000000000B4 +S3154001E52000000000000000000000000000000000A4 +S3154001E5300000000000000000000000000000000094 +S3154001E5400000000000000000000000000000000084 +S3154001E5500000000000000000000000000000000074 +S3154001E5600000000000000000000000000000000064 +S3154001E5700000000000000000000000000000000054 +S3154001E5800000000000000000000000000000000044 +S3154001E5900000000000000000000000000000000034 +S3154001E5A00000000000000000000000000000000024 +S3154001E5B00000000000000000000000000000000014 +S3154001E5C00000000000000000000000000000000004 +S3154001E5D000000000000000000000000000000000F4 +S3154001E5E000000000000000000000000000000000E4 +S3154001E5F000000000000000000000000000000000D4 +S3154001E60000000000000000000000000000000000C3 +S3154001E61000000000000000000000000000000000B3 +S3154001E62000000000000000000000000000000000A3 +S3154001E6300000000000000000000000000000000093 +S3154001E6400000000000000000000000000000000083 +S3154001E6500000000000000000000000000000000073 +S3154001E6600000000000000000000000000000000063 +S3154001E6700000000000000000000000000000000053 +S3154001E6800000000000000000000000000000000043 +S3154001E6900000000000000000000000000000000033 +S3154001E6A00000000000000000000000000000000023 +S3154001E6B00000000000000000000000000000000013 +S3154001E6C00000000000000000000000000000000003 +S3154001E6D000000000000000000000000000000000F3 +S3154001E6E000000000000000000000000000000000E3 +S3154001E6F000000000000000000000000000000000D3 +S3154001E70000000000000000000000000000000000C2 +S3154001E71000000000000000000000000000000000B2 +S3154001E72000000000000000000000000000000000A2 +S3154001E7300000000000000000000000000000000092 +S3154001E7400000000000000000000000000000000082 +S3154001E7500000000000000000000000000000000072 +S3154001E7600000000000000000000000000000000062 +S3154001E7700000000000000000000000000000000052 +S3154001E7800000000000000000000000000000000042 +S3154001E7900000000000000000000000000000000032 +S3154001E7A00000000000000000000000000000000022 +S3154001E7B00000000000000000000000000000000012 +S3154001E7C00000000000000000000000000000000002 +S3154001E7D000000000000000000000000000000000F2 +S3154001E7E000000000000000000000000000000000E2 +S3154001E7F000000000000000000000000000000000D2 +S3154001E80000000000000000000000000000000000C1 +S3154001E81000000000000000000000000000000000B1 +S3154001E82000000000000000000000000000000000A1 +S3154001E8300000000000000000000000000000000091 +S3154001E8400000000000000000000000000000000081 +S3154001E8500000000000000000000000000000000071 +S3154001E8600000000000000000000000000000000061 +S3154001E8700000000000000000000000000000000051 +S3154001E8800000000000000000000000000000000041 +S3154001E8900000000000000000000000000000000031 +S3154001E8A00000000000000000000000000000000021 +S3154001E8B00000000000000000000000000000000011 +S3154001E8C00000000000000000000000000000000001 +S3154001E8D000000000000000000000000000000000F1 +S3154001E8E000000000000000000000000000000000E1 +S3154001E8F000000000000000000000000000000000D1 +S3154001E90000000000000000000000000000000000C0 +S3154001E91000000000000000000000000000000000B0 +S3154001E92000000000000000000000000000000000A0 +S3154001E9300000000000000000000000000000000090 +S3154001E9400000000000000000000000000000000080 +S3154001E9500000000000000000000000000000000070 +S3154001E9600000000000000000000000000000000060 +S3154001E9700000000000000000000000000000000050 +S3154001E9800000000000000000000000000000000040 +S3154001E9900000000000000000000000000000000030 +S3154001E9A00000000000000000000000000000000020 +S3154001E9B00000000000000000000000000000000010 +S3154001E9C00000000000000000000000000000000000 +S3154001E9D000000000000000000000000000000000F0 +S3154001E9E000000000000000000000000000000000E0 +S3154001E9F000000000000000000000000000000000D0 +S3154001EA0000000000000000000000000000000000BF +S3154001EA1000000000000000000000000000000000AF +S3154001EA20000000000000000000000000000000009F +S3154001EA30000000000000000000000000000000008F +S3154001EA40000000000000000000000000000000007F +S3154001EA50000000000000000000000000000000006F +S3154001EA60000000000000000000000000000000005F +S3154001EA70000000000000000000000000000000004F +S3154001EA80000000000000000000000000000000003F +S3154001EA90000000000000000000000000000000002F +S3154001EAA0000000000000000000000000000000001F +S3154001EAB0000000000000000000000000000000000F +S3154001EAC000000000000000000000000000000000FF +S3154001EAD000000000000000000000000000000000EF +S3154001EAE000000000000000000000000000000000DF +S3154001EAF000000000000000000000000000000000CF +S3154001EB0000000000000000000000000000000000BE +S3154001EB1000000000000000000000000000000000AE +S3154001EB20000000000000000000000000000000009E +S3154001EB30000000000000000000000000000000008E +S3154001EB40000000000000000000000000000000007E +S3154001EB50000000000000000000000000000000006E +S3154001EB60000000000000000000000000000000005E +S3154001EB70000000000000000000000000000000004E +S3154001EB80000000000000000000000000000000003E +S3154001EB90000000000000000000000000000000002E +S3154001EBA0000000000000000000000000000000001E +S3154001EBB0000000000000000000000000000000000E +S3154001EBC000000000000000000000000000000000FE +S3154001EBD000000000000000000000000000000000EE +S3154001EBE000000000000000000000000000000000DE +S3154001EBF000000000000000000000000000000000CE +S3154001EC0000000000000000000000000000000000BD +S3154001EC1000000000000000000000000000000000AD +S3154001EC20000000000000000000000000000000009D +S3154001EC30000000000000000000000000000000008D +S3154001EC40000000000000000000000000000000007D +S3154001EC50000000000000000000000000000000006D +S3154001EC60000000000000000000000000000000005D +S3154001EC70000000000000000000000000000000004D +S3154001EC80000000000000000000000000000000003D +S3154001EC90000000000000000000000000000000002D +S3154001ECA0000000000000000000000000000000001D +S3154001ECB0000000000000000000000000000000000D +S3154001ECC000000000000000000000000000000000FD +S3154001ECD000000000000000000000000000000000ED +S3154001ECE000000000000000000000000000000000DD +S3154001ECF000000000000000000000000000000000CD +S3154001ED0000000000000000000000000000000000BC +S3154001ED1000000000000000000000000000000000AC +S3154001ED20000000000000000000000000000000009C +S3154001ED30000000000000000000000000000000008C +S3154001ED40000000000000000000000000000000007C +S3154001ED50000000000000000000000000000000006C +S3154001ED60000000000000000000000000000000005C +S3154001ED70000000000000000000000000000000004C +S3154001ED80000000000000000000000000000000003C +S3154001ED90000000000000000000000000000000002C +S3154001EDA0000000000000000000000000000000001C +S3154001EDB0000000000000000000000000000000000C +S3154001EDC000000000000000000000000000000000FC +S3154001EDD000000000000000000000000000000000EC +S3154001EDE000000000000000000000000000000000DC +S3154001EDF000000000000000000000000000000000CC +S3154001EE0000000000000000000000000000000000BB +S3154001EE1000000000000000000000000000000000AB +S3154001EE20000000000000000000000000000000009B +S3154001EE30000000000000000000000000000000008B +S3154001EE40000000000000000000000000000000007B +S3154001EE50000000000000000000000000000000006B +S3154001EE60000000000000000000000000000000005B +S3154001EE70000000000000000000000000000000004B +S3154001EE80000000000000000000000000000000003B +S3154001EE90000000000000000000000000000000002B +S3154001EEA0000000000000000000000000000000001B +S3154001EEB0000000000000000000000000000000000B +S3154001EEC000000000000000000000000000000000FB +S3154001EED000000000000000000000000000000000EB +S3154001EEE000000000000000000000000000000000DB +S3154001EEF000000000000000000000000000000000CB +S3154001EF0000000000000000000000000000000000BA +S3154001EF1000000000000000000000000000000000AA +S3154001EF20000000000000000000000000000000009A +S3154001EF30000000000000000000000000000000008A +S3154001EF40000000000000000000000000000000007A +S3154001EF50000000000000000000000000000000006A +S3154001EF60000000000000000000000000000000005A +S3154001EF70000000000000000000000000000000004A +S3154001EF80000000000000000000000000000000003A +S3154001EF90000000000000000000000000000000002A +S3154001EFA0000000000000000000000000000000001A +S3154001EFB0000000000000000000000000000000000A +S3154001EFC000000000000000000000000000000000FA +S3154001EFD000000000000000000000000000000000EA +S3154001EFE000000000000000000000000000000000DA +S3154001EFF000000000000000000000000000000000CA +S3154001F00000000000000000000000000000000000B9 +S3154001F01000000000000000000000000000000000A9 +S3154001F0200000000000000000000000000000000099 +S3154001F0300000000000000000000000000000000089 +S3154001F0400000000000000000000000000000000079 +S3154001F0500000000000000000000000000000000069 +S3154001F0600000000000000000000000000000000059 +S3154001F0700000000000000000000000000000000049 +S3154001F0800000000000000000000000000000000039 +S3154001F0900000000000000000000000000000000029 +S3154001F0A00000000000000000000000000000000019 +S3154001F0B00000000000000000000000000000000009 +S3154001F0C000000000000000000000000000000000F9 +S3154001F0D000000000000000000000000000000000E9 +S3154001F0E000000000000000000000000000000000D9 +S3154001F0F000000000000000000000000000000000C9 +S3154001F10000000000000000000000000000000000B8 +S3154001F11000000000000000000000000000000000A8 +S3154001F1200000000000000000000000000000000098 +S3154001F1300000000000000000000000000000000088 +S3154001F1400000000000000000000000000000000078 +S3154001F1500000000000000000000000000000000068 +S3154001F1600000000000000000000000000000000058 +S3154001F1700000000000000000000000000000000048 +S3154001F1800000000000000000000000000000000038 +S3154001F1900000000000000000000000000000000028 +S3154001F1A00000000000000000000000000000000018 +S3154001F1B00000000000000000000000000000000008 +S3154001F1C000000000000000000000000000000000F8 +S3154001F1D000000000000000000000000000000000E8 +S3154001F1E000000000000000000000000000000000D8 +S3154001F1F000000000000000000000000000000000C8 +S3154001F20000000000000000000000000000000000B7 +S3154001F21000000000000000000000000000000000A7 +S3154001F2200000000000000000000000000000000097 +S3154001F2300000000000000000000000000000000087 +S3154001F2400000000000000000000000000000000077 +S3154001F2500000000000000000000000000000000067 +S3154001F2600000000000000000000000000000000057 +S3154001F2700000000000000000000000000000000047 +S3154001F2800000000000000000000000000000000037 +S3154001F2900000000000000000000000000000000027 +S3154001F2A00000000000000000000000000000000017 +S3154001F2B00000000000000000000000000000000007 +S3154001F2C000000000000000000000000000000000F7 +S3154001F2D000000000000000000000000000000000E7 +S3154001F2E000000000000000000000000000000000D7 +S3154001F2F000000000000000000000000000000000C7 +S3154001F30000000000000000000000000000000000B6 +S3154001F31000000000000000000000000000000000A6 +S3154001F3200000000000000000000000000000000096 +S3154001F3300000000000000000000000000000000086 +S3154001F3400000000000000000000000000000000076 +S3154001F3500000000000000000000000000000000066 +S3154001F3600000000000000000000000000000000056 +S3154001F3700000000000000000000000000000000046 +S3154001F3800000000000000000000000000000000036 +S3154001F3900000000000000000000000000000000026 +S3154001F3A00000000000000000000000000000000016 +S3154001F3B00000000000000000000000000000000006 +S3154001F3C000000000000000000000000000000000F6 +S3154001F3D000000000000000000000000000000000E6 +S3154001F3E000000000000000000000000000000000D6 +S3154001F3F000000000000000000000000000000000C6 +S3154001F40000000000000000000000000000000000B5 +S3154001F41000000000000000000000000000000000A5 +S3154001F4200000000000000000000000000000000095 +S3154001F4300000000000000000000000000000000085 +S3154001F4400000000000000000000000000000000075 +S3154001F4500000000000000000000000000000000065 +S3154001F4600000000000000000000000000000000055 +S3154001F4700000000000000000000000000000000045 +S3154001F4800000000000000000000000000000000035 +S3154001F4900000000000000000000000000000000025 +S3154001F4A00000000000000000000000000000000015 +S3154001F4B00000000000000000000000000000000005 +S3154001F4C000000000000000000000000000000000F5 +S3154001F4D000000000000000000000000000000000E5 +S3154001F4E000000000000000000000000000000000D5 +S3154001F4F000000000000000000000000000000000C5 +S3154001F50000000000000000000000000000000000B4 +S3154001F51000000000000000000000000000000000A4 +S3154001F5200000000000000000000000000000000094 +S3154001F5300000000000000000000000000000000084 +S3154001F5400000000000000000000000000000000074 +S3154001F5500000000000000000000000000000000064 +S3154001F5600000000000000000000000000000000054 +S3154001F5700000000000000000000000000000000044 +S3154001F5800000000000000000000000000000000034 +S3154001F5900000000000000000000000000000000024 +S3154001F5A00000000000000000000000000000000014 +S3154001F5B00000000000000000000000000000000004 +S3154001F5C000000000000000000000000000000000F4 +S3154001F5D000000000000000000000000000000000E4 +S3154001F5E000000000000000000000000000000000D4 +S3154001F5F000000000000000000000000000000000C4 +S3154001F60000000000000000000000000000000000B3 +S3154001F61000000000000000000000000000000000A3 +S3154001F6200000000000000000000000000000000093 +S3154001F6300000000000000000000000000000000083 +S3154001F6400000000000000000000000000000000073 +S3154001F6500000000000000000000000000000000063 +S3154001F6600000000000000000000000000000000053 +S3154001F6700000000000000000000000000000000043 +S3154001F6800000000000000000000000000000000033 +S3154001F6900000000000000000000000000000000023 +S3154001F6A00000000000000000000000000000000013 +S3154001F6B00000000000000000000000000000000003 +S3154001F6C000000000000000000000000000000000F3 +S3154001F6D000000000000000000000000000000000E3 +S3154001F6E000000000000000000000000000000000D3 +S3154001F6F000000000000000000000000000000000C3 +S3154001F70000000000000000000000000000000000B2 +S3154001F71000000000000000000000000000000000A2 +S3154001F7200000000000000000000000000000000092 +S3154001F7300000000000000000000000000000000082 +S3154001F7400000000000000000000000000000000072 +S3154001F7500000000000000000000000000000000062 +S3154001F7600000000000000000000000000000000052 +S3154001F7700000000000000000000000000000000042 +S3154001F7800000000000000000000000000000000032 +S3154001F7900000000000000000000000000000000022 +S3154001F7A00000000000000000000000000000000012 +S3154001F7B00000000000000000000000000000000002 +S3154001F7C000000000000000000000000000000000F2 +S3154001F7D000000000000000000000000000000000E2 +S3154001F7E000000000000000000000000000000000D2 +S3154001F7F000000000000000000000000000000000C2 +S3154001F80000000000000000000000000000000000B1 +S3154001F81000000000000000000000000000000000A1 +S3154001F8200000000000000000000000000000000091 +S3154001F8300000000000000000000000000000000081 +S3154001F8400000000000000000000000000000000071 +S3154001F8500000000000000000000000000000000061 +S3154001F8600000000000000000000000000000000051 +S3154001F8700000000000000000000000000000000041 +S3154001F8800000000000000000000000000000000031 +S3154001F8900000000000000000000000000000000021 +S3154001F8A00000000000000000000000000000000011 +S3154001F8B00000000000000000000000000000000001 +S3154001F8C000000000000000000000000000000000F1 +S3154001F8D000000000000000000000000000000000E1 +S3154001F8E000000000000000000000000000000000D1 +S3154001F8F000000000000000000000000000000000C1 +S3154001F90000000000000000000000000000000000B0 +S3154001F91000000000000000000000000000000000A0 +S3154001F9200000000000000000000000000000000090 +S3154001F9300000000000000000000000000000000080 +S3154001F9400000000000000000000000000000000070 +S3154001F9500000000000000000000000000000000060 +S3154001F9600000000000000000000000000000000050 +S3154001F9700000000000000000000000000000000040 +S3154001F9800000000000000000000000000000000030 +S3154001F9900000000000000000000000000000000020 +S3154001F9A00000000000000000000000000000000010 +S3154001F9B00000000000000000000000000000000000 +S3154001F9C000000000000000000000000000000000F0 +S3154001F9D000000000000000000000000000000000E0 +S3154001F9E000000000000000000000000000000000D0 +S3154001F9F000000000000000000000000000000000C0 +S3154001FA0000000000000000000000000000000000AF +S3154001FA10000000000000000000000000000000009F +S3154001FA20000000000000000000000000000000008F +S3154001FA30000000000000000000000000000000007F +S3154001FA40000000000000000000000000000000006F +S3154001FA50000000000000000000000000000000005F +S3154001FA60000000000000000000000000000000004F +S3154001FA70000000000000000000000000000000003F +S3154001FA80000000000000000000000000000000002F +S3154001FA90000000000000000000000000000000001F +S3154001FAA0000000000000000000000000000000000F +S3154001FAB000000000000000000000000000000000FF +S3154001FAC000000000000000000000000000000000EF +S3154001FAD000000000000000000000000000000000DF +S3154001FAE000000000000000000000000000000000CF +S3154001FAF000000000000000000000000000000000BF +S3154001FB0000000000000000000000000000000000AE +S3154001FB10000000000000000000000000000000009E +S3154001FB20000000000000000000000000000000008E +S3154001FB30000000000000000000000000000000007E +S3154001FB40000000000000000000000000000000006E +S3154001FB50000000000000000000000000000000005E +S3154001FB60000000000000000000000000000000004E +S3154001FB70000000000000000000000000000000003E +S3154001FB80000000000000000000000000000000002E +S3154001FB90000000000000000000000000000000001E +S3154001FBA0000000000000000000000000000000000E +S3154001FBB000000000000000000000000000000000FE +S3154001FBC000000000000000000000000000000000EE +S3154001FBD000000000000000000000000000000000DE +S3154001FBE000000000000000000000000000000000CE +S3154001FBF000000000000000000000000000000000BE +S3154001FC0000000000000000000000000000000000AD +S3154001FC10000000000000000000000000000000009D +S3154001FC20000000000000000000000000000000008D +S3154001FC30000000000000000000000000000000007D +S3154001FC40000000000000000000000000000000006D +S3154001FC50000000000000000000000000000000005D +S3154001FC60000000000000000000000000000000004D +S3154001FC70000000000000000000000000000000003D +S3154001FC80000000000000000000000000000000002D +S3154001FC90000000000000000000000000000000001D +S3154001FCA0000000000000000000000000000000000D +S3154001FCB000000000000000000000000000000000FD +S3154001FCC000000000000000000000000000000000ED +S3154001FCD000000000000000000000000000000000DD +S3154001FCE000000000000000000000000000000000CD +S3154001FCF000000000000000000000000000000000BD +S3154001FD0000000000000000000000000000000000AC +S3154001FD10000000000000000000000000000000009C +S3154001FD20000000000000000000000000000000008C +S3154001FD30000000000000000000000000000000007C +S3154001FD40000000000000000000000000000000006C +S3154001FD50000000000000000000000000000000005C +S3154001FD60000000000000000000000000000000004C +S3154001FD70000000000000000000000000000000003C +S3154001FD80000000000000000000000000000000002C +S3154001FD90000000000000000000000000000000001C +S3154001FDA0000000000000000000000000000000000C +S3154001FDB000000000000000000000000000000000FC +S3154001FDC000000000000000000000000000000000EC +S3154001FDD000000000000000000000000000000000DC +S3154001FDE000000000000000000000000000000000CC +S3154001FDF000000000000000000000000000000000BC +S3154001FE0000000000000000000000000000000000AB +S3154001FE10000000000000000000000000000000009B +S3154001FE20000000000000000000000000000000008B +S3154001FE30000000000000000000000000000000007B +S3154001FE40000000000000000000000000000000006B +S3154001FE50000000000000000000000000000000005B +S3154001FE60000000000000000000000000000000004B +S3154001FE70000000000000000000000000000000003B +S3154001FE80000000000000000000000000000000002B +S3154001FE90000000000000000000000000000000001B +S3154001FEA0000000000000000000000000000000000B +S3154001FEB000000000000000000000000000000000FB +S3154001FEC000000000000000000000000000000000EB +S3154001FED000000000000000000000000000000000DB +S3154001FEE000000000000000000000000000000000CB +S3154001FEF000000000000000000000000000000000BB +S3154001FF0000000000000000000000000000000000AA +S3154001FF10000000000000000000000000000000009A +S3154001FF20000000000000000000000000000000008A +S3154001FF30000000000000000000000000000000007A +S3154001FF40000000000000000000000000000000006A +S3154001FF50000000000000000000000000000000005A +S3154001FF60000000000000000000000000000000004A +S3154001FF70000000000000000000000000000000003A +S3154001FF80000000000000000000000000000000002A +S3154001FF90000000000000000000000000000000001A +S3154001FFA0000000000000000000000000000000000A +S3154001FFB000000000000000000000000000000000FA +S3154001FFC000000000000000000000000000000000EA +S3154001FFD000000000000000000000000000000000DA +S3154001FFE000000000000000000000000000000000CA +S3154001FFF000000000000000000000000000000000BA +S315400200000000000100000000000000002000000087 +S315400200100000000000000000000000000000000098 S315400200200000000000000000000000000000000088 S315400200300000000000000000000000000000000078 S315400200400000000000000000000000000000000068 -S315400200500000000000000000000000010000000057 +S315400200500000000000000001000000000000000057 S315400200600000000000000000000000000000000048 S315400200700000000000000000000000000000000038 S315400200800000000000000000000000000000000028 -S315400200900000000000000000000000000000000117 +S315400200900000000000000000000000010000000017 S315400200A00000000000000000000000000000000008 S315400200B000000000000000000000000000000000F8 S315400200C000000000000000000000000000000000E8 -S315400200D000000000000000000000000000000000D8 -S315400200E00000000100000000000000410000000086 -S315400200F0343074693934612B3079676979753035B2 -S315400201007968617035796934682B612B69697978C8 -S315400201106869346B35396A30713930356A6B6F7953 -S3154002012070686F70746A72686961346979302B34A9 -S315400201300000000000000000000000010000000076 -S3154002014040000000000000004008000000000000DF -S31540020150401800000000000080000000000000007F -S315400201600000000000000000BFF000000000000098 -S31540020170BF800000000000000000000000000000F8 -S315400201800000000000000000000000000000000027 -S315400201903FF00000000000004008000000000000A0 -S315400201A03FF0000040000000000000000000000098 -S315400201B03F800000404000000000000000000000B8 -S315400201C000000000000000000000000000000000E7 -S315400201D0000000000000000048000001000000008E -S315400201E0480000000000000046C000000000000079 -S315400201F03FF0000000000000400000000000000048 -S3154002020040080000000000003F800000000000009F -S31540020210529000000000000052900FF807F60DEBD6 -S3154002022052901FE03F61BAD052902FB8D4E30F48A4 -S3154002023052903F81F636B80C52904F3BD03C0A64FE -S3154002024052905EE68EFAD48B52906E825DA8FC2B5B -S3154002025052907E0F66AFED0752908D8DD3B1D9AADB -S3154002026052909CFDCD8ED0095290AC5F7C69A3C85A -S315400202705290BBB307ACAFDB5290CAF8960E710DE3 -S315400202805290DA304D95FB065290E95A539F492CCB -S315400202905290F876CCDF6CD952910785DD689A295F -S315400202A052911687A8AE14A35291257C5187FD0917 -S315400202B052913463FA37014E5291433EC467EFFB83 -S315400202C05291520CD1372FEB529160CE41341D746C -S315400202D052916F8334644DF952917E2BCA46BAB914 -S315400202E052918CC821D6D3E352919B58598F7C9F09 -S315400202F05291A9DC8F6DF1045291B854E0F496A064 -S315400203005291C6C16B2DB8705291D5224AAE2EE19A -S315400203105291E3779B97F4A85291F1C1799CA8FF39 -S31540020320529200000000000052920E33499A21A9CF -S3154002033052921C5B70D9F82452922A788FC76DE587 -S315400203405292388AC0059C28529246921AD4EA4959 -S315400203505292548EB9151E8552926280B347609668 -S315400203605292706821902E9A52927E451BB944C38E -S3154002037052928C17B9337834529299E01118857596 -S315400203805292A79E3A2CD2E65292B5524AE1278E13 -S315400203905292C2FC595456A75292D09C7B54E03E8C -S315400203A05292DE32C66287415292EBBF4FAFDD4B6D -S315400203B05292F9422C23C47E529306BB705AE7C32B -S315400203C05293142B30A929AB52932191811B0A4196 -S315400203D052932EEE7577041652933C42213EE0C963 -S315400203E05293498C97B10540529356CDEBC9B5E22B -S315400203F0529364063044530652937135779C8DCBA3 -S3154002040052937E5BD40F95A152938B79579D3EAB07 -S315400204105293988E1409212E5293A59A1ADBB257FB -S315400204205293B29D7D6356625293BF984CB56C7798 -S315400204305293CC8A99AF54535293D97474F76DF24E -S315400204405293E655EEFE13675293F32F17FE8D0431 -S31540020450529400000000000052940CC8B6D657C20F -S31540020460529419894C2329F052942641CF569572BB -S31540020470529432F24FB01C7A52943F9ADC3F79CE74 -S3154002048052944C3B83E57153529458D455549C1A1A -S31540020490529465655F122FF6529471EEAF76C2C6DC -S315400204A052947E7054AF098952948AEA5CBC935F37 -S315400204B05294975CD57680885294A3C7CC8A358A63 -S315400204C05294B02B4F7C0A885294BC876BA7F6ECA9 -S315400204D05294C8DC2E4239805294D529A457FCFC4A -S315400204E05294E16FDACFF9375294EDAEDE6B10FEDD -S315400204F05294F9E6BBC4ECB3529506177F5491BBAE -S3154002050052951241356CF6E052951E63EA3D95B01E -S3154002051052952A7FA9D2F8EA529536948017481006 -S31540020520529542A278D2D03652954EA99FAC8A0FA6 -S3154002053052955AAA002A9D5A529566A3A5B2E1B18E -S31540020540529572969B8B5CD852957E82ECDABE8D22 -S3154002055052958A68A4A8D9F352959647CDDF1CA531 -S315400205605295A220734903775295ADF29F948CFB24 -S315400205705295B9BE5D52A9DA5295C583B6F7AB0319 -S315400205805295D142B6DBADC55295DCFB673B05DFE2 -S315400205905295E8ADD236A58F5295F45A01D483B41A -S315400205A0529600000000000052960B9FD68A455490 -S315400205B0529617398F2AAA48529622CD337F0FE890 -S315400205C052962E5ACD0C3EBE529639E2653E421B9B -S315400205D0529645640568C1C3529650DFB6C759F470 -S315400205E052965C55827DF1D2529667C57199104BEF -S315400205F05296732F8D0E2F7752967E93DDBC0E73D5 -S31540020600529689F26C6B01D05296954B41CD4293EC -S315400206100BC0A4068F346C9B0BC093731C185447B3 -S315400206200BC083008E183C230BC072AE83A9704A5E -S315400206300BC0627C9CC166FF0BC0526A7ACE64A430 -S315400206400BC04277C0B04ADA0BC032A412B191A0B5 -S315400206500BC022EF168069500BC0135873280473DF -S315400206600BC003DFD10A08480BBFE909B3B04632D3 -S315400206700BBFCA8E711B8E880BBFAC4D32D4143061 -S315400206800BBF8E4553D34B1B0BBF7076318237EF70 -S315400206900BBF52DF2BADF99C0BBF357FA47C936C0D -S315400206A00BBF18570061F5EB0BBEFB64A61545154B -S315400206B00BBEDEA7FE865A2B0BBEC22074D37FBC6E -S315400206C00BBEA5CD763F66690BBE89AE722750F04A -S315400206D00BBE6DC2D9F976230BBE520A212B976CFB -S315400206E00BBE3683BD31CAA20BBE1B2F257575CAFA -S315400206F00BBE000BD34C7BAF0BBDE51941F097FE09 -S315400207000BBDCA56EE76E9D00BBDAFC457C7AB7325 -S315400207100BBD9560FE9616690BBD7B2C65587275AE -S315400207200BBD612610404EC00BBD474D8532E409D4 -S315400207300BBD2DA24BC19EDF0BBD1423ED22D10171 -S315400207400BBCFAD1F42A88E40BBCE1ABED438E80B4 -S315400207500BBCC8B1666884820BBCAFE1EF1D2D01AC -S315400207600BBC973D1867D0EF0BBC7EC274CAC962F8 -S315400207700BBC6671983E29FE0BBC4E4A18298BA9C2 -S315400207800BBC364B8B5DF6DB0BBC1E758A0FECBF82 -S315400207900BBC06C7ADD18E7E0BBBEF41918CE1F609 -S315400207A00BBBD7E2D17E33360BBBC0AB0B2E921BB3 -S315400207B00BBBA999DD6E6B650BBB92AEE8503CA7AD -S315400207C00BBB7BE9CD2362720BBB654A2E6F002CB5 -S315400207D00BBB4ECFAFED00FE0BBB3879F685313FF2 -S315400207E00BBB2248A8486FDE0BBB0C3B6C6BF73B3E -S315400207F00BBAF651EB44BCEE0BBAE08BCE42E7F1B4 -S315400208000BBACAE8BFED5CC00BBAB5686BDD5EDDFC -S315400208100BBAA00A7EBA475E0BBA8ACEA6354FEB12 -S315400208200BBA75B4910571DB0BBA60BBEEE358EFB8 -S315400208300BBA4BE4708569410BBA372DC79BD7FE7D -S315400208400BBA2297A6CCD68C0BBA0E21C1B0CFA03A -S315400208500BB9F9CBCCCEB6050BB9E5957D98648B31 -S315400208600BB9D17E8A670EE70BB9BD86AA77C3104C -S315400208700BB9A9AD95E7FAC40BB995F305B23CE5B8 -S315400208800BB98256B3AACE570BB96ED85A7C7206AA -S315400208900BB95B77B5A537C80BB94834817359CCC8 -S315400208A00BB9350E7B02284D0BB922056037032E54 -S315400208B00BB90F18EFBE614A0BB8FC48E908E522AE -S315400208C00BB8E9950C487EA90BB8D6FD1A6D99E886 -S315400208D00BB8C480D5245A340BB8B21FFED1E1BC42 -S315400208E00BB89FDA5A91A5260BB88DAFAC32CB0A1C -S315400208F00BB87B9FB83596F60BB869AA43C8DFE1B9 -S315400209000BB857CF14C791B50BB8460DF1B639C6D9 -S315400209100BB83466A1C09DF90BB822D8ECB75E6E0F -S315400209200BB811649B0DA16B0BB8000975D6C9595A -S315400209300BB7EEC746C434A50BB7DD9DD823075285 -S315400209400BB7CC8CF4D9FE010BB7BB9468674A50FF -S315400209500BB7AAB3FEDE78540BB799EB84E65D0C6F -S315400209600BB7893AC7B70D960BB778A19517DF0132 -S315400209700BB7681FBB5D6E910BB757B50967B24C93 -S315400209800BB747614EA011A20BB737245AF786140C -S315400209900BB726FDFEE4C3A00BB716EE0B6268E862 -S315400209A00BB706F451ED36CE0BB6F710A4824F8044 -S315400209B00BB6E742D59D7CB40BB6D78AB8377D0EC7 -S315400209C00BB6C7E81FC458720BB6B85AE031BB32F1 -S315400209D00BB6A8E2CDE557F90BB6997FBDBB50459C -S315400209E00BB68A318504A35C0BB67AF7F985A39BCD -S315400209F00BB66BD2F17471FF0BB65CC243777FCEF6 -S31540020A000BB64DC5C6A416420BB63EDD527CE4116A -S31540020A100BB63008BEF090CF0BB62147E45855EBE3 -S31540020A200BB6129A9B769D520BB60400BD75A584F1 -S31540020A300BB5F57A23E62B070BB5E706A8BE172CAE -S31540020A400BB5D8A6265733FF0BB5CA58776DE54B7B -S31540020A500BB5BC1D771FE6AB0BB5ADF500EB0E78BB -S31540020A600BB59FDEF0AC15940BB591DB229D63F27C -S31540020A700BB583E97355E1C10BB57609BFC7CD32D4 -S31540020A800BB5683BE53F94B80BB55A7FC162B5B624 -S31540020A900BB54CD5322E9F7F0BB53F3C15F79AA12D -S31540020AA00BB531B44B67B45A0BB5243DB17DAE306C -S31540020AB00BB516D8278BF18F0BB509838D37876710 -S31540020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB69 -S31540020AD00BB4E1EA1D1EA6680BB4D4D8040308E59C -S31540020AE00BB4C7D63D722B370BB4BAE4AAEBF9481E -S31540020AF00BB4AE032E3C2D7E0BB4A131A97965C948 -S31540020B000BB4946FFF043C1C0BB487BE118662364D -S31540020B100BB47B1BC3F1C0BF0BB46E88F97F999BA4 -S31540020B200BB4620595AFAD730BB455917C476454D3 -S31540020B300BB4492C9150F96C0BB43CD6B91AA9C8DE -S31540020B400BB4308FD835E60B0BB42457D3768716C1 -S31540020B500BB4182E8FF205900BB40C13F2FEB43B75 -S31540020B600BB40007E232FD1F0BB3F40A4364A167DC -S31540020B700BB3E81AFCA7FBF00BB3DC39F44F468AF9 -S31540020B800BB3D06710E9E1C30BB3C4A239439F4FFD -S31540020B900BB3B8EB54640EF10BB3AD42498DCDDFC6 -S31540020BA00BB3A1A7003DD89B0BB39619602ADF2B46 -S31540020BB00BB38A9951449BB80BB37F26BBB32B79AF -S31540020BC00BB373C187D669EA0BB368699E454E4437 -S31540020BD00BB35D1EE7CD4B2D0BB351E14D71B09872 -S31540020BE00BB346B0B86B0FC30BB33B8D1226A15A5B -S31540020BF00BB330764445ADAC0BB3256C389CF6EB63 -S31540020C000BB31A6ED934256E0BB30F7E104535F5EC -S31540020C100BB30499C83BE9D60BB2F9C1EBB53923FC -S31540020C200BB2EEF6657EC6AA0BB2E437209655D5D0 -S31540020C300BB2D984082942630BB2CEDD0793F9E79A -S31540020C400BB2C4420A6177190BB2B9B2FC4ABEDA98 -S31540020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1F9 -S31540020C600BB29A4CA48F90E30BB28FEC8BA9777997 -S31540020C700BB28597FF1D694D0BB27B4EEBAE48DD3D -S31540020C800BB271113E499CEE0BB266DEE4071AA81E -S31540020C900BB25CB7CA2831380BB2529BDE1796F7B5 -S31540020CA00BB2488B0D68D8030BB23E8545D7E65A40 -S31540020CB00BB2348A7548AB540BB22A9A89C69A97B4 -S31540020CC00BB220B5718446610BB216DB1ADAF53FD8 -S31540020CD00BB20D0B744A39100BB203466C77876C14 -S31540020CE00BB1F98BF22DD3490BB1EFDBF45D27FF44 -S31540020CF00BB1E636621A457E0BB1DC9B2A9E3DD588 -S31540020D000BB1D30A3D4613EE0BB1C98389925B817F -S31540020D100BB1C006FF26DA3F0BB1B6948DCA2A281C -S31540020D200BB1AD2C25655D0F0BB1A3CDB603A13D2D -S31540020D300BB19A792FD1E7410BB1912E831E88D2FE -S31540020D400BB187EDA058F0D60BB17EB6781144733D -S31540020D500BB17588FAF80D3A0BB16C6519DDE45D95 -S31540020D600BB1634AC5B31EEF0BB15A39EF877B28E5 -S31540020D700BB151328889CEAE0BB148348207B5DB0E -S31540020D800BB13F3FCD6D43FF0BB136545C44B49A31 -S31540020D900BB12D7220361D870BB124990B07221BEE -S31540020DA00BB11BC90E9AA72D0BB113021CF0880F6B -S31540020DB00BB10A4428254C650BB1018F2271DEE541 -S31540020DC00BB0F8E2FE2B44F40BB0F03FADC2572312 -S31540020DD00BB0E7A523C37A850BB0DF1352D65AD997 -S31540020DE00BB0D68A2DBDA58C0BB0CE09A756C589A8 -S31540020DF00BB0C591B2999FDB0BB0BD2242985115FB -S31540020E000BB0B4BB4A7EEB870BB0AC5CBD933636B7 -S31540020E1065300000653010006530200065303000D6 -S31540020E2065304000653050006530600065307000C6 -S31540020E3065308000653090006530A0006530B000B6 -S31540020E406530C0006530D0006530E0006530F000A6 -S31540020E506531000065311000653120006531300092 -S31540020E606531400065315000653160006531700082 -S31540020E7065318000653190006531A0006531B00072 -S31540020E806531C0006531D0006531E0006531F00062 -S31540020E90653200006532100065322000653230004E -S31540020EA0653240006532500065326000653270003E -S31540020EB065328000653290006532A0006532B0002E -S31540020EC06532C0006532D0006532E0006532F0001E -S31540020ED0653300006533100065332000653330000A -S31540020EE065334000653350006533600065337000FA -S31540020EF065338000653390006533A0006533B000EA -S31540020F006533C0006533D0006533E0006533F000D9 -S31540020F1065340000653410006534200065343000C5 -S31540020F2065344000653450006534600065347000B5 -S31540020F3065348000653490006534A0006534B000A5 -S31540020F406534C0006534D0006534E0006534F00095 -S31540020F506535000065351000653520006535300081 -S31540020F606535400065355000653560006535700071 -S31540020F7065358000653590006535A0006535B00061 -S31540020F806535C0006535D0006535E0006535F00051 -S31540020F90653600006536100065362000653630003D -S31540020FA0653640006536500065366000653670002D -S31540020FB065368000653690006536A0006536B0001D -S31540020FC06536C0006536D0006536E0006536F0000D -S31540020FD065370000653710006537200065373000F9 -S31540020FE065374000653750006537600065377000E9 -S31540020FF065378000653790006537A0006537B000D9 -S315400210006537C0006537D0006537E0006537F000C8 -S3154002101065380000653810006538200065383000B4 -S3154002102065384000653850006538600065387000A4 -S3154002103065388000653890006538A0006538B00094 -S315400210406538C0006538D0006538E0006538F00084 -S315400210506539000065391000653920006539300070 -S315400210606539400065395000653960006539700060 -S3154002107065398000653990006539A0006539B00050 -S315400210806539C0006539D0006539E0006539F00040 -S31540021090653A0000653A1000653A2000653A30002C -S315400210A0653A4000653A5000653A6000653A70001C -S315400210B0653A8000653A9000653AA000653AB0000C -S315400210C0653AC000653AD000653AE000653AF000FC -S315400210D0653B0000653B1000653B2000653B3000E8 -S315400210E0653B4000653B5000653B6000653B7000D8 -S315400210F0653B8000653B9000653BA000653BB000C8 -S31540021100653BC000653BD000653BE000653BF000B7 -S31540021110653C0000653C1000653C2000653C3000A3 -S31540021120653C4000653C5000653C6000653C700093 -S31540021130653C8000653C9000653CA000653CB00083 -S31540021140653CC000653CD000653CE000653CF00073 -S31540021150653D0000653D1000653D2000653D30005F -S31540021160653D4000653D5000653D6000653D70004F -S31540021170653D8000653D9000653DA000653DB0003F -S31540021180653DC000653DD000653DE000653DF0002F -S31540021190653E0000653E1000653E2000653E30001B -S315400211A0653E4000653E5000653E6000653E70000B -S315400211B0653E8000653E9000653EA000653EB000FB -S315400211C0653EC000653ED000653EE000653EF000EB -S315400211D0653F0000653F1000653F2000653F3000D7 -S315400211E0653F4000653F5000653F6000653F7000C7 -S315400211F0653F8000653F9000653FA000653FB000B7 -S31540021200653FC000653FD000653FE000653FF000A6 -S315400212104200000000000000400FFFFFFFFFFFFFFB -S315400212204200000000200000420FFFFFFFFFFFFFC9 -S3154002123040000000000000004210000000080000CC -S3154002124042000000000000013EB000000000000124 -S315400212504200000000000002420F484C0137D2080B -S31540021260C20E780F256007AB41BA079B7AF94BA0AD -S315400212704201484C0137D208420E780F256007AB2F -S315400212804217E02D934BECDA420F484C0137D20815 -S31540021290C21E780F256007ABC20DA7D249883D4EC4 -S315400212A0421F484C0137D208C20E780F256007AB61 -S315400212B042100C446E87CE32C03340AB371208918F -S315400212C00000000000000000C03340AB3712089116 -S315400212D00000000000000000C29E7A0F236007A6AD -S315400212E0C29E7A0F236007A66F3F484C0137D20849 -S315400212F06E2E780F256007AB6F3F485B3D3F64B863 -S315400213006F3F484C0137D208EE2E780F256007AB67 -S315400213106F3F483CC5303F587FE2F780AB123809F1 -S315400213207FD00000000000007FEAF780AB12380948 -S31540021330002000000000000080280000000000009D -S3154002134080100000000000007FEFF780AB123809E2 -S315400213507FEFF2010203A1117FF0000000000000BE -S315400213600010000000001000801FFFFFF203A111D1 -S315400213708000000000000000001ABCD000023809BC -S31540021380801ABCD0000001110000000000000000DD -S315400213907E71000000000000416010000000000065 -S315400213A07FE11100000000000178100000000000FB -S315400213B03E880000FFF0000000120C00C073F800E7 -S315400213C0C1EFFFFFC00020003FB3C75D224F280F89 -S315400213D0C1B3C75CFAC08192A12FFF8000001FFFF4 -S315400213E03EE0000000FF0000A01FFF8001FE18073C -S315400213F041CFFFFE0000002040303FFFFFFFFFFDD0 -S3154002140042103FFEFC00000D3FD000003FEFFFFFC1 -S31540021410BFD0000010000000BFB000004FF0003FF8 -S3154002142001701000000000003E8000011A0000001A -S3154002143000000000000000007E7C0000000000006A -S31540021440416A1000010000107FF000000000000019 -S3154002145075012034056AC000FA1009091000104FC0 -S31540021460FFF00000000000000100203040030200AF -S31540021470003020340000A00B0000000000000000F5 -S315400214807FE0001010200001400000000010200AFA -S315400214907FF00000000000003FEFDFF00FFC484AFB -S315400214A0BFF80000000000007FFF000000000000BF -S315400214B07FFFE000000000007FF400000000000013 -S315400214C07FC00000000000007FF80000000000001E -S315400214D07FF0000000000000FFF000000000000066 -S315400214E0FFF0000000000000800000000000000045 -S315400214F000000000000100000000000000000000A3 +S315400200D000000000000000000000000000000001D7 +S315400200E00000000100000000BF8000000000000088 +S315400200F0BFF0000000000000800000000000000089 +S315400201000000000000000000400000000000000067 +S3154002011040080000000000004018000000000000F7 +S315400201200000000000000000000000000000000087 +S3154002013000000000000000003FF000000000000048 +S3154002014040080000000000003FF0000040000000B0 +S3154002015000000000000000003F8000004040000018 +S315400201600000000000000000000000000000000047 +S315400201700000000000000000000000000000000037 +S315400201804800000100000000480000000000000096 +S3154002019046C00000000000003FF0000000000000E2 +S315400201A0400000000000000040080000000000007F +S315400201B03F80000000000000000000000001000037 +S315400201C08000000000000000FFF000000000000078 +S315400201D0FFF00000000000007FF000000000000079 +S315400201E07FF80000000000007FC000000000000011 +S315400201F07FF40000000000007FFFE00000000000E6 +S315400202007FFF000000000000BFF800000000000071 +S315400202103FEFDFF00FFC484A7E710000000000000D +S3154002022041601000000000007FE111000000000064 +S3154002023001781000000000003E880000FFF0000038 +S3154002024000120C00C073F800C1EFFFFFC00020008F +S315400202503FB3C75D224F280FC1B3C75CFAC0819234 +S31540020260A12FFF8000001FFF3EE0000000FF0000BC +S31540020270A01FFF8001FE180741CFFFFE00000020AD +S3154002028040303FFFFFFFFFFD42103FFEFC00000DE6 +S315400202903FD000003FEFFFFFBFD00000100000003C +S315400202A0BFB000004FF0003F017010000000000098 +S315400202B03E8000011A00000000000000000000001D +S315400202C07E7C000000000000416A10000100001020 +S315400202D07FF000000000000075012034056AC0006E +S315400202E0FA1009091000104FFFF00000000000004C +S315400202F00100203040030200003020340000A00BF1 +S3154002030000000000000000007FE000101020000105 +S31540020310400000000010200A7FF0000000000000AC +S315400203204200000000000000400FFFFFFFFFFFFFFA +S315400203304200000000200000420FFFFFFFFFFFFFC8 +S3154002034040000000000000004210000000080000CB +S3154002035042000000000000013EB000000000000123 +S315400203604200000000000002420F484C0137D2080A +S31540020370C20E780F256007AB41BA079B7AF94BA0AC +S315400203804201484C0137D208420E780F256007AB2E +S315400203904217E02D934BECDA420F484C0137D20814 +S315400203A0C21E780F256007ABC20DA7D249883D4EC3 +S315400203B0421F484C0137D208C20E780F256007AB60 +S315400203C042100C446E87CE32C03340AB371208918E +S315400203D00000000000000000C03340AB3712089115 +S315400203E00000000000000000C29E7A0F236007A6AC +S315400203F0C29E7A0F236007A66F3F484C0137D20848 +S315400204006E2E780F256007AB6F3F485B3D3F64B861 +S315400204106F3F484C0137D208EE2E780F256007AB66 +S315400204206F3F483CC5303F587FE2F780AB123809F0 +S315400204307FD00000000000007FEAF780AB12380947 +S31540020440002000000000000080280000000000009C +S3154002045080100000000000007FEFF780AB123809E1 +S315400204607FEFF2010203A1117FF0000000000000BD +S315400204700010000000001000801FFFFFF203A111D0 +S315400204808000000000000000001ABCD000023809BB +S31540020490801ABCD0000001110000000000000000DC +S315400204A06530000065301000653020006530300050 +S315400204B06530400065305000653060006530700040 +S315400204C065308000653090006530A0006530B00030 +S315400204D06530C0006530D0006530E0006530F00020 +S315400204E0653100006531100065312000653130000C +S315400204F065314000653150006531600065317000FC +S3154002050065318000653190006531A0006531B000EB +S315400205106531C0006531D0006531E0006531F000DB +S3154002052065320000653210006532200065323000C7 +S3154002053065324000653250006532600065327000B7 +S3154002054065328000653290006532A0006532B000A7 +S315400205506532C0006532D0006532E0006532F00097 +S315400205606533000065331000653320006533300083 +S315400205706533400065335000653360006533700073 +S3154002058065338000653390006533A0006533B00063 +S315400205906533C0006533D0006533E0006533F00053 +S315400205A0653400006534100065342000653430003F +S315400205B0653440006534500065346000653470002F +S315400205C065348000653490006534A0006534B0001F +S315400205D06534C0006534D0006534E0006534F0000F +S315400205E065350000653510006535200065353000FB +S315400205F065354000653550006535600065357000EB +S3154002060065358000653590006535A0006535B000DA +S315400206106535C0006535D0006535E0006535F000CA +S3154002062065360000653610006536200065363000B6 +S3154002063065364000653650006536600065367000A6 +S3154002064065368000653690006536A0006536B00096 +S315400206506536C0006536D0006536E0006536F00086 +S315400206606537000065371000653720006537300072 +S315400206706537400065375000653760006537700062 +S3154002068065378000653790006537A0006537B00052 +S315400206906537C0006537D0006537E0006537F00042 +S315400206A0653800006538100065382000653830002E +S315400206B0653840006538500065386000653870001E +S315400206C065388000653890006538A0006538B0000E +S315400206D06538C0006538D0006538E0006538F000FE +S315400206E065390000653910006539200065393000EA +S315400206F065394000653950006539600065397000DA +S3154002070065398000653990006539A0006539B000C9 +S315400207106539C0006539D0006539E0006539F000B9 +S31540020720653A0000653A1000653A2000653A3000A5 +S31540020730653A4000653A5000653A6000653A700095 +S31540020740653A8000653A9000653AA000653AB00085 +S31540020750653AC000653AD000653AE000653AF00075 +S31540020760653B0000653B1000653B2000653B300061 +S31540020770653B4000653B5000653B6000653B700051 +S31540020780653B8000653B9000653BA000653BB00041 +S31540020790653BC000653BD000653BE000653BF00031 +S315400207A0653C0000653C1000653C2000653C30001D +S315400207B0653C4000653C5000653C6000653C70000D +S315400207C0653C8000653C9000653CA000653CB000FD +S315400207D0653CC000653CD000653CE000653CF000ED +S315400207E0653D0000653D1000653D2000653D3000D9 +S315400207F0653D4000653D5000653D6000653D7000C9 +S31540020800653D8000653D9000653DA000653DB000B8 +S31540020810653DC000653DD000653DE000653DF000A8 +S31540020820653E0000653E1000653E2000653E300094 +S31540020830653E4000653E5000653E6000653E700084 +S31540020840653E8000653E9000653EA000653EB00074 +S31540020850653EC000653ED000653EE000653EF00064 +S31540020860653F0000653F1000653F2000653F300050 +S31540020870653F4000653F5000653F6000653F700040 +S31540020880653F8000653F9000653FA000653FB00030 +S31540020890653FC000653FD000653FE000653FF00020 +S315400208A00BC0A4068F346C9B0BC093731C18544721 +S315400208B00BC083008E183C230BC072AE83A9704ACC +S315400208C00BC0627C9CC166FF0BC0526A7ACE64A49E +S315400208D00BC04277C0B04ADA0BC032A412B191A023 +S315400208E00BC022EF168069500BC01358732804734D +S315400208F00BC003DFD10A08480BBFE909B3B0463241 +S315400209000BBFCA8E711B8E880BBFAC4D32D41430CE +S315400209100BBF8E4553D34B1B0BBF7076318237EFDD +S315400209200BBF52DF2BADF99C0BBF357FA47C936C7A +S315400209300BBF18570061F5EB0BBEFB64A6154515B8 +S315400209400BBEDEA7FE865A2B0BBEC22074D37FBCDB +S315400209500BBEA5CD763F66690BBE89AE722750F0B7 +S315400209600BBE6DC2D9F976230BBE520A212B976C68 +S315400209700BBE3683BD31CAA20BBE1B2F257575CA67 +S315400209800BBE000BD34C7BAF0BBDE51941F097FE76 +S315400209900BBDCA56EE76E9D00BBDAFC457C7AB7393 +S315400209A00BBD9560FE9616690BBD7B2C655872751C +S315400209B00BBD612610404EC00BBD474D8532E40942 +S315400209C00BBD2DA24BC19EDF0BBD1423ED22D101DF +S315400209D00BBCFAD1F42A88E40BBCE1ABED438E8022 +S315400209E00BBCC8B1666884820BBCAFE1EF1D2D011A +S315400209F00BBC973D1867D0EF0BBC7EC274CAC96266 +S31540020A000BBC6671983E29FE0BBC4E4A18298BA92F +S31540020A100BBC364B8B5DF6DB0BBC1E758A0FECBFEF +S31540020A200BBC06C7ADD18E7E0BBBEF41918CE1F676 +S31540020A300BBBD7E2D17E33360BBBC0AB0B2E921B20 +S31540020A400BBBA999DD6E6B650BBB92AEE8503CA71A +S31540020A500BBB7BE9CD2362720BBB654A2E6F002C22 +S31540020A600BBB4ECFAFED00FE0BBB3879F685313F5F +S31540020A700BBB2248A8486FDE0BBB0C3B6C6BF73BAB +S31540020A800BBAF651EB44BCEE0BBAE08BCE42E7F121 +S31540020A900BBACAE8BFED5CC00BBAB5686BDD5EDD6A +S31540020AA00BBAA00A7EBA475E0BBA8ACEA6354FEB80 +S31540020AB00BBA75B4910571DB0BBA60BBEEE358EF26 +S31540020AC00BBA4BE4708569410BBA372DC79BD7FEEB +S31540020AD00BBA2297A6CCD68C0BBA0E21C1B0CFA0A8 +S31540020AE00BB9F9CBCCCEB6050BB9E5957D98648B9F +S31540020AF00BB9D17E8A670EE70BB9BD86AA77C310BA +S31540020B000BB9A9AD95E7FAC40BB995F305B23CE525 +S31540020B100BB98256B3AACE570BB96ED85A7C720617 +S31540020B200BB95B77B5A537C80BB94834817359CC35 +S31540020B300BB9350E7B02284D0BB922056037032EC1 +S31540020B400BB90F18EFBE614A0BB8FC48E908E5221B +S31540020B500BB8E9950C487EA90BB8D6FD1A6D99E8F3 +S31540020B600BB8C480D5245A340BB8B21FFED1E1BCAF +S31540020B700BB89FDA5A91A5260BB88DAFAC32CB0A89 +S31540020B800BB87B9FB83596F60BB869AA43C8DFE126 +S31540020B900BB857CF14C791B50BB8460DF1B639C647 +S31540020BA00BB83466A1C09DF90BB822D8ECB75E6E7D +S31540020BB00BB811649B0DA16B0BB8000975D6C959C8 +S31540020BC00BB7EEC746C434A50BB7DD9DD8230752F3 +S31540020BD00BB7CC8CF4D9FE010BB7BB9468674A506D +S31540020BE00BB7AAB3FEDE78540BB799EB84E65D0CDD +S31540020BF00BB7893AC7B70D960BB778A19517DF01A0 +S31540020C000BB7681FBB5D6E910BB757B50967B24C00 +S31540020C100BB747614EA011A20BB737245AF7861479 +S31540020C200BB726FDFEE4C3A00BB716EE0B6268E8CF +S31540020C300BB706F451ED36CE0BB6F710A4824F80B1 +S31540020C400BB6E742D59D7CB40BB6D78AB8377D0E34 +S31540020C500BB6C7E81FC458720BB6B85AE031BB325E +S31540020C600BB6A8E2CDE557F90BB6997FBDBB504509 +S31540020C700BB68A318504A35C0BB67AF7F985A39B3A +S31540020C800BB66BD2F17471FF0BB65CC243777FCE63 +S31540020C900BB64DC5C6A416420BB63EDD527CE411D8 +S31540020CA00BB63008BEF090CF0BB62147E45855EB51 +S31540020CB00BB6129A9B769D520BB60400BD75A5845F +S31540020CC00BB5F57A23E62B070BB5E706A8BE172C1C +S31540020CD00BB5D8A6265733FF0BB5CA58776DE54BE9 +S31540020CE00BB5BC1D771FE6AB0BB5ADF500EB0E7829 +S31540020CF00BB59FDEF0AC15940BB591DB229D63F2EA +S31540020D000BB583E97355E1C10BB57609BFC7CD3241 +S31540020D100BB5683BE53F94B80BB55A7FC162B5B691 +S31540020D200BB54CD5322E9F7F0BB53F3C15F79AA19A +S31540020D300BB531B44B67B45A0BB5243DB17DAE30D9 +S31540020D400BB516D8278BF18F0BB509838D3787677D +S31540020D500BB4FC3FC27713AE0BB4EF0CA791D4BBD6 +S31540020D600BB4E1EA1D1EA6680BB4D4D8040308E509 +S31540020D700BB4C7D63D722B370BB4BAE4AAEBF9488B +S31540020D800BB4AE032E3C2D7E0BB4A131A97965C9B5 +S31540020D900BB4946FFF043C1C0BB487BE11866236BB +S31540020DA00BB47B1BC3F1C0BF0BB46E88F97F999B12 +S31540020DB00BB4620595AFAD730BB455917C47645441 +S31540020DC00BB4492C9150F96C0BB43CD6B91AA9C84C +S31540020DD00BB4308FD835E60B0BB42457D37687162F +S31540020DE00BB4182E8FF205900BB40C13F2FEB43BE3 +S31540020DF00BB40007E232FD1F0BB3F40A4364A1674A +S31540020E000BB3E81AFCA7FBF00BB3DC39F44F468A66 +S31540020E100BB3D06710E9E1C30BB3C4A239439F4F6A +S31540020E200BB3B8EB54640EF10BB3AD42498DCDDF33 +S31540020E300BB3A1A7003DD89B0BB39619602ADF2BB3 +S31540020E400BB38A9951449BB80BB37F26BBB32B791C +S31540020E500BB373C187D669EA0BB368699E454E44A4 +S31540020E600BB35D1EE7CD4B2D0BB351E14D71B098DF +S31540020E700BB346B0B86B0FC30BB33B8D1226A15AC8 +S31540020E800BB330764445ADAC0BB3256C389CF6EBD0 +S31540020E900BB31A6ED934256E0BB30F7E104535F55A +S31540020EA00BB30499C83BE9D60BB2F9C1EBB539236A +S31540020EB00BB2EEF6657EC6AA0BB2E437209655D53E +S31540020EC00BB2D984082942630BB2CEDD0793F9E708 +S31540020ED00BB2C4420A6177190BB2B9B2FC4ABEDA06 +S31540020EE00BB2AF2FC9365EFF0BB2A4B85D37EEC167 +S31540020EF00BB29A4CA48F90E30BB28FEC8BA9777905 +S31540020F000BB28597FF1D694D0BB27B4EEBAE48DDAA +S31540020F100BB271113E499CEE0BB266DEE4071AA88B +S31540020F200BB25CB7CA2831380BB2529BDE1796F722 +S31540020F300BB2488B0D68D8030BB23E8545D7E65AAD +S31540020F400BB2348A7548AB540BB22A9A89C69A9721 +S31540020F500BB220B5718446610BB216DB1ADAF53F45 +S31540020F600BB20D0B744A39100BB203466C77876C81 +S31540020F700BB1F98BF22DD3490BB1EFDBF45D27FFB1 +S31540020F800BB1E636621A457E0BB1DC9B2A9E3DD5F5 +S31540020F900BB1D30A3D4613EE0BB1C98389925B81ED +S31540020FA00BB1C006FF26DA3F0BB1B6948DCA2A288A +S31540020FB00BB1AD2C25655D0F0BB1A3CDB603A13D9B +S31540020FC00BB19A792FD1E7410BB1912E831E88D26C +S31540020FD00BB187EDA058F0D60BB17EB678114473AB +S31540020FE00BB17588FAF80D3A0BB16C6519DDE45D03 +S31540020FF00BB1634AC5B31EEF0BB15A39EF877B2853 +S315400210000BB151328889CEAE0BB148348207B5DB7B +S315400210100BB13F3FCD6D43FF0BB136545C44B49A9E +S315400210200BB12D7220361D870BB124990B07221B5B +S315400210300BB11BC90E9AA72D0BB113021CF0880FD8 +S315400210400BB10A4428254C650BB1018F2271DEE5AE +S315400210500BB0F8E2FE2B44F40BB0F03FADC257237F +S315400210600BB0E7A523C37A850BB0DF1352D65AD904 +S315400210700BB0D68A2DBDA58C0BB0CE09A756C58915 +S315400210800BB0C591B2999FDB0BB0BD224298511568 +S315400210900BB0B4BB4A7EEB870BB0AC5CBD93363625 +S315400210A0529000000000000052900FF807F60DEB38 +S315400210B052901FE03F61BAD052902FB8D4E30F4806 +S315400210C052903F81F636B80C52904F3BD03C0A6460 +S315400210D052905EE68EFAD48B52906E825DA8FC2BBD +S315400210E052907E0F66AFED0752908D8DD3B1D9AA3D +S315400210F052909CFDCD8ED0095290AC5F7C69A3C8BC +S315400211005290BBB307ACAFDB5290CAF8960E710D44 +S315400211105290DA304D95FB065290E95A539F492C2C +S315400211205290F876CCDF6CD952910785DD689A29C0 +S3154002113052911687A8AE14A35291257C5187FD0978 +S3154002114052913463FA37014E5291433EC467EFFBE4 +S315400211505291520CD1372FEB529160CE41341D74CD +S3154002116052916F8334644DF952917E2BCA46BAB975 +S3154002117052918CC821D6D3E352919B58598F7C9F6A +S315400211805291A9DC8F6DF1045291B854E0F496A0C5 +S315400211905291C6C16B2DB8705291D5224AAE2EE1FC +S315400211A05291E3779B97F4A85291F1C1799CA8FF9B +S315400211B0529200000000000052920E33499A21A931 +S315400211C052921C5B70D9F82452922A788FC76DE5E9 +S315400211D05292388AC0059C28529246921AD4EA49BB +S315400211E05292548EB9151E8552926280B3476096CA +S315400211F05292706821902E9A52927E451BB944C3F0 +S3154002120052928C17B9337834529299E011188575F7 +S315400212105292A79E3A2CD2E65292B5524AE1278E74 +S315400212205292C2FC595456A75292D09C7B54E03EED +S315400212305292DE32C66287415292EBBF4FAFDD4BCE +S315400212405292F9422C23C47E529306BB705AE7C38C +S315400212505293142B30A929AB52932191811B0A41F7 +S3154002126052932EEE7577041652933C42213EE0C9C4 +S315400212705293498C97B10540529356CDEBC9B5E28C +S31540021280529364063044530652937135779C8DCB04 +S3154002129052937E5BD40F95A152938B79579D3EAB69 +S315400212A05293988E1409212E5293A59A1ADBB2575D +S315400212B05293B29D7D6356625293BF984CB56C77FA +S315400212C05293CC8A99AF54535293D97474F76DF2B0 +S315400212D05293E655EEFE13675293F32F17FE8D0493 +S315400212E0529400000000000052940CC8B6D657C271 +S315400212F0529419894C2329F052942641CF5695721D +S31540021300529432F24FB01C7A52943F9ADC3F79CED5 +S3154002131052944C3B83E57153529458D455549C1A7B +S31540021320529465655F122FF6529471EEAF76C2C63D +S3154002133052947E7054AF098952948AEA5CBC935F98 +S315400213405294975CD57680885294A3C7CC8A358AC4 +S315400213505294B02B4F7C0A885294BC876BA7F6EC0A +S315400213605294C8DC2E4239805294D529A457FCFCAB +S315400213705294E16FDACFF9375294EDAEDE6B10FE3E +S315400213805294F9E6BBC4ECB3529506177F5491BB0F +S3154002139052951241356CF6E052951E63EA3D95B080 +S315400213A052952A7FA9D2F8EA529536948017481068 +S315400213B0529542A278D2D03652954EA99FAC8A0F08 +S315400213C052955AAA002A9D5A529566A3A5B2E1B1F0 +S315400213D0529572969B8B5CD852957E82ECDABE8D84 +S315400213E052958A68A4A8D9F352959647CDDF1CA593 +S315400213F05295A220734903775295ADF29F948CFB86 +S315400214005295B9BE5D52A9DA5295C583B6F7AB037A +S315400214105295D142B6DBADC55295DCFB673B05DF43 +S315400214205295E8ADD236A58F5295F45A01D483B47B +S31540021430529600000000000052960B9FD68A4554F1 +S31540021440529617398F2AAA48529622CD337F0FE8F1 +S3154002145052962E5ACD0C3EBE529639E2653E421BFC +S31540021460529645640568C1C3529650DFB6C759F4D1 +S3154002147052965C55827DF1D2529667C57199104B50 +S315400214805296732F8D0E2F7752967E93DDBC0E7336 +S31540021490529689F26C6B01D05296954B41CD42934E +S315400214A000000000000000000000000000000000F4 +S315400214B000000000000000000000000000000000E4 +S315400214C000000000000000000000000000000000D4 +S315400214D000000000000000000000000000000000C4 +S315400214E000000000000000000000000000000000B4 +S315400214F000000000000000000000000000000000A4 S315400215000000000000000000000000000000000093 S315400215100000000000000000000000000000000083 S315400215200000000000000000000000000000000073 @@ -9052,8 +10239,8 @@ S31540027FC00000000000000000000000000000000069 S31540027FD00000000000000000000000000000000059 S31540027FE00000000000000000000000000000000049 S31540027FF00000000000000000000000000000000039 -S315400280000000003F0000000C0000003F000000128C -S31540028010000000FF00000018000000000000000001 +S315400280000000000000000000000000000000000028 +S315400280100000000000000000000000000000000018 S315400280200000000000000000000000000000000008 S3154002803000000000000000000000000000000000F8 S3154002804000000000000000000000000000000000E8 @@ -15964,8 +17151,8 @@ S31540042FC000000000000000000000000000000000B7 S31540042FD000000000000000000000000000000000A7 S31540042FE00000000000000000000000000000000097 S31540042FF00000000000000000000000000000000087 -S315400430000000000000000000000000000000000076 -S315400430100000000000000000000000000000000066 +S3154004300000000018000000FF000000120000003F0E +S315400430100000000C0000003F00000000000000001B S315400430200000000000000000000000000000000056 S315400430300000000000000000000000000000000046 S315400430400000000000000000000000000000000036 @@ -17244,44 +18431,44 @@ S31540047FC00000000000000000000000000000000067 S31540047FD00000000000000000000000000000000057 S31540047FE00000000000000000000000000000000047 S31540047FF00000000000000000000000000000000037 -S315400480000000000000000000000000000000000026 -S315400480100000000000000000000000000000000016 -S315400480200000000000000000000000000000000006 -S3154004803000000000000000000000000000000000F6 -S3154004804000000000000000000000000000000000E6 -S3154004805000000000000000000000000000000000D6 -S3154004806000000000000000000000000000000000C6 -S3154004807000000000000000000000000000000000B6 -S3154004808000000000000000000000000000000000A6 -S315400480900000000000000000000000000000000096 -S315400480A00000000000000000000000000000000086 -S315400480B00000000000000000000000000000000076 -S315400480C00000000000000000000000000000000066 -S315400480D00000000000000000000000000000000056 -S315400480E00000000000000000000000000000000046 -S315400480F00000000000000000000000000000000036 -S315400481000000000000000000000000000000000025 -S315400481100000000000000000000000000000000015 -S315400481200000000000000000000000000000000005 -S3154004813000000000000000000000000000000000F5 -S3154004814000000000000000000000000000000000E5 -S3154004815000000000000000000000000000000000D5 -S3154004816000000000000000000000000000000000C5 -S3154004817000000000000000000000000000000000B5 -S3154004818000000000000000000000000000000000A5 -S315400481900000000000000000000000000000000095 -S315400481A00000000000000000000000000000000085 -S315400481B00000000000000000000000000000000075 -S315400481C00000000000000000000000000000000065 -S315400481D00000000000000000000000000000000055 -S315400481E00000000000000000000000000000000045 +S31540048000000000020000000300000000000000031E +S31540048010FFFFFFFEFFFFFFFF00000002FFFFFFFD23 +S315400480200000000000000000000000010000000005 +S3154004803000000000FFFFFFFF0000000000000001F9 +S31540048040FFFFFFFFFFFFFFFFFFFFFFFF00000001F1 +S31540048050FFFFFFFFFFFFFFFE0000000300000000DC +S31540048060FFFFFFFEFFFFFFFD0000000000000009C8 +S315400480700000000700000001FFFFFFF700000002B8 +S31540048080FFFFFFFCFFFFFFF800000002FFFFFFFCBD +S31540048090FFFFFFF8FFFFFFFC00000002000000089E +S315400480A0FFFFFFFCFFFFFFFEFFFFFFF8FFFFFFF8A8 +S315400480B000000001FFFFFFF8FFFFFFF7000000008C +S315400480C00000000B00000002000000050000002F25 +S315400480D0000000020000001700003039000002A72B +S315400480E000000012FFFF076C0000004DFFFFFCC6B6 +S315400480F000003039FFFFFD59FFFFFFEEFFFF076C1D +S31540048100FFFFFFB30000033A00000091FFFFE84180 +S3154004811000000000FFFFFD84FFFED02F000000009A +S315400481200000F6FA006E49810000000000000000DD +S3154004813000000000000000000000000200000003F0 +S3154004814000000000000000000000000100000000E4 +S31540048150FFFFFFFE0000000355555554FFFFFFFE89 +S315400481600000000355555554700FFFFE00000007EC +S315400481701002492400000000000000000000000036 +S315400481800000000200000003000000060000000298 +S31540048190FFFFFFFDFFFFFFFA0000000000000001A3 +S315400481A00000000000000000FFFFFFFF0000000089 +S315400481B000000001FFFFFFFFFFFFFFFFFFFFFFFF80 +S315400481C000000001FFFFFFFFFFFFFFFE000000036A +S315400481D0FFFFFFFAFFFFFFFEFFFFFFFD0000000663 +S315400481E0000000000000000000000009FFFFF0004E S315400481F00000000000000000000000000000000035 -S315400482000000000000000000000000000000000024 +S31540048200000000000000000100000002000000031E S315400482100000000000000000000000000000000014 -S315400482200000000000000000000000000000000004 -S3154004823000000000000000000000000000000000F4 +S315400482204004822800000000000000004004851439 +S31540048230400485E0400486AC0000000000000000D5 S3154004824000000000000000000000000000000000E4 -S3154004825000000000000000000000000000000000D4 +S315400482500000000000000000000000004001C0983B S3154004826000000000000000000000000000000000C4 S3154004827000000000000000000000000000000000B4 S3154004828000000000000000000000000000000000A4 @@ -17289,8 +18476,8 @@ S315400482900000000000000000000000000000000094 S315400482A00000000000000000000000000000000084 S315400482B00000000000000000000000000000000074 S315400482C00000000000000000000000000000000064 -S315400482D00000000000000000000000000000000054 -S315400482E00000000000000000000000000000000044 +S315400482D00000000000000001330EABCD1234E66D01 +S315400482E0DEEC0005000B000000000000000000006A S315400482F00000000000000000000000000000000034 S315400483000000000000000000000000000000000023 S315400483100000000000000000000000000000000013 @@ -17364,72 +18551,72 @@ S3154004874000000000000000000000000000000000DF S3154004875000000000000000000000000000000000CF S3154004876000000000000000000000000000000000BF S3154004877000000000000000000000000000000000AF -S31540048780000000000000000000000000000000009F -S31540048790000000000000000000000000000000008F -S315400487A0000000000000000000000000000000007F -S315400487B0000000000000000000000000000000006F -S315400487C0000000000000000000000000000000005F -S315400487D0000000000000000000000000000000004F -S315400487E0000000000000000000000000000000003F -S315400487F0000000000000000000000000000000002F -S31540048800000000000000000000000000000000001E -S31540048810000000000000000000000000000000000E -S3154004882000000000000000000000000000000000FE -S3154004883000000000000000000000000000000000EE -S3154004884000000000000000000000000000000000DE -S3154004885000000000000000000000000000000000CE -S3154004886000000000000000000000000000000000BE -S3154004887000000000000000000000000000000000AE -S31540048880000000000000000000000000000000009E -S31540048890000000000000000000000000000000008E -S315400488A0000000000000000000000000000000007E -S315400488B0000000000000000000000000000000006E -S315400488C0000000000000000000000000000000005E -S315400488D0000000000000000000000000000000004E -S315400488E0000000000000000000000000000000003E -S315400488F0000000000000000000000000000000002E -S31540048900000000000000000000000000000000001D -S31540048910000000000000000000000000000000000D -S3154004892000000000000000000000000000000000FD -S3154004893000000000000000000000000000000000ED -S3154004894000000000000000000000000000000000DD -S3154004895000000000000000000000000000000000CD -S3154004896000000000000000000000000000000000BD -S3154004897000000000000000000000000000000000AD -S31540048980000000000000000000000000000000009D -S31540048990000000000000000000000000000000008D -S315400489A0000000000000000000000000000000007D -S315400489B0000000000000000000000000000000006D -S315400489C0000000000000000000000000000000005D -S315400489D0000000000000000000000000000000004D -S315400489E0000000000000000000000000000000003D -S315400489F0000000000000000000000000000000002D -S31540048A00000000000000000000000000000000001C -S31540048A10000000000000000000000000000000000C -S31540048A2000000000000000000000000000000000FC -S31540048A3000000000000000000000000000000000EC -S31540048A4000000000000000000000000000000000DC -S31540048A5000000000000000000000000000000000CC -S31540048A6000000000000000000000000000000000BC -S31540048A7000000000000000000000000000000000AC -S31540048A80000000000000000000000000000000009C -S31540048A90000000000000000000000000000000008C -S31540048AA0000000000000000000000000000000007C -S31540048AB0000000000000000000000000000000006C -S31540048AC0000000000000000000000000000000005C -S31540048AD0000000000000000000000000000000004C -S31540048AE0000000000000000000000000000000003C -S31540048AF0000000000000000000000000000000002C -S31540048B00000000000000000000000000000000001B -S31540048B10000000000000000000000000000000000B -S31540048B2000000000000000000000000000000000FB -S31540048B3000000000000000000000000000000000EB -S31540048B4000000000000000000000000000000000DB -S31540048B5000000000000000000000000000000000CB -S31540048B6000000000000000000000000000000000BB -S31540048B7000000000000000000000000000000000AB -S31540048B80000000000000000000000000000000009B -S31540048B90000000000000000000000000000000008B +S315400487804004877840048778400487804004878083 +S315400487904004878840048788400487904004879033 +S315400487A04004879840048798400487A0400487A0E3 +S315400487B0400487A8400487A8400487B0400487B093 +S315400487C0400487B8400487B8400487C0400487C043 +S315400487D0400487C8400487C8400487D0400487D0F3 +S315400487E0400487D8400487D8400487E0400487E0A3 +S315400487F0400487E8400487E8400487F0400487F053 +S31540048800400487F8400487F8400488004004880000 +S3154004881040048808400488084004881040048810AE +S31540048820400488184004881840048820400488205E +S31540048830400488284004882840048830400488300E +S3154004884040048838400488384004884040048840BE +S31540048850400488484004884840048850400488506E +S31540048860400488584004885840048860400488601E +S3154004887040048868400488684004887040048870CE +S31540048880400488784004887840048880400488807E +S31540048890400488884004888840048890400488902E +S315400488A04004889840048898400488A0400488A0DE +S315400488B0400488A8400488A8400488B0400488B08E +S315400488C0400488B8400488B8400488C0400488C03E +S315400488D0400488C8400488C8400488D0400488D0EE +S315400488E0400488D8400488D8400488E0400488E09E +S315400488F0400488E8400488E8400488F0400488F04E +S31540048900400488F8400488F84004890040048900FB +S3154004891040048908400489084004891040048910A9 +S315400489204004891840048918400489204004892059 +S315400489304004892840048928400489304004893009 +S3154004894040048938400489384004894040048940B9 +S315400489504004894840048948400489504004895069 +S315400489604004895840048958400489604004896019 +S3154004897040048968400489684004897040048970C9 +S315400489804004897840048978400489804004898079 +S315400489904004898840048988400489904004899029 +S315400489A04004899840048998400489A0400489A0D9 +S315400489B0400489A8400489A8400489B0400489B089 +S315400489C0400489B8400489B8400489C0400489C039 +S315400489D0400489C8400489C8400489D0400489D0E9 +S315400489E0400489D8400489D8400489E0400489E099 +S315400489F0400489E8400489E8400489F0400489F049 +S31540048A00400489F8400489F840048A0040048A00F6 +S31540048A1040048A0840048A0840048A1040048A10A4 +S31540048A2040048A1840048A1840048A2040048A2054 +S31540048A3040048A2840048A2840048A3040048A3004 +S31540048A4040048A3840048A3840048A4040048A40B4 +S31540048A5040048A4840048A4840048A5040048A5064 +S31540048A6040048A5840048A5840048A6040048A6014 +S31540048A7040048A6840048A6840048A7040048A70C4 +S31540048A8040048A7840048A7840048A8040048A8074 +S31540048A9040048A8840048A8840048A9040048A9024 +S31540048AA040048A9840048A9840048AA040048AA0D4 +S31540048AB040048AA840048AA840048AB040048AB084 +S31540048AC040048AB840048AB840048AC040048AC034 +S31540048AD040048AC840048AC840048AD040048AD0E4 +S31540048AE040048AD840048AD840048AE040048AE094 +S31540048AF040048AE840048AE840048AF040048AF044 +S31540048B0040048AF840048AF840048B0040048B00F1 +S31540048B1040048B0840048B0840048B1040048B109F +S31540048B2040048B1840048B1840048B2040048B204F +S31540048B3040048B2840048B2840048B3040048B30FF +S31540048B4040048B3840048B3840048B4040048B40AF +S31540048B5040048B4840048B4840048B5040048B505F +S31540048B6040048B5840048B5840048B6040048B600F +S31540048B7040048B6840048B6840048B7040048B70BF +S31540048B8000020000FFFFFFFF0000000040048B8846 +S31540048B900000000000000000000000000000000289 S31540048BA0000000000000000000000000000000007B S31540048BB0000000000000000000000000000000006B S31540048BC0000000000000000000000000000000005B @@ -17438,2056 +18625,7 @@ S31540048BE0000000000000000000000000000000003B S31540048BF0000000000000000000000000000000002B S31540048C00000000000000000000000000000000001A S31540048C10000000000000000000000000000000000A -S31540048C2000000000000000000000000000000000FA -S31540048C3000000000000000000000000000000000EA -S31540048C4000000000000000000000000000000000DA -S31540048C5000000000000000000000000000000000CA -S31540048C6000000000000000000000000000000000BA -S31540048C7000000000000000000000000000000000AA -S31540048C80000000000000000000000000000000009A -S31540048C90000000000000000000000000000000008A -S31540048CA0000000000000000000000000000000007A -S31540048CB0000000000000000000000000000000006A -S31540048CC0000000000000000000000000000000005A -S31540048CD0000000000000000000000000000000004A -S31540048CE0000000000000000000000000000000003A -S31540048CF0000000000000000000000000000000002A -S31540048D000000000000000000000000000000000019 -S31540048D100000000000000000000000000000000009 -S31540048D2000000000000000000000000000000000F9 -S31540048D3000000000000000000000000000000000E9 -S31540048D4000000000000000000000000000000000D9 -S31540048D5000000000000000000000000000000000C9 -S31540048D6000000000000000000000000000000000B9 -S31540048D7000000000000000000000000000000000A9 -S31540048D800000000000000000000000000000000099 -S31540048D900000000000000000000000000000000089 -S31540048DA00000000000000000000000000000000079 -S31540048DB00000000000000000000000000000000069 -S31540048DC00000000000000000000000000000000059 -S31540048DD00000000000000000000000000000000049 -S31540048DE00000000000000000000000000000000039 -S31540048DF00000000000000000000000000000000029 -S31540048E000000000000000000000000000000000018 -S31540048E100000000000000000000000000000000008 -S31540048E2000000000000000000000000000000000F8 -S31540048E3000000000000000000000000000000000E8 -S31540048E4000000000000000000000000000000000D8 -S31540048E5000000000000000000000000000000000C8 -S31540048E6000000000000000000000000000000000B8 -S31540048E7000000000000000000000000000000000A8 -S31540048E800000000000000000000000000000000098 -S31540048E900000000000000000000000000000000088 -S31540048EA00000000000000000000000000000000078 -S31540048EB00000000000000000000000000000000068 -S31540048EC00000000000000000000000000000000058 -S31540048ED00000000000000000000000000000000048 -S31540048EE00000000000000000000000000000000038 -S31540048EF00000000000000000000000000000000028 -S31540048F000000000000000000000000000000000017 -S31540048F100000000000000000000000000000000007 -S31540048F2000000000000000000000000000000000F7 -S31540048F3000000000000000000000000000000000E7 -S31540048F4000000000000000000000000000000000D7 -S31540048F5000000000000000000000000000000000C7 -S31540048F6000000000000000000000000000000000B7 -S31540048F7000000000000000000000000000000000A7 -S31540048F800000000000000000000000000000000097 -S31540048F900000000000000000000000000000000087 -S31540048FA00000000000000000000000000000000077 -S31540048FB00000000000000000000000000000000067 -S31540048FC00000000000000000000000000000000057 -S31540048FD00000000000000000000000000000000047 -S31540048FE00000000000000000000000000000000037 -S31540048FF00000000000000000000000000000000027 -S315400490000000000000000000000000000000000016 -S315400490100000000000000000000000000000000006 -S3154004902000000000000000000000000000000000F6 -S3154004903000000000000000000000000000000000E6 -S3154004904000000000000000000000000000000000D6 -S3154004905000000000000000000000000000000000C6 -S3154004906000000000000000000000000000000000B6 -S3154004907000000000000000000000000000000000A6 -S315400490800000000000000000000000000000000096 -S315400490900000000000000000000000000000000086 -S315400490A00000000000000000000000000000000076 -S315400490B00000000000000000000000000000000066 -S315400490C00000000000000000000000000000000056 -S315400490D00000000000000000000000000000000046 -S315400490E00000000000000000000000000000000036 -S315400490F00000000000000000000000000000000026 -S315400491000000000000000000000000000000000015 -S315400491100000000000000000000000000000000005 -S3154004912000000000000000000000000000000000F5 -S3154004913000000000000000000000000000000000E5 -S3154004914000000000000000000000000000000000D5 -S3154004915000000000000000000000000000000000C5 -S3154004916000000000000000000000000000000000B5 -S3154004917000000000000000000000000000000000A5 -S315400491800000000000000000000000000000000095 -S315400491900000000000000000000000000000000085 -S315400491A00000000000000000000000000000000075 -S315400491B00000000000000000000000000000000065 -S315400491C00000000000000000000000000000000055 -S315400491D00000000000000000000000000000000045 -S315400491E00000000000000000000000000000000035 -S315400491F00000000000000000000000000000000025 -S315400492000000000000000000000000000000000014 -S315400492100000000000000000000000000000000004 -S3154004922000000000000000000000000000000000F4 -S3154004923000000000000000000000000000000000E4 -S3154004924000000000000000000000000000000000D4 -S3154004925000000000000000000000000000000000C4 -S3154004926000000000000000000000000000000000B4 -S3154004927000000000000000000000000000000000A4 -S315400492800000000000000000000000000000000094 -S315400492900000000000000000000000000000000084 -S315400492A00000000000000000000000000000000074 -S315400492B00000000000000000000000000000000064 -S315400492C00000000000000000000000000000000054 -S315400492D00000000000000000000000000000000044 -S315400492E00000000000000000000000000000000034 -S315400492F00000000000000000000000000000000024 -S315400493000000000000000000000000000000000013 -S315400493100000000000000000000000000000000003 -S3154004932000000000000000000000000000000000F3 -S3154004933000000000000000000000000000000000E3 -S3154004934000000000000000000000000000000000D3 -S3154004935000000000000000000000000000000000C3 -S3154004936000000000000000000000000000000000B3 -S3154004937000000000000000000000000000000000A3 -S315400493800000000000000000000000000000000093 -S315400493900000000000000000000000000000000083 -S315400493A00000000000000000000000000000000073 -S315400493B00000000000000000000000000000000063 -S315400493C00000000000000000000000000000000053 -S315400493D00000000000000000000000000000000043 -S315400493E00000000000000000000000000000000033 -S315400493F00000000000000000000000000000000023 -S315400494000000000000000000000000000000000012 -S315400494100000000000000000000000000000000002 -S3154004942000000000000000000000000000000000F2 -S3154004943000000000000000000000000000000000E2 -S3154004944000000000000000000000000000000000D2 -S3154004945000000000000000000000000000000000C2 -S3154004946000000000000000000000000000000000B2 -S3154004947000000000000000000000000000000000A2 -S315400494800000000000000000000000000000000092 -S315400494900000000000000000000000000000000082 -S315400494A00000000000000000000000000000000072 -S315400494B00000000000000000000000000000000062 -S315400494C00000000000000000000000000000000052 -S315400494D00000000000000000000000000000000042 -S315400494E00000000000000000000000000000000032 -S315400494F00000000000000000000000000000000022 -S315400495000000000000000000000000000000000011 -S315400495100000000000000000000000000000000001 -S3154004952000000000000000000000000000000000F1 -S3154004953000000000000000000000000000000000E1 -S3154004954000000000000000000000000000000000D1 -S3154004955000000000000000000000000000000000C1 -S3154004956000000000000000000000000000000000B1 -S3154004957000000000000000000000000000000000A1 -S315400495800000000000000000000000000000000091 -S315400495900000000000000000000000000000000081 -S315400495A00000000000000000000000000000000071 -S315400495B00000000000000000000000000000000061 -S315400495C00000000000000000000000000000000051 -S315400495D00000000000000000000000000000000041 -S315400495E00000000000000000000000000000000031 -S315400495F00000000000000000000000000000000021 -S315400496000000000000000000000000000000000010 -S315400496100000000000000000000000000000000000 -S3154004962000000000000000000000000000000000F0 -S3154004963000000000000000000000000000000000E0 -S3154004964000000000000000000000000000000000D0 -S3154004965000000000000000000000000000000000C0 -S3154004966000000000000000000000000000000000B0 -S3154004967000000000000000000000000000000000A0 -S315400496800000000000000000000000000000000090 -S315400496900000000000000000000000000000000080 -S315400496A00000000000000000000000000000000070 -S315400496B00000000000000000000000000000000060 -S315400496C00000000000000000000000000000000050 -S315400496D00000000000000000000000000000000040 -S315400496E00000000000000000000000000000000030 -S315400496F00000000000000000000000000000000020 -S31540049700000000000000000000000000000000000F -S3154004971000000000000000000000000000000000FF -S3154004972000000000000000000000000000000000EF -S3154004973000000000000000000000000000000000DF -S3154004974000000000000000000000000000000000CF -S3154004975000000000000000000000000000000000BF -S3154004976000000000000000000000000000000000AF -S31540049770000000000000000000000000000000009F -S31540049780000000000000000000000000000000008F -S31540049790000000000000000000000000000000007F -S315400497A0000000000000000000000000000000006F -S315400497B0000000000000000000000000000000005F -S315400497C0000000000000000000000000000000004F -S315400497D0000000000000000000000000000000003F -S315400497E0000000000000000000000000000000002F -S315400497F0000000000000000000000000000000001F -S31540049800000000000000000000000000000000000E -S3154004981000000000000000000000000000000000FE -S3154004982000000000000000000000000000000000EE -S3154004983000000000000000000000000000000000DE -S3154004984000000000000000000000000000000000CE -S3154004985000000000000000000000000000000000BE -S3154004986000000000000000000000000000000000AE -S31540049870000000000000000000000000000000009E -S31540049880000000000000000000000000000000008E -S31540049890000000000000000000000000000000007E -S315400498A0000000000000000000000000000000006E -S315400498B0000000000000000000000000000000005E -S315400498C0000000000000000000000000000000004E -S315400498D0000000000000000000000000000000003E -S315400498E0000000000000000000000000000000002E -S315400498F0000000000000000000000000000000001E -S31540049900000000000000000000000000000000000D -S3154004991000000000000000000000000000000000FD -S3154004992000000000000000000000000000000000ED -S3154004993000000000000000000000000000000000DD -S3154004994000000000000000000000000000000000CD -S3154004995000000000000000000000000000000000BD -S3154004996000000000000000000000000000000000AD -S31540049970000000000000000000000000000000009D -S31540049980000000000000000000000000000000008D -S31540049990000000000000000000000000000000007D -S315400499A0000000000000000000000000000000006D -S315400499B0000000000000000000000000000000005D -S315400499C0000000000000000000000000000000004D -S315400499D0000000000000000000000000000000003D -S315400499E0000000000000000000000000000000002D -S315400499F0000000000000000000000000000000001D -S31540049A00000000000000000000000000000000000C -S31540049A1000000000000000000000000000000000FC -S31540049A2000000000000000000000000000000000EC -S31540049A3000000000000000000000000000000000DC -S31540049A4000000000000000000000000000000000CC -S31540049A5000000000000000000000000000000000BC -S31540049A6000000000000000000000000000000000AC -S31540049A70000000000000000000000000000000009C -S31540049A80000000000000000000000000000000008C -S31540049A90000000000000000000000000000000007C -S31540049AA0000000000000000000000000000000006C -S31540049AB0000000000000000000000000000000005C -S31540049AC0000000000000000000000000000000004C -S31540049AD0000000000000000000000000000000003C -S31540049AE0000000000000000000000000000000002C -S31540049AF0000000000000000000000000000000001C -S31540049B00000000000000000000000000000000000B -S31540049B1000000000000000000000000000000000FB -S31540049B2000000000000000000000000000000000EB -S31540049B3000000000000000000000000000000000DB -S31540049B4000000000000000000000000000000000CB -S31540049B5000000000000000000000000000000000BB -S31540049B6000000000000000000000000000000000AB -S31540049B70000000000000000000000000000000009B -S31540049B80000000000000000000000000000000008B -S31540049B90000000000000000000000000000000007B -S31540049BA0000000000000000000000000000000006B -S31540049BB0000000000000000000000000000000005B -S31540049BC0000000000000000000000000000000004B -S31540049BD0000000000000000000000000000000003B -S31540049BE0000000000000000000000000000000002B -S31540049BF0000000000000000000000000000000001B -S31540049C00000000000000000000000000000000000A -S31540049C1000000000000000000000000000000000FA -S31540049C2000000000000000000000000000000000EA -S31540049C3000000000000000000000000000000000DA -S31540049C4000000000000000000000000000000000CA -S31540049C5000000000000000000000000000000000BA -S31540049C6000000000000000000000000000000000AA -S31540049C70000000000000000000000000000000009A -S31540049C80000000000000000000000000000000008A -S31540049C90000000000000000000000000000000007A -S31540049CA0000000000000000000000000000000006A -S31540049CB0000000000000000000000000000000005A -S31540049CC0000000000000000000000000000000004A -S31540049CD0000000000000000000000000000000003A -S31540049CE0000000000000000000000000000000002A -S31540049CF0000000000000000000000000000000001A -S31540049D000000000000000000000000000000000009 -S31540049D1000000000000000000000000000000000F9 -S31540049D2000000000000000000000000000000000E9 -S31540049D3000000000000000000000000000000000D9 -S31540049D4000000000000000000000000000000000C9 -S31540049D5000000000000000000000000000000000B9 -S31540049D6000000000000000000000000000000000A9 -S31540049D700000000000000000000000000000000099 -S31540049D800000000000000000000000000000000089 -S31540049D900000000000000000000000000000000079 -S31540049DA00000000000000000000000000000000069 -S31540049DB00000000000000000000000000000000059 -S31540049DC00000000000000000000000000000000049 -S31540049DD00000000000000000000000000000000039 -S31540049DE00000000000000000000000000000000029 -S31540049DF00000000000000000000000000000000019 -S31540049E000000000000000000000000000000000008 -S31540049E1000000000000000000000000000000000F8 -S31540049E2000000000000000000000000000000000E8 -S31540049E3000000000000000000000000000000000D8 -S31540049E4000000000000000000000000000000000C8 -S31540049E5000000000000000000000000000000000B8 -S31540049E6000000000000000000000000000000000A8 -S31540049E700000000000000000000000000000000098 -S31540049E800000000000000000000000000000000088 -S31540049E900000000000000000000000000000000078 -S31540049EA00000000000000000000000000000000068 -S31540049EB00000000000000000000000000000000058 -S31540049EC00000000000000000000000000000000048 -S31540049ED00000000000000000000000000000000038 -S31540049EE00000000000000000000000000000000028 -S31540049EF00000000000000000000000000000000018 -S31540049F000000000000000000000000000000000007 -S31540049F1000000000000000000000000000000000F7 -S31540049F2000000000000000000000000000000000E7 -S31540049F3000000000000000000000000000000000D7 -S31540049F4000000000000000000000000000000000C7 -S31540049F5000000000000000000000000000000000B7 -S31540049F6000000000000000000000000000000000A7 -S31540049F700000000000000000000000000000000097 -S31540049F800000000000000000000000000000000087 -S31540049F900000000000000000000000000000000077 -S31540049FA00000000000000000000000000000000067 -S31540049FB00000000000000000000000000000000057 -S31540049FC00000000000000000000000000000000047 -S31540049FD00000000000000000000000000000000037 -S31540049FE00000000000000000000000000000000027 -S31540049FF00000000000000000000000000000000017 -S3154004A0000000000000000000000000000000000006 -S3154004A01000000000000000000000000000000000F6 -S3154004A02000000000000000000000000000000000E6 -S3154004A03000000000000000000000000000000000D6 -S3154004A04000000000000000000000000000000000C6 -S3154004A05000000000000000000000000000000000B6 -S3154004A06000000000000000000000000000000000A6 -S3154004A0700000000000000000000000000000000096 -S3154004A0800000000000000000000000000000000086 -S3154004A0900000000000000000000000000000000076 -S3154004A0A00000000000000000000000000000000066 -S3154004A0B00000000000000000000000000000000056 -S3154004A0C00000000000000000000000000000000046 -S3154004A0D00000000000000000000000000000000036 -S3154004A0E00000000000000000000000000000000026 -S3154004A0F00000000000000000000000000000000016 -S3154004A1000000000000000000000000000000000005 -S3154004A11000000000000000000000000000000000F5 -S3154004A12000000000000000000000000000000000E5 -S3154004A13000000000000000000000000000000000D5 -S3154004A14000000000000000000000000000000000C5 -S3154004A15000000000000000000000000000000000B5 -S3154004A16000000000000000000000000000000000A5 -S3154004A1700000000000000000000000000000000095 -S3154004A1800000000000000000000000000000000085 -S3154004A1900000000000000000000000000000000075 -S3154004A1A00000000000000000000000000000000065 -S3154004A1B00000000000000000000000000000000055 -S3154004A1C00000000000000000000000000000000045 -S3154004A1D00000000000000000000000000000000035 -S3154004A1E00000000000000000000000000000000025 -S3154004A1F00000000000000000000000000000000015 -S3154004A2000000000000000000000000000000000004 -S3154004A21000000000000000000000000000000000F4 -S3154004A22000000000000000000000000000000000E4 -S3154004A23000000000000000000000000000000000D4 -S3154004A24000000000000000000000000000000000C4 -S3154004A25000000000000000000000000000000000B4 -S3154004A26000000000000000000000000000000000A4 -S3154004A2700000000000000000000000000000000094 -S3154004A2800000000000000000000000000000000084 -S3154004A2900000000000000000000000000000000074 -S3154004A2A00000000000000000000000000000000064 -S3154004A2B00000000000000000000000000000000054 -S3154004A2C00000000000000000000000000000000044 -S3154004A2D00000000000000000000000000000000034 -S3154004A2E00000000000000000000000000000000024 -S3154004A2F00000000000000000000000000000000014 -S3154004A3000000000000000000000000000000000003 -S3154004A31000000000000000000000000000000000F3 -S3154004A32000000000000000000000000000000000E3 -S3154004A33000000000000000000000000000000000D3 -S3154004A34000000000000000000000000000000000C3 -S3154004A35000000000000000000000000000000000B3 -S3154004A36000000000000000000000000000000000A3 -S3154004A3700000000000000000000000000000000093 -S3154004A3800000000000000000000000000000000083 -S3154004A3900000000000000000000000000000000073 -S3154004A3A00000000000000000000000000000000063 -S3154004A3B00000000000000000000000000000000053 -S3154004A3C00000000000000000000000000000000043 -S3154004A3D00000000000000000000000000000000033 -S3154004A3E00000000000000000000000000000000023 -S3154004A3F00000000000000000000000000000000013 -S3154004A4000000000000000000000000000000000002 -S3154004A41000000000000000000000000000000000F2 -S3154004A42000000000000000000000000000000000E2 -S3154004A43000000000000000000000000000000000D2 -S3154004A44000000000000000000000000000000000C2 -S3154004A45000000000000000000000000000000000B2 -S3154004A46000000000000000000000000000000000A2 -S3154004A4700000000000000000000000000000000092 -S3154004A4800000000000000000000000000000000082 -S3154004A4900000000000000000000000000000000072 -S3154004A4A00000000000000000000000000000000062 -S3154004A4B00000000000000000000000000000000052 -S3154004A4C00000000000000000000000000000000042 -S3154004A4D00000000000000000000000000000000032 -S3154004A4E00000000000000000000000000000000022 -S3154004A4F00000000000000000000000000000000012 -S3154004A5000000000000000000000000000000000001 -S3154004A51000000000000000000000000000000000F1 -S3154004A52000000000000000000000000000000000E1 -S3154004A53000000000000000000000000000000000D1 -S3154004A54000000000000000000000000000000000C1 -S3154004A55000000000000000000000000000000000B1 -S3154004A56000000000000000000000000000000000A1 -S3154004A5700000000000000000000000000000000091 -S3154004A5800000000000000000000000000000000081 -S3154004A5900000000000000000000000000000000071 -S3154004A5A00000000000000000000000000000000061 -S3154004A5B00000000000000000000000000000000051 -S3154004A5C00000000000000000000000000000000041 -S3154004A5D00000000000000000000000000000000031 -S3154004A5E00000000000000000000000000000000021 -S3154004A5F00000000000000000000000000000000011 -S3154004A6000000000000000000000000000000000000 -S3154004A61000000000000000000000000000000000F0 -S3154004A62000000000000000000000000000000000E0 -S3154004A63000000000000000000000000000000000D0 -S3154004A64000000000000000000000000000000000C0 -S3154004A65000000000000000000000000000000000B0 -S3154004A66000000000000000000000000000000000A0 -S3154004A6700000000000000000000000000000000090 -S3154004A6800000000000000000000000000000000080 -S3154004A6900000000000000000000000000000000070 -S3154004A6A00000000000000000000000000000000060 -S3154004A6B00000000000000000000000000000000050 -S3154004A6C00000000000000000000000000000000040 -S3154004A6D00000000000000000000000000000000030 -S3154004A6E00000000000000000000000000000000020 -S3154004A6F00000000000000000000000000000000010 -S3154004A70000000000000000000000000000000000FF -S3154004A71000000000000000000000000000000000EF -S3154004A72000000000000000000000000000000000DF -S3154004A73000000000000000000000000000000000CF -S3154004A74000000000000000000000000000000000BF -S3154004A75000000000000000000000000000000000AF -S3154004A760000000000000000000000000000000009F -S3154004A770000000000000000000000000000000008F -S3154004A780000000000000000000000000000000007F -S3154004A790000000000000000000000000000000006F -S3154004A7A0000000000000000000000000000000005F -S3154004A7B0000000000000000000000000000000004F -S3154004A7C0000000000000000000000000000000003F -S3154004A7D0000000000000000000000000000000002F -S3154004A7E0000000000000000000000000000000001F -S3154004A7F0000000000000000000000000000000000F -S3154004A80000000000000000000000000000000000FE -S3154004A81000000000000000000000000000000000EE -S3154004A82000000000000000000000000000000000DE -S3154004A83000000000000000000000000000000000CE -S3154004A84000000000000000000000000000000000BE -S3154004A85000000000000000000000000000000000AE -S3154004A860000000000000000000000000000000009E -S3154004A870000000000000000000000000000000008E -S3154004A880000000000000000000000000000000007E -S3154004A890000000000000000000000000000000006E -S3154004A8A0000000000000000000000000000000005E -S3154004A8B0000000000000000000000000000000004E -S3154004A8C0000000000000000000000000000000003E -S3154004A8D0000000000000000000000000000000002E -S3154004A8E0000000000000000000000000000000001E -S3154004A8F0000000000000000000000000000000000E -S3154004A90000000000000000000000000000000000FD -S3154004A91000000000000000000000000000000000ED -S3154004A92000000000000000000000000000000000DD -S3154004A93000000000000000000000000000000000CD -S3154004A94000000000000000000000000000000000BD -S3154004A95000000000000000000000000000000000AD -S3154004A960000000000000000000000000000000009D -S3154004A970000000000000000000000000000000008D -S3154004A980000000000000000000000000000000007D -S3154004A990000000000000000000000000000000006D -S3154004A9A0000000000000000000000000000000005D -S3154004A9B0000000000000000000000000000000004D -S3154004A9C0000000000000000000000000000000003D -S3154004A9D0000000000000000000000000000000002D -S3154004A9E0000000000000000000000000000000001D -S3154004A9F0000000000000000000000000000000000D -S3154004AA0000000000000000000000000000000000FC -S3154004AA1000000000000000000000000000000000EC -S3154004AA2000000000000000000000000000000000DC -S3154004AA3000000000000000000000000000000000CC -S3154004AA4000000000000000000000000000000000BC -S3154004AA5000000000000000000000000000000000AC -S3154004AA60000000000000000000000000000000009C -S3154004AA70000000000000000000000000000000008C -S3154004AA80000000000000000000000000000000007C -S3154004AA90000000000000000000000000000000006C -S3154004AAA0000000000000000000000000000000005C -S3154004AAB0000000000000000000000000000000004C -S3154004AAC0000000000000000000000000000000003C -S3154004AAD0000000000000000000000000000000002C -S3154004AAE0000000000000000000000000000000001C -S3154004AAF0000000000000000000000000000000000C -S3154004AB0000000000000000000000000000000000FB -S3154004AB1000000000000000000000000000000000EB -S3154004AB2000000000000000000000000000000000DB -S3154004AB3000000000000000000000000000000000CB -S3154004AB4000000000000000000000000000000000BB -S3154004AB5000000000000000000000000000000000AB -S3154004AB60000000000000000000000000000000009B -S3154004AB70000000000000000000000000000000008B -S3154004AB80000000000000000000000000000000007B -S3154004AB90000000000000000000000000000000006B -S3154004ABA0000000000000000000000000000000005B -S3154004ABB0000000000000000000000000000000004B -S3154004ABC0000000000000000000000000000000003B -S3154004ABD0000000000000000000000000000000002B -S3154004ABE0000000000000000000000000000000001B -S3154004ABF0000000000000000000000000000000000B -S3154004AC0000000000000000000000000000000000FA -S3154004AC1000000000000000000000000000000000EA -S3154004AC2000000000000000000000000000000000DA -S3154004AC3000000000000000000000000000000000CA -S3154004AC4000000000000000000000000000000000BA -S3154004AC5000000000000000000000000000000000AA -S3154004AC60000000000000000000000000000000009A -S3154004AC70000000000000000000000000000000008A -S3154004AC80000000000000000000000000000000007A -S3154004AC90000000000000000000000000000000006A -S3154004ACA0000000000000000000000000000000005A -S3154004ACB0000000000000000000000000000000004A -S3154004ACC0000000000000000000000000000000003A -S3154004ACD0000000000000000000000000000000002A -S3154004ACE0000000000000000000000000000000001A -S3154004ACF0000000000000000000000000000000000A -S3154004AD0000000000000000000000000000000000F9 -S3154004AD1000000000000000000000000000000000E9 -S3154004AD2000000000000000000000000000000000D9 -S3154004AD3000000000000000000000000000000000C9 -S3154004AD4000000000000000000000000000000000B9 -S3154004AD5000000000000000000000000000000000A9 -S3154004AD600000000000000000000000000000000099 -S3154004AD700000000000000000000000000000000089 -S3154004AD800000000000000000000000000000000079 -S3154004AD900000000000000000000000000000000069 -S3154004ADA00000000000000000000000000000000059 -S3154004ADB00000000000000000000000000000000049 -S3154004ADC00000000000000000000000000000000039 -S3154004ADD00000000000000000000000000000000029 -S3154004ADE00000000000000000000000000000000019 -S3154004ADF00000000000000000000000000000000009 -S3154004AE0000000000000000000000000000000000F8 -S3154004AE1000000000000000000000000000000000E8 -S3154004AE2000000000000000000000000000000000D8 -S3154004AE3000000000000000000000000000000000C8 -S3154004AE4000000000000000000000000000000000B8 -S3154004AE5000000000000000000000000000000000A8 -S3154004AE600000000000000000000000000000000098 -S3154004AE700000000000000000000000000000000088 -S3154004AE800000000000000000000000000000000078 -S3154004AE900000000000000000000000000000000068 -S3154004AEA00000000000000000000000000000000058 -S3154004AEB00000000000000000000000000000000048 -S3154004AEC00000000000000000000000000000000038 -S3154004AED00000000000000000000000000000000028 -S3154004AEE00000000000000000000000000000000018 -S3154004AEF00000000000000000000000000000000008 -S3154004AF0000000000000000000000000000000000F7 -S3154004AF1000000000000000000000000000000000E7 -S3154004AF2000000000000000000000000000000000D7 -S3154004AF3000000000000000000000000000000000C7 -S3154004AF4000000000000000000000000000000000B7 -S3154004AF5000000000000000000000000000000000A7 -S3154004AF600000000000000000000000000000000097 -S3154004AF700000000000000000000000000000000087 -S3154004AF800000000000000000000000000000000077 -S3154004AF900000000000000000000000000000000067 -S3154004AFA00000000000000000000000000000000057 -S3154004AFB00000000000000000000000000000000047 -S3154004AFC00000000000000000000000000000000037 -S3154004AFD00000000000000000000000000000000027 -S3154004AFE00000000000000000000000000000000017 -S3154004AFF00000000000000000000000000000000007 -S3154004B00000000000000000000000000000000000F6 -S3154004B01000000000000000000000000000000000E6 -S3154004B02000000000000000000000000000000000D6 -S3154004B03000000000000000000000000000000000C6 -S3154004B04000000000000000000000000000000000B6 -S3154004B05000000000000000000000000000000000A6 -S3154004B0600000000000000000000000000000000096 -S3154004B0700000000000000000000000000000000086 -S3154004B0800000000000000000000000000000000076 -S3154004B0900000000000000000000000000000000066 -S3154004B0A00000000000000000000000000000000056 -S3154004B0B00000000000000000000000000000000046 -S3154004B0C00000000000000000000000000000000036 -S3154004B0D00000000000000000000000000000000026 -S3154004B0E00000000000000000000000000000000016 -S3154004B0F00000000000000000000000000000000006 -S3154004B10000000000000000000000000000000000F5 -S3154004B11000000000000000000000000000000000E5 -S3154004B12000000000000000000000000000000000D5 -S3154004B13000000000000000000000000000000000C5 -S3154004B14000000000000000000000000000000000B5 -S3154004B15000000000000000000000000000000000A5 -S3154004B1600000000000000000000000000000000095 -S3154004B1700000000000000000000000000000000085 -S3154004B1800000000000000000000000000000000075 -S3154004B1900000000000000000000000000000000065 -S3154004B1A00000000000000000000000000000000055 -S3154004B1B00000000000000000000000000000000045 -S3154004B1C00000000000000000000000000000000035 -S3154004B1D00000000000000000000000000000000025 -S3154004B1E00000000000000000000000000000000015 -S3154004B1F00000000000000000000000000000000005 -S3154004B20000000000000000000000000000000000F4 -S3154004B21000000000000000000000000000000000E4 -S3154004B22000000000000000000000000000000000D4 -S3154004B23000000000000000000000000000000000C4 -S3154004B24000000000000000000000000000000000B4 -S3154004B25000000000000000000000000000000000A4 -S3154004B2600000000000000000000000000000000094 -S3154004B2700000000000000000000000000000000084 -S3154004B2800000000000000000000000000000000074 -S3154004B2900000000000000000000000000000000064 -S3154004B2A00000000000000000000000000000000054 -S3154004B2B00000000000000000000000000000000044 -S3154004B2C00000000000000000000000000000000034 -S3154004B2D00000000000000000000000000000000024 -S3154004B2E00000000000000000000000000000000014 -S3154004B2F00000000000000000000000000000000004 -S3154004B30000000000000000000000000000000000F3 -S3154004B31000000000000000000000000000000000E3 -S3154004B32000000000000000000000000000000000D3 -S3154004B33000000000000000000000000000000000C3 -S3154004B34000000000000000000000000000000000B3 -S3154004B35000000000000000000000000000000000A3 -S3154004B3600000000000000000000000000000000093 -S3154004B3700000000000000000000000000000000083 -S3154004B3800000000000000000000000000000000073 -S3154004B3900000000000000000000000000000000063 -S3154004B3A00000000000000000000000000000000053 -S3154004B3B00000000000000000000000000000000043 -S3154004B3C00000000000000000000000000000000033 -S3154004B3D00000000000000000000000000000000023 -S3154004B3E00000000000000000000000000000000013 -S3154004B3F00000000000000000000000000000000003 -S3154004B40000000000000000000000000000000000F2 -S3154004B41000000000000000000000000000000000E2 -S3154004B42000000000000000000000000000000000D2 -S3154004B43000000000000000000000000000000000C2 -S3154004B44000000000000000000000000000000000B2 -S3154004B45000000000000000000000000000000000A2 -S3154004B4600000000000000000000000000000000092 -S3154004B4700000000000000000000000000000000082 -S3154004B4800000000000000000000000000000000072 -S3154004B4900000000000000000000000000000000062 -S3154004B4A00000000000000000000000000000000052 -S3154004B4B00000000000000000000000000000000042 -S3154004B4C00000000000000000000000000000000032 -S3154004B4D00000000000000000000000000000000022 -S3154004B4E00000000000000000000000000000000012 -S3154004B4F00000000000000000000000000000000002 -S3154004B50000000000000000000000000000000000F1 -S3154004B51000000000000000000000000000000000E1 -S3154004B52000000000000000000000000000000000D1 -S3154004B53000000000000000000000000000000000C1 -S3154004B54000000000000000000000000000000000B1 -S3154004B55000000000000000000000000000000000A1 -S3154004B5600000000000000000000000000000000091 -S3154004B5700000000000000000000000000000000081 -S3154004B5800000000000000000000000000000000071 -S3154004B5900000000000000000000000000000000061 -S3154004B5A00000000000000000000000000000000051 -S3154004B5B00000000000000000000000000000000041 -S3154004B5C00000000000000000000000000000000031 -S3154004B5D00000000000000000000000000000000021 -S3154004B5E00000000000000000000000000000000011 -S3154004B5F00000000000000000000000000000000001 -S3154004B60000000000000000000000000000000000F0 -S3154004B61000000000000000000000000000000000E0 -S3154004B62000000000000000000000000000000000D0 -S3154004B63000000000000000000000000000000000C0 -S3154004B64000000000000000000000000000000000B0 -S3154004B65000000000000000000000000000000000A0 -S3154004B6600000000000000000000000000000000090 -S3154004B6700000000000000000000000000000000080 -S3154004B6800000000000000000000000000000000070 -S3154004B6900000000000000000000000000000000060 -S3154004B6A00000000000000000000000000000000050 -S3154004B6B00000000000000000000000000000000040 -S3154004B6C00000000000000000000000000000000030 -S3154004B6D00000000000000000000000000000000020 -S3154004B6E00000000000000000000000000000000010 -S3154004B6F00000000000000000000000000000000000 -S3154004B70000000000000000000000000000000000EF -S3154004B71000000000000000000000000000000000DF -S3154004B72000000000000000000000000000000000CF -S3154004B73000000000000000000000000000000000BF -S3154004B74000000000000000000000000000000000AF -S3154004B750000000000000000000000000000000009F -S3154004B760000000000000000000000000000000008F -S3154004B770000000000000000000000000000000007F -S3154004B780000000000000000000000000000000006F -S3154004B790000000000000000000000000000000005F -S3154004B7A0000000000000000000000000000000004F -S3154004B7B0000000000000000000000000000000003F -S3154004B7C0000000000000000000000000000000002F -S3154004B7D0000000000000000000000000000000001F -S3154004B7E0000000000000000000000000000000000F -S3154004B7F000000000000000000000000000000000FF -S3154004B80000000000000000000000000000000000EE -S3154004B81000000000000000000000000000000000DE -S3154004B82000000000000000000000000000000000CE -S3154004B83000000000000000000000000000000000BE -S3154004B84000000000000000000000000000000000AE -S3154004B850000000000000000000000000000000009E -S3154004B860000000000000000000000000000000008E -S3154004B870000000000000000000000000000000007E -S3154004B880000000000000000000000000000000006E -S3154004B890000000000000000000000000000000005E -S3154004B8A0000000000000000000000000000000004E -S3154004B8B0000000000000000000000000000000003E -S3154004B8C0000000000000000000000000000000002E -S3154004B8D0000000000000000000000000000000001E -S3154004B8E0000000000000000000000000000000000E -S3154004B8F000000000000000000000000000000000FE -S3154004B90000000000000000000000000000000000ED -S3154004B91000000000000000000000000000000000DD -S3154004B92000000000000000000000000000000000CD -S3154004B93000000000000000000000000000000000BD -S3154004B94000000000000000000000000000000000AD -S3154004B950000000000000000000000000000000009D -S3154004B960000000000000000000000000000000008D -S3154004B970000000000000000000000000000000007D -S3154004B980000000000000000000000000000000006D -S3154004B990000000000000000000000000000000005D -S3154004B9A0000000000000000000000000000000004D -S3154004B9B0000000000000000000000000000000003D -S3154004B9C0000000000000000000000000000000002D -S3154004B9D0000000000000000000000000000000001D -S3154004B9E0000000000000000000000000000000000D -S3154004B9F000000000000000000000000000000000FD -S3154004BA0000000000000000000000000000000000EC -S3154004BA1000000000000000000000000000000000DC -S3154004BA2000000000000000000000000000000000CC -S3154004BA3000000000000000000000000000000000BC -S3154004BA4000000000000000000000000000000000AC -S3154004BA50000000000000000000000000000000009C -S3154004BA60000000000000000000000000000000008C -S3154004BA70000000000000000000000000000000007C -S3154004BA80000000000000000000000000000000006C -S3154004BA90000000000000000000000000000000005C -S3154004BAA0000000000000000000000000000000004C -S3154004BAB0000000000000000000000000000000003C -S3154004BAC0000000000000000000000000000000002C -S3154004BAD0000000000000000000000000000000001C -S3154004BAE0000000000000000000000000000000000C -S3154004BAF000000000000000000000000000000000FC -S3154004BB0000000000000000000000000000000000EB -S3154004BB1000000000000000000000000000000000DB -S3154004BB2000000000000000000000000000000000CB -S3154004BB3000000000000000000000000000000000BB -S3154004BB4000000000000000000000000000000000AB -S3154004BB50000000000000000000000000000000009B -S3154004BB60000000000000000000000000000000008B -S3154004BB70000000000000000000000000000000007B -S3154004BB80000000000000000000000000000000006B -S3154004BB90000000000000000000000000000000005B -S3154004BBA0000000000000000000000000000000004B -S3154004BBB0000000000000000000000000000000003B -S3154004BBC0000000000000000000000000000000002B -S3154004BBD0000000000000000000000000000000001B -S3154004BBE0000000000000000000000000000000000B -S3154004BBF000000000000000000000000000000000FB -S3154004BC0000000000000000000000000000000000EA -S3154004BC1000000000000000000000000000000000DA -S3154004BC2000000000000000000000000000000000CA -S3154004BC3000000000000000000000000000000000BA -S3154004BC4000000000000000000000000000000000AA -S3154004BC50000000000000000000000000000000009A -S3154004BC60000000000000000000000000000000008A -S3154004BC70000000000000000000000000000000007A -S3154004BC80000000000000000000000000000000006A -S3154004BC90000000000000000000000000000000005A -S3154004BCA0000000000000000000000000000000004A -S3154004BCB0000000000000000000000000000000003A -S3154004BCC0000000000000000000000000000000002A -S3154004BCD0000000000000000000000000000000001A -S3154004BCE0000000000000000000000000000000000A -S3154004BCF000000000000000000000000000000000FA -S3154004BD0000000000000000000000000000000000E9 -S3154004BD1000000000000000000000000000000000D9 -S3154004BD2000000000000000000000000000000000C9 -S3154004BD3000000000000000000000000000000000B9 -S3154004BD4000000000000000000000000000000000A9 -S3154004BD500000000000000000000000000000000099 -S3154004BD600000000000000000000000000000000089 -S3154004BD700000000000000000000000000000000079 -S3154004BD800000000000000000000000000000000069 -S3154004BD900000000000000000000000000000000059 -S3154004BDA00000000000000000000000000000000049 -S3154004BDB00000000000000000000000000000000039 -S3154004BDC00000000000000000000000000000000029 -S3154004BDD00000000000000000000000000000000019 -S3154004BDE00000000000000000000000000000000009 -S3154004BDF000000000000000000000000000000000F9 -S3154004BE0000000000000000000000000000000000E8 -S3154004BE1000000000000000000000000000000000D8 -S3154004BE2000000000000000000000000000000000C8 -S3154004BE3000000000000000000000000000000000B8 -S3154004BE4000000000000000000000000000000000A8 -S3154004BE500000000000000000000000000000000098 -S3154004BE600000000000000000000000000000000088 -S3154004BE700000000000000000000000000000000078 -S3154004BE800000000000000000000000000000000068 -S3154004BE900000000000000000000000000000000058 -S3154004BEA00000000000000000000000000000000048 -S3154004BEB00000000000000000000000000000000038 -S3154004BEC00000000000000000000000000000000028 -S3154004BED00000000000000000000000000000000018 -S3154004BEE00000000000000000000000000000000008 -S3154004BEF000000000000000000000000000000000F8 -S3154004BF0000000000000000000000000000000000E7 -S3154004BF1000000000000000000000000000000000D7 -S3154004BF2000000000000000000000000000000000C7 -S3154004BF3000000000000000000000000000000000B7 -S3154004BF4000000000000000000000000000000000A7 -S3154004BF500000000000000000000000000000000097 -S3154004BF600000000000000000000000000000000087 -S3154004BF700000000000000000000000000000000077 -S3154004BF800000000000000000000000000000000067 -S3154004BF900000000000000000000000000000000057 -S3154004BFA00000000000000000000000000000000047 -S3154004BFB00000000000000000000000000000000037 -S3154004BFC00000000000000000000000000000000027 -S3154004BFD00000000000000000000000000000000017 -S3154004BFE00000000000000000000000000000000007 -S3154004BFF000000000000000000000000000000000F7 -S3154004C00000000000000000000000000000000000E6 -S3154004C01000000000000000000000000000000000D6 -S3154004C02000000000000000000000000000000000C6 -S3154004C03000000000000000000000000000000000B6 -S3154004C04000000000000000000000000000000000A6 -S3154004C0500000000000000000000000000000000096 -S3154004C0600000000000000000000000000000000086 -S3154004C0700000000000000000000000000000000076 -S3154004C0800000000000000000000000000000000066 -S3154004C0900000000000000000000000000000000056 -S3154004C0A00000000000000000000000000000000046 -S3154004C0B00000000000000000000000000000000036 -S3154004C0C00000000000000000000000000000000026 -S3154004C0D00000000000000000000000000000000016 -S3154004C0E00000000000000000000000000000000006 -S3154004C0F000000000000000000000000000000000F6 -S3154004C10000000000000000000000000000000000E5 -S3154004C11000000000000000000000000000000000D5 -S3154004C12000000000000000000000000000000000C5 -S3154004C13000000000000000000000000000000000B5 -S3154004C14000000000000000000000000000000000A5 -S3154004C1500000000000000000000000000000000095 -S3154004C1600000000000000000000000000000000085 -S3154004C1700000000000000000000000000000000075 -S3154004C1800000000000000000000000000000000065 -S3154004C1900000000000000000000000000000000055 -S3154004C1A00000000000000000000000000000000045 -S3154004C1B00000000000000000000000000000000035 -S3154004C1C00000000000000000000000000000000025 -S3154004C1D00000000000000000000000000000000015 -S3154004C1E00000000000000000000000000000000005 -S3154004C1F000000000000000000000000000000000F5 -S3154004C20000000000000000000000000000000000E4 -S3154004C21000000000000000000000000000000000D4 -S3154004C22000000000000000000000000000000000C4 -S3154004C23000000000000000000000000000000000B4 -S3154004C24000000000000000000000000000000000A4 -S3154004C2500000000000000000000000000000000094 -S3154004C2600000000000000000000000000000000084 -S3154004C2700000000000000000000000000000000074 -S3154004C2800000000000000000000000000000000064 -S3154004C2900000000000000000000000000000000054 -S3154004C2A00000000000000000000000000000000044 -S3154004C2B00000000000000000000000000000000034 -S3154004C2C00000000000000000000000000000000024 -S3154004C2D00000000000000000000000000000000014 -S3154004C2E00000000000000000000000000000000004 -S3154004C2F000000000000000000000000000000000F4 -S3154004C30000000000000000000000000000000000E3 -S3154004C31000000000000000000000000000000000D3 -S3154004C32000000000000000000000000000000000C3 -S3154004C33000000000000000000000000000000000B3 -S3154004C34000000000000000000000000000000000A3 -S3154004C3500000000000000000000000000000000093 -S3154004C3600000000000000000000000000000000083 -S3154004C3700000000000000000000000000000000073 -S3154004C3800000000000000000000000000000000063 -S3154004C3900000000000000000000000000000000053 -S3154004C3A00000000000000000000000000000000043 -S3154004C3B00000000000000000000000000000000033 -S3154004C3C00000000000000000000000000000000023 -S3154004C3D00000000000000000000000000000000013 -S3154004C3E00000000000000000000000000000000003 -S3154004C3F000000000000000000000000000000000F3 -S3154004C40000000000000000000000000000000000E2 -S3154004C41000000000000000000000000000000000D2 -S3154004C42000000000000000000000000000000000C2 -S3154004C43000000000000000000000000000000000B2 -S3154004C44000000000000000000000000000000000A2 -S3154004C4500000000000000000000000000000000092 -S3154004C4600000000000000000000000000000000082 -S3154004C4700000000000000000000000000000000072 -S3154004C4800000000000000000000000000000000062 -S3154004C4900000000000000000000000000000000052 -S3154004C4A00000000000000000000000000000000042 -S3154004C4B00000000000000000000000000000000032 -S3154004C4C00000000000000000000000000000000022 -S3154004C4D00000000000000000000000000000000012 -S3154004C4E00000000000000000000000000000000002 -S3154004C4F000000000000000000000000000000000F2 -S3154004C50000000000000000000000000000000000E1 -S3154004C51000000000000000000000000000000000D1 -S3154004C52000000000000000000000000000000000C1 -S3154004C53000000000000000000000000000000000B1 -S3154004C54000000000000000000000000000000000A1 -S3154004C5500000000000000000000000000000000091 -S3154004C5600000000000000000000000000000000081 -S3154004C5700000000000000000000000000000000071 -S3154004C5800000000000000000000000000000000061 -S3154004C5900000000000000000000000000000000051 -S3154004C5A00000000000000000000000000000000041 -S3154004C5B00000000000000000000000000000000031 -S3154004C5C00000000000000000000000000000000021 -S3154004C5D00000000000000000000000000000000011 -S3154004C5E00000000000000000000000000000000001 -S3154004C5F000000000000000000000000000000000F1 -S3154004C60000000000000000000000000000000000E0 -S3154004C61000000000000000000000000000000000D0 -S3154004C62000000000000000000000000000000000C0 -S3154004C63000000000000000000000000000000000B0 -S3154004C64000000000000000000000000000000000A0 -S3154004C6500000000000000000000000000000000090 -S3154004C6600000000000000000000000000000000080 -S3154004C6700000000000000000000000000000000070 -S3154004C6800000000000000000000000000000000060 -S3154004C6900000000000000000000000000000000050 -S3154004C6A00000000000000000000000000000000040 -S3154004C6B00000000000000000000000000000000030 -S3154004C6C00000000000000000000000000000000020 -S3154004C6D00000000000000000000000000000000010 -S3154004C6E00000000000000000000000000000000000 -S3154004C6F000000000000000000000000000000000F0 -S3154004C70000000000000000000000000000000000DF -S3154004C71000000000000000000000000000000000CF -S3154004C72000000000000000000000000000000000BF -S3154004C73000000000000000000000000000000000AF -S3154004C740000000000000000000000000000000009F -S3154004C750000000000000000000000000000000008F -S3154004C760000000000000000000000000000000007F -S3154004C770000000000000000000000000000000006F -S3154004C780000000000000000000000000000000005F -S3154004C790000000000000000000000000000000004F -S3154004C7A0000000000000000000000000000000003F -S3154004C7B0000000000000000000000000000000002F -S3154004C7C0000000000000000000000000000000001F -S3154004C7D0000000000000000000000000000000000F -S3154004C7E000000000000000000000000000000000FF -S3154004C7F000000000000000000000000000000000EF -S3154004C80000000000000000000000000000000000DE -S3154004C81000000000000000000000000000000000CE -S3154004C82000000000000000000000000000000000BE -S3154004C83000000000000000000000000000000000AE -S3154004C840000000000000000000000000000000009E -S3154004C850000000000000000000000000000000008E -S3154004C860000000000000000000000000000000007E -S3154004C870000000000000000000000000000000006E -S3154004C880000000000000000000000000000000005E -S3154004C890000000000000000000000000000000004E -S3154004C8A0000000000000000000000000000000003E -S3154004C8B0000000000000000000000000000000002E -S3154004C8C0000000000000000000000000000000001E -S3154004C8D0000000000000000000000000000000000E -S3154004C8E000000000000000000000000000000000FE -S3154004C8F000000000000000000000000000000000EE -S3154004C90000000000000000000000000000000000DD -S3154004C91000000000000000000000000000000000CD -S3154004C92000000000000000000000000000000000BD -S3154004C93000000000000000000000000000000000AD -S3154004C940000000000000000000000000000000009D -S3154004C950000000000000000000000000000000008D -S3154004C960000000000000000000000000000000007D -S3154004C970000000000000000000000000000000006D -S3154004C980000000000000000000000000000000005D -S3154004C990000000000000000000000000000000004D -S3154004C9A0000000000000000000000000000000003D -S3154004C9B0000000000000000000000000000000002D -S3154004C9C0000000000000000000000000000000001D -S3154004C9D0000000000000000000000000000000000D -S3154004C9E000000000000000000000000000000000FD -S3154004C9F000000000000000000000000000000000ED -S3154004CA0000000000000000000000000000000000DC -S3154004CA1000000000000000000000000000000000CC -S3154004CA2000000000000000000000000000000000BC -S3154004CA3000000000000000000000000000000000AC -S3154004CA40000000000000000000000000000000009C -S3154004CA50000000000000000000000000000000008C -S3154004CA60000000000000000000000000000000007C -S3154004CA70000000000000000000000000000000006C -S3154004CA80000000000000000000000000000000005C -S3154004CA90000000000000000000000000000000004C -S3154004CAA0000000000000000000000000000000003C -S3154004CAB0000000000000000000000000000000002C -S3154004CAC0000000000000000000000000000000001C -S3154004CAD0000000000000000000000000000000000C -S3154004CAE000000000000000000000000000000000FC -S3154004CAF000000000000000000000000000000000EC -S3154004CB0000000000000000000000000000000000DB -S3154004CB1000000000000000000000000000000000CB -S3154004CB2000000000000000000000000000000000BB -S3154004CB3000000000000000000000000000000000AB -S3154004CB40000000000000000000000000000000009B -S3154004CB50000000000000000000000000000000008B -S3154004CB60000000000000000000000000000000007B -S3154004CB70000000000000000000000000000000006B -S3154004CB80000000000000000000000000000000005B -S3154004CB90000000000000000000000000000000004B -S3154004CBA0000000000000000000000000000000003B -S3154004CBB0000000000000000000000000000000002B -S3154004CBC0000000000000000000000000000000001B -S3154004CBD0000000000000000000000000000000000B -S3154004CBE000000000000000000000000000000000FB -S3154004CBF000000000000000000000000000000000EB -S3154004CC0000000000000000000000000000000000DA -S3154004CC1000000000000000000000000000000000CA -S3154004CC2000000000000000000000000000000000BA -S3154004CC3000000000000000000000000000000000AA -S3154004CC40000000000000000000000000000000009A -S3154004CC50000000000000000000000000000000008A -S3154004CC60000000000000000000000000000000007A -S3154004CC70000000000000000000000000000000006A -S3154004CC80000000000000000000000000000000005A -S3154004CC90000000000000000000000000000000004A -S3154004CCA0000000000000000000000000000000003A -S3154004CCB0000000000000000000000000000000002A -S3154004CCC0000000000000000000000000000000001A -S3154004CCD0000000000000000000000000000000000A -S3154004CCE000000000000000000000000000000000FA -S3154004CCF000000000000000000000000000000000EA -S3154004CD0000000000000000000000000000000000D9 -S3154004CD1000000000000000000000000000000000C9 -S3154004CD2000000000000000000000000000000000B9 -S3154004CD3000000000000000000000000000000000A9 -S3154004CD400000000000000000000000000000000099 -S3154004CD500000000000000000000000000000000089 -S3154004CD600000000000000000000000000000000079 -S3154004CD700000000000000000000000000000000069 -S3154004CD800000000000000000000000000000000059 -S3154004CD900000000000000000000000000000000049 -S3154004CDA00000000000000000000000000000000039 -S3154004CDB00000000000000000000000000000000029 -S3154004CDC00000000000000000000000000000000019 -S3154004CDD00000000000000000000000000000000009 -S3154004CDE000000000000000000000000000000000F9 -S3154004CDF000000000000000000000000000000000E9 -S3154004CE0000000000000000000000000000000000D8 -S3154004CE1000000000000000000000000000000000C8 -S3154004CE2000000000000000000000000000000000B8 -S3154004CE3000000000000000000000000000000000A8 -S3154004CE400000000000000000000000000000000098 -S3154004CE500000000000000000000000000000000088 -S3154004CE600000000000000000000000000000000078 -S3154004CE700000000000000000000000000000000068 -S3154004CE800000000000000000000000000000000058 -S3154004CE900000000000000000000000000000000048 -S3154004CEA00000000000000000000000000000000038 -S3154004CEB00000000000000000000000000000000028 -S3154004CEC00000000000000000000000000000000018 -S3154004CED00000000000000000000000000000000008 -S3154004CEE000000000000000000000000000000000F8 -S3154004CEF000000000000000000000000000000000E8 -S3154004CF0000000000000000000000000000000000D7 -S3154004CF1000000000000000000000000000000000C7 -S3154004CF2000000000000000000000000000000000B7 -S3154004CF3000000000000000000000000000000000A7 -S3154004CF400000000000000000000000000000000097 -S3154004CF500000000000000000000000000000000087 -S3154004CF600000000000000000000000000000000077 -S3154004CF700000000000000000000000000000000067 -S3154004CF800000000000000000000000000000000057 -S3154004CF900000000000000000000000000000000047 -S3154004CFA00000000000000000000000000000000037 -S3154004CFB00000000000000000000000000000000027 -S3154004CFC00000000000000000000000000000000017 -S3154004CFD00000000000000000000000000000000007 -S3154004CFE000000000000000000000000000000000F7 -S3154004CFF000000000000000000000000000000000E7 -S3154004D00000000000000000000000000000000000D6 -S3154004D01000000000000000000000000000000000C6 -S3154004D02000000000000000000000000000000000B6 -S3154004D03000000000000000000000000000000000A6 -S3154004D0400000000000000000000000000000000096 -S3154004D0500000000000000000000000000000000086 -S3154004D0600000000000000000000000000000000076 -S3154004D0700000000000000000000000000000000066 -S3154004D0800000000000000000000000000000000056 -S3154004D0900000000000000000000000000000000046 -S3154004D0A00000000000000000000000000000000036 -S3154004D0B00000000000000000000000000000000026 -S3154004D0C00000000000000000000000000000000016 -S3154004D0D00000000000000000000000000000000006 -S3154004D0E000000000000000000000000000000000F6 -S3154004D0F000000000000000000000000000000000E6 -S3154004D10000000000000000000000000000000000D5 -S3154004D11000000000000000000000000000000000C5 -S3154004D12000000000000000000000000000000000B5 -S3154004D13000000000000000000000000000000000A5 -S3154004D1400000000000000000000000000000000095 -S3154004D1500000000000000000000000000000000085 -S3154004D1600000000000000000000000000000000075 -S3154004D1700000000000000000000000000000000065 -S3154004D1800000000000000000000000000000000055 -S3154004D1900000000000000000000000000000000045 -S3154004D1A00000000000000000000000000000000035 -S3154004D1B00000000000000000000000000000000025 -S3154004D1C00000000000000000000000000000000015 -S3154004D1D00000000000000000000000000000000005 -S3154004D1E000000000000000000000000000000000F5 -S3154004D1F000000000000000000000000000000000E5 -S3154004D20000000000000000000000000000000000D4 -S3154004D21000000000000000000000000000000000C4 -S3154004D22000000000000000000000000000000000B4 -S3154004D23000000000000000000000000000000000A4 -S3154004D2400000000000000000000000000000000094 -S3154004D2500000000000000000000000000000000084 -S3154004D2600000000000000000000000000000000074 -S3154004D2700000000000000000000000000000000064 -S3154004D2800000000000000000000000000000000054 -S3154004D2900000000000000000000000000000000044 -S3154004D2A00000000000000000000000000000000034 -S3154004D2B00000000000000000000000000000000024 -S3154004D2C00000000000000000000000000000000014 -S3154004D2D00000000000000000000000000000000004 -S3154004D2E000000000000000000000000000000000F4 -S3154004D2F000000000000000000000000000000000E4 -S3154004D30000000000000000000000000000000000D3 -S3154004D31000000000000000000000000000000000C3 -S3154004D32000000000000000000000000000000000B3 -S3154004D33000000000000000000000000000000000A3 -S3154004D3400000000000000000000000000000000093 -S3154004D3500000000000000000000000000000000083 -S3154004D3600000000000000000000000000000000073 -S3154004D3700000000000000000000000000000000063 -S3154004D3800000000000000000000000000000000053 -S3154004D3900000000000000000000000000000000043 -S3154004D3A00000000000000000000000000000000033 -S3154004D3B00000000000000000000000000000000023 -S3154004D3C00000000000000000000000000000000013 -S3154004D3D00000000000000000000000000000000003 -S3154004D3E000000000000000000000000000000000F3 -S3154004D3F000000000000000000000000000000000E3 -S3154004D40000000000000000000000000000000000D2 -S3154004D41000000000000000000000000000000000C2 -S3154004D42000000000000000000000000000000000B2 -S3154004D43000000000000000000000000000000000A2 -S3154004D4400000000000000000000000000000000092 -S3154004D4500000000000000000000000000000000082 -S3154004D4600000000000000000000000000000000072 -S3154004D4700000000000000000000000000000000062 -S3154004D4800000000000000000000000000000000052 -S3154004D4900000000000000000000000000000000042 -S3154004D4A00000000000000000000000000000000032 -S3154004D4B00000000000000000000000000000000022 -S3154004D4C00000000000000000000000000000000012 -S3154004D4D00000000000000000000000000000000002 -S3154004D4E000000000000000000000000000000000F2 -S3154004D4F000000000000000000000000000000000E2 -S3154004D50000000000000000000000000000000000D1 -S3154004D51000000000000000000000000000000000C1 -S3154004D52000000000000000000000000000000000B1 -S3154004D53000000000000000000000000000000000A1 -S3154004D5400000000000000000000000000000000091 -S3154004D5500000000000000000000000000000000081 -S3154004D5600000000000000000000000000000000071 -S3154004D5700000000000000000000000000000000061 -S3154004D5800000000000000000000000000000000051 -S3154004D5900000000000000000000000000000000041 -S3154004D5A00000000000000000000000000000000031 -S3154004D5B00000000000000000000000000000000021 -S3154004D5C00000000000000000000000000000000011 -S3154004D5D00000000000000000000000000000000001 -S3154004D5E000000000000000000000000000000000F1 -S3154004D5F000000000000000000000000000000000E1 -S3154004D60000000000000000000000000000000000D0 -S3154004D61000000000000000000000000000000000C0 -S3154004D62000000000000000000000000000000000B0 -S3154004D63000000000000000000000000000000000A0 -S3154004D6400000000000000000000000000000000090 -S3154004D6500000000000000000000000000000000080 -S3154004D6600000000000000000000000000000000070 -S3154004D6700000000000000000000000000000000060 -S3154004D6800000000000000000000000000000000050 -S3154004D6900000000000000000000000000000000040 -S3154004D6A00000000000000000000000000000000030 -S3154004D6B00000000000000000000000000000000020 -S3154004D6C00000000000000000000000000000000010 -S3154004D6D00000000000000000000000000000000000 -S3154004D6E000000000000000000000000000000000F0 -S3154004D6F000000000000000000000000000000000E0 -S3154004D70000000000000000000000000000000000CF -S3154004D71000000000000000000000000000000000BF -S3154004D72000000000000000000000000000000000AF -S3154004D730000000000000000000000000000000009F -S3154004D740000000000000000000000000000000008F -S3154004D750000000000000000000000000000000007F -S3154004D760000000000000000000000000000000006F -S3154004D770000000000000000000000000000000005F -S3154004D780000000000000000000000000000000004F -S3154004D790000000000000000000000000000000003F -S3154004D7A0000000000000000000000000000000002F -S3154004D7B0000000000000000000000000000000001F -S3154004D7C0000000000000000000000000000000000F -S3154004D7D000000000000000000000000000000000FF -S3154004D7E000000000000000000000000000000000EF -S3154004D7F000000000000000000000000000000000DF -S3154004D80000000000000000000000000000000000CE -S3154004D81000000000000000000000000000000000BE -S3154004D82000000000000000000000000000000000AE -S3154004D830000000000000000000000000000000009E -S3154004D840000000000000000000000000000000008E -S3154004D850000000000000000000000000000000007E -S3154004D860000000000000000000000000000000006E -S3154004D870000000000000000000000000000000005E -S3154004D880000000000000000000000000000000004E -S3154004D890000000000000000000000000000000003E -S3154004D8A0000000000000000000000000000000002E -S3154004D8B0000000000000000000000000000000001E -S3154004D8C0000000000000000000000000000000000E -S3154004D8D000000000000000000000000000000000FE -S3154004D8E000000000000000000000000000000000EE -S3154004D8F000000000000000000000000000000000DE -S3154004D90000000000000000000000000000000000CD -S3154004D91000000000000000000000000000000000BD -S3154004D92000000000000000000000000000000000AD -S3154004D930000000000000000000000000000000009D -S3154004D940000000000000000000000000000000008D -S3154004D950000000000000000000000000000000007D -S3154004D960000000000000000000000000000000006D -S3154004D970000000000000000000000000000000005D -S3154004D980000000000000000000000000000000004D -S3154004D990000000000000000000000000000000003D -S3154004D9A0000000000000000000000000000000002D -S3154004D9B0000000000000000000000000000000001D -S3154004D9C0000000000000000000000000000000000D -S3154004D9D000000000000000000000000000000000FD -S3154004D9E000000000000000000000000000000000ED -S3154004D9F000000000000000000000000000000000DD -S3154004DA0000000000000000000000000000000000CC -S3154004DA1000000000000000000000000000000000BC -S3154004DA2000000000000000000000000000000000AC -S3154004DA30000000000000000000000000000000009C -S3154004DA40000000000000000000000000000000008C -S3154004DA50000000000000000000000000000000007C -S3154004DA60000000000000000000000000000000006C -S3154004DA70000000000000000000000000000000005C -S3154004DA80000000000000000000000000000000004C -S3154004DA90000000000000000000000000000000003C -S3154004DAA0000000000000000000000000000000002C -S3154004DAB0000000000000000000000000000000001C -S3154004DAC0000000000000000000000000000000000C -S3154004DAD000000000000000000000000000000000FC -S3154004DAE000000000000000000000000000000000EC -S3154004DAF000000000000000000000000000000000DC -S3154004DB0000000000000000000000000000000000CB -S3154004DB1000000000000000000000000000000000BB -S3154004DB2000000000000000000000000000000000AB -S3154004DB30000000000000000000000000000000009B -S3154004DB40000000000000000000000000000000008B -S3154004DB50000000000000000000000000000000007B -S3154004DB60000000000000000000000000000000006B -S3154004DB70000000000000000000000000000000005B -S3154004DB80000000000000000000000000000000004B -S3154004DB90000000000000000000000000000000003B -S3154004DBA0000000000000000000000000000000002B -S3154004DBB0000000000000000000000000000000001B -S3154004DBC0000000000000000000000000000000000B -S3154004DBD000000000000000000000000000000000FB -S3154004DBE000000000000000000000000000000000EB -S3154004DBF000000000000000000000000000000000DB -S3154004DC0000000000000000000000000000000000CA -S3154004DC1000000000000000000000000000000000BA -S3154004DC2000000000000000000000000000000000AA -S3154004DC30000000000000000000000000000000009A -S3154004DC40000000000000000000000000000000008A -S3154004DC50000000000000000000000000000000007A -S3154004DC60000000000000000000000000000000006A -S3154004DC70000000000000000000000000000000005A -S3154004DC80000000000000000000000000000000004A -S3154004DC90000000000000000000000000000000003A -S3154004DCA0000000000000000000000000000000002A -S3154004DCB0000000000000000000000000000000001A -S3154004DCC0000000000000000000000000000000000A -S3154004DCD000000000000000000000000000000000FA -S3154004DCE000000000000000000000000000000000EA -S3154004DCF000000000000000000000000000000000DA -S3154004DD0000000000000000000000000000000000C9 -S3154004DD1000000000000000000000000000000000B9 -S3154004DD2000000000000000000000000000000000A9 -S3154004DD300000000000000000000000000000000099 -S3154004DD400000000000000000000000000000000089 -S3154004DD500000000000000000000000000000000079 -S3154004DD600000000000000000000000000000000069 -S3154004DD700000000000000000000000000000000059 -S3154004DD800000000000000000000000000000000049 -S3154004DD900000000000000000000000000000000039 -S3154004DDA00000000000000000000000000000000029 -S3154004DDB00000000000000000000000000000000019 -S3154004DDC00000000000000000000000000000000009 -S3154004DDD000000000000000000000000000000000F9 -S3154004DDE000000000000000000000000000000000E9 -S3154004DDF000000000000000000000000000000000D9 -S3154004DE0000000000000000000000000000000000C8 -S3154004DE1000000000000000000000000000000000B8 -S3154004DE2000000000000000000000000000000000A8 -S3154004DE300000000000000000000000000000000098 -S3154004DE400000000000000000000000000000000088 -S3154004DE500000000000000000000000000000000078 -S3154004DE600000000000000000000000000000000068 -S3154004DE700000000000000000000000000000000058 -S3154004DE800000000000000000000000000000000048 -S3154004DE900000000000000000000000000000000038 -S3154004DEA00000000000000000000000000000000028 -S3154004DEB00000000000000000000000000000000018 -S3154004DEC00000000000000000000000000000000008 -S3154004DED000000000000000000000000000000000F8 -S3154004DEE000000000000000000000000000000000E8 -S3154004DEF000000000000000000000000000000000D8 -S3154004DF0000000000000000000000000000000000C7 -S3154004DF1000000000000000000000000000000000B7 -S3154004DF2000000000000000000000000000000000A7 -S3154004DF300000000000000000000000000000000097 -S3154004DF400000000000000000000000000000000087 -S3154004DF500000000000000000000000000000000077 -S3154004DF600000000000000000000000000000000067 -S3154004DF700000000000000000000000000000000057 -S3154004DF800000000000000000000000000000000047 -S3154004DF900000000000000000000000000000000037 -S3154004DFA00000000000000000000000000000000027 -S3154004DFB00000000000000000000000000000000017 -S3154004DFC00000000000000000000000000000000007 -S3154004DFD000000000000000000000000000000000F7 -S3154004DFE000000000000000000000000000000000E7 -S3154004DFF000000000000000000000000000000000D7 -S3154004E00000000000000000000000000000000000C6 -S3154004E01000000000000000000000000000000000B6 -S3154004E02000000000000000000000000000000000A6 -S3154004E0300000000000000000000000000000000096 -S3154004E0400000000000000000000000000000000086 -S3154004E0500000000000000000000000000000000076 -S3154004E0600000000000000000000000000000000066 -S3154004E0700000000000000000000000000000000056 -S3154004E0800000000000000000000000000000000046 -S3154004E0900000000000000000000000000000000036 -S3154004E0A00000000000000000000000000000000026 -S3154004E0B00000000000000000000000000000000016 -S3154004E0C00000000000000000000000000000000006 -S3154004E0D000000000000000000000000000000000F6 -S3154004E0E000000000000000000000000000000000E6 -S3154004E0F000000000000000000000000000000000D6 -S3154004E10000000000000000000000000000000000C5 -S3154004E11000000000000000000000000000000000B5 -S3154004E12000000000000000000000000000000000A5 -S3154004E1300000000000000000000000000000000095 -S3154004E1400000000000000000000000000000000085 -S3154004E1500000000000000000000000000000000075 -S3154004E1600000000000000000000000000000000065 -S3154004E1700000000000000000000000000000000055 -S3154004E1800000000000000000000000000000000045 -S3154004E1900000000000000000000000000000000035 -S3154004E1A00000000000000000000000000000000025 -S3154004E1B00000000000000000000000000000000015 -S3154004E1C00000000000000000000000000000000005 -S3154004E1D000000000000000000000000000000000F5 -S3154004E1E000000000000000000000000000000000E5 -S3154004E1F000000000000000000000000000000000D5 -S3154004E20000000000000000000000000000000000C4 -S3154004E21000000000000000000000000000000000B4 -S3154004E22000000000000000000000000000000000A4 -S3154004E2300000000000000000000000000000000094 -S3154004E2400000000000000000000000000000000084 -S3154004E2500000000000000000000000000000000074 -S3154004E2600000000000000000000000000000000064 -S3154004E2700000000000000000000000000000000054 -S3154004E2800000000000000000000000000000000044 -S3154004E2900000000000000000000000000000000034 -S3154004E2A00000000000000000000000000000000024 -S3154004E2B00000000000000000000000000000000014 -S3154004E2C00000000000000000000000000000000004 -S3154004E2D000000000000000000000000000000000F4 -S3154004E2E000000000000000000000000000000000E4 -S3154004E2F000000000000000000000000000000000D4 -S3154004E30000000000000000000000000000000000C3 -S3154004E31000000000000000000000000000000000B3 -S3154004E32000000000000000000000000000000000A3 -S3154004E3300000000000000000000000000000000093 -S3154004E3400000000000000000000000000000000083 -S3154004E3500000000000000000000000000000000073 -S3154004E3600000000000000000000000000000000063 -S3154004E3700000000000000000000000000000000053 -S3154004E3800000000000000000000000000000000043 -S3154004E3900000000000000000000000000000000033 -S3154004E3A00000000000000000000000000000000023 -S3154004E3B00000000000000000000000000000000013 -S3154004E3C00000000000000000000000000000000003 -S3154004E3D000000000000000000000000000000000F3 -S3154004E3E000000000000000000000000000000000E3 -S3154004E3F000000000000000000000000000000000D3 -S3154004E40000000000000000000000000000000000C2 -S3154004E41000000000000000000000000000000000B2 -S3154004E42000000000000000000000000000000000A2 -S3154004E4300000000000000000000000000000000092 -S3154004E4400000000000000000000000000000000082 -S3154004E4500000000000000000000000000000000072 -S3154004E4600000000000000000000000000000000062 -S3154004E4700000000000000000000000000000000052 -S3154004E4800000000000000000000000000000000042 -S3154004E4900000000000000000000000000000000032 -S3154004E4A00000000000000000000000000000000022 -S3154004E4B00000000000000000000000000000000012 -S3154004E4C00000000000000000000000000000000002 -S3154004E4D000000000000000000000000000000000F2 -S3154004E4E000000000000000000000000000000000E2 -S3154004E4F000000000000000000000000000000000D2 -S3154004E50000000000000000000000000000000000C1 -S3154004E51000000000000000000000000000000000B1 -S3154004E52000000000000000000000000000000000A1 -S3154004E5300000000000000000000000000000000091 -S3154004E5400000000000000000000000000000000081 -S3154004E5500000000000000000000000000000000071 -S3154004E5600000000000000000000000000000000061 -S3154004E5700000000000000000000000000000000051 -S3154004E5800000000000000000000000000000000041 -S3154004E5900000000000000000000000000000000031 -S3154004E5A00000000000000000000000000000000021 -S3154004E5B00000000000000000000000000000000011 -S3154004E5C00000000000000000000000000000000001 -S3154004E5D000000000000000000000000000000000F1 -S3154004E5E000000000000000000000000000000000E1 -S3154004E5F000000000000000000000000000000000D1 -S3154004E60000000000000000000000000000000000C0 -S3154004E61000000000000000000000000000000000B0 -S3154004E62000000000000000000000000000000000A0 -S3154004E6300000000000000000000000000000000090 -S3154004E6400000000000000000000000000000000080 -S3154004E6500000000000000000000000000000000070 -S3154004E6600000000000000000000000000000000060 -S3154004E6700000000000000000000000000000000050 -S3154004E6800000000000000000000000000000000040 -S3154004E6900000000000000000000000000000000030 -S3154004E6A00000000000000000000000000000000020 -S3154004E6B00000000000000000000000000000000010 -S3154004E6C00000000000000000000000000000000000 -S3154004E6D000000000000000000000000000000000F0 -S3154004E6E000000000000000000000000000000000E0 -S3154004E6F000000000000000000000000000000000D0 -S3154004E70000000000000000000000000000000000BF -S3154004E71000000000000000000000000000000000AF -S3154004E720000000000000000000000000000000009F -S3154004E730000000000000000000000000000000008F -S3154004E740000000000000000000000000000000007F -S3154004E750000000000000000000000000000000006F -S3154004E760000000000000000000000000000000005F -S3154004E770000000000000000000000000000000004F -S3154004E780000000000000000000000000000000003F -S3154004E790000000000000000000000000000000002F -S3154004E7A0000000000000000000000000000000001F -S3154004E7B0000000000000000000000000000000000F -S3154004E7C000000000000000000000000000000000FF -S3154004E7D000000000000000000000000000000000EF -S3154004E7E000000000000000000000000000000000DF -S3154004E7F000000000000000000000000000000000CF -S3154004E80000000000000000000000000000000000BE -S3154004E81000000000000000000000000000000000AE -S3154004E820000000000000000000000000000000009E -S3154004E830000000000000000000000000000000008E -S3154004E840000000000000000000000000000000007E -S3154004E850000000000000000000000000000000006E -S3154004E860000000000000000000000000000000005E -S3154004E870000000000000000000000000000000004E -S3154004E880000000000000000000000000000000003E -S3154004E890000000000000000000000000000000002E -S3154004E8A0000000000000000000000000000000001E -S3154004E8B0000000000000000000000000000000000E -S3154004E8C000000000000000000000000000000000FE -S3154004E8D000000000000000000000000000000000EE -S3154004E8E000000000000000000000000000000000DE -S3154004E8F000000000000000000000000000000000CE -S3154004E90000000000000000000000000000000000BD -S3154004E91000000000000000000000000000000000AD -S3154004E920000000000000000000000000000000009D -S3154004E930000000000000000000000000000000008D -S3154004E940000000000000000000000000000000007D -S3154004E950000000000000000000000000000000006D -S3154004E960000000000000000000000000000000005D -S3154004E970000000000000000000000000000000004D -S3154004E980000000000000000000000000000000003D -S3154004E990000000000000000000000000000000002D -S3154004E9A0000000000000000000000000000000001D -S3154004E9B0000000000000000000000000000000000D -S3154004E9C000000000000000000000000000000000FD -S3154004E9D000000000000000000000000000000000ED -S3154004E9E000000000000000000000000000000000DD -S3154004E9F000000000000000000000000000000000CD -S3154004EA0000000000000000000000000000000000BC -S3154004EA1000000000000000000000000000000000AC -S3154004EA20000000000000000000000000000000009C -S3154004EA30000000000000000000000000000000008C -S3154004EA40000000000000000000000000000000007C -S3154004EA50000000000000000000000000000000006C -S3154004EA60000000000000000000000000000000005C -S3154004EA70000000000000000000000000000000004C -S3154004EA80000000000000000000000000000000003C -S3154004EA90000000000000000000000000000000002C -S3154004EAA0000000000000000000000000000000001C -S3154004EAB0000000000000000000000000000000000C -S3154004EAC000000000000000000000000000000000FC -S3154004EAD000000000000000000000000000000000EC -S3154004EAE000000000000000000000000000000000DC -S3154004EAF000000000000000000000000000000000CC -S3154004EB0000000000000000000000000000000000BB -S3154004EB1000000000000000000000000000000000AB -S3154004EB20000000000000000000000000000000009B -S3154004EB30000000000000000000000000000000008B -S3154004EB40000000000000000000000000000000007B -S3154004EB50000000000000000000000000000000006B -S3154004EB60000000000000000000000000000000005B -S3154004EB70000000000000000000000000000000004B -S3154004EB80000000000000000000000000000000003B -S3154004EB90000000000000000000000000000000002B -S3154004EBA0000000000000000000000000000000001B -S3154004EBB0000000000000000000000000000000000B -S3154004EBC000000000000000000000000000000000FB -S3154004EBD000000000000000000000000000000000EB -S3154004EBE000000000000000000000000000000000DB -S3154004EBF000000000000000000000000000000000CB -S3154004EC0000000000000000000000000000000000BA -S3154004EC1000000000000000000000000000000000AA -S3154004EC20000000000000000000000000000000009A -S3154004EC30000000000000000000000000000000008A -S3154004EC40000000000000000000000000000000007A -S3154004EC50000000000000000000000000000000006A -S3154004EC60000000000000000000000000000000005A -S3154004EC70000000000000000000000000000000004A -S3154004EC80000000000000000000000000000000003A -S3154004EC90000000000000000000000000000000002A -S3154004ECA0000000000000000000000000000000001A -S3154004ECB0000000000000000000000000000000000A -S3154004ECC000000000000000000000000000000000FA -S3154004ECD000000000000000000000000000000000EA -S3154004ECE000000000000000000000000000000000DA -S3154004ECF000000000000000000000000000000000CA -S3154004ED0000000000000000000000000000000000B9 -S3154004ED1000000000000000000000000000000000A9 -S3154004ED200000000000000000000000000000000099 -S3154004ED300000000000000000000000000000000089 -S3154004ED400000000000000000000000000000000079 -S3154004ED500000000000000000000000000000000069 -S3154004ED600000000000000000000000000000000059 -S3154004ED700000000000000000000000000000000049 -S3154004ED800000000000000000000000000000000039 -S3154004ED900000000000000000000000000000000029 -S3154004EDA00000000000000000000000000000000019 -S3154004EDB00000000000000000000000000000000009 -S3154004EDC000000000000000000000000000000000F9 -S3154004EDD000000000000000000000000000000000E9 -S3154004EDE000000000000000000000000000000000D9 -S3154004EDF000000000000000000000000000000000C9 -S3154004EE0000000000000000000000000000000000B8 -S3154004EE1000000000000000000000000000000000A8 -S3154004EE200000000000000000000000000000000098 -S3154004EE300000000000000000000000000000000088 -S3154004EE400000000000000000000000000000000078 -S3154004EE500000000000000000000000000000000068 -S3154004EE600000000000000000000000000000000058 -S3154004EE700000000000000000000000000000000048 -S3154004EE800000000000000000000000000000000038 -S3154004EE900000000000000000000000000000000028 -S3154004EEA00000000000000000000000000000000018 -S3154004EEB00000000000000000000000000000000008 -S3154004EEC000000000000000000000000000000000F8 -S3154004EED000000000000000000000000000000000E8 -S3154004EEE000000000000000000000000000000000D8 -S3154004EEF000000000000000000000000000000000C8 -S3154004EF0000000000000000000000000000000000B7 -S3154004EF1000000000000000000000000000000000A7 -S3154004EF200000000000000000000000000000000097 -S3154004EF300000000000000000000000000000000087 -S3154004EF400000000000000000000000000000000077 -S3154004EF500000000000000000000000000000000067 -S3154004EF600000000000000000000000000000000057 -S3154004EF700000000000000000000000000000000047 -S3154004EF800000000000000000000000000000000037 -S3154004EF900000000000000000000000000000000027 -S3154004EFA00000000000000000000000000000000017 -S3154004EFB00000000000000000000000000000000007 -S3154004EFC000000000000000000000000000000000F7 -S3154004EFD000000000000000000000000000000000E7 -S3154004EFE000000000000000000000000000000000D7 -S3154004EFF000000000000000000000000000000000C7 -S3154004F00000000000000000000000000000000000B6 -S3154004F01000000000000000000000000000000000A6 -S3154004F0200000000000000000000000000000000096 -S3154004F0300000000000000000000000000000000086 -S3154004F0400000000000000000000000000000000076 -S3154004F0500000000000000000000000000000000066 -S3154004F0600000000000000000000000000000000056 -S3154004F0700000000000000000000000000000000046 -S3154004F0800000000000000000000000000000000036 -S3154004F0900000000000000000000000000000000026 -S3154004F0A00000000000000000000000000000000016 -S3154004F0B00000000000000000000000000000000006 -S3154004F0C000000000000000000000000000000000F6 -S3154004F0D000000000000000000000000000000000E6 -S3154004F0E000000000000000000000000000000000D6 -S3154004F0F000000000000000000000000000000000C6 -S3154004F10000000000000000000000000000000000B5 -S3154004F11000000000000000000000000000000000A5 -S3154004F1200000000000000000000000000000000095 -S3154004F1300000000000000000000000000000000085 -S3154004F1400000000000000000000000000000000075 -S3154004F1500000000000000000000000000000000065 -S3154004F1600000000000000000000000000000000055 -S3154004F1700000000000000000000000000000000045 -S3154004F1800000000000000000000000000000000035 -S3154004F1900000000000000000000000000000000025 -S3154004F1A00000000000000000000000000000000015 -S3154004F1B00000000000000000000000000000000005 -S3154004F1C000000000000000000000000000000000F5 -S3154004F1D000000000000000000000000000000000E5 -S3154004F1E000000000000000000000000000000000D5 -S3154004F1F000000000000000000000000000000000C5 -S3154004F20000000000000000000000000000000000B4 -S3154004F21000000000000000000000000000000000A4 -S3154004F2200000000000000000000000000000000094 -S3154004F2300000000000000000000000000000000084 -S3154004F2400000000000000000000000000000000074 -S3154004F2500000000000000000000000000000000064 -S3154004F2600000000000000000000000000000000054 -S3154004F2700000000000000000000000000000000044 -S3154004F2800000000000000000000000000000000034 -S3154004F2900000000000000000000000000000000024 -S3154004F2A00000000000000000000000000000000014 -S3154004F2B00000000000000000000000000000000004 -S3154004F2C000000000000000000000000000000000F4 -S3154004F2D000000000000000000000000000000000E4 -S3154004F2E000000000000000000000000000000000D4 -S3154004F2F000000000000000000000000000000000C4 -S3154004F30000000000000000000000000000000000B3 -S3154004F31000000000000000000000000000000000A3 -S3154004F3200000000000000000000000000000000093 -S3154004F3300000000000000000000000000000000083 -S3154004F3400000000000000000000000000000000073 -S3154004F3500000000000000000000000000000000063 -S3154004F3600000000000000000000000000000000053 -S3154004F3700000000000000000000000000000000043 -S3154004F3800000000000000000000000000000000033 -S3154004F3900000000000000000000000000000000023 -S3154004F3A00000000000000000000000000000000013 -S3154004F3B00000000000000000000000000000000003 -S3154004F3C000000000000000000000000000000000F3 -S3154004F3D000000000000000000000000000000000E3 -S3154004F3E000000000000000000000000000000000D3 -S3154004F3F000000000000000000000000000000000C3 -S3154004F40000000000000000000000000000000000B2 -S3154004F41000000000000000000000000000000000A2 -S3154004F4200000000000000000000000000000000092 -S3154004F4300000000000000000000000000000000082 -S3154004F4400000000000000000000000000000000072 -S3154004F4500000000000000000000000000000000062 -S3154004F4600000000000000000000000000000000052 -S3154004F4700000000000000000000000000000000042 -S3154004F4800000000000000000000000000000000032 -S3154004F4900000000000000000000000000000000022 -S3154004F4A00000000000000000000000000000000012 -S3154004F4B00000000000000000000000000000000002 -S3154004F4C000000000000000000000000000000000F2 -S3154004F4D000000000000000000000000000000000E2 -S3154004F4E000000000000000000000000000000000D2 -S3154004F4F000000000000000000000000000000000C2 -S3154004F50000000000000000000000000000000000B1 -S3154004F51000000000000000000000000000000000A1 -S3154004F5200000000000000000000000000000000091 -S3154004F5300000000000000000000000000000000081 -S3154004F5400000000000000000000000000000000071 -S3154004F5500000000000000000000000000000000061 -S3154004F5600000000000000000000000000000000051 -S3154004F5700000000000000000000000000000000041 -S3154004F5800000000000000000000000000000000031 -S3154004F5900000000000000000000000000000000021 -S3154004F5A00000000000000000000000000000000011 -S3154004F5B00000000000000000000000000000000001 -S3154004F5C000000000000000000000000000000000F1 -S3154004F5D000000000000000000000000000000000E1 -S3154004F5E000000000000000000000000000000000D1 -S3154004F5F000000000000000000000000000000000C1 -S3154004F60000000000000000000000000000000000B0 -S3154004F61000000000000000000000000000000000A0 -S3154004F6200000000000000000000000000000000090 -S3154004F6300000000000000000000000000000000080 -S3154004F6400000000000000000000000000000000070 -S3154004F6500000000000000000000000000000000060 -S3154004F6600000000000000000000000000000000050 -S3154004F6700000000000000000000000000000000040 -S3154004F6800000000000000000000000000000000030 -S3154004F6900000000000000000000000000000000020 -S3154004F6A00000000000000000000000000000000010 -S3154004F6B00000000000000000000000000000000000 -S3154004F6C000000000000000000000000000000000F0 -S3154004F6D000000000000000000000000000000000E0 -S3154004F6E000000000000000000000000000000000D0 -S3154004F6F000000000000000000000000000000000C0 -S3154004F70000000000000000000000000000000000AF -S3154004F710000000000000000000000000000000009F -S3154004F720000000000000000000000000000000008F -S3154004F730000000000000000000000000000000007F -S3154004F740000000000000000000000000000000006F -S3154004F750000000000000000000000000000000005F -S3154004F760000000000000000000000000000000004F -S3154004F770000000000000000000000000000000003F -S3154004F780000000000000000000000000000000002F -S3154004F790000000000000000000000000000000001F -S3154004F7A0000000000000000000000000000000000F -S3154004F7B000000000000000000000000000000000FF -S3154004F7C000000000000000000000000000000000EF -S3154004F7D000000000000000000000000000000000DF -S3154004F7E000000000000000000000000000000000CF -S3154004F7F000000000000000000000000000000000BF -S3154004F80000000000000000000000000000000000AE -S3154004F810000000000000000000000000000000009E -S3154004F820000000000000000000000000000000008E -S3154004F830000000000000000000000000000000007E -S3154004F840000000000000000000000000000000006E -S3154004F850000000000000000000000000000000005E -S3154004F860000000000000000000000000000000004E -S3154004F870000000000000000000000000000000003E -S3154004F880000000000000000000000000000000002E -S3154004F890000000000000000000000000000000001E -S3154004F8A0000000000000000000000000000000000E -S3154004F8B000000000000000000000000000000000FE -S3154004F8C000000000000000000000000000000000EE -S3154004F8D000000000000000000000000000000000DE -S3154004F8E000000000000000000000000000000000CE -S3154004F8F000000000000000000000000000000000BE -S3154004F90000000000000000000000000000000000AD -S3154004F910000000000000000000000000000000009D -S3154004F920000000000000000000000000000000008D -S3154004F930000000000000000000000000000000007D -S3154004F940000000000000000000000000000000006D -S3154004F950000000000000000000000000000000005D -S3154004F960000000000000000000000000000000004D -S3154004F970000000000000000000000000000000003D -S3154004F980000000000000000000000000000000002D -S3154004F990000000000000000000000000000000001D -S3154004F9A0000000000000000000000000000000000D -S3154004F9B000000000000000000000000000000000FD -S3154004F9C000000000000000000000000000000000ED -S3154004F9D000000000000000000000000000000000DD -S3154004F9E000000000000000000000000000000000CD -S3154004F9F000000000000000000000000000000000BD -S3154004FA0000000000000000000000000000000000AC -S3154004FA10000000000000000000000000000000009C -S3154004FA20000000000000000000000000000000008C -S3154004FA30000000000000000000000000000000007C -S3154004FA40000000000000000000000000000000006C -S3154004FA50000000000000000000000000000000005C -S3154004FA60000000000000000000000000000000004C -S3154004FA70000000000000000000000000000000003C -S3154004FA80000000000000000000000000000000002C -S3154004FA90000000000000000000000000000000001C -S3154004FAA0000000000000000000000000000000000C -S3154004FAB000000000000000000000000000000000FC -S3154004FAC000000000000000000000000000000000EC -S3154004FAD000000000000000000000000000000000DC -S3154004FAE000000000000000000000000000000000CC -S3154004FAF000000000000000000000000000000000BC -S3154004FB0000000000000000000000000000000000AB -S3154004FB10000000000000000000000000000000009B -S3154004FB20000000000000000000000000000000008B -S3154004FB30000000000000000000000000000000007B -S3154004FB40000000000000000000000000000000006B -S3154004FB50000000000000000000000000000000005B -S3154004FB60000000000000000000000000000000004B -S3154004FB70000000000000000000000000000000003B -S3154004FB80000000000000000000000000000000002B -S3154004FB90000000000000000000000000000000001B -S3154004FBA0000000000000000000000000000000000B -S3154004FBB000000000000000000000000000000000FB -S3154004FBC000000000000000000000000000000000EB -S3154004FBD000000000000000000000000000000000DB -S3154004FBE000000000000000000000000000000000CB -S3154004FBF000000000000000000000000000000000BB -S3154004FC0000000000000000000000000000000000AA -S3154004FC10000000000000000000000000000000009A -S3154004FC20000000000000000000000000000000008A -S3154004FC30000000000000000000000000000000007A -S3154004FC40000000000000000000000000000000006A -S3154004FC50000000000000000000000000000000005A -S3154004FC60000000000000000000000000000000004A -S3154004FC70000000000000000000000000000000003A -S3154004FC80000000000000000000000000000000002A -S3154004FC90000000000000000000000000000000001A -S3154004FCA0000000000000000000000000000000000A -S3154004FCB000000000000000000000000000000000FA -S3154004FCC000000000000000000000000000000000EA -S3154004FCD000000000000000000000000000000000DA -S3154004FCE000000000000000000000000000000000CA -S3154004FCF000000000000000000000000000000000BA -S3154004FD0000000000000000000000000000000000A9 -S3154004FD100000000000000000000000000000000099 -S3154004FD200000000000000000000000000000000089 -S3154004FD300000000000000000000000000000000079 -S3154004FD400000000000000000000000000000000069 -S3154004FD500000000000000000000000000000000059 -S3154004FD600000000000000000000000000000000049 -S3154004FD700000000000000000000000000000000039 -S3154004FD800000000000000000000000000000000029 -S3154004FD900000000000000000000000000000000019 -S3154004FDA00000000000000000000000000000000009 -S3154004FDB000000000000000000000000000000000F9 -S3154004FDC000000000000000000000000000000000E9 -S3154004FDD000000000000000000000000000000000D9 -S3154004FDE000000000000000000000000000000000C9 -S3154004FDF000000000000000000000000000000000B9 -S3154004FE0000000000000000000000000000000000A8 -S3154004FE100000000000000000000000000000000098 -S3154004FE200000000000000000000000000000000088 -S3154004FE300000000000000000000000000000000078 -S3154004FE400000000000000000000000000000000068 -S3154004FE500000000000000000000000000000000058 -S3154004FE600000000000000000000000000000000048 -S3154004FE700000000000000000000000000000000038 -S3154004FE800000000000000000000000000000000028 -S3154004FE900000000000000000000000000000000018 -S3154004FEA00000000000000000000000000000000008 -S3154004FEB000000000000000000000000000000000F8 -S3154004FEC000000000000000000000000000000000E8 -S3154004FED000000000000000000000000000000000D8 -S3154004FEE000000000000000000000000000000000C8 -S3154004FEF000000000000000000000000000000000B8 -S3154004FF0000000000000000000000000000000000A7 -S3154004FF100000000000000000000000000000000097 -S3154004FF200000000000000000000000000000000087 -S3154004FF300000000000000000000000000000000077 -S3154004FF400000000000000000000000000000000067 -S3154004FF500000000000000000000000000000000057 -S3154004FF600000000000000000000000000000000047 -S3154004FF700000000000000000000000000000000037 -S3154004FF800000000000000000000000000000000027 -S3154004FF900000000000000000000000000000000017 -S3154004FFA00000000000000000000000000000000007 -S3154004FFB000000000000000000000000000000000F7 -S3154004FFC000000000000000000000000000000000E7 -S3154004FFD000000000000000000000000000000000D7 -S3154004FFE000000000000000000000000000000000C7 -S3154004FFF000000000000000000000000000000000B7 -S3154005000000000002000000030000000000000000A0 -S315400500100000000100000000FFFFFFFE0000000396 -S3154005002055555554FFFFFFFE0000000355555554E1 -S31540050030700FFFFE00000007100249240000000073 -S315400500400000000000000000000000020000000360 -S315400500500000000000000003FFFFFFFEFFFFFFFF5B -S3154005006000000002FFFFFFFD000000000000000049 -S31540050070000000010000000000000000FFFFFFFF38 -S315400500800000000000000001FFFFFFFFFFFFFFFF2C -S31540050090FFFFFFFF00000001FFFFFFFFFFFFFFFE21 -S315400500A00000000300000000FFFFFFFEFFFFFFFD0D -S315400500B000000000000000090000000700000001E4 -S315400500C0FFFFFFF700000002FFFFFFFCFFFFFFF801 -S315400500D000000002FFFFFFFCFFFFFFF8FFFFFFFCEC -S315400500E00000000200000008FFFFFFFCFFFFFFFEC7 -S315400500F0FFFFFFF8FFFFFFF800000001FFFFFFF8D5 -S31540050100FFFFFFF7000000000000000B00000002A3 -S31540050110000000050000002F000000020000001747 -S3154005012000003039000002A700000012FFFF076CEF -S315400501300000004DFFFFFCC600003039FFFFFD59AA -S31540050140FFFFFFEEFFFF076CFFFFFFB30000033A1B -S3154005015000000091FFFFE84100000000FFFFFD841D -S31540050160FFFED02F000000000000F6FA006E498120 -S315400501700000000000000000000000000000000034 -S31540050180FFFFF0000000000200000003000000062B -S3154005019000000002FFFFFFFDFFFFFFFA0000000021 -S315400501A0000000010000000000000000FFFFFFFF07 -S315400501B00000000000000001FFFFFFFFFFFFFFFFFB -S315400501C0FFFFFFFF00000001FFFFFFFFFFFFFFFEF0 -S315400501D000000003FFFFFFFAFFFFFFFEFFFFFFFDE5 -S315400501E000000006000000000000000000000009B5 -S315400501F000000000000000000000000000000000B4 -S31540050200000000000000000100000002000000039D -S315400502100000000000000000000000000000000093 -S31540050220000000004005050C400505D8400506A41C -S315400502300000000000000000000000000000000073 -S315400502400000000000000000000000000000000063 -S31540050250000000004001B5900000000000000000CD -S315400502600000000000000000000000000000000043 -S315400502700000000000000000000000000000000033 -S315400502800000000000000000000000000000000023 -S315400502900000000000000000000000000000000013 -S315400502A00000000000000000000000000000000003 -S315400502B000000000000000000000000000000000F3 -S315400502C000000000000000000000000000000001E2 -S315400502D0330EABCD1234E66DDEEC0005000B0000A7 -S315400502E000000000000000000000000000000000C3 -S315400502F000000000000000000000000000000000B3 -S3154005030000000000000000000000000000000000A2 -S315400503100000000000000000000000000000000092 -S315400503200000000000000000000000000000000082 -S315400503300000000000000000000000000000000072 -S315400503400000000000000000000000000000000062 -S315400503500000000000000000000000000000000052 -S315400503600000000000000000000000000000000042 -S315400503700000000000000000000000000000000032 -S315400503800000000000000000000000000000000022 -S315400503900000000000000000000000000000000012 -S315400503A00000000000000000000000000000000002 -S315400503B000000000000000000000000000000000F2 -S315400503C000000000000000000000000000000000E2 -S315400503D000000000000000000000000000000000D2 -S315400503E000000000000000000000000000000000C2 -S315400503F000000000000000000000000000000000B2 -S3154005040000000000000000000000000000000000A1 -S315400504100000000000000000000000000000000091 -S315400504200000000000000000000000000000000081 -S315400504300000000000000000000000000000000071 -S315400504400000000000000000000000000000000061 -S315400504500000000000000000000000000000000051 -S315400504600000000000000000000000000000000041 -S315400504700000000000000000000000000000000031 -S315400504800000000000000000000000000000000021 -S315400504900000000000000000000000000000000011 -S315400504A00000000000000000000000000000000001 -S315400504B000000000000000000000000000000000F1 -S315400504C000000000000000000000000000000000E1 -S315400504D000000000000000000000000000000000D1 -S315400504E000000000000000000000000000000000C1 -S315400504F000000000000000000000000000000000B1 -S3154005050000000000000000000000000000000000A0 -S315400505100000000000000000000000000000000090 -S315400505200000000000000000000000000000000080 -S315400505300000000000000000000000000000000070 -S315400505400000000000000000000000000000000060 -S315400505500000000000000000000000000000000050 -S315400505600000000000000000000000000000000040 -S315400505700000000000000000000000000000000030 -S315400505800000000000000000000000000000000020 -S315400505900000000000000000000000000000000010 -S315400505A00000000000000000000000000000000000 -S315400505B000000000000000000000000000000000F0 -S315400505C000000000000000000000000000000000E0 -S315400505D000000000000000000000000000000000D0 -S315400505E000000000000000000000000000000000C0 -S315400505F000000000000000000000000000000000B0 -S31540050600000000000000000000000000000000009F -S31540050610000000000000000000000000000000008F -S31540050620000000000000000000000000000000007F -S31540050630000000000000000000000000000000006F -S31540050640000000000000000000000000000000005F -S31540050650000000000000000000000000000000004F -S31540050660000000000000000000000000000000003F -S31540050670000000000000000000000000000000002F -S31540050680000000000000000000000000000000001F -S31540050690000000000000000000000000000000000F -S315400506A000000000000000000000000000000000FF -S315400506B000000000000000000000000000000000EF -S315400506C000000000000000000000000000000000DF -S315400506D000000000000000000000000000000000CF -S315400506E000000000000000000000000000000000BF -S315400506F000000000000000000000000000000000AF -S31540050700000000000000000000000000000000009E -S31540050710000000000000000000000000000000008E -S31540050720000000000000000000000000000000007E -S31540050730000000000000000000000000000000006E -S31540050740000000000000000000000000000000005E -S31540050750000000000000000000000000000000004E -S31540050760000000000000000000000000000000003E -S315400507704005022000000000FFFFFFFF00020000C9 -S315400507800000000000000000400507804005078086 -S3154005079040050788400507884005079040050790AE -S315400507A04005079840050798400507A0400507A05E -S315400507B0400507A8400507A8400507B0400507B00E -S315400507C0400507B8400507B8400507C0400507C0BE -S315400507D0400507C8400507C8400507D0400507D06E -S315400507E0400507D8400507D8400507E0400507E01E -S315400507F0400507E8400507E8400507F0400507F0CE -S31540050800400507F8400507F840050800400508007B -S315400508104005080840050808400508104005081029 -S3154005082040050818400508184005082040050820D9 -S315400508304005082840050828400508304005083089 -S315400508404005083840050838400508404005084039 -S3154005085040050848400508484005085040050850E9 -S315400508604005085840050858400508604005086099 -S315400508704005086840050868400508704005087049 -S3154005088040050878400508784005088040050880F9 -S3154005089040050888400508884005089040050890A9 -S315400508A04005089840050898400508A0400508A059 -S315400508B0400508A8400508A8400508B0400508B009 -S315400508C0400508B8400508B8400508C0400508C0B9 -S315400508D0400508C8400508C8400508D0400508D069 -S315400508E0400508D8400508D8400508E0400508E019 -S315400508F0400508E8400508E8400508F0400508F0C9 -S31540050900400508F8400508F8400509004005090076 -S315400509104005090840050908400509104005091024 -S3154005092040050918400509184005092040050920D4 -S315400509304005092840050928400509304005093084 -S315400509404005093840050938400509404005094034 -S3154005095040050948400509484005095040050950E4 -S315400509604005095840050958400509604005096094 -S315400509704005096840050968400509704005097044 -S3154005098040050978400509784005098040050980F4 -S3154005099040050988400509884005099040050990A4 -S315400509A04005099840050998400509A0400509A054 -S315400509B0400509A8400509A8400509B0400509B004 -S315400509C0400509B8400509B8400509C0400509C0B4 -S315400509D0400509C8400509C8400509D0400509D064 -S315400509E0400509D8400509D8400509E0400509E014 -S315400509F0400509E8400509E8400509F0400509F0C4 -S31540050A00400509F8400509F840050A0040050A0071 -S31540050A1040050A0840050A0840050A1040050A101F -S31540050A2040050A1840050A1840050A2040050A20CF -S31540050A3040050A2840050A2840050A3040050A307F -S31540050A4040050A3840050A3840050A4040050A402F -S31540050A5040050A4840050A4840050A5040050A50DF -S31540050A6040050A5840050A5840050A6040050A608F -S31540050A7040050A6840050A6840050A7040050A703F -S31540050A8040050A7840050A7840050A8040050A80EF -S31540050A9040050A8840050A8840050A9040050A909F -S31540050AA040050A9840050A9840050AA040050AA04F -S31540050AB040050AA840050AA840050AB040050AB0FF -S31540050AC040050AB840050AB840050AC040050AC0AF -S31540050AD040050AC840050AC840050AD040050AD05F -S31540050AE040050AD840050AD840050AE040050AE00F -S31540050AF040050AE840050AE840050AF040050AF0BF -S31540050B0040050AF840050AF840050B0040050B006C -S31540050B1040050B0840050B0840050B1040050B101A -S31540050B2040050B1840050B1840050B2040050B20CA -S31540050B3040050B2840050B2840050B3040050B307A -S31540050B4040050B3840050B3840050B4040050B402A -S31540050B5040050B4840050B4840050B5040050B50DA -S31540050B6040050B5840050B5840050B6040050B608A -S31540050B7040050B6840050B6840050B7040050B703A -S31540050B8040050B7840050B780000000040050B88B2 -S31540050B900000000000000000000000000000000208 -S31540050BA000000000000000000000000000000000FA -S31540050BB000000000000000000000000000000000EA -S31540050BC000000000000000000000000000000000DA -S31540050BD000000000000000000000000000000000CA -S31540050BE000000000000000000000000000000000BA -S31540050BF000000000000000000000000000000000AA -S31540050C000000000000000000000000000000000099 -S31540050C100000000000000000000000000000000089 -S31540050C200000000000000000000000000000000079 -S31540050C3080000100000000080000000700000006D3 -S31540050C40000000030000000000000000FFFF8AD0FE -S30940050C5080000310C2 +S31540048C200000000000000000800003100000000067 +S31540048C30000000008000010000000008000000075A +S31540048C40000000060000000300000000FFFF8AD079 S70540000000BA diff --git a/designs/leon3-xilinx-ml605/sram.srec b/designs/leon3-xilinx-ml605/sram.srec index 1f61725e..7fa507bf 100755 --- a/designs/leon3-xilinx-ml605/sram.srec +++ b/designs/leon3-xilinx-ml605/sram.srec @@ -1,11 +1,11 @@ S00C00007372616D2E7372656365 -S31540000000881000000910006C81C1207401000000B6 +S31540000000881000000910006C81C122980100000090 S31540000010A1480000A75000001080203EAC102001EF S3154000002091D0200001000000010000000100000006 S3154000003091D02000010000000100000001000000F6 -S31540000040A14800002910006B81C523AC01000000C7 -S31540000050A14800002910006981C522D00100000096 -S31540000060A14800002910006981C5233C0100000019 +S31540000040A14800002910006C81C521EC0100000088 +S31540000050A14800002910006981C522A401000000C2 +S31540000060A14800002910006981C523100100000045 S3154000007091D02000010000000100000001000000B6 S3154000008091D02000010000000100000001000000A6 S31540000090A1480000A75000001080201EAC10200987 @@ -16,21 +16,21 @@ S315400000D091D0200001000000010000000100000056 S315400000E091D0200001000000010000000100000046 S315400000F091D0200001000000010000000100000036 S3154000010091D0200001000000010000000100000025 -S31540000110AE102001A148000010806A35A7500000AB -S31540000120AE102002A148000010806A31A75000009E -S31540000130AE102003A148000010806A2DA750000091 -S31540000140AE102004A148000010806A29A750000084 -S31540000150AE102005A148000010806A25A750000077 -S31540000160AE102006A148000010806A21A75000006A -S31540000170AE102007A148000010806A1DA75000005D -S31540000180AE102008A148000010806A19A750000050 -S31540000190AE102009A148000010806A15A750000043 -S315400001A0AE10200AA148000010806A11A750000036 -S315400001B0AE10200BA148000010806A0DA750000029 -S315400001C0AE10200CA148000010806A09A75000001C -S315400001D0AE10200DA148000010806A05A75000000F -S315400001E0AE10200EA148000010806A01A750000002 -S315400001F0AE10200FA1480000108069FDA7500000F6 +S31540000110AE102001A148000010806A2AA7500000B6 +S31540000120AE102002A148000010806A26A7500000A9 +S31540000130AE102003A148000010806A22A75000009C +S31540000140AE102004A148000010806A1EA75000008F +S31540000150AE102005A148000010806A1AA750000082 +S31540000160AE102006A148000010806A16A750000075 +S31540000170AE102007A148000010806A12A750000068 +S31540000180AE102008A148000010806A0EA75000005B +S31540000190AE102009A148000010806A0AA75000004E +S315400001A0AE10200AA148000010806A06A750000041 +S315400001B0AE10200BA148000010806A02A750000034 +S315400001C0AE10200CA1480000108069FEA750000028 +S315400001D0AE10200DA1480000108069FAA75000001B +S315400001E0AE10200EA1480000108069F6A75000000E +S315400001F0AE10200FA1480000108069F2A750000001 S3154000020091D0200001000000010000000100000024 S3154000021091D0200001000000010000000100000014 S3154000022091D0200001000000010000000100000004 @@ -129,10 +129,10 @@ S315400007E091D020000100000001000000010000003F S315400007F091D020000100000001000000010000002F S3154000080091D020000100000001000000010000001E S3154000081091D020000100000001000000010000000E -S31540000820A14800002910006A81C52110010000007E -S31540000830A1480000108067DBA750000001000000BF +S31540000820A14800002910006A81C520E401000000AB +S31540000830A1480000108067D0A750000001000000CA S3154000084091D02000010000000100000001000000DE -S31540000850A14800002910006A81C520F4010000006B +S31540000850A14800002910006A81C520C80100000097 S3154000086091D02000010000000100000001000000BE S3154000087091D02000010000000100000001000000AE S3154000088091D020000100000001000000010000009E @@ -255,250 +255,250 @@ S31540000FC091D0200001000000010000000100000057 S31540000FD091D0200001000000010000000100000047 S31540000FE091D0200001000000010000000100000037 S31540000FF091D0200001000000010000000100000027 -S315400010009DE3BFC0051001438410A0600710014452 -S315400010108610E188821000008620C00286A0E00883 -S3154000102036BFFFFFC038800311100144901221885B -S31540001030C02200004000666801000000400066686B -S31540001040010000004000681A010000001110006D08 -S31540001050901221B040006168010000004000694ED6 -S3154000106001000000400000430100000040006745C9 -S315400010700100000081C7E00881E800009DE3BF98B9 -S3154000108023100143C20C606080A0600012800015EE -S315400010902110008010800005C204200C9FC3400030 -S315400010A0C224200CC204200CDA00400080A3600059 -S315400010B012BFFFFB82006004030000008210600044 -S315400010C080A0600002800006821020011110006D91 -S315400010D06FFFFBCC9012214082102001C22C606031 -S315400010E081C7E00881E800009DE3BF9881C7E0081A -S315400010F081E800009DE3BF98030000008210600075 -S315400011001110006D1310014380A060009012214021 -S3154000111002800004921260646FFFFBBA0100000077 -S315400011201B100144C203618880A060000280000950 -S31540001130B0136188030000008210600080A0600048 -S3154000114002800004010000006FFFFBAE81E8000052 -S315400011500100000081C7E00881E800009DE3BF98D8 -S3154000116081C7E00881E8000081C3E0080100000073 -S315400011709DE3BF9840000007010000004000014683 -S31540001180010000004000000E81E800000100000060 -S315400011909DE3BF98400000290100000080A2200086 -S315400011A01280000503100080D80060109A102001BC -S315400011B0DA23201081C7E00891E820000310008060 -S315400011C0D80060109A102001DA23201481C3E00869 -S315400011D09010200003100080DA006010D0234000F9 -S315400011E081C3E0089010200003100080DA006010F0 -S315400011F0D023600881C3E0089010200003100080CF -S31540001200DA006010D023600481C3E008901020000B -S3154000121013100080921260149010200081C3E008E1 -S31540001220D0EA4020901020001310008092126014E3 -S3154000123081C3E008D0224000914440009132201CF6 -S3154000124081C3E008900A200F81C3E008D0820020C5 -S315400012509010200C81C3E008D08200408210000824 -S3154000126080A20009148000039022000990224001C8 -S3154000127081C3E00801000000932A60028210200129 -S31540001280C22200099810200080A3000A1680000A96 -S3154000129096102001832B2002DA02000180A0000D67 -S315400012A0826020009803200180A3000A06BFFFFA4F -S315400012B0960AC00180A2E00002BFFFF49810200009 -S315400012C081C3E008010000009DE3BF98C2062010DC -S315400012D08330601CA0100018A400600180A4A00107 -S315400012E00280006CB0103FFF7FFFFFD4010000007A -S315400012F0AA100008912A20047FFFFFBC9002200715 -S315400013007FFFFFD40100000003020000808A000135 -S315400013100280005C010000009A05600182102001F5 -S315400013208328400D11100080C2242010901220A066 -S31540001330921000157FFFFFD1941000120310008019 -S3154000134082106018A12D6002C0204010DA004010C3 -S31540001350A610000180A36009291001431480002BC8 -S31540001360AC1000017FFFFFAB0100000080A220000F -S3154000137012BFFFFD01000000B010200080A6001241 -S31540001380168000140100000010800005A21000160F -S3154000139080A600121680000F01000000832E200256 -S315400013A0D0044010D20440017FFFFFADB0062001BB -S315400013B080A2200104BFFFF7901020027FFFFF901C -S315400013C00100000080A6001206BFFFF6832E200211 -S315400013D0C205207C82006001C225207C7FFFFF92EF -S315400013E001000000C204C01082006001C224C01087 -S315400013F0DA04C01080A3600904BFFFDB111000802F -S31540001400108000049012205C111000809012205C25 -S31540001410921000157FFFFF9994100012832CA002B2 -S3154000142082004012A0004001DA05207C80A4000D15 -S3154000143002800004231001437FFFFF7190102003B8 -S31540001440C204607C80A060000480000601000000A9 -S31540001450C204607C80A400011680000580A560005F -S315400014607FFFFF679010200380A56000228000095F -S31540001470B010200091D0200010800006B01020004F -S315400014807FFFFF5F9010200110BFFFA59A05600106 -S3154000149081C7E00881E800009DE3BF98C20620109E -S315400014A0A01000188330601C80A0600002800009F4 -S315400014B0B0103FFF7FFFFF610100000080A22000C7 -S315400014C0128000040300003F821063FFC2242010F4 -S315400014D081C7E00881E800009DE3BF98C20620105E -S315400014E08330601CA400600180A4A00102800068D3 -S315400014F0B0103FFF7FFFFF5101000000AA10000817 -S31540001500912A20047FFFFF39900220077FFFFF5179 -S315400015100100000003020000808A0001028000589A -S315400015200100000011100080901220A092100015BA -S315400015307FFFFF5294100012031000808210601843 -S31540001540A12D6002C0204010DA004010A610000114 -S3154000155080A36009291001431480002BAC100001C0 -S315400015607FFFFF2C0100000080A2200012BFFFFD7C -S3154000157001000000B010200080A600121680001462 -S315400015800100000010800005A210001680A600127F -S315400015901680000F01000000832E2002D004401068 -S315400015A0D20440017FFFFF2EB006200180A2200119 -S315400015B004BFFFF7901020027FFFFF1101000000DB -S315400015C080A6001206BFFFF6832E2002C205207CAD -S315400015D082006001C225207C7FFFFF1301000000CE -S315400015E0C204C01082006001C224C010DA04C010D8 -S315400015F080A3600904BFFFDB111000801080000447 -S315400016009012205C111000809012205C9210001500 -S315400016107FFFFF1A94100012832CA0028200401212 -S31540001620A0004001DA05207C80A4000D0280000461 -S31540001630231001437FFFFEF290102003C204607C1A -S3154000164080A060000480000601000000C204607CA7 -S3154000165080A400011680000580A560007FFFFEE89B -S315400016609010200380A5600022800009B010200061 -S3154000167091D0200010800006B01020007FFFFEE0D1 -S315400016809010200110BFFFA91110008081C7E0080B -S3154000169081E800009DE3BF983120000092162200A9 -S315400016A09410200040003E589010200140003B62BC -S315400016B0901622009016230040003EBD921020084E -S315400016C0B016210040003A4F81E8000001000000BA -S315400016D09DE3BF9821200000921422009410200020 -S315400016E040003E499010200140003B539014220098 -S315400016F09210001840003EAE90142300B014210012 -S3154000170040003A4081E8000001000000000000006F -S315400017100000000000000000000000000000000083 -S315400017200000000000000000000000000000000073 -S315400017300000000000000000000000000000000063 -S315400017400000000000000000000000000000000053 -S315400017500000000000000000000000000000000043 -S315400017600000000000000000000000000000000033 -S315400017700000000000000000000000000000000023 -S315400017800000000000000000000000000000000013 -S315400017900000000000000000000000000000000003 -S315400017A000000000000000000000000000000000F3 -S315400017B000000000000000000000000000000000E3 -S315400017C000000000000000000000000000000000D3 -S315400017D000000000000000000000000000000000C3 -S315400017E000000000000000000000000000000000B3 -S315400017F000000000000000000000000000000000A3 -S315400018000000000000000000000000000000000092 -S315400018100000000000000000000000000000000082 -S315400018200000000000000000000000000000000072 -S315400018300000000000000000000000000000000062 -S315400018400000000000000000000000000000000052 -S315400018500000000000000000000000000000000042 -S315400018600000000000000000000000000000000032 -S315400018700000000000000000000000000000000022 -S315400018800000000000000000000000000000000012 -S315400018900000000000000000000000000000000002 -S315400018A000000000000000000000000000000000F2 -S315400018B000000000000000000000000000000000E2 -S315400018C000000000000000000000000000000000D2 -S315400018D000000000000000000000000000000000C2 -S315400018E000000000000000000000000000000000B2 -S315400018F000000000000000000000000000000000A2 -S315400019000000000000000000000000000000000091 -S315400019100000000000000000000000000000000081 -S315400019200000000000000000000000000000000071 -S315400019300000000000000000000000000000000061 -S315400019400000000000000000000000000000000051 -S315400019500000000000000000000000000000000041 -S315400019600000000000000000000000000000000031 -S315400019700000000000000000000000000000000021 -S315400019800000000000000000000000000000000011 -S315400019900000000000000000000000000000000001 -S315400019A000000000000000000000000000000000F1 -S315400019B000000000000000000000000000000000E1 -S315400019C000000000000000000000000000000000D1 -S315400019D000000000000000000000000000000000C1 -S315400019E000000000000000000000000000000000B1 -S315400019F000000000000000000000000000000000A1 -S31540001A000000000000000000000000000000000090 -S31540001A100000000000000000000000000000000080 -S31540001A200000000000000000000000000000000070 -S31540001A300000000000000000000000000000000060 -S31540001A400000000000000000000000000000000050 -S31540001A500000000000000000000000000000000040 -S31540001A600000000000000000000000000000000030 -S31540001A700000000000000000000000000000000020 -S31540001A800000000000000000000000000000000010 -S31540001A900000000000000000000000000000000000 -S31540001AA000000000000000000000000000000000F0 -S31540001AB000000000000000000000000000000000E0 -S31540001AC000000000000000000000000000000000D0 -S31540001AD000000000000000000000000000000000C0 -S31540001AE000000000000000000000000000000000B0 -S31540001AF000000000000000000000000000000000A0 -S31540001B00000000000000000000000000000000008F -S31540001B10000000000000000000000000000000007F -S31540001B20000000000000000000000000000000006F -S31540001B30000000000000000000000000000000005F -S31540001B40000000000000000000000000000000004F -S31540001B50000000000000000000000000000000003F -S31540001B60000000000000000000000000000000002F -S31540001B70000000000000000000000000000000001F -S31540001B80000000000000000000000000000000000F -S31540001B9000000000000000000000000000000000FF -S31540001BA000000000000000000000000000000000EF -S31540001BB000000000000000000000000000000000DF -S31540001BC000000000000000000000000000000000CF -S31540001BD000000000000000000000000000000000BF -S31540001BE000000000000000000000000000000000AF -S31540001BF0000000000000000000000000000000009F -S31540001C00000000000000000000000000000000008E -S31540001C10000000000000000000000000000000007E -S31540001C20000000000000000000000000000000006E -S31540001C30000000000000000000000000000000005E -S31540001C40000000000000000000000000000000004E -S31540001C50000000000000000000000000000000003E -S31540001C60000000000000000000000000000000002E -S31540001C70000000000000000000000000000000001E -S31540001C80000000000000000000000000000000000E -S31540001C9000000000000000000000000000000000FE -S31540001CA000000000000000000000000000000000EE -S31540001CB000000000000000000000000000000000DE -S31540001CC000000000000000000000000000000000CE -S31540001CD000000000000000000000000000000000BE -S31540001CE000000000000000000000000000000000AE -S31540001CF0000000000000000000000000000000009E -S31540001D00000000000000000000000000000000008D -S31540001D10000000000000000000000000000000007D -S31540001D20000000000000000000000000000000006D -S31540001D30000000000000000000000000000000005D -S31540001D40000000000000000000000000000000004D -S31540001D50000000000000000000000000000000003D -S31540001D60000000000000000000000000000000002D -S31540001D70000000000000000000000000000000001D -S31540001D80000000000000000000000000000000000D -S31540001D9000000000000000000000000000000000FD -S31540001DA000000000000000000000000000000000ED -S31540001DB000000000000000000000000000000000DD -S31540001DC000000000000000000000000000000000CD -S31540001DD000000000000000000000000000000000BD -S31540001DE000000000000000000000000000000000AD -S31540001DF0000000000000000000000000000000009D -S31540001E00000000000000000000000000000000008C -S31540001E10000000000000000000000000000000007C -S31540001E20000000000000000000000000000000006C -S31540001E30000000000000000000000000000000005C -S31540001E40000000000000000000000000000000004C -S31540001E50000000000000000000000000000000003C -S31540001E60000000000000000000000000000000002C -S31540001E70000000000000000000000000000000001C -S31540001E80000000000000000000000000000000000C -S31540001E9000000000000000000000000000000000FC -S31540001EA000000000000000000000000000000000EC -S31540001EB000000000000000000000000000000000DC -S31540001EC000000000000000000000000000000000CC -S31540001ED000000000000000000000000000000000BC -S31540001EE000000000000000000000000000000000AC -S31540001EF0000000000000000000000000000000009C -S31540001F00000000000000000000000000000000008B -S31540001F10000000000000000000000000000000007B -S31540001F20000000000000000000000000000000006B -S31540001F30000000000000000000000000000000005B +S315400010009DE3BFC0051001238410A05007100125A1 +S315400010108610E168821000008620C00286A0E008A3 +S3154000102036BFFFFFC038800311100125901221689A +S31540001030C02200004000665D010000004000665D81 +S3154000104001000000400068A301000000111000707C +S31540001050901220BC400061C30100000040006C11AA +S3154000106001000000400002300100000040006730EF +S315400010700100000081C7E00881E800009DE3BFA0B1 +S3154000108021100123C20C205080A060001280002253 +S3154000109023100123C20460542710007025100070ED +S315400010A0A614E024A414A028A4248013A53CA002DE +S315400010B0A404BFFF80A040123A80000E0300000047 +S315400010C0A21460548200600185286002C224400058 +S315400010D0C204C0029FC0400001000000C20440009C +S315400010E080A040120ABFFFF98200600103000000A1 +S315400010F08210600080A060000280000682102001FD +S315400011001110006E6FFFFBBF90122020821020014D +S31540001110C22C205081C7E00881E800009DE3BFA0B3 +S3154000112081C7E00881E800009DE3BFA003000000FE +S315400011308210600080A06000228000081110012506 +S315400011401110006E13100123901220206FFFFBAD8B +S315400011509212605811100125C202216880A06000D9 +S31540001160028000099012216803000000821060008E +S3154000117080A0600002800004010000009FC0400083 +S315400011800100000081C7E00881E800009DE3BFA0A0 +S3154000119081C7E00881E800008292200002800015A5 +S315400011A001000000C400400080A0A0002280001181 +S315400011B092102001C600600880A240032A800008E1 +S315400011C08200600C8800FFFF8401000280A240027A +S315400011D02880000AC20060048200600CC4004000FF +S315400011E080A0A00032BFFFF5C60060089210200123 +S315400011F081C3E00890100009920240019222400308 +S3154000120081C3E008901000099DE3BFA0C2064000DC +S3154000121080A060001280001582007FFFC206600831 +S3154000122080A0600322800014C206600CD2062014FF +S31540001230D006600C4000615394102034C206600C06 +S3154000124082006034C226600CC2066004B0007FFE95 +S3154000125082007FFFB0104018C2266004B136201FBE +S3154000126081C7E00881E80000C226400081C7E00847 +S3154000127091E82000C4062014C6008000C620400025 +S31540001280C600A004C6206004C400A008C4206008AC +S31540001290C206600C8200600CC226600CC206600466 +S315400012A0B0007FFE82007FFFB0104018C226600467 +S315400012B0B136201F81C7E00881E800009DE3BFA04A +S315400012C0C2064000C406A0149B3060188930600CEA +S315400012D088092FFF8608601F833060058208601FDB +S315400012E0DA2EA011C836A012C228A001C628800056 +S315400012F01700003F9612E3F0C2066004C220A02801 +S3154000130082102000C6066008C620A02CC606600CC7 +S31540001310C620A03086064001C600E01080A0E0004E +S315400013209A1020000280000B881020009B30E004B9 +S315400013308808C00B9B2B6014892920109808E00F61 +S315400013409A20000D80A320030280000A8808C0046A +S31540001350860080018200600480A06010DA20E014DC +S3154000136012BFFFEDC820E00481C7E00881E8000015 +S315400013708931200C9A380003881100189B33600489 +S315400013809A0B6FFF9B2B60089A1360FF10BFFFF10B +S315400013909A0360019DE3BEF8F627A050FA27A058AD +S315400013A080A660000280010AA81020102B0003FCD2 +S315400013B0A0102000AA160015A407BFA4A607BFDCEC +S315400013C0A207BF7010800005AC10200180A4001455 +S315400013D01680003437000040932C200594102020BE +S315400013E092024015400060E790100012C207BFA469 +S315400013F080A0600022BFFFF6A0042001C024E010B8 +S31540001400C024C000C024E004C024E008C024E00C8E +S31540001410C0244000C0246004C0246008C024600C7E +S31540001420C0246010C0246014C0246018C024601C0E +S31540001430C0246020C0246024C0246028C024602CBE +S31540001440C0246030E227BFF0EC2FBFEC90100018AC +S31540001450921000127FFFFF9A94100013C20FBFED47 +S3154000146080A0401C32BFFFDAA0042001C217BFEEA5 +S31540001470C407A05880A0400232BFFFD5A004200177 +S31540001480D207A0507FFFFF619010001380A220007A +S3154000149002BFFFCFA004200181C7E00891E82001E8 +S315400014A02D0003FE3B003FFF3300003F9206A04065 +S315400014B0AC160016BA1763FFB21663F0A0102000F0 +S315400014C0A607BFDCA207BF70B616E020AA07BFC4B6 +S315400014D0AE07BFF410800005D227BF6C80A5001070 +S315400014E0048000AE01000000932C200590100012ED +S315400014F092024016400060A394102020C207BFA469 +S3154000150080A0600022BFFFF6A004200182102001C7 +S31540001510C024E010C22FBFECC024C000C024E004A9 +S31540001520C024E008C024E00CC0244000C02460046D +S31540001530C0246008C024600CC0246010C02460141D +S31540001540C0246018C024601CC0246020C0246024CD +S31540001550C0246028C024602CC0246030E227BFF03D +S3154000156090100018921000127FFFFF559410001340 +S31540001570C20FBFED80A7000102800051C217BFEE27 +S31540001580C207BFEC8208401D80A0401B2280005B42 +S31540001590C207BFF0050000408410A00680A04002AC +S315400015A032BFFFCFA0042001C207BFF0C6006004CF +S315400015B088102003030003FC8210C001108000063F +S315400015C08400607880A0400222BFFFC5A0042001AD +S315400015D082006008DA00400080A3600002BFFFFA84 +S315400015E0D8006004920B601F973360189533600CE7 +S315400015F09B3360059A0B601F940AAFFFC025C0005D +S31540001600D22FBFF4DA2FBFF5130003FF9B3320041C +S31540001610921263FF9A0B6FFF9B2B60089A2A400D2C +S315400016209A036001133FFC00DA27BFFCC025400047 +S315400016309A0B0019C02560049B2B6004980B000987 +S31540001640C02560089933200CC025600C980B400CCF +S31540001650EE27BFD898130003C82FBFD4D62FBFD5C7 +S31540001660D437BFD680A7000B12BFFFD7D827BFF805 +S31540001670DA07A05880A3400A12BFFFD480A04002D8 +S31540001680D207A050C227BF60C427BF64C627BF5C2D +S31540001690C827BF687FFFFEDD90100015C207BF60F8 +S315400016A080A22000C407BF64C607BF5C12BFFF7B91 +S315400016B0C807BF6810BFFFC580A04002DA07A05820 +S315400016C080A3400112BFFFB0C207BFECD207A050B3 +S315400016D07FFFFECE9010001380A2200012BFFF6F46 +S315400016E0C207BFEC8208401D80A0401B12BFFFAB63 +S315400016F005000040C207BFF0C408600180A0A000FA +S3154000170022BFFF77A004200180A6A0000280001718 +S31540001710D000602C82102000C406800180A0A0006A +S315400017200280000880A2000222BFFF6DA0042001B3 +S315400017308200600480A0604032BFFFF9C406800189 +S31540001740C607BF6C8210001AC400400080A0A000EB +S3154000175022800014D02040008200600480A0400314 +S3154000176032BFFFFBC4004000D607A050DA07A0589E +S31540001770921000139410001A7FFFFF079810001C68 +S3154000178080A2200012BFFF45A004200180A50010C2 +S3154000179014BFFF57932C200581C7E00891E820002D +S315400017A0D607A05092100013DA07A0589410001ADA +S315400017B07FFFFEF99810001C80A2200012BFFF3761 +S315400017C0A004200110BFFFF380A5001080A6A00052 +S315400017D00280000B8210001A8606A040C40040001A +S315400017E080A0A00022800008F02040008200600413 +S315400017F080A0400332BFFFFBC400400010BFFEEC98 +S31540001800A810204010BFFEEAA81020409DE3BF501C +S315400018109407BFB08210200398100018C022A00879 +S31540001820C022A00CC022A010C022A014C022A01822 +S31540001830C022A01CC022A020C022A024C022A028D2 +S31540001840C022A02CC022A030C022A034C022A03882 +S31540001850C022A03CA0102001F427BFFCC027BFB087 +S31540001860C027BFB4C027BFF09A100019E027BFF4C5 +S31540001870C227BFF8921020009607BFF07FFFFEC632 +S31540001880113FFC00F007BFF4B024001881C7E00800 +S3154000189081E800009DE3BF9090102001A007BFF4AF +S315400018A09210200C7FFFFFDA9410001080A22001D6 +S315400018B00280001A0310012390102001921020117B +S315400018C07FFFFFD39410001080A220010280000DFC +S315400018D00710012494100010901020017FFFFFCCC8 +S315400018E09210200D80A220011280000403100123D3 +S315400018F0C407BFF8C420602C81C7E00881E8000017 +S31540001900C207BFF884006010C220E0A40310012380 +S3154000191010BFFFF1C4206028C407BFF810BFFFE71F +S31540001920C42060349DE3BFA04000002301000000B6 +S3154000193040000174010000004000000381E80000FF +S315400019400100000003100080C200600C84102001DA +S3154000195090102000C420601481C3E00801000000FC +S3154000196003100080C200600C841000089010200014 +S31540001970C420400081C3E00801000000031000803D +S31540001980C200600C8410000890102000C42060083B +S3154000199081C3E0080100000003100080C200600C13 +S315400019A08410000890102000C420600481C3E00821 +S315400019B0010000009DE3BFA04000001401000000AC +S315400019C080A220001280000503100080C200600C37 +S315400019D084102001C420601081C7E00891E82000EF +S315400019E013100080921260109010200081C3E0080E +S315400019F0D0EA402090102000131000809212601010 +S31540001A0081C3E008D0224000914440009132201C1E +S31540001A1081C3E008900A200F81C3E008D0820020ED +S31540001A209010200C81C3E008D08200409DE3BFA007 +S31540001A30C2062010A01000188330601C80A06000F1 +S31540001A4002800009B0103FFF7FFFFFF00100000059 +S31540001A5080A22000128000040300003F821063FF32 +S31540001A60C224201081C7E00881E800009DE3BFA0A2 +S31540001A70E4062010A534A01CA404A00180A4A00163 +S31540001A800280003CB0103FFF7FFFFFE001000000F6 +S31540001A90AA100008912A20047FFFFFB99002200770 +S31540001AA07FFFFFE00100000003020000808A000182 +S31540001AB00280007401000000A72D6002091000801A +S31540001AC0881120148210200184102001C2210013A5 +S31540001AD08210200080A480011480000987286002BB +S31540001AE080A0A000128000258210200084102001D2 +S31540001AF080A4800104BFFFFB87286002C601000363 +S31540001B0080A00003820060018660200010BFFFF2C3 +S31540001B1084088003C205A074852CA003A12CA001D3 +S31540001B20A004000280A4000102800004010000001D +S31540001B307FFFFF9A90102003C205A07480A060002A +S31540001B400480000603100123C200607480A40001D3 +S31540001B501680000580A560007FFFFF90901020034F +S31540001B6080A5600002800003B010200091D02000C4 +S31540001B7081C7E00881E8000023100080A214609C21 +S31540001B802D100123C0244013C204401380A06009D5 +S31540001B901480002709100080A815A0747FFFFF91CC +S31540001BA00100000080A2200012BFFFFD80A4A0001B +S31540001BB00480001301000000A0102000C40440135C +S31540001BC0832C2002C204400180A08001A004200191 +S31540001BD004800003862040028620800180A0E00128 +S31540001BE00480000580A480107FFFFF6C90102002C7 +S31540001BF080A4801014BFFFF201000000C20500005F +S31540001C0082006001C22500007FFFFF7B01000000CB +S31540001C10C204401382006001C2244013C204401330 +S31540001C2080A0600904BFFFDE09100080881120589B +S31540001C308210200184102001C2210013821020004E +S31540001C4080A48001148000098728600280A0A0003B +S31540001C5012BFFFB1821020008410200180A48001B1 +S31540001C6004BFFFFB87286002C601000380A0000373 +S31540001C70820060018660200010BFFFF28408800366 +S31540001C807FFFFF469010200110BFFF8DA72D6002F9 +S31540001C909DE3BFA0E4062010A0100018A534A01CA8 +S31540001CA0A404A00180A4A0010280003FB0103FFF21 +S31540001CB07FFFFF5601000000AA100008912A200469 +S31540001CC07FFFFF2F900220077FFFFF560100000095 +S31540001CD003020000808A00010280007701000000B4 +S31540001CE0A72D60020910008088112014821020015F +S31540001CF08405600185284002C4242010C2210013B7 +S31540001D00841020018210200080A4800114800009E4 +S31540001D108728600280A0A000128000258210200043 +S31540001D208410200180A4800104BFFFFB8728600245 +S31540001D30C601000380A00003820060018660200087 +S31540001D4010BFFFF284088003C205A074852CA0034F +S31540001D50A12CA001A004000280A40001028000047E +S31540001D60010000007FFFFF0D90102003C205A07404 +S31540001D7080A060000480000603100123C200607446 +S31540001D8080A400011680000580A560007FFFFF0348 +S31540001D909010200380A5600002800003B010200050 +S31540001DA091D0200081C7E00881E800002310008020 +S31540001DB0A214609C2D100123C0244013C20440137A +S31540001DC080A060091480002709100080A815A0741F +S31540001DD07FFFFF040100000080A2200012BFFFFD2C +S31540001DE080A4A0000480001301000000A010200081 +S31540001DF0C4044013832C2002C204400180A0800109 +S31540001E00A004200104800003862040028620800131 +S31540001E1080A0E0010480000580A480107FFFFEDFE3 +S31540001E209010200280A4801014BFFFF20100000031 +S31540001E30C205000082006001C22500007FFFFEEE61 +S31540001E4001000000C204401382006001C224401316 +S31540001E50C204401380A0600904BFFFDE0910008061 +S31540001E60881120588210200184102001C2210013BD +S31540001E708210200080A48001148000098728600217 +S31540001E8080A0A00012BFFFB1821020008410200164 +S31540001E9080A4800104BFFFFB87286002C6010003BF +S31540001EA080A00003820060018660200010BFFFF220 +S31540001EB0840880037FFFFEB99010200110BFFF8A7F +S31540001EC0A72D60029DE3BFA02120000094102000B2 +S31540001ED09214220040003C4F9010200140003B07E6 +S31540001EE0901422009210001840003C939014230056 +S31540001EF0B01421004000384381E800000100000092 +S31540001F009DE3BFA0312000009410200092162200CD +S31540001F1040003C409010200140003AF890162200C4 +S31540001F209016230040003C8492102008B0162100F1 +S31540001F304000383481E80000010000000000000045 S31540001F40000000000000000000000000000000004B S31540001F50000000000000000000000000000000003B S31540001F60000000000000000000000000000000002B @@ -2049,7 +2049,7 @@ S31540007FE0000000000000000000000000000000004B S31540007FF0000000000000000000000000000000003B S315400080009DE3BF9081C7E00881E8000003000010AF S31540008010C48000408088800112BFFFFE010000003E -S31540008020EC6FBFF89DE3BF909DE3BF909DE3BF908B +S31540008020C46FBFF89DE3BF909DE3BF909DE3BF90B3 S315400080309DE3BF909DE3BF909DE3BF9021044444E0 S31540008040A014211123088888A2146222250CCCCCC6 S31540008050A414A33327111111A614E044291555552C @@ -2080,7 +2080,7 @@ S315400081D00100000001000000010000000100000055 S315400081E09DE3BF90FC2780009007A0019410001EDD S315400081F0D1E7816AD1E7816A9402A0019002200109 S31540008200D1E7816AD1E7816AD60780009622C01EEF -S31540008210B0A2E00202800004900020017FFFE3F854 +S31540008210B0A2E00202800004900020017FFFE5DF6B S315400082200100000081C7E00881E80000010000006D S3154000823001000000010000000100000001000000F4 S3154000824001000000010000000100000001000000E4 @@ -4095,3251 +4095,3427 @@ S3154000FFC001000000010000000100000001000000E7 S3154000FFD001000000010000000100000001000000D7 S3154000FFE001000000010000000100000001000000C7 S3154000FFF001000000010000000100000001000000B7 -S315400100009DE3BF987FFFC4741100403080A2200059 -S31540010010128000F382102001C226200CC026200443 +S315400100009DE3BFA07FFFC6571100403080A220006C +S31540010010128000AF82102001C226200CC026200487 S31540010020C0260000C026200882102002C2262008D1 S31540010030C0260000C026000082102003C2262008E8 -S315400100409A102083DA262008A2102063C0260000D9 -S31540010050A2847FFF1CBFFFFE01000000A2102063A7 -S31540010060C2060000A2847FFF1CBFFFFE8210200251 -S31540010070C2262008A4062004C28480208088600409 -S3154001008002BFFFFE01000000C0262008C026000076 -S31540010090A6102001C2848020833860148208603F04 -S315400100A080A0600122800093A604E0018210200313 -S315400100B0C2262008C2848020808860010280000711 -S315400100C080886004C2860020C284802080886001C6 -S315400100D012BFFFFD8088600402BFFFFB808860027B -S315400100E002BFFFF901000000C0262008C0262004F7 -S315400100F080A4E0010480000821100080C284802091 -S315400101008208608080A06001028000AE010000008C -S3154001011021100080DA4C20F0DA260000C2848020CB -S315400101208208600480A060010280009A01000000FC -S31540010130C284802080A4E001048000208210200136 -S31540010140A210200180A440131680000D2B100080C0 -S31540010150A81420F0E00560E8901000114000247CCE -S3154001016092100010C24D0008A2046001C226000090 -S3154001017080A4401306BFFFFA90100011C28480206C -S315400101808208608080A06001028000920100000028 -S31540010190C2848020833860148208603F80A0401367 -S315400101A002800004010000007FFFC4159010200664 -S315400101B0C284802082102001C226200CDA8480204D -S315400101C0808B60011280006801000000821020834C -S315400101D0C226200880A4E0010280005201000000EE -S315400101E0C28480208088640002BFFFFE01000000B7 -S315400101F0C284802080886001028000530100000093 -S3154001020080A4E00124800012A2102000C284802034 -S315400102108330601A80A04013028000040100000070 -S315400102207FFFC3F790102009C28480208088610037 -S315400102300280005501000000C2848020808864004D -S315400102400280004D01000000A210200080A440134E -S315400102501680001203100080A81060F02B10008059 -S31540010260E08600209010001140002439D20560E854 -S31540010270C24D0008A204600180A040100280000423 -S315400102809010200C7FFFC3DE0100000080A44013C4 -S3154001029006BFFFF40100000080A4E0010480000FC6 -S315400102A001000000C28480208088610012800042E3 -S315400102B001000000C28480208330601A80A0600063 -S315400102C01280003A01000000C284802080886400C8 -S315400102D01280003301000000C284802080886001C2 -S315400102E01280001D01000000C02620083080003C1D -S315400102F0C0260000C2848020833860148208603F93 -S3154001030080A0401322BFFFFBA604E00180A4E001C8 -S3154001031034BFFF67A604FFFF10BFFF6682102003AC -S31540010320C28480208088600112BFFFB201000000B4 -S31540010330C28480208088600102BFFFFA010000006C -S3154001034030BFFFAC7FFFC3AE9010200810BFFFAE99 -S3154001035080A4E0017FFFC3AA9010200CC02620088C -S315400103603080001F7FFFC3A69010200710BFFF9962 -S31540010370821020837FFFC3A29010200B10BFFFB4D1 -S31540010380A21020007FFFC39E9010200A30BFFFAB12 -S315400103907FFFC39B9010200130BFFF667FFFC3984C -S315400103A09010200B30BFFFCD7FFFC3959010200EDC -S315400103B030BFFFC67FFFC3929010200D30BFFFBEF6 -S315400103C07FFFC38F9010200410BFFF532110008080 -S315400103D07FFFC38B9010200530BFFF6E81C7E008B9 -S315400103E091E8200017100143DA02E08090022010C4 -S315400103F09B2B60029812E080D023000DC202E08060 -S3154001040082006001C222E08081C3E0080100000051 -S31540010410C0220000C022204082103FFFC222200C91 -S315400104209A10200103100143DA20608081C3E0085D -S31540010430010000009DE3BF7803100144F02060CC29 -S315400104407FFFC365110040347FFFFFF29010001813 -S31540010450A010200123100040921000104000299165 -S31540010460901463E4A004200180A4200F04BFFFFC84 -S3154001047092100010C20620208330601CAE0060013D -S31540010480AC10200080A58017168000EC0300003FC9 -S31540010490B81063FE2B1001430300002AB61062AA6E -S315400104A0BA102001B410001CB2156080832DA00C37 -S315400104B080A5E00114800118A600401880A5A0007F -S315400104C01280010901000000F824E008C204E00896 -S315400104D080A0401C02800004010000007FFFC34849 -S315400104E090102001F824E040C204E04080A0401C66 -S315400104F002800004010000007FFFC34190102002EA -S31540010500C204E00880A0600012BFFFFE01000000A7 -S31540010510C205608080A0601002800005251001435D -S315400105207FFFC3379010200325100143A0102001FF -S31540010530A414A080A2102020832C20029A244010CB -S31540010540D8048001A004200180A3000D028000048C -S31540010550901020047FFFC32A0100000080A4200FD1 -S3154001056004BFFFF7832C2002FA256080F624C000E1 -S31540010570F424E040C204C00080A0401B0280000475 -S31540010580A010001A7FFFC31E90102005C204E04050 -S3154001059080A0401002800004010000007FFFC318C4 -S315400105A090102005F424E008C204E00880A0600011 -S315400105B012BFFFFE01000000C205608080A06010EE -S315400105C002800005251001437FFFC30D90102006D0 -S315400105D025100143A0102001A414A080A210201FC1 -S315400105E09B2C2002C204800D80A04011A004200152 -S315400105F0A2047FFE02800004901020077FFFC30003 -S315400106000100000080A4200704BFFFF79B2C2002B5 -S31540010610A4066028A210201CA0102005C204800058 -S3154001062080A04011A404A004A2047FFE028000041D -S31540010630901020087FFFC2F201000000A0843FFF16 -S315400106401CBFFFF701000000FA27BFE8C207BFE859 -S3154001065082006001C227BFECDA07BFEC9A03600152 -S31540010660DA27BFF0C207BFF082006001C227BFF49C -S315400106709A102006DA27BFD8C024C000C024E04023 -S31540010680FA256080A0102002E024E040E024E00842 -S31540010690834440008088610002800005010000001B -S315400106A0805000018050000180500001C207BFD830 -S315400106B0C227BFDCDA07BFD880A3600602800004E8 -S315400106C0010000007FFFC2CE9010200AE024E0081E -S315400106D001000000C207BFD8C227BFDCDA07BFD876 -S315400106E080A3600602800004010000007FFFC2C4AF -S315400106F09010200AE024E00801000000C027BFDC7A -S31540010700C207BFDC80A06000128000950100000096 -S31540010710C204E00880A0600012BFFFFE0100000095 -S31540010720C205608080A06004028000052100003F70 -S315400107307FFFC2B39010200D2100003FC024E0404E -S31540010740A01423FE9A10200103100143E024E0087F -S31540010750DA206080400003E801000000400003E821 -S3154001076090122F00E024E040C204E04080A06000E7 -S3154001077002BFFFFE01000000C205608080A060024A -S3154001078002800004A01560807FFFC29D9010200E5C -S31540010790C204200480A0601F028000040100000002 -S315400107A07FFFC2979010200F400003D3A81000107E -S315400107B0400003D390023F00A0102002A410202045 -S315400107C0400003CD01000000400003CD90023F00F0 -S315400107D0C2056080A204200180A04011028000046D -S315400107E0901020107FFFC28601000000832C20025A -S315400107F09A248010D8050001A010001180A3000D95 -S3154001080002800004901020117FFFC27D010000008C -S3154001081080A4200F04BFFFEB01000000C024E0408C -S31540010820AC05A00182103FFFC224E00C80A58017D1 -S3154001083006BFFF20832DA00C80A5E0010480004B5C -S3154001084001000000C0262024C206202480A06000AA -S315400108501280003F0100000021040000E026202410 -S31540010860C206202480A0401002800005821020018B -S315400108707FFFC2639010201482102001C2262020DF -S31540010880C0262024C206202480A0401002800004F5 -S31540010890010000007FFFC25A90102015C02620207B -S315400108A0C0262024C206202480A060001280002495 -S315400108B00100000082102002C2262020DA062020F4 -S315400108C0808B60020280001B01000000C0262020B0 -S315400108D0C2062020808860020280002401000000B8 -S315400108E0308000117FFFFECB901000139B2DA01C82 -S315400108F0DA24E024C204E0248330601C80A0401640 -S3154001090002BFFEF2010000007FFFC23D901020129F -S3154001091030BFFEEE7FFFC2359010001610BFFEE9D4 -S3154001092080A5A0007FFFC236901020183080000FAE -S315400109307FFFC2339010201730BFFFE57FFFC230E3 -S315400109409010201610BFFFDD821020027FFFC22CBF -S315400109509010201310BFFFC2210400007FFFC22860 -S315400109609010200B30BFFF6B81C7E00891E8200053 -S3154001097003100143DA0060C8C023600881C3E00860 -S31540010980901020009DE3BF902F100144E205E0CC7A -S31540010990A004610027100143C2042004F024E0C8EA -S315400109A07FFFC2129010201003018000DA04200458 -S315400109B082106020808B40011280010D01000000F1 -S315400109C0DA046100DA27BFF0C204610080A3400166 -S315400109D002800005821020017FFFC209901020028B -S315400109E082102001C2242004DA046100DA27BFF014 -S315400109F0C204610080A34001028001200100000081 -S31540010A00C0242004DA046100DA27BFF0C204610081 -S31540010A1080A340010280000580A720007FFFC1F826 -S31540010A209010200480A72000128000B780A72001E3 -S31540010A30B010200180A6001A16800017A8102001C8 -S31540010A40108000052510004280A6001A168000136A -S31540010A50DA04E0C8A206C0189014A17092100011E1 -S31540010A6080A4601F14BFFFF9B00620014000280D85 -S31540010A7001000000D805E0CCC20320409B2D0011A7 -S31540010A808210400DC223204080A6001A06BFFFF304 -S31540010A90A206C018DA04E0C89606A003C023600483 -S31540010AA0833AE01FC023601098103FFF8330601ED9 -S31540010AB0AA02C001D8236014D823600CA2102000DA -S31540010AC0AD3D600280A720000280008AA810200167 -S31540010AD080A4401C168000ECC204E0C880A7200117 -S31540010AE004800015B010200080A5A00004800013EA -S31540010AF080A0001C9B2C6010832C60188210400D36 -S31540010B00992C60088210400C82104011993D600278 -S31540010B10DA04E0C8C2236020B006200180A7200184 -S31540010B20048000059A03600480A3001814BFFFFAED -S31540010B300100000080A0001CB0603FFF80A6001AA3 -S31540010B4016800016C204E0C82501800080A7200057 -S31540010B50028000058206C01880A720010280008419 -S31540010B608206C011C2242004D804E0C8832D00188F -S31540010B709B3E4018C2232008808B6001128000856D -S31540010B809A10000CB006200180A6001A06BFFFF19C -S31540010B9080A72000C204E0C8C0206008808E6001A2 -S31540010BA012800009B0102000B006200180A6201F47 -S31540010BB014800005833E40188088600122BFFFFCF7 -S31540010BC0B006200180A72000028000068206C018D8 -S31540010BD080A72001028000048216E0208206C0110F -S31540010BE082106020C2242004DA04E0C8832D001854 -S31540010BF0C2236008C203600880A0600012BFFFFEE6 -S31540010C0001000000C2042004808860200280009810 -S31540010C1001000000DA04200403010000808B40013A -S31540010C200280009001000000DA04200403008000E5 -S31540010C30808B40010280008801000000C204200828 -S31540010C40C227BFF0DA04200CDA27BFF4C204E0C899 -S31540010C50992D0018D82060089A100001C203600837 -S31540010C6080A0600012BFFFFE01000000C204200404 -S31540010C70808860200280007501000000DA042004AB -S31540010C8003010000808B40010280006D01000000DD -S31540010C90DA04200403008000808B40010280006555 -S31540010CA001000000DA042008C207BFF080A0400D11 -S31540010CB002800004010000007FFFC1519010200E08 -S31540010CC0DA04200CC207BFF480A0400D0280000563 -S31540010CD0030180007FFFC14A9010200F030180006D -S31540010CE0C224200480A7200012BFFF7AA20460011B -S31540010CF080A4600004BFFF7B80A7200110800062B2 -S31540010D00C204E0C80280003D11100042B01020002C -S31540010D1080A6001C16BFFF60A810200110800005A8 -S31540010D202510004280A6001C16BFFF5CDA04E0C80D -S31540010D30A206C0189014A1709210001180A4601FE1 -S31540010D4014BFFFF9B00620014000275601000000FC -S31540010D50D805E0CCC20320409B2D00118210400DE6 -S31540010D60C223204010BFFFF180A6001CF6242004B8 -S31540010D70D804E0C8832D00189B3E4018C2232008A2 -S31540010D80808B600122BFFF81B00620019A10000CC2 -S31540010D90C203600880A0600012BFFFFE0100000090 -S31540010DA0DA04200403010000808B40010280001E0A -S31540010DB001000000DA04200403008000808B40011A -S31540010DC00280001601000000E4242004C20420042D -S31540010DD08088401222BFFF6DB00620017FFFC10807 -S31540010DE09010200710BFFF69B00620017FFFC104A4 -S31540010DF09010200130BFFEF3901221704000272948 -S31540010E009210001BDA05E0CC832F001BC223604001 -S31540010E1010BFFF22DA04E0C87FFFC0F99010200618 -S31540010E2030BFFFEA7FFFC0F69010200530BFFFE2DA -S31540010E307FFFC0F39010200D30BFFF9B7FFFC0F0B6 -S31540010E409010200C30BFFF937FFFC0ED9010200B18 -S31540010E5030BFFF8B7FFFC0EA9010200A30BFFF787A -S31540010E607FFFC0E79010200930BFFF707FFFC0E4CD -S31540010E709010200830BFFF687FFFC0E1901020032B -S31540010E8030BFFEE0C020600CDA05E0CCC0236040F4 -S31540010E9082103FFFC223600C81C7E00891E8200021 -S31540010EA09DE3BF983B100144E60760CC7FFFC0CF6E -S31540010EB090102011C024E01CC204E01C80A06000F8 -S31540010EC00280004801000000C204E01C8330601B20 -S31540010ED080A0401A0A80003F01000000A4102000B3 -S31540010EE080A4801A1A8000422D100143AA102001C5 -S31540010EF0AE15A080A32CA002E00640117FFFFD4560 -S31540010F0090100013A804A0019B2D4012832D2010A0 -S31540010F108210400DC224E01C9A103FFFDA24E040C3 -S31540010F20D80600119A10201FDA232004A0043FFF9F -S31540010F30DA230000A12C20048204000C9A1020051B -S31540010F40DA206010C0206014EA2060189A1000016F -S31540010F50C203601080A0600012BFFFFE01000000C6 -S31540010F60A004000CC204201080A0600002BFFFFE56 -S31540010F7001000000C0242018C205A08080A06002A4 -S31540010F80028000069A04A011900480127FFFC09C43 -S31540010F90900220039A04A011C205E00480A0400DEE -S31540010FA022800006A4100014900480127FFFC09492 -S31540010FB090022004A4100014C024E01C80A5001A4D -S31540010FC00ABFFFCEA32CA0021080000ADA0760CC2C -S31540010FD07FFFC08B9010200210BFFFC2A4102000DB -S31540010FE07FFFC0879010200130BFFFB8DA0760CC81 -S31540010FF0C023604082103FFFC223600C81C7E008D6 -S3154001100091E820009DE3BF987FFFC08C010000005E -S3154001101080A220000280002680A62000128000299E -S31540011020010000007FFFC08501000000912A2004D5 -S315400110307FFFC06E9002200340001870010000003F -S3154001104080A220001280002B010000004000182DD4 -S3154001105001000000400017E60100000040000228A0 -S315400110600100000080A6A0001280002D031001445B -S315400110707FFFC072B41060D0912A2002C206800858 -S3154001108080A060001280003080A6200012800039C6 -S31540011090010000004000048F0100000040001E05D1 -S315400110A001000000400015C281E800007FFFC04AF0 -S315400110B01100400C80A6200002BFFFDB01000000AA -S315400110C07FFFC0F6901000197FFFC05C0100000051 -S315400110D0912A20047FFFC045900220034000184713 -S315400110E00100000080A2200002BFFFD901000000DC -S315400110F07FFFC0439010200140001802010000000C -S31540011100400017BB01000000400001FD0100000046 -S3154001111080A6A00002BFFFD70310014440001DF086 -S3154001112001000000031001447FFFC044B41060D0A9 -S31540011130912A2002C206800880A0600002BFFFD427 -S3154001114080A620007FFFC03D010000007FFFC03B1D -S31540011150A0100008912A2002C20680089FC04000C4 -S315400111609010001080A6200002BFFFCB01000000B6 -S315400111707FFFC0DA901000194000045601000000BC -S3154001118040001DCC010000004000158981E80000A7 -S315400111900100000003100143DA0060CC9A036001AC -S315400111A0DA2060CC81C3E008010000009DE3BF98CE -S315400111B07FFFC00911004044D806200882103FFF36 -S315400111C0C2262004DA060000C206000080A34001C0 -S315400111D00280006FA60B20078210201FC226200422 -S315400111E0C226000080A4E00002800033821000186D -S315400111F0A2100013C0206018A2847FFF12BFFFFE19 -S3154001120082006010A210200080A440131680002B9B -S3154001121080A4E001A810200FA01000187FFFBFF3A3 -S3154001122090100011C0242010E824201482102006BA -S31540011230C2242018DA04201080A3600F0280000423 -S31540011240010000007FFFBFEE90102003E824201824 -S315400112509A10200EC204201080A0400D12BFFFFE3E -S31540011260010000009A837FFF1CBFFFFBA410001002 -S31540011270C204201080A0600F12BFFFFE01000000D3 -S31540011280C204201880886010028000358210201028 -S31540011290C224A018DA042018808B6010128000380E -S315400112A001000000A204600180A4401306BFFFDCD8 -S315400112B0A004201080A4E0011480001080A4E00066 -S315400112C00280000782100018A2100013C020601887 -S315400112D0A2847FFF12BFFFFE8200601021100144ED -S315400112E0C20420CC80A060000280002D1110004471 -S315400112F01080000D921000197FFFBFBC901020088E -S315400113008210200FC22620189A10202FDA26202874 -S31540011310C206202080A0600D12BFFFFE80A4E0001F -S3154001132030BFFFE8400025DF901221947FFFFC3952 -S31540011330D00420CC8210200183284019DA0420CC25 -S31540011340C22360409810200FD82620148210200D09 -S31540011350C2262018A7800000308000117FFFBFA859 -S315400113609010200482102010C224A018DA042018FC -S31540011370808B601022BFFFCDA20460017FFFBFA01A -S315400113809010200510BFFFC9A20460017FFFBF9CDA -S315400113909010200110BFFF928210201F81C7E008E4 -S315400113A081E800000000000000000000000000008D -S315400113B000000000000000000000000000000000E6 -S315400113C001000000010000000100000001000000D2 -S315400113D0010000000100000081C3E0080100000097 -S315400113E001000000010000000100000001000000B2 -S315400113F0010000000100000081C3E0080100000077 -S315400114000100000001000000010000000100000091 -S31540011410010000000100000081C3E0080100000056 -S315400114200100000001000000010000000100000071 -S31540011430010000000100000081C3E0080100000036 -S31540011440D482018090A2000916BFFFFE9612800B3E -S3154001145081C3E0089010000BD48201C090A200091C -S3154001146016BFFFFE9612800B81C3E0089010000B59 -S3154001147090A22004C0A201A090A22004C0A201A073 -S3154001148090A22004C0A201A090A22004C0A201A063 -S31540011490C0A2018090A2200414BFFFF70100000002 -S315400114A081C3E0080100000090A22004C0A201E02F -S315400114B090A22004C0A201E090A22004C0A201E0B3 -S315400114C090A22004C0A201E0C0A201C090A22004C3 -S315400114D014BFFFF70100000081C3E00801000000CE -S315400114E0981000089610000A98A3200814BFFFFF21 -S315400114F0D43B00099810000898A3200814BFFFFFA9 -S31540011500C01B00099810000898A32004D6030009BF -S3154001151080A2C00A1280000698A3200434BFFFFDB2 -S31540011520D603000981C3E0089010200090102001E5 -S31540011530981000089610000A98A3200814BFFFFFD0 -S31540011540D43B00099810000898A32004D60300094B -S3154001155080A2C00A1280000698A3200434BFFFFD72 -S31540011560D603000981C3E0089010200090102001A5 -S315400115709810000898A32004D2A301A0DA8301A001 -S3154001158080A340091280000698A3200414BFFFFCE3 -S31540011590D2A301A081C3E008901020009010200141 -S315400115A09A1000089AA3400AD6A34180D883418065 -S315400115B0981B000B988B0009128000069AA3400ADB -S315400115C014BFFFFBD6A3418081C3E00890102000E1 -S315400115D0901020019A1000089AA3400BD8A241CD41 -S315400115E0C48241CD8418800C8488800A128000060A -S315400115F09AA3400B14BFFFFBD8A241CD81C3E0089B -S315400116009010200090102001010000000100000010 -S31540011610010000001310008092126138D40240008C -S3154001162080A2A0011280000780A0A002D40240003F -S31540011630D4024000952AA002108000050100000056 -S315400116403280000381E80000D402400081E00000BE -S3154001165093480000818A602023100045A2146278D5 -S31540011660A40460040100000081C4400081CC8000D4 -S3154001167091D0200191D020012680000590002001C3 -S3154001168090222001912A2001912A200281C3E0085B -S315400116900100000081C3E008D082004081C3E00818 -S315400116A0D2A2004081C3E008D082018081C3E00814 -S315400116B0D2A2018081C3E008D08201A081C3E008A3 -S315400116C0D2A201A081C3E008D08201C081C3E00853 -S315400116D0D2A201C081C3E008D08201E081C3E00803 -S315400116E0D2A201E081C3E008D2A2000081C3E00892 -S315400116F0D082000081C3E00891480000818A000041 -S3154001170001000000010000000100000081C3E00863 -S315400117100100000081C3E008C0A000A081C3E00829 -S31540011720C0A000C081C3E008D01A0000010000003B -S31540011730010000000100000001000000010000005E -S315400117409DE3BF701310006DCD1A6170CD3FBFE0B0 -S31540011750111000801B100080C91B61E0C51A21D8F9 -S31540011760C11FBFE095A088C4D53FBFF0D91FBFF0C8 -S3154001177003100080D11861E881AB0A4801000000DE -S315400117800380002BC13FBFD8F91FBFD8B5A0055C68 -S31540011790F53FBFF0ED1FBFF0F11FBFF0A5A589587A -S315400117A0E91FBFE0A1A488D41510006DA1A00130A6 -S315400117B0DD1AA17881AC0ACE010000000D80002D12 -S315400117C0F53FBFD0C51FBFD083A018C291A0492104 -S315400117D099A01928D51FBFE091A308CA1710006D1B -S315400117E091A00128FD1AE18081AA0ADE01000000CC -S315400117F00D80002F01000000400001AE01000000F5 -S315400118004000020C0100000080A22000128000313D -S3154001181001000000400002610100000080A220009A -S315400118200280003501000000308000317FFFBE7428 -S3154001183090102001F91FBFD8B5A0055CF53FBFF058 -S31540011840ED1FBFF0F11FBFF0A5A58958E91FBFE005 -S31540011850A1A488D41510006DA1A00130DD1AA1788C -S3154001186081AC0ACE010000001BBFFFD7F53FBFD0B8 -S315400118707FFFBE6390102002C51FBFD083A018C250 -S3154001188091A0492199A01928D51FBFE091A308CA63 -S315400118901710006D91A00128FD1AE18081AA0ADE88 -S315400118A0010000001BBFFFD5010000007FFFBE54B1 -S315400118B0901020034000017F01000000400001DD3F -S315400118C00100000080A2200002BFFFD301000000FA -S315400118D07FFFBE4B010000004000023001000000C6 -S315400118E080A2200002800004010000007FFFBE4468 -S315400118F09010200581C7E00881E800009DE3BF986C -S315400119007FFFFF7D210000047FFFFF7D90120010C5 -S315400119107FFFFF79B0102000808A00100280000B03 -S315400119209010200040000267010000007FFFBE4387 -S3154001193001000000912A20047FFFBE2C900220085E -S315400119407FFFFF800100000081C7E00881E80000B9 -S31540011950191000809813217811100200921020006E -S31540011960150FF76C9412A3D7D03B0000D42320085F -S31540011970C11B0000C503200887A089220100000081 -S3154001198089A005408DA0892281A8CA2601000000B0 -S3154001199033800003901020009010200181C3E0089D -S315400119A001000000C11A0000C51A400089A0084282 -S315400119B081C3E008C93A8000C11A0000C51A400037 -S315400119C089A0094281C3E008C93A80001910008004 -S315400119D098132178D0230000D2232008C1030000A8 -S315400119E0C303200885A00D2181C3E008C53A8000C4 -S315400119F0C11A0000C51A400089A009C2C93A80002F -S31540011A0081C3E00801000000C11A000085A005401D -S31540011A10C53A400081C3E008010000000100000012 -S31540011A20010000000100000001000000010000006B -S31540011A30010000000100000001000000010000005B -S31540011A40010000000100000001000000010000004B -S31540011A50010000000100000001000000010000003B -S31540011A60010000000100000001000000010000002B -S31540011A70010000000100000001000000010000001B -S31540011A80010000000100000001000000010000000B -S31540011A9001000000010000000100000081A00020BB -S31540011AA081C3E00801000000C11A000081C3E008BB -S31540011AB001000000C51A000089A009C2C93A4000C8 -S31540011AC081C3E00801000000131000809212617882 -S31540011AD0D0224000C102400085A01900C53A40000D -S31540011AE081C3E008D01A4000131000809212617839 -S31540011AF0D0224000C102400085A01880C522400086 -S31540011B0081C3E008D0024000151000809412A178EC -S31540011B10D03A8000C11A800085A01A40C5228000B3 -S31540011B2081C3E008D0028000151000809412A1788C -S31540011B30D0228000C102800085A01A20C5228000E3 -S31540011B4081C3E008D0028000151000809412A1786C -S31540011B50D0228000C102800081A01920C13A8000B4 -S31540011B6081C3E008D01A8000151000809412A17834 -S31540011B70D03A8000C11A800081A018C0C1228000DD -S31540011B8081C3E008D0028000151000809412A1782C -S31540011B90D0228000CB0280008DA00025CD2280007E -S31540011BA081C3E008D0028000151000809412A1780C -S31540011BB0D0228000CB0280008DA000A5CD228000DE -S31540011BC081C3E008D0028000151000809412A178EC -S31540011BD0D0228000CB0280008DA00125CD2280003D -S31540011BE081C3E008D0028000191000809813217843 -S31540011BF0D03B0000D43B2008C11B0000C51B200878 -S31540011C0081A80A420100000033800009901020009B -S31540011C1029800007901020012D8000059010200298 -S31540011C202F8000039010200391D0200081C3E0084B -S31540011C30010000001910008098132178D03B000064 -S31540011C40D43B2008C11B0000C51B200881A80AC23D -S31540011C500100000033BFFFF69010200029BFFFF4BA -S31540011C60901020012DBFFFF2901020022FBFFFF0F0 -S31540011C709010200391D020001910008098132178EC +S3154001004082102083C226200882102000C02600008C +S315400100508200600180A0606412BFFFFD01000000C4 +S3154001006082102000C40600008200600180A0606406 +S3154001007012BFFFFD0100000082102002C2262008A7 +S31540010080A0062004C28400208088600402BFFFFECF +S3154001009001000000C0262008C0260000C2840020BE +S315400100A084102001833860148208603F80A060017B +S315400100B002800004A21020011080000E821020034D +S315400100C0C0260000A200A001C2840020833860142B +S315400100D08208603F80A0401122BFFFFA84100001D0 +S315400100E080A4600134800002A21000028210200325 +S315400100F0C2262008C28400208208600780A06006CC +S315400101000280000801000000C2860020C28400204F +S315400101108208600780A0600612BFFFFC0100000054 +S31540010120C0262008C026200480A460010480000463 +S3154001013082102034C284002082102034C22600005E +S31540010140C2840020C284002080A46001048000197A +S315400101508210200129100070A4102001A81520301A +S3154001016090100012400024D592102041C24D000843 +S31540010170C2260000A404A00180A4801112BFFFFA88 +S3154001018090100012C2840020C2840020833860147B +S315400101908208603F80A040110280000401000000F7 +S315400101A07FFFC5FE90102006C284002082102001E8 +S315400101B0C226200CC2840020808860011280005330 +S315400101C082102083C226200880A46001028000425A +S315400101D001000000C28400208088640002BFFFFE47 +S315400101E001000000C2840020808860010280004F27 +S315400101F080A460010480005280A46000C284002073 +S315400102008330601A80A04011028000040100000082 +S315400102107FFFC5E290102009C284002080886100DA +S315400102200280004A01000000C284002080886400E8 +S315400102300280004C0100000029100070A41020002B +S31540010240A8152030E6860020921020414000249BCC +S3154001025090100012C24D000880A040132280000574 +S31540010260A404A0017FFFC5CD9010200CA404A001D9 +S3154001027080A4401214BFFFF480A460010480000FE3 +S3154001028001000000C2840020808861001280003F86 +S3154001029001000000C28400208330601A80A0600003 +S315400102A01280003701000000C2840020808864006B +S315400102B01280003001000000E0840020808C200183 +S315400102C01280000E01000000C026200881C7E00808 +S315400102D091E82000C28400208088600112BFFFC2DD +S315400102E001000000C28400208088600102BFFFFA3D +S315400102F00100000030BFFFBC7FFFC5A89010200C55 +S31540010300C026200830BFFFF27FFFC5A4901020070A +S3154001031082102083C226200880A4600112BFFFAE4E +S315400103200100000030BFFFEC7FFFC59C9010200804 +S3154001033080A4600114BFFFB280A4600034BFFFC037 +S315400103402910007030BFFFDD7FFFC5949010200A51 +S31540010350C28400208088640032BFFFB92910007032 +S315400103607FFFC58E9010200B10BFFFB5291000707E +S315400103707FFFC58A9010200B30BFFFD07FFFC58716 +S315400103809010200E30BFFFC97FFFC5849010200D0D +S3154001039030BFFFC103100123C40060788528A00245 +S315400103A08610607890022010D020C002C400607888 +S315400103B08400A001C420607881C3E00801000000E8 +S315400103C0C0220000C022204082103FFFC222200CE2 +S315400103D00310012384102001C420607881C3E00802 +S315400103E00100000003100123C20060C090102000EC +S315400103F0C020600881C3E008010000009DE3BFA062 +S3154001040023100124E00461107FFFC55D9010201187 +S31540010410C024201CC204201C80A060000280004C25 +S3154001042001000000C204201C8330601B80A0401ADA +S315400104300A80004E80A6A0000280003FC2046110DF +S315400104402B100123A6102004AA156078BA102000AB +S31540010450A4102000AE103FFFA8102001AC10201FB1 +S31540010460B8102005BB2F6002C606401DC0240000FF +S31540010470C0242040EE24200CE8254000832D0012A4 +S31540010480A404A001852CA01082108001C224201C46 +S31540010490EE2420408928E0049A00FFFFC206001D91 +S315400104A0980040049B2B60048400400DEC206004BE +S315400104B0EC204000F8204004C0232004E820A01886 +S315400104C0C400400480A0A00012BFFFFE010000004E +S315400104D08728E004C400400380A0A00002BFFFFEBD +S315400104E0010000008200400DC0206018C205400096 +S315400104F080A0600202800004010000007FFFC52742 +S315400105009004FFFFC40560048204A01080A080010E +S3154001051002800004BA1000127FFFC520901000131C +S31540010520C024201C80A6801218BFFFCFA604E0027B +S31540010530C204611084103FFFB0102000C02060400B +S31540010540C420600C81C7E00881E800007FFFC51325 +S3154001055090102001C204201C8330601B80A0401AE9 +S315400105601ABFFFB680A6A0007FFFC50C90102002DF +S3154001057010BFFFB52B1001239DE3BF80231001233C +S3154001058021100124E6042110A404E100C204A004C0 +S31540010590F02460C07FFFC4FA90102010C204A0046A +S315400105A0050180008410A020808840021280014508 +S315400105B001000000C404E100C204E10080A0800102 +S315400105C002800005821020017FFFC4F490102002B2 +S315400105D082102001C224A004C404E100C204E10047 +S315400105E080A080010280014201000000C024A004D5 +S315400105F0C404E100C204E10080A08001028000053C +S3154001060080A720007FFFC4E59010200480A720002A +S315400106101280011180A7200180A6A0010480001A42 +S315400106202F100040A606E001AE15E3E4A810200114 +S31540010630AC14211010800005AA10200180A6801458 +S3154001064004800011A604E00180A4E01F34BFFFFC32 +S31540010650A8052001921000134000290090100017B0 +S31540010660C2058000C4006040872D40138410C0023B +S31540010670C4206040A805200180A6801414BFFFF362 +S31540010680A604E00180A0001C84603FFFC427BFF0A0 +S31540010690C60460C082103FFFF627BFF8C027BFFCE3 +S315400106A0C020E004C020E010C220E014C220E00CCB +S315400106B08206A0038538601F8530A01E8200800116 +S315400106C0AF386002C207BFF08200401B8416E020AB +S315400106D0C227BFECC427BFE829100123AC10200173 +S315400106E0A81520C0310100003B0080002B0180008D +S315400106F080A7200002800003821020018210001C86 +S31540010700C407BFFC80A08001168000CB80A72001D2 +S315400107100480001680A5E00004800014C207BFFCD7 +S31540010720C407BFFC8928601883286010881100011E +S315400107308328A008881100028400E0248811000162 +S3154001074082102001C820E0201080000680A04017BA +S31540010750C8208000820060018400A00480A0401768 +S3154001076012BFFFFC01000000C207BFF0E827BFF43B +S3154001077080A68001A2100001048000338400E008B5 +S315400107801080000EE607BFECE624A004832D8011FD +S31540010790C220E008833E4011808860011280001328 +S315400107A08400E008A204600180A68011048000262E +S315400107B0A604E001C605000080A7200002BFFFF3A2 +S315400107C080A7200102800079C407BFF8C424A00491 +S315400107D0832D8011C220E008833E4011808860014C +S315400107E002BFFFF18400E008C200800080A06000E3 +S315400107F012BFFFFE01000000C204A0048088401819 +S315400108000280006701000000C204A0048088401DE8 +S315400108100280006001000000EA24A004C204A00492 +S31540010820808840151280005601000000C405000072 +S315400108308400A008A204600180A6801114BFFFDED7 +S31540010840A604E001C020800010800005A21020000F +S3154001085080A460200280000780A72000833E4011CB +S315400108608088600122BFFFFBA204600180A72000AF +S315400108701280005180A720018204401B8210602013 +S31540010880C224A004A32D8011E2208000C200800072 +S3154001089080A0600012BFFFFE01000000C204A00458 +S315400108A0808860200280005D01000000C204A0042F +S315400108B0808840180280005601000000C204A0044E +S315400108C08088401D0280004E01000000C207BFF42F +S315400108D0C4004000C204A008E604A00C8600A0089B +S315400108E0E220A008C400C00080A0A00012BFFFFE05 +S315400108F001000000C404A0048088A0202280003C9E +S31540010900C227BFE4C404A004808880182280003432 +S31540010910C227BFE4C404A0048088801D2280002C25 +S31540010920C227BFE4C404A00880A04002028000049C +S31540010930010000007FFFC4199010200EC204A00CD4 +S3154001094080A4C00102800005C407BFF47FFFC41321 +S315400109509010200FC407BFF4C207BFFCC600800039 +S31540010960C407BFF8820060018400A001EA24A00404 +S31540010970C227BFFC10BFFF5FC427BFF87FFFC40774 +S3154001098090102007C405000010BFFFAB8400A008EB +S315400109907FFFC4029010200630BFFFA07FFFC3FF38 +S315400109A09010200530BFFF99F624A00410BFFF79AF +S315400109B0832D80110280001CC607BFF88210E020FB +S315400109C0C224A00410BFFFB1A32D80117FFFC3F342 +S315400109D09010200D10BFFFD4C207BFE47FFFC3EFC5 +S315400109E09010200C10BFFFCCC207BFE47FFFC3EBC2 +S315400109F09010200B10BFFFC4C207BFE47FFFC3E7BF +S31540010A009010200A10BFFFB3C207BFF47FFFC3E3B4 +S31540010A109010200930BFFFAA7FFFC3E09010200845 +S31540010A2030BFFFA3C607BFE8C624A00410BFFF9787 +S31540010A30A32D8011C2042110C020E00C84103FFF79 +S31540010A40B0102000C0206040C420600C81C7E0087F +S31540010A5081E800000280001E1110004080A720009E +S31540010A60A610001B04BFFF08A81020002F1000404D +S31540010A70AC142110AE15E3E410800005AA10200144 +S31540010A8080A7001404BFFF00A604E00180A4E01F74 +S31540010A9034BFFFFCA805200192100013400027EF48 +S31540010AA090100017C2058000C4006040872D401396 +S31540010AB08410C002C420604010BFFFF2A805200187 +S31540010AC07FFFC3B69010200130BFFEBB9210001BC2 +S31540010AD0400027E2901223E4C2042110852F001B17 +S31540010AE0C420604010BFFEE980A0001C7FFFC3AB5D +S31540010AF09010200330BFFEBE9DE3BF80031001244A +S31540010B0011004034231000407FFFC396F02061104E +S31540010B10C0260000C026204082103FFFC226200C7E +S31540010B200310012384102001A0102001C420607805 +S31540010B30A214639492100010400027C8901000112F +S31540010B40A004200180A4201012BFFFFC92100010C7 +S31540010B50F8062020B937201C231001232D00003F21 +S31540010B603700002AB8072001A2146078AC15A3FE0D +S31540010B70B616E2AAA6100018AE102000B4103FFF28 +S31540010B80BA102001A8102020AA10202180A72001F8 +S31540010B900280000580A5E0007FFFC3799010001711 +S31540010BA080A5E0000280000F01000000C024C000C3 +S31540010BB0C024E040F424E00CFA244000832DE01CDC +S31540010BC0C224E024C204E0248330601C80A0401784 +S31540010BD002800004010000007FFFC37090102012C4 +S31540010BE0EC24E008C204E00880A04016028000041C +S31540010BF0010000007FFFC36990102001EC24E04012 +S31540010C00C204E04080A040160280000401000000BA +S31540010C107FFFC36290102002C204E00880A06000FA +S31540010C2012BFFFFE01000000C204400080A0601018 +S31540010C3002800005A01020017FFFC35890102003B9 +S31540010C40A0102001832C2002C204400184250010FB +S31540010C5080A0800122800005A00420017FFFC34FB0 +S31540010C6090102004A004200180A4201012BFFFF799 +S31540010C70832C2002FA244000F624C000EC24E040F4 +S31540010C80C204C00080A0401B028000040100000095 +S31540010C907FFFC34290102005C204E04080A0401669 +S31540010CA002800004010000007FFFC33C9010200534 +S31540010CB0EC24E008C204E00880A0600012BFFFFEF9 +S31540010CC001000000C204400080A0601002800005BF +S31540010CD0A410201F7FFFC33190102006A410201FAF +S31540010CE0A0102001832C2002C204400180A04012A2 +S31540010CF022800005A00420017FFFC3289010200711 +S31540010D00A004200180A4200812BFFFF7A404BFFE5F +S31540010D10A410201CA010200A832C2002C2044001EA +S31540010D2080A0401222800005A00420017FFFC31B42 +S31540010D3090102008A004200180A4201012BFFFF7C4 +S31540010D40A404BFFEFA27BFF082102002C407BFF0F9 +S31540010D508400A001C427BFF4C407BFF48400A001E6 +S31540010D60C427BFF8C407BFF88400A001C427BFFC4D +S31540010D7084102006C427BFE0C024C000C024E04040 +S31540010D80FA244000C224E040C224E00883444000E3 +S31540010D90808861000280000501000000805000014A +S31540010DA08050000180500001C207BFE0C227BFE466 +S31540010DB0C207BFE080A060060280000582102002C3 +S31540010DC07FFFC2F69010200A82102002C224E0085A +S31540010DD001000000C207BFE0C227BFE4C207BFE06F +S31540010DE080A0600602800005821020027FFFC2EBD0 +S31540010DF09010200A82102002C224E008010000005F +S31540010E00C027BFE4C207BFE480A060001280007320 +S31540010E1001000000C204E00880A0600012BFFFFE8E +S31540010E2001000000C204400080A06004028000046A +S31540010E30010000007FFFC2D99010200DC024E04080 +S31540010E40EC24E008FA2440004000020B01000000B7 +S31540010E504000020B90122F00EC24E040C204E04017 +S31540010E6080A0600002BFFFFE01000000C2044000F6 +S31540010E7080A0600202800004010000007FFFC2C71B +S31540010E809010200EC204600480A0601F02800004FE +S31540010E90010000007FFFC2C19010200F400001F603 +S31540010EA0A4102002400001F690023F00400001F2EA +S31540010EB001000000400001F290023F00C2044000E0 +S31540010EC0A004A00180A0401022800005A52CA0020C +S31540010ED07FFFC2B290102010A52CA002C40440127C +S31540010EE08225401080A0800102800004A4100010D9 +S31540010EF07FFFC2AA9010201180A4201012BFFFECE0 +S31540010F0001000000C024E040F424E00CAE05E001FD +S31540010F1080A7001714BFFF1EA624F00080A720015A +S31540010F200480002C01000000C0262024C206202493 +S31540010F3080A060001280002C010000000304000024 +S31540010F40C2262024C406202480A0800102800005F8 +S31540010F50821020017FFFC29190102014821020013F +S31540010F60C2262020C026202403040000C4062024D3 +S31540010F7080A0800102800004010000007FFFC2873B +S31540010F8090102015C0262020C0262024C2062024E9 +S31540010F9080A060001280001B010000008210200228 +S31540010FA0C2262020C20620208088600202800012CC +S31540010FB001000000C0262020C20620208088600251 +S31540010FC002800004010000007FFFC27490102018C7 +S31540010FD081C7E00891E820007FFFC2709010200B86 +S31540010FE030BFFF8D7FFFC26D9010201310BFFFD51C +S31540010FF0030400007FFFC2699010201730BFFFEE47 +S315400110007FFFC2669010201610BFFFE682102002B5 +S315400110109DE3BFA07FFFC27D0100000080A22000AA +S315400110200280003B0100000080A6200012800035AE +S31540011030010000007FFFC27501000000912A2004D3 +S315400110407FFFC24F9002200340001880010000003C +S3154001105080A2200012800028010000004000181FD5 +S3154001106001000000400017CD01000000400001E3EF +S315400110700100000080A6A0001280001C01000000B3 +S315400110807FFFC26221100124912A2002A01421145B +S31540011090C204000880A060000280000A80A62000E9 +S315400110A07FFFC25A01000000912A20027FFFC257EA +S315400110B0E00400089FC400000100000080A6200053 +S315400110C002800004010000007FFFC26990100019F0 +S315400110D0400004400100000040001E4F0100000096 +S315400110E0400015D281E8000040001F2101000000A8 +S315400110F030BFFFE47FFFC2299010200130BFFFD8E7 +S315400111007FFFC24B9010001930BFFFCB7FFFC21546 +S315400111101100400C10BFFFC680A62000031001231A +S31540011120C40060C48400A001C42060C481C3E00837 +S31540011130010000009DE3BFA07FFFC20A11004044A9 +S3154001114082103FFFE4062008C2262004A40CA00713 +S31540011150C4060000C206000080A08001028000741F +S31540011160010000008210201FC2262004C226000072 +S3154001117080A4A0000280004E8210200085286004D1 +S31540011180840600028200600180A04012C020A0189F +S3154001119012BFFFFC85286004A0102000A610200F76 +S315400111A0AA102006A81020107FFFC1F5901000104C +S315400111B0A2042001832C600486060001A12C200490 +S315400111C0C026000184060010E620E004EA20A018AB +S315400111D0C206000180A0600F028000058206001051 +S315400111E07FFFC1EE90102003820600108410200E6E +S315400111F0872C6004E6206018C206000380A04002E6 +S3154001120012BFFFFE010000008400BFFF80A0BFFFA8 +S3154001121012BFFFFA01000000852C6004C2060002DD +S3154001122080A0600F12BFFFFE82060010C200601848 +S315400112308088601002800033A0060010E824201840 +S31540011240C204201880886010128000350100000019 +S3154001125080A4801114BFFFD5A010001180A4A00165 +S315400112600480000C821020007FFFC1C59010200829 +S315400112708210200FC22620188210202FC226202835 +S31540011280C206202080A0600D12BFFFFE8210200002 +S3154001129085286004840600028200600180A0401215 +S315400112A0C020A01812BFFFFC85286004211001242C +S315400112B0C204211080A06000028000109210001923 +S315400112C011100044400025E59012211C7FFFFC3D92 +S315400112D0D0042110C204211084102001B3288019A2 +S315400112E0F22060408210200FC22620148210200D69 +S315400112F0C2262018A780000081C7E00881E80000C7 +S315400113007FFFC1A690102004E8242018C2042018AB +S315400113108088601022BFFFD080A480117FFFC19FCB +S315400113209010200510BFFFCC80A480117FFFC19B88 +S315400113309010200110BFFF8D8210201F0000000079 +S315400113400100000001000000010000000100000052 +S31540011350010000000100000081C3E0080100000017 +S315400113600100000001000000010000000100000032 +S31540011370010000000100000081C3E00801000000F7 +S315400113800100000001000000010000000100000012 +S31540011390010000000100000081C3E00801000000D7 +S315400113A001000000010000000100000001000000F2 +S315400113B0010000000100000081C3E00801000000B7 +S315400113C0D482018090A2000916BFFFFE9612800BBF +S315400113D081C3E0089010000BD48201C090A200099D +S315400113E016BFFFFE9612800B81C3E0089010000BDA +S315400113F090A22004C0A201A090A22004C0A201A0F4 +S3154001140090A22004C0A201A090A22004C0A201A0E3 +S31540011410C0A2018090A2200414BFFFF70100000082 +S3154001142081C3E0080100000090A22004C0A201E0AF +S3154001143090A22004C0A201E090A22004C0A201E033 +S3154001144090A22004C0A201E0C0A201C090A2200443 +S3154001145014BFFFF70100000081C3E008010000004E +S31540011460981000089610000A98A3200814BFFFFFA1 +S31540011470D43B00099810000898A3200814BFFFFF29 +S31540011480C01B00099810000898A32004D603000940 +S3154001149080A2C00A1280000698A3200434BFFFFD33 +S315400114A0D603000981C3E008901020009010200166 +S315400114B0981000089610000A98A3200814BFFFFF51 +S315400114C0D43B00099810000898A32004D6030009CC +S315400114D080A2C00A1280000698A3200434BFFFFDF3 +S315400114E0D603000981C3E008901020009010200126 +S315400114F09810000898A32004D2A301A0DA8301A082 +S3154001150080A340091280000698A3200414BFFFFC63 +S31540011510D2A301A081C3E0089010200090102001C1 +S315400115209A1000089AA3400AD6A34180D8834180E5 +S31540011530981B000B988B0009128000069AA3400A5B +S3154001154014BFFFFBD6A3418081C3E0089010200061 +S31540011550901020019A1000089AA3400BD8A241CDC1 +S31540011560C48241CD8418800C8488800A128000068A +S315400115709AA3400B14BFFFFBD8A241CD81C3E0081B +S315400115809010200090102001010000000100000091 +S315400115900100000013100080921260E0D402400066 +S315400115A080A2A0011280000780A0A002D4024000C0 +S315400115B0D4024000952AA0021080000501000000D7 +S315400115C03280000381E80000D402400081E000003F +S315400115D093480000818A602023100045A21461F8D7 +S315400115E0A40460040100000081C4400081CC800055 +S315400115F091D0200191D02001268000059000200144 +S3154001160090222001912A2001912A200281C3E008DB +S315400116100100000081C3E008D082004081C3E00898 +S31540011620D2A2004081C3E008D082018081C3E00894 +S31540011630D2A2018081C3E008D08201A081C3E00823 +S31540011640D2A201A081C3E008D08201C081C3E008D3 +S31540011650D2A201C081C3E008D08201E081C3E00883 +S31540011660D2A201E081C3E008D2A2000081C3E00812 +S31540011670D082000081C3E00891480000818A0000C1 +S3154001168001000000010000000100000081C3E008E4 +S315400116900100000081C3E008C0A000A081C3E008AA +S315400116A0C0A000C081C3E008D01A000001000000BC +S315400116B001000000010000000100000001000000DF +S315400116C09DE3BF8803100070D1186078D13FBFF009 +S315400116D003100080D11FBFF0D9186180031000802C +S315400116E0D518618895A308CAD53FBFF80310008075 +S315400116F0D91FBFF8D518619081AB0A4A0100000095 +S3154001170023800038D127BFEC91A005480310007013 +S31540011710D13FBFF8D51FBFF8D91FBFF899A3094AD2 +S31540011720D51FBFF099A308CA99A0012CD51860808E +S3154001173081AB0ACA010000002D800024D127BFECED +S3154001174091A018C891A20928D51FBFF091A01928C8 +S3154001175091A208CA91A0012803100070D51860888B +S3154001176081AA0ACA010000000D800015010000008F +S315400117704000019001000000400001EE0100000020 +S3154001178080A220001280000B0100000040000243AD +S315400117900100000080A22000128000040100000028 +S315400117A081C7E00881E800007FFFC07C91E8200501 +S315400117B07FFFC07A0100000030BFFFF57FFFC07791 +S315400117C09010200330BFFFEBD327BFE87FFFC073E4 +S315400117D090102002D307BFE810BFFFDAD107BFEC54 +S315400117E0D327BFE87FFFC06D90102001D307BFE824 +S315400117F010BFFFC6D107BFEC9DE3BFA07FFFFF9E91 +S31540011800210000047FFFFF9E901200107FFFFF9A88 +S3154001181001000000808A001012800004B0102000F0 +S3154001182081C7E00881E80000400002669010200070 +S315400118307FFFC07601000000912A20047FFFC0503F +S31540011840900220087FFFFF9F81E800000100000011 +S3154001185019100080981321201110020092102000C7 +S31540011860150FF76C9412A3D7D03B0000D423200860 +S31540011870C11B0000C503200887A089220100000082 +S3154001188089A005408DA0892281A8CA2601000000B1 +S3154001189033800003901020009010200181C3E0089E +S315400118A001000000C11A0000C51A400089A0084283 +S315400118B081C3E008C93A8000C11A0000C51A400038 +S315400118C089A0094281C3E008C93A80001910008005 +S315400118D098132120D0230000D2232008C103000001 +S315400118E0C303200885A00D2181C3E008C53A8000C5 +S315400118F0C11A0000C51A400089A009C2C93A800030 +S3154001190081C3E00801000000C11A000085A005401E +S31540011910C53A400081C3E008010000000100000013 +S31540011920010000000100000001000000010000006C +S31540011930010000000100000001000000010000005C +S31540011940010000000100000001000000010000004C +S31540011950010000000100000001000000010000003C +S31540011960010000000100000001000000010000002C +S31540011970010000000100000001000000010000001C +S31540011980010000000100000001000000010000000C +S3154001199001000000010000000100000081A00020BC +S315400119A081C3E00801000000C11A000081C3E008BC +S315400119B001000000C51A000089A009C2C93A4000C9 +S315400119C081C3E008010000001310008092126120DB +S315400119D0D0224000C102400085A01900C53A40000E +S315400119E081C3E008D01A4000131000809212612092 +S315400119F0D0224000C102400085A01880C522400087 +S31540011A0081C3E008D0024000151000809412A12045 +S31540011A10D03A8000C11A800085A01A40C5228000B4 +S31540011A2081C3E008D0028000151000809412A120E5 +S31540011A30D0228000C102800085A01A20C5228000E4 +S31540011A4081C3E008D0028000151000809412A120C5 +S31540011A50D0228000C102800081A01920C13A8000B5 +S31540011A6081C3E008D01A8000151000809412A1208D +S31540011A70D03A8000C11A800081A018C0C1228000DE +S31540011A8081C3E008D0028000151000809412A12085 +S31540011A90D0228000CB0280008DA00025CD2280007F +S31540011AA081C3E008D0028000151000809412A12065 +S31540011AB0D0228000CB0280008DA000A5CD228000DF +S31540011AC081C3E008D0028000151000809412A12045 +S31540011AD0D0228000CB0280008DA00125CD2280003E +S31540011AE081C3E008D002800019100080981321209C +S31540011AF0D03B0000D43B2008C11B0000C51B200879 +S31540011B0081A80A420100000033800009901020009C +S31540011B1029800007901020012D8000059010200299 +S31540011B202F8000039010200391D0200081C3E0084C +S31540011B30010000001910008098132120D03B0000BD +S31540011B40D43B2008C11B0000C51B200881A80AC23E +S31540011B500100000033BFFFF69010200029BFFFF4BB +S31540011B60901020012DBFFFF2901020022FBFFFF0F1 +S31540011B709010200391D02000191000809813212045 +S31540011B80D0230000D2232008C1030000C30320084C +S31540011B9081A80A210100000033BFFFE59010200013 +S31540011BA029BFFFE3901020012DBFFFE190102002D5 +S31540011BB02FBFFFDF9010200391D020001910008025 +S31540011BC098132120D0230000D2232008C10300000E +S31540011BD0C303200881A80AA10100000033BFFFD436 +S31540011BE09010200029BFFFD2901020012DBFFFD0B9 +S31540011BF0901020022FBFFFCE9010200391D02000DD +S31540011C001910008098132120D03B0000D43B2008B6 +S31540011C10C11B0000C51B200889A008C2C93B0000A2 +S31540011C2081C3E008D01B00001910008098132120C1 +S31540011C30D0230000D2232008C1030000C30320089B +S31540011C4085A00821C523000081C3E008D003000018 +S31540011C501910008098132120D0230000D223200898 +S31540011C60C1030000C303200885A008A1C5230000C5 +S31540011C7081C3E008D0030000191000809813212089 S31540011C80D0230000D2232008C1030000C30320084B -S31540011C9081A80A210100000033BFFFE59010200012 -S31540011CA029BFFFE3901020012DBFFFE190102002D4 -S31540011CB02FBFFFDF9010200391D020001910008024 -S31540011CC098132178D0230000D2232008C1030000B5 -S31540011CD0C303200881A80AA10100000033BFFFD435 -S31540011CE09010200029BFFFD2901020012DBFFFD0B8 -S31540011CF0901020022FBFFFCE9010200391D02000DC -S31540011D001910008098132178D03B0000D43B20085D -S31540011D10C11B0000C51B200889A008C2C93B0000A1 -S31540011D2081C3E008D01B0000191000809813217868 -S31540011D30D0230000D2232008C1030000C30320089A -S31540011D4085A00821C523000081C3E008D003000017 -S31540011D501910008098132178D0230000D22320083F -S31540011D60C1030000C303200885A008A1C5230000C4 -S31540011D7081C3E008D0030000191000809813217830 -S31540011D80D0230000D2232008C1030000C30320084A -S31540011D9085A00921C523000081C3E008D0030000C6 -S31540011DA01910008098132178D0230000D2232008EF -S31540011DB0C1030000C303200885A009A1C523000073 -S31540011DC081C3E008D00300001910008098132178E0 -S31540011DD0D0230000C103000083A00520C3230000D7 -S31540011DE081C3E008D0030000131000809212619075 -S31540011DF0C51A6008C11A400089A0084091A108C2CD -S31540011E0095A209C495A2894281C3E008D53A00004A -S31540011E1013100080921261B0C1024000C3026004F7 -S31540011E2085A0082087A088A189A0C9A289A10921E6 -S31540011E3081C3E008C92200009610200213100080D9 -S31540011E4092126190151000809412A190D502400023 -S31540011E50D7028000D5220000D8020000131000806E -S31540011E60921261B096A2E00112BFFFF90100000093 -S31540011E7081C3E008010000001310008092126190B6 -S31540011E80151000809412A1B0C1028000C51A6010DD -S31540011E9083A0082089A088C08BA109A18DA10942F0 -S31540011EA08FA1492691A0054681C3E008D13A000099 -S31540011EB01110008090122188C11A0000C51A000035 -S31540011EC0C91A0000CD1A0000D11A0000D51A000027 -S31540011ED0D91A0000DD1A0000E11A0000E51A0000D7 -S31540011EE0E91A0000ED1A0000F11A0000F51A000087 -S31540011EF0F91A0000FD1A000081C3E0080100000044 -S31540011F0029100080A815215827100080A614E1C089 -S31540011F10C12CC000E604C000A134E00EA00C20078D -S31540011F20A0A42002AE1020002D100080AC15A1C047 -S31540011F30AE05E001AC05A008C1358000C12D000009 -S31540011F40EA050000AB35600DAA8D600112BFFFF9AD -S31540011F5001000000808000100280002F2B3C1FFFF3 -S31540011F60AA1563FFA60CC015E6250000C10D0000A9 -S31540011F702B100080AA1561CC2D100047AC15A3E0AB -S31540011F80AE25E001E0054000E025800081D8200033 -S31540011F9001000000010000000100000001000000F6 -S31540011FA001000000010000000100000001000000E6 -S31540011FB001000000010000000100000001000000D6 -S31540011FC001000000010000000100000001000000C6 -S31540011FD001000000010000000100000001000000B6 -S31540011FE00000000080A5C00012BFFFE6AA056008F8 -S31540011FF0C12D0000E60500002B03C000A614C01544 -S31540012000E6250000C10D000081C4400081CC80005E -S315400120100100000081C4800081CCA00401000000C1 -S315400120200100000081C3E008915800000100000052 -S315400120301110008090122158C10A0000C0220000F0 -S31540012040C10A0000C12A0000D40200001300038027 -S31540012050942A800980A0000A3280004D9010200306 -S315400120601303E000D223BFA0C023BFA4C10BBFA06E -S31540012070C023BFA0151000809412A170C102800038 -S315400120800100000001000000C10BBFA0C10BBFA4AD -S3154001209083A00520C12BBFA0D003BFA0808A220008 -S315400120A02280003B901020049010200015100080E3 -S315400120B09412A140C5028000C902A008D102A00C19 -S315400120C01310008092126170C70240008DA08944AE -S315400120D081A98AC8010000000380000501000000B3 -S315400120E0901020011080002A01000000C5028000E6 -S315400120F0C902A008D102A00C13100080921261708F -S31540012100CB0240008DA0894481A98AC80100000004 -S315400121100380000501000000901020011080001C82 -S315400121200100000025100080A414A168C11C800094 -S31540012130C51C800080A000003280000685A008C032 -S3154001214081A80AC2010000001380000301000000BB -S31540012150901020050100000025100080A414A168FC -S31540012160C11C8000C51C800080A000000100000049 -S315400121703280000685A008C081A80AC2010000007D -S3154001218013800003010000009010200701000000A9 -S3154001219081C3E00801000000901020019544000031 -S315400121A09532A01E940AA00380A2800002800040BE -S315400121B09010200080A2A0030280003D13100080F1 -S315400121C0921261F0C11A4000C51A6008FD026018FA -S315400121D095A0003E99A0003E9DA0003E170000C07C -S315400121E09612E078A182C0000100000001000000C3 -S315400121F00100000001000000010000000100000094 -S3154001220081A0002083A0002195A0002A99A0002C3E -S315400122109DA0002E170000C09612E07CA182C0004E -S315400122200100000001000000010000000100000063 -S31540012230010000000100000085A0002287A00023C4 -S31540012240A180000001000000010000000100000023 -S3154001225001000000010000000100000089A00842C1 -S31540012260A9A2883ED93A4000DD224000CD1A60102D -S31540012270D102600881A90A46010000000380000CD2 -S3154001228081AD0A2801000000038000099344000043 -S315400122909332601B920A60079010200080A2A00131 -S315400122A002800003902260079022600481C3E00807 -S315400122B001000000C12BBFA081C3E008D003BFA02D -S315400122C0D023BFA081C3E008C10BBFA0010000001D -S315400122D09DE3BF6040001B19B0102000913A200ACF -S315400122E0900A200380A220011280111101000000F2 -S315400122F07FFFBBBE9010200D190C40291B23CD1B1F -S315400123009410200096102000981320069A13609B83 -S31540012310D43FBFE0D43FBFC0D43FBFE87FFFFF42B9 -S31540012320D83FBFF0900A3000032804009012208065 -S315400123308210600FC22200001B1000479002200449 -S315400123409A1363009A234008191000009B3B6002D0 -S31540012350032784009A13400C82106010C222200485 -S315400123607FFFFED4DA2200007FFFFFD61103E00093 -S315400123702D100080C025A1C07FFFFDD49010200004 -S31540012380809200091280000601000000C205A1C02A -S3154001239080A0600002800004010000007FFFBB981E -S315400123A09010200B7FFFFDC990103FFA03300600C5 -S315400123B080A200011280000480A2600002800EDB30 -S315400123C0010000007FFFBB8E9010200B7FFFFDBFF9 -S315400123D09010201403100D0080A200011280000409 -S315400123E080A2600002800ECC010000007FFFBB840A -S315400123F09010200B7FFFFDB5901020620310162030 -S3154001240080A200011280000480A2600002800EBDFD -S31540012410010000007FFFBB7A9010200B7FFFFDB3C8 -S31540012420901020050310280080A2000112800006AA -S3154001243001000000C205A1C080A060000280000426 -S31540012440010000007FFFBB6E9010200B7FFFFF9DB8 -S315400124501103C000111C00007FFFFDAC921020004B -S31540012460031FFFFF821063FF80A200011280000A52 -S315400124701B000070C205A1C09A13601F190000100D -S315400124808208400D9813201080A0400C0280000560 -S31540012490113C00007FFFBB5A9010200C113C0000FC -S315400124A07FFFFD9A921020000320000080A20001C8 -S315400124B01280000A1B000070C205A1C09A13601F5A -S315400124C0190000108208400D9813201080A0400C7E -S315400124D002800004010000007FFFBB499010200CE0 -S315400124E0C025A1C0901020007FFFFD8892102000DA -S315400124F080A220001280000601000000C205A1C092 -S3154001250080A0600002800005110144007FFFBB3CB2 -S315400125109010200C11014400132840009012230210 -S315400125207FFFFD7A9212600180A220001280000690 -S3154001253001000000C205A1C080A060002280000504 -S315400125401111FFFF7FFFBB2E9010200C1111FFFFD1 -S315400125507FFFFD76901223FF0300007F821063FF09 -S3154001256080A200011280000601000000C205A1C040 -S3154001257080A06000028000052F1000857FFFBB20F0 -S315400125809010200C2F1000857FFFFD60D01DE0C804 -S31540012590031FFFFF821063FF80A200011280000A21 -S315400125A01B000070C205A1C09A13601F19000010DC -S315400125B08208400D9813201080A0400C028000052F -S315400125C0031000857FFFBB0E9010200C0310008581 -S315400125D0D01860D8C025A1C07FFFFD4C0100000086 -S315400125E00320000080A200011280000A1B00007037 -S315400125F0C205A1C09A13601F190000108208400D40 -S315400126009813201080A0400C028000051910008507 -S315400126107FFFBAFB9010200C19100085C025A1C080 -S315400126207FFFFD3AD01B20B8031FFFFF821063FFD7 -S3154001263080A200011280000A1B000070C205A1C0E1 -S315400126409A13601F190000108208400D981320103C -S3154001265080A0400C02800005331000857FFFBAE858 -S315400126609010200C33100085C025A1C07FFFFD27A7 -S31540012670D01E60F0C205A1C08330600E820860039F -S3154001268080A0600202800004211000807FFFBADC36 -S315400126909010200C7FFFFF0B1103C000111158044D -S315400126A0C02421C07FFFFD299012223403102B0044 -S315400126B08210624680A200011280000503200000BC -S315400126C080A2400102800FC5010000007FFFBACC05 -S315400126D09010200D113C02AF7FFFFD1C901220D1BE -S315400126E0033180558210639A80A200011280000551 -S315400126F00308000080A2400102800FDB01000000B8 -S315400127007FFFBABF9010200D1111FC007FFFFD170E -S3154001271092102000031FE00080A200011280000AEF -S315400127201B000070C205A1C09A13601F190000105A -S315400127308208400D9813200880A0400C02800005B5 -S3154001274011207C017FFFBAAE9010200D11207C0133 -S31540012750C025A1C0901220307FFFFD041300010067 -S315400127600320000080A200011280000A1B000070B5 -S31540012770C205A1C09A13601F190000108208400DBE -S315400127809813200480A0400C028000040100000040 -S315400127907FFFBA9B9010200DC025A1C0901020004C -S315400127A07FFFFCF29210200080A2200012800006DA -S315400127B001000000C205A1C080A0600002800004A3 -S315400127C0010000007FFFBA8E9010200D7FFFFCE7CD -S315400127D0D01DE0C803100085DA0060C080A2000D5C -S315400127E01280000601000000C205A1C080A0600061 -S315400127F0028000051B1000857FFFBA819010200DD5 -S315400128001B1000857FFFFCD9D01B60D0031FE00061 -S3154001281080A200011280000601000000C205A1C08D -S3154001282080A0600002800005031000857FFFBA7416 -S315400128309010200D031000857FFFFCCCD01860B8A6 -S3154001284003100085DA0060A880A2000D1280000AFC -S315400128501B000070C205A1C09A13601F1900001029 -S315400128608208400D9813201080A0400C028000047D -S31540012870010000007FFFBA629010200DC025A1C063 -S315400128807FFFFCBAD01E60F0C205A1C08330600E46 -S315400128908208600380A06002028000042310008049 -S315400128A07FFFBA579010200D7FFFFE861103E0008F -S315400128B02108C6AF901420DEC02461C07FFFFCB35F -S315400128C0A01420DE80A20010128000060100000044 -S315400128D0C20461C080A06000028000052108C6AF25 -S315400128E07FFFBA479010200E2108C6AF7FFFFCB785 -S315400128F0901420DEA01420DE80A200101280000673 -S3154001290001000000C205A1C080A060002280000530 -S315400129101128C6AF7FFFBA3A9010200E1128C6AFD4 -S315400129207FFFFCAA901220DE0308C6AF821060DE4C -S3154001293080A200011280000601000000C205A1C06C -S3154001294080A06000228000051108C6AF7FFFBA2C27 -S315400129509010200E1108C6AF7FFFFC94901220DE26 -S315400129600328C6AF821060DE80A2000112800006F5 -S3154001297001000000C205A1C080A0600022800005C0 -S315400129801128C6AF7FFFBA1E9010200E1128C6AF80 -S315400129907FFFFC86901220DE0308C6AF821060DE00 -S315400129A080A200011280000601000000C205A1C0FC -S315400129B080A0600002800004010000007FFFBA1081 -S315400129C09010200E7FFFFE3F1103E00011151BC042 -S315400129D01310C82115351BC01710C82190122103A9 -S315400129E0921261419412A1037FFFFC809612E1414C -S315400129F080A220021280000601000000C205A1C08B -S31540012A0080A060000280000511351BC07FFFB9FC24 -S31540012A109010200F11351BC01310C82115151BC06E -S31540012A201710C82190122103921261419412A103F9 -S31540012A307FFFFC6E9612E14180A2200112800006C2 -S31540012A4001000000C205A1C080A06000028000050F -S31540012A50901020007FFFB9EA9010200F90102000BF -S31540012A6092102000152000007FFFFC609610200088 -S31540012A7080A220001280000601000000C205A1C00C -S31540012A8080A0600002800005191000857FFFB9DC37 -S31540012A909010200F191000851B100085D01B20D0E7 -S31540012AA07FFFFC52D41B60D880A220021280000610 -S31540012AB001000000C205A1C080A06000028000059F -S31540012AC011151BC07FFFB9CE9010200F11151BC0E9 -S31540012AD01310C82115151BE81710C82190122103A0 -S31540012AE0921261419412A1037FFFFC409612E1418B -S31540012AF080A220011280000601000000C205A1C08B -S31540012B0080A060000280000511151BE87FFFB9BC5B -S31540012B109010200F11151BE81310C82115151BC065 -S31540012B201710C82190122103921261419412A103F8 -S31540012B307FFFFC2E9612E14180A220021280000600 -S31540012B4001000000C205A1C080A06000028000050E -S31540012B5011151BE87FFFB9AA9010200F11151BE82C -S31540012B601310C82190122103921261417FFFFC1F6D -S31540012B70D41DE0C880A22003128000060100000097 -S31540012B80C205A1C080A06000028000050310008537 -S31540012B907FFFB99B9010200F0310008511151BE88C -S31540012BA01310C82190122103921261417FFFFC0F3D -S31540012BB0D41860B880A220031280000A1B0000705E -S31540012BC0C205A1C09A13601F190000108208400D6A -S31540012BD09813201080A0400C0280000511151BE8B7 -S31540012BE07FFFB9879010200F11151BE81310C821DC -S31540012BF0C025A1C090122103921261417FFFFBFBC8 -S31540012C00D41E60F080A2200212800006010000005E -S31540012C10C205A1C080A060000280000515151BE811 -S31540012C207FFFB9779010200F15151BE81710C821A3 -S31540012C30D01E60F09412A1037FFFFBEC9612E14196 -S31540012C4080A220011280000601000000C205A1C039 -S31540012C5080A060000280000515151BE87FFFB9685A -S31540012C609010200F15151BE81710C821D01DE0C87C -S31540012C709412A1037FFFFBDD9612E14180A220035E -S31540012C801280000601000000C205A1C080A06000BC -S31540012C9002800005191000857FFFB9599010200F59 -S31540012CA01910008515151BE81710C821D01B20B82F -S31540012CB09412A1037FFFFBCD9612E14180A220032E -S31540012CC01280000A1B000070C205A1C09A13601F42 -S31540012CD0190000108208400D9813201080A0400C66 -S31540012CE00280000511151BC07FFFB9459010200FCA -S31540012CF011151BC01310C82115351BC01710C8214B -S31540012D00C025A1C090122103921261419412A103E0 -S31540012D107FFFFBC99612E14180A220021280000684 -S31540012D2001000000C205A1C080A06000028000052C -S31540012D3011351BC07FFFB9329010200F11351BC0D2 -S31540012D401310C82115151BC01710C8219012210355 -S31540012D50921261419412A1037FFFFBB79612E141A2 -S31540012D6080A220011280000601000000C205A1C018 -S31540012D7080A0600002800005901020007FFFB920EE -S31540012D809010200F90102000921020001520000076 -S31540012D907FFFFBA99610200080A22000128000062A -S31540012DA001000000C205A1C080A0600002800005AC -S31540012DB01B1000857FFFB9129010200F1B10008554 -S31540012DC003100085D01B60D07FFFFB9BD41860D8D1 -S31540012DD080A220021280000601000000C205A1C0A7 -S31540012DE080A060000280000511151BC07FFFB90459 -S31540012DF09010200F11151BC01310C82115151BE883 -S31540012E001710C82190122103921261419412A10315 -S31540012E107FFFFB899612E14180A2200112800006C4 -S31540012E2001000000C205A1C080A06000028000052B -S31540012E3011151BE87FFFB8F29010200F11151BE802 -S31540012E401310C82115151BC01710C8219012210354 -S31540012E50921261419412A1037FFFFB779612E141E1 -S31540012E6080A220021280000601000000C205A1C016 -S31540012E7080A060000280000511151BE87FFFB8E0C5 -S31540012E809010200F11151BE81310C8219012210331 -S31540012E90921261417FFFFB68D41DE0C880A22003E6 -S31540012EA01280000A1B000070C205A1C09A13601F60 -S31540012EB0190000108208400D9813201080A0400C84 -S31540012EC002800005191000857FFFB8CD9010200FB4 -S31540012ED01910008511151BE81310C8219012210302 -S31540012EE0921261417FFFFB54D41B20B880A220037C -S31540012EF01280000A1B000070C205A1C09A13601F10 -S31540012F00190000108208400D9813201080A0400C33 -S31540012F100280000511151BE87FFFB8B99010200FFC -S31540012F2011151BE81310C821C025A1C09012210319 -S31540012F30921261417FFFFB40D41E60F080A22002C5 -S31540012F401280000601000000C205A1C080A06000F9 -S31540012F500280000515151BE87FFFB8A99010200FC8 -S31540012F6015151BE81710C821D01E60F09412A10355 -S31540012F707FFFFB319612E14180A2200112800006BB -S31540012F8001000000C205A1C080A0600002800005CA -S31540012F9015151BE87FFFB89A9010200F15151BE8F1 -S31540012FA01710C821D01DE0C89412A1037FFFFB2250 -S31540012FB09612E14180A220031280000A1B00007094 -S31540012FC0C205A1C09A13601F190000108208400D66 -S31540012FD09813201080A0400C028000051B1000852C -S31540012FE07FFFB8879010200F1B10008515151BE831 -S31540012FF01710C821D01B60B89412A1037FFFFB0EA6 -S315400130009612E14180A220031280000A1B00007043 -S31540013010C205A1C09A13601F190000108208400D15 -S315400130209813201080A0400C02800005110048EA48 -S315400130307FFFB8739010200F110048EA13048D15D5 -S31540013040C025A1C0901223CD7FFFFB0C921262785E -S3154001305080A220011280000601000000C205A1C025 -S3154001306080A0600002800005110048EA7FFFB86435 -S315400130709010200F110048EA13048D15901223CDAC -S315400130807FFFFB0F9212627880A220011280000618 -S3154001309001000000C205A1C080A0600002800004BA -S315400130A0010000007FFFB8569010200FC025A1C037 -S315400130B07FFFFC841103C000291001449007BFF033 -S315400130C09207BFE87FFFFA3894152120C207BFF067 -S315400130D0DA05212080A0400D1280000782152120AB -S315400130E0DA006004C207BFF480A0400D02800D598A -S315400130F0010000007FFFB842901020103710008574 -S315400131009007BFF09216E0E07FFFFA279415212041 -S31540013110C206E0E0DA05212080A340018215212084 -S31540013120128000079816E0E0DA006004C20320042A -S3154001313080A3400102800D42010000007FFFB830AC -S31540013140901020109007BFF09215E0C87FFFFA1645 -S3154001315094152120C205E0C8DA05212080A340014B -S3154001316082152120128000079815E0C8DA00600414 -S31540013170C203200480A3400102800D2C01000000FF -S315400131807FFFB81F9010201003100085921060B881 -S315400131909007BFF07FFFFA04941521201B000070B1 -S315400131A0C205A1C09A13601F190000108208400D84 -S315400131B09813201080A0400C028000042110014485 -S315400131C07FFFB80F9010201003100080C02061C00F -S315400131D07FFFFC3C901020001310008594142120A1 -S315400131E0921260B87FFFF9F09007BFF03910008561 -S315400131F0C20720B0DA04212080A340019414212083 -S3154001320012800007821720B0DA02A004C2006004CF -S3154001321080A3400102800004010000007FFFB7F84F -S31540013220901020107FFFFC271103C0009007BFF0CC -S31540013230921660F07FFFF9DC94152120C205A1C0EA -S315400132408330600E8208600380A060022110014431 -S3154001325002800004231000807FFFB7E99010201000 -S3154001326094142120C02461C09007BFE87FFFF9CEA6 -S315400132709207BFF0DA042120C207BFF080A34001C4 -S315400132801280000794142120DA02A004C207BFF479 -S3154001329080A3400102800D21010000007FFFB7D8C5 -S315400132A0901020109007BFE89216E0E07FFFF9BE2C -S315400132B094152120C206E0E0DA05212080A34001D1 -S315400132C082152120128000079816E0E0DA0060049A -S315400132D0C203200480A3400102800D0B01000000BF -S315400132E07FFFB7C7901020109007BFE89215E0C83E -S315400132F07FFFF9AD94152120C205E0C8DA052120EA -S3154001330080A3400182152120128000079815E0C84C -S31540013310DA006004C203200480A3400102800CF558 -S31540013320010000007FFFB7B69010201019100085EC -S31540013330921320B89007BFE87FFFF99B941521208F -S315400133401B000070C205A1C09A13601F190000102E -S315400133508208400D9813201080A0400C0280000482 -S31540013360211001447FFFB7A6901020107FFFFBD5A7 -S31540013370901020001310008594142120921260B8F9 -S315400133807FFFF9899007BFE8C20720B0DA04212000 -S3154001339080A340019414212012800007821720B097 -S315400133A0DA02A004C200600480A340010280000446 -S315400133B0010000007FFFB792901020107FFFFBC1F4 -S315400133C01103C0009007BFE8921660F07FFFF976BF -S315400133D094152120C205A1C08330600E8208600386 -S315400133E080A0600221100144028000042310008065 -S315400133F07FFFB7839010201094142120C02461C010 -S315400134009016E0E07FFFF9689207BFF0C206E0E060 -S31540013410DA04212080A34001941421201280000760 -S315400134208216E0E0DA02A004C200600480A34001F3 -S3154001343002800CAB010000007FFFB7719010201095 -S315400134409016E0E09207BFE87FFFF95794152120D7 -S31540013450C206E0E0DA05212080A340018215212041 -S31540013460128000079816E0E0DA006004C2032004E7 -S3154001347080A3400102800C95010000007FFFB760E8 -S31540013480901020101B100085901360D092100008F8 -S315400134907FFFF9459415212019100085C20320D0DC -S315400134A0DA05212080A340018215212012800007E0 -S315400134B0981320D0DA006004C203200480A340019F -S315400134C002800C7D010000007FFFB74D9010201057 -S315400134D01B100085901360D8921000087FFFF932C7 -S315400134E09415212019100085C20320D8DA05212020 -S315400134F080A340018215212012800007981320D80D -S31540013500DA006004C203200480A3400102800C65F6 -S31540013510010000007FFFB73A901020101B10008574 -S3154001352003100085901360D8921060D07FFFF91E7A -S31540013530941521201B000070C205A1C09A13601F7B -S31540013540190000108208400D9813201080A0400CED -S3154001355002800004211001447FFFB72990102010FA -S315400135607FFFFB5890102000111000851310008535 -S3154001357094142120901220D87FFFF90B921260D02B -S31540013580C20720B0DA04212080A3400194142120EF -S3154001359012800007821720B0DA02A004C20060043C -S315400135A080A3400102800004010000007FFFB714A0 -S315400135B0901020107FFFFB431103C00019100085B6 -S315400135C01B100085901320D0921360D8C025A1C04E -S315400135D07FFFF8F594152120C20720B0DA05212096 -S315400135E080A340018215212012800007981720B040 -S315400135F0DA006004C203200480A3400102800C1F4C -S315400136001B0000707FFFB6FE901020109016E0E080 -S31540013610921660F07FFFF8E494152120C205A1C0FF -S315400136208330600E8208600380A06002211001444D -S3154001363002800004231000807FFFB6F19010201015 -S3154001364094142120C02461C09015E0C87FFFF8D6AC -S315400136509207BFF0C205E0C8DA04212080A34001E9 -S3154001366094142120128000078215E0C8DA02A004D2 -S31540013670C200600480A3400102800B9C010000004F -S315400136807FFFB6DF901020109015E0C89207BFE883 -S315400136907FFFF8C594152120C205E0C8DA0521202F -S315400136A080A3400182152120128000079815E0C8A9 -S315400136B0DA006004C203200480A3400102800B8625 -S315400136C0010000007FFFB6CE901020109015E0C893 -S315400136D09216E0E07FFFF8B494152120C205E0C8B8 -S315400136E0DA05212080A3400182152120128000079E -S315400136F09815E0C8DA006004C203200480A34001A3 -S3154001370002800B70010000007FFFB6BD90102010B3 -S315400137109015E0C8921000087FFFF8A39415212068 -S31540013720C205E0C8DA05212080A340018215212087 -S31540013730128000079815E0C8DA006004C20320042D -S3154001374080A3400102800B5A010000007FFFB6AC06 -S315400137509010201003100085921060B89015E0C8B3 -S315400137607FFFF8919415212003000070A610601F79 -S31540013770DA05A1C0030000109A0B4013AA1060108D -S3154001378080A34015231000852510014402800004C2 -S31540013790211000807FFFB69A90102010C02421C0CE -S315400137A0901460B89207BFF07FFFF87F9414A12070 -S315400137B0C20421C08208401380A040150280000443 -S315400137C0010000007FFFB68E90102010C02421C05A -S315400137D0901460B89207BFE87FFFF8739414A12054 -S315400137E0C20421C08208401380A040150280000413 -S315400137F0010000007FFFB68290102010C02421C036 -S31540013800901460B89216E0E07FFFF8679414A12007 -S31540013810C20421C08208401380A0401502800005E1 -S31540013820131000857FFFB676901020101310008587 -S31540013830C02421C0921260C8901460B87FFFF85A24 -S315400138409414A120C20421C08208401380A04015CF -S3154001385002800005901460B87FFFB6699010201071 -S31540013860901460B8C02421C0921000087FFFF84E22 -S315400138709414A120C20421C08208401380A040159F -S3154001388002800004010000007FFFB65D9010201009 -S31540013890C02421C0901460B8921660F07FFFF842B0 -S315400138A09414A120C20421C08330600E82086003B3 -S315400138B080A06002228000051103C0007FFFB65040 -S315400138C0901020101103C0007FFFFA7E3B10008448 -S315400138D0A2176210C02421C0AA14A120A40460101A -S315400138E0A0102000A6046008B010200C920400131A -S315400138F0900400117FFFF82C94152120DA048010E2 -S3154001390098040012C2052120A004201880A340017A -S315400139101280000790102010DA032004C2056004CB -S3154001392080A3400122800005B0863FFF7FFFB63469 -S3154001393001000000B0863FFF1CBFFFEE920400135A -S31540013940C205A1C080A06000128009890100000063 -S315400139501110008490122348920220087FFFF8122A -S315400139609415212098176210C2052120DA032148B7 -S3154001397080A340011280000782152120DA03214CE1 -S31540013980C200600480A3400122800AAB031000807C -S315400139907FFFB61B901020101110008490122360F7 -S315400139A0920220087FFFF800941521209817621093 -S315400139B0C2052120DA03216080A34001128000075D -S315400139C082152120DA032164C200600480A34001EC -S315400139D002800AA41B0000707FFFB60990102010D8 -S315400139E01110008490122378920220087FFFF7EE8F -S315400139F09415212098176210C2052120DA032178F7 -S31540013A0080A340011280000782152120DA03217C20 -S31540013A10C200600480A3400102800A9C1B00007022 -S31540013A207FFFB5F790102010C025A1C011100000EE -S31540013A3092102000150FFC007FFFF8B2961020006F -S31540013A40030FFC0080A200011280000880A26000E2 -S31540013A501280000601000000C205A1C080A06000DE -S31540013A6002800005111000007FFFB5E5901020107F -S31540013A701110000092102000152FFC007FFFF8A1C5 -S31540013A80961020000310020080A200011280000857 -S31540013A9080A260001280000601000000C205A1C09C -S31540013AA080A0600002800005113000007FFFB5D480 -S31540013AB0901020101130000092102000150FFC00CC -S31540013AC07FFFF890961020000330020080A200018B -S31540013AD01280000880A260001280000601000000EA -S31540013AE0C205A1C080A0600002800005113000001F -S31540013AF07FFFB5C3901020101130000092102000B6 -S31540013B00152FFC007FFFF87F96102000032FFC0045 -S31540013B1080A200011280000880A260001280000687 -S31540013B2001000000C205A1C080A06000028000051E -S31540013B30111000007FFFB5B2901020101110000047 -S31540013B407FFFF87A130FE0000310100080A20001F6 -S31540013B501280000601000000C205A1C080A06000DD -S31540013B6002800005111000007FFFB5A590102010BE -S31540013B70111000007FFFF877130FE000030FE000FC -S31540013B8080A200011280000601000000C205A1C00A -S31540013B9080A0600022800005191000857FFFB5983E -S31540013BA09010201019100085921320E8C025A1C05D -S31540013BB09007BFF07FFFF78F9415212019100085DC -S31540013BC0C20320D8DA05212080A340018215212095 -S31540013BD012800007981320D8DA006004C20320043B -S31540013BE080A3400102800A461B0000707FFFB58416 -S31540013BF0901020111B100085921360D0C025A1C0E2 -S31540013C009007BFF07FFFF77B94152120C207BFE0E5 -S31540013C10DA05212080A34001128000078215212068 -S31540013C20DA006004C207BFE480A3400102800A3E75 -S31540013C30010000007FFFB572901020119007BFF080 -S31540013C409215E0C87FFFF76B94152120C205E0C8A5 -S31540013C50DA05212080A34001821521201280000728 -S31540013C609815E0C8DA006004C203200480A340012D -S31540013C7002800A32010000007FFFB56190102011D9 -S31540013C8003100085921060B89007BFF07FFFF75987 -S31540013C9094152120C20720B0DA05212080A34001D6 -S31540013CA08215212012800007981720B0DA0060049F -S31540013CB0C203200480A3400102800A251B00007034 -S31540013CC07FFFB54F901020119007BFF0921660F01C -S31540013CD07FFFF74894152120C205A1C01B00007043 -S31540013CE08208400D1900002080A0400C211001449B -S31540013CF002800004231000807FFFB54190102011FF -S31540013D0094142120C02461C09007BFE87FFFF73992 -S31540013D109207BFF0DA042120C207BFE880A3400121 -S31540013D201280000794142120DA02A004C207BFECD6 -S31540013D3080A3400102800A10010000007FFFB530D8 -S31540013D409010201119100085901320E89207BFE0CA -S31540013D507FFFF72894152120C20720B0DA052120DC -S31540013D6080A340018215212012800007981720B0B8 -S31540013D70DA006004C203200480A3400102800A03E2 -S31540013D801B0000707FFFB51E901020111B1000858F -S31540013D9003100085901360E8921060D0C025A1C041 -S31540013DA07FFFF7149415212019100085C20320E8DE -S31540013DB0DA05212080A340018215212012800007C7 -S31540013DC0981320E8DA006004C203200480A340016E -S31540013DD0028009F8010000007FFFB509901020110B -S31540013DE09007BFE89215E0C87FFFF702941521209E -S31540013DF0C205E0C8DA05212080A3400182152120B1 -S31540013E00128000079815E0C8DA006004C203200456 -S31540013E1080A34001028009EC010000007FFFB4F855 -S31540013E20901020071B100085921360B89007BFE8D9 -S31540013E307FFFF6F09415212025000070D805A1C01A -S31540013E409A14A01F03000010980B000D82106010F9 -S31540013E5080A3000121100144028000042310008048 -S31540013E607FFFB4E790102011C02461C09007BFE8DE -S31540013E70921660F07FFFF6DF94142120C20461C0E0 -S31540013E80820840121B00002080A0400D22800005C0 -S31540013E90031000857FFFB4DA9010201103100085CE -S31540013EA0901060D894142120C02461C07FFFF6D1C0 -S31540013EB09207BFF019100085C20320D8DA042120E9 -S31540013EC080A340019414212012800007821320D838 -S31540013ED0DA02A004C200600480A34001028008B84F -S31540013EE0010000007FFFB4C6901020111B10008511 -S31540013EF003100085901360D8921060E87FFFF6BDED -S31540013F009415212019100085C20320D0DA052120FD -S31540013F1080A340018215212012800007981320D0EA -S31540013F20DA006004C203200480A34001028008A98C -S31540013F30010000007FFFB4B2901020119016E0E01E -S31540013F40921000087FFFF6AB94152120C20720B0DE -S31540013F50DA05212080A34001821521201280000725 -S31540013F60981720B0DA006004C203200480A3400100 -S31540013F700280089D1B0000707FFFB4A190102011A4 -S31540013F80C025A1C09016E0E09215E0C87FFFF699E2 -S31540013F9094152120C205E0C8DA05212080A34001FD -S31540013FA082152120128000079815E0C8DA006004C6 -S31540013FB0C203200480A3400102800894010000004E -S31540013FC07FFFB48F901020111B100085921360B8AB -S31540013FD09016E0E07FFFF68794152120C20720B0B6 -S31540013FE0DA05212080A34001821521201280000795 -S31540013FF0981720B0DA006004C203200480A3400170 -S31540014000028008871B0000707FFFB47D901020114D -S31540014010C025A1C09016E0E0921660F07FFFF675CC -S3154001402094152120C205A1C01B0000708208400DD5 -S315400140301900002080A0400C23100080028000045B -S31540014040211001447FFFB46E901020119414212059 -S31540014050C02461C09015E0C87FFFF6669207BFF0A5 -S31540014060C205E0C8DA04212080A34001941421202E -S31540014070128000078215E0C8DA02A004C20060047B -S3154001408080A340010280086F010000007FFFB45CFD -S31540014090901020119015E0C89207BFE87FFFF655B2 -S315400140A094152120C205E0C8DA05212080A34001EC -S315400140B082152120128000079815E0C8DA006004B5 -S315400140C0C203200480A3400102800863010000006E -S315400140D07FFFB44B901020119015E0C89216E0E096 -S315400140E07FFFF64494152120C205E0C8DA05212058 -S315400140F080A3400182152120128000079815E0C84F -S31540014100DA006004C203200480A3400102800857FC -S31540014110010000007FFFB43A901020119015E0C8CD -S31540014120921000087FFFF63394152120C205E0C89E -S31540014130DA05212080A34001821521201280000743 -S315400141409815E0C8DA006004C203200480A3400148 -S31540014150028007F3010000007FFFB429901020116F -S3154001416003100085921060B89015E0C87FFFF621D4 -S3154001417094152120C20720B0DA05212080A34001F1 -S315400141808215212012800007981720B0DA006004BA -S31540014190C203200480A34001028007E61B00007091 -S315400141A07FFFB417901020119015E0C8921660F069 -S315400141B07FFFF61094152120C205A1C03100007081 -S315400141C0820840183B00002080A0401D2310014476 -S315400141D002800004211000807FFFB4099010201155 -S315400141E019100085901320B89207BFF07FFFF601A2 -S315400141F094146120C20421C0AA16201F3500001064 -S3154001420082084015A616A01080A040130280000423 -S31540014210251000857FFFB3FA90102011C02421C0DC -S315400142209014A0B89207BFE87FFFF5F2941461207D -S31540014230C20421C08208401580A0401302800004B8 -S31540014240010000007FFFB3EE90102011C02421C071 -S315400142509014A0B89216E0E07FFFF5E69414612031 -S31540014260C20421C08208401580A040130280000587 -S31540014270131000857FFFB3E29010201113100085C3 -S31540014280C02421C0921260C89014A0B87FFFF5D90E -S3154001429094146120C20421C08208401580A04013B5 -S315400142A0028000059014A0B87FFFB3D5901020116D -S315400142B09014A0B8C02421C0921000087FFFF5CD0C -S315400142C094146120C20421C08208401580A0401385 -S315400142D002800005131000857FFFB3C9901020119D -S315400142E013100085C02421C09014A0B8921260F02A -S315400142F07FFFF5C094146120C20421C08208401892 -S3154001430080A0401D2280000515203E837FFFB3BC5F -S315400143109010201115203E83170021C89412A3FF47 -S315400143209612E3A1191FC0001B00C0009A1360B08A -S3154001433098132102D43FBFD0D83FBFD8C02421C053 -S315400143409007BFD89207BFD07FFFF5AA9407BFC891 -S31540014350DA07BFC8033FFC0080A340010280070B78 -S31540014360A207BFC87FFFB3A6901020111510868300 -S31540014370170021C89412A3FF9612E3A11900400029 -S315400143801B00C0009A1360B098132102D43FBFD0DE -S31540014390D83FBFD8C025A1C09007BFD89207BFD08C -S315400143A07FFFF5949407BFC8DA046004C207BFC80B -S315400143B08090400D1280000A1B000070C205A1C00A -S315400143C09A13601F190000108208400D98132004AB -S315400143D080A0400C22800005150FFC007FFFB388AA -S315400143E090102011150FFC00170281D89412A0409D -S315400143F09612E10C9A102010190006AFD43FBFD097 -S31540014400D83FBFD8C025A1C09007BFD89207BFD01B -S315400144107FFFF5789407BFC8030006AEDA07BFC829 -S315400144208210639580A340011280000703003A9AE7 -S31540014430DA0460048210630F80A3400102800733CF -S31540014440010000007FFFB36E90102011150FFFFF92 -S31540014450170281D89412A3409612E10C9A102010AB -S31540014460190006AFD43FBFD0D83FBFD8C025A1C0A1 -S315400144709007BFD89207BFD07FFFF55E9407BFC8AC -S31540014480DA046004C207BFC88090400D1280000A5A -S315400144901B000070C205A1C09A13601F19000010CD -S315400144A08208400D9813200480A0400C028000042D -S315400144B0010000007FFFB35290102011C025A1C01A -S315400144C0111088007FFFF63713100100031066C9EB -S315400144D0821062CA80A2000112800006010000001B -S315400144E0C205A1C080A06000028000051111BBFE7B -S315400144F07FFFB343901020111111BBFE901223FF91 -S315400145007FFFF628130C7040031527CA8210611EDF -S3154001451080A200011280000601000000C205A1C070 -S3154001452080A06000028000051310C7FF7FFFB334EF -S31540014530901020111310C7FF921263FC7FFFF619EA -S31540014540111E607E031D73FC8210633880A2000138 -S315400145501280000601000000C205A1C080A06000D3 -S3154001456002800005130FE0007FFFB3259010201154 -S31540014570130FE000921260017FFFF60A110020003E -S3154001458080A220001280000A1B000070C205A1C053 -S315400145909A13601F190000108208400D98132004D9 -S315400145A080A0400C02800005110FE0007FFFB3148C -S315400145B090102011110FE000C025A1C07FFFF5F931 -S315400145C092100008030FE00080A20001128000064D -S315400145D001000000C205A1C080A060000280000564 -S315400145E0130FE0007FFFB30690102011130FE00078 -S315400145F0921260017FFFF5EB1100200080A220009E -S315400146001280000A1B000070C205A1C09A13601FE8 -S31540014610190000108208400D9813200480A0400C18 -S31540014620028000051B1000857FFFB2F59010201116 -S315400146301B100085921360E8C025A1C09007BFF00A -S315400146407FFFF4DE9415212019100085C20320E86E -S31540014650DA05212080A3400182152120128000071E -S31540014660981320E8DA006004C203200480A34001C5 -S31540014670028006BA010000007FFFB2E190102012CD -S315400146801B100085921360D09007BFF07FFFF4CBDB -S315400146909415212019100085C20320D0DA05212066 -S315400146A080A340018215212012800007981320D053 -S315400146B0DA006004C203200480A34001028006ACF4 -S315400146C0010000007FFFB2CE901020129007BFF08C -S315400146D09215E0C87FFFF4B994152120C205E0C8C0 -S315400146E0DA05212080A3400182152120128000078E -S315400146F09815E0C8DA006004C203200480A3400193 -S31540014700028006A0010000007FFFB2BD901020127A -S315400147101B100085921360B89007BFF07FFFF4A786 -S3154001472094152120C20720B0DA05212080A340013B -S315400147308215212012800007981720B0DA00600404 -S31540014740C203200480A34001028006931B0000702F -S315400147507FFFB2AB901020129007BFF0921660F027 -S315400147607FFFF49694152120C205A1C01B0000705D -S315400147708208400D1900002080A0400C2110014400 -S3154001478002800004231000807FFFB29D901020120A -S3154001479094142120C02461C09007BFE87FFFF487AD -S315400147A09207BFF0DA042120C207BFE880A3400187 -S315400147B01280000794142120DA02A004C207BFEC3C -S315400147C080A34001028006DE010000007FFFB28C1B -S315400147D0901020120310008519100085901060E892 -S315400147E0921320D87FFFF47594152120C20720B07B -S315400147F0DA05212080A3400182152120128000077D -S31540014800981720B0DA006004C203200480A3400157 -S31540014810028006D01B0000707FFFB27990102012F3 -S31540014820C025A1C09007BFE89215E0C87FFFF46399 -S3154001483094152120C205E0C8DA05212080A3400154 -S3154001484082152120128000079815E0C8DA0060041D -S31540014850C203200480A34001028006C70100000074 -S315400148607FFFB267901024991B100085921360B8A0 -S315400148709007BFE87FFFF45194152120C20720B06D -S31540014880DA05212080A340018215212012800007EC -S31540014890981720B0DA006004C203200480A34001C7 -S315400148A0028006BA1B0000707FFFB255901020129D -S315400148B09007BFE8921660F07FFFF44094152120DF -S315400148C0C205A1C01B0000708208400D19000020DE -S315400148D080A0400C21100144028000042310008076 -S315400148E07FFFB2479010201294142120C02461C04A -S315400148F09016E0E07FFFF4319207BFF0C206E0E098 -S31540014900DA04212080A3400194142120128000075B -S315400149108216E0E0DA02A004C200600480A34001EE -S31540014920028006A4010000007FFFB23590102012DC -S315400149309016E0E09207BFE87FFFF420941521200E -S31540014940C20720B0DA05212080A34001821521202B -S3154001495012800007981720B0DA006004C2032004D1 -S3154001496080A34001028006981B0000707FFFB2249D -S3154001497090102012C025A1C09016E0E09215E0C823 -S315400149807FFFF40E94152120C205E0C8DA052120E7 -S3154001499080A3400182152120128000079815E0C8A6 -S315400149A0DA006004C203200480A340010280068F1E -S315400149B0010000007FFFB212901020120310008503 -S315400149C0921060B89016E0E07FFFF3FC9415212029 -S315400149D0C20720B0DA05212080A34001821521209B -S315400149E012800007981720B0DA006004C203200441 -S315400149F080A34001028006821B0000707FFFB20047 -S31540014A00901020129016E0E0921660F07FFFF3EBD3 -S31540014A1094152120C205A1C01B0000708208400DDB -S31540014A201900002080A0400C21100144028000049E -S31540014A30231000807FFFB1F29010201294142120A0 -S31540014A40C02461C09015E0C87FFFF3DC9207BFF038 -S31540014A50C205E0C8DA04212080A340019414212034 -S31540014A60128000078215E0C8DA02A004C200600481 -S31540014A7080A340010280061E010000007FFFB1E0D5 -S31540014A80901020129015E0C89207BFE87FFFF3CB44 -S31540014A9094152120C205E0C8DA05212080A34001F2 -S31540014AA082152120128000079815E0C8DA006004BB -S31540014AB0C203200480A340010280061201000000C7 -S31540014AC07FFFB1CF901020129015E0C89216E0E01A -S31540014AD07FFFF3BA94152120C205E0C8DA052120EB -S31540014AE080A3400182152120128000079815E0C855 -S31540014AF0DA006004C203200480A340010280060656 -S31540014B00010000007FFFB1BE901020129015E0C851 -S31540014B10921000087FFFF3A994152120C205E0C831 -S31540014B20DA05212080A34001821521201280000749 -S31540014B309815E0C8DA006004C203200480A340014E -S31540014B40028005FA010000007FFFB1AD90102012EE -S31540014B50191000859015E0C8921320B87FFFF3978E -S31540014B609415212003000070A610601FDA05A1C02C -S31540014B70030000109A0B4013AA10601080A3401541 -S31540014B802510008523100144028000042110008075 -S31540014B907FFFB19B90102012C02421C09014A0B871 -S31540014BA09207BFF07FFFF38594146120C20421C0B0 -S31540014BB08208401380A040150280000401000000D5 -S31540014BC07FFFB18F90102012C02421C09014A0B84D -S31540014BD09207BFE87FFFF37994146120C20421C094 -S31540014BE08208401380A040150280000401000000A5 -S31540014BF07FFFB18390102012C02421C09014A0B829 -S31540014C009216E0E07FFFF36D94146120C20421C047 -S31540014C108208401380A040150280000513100085CC -S31540014C207FFFB1779010201213100085C02421C058 -S31540014C30921260C89014A0B87FFFF360941461206B -S31540014C40C20421C08208401380A04015028000059D -S31540014C509014A0B87FFFB16A901020129014A0B8AA -S31540014C60C02421C0921000087FFFF35494146120A0 -S31540014C70C20421C08208401380A04015028000046E -S31540014C80010000007FFFB15E90102012C02421C0B8 -S31540014C909014A0B8921660F07FFFF34894146120F7 -S31540014CA0C20421C08330600E8208600380A0600286 -S31540014CB0228000051103C0007FFFB15190102012E0 -S31540014CC01103C0007FFFF57F3B100084A41763905A -S31540014CD0AA146120C02421C0A604A008A210200065 -S31540014CE0B0102005A00440129204401394152120CF -S31540014CF07FFFF33290100010DA042010C205212004 -S31540014D00A204601880A3400112800007901020126F -S31540014D10DA042014C205600480A3400102800474B1 -S31540014D20010000007FFFB13601000000B0863FFF61 -S31540014D303CBFFFEEA00440121110008590122020C6 -S31540014D40920220087FFFF31D941521209817639046 -S31540014D50C2052120DA0320A080A34001128000076A -S31540014D6082152120DA0320A4C200600480A34001F9 -S31540014D70028004DC1B0000707FFFB12190102012DD -S31540014D801110008590122038C025A1C0920220083A -S31540014D907FFFF30A9415212098176390C2052120BD -S31540014DA0DA0320B880A34001128000078215212032 -S31540014DB0DA0320BCC200600480A340010280047F64 -S31540014DC01B0000707FFFB10E90102012111000855C -S31540014DD090122050C025A1C0920220087FFFF2F711 -S31540014DE09415212098176390C2052120DA0320D01B -S31540014DF080A340011280000782152120DA0320D4C6 -S31540014E00C200600480A34001028004761B0000704A -S31540014E107FFFB0FB90102012111000859012206880 -S31540014E20C025A1C0920220087FFFF2E494152120FB -S31540014E3098176390C2052120DA0320E880A3400138 -S31540014E401280000782152120DA0320ECC20060049B -S31540014E5080A340010280046D1B0000707FFFB0E813 -S31540014E60901020121110008590122080C025A1C0FB -S31540014E70920220087FFFF2D1941521209817639062 -S31540014E80C2052120DA03210080A3400112800007D8 -S31540014E9082152120DA032104C200600480A3400167 -S31540014EA0028004641B0000707FFFB0D59010201271 -S31540014EB0C025A1C0111010007FFFF3B013100000F0 -S31540014EC00310300080A2000112800006010000009C -S31540014ED0C205A1C080A0600002800005111FE0004C -S31540014EE07FFFB0C790102012111FE0001310000081 -S31540014EF07FFFF2B794152120031FFC00DA0521201C -S31540014F0080A340011280000A82152120C20060045C -S31540014F1080A060001280000601000000C205A1C009 -S31540014F2080A0600002800005111FE0007FFFB0B441 -S31540014F309010201B111FE000133000007FFFF2A4E8 -S31540014F4094152120033FFC00DA05212080A340016E -S31540014F501280000A82152120C200600480A06000F0 -S31540014F601280000601000000C205A1C080A06000B9 -S31540014F7002800005111000007FFFB0A19010201C97 -S31540014F8011100000921020107FFFF29194152120FC -S31540014F90C205A1C01B0000708208400D1900002007 -S31540014FA080A0400C2110014402800004231000809F -S31540014FB07FFFB0939010201D94142120C02461C01E -S31540014FC0110020007FFFF282130FC000DA04212076 -S31540014FD0030E000080A340011280000A9414212090 -S31540014FE0C202A00480A060001280000601000000F9 -S31540014FF0C20461C080A0600002800005111FDFFF6E -S315400150007FFFB07F9010201E111FDFFF901223FFFC -S31540015010131000007FFFF26E941521200311FFFF4C -S31540015020821063FFDA05212080A340011280000728 -S3154001503082152120DA0060040338000080A3400174 -S3154001504002800405010000007FFFB06D9010201F13 -S31540015050111FD000130FF0007FFFF25D9415212040 -S315400150600311FC80DA05212080A340011280000A49 -S3154001507082152120C200600480A0600012800006D3 -S3154001508001000000C205A1C080A0600002800005A9 -S31540015090111FDFFF7FFFB05A90102021111FDFFF44 -S315400150A0901223FF921000087FFFF24994152120A8 -S315400150B00313FBFF821063FFDA05212080A3400121 -S315400150C01280000882152120DA00600403300000B6 -S315400150D08210602080A34001028003E401000000A9 -S315400150E07FFFB047901020207FFFF4761103C00068 -S315400150F0C025A1C09007BFE07FFFF2449215212051 -S31540015100C207BFE0DA05212080A3400112800007D3 -S3154001511082152120DA006004C207BFE480A3400162 -S31540015120028003D7010000007FFFB03590102013A5 -S315400151301B100085901360E87FFFF2349215212001 -S3154001514003100085DA0060E8C205212080A0400DE9 -S31540015150191000858215212012800007901320E83E -S31540015160DA006004C202200480A34001028003C920 -S31540015170010000007FFFB022901020131B10008514 -S31540015180901360D07FFFF2219215212019100085DE -S31540015190C20320D0DA05212080A3400182152120B7 -S315400151A012800007981320D0DA006004C20320045D -S315400151B080A34001028003BC010000007FFFB010C4 -S315400151C0901020131B100085901360D87FFFF20FBB -S315400151D092152120C20720B0DA05212080A3400183 -S315400151E08215212012800007981720B0DA0060044A -S315400151F0C203200480A34001028003B01B0000705B -S315400152007FFFAFFF9010201303100085901060B808 -S31540015210C025A1C07FFFF1FD92152120C20720B014 -S31540015220DA05212080A34001821521201280000742 -S31540015230981720B0DA006004C203200480A340011D -S315400152400280040F1B0000707FFFAFED901020130A -S31540015250C025A1C09015E0C87FFFF1EC9215212031 -S31540015260C2052120DA05E0C880A0400D8215212023 -S31540015270128000079015E0C8DA006004C2022004DB -S3154001528080A3400102800407010000007FFFAFDCDC -S3154001529090102013170C00089A10200019100C00CA -S315400152A015300F789612E001D83FBFF0D43FBFC00A -S315400152B09007BFF07FFFF1D592152120031004001E -S315400152C0DA05212080A340011280000A821521209F -S315400152D0C200600480A06000128000060100000048 -S315400152E0C205A1C080A06000028000059007BFC032 -S315400152F07FFFAFC3901020139007BFC07FFFF1C35C -S3154001530092152120C2052120DA0720B080A0400D48 -S315400153108215212012800007981720B0DA00600418 -S31540015320C203200480A34001028003E31B000070F6 -S315400153307FFFAFB390102013901660F07FFFF1B35B -S3154001534092152120C205A1C08330600E82086003F8 -S3154001535080A0600202800004211000807FFFAFA878 -S3154001536090102013C02421C07FFFF2981111F20042 -S315400153700310E80080A2000112800006010000002F -S31540015380C20421C080A06000028000040100000028 -S315400153907FFFAF9B901020137FFFF3CA11100000CF -S315400153A01101F5897FFFF289901221E20308E96430 -S315400153B080A200011280000601000000C205A1C0C2 -S315400153C080A0600002800004010000007FFFAF8CD6 -S315400153D0901020237FFFF27D1112A2080311410094 -S315400153E080A200011280000601000000C205A1C092 -S315400153F080A0600002800004010000007FFFAF80B2 -S31540015400901020237FFFF3AF110010009007BFF0EB -S31540015410921660F07FFFF1649415212003100C0071 -S31540015420DA05212080A340011280000A821521203D -S31540015430C200600480A060001280000601000000E6 -S31540015440C205A1C080A0600002800005901660F0F0 -S315400154507FFFAF6B90102014901660F09207BFC08B -S315400154607FFFF1569415212003200000DA05212003 -S3154001547080A340011280000A82152120C2006004E7 -S3154001548080A060001280000601000000C205A1C094 -S3154001549080A0600002800004010000007FFFAF5839 -S315400154A0901020147FFFF19190102001030FE0002E -S315400154B080A200011280000601000000C205A1C0C1 -S315400154C080A0600002800004010000007FFFAF4C15 -S315400154D0901020147FFFF17D90102001030FFC00F6 -S315400154E080A200011280000880A26000128000069E -S315400154F001000000C205A1C080A060000280000436 -S31540015500010000007FFFAF3E901020147FFFF36D36 -S315400155101110100019100085D41B20D07FFFF1F91E -S31540015520D01E60F003100085D03D2120DA0060D8FE -S31540015530C205212080A0400D191000858215212029 -S3154001554012800007901320D8DA006004C2022004BA -S3154001555080A3400102800361010000007FFFAF2864 -S31540015560901020227FFFF35711100000170400808E -S31540015570150F28009612E0F09A102000190FFC0032 -S31540015580D43FBFC0D83FBFF09007BFF09207BFC01E -S315400155907FFFF10594152120030FFC00DA05212038 -S315400155A080A340011280000682152120C2006004BA -S315400155B080A0600002800004010000007FFFAF1060 -S315400155C0901020157FFFF33F112000001700004087 -S315400155D0150014009612E0019A102000190FFC00E4 -S315400155E0D43FBFC0D83FBFF09007BFF09207BFC0BE -S315400155F07FFFF0ED94152120030FFC00DA052120F1 -S3154001560080A340011280000682152120C200600459 -S3154001561080A0600102800004010000007FFFAEF817 -S31540015620901020157FFFF32711300000170000402E -S31540015630152014009612E0019A102000192FFC0043 -S31540015640D43FBFC0D83FBFF09007BFF09207BFC05D -S315400156507FFFF0D594152120032FFC00DA05212088 -S3154001566080A340011280000682152120C2006004F9 -S3154001567080A0600102800004010000007FFFAEE0CF -S31540015680901020157FFFF30F11100000190FFC0039 -S315400156909A102000D83FBFF09007BFF09216E0E085 -S315400156A07FFFF0C194152120C206E0E0DA052120F2 -S315400156B080A3400182152120128000079816E0E060 -S315400156C0DA006004C203200480A340010280000482 -S315400156D0010000007FFFAECA901020157FFFF2F94E -S315400156E01120000017000040150014009612E00139 -S315400156F0190FFC009A102000D43FBFC0D83FBFF01D -S315400157009007BFF09216E0E07FFFF0A794152120A5 -S31540015710C206E0E0DA05212080A34001821521205E -S31540015720128000079816E0E0DA006004C203200404 -S3154001573080A3400102800004010000007FFFAEB05B -S31540015740901020157FFFF2DF113000001700004056 -S31540015750152014009612E0019A102000192FFC0022 -S31540015760D43FBFC0D83FBFF09007BFF09216E0E0EC -S315400157707FFFF08D94152120C2052120DA06E0E055 -S3154001578080A0400D82152120128000079016E0E08E -S31540015790DA006004C202200480A3400102800004B2 -S315400157A0010000007FFFAE96901020157FFFF2C5E5 -S315400157B01110000015100000961020019A102001CA -S315400157C0190FFC00D43FBFC0D83FBFF09007BFF0D0 -S315400157D09207BFC07FFFF079941521200310000086 -S315400157E0DA05212080A3400112800006821521207E -S315400157F0C200600480A06002028000040100000033 -S315400158007FFFAE7F901020157FFFF2AE1120000082 -S315400158109007BFF09207BFC07FFFF0689415212023 -S3154001582003100000DA05212080A340011280000602 -S3154001583082152120C200600480A06003028000041A -S31540015840010000007FFFAE6E901020157FFFF29D94 -S31540015850113000009A102001192FFC00D83FBFF0EB -S315400158609007BFF09207BFC07FFFF05494152120E7 -S3154001587003300000DA05212080A340011280000692 -S3154001588082152120C200600480A0600302800004CA -S31540015890010000007FFFAE5A901020157FFFF2896C -S315400158A011100000150FFC04172F26159412A01293 -S315400158B09612E231190FFEAE1B1CD2E89A13601103 -S315400158C098132154D43FBFC0D83FBFF09007BFF0D3 -S315400158D09207BFC07FFFF04794152120030FFEA713 -S315400158E082106296DA05212080A3400112800008C9 -S315400158F082152120DA006004032C1B348210602FAC -S3154001590080A3400102800004010000007FFFAE3CFD -S31540015910901020157FFFF26B112000009007BFF019 -S315400159209207BFC07FFFF03394152120030FFEA7D6 -S3154001593082106296DA05212080A340011280000878 -S3154001594082152120DA006004032C1B34821060305A -S3154001595080A3400102800004010000007FFFAE28C1 -S31540015960901020157FFFF25711300000192FFC04CB -S315400159701B2F26159A13623198132012D83FBFC0A8 -S315400159809007BFF09207BFC07FFFF01A9415212000 -S31540015990032FFEA782106296DA05212080A34001DB -S315400159A01280000882152120DA006004032C1B3482 -S315400159B08210603080A34001028000040100000093 -S315400159C07FFFAE0F901020157FFFF23E11100000B1 -S315400159D015101000961020009A102000191038005A -S315400159E0D43FBFC0D83FBFF09007BFF09207BFC0BA -S315400159F07FFFF0009415212003102400DA052120B1 -S31540015A0080A340011280000682152120C200600455 -S31540015A1080A0600002800004010000007FFFADF815 -S31540015A20901020157FFFF227112000009007BFF04C -S31540015A309207BFC07FFFEFEF94152120031024008A -S31540015A40DA05212080A3400112800006821521201B -S31540015A50C200600480A060000280000401000000D2 -S31540015A607FFFADE7901020157FFFF2161130000041 -S31540015A709007BFF09207BFC07FFFEFDE941521204C -S31540015A8003102400DA05212080A34001128000067C -S31540015A9082152120C200600480A0600002800004BB -S31540015AA0010000007FFFADD6901020157FFFF20563 -S31540015AB011100000210FE000110020007FFFF0B916 -S31540015AC09214200180A220001280012301000000CF -S31540015AD07FFFF1FC11200000110020007FFFF0B193 -S31540015AE09214200180A220001280011801000000BA -S31540015AF07FFFF1F411300000921420017FFFF0A9DD -S31540015B001100200080A220001280010D010000003A -S31540015B107FFFF1EC111000009A102000190FFC00D4 -S31540015B20D83FBFF09007BFF07FFFEFB89215212015 -S31540015B30C207BFF0DA05212080A340011280000789 -S31540015B4082152120DA006004C207BFF480A3400118 -S31540015B50028002A7010000007FFFADA99010201529 -S31540015B607FFFF1D8112000009007BFF07FFFEFA71C -S31540015B7092152120C207BFF0DA05212080A34001FA -S31540015B801280000782152120DA006004C207BFF4A3 -S31540015B9080A340010280029B010000007FFFAD9877 -S31540015BA0901020157FFFF1C7113000009007BFF01C -S31540015BB07FFFEF9692152120C207BFF0DA0521201B -S31540015BC080A340011280000782152120DA0060047B -S31540015BD0C207BFF480A340010280028F010000008A -S31540015BE07FFFAD87901020157FFFF1B611100000A1 -S31540015BF0030FDFFF901063FF7FFFF074A0100008D2 -S31540015C0080A2001002800004010000007FFFAD7CED -S31540015C10901020157FFFF1AB112000007FFFF06B44 -S31540015C2090100010030FE00080A2000102800004E2 -S31540015C30010000007FFFAD72901020157FFFF1A19A -S31540015C40113000007FFFF0619010001080A200101B -S31540015C5002800004010000007FFFAD69901020150D -S31540015C607FFFF198901020007FFFF0609015212072 -S31540015C70032FFE00DA05212080A340011280000691 -S31540015C8082152120C200600480A0600002800005C8 -S31540015C90211001447FFFAD5A901020162110014476 -S31540015CA07FFFF05C90142128DA042128032FF000AD -S31540015CB080A3400102800004A21421287FFFAD5039 -S31540015CC0901020167FFFF05D90100011DA04212814 -S31540015CD0030FE00080A340010280000401000000A0 -S31540015CE07FFFAD47901020167FFFF064901521206D -S31540015CF0030FFBF7821063F0DA05212080A34001F0 -S31540015D001280000882152120DA0060040303FF1285 -S31540015D108210604A80A3400102800005921660F01D -S31540015D207FFFAD3790102016921660F09007BFF0B6 -S31540015D307FFFEF3094152120C205A1C08330600E4C -S31540015D408208600780A060020280000519100046A3 -S31540015D507FFFAD2B901020171910004617100080B9 -S31540015D60DA02E1C8821321F880A0400DE00321F850 -S31540015D7002800004A212E1C87FFFAD2190102018D5 -S31540015D80C204600480A040100280000401000000AB -S31540015D907FFFAD1B90102018C204600880A06000F0 -S31540015DA01280007701000000C204600C80A06000F0 -S31540015DB01280006C010000007FFFEEE6010000004A -S31540015DC080A220010280019801000000190C40299F -S31540015DD01B23CD1B9A13609B981320069410200019 -S31540015DE096102000D83FBFF0D43FBFC07FFFEF2FB2 -S31540015DF09007BFF003100083A21062101B100081B0 -S31540015E0003100144A0136210A4106120B0102000B9 -S31540015E10832E2002DA044001DA27BFC09007BFC0B3 -S31540015E207FFFEF25921521209B2E2003D804000DDC -S31540015E30C2052120B00620019603401080A300012F -S31540015E401280000790102019DA02E004C204A0046F -S31540015E5080A340010280000580A620FF7FFFACE8B9 -S31540015E600100000080A620FF04BFFFEB832E200225 -S31540015E7003100083A41062101B100080031001441C -S31540015E80A2136210A6106120B0102000A12E20029C -S31540015E90C2048010C227BFC0921521207FFFEEDBCE -S31540015EA09007BFC0DA044010C2052120B006200287 -S31540015EB09804001180A34001128000079010201A17 -S31540015EC0DA032004C204E00480A3400102800005F5 -S31540015ED080A620FF7FFFACCA0100000080A620FFFC -S31540015EE024BFFFECA12E200230800211C205A1C0C1 -S31540015EF080A0600022BFFB8FB0863FFF30BFFB8A88 -S31540015F00C205A1C080A0600002BFF14501000000AA -S31540015F1030BFF141C205A1C080A0600002BFF13689 -S31540015F200100000030BFF132C205A1C080A060006F -S31540015F3002BFF1270100000030BFF1237FFFACB063 -S31540015F409010201530BFFEF37FFFACAD90102015A9 -S31540015F5030BFFEE87FFFACAA9010201530BFFEDDB2 -S31540015F607FFFACA79010201830BFFF947FFFACA4F1 -S31540015F709010201010BFF678111000847FFFACA05E -S31540015F809010201830BFFF89C207BFCC80A06000A7 -S31540015F9012BFF8F501000000C20421C08208401575 -S31540015FA09A16A00880A0400D12BFF8EF010000002C -S31540015FB010BFF8F015108683C205A1C09A13601F61 -S31540015FC0190000108208400D9813200880A0400C4B -S31540015FD012BFFB7D1110008510BFFB7F9012205030 -S31540015FE0C205A1C09A13601F190000108208400D16 -S31540015FF09813200880A0400C12BFFB861110008523 -S3154001600010BFFB8890122068C205A1C09A13601F79 -S31540016010190000108208400D9813200480A0400CFE -S3154001602012BFFB8F1110008510BFFB91901220808B -S31540016030C205A1C09A13601F190000108208400DC5 -S315400160409813200880A0400C12BFFB980100000065 -S3154001605030BFFB98C205A1C080A0600002BFFBFE15 -S31540016060111FD00030BFFBF9C205A1C080A060005E -S3154001607002BFFC1E0100000030BFFC1AC205A1C0D0 -S3154001608080A0600002BFFC2C1B10008530BFFC279E -S31540016090C205A1C080A0600002BFFC3A1B1000856A -S315400160A030BFFC35C205A1C080A0600002BFFC47DD -S315400160B01B10008530BFFC42C205A1C09A13601F68 -S315400160C0190000108208400D9813201080A0400C42 -S315400160D012BFFC4C0310008510BFFC4E901060B8F7 -S315400160E0C205A1C09A13601F190000108208400D15 -S315400160F09813200480A0400C12BFFB20111000858C -S3154001610010BFFB2290122038C205A1C080A06000BA -S3154001611022BFF8D0150FFFFF30BFF8CBC205A1C093 -S3154001612080A0600002BFF8100310008530BFF80B55 -S31540016130C205A1C09A13601F190000108208400DC4 -S315400161409813201080A0400C12BFF8169015E0C895 -S3154001615010BFF818921660F0C205A1C080A0600079 -S3154001616002BFF9491B10008530BFF944C205A1C0E1 -S3154001617080A0600002BFF9579007BFF030BFF952C7 -S31540016180C205A1C080A0600002BFF9631B10008553 -S3154001619030BFF95EC205A1C09A13601F19000010F5 -S315400161A08208400D9813201080A0400C12BFF96957 -S315400161B09007BFF010BFF96B921660F0C20461C040 -S315400161C080A0600002BFF74B1B10008530BFF74629 -S315400161D0C205A1C080A0600002BFF75A9016E0E058 -S315400161E030BFF755C205A1C09A13601F19000010B0 -S315400161F08208400D9813201080A0400C12BFF75F13 -S315400162000100000030BFF75FC205A1C080A0600059 -S3154001621002BFF76F1B10008530BFF76AC205A1C0E8 -S315400162209A13601F190000108208400D9813201020 -S3154001623080A0400C12BFF7750100000030BFF77512 -S31540016240C20461C080A0600002BFF7949015E0C807 -S3154001625030BFF78FC205A1C080A0600002BFF7A082 -S315400162609015E0C830BFF79BC205A1C080A0600071 -S3154001627002BFF7AC9015E0C830BFF7A7C205A1C071 -S315400162809A13601F190000108208400D98132010C0 -S3154001629080A0400C12BFFBED0100000030BFFBEDBA -S315400162A0C205A1C080A0600002BFFBFC170C00081C -S315400162B030BFFBF7C205A1C09A13601F1900001039 -S315400162C08208400D9813201080A0400C12BFFC1983 -S315400162D0901660F030BFFC1AC205A1C080A06000D4 -S315400162E002BFFCA10100000030BFFC9DC20461C099 -S315400162F080A0600002BFF9E59015E0C830BFF9E023 -S31540016300C205A1C080A0600002BFF9F19015E0C8A6 -S3154001631030BFF9ECC205A1C080A0600002BFF9FD03 -S315400163209015E0C830BFF9F8C205A1C080A0600051 -S3154001633002BFFA091910008530BFFA04C20461C0D0 -S3154001634080A0600002BFF9250310008530BFF92007 -S31540016350C205A1C09A13601F190000108208400DA2 -S315400163609813201080A0400C12BFF92C01000000A8 -S3154001637030BFF92CC205A1C080A0600002BFF93C24 -S315400163801B10008530BFF937C205A1C09A13601FA3 -S31540016390190000108208400D9813201080A0400C6F -S315400163A012BFF9429007BFE810BFF944921660F058 -S315400163B0C20461C080A0600002BFF95F9016E0E0B0 -S315400163C030BFF95AC205A1C09A13601F19000010C7 -S315400163D08208400D9813201080A0400C12BFF9642A -S315400163E00100000030BFF964C205A1C080A0600071 -S315400163F002BFF9740310008530BFF96FC205A1C011 -S315400164009A13601F190000108208400D981320103E -S3154001641080A0400C12BFF97A9016E0E010BFF97CDB -S31540016420921660F07FFFAB769010201910BFFE697F -S31540016430190C4029D80061C01B0000709A13601FD7 -S3154001644003000010980B000D8210600880A3000124 -S3154001645012BFF5501110008410BFF55290122360FF -S31540016460C205A1C09A13601F190000108208400D91 -S315400164709813200480A0400C12BFF55811100084D7 -S3154001648010BFF55A90122378C205A1C09A13601F16 -S31540016490190000108208400D9813200480A0400C7A -S315400164A012BFF5600100000030BFF560C205A1C012 -S315400164B080A0600002BFF4A90310008530BFF4A498 -S315400164C0C205A1C080A0600002BFF4939015E0C848 -S315400164D030BFF48EC205A1C080A0600002BFF47D2A -S315400164E09015E0C830BFF478C20461C080A0600056 -S315400164F002BFF4679015E0C830BFF462C205A1C07F -S315400165009A13601F190000108208400D981320024B -S3154001651080A0400C12BFF5B61B10008510BFF5B820 -S31540016520921360D0C205A1C080A0600002BFF5C52C -S315400165309007BFF030BFF5C0C205A1C080A0600082 -S3154001654002BFF5D10310008530BFF5CCC205A1C00D -S315400165509A13601F190000108208400D98132010ED -S3154001656080A0400C12BFF5D79007BFF010BFF5D9F8 -S31540016570921660F0C20461C080A0600022BFF5F3AC -S315400165801910008530BFF5EEC205A1C09A13601FF0 -S31540016590190000108208400D9813201080A0400C6D -S315400165A012BFF5F91B10008510BFF5FB03100085DE -S315400165B0C205A1C080A0600002BFF60B9007BFE8EC -S315400165C030BFF606C205A1C080A0600002BFF61723 -S315400165D01B10008530BFF612C20421C080A06000A6 -S315400165E022BFF03E113C02AF30BFF039C205A1C017 -S315400165F080A0600002BFFD5B0100000030BFFD5777 -S31540016600C205A1C080A0600002BFFD670100000075 -S3154001661030BFFD63C205A1C080A0600002BFFD730B -S315400166200100000030BFFD6FC205A1C080A060001F -S3154001663002BFF2D70310008530BFF2D2C205A1C016 -S3154001664080A0600002BFF2C19007BFF030BFF2BC2C -S31540016650C205A1C080A0600002BFF2AA3710008522 -S3154001666030BFF2A5C205A1C080A0600002BFF028DC -S315400166701111FC0030BFF023C205A1C09A13601F5F -S31540016680190000108208400D9813201080A0400C7C -S3154001669012BFF3DD9016E0E010BFF3DF921660F013 -S315400166A0C205A1C080A0600002BFF39E1B100085F9 -S315400166B030BFF399C205A1C080A0600002BFF38636 -S315400166C01B10008530BFF381C205A1C080A06000C8 -S315400166D002BFF36E1B10008530BFF369C20461C06F -S315400166E080A0600002BFF3589016E0E030BFF3533C -S315400166F0C205A1C080A0600002BFF30E191000853B -S3154001670030BFF309C205A1C080A0600002BFF2F804 -S315400167109007BFE830BFF2F3C20461C080A06000B9 -S3154001672002BFF2E29007BFE830BFF2DD81C7E00861 -S3154001673081E80000D27A000081C3E0080100000030 -S3154001674081C3E008900A20209332600492126001CE -S315400167508213C0007FFFFFF89E1040000100000039 -S3154001676081D8200081C3E008010000009DE3BF9865 -S315400167707FFFFFFC0100000082102400C0A04300FF -S3154001678081C7E00881E80000833220189A1000088A -S315400167908088600F028000049010200083336010CF -S315400167A09008600381C3E008010000009DE3BF98A3 -S315400167B0031000C01B1000C1B0106000A21360009E -S315400167C0031000C21B1000C2A4106000A613610092 -S315400167D0031000201B100020A8106168AA13600056 -S315400167E07FFFEBAD9010200C808A2008028001FECD -S315400167F0010000007FFFAA7D9010200ED08003206B -S315400168007FFFFFE2010000000310014380A2200246 -S31540016810028000C6D02060D080A22002148000E40D -S3154001682080A2200380A22001028000D1821020197B -S31540016830331000A02F1000A0391000A0371000A07F -S31540016840351000A07FFFFFC7210100007FFFFFC871 -S31540016850BA04A00C921000117FFFFFBC90100018E3 -S31540016860921000117FFFFFB990062004901000118D -S315400168707FFFFFB19210200ADA066014110800006A -S31540016880913A000DC205E010900A0001912A2002BA -S3154001689013008000900200117FFFFFA79212600A49 -S315400168A0DA06601411100000913A000DC205E0109D -S315400168B0900A0001912A2002900200117FFFFF9E5B -S315400168C09214208EDA066014111C0000913A000DD4 -S315400168D0C205E010900A0001912A20021301C0006E -S315400168E0900200117FFFFF949212608E9334A004B0 -S315400168F09004600C7FFFFF90921260019214201E5B -S315400169007FFFFF8D9004A0089010001D7FFFFF8A36 -S31540016910921020009334E004921260017FFFFF86BB -S315400169209004A004111000C2901221087FFFFF823B -S3154001693092102000031000E0A01060009334200460 -S31540016940111000C2901221047FFFFF7B9212601A40 -S3154001695003048D1582106278C2242004111000E0D0 -S3154001696015100120C0222000A2102003AC12A00065 -S31540016970A004E00C90047FFD40000A7592102003AC -S315400169801B100143C20360D08200600C932A0001B0 -S315400169909202401693326004901000107FFFFF660A -S315400169A09212601EA204600180A4600A04BFFFF235 -S315400169B0A0042004C206E008D807200C8208600122 -S315400169C08328400CD605E010111000E0D406A00043 -S315400169D0DA06601498122000960AE003972AC00D41 -S315400169E0920AA002111000A0DA022004940AA00122 -S315400169F0952A800D932A400D1B1000209612C00146 -S31540016A00E8236160030100001B0076418210601E8D -S31540016A109A1361C09212C00999332004C2252004F9 -S31540016A20DA2520089612C00A9E13200E913560047D -S31540016A301B1000C2031000C2821061049012201E76 -S31540016A40953620049813201E9A136108D625202CCA -S31540016A50D8252010D025201CD2252020DE2520280F -S31540016A60D6252014940ABFF0FA250000DA2520180D -S31540016A70C2252024C225200CA2102100D4A44320E3 -S31540016A80C2800320D88443209A102001A0102200FE -S31540016A90DAA40320D884032082102000C2A4032054 -S31540016AA0DAA0032081D820007FFFC55901000000EC -S31540016AB0C2800320E2844320E0840320DA05E0100B -S31540016AC0D6066014C206E0089A0B60039B2B400B66 -S31540016AD082086001D407200CD806A000111000A03E -S31540016AE08328400A980B2001D60220049A134001BC -S31540016AF0992B000B9A13400CC203400080A0600002 -S31540016B0012800008821360041B048D15D8004000D2 -S31540016B109A13627880A3000D02800038C205E01006 -S31540016B2010800000010000008210201A331000A0DE -S31540016B30C22660149810203F2F1000A0391000A0E3 -S31540016B40351000A09A1020148210200E151000A0B6 -S31540016B50371000A0DA27200CC222A004D826A000B4 -S31540016B60D825E01010BFFF38D826E0089A10207FBC -S31540016B70331000A02F1000A0C2266014DA25E010C1 -S31540016B809810203F391000A0351000A08210201324 -S31540016B909A10200D111000A0371000A0C227200C1A -S31540016BA0DA22200410BFFFF0D826A00012BFFF2230 -S31540016BB0331000A08210201CC22660149A102015A2 -S31540016BC08210207F391000A0371000A0DA27200C50 -S31540016BD0C226E0089810200F2F1000A0351000A003 -S31540016BE01B1000A08210203FD8236004C226A000BB -S31540016BF010BFFF15D825E010DA06E008D806601464 -S31540016C00820860039A0B6002D607200C8328400C49 -S31540016C109B2B400B8210400DD80040001B100000FA -S31540016C20C203400080A3000102800004D406E008AC -S31540016C301080000001000000C205E010980AA00182 -S31540016C40D207200CD6066014820860038328400BC5 -S31540016C50992B0009940AA0039810400CDA06A0006B -S31540016C60111000A0952A80099A0B6001D6022004D2 -S31540016C708210400AC20040009B2B400B9813000D26 -S31540016C800321D9509813200482106321C2230000A6 -S31540016C90DA03000080A3400102800004C206E00836 -S31540016CA01080000001000000D407200CDA05E01036 -S31540016CB082086001D60660148328400A9A0B600355 -S31540016CC0D806A0009B2B400B151000A0D602A004AD -S31540016CD0980B20019A134001992B000B9813400CF5 -S31540016CE08210000C05048D158410A278072AF37BC7 -S31540016CF08610E301C4384000C438400003048D15B2 -S31540016D00DA0300008210627880A340010280000409 -S31540016D108213200410800000010000001B2AF37B2F -S31540016D20D80040009A13630180A3000D12BFFFFAF9 -S31540016D30C205E010D6066014D806E0088208600352 -S31540016D40D407200C8328400B980B2001DA06A000BB -S31540016D50111000A0992B000A9A0B6003D602200459 -S31540016D608210400C9B2B400B15100143A010400D87 -S31540016D70F002A0D0A2102003E0240000C0A002200F -S31540016D80921020034000097290047FFD8206200C78 -S31540016D9098102001912A0001992B00011B10012016 -S31540016DA09610000182136000DA02000180A34010B0 -S31540016DB0A204600112800088A004000C80A4600A2D -S31540016DC024BFFFEFE0240000C0A0022003100120F1 -S31540016DD0A810000BAA106000A0102000A2102003EA -S31540016DE090047FFD4000095A92102003832C6002D3 -S31540016DF0912A0014DA04C00190020015820B6060EA -S31540016E009132200480A000019012201EA040001063 -S31540016E109A0B7F9F900A3F9F80A340081280007083 -S31540016E20A204600180A4600A24BFFFEF90047FFDA5 -S31540016E3080A4200012800004C205E01010800000EA -S31540016E4001000000D6066014D806E00882086003F7 -S31540016E50D407200CDA06A000111000A08328400BAD -S31540016E60980B2001992B000AD60220049A0B600246 -S31540016E708210400C9B2B400BAA10400D9FC5400031 -S31540016E800100000082102400C0A04300C0A00220DF -S31540016E90A0102000A21020039B2C6002C204C00D4A -S31540016EA08208606080A00001A0400010A204600139 -S31540016EB080A4600A24BFFFFA9B2C600280A42008AC -S31540016EC022800004D004E00410800000010000008C -S31540016ED0808A204002800007010000007FFFFE19E2 -S31540016EE00100000080A22000128000040100000081 -S31540016EF010800000010000007FFFFE12D004A008B0 -S31540016F0080A22000128000040100000010800000D1 -S31540016F10010000007FFFFE0BD004E00880A22000A4 -S31540016F2012800004010000001080000001000000F2 -S31540016F3083480000842860808188A0000100000009 -S31540016F400100000001000000D806E008D407200C2B -S31540016F50DA05E010980B2001D6066014992B000A39 -S31540016F609A0B6003C206A0009B2B400B151000A094 -S31540016F70D602A004820860018328400B9A13400C74 -S31540016F809A1340019A136004C203400092102004F0 -S31540016F9091D02002010000007FFFC41D01000000C6 -S31540016FA0981020009A102200D8A343208210200175 -S31540016FB0C2A34320D8A3432003100000DA804380B4 -S31540016FC0DAA043807FFFC47F9010200081D8200043 -S31540016FD03080000510800000010000001080000094 -S31540016FE00100000081C7E00891E820009DE3BF98B9 -S31540016FF0400007D201000000808A21000280003F44 -S31540017000010000007FFFA88D01000000912A2004A5 -S315400170107FFFA87690022005031001408210604848 -S31540017020DA00600480A3600022800015031001404D -S31540017030B0100001C20600009B38601F81836000CA -S31540017040DA06200401000000010000008278400DAC -S31540017050DA062008B006200C80A0400D028000040C -S31540017060901020017FFFA86601000000C20620049F -S3154001707080A0600012BFFFF0031001408210600043 -S31540017080DA00600480A36000028000150100000060 -S31540017090B0100001C206000081800000DA0620041B -S315400170A001000000010000009A70400D8210000DA1 -S315400170B0DA062008B006200C80A0400D02800004AC -S315400170C0901020027FFFA84E01000000C206200456 -S315400170D080A0600012BFFFF00100000040000825BB -S315400170E00100000080A2200012800004010000007F -S315400170F07FFFA8439010200381C7E00891E8200054 -S315400171009DE3BF987FFFA84D01000000912A20040E -S315400171107FFFA836900220044000078A0100000044 -S3154001712080A2212302800004010000007FFFA834D1 -S31540017130901020014000078101000000808A210053 -S315400171400280002B0310014082106184DA0060083E -S3154001715080A360090280001101000000B010000107 -S31540017160C2060000DA062004D80620088258400DDF -S31540017170B006200C80A0400C028000049010200232 -S315400171807FFFA81F01000000C206200880A06009F9 -S3154001719012BFFFF401000000400007770100000024 -S315400171A080A220000280000F01000000400007631A -S315400171B001000000808A22000280000D01000000CB -S315400171C04000079F0100000080A2200012800008B5 -S315400171D0010000007FFFA80A9010200430800004BF -S315400171E07FFFA8079010200330BFFFF181C7E00859 -S315400171F091E82000000000009DE3BFA0941020000C -S315400172001110005C9012222C1310005C9212623015 -S315400172101710005C9612E2381910005C9813223C54 -S3154001722093C2000081C240001080019181C2C0001A -S3154001723081C300001080018E9402A0019402A00136 -S3154001724080A2A0031280018A010000008744000049 -S315400172508D30E00E8C89A00780A1A000028000C776 -S3154001726001000000AF30E00BAE0DE00780A5E00065 -S31540017270128000C20100000080A1A00212800035E8 -S315400172800100000025100000E41C800025100000CC -S3154001729029100000A8152104A6100012AA100012F8 -S315400172A0AC100014A1802046A4100000AA100000D2 -S315400172B001000000A180204EA8102100010000001D -S315400172C0A18000000100000001000000E83CA03060 -S315400172D082A480131280016682A500161280016481 -S315400172E00100000001000000010000008744000089 -S315400172F08D30E00B8C89A0078CA1A0051280015C22 -S31540017300A180000001000000010000000100000012 -S31540017310E81CA03082A500161280015582A54012B4 -S31540017320A41000001280015201000000010000007B -S31540017330874400008D30E00B8C89A0078CA1A00307 -S315400173401280014B010000001080008C01000000FA -S3154001735080A1A0011280002325100000E41C8000BA -S315400173602510000029100000A8152104A6100012BE -S31540017370AA100012AC100014A1802046A4100000EF -S31540017380AA10000001000000A180204EA810210093 -S3154001739001000000A1800000010000000100000082 -S315400173A001000000E83C800082A480131280013075 -S315400173B082A500161280012E010000000100000086 -S315400173C0874400008D30E00B8C89A0078CA1A00278 -S315400173D012800127010000001080006801000000B2 -S315400173E080A1A00312800065A6100000A210200E05 -S315400173F0A1844000A6100000A1800000A814E0006E -S31540017400AB44000001000000AC14E00001000000A4 -S31540017410AF44000080A5200012800115AA8D6E00A0 -S3154001742080A540001280011280A5A00012800110A3 -S31540017430AF35E00BAE0DE00780A5E0011280010CEF -S3154001744001000000A0100000A1844000A610000029 -S31540017450A1800000E8180000AC100000AE1000004A -S31540017460EC04C000EE04E00480A500161280010081 -S3154001747080A54017128000FE01000000A5440000CF -S31540017480A534A00BA40CA00780A4A001128000F88B +S31540011C9085A00921C523000081C3E008D0030000C7 +S31540011CA01910008098132120D0230000D223200848 +S31540011CB0C1030000C303200885A009A1C523000074 +S31540011CC081C3E008D0030000191000809813212039 +S31540011CD0D0230000C103000083A00520C3230000D8 +S31540011CE081C3E008D00300001310008092126138CE +S31540011CF0C51A6008C11A400089A0084091A108C2CE +S31540011D0095A209C495A2894281C3E008D53A00004B +S31540011D101310008092126158C1024000C302600450 +S31540011D2085A0082087A088A189A0C9A289A10921E7 +S31540011D3081C3E008C92200009610200213100080DA +S31540011D4092126138151000809412A138D5024000D4 +S31540011D50D7028000D5220000D8020000131000806F +S31540011D609212615896A2E00112BFFFF901000000EC +S31540011D7081C3E0080100000013100080921261380F +S31540011D80151000809412A158C1028000C51A601036 +S31540011D9083A0082089A088C08BA109A18DA10942F1 +S31540011DA08FA1492691A0054681C3E008D13A00009A +S31540011DB01110008090122130C11A0000C51A00008E +S31540011DC0C91A0000CD1A0000D11A0000D51A000028 +S31540011DD0D91A0000DD1A0000E11A0000E51A0000D8 +S31540011DE0E91A0000ED1A0000F11A0000F51A000088 +S31540011DF0F91A0000FD1A000081C3E0080100000045 +S31540011E0029100080A81520F827100080A614E16843 +S31540011E10C12CC000E604C000A134E00EA00C20078E +S31540011E20A0A42002AE1020002D100080AC15A168A0 +S31540011E30AE05E001AC05A008C1358000C12D00000A +S31540011E40EA050000AB35600DAA8D600112BFFFF9AE +S31540011E5001000000808000100280002F2B3C1FFFF4 +S31540011E60AA1563FFA60CC015E6250000C10D0000AA +S31540011E702B100080AA1561742D100047AC15A2E005 +S31540011E80AE25E001E0054000E025800081D8200034 +S31540011E9001000000010000000100000001000000F7 +S31540011EA001000000010000000100000001000000E7 +S31540011EB001000000010000000100000001000000D7 +S31540011EC001000000010000000100000001000000C7 +S31540011ED001000000010000000100000001000000B7 +S31540011EE00000000080A5C00012BFFFE6AA056008F9 +S31540011EF0C12D0000E60500002B03C000A614C01545 +S31540011F00E6250000C10D000081C4400081CC80005F +S31540011F100100000081C4800081CCA00401000000C2 +S31540011F200100000081C3E008915800000100000053 +S31540011F3011100080901220F8C10A0000C022000052 +S31540011F40C10A0000C12A0000D40200001300038028 +S31540011F50942A800980A0000A3280004D9010200307 +S31540011F601303E000D223BFA0C023BFA4C10BBFA06F +S31540011F70C023BFA0151000809412A0E8C1028000C2 +S31540011F800100000001000000C10BBFA0C10BBFA4AE +S31540011F9083A00520C12BBFA0D003BFA0808A220009 +S31540011FA02280003B901020049010200015100080E4 +S31540011FB09412A108C5028000C902A008D102A00C52 +S31540011FC013100080921260E8C70240008DA0894438 +S31540011FD081A98AC8010000000380000501000000B4 +S31540011FE0901020011080002A01000000C5028000E7 +S31540011FF0C902A008D102A00C13100080921260E819 +S31540012000CB0240008DA0894481A98AC80100000005 +S315400120100380000501000000901020011080001C83 +S315400120200100000025100080A414A0F0C11C80000E +S31540012030C51C800080A000003280000685A008C033 +S3154001204081A80AC2010000001380000301000000BC +S31540012050901020050100000025100080A414A0F076 +S31540012060C11C8000C51C800080A00000010000004A +S315400120703280000685A008C081A80AC2010000007E +S3154001208013800003010000009010200701000000AA +S3154001209081C3E00801000000901020019544000032 +S315400120A09532A01E940AA00380A2800002800040BF +S315400120B09010200080A2A0021680003D13100080DF +S315400120C092126198C11A4000C51A6008FD02601853 +S315400120D095A0003E99A0003E9DA0003E170000C07D +S315400120E09612E078A182C0000100000001000000C4 +S315400120F00100000001000000010000000100000095 +S3154001210081A0002083A0002195A0002A99A0002C3F +S315400121109DA0002E170000C09612E07CA182C0004F +S315400121200100000001000000010000000100000064 +S31540012130010000000100000085A0002287A00023C5 +S31540012140A180000001000000010000000100000024 +S3154001215001000000010000000100000089A00842C2 +S31540012160A9A2883ED93A4000DD224000CD1A60102E +S31540012170D102600881A90A46010000000380000CD3 +S3154001218081AD0A2801000000038000099344000044 +S315400121909332601B920A60079010200080A2A00132 +S315400121A002800003902260079022600481C3E00808 +S315400121B001000000C12BBFA081C3E008D003BFA02E +S315400121C0D023BFA081C3E008C10BBFA0010000001E +S315400121D09DE3BF6040001B94B0102000833A200A63 +S315400121E08208600380A060010280000401000000B3 +S315400121F081C7E00881E800007FFFBDE19010200D16 +S31540012200050C40290723CD1B8410A0068610E09BB0 +S31540012210C027BFF0C027BFF4C43FBFF8C027BFD017 +S31540012220C027BFD4C027BFC87FFFFF3FC027BFCC51 +S31540012230820A30008210608084006004072804000E +S315400122408610E00F09100047C62040008811220081 +S3154001225007100000882100028939200286110003F7 +S31540012260C620600425100080032784008210601078 +S315400122707FFFFED0C220A0047FFFFFD21103E00002 +S3154001228090102000C024A1687FFFFDD0010000000E +S31540012290809200091280000601000000C204A16874 +S315400122A080A0600002800004010000007FFFBDBBEA +S315400122B09010200B7FFFFDC590103FFA03300600BA +S315400122C080A2000102800CF880A260007FFFBDB3AE +S315400122D09010200B7FFFFDBD9010201403100D00C0 +S315400122E080A200010280113680A260007FFFBDAB53 +S315400122F09010200B7FFFFDB5901020620310162031 +S3154001230080A200010280112780A260007FFFBDA349 +S315400123109010200B7FFFFDB590102005031028007B +S3154001232080A2000112800CB501000000C204A16820 +S3154001233080A0600012800CB1010000007FFFFFA168 +S315400123401103C000111C00007FFFFDB09210200058 +S31540012350031FFFFF821063FF80A200011280000B62 +S3154001236001000000C404A168030000708210601FD0 +S3154001237084088001030000108210601080A0800153 +S3154001238002800005113C00007FFFBD849010200CA7 +S31540012390113C00007FFFFD9D9210200003200000AC +S315400123A080A200011280000B01000000C404A16854 +S315400123B0030000708210601F840880010300001032 +S315400123C08210601080A0800102800004010000009C +S315400123D07FFFBD729010200CC024A1689010200090 +S315400123E07FFFFD8A9210200080A220001280000605 +S315400123F003100080C200616880A060000280000571 +S31540012400110144007FFFBD659010200C110144006D +S3154001241013284000901223027FFFFD7C9212600137 +S3154001242080A220001280000601000000C204A168BB +S3154001243080A06000228000051111FFFF7FFFBD577C +S315400124409010200C1111FFFF7FFFFD78901223FFA2 +S315400124500300007F821063FF80A2000112800C639B +S3154001246001000000C204A16880A0600012800C5FD8 +S3154001247001000000271000807FFFFD64D01CE1E0D1 +S31540012480031FFFFF821063FF80A200011280000B31 +S3154001249001000000C404A168030000708210601F9F +S315400124A084088001030000108210601080A0800122 +S315400124B002800005351000807FFFBD389010200C4A +S315400124C035100080D01EA1D0C024A1687FFFFD4FEA +S315400124D0010000000320000080A200011280000BD1 +S315400124E003100080C4006168030000708210601F01 +S315400124F084088001030000108210601080A08001D2 +S31540012500028000052B1000807FFFBD249010200C17 +S315400125102B100080D01D61F0C024A1687FFFFD3BD8 +S3154001252001000000031FFFFF821063FF80A200012C +S315400125301280000B03100080C40061680300007024 +S315400125408210601F84088001030000108210601011 +S3154001255080A08001028000052F1000807FFFBD0F03 +S315400125609010200C2F100080D01DE1B8C024A16826 +S315400125707FFFFD2601000000C204A1688330600E82 +S315400125808208600380A0600202800004010000000E +S315400125907FFFBD029010200C7FFFFF0A1103C00090 +S315400125A011115804C024A1687FFFFD2890122234DE +S315400125B003102B008210624680A200010280107136 +S315400125C0032000007FFFBCF59010200D113C02AFA7 +S315400125D07FFFFD1E901220D1033180558210639AF0 +S315400125E080A200010280105F030800007FFFBCEB60 +S315400125F09010200D1111FC007FFFFD1C9210200050 +S31540012600031FE00080A200011280000B01000000C0 +S31540012610C404A168030000708210601F8408800111 +S31540012620030000108210600880A08001028000042F +S31540012630010000007FFFBCD99010200DC024A16885 +S3154001264011207C01130001007FFFFD08901220300C +S315400126500320000080A200011280000B03100080BD +S31540012660C4006168030000708210601F8408800105 +S31540012670030000108210600480A0800102800004E3 +S31540012680010000007FFFBCC59010200DC024A16849 +S31540012690901020007FFFFCF59210200080A22000C0 +S315400126A01280000603100080C200616880A06000AD +S315400126B002800004010000007FFFBCB89010200D8D +S315400126C07FFFFCEAD01CE1E003100080C20061E814 +S315400126D080A2000112800BC101000000C204A16862 +S315400126E080A0600012800BBD010000003710008001 +S315400126F07FFFFCDED01EE1D8031FE00080A200016F +S3154001270012800BB301000000C204A16880A06000E2 +S3154001271012800BAF010000007FFFFCD4D01D61F099 +S3154001272003100080C200620080A200011280000BEB +S3154001273001000000C404A168030000708210601FFC +S3154001274084088001030000108210601080A080017F +S3154001275002800005D01DE1B87FFFBC909010200D8E +S31540012760D01DE1B8C024A1687FFFFCC00100000074 +S31540012770C204A1688330600E8208600380A06002B3 +S3154001278002800004010000007FFFBC849010200DF0 +S315400127907FFFFE8C1103E0002108C6AFC024A1686B +S315400127A0901420DE7FFFFCB9A01420DE80A2001029 +S315400127B012800B8303100080C200616880A0600014 +S315400127C012800B7F010000002108C6AF901420DE65 +S315400127D07FFFFCBEA01420DE80A2001012800B7485 +S315400127E001000000C204A16880A0600012800B7045 +S315400127F0010000001128C6AF7FFFFCB4901220DE15 +S315400128000308C6AF821060DE80A2000112800B640D +S3154001281001000000C204A16880A0600012800B6024 +S31540012820010000001108C6AF7FFFFCA0901220DE18 +S315400128300328C6AF821060DE80A2000112800B54CD +S3154001284001000000C204A16880A0600012800B5004 +S31540012850010000001128C6AF7FFFFC94901220DED4 +S315400128600308C6AF821060DE80A2000112800B45CC +S3154001287001000000C204A16880A0600012800B41E3 +S31540012880010000007FFFFE4F1103E00011151BC040 +S315400128901310C821901221039212614115351BC0B4 +S315400128A01710C8219412A1037FFFFC909612E141B3 +S315400128B080A2200212800B2B01000000C204A168F5 +S315400128C080A0600012800B270100000011351BC05B +S315400128D01310C821901221039212614115151BC094 +S315400128E01710C8219412A1037FFFFC809612E14183 +S315400128F080A2200112800B1F01000000C204A168C2 +S3154001290080A0600012800B1B010000009010200087 +S3154001291092102000152000007FFFFC7496102000C5 +S3154001292080A220001280000601000000C204A168B6 +S3154001293080A0600002800005D01EE1D87FFFBC1751 +S315400129409010200FD01EE1D87FFFFC68D41EA1D085 +S3154001295080A2200212800AFF01000000C204A16881 +S3154001296080A0600012800AFB0100000011151BC007 +S315400129701310C821901221039212614115151BE8CB +S315400129801710C8219412A1037FFFFC589612E1410A +S3154001299080A2200112800AEB01000000C204A16856 +S315400129A080A0600012800AE70100000011151BE8B3 +S315400129B01310C821901221039212614115151BC0B3 +S315400129C01710C8219412A1037FFFFC489612E141DA +S315400129D080A2200212800AD701000000C204A16829 +S315400129E080A0600012800AD301000000D41CE1E0FF +S315400129F011151BE81310C821901221037FFFFC3BE0 +S31540012A009212614180A2200312800AC60100000091 +S31540012A10C204A16880A0600012800AC201000000C1 +S31540012A20D41D61F011151BE81310C8219012210322 +S31540012A307FFFFC2E9212614180A220031280000B7F +S31540012A4001000000C404A168030000708210601FE9 +S31540012A5084088001030000108210601080A080016C +S31540012A6002800005D41DE1B87FFFBBCC9010200F3A +S31540012A70D41DE1B8C024A16811151BE81310C82163 +S31540012A80901221037FFFFC199212614180A220021C +S31540012A9012800AA003100080C200616880A0600015 +S31540012AA012800A9C01000000D01DE1B815151BE8F3 +S31540012AB01710C8219412A1037FFFFC0C9612E14125 +S31540012AC080A2200112800A8B01000000C204A16885 +S31540012AD080A0600012800A8701000000D01CE1E05E +S31540012AE015151BE81710C8219412A1037FFFFBFFA0 +S31540012AF09612E14180A2200312800A820100000061 +S31540012B00C204A16880A0600012800A7E0100000014 +S31540012B10D01D61F015151BE81710C8219412A103A9 +S31540012B207FFFFBF29612E14180A220031280000B47 +S31540012B3001000000C404A168030000708210601FF8 +S31540012B4084088001030000108210601080A080017B +S31540012B5002800004010000007FFFBB909010200F0F +S31540012B60C024A16811151BC01310C821901221035E +S31540012B709212614115351BC01710C8219412A10349 +S31540012B807FFFFBED9612E14180A2200212800A5599 +S31540012B9003100080C200616880A0600012800A5163 +S31540012BA00100000011351BC01310C82190122103EA +S31540012BB09212614115151BC01710C8219412A10329 +S31540012BC07FFFFBDD9612E14180A2200112800A417E +S31540012BD001000000C204A16880A0600012800A3D85 +S31540012BE001000000901020009210200015200000E6 +S31540012BF07FFFFBD19610200080A2200012800006A4 +S31540012C0001000000C204A16880A0600002800005A6 +S31540012C10D01EE1D87FFFBB619010200FD01EE1D8B6 +S31540012C207FFFFBC5D41EA1D080A2200212800A25B7 +S31540012C3001000000C204A16880A0600012800A2140 +S31540012C400100000011151BC01310C8219012210369 +S31540012C509212614115151BE81710C8219412A10360 +S31540012C607FFFFBB59612E14180A2200112800A1135 +S31540012C7001000000C204A16880A0600012800A0D14 +S31540012C800100000011151BE81310C8219012210301 +S31540012C909212614115151BC01710C8219412A10348 +S31540012CA07FFFFBA59612E14180A22002128009FD19 +S31540012CB001000000C204A16880A06000128009F9E9 +S31540012CC001000000D41CE1E011151BE81310C821D6 +S31540012CD0901221037FFFFB989212614180A220034B +S31540012CE01280000B01000000C404A16803000070BB +S31540012CF08210601F8408800103000010821060105A +S31540012D0080A0800102800005D41D61F07FFFBB23B6 +S31540012D109010200FD41D61F011151BE81310C82126 +S31540012D20901221037FFFFB849212614180A220030E +S31540012D301280000B01000000C404A168030000706A +S31540012D408210601F84088001030000108210601009 +S31540012D5080A0800102800005D41DE1B87FFFBB0F32 +S31540012D609010200FD41DE1B8C024A16811151BE8AD +S31540012D701310C821901221037FFFFB6F921261410C +S31540012D8080A22002128009BF03100080C200616840 +S31540012D9080A06000128009BB01000000D01DE1B88F +S31540012DA015151BE81710C8219412A1037FFFFB627A +S31540012DB09612E14180A22001128009B6010000006D +S31540012DC0C204A16880A06000128009B2010000001F +S31540012DD0D01CE1E015151BE81710C8219412A10378 +S31540012DE07FFFFB559612E14180A220031280000B22 +S31540012DF001000000C404A168030000708210601F36 +S31540012E0084088001030000108210601080A08001B8 +S31540012E1002800005D01D61F07FFFBAE09010200FBF +S31540012E20D01D61F015151BE81710C8219412A10396 +S31540012E307FFFFB419612E14180A220031280000BE5 +S31540012E4001000000C404A168030000708210601FE5 +S31540012E5084088001030000108210601080A0800168 +S31540012E6002800004010000007FFFBACC9010200FC1 +S31540012E70C024A168110048EA13048D15901223CD90 +S31540012E807FFFFB3E9212627880A22001128009796F +S31540012E9003100080C200616880A06000128009753D +S31540012EA001000000110048EA13048D15901223CD4C +S31540012EB07FFFFB439212627880A220011280096A49 +S31540012EC001000000C204A16880A06000128009666A +S31540012ED001000000C024A1687FFFFCBA1103C000B5 +S31540012EE023100124A807BFF8BA07BFD090100014D9 +S31540012EF09210001D7FFFFA6C94146160C2046160F8 +S31540012F00C407BFF880A0800102800E0CA014616046 +S31540012F107FFFBAA2901020102D100080901000144F +S31540012F209215A1C87FFFFA6094146160C404616080 +S31540012F30C205A1C880A0800122800DF6C4042004E8 +S31540012F407FFFBA9690102010901000149214E1E081 +S31540012F507FFFFA5594146160C4046160C204E1E0E4 +S31540012F6080A0800102800DE1B214E1E07FFFBA8BBF +S31540012F709010201090100014921561F07FFFFA4ACC +S31540012F8094146160C404A168030000708210601F3C +S31540012F9084088001030000108210601080A0800127 +S31540012FA002800004010000007FFFBA7C90102010CF +S31540012FB0C024A1687FFFFC8390102000901000146C +S31540012FC0921561F07FFFFA389414616039100080E0 +S31540012FD0C4046160C20721F880A0800122800DBD32 +S31540012FE0C40420047FFFBA6D901020107FFFFC754A +S31540012FF01103C000901000149215E1B87FFFFA2A20 +S3154001300094146160C204A1688330600E8208600333 +S3154001301080A0600202800004010000007FFFBA5FC9 +S3154001302090102010C024A1689010001D9210001429 +S315400130307FFFFA1D94146160C4046160C207BFF842 +S3154001304080A0800122800D9AC40420047FFFBA53D8 +S31540013050901020109010001D9215A1C87FFFFA1202 +S3154001306094146160C4046160C205A1C880A0800156 +S3154001307022800D84C40420047FFFBA48901020109A +S315400130809010001D9214E1E07FFFFA0794146160ED +S31540013090C4046160C204E1E080A0800122800D7019 +S315400130A0C40420047FFFBA3D901020109010001DEB +S315400130B0921561F07FFFF9FC94146160C404A16824 +S315400130C0030000708210601F840880010300001015 +S315400130D08210601080A0800102800004010000007F +S315400130E07FFFBA2E901020107FFFFC3690102000F3 +S315400130F09010001D921561F07FFFF9EB9414616009 +S31540013100C4046160C20721F880A0800122800D4D70 +S31540013110C40420047FFFBA21901020107FFFFC29B0 +S315400131201103C0009010001D9215E1B87FFFF9DE32 +S3154001313094146160C204A1688330600E8208600302 +S3154001314080A0600202800004010000007FFFBA13E4 +S3154001315090102010C024A1689015A1C892100014A7 +S315400131607FFFF9D194146160C4046160C205A1C8AE +S3154001317080A0800122800D28C40420047FFFBA0765 +S31540013180901020109015A1C89210001D7FFFF9C61E +S3154001319094146160C4046160C205A1C880A0800125 +S315400131A022800D12C40420047FFFB9FC9010201028 +S315400131B09016E1D8941461607FFFF9BB9210000824 +S315400131C0C4046160C206E1D880A0800122800CFC63 +S315400131D0C40420047FFFB9F1901020109016A1D0AD +S315400131E0941461607FFFF9B092100008C4046160D5 +S315400131F0C206A1D080A0800122800CE6C40420042E +S315400132007FFFB9E6901020109016A1D09216E1D812 +S315400132107FFFF9A594146160C404A168030000709E +S315400132208210601F84088001030000108210601024 +S3154001323080A0800102800004010000007FFFB9D711 +S31540013240901020107FFFFBDF901020009016A1D038 +S315400132509216E1D87FFFF99494146160C4046160C9 +S31540013260C20721F880A0800122800CC3C404200437 +S315400132707FFFB9CA901020107FFFFBD21103C00017 +S315400132809016E1D8C024A1689216A1D07FFFF98695 +S3154001329094146160C4046160C20721F880A0800172 +S315400132A022800CA4C40420047FFFB9BC90102010D6 +S315400132B09015A1C89215E1B87FFFF97B941461601E +S315400132C0C204A1688330600E8208600380A0600258 +S315400132D002800004010000007FFFB9B09010201069 +S315400132E0C024A1689014E1E0921000147FFFF96EAA +S315400132F094146160C4046160C204E1E080A080016D +S3154001330022800C83C40420047FFFB9A490102010AE +S315400133109014E1E09210001D7FFFF96394146160FF +S31540013320C4046160C204E1E080A0800122800C6F88 +S31540013330C40420047FFFB999901020109014E1E055 +S315400133409215A1C87FFFF95894146160C404616065 +S31540013350C204E1E080A0800122800C5BC404200409 +S315400133607FFFB98E901020109014E1E094146160B3 +S315400133707FFFF94D92100008C4046160C204E1E088 +S3154001338080A0800122800C47C40420047FFFB983BA +S31540013390901020109014E1E0921561F07FFFF94200 +S315400133A094146160C404A168030000708210601F18 +S315400133B084088001030000108210601080A0800103 +S315400133C002800004010000007FFFB97490102010B4 +S315400133D0C024A168901561F0921000147FFFF93264 +S315400133E094146160C404A168030000708210601FD8 +S315400133F084088001030000108210601080A08001C3 +S3154001340002800004010000007FFFB9649010201083 +S31540013410C024A168901561F09210001D7FFFF9222A +S3154001342094146160C404A168030000708210601F97 +S3154001343084088001030000108210601080A0800182 +S3154001344002800004010000007FFFB9549010201053 +S31540013450C024A168901561F09215A1C87FFFF912A9 +S3154001346094146160C404A168030000708210601F57 +S3154001347084088001030000108210601080A0800142 +S3154001348002800004010000007FFFB9449010201023 +S31540013490C024A168901561F09214E1E07FFFF90222 +S315400134A094146160C404A168030000708210601F17 +S315400134B084088001030000108210601080A0800102 +S315400134C002800005901561F07FFFB93490102010FD +S315400134D0901561F0C024A168941461607FFFF8F2F1 +S315400134E092100008C404A168030000708210601F96 +S315400134F084088001030000108210601080A08001C2 +S3154001350002800004010000007FFFB92490102010C2 +S31540013510C024A168901561F09215E1B87FFFF8E2E9 +S3154001352094146160C204A1688330600E820860030E +S3154001353080A0600202800004010000007FFFB917ED +S31540013540901020107FFFFB1F1103C0000310008065 +S31540013550C024A1688210633010800009B010200099 +S315400135607FFFB90E90102010C207BFC4B0062001DC +S3154001357080A6200D0280002282006018852E20033D +S31540013580912E200590220002051000808410A32070 +S31540013590C227BFC490008008932E20011510012434 +S315400135A0920240189412A16092026001932A60032C +S315400135B07FFFF8BD92008009C207BFC4C600400024 +S315400135C0C404000080A0C00232BFFFE6C227BFC4C8 +S315400135D0C60060040910012488112160C401200439 +S315400135E080A0C00232BFFFDFC227BFC4B0062001A0 +S315400135F080A6200D12BFFFE282006018C204A168B6 +S3154001360080A0600012800BA3010000001110008110 +S3154001361094146160901220587FFFF8A3920220080B +S315400136200310008082106320C4006148C2046160B7 +S3154001363080A0800102800B86071000807FFFB8D7EB +S315400136409010201011100081941461609012207026 +S315400136507FFFF8959202200809100080C20461603C +S3154001366088112320C401216080A0800122800B693A +S31540013670C40121647FFFB8C9901020101110008148 +S3154001368094146160901220887FFFF8879202200887 +S315400136900310008082106320C4006178C204616017 +S315400136A080A0800102800B4B071000807FFFB8BBD2 +S315400136B090102010C024A168111000009210200023 +S315400136C0150FFC007FFFF94F96102000030FFC00F9 +S315400136D080A2000102800B3880A260007FFFB8AF54 +S315400136E0901020101110000092102000152FFC00A0 +S315400136F07FFFF944961020000310020080A20001CA +S3154001370002800B2680A260007FFFB8A49010201093 +S315400137101130000092102000150FFC007FFFF9398F +S31540013720961020000330020080A2000102800B1493 +S3154001373080A260007FFFB8999010201011300000E0 +S3154001374092102000152FFC007FFFF92E96102000C5 +S31540013750032FFC0080A2000102800B0280A26000C0 +S315400137607FFFB88E90102010111000007FFFF92FB7 +S31540013770130FE0000310100080A20001128007B66B +S3154001378001000000C204A16880A06000128007B257 +S3154001379001000000111000007FFFF92E130FE00019 +S315400137A0030FE00080A20001128007A7010000007C +S315400137B0C204A16880A06000128007A30100000036 +S315400137C009100080C024A16890100014941461600F +S315400137D07FFFF848921121C0C4046160C206A1D09E +S315400137E080A0800122800ACFC40420047FFFB86BE9 +S315400137F090102011C024A168901000149216E1D8AF +S315400138007FFFF83C94146160C4046160C207BFC87D +S3154001381080A0800122800ABAC40420047FFFB85FD9 +S3154001382090102011901000149214E1E07FFFF831BE +S3154001383094146160C4046160C204E1E080A0800127 +S3154001384022800AA6C40420047FFFB8549010201198 +S3154001385090100014921561F07FFFF8269414616070 +S31540013860C4046160C20721F880A0800122800A8ACF +S31540013870C40420047FFFB849901020119010001411 +S315400138809215E1B87FFFF81B941461600300007044 +S31540013890C404A168840880010300002080A080013F +S315400138A002800004010000007FFFB83C9010201107 +S315400138B0C024A1689010001D921000147FFFF80DDE +S315400138C094146160C4046160C207BFD080A08001C6 +S315400138D022800A68C40420047FFFB830901020116A +S315400138E0031000809207BFC8901061C07FFFF801A6 +S315400138F094146160C4046160C20721F880A080010C +S3154001390022800A4CC40420047FFFB8249010201161 +S3154001391009100080C024A168901121C09216E1D8F7 +S315400139207FFFF7F494146160C4046160071000805E +S31540013930C200E1C080A0800122800A34C404200470 +S315400139407FFFB816901020119010001D9214E1E0EF +S315400139507FFFF7E894146160C4046160C204E1E04A +S3154001396080A0800122800A20C40420047FFFB80B76 +S31540013970901020079010001D921561F07FFFF7DD32 +S3154001398094146160C404A168030000708210601F32 +S3154001399084088001030000108210601080A080011D +S315400139A002800004010000007FFFB7FC9010201147 +S315400139B0C024A1689010001D9215E1B87FFFF7CD94 +S315400139C09414616003000070C404A16884088001F6 +S315400139D00300002080A08001028000040100000055 +S315400139E07FFFB7EE90102011C024A1689016A1D098 +S315400139F0921000147FFFF7BF94146160C4046160A4 +S31540013A00C206A1D080A08001228009ECC404200412 +S31540013A107FFFB7E290102011091000809016A1D0C7 +S31540013A20921121C07FFFF7B394146160C4046160B1 +S31540013A30C206E1D880A08001228009D5C4042004B1 +S31540013A407FFFB7D6901020119015A1C894146160DC +S31540013A507FFFF7A892100008C4046160C20721F8ED +S31540013A6080A08001228009BAC40420047FFFB7CB1D +S31540013A7090102011C024A1689015A1C89214E1E0CC +S31540013A807FFFF79C94146160C4046160C204E1E065 +S31540013A9080A08001228009A5C40420047FFFB7BF0E +S31540013AA0901020119015A1C8921561F07FFFF791F2 +S31540013AB094146160C4046160C20721F880A080014A +S31540013AC02280098AC40420047FFFB7B490102011D4 +S31540013AD0C024A1689015A1C89215E1B87FFFF7856A +S31540013AE09414616003000070C404A16884088001D5 +S31540013AF00300002080A08001028000040100000034 +S31540013B007FFFB7A690102011C024A1689014E1E070 +S31540013B10921000147FFFF77794146160C4046160CA +S31540013B20C204E1E080A0800122800967C404200428 +S31540013B307FFFB79A901020119014E1E09210001D7A +S31540013B407FFFF76C94146160C4046160C204E1E0D4 +S31540013B5080A0800122800953C40420047FFFB78FCF +S31540013B60901020119014E1E09215A1C87FFFF761F2 +S31540013B7094146160C4046160C204E1E080A08001E4 +S31540013B802280093FC40420047FFFB784901020118E +S31540013B909014E1E0941461607FFFF756921000089B +S31540013BA0C4046160C204E1E080A080012280092B47 +S31540013BB0C40420047FFFB779901020119014E1E0EE +S31540013BC0921561F07FFFF74B94146160C404616004 +S31540013BD0C20721F880A080012280090FC404200475 +S31540013BE07FFFB76E901020119014E1E09215E1B875 +S31540013BF07FFFF7409414616003000070C404A1681C +S31540013C00840880010300002080A080010280000515 +S31540013C10901561F07FFFB76190102011901561F00A +S31540013C20921000147FFFF73394146160C404A168B5 +S31540013C30030000708210601F840880010300001099 +S31540013C408210601080A08001028000040100000003 +S31540013C507FFFB75290102011C024A168901561F0E2 +S31540013C609210001D7FFFF72394146160C404A1687C +S31540013C70030000708210601F840880010300001059 +S31540013C808210601080A080010280000401000000C3 +S31540013C907FFFB74290102011C024A168901561F0B2 +S31540013CA09215A1C87FFFF71394146160C404A168FB +S31540013CB0030000708210601F840880010300001019 +S31540013CC08210601080A08001028000040100000083 +S31540013CD07FFFB73290102011C024A168901561F082 +S31540013CE09214E1E07FFFF70394146160C404A16874 +S31540013CF0030000708210601F8408800103000010D9 +S31540013D008210601080A0800102800005901561F04C +S31540013D107FFFB72290102011901561F0C024A16851 +S31540013D20941461607FFFF6F392100008C404A16801 +S31540013D30030000708210601F840880010300001098 +S31540013D408210601080A08001028000040100000002 +S31540013D507FFFB71290102011C024A168901561F021 +S31540013D609215E1B87FFFF6E3941461600300007099 +S31540013D70C404A168840880010300002080A080015A +S31540013D8002800005051FC0007FFFB7049010201177 +S31540013D90051FC0000700C0008410A1028610E0B0D4 +S31540013DA0C024A168B007BFE0C43FBFE805203E83F9 +S31540013DB0070021C88410A3FF8610E3A19007BFE83E +S31540013DC092100018C43FBFE07FFFF6CA9407BFD8E0 +S31540013DD0C407BFD8033FFC0080A080010280088051 +S31540013DE0C207BFDC7FFFB6ED9010201105004000F1 +S31540013DF00700C0008410A1028610E0B0C024A1686B +S31540013E009007BFE8C43FBFE805108683070021C875 +S31540013E108410A3FF8610E3A1921000189407BFD81F +S31540013E207FFFF6B4C43FBFE0C207BFDCC407BFD8BB +S31540013E30809080011280000B03100080C4006168ED +S31540013E40030000708210601F840880010300001087 +S31540013E508210600480A0800102800005050006AF43 +S31540013E607FFFB6CE90102011050006AF86102010B8 +S31540013E70C024A1689007BFE8C43FBFE8050FFC0016 +S31540013E80070281D88410A0408610E10C92100018D8 +S31540013E909407BFD87FFFF697C43FBFE0C407BFD89A +S31540013EA0030006AE8210639580A08001028008421D +S31540013EB0C407BFDC7FFFB6B990102011050006AFDD +S31540013EC086102010C024A1689007BFE8C43FBFE810 +S31540013ED0050FFFFF070281D88410A3408610E10C2D +S31540013EE0921000189407BFD87FFFF682C43FBFE007 +S31540013EF0C207BFDCC407BFD8809080011280000B87 +S31540013F0003100080C4006168030000708210601FC6 +S31540013F1084088001030000108210600480A08001A3 +S31540013F2002800004010000007FFFB69C9010201122 +S31540013F30C024A168111088007FFFF75A13100100B1 +S31540013F40031066C9821062CA80A20001128005BAB6 +S31540013F5003100080C200616880A06000128005B62F +S31540013F60010000001111BBFE130C70407FFFF74D9D +S31540013F70901223FF031527CA8210611E80A20001F9 +S31540013F80128005A901000000C204A16880A060005A +S31540013F90128005A501000000111E607E1310C7FFA7 +S31540013FA07FFFF740921263FC031D73FC8210633856 +S31540013FB080A200011280059801000000C204A16898 +S31540013FC080A06000128005940100000011002000CD +S31540013FD0130FE0007FFFF7339212600180A22000A9 +S31540013FE01280000B01000000C404A16803000070A8 +S31540013FF08210601F84088001030000108210600453 +S3154001400080A0800102800005110FE0007FFFB663AA +S3154001401090102011110FE000C024A1687FFFF72105 +S3154001402092100008030FE00080A20001128005767D +S3154001403003100080C200616880A060001280057292 +S315400140400100000011002000130FE0007FFFF7156B +S315400140509212600180A220001280000B0100000034 +S31540014060C404A168030000708210601F84088001A7 +S31540014070030000108210600480A0800102800005C8 +S31540014080031000807FFFB645901020110310008079 +S31540014090C024A168921061C0901000147FFFF607FA +S315400140A094146160C404616007100080C200E1C0DD +S315400140B080A08001228007B6C40420047FFFB63762 +S315400140C090102012901000149216E1D87FFFF5FB54 +S315400140D094146160C4046160C206E1D880A0800185 +S315400140E0228007A0C40420047FFFB62C9010201222 +S315400140F0901000149214E1E07FFFF5F09414616092 +S31540014100C4046160C204E1E080A080012280078C82 +S31540014110C40420047FFFB621901020129010001491 +S31540014120921561F07FFFF5E594146160C404616006 +S31540014130C20721F880A0800122800770C4042004B0 +S315400141407FFFB61690102012901000149215E1B818 +S315400141507FFFF5DA9414616003000070C404A1681E +S31540014160840880010300002080A0800102800004B1 +S31540014170010000007FFFB60990102012C024A168FB +S315400141809010001D921000147FFFF5CC94146160CD +S31540014190C4046160C207BFD080A080012280074E5F +S315400141A0C40420047FFFB5FD901020120310008047 +S315400141B09216A1D0901061C07FFFF5C09414616042 +S315400141C0C4046160C20721F880A0800122800732C1 +S315400141D0C40420047FFFB5F190102012C024A168C9 +S315400141E09010001D9214E1E07FFFF5B494146160D4 +S315400141F0C4046160C204E1E080A080012280071D01 +S31540014200C40420047FFFB5E5901024999010001D49 +S31540014210921561F07FFFF5A994146160C404616051 +S31540014220C20721F880A0800122800701C40420042E +S315400142307FFFB5DA901020129010001D9215E1B85B +S315400142407FFFF59E9414616003000070C404A16869 +S31540014250840880010300002080A0800102800004C0 +S31540014260010000007FFFB5CD90102012C024A16847 +S315400142709015A1C8921000147FFFF59094146160C7 +S31540014280C4046160C205A1C880A08001228006DD08 +S31540014290C40420047FFFB5C1901020129015A1C817 +S315400142A09210001D7FFFF58594146160C40461601E +S315400142B0C20721F880A08001228006C2C4042004DE +S315400142C07FFFB5B690102012C024A1689015A1C8F1 +S315400142D09214E1E07FFFF57994146160C404616052 +S315400142E0C204E1E080A08001228006ADC40420041E +S315400142F07FFFB5AA901020129015A1C8921561F0C2 +S315400143007FFFF56E94146160C4046160C20721F8B1 +S3154001431080A0800122800691C40420047FFFB59FBE +S31540014320901020129015A1C89215E1B87FFFF56350 +S315400143309414616003000070C404A168840880017C +S315400143400300002080A080010280000401000000DB +S315400143507FFFB59290102012C024A1689014E1E02D +S31540014360921000147FFFF55594146160C404616096 +S31540014370C204E1E080A080012280066FC4042004CB +S315400143807FFFB586901020129014E1E09210001D37 +S315400143907FFFF54A94146160C4046160C204E1E0A0 +S315400143A080A080012280065BC40420047FFFB57B88 +S315400143B0901020129014E1E09215A1C87FFFF53FBD +S315400143C094146160C4046160C204E1E080A080018C +S315400143D022800647C40420047FFFB5709010201246 +S315400143E09014E1E0941461607FFFF5349210000867 +S315400143F0C4046160C204E1E080A0800122800633EA +S31540014400C40420047FFFB565901020129014E1E0AA +S31540014410921561F07FFFF52994146160C404A16887 +S31540014420030000708210601F8408800103000010A1 +S315400144308210601080A0800102800004010000000B +S315400144407FFFB55690102012C024A168901561F0E7 +S31540014450921000147FFFF51994146160C404A16899 +S31540014460030000708210601F840880010300001061 +S315400144708210601080A080010280000401000000CB +S315400144807FFFB54690102012C024A1689210001DEE +S31540014490901561F07FFFF50994146160C404A16829 +S315400144A0030000708210601F840880010300001021 +S315400144B08210601080A0800102800004010000008B +S315400144C07FFFB53690102012C024A168901561F087 +S315400144D09215A1C87FFFF4F994146160C404A168E0 +S315400144E0030000708210601F8408800103000010E1 +S315400144F08210601080A0800102800004010000004B +S315400145007FFFB52690102012C024A168901561F056 +S315400145109214E1E07FFFF4E994146160C404A16858 +S31540014520030000708210601F8408800103000010A0 +S315400145308210601080A0800102800005901561F014 +S315400145407FFFB51690102012901561F0C024A16826 +S31540014550941461607FFFF4D992100008C404A168E5 +S31540014560030000708210601F840880010300001060 +S315400145708210601080A080010280000401000000CA +S315400145807FFFB50690102012C024A168901561F0F6 +S315400145909215E1B87FFFF4C994146160C204A16821 +S315400145A08330600E8208600380A0600202800005AD +S315400145B01103C0007FFFB4F9901020121103C0000F +S315400145C07FFFF70031100080B0162228C024A16871 +S315400145D010800008BA1020007FFFB4F0901020121E +S315400145E0BA07600180A7600602800024B006201841 +S315400145F0832F60030910008088112218912F6005CE +S31540014600932F6001902200019202401D9001000803 +S315400146109202600115100124932A60039412A1604D +S315400146207FFFF4A692010009C4060000C2040000FF +S3154001463080A0800112BFFFE907100124C4062004AF +S315400146408610E160C200E00480A0800112BFFFE352 +S315400146500910008088112168C201000080A0600015 +S3154001466012BFFFDE01000000BA07600180A76006A5 +S3154001467012BFFFE0B006201811100080941461604B +S31540014680901222A87FFFF48D920220080310008029 +S3154001469082106218C40060A0C204616080A08001DB +S315400146A00280057A071000807FFFB4BC901020126B +S315400146B0C024A1681110008094146160901222C038 +S315400146C07FFFF47E9202200809100080C2046160D7 +S315400146D088112218C40120B880A080012280055D7E +S315400146E0C40120BC7FFFB4AD90102012C024A16844 +S315400146F01110008094146160901222D87FFFF46FEC +S31540014700920220080310008082106218C40060D013 +S31540014710C204616080A080010280053E07100080CE +S315400147207FFFB49E90102012C024A1681110008012 +S3154001473094146160901222F07FFFF4609202200887 +S3154001474009100080C204616088112218C40120E862 +S3154001475080A0800122800521C40120EC7FFFB48F17 +S3154001476090102012C024A168111000809414616039 +S31540014770901223087FFFF451920220080310008013 +S3154001478082106218C4006100C204616080A0800189 +S3154001479002800502071000807FFFB480901020122E +S315400147A0C024A168111010007FFFF53413100000DA +S315400147B00310300080A20001128003B7031000806D +S315400147C0C200616880A06000128003B3010000004E +S315400147D0111FE000131000007FFFF43D9414616047 +S315400147E0C4046160031FFC0080A08001228004E3B1 +S315400147F0C20420047FFFB4699010201B111FE00002 +S31540014800133000007FFFF43294146160C404616088 +S31540014810033FFC0080A08001228004D0C204200412 +S315400148207FFFB45E9010201C1110000092102010E2 +S315400148307FFFF4279414616003000070C404A168EB +S31540014840840880010300002080A0800102800004CA +S31540014850010000007FFFB4519010201DC024A168C3 +S3154001486011002000130FC0007FFFF41994146160FA +S31540014870C4046160030E000080A08001228004AF61 +S31540014880C20420047FFFB4459010201E111FDFFF94 +S3154001489013100000901223FF7FFFF40D9414616002 +S315400148A0C40461600311FFFF821063FF80A0800191 +S315400148B022800499C40420047FFFB4389010201F3D +S315400148C0111FD000130FF0007FFFF40194146160B3 +S315400148D0C40461600311FC8080A0800122800486AB +S315400148E0C20420047FFFB42D90102021111FDFFF49 +S315400148F094146160901223FF7FFFF3F59210000834 +S31540014900C40461600313FBFF821063FF80A0800132 +S315400149102280046FC40420047FFFB420901020201D +S315400149207FFFF6281103C0009007BFC8C024A168C5 +S315400149307FFFF3F692146160C4046160C207BFC889 +S3154001494080A0800122800459C40420047FFFB4134F +S315400149509010201309100080921461607FFFF3EBE1 +S31540014960901121C005100080C200A1C0C40461603D +S3154001497080A0800102800442071000807FFFB407B7 +S31540014980901020139016E1D87FFFF3E092146160F6 +S31540014990C4046160C206E1D880A080010280042D72 +S315400149A0091000807FFFB3FD901020139016A1D00F +S315400149B07FFFF3D692146160C4046160C20721F897 +S315400149C080A0800122800413C40420047FFFB3F336 +S315400149D090102013C024A168901561F07FFFF3CB9E +S315400149E092146160C4046160C20721F880A080010D +S315400149F0228003F8C40420047FFFB3E890102013FB +S31540014A00C024A1689014E1E07FFFF3C09214616075 +S31540014A10C204E1E0C404616080A08001228003E415 +S31540014A20C20660047FFFB3DD9010201305100C0011 +S31540014A30861020009010001492146160C43FBFF8A4 +S31540014A4005300F78070C00088610E0017FFFF3AFB1 +S31540014A50C43FBFF0C40461600310040080A080011C +S31540014A60228003CBC20420047FFFB3CC90102013D5 +S31540014A70A607BFF0921461607FFFF3A49010001364 +S31540014A80C20721F8C404616080A08001028003B09E +S31540014A90051000807FFFB3C1901020139015E1B837 +S31540014AA07FFFF39A92146160C204A1688330600E5D +S31540014AB08208600380A060020280000401000000B9 +S31540014AC07FFFB3B690102013C024A1687FFFF47F07 +S31540014AD01111F2000310E80080A20001128002EBDE +S31540014AE003100080C200616880A06000128002E766 +S31540014AF0010000007FFFF5B3111000001101F58997 +S31540014B007FFFF472901221E20308E96480A200015A +S31540014B10128002DB01000000C204A16880A060008F +S31540014B20128002D7010000007FFFF4681112A2082B +S31540014B300311410080A20001128002CE0100000053 +S31540014B40C204A16880A06000128002CA0100000070 +S31540014B507FFFF59C11001000901000149215E1B8EA +S31540014B607FFFF35194146160C404616003100C002B +S31540014B7080A080012280036EC20420047FFFB38798 +S31540014B80901020149015E1B8921000137FFFF34B5B +S31540014B9094146160C40461600320000080A0800118 +S31540014BA02280035BC20420047FFFB37C9010201453 +S31540014BB07FFFF38E90102001030FE00080A20001D9 +S31540014BC0128002A901000000C204A16880A0600011 +S31540014BD0128002A5010000007FFFF37C90102001A6 +S31540014BE0030FFC0080A200010280034280A2600004 +S31540014BF07FFFB36A901020147FFFF57211101000E9 +S31540014C00D41EE1D87FFFF3FFD01DE1B8C206A1D083 +S31540014C10D024616080A040080280032BD224200466 +S31540014C207FFFB35E901020227FFFF56611100000D2 +S31540014C30050FFC00861020009010001492100013FE +S31540014C40C43FBFF8050F2800070400808610E0F036 +S31540014C50941461607FFFF314C43FBFF0C4046160E4 +S31540014C60030FFC0080A0800122800313C2042004AC +S31540014C707FFFB34A901020157FFFF55211200000A7 +S31540014C80050FFC00861020009010001492100013AE +S31540014C90C43FBFF805001400070000408610E0013C +S31540014CA0941461607FFFF300C43FBFF0C4046160A8 +S31540014CB0030FFC0080A08001228002FBC204200475 +S31540014CC07FFFB336901020157FFFF53E113000006F +S31540014CD0052FFC008610200090100014921000133E +S31540014CE0C43FBFF805201400070000408610E001CC +S31540014CF0941461607FFFF2ECC43FBFF0C40461606D +S31540014D00032FFC0080A08001228002E3C20420041C +S31540014D107FFFB322901020157FFFF52A1110000066 +S31540014D20050FFC0086102000901000149215A1C8B2 +S31540014D30C43FBFF87FFFF2DC94146160C404616034 +S31540014D40C205A1C880A08001228002CCC4042004EF +S31540014D507FFFB312901020157FFFF51A1120000036 +S31540014D60050FFC0086102000901000149215A1C872 +S31540014D70C43FBFF805001400070000408610E0015B +S31540014D80941461607FFFF2C8C43FBFF0C404616000 +S31540014D90C205A1C880A08001228002B1C4042004BA +S31540014DA07FFFB2FE901020157FFFF50611300000FF +S31540014DB0052FFC0086102000901000149215A1C802 +S31540014DC0C43FBFF805201400070000408610E001EB +S31540014DD0941461607FFFF2B4C43FBFF0C205A1C81D +S31540014DE0C404616080A0800102800296091000809F +S31540014DF07FFFB2EA901020157FFFF4F211100000F8 +S31540014E00050FFC008610200190100014921000132B +S31540014E10C43FBFF80510000086102001941461605C +S31540014E207FFFF2A6C43FBFF0C404616003100000D7 +S31540014E3080A080012280027FC20420047FFFB2D776 +S31540014E40901020157FFFF4DF112000009010001410 +S31540014E50921000137FFFF29994146160C40461605B +S31540014E600310000080A080012280026EC20420044B +S31540014E707FFFB2CA901020157FFFF4D21130000097 +S31540014E80052FFC008610200190100014921000138B +S31540014E90C43FBFF87FFFF28994146160C404616026 +S31540014EA00330000080A080012280025AC2042004FF +S31540014EB07FFFB2BA901020157FFFF4C21110000097 +S31540014EC0050FFEAE071CD2E88410A1548610E011EE +S31540014ED09010001492100013C43FBFF8050FFC0454 +S31540014EE0072F26158410A0128610E23194146160B2 +S31540014EF07FFFF280C43FBFF0C4046160030FFEA789 +S31540014F008210629680A080012280023CC404200463 +S31540014F107FFFB2A2901020157FFFF4AA1120000056 +S31540014F2090100014921000137FFFF2729414616086 +S31540014F30C4046160030FFEA78210629680A08001BF +S31540014F4022800228C40420047FFFB29490102015C9 +S31540014F507FFFF49C11300000052FFC04072F261516 +S31540014F608410A0128610E2319010001492100013A2 +S31540014F70C43FBFF07FFFF25F94146160C404616077 +S31540014F80032FFEA78210629680A080012280020F25 +S31540014F90C40420047FFFB281901020157FFFF4895D +S31540014FA011100000051038008610200090100014E2 +S31540014FB092100013C43FBFF8051010008610200060 +S31540014FC0941461607FFFF24BC43FBFF0C40461603B +S31540014FD00310240080A08001228001F8C20420042D +S31540014FE07FFFB26E901020157FFFF47611200000EE +S31540014FF090100014921000137FFFF23E94146160EA +S31540015000C40461600310240080A08001228001E76E +S31540015010C20420047FFFB261901020157FFFF4691E +S315400150201130000090100014921000137FFFF231EE +S3154001503094146160C40461600310240080A080015F +S31540015040228001D6C20420047FFFB254901020155D +S315400150507FFFF45C1110000011002000130FE000E7 +S315400150607FFFF3109212600180A22000128001C8D6 +S31540015070010000007FFFF4531120000011002000C1 +S31540015080130FE0007FFFF3079212600180A2200018 +S31540015090128001BC010000007FFFF44A113000007C +S315400150A011002000130FE0007FFFF2FE9212600113 +S315400150B080A22000128001B0010000007FFFF44170 +S315400150C011100000050FFC008610200090100014FE +S315400150D0921461607FFFF20DC43FBFF8C404616062 +S315400150E0C207BFF880A080012280019AC40420042F +S315400150F07FFFB22A901020157FFFF4321120000065 +S31540015100901000147FFFF20192146160C404616043 +S31540015110C207BFF880A0800122800185C404200413 +S315400151207FFFB21E901020157FFFF426113000003C +S31540015130901000147FFFF1F592146160C404616020 +S31540015140C207BFF880A0800122800170C4042004F8 +S315400151507FFFB212901020157FFFF41A1110000044 +S315400151602B0FDFFF901563FF7FFFF2D8AA1563FF70 +S3154001517080A2001502800004010000007FFFB207F3 +S31540015180901020157FFFF40F11200000110FDFFF53 +S315400151907FFFF2CE901223FF030FE00080A20001B1 +S315400151A002800004010000007FFFB1FC9010201531 +S315400151B07FFFF404113000002B0FDFFF901563FFD2 +S315400151C07FFFF2C2AA1563FF80A200150280000488 +S315400151D0010000007FFFB1F1901020157FFFF3F928 +S315400151E0901020007FFFF2C190146160C404616099 +S315400151F0032FFE0080A0800122800140C2042004CA +S315400152007FFFB1E6901020162B1001247FFFF2C1DB +S3154001521090156168C4056168032FF00080A0800184 +S3154001522002800004010000007FFFB1DC90102016CF +S315400152307FFFF2C290156168C4056168030FE00003 +S3154001524080A0800102800004010000007FFFB1D3ED +S31540015250901020167FFFF2C990146160C40461600A +S31540015260030FFBF7821063F080A080012280011CAE +S31540015270C40420047FFFB1C9901020169215E1B8ED +S31540015280901000147FFFF19B94146160C204A168E1 +S315400152908330600E8208600780A0600202800005AC +S315400152A0031000807FFFB1BD9010201703100080CE +S315400152B0C400617003100046E40060F8821060F893 +S315400152C080A0400202800005031000807FFFB1B339 +S315400152D09010201803100080C200617480A0401213 +S315400152E002800005031000807FFFB1AC90102018AA +S315400152F003100080C200617880A06000128000F433 +S315400153000100000003100080C200617C80A06000A3 +S31540015310128000EC010000007FFFF14E0100000009 +S3154001532080A220010280052D01000000050C4029C4 +S315400153300723CD1B8410A0068610E09B9010001415 +S31540015340C027BFF0C027BFF4C43FBFF82910008172 +S315400153507FFFF1962B100082AA1560A0A4102000B1 +S31540015360A81520A0AC146160BA1000151080000881 +S31540015370AE1000107FFFB18990102019A404A0043B +S3154001538080A4A400228000172B100084C2050012BD +S31540015390C224C000901000137FFFF18792100016BF +S315400153A0832CA001C4040000C605400180A0C002B0 +S315400153B012BFFFF182074001C4006004C205E00448 +S315400153C080A0800112BFFFEC01000000A404A004EC +S315400153D080A4A40032BFFFEFC20500122B10008447 +S315400153E0A2146160AA1560A0A4102000AE10001599 +S315400153F010800008AC1000107FFFB1689010201A91 +S31540015400A404A00880A4A4000280001501000000A5 +S31540015410C2050012C224C000921000117FFFF13B69 +S3154001542090100013C4054012C204000080A0800100 +S3154001543012BFFFF28205C012C4006004C205A00477 +S3154001544080A0800112BFFFED01000000A404A00866 +S3154001545080A4A40032BFFFF0C205001281C7E00854 +S3154001546081E800007FFFB14D9010200F30BFF69AC2 +S315400154707FFFB14A9010200F10BFF68C110048EA09 +S315400154807FFFB1469010200F10BFF646D01DE1B800 +S315400154907FFFB1429010200F10BFF64FD01CE1E0C4 +S315400154A07FFFB13E9010200F10BFF608D41CE1E0FB +S315400154B07FFFB13A9010200F10BFF5F411151BE88C +S315400154C07FFFB1369010200F10BFF5E011151BC0BC +S315400154D07FFFB1329010200F10BFF5C4901020000D +S315400154E07FFFB12E9010200F10BFF5B011351BC0B4 +S315400154F07FFFB12A9010200F10BFF57AD01CE1E052 +S315400155007FFFB1269010200F10BFF583D01D61F0AB +S315400155107FFFB1229010200F10BFF565D01DE1B875 +S315400155207FFFB11E9010200F10BFF53FD41D61F0D3 +S315400155307FFFB11A9010200F10BFF52ED41CE1E069 +S315400155407FFFB1169010200F10BFF51A11151BE8F9 +S315400155507FFFB1129010200F10BFF50611151BC029 +S315400155607FFFB10E9010200F10BFF4DA11351BC02A +S315400155707FFFB10A9010200F10BFF4E69010200073 +S315400155807FFFB1069010200E30BFF4BF7FFFB103FD +S315400155909010200E10BFF4B11128C6AF7FFFB0FFA7 +S315400155A09010200E10BFF4A11108C6AF7FFFB0FBCB +S315400155B09010200E10BFF4911128C6AF7FFFB0F7AF +S315400155C09010200E10BFF4822108C6AF7FFFB0F3C2 +S315400155D09010200D30BFF4517FFFB0F09010200D98 +S315400155E010BFF444371000807FFFB0EC9010200CC0 +S315400155F010BFF3A2271000807FFFB0E89010200B68 +S3154001560030BFF34F7FFFB0E59010201110BFFA8FE6 +S31540015610110020007FFFB0E19010201110BFFA6DFC +S31540015620110020007FFFB0DD9010201110BFFA5C01 +S31540015630111E607E7FFFB0D99010201110BFFA4B2A +S315400156401111BBFE7FFFB0D59010201010BFF85E40 +S31540015650091000807FFFB0D19010201010BFF84F85 +S31540015660111000007FFFB0CD9010201430BFFD5BBC +S315400156707FFFB0CA9010202330BFFD367FFFB0C7F1 +S315400156809010202330BFFD297FFFB0C49010201316 +S3154001569030BFFD197FFFB0C19010201210BFFC4EE4 +S315400156A0111FE00012BFF30A01000000C204A16805 +S315400156B080A0600002BFF3080100000030BFF30480 +S315400156C07FFFB0B69010201830BFFF147FFFB0B3F4 +S315400156D09010201810BFFF0D031000800303FF1226 +S315400156E08210604A80A0800112BFFEE39215E1B8A4 +S315400156F010BFFEE59010001480A0600002BFFEC4FA +S315400157002B10012430BFFEBFC207BFFC80A0800121 +S3154001571012BFFE9001000000C204A16880A0600093 +S3154001572002BFFE8E0100000030BFFE8AC207BFFCE9 +S3154001573080A0800112BFFE7B01000000C204A16867 +S3154001574080A0600002BFFE790100000030BFFE75F7 +S31540015750C207BFFC80A0800112BFFE6601000000A7 +S31540015760C204A16880A0600002BFFE64010000007F +S3154001577030BFFE607FFFB0899010201530BFFE50CC +S315400157807FFFB0869010201530BFFE447FFFB08367 +S315400157909010201530BFFE3880A0600002BFFE2D5C +S315400157A00100000030BFFE2980A0600002BFFE1C40 +S315400157B00100000030BFFE1880A0600002BFFE0B52 +S315400157C00100000030BFFE07032C1B3482106030FD +S315400157D080A0800112BFFDF00100000030BFFDF046 +S315400157E0032C1B348210603080A0800112BFFDD78C +S315400157F00100000030BFFDD7032C1B348210602FFF +S3154001580080A0800112BFFDC30100000030BFFDC36F +S3154001581080A0600312BFFDA70100000030BFFDA7B5 +S3154001582080A0600312BFFD930100000030BFFD93CD +S3154001583080A0600212BFFD820100000030BFFD82E0 +S31540015840C4042004881121C8C201200480A080011B +S3154001585012BFFD680100000030BFFD6807100080DF +S315400158608610E1C8C200E00480A0800112BFFD4D50 +S315400158700100000030BFFD4D09100080881121C88C +S31540015880C201200480A0800112BFFD320100000048 +S3154001589030BFFD3280A0600112BFFD1E0100000035 +S315400158A030BFFD1E80A0600112BFFD060100000051 +S315400158B030BFFD0680A0600002BFFCF00100000081 +S315400158C030BFFCEC071000808610E1D0C200E00436 +S315400158D080A0400912BFFCD301000000C204A168A8 +S315400158E080A0600002BFFCD10100000030BFFCCDAA +S315400158F012BFFCC001000000C204A16880A0600084 +S3154001590002BFFCBE0100000030BFFCBA80A06000AF +S3154001591012BFFCA601000000C204A16880A060007D +S3154001592002BFFCA40100000030BFFCA080A06000C3 +S3154001593012BFFC9301000000C204A16880A0600070 +S3154001594002BFFC929015E1B830BFFC8D8410A1F8DE +S31540015950C200A004C404200480A0800112BFFC4EF2 +S3154001596001000000C404A168030000708210601F9A +S3154001597084088001030000108210601080A080011D +S3154001598012BFFC459015E1B830BFFC4680A06000CF +S3154001599012BFFC3601000000C204A16880A060006D +S315400159A002BFFC35A607BFF030BFFC30C40420045B +S315400159B080A0800112BFFC1C03100080C2006168F8 +S315400159C080A0600002BFFC1B05100C0030BFFC1616 +S315400159D009100080881121F8C201200480A08001AD +S315400159E012BFFC0603100080C4006168030000700A +S315400159F08210601F8408800103000010821060102D +S31540015A0080A0800112BFFBFD0100000030BFFBFDFD +S31540015A10071000808610E1F8C200E00480A08001F2 +S31540015A2012BFFBEB01000000C404A1680300007033 +S31540015A308210601F840880010300001082106010EC +S31540015A4080A0800112BFFBE20100000030BFFBE2F3 +S31540015A50C4042004881121D8C201200480A08001F9 +S31540015A6012BFFBD101000000C204A16880A0600002 +S31540015A7002BFFBD09016A1D030BFFBCBC40420049B +S31540015A808610E1C0C200E00480A0800112BFFBBCC9 +S31540015A9001000000C204A16880A0600002BFFBBBF8 +S31540015AA09016E1D830BFFBB6C207BFCC80A08001BB +S31540015AB012BFFBA703100080C200616880A060008E +S31540015AC002BFFBA60910008030BFFBA103300000D6 +S31540015AD08210602080A0800112BFFB90010000006F +S31540015AE0C204A16880A0600002BFFB8E01000000D5 +S31540015AF030BFFB8A80A0600012BFFB7B0100000023 +S31540015B00C204A16880A0600002BFFB7A111FDFFFBB +S31540015B1030BFFB750338000080A0800112BFFB67D0 +S31540015B2001000000C204A16880A0600002BFFB66BC +S31540015B30111FD00030BFFB6180A0600012BFFB5235 +S31540015B4003100080C200616880A0600002BFFB5163 +S31540015B50111FDFFF30BFFB4C80A0600012BFFB313D +S31540015B6001000000C204A16880A0600002BFFB30B2 +S31540015B701110000030BFFB2B80A0600012BFFB1E3E +S31540015B8001000000C204A16880A0600002BFFB1DA5 +S31540015B90111FE00030BFFB18C20420048610E21832 +S31540015BA0C400E10480A0800112BFFAFC031000800A +S31540015BB0C4006168030000708210601F8408800180 +S31540015BC0030000108210600880A0800112BFFAF322 +S31540015BD00100000030BFFAF3C204200480A0800116 +S31540015BE012BFFADF03100080C40061680300007031 +S31540015BF08210601F84088001030000108210600437 +S31540015C0080A0800112BFFAD60100000030BFFAD64B +S31540015C10C20420048610E218C400E0D480A08001AA +S31540015C2012BFFAC003100080C4006168030000700F +S31540015C308210601F840880010300001082106008F2 +S31540015C4080A0800112BFFAB70100000030BFFAB749 +S31540015C50C204200480A0800112BFFAA30310008071 +S31540015C60C4006168030000708210601F84088001CF +S31540015C70030000108210600880A0800112BFFA9ACA +S31540015C800100000030BFFA9AC20420048610E218CF +S31540015C90C400E0A480A0800112BFFA840100000084 +S31540015CA0C404A168030000708210601F840880014B +S31540015CB0030000108210600480A0800112BFFA7BAD +S31540015CC00100000030BFFA7BC206600480A080015B +S31540015CD012BFF9CD01000000C204A16880A0600096 +S31540015CE002BFF9CC9014E1E030BFF9C7C2066004A7 +S31540015CF080A0800112BFF9B901000000C204A16869 +S31540015D0080A0600002BFF9B89014E1E030BFF9B35A +S31540015D10C206600480A0800112BFF9A501000000FF +S31540015D20C204A16880A0600002BFF9A49014E1E01A +S31540015D3030BFF99FC206600480A0800112BFF9916D +S31540015D4003100080C200616880A0600002BFF99024 +S31540015D509014E1E030BFF98B071000808610E1F81E +S31540015D60C200E00480A0800112BFF96D010000006D +S31540015D70C404A168030000708210601F840880017A +S31540015D80030000108210601080A0800112BFF964E8 +S31540015D909015A1C810BFF9669215E1B8C206600414 +S31540015DA080A0800112BFF95303100080C2006168D0 +S31540015DB080A0600002BFF9529015A1C830BFF94DCD +S31540015DC009100080881121F8C201200480A08001B9 +S31540015DD012BFF93C01000000C404A1680300007031 +S31540015DE08210601F84088001030000108210601039 +S31540015DF080A0800112BFF9330100000030BFF933A2 +S31540015E00071000808610E1C8C200E00480A080012E +S31540015E1012BFF92103100080C200616880A06000B2 +S31540015E2002BFF9209015A1C830BFF91B09100080A7 +S31540015E30881121F8C201200480A0800112BFF8FD1B +S31540015E4001000000C404A168030000708210601FB5 +S31540015E5084088001030000108210601080A0800138 +S31540015E6012BFF8F49010001D10BFF8F69215E1B874 +S31540015E70C206600480A0800112BFF8E303100080CF +S31540015E80C200616880A0600002BFF8E29010001D68 +S31540015E9030BFF8DD071000808610E1F8C200E0044B +S31540015EA080A0800112BFF8CC01000000C404A168A3 +S31540015EB0030000708210601F8408800103000010F7 +S31540015EC08210601080A0800112BFF8C3010000005B +S31540015ED030BFF8C3C207BFD480A0800112BFF8B259 +S31540015EE003100080C200616880A0600002BFF8B163 +S31540015EF00310008030BFF8AC09100080881121F8EA +S31540015F00C201200480A0800112BFF88E010000006A +S31540015F10C404A168030000708210601F84088001D8 +S31540015F20030000108210601080A0800112BFF88526 +S31540015F309010001410BFF8879215E1B8C2066004AC +S31540015F4080A0800112BFF87401000000C204A1685C +S31540015F5080A0600002BFF8739010001430BFF86E45 +S31540015F60071000808610E1D8C200E00480A08001BD +S31540015F7012BFF85E01000000C204A16880A0600063 +S31540015F8002BFF85D9010001430BFF8588810E1C088 +S31540015F90C201200480A0800112BFF849031000808D +S31540015FA0C200616880A0600002BFF84890100014EA +S31540015FB030BFF84303003A9A8210630F80A08001F4 +S31540015FC012BFF7BD03100080C200616880A0600067 +S31540015FD002BFF7BC050006AF30BFF7B780A060002F +S31540015FE012BFF78103100080C4006168030000708E +S31540015FF08210601F8408800103000010821060082F +S3154001600080A0800112BFF7780500400010BFF77AE3 +S315400160100700C00009100080881121F8C201200440 +S3154001602080A0800112BFF6EF01000000C404A16800 +S31540016030030000708210601F840880010300001075 +S315400160408210601080A0800112BFF6E69014E1E054 +S3154001605010BFF6E89215E1B8C206600480A080013F +S3154001606012BFF6D501000000C204A16880A06000FD +S3154001607002BFF6D49014E1E030BFF6CFC206600409 +S3154001608080A0800112BFF6C101000000C204A168D0 +S3154001609080A0600002BFF6C09014E1E030BFF6BBBD +S315400160A0C206600480A0800112BFF6AD0100000067 +S315400160B0C204A16880A0600002BFF6AC9014E1E082 +S315400160C030BFF6A7C206600480A0800112BFF699D0 +S315400160D003100080C200616880A0600002BFF6988C +S315400160E09014E1E030BFF693071000808610E1F886 +S315400160F0C200E00480A0800112BFF67401000000D6 +S31540016100C404A168030000708210601F84088001E6 +S31540016110030000108210601080A0800112BFF66B50 +S315400161200100000030BFF66BC206600480A080010A +S3154001613012BFF65B03100080C200616880A0600058 +S3154001614002BFF65A9015A1C830BFF6550910008016 +S31540016150881121F8C201200480A0800112BFF644B3 +S3154001616001000000C404A168030000708210601F92 +S3154001617084088001030000108210601080A0800115 +S3154001618012BFF63B0100000030BFF63B071000800E +S315400161908610E1D8C200E00480A0800112BFF62932 +S315400161A001000000C204A16880A0600002BFF62879 +S315400161B09015A1C830BFF623071000808610E1D0A4 +S315400161C0C200E00480A0800112BFF61203100080D5 +S315400161D0C200616880A0600002BFF611091000800C +S315400161E030BFF60CC206600480A0800112BFF5E004 +S315400161F001000000C204A16880A0600002BFF5DF73 +S315400162009010001D30BFF5DA8810E1C0C2012004AC +S3154001621080A0800112BFF5CB03100080C2006168E7 +S3154001622080A0600002BFF5CA9010001D30BFF5C5C1 +S31540016230071000808610E1F8C200E00480A08001CA +S3154001624012BFF5B201000000C404A168030000704A +S315400162508210601F840880010300001082106010C4 +S3154001626080A0800112BFF5A90910008030BFF5AAB0 +S31540016270C207BFD480A0800112BFF59803100080E9 +S31540016280C200616880A0600002BFF59703100080DC +S3154001629030BFF59209100080881121F8C20120040F +S315400162A080A0800112BFF57401000000C404A168FA +S315400162B0030000708210601F8408800103000010F3 +S315400162C08210601080A0800112BFF56B90100014FF +S315400162D010BFF56D9215E1B8C206600480A0800139 +S315400162E012BFF55A01000000C204A16880A06000F7 +S315400162F002BFF5599010001430BFF554C207BFCC08 +S3154001630080A0800112BFF54603100080C20061687B +S3154001631080A0600002BFF5459010001430BFF540E3 +S31540016320071000808610E1D0C200E00480A0800101 +S3154001633012BFF52F03100080C4006168030000708E +S315400163408210601F840880010300001082106002E1 +S3154001635080A0800112BFF5260100000030BFF5265E +S3154001636012BFF50001000000C204A16880A06000D0 +S3154001637002BFF4FF1110000030BFF4FA12BFF4EE71 +S3154001638001000000C204A16880A0600002BFF4EDD4 +S315400163901130000030BFF4E812BFF4DC0100000008 +S315400163A0C204A16880A0600002BFF4DB1130000086 +S315400163B030BFF4D612BFF4CA03100080C200616830 +S315400163C080A0600002BFF4C91110000030BFF4C4C0 +S315400163D0C20420048610E320C400E17C80A0800131 +S315400163E012BFF4B301000000C404A16803000070A9 +S315400163F08210601F8408800103000010821060042F +S3154001640080A0800112BFF4AA0100000030BFF4AAA7 +S31540016410C204200480A0800112BFF497010000004D +S31540016420C404A168030000708210601F84088001C3 +S31540016430030000108210600480A0800112BFF48E18 +S315400164401110008110BFF49094146160C2042004BD +S315400164508610E320C400E14C80A0800112BFF4788D +S3154001646001000000C404A168030000708210601F8F +S3154001647084088001030000108210600880A080011A +S3154001648012BFF46F1110008110BFF4719414616052 +S315400164907FFFAD429010201010BFF45E11100081B5 +S315400164A0C206600480A0800112BFF3B9010000005A +S315400164B0C204A16880A0600002BFF3B89014E1E075 +S315400164C030BFF3B3C206600480A0800112BFF3A5BA +S315400164D001000000C204A16880A0600002BFF3A4CD +S315400164E09014E1E030BFF39FC206600480A08001B2 +S315400164F012BFF39101000000C204A16880A06000B0 +S3154001650002BFF3909014E1E030BFF38BC206600402 +S3154001651080A0800112BFF37D03100080C200616834 +S3154001652080A0600002BFF37C9014E1E030BFF377B6 +S3154001653009100080881121F8C201200480A0800141 +S3154001654012BFF35A03100080C40061680300007053 +S315400165508210601F840880010300001082106010C1 +S3154001656080A0800112BFF3519015A1C810BFF3530B +S315400165709215E1B8071000808610E1F8C200E004E8 +S3154001658080A0800112BFF33B0100000030BFF33B06 +S3154001659009100080881121D0C201200480A0800109 +S315400165A012BFF31801000000C204A16880A0600078 +S315400165B002BFF3179016A1D030BFF3120710008027 +S315400165C08610E1D8C200E00480A0800112BFF30228 +S315400165D001000000C204A16880A0600002BFF3016F +S315400165E09016A1D030BFF2FC09100080881121C855 +S315400165F0C201200480A0800112BFF2EC010000001C +S31540016600C204A16880A0600002BFF2EB9016E1D8F7 +S3154001661030BFF2E6071000808610E1C8C200E004F0 +S3154001662080A0800112BFF2D603100080C2006168CB +S3154001663080A0600002BFF2D59015A1C830BFF2D04C +S3154001664009100080881121F8C201200480A0800130 +S3154001665012BFF2B10100000030BFF2B1C2066004C0 +S3154001666080A0800112BFF29001000000C204A1681F +S3154001667080A0600002BFF28F9010001D30BFF28AE9 +S31540016680071000808610E1C8C200E00480A08001A6 +S3154001669012BFF27A01000000C204A16880A0600026 +S315400166A002BFF2799010001D30BFF274C207BFFCE1 +S315400166B080A0800112BFF26603100080C2006168AB +S315400166C080A0600002BFF2659010001D30BFF260ED +S315400166D0881721F8C201200480A0800112BFF2422E +S315400166E00100000030BFF242C4042004C206600427 +S315400166F080A0800112BFF21E01000000C204A16801 +S3154001670080A0600002BFF21D9010001430BFF21845 +S315400167108615A1C8C200E00480A0800112BFF2091B +S3154001672001000000C204A16880A0600002BFF20817 +S315400167309010001430BFF203C2042004C407BFFC0A +S3154001674080A0800112BFF1F303100080C20061688E +S3154001675080A0600002BFF1F22D10008030BFF1ED44 +S3154001676080A2400112BFEFA201000000C204A1684D +S3154001677080A0600002BFEFA11111FC0030BFEF9C69 +S3154001678080A2400112BFEF9003100080C2006168F1 +S3154001679080A0600022BFEF8F113C02AF30BFEF8A6D +S315400167A012BFEEDB01000000C204A16880A06000B8 +S315400167B002BFEED90100000030BFEED512BFEECCCC +S315400167C001000000C204A16880A0600002BFEECAB9 +S315400167D00100000030BFEEC67FFFAC70901020195B +S315400167E010BFFAD4050C402981D8200081C3E008A6 +S315400167F00100000081D8200082102400C0A043007F +S3154001680081C3E00801000000853220109132201832 +S31540016810900A200F8408A00380A00008826020000F +S3154001682081C3E008900880019DE3BF887FFFEB7A32 +S315400168309010200C808A200812800004010000007C +S3154001684081C7E00891E820007FFFAC4D9010200EF3 +S31540016850C2800320853060188088A00F028000DD49 +S315400168602F100123833060108208600380A06002EC +S31540016870028000E0C225E0C880A06003028000FFDC +S3154001688080A06001028000EC2910010C2310010C4C +S315400168902110010C2B10010C2710010C2510010CA5 +S315400168A081D8200081D8200082102400C0A0430056 +S315400168B0031000A1051000A0821060008410A00002 +S315400168C0873060048610E00188100003C878800094 +S315400168D08800A004C67900008610200AC6784000C8 +S315400168E0C8046000C60420041B008000190800008B +S315400168F09A13600A993B0004980B0003992B2002D6 +S3154001690098030001DA7B00001B010000171000000C +S315400169109813608E973AC004960AC003972AE002FC +S315400169209602C001D87AC000171C00001901C000A8 +S31540016930893AC0049813208E860900038728E0020D +S315400169408600C001D878C0003B1000A28200600CCE +S31540016950BA176000873760048610E001C6784000A8 +S315400169608213601E86076008C278C000821020002C +S315400169708807600C86100001C67900002D1000A220 +S315400169809A076004AC15A1008735A004B81000161B +S315400169908610E001C67B4000B405A008C27E800097 +S315400169A01B1000C0B605A004861360008330E004C6 +S315400169B09810601AD87EC000C02360001B048D1554 +S315400169C09A136278DA20E004DA05E0C83310010050 +S315400169D09A03600CB21660008605A00CB010200028 +S315400169E0C627BFF8DA27BFFC901000189210200383 +S315400169F0C227BFF0C427BFEC40000AB0C827BFF486 +S31540016A00DA07BFFC992A000DC607BFF8980300199B +S31540016A10993320049813201ED878C000B00620016F +S31540016A208600E00480A62008C207BFF0C407BFEC79 +S31540016A3012BFFFECC807BFF417100020DE05200C7B +S31540016A408612E168C822E16809100020D005600875 +S31540016A50D804A014DA04E010D2042004D40460005F +S31540016A60960BE001972AC008C6212160880A600377 +S31540016A708929000A8812C004960B2002972AC00D64 +S31540016A809611000B8530A004D620E0209610600EAA +S31540016A90D620E0289608BFF0840B20018528800D7A +S31540016AA0841100028210601EC420E02CC420E01430 +S31540016AB0050100008410A01EC220E010C420E0049D +S31540016AC0F620E00CF420E018F620E024050076419B +S31540016AD0031000208410A1C082106000C420E00889 +S31540016AE0833060048210601EC220E01C82102100A7 +S31540016AF0D6A04320C4800320C280432084102001B5 +S31540016B0082102200C4A04320C68043208610200064 +S31540016B10C6A04320C4A0032081D820007FFFEABE3F +S31540016B2090102000913A200C808A20030280006553 +S31540016B3001000000C280032082102100C280432050 +S31540016B4082102200C2804320C80420048809200301 +S31540016B50C2046000C605200CC4056008D404A01414 +S31540016B60D604E010832900019808E0019A0AA001A1 +S31540016B70992B00029B2B400B981300019A13000D91 +S31540016B80C803400080A120000280000388136004EE +S31540016B9030800000D201000011048D159012227838 +S31540016BA080A2400812BFFFFB111000009E08E002C0 +S31540016BB0D00200009F2BC0029E13C001DE03C0001D +S31540016BC080A3C008228000428608E003308000008E +S31540016BD02310010C2110010CC025E0C82B10010C1B +S31540016BE02910010C2710010C10BFFF2E2510010C96 +S31540016BF02110010C2910010C2510010C2310010C48 +S31540016C008210203F2B10010C2710010CC2242004B6 +S31540016C10C224A014C225200C8210201AC22460006E +S31540016C2082102014C22560088210200E10BFFF1D5D +S31540016C30C224E0102510010C2310010C8210203FC4 +S31540016C402110010C2B10010C2710010CC225200C20 +S31540016C50C224A01482102019C22460008210207F11 +S31540016C60C224200482102013C22560088210200D00 +S31540016C7010BFFF0CC224E0102110010C2710010C9B +S31540016C802310010C8210200F2B10010C2910010C2E +S31540016C902510010CC224E010C22420048210201CBD +S31540016CA0C224600082102015C22560088210207F10 +S31540016CB0C225200C8210203F10BFFEFAC224A01428 +S31540016CC07FFFC4D30100000030BFFF9B8528C0026F +S31540016CD082108001C20040000321D95082106321F5 +S31540016CE0C2210000C401000080A08001028000038F +S31540016CF001000000308000008210000D05048D1552 +S31540016D008410A278072AF37B8610E301C438400039 +S31540016D10C4384000C203400080A0400902800003FD +S31540016D200100000030800000C4010000032AF37B0B +S31540016D308210630180A0800112BFFFFBC205E0C83B +S31540016D40940AA0038200600C972A800B84102001CC +S31540016D50AE13000B85288001B0102000EE25C0003F +S31540016D60C0A0022092102003C227BFF0C427BFEC67 +S31540016D70400009D290100018C207BFF0912A0001C5 +S31540016D80C606400880A0C01712800008C407BFECA1 +S31540016D90B006200180A6200802800005AE05C0028B +S31540016DA010BFFFF0EE25C00030800000C0A00220D9 +S31540016DB0AE102003B0102000852DE002C4058002EC +S31540016DC08608A06080A00003C227BFF0B04000182B +S31540016DD0C427BFEC9005FFFD400009B8921020037F +S31540016DE0C207BFF0C407BFEC872A000186064003ED +S31540016DF08730E0048610E01E8418C0028088BF9F59 +S31540016E0012800009AE05E00180A5E00B32BFFFEC20 +S31540016E10852DE00280A6200012800004D805200CB2 +S31540016E203080000030800000C8056008DA04200484 +S31540016E30C4046000C604A014C204E010980B2001EB +S31540016E409A0B6003892B0004852B40028608E002D9 +S31540016E50841100028328C001821080019FC0400036 +S31540016E600100000082102400C0A04300C0A00220FF +S31540016E708210200084072020C607200C8608E06087 +S31540016E8080A00003B80720048240000180A70002C9 +S31540016E9032BFFFFBC607200C80A06008228000039A +S31540016EA0C206C00030800000808860400280000435 +S31540016EB08088602032800003C2076008308000006D +S31540016EC08088602032800003C20680003080000046 +S31540016ED0808860201280000301000000308000009D +S31540016EE083480000842860808188A000010000005A +S31540016EF00100000001000000D8042004C80460001D +S31540016F00DA05200CC4056008C604A014C204E010CA +S31540016F10980B20039A0B6001892B0004852B4002B4 +S31540016F208608E001841100028328C0018410A00470 +S31540016F3082108001C20040009210200491D02002AC +S31540016F40010000007FFFE9B490102000913A200C27 +S31540016F50808A200312800005841020007FFFC42C04 +S31540016F60010000008410200082102200C4A04320AA +S31540016F7086102001C6A04320C4A043200310000070 +S31540016F80C4804380C4A043807FFFC48E90102000FC +S31540016F9081D8200030BFFE2B9DE3BFA040000822D0 +S31540016FA001000000808A21001280000401000000D7 +S31540016FB081C7E00891E820007FFFAA9423100120B1 +S31540016FC0912A20047FFFAA6E90022005A214600038 +S31540016FD0C204600480A060000280001A8210200072 +S31540016FE0A010200084044001C8044001C600A0044A +S31540016FF0C200A0089B39201F818360000100000068 +S3154001700001000000010000008479000380A0800196 +S3154001701002800004A00420017FFFAA609010200195 +S3154001702082040010820040108328600284044001DB +S31540017030C400A00480A0A00012BFFFEC840440015C +S3154001704023100120A2146138C204600480A06000AC +S315400170500280001982102000A01020008404400103 +S31540017060C8044001C600A004C200A00881802000D7 +S3154001707001000000010000000100000084710003CE +S3154001708080A0800102800004A00420017FFFAA4362 +S315400170909010200282040010820040108328600272 +S315400170A084044001C400A00480A0A00012BFFFEDEB +S315400170B084044001400008890100000080A22000AC +S315400170C012BFFFBC901020037FFFAA34B0102000EE +S315400170D081C7E00881E800009DE3BFA07FFFAA4B7E +S315400170E001000000912A20047FFFAA259002200476 +S315400170F0400007CF0100000080A221230280000446 +S31540017100010000007FFFAA2590102001400007C61C +S3154001711001000000808A21000280002923100120FD +S31540017120A2146180C204600880A060090280001533 +S3154001713082102000A010200084044001C6044001B2 +S31540017140C800A004C200A0088459000380A08001A1 +S3154001715002800004A00420017FFFAA1090102002A3 +S31540017160820400108200401083286002840440019A +S31540017170C400A00880A0A00912BFFFF18404400109 +S31540017180400007B80100000080A2200002800023D1 +S3154001719001000000400007B30100000080A220006A +S315400171A002800016010000004000079F0100000018 +S315400171B0808A2200128000040100000081C7E00895 +S315400171C091E82000400007F80100000080A220005D +S315400171D00280001A01000000400007F30100000090 +S315400171E080A2200012BFFFF6010000007FFFA9EB3D +S315400171F09010200430BFFFF27FFFA9E890102003D2 +S315400172004000078901000000808A220002BFFFEC8E +S315400172100100000030BFFFEC7FFFA9E09010200382 +S31540017220400007900100000080A2200012BFFFDF4E +S315400172300100000030BFFFF17FFFA9D89010200464 +S3154001724030BFFFE6000000009DE3BFA09410200080 +S315400172501110005C9012227C1310005C9212628025 +S315400172601710005C9612E2881910005C9813228C64 +S3154001727093C2000081C240001080019181C2C000CA +S3154001728081C300001080018E9402A0019402A001E6 +S3154001729080A2A0031280018A0100000087440000F9 +S315400172A08D30E00E8C89A00780A1A000028000C726 +S315400172B001000000AF30E00BAE0DE00780A5E00015 +S315400172C0128000C20100000080A1A0021280003598 +S315400172D00100000025100000E41C8000251000007C +S315400172E029100000A8152104A6100012AA100012A8 +S315400172F0AC100014A1802046A4100000AA10000082 +S3154001730001000000A180204EA810210001000000CC +S31540017310A18000000100000001000000E83CA0300F +S3154001732082A480131280016682A500161280016430 +S315400173300100000001000000010000008744000038 +S315400173408D30E00B8C89A0078CA1A0051280015CD1 +S31540017350A1800000010000000100000001000000C2 +S31540017360E81CA03082A500161280015582A5401264 +S31540017370A41000001280015201000000010000002B +S31540017380874400008D30E00B8C89A0078CA1A003B7 +S315400173901280014B010000001080008C01000000AA +S315400173A080A1A0011280002325100000E41C80006A +S315400173B02510000029100000A8152104A61000126E +S315400173C0AA100012AC100014A1802046A41000009F +S315400173D0AA10000001000000A180204EA810210043 +S315400173E001000000A1800000010000000100000032 +S315400173F001000000E83C800082A480131280013025 +S3154001740082A500161280012E010000000100000035 +S31540017410874400008D30E00B8C89A0078CA1A00227 +S315400174201280012701000000108000680100000061 +S3154001743080A1A00312800065A6100000A210200EB4 +S31540017440A1844000A6100000A1800000A814E0001D +S31540017450AB44000001000000AC14E0000100000054 +S31540017460AF44000080A5200012800115AA8D6E0050 +S3154001747080A540001280011280A5A0001280011053 +S31540017480AF35E00BAE0DE00780A5E0011280010C9F S3154001749001000000A0100000A1844000A6100000D9 -S315400174A0A1800000A210200AA1844000A41000007F -S315400174B0A1800000E8180000AC100000AE100000EA -S315400174C0EC04C012EE04E00480A50016128000E828 -S315400174D080A54017128000E601000000A544000087 -S315400174E0A534A00BA40CA00780A4A002068000E04E -S315400174F00100000021100140A0142200EC1C0000F4 -S31540017500A0042008E81C0000A1844000A610000049 -S31540017510A1800000A210200EA1844000A4100010FA -S31540017520AC100000AE100000A18000000100000078 -S3154001753001000000EC3C8013AC100000AE100000CE -S31540017540E81CC01280A50016128000C980A540170C -S31540017550128000C701000000A5440000A534A00B1D -S31540017560A40CA00780A4A004128000C10100000061 -S3154001757010800002010000008B4440008A09601F10 -S3154001758080A160010280000A8C1000059DE3BFA026 -S315400175908AA1600116BFFFFE0100000081E80000DC -S315400175A08CA1A00116BFFFFE0100000001000000F2 -S315400175B001000000A023A080A02C20078E100010FF -S315400175C0A3480000E2240000C2242004C43C200851 -S315400175D0C83C2010CC3C2018F03C2020F43C20280C -S315400175E0F83C2030FC3C2038D03C2040D43C20485C -S315400175F0D83C2050DC3C2058A5500000E4242060B3 -S315400176008010200882102001841020028610200359 -S31540017610881020048A1020058C10200681900000D5 -S31540017620A42C601F818C8000010000000100000035 -S3154001763001000000030040408210610184100000F7 -S3154001764086100000894440008809201F86100004E6 -S31540017650A010000284004002A210000284004002F1 -S31540017660A410000284004002A610000284004002D9 -S31540017670A810000284004002AA10000284004002C1 -S31540017680AC10000284004002AE10000284004002A9 -S3154001769090100002840040029210000284004002D1 -S315400176A094100002840040029610000284004002B9 -S315400176B098100002840040029A10000284004002A1 -S315400176C09C100002840040029E1000028400400289 -S315400176D081E0000086A0E00116BFFFDE0100000048 -S315400176E003004040821061018410000086100004AE -S315400176F080A400021280003F8400400280A4400220 -S315400177001280003C8400400280A48002128000392D -S315400177108400400280A4C0021280003684004002E8 -S3154001772080A50002128000338400400280A54002F9 -S31540017730128000308400400280A580021280002D14 -S315400177408400400280A5C0021280002A84004002C3 -S3154001775080A20002128000278400400280A24002DB -S31540017760128000248400400280A2800212800021FF -S315400177708400400280A2C0021280001E84004002A2 -S3154001778080A300021280001B8400400280A34002B5 -S31540017790128000188400400280A3800212800015E6 -S315400177A08400400280A3C00212800012840040027D -S315400177B081E0000086A0E00116BFFFCE0100000077 -S315400177C080A020001280000B80A0FFFF12800009DC -S315400177D080A160051280000780A1A00612800005E5 -S315400177E001000000A010000710800006C0242020E0 -S315400177F0A01000079010200110800002D024202004 -S3154001780082100007C400400081888000010000000A -S315400178100100000001000000C4186008C81860108B -S31540017820CC186018F0186020F4186028F8186030F9 -S31540017830FC186038D0186040D4186048D818605099 -S31540017840DC186058E4006060C200600481948000E6 -S31540017850010000000100000001000000A010000727 -S31540017860F004202081C7E00881E8000010BFFFFC3A -S31540017870B01000000100000081D8200081C3E0085B -S31540017880010000001B100144D80361508210200101 -S315400178908328400C1B10014482007FFFD8036154AA -S315400178A082084008932A400C900040098213C00088 -S315400178B07FFFE77D9E104000010000001B10014440 -S315400178C0D8036150821020018328400C1B100144CB -S315400178D082007FFFD8036154932A400C82084008F6 -S315400178E0900040099210000A8213C0007FFFE770A2 -S315400178F09E104000010000001B100144D803615056 -S31540017900821020018328400C1B10014482007FFF16 -S31540017910D8036154932A400C8208400890004009DC -S315400179209210000A8213C0007FFFE7659E10400057 -S31540017930010000001B100144D80361508210200150 -S315400179408328400C1B10014482007FFFD8036154F9 -S3154001795082084008932A400C900040098213C000D7 -S315400179607FFFE7559E104000010000001B100144B7 -S31540017970D803615C821020018328400C1B1001440E -S3154001798082007FFFD803616C932A400C820840082D -S31540017990900040099210000A8213C0007FFFE74C15 -S315400179A09E104000010000001B100144D803615C99 -S315400179B0821020018328400C1B10014482007FFF66 -S315400179C0D803616C932A400C820840089000400914 -S315400179D09210000A8213C0007FFFE7419E104000CB -S315400179E0010000009DE3BF582D100144A210200064 -S315400179F0C205A16080A440011680001BA010200092 -S31540017A002B1001442910014427100144A4102001E0 -S31540017A10D005615C912C8008C205216C90023FFF24 -S31540017A20832C0001900A00187FFFE727900200018E -S31540017A30C204E14C901E0008900A000180A0000893 -S31540017A40A2647FFFA0042001C205A16080A40001B9 -S31540017A5026BFFFF1D005615C80A46000128000035F -S31540017A60B0102000B010200181C7E00881E8000075 -S31540017A701B100144D803615C821020018328400C0D -S31540017A801B10014482007FFFD803616C82084008C5 -S31540017A90932A400C900040098213C0007FFFE70AF9 -S31540017AA09E104000010000001B100144D803615C98 -S31540017AB0821020018328400C1B10014482007FFF65 -S31540017AC0D803616C82084008932A400C9000400913 -S31540017AD08213C0007FFFE7009E10400001000000B6 -S31540017AE0952AA00D0328000094028009D020400069 -S31540017AF09422B000D420600481C3E0080100000054 -S31540017B00033FFFBF821062F89DE38001193FFFBF2B -S31540017B1094132368B407BFF8031000459606800AFC -S31540017B2082106020C222E00C03100044821063E000 -S31540017B30C222E0041B1000449A1363C0033FFFBFF7 -S31540017B40DA26800A90132380331000458210635C45 -S31540017B5094068008981323C0921660008200401E46 -S31540017B60D222E008D4204000B006800C7FFFA59FBA -S31540017B70901020067FFFE6C890102000920A3FF041 -S31540017B807FFFE6C790102000210000307FFFE6C24C -S31540017B9090102000808A001012BFFFFD01000000F6 -S31540017BA07FFFFF36210000307FFFE6BB90102000AB -S31540017BB0808A001012BFFFFD010000007FFFE6B67C -S31540017BC090102000030020408210600F92120001A5 -S31540017BD07FFFE6B3901020007FFFE6AF90102008AC -S31540017BE021100144D02421487FFFE6AB9010200CA0 -S31540017BF0A73A2010993A2014A60CE007980B200FBB -S31540017C00DA042148A8230013A80520089F3B6014E5 -S31540017C10933B60109B3B601894050013A210200112 -S31540017C20AC03200A9E0BE00F96102400AE0B6003B6 -S31540017C309402A00221200000992AC00C1B10014485 -S31540017C408203E00A952C400A9424000A832C4001C1 -S31540017C50D8236168A02400011B100144031001448C -S31540017C60EC23615C972AC00FAA03E00A1B1001446A -S31540017C70D620614403100144EA236154EA2061504D -S31540017C801B10014403100144D423614C920A60073E -S31540017C90A53A2018D0206158153FFFBF932C4009C3 -S31540017CA0A40CA003031001449412A358932C400939 -S31540017CB0A404A0013910014437100144EC20616C41 -S31540017CC09B2C40149402801EE0272164E426E16047 -S31540017CD0AA027FFFDA228000AC85E0010280000C17 -S31540017CE0BB2C4013033FFFBF82106368A00680018F -S31540017CF0A4100016D00400009FC20000A004200476 -S31540017D00A484BFFF32BFFFFDD00400007FFFE662BF -S31540017D1090102000920A3FFC7FFFE6619010200000 -S31540017D20A410200080A4801616800022A2102000F4 -S31540017D30033FFFBFAE106368A610001AA0102000D3 -S31540017D4080A4001636800018A404A0011080000506 -S31540017D50A810001780A4001636800013A404A001C1 -S31540017D60921000107FFFFEC8D004C014820A00158D -S31540017D7080A0401512BFFFF8A0042001C204C01420 -S31540017D8082184008DA0721648208400D80A000016C -S31540017D90A2647FFF80A4001606BFFFF39210001075 -S31540017DA0A404A00180A4801606BFFFE5A604E00452 -S31540017DB07FFFE63990102000A610000890102000A1 -S31540017DC07FFFE6379214E00380A46000028001B190 -S31540017DD001000000833CE00C80886003128000A50E -S31540017DE0030048D1833CE01380886003128001ADD3 -S31540017DF0010000007FFFFEA1210000307FFFE62643 -S31540017E0090102000808A001012BFFFFDA6100008C6 -S31540017E10A4102000C206E16080A480011680000DF6 -S31540017E20832CA00292100012901000187FFFFED002 -S31540017E3094102000A404A001C206E16080A4800140 -S31540017E4006BFFFFA92100012A4102000832CA00254 -S31540017E50A404A001C026000180A4A01E04BFFFFD0A -S31540017E60832CA00282102005C22600009A10200110 -S31540017E70DA26200482102002C22620089A10200306 -S31540017E80DA26200C7FFFFED89010001880A2200031 -S31540017E90028001D301000000C206000080A06005F7 -S31540017EA002800004010000007FFFA4D59010200647 -S31540017EB07FFFFECD9010001880A22000128001C4E1 -S31540017EC001000000A4102000C206E16080A48001E8 -S31540017ED01680000F92100012A00620049410200074 -S31540017EE07FFFFEB290100018921000129010001001 -S31540017EF07FFFFEAE94102000A404A001C206E160FB -S31540017F0080A4800106BFFFF6921000127FFFE5F8BC -S31540017F10901000187FFFE5F6900620207FFFE5F4DC -S31540017F20900620407FFFE5F290062060A4102000D5 -S31540017F30C206E16080A4800106800196A21020005D -S31540017F407FFFA4AF90102008173FFFBF8212E3C006 -S31540017F50940680018212E35C8200401ED81A80009A -S31540017F60C2004000D83840009612E380C206800B1A -S31540017F7080A06005128000068206800BDA0060044C -S31540017F8080A3600102800005A41020007FFFA49C0D -S31540017F9090102009A4102000C206E16080A480014F -S31540017FA016800011A2102000A00620049210001293 -S31540017FB07FFFFEBE90100010901A200180A000089D -S31540017FC0A2647FFFA404A001C206E16080A48001EF -S31540017FD006BFFFF89210001280A4600102800005DE -S31540017FE0833CE0137FFFA4869010200A833CE01374 -S31540017FF0808860031280018082102005C22600001D -S315400180009A102001DA26200482102002C226200876 -S315400180109A102003DA26200C1B3FFFBF9A136358A0 -S315400180209A03401ED00340004000048D9210001D6B -S31540018030032EEEEEA12A2002A21063BBE226001017 -S315400180407FFFFE699010001880A220001280016710 -S3154001805001000000C206001080A040110280000508 -S31540018060030048D17FFFA46690102012030048D137 -S31540018070821061671B226AF3C22620209A1361EFA0 -S31540018080DA262024C20E202080A06001028000044E -S31540018090010000007FFFA45A9010201AC20E202131 -S315400180A080A0602302800004010000007FFFA454E9 -S315400180B09010201BC20E202280A060450280000441 -S315400180C0010000007FFFA44E9010201CC20E202309 -S315400180D080A0606702800004010000007FFFA44881 -S315400180E09010201DC20E202480A0608902800004C9 -S315400180F0010000007FFFA4429010201EC20E2025E1 -S3154001810080A060AB02800004010000007FFFA43C18 -S315400181109010201FC20E202680A060CD0280000450 -S31540018120010000007FFFA43690102020C20E2027B8 -S3154001813080A060EF02800004010000007FFFA430B0 -S3154001814090102021C21620208328601083306010B1 -S3154001815080A0612302800004010000007FFFA42863 -S3154001816090102022DA1620229B2B6010030000116A -S315400181709B3360108210616780A340010280000436 -S31540018180010000007FFFA41E90102023DA16202450 -S315400181909B2B6010030000229B336010821061AB61 -S315400181A080A3400102800004010000007FFFA41467 -S315400181B090102024DA1620269B2B601003000033F2 -S315400181C09B336010821061EF80A34001028000055D -S315400181D0821020307FFFA40A901020258210203083 -S315400181E0C22E2020030C08D1DA06202082106167B6 -S315400181F080A3400102800005821020317FFFA40048 -S315400182009010202782102031C22E2021030C0C51C0 -S31540018210DA0620208210616780A3400102800005B2 -S31540018220821020327FFFA3F6901020288210203240 -S31540018230C22E2022210C0C4CDA0620208214226701 -S3154001824080A3400102800005821020337FFFA3EC0A -S315400182509010202982102033C22E20239A142233D3 -S31540018260C206202080A0400D0280000582102034E5 -S315400182707FFFA3E39010202A82102034C22E2024AF -S31540018280030D2AF3DA062024821061EF80A3400110 -S3154001829002800005821020357FFFA3D99010202B44 -S315400182A082102035C22E2025030D0D73DA062024B7 -S315400182B0821061EF80A340010280000582102036C2 -S315400182C07FFFA3CF9010202C82102036C22E20266D -S315400182D0210D0D4DDA062024821422EF80A34001A0 -S315400182E002800005821020377FFFA3C59010202D04 -S315400182F082102037C22E20279A142237C206202404 -S3154001830080A0400D02800005210000107FFFA3BC24 -S315400183109010202E2100001082142041C2362020C8 -S315400183200310104CDA0620208210623380A34001EC -S3154001833002800005821422437FFFA3B19010202FB3 -S3154001834082142243C236202203101050DA0620201E -S315400183508210624380A34001028000052100001182 -S315400183607FFFA3A7901020302100001182142045E1 -S31540018370C23620240311114DDA06202482106237B9 -S3154001838080A3400102800005821422477FFFA39CFF -S315400183909010203182142247C236202603111151F2 -S315400183A0DA0620248210624780A34001028000043D -S315400183B0010000007FFFA392901020327FFFFD2F26 -S315400183C0A4102000C206E16080A480011680001539 -S315400183D01B100144D403616C96100001A0102000CB -S315400183E080A4001D3680000CA404A001832C800AC1 -S315400183F09B286002992CA01082130010C226000D02 -S31540018400A004200180A4001D06BFFFFC9A0360045E -S31540018410A404A00180A4800B26BFFFF2A010200077 -S315400184207FFFE49D9010200003000010808A000128 -S3154001843012BFFFFC01000000A4102000C206E1604B -S3154001844080A4800116800114921000127FFFFD89DD -S315400184509010001815100144C202A14C900A000167 -S31540018460820E000180A20001A404A00112BFFFF404 -S31540018470901020337FFFA36201000000C206E16035 -S3154001848080A4800106BFFFF29210001230800102E3 -S315400184907FFFA35B9010200110BFFE50833CE00C90 -S315400184A07FFFE47D90102000133FFFF09212603F62 -S315400184B0920A0009A61000087FFFE4799010200077 -S315400184C07FFFE3D0A41020001303C0009214C0091B -S315400184D07FFFE4739010200080A480161680000967 -S315400184E092100012901660007FFFFD049410200048 -S315400184F0A404A00180A4801606BFFFFB92100012BF -S315400185007FFFE3C0010000007FFFE463901020007D -S31540018510913A200A900A200380A220010280000499 -S31540018520010000007FFFA3369010200201000000E9 -S3154001853092102000901660007FFFFCE1941020000D -S31540018540010000007FFFE454901020001303C00097 -S31540018550922A00097FFFE45290102000010000009A -S315400185607FFFE3A8010000007FFFE44B901020004D -S31540018570913A200C900A200380A2200102BFFE1EE0 -S31540018580010000007FFFA31E9010200330BFFE1A9A -S31540018590921000127FFFFD4590100018901A200599 -S315400185A080A00008A2647FFFA404A001C206E16086 -S315400185B080A4800106BFFFF89210001280A46000DB -S315400185C012BFFE63173FFFBF30BFFE5E7FFFA30CA6 -S315400185D09010200710BFFE3DA41020007FFFA30886 -S315400185E09010200530BFFE2D7FFFA305901020116E -S315400185F030BFFE997FFFE42890102000033FFFF033 -S315400186008210603F920A00017FFFE425901020000E -S31540018610033FFFBFA01063809210200094102000FA -S315400186207FFFFCE2900680107FFFE41B9010200044 -S315400186300303C000921200017FFFE419901020004D -S3154001864010800006A4102000900680107FFFFCD702 -S3154001865094102005A404A001C206E16080A4800113 -S3154001866006BFFFFA92100012033FFFBFA0106380BE -S315400186709A102001DA2E801003004000D80680109F -S315400186808210600580A30001028000040100000001 -S315400186907FFFA2DB9010200B7FFFE3FF90102000AD -S315400186A0913A2006900A200380A22001028000040C -S315400186B0010000007FFFA2D29010200C7FFFE3F65D -S315400186C0901020001303C000922A00097FFFE3F4B3 -S315400186D09010200092102000900680107FFFFCB37E -S315400186E0941020007FFFE3EC901020002103C0008E -S315400186F0921200107FFFE3EA901020007FFFE3E62D -S3154001870090102000808A001002BFFFFDA6100008CD -S31540018710A4102000C206E16080A480011680000EEC -S31540018720033FFFBF9A102001A2106380A12B401D79 -S3154001873092100012900680117FFFFC8D94043FFF3A -S31540018740A404A001C206E16080A4800106BFFFFA2D -S31540018750921000121303C000922CC0097FFFE3D090 -S31540018760901020002103C0007FFFE3CB9010200032 -S31540018770808A001012BFFFFD1B004000213FFFBF52 -S3154001878082142380D80680019A13600580A3000DC8 -S3154001879002800004010000007FFFA2999010200D85 -S315400187A07FFFE3BD90102000913A2008900A2003F4 -S315400187B080A2200122800005A01423787FFFA29089 -S315400187C09010200FA0142378940680109810201141 -S315400187D09A102055D83A80007FFFE3AF90102000D1 -S315400187E00303C00092120001920A7F3F7FFFE3AC70 -S315400187F090102000A00680107FFFE3CB9010001060 -S3154001880010800006A4102000900420047FFFFC671E -S3154001881094102055A404A001C206E16080A4800101 -S3154001882006BFFFFA92100012113FFFBF9012237844 -S315400188307FFFE3BD9006800880A2201112800004CC -S3154001884080A2605502800004010000007FFFA26CF7 -S31540018850901020107FFFE39090102000833A20066D -S315400188608208600380A0600102800004A61000080F -S315400188707FFFA26390102010133C3FF09212603F9D -S31540018880920CC0097FFFE3869010200010BFFDDCEB -S31540018890821020057FFFE380901020009212200F66 -S315400188A07FFFE37F9010200081C7E00891E8200018 -S315400188B09DE3BF987FFFFC9301000000B0100008C4 -S315400188C0130020409212600F7FFFE3759010200045 -S315400188D00100000081C7E00881E80000033FFFBFB7 -S315400188E0821063589DE380017FFFFBE40100000095 -S315400188F040000238010000007FFFE3679010200826 -S31540018900A21000087FFFE3649010200C7FFFA24B6A -S31540018910A0100008912A20047FFFA2349002200C67 -S31540018920973C6014833C6018953C2014993C201870 -S3154001893082086003960AE00F820060019602E00A0F -S31540018940A33C6010A13C2010980B2003940AA00F71 -S31540018950A728400B98032001A20C6007A00C200712 -S315400189609402A00A9A102001A2046002A0042002E7 -S31540018970B12B000A03200000AB2B4011A52B401060 -S315400189809620401898057FFF822040139A04BFFF26 -S31540018990AE130001A213400B210000307FFFE33EDE -S315400189A090102000808A001012BFFFFD033FFFBFD9 -S315400189B09A07BFF8821063C0A00340012D15555593 -S315400189C090100018921000107FFFE2C69415A15531 -S315400189D080A220001280004B292AAAAA92100010D8 -S315400189E0901000187FFFE2D3941522AA80A220009E -S315400189F01280004E010000007FFFA210010000001E -S31540018A00912A20047FFFA1F99002200A400001EE3D -S31540018A100100000092152200920C400990100018A6 -S31540018A2094100011961000127FFFE2EB981522AACE -S31540018A3080A2200012800051010000009215A10081 -S31540018A4090100018920C40099410001196100012D3 -S31540018A507FFFE2E19815A15580A2200012800044D3 -S31540018A60010000007FFFA1F501000000912A2004CA -S31540018A707FFFA1DE9002200B901000137FFFE2BD25 -S31540018A809215A15580A220001280003501000000F8 -S31540018A90901000137FFFE2B7921522AA80A2200010 -S31540018AA01280002C010000007FFFA1E401000000BC -S31540018AB0912A20047FFFA1CD900220099010001336 -S31540018AC092100017941000157FFFE2B6961522AA60 -S31540018AD080A220001280001B0100000090100013AC -S31540018AE092100017941000157FFFE2AE9615A1551E -S31540018AF080A2200002800025010000003080000E87 -S31540018B007FFFA1BF90102001292AAAAA9210001026 -S31540018B10901000187FFFE287941522AA80A22000B8 -S31540018B2002BFFFB6010000007FFFA1B590102002F1 -S31540018B3030BFFFB27FFFA1B29010200830800013F2 -S31540018B407FFFA1AF9010200710BFFFE690100013E2 -S31540018B507FFFA1AB9010200630BFFFD47FFFA1A8B5 -S31540018B609010200510BFFFCC901000137FFFA1A4E9 -S31540018B709010200430BFFFBC7FFFA1A190102003BD -S31540018B8010BFFFB09215A1007FFFFB3CB010200043 -S31540018B9040000190010000000100000081C7E0088B -S31540018BA081E800009DE3BF987FFFA18B1100412C16 -S31540018BB0DA062004D80620049A0B6003993B20026A -S31540018BC082102007C2262008BA036001B20B27FF94 -S31540018BD0010000009010200AC02600007FFFA183FB -S31540018BE0010000001700020082103FFFC226000B61 -S31540018BF0032AAAAA1B155555D806000BAC1020000E -S31540018C00821062AA9A136155AA0B000180A5801DA4 -S31540018C1016800038A80B000D9612E020A72E60089A -S31540018C2080A4E0000480000CA2102000832DA00245 -S31540018C3082004018190002009A10000BE820400CEF -S31540018C40EA20400DA204601080A4C01114BFFFFCAD -S31540018C5082006040AC05A00180A5801D06BFFFF2E1 -S31540018C6080A4E000AC10200080A5801D1680002164 -S31540018C7003000200B8106020A72E6008AE1000184D -S31540018C8080A4E00004800017A21020000300020027 -S31540018C90A4060001A005C01CC2048000A204601005 -S31540018CA0A404A04080A0401402800004901020013A -S31540018CB07FFFA15301000000C2040000A004204030 -S31540018CC080A0401502800004901020017FFFA14C36 -S31540018CD00100000080A4C01114BFFFF00100000094 -S31540018CE0AC05A00180A5801D06BFFFE6AE05E004E8 -S31540018CF07FFFA13E9010200CAC10200080A5801D66 -S31540018D0016800088031555559E1061551B000800B5 -S31540018D10032AAAAA9A136004901062AAA72E600891 -S31540018D2080A4E0000480000EA2102000832DA01331 -S31540018D3082004018130008009410000F9610000D91 -S31540018D4098100008D4204009D820400BA2046002A4 -S31540018D5080A4C01114BFFFFC82006008AC05A001CD -S31540018D6080A5801D06BFFFF080A4E000AC10200066 -S31540018D7080A5801D1680006B03155555B8106155A9 -S31540018D801B000800032AAAAAB6136004B41062AAFB -S31540018D90A72E600880A4E00004800019A2102000DC -S31540018DA0832DA013A00040182F000800AA10001C14 -S31540018DB0A810001BA410001AC2040017A2046002E6 -S31540018DC080A0401502800004901020037FFFA10C73 -S31540018DD001000000C2040014A004200880A0401233 -S31540018DE002800004901020037FFFA10501000000CE -S31540018DF080A4C01114BFFFF101000000AC05A00121 -S31540018E0080A5801D06BFFFE580A4E000AC102000D0 -S31540018E1080A5801D16800043030008009E10600453 -S31540018E201B155555032AAAAA9A136155901062AA91 -S31540018E30A72E600880A4E0000480000EA210200046 -S31540018E40832DA01382004018130008009410000FD0 -S31540018E509610000D98100008D620400AD8204009E7 -S31540018E60A204600280A4C01114BFFFFC8200600806 -S31540018E70AC05A00180A5801D06BFFFF080A4E000DF -S31540018E80AC10200080A5801D16800026031555557F -S31540018E90B81061551B2AAAAA03000800A72E60082C -S31540018EA0B61362AAB410600480A4E00004800019DD -S31540018EB0A2102000832DA013A00040182F00080007 -S31540018EC0AA10001CA810001BA410001AC20400120C -S31540018ED0A204600280A04015028000049010200484 -S31540018EE07FFFA0C701000000C2040017A0042008AC -S31540018EF080A0401402800004901020047FFFA0C08F -S31540018F000100000080A4C01114BFFFF10100000060 -S31540018F10AC05A00180A5801D06BFFFE580A4E00049 -S31540018F2082102005C22620081B200000DA260000F8 -S31540018F3081C7E00881E8000081C3E0089144400010 -S31540018F4080800000151001409412A18090102000ED -S31540018F5092102246818000000100000001000000BD -S31540018F6001000000D00280009122400881C3E00840 -S31540018F7001000000818000009010200180902001B6 -S31540018F8080D020011280002C0100000080D23FFFDA -S31540018F90168000290100000080DA3FFF934000005F -S31540018FA080A27FFF128000240100000080D23FFF93 -S31540018FB09348000093326014920A600F80A26008C1 -S31540018FC01280001D010000008180000090102001E8 -S31540018FD0945220049452A0049452A00496A2A04014 -S31540018FE012800015010000008180000090102002CF -S31540018FF080A00000328000109052000880A220021A -S315400190001280000D010000008180000090102002B6 -S3154001901080A0000001000000328000079052000845 -S3154001902080A22002128000040100000081C3E008F2 -S315400190309010200181C3E00890100000131555558A -S3154001904092126155A5824000010000000100000016 -S31540019050010000009544800080A2400A128000432E -S3154001906001000000923A4000A58240000100000044 -S3154001907001000000010000009544800080A2400AE2 -S315400190801280003A010000001100003F901223FFB8 -S31540019090A580000081800000010000000100000061 -S315400190A00100000093F23FFF9A10000993F23FFF3F -S315400190B093F23FFF93F23FFF93F23FFF93F23FFF5D -S315400190C093F23FFF93F23FFF99400000974480009F -S315400190D0153FFC009412A00880A2400A128000238A -S315400190E080A2400B1280002180A320071280001F1E -S315400190F0113FFF809012200180A340081280001B7F -S315400191001100003F901223FFA580000081800000DE -S3154001911001000000010000000100000093FA3FFF3A -S3154001912093FA3FFF93FA3FFF93FA3FFF93FA3FFFCC -S3154001913093FA3FFF93FA3FFF93FA3FFF99400000AE -S315400191409744800080A260081280000880A26008CF -S315400191501280000680A32000128000040100000056 -S3154001916081C3E0089010200181C3E00890100000FF -S31540019170818000009010200280A000003280001003 -S315400191809072000880A220021280000D01000000AA -S31540019190818000009010200280A0000001000000A4 -S315400191A0328000079072000880A2200212800004DB -S315400191B00100000081C3E0089010200181C3E0084E -S315400191C090100000C0A0004081C3E00801000000EB -S315400191D0110020409012200FD0A0004081C3E0082A -S315400191E0010000009DE3BF987FFFE12B901020080E -S315400191F0A21000087FFFE1289010200C833C6014E8 -S315400192009B3A2014A13A2018A33C6018A20C600393 -S31540019210A00C20038208600F9A0B600F8200600A3F -S315400192209A03600AA2046001A0042001A32C400114 -S315400192307FFFFFE5A12C000D7FFFE08E901000110E -S315400192407FFFE09A901000107FFFF98C010000002B -S315400192507FFFFFE081E8000001000000981200094D -S31540019260818200009AAB2FFF02800025988800007A -S315400192709923000999230009992300099923000993 -S315400192809923000999230009992300099923000983 -S315400192909923000999230009992300099923000973 -S315400192A09923000999230009992300099923000963 -S315400192B09923000999230009992300099923000953 -S315400192C09923000999230009992300099923000943 -S315400192D09923000999230009992300099923000933 -S315400192E09923000999230009992300099923000923 -S315400192F09923000081C3E0089140000099230009A9 -S315400193009923000999230009992300099923000902 -S3154001931099230009992300099923000999230009F2 -S3154001932099230009992300099923000999230000EB -S315400193309B400000992B200C9B33601481C3E008AD -S315400193409013400C1080000B86102000809240083C -S31540019350168000088610000880924000168000049E -S315400193608092000016800003922000099020000898 -S315400193709A924000128000059610000891D0200272 -S3154001938081C3E0089010000080A2C00D0A800095BC -S31540019390941000000302000080A2C0010A80002848 -S315400193A09810000080A340011A80000D841020010E -S315400193B09B2B600410BFFFFC980320019A83400D4C -S315400193C01A8000078400A001832860049B33600152 -S315400193D09A034001108000078420A00180A3400B1E -S315400193E00ABFFFF7010000000280000201000000F1 -S315400193F084A0A00106800076010000009622C00DDF -S31540019400941020011080000A01000000952AA00155 -S31540019410068000059B3360019622C00D1080000432 -S315400194209402A0019602C00D9422A00184A0A0013D -S3154001943016BFFFF78092C000308000659B2B600409 -S3154001944080A3400B08BFFFFE988320010280006580 -S31540019450982320018092C000952AA0040680002FFF -S315400194609B33600196A2C00D068000179B336001B5 -S3154001947096A2C00D0680000B9B33600196A2C00DDB -S31540019480068000059B33600196A2C00D10800050F6 -S315400194909402A00F9682C00D1080004D9402A00D3B -S315400194A09682C00D068000059B33600196A2C00DD1 -S315400194B0108000479402A00B9682C00D1080004494 -S315400194C09402A0099682C00D0680000B9B33600171 -S315400194D096A2C00D068000059B33600196A2C00D81 -S315400194E01080003B9402A0079682C00D1080003880 -S315400194F09402A0059682C00D068000059B3360014B -S3154001950096A2C00D108000329402A0039682C00D2F -S315400195101080002F9402A0019682C00D068000178C -S315400195209B33600196A2C00D0680000B9B33600100 -S3154001953096A2C00D068000059B33600196A2C00D20 -S31540019540108000239402BFFF9682C00D1080002038 -S315400195509402BFFD9682C00D068000059B336001D3 -S3154001956096A2C00D1080001A9402BFFB9682C00DD0 -S31540019570108000179402BFF99682C00D0680000B39 -S315400195809B33600196A2C00D068000059B336001A6 -S3154001959096A2C00D1080000E9402BFF79682C00DB0 -S315400195A01080000B9402BFF59682C00D068000051F -S315400195B09B33600196A2C00D108000059402BFF353 -S315400195C09682C00D108000029402BFF198A320013B -S315400195D016BFFFA28092C000268000029602C009F3 -S315400195E08090C000268000029620000B81C3E008CF -S315400195F09010000B9210000890102000941020004B -S31540019600961020008213C000400000039E104000C7 -S31540019610010000009DE3BF9823100143400005F679 -S31540019620901460F40310006DE0006188D004214875 -S3154001963080A220002280002D9004214CD6022004D5 -S3154001964080A2E01F1480001D0100000080A62000BA -S315400196501280000B94022088832AE0029A02E001DC -S3154001966082004008DA222004F2206008400005FA10 -S31540019670901460F410800022B01020008210200166 -S315400196809328400B992AE002DA02A1009A13400975 -S315400196908203000AF6206080F422800C80A6200214 -S315400196A012BFFFEEDA22A100C202A10482104009D4 -S315400196B010BFFFEAC222A10440000013901021907E -S315400196C080A220000280000B96102000C20421488F -S315400196D0C2220000D0242148C0222004C022218871 -S315400196E010BFFFDBC022218C10BFFFD5D0242148FB -S315400196F0400005D9901460F4B0103FFF81C7E008DF -S3154001970081E800009210000803100141D000637007 -S315400197108213C0004000000A9E1040000100000074 -S315400197209210000803100141D00063708213C000FB -S31540019730400002199E104000010000009DE3BF98C1 -S315400197408206600B80A06016A610001818800003E0 -S31540019750A0087FF8A010201080A400199A4020008C -S315400197608334201F8090400D128001B0B01020003C -S31540019770400001B09010001380A421F71880001713 -S315400197809934200939100141821723809804000138 -S31540019790F003200C80A6000C0280004E9F3420036B -S315400197A0C206200494087FFC9A06000AC20360049C -S315400197B082106001D006200CD2062008D222200851 -S315400197C0C2236004D022600C400001A09010001317 -S315400197D010800196B006200880A320001280002840 -S315400197E09F342003391001419B2BE00382172380CC -S315400197F09A0340011080000AF003600C94087FFC34 -S315400198009622801080A2E00F1480010980A2E00018 -S3154001981036BFFFE79A06000AF006200C80A6000D27 -S3154001982032BFFFF7C20620049E03E0012510014125 -S315400198309814A388F003200880A6000C0280005DDE -S31540019840833BE01FC206200494087FFC96228010C9 -S3154001985080A2E00F1480009F80A2E000D823200C54 -S3154001986006800023D82320089A06000AC203600412 -S315400198708210600110BFFFD5C223600483342006E5 -S3154001988080A3200408BFFFD89E00603880A320141F -S3154001989008BFFFD59E03205B8334200C80A3205450 -S315400198A008BFFFD19E00606E8334200F80A32154F0 -S315400198B008BFFFCD9E0060778334201280A32554D4 -S315400198C008BFFFC99E00607C10BFFFC79E10207E67 -S315400198D098062008F003200C80A6000C32BFFFB288 -S315400198E0C206200410BFFFD29E03E00280A2A1FF60 -S315400198F0088000BE9B32A0039732A00980A2E000F7 -S3154001990022800017961723808332A00680A2E004A6 -S31540019910088000129A00603880A2E0140880000F87 -S315400199209A02E05B8332A00C80A2E0540880000BCF -S315400199309A00606E8332A00F80A2E154088000072E -S315400199409A0060778332A01280A2E5540880000312 -S315400199509A00607C9A10207E96172380832B6003A1 -S315400199609000400BD202200880A240082280010FBD -S3154001997099336002C202600482087FFC80A0400ADB -S3154001998028800007D002600CD202600880A24008FD -S3154001999032BFFFFAC2026004D002600CD026200C0E -S315400199A0D2262008F022600CF0222008833BE01FDB -S315400199B08330601E8203C001391001418338600241 -S315400199C0981723809A102001932B4001D803200435 -S315400199D080A2400C1880004BAE172380808B000973 -S315400199E01280000D03100141820BFFFC92024009D7 -S315400199F0808B0009128000079E0060048210000CD3 -S31540019A00920240098088400902BFFFFE9E03E0049E -S31540019A1003100141A2106380A8100011832BE003BB -S31540019A20980040119010000F9A10000C1080000A07 -S31540019A30F003600C94087FFC9622801080A2E00F10 -S31540019A401480007D80A2E0003680008B9A06000AD1 -S31540019A50F006200C80A6000D32BFFFF7C206200497 -S31540019A609E03E001808BE00312BFFFF19A03600879 -S31540019A70808A200398033FF8028000D490023FFF7A -S31540019A80C203200880A0400C02BFFFFB808A20034E -S31540019A9092024009C205200480A2400118800018A4 -S31540019AA03910014180A26000128000068088400979 -S31540019AB010800014AE1723809E03E004808840097D -S31540019AC022BFFFFE9202400910BFFFD6832BE0035F -S31540019AD08214200194060010C2262004D423200CAF -S31540019AE0D42320088212E001D622800BD822A00876 -S31540019AF0C222A00410BFFF35D822A00CAE17238086 -S31540019B00F005E008C2062004AA087FFC80A54010A3 -S31540019B109A4020009625401080A2E00F1480004212 -S31540019B2082102001809340010280002703100143E7 -S31540019B30DA0061982D1001419A04000DC205A378FF -S31540019B40A810001580A07FFFA203601002800004C8 -S31540019B50A406001582046FFFA2087000901000133E -S31540019B60400000C09210001180A23FFF0280000811 -S31540019B70B210000880A200121A8000463B10014331 -S31540019B8080A6001722800044C2076168821723809D -S31540019B90D8006008DA0320049A0B7FFC80A34010AA -S31540019BA0984020009623401080A2E00F04800003D5 -S31540019BB082102001821020008093000112800098BB -S31540019BC00100000098172380F00320088214200129 -S31540019BD0C22620049A0600108212E001C2236004C4 -S31540019BE010BFFEFADA23200898033FF8832B60035F -S31540019BF09000400C9B336002821020018328400D67 -S31540019C00D2022008DA0320049A134001D026200C00 -S31540019C10D2262008F022600CDA23200410BFFF640C -S31540019C20F022200810BFFFC08210200010BFFEFFA7 -S31540019C309E03FFFFD006200CD20620089A1420016D -S31540019C40940600108214A388D2222008D022600CE8 -S31540019C50DA262004D420600CD42060089A12E00150 -S31540019C60D622800BC222A008DA22A00410BFFED75A -S31540019C70C222A00CC203600482106001D006200CEF -S31540019C80D2062008C223600410BFFECFD22220088C -S31540019C90C20761688200401180A640120280004FCF -S31540019CA0C2276168C205A37880A07FFF0280004574 -S31540019CB0C20761689A2640128200400DC227616838 -S31540019CC09A8E600702800005A410200082102008A9 -S31540019CD0A420400DB20640129A0640119A0B6FFF1E -S31540019CE0030000048220400DA4048001901000135B -S31540019CF04000005C9210001280A23FFF2280003F8C -S31540019D00A41020008222001990004012821723805D -S31540019D10DA0761689A03401280A60001F2206008C2 -S31540019D20DA276168028000378212200180A5600F20 -S31540019D3038800005C22660048210200110BFFF94BE -S31540019D40C2266004C20620049A057FF4A80B7FF858 -S31540019D508208600182104014C22620049A0600142B -S31540019D6082102005C223600880A5200F1880002795 -S31540019D70C223600419100143DA076168C2032194C2 -S31540019D8080A3400138800002DA232194191001434F -S31540019D90C203219080A3400138BFFF7DDA23219081 -S31540019DA010BFFF7C821723809A102001C202E00473 -S31540019DB09B2B400C8210400D10BFFEF9C222E004DD -S31540019DC010BFFFC0F225A378C2046004822840096F -S31540019DD010BFFF30C2246004808E6FFF12BFFFB3F5 -S31540019DE0C205A37890044014DA05E00882122001E6 -S31540019DF010BFFFE1C223600410BFFFC390100019DA -S31540019E0010BFFFDDC22660049206200840000062B2 -S31540019E109010001310BFFFD9191001434000000BE9 -S31540019E2090100013B010200081C7E00881E80000BF -S31540019E3011100142901223888213C000400003EEA4 -S31540019E409E1040000100000011100142901223882B -S31540019E508213C000400004009E1040000100000033 -S31540019E609DE3BF9821100144C02421704000020D9A -S31540019E709010001980A23FFF12800006C204217093 -S31540019E8080A060000280000301000000C22600009D -S31540019E9081C7E00891E800089DE3BF987FFFFFE591 -S31540019EA09010001803100141A2106380DA04600883 -S31540019EB0C2036004A0087FFCB2240019B2066FEF0A -S31540019EC0B20E7000B20670009210200080A66FFF9D -S31540019ED00480000A901000187FFFFFE20100000095 -S31540019EE0C20460088200401080A0400892200019F8 -S31540019EF002800005901000187FFFFFD4B0102000AB -S31540019F00308000237FFFFFD790100018822400196C -S31540019F1080A23FFF82106001921020001910014378 -S31540019F200280000B90100018DA046008C223600416 -S31540019F30C203216882204019901000187FFFFFC399 -S31540019F40C223216810800012B01020017FFFFFC597 -S31540019F500100000098100008D6046008A023000BF9 -S31540019F609010001880A4200F04BFFFE4B214200112 -S31540019F7003100141DA0063789A23000D031001436F -S31540019F80DA20616810BFFFDDF222E00481C7E008F4 -S31540019F9081E800009DE3BF9880A660000280009D95 -S31540019FA0A41000187FFFFFA390100018A0067FF8A9 -S31540019FB0D6042004900AFFFE1910014194040008BA -S31540019FC0A2132380DA02A004C204600880A0400ADA -S31540019FD0028000449E0B7FFC808AE001DE22A004C1 -S31540019FE01280000CB0102000F2067FF8A024001960 -S31540019FF082046008DA04200880A340010280007DC3 -S3154001A00090020019D204200CDA226008D223600C97 -S3154001A0108202800FDA006004808B60011280000AA0 -S3154001A0208212200180A62000028000229002000FA9 -S3154001A030DA02A008D202A00CDA226008D223600C10 -S3154001A04082122001C224200480A62000028000053D -S3154001A050D0240008B01000127FFFFF7C81E8000089 -S3154001A06080A221FF18800036973220099B322003B7 -S3154001A07098132380832B60039200400C9B3360022C -S3154001A080821020018328400DD6026008DA0320049D -S3154001A0909A134001D224200CD6242008E022E00C59 -S3154001A0A0DA232004E022600810BFFFECB010001252 -S3154001A0B003100141DA02A0088210638880A340019F -S3154001A0C032BFFFDED202A00CE023600CE023600821 -S3154001A0D0DA242008DA24200C10BFFFDAB010200160 -S3154001A0E0808AE001128000099002000FF2067FF893 -S3154001A0F0A0240019D204200CD6042008D6226008D8 -S3154001A10090020019D222E00C03100141DA00637C6F -S3154001A11098122001E024600880A2000D0ABFFFCFFB -S3154001A120D824200403100143D20061987FFFFF5BCE -S3154001A130901000127FFFFF4581E8000080A2E000F9 -S3154001A140028000169B3220038332200680A2E0045F -S3154001A150088000129A00603880A2E0140880000F3F -S3154001A1609A02E05B8332200C80A2E0540880000B07 -S3154001A1709A00606E8332200F80A2E1540880000766 -S3154001A1809A0060778332201280A2E554088000034A -S3154001A1909A00607C9A10207E94132380832B60035F -S3154001A1A09200400AD602600880A2C00902800013CC -S3154001A1B099336002C202E00482087FFC80A0400815 -S3154001A1C028800007D202E00CD602E00880A2C0092E -S3154001A1D032BFFFFAC202E004D202E00CD224200CC4 -S3154001A1E0D6242008E022E00C10BFFFB0E022600830 -S3154001A1F010BFFF88B01020019A102001C202A004AE -S3154001A2009B2B400C8210400D10BFFFF5C222A004CB -S3154001A21081C7E00881E800009DE3BF98D20640006F -S3154001A22080A2600012800004901000187FFFFF5A40 -S3154001A23081E800007FFFFFF9010000007FFFFF5624 -S3154001A24081E80000010000009DE3BF980310014131 -S3154001A250DA00637080A6000D028000410100000013 -S3154001A260D206204C80A260001280001CA010200063 -S3154001A270D206214880A260002280000FD2062054D7 -S3154001A280A006214C80A240102280000BD206205409 -S3154001A29010800005B2100009F20640007FFFFF3E24 -S3154001A2A09010001880A4001912BFFFFC92100019EB -S3154001A2B0D206205480A260001280002501000000D1 -S3154001A2C0C206203880A060000280002501000000FF -S3154001A2D010800017C206203C832C2002F202400166 -S3154001A2E080A660002280000BA00420019210001974 -S3154001A2F0F20640007FFFFF289010001880A66000FC -S3154001A30012BFFFFC92100019D206204CA004200176 -S3154001A31080A4200E04BFFFF2832C20027FFFFF1E84 -S3154001A3209010001810BFFFD4D20621489FC04000AC -S3154001A33090100018F20622E080A660000280000814 -S3154001A340010000007FFFFFB581E800007FFFFF129B -S3154001A3509010001810BFFFDCC206203881C7E00804 -S3154001A36081E800009DE3BF9880A620000280001D81 -S3154001A37003100141E406214880A4A0002280001375 -S3154001A380C206203CE204A004A2847FFF0C80000A9E -S3154001A390832C600282004012A0006008C2040000C3 -S3154001A3A09FC04000A0043FFCA2847FFF3CBFFFFD4D -S3154001A3B0C2040000E404800080A4A00032BFFFF381 -S3154001A3C0E204A004C206203C80A06000028000078F -S3154001A3D0010000009FC0400090100018308000032B -S3154001A3E010BFFFE5F000637081C7E00881E8000017 -S3154001A3F01080000B861020008092400816800008CD -S3154001A400861A40088092400016800004809200001F -S3154001A4101680000392200009902000089A9240007D -S3154001A420128000059610000891D0200281C3E008F1 -S3154001A4309010000080A2C00D0A8000959410000083 -S3154001A4400302000080A2C0010A8000289810000083 -S3154001A45080A340011A80000D841020019B2B6004CB -S3154001A46010BFFFFC980320019A83400D1A80000714 -S3154001A4708400A001832860049B3360019A03400154 -S3154001A480108000078420A00180A3400B0ABFFFF77C -S3154001A49001000000028000020100000084A0A0012A -S3154001A4A006800076010000009622C00D941020011E -S3154001A4B01080000A01000000952AA00106800005CF -S3154001A4C09B3360019622C00D108000049402A001C6 -S3154001A4D09602C00D9422A00184A0A00116BFFFF7E9 -S3154001A4E08092C000308000659B2B600480A3400BA6 -S3154001A4F008BFFFFE98832001028000659823200152 -S3154001A5008092C000952AA0040680002F9B336001EB -S3154001A51096A2C00D068000179B33600196A2C00D1E -S3154001A5200680000B9B33600196A2C00D0680000594 -S3154001A5309B33600196A2C00D108000509402A00F7B -S3154001A5409682C00D1080004D9402A00D9682C00DDA -S3154001A550068000059B33600196A2C00D108000471E -S3154001A5609402A00B9682C00D108000449402A0096B -S3154001A5709682C00D0680000B9B33600196A2C00DEA -S3154001A580068000059B33600196A2C00D1080003BFA -S3154001A5909402A0079682C00D108000389402A0054F -S3154001A5A09682C00D068000059B33600196A2C00DC0 -S3154001A5B0108000329402A0039682C00D1080002FB5 -S3154001A5C09402A0019682C00D068000179B3360015C -S3154001A5D096A2C00D0680000B9B33600196A2C00D6A -S3154001A5E0068000059B33600196A2C00D10800023B2 -S3154001A5F09402BFFF9682C00D108000209402BFFDD9 -S3154001A6009682C00D068000059B33600196A2C00D5F -S3154001A6101080001A9402BFFB9682C00D108000176D -S3154001A6209402BFF99682C00D0680000B9B336001F0 -S3154001A63096A2C00D068000059B33600196A2C00D0F -S3154001A6401080000E9402BFF79682C00D1080000B59 -S3154001A6509402BFF59682C00D068000059B336001CA -S3154001A66096A2C00D108000059402BFF39682C00DDC -S3154001A670108000029402BFF198A3200116BFFFA2E9 -S3154001A6808092C000268000029422A0018090C000E2 -S3154001A690268000029420000A81C3E0089010000A37 -S3154001A6A019100144DA03217480A360001280000668 -S3154001A6B082034008031001449A106188DA23217409 -S3154001A6C082034008C223217481C3E0089010000D23 -S3154001A6D0A7500000AE1000018334E0012910014368 -S3154001A6E0E8052038A92CC0148215000181E000003C -S3154001A6F081904000010000000100000001000000BF -S3154001A700E03BA000E43BA008E83BA010EC3BA018CE -S3154001A710F03BA020F43BA028F83BA030FC3BA038FE -S3154001A72081E800008210001781C4400081CC80007E -S3154001A730010000000100000001000000A7500000D8 -S3154001A740A92CE0012B100143EA056038AB34C01552 -S3154001A750AA15401481954000010000000100000047 -S3154001A7600100000081E8000081E80000E01BA00034 -S3154001A770E41BA008E81BA010EC1BA018F01BA020AE -S3154001A780F41BA028F81BA030FC1BA03881E0000078 -S3154001A79081E0000081C4400081CC8000A7500000C8 -S3154001A7A02910006CADC5210C0100000027100143A2 -S3154001A7B0A614E018E024C000818C2020010000008E -S3154001A7C001000000010000009DE3BFA09DE3BFA082 -S3154001A7D09DE3BFA09DE3BFA09DE3BFA09DE3BFA0B6 -S3154001A7E09DE3BFA081E8000081E8000081E8000008 -S3154001A7F081E8000081E8000081E8000081E800006E -S3154001A80027100143A614E018C024C000E203A06843 -S3154001A810A4046004E223A064E423A06810800262D9 -S3154001A820AC10000029100142A81523FCC2252000C6 -S3154001A830C8252004E0252010E2252014E42520180F -S3154001A840E825201C81E800008348000082106F0043 -S3154001A8508188602001000000010000000100000025 -S3154001A86009100143C801203881E0000088212001F8 -S3154001A87080A920FF028000030100000001000000C2 -S3154001A88080A1000012BFFFF9010000000910014339 -S3154001A890C801203881E8000080A920FF028000031A -S3154001A8A001000000010000008821200180A1000074 -S3154001A8B012BFFFF90100000081E0000029100142AA -S3154001A8C0A81523FCC8052004C2052000E005201078 -S3154001A8D0E2052014E4052018C025201C818C2000A7 -S3154001A8E001000000010000000100000081C4800059 -S3154001A8F081CCA004A0142F00818C0000010000002F -S3154001A900010000000100000081C4800081CCA00448 -S3154001A91080A6600212800005A8142F00818D0000D8 -S3154001A920B01420203080001F80A6600312800006EC -S3154001A930A80E2F00AA2C2F00A8154014818D0000C7 -S3154001A9403080001880A6600412800008A9480000E3 -S3154001A950A8152040818D0000010000000100000083 -S3154001A960010000003080000F80A6600512800008BB -S3154001A970A9480000A82D2040818D0000010000005B -S3154001A98001000000010000003080000680A660063C -S3154001A990128000030100000030BFFFA391D02000C8 -S3154001A9A081C4800081CCA0049210200381C3E008B9 -S3154001A9B091D020029210200281C3E00891D020025A -S3154001A9C09210200681C3E00891D0200281C3E0089D -S3154001A9D00100000081C3E0080100000081C3E008D6 -S3154001A9E001000000AE25A010A75000002D10006AFE -S3154001A9F0AC15A1F82910006C81C522B401000000F4 -S3154001AA001110014390122024D202000092026001EB -S3154001AA10D2220000932DE008902C2F0092120009BB -S3154001AA20111001439012201CD002000080A00008A2 -S3154001AA302280000292126F00818A6020010000008C -S3154001AA400100000001000000901000174000003195 -S3154001AA509203A06092142F00818A602001000000B9 -S3154001AA600100000001000000111001439012202452 -S3154001AA70D202000092226001D22200001080022DF3 -S3154001AA80AC1000001B1001449A13602C912A20023D -S3154001AA90C2034008C222600C81C3E008D2234008A9 -S3154001AAA09DE3BF98031001448210602C992E6002E9 -S3154001AAB01B100143972E6004D800400C9A13622C58 -S3154001AAC0901000199202C00D80A6601F1480000FDD -S3154001AAD0821020001080000680A320002280000AF8 -S3154001AAE0C2024000D803200C80A3200012BFFFFC05 -S3154001AAF080A300097FFFFFE4F0224000108000039D -S3154001AB0082102000F022400081C7E00891E8000150 -S3154001AB109DE3BF981B10014382136028D80060044F -S3154001AB2080A3001802800044C203602880A620004A -S3154001AB3022800002B010000C03100144A32E200213 -S3154001AB408210602CE000401180A420000280003D6C -S3154001AB500310014310800012A41061A8D2042008FA -S3154001AB60941000199FC30000901000180310014370 -S3154001AB70C20061A080A060001280002B010000008D -S3154001AB80C204801182007FFFC2248011E004200CA0 -S3154001AB9080A420000280002B01000000D8040000A0 -S3154001ABA080A3200022BFFFFBE004200C03100143D9 -S3154001ABB0DA00622880A36000128000089610001215 -S3154001ABC003100143821061A8DA00401180A360009E -S3154001ABD032BFFFF0E004200CDA02C011031001433A -S3154001ABE09A036001C20061A480A0600002BFFFDC3D -S3154001ABF0DA22C0119FC0400001000000D8040000C5 -S3154001AC00D2042008941000199FC300009010001828 -S3154001AC1003100143C20061A080A0600022BFFFDA99 -S3154001AC20C20480119FC040000100000010BFFFD642 -S3154001AC30C2048011DA0060C010BFFFBDB00B601FB7 -S3154001AC4081C7E00881E800008C10000FA74800008A -S3154001AC508B34E0188A09600F80A160030280000CE2 -S3154001AC600B1001438A1160300920000088112070C1 -S3154001AC70C82140000B1001438A1160500920000091 -S3154001AC8088112040C82140001080003990102001D1 -S3154001AC9092102006400001DD0100000080A000085E -S3154001ACA00280003301000000C2022010113FFC0067 -S3154001ACB082084008110003FC8410400890100002ED -S3154001ACC0921020019410200C400001E60100000082 -S3154001ACD080A000080280002601000000400001F625 -S3154001ACE0921000010B1001438A116030D2214000BD -S3154001ACF0901000029210200194102011400001D9B9 -S3154001AD000100000080A00008028000190100000037 -S3154001AD10400001E992100001920260100B100143BC -S3154001AD208A116050D22140009010000292102001F9 -S3154001AD309410200D400001CB0100000080A00008C6 -S3154001AD400280000B01000000400001DB921000016F -S3154001AD500B1001438A116028D2214000D4026010B1 -S3154001AD609532A010940AA00FD42160049E100006CB -S3154001AD7081C3E008010000000310014382106048CE -S3154001AD808210200191D0200081C3E008010000001B -S3154001AD909DE3BF9803100144C20060C8901000189B -S3154001ADA09210001980A0600002800005B0102000BA -S3154001ADB09FC0400001000000B010000881C7E008B4 -S3154001ADC081E800009DE3BF9803100144C20060C4BE -S3154001ADD09010001880A0600002800005B01020008D -S3154001ADE09FC0400001000000B010000881C7E00884 -S3154001ADF081E800009DE3BF9803100144C20060BC96 -S3154001AE009010001880A0600002800005B01020005C -S3154001AE109FC0400001000000B010000881C7E00853 -S3154001AE2081E800009DE3BF9803100144C20060C061 -S3154001AE309010001880A0600002800005B01020002C -S3154001AE409FC0400001000000B010000881C7E00823 -S3154001AE5081E800009DE3BF9803100144C20060B839 -S3154001AE609010001880A0600002800005B0102000FC -S3154001AE709FC0400001000000B010000881C7E008F3 -S3154001AE8081E800009DE3BF9803100144C20060B40D -S3154001AE909010001880A0600002800005B0102000CC -S3154001AEA09FC0400001000000B010000881C7E008C3 -S3154001AEB081E800009DE3BF9803100144C20060B0E1 -S3154001AEC09010001880A0600002800005B01020009C -S3154001AED09FC0400001000000B010000881C7E00893 -S3154001AEE081E800009DE3BF9803100144C20060ACB5 -S3154001AEF0901000189210001980A060000280000591 -S3154001AF00B01020009FC0400001000000B0100008B2 -S3154001AF1081C7E00881E80000010000000310006BD2 -S3154001AF20821063E89FC0400001000000031000004A -S3154001AF3082106000819840000310006C8210606CA2 -S3154001AF409FC04000010000000310006B821063D8CF -S3154001AF509FC04000010000008B4800008B31601803 -S3154001AF608A09600380A16003128000070100000086 -S3154001AF708B4440008B31601C80A14000128000064A -S3154001AF80010000007FFFFF31010000007FFF98773D -S3154001AF90010000009C23A0407FFF981A0100000099 -S3154001AFA08210200191D020000100000029000004F8 -S3154001AFB0A68C001432800003A02C001491D02000EE -S3154001AFC0818C00000100000001000000010000002A -S3154001AFD081C4800081CCA00481C3E0080100000047 -S3154001AFE081C1E00801000000A74800008B34E01849 -S3154001AFF08A09600380A160031280000801000000F5 -S3154001B00021100143A0142040A2102003E224000095 -S3154001B0108B4440001080000821100143A0142040B9 -S3154001B020A2102002E224000021200000E604202490 -S3154001B0308B34E0148A09601F27100143A614E038B7 -S3154001B040CA24C0008A01600127100143A614E034D6 -S3154001B050CA24C00027100143A614E03C8A2160029D -S3154001B060CA24C00081C3E0080100000081C3E00892 -S3154001B07001000000834800008330601882086003A5 -S3154001B08080A0600312800006010000008344400056 -S3154001B0900500000882284002A38040008810000075 -S3154001B0A00910006B81C1231C010000009DE3BF987C -S3154001B0B00310006D1B10006DA01061709A13617032 -S3154001B0C080A4000D1A800010A210000D1080000609 -S3154001B0D0C204000080A400111A80000B0100000088 -S3154001B0E0C204000080A0600002BFFFFBA004200450 -S3154001B0F09FC040000100000080A400112ABFFFFA52 -S3154001B100C204000081C7E00881E80000AA27A0B078 -S3154001B110E0256060E2256064E4256068C2256074CC -S3154001B120C43D6078C83D6080CC3D60888540000064 -S3154001B130C425606CF03D6090F43D6098F83D60A098 -S3154001B140FC3D60A8A8102001A92D0010808D001398 -S3154001B15002800013010000008534E001071001431D -S3154001B160C600E038A72CC0038414C0028408A0FF9F -S3154001B17081E000008190A000E03BA000E43BA008F4 -S3154001B180E83BA010EC3BA018F03BA020F43BA028E4 -S3154001B190F83BA030FC3BA03881E8000081C5A008FF -S3154001B1A09C100015051001438410A19CC400800029 -S3154001B1B080A0800002800004010000009FC0800042 -S3154001B1C09203A060818C20008210200283284010C7 -S3154001B1D005100143C400A03485304002821040026C -S3154001B1E08550000080888001028000208328A001CC -S3154001B1F007100143C600E0388530800382104002C3 -S3154001B200820860FF81906000C203A06C818060006B -S3154001B210F01BA090F41BA098F81BA0A0FC1BA0A8B3 -S3154001B220C203A074C41BA078C81BA080CC1BA088F5 -S3154001B230E003A060E203A064E403A06881E80000A3 -S3154001B240E01BA000E41BA008E81BA010EC1BA01803 -S3154001B250F01BA020F41BA028F81BA030FC1BA03833 -S3154001B2601080000F81E00000C203A06C8180600065 -S3154001B270F01BA090F41BA098F81BA0A0FC1BA0A853 -S3154001B280C203A074C41BA078C81BA080CC1BA08895 -S3154001B290E003A060E203A064E403A068818C20007F -S3154001B2A001000000010000000100000081C44000CF -S3154001B2B081CC8000AA27A0B0C2256074C43D6078C5 -S3154001B2C0C83D6080CC3D608885400000C425606CE7 -S3154001B2D0A8102001A92D0010808D001302800013B3 -S3154001B2E0010000008534E00107100143C600E03843 -S3154001B2F0A72CC0038414C0028408A0FF81E000008B -S3154001B3008190A000E03BA000E43BA008E83BA010F0 -S3154001B310EC3BA018F03BA020F43BA028F83BA03022 -S3154001B320FC3BA03881E8000081C5A0089C100015AF -S3154001B330051001438410A19CC400800080A08000B8 -S3154001B34002800004010000009FC080009203A060BB -S3154001B350818C200082102002832840100510014371 -S3154001B360C400A0348530400282104002855000005E -S3154001B37080888001028000198328A00107100143BB -S3154001B380C600E0388530800382104002820860FFA3 -S3154001B39081906000C203A06C81806000C203A074EA -S3154001B3A0C41BA078C81BA080CC1BA08881E80000E4 -S3154001B3B0E01BA000E41BA008E81BA010EC1BA01892 -S3154001B3C0F01BA020F41BA028F81BA030FC1BA038C2 -S3154001B3D01080000881E00000C203A06C81806000FB -S3154001B3E0C203A074C41BA078C81BA080CC1BA08834 -S3154001B3F0818C2000010000000100000001000000D6 -S3154001B40081C4400081CC8000821000089A10380027 -S3154001B41096102000912AE00598034008D40340087D -S3154001B4209132A01880A20001328000089602E00104 -S3154001B4309132A00C900A2FFF80A2000902800007DA -S3154001B4409410000C9602E00180A2E00728BFFFF3AA -S3154001B450912AE0059410200081C3E0089010000A6B -S3154001B4608210000898102000912B20039A00400872 -S3154001B470D60040089132E01880A2000932800008C7 -S3154001B480980320019132E00C900A2FFF80A2000A16 -S3154001B490028000079610000D9803200180A3200F1B -S3154001B4A028BFFFF3912B20039610200081C3E008AB -S3154001B4B09010000BD4022004173FFC00920A400B67 -S3154001B4C0900A800B9132200C921240081100003FE5 -S3154001B4D0901223F0940A8008952AA0049412800BB6 -S3154001B4E0920A400A81C3E008901000099DE3BF9883 -S3154001B4F00310006D82106158DA007FFC80A37FFF44 -S3154001B50002800009A0007FFC8210000D9FC0400010 -S3154001B510A0043FFCC204000080A07FFF12BFFFFCD5 -S3154001B5200100000081C7E00881E800009DE3BF9863 -S3154001B53081C7E00881E8000000000000000000002B -S3154001B54000000000000000000000000000000000B4 -S3154001B55000000002FFFFFFFF0000000000000000A6 -S3154001B56000000002FFFFFFFF000000000000000096 -S3154001B57040080000000000003CD203AF9EE756168B -S3154001B5803E7AD7F29ABCAF4840050220000000003F -S3154001B590430000009DE3BFA07FFF96D70100000056 -S3154001B5A07FFFFFD30100000081C7E00881E800006A -S3154001B5B09DE3BFA07FFF96B20100000081C7E0086E -S3154001B5C081E80000000000000000000000000000CB -S315400200000000000100000000000000004001B56849 -S315400200102000000000000000000000000000000078 +S315400174A0A1800000E8180000AC100000AE100000FA +S315400174B0EC04C000EE04E00480A500161280010031 +S315400174C080A54017128000FE01000000A54400007F +S315400174D0A534A00BA40CA00780A4A001128000F83B +S315400174E001000000A0100000A1844000A610000089 +S315400174F0A1800000A210200AA1844000A41000002F +S31540017500A1800000E8180000AC100000AE10000099 +S31540017510EC04C012EE04E00480A50016128000E8D7 +S3154001752080A54017128000E601000000A544000036 +S31540017530A534A00BA40CA00780A4A002068000E0FD +S315400175400100000021100120A0142200EC1C0000C3 +S31540017550A0042008E81C0000A1844000A6100000F9 +S31540017560A1800000A210200EA1844000A4100010AA +S31540017570AC100000AE100000A18000000100000028 +S3154001758001000000EC3C8013AC100000AE1000007E +S31540017590E81CC01280A50016128000C980A54017BC +S315400175A0128000C701000000A5440000A534A00BCD +S315400175B0A40CA00780A4A004128000C10100000011 +S315400175C010800002010000008B4440008A09601FC0 +S315400175D080A160010280000A8C1000059DE3BFA0D6 +S315400175E08AA1600116BFFFFE0100000081E800008C +S315400175F08CA1A00116BFFFFE0100000001000000A2 +S3154001760001000000A023A080A02C20078E100010AE +S31540017610A3480000E2240000C2242004C43C200800 +S31540017620C83C2010CC3C2018F03C2020F43C2028BB +S31540017630F83C2030FC3C2038D03C2040D43C20480B +S31540017640D83C2050DC3C2058A5500000E424206062 +S315400176508010200882102001841020028610200309 +S31540017660881020048A1020058C1020068190000085 +S31540017670A42C601F818C80000100000001000000E5 +S3154001768001000000030040408210610184100000A7 +S3154001769086100000894440008809201F8610000496 +S315400176A0A010000284004002A210000284004002A1 +S315400176B0A410000284004002A61000028400400289 +S315400176C0A810000284004002AA1000028400400271 +S315400176D0AC10000284004002AE1000028400400259 +S315400176E09010000284004002921000028400400281 +S315400176F09410000284004002961000028400400269 +S3154001770098100002840040029A1000028400400250 +S315400177109C100002840040029E1000028400400238 +S3154001772081E0000086A0E00116BFFFDE01000000F7 +S31540017730030040408210610184100000861000045D +S3154001774080A400021280003F8400400280A44002CF +S315400177501280003C8400400280A4800212800039DD +S315400177608400400280A4C002128000368400400298 +S3154001777080A50002128000338400400280A54002A9 +S31540017780128000308400400280A580021280002DC4 +S315400177908400400280A5C0021280002A8400400273 +S315400177A080A20002128000278400400280A240028B +S315400177B0128000248400400280A2800212800021AF +S315400177C08400400280A2C0021280001E8400400252 +S315400177D080A300021280001B8400400280A3400265 +S315400177E0128000188400400280A380021280001596 +S315400177F08400400280A3C00212800012840040022D +S3154001780081E0000086A0E00116BFFFCE0100000026 +S3154001781080A020001280000B80A0FFFF128000098B +S3154001782080A160051280000780A1A0061280000594 +S3154001783001000000A010000710800006C02420208F +S31540017840A01000079010200110800002D0242020B3 +S3154001785082100007C40040008188800001000000BA +S315400178600100000001000000C4186008C81860103B +S31540017870CC186018F0186020F4186028F8186030A9 +S31540017880FC186038D0186040D4186048D818605049 +S31540017890DC186058E4006060C20060048194800096 +S315400178A0010000000100000001000000A0100007D7 +S315400178B0F004202081C7E00881E8000010BFFFFCEA +S315400178C0B01000000100000081D8200081C3E0080B +S315400178D0010000000328000084106004952AA00DD1 +S315400178E0D0204000922270009202400AD2208000AD +S315400178F081C3E0080100000003100124C40061AC0B +S3154001790003100124C200619C852A40028610200191 +S315400179108328C00182007FFF900A00019000800801 +S315400179208213C0007FFFE74C9E104000010000001B +S3154001793003100124C40061AC03100124C200619C00 +S31540017940852A4002861020018328C00182007FFFDC +S31540017950900A0001900080088213C0007FFFE73A39 +S315400179609E104000010000009DE3BFA02D100124A0 +S31540017970C205A1A0A410001880A0600004800020C8 +S31540017980B01020012F1001242B100124D005E1ACA9 +S3154001799029100124AC15A1A0AE15E1ACAA15619C34 +S315400179A0A815218CA0102000A2102000A6102001AD +S315400179B0C2054000832CC00182007FFF820C8001FA +S315400179C0912C00087FFFE72090020001C2050000CC +S315400179D0901A0012820A000180A00001C2058000AF +S315400179E0A2647FFFA004200180A0401034BFFFF1B4 +S315400179F0D005C00080A00011B0603FFF81C7E008FC +S31540017A0081E800009DE3BFA003100124C40061ACDE +S31540017A1003100124C200619CB32E40028410200150 +S31540017A208328800182007FFF820E00019210001A96 +S31540017A307FFFE70B9006400181C7E00881E800001F +S31540017A409DE3BFA003100124C40061AC03100124CF +S31540017A50C200619CB32E400284102001832880011C +S31540017A6082007FFF820E00019210001A7FFFE6F826 +S31540017A709006400181C7E00881E800000310012417 +S31540017A80C400619403100124C2006190852A40021A +S31540017A90861020018328C00182007FFF900A0001E1 +S31540017AA0900080088213C0007FFFE6E39E104000ED +S31540017AB0010000009DE3BFA003100124C4006194AE +S31540017AC003100124C2006190B32E400284102001AC +S31540017AD08328800182007FFF820E00019210001AE6 +S31540017AE07FFFE6D79006400181C7E00881E80000A4 +S31540017AF09DE3BFA003100124C40061940310012437 +S31540017B00C2006190B32E4002841020018328800177 +S31540017B1082007FFF820E00019210001A7FFFE6C4A9 +S31540017B209006400181C7E00881E800000310012466 +S31540017B30C400619403100124C2006190852A400269 +S31540017B40861020018328C00182007FFF900A000130 +S31540017B50900080088213C0007FFFE6B39E1040006C +S31540017B6001000000033FFFBF821063089DE38001CF +S31540017B700310004482106360C227BFEC0310004427 +S31540017B80821063A02F100044C227BFF4AE15E34014 +S31540017B9035100044EE27BFE8B416A38090102006A6 +S31540017BA07FFFA777F427BFF07FFFE69B9010200069 +S31540017BB0213FFFBF920A3FF0A01423689010200096 +S31540017BC07FFFE697A0078010230000307FFFE692F3 +S31540017BD090102000808A001112BFFFFD01000000B5 +S31540017BE081D82000230000307FFFE68B90102000D3 +S31540017BF0808A001112BFFFFD0100000023100124FD +S31540017C007FFFE6859010200013002040A410000855 +S31540017C109212600F921200097FFFE68190102000B8 +S31540017C207FFFE67D90102008D02461887FFFE67AA9 +S31540017C309010200C09100124C40461889938A014BD +S31540017C4013100124980B200F8603200AC621219088 +S31540017C50091001240310012496102400C621219401 +S31540017C60893A20148809200F9401200AD422619C64 +S31540017C70131001242D100124D0206198D42261AC27 +S31540017C8015100124932AC004833A2018D222A1A8B0 +S31540017C901510012482086003820060011B20000048 +S31540017CA08801200837100124C225A1A09201200293 +S31540017CB0821020019328400992234009D222A18CA7 +S31540017CC01510012487284003913A20109A23400336 +S31540017CD0992AC00CDA26E1A4D822A184A20A200757 +S31540017CE08738A018A93CA00CBA210011A408E003CA +S31540017CF08538A010A88D2003AA08A007A404A001D6 +S31540017D00AB284015A3284011AB2840159010001709 +S31540017D10AA057FFFA610200002800123B807BFE80D +S31540017D20A6042020030048D182106167C224C00006 +S31540017D3003226AF3821061EFC2242024C20C202060 +S31540017D4080A0600102800004010000007FFFA713AC +S31540017D509010201AC20C202180A0602302800004CA +S31540017D60010000007FFFA70D9010201BC20C2022AE +S31540017D7080A0604502800004010000007FFFA70744 +S31540017D809010201CC20C202380A060670280000452 +S31540017D90010000007FFFA7019010201DC20C202486 +S31540017DA080A0608902800004010000007FFFA6FBDD +S31540017DB09010201EC20C202580A060AB02800004DA +S31540017DC0010000007FFFA6F59010201FC20C20265F +S31540017DD080A060CD02800004010000007FFFA6EF75 +S31540017DE090102020C20C202780A060EF0280000462 +S31540017DF0010000007FFFA6E990102021C214202037 +S31540017E00832860108330601080A0612302800004C3 +S31540017E10010000007FFFA6E190102022C414202219 +S31540017E208528A010030000118530A01082106167DB +S31540017E3080A0800102800004010000007FFFA6D7D8 +S31540017E4090102023C41420248528A010030000226A +S31540017E508530A010821061AB80A0800102800004B1 +S31540017E60010000007FFFA6CD90102024C4142026D7 +S31540017E708528A010030000338530A010821061EFE1 +S31540017E8080A0800102800005821020307FFFA6C3BA +S31540017E909010202582102030C22C2020030C08D1BE +S31540017EA082106167C404C00080A080010280000581 +S31540017EB0821020317FFFA6B99010202782102031F1 +S31540017EC0C22C2021030C0C5182106167C404C000EE +S31540017ED080A0800102800005821020327FFFA6AF7C +S31540017EE09010202882102032C22C2022030C0C4CE8 +S31540017EF082106267C404C00080A080010280000530 +S31540017F00821020337FFFA6A59010202982102033AE +S31540017F10C22C2023030C0C4C82106233C404C000D3 +S31540017F2080A0800102800005821020347FFFA69B3D +S31540017F309010202A82102034C22C2024030D2AF3CB +S31540017F40821061EFC404202480A0800102800005D4 +S31540017F50821020357FFFA6919010202B821020356C +S31540017F60C22C2025030D0D73821061EFC404202419 +S31540017F7080A0800102800005821020367FFFA687FF +S31540017F809010202C82102036C22C2026030D0D4D38 +S31540017F90821062EFC404202480A080010280000583 +S31540017FA0821020377FFFA67D9010202D821020372A +S31540017FB0C22C2027030D0D4D82106237C4042024A4 +S31540017FC080A0800102800005030000107FFFA67398 +S31540017FD09010202E0300001082106041C2342020F0 +S31540017FE00310104C82106233C404C00080A080018B +S31540017FF002800005030000107FFFA6689010202F25 +S315400180000300001082106243C23420220310105034 +S3154001801082106243C404C00080A080010280000532 +S31540018020030000117FFFA65D901020300300001170 +S3154001803082106045C23420240311114D82106237EB +S31540018040C404202480A080010280000503000011A1 +S315400180507FFFA65290102031030000118210624723 +S31540018060C23420260311115182106247C4042024D0 +S3154001807080A0800102800004010000007FFFA64726 +S315400180809010203281D82000C205A1A080A06000B6 +S315400180900480001B80A5200025100124191001240D +S315400180A0A414A1A0981321AC8810200080A46000DC +S315400180B09B2920100480000C82102000C40300007C +S315400180C085290002840040028528A0028610400DC1 +S315400180D082006001C624000280A0401132BFFFF930 +S315400180E0C4030000C20480008801200180A040042E +S315400180F014BFFFF080A4600080A5200012800028F4 +S31540018100230000107FFFE54490102000808A001173 +S3154001811012BFFFFDC205A1A080A060000480001B24 +S31540018120010000002510012427100124A414A1A058 +S31540018130A614E18C10800006A2102000A204600162 +S3154001814080A040110480001101000000921000112E +S315400181507FFFFDF890100010C204C000901C00087B +S31540018160808A000132BFFFF6C20480007FFFA60B62 +S3154001817090102033C2048000A204600180A0401107 +S3154001818014BFFFF4921000117FFFE52390102000E9 +S315400181909212200F7FFFE5229010200081C7E00850 +S315400181A091E820009FC20000A604E00180A480134C +S315400181B004800008832CE002D00700019FC2000022 +S315400181C0A604E00180A4801314BFFFFC832CE002C7 +S315400181D07FFFE51190102000B616E1A4920A3FFCFC +S315400181E0A8102000901020007FFFE50DB810200058 +S315400181F0B207BFE810800005A610200080A48013B6 +S3154001820024800012A8052001921000137FFFFE482A +S3154001821090100017820A001580A0401512BFFFF882 +S31540018220A604E001C206C000901DC008900A0001E4 +S3154001823080A00008B8673FFF80A4801314BFFFF4F5 +S3154001824092100013A805200180A480140480000424 +S31540018250832D200210BFFFE8EE0640017FFFE4EECA +S3154001826090102000A6100008901020007FFFE4EC3B +S315400182709214E00380A720000280018301000000E0 +S31540018280A73CE013808CE0031280018501000000C9 +S3154001829081D82000250000307FFFE4DF90102000C8 +S315400182A0808A001212BFFFFDAA100008C205A1A0D4 +S315400182B080A060000480000F053FFFBF2510012408 +S315400182C0A6102000A414A1A0921000139010001033 +S315400182D07FFFFDDC94102000C2048000A604E0016B +S315400182E080A0401314BFFFFA92100013053FFFBF51 +S315400182F0821020008410A36884078002C0204002B7 +S315400183008200600480A0607C12BFFFFD0100000076 +S3154001831082102005C224000082102001C2242004BC +S3154001832082102002C224200882102003C224200C7D +S31540018330901000107FFFFD8DA804200480A220002C +S315400183400280014A01000000C204000080A06005CD +S3154001835002800004010000007FFFA59090102006D6 +S315400183607FFFFD829010001080A2200012800199AB +S31540018370C205A1A080A06000048000120100000097 +S3154001838025100124A6102000A414A1A092100013C8 +S31540018390941020007FFFFD9C901000109210001356 +S315400183A0901000147FFFFD9894102000C2048000B5 +S315400183B0A604E00180A0401314BFFFF692100013FB +S315400183C07FFFE4AB90100010A60420207FFFE4A8B5 +S315400183D0901000137FFFE4A6900420407FFFE4A4A1 +S315400183E090042060C205A1A080A0600004800180A5 +S315400183F0B810200025100124A414A1A0AE1020001D +S31540018400921000177FFFFD3D90100010C2048000BE +S31540018410901A200580A00008AE05E001B8673FFF2D +S3154001842080A0401714BFFFF89210001780A72000C4 +S315400184300280016F01000000033FFFBF82106368A5 +S31540018440C41F8001C43FBFA8C207BFA880A0600562 +S315400184501280000601000000C207BFAC80A0600187 +S3154001846002800005C205A1A07FFFA54C90102009FE +S31540018470C205A1A080A06000048000382510012417 +S31540018480B8102000A414A1A0AE102000921000172D +S315400184907FFFFD1A90100014C2048000901A20013B +S315400184A080A00008AE05E001B8673FFF80A04017F5 +S315400184B014BFFFF89210001780A7200112800027F1 +S315400184C0833D6013808860031280002A010000000A +S315400184D0C2042004C224000082102005C2240000E8 +S315400184E090102001D024200482102002C2242008AA +S315400184F082102003C224200C92100011400003B3C5 +S31540018500912A001DA52A2002032EEEEE821063BB9E +S31540018510C22400127FFFFD159010001080A220009A +S315400185201280013701000000C4040012032EEEEE52 +S31540018530A93D600C821063BB80A0800102BFFDFA99 +S31540018540A80D2003901020127FFFA514A93D600CB1 +S3154001855010BFFDF5A80D20037FFFA5109010200A3E +S31540018560833D60138088600302BFFFDA010000008B +S315400185707FFFE42990102000033FFFF08210603F07 +S31540018580920A00017FFFE4269010200092102000FD +S3154001859094102000AA07BFA87FFFFD1B901000156D +S315400185A07FFFE41D901020000303C00092120001DA +S315400185B07FFFE41B90102000C205A1A080A06000AF +S315400185C00480000F8210200125100124A8102000EC +S315400185D0A414A1A092100014901000157FFFFD0A6B +S315400185E094102005C2048000A805200180A04014F3 +S315400185F014BFFFFA9210001482102001C22FBFA8A7 +S315400186000300400082106005C407BFA880A0800116 +S3154001861002800004010000007FFFA4E09010200BBF +S315400186207FFFE3FD90102000833A20068208600315 +S3154001863080A0600102800004010000007FFFA4D7F2 +S315400186409010200C7FFFE3F4901020000303C0003C +S3154001865025000030922A00017FFFE3F190102000AF +S315400186607FFFE3ED90102000808A001212BFFFFDCC +S3154001867092102000941020007FFFFCE3901000151B +S315400186807FFFE3E5901020002503C00092120012FF +S315400186907FFFE3E3901020007FFFE3DF901020008F +S315400186A0808A001202BFFFFDAE100008C205A1A0DC +S315400186B080A060000480001025100124B81020011C +S315400186C0B92F0011A414A1A0B8073FFFA81020009C +S315400186D092100014901000157FFFFCDA9410001CD4 +S315400186E0C2048000A805200180A0401414BFFFFAEF +S315400186F0921000141303C00090102000922DC0095F +S315400187007FFFE3C72503C0007FFFE3C3901020002E +S31540018710808A001212BFFFFD01000000C407BFA8F6 +S31540018720030040008210600580A0800102800004A1 +S31540018730010000007FFFA4999010200D7FFFE3B652 +S3154001874090102000833A20088208600380A06001CF +S3154001875002800005841020117FFFA4909010200F05 +S3154001876084102011861020559010200025000030DD +S31540018770C43FBFF87FFFE3A801000000033C3FFF71 +S315400187800503C0008210633F820A00019010200059 +S315400187907FFFE3A3921040027FFFE39F90102000EA +S315400187A0808A001212BFFFFDAE07BFF87FFFE3BE0E +S315400187B090100017C205A1A080A060000480000FA0 +S315400187C00100000025100124AA07BFFCA414A1A0A2 +S315400187D0A810200092100014901000157FFFFC8A0B +S315400187E094102055C2048000A805200180A04014A1 +S315400187F014BFFFFA921000147FFFE3AB90100017ED +S3154001880080A220110280008180A260557FFFA4636F +S31540018810901020107FFFE38090102000833A2006BD +S315400188208208600380A0600102800004A410000851 +S315400188307FFFA45A90102010133C3FF09010200067 +S315400188409212603F920C80097FFFE375250000304C +S315400188507FFFE37190102000808A001212BFFFFD56 +S31540018860AA10000830BFFF1B7FFFA44C90102005C3 +S31540018870C204000080A0600512BFFEB801000000DE +S3154001888030BFFEB87FFFA44590102001A73CE013FE +S31540018890808CE00302BFFE7F010000007FFFE35EA4 +S315400188A090102000133FFFF0AA1000089212603F7B +S315400188B0920A00097FFFE35A901020007FFFE2B140 +S315400188C0A810001A0303C000133C3FFF901020007C +S315400188D0921263FC920D4009A61020007FFFE350DF +S315400188E09212400192100013901000147FFFFC7207 +S315400188F094102000A604E00180A4801334BFFFFB3E +S3154001890092100013901020001303C0007FFFE34430 +S31540018910921540097FFFE29B010000007FFFE33E85 +S3154001892090102000833A200A8208600380A06001EB +S3154001893002800005250000307FFFA4189010200218 +S31540018940250000307FFFE33490102000808A00121A +S3154001895012BFFFFD0100000001000000920A3FFC2A +S315400189607FFFE32F901020009010001492102000FA +S315400189707FFFFC6094102000010000007FFFE3268A +S3154001898090102000033C3FFF821063FC820A0001E5 +S31540018990901020007FFFE322921060030100000047 +S315400189A07FFFE278010000007FFFE31B901020006B +S315400189B0833A200C8208600380A0600102BFFE3525 +S315400189C0010000007FFFA3F59010200330BFFE3168 +S315400189D07FFFA3F290102007C205A1A080A06000EE +S315400189E034BFFE692510012430BFFE767FFFA3EB1D +S315400189F09010200810BFFE92033FFFBF7FFFA3E701 +S31540018A009010201130BFFEC912BFFF810100000046 +S31540018A1030BFFF819DE3BFA07FFFFC5301000000F3 +S31540018A2013002040B01000089212600F7FFFE2FC55 +S31540018A309010200081C7E00881E800009DE3BFA0B7 +S31540018A407FFFA3C81100412C82102007EC062004A9 +S31540018A50E0062004C2262008AC0DA003AC05A00107 +S31540018A6001000000C02600007FFFA3C59010200A28 +S31540018A700300020084103FFFB8060001C42600012E +S31540018A80A13C2002292AAAAAA00C27FFA81522AA9E +S31540018A902B155555A12C2008AA1561558810001C87 +S31540018AA0C2060001A8084014AA0840159A102000E1 +S31540018AB080A420002280000D9A03600186012020B7 +S31540018AC08410000482102000EA208000E820C000C3 +S31540018AD0820060108400A04080A0401006BFFFFBCA +S31540018AE08600E0409A03600180A5800D14BFFFF126 +S31540018AF0880120043B000200AE102000BA17602016 +S31540018B00BA06001D80A4200022800017AE05E001B0 +S31540018B10A610001CA410001DA2102000C204C00013 +S31540018B2080A0401502800004010000007FFFA39B46 +S31540018B3090102001C204800080A0401422800005CC +S31540018B40A20460107FFFA39590102001A20460103B +S31540018B50A604E04080A4401006BFFFF1A404A04053 +S31540018B60AE05E00180A5801714BFFFE7BA07600490 +S31540018B707FFFA3839010200C2F0008001B1555552D +S31540018B80AE060017092AAAAA9A136155881122AA84 +S31540018B9098100017961020001500020080A42000AE +S31540018BA02280000D9602E001860320048410000C09 +S31540018BB082102000DA208000C820C00082006002B6 +S31540018BC08400A00880A0401006BFFFFB8600E00895 +S31540018BD09602E00180A5800B14BFFFF19803000ABD +S31540018BE02B155555292AAAAAAA156155A81522AAAF +S31540018BF0BA1020003900020080A42000228000170C +S31540018C00BA076001A605E004A4100017A2102000CF +S31540018C10C204800080A040150280000401000000CB +S31540018C207FFFA35E90102003C204C00080A04014C1 +S31540018C3022800005A20460027FFFA3589010200302 +S31540018C40A2046002A404A00880A4401006BFFFF15C +S31540018C50A604E008BA07600180A5801D14BFFFE79E +S31540018C60AE05C01C2F0008001B155555AE15E00476 +S31540018C70092AAAAAAE0600179A136155881122AA93 +S31540018C8098100017961020001500020080A42000BD +S31540018C902280000D9602E00186033FFC8410000C01 +S31540018CA082102000DA208000C820C00082006002C5 +S31540018CB08400A00880A0401006BFFFFB8600E008A4 +S31540018CC09602E00180A5800B14BFFFF19803000ACC +S31540018CD02B155555292AAAAAAA156155A81522AABE +S31540018CE0BA1020003900020080A42000228000171B +S31540018CF0BA076001A605FFFCA4100017A2102000C8 +S31540018D00C204800080A040150280000401000000DA +S31540018D107FFFA32290102004C204C00080A040140B +S31540018D2022800005A20460027FFFA31C901020044C +S31540018D30A2046002A404A00880A4401006BFFFF16B +S31540018D40A604E008BA07600180A5801D14BFFFE7AD +S31540018D50AE05C01C82102005C22620080320000053 +S31540018D60C226000081C7E00881E80000033FFFBF3B +S31540018D70821063609DE380017FFFFAD425200000C5 +S31540018D804000016E2D0000307FFFE2239010200845 +S31540018D90AA1000087FFFE2209010200C7FFFA31B42 +S31540018DA0AE100008912A20047FFFA2F59002200C04 +S31540018DB082102001873D60148608E00F8600E00A94 +S31540018DC0A73D6010A13D6018853DE014A60CE00763 +S31540018DD08408A00FA604E0028400A00AA728401335 +S31540018DE0A00C2003A93DE010A0042001A80D2007F6 +S31540018DF0A12C0003A8052002AA2480108604FFFFA7 +S31540018E00A9284014A33DE01882053FFFA20C600348 +S31540018E10A2046001AA154003A32C4002A424801198 +S31540018E20A41480017FFFE1FC90102000808A001687 +S31540018E3012BFFFFD133FFFBF90100011921263C096 +S31540018E4015155555920780097FFFE1869412A15564 +S31540018E5080A220001280007001000000133FFFBF76 +S31540018E6090100011921263C0152AAAAA920780098E +S31540018E707FFFE1909412A2AA80A220001280006393 +S31540018E80010000007FFFA2E101000000912A2004B9 +S31540018E907FFFA2BB9002200A40000125010000008D +S31540018EA0032AAAAA981062AA8210620090100011A1 +S31540018EB0920C8001941000127FFFE1A796100014D6 +S31540018EC080A220001280004D010000000315555577 +S31540018ED09810615582106100901000119410001293 +S31540018EE0961000147FFFE19C920C800180A2200025 +S31540018EF01280003F010000007FFFA2C40100000074 +S31540018F00912A20047FFFA29E9002200B9010001010 +S31540018F10131555557FFFE1779212615580A22000C6 +S31540018F201280002F0100000090100010132AAAAAF7 +S31540018F307FFFE170921262AA80A220001280002572 +S31540018F40010000007FFFA2B101000000912A200428 +S31540018F507FFFA28B900220099010001092100015FD +S31540018F6094100013172AAAAA7FFFE16E9612E2AA6D +S31540018F7080A2200012800013010000009010001012 +S31540018F809210001594100013171555557FFFE16592 +S31540018F909612E15580A220000280000401000000E3 +S31540018FA07FFFA27E901020087FFFFA48B010200074 +S31540018FB0400000E20100000081C7E00881E80000AE +S31540018FC07FFFA2769010200710BFFFEE9010001091 +S31540018FD07FFFA2729010200630BFFFDB7FFFA26F9A +S31540018FE09010200510BFFFD2901000107FFFA26B9A +S31540018FF09010200430BFFFC17FFFA268901020036C +S3154001900010BFFFB4031555557FFFA264901020028F +S3154001901030BFFF9D7FFFA2619010200110BFFF91DD +S31540019020133FFFBF81C3E0089144400080800000A8 +S31540019030151001209412A1EC9010200092102246A6 +S3154001904081800000010000000100000001000000D5 +S31540019050D00280009122400881C3E008010000004F +S3154001906081800000901020018090200180F0200135 +S315400190701280004B010000000100000001000000C9 +S31540019080010000008090200180F8200112800044F8 +S315400190900100000001000000010000000100000085 +S315400190A08090200180FA3FFF010000001680003CBD +S315400190B00100000001000000010000000100000065 +S315400190C08180000090102001809020010100000065 +S315400190D080D0200112800032010000000100000012 +S315400190E0010000000100000080D220010280002C16 +S315400190F00100000080D23FFF1680002901000000D8 +S3154001910080DA3FFF9340000080A27FFF1280002457 +S315400191100100000080D23FFF934800009332601463 +S31540019120920A600F80A260081280001D01000000B3 +S315400191308180000090102001945220049452A00492 +S315400191409452A00496A2A04012800015010000008E +S31540019150818000009010200280A000003280001023 +S315400191609052000880A220021280000D01000000EA +S31540019170818000009010200280A0000001000000C4 +S31540019180328000079052000880A22002128000041B +S315400191900100000081C3E0089010200181C3E0086E +S315400191A0901000001315555592126155A582400045 +S315400191B0010000000100000001000000954480000C +S315400191C080A2400A1280004301000000923A40000A +S315400191D0A5824000010000000100000001000000DE +S315400191E09544800080A2400A1280003A01000000A6 +S315400191F01100003F901223FFA580000081800000EE +S3154001920001000000010000000100000093F23FFF51 +S315400192109A10000993F23FFF93F23FFF93F23FFF0B +S3154001922093F23FFF93F23FFF93F23FFF93F23FFFEB +S315400192309940000097448000153FFC009412A00815 +S3154001924080A2400A1280002380A2400B1280002196 +S3154001925080A320071280001F113FFF80901220013A +S3154001926080A340081280001B1100003F901223FF8B +S31540019270A58000008180000001000000010000007F +S315400192800100000093FA3FFF93FA3FFF93FA3FFF35 +S3154001929093FA3FFF93FA3FFF93FA3FFF93FA3FFF5B +S315400192A093FA3FFF994000009744800080A26008EE +S315400192B01280000880A260081280000680A3200068 +S315400192C0128000040100000081C3E00890102001D3 +S315400192D081C3E008901000008180000090102002B8 +S315400192E080A00000328000109072000880A2200207 +S315400192F01280000D010000008180000090102002C4 +S3154001930080A0000001000000328000079072000832 +S3154001931080A22002128000040100000081C3E008FF +S315400193209010200181C3E00890100000C0A00040C9 +S3154001933081C3E00801000000110020409012200F77 +S31540019340D0A0004081C3E008010000009DE3BFA01A +S315400193507FFFE0B190102008A21000087FFFE0AE29 +S315400193609010200CA0100008C0A00040833C60145F +S315400193708208600F8200600A913C6018900A2003BF +S31540019380900220017FFFE01B912A0001833C2014BB +S315400193908208600F8200600A913C2018900A2003DF +S315400193A0900220017FFFE021912A00017FFFF947CA +S315400193B001000000110020409012200FD0A0004073 +S315400193C081C7E00881E80000981200098182000007 +S315400193D09AAB2FFF02800025988800009923000947 +S315400193E09923000999230009992300099923000922 +S315400193F09923000999230009992300099923000912 +S315400194009923000999230009992300099923000901 +S3154001941099230009992300099923000999230009F1 +S3154001942099230009992300099923000999230009E1 +S3154001943099230009992300099923000999230009D1 +S3154001944099230009992300099923000999230009C1 +S3154001945099230009992300099923000999230000BA +S3154001946081C3E0089140000099230009992300092E +S315400194709923000999230009992300099923000991 +S315400194809923000999230009992300099923000981 +S315400194909923000999230009992300009B40000064 +S315400194A0992B200C9B33601481C3E0089013400C28 +S315400194B01080000B8610200080924008168000081C +S315400194C086100008809240001680000480920000B9 +S315400194D01680000392200009902000089A924000CD +S315400194E0128000059610000891D0200281C3E00841 +S315400194F09010000080A2C00D0A80009594100000D3 +S315400195000302000080A2C0010A80002898100000D2 +S3154001951080A340011A80000D841020019B2B60041A +S3154001952010BFFFFC980320019A83400D1A80000763 +S315400195308400A001832860049B3360019A034001A3 +S31540019540108000078420A00180A3400B0ABFFFF7CB +S3154001955001000000028000020100000084A0A00179 +S3154001956006800076010000009622C00D941020016D +S315400195701080000A01000000952AA001068000051E +S315400195809B3360019622C00D108000049402A00115 +S315400195909602C00D9422A00184A0A00116BFFFF738 +S315400195A08092C000308000659B2B600480A3400BF5 +S315400195B008BFFFFE988320010280006598232001A1 +S315400195C08092C000952AA0040680002F9B3360013B +S315400195D096A2C00D068000179B33600196A2C00D6E +S315400195E00680000B9B33600196A2C00D06800005E4 +S315400195F09B33600196A2C00D108000509402A00FCB +S315400196009682C00D1080004D9402A00D9682C00D29 +S31540019610068000059B33600196A2C00D108000476D +S315400196209402A00B9682C00D108000449402A009BA +S315400196309682C00D0680000B9B33600196A2C00D39 +S31540019640068000059B33600196A2C00D1080003B49 +S315400196509402A0079682C00D108000389402A0059E +S315400196609682C00D068000059B33600196A2C00D0F +S31540019670108000329402A0039682C00D1080002F04 +S315400196809402A0019682C00D068000179B336001AB +S3154001969096A2C00D0680000B9B33600196A2C00DB9 +S315400196A0068000059B33600196A2C00D1080002301 +S315400196B09402BFFF9682C00D108000209402BFFD28 +S315400196C09682C00D068000059B33600196A2C00DAF +S315400196D01080001A9402BFFB9682C00D10800017BD +S315400196E09402BFF99682C00D0680000B9B33600140 +S315400196F096A2C00D068000059B33600196A2C00D5F +S315400197001080000E9402BFF79682C00D1080000BA8 +S315400197109402BFF59682C00D068000059B33600119 +S3154001972096A2C00D108000059402BFF39682C00D2B +S31540019730108000029402BFF198A3200116BFFFA238 +S315400197408092C000268000029602C0098090C00027 +S31540019750268000029620000B81C3E0089010000B82 +S3154001976092100008941020009010200096102000BE +S315400197708213C000400000429E10400001000000DC +S315400197809DE3BFA080A6A00F9A100018881000196B +S31540019790088000068610001A8216401880886003E9 +S315400197A00280000D8410001980A0E00002800008AC +S315400197B082102000C4090001C42B400182006001CF +S315400197C080A0400332BFFFFDC409000181C7E00804 +S315400197D081E8000082100018DA008000DA2040009B +S315400197E08600FFF080A0E00FDA00A004DA206004D2 +S315400197F0DA00A008DA206008DA00A00CDA20600C52 +S315400198008400A01018BFFFF582006010B406BFF0B7 +S315400198109B36A004832B60049A036001B426800121 +S315400198209B2B600480A6A0038806400D8610001A73 +S3154001983008BFFFDE9A06000D82102000C401000118 +S31540019840C4234001820060048426800180A0A003D5 +S3154001985038BFFFFCC4010001B406BFFC8336A00239 +S315400198608728600282006001862680038328600281 +S315400198708801000110BFFFCD9A0340019DE3BFA0BF +S3154001988021100123400005F7901420EC03100070CD +S31540019890E2006090D004614880A220002280003D11 +S315400198A09004614CC202200480A0601F1480001EF7 +S315400198B00100000080A620000280001284006002A0 +S315400198C0C4022004820060228600A04289286002E8 +S315400198D08728E002C2022188F4220004F62200030E +S315400198E0861020018728C00282104003C2222188A7 +S315400198F080A62002028000198210000284006002C4 +S315400199008528A00282006001C2222004F2220002C0 +S31540019910B0102000400005E9901420EC81C7E00812 +S3154001992081E80000400000289010219080A220008C +S315400199302280001A901420ECC2046148C222000021 +S31540019940D0246148C0222004C0222188C022218C13 +S3154001995010BFFFD982102000C202218C861040031D +S3154001996082100002840060028528A002C622218C52 +S3154001997082006001F2220002C2222004B0102000BF +S31540019980400005CE901420EC81C7E00881E8000034 +S3154001999010BFFFC5D0246148400005C8B0103FFF45 +S315400199A081C7E00881E800009210000803100120F9 +S315400199B0D00062208213C000400002179E10400072 +S315400199C0010000009210000803100120D00062201F +S315400199D08213C000400000039E10400001000000B9 +S315400199E09DE3BFA0841020008206600B80A0601614 +S315400199F008800004A0102010A0087FF88534201F9D +S31540019A0080A400190A8000468088A0FF1280004485 +S31540019A1001000000400001AF9010001880A421F71A +S31540019A20188000418334200923100121A214637850 +S31540019A3082044010E400600C80A480010280010F82 +S31540019A4099342003C604A004C404A00CC204A0088F +S31540019A508608FFFC86048003C800E00488112001C3 +S31540019A60C220A008C820E004C420600C9010001851 +S31540019A7040000192B004A00881C7E00881E80000D7 +S31540019A80E6046008E804E004A80D3FFC82250010C6 +S31540019A9080A0600F148000D280A40014031001231B +S31540019AA02F100122EA006160C205E384AA05601015 +S31540019AB080A07FFF02800004AA054010AA056FFF1F +S31540019AC0AA0D7000901000184000018892100015F0 +S31540019AD080A23FFF02800009A41000088404C0143C +S31540019AE080A08008088000EC2D10012380A440133B +S31540019AF0028000EAC205A16CC2046008C400600489 +S31540019B008408BFFC8220801080A0600F148001224F +S31540019B1080A40002400001699010001881C7E00846 +S31540019B2091E820009934200380A060000280000F54 +S31540019B30872B200380A06004088000929934200678 +S31540019B409800605B80A0601408800008872B200382 +S31540019B5080A060541880011380A061549934200C70 +S31540019B609803206E872B200323100121A2146378CA +S31540019B7086044003E400E00C80A0C0123280000B52 +S31540019B80C404A004108000109803200136800068A8 +S31540019B90C604A00CE404A00C80A0C0122280000AD6 +S31540019BA098032001C404A0048408BFFC82208010CD +S31540019BB080A0600F04BFFFF680A0600098033FFFBE +S31540019BC098032001071001218610E380E400E00894 +S31540019BD080A0C0122280002AC2046004C404A004EA +S31540019BE08408BFFC8220801080A0600F1480008A08 +S31540019BF080A06000C620E00C16800059C620E0080F +S31540019C0080A0A1FF288000628530A0038330A0098F +S31540019C1080A06004188000E98800605B8930A00656 +S31540019C20880120389B2920039A04400DC20360080D +S31540019C3080A0400D32800008C8006004108000E911 +S31540019C40DA04600480A3400122800008C400600C4D +S31540019C50C800600488093FFC80A080042ABFFFFA3F +S31540019C60C2006008C400600CC424A00CC224A00831 +S31540019C70E420600CE420A008C2046004853B200275 +S31540019C80881020018929000280A040042ABFFF7E56 +S31540019C90E6046008808840042280004B980B3FFC14 +S31540019CA0952B20039610000C9404400A9A10000A42 +S31540019CB0E403600C80A340123280000BC404A0046C +S31540019CC0108000589602E00136800019C604A00CA7 +S31540019CD0E404A00C80A34012228000529602E001C7 +S31540019CE0C404A0048408BFFC8220801080A0600FB9 +S31540019CF004BFFFF680A06000DA04A00CC804A008E7 +S31540019D0084048010A0142001C8236008DA21200CA5 +S31540019D10C420E00CC420E008E024A004C220800155 +S31540019D20C620A00810800010C620A00CC204A008BE +S31540019D3084048002C800A00488112001C220E008E2 +S31540019D40C820A004C620600C90100018400000DB1B +S31540019D50B004A00881C7E00881E8000084048002BD +S31540019D60C200A00482106001C220A0049010001815 +S31540019D70400000D2B004A00881C7E00881E8000095 +S31540019D809803203810BFFF79872B20038928A00329 +S31540019D9088044004DA012008D6046004C824A00CD3 +S31540019DA0DA24A0088538A00282102001E423600C41 +S31540019DB083284002E42120088210400B10BFFFB0E7 +S31540019DC0C2246004892920018088400402BFFFFE25 +S31540019DD09803200410BFFFB4952B200338BFFF31F1 +S31540019DE003100123E404600884048010A0142001B8 +S31540019DF082106001E024A004C220A0049010001843 +S31540019E00C4246008400000ADB004A00881C7E00842 +S31540019E1081E800008404801010BFFFBEA014200119 +S31540019E20808AE00312BFFFA39A04A008808B200317 +S31540019E300280009C8202BFF8D400600880A28001A3 +S31540019E4022BFFFFB98033FFFC2046004892920011A +S31540019E5080A1000118BFFF0B80A1200022BFFF0A8D +S31540019E60E604600880890001228000928929200148 +S31540019E7010BFFF8C9810000B8204A008E400600C10 +S31540019E8080A0401202BFFF509803200210BFFEEF90 +S31540019E90C604A004C205A16C8205400180A08012BF +S31540019EA002800067C225A16CC605E38480A0FFFF3E +S31540019EB02280006B0310012282048001842040022B +S31540019EC0C425A16C848CA00702800006030000040F +S31540019ED08210200882204002A40480018220700062 +S31540019EE0AA04801590100018AA0D6FFFAA204015EC +S31540019EF04000007E9210001580A23FFF0280006064 +S31540019F008410200184220012840080158410A0014F +S31540019F10C205A16C82054001C225A16CC424A004DE +S31540019F2080A4401302800010E424600880A5200F1D +S31540019F300880003A84053FF48408BFF88604C002CD +S31540019F40C804E0048809200188108004C824E0047C +S31540019F5088102005C820E00880A0A00F1880004284 +S31540019F60C820E00405100123C600A16480A0400377 +S31540019F7038800002C220A16405100123C600A168F1 +S31540019F8080A0400338BFFEDDC220A16810BFFEDCC1 +S31540019F90C204600828BFFF95E404600830BFFEDEB6 +S31540019FA01880001780A065549934200F98032077B4 +S31540019FB010BFFEEE872B200380A0601408BFFF1B55 +S31540019FC09B29200380A060541880001780A061540B +S31540019FD08930A00C8801206E10BFFF149B292003F5 +S31540019FE08939200284102001852880048413400287 +S31540019FF0C424600410BFFF1D84100001861023F0A5 +S3154001A00018BFFEDA9810207E993420129803207CDE +S3154001A01010BFFED6872B20038210200110BFFEB74A +S3154001A020C224A0041880001880A065548930A00F6E +S3154001A0308801207710BFFEFD9B2920038088AFFF52 +S3154001A04012BFFF9BC605E384C4046008860540141D +S3154001A0508610E00110BFFFC4C620A00410BFFF9ABE +S3154001A060E42063849204E0084000006B90100018DD +S3154001A0700310012310BFFFBCC200616C10BFFFA5D6 +S3154001A080AA1020009A1023F018BFFEE88810207EFF +S3154001A0908930A0128801207C10BFFEE49B29200351 +S3154001A0A0C20460048228400410BFFF68C2246004D1 +S3154001A0B010BFFF6D9602E004111001229012238811 +S3154001A0C08213C000400003FD9E10400001000000C5 +S3154001A0D011100122901223888213C000400003E12F +S3154001A0E09E104000010000009DE3BFA02110012405 +S3154001A0F0901000194000015DC02421B080A23FFFAD +S3154001A10002800004C20421B081C7E00891E800083A +S3154001A11080A0600002BFFFFD01000000C2260000D2 +S3154001A12081C7E00891E800089DE3BFA07FFFFFE9F2 +S3154001A1309010001821100121A0142378C204200890 +S3154001A140E2006004A20C7FFC82046FEFB22040194A +S3154001A150B20E7000B206700080A66FFF048000093F +S3154001A160901000187FFFFFE192102000C2042008E2 +S3154001A1708200401180A20001028000079010001861 +S3154001A180901000187FFFFFCDB010200081C7E00876 +S3154001A19081E800007FFFFFD59220001980A23FFF92 +S3154001A1A00280000EA2244019C4042008A2146001B2 +S3154001A1B003100123E220A00490100018B0102001E2 +S3154001A1C0C400616CB22080197FFFFFBCF220616C34 +S3154001A1D081C7E00881E80000901000187FFFFFC3A7 +S3154001A1E092102000C20420088422000180A0A00F02 +S3154001A1F004BFFFE407100122C600E3849022000356 +S3154001A200071001238410A001D020E16C10BFFFDDAF +S3154001A210C42060049DE3BFA080A660000280005078 +S3154001A220010000007FFFFFAB9010001884067FF805 +S3154001A230D800A004820B3FFE09100121860080014F +S3154001A24088112378DA00E004D601200880A2C003F1 +S3154001A250028000639A0B7FFCDA20E004808B2001A8 +S3154001A2601280000E98102000D8067FF88420800CBA +S3154001A2708200400CD600A0089801200880A2C00C9C +S3154001A2800280000698102001D400A00CD422E00CD4 +S3154001A29098102000D622A0089600C00DD602E004F0 +S3154001A2A0808AE0013280000A8610600180A3200086 +S3154001A2B00280002D8200400DDA00E008C600E00C65 +S3154001A2C0C623600CDA20E00886106001C2208001B6 +S3154001A2D080A3200012800020C620A00480A061FF38 +S3154001A2E028800030833060038730600980A0E00415 +S3154001A2F0188000529800E05B993060069803203838 +S3154001A3009B2B20039A01000DC603600880A0C00D57 +S3154001A31032800008C800E00410800052DA012004AF +S3154001A32080A3400322800008C200E00CC800E0047C +S3154001A33088093FFC80A040042ABFFFFAC600E00816 +S3154001A340C200E00CC220A00CC620A008C420E00C2C +S3154001A350C42060087FFFFF5981E8000081C7E008FB +S3154001A36081E80000DA00E008171001219612E38027 +S3154001A37080A3400B32BFFFD3C600E00CC423600C60 +S3154001A380C4236008C2208001DA20A008821060013F +S3154001A390DA20A00CC220A0047FFFFF4881E800001C +S3154001A3A08728600386010003DA00E008C620A00C76 +S3154001A3B0DA20A008D8012004C423600CC420E00898 +S3154001A3C083386002841020018328800182130001B2 +S3154001A3D0C22120047FFFFF3981E80000808B2001E4 +S3154001A3E01280000982034001D8067FF88420800C40 +S3154001A3F0DA00A00CC600A0088200400CC623600803 +S3154001A400DA20E00CC421200886106001C620A00491 +S3154001A41005100122C400A38080A040020ABFFFCEDE +S3154001A42003100123D20061607FFFFF4090100018A6 +S3154001A4307FFFFF2281E8000080A0E01408BFFFB241 +S3154001A4409B2B200380A0E0541880000D80A0E1548E +S3154001A4509930600C9803206E10BFFFAB9B2B2003F5 +S3154001A460993B2002821020018328400C821340012F +S3154001A470C221200410BFFFB48210000318800006D9 +S3154001A48080A0E5549930600F9803207710BFFF9E56 +S3154001A4909B2B20039A1023F018BFFF9B9810207E18 +S3154001A4A0993060129803207C10BFFF979B2B2003A5 +S3154001A4B09DE3BFA080A620000280001F031001205B +S3154001A4C0E406214880A4A00022800014C206203C54 +S3154001A4D0C204A004A0807FFF2C80000CE40480000D +S3154001A4E0A2006001A32C6002A2048011C2044000B4 +S3154001A4F09FC04000A2047FFCA0843FFF3CBFFFFDFC +S3154001A500C2044000E404800080A4A00032BFFFF2F0 +S3154001A510C204A004C206203C80A060000280000460 +S3154001A520010000009FC040009010001881C7E0085C +S3154001A53081E8000010BFFFE3F00062209DE3BFA069 +S3154001A540D206400080A260000280000401000000A3 +S3154001A5507FFFFFFB901000187FFFFF2F81E800006F +S3154001A560010000009DE3BFA003100120C20062204C +S3154001A57080A600010280003201000000D206204C74 +S3154001A58080A2600022800016E0062148A210200029 +S3154001A590E002401180A420002280000BA204600446 +S3154001A5A092100010901000187FFFFF1BE00400007E +S3154001A5B080A4200012BFFFFC92100010D206204C4E +S3154001A5C0A204600480A4603C32BFFFF3E002401164 +S3154001A5D07FFFFF1190100018E006214880A420005B +S3154001A5E02280000ED2062054A206214C80A40011DE +S3154001A5F02280000AD20620549210001090100018B2 +S3154001A6007FFFFF05E004000080A4401012BFFFFC5D +S3154001A61092100010D206205480A2600022800005CC +S3154001A620C20620387FFFFEFC90100018C206203873 +S3154001A63080A0600032800004C206203C81C7E00849 +S3154001A64081E800009FC0400090100018F20622E009 +S3154001A65080A6600002BFFFFA010000007FFFFFB83D +S3154001A66081E800000100000005100124C200A1B4E8 +S3154001A67080A060002280000603100125900040085A +S3154001A680D020A1B481C3E008901000018210616816 +S3154001A69090004008C220A1B4D020A1B481C3E008F3 +S3154001A6A090100001A7500000AE1000018334E00174 +S3154001A6B029100123E805203CA92CC014821500016C +S3154001A6C081E000008190400001000000010000008F +S3154001A6D001000000E03BA000E43BA008E83BA010DD +S3154001A6E0EC3BA018F03BA020F43BA028F83BA0305F +S3154001A6F0FC3BA03881E800008210001781C440006D +S3154001A70081CC800001000000010000000100000032 +S3154001A710A7500000A92CE0012B100123EA05603C5B +S3154001A720AB34C015AA1540148195400001000000C4 +S3154001A730010000000100000081E8000081E80000FE +S3154001A740E01BA000E41BA008E81BA010EC1BA0180E +S3154001A750F01BA020F41BA028F81BA030FC1BA0383E +S3154001A76081E0000081E0000081C4400081CC80008E +S3154001A770A75000002910006CADC5231C0100000044 +S3154001A78027100123A614E018E024C000818C202064 +S3154001A7900100000001000000010000009DE3BFA090 +S3154001A7A09DE3BFA09DE3BFA09DE3BFA09DE3BFA0E6 +S3154001A7B09DE3BFA09DE3BFA081E8000081E80000C2 +S3154001A7C081E8000081E8000081E8000081E800009E +S3154001A7D081E8000027100123A614E018C024C00018 +S3154001A7E0E203A068A4046004E223A064E423A06811 +S3154001A7F0108002F1AC10000029100122A81523FC9B +S3154001A800C2252000C8252004E0252010E225201479 +S3154001A810E4252018E825201C81E800008348000033 +S3154001A82082106F0081886020010000000100000055 +S3154001A8300100000009100123C801203C81E000000D +S3154001A8408821200180A920FF028000030100000029 +S3154001A8500100000080A1000012BFFFF901000000C5 +S3154001A86009100123C801203C81E8000080A920FF8E +S3154001A8700280000301000000010000008821200140 +S3154001A88080A1000012BFFFF90100000081E0000035 +S3154001A89029100122A81523FCC8052004C205200061 +S3154001A8A0E0052010E2052014E4052018C025201CEF +S3154001A8B0818C200001000000010000000100000021 +S3154001A8C081C4800081CCA004A0142F00818C00009B +S3154001A8D001000000010000000100000081C4800069 +S3154001A8E081CCA00480A6600212800005A8142F0026 +S3154001A8F0818D0000B01420203080001F80A66003A7 +S3154001A90012800006A80E2F00AA2C2F00A81540146D +S3154001A910818D00003080001880A6600412800008F6 +S3154001A920A9480000A8152040818D000001000000C3 +S3154001A93001000000010000003080000F80A6600584 +S3154001A94012800008A9480000A82D2040818D0000F2 +S3154001A95001000000010000000100000030800006F7 +S3154001A96080A66006128000030100000030BFFFA3ED +S3154001A97091D0200081C4800081CCA0049210200394 +S3154001A98081C3E00891D020029210200281C3E008E1 +S3154001A99091D020029210200681C3E00891D0200276 +S3154001A9A081C3E0080100000081C3E0080100000006 +S3154001A9B081C3E00801000000AE25A010A7500000A9 +S3154001A9C02D10006AAC15A1CC2910006D81C520C49B +S3154001A9D0010000001110012390122024D202000030 +S3154001A9E092026001D2220000932DE008902C2F00A4 +S3154001A9F092120009111001239012201CD00200006E +S3154001AA0080A000082280000292126F00818A602095 +S3154001AA100100000001000000010000009010001735 +S3154001AA20400000379203A06092142F00818A602073 +S3154001AA300100000001000000010000001110012387 +S3154001AA4090122024D202000092226001D2220000FC +S3154001AA50108002BCAC1000009DE3BFA01B10012377 +S3154001AA60892E60029A13619480A6601F821020008D +S3154001AA7014800017C6034004B32E60041910012345 +S3154001AA8080A0E000981322140280000D8406400C39 +S3154001AA9080A0C00212800006821000031080000EC2 +S3154001AAA0C206400C2280000CC206400CC200600C5B +S3154001AAB080A0600012BFFFFC80A08001C423400437 +S3154001AAC0F026400CC620A00C8210200081C7E00869 +S3154001AAD091E80001F026400C81C7E00891E80001A9 +S3154001AAE0912A20020310012382106194C400400878 +S3154001AAF0C422600C81C3E008D22040089DE3BFA078 +S3154001AB00051001238210A02CC200600480A04018C9 +S3154001AB1022800040C400A02C80A620002280000292 +S3154001AB20B0100001A32E200203100123821061946C +S3154001AB30E000401180A42000028000342910012445 +S3154001AB402D1001242B10012427100124A8152014AF +S3154001AB50AC15A098AA15609C1080001DA614E0189B +S3154001AB60A41000138400A001C4248011C4058000F0 +S3154001AB7080A0A00022800006D20420089FC0800049 +S3154001AB8001000000C2040000D20420089010001801 +S3154001AB909FC0400094100019C205400080A060008B +S3154001ABA022800005C20480119FC0400001000000C0 +S3154001ABB0C204801182007FFFC2248011E004200C70 +S3154001ABC080A420000280001101000000C2040000A0 +S3154001ABD080A0600022BFFFFBE004200CC4050000FA +S3154001ABE080A0A00012BFFFDFC404C01180A0A00056 +S3154001ABF002BFFFDDA4100013E004200C80A4200056 +S3154001AC0032BFFFF4C204000081C7E00881E80000BA +S3154001AC10F000A0C010BFFFC1B00E201F8C10000F66 +S3154001AC20A74800008B34E0188A09600F80A16003B1 +S3154001AC3002800002108000399010200192102006F7 +S3154001AC40400002760100000080A000080280003327 +S3154001AC5001000000C2022010113FFC00820840089A +S3154001AC60110003FC8410400890100002921020014C +S3154001AC709410200C4000027F0100000080A00008D3 +S3154001AC8002800026010000004000028F9210000160 +S3154001AC900B1001238A116034D2214000901000022A +S3154001ACA09210200194102011400002720100000010 +S3154001ACB080A00008028000190100000040000282C5 +S3154001ACC092100001920260100B1001238A11602834 +S3154001ACD0D221400090100002921020019410200DC4 +S3154001ACE0400002640100000080A000080280000BC1 +S3154001ACF00100000040000274921000010B10012374 +S3154001AD008A11602CD2214000D40260109532A010E5 +S3154001AD10940AA00FD42160049E10000681C3E00866 +S3154001AD2001000000031001238210604882102001B7 +S3154001AD3091D0200081C3E008010000009DE3BFA03F +S3154001AD40051001248410A1B8C200A09080A0600023 +S3154001AD50028000278600A0941080000688102000FB +S3154001AD608801200180A100011A8000210100000014 +S3154001AD70D800C000DA0300009733601880A2C018DB +S3154001AD8012BFFFF88600E0049733600C960AEFFF86 +S3154001AD9080A2C01932BFFFF48801200180A6A0001D +S3154001ADA0028000039A0B600FDA268000C20320045A +S3154001ADB0860120648728E00284008003C400A00441 +S3154001ADC03100003F073FFC00B01623F0B0084018A1 +S3154001ADD082084003B12E20048330600CB00E00017E +S3154001ADE0B016000281C7E00881E8000081C7E0088B +S3154001ADF091E820009DE3BFA003100124C40060AC8C +S3154001AE0080A0A00012800078841020012310012424 +S3154001AE10C42060AC92102000A01461B8941023A401 +S3154001AE20400002379010001084102000821030003C +S3154001AE308728A00288040003C600400080A0E000E5 +S3154001AE400280000480A070E0C22120048400A00199 +S3154001AE5032BFFFF882006020C42461B8DA0420487A +S3154001AE6082103800840360128528A00286040002FD +S3154001AE70C400400080A0A0000280000480A078E0C9 +S3154001AE80C220E0049A03600112BFFFF782006020EE +S3154001AE9080A360000480003FDA2420482500003F5B +S3154001AEA08404204CA414A3F09E102000821020009C +S3154001AEB010800005230003FC80A340010480003577 +S3154001AEC08400A004C6008000C800C000D600E0107F +S3154001AED08731201880A0E00132BFFFF8820060016F +S3154001AEE08931200C88092FFF80A1200632BFFFF34C +S3154001AEF082006001D804209080A3203F3480000264 +S3154001AF00861020008088E0FF2280001E82006001BA +S3154001AF10A60AC01288102000A72CE010A60AC0136A +S3154001AF208614C011D600C00080A2E0000280001144 +S3154001AF3088012001D60420909002E0249202E06428 +S3154001AF409402E0A4912A2002932A60029004000808 +S3154001AF5092040009952AA0029404000A9602E0018F +S3154001AF60C6222004E6226004DE22A004D6242090D4 +S3154001AF7080A1200F0480001E9803200182006001F9 +S3154001AF809E03E00180A3400114BFFFCF8400A004CB +S3154001AF90901020019210200D941020007FFFFF6831 +S3154001AFA02110012380A2200032800002D024202CCF +S3154001AFB09010200192102011151001247FFFFF608F +S3154001AFC09412A0A880A2200002800003031001244D +S3154001AFD0D02060A4C204202C80A0600032800002F0 +S3154001AFE0C020604081C7E00881E8000080A3203F7F +S3154001AFF034BFFFE48200600110BFFFCB8600E0084A +S3154001B0009DE3BFA003100124C20060B08410001864 +S3154001B01080A0600002800006B0102000901000025F +S3154001B0209FC0400092100019B010000881C7E00887 +S3154001B03081E800009DE3BFA003100124C20060B473 +S3154001B04080A0600002800005841020009FC040005F +S3154001B050901000188410000881C7E00891E80002AA +S3154001B0609DE3BFA003100124C20060BC80A0600024 +S3154001B07002800005841020009FC0400090100018F7 +S3154001B0808410000881C7E00891E800029DE3BFA053 +S3154001B09003100124C20060B880A060000280000550 +S3154001B0A0841020009FC040009010001884100008B2 +S3154001B0B081C7E00891E800029DE3BFA00310012487 +S3154001B0C0C20060C080A0600002800005841020009C +S3154001B0D09FC04000901000188410000881C7E00806 +S3154001B0E091E800029DE3BFA003100124C20060C4A1 +S3154001B0F080A0600002800005841020009FC04000AF +S3154001B100901000188410000881C7E00891E80002F9 +S3154001B1109DE3BFA003100124C20060C880A0600067 +S3154001B12002800005841020009FC040009010001846 +S3154001B1308410000881C7E00891E800029DE3BFA0A2 +S3154001B14003100124C20060CC8410001880A0600066 +S3154001B15002800006B0102000901000029FC04000FF +S3154001B16092100019B010000881C7E00881E800007C +S3154001B170010000000310006C821062289FC040004D +S3154001B1800100000003100000821060008198400019 +S3154001B1900310006C821062909FC0400001000000C5 +S3154001B1A00310006C821062189FC04000010000002D +S3154001B1B08B4440008B31601C80A140001280000608 +S3154001B1C0010000007FFFFE96010000007FFF99B25B +S3154001B1D0010000009C23A0407FFF978A01000000E8 +S3154001B1E08210200191D020000100000029000004B6 +S3154001B1F0A68C001432800003A02C001491D02000AC +S3154001B200818C0000010000000100000001000000E7 +S3154001B21081C4800081CCA00481C3E0080100000004 +S3154001B22081C1E00801000000A74800008B34E01806 +S3154001B2308A09600380A160031280000801000000B2 +S3154001B24021100123A0142044A2102003E22400006F +S3154001B2508B444000108000018A09601F271001239A +S3154001B260A614E03CCA24C0008A01600127100123CC +S3154001B270A614E038CA24C00027100123A614E040D2 +S3154001B2808A216002CA24C00081C3E008010000008F +S3154001B29081C3E00801000000834800008330601844 +S3154001B2A08208600380A0600312800006010000004E +S3154001B2B0834440000500000882284002A3804000E4 +S3154001B2C0881000000910006C81C121740100000042 +S3154001B2D09DE3BFA02110007023100070A014203000 +S3154001B2E0A214603080A400111A80000B01000000F6 +S3154001B2F0D004000080A2200002800004A0042004A3 +S3154001B3009FC200000100000080A400112ABFFFFA7D +S3154001B310D004000081C7E00881E80000AA27A0B058 +S3154001B320E0256060E2256064E4256068C2256074BA +S3154001B330C43D6078C83D6080CC3D60888540000052 +S3154001B340C425606CF03D6090F43D6098F83D60A086 +S3154001B350FC3D60A8A8102001A92D0010808D001386 +S3154001B36002800013010000008534E001071001232B +S3154001B370C600E03CA72CC0038414C0028408A0FF89 +S3154001B38081E000008190A000E03BA000E43BA008E2 +S3154001B390E83BA010EC3BA018F03BA020F43BA028D2 +S3154001B3A0F83BA030FC3BA03881E8000081C5A008ED +S3154001B3B09C100015051001248410A0A0C400800033 +S3154001B3C080A0800002800004010000009FC0800030 +S3154001B3D09203A060818C20008210200283284010B5 +S3154001B3E005100123C400A038853040028210400276 +S3154001B3F08550000080888001028000208328A001BA +S3154001B40007100123C600E03C8530800382104002CC +S3154001B410820860FF81906000C203A06C8180600059 +S3154001B420F01BA090F41BA098F81BA0A0FC1BA0A8A1 +S3154001B430C203A074C41BA078C81BA080CC1BA088E3 +S3154001B440E003A060E203A064E403A06881E8000091 +S3154001B450E01BA000E41BA008E81BA010EC1BA018F1 +S3154001B460F01BA020F41BA028F81BA030FC1BA03821 +S3154001B4701080000F81E00000C203A06C8180600053 +S3154001B480F01BA090F41BA098F81BA0A0FC1BA0A841 +S3154001B490C203A074C41BA078C81BA080CC1BA08883 +S3154001B4A0E003A060E203A064E403A068818C20006D +S3154001B4B001000000010000000100000081C44000BD +S3154001B4C081CC8000AA27A0B0C2256074C43D6078B3 +S3154001B4D0C83D6080CC3D608885400000C425606CD5 +S3154001B4E0A8102001A92D0010808D001302800013A1 +S3154001B4F0010000008534E00107100123C600E03C4D +S3154001B500A72CC0038414C0028408A0FF81E0000078 +S3154001B5108190A000E03BA000E43BA008E83BA010DE +S3154001B520EC3BA018F03BA020F43BA028F83BA03010 +S3154001B530FC3BA03881E8000081C5A0089C1000159D +S3154001B540051001248410A0A0C400800080A08000C2 +S3154001B55002800004010000009FC080009203A060A9 +S3154001B560818C20008210200283284010051001237F +S3154001B570C400A03885304002821040028550000048 +S3154001B58080888001028000198328A00107100123C9 +S3154001B590C600E03C8530800382104002820860FF8D +S3154001B5A081906000C203A06C81806000C203A074D8 +S3154001B5B0C41BA078C81BA080CC1BA08881E80000D2 +S3154001B5C0E01BA000E41BA008E81BA010EC1BA01880 +S3154001B5D0F01BA020F41BA028F81BA030FC1BA038B0 +S3154001B5E01080000881E00000C203A06C81806000E9 +S3154001B5F0C203A074C41BA078C81BA080CC1BA08822 +S3154001B600818C2000010000000100000001000000C3 +S3154001B61081C4400081CC8000821000089A10380015 +S3154001B62096102000912AE00598034008D40340086B +S3154001B6309132A01880A20001328000089602E001F2 +S3154001B6409132A00C900A2FFF80A2000902800007C8 +S3154001B6509410000C9602E00180A2E00728BFFFF398 +S3154001B660912AE0059410200081C3E0089010000A59 +S3154001B6708210000898102000912B20039A00400860 +S3154001B680D60040089132E01880A2000932800008B5 +S3154001B690980320019132E00C900A2FFF80A2000A04 +S3154001B6A0028000079610000D9803200180A3200F09 +S3154001B6B028BFFFF3912B20039610200081C3E00899 +S3154001B6C09010000BD4022004173FFC00920A400B55 +S3154001B6D0900A800B9132200C921240081100003FD3 +S3154001B6E0901223F0940A8008952AA0049412800BA4 +S3154001B6F0920A400A81C3E008901000099DE3BFA069 +S3154001B700860E60FF80A6A0030880002A84100018D8 +S3154001B710808E20033280002A821020008328E00890 +S3154001B7208210400380A6A00F852860109A10001849 +S3154001B730841080018810001A0880001182100018B8 +S3154001B740C4204000C4206004C4206008C420600CAA +S3154001B75088013FF080A1200F18BFFFFA82006010D8 +S3154001B7608206BFF0B408600F9A087FF080A6A00356 +S3154001B7709A0360100880000E9A06000D8210200080 +S3154001B780C4234001820060048826800180A12003F1 +S3154001B79038BFFFFDC42340018206BFFCB4086003E5 +S3154001B7A082087FFC820060049A0340018410000DE8 +S3154001B7B080A6A0000280000782102000C6288001D2 +S3154001B7C08200600180A0401A32BFFFFEC628800178 +S3154001B7D081C7E00881E800009DE3BFA02110007009 +S3154001B7E0A0142018C2043FFC80A07FFF02800008FD +S3154001B7F0A0043FFC9FC04000A0043FFCC2040000DF +S3154001B80080A07FFF12BFFFFC0100000081C7E00856 +S3154001B81081E800009DE3BFA081C7E00881E8000000 +S3154001B8200000001000000000017A5200047C0F0164 +S3154001B8301B0C0E000000001000000018FFFE595CB2 +S3154001B8400000007000000000000000180000002CFD +S3154001B850FFFE59B8000000B400410D1E2D4A090FE4 +S3154001B8601F0000000000001800000048FFFE5A506B +S3154001B870000000D800410D1E2D6C090F1F0000006D +S3154001B8800000001800000064FFFE5B0C0000047815 +S3154001B89000410D1E2D4D090F1F000000000000182C +S3154001B8A000000080FFFE5F680000008800410D1E19 +S3154001B8B02D5B090F1F000000000000180000009CCE +S3154001B8C0FFFE5FD40000009000410D1E2D43090F7D +S3154001B8D01F00000000000014000000B8FFFE604891 +S3154001B8E00000002000410D1E2D090F1F0000001011 +S3154001B8F0000000D0FFFE60500000001C0000000068 +S3154001B90000000010000000E4FFFE60580000001C2B +S3154001B9100000000000000010000000F8FFFE60601B +S3154001B9200000001C00000000000000100000010C97 +S3154001B930FFFE60680000001C0000000000000014CB +S3154001B94000000120FFFE60700000002C00410D1E2A +S3154001B9502D090F1F0000001800000138FFFE60D0BE +S3154001B9600000004000410D1E2D46090F1F0000003A +S3154001B9700000001800000154FFFE60F4000002249C +S3154001B98000410D1E2D46090F1F0000000000001842 +S3154001B99000000170FFFE62FC0000023400410D1EF2 +S3154001B9A02D47090F1F000000000000180000018C00 +S3154001B9B0FFFE65140000003C00410D1E2D43090F9A +S3154001B9C01F00000000000018000001A8FFFE6534BA +S3154001B9D00000003C00410D1E2D43090F1F000000D1 +S3154001B9E000000014000001C4FFFF46180000039444 +S3154001B9F000410D1E2D090F1F00000010000001DC43 +S3154001BA00FFFF49940000002C0000000000000010D8 +S3154001BA10000001F0FFFF49AC0000002400000000D7 +S3154001BA200000001000000204FFFF49BC000000189E +S3154001BA30000000000000001800000218FFFF49C086 +S3154001BA400000017C00410D1E2D42090F1F00000020 +S3154001BA500000001800000234FFFF4B200000058063 +S3154001BA6000410D1E2D46090F1F0000000000001861 +S3154001BA7000000250FFFF50840000051800410D1ED2 +S3154001BA802D43090F1F000000000000140000026C46 +S3154001BA90FFFF55800000010C00410D1E2D090F1FAF +S3154001BAA00000001000000284FFFF567400000018D9 +S3154001BAB0000000000000001400000298FFFF5678C5 +S3154001BAC00000020800410D1E2D090F1F0000001441 +S3154001BAD0000002B0FFFF66FC0000461800410D1E43 +S3154001BAE02D090F1F00000010000002C8FFFFACFC2B +S3154001BAF00000000C0000000000000010000002DC05 +S3154001BB00FFFFACF40000001400000000000000102C +S3154001BB10000002F0FFFFACF400000020000000002E +S3154001BB200000001400000304FFFFAD000000077091 +S3154001BB3000410D1E2D090F1F000000100000031CBF +S3154001BB40FFFFBD880000000C00000000000000104F +S3154001BB5000000330FFFFBD8000000024000000000C +S3154001BB600000001000000344FFFFBD9000000038B4 +S3154001BB70000000000000001000000358FFFFBDB4A4 +S3154001BB800000003800000000000000180000036CAF +S3154001BB90FFFFBDD80000009C00410D1E2D56090F28 +S3154001BBA01F0000000000001800000388FFFFBE5878 +S3154001BBB00000003C00410D1E2D4A090F1F000000E8 +S3154001BBC000000018000003A4FFFFBE780000003CFF +S3154001BBD000410D1E2D4A090F1F00000000000010F4 +S3154001BBE0000003C0FFFFBE980000003800000000BF +S3154001BBF000000018000003D4FFFFBEBC0000003C5B +S3154001BC0000410D1E2D4A090F1F00000000000018BB +S3154001BC10000003F0FFFFBEDC0000003C00410D1EAA +S3154001BC202D4A090F1F000000000000100000040CFF +S3154001BC30FFFFBEFC000000380000000000000018B5 +S3154001BC4000000420FFFFBF2000000EB000430D1E80 +S3154001BC502D4C090F1F000000000000140000043C99 +S3154001BC60FFFFCDB40000002800410D1E2D090F1F16 +S3154001BC700000001400000454FFFFCDC4000003304F +S3154001BC8000410D1E2D090F1F000000140000046C19 +S3154001BC90FFFFD0DC000002B800430D1E2D090F1F27 +S3154001BCA00000001000000484FFFFD6840000000C51 +S3154001BCB0000000000000001000000498FFFFD67C41 +S3154001BCC0000000140000000000000014000004AC55 +S3154001BCD0FFFFD67C0000007C00410D1E2D090F1F81 +S3154001BCE000000010000004C4FFFFDA7800000020C5 +S3154001BCF00000000000000018000004D8FFFFDA84AD +S3154001BD00000000FC00410D1E2D54090F1F000000CC +S3154001BD1000000018000004F4FFFFDB640000012C62 +S3154001BD2000410D1E2D41090F1F00000000000010AB +S3154001BD3000000510FFFFDC740000001C000000003D +S3154001BD400000001000000524FFFFDC7C0000001C01 +S3154001BD50000000000000001800000538FFFFDC84E9 +S3154001BD60000006D800410D1E2D4C090F1F00000092 +S3154001BD700000001000000554FFFFE34000000018DA +S3154001BD80000000000000001000000568FFFFE344CA +S3154001BD900000001800000000000000180000057CAB +S3154001BDA0FFFFE3480000004000410D1E2D42090FF0 +S3154001BDB01F0000000000001400000598FFFFE36C1F +S3154001BDC0000000EC00410D1E2D090F1F0000001858 +S3154001BDD0000005B0FFFFE4400000029C00410D1E3B +S3154001BDE02D43090F1F00000000000018000005CC7C +S3154001BDF0FFFFE6C00000008C00410D1E2D4F090FCC +S3154001BE001F00000000000018000005E8FFFFE730B2 +S3154001BE100000002800410D1E2D44090F1F0000009F +S3154001BE200000001800000604FFFFE73C0000010483 +S3154001BE3000410D1E2D45090F1F0000000000001096 +S3154001BE4000000620FFFFE8240000003C000000003F +S3154001BE500000001800000634FFFFEC0000000088D7 +S3154001BE6000410D1E2D52090F1F0000000000001059 +S3154001BE7000000650FFFFEC6C0000001C00000000B3 +S3154001BE800000001800000664FFFFEC74000001206A +S3154001BE9000410D1E2D58090F1F0000000000001023 +S3154001BEA000000680FFFFEE88000000100000000041 +S3154001BEB00000001800000694FFFFEE84000000B861 +S3154001BEC000410D1E2D48090F1F00000000000018FB +S3154001BED0000006B0FFFFEF200000020C00410D1EDE +S3154001BEE02D4A090F1F00000000000018000006CC73 +S3154001BEF0FFFFF1100000003400410D1E2D47090FD0 +S3154001BF001F00000000000018000006E8FFFFF128AE +S3154001BF100000002C00410D1E2D45090F1F00000099 +S3154001BF200000001800000704FFFFF1380000002C54 +S3154001BF3000410D1E2D45090F1F000000000000188D +S3154001BF4000000720FFFFF1480000002C00410D1EB4 +S3154001BF502D45090F1F000000000000180000073C96 +S3154001BF60FFFFF1580000002C00410D1E2D45090F21 +S3154001BF701F0000000000001800000758FFFFF1688D +S3154001BF800000002C00410D1E2D45090F1F00000029 +S3154001BF900000001800000774FFFFF1780000002C34 +S3154001BFA000410D1E2D45090F1F000000000000181D +S3154001BFB000000790FFFFF1880000003400410D1E8C +S3154001BFC02D47090F1F00000000000018000007ACB4 +S3154001BFD0FFFFF3000000004C00410D1E2D47090FE5 +S3154001BFE01F00000000000018000007C8FFFFF710FF +S3154001BFF0000000DC00410D1E2D76090F1F000000D8 +S3154001C00000000000000000000000000000000000E9 +S3154001C01000000002FFFFFFFF0000000000000000DB +S3154001C02000000002FFFFFFFF0000000000000000CB +S3154001C030343074693934612B3079676979753035B3 +S3154001C0407968617035796934682B612B69697978CA +S3154001C0506869346B35396A30713930356A6B6F7955 +S3154001C06070686F70746A72686961346979302B34AB +S3154001C0700000000000000000400800000000000031 +S3154001C0803CD203AF9EE756163E7AD7F29ABCAF48EA +S3154001C0904004822800000000430000000000000028 +S3154001C0A09DE3BFA07FFF9421010000007FFFFDCBF0 +S3154001C0B00100000081C7E00881E800009DE3BFA0C0 +S3154001C0C07FFF93EF0100000081C7E00881E800008F +S315400200000000000100000000000000002000000087 +S315400200100000000000000000000000000000000098 S315400200200000000000000000000000000000000088 S315400200300000000000000000000000000000000078 S315400200400000000000000000000000000000000068 -S315400200500000000000000000000000010000000057 +S315400200500000000000000001000000000000000057 S315400200600000000000000000000000000000000048 S315400200700000000000000000000000000000000038 S315400200800000000000000000000000000000000028 -S315400200900000000000000000000000000000000117 +S315400200900000000000000000000000010000000017 S315400200A00000000000000000000000000000000008 S315400200B000000000000000000000000000000000F8 S315400200C000000000000000000000000000000000E8 -S315400200D000000000000000000000000000000000D8 -S315400200E00000000100000000000000410000000086 -S315400200F0343074693934612B3079676979753035B2 -S315400201007968617035796934682B612B69697978C8 -S315400201106869346B35396A30713930356A6B6F7953 -S3154002012070686F70746A72686961346979302B34A9 -S315400201300000000000000000000000010000000076 -S3154002014040000000000000004008000000000000DF -S31540020150401800000000000080000000000000007F -S315400201600000000000000000BFF000000000000098 -S31540020170BF800000000000000000000000000000F8 -S315400201800000000000000000000000000000000027 -S315400201903FF00000000000004008000000000000A0 -S315400201A03FF0000040000000000000000000000098 -S315400201B03F800000404000000000000000000000B8 -S315400201C000000000000000000000000000000000E7 -S315400201D0000000000000000048000001000000008E -S315400201E0480000000000000046C000000000000079 -S315400201F03FF0000000000000400000000000000048 -S3154002020040080000000000003F800000000000009F -S31540020210529000000000000052900FF807F60DEBD6 -S3154002022052901FE03F61BAD052902FB8D4E30F48A4 -S3154002023052903F81F636B80C52904F3BD03C0A64FE -S3154002024052905EE68EFAD48B52906E825DA8FC2B5B -S3154002025052907E0F66AFED0752908D8DD3B1D9AADB -S3154002026052909CFDCD8ED0095290AC5F7C69A3C85A -S315400202705290BBB307ACAFDB5290CAF8960E710DE3 -S315400202805290DA304D95FB065290E95A539F492CCB -S315400202905290F876CCDF6CD952910785DD689A295F -S315400202A052911687A8AE14A35291257C5187FD0917 -S315400202B052913463FA37014E5291433EC467EFFB83 -S315400202C05291520CD1372FEB529160CE41341D746C -S315400202D052916F8334644DF952917E2BCA46BAB914 -S315400202E052918CC821D6D3E352919B58598F7C9F09 -S315400202F05291A9DC8F6DF1045291B854E0F496A064 -S315400203005291C6C16B2DB8705291D5224AAE2EE19A -S315400203105291E3779B97F4A85291F1C1799CA8FF39 -S31540020320529200000000000052920E33499A21A9CF -S3154002033052921C5B70D9F82452922A788FC76DE587 -S315400203405292388AC0059C28529246921AD4EA4959 -S315400203505292548EB9151E8552926280B347609668 -S315400203605292706821902E9A52927E451BB944C38E -S3154002037052928C17B9337834529299E01118857596 -S315400203805292A79E3A2CD2E65292B5524AE1278E13 -S315400203905292C2FC595456A75292D09C7B54E03E8C -S315400203A05292DE32C66287415292EBBF4FAFDD4B6D -S315400203B05292F9422C23C47E529306BB705AE7C32B -S315400203C05293142B30A929AB52932191811B0A4196 -S315400203D052932EEE7577041652933C42213EE0C963 -S315400203E05293498C97B10540529356CDEBC9B5E22B -S315400203F0529364063044530652937135779C8DCBA3 -S3154002040052937E5BD40F95A152938B79579D3EAB07 -S315400204105293988E1409212E5293A59A1ADBB257FB -S315400204205293B29D7D6356625293BF984CB56C7798 -S315400204305293CC8A99AF54535293D97474F76DF24E -S315400204405293E655EEFE13675293F32F17FE8D0431 -S31540020450529400000000000052940CC8B6D657C20F -S31540020460529419894C2329F052942641CF569572BB -S31540020470529432F24FB01C7A52943F9ADC3F79CE74 -S3154002048052944C3B83E57153529458D455549C1A1A -S31540020490529465655F122FF6529471EEAF76C2C6DC -S315400204A052947E7054AF098952948AEA5CBC935F37 -S315400204B05294975CD57680885294A3C7CC8A358A63 -S315400204C05294B02B4F7C0A885294BC876BA7F6ECA9 -S315400204D05294C8DC2E4239805294D529A457FCFC4A -S315400204E05294E16FDACFF9375294EDAEDE6B10FEDD -S315400204F05294F9E6BBC4ECB3529506177F5491BBAE -S3154002050052951241356CF6E052951E63EA3D95B01E -S3154002051052952A7FA9D2F8EA529536948017481006 -S31540020520529542A278D2D03652954EA99FAC8A0FA6 -S3154002053052955AAA002A9D5A529566A3A5B2E1B18E -S31540020540529572969B8B5CD852957E82ECDABE8D22 -S3154002055052958A68A4A8D9F352959647CDDF1CA531 -S315400205605295A220734903775295ADF29F948CFB24 -S315400205705295B9BE5D52A9DA5295C583B6F7AB0319 -S315400205805295D142B6DBADC55295DCFB673B05DFE2 -S315400205905295E8ADD236A58F5295F45A01D483B41A -S315400205A0529600000000000052960B9FD68A455490 -S315400205B0529617398F2AAA48529622CD337F0FE890 -S315400205C052962E5ACD0C3EBE529639E2653E421B9B -S315400205D0529645640568C1C3529650DFB6C759F470 -S315400205E052965C55827DF1D2529667C57199104BEF -S315400205F05296732F8D0E2F7752967E93DDBC0E73D5 -S31540020600529689F26C6B01D05296954B41CD4293EC -S315400206100BC0A4068F346C9B0BC093731C185447B3 -S315400206200BC083008E183C230BC072AE83A9704A5E -S315400206300BC0627C9CC166FF0BC0526A7ACE64A430 -S315400206400BC04277C0B04ADA0BC032A412B191A0B5 -S315400206500BC022EF168069500BC0135873280473DF -S315400206600BC003DFD10A08480BBFE909B3B04632D3 -S315400206700BBFCA8E711B8E880BBFAC4D32D4143061 -S315400206800BBF8E4553D34B1B0BBF7076318237EF70 -S315400206900BBF52DF2BADF99C0BBF357FA47C936C0D -S315400206A00BBF18570061F5EB0BBEFB64A61545154B -S315400206B00BBEDEA7FE865A2B0BBEC22074D37FBC6E -S315400206C00BBEA5CD763F66690BBE89AE722750F04A -S315400206D00BBE6DC2D9F976230BBE520A212B976CFB -S315400206E00BBE3683BD31CAA20BBE1B2F257575CAFA -S315400206F00BBE000BD34C7BAF0BBDE51941F097FE09 -S315400207000BBDCA56EE76E9D00BBDAFC457C7AB7325 -S315400207100BBD9560FE9616690BBD7B2C65587275AE -S315400207200BBD612610404EC00BBD474D8532E409D4 -S315400207300BBD2DA24BC19EDF0BBD1423ED22D10171 -S315400207400BBCFAD1F42A88E40BBCE1ABED438E80B4 -S315400207500BBCC8B1666884820BBCAFE1EF1D2D01AC -S315400207600BBC973D1867D0EF0BBC7EC274CAC962F8 -S315400207700BBC6671983E29FE0BBC4E4A18298BA9C2 -S315400207800BBC364B8B5DF6DB0BBC1E758A0FECBF82 -S315400207900BBC06C7ADD18E7E0BBBEF41918CE1F609 -S315400207A00BBBD7E2D17E33360BBBC0AB0B2E921BB3 -S315400207B00BBBA999DD6E6B650BBB92AEE8503CA7AD -S315400207C00BBB7BE9CD2362720BBB654A2E6F002CB5 -S315400207D00BBB4ECFAFED00FE0BBB3879F685313FF2 -S315400207E00BBB2248A8486FDE0BBB0C3B6C6BF73B3E -S315400207F00BBAF651EB44BCEE0BBAE08BCE42E7F1B4 -S315400208000BBACAE8BFED5CC00BBAB5686BDD5EDDFC -S315400208100BBAA00A7EBA475E0BBA8ACEA6354FEB12 -S315400208200BBA75B4910571DB0BBA60BBEEE358EFB8 -S315400208300BBA4BE4708569410BBA372DC79BD7FE7D -S315400208400BBA2297A6CCD68C0BBA0E21C1B0CFA03A -S315400208500BB9F9CBCCCEB6050BB9E5957D98648B31 -S315400208600BB9D17E8A670EE70BB9BD86AA77C3104C -S315400208700BB9A9AD95E7FAC40BB995F305B23CE5B8 -S315400208800BB98256B3AACE570BB96ED85A7C7206AA -S315400208900BB95B77B5A537C80BB94834817359CCC8 -S315400208A00BB9350E7B02284D0BB922056037032E54 -S315400208B00BB90F18EFBE614A0BB8FC48E908E522AE -S315400208C00BB8E9950C487EA90BB8D6FD1A6D99E886 -S315400208D00BB8C480D5245A340BB8B21FFED1E1BC42 -S315400208E00BB89FDA5A91A5260BB88DAFAC32CB0A1C -S315400208F00BB87B9FB83596F60BB869AA43C8DFE1B9 -S315400209000BB857CF14C791B50BB8460DF1B639C6D9 -S315400209100BB83466A1C09DF90BB822D8ECB75E6E0F -S315400209200BB811649B0DA16B0BB8000975D6C9595A -S315400209300BB7EEC746C434A50BB7DD9DD823075285 -S315400209400BB7CC8CF4D9FE010BB7BB9468674A50FF -S315400209500BB7AAB3FEDE78540BB799EB84E65D0C6F -S315400209600BB7893AC7B70D960BB778A19517DF0132 -S315400209700BB7681FBB5D6E910BB757B50967B24C93 -S315400209800BB747614EA011A20BB737245AF786140C -S315400209900BB726FDFEE4C3A00BB716EE0B6268E862 -S315400209A00BB706F451ED36CE0BB6F710A4824F8044 -S315400209B00BB6E742D59D7CB40BB6D78AB8377D0EC7 -S315400209C00BB6C7E81FC458720BB6B85AE031BB32F1 -S315400209D00BB6A8E2CDE557F90BB6997FBDBB50459C -S315400209E00BB68A318504A35C0BB67AF7F985A39BCD -S315400209F00BB66BD2F17471FF0BB65CC243777FCEF6 -S31540020A000BB64DC5C6A416420BB63EDD527CE4116A -S31540020A100BB63008BEF090CF0BB62147E45855EBE3 -S31540020A200BB6129A9B769D520BB60400BD75A584F1 -S31540020A300BB5F57A23E62B070BB5E706A8BE172CAE -S31540020A400BB5D8A6265733FF0BB5CA58776DE54B7B -S31540020A500BB5BC1D771FE6AB0BB5ADF500EB0E78BB -S31540020A600BB59FDEF0AC15940BB591DB229D63F27C -S31540020A700BB583E97355E1C10BB57609BFC7CD32D4 -S31540020A800BB5683BE53F94B80BB55A7FC162B5B624 -S31540020A900BB54CD5322E9F7F0BB53F3C15F79AA12D -S31540020AA00BB531B44B67B45A0BB5243DB17DAE306C -S31540020AB00BB516D8278BF18F0BB509838D37876710 -S31540020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB69 -S31540020AD00BB4E1EA1D1EA6680BB4D4D8040308E59C -S31540020AE00BB4C7D63D722B370BB4BAE4AAEBF9481E -S31540020AF00BB4AE032E3C2D7E0BB4A131A97965C948 -S31540020B000BB4946FFF043C1C0BB487BE118662364D -S31540020B100BB47B1BC3F1C0BF0BB46E88F97F999BA4 -S31540020B200BB4620595AFAD730BB455917C476454D3 -S31540020B300BB4492C9150F96C0BB43CD6B91AA9C8DE -S31540020B400BB4308FD835E60B0BB42457D3768716C1 -S31540020B500BB4182E8FF205900BB40C13F2FEB43B75 -S31540020B600BB40007E232FD1F0BB3F40A4364A167DC -S31540020B700BB3E81AFCA7FBF00BB3DC39F44F468AF9 -S31540020B800BB3D06710E9E1C30BB3C4A239439F4FFD -S31540020B900BB3B8EB54640EF10BB3AD42498DCDDFC6 -S31540020BA00BB3A1A7003DD89B0BB39619602ADF2B46 -S31540020BB00BB38A9951449BB80BB37F26BBB32B79AF -S31540020BC00BB373C187D669EA0BB368699E454E4437 -S31540020BD00BB35D1EE7CD4B2D0BB351E14D71B09872 -S31540020BE00BB346B0B86B0FC30BB33B8D1226A15A5B -S31540020BF00BB330764445ADAC0BB3256C389CF6EB63 -S31540020C000BB31A6ED934256E0BB30F7E104535F5EC -S31540020C100BB30499C83BE9D60BB2F9C1EBB53923FC -S31540020C200BB2EEF6657EC6AA0BB2E437209655D5D0 -S31540020C300BB2D984082942630BB2CEDD0793F9E79A -S31540020C400BB2C4420A6177190BB2B9B2FC4ABEDA98 -S31540020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1F9 -S31540020C600BB29A4CA48F90E30BB28FEC8BA9777997 -S31540020C700BB28597FF1D694D0BB27B4EEBAE48DD3D -S31540020C800BB271113E499CEE0BB266DEE4071AA81E -S31540020C900BB25CB7CA2831380BB2529BDE1796F7B5 -S31540020CA00BB2488B0D68D8030BB23E8545D7E65A40 -S31540020CB00BB2348A7548AB540BB22A9A89C69A97B4 -S31540020CC00BB220B5718446610BB216DB1ADAF53FD8 -S31540020CD00BB20D0B744A39100BB203466C77876C14 -S31540020CE00BB1F98BF22DD3490BB1EFDBF45D27FF44 -S31540020CF00BB1E636621A457E0BB1DC9B2A9E3DD588 -S31540020D000BB1D30A3D4613EE0BB1C98389925B817F -S31540020D100BB1C006FF26DA3F0BB1B6948DCA2A281C -S31540020D200BB1AD2C25655D0F0BB1A3CDB603A13D2D -S31540020D300BB19A792FD1E7410BB1912E831E88D2FE -S31540020D400BB187EDA058F0D60BB17EB6781144733D -S31540020D500BB17588FAF80D3A0BB16C6519DDE45D95 -S31540020D600BB1634AC5B31EEF0BB15A39EF877B28E5 -S31540020D700BB151328889CEAE0BB148348207B5DB0E -S31540020D800BB13F3FCD6D43FF0BB136545C44B49A31 -S31540020D900BB12D7220361D870BB124990B07221BEE -S31540020DA00BB11BC90E9AA72D0BB113021CF0880F6B -S31540020DB00BB10A4428254C650BB1018F2271DEE541 -S31540020DC00BB0F8E2FE2B44F40BB0F03FADC2572312 -S31540020DD00BB0E7A523C37A850BB0DF1352D65AD997 -S31540020DE00BB0D68A2DBDA58C0BB0CE09A756C589A8 -S31540020DF00BB0C591B2999FDB0BB0BD2242985115FB -S31540020E000BB0B4BB4A7EEB870BB0AC5CBD933636B7 -S31540020E1065300000653010006530200065303000D6 -S31540020E2065304000653050006530600065307000C6 -S31540020E3065308000653090006530A0006530B000B6 -S31540020E406530C0006530D0006530E0006530F000A6 -S31540020E506531000065311000653120006531300092 -S31540020E606531400065315000653160006531700082 -S31540020E7065318000653190006531A0006531B00072 -S31540020E806531C0006531D0006531E0006531F00062 -S31540020E90653200006532100065322000653230004E -S31540020EA0653240006532500065326000653270003E -S31540020EB065328000653290006532A0006532B0002E -S31540020EC06532C0006532D0006532E0006532F0001E -S31540020ED0653300006533100065332000653330000A -S31540020EE065334000653350006533600065337000FA -S31540020EF065338000653390006533A0006533B000EA -S31540020F006533C0006533D0006533E0006533F000D9 -S31540020F1065340000653410006534200065343000C5 -S31540020F2065344000653450006534600065347000B5 -S31540020F3065348000653490006534A0006534B000A5 -S31540020F406534C0006534D0006534E0006534F00095 -S31540020F506535000065351000653520006535300081 -S31540020F606535400065355000653560006535700071 -S31540020F7065358000653590006535A0006535B00061 -S31540020F806535C0006535D0006535E0006535F00051 -S31540020F90653600006536100065362000653630003D -S31540020FA0653640006536500065366000653670002D -S31540020FB065368000653690006536A0006536B0001D -S31540020FC06536C0006536D0006536E0006536F0000D -S31540020FD065370000653710006537200065373000F9 -S31540020FE065374000653750006537600065377000E9 -S31540020FF065378000653790006537A0006537B000D9 -S315400210006537C0006537D0006537E0006537F000C8 -S3154002101065380000653810006538200065383000B4 -S3154002102065384000653850006538600065387000A4 -S3154002103065388000653890006538A0006538B00094 -S315400210406538C0006538D0006538E0006538F00084 -S315400210506539000065391000653920006539300070 -S315400210606539400065395000653960006539700060 -S3154002107065398000653990006539A0006539B00050 -S315400210806539C0006539D0006539E0006539F00040 -S31540021090653A0000653A1000653A2000653A30002C -S315400210A0653A4000653A5000653A6000653A70001C -S315400210B0653A8000653A9000653AA000653AB0000C -S315400210C0653AC000653AD000653AE000653AF000FC -S315400210D0653B0000653B1000653B2000653B3000E8 -S315400210E0653B4000653B5000653B6000653B7000D8 -S315400210F0653B8000653B9000653BA000653BB000C8 -S31540021100653BC000653BD000653BE000653BF000B7 -S31540021110653C0000653C1000653C2000653C3000A3 -S31540021120653C4000653C5000653C6000653C700093 -S31540021130653C8000653C9000653CA000653CB00083 -S31540021140653CC000653CD000653CE000653CF00073 -S31540021150653D0000653D1000653D2000653D30005F -S31540021160653D4000653D5000653D6000653D70004F -S31540021170653D8000653D9000653DA000653DB0003F -S31540021180653DC000653DD000653DE000653DF0002F -S31540021190653E0000653E1000653E2000653E30001B -S315400211A0653E4000653E5000653E6000653E70000B -S315400211B0653E8000653E9000653EA000653EB000FB -S315400211C0653EC000653ED000653EE000653EF000EB -S315400211D0653F0000653F1000653F2000653F3000D7 -S315400211E0653F4000653F5000653F6000653F7000C7 -S315400211F0653F8000653F9000653FA000653FB000B7 -S31540021200653FC000653FD000653FE000653FF000A6 -S315400212104200000000000000400FFFFFFFFFFFFFFB -S315400212204200000000200000420FFFFFFFFFFFFFC9 -S3154002123040000000000000004210000000080000CC -S3154002124042000000000000013EB000000000000124 -S315400212504200000000000002420F484C0137D2080B -S31540021260C20E780F256007AB41BA079B7AF94BA0AD -S315400212704201484C0137D208420E780F256007AB2F -S315400212804217E02D934BECDA420F484C0137D20815 -S31540021290C21E780F256007ABC20DA7D249883D4EC4 -S315400212A0421F484C0137D208C20E780F256007AB61 -S315400212B042100C446E87CE32C03340AB371208918F -S315400212C00000000000000000C03340AB3712089116 -S315400212D00000000000000000C29E7A0F236007A6AD -S315400212E0C29E7A0F236007A66F3F484C0137D20849 -S315400212F06E2E780F256007AB6F3F485B3D3F64B863 -S315400213006F3F484C0137D208EE2E780F256007AB67 -S315400213106F3F483CC5303F587FE2F780AB123809F1 -S315400213207FD00000000000007FEAF780AB12380948 -S31540021330002000000000000080280000000000009D -S3154002134080100000000000007FEFF780AB123809E2 -S315400213507FEFF2010203A1117FF0000000000000BE -S315400213600010000000001000801FFFFFF203A111D1 -S315400213708000000000000000001ABCD000023809BC -S31540021380801ABCD0000001110000000000000000DD -S315400213907E71000000000000416010000000000065 -S315400213A07FE11100000000000178100000000000FB -S315400213B03E880000FFF0000000120C00C073F800E7 -S315400213C0C1EFFFFFC00020003FB3C75D224F280F89 -S315400213D0C1B3C75CFAC08192A12FFF8000001FFFF4 -S315400213E03EE0000000FF0000A01FFF8001FE18073C -S315400213F041CFFFFE0000002040303FFFFFFFFFFDD0 -S3154002140042103FFEFC00000D3FD000003FEFFFFFC1 -S31540021410BFD0000010000000BFB000004FF0003FF8 -S3154002142001701000000000003E8000011A0000001A -S3154002143000000000000000007E7C0000000000006A -S31540021440416A1000010000107FF000000000000019 -S3154002145075012034056AC000FA1009091000104FC0 -S31540021460FFF00000000000000100203040030200AF -S31540021470003020340000A00B0000000000000000F5 -S315400214807FE0001010200001400000000010200AFA -S315400214907FF00000000000003FEFDFF00FFC484AFB -S315400214A0BFF80000000000007FFF000000000000BF -S315400214B07FFFE000000000007FF400000000000013 -S315400214C07FC00000000000007FF80000000000001E -S315400214D07FF0000000000000FFF000000000000066 -S315400214E0FFF0000000000000800000000000000045 -S315400214F000000000000100000000000000000000A3 +S315400200D000000000000000000000000000000001D7 +S315400200E00000000100000000BF8000000000000088 +S315400200F0BFF0000000000000800000000000000089 +S315400201000000000000000000400000000000000067 +S3154002011040080000000000004018000000000000F7 +S315400201200000000000000000000000000000000087 +S3154002013000000000000000003FF000000000000048 +S3154002014040080000000000003FF0000040000000B0 +S3154002015000000000000000003F8000004040000018 +S315400201600000000000000000000000000000000047 +S315400201700000000000000000000000000000000037 +S315400201804800000100000000480000000000000096 +S3154002019046C00000000000003FF0000000000000E2 +S315400201A0400000000000000040080000000000007F +S315400201B03F80000000000000000000000001000037 +S315400201C08000000000000000FFF000000000000078 +S315400201D0FFF00000000000007FF000000000000079 +S315400201E07FF80000000000007FC000000000000011 +S315400201F07FF40000000000007FFFE00000000000E6 +S315400202007FFF000000000000BFF800000000000071 +S315400202103FEFDFF00FFC484A7E710000000000000D +S3154002022041601000000000007FE111000000000064 +S3154002023001781000000000003E880000FFF0000038 +S3154002024000120C00C073F800C1EFFFFFC00020008F +S315400202503FB3C75D224F280FC1B3C75CFAC0819234 +S31540020260A12FFF8000001FFF3EE0000000FF0000BC +S31540020270A01FFF8001FE180741CFFFFE00000020AD +S3154002028040303FFFFFFFFFFD42103FFEFC00000DE6 +S315400202903FD000003FEFFFFFBFD00000100000003C +S315400202A0BFB000004FF0003F017010000000000098 +S315400202B03E8000011A00000000000000000000001D +S315400202C07E7C000000000000416A10000100001020 +S315400202D07FF000000000000075012034056AC0006E +S315400202E0FA1009091000104FFFF00000000000004C +S315400202F00100203040030200003020340000A00BF1 +S3154002030000000000000000007FE000101020000105 +S31540020310400000000010200A7FF0000000000000AC +S315400203204200000000000000400FFFFFFFFFFFFFFA +S315400203304200000000200000420FFFFFFFFFFFFFC8 +S3154002034040000000000000004210000000080000CB +S3154002035042000000000000013EB000000000000123 +S315400203604200000000000002420F484C0137D2080A +S31540020370C20E780F256007AB41BA079B7AF94BA0AC +S315400203804201484C0137D208420E780F256007AB2E +S315400203904217E02D934BECDA420F484C0137D20814 +S315400203A0C21E780F256007ABC20DA7D249883D4EC3 +S315400203B0421F484C0137D208C20E780F256007AB60 +S315400203C042100C446E87CE32C03340AB371208918E +S315400203D00000000000000000C03340AB3712089115 +S315400203E00000000000000000C29E7A0F236007A6AC +S315400203F0C29E7A0F236007A66F3F484C0137D20848 +S315400204006E2E780F256007AB6F3F485B3D3F64B861 +S315400204106F3F484C0137D208EE2E780F256007AB66 +S315400204206F3F483CC5303F587FE2F780AB123809F0 +S315400204307FD00000000000007FEAF780AB12380947 +S31540020440002000000000000080280000000000009C +S3154002045080100000000000007FEFF780AB123809E1 +S315400204607FEFF2010203A1117FF0000000000000BD +S315400204700010000000001000801FFFFFF203A111D0 +S315400204808000000000000000001ABCD000023809BB +S31540020490801ABCD0000001110000000000000000DC +S315400204A06530000065301000653020006530300050 +S315400204B06530400065305000653060006530700040 +S315400204C065308000653090006530A0006530B00030 +S315400204D06530C0006530D0006530E0006530F00020 +S315400204E0653100006531100065312000653130000C +S315400204F065314000653150006531600065317000FC +S3154002050065318000653190006531A0006531B000EB +S315400205106531C0006531D0006531E0006531F000DB +S3154002052065320000653210006532200065323000C7 +S3154002053065324000653250006532600065327000B7 +S3154002054065328000653290006532A0006532B000A7 +S315400205506532C0006532D0006532E0006532F00097 +S315400205606533000065331000653320006533300083 +S315400205706533400065335000653360006533700073 +S3154002058065338000653390006533A0006533B00063 +S315400205906533C0006533D0006533E0006533F00053 +S315400205A0653400006534100065342000653430003F +S315400205B0653440006534500065346000653470002F +S315400205C065348000653490006534A0006534B0001F +S315400205D06534C0006534D0006534E0006534F0000F +S315400205E065350000653510006535200065353000FB +S315400205F065354000653550006535600065357000EB +S3154002060065358000653590006535A0006535B000DA +S315400206106535C0006535D0006535E0006535F000CA +S3154002062065360000653610006536200065363000B6 +S3154002063065364000653650006536600065367000A6 +S3154002064065368000653690006536A0006536B00096 +S315400206506536C0006536D0006536E0006536F00086 +S315400206606537000065371000653720006537300072 +S315400206706537400065375000653760006537700062 +S3154002068065378000653790006537A0006537B00052 +S315400206906537C0006537D0006537E0006537F00042 +S315400206A0653800006538100065382000653830002E +S315400206B0653840006538500065386000653870001E +S315400206C065388000653890006538A0006538B0000E +S315400206D06538C0006538D0006538E0006538F000FE +S315400206E065390000653910006539200065393000EA +S315400206F065394000653950006539600065397000DA +S3154002070065398000653990006539A0006539B000C9 +S315400207106539C0006539D0006539E0006539F000B9 +S31540020720653A0000653A1000653A2000653A3000A5 +S31540020730653A4000653A5000653A6000653A700095 +S31540020740653A8000653A9000653AA000653AB00085 +S31540020750653AC000653AD000653AE000653AF00075 +S31540020760653B0000653B1000653B2000653B300061 +S31540020770653B4000653B5000653B6000653B700051 +S31540020780653B8000653B9000653BA000653BB00041 +S31540020790653BC000653BD000653BE000653BF00031 +S315400207A0653C0000653C1000653C2000653C30001D +S315400207B0653C4000653C5000653C6000653C70000D +S315400207C0653C8000653C9000653CA000653CB000FD +S315400207D0653CC000653CD000653CE000653CF000ED +S315400207E0653D0000653D1000653D2000653D3000D9 +S315400207F0653D4000653D5000653D6000653D7000C9 +S31540020800653D8000653D9000653DA000653DB000B8 +S31540020810653DC000653DD000653DE000653DF000A8 +S31540020820653E0000653E1000653E2000653E300094 +S31540020830653E4000653E5000653E6000653E700084 +S31540020840653E8000653E9000653EA000653EB00074 +S31540020850653EC000653ED000653EE000653EF00064 +S31540020860653F0000653F1000653F2000653F300050 +S31540020870653F4000653F5000653F6000653F700040 +S31540020880653F8000653F9000653FA000653FB00030 +S31540020890653FC000653FD000653FE000653FF00020 +S315400208A00BC0A4068F346C9B0BC093731C18544721 +S315400208B00BC083008E183C230BC072AE83A9704ACC +S315400208C00BC0627C9CC166FF0BC0526A7ACE64A49E +S315400208D00BC04277C0B04ADA0BC032A412B191A023 +S315400208E00BC022EF168069500BC01358732804734D +S315400208F00BC003DFD10A08480BBFE909B3B0463241 +S315400209000BBFCA8E711B8E880BBFAC4D32D41430CE +S315400209100BBF8E4553D34B1B0BBF7076318237EFDD +S315400209200BBF52DF2BADF99C0BBF357FA47C936C7A +S315400209300BBF18570061F5EB0BBEFB64A6154515B8 +S315400209400BBEDEA7FE865A2B0BBEC22074D37FBCDB +S315400209500BBEA5CD763F66690BBE89AE722750F0B7 +S315400209600BBE6DC2D9F976230BBE520A212B976C68 +S315400209700BBE3683BD31CAA20BBE1B2F257575CA67 +S315400209800BBE000BD34C7BAF0BBDE51941F097FE76 +S315400209900BBDCA56EE76E9D00BBDAFC457C7AB7393 +S315400209A00BBD9560FE9616690BBD7B2C655872751C +S315400209B00BBD612610404EC00BBD474D8532E40942 +S315400209C00BBD2DA24BC19EDF0BBD1423ED22D101DF +S315400209D00BBCFAD1F42A88E40BBCE1ABED438E8022 +S315400209E00BBCC8B1666884820BBCAFE1EF1D2D011A +S315400209F00BBC973D1867D0EF0BBC7EC274CAC96266 +S31540020A000BBC6671983E29FE0BBC4E4A18298BA92F +S31540020A100BBC364B8B5DF6DB0BBC1E758A0FECBFEF +S31540020A200BBC06C7ADD18E7E0BBBEF41918CE1F676 +S31540020A300BBBD7E2D17E33360BBBC0AB0B2E921B20 +S31540020A400BBBA999DD6E6B650BBB92AEE8503CA71A +S31540020A500BBB7BE9CD2362720BBB654A2E6F002C22 +S31540020A600BBB4ECFAFED00FE0BBB3879F685313F5F +S31540020A700BBB2248A8486FDE0BBB0C3B6C6BF73BAB +S31540020A800BBAF651EB44BCEE0BBAE08BCE42E7F121 +S31540020A900BBACAE8BFED5CC00BBAB5686BDD5EDD6A +S31540020AA00BBAA00A7EBA475E0BBA8ACEA6354FEB80 +S31540020AB00BBA75B4910571DB0BBA60BBEEE358EF26 +S31540020AC00BBA4BE4708569410BBA372DC79BD7FEEB +S31540020AD00BBA2297A6CCD68C0BBA0E21C1B0CFA0A8 +S31540020AE00BB9F9CBCCCEB6050BB9E5957D98648B9F +S31540020AF00BB9D17E8A670EE70BB9BD86AA77C310BA +S31540020B000BB9A9AD95E7FAC40BB995F305B23CE525 +S31540020B100BB98256B3AACE570BB96ED85A7C720617 +S31540020B200BB95B77B5A537C80BB94834817359CC35 +S31540020B300BB9350E7B02284D0BB922056037032EC1 +S31540020B400BB90F18EFBE614A0BB8FC48E908E5221B +S31540020B500BB8E9950C487EA90BB8D6FD1A6D99E8F3 +S31540020B600BB8C480D5245A340BB8B21FFED1E1BCAF +S31540020B700BB89FDA5A91A5260BB88DAFAC32CB0A89 +S31540020B800BB87B9FB83596F60BB869AA43C8DFE126 +S31540020B900BB857CF14C791B50BB8460DF1B639C647 +S31540020BA00BB83466A1C09DF90BB822D8ECB75E6E7D +S31540020BB00BB811649B0DA16B0BB8000975D6C959C8 +S31540020BC00BB7EEC746C434A50BB7DD9DD8230752F3 +S31540020BD00BB7CC8CF4D9FE010BB7BB9468674A506D +S31540020BE00BB7AAB3FEDE78540BB799EB84E65D0CDD +S31540020BF00BB7893AC7B70D960BB778A19517DF01A0 +S31540020C000BB7681FBB5D6E910BB757B50967B24C00 +S31540020C100BB747614EA011A20BB737245AF7861479 +S31540020C200BB726FDFEE4C3A00BB716EE0B6268E8CF +S31540020C300BB706F451ED36CE0BB6F710A4824F80B1 +S31540020C400BB6E742D59D7CB40BB6D78AB8377D0E34 +S31540020C500BB6C7E81FC458720BB6B85AE031BB325E +S31540020C600BB6A8E2CDE557F90BB6997FBDBB504509 +S31540020C700BB68A318504A35C0BB67AF7F985A39B3A +S31540020C800BB66BD2F17471FF0BB65CC243777FCE63 +S31540020C900BB64DC5C6A416420BB63EDD527CE411D8 +S31540020CA00BB63008BEF090CF0BB62147E45855EB51 +S31540020CB00BB6129A9B769D520BB60400BD75A5845F +S31540020CC00BB5F57A23E62B070BB5E706A8BE172C1C +S31540020CD00BB5D8A6265733FF0BB5CA58776DE54BE9 +S31540020CE00BB5BC1D771FE6AB0BB5ADF500EB0E7829 +S31540020CF00BB59FDEF0AC15940BB591DB229D63F2EA +S31540020D000BB583E97355E1C10BB57609BFC7CD3241 +S31540020D100BB5683BE53F94B80BB55A7FC162B5B691 +S31540020D200BB54CD5322E9F7F0BB53F3C15F79AA19A +S31540020D300BB531B44B67B45A0BB5243DB17DAE30D9 +S31540020D400BB516D8278BF18F0BB509838D3787677D +S31540020D500BB4FC3FC27713AE0BB4EF0CA791D4BBD6 +S31540020D600BB4E1EA1D1EA6680BB4D4D8040308E509 +S31540020D700BB4C7D63D722B370BB4BAE4AAEBF9488B +S31540020D800BB4AE032E3C2D7E0BB4A131A97965C9B5 +S31540020D900BB4946FFF043C1C0BB487BE11866236BB +S31540020DA00BB47B1BC3F1C0BF0BB46E88F97F999B12 +S31540020DB00BB4620595AFAD730BB455917C47645441 +S31540020DC00BB4492C9150F96C0BB43CD6B91AA9C84C +S31540020DD00BB4308FD835E60B0BB42457D37687162F +S31540020DE00BB4182E8FF205900BB40C13F2FEB43BE3 +S31540020DF00BB40007E232FD1F0BB3F40A4364A1674A +S31540020E000BB3E81AFCA7FBF00BB3DC39F44F468A66 +S31540020E100BB3D06710E9E1C30BB3C4A239439F4F6A +S31540020E200BB3B8EB54640EF10BB3AD42498DCDDF33 +S31540020E300BB3A1A7003DD89B0BB39619602ADF2BB3 +S31540020E400BB38A9951449BB80BB37F26BBB32B791C +S31540020E500BB373C187D669EA0BB368699E454E44A4 +S31540020E600BB35D1EE7CD4B2D0BB351E14D71B098DF +S31540020E700BB346B0B86B0FC30BB33B8D1226A15AC8 +S31540020E800BB330764445ADAC0BB3256C389CF6EBD0 +S31540020E900BB31A6ED934256E0BB30F7E104535F55A +S31540020EA00BB30499C83BE9D60BB2F9C1EBB539236A +S31540020EB00BB2EEF6657EC6AA0BB2E437209655D53E +S31540020EC00BB2D984082942630BB2CEDD0793F9E708 +S31540020ED00BB2C4420A6177190BB2B9B2FC4ABEDA06 +S31540020EE00BB2AF2FC9365EFF0BB2A4B85D37EEC167 +S31540020EF00BB29A4CA48F90E30BB28FEC8BA9777905 +S31540020F000BB28597FF1D694D0BB27B4EEBAE48DDAA +S31540020F100BB271113E499CEE0BB266DEE4071AA88B +S31540020F200BB25CB7CA2831380BB2529BDE1796F722 +S31540020F300BB2488B0D68D8030BB23E8545D7E65AAD +S31540020F400BB2348A7548AB540BB22A9A89C69A9721 +S31540020F500BB220B5718446610BB216DB1ADAF53F45 +S31540020F600BB20D0B744A39100BB203466C77876C81 +S31540020F700BB1F98BF22DD3490BB1EFDBF45D27FFB1 +S31540020F800BB1E636621A457E0BB1DC9B2A9E3DD5F5 +S31540020F900BB1D30A3D4613EE0BB1C98389925B81ED +S31540020FA00BB1C006FF26DA3F0BB1B6948DCA2A288A +S31540020FB00BB1AD2C25655D0F0BB1A3CDB603A13D9B +S31540020FC00BB19A792FD1E7410BB1912E831E88D26C +S31540020FD00BB187EDA058F0D60BB17EB678114473AB +S31540020FE00BB17588FAF80D3A0BB16C6519DDE45D03 +S31540020FF00BB1634AC5B31EEF0BB15A39EF877B2853 +S315400210000BB151328889CEAE0BB148348207B5DB7B +S315400210100BB13F3FCD6D43FF0BB136545C44B49A9E +S315400210200BB12D7220361D870BB124990B07221B5B +S315400210300BB11BC90E9AA72D0BB113021CF0880FD8 +S315400210400BB10A4428254C650BB1018F2271DEE5AE +S315400210500BB0F8E2FE2B44F40BB0F03FADC257237F +S315400210600BB0E7A523C37A850BB0DF1352D65AD904 +S315400210700BB0D68A2DBDA58C0BB0CE09A756C58915 +S315400210800BB0C591B2999FDB0BB0BD224298511568 +S315400210900BB0B4BB4A7EEB870BB0AC5CBD93363625 +S315400210A0529000000000000052900FF807F60DEB38 +S315400210B052901FE03F61BAD052902FB8D4E30F4806 +S315400210C052903F81F636B80C52904F3BD03C0A6460 +S315400210D052905EE68EFAD48B52906E825DA8FC2BBD +S315400210E052907E0F66AFED0752908D8DD3B1D9AA3D +S315400210F052909CFDCD8ED0095290AC5F7C69A3C8BC +S315400211005290BBB307ACAFDB5290CAF8960E710D44 +S315400211105290DA304D95FB065290E95A539F492C2C +S315400211205290F876CCDF6CD952910785DD689A29C0 +S3154002113052911687A8AE14A35291257C5187FD0978 +S3154002114052913463FA37014E5291433EC467EFFBE4 +S315400211505291520CD1372FEB529160CE41341D74CD +S3154002116052916F8334644DF952917E2BCA46BAB975 +S3154002117052918CC821D6D3E352919B58598F7C9F6A +S315400211805291A9DC8F6DF1045291B854E0F496A0C5 +S315400211905291C6C16B2DB8705291D5224AAE2EE1FC +S315400211A05291E3779B97F4A85291F1C1799CA8FF9B +S315400211B0529200000000000052920E33499A21A931 +S315400211C052921C5B70D9F82452922A788FC76DE5E9 +S315400211D05292388AC0059C28529246921AD4EA49BB +S315400211E05292548EB9151E8552926280B3476096CA +S315400211F05292706821902E9A52927E451BB944C3F0 +S3154002120052928C17B9337834529299E011188575F7 +S315400212105292A79E3A2CD2E65292B5524AE1278E74 +S315400212205292C2FC595456A75292D09C7B54E03EED +S315400212305292DE32C66287415292EBBF4FAFDD4BCE +S315400212405292F9422C23C47E529306BB705AE7C38C +S315400212505293142B30A929AB52932191811B0A41F7 +S3154002126052932EEE7577041652933C42213EE0C9C4 +S315400212705293498C97B10540529356CDEBC9B5E28C +S31540021280529364063044530652937135779C8DCB04 +S3154002129052937E5BD40F95A152938B79579D3EAB69 +S315400212A05293988E1409212E5293A59A1ADBB2575D +S315400212B05293B29D7D6356625293BF984CB56C77FA +S315400212C05293CC8A99AF54535293D97474F76DF2B0 +S315400212D05293E655EEFE13675293F32F17FE8D0493 +S315400212E0529400000000000052940CC8B6D657C271 +S315400212F0529419894C2329F052942641CF5695721D +S31540021300529432F24FB01C7A52943F9ADC3F79CED5 +S3154002131052944C3B83E57153529458D455549C1A7B +S31540021320529465655F122FF6529471EEAF76C2C63D +S3154002133052947E7054AF098952948AEA5CBC935F98 +S315400213405294975CD57680885294A3C7CC8A358AC4 +S315400213505294B02B4F7C0A885294BC876BA7F6EC0A +S315400213605294C8DC2E4239805294D529A457FCFCAB +S315400213705294E16FDACFF9375294EDAEDE6B10FE3E +S315400213805294F9E6BBC4ECB3529506177F5491BB0F +S3154002139052951241356CF6E052951E63EA3D95B080 +S315400213A052952A7FA9D2F8EA529536948017481068 +S315400213B0529542A278D2D03652954EA99FAC8A0F08 +S315400213C052955AAA002A9D5A529566A3A5B2E1B1F0 +S315400213D0529572969B8B5CD852957E82ECDABE8D84 +S315400213E052958A68A4A8D9F352959647CDDF1CA593 +S315400213F05295A220734903775295ADF29F948CFB86 +S315400214005295B9BE5D52A9DA5295C583B6F7AB037A +S315400214105295D142B6DBADC55295DCFB673B05DF43 +S315400214205295E8ADD236A58F5295F45A01D483B47B +S31540021430529600000000000052960B9FD68A4554F1 +S31540021440529617398F2AAA48529622CD337F0FE8F1 +S3154002145052962E5ACD0C3EBE529639E2653E421BFC +S31540021460529645640568C1C3529650DFB6C759F4D1 +S3154002147052965C55827DF1D2529667C57199104B50 +S315400214805296732F8D0E2F7752967E93DDBC0E7336 +S31540021490529689F26C6B01D05296954B41CD42934E +S315400214A000000000000000000000000000000000F4 +S315400214B000000000000000000000000000000000E4 +S315400214C000000000000000000000000000000000D4 +S315400214D000000000000000000000000000000000C4 +S315400214E000000000000000000000000000000000B4 +S315400214F000000000000000000000000000000000A4 S315400215000000000000000000000000000000000093 S315400215100000000000000000000000000000000083 S315400215200000000000000000000000000000000073 @@ -9052,8 +9228,8 @@ S31540027FC00000000000000000000000000000000069 S31540027FD00000000000000000000000000000000059 S31540027FE00000000000000000000000000000000049 S31540027FF00000000000000000000000000000000039 -S315400280000000003F0000000C0000003F000000128C -S31540028010000000FF00000018000000000000000001 +S315400280000000000000000000000000000000000028 +S315400280100000000000000000000000000000000018 S315400280200000000000000000000000000000000008 S3154002803000000000000000000000000000000000F8 S3154002804000000000000000000000000000000000E8 @@ -15964,8 +16140,8 @@ S31540042FC000000000000000000000000000000000B7 S31540042FD000000000000000000000000000000000A7 S31540042FE00000000000000000000000000000000097 S31540042FF00000000000000000000000000000000087 -S315400430000000000000000000000000000000000076 -S315400430100000000000000000000000000000000066 +S3154004300000000018000000FF000000120000003F0E +S315400430100000000C0000003F00000000000000001B S315400430200000000000000000000000000000000056 S315400430300000000000000000000000000000000046 S315400430400000000000000000000000000000000036 @@ -17244,44 +17420,44 @@ S31540047FC00000000000000000000000000000000067 S31540047FD00000000000000000000000000000000057 S31540047FE00000000000000000000000000000000047 S31540047FF00000000000000000000000000000000037 -S315400480000000000000000000000000000000000026 -S315400480100000000000000000000000000000000016 -S315400480200000000000000000000000000000000006 -S3154004803000000000000000000000000000000000F6 -S3154004804000000000000000000000000000000000E6 -S3154004805000000000000000000000000000000000D6 -S3154004806000000000000000000000000000000000C6 -S3154004807000000000000000000000000000000000B6 -S3154004808000000000000000000000000000000000A6 -S315400480900000000000000000000000000000000096 -S315400480A00000000000000000000000000000000086 -S315400480B00000000000000000000000000000000076 -S315400480C00000000000000000000000000000000066 -S315400480D00000000000000000000000000000000056 -S315400480E00000000000000000000000000000000046 -S315400480F00000000000000000000000000000000036 -S315400481000000000000000000000000000000000025 -S315400481100000000000000000000000000000000015 -S315400481200000000000000000000000000000000005 -S3154004813000000000000000000000000000000000F5 -S3154004814000000000000000000000000000000000E5 -S3154004815000000000000000000000000000000000D5 -S3154004816000000000000000000000000000000000C5 -S3154004817000000000000000000000000000000000B5 -S3154004818000000000000000000000000000000000A5 -S315400481900000000000000000000000000000000095 -S315400481A00000000000000000000000000000000085 -S315400481B00000000000000000000000000000000075 -S315400481C00000000000000000000000000000000065 -S315400481D00000000000000000000000000000000055 -S315400481E00000000000000000000000000000000045 +S31540048000000000020000000300000000000000031E +S31540048010FFFFFFFEFFFFFFFF00000002FFFFFFFD23 +S315400480200000000000000000000000010000000005 +S3154004803000000000FFFFFFFF0000000000000001F9 +S31540048040FFFFFFFFFFFFFFFFFFFFFFFF00000001F1 +S31540048050FFFFFFFFFFFFFFFE0000000300000000DC +S31540048060FFFFFFFEFFFFFFFD0000000000000009C8 +S315400480700000000700000001FFFFFFF700000002B8 +S31540048080FFFFFFFCFFFFFFF800000002FFFFFFFCBD +S31540048090FFFFFFF8FFFFFFFC00000002000000089E +S315400480A0FFFFFFFCFFFFFFFEFFFFFFF8FFFFFFF8A8 +S315400480B000000001FFFFFFF8FFFFFFF7000000008C +S315400480C00000000B00000002000000050000002F25 +S315400480D0000000020000001700003039000002A72B +S315400480E000000012FFFF076C0000004DFFFFFCC6B6 +S315400480F000003039FFFFFD59FFFFFFEEFFFF076C1D +S31540048100FFFFFFB30000033A00000091FFFFE84180 +S3154004811000000000FFFFFD84FFFED02F000000009A +S315400481200000F6FA006E49810000000000000000DD +S3154004813000000000000000000000000200000003F0 +S3154004814000000000000000000000000100000000E4 +S31540048150FFFFFFFE0000000355555554FFFFFFFE89 +S315400481600000000355555554700FFFFE00000007EC +S315400481701002492400000000000000000000000036 +S315400481800000000200000003000000060000000298 +S31540048190FFFFFFFDFFFFFFFA0000000000000001A3 +S315400481A00000000000000000FFFFFFFF0000000089 +S315400481B000000001FFFFFFFFFFFFFFFFFFFFFFFF80 +S315400481C000000001FFFFFFFFFFFFFFFE000000036A +S315400481D0FFFFFFFAFFFFFFFEFFFFFFFD0000000663 +S315400481E0000000000000000000000009FFFFF0004E S315400481F00000000000000000000000000000000035 -S315400482000000000000000000000000000000000024 +S31540048200000000000000000100000002000000031E S315400482100000000000000000000000000000000014 -S315400482200000000000000000000000000000000004 -S3154004823000000000000000000000000000000000F4 +S315400482204004822800000000000000004004851439 +S31540048230400485E0400486AC0000000000000000D5 S3154004824000000000000000000000000000000000E4 -S3154004825000000000000000000000000000000000D4 +S315400482500000000000000000000000004001C0983B S3154004826000000000000000000000000000000000C4 S3154004827000000000000000000000000000000000B4 S3154004828000000000000000000000000000000000A4 @@ -17289,8 +17465,8 @@ S315400482900000000000000000000000000000000094 S315400482A00000000000000000000000000000000084 S315400482B00000000000000000000000000000000074 S315400482C00000000000000000000000000000000064 -S315400482D00000000000000000000000000000000054 -S315400482E00000000000000000000000000000000044 +S315400482D00000000000000001330EABCD1234E66D01 +S315400482E0DEEC0005000B000000000000000000006A S315400482F00000000000000000000000000000000034 S315400483000000000000000000000000000000000023 S315400483100000000000000000000000000000000013 @@ -17364,72 +17540,72 @@ S3154004874000000000000000000000000000000000DF S3154004875000000000000000000000000000000000CF S3154004876000000000000000000000000000000000BF S3154004877000000000000000000000000000000000AF -S31540048780000000000000000000000000000000009F -S31540048790000000000000000000000000000000008F -S315400487A0000000000000000000000000000000007F -S315400487B0000000000000000000000000000000006F -S315400487C0000000000000000000000000000000005F -S315400487D0000000000000000000000000000000004F -S315400487E0000000000000000000000000000000003F -S315400487F0000000000000000000000000000000002F -S31540048800000000000000000000000000000000001E -S31540048810000000000000000000000000000000000E -S3154004882000000000000000000000000000000000FE -S3154004883000000000000000000000000000000000EE -S3154004884000000000000000000000000000000000DE -S3154004885000000000000000000000000000000000CE -S3154004886000000000000000000000000000000000BE -S3154004887000000000000000000000000000000000AE -S31540048880000000000000000000000000000000009E -S31540048890000000000000000000000000000000008E -S315400488A0000000000000000000000000000000007E -S315400488B0000000000000000000000000000000006E -S315400488C0000000000000000000000000000000005E -S315400488D0000000000000000000000000000000004E -S315400488E0000000000000000000000000000000003E -S315400488F0000000000000000000000000000000002E -S31540048900000000000000000000000000000000001D -S31540048910000000000000000000000000000000000D -S3154004892000000000000000000000000000000000FD -S3154004893000000000000000000000000000000000ED -S3154004894000000000000000000000000000000000DD -S3154004895000000000000000000000000000000000CD -S3154004896000000000000000000000000000000000BD -S3154004897000000000000000000000000000000000AD -S31540048980000000000000000000000000000000009D -S31540048990000000000000000000000000000000008D -S315400489A0000000000000000000000000000000007D -S315400489B0000000000000000000000000000000006D -S315400489C0000000000000000000000000000000005D -S315400489D0000000000000000000000000000000004D -S315400489E0000000000000000000000000000000003D -S315400489F0000000000000000000000000000000002D -S31540048A00000000000000000000000000000000001C -S31540048A10000000000000000000000000000000000C -S31540048A2000000000000000000000000000000000FC -S31540048A3000000000000000000000000000000000EC -S31540048A4000000000000000000000000000000000DC -S31540048A5000000000000000000000000000000000CC -S31540048A6000000000000000000000000000000000BC -S31540048A7000000000000000000000000000000000AC -S31540048A80000000000000000000000000000000009C -S31540048A90000000000000000000000000000000008C -S31540048AA0000000000000000000000000000000007C -S31540048AB0000000000000000000000000000000006C -S31540048AC0000000000000000000000000000000005C -S31540048AD0000000000000000000000000000000004C -S31540048AE0000000000000000000000000000000003C -S31540048AF0000000000000000000000000000000002C -S31540048B00000000000000000000000000000000001B -S31540048B10000000000000000000000000000000000B -S31540048B2000000000000000000000000000000000FB -S31540048B3000000000000000000000000000000000EB -S31540048B4000000000000000000000000000000000DB -S31540048B5000000000000000000000000000000000CB -S31540048B6000000000000000000000000000000000BB -S31540048B7000000000000000000000000000000000AB -S31540048B80000000000000000000000000000000009B -S31540048B90000000000000000000000000000000008B +S315400487804004877840048778400487804004878083 +S315400487904004878840048788400487904004879033 +S315400487A04004879840048798400487A0400487A0E3 +S315400487B0400487A8400487A8400487B0400487B093 +S315400487C0400487B8400487B8400487C0400487C043 +S315400487D0400487C8400487C8400487D0400487D0F3 +S315400487E0400487D8400487D8400487E0400487E0A3 +S315400487F0400487E8400487E8400487F0400487F053 +S31540048800400487F8400487F8400488004004880000 +S3154004881040048808400488084004881040048810AE +S31540048820400488184004881840048820400488205E +S31540048830400488284004882840048830400488300E +S3154004884040048838400488384004884040048840BE +S31540048850400488484004884840048850400488506E +S31540048860400488584004885840048860400488601E +S3154004887040048868400488684004887040048870CE +S31540048880400488784004887840048880400488807E +S31540048890400488884004888840048890400488902E +S315400488A04004889840048898400488A0400488A0DE +S315400488B0400488A8400488A8400488B0400488B08E +S315400488C0400488B8400488B8400488C0400488C03E +S315400488D0400488C8400488C8400488D0400488D0EE +S315400488E0400488D8400488D8400488E0400488E09E +S315400488F0400488E8400488E8400488F0400488F04E +S31540048900400488F8400488F84004890040048900FB +S3154004891040048908400489084004891040048910A9 +S315400489204004891840048918400489204004892059 +S315400489304004892840048928400489304004893009 +S3154004894040048938400489384004894040048940B9 +S315400489504004894840048948400489504004895069 +S315400489604004895840048958400489604004896019 +S3154004897040048968400489684004897040048970C9 +S315400489804004897840048978400489804004898079 +S315400489904004898840048988400489904004899029 +S315400489A04004899840048998400489A0400489A0D9 +S315400489B0400489A8400489A8400489B0400489B089 +S315400489C0400489B8400489B8400489C0400489C039 +S315400489D0400489C8400489C8400489D0400489D0E9 +S315400489E0400489D8400489D8400489E0400489E099 +S315400489F0400489E8400489E8400489F0400489F049 +S31540048A00400489F8400489F840048A0040048A00F6 +S31540048A1040048A0840048A0840048A1040048A10A4 +S31540048A2040048A1840048A1840048A2040048A2054 +S31540048A3040048A2840048A2840048A3040048A3004 +S31540048A4040048A3840048A3840048A4040048A40B4 +S31540048A5040048A4840048A4840048A5040048A5064 +S31540048A6040048A5840048A5840048A6040048A6014 +S31540048A7040048A6840048A6840048A7040048A70C4 +S31540048A8040048A7840048A7840048A8040048A8074 +S31540048A9040048A8840048A8840048A9040048A9024 +S31540048AA040048A9840048A9840048AA040048AA0D4 +S31540048AB040048AA840048AA840048AB040048AB084 +S31540048AC040048AB840048AB840048AC040048AC034 +S31540048AD040048AC840048AC840048AD040048AD0E4 +S31540048AE040048AD840048AD840048AE040048AE094 +S31540048AF040048AE840048AE840048AF040048AF044 +S31540048B0040048AF840048AF840048B0040048B00F1 +S31540048B1040048B0840048B0840048B1040048B109F +S31540048B2040048B1840048B1840048B2040048B204F +S31540048B3040048B2840048B2840048B3040048B30FF +S31540048B4040048B3840048B3840048B4040048B40AF +S31540048B5040048B4840048B4840048B5040048B505F +S31540048B6040048B5840048B5840048B6040048B600F +S31540048B7040048B6840048B6840048B7040048B70BF +S31540048B8000020000FFFFFFFF0000000040048B8846 +S31540048B900000000000000000000000000000000289 S31540048BA0000000000000000000000000000000007B S31540048BB0000000000000000000000000000000006B S31540048BC0000000000000000000000000000000005B @@ -17438,2056 +17614,7 @@ S31540048BE0000000000000000000000000000000003B S31540048BF0000000000000000000000000000000002B S31540048C00000000000000000000000000000000001A S31540048C10000000000000000000000000000000000A -S31540048C2000000000000000000000000000000000FA -S31540048C3000000000000000000000000000000000EA -S31540048C4000000000000000000000000000000000DA -S31540048C5000000000000000000000000000000000CA -S31540048C6000000000000000000000000000000000BA -S31540048C7000000000000000000000000000000000AA -S31540048C80000000000000000000000000000000009A -S31540048C90000000000000000000000000000000008A -S31540048CA0000000000000000000000000000000007A -S31540048CB0000000000000000000000000000000006A -S31540048CC0000000000000000000000000000000005A -S31540048CD0000000000000000000000000000000004A -S31540048CE0000000000000000000000000000000003A -S31540048CF0000000000000000000000000000000002A -S31540048D000000000000000000000000000000000019 -S31540048D100000000000000000000000000000000009 -S31540048D2000000000000000000000000000000000F9 -S31540048D3000000000000000000000000000000000E9 -S31540048D4000000000000000000000000000000000D9 -S31540048D5000000000000000000000000000000000C9 -S31540048D6000000000000000000000000000000000B9 -S31540048D7000000000000000000000000000000000A9 -S31540048D800000000000000000000000000000000099 -S31540048D900000000000000000000000000000000089 -S31540048DA00000000000000000000000000000000079 -S31540048DB00000000000000000000000000000000069 -S31540048DC00000000000000000000000000000000059 -S31540048DD00000000000000000000000000000000049 -S31540048DE00000000000000000000000000000000039 -S31540048DF00000000000000000000000000000000029 -S31540048E000000000000000000000000000000000018 -S31540048E100000000000000000000000000000000008 -S31540048E2000000000000000000000000000000000F8 -S31540048E3000000000000000000000000000000000E8 -S31540048E4000000000000000000000000000000000D8 -S31540048E5000000000000000000000000000000000C8 -S31540048E6000000000000000000000000000000000B8 -S31540048E7000000000000000000000000000000000A8 -S31540048E800000000000000000000000000000000098 -S31540048E900000000000000000000000000000000088 -S31540048EA00000000000000000000000000000000078 -S31540048EB00000000000000000000000000000000068 -S31540048EC00000000000000000000000000000000058 -S31540048ED00000000000000000000000000000000048 -S31540048EE00000000000000000000000000000000038 -S31540048EF00000000000000000000000000000000028 -S31540048F000000000000000000000000000000000017 -S31540048F100000000000000000000000000000000007 -S31540048F2000000000000000000000000000000000F7 -S31540048F3000000000000000000000000000000000E7 -S31540048F4000000000000000000000000000000000D7 -S31540048F5000000000000000000000000000000000C7 -S31540048F6000000000000000000000000000000000B7 -S31540048F7000000000000000000000000000000000A7 -S31540048F800000000000000000000000000000000097 -S31540048F900000000000000000000000000000000087 -S31540048FA00000000000000000000000000000000077 -S31540048FB00000000000000000000000000000000067 -S31540048FC00000000000000000000000000000000057 -S31540048FD00000000000000000000000000000000047 -S31540048FE00000000000000000000000000000000037 -S31540048FF00000000000000000000000000000000027 -S315400490000000000000000000000000000000000016 -S315400490100000000000000000000000000000000006 -S3154004902000000000000000000000000000000000F6 -S3154004903000000000000000000000000000000000E6 -S3154004904000000000000000000000000000000000D6 -S3154004905000000000000000000000000000000000C6 -S3154004906000000000000000000000000000000000B6 -S3154004907000000000000000000000000000000000A6 -S315400490800000000000000000000000000000000096 -S315400490900000000000000000000000000000000086 -S315400490A00000000000000000000000000000000076 -S315400490B00000000000000000000000000000000066 -S315400490C00000000000000000000000000000000056 -S315400490D00000000000000000000000000000000046 -S315400490E00000000000000000000000000000000036 -S315400490F00000000000000000000000000000000026 -S315400491000000000000000000000000000000000015 -S315400491100000000000000000000000000000000005 -S3154004912000000000000000000000000000000000F5 -S3154004913000000000000000000000000000000000E5 -S3154004914000000000000000000000000000000000D5 -S3154004915000000000000000000000000000000000C5 -S3154004916000000000000000000000000000000000B5 -S3154004917000000000000000000000000000000000A5 -S315400491800000000000000000000000000000000095 -S315400491900000000000000000000000000000000085 -S315400491A00000000000000000000000000000000075 -S315400491B00000000000000000000000000000000065 -S315400491C00000000000000000000000000000000055 -S315400491D00000000000000000000000000000000045 -S315400491E00000000000000000000000000000000035 -S315400491F00000000000000000000000000000000025 -S315400492000000000000000000000000000000000014 -S315400492100000000000000000000000000000000004 -S3154004922000000000000000000000000000000000F4 -S3154004923000000000000000000000000000000000E4 -S3154004924000000000000000000000000000000000D4 -S3154004925000000000000000000000000000000000C4 -S3154004926000000000000000000000000000000000B4 -S3154004927000000000000000000000000000000000A4 -S315400492800000000000000000000000000000000094 -S315400492900000000000000000000000000000000084 -S315400492A00000000000000000000000000000000074 -S315400492B00000000000000000000000000000000064 -S315400492C00000000000000000000000000000000054 -S315400492D00000000000000000000000000000000044 -S315400492E00000000000000000000000000000000034 -S315400492F00000000000000000000000000000000024 -S315400493000000000000000000000000000000000013 -S315400493100000000000000000000000000000000003 -S3154004932000000000000000000000000000000000F3 -S3154004933000000000000000000000000000000000E3 -S3154004934000000000000000000000000000000000D3 -S3154004935000000000000000000000000000000000C3 -S3154004936000000000000000000000000000000000B3 -S3154004937000000000000000000000000000000000A3 -S315400493800000000000000000000000000000000093 -S315400493900000000000000000000000000000000083 -S315400493A00000000000000000000000000000000073 -S315400493B00000000000000000000000000000000063 -S315400493C00000000000000000000000000000000053 -S315400493D00000000000000000000000000000000043 -S315400493E00000000000000000000000000000000033 -S315400493F00000000000000000000000000000000023 -S315400494000000000000000000000000000000000012 -S315400494100000000000000000000000000000000002 -S3154004942000000000000000000000000000000000F2 -S3154004943000000000000000000000000000000000E2 -S3154004944000000000000000000000000000000000D2 -S3154004945000000000000000000000000000000000C2 -S3154004946000000000000000000000000000000000B2 -S3154004947000000000000000000000000000000000A2 -S315400494800000000000000000000000000000000092 -S315400494900000000000000000000000000000000082 -S315400494A00000000000000000000000000000000072 -S315400494B00000000000000000000000000000000062 -S315400494C00000000000000000000000000000000052 -S315400494D00000000000000000000000000000000042 -S315400494E00000000000000000000000000000000032 -S315400494F00000000000000000000000000000000022 -S315400495000000000000000000000000000000000011 -S315400495100000000000000000000000000000000001 -S3154004952000000000000000000000000000000000F1 -S3154004953000000000000000000000000000000000E1 -S3154004954000000000000000000000000000000000D1 -S3154004955000000000000000000000000000000000C1 -S3154004956000000000000000000000000000000000B1 -S3154004957000000000000000000000000000000000A1 -S315400495800000000000000000000000000000000091 -S315400495900000000000000000000000000000000081 -S315400495A00000000000000000000000000000000071 -S315400495B00000000000000000000000000000000061 -S315400495C00000000000000000000000000000000051 -S315400495D00000000000000000000000000000000041 -S315400495E00000000000000000000000000000000031 -S315400495F00000000000000000000000000000000021 -S315400496000000000000000000000000000000000010 -S315400496100000000000000000000000000000000000 -S3154004962000000000000000000000000000000000F0 -S3154004963000000000000000000000000000000000E0 -S3154004964000000000000000000000000000000000D0 -S3154004965000000000000000000000000000000000C0 -S3154004966000000000000000000000000000000000B0 -S3154004967000000000000000000000000000000000A0 -S315400496800000000000000000000000000000000090 -S315400496900000000000000000000000000000000080 -S315400496A00000000000000000000000000000000070 -S315400496B00000000000000000000000000000000060 -S315400496C00000000000000000000000000000000050 -S315400496D00000000000000000000000000000000040 -S315400496E00000000000000000000000000000000030 -S315400496F00000000000000000000000000000000020 -S31540049700000000000000000000000000000000000F -S3154004971000000000000000000000000000000000FF -S3154004972000000000000000000000000000000000EF -S3154004973000000000000000000000000000000000DF -S3154004974000000000000000000000000000000000CF -S3154004975000000000000000000000000000000000BF -S3154004976000000000000000000000000000000000AF -S31540049770000000000000000000000000000000009F -S31540049780000000000000000000000000000000008F -S31540049790000000000000000000000000000000007F -S315400497A0000000000000000000000000000000006F -S315400497B0000000000000000000000000000000005F -S315400497C0000000000000000000000000000000004F -S315400497D0000000000000000000000000000000003F -S315400497E0000000000000000000000000000000002F -S315400497F0000000000000000000000000000000001F -S31540049800000000000000000000000000000000000E -S3154004981000000000000000000000000000000000FE -S3154004982000000000000000000000000000000000EE -S3154004983000000000000000000000000000000000DE -S3154004984000000000000000000000000000000000CE -S3154004985000000000000000000000000000000000BE -S3154004986000000000000000000000000000000000AE -S31540049870000000000000000000000000000000009E -S31540049880000000000000000000000000000000008E -S31540049890000000000000000000000000000000007E -S315400498A0000000000000000000000000000000006E -S315400498B0000000000000000000000000000000005E -S315400498C0000000000000000000000000000000004E -S315400498D0000000000000000000000000000000003E -S315400498E0000000000000000000000000000000002E -S315400498F0000000000000000000000000000000001E -S31540049900000000000000000000000000000000000D -S3154004991000000000000000000000000000000000FD -S3154004992000000000000000000000000000000000ED -S3154004993000000000000000000000000000000000DD -S3154004994000000000000000000000000000000000CD -S3154004995000000000000000000000000000000000BD -S3154004996000000000000000000000000000000000AD -S31540049970000000000000000000000000000000009D -S31540049980000000000000000000000000000000008D -S31540049990000000000000000000000000000000007D -S315400499A0000000000000000000000000000000006D -S315400499B0000000000000000000000000000000005D -S315400499C0000000000000000000000000000000004D -S315400499D0000000000000000000000000000000003D -S315400499E0000000000000000000000000000000002D -S315400499F0000000000000000000000000000000001D -S31540049A00000000000000000000000000000000000C -S31540049A1000000000000000000000000000000000FC -S31540049A2000000000000000000000000000000000EC -S31540049A3000000000000000000000000000000000DC -S31540049A4000000000000000000000000000000000CC -S31540049A5000000000000000000000000000000000BC -S31540049A6000000000000000000000000000000000AC -S31540049A70000000000000000000000000000000009C -S31540049A80000000000000000000000000000000008C -S31540049A90000000000000000000000000000000007C -S31540049AA0000000000000000000000000000000006C -S31540049AB0000000000000000000000000000000005C -S31540049AC0000000000000000000000000000000004C -S31540049AD0000000000000000000000000000000003C -S31540049AE0000000000000000000000000000000002C -S31540049AF0000000000000000000000000000000001C -S31540049B00000000000000000000000000000000000B -S31540049B1000000000000000000000000000000000FB -S31540049B2000000000000000000000000000000000EB -S31540049B3000000000000000000000000000000000DB -S31540049B4000000000000000000000000000000000CB -S31540049B5000000000000000000000000000000000BB -S31540049B6000000000000000000000000000000000AB -S31540049B70000000000000000000000000000000009B -S31540049B80000000000000000000000000000000008B -S31540049B90000000000000000000000000000000007B -S31540049BA0000000000000000000000000000000006B -S31540049BB0000000000000000000000000000000005B -S31540049BC0000000000000000000000000000000004B -S31540049BD0000000000000000000000000000000003B -S31540049BE0000000000000000000000000000000002B -S31540049BF0000000000000000000000000000000001B -S31540049C00000000000000000000000000000000000A -S31540049C1000000000000000000000000000000000FA -S31540049C2000000000000000000000000000000000EA -S31540049C3000000000000000000000000000000000DA -S31540049C4000000000000000000000000000000000CA -S31540049C5000000000000000000000000000000000BA -S31540049C6000000000000000000000000000000000AA -S31540049C70000000000000000000000000000000009A -S31540049C80000000000000000000000000000000008A -S31540049C90000000000000000000000000000000007A -S31540049CA0000000000000000000000000000000006A -S31540049CB0000000000000000000000000000000005A -S31540049CC0000000000000000000000000000000004A -S31540049CD0000000000000000000000000000000003A -S31540049CE0000000000000000000000000000000002A -S31540049CF0000000000000000000000000000000001A -S31540049D000000000000000000000000000000000009 -S31540049D1000000000000000000000000000000000F9 -S31540049D2000000000000000000000000000000000E9 -S31540049D3000000000000000000000000000000000D9 -S31540049D4000000000000000000000000000000000C9 -S31540049D5000000000000000000000000000000000B9 -S31540049D6000000000000000000000000000000000A9 -S31540049D700000000000000000000000000000000099 -S31540049D800000000000000000000000000000000089 -S31540049D900000000000000000000000000000000079 -S31540049DA00000000000000000000000000000000069 -S31540049DB00000000000000000000000000000000059 -S31540049DC00000000000000000000000000000000049 -S31540049DD00000000000000000000000000000000039 -S31540049DE00000000000000000000000000000000029 -S31540049DF00000000000000000000000000000000019 -S31540049E000000000000000000000000000000000008 -S31540049E1000000000000000000000000000000000F8 -S31540049E2000000000000000000000000000000000E8 -S31540049E3000000000000000000000000000000000D8 -S31540049E4000000000000000000000000000000000C8 -S31540049E5000000000000000000000000000000000B8 -S31540049E6000000000000000000000000000000000A8 -S31540049E700000000000000000000000000000000098 -S31540049E800000000000000000000000000000000088 -S31540049E900000000000000000000000000000000078 -S31540049EA00000000000000000000000000000000068 -S31540049EB00000000000000000000000000000000058 -S31540049EC00000000000000000000000000000000048 -S31540049ED00000000000000000000000000000000038 -S31540049EE00000000000000000000000000000000028 -S31540049EF00000000000000000000000000000000018 -S31540049F000000000000000000000000000000000007 -S31540049F1000000000000000000000000000000000F7 -S31540049F2000000000000000000000000000000000E7 -S31540049F3000000000000000000000000000000000D7 -S31540049F4000000000000000000000000000000000C7 -S31540049F5000000000000000000000000000000000B7 -S31540049F6000000000000000000000000000000000A7 -S31540049F700000000000000000000000000000000097 -S31540049F800000000000000000000000000000000087 -S31540049F900000000000000000000000000000000077 -S31540049FA00000000000000000000000000000000067 -S31540049FB00000000000000000000000000000000057 -S31540049FC00000000000000000000000000000000047 -S31540049FD00000000000000000000000000000000037 -S31540049FE00000000000000000000000000000000027 -S31540049FF00000000000000000000000000000000017 -S3154004A0000000000000000000000000000000000006 -S3154004A01000000000000000000000000000000000F6 -S3154004A02000000000000000000000000000000000E6 -S3154004A03000000000000000000000000000000000D6 -S3154004A04000000000000000000000000000000000C6 -S3154004A05000000000000000000000000000000000B6 -S3154004A06000000000000000000000000000000000A6 -S3154004A0700000000000000000000000000000000096 -S3154004A0800000000000000000000000000000000086 -S3154004A0900000000000000000000000000000000076 -S3154004A0A00000000000000000000000000000000066 -S3154004A0B00000000000000000000000000000000056 -S3154004A0C00000000000000000000000000000000046 -S3154004A0D00000000000000000000000000000000036 -S3154004A0E00000000000000000000000000000000026 -S3154004A0F00000000000000000000000000000000016 -S3154004A1000000000000000000000000000000000005 -S3154004A11000000000000000000000000000000000F5 -S3154004A12000000000000000000000000000000000E5 -S3154004A13000000000000000000000000000000000D5 -S3154004A14000000000000000000000000000000000C5 -S3154004A15000000000000000000000000000000000B5 -S3154004A16000000000000000000000000000000000A5 -S3154004A1700000000000000000000000000000000095 -S3154004A1800000000000000000000000000000000085 -S3154004A1900000000000000000000000000000000075 -S3154004A1A00000000000000000000000000000000065 -S3154004A1B00000000000000000000000000000000055 -S3154004A1C00000000000000000000000000000000045 -S3154004A1D00000000000000000000000000000000035 -S3154004A1E00000000000000000000000000000000025 -S3154004A1F00000000000000000000000000000000015 -S3154004A2000000000000000000000000000000000004 -S3154004A21000000000000000000000000000000000F4 -S3154004A22000000000000000000000000000000000E4 -S3154004A23000000000000000000000000000000000D4 -S3154004A24000000000000000000000000000000000C4 -S3154004A25000000000000000000000000000000000B4 -S3154004A26000000000000000000000000000000000A4 -S3154004A2700000000000000000000000000000000094 -S3154004A2800000000000000000000000000000000084 -S3154004A2900000000000000000000000000000000074 -S3154004A2A00000000000000000000000000000000064 -S3154004A2B00000000000000000000000000000000054 -S3154004A2C00000000000000000000000000000000044 -S3154004A2D00000000000000000000000000000000034 -S3154004A2E00000000000000000000000000000000024 -S3154004A2F00000000000000000000000000000000014 -S3154004A3000000000000000000000000000000000003 -S3154004A31000000000000000000000000000000000F3 -S3154004A32000000000000000000000000000000000E3 -S3154004A33000000000000000000000000000000000D3 -S3154004A34000000000000000000000000000000000C3 -S3154004A35000000000000000000000000000000000B3 -S3154004A36000000000000000000000000000000000A3 -S3154004A3700000000000000000000000000000000093 -S3154004A3800000000000000000000000000000000083 -S3154004A3900000000000000000000000000000000073 -S3154004A3A00000000000000000000000000000000063 -S3154004A3B00000000000000000000000000000000053 -S3154004A3C00000000000000000000000000000000043 -S3154004A3D00000000000000000000000000000000033 -S3154004A3E00000000000000000000000000000000023 -S3154004A3F00000000000000000000000000000000013 -S3154004A4000000000000000000000000000000000002 -S3154004A41000000000000000000000000000000000F2 -S3154004A42000000000000000000000000000000000E2 -S3154004A43000000000000000000000000000000000D2 -S3154004A44000000000000000000000000000000000C2 -S3154004A45000000000000000000000000000000000B2 -S3154004A46000000000000000000000000000000000A2 -S3154004A4700000000000000000000000000000000092 -S3154004A4800000000000000000000000000000000082 -S3154004A4900000000000000000000000000000000072 -S3154004A4A00000000000000000000000000000000062 -S3154004A4B00000000000000000000000000000000052 -S3154004A4C00000000000000000000000000000000042 -S3154004A4D00000000000000000000000000000000032 -S3154004A4E00000000000000000000000000000000022 -S3154004A4F00000000000000000000000000000000012 -S3154004A5000000000000000000000000000000000001 -S3154004A51000000000000000000000000000000000F1 -S3154004A52000000000000000000000000000000000E1 -S3154004A53000000000000000000000000000000000D1 -S3154004A54000000000000000000000000000000000C1 -S3154004A55000000000000000000000000000000000B1 -S3154004A56000000000000000000000000000000000A1 -S3154004A5700000000000000000000000000000000091 -S3154004A5800000000000000000000000000000000081 -S3154004A5900000000000000000000000000000000071 -S3154004A5A00000000000000000000000000000000061 -S3154004A5B00000000000000000000000000000000051 -S3154004A5C00000000000000000000000000000000041 -S3154004A5D00000000000000000000000000000000031 -S3154004A5E00000000000000000000000000000000021 -S3154004A5F00000000000000000000000000000000011 -S3154004A6000000000000000000000000000000000000 -S3154004A61000000000000000000000000000000000F0 -S3154004A62000000000000000000000000000000000E0 -S3154004A63000000000000000000000000000000000D0 -S3154004A64000000000000000000000000000000000C0 -S3154004A65000000000000000000000000000000000B0 -S3154004A66000000000000000000000000000000000A0 -S3154004A6700000000000000000000000000000000090 -S3154004A6800000000000000000000000000000000080 -S3154004A6900000000000000000000000000000000070 -S3154004A6A00000000000000000000000000000000060 -S3154004A6B00000000000000000000000000000000050 -S3154004A6C00000000000000000000000000000000040 -S3154004A6D00000000000000000000000000000000030 -S3154004A6E00000000000000000000000000000000020 -S3154004A6F00000000000000000000000000000000010 -S3154004A70000000000000000000000000000000000FF -S3154004A71000000000000000000000000000000000EF -S3154004A72000000000000000000000000000000000DF -S3154004A73000000000000000000000000000000000CF -S3154004A74000000000000000000000000000000000BF -S3154004A75000000000000000000000000000000000AF -S3154004A760000000000000000000000000000000009F -S3154004A770000000000000000000000000000000008F -S3154004A780000000000000000000000000000000007F -S3154004A790000000000000000000000000000000006F -S3154004A7A0000000000000000000000000000000005F -S3154004A7B0000000000000000000000000000000004F -S3154004A7C0000000000000000000000000000000003F -S3154004A7D0000000000000000000000000000000002F -S3154004A7E0000000000000000000000000000000001F -S3154004A7F0000000000000000000000000000000000F -S3154004A80000000000000000000000000000000000FE -S3154004A81000000000000000000000000000000000EE -S3154004A82000000000000000000000000000000000DE -S3154004A83000000000000000000000000000000000CE -S3154004A84000000000000000000000000000000000BE -S3154004A85000000000000000000000000000000000AE -S3154004A860000000000000000000000000000000009E -S3154004A870000000000000000000000000000000008E -S3154004A880000000000000000000000000000000007E -S3154004A890000000000000000000000000000000006E -S3154004A8A0000000000000000000000000000000005E -S3154004A8B0000000000000000000000000000000004E -S3154004A8C0000000000000000000000000000000003E -S3154004A8D0000000000000000000000000000000002E -S3154004A8E0000000000000000000000000000000001E -S3154004A8F0000000000000000000000000000000000E -S3154004A90000000000000000000000000000000000FD -S3154004A91000000000000000000000000000000000ED -S3154004A92000000000000000000000000000000000DD -S3154004A93000000000000000000000000000000000CD -S3154004A94000000000000000000000000000000000BD -S3154004A95000000000000000000000000000000000AD -S3154004A960000000000000000000000000000000009D -S3154004A970000000000000000000000000000000008D -S3154004A980000000000000000000000000000000007D -S3154004A990000000000000000000000000000000006D -S3154004A9A0000000000000000000000000000000005D -S3154004A9B0000000000000000000000000000000004D -S3154004A9C0000000000000000000000000000000003D -S3154004A9D0000000000000000000000000000000002D -S3154004A9E0000000000000000000000000000000001D -S3154004A9F0000000000000000000000000000000000D -S3154004AA0000000000000000000000000000000000FC -S3154004AA1000000000000000000000000000000000EC -S3154004AA2000000000000000000000000000000000DC -S3154004AA3000000000000000000000000000000000CC -S3154004AA4000000000000000000000000000000000BC -S3154004AA5000000000000000000000000000000000AC -S3154004AA60000000000000000000000000000000009C -S3154004AA70000000000000000000000000000000008C -S3154004AA80000000000000000000000000000000007C -S3154004AA90000000000000000000000000000000006C -S3154004AAA0000000000000000000000000000000005C -S3154004AAB0000000000000000000000000000000004C -S3154004AAC0000000000000000000000000000000003C -S3154004AAD0000000000000000000000000000000002C -S3154004AAE0000000000000000000000000000000001C -S3154004AAF0000000000000000000000000000000000C -S3154004AB0000000000000000000000000000000000FB -S3154004AB1000000000000000000000000000000000EB -S3154004AB2000000000000000000000000000000000DB -S3154004AB3000000000000000000000000000000000CB -S3154004AB4000000000000000000000000000000000BB -S3154004AB5000000000000000000000000000000000AB -S3154004AB60000000000000000000000000000000009B -S3154004AB70000000000000000000000000000000008B -S3154004AB80000000000000000000000000000000007B -S3154004AB90000000000000000000000000000000006B -S3154004ABA0000000000000000000000000000000005B -S3154004ABB0000000000000000000000000000000004B -S3154004ABC0000000000000000000000000000000003B -S3154004ABD0000000000000000000000000000000002B -S3154004ABE0000000000000000000000000000000001B -S3154004ABF0000000000000000000000000000000000B -S3154004AC0000000000000000000000000000000000FA -S3154004AC1000000000000000000000000000000000EA -S3154004AC2000000000000000000000000000000000DA -S3154004AC3000000000000000000000000000000000CA -S3154004AC4000000000000000000000000000000000BA -S3154004AC5000000000000000000000000000000000AA -S3154004AC60000000000000000000000000000000009A -S3154004AC70000000000000000000000000000000008A -S3154004AC80000000000000000000000000000000007A -S3154004AC90000000000000000000000000000000006A -S3154004ACA0000000000000000000000000000000005A -S3154004ACB0000000000000000000000000000000004A -S3154004ACC0000000000000000000000000000000003A -S3154004ACD0000000000000000000000000000000002A -S3154004ACE0000000000000000000000000000000001A -S3154004ACF0000000000000000000000000000000000A -S3154004AD0000000000000000000000000000000000F9 -S3154004AD1000000000000000000000000000000000E9 -S3154004AD2000000000000000000000000000000000D9 -S3154004AD3000000000000000000000000000000000C9 -S3154004AD4000000000000000000000000000000000B9 -S3154004AD5000000000000000000000000000000000A9 -S3154004AD600000000000000000000000000000000099 -S3154004AD700000000000000000000000000000000089 -S3154004AD800000000000000000000000000000000079 -S3154004AD900000000000000000000000000000000069 -S3154004ADA00000000000000000000000000000000059 -S3154004ADB00000000000000000000000000000000049 -S3154004ADC00000000000000000000000000000000039 -S3154004ADD00000000000000000000000000000000029 -S3154004ADE00000000000000000000000000000000019 -S3154004ADF00000000000000000000000000000000009 -S3154004AE0000000000000000000000000000000000F8 -S3154004AE1000000000000000000000000000000000E8 -S3154004AE2000000000000000000000000000000000D8 -S3154004AE3000000000000000000000000000000000C8 -S3154004AE4000000000000000000000000000000000B8 -S3154004AE5000000000000000000000000000000000A8 -S3154004AE600000000000000000000000000000000098 -S3154004AE700000000000000000000000000000000088 -S3154004AE800000000000000000000000000000000078 -S3154004AE900000000000000000000000000000000068 -S3154004AEA00000000000000000000000000000000058 -S3154004AEB00000000000000000000000000000000048 -S3154004AEC00000000000000000000000000000000038 -S3154004AED00000000000000000000000000000000028 -S3154004AEE00000000000000000000000000000000018 -S3154004AEF00000000000000000000000000000000008 -S3154004AF0000000000000000000000000000000000F7 -S3154004AF1000000000000000000000000000000000E7 -S3154004AF2000000000000000000000000000000000D7 -S3154004AF3000000000000000000000000000000000C7 -S3154004AF4000000000000000000000000000000000B7 -S3154004AF5000000000000000000000000000000000A7 -S3154004AF600000000000000000000000000000000097 -S3154004AF700000000000000000000000000000000087 -S3154004AF800000000000000000000000000000000077 -S3154004AF900000000000000000000000000000000067 -S3154004AFA00000000000000000000000000000000057 -S3154004AFB00000000000000000000000000000000047 -S3154004AFC00000000000000000000000000000000037 -S3154004AFD00000000000000000000000000000000027 -S3154004AFE00000000000000000000000000000000017 -S3154004AFF00000000000000000000000000000000007 -S3154004B00000000000000000000000000000000000F6 -S3154004B01000000000000000000000000000000000E6 -S3154004B02000000000000000000000000000000000D6 -S3154004B03000000000000000000000000000000000C6 -S3154004B04000000000000000000000000000000000B6 -S3154004B05000000000000000000000000000000000A6 -S3154004B0600000000000000000000000000000000096 -S3154004B0700000000000000000000000000000000086 -S3154004B0800000000000000000000000000000000076 -S3154004B0900000000000000000000000000000000066 -S3154004B0A00000000000000000000000000000000056 -S3154004B0B00000000000000000000000000000000046 -S3154004B0C00000000000000000000000000000000036 -S3154004B0D00000000000000000000000000000000026 -S3154004B0E00000000000000000000000000000000016 -S3154004B0F00000000000000000000000000000000006 -S3154004B10000000000000000000000000000000000F5 -S3154004B11000000000000000000000000000000000E5 -S3154004B12000000000000000000000000000000000D5 -S3154004B13000000000000000000000000000000000C5 -S3154004B14000000000000000000000000000000000B5 -S3154004B15000000000000000000000000000000000A5 -S3154004B1600000000000000000000000000000000095 -S3154004B1700000000000000000000000000000000085 -S3154004B1800000000000000000000000000000000075 -S3154004B1900000000000000000000000000000000065 -S3154004B1A00000000000000000000000000000000055 -S3154004B1B00000000000000000000000000000000045 -S3154004B1C00000000000000000000000000000000035 -S3154004B1D00000000000000000000000000000000025 -S3154004B1E00000000000000000000000000000000015 -S3154004B1F00000000000000000000000000000000005 -S3154004B20000000000000000000000000000000000F4 -S3154004B21000000000000000000000000000000000E4 -S3154004B22000000000000000000000000000000000D4 -S3154004B23000000000000000000000000000000000C4 -S3154004B24000000000000000000000000000000000B4 -S3154004B25000000000000000000000000000000000A4 -S3154004B2600000000000000000000000000000000094 -S3154004B2700000000000000000000000000000000084 -S3154004B2800000000000000000000000000000000074 -S3154004B2900000000000000000000000000000000064 -S3154004B2A00000000000000000000000000000000054 -S3154004B2B00000000000000000000000000000000044 -S3154004B2C00000000000000000000000000000000034 -S3154004B2D00000000000000000000000000000000024 -S3154004B2E00000000000000000000000000000000014 -S3154004B2F00000000000000000000000000000000004 -S3154004B30000000000000000000000000000000000F3 -S3154004B31000000000000000000000000000000000E3 -S3154004B32000000000000000000000000000000000D3 -S3154004B33000000000000000000000000000000000C3 -S3154004B34000000000000000000000000000000000B3 -S3154004B35000000000000000000000000000000000A3 -S3154004B3600000000000000000000000000000000093 -S3154004B3700000000000000000000000000000000083 -S3154004B3800000000000000000000000000000000073 -S3154004B3900000000000000000000000000000000063 -S3154004B3A00000000000000000000000000000000053 -S3154004B3B00000000000000000000000000000000043 -S3154004B3C00000000000000000000000000000000033 -S3154004B3D00000000000000000000000000000000023 -S3154004B3E00000000000000000000000000000000013 -S3154004B3F00000000000000000000000000000000003 -S3154004B40000000000000000000000000000000000F2 -S3154004B41000000000000000000000000000000000E2 -S3154004B42000000000000000000000000000000000D2 -S3154004B43000000000000000000000000000000000C2 -S3154004B44000000000000000000000000000000000B2 -S3154004B45000000000000000000000000000000000A2 -S3154004B4600000000000000000000000000000000092 -S3154004B4700000000000000000000000000000000082 -S3154004B4800000000000000000000000000000000072 -S3154004B4900000000000000000000000000000000062 -S3154004B4A00000000000000000000000000000000052 -S3154004B4B00000000000000000000000000000000042 -S3154004B4C00000000000000000000000000000000032 -S3154004B4D00000000000000000000000000000000022 -S3154004B4E00000000000000000000000000000000012 -S3154004B4F00000000000000000000000000000000002 -S3154004B50000000000000000000000000000000000F1 -S3154004B51000000000000000000000000000000000E1 -S3154004B52000000000000000000000000000000000D1 -S3154004B53000000000000000000000000000000000C1 -S3154004B54000000000000000000000000000000000B1 -S3154004B55000000000000000000000000000000000A1 -S3154004B5600000000000000000000000000000000091 -S3154004B5700000000000000000000000000000000081 -S3154004B5800000000000000000000000000000000071 -S3154004B5900000000000000000000000000000000061 -S3154004B5A00000000000000000000000000000000051 -S3154004B5B00000000000000000000000000000000041 -S3154004B5C00000000000000000000000000000000031 -S3154004B5D00000000000000000000000000000000021 -S3154004B5E00000000000000000000000000000000011 -S3154004B5F00000000000000000000000000000000001 -S3154004B60000000000000000000000000000000000F0 -S3154004B61000000000000000000000000000000000E0 -S3154004B62000000000000000000000000000000000D0 -S3154004B63000000000000000000000000000000000C0 -S3154004B64000000000000000000000000000000000B0 -S3154004B65000000000000000000000000000000000A0 -S3154004B6600000000000000000000000000000000090 -S3154004B6700000000000000000000000000000000080 -S3154004B6800000000000000000000000000000000070 -S3154004B6900000000000000000000000000000000060 -S3154004B6A00000000000000000000000000000000050 -S3154004B6B00000000000000000000000000000000040 -S3154004B6C00000000000000000000000000000000030 -S3154004B6D00000000000000000000000000000000020 -S3154004B6E00000000000000000000000000000000010 -S3154004B6F00000000000000000000000000000000000 -S3154004B70000000000000000000000000000000000EF -S3154004B71000000000000000000000000000000000DF -S3154004B72000000000000000000000000000000000CF -S3154004B73000000000000000000000000000000000BF -S3154004B74000000000000000000000000000000000AF -S3154004B750000000000000000000000000000000009F -S3154004B760000000000000000000000000000000008F -S3154004B770000000000000000000000000000000007F -S3154004B780000000000000000000000000000000006F -S3154004B790000000000000000000000000000000005F -S3154004B7A0000000000000000000000000000000004F -S3154004B7B0000000000000000000000000000000003F -S3154004B7C0000000000000000000000000000000002F -S3154004B7D0000000000000000000000000000000001F -S3154004B7E0000000000000000000000000000000000F -S3154004B7F000000000000000000000000000000000FF -S3154004B80000000000000000000000000000000000EE -S3154004B81000000000000000000000000000000000DE -S3154004B82000000000000000000000000000000000CE -S3154004B83000000000000000000000000000000000BE -S3154004B84000000000000000000000000000000000AE -S3154004B850000000000000000000000000000000009E -S3154004B860000000000000000000000000000000008E -S3154004B870000000000000000000000000000000007E -S3154004B880000000000000000000000000000000006E -S3154004B890000000000000000000000000000000005E -S3154004B8A0000000000000000000000000000000004E -S3154004B8B0000000000000000000000000000000003E -S3154004B8C0000000000000000000000000000000002E -S3154004B8D0000000000000000000000000000000001E -S3154004B8E0000000000000000000000000000000000E -S3154004B8F000000000000000000000000000000000FE -S3154004B90000000000000000000000000000000000ED -S3154004B91000000000000000000000000000000000DD -S3154004B92000000000000000000000000000000000CD -S3154004B93000000000000000000000000000000000BD -S3154004B94000000000000000000000000000000000AD -S3154004B950000000000000000000000000000000009D -S3154004B960000000000000000000000000000000008D -S3154004B970000000000000000000000000000000007D -S3154004B980000000000000000000000000000000006D -S3154004B990000000000000000000000000000000005D -S3154004B9A0000000000000000000000000000000004D -S3154004B9B0000000000000000000000000000000003D -S3154004B9C0000000000000000000000000000000002D -S3154004B9D0000000000000000000000000000000001D -S3154004B9E0000000000000000000000000000000000D -S3154004B9F000000000000000000000000000000000FD -S3154004BA0000000000000000000000000000000000EC -S3154004BA1000000000000000000000000000000000DC -S3154004BA2000000000000000000000000000000000CC -S3154004BA3000000000000000000000000000000000BC -S3154004BA4000000000000000000000000000000000AC -S3154004BA50000000000000000000000000000000009C -S3154004BA60000000000000000000000000000000008C -S3154004BA70000000000000000000000000000000007C -S3154004BA80000000000000000000000000000000006C -S3154004BA90000000000000000000000000000000005C -S3154004BAA0000000000000000000000000000000004C -S3154004BAB0000000000000000000000000000000003C -S3154004BAC0000000000000000000000000000000002C -S3154004BAD0000000000000000000000000000000001C -S3154004BAE0000000000000000000000000000000000C -S3154004BAF000000000000000000000000000000000FC -S3154004BB0000000000000000000000000000000000EB -S3154004BB1000000000000000000000000000000000DB -S3154004BB2000000000000000000000000000000000CB -S3154004BB3000000000000000000000000000000000BB -S3154004BB4000000000000000000000000000000000AB -S3154004BB50000000000000000000000000000000009B -S3154004BB60000000000000000000000000000000008B -S3154004BB70000000000000000000000000000000007B -S3154004BB80000000000000000000000000000000006B -S3154004BB90000000000000000000000000000000005B -S3154004BBA0000000000000000000000000000000004B -S3154004BBB0000000000000000000000000000000003B -S3154004BBC0000000000000000000000000000000002B -S3154004BBD0000000000000000000000000000000001B -S3154004BBE0000000000000000000000000000000000B -S3154004BBF000000000000000000000000000000000FB -S3154004BC0000000000000000000000000000000000EA -S3154004BC1000000000000000000000000000000000DA -S3154004BC2000000000000000000000000000000000CA -S3154004BC3000000000000000000000000000000000BA -S3154004BC4000000000000000000000000000000000AA -S3154004BC50000000000000000000000000000000009A -S3154004BC60000000000000000000000000000000008A -S3154004BC70000000000000000000000000000000007A -S3154004BC80000000000000000000000000000000006A -S3154004BC90000000000000000000000000000000005A -S3154004BCA0000000000000000000000000000000004A -S3154004BCB0000000000000000000000000000000003A -S3154004BCC0000000000000000000000000000000002A -S3154004BCD0000000000000000000000000000000001A -S3154004BCE0000000000000000000000000000000000A -S3154004BCF000000000000000000000000000000000FA -S3154004BD0000000000000000000000000000000000E9 -S3154004BD1000000000000000000000000000000000D9 -S3154004BD2000000000000000000000000000000000C9 -S3154004BD3000000000000000000000000000000000B9 -S3154004BD4000000000000000000000000000000000A9 -S3154004BD500000000000000000000000000000000099 -S3154004BD600000000000000000000000000000000089 -S3154004BD700000000000000000000000000000000079 -S3154004BD800000000000000000000000000000000069 -S3154004BD900000000000000000000000000000000059 -S3154004BDA00000000000000000000000000000000049 -S3154004BDB00000000000000000000000000000000039 -S3154004BDC00000000000000000000000000000000029 -S3154004BDD00000000000000000000000000000000019 -S3154004BDE00000000000000000000000000000000009 -S3154004BDF000000000000000000000000000000000F9 -S3154004BE0000000000000000000000000000000000E8 -S3154004BE1000000000000000000000000000000000D8 -S3154004BE2000000000000000000000000000000000C8 -S3154004BE3000000000000000000000000000000000B8 -S3154004BE4000000000000000000000000000000000A8 -S3154004BE500000000000000000000000000000000098 -S3154004BE600000000000000000000000000000000088 -S3154004BE700000000000000000000000000000000078 -S3154004BE800000000000000000000000000000000068 -S3154004BE900000000000000000000000000000000058 -S3154004BEA00000000000000000000000000000000048 -S3154004BEB00000000000000000000000000000000038 -S3154004BEC00000000000000000000000000000000028 -S3154004BED00000000000000000000000000000000018 -S3154004BEE00000000000000000000000000000000008 -S3154004BEF000000000000000000000000000000000F8 -S3154004BF0000000000000000000000000000000000E7 -S3154004BF1000000000000000000000000000000000D7 -S3154004BF2000000000000000000000000000000000C7 -S3154004BF3000000000000000000000000000000000B7 -S3154004BF4000000000000000000000000000000000A7 -S3154004BF500000000000000000000000000000000097 -S3154004BF600000000000000000000000000000000087 -S3154004BF700000000000000000000000000000000077 -S3154004BF800000000000000000000000000000000067 -S3154004BF900000000000000000000000000000000057 -S3154004BFA00000000000000000000000000000000047 -S3154004BFB00000000000000000000000000000000037 -S3154004BFC00000000000000000000000000000000027 -S3154004BFD00000000000000000000000000000000017 -S3154004BFE00000000000000000000000000000000007 -S3154004BFF000000000000000000000000000000000F7 -S3154004C00000000000000000000000000000000000E6 -S3154004C01000000000000000000000000000000000D6 -S3154004C02000000000000000000000000000000000C6 -S3154004C03000000000000000000000000000000000B6 -S3154004C04000000000000000000000000000000000A6 -S3154004C0500000000000000000000000000000000096 -S3154004C0600000000000000000000000000000000086 -S3154004C0700000000000000000000000000000000076 -S3154004C0800000000000000000000000000000000066 -S3154004C0900000000000000000000000000000000056 -S3154004C0A00000000000000000000000000000000046 -S3154004C0B00000000000000000000000000000000036 -S3154004C0C00000000000000000000000000000000026 -S3154004C0D00000000000000000000000000000000016 -S3154004C0E00000000000000000000000000000000006 -S3154004C0F000000000000000000000000000000000F6 -S3154004C10000000000000000000000000000000000E5 -S3154004C11000000000000000000000000000000000D5 -S3154004C12000000000000000000000000000000000C5 -S3154004C13000000000000000000000000000000000B5 -S3154004C14000000000000000000000000000000000A5 -S3154004C1500000000000000000000000000000000095 -S3154004C1600000000000000000000000000000000085 -S3154004C1700000000000000000000000000000000075 -S3154004C1800000000000000000000000000000000065 -S3154004C1900000000000000000000000000000000055 -S3154004C1A00000000000000000000000000000000045 -S3154004C1B00000000000000000000000000000000035 -S3154004C1C00000000000000000000000000000000025 -S3154004C1D00000000000000000000000000000000015 -S3154004C1E00000000000000000000000000000000005 -S3154004C1F000000000000000000000000000000000F5 -S3154004C20000000000000000000000000000000000E4 -S3154004C21000000000000000000000000000000000D4 -S3154004C22000000000000000000000000000000000C4 -S3154004C23000000000000000000000000000000000B4 -S3154004C24000000000000000000000000000000000A4 -S3154004C2500000000000000000000000000000000094 -S3154004C2600000000000000000000000000000000084 -S3154004C2700000000000000000000000000000000074 -S3154004C2800000000000000000000000000000000064 -S3154004C2900000000000000000000000000000000054 -S3154004C2A00000000000000000000000000000000044 -S3154004C2B00000000000000000000000000000000034 -S3154004C2C00000000000000000000000000000000024 -S3154004C2D00000000000000000000000000000000014 -S3154004C2E00000000000000000000000000000000004 -S3154004C2F000000000000000000000000000000000F4 -S3154004C30000000000000000000000000000000000E3 -S3154004C31000000000000000000000000000000000D3 -S3154004C32000000000000000000000000000000000C3 -S3154004C33000000000000000000000000000000000B3 -S3154004C34000000000000000000000000000000000A3 -S3154004C3500000000000000000000000000000000093 -S3154004C3600000000000000000000000000000000083 -S3154004C3700000000000000000000000000000000073 -S3154004C3800000000000000000000000000000000063 -S3154004C3900000000000000000000000000000000053 -S3154004C3A00000000000000000000000000000000043 -S3154004C3B00000000000000000000000000000000033 -S3154004C3C00000000000000000000000000000000023 -S3154004C3D00000000000000000000000000000000013 -S3154004C3E00000000000000000000000000000000003 -S3154004C3F000000000000000000000000000000000F3 -S3154004C40000000000000000000000000000000000E2 -S3154004C41000000000000000000000000000000000D2 -S3154004C42000000000000000000000000000000000C2 -S3154004C43000000000000000000000000000000000B2 -S3154004C44000000000000000000000000000000000A2 -S3154004C4500000000000000000000000000000000092 -S3154004C4600000000000000000000000000000000082 -S3154004C4700000000000000000000000000000000072 -S3154004C4800000000000000000000000000000000062 -S3154004C4900000000000000000000000000000000052 -S3154004C4A00000000000000000000000000000000042 -S3154004C4B00000000000000000000000000000000032 -S3154004C4C00000000000000000000000000000000022 -S3154004C4D00000000000000000000000000000000012 -S3154004C4E00000000000000000000000000000000002 -S3154004C4F000000000000000000000000000000000F2 -S3154004C50000000000000000000000000000000000E1 -S3154004C51000000000000000000000000000000000D1 -S3154004C52000000000000000000000000000000000C1 -S3154004C53000000000000000000000000000000000B1 -S3154004C54000000000000000000000000000000000A1 -S3154004C5500000000000000000000000000000000091 -S3154004C5600000000000000000000000000000000081 -S3154004C5700000000000000000000000000000000071 -S3154004C5800000000000000000000000000000000061 -S3154004C5900000000000000000000000000000000051 -S3154004C5A00000000000000000000000000000000041 -S3154004C5B00000000000000000000000000000000031 -S3154004C5C00000000000000000000000000000000021 -S3154004C5D00000000000000000000000000000000011 -S3154004C5E00000000000000000000000000000000001 -S3154004C5F000000000000000000000000000000000F1 -S3154004C60000000000000000000000000000000000E0 -S3154004C61000000000000000000000000000000000D0 -S3154004C62000000000000000000000000000000000C0 -S3154004C63000000000000000000000000000000000B0 -S3154004C64000000000000000000000000000000000A0 -S3154004C6500000000000000000000000000000000090 -S3154004C6600000000000000000000000000000000080 -S3154004C6700000000000000000000000000000000070 -S3154004C6800000000000000000000000000000000060 -S3154004C6900000000000000000000000000000000050 -S3154004C6A00000000000000000000000000000000040 -S3154004C6B00000000000000000000000000000000030 -S3154004C6C00000000000000000000000000000000020 -S3154004C6D00000000000000000000000000000000010 -S3154004C6E00000000000000000000000000000000000 -S3154004C6F000000000000000000000000000000000F0 -S3154004C70000000000000000000000000000000000DF -S3154004C71000000000000000000000000000000000CF -S3154004C72000000000000000000000000000000000BF -S3154004C73000000000000000000000000000000000AF -S3154004C740000000000000000000000000000000009F -S3154004C750000000000000000000000000000000008F -S3154004C760000000000000000000000000000000007F -S3154004C770000000000000000000000000000000006F -S3154004C780000000000000000000000000000000005F -S3154004C790000000000000000000000000000000004F -S3154004C7A0000000000000000000000000000000003F -S3154004C7B0000000000000000000000000000000002F -S3154004C7C0000000000000000000000000000000001F -S3154004C7D0000000000000000000000000000000000F -S3154004C7E000000000000000000000000000000000FF -S3154004C7F000000000000000000000000000000000EF -S3154004C80000000000000000000000000000000000DE -S3154004C81000000000000000000000000000000000CE -S3154004C82000000000000000000000000000000000BE -S3154004C83000000000000000000000000000000000AE -S3154004C840000000000000000000000000000000009E -S3154004C850000000000000000000000000000000008E -S3154004C860000000000000000000000000000000007E -S3154004C870000000000000000000000000000000006E -S3154004C880000000000000000000000000000000005E -S3154004C890000000000000000000000000000000004E -S3154004C8A0000000000000000000000000000000003E -S3154004C8B0000000000000000000000000000000002E -S3154004C8C0000000000000000000000000000000001E -S3154004C8D0000000000000000000000000000000000E -S3154004C8E000000000000000000000000000000000FE -S3154004C8F000000000000000000000000000000000EE -S3154004C90000000000000000000000000000000000DD -S3154004C91000000000000000000000000000000000CD -S3154004C92000000000000000000000000000000000BD -S3154004C93000000000000000000000000000000000AD -S3154004C940000000000000000000000000000000009D -S3154004C950000000000000000000000000000000008D -S3154004C960000000000000000000000000000000007D -S3154004C970000000000000000000000000000000006D -S3154004C980000000000000000000000000000000005D -S3154004C990000000000000000000000000000000004D -S3154004C9A0000000000000000000000000000000003D -S3154004C9B0000000000000000000000000000000002D -S3154004C9C0000000000000000000000000000000001D -S3154004C9D0000000000000000000000000000000000D -S3154004C9E000000000000000000000000000000000FD -S3154004C9F000000000000000000000000000000000ED -S3154004CA0000000000000000000000000000000000DC -S3154004CA1000000000000000000000000000000000CC -S3154004CA2000000000000000000000000000000000BC -S3154004CA3000000000000000000000000000000000AC -S3154004CA40000000000000000000000000000000009C -S3154004CA50000000000000000000000000000000008C -S3154004CA60000000000000000000000000000000007C -S3154004CA70000000000000000000000000000000006C -S3154004CA80000000000000000000000000000000005C -S3154004CA90000000000000000000000000000000004C -S3154004CAA0000000000000000000000000000000003C -S3154004CAB0000000000000000000000000000000002C -S3154004CAC0000000000000000000000000000000001C -S3154004CAD0000000000000000000000000000000000C -S3154004CAE000000000000000000000000000000000FC -S3154004CAF000000000000000000000000000000000EC -S3154004CB0000000000000000000000000000000000DB -S3154004CB1000000000000000000000000000000000CB -S3154004CB2000000000000000000000000000000000BB -S3154004CB3000000000000000000000000000000000AB -S3154004CB40000000000000000000000000000000009B -S3154004CB50000000000000000000000000000000008B -S3154004CB60000000000000000000000000000000007B -S3154004CB70000000000000000000000000000000006B -S3154004CB80000000000000000000000000000000005B -S3154004CB90000000000000000000000000000000004B -S3154004CBA0000000000000000000000000000000003B -S3154004CBB0000000000000000000000000000000002B -S3154004CBC0000000000000000000000000000000001B -S3154004CBD0000000000000000000000000000000000B -S3154004CBE000000000000000000000000000000000FB -S3154004CBF000000000000000000000000000000000EB -S3154004CC0000000000000000000000000000000000DA -S3154004CC1000000000000000000000000000000000CA -S3154004CC2000000000000000000000000000000000BA -S3154004CC3000000000000000000000000000000000AA -S3154004CC40000000000000000000000000000000009A -S3154004CC50000000000000000000000000000000008A -S3154004CC60000000000000000000000000000000007A -S3154004CC70000000000000000000000000000000006A -S3154004CC80000000000000000000000000000000005A -S3154004CC90000000000000000000000000000000004A -S3154004CCA0000000000000000000000000000000003A -S3154004CCB0000000000000000000000000000000002A -S3154004CCC0000000000000000000000000000000001A -S3154004CCD0000000000000000000000000000000000A -S3154004CCE000000000000000000000000000000000FA -S3154004CCF000000000000000000000000000000000EA -S3154004CD0000000000000000000000000000000000D9 -S3154004CD1000000000000000000000000000000000C9 -S3154004CD2000000000000000000000000000000000B9 -S3154004CD3000000000000000000000000000000000A9 -S3154004CD400000000000000000000000000000000099 -S3154004CD500000000000000000000000000000000089 -S3154004CD600000000000000000000000000000000079 -S3154004CD700000000000000000000000000000000069 -S3154004CD800000000000000000000000000000000059 -S3154004CD900000000000000000000000000000000049 -S3154004CDA00000000000000000000000000000000039 -S3154004CDB00000000000000000000000000000000029 -S3154004CDC00000000000000000000000000000000019 -S3154004CDD00000000000000000000000000000000009 -S3154004CDE000000000000000000000000000000000F9 -S3154004CDF000000000000000000000000000000000E9 -S3154004CE0000000000000000000000000000000000D8 -S3154004CE1000000000000000000000000000000000C8 -S3154004CE2000000000000000000000000000000000B8 -S3154004CE3000000000000000000000000000000000A8 -S3154004CE400000000000000000000000000000000098 -S3154004CE500000000000000000000000000000000088 -S3154004CE600000000000000000000000000000000078 -S3154004CE700000000000000000000000000000000068 -S3154004CE800000000000000000000000000000000058 -S3154004CE900000000000000000000000000000000048 -S3154004CEA00000000000000000000000000000000038 -S3154004CEB00000000000000000000000000000000028 -S3154004CEC00000000000000000000000000000000018 -S3154004CED00000000000000000000000000000000008 -S3154004CEE000000000000000000000000000000000F8 -S3154004CEF000000000000000000000000000000000E8 -S3154004CF0000000000000000000000000000000000D7 -S3154004CF1000000000000000000000000000000000C7 -S3154004CF2000000000000000000000000000000000B7 -S3154004CF3000000000000000000000000000000000A7 -S3154004CF400000000000000000000000000000000097 -S3154004CF500000000000000000000000000000000087 -S3154004CF600000000000000000000000000000000077 -S3154004CF700000000000000000000000000000000067 -S3154004CF800000000000000000000000000000000057 -S3154004CF900000000000000000000000000000000047 -S3154004CFA00000000000000000000000000000000037 -S3154004CFB00000000000000000000000000000000027 -S3154004CFC00000000000000000000000000000000017 -S3154004CFD00000000000000000000000000000000007 -S3154004CFE000000000000000000000000000000000F7 -S3154004CFF000000000000000000000000000000000E7 -S3154004D00000000000000000000000000000000000D6 -S3154004D01000000000000000000000000000000000C6 -S3154004D02000000000000000000000000000000000B6 -S3154004D03000000000000000000000000000000000A6 -S3154004D0400000000000000000000000000000000096 -S3154004D0500000000000000000000000000000000086 -S3154004D0600000000000000000000000000000000076 -S3154004D0700000000000000000000000000000000066 -S3154004D0800000000000000000000000000000000056 -S3154004D0900000000000000000000000000000000046 -S3154004D0A00000000000000000000000000000000036 -S3154004D0B00000000000000000000000000000000026 -S3154004D0C00000000000000000000000000000000016 -S3154004D0D00000000000000000000000000000000006 -S3154004D0E000000000000000000000000000000000F6 -S3154004D0F000000000000000000000000000000000E6 -S3154004D10000000000000000000000000000000000D5 -S3154004D11000000000000000000000000000000000C5 -S3154004D12000000000000000000000000000000000B5 -S3154004D13000000000000000000000000000000000A5 -S3154004D1400000000000000000000000000000000095 -S3154004D1500000000000000000000000000000000085 -S3154004D1600000000000000000000000000000000075 -S3154004D1700000000000000000000000000000000065 -S3154004D1800000000000000000000000000000000055 -S3154004D1900000000000000000000000000000000045 -S3154004D1A00000000000000000000000000000000035 -S3154004D1B00000000000000000000000000000000025 -S3154004D1C00000000000000000000000000000000015 -S3154004D1D00000000000000000000000000000000005 -S3154004D1E000000000000000000000000000000000F5 -S3154004D1F000000000000000000000000000000000E5 -S3154004D20000000000000000000000000000000000D4 -S3154004D21000000000000000000000000000000000C4 -S3154004D22000000000000000000000000000000000B4 -S3154004D23000000000000000000000000000000000A4 -S3154004D2400000000000000000000000000000000094 -S3154004D2500000000000000000000000000000000084 -S3154004D2600000000000000000000000000000000074 -S3154004D2700000000000000000000000000000000064 -S3154004D2800000000000000000000000000000000054 -S3154004D2900000000000000000000000000000000044 -S3154004D2A00000000000000000000000000000000034 -S3154004D2B00000000000000000000000000000000024 -S3154004D2C00000000000000000000000000000000014 -S3154004D2D00000000000000000000000000000000004 -S3154004D2E000000000000000000000000000000000F4 -S3154004D2F000000000000000000000000000000000E4 -S3154004D30000000000000000000000000000000000D3 -S3154004D31000000000000000000000000000000000C3 -S3154004D32000000000000000000000000000000000B3 -S3154004D33000000000000000000000000000000000A3 -S3154004D3400000000000000000000000000000000093 -S3154004D3500000000000000000000000000000000083 -S3154004D3600000000000000000000000000000000073 -S3154004D3700000000000000000000000000000000063 -S3154004D3800000000000000000000000000000000053 -S3154004D3900000000000000000000000000000000043 -S3154004D3A00000000000000000000000000000000033 -S3154004D3B00000000000000000000000000000000023 -S3154004D3C00000000000000000000000000000000013 -S3154004D3D00000000000000000000000000000000003 -S3154004D3E000000000000000000000000000000000F3 -S3154004D3F000000000000000000000000000000000E3 -S3154004D40000000000000000000000000000000000D2 -S3154004D41000000000000000000000000000000000C2 -S3154004D42000000000000000000000000000000000B2 -S3154004D43000000000000000000000000000000000A2 -S3154004D4400000000000000000000000000000000092 -S3154004D4500000000000000000000000000000000082 -S3154004D4600000000000000000000000000000000072 -S3154004D4700000000000000000000000000000000062 -S3154004D4800000000000000000000000000000000052 -S3154004D4900000000000000000000000000000000042 -S3154004D4A00000000000000000000000000000000032 -S3154004D4B00000000000000000000000000000000022 -S3154004D4C00000000000000000000000000000000012 -S3154004D4D00000000000000000000000000000000002 -S3154004D4E000000000000000000000000000000000F2 -S3154004D4F000000000000000000000000000000000E2 -S3154004D50000000000000000000000000000000000D1 -S3154004D51000000000000000000000000000000000C1 -S3154004D52000000000000000000000000000000000B1 -S3154004D53000000000000000000000000000000000A1 -S3154004D5400000000000000000000000000000000091 -S3154004D5500000000000000000000000000000000081 -S3154004D5600000000000000000000000000000000071 -S3154004D5700000000000000000000000000000000061 -S3154004D5800000000000000000000000000000000051 -S3154004D5900000000000000000000000000000000041 -S3154004D5A00000000000000000000000000000000031 -S3154004D5B00000000000000000000000000000000021 -S3154004D5C00000000000000000000000000000000011 -S3154004D5D00000000000000000000000000000000001 -S3154004D5E000000000000000000000000000000000F1 -S3154004D5F000000000000000000000000000000000E1 -S3154004D60000000000000000000000000000000000D0 -S3154004D61000000000000000000000000000000000C0 -S3154004D62000000000000000000000000000000000B0 -S3154004D63000000000000000000000000000000000A0 -S3154004D6400000000000000000000000000000000090 -S3154004D6500000000000000000000000000000000080 -S3154004D6600000000000000000000000000000000070 -S3154004D6700000000000000000000000000000000060 -S3154004D6800000000000000000000000000000000050 -S3154004D6900000000000000000000000000000000040 -S3154004D6A00000000000000000000000000000000030 -S3154004D6B00000000000000000000000000000000020 -S3154004D6C00000000000000000000000000000000010 -S3154004D6D00000000000000000000000000000000000 -S3154004D6E000000000000000000000000000000000F0 -S3154004D6F000000000000000000000000000000000E0 -S3154004D70000000000000000000000000000000000CF -S3154004D71000000000000000000000000000000000BF -S3154004D72000000000000000000000000000000000AF -S3154004D730000000000000000000000000000000009F -S3154004D740000000000000000000000000000000008F -S3154004D750000000000000000000000000000000007F -S3154004D760000000000000000000000000000000006F -S3154004D770000000000000000000000000000000005F -S3154004D780000000000000000000000000000000004F -S3154004D790000000000000000000000000000000003F -S3154004D7A0000000000000000000000000000000002F -S3154004D7B0000000000000000000000000000000001F -S3154004D7C0000000000000000000000000000000000F -S3154004D7D000000000000000000000000000000000FF -S3154004D7E000000000000000000000000000000000EF -S3154004D7F000000000000000000000000000000000DF -S3154004D80000000000000000000000000000000000CE -S3154004D81000000000000000000000000000000000BE -S3154004D82000000000000000000000000000000000AE -S3154004D830000000000000000000000000000000009E -S3154004D840000000000000000000000000000000008E -S3154004D850000000000000000000000000000000007E -S3154004D860000000000000000000000000000000006E -S3154004D870000000000000000000000000000000005E -S3154004D880000000000000000000000000000000004E -S3154004D890000000000000000000000000000000003E -S3154004D8A0000000000000000000000000000000002E -S3154004D8B0000000000000000000000000000000001E -S3154004D8C0000000000000000000000000000000000E -S3154004D8D000000000000000000000000000000000FE -S3154004D8E000000000000000000000000000000000EE -S3154004D8F000000000000000000000000000000000DE -S3154004D90000000000000000000000000000000000CD -S3154004D91000000000000000000000000000000000BD -S3154004D92000000000000000000000000000000000AD -S3154004D930000000000000000000000000000000009D -S3154004D940000000000000000000000000000000008D -S3154004D950000000000000000000000000000000007D -S3154004D960000000000000000000000000000000006D -S3154004D970000000000000000000000000000000005D -S3154004D980000000000000000000000000000000004D -S3154004D990000000000000000000000000000000003D -S3154004D9A0000000000000000000000000000000002D -S3154004D9B0000000000000000000000000000000001D -S3154004D9C0000000000000000000000000000000000D -S3154004D9D000000000000000000000000000000000FD -S3154004D9E000000000000000000000000000000000ED -S3154004D9F000000000000000000000000000000000DD -S3154004DA0000000000000000000000000000000000CC -S3154004DA1000000000000000000000000000000000BC -S3154004DA2000000000000000000000000000000000AC -S3154004DA30000000000000000000000000000000009C -S3154004DA40000000000000000000000000000000008C -S3154004DA50000000000000000000000000000000007C -S3154004DA60000000000000000000000000000000006C -S3154004DA70000000000000000000000000000000005C -S3154004DA80000000000000000000000000000000004C -S3154004DA90000000000000000000000000000000003C -S3154004DAA0000000000000000000000000000000002C -S3154004DAB0000000000000000000000000000000001C -S3154004DAC0000000000000000000000000000000000C -S3154004DAD000000000000000000000000000000000FC -S3154004DAE000000000000000000000000000000000EC -S3154004DAF000000000000000000000000000000000DC -S3154004DB0000000000000000000000000000000000CB -S3154004DB1000000000000000000000000000000000BB -S3154004DB2000000000000000000000000000000000AB -S3154004DB30000000000000000000000000000000009B -S3154004DB40000000000000000000000000000000008B -S3154004DB50000000000000000000000000000000007B -S3154004DB60000000000000000000000000000000006B -S3154004DB70000000000000000000000000000000005B -S3154004DB80000000000000000000000000000000004B -S3154004DB90000000000000000000000000000000003B -S3154004DBA0000000000000000000000000000000002B -S3154004DBB0000000000000000000000000000000001B -S3154004DBC0000000000000000000000000000000000B -S3154004DBD000000000000000000000000000000000FB -S3154004DBE000000000000000000000000000000000EB -S3154004DBF000000000000000000000000000000000DB -S3154004DC0000000000000000000000000000000000CA -S3154004DC1000000000000000000000000000000000BA -S3154004DC2000000000000000000000000000000000AA -S3154004DC30000000000000000000000000000000009A -S3154004DC40000000000000000000000000000000008A -S3154004DC50000000000000000000000000000000007A -S3154004DC60000000000000000000000000000000006A -S3154004DC70000000000000000000000000000000005A -S3154004DC80000000000000000000000000000000004A -S3154004DC90000000000000000000000000000000003A -S3154004DCA0000000000000000000000000000000002A -S3154004DCB0000000000000000000000000000000001A -S3154004DCC0000000000000000000000000000000000A -S3154004DCD000000000000000000000000000000000FA -S3154004DCE000000000000000000000000000000000EA -S3154004DCF000000000000000000000000000000000DA -S3154004DD0000000000000000000000000000000000C9 -S3154004DD1000000000000000000000000000000000B9 -S3154004DD2000000000000000000000000000000000A9 -S3154004DD300000000000000000000000000000000099 -S3154004DD400000000000000000000000000000000089 -S3154004DD500000000000000000000000000000000079 -S3154004DD600000000000000000000000000000000069 -S3154004DD700000000000000000000000000000000059 -S3154004DD800000000000000000000000000000000049 -S3154004DD900000000000000000000000000000000039 -S3154004DDA00000000000000000000000000000000029 -S3154004DDB00000000000000000000000000000000019 -S3154004DDC00000000000000000000000000000000009 -S3154004DDD000000000000000000000000000000000F9 -S3154004DDE000000000000000000000000000000000E9 -S3154004DDF000000000000000000000000000000000D9 -S3154004DE0000000000000000000000000000000000C8 -S3154004DE1000000000000000000000000000000000B8 -S3154004DE2000000000000000000000000000000000A8 -S3154004DE300000000000000000000000000000000098 -S3154004DE400000000000000000000000000000000088 -S3154004DE500000000000000000000000000000000078 -S3154004DE600000000000000000000000000000000068 -S3154004DE700000000000000000000000000000000058 -S3154004DE800000000000000000000000000000000048 -S3154004DE900000000000000000000000000000000038 -S3154004DEA00000000000000000000000000000000028 -S3154004DEB00000000000000000000000000000000018 -S3154004DEC00000000000000000000000000000000008 -S3154004DED000000000000000000000000000000000F8 -S3154004DEE000000000000000000000000000000000E8 -S3154004DEF000000000000000000000000000000000D8 -S3154004DF0000000000000000000000000000000000C7 -S3154004DF1000000000000000000000000000000000B7 -S3154004DF2000000000000000000000000000000000A7 -S3154004DF300000000000000000000000000000000097 -S3154004DF400000000000000000000000000000000087 -S3154004DF500000000000000000000000000000000077 -S3154004DF600000000000000000000000000000000067 -S3154004DF700000000000000000000000000000000057 -S3154004DF800000000000000000000000000000000047 -S3154004DF900000000000000000000000000000000037 -S3154004DFA00000000000000000000000000000000027 -S3154004DFB00000000000000000000000000000000017 -S3154004DFC00000000000000000000000000000000007 -S3154004DFD000000000000000000000000000000000F7 -S3154004DFE000000000000000000000000000000000E7 -S3154004DFF000000000000000000000000000000000D7 -S3154004E00000000000000000000000000000000000C6 -S3154004E01000000000000000000000000000000000B6 -S3154004E02000000000000000000000000000000000A6 -S3154004E0300000000000000000000000000000000096 -S3154004E0400000000000000000000000000000000086 -S3154004E0500000000000000000000000000000000076 -S3154004E0600000000000000000000000000000000066 -S3154004E0700000000000000000000000000000000056 -S3154004E0800000000000000000000000000000000046 -S3154004E0900000000000000000000000000000000036 -S3154004E0A00000000000000000000000000000000026 -S3154004E0B00000000000000000000000000000000016 -S3154004E0C00000000000000000000000000000000006 -S3154004E0D000000000000000000000000000000000F6 -S3154004E0E000000000000000000000000000000000E6 -S3154004E0F000000000000000000000000000000000D6 -S3154004E10000000000000000000000000000000000C5 -S3154004E11000000000000000000000000000000000B5 -S3154004E12000000000000000000000000000000000A5 -S3154004E1300000000000000000000000000000000095 -S3154004E1400000000000000000000000000000000085 -S3154004E1500000000000000000000000000000000075 -S3154004E1600000000000000000000000000000000065 -S3154004E1700000000000000000000000000000000055 -S3154004E1800000000000000000000000000000000045 -S3154004E1900000000000000000000000000000000035 -S3154004E1A00000000000000000000000000000000025 -S3154004E1B00000000000000000000000000000000015 -S3154004E1C00000000000000000000000000000000005 -S3154004E1D000000000000000000000000000000000F5 -S3154004E1E000000000000000000000000000000000E5 -S3154004E1F000000000000000000000000000000000D5 -S3154004E20000000000000000000000000000000000C4 -S3154004E21000000000000000000000000000000000B4 -S3154004E22000000000000000000000000000000000A4 -S3154004E2300000000000000000000000000000000094 -S3154004E2400000000000000000000000000000000084 -S3154004E2500000000000000000000000000000000074 -S3154004E2600000000000000000000000000000000064 -S3154004E2700000000000000000000000000000000054 -S3154004E2800000000000000000000000000000000044 -S3154004E2900000000000000000000000000000000034 -S3154004E2A00000000000000000000000000000000024 -S3154004E2B00000000000000000000000000000000014 -S3154004E2C00000000000000000000000000000000004 -S3154004E2D000000000000000000000000000000000F4 -S3154004E2E000000000000000000000000000000000E4 -S3154004E2F000000000000000000000000000000000D4 -S3154004E30000000000000000000000000000000000C3 -S3154004E31000000000000000000000000000000000B3 -S3154004E32000000000000000000000000000000000A3 -S3154004E3300000000000000000000000000000000093 -S3154004E3400000000000000000000000000000000083 -S3154004E3500000000000000000000000000000000073 -S3154004E3600000000000000000000000000000000063 -S3154004E3700000000000000000000000000000000053 -S3154004E3800000000000000000000000000000000043 -S3154004E3900000000000000000000000000000000033 -S3154004E3A00000000000000000000000000000000023 -S3154004E3B00000000000000000000000000000000013 -S3154004E3C00000000000000000000000000000000003 -S3154004E3D000000000000000000000000000000000F3 -S3154004E3E000000000000000000000000000000000E3 -S3154004E3F000000000000000000000000000000000D3 -S3154004E40000000000000000000000000000000000C2 -S3154004E41000000000000000000000000000000000B2 -S3154004E42000000000000000000000000000000000A2 -S3154004E4300000000000000000000000000000000092 -S3154004E4400000000000000000000000000000000082 -S3154004E4500000000000000000000000000000000072 -S3154004E4600000000000000000000000000000000062 -S3154004E4700000000000000000000000000000000052 -S3154004E4800000000000000000000000000000000042 -S3154004E4900000000000000000000000000000000032 -S3154004E4A00000000000000000000000000000000022 -S3154004E4B00000000000000000000000000000000012 -S3154004E4C00000000000000000000000000000000002 -S3154004E4D000000000000000000000000000000000F2 -S3154004E4E000000000000000000000000000000000E2 -S3154004E4F000000000000000000000000000000000D2 -S3154004E50000000000000000000000000000000000C1 -S3154004E51000000000000000000000000000000000B1 -S3154004E52000000000000000000000000000000000A1 -S3154004E5300000000000000000000000000000000091 -S3154004E5400000000000000000000000000000000081 -S3154004E5500000000000000000000000000000000071 -S3154004E5600000000000000000000000000000000061 -S3154004E5700000000000000000000000000000000051 -S3154004E5800000000000000000000000000000000041 -S3154004E5900000000000000000000000000000000031 -S3154004E5A00000000000000000000000000000000021 -S3154004E5B00000000000000000000000000000000011 -S3154004E5C00000000000000000000000000000000001 -S3154004E5D000000000000000000000000000000000F1 -S3154004E5E000000000000000000000000000000000E1 -S3154004E5F000000000000000000000000000000000D1 -S3154004E60000000000000000000000000000000000C0 -S3154004E61000000000000000000000000000000000B0 -S3154004E62000000000000000000000000000000000A0 -S3154004E6300000000000000000000000000000000090 -S3154004E6400000000000000000000000000000000080 -S3154004E6500000000000000000000000000000000070 -S3154004E6600000000000000000000000000000000060 -S3154004E6700000000000000000000000000000000050 -S3154004E6800000000000000000000000000000000040 -S3154004E6900000000000000000000000000000000030 -S3154004E6A00000000000000000000000000000000020 -S3154004E6B00000000000000000000000000000000010 -S3154004E6C00000000000000000000000000000000000 -S3154004E6D000000000000000000000000000000000F0 -S3154004E6E000000000000000000000000000000000E0 -S3154004E6F000000000000000000000000000000000D0 -S3154004E70000000000000000000000000000000000BF -S3154004E71000000000000000000000000000000000AF -S3154004E720000000000000000000000000000000009F -S3154004E730000000000000000000000000000000008F -S3154004E740000000000000000000000000000000007F -S3154004E750000000000000000000000000000000006F -S3154004E760000000000000000000000000000000005F -S3154004E770000000000000000000000000000000004F -S3154004E780000000000000000000000000000000003F -S3154004E790000000000000000000000000000000002F -S3154004E7A0000000000000000000000000000000001F -S3154004E7B0000000000000000000000000000000000F -S3154004E7C000000000000000000000000000000000FF -S3154004E7D000000000000000000000000000000000EF -S3154004E7E000000000000000000000000000000000DF -S3154004E7F000000000000000000000000000000000CF -S3154004E80000000000000000000000000000000000BE -S3154004E81000000000000000000000000000000000AE -S3154004E820000000000000000000000000000000009E -S3154004E830000000000000000000000000000000008E -S3154004E840000000000000000000000000000000007E -S3154004E850000000000000000000000000000000006E -S3154004E860000000000000000000000000000000005E -S3154004E870000000000000000000000000000000004E -S3154004E880000000000000000000000000000000003E -S3154004E890000000000000000000000000000000002E -S3154004E8A0000000000000000000000000000000001E -S3154004E8B0000000000000000000000000000000000E -S3154004E8C000000000000000000000000000000000FE -S3154004E8D000000000000000000000000000000000EE -S3154004E8E000000000000000000000000000000000DE -S3154004E8F000000000000000000000000000000000CE -S3154004E90000000000000000000000000000000000BD -S3154004E91000000000000000000000000000000000AD -S3154004E920000000000000000000000000000000009D -S3154004E930000000000000000000000000000000008D -S3154004E940000000000000000000000000000000007D -S3154004E950000000000000000000000000000000006D -S3154004E960000000000000000000000000000000005D -S3154004E970000000000000000000000000000000004D -S3154004E980000000000000000000000000000000003D -S3154004E990000000000000000000000000000000002D -S3154004E9A0000000000000000000000000000000001D -S3154004E9B0000000000000000000000000000000000D -S3154004E9C000000000000000000000000000000000FD -S3154004E9D000000000000000000000000000000000ED -S3154004E9E000000000000000000000000000000000DD -S3154004E9F000000000000000000000000000000000CD -S3154004EA0000000000000000000000000000000000BC -S3154004EA1000000000000000000000000000000000AC -S3154004EA20000000000000000000000000000000009C -S3154004EA30000000000000000000000000000000008C -S3154004EA40000000000000000000000000000000007C -S3154004EA50000000000000000000000000000000006C -S3154004EA60000000000000000000000000000000005C -S3154004EA70000000000000000000000000000000004C -S3154004EA80000000000000000000000000000000003C -S3154004EA90000000000000000000000000000000002C -S3154004EAA0000000000000000000000000000000001C -S3154004EAB0000000000000000000000000000000000C -S3154004EAC000000000000000000000000000000000FC -S3154004EAD000000000000000000000000000000000EC -S3154004EAE000000000000000000000000000000000DC -S3154004EAF000000000000000000000000000000000CC -S3154004EB0000000000000000000000000000000000BB -S3154004EB1000000000000000000000000000000000AB -S3154004EB20000000000000000000000000000000009B -S3154004EB30000000000000000000000000000000008B -S3154004EB40000000000000000000000000000000007B -S3154004EB50000000000000000000000000000000006B -S3154004EB60000000000000000000000000000000005B -S3154004EB70000000000000000000000000000000004B -S3154004EB80000000000000000000000000000000003B -S3154004EB90000000000000000000000000000000002B -S3154004EBA0000000000000000000000000000000001B -S3154004EBB0000000000000000000000000000000000B -S3154004EBC000000000000000000000000000000000FB -S3154004EBD000000000000000000000000000000000EB -S3154004EBE000000000000000000000000000000000DB -S3154004EBF000000000000000000000000000000000CB -S3154004EC0000000000000000000000000000000000BA -S3154004EC1000000000000000000000000000000000AA -S3154004EC20000000000000000000000000000000009A -S3154004EC30000000000000000000000000000000008A -S3154004EC40000000000000000000000000000000007A -S3154004EC50000000000000000000000000000000006A -S3154004EC60000000000000000000000000000000005A -S3154004EC70000000000000000000000000000000004A -S3154004EC80000000000000000000000000000000003A -S3154004EC90000000000000000000000000000000002A -S3154004ECA0000000000000000000000000000000001A -S3154004ECB0000000000000000000000000000000000A -S3154004ECC000000000000000000000000000000000FA -S3154004ECD000000000000000000000000000000000EA -S3154004ECE000000000000000000000000000000000DA -S3154004ECF000000000000000000000000000000000CA -S3154004ED0000000000000000000000000000000000B9 -S3154004ED1000000000000000000000000000000000A9 -S3154004ED200000000000000000000000000000000099 -S3154004ED300000000000000000000000000000000089 -S3154004ED400000000000000000000000000000000079 -S3154004ED500000000000000000000000000000000069 -S3154004ED600000000000000000000000000000000059 -S3154004ED700000000000000000000000000000000049 -S3154004ED800000000000000000000000000000000039 -S3154004ED900000000000000000000000000000000029 -S3154004EDA00000000000000000000000000000000019 -S3154004EDB00000000000000000000000000000000009 -S3154004EDC000000000000000000000000000000000F9 -S3154004EDD000000000000000000000000000000000E9 -S3154004EDE000000000000000000000000000000000D9 -S3154004EDF000000000000000000000000000000000C9 -S3154004EE0000000000000000000000000000000000B8 -S3154004EE1000000000000000000000000000000000A8 -S3154004EE200000000000000000000000000000000098 -S3154004EE300000000000000000000000000000000088 -S3154004EE400000000000000000000000000000000078 -S3154004EE500000000000000000000000000000000068 -S3154004EE600000000000000000000000000000000058 -S3154004EE700000000000000000000000000000000048 -S3154004EE800000000000000000000000000000000038 -S3154004EE900000000000000000000000000000000028 -S3154004EEA00000000000000000000000000000000018 -S3154004EEB00000000000000000000000000000000008 -S3154004EEC000000000000000000000000000000000F8 -S3154004EED000000000000000000000000000000000E8 -S3154004EEE000000000000000000000000000000000D8 -S3154004EEF000000000000000000000000000000000C8 -S3154004EF0000000000000000000000000000000000B7 -S3154004EF1000000000000000000000000000000000A7 -S3154004EF200000000000000000000000000000000097 -S3154004EF300000000000000000000000000000000087 -S3154004EF400000000000000000000000000000000077 -S3154004EF500000000000000000000000000000000067 -S3154004EF600000000000000000000000000000000057 -S3154004EF700000000000000000000000000000000047 -S3154004EF800000000000000000000000000000000037 -S3154004EF900000000000000000000000000000000027 -S3154004EFA00000000000000000000000000000000017 -S3154004EFB00000000000000000000000000000000007 -S3154004EFC000000000000000000000000000000000F7 -S3154004EFD000000000000000000000000000000000E7 -S3154004EFE000000000000000000000000000000000D7 -S3154004EFF000000000000000000000000000000000C7 -S3154004F00000000000000000000000000000000000B6 -S3154004F01000000000000000000000000000000000A6 -S3154004F0200000000000000000000000000000000096 -S3154004F0300000000000000000000000000000000086 -S3154004F0400000000000000000000000000000000076 -S3154004F0500000000000000000000000000000000066 -S3154004F0600000000000000000000000000000000056 -S3154004F0700000000000000000000000000000000046 -S3154004F0800000000000000000000000000000000036 -S3154004F0900000000000000000000000000000000026 -S3154004F0A00000000000000000000000000000000016 -S3154004F0B00000000000000000000000000000000006 -S3154004F0C000000000000000000000000000000000F6 -S3154004F0D000000000000000000000000000000000E6 -S3154004F0E000000000000000000000000000000000D6 -S3154004F0F000000000000000000000000000000000C6 -S3154004F10000000000000000000000000000000000B5 -S3154004F11000000000000000000000000000000000A5 -S3154004F1200000000000000000000000000000000095 -S3154004F1300000000000000000000000000000000085 -S3154004F1400000000000000000000000000000000075 -S3154004F1500000000000000000000000000000000065 -S3154004F1600000000000000000000000000000000055 -S3154004F1700000000000000000000000000000000045 -S3154004F1800000000000000000000000000000000035 -S3154004F1900000000000000000000000000000000025 -S3154004F1A00000000000000000000000000000000015 -S3154004F1B00000000000000000000000000000000005 -S3154004F1C000000000000000000000000000000000F5 -S3154004F1D000000000000000000000000000000000E5 -S3154004F1E000000000000000000000000000000000D5 -S3154004F1F000000000000000000000000000000000C5 -S3154004F20000000000000000000000000000000000B4 -S3154004F21000000000000000000000000000000000A4 -S3154004F2200000000000000000000000000000000094 -S3154004F2300000000000000000000000000000000084 -S3154004F2400000000000000000000000000000000074 -S3154004F2500000000000000000000000000000000064 -S3154004F2600000000000000000000000000000000054 -S3154004F2700000000000000000000000000000000044 -S3154004F2800000000000000000000000000000000034 -S3154004F2900000000000000000000000000000000024 -S3154004F2A00000000000000000000000000000000014 -S3154004F2B00000000000000000000000000000000004 -S3154004F2C000000000000000000000000000000000F4 -S3154004F2D000000000000000000000000000000000E4 -S3154004F2E000000000000000000000000000000000D4 -S3154004F2F000000000000000000000000000000000C4 -S3154004F30000000000000000000000000000000000B3 -S3154004F31000000000000000000000000000000000A3 -S3154004F3200000000000000000000000000000000093 -S3154004F3300000000000000000000000000000000083 -S3154004F3400000000000000000000000000000000073 -S3154004F3500000000000000000000000000000000063 -S3154004F3600000000000000000000000000000000053 -S3154004F3700000000000000000000000000000000043 -S3154004F3800000000000000000000000000000000033 -S3154004F3900000000000000000000000000000000023 -S3154004F3A00000000000000000000000000000000013 -S3154004F3B00000000000000000000000000000000003 -S3154004F3C000000000000000000000000000000000F3 -S3154004F3D000000000000000000000000000000000E3 -S3154004F3E000000000000000000000000000000000D3 -S3154004F3F000000000000000000000000000000000C3 -S3154004F40000000000000000000000000000000000B2 -S3154004F41000000000000000000000000000000000A2 -S3154004F4200000000000000000000000000000000092 -S3154004F4300000000000000000000000000000000082 -S3154004F4400000000000000000000000000000000072 -S3154004F4500000000000000000000000000000000062 -S3154004F4600000000000000000000000000000000052 -S3154004F4700000000000000000000000000000000042 -S3154004F4800000000000000000000000000000000032 -S3154004F4900000000000000000000000000000000022 -S3154004F4A00000000000000000000000000000000012 -S3154004F4B00000000000000000000000000000000002 -S3154004F4C000000000000000000000000000000000F2 -S3154004F4D000000000000000000000000000000000E2 -S3154004F4E000000000000000000000000000000000D2 -S3154004F4F000000000000000000000000000000000C2 -S3154004F50000000000000000000000000000000000B1 -S3154004F51000000000000000000000000000000000A1 -S3154004F5200000000000000000000000000000000091 -S3154004F5300000000000000000000000000000000081 -S3154004F5400000000000000000000000000000000071 -S3154004F5500000000000000000000000000000000061 -S3154004F5600000000000000000000000000000000051 -S3154004F5700000000000000000000000000000000041 -S3154004F5800000000000000000000000000000000031 -S3154004F5900000000000000000000000000000000021 -S3154004F5A00000000000000000000000000000000011 -S3154004F5B00000000000000000000000000000000001 -S3154004F5C000000000000000000000000000000000F1 -S3154004F5D000000000000000000000000000000000E1 -S3154004F5E000000000000000000000000000000000D1 -S3154004F5F000000000000000000000000000000000C1 -S3154004F60000000000000000000000000000000000B0 -S3154004F61000000000000000000000000000000000A0 -S3154004F6200000000000000000000000000000000090 -S3154004F6300000000000000000000000000000000080 -S3154004F6400000000000000000000000000000000070 -S3154004F6500000000000000000000000000000000060 -S3154004F6600000000000000000000000000000000050 -S3154004F6700000000000000000000000000000000040 -S3154004F6800000000000000000000000000000000030 -S3154004F6900000000000000000000000000000000020 -S3154004F6A00000000000000000000000000000000010 -S3154004F6B00000000000000000000000000000000000 -S3154004F6C000000000000000000000000000000000F0 -S3154004F6D000000000000000000000000000000000E0 -S3154004F6E000000000000000000000000000000000D0 -S3154004F6F000000000000000000000000000000000C0 -S3154004F70000000000000000000000000000000000AF -S3154004F710000000000000000000000000000000009F -S3154004F720000000000000000000000000000000008F -S3154004F730000000000000000000000000000000007F -S3154004F740000000000000000000000000000000006F -S3154004F750000000000000000000000000000000005F -S3154004F760000000000000000000000000000000004F -S3154004F770000000000000000000000000000000003F -S3154004F780000000000000000000000000000000002F -S3154004F790000000000000000000000000000000001F -S3154004F7A0000000000000000000000000000000000F -S3154004F7B000000000000000000000000000000000FF -S3154004F7C000000000000000000000000000000000EF -S3154004F7D000000000000000000000000000000000DF -S3154004F7E000000000000000000000000000000000CF -S3154004F7F000000000000000000000000000000000BF -S3154004F80000000000000000000000000000000000AE -S3154004F810000000000000000000000000000000009E -S3154004F820000000000000000000000000000000008E -S3154004F830000000000000000000000000000000007E -S3154004F840000000000000000000000000000000006E -S3154004F850000000000000000000000000000000005E -S3154004F860000000000000000000000000000000004E -S3154004F870000000000000000000000000000000003E -S3154004F880000000000000000000000000000000002E -S3154004F890000000000000000000000000000000001E -S3154004F8A0000000000000000000000000000000000E -S3154004F8B000000000000000000000000000000000FE -S3154004F8C000000000000000000000000000000000EE -S3154004F8D000000000000000000000000000000000DE -S3154004F8E000000000000000000000000000000000CE -S3154004F8F000000000000000000000000000000000BE -S3154004F90000000000000000000000000000000000AD -S3154004F910000000000000000000000000000000009D -S3154004F920000000000000000000000000000000008D -S3154004F930000000000000000000000000000000007D -S3154004F940000000000000000000000000000000006D -S3154004F950000000000000000000000000000000005D -S3154004F960000000000000000000000000000000004D -S3154004F970000000000000000000000000000000003D -S3154004F980000000000000000000000000000000002D -S3154004F990000000000000000000000000000000001D -S3154004F9A0000000000000000000000000000000000D -S3154004F9B000000000000000000000000000000000FD -S3154004F9C000000000000000000000000000000000ED -S3154004F9D000000000000000000000000000000000DD -S3154004F9E000000000000000000000000000000000CD -S3154004F9F000000000000000000000000000000000BD -S3154004FA0000000000000000000000000000000000AC -S3154004FA10000000000000000000000000000000009C -S3154004FA20000000000000000000000000000000008C -S3154004FA30000000000000000000000000000000007C -S3154004FA40000000000000000000000000000000006C -S3154004FA50000000000000000000000000000000005C -S3154004FA60000000000000000000000000000000004C -S3154004FA70000000000000000000000000000000003C -S3154004FA80000000000000000000000000000000002C -S3154004FA90000000000000000000000000000000001C -S3154004FAA0000000000000000000000000000000000C -S3154004FAB000000000000000000000000000000000FC -S3154004FAC000000000000000000000000000000000EC -S3154004FAD000000000000000000000000000000000DC -S3154004FAE000000000000000000000000000000000CC -S3154004FAF000000000000000000000000000000000BC -S3154004FB0000000000000000000000000000000000AB -S3154004FB10000000000000000000000000000000009B -S3154004FB20000000000000000000000000000000008B -S3154004FB30000000000000000000000000000000007B -S3154004FB40000000000000000000000000000000006B -S3154004FB50000000000000000000000000000000005B -S3154004FB60000000000000000000000000000000004B -S3154004FB70000000000000000000000000000000003B -S3154004FB80000000000000000000000000000000002B -S3154004FB90000000000000000000000000000000001B -S3154004FBA0000000000000000000000000000000000B -S3154004FBB000000000000000000000000000000000FB -S3154004FBC000000000000000000000000000000000EB -S3154004FBD000000000000000000000000000000000DB -S3154004FBE000000000000000000000000000000000CB -S3154004FBF000000000000000000000000000000000BB -S3154004FC0000000000000000000000000000000000AA -S3154004FC10000000000000000000000000000000009A -S3154004FC20000000000000000000000000000000008A -S3154004FC30000000000000000000000000000000007A -S3154004FC40000000000000000000000000000000006A -S3154004FC50000000000000000000000000000000005A -S3154004FC60000000000000000000000000000000004A -S3154004FC70000000000000000000000000000000003A -S3154004FC80000000000000000000000000000000002A -S3154004FC90000000000000000000000000000000001A -S3154004FCA0000000000000000000000000000000000A -S3154004FCB000000000000000000000000000000000FA -S3154004FCC000000000000000000000000000000000EA -S3154004FCD000000000000000000000000000000000DA -S3154004FCE000000000000000000000000000000000CA -S3154004FCF000000000000000000000000000000000BA -S3154004FD0000000000000000000000000000000000A9 -S3154004FD100000000000000000000000000000000099 -S3154004FD200000000000000000000000000000000089 -S3154004FD300000000000000000000000000000000079 -S3154004FD400000000000000000000000000000000069 -S3154004FD500000000000000000000000000000000059 -S3154004FD600000000000000000000000000000000049 -S3154004FD700000000000000000000000000000000039 -S3154004FD800000000000000000000000000000000029 -S3154004FD900000000000000000000000000000000019 -S3154004FDA00000000000000000000000000000000009 -S3154004FDB000000000000000000000000000000000F9 -S3154004FDC000000000000000000000000000000000E9 -S3154004FDD000000000000000000000000000000000D9 -S3154004FDE000000000000000000000000000000000C9 -S3154004FDF000000000000000000000000000000000B9 -S3154004FE0000000000000000000000000000000000A8 -S3154004FE100000000000000000000000000000000098 -S3154004FE200000000000000000000000000000000088 -S3154004FE300000000000000000000000000000000078 -S3154004FE400000000000000000000000000000000068 -S3154004FE500000000000000000000000000000000058 -S3154004FE600000000000000000000000000000000048 -S3154004FE700000000000000000000000000000000038 -S3154004FE800000000000000000000000000000000028 -S3154004FE900000000000000000000000000000000018 -S3154004FEA00000000000000000000000000000000008 -S3154004FEB000000000000000000000000000000000F8 -S3154004FEC000000000000000000000000000000000E8 -S3154004FED000000000000000000000000000000000D8 -S3154004FEE000000000000000000000000000000000C8 -S3154004FEF000000000000000000000000000000000B8 -S3154004FF0000000000000000000000000000000000A7 -S3154004FF100000000000000000000000000000000097 -S3154004FF200000000000000000000000000000000087 -S3154004FF300000000000000000000000000000000077 -S3154004FF400000000000000000000000000000000067 -S3154004FF500000000000000000000000000000000057 -S3154004FF600000000000000000000000000000000047 -S3154004FF700000000000000000000000000000000037 -S3154004FF800000000000000000000000000000000027 -S3154004FF900000000000000000000000000000000017 -S3154004FFA00000000000000000000000000000000007 -S3154004FFB000000000000000000000000000000000F7 -S3154004FFC000000000000000000000000000000000E7 -S3154004FFD000000000000000000000000000000000D7 -S3154004FFE000000000000000000000000000000000C7 -S3154004FFF000000000000000000000000000000000B7 -S3154005000000000002000000030000000000000000A0 -S315400500100000000100000000FFFFFFFE0000000396 -S3154005002055555554FFFFFFFE0000000355555554E1 -S31540050030700FFFFE00000007100249240000000073 -S315400500400000000000000000000000020000000360 -S315400500500000000000000003FFFFFFFEFFFFFFFF5B -S3154005006000000002FFFFFFFD000000000000000049 -S31540050070000000010000000000000000FFFFFFFF38 -S315400500800000000000000001FFFFFFFFFFFFFFFF2C -S31540050090FFFFFFFF00000001FFFFFFFFFFFFFFFE21 -S315400500A00000000300000000FFFFFFFEFFFFFFFD0D -S315400500B000000000000000090000000700000001E4 -S315400500C0FFFFFFF700000002FFFFFFFCFFFFFFF801 -S315400500D000000002FFFFFFFCFFFFFFF8FFFFFFFCEC -S315400500E00000000200000008FFFFFFFCFFFFFFFEC7 -S315400500F0FFFFFFF8FFFFFFF800000001FFFFFFF8D5 -S31540050100FFFFFFF7000000000000000B00000002A3 -S31540050110000000050000002F000000020000001747 -S3154005012000003039000002A700000012FFFF076CEF -S315400501300000004DFFFFFCC600003039FFFFFD59AA -S31540050140FFFFFFEEFFFF076CFFFFFFB30000033A1B -S3154005015000000091FFFFE84100000000FFFFFD841D -S31540050160FFFED02F000000000000F6FA006E498120 -S315400501700000000000000000000000000000000034 -S31540050180FFFFF0000000000200000003000000062B -S3154005019000000002FFFFFFFDFFFFFFFA0000000021 -S315400501A0000000010000000000000000FFFFFFFF07 -S315400501B00000000000000001FFFFFFFFFFFFFFFFFB -S315400501C0FFFFFFFF00000001FFFFFFFFFFFFFFFEF0 -S315400501D000000003FFFFFFFAFFFFFFFEFFFFFFFDE5 -S315400501E000000006000000000000000000000009B5 -S315400501F000000000000000000000000000000000B4 -S31540050200000000000000000100000002000000039D -S315400502100000000000000000000000000000000093 -S31540050220000000004005050C400505D8400506A41C -S315400502300000000000000000000000000000000073 -S315400502400000000000000000000000000000000063 -S31540050250000000004001B5900000000000000000CD -S315400502600000000000000000000000000000000043 -S315400502700000000000000000000000000000000033 -S315400502800000000000000000000000000000000023 -S315400502900000000000000000000000000000000013 -S315400502A00000000000000000000000000000000003 -S315400502B000000000000000000000000000000000F3 -S315400502C000000000000000000000000000000001E2 -S315400502D0330EABCD1234E66DDEEC0005000B0000A7 -S315400502E000000000000000000000000000000000C3 -S315400502F000000000000000000000000000000000B3 -S3154005030000000000000000000000000000000000A2 -S315400503100000000000000000000000000000000092 -S315400503200000000000000000000000000000000082 -S315400503300000000000000000000000000000000072 -S315400503400000000000000000000000000000000062 -S315400503500000000000000000000000000000000052 -S315400503600000000000000000000000000000000042 -S315400503700000000000000000000000000000000032 -S315400503800000000000000000000000000000000022 -S315400503900000000000000000000000000000000012 -S315400503A00000000000000000000000000000000002 -S315400503B000000000000000000000000000000000F2 -S315400503C000000000000000000000000000000000E2 -S315400503D000000000000000000000000000000000D2 -S315400503E000000000000000000000000000000000C2 -S315400503F000000000000000000000000000000000B2 -S3154005040000000000000000000000000000000000A1 -S315400504100000000000000000000000000000000091 -S315400504200000000000000000000000000000000081 -S315400504300000000000000000000000000000000071 -S315400504400000000000000000000000000000000061 -S315400504500000000000000000000000000000000051 -S315400504600000000000000000000000000000000041 -S315400504700000000000000000000000000000000031 -S315400504800000000000000000000000000000000021 -S315400504900000000000000000000000000000000011 -S315400504A00000000000000000000000000000000001 -S315400504B000000000000000000000000000000000F1 -S315400504C000000000000000000000000000000000E1 -S315400504D000000000000000000000000000000000D1 -S315400504E000000000000000000000000000000000C1 -S315400504F000000000000000000000000000000000B1 -S3154005050000000000000000000000000000000000A0 -S315400505100000000000000000000000000000000090 -S315400505200000000000000000000000000000000080 -S315400505300000000000000000000000000000000070 -S315400505400000000000000000000000000000000060 -S315400505500000000000000000000000000000000050 -S315400505600000000000000000000000000000000040 -S315400505700000000000000000000000000000000030 -S315400505800000000000000000000000000000000020 -S315400505900000000000000000000000000000000010 -S315400505A00000000000000000000000000000000000 -S315400505B000000000000000000000000000000000F0 -S315400505C000000000000000000000000000000000E0 -S315400505D000000000000000000000000000000000D0 -S315400505E000000000000000000000000000000000C0 -S315400505F000000000000000000000000000000000B0 -S31540050600000000000000000000000000000000009F -S31540050610000000000000000000000000000000008F -S31540050620000000000000000000000000000000007F -S31540050630000000000000000000000000000000006F -S31540050640000000000000000000000000000000005F -S31540050650000000000000000000000000000000004F -S31540050660000000000000000000000000000000003F -S31540050670000000000000000000000000000000002F -S31540050680000000000000000000000000000000001F -S31540050690000000000000000000000000000000000F -S315400506A000000000000000000000000000000000FF -S315400506B000000000000000000000000000000000EF -S315400506C000000000000000000000000000000000DF -S315400506D000000000000000000000000000000000CF -S315400506E000000000000000000000000000000000BF -S315400506F000000000000000000000000000000000AF -S31540050700000000000000000000000000000000009E -S31540050710000000000000000000000000000000008E -S31540050720000000000000000000000000000000007E -S31540050730000000000000000000000000000000006E -S31540050740000000000000000000000000000000005E -S31540050750000000000000000000000000000000004E -S31540050760000000000000000000000000000000003E -S315400507704005022000000000FFFFFFFF00020000C9 -S315400507800000000000000000400507804005078086 -S3154005079040050788400507884005079040050790AE -S315400507A04005079840050798400507A0400507A05E -S315400507B0400507A8400507A8400507B0400507B00E -S315400507C0400507B8400507B8400507C0400507C0BE -S315400507D0400507C8400507C8400507D0400507D06E -S315400507E0400507D8400507D8400507E0400507E01E -S315400507F0400507E8400507E8400507F0400507F0CE -S31540050800400507F8400507F840050800400508007B -S315400508104005080840050808400508104005081029 -S3154005082040050818400508184005082040050820D9 -S315400508304005082840050828400508304005083089 -S315400508404005083840050838400508404005084039 -S3154005085040050848400508484005085040050850E9 -S315400508604005085840050858400508604005086099 -S315400508704005086840050868400508704005087049 -S3154005088040050878400508784005088040050880F9 -S3154005089040050888400508884005089040050890A9 -S315400508A04005089840050898400508A0400508A059 -S315400508B0400508A8400508A8400508B0400508B009 -S315400508C0400508B8400508B8400508C0400508C0B9 -S315400508D0400508C8400508C8400508D0400508D069 -S315400508E0400508D8400508D8400508E0400508E019 -S315400508F0400508E8400508E8400508F0400508F0C9 -S31540050900400508F8400508F8400509004005090076 -S315400509104005090840050908400509104005091024 -S3154005092040050918400509184005092040050920D4 -S315400509304005092840050928400509304005093084 -S315400509404005093840050938400509404005094034 -S3154005095040050948400509484005095040050950E4 -S315400509604005095840050958400509604005096094 -S315400509704005096840050968400509704005097044 -S3154005098040050978400509784005098040050980F4 -S3154005099040050988400509884005099040050990A4 -S315400509A04005099840050998400509A0400509A054 -S315400509B0400509A8400509A8400509B0400509B004 -S315400509C0400509B8400509B8400509C0400509C0B4 -S315400509D0400509C8400509C8400509D0400509D064 -S315400509E0400509D8400509D8400509E0400509E014 -S315400509F0400509E8400509E8400509F0400509F0C4 -S31540050A00400509F8400509F840050A0040050A0071 -S31540050A1040050A0840050A0840050A1040050A101F -S31540050A2040050A1840050A1840050A2040050A20CF -S31540050A3040050A2840050A2840050A3040050A307F -S31540050A4040050A3840050A3840050A4040050A402F -S31540050A5040050A4840050A4840050A5040050A50DF -S31540050A6040050A5840050A5840050A6040050A608F -S31540050A7040050A6840050A6840050A7040050A703F -S31540050A8040050A7840050A7840050A8040050A80EF -S31540050A9040050A8840050A8840050A9040050A909F -S31540050AA040050A9840050A9840050AA040050AA04F -S31540050AB040050AA840050AA840050AB040050AB0FF -S31540050AC040050AB840050AB840050AC040050AC0AF -S31540050AD040050AC840050AC840050AD040050AD05F -S31540050AE040050AD840050AD840050AE040050AE00F -S31540050AF040050AE840050AE840050AF040050AF0BF -S31540050B0040050AF840050AF840050B0040050B006C -S31540050B1040050B0840050B0840050B1040050B101A -S31540050B2040050B1840050B1840050B2040050B20CA -S31540050B3040050B2840050B2840050B3040050B307A -S31540050B4040050B3840050B3840050B4040050B402A -S31540050B5040050B4840050B4840050B5040050B50DA -S31540050B6040050B5840050B5840050B6040050B608A -S31540050B7040050B6840050B6840050B7040050B703A -S31540050B8040050B7840050B780000000040050B88B2 -S31540050B900000000000000000000000000000000208 -S31540050BA000000000000000000000000000000000FA -S31540050BB000000000000000000000000000000000EA -S31540050BC000000000000000000000000000000000DA -S31540050BD000000000000000000000000000000000CA -S31540050BE000000000000000000000000000000000BA -S31540050BF000000000000000000000000000000000AA -S31540050C000000000000000000000000000000000099 -S31540050C100000000000000000000000000000000089 -S31540050C200000000000000000000000000000000079 -S31540050C3080000100000000080000000700000006D3 -S31540050C40000000030000000000000000FFFF8AD0FE -S30940050C5080000310C2 +S31540048C200000000000000000800003100000000067 +S31540048C30000000008000010000000008000000075A +S31540048C40000000060000000300000000FFFF8AD079 S70540000000BA diff --git a/designs/leon3-xilinx-ml605/svga2ch7301c.vhd b/designs/leon3-xilinx-ml605/svga2ch7301c.vhd index 398a2762..87876f8d 100644 --- a/designs/leon3-xilinx-ml605/svga2ch7301c.vhd +++ b/designs/leon3-xilinx-ml605/svga2ch7301c.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-ml605/testbench.vhd b/designs/leon3-xilinx-ml605/testbench.vhd index ec9f4129..b410e26d 100644 --- a/designs/leon3-xilinx-ml605/testbench.vhd +++ b/designs/leon3-xilinx-ml605/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2010, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -29,7 +29,7 @@ use gaisler.sim.all; library techmap; use techmap.gencomp.all; library micron; -use micron.components.all; +use micron.all; use work.debug.all; use work.config.all; @@ -43,11 +43,21 @@ entity testbench is disas : integer := CFG_DISAS; -- Enable disassembly to console dbguart : integer := CFG_DUART; -- Print UART on console pclow : integer := CFG_PCLOW; - clkperiod : integer := 37 -- system clock period + clkperiod : integer := 37 ); end; architecture behav of testbench is + +-- DDR3 Simulation parameters +constant SIM_BYPASS_INIT_CAL : string := "FAST"; + -- # = "OFF" - Complete memory init & + -- calibration sequence + -- # = "SKIP" - Not supported + -- # = "FAST" - Complete memory init & use + -- abbreviated calib sequence + + constant promfile : string := "prom.srec"; -- rom contents constant sdramfile : string := "sdram.srec"; -- sdram contents @@ -88,8 +98,6 @@ architecture behav of testbench is signal ddr3_tdqs_n : std_logic_vector(DQS_WIDTH-1 downto 0); signal ddr3_ck_p : std_logic_vector(CK_WIDTH-1 downto 0); signal ddr3_ck_n : std_logic_vector(CK_WIDTH-1 downto 0); - signal sda : std_logic; - signal scl : std_logic; -- Debug support unit @@ -122,7 +130,7 @@ architecture behav of testbench is signal gmiiclk_n : std_logic := '0'; -- Output signals for LEDs - signal led : std_logic_vector(4 downto 0); + signal led : std_logic_vector(6 downto 0); signal iic_scl_main, iic_sda_main : std_logic; signal iic_scl_dvi, iic_sda_dvi : std_logic; @@ -142,6 +150,29 @@ signal sysace_d : std_logic_vector(7 downto 0); signal clk_33 : std_ulogic := '0'; signal brdyn : std_ulogic; + +component ddr3_model is + port ( + rst_n : in std_logic; + ck : in std_logic; + ck_n : in std_logic; + cke : in std_logic; + cs_n : in std_logic; + ras_n : in std_logic; + cas_n : in std_logic; + we_n : in std_logic; + dm_tdqs : inout std_logic_vector(1 downto 0); + ba : in std_logic_vector(2 downto 0); + addr : in std_logic_vector(12 downto 0); + dq : inout std_logic_vector(15 downto 0); + dqs : inout std_logic_vector(1 downto 0); + dqs_n : inout std_logic_vector(1 downto 0); + tdqs_n : out std_logic_vector(1 downto 0); + odt : in std_logic + ); +end component ddr3_model; + + begin -- clock and reset clk <= not clk after ct * 1 ns; @@ -150,13 +181,14 @@ begin gmiiclk_p <= not gmiiclk_p after 4 ns; gmiiclk_n <= not gmiiclk_n after 4 ns; clk_33 <= not clk_33 after 15 ns; - rst <= '1', '0' after 1000 ns; + rst <= '1', '0' after 200 us; rstn1 <= not rst; dsubre <= '0'; urxd <= 'H'; d3 : entity work.leon3mp - generic map (fabtech, memtech, padtech, disas, dbguart, pclow) + generic map (fabtech, memtech, padtech, disas, dbguart, pclow, + SIM_BYPASS_INIT_CAL) port map ( reset => rst, errorn => error, @@ -186,8 +218,6 @@ begin ddr3_dqs_n => ddr3_dqs_n, ddr3_ck_p => ddr3_ck_p, ddr3_ck_n => ddr3_ck_n, --- sda => sda, --- scl => scl, -- Debug Unit dsubre => dsubre, @@ -236,25 +266,26 @@ begin led => led ); - ddr3mem : for i in 0 to 3 generate - u0 : entity micron.ddr3 port map ( - rst_n => ddr3_reset_n, - ck => ddr3_ck_p(0), - ck_n => ddr3_ck_n(0), - cke => ddr3_cke(0), - cs_n => ddr3_cs_n(0), - ras_n => ddr3_ras_n, - cas_n => ddr3_cas_n, - we_n => ddr3_we_n, - dm_tdqs => ddr3_dm(i*2+1 downto i*2), - ba => ddr3_ba, - addr => ddr3_addr, - dq => ddr3_dq(16*i+15 downto 16*i), - dqs => ddr3_dqs_p(i*2+1 downto i*2), - dqs_n => ddr3_dqs_n(i*2+1 downto i*2), - tdqs_n => ddr3_tdqs_n(i*2+1 downto i*2), - odt => ddr3_odt(0)); - end generate; + gen_mem: for i in 0 to 3 generate + u1: ddr3_model port map + ( + rst_n => ddr3_reset_n, + ck => ddr3_ck_p(0), + ck_n => ddr3_ck_n(0), + cke => ddr3_cke(0), + cs_n => ddr3_cs_n(0), + ras_n => ddr3_ras_n, + cas_n => ddr3_cas_n, + we_n => ddr3_we_n, + dm_tdqs => ddr3_dm((2*(i+1)-1) downto (i*2)), + ba => ddr3_ba, + addr => ddr3_addr, + dq => ddr3_dq((16*i+15) downto (16*i)), + dqs => ddr3_dqs_p((2*(i+1)-1) downto (i*2)), + dqs_n => ddr3_dqs_n((2*(i+1)-1) downto (i*2)), + tdqs_n => ddr3_tdqs_n((2*(i+1)-1) downto (i*2)), + odt => ddr3_odt(0)); + end generate gen_mem; -- prom0 : sram -- generic map (index => 6, abits => 24, fname => promfile) @@ -287,7 +318,9 @@ begin iuerr : process begin - wait for 55 us; + wait for 210 us; -- This is for proper DDR3 behaviour durign init phase not needed durin simulation + wait on led(3); -- DDR3 Memory Init ready + wait for 5000 ns; assert (to_X01(error) = '1') report "*** IU in error mode, simulation halted ***" severity failure; diff --git a/designs/leon3-xilinx-ml605/tkconfig.h b/designs/leon3-xilinx-ml605/tkconfig.h index f24000cb..45e28939 100644 --- a/designs/leon3-xilinx-ml605/tkconfig.h +++ b/designs/leon3-xilinx-ml605/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -467,6 +479,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -489,6 +505,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else diff --git a/designs/leon3-xilinx-sp601/Makefile b/designs/leon3-xilinx-sp601/Makefile index 053bbcbf..bfbf5021 100644 --- a/designs/leon3-xilinx-sp601/Makefile +++ b/designs/leon3-xilinx-sp601/Makefile @@ -1,12 +1,14 @@ include .config + GRLIB=../.. TOP=leon3mp BOARD=xilinx-sp601-xc6slx16 +DESIGN=leon3-xilinx-sp601 include $(GRLIB)/boards/$(BOARD)/Makefile.inc DEVICE=$(PART)-$(PACKAGE)$(SPEED) #UCF=$(GRLIB)/boards/$(BOARD)/$(TOP).ucf UCF=$(TOP).ucf -#ISEMAPOPT=-timing +UCF_PLANAHEAD=$(UCF) QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf EFFORT=high XSTOPT=-uc leon3mp.xcf @@ -19,8 +21,15 @@ VHDLOPTSYNFILES= mig37/mig_37/user_design/rtl/iodrp_controller.vhd \ mig37/mig_37/user_design/rtl/mcb_soft_calibration_top.vhd \ mig37/mig_37/user_design/rtl/memc3_infrastructure.vhd \ mig37/mig_37/user_design/rtl/memc3_wrapper.vhd \ - mig37/mig_37/user_design/rtl/mig_37.vhd -VHDLSYNFILES= \ + mig37/mig_37/user_design/rtl/mig_37.vhd \ + mig39/mig_39/user_design/rtl/iodrp_controller.vhd \ + mig39/mig_39/user_design/rtl/iodrp_mcb_controller.vhd \ + mig39/mig_39/user_design/rtl/mcb_raw_wrapper.vhd \ + mig39/mig_39/user_design/rtl/mcb_soft_calibration.vhd \ + mig39/mig_39/user_design/rtl/mcb_soft_calibration_top.vhd \ + mig39/mig_39/user_design/rtl/memc3_infrastructure.vhd \ + mig39/mig_39/user_design/rtl/memc3_wrapper.vhd \ + mig39/mig_39/user_design/rtl/mig_39.vhd \ config.vhd ahbrom.vhd ahb2mig_sp601.vhd leon3mp.vhd VHDLSIMFILES=testbench.vhd @@ -32,20 +41,31 @@ CLEAN=soft-clean TECHLIBS = secureip unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann usbhc spw + tmtc openchip ihp usbhc spw DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - usb grusbhc spacewire ata haps coremp7 ascs slink hcan \ - leon4 leon4b64 l2cache pwm gr1553b iommu + usb grusbhc spacewire ascs slink hcan \ + leon4 leon4v0 l2cache pwm gr1553b iommu FILEADD=MCB.vhd FILESKIP = grcan.vhd include $(GRLIB)/bin/Makefile include $(GRLIB)/software/leon3/Makefile + ################## project specific targets ########################## mig: coregen -b mig37/mig.xco -p mig37 migclean: - -rm -rf mig37/mig_37* mig37/tmp \ No newline at end of file + -rm -rf mig37/mig_37* mig37/tmp + +mig39: + coregen -b mig39/mig.xco -p mig39 + patch -p0 < mig_patch.txt + patch -p0 < mcb_soft_calibration_patch.txt + +mig39clean: + -rm -rf mig39/mig_39* mig39/tmp + +.PHONY : mig mig39 mig39clean \ No newline at end of file diff --git a/designs/leon3-xilinx-sp601/README.txt b/designs/leon3-xilinx-sp601/README.txt index 9c5146f0..0a1bc02b 100644 --- a/designs/leon3-xilinx-sp601/README.txt +++ b/designs/leon3-xilinx-sp601/README.txt @@ -10,16 +10,27 @@ interface. The MIG source code cannot be distributed due to the prohibitive Xilinx license, so the MIG must be re-generated with coregen before simulation and synthesis can be done. -To generate the MIG and install the Xilinx unisim simulation +To generate the MIG using ISE13 and install the Xilinx unisim simulation library, do as follows: make mig make install-secureip -This will ONLY work with ISE-13 installed, and the XILINX variable -properly set in the shell. To synthesize the design, do +To generate the MIG using ISE14 and install the Xilinx unisim simulation +library, do as follows: + + make mig39 + make install-secureip + +This will ONLY work with correct version of ISE installed, and the XILINX variable +properly set in the shell. For ISE13 it is recommened to use the 'ise' make target +and for ISE14 to use the 'planAhead' target. To synthesize the design, do + + make ise (ISE13) + +or - make ise + make planAhead (ISE14) and then @@ -75,93 +86,58 @@ Design specifics grmon -xilusb -u - GRMON LEON debug monitor v1.1.47 professional version - - Copyright (C) 2004-2010 Aeroflex Gaisler - all rights reserved. - For latest updates, go to http://www.gaisler.com/ - Comments or bug-reports to support@gaisler.com - - This debug version will expire on 14/11/2011 - Xilinx cable: Cable type/rev : 0x3 - JTAG chain: xc6slx16 - - GRLIB build version: 4107 - - initialising ........... - detected frequency: 27 MHz - - Component Vendor - LEON3 SPARC V8 Processor Gaisler Research - AHB Debug JTAG TAP Gaisler Research - GR Ethernet MAC Gaisler Research - AHB/APB Bridge Gaisler Research - LEON3 Debug Support Unit Gaisler Research - Xilinx MIG DDR2 controller Gaisler Research - LEON2 Memory Controller European Space Agency - Generic APB UART Gaisler Research - Multi-processor Interrupt Ctrl Gaisler Research - Modular Timer Unit Gaisler Research - General purpose I/O port Gaisler Research - - Use command 'info sys' to print a detailed report of attached cores - -grlib> inf sys -00.01:003 Gaisler Research LEON3 SPARC V8 Processor (ver 0x0) - ahb master 0 -01.01:01c Gaisler Research AHB Debug JTAG TAP (ver 0x1) - ahb master 1 -02.01:01d Gaisler Research GR Ethernet MAC (ver 0x0) - ahb master 2, irq 12 - apb: 80000f00 - 80001000 - Device index: dev0 -01.01:006 Gaisler Research AHB/APB Bridge (ver 0x0) - ahb: 80000000 - 80100000 -02.01:004 Gaisler Research LEON3 Debug Support Unit (ver 0x1) - ahb: 90000000 - a0000000 - AHB trace 128 lines, 32-bit bus, stack pointer 0x47fffff0 - CPU#0 win 8, itrace 128, V8 mul/div, lddel 1 - icache 1 * 8 kbyte, 32 byte/line - dcache 1 * 4 kbyte, 16 byte/line -04.01:06b Gaisler Research Xilinx MIG DDR2 controller (ver 0x0) - ahb: 40000000 - 48000000 - DDR2: 128 Mbyte -05.04:00f European Space Agency LEON2 Memory Controller (ver 0x1) - ahb: 00000000 - 20000000 - ahb: 20000000 - 40000000 - apb: 80000000 - 80000100 - 8-bit prom @ 0x00000000 -01.01:00c Gaisler Research Generic APB UART (ver 0x1) - irq 2 - apb: 80000100 - 80000200 - baud rate 38352, DSU mode (FIFO debug) -02.01:00d Gaisler Research Multi-processor Interrupt Ctrl (ver 0x3) - apb: 80000200 - 80000300 -03.01:011 Gaisler Research Modular Timer Unit (ver 0x0) - irq 8 - apb: 80000300 - 80000400 - 8-bit scaler, 2 * 32-bit timers, divisor 27 -0b.01:01a Gaisler Research General purpose I/O port (ver 0x1) - apb: 80000b00 - 80000c00 -grlib> fla - - Intel-style 8-bit flash on D[31:24] - - Manuf. Intel - Device MT28F128J3 ) - - Device ID 3c99ffff9d012849 - User ID ffffffffffffffff - - - 1 x 16 Mbyte = 16 Mbyte total @ 0x00000000 - - - CFI info - flash family : 1 - flash size : 128 Mbit - erase regions : 1 - erase blocks : 128 - write buffer : 32 bytes - region 0 : 128 blocks of 128 Kbytes - -grlib> + GRMON2 LEON debug monitor v2.0.32 internal version + + Copyright (C) 2012 Aeroflex Gaisler - All rights reserved. + For latest updates, go to http://www.gaisler.com/ + Comments or bug-reports to support@gaisler.com + + +Parsing -xilusb +Parsing -u + +Commands missing help: + debug + +Xilusb: Cable type/rev : 0x3 + JTAG chain (1): xc6slx16 + Device ID: 0x601 + GRLIB build version: 4121 + Detected frequency: 54 MHz + + Component Vendor + LEON3 SPARC V8 Processor Aeroflex Gaisler + JTAG Debug Link Aeroflex Gaisler + GR Ethernet MAC Aeroflex Gaisler + AHB/APB Bridge Aeroflex Gaisler + LEON3 Debug Support Unit Aeroflex Gaisler + Xilinx MIG DDR2 Controller Aeroflex Gaisler + LEON2 Memory Controller European Space Agency + Generic UART Aeroflex Gaisler + Multi-processor Interrupt Ctrl. Aeroflex Gaisler + Modular Timer Unit Aeroflex Gaisler + General Purpose I/O port Aeroflex Gaisler + + Use command 'info sys' to print a detailed report of attached cores + +grmon2> lo /usr/local32/apps/bench/leon3/dhry.leon3 + 40000000 .text 54.7kB / 54.7kB [===============>] 100% + 4000DAF0 .data 2.7kB / 2.7kB [===============>] 100% + Total size: 57.44kB (1.57Mbit/s) + Entry point 0x40000000 + Image /usr/local32/apps/bench/leon3/dhry.leon3 loaded + +grmon2> run +Execution starts, 1000000 runs through Dhrystone +Total execution time: 10.3 s +Microseconds for one run through Dhrystone: 10.3 +Dhrystones per Second: 97539.4 + +Dhrystones MIPS : 55.5 + + + Program exited normally. + +grmon2> exit + +Exiting GRMON diff --git a/designs/leon3-xilinx-sp601/ahb2mig_sp601.vhd b/designs/leon3-xilinx-sp601/ahb2mig_sp601.vhd index d9d87535..dafb640e 100644 --- a/designs/leon3-xilinx-sp601/ahb2mig_sp601.vhd +++ b/designs/leon3-xilinx-sp601/ahb2mig_sp601.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -369,7 +369,6 @@ begin ahbso.hirq <= (others => '0'); ahbso.hindex <= hindex; ahbso.hsplit <= (others => '0'); - ahbso.hcache <= '1'; apbo.pindex <= pindex; apbo.pconfig <= pconfig; diff --git a/designs/leon3-xilinx-sp601/ahbrom.vhd b/designs/leon3-xilinx-sp601/ahbrom.vhd index d07c1a9f..8d73e672 100644 --- a/designs/leon3-xilinx-sp601/ahbrom.vhd +++ b/designs/leon3-xilinx-sp601/ahbrom.vhd @@ -56,7 +56,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-xilinx-sp601/config.help b/designs/leon3-xilinx-sp601/config.help index 7a04e327..a1911e4f 100644 --- a/designs/leon3-xilinx-sp601/config.help +++ b/designs/leon3-xilinx-sp601/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -1012,7 +1046,7 @@ CONFIG_SPIMCTRL_SDCARD Read command CONFIG_SPIMCTRL_READCMD - Read instruction for SPI memory device + Read instruction for SPI memory device (hex). Dummy byte CONFIG_SPIMCTRL_DUMMYBYTE @@ -1022,6 +1056,10 @@ Dual output CONFIG_SPIMCTRL_DUALOUTPUT Memory device supports dual output when reading data. +Address offset +CONFIG_SPIMCTRL_OFFSET + Offset that will be added by core on SPI memory address (hex). + Clock scaler CONFIG_SPIMCTRL_SCALER Selects the divisor used when dividing the system clock to produce diff --git a/designs/leon3-xilinx-sp601/config.vhd.h b/designs/leon3-xilinx-sp601/config.vhd.h index c2cbcd0e..b86f46ca 100644 --- a/designs/leon3-xilinx-sp601/config.vhd.h +++ b/designs/leon3-xilinx-sp601/config.vhd.h @@ -185,6 +185,7 @@ constant CFG_SPIMCTRL_SCALER : integer := CONFIG_SPIMCTRL_SCALER; constant CFG_SPIMCTRL_ASCALER : integer := CONFIG_SPIMCTRL_ASCALER; constant CFG_SPIMCTRL_PWRUPCNT : integer := CONFIG_SPIMCTRL_PWRUPCNT; + constant CFG_SPIMCTRL_OFFSET : integer := 16#CONFIG_SPIMCTRL_OFFSET#; -- SPI controller constant CFG_SPICTRL_ENABLE : integer := CONFIG_SPICTRL_ENABLE; diff --git a/designs/leon3-xilinx-sp601/lconfig.tk b/designs/leon3-xilinx-sp601/lconfig.tk index 355c5ce8..9bd3f7e4 100755 --- a/designs/leon3-xilinx-sp601/lconfig.tk +++ b/designs/leon3-xilinx-sp601/lconfig.tk @@ -757,7 +757,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -767,7 +768,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -910,8 +913,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -930,6 +935,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1019,9 +1028,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1075,10 +1085,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1124,14 +1135,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1204,13 +1217,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1250,22 +1271,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1322,21 +1611,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1383,36 +1672,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1420,48 +1710,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1517,27 +1808,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1578,16 +1869,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1596,34 +1888,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1680,92 +1973,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1773,18 +2066,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1825,52 +2118,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1878,162 +2172,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2089,45 +2384,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2167,18 +2464,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2186,55 +2484,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2291,24 +2594,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2348,17 +2651,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2366,37 +2670,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2452,22 +2757,22 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - global tmpvar_26 - minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_26 CONFIG_FPUFT_NONE + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" - $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN @@ -2538,26 +2843,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global tmpvar_26 + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 global CONFIG_FPUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} global CONFIG_FPUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} global CONFIG_FPUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} global CONFIG_FPUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2866,14 +3171,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_27 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_27 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2947,17 +3252,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_27 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3737,16 +4042,16 @@ proc menu18 {w title} { hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_28 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3808,21 +4113,21 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_28 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3882,14 +4187,14 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 19 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_29 - minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_29 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3943,17 +4248,17 @@ proc update_define_menu19 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_29 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_29 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -4009,15 +4314,15 @@ proc menu20 {w title} { bool $w.config.f 20 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_30 - minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_30 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 20 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 20 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4106,19 +4411,19 @@ proc update_menu20 {} { proc update_define_menu20 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_30 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_30 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_30 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4305,9 +4610,10 @@ proc menu22 {w title} { hex $w.config.f 22 2 "Read instruction " CONFIG_SPIMCTRL_READCMD bool $w.config.f 22 3 "Read instruction requires dummy byte " CONFIG_SPIMCTRL_DUMMYBYTE bool $w.config.f 22 4 "Enable dual output for reads " CONFIG_SPIMCTRL_DUALOUTPUT - int $w.config.f 22 5 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER - int $w.config.f 22 6 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER - int $w.config.f 22 7 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT + hex $w.config.f 22 5 "Address offset " CONFIG_SPIMCTRL_OFFSET + int $w.config.f 22 6 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER + int $w.config.f 22 7 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER + int $w.config.f 22 8 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT @@ -4357,12 +4663,14 @@ proc update_menu22 {} { global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { configure_entry .menu22.config.f.x4 normal {n l y}} else {configure_entry .menu22.config.f.x4 disabled {y n l}} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu22.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x5.l configure -state normal; } else {.menu22.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x5.l configure -state disabled} global CONFIG_SPIMCTRL_SCALER - if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x5.l configure -state normal; } else {.menu22.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x5.l configure -state disabled} - global CONFIG_SPIMCTRL_ASCALER if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x6.l configure -state normal; } else {.menu22.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x6.l configure -state disabled} - global CONFIG_SPIMCTRL_PWRUPCNT + global CONFIG_SPIMCTRL_ASCALER if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x7.l configure -state normal; } else {.menu22.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x7.l configure -state disabled} + global CONFIG_SPIMCTRL_PWRUPCNT + if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x8.l configure -state normal; } else {.menu22.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x8.l configure -state disabled} } @@ -4381,6 +4689,8 @@ proc update_define_menu22 {} { global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT&15]} else {set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT|16]} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {validate_hex CONFIG_SPIMCTRL_OFFSET "$CONFIG_SPIMCTRL_OFFSET" 0} global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_SCALER "$CONFIG_SPIMCTRL_SCALER" 1} global CONFIG_SPIMCTRL_ASCALER @@ -4452,12 +4762,12 @@ proc menu23 {w title} { bool $w.config.f 23 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN int $w.config.f 23 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN bool $w.config.f 23 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_31 - minimenu $w.config.f 23 11 "Fault-tolerance" tmpvar_31 CONFIG_SPICTRL_NOFT + global tmpvar_32 + minimenu $w.config.f 23 11 "Fault-tolerance" tmpvar_32 CONFIG_SPICTRL_NOFT menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_31 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_31 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_31 -value "TMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_32 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_32 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_32 -value "TMR" -command "update_active" menusplit $w $w.config.f.x11.x.menu 3 @@ -4557,13 +4867,13 @@ proc update_define_menu23 {} { global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_31 + global tmpvar_32 global CONFIG_SPICTRL_NOFT - if {$tmpvar_31 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + if {$tmpvar_32 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} global CONFIG_SPICTRL_DMRFT - if {$tmpvar_31 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + if {$tmpvar_32 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} global CONFIG_SPICTRL_TMRFT - if {$tmpvar_31 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} + if {$tmpvar_32 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } @@ -4705,7 +5015,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4715,6 +5026,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4739,6 +5052,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4751,14 +5065,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4771,27 +5090,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4801,17 +5120,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4823,12 +5142,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4838,10 +5157,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4852,7 +5171,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4864,26 +5183,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4891,27 +5212,27 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_FPUFT_NONE 0 set CONFIG_FPUFT_PAR 0 set CONFIG_FPUFT_DMR 0 @@ -4936,7 +5257,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_27 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4990,7 +5311,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_28 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -5001,14 +5322,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_29 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_30 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5034,6 +5355,7 @@ set CONFIG_SPIMCTRL_SDCARD 0 set CONFIG_SPIMCTRL_READCMD 0B set CONFIG_SPIMCTRL_DUMMYBYTE 0 set CONFIG_SPIMCTRL_DUALOUTPUT 0 +set CONFIG_SPIMCTRL_OFFSET 0 set CONFIG_SPIMCTRL_SCALER 1 set CONFIG_SPIMCTRL_ASCALER 8 set CONFIG_SPIMCTRL_PWRUPCNT 0 @@ -5048,7 +5370,7 @@ set CONFIG_SPICTRL_ODMODE 0 set CONFIG_SPICTRL_TWEN 0 set CONFIG_SPICTRL_MAXWLEN 0 set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_31 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_SPICTRL_NOFT 0 set CONFIG_SPICTRL_DMRFT 0 set CONFIG_SPICTRL_TMRFT 0 @@ -5108,7 +5430,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5118,6 +5441,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5156,6 +5481,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5168,9 +5494,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5184,243 +5511,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5465,13 +5938,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_27 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5575,38 +6048,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_28 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_29 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_30 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5647,6 +6120,8 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUMMYBYTE $CONFIG_SPIMCTRL_DUMMYBYTE [list $notmod] 2 } global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUALOUTPUT $CONFIG_SPIMCTRL_DUALOUTPUT [list $notmod] 2 } + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_hex $cfg $autocfg CONFIG_SPIMCTRL_OFFSET $CONFIG_SPIMCTRL_OFFSET $notmod } global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_SCALER $CONFIG_SPIMCTRL_SCALER $notmod } global CONFIG_SPIMCTRL_ASCALER @@ -5676,11 +6151,11 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_31 + global tmpvar_32 if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_31 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_31 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_31 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_32 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -5725,7 +6200,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5735,6 +6211,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5753,8 +6231,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5837,11 +6320,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5968,8 +6453,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5988,6 +6475,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -6028,342 +6519,358 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_FPUFT_NONE - if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_FPUFT_PAR - if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_FPUFT_DMR - if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_FPUFT_TMR - if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "2" + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_27 "16" } - global tmpvar_28 - set tmpvar_28 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_29 "64" } - global tmpvar_30 - set tmpvar_30 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_30 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_30 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_30 "32" } - global tmpvar_31 - set tmpvar_31 "None" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } + global tmpvar_32 + set tmpvar_32 "None" global CONFIG_SPICTRL_NOFT - if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_31 "None" } + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_32 "None" } global CONFIG_SPICTRL_DMRFT - if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_31 "Parity-DMR" } + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_32 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT - if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_31 "TMR" } + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_32 "TMR" } } diff --git a/designs/leon3-xilinx-sp601/leon3mp.ucf b/designs/leon3-xilinx-sp601/leon3mp.ucf index 3791d387..d9a0c5b1 100644 --- a/designs/leon3-xilinx-sp601/leon3mp.ucf +++ b/designs/leon3-xilinx-sp601/leon3mp.ucf @@ -23,12 +23,22 @@ OFFSET = IN : 10.000 : BEFORE etx_clk; #NET "mig_gen.ddrc.MCB_inst.memc?_wrapper_inst.memc?_mcb_raw_wrapper_inst.gen_term_calib.mcb_soft_calibration_top_inst.mcb_soft_calibration_inst.CKE_Train" TIG; ## This path exists for DDR2 only #NET "mig_gen.ddrc.i.calib_done" TIG; -# XST versions of DDR2 false paths +############################################################################ +# DDR2 requires the MCB to operate in Extended performance mode with higher Vccint +# specification to achieve maximum frequency. Therefore, the following CONFIG constraint +# follows the corresponding GUI option setting. However, DDR3 can operate at higher +# frequencies with any Vcciint value by operating MCB in extended mode. Please do not +# remove/edit the below constraint to avoid false errors. +############################################################################ +CONFIG MCB_PERFORMANCE= STANDARD; + +# --- MIG37 --- NET "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG; NET "mig_gen.ddrc/MCB_inst/c?_pll_lock" TIG; NET "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/CKE_Train" TIG; ## This path exists for DDR2 only -#NET "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL" TIG; -#NET "mig_gen.ddrc/i.calib_done" TIG; + +# --- MIG39 --- +INST "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL*" TIG; # Avoid false paths between main clock and DDR clock diff --git a/designs/leon3-xilinx-sp601/leon3mp.vhd b/designs/leon3-xilinx-sp601/leon3mp.vhd index 6fd90dcb..59ce6bd4 100644 --- a/designs/leon3-xilinx-sp601/leon3mp.vhd +++ b/designs/leon3-xilinx-sp601/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -38,6 +38,7 @@ use gaisler.misc.all; use gaisler.spi.all; use gaisler.net.all; use gaisler.jtag.all; +use gaisler.ddrpkg.all; library esa; use esa.memoryctrl.all; use work.config.all; diff --git a/designs/leon3-xilinx-sp601/mcb_soft_calibration_patch.txt b/designs/leon3-xilinx-sp601/mcb_soft_calibration_patch.txt new file mode 100644 index 00000000..ef221fad --- /dev/null +++ b/designs/leon3-xilinx-sp601/mcb_soft_calibration_patch.txt @@ -0,0 +1,1049 @@ +--- ./mig39/mig_39//user_design/rtl/mcb_soft_calibration.vhd 2013-01-15 15:13:18.000000000 +0100 ++++ ./p/a/t/c/h/mig39/mig_39//user_design/rtl/mcb_soft_calibration.vhd 2013-01-15 15:19:15.608793398 +0100 +@@ -94,15 +94,7 @@ + -- 3.7: 04/26/10: Added DDR2 Initialization fix to meet 400 ns wait as outlined in step d) of JEDEC DDR2 spec . + -- 3.8: 05/05/10: Added fixes for the CR# 559092 (updated Mult_Divide function) and 555416 (added IOB attribute to DONE_SOFTANDHARD_CAL). + -- 3.9: 05/24/10: Added 200us Wait logic to control CKE_Train. The 200us Wait counter assumes UI_CLK freq not higher than 100 MHz. +--- 3.10 10/22/10: Fixed PERFORM_START_DYN_CAL_AFTER_SELFREFRESH logic. +--- 3.11 2/14/11: Apply a different skkew for the P and N inputs for the differential LDQS and UDQS signals to provide more noise immunity. +--- 4.1 03/08/12: Fixed SELFREFRESH_MCB_REQ logic. It should not need depend on the SM STATE so that +--- MCB can come out of selfresh mode. SM requires refresh cycle to update the DQS value. +--- 4.2 05/10/12: All P/N terms of input and bidir memory pins are initialized with value of ZERO. TZQINIT_MAXCNT +--- are set to 8 for LPDDR,DDR and DDR2 interface . +--- Keep the UICMDEN in assertion state when SM is in RST_DELAY state so that MCB will not start doing +--- Premable detection until the second deassertion of MCB_SYSRST. +- ++-- 3.10 10/22/10: Fixed PERFORM_START_DYN_CAL_AFTER_SELFREFRESH logic. + + -- End Revision + --********************************************************************************** +@@ -157,17 +149,17 @@ + MCB_UIADDR : out std_logic_vector(4 downto 0) := "00000"; -- to MCB's UIADDR port (gets passed to IODRP2_MCB's AUXADDR port + MCB_UICMDEN : out std_logic := '1'; -- set to 1 to take control of UI interface - removes control from internal calib block + MCB_UIDONECAL : out std_logic := '0'; -- set to 0 to "tell" controller that it's still in a calibrate state +- MCB_UIDQLOWERDEC : out std_logic ; +- MCB_UIDQLOWERINC : out std_logic ; +- MCB_UIDQUPPERDEC : out std_logic ; +- MCB_UIDQUPPERINC : out std_logic ; ++ MCB_UIDQLOWERDEC : out std_logic := '0'; ++ MCB_UIDQLOWERINC : out std_logic := '0'; ++ MCB_UIDQUPPERDEC : out std_logic := '0'; ++ MCB_UIDQUPPERINC : out std_logic := '0'; + MCB_UILDQSDEC : out std_logic := '0'; + MCB_UILDQSINC : out std_logic := '0'; + MCB_UIREAD : out std_logic; -- enables read w/o writing by turning on a SDO->SDI loopback inside the IODRP2_MCBs (doesn't exist in + -- regular IODRP2). IODRPCTRLR_R_WB becomes don't-care. + MCB_UIUDQSDEC : out std_logic := '0'; + MCB_UIUDQSINC : out std_logic := '0'; +- MCB_RECAL : out std_logic ; -- future hook to drive MCB's RECAL pin - initiates a hard re-calibration sequence when high ++ MCB_RECAL : out std_logic := '0'; -- future hook to drive MCB's RECAL pin - initiates a hard re-calibration sequence when high + MCB_UICMD : out std_logic; + MCB_UICMDIN : out std_logic; + MCB_UIDQCOUNT : out std_logic_vector(3 downto 0); +@@ -234,50 +226,31 @@ + constant WAIT5 : std_logic_vector(5 downto 0) := "001111"; + constant BROADCAST_NTERM : std_logic_vector(5 downto 0) := "010000"; + constant WAIT6 : std_logic_vector(5 downto 0) := "010001"; +- +- constant LDQS_CLK_WRITE_P_TERM : std_logic_vector(5 downto 0) := "010010"; +- constant LDQS_CLK_P_TERM_WAIT : std_logic_vector(5 downto 0) := "010011"; +- constant LDQS_CLK_WRITE_N_TERM : std_logic_vector(5 downto 0) := "010100"; +- constant LDQS_CLK_N_TERM_WAIT : std_logic_vector(5 downto 0) := "010101"; +- constant LDQS_PIN_WRITE_P_TERM : std_logic_vector(5 downto 0) := "010110"; +- constant LDQS_PIN_P_TERM_WAIT : std_logic_vector(5 downto 0) := "010111"; +- constant LDQS_PIN_WRITE_N_TERM : std_logic_vector(5 downto 0) := "011000"; +- constant LDQS_PIN_N_TERM_WAIT : std_logic_vector(5 downto 0) := "011001"; +- constant UDQS_CLK_WRITE_P_TERM : std_logic_vector(5 downto 0) := "011010"; +- constant UDQS_CLK_P_TERM_WAIT : std_logic_vector(5 downto 0) := "011011"; +- constant UDQS_CLK_WRITE_N_TERM : std_logic_vector(5 downto 0) := "011100"; +- constant UDQS_CLK_N_TERM_WAIT : std_logic_vector(5 downto 0) := "011101"; +- constant UDQS_PIN_WRITE_P_TERM : std_logic_vector(5 downto 0) := "011110"; +- constant UDQS_PIN_P_TERM_WAIT : std_logic_vector(5 downto 0) := "011111"; +- constant UDQS_PIN_WRITE_N_TERM : std_logic_vector(5 downto 0) := "100000"; +- constant UDQS_PIN_N_TERM_WAIT : std_logic_vector(5 downto 0) := "100001"; +- +- constant OFF_RZQ_PTERM : std_logic_vector(5 downto 0) := "100010"; +- constant WAIT7 : std_logic_vector(5 downto 0) := "100011"; +- constant OFF_ZIO_NTERM : std_logic_vector(5 downto 0) := "100100"; +- constant WAIT8 : std_logic_vector(5 downto 0) := "100101"; +- constant RST_DELAY : std_logic_vector(5 downto 0) := "100110"; +- constant START_DYN_CAL_PRE : std_logic_vector(5 downto 0) := "100111"; +- constant WAIT_FOR_UODONE : std_logic_vector(5 downto 0) := "101000"; +- constant LDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "101001"; +- constant LDQS_WAIT1 : std_logic_vector(5 downto 0) := "101010"; +- constant LDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "101011"; +- constant LDQS_WAIT2 : std_logic_vector(5 downto 0) := "101100"; +- constant UDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "101101"; +- constant UDQS_WAIT1 : std_logic_vector(5 downto 0) := "101110"; +- constant UDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "101111"; +- constant UDQS_WAIT2 : std_logic_vector(5 downto 0) := "110000"; +- constant START_DYN_CAL : std_logic_vector(5 downto 0) := "110001"; +- constant WRITE_CALIBRATE : std_logic_vector(5 downto 0) := "110010"; +- constant WAIT9 : std_logic_vector(5 downto 0) := "110011"; +- constant READ_MAX_VALUE : std_logic_vector(5 downto 0) := "110100"; +- constant WAIT10 : std_logic_vector(5 downto 0) := "110101"; +- constant ANALYZE_MAX_VALUE : std_logic_vector(5 downto 0) := "110110"; +- constant FIRST_DYN_CAL : std_logic_vector(5 downto 0) := "110111"; +- constant INCREMENT : std_logic_vector(5 downto 0) := "111000"; +- constant DECREMENT : std_logic_vector(5 downto 0) := "111001"; +- constant DONE : std_logic_vector(5 downto 0) := "111010"; +- --constant INCREMENT_TA : std_logic_vector(5 downto 0) := "111011"; ++ constant OFF_RZQ_PTERM : std_logic_vector(5 downto 0) := "010010"; ++ constant WAIT7 : std_logic_vector(5 downto 0) := "010011"; ++ constant OFF_ZIO_NTERM : std_logic_vector(5 downto 0) := "010100"; ++ constant WAIT8 : std_logic_vector(5 downto 0) := "010101"; ++ constant RST_DELAY : std_logic_vector(5 downto 0) := "010110"; ++ constant START_DYN_CAL_PRE : std_logic_vector(5 downto 0) := "010111"; ++ constant WAIT_FOR_UODONE : std_logic_vector(5 downto 0) := "011000"; ++ constant LDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "011001"; ++ constant LDQS_WAIT1 : std_logic_vector(5 downto 0) := "011010"; ++ constant LDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "011011"; ++ constant LDQS_WAIT2 : std_logic_vector(5 downto 0) := "011100"; ++ constant UDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "011101"; ++ constant UDQS_WAIT1 : std_logic_vector(5 downto 0) := "011110"; ++ constant UDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "011111"; ++ constant UDQS_WAIT2 : std_logic_vector(5 downto 0) := "100000"; ++ constant START_DYN_CAL : std_logic_vector(5 downto 0) := "100001"; ++ constant WRITE_CALIBRATE : std_logic_vector(5 downto 0) := "100010"; ++ constant WAIT9 : std_logic_vector(5 downto 0) := "100011"; ++ constant READ_MAX_VALUE : std_logic_vector(5 downto 0) := "100100"; ++ constant WAIT10 : std_logic_vector(5 downto 0) := "100101"; ++ constant ANALYZE_MAX_VALUE : std_logic_vector(5 downto 0) := "100110"; ++ constant FIRST_DYN_CAL : std_logic_vector(5 downto 0) := "100111"; ++ constant INCREMENT : std_logic_vector(5 downto 0) := "101000"; ++ constant DECREMENT : std_logic_vector(5 downto 0) := "101001"; ++ constant DONE : std_logic_vector(5 downto 0) := "101010"; + + constant RZQ : std_logic_vector(1 downto 0) := "00"; + constant ZIO : std_logic_vector(1 downto 0) := "01"; +@@ -315,12 +288,10 @@ + constant DIV : integer := 4; + + constant PNSKEW : std_logic := '1'; -- Default is 1'b1. Change to 1'b0 if PSKEW and NSKEW are not required +- constant PNSKEWDQS : std_logic := '1'; +- +- constant MULT_S : integer := 9; +- constant DIV_S : integer := 8; +- constant MULT_W : integer := 7; +- constant DIV_W : integer := 8; ++ constant PSKEW_MULT : integer := 9; ++ constant PSKEW_DIV : integer := 8; ++ constant NSKEW_MULT : integer := 7; ++ constant NSKEW_DIV : integer := 8; + + constant DQS_NUMERATOR : integer := 3; + constant DQS_DENOMINATOR : integer := 8; +@@ -329,23 +300,11 @@ + -- 3 for three eighths + + constant RST_CNT : std_logic_vector(9 downto 0) := "0000010000"; ++ constant TZQINIT_MAXCNT : std_logic_vector(9 downto 0) := C_MEM_TZQINIT_MAXCNT + RST_CNT; + + constant IN_TERM_PASS : std_logic := '0'; + constant DYN_CAL_PASS : std_logic := '1'; + +- function TZQINIT_MAXCNT_W return std_logic_vector is +- variable temp : std_logic_vector(9 downto 0) := (others=>'0'); +- begin +- if (C_MEM_TYPE = "DDR3") then +- temp := C_MEM_TZQINIT_MAXCNT + RST_CNT; +- else +- temp := 8 + RST_CNT; +- end if; +- return temp(9 downto 0); +- end function; +- +- constant TZQINIT_MAXCNT : std_logic_vector(9 downto 0) := TZQINIT_MAXCNT_W; +- + component iodrp_mcb_controller is + port ( + memcell_address : in std_logic_vector(7 downto 0); +@@ -387,15 +346,11 @@ + end component; + + signal P_Term : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term : std_logic_vector(6 downto 0) := "0000000"; +- signal P_Term_s : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term_s : std_logic_vector(6 downto 0) := "0000000"; +- signal P_Term_w : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term_w : std_logic_vector(6 downto 0) := "0000000"; ++ signal N_Term : std_logic_vector(6 downto 0) := "0000000"; + signal P_Term_Prev : std_logic_vector(5 downto 0) := "000000"; + signal N_Term_Prev : std_logic_vector(6 downto 0) := "0000000"; + +- signal STATE : std_logic_vector(5 downto 0); ++ signal STATE : std_logic_vector(5 downto 0) := START; + signal IODRPCTRLR_MEMCELL_ADDR : std_logic_vector(7 downto 0); + signal IODRPCTRLR_WRITE_DATA : std_logic_vector(7 downto 0); + signal Active_IODRP : std_logic_vector(1 downto 0); +@@ -411,7 +366,7 @@ + signal count : std_logic_vector(5 downto 0) := "000000"; -- counter for adding 18 extra clock cycles after setting Calibrate bit + signal counter_en : std_logic := '0'; -- counter enable for "count" + signal First_Dyn_Cal_Done : std_logic := '0'; -- flag - high after the very first dynamic calibration is done +- signal START_BROADCAST : std_logic ; -- Trigger to start Broadcast to IODRP2_MCBs to set Input Impedance - ++ signal START_BROADCAST : std_logic := '1'; -- Trigger to start Broadcast to IODRP2_MCBs to set Input Impedance - + -- state machine will wait for this to be high + signal DQS_DELAY_INITIAL : std_logic_vector(7 downto 0) := "00000000"; + signal DQS_DELAY : std_logic_vector(7 downto 0); -- contains the latest values written to LDQS and UDQS Input Delays +@@ -474,24 +429,15 @@ + signal MCB_UISDI_xilinx11 : std_logic; + signal MCB_UICS_xilinx6 : std_logic; + signal MCB_UIBROADCAST_xilinx4 : std_logic; +- signal MCB_UIADDR_int : std_logic_vector(4 downto 0); ++ signal MCB_UIADDR_xilinx3 : std_logic_vector(4 downto 0); + signal MCB_UIDONECAL_xilinx7 : std_logic; + signal MCB_UIREAD_xilinx10 : std_logic; + signal SELFREFRESH_MODE_xilinx11 : std_logic; + signal Max_Value_int : std_logic_vector(7 downto 0); + signal Rst_condition1 : std_logic; +- --signal Rst_condition2 : std_logic; ++ signal Rst_condition2 : std_logic; + signal non_violating_rst : std_logic; + signal WAIT_200us_COUNTER : std_logic_vector(15 downto 0); +- signal WaitTimer : std_logic_vector(7 downto 0); +- signal WarmEnough : std_logic; +- signal WaitCountEnable : std_logic; +- signal State_Start_DynCal_R1 : std_logic; +- signal State_Start_DynCal : std_logic; +- +- signal pre_sysrst_minpulse_width_ok : std_logic; +- signal pre_sysrst_cnt : std_logic_vector(3 downto 0); +- + -- This function multiplies by a constant MULT and then divides by the DIV constant + function Mult_Divide (Input : std_logic_vector(7 downto 0); MULT : integer ; DIV : integer ) return std_logic_vector is + variable Result : integer := 0; +@@ -505,19 +451,9 @@ + return temp(7 downto 0); + end function Mult_Divide; + +- +- + attribute syn_preserve : boolean; + attribute syn_preserve of P_Term : signal is TRUE; + attribute syn_preserve of N_Term : signal is TRUE; +- attribute syn_preserve of P_Term_s : signal is TRUE; +- attribute syn_preserve of N_Term_s : signal is TRUE; +- attribute syn_preserve of P_Term_w : signal is TRUE; +- attribute syn_preserve of N_Term_w : signal is TRUE; +- +- +- +- + attribute syn_preserve of P_Term_Prev : signal is TRUE; + attribute syn_preserve of N_Term_Prev : signal is TRUE; + attribute syn_preserve of IODRPCTRLR_MEMCELL_ADDR : signal is TRUE; +@@ -530,18 +466,6 @@ + + begin + +- +--- move the default assignment here to make FORMALITY happy. +- +- START_BROADCAST <= '1'; +- MCB_RECAL <= '0'; +- MCB_UIDQLOWERDEC <= '0'; +- MCB_UIADDR <= MCB_UIADDR_int; +- MCB_UIDQLOWERINC <= '0'; +- MCB_UIDQUPPERDEC <= '0'; +- MCB_UIDQUPPERINC <= '0'; +- +- + Max_Value <= Max_Value_int; + -- Drive referenced outputs + IODRP_ADD <= IODRP_ADD_xilinx0; +@@ -550,6 +474,7 @@ + MCB_UISDI <= MCB_UISDI_xilinx11; + MCB_UICS <= MCB_UICS_xilinx6; + MCB_UIBROADCAST <= MCB_UIBROADCAST_xilinx4; ++ MCB_UIADDR <= MCB_UIADDR_xilinx3; + MCB_UIDONECAL <= MCB_UIDONECAL_xilinx7; + MCB_UIREAD <= MCB_UIREAD_xilinx10; + SELFREFRESH_MODE <= SELFREFRESH_MODE_xilinx11; +@@ -607,7 +532,7 @@ + cmd_valid => MCB_CMD_VALID, + rdy_busy_n => MCB_RDY_BUSY_N, + use_broadcast => MCB_USE_BKST, +- drp_ioi_addr => MCB_UIADDR_int, ++ drp_ioi_addr => MCB_UIADDR_xilinx3, + sync_rst => RST_reg, + DRP_CLK => UI_CLK, + DRP_CS => MCB_UICS_xilinx6, +@@ -618,13 +543,10 @@ + MCB_UIREAD => MCB_UIREAD_xilinx10 + ); + ++ init_sequence: if (C_SIMULATION = "FALSE") generate + process (UI_CLK, RST) begin + if (RST = '1') then +- if (C_SIMULATION = "TRUE") then +- WAIT_200us_COUNTER <= X"7FF0"; +- else + WAIT_200us_COUNTER <= (others => '0'); +- end if; + elsif (UI_CLK'event and UI_CLK = '1') then + if (WAIT_200us_COUNTER(15) = '1') then + WAIT_200us_COUNTER <= WAIT_200us_COUNTER; +@@ -633,15 +555,16 @@ + end if; + end if; + end process; ++ end generate; + +- -- init_sequence_skip: if (C_SIMULATION = "TRUE") generate +- -- WAIT_200us_COUNTER <= X"FFFF"; +- -- process +- -- begin +- -- report "The 200 us wait period required before CKE goes active has been skipped in Simulation"; +- -- wait; +- -- end process; +- -- end generate; ++ init_sequence_skip: if (C_SIMULATION = "TRUE") generate ++ WAIT_200us_COUNTER <= X"FFFF"; ++ process ++ begin ++ report "The 200 us wait period required before CKE goes active has been skipped in Simulation"; ++ wait; ++ end process; ++ end generate; + + + gen_CKE_Train_a: if (C_MEM_TYPE = "DDR2") generate +@@ -653,8 +576,6 @@ + CKE_Train <= '0'; + elsif (WAIT_200us_COUNTER(15) = '1' and MCB_UODONECAL = '0') then + CKE_Train <= '1'; +- else +- CKE_Train <= '0'; + end if; + end if; + end process; +@@ -671,20 +592,19 @@ + --******************************************** + -- PLL_LOCK and RST signals + --******************************************** +- --MCB_SYSRST <= Pre_SYSRST or RST_reg; -- Pre_SYSRST is generated from the STATE state machine, and is OR'd with RST_reg input to drive MCB's ++ MCB_SYSRST <= Pre_SYSRST or RST_reg; -- Pre_SYSRST is generated from the STATE state machine, and is OR'd with RST_reg input to drive MCB's + -- SYSRST pin (MCB_SYSRST) +- + rst_tmp <= not(SELFREFRESH_MODE_xilinx11) and not(PLL_LOCK_R2); -- rst_tmp becomes 1 if you lose Lock and the device is not in SUSPEND + + process (UI_CLK, RST) begin + if (RST = '1') then +- --Block_Reset <= '0'; +- --RstCounter <= (others => '0'); +- --elsif (UI_CLK'event and UI_CLK = '1') then +- -- if (rst_tmp = '1') then -- this is to deal with not allowing the user-reset "RST" to violate TZQINIT_MAXCNT (min time between resets to DDR3) ++ Block_Reset <= '0'; ++ RstCounter <= (others => '0'); ++ elsif (UI_CLK'event and UI_CLK = '1') then ++ if (rst_tmp = '1') then -- this is to deal with not allowing the user-reset "RST" to violate TZQINIT_MAXCNT (min time between resets to DDR3) + Block_Reset <= '0'; + RstCounter <= (others => '0'); +- elsif (UI_CLK'event and UI_CLK = '1') then ++ else + Block_Reset <= '0'; -- default to allow STATE to move out of RST_DELAY state + if (Pre_SYSRST = '1') then + RstCounter <= RST_CNT; -- whenever STATE wants to reset the MCB, set RstCounter to h10 +@@ -695,14 +615,11 @@ + end if; + end if; + end if; +- --end if; ++ end if; + end process; +- +- -- Rst_contidtion1 is to make sure RESET will not happen again within TZQINIT_MAXCNT +- non_violating_rst <= RST and Rst_condition1; +- MCB_SYSRST <= Pre_SYSRST; + +- process (UI_CLK) begin ++ non_violating_rst <= RST and Rst_condition1; ++ process (UI_CLK) begin + if (UI_CLK'event and UI_CLK = '1') then + if (RstCounter >= TZQINIT_MAXCNT) then + Rst_condition1 <= '1'; +@@ -712,31 +629,18 @@ + end if; + end process; + +--- -- non_violating_rst asserts whenever (system-level reset) RST is asserted but must be after TZQINIT_MAXCNT is reached (min-time between resets for DDR3) +--- -- After power stablizes, we will hold MCB in reset state for at least 200us before beginning initialization process. +--- -- If the PLL loses lock during normal operation, no ui_clk will be present because mcb_drp_clk is from a BUFGCE which +--- is gated by pll's lock signal. When the PLL locks again, the RST_reg stays asserted for at least 200 us which +--- will cause MCB to reset and reinitialize the memory afterwards. +--- -- During SUSPEND operation, the PLL will lose lock but non_violating_rst remains low (de-asserted) and WAIT_200us_COUNTER stays at +--- its terminal count. The PLL_LOCK input does not come direct from PLL, rather it is driven by gated_pll_lock from mcb_raw_wrapper module +--- The gated_pll_lock in the mcb_raw_wrapper does not de-assert during SUSPEND operation, hence PLL_LOCK will not de-assert, and the soft calibration +--- state machine will not reset during SUSPEND. +--- -- RST_reg is the control signal that resets the mcb_soft_calibration's State Machine. The MCB_SYSRST is now equal to +--- Pre_SYSRST. When State Machine is performing "INPUT Termination Calibration", it holds the MCB in reset by assertign MCB_SYSRST. +--- It will deassert the MCB_SYSRST so that it can grab the bus to broadcast the P and N term value to all of the DQ pins. Once the calibrated INPUT +--- termination is set, the State Machine will issue another short MCB_SYSRST so that MCB will use the tuned input termination during DQS preamble calibration. + + +- --process (UI_CLK) begin +- -- if (UI_CLK'event and UI_CLK = '1') then +- -- +- -- if (RstCounter < RST_CNT) then +- -- Rst_condition2 <= '1'; +- -- else +- -- Rst_condition2 <= '0'; +- -- end if; +- -- end if; +- --end process; ++ process (UI_CLK) begin ++ if (UI_CLK'event and UI_CLK = '1') then ++ ++ if (RstCounter < RST_CNT) then ++ Rst_condition2 <= '1'; ++ else ++ Rst_condition2 <= '0'; ++ end if; ++ end if; ++ end process; + + process (UI_CLK, non_violating_rst) begin + if (non_violating_rst = '1') then +@@ -745,47 +649,18 @@ + if (WAIT_200us_COUNTER(15) = '0') then + RST_reg <= '1'; + else +- --RST_reg <= Rst_condition2 or rst_tmp; -- insures RST_reg is at least h10 pulses long +- RST_reg <= rst_tmp; -- insures RST_reg is at least h10 pulses long ++ RST_reg <= Rst_condition2 or rst_tmp; -- insures RST_reg is at least h10 pulses long + end if; + end if; + end process; + +---************************************************************* +--- Stretching the pre_sysrst to satisfy the minimum pulse width +---************************************************************* +- +-process (UI_CLK) begin +-if (UI_CLK'event and UI_CLK = '1') then +- if (STATE = START_DYN_CAL_PRE) then +- pre_sysrst_cnt <= pre_sysrst_cnt + '1'; +- else +- pre_sysrst_cnt <= (others=>'0'); +- end if; +-end if; +-end process; +- +-pre_sysrst_minpulse_width_ok <= pre_sysrst_cnt(3); +- ++ + --******************************************** + -- SUSPEND Logic + --******************************************** +- process (UI_CLK,RST) ++ process (UI_CLK) + begin +- if (RST = '1') then +- +- SELFREFRESH_MCB_MODE_R1 <= '0'; +- SELFREFRESH_MCB_MODE_R2 <= '0'; +- SELFREFRESH_MCB_MODE_R3 <= '0'; +- +- SELFREFRESH_REQ_R1 <= '0'; +- SELFREFRESH_REQ_R2 <= '0'; +- SELFREFRESH_REQ_R3 <= '0'; +- +- PLL_LOCK_R1 <= '0'; +- PLL_LOCK_R2 <= '0'; +- +- elsif (UI_CLK'event and UI_CLK = '1') then ++ if (UI_CLK'event and UI_CLK = '1') then + -- SELFREFRESH_MCB_MODE is clocked by sysclk_2x_180 + SELFREFRESH_MCB_MODE_R1 <= SELFREFRESH_MCB_MODE; + SELFREFRESH_MCB_MODE_R2 <= SELFREFRESH_MCB_MODE_R1; +@@ -810,10 +685,9 @@ + if (UI_CLK'event and UI_CLK = '1') then + if (RST = '1') then + SELFREFRESH_MCB_REQ <= '0'; +- --elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R3 = '0') and (STATE = START_DYN_CAL)) then +- elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R3 = '0')) then ++ elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R1 = '0') and (STATE = START_DYN_CAL)) then + SELFREFRESH_MCB_REQ <= '0'; +- elsif ((STATE = START_DYN_CAL) and (SELFREFRESH_REQ_R3 = '1')) then ++ elsif ((STATE = START_DYN_CAL) and (SELFREFRESH_REQ_R1 = '1')) then + SELFREFRESH_MCB_REQ <= '1'; + end if; + end if; +@@ -859,10 +733,6 @@ + + -- SELFREFRESH_MCB_MODE deasserted status is hold off + -- until Soft_Calib has at least done one loop of DQS update. +--- New logic WarmeEnough is added to make sure PLL_Lock is lockec and all IOs stable before +--- deassert the status of MCB's SELFREFRESH_MODE. This is to ensure all IOs are stable before +--- user logic sending new commands to MCB. +- + process (UI_CLK) + begin + if (UI_CLK'event and UI_CLK = '1') then +@@ -870,76 +740,12 @@ + SELFREFRESH_MODE_xilinx11 <= '0'; + elsif (SELFREFRESH_MCB_MODE_R2 = '1') then + SELFREFRESH_MODE_xilinx11 <= '1'; +- elsif (WarmEnough = '1') then +- SELFREFRESH_MODE_xilinx11 <= '0'; +- end if; +- end if; +- end process; +- +- +- +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- WaitCountEnable <= '0'; +- elsif (SELFREFRESH_REQ_R2 = '0' and SELFREFRESH_REQ_R1 = '1') then +- WaitCountEnable <= '0'; + elsif ((PERFORM_START_DYN_CAL_AFTER_SELFREFRESH = '0') and (PERFORM_START_DYN_CAL_AFTER_SELFREFRESH_R1 = '1')) then +- WaitCountEnable <= '1'; +- else +- WaitCountEnable <= WaitCountEnable; ++ SELFREFRESH_MODE_xilinx11 <= '0'; + end if; + end if; + end process; + +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- State_Start_DynCal <= '0'; +- elsif (STATE = START_DYN_CAL) then +- State_Start_DynCal <= '1'; +- else +- State_Start_DynCal <= '0'; +- end if; +- end if; +- end process; +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- State_Start_DynCal_R1 <= '0'; +- else +- State_Start_DynCal_R1 <= State_Start_DynCal; +- end if; +- end if; +- end process; +- +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- WaitTimer <= (others => '0'); +- WarmEnough <= '1'; +- elsif ((SELFREFRESH_REQ_R2 = '0') and (SELFREFRESH_REQ_R1 = '1')) then +- WaitTimer <= (others => '0'); +- WarmEnough <= '0'; +- elsif (WaitTimer = X"04") then +- WaitTimer <= WaitTimer ; +- WarmEnough <= '1'; +- elsif (WaitCountEnable = '1') then +- WaitTimer <= WaitTimer + '1'; +- else +- WaitTimer <= WaitTimer ; +- end if; +- end if; +- end process; +- + --******************************************** + --Comparitor for Dynamic Calibration circuit + --******************************************** +@@ -1014,7 +820,7 @@ + if (UI_CLK'event and UI_CLK = '1') then + if (RST_reg = '1') then -- Synchronous reset + MCB_CMD_VALID <= '0'; +- MCB_UIADDR_int <= "00000"; -- take control of UI/UO port ++ MCB_UIADDR_xilinx3 <= "00000"; -- take control of UI/UO port + MCB_UICMDEN <= '1'; -- tells MCB that it is in Soft Cal. + MCB_UIDONECAL_xilinx7 <= '0'; + MCB_USE_BKST <= '0'; +@@ -1027,11 +833,6 @@ + IODRPCTRLR_USE_BKST <= '0'; + P_Term <= "000000"; + N_Term <= "0000000"; +- P_Term_s <= "000000"; +- N_Term_w <= "0000000"; +- P_Term_w <= "000000"; +- N_Term_s <= "0000000"; +- + P_Term_Prev <= "000000"; + N_Term_Prev <= "0000000"; + Active_IODRP <= RZQ; +@@ -1079,10 +880,7 @@ + Pre_SYSRST <= '1'; -- keeps MCB in reset + LastPass_DynCal <= IN_TERM_PASS; + if (SKIP_IN_TERM_CAL = 1) then +- --STATE <= WRITE_CALIBRATE; +- STATE <= WAIT_FOR_START_BROADCAST; +- P_Term <= "000000"; +- N_Term <= "0000000"; ++ STATE <= WRITE_CALIBRATE; + elsif (IODRPCTRLR_RDY_BUSY_N = '1') then + STATE <= LOAD_RZQ_NTERM; + else +@@ -1135,8 +933,7 @@ + STATE <= LOAD_RZQ_PTERM; + + when MULTIPLY_DIVIDE => -- h06 +- -- 13/4/2011 compensate the added sync FF +- P_Term <= Mult_Divide(("00" & (P_Term - '1')),MULT,DIV)(5 downto 0); ++ P_Term <= Mult_Divide(("00" & P_Term),MULT,DIV)(5 downto 0); + STATE <= LOAD_ZIO_PTERM; + + when LOAD_ZIO_PTERM => --h07 +@@ -1188,13 +985,8 @@ + STATE <= LOAD_ZIO_NTERM; + + when SKEW => -- h0C +- +- P_Term_s <= Mult_Divide(("00" & P_Term), MULT_S, DIV_S)(5 downto 0); +- N_Term_w <= Mult_Divide(('0' & (N_Term-'1')), MULT_W, DIV_W)(6 downto 0); +- P_Term_w <= Mult_Divide(("00" & P_Term), MULT_W, DIV_W)(5 downto 0); +- N_Term_s <= Mult_Divide(('0' & (N_Term-'1')), MULT_S, DIV_S)(6 downto 0); +- P_Term <= Mult_Divide(("00" & P_Term), MULT_S, DIV_S)(5 downto 0); +- N_Term <= Mult_Divide(('0' & (N_Term-'1')), MULT_W, DIV_W)(6 downto 0); ++ P_Term <= Mult_Divide(("00" & P_Term), PSKEW_MULT, PSKEW_DIV)(5 downto 0); ++ N_Term <= Mult_Divide(('0' & N_Term), NSKEW_MULT, NSKEW_DIV)(6 downto 0); + STATE <= WAIT_FOR_START_BROADCAST; + + when WAIT_FOR_START_BROADCAST => --h0D +@@ -1202,7 +994,7 @@ + -- keeping the MCB in calibration mode + Active_IODRP <= MCB_PORT; + if ((START_BROADCAST and IODRPCTRLR_RDY_BUSY_N) = '1') then +- if ((P_Term /= P_Term_Prev) or (SKIP_IN_TERM_CAL = 1)) then ++ if (P_Term /= P_Term_Prev) then + STATE <= BROADCAST_PTERM; + P_Term_Prev <= P_Term; + elsif (N_Term /= N_Term_Prev) then +@@ -1272,184 +1064,10 @@ + STATE <= WAIT6; -- wait for a Refresh cycle + end if; + else +- -- if (PNSKEWDQS = '1') then +- STATE <= LDQS_CLK_WRITE_P_TERM; +- -- else +- -- STATE <= OFF_RZQ_PTERM; +- -- end if; +- end if; +- +--- ********************* +- when LDQS_CLK_WRITE_P_TERM => -- h12 +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_w; +- MCB_UIADDR_int <= IOI_LDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_CLK_WRITE_P_TERM; +- else +- STATE <= LDQS_CLK_P_TERM_WAIT; +- end if; +- +- +- when LDQS_CLK_P_TERM_WAIT => --7'h13 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_CLK_P_TERM_WAIT; +- else +- STATE <= LDQS_CLK_WRITE_N_TERM; +- end if; +- +- when LDQS_CLK_WRITE_N_TERM => --7'h14 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_s; +- MCB_UIADDR_int <= IOI_LDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_CLK_WRITE_N_TERM; +- else +- STATE <= LDQS_CLK_N_TERM_WAIT; +- end if; +- +- --** +- when LDQS_CLK_N_TERM_WAIT => --7'h15 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_CLK_N_TERM_WAIT; +- else +- STATE <= LDQS_PIN_WRITE_P_TERM; +- end if; +- +- +- when LDQS_PIN_WRITE_P_TERM => --7'h16 +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_s; +- MCB_UIADDR_int <= IOI_LDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_PIN_WRITE_P_TERM; +- else +- STATE <= LDQS_PIN_P_TERM_WAIT; +- end if; +- +- +- when LDQS_PIN_P_TERM_WAIT => --7'h17 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_PIN_P_TERM_WAIT; +- else +- STATE <= LDQS_PIN_WRITE_N_TERM; +- end if; +- +- +- when LDQS_PIN_WRITE_N_TERM => --7'h18 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_w; +- MCB_UIADDR_int <= IOI_LDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_PIN_WRITE_N_TERM; +- else +- STATE <= LDQS_PIN_N_TERM_WAIT; +- end if; +- +- +- when LDQS_PIN_N_TERM_WAIT => --7'h19 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_PIN_N_TERM_WAIT; +- else +- STATE <= UDQS_CLK_WRITE_P_TERM; +- end if; +- +- +- +- when UDQS_CLK_WRITE_P_TERM => --7'h1A +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_w; +- MCB_UIADDR_int <= IOI_UDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_CLK_WRITE_P_TERM; +- else +- STATE <= UDQS_CLK_P_TERM_WAIT; +- end if; +- +- +- when UDQS_CLK_P_TERM_WAIT => --7'h1B +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_CLK_P_TERM_WAIT; +- else +- STATE <= UDQS_CLK_WRITE_N_TERM; +- end if; +- +- +- when UDQS_CLK_WRITE_N_TERM => --7'h1C +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_s; +- MCB_UIADDR_int <= IOI_UDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_CLK_WRITE_N_TERM; +- else +- STATE <= UDQS_CLK_N_TERM_WAIT; +- end if; +- +- when UDQS_CLK_N_TERM_WAIT => --7'h1D +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_CLK_N_TERM_WAIT; +- else +- STATE <= UDQS_PIN_WRITE_P_TERM; +- end if; +- +- +- +- when UDQS_PIN_WRITE_P_TERM => --7'h1E +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_s; +- MCB_UIADDR_int <= IOI_UDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_PIN_WRITE_P_TERM; +- else +- STATE <= UDQS_PIN_P_TERM_WAIT; +- end if; +- +- +- when UDQS_PIN_P_TERM_WAIT => --7'h1F +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_PIN_P_TERM_WAIT; +- else +- STATE <= UDQS_PIN_WRITE_N_TERM; +- end if; +- +- when UDQS_PIN_WRITE_N_TERM => --7'h20 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_w; +- MCB_UIADDR_int <= IOI_UDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_PIN_WRITE_N_TERM; +- else +- STATE <= UDQS_PIN_N_TERM_WAIT; +- end if; +- +- +- when UDQS_PIN_N_TERM_WAIT => --7'h21 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_PIN_N_TERM_WAIT; +- else +- STATE <= OFF_RZQ_PTERM; ++ STATE <= OFF_RZQ_PTERM; + end if; +- +--- ********************* + +- +- when OFF_RZQ_PTERM => -- h22 ++ when OFF_RZQ_PTERM => -- h12 + Active_IODRP <= RZQ; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= PTerm; +@@ -1464,14 +1082,14 @@ + STATE <= WAIT7; + end if; + +- when WAIT7 => -- h23 ++ when WAIT7 => -- h13 + if ((not(IODRPCTRLR_RDY_BUSY_N)) = '1') then + STATE <= WAIT7; + else + STATE <= OFF_ZIO_NTERM; + end if; + +- when OFF_ZIO_NTERM => -- h24 ++ when OFF_ZIO_NTERM => -- h14 + Active_IODRP <= ZIO; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= NTerm; +@@ -1483,7 +1101,7 @@ + STATE <= WAIT8; + end if; + +- when WAIT8 => -- h25 ++ when WAIT8 => -- h15 + if (IODRPCTRLR_RDY_BUSY_N = '0') then + STATE <= WAIT8; + else +@@ -1494,8 +1112,8 @@ + end if; + end if; + +- when RST_DELAY => -- h26 +- --MCB_UICMDEN <= '0'; -- release control of UI/UO port ++ when RST_DELAY => -- h16 ++ MCB_UICMDEN <= '0'; -- release control of UI/UO port + if (Block_Reset = '1') then -- this ensures that more than 512 clock cycles occur since the last reset after MCB_WRITE_CALIBRATE ??? + STATE <= RST_DELAY; + else +@@ -1505,18 +1123,18 @@ + --*************************** + --DYNAMIC CALIBRATION PORTION + --*************************** +- when START_DYN_CAL_PRE => -- h27 ++ when START_DYN_CAL_PRE => -- h17 + LastPass_DynCal <= IN_TERM_PASS; + MCB_UICMDEN <= '0'; -- release UICMDEN + MCB_UIDONECAL_xilinx7 <= '1'; -- release UIDONECAL - MCB will now initialize. + Pre_SYSRST <= '1'; -- SYSRST pulse + if (CALMODE_EQ_CALIBRATION = '0') then -- if C_MC_CALIBRATION_MODE is set to NOCALIBRATION + STATE <= START_DYN_CAL; -- we'll skip setting the DQS delays manually +- elsif (pre_sysrst_minpulse_width_ok = '1') then ++ else + STATE <= WAIT_FOR_UODONE; + end if; + +- when WAIT_FOR_UODONE => -- h28 ++ when WAIT_FOR_UODONE => -- h18 + Pre_SYSRST <= '0'; -- SYSRST pulse + if ((IODRPCTRLR_RDY_BUSY_N and MCB_UODONECAL) = '1')then --IODRP Controller needs to be ready, & MCB needs to be done with hard calibration + MCB_UICMDEN <= '1'; -- grab UICMDEN +@@ -1526,11 +1144,11 @@ + STATE <= WAIT_FOR_UODONE; + end if; + +- when LDQS_WRITE_POS_INDELAY => -- h29 ++ when LDQS_WRITE_POS_INDELAY => -- h19 + IODRPCTRLR_MEMCELL_ADDR <= PosEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_LDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_LDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1') then + STATE <= LDQS_WRITE_POS_INDELAY; +@@ -1538,18 +1156,18 @@ + STATE <= LDQS_WAIT1; + end if; + +- when LDQS_WAIT1 => -- h2A ++ when LDQS_WAIT1 => -- h1A + if (MCB_RDY_BUSY_N = '0')then + STATE <= LDQS_WAIT1; + else + STATE <= LDQS_WRITE_NEG_INDELAY; + end if; + +- when LDQS_WRITE_NEG_INDELAY => -- h2B ++ when LDQS_WRITE_NEG_INDELAY => -- h1B + IODRPCTRLR_MEMCELL_ADDR <= NegEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_LDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_LDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= LDQS_WRITE_NEG_INDELAY; +@@ -1557,18 +1175,18 @@ + STATE <= LDQS_WAIT2; + end if; + +- when LDQS_WAIT2 => -- 7'h2C ++ when LDQS_WAIT2 => -- 7'h1C + if(MCB_RDY_BUSY_N = '0')then + STATE <= LDQS_WAIT2; + else + STATE <= UDQS_WRITE_POS_INDELAY; + end if; + +- when UDQS_WRITE_POS_INDELAY => -- 7'h2D ++ when UDQS_WRITE_POS_INDELAY => -- 7'h1D + IODRPCTRLR_MEMCELL_ADDR <= PosEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_UDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_UDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= UDQS_WRITE_POS_INDELAY; +@@ -1576,18 +1194,18 @@ + STATE <= UDQS_WAIT1; + end if; + +- when UDQS_WAIT1 => -- 7'h2E ++ when UDQS_WAIT1 => -- 7'h1E + if (MCB_RDY_BUSY_N = '0')then + STATE <= UDQS_WAIT1; + else + STATE <= UDQS_WRITE_NEG_INDELAY; + end if; + +- when UDQS_WRITE_NEG_INDELAY => -- 7'h2F ++ when UDQS_WRITE_NEG_INDELAY => -- 7'h1F + IODRPCTRLR_MEMCELL_ADDR <= NegEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_UDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_UDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= UDQS_WRITE_NEG_INDELAY; +@@ -1595,7 +1213,7 @@ + STATE <= UDQS_WAIT2; + end if; + +- when UDQS_WAIT2 => -- 7'h30 ++ when UDQS_WAIT2 => -- 7'h20 + if (MCB_RDY_BUSY_N = '0')then + STATE <= UDQS_WAIT2; + else +@@ -1604,7 +1222,7 @@ + STATE <= START_DYN_CAL; + end if; + +- when START_DYN_CAL => -- h31 ++ when START_DYN_CAL => -- h21 + Pre_SYSRST <= '0'; -- SYSRST not driven + counter_inc <= (others => '0'); + counter_dec <= (others => '0'); +@@ -1624,7 +1242,7 @@ + STATE <= START_DYN_CAL; + end if; + +- when WRITE_CALIBRATE => -- h32 ++ when WRITE_CALIBRATE => -- h22 + Pre_SYSRST <= '0'; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= DelayControl; +@@ -1637,7 +1255,7 @@ + STATE <= WAIT9; + end if; + +- when WAIT9 => -- h33 ++ when WAIT9 => -- h23 + counter_en <= '1'; + if (count < "100110") then -- this adds approximately 22 extra clock cycles after WRITE_CALIBRATE + STATE <= WAIT9; +@@ -1645,7 +1263,7 @@ + STATE <= READ_MAX_VALUE; + end if; + +- when READ_MAX_VALUE => -- h34 ++ when READ_MAX_VALUE => -- h24 + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= MaxValue; + IODRPCTRLR_R_WB <= READ_MODE; +@@ -1656,7 +1274,7 @@ + STATE <= WAIT10; + end if; + +- when WAIT10 => -- h35 ++ when WAIT10 => -- h25 + if (IODRPCTRLR_RDY_BUSY_N = '0') then + STATE <= WAIT10; + else +@@ -1669,7 +1287,7 @@ + end if; + end if; + +- when ANALYZE_MAX_VALUE => -- h36 only do a Inc or Dec during a REFRESH cycle. ++ when ANALYZE_MAX_VALUE => -- h26 only do a Inc or Dec during a REFRESH cycle. + if (First_Dyn_Cal_Done = '0')then + STATE <= FIRST_DYN_CAL; + elsif ((Max_Value_int < Max_Value_Previous) and (Max_Value_Delta_Dn >= INCDEC_THRESHOLD)) then +@@ -1684,11 +1302,11 @@ + STATE <= START_DYN_CAL; + end if; + +- when FIRST_DYN_CAL => -- h37 ++ when FIRST_DYN_CAL => -- h27 + First_Dyn_Cal_Done <= '1'; -- set flag that the First Dynamic Calibration has been completed + STATE <= START_DYN_CAL; + +- when INCREMENT => -- h38 ++ when INCREMENT => -- h28 + STATE <= START_DYN_CAL; -- Default case: Inc is not high or no longer in REFRSH + MCB_UILDQSINC <= '0'; -- Default case: no inc or dec + MCB_UIUDQSINC <= '0'; -- Default case: no inc or dec +@@ -1712,7 +1330,7 @@ + STATE <= START_DYN_CAL; + end case; + +- when DECREMENT => -- h39 ++ when DECREMENT => -- h29 + STATE <= START_DYN_CAL; -- Default case: Dec is not high or no longer in REFRSH + MCB_UILDQSINC <= '0'; -- Default case: no inc or dec + MCB_UIUDQSINC <= '0'; -- Default case: no inc or dec +@@ -1738,7 +1356,7 @@ + end case; + end if; + +- when DONE => -- h3A ++ when DONE => -- h2A + Pre_SYSRST <= '0'; -- SYSRST cleared + MCB_UICMDEN <= '0'; -- release UICMDEN + STATE <= DONE; diff --git a/designs/leon3-xilinx-sp601/mig39/coregen.cgc b/designs/leon3-xilinx-sp601/mig39/coregen.cgc new file mode 100644 index 00000000..553ad2bc --- /dev/null +++ b/designs/leon3-xilinx-sp601/mig39/coregen.cgc @@ -0,0 +1,873 @@ + + + xilinx.com + CoreGen + mig_sp601 + 1.0 + + + mig_39 + MIG Virtex-6 and Spartan-6 + + + mig_39 + ./mig_39/user_design/mig.prj + + + + + mig_sp601 + ./ + ./tmp/ + ./tmp/_cg/ + + + xc6slx16 + spartan6 + csg324 + -2 + + + BusFormatParenNotRipped + VHDL + true + Synplicity + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + 2012-10-13+03:35 + + + + + model_parameter_resolution_generator + + + ip_xco_generator + + ./mig_39.xco + xco + Thu Dec 20 08:21:57 GMT 2012 + 0x06DDCB9F + generationID_1879581046 + + + + implementation_source_generator + + ./mig_39/docs/ug388.pdf + ignore + pdf + Thu Dec 20 08:21:57 GMT 2012 + 0x90FCF0D1 + generationID_1879581046 + + + ./mig_39/docs/ug416.pdf + ignore + pdf + Thu Dec 20 08:21:57 GMT 2012 + 0x5A2D5D89 + generationID_1879581046 + + + ./mig_39/example_design/datasheet.txt + ignore + txt + Thu Dec 20 08:21:58 GMT 2012 + 0x3FA1A315 + generationID_1879581046 + + + ./mig_39/example_design/mig.prj + ignore + unknown + Thu Dec 20 08:21:58 GMT 2012 + 0xDB2A4563 + generationID_1879581046 + + + ./mig_39/example_design/par/example_top.ucf + ignore + ucf + Thu Dec 20 08:21:58 GMT 2012 + 0x3EE8669F + generationID_1879581046 + + + ./mig_39/example_design/par/icon_coregen.xco + ignore + xco + Thu Dec 20 08:21:58 GMT 2012 + 0xCBD7A036 + generationID_1879581046 + + + ./mig_39/example_design/par/ila_coregen.xco + ignore + xco + Thu Dec 20 08:21:58 GMT 2012 + 0xE42762DD + generationID_1879581046 + + + ./mig_39/example_design/par/ise_flow.sh + ignore + unknown + Thu Dec 20 08:21:58 GMT 2012 + 0x033CA452 + generationID_1879581046 + + + ./mig_39/example_design/par/ise_run.txt + ignore + txt + Thu Dec 20 08:21:58 GMT 2012 + 0x0D06A19A + generationID_1879581046 + + + ./mig_39/example_design/par/makeproj.sh + ignore + unknown + Thu Dec 20 08:21:58 GMT 2012 + 0xCFE64DF9 + generationID_1879581046 + + + ./mig_39/example_design/par/mem_interface_top.ut + ignore + unknown + Thu Dec 20 08:21:58 GMT 2012 + 0xCDD0105F + generationID_1879581046 + + + ./mig_39/example_design/par/readme.txt + ignore + txt + Thu Dec 20 08:21:58 GMT 2012 + 0xE0953675 + generationID_1879581046 + + + ./mig_39/example_design/par/rem_files.sh + ignore + unknown + Thu Dec 20 08:21:58 GMT 2012 + 0xBC4318C8 + generationID_1879581046 + + + ./mig_39/example_design/par/vio_coregen.xco + ignore + xco + Thu Dec 20 08:21:58 GMT 2012 + 0x310B51ED + generationID_1879581046 + + + ./mig_39/example_design/rtl/example_top.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x772565CF + generationID_1879581046 + + + ./mig_39/example_design/rtl/iodrp_controller.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x5A2197DD + generationID_1879581046 + + + ./mig_39/example_design/rtl/iodrp_mcb_controller.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x69237401 + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_raw_wrapper.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xA3623325 + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_soft_calibration.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x9B8E0B5E + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_soft_calibration_top.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xC37A23BB + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_infrastructure.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x702DFF2F + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_tb_top.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xFB368D57 + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_wrapper.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xF3CED667 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/afifo.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x26568D9A + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/cmd_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xC6EF0126 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/cmd_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x893B0F01 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/data_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x6E88FB8E + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/init_mem_pattern_ctr.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x26DEA717 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/mcb_flow_control.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xB9D71414 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/mcb_traffic_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x125A1D59 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/rd_data_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x50A90B14 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/read_data_path.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xDFA5DAF7 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/read_posted_fifo.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xBC61DAC4 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/sp6_data_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xA9170C59 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/tg_status.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x7B717096 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/v6_data_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x24F3E550 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/wr_data_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x91BCA941 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/write_data_path.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x391A16CE + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/readme.txt + ignore + txt + Thu Dec 20 08:21:58 GMT 2012 + 0xFA4BA7C6 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/sim.do + ignore + unknown + Thu Dec 20 08:21:58 GMT 2012 + 0x28E74B6D + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/sim_tb_top.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xC8C4E77C + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/timing_sim.sh + ignore + unknown + Thu Dec 20 08:21:58 GMT 2012 + 0xD1170B9A + generationID_1879581046 + + + ./mig_39/example_design/synth/example_top.lso + ignore + unknown + Thu Dec 20 08:21:58 GMT 2012 + 0xEEDE3797 + generationID_1879581046 + + + ./mig_39/example_design/synth/example_top.prj + ignore + unknown + Thu Dec 20 08:21:58 GMT 2012 + 0x45A82CBA + generationID_1879581046 + + + ./mig_39/example_design/synth/mem_interface_top_synp.sdc + ignore + unknown + Thu Dec 20 08:21:58 GMT 2012 + 0x8CC320DE + generationID_1879581046 + + + ./mig_39/example_design/synth/script_synp.tcl + ignore + tcl + Thu Dec 20 08:21:58 GMT 2012 + 0x3AD22759 + generationID_1879581046 + + + ./mig_39/user_design/datasheet.txt + ignore + txt + Thu Dec 20 08:21:59 GMT 2012 + 0x9DF625F7 + generationID_1879581046 + + + ./mig_39/user_design/mig.prj + ignore + unknown + Thu Dec 20 08:21:59 GMT 2012 + 0xDB2A4563 + generationID_1879581046 + + + ./mig_39/user_design/par/icon_coregen.xco + ignore + xco + Thu Dec 20 08:21:58 GMT 2012 + 0xCBD7A036 + generationID_1879581046 + + + ./mig_39/user_design/par/ila_coregen.xco + ignore + xco + Thu Dec 20 08:21:58 GMT 2012 + 0xE42762DD + generationID_1879581046 + + + ./mig_39/user_design/par/ise_flow.sh + ignore + unknown + Thu Dec 20 08:21:59 GMT 2012 + 0x517B9DBE + generationID_1879581046 + + + ./mig_39/user_design/par/ise_run.txt + ignore + txt + Thu Dec 20 08:21:58 GMT 2012 + 0xC829CAF6 + generationID_1879581046 + + + ./mig_39/user_design/par/makeproj.sh + ignore + unknown + Thu Dec 20 08:21:58 GMT 2012 + 0xCFE64DF9 + generationID_1879581046 + + + ./mig_39/user_design/par/mem_interface_top.ut + ignore + unknown + Thu Dec 20 08:21:59 GMT 2012 + 0xCDD0105F + generationID_1879581046 + + + ./mig_39/user_design/par/mig_39.ucf + ucf + Thu Dec 20 08:21:59 GMT 2012 + 0xB2A36FB3 + generationID_1879581046 + + + ./mig_39/user_design/par/readme.txt + ignore + txt + Thu Dec 20 08:21:59 GMT 2012 + 0xD26FC611 + generationID_1879581046 + + + ./mig_39/user_design/par/rem_files.sh + ignore + unknown + Thu Dec 20 08:21:59 GMT 2012 + 0x107D2E3F + generationID_1879581046 + + + ./mig_39/user_design/par/vio_coregen.xco + ignore + xco + Thu Dec 20 08:21:59 GMT 2012 + 0x310B51ED + generationID_1879581046 + + + ./mig_39/user_design/rtl/iodrp_controller.vhd + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x5A2197DD + generationID_1879581046 + + + ./mig_39/user_design/rtl/iodrp_mcb_controller.vhd + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x69237401 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_raw_wrapper.vhd + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xA3623325 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_soft_calibration.vhd + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x9B8E0B5E + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_soft_calibration_top.vhd + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xC37A23BB + generationID_1879581046 + + + ./mig_39/user_design/rtl/memc3_infrastructure.vhd + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x702DFF2F + generationID_1879581046 + + + ./mig_39/user_design/rtl/memc3_wrapper.vhd + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xF3CED667 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mig_39.vhd + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x623B1858 + generationID_1879581046 + + + ./mig_39/user_design/sim/afifo.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x26568D9A + generationID_1879581046 + + + ./mig_39/user_design/sim/cmd_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xC6EF0126 + generationID_1879581046 + + + ./mig_39/user_design/sim/cmd_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x893B0F01 + generationID_1879581046 + + + ./mig_39/user_design/sim/data_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x6E88FB8E + generationID_1879581046 + + + ./mig_39/user_design/sim/init_mem_pattern_ctr.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x26DEA717 + generationID_1879581046 + + + ./mig_39/user_design/sim/mcb_flow_control.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xB9D71414 + generationID_1879581046 + + + ./mig_39/user_design/sim/mcb_traffic_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x125A1D59 + generationID_1879581046 + + + ./mig_39/user_design/sim/memc3_tb_top.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xFB368D57 + generationID_1879581046 + + + ./mig_39/user_design/sim/rd_data_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x50A90B14 + generationID_1879581046 + + + ./mig_39/user_design/sim/read_data_path.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xDFA5DAF7 + generationID_1879581046 + + + ./mig_39/user_design/sim/read_posted_fifo.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xBC61DAC4 + generationID_1879581046 + + + ./mig_39/user_design/sim/readme.txt + ignore + txt + Thu Dec 20 08:21:59 GMT 2012 + 0xFA4BA7C6 + generationID_1879581046 + + + ./mig_39/user_design/sim/sim.do + ignore + unknown + Thu Dec 20 08:21:59 GMT 2012 + 0x7E312C43 + generationID_1879581046 + + + ./mig_39/user_design/sim/sim_tb_top.vhd + ignore + vhdl + Thu Dec 20 08:21:59 GMT 2012 + 0x507925E3 + generationID_1879581046 + + + ./mig_39/user_design/sim/sp6_data_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0xA9170C59 + generationID_1879581046 + + + ./mig_39/user_design/sim/tg_status.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x7B717096 + generationID_1879581046 + + + ./mig_39/user_design/sim/v6_data_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x24F3E550 + generationID_1879581046 + + + ./mig_39/user_design/sim/wr_data_gen.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x91BCA941 + generationID_1879581046 + + + ./mig_39/user_design/sim/write_data_path.vhd + ignore + vhdl + Thu Dec 20 08:21:58 GMT 2012 + 0x391A16CE + generationID_1879581046 + + + ./mig_39/user_design/synth/mem_interface_top_synp.sdc + ignore + unknown + Thu Dec 20 08:21:59 GMT 2012 + 0xBE2AEA94 + generationID_1879581046 + + + ./mig_39/user_design/synth/mig_39.lso + ignore + unknown + Thu Dec 20 08:21:59 GMT 2012 + 0xEEDE3797 + generationID_1879581046 + + + ./mig_39/user_design/synth/mig_39.prj + ignore + unknown + Thu Dec 20 08:21:59 GMT 2012 + 0x1521D75B + generationID_1879581046 + + + ./mig_39/user_design/synth/script_synp.tcl + ignore + tcl + Thu Dec 20 08:21:59 GMT 2012 + 0x54B8A577 + generationID_1879581046 + + + ./mig_39.vho + vho + Thu Dec 20 08:21:59 GMT 2012 + 0xD097E43C + generationID_1879581046 + + + ./mig_39_readme.txt + ignore + txt + Thu Dec 20 08:21:59 GMT 2012 + 0xC556B87D + generationID_1879581046 + + + ./mig_39_xmdf.tcl + ignore + tcl + Thu Dec 20 08:21:59 GMT 2012 + 0x87D169C0 + generationID_1879581046 + + + + instantiation_template_generator + + + asy_generator + + + xmdf_generator + + + ise_generator + + ./mig_39.gise + ignore + gise + Thu Dec 20 08:22:09 GMT 2012 + 0x8CB3D14A + generationID_1879581046 + + + ./mig_39.xise + ignore + xise + Thu Dec 20 08:22:09 GMT 2012 + 0x395B8CC2 + generationID_1879581046 + + + + deliver_readme_generator + + + flist_generator + + ./mig_39_flist.txt + ignore + txtFlist + txt + Thu Dec 20 08:22:09 GMT 2012 + 0xC0625487 + generationID_1879581046 + + + + + + + + + + mig_sp601 + ./ + ./tmp/ + ./tmp/_cg + + + xc6slx16 + spartan6 + csg324 + -2 + + + BusFormatParenNotRipped + VHDL + true + Synplicity + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + + + diff --git a/designs/leon3-xilinx-sp601/mig39/coregen.cgp b/designs/leon3-xilinx-sp601/mig39/coregen.cgp new file mode 100644 index 00000000..3b720875 --- /dev/null +++ b/designs/leon3-xilinx-sp601/mig39/coregen.cgp @@ -0,0 +1,22 @@ +# Date: Sun Jun 12 20:54:28 2011 + +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatParenNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx16 +SET devicefamily = spartan6 +SET flowvendor = Synplicity +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = csg324 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -2 +SET verilogsim = false +SET vhdlsim = true +SET workingdirectory = ./tmp/ + +# CRC: 6263b4e5 diff --git a/designs/leon3-xilinx-sp601/mig39/mig.prj b/designs/leon3-xilinx-sp601/mig39/mig.prj new file mode 100644 index 00000000..155947ba --- /dev/null +++ b/designs/leon3-xilinx-sp601/mig39/mig.prj @@ -0,0 +1,62 @@ + + + mig_39 + xc6slx45t-fgg484/-3 + 3.92 + + DDR2_SDRAM/Components/EDE1116ACBG-8E + 5000 + 0 + 1 + FALSE + + 13 + 10 + 3 + + + + 4(010) + 3 + Enable-Normal + Fullstrength + 50ohms + 0 + OCD Exit + Enable + Disable + Enable + Disable + NATIVE,NATIVE,NATIVE,NATIVE,NATIVE,NATIVE + Class II + Class II + CALIB_TERM + 25 Ohms + + + + Differential + 1 + Disable + Differential + Two 32-bit bi-directional and four 32-bit unidirectional ports + C2 + L6 + Port0 + Bi-directional,none,none,none,none,none + ROW_BANK_COLUMN + Round Robin + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + diff --git a/designs/leon3-xilinx-sp601/mig39/mig.xco b/designs/leon3-xilinx-sp601/mig39/mig.xco new file mode 100644 index 00000000..ce0dbb47 --- /dev/null +++ b/designs/leon3-xilinx-sp601/mig39/mig.xco @@ -0,0 +1,42 @@ +############################################################## +# +# Xilinx Core Generator version 13.1 +# Date: Sun Jun 12 21:20:10 2011 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatParenNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx16 +SET devicefamily = spartan6 +SET flowvendor = Synplicity +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = csg324 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -2 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT MIG_Virtex-6_and_Spartan-6 family Xilinx,_Inc. 3.92 +# END Select +# BEGIN Parameters +CSET component_name=mig_39 +CSET xml_input_file=./mig.prj +# END Parameters +GENERATE +# CRC: 6738592 diff --git a/designs/leon3-xilinx-sp601/mig39/mig_39.xco b/designs/leon3-xilinx-sp601/mig39/mig_39.xco new file mode 100644 index 00000000..622dcad8 --- /dev/null +++ b/designs/leon3-xilinx-sp601/mig39/mig_39.xco @@ -0,0 +1,49 @@ +############################################################## +# +# Xilinx Core Generator version 14.3 +# Date: Thu Dec 20 08:21:57 2012 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:mig:3.92 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatParenNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx16 +SET devicefamily = spartan6 +SET flowvendor = Synplicity +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = csg324 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -2 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT MIG_Virtex-6_and_Spartan-6 family Xilinx,_Inc. 3.92 +# END Select +# BEGIN Parameters +CSET component_name=mig_39 +CSET xml_input_file=./mig.prj +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-10-13T03:35:42Z +# END Extra information +GENERATE +# CRC: 6e025a14 diff --git a/designs/leon3-xilinx-sp601/mig_patch.txt b/designs/leon3-xilinx-sp601/mig_patch.txt new file mode 100644 index 00000000..c73bed91 --- /dev/null +++ b/designs/leon3-xilinx-sp601/mig_patch.txt @@ -0,0 +1,41 @@ +--- mig39/mig_39/user_design/rtl/mig_39.vhd 2012-12-20 09:21:58.000000000 +0100 ++++ mig39_copy/mig_39/user_design/rtl/mig_39.vhd 2012-12-20 09:24:32.951784727 +0100 +@@ -65,7 +65,7 @@ + --***************************************************************************** + library ieee; + use ieee.std_logic_1164.all; +-entity mig_39 is ++entity mig_37 is + generic + ( + C3_P0_MASK_SIZE : integer := 4; +@@ -118,7 +118,7 @@ + mcb3_dram_udm : out std_logic; + c3_sys_clk_p : in std_logic; + c3_sys_clk_n : in std_logic; +- c3_sys_rst_i : in std_logic; ++ c3_sys_rst_n : in std_logic; + c3_calib_done : out std_logic; + c3_clk0 : out std_logic; + c3_rst0 : out std_logic; +@@ -151,9 +151,9 @@ + c3_p0_rd_overflow : out std_logic; + c3_p0_rd_error : out std_logic + ); +-end mig_39; ++end mig_37; + +-architecture arc of mig_39 is ++architecture arc of mig_37 is + + + +@@ -449,7 +449,7 @@ + sys_clk_p => c3_sys_clk_p, + sys_clk_n => c3_sys_clk_n, + sys_clk => c3_sys_clk, +- sys_rst_i => c3_sys_rst_i, ++ sys_rst_i => c3_sys_rst_n, + clk0 => c3_clk0, + rst0 => c3_rst0, + async_rst => c3_async_rst, diff --git a/designs/leon3-xilinx-sp601/testbench.vhd b/designs/leon3-xilinx-sp601/testbench.vhd index 3157f632..96273cb9 100644 --- a/designs/leon3-xilinx-sp601/testbench.vhd +++ b/designs/leon3-xilinx-sp601/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-sp601/tkconfig.h b/designs/leon3-xilinx-sp601/tkconfig.h index 0e04a4de..379dc4ba 100644 --- a/designs/leon3-xilinx-sp601/tkconfig.h +++ b/designs/leon3-xilinx-sp601/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -874,6 +896,10 @@ #define CONFIG_DDR2SP_FTWIDTH 0 #endif +#ifndef CONFIG_MIG_DDR3 +#define CONFIG_MIG_DDR3 0 +#endif + #ifndef CONFIG_MIG_DDR2 #define CONFIG_MIG_DDR2 0 #endif @@ -1087,6 +1113,10 @@ #ifndef CONFIG_SPIMCTRL_PWRUPCNT #define CONFIG_SPIMCTRL_PWRUPCNT 0 #endif + +#ifndef CONFIG_SPIMCTRL_OFFSET +#define CONFIG_SPIMCTRL_OFFSET 0 +#endif #ifndef CONFIG_SPICTRL_ENABLE #define CONFIG_SPICTRL_ENABLE 0 #endif diff --git a/designs/leon3-xilinx-sp605/Makefile b/designs/leon3-xilinx-sp605/Makefile index a248aa5f..10ef2fc5 100644 --- a/designs/leon3-xilinx-sp605/Makefile +++ b/designs/leon3-xilinx-sp605/Makefile @@ -3,10 +3,12 @@ include .config GRLIB=../.. TOP=leon3mp BOARD=xilinx-sp605-xc6slx45t +DESIGN=leon3-xilinx-sp605 include $(GRLIB)/boards/$(BOARD)/Makefile.inc DEVICE=$(PART)-$(PACKAGE)$(SPEED) #UCF=$(GRLIB)/boards/$(BOARD)/$(TOP).ucf UCF=leon3mp.ucf +UCF_PLANAHEAD=$(UCF) QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf EFFORT=high ISEMAPOPT=-timing @@ -19,8 +21,15 @@ VHDLOPTSYNFILES= mig/mig_38/user_design/rtl/iodrp_controller.vhd \ mig/mig_38/user_design/rtl/mcb_soft_calibration_top.vhd \ mig/mig_38/user_design/rtl/memc3_infrastructure.vhd \ mig/mig_38/user_design/rtl/memc3_wrapper.vhd \ - mig/mig_38/user_design/rtl/mig_38.vhd -VHDLSYNFILES= \ + mig/mig_38/user_design/rtl/mig_38.vhd \ + mig39/mig_39/user_design/rtl/iodrp_controller.vhd \ + mig39/mig_39/user_design/rtl/iodrp_mcb_controller.vhd \ + mig39/mig_39/user_design/rtl/mcb_raw_wrapper.vhd \ + mig39/mig_39/user_design/rtl/mcb_soft_calibration.vhd \ + mig39/mig_39/user_design/rtl/mcb_soft_calibration_top.vhd \ + mig39/mig_39/user_design/rtl/memc3_infrastructure.vhd \ + mig39/mig_39/user_design/rtl/memc3_wrapper.vhd \ + mig39/mig_39/user_design/rtl/mig_39.vhd \ config.vhd svga2ch7301c.vhd ahbrom.vhd \ ahb2mig_sp605.vhd vga_clkgen.vhd leon3mp.vhd VHDLSIMFILES=testbench.vhd @@ -33,10 +42,10 @@ VCOMOPT=-explicit TECHLIBS = secureip unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip cypress ihp gleichmann gsi fmf spansion + tmtc openchip cypress ihp gsi fmf spansion DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci ambatest \ - leon4 leon4b64 l2cache gr1553b iommu haps ascs slink coremp7 pwm \ - ac97 hcan usb grfpc4 grlfpc4 + leon4 leon4v0 l2cache gr1553b iommu ascs slink pwm \ + hcan usb grfpc4 grlfpc4 FILEADD = MCB.vhd FILESKIP = grcan.vhd ddr2.v mobile_ddr.v @@ -53,4 +62,13 @@ mig: migclean: -rm -rf mig/mig_38* mig/tmp -.PHONY: mig +mig39: + coregen -b mig39/mig.xco -p mig39 + patch -p0 < mig_patch.txt + patch -p0 < memc3_infrastructure_patch.txt + patch -p0 < mcb_soft_calibration_patch.txt + +mig39clean: + -rm -rf mig39/mig_39* mig39/tmp + +.PHONY : mig mig39 mig39clean \ No newline at end of file diff --git a/designs/leon3-xilinx-sp605/README.txt b/designs/leon3-xilinx-sp605/README.txt index 1032d038..5051f8f5 100644 --- a/designs/leon3-xilinx-sp605/README.txt +++ b/designs/leon3-xilinx-sp605/README.txt @@ -8,16 +8,27 @@ interface. The MIG source code cannot be distributed due to the prohibitive Xilinx license, so the MIG must be re-generated with coregen before simulation and synthesis can be done. -To generate the MIG and install tne Xilinx unisim simulation +To generate the MIG using ISE13 and install the Xilinx unisim simulation library, do as follows: make mig make install-secureip -This will ONLY work with ISE-13.2 installed, and the XILINX variable -properly set in the shell. To synthesize the design, do +To generate the MIG using ISE14 and install the Xilinx unisim simulation +library, do as follows: + + make mig39 + make install-secureip + +This will ONLY work with correct version of ISE installed, and the XILINX variable +properly set in the shell. For ISE13 it is recommened to use the 'ise' make target +and for ISE14 to use the 'planAhead' target. To synthesize the design, do + + make ise (ISE13) + +or - make ise + make planAhead (ISE14) and then @@ -85,138 +96,72 @@ Design specifics $ grmon -xilusb -u - GRMON LEON debug monitor v1.1.51 professional version - - Copyright (C) 2004-2011 Aeroflex Gaisler - all rights reserved. - For latest updates, go to http://www.gaisler.com/ - Comments or bug-reports to support@gaisler.com - - Xilinx cable: Cable type/rev : 0x3 - JTAG chain: xc6slx45t xccace - - GRLIB build version: 4113 - - initialising ............... - detected frequency: 60 MHz - SRAM waitstates: 1 - - Component Vendor - LEON3 SPARC V8 Processor Gaisler Research - AHB Debug JTAG TAP Gaisler Research - GR Ethernet MAC Gaisler Research - LEON2 Memory Controller European Space Agency - AHB/APB Bridge Gaisler Research - LEON3 Debug Support Unit Gaisler Research - Xilinx MIG DDR2 controller Gaisler Research - System ACE I/F Controller Gaisler Research - Generic APB UART Gaisler Research - Multi-processor Interrupt Ctrl Gaisler Research - Modular Timer Unit Gaisler Research - SVGA Controller Gaisler Research - AMBA Wrapper for OC I2C-master Gaisler Research - General purpose I/O port Gaisler Research - AHB status register Gaisler Research - - Use command 'info sys' to print a detailed report of attached cores - -grlib> inf sys -00.01:003 Gaisler Research LEON3 SPARC V8 Processor (ver 0x0) - ahb master 0 -01.01:01c Gaisler Research AHB Debug JTAG TAP (ver 0x1) - ahb master 1 -02.01:01d Gaisler Research GR Ethernet MAC (ver 0x0) - ahb master 2, irq 12 - apb: 80000e00 - 80000f00 - Device index: dev0 - edcl ip 192.168.0.51, buffer 2 kbyte -00.04:00f European Space Agency LEON2 Memory Controller (ver 0x1) - ahb: 00000000 - 20000000 - apb: 80000000 - 80000100 - 16-bit prom @ 0x00000000 -01.01:006 Gaisler Research AHB/APB Bridge (ver 0x0) - ahb: 80000000 - 80100000 -02.01:004 Gaisler Research LEON3 Debug Support Unit (ver 0x1) - ahb: 90000000 - a0000000 - AHB trace 256 lines, 32-bit bus, stack pointer 0x47fffff0 - CPU#0 win 8, hwbp 2, itrace 256, V8 mul/div, srmmu, lddel 1 - icache 2 * 8 kbyte, 32 byte/line rnd - dcache 2 * 4 kbyte, 16 byte/line rnd -04.01:06b Gaisler Research Xilinx MIG DDR2 controller (ver 0x0) - ahb: 40000000 - 48000000 - apb: 80000400 - 80000500 - DDR2: 128 Mbyte -08.01:067 Gaisler Research System ACE I/F Controller (ver 0x0) - irq 10 - ahb: fff00200 - fff00300 -01.01:00c Gaisler Research Generic APB UART (ver 0x1) - irq 2 - apb: 80000100 - 80000200 - baud rate 38461, DSU mode (FIFO debug) -02.01:00d Gaisler Research Multi-processor Interrupt Ctrl (ver 0x3) - apb: 80000200 - 80000300 -03.01:011 Gaisler Research Modular Timer Unit (ver 0x0) - irq 8 - apb: 80000300 - 80000400 - 8-bit scaler, 2 * 32-bit timers, divisor 60 -06.01:063 Gaisler Research SVGA Controller (ver 0x0) - apb: 80000600 - 80000700 - clk0: 50.00 MHz -09.01:028 Gaisler Research AMBA Wrapper for OC I2C-master (ver 0x3) - irq 11 - apb: 80000900 - 80000a00 -0a.01:01a Gaisler Research General purpose I/O port (ver 0x1) - apb: 80000a00 - 80000b00 -0f.01:052 Gaisler Research AHB status register (ver 0x0) - irq 7 - apb: 80000f00 - 80001000 -grlib> fla - - Intel-style 16-bit flash on D[31:16] - - Manuf. Intel - Device Strataflash P30 - - Device ID 02e44603e127ffff - User ID ffffffffffffffff - - - 1 x 32 Mbyte = 32 Mbyte total @ 0x00000000 - - - CFI info - flash family : 1 - flash size : 256 Mbit - erase regions : 2 - erase blocks : 259 - write buffer : 1024 bytes - lock-down : yes - region 0 : 255 blocks of 128 Kbytes - region 1 : 4 blocks of 32 Kbytes - -grlib> lo ~/ibm/src/bench/leonbench/coremark.exe -section: .text at 0x40000000, size 102544 bytes -section: .data at 0x40019090, size 2788 bytes -total size: 105332 bytes (1.2 Mbit/s) -read 272 symbols -entry point: 0x40000000 -grlib> run -2K performance run parameters for coremark. -CoreMark Size : 666 -Total ticks : 19945918 -Total time (secs): 19.945918 -Iterations/Sec : 100.271143 -Iterations : 2000 -Compiler version : GCC4.4.2 -Compiler flags : -O3 -mv8 -funroll-loops -fgcse-sm -combine -DPERFORMANCE_RUN=1 -mcpu=v8 -msoft-float -Memory location : STACK -seedcrc : 0xe9f5 -[0]crclist : 0xe714 -[0]crcmatrix : 0x1fd7 -[0]crcstate : 0x8e3a -[0]crcfinal : 0x4983 -Correct operation validated. See readme.txt for run and reporting rules. -CoreMark 1.0 : 100.271143 / GCC4.4.2 -O3 -mv8 -funroll-loops -fgcse-sm -combine -DPERFORMANCE_RUN=1 -mcpu=v8 -msoft-float / Stack - -Program exited normally. -grlib> + GRMON2 LEON debug monitor v2.0.32 internal version + + Copyright (C) 2012 Aeroflex Gaisler - All rights reserved. + For latest updates, go to http://www.gaisler.com/ + Comments or bug-reports to support@gaisler.com + + +Parsing -xilusb +Parsing -u + +Commands missing help: + debug + +Xilusb: Cable type/rev : 0x3 + JTAG chain (2): xc6slx45t xccace + GRLIB build version: 4121 + Detected frequency: 60 MHz + + Component Vendor + LEON3 SPARC V8 Processor Aeroflex Gaisler + JTAG Debug Link Aeroflex Gaisler + GR Ethernet MAC Aeroflex Gaisler + LEON2 Memory Controller European Space Agency + AHB/APB Bridge Aeroflex Gaisler + LEON3 Debug Support Unit Aeroflex Gaisler + Xilinx MIG DDR2 Controller Aeroflex Gaisler + System ACE I/F Controller Aeroflex Gaisler + Generic UART Aeroflex Gaisler + Multi-processor Interrupt Ctrl. Aeroflex Gaisler + Modular Timer Unit Aeroflex Gaisler + SVGA frame buffer Aeroflex Gaisler + AMBA Wrapper for OC I2C-master Aeroflex Gaisler + General Purpose I/O port Aeroflex Gaisler + AHB Status Register Aeroflex Gaisler + + Use command 'info sys' to print a detailed report of attached cores + +grmon2> mem 0x40000000 + 0x40000000 40000000 40000004 40000008 ffff0000 @...@...@....... + 0x40000010 40000010 037007f0 57c016c0 16f416f0 @....p..W....... + 0x40000020 40000020 17f037f2 97c015f0 16e017e0 @.. ..7......... + 0x40000030 07f01370 17b103f0 54dc94b0 157217f8 ...p....T....r.. + +grmon2> lo /usr/local32/apps/bench/leon3/ +164.gzip.leon3 aocs.leon3 dhry.leon3 grmon.bat linpack.dp.leon3 ut699_res.txt +176.gcc.leon3 basicmath_large.leon3 gr712rc_res.txt l4ft.ods results.txt whetstone.leon3 +256.bzip2.leon3 coremark.exe.leon3 gr712rc_res2.txt l4ft.txt swim_bc +grmon2> lo /usr/local32/apps/bench/leon3/dhry.leon3 + 40000000 .text 54.7kB / 54.7kB [===============>] 100% + 4000DAF0 .data 2.7kB / 2.7kB [===============>] 100% + Total size: 57.44kB (1.53Mbit/s) + Entry point 0x40000000 + Image /usr/local32/apps/bench/leon3/dhry.leon3 loaded + +grmon2> run +Execution starts, 1000000 runs through Dhrystone +Total execution time: 5.2 s +Microseconds for one run through Dhrystone: 5.2 +Dhrystones per Second: 194169.1 + +Dhrystones MIPS : 110.5 + + + Program exited normally. + +grmon2> exit + +Exiting GRMON diff --git a/designs/leon3-xilinx-sp605/ahb2mig_sp605.vhd b/designs/leon3-xilinx-sp605/ahb2mig_sp605.vhd index 8791b3ae..0f4164e3 100644 --- a/designs/leon3-xilinx-sp605/ahb2mig_sp605.vhd +++ b/designs/leon3-xilinx-sp605/ahb2mig_sp605.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -316,7 +316,6 @@ begin ahbso.hirq <= (others => '0'); ahbso.hindex <= hindex; ahbso.hsplit <= (others => '0'); - ahbso.hcache <= '1'; apbo.pindex <= pindex; apbo.pconfig <= pconfig; @@ -396,7 +395,6 @@ begin ahbmi.hresp <= "00"; ahbmi.hgrant <= (others => '1'); ahbmi.hready <= r2.hready; - ahbmi.hcache <= '0'; ahbmi.hirq <= (others => '0'); ahbmi.testen <= '0'; ahbmi.testrst <= '0'; diff --git a/designs/leon3-xilinx-sp605/ahbrom.vhd b/designs/leon3-xilinx-sp605/ahbrom.vhd index f7c441dc..ac26c7b2 100644 --- a/designs/leon3-xilinx-sp605/ahbrom.vhd +++ b/designs/leon3-xilinx-sp605/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-xilinx-sp605/config.help b/designs/leon3-xilinx-sp605/config.help index 77727197..531ab1dc 100644 --- a/designs/leon3-xilinx-sp605/config.help +++ b/designs/leon3-xilinx-sp605/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -966,7 +1000,7 @@ CONFIG_SPIMCTRL_SDCARD Read command CONFIG_SPIMCTRL_READCMD - Read instruction for SPI memory device + Read instruction for SPI memory device (hex). Dummy byte CONFIG_SPIMCTRL_DUMMYBYTE @@ -976,6 +1010,10 @@ Dual output CONFIG_SPIMCTRL_DUALOUTPUT Memory device supports dual output when reading data. +Address offset +CONFIG_SPIMCTRL_OFFSET + Offset that will be added by core on SPI memory address (hex). + Clock scaler CONFIG_SPIMCTRL_SCALER Selects the divisor used when dividing the system clock to produce diff --git a/designs/leon3-xilinx-sp605/config.vhd.h b/designs/leon3-xilinx-sp605/config.vhd.h index 081b993c..f7e5fd9c 100644 --- a/designs/leon3-xilinx-sp605/config.vhd.h +++ b/designs/leon3-xilinx-sp605/config.vhd.h @@ -171,6 +171,7 @@ constant CFG_SPIMCTRL_SCALER : integer := CONFIG_SPIMCTRL_SCALER; constant CFG_SPIMCTRL_ASCALER : integer := CONFIG_SPIMCTRL_ASCALER; constant CFG_SPIMCTRL_PWRUPCNT : integer := CONFIG_SPIMCTRL_PWRUPCNT; + constant CFG_SPIMCTRL_OFFSET : integer := 16#CONFIG_SPIMCTRL_OFFSET#; -- SPI controller constant CFG_SPICTRL_ENABLE : integer := CONFIG_SPICTRL_ENABLE; diff --git a/designs/leon3-xilinx-sp605/lconfig.tk b/designs/leon3-xilinx-sp605/lconfig.tk index 030d68eb..f06f7de8 100755 --- a/designs/leon3-xilinx-sp605/lconfig.tk +++ b/designs/leon3-xilinx-sp605/lconfig.tk @@ -758,7 +758,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -768,7 +769,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -911,8 +914,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -931,6 +936,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1020,9 +1029,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1076,10 +1086,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1125,14 +1136,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1205,13 +1218,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1251,22 +1272,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1323,21 +1612,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1384,36 +1673,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1421,48 +1711,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1518,28 +1809,28 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH - global tmpvar_7 - minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x4.x.menu 3 bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1580,20 +1871,21 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1602,38 +1894,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} global CONFIG_HAS_SHARED_GRFPU global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} - global tmpvar_7 + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1690,92 +1983,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1783,18 +2076,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1835,52 +2128,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1888,162 +2182,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2099,45 +2394,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2177,18 +2474,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2196,55 +2494,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2301,24 +2604,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2358,17 +2661,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2376,37 +2680,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2462,22 +2767,22 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - global tmpvar_26 - minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_26 CONFIG_FPUFT_NONE + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" - $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN @@ -2548,26 +2853,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global tmpvar_26 + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 global CONFIG_FPUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} global CONFIG_FPUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} global CONFIG_FPUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} global CONFIG_FPUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2875,14 +3180,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 1 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_27 - minimenu $w.config.f 12 2 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_27 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 2 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 hex $w.config.f 12 3 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 4 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2956,17 +3261,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_27 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3538,16 +3843,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_28 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_28 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3609,21 +3914,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_28 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_28 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_28 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_28 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_28 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_28 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_28 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_28 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3683,14 +3988,14 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 18 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_29 - minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_29 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3744,17 +4049,17 @@ proc update_define_menu18 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_29 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_29 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3810,15 +4115,15 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_30 - minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_30 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3907,19 +4212,19 @@ proc update_menu19 {} { proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_30 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_30 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_30 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4214,9 +4519,10 @@ proc menu22 {w title} { hex $w.config.f 22 2 "Read instruction " CONFIG_SPIMCTRL_READCMD bool $w.config.f 22 3 "Read instruction requires dummy byte " CONFIG_SPIMCTRL_DUMMYBYTE bool $w.config.f 22 4 "Enable dual output for reads " CONFIG_SPIMCTRL_DUALOUTPUT - int $w.config.f 22 5 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER - int $w.config.f 22 6 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER - int $w.config.f 22 7 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT + hex $w.config.f 22 5 "Address offset " CONFIG_SPIMCTRL_OFFSET + int $w.config.f 22 6 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER + int $w.config.f 22 7 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER + int $w.config.f 22 8 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT @@ -4266,12 +4572,14 @@ proc update_menu22 {} { global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { configure_entry .menu22.config.f.x4 normal {n l y}} else {configure_entry .menu22.config.f.x4 disabled {y n l}} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu22.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x5.l configure -state normal; } else {.menu22.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x5.l configure -state disabled} global CONFIG_SPIMCTRL_SCALER - if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x5.l configure -state normal; } else {.menu22.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x5.l configure -state disabled} - global CONFIG_SPIMCTRL_ASCALER if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x6.l configure -state normal; } else {.menu22.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x6.l configure -state disabled} - global CONFIG_SPIMCTRL_PWRUPCNT + global CONFIG_SPIMCTRL_ASCALER if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x7.l configure -state normal; } else {.menu22.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x7.l configure -state disabled} + global CONFIG_SPIMCTRL_PWRUPCNT + if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x8.l configure -state normal; } else {.menu22.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x8.l configure -state disabled} } @@ -4290,6 +4598,8 @@ proc update_define_menu22 {} { global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT&15]} else {set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT|16]} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {validate_hex CONFIG_SPIMCTRL_OFFSET "$CONFIG_SPIMCTRL_OFFSET" 0} global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_SCALER "$CONFIG_SPIMCTRL_SCALER" 1} global CONFIG_SPIMCTRL_ASCALER @@ -4361,12 +4671,12 @@ proc menu23 {w title} { bool $w.config.f 23 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN int $w.config.f 23 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN bool $w.config.f 23 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_31 - minimenu $w.config.f 23 11 "Fault-tolerance" tmpvar_31 CONFIG_SPICTRL_NOFT + global tmpvar_32 + minimenu $w.config.f 23 11 "Fault-tolerance" tmpvar_32 CONFIG_SPICTRL_NOFT menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_31 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_31 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_31 -value "TMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_32 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_32 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_32 -value "TMR" -command "update_active" menusplit $w $w.config.f.x11.x.menu 3 @@ -4466,13 +4776,13 @@ proc update_define_menu23 {} { global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_31 + global tmpvar_32 global CONFIG_SPICTRL_NOFT - if {$tmpvar_31 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + if {$tmpvar_32 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} global CONFIG_SPICTRL_DMRFT - if {$tmpvar_31 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + if {$tmpvar_32 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} global CONFIG_SPICTRL_TMRFT - if {$tmpvar_31 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} + if {$tmpvar_32 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } @@ -4712,7 +5022,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4722,6 +5033,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4746,6 +5059,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4758,14 +5072,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4778,28 +5097,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 set CONFIG_FPU_GRFPU_SH 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4809,17 +5128,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4831,12 +5150,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4846,10 +5165,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4860,7 +5179,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4872,26 +5191,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4899,27 +5220,27 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_FPUFT_NONE 0 set CONFIG_FPUFT_PAR 0 set CONFIG_FPUFT_DMR 0 @@ -4943,7 +5264,7 @@ set CONFIG_AHB_MONWAR 0 set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_27 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4977,7 +5298,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_28 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4988,14 +5309,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_29 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_30 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5024,6 +5345,7 @@ set CONFIG_SPIMCTRL_SDCARD 0 set CONFIG_SPIMCTRL_READCMD 0B set CONFIG_SPIMCTRL_DUMMYBYTE 0 set CONFIG_SPIMCTRL_DUALOUTPUT 0 +set CONFIG_SPIMCTRL_OFFSET 0 set CONFIG_SPIMCTRL_SCALER 1 set CONFIG_SPIMCTRL_ASCALER 8 set CONFIG_SPIMCTRL_PWRUPCNT 0 @@ -5038,7 +5360,7 @@ set CONFIG_SPICTRL_ODMODE 0 set CONFIG_SPICTRL_TWEN 0 set CONFIG_SPICTRL_MAXWLEN 0 set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_31 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_SPICTRL_NOFT 0 set CONFIG_SPICTRL_DMRFT 0 set CONFIG_SPICTRL_TMRFT 0 @@ -5104,7 +5426,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5114,6 +5437,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5152,6 +5477,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5164,9 +5490,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5180,245 +5507,390 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} - global CONFIG_FPU_GRFPU_SH - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5461,13 +5933,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_27 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5530,38 +6002,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_28 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_29 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UART, timer, I/O port and interrupt controller" global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_30 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5609,6 +6081,8 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUMMYBYTE $CONFIG_SPIMCTRL_DUMMYBYTE [list $notmod] 2 } global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUALOUTPUT $CONFIG_SPIMCTRL_DUALOUTPUT [list $notmod] 2 } + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_hex $cfg $autocfg CONFIG_SPIMCTRL_OFFSET $CONFIG_SPIMCTRL_OFFSET $notmod } global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_SCALER $CONFIG_SPIMCTRL_SCALER $notmod } global CONFIG_SPIMCTRL_ASCALER @@ -5638,11 +6112,11 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_31 + global tmpvar_32 if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_31 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_31 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_31 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_32 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "System ACE Interface Controller" global CONFIG_GRACECTRL write_tristate $cfg $autocfg CONFIG_GRACECTRL $CONFIG_GRACECTRL [list $notmod] 2 @@ -5690,7 +6164,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5700,6 +6175,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5718,8 +6195,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5802,11 +6284,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5933,8 +6417,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5953,6 +6439,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5993,342 +6483,358 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_FPUFT_NONE - if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_FPUFT_PAR - if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_FPUFT_DMR - if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_FPUFT_TMR - if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "2" + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_27 "16" } - global tmpvar_28 - set tmpvar_28 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_29 "64" } - global tmpvar_30 - set tmpvar_30 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_30 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_30 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_30 "32" } - global tmpvar_31 - set tmpvar_31 "None" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } + global tmpvar_32 + set tmpvar_32 "None" global CONFIG_SPICTRL_NOFT - if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_31 "None" } + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_32 "None" } global CONFIG_SPICTRL_DMRFT - if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_31 "Parity-DMR" } + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_32 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT - if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_31 "TMR" } + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_32 "TMR" } } diff --git a/designs/leon3-xilinx-sp605/leon3mp.ucf b/designs/leon3-xilinx-sp605/leon3mp.ucf index e1b935dd..91dbc934 100644 --- a/designs/leon3-xilinx-sp605/leon3mp.ucf +++ b/designs/leon3-xilinx-sp605/leon3mp.ucf @@ -13,12 +13,13 @@ NET "clk33" TNM_NET = "clk33"; TIMESPEC "TS_clkm_clk33" = FROM "clkm" TO "clk33" TIG; TIMESPEC "TS_clk33_clkm" = FROM "clk33" TO "clkm" TIG; -# XST versions of MIG false paths +# --- MIG37 --- NET "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG; NET "mig_gen.ddrc/MCB_inst/c?_pll_lock" TIG; +#NET "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/CKE_Train" TIG; ## This path exists for DDR2 only + +# --- MIG39 --- INST "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL*" TIG; -#Please uncomment the below TIG if used in a design which enables self-refresh mode -#NET "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/SELFREFRESH_MCB_REQ" TIG; NET "address(0)" LOC = "n22" | IOSTANDARD =LVCMOS25; NET "address(1)" LOC = "n20" | IOSTANDARD =LVCMOS25; diff --git a/designs/leon3-xilinx-sp605/leon3mp.vhd b/designs/leon3-xilinx-sp605/leon3mp.vhd index 4169f37b..5efae874 100644 --- a/designs/leon3-xilinx-sp605/leon3mp.vhd +++ b/designs/leon3-xilinx-sp605/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2011, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -21,7 +21,6 @@ -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------ - library ieee; use ieee.std_logic_1164.all; library grlib, techmap; @@ -430,7 +429,7 @@ begin port map (data(15 downto 0), memo.data(31 downto 16), memo.vbdrive(31 downto 16), memi.data(31 downto 16)); end generate; - nomctrl : if CFG_MCTRL_LEON2 /= 0 generate + nomctrl : if CFG_MCTRL_LEON2 = 0 generate roms_pad : outpad generic map (tech => padtech) port map (romsn, vcc); --ahbso(0) <= ahbso_none; end generate; @@ -526,6 +525,15 @@ begin port map (spi_sel_n, spmo.csn); end generate; + nospimc: if ((CFG_SPICTRL_ENABLE = 0 and CFG_SPIMCTRL = 0) or + (CFG_SPICTRL_ENABLE = 1 and CFG_SPIMCTRL = 1) or + (CFG_SPICTRL_ENABLE = 1 and CFG_SPIMCTRL = 0))generate + mosi_pad : outpad generic map (tech => padtech) + port map (spi_mosi, '0'); + sck_pad : outpad generic map (tech => padtech) + port map (spi_clk, '0'); + end generate; + ---------------------------------------------------------------------- --- System ACE I/F Controller --------------------------------------- ---------------------------------------------------------------------- diff --git a/designs/leon3-xilinx-sp605/mcb_soft_calibration_patch.txt b/designs/leon3-xilinx-sp605/mcb_soft_calibration_patch.txt new file mode 100644 index 00000000..ef221fad --- /dev/null +++ b/designs/leon3-xilinx-sp605/mcb_soft_calibration_patch.txt @@ -0,0 +1,1049 @@ +--- ./mig39/mig_39//user_design/rtl/mcb_soft_calibration.vhd 2013-01-15 15:13:18.000000000 +0100 ++++ ./p/a/t/c/h/mig39/mig_39//user_design/rtl/mcb_soft_calibration.vhd 2013-01-15 15:19:15.608793398 +0100 +@@ -94,15 +94,7 @@ + -- 3.7: 04/26/10: Added DDR2 Initialization fix to meet 400 ns wait as outlined in step d) of JEDEC DDR2 spec . + -- 3.8: 05/05/10: Added fixes for the CR# 559092 (updated Mult_Divide function) and 555416 (added IOB attribute to DONE_SOFTANDHARD_CAL). + -- 3.9: 05/24/10: Added 200us Wait logic to control CKE_Train. The 200us Wait counter assumes UI_CLK freq not higher than 100 MHz. +--- 3.10 10/22/10: Fixed PERFORM_START_DYN_CAL_AFTER_SELFREFRESH logic. +--- 3.11 2/14/11: Apply a different skkew for the P and N inputs for the differential LDQS and UDQS signals to provide more noise immunity. +--- 4.1 03/08/12: Fixed SELFREFRESH_MCB_REQ logic. It should not need depend on the SM STATE so that +--- MCB can come out of selfresh mode. SM requires refresh cycle to update the DQS value. +--- 4.2 05/10/12: All P/N terms of input and bidir memory pins are initialized with value of ZERO. TZQINIT_MAXCNT +--- are set to 8 for LPDDR,DDR and DDR2 interface . +--- Keep the UICMDEN in assertion state when SM is in RST_DELAY state so that MCB will not start doing +--- Premable detection until the second deassertion of MCB_SYSRST. +- ++-- 3.10 10/22/10: Fixed PERFORM_START_DYN_CAL_AFTER_SELFREFRESH logic. + + -- End Revision + --********************************************************************************** +@@ -157,17 +149,17 @@ + MCB_UIADDR : out std_logic_vector(4 downto 0) := "00000"; -- to MCB's UIADDR port (gets passed to IODRP2_MCB's AUXADDR port + MCB_UICMDEN : out std_logic := '1'; -- set to 1 to take control of UI interface - removes control from internal calib block + MCB_UIDONECAL : out std_logic := '0'; -- set to 0 to "tell" controller that it's still in a calibrate state +- MCB_UIDQLOWERDEC : out std_logic ; +- MCB_UIDQLOWERINC : out std_logic ; +- MCB_UIDQUPPERDEC : out std_logic ; +- MCB_UIDQUPPERINC : out std_logic ; ++ MCB_UIDQLOWERDEC : out std_logic := '0'; ++ MCB_UIDQLOWERINC : out std_logic := '0'; ++ MCB_UIDQUPPERDEC : out std_logic := '0'; ++ MCB_UIDQUPPERINC : out std_logic := '0'; + MCB_UILDQSDEC : out std_logic := '0'; + MCB_UILDQSINC : out std_logic := '0'; + MCB_UIREAD : out std_logic; -- enables read w/o writing by turning on a SDO->SDI loopback inside the IODRP2_MCBs (doesn't exist in + -- regular IODRP2). IODRPCTRLR_R_WB becomes don't-care. + MCB_UIUDQSDEC : out std_logic := '0'; + MCB_UIUDQSINC : out std_logic := '0'; +- MCB_RECAL : out std_logic ; -- future hook to drive MCB's RECAL pin - initiates a hard re-calibration sequence when high ++ MCB_RECAL : out std_logic := '0'; -- future hook to drive MCB's RECAL pin - initiates a hard re-calibration sequence when high + MCB_UICMD : out std_logic; + MCB_UICMDIN : out std_logic; + MCB_UIDQCOUNT : out std_logic_vector(3 downto 0); +@@ -234,50 +226,31 @@ + constant WAIT5 : std_logic_vector(5 downto 0) := "001111"; + constant BROADCAST_NTERM : std_logic_vector(5 downto 0) := "010000"; + constant WAIT6 : std_logic_vector(5 downto 0) := "010001"; +- +- constant LDQS_CLK_WRITE_P_TERM : std_logic_vector(5 downto 0) := "010010"; +- constant LDQS_CLK_P_TERM_WAIT : std_logic_vector(5 downto 0) := "010011"; +- constant LDQS_CLK_WRITE_N_TERM : std_logic_vector(5 downto 0) := "010100"; +- constant LDQS_CLK_N_TERM_WAIT : std_logic_vector(5 downto 0) := "010101"; +- constant LDQS_PIN_WRITE_P_TERM : std_logic_vector(5 downto 0) := "010110"; +- constant LDQS_PIN_P_TERM_WAIT : std_logic_vector(5 downto 0) := "010111"; +- constant LDQS_PIN_WRITE_N_TERM : std_logic_vector(5 downto 0) := "011000"; +- constant LDQS_PIN_N_TERM_WAIT : std_logic_vector(5 downto 0) := "011001"; +- constant UDQS_CLK_WRITE_P_TERM : std_logic_vector(5 downto 0) := "011010"; +- constant UDQS_CLK_P_TERM_WAIT : std_logic_vector(5 downto 0) := "011011"; +- constant UDQS_CLK_WRITE_N_TERM : std_logic_vector(5 downto 0) := "011100"; +- constant UDQS_CLK_N_TERM_WAIT : std_logic_vector(5 downto 0) := "011101"; +- constant UDQS_PIN_WRITE_P_TERM : std_logic_vector(5 downto 0) := "011110"; +- constant UDQS_PIN_P_TERM_WAIT : std_logic_vector(5 downto 0) := "011111"; +- constant UDQS_PIN_WRITE_N_TERM : std_logic_vector(5 downto 0) := "100000"; +- constant UDQS_PIN_N_TERM_WAIT : std_logic_vector(5 downto 0) := "100001"; +- +- constant OFF_RZQ_PTERM : std_logic_vector(5 downto 0) := "100010"; +- constant WAIT7 : std_logic_vector(5 downto 0) := "100011"; +- constant OFF_ZIO_NTERM : std_logic_vector(5 downto 0) := "100100"; +- constant WAIT8 : std_logic_vector(5 downto 0) := "100101"; +- constant RST_DELAY : std_logic_vector(5 downto 0) := "100110"; +- constant START_DYN_CAL_PRE : std_logic_vector(5 downto 0) := "100111"; +- constant WAIT_FOR_UODONE : std_logic_vector(5 downto 0) := "101000"; +- constant LDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "101001"; +- constant LDQS_WAIT1 : std_logic_vector(5 downto 0) := "101010"; +- constant LDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "101011"; +- constant LDQS_WAIT2 : std_logic_vector(5 downto 0) := "101100"; +- constant UDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "101101"; +- constant UDQS_WAIT1 : std_logic_vector(5 downto 0) := "101110"; +- constant UDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "101111"; +- constant UDQS_WAIT2 : std_logic_vector(5 downto 0) := "110000"; +- constant START_DYN_CAL : std_logic_vector(5 downto 0) := "110001"; +- constant WRITE_CALIBRATE : std_logic_vector(5 downto 0) := "110010"; +- constant WAIT9 : std_logic_vector(5 downto 0) := "110011"; +- constant READ_MAX_VALUE : std_logic_vector(5 downto 0) := "110100"; +- constant WAIT10 : std_logic_vector(5 downto 0) := "110101"; +- constant ANALYZE_MAX_VALUE : std_logic_vector(5 downto 0) := "110110"; +- constant FIRST_DYN_CAL : std_logic_vector(5 downto 0) := "110111"; +- constant INCREMENT : std_logic_vector(5 downto 0) := "111000"; +- constant DECREMENT : std_logic_vector(5 downto 0) := "111001"; +- constant DONE : std_logic_vector(5 downto 0) := "111010"; +- --constant INCREMENT_TA : std_logic_vector(5 downto 0) := "111011"; ++ constant OFF_RZQ_PTERM : std_logic_vector(5 downto 0) := "010010"; ++ constant WAIT7 : std_logic_vector(5 downto 0) := "010011"; ++ constant OFF_ZIO_NTERM : std_logic_vector(5 downto 0) := "010100"; ++ constant WAIT8 : std_logic_vector(5 downto 0) := "010101"; ++ constant RST_DELAY : std_logic_vector(5 downto 0) := "010110"; ++ constant START_DYN_CAL_PRE : std_logic_vector(5 downto 0) := "010111"; ++ constant WAIT_FOR_UODONE : std_logic_vector(5 downto 0) := "011000"; ++ constant LDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "011001"; ++ constant LDQS_WAIT1 : std_logic_vector(5 downto 0) := "011010"; ++ constant LDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "011011"; ++ constant LDQS_WAIT2 : std_logic_vector(5 downto 0) := "011100"; ++ constant UDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "011101"; ++ constant UDQS_WAIT1 : std_logic_vector(5 downto 0) := "011110"; ++ constant UDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "011111"; ++ constant UDQS_WAIT2 : std_logic_vector(5 downto 0) := "100000"; ++ constant START_DYN_CAL : std_logic_vector(5 downto 0) := "100001"; ++ constant WRITE_CALIBRATE : std_logic_vector(5 downto 0) := "100010"; ++ constant WAIT9 : std_logic_vector(5 downto 0) := "100011"; ++ constant READ_MAX_VALUE : std_logic_vector(5 downto 0) := "100100"; ++ constant WAIT10 : std_logic_vector(5 downto 0) := "100101"; ++ constant ANALYZE_MAX_VALUE : std_logic_vector(5 downto 0) := "100110"; ++ constant FIRST_DYN_CAL : std_logic_vector(5 downto 0) := "100111"; ++ constant INCREMENT : std_logic_vector(5 downto 0) := "101000"; ++ constant DECREMENT : std_logic_vector(5 downto 0) := "101001"; ++ constant DONE : std_logic_vector(5 downto 0) := "101010"; + + constant RZQ : std_logic_vector(1 downto 0) := "00"; + constant ZIO : std_logic_vector(1 downto 0) := "01"; +@@ -315,12 +288,10 @@ + constant DIV : integer := 4; + + constant PNSKEW : std_logic := '1'; -- Default is 1'b1. Change to 1'b0 if PSKEW and NSKEW are not required +- constant PNSKEWDQS : std_logic := '1'; +- +- constant MULT_S : integer := 9; +- constant DIV_S : integer := 8; +- constant MULT_W : integer := 7; +- constant DIV_W : integer := 8; ++ constant PSKEW_MULT : integer := 9; ++ constant PSKEW_DIV : integer := 8; ++ constant NSKEW_MULT : integer := 7; ++ constant NSKEW_DIV : integer := 8; + + constant DQS_NUMERATOR : integer := 3; + constant DQS_DENOMINATOR : integer := 8; +@@ -329,23 +300,11 @@ + -- 3 for three eighths + + constant RST_CNT : std_logic_vector(9 downto 0) := "0000010000"; ++ constant TZQINIT_MAXCNT : std_logic_vector(9 downto 0) := C_MEM_TZQINIT_MAXCNT + RST_CNT; + + constant IN_TERM_PASS : std_logic := '0'; + constant DYN_CAL_PASS : std_logic := '1'; + +- function TZQINIT_MAXCNT_W return std_logic_vector is +- variable temp : std_logic_vector(9 downto 0) := (others=>'0'); +- begin +- if (C_MEM_TYPE = "DDR3") then +- temp := C_MEM_TZQINIT_MAXCNT + RST_CNT; +- else +- temp := 8 + RST_CNT; +- end if; +- return temp(9 downto 0); +- end function; +- +- constant TZQINIT_MAXCNT : std_logic_vector(9 downto 0) := TZQINIT_MAXCNT_W; +- + component iodrp_mcb_controller is + port ( + memcell_address : in std_logic_vector(7 downto 0); +@@ -387,15 +346,11 @@ + end component; + + signal P_Term : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term : std_logic_vector(6 downto 0) := "0000000"; +- signal P_Term_s : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term_s : std_logic_vector(6 downto 0) := "0000000"; +- signal P_Term_w : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term_w : std_logic_vector(6 downto 0) := "0000000"; ++ signal N_Term : std_logic_vector(6 downto 0) := "0000000"; + signal P_Term_Prev : std_logic_vector(5 downto 0) := "000000"; + signal N_Term_Prev : std_logic_vector(6 downto 0) := "0000000"; + +- signal STATE : std_logic_vector(5 downto 0); ++ signal STATE : std_logic_vector(5 downto 0) := START; + signal IODRPCTRLR_MEMCELL_ADDR : std_logic_vector(7 downto 0); + signal IODRPCTRLR_WRITE_DATA : std_logic_vector(7 downto 0); + signal Active_IODRP : std_logic_vector(1 downto 0); +@@ -411,7 +366,7 @@ + signal count : std_logic_vector(5 downto 0) := "000000"; -- counter for adding 18 extra clock cycles after setting Calibrate bit + signal counter_en : std_logic := '0'; -- counter enable for "count" + signal First_Dyn_Cal_Done : std_logic := '0'; -- flag - high after the very first dynamic calibration is done +- signal START_BROADCAST : std_logic ; -- Trigger to start Broadcast to IODRP2_MCBs to set Input Impedance - ++ signal START_BROADCAST : std_logic := '1'; -- Trigger to start Broadcast to IODRP2_MCBs to set Input Impedance - + -- state machine will wait for this to be high + signal DQS_DELAY_INITIAL : std_logic_vector(7 downto 0) := "00000000"; + signal DQS_DELAY : std_logic_vector(7 downto 0); -- contains the latest values written to LDQS and UDQS Input Delays +@@ -474,24 +429,15 @@ + signal MCB_UISDI_xilinx11 : std_logic; + signal MCB_UICS_xilinx6 : std_logic; + signal MCB_UIBROADCAST_xilinx4 : std_logic; +- signal MCB_UIADDR_int : std_logic_vector(4 downto 0); ++ signal MCB_UIADDR_xilinx3 : std_logic_vector(4 downto 0); + signal MCB_UIDONECAL_xilinx7 : std_logic; + signal MCB_UIREAD_xilinx10 : std_logic; + signal SELFREFRESH_MODE_xilinx11 : std_logic; + signal Max_Value_int : std_logic_vector(7 downto 0); + signal Rst_condition1 : std_logic; +- --signal Rst_condition2 : std_logic; ++ signal Rst_condition2 : std_logic; + signal non_violating_rst : std_logic; + signal WAIT_200us_COUNTER : std_logic_vector(15 downto 0); +- signal WaitTimer : std_logic_vector(7 downto 0); +- signal WarmEnough : std_logic; +- signal WaitCountEnable : std_logic; +- signal State_Start_DynCal_R1 : std_logic; +- signal State_Start_DynCal : std_logic; +- +- signal pre_sysrst_minpulse_width_ok : std_logic; +- signal pre_sysrst_cnt : std_logic_vector(3 downto 0); +- + -- This function multiplies by a constant MULT and then divides by the DIV constant + function Mult_Divide (Input : std_logic_vector(7 downto 0); MULT : integer ; DIV : integer ) return std_logic_vector is + variable Result : integer := 0; +@@ -505,19 +451,9 @@ + return temp(7 downto 0); + end function Mult_Divide; + +- +- + attribute syn_preserve : boolean; + attribute syn_preserve of P_Term : signal is TRUE; + attribute syn_preserve of N_Term : signal is TRUE; +- attribute syn_preserve of P_Term_s : signal is TRUE; +- attribute syn_preserve of N_Term_s : signal is TRUE; +- attribute syn_preserve of P_Term_w : signal is TRUE; +- attribute syn_preserve of N_Term_w : signal is TRUE; +- +- +- +- + attribute syn_preserve of P_Term_Prev : signal is TRUE; + attribute syn_preserve of N_Term_Prev : signal is TRUE; + attribute syn_preserve of IODRPCTRLR_MEMCELL_ADDR : signal is TRUE; +@@ -530,18 +466,6 @@ + + begin + +- +--- move the default assignment here to make FORMALITY happy. +- +- START_BROADCAST <= '1'; +- MCB_RECAL <= '0'; +- MCB_UIDQLOWERDEC <= '0'; +- MCB_UIADDR <= MCB_UIADDR_int; +- MCB_UIDQLOWERINC <= '0'; +- MCB_UIDQUPPERDEC <= '0'; +- MCB_UIDQUPPERINC <= '0'; +- +- + Max_Value <= Max_Value_int; + -- Drive referenced outputs + IODRP_ADD <= IODRP_ADD_xilinx0; +@@ -550,6 +474,7 @@ + MCB_UISDI <= MCB_UISDI_xilinx11; + MCB_UICS <= MCB_UICS_xilinx6; + MCB_UIBROADCAST <= MCB_UIBROADCAST_xilinx4; ++ MCB_UIADDR <= MCB_UIADDR_xilinx3; + MCB_UIDONECAL <= MCB_UIDONECAL_xilinx7; + MCB_UIREAD <= MCB_UIREAD_xilinx10; + SELFREFRESH_MODE <= SELFREFRESH_MODE_xilinx11; +@@ -607,7 +532,7 @@ + cmd_valid => MCB_CMD_VALID, + rdy_busy_n => MCB_RDY_BUSY_N, + use_broadcast => MCB_USE_BKST, +- drp_ioi_addr => MCB_UIADDR_int, ++ drp_ioi_addr => MCB_UIADDR_xilinx3, + sync_rst => RST_reg, + DRP_CLK => UI_CLK, + DRP_CS => MCB_UICS_xilinx6, +@@ -618,13 +543,10 @@ + MCB_UIREAD => MCB_UIREAD_xilinx10 + ); + ++ init_sequence: if (C_SIMULATION = "FALSE") generate + process (UI_CLK, RST) begin + if (RST = '1') then +- if (C_SIMULATION = "TRUE") then +- WAIT_200us_COUNTER <= X"7FF0"; +- else + WAIT_200us_COUNTER <= (others => '0'); +- end if; + elsif (UI_CLK'event and UI_CLK = '1') then + if (WAIT_200us_COUNTER(15) = '1') then + WAIT_200us_COUNTER <= WAIT_200us_COUNTER; +@@ -633,15 +555,16 @@ + end if; + end if; + end process; ++ end generate; + +- -- init_sequence_skip: if (C_SIMULATION = "TRUE") generate +- -- WAIT_200us_COUNTER <= X"FFFF"; +- -- process +- -- begin +- -- report "The 200 us wait period required before CKE goes active has been skipped in Simulation"; +- -- wait; +- -- end process; +- -- end generate; ++ init_sequence_skip: if (C_SIMULATION = "TRUE") generate ++ WAIT_200us_COUNTER <= X"FFFF"; ++ process ++ begin ++ report "The 200 us wait period required before CKE goes active has been skipped in Simulation"; ++ wait; ++ end process; ++ end generate; + + + gen_CKE_Train_a: if (C_MEM_TYPE = "DDR2") generate +@@ -653,8 +576,6 @@ + CKE_Train <= '0'; + elsif (WAIT_200us_COUNTER(15) = '1' and MCB_UODONECAL = '0') then + CKE_Train <= '1'; +- else +- CKE_Train <= '0'; + end if; + end if; + end process; +@@ -671,20 +592,19 @@ + --******************************************** + -- PLL_LOCK and RST signals + --******************************************** +- --MCB_SYSRST <= Pre_SYSRST or RST_reg; -- Pre_SYSRST is generated from the STATE state machine, and is OR'd with RST_reg input to drive MCB's ++ MCB_SYSRST <= Pre_SYSRST or RST_reg; -- Pre_SYSRST is generated from the STATE state machine, and is OR'd with RST_reg input to drive MCB's + -- SYSRST pin (MCB_SYSRST) +- + rst_tmp <= not(SELFREFRESH_MODE_xilinx11) and not(PLL_LOCK_R2); -- rst_tmp becomes 1 if you lose Lock and the device is not in SUSPEND + + process (UI_CLK, RST) begin + if (RST = '1') then +- --Block_Reset <= '0'; +- --RstCounter <= (others => '0'); +- --elsif (UI_CLK'event and UI_CLK = '1') then +- -- if (rst_tmp = '1') then -- this is to deal with not allowing the user-reset "RST" to violate TZQINIT_MAXCNT (min time between resets to DDR3) ++ Block_Reset <= '0'; ++ RstCounter <= (others => '0'); ++ elsif (UI_CLK'event and UI_CLK = '1') then ++ if (rst_tmp = '1') then -- this is to deal with not allowing the user-reset "RST" to violate TZQINIT_MAXCNT (min time between resets to DDR3) + Block_Reset <= '0'; + RstCounter <= (others => '0'); +- elsif (UI_CLK'event and UI_CLK = '1') then ++ else + Block_Reset <= '0'; -- default to allow STATE to move out of RST_DELAY state + if (Pre_SYSRST = '1') then + RstCounter <= RST_CNT; -- whenever STATE wants to reset the MCB, set RstCounter to h10 +@@ -695,14 +615,11 @@ + end if; + end if; + end if; +- --end if; ++ end if; + end process; +- +- -- Rst_contidtion1 is to make sure RESET will not happen again within TZQINIT_MAXCNT +- non_violating_rst <= RST and Rst_condition1; +- MCB_SYSRST <= Pre_SYSRST; + +- process (UI_CLK) begin ++ non_violating_rst <= RST and Rst_condition1; ++ process (UI_CLK) begin + if (UI_CLK'event and UI_CLK = '1') then + if (RstCounter >= TZQINIT_MAXCNT) then + Rst_condition1 <= '1'; +@@ -712,31 +629,18 @@ + end if; + end process; + +--- -- non_violating_rst asserts whenever (system-level reset) RST is asserted but must be after TZQINIT_MAXCNT is reached (min-time between resets for DDR3) +--- -- After power stablizes, we will hold MCB in reset state for at least 200us before beginning initialization process. +--- -- If the PLL loses lock during normal operation, no ui_clk will be present because mcb_drp_clk is from a BUFGCE which +--- is gated by pll's lock signal. When the PLL locks again, the RST_reg stays asserted for at least 200 us which +--- will cause MCB to reset and reinitialize the memory afterwards. +--- -- During SUSPEND operation, the PLL will lose lock but non_violating_rst remains low (de-asserted) and WAIT_200us_COUNTER stays at +--- its terminal count. The PLL_LOCK input does not come direct from PLL, rather it is driven by gated_pll_lock from mcb_raw_wrapper module +--- The gated_pll_lock in the mcb_raw_wrapper does not de-assert during SUSPEND operation, hence PLL_LOCK will not de-assert, and the soft calibration +--- state machine will not reset during SUSPEND. +--- -- RST_reg is the control signal that resets the mcb_soft_calibration's State Machine. The MCB_SYSRST is now equal to +--- Pre_SYSRST. When State Machine is performing "INPUT Termination Calibration", it holds the MCB in reset by assertign MCB_SYSRST. +--- It will deassert the MCB_SYSRST so that it can grab the bus to broadcast the P and N term value to all of the DQ pins. Once the calibrated INPUT +--- termination is set, the State Machine will issue another short MCB_SYSRST so that MCB will use the tuned input termination during DQS preamble calibration. + + +- --process (UI_CLK) begin +- -- if (UI_CLK'event and UI_CLK = '1') then +- -- +- -- if (RstCounter < RST_CNT) then +- -- Rst_condition2 <= '1'; +- -- else +- -- Rst_condition2 <= '0'; +- -- end if; +- -- end if; +- --end process; ++ process (UI_CLK) begin ++ if (UI_CLK'event and UI_CLK = '1') then ++ ++ if (RstCounter < RST_CNT) then ++ Rst_condition2 <= '1'; ++ else ++ Rst_condition2 <= '0'; ++ end if; ++ end if; ++ end process; + + process (UI_CLK, non_violating_rst) begin + if (non_violating_rst = '1') then +@@ -745,47 +649,18 @@ + if (WAIT_200us_COUNTER(15) = '0') then + RST_reg <= '1'; + else +- --RST_reg <= Rst_condition2 or rst_tmp; -- insures RST_reg is at least h10 pulses long +- RST_reg <= rst_tmp; -- insures RST_reg is at least h10 pulses long ++ RST_reg <= Rst_condition2 or rst_tmp; -- insures RST_reg is at least h10 pulses long + end if; + end if; + end process; + +---************************************************************* +--- Stretching the pre_sysrst to satisfy the minimum pulse width +---************************************************************* +- +-process (UI_CLK) begin +-if (UI_CLK'event and UI_CLK = '1') then +- if (STATE = START_DYN_CAL_PRE) then +- pre_sysrst_cnt <= pre_sysrst_cnt + '1'; +- else +- pre_sysrst_cnt <= (others=>'0'); +- end if; +-end if; +-end process; +- +-pre_sysrst_minpulse_width_ok <= pre_sysrst_cnt(3); +- ++ + --******************************************** + -- SUSPEND Logic + --******************************************** +- process (UI_CLK,RST) ++ process (UI_CLK) + begin +- if (RST = '1') then +- +- SELFREFRESH_MCB_MODE_R1 <= '0'; +- SELFREFRESH_MCB_MODE_R2 <= '0'; +- SELFREFRESH_MCB_MODE_R3 <= '0'; +- +- SELFREFRESH_REQ_R1 <= '0'; +- SELFREFRESH_REQ_R2 <= '0'; +- SELFREFRESH_REQ_R3 <= '0'; +- +- PLL_LOCK_R1 <= '0'; +- PLL_LOCK_R2 <= '0'; +- +- elsif (UI_CLK'event and UI_CLK = '1') then ++ if (UI_CLK'event and UI_CLK = '1') then + -- SELFREFRESH_MCB_MODE is clocked by sysclk_2x_180 + SELFREFRESH_MCB_MODE_R1 <= SELFREFRESH_MCB_MODE; + SELFREFRESH_MCB_MODE_R2 <= SELFREFRESH_MCB_MODE_R1; +@@ -810,10 +685,9 @@ + if (UI_CLK'event and UI_CLK = '1') then + if (RST = '1') then + SELFREFRESH_MCB_REQ <= '0'; +- --elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R3 = '0') and (STATE = START_DYN_CAL)) then +- elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R3 = '0')) then ++ elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R1 = '0') and (STATE = START_DYN_CAL)) then + SELFREFRESH_MCB_REQ <= '0'; +- elsif ((STATE = START_DYN_CAL) and (SELFREFRESH_REQ_R3 = '1')) then ++ elsif ((STATE = START_DYN_CAL) and (SELFREFRESH_REQ_R1 = '1')) then + SELFREFRESH_MCB_REQ <= '1'; + end if; + end if; +@@ -859,10 +733,6 @@ + + -- SELFREFRESH_MCB_MODE deasserted status is hold off + -- until Soft_Calib has at least done one loop of DQS update. +--- New logic WarmeEnough is added to make sure PLL_Lock is lockec and all IOs stable before +--- deassert the status of MCB's SELFREFRESH_MODE. This is to ensure all IOs are stable before +--- user logic sending new commands to MCB. +- + process (UI_CLK) + begin + if (UI_CLK'event and UI_CLK = '1') then +@@ -870,76 +740,12 @@ + SELFREFRESH_MODE_xilinx11 <= '0'; + elsif (SELFREFRESH_MCB_MODE_R2 = '1') then + SELFREFRESH_MODE_xilinx11 <= '1'; +- elsif (WarmEnough = '1') then +- SELFREFRESH_MODE_xilinx11 <= '0'; +- end if; +- end if; +- end process; +- +- +- +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- WaitCountEnable <= '0'; +- elsif (SELFREFRESH_REQ_R2 = '0' and SELFREFRESH_REQ_R1 = '1') then +- WaitCountEnable <= '0'; + elsif ((PERFORM_START_DYN_CAL_AFTER_SELFREFRESH = '0') and (PERFORM_START_DYN_CAL_AFTER_SELFREFRESH_R1 = '1')) then +- WaitCountEnable <= '1'; +- else +- WaitCountEnable <= WaitCountEnable; ++ SELFREFRESH_MODE_xilinx11 <= '0'; + end if; + end if; + end process; + +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- State_Start_DynCal <= '0'; +- elsif (STATE = START_DYN_CAL) then +- State_Start_DynCal <= '1'; +- else +- State_Start_DynCal <= '0'; +- end if; +- end if; +- end process; +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- State_Start_DynCal_R1 <= '0'; +- else +- State_Start_DynCal_R1 <= State_Start_DynCal; +- end if; +- end if; +- end process; +- +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- WaitTimer <= (others => '0'); +- WarmEnough <= '1'; +- elsif ((SELFREFRESH_REQ_R2 = '0') and (SELFREFRESH_REQ_R1 = '1')) then +- WaitTimer <= (others => '0'); +- WarmEnough <= '0'; +- elsif (WaitTimer = X"04") then +- WaitTimer <= WaitTimer ; +- WarmEnough <= '1'; +- elsif (WaitCountEnable = '1') then +- WaitTimer <= WaitTimer + '1'; +- else +- WaitTimer <= WaitTimer ; +- end if; +- end if; +- end process; +- + --******************************************** + --Comparitor for Dynamic Calibration circuit + --******************************************** +@@ -1014,7 +820,7 @@ + if (UI_CLK'event and UI_CLK = '1') then + if (RST_reg = '1') then -- Synchronous reset + MCB_CMD_VALID <= '0'; +- MCB_UIADDR_int <= "00000"; -- take control of UI/UO port ++ MCB_UIADDR_xilinx3 <= "00000"; -- take control of UI/UO port + MCB_UICMDEN <= '1'; -- tells MCB that it is in Soft Cal. + MCB_UIDONECAL_xilinx7 <= '0'; + MCB_USE_BKST <= '0'; +@@ -1027,11 +833,6 @@ + IODRPCTRLR_USE_BKST <= '0'; + P_Term <= "000000"; + N_Term <= "0000000"; +- P_Term_s <= "000000"; +- N_Term_w <= "0000000"; +- P_Term_w <= "000000"; +- N_Term_s <= "0000000"; +- + P_Term_Prev <= "000000"; + N_Term_Prev <= "0000000"; + Active_IODRP <= RZQ; +@@ -1079,10 +880,7 @@ + Pre_SYSRST <= '1'; -- keeps MCB in reset + LastPass_DynCal <= IN_TERM_PASS; + if (SKIP_IN_TERM_CAL = 1) then +- --STATE <= WRITE_CALIBRATE; +- STATE <= WAIT_FOR_START_BROADCAST; +- P_Term <= "000000"; +- N_Term <= "0000000"; ++ STATE <= WRITE_CALIBRATE; + elsif (IODRPCTRLR_RDY_BUSY_N = '1') then + STATE <= LOAD_RZQ_NTERM; + else +@@ -1135,8 +933,7 @@ + STATE <= LOAD_RZQ_PTERM; + + when MULTIPLY_DIVIDE => -- h06 +- -- 13/4/2011 compensate the added sync FF +- P_Term <= Mult_Divide(("00" & (P_Term - '1')),MULT,DIV)(5 downto 0); ++ P_Term <= Mult_Divide(("00" & P_Term),MULT,DIV)(5 downto 0); + STATE <= LOAD_ZIO_PTERM; + + when LOAD_ZIO_PTERM => --h07 +@@ -1188,13 +985,8 @@ + STATE <= LOAD_ZIO_NTERM; + + when SKEW => -- h0C +- +- P_Term_s <= Mult_Divide(("00" & P_Term), MULT_S, DIV_S)(5 downto 0); +- N_Term_w <= Mult_Divide(('0' & (N_Term-'1')), MULT_W, DIV_W)(6 downto 0); +- P_Term_w <= Mult_Divide(("00" & P_Term), MULT_W, DIV_W)(5 downto 0); +- N_Term_s <= Mult_Divide(('0' & (N_Term-'1')), MULT_S, DIV_S)(6 downto 0); +- P_Term <= Mult_Divide(("00" & P_Term), MULT_S, DIV_S)(5 downto 0); +- N_Term <= Mult_Divide(('0' & (N_Term-'1')), MULT_W, DIV_W)(6 downto 0); ++ P_Term <= Mult_Divide(("00" & P_Term), PSKEW_MULT, PSKEW_DIV)(5 downto 0); ++ N_Term <= Mult_Divide(('0' & N_Term), NSKEW_MULT, NSKEW_DIV)(6 downto 0); + STATE <= WAIT_FOR_START_BROADCAST; + + when WAIT_FOR_START_BROADCAST => --h0D +@@ -1202,7 +994,7 @@ + -- keeping the MCB in calibration mode + Active_IODRP <= MCB_PORT; + if ((START_BROADCAST and IODRPCTRLR_RDY_BUSY_N) = '1') then +- if ((P_Term /= P_Term_Prev) or (SKIP_IN_TERM_CAL = 1)) then ++ if (P_Term /= P_Term_Prev) then + STATE <= BROADCAST_PTERM; + P_Term_Prev <= P_Term; + elsif (N_Term /= N_Term_Prev) then +@@ -1272,184 +1064,10 @@ + STATE <= WAIT6; -- wait for a Refresh cycle + end if; + else +- -- if (PNSKEWDQS = '1') then +- STATE <= LDQS_CLK_WRITE_P_TERM; +- -- else +- -- STATE <= OFF_RZQ_PTERM; +- -- end if; +- end if; +- +--- ********************* +- when LDQS_CLK_WRITE_P_TERM => -- h12 +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_w; +- MCB_UIADDR_int <= IOI_LDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_CLK_WRITE_P_TERM; +- else +- STATE <= LDQS_CLK_P_TERM_WAIT; +- end if; +- +- +- when LDQS_CLK_P_TERM_WAIT => --7'h13 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_CLK_P_TERM_WAIT; +- else +- STATE <= LDQS_CLK_WRITE_N_TERM; +- end if; +- +- when LDQS_CLK_WRITE_N_TERM => --7'h14 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_s; +- MCB_UIADDR_int <= IOI_LDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_CLK_WRITE_N_TERM; +- else +- STATE <= LDQS_CLK_N_TERM_WAIT; +- end if; +- +- --** +- when LDQS_CLK_N_TERM_WAIT => --7'h15 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_CLK_N_TERM_WAIT; +- else +- STATE <= LDQS_PIN_WRITE_P_TERM; +- end if; +- +- +- when LDQS_PIN_WRITE_P_TERM => --7'h16 +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_s; +- MCB_UIADDR_int <= IOI_LDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_PIN_WRITE_P_TERM; +- else +- STATE <= LDQS_PIN_P_TERM_WAIT; +- end if; +- +- +- when LDQS_PIN_P_TERM_WAIT => --7'h17 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_PIN_P_TERM_WAIT; +- else +- STATE <= LDQS_PIN_WRITE_N_TERM; +- end if; +- +- +- when LDQS_PIN_WRITE_N_TERM => --7'h18 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_w; +- MCB_UIADDR_int <= IOI_LDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_PIN_WRITE_N_TERM; +- else +- STATE <= LDQS_PIN_N_TERM_WAIT; +- end if; +- +- +- when LDQS_PIN_N_TERM_WAIT => --7'h19 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_PIN_N_TERM_WAIT; +- else +- STATE <= UDQS_CLK_WRITE_P_TERM; +- end if; +- +- +- +- when UDQS_CLK_WRITE_P_TERM => --7'h1A +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_w; +- MCB_UIADDR_int <= IOI_UDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_CLK_WRITE_P_TERM; +- else +- STATE <= UDQS_CLK_P_TERM_WAIT; +- end if; +- +- +- when UDQS_CLK_P_TERM_WAIT => --7'h1B +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_CLK_P_TERM_WAIT; +- else +- STATE <= UDQS_CLK_WRITE_N_TERM; +- end if; +- +- +- when UDQS_CLK_WRITE_N_TERM => --7'h1C +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_s; +- MCB_UIADDR_int <= IOI_UDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_CLK_WRITE_N_TERM; +- else +- STATE <= UDQS_CLK_N_TERM_WAIT; +- end if; +- +- when UDQS_CLK_N_TERM_WAIT => --7'h1D +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_CLK_N_TERM_WAIT; +- else +- STATE <= UDQS_PIN_WRITE_P_TERM; +- end if; +- +- +- +- when UDQS_PIN_WRITE_P_TERM => --7'h1E +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_s; +- MCB_UIADDR_int <= IOI_UDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_PIN_WRITE_P_TERM; +- else +- STATE <= UDQS_PIN_P_TERM_WAIT; +- end if; +- +- +- when UDQS_PIN_P_TERM_WAIT => --7'h1F +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_PIN_P_TERM_WAIT; +- else +- STATE <= UDQS_PIN_WRITE_N_TERM; +- end if; +- +- when UDQS_PIN_WRITE_N_TERM => --7'h20 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_w; +- MCB_UIADDR_int <= IOI_UDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_PIN_WRITE_N_TERM; +- else +- STATE <= UDQS_PIN_N_TERM_WAIT; +- end if; +- +- +- when UDQS_PIN_N_TERM_WAIT => --7'h21 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_PIN_N_TERM_WAIT; +- else +- STATE <= OFF_RZQ_PTERM; ++ STATE <= OFF_RZQ_PTERM; + end if; +- +--- ********************* + +- +- when OFF_RZQ_PTERM => -- h22 ++ when OFF_RZQ_PTERM => -- h12 + Active_IODRP <= RZQ; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= PTerm; +@@ -1464,14 +1082,14 @@ + STATE <= WAIT7; + end if; + +- when WAIT7 => -- h23 ++ when WAIT7 => -- h13 + if ((not(IODRPCTRLR_RDY_BUSY_N)) = '1') then + STATE <= WAIT7; + else + STATE <= OFF_ZIO_NTERM; + end if; + +- when OFF_ZIO_NTERM => -- h24 ++ when OFF_ZIO_NTERM => -- h14 + Active_IODRP <= ZIO; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= NTerm; +@@ -1483,7 +1101,7 @@ + STATE <= WAIT8; + end if; + +- when WAIT8 => -- h25 ++ when WAIT8 => -- h15 + if (IODRPCTRLR_RDY_BUSY_N = '0') then + STATE <= WAIT8; + else +@@ -1494,8 +1112,8 @@ + end if; + end if; + +- when RST_DELAY => -- h26 +- --MCB_UICMDEN <= '0'; -- release control of UI/UO port ++ when RST_DELAY => -- h16 ++ MCB_UICMDEN <= '0'; -- release control of UI/UO port + if (Block_Reset = '1') then -- this ensures that more than 512 clock cycles occur since the last reset after MCB_WRITE_CALIBRATE ??? + STATE <= RST_DELAY; + else +@@ -1505,18 +1123,18 @@ + --*************************** + --DYNAMIC CALIBRATION PORTION + --*************************** +- when START_DYN_CAL_PRE => -- h27 ++ when START_DYN_CAL_PRE => -- h17 + LastPass_DynCal <= IN_TERM_PASS; + MCB_UICMDEN <= '0'; -- release UICMDEN + MCB_UIDONECAL_xilinx7 <= '1'; -- release UIDONECAL - MCB will now initialize. + Pre_SYSRST <= '1'; -- SYSRST pulse + if (CALMODE_EQ_CALIBRATION = '0') then -- if C_MC_CALIBRATION_MODE is set to NOCALIBRATION + STATE <= START_DYN_CAL; -- we'll skip setting the DQS delays manually +- elsif (pre_sysrst_minpulse_width_ok = '1') then ++ else + STATE <= WAIT_FOR_UODONE; + end if; + +- when WAIT_FOR_UODONE => -- h28 ++ when WAIT_FOR_UODONE => -- h18 + Pre_SYSRST <= '0'; -- SYSRST pulse + if ((IODRPCTRLR_RDY_BUSY_N and MCB_UODONECAL) = '1')then --IODRP Controller needs to be ready, & MCB needs to be done with hard calibration + MCB_UICMDEN <= '1'; -- grab UICMDEN +@@ -1526,11 +1144,11 @@ + STATE <= WAIT_FOR_UODONE; + end if; + +- when LDQS_WRITE_POS_INDELAY => -- h29 ++ when LDQS_WRITE_POS_INDELAY => -- h19 + IODRPCTRLR_MEMCELL_ADDR <= PosEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_LDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_LDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1') then + STATE <= LDQS_WRITE_POS_INDELAY; +@@ -1538,18 +1156,18 @@ + STATE <= LDQS_WAIT1; + end if; + +- when LDQS_WAIT1 => -- h2A ++ when LDQS_WAIT1 => -- h1A + if (MCB_RDY_BUSY_N = '0')then + STATE <= LDQS_WAIT1; + else + STATE <= LDQS_WRITE_NEG_INDELAY; + end if; + +- when LDQS_WRITE_NEG_INDELAY => -- h2B ++ when LDQS_WRITE_NEG_INDELAY => -- h1B + IODRPCTRLR_MEMCELL_ADDR <= NegEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_LDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_LDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= LDQS_WRITE_NEG_INDELAY; +@@ -1557,18 +1175,18 @@ + STATE <= LDQS_WAIT2; + end if; + +- when LDQS_WAIT2 => -- 7'h2C ++ when LDQS_WAIT2 => -- 7'h1C + if(MCB_RDY_BUSY_N = '0')then + STATE <= LDQS_WAIT2; + else + STATE <= UDQS_WRITE_POS_INDELAY; + end if; + +- when UDQS_WRITE_POS_INDELAY => -- 7'h2D ++ when UDQS_WRITE_POS_INDELAY => -- 7'h1D + IODRPCTRLR_MEMCELL_ADDR <= PosEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_UDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_UDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= UDQS_WRITE_POS_INDELAY; +@@ -1576,18 +1194,18 @@ + STATE <= UDQS_WAIT1; + end if; + +- when UDQS_WAIT1 => -- 7'h2E ++ when UDQS_WAIT1 => -- 7'h1E + if (MCB_RDY_BUSY_N = '0')then + STATE <= UDQS_WAIT1; + else + STATE <= UDQS_WRITE_NEG_INDELAY; + end if; + +- when UDQS_WRITE_NEG_INDELAY => -- 7'h2F ++ when UDQS_WRITE_NEG_INDELAY => -- 7'h1F + IODRPCTRLR_MEMCELL_ADDR <= NegEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_UDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_UDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= UDQS_WRITE_NEG_INDELAY; +@@ -1595,7 +1213,7 @@ + STATE <= UDQS_WAIT2; + end if; + +- when UDQS_WAIT2 => -- 7'h30 ++ when UDQS_WAIT2 => -- 7'h20 + if (MCB_RDY_BUSY_N = '0')then + STATE <= UDQS_WAIT2; + else +@@ -1604,7 +1222,7 @@ + STATE <= START_DYN_CAL; + end if; + +- when START_DYN_CAL => -- h31 ++ when START_DYN_CAL => -- h21 + Pre_SYSRST <= '0'; -- SYSRST not driven + counter_inc <= (others => '0'); + counter_dec <= (others => '0'); +@@ -1624,7 +1242,7 @@ + STATE <= START_DYN_CAL; + end if; + +- when WRITE_CALIBRATE => -- h32 ++ when WRITE_CALIBRATE => -- h22 + Pre_SYSRST <= '0'; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= DelayControl; +@@ -1637,7 +1255,7 @@ + STATE <= WAIT9; + end if; + +- when WAIT9 => -- h33 ++ when WAIT9 => -- h23 + counter_en <= '1'; + if (count < "100110") then -- this adds approximately 22 extra clock cycles after WRITE_CALIBRATE + STATE <= WAIT9; +@@ -1645,7 +1263,7 @@ + STATE <= READ_MAX_VALUE; + end if; + +- when READ_MAX_VALUE => -- h34 ++ when READ_MAX_VALUE => -- h24 + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= MaxValue; + IODRPCTRLR_R_WB <= READ_MODE; +@@ -1656,7 +1274,7 @@ + STATE <= WAIT10; + end if; + +- when WAIT10 => -- h35 ++ when WAIT10 => -- h25 + if (IODRPCTRLR_RDY_BUSY_N = '0') then + STATE <= WAIT10; + else +@@ -1669,7 +1287,7 @@ + end if; + end if; + +- when ANALYZE_MAX_VALUE => -- h36 only do a Inc or Dec during a REFRESH cycle. ++ when ANALYZE_MAX_VALUE => -- h26 only do a Inc or Dec during a REFRESH cycle. + if (First_Dyn_Cal_Done = '0')then + STATE <= FIRST_DYN_CAL; + elsif ((Max_Value_int < Max_Value_Previous) and (Max_Value_Delta_Dn >= INCDEC_THRESHOLD)) then +@@ -1684,11 +1302,11 @@ + STATE <= START_DYN_CAL; + end if; + +- when FIRST_DYN_CAL => -- h37 ++ when FIRST_DYN_CAL => -- h27 + First_Dyn_Cal_Done <= '1'; -- set flag that the First Dynamic Calibration has been completed + STATE <= START_DYN_CAL; + +- when INCREMENT => -- h38 ++ when INCREMENT => -- h28 + STATE <= START_DYN_CAL; -- Default case: Inc is not high or no longer in REFRSH + MCB_UILDQSINC <= '0'; -- Default case: no inc or dec + MCB_UIUDQSINC <= '0'; -- Default case: no inc or dec +@@ -1712,7 +1330,7 @@ + STATE <= START_DYN_CAL; + end case; + +- when DECREMENT => -- h39 ++ when DECREMENT => -- h29 + STATE <= START_DYN_CAL; -- Default case: Dec is not high or no longer in REFRSH + MCB_UILDQSINC <= '0'; -- Default case: no inc or dec + MCB_UIUDQSINC <= '0'; -- Default case: no inc or dec +@@ -1738,7 +1356,7 @@ + end case; + end if; + +- when DONE => -- h3A ++ when DONE => -- h2A + Pre_SYSRST <= '0'; -- SYSRST cleared + MCB_UICMDEN <= '0'; -- release UICMDEN + STATE <= DONE; diff --git a/designs/leon3-xilinx-sp605/memc3_infrastructure_patch.txt b/designs/leon3-xilinx-sp605/memc3_infrastructure_patch.txt new file mode 100644 index 00000000..01d22034 --- /dev/null +++ b/designs/leon3-xilinx-sp605/memc3_infrastructure_patch.txt @@ -0,0 +1,96 @@ +--- mig39/mig_39/user_design/rtl/memc3_infrastructure.vhd 2012-12-20 08:13:08.000000000 +0100 ++++ mig39_copy/mig_39/user_design/rtl/memc3_infrastructure.vhd 2012-12-20 08:20:48.359825226 +0100 +@@ -95,7 +95,9 @@ + mcb_drp_clk : out std_logic; + pll_ce_0 : out std_logic; + pll_ce_90 : out std_logic; +- pll_lock : out std_logic ++ pll_lock : out std_logic; ++ clk_125 : out std_logic; ++ clk_50 : out std_logic + + ); + end entity; +@@ -121,6 +123,8 @@ + signal clk0_bufg_in : std_logic; + signal mcb_drp_clk_bufg_in : std_logic; + signal clkfbout_clkfbin : std_logic; ++ signal clkfbout_clkfbin2 : std_logic; ++ signal clk_50i, clk_125i : std_logic; + signal rst_tmp : std_logic; + signal sys_clk_ibufg : std_logic; + signal sys_rst : std_logic; +@@ -330,5 +334,73 @@ + LOCK => bufpll_mcb_locked + ); + ++ ++ -- second PLL to generate 125 MHz for giga-bit MAC and 50 MHz for VGA ++ u_pll_adv2 : PLL_ADV ++ generic map ++ ( ++ BANDWIDTH => "OPTIMIZED", ++ CLKIN1_PERIOD => CLK_PERIOD_NS, ++ CLKIN2_PERIOD => CLK_PERIOD_NS, ++ CLKOUT0_DIVIDE => 8, -- 125 MHz ++ CLKOUT1_DIVIDE => 20, -- 50 MHz ++ CLKOUT2_DIVIDE => C_CLKOUT2_DIVIDE, ++ CLKOUT3_DIVIDE => C_CLKOUT3_DIVIDE, ++ CLKOUT4_DIVIDE => 1, ++ CLKOUT5_DIVIDE => 1, ++ CLKOUT0_PHASE => 0.000, ++ CLKOUT1_PHASE => 0.000, ++ CLKOUT2_PHASE => 0.000, ++ CLKOUT3_PHASE => 0.000, ++ CLKOUT4_PHASE => 0.000, ++ CLKOUT5_PHASE => 0.000, ++ CLKOUT0_DUTY_CYCLE => 0.500, ++ CLKOUT1_DUTY_CYCLE => 0.500, ++ CLKOUT2_DUTY_CYCLE => 0.500, ++ CLKOUT3_DUTY_CYCLE => 0.500, ++ CLKOUT4_DUTY_CYCLE => 0.500, ++ CLKOUT5_DUTY_CYCLE => 0.500, ++ SIM_DEVICE => "SPARTAN6", ++ COMPENSATION => "INTERNAL", ++ DIVCLK_DIVIDE => 1, ++ CLKFBOUT_MULT => 5, -- 1000 MHz ++ CLKFBOUT_PHASE => 0.0, ++ REF_JITTER => 0.005000 ++ ) ++ port map ++ ( ++ CLKFBIN => clkfbout_clkfbin2, ++ CLKINSEL => '1', ++ CLKIN1 => sys_clk_ibufg, ++ CLKIN2 => '0', ++ DADDR => (others => '0'), ++ DCLK => '0', ++ DEN => '0', ++ DI => (others => '0'), ++ DWE => '0', ++ REL => '0', ++ RST => sys_rst, ++ CLKFBDCM => open, ++ CLKFBOUT => clkfbout_clkfbin2, ++ CLKOUTDCM0 => open, ++ CLKOUTDCM1 => open, ++ CLKOUTDCM2 => open, ++ CLKOUTDCM3 => open, ++ CLKOUTDCM4 => open, ++ CLKOUTDCM5 => open, ++ CLKOUT0 => clk_125i, ++ CLKOUT1 => clk_50i, ++ CLKOUT2 => open, ++ CLKOUT3 => open, ++ CLKOUT4 => open, ++ CLKOUT5 => open, ++ DO => open, ++ DRDY => open, ++ LOCKED => open ++ ); ++ ++ U_BUFG_125 : BUFG port map ( O => clk_125, I => clk_125i); ++ U_BUFG_50 : BUFG port map ( O => clk_50, I => clk_50i); ++ + end architecture syn; + diff --git a/designs/leon3-xilinx-sp605/mig39/coregen.cgc b/designs/leon3-xilinx-sp605/mig39/coregen.cgc new file mode 100644 index 00000000..f4d7e311 --- /dev/null +++ b/designs/leon3-xilinx-sp605/mig39/coregen.cgc @@ -0,0 +1,953 @@ + + + xilinx.com + CoreGen + coregen + 1.0 + + + mig_39 + MIG Virtex-6 and Spartan-6 + + + mig_39 + ./mig_39/user_design/mig.prj + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg/ + + + xc6slx45t + spartan6 + fgg484 + -3 + + + BusFormatParenNotRipped + VHDL + true + Synplicity + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + 2012-10-13+03:35 + + + + + model_parameter_resolution_generator + + + ip_xco_generator + + ./mig_39.xco + xco + Thu Dec 20 07:13:07 GMT 2012 + 0x21984B25 + generationID_1879581046 + + + + implementation_source_generator + + ./mig_39/docs/ug388.pdf + ignore + pdf + Thu Dec 20 07:13:07 GMT 2012 + 0x90FCF0D1 + generationID_1879581046 + + + ./mig_39/docs/ug416.pdf + ignore + pdf + Thu Dec 20 07:13:07 GMT 2012 + 0x5A2D5D89 + generationID_1879581046 + + + ./mig_39/example_design/datasheet.txt + ignore + txt + Thu Dec 20 07:13:08 GMT 2012 + 0xB2113B64 + generationID_1879581046 + + + ./mig_39/example_design/mig.prj + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x959CEC85 + generationID_1879581046 + + + ./mig_39/example_design/par/example_top.ucf + ignore + ucf + Thu Dec 20 07:13:08 GMT 2012 + 0xA086BAC0 + generationID_1879581046 + + + ./mig_39/example_design/par/icon_coregen.xco + ignore + xco + Thu Dec 20 07:13:08 GMT 2012 + 0xC358571F + generationID_1879581046 + + + ./mig_39/example_design/par/ila_coregen.xco + ignore + xco + Thu Dec 20 07:13:08 GMT 2012 + 0xA1B5D6EB + generationID_1879581046 + + + ./mig_39/example_design/par/ise_flow.sh + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0xFDA550DD + generationID_1879581046 + + + ./mig_39/example_design/par/ise_run.txt + ignore + txt + Thu Dec 20 07:13:08 GMT 2012 + 0xDF3D5A03 + generationID_1879581046 + + + ./mig_39/example_design/par/makeproj.sh + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0xCFE64DF9 + generationID_1879581046 + + + ./mig_39/example_design/par/mem_interface_top.ut + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0xCDD0105F + generationID_1879581046 + + + ./mig_39/example_design/par/readme.txt + ignore + txt + Thu Dec 20 07:13:08 GMT 2012 + 0xCA0E2934 + generationID_1879581046 + + + ./mig_39/example_design/par/rem_files.sh + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0xD24BB2EE + generationID_1879581046 + + + ./mig_39/example_design/par/vio_coregen.xco + ignore + xco + Thu Dec 20 07:13:08 GMT 2012 + 0x310B2353 + generationID_1879581046 + + + ./mig_39/example_design/rtl/example_top.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x79C4A1D0 + generationID_1879581046 + + + ./mig_39/example_design/rtl/iodrp_controller.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x5A2197DD + generationID_1879581046 + + + ./mig_39/example_design/rtl/iodrp_mcb_controller.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x69237401 + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_raw_wrapper.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xA3623325 + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_soft_calibration.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x9B8E0B5E + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_soft_calibration_top.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xC37A23BB + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_infrastructure.vhd + ignore + vhdl + Thu Dec 20 07:13:07 GMT 2012 + 0x8EA90667 + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_tb_top.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xDB511AFE + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_wrapper.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x4A9038BE + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/afifo.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x26568D9A + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/cmd_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xC6EF0126 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/cmd_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x893B0F01 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/data_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x6E88FB8E + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/init_mem_pattern_ctr.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x26DEA717 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/mcb_flow_control.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xB9D71414 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/mcb_traffic_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x125A1D59 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/rd_data_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x50A90B14 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/read_data_path.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xDFA5DAF7 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/read_posted_fifo.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xBC61DAC4 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/sp6_data_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xA9170C59 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/tg_status.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x7B717096 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/v6_data_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x24F3E550 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/wr_data_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x91BCA941 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/write_data_path.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x391A16CE + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/ddr3_model_c3.v + ignore + verilog + Thu Dec 20 07:13:08 GMT 2012 + 0x4888E9C7 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/ddr3_model_parameters_c3.vh + ignore + verilog + Thu Dec 20 07:13:08 GMT 2012 + 0xFCAE2B71 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/isim.sh + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x9F9FA990 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/isim.tcl + ignore + tcl + Thu Dec 20 07:13:08 GMT 2012 + 0x42CDE72E + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/mig_39.prj + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x4C74E1F0 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/readme.txt + ignore + txt + Thu Dec 20 07:13:08 GMT 2012 + 0xFF44EBCB + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/sim.do + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x7B7530ED + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/sim_tb_top.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x708A0AE5 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/timing_sim.sh + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x68A01DAC + generationID_1879581046 + + + ./mig_39/example_design/synth/example_top.lso + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0xEEDE3797 + generationID_1879581046 + + + ./mig_39/example_design/synth/example_top.prj + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x45A82CBA + generationID_1879581046 + + + ./mig_39/example_design/synth/mem_interface_top_synp.sdc + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x53C2426B + generationID_1879581046 + + + ./mig_39/example_design/synth/script_synp.tcl + ignore + tcl + Thu Dec 20 07:13:08 GMT 2012 + 0x983BD32D + generationID_1879581046 + + + ./mig_39/user_design/datasheet.txt + ignore + txt + Thu Dec 20 07:13:08 GMT 2012 + 0x6DD20041 + generationID_1879581046 + + + ./mig_39/user_design/mig.prj + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x959CEC85 + generationID_1879581046 + + + ./mig_39/user_design/par/icon_coregen.xco + ignore + xco + Thu Dec 20 07:13:08 GMT 2012 + 0xC358571F + generationID_1879581046 + + + ./mig_39/user_design/par/ila_coregen.xco + ignore + xco + Thu Dec 20 07:13:08 GMT 2012 + 0xA1B5D6EB + generationID_1879581046 + + + ./mig_39/user_design/par/ise_flow.sh + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x96AC23E4 + generationID_1879581046 + + + ./mig_39/user_design/par/ise_run.txt + ignore + txt + Thu Dec 20 07:13:08 GMT 2012 + 0x939BBF17 + generationID_1879581046 + + + ./mig_39/user_design/par/makeproj.sh + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0xCFE64DF9 + generationID_1879581046 + + + ./mig_39/user_design/par/mem_interface_top.ut + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0xCDD0105F + generationID_1879581046 + + + ./mig_39/user_design/par/mig_39.ucf + ucf + Thu Dec 20 07:13:08 GMT 2012 + 0xC93BF5F6 + generationID_1879581046 + + + ./mig_39/user_design/par/readme.txt + ignore + txt + Thu Dec 20 07:13:08 GMT 2012 + 0xC6F34241 + generationID_1879581046 + + + ./mig_39/user_design/par/rem_files.sh + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x56F853E2 + generationID_1879581046 + + + ./mig_39/user_design/par/vio_coregen.xco + ignore + xco + Thu Dec 20 07:13:08 GMT 2012 + 0x310B2353 + generationID_1879581046 + + + ./mig_39/user_design/rtl/iodrp_controller.vhd + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x5A2197DD + generationID_1879581046 + + + ./mig_39/user_design/rtl/iodrp_mcb_controller.vhd + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x69237401 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_raw_wrapper.vhd + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xA3623325 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_soft_calibration.vhd + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x9B8E0B5E + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_soft_calibration_top.vhd + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xC37A23BB + generationID_1879581046 + + + ./mig_39/user_design/rtl/memc3_infrastructure.vhd + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x8EA90667 + generationID_1879581046 + + + ./mig_39/user_design/rtl/memc3_wrapper.vhd + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x4A9038BE + generationID_1879581046 + + + ./mig_39/user_design/rtl/mig_39.vhd + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xDAFDDD97 + generationID_1879581046 + + + ./mig_39/user_design/sim/afifo.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x26568D9A + generationID_1879581046 + + + ./mig_39/user_design/sim/cmd_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xC6EF0126 + generationID_1879581046 + + + ./mig_39/user_design/sim/cmd_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x893B0F01 + generationID_1879581046 + + + ./mig_39/user_design/sim/data_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x6E88FB8E + generationID_1879581046 + + + ./mig_39/user_design/sim/ddr3_model_c3.v + ignore + verilog + Thu Dec 20 07:13:08 GMT 2012 + 0x4888E9C7 + generationID_1879581046 + + + ./mig_39/user_design/sim/ddr3_model_parameters_c3.vh + ignore + verilog + Thu Dec 20 07:13:08 GMT 2012 + 0xFCAE2B71 + generationID_1879581046 + + + ./mig_39/user_design/sim/init_mem_pattern_ctr.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x26DEA717 + generationID_1879581046 + + + ./mig_39/user_design/sim/isim.sh + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x9F9FA990 + generationID_1879581046 + + + ./mig_39/user_design/sim/isim.tcl + ignore + tcl + Thu Dec 20 07:13:08 GMT 2012 + 0x42CDE72E + generationID_1879581046 + + + ./mig_39/user_design/sim/mcb_flow_control.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xB9D71414 + generationID_1879581046 + + + ./mig_39/user_design/sim/mcb_traffic_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x125A1D59 + generationID_1879581046 + + + ./mig_39/user_design/sim/memc3_tb_top.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xDB511AFE + generationID_1879581046 + + + ./mig_39/user_design/sim/mig_39.prj + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0xF564E483 + generationID_1879581046 + + + ./mig_39/user_design/sim/rd_data_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x50A90B14 + generationID_1879581046 + + + ./mig_39/user_design/sim/read_data_path.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xDFA5DAF7 + generationID_1879581046 + + + ./mig_39/user_design/sim/read_posted_fifo.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xBC61DAC4 + generationID_1879581046 + + + ./mig_39/user_design/sim/readme.txt + ignore + txt + Thu Dec 20 07:13:08 GMT 2012 + 0xFF44EBCB + generationID_1879581046 + + + ./mig_39/user_design/sim/sim.do + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x71356E79 + generationID_1879581046 + + + ./mig_39/user_design/sim/sim_tb_top.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x8BA01B0F + generationID_1879581046 + + + ./mig_39/user_design/sim/sp6_data_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0xA9170C59 + generationID_1879581046 + + + ./mig_39/user_design/sim/tg_status.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x7B717096 + generationID_1879581046 + + + ./mig_39/user_design/sim/v6_data_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x24F3E550 + generationID_1879581046 + + + ./mig_39/user_design/sim/wr_data_gen.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x91BCA941 + generationID_1879581046 + + + ./mig_39/user_design/sim/write_data_path.vhd + ignore + vhdl + Thu Dec 20 07:13:08 GMT 2012 + 0x391A16CE + generationID_1879581046 + + + ./mig_39/user_design/synth/mem_interface_top_synp.sdc + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x612B8821 + generationID_1879581046 + + + ./mig_39/user_design/synth/mig_39.lso + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0xEEDE3797 + generationID_1879581046 + + + ./mig_39/user_design/synth/mig_39.prj + ignore + unknown + Thu Dec 20 07:13:08 GMT 2012 + 0x1521D75B + generationID_1879581046 + + + ./mig_39/user_design/synth/script_synp.tcl + ignore + tcl + Thu Dec 20 07:13:08 GMT 2012 + 0x09885FC9 + generationID_1879581046 + + + ./mig_39.vho + vho + Thu Dec 20 07:13:08 GMT 2012 + 0x93613DF1 + generationID_1879581046 + + + ./mig_39_readme.txt + ignore + txt + Thu Dec 20 07:13:08 GMT 2012 + 0x4D6824E7 + generationID_1879581046 + + + ./mig_39_xmdf.tcl + ignore + tcl + Thu Dec 20 07:13:08 GMT 2012 + 0x87D169C0 + generationID_1879581046 + + + + instantiation_template_generator + + + asy_generator + + + xmdf_generator + + + ise_generator + + ./mig_39.gise + ignore + gise + Thu Dec 20 07:13:16 GMT 2012 + 0x8CB3D14A + generationID_1879581046 + + + ./mig_39.xise + ignore + xise + Thu Dec 20 07:13:16 GMT 2012 + 0x2280B14C + generationID_1879581046 + + + + deliver_readme_generator + + + flist_generator + + ./mig_39_flist.txt + ignore + txtFlist + txt + Thu Dec 20 07:13:16 GMT 2012 + 0xE0B321B8 + generationID_1879581046 + + + + + + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg/ + + + xc6slx45t + spartan6 + fgg484 + -3 + + + BusFormatParenNotRipped + VHDL + true + Synplicity + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + + + diff --git a/designs/leon3-xilinx-sp605/mig39/coregen.cgp b/designs/leon3-xilinx-sp605/mig39/coregen.cgp new file mode 100644 index 00000000..8aed4774 --- /dev/null +++ b/designs/leon3-xilinx-sp605/mig39/coregen.cgp @@ -0,0 +1,22 @@ +# Date: Thu Dec 29 23:13:08 2011 + +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatParenNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx45t +SET devicefamily = spartan6 +SET flowvendor = Synplicity +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = fgg484 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -3 +SET verilogsim = false +SET vhdlsim = true +SET workingdirectory = ./tmp/ + +# CRC: 1691a6bd diff --git a/designs/leon3-xilinx-sp605/mig39/mig.prj b/designs/leon3-xilinx-sp605/mig39/mig.prj new file mode 100644 index 00000000..ae2634b6 --- /dev/null +++ b/designs/leon3-xilinx-sp605/mig39/mig.prj @@ -0,0 +1,63 @@ + + + mig_39 + xc6slx45t-fgg484/-3 + 3.92 + + DDR3_SDRAM/Components/MT41J64M16XX-187E + 3000 + 0 + 1 + FALSE + + 13 + 10 + 3 + + + + 8(00) + 6 + Enable + RZQ/6 + RZQ/4 + 0 + Disabled + Disabled + Full Array + 5 + Enabled + Normal + NATIVE,NATIVE,NATIVE,NATIVE,NATIVE,NATIVE + Class II + Class II + CALIB_TERM + 25 Ohms + + + + Differential + 1 + Disable + Differential + Two 32-bit bi-directional and four 32-bit unidirectional ports + K7 + M7 + Port0,Port2 + Bi-directional,none,Read,none,none,none + ROW_BANK_COLUMN + Round Robin + 02 + 20 + 02 + 20 + 02 + 20 + 02 + 20 + 02 + 20 + 02 + 20 + + diff --git a/designs/leon3-xilinx-sp605/mig39/mig.xco b/designs/leon3-xilinx-sp605/mig39/mig.xco new file mode 100644 index 00000000..66b4bf63 --- /dev/null +++ b/designs/leon3-xilinx-sp605/mig39/mig.xco @@ -0,0 +1,46 @@ +############################################################## +# +# Xilinx Core Generator version 13.2 +# Date: Thu Dec 29 23:13:02 2011 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:mig:3.8 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatParenNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx45t +SET devicefamily = spartan6 +SET flowvendor = Synplicity +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = fgg484 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -3 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT MIG_Virtex-6_and_Spartan-6 family Xilinx,_Inc. 3.92 +# END Select +# BEGIN Parameters +CSET component_name=mig_39 +CSET xml_input_file=./mig.prj +# END Parameters +GENERATE +# CRC: 584fbaf1 diff --git a/designs/leon3-xilinx-sp605/mig39/mig_39.xco b/designs/leon3-xilinx-sp605/mig39/mig_39.xco new file mode 100644 index 00000000..f10d860a --- /dev/null +++ b/designs/leon3-xilinx-sp605/mig39/mig_39.xco @@ -0,0 +1,49 @@ +############################################################## +# +# Xilinx Core Generator version 14.3 +# Date: Thu Dec 20 07:13:07 2012 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:mig:3.92 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatParenNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx45t +SET devicefamily = spartan6 +SET flowvendor = Synplicity +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = fgg484 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -3 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT MIG_Virtex-6_and_Spartan-6 family Xilinx,_Inc. 3.92 +# END Select +# BEGIN Parameters +CSET component_name=mig_39 +CSET xml_input_file=./mig.prj +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-10-13T03:35:42Z +# END Extra information +GENERATE +# CRC: 68048b25 diff --git a/designs/leon3-xilinx-sp605/mig_patch.txt b/designs/leon3-xilinx-sp605/mig_patch.txt new file mode 100644 index 00000000..2844bc07 --- /dev/null +++ b/designs/leon3-xilinx-sp605/mig_patch.txt @@ -0,0 +1,62 @@ +--- mig39/mig_39/user_design/rtl/mig_39.vhd 2012-12-20 08:13:08.000000000 +0100 ++++ mig39_copy/mig_39/user_design/rtl/mig_39.vhd 2012-12-20 08:19:50.487825838 +0100 +@@ -65,7 +65,7 @@ + --***************************************************************************** + library ieee; + use ieee.std_logic_1164.all; +-entity mig_39 is ++entity mig_38 is + generic + ( + C3_P0_MASK_SIZE : integer := 4; +@@ -165,11 +165,13 @@ + c3_p2_rd_empty : out std_logic; + c3_p2_rd_count : out std_logic_vector(6 downto 0); + c3_p2_rd_overflow : out std_logic; +- c3_p2_rd_error : out std_logic ++ c3_p2_rd_error : out std_logic; ++ clk_125 : out std_logic; ++ clk_50 : out std_logic + ); +-end mig_39; ++end mig_38; + +-architecture arc of mig_39 is ++architecture arc of mig_38 is + + + component memc3_infrastructure is +@@ -198,8 +200,9 @@ + pll_ce_0 : out std_logic; + pll_ce_90 : out std_logic; + pll_lock : out std_logic; +- mcb_drp_clk : out std_logic +- ++ mcb_drp_clk : out std_logic; ++ clk_125 : out std_logic; ++ clk_50 : out std_logic + ); + end component; + +@@ -363,8 +366,8 @@ + constant C3_CLKOUT1_DIVIDE : integer := 1; + constant C3_CLKOUT2_DIVIDE : integer := 16; + constant C3_CLKOUT3_DIVIDE : integer := 8; +- constant C3_CLKFBOUT_MULT : integer := 2; +- constant C3_DIVCLK_DIVIDE : integer := 1; ++ constant C3_CLKFBOUT_MULT : integer := 2*5; ++ constant C3_DIVCLK_DIVIDE : integer := 1*3; + constant C3_INCLK_PERIOD : integer := ((C3_MEMCLK_PERIOD * C3_CLKFBOUT_MULT) / (C3_DIVCLK_DIVIDE * C3_CLKOUT0_DIVIDE * 2)); + constant C3_ARB_NUM_TIME_SLOTS : integer := 12; + constant C3_ARB_TIME_SLOT_0 : bit_vector(5 downto 0) := o"02"; +@@ -487,7 +490,9 @@ + pll_ce_0 => c3_pll_ce_0, + pll_ce_90 => c3_pll_ce_90, + pll_lock => c3_pll_lock, +- mcb_drp_clk => c3_mcb_drp_clk ++ mcb_drp_clk => c3_mcb_drp_clk, ++ clk_125 => clk_125, ++ clk_50 => clk_50 + ); + + diff --git a/designs/leon3-xilinx-sp605/res.txt b/designs/leon3-xilinx-sp605/res.txt deleted file mode 100644 index 4498c266..00000000 --- a/designs/leon3-xilinx-sp605/res.txt +++ /dev/null @@ -1,13 +0,0 @@ - -SPARTAN6 50 MHz, MIG DDR2, 2x8 + 2x4 cache, GRFPU - - LEON3 LEON3FTV2 -Dhrystone 78.4 78.4 -Whetstone DP 27.7 27.7 -gzip 43.98 s 41.38 s -bzip2 248.22 s 200.10 s -176.gcc 208.62 s 180.48 s -coremark 100.12 i/s 100.12 i/s -aocs_v8 12388.7 i/s 12388.7 i/s -basicmath_large 13245.0 i/s 13245.0 i/s -linpack_unroll_dp_v8 3265 KFLOPS 3563 KFLOPS diff --git a/designs/leon3-xilinx-sp605/svga2ch7301c.vhd b/designs/leon3-xilinx-sp605/svga2ch7301c.vhd index 8f95178b..4f9a1eac 100644 --- a/designs/leon3-xilinx-sp605/svga2ch7301c.vhd +++ b/designs/leon3-xilinx-sp605/svga2ch7301c.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-sp605/testbench.vhd b/designs/leon3-xilinx-sp605/testbench.vhd index 4cee7b62..d61322df 100644 --- a/designs/leon3-xilinx-sp605/testbench.vhd +++ b/designs/leon3-xilinx-sp605/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-sp605/tkconfig.h b/designs/leon3-xilinx-sp605/tkconfig.h index 2908697e..69ef1cf5 100644 --- a/designs/leon3-xilinx-sp605/tkconfig.h +++ b/designs/leon3-xilinx-sp605/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -778,6 +800,10 @@ #endif +#ifndef CONFIG_MIG_DDR3 +#define CONFIG_MIG_DDR3 0 +#endif + #ifndef CONFIG_MIG_DDR2 #define CONFIG_MIG_DDR2 0 #endif @@ -1009,6 +1035,10 @@ #ifndef CONFIG_SPIMCTRL_PWRUPCNT #define CONFIG_SPIMCTRL_PWRUPCNT 0 #endif + +#ifndef CONFIG_SPIMCTRL_OFFSET +#define CONFIG_SPIMCTRL_OFFSET 0 +#endif #ifndef CONFIG_SPICTRL_ENABLE #define CONFIG_SPICTRL_ENABLE 0 #endif diff --git a/designs/leon3-xilinx-sp605/vga_clkgen.vhd b/designs/leon3-xilinx-sp605/vga_clkgen.vhd index 7277ec42..b1ee2d14 100644 --- a/designs/leon3-xilinx-sp605/vga_clkgen.vhd +++ b/designs/leon3-xilinx-sp605/vga_clkgen.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-ge-hpe-mini/.config b/designs/leon3-xilinx-vc707/.config old mode 100755 new mode 100644 similarity index 72% rename from designs/leon3-ge-hpe-mini/.config rename to designs/leon3-xilinx-vc707/.config index ab06a3f8..56498bc6 --- a/designs/leon3-ge-hpe-mini/.config +++ b/designs/leon3-xilinx-vc707/.config @@ -1,6 +1,8 @@ # # Automatically generated make config: don't edit # +CONFIG_LEON3FT_PRESENT=y +CONFIG_HAS_SHARED_GRFPU=y # # Synthesis @@ -10,7 +12,7 @@ # CONFIG_SYN_STRATIXII is not set # CONFIG_SYN_STRATIXIII is not set # CONFIG_SYN_CYCLONEIII is not set -CONFIG_SYN_ALTERA=y +# CONFIG_SYN_ALTERA is not set # CONFIG_SYN_AXCEL is not set # CONFIG_SYN_AXDSP is not set # CONFIG_SYN_PROASIC is not set @@ -40,6 +42,7 @@ CONFIG_SYN_ALTERA=y # CONFIG_SYN_TM65GPLUS is not set # CONFIG_SYN_TSMC90 is not set # CONFIG_SYN_UMC is not set +# CONFIG_SYN_KINTEX7 is not set # CONFIG_SYN_SPARTAN2 is not set # CONFIG_SYN_SPARTAN3 is not set # CONFIG_SYN_SPARTAN3E is not set @@ -50,8 +53,9 @@ CONFIG_SYN_ALTERA=y # CONFIG_SYN_VIRTEX4 is not set # CONFIG_SYN_VIRTEX5 is not set # CONFIG_SYN_VIRTEX6 is not set +CONFIG_SYN_VIRTEX7=y # CONFIG_SYN_INFER_RAM is not set -CONFIG_SYN_INFER_PADS=y +# CONFIG_SYN_INFER_PADS is not set # CONFIG_SYN_NO_ASYNC is not set # CONFIG_SYN_SCAN is not set @@ -61,7 +65,7 @@ CONFIG_SYN_INFER_PADS=y # CONFIG_CLK_INFERRED is not set # CONFIG_CLK_HCLKBUF is not set # CONFIG_CLK_UT130HBD is not set -CONFIG_CLK_ALTDLL=y +# CONFIG_CLK_ALTDLL is not set # CONFIG_CLK_LATDLL is not set # CONFIG_CLK_PRO3PLL is not set # CONFIG_CLK_PRO3EPLL is not set @@ -69,36 +73,40 @@ CONFIG_CLK_ALTDLL=y # CONFIG_CLK_FUSPLL is not set # CONFIG_CLK_LIB18T is not set # CONFIG_CLK_RHUMC is not set +CONFIG_CLK_CLKPLLE2=y # CONFIG_CLK_CLKDLL is not set # CONFIG_CLK_DCM is not set CONFIG_CLK_MUL=4 -CONFIG_CLK_DIV=2 +CONFIG_CLK_DIV=8 # CONFIG_PCI_SYSCLK is not set -CONFIG_LEON3=y -CONFIG_PROC_NUM=1 # # Processor # +CONFIG_LEON3=y +CONFIG_PROC_NUM=1 +# CONFIG_LEON3_MIN is not set +# CONFIG_LEON3_GP is not set +# CONFIG_LEON3_HP is not set +CONFIG_LEON3_CUSTOM=y # # Integer unit # CONFIG_IU_NWINDOWS=8 CONFIG_IU_V8MULDIV=y -# CONFIG_IU_MUL_LATENCY_2 is not set +CONFIG_IU_MUL_LATENCY_2=y # CONFIG_IU_MUL_LATENCY_4 is not set -CONFIG_IU_MUL_LATENCY_5=y -# CONFIG_IU_MUL_MAC is not set +# CONFIG_IU_MUL_LATENCY_5 is not set CONFIG_IU_MUL_INFERRED=y # CONFIG_IU_MUL_MODGEN is not set # CONFIG_IU_MUL_TECHSPEC is not set # CONFIG_IU_MUL_DW is not set -# CONFIG_IU_BP is not set +CONFIG_IU_BP=y # CONFIG_IU_SVT is not set # CONFIG_NOTAG is not set CONFIG_IU_LDELAY=1 -CONFIG_IU_WATCHPOINTS=0 +CONFIG_IU_WATCHPOINTS=2 # CONFIG_PWD is not set CONFIG_IU_RSTADDR=00000 @@ -111,14 +119,14 @@ CONFIG_IU_RSTADDR=00000 # Cache system # CONFIG_ICACHE_ENABLE=y -CONFIG_ICACHE_ASSO1=y +# CONFIG_ICACHE_ASSO1 is not set # CONFIG_ICACHE_ASSO2 is not set # CONFIG_ICACHE_ASSO3 is not set -# CONFIG_ICACHE_ASSO4 is not set +CONFIG_ICACHE_ASSO4=y # CONFIG_ICACHE_SZ1 is not set # CONFIG_ICACHE_SZ2 is not set -CONFIG_ICACHE_SZ4=y -# CONFIG_ICACHE_SZ8 is not set +# CONFIG_ICACHE_SZ4 is not set +CONFIG_ICACHE_SZ8=y # CONFIG_ICACHE_SZ16 is not set # CONFIG_ICACHE_SZ32 is not set # CONFIG_ICACHE_SZ64 is not set @@ -126,15 +134,20 @@ CONFIG_ICACHE_SZ4=y # CONFIG_ICACHE_SZ256 is not set # CONFIG_ICACHE_LZ16 is not set CONFIG_ICACHE_LZ32=y +# CONFIG_ICACHE_ALGORND is not set +CONFIG_ICACHE_ALGODIR=y +# CONFIG_ICACHE_ALGOLRR is not set +# CONFIG_ICACHE_ALGOLRU is not set +CONFIG_ICACHE_LOCK=y CONFIG_DCACHE_ENABLE=y -CONFIG_DCACHE_ASSO1=y +# CONFIG_DCACHE_ASSO1 is not set # CONFIG_DCACHE_ASSO2 is not set # CONFIG_DCACHE_ASSO3 is not set -# CONFIG_DCACHE_ASSO4 is not set +CONFIG_DCACHE_ASSO4=y # CONFIG_DCACHE_SZ1 is not set # CONFIG_DCACHE_SZ2 is not set -CONFIG_DCACHE_SZ4=y -# CONFIG_DCACHE_SZ8 is not set +# CONFIG_DCACHE_SZ4 is not set +CONFIG_DCACHE_SZ8=y # CONFIG_DCACHE_SZ16 is not set # CONFIG_DCACHE_SZ32 is not set # CONFIG_DCACHE_SZ64 is not set @@ -142,9 +155,14 @@ CONFIG_DCACHE_SZ4=y # CONFIG_DCACHE_SZ256 is not set # CONFIG_DCACHE_LZ16 is not set CONFIG_DCACHE_LZ32=y +# CONFIG_DCACHE_ALGORND is not set +CONFIG_DCACHE_ALGODIR=y +# CONFIG_DCACHE_ALGOLRR is not set +# CONFIG_DCACHE_ALGOLRU is not set +CONFIG_DCACHE_LOCK=y CONFIG_DCACHE_SNOOP=y -# CONFIG_DCACHE_SNOOP_FAST is not set -# CONFIG_DCACHE_SNOOP_SEPTAG is not set +CONFIG_DCACHE_SNOOP_FAST=y +CONFIG_DCACHE_SNOOP_SEPTAG=y CONFIG_CACHE_FIXED=0 # @@ -160,12 +178,14 @@ CONFIG_MMU_REPARRAY=y CONFIG_MMU_I8=y # CONFIG_MMU_I16 is not set # CONFIG_MMU_I32 is not set +# CONFIG_MMU_I64 is not set # CONFIG_MMU_D2 is not set # CONFIG_MMU_D4 is not set CONFIG_MMU_D8=y # CONFIG_MMU_D16 is not set # CONFIG_MMU_D32 is not set -# CONFIG_MMU_FASTWB is not set +# CONFIG_MMU_D64 is not set +CONFIG_MMU_FASTWB=y CONFIG_MMU_PAGE_4K=y # CONFIG_MMU_PAGE_8K is not set # CONFIG_MMU_PAGE_16K is not set @@ -177,15 +197,15 @@ CONFIG_MMU_PAGE_4K=y # CONFIG_DSU_ENABLE=y CONFIG_DSU_ITRACE=y -CONFIG_DSU_ITRACESZ1=y +# CONFIG_DSU_ITRACESZ1 is not set # CONFIG_DSU_ITRACESZ2 is not set -# CONFIG_DSU_ITRACESZ4 is not set +CONFIG_DSU_ITRACESZ4=y # CONFIG_DSU_ITRACESZ8 is not set # CONFIG_DSU_ITRACESZ16 is not set CONFIG_DSU_ATRACE=y -CONFIG_DSU_ATRACESZ1=y +# CONFIG_DSU_ATRACESZ1 is not set # CONFIG_DSU_ATRACESZ2 is not set -# CONFIG_DSU_ATRACESZ4 is not set +CONFIG_DSU_ATRACESZ4=y # CONFIG_DSU_ATRACESZ8 is not set # CONFIG_DSU_ATRACESZ16 is not set @@ -198,7 +218,7 @@ CONFIG_DSU_ATRACESZ1=y # VHDL debug settings # # CONFIG_IU_DISAS is not set -# CONFIG_DEBUG_PC32 is not set +CONFIG_DEBUG_PC32=y # # AMBA configuration @@ -206,7 +226,7 @@ CONFIG_DSU_ATRACESZ1=y CONFIG_AHB_DEFMST=0 CONFIG_AHB_RROBIN=y # CONFIG_AHB_SPLIT is not set -# CONFIG_AHB_FPNPEN is not set +CONFIG_AHB_FPNPEN=y CONFIG_AHB_IOADDR=FFF CONFIG_APB_HADDR=800 # CONFIG_AHB_MON is not set @@ -217,59 +237,53 @@ CONFIG_APB_HADDR=800 # CONFIG_DSU_UART=y CONFIG_DSU_JTAG=y -CONFIG_DSU_ETH=y -# CONFIG_DSU_ETHSZ1 is not set -CONFIG_DSU_ETHSZ2=y -# CONFIG_DSU_ETHSZ4 is not set -# CONFIG_DSU_ETHSZ8 is not set -# CONFIG_DSU_ETHSZ16 is not set -CONFIG_DSU_IPMSB=C0A8 -CONFIG_DSU_IPLSB=0033 -CONFIG_DSU_ETHMSB=020000 -CONFIG_DSU_ETHLSB=00001F -# CONFIG_DSU_ETH_PROG is not set -# CONFIG_DSU_ETH_DIS is not set # # Peripherals # # -# Memory controllers +# Memory controller # -# -# 8/32-bit PROM/SRAM controller -# -# CONFIG_SRCTRL is not set - # # Leon2 memory controller # CONFIG_MCTRL_LEON2=y -# CONFIG_MCTRL_8BIT is not set -# CONFIG_MCTRL_16BIT is not set +CONFIG_MCTRL_8BIT=y +CONFIG_MCTRL_16BIT=y # CONFIG_MCTRL_5CS is not set -CONFIG_MCTRL_SDRAM=y -# CONFIG_MCTRL_SDRAM_SEPBUS is not set -# CONFIG_MCTRL_PAGE is not set +# CONFIG_MCTRL_SDRAM is not set + +# +# MIG memory controller +# +# CONFIG_MIG_DDR2 is not set + +# +# MIG Series 7 memory controller +# +CONFIG_MIG_SERIES7=y +# CONFIG_AHBSTAT_ENABLE is not set # # On-chip RAM/ROM # # CONFIG_AHBROM_ENABLE is not set -# CONFIG_AHBRAM_ENABLE is not set +CONFIG_AHBRAM_ENABLE=y +# CONFIG_AHBRAM_SZ1 is not set +# CONFIG_AHBRAM_SZ2 is not set +CONFIG_AHBRAM_SZ4=y +# CONFIG_AHBRAM_SZ8 is not set +# CONFIG_AHBRAM_SZ16 is not set +# CONFIG_AHBRAM_SZ32 is not set +# CONFIG_AHBRAM_SZ64 is not set +CONFIG_AHBRAM_START=A00 # # Ethernet # -CONFIG_GRETH_ENABLE=y -# CONFIG_GRETH_GIGA is not set -# CONFIG_GRETH_FIFO4 is not set -# CONFIG_GRETH_FIFO8 is not set -# CONFIG_GRETH_FIFO16 is not set -CONFIG_GRETH_FIFO32=y -# CONFIG_GRETH_FIFO64 is not set +# CONFIG_GRETH_ENABLE is not set # # UARTs, timers and irq control @@ -277,10 +291,10 @@ CONFIG_GRETH_FIFO32=y CONFIG_UART1_ENABLE=y # CONFIG_UA1_FIFO1 is not set # CONFIG_UA1_FIFO2 is not set -CONFIG_UA1_FIFO4=y +# CONFIG_UA1_FIFO4 is not set # CONFIG_UA1_FIFO8 is not set # CONFIG_UA1_FIFO16 is not set -# CONFIG_UA1_FIFO32 is not set +CONFIG_UA1_FIFO32=y CONFIG_IRQ3_ENABLE=y # CONFIG_IRQ3_SEC is not set CONFIG_GPT_ENABLE=y @@ -290,11 +304,10 @@ CONFIG_GPT_TW=32 CONFIG_GPT_IRQ=8 CONFIG_GPT_SEPIRQ=y # CONFIG_GPT_WDOGEN is not set - -# -# ATA Controller -# -# CONFIG_ATA_ENABLE is not set +CONFIG_GRGPIO_ENABLE=y +CONFIG_GRGPIO_WIDTH=8 +CONFIG_GRGPIO_IMASK=0000 +CONFIG_I2C_ENABLE=y # # Keybord and VGA interface @@ -304,10 +317,18 @@ CONFIG_GPT_SEPIRQ=y # CONFIG_SVGA_ENABLE is not set # -# Gleichmann Options +# SPI +# + +# +# SPI memory controller +# +# CONFIG_SPIMCTRL is not set + +# +# SPI controller(s) # -CONFIG_AHB2HPI_ENABLE=y -CONFIG_DAC_AHB_ENABLE=y +# CONFIG_SPICTRL_ENABLE is not set # # VHDL Debugging diff --git a/designs/leon3-xilinx-vc707/Makefile b/designs/leon3-xilinx-vc707/Makefile new file mode 100644 index 00000000..9616eb38 --- /dev/null +++ b/designs/leon3-xilinx-vc707/Makefile @@ -0,0 +1,67 @@ +include .config + +GRLIB=../.. +TOP=leon3mp +BOARD=xilinx-vc707-xc7vx485t +DESIGN=leon3-xilinx-vc707 + +include $(GRLIB)/boards/$(BOARD)/Makefile.inc + +DEVICE=$(PART)$(PACKAGE)-$(SPEED) +XDC=$(GRLIB)/boards/$(BOARD)/$(BOARD).xdc + +VHDLSYNFILES= \ + config.vhd ahbrom.vhd leon3mp.vhd ./ddr_dummy.vhd +VHDLSIMFILES=testbench.vhd +SIMTOP=testbench +BITGEN=$(GRLIB)/boards/$(BOARD)/default.ut +CLEAN=soft-clean +VCOMOPT=-explicit +ifeq ($(CONFIG_MIG_SERIES7),y) +VLOGOPT= +define+1Gb +define+sg125 +define+x8 +VSIMOPT= -gUSE_MIG_INTERFACE_MODEL=true -gdisas=1 -gDEBUG=0 -i -do preload_ddr3_dimm.do -t ps -novopt +notimingchecks -L secureip_ver -L xilinxcorelib_ver -L unisims_ver glbl $(SIMTOP) +else +VSIMOPT= -gdisas=1 -i -t ps $(SIMTOP) +endif +TECHLIBS = secureip unisim +EXTRA_SOFT = gen_hex_dim + +LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ + tmtc openchip ihp usbhc spw gsi cypress hynix \ + spansion leon4 leon4v0 secureip +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci ambatest can \ + usb grusbhc spacewire ascs slink spi hcan \ + leon4 leon4v0 l2cache pwm gr1553b iommu ac97 secureip +FILESKIP = grcan.vhd ddr2.v mobile_ddr.v + +include $(GRLIB)/bin/Makefile +include $(GRLIB)/software/leon3/Makefile + +################## project specific targets ########################## + +all: help-local + +help-local: help + @echo + @echo " design specific targets:" + @echo " (Only needed to generate and compile MIG Series7)" + @echo + @echo " make compile_xilinx_verilog_lib : compile xilinx library" + @echo " make clean_xilinx_verilog_lib : remove xilinx library" + @echo " make mig_series7 : create xilinx memory controller using coregen." + @echo " make mig_series7_clean : remove generated memory controller" + @echo + @echo " ================================================================" + @echo " Quick start guide for simulation of systest.c" + @echo + @echo " 1. Setup search paths for Xilinx, GCC and Modelsim " + @echo " 2. make vsim" + @echo " 3. make mig_series7" + @echo " 4. make soft" + @echo " 5. make vsim-launch" + @echo + @echo " Please note that this quick start guide will compile and simulate" + @echo " a preconfigured version of the leon3 processor system." + @echo " For customizing the leon3 susbsystem run make 'xconfig'" + @echo " ================================================================" + @echo diff --git a/designs/leon3-xilinx-vc707/README.txt b/designs/leon3-xilinx-vc707/README.txt new file mode 100644 index 00000000..4a2b1e36 --- /dev/null +++ b/designs/leon3-xilinx-vc707/README.txt @@ -0,0 +1,224 @@ +This leon3 design is tailored to the Xilinx Virtex-7 VC707 board + +http://www.xilinx.com/vc707 + +Simulation and synthesis +------------------------ + +The design uses the Xilinx MIG memory interface with an AHB-2.0 +interface. The MIG source code cannot be distributed due to the +prohibitive Xilinx license, so the MIG must be re-generated with +coregen before simulation and synthesis can be done. + +To generate the MIG and install the Xilinx unisim simulation +library, do as follows: + + make vsim + make mig_series7 + +To simulate and run systest.c on the Leon design using the memory +controller from Xilinx use the make targets: + + make soft + make vsim-launch + +With the generic USE_MIG_INTERFACE_MODEL can the user select to use the real +XILINX memory contoller + MICRON memory model or a simplified model. For speed +select the simplified model by setting the generic USE_MIG_INTERFACE_MODEL to TRUE. + +Synthesis will ONLY work with Vivado 2012.02 installed or newer, and +the XILINX variable properly set in the shell. To synthesize the design, do + + make vivado + +and then + + make vivado-prog-fpga + + or use xilinx programming tool + + impact -b vivado/leon3-xilinx-vc707/leon3-xilinx-vc707.runs/impl_1/leon3mp.bit + +to program the FPGA. + +The MIG can be disabled either by deselecting the MIG controller in 'xconfig' or +manually editing the config.vhd file. When no MIG is present in the system normal +GRLIB flow can be used and no extra compile steps are needed. Also when when no +MIG is present it is possible to control and set the system frequency via xconfig. +Note that the system frequency can be modified via Xilinx Coregen when the +MIG is present. + +Compiling and launching modelsim when no memory controller is present: + + make vsim + make vsim-launch + +Simulation options +------------------ + +All options are set either by editing the testbench or specify/modify the generic +default value when launching the simulator. For Modelsim use the option "-g" i.e. +to enable processor disassembly to console launch modelsim with the option: "-gdisas=1" + +USE_MIG_INTERFACE_MODEL - Use MIG simulation model for faster simulation run time + +disas - Enable processor disassembly to console + +DEBUG - Enable extra debug information when using Micron DDR3 models + +Design specifics +---------------- + +* Synthesis should be done using Vivado 2012.02 or newer + +* The DDR3 controller is implemented with Xilinx MIG Series7 1.6 and + runs of the 200 MHz clock. The DDR3 memory runs at 400 MHz + (DDR3-800). grmon-2.0.30-74 or later is needed to detect the + DDR3 memory. + +* The AHB clock is generated by the MMCM module in the DDR3 + controller, and can be controlled via Coregen. When the + MIG DDR3 controller isn't present the AHB clock is generated + from CLKGEN, and can be controlled via xconfig + +* System reset is mapped to the CPU RESET button + +* DSU break is mapped to GPIO east button + +* LED 0 indicates processor in debug mode + +* LED 1 indicates processor in error mode, execution halted + +* LED 2 indicates DDR3 PHY initialization done (Only valid when MIG is present) + +* LED 3 indicates internal PLL has locked (Only valid when MIG isn't present) + +* 16-bit flash prom can be read at address 0. It can be programmed + with GRMON version 2.0.30-74 or later. + +* The system can be simulated with xilinxs memory interface in normal or fast mode. + For normal mode i.e. with the MIG IP and Memory models from MICRON all simulaion libraries + needs to be installed and compiled with the following command: Please, note the MIG Series7 + only have to be generated if it is going to be used in the system. + + make vsim + make mig_series7 + + Then rebuild the scripts and simulation model: + + make distclean vsim + + Modelsim v10.1 or newer is required and simulate Xilinx memory + controller for Series 7. + + The normal leon3 test bench can be executed as the DDR3 model + is pre-loading with the systest. A model of the DDR3 interface + exist and can be used for faster simulations and software debug + +* The application UART1 is connected to the USB/RS232 connector + +* The JTAG DSU interface is enabled and accesible via the JTAG port. + Start grmon with -xilusb to connect. + + +* Output from GRMON is: + + grmon -xilusb + + GRMON2 LEON debug monitor v2.0.30-149-ga91ee12 internal version + + Copyright (C) 2012 Aeroflex Gaisler - All rights reserved. + For latest updates, go to http://www.gaisler.com/ + Comments or bug-reports to support@gaisler.com + + +Parsing -xilusb +Xilusb: Cable type/rev : 0x3 + JTAG chain (1): xc7vx485t + +Commands missing help: + debug + + GRLIB build version: 4118 + Detected frequency: 100 MHz + + Component Vendor + LEON3 SPARC V8 Processor Aeroflex Gaisler + AHB Debug UART Aeroflex Gaisler + JTAG Debug Link Aeroflex Gaisler + LEON2 Memory Controller European Space Agency + AHB/APB Bridge Aeroflex Gaisler + LEON3 Debug Support Unit Aeroflex Gaisler + Single-port AHB SRAM module Aeroflex Gaisler + Unknown device Aeroflex Gaisler + Single-port AHB SRAM module Aeroflex Gaisler + Generic UART Aeroflex Gaisler + Multi-processor Interrupt Ctrl. Aeroflex Gaisler + Modular Timer Unit Aeroflex Gaisler + AMBA Wrapper for OC I2C-master Aeroflex Gaisler + General Purpose I/O port Aeroflex Gaisler + + Use command 'info sys' to print a detailed report of attached cores + +grmon2> info sys + cpu0 Aeroflex Gaisler LEON3 SPARC V8 Processor + AHB Master 0 + ahbuart0 Aeroflex Gaisler AHB Debug UART + AHB Master 1 + APB: 80000700 - 80000800 + Baudrate 115200, AHB frequency 100.00 MHz + ahbjtag0 Aeroflex Gaisler JTAG Debug Link + AHB Master 2 + mctrl0 European Space Agency LEON2 Memory Controller + AHB: 00000000 - 20000000 + APB: 80000000 - 80000100 + 16-bit prom @ 0x00000000 + apbmst0 Aeroflex Gaisler AHB/APB Bridge + AHB: 80000000 - 80100000 + dsu0 Aeroflex Gaisler LEON3 Debug Support Unit + AHB: 90000000 - A0000000 + AHB trace: 256 lines, 32-bit bus + CPU0: win 8, hwbp 2, itrace 256, V8 mul/div, srmmu, lddel 1 + stack pointer 0x20000ff0 + icache 4 * 8 kB, 32 B/line dir + dcache 4 * 8 kB, 32 B/line dir + ahbram0 Aeroflex Gaisler Single-port AHB SRAM module + AHB: 20000000 - 20100000 + 32-bit static ram: 4 kB @ 0x20000000 + adev7 Aeroflex Gaisler Unknown device + AHB: 40000000 - 48000000 + APB: 80000400 - 80000500 + ahbram1 Aeroflex Gaisler Single-port AHB SRAM module + AHB: A0000000 - A0100000 + 32-bit static ram: 4 kB @ 0xa0000000 + uart0 Aeroflex Gaisler Generic UART + APB: 80000100 - 80000200 + IRQ: 2 + Baudrate 38343 + irqmp0 Aeroflex Gaisler Multi-processor Interrupt Ctrl. + APB: 80000200 - 80000300 + gptimer0 Aeroflex Gaisler Modular Timer Unit + APB: 80000300 - 80000400 + IRQ: 8 + 8-bit scalar, 2 * 32-bit timers, divisor 100 + i2cmst0 Aeroflex Gaisler AMBA Wrapper for OC I2C-master + APB: 80000800 - 80000900 + IRQ: 11 + gpio0 Aeroflex Gaisler General Purpose I/O port + APB: 80000A00 - 80000B00 + +grmon2> load systest.exe + 40000000 .text 112.2kB / 112.2kB [===============>] 100% + 40020000 .data 163.1kB / 163.1kB [===============>] 100% + Total size: 275.28kB (1.19Mbit/s) + Entry point 0x40000000 + Image /home/ringhage/grlib_git/designs/leon3-xilinx-vc707/systest.exe loaded + +grmon2> verify systest.exe + 40000000 .text 112.2kB / 112.2kB [===============>] 100% + 40020000 .data 163.1kB / 163.1kB [===============>] 100% + Total size: 275.28kB (85.23kbit/s) + Entry point 0x40000000 + Image of /home/ringhage/grlib_git/designs/leon3-xilinx-vc707/systest.exe verified without errors + +grmon2> diff --git a/designs/leon3-xilinx-vc707/ahb2mig.vhd b/designs/leon3-xilinx-vc707/ahb2mig.vhd new file mode 100644 index 00000000..bde8c45b --- /dev/null +++ b/designs/leon3-xilinx-vc707/ahb2mig.vhd @@ -0,0 +1,708 @@ +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler +-- +-- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +------------------------------------------------------------------------------- +-- Entity: ahb2mig +-- File: ahb2mig.vhd +-- Author: Fredrik Ringhage - Aeroflex Gaisler AB +-- +-- This is a AHB-2.0 interface for the Xilinx Virtex-7 MIG. +-- +------------------------------------------------------------------------------- + +library ieee,work; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +library grlib; +use grlib.amba.all; +use grlib.stdlib.all; +use grlib.devices.all; + +entity ahb2mig is + generic( + hindex : integer := 0; + haddr : integer := 0; + hmask : integer := 16#f00#; + pindex : integer := 0; + paddr : integer := 0; + pmask : integer := 16#fff#; + maxwriteburst : integer := 8; + maxreadburst : integer := 8; + SIM_BYPASS_INIT_CAL : string := "OFF"; + SIMULATION : string := "FALSE"; + USE_MIG_INTERFACE_MODEL : boolean := false + ); + port( + ddr3_dq : inout std_logic_vector(63 downto 0); + ddr3_dqs_p : inout std_logic_vector(7 downto 0); + ddr3_dqs_n : inout std_logic_vector(7 downto 0); + ddr3_addr : out std_logic_vector(13 downto 0); + ddr3_ba : out std_logic_vector(2 downto 0); + ddr3_ras_n : out std_logic; + ddr3_cas_n : out std_logic; + ddr3_we_n : out std_logic; + ddr3_reset_n : out std_logic; + ddr3_ck_p : out std_logic_vector(0 downto 0); + ddr3_ck_n : out std_logic_vector(0 downto 0); + ddr3_cke : out std_logic_vector(0 downto 0); + ddr3_cs_n : out std_logic_vector(0 downto 0); + ddr3_dm : out std_logic_vector(7 downto 0); + ddr3_odt : out std_logic_vector(0 downto 0); + ahbso : out ahb_slv_out_type; + ahbsi : in ahb_slv_in_type; + apbi : in apb_slv_in_type; + apbo : out apb_slv_out_type; + calib_done : out std_logic; + rst_n_syn : in std_logic; + rst_n_async : in std_logic; + clk_amba : in std_logic; + sys_clk_p : in std_logic; + sys_clk_n : in std_logic; + ui_clk : out std_logic; + ui_clk_sync_rst : out std_logic + ); +end ; + +architecture rtl of ahb2mig is + +type bstate_type is (idle, start, read_cmd, read_data, read_output, write_cmd, write_burst); + +constant hconfig : ahb_config_type := ( + 0 => ahb_device_reg ( VENDOR_GAISLER, GAISLER_MIGDDR3, 0, 0, 0), + 4 => ahb_membar(haddr, '1', '1', hmask), + others => zero32); + +constant pconfig : apb_config_type := ( + 0 => ahb_device_reg ( VENDOR_GAISLER, GAISLER_MIGDDR3, 0, 0, 0), + 1 => apb_iobar(paddr, pmask)); + +type reg_type is record + bstate : bstate_type; + cmd : std_logic_vector(2 downto 0); + cmd_en : std_logic; + wr_en : std_logic; + wr_end : std_logic; + cmd_count : unsigned(6 downto 0); + wr_count : unsigned(6 downto 0); + rd_count : unsigned(6 downto 0); + hready : std_logic; + hwrite : std_logic; + hwdata : std_logic_vector(31 downto 0); + hwdata_burst : std_logic_vector(1023 downto 0); + mask_burst : std_logic_vector(127 downto 0); + htrans : std_logic_vector(1 downto 0); + hburst : std_logic_vector(2 downto 0); + hsize : std_logic_vector(2 downto 0); + hrdata : std_logic_vector(31 downto 0); + haddr : std_logic_vector(31 downto 0); + haddr_start : std_logic_vector(31 downto 0); + haddr_burst : std_logic_vector(31 downto 0); + hmaster : std_logic_vector(3 downto 0); + int_buffer : unsigned(1024-1 downto 0); + rd_buffer : unsigned(1024-1 downto 0); + wdf_data_buffer : std_logic_vector(511 downto 0); + wdf_mask_buffer : std_logic_vector(63 downto 0); +end record; + +type mig_in_type is record + cmd_en : std_logic; + app_addr : std_logic_vector(27 downto 0); + app_cmd : std_logic_vector(2 downto 0); + app_en : std_logic; + app_wdf_data : std_logic_vector(511 downto 0); + app_wdf_end : std_logic; + app_wdf_mask : std_logic_vector(63 downto 0); + app_wdf_wren : std_logic; +end record; + +type mig_out_type is record + app_rd_data : std_logic_vector(511 downto 0); + app_rd_data_end : std_logic; + app_rd_data_valid : std_logic; + app_rdy : std_logic; + app_wdf_rdy : std_logic; +end record; + +signal r, rin : reg_type; +signal migin : mig_in_type; +signal migout,migoutraw : mig_out_type; + +component mig is + generic( + SIM_BYPASS_INIT_CAL : string := "OFF"; + SIMULATION : string := "FALSE" + ); + port ( + ddr3_dq : inout std_logic_vector(63 downto 0); + ddr3_addr : out std_logic_vector(13 downto 0); + ddr3_ba : out std_logic_vector(2 downto 0); + ddr3_ras_n : out std_logic; + ddr3_cas_n : out std_logic; + ddr3_we_n : out std_logic; + ddr3_reset_n : out std_logic; + ddr3_dqs_n : inout std_logic_vector(7 downto 0); + ddr3_dqs_p : inout std_logic_vector(7 downto 0); + ddr3_ck_p : out std_logic_vector(0 downto 0); + ddr3_ck_n : out std_logic_vector(0 downto 0); + ddr3_cke : out std_logic_vector(0 downto 0); + ddr3_cs_n : out std_logic_vector(0 downto 0); + ddr3_dm : out std_logic_vector(7 downto 0); + ddr3_odt : out std_logic_vector(0 downto 0); + sys_clk_p : in std_logic; + sys_clk_n : in std_logic; + app_addr : in std_logic_vector(27 downto 0); + app_cmd : in std_logic_vector(2 downto 0); + app_en : in std_logic; + app_wdf_data : in std_logic_vector(511 downto 0); + app_wdf_end : in std_logic; + app_wdf_mask : in std_logic_vector(63 downto 0); + app_wdf_wren : in std_logic; + app_rd_data : out std_logic_vector(511 downto 0); + app_rd_data_end : out std_logic; + app_rd_data_valid : out std_logic; + app_rdy : out std_logic; + app_wdf_rdy : out std_logic; + app_sr_req : in std_logic; + app_sr_active : out std_logic; + app_ref_req : in std_logic; + app_ref_ack : out std_logic; + app_zq_req : in std_logic; + app_zq_ack : out std_logic; + ui_clk : out std_logic; + ui_clk_sync_rst : out std_logic; + init_calib_complete : out std_logic; + sys_rst : in std_logic + ); +end component mig; + +component mig_interface_model is + port ( + app_addr : in std_logic_vector(27 downto 0); + app_cmd : in std_logic_vector(2 downto 0); + app_en : in std_logic; + app_wdf_data : in std_logic_vector(511 downto 0); + app_wdf_end : in std_logic; + app_wdf_mask : in std_logic_vector(63 downto 0); + app_wdf_wren : in std_logic; + app_rd_data : out std_logic_vector(511 downto 0); + app_rd_data_end : out std_logic; + app_rd_data_valid : out std_logic; + app_rdy : out std_logic; + app_wdf_rdy : out std_logic; + ui_clk : out std_logic; + ui_clk_sync_rst : out std_logic; + init_calib_complete : out std_logic; + sys_rst : in std_logic + ); +end component mig_interface_model; + + +begin + + comb: process( rst_n_syn, r, ahbsi, migout ) + + -- Design temp variables + variable v : reg_type; + variable wmask : std_logic_vector(3 downto 0); + variable writedata : std_logic_vector(31 downto 0); + variable shift_steps : natural; + variable hrdata_temp : unsigned(v.rd_buffer'length-1 downto 0); + variable hrdata_shift_steps : natural; + variable shift_steps_write : natural; + variable shift_steps_write_mask : natural; + + begin + + -- Make all register visible for the statemachine + v := r; + + case r.bstate is + when idle => + + -- Clear Read data response + v.hrdata := (others => '0'); + + -- Clear old pointers and MIG command signals + v.cmd := (others => '0'); + v.cmd_en := '0'; + v.wr_en := '0'; + v.wr_end := '0'; + v.hready := '1'; + v.hwrite := '0'; + v.hwdata_burst := (others => '0'); + v.mask_burst := (others => '0'); + v.rd_count := (others => '0'); + + -- Check if this is a single or burst transfer (and not a BUSY transfer) + if ((ahbsi.hready and ahbsi.hsel(hindex) and ahbsi.htrans(1)) = '1' + and (ahbsi.hwrite = '0' or ahbsi.hwrite = '1' )) then + + -- Hold info regarding transaction and execute + v.hburst := ahbsi.hburst; + v.hwrite := ahbsi.hwrite; + v.hsize := ahbsi.hsize; + v.hmaster := ahbsi.hmaster; + v.hready := '0'; + v.htrans := ahbsi.htrans; + v.bstate := start; + v.haddr := "0" & "000000" & ahbsi.haddr(27 downto 6) & "000"; + v.haddr_start := ahbsi.haddr; + v.cmd := (others => '0'); + v.cmd(0) := not ahbsi.hwrite; + + end if; + + when start => + -- Check if a write command shall be issued to the DDR3 memory + if r.hwrite = '1' then + + case r.hsize is + when "000" => + case r.haddr_start(1 downto 0) is + when "00" => wmask := "0010"; + when "01" => wmask := "0001"; + when "10" => wmask := "1000"; + when others => wmask := "0100"; + end case; + + when "001" => + case r.haddr_start(1) is + when '0' => wmask := "0011"; + when others => wmask := "1100"; + end case; + when "010" => wmask := "1111"; + when others => wmask := "1111"; + end case; + + -- Work out write offset/start + if ((r.htrans = "11") or ahbsi.htrans = "11") then + shift_steps_write := to_integer(unsigned(v.rd_count - 2)&"00000") + + to_integer(unsigned(r.haddr_start(5 downto 2))&"00000"); + shift_steps_write_mask := to_integer(unsigned(v.rd_count - 2)&"00") + + to_integer(unsigned(r.haddr_start(5 downto 2))&"00") ; + else + shift_steps_write := to_integer(unsigned(v.rd_count)&"00000") + + to_integer(unsigned(r.haddr_start(5 downto 2))&"00000"); + shift_steps_write_mask := to_integer(unsigned(v.rd_count)&"00") + + to_integer(unsigned(r.haddr_start(5 downto 2))&"00") ; + end if; + + if (ahbsi.htrans = "11") then + v.htrans := "11"; + end if; + + -- generate mask for complete burst + v.mask_burst := v.mask_burst or std_logic_vector(shift_left(resize(unsigned(wmask), + v.mask_burst'length),shift_steps_write_mask)); + + -- fetch all wdata before write to memory can begin + writedata := ahbsi.hwdata(15 downto 0) & ahbsi.hwdata(31 downto 16); + v.hwdata_burst := v.hwdata_burst or std_logic_vector(shift_left(resize(unsigned(writedata), + v.hwdata_burst'length ) ,shift_steps_write)); + + -- Check if this is acont burst longer than internal buffer + if (ahbsi.htrans = "11") then + + if ((v.rd_count < maxwriteburst) and (v.rd_count > 0)) then + v.hready := '1'; + else + v.hready := '0'; + end if; + + if (v.rd_count >= maxwriteburst) and (r.hready = '0') then + if (r.htrans = "11") then + v.bstate := write_cmd; + end if; + v.htrans := ahbsi.htrans; + v.haddr_burst := ahbsi.haddr; + end if; + + else + v.bstate := write_cmd; + v.htrans := ahbsi.htrans; + end if; + + -- Else issue a read command when ready + else + if migout.app_rdy = '1' and migout.app_wdf_rdy = '1' then + v.cmd := "001"; + v.bstate := read_cmd; + v.htrans := ahbsi.htrans; + v.cmd_count := to_unsigned(0,v.cmd_count'length); + + -- Always do a read burst + if (ahbsi.htrans /= "11") then + v.rd_count := to_unsigned(0,v.rd_count'length); + else + v.rd_count := to_unsigned(1,v.rd_count'length); + end if; + end if; + end if; + + when write_cmd => + -- Check if burst has ended due to max size burst + if (ahbsi.hsel(hindex) = '0') then + v.htrans := (others => '0'); + end if; + + -- Stop when addr and write command is accepted by mig + if (v.wr_count >= 2) and (v.cmd_count >= 2) then + if (r.htrans /= "11") then + --v.bstate := idle; + if ((ahbsi.hsel(hindex) = '1') and (ahbsi.htrans = "11")) then + -- Hold info regarding transaction and execute + v.hburst := ahbsi.hburst; + v.hwrite := ahbsi.hwrite; + v.hsize := ahbsi.hsize; + v.hmaster := ahbsi.hmaster; + v.hready := '0'; + v.htrans := ahbsi.htrans; + v.bstate := start; + + -- Need to work-out the offset by looking at transfer size + if (ahbsi.hsize = "000") then + v.haddr_start := ahbsi.haddr - 1; + elsif (ahbsi.hsize = "001") then + v.haddr_start := ahbsi.haddr - 2; + else + v.haddr_start := ahbsi.haddr - 4; + end if; + + v.haddr := "0"&"000000" & v.haddr_start(27 downto 6)&"000"; + v.cmd := (others => '0'); + v.cmd(0) := not ahbsi.hwrite; + v.hwdata_burst := (others => '0'); + v.mask_burst := (others => '0'); + v.rd_count := (others => '0'); + v.cmd_count := (others => '0'); + v.wr_count := (others => '0'); + v.rd_count := (others => '0'); + else + v.bstate := idle; + end if; + + else -- Cont burst and work out new offset for next write command + v.bstate := write_burst; + v.haddr := "0" & "000000" & r.haddr_burst(27 downto 6) & "000"; + v.haddr_start := r.haddr_burst; + end if; + end if; + + when write_burst => + v.bstate := start; + v.hready := '1'; + + when read_cmd => + v.hready := '0'; + + v.rd_count := (others => '0'); + + -- stop when read command is accepted ny mig. + if (v.cmd_count >= 2) then + v.bstate := read_data; + end if; + + when read_data => + + -- We are not ready yet so issue a read command to the memory controller + v.hready := '0'; + + -- If read data is valid store data in buffers + if (migout.app_rd_data_valid = '1') then + if (v.rd_count = 0) then + v.int_buffer(511 downto 0) := unsigned(migout.app_rd_data); + v.rd_count := to_unsigned(1,v.rd_count'length); + -- Check if this wasn't a burst command + if (v.htrans /= "11") then + v.rd_count := to_unsigned(2,v.rd_count'length); + v.int_buffer(1023 downto 512) := (others => '0'); + end if; + else + v.int_buffer(1023 downto 512) := unsigned(migout.app_rd_data); + v.rd_count := to_unsigned(2,v.rd_count'length); + end if; + end if; + + if (v.rd_count >= 2) then + shift_steps := to_integer(unsigned(r.haddr_start(5 downto 2))&"00000"); + v.rd_buffer := shift_right(v.int_buffer,shift_steps); + v.bstate := read_output; + v.rd_count := to_unsigned(0,v.rd_count'length); + end if; + + when read_output => + -- Data is fetched from memory and ready to be transfered + v.hready := '1'; + + -- uses the "wr_count" signal to keep track of number of bytes output'd to AHB + -- Select correct 32bit to output + hrdata_shift_steps := to_integer(v.wr_count & "00000"); + hrdata_temp := shift_right(v.rd_buffer,hrdata_shift_steps); + + case r.hsize is + when "000" => + case r.haddr_start(1 downto 0) is + when "11" => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(23 downto 16) + & hrdata_temp(23 downto 16) & hrdata_temp(23 downto 16) & hrdata_temp(23 downto 16)); + when "10" => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(31 downto 24) + & hrdata_temp(31 downto 24) & hrdata_temp(31 downto 24) & hrdata_temp(31 downto 24)); + when "01" => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(7 downto 0) + & hrdata_temp(7 downto 0) & hrdata_temp(7 downto 0) & hrdata_temp(7 downto 0)); + when others => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(15 downto 8) + & hrdata_temp(15 downto 8) & hrdata_temp(15 downto 8) & hrdata_temp(15 downto 8)); + end case; + when "001" => + case r.haddr_start(1) is + when '1' => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(31 downto 16) + & hrdata_temp(31 downto 16)); + when others => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(15 downto 0) + & hrdata_temp(15 downto 0)); + end case; + when "010" => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(15 downto 0) & hrdata_temp(31 downto 16)); + when others => v.hrdata(31 downto 0) := std_logic_vector(hrdata_temp(15 downto 0) & hrdata_temp(31 downto 16)); + end case; + + -- Count number of bytes send + v.wr_count := v.wr_count + 1; + + -- Check if this was the last transaction + if (v.wr_count >= maxreadburst) then + v.bstate := idle; + v.wr_count := (others => '0'); + end if; + + -- Check if transfer was interrupted or no burst + if (ahbsi.htrans = "00") or ((ahbsi.htrans = "10") and (v.wr_count < 7)) then + v.bstate := idle; + v.wr_count := (others => '0'); + end if; + + when others => + v.bstate := idle; + end case; + + if ((ahbsi.hsel(hindex) = '0') and ((r.bstate = write_cmd) or (r.bstate = write_burst) or (r.bstate = start))) then + v.hready := '0'; + elsif ((ahbsi.htrans /= "11") and (r.bstate = start)) then + v.hready := '0'; + end if; + + if rst_n_syn = '0' then + v.bstate := idle; v.hready := '1'; v.cmd_en := '0'; v.wr_en := '0'; v.wr_end := '0'; + end if; + + rin <= v; + + end process; + + comb_hready: process(r, ahbsi) + begin + if ((ahbsi.hsel(hindex) = '0') and ((r.bstate = write_cmd) or (r.bstate = write_burst) or (r.bstate = start))) then + ahbso.hready <= '0'; + elsif ((ahbsi.htrans /= "11") and (r.bstate = start)) then + ahbso.hready <= '0'; + else + ahbso.hready <= r.hready; + end if; + end process; + + ahbso.hresp <= "00"; --r.hresp; + ahbso.hrdata <= r.hrdata; + + migin.app_addr <= r.haddr(27 downto 2) & "00"; + migin.app_cmd <= r.cmd; + migin.app_en <= r.cmd_en; + + migin.app_wdf_data <= r.wdf_data_buffer; + migin.app_wdf_end <= r.wr_end; + migin.app_wdf_mask <= r.wdf_mask_buffer; + migin.app_wdf_wren <= r.wr_en; + + ahbso.hconfig <= hconfig; + ahbso.hirq <= (others => '0'); + ahbso.hindex <= hindex; + ahbso.hsplit <= (others => '0'); + + apbo.pindex <= pindex; + apbo.pconfig <= pconfig; + apbo.pirq <= (others => '0'); + apbo.prdata <= (others => '0'); + + regs : process(clk_amba) + begin + if rising_edge(clk_amba) then + + -- Copy variables into registers (Default values) + r <= rin; + + -- add extra pipe-stage for read data + migout <= migoutraw; + + -- IDLE Clear + if r.bstate = idle then + r.cmd_count <= (others => '0'); + r.wr_count <= (others => '0'); + r.rd_count <= (others => '0'); + end if; + + -- Read AHB write data + if (r.bstate = start) and (r.hwrite = '1') then + if ((r.htrans = "11") and (r.rd_count = 0)) then + r.rd_count <= (others => '0'); + r.htrans <= "10"; + else + r.rd_count <= r.rd_count + 1; + end if; + end if; + + -- Write command repsonse + if r.bstate = write_cmd then + if (r.cmd_count < 1) then + r.cmd_en <= '1'; + end if; + if (migoutraw.app_rdy = '1') and (r.cmd_en = '1' ) then + r.cmd_count <= r.cmd_count + 1; + if (r.cmd_count = 0 ) then + r.haddr <= r.haddr + 8; + end if; + if (r.cmd_count >= 1) then + r.cmd_en <= '0'; + end if; + end if; + if (r.wr_count < 1 ) then + r.wr_en <= '1'; + r.wr_end <= '1'; + r.wdf_mask_buffer <= not r.mask_burst(63 downto 0); + r.wdf_data_buffer <= r.hwdata_burst(511 downto 0); + end if; + if (migoutraw.app_wdf_rdy = '1') and (r.wr_en = '1' ) then + r.wdf_mask_buffer <= not r.mask_burst(127 downto 64); + r.wdf_data_buffer <= r.hwdata_burst(1023 downto 512); + r.wr_count <= r.wr_count + 1; + if (r.wr_count >= 1 ) then + r.wr_en <= '0'; + r.wr_end <= '0'; + end if; + end if; + end if; + + -- Burst Write Wait + if r.bstate = write_burst then + r.cmd_count <= (others => '0'); + r.wr_count <= (others => '0'); + r.rd_count <= (others => '0'); + -- To make it easier to debug + r.mask_burst <= (others => '0'); + r.hwdata_burst <= (others => '0'); + end if; + + -- Read command repsonse + if r.bstate = read_cmd then + if (r.cmd_count < 1) then + r.cmd_en <= '1'; + end if; + if (migoutraw.app_rdy = '1') and (r.cmd_en = '1' ) then + r.cmd_count <= r.cmd_count + 1; + if (r.cmd_count = 0 ) then + r.haddr <= r.haddr + 8; + if (ahbsi.htrans /= "11") then + r.cmd_en <= '0'; + r.cmd_count <= to_unsigned(2,r.cmd_count'length); + end if; + end if; + if (r.cmd_count >= 1) then + r.cmd_en <= '0'; + end if; + end if; + end if; + end if; + end process; + + gen_mig : if (USE_MIG_INTERFACE_MODEL /= true) generate + MCB_inst : mig + generic map( + SIM_BYPASS_INIT_CAL => SIM_BYPASS_INIT_CAL, + SIMULATION => SIMULATION) + port map ( + ddr3_dq => ddr3_dq, + ddr3_dqs_p => ddr3_dqs_p, + ddr3_dqs_n => ddr3_dqs_n, + ddr3_addr => ddr3_addr, + ddr3_ba => ddr3_ba, + ddr3_ras_n => ddr3_ras_n, + ddr3_cas_n => ddr3_cas_n, + ddr3_we_n => ddr3_we_n, + ddr3_reset_n => ddr3_reset_n, + ddr3_ck_p => ddr3_ck_p, + ddr3_ck_n => ddr3_ck_n, + ddr3_cke => ddr3_cke, + ddr3_cs_n => ddr3_cs_n, + ddr3_dm => ddr3_dm, + ddr3_odt => ddr3_odt, + sys_clk_p => sys_clk_p, + sys_clk_n => sys_clk_n, + app_addr => migin.app_addr, + app_cmd => migin.app_cmd, + app_en => migin.app_en, + app_rdy => migoutraw.app_rdy, + app_wdf_data => migin.app_wdf_data, + app_wdf_end => migin.app_wdf_end, + app_wdf_mask => migin.app_wdf_mask, + app_wdf_wren => migin.app_wdf_wren, + app_wdf_rdy => migoutraw.app_wdf_rdy, + app_rd_data => migoutraw.app_rd_data, + app_rd_data_end => migoutraw.app_rd_data_end, + app_rd_data_valid => migoutraw.app_rd_data_valid, + app_sr_req => '0', + app_sr_active => open, + app_ref_req => '0', + app_ref_ack => open, + app_zq_req => '0', + app_zq_ack => open, + ui_clk => ui_clk, + ui_clk_sync_rst => ui_clk_sync_rst, + init_calib_complete => calib_done, + sys_rst => rst_n_async + ); + end generate gen_mig; + + gen_mig_model : if (USE_MIG_INTERFACE_MODEL = true) generate + MCB_model_inst : mig_interface_model + port map ( + -- user interface signals + app_addr => migin.app_addr, + app_cmd => migin.app_cmd, + app_en => migin.app_en, + app_rdy => migoutraw.app_rdy, + app_wdf_data => migin.app_wdf_data, + app_wdf_end => migin.app_wdf_end, + app_wdf_mask => migin.app_wdf_mask, + app_wdf_wren => migin.app_wdf_wren, + app_wdf_rdy => migoutraw.app_wdf_rdy, + app_rd_data => migoutraw.app_rd_data, + app_rd_data_end => migoutraw.app_rd_data_end, + app_rd_data_valid => migoutraw.app_rd_data_valid, + ui_clk => ui_clk, + ui_clk_sync_rst => ui_clk_sync_rst, + init_calib_complete => calib_done, + sys_rst => rst_n_async + ); + end generate gen_mig_model; + + +end; diff --git a/designs/leon3-xilinx-vc707/ahbrom.vhd b/designs/leon3-xilinx-vc707/ahbrom.vhd new file mode 100644 index 00000000..ac26c7b2 --- /dev/null +++ b/designs/leon3-xilinx-vc707/ahbrom.vhd @@ -0,0 +1,231 @@ + +---------------------------------------------------------------------------- +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2009 Aeroflex Gaisler +---------------------------------------------------------------------------- +-- Entity: ahbrom +-- File: ahbrom.vhd +-- Author: Jiri Gaisler - Gaisler Research +-- Description: AHB rom. 0/1-waitstate read +---------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; +library grlib; +use grlib.amba.all; +use grlib.stdlib.all; +use grlib.devices.all; + +entity ahbrom is + generic ( + hindex : integer := 0; + haddr : integer := 0; + hmask : integer := 16#fff#; + pipe : integer := 0; + tech : integer := 0; + kbytes : integer := 1); + port ( + rst : in std_ulogic; + clk : in std_ulogic; + ahbsi : in ahb_slv_in_type; + ahbso : out ahb_slv_out_type + ); +end; + +architecture rtl of ahbrom is +constant abits : integer := 10; +constant bytes : integer := 560; + +constant hconfig : ahb_config_type := ( + 0 => ahb_device_reg ( VENDOR_GAISLER, GAISLER_AHBROM, 0, 0, 0), + 4 => ahb_membar(haddr, '1', '1', hmask), others => zero32); + +signal romdata : std_logic_vector(31 downto 0); +signal addr : std_logic_vector(abits-1 downto 2); +signal hsel, hready : std_ulogic; + +begin + + ahbso.hresp <= "00"; + ahbso.hsplit <= (others => '0'); + ahbso.hirq <= (others => '0'); + ahbso.hconfig <= hconfig; + ahbso.hindex <= hindex; + + reg : process (clk) + begin + if rising_edge(clk) then + addr <= ahbsi.haddr(abits-1 downto 2); + end if; + end process; + + p0 : if pipe = 0 generate + ahbso.hrdata <= ahbdrivedata(romdata); + ahbso.hready <= '1'; + end generate; + + p1 : if pipe = 1 generate + reg2 : process (clk) + begin + if rising_edge(clk) then + hsel <= ahbsi.hsel(hindex) and ahbsi.htrans(1); + hready <= ahbsi.hready; + ahbso.hready <= (not rst) or (hsel and hready) or + (ahbsi.hsel(hindex) and not ahbsi.htrans(1) and ahbsi.hready); + ahbso.hrdata <= ahbdrivedata(romdata); + end if; + end process; + end generate; + + comb : process (addr) + begin + case conv_integer(addr) is + when 16#00000# => romdata <= X"81D82000"; + when 16#00001# => romdata <= X"03000004"; + when 16#00002# => romdata <= X"821060E0"; + when 16#00003# => romdata <= X"81884000"; + when 16#00004# => romdata <= X"81900000"; + when 16#00005# => romdata <= X"81980000"; + when 16#00006# => romdata <= X"81800000"; + when 16#00007# => romdata <= X"A1800000"; + when 16#00008# => romdata <= X"01000000"; + when 16#00009# => romdata <= X"03002040"; + when 16#0000A# => romdata <= X"8210600F"; + when 16#0000B# => romdata <= X"C2A00040"; + when 16#0000C# => romdata <= X"84100000"; + when 16#0000D# => romdata <= X"01000000"; + when 16#0000E# => romdata <= X"01000000"; + when 16#0000F# => romdata <= X"01000000"; + when 16#00010# => romdata <= X"01000000"; + when 16#00011# => romdata <= X"01000000"; + when 16#00012# => romdata <= X"80108002"; + when 16#00013# => romdata <= X"01000000"; + when 16#00014# => romdata <= X"01000000"; + when 16#00015# => romdata <= X"01000000"; + when 16#00016# => romdata <= X"01000000"; + when 16#00017# => romdata <= X"01000000"; + when 16#00018# => romdata <= X"87444000"; + when 16#00019# => romdata <= X"8608E01F"; + when 16#0001A# => romdata <= X"88100000"; + when 16#0001B# => romdata <= X"8A100000"; + when 16#0001C# => romdata <= X"8C100000"; + when 16#0001D# => romdata <= X"8E100000"; + when 16#0001E# => romdata <= X"A0100000"; + when 16#0001F# => romdata <= X"A2100000"; + when 16#00020# => romdata <= X"A4100000"; + when 16#00021# => romdata <= X"A6100000"; + when 16#00022# => romdata <= X"A8100000"; + when 16#00023# => romdata <= X"AA100000"; + when 16#00024# => romdata <= X"AC100000"; + when 16#00025# => romdata <= X"AE100000"; + when 16#00026# => romdata <= X"90100000"; + when 16#00027# => romdata <= X"92100000"; + when 16#00028# => romdata <= X"94100000"; + when 16#00029# => romdata <= X"96100000"; + when 16#0002A# => romdata <= X"98100000"; + when 16#0002B# => romdata <= X"9A100000"; + when 16#0002C# => romdata <= X"9C100000"; + when 16#0002D# => romdata <= X"9E100000"; + when 16#0002E# => romdata <= X"86A0E001"; + when 16#0002F# => romdata <= X"16BFFFEF"; + when 16#00030# => romdata <= X"81E00000"; + when 16#00031# => romdata <= X"82102002"; + when 16#00032# => romdata <= X"81904000"; + when 16#00033# => romdata <= X"03000004"; + when 16#00034# => romdata <= X"821060E0"; + when 16#00035# => romdata <= X"81884000"; + when 16#00036# => romdata <= X"01000000"; + when 16#00037# => romdata <= X"01000000"; + when 16#00038# => romdata <= X"01000000"; + when 16#00039# => romdata <= X"83480000"; + when 16#0003A# => romdata <= X"8330600C"; + when 16#0003B# => romdata <= X"80886001"; + when 16#0003C# => romdata <= X"02800024"; + when 16#0003D# => romdata <= X"01000000"; + when 16#0003E# => romdata <= X"07000000"; + when 16#0003F# => romdata <= X"8610E178"; + when 16#00040# => romdata <= X"C108C000"; + when 16#00041# => romdata <= X"C118C000"; + when 16#00042# => romdata <= X"C518C000"; + when 16#00043# => romdata <= X"C918C000"; + when 16#00044# => romdata <= X"CD18C000"; + when 16#00045# => romdata <= X"D118C000"; + when 16#00046# => romdata <= X"D518C000"; + when 16#00047# => romdata <= X"D918C000"; + when 16#00048# => romdata <= X"DD18C000"; + when 16#00049# => romdata <= X"E118C000"; + when 16#0004A# => romdata <= X"E518C000"; + when 16#0004B# => romdata <= X"E918C000"; + when 16#0004C# => romdata <= X"ED18C000"; + when 16#0004D# => romdata <= X"F118C000"; + when 16#0004E# => romdata <= X"F518C000"; + when 16#0004F# => romdata <= X"F918C000"; + when 16#00050# => romdata <= X"FD18C000"; + when 16#00051# => romdata <= X"01000000"; + when 16#00052# => romdata <= X"01000000"; + when 16#00053# => romdata <= X"01000000"; + when 16#00054# => romdata <= X"01000000"; + when 16#00055# => romdata <= X"01000000"; + when 16#00056# => romdata <= X"89A00842"; + when 16#00057# => romdata <= X"01000000"; + when 16#00058# => romdata <= X"01000000"; + when 16#00059# => romdata <= X"01000000"; + when 16#0005A# => romdata <= X"01000000"; + when 16#0005B# => romdata <= X"10800005"; + when 16#0005C# => romdata <= X"01000000"; + when 16#0005D# => romdata <= X"01000000"; + when 16#0005E# => romdata <= X"00000000"; + when 16#0005F# => romdata <= X"00000000"; + when 16#00060# => romdata <= X"87444000"; + when 16#00061# => romdata <= X"8730E01C"; + when 16#00062# => romdata <= X"8688E00F"; + when 16#00063# => romdata <= X"12800015"; + when 16#00064# => romdata <= X"03200000"; + when 16#00065# => romdata <= X"05040E00"; + when 16#00066# => romdata <= X"8410A033"; + when 16#00067# => romdata <= X"C4204000"; + when 16#00068# => romdata <= X"0539AE1B"; + when 16#00069# => romdata <= X"8410A260"; + when 16#0006A# => romdata <= X"C4206004"; + when 16#0006B# => romdata <= X"050003FC"; + when 16#0006C# => romdata <= X"C4206008"; + when 16#0006D# => romdata <= X"82103860"; + when 16#0006E# => romdata <= X"C4004000"; + when 16#0006F# => romdata <= X"8530A00C"; + when 16#00070# => romdata <= X"03000004"; + when 16#00071# => romdata <= X"82106009"; + when 16#00072# => romdata <= X"80A04002"; + when 16#00073# => romdata <= X"12800005"; + when 16#00074# => romdata <= X"03200000"; + when 16#00075# => romdata <= X"0539A81B"; + when 16#00076# => romdata <= X"8410A260"; + when 16#00077# => romdata <= X"C4204000"; + when 16#00078# => romdata <= X"05000080"; + when 16#00079# => romdata <= X"82100000"; + when 16#0007A# => romdata <= X"80A0E000"; + when 16#0007B# => romdata <= X"02800005"; + when 16#0007C# => romdata <= X"01000000"; + when 16#0007D# => romdata <= X"82004002"; + when 16#0007E# => romdata <= X"10BFFFFC"; + when 16#0007F# => romdata <= X"8620E001"; + when 16#00080# => romdata <= X"3D1003FF"; + when 16#00081# => romdata <= X"BC17A3E0"; + when 16#00082# => romdata <= X"BC278001"; + when 16#00083# => romdata <= X"9C27A060"; + when 16#00084# => romdata <= X"03100000"; + when 16#00085# => romdata <= X"81C04000"; + when 16#00086# => romdata <= X"01000000"; + when 16#00087# => romdata <= X"01000000"; + when 16#00088# => romdata <= X"00000000"; + when 16#00089# => romdata <= X"00000000"; + when 16#0008A# => romdata <= X"00000000"; + when 16#0008B# => romdata <= X"00000000"; + when 16#0008C# => romdata <= X"00000000"; + when others => romdata <= (others => '-'); + end case; + end process; + -- pragma translate_off + bootmsg : report_version + generic map ("ahbrom" & tost(hindex) & + ": 32-bit AHB ROM Module, " & tost(bytes/4) & " words, " & tost(abits-2) & " address bits" ); + -- pragma translate_on + end; diff --git a/designs/leon3-ge-hpe-mini/config.help b/designs/leon3-xilinx-vc707/config.help similarity index 85% rename from designs/leon3-ge-hpe-mini/config.help rename to designs/leon3-xilinx-vc707/config.help index 6e34f972..0b647288 100644 --- a/designs/leon3-ge-hpe-mini/config.help +++ b/designs/leon3-xilinx-vc707/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -699,48 +732,6 @@ Programmable MAC/IP address CONFIG_DSU_ETH_PROG Say Y to make the LSB 4 bits of the EDCL MAC and IP address configurable using the ethi.edcladdr inputs. -PROM/SRAM memory controller -CONFIG_SRCTRL - Say Y here to enable a simple (and small) PROM/SRAM memory controller. - The controller has a fixed number of waitstates, and is primarily - intended for FPGA implementations. The RAM data bus is always 32 bits, - the PROM can be configured to either 8 or 32 bits (hardwired). - -8-bit memory support -CONFIG_SRCTRL_8BIT - If you say Y here, the simple PROM/SRAM memory controller will - implement 8-bit PROM mode. - -PROM waitstates -CONFIG_SRCTRL_PROMWS - Select the number of waitstates for PROM access. - -RAM waitstates -CONFIG_SRCTRL_RAMWS - Select the number of waitstates for RAM access. - -IO waitstates -CONFIG_SRCTRL_IOWS - Select the number of waitstates for IO access. - -Read-modify-write support -CONFIG_SRCTRL_RMW - Say Y here to perform byte- and half-word writes as a - read-modify-write sequence. This is necessary if your - SRAM does not have individual byte enables. If you are - unsure, it is safe to say Y. - -SRAM bank select -CONFIG_SRCTRL_SRBANKS - Select number of SRAM banks. - -SRAM bank size select -CONFIG_SRCTRL_BANKSZ - Select size of SRAM banks in kBytes. - -PROM address bit select -CONFIG_SRCTRL_ROMASEL - Select address bit for PROM bank decoding. Leon2 memory controller CONFIG_MCTRL_LEON2 Say Y here to enable the LEON2 memory controller. The controller @@ -817,6 +808,17 @@ CONFIG_MCTRL_PROGPAGE will allow to dynamically enable/disable page burst by setting bit 17 in MCFG2. +AHB status register +CONFIG_AHBSTAT_ENABLE + Say Y here to enable the AHB status register (AHBSTAT IP). + The register will latch the AHB address and master index when + an error response is returned by any AHB slave. + +SDRAM separate address buses +CONFIG_AHBSTAT_NFTSLV + The AHB status register can also latch the AHB address on an external + input. Select here how many of such inputs are required. + On-chip rom CONFIG_AHBROM_ENABLE Say Y here to add a block on on-chip rom to the AHB bus. The ram @@ -958,32 +960,25 @@ Watchdog time-out value CONFIG_GPT_WDOG This value will be loaded in the watchdog timer at reset. -ATA interface enable -CONFIG_ATA_ENABLE - Say Y here to enable the ATA interace from OpenCores. The core has one - AHB slave interface for accessing all control registers. - -ATA register address -CONFIG_ATAIO - The control registers of the ATA core occupy 256 byte, and are - mapped in the AHB bus I/O area (0xFFF00000 - 0xFFFFF000). This setting - defines at which address in the I/O area the registers appear (HADDR[19:8]). - -ATA interrupt -CONFIG_ATAIRQ - Defines which interrupt number the ATA core will generate. - -ATA DMA support -CONFIG_ATA_MWDMA - Say yes here to enable IDE multi-word DMA support (MWDMA). - This will increase transfer rate compared to the PIO mode, - but increase area with approxiamtely 5,000 gates. Note that - DMA is not supported by legacy CF cards, so it makes no sense - to enable it on CF card sockets. - -ATA DMA FIFO depth -CONFIG_ATA_FIFO - Defines the DMA FIFO depth. Choose 8 or 16. +GPIO port +CONFIG_GRGPIO_ENABLE + Say Y here to enable a general purpose I/O port. The port can be + configured from 1 - 32 bits, whith each port signal individually + programmable as input or output. The port signals can also serve + as interrupt inputs. + +GPIO port witdth +CONFIG_GRGPIO_WIDTH + Number of bits in the I/O port. Must be in the range of 1 - 32. + +GPIO interrupt mask +CONFIG_GRGPIO_IMASK + The I/O port interrupt mask defines which bits in the I/O port + should be able to create an interrupt. + +OpenCores I2C Master +CONFIG_I2C_ENABLE + Say Y here to enable the OpenCores I2C master. Text-mode VGA CONFIG_VGA_ENABLE Say Y here to enable a simple text-mode VGA controller. The controller @@ -1000,12 +995,74 @@ PS2 KBD interface CONFIG_KBD_ENABLE Say Y here to enable a PS/2 keyboard or mouse interface. -MultiIO Design -CONFIG_AHB2HPI_ENABLE - Say Y here to enable a simple bidirectional AHB2HPI bridge. -Digital-to-Analog-Converter -CONFIG_DAC_AHB_ENABLE - Say Y here to enable the Digital-to-Analog-Converter. +SPI memory controller +CONFIG_SPIMCTRL + Say Y here to enable a simple SPI memory controller. + The controller maps a SPI memory device into AMBA address space and + also has a simple interface that allows sending commands directly + to the SPI device. + +SD card support +CONFIG_SPIMCTRL_SDCARD + Memory device connected to controller is SD card. + +Read command +CONFIG_SPIMCTRL_READCMD + Read instruction for SPI memory device (hex). + +Dummy byte +CONFIG_SPIMCTRL_DUMMYBYTE + Output dummy byte after address when issuing read instruction. + +Dual output +CONFIG_SPIMCTRL_DUALOUTPUT + Memory device supports dual output when reading data. + +Address offset +CONFIG_SPIMCTRL_OFFSET + Offset that will be added by core on SPI memory address (hex). + +Clock scaler +CONFIG_SPIMCTRL_SCALER + Selects the divisor used when dividing the system clock to produce + the memory device clock. The divisor used is two to the power of the + specified value. This value must be at least 1. + +Alternate clock scaler +CONFIG_SPIMCTRL_ASCALER + Selects the divisor used when dividing the system clock to produce + the alternate memory device clock. If the selected memory device is + a SD Card this clock will be used during card initialization. The + divisor used is two to the power of the specified value. This + value must be at least 1. + +Power-up cnt +CONFIG_SPIMCTRL_PWRUPCNT + Number of system clock cycles to wait before issuing first command. +Gaisler Research SPI controller +CONFIG_SPICTRL_ENABLE + Say Y here to enable the SPI controller(s) + +CONFIG_SPICTRL_NUM + Number of SPI controllers to implement in design. Note that most + template designs are limited to one SPI controller. + Configuration options made here in xconfig will apply to all + implemented SPI controllers. + +CONFIG_SPICTRL_MAXWLEN + 0: Core will support lengths up to 32 bits + 1-2: Illegal values + 3-15: Maximum word length will be value+1 (4-16) + +CONFIG_SPICTRL_SYNCRAM + Say Y here to use SYNCRAM_2P components for the core's receive + and transmit queues. This is the recommended setting, particularly + if the core is implemented with support for automatic mode. + +CONFIG_SPICTRL_FT + Fault-tolerance for internal buffers. Only applicable if core + buffers are implemented with SYNCRAM components. + UART debugging CONFIG_DEBUG_UART During simulation, the output from the UARTs is printed on the diff --git a/designs/leon3-ge-hpe-mini-lattice/config.in b/designs/leon3-xilinx-vc707/config.in similarity index 75% rename from designs/leon3-ge-hpe-mini-lattice/config.in rename to designs/leon3-xilinx-vc707/config.in index 3e979b78..7f393c4e 100644 --- a/designs/leon3-ge-hpe-mini-lattice/config.in +++ b/designs/leon3-xilinx-vc707/config.in @@ -8,8 +8,10 @@ # #define_bool CONFIG_MCTRL_RMW y +define_bool CONFIG_LEON3FT_PRESENT y +define_bool CONFIG_HAS_SHARED_GRFPU y -mainmenu_name "LEON3MINI Design Configuration" +mainmenu_name "LEON3MP Xilinx VC707 Design Configuration" mainmenu_option next_comment comment 'Synthesis ' @@ -27,6 +29,7 @@ source lib/grlib/amba/amba.in mainmenu_option next_comment comment 'Debug Link ' source lib/gaisler/uart/dcom.in + source lib/gaisler/jtag/jtag.in source lib/gaisler/net/edcl.in endmenu @@ -34,10 +37,11 @@ mainmenu_option next_comment comment 'Peripherals ' mainmenu_option next_comment - comment 'Memory controllers ' - source lib/gaisler/memctrl/srctrl.in + comment 'Memory controller ' source lib/esa/memoryctrl/mctrl.in - source lib/gaisler/ddr/ddrctrl.in + source lib/gaisler/ddr/mig.in + source lib/gaisler/ddr/mig_series7.in + source lib/gaisler/misc/ahbstat.in endmenu mainmenu_option next_comment @@ -51,16 +55,13 @@ comment 'Peripherals ' source lib/gaisler/greth/greth.in endmenu - mainmenu_option next_comment - comment 'ATA ' - source lib/gaisler/ata/ata.in - endmenu - mainmenu_option next_comment comment 'UARTs, timers and irq control ' source lib/gaisler/uart/uart1.in source lib/gaisler/leon3/irqmp.in source lib/gaisler/misc/gptimer.in + source lib/gaisler/misc/grgpio.in + source lib/gaisler/i2c/i2c.in endmenu mainmenu_option next_comment @@ -68,6 +69,12 @@ comment 'Peripherals ' source lib/gaisler/misc/ps2vga.in endmenu + mainmenu_option next_comment + comment 'SPI' + source lib/gaisler/spi/spimctrl.in + source lib/gaisler/spi/spictrl.in + endmenu + endmenu mainmenu_option next_comment diff --git a/designs/leon3-ge-hpe-mini/config.vhd b/designs/leon3-xilinx-vc707/config.vhd similarity index 55% rename from designs/leon3-ge-hpe-mini/config.vhd rename to designs/leon3-xilinx-vc707/config.vhd index 39978b2d..0b07edd4 100644 --- a/designs/leon3-ge-hpe-mini/config.vhd +++ b/designs/leon3-xilinx-vc707/config.vhd @@ -1,9 +1,6 @@ - - - ----------------------------------------------------------------------------- -- LEON3 Demonstration design test bench configuration -- Copyright (C) 2009 Aeroflex Gaisler @@ -14,55 +11,16 @@ library techmap; use techmap.gencomp.all; package config is - - ----------------------------------------------------------------------------- - -- GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- - - -- boot prom source - -- 0: external - -- 1: internal - constant CFG_BOOTOPT : integer := 0; - - -- HPE board version - -- 1: version 1 - -- /= 1: version 2 - constant CFG_HPEVER : integer := 2; - - -- provide ahb signals for an external slave - -- slave number can be defined below - -- numbers 8 to 15 can be used safely, numbers below - -- might be used by other LEON cores depending on configuration - constant CFG_EXTAHB : integer := 0; - --- constant CFG_EXTAHB_ADDR : integer := 16#A00#; - - -- interrupt number the external slave is assigned to - -- unused at the moment - constant CFG_EXTAHB_IRQ : integer := 6; - - -- AHB slave number the external slave is assigned to - constant CFG_EXTAHB_NR : integer := 8; - - -- index number the external slave is assigned to - constant CFG_EXTAHB_ID : integer := 8; - - -- shift sdram address to bits 12+ - constant CFG_SDSHIFT : integer := 0; - - ----------------------------------------------------------------------------- - -- END GLEICHMANN SPECIFIC OPTIONS - ----------------------------------------------------------------------------- -- Technology and synthesis options - constant CFG_FABTECH : integer := altera; - constant CFG_MEMTECH : integer := altera; - constant CFG_PADTECH : integer := inferred; + constant CFG_FABTECH : integer := virtex7; + constant CFG_MEMTECH : integer := virtex7; + constant CFG_PADTECH : integer := virtex7; constant CFG_NOASYNC : integer := 0; constant CFG_SCAN : integer := 0; -- Clock generator - constant CFG_CLKTECH : integer := altera; + constant CFG_CLKTECH : integer := virtex7; constant CFG_CLKMUL : integer := (4); - constant CFG_CLKDIV : integer := (2); + constant CFG_CLKDIV : integer := (8); constant CFG_OCLKDIV : integer := 1; constant CFG_OCLKBDIV : integer := 0; constant CFG_OCLKCDIV : integer := 0; @@ -73,33 +31,33 @@ package config is constant CFG_LEON3 : integer := 1; constant CFG_NCPU : integer := (1); constant CFG_NWIN : integer := (8); - constant CFG_V8 : integer := 2 + 4*0; + constant CFG_V8 : integer := 16#32# + 4*0; constant CFG_MAC : integer := 0; - constant CFG_BP : integer := 0; + constant CFG_BP : integer := 1; constant CFG_SVT : integer := 0; constant CFG_RSTADDR : integer := 16#00000#; constant CFG_LDDEL : integer := (1); constant CFG_NOTAG : integer := 0; - constant CFG_NWP : integer := (0); + constant CFG_NWP : integer := (2); constant CFG_PWD : integer := 0*2; constant CFG_FPU : integer := 0 + 16*0 + 32*0; constant CFG_GRFPUSH : integer := 0; constant CFG_ICEN : integer := 1; - constant CFG_ISETS : integer := 1; - constant CFG_ISETSZ : integer := 4; + constant CFG_ISETS : integer := 4; + constant CFG_ISETSZ : integer := 8; constant CFG_ILINE : integer := 8; - constant CFG_IREPL : integer := 0; - constant CFG_ILOCK : integer := 0; + constant CFG_IREPL : integer := 3; + constant CFG_ILOCK : integer := 1; constant CFG_ILRAMEN : integer := 0; constant CFG_ILRAMADDR: integer := 16#8E#; constant CFG_ILRAMSZ : integer := 1; constant CFG_DCEN : integer := 1; - constant CFG_DSETS : integer := 1; - constant CFG_DSETSZ : integer := 4; + constant CFG_DSETS : integer := 4; + constant CFG_DSETSZ : integer := 8; constant CFG_DLINE : integer := 8; - constant CFG_DREPL : integer := 0; - constant CFG_DLOCK : integer := 0; - constant CFG_DSNOOP : integer := 1 + 0 + 4*0; + constant CFG_DREPL : integer := 3; + constant CFG_DLOCK : integer := 1; + constant CFG_DSNOOP : integer := 1 + 1 + 4*1; constant CFG_DFIXED : integer := 16#0#; constant CFG_DLRAMEN : integer := 0; constant CFG_DLRAMADDR: integer := 16#8F#; @@ -107,12 +65,12 @@ package config is constant CFG_MMUEN : integer := 1; constant CFG_ITLBNUM : integer := 8; constant CFG_DTLBNUM : integer := 8; - constant CFG_TLB_TYPE : integer := 0 + 0*2; + constant CFG_TLB_TYPE : integer := 0 + 1*2; constant CFG_TLB_REP : integer := 0; constant CFG_MMU_PAGE : integer := 0; constant CFG_DSU : integer := 1; - constant CFG_ITBSZ : integer := 1; - constant CFG_ATBSZ : integer := 1; + constant CFG_ITBSZ : integer := 4; + constant CFG_ATBSZ : integer := 4; constant CFG_LEON3FT_EN : integer := 0; constant CFG_IUFT_EN : integer := 0; constant CFG_FPUFT_EN : integer := 0; @@ -121,12 +79,12 @@ package config is constant CFG_CACHE_ERRINJ : integer := 0; constant CFG_LEON3_NETLIST: integer := 0; constant CFG_DISAS : integer := 0 + 0; - constant CFG_PCLOW : integer := 2; + constant CFG_PCLOW : integer := 0; -- AMBA settings constant CFG_DEFMST : integer := (0); constant CFG_RROBIN : integer := 1; constant CFG_SPLIT : integer := 0; - constant CFG_FPNPEN : integer := 0; + constant CFG_FPNPEN : integer := 1; constant CFG_AHBIO : integer := 16#FFF#; constant CFG_APBADDR : integer := 16#800#; constant CFG_AHB_MON : integer := 0; @@ -138,32 +96,34 @@ package config is -- JTAG based DSU interface constant CFG_AHB_JTAG : integer := 1; -- Ethernet DSU - constant CFG_DSU_ETH : integer := 1 + 0 + 0; - constant CFG_ETH_BUF : integer := 2; + constant CFG_DSU_ETH : integer := 0 + 0 + 0; + constant CFG_ETH_BUF : integer := 1; constant CFG_ETH_IPM : integer := 16#C0A8#; constant CFG_ETH_IPL : integer := 16#0033#; constant CFG_ETH_ENM : integer := 16#020000#; - constant CFG_ETH_ENL : integer := 16#00001F#; --- PROM/SRAM controller - constant CFG_SRCTRL : integer := 0; - constant CFG_SRCTRL_PROMWS : integer := 0; - constant CFG_SRCTRL_RAMWS : integer := 0; - constant CFG_SRCTRL_IOWS : integer := 0; - constant CFG_SRCTRL_RMW : integer := 0; - constant CFG_SRCTRL_8BIT : integer := 0; - constant CFG_SRCTRL_SRBANKS : integer := 1; - constant CFG_SRCTRL_BANKSZ : integer := 0; - constant CFG_SRCTRL_ROMASEL : integer := 0; + constant CFG_ETH_ENL : integer := 16#000009#; -- LEON2 memory controller constant CFG_MCTRL_LEON2 : integer := 1; - constant CFG_MCTRL_RAM8BIT : integer := 0; - constant CFG_MCTRL_RAM16BIT : integer := 0; + constant CFG_MCTRL_RAM8BIT : integer := 1; + constant CFG_MCTRL_RAM16BIT : integer := 1; constant CFG_MCTRL_5CS : integer := 0; - constant CFG_MCTRL_SDEN : integer := 1; + constant CFG_MCTRL_SDEN : integer := 0; constant CFG_MCTRL_SEPBUS : integer := 0; constant CFG_MCTRL_INVCLK : integer := 0; constant CFG_MCTRL_SD64 : integer := 0; constant CFG_MCTRL_PAGE : integer := 0 + 0; +-- Xilinx MIG + constant CFG_MIG_DDR2 : integer := 0; + constant CFG_MIG_RANKS : integer := 1; + constant CFG_MIG_COLBITS : integer := 10; + constant CFG_MIG_ROWBITS : integer := 13; + constant CFG_MIG_BANKBITS: integer := 2; + constant CFG_MIG_HMASK : integer := 16#F00#; +-- Xilinx MIG Series 7 + constant CFG_MIG_SERIES7 : integer := 1; +-- AHB status register + constant CFG_AHBSTAT : integer := 0; + constant CFG_AHBSTATN : integer := 1; -- AHB ROM constant CFG_AHBROMEN : integer := 0; constant CFG_AHBROPIP : integer := 0; @@ -171,19 +131,23 @@ package config is constant CFG_ROMADDR : integer := 16#000#; constant CFG_ROMMASK : integer := 16#E00# + 16#000#; -- AHB RAM - constant CFG_AHBRAMEN : integer := 0; - constant CFG_AHBRSZ : integer := 1; + constant CFG_AHBRAMEN : integer := 1; + constant CFG_AHBRSZ : integer := 4; constant CFG_AHBRADDR : integer := 16#A00#; + -- Gaisler Ethernet core - constant CFG_GRETH : integer := 1; + constant CFG_GRETH : integer := 0; constant CFG_GRETH1G : integer := 0; - constant CFG_ETH_FIFO : integer := 32; + constant CFG_ETH_FIFO : integer := 8; + -- UART 1 constant CFG_UART1_ENABLE : integer := 1; - constant CFG_UART1_FIFO : integer := 4; + constant CFG_UART1_FIFO : integer := 32; + -- LEON3 interrupt controller constant CFG_IRQ3_ENABLE : integer := 1; constant CFG_IRQ3_NSEC : integer := 0; + -- Modular timer constant CFG_GPT_ENABLE : integer := 1; constant CFG_GPT_NTIM : integer := (2); @@ -193,20 +157,45 @@ package config is constant CFG_GPT_SEPIRQ : integer := 1; constant CFG_GPT_WDOGEN : integer := 0; constant CFG_GPT_WDOG : integer := 16#0#; --- ATA interface - constant CFG_ATA : integer := 0; - constant CFG_ATAIO : integer := 16#0#; - constant CFG_ATAIRQ : integer := 0; - constant CFG_ATADMA : integer := 0; - constant CFG_ATAFIFO : integer := 8; + +-- GPIO port + constant CFG_GRGPIO_ENABLE : integer := 1; + constant CFG_GRGPIO_IMASK : integer := 16#0000#; + constant CFG_GRGPIO_WIDTH : integer := (8); + +-- I2C master + constant CFG_I2C_ENABLE : integer := 1; + -- VGA and PS2/ interface constant CFG_KBD_ENABLE : integer := 0; constant CFG_VGA_ENABLE : integer := 0; constant CFG_SVGA_ENABLE : integer := 0; --- AHB2HPI enable - constant CFG_AHB2HPI : integer := 1; --- DAC_AHB enable - constant CFG_DAC_AHB : integer := 1; + +-- SPI memory controller + constant CFG_SPIMCTRL : integer := 0; + constant CFG_SPIMCTRL_SDCARD : integer := 0; + constant CFG_SPIMCTRL_READCMD : integer := 16#0#; + constant CFG_SPIMCTRL_DUMMYBYTE : integer := 0; + constant CFG_SPIMCTRL_DUALOUTPUT : integer := 0; + constant CFG_SPIMCTRL_SCALER : integer := 1; + constant CFG_SPIMCTRL_ASCALER : integer := 1; + constant CFG_SPIMCTRL_PWRUPCNT : integer := 0; + constant CFG_SPIMCTRL_OFFSET : integer := 16#0#; + +-- SPI controller + constant CFG_SPICTRL_ENABLE : integer := 0; + constant CFG_SPICTRL_NUM : integer := 1; + constant CFG_SPICTRL_SLVS : integer := 1; + constant CFG_SPICTRL_FIFO : integer := 1; + constant CFG_SPICTRL_SLVREG : integer := 0; + constant CFG_SPICTRL_ODMODE : integer := 0; + constant CFG_SPICTRL_AM : integer := 0; + constant CFG_SPICTRL_ASEL : integer := 0; + constant CFG_SPICTRL_TWEN : integer := 0; + constant CFG_SPICTRL_MAXWLEN : integer := 0; + constant CFG_SPICTRL_SYNCRAM : integer := 0; + constant CFG_SPICTRL_FT : integer := 0; + -- GRLIB debugging constant CFG_DUART : integer := 0; end; diff --git a/designs/leon3-ge-hpe-mini/config.vhd.h b/designs/leon3-xilinx-vc707/config.vhd.h similarity index 75% rename from designs/leon3-ge-hpe-mini/config.vhd.h rename to designs/leon3-xilinx-vc707/config.vhd.h index ea9ea058..d3303929 100644 --- a/designs/leon3-ge-hpe-mini/config.vhd.h +++ b/designs/leon3-xilinx-vc707/config.vhd.h @@ -96,17 +96,6 @@ constant CFG_ETH_ENM : integer := 16#CONFIG_DSU_ETHMSB#; constant CFG_ETH_ENL : integer := 16#CONFIG_DSU_ETHLSB#; --- PROM/SRAM controller - constant CFG_SRCTRL : integer := CONFIG_SRCTRL; - constant CFG_SRCTRL_PROMWS : integer := CONFIG_SRCTRL_PROMWS; - constant CFG_SRCTRL_RAMWS : integer := CONFIG_SRCTRL_RAMWS; - constant CFG_SRCTRL_IOWS : integer := CONFIG_SRCTRL_IOWS; - constant CFG_SRCTRL_RMW : integer := CONFIG_SRCTRL_RMW; - constant CFG_SRCTRL_8BIT : integer := CONFIG_SRCTRL_8BIT; - - constant CFG_SRCTRL_SRBANKS : integer := CFG_SR_CTRL_SRBANKS; - constant CFG_SRCTRL_BANKSZ : integer := CFG_SR_CTRL_BANKSZ; - constant CFG_SRCTRL_ROMASEL : integer := CONFIG_SRCTRL_ROMASEL; -- LEON2 memory controller constant CFG_MCTRL_LEON2 : integer := CONFIG_MCTRL_LEON2; constant CFG_MCTRL_RAM8BIT : integer := CONFIG_MCTRL_8BIT; @@ -118,6 +107,22 @@ constant CFG_MCTRL_SD64 : integer := CONFIG_MCTRL_SDRAM_BUS64; constant CFG_MCTRL_PAGE : integer := CONFIG_MCTRL_PAGE + CONFIG_MCTRL_PROGPAGE; +-- Xilinx MIG + constant CFG_MIG_DDR2 : integer := CONFIG_MIG_DDR2; + constant CFG_MIG_RANKS : integer := CONFIG_MIG_RANKS; + constant CFG_MIG_COLBITS : integer := CONFIG_MIG_COLBITS; + constant CFG_MIG_ROWBITS : integer := CONFIG_MIG_ROWBITS; + constant CFG_MIG_BANKBITS: integer := CONFIG_MIG_BANKBITS; + constant CFG_MIG_HMASK : integer := 16#CONFIG_MIG_HMASK#; + + +-- Xilinx MIG Series 7 + constant CFG_MIG_SERIES7 : integer := CONFIG_MIG_SERIES7; + +-- AHB status register + constant CFG_AHBSTAT : integer := CONFIG_AHBSTAT_ENABLE; + constant CFG_AHBSTATN : integer := CONFIG_AHBSTAT_NFTSLV; + -- AHB ROM constant CFG_AHBROMEN : integer := CONFIG_AHBROM_ENABLE; constant CFG_AHBROPIP : integer := CONFIG_AHBROM_PIPE; @@ -153,23 +158,43 @@ constant CFG_GPT_WDOGEN : integer := CONFIG_GPT_WDOGEN; constant CFG_GPT_WDOG : integer := 16#CONFIG_GPT_WDOG#; --- ATA interface - constant CFG_ATA : integer := CONFIG_ATA_ENABLE; - constant CFG_ATAIO : integer := 16#CONFIG_ATAIO#; - constant CFG_ATAIRQ : integer := CONFIG_ATAIRQ; - constant CFG_ATADMA : integer := CONFIG_ATA_MWDMA; - constant CFG_ATAFIFO : integer := CONFIG_ATA_FIFO; +-- GPIO port + constant CFG_GRGPIO_ENABLE : integer := CONFIG_GRGPIO_ENABLE; + constant CFG_GRGPIO_IMASK : integer := 16#CONFIG_GRGPIO_IMASK#; + constant CFG_GRGPIO_WIDTH : integer := CONFIG_GRGPIO_WIDTH; + +-- I2C master + constant CFG_I2C_ENABLE : integer := CONFIG_I2C_ENABLE; -- VGA and PS2/ interface constant CFG_KBD_ENABLE : integer := CONFIG_KBD_ENABLE; constant CFG_VGA_ENABLE : integer := CONFIG_VGA_ENABLE; constant CFG_SVGA_ENABLE : integer := CONFIG_SVGA_ENABLE; --- AHB2HPI enable - constant CFG_AHB2HPI : integer := CONFIG_AHB2HPI_ENABLE; - --- DAC_AHB enable - constant CFG_DAC_AHB : integer := CONFIG_DAC_AHB_ENABLE; +-- SPI memory controller + constant CFG_SPIMCTRL : integer := CONFIG_SPIMCTRL; + constant CFG_SPIMCTRL_SDCARD : integer := CONFIG_SPIMCTRL_SDCARD; + constant CFG_SPIMCTRL_READCMD : integer := 16#CONFIG_SPIMCTRL_READCMD#; + constant CFG_SPIMCTRL_DUMMYBYTE : integer := CONFIG_SPIMCTRL_DUMMYBYTE; + constant CFG_SPIMCTRL_DUALOUTPUT : integer := CONFIG_SPIMCTRL_DUALOUTPUT; + constant CFG_SPIMCTRL_SCALER : integer := CONFIG_SPIMCTRL_SCALER; + constant CFG_SPIMCTRL_ASCALER : integer := CONFIG_SPIMCTRL_ASCALER; + constant CFG_SPIMCTRL_PWRUPCNT : integer := CONFIG_SPIMCTRL_PWRUPCNT; + constant CFG_SPIMCTRL_OFFSET : integer := 16#CONFIG_SPIMCTRL_OFFSET#; + +-- SPI controller + constant CFG_SPICTRL_ENABLE : integer := CONFIG_SPICTRL_ENABLE; + constant CFG_SPICTRL_NUM : integer := CONFIG_SPICTRL_NUM; + constant CFG_SPICTRL_SLVS : integer := CONFIG_SPICTRL_SLVS; + constant CFG_SPICTRL_FIFO : integer := CONFIG_SPICTRL_FIFO; + constant CFG_SPICTRL_SLVREG : integer := CONFIG_SPICTRL_SLVREG; + constant CFG_SPICTRL_ODMODE : integer := CONFIG_SPICTRL_ODMODE; + constant CFG_SPICTRL_AM : integer := CONFIG_SPICTRL_AM; + constant CFG_SPICTRL_ASEL : integer := CONFIG_SPICTRL_ASEL; + constant CFG_SPICTRL_TWEN : integer := CONFIG_SPICTRL_TWEN; + constant CFG_SPICTRL_MAXWLEN : integer := CONFIG_SPICTRL_MAXWLEN; + constant CFG_SPICTRL_SYNCRAM : integer := CONFIG_SPICTRL_SYNCRAM; + constant CFG_SPICTRL_FT : integer := CONFIG_SPICTRL_FT; -- GRLIB debugging constant CFG_DUART : integer := CONFIG_DEBUG_UART; diff --git a/designs/leon3-lattice-latticeECP3/config.vhd.in b/designs/leon3-xilinx-vc707/config.vhd.in similarity index 89% rename from designs/leon3-lattice-latticeECP3/config.vhd.in rename to designs/leon3-xilinx-vc707/config.vhd.in index 895ee7e0..0b22306b 100644 --- a/designs/leon3-lattice-latticeECP3/config.vhd.in +++ b/designs/leon3-xilinx-vc707/config.vhd.in @@ -3,7 +3,7 @@ ----------------------------------------------------------------------------- -- LEON3 Demonstration design test bench configuration --- Copyright (C) 2012 Aeroflex Gaisler +-- Copyright (C) 2009 Aeroflex Gaisler ------------------------------------------------------------------------------ @@ -15,4 +15,5 @@ package config is #include "config.vhd.h" + end; diff --git a/designs/leon3-xilinx-vc707/ddr_dummy.vhd b/designs/leon3-xilinx-vc707/ddr_dummy.vhd new file mode 100644 index 00000000..cf6a9d46 --- /dev/null +++ b/designs/leon3-xilinx-vc707/ddr_dummy.vhd @@ -0,0 +1,141 @@ +---------------------------------------------------------------------------- +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2012 Aeroflex Gaisler +---------------------------------------------------------------------------- +-- Package: ddr_dummy +-- File:ddr_dummy.vhd +-- Author:Fredrik Ringhage - Gaisler Research +-- Description: Xilinx MIG wrapper +------------------------------------------------------------------------------ + + +library ieee; +use ieee.std_logic_1164.all; +library techmap; +use techmap.gencomp.all; +-- pragma translate_off +library unisim; +use unisim.IBUF; +-- pragma translate_on + +library work; + +entity ddr_dummy is + generic ( + USE_MIG_INTERFACE_MODEL : boolean := false; + nCS_PER_RANK : integer := 1; -- # of unique CS outputs per rank + BANK_WIDTH : integer := 3; -- # of bank address + CKE_WIDTH : integer := 1; -- # of clock enable outputs + CS_WIDTH : integer := 1; -- # of chip select + DM_WIDTH : integer := 8; -- # of data mask + DQ_WIDTH : integer := 64; -- # of data bits + DQS_WIDTH : integer := 8; -- # of strobe pairs + ODT_WIDTH : integer := 1; -- # of ODT outputs + ROW_WIDTH : integer := 14 -- # of row/column address + ); + port ( + ddr_ck_p : out std_logic_vector(0 downto 0); + ddr_ck_n : out std_logic_vector(0 downto 0); + ddr_addr : out std_logic_vector(ROW_WIDTH-1 downto 0); + ddr_ba : out std_logic_vector(BANK_WIDTH-1 downto 0); + ddr_cas_n : out std_logic; + ddr_cke : out std_logic_vector(CKE_WIDTH-1 downto 0); + ddr_cs_n : out std_logic_vector(CS_WIDTH*nCS_PER_RANK-1 downto 0); + ddr_dm : out std_logic_vector(DM_WIDTH-1 downto 0); + ddr_odt : out std_logic_vector(ODT_WIDTH-1 downto 0); + ddr_ras_n : out std_logic; + ddr_we_n : out std_logic; + ddr_reset_n : out std_logic; + ddr_dq : inout std_logic_vector(DQ_WIDTH-1 downto 0); + ddr_dqs : inout std_logic_vector(DQS_WIDTH-1 downto 0); + ddr_dqs_n : inout std_logic_vector(DQS_WIDTH-1 downto 0) + ); +end; + +architecture rtl of ddr_dummy is + + component OBUF generic (IOSTANDARD : string := "SSTL15"); + port (O : out std_ulogic; I : in std_ulogic); + end component; + + component IOBUF generic (IOSTANDARD : string := "SSTL15_T_DCI"); + port (O : out std_ulogic; IO : inout std_logic; I, T : in std_ulogic); + end component; + + component OBUFDS generic(IOSTANDARD : string := "DIFF_SSTL15"); + port(O : out std_ulogic; OB : out std_ulogic; I : in std_ulogic); +end component; + + component IOBUFDS generic (IOSTANDARD : string := "DIFF_SSTL15"); + port (O : out std_ulogic; IO, IOB : inout std_logic; I, T : in std_ulogic); + end component; + + signal in_dq : std_logic_vector(DQ_WIDTH-1 downto 0); + signal in_dqs : std_logic_vector(DQS_WIDTH-1 downto 0); + +begin + + io_cas : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_cas_n, I => '0'); + + io_ras : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_ras_n, I => '0'); + + io_we : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_we_n, I => '0'); + + io_ck : OBUFDS generic map (IOSTANDARD => "DIFF_SSTL15") + port map (O => ddr_ck_p(0), OB => ddr_ck_n(0), I => '0'); + + io_addr_gen : for i in 0 to ROW_WIDTH-1 generate + begin + io_addr : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_addr(i), I => '0'); + end generate io_addr_gen; + + io_ba_gen : for i in 0 to BANK_WIDTH-1 generate + begin + io_addr : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_ba(i), I => '0'); + end generate io_ba_gen; + + io_cs_gen : for i in 0 to CS_WIDTH*nCS_PER_RANK-1 generate + begin + io_cs : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_cs_n(i), I => '0'); + end generate io_cs_gen; + + io_odt_gen : for i in 0 to ODT_WIDTH-1 generate + begin + io_odt : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_odt(i), I => '0'); + end generate io_odt_gen; + + io_dm_gen : for i in 0 to DM_WIDTH-1 generate + begin + io_dm : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_dm(i), I => '0'); + end generate io_dm_gen; + + io_cke_gen : for i in 0 to CKE_WIDTH-1 generate + begin + io_cke : OBUF generic map (IOSTANDARD => "SSTL15") + port map (O => ddr_cke(i), I => '0'); + end generate io_cke_gen; + + op_reset : OBUF generic map (IOSTANDARD => "LVCMOS15") + port map (O => ddr_reset_n, I => '1'); + + io_dq_gen : for i in 0 to DQ_WIDTH-1 generate + begin + io_dq : IOBUF generic map (IOSTANDARD => "SSTL15_T_DCI") + port map (O => in_dq(i), IO => ddr_dq(i), I => '0', T => '0'); + end generate io_dq_gen; + + io_dqs_gen : for i in 0 to DQS_WIDTH-1 generate + begin + io_dqs : IOBUFDS generic map (IOSTANDARD => "DIFF_SSTL15_T_DCI") + port map (O => in_dqs(i), IO => ddr_dqs(i), IOB => ddr_dqs_n(i), I => '0', T => '1'); + end generate io_dqs_gen; + +end architecture rtl; \ No newline at end of file diff --git a/designs/leon3-ge-hpe-mini-lattice/lconfig.tk b/designs/leon3-xilinx-vc707/lconfig.tk similarity index 66% rename from designs/leon3-ge-hpe-mini-lattice/lconfig.tk rename to designs/leon3-xilinx-vc707/lconfig.tk index 3b8844ec..fd06731a 100755 --- a/designs/leon3-ge-hpe-mini-lattice/lconfig.tk +++ b/designs/leon3-xilinx-vc707/lconfig.tk @@ -644,7 +644,7 @@ set active_menus [list] set processed_top_level 0 set ARCH sparc set menus_per_column 4 -set total_menus 23 +set total_menus 25 proc toplevel_menu {num} { if {$num == 4} then {return 3} @@ -663,10 +663,12 @@ proc toplevel_menu {num} { if {$num == 20} then {return 13} if {$num == 21} then {return 13} if {$num == 22} then {return 13} + if {$num == 23} then {return 22} + if {$num == 24} then {return 22} return $num } -mainmenu_name "LEON3MINI Design Configuration" +mainmenu_name "LEON3MP Xilinx VC707 Design Configuration" menu_option menu1 1 "Synthesis " proc menu1 {w title} { set oldFocus [focus] @@ -756,7 +758,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -766,7 +769,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -909,8 +914,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -929,6 +936,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1018,9 +1029,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1074,10 +1086,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1123,14 +1136,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1203,13 +1218,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1249,22 +1272,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1321,21 +1612,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1382,36 +1673,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1419,48 +1711,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1516,29 +1809,30 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 3 - bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST + bool $w.config.f 5 3 "Shared GRFPU " CONFIG_FPU_GRFPU_SH + global tmpvar_8 + minimenu $w.config.f 5 4 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 + menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" + $w.config.f.x4.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 3 + bool $w.config.f 5 5 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1577,17 +1871,22 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + global CONFIG_HAS_SHARED_GRFPU + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} } @@ -1595,34 +1894,39 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global CONFIG_HAS_SHARED_GRFPU + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then { + set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH&15]} else {set CONFIG_FPU_GRFPU_SH [expr $CONFIG_FPU_GRFPU_SH|16]} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1679,92 +1983,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1772,18 +2076,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1824,52 +2128,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1877,162 +2182,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2088,45 +2394,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2166,18 +2474,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2185,55 +2494,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2290,24 +2604,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2347,17 +2661,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2365,37 +2680,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2451,16 +2767,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2508,9 +2831,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2532,21 +2853,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2853,22 +3179,23 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART - bool $w.config.f 12 1 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 2 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 - menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" - menusplit $w $w.config.f.x2.x.menu 5 - hex $w.config.f 12 3 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB - hex $w.config.f 12 4 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB - hex $w.config.f 12 5 "MSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHMSB - hex $w.config.f 12 6 "LSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHLSB - bool $w.config.f 12 7 "Programmable 4-bit LSB of MAC/IP address" CONFIG_DSU_ETH_PROG - bool $w.config.f 12 8 "EDCL disable pin " CONFIG_DSU_ETH_DIS + bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG + bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 5 + hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB + hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB + hex $w.config.f 12 6 "MSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHMSB + hex $w.config.f 12 7 "LSB 24 bits of ethern number (hex) " CONFIG_DSU_ETHLSB + bool $w.config.f 12 8 "Programmable 4-bit LSB of MAC/IP address" CONFIG_DSU_ETH_PROG + bool $w.config.f 12 9 "EDCL disable pin " CONFIG_DSU_ETH_DIS @@ -2908,23 +3235,23 @@ proc update_menu12 {} { global CONFIG_GRETH_ENABLE global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { - configure_entry .menu12.config.f.x1 normal {n l y}} else {configure_entry .menu12.config.f.x1 disabled {y n l}} - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {configure_entry .menu12.config.f.x2 normal {x l}} else {configure_entry .menu12.config.f.x2 disabled {x l}} + configure_entry .menu12.config.f.x2 normal {n l y}} else {configure_entry .menu12.config.f.x2 disabled {y n l}} + if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {configure_entry .menu12.config.f.x3 normal {x l}} else {configure_entry .menu12.config.f.x3 disabled {x l}} global CONFIG_DSU_IPMSB - if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x3.l configure -state normal; } else {.menu12.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x3.l configure -state disabled} - global CONFIG_DSU_IPLSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x4.l configure -state normal; } else {.menu12.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x4.l configure -state disabled} - global CONFIG_DSU_ETHMSB + global CONFIG_DSU_IPLSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x5.l configure -state normal; } else {.menu12.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x5.l configure -state disabled} - global CONFIG_DSU_ETHLSB + global CONFIG_DSU_ETHMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x6.l configure -state normal; } else {.menu12.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x6.l configure -state disabled} + global CONFIG_DSU_ETHLSB + if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {.menu12.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu12.config.f.x7.l configure -state normal; } else {.menu12.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu12.config.f.x7.l configure -state disabled} global CONFIG_GRETH_GIGA global CONFIG_DSU_ETH_PROG if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - configure_entry .menu12.config.f.x7 normal {n l y}} else {configure_entry .menu12.config.f.x7 disabled {y n l}} + configure_entry .menu12.config.f.x8 normal {n l y}} else {configure_entry .menu12.config.f.x8 disabled {y n l}} global CONFIG_DSU_ETH_DIS if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - configure_entry .menu12.config.f.x8 normal {n l y}} else {configure_entry .menu12.config.f.x8 disabled {y n l}} + configure_entry .menu12.config.f.x9 normal {n l y}} else {configure_entry .menu12.config.f.x9 disabled {y n l}} } @@ -2935,17 +3262,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3015,12 +3342,12 @@ proc menu13 {w title} { pack $w.config.canvas -side right -fill y - submenu $w.config.f 13 0 "Memory controllers " 14 + submenu $w.config.f 13 0 "Memory controller " 14 submenu $w.config.f 13 1 "On-chip RAM/ROM " 18 submenu $w.config.f 13 2 "Ethernet " 19 - submenu $w.config.f 13 3 "ATA " 20 - submenu $w.config.f 13 4 "UARTs, timers and irq control " 21 - submenu $w.config.f 13 5 "Keybord and VGA interface" 22 + submenu $w.config.f 13 3 "UARTs, timers and irq control " 20 + submenu $w.config.f 13 4 "Keybord and VGA interface" 21 + submenu $w.config.f 13 5 "SPI" 22 @@ -3075,9 +3402,9 @@ proc menu14 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 14]] message $w.m -width 400 -aspect 300 -text \ - "Memory controllers " -relief raised + "Memory controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "Memory controllers " + wm title $w "Memory controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 14; break" set nextscript "catch {focus $oldFocus}; menu15 .menu15 \"$title\"" @@ -3117,9 +3444,11 @@ proc menu14 {w title} { pack $w.config.canvas -side right -fill y - submenu $w.config.f 14 0 "8/32-bit PROM/SRAM controller " 15 - submenu $w.config.f 14 1 "Leon2 memory controller " 16 - submenu $w.config.f 14 2 "Multi-port DDR controller " 17 + submenu $w.config.f 14 0 "Leon2 memory controller " 15 + submenu $w.config.f 14 1 "MIG memory controller " 16 + submenu $w.config.f 14 2 "MIG Series 7 memory controller " 17 + bool $w.config.f 14 3 "Enable AHB Status Register " CONFIG_AHBSTAT_ENABLE + int $w.config.f 14 4 "Number of correctable-error slaves " CONFIG_AHBSTAT_NFTSLV @@ -3157,12 +3486,18 @@ proc menu14 {w title} { } proc update_menu14 {} { + global CONFIG_AHBSTAT_ENABLE + global CONFIG_AHBSTAT_NFTSLV + if {($CONFIG_AHBSTAT_ENABLE == 1)} then {.menu14.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu14.config.f.x4.l configure -state normal; } else {.menu14.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu14.config.f.x4.l configure -state disabled} } proc update_define_menu14 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_AHBSTAT_ENABLE + global CONFIG_AHBSTAT_NFTSLV + if {($CONFIG_AHBSTAT_ENABLE == 1)} then {validate_int CONFIG_AHBSTAT_NFTSLV "$CONFIG_AHBSTAT_NFTSLV" 1} } @@ -3175,9 +3510,9 @@ proc menu15 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 15]] message $w.m -width 400 -aspect 300 -text \ - "8/32-bit PROM/SRAM controller " -relief raised + "Leon2 memory controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "8/32-bit PROM/SRAM controller " + wm title $w "Leon2 memory controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 15; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 15; menu16 .menu16 \"$title\"" @@ -3217,47 +3552,23 @@ proc menu15 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 15 0 "Enable 8/32-bit PROM/SRAM controller " CONFIG_SRCTRL - bool $w.config.f 15 1 "8-bit PROM interface " CONFIG_SRCTRL_8BIT - int $w.config.f 15 2 "PROM waitstates" CONFIG_SRCTRL_PROMWS - int $w.config.f 15 3 "RAM waitstates" CONFIG_SRCTRL_RAMWS - int $w.config.f 15 4 "IO waitstates" CONFIG_SRCTRL_IOWS - bool $w.config.f 15 5 "Use read-modify-write for sub-word writes " CONFIG_SRCTRL_RMW - global tmpvar_27 - minimenu $w.config.f 15 6 "SRAM banks" tmpvar_27 CONFIG_SRCTRL_SRBANKS1 - menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"SRAM banks\"" - $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_27 -value "3" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_27 -value "5" -command "update_active" - menusplit $w $w.config.f.x6.x.menu 5 - global tmpvar_28 - minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_28 CONFIG_SRCTRL_BANKSZ0 - menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"SRAM bank size (kb) (0 for programmable)\"" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_28 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_28 -value "256" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_28 -value "512" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_28 -value "1024" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_28 -value "2048" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_28 -value "4096" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_28 -value "8192" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_28 -value "16384" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_28 -value "32768" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_28 -value "65536" -command "update_active" - menusplit $w $w.config.f.x7.x.menu 14 - int $w.config.f 15 8 "PROM bank select address bit (0 - 28)" CONFIG_SRCTRL_ROMASEL + bool $w.config.f 15 0 "Enable Leon2 memory controller " CONFIG_MCTRL_LEON2 + bool $w.config.f 15 1 "8-bit PROM/SRAM bus support " CONFIG_MCTRL_8BIT + bool $w.config.f 15 2 "16-bit PROM/SRAM bus support " CONFIG_MCTRL_16BIT + bool $w.config.f 15 3 "5th SRAM chip-select " CONFIG_MCTRL_5CS + bool $w.config.f 15 4 "SDRAM controller " CONFIG_MCTRL_SDRAM + bool $w.config.f 15 5 "Separate address and data buses" CONFIG_MCTRL_SDRAM_SEPBUS + bool $w.config.f 15 6 "64-bit SDRAM data bus" CONFIG_MCTRL_SDRAM_BUS64 + bool $w.config.f 15 7 "Unsynchronized sdclock" CONFIG_MCTRL_SDRAM_INVCLK + bool $w.config.f 15 8 "Enable page burst operation " CONFIG_MCTRL_PAGE + bool $w.config.f 15 9 "Enable programmable page burst " CONFIG_MCTRL_PROGPAGE focus $w update_active global winx; global winy - if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers "} + if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controller "} set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks @@ -3288,84 +3599,68 @@ proc menu15 {w title} { } proc update_menu15 {} { - global CONFIG_SRCTRL - global CONFIG_SRCTRL_8BIT - if {($CONFIG_SRCTRL == 1)} then { + global CONFIG_MCTRL_LEON2 + global CONFIG_MCTRL_8BIT + if {($CONFIG_MCTRL_LEON2 == 1)} then { configure_entry .menu15.config.f.x1 normal {n l y}} else {configure_entry .menu15.config.f.x1 disabled {y n l}} - global CONFIG_SRCTRL_PROMWS - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x2.l configure -state normal; } else {.menu15.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x2.l configure -state disabled} - global CONFIG_SRCTRL_RAMWS - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x3.l configure -state normal; } else {.menu15.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x3.l configure -state disabled} - global CONFIG_SRCTRL_IOWS - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x4.l configure -state normal; } else {.menu15.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x4.l configure -state disabled} - global CONFIG_SRCTRL_RMW - if {($CONFIG_SRCTRL == 1)} then { + global CONFIG_MCTRL_16BIT + if {($CONFIG_MCTRL_LEON2 == 1)} then { + configure_entry .menu15.config.f.x2 normal {n l y}} else {configure_entry .menu15.config.f.x2 disabled {y n l}} + global CONFIG_MCTRL_5CS + if {($CONFIG_MCTRL_LEON2 == 1)} then { + configure_entry .menu15.config.f.x3 normal {n l y}} else {configure_entry .menu15.config.f.x3 disabled {y n l}} + global CONFIG_MCTRL_SDRAM + if {($CONFIG_MCTRL_LEON2 == 1)} then { + configure_entry .menu15.config.f.x4 normal {n l y}} else {configure_entry .menu15.config.f.x4 disabled {y n l}} + global CONFIG_MCTRL_SDRAM_SEPBUS + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { configure_entry .menu15.config.f.x5 normal {n l y}} else {configure_entry .menu15.config.f.x5 disabled {y n l}} - if {($CONFIG_SRCTRL == 1)} then {configure_entry .menu15.config.f.x6 normal {x l}} else {configure_entry .menu15.config.f.x6 disabled {x l}} - if {($CONFIG_SRCTRL == 1)} then {configure_entry .menu15.config.f.x7 normal {x l}} else {configure_entry .menu15.config.f.x7 disabled {x l}} - global CONFIG_SRCTRL_ROMASEL - if {($CONFIG_SRCTRL == 1)} then {.menu15.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu15.config.f.x8.l configure -state normal; } else {.menu15.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu15.config.f.x8.l configure -state disabled} + global CONFIG_MCTRL_SDRAM_BUS64 + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { + configure_entry .menu15.config.f.x6 normal {n l y}} else {configure_entry .menu15.config.f.x6 disabled {y n l}} + global CONFIG_MCTRL_SDRAM_INVCLK + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { + configure_entry .menu15.config.f.x7 normal {n l y}} else {configure_entry .menu15.config.f.x7 disabled {y n l}} + global CONFIG_MCTRL_PAGE + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { + configure_entry .menu15.config.f.x8 normal {n l y}} else {configure_entry .menu15.config.f.x8 disabled {y n l}} + global CONFIG_MCTRL_PROGPAGE + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { + configure_entry .menu15.config.f.x9 normal {n l y}} else {configure_entry .menu15.config.f.x9 disabled {y n l}} } proc update_define_menu15 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_SRCTRL - global CONFIG_SRCTRL_8BIT - if {($CONFIG_SRCTRL == 1)} then { - set CONFIG_SRCTRL_8BIT [expr $CONFIG_SRCTRL_8BIT&15]} else {set CONFIG_SRCTRL_8BIT [expr $CONFIG_SRCTRL_8BIT|16]} - global CONFIG_SRCTRL_PROMWS - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_PROMWS "$CONFIG_SRCTRL_PROMWS" 3} - global CONFIG_SRCTRL_RAMWS - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_RAMWS "$CONFIG_SRCTRL_RAMWS" 0} - global CONFIG_SRCTRL_IOWS - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_IOWS "$CONFIG_SRCTRL_IOWS" 0} - global CONFIG_SRCTRL_RMW - if {($CONFIG_SRCTRL == 1)} then { - set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW&15]} else {set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW|16]} - global tmpvar_27 - global CONFIG_SRCTRL_SRBANKS1 - if {$tmpvar_27 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} - global CONFIG_SRCTRL_SRBANKS2 - if {$tmpvar_27 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} - global CONFIG_SRCTRL_SRBANKS3 - if {$tmpvar_27 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} - global CONFIG_SRCTRL_SRBANKS4 - if {$tmpvar_27 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} - global CONFIG_SRCTRL_SRBANKS5 - if {$tmpvar_27 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} - global tmpvar_28 - global CONFIG_SRCTRL_BANKSZ0 - if {$tmpvar_28 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} - global CONFIG_SRCTRL_BANKSZ1 - if {$tmpvar_28 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} - global CONFIG_SRCTRL_BANKSZ2 - if {$tmpvar_28 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} - global CONFIG_SRCTRL_BANKSZ3 - if {$tmpvar_28 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} - global CONFIG_SRCTRL_BANKSZ4 - if {$tmpvar_28 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} - global CONFIG_SRCTRL_BANKSZ5 - if {$tmpvar_28 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} - global CONFIG_SRCTRL_BANKSZ6 - if {$tmpvar_28 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} - global CONFIG_SRCTRL_BANKSZ7 - if {$tmpvar_28 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} - global CONFIG_SRCTRL_BANKSZ8 - if {$tmpvar_28 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} - global CONFIG_SRCTRL_BANKSZ9 - if {$tmpvar_28 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} - global CONFIG_SRCTRL_BANKSZ10 - if {$tmpvar_28 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} - global CONFIG_SRCTRL_BANKSZ11 - if {$tmpvar_28 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} - global CONFIG_SRCTRL_BANKSZ12 - if {$tmpvar_28 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} - global CONFIG_SRCTRL_BANKSZ13 - if {$tmpvar_28 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} - global CONFIG_SRCTRL_ROMASEL - if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_ROMASEL "$CONFIG_SRCTRL_ROMASEL" 19} + global CONFIG_MCTRL_LEON2 + global CONFIG_MCTRL_8BIT + if {($CONFIG_MCTRL_LEON2 == 1)} then { + set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT&15]} else {set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT|16]} + global CONFIG_MCTRL_16BIT + if {($CONFIG_MCTRL_LEON2 == 1)} then { + set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT&15]} else {set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT|16]} + global CONFIG_MCTRL_5CS + if {($CONFIG_MCTRL_LEON2 == 1)} then { + set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS&15]} else {set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS|16]} + global CONFIG_MCTRL_SDRAM + if {($CONFIG_MCTRL_LEON2 == 1)} then { + set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM&15]} else {set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM|16]} + global CONFIG_MCTRL_SDRAM_SEPBUS + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { + set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS&15]} else {set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS|16]} + global CONFIG_MCTRL_SDRAM_BUS64 + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { + set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64&15]} else {set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64|16]} + global CONFIG_MCTRL_SDRAM_INVCLK + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { + set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK&15]} else {set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK|16]} + global CONFIG_MCTRL_PAGE + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { + set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE&15]} else {set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE|16]} + global CONFIG_MCTRL_PROGPAGE + if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { + set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE&15]} else {set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE|16]} } @@ -3378,9 +3673,9 @@ proc menu16 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 16]] message $w.m -width 400 -aspect 300 -text \ - "Leon2 memory controller " -relief raised + "MIG memory controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "Leon2 memory controller " + wm title $w "MIG memory controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 16; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 16; menu17 .menu17 \"$title\"" @@ -3420,23 +3715,19 @@ proc menu16 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 16 0 "Enable Leon2 memory controller " CONFIG_MCTRL_LEON2 - bool $w.config.f 16 1 "8-bit PROM/SRAM bus support " CONFIG_MCTRL_8BIT - bool $w.config.f 16 2 "16-bit PROM/SRAM bus support " CONFIG_MCTRL_16BIT - bool $w.config.f 16 3 "5th SRAM chip-select " CONFIG_MCTRL_5CS - bool $w.config.f 16 4 "SDRAM controller " CONFIG_MCTRL_SDRAM - bool $w.config.f 16 5 "Separate address and data buses" CONFIG_MCTRL_SDRAM_SEPBUS - bool $w.config.f 16 6 "64-bit SDRAM data bus" CONFIG_MCTRL_SDRAM_BUS64 - bool $w.config.f 16 7 "Unsynchronized sdclock" CONFIG_MCTRL_SDRAM_INVCLK - bool $w.config.f 16 8 "Enable page burst operation " CONFIG_MCTRL_PAGE - bool $w.config.f 16 9 "Enable programmable page burst " CONFIG_MCTRL_PROGPAGE + bool $w.config.f 16 0 "Enable Xilinx MIG memory controller" CONFIG_MIG_DDR2 + int $w.config.f 16 1 "Chip selects (ranks) " CONFIG_MIG_RANKS + int $w.config.f 16 2 "Column bits " CONFIG_MIG_COLBITS + int $w.config.f 16 3 "Row bits " CONFIG_MIG_ROWBITS + int $w.config.f 16 4 "Bank bits " CONFIG_MIG_BANKBITS + hex $w.config.f 16 5 "AHB HMASK " CONFIG_MIG_HMASK focus $w update_active global winx; global winy - if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers "} + if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controller "} set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks @@ -3467,68 +3758,34 @@ proc menu16 {w title} { } proc update_menu16 {} { - global CONFIG_MCTRL_LEON2 - global CONFIG_MCTRL_8BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu16.config.f.x1 normal {n l y}} else {configure_entry .menu16.config.f.x1 disabled {y n l}} - global CONFIG_MCTRL_16BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu16.config.f.x2 normal {n l y}} else {configure_entry .menu16.config.f.x2 disabled {y n l}} - global CONFIG_MCTRL_5CS - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu16.config.f.x3 normal {n l y}} else {configure_entry .menu16.config.f.x3 disabled {y n l}} - global CONFIG_MCTRL_SDRAM - if {($CONFIG_MCTRL_LEON2 == 1)} then { - configure_entry .menu16.config.f.x4 normal {n l y}} else {configure_entry .menu16.config.f.x4 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_SEPBUS - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - configure_entry .menu16.config.f.x5 normal {n l y}} else {configure_entry .menu16.config.f.x5 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_BUS64 - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - configure_entry .menu16.config.f.x6 normal {n l y}} else {configure_entry .menu16.config.f.x6 disabled {y n l}} - global CONFIG_MCTRL_SDRAM_INVCLK - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - configure_entry .menu16.config.f.x7 normal {n l y}} else {configure_entry .menu16.config.f.x7 disabled {y n l}} - global CONFIG_MCTRL_PAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - configure_entry .menu16.config.f.x8 normal {n l y}} else {configure_entry .menu16.config.f.x8 disabled {y n l}} - global CONFIG_MCTRL_PROGPAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { - configure_entry .menu16.config.f.x9 normal {n l y}} else {configure_entry .menu16.config.f.x9 disabled {y n l}} + global CONFIG_MIG_DDR2 + global CONFIG_MIG_RANKS + if {($CONFIG_MIG_DDR2 == 1)} then {.menu16.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x1.l configure -state normal; } else {.menu16.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x1.l configure -state disabled} + global CONFIG_MIG_COLBITS + if {($CONFIG_MIG_DDR2 == 1)} then {.menu16.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x2.l configure -state normal; } else {.menu16.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x2.l configure -state disabled} + global CONFIG_MIG_ROWBITS + if {($CONFIG_MIG_DDR2 == 1)} then {.menu16.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x3.l configure -state normal; } else {.menu16.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x3.l configure -state disabled} + global CONFIG_MIG_BANKBITS + if {($CONFIG_MIG_DDR2 == 1)} then {.menu16.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x4.l configure -state normal; } else {.menu16.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x4.l configure -state disabled} + global CONFIG_MIG_HMASK + if {($CONFIG_MIG_DDR2 == 1)} then {.menu16.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu16.config.f.x5.l configure -state normal; } else {.menu16.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu16.config.f.x5.l configure -state disabled} } proc update_define_menu16 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_MCTRL_LEON2 - global CONFIG_MCTRL_8BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT&15]} else {set CONFIG_MCTRL_8BIT [expr $CONFIG_MCTRL_8BIT|16]} - global CONFIG_MCTRL_16BIT - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT&15]} else {set CONFIG_MCTRL_16BIT [expr $CONFIG_MCTRL_16BIT|16]} - global CONFIG_MCTRL_5CS - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS&15]} else {set CONFIG_MCTRL_5CS [expr $CONFIG_MCTRL_5CS|16]} - global CONFIG_MCTRL_SDRAM - if {($CONFIG_MCTRL_LEON2 == 1)} then { - set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM&15]} else {set CONFIG_MCTRL_SDRAM [expr $CONFIG_MCTRL_SDRAM|16]} - global CONFIG_MCTRL_SDRAM_SEPBUS - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS&15]} else {set CONFIG_MCTRL_SDRAM_SEPBUS [expr $CONFIG_MCTRL_SDRAM_SEPBUS|16]} - global CONFIG_MCTRL_SDRAM_BUS64 - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64&15]} else {set CONFIG_MCTRL_SDRAM_BUS64 [expr $CONFIG_MCTRL_SDRAM_BUS64|16]} - global CONFIG_MCTRL_SDRAM_INVCLK - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_SDRAM_SEPBUS == 1)} then { - set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK&15]} else {set CONFIG_MCTRL_SDRAM_INVCLK [expr $CONFIG_MCTRL_SDRAM_INVCLK|16]} - global CONFIG_MCTRL_PAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then { - set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE&15]} else {set CONFIG_MCTRL_PAGE [expr $CONFIG_MCTRL_PAGE|16]} - global CONFIG_MCTRL_PROGPAGE - if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then { - set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE&15]} else {set CONFIG_MCTRL_PROGPAGE [expr $CONFIG_MCTRL_PROGPAGE|16]} + global CONFIG_MIG_DDR2 + global CONFIG_MIG_RANKS + if {($CONFIG_MIG_DDR2 == 1)} then {validate_int CONFIG_MIG_RANKS "$CONFIG_MIG_RANKS" 1} + global CONFIG_MIG_COLBITS + if {($CONFIG_MIG_DDR2 == 1)} then {validate_int CONFIG_MIG_COLBITS "$CONFIG_MIG_COLBITS" 10} + global CONFIG_MIG_ROWBITS + if {($CONFIG_MIG_DDR2 == 1)} then {validate_int CONFIG_MIG_ROWBITS "$CONFIG_MIG_ROWBITS" 13} + global CONFIG_MIG_BANKBITS + if {($CONFIG_MIG_DDR2 == 1)} then {validate_int CONFIG_MIG_BANKBITS "$CONFIG_MIG_BANKBITS" 2} + global CONFIG_MIG_HMASK + if {($CONFIG_MIG_DDR2 == 1)} then {validate_hex CONFIG_MIG_HMASK "$CONFIG_MIG_HMASK" F00} } @@ -3541,9 +3798,9 @@ proc menu17 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 17]] message $w.m -width 400 -aspect 300 -text \ - "Multi-port DDR controller " -relief raised + "MIG Series 7 memory controller " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "Multi-port DDR controller " + wm title $w "MIG Series 7 memory controller " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 17; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 17; catch {destroy .menu14}; unregister_active 14; menu18 .menu18 \"$title\"" @@ -3583,18 +3840,14 @@ proc menu17 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 17 0 "Enable DDR controller " CONFIG_DDRMP - int $w.config.f 17 1 "Number of chip selects (1 - 2) " CONFIG_DDRMP_NCS - int $w.config.f 17 2 "Number of devices per bank (1 - 16) " CONFIG_DDRMP_NDEV - int $w.config.f 17 3 "Data width per device (4 - 16) " CONFIG_DDRMP_NBITS - int $w.config.f 17 4 "Device size in Mbits (64 - 1024) " CONFIG_DDRMP_MBITS + bool $w.config.f 17 0 "Enable Xilinx DDR3 MIG memory controller" CONFIG_MIG_SERIES7 focus $w update_active global winx; global winy - if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controllers "} + if {[winfo exists .menu14] == 0} then {menu14 .menu14 "Memory controller "} set winx [expr [winfo x .menu14]+30]; set winy [expr [winfo y .menu14]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks @@ -3625,30 +3878,12 @@ proc menu17 {w title} { } proc update_menu17 {} { - global CONFIG_DDRMP - global CONFIG_DDRMP_NCS - if {($CONFIG_DDRMP == 1)} then {.menu17.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x1.l configure -state normal; } else {.menu17.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x1.l configure -state disabled} - global CONFIG_DDRMP_NDEV - if {($CONFIG_DDRMP == 1)} then {.menu17.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x2.l configure -state normal; } else {.menu17.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x2.l configure -state disabled} - global CONFIG_DDRMP_NBITS - if {($CONFIG_DDRMP == 1)} then {.menu17.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x3.l configure -state normal; } else {.menu17.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x3.l configure -state disabled} - global CONFIG_DDRMP_MBITS - if {($CONFIG_DDRMP == 1)} then {.menu17.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu17.config.f.x4.l configure -state normal; } else {.menu17.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu17.config.f.x4.l configure -state disabled} } proc update_define_menu17 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_DDRMP - global CONFIG_DDRMP_NCS - if {($CONFIG_DDRMP == 1)} then {validate_int CONFIG_DDRMP_NCS "$CONFIG_DDRMP_NCS" 1} - global CONFIG_DDRMP_NDEV - if {($CONFIG_DDRMP == 1)} then {validate_int CONFIG_DDRMP_NDEV "$CONFIG_DDRMP_NDEV" 2} - global CONFIG_DDRMP_NBITS - if {($CONFIG_DDRMP == 1)} then {validate_int CONFIG_DDRMP_NBITS "$CONFIG_DDRMP_NBITS" 16} - global CONFIG_DDRMP_MBITS - if {($CONFIG_DDRMP == 1)} then {validate_int CONFIG_DDRMP_MBITS "$CONFIG_DDRMP_MBITS" 64} } @@ -3936,9 +4171,9 @@ proc menu20 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 20]] message $w.m -width 400 -aspect 300 -text \ - "ATA " -relief raised + "UARTs, timers and irq control " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "ATA " + wm title $w "UARTs, timers and irq control " bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 20; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 20; menu21 .menu21 \"$title\"" @@ -3978,11 +4213,32 @@ proc menu20 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 20 0 "Enable ATA interface " CONFIG_ATA_ENABLE - hex $w.config.f 20 1 "ATA I/O area start address (haddr\[19:8\]) " CONFIG_ATAIO - int $w.config.f 20 2 "Interrupt number " CONFIG_ATAIRQ - bool $w.config.f 20 3 "Enable MWDMA support " CONFIG_ATA_MWDMA - int $w.config.f 20 4 "FIFO depth " CONFIG_ATA_FIFO + bool $w.config.f 20 0 "Enable console UART " CONFIG_UART1_ENABLE + global tmpvar_31 + minimenu $w.config.f 20 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 + menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + menusplit $w $w.config.f.x1.x.menu 6 + bool $w.config.f 20 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE + bool $w.config.f 20 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC + int $w.config.f 20 4 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC + bool $w.config.f 20 5 "Enable Timer Unit " CONFIG_GPT_ENABLE + int $w.config.f 20 6 "Number of timers (1 - 7) " CONFIG_GPT_NTIM + int $w.config.f 20 7 "Scaler width (2 - 16) " CONFIG_GPT_SW + int $w.config.f 20 8 "Timer width (2 - 32) " CONFIG_GPT_TW + int $w.config.f 20 9 "Timer unit interrupt " CONFIG_GPT_IRQ + bool $w.config.f 20 10 "Separate interrupts " CONFIG_GPT_SEPIRQ + bool $w.config.f 20 11 "Watchdog enable " CONFIG_GPT_WDOGEN + hex $w.config.f 20 12 "Initial watchdog time-out value " CONFIG_GPT_WDOG + bool $w.config.f 20 13 "Enable generic GPIO port " CONFIG_GRGPIO_ENABLE + int $w.config.f 20 14 "GPIO width " CONFIG_GRGPIO_WIDTH + hex $w.config.f 20 15 "GPIO interrupt mask " CONFIG_GRGPIO_IMASK + bool $w.config.f 20 16 "Enable I2C master " CONFIG_I2C_ENABLE @@ -4020,32 +4276,83 @@ proc menu20 {w title} { } proc update_menu20 {} { - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {.menu20.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x1.l configure -state normal; } else {.menu20.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x1.l configure -state disabled} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {.menu20.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x2.l configure -state normal; } else {.menu20.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x2.l configure -state disabled} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { + global CONFIG_UART1_ENABLE + if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu20.config.f.x1 normal {x l}} else {configure_entry .menu20.config.f.x1 disabled {x l}} + global CONFIG_IRQ3_ENABLE + global CONFIG_IRQ3_SEC + if {($CONFIG_IRQ3_ENABLE == 1)} then { configure_entry .menu20.config.f.x3 normal {n l y}} else {configure_entry .menu20.config.f.x3 disabled {y n l}} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {.menu20.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x4.l configure -state normal; } else {.menu20.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x4.l configure -state disabled} + global CONFIG_IRQ3_NSEC + if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu20.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x4.l configure -state normal; } else {.menu20.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x4.l configure -state disabled} + global CONFIG_GPT_ENABLE + global CONFIG_GPT_NTIM + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x6.l configure -state normal; } else {.menu20.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x6.l configure -state disabled} + global CONFIG_GPT_SW + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x7.l configure -state normal; } else {.menu20.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x7.l configure -state disabled} + global CONFIG_GPT_TW + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x8.l configure -state normal; } else {.menu20.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x8.l configure -state disabled} + global CONFIG_GPT_IRQ + if {($CONFIG_GPT_ENABLE == 1)} then {.menu20.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x9.l configure -state normal; } else {.menu20.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x9.l configure -state disabled} + global CONFIG_GPT_SEPIRQ + if {($CONFIG_GPT_ENABLE == 1)} then { + configure_entry .menu20.config.f.x10 normal {n l y}} else {configure_entry .menu20.config.f.x10 disabled {y n l}} + global CONFIG_GPT_WDOGEN + if {($CONFIG_GPT_ENABLE == 1)} then { + configure_entry .menu20.config.f.x11 normal {n l y}} else {configure_entry .menu20.config.f.x11 disabled {y n l}} + global CONFIG_GPT_WDOG + if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu20.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x12.l configure -state normal; } else {.menu20.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x12.l configure -state disabled} + global CONFIG_GRGPIO_ENABLE + global CONFIG_GRGPIO_WIDTH + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu20.config.f.x14.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x14.l configure -state normal; } else {.menu20.config.f.x14.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x14.l configure -state disabled} + global CONFIG_GRGPIO_IMASK + if {($CONFIG_GRGPIO_ENABLE == 1)} then {.menu20.config.f.x15.x configure -state normal -foreground [ cget .ref -foreground ]; .menu20.config.f.x15.l configure -state normal; } else {.menu20.config.f.x15.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu20.config.f.x15.l configure -state disabled} } proc update_define_menu20 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_ATA_ENABLE - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {validate_hex CONFIG_ATAIO "$CONFIG_ATAIO" A00} - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {validate_int CONFIG_ATAIRQ "$CONFIG_ATAIRQ" 10} - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then { - set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA&15]} else {set CONFIG_ATA_MWDMA [expr $CONFIG_ATA_MWDMA|16]} - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {validate_int CONFIG_ATA_FIFO "$CONFIG_ATA_FIFO" 8} + global tmpvar_31 + global CONFIG_UA1_FIFO1 + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + global CONFIG_UA1_FIFO2 + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + global CONFIG_UA1_FIFO4 + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + global CONFIG_UA1_FIFO8 + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + global CONFIG_UA1_FIFO16 + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + global CONFIG_UA1_FIFO32 + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + global CONFIG_IRQ3_ENABLE + global CONFIG_IRQ3_SEC + if {($CONFIG_IRQ3_ENABLE == 1)} then { + set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC&15]} else {set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC|16]} + global CONFIG_IRQ3_NSEC + if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {validate_int CONFIG_IRQ3_NSEC "$CONFIG_IRQ3_NSEC" 12} + global CONFIG_GPT_ENABLE + global CONFIG_GPT_NTIM + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_NTIM "$CONFIG_GPT_NTIM" 2} + global CONFIG_GPT_SW + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_SW "$CONFIG_GPT_SW" 8} + global CONFIG_GPT_TW + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_TW "$CONFIG_GPT_TW" 32} + global CONFIG_GPT_IRQ + if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_IRQ "$CONFIG_GPT_IRQ" 8} + global CONFIG_GPT_SEPIRQ + if {($CONFIG_GPT_ENABLE == 1)} then { + set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ&15]} else {set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ|16]} + global CONFIG_GPT_WDOGEN + if {($CONFIG_GPT_ENABLE == 1)} then { + set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN&15]} else {set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN|16]} + global CONFIG_GPT_WDOG + if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {validate_hex CONFIG_GPT_WDOG "$CONFIG_GPT_WDOG" FFFF} + global CONFIG_GRGPIO_ENABLE + global CONFIG_GRGPIO_WIDTH + if {($CONFIG_GRGPIO_ENABLE == 1)} then {validate_int CONFIG_GRGPIO_WIDTH "$CONFIG_GRGPIO_WIDTH" 8} + global CONFIG_GRGPIO_IMASK + if {($CONFIG_GRGPIO_ENABLE == 1)} then {validate_hex CONFIG_GRGPIO_IMASK "$CONFIG_GRGPIO_IMASK" 0000} } @@ -4058,9 +4365,9 @@ proc menu21 {w title} { global active_menus set active_menus [lsort -integer [linsert $active_menus end 21]] message $w.m -width 400 -aspect 300 -text \ - "UARTs, timers and irq control " -relief raised + "Keybord and VGA interface" -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "UARTs, timers and irq control " + wm title $w "Keybord and VGA interface" bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 21; break" set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 21; menu22 .menu22 \"$title\"" @@ -4100,28 +4407,9 @@ proc menu21 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 21 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_31 - minimenu $w.config.f 21 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 - menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" - menusplit $w $w.config.f.x1.x.menu 6 - bool $w.config.f 21 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE - bool $w.config.f 21 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC - int $w.config.f 21 4 "Secondary interrupt number (1 - 15) " CONFIG_IRQ3_NSEC - bool $w.config.f 21 5 "Enable Timer Unit " CONFIG_GPT_ENABLE - int $w.config.f 21 6 "Number of timers (1 - 7) " CONFIG_GPT_NTIM - int $w.config.f 21 7 "Scaler width (2 - 16) " CONFIG_GPT_SW - int $w.config.f 21 8 "Timer width (2 - 32) " CONFIG_GPT_TW - int $w.config.f 21 9 "Timer unit interrupt " CONFIG_GPT_IRQ - bool $w.config.f 21 10 "Separate interrupts " CONFIG_GPT_SEPIRQ - bool $w.config.f 21 11 "Watchdog enable " CONFIG_GPT_WDOGEN - hex $w.config.f 21 12 "Initial watchdog time-out value " CONFIG_GPT_WDOG + bool $w.config.f 21 0 "Keyboard/mouse (PS2) interface " CONFIG_KBD_ENABLE + bool $w.config.f 21 1 "Text-based VGA interface " CONFIG_VGA_ENABLE + bool $w.config.f 21 2 "SVGA graphical frame buffer " CONFIG_SVGA_ENABLE @@ -4159,100 +4447,292 @@ proc menu21 {w title} { } proc update_menu21 {} { - global CONFIG_UART1_ENABLE - if {($CONFIG_UART1_ENABLE == 1)} then {configure_entry .menu21.config.f.x1 normal {x l}} else {configure_entry .menu21.config.f.x1 disabled {x l}} - global CONFIG_IRQ3_ENABLE - global CONFIG_IRQ3_SEC - if {($CONFIG_IRQ3_ENABLE == 1)} then { - configure_entry .menu21.config.f.x3 normal {n l y}} else {configure_entry .menu21.config.f.x3 disabled {y n l}} - global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {.menu21.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x4.l configure -state normal; } else {.menu21.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x4.l configure -state disabled} - global CONFIG_GPT_ENABLE - global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {.menu21.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x6.l configure -state normal; } else {.menu21.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x6.l configure -state disabled} - global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu21.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x7.l configure -state normal; } else {.menu21.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x7.l configure -state disabled} - global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {.menu21.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x8.l configure -state normal; } else {.menu21.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x8.l configure -state disabled} - global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {.menu21.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x9.l configure -state normal; } else {.menu21.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x9.l configure -state disabled} - global CONFIG_GPT_SEPIRQ - if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu21.config.f.x10 normal {n l y}} else {configure_entry .menu21.config.f.x10 disabled {y n l}} - global CONFIG_GPT_WDOGEN - if {($CONFIG_GPT_ENABLE == 1)} then { - configure_entry .menu21.config.f.x11 normal {n l y}} else {configure_entry .menu21.config.f.x11 disabled {y n l}} - global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {.menu21.config.f.x12.x configure -state normal -foreground [ cget .ref -foreground ]; .menu21.config.f.x12.l configure -state normal; } else {.menu21.config.f.x12.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu21.config.f.x12.l configure -state disabled} + global CONFIG_VGA_ENABLE + global CONFIG_SVGA_ENABLE + if {($CONFIG_VGA_ENABLE == 0)} then { + configure_entry .menu21.config.f.x2 normal {n l y}} else {configure_entry .menu21.config.f.x2 disabled {y n l}} } proc update_define_menu21 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_31 - global CONFIG_UA1_FIFO1 - if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} - global CONFIG_UA1_FIFO2 - if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} - global CONFIG_UA1_FIFO4 - if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} - global CONFIG_UA1_FIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} - global CONFIG_UA1_FIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} - global CONFIG_UA1_FIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global CONFIG_IRQ3_ENABLE - global CONFIG_IRQ3_SEC - if {($CONFIG_IRQ3_ENABLE == 1)} then { - set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC&15]} else {set CONFIG_IRQ3_SEC [expr $CONFIG_IRQ3_SEC|16]} - global CONFIG_IRQ3_NSEC - if {($CONFIG_IRQ3_ENABLE == 1) && ($CONFIG_IRQ3_SEC == 1)} then {validate_int CONFIG_IRQ3_NSEC "$CONFIG_IRQ3_NSEC" 12} - global CONFIG_GPT_ENABLE - global CONFIG_GPT_NTIM - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_NTIM "$CONFIG_GPT_NTIM" 2} - global CONFIG_GPT_SW - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_SW "$CONFIG_GPT_SW" 8} - global CONFIG_GPT_TW - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_TW "$CONFIG_GPT_TW" 32} - global CONFIG_GPT_IRQ - if {($CONFIG_GPT_ENABLE == 1)} then {validate_int CONFIG_GPT_IRQ "$CONFIG_GPT_IRQ" 8} - global CONFIG_GPT_SEPIRQ - if {($CONFIG_GPT_ENABLE == 1)} then { - set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ&15]} else {set CONFIG_GPT_SEPIRQ [expr $CONFIG_GPT_SEPIRQ|16]} - global CONFIG_GPT_WDOGEN - if {($CONFIG_GPT_ENABLE == 1)} then { - set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN&15]} else {set CONFIG_GPT_WDOGEN [expr $CONFIG_GPT_WDOGEN|16]} - global CONFIG_GPT_WDOG - if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {validate_hex CONFIG_GPT_WDOG "$CONFIG_GPT_WDOG" FFFF} + global CONFIG_VGA_ENABLE + global CONFIG_SVGA_ENABLE + if {($CONFIG_VGA_ENABLE == 0)} then { + set CONFIG_SVGA_ENABLE [expr $CONFIG_SVGA_ENABLE&15]} else {set CONFIG_SVGA_ENABLE [expr $CONFIG_SVGA_ENABLE|16]} +} + + +proc menu22 {w title} { + set oldFocus [focus] + catch {focus .menu13} + catch {destroy $w; unregister_active 22} + toplevel $w -class Dialog + wm withdraw $w + global active_menus + set active_menus [lsort -integer [linsert $active_menus end 22]] + message $w.m -width 400 -aspect 300 -text \ + "SPI" -relief raised + pack $w.m -pady 10 -side top -padx 10 + wm title $w "SPI" + + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; break" + set nextscript "catch {focus $oldFocus}; menu23 .menu23 \"$title\"" + frame $w.f + button $w.f.back -text "OK" \ + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22" + button $w.f.next -text "Next" -underline 0\ + -width 15 -command $nextscript + bind all $nextscript + button $w.f.prev -text "Prev" -underline 0\ + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\";break" + pack $w.f.back $w.f.next $w.f.prev -side left -expand on + pack $w.f -pady 10 -side bottom -anchor w -fill x + frame $w.topline -relief ridge -borderwidth 2 -height 2 + pack $w.topline -side top -fill x + + frame $w.botline -relief ridge -borderwidth 2 -height 2 + pack $w.botline -side bottom -fill x + + frame $w.config + pack $w.config -fill y -expand on + + scrollbar $w.config.vscroll -command "$w.config.canvas yview" + pack $w.config.vscroll -side right -fill y + + canvas $w.config.canvas -height 1\ + -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ + -width [expr [winfo screenwidth .] * 1 / 2] + frame $w.config.f + bind $w "$w.config.canvas yview scroll 1 unit;break;" + bind $w "$w.config.canvas yview scroll -1 unit;break;" + bind $w "$w.config.canvas yview scroll 1 page;break;" + bind $w "$w.config.canvas yview scroll -1 page;break;" + bind $w "$w.config.canvas yview moveto 0;break;" + bind $w "$w.config.canvas yview moveto 1 ;break;" + pack $w.config.canvas -side right -fill y + + + submenu $w.config.f 22 0 "SPI memory controller " 23 + submenu $w.config.f 22 1 "SPI controller(s) " 24 + + + + focus $w + update_active + global winx; global winy + if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} + set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] + if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} + update idletasks + if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f + + $w.config.canvas configure \ + -width [expr [winfo reqwidth $w.config.f] + 1]\ + -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ + [expr [winfo reqheight $w.config.f] + 1]" + + set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] + set scry [expr [winfo screenh $w] / 2] + set maxy [expr [winfo screenh $w] * 3 / 4] + set canvtotal [expr [winfo reqh $w.config.f] + 2] + if [expr $winy + $canvtotal < $maxy] { + $w.config.canvas configure -height $canvtotal + } else { + $w.config.canvas configure -height [expr $scry - $winy] + } + } + update idletasks + if {[winfo exists $w]} then { + wm maxsize $w [winfo width $w] [winfo screenheight $w] + wm minsize $w [winfo width $w] 100 + + wm deiconify $w +} +} + +proc update_menu22 {} { +} + + +proc update_define_menu22 {} { + update_define_mainmenu + global CONFIG_MODULES +} + + +proc menu23 {w title} { + set oldFocus [focus] + catch {focus .menu22} + catch {destroy $w; unregister_active 23} + toplevel $w -class Dialog + wm withdraw $w + global active_menus + set active_menus [lsort -integer [linsert $active_menus end 23]] + message $w.m -width 400 -aspect 300 -text \ + "SPI memory controller " -relief raised + pack $w.m -pady 10 -side top -padx 10 + wm title $w "SPI memory controller " + + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu24 .menu24 \"$title\"" + frame $w.f + button $w.f.back -text "OK" \ + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23" + button $w.f.next -text "Next" -underline 0\ + -width 15 -command $nextscript + bind all $nextscript + button $w.f.prev -text "Prev" -underline 0\ + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\";break" + pack $w.f.back $w.f.next $w.f.prev -side left -expand on + pack $w.f -pady 10 -side bottom -anchor w -fill x + frame $w.topline -relief ridge -borderwidth 2 -height 2 + pack $w.topline -side top -fill x + + frame $w.botline -relief ridge -borderwidth 2 -height 2 + pack $w.botline -side bottom -fill x + + frame $w.config + pack $w.config -fill y -expand on + + scrollbar $w.config.vscroll -command "$w.config.canvas yview" + pack $w.config.vscroll -side right -fill y + + canvas $w.config.canvas -height 1\ + -relief flat -borderwidth 0 -yscrollcommand "$w.config.vscroll set" \ + -width [expr [winfo screenwidth .] * 1 / 2] + frame $w.config.f + bind $w "$w.config.canvas yview scroll 1 unit;break;" + bind $w "$w.config.canvas yview scroll -1 unit;break;" + bind $w "$w.config.canvas yview scroll 1 page;break;" + bind $w "$w.config.canvas yview scroll -1 page;break;" + bind $w "$w.config.canvas yview moveto 0;break;" + bind $w "$w.config.canvas yview moveto 1 ;break;" + pack $w.config.canvas -side right -fill y + + + bool $w.config.f 23 0 "Enable SPI memory controller " CONFIG_SPIMCTRL + bool $w.config.f 23 1 "Enable SD card support " CONFIG_SPIMCTRL_SDCARD + hex $w.config.f 23 2 "Read instruction " CONFIG_SPIMCTRL_READCMD + bool $w.config.f 23 3 "Read instruction requires dummy byte " CONFIG_SPIMCTRL_DUMMYBYTE + bool $w.config.f 23 4 "Enable dual output for reads " CONFIG_SPIMCTRL_DUALOUTPUT + hex $w.config.f 23 5 "Address offset " CONFIG_SPIMCTRL_OFFSET + int $w.config.f 23 6 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER + int $w.config.f 23 7 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER + int $w.config.f 23 8 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT + + + + focus $w + update_active + global winx; global winy + if {[winfo exists .menu22] == 0} then {menu22 .menu22 "SPI"} + set winx [expr [winfo x .menu22]+30]; set winy [expr [winfo y .menu22]+30] + if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} + update idletasks + if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f + + $w.config.canvas configure \ + -width [expr [winfo reqwidth $w.config.f] + 1]\ + -scrollregion "-1 -1 [expr [winfo reqwidth $w.config.f] + 1] \ + [expr [winfo reqheight $w.config.f] + 1]" + + set winy [expr [winfo reqh $w] - [winfo reqh $w.config.canvas]] + set scry [expr [winfo screenh $w] / 2] + set maxy [expr [winfo screenh $w] * 3 / 4] + set canvtotal [expr [winfo reqh $w.config.f] + 2] + if [expr $winy + $canvtotal < $maxy] { + $w.config.canvas configure -height $canvtotal + } else { + $w.config.canvas configure -height [expr $scry - $winy] + } + } + update idletasks + if {[winfo exists $w]} then { + wm maxsize $w [winfo width $w] [winfo screenheight $w] + wm minsize $w [winfo width $w] 100 + + wm deiconify $w +} } +proc update_menu23 {} { + global CONFIG_SPIMCTRL + global CONFIG_SPIMCTRL_SDCARD + if {($CONFIG_SPIMCTRL == 1)} then { + configure_entry .menu23.config.f.x1 normal {n l y}} else {configure_entry .menu23.config.f.x1 disabled {y n l}} + global CONFIG_SPIMCTRL_READCMD + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu23.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x2.l configure -state normal; } else {.menu23.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x2.l configure -state disabled} + global CONFIG_SPIMCTRL_DUMMYBYTE + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { + configure_entry .menu23.config.f.x3 normal {n l y}} else {configure_entry .menu23.config.f.x3 disabled {y n l}} + global CONFIG_SPIMCTRL_DUALOUTPUT + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { + configure_entry .menu23.config.f.x4 normal {n l y}} else {configure_entry .menu23.config.f.x4 disabled {y n l}} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu23.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x5.l configure -state normal; } else {.menu23.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x5.l configure -state disabled} + global CONFIG_SPIMCTRL_SCALER + if {($CONFIG_SPIMCTRL == 1)} then {.menu23.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x6.l configure -state normal; } else {.menu23.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x6.l configure -state disabled} + global CONFIG_SPIMCTRL_ASCALER + if {($CONFIG_SPIMCTRL == 1)} then {.menu23.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x7.l configure -state normal; } else {.menu23.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x7.l configure -state disabled} + global CONFIG_SPIMCTRL_PWRUPCNT + if {($CONFIG_SPIMCTRL == 1)} then {.menu23.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu23.config.f.x8.l configure -state normal; } else {.menu23.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu23.config.f.x8.l configure -state disabled} +} -proc menu22 {w title} { + +proc update_define_menu23 {} { + update_define_mainmenu + global CONFIG_MODULES + global CONFIG_SPIMCTRL + global CONFIG_SPIMCTRL_SDCARD + if {($CONFIG_SPIMCTRL == 1)} then { + set CONFIG_SPIMCTRL_SDCARD [expr $CONFIG_SPIMCTRL_SDCARD&15]} else {set CONFIG_SPIMCTRL_SDCARD [expr $CONFIG_SPIMCTRL_SDCARD|16]} + global CONFIG_SPIMCTRL_READCMD + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {validate_hex CONFIG_SPIMCTRL_READCMD "$CONFIG_SPIMCTRL_READCMD" 0B} + global CONFIG_SPIMCTRL_DUMMYBYTE + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { + set CONFIG_SPIMCTRL_DUMMYBYTE [expr $CONFIG_SPIMCTRL_DUMMYBYTE&15]} else {set CONFIG_SPIMCTRL_DUMMYBYTE [expr $CONFIG_SPIMCTRL_DUMMYBYTE|16]} + global CONFIG_SPIMCTRL_DUALOUTPUT + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { + set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT&15]} else {set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT|16]} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {validate_hex CONFIG_SPIMCTRL_OFFSET "$CONFIG_SPIMCTRL_OFFSET" 0} + global CONFIG_SPIMCTRL_SCALER + if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_SCALER "$CONFIG_SPIMCTRL_SCALER" 1} + global CONFIG_SPIMCTRL_ASCALER + if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_ASCALER "$CONFIG_SPIMCTRL_ASCALER" 8} + global CONFIG_SPIMCTRL_PWRUPCNT + if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_PWRUPCNT "$CONFIG_SPIMCTRL_PWRUPCNT" 0} +} + + +proc menu24 {w title} { set oldFocus [focus] - catch {focus .menu13} - catch {destroy $w; unregister_active 22} + catch {focus .menu22} + catch {destroy $w; unregister_active 24} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 22]] + set active_menus [lsort -integer [linsert $active_menus end 24]] message $w.m -width 400 -aspect 300 -text \ - "Keybord and VGA interface" -relief raised + "SPI controller(s) " -relief raised pack $w.m -pady 10 -side top -padx 10 - wm title $w "Keybord and VGA interface" + wm title $w "SPI controller(s) " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; break" - set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 22; catch {destroy .menu13}; unregister_active 13; menu23 .menu23 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; break" + set nextscript "catch {focus $oldFocus}; destroy $w; unregister_active 24; catch {destroy .menu22}; unregister_active 22; catch {destroy .menu13}; unregister_active 13; menu25 .menu25 \"$title\"" frame $w.f button $w.f.back -text "OK" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript bind all $nextscript button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 22; menu21 .menu21 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 24; menu23 .menu23 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4280,17 +4760,32 @@ proc menu22 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 22 0 "Keyboard/mouse (PS2) interface " CONFIG_KBD_ENABLE - bool $w.config.f 22 1 "Text-based VGA interface " CONFIG_VGA_ENABLE - bool $w.config.f 22 2 "SVGA graphical frame buffer " CONFIG_SVGA_ENABLE + bool $w.config.f 24 0 "Enable SPI controller(s) " CONFIG_SPICTRL_ENABLE + int $w.config.f 24 1 "Number of SPI controllers " CONFIG_SPICTRL_NUM + int $w.config.f 24 2 "Slave select lines " CONFIG_SPICTRL_SLVS + int $w.config.f 24 3 "FIFO depth (2^N) " CONFIG_SPICTRL_FIFO + bool $w.config.f 24 4 "Enable slave select registers" CONFIG_SPICTRL_SLVREG + bool $w.config.f 24 5 "Enable automatic slave select" CONFIG_SPICTRL_ASEL + bool $w.config.f 24 6 "Support automated transfers " CONFIG_SPICTRL_AM + bool $w.config.f 24 7 "Support open drain mode " CONFIG_SPICTRL_ODMODE + bool $w.config.f 24 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN + int $w.config.f 24 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN + bool $w.config.f 24 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM + global tmpvar_32 + minimenu $w.config.f 24 11 "Fault-tolerance" tmpvar_32 CONFIG_SPICTRL_NOFT + menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_32 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_32 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_32 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x11.x.menu 3 focus $w update_active global winx; global winy - if {[winfo exists .menu13] == 0} then {menu13 .menu13 "Peripherals "} - set winx [expr [winfo x .menu13]+30]; set winy [expr [winfo y .menu13]+30] + if {[winfo exists .menu22] == 0} then {menu22 .menu22 "SPI"} + set winx [expr [winfo x .menu22]+30]; set winy [expr [winfo y .menu22]+30] if {[winfo exists $w]} then {wm geometry $w +$winx+$winy} update idletasks if {[winfo exists $w]} then {$w.config.canvas create window 0 0 -anchor nw -window $w.config.f @@ -4319,49 +4814,103 @@ proc menu22 {w title} { } } -proc update_menu22 {} { - global CONFIG_VGA_ENABLE - global CONFIG_SVGA_ENABLE - if {($CONFIG_VGA_ENABLE == 0)} then { - configure_entry .menu22.config.f.x2 normal {n l y}} else {configure_entry .menu22.config.f.x2 disabled {y n l}} -} - - -proc update_define_menu22 {} { +proc update_menu24 {} { + global CONFIG_SPICTRL_ENABLE + global CONFIG_SPICTRL_NUM + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu24.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x1.l configure -state normal; } else {.menu24.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x1.l configure -state disabled} + global CONFIG_SPICTRL_SLVS + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu24.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x2.l configure -state normal; } else {.menu24.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x2.l configure -state disabled} + global CONFIG_SPICTRL_FIFO + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu24.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x3.l configure -state normal; } else {.menu24.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x3.l configure -state disabled} + global CONFIG_SPICTRL_SLVREG + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x4 normal {n l y}} else {configure_entry .menu24.config.f.x4 disabled {y n l}} + global CONFIG_SPICTRL_ASEL + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x5 normal {n l y}} else {configure_entry .menu24.config.f.x5 disabled {y n l}} + global CONFIG_SPICTRL_AM + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x6 normal {n l y}} else {configure_entry .menu24.config.f.x6 disabled {y n l}} + global CONFIG_SPICTRL_ODMODE + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x7 normal {n l y}} else {configure_entry .menu24.config.f.x7 disabled {y n l}} + global CONFIG_SPICTRL_TWEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x8 normal {n l y}} else {configure_entry .menu24.config.f.x8 disabled {y n l}} + global CONFIG_SPICTRL_MAXWLEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then {.menu24.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu24.config.f.x9.l configure -state normal; } else {.menu24.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu24.config.f.x9.l configure -state disabled} + global CONFIG_SPICTRL_SYNCRAM + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + configure_entry .menu24.config.f.x10 normal {n l y}} else {configure_entry .menu24.config.f.x10 disabled {y n l}} + if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then {configure_entry .menu24.config.f.x11 normal {x l}} else {configure_entry .menu24.config.f.x11 disabled {x l}} +} + + +proc update_define_menu24 {} { update_define_mainmenu global CONFIG_MODULES - global CONFIG_VGA_ENABLE - global CONFIG_SVGA_ENABLE - if {($CONFIG_VGA_ENABLE == 0)} then { - set CONFIG_SVGA_ENABLE [expr $CONFIG_SVGA_ENABLE&15]} else {set CONFIG_SVGA_ENABLE [expr $CONFIG_SVGA_ENABLE|16]} -} - - -menu_option menu23 23 "VHDL Debugging " -proc menu23 {w title} { + global CONFIG_SPICTRL_ENABLE + global CONFIG_SPICTRL_NUM + if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_NUM "$CONFIG_SPICTRL_NUM" 1} + global CONFIG_SPICTRL_SLVS + if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_SLVS "$CONFIG_SPICTRL_SLVS" 1} + global CONFIG_SPICTRL_FIFO + if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_FIFO "$CONFIG_SPICTRL_FIFO" 1} + global CONFIG_SPICTRL_SLVREG + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_SLVREG [expr $CONFIG_SPICTRL_SLVREG&15]} else {set CONFIG_SPICTRL_SLVREG [expr $CONFIG_SPICTRL_SLVREG|16]} + global CONFIG_SPICTRL_ASEL + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_ASEL [expr $CONFIG_SPICTRL_ASEL&15]} else {set CONFIG_SPICTRL_ASEL [expr $CONFIG_SPICTRL_ASEL|16]} + global CONFIG_SPICTRL_AM + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_AM [expr $CONFIG_SPICTRL_AM&15]} else {set CONFIG_SPICTRL_AM [expr $CONFIG_SPICTRL_AM|16]} + global CONFIG_SPICTRL_ODMODE + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_ODMODE [expr $CONFIG_SPICTRL_ODMODE&15]} else {set CONFIG_SPICTRL_ODMODE [expr $CONFIG_SPICTRL_ODMODE|16]} + global CONFIG_SPICTRL_TWEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_TWEN [expr $CONFIG_SPICTRL_TWEN&15]} else {set CONFIG_SPICTRL_TWEN [expr $CONFIG_SPICTRL_TWEN|16]} + global CONFIG_SPICTRL_MAXWLEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then {validate_int CONFIG_SPICTRL_MAXWLEN "$CONFIG_SPICTRL_MAXWLEN" 0} + global CONFIG_SPICTRL_SYNCRAM + if {($CONFIG_SPICTRL_ENABLE == 1)} then { + set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} + global tmpvar_32 + global CONFIG_SPICTRL_NOFT + if {$tmpvar_32 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + global CONFIG_SPICTRL_DMRFT + if {$tmpvar_32 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + global CONFIG_SPICTRL_TMRFT + if {$tmpvar_32 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} +} + + +menu_option menu25 25 "VHDL Debugging " +proc menu25 {w title} { set oldFocus [focus] - catch {destroy $w; unregister_active 23} + catch {destroy $w; unregister_active 25} toplevel $w -class Dialog wm withdraw $w global active_menus - set active_menus [lsort -integer [linsert $active_menus end 23]] + set active_menus [lsort -integer [linsert $active_menus end 25]] message $w.m -width 400 -aspect 300 -text \ "VHDL Debugging " -relief raised pack $w.m -pady 10 -side top -padx 10 wm title $w "VHDL Debugging " - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; break" - set nextscript "catch {focus $oldFocus}; menu24 .menu24 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; break" + set nextscript "catch {focus $oldFocus}; menu26 .menu26 \"$title\"" frame $w.f button $w.f.back -text "Main Menu" \ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25" button $w.f.next -text "Next" -underline 0\ -width 15 -command $nextscript $w.f.next configure -state disabled bind all "puts \"no more menus\" " button $w.f.prev -text "Prev" -underline 0\ - -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\"" - bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 23; menu22 .menu22 \"$title\";break" + -width 15 -command "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\"" + bind $w "catch {focus $oldFocus}; destroy $w; unregister_active 25; menu24 .menu24 \"$title\";break" pack $w.f.back $w.f.next $w.f.prev -side left -expand on pack $w.f -pady 10 -side bottom -anchor w -fill x frame $w.topline -relief ridge -borderwidth 2 -height 2 @@ -4389,7 +4938,7 @@ proc menu23 {w title} { pack $w.config.canvas -side right -fill y - bool $w.config.f 23 0 "Accelerated UART tracing " CONFIG_DEBUG_UART + bool $w.config.f 25 0 "Accelerated UART tracing " CONFIG_DEBUG_UART @@ -4425,11 +4974,11 @@ proc menu23 {w title} { } } -proc update_menu23 {} { +proc update_menu25 {} { } -proc update_define_menu23 {} { +proc update_define_menu25 {} { update_define_mainmenu global CONFIG_MODULES } @@ -4475,7 +5024,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4485,6 +5035,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4509,6 +5061,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4521,14 +5074,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4541,27 +5099,28 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set CONFIG_FPU_GRFPU_SH 0 +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4571,17 +5130,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4593,12 +5152,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4608,10 +5167,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4622,7 +5181,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4634,26 +5193,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4661,27 +5222,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4700,8 +5265,9 @@ set CONFIG_AHB_MONERR 0 set CONFIG_AHB_MONWAR 0 set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 +set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4713,34 +5279,6 @@ set CONFIG_DSU_ETHMSB 020000 set CONFIG_DSU_ETHLSB 000000 set CONFIG_DSU_ETH_PROG 0 set CONFIG_DSU_ETH_DIS 0 -set CONFIG_SRCTRL 0 -set CONFIG_SRCTRL_8BIT 0 -set CONFIG_SRCTRL_PROMWS 3 -set CONFIG_SRCTRL_RAMWS 0 -set CONFIG_SRCTRL_IOWS 0 -set CONFIG_SRCTRL_RMW 0 -set tmpvar_27 "(not set)" -set CONFIG_SRCTRL_SRBANKS1 0 -set CONFIG_SRCTRL_SRBANKS2 0 -set CONFIG_SRCTRL_SRBANKS3 0 -set CONFIG_SRCTRL_SRBANKS4 0 -set CONFIG_SRCTRL_SRBANKS5 0 -set tmpvar_28 "(not set)" -set CONFIG_SRCTRL_BANKSZ0 0 -set CONFIG_SRCTRL_BANKSZ1 0 -set CONFIG_SRCTRL_BANKSZ2 0 -set CONFIG_SRCTRL_BANKSZ3 0 -set CONFIG_SRCTRL_BANKSZ4 0 -set CONFIG_SRCTRL_BANKSZ5 0 -set CONFIG_SRCTRL_BANKSZ6 0 -set CONFIG_SRCTRL_BANKSZ7 0 -set CONFIG_SRCTRL_BANKSZ8 0 -set CONFIG_SRCTRL_BANKSZ9 0 -set CONFIG_SRCTRL_BANKSZ10 0 -set CONFIG_SRCTRL_BANKSZ11 0 -set CONFIG_SRCTRL_BANKSZ12 0 -set CONFIG_SRCTRL_BANKSZ13 0 -set CONFIG_SRCTRL_ROMASEL 19 set CONFIG_MCTRL_LEON2 0 set CONFIG_MCTRL_8BIT 0 set CONFIG_MCTRL_16BIT 0 @@ -4751,11 +5289,15 @@ set CONFIG_MCTRL_SDRAM_BUS64 0 set CONFIG_MCTRL_SDRAM_INVCLK 0 set CONFIG_MCTRL_PAGE 0 set CONFIG_MCTRL_PROGPAGE 0 -set CONFIG_DDRMP 0 -set CONFIG_DDRMP_NCS 1 -set CONFIG_DDRMP_NDEV 2 -set CONFIG_DDRMP_NBITS 16 -set CONFIG_DDRMP_MBITS 64 +set CONFIG_MIG_DDR2 0 +set CONFIG_MIG_RANKS 1 +set CONFIG_MIG_COLBITS 10 +set CONFIG_MIG_ROWBITS 13 +set CONFIG_MIG_BANKBITS 2 +set CONFIG_MIG_HMASK F00 +set CONFIG_MIG_SERIES7 0 +set CONFIG_AHBSTAT_ENABLE 0 +set CONFIG_AHBSTAT_NFTSLV 1 set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 @@ -4777,11 +5319,6 @@ set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 -set CONFIG_ATA_ENABLE 0 -set CONFIG_ATAIO A00 -set CONFIG_ATAIRQ 10 -set CONFIG_ATA_MWDMA 0 -set CONFIG_ATA_FIFO 8 set CONFIG_UART1_ENABLE 0 set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 @@ -4801,14 +5338,42 @@ set CONFIG_GPT_IRQ 8 set CONFIG_GPT_SEPIRQ 0 set CONFIG_GPT_WDOGEN 0 set CONFIG_GPT_WDOG FFFF +set CONFIG_GRGPIO_ENABLE 0 +set CONFIG_GRGPIO_WIDTH 8 +set CONFIG_GRGPIO_IMASK 0000 +set CONFIG_I2C_ENABLE 0 set CONFIG_KBD_ENABLE 0 set CONFIG_VGA_ENABLE 0 set CONFIG_SVGA_ENABLE 0 +set CONFIG_SPIMCTRL 0 +set CONFIG_SPIMCTRL_SDCARD 0 +set CONFIG_SPIMCTRL_READCMD 0B +set CONFIG_SPIMCTRL_DUMMYBYTE 0 +set CONFIG_SPIMCTRL_DUALOUTPUT 0 +set CONFIG_SPIMCTRL_OFFSET 0 +set CONFIG_SPIMCTRL_SCALER 1 +set CONFIG_SPIMCTRL_ASCALER 8 +set CONFIG_SPIMCTRL_PWRUPCNT 0 +set CONFIG_SPICTRL_ENABLE 0 +set CONFIG_SPICTRL_NUM 1 +set CONFIG_SPICTRL_SLVS 1 +set CONFIG_SPICTRL_FIFO 1 +set CONFIG_SPICTRL_SLVREG 0 +set CONFIG_SPICTRL_ASEL 0 +set CONFIG_SPICTRL_AM 0 +set CONFIG_SPICTRL_ODMODE 0 +set CONFIG_SPICTRL_TWEN 0 +set CONFIG_SPICTRL_MAXWLEN 0 +set CONFIG_SPICTRL_SYNCRAM 0 +set tmpvar_32 "(not set)" +set CONFIG_SPICTRL_NOFT 0 +set CONFIG_SPICTRL_DMRFT 0 +set CONFIG_SPICTRL_TMRFT 0 set CONFIG_DEBUG_UART 0 +set CONFIG_LEON3FT_PRESENT 4 +set CONFIG_HAS_SHARED_GRFPU 4 set CONFIG_SYN_ARTISAN 4 set CONFIG_PCI_ENABLE 4 -set CONFIG_HAS_SHARED_GRFPU 4 -set CONFIG_FPU_GRFPU_SH 4 set CONFIG_MODULES 4 proc writeconfig {file1 file2} { set cfg [open $file1 w] @@ -4822,6 +5387,11 @@ proc writeconfig {file1 file2} { puts $autocfg " * Automatically generated C config: don't edit" puts $autocfg " */" puts $autocfg "#define AUTOCONF_INCLUDED" + global CONFIG_LEON3FT_PRESENT + global CONSTANT_Y + write_tristate $cfg $autocfg CONFIG_LEON3FT_PRESENT $CONFIG_LEON3FT_PRESENT [list $notmod] 2 + global CONFIG_HAS_SHARED_GRFPU + write_tristate $cfg $autocfg CONFIG_HAS_SHARED_GRFPU $CONFIG_HAS_SHARED_GRFPU [list $notmod] 2 write_comment $cfg $autocfg "Synthesis " global tmpvar_0 @@ -4860,7 +5430,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4870,6 +5441,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4908,6 +5481,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4920,9 +5494,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4936,239 +5511,390 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global CONFIG_FPU_GRFPU_SH + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_HAS_SHARED_GRFPU == 1 && $CONFIG_FPU_GRFPU == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_SH $CONFIG_FPU_GRFPU_SH [list $notmod] 2 } + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5208,16 +5934,18 @@ proc writeconfig {file1 file2} { write_comment $cfg $autocfg "Debug Link " global CONFIG_DSU_UART write_tristate $cfg $autocfg CONFIG_DSU_UART $CONFIG_DSU_UART [list $notmod] 2 + global CONFIG_DSU_JTAG + write_tristate $cfg $autocfg CONFIG_DSU_JTAG $CONFIG_DSU_JTAG [list $notmod] 2 global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5232,45 +5960,7 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH_DIS if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1) && ($CONFIG_GRETH_GIGA == 0)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH_DIS $CONFIG_DSU_ETH_DIS [list $notmod] 2 } write_comment $cfg $autocfg "Peripherals " - write_comment $cfg $autocfg "Memory controllers " - write_comment $cfg $autocfg "8/32-bit PROM/SRAM controller " - global CONFIG_SRCTRL - write_tristate $cfg $autocfg CONFIG_SRCTRL $CONFIG_SRCTRL [list $notmod] 2 - global CONFIG_SRCTRL_8BIT - if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_8BIT $CONFIG_SRCTRL_8BIT [list $notmod] 2 } - global CONFIG_SRCTRL_PROMWS - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_PROMWS $CONFIG_SRCTRL_PROMWS $notmod } - global CONFIG_SRCTRL_RAMWS - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_RAMWS $CONFIG_SRCTRL_RAMWS $notmod } - global CONFIG_SRCTRL_IOWS - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_IOWS $CONFIG_SRCTRL_IOWS $notmod } - global CONFIG_SRCTRL_RMW - if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_RMW $CONFIG_SRCTRL_RMW [list $notmod] 2 } - global tmpvar_27 - if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } - if { $tmpvar_27 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } - if { $tmpvar_27 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} - global tmpvar_28 - if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } - if { $tmpvar_28 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } - if { $tmpvar_28 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } - if { $tmpvar_28 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } - if { $tmpvar_28 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } - if { $tmpvar_28 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } - if { $tmpvar_28 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } - if { $tmpvar_28 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } - if { $tmpvar_28 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} - global CONFIG_SRCTRL_ROMASEL - if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_ROMASEL $CONFIG_SRCTRL_ROMASEL $notmod } + write_comment $cfg $autocfg "Memory controller " write_comment $cfg $autocfg "Leon2 memory controller " global CONFIG_MCTRL_LEON2 write_tristate $cfg $autocfg CONFIG_MCTRL_LEON2 $CONFIG_MCTRL_LEON2 [list $notmod] 2 @@ -5292,17 +5982,26 @@ proc writeconfig {file1 file2} { if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PAGE $CONFIG_MCTRL_PAGE [list $notmod] 2 } global CONFIG_MCTRL_PROGPAGE if {($CONFIG_MCTRL_LEON2 == 1) && ($CONFIG_MCTRL_SDRAM == 1) && ($CONFIG_MCTRL_PAGE == 1)} then {write_tristate $cfg $autocfg CONFIG_MCTRL_PROGPAGE $CONFIG_MCTRL_PROGPAGE [list $notmod] 2 } - write_comment $cfg $autocfg "Multi-port DDR controller " - global CONFIG_DDRMP - write_tristate $cfg $autocfg CONFIG_DDRMP $CONFIG_DDRMP [list $notmod] 2 - global CONFIG_DDRMP_NCS - if {($CONFIG_DDRMP == 1)} then {write_int $cfg $autocfg CONFIG_DDRMP_NCS $CONFIG_DDRMP_NCS $notmod } - global CONFIG_DDRMP_NDEV - if {($CONFIG_DDRMP == 1)} then {write_int $cfg $autocfg CONFIG_DDRMP_NDEV $CONFIG_DDRMP_NDEV $notmod } - global CONFIG_DDRMP_NBITS - if {($CONFIG_DDRMP == 1)} then {write_int $cfg $autocfg CONFIG_DDRMP_NBITS $CONFIG_DDRMP_NBITS $notmod } - global CONFIG_DDRMP_MBITS - if {($CONFIG_DDRMP == 1)} then {write_int $cfg $autocfg CONFIG_DDRMP_MBITS $CONFIG_DDRMP_MBITS $notmod } + write_comment $cfg $autocfg "MIG memory controller " + global CONFIG_MIG_DDR2 + write_tristate $cfg $autocfg CONFIG_MIG_DDR2 $CONFIG_MIG_DDR2 [list $notmod] 2 + global CONFIG_MIG_RANKS + if {($CONFIG_MIG_DDR2 == 1)} then {write_int $cfg $autocfg CONFIG_MIG_RANKS $CONFIG_MIG_RANKS $notmod } + global CONFIG_MIG_COLBITS + if {($CONFIG_MIG_DDR2 == 1)} then {write_int $cfg $autocfg CONFIG_MIG_COLBITS $CONFIG_MIG_COLBITS $notmod } + global CONFIG_MIG_ROWBITS + if {($CONFIG_MIG_DDR2 == 1)} then {write_int $cfg $autocfg CONFIG_MIG_ROWBITS $CONFIG_MIG_ROWBITS $notmod } + global CONFIG_MIG_BANKBITS + if {($CONFIG_MIG_DDR2 == 1)} then {write_int $cfg $autocfg CONFIG_MIG_BANKBITS $CONFIG_MIG_BANKBITS $notmod } + global CONFIG_MIG_HMASK + if {($CONFIG_MIG_DDR2 == 1)} then {write_hex $cfg $autocfg CONFIG_MIG_HMASK $CONFIG_MIG_HMASK $notmod } + write_comment $cfg $autocfg "MIG Series 7 memory controller " + global CONFIG_MIG_SERIES7 + write_tristate $cfg $autocfg CONFIG_MIG_SERIES7 $CONFIG_MIG_SERIES7 [list $notmod] 2 + global CONFIG_AHBSTAT_ENABLE + write_tristate $cfg $autocfg CONFIG_AHBSTAT_ENABLE $CONFIG_AHBSTAT_ENABLE [list $notmod] 2 + global CONFIG_AHBSTAT_NFTSLV + if {($CONFIG_AHBSTAT_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_AHBSTAT_NFTSLV $CONFIG_AHBSTAT_NFTSLV $notmod } write_comment $cfg $autocfg "On-chip RAM/ROM " global CONFIG_AHBROM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBROM_ENABLE $CONFIG_AHBROM_ENABLE [list $notmod] 2 @@ -5333,17 +6032,6 @@ proc writeconfig {file1 file2} { if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} - write_comment $cfg $autocfg "ATA " - global CONFIG_ATA_ENABLE - write_tristate $cfg $autocfg CONFIG_ATA_ENABLE $CONFIG_ATA_ENABLE [list $notmod] 2 - global CONFIG_ATAIO - if {($CONFIG_ATA_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_ATAIO $CONFIG_ATAIO $notmod } - global CONFIG_ATAIRQ - if {($CONFIG_ATA_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_ATAIRQ $CONFIG_ATAIRQ $notmod } - global CONFIG_ATA_MWDMA - if {($CONFIG_ATA_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_ATA_MWDMA $CONFIG_ATA_MWDMA [list $notmod] 2 } - global CONFIG_ATA_FIFO - if {($CONFIG_ATA_ENABLE == 1) && ($CONFIG_ATA_MWDMA == 1)} then {write_int $cfg $autocfg CONFIG_ATA_FIFO $CONFIG_ATA_FIFO $notmod } write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 @@ -5377,6 +6065,14 @@ proc writeconfig {file1 file2} { if {($CONFIG_GPT_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GPT_WDOGEN $CONFIG_GPT_WDOGEN [list $notmod] 2 } global CONFIG_GPT_WDOG if {($CONFIG_GPT_ENABLE == 1) && ($CONFIG_GPT_WDOGEN == 1)} then {write_hex $cfg $autocfg CONFIG_GPT_WDOG $CONFIG_GPT_WDOG $notmod } + global CONFIG_GRGPIO_ENABLE + write_tristate $cfg $autocfg CONFIG_GRGPIO_ENABLE $CONFIG_GRGPIO_ENABLE [list $notmod] 2 + global CONFIG_GRGPIO_WIDTH + if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_GRGPIO_WIDTH $CONFIG_GRGPIO_WIDTH $notmod } + global CONFIG_GRGPIO_IMASK + if {($CONFIG_GRGPIO_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_GRGPIO_IMASK $CONFIG_GRGPIO_IMASK $notmod } + global CONFIG_I2C_ENABLE + write_tristate $cfg $autocfg CONFIG_I2C_ENABLE $CONFIG_I2C_ENABLE [list $notmod] 2 write_comment $cfg $autocfg "Keybord and VGA interface" global CONFIG_KBD_ENABLE write_tristate $cfg $autocfg CONFIG_KBD_ENABLE $CONFIG_KBD_ENABLE [list $notmod] 2 @@ -5384,6 +6080,54 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_VGA_ENABLE $CONFIG_VGA_ENABLE [list $notmod] 2 global CONFIG_SVGA_ENABLE if {($CONFIG_VGA_ENABLE == 0)} then {write_tristate $cfg $autocfg CONFIG_SVGA_ENABLE $CONFIG_SVGA_ENABLE [list $notmod] 2 } + write_comment $cfg $autocfg "SPI" + write_comment $cfg $autocfg "SPI memory controller " + global CONFIG_SPIMCTRL + write_tristate $cfg $autocfg CONFIG_SPIMCTRL $CONFIG_SPIMCTRL [list $notmod] 2 + global CONFIG_SPIMCTRL_SDCARD + if {($CONFIG_SPIMCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_SDCARD $CONFIG_SPIMCTRL_SDCARD [list $notmod] 2 } + global CONFIG_SPIMCTRL_READCMD + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_hex $cfg $autocfg CONFIG_SPIMCTRL_READCMD $CONFIG_SPIMCTRL_READCMD $notmod } + global CONFIG_SPIMCTRL_DUMMYBYTE + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUMMYBYTE $CONFIG_SPIMCTRL_DUMMYBYTE [list $notmod] 2 } + global CONFIG_SPIMCTRL_DUALOUTPUT + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUALOUTPUT $CONFIG_SPIMCTRL_DUALOUTPUT [list $notmod] 2 } + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_hex $cfg $autocfg CONFIG_SPIMCTRL_OFFSET $CONFIG_SPIMCTRL_OFFSET $notmod } + global CONFIG_SPIMCTRL_SCALER + if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_SCALER $CONFIG_SPIMCTRL_SCALER $notmod } + global CONFIG_SPIMCTRL_ASCALER + if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_ASCALER $CONFIG_SPIMCTRL_ASCALER $notmod } + global CONFIG_SPIMCTRL_PWRUPCNT + if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_PWRUPCNT $CONFIG_SPIMCTRL_PWRUPCNT $notmod } + write_comment $cfg $autocfg "SPI controller(s) " + global CONFIG_SPICTRL_ENABLE + write_tristate $cfg $autocfg CONFIG_SPICTRL_ENABLE $CONFIG_SPICTRL_ENABLE [list $notmod] 2 + global CONFIG_SPICTRL_NUM + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_NUM $CONFIG_SPICTRL_NUM $notmod } + global CONFIG_SPICTRL_SLVS + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_SLVS $CONFIG_SPICTRL_SLVS $notmod } + global CONFIG_SPICTRL_FIFO + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_FIFO $CONFIG_SPICTRL_FIFO $notmod } + global CONFIG_SPICTRL_SLVREG + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SLVREG $CONFIG_SPICTRL_SLVREG [list $notmod] 2 } + global CONFIG_SPICTRL_ASEL + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_ASEL $CONFIG_SPICTRL_ASEL [list $notmod] 2 } + global CONFIG_SPICTRL_AM + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_AM $CONFIG_SPICTRL_AM [list $notmod] 2 } + global CONFIG_SPICTRL_ODMODE + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_ODMODE $CONFIG_SPICTRL_ODMODE [list $notmod] 2 } + global CONFIG_SPICTRL_TWEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_TWEN $CONFIG_SPICTRL_TWEN [list $notmod] 2 } + global CONFIG_SPICTRL_MAXWLEN + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } + global CONFIG_SPICTRL_SYNCRAM + if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } + global tmpvar_32 + if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { + if { $tmpvar_32 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -5428,7 +6172,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5438,6 +6183,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5456,8 +6203,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5540,11 +6292,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5565,30 +6319,15 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 global CONFIG_DSU_ETHSZ8; set CONFIG_DSU_ETHSZ8 0 global CONFIG_DSU_ETHSZ16; set CONFIG_DSU_ETHSZ16 0 - global CONFIG_SRCTRL_SRBANKS1; set CONFIG_SRCTRL_SRBANKS1 0 - global CONFIG_SRCTRL_SRBANKS2; set CONFIG_SRCTRL_SRBANKS2 0 - global CONFIG_SRCTRL_SRBANKS3; set CONFIG_SRCTRL_SRBANKS3 0 - global CONFIG_SRCTRL_SRBANKS4; set CONFIG_SRCTRL_SRBANKS4 0 - global CONFIG_SRCTRL_SRBANKS5; set CONFIG_SRCTRL_SRBANKS5 0 - global CONFIG_SRCTRL_BANKSZ0; set CONFIG_SRCTRL_BANKSZ0 0 - global CONFIG_SRCTRL_BANKSZ1; set CONFIG_SRCTRL_BANKSZ1 0 - global CONFIG_SRCTRL_BANKSZ2; set CONFIG_SRCTRL_BANKSZ2 0 - global CONFIG_SRCTRL_BANKSZ3; set CONFIG_SRCTRL_BANKSZ3 0 - global CONFIG_SRCTRL_BANKSZ4; set CONFIG_SRCTRL_BANKSZ4 0 - global CONFIG_SRCTRL_BANKSZ5; set CONFIG_SRCTRL_BANKSZ5 0 - global CONFIG_SRCTRL_BANKSZ6; set CONFIG_SRCTRL_BANKSZ6 0 - global CONFIG_SRCTRL_BANKSZ7; set CONFIG_SRCTRL_BANKSZ7 0 - global CONFIG_SRCTRL_BANKSZ8; set CONFIG_SRCTRL_BANKSZ8 0 - global CONFIG_SRCTRL_BANKSZ9; set CONFIG_SRCTRL_BANKSZ9 0 - global CONFIG_SRCTRL_BANKSZ10; set CONFIG_SRCTRL_BANKSZ10 0 - global CONFIG_SRCTRL_BANKSZ11; set CONFIG_SRCTRL_BANKSZ11 0 - global CONFIG_SRCTRL_BANKSZ12; set CONFIG_SRCTRL_BANKSZ12 0 - global CONFIG_SRCTRL_BANKSZ13; set CONFIG_SRCTRL_BANKSZ13 0 global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0 global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0 @@ -5607,6 +6346,9 @@ proc clear_choices { } { global CONFIG_UA1_FIFO8; set CONFIG_UA1_FIFO8 0 global CONFIG_UA1_FIFO16; set CONFIG_UA1_FIFO16 0 global CONFIG_UA1_FIFO32; set CONFIG_UA1_FIFO32 0 + global CONFIG_SPICTRL_NOFT; set CONFIG_SPICTRL_NOFT 0 + global CONFIG_SPICTRL_DMRFT; set CONFIG_SPICTRL_DMRFT 0 + global CONFIG_SPICTRL_TMRFT; set CONFIG_SPICTRL_TMRFT 0 } @@ -5683,8 +6425,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5703,6 +6447,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5743,324 +6491,308 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "1" - global CONFIG_SRCTRL_SRBANKS1 - if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_27 "1" } - global CONFIG_SRCTRL_SRBANKS2 - if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_27 "2" } - global CONFIG_SRCTRL_SRBANKS3 - if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_27 "3" } - global CONFIG_SRCTRL_SRBANKS4 - if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_27 "4" } - global CONFIG_SRCTRL_SRBANKS5 - if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_27 "5" } - global tmpvar_28 - set tmpvar_28 "0" - global CONFIG_SRCTRL_BANKSZ0 - if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_28 "8" } - global CONFIG_SRCTRL_BANKSZ1 - if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_28 "16" } - global CONFIG_SRCTRL_BANKSZ2 - if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_28 "32" } - global CONFIG_SRCTRL_BANKSZ3 - if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_28 "64" } - global CONFIG_SRCTRL_BANKSZ4 - if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_28 "128" } - global CONFIG_SRCTRL_BANKSZ5 - if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_28 "256" } - global CONFIG_SRCTRL_BANKSZ6 - if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_28 "512" } - global CONFIG_SRCTRL_BANKSZ7 - if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_28 "1024" } - global CONFIG_SRCTRL_BANKSZ8 - if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_28 "2048" } - global CONFIG_SRCTRL_BANKSZ9 - if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_28 "4096" } - global CONFIG_SRCTRL_BANKSZ10 - if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_28 "8192" } - global CONFIG_SRCTRL_BANKSZ11 - if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_28 "16384" } - global CONFIG_SRCTRL_BANKSZ12 - if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_28 "32768" } - global CONFIG_SRCTRL_BANKSZ13 - if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_28 "65536" } + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } global tmpvar_29 set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 @@ -6103,11 +6835,24 @@ proc update_choices { } { if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } + global tmpvar_32 + set tmpvar_32 "None" + global CONFIG_SPICTRL_NOFT + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_32 "None" } + global CONFIG_SPICTRL_DMRFT + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_32 "Parity-DMR" } + global CONFIG_SPICTRL_TMRFT + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_32 "TMR" } } proc update_define_mainmenu {} { global CONFIG_MODULES + global CONFIG_LEON3FT_PRESENT + global CONFIG_HAS_SHARED_GRFPU + global CONSTANT_Y + set CONFIG_LEON3FT_PRESENT $CONSTANT_Y + set CONFIG_HAS_SHARED_GRFPU $CONSTANT_Y } diff --git a/designs/leon3-xilinx-vc707/leon3mp.vhd b/designs/leon3-xilinx-vc707/leon3mp.vhd new file mode 100644 index 00000000..09f28b91 --- /dev/null +++ b/designs/leon3-xilinx-vc707/leon3mp.vhd @@ -0,0 +1,650 @@ +----------------------------------------------------------------------------- +-- LEON3 Xilinx VC707 Demonstration design +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler +-- +-- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +------------------------------------------------------------------------------ + +library ieee; +use ieee.std_logic_1164.all; +library grlib, techmap; +use grlib.amba.all; +use grlib.stdlib.all; +use techmap.gencomp.all; +use techmap.allclkgen.all; +library gaisler; +use gaisler.memctrl.all; +use gaisler.leon3.all; +use gaisler.uart.all; +use gaisler.misc.all; +use gaisler.i2c.all; +use gaisler.net.all; +use gaisler.jtag.all; +-- pragma translate_off +use gaisler.sim.all; +library unisim; +use unisim.all; +-- pragma translate_on + + +library esa; +use esa.memoryctrl.all; + +use work.config.all; + +entity leon3mp is + generic ( + fabtech : integer := CFG_FABTECH; + memtech : integer := CFG_MEMTECH; + padtech : integer := CFG_PADTECH; + clktech : integer := CFG_CLKTECH; + disas : integer := CFG_DISAS; -- Enable disassembly to console + dbguart : integer := CFG_DUART; -- Print UART on console + pclow : integer := CFG_PCLOW; + testahb : boolean := false; + SIM_BYPASS_INIT_CAL : string := "OFF"; + SIMULATION : string := "FALSE"; + USE_MIG_INTERFACE_MODEL : boolean := false + ); + port ( + reset : in std_ulogic; + clk200p : in std_ulogic; -- 200 MHz clock + clk200n : in std_ulogic; -- 200 MHz clock + address : out std_logic_vector(25 downto 0); + data : inout std_logic_vector(15 downto 0); + oen : out std_ulogic; + writen : out std_ulogic; + romsn : out std_logic; + adv : out std_logic; + ddr3_dq : inout std_logic_vector(63 downto 0); + ddr3_dqs_p : inout std_logic_vector(7 downto 0); + ddr3_dqs_n : inout std_logic_vector(7 downto 0); + ddr3_addr : out std_logic_vector(13 downto 0); + ddr3_ba : out std_logic_vector(2 downto 0); + ddr3_ras_n : out std_logic; + ddr3_cas_n : out std_logic; + ddr3_we_n : out std_logic; + ddr3_reset_n : out std_logic; + ddr3_ck_p : out std_logic_vector(0 downto 0); + ddr3_ck_n : out std_logic_vector(0 downto 0); + ddr3_cke : out std_logic_vector(0 downto 0); + ddr3_cs_n : out std_logic_vector(0 downto 0); + ddr3_dm : out std_logic_vector(7 downto 0); + ddr3_odt : out std_logic_vector(0 downto 0); + dsurx : in std_ulogic; + dsutx : out std_ulogic; + dsuctsn : in std_ulogic; + dsurtsn : out std_ulogic; + button : in std_logic_vector(3 downto 0); + switch : inout std_logic_vector(3 downto 0); + led : out std_logic_vector(6 downto 0); + iic_scl : inout std_ulogic; + iic_sda : inout std_ulogic + ); +end; + +architecture rtl of leon3mp is + +component ahb2mig_series7 + generic( + hindex : integer := 0; + haddr : integer := 0; + hmask : integer := 16#f00#; + pindex : integer := 0; + paddr : integer := 0; + pmask : integer := 16#fff#; + SIM_BYPASS_INIT_CAL : string := "OFF"; + SIMULATION : string := "FALSE"; + USE_MIG_INTERFACE_MODEL : boolean := false + ); + port( + ddr3_dq : inout std_logic_vector(63 downto 0); + ddr3_dqs_p : inout std_logic_vector(7 downto 0); + ddr3_dqs_n : inout std_logic_vector(7 downto 0); + ddr3_addr : out std_logic_vector(13 downto 0); + ddr3_ba : out std_logic_vector(2 downto 0); + ddr3_ras_n : out std_logic; + ddr3_cas_n : out std_logic; + ddr3_we_n : out std_logic; + ddr3_reset_n : out std_logic; + ddr3_ck_p : out std_logic_vector(0 downto 0); + ddr3_ck_n : out std_logic_vector(0 downto 0); + ddr3_cke : out std_logic_vector(0 downto 0); + ddr3_cs_n : out std_logic_vector(0 downto 0); + ddr3_dm : out std_logic_vector(7 downto 0); + ddr3_odt : out std_logic_vector(0 downto 0); + ahbso : out ahb_slv_out_type; + ahbsi : in ahb_slv_in_type; + apbi : in apb_slv_in_type; + apbo : out apb_slv_out_type; + calib_done : out std_logic; + rst_n_syn : in std_logic; + rst_n_async : in std_logic; + clk_amba : in std_logic; + sys_clk_p : in std_logic; + sys_clk_n : in std_logic; + ui_clk : out std_logic; + ui_clk_sync_rst : out std_logic + ); +end component ; + +component ddr_dummy + port ( + ddr_dq : inout std_logic_vector(63 downto 0); + ddr_dqs : inout std_logic_vector(7 downto 0); + ddr_dqs_n : inout std_logic_vector(7 downto 0); + ddr_addr : out std_logic_vector(13 downto 0); + ddr_ba : out std_logic_vector(2 downto 0); + ddr_ras_n : out std_logic; + ddr_cas_n : out std_logic; + ddr_we_n : out std_logic; + ddr_reset_n : out std_logic; + ddr_ck_p : out std_logic_vector(0 downto 0); + ddr_ck_n : out std_logic_vector(0 downto 0); + ddr_cke : out std_logic_vector(0 downto 0); + ddr_cs_n : out std_logic_vector(0 downto 0); + ddr_dm : out std_logic_vector(7 downto 0); + ddr_odt : out std_logic_vector(0 downto 0) + ); +end component ; + +constant maxahbm : integer := CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG; +constant maxahbs : integer := 1+CFG_DSU+CFG_MCTRL_LEON2+CFG_AHBROMEN+CFG_AHBRAMEN+2; +constant maxapbs : integer := CFG_IRQ3_ENABLE+CFG_GPT_ENABLE+CFG_GRGPIO_ENABLE+CFG_AHBSTAT+CFG_AHBSTAT; + +signal vcc, gnd : std_logic; +signal memi : memory_in_type; +signal memo : memory_out_type; +signal wpo : wprot_out_type; +signal sdi : sdctrl_in_type; +signal sdo : sdram_out_type; +signal sdo2, sdo3 : sdctrl_out_type; + +signal apbi : apb_slv_in_type; +signal apbo : apb_slv_out_vector := (others => apb_none); +signal ahbsi : ahb_slv_in_type; +signal ahbso : ahb_slv_out_vector := (others => ahbs_none); +signal ahbmi : ahb_mst_in_type; +signal vahbmi : ahb_mst_in_type; +signal ahbmo : ahb_mst_out_vector := (others => ahbm_none); +signal vahbmo : ahb_mst_out_type; + +signal ui_clk : std_ulogic; +signal clkm, rstn, rstraw, sdclkl : std_ulogic; +signal clk_200 : std_ulogic; +signal clk25, clk40, clk65 : std_ulogic; + +signal cgi, cgi2 : clkgen_in_type; +signal cgo, cgo2 : clkgen_out_type; +signal u1i, u2i, dui : uart_in_type; +signal u1o, u2o, duo : uart_out_type; + +signal irqi : irq_in_vector(0 to CFG_NCPU-1); +signal irqo : irq_out_vector(0 to CFG_NCPU-1); + +signal dbgi : l3_debug_in_vector(0 to CFG_NCPU-1); +signal dbgo : l3_debug_out_vector(0 to CFG_NCPU-1); + +signal dsui : dsu_in_type; +signal dsuo : dsu_out_type; + +signal rxd1 : std_logic; +signal txd1 : std_logic; + +signal ethi : eth_in_type; +signal etho : eth_out_type; +signal egtx_clk :std_ulogic; +signal negtx_clk :std_ulogic; + +signal gpti : gptimer_in_type; +signal gpto : gptimer_out_type; + +signal gpioi : gpio_in_type; +signal gpioo : gpio_out_type; + +signal clklock, elock, ulock : std_ulogic; + +signal lock, calib_done, clkml, lclk, rst, ndsuact : std_ulogic; +signal tck, tckn, tms, tdi, tdo : std_ulogic; + +signal lcd_datal : std_logic_vector(11 downto 0); +signal lcd_hsyncl, lcd_vsyncl, lcd_del, lcd_reset_bl : std_ulogic; + +signal i2ci, dvi_i2ci : i2c_in_type; +signal i2co, dvi_i2co : i2c_out_type; + +constant BOARD_FREQ : integer := 200000; -- input frequency in KHz +constant CPU_FREQ : integer := BOARD_FREQ * CFG_CLKMUL / CFG_CLKDIV; -- cpu frequency in KHz + +signal stati : ahbstat_in_type; + +signal fpi : grfpu_in_vector_type; +signal fpo : grfpu_out_vector_type; + +attribute keep : boolean; +attribute syn_keep : string; +attribute keep of clkm : signal is true; + +begin + +---------------------------------------------------------------------- +--- Reset and Clock generation ------------------------------------- +---------------------------------------------------------------------- + + vcc <= '1'; gnd <= '0'; + cgi.pllctrl <= "00"; cgi.pllrst <= rstraw; + + clk_gen : if (CFG_MIG_SERIES7 = 0) generate + clk_pad_ds : clkpad_ds generic map (tech => padtech, level => sstl, voltage => x15v) port map (clk200p, clk200n, lclk); + clkgen0 : clkgen -- clock generator + generic map (clktech, CFG_CLKMUL, CFG_CLKDIV, CFG_MCTRL_SDEN, + CFG_CLK_NOFB, 0, 0, 0, BOARD_FREQ) + port map (lclk, lclk, clkm, open, open, open, open, cgi, cgo, open, open, open); + end generate; + + reset_pad : inpad generic map (tech => padtech, level => cmos, voltage => x18v) port map (reset, rst); + rst0 : rstgen -- reset generator + generic map (acthigh => 1) + port map (rst, clkm, lock, rstn, rstraw); + lock <= calib_done when CFG_MIG_SERIES7 = 1 else cgo.clklock; + +---------------------------------------------------------------------- +--- AHB CONTROLLER -------------------------------------------------- +---------------------------------------------------------------------- + + ahb0 : ahbctrl -- AHB arbiter/multiplexer + generic map (defmast => CFG_DEFMST, split => CFG_SPLIT, + rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO, fpnpen => CFG_FPNPEN, + nahbm => maxahbm, nahbs => maxahbs) + port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso); + +---------------------------------------------------------------------- +--- LEON3 processor and DSU ----------------------------------------- +---------------------------------------------------------------------- + + nosh : if CFG_GRFPUSH = 0 generate + cpu : for i in 0 to CFG_NCPU-1 generate + l3ft : if CFG_LEON3FT_EN /= 0 generate + leon3ft0 : leon3ft -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, + CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, + CFG_IUFT_EN, CFG_FPUFT_EN, CFG_CACHE_FT_EN, CFG_RF_ERRINJ, + CFG_CACHE_ERRINJ, CFG_DFIXED, CFG_LEON3_NETLIST, CFG_SCAN, CFG_MMU_PAGE) + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + irqi(i), irqo(i), dbgi(i), dbgo(i), clkm); + end generate; + + l3s : if CFG_LEON3FT_EN = 0 generate + u0 : leon3s -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, + CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, + CFG_DFIXED, CFG_SCAN, CFG_MMU_PAGE, CFG_BP) + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + irqi(i), irqo(i), dbgi(i), dbgo(i)); + end generate; + end generate; + end generate; + + sh : if CFG_GRFPUSH = 1 generate + cpu : for i in 0 to CFG_NCPU-1 generate + l3ft : if CFG_LEON3FT_EN /= 0 generate + leon3ft0 : leon3ftsh -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, + CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, + CFG_IUFT_EN, CFG_FPUFT_EN, CFG_CACHE_FT_EN, CFG_RF_ERRINJ, + CFG_CACHE_ERRINJ, CFG_DFIXED, CFG_LEON3_NETLIST, CFG_SCAN, CFG_MMU_PAGE) + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + irqi(i), irqo(i), dbgi(i), dbgo(i), clkm, fpi(i), fpo(i)); + + end generate; + l3s : if CFG_LEON3FT_EN = 0 generate + u0 : leon3sh -- LEON3 processor + generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8, + 0, CFG_MAC, pclow, CFG_NOTAG, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE, + CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ, + CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN, + CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP, + CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1, + CFG_DFIXED, CFG_SCAN, CFG_MMU_PAGE) + port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso, + irqi(i), irqo(i), dbgi(i), dbgo(i), fpi(i), fpo(i)); + end generate; + end generate; + + grfpush0 : grfpushwx generic map ((CFG_FPU-1), CFG_NCPU, fabtech) + port map (clkm, rstn, fpi, fpo); + + end generate; + + led1_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) port map (led(1), dbgo(0).error); + + dsugen : if CFG_DSU = 1 generate + dsu0 : dsu3 -- LEON3 Debug Support Unit + generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#, + ncpu => CFG_NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ) + port map (rstn, clkm, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo); + dsui.enable <= '1'; + dsui_break_pad : inpad generic map (level => cmos, voltage => x18v, tech => padtech) port map (button(3), dsui.break); + dsuact_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) port map (led(0), ndsuact); + ndsuact <= not dsuo.active; + end generate; + + nodsu : if CFG_DSU = 0 generate + dsuo.tstop <= '0'; dsuo.active <= '0'; ahbso(2) <= ahbs_none; + end generate; + + -- Debug UART + dcomgen : if CFG_AHB_UART = 1 generate + dcom0 : ahbuart + generic map (hindex => CFG_NCPU, pindex => 7, paddr => 7) + port map (rstn, clkm, dui, duo, apbi, apbo(7), ahbmi, ahbmo(CFG_NCPU)); + dui.extclk <= '0'; + end generate; + + nouah : if CFG_AHB_UART = 0 generate + apbo(7) <= apb_none; + duo.txd <= '0'; + duo.rtsn <= '0'; + dui.extclk <= '0'; + end generate; + + dsurx_pad : inpad generic map (level => cmos, voltage => x18v, tech => padtech) port map (dsurx, dui.rxd); + dsutx_pad : outpad generic map (level => cmos, voltage => x18v, tech => padtech) port map (dsutx, duo.txd); + dsuctsn_pad : inpad generic map (level => cmos, voltage => x18v, tech => padtech) port map (dsuctsn, dui.ctsn); + dsurtsn_pad : outpad generic map (level => cmos, voltage => x18v, tech => padtech) port map (dsurtsn, duo.rtsn); + + + ahbjtaggen0 :if CFG_AHB_JTAG = 1 generate + ahbjtag0 : ahbjtag generic map(tech => fabtech, hindex => CFG_NCPU+1) + port map(rstn, clkm, tck, tms, tdi, tdo, ahbmi, ahbmo(CFG_NCPU+1), + open, open, open, open, open, open, open, gnd); + end generate; + + nojtag : if CFG_AHB_JTAG = 0 generate apbo(CFG_NCPU+1) <= apb_none; end generate; + +---------------------------------------------------------------------- +--- Memory controllers ---------------------------------------------- +---------------------------------------------------------------------- + + memi.writen <= '1'; memi.wrn <= "1111"; memi.bwidth <= "01"; + memi.brdyn <= '0'; memi.bexcn <= '1'; + + mctrl_gen : if CFG_MCTRL_LEON2 /= 0 generate + mctrl0 : mctrl generic map (hindex => 0, pindex => 0, + paddr => 0, srbanks => 2, ram8 => CFG_MCTRL_RAM8BIT, + ram16 => CFG_MCTRL_RAM16BIT, sden => CFG_MCTRL_SDEN, + invclk => CFG_CLK_NOFB, sepbus => CFG_MCTRL_SEPBUS, + pageburst => CFG_MCTRL_PAGE, rammask => 0, iomask => 0) + port map (rstn, clkm, memi, memo, ahbsi, ahbso(0), apbi, apbo(0), wpo, sdo); + + addr_pad : outpadv generic map (width => 26, tech => padtech, level => cmos, voltage => x18v) + port map (address(25 downto 0), memo.address(26 downto 1)); + roms_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (romsn, memo.romsn(0)); + oen_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (oen, memo.oen); + adv_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (adv, '0'); + wri_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (writen, memo.writen); + data_pad : iopadvv generic map (tech => padtech, width => 16, level => cmos, voltage => x18v) + port map (data(15 downto 0), memo.data(31 downto 16), + memo.vbdrive(31 downto 16), memi.data(31 downto 16)); + end generate; + nomctrl : if CFG_MCTRL_LEON2 = 0 generate + roms_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (romsn, vcc); --ahbso(0) <= ahbso_none; + end generate; + +---------------------------------------------------------------------- +--- DDR3 memory controller ------------------------------------------ +---------------------------------------------------------------------- + + mig_gen : if (CFG_MIG_SERIES7 = 1) generate + ddrc : ahb2mig_series7 generic map( + hindex => 4, haddr => 16#400#, hmask => 16#F80#, + pindex => 4, paddr => 4, + SIM_BYPASS_INIT_CAL => SIM_BYPASS_INIT_CAL, + SIMULATION => SIMULATION, USE_MIG_INTERFACE_MODEL => USE_MIG_INTERFACE_MODEL) + port map( + ddr3_dq => ddr3_dq, + ddr3_dqs_p => ddr3_dqs_p, + ddr3_dqs_n => ddr3_dqs_n, + ddr3_addr => ddr3_addr, + ddr3_ba => ddr3_ba, + ddr3_ras_n => ddr3_ras_n, + ddr3_cas_n => ddr3_cas_n, + ddr3_we_n => ddr3_we_n, + ddr3_reset_n => ddr3_reset_n, + ddr3_ck_p => ddr3_ck_p, + ddr3_ck_n => ddr3_ck_n, + ddr3_cke => ddr3_cke, + ddr3_cs_n => ddr3_cs_n, + ddr3_dm => ddr3_dm, + ddr3_odt => ddr3_odt, + ahbsi => ahbsi, + ahbso => ahbso(4), + apbi => apbi, + apbo => apbo(4), + calib_done => calib_done, + rst_n_syn => rstn, + rst_n_async => rstraw, + clk_amba => clkm, + sys_clk_p => clk200p, + sys_clk_n => clk200n, + ui_clk => clkm, + ui_clk_sync_rst => open + ); + end generate; + + no_mig_gen : if (CFG_MIG_SERIES7 = 0) generate + + ahbram0 : ahbram + generic map (hindex => 4, haddr => 16#400#, tech => CFG_MEMTECH, kbytes => 128) + port map ( rstn, clkm, ahbsi, ahbso(4)); + + ddrdummy0 : ddr_dummy + port map ( + ddr_dq => ddr3_dq, + ddr_dqs => ddr3_dqs_p, + ddr_dqs_n => ddr3_dqs_n, + ddr_addr => ddr3_addr, + ddr_ba => ddr3_ba, + ddr_ras_n => ddr3_ras_n, + ddr_cas_n => ddr3_cas_n, + ddr_we_n => ddr3_we_n, + ddr_reset_n => ddr3_reset_n, + ddr_ck_p => ddr3_ck_p, + ddr_ck_n => ddr3_ck_n, + ddr_cke => ddr3_cke, + ddr_cs_n => ddr3_cs_n, + ddr_dm => ddr3_dm, + ddr_odt => ddr3_odt + ); + + calib_done <= '1'; + + end generate; + + led2_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (led(2), calib_done); + led3_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (led(3), lock); + led4_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (led(4), ahbso(4).hready); + +---------------------------------------------------------------------- +--- I2C Controller-------------------------------------------- +---------------------------------------------------------------------- + + i2cm: if CFG_I2C_ENABLE = 1 generate -- I2C master + i2c0 : i2cmst + generic map (pindex => 8, paddr => 8, pmask => 16#FFF#, + pirq => 11, filter => 8) + port map (rstn, clkm, apbi, apbo(8), i2ci, i2co); + -- The EEK does not use a bi-directional line for the I2C clock + i2ci.scl <= i2co.scloen; -- No clock stretch possible + -- When SCL output enable is activated the line should go low + i2c_scl_pad : outpad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (iic_scl, i2co.scloen); + i2c_sda_pad : iopad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (iic_sda, i2co.sda, i2co.sdaoen, i2ci.sda); + end generate i2cm; + + +---------------------------------------------------------------------- +--- APB Bridge and various periherals ------------------------------- +---------------------------------------------------------------------- + + apb0 : apbctrl -- AHB/APB bridge + generic map (hindex => 1, haddr => CFG_APBADDR, nslaves => 16) + port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo ); + + irqctrl : if CFG_IRQ3_ENABLE /= 0 generate + irqctrl0 : irqmp -- interrupt controller + generic map (pindex => 2, paddr => 2, ncpu => CFG_NCPU) + port map (rstn, clkm, apbi, apbo(2), irqo, irqi); + end generate; + irq3 : if CFG_IRQ3_ENABLE = 0 generate + x : for i in 0 to CFG_NCPU-1 generate + irqi(i).irl <= "0000"; + end generate; + apbo(2) <= apb_none; + end generate; + + gpt : if CFG_GPT_ENABLE /= 0 generate + timer0 : gptimer -- timer unit + generic map (pindex => 3, paddr => 3, pirq => CFG_GPT_IRQ, + sepirq => CFG_GPT_SEPIRQ, sbits => CFG_GPT_SW, ntimers => CFG_GPT_NTIM, + nbits => CFG_GPT_TW, wdog => 0) + port map (rstn, clkm, apbi, apbo(3), gpti, gpto); + gpti.dhalt <= dsuo.tstop; gpti.extclk <= '0'; + end generate; + + nogpt : if CFG_GPT_ENABLE = 0 generate apbo(3) <= apb_none; end generate; + + gpio0 : if CFG_GRGPIO_ENABLE /= 0 generate -- GPIO unit + grgpio0: grgpio + generic map(pindex => 10, paddr => 10, imask => CFG_GRGPIO_IMASK, nbits => 7) + port map(rst => rstn, clk => clkm, apbi => apbi, apbo => apbo(10), + gpioi => gpioi, gpioo => gpioo); + pio_pads : for i in 0 to 3 generate + pio_pad : iopad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (switch(i), gpioo.dout(i), gpioo.oen(i), gpioi.din(i)); + end generate; + pio_pads2 : for i in 4 to 6 generate + pio_pad : inpad generic map (tech => padtech, level => cmos, voltage => x18v) + port map (button(i-4), gpioi.din(i)); + end generate; + end generate; + + ua1 : if CFG_UART1_ENABLE /= 0 generate + uart1 : apbuart -- UART 1 + generic map (pindex => 1, paddr => 1, pirq => 2, console => dbguart, + fifosize => CFG_UART1_FIFO) + port map (rstn, clkm, apbi, apbo(1), u1i, u1o); + u1i.rxd <= rxd1; + u1i.ctsn <= '0'; + u1i.extclk <= '0'; + txd1 <= u1o.txd; + serrx_pad : outpad generic map (level => cmos, voltage => x18v, tech => padtech) + port map (led(5), rxd1); + sertx_pad : outpad generic map (level => cmos, voltage => x18v, tech => padtech) + port map (led(6), txd1); + end generate; + noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate; + + ahbs : if CFG_AHBSTAT = 1 generate -- AHB status register + ahbstat0 : ahbstat generic map (pindex => 15, paddr => 15, pirq => 7, + nftslv => CFG_AHBSTATN) + port map (rstn, clkm, ahbmi, ahbsi, stati, apbi, apbo(15)); + end generate; + +----------------------------------------------------------------------- +--- AHB ROM ---------------------------------------------------------- +----------------------------------------------------------------------- + + bpromgen : if CFG_AHBROMEN /= 0 generate + brom : entity work.ahbrom + generic map (hindex => 7, haddr => CFG_AHBRODDR, pipe => CFG_AHBROPIP) + port map ( rstn, clkm, ahbsi, ahbso(7)); + end generate; + +----------------------------------------------------------------------- +--- AHB RAM ---------------------------------------------------------- +----------------------------------------------------------------------- + + ocram : if CFG_AHBRAMEN = 1 generate + ahbram0 : ahbram generic map (hindex => 5, haddr => CFG_AHBRADDR, + tech => CFG_MEMTECH, kbytes => CFG_AHBRSZ) + port map ( rstn, clkm, ahbsi, ahbso(5)); + end generate; + +----------------------------------------------------------------------- +--- Test report module ---------------------------------------------- +----------------------------------------------------------------------- + + -- pragma translate_off + test0_gen : if (testahb = true) generate + test0 : ahbrep generic map (hindex => 3, haddr => 16#200#) + port map (rstn, clkm, ahbsi, ahbso(3)); + end generate; + -- pragma translate_on + + test1_gen : if (testahb = false) generate + ahbram0 : ahbram generic map (hindex => 3, haddr => 16#200#, + tech => CFG_MEMTECH, kbytes => CFG_AHBRSZ) + port map ( rstn, clkm, ahbsi, ahbso(3)); + end generate; + + ----------------------------------------------------------------------- + --- Drive unused bus elements --------------------------------------- + ----------------------------------------------------------------------- + + nam1 : for i in (CFG_NCPU+CFG_AHB_UART+CFG_AHB_JTAG+CFG_GRETH+1) to NAHBMST-1 generate + ahbmo(i) <= ahbm_none; + end generate; + + ----------------------------------------------------------------------- + --- Boot message ---------------------------------------------------- + ----------------------------------------------------------------------- + + -- pragma translate_off + x : report_version + generic map ( + msg1 => "LEON3 Xilinx VC707 Demonstration design", + msg2 => "GRLIB Version " & tost(LIBVHDL_VERSION/1000) & "." & tost((LIBVHDL_VERSION mod 1000)/100) + & "." & tost(LIBVHDL_VERSION mod 100) & ", build " & tost(LIBVHDL_BUILD), + msg3 => "Target technology: " & tech_table(fabtech) & ", memory library: " & tech_table(memtech), + mdel => 1 + ); + -- pragma translate_on + end; + diff --git a/designs/leon3-xilinx-vc707/mig_interface_model.v b/designs/leon3-xilinx-vc707/mig_interface_model.v new file mode 100644 index 00000000..809240af --- /dev/null +++ b/designs/leon3-xilinx-vc707/mig_interface_model.v @@ -0,0 +1,163 @@ + +/***************************************************************************** +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- +-- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +------------------------------------------------------------------------------- +-- Entity: mig_interface_model +-- File: mig_interface_model.v +-- Author: Fredrik Ringhage - Aeroflex Gaisler AB +-- +-- This is a interface model for Xilinx Virtex-7 MIG used on eval board +-- VC707 and KC705. +-- +------------------------------------------------------------------------------- +*****************************************************************************/ + +`timescale 1ps/1ps + +module mig_interface_model + ( + // user interface signals + input [27:0] app_addr, + input [2:0] app_cmd, + input app_en, + input [511:0] app_wdf_data, + input app_wdf_end, + input [63:0] app_wdf_mask, + input app_wdf_wren, + output wire [511:0] app_rd_data, + output wire app_rd_data_end, + output wire app_rd_data_valid, + output wire app_rdy, + output wire app_wdf_rdy, + output reg ui_clk, + output reg ui_clk_sync_rst, + output reg init_calib_complete, + input sys_rst + ); + + parameter AddressSize = 28 - 12; + parameter WordSize = 512; + parameter MEM_SIZE = (1<> 3]; + + // Clear memory + initial + begin + for (k = 0; k < MEM_SIZE ; k = k + 1) + begin + Mem[k] = 512'd0; + end + end + + initial + begin + app_rd_data_valid_r = 1'b0; + app_rd_data_end_r = 1'b0; + app_rdy_r = 1'b1; + app_wdf_rdy_r = 1'b1; + init_calib_complete = 1'b0; + ui_clk_sync_rst = 1'b0; + ui_clk = 1'b0; + end + + // Generate clocks + always + begin + forever begin + #5000; + ui_clk = ~ui_clk; + end + end + + // Release reset and calibration + initial + begin + #10000; + $display("Reset release of simulation time is %d",$time); + @(posedge ui_clk) ui_clk_sync_rst = 1'b1; + #1000; + $display("Calibration release of simulation time is %d",$time); + @(posedge ui_clk) init_calib_complete = 1'b1; + end + + // Write Process + always@(posedge app_wdf_wren) + begin + #100; + for (k = 0; k < 511 ; k = k + 1) + begin + mask[k] = ~ app_wdf_mask[k >> 3]; + end + Mem[app_addr >> 3] = (app_wdf_data & mask) | (Mem[app_addr >> 3] & (~ mask) ); + #10000; + if (app_wdf_wren) begin + #100; + for (k = 0; k < 512 ; k = k + 1) + begin + mask[k] = ~ app_wdf_mask[k >> 3]; + end + Mem[app_addr >> 3] = (app_wdf_data & mask) | (Mem[app_addr >> 3] & (~ mask) ); + end + end + + // Read Process + always@(posedge app_en) + begin + #100; + if (app_cmd == 3'd1) begin + app_addr_r1 = app_addr; + #10000; + app_addr_r2 = app_addr; + #40000; + app_addr_r = app_addr_r1; + #100; + app_rd_data_valid_r = 1'b1; + #10000; + app_addr_r = app_addr_r2; + #10000; + app_rd_data_valid_r = 1'b0; + #10000; + end + end +endmodule diff --git a/designs/leon3-xilinx-vc707/preload_ddr3_dimm.do b/designs/leon3-xilinx-vc707/preload_ddr3_dimm.do new file mode 100644 index 00000000..c4ab1091 --- /dev/null +++ b/designs/leon3-xilinx-vc707/preload_ddr3_dimm.do @@ -0,0 +1,52 @@ +# Procedure to load memory from file +proc reload_mem {} { + # Load memory with system test and display memory + if {[examine /testbench/led(3)] == 1} { + if {[examine sim:/config@work/CFG_MIG_SERIES7] == 1} { + echo "Loading DDR3 memory with System Test" + if {[examine /testbench/USE_MIG_INTERFACE_MODEL] == FALSE} { + mem load -startaddress 0 -format hex -infile sdram_dimm1.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(0)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm2.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(1)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm3.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(2)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm4.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(3)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm5.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(4)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm6.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(5)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm7.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(6)/u1/memory + mem load -startaddress 0 -format hex -infile sdram_dimm8.hex -filltype value -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(7)/u1/memory + + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(0)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(1)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(2)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(3)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(4)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(5)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(6)/u1/address + mem load -startaddress 0 -format hex -filltype incr -filldata 1'b0 sim:/testbench/gen_mem_model/ddr3mem/gen_mem(7)/u1/address + + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(0)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(1)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(2)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(3)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(4)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(5)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(6)/u1/memory_used 1111111111111111 + change sim:/testbench/gen_mem_model/ddr3mem/gen_mem(7)/u1/memory_used 1111111111111111 + } + + if {[examine /testbench/USE_MIG_INTERFACE_MODEL] == TRUE} { + echo "MIG Model found" + mem load -startaddress 0 -format hex -infile sdram_dimm_merge.hex -filltype value -filldata 1'b0 sim:/testbench/cpu/mig_gen/ddrc/gen_mig_model/MCB_model_inst/Mem + } + + #do wave.do + } + } +} + +set init_path /testbench/led(3); + +when -label when1 "$init_path'event and $init_path ='1'" { + reload_mem +} + +#run 2 ms diff --git a/designs/leon3-ge-hpe-mini/prom.h b/designs/leon3-xilinx-vc707/prom.h similarity index 79% rename from designs/leon3-ge-hpe-mini/prom.h rename to designs/leon3-xilinx-vc707/prom.h index d003b061..e283ab8b 100644 --- a/designs/leon3-ge-hpe-mini/prom.h +++ b/designs/leon3-xilinx-vc707/prom.h @@ -1,7 +1,7 @@ -#define MCFG1 0x10380233 +#define MCFG1 0x10380133 #define MCFG2 0xe6B86e60 #define MCFG3 0x000ff000 -#define ASDCFG 0xfff00100 +#define ASDCFG 0x80000000 #define DSDCFG 0xe6A06e60 #define L2MCTRLIO 0x80000000 #define IRQCTRL 0x80000200 diff --git a/designs/leon3-ge-hpe-midi-ep2s180/prom.srec b/designs/leon3-xilinx-vc707/prom.srec similarity index 73% rename from designs/leon3-ge-hpe-midi-ep2s180/prom.srec rename to designs/leon3-xilinx-vc707/prom.srec index 0e04c0a9..a2497cbf 100755 --- a/designs/leon3-ge-hpe-midi-ep2s180/prom.srec +++ b/designs/leon3-xilinx-vc707/prom.srec @@ -23,15 +23,15 @@ S1130140FD18C000010000000100000001000000D3 S1130150010000000100000089A008420100000025 S113016001000000010000000100000010800005F3 S11301700100000001000000000000000000000079 -S1130180874440008730E01C8688E00F1280001608 -S11301900320000005040E008410A233C420400094 -S11301A00539A81B8410A260C4206004050003FC68 +S1130180874440008730E01C8688E00F1280001509 +S11301900320000005040E008410A133C420400095 +S11301A00539AE1B8410A260C4206004050003FC62 S11301B0C420600882103860C40040008530A00C60 -S11301C0030000048210600980A04002128000062F -S11301D0033FFC00821061000539A81B8410A26053 -S11301E0C4204000050000808210000080A0E000D0 -S11301F002800005010000008200400210BFFFFCE5 -S11302008620E0013D1003FFBC17A3E0BC2780015A -S11302109C27A0600310000081C040000100000082 +S11301C0030000048210600980A040021280000530 +S11301D0032000000539A81B8410A260C42040003D +S11301E0050000808210000080A0E000028000056D +S11301F0010000008200400210BFFFFC8620E001E5 +S11302003D1003FFBC17A3E0BC2780019C27A0601E +S11302100310000081C04000010000000100000044 S113022000000000000000000000000000000000CA S9030000FC diff --git a/designs/leon3-ge-hpe-mini/sdram.srec b/designs/leon3-xilinx-vc707/sdram.srec similarity index 70% rename from designs/leon3-ge-hpe-mini/sdram.srec rename to designs/leon3-xilinx-vc707/sdram.srec index 926a7ff7..9eece58d 100755 --- a/designs/leon3-ge-hpe-mini/sdram.srec +++ b/designs/leon3-xilinx-vc707/sdram.srec @@ -1,14 +1,14 @@ S00D0000736472616D2E7372656300 -S31540000000881000000910006C81C1206C01000000BE -S31540000010A1480000A75000001080203BAC102001F2 +S31540000000881000000910006C81C122980100000090 +S31540000010A1480000A75000001080203EAC102001EF S3154000002091D0200001000000010000000100000006 S3154000003091D02000010000000100000001000000F6 -S31540000040A14800002910006B81C523A401000000CF -S31540000050A14800002910006981C522C8010000009E -S31540000060A14800002910006981C523340100000021 +S31540000040A14800002910006C81C521EC0100000088 +S31540000050A14800002910006981C522A401000000C2 +S31540000060A14800002910006981C523100100000045 S3154000007091D02000010000000100000001000000B6 S3154000008091D02000010000000100000001000000A6 -S31540000090A1480000A75000001080201BAC1020098A +S31540000090A1480000A75000001080201EAC10200987 S315400000A091D0200001000000010000000100000086 S315400000B091D0200001000000010000000100000076 S315400000C091D0200001000000010000000100000066 @@ -16,21 +16,21 @@ S315400000D091D0200001000000010000000100000056 S315400000E091D0200001000000010000000100000046 S315400000F091D0200001000000010000000100000036 S3154000010091D0200001000000010000000100000025 -S31540000110AE102001A148000010806A33A7500000AD -S31540000120AE102002A148000010806A2FA7500000A0 -S31540000130AE102003A148000010806A2BA750000093 -S31540000140AE102004A148000010806A27A750000086 -S31540000150AE102005A148000010806A23A750000079 -S31540000160AE102006A148000010806A1FA75000006C -S31540000170AE102007A148000010806A1BA75000005F -S31540000180AE102008A148000010806A17A750000052 -S31540000190AE102009A148000010806A13A750000045 -S315400001A0AE10200AA148000010806A0FA750000038 -S315400001B0AE10200BA148000010806A0BA75000002B -S315400001C0AE10200CA148000010806A07A75000001E -S315400001D0AE10200DA148000010806A03A750000011 -S315400001E0AE10200EA1480000108069FFA750000005 -S315400001F0AE10200FA1480000108069FBA7500000F8 +S31540000110AE102001A148000010806A2AA7500000B6 +S31540000120AE102002A148000010806A26A7500000A9 +S31540000130AE102003A148000010806A22A75000009C +S31540000140AE102004A148000010806A1EA75000008F +S31540000150AE102005A148000010806A1AA750000082 +S31540000160AE102006A148000010806A16A750000075 +S31540000170AE102007A148000010806A12A750000068 +S31540000180AE102008A148000010806A0EA75000005B +S31540000190AE102009A148000010806A0AA75000004E +S315400001A0AE10200AA148000010806A06A750000041 +S315400001B0AE10200BA148000010806A02A750000034 +S315400001C0AE10200CA1480000108069FEA750000028 +S315400001D0AE10200DA1480000108069FAA75000001B +S315400001E0AE10200EA1480000108069F6A75000000E +S315400001F0AE10200FA1480000108069F2A750000001 S3154000020091D0200001000000010000000100000024 S3154000021091D0200001000000010000000100000014 S3154000022091D0200001000000010000000100000004 @@ -129,10 +129,10 @@ S315400007E091D020000100000001000000010000003F S315400007F091D020000100000001000000010000002F S3154000080091D020000100000001000000010000001E S3154000081091D020000100000001000000010000000E -S31540000820A14800002910006A81C521080100000086 -S31540000830A1480000108067D9A750000001000000C1 +S31540000820A14800002910006A81C520E401000000AB +S31540000830A1480000108067D0A750000001000000CA S3154000084091D02000010000000100000001000000DE -S31540000850A14800002910006A81C520EC0100000073 +S31540000850A14800002910006A81C520C80100000097 S3154000086091D02000010000000100000001000000BE S3154000087091D02000010000000100000001000000AE S3154000088091D020000100000001000000010000009E @@ -255,250 +255,250 @@ S31540000FC091D0200001000000010000000100000057 S31540000FD091D0200001000000010000000100000047 S31540000FE091D0200001000000010000000100000037 S31540000FF091D0200001000000010000000100000027 -S315400010009DE3BFC0051001438410A0600710014452 -S315400010108610E188821000008620C00286A0E00883 -S3154000102036BFFFFFC038800311100144901221885B -S31540001030C02200004000666601000000400066666F -S315400010400100000040006818010000001110006D0A -S31540001050901221A040006166010000004000694AEC -S3154000106001000000400000430100000040006743CB -S315400010700100000081C7E00881E800009DE3BF98B9 -S3154000108023100143C20C606080A0600012800015EE -S315400010902110008010800005C204200C9FC3400030 -S315400010A0C224200CC204200CDA00400080A3600059 -S315400010B012BFFFFB82006004030000008210600044 -S315400010C080A0600002800006821020011110006D91 -S315400010D06FFFFBCC9012213082102001C22C606041 -S315400010E081C7E00881E800009DE3BF9881C7E0081A -S315400010F081E800009DE3BF98030000008210600075 -S315400011001110006D1310014380A060009012213031 -S3154000111002800004921260646FFFFBBA0100000077 -S315400011201B100144C203618880A060000280000950 -S31540001130B0136188030000008210600080A0600048 -S3154000114002800004010000006FFFFBAE81E8000052 -S315400011500100000081C7E00881E800009DE3BF98D8 -S3154000116081C7E00881E8000081C3E0080100000073 -S315400011709DE3BF9840000007010000004000014683 -S31540001180010000004000000E81E800000100000060 -S315400011909DE3BF98400000290100000080A2200086 -S315400011A01280000503100080D80060109A102001BC -S315400011B0DA23201081C7E00891E820000310008060 -S315400011C0D80060109A102001DA23201481C3E00869 -S315400011D09010200003100080DA006010D0234000F9 -S315400011E081C3E0089010200003100080DA006010F0 -S315400011F0D023600881C3E0089010200003100080CF -S31540001200DA006010D023600481C3E008901020000B -S3154000121013100080921260149010200081C3E008E1 -S31540001220D0EA4020901020001310008092126014E3 -S3154000123081C3E008D0224000914440009132201CF6 -S3154000124081C3E008900A200F81C3E008D0820020C5 -S315400012509010200C81C3E008D08200408210000824 -S3154000126080A20009148000039022000990224001C8 -S3154000127081C3E00801000000932A60028210200129 -S31540001280C22200099810200080A3000A1680000A96 -S3154000129096102001832B2002DA02000180A0000D67 -S315400012A0826020009803200180A3000A06BFFFFA4F -S315400012B0960AC00180A2E00002BFFFF49810200009 -S315400012C081C3E008010000009DE3BF98C2062010DC -S315400012D08330601CA0100018A400600180A4A00107 -S315400012E00280006CB0103FFF7FFFFFD4010000007A -S315400012F0AA100008912A20047FFFFFBC9002200715 -S315400013007FFFFFD40100000003020000808A000135 -S315400013100280005C010000009A05600182102001F5 -S315400013208328400D11100080C2242010901220A066 -S31540001330921000157FFFFFD1941000120310008019 -S3154000134082106018A12D6002C0204010DA004010C3 -S31540001350A610000180A36009291001431480002BC8 -S31540001360AC1000017FFFFFAB0100000080A220000F -S3154000137012BFFFFD01000000B010200080A6001241 -S31540001380168000140100000010800005A21000160F -S3154000139080A600121680000F01000000832E200256 -S315400013A0D0044010D20440017FFFFFADB0062001BB -S315400013B080A2200104BFFFF7901020027FFFFF901C -S315400013C00100000080A6001206BFFFF6832E200211 -S315400013D0C205207C82006001C225207C7FFFFF92EF -S315400013E001000000C204C01082006001C224C01087 -S315400013F0DA04C01080A3600904BFFFDB111000802F -S31540001400108000049012205C111000809012205C25 -S31540001410921000157FFFFF9994100012832CA002B2 -S3154000142082004012A0004001DA05207C80A4000D15 -S3154000143002800004231001437FFFFF7190102003B8 -S31540001440C204607C80A060000480000601000000A9 -S31540001450C204607C80A400011680000580A560005F -S315400014607FFFFF679010200380A56000228000095F -S31540001470B010200091D0200010800006B01020004F -S315400014807FFFFF5F9010200110BFFFA59A05600106 -S3154000149081C7E00881E800009DE3BF98C20620109E -S315400014A0A01000188330601C80A0600002800009F4 -S315400014B0B0103FFF7FFFFF610100000080A22000C7 -S315400014C0128000040300003F821063FFC2242010F4 -S315400014D081C7E00881E800009DE3BF98C20620105E -S315400014E08330601CA400600180A4A00102800068D3 -S315400014F0B0103FFF7FFFFF5101000000AA10000817 -S31540001500912A20047FFFFF39900220077FFFFF5179 -S315400015100100000003020000808A0001028000589A -S315400015200100000011100080901220A092100015BA -S315400015307FFFFF5294100012031000808210601843 -S31540001540A12D6002C0204010DA004010A610000114 -S3154000155080A36009291001431480002BAC100001C0 -S315400015607FFFFF2C0100000080A2200012BFFFFD7C -S3154000157001000000B010200080A600121680001462 -S315400015800100000010800005A210001680A600127F -S315400015901680000F01000000832E2002D004401068 -S315400015A0D20440017FFFFF2EB006200180A2200119 -S315400015B004BFFFF7901020027FFFFF1101000000DB -S315400015C080A6001206BFFFF6832E2002C205207CAD -S315400015D082006001C225207C7FFFFF1301000000CE -S315400015E0C204C01082006001C224C010DA04C010D8 -S315400015F080A3600904BFFFDB111000801080000447 -S315400016009012205C111000809012205C9210001500 -S315400016107FFFFF1A94100012832CA0028200401212 -S31540001620A0004001DA05207C80A4000D0280000461 -S31540001630231001437FFFFEF290102003C204607C1A -S3154000164080A060000480000601000000C204607CA7 -S3154000165080A400011680000580A560007FFFFEE89B -S315400016609010200380A5600022800009B010200061 -S3154000167091D0200010800006B01020007FFFFEE0D1 -S315400016809010200110BFFFA91110008081C7E0080B -S3154000169081E800009DE3BF983120000092162200A9 -S315400016A09410200040003E599010200140003B62BB -S315400016B0901622009016230040003EBE921020084D -S315400016C0B016210040003A4F81E8000001000000BA -S315400016D09DE3BF9821200000921422009410200020 -S315400016E040003E4A9010200140003B539014220097 -S315400016F09210001840003EAF90142300B014210011 -S3154000170040003A4081E8000001000000000000006F -S315400017100000000000000000000000000000000083 -S315400017200000000000000000000000000000000073 -S315400017300000000000000000000000000000000063 -S315400017400000000000000000000000000000000053 -S315400017500000000000000000000000000000000043 -S315400017600000000000000000000000000000000033 -S315400017700000000000000000000000000000000023 -S315400017800000000000000000000000000000000013 -S315400017900000000000000000000000000000000003 -S315400017A000000000000000000000000000000000F3 -S315400017B000000000000000000000000000000000E3 -S315400017C000000000000000000000000000000000D3 -S315400017D000000000000000000000000000000000C3 -S315400017E000000000000000000000000000000000B3 -S315400017F000000000000000000000000000000000A3 -S315400018000000000000000000000000000000000092 -S315400018100000000000000000000000000000000082 -S315400018200000000000000000000000000000000072 -S315400018300000000000000000000000000000000062 -S315400018400000000000000000000000000000000052 -S315400018500000000000000000000000000000000042 -S315400018600000000000000000000000000000000032 -S315400018700000000000000000000000000000000022 -S315400018800000000000000000000000000000000012 -S315400018900000000000000000000000000000000002 -S315400018A000000000000000000000000000000000F2 -S315400018B000000000000000000000000000000000E2 -S315400018C000000000000000000000000000000000D2 -S315400018D000000000000000000000000000000000C2 -S315400018E000000000000000000000000000000000B2 -S315400018F000000000000000000000000000000000A2 -S315400019000000000000000000000000000000000091 -S315400019100000000000000000000000000000000081 -S315400019200000000000000000000000000000000071 -S315400019300000000000000000000000000000000061 -S315400019400000000000000000000000000000000051 -S315400019500000000000000000000000000000000041 -S315400019600000000000000000000000000000000031 -S315400019700000000000000000000000000000000021 -S315400019800000000000000000000000000000000011 -S315400019900000000000000000000000000000000001 -S315400019A000000000000000000000000000000000F1 -S315400019B000000000000000000000000000000000E1 -S315400019C000000000000000000000000000000000D1 -S315400019D000000000000000000000000000000000C1 -S315400019E000000000000000000000000000000000B1 -S315400019F000000000000000000000000000000000A1 -S31540001A000000000000000000000000000000000090 -S31540001A100000000000000000000000000000000080 -S31540001A200000000000000000000000000000000070 -S31540001A300000000000000000000000000000000060 -S31540001A400000000000000000000000000000000050 -S31540001A500000000000000000000000000000000040 -S31540001A600000000000000000000000000000000030 -S31540001A700000000000000000000000000000000020 -S31540001A800000000000000000000000000000000010 -S31540001A900000000000000000000000000000000000 -S31540001AA000000000000000000000000000000000F0 -S31540001AB000000000000000000000000000000000E0 -S31540001AC000000000000000000000000000000000D0 -S31540001AD000000000000000000000000000000000C0 -S31540001AE000000000000000000000000000000000B0 -S31540001AF000000000000000000000000000000000A0 -S31540001B00000000000000000000000000000000008F -S31540001B10000000000000000000000000000000007F -S31540001B20000000000000000000000000000000006F -S31540001B30000000000000000000000000000000005F -S31540001B40000000000000000000000000000000004F -S31540001B50000000000000000000000000000000003F -S31540001B60000000000000000000000000000000002F -S31540001B70000000000000000000000000000000001F -S31540001B80000000000000000000000000000000000F -S31540001B9000000000000000000000000000000000FF -S31540001BA000000000000000000000000000000000EF -S31540001BB000000000000000000000000000000000DF -S31540001BC000000000000000000000000000000000CF -S31540001BD000000000000000000000000000000000BF -S31540001BE000000000000000000000000000000000AF -S31540001BF0000000000000000000000000000000009F -S31540001C00000000000000000000000000000000008E -S31540001C10000000000000000000000000000000007E -S31540001C20000000000000000000000000000000006E -S31540001C30000000000000000000000000000000005E -S31540001C40000000000000000000000000000000004E -S31540001C50000000000000000000000000000000003E -S31540001C60000000000000000000000000000000002E -S31540001C70000000000000000000000000000000001E -S31540001C80000000000000000000000000000000000E -S31540001C9000000000000000000000000000000000FE -S31540001CA000000000000000000000000000000000EE -S31540001CB000000000000000000000000000000000DE -S31540001CC000000000000000000000000000000000CE -S31540001CD000000000000000000000000000000000BE -S31540001CE000000000000000000000000000000000AE -S31540001CF0000000000000000000000000000000009E -S31540001D00000000000000000000000000000000008D -S31540001D10000000000000000000000000000000007D -S31540001D20000000000000000000000000000000006D -S31540001D30000000000000000000000000000000005D -S31540001D40000000000000000000000000000000004D -S31540001D50000000000000000000000000000000003D -S31540001D60000000000000000000000000000000002D -S31540001D70000000000000000000000000000000001D -S31540001D80000000000000000000000000000000000D -S31540001D9000000000000000000000000000000000FD -S31540001DA000000000000000000000000000000000ED -S31540001DB000000000000000000000000000000000DD -S31540001DC000000000000000000000000000000000CD -S31540001DD000000000000000000000000000000000BD -S31540001DE000000000000000000000000000000000AD -S31540001DF0000000000000000000000000000000009D -S31540001E00000000000000000000000000000000008C -S31540001E10000000000000000000000000000000007C -S31540001E20000000000000000000000000000000006C -S31540001E30000000000000000000000000000000005C -S31540001E40000000000000000000000000000000004C -S31540001E50000000000000000000000000000000003C -S31540001E60000000000000000000000000000000002C -S31540001E70000000000000000000000000000000001C -S31540001E80000000000000000000000000000000000C -S31540001E9000000000000000000000000000000000FC -S31540001EA000000000000000000000000000000000EC -S31540001EB000000000000000000000000000000000DC -S31540001EC000000000000000000000000000000000CC -S31540001ED000000000000000000000000000000000BC -S31540001EE000000000000000000000000000000000AC -S31540001EF0000000000000000000000000000000009C -S31540001F00000000000000000000000000000000008B -S31540001F10000000000000000000000000000000007B -S31540001F20000000000000000000000000000000006B -S31540001F30000000000000000000000000000000005B +S315400010009DE3BFC0051001238410A05007100125A1 +S315400010108610E168821000008620C00286A0E008A3 +S3154000102036BFFFFFC038800311100125901221689A +S31540001030C02200004000665D010000004000665D81 +S3154000104001000000400068A301000000111000707C +S31540001050901220BC400061C30100000040006C11AA +S3154000106001000000400002300100000040006730EF +S315400010700100000081C7E00881E800009DE3BFA0B1 +S3154000108021100123C20C205080A060001280002253 +S3154000109023100123C20460542710007025100070ED +S315400010A0A614E024A414A028A4248013A53CA002DE +S315400010B0A404BFFF80A040123A80000E0300000047 +S315400010C0A21460548200600185286002C224400058 +S315400010D0C204C0029FC0400001000000C20440009C +S315400010E080A040120ABFFFF98200600103000000A1 +S315400010F08210600080A060000280000682102001FD +S315400011001110006E6FFFFBBF90122020821020014D +S31540001110C22C205081C7E00881E800009DE3BFA0B3 +S3154000112081C7E00881E800009DE3BFA003000000FE +S315400011308210600080A06000228000081110012506 +S315400011401110006E13100123901220206FFFFBAD8B +S315400011509212605811100125C202216880A06000D9 +S31540001160028000099012216803000000821060008E +S3154000117080A0600002800004010000009FC0400083 +S315400011800100000081C7E00881E800009DE3BFA0A0 +S3154000119081C7E00881E800008292200002800015A5 +S315400011A001000000C400400080A0A0002280001181 +S315400011B092102001C600600880A240032A800008E1 +S315400011C08200600C8800FFFF8401000280A240027A +S315400011D02880000AC20060048200600CC4004000FF +S315400011E080A0A00032BFFFF5C60060089210200123 +S315400011F081C3E00890100009920240019222400308 +S3154000120081C3E008901000099DE3BFA0C2064000DC +S3154000121080A060001280001582007FFFC206600831 +S3154000122080A0600322800014C206600CD2062014FF +S31540001230D006600C4000615394102034C206600C06 +S3154000124082006034C226600CC2066004B0007FFE95 +S3154000125082007FFFB0104018C2266004B136201FBE +S3154000126081C7E00881E80000C226400081C7E00847 +S3154000127091E82000C4062014C6008000C620400025 +S31540001280C600A004C6206004C400A008C4206008AC +S31540001290C206600C8200600CC226600CC206600466 +S315400012A0B0007FFE82007FFFB0104018C226600467 +S315400012B0B136201F81C7E00881E800009DE3BFA04A +S315400012C0C2064000C406A0149B3060188930600CEA +S315400012D088092FFF8608601F833060058208601FDB +S315400012E0DA2EA011C836A012C228A001C628800056 +S315400012F01700003F9612E3F0C2066004C220A02801 +S3154000130082102000C6066008C620A02CC606600CC7 +S31540001310C620A03086064001C600E01080A0E0004E +S315400013209A1020000280000B881020009B30E004B9 +S315400013308808C00B9B2B6014892920109808E00F61 +S315400013409A20000D80A320030280000A8808C0046A +S31540001350860080018200600480A06010DA20E014DC +S3154000136012BFFFEDC820E00481C7E00881E8000015 +S315400013708931200C9A380003881100189B33600489 +S315400013809A0B6FFF9B2B60089A1360FF10BFFFF10B +S315400013909A0360019DE3BEF8F627A050FA27A058AD +S315400013A080A660000280010AA81020102B0003FCD2 +S315400013B0A0102000AA160015A407BFA4A607BFDCEC +S315400013C0A207BF7010800005AC10200180A4001455 +S315400013D01680003437000040932C200594102020BE +S315400013E092024015400060E790100012C207BFA469 +S315400013F080A0600022BFFFF6A0042001C024E010B8 +S31540001400C024C000C024E004C024E008C024E00C8E +S31540001410C0244000C0246004C0246008C024600C7E +S31540001420C0246010C0246014C0246018C024601C0E +S31540001430C0246020C0246024C0246028C024602CBE +S31540001440C0246030E227BFF0EC2FBFEC90100018AC +S31540001450921000127FFFFF9A94100013C20FBFED47 +S3154000146080A0401C32BFFFDAA0042001C217BFEEA5 +S31540001470C407A05880A0400232BFFFD5A004200177 +S31540001480D207A0507FFFFF619010001380A220007A +S3154000149002BFFFCFA004200181C7E00891E82001E8 +S315400014A02D0003FE3B003FFF3300003F9206A04065 +S315400014B0AC160016BA1763FFB21663F0A0102000F0 +S315400014C0A607BFDCA207BF70B616E020AA07BFC4B6 +S315400014D0AE07BFF410800005D227BF6C80A5001070 +S315400014E0048000AE01000000932C200590100012ED +S315400014F092024016400060A394102020C207BFA469 +S3154000150080A0600022BFFFF6A004200182102001C7 +S31540001510C024E010C22FBFECC024C000C024E004A9 +S31540001520C024E008C024E00CC0244000C02460046D +S31540001530C0246008C024600CC0246010C02460141D +S31540001540C0246018C024601CC0246020C0246024CD +S31540001550C0246028C024602CC0246030E227BFF03D +S3154000156090100018921000127FFFFF559410001340 +S31540001570C20FBFED80A7000102800051C217BFEE27 +S31540001580C207BFEC8208401D80A0401B2280005B42 +S31540001590C207BFF0050000408410A00680A04002AC +S315400015A032BFFFCFA0042001C207BFF0C6006004CF +S315400015B088102003030003FC8210C001108000063F +S315400015C08400607880A0400222BFFFC5A0042001AD +S315400015D082006008DA00400080A3600002BFFFFA84 +S315400015E0D8006004920B601F973360189533600CE7 +S315400015F09B3360059A0B601F940AAFFFC025C0005D +S31540001600D22FBFF4DA2FBFF5130003FF9B3320041C +S31540001610921263FF9A0B6FFF9B2B60089A2A400D2C +S315400016209A036001133FFC00DA27BFFCC025400047 +S315400016309A0B0019C02560049B2B6004980B000987 +S31540001640C02560089933200CC025600C980B400CCF +S31540001650EE27BFD898130003C82FBFD4D62FBFD5C7 +S31540001660D437BFD680A7000B12BFFFD7D827BFF805 +S31540001670DA07A05880A3400A12BFFFD480A04002D8 +S31540001680D207A050C227BF60C427BF64C627BF5C2D +S31540001690C827BF687FFFFEDD90100015C207BF60F8 +S315400016A080A22000C407BF64C607BF5C12BFFF7B91 +S315400016B0C807BF6810BFFFC580A04002DA07A05820 +S315400016C080A3400112BFFFB0C207BFECD207A050B3 +S315400016D07FFFFECE9010001380A2200012BFFF6F46 +S315400016E0C207BFEC8208401D80A0401B12BFFFAB63 +S315400016F005000040C207BFF0C408600180A0A000FA +S3154000170022BFFF77A004200180A6A0000280001718 +S31540001710D000602C82102000C406800180A0A0006A +S315400017200280000880A2000222BFFF6DA0042001B3 +S315400017308200600480A0604032BFFFF9C406800189 +S31540001740C607BF6C8210001AC400400080A0A000EB +S3154000175022800014D02040008200600480A0400314 +S3154000176032BFFFFBC4004000D607A050DA07A0589E +S31540001770921000139410001A7FFFFF079810001C68 +S3154000178080A2200012BFFF45A004200180A50010C2 +S3154000179014BFFF57932C200581C7E00891E820002D +S315400017A0D607A05092100013DA07A0589410001ADA +S315400017B07FFFFEF99810001C80A2200012BFFF3761 +S315400017C0A004200110BFFFF380A5001080A6A00052 +S315400017D00280000B8210001A8606A040C40040001A +S315400017E080A0A00022800008F02040008200600413 +S315400017F080A0400332BFFFFBC400400010BFFEEC98 +S31540001800A810204010BFFEEAA81020409DE3BF501C +S315400018109407BFB08210200398100018C022A00879 +S31540001820C022A00CC022A010C022A014C022A01822 +S31540001830C022A01CC022A020C022A024C022A028D2 +S31540001840C022A02CC022A030C022A034C022A03882 +S31540001850C022A03CA0102001F427BFFCC027BFB087 +S31540001860C027BFB4C027BFF09A100019E027BFF4C5 +S31540001870C227BFF8921020009607BFF07FFFFEC632 +S31540001880113FFC00F007BFF4B024001881C7E00800 +S3154000189081E800009DE3BF9090102001A007BFF4AF +S315400018A09210200C7FFFFFDA9410001080A22001D6 +S315400018B00280001A0310012390102001921020117B +S315400018C07FFFFFD39410001080A220010280000DFC +S315400018D00710012494100010901020017FFFFFCCC8 +S315400018E09210200D80A220011280000403100123D3 +S315400018F0C407BFF8C420602C81C7E00881E8000017 +S31540001900C207BFF884006010C220E0A40310012380 +S3154000191010BFFFF1C4206028C407BFF810BFFFE71F +S31540001920C42060349DE3BFA04000002301000000B6 +S3154000193040000174010000004000000381E80000FF +S315400019400100000003100080C200600C84102001DA +S3154000195090102000C420601481C3E00801000000FC +S3154000196003100080C200600C841000089010200014 +S31540001970C420400081C3E00801000000031000803D +S31540001980C200600C8410000890102000C42060083B +S3154000199081C3E0080100000003100080C200600C13 +S315400019A08410000890102000C420600481C3E00821 +S315400019B0010000009DE3BFA04000001401000000AC +S315400019C080A220001280000503100080C200600C37 +S315400019D084102001C420601081C7E00891E82000EF +S315400019E013100080921260109010200081C3E0080E +S315400019F0D0EA402090102000131000809212601010 +S31540001A0081C3E008D0224000914440009132201C1E +S31540001A1081C3E008900A200F81C3E008D0820020ED +S31540001A209010200C81C3E008D08200409DE3BFA007 +S31540001A30C2062010A01000188330601C80A06000F1 +S31540001A4002800009B0103FFF7FFFFFF00100000059 +S31540001A5080A22000128000040300003F821063FF32 +S31540001A60C224201081C7E00881E800009DE3BFA0A2 +S31540001A70E4062010A534A01CA404A00180A4A00163 +S31540001A800280003CB0103FFF7FFFFFE001000000F6 +S31540001A90AA100008912A20047FFFFFB99002200770 +S31540001AA07FFFFFE00100000003020000808A000182 +S31540001AB00280007401000000A72D6002091000801A +S31540001AC0881120148210200184102001C2210013A5 +S31540001AD08210200080A480011480000987286002BB +S31540001AE080A0A000128000258210200084102001D2 +S31540001AF080A4800104BFFFFB87286002C601000363 +S31540001B0080A00003820060018660200010BFFFF2C3 +S31540001B1084088003C205A074852CA003A12CA001D3 +S31540001B20A004000280A4000102800004010000001D +S31540001B307FFFFF9A90102003C205A07480A060002A +S31540001B400480000603100123C200607480A40001D3 +S31540001B501680000580A560007FFFFF90901020034F +S31540001B6080A5600002800003B010200091D02000C4 +S31540001B7081C7E00881E8000023100080A214609C21 +S31540001B802D100123C0244013C204401380A06009D5 +S31540001B901480002709100080A815A0747FFFFF91CC +S31540001BA00100000080A2200012BFFFFD80A4A0001B +S31540001BB00480001301000000A0102000C40440135C +S31540001BC0832C2002C204400180A08001A004200191 +S31540001BD004800003862040028620800180A0E00128 +S31540001BE00480000580A480107FFFFF6C90102002C7 +S31540001BF080A4801014BFFFF201000000C20500005F +S31540001C0082006001C22500007FFFFF7B01000000CB +S31540001C10C204401382006001C2244013C204401330 +S31540001C2080A0600904BFFFDE09100080881120589B +S31540001C308210200184102001C2210013821020004E +S31540001C4080A48001148000098728600280A0A0003B +S31540001C5012BFFFB1821020008410200180A48001B1 +S31540001C6004BFFFFB87286002C601000380A0000373 +S31540001C70820060018660200010BFFFF28408800366 +S31540001C807FFFFF469010200110BFFF8DA72D6002F9 +S31540001C909DE3BFA0E4062010A0100018A534A01CA8 +S31540001CA0A404A00180A4A0010280003FB0103FFF21 +S31540001CB07FFFFF5601000000AA100008912A200469 +S31540001CC07FFFFF2F900220077FFFFF560100000095 +S31540001CD003020000808A00010280007701000000B4 +S31540001CE0A72D60020910008088112014821020015F +S31540001CF08405600185284002C4242010C2210013B7 +S31540001D00841020018210200080A4800114800009E4 +S31540001D108728600280A0A000128000258210200043 +S31540001D208410200180A4800104BFFFFB8728600245 +S31540001D30C601000380A00003820060018660200087 +S31540001D4010BFFFF284088003C205A074852CA0034F +S31540001D50A12CA001A004000280A40001028000047E +S31540001D60010000007FFFFF0D90102003C205A07404 +S31540001D7080A060000480000603100123C200607446 +S31540001D8080A400011680000580A560007FFFFF0348 +S31540001D909010200380A5600002800003B010200050 +S31540001DA091D0200081C7E00881E800002310008020 +S31540001DB0A214609C2D100123C0244013C20440137A +S31540001DC080A060091480002709100080A815A0741F +S31540001DD07FFFFF040100000080A2200012BFFFFD2C +S31540001DE080A4A0000480001301000000A010200081 +S31540001DF0C4044013832C2002C204400180A0800109 +S31540001E00A004200104800003862040028620800131 +S31540001E1080A0E0010480000580A480107FFFFEDFE3 +S31540001E209010200280A4801014BFFFF20100000031 +S31540001E30C205000082006001C22500007FFFFEEE61 +S31540001E4001000000C204401382006001C224401316 +S31540001E50C204401380A0600904BFFFDE0910008061 +S31540001E60881120588210200184102001C2210013BD +S31540001E708210200080A48001148000098728600217 +S31540001E8080A0A00012BFFFB1821020008410200164 +S31540001E9080A4800104BFFFFB87286002C6010003BF +S31540001EA080A00003820060018660200010BFFFF220 +S31540001EB0840880037FFFFEB99010200110BFFF8A7F +S31540001EC0A72D60029DE3BFA02120000094102000B2 +S31540001ED09214220040003C4F9010200140003B07E6 +S31540001EE0901422009210001840003C939014230056 +S31540001EF0B01421004000384381E800000100000092 +S31540001F009DE3BFA0312000009410200092162200CD +S31540001F1040003C409010200140003AF890162200C4 +S31540001F209016230040003C8492102008B0162100F1 +S31540001F304000383481E80000010000000000000045 S31540001F40000000000000000000000000000000004B S31540001F50000000000000000000000000000000003B S31540001F60000000000000000000000000000000002B @@ -2049,39 +2049,39 @@ S31540007FE0000000000000000000000000000000004B S31540007FF0000000000000000000000000000000003B S315400080009DE3BF9081C7E00881E8000003000010AF S31540008010C48000408088800112BFFFFE010000003E -S315400080209DE3BF909DE3BF909DE3BF909DE3BF90CE -S315400080309DE3BF909DE3BF9021044444A0142111C9 -S3154000804023088888A2146222250CCCCCA414A3331E -S3154000805027111111A614E04429155555A815215587 -S315400080602B199999AA1562662D1DDDDDAC15A377EE -S315400080702F222222AE15E08801100000E03FBFE02B -S31540008080E43FBFE8E83FBFF0EC3FBFF88210001E78 -S315400080908220601CC0A041E082206008C0A041E070 -S315400080A082206008C0A041E082206008C0A041E074 -S315400080B0C0A002209DE3BF909DE3BF9081E80000F1 -S315400080C081E800000100000001000000E01FBFE061 -S315400080D0E41FBFE8E81FBFF0EC1FBFF80100000037 -S315400080E00100000081E8000081E8000081E800000E -S315400080F081E8000081E8000081C7E00881E80000CF -S31540008100A7500000AA102400A8102300EC854320A5 -S31540008110EA8503202F100020AE15E150EE05C00081 -S31540008120E805C000EA05E004EC05E008AC15A0004F -S31540008130C0A58300EA250000AE05E00C2B10002008 -S31540008140AA156150EE25400081C4400081CC8000D4 -S3154000815000000000010000000000000000000000D8 -S3154000816000000000000000000000000000000000C9 +S31540008020C46FBFF89DE3BF909DE3BF909DE3BF90B3 +S315400080309DE3BF909DE3BF909DE3BF9021044444E0 +S31540008040A014211123088888A2146222250CCCCCC6 +S31540008050A414A33327111111A614E044291555552C +S31540008060A81521552B199999AA1562662D1DDDDD96 +S31540008070AC15A3772F222222AE15E088011000000E +S31540008080E03FBFE0E43FBFE8E83FBFF0EC3FBFF86A +S315400080908210001E8220601CC0A041E08220600841 +S315400080A0C0A041E082206008C0A041E08220600874 +S315400080B0C0A041E0C0A002209DE3BF909DE3BF90D9 +S315400080C081E8000081E80000010000000100000096 +S315400080D0E01FBFE0E41FBFE8E81FBFF0EC1FBFF89A +S315400080E0EC6FBFF8EC7FBFF8010000000100000014 +S315400080F081E8000081E8000081E8000081E8000096 +S3154000810081E8000081C7E00881E80000A750000030 +S31540008110AA102400A8102300EC854320EA850320FA +S315400081202F100020AE15E160EE05C000E805C00046 +S31540008130EA05E004EC05E008AC15A000C0A5830004 +S31540008140EA250000AE05E00C2B100020AA15616060 +S31540008150EE25400081C4400081CC80000100000033 +S3154000816000000000010000000000000000000000C8 S3154000817000000000000000000000000000000000B9 S3154000818000000000000000000000000000000000A9 -S315400081900000000001000000010000000100000096 -S315400081A00100000001000000010000000100000085 +S315400081900000000000000000000000000000000099 +S315400081A00000000001000000010000000100000086 S315400081B00100000001000000010000000100000075 -S315400081C00100000001000000010000000100000065 +S315400081C081C3E008D0A003200100000001000000A8 S315400081D00100000001000000010000000100000055 -S315400081E00100000001000000010000000100000045 -S315400081F00100000001000000010000000100000035 -S315400082000100000001000000010000000100000024 -S315400082100100000001000000010000000100000014 -S315400082200100000001000000010000000100000004 +S315400081E09DE3BF90FC2780009007A0019410001EDD +S315400081F0D1E7816AD1E7816A9402A0019002200109 +S31540008200D1E7816AD1E7816AD60780009622C01EEF +S31540008210B0A2E00202800004900020017FFFE5DF6B +S315400082200100000081C7E00881E80000010000006D S3154000823001000000010000000100000001000000F4 S3154000824001000000010000000100000001000000E4 S3154000825001000000010000000100000001000000D4 @@ -4095,3250 +4095,4438 @@ S3154000FFC001000000010000000100000001000000E7 S3154000FFD001000000010000000100000001000000D7 S3154000FFE001000000010000000100000001000000C7 S3154000FFF001000000010000000100000001000000B7 -S315400100009DE3BF987FFFC4741100403080A2200059 -S31540010010128000F382102001C226200CC026200443 +S315400100009DE3BFA07FFFC6571100403080A220006C +S31540010010128000AF82102001C226200CC026200487 S31540010020C0260000C026200882102002C2262008D1 S31540010030C0260000C026000082102003C2262008E8 -S315400100409A102083DA262008A2102063C0260000D9 -S31540010050A2847FFF1CBFFFFE01000000A2102063A7 -S31540010060C2060000A2847FFF1CBFFFFE8210200251 -S31540010070C2262008A4062004C28480208088600409 -S3154001008002BFFFFE01000000C0262008C026000076 -S31540010090A6102001C2848020833860148208603F04 -S315400100A080A0600122800093A604E0018210200313 -S315400100B0C2262008C2848020808860010280000711 -S315400100C080886004C2860020C284802080886001C6 -S315400100D012BFFFFD8088600402BFFFFB808860027B -S315400100E002BFFFF901000000C0262008C0262004F7 -S315400100F080A4E0010480000821100080C284802091 -S315400101008208608080A06001028000AE010000008C -S3154001011021100080DA4C20F0DA260000C2848020CB -S315400101208208600480A060010280009A01000000FC -S31540010130C284802080A4E001048000208210200136 -S31540010140A210200180A440131680000D2B100080C0 -S31540010150A81420F0E00560E8901000114000247AD0 -S3154001016092100010C24D0008A2046001C226000090 -S3154001017080A4401306BFFFFA90100011C28480206C -S315400101808208608080A06001028000920100000028 -S31540010190C2848020833860148208603F80A0401367 -S315400101A002800004010000007FFFC4159010200664 -S315400101B0C284802082102001C226200CDA8480204D -S315400101C0808B60011280006801000000821020834C -S315400101D0C226200880A4E0010280005201000000EE -S315400101E0C28480208088640002BFFFFE01000000B7 -S315400101F0C284802080886001028000530100000093 -S3154001020080A4E00124800012A2102000C284802034 -S315400102108330601A80A04013028000040100000070 -S315400102207FFFC3F790102009C28480208088610037 -S315400102300280005501000000C2848020808864004D -S315400102400280004D01000000A210200080A440134E -S315400102501680001203100080A81060F02B10008059 -S31540010260E08600209010001140002437D20560E856 -S31540010270C24D0008A204600180A040100280000423 -S315400102809010200C7FFFC3DE0100000080A44013C4 -S3154001029006BFFFF40100000080A4E0010480000FC6 -S315400102A001000000C28480208088610012800042E3 -S315400102B001000000C28480208330601A80A0600063 -S315400102C01280003A01000000C284802080886400C8 -S315400102D01280003301000000C284802080886001C2 -S315400102E01280001D01000000C02620083080003C1D -S315400102F0C0260000C2848020833860148208603F93 -S3154001030080A0401322BFFFFBA604E00180A4E001C8 -S3154001031034BFFF67A604FFFF10BFFF6682102003AC -S31540010320C28480208088600112BFFFB201000000B4 -S31540010330C28480208088600102BFFFFA010000006C -S3154001034030BFFFAC7FFFC3AE9010200810BFFFAE99 -S3154001035080A4E0017FFFC3AA9010200CC02620088C -S315400103603080001F7FFFC3A69010200710BFFF9962 -S31540010370821020837FFFC3A29010200B10BFFFB4D1 -S31540010380A21020007FFFC39E9010200A30BFFFAB12 -S315400103907FFFC39B9010200130BFFF667FFFC3984C -S315400103A09010200B30BFFFCD7FFFC3959010200EDC -S315400103B030BFFFC67FFFC3929010200D30BFFFBEF6 -S315400103C07FFFC38F9010200410BFFF532110008080 -S315400103D07FFFC38B9010200530BFFF6E81C7E008B9 -S315400103E091E8200017100143DA02E08090022010C4 -S315400103F09B2B60029812E080D023000DC202E08060 -S3154001040082006001C222E08081C3E0080100000051 -S31540010410C0220000C022204082103FFFC222200C91 -S315400104209A10200103100143DA20608081C3E0085D -S31540010430010000009DE3BF7803100144F02060CC29 -S315400104407FFFC365110040347FFFFFF29010001813 -S31540010450A010200123100040921000104000298F67 -S31540010460901463E4A004200180A4200F04BFFFFC84 -S3154001047092100010C20620208330601CAE0060013D -S31540010480AC10200080A58017168000ED0300003FC8 -S31540010490B81063FE2B1001430300002AB61062AA6E -S315400104A0BA102001B410001CB2156080832DA00C37 -S315400104B080A5E00114800119A600401880A5A0007E -S315400104C01280010A01000000F824E008C204E00895 -S315400104D080A0401C02800004010000007FFFC34849 -S315400104E090102001F824E040C204E04080A0401C66 -S315400104F002800004010000007FFFC34190102002EA -S31540010500C204E00880A0600012BFFFFE01000000A7 -S31540010510C205608080A0601002800005251001435D -S315400105207FFFC3379010200325100143A0102001FF -S31540010530A414A080A2102020832C20029A244010CB -S31540010540D8048001A004200180A3000D028000048C -S31540010550901020047FFFC32A0100000080A4200FD1 -S3154001056004BFFFF7832C2002FA256080F624C000E1 -S31540010570F424E040C204C00080A0401B0280000475 -S31540010580A010001A7FFFC31E90102005C204E04050 -S3154001059080A0401002800004010000007FFFC318C4 -S315400105A090102005F424E008C204E00880A0600011 -S315400105B012BFFFFE01000000C205608080A06010EE -S315400105C002800005251001437FFFC30D90102006D0 -S315400105D025100143A0102001A414A080A210201FC1 -S315400105E09B2C2002C204800D80A04011A004200152 -S315400105F0A2047FFE02800004901020077FFFC30003 -S315400106000100000080A4200704BFFFF79B2C2002B5 -S31540010610A4066028A210201CA0102005C204800058 -S3154001062080A04011A404A004A2047FFE028000041D -S31540010630901020087FFFC2F201000000A0843FFF16 -S315400106401CBFFFF701000000FA27BFE8C207BFE859 -S3154001065082006001C227BFECDA07BFEC9A03600152 -S31540010660DA27BFF0C207BFF082006001C227BFF49C -S315400106709A102006DA27BFD8C024C000C024E04023 -S31540010680FA256080A0102002E024E040E024E00842 -S31540010690834440008088610002800005010000001B -S315400106A0805000018050000180500001C207BFD830 -S315400106B0C227BFDCDA07BFD880A3600602800004E8 -S315400106C0010000007FFFC2CE9010200AE024E0081E -S315400106D001000000C207BFD8C227BFDCDA07BFD876 -S315400106E080A3600602800004010000007FFFC2C4AF -S315400106F09010200AE024E00801000000C027BFDC7A -S31540010700C207BFDC80A06000128000960100000095 -S31540010710C204E00880A0600012BFFFFE0100000095 -S31540010720C205608080A06004028000050300003F8E -S315400107307FFFC2B39010200D0300003FC024E0406C -S31540010740821063FEC224E008031001439A1020017F -S31540010750DA206080400003E801000000400003E821 -S3154001076090122F0082103FFFC224E040C204E040B5 -S3154001077080A0600002BFFFFE01000000C20560804C -S3154001078080A0600202800004A01560807FFFC29CA9 -S315400107909010200EC204200480A0601F0280000435 -S315400107A0010000007FFFC2969010200F400003D247 -S315400107B0A8100010400003D290023F00A010200272 -S315400107C0A4102020400003CC01000000400003CCCF -S315400107D090023F00C2056080A204200180A0401122 -S315400107E002800004901020107FFFC28501000000A6 -S315400107F0832C20029A248010D8050001A0100011F4 -S3154001080080A3000D02800004901020117FFFC27C5E -S315400108100100000080A4200F04BFFFEB010000008F -S31540010820C024E040AC05A00182103FFFC224E00C89 -S3154001083080A5801706BFFF1F832DA00C80A5E00170 -S315400108400480004B01000000C0262024C20620245B -S3154001085080A060001280003F0100000021040000DA -S31540010860E0262024C206202480A0401002800005F4 -S31540010870821020017FFFC262901020148210200155 -S31540010880C2262020C0262024C206202480A0401053 -S3154001089002800004010000007FFFC259901020151C -S315400108A0C0262020C0262024C206202480A0600025 -S315400108B0128000240100000082102002C22620205E -S315400108C0DA062020808B60020280001B01000000B6 -S315400108D0C0262020C2062020808860020280002493 -S315400108E001000000308000117FFFFECA9010001306 -S315400108F09B2DA01CDA24E024C204E0248330601C32 -S3154001090080A0401602BFFEF1010000007FFFC23CFD -S315400109109010201230BFFEED7FFFC23490100016BA -S3154001092010BFFEE880A5A0007FFFC23590102018B9 -S315400109303080000F7FFFC2329010201730BFFFE595 -S315400109407FFFC22F9010201610BFFFDD82102002BC -S315400109507FFFC22B9010201310BFFFC2210400005D -S315400109607FFFC2279010200B30BFFF6A81C7E00886 -S3154001097091E8200003100143DA0060C8C0236008F3 -S3154001098081C3E008901020009DE3BF902F100144E1 -S31540010990E205E0CCA004610027100143C204200413 -S315400109A0F024E0C87FFFC21190102010030180009F -S315400109B0DA04200482106020808B40011280010DF0 -S315400109C001000000DA046100DA27BFF0C2046100C9 -S315400109D080A3400102800005821020017FFFC208EA -S315400109E09010200282102001C2242004DA04610002 -S315400109F0DA27BFF0C204610080A3400102800120D2 -S31540010A0001000000C0242004DA046100DA27BFF0A7 -S31540010A10C204610080A340010280000580A7200036 -S31540010A207FFFC1F79010200480A72000128000B7F5 -S31540010A3080A72001B010200180A6001A1680001759 -S31540010A40A8102001108000052510004280A6001A3A -S31540010A5016800013DA04E0C8A206C0189014A174E7 -S31540010A609210001180A4601F14BFFFF9B006200147 -S31540010A704000280A01000000D805E0CCC20320400E -S31540010A809B2D00118210400DC223204080A6001AE2 -S31540010A9006BFFFF3A206C018DA04E0C89606A00313 -S31540010AA0C0236004833AE01FC023601098103FFFC3 -S31540010AB08330601EAA02C001D8236014D823600C7B -S31540010AC0A2102000AD3D600280A720000280008A6E -S31540010AD0A810200180A4401C168000ECC204E0C886 -S31540010AE080A7200104800015B010200080A5A00039 -S31540010AF00480001380A0001C9B2C6010832C60187E -S31540010B008210400D992C60088210400C82104011D1 -S31540010B10993D6002DA04E0C8C2236020B006200194 -S31540010B2080A72001048000059A03600480A3001871 -S31540010B3014BFFFFA0100000080A0001CB0603FFF17 -S31540010B4080A6001A16800016C204E0C8250180005E -S31540010B5080A72000028000058206C01880A72001D8 -S31540010B60028000848206C011C2242004D804E0C851 -S31540010B70832D00189B3E4018C2232008808B6001BC -S31540010B80128000859A10000CB006200180A6001A3A -S31540010B9006BFFFF180A72000C204E0C8C02060085C -S31540010BA0808E600112800009B0102000B00620013D -S31540010BB080A6201F14800005833E4018808860016E -S31540010BC022BFFFFCB006200180A72000028000065C -S31540010BD08206C01880A72001028000048216E02008 -S31540010BE08206C01182106020C2242004DA04E0C8C3 -S31540010BF0832D0018C2236008C203600880A06000EC -S31540010C0012BFFFFE01000000C2042004808860205C -S31540010C100280009801000000DA042004030100006C -S31540010C20808B40010280009001000000DA0420041C -S31540010C3003008000808B4001028000880100000093 -S31540010C40C2042008C227BFF0DA04200CDA27BFF419 -S31540010C50C204E0C8992D0018D82060089A100001F6 -S31540010C60C203600880A0600012BFFFFE01000000C1 -S31540010C70C2042004808860200280007501000000C3 -S31540010C80DA04200403010000808B40010280006DDC -S31540010C9001000000DA04200403008000808B40013B -S31540010CA00280006501000000DA042008C207BFF097 -S31540010CB080A0400D02800004010000007FFFC1506A -S31540010CC09010200EDA04200CC207BFF480A0400D1C -S31540010CD002800005030180007FFFC1499010200F6B -S31540010CE003018000C224200480A7200012BFFF7A9E -S31540010CF0A204600180A4600004BFFF7B80A720019D -S31540010D0010800062C204E0C80280003D111000421A -S31540010D10B010200080A6001C16BFFF60A81020015D -S31540010D20108000052510004280A6001C16BFFF5CFE -S31540010D30DA04E0C8A206C0189014A17492100011FA -S31540010D4080A4601F14BFFFF9B0062001400027535D -S31540010D5001000000D805E0CCC20320409B2D0011C4 -S31540010D608210400DC223204010BFFFF180A6001C17 -S31540010D70F6242004D804E0C8832D00189B3E401871 -S31540010D80C2232008808B600122BFFF81B00620016B -S31540010D909A10000CC203600880A0600012BFFFFEDB -S31540010DA001000000DA04200403010000808B4001A9 -S31540010DB00280001E01000000DA04200403008000C6 -S31540010DC0808B40010280001601000000E4242004CB -S31540010DD0C20420048088401222BFFF6DB006200164 -S31540010DE07FFFC1079010200710BFFF69B0062001A1 -S31540010DF07FFFC1039010200130BFFEF39012217492 -S31540010E00400027269210001BDA05E0CC832F001BF9 -S31540010E10C223604010BFFF22DA04E0C87FFFC0F85A -S31540010E209010200630BFFFEA7FFFC0F590102005E5 -S31540010E3030BFFFE27FFFC0F29010200D30BFFF9B15 -S31540010E407FFFC0EF9010200C30BFFF937FFFC0ECB7 -S31540010E509010200B30BFFF8B7FFFC0E99010200A16 -S31540010E6030BFFF787FFFC0E69010200930BFFF708A -S31540010E707FFFC0E39010200830BFFF687FFFC0E0CE -S31540010E809010200330BFFEE0C020600CDA05E0CCB4 -S31540010E90C023604082103FFFC223600C81C7E00837 -S31540010EA091E820009DE3BF983B100144E60760CCE2 -S31540010EB07FFFC0CE90102011C024E01CC204E01C6C -S31540010EC080A060000280004801000000C204E01CCE -S31540010ED08330601B80A0401A0A80003F0100000059 -S31540010EE0A410200080A4801A1A8000422D100143CC -S31540010EF0AA102001AE15A080A32CA002E006401145 -S31540010F007FFFFD4490100013A804A0019B2D4012C1 -S31540010F10832D20108210400DC224E01C9A103FFF01 -S31540010F20DA24E040D80600119A10201FDA23200463 -S31540010F30A0043FFFDA230000A12C20048204000C08 -S31540010F409A102005DA206010C0206014EA2060184B -S31540010F509A100001C203601080A0600012BFFFFE1C -S31540010F6001000000A004000CC204201080A0600013 -S31540010F7002BFFFFE01000000C0242018C205A08068 -S31540010F8080A06002028000069A04A011900480129B -S31540010F907FFFC09B900220039A04A011C205E00482 -S31540010FA080A0400D22800006A410001490048012F7 -S31540010FB07FFFC09390022004A4100014C024E01CBB -S31540010FC080A5001A0ABFFFCEA32CA0021080000AFA -S31540010FD0DA0760CC7FFFC08A9010200210BFFFC2A3 -S31540010FE0A41020007FFFC0869010200130BFFFB8BB -S31540010FF0DA0760CCC023604082103FFFC223600CF9 -S3154001100081C7E00891E820009DE3BF987FFFC08B30 -S315400110100100000080A220000280002680A6200058 -S3154001102012800029010000007FFFC08401000000FA -S31540011030912A20047FFFC06D900220034000186D65 -S315400110400100000080A220001280002B0100000058 -S315400110504000182B01000000400017E40100000089 -S31540011060400002270100000080A6A0001280002D4A -S31540011070031001447FFFC071B41060D0912A200251 -S31540011080C206800880A060001280003080A6200041 -S3154001109012800039010000004000048E010000006A -S315400110A040001E0201000000400015C181E8000019 -S315400110B07FFFC0491100400C80A6200002BFFFDB24 -S315400110C0010000007FFFC0F5901000197FFFC05B53 -S315400110D001000000912A20047FFFC04490022003B2 -S315400110E0400018440100000080A2200002BFFFD941 -S315400110F0010000007FFFC04290102001400018000F -S3154001110001000000400017B901000000400001FC49 -S315400111100100000080A6A00002BFFFD703100144D2 -S3154001112040001DED01000000031001447FFFC04354 -S31540011130B41060D0912A2002C206800880A06000C7 -S3154001114002BFFFD480A620007FFFC03C0100000003 -S315400111507FFFC03AA0100008912A2002C2068008EB -S315400111609FC040009010001080A6200002BFFFCB18 -S31540011170010000007FFFC0D99010001940000455BE -S315400111800100000040001DC9010000004000158813 -S3154001119081E800000100000003100143DA0060CC41 -S315400111A09A036001DA2060CC81C3E00801000000A7 -S315400111B09DE3BF987FFFC00811004044D806200830 -S315400111C082103FFFC2262004DA060000C206000054 -S315400111D080A340010280006FA60B20078210201FCA -S315400111E0C2262004C226000080A4E000028000330B -S315400111F082100018A2100013C0206018A2847FFF3D -S3154001120012BFFFFE82006010A210200080A440138E -S315400112101680002B80A4E001A810200FA010001812 -S315400112207FFFBFF290100011C0242010E824201443 -S3154001123082102006C2242018DA04201080A3600FF1 -S3154001124002800004010000007FFFBFED90102003E3 -S31540011250E82420189A10200EC204201080A0400DC8 -S3154001126012BFFFFE010000009A837FFF1CBFFFFBF8 -S31540011270A4100010C204201080A0600F12BFFFFE10 -S3154001128001000000C20420188088601002800035E9 -S3154001129082102010C224A018DA042018808B601016 -S315400112A01280003801000000A204600180A44013AE -S315400112B006BFFFDCA004201080A4E00114800010CA -S315400112C080A4E0000280000782100018A2100013DB -S315400112D0C0206018A2847FFF12BFFFFE820060100B -S315400112E021100144C20420CC80A060000280002D60 -S315400112F0111000441080000D921000197FFFBFBBF2 -S31540011300901020088210200FC22620189A10202FF4 -S31540011310DA262028C206202080A0600D12BFFFFEDB -S3154001132080A4E00030BFFFE8400025DC9012219800 -S315400113307FFFFC38D00420CC82102001832840193D -S31540011340DA0420CCC22360409810200FD8262014FE -S315400113508210200DC2262018A7800000308000117F -S315400113607FFFBFA79010200482102010C224A0182E -S31540011370DA042018808B601022BFFFCDA2046001E1 -S315400113807FFFBF9F9010200510BFFFC9A2046001D7 -S315400113907FFFBF9B9010200110BFFF928210201F3C -S315400113A081C7E00881E8000000000000000000005D -S315400113B000000000000000000000000000000000E6 -S315400113C001000000010000000100000001000000D2 -S315400113D0010000000100000081C3E0080100000097 -S315400113E001000000010000000100000001000000B2 -S315400113F0010000000100000081C3E0080100000077 -S315400114000100000001000000010000000100000091 -S31540011410010000000100000081C3E0080100000056 -S315400114200100000001000000010000000100000071 -S31540011430010000000100000081C3E0080100000036 -S31540011440D482018090A2000916BFFFFE9612800B3E -S3154001145081C3E0089010000BD48201C090A200091C -S3154001146016BFFFFE9612800B81C3E0089010000B59 -S3154001147090A22004C0A201A090A22004C0A201A073 -S3154001148090A22004C0A201A090A22004C0A201A063 -S31540011490C0A2018090A2200414BFFFF70100000002 -S315400114A081C3E0080100000090A22004C0A201E02F -S315400114B090A22004C0A201E090A22004C0A201E0B3 -S315400114C090A22004C0A201E0C0A201C090A22004C3 -S315400114D014BFFFF70100000081C3E00801000000CE -S315400114E0981000089610000A98A3200814BFFFFF21 -S315400114F0D43B00099810000898A3200814BFFFFFA9 -S31540011500C01B00099810000898A32004D6030009BF -S3154001151080A2C00A1280000698A3200434BFFFFDB2 -S31540011520D603000981C3E0089010200090102001E5 -S31540011530981000089610000A98A3200814BFFFFFD0 -S31540011540D43B00099810000898A32004D60300094B -S3154001155080A2C00A1280000698A3200434BFFFFD72 -S31540011560D603000981C3E0089010200090102001A5 -S315400115709810000898A32004D2A301A0DA8301A001 -S3154001158080A340091280000698A3200414BFFFFCE3 -S31540011590D2A301A081C3E008901020009010200141 -S315400115A09A1000089AA3400AD6A34180D883418065 -S315400115B0981B000B988B0009128000069AA3400ADB -S315400115C014BFFFFBD6A3418081C3E00890102000E1 -S315400115D0901020019A1000089AA3400BD8A241CD41 -S315400115E0C48241CD8418800C8488800A128000060A -S315400115F09AA3400B14BFFFFBD8A241CD81C3E0089B -S315400116009010200090102001010000000100000010 -S31540011610010000001310008092126138D40240008C -S3154001162080A2A0011280000780A0A002D40240003F -S31540011630D4024000952AA002108000050100000056 -S315400116403280000381E80000D402400081E00000BE -S3154001165093480000818A602023100045A2146278D5 -S31540011660A40460040100000081C4400081CC8000D4 -S3154001167091D0200191D020012680000590002001C3 -S3154001168090222001912A2001912A200281C3E0085B -S315400116900100000081C3E008D082004081C3E00818 -S315400116A0D2A2004081C3E008D082018081C3E00814 -S315400116B0D2A2018081C3E008D08201A081C3E008A3 -S315400116C0D2A201A081C3E008D08201C081C3E00853 -S315400116D0D2A201C081C3E008D08201E081C3E00803 -S315400116E0D2A201E081C3E008D2A2000081C3E00892 -S315400116F0D082000081C3E00891480000818A000041 -S3154001170001000000010000000100000081C3E00863 -S315400117100100000081C3E008C0A000A081C3E00829 -S31540011720C0A000C081C3E008D01A0000010000003B -S31540011730010000000100000001000000010000005E -S315400117409DE3BF701310006DCD1A6160CD3FBFE0C0 -S31540011750111000801B100080C91B61E0C51A21D8F9 -S31540011760C11FBFE095A088C4D53FBFF0D91FBFF0C8 -S3154001177003100080D11861E881AB0A4801000000DE -S315400117800380002BC13FBFD8F91FBFD8B5A0055C68 -S31540011790F53FBFF0ED1FBFF0F11FBFF0A5A589587A -S315400117A0E91FBFE0A1A488D41510006DA1A00130A6 -S315400117B0DD1AA16881AC0ACE010000000D80002D22 -S315400117C0F53FBFD0C51FBFD083A018C291A0492104 -S315400117D099A01928D51FBFE091A308CA1710006D1B -S315400117E091A00128FD1AE17081AA0ADE01000000DC -S315400117F00D80002F01000000400001AE01000000F5 -S315400118004000020C0100000080A22000128000313D -S3154001181001000000400002610100000080A220009A -S315400118200280003501000000308000317FFFBE7428 -S3154001183090102001F91FBFD8B5A0055CF53FBFF058 -S31540011840ED1FBFF0F11FBFF0A5A58958E91FBFE005 -S31540011850A1A488D41510006DA1A00130DD1AA1689C -S3154001186081AC0ACE010000001BBFFFD7F53FBFD0B8 -S315400118707FFFBE6390102002C51FBFD083A018C250 -S3154001188091A0492199A01928D51FBFE091A308CA63 -S315400118901710006D91A00128FD1AE17081AA0ADE98 -S315400118A0010000001BBFFFD5010000007FFFBE54B1 -S315400118B0901020034000017F01000000400001DD3F -S315400118C00100000080A2200002BFFFD301000000FA -S315400118D07FFFBE4B010000004000023001000000C6 -S315400118E080A2200002800004010000007FFFBE4468 -S315400118F09010200581C7E00881E800009DE3BF986C -S315400119007FFFFF7D210000047FFFFF7D90120010C5 -S315400119107FFFFF79B0102000808A00100280000B03 -S315400119209010200040000267010000007FFFBE4387 -S3154001193001000000912A20047FFFBE2C900220085E -S315400119407FFFFF800100000081C7E00881E80000B9 -S31540011950191000809813217811100200921020006E -S31540011960150FF76C9412A3D7D03B0000D42320085F -S31540011970C11B0000C503200887A089220100000081 -S3154001198089A005408DA0892281A8CA2601000000B0 -S3154001199033800003901020009010200181C3E0089D -S315400119A001000000C11A0000C51A400089A0084282 -S315400119B081C3E008C93A8000C11A0000C51A400037 -S315400119C089A0094281C3E008C93A80001910008004 -S315400119D098132178D0230000D2232008C1030000A8 -S315400119E0C303200885A00D2181C3E008C53A8000C4 -S315400119F0C11A0000C51A400089A009C2C93A80002F -S31540011A0081C3E00801000000C11A000085A005401D -S31540011A10C53A400081C3E008010000000100000012 -S31540011A20010000000100000001000000010000006B -S31540011A30010000000100000001000000010000005B -S31540011A40010000000100000001000000010000004B -S31540011A50010000000100000001000000010000003B -S31540011A60010000000100000001000000010000002B -S31540011A70010000000100000001000000010000001B -S31540011A80010000000100000001000000010000000B -S31540011A9001000000010000000100000081A00020BB -S31540011AA081C3E00801000000C11A000081C3E008BB -S31540011AB001000000C51A000089A009C2C93A4000C8 -S31540011AC081C3E00801000000131000809212617882 -S31540011AD0D0224000C102400085A01900C53A40000D -S31540011AE081C3E008D01A4000131000809212617839 -S31540011AF0D0224000C102400085A01880C522400086 -S31540011B0081C3E008D0024000151000809412A178EC -S31540011B10D03A8000C11A800085A01A40C5228000B3 -S31540011B2081C3E008D0028000151000809412A1788C -S31540011B30D0228000C102800085A01A20C5228000E3 -S31540011B4081C3E008D0028000151000809412A1786C -S31540011B50D0228000C102800081A01920C13A8000B4 -S31540011B6081C3E008D01A8000151000809412A17834 -S31540011B70D03A8000C11A800081A018C0C1228000DD -S31540011B8081C3E008D0028000151000809412A1782C -S31540011B90D0228000CB0280008DA00025CD2280007E -S31540011BA081C3E008D0028000151000809412A1780C -S31540011BB0D0228000CB0280008DA000A5CD228000DE -S31540011BC081C3E008D0028000151000809412A178EC -S31540011BD0D0228000CB0280008DA00125CD2280003D -S31540011BE081C3E008D0028000191000809813217843 -S31540011BF0D03B0000D43B2008C11B0000C51B200878 -S31540011C0081A80A420100000033800009901020009B -S31540011C1029800007901020012D8000059010200298 -S31540011C202F8000039010200391D0200081C3E0084B -S31540011C30010000001910008098132178D03B000064 -S31540011C40D43B2008C11B0000C51B200881A80AC23D -S31540011C500100000033BFFFF69010200029BFFFF4BA -S31540011C60901020012DBFFFF2901020022FBFFFF0F0 -S31540011C709010200391D020001910008098132178EC +S3154001004082102083C226200882102000C02600008C +S315400100508200600180A0606412BFFFFD01000000C4 +S3154001006082102000C40600008200600180A0606406 +S3154001007012BFFFFD0100000082102002C2262008A7 +S31540010080A0062004C28400208088600402BFFFFECF +S3154001009001000000C0262008C0260000C2840020BE +S315400100A084102001833860148208603F80A060017B +S315400100B002800004A21020011080000E821020034D +S315400100C0C0260000A200A001C2840020833860142B +S315400100D08208603F80A0401122BFFFFA84100001D0 +S315400100E080A4600134800002A21000028210200325 +S315400100F0C2262008C28400208208600780A06006CC +S315400101000280000801000000C2860020C28400204F +S315400101108208600780A0600612BFFFFC0100000054 +S31540010120C0262008C026200480A460010480000463 +S3154001013082102034C284002082102034C22600005E +S31540010140C2840020C284002080A46001048000197A +S315400101508210200129100070A4102001A81520301A +S3154001016090100012400024D592102041C24D000843 +S31540010170C2260000A404A00180A4801112BFFFFA88 +S3154001018090100012C2840020C2840020833860147B +S315400101908208603F80A040110280000401000000F7 +S315400101A07FFFC5FE90102006C284002082102001E8 +S315400101B0C226200CC2840020808860011280005330 +S315400101C082102083C226200880A46001028000425A +S315400101D001000000C28400208088640002BFFFFE47 +S315400101E001000000C2840020808860010280004F27 +S315400101F080A460010480005280A46000C284002073 +S315400102008330601A80A04011028000040100000082 +S315400102107FFFC5E290102009C284002080886100DA +S315400102200280004A01000000C284002080886400E8 +S315400102300280004C0100000029100070A41020002B +S31540010240A8152030E6860020921020414000249BCC +S3154001025090100012C24D000880A040132280000574 +S31540010260A404A0017FFFC5CD9010200CA404A001D9 +S3154001027080A4401214BFFFF480A460010480000FE3 +S3154001028001000000C2840020808861001280003F86 +S3154001029001000000C28400208330601A80A0600003 +S315400102A01280003701000000C2840020808864006B +S315400102B01280003001000000E0840020808C200183 +S315400102C01280000E01000000C026200881C7E00808 +S315400102D091E82000C28400208088600112BFFFC2DD +S315400102E001000000C28400208088600102BFFFFA3D +S315400102F00100000030BFFFBC7FFFC5A89010200C55 +S31540010300C026200830BFFFF27FFFC5A4901020070A +S3154001031082102083C226200880A4600112BFFFAE4E +S315400103200100000030BFFFEC7FFFC59C9010200804 +S3154001033080A4600114BFFFB280A4600034BFFFC037 +S315400103402910007030BFFFDD7FFFC5949010200A51 +S31540010350C28400208088640032BFFFB92910007032 +S315400103607FFFC58E9010200B10BFFFB5291000707E +S315400103707FFFC58A9010200B30BFFFD07FFFC58716 +S315400103809010200E30BFFFC97FFFC5849010200D0D +S3154001039030BFFFC103100123C40060788528A00245 +S315400103A08610607890022010D020C002C400607888 +S315400103B08400A001C420607881C3E00801000000E8 +S315400103C0C0220000C022204082103FFFC222200CE2 +S315400103D00310012384102001C420607881C3E00802 +S315400103E00100000003100123C20060C090102000EC +S315400103F0C020600881C3E008010000009DE3BFA062 +S3154001040023100124E00461107FFFC55D9010201187 +S31540010410C024201CC204201C80A060000280004C25 +S3154001042001000000C204201C8330601B80A0401ADA +S315400104300A80004E80A6A0000280003FC2046110DF +S315400104402B100123A6102004AA156078BA102000AB +S31540010450A4102000AE103FFFA8102001AC10201FB1 +S31540010460B8102005BB2F6002C606401DC0240000FF +S31540010470C0242040EE24200CE8254000832D0012A4 +S31540010480A404A001852CA01082108001C224201C46 +S31540010490EE2420408928E0049A00FFFFC206001D91 +S315400104A0980040049B2B60048400400DEC206004BE +S315400104B0EC204000F8204004C0232004E820A01886 +S315400104C0C400400480A0A00012BFFFFE010000004E +S315400104D08728E004C400400380A0A00002BFFFFEBD +S315400104E0010000008200400DC0206018C205400096 +S315400104F080A0600202800004010000007FFFC52742 +S315400105009004FFFFC40560048204A01080A080010E +S3154001051002800004BA1000127FFFC520901000131C +S31540010520C024201C80A6801218BFFFCFA604E0027B +S31540010530C204611084103FFFB0102000C02060400B +S31540010540C420600C81C7E00881E800007FFFC51325 +S3154001055090102001C204201C8330601B80A0401AE9 +S315400105601ABFFFB680A6A0007FFFC50C90102002DF +S3154001057010BFFFB52B1001239DE3BF80231001233C +S3154001058021100124E6042110A404E100C204A004C0 +S31540010590F02460C07FFFC4FA90102010C204A0046A +S315400105A0050180008410A020808840021280014508 +S315400105B001000000C404E100C204E10080A0800102 +S315400105C002800005821020017FFFC4F490102002B2 +S315400105D082102001C224A004C404E100C204E10047 +S315400105E080A080010280014201000000C024A004D5 +S315400105F0C404E100C204E10080A08001028000053C +S3154001060080A720007FFFC4E59010200480A720002A +S315400106101280011180A7200180A6A0010480001A42 +S315400106202F100040A606E001AE15E3E4A810200114 +S31540010630AC14211010800005AA10200180A6801458 +S3154001064004800011A604E00180A4E01F34BFFFFC32 +S31540010650A8052001921000134000290090100017B0 +S31540010660C2058000C4006040872D40138410C0023B +S31540010670C4206040A805200180A6801414BFFFF362 +S31540010680A604E00180A0001C84603FFFC427BFF0A0 +S31540010690C60460C082103FFFF627BFF8C027BFFCE3 +S315400106A0C020E004C020E010C220E014C220E00CCB +S315400106B08206A0038538601F8530A01E8200800116 +S315400106C0AF386002C207BFF08200401B8416E020AB +S315400106D0C227BFECC427BFE829100123AC10200173 +S315400106E0A81520C0310100003B0080002B0180008D +S315400106F080A7200002800003821020018210001C86 +S31540010700C407BFFC80A08001168000CB80A72001D2 +S315400107100480001680A5E00004800014C207BFFCD7 +S31540010720C407BFFC8928601883286010881100011E +S315400107308328A008881100028400E0248811000162 +S3154001074082102001C820E0201080000680A04017BA +S31540010750C8208000820060018400A00480A0401768 +S3154001076012BFFFFC01000000C207BFF0E827BFF43B +S3154001077080A68001A2100001048000338400E008B5 +S315400107801080000EE607BFECE624A004832D8011FD +S31540010790C220E008833E4011808860011280001328 +S315400107A08400E008A204600180A68011048000262E +S315400107B0A604E001C605000080A7200002BFFFF3A2 +S315400107C080A7200102800079C407BFF8C424A00491 +S315400107D0832D8011C220E008833E4011808860014C +S315400107E002BFFFF18400E008C200800080A06000E3 +S315400107F012BFFFFE01000000C204A0048088401819 +S315400108000280006701000000C204A0048088401DE8 +S315400108100280006001000000EA24A004C204A00492 +S31540010820808840151280005601000000C405000072 +S315400108308400A008A204600180A6801114BFFFDED7 +S31540010840A604E001C020800010800005A21020000F +S3154001085080A460200280000780A72000833E4011CB +S315400108608088600122BFFFFBA204600180A72000AF +S315400108701280005180A720018204401B8210602013 +S31540010880C224A004A32D8011E2208000C200800072 +S3154001089080A0600012BFFFFE01000000C204A00458 +S315400108A0808860200280005D01000000C204A0042F +S315400108B0808840180280005601000000C204A0044E +S315400108C08088401D0280004E01000000C207BFF42F +S315400108D0C4004000C204A008E604A00C8600A0089B +S315400108E0E220A008C400C00080A0A00012BFFFFE05 +S315400108F001000000C404A0048088A0202280003C9E +S31540010900C227BFE4C404A004808880182280003432 +S31540010910C227BFE4C404A0048088801D2280002C25 +S31540010920C227BFE4C404A00880A04002028000049C +S31540010930010000007FFFC4199010200EC204A00CD4 +S3154001094080A4C00102800005C407BFF47FFFC41321 +S315400109509010200FC407BFF4C207BFFCC600800039 +S31540010960C407BFF8820060018400A001EA24A00404 +S31540010970C227BFFC10BFFF5FC427BFF87FFFC40774 +S3154001098090102007C405000010BFFFAB8400A008EB +S315400109907FFFC4029010200630BFFFA07FFFC3FF38 +S315400109A09010200530BFFF99F624A00410BFFF79AF +S315400109B0832D80110280001CC607BFF88210E020FB +S315400109C0C224A00410BFFFB1A32D80117FFFC3F342 +S315400109D09010200D10BFFFD4C207BFE47FFFC3EFC5 +S315400109E09010200C10BFFFCCC207BFE47FFFC3EBC2 +S315400109F09010200B10BFFFC4C207BFE47FFFC3E7BF +S31540010A009010200A10BFFFB3C207BFF47FFFC3E3B4 +S31540010A109010200930BFFFAA7FFFC3E09010200845 +S31540010A2030BFFFA3C607BFE8C624A00410BFFF9787 +S31540010A30A32D8011C2042110C020E00C84103FFF79 +S31540010A40B0102000C0206040C420600C81C7E0087F +S31540010A5081E800000280001E1110004080A720009E +S31540010A60A610001B04BFFF08A81020002F1000404D +S31540010A70AC142110AE15E3E410800005AA10200144 +S31540010A8080A7001404BFFF00A604E00180A4E01F74 +S31540010A9034BFFFFCA805200192100013400027EF48 +S31540010AA090100017C2058000C4006040872D401396 +S31540010AB08410C002C420604010BFFFF2A805200187 +S31540010AC07FFFC3B69010200130BFFEBB9210001BC2 +S31540010AD0400027E2901223E4C2042110852F001B17 +S31540010AE0C420604010BFFEE980A0001C7FFFC3AB5D +S31540010AF09010200330BFFEBE9DE3BF80031001244A +S31540010B0011004034231000407FFFC396F02061104E +S31540010B10C0260000C026204082103FFFC226200C7E +S31540010B200310012384102001A0102001C420607805 +S31540010B30A214639492100010400027C8901000112F +S31540010B40A004200180A4201012BFFFFC92100010C7 +S31540010B50F8062020B937201C231001232D00003F21 +S31540010B603700002AB8072001A2146078AC15A3FE0D +S31540010B70B616E2AAA6100018AE102000B4103FFF28 +S31540010B80BA102001A8102020AA10202180A72001F8 +S31540010B900280000580A5E0007FFFC3799010001711 +S31540010BA080A5E0000280000F01000000C024C000C3 +S31540010BB0C024E040F424E00CFA244000832DE01CDC +S31540010BC0C224E024C204E0248330601C80A0401784 +S31540010BD002800004010000007FFFC37090102012C4 +S31540010BE0EC24E008C204E00880A04016028000041C +S31540010BF0010000007FFFC36990102001EC24E04012 +S31540010C00C204E04080A040160280000401000000BA +S31540010C107FFFC36290102002C204E00880A06000FA +S31540010C2012BFFFFE01000000C204400080A0601018 +S31540010C3002800005A01020017FFFC35890102003B9 +S31540010C40A0102001832C2002C204400184250010FB +S31540010C5080A0800122800005A00420017FFFC34FB0 +S31540010C6090102004A004200180A4201012BFFFF799 +S31540010C70832C2002FA244000F624C000EC24E040F4 +S31540010C80C204C00080A0401B028000040100000095 +S31540010C907FFFC34290102005C204E04080A0401669 +S31540010CA002800004010000007FFFC33C9010200534 +S31540010CB0EC24E008C204E00880A0600012BFFFFEF9 +S31540010CC001000000C204400080A0601002800005BF +S31540010CD0A410201F7FFFC33190102006A410201FAF +S31540010CE0A0102001832C2002C204400180A04012A2 +S31540010CF022800005A00420017FFFC3289010200711 +S31540010D00A004200180A4200812BFFFF7A404BFFE5F +S31540010D10A410201CA010200A832C2002C2044001EA +S31540010D2080A0401222800005A00420017FFFC31B42 +S31540010D3090102008A004200180A4201012BFFFF7C4 +S31540010D40A404BFFEFA27BFF082102002C407BFF0F9 +S31540010D508400A001C427BFF4C407BFF48400A001E6 +S31540010D60C427BFF8C407BFF88400A001C427BFFC4D +S31540010D7084102006C427BFE0C024C000C024E04040 +S31540010D80FA244000C224E040C224E00883444000E3 +S31540010D90808861000280000501000000805000014A +S31540010DA08050000180500001C207BFE0C227BFE466 +S31540010DB0C207BFE080A060060280000582102002C3 +S31540010DC07FFFC2F69010200A82102002C224E0085A +S31540010DD001000000C207BFE0C227BFE4C207BFE06F +S31540010DE080A0600602800005821020027FFFC2EBD0 +S31540010DF09010200A82102002C224E008010000005F +S31540010E00C027BFE4C207BFE480A060001280007320 +S31540010E1001000000C204E00880A0600012BFFFFE8E +S31540010E2001000000C204400080A06004028000046A +S31540010E30010000007FFFC2D99010200DC024E04080 +S31540010E40EC24E008FA2440004000020B01000000B7 +S31540010E504000020B90122F00EC24E040C204E04017 +S31540010E6080A0600002BFFFFE01000000C2044000F6 +S31540010E7080A0600202800004010000007FFFC2C71B +S31540010E809010200EC204600480A0601F02800004FE +S31540010E90010000007FFFC2C19010200F400001F603 +S31540010EA0A4102002400001F690023F00400001F2EA +S31540010EB001000000400001F290023F00C2044000E0 +S31540010EC0A004A00180A0401022800005A52CA0020C +S31540010ED07FFFC2B290102010A52CA002C40440127C +S31540010EE08225401080A0800102800004A4100010D9 +S31540010EF07FFFC2AA9010201180A4201012BFFFECE0 +S31540010F0001000000C024E040F424E00CAE05E001FD +S31540010F1080A7001714BFFF1EA624F00080A720015A +S31540010F200480002C01000000C0262024C206202493 +S31540010F3080A060001280002C010000000304000024 +S31540010F40C2262024C406202480A0800102800005F8 +S31540010F50821020017FFFC29190102014821020013F +S31540010F60C2262020C026202403040000C4062024D3 +S31540010F7080A0800102800004010000007FFFC2873B +S31540010F8090102015C0262020C0262024C2062024E9 +S31540010F9080A060001280001B010000008210200228 +S31540010FA0C2262020C20620208088600202800012CC +S31540010FB001000000C0262020C20620208088600251 +S31540010FC002800004010000007FFFC27490102018C7 +S31540010FD081C7E00891E820007FFFC2709010200B86 +S31540010FE030BFFF8D7FFFC26D9010201310BFFFD51C +S31540010FF0030400007FFFC2699010201730BFFFEE47 +S315400110007FFFC2669010201610BFFFE682102002B5 +S315400110109DE3BFA07FFFC27D0100000080A22000AA +S315400110200280003B0100000080A6200012800035AE +S31540011030010000007FFFC27501000000912A2004D3 +S315400110407FFFC24F9002200340001880010000003C +S3154001105080A2200012800028010000004000181FD5 +S3154001106001000000400017CD01000000400001E3EF +S315400110700100000080A6A0001280001C01000000B3 +S315400110807FFFC26221100124912A2002A01421145B +S31540011090C204000880A060000280000A80A62000E9 +S315400110A07FFFC25A01000000912A20027FFFC257EA +S315400110B0E00400089FC400000100000080A6200053 +S315400110C002800004010000007FFFC26990100019F0 +S315400110D0400004400100000040001E4F0100000096 +S315400110E0400015D281E8000040001F2101000000A8 +S315400110F030BFFFE47FFFC2299010200130BFFFD8E7 +S315400111007FFFC24B9010001930BFFFCB7FFFC21546 +S315400111101100400C10BFFFC680A62000031001231A +S31540011120C40060C48400A001C42060C481C3E00837 +S31540011130010000009DE3BFA07FFFC20A11004044A9 +S3154001114082103FFFE4062008C2262004A40CA00713 +S31540011150C4060000C206000080A08001028000741F +S31540011160010000008210201FC2262004C226000072 +S3154001117080A4A0000280004E8210200085286004D1 +S31540011180840600028200600180A04012C020A0189F +S3154001119012BFFFFC85286004A0102000A610200F76 +S315400111A0AA102006A81020107FFFC1F5901000104C +S315400111B0A2042001832C600486060001A12C200490 +S315400111C0C026000184060010E620E004EA20A018AB +S315400111D0C206000180A0600F028000058206001051 +S315400111E07FFFC1EE90102003820600108410200E6E +S315400111F0872C6004E6206018C206000380A04002E6 +S3154001120012BFFFFE010000008400BFFF80A0BFFFA8 +S3154001121012BFFFFA01000000852C6004C2060002DD +S3154001122080A0600F12BFFFFE82060010C200601848 +S315400112308088601002800033A0060010E824201840 +S31540011240C204201880886010128000350100000019 +S3154001125080A4801114BFFFD5A010001180A4A00165 +S315400112600480000C821020007FFFC1C59010200829 +S315400112708210200FC22620188210202FC226202835 +S31540011280C206202080A0600D12BFFFFE8210200002 +S3154001129085286004840600028200600180A0401215 +S315400112A0C020A01812BFFFFC85286004211001242C +S315400112B0C204211080A06000028000109210001923 +S315400112C011100044400025E59012211C7FFFFC3D92 +S315400112D0D0042110C204211084102001B3288019A2 +S315400112E0F22060408210200FC22620148210200D69 +S315400112F0C2262018A780000081C7E00881E80000C7 +S315400113007FFFC1A690102004E8242018C2042018AB +S315400113108088601022BFFFD080A480117FFFC19FCB +S315400113209010200510BFFFCC80A480117FFFC19B88 +S315400113309010200110BFFF8D8210201F0000000079 +S315400113400100000001000000010000000100000052 +S31540011350010000000100000081C3E0080100000017 +S315400113600100000001000000010000000100000032 +S31540011370010000000100000081C3E00801000000F7 +S315400113800100000001000000010000000100000012 +S31540011390010000000100000081C3E00801000000D7 +S315400113A001000000010000000100000001000000F2 +S315400113B0010000000100000081C3E00801000000B7 +S315400113C0D482018090A2000916BFFFFE9612800BBF +S315400113D081C3E0089010000BD48201C090A200099D +S315400113E016BFFFFE9612800B81C3E0089010000BDA +S315400113F090A22004C0A201A090A22004C0A201A0F4 +S3154001140090A22004C0A201A090A22004C0A201A0E3 +S31540011410C0A2018090A2200414BFFFF70100000082 +S3154001142081C3E0080100000090A22004C0A201E0AF +S3154001143090A22004C0A201E090A22004C0A201E033 +S3154001144090A22004C0A201E0C0A201C090A2200443 +S3154001145014BFFFF70100000081C3E008010000004E +S31540011460981000089610000A98A3200814BFFFFFA1 +S31540011470D43B00099810000898A3200814BFFFFF29 +S31540011480C01B00099810000898A32004D603000940 +S3154001149080A2C00A1280000698A3200434BFFFFD33 +S315400114A0D603000981C3E008901020009010200166 +S315400114B0981000089610000A98A3200814BFFFFF51 +S315400114C0D43B00099810000898A32004D6030009CC +S315400114D080A2C00A1280000698A3200434BFFFFDF3 +S315400114E0D603000981C3E008901020009010200126 +S315400114F09810000898A32004D2A301A0DA8301A082 +S3154001150080A340091280000698A3200414BFFFFC63 +S31540011510D2A301A081C3E0089010200090102001C1 +S315400115209A1000089AA3400AD6A34180D8834180E5 +S31540011530981B000B988B0009128000069AA3400A5B +S3154001154014BFFFFBD6A3418081C3E0089010200061 +S31540011550901020019A1000089AA3400BD8A241CDC1 +S31540011560C48241CD8418800C8488800A128000068A +S315400115709AA3400B14BFFFFBD8A241CD81C3E0081B +S315400115809010200090102001010000000100000091 +S315400115900100000013100080921260E0D402400066 +S315400115A080A2A0011280000780A0A002D4024000C0 +S315400115B0D4024000952AA0021080000501000000D7 +S315400115C03280000381E80000D402400081E000003F +S315400115D093480000818A602023100045A21461F8D7 +S315400115E0A40460040100000081C4400081CC800055 +S315400115F091D0200191D02001268000059000200144 +S3154001160090222001912A2001912A200281C3E008DB +S315400116100100000081C3E008D082004081C3E00898 +S31540011620D2A2004081C3E008D082018081C3E00894 +S31540011630D2A2018081C3E008D08201A081C3E00823 +S31540011640D2A201A081C3E008D08201C081C3E008D3 +S31540011650D2A201C081C3E008D08201E081C3E00883 +S31540011660D2A201E081C3E008D2A2000081C3E00812 +S31540011670D082000081C3E00891480000818A0000C1 +S3154001168001000000010000000100000081C3E008E4 +S315400116900100000081C3E008C0A000A081C3E008AA +S315400116A0C0A000C081C3E008D01A000001000000BC +S315400116B001000000010000000100000001000000DF +S315400116C09DE3BF8803100070D1186078D13FBFF009 +S315400116D003100080D11FBFF0D9186180031000802C +S315400116E0D518618895A308CAD53FBFF80310008075 +S315400116F0D91FBFF8D518619081AB0A4A0100000095 +S3154001170023800038D127BFEC91A005480310007013 +S31540011710D13FBFF8D51FBFF8D91FBFF899A3094AD2 +S31540011720D51FBFF099A308CA99A0012CD51860808E +S3154001173081AB0ACA010000002D800024D127BFECED +S3154001174091A018C891A20928D51FBFF091A01928C8 +S3154001175091A208CA91A0012803100070D51860888B +S3154001176081AA0ACA010000000D800015010000008F +S315400117704000019001000000400001EE0100000020 +S3154001178080A220001280000B0100000040000243AD +S315400117900100000080A22000128000040100000028 +S315400117A081C7E00881E800007FFFC07C91E8200501 +S315400117B07FFFC07A0100000030BFFFF57FFFC07791 +S315400117C09010200330BFFFEBD327BFE87FFFC073E4 +S315400117D090102002D307BFE810BFFFDAD107BFEC54 +S315400117E0D327BFE87FFFC06D90102001D307BFE824 +S315400117F010BFFFC6D107BFEC9DE3BFA07FFFFF9E91 +S31540011800210000047FFFFF9E901200107FFFFF9A88 +S3154001181001000000808A001012800004B0102000F0 +S3154001182081C7E00881E80000400002669010200070 +S315400118307FFFC07601000000912A20047FFFC0503F +S31540011840900220087FFFFF9F81E800000100000011 +S3154001185019100080981321201110020092102000C7 +S31540011860150FF76C9412A3D7D03B0000D423200860 +S31540011870C11B0000C503200887A089220100000082 +S3154001188089A005408DA0892281A8CA2601000000B1 +S3154001189033800003901020009010200181C3E0089E +S315400118A001000000C11A0000C51A400089A0084283 +S315400118B081C3E008C93A8000C11A0000C51A400038 +S315400118C089A0094281C3E008C93A80001910008005 +S315400118D098132120D0230000D2232008C103000001 +S315400118E0C303200885A00D2181C3E008C53A8000C5 +S315400118F0C11A0000C51A400089A009C2C93A800030 +S3154001190081C3E00801000000C11A000085A005401E +S31540011910C53A400081C3E008010000000100000013 +S31540011920010000000100000001000000010000006C +S31540011930010000000100000001000000010000005C +S31540011940010000000100000001000000010000004C +S31540011950010000000100000001000000010000003C +S31540011960010000000100000001000000010000002C +S31540011970010000000100000001000000010000001C +S31540011980010000000100000001000000010000000C +S3154001199001000000010000000100000081A00020BC +S315400119A081C3E00801000000C11A000081C3E008BC +S315400119B001000000C51A000089A009C2C93A4000C9 +S315400119C081C3E008010000001310008092126120DB +S315400119D0D0224000C102400085A01900C53A40000E +S315400119E081C3E008D01A4000131000809212612092 +S315400119F0D0224000C102400085A01880C522400087 +S31540011A0081C3E008D0024000151000809412A12045 +S31540011A10D03A8000C11A800085A01A40C5228000B4 +S31540011A2081C3E008D0028000151000809412A120E5 +S31540011A30D0228000C102800085A01A20C5228000E4 +S31540011A4081C3E008D0028000151000809412A120C5 +S31540011A50D0228000C102800081A01920C13A8000B5 +S31540011A6081C3E008D01A8000151000809412A1208D +S31540011A70D03A8000C11A800081A018C0C1228000DE +S31540011A8081C3E008D0028000151000809412A12085 +S31540011A90D0228000CB0280008DA00025CD2280007F +S31540011AA081C3E008D0028000151000809412A12065 +S31540011AB0D0228000CB0280008DA000A5CD228000DF +S31540011AC081C3E008D0028000151000809412A12045 +S31540011AD0D0228000CB0280008DA00125CD2280003E +S31540011AE081C3E008D002800019100080981321209C +S31540011AF0D03B0000D43B2008C11B0000C51B200879 +S31540011B0081A80A420100000033800009901020009C +S31540011B1029800007901020012D8000059010200299 +S31540011B202F8000039010200391D0200081C3E0084C +S31540011B30010000001910008098132120D03B0000BD +S31540011B40D43B2008C11B0000C51B200881A80AC23E +S31540011B500100000033BFFFF69010200029BFFFF4BB +S31540011B60901020012DBFFFF2901020022FBFFFF0F1 +S31540011B709010200391D02000191000809813212045 +S31540011B80D0230000D2232008C1030000C30320084C +S31540011B9081A80A210100000033BFFFE59010200013 +S31540011BA029BFFFE3901020012DBFFFE190102002D5 +S31540011BB02FBFFFDF9010200391D020001910008025 +S31540011BC098132120D0230000D2232008C10300000E +S31540011BD0C303200881A80AA10100000033BFFFD436 +S31540011BE09010200029BFFFD2901020012DBFFFD0B9 +S31540011BF0901020022FBFFFCE9010200391D02000DD +S31540011C001910008098132120D03B0000D43B2008B6 +S31540011C10C11B0000C51B200889A008C2C93B0000A2 +S31540011C2081C3E008D01B00001910008098132120C1 +S31540011C30D0230000D2232008C1030000C30320089B +S31540011C4085A00821C523000081C3E008D003000018 +S31540011C501910008098132120D0230000D223200898 +S31540011C60C1030000C303200885A008A1C5230000C5 +S31540011C7081C3E008D0030000191000809813212089 S31540011C80D0230000D2232008C1030000C30320084B -S31540011C9081A80A210100000033BFFFE59010200012 -S31540011CA029BFFFE3901020012DBFFFE190102002D4 -S31540011CB02FBFFFDF9010200391D020001910008024 -S31540011CC098132178D0230000D2232008C1030000B5 -S31540011CD0C303200881A80AA10100000033BFFFD435 -S31540011CE09010200029BFFFD2901020012DBFFFD0B8 -S31540011CF0901020022FBFFFCE9010200391D02000DC -S31540011D001910008098132178D03B0000D43B20085D -S31540011D10C11B0000C51B200889A008C2C93B0000A1 -S31540011D2081C3E008D01B0000191000809813217868 -S31540011D30D0230000D2232008C1030000C30320089A -S31540011D4085A00821C523000081C3E008D003000017 -S31540011D501910008098132178D0230000D22320083F -S31540011D60C1030000C303200885A008A1C5230000C4 -S31540011D7081C3E008D0030000191000809813217830 -S31540011D80D0230000D2232008C1030000C30320084A -S31540011D9085A00921C523000081C3E008D0030000C6 -S31540011DA01910008098132178D0230000D2232008EF -S31540011DB0C1030000C303200885A009A1C523000073 -S31540011DC081C3E008D00300001910008098132178E0 -S31540011DD0D0230000C103000083A00520C3230000D7 -S31540011DE081C3E008D0030000131000809212619075 -S31540011DF0C51A6008C11A400089A0084091A108C2CD -S31540011E0095A209C495A2894281C3E008D53A00004A -S31540011E1013100080921261B0C1024000C3026004F7 -S31540011E2085A0082087A088A189A0C9A289A10921E6 -S31540011E3081C3E008C92200009610200213100080D9 -S31540011E4092126190151000809412A190D502400023 -S31540011E50D7028000D5220000D8020000131000806E -S31540011E60921261B096A2E00112BFFFF90100000093 -S31540011E7081C3E008010000001310008092126190B6 -S31540011E80151000809412A1B0C1028000C51A6010DD -S31540011E9083A0082089A088C08BA109A18DA10942F0 -S31540011EA08FA1492691A0054681C3E008D13A000099 -S31540011EB01110008090122188C11A0000C51A000035 -S31540011EC0C91A0000CD1A0000D11A0000D51A000027 -S31540011ED0D91A0000DD1A0000E11A0000E51A0000D7 -S31540011EE0E91A0000ED1A0000F11A0000F51A000087 -S31540011EF0F91A0000FD1A000081C3E0080100000044 -S31540011F0029100080A815215827100080A614E1C089 -S31540011F10C12CC000E604C000A134E00EA00C20078D -S31540011F20A0A42002AE1020002D100080AC15A1C047 -S31540011F30AE05E001AC05A008C1358000C12D000009 -S31540011F40EA050000AB35600DAA8D600112BFFFF9AD -S31540011F5001000000808000100280002F2B3C1FFFF3 -S31540011F60AA1563FFA60CC015E6250000C10D0000A9 -S31540011F702B100080AA1561CC2D100047AC15A3E0AB -S31540011F80AE25E001E0054000E025800081D8200033 -S31540011F9001000000010000000100000001000000F6 -S31540011FA001000000010000000100000001000000E6 -S31540011FB001000000010000000100000001000000D6 -S31540011FC001000000010000000100000001000000C6 -S31540011FD001000000010000000100000001000000B6 -S31540011FE00000000080A5C00012BFFFE6AA056008F8 -S31540011FF0C12D0000E60500002B03C000A614C01544 -S31540012000E6250000C10D000081C4400081CC80005E -S315400120100100000081C4800081CCA00401000000C1 -S315400120200100000081C3E008915800000100000052 -S315400120301110008090122158C10A0000C0220000F0 -S31540012040C10A0000C12A0000D40200001300038027 -S31540012050942A800980A0000A3280004D9010200306 -S315400120601303E000D223BFA0C023BFA4C10BBFA06E -S31540012070C023BFA0151000809412A170C102800038 -S315400120800100000001000000C10BBFA0C10BBFA4AD -S3154001209083A00520C12BBFA0D003BFA0808A220008 -S315400120A02280003B901020049010200015100080E3 -S315400120B09412A140C5028000C902A008D102A00C19 -S315400120C01310008092126170C70240008DA08944AE -S315400120D081A98AC8010000000380000501000000B3 -S315400120E0901020011080002A01000000C5028000E6 -S315400120F0C902A008D102A00C13100080921261708F -S31540012100CB0240008DA0894481A98AC80100000004 -S315400121100380000501000000901020011080001C82 -S315400121200100000025100080A414A168C11C800094 -S31540012130C51C800080A000003280000685A008C032 -S3154001214081A80AC2010000001380000301000000BB -S31540012150901020050100000025100080A414A168FC -S31540012160C11C8000C51C800080A000000100000049 -S315400121703280000685A008C081A80AC2010000007D -S3154001218013800003010000009010200701000000A9 -S3154001219081C3E00801000000901020019544000031 -S315400121A09532A01E940AA00380A2800002800040BE -S315400121B09010200080A2A0030280003D13100080F1 -S315400121C0921261F0C11A4000C51A6008FD026018FA -S315400121D095A0003E99A0003E9DA0003E170000C07C -S315400121E09612E078A182C0000100000001000000C3 -S315400121F00100000001000000010000000100000094 -S3154001220081A0002083A0002195A0002A99A0002C3E -S315400122109DA0002E170000C09612E07CA182C0004E -S315400122200100000001000000010000000100000063 -S31540012230010000000100000085A0002287A00023C4 -S31540012240A180000001000000010000000100000023 -S3154001225001000000010000000100000089A00842C1 -S31540012260A9A2883ED93A4000DD224000CD1A60102D -S31540012270D102600881A90A46010000000380000CD2 -S3154001228081AD0A2801000000038000099344000043 -S315400122909332601B920A60079010200080A2A00131 -S315400122A002800003902260079022600481C3E00807 -S315400122B001000000C12BBFA081C3E008D003BFA02D -S315400122C0D023BFA081C3E008C10BBFA0010000001D -S315400122D09DE3BF6040001B17B0102000913A200AD1 -S315400122E0900A200380A220011280111101000000F2 -S315400122F07FFFBBBE9010200D190C40291B23CD1B1F -S315400123009410200096102000981320069A13609B83 -S31540012310D43FBFE0D43FBFC0D43FBFE87FFFFF42B9 -S31540012320D83FBFF0900A3000032804009012208065 -S315400123308210600FC22200001B1000479002200449 -S315400123409A1363009A234008191000009B3B6002D0 -S31540012350032784009A13400C82106010C222200485 -S315400123607FFFFED4DA2200007FFFFFD61103E00093 -S315400123702D100080C025A1C07FFFFDD49010200004 -S31540012380809200091280000601000000C205A1C02A -S3154001239080A0600002800004010000007FFFBB981E -S315400123A09010200B7FFFFDC990103FFA03300600C5 -S315400123B080A200011280000480A2600002800EDB30 -S315400123C0010000007FFFBB8E9010200B7FFFFDBFF9 -S315400123D09010201403100D0080A200011280000409 -S315400123E080A2600002800ECC010000007FFFBB840A -S315400123F09010200B7FFFFDB5901020620310162030 -S3154001240080A200011280000480A2600002800EBDFD -S31540012410010000007FFFBB7A9010200B7FFFFDB3C8 -S31540012420901020050310280080A2000112800006AA -S3154001243001000000C205A1C080A060000280000426 -S31540012440010000007FFFBB6E9010200B7FFFFF9DB8 -S315400124501103C000111C00007FFFFDAC921020004B -S31540012460031FFFFF821063FF80A200011280000A52 -S315400124701B000070C205A1C09A13601F190000100D -S315400124808208400D9813201080A0400C0280000560 -S31540012490113C00007FFFBB5A9010200C113C0000FC -S315400124A07FFFFD9A921020000320000080A20001C8 -S315400124B01280000A1B000070C205A1C09A13601F5A -S315400124C0190000108208400D9813201080A0400C7E -S315400124D002800004010000007FFFBB499010200CE0 -S315400124E0C025A1C0901020007FFFFD8892102000DA -S315400124F080A220001280000601000000C205A1C092 -S3154001250080A0600002800005110144007FFFBB3CB2 -S315400125109010200C11014400132840009012230210 -S315400125207FFFFD7A9212600180A220001280000690 -S3154001253001000000C205A1C080A060002280000504 -S315400125401111FFFF7FFFBB2E9010200C1111FFFFD1 -S315400125507FFFFD76901223FF0300007F821063FF09 -S3154001256080A200011280000601000000C205A1C040 -S3154001257080A06000028000052F1000857FFFBB20F0 -S315400125809010200C2F1000857FFFFD60D01DE0C804 -S31540012590031FFFFF821063FF80A200011280000A21 -S315400125A01B000070C205A1C09A13601F19000010DC -S315400125B08208400D9813201080A0400C028000052F -S315400125C0031000857FFFBB0E9010200C0310008581 -S315400125D0D01860D8C025A1C07FFFFD4C0100000086 -S315400125E00320000080A200011280000A1B00007037 -S315400125F0C205A1C09A13601F190000108208400D40 -S315400126009813201080A0400C028000051910008507 -S315400126107FFFBAFB9010200C19100085C025A1C080 -S315400126207FFFFD3AD01B20B8031FFFFF821063FFD7 -S3154001263080A200011280000A1B000070C205A1C0E1 -S315400126409A13601F190000108208400D981320103C -S3154001265080A0400C02800005331000857FFFBAE858 -S315400126609010200C33100085C025A1C07FFFFD27A7 -S31540012670D01E60F0C205A1C08330600E820860039F -S3154001268080A0600202800004211000807FFFBADC36 -S315400126909010200C7FFFFF0B1103C000111158044D -S315400126A0C02421C07FFFFD299012223403102B0044 -S315400126B08210624680A200011280000503200000BC -S315400126C080A2400102800FC5010000007FFFBACC05 -S315400126D09010200D113C02AF7FFFFD1C901220D1BE -S315400126E0033180558210639A80A200011280000551 -S315400126F00308000080A2400102800FDB01000000B8 -S315400127007FFFBABF9010200D1111FC007FFFFD170E -S3154001271092102000031FE00080A200011280000AEF -S315400127201B000070C205A1C09A13601F190000105A -S315400127308208400D9813200880A0400C02800005B5 -S3154001274011207C017FFFBAAE9010200D11207C0133 -S31540012750C025A1C0901220307FFFFD041300010067 -S315400127600320000080A200011280000A1B000070B5 -S31540012770C205A1C09A13601F190000108208400DBE -S315400127809813200480A0400C028000040100000040 -S315400127907FFFBA9B9010200DC025A1C0901020004C -S315400127A07FFFFCF29210200080A2200012800006DA -S315400127B001000000C205A1C080A0600002800004A3 -S315400127C0010000007FFFBA8E9010200D7FFFFCE7CD -S315400127D0D01DE0C803100085DA0060C080A2000D5C -S315400127E01280000601000000C205A1C080A0600061 -S315400127F0028000051B1000857FFFBA819010200DD5 -S315400128001B1000857FFFFCD9D01B60D0031FE00061 -S3154001281080A200011280000601000000C205A1C08D -S3154001282080A0600002800005031000857FFFBA7416 -S315400128309010200D031000857FFFFCCCD01860B8A6 -S3154001284003100085DA0060A880A2000D1280000AFC -S315400128501B000070C205A1C09A13601F1900001029 -S315400128608208400D9813201080A0400C028000047D -S31540012870010000007FFFBA629010200DC025A1C063 -S315400128807FFFFCBAD01E60F0C205A1C08330600E46 -S315400128908208600380A06002028000042310008049 -S315400128A07FFFBA579010200D7FFFFE861103E0008F -S315400128B02108C6AF901420DEC02461C07FFFFCB35F -S315400128C0A01420DE80A20010128000060100000044 -S315400128D0C20461C080A06000028000052108C6AF25 -S315400128E07FFFBA479010200E2108C6AF7FFFFCB785 -S315400128F0901420DEA01420DE80A200101280000673 -S3154001290001000000C205A1C080A060002280000530 -S315400129101128C6AF7FFFBA3A9010200E1128C6AFD4 -S315400129207FFFFCAA901220DE0308C6AF821060DE4C -S3154001293080A200011280000601000000C205A1C06C -S3154001294080A06000228000051108C6AF7FFFBA2C27 -S315400129509010200E1108C6AF7FFFFC94901220DE26 -S315400129600328C6AF821060DE80A2000112800006F5 -S3154001297001000000C205A1C080A0600022800005C0 -S315400129801128C6AF7FFFBA1E9010200E1128C6AF80 -S315400129907FFFFC86901220DE0308C6AF821060DE00 -S315400129A080A200011280000601000000C205A1C0FC -S315400129B080A0600002800004010000007FFFBA1081 -S315400129C09010200E7FFFFE3F1103E00011151BC042 -S315400129D01310C82115351BC01710C82190122103A9 -S315400129E0921261419412A1037FFFFC809612E1414C -S315400129F080A220021280000601000000C205A1C08B -S31540012A0080A060000280000511351BC07FFFB9FC24 -S31540012A109010200F11351BC01310C82115151BC06E -S31540012A201710C82190122103921261419412A103F9 -S31540012A307FFFFC6E9612E14180A2200112800006C2 -S31540012A4001000000C205A1C080A06000028000050F -S31540012A50901020007FFFB9EA9010200F90102000BF -S31540012A6092102000152000007FFFFC609610200088 -S31540012A7080A220001280000601000000C205A1C00C -S31540012A8080A0600002800005191000857FFFB9DC37 -S31540012A909010200F191000851B100085D01B20D0E7 -S31540012AA07FFFFC52D41B60D880A220021280000610 -S31540012AB001000000C205A1C080A06000028000059F -S31540012AC011151BC07FFFB9CE9010200F11151BC0E9 -S31540012AD01310C82115151BE81710C82190122103A0 -S31540012AE0921261419412A1037FFFFC409612E1418B -S31540012AF080A220011280000601000000C205A1C08B -S31540012B0080A060000280000511151BE87FFFB9BC5B -S31540012B109010200F11151BE81310C82115151BC065 -S31540012B201710C82190122103921261419412A103F8 -S31540012B307FFFFC2E9612E14180A220021280000600 -S31540012B4001000000C205A1C080A06000028000050E -S31540012B5011151BE87FFFB9AA9010200F11151BE82C -S31540012B601310C82190122103921261417FFFFC1F6D -S31540012B70D41DE0C880A22003128000060100000097 -S31540012B80C205A1C080A06000028000050310008537 -S31540012B907FFFB99B9010200F0310008511151BE88C -S31540012BA01310C82190122103921261417FFFFC0F3D -S31540012BB0D41860B880A220031280000A1B0000705E -S31540012BC0C205A1C09A13601F190000108208400D6A -S31540012BD09813201080A0400C0280000511151BE8B7 -S31540012BE07FFFB9879010200F11151BE81310C821DC -S31540012BF0C025A1C090122103921261417FFFFBFBC8 -S31540012C00D41E60F080A2200212800006010000005E -S31540012C10C205A1C080A060000280000515151BE811 -S31540012C207FFFB9779010200F15151BE81710C821A3 -S31540012C30D01E60F09412A1037FFFFBEC9612E14196 -S31540012C4080A220011280000601000000C205A1C039 -S31540012C5080A060000280000515151BE87FFFB9685A -S31540012C609010200F15151BE81710C821D01DE0C87C -S31540012C709412A1037FFFFBDD9612E14180A220035E -S31540012C801280000601000000C205A1C080A06000BC -S31540012C9002800005191000857FFFB9599010200F59 -S31540012CA01910008515151BE81710C821D01B20B82F -S31540012CB09412A1037FFFFBCD9612E14180A220032E -S31540012CC01280000A1B000070C205A1C09A13601F42 -S31540012CD0190000108208400D9813201080A0400C66 -S31540012CE00280000511151BC07FFFB9459010200FCA -S31540012CF011151BC01310C82115351BC01710C8214B -S31540012D00C025A1C090122103921261419412A103E0 -S31540012D107FFFFBC99612E14180A220021280000684 -S31540012D2001000000C205A1C080A06000028000052C -S31540012D3011351BC07FFFB9329010200F11351BC0D2 -S31540012D401310C82115151BC01710C8219012210355 -S31540012D50921261419412A1037FFFFBB79612E141A2 -S31540012D6080A220011280000601000000C205A1C018 -S31540012D7080A0600002800005901020007FFFB920EE -S31540012D809010200F90102000921020001520000076 -S31540012D907FFFFBA99610200080A22000128000062A -S31540012DA001000000C205A1C080A0600002800005AC -S31540012DB01B1000857FFFB9129010200F1B10008554 -S31540012DC003100085D01B60D07FFFFB9BD41860D8D1 -S31540012DD080A220021280000601000000C205A1C0A7 -S31540012DE080A060000280000511151BC07FFFB90459 -S31540012DF09010200F11151BC01310C82115151BE883 -S31540012E001710C82190122103921261419412A10315 -S31540012E107FFFFB899612E14180A2200112800006C4 -S31540012E2001000000C205A1C080A06000028000052B -S31540012E3011151BE87FFFB8F29010200F11151BE802 -S31540012E401310C82115151BC01710C8219012210354 -S31540012E50921261419412A1037FFFFB779612E141E1 -S31540012E6080A220021280000601000000C205A1C016 -S31540012E7080A060000280000511151BE87FFFB8E0C5 -S31540012E809010200F11151BE81310C8219012210331 -S31540012E90921261417FFFFB68D41DE0C880A22003E6 -S31540012EA01280000A1B000070C205A1C09A13601F60 -S31540012EB0190000108208400D9813201080A0400C84 -S31540012EC002800005191000857FFFB8CD9010200FB4 -S31540012ED01910008511151BE81310C8219012210302 -S31540012EE0921261417FFFFB54D41B20B880A220037C -S31540012EF01280000A1B000070C205A1C09A13601F10 -S31540012F00190000108208400D9813201080A0400C33 -S31540012F100280000511151BE87FFFB8B99010200FFC -S31540012F2011151BE81310C821C025A1C09012210319 -S31540012F30921261417FFFFB40D41E60F080A22002C5 -S31540012F401280000601000000C205A1C080A06000F9 -S31540012F500280000515151BE87FFFB8A99010200FC8 -S31540012F6015151BE81710C821D01E60F09412A10355 -S31540012F707FFFFB319612E14180A2200112800006BB -S31540012F8001000000C205A1C080A0600002800005CA -S31540012F9015151BE87FFFB89A9010200F15151BE8F1 -S31540012FA01710C821D01DE0C89412A1037FFFFB2250 -S31540012FB09612E14180A220031280000A1B00007094 -S31540012FC0C205A1C09A13601F190000108208400D66 -S31540012FD09813201080A0400C028000051B1000852C -S31540012FE07FFFB8879010200F1B10008515151BE831 -S31540012FF01710C821D01B60B89412A1037FFFFB0EA6 -S315400130009612E14180A220031280000A1B00007043 -S31540013010C205A1C09A13601F190000108208400D15 -S315400130209813201080A0400C02800005110048EA48 -S315400130307FFFB8739010200F110048EA13048D15D5 -S31540013040C025A1C0901223CD7FFFFB0C921262785E -S3154001305080A220011280000601000000C205A1C025 -S3154001306080A0600002800005110048EA7FFFB86435 -S315400130709010200F110048EA13048D15901223CDAC -S315400130807FFFFB0F9212627880A220011280000618 -S3154001309001000000C205A1C080A0600002800004BA -S315400130A0010000007FFFB8569010200FC025A1C037 -S315400130B07FFFFC841103C000291001449007BFF033 -S315400130C09207BFE87FFFFA3894152120C207BFF067 -S315400130D0DA05212080A0400D1280000782152120AB -S315400130E0DA006004C207BFF480A0400D02800D598A -S315400130F0010000007FFFB842901020103710008574 -S315400131009007BFF09216E0E07FFFFA279415212041 -S31540013110C206E0E0DA05212080A340018215212084 -S31540013120128000079816E0E0DA006004C20320042A -S3154001313080A3400102800D42010000007FFFB830AC -S31540013140901020109007BFF09215E0C87FFFFA1645 -S3154001315094152120C205E0C8DA05212080A340014B -S3154001316082152120128000079815E0C8DA00600414 -S31540013170C203200480A3400102800D2C01000000FF -S315400131807FFFB81F9010201003100085921060B881 -S315400131909007BFF07FFFFA04941521201B000070B1 -S315400131A0C205A1C09A13601F190000108208400D84 -S315400131B09813201080A0400C028000042110014485 -S315400131C07FFFB80F9010201003100080C02061C00F -S315400131D07FFFFC3C901020001310008594142120A1 -S315400131E0921260B87FFFF9F09007BFF03910008561 -S315400131F0C20720B0DA04212080A340019414212083 -S3154001320012800007821720B0DA02A004C2006004CF -S3154001321080A3400102800004010000007FFFB7F84F -S31540013220901020107FFFFC271103C0009007BFF0CC -S31540013230921660F07FFFF9DC94152120C205A1C0EA -S315400132408330600E8208600380A060022110014431 -S3154001325002800004231000807FFFB7E99010201000 -S3154001326094142120C02461C09007BFE87FFFF9CEA6 -S315400132709207BFF0DA042120C207BFF080A34001C4 -S315400132801280000794142120DA02A004C207BFF479 -S3154001329080A3400102800D21010000007FFFB7D8C5 -S315400132A0901020109007BFE89216E0E07FFFF9BE2C -S315400132B094152120C206E0E0DA05212080A34001D1 -S315400132C082152120128000079816E0E0DA0060049A -S315400132D0C203200480A3400102800D0B01000000BF -S315400132E07FFFB7C7901020109007BFE89215E0C83E -S315400132F07FFFF9AD94152120C205E0C8DA052120EA -S3154001330080A3400182152120128000079815E0C84C -S31540013310DA006004C203200480A3400102800CF558 -S31540013320010000007FFFB7B69010201019100085EC -S31540013330921320B89007BFE87FFFF99B941521208F -S315400133401B000070C205A1C09A13601F190000102E -S315400133508208400D9813201080A0400C0280000482 -S31540013360211001447FFFB7A6901020107FFFFBD5A7 -S31540013370901020001310008594142120921260B8F9 -S315400133807FFFF9899007BFE8C20720B0DA04212000 -S3154001339080A340019414212012800007821720B097 -S315400133A0DA02A004C200600480A340010280000446 -S315400133B0010000007FFFB792901020107FFFFBC1F4 -S315400133C01103C0009007BFE8921660F07FFFF976BF -S315400133D094152120C205A1C08330600E8208600386 -S315400133E080A0600221100144028000042310008065 -S315400133F07FFFB7839010201094142120C02461C010 -S315400134009016E0E07FFFF9689207BFF0C206E0E060 -S31540013410DA04212080A34001941421201280000760 -S315400134208216E0E0DA02A004C200600480A34001F3 -S3154001343002800CAB010000007FFFB7719010201095 -S315400134409016E0E09207BFE87FFFF95794152120D7 -S31540013450C206E0E0DA05212080A340018215212041 -S31540013460128000079816E0E0DA006004C2032004E7 -S3154001347080A3400102800C95010000007FFFB760E8 -S31540013480901020101B100085901360D092100008F8 -S315400134907FFFF9459415212019100085C20320D0DC -S315400134A0DA05212080A340018215212012800007E0 -S315400134B0981320D0DA006004C203200480A340019F -S315400134C002800C7D010000007FFFB74D9010201057 -S315400134D01B100085901360D8921000087FFFF932C7 -S315400134E09415212019100085C20320D8DA05212020 -S315400134F080A340018215212012800007981320D80D -S31540013500DA006004C203200480A3400102800C65F6 -S31540013510010000007FFFB73A901020101B10008574 -S3154001352003100085901360D8921060D07FFFF91E7A -S31540013530941521201B000070C205A1C09A13601F7B -S31540013540190000108208400D9813201080A0400CED -S3154001355002800004211001447FFFB72990102010FA -S315400135607FFFFB5890102000111000851310008535 -S3154001357094142120901220D87FFFF90B921260D02B -S31540013580C20720B0DA04212080A3400194142120EF -S3154001359012800007821720B0DA02A004C20060043C -S315400135A080A3400102800004010000007FFFB714A0 -S315400135B0901020107FFFFB431103C00019100085B6 -S315400135C01B100085901320D0921360D8C025A1C04E -S315400135D07FFFF8F594152120C20720B0DA05212096 -S315400135E080A340018215212012800007981720B040 -S315400135F0DA006004C203200480A3400102800C1F4C -S315400136001B0000707FFFB6FE901020109016E0E080 -S31540013610921660F07FFFF8E494152120C205A1C0FF -S315400136208330600E8208600380A06002211001444D -S3154001363002800004231000807FFFB6F19010201015 -S3154001364094142120C02461C09015E0C87FFFF8D6AC -S315400136509207BFF0C205E0C8DA04212080A34001E9 -S3154001366094142120128000078215E0C8DA02A004D2 -S31540013670C200600480A3400102800B9C010000004F -S315400136807FFFB6DF901020109015E0C89207BFE883 -S315400136907FFFF8C594152120C205E0C8DA0521202F -S315400136A080A3400182152120128000079815E0C8A9 -S315400136B0DA006004C203200480A3400102800B8625 -S315400136C0010000007FFFB6CE901020109015E0C893 -S315400136D09216E0E07FFFF8B494152120C205E0C8B8 -S315400136E0DA05212080A3400182152120128000079E -S315400136F09815E0C8DA006004C203200480A34001A3 -S3154001370002800B70010000007FFFB6BD90102010B3 -S315400137109015E0C8921000087FFFF8A39415212068 -S31540013720C205E0C8DA05212080A340018215212087 -S31540013730128000079815E0C8DA006004C20320042D -S3154001374080A3400102800B5A010000007FFFB6AC06 -S315400137509010201003100085921060B89015E0C8B3 -S315400137607FFFF8919415212003000070A610601F79 -S31540013770DA05A1C0030000109A0B4013AA1060108D -S3154001378080A34015231000852510014402800004C2 -S31540013790211000807FFFB69A90102010C02421C0CE -S315400137A0901460B89207BFF07FFFF87F9414A12070 -S315400137B0C20421C08208401380A040150280000443 -S315400137C0010000007FFFB68E90102010C02421C05A -S315400137D0901460B89207BFE87FFFF8739414A12054 -S315400137E0C20421C08208401380A040150280000413 -S315400137F0010000007FFFB68290102010C02421C036 -S31540013800901460B89216E0E07FFFF8679414A12007 -S31540013810C20421C08208401380A0401502800005E1 -S31540013820131000857FFFB676901020101310008587 -S31540013830C02421C0921260C8901460B87FFFF85A24 -S315400138409414A120C20421C08208401380A04015CF -S3154001385002800005901460B87FFFB6699010201071 -S31540013860901460B8C02421C0921000087FFFF84E22 -S315400138709414A120C20421C08208401380A040159F -S3154001388002800004010000007FFFB65D9010201009 -S31540013890C02421C0901460B8921660F07FFFF842B0 -S315400138A09414A120C20421C08330600E82086003B3 -S315400138B080A06002228000051103C0007FFFB65040 -S315400138C0901020101103C0007FFFFA7E3B10008448 -S315400138D0A2176210C02421C0AA14A120A40460101A -S315400138E0A0102000A6046008B010200C920400131A -S315400138F0900400117FFFF82C94152120DA048010E2 -S3154001390098040012C2052120A004201880A340017A -S315400139101280000790102010DA032004C2056004CB -S3154001392080A3400122800005B0863FFF7FFFB63469 -S3154001393001000000B0863FFF1CBFFFEE920400135A -S31540013940C205A1C080A06000128009890100000063 -S315400139501110008490122348920220087FFFF8122A -S315400139609415212098176210C2052120DA032148B7 -S3154001397080A340011280000782152120DA03214CE1 -S31540013980C200600480A3400122800AAB031000807C -S315400139907FFFB61B901020101110008490122360F7 -S315400139A0920220087FFFF800941521209817621093 -S315400139B0C2052120DA03216080A34001128000075D -S315400139C082152120DA032164C200600480A34001EC -S315400139D002800AA41B0000707FFFB60990102010D8 -S315400139E01110008490122378920220087FFFF7EE8F -S315400139F09415212098176210C2052120DA032178F7 -S31540013A0080A340011280000782152120DA03217C20 -S31540013A10C200600480A3400102800A9C1B00007022 -S31540013A207FFFB5F790102010C025A1C011100000EE -S31540013A3092102000150FFC007FFFF8B2961020006F -S31540013A40030FFC0080A200011280000880A26000E2 -S31540013A501280000601000000C205A1C080A06000DE -S31540013A6002800005111000007FFFB5E5901020107F -S31540013A701110000092102000152FFC007FFFF8A1C5 -S31540013A80961020000310020080A200011280000857 -S31540013A9080A260001280000601000000C205A1C09C -S31540013AA080A0600002800005113000007FFFB5D480 -S31540013AB0901020101130000092102000150FFC00CC -S31540013AC07FFFF890961020000330020080A200018B -S31540013AD01280000880A260001280000601000000EA -S31540013AE0C205A1C080A0600002800005113000001F -S31540013AF07FFFB5C3901020101130000092102000B6 -S31540013B00152FFC007FFFF87F96102000032FFC0045 -S31540013B1080A200011280000880A260001280000687 -S31540013B2001000000C205A1C080A06000028000051E -S31540013B30111000007FFFB5B2901020101110000047 -S31540013B407FFFF87A130FE0000310100080A20001F6 -S31540013B501280000601000000C205A1C080A06000DD -S31540013B6002800005111000007FFFB5A590102010BE -S31540013B70111000007FFFF877130FE000030FE000FC -S31540013B8080A200011280000601000000C205A1C00A -S31540013B9080A0600022800005191000857FFFB5983E -S31540013BA09010201019100085921320E8C025A1C05D -S31540013BB09007BFF07FFFF78F9415212019100085DC -S31540013BC0C20320D8DA05212080A340018215212095 -S31540013BD012800007981320D8DA006004C20320043B -S31540013BE080A3400102800A461B0000707FFFB58416 -S31540013BF0901020111B100085921360D0C025A1C0E2 -S31540013C009007BFF07FFFF77B94152120C207BFE0E5 -S31540013C10DA05212080A34001128000078215212068 -S31540013C20DA006004C207BFE480A3400102800A3E75 -S31540013C30010000007FFFB572901020119007BFF080 -S31540013C409215E0C87FFFF76B94152120C205E0C8A5 -S31540013C50DA05212080A34001821521201280000728 -S31540013C609815E0C8DA006004C203200480A340012D -S31540013C7002800A32010000007FFFB56190102011D9 -S31540013C8003100085921060B89007BFF07FFFF75987 -S31540013C9094152120C20720B0DA05212080A34001D6 -S31540013CA08215212012800007981720B0DA0060049F -S31540013CB0C203200480A3400102800A251B00007034 -S31540013CC07FFFB54F901020119007BFF0921660F01C -S31540013CD07FFFF74894152120C205A1C01B00007043 -S31540013CE08208400D1900002080A0400C211001449B -S31540013CF002800004231000807FFFB54190102011FF -S31540013D0094142120C02461C09007BFE87FFFF73992 -S31540013D109207BFF0DA042120C207BFE880A3400121 -S31540013D201280000794142120DA02A004C207BFECD6 -S31540013D3080A3400102800A10010000007FFFB530D8 -S31540013D409010201119100085901320E89207BFE0CA -S31540013D507FFFF72894152120C20720B0DA052120DC -S31540013D6080A340018215212012800007981720B0B8 -S31540013D70DA006004C203200480A3400102800A03E2 -S31540013D801B0000707FFFB51E901020111B1000858F -S31540013D9003100085901360E8921060D0C025A1C041 -S31540013DA07FFFF7149415212019100085C20320E8DE -S31540013DB0DA05212080A340018215212012800007C7 -S31540013DC0981320E8DA006004C203200480A340016E -S31540013DD0028009F8010000007FFFB509901020110B -S31540013DE09007BFE89215E0C87FFFF702941521209E -S31540013DF0C205E0C8DA05212080A3400182152120B1 -S31540013E00128000079815E0C8DA006004C203200456 -S31540013E1080A34001028009EC010000007FFFB4F855 -S31540013E20901020071B100085921360B89007BFE8D9 -S31540013E307FFFF6F09415212025000070D805A1C01A -S31540013E409A14A01F03000010980B000D82106010F9 -S31540013E5080A3000121100144028000042310008048 -S31540013E607FFFB4E790102011C02461C09007BFE8DE -S31540013E70921660F07FFFF6DF94142120C20461C0E0 -S31540013E80820840121B00002080A0400D22800005C0 -S31540013E90031000857FFFB4DA9010201103100085CE -S31540013EA0901060D894142120C02461C07FFFF6D1C0 -S31540013EB09207BFF019100085C20320D8DA042120E9 -S31540013EC080A340019414212012800007821320D838 -S31540013ED0DA02A004C200600480A34001028008B84F -S31540013EE0010000007FFFB4C6901020111B10008511 -S31540013EF003100085901360D8921060E87FFFF6BDED -S31540013F009415212019100085C20320D0DA052120FD -S31540013F1080A340018215212012800007981320D0EA -S31540013F20DA006004C203200480A34001028008A98C -S31540013F30010000007FFFB4B2901020119016E0E01E -S31540013F40921000087FFFF6AB94152120C20720B0DE -S31540013F50DA05212080A34001821521201280000725 -S31540013F60981720B0DA006004C203200480A3400100 -S31540013F700280089D1B0000707FFFB4A190102011A4 -S31540013F80C025A1C09016E0E09215E0C87FFFF699E2 -S31540013F9094152120C205E0C8DA05212080A34001FD -S31540013FA082152120128000079815E0C8DA006004C6 -S31540013FB0C203200480A3400102800894010000004E -S31540013FC07FFFB48F901020111B100085921360B8AB -S31540013FD09016E0E07FFFF68794152120C20720B0B6 -S31540013FE0DA05212080A34001821521201280000795 -S31540013FF0981720B0DA006004C203200480A3400170 -S31540014000028008871B0000707FFFB47D901020114D -S31540014010C025A1C09016E0E0921660F07FFFF675CC -S3154001402094152120C205A1C01B0000708208400DD5 -S315400140301900002080A0400C23100080028000045B -S31540014040211001447FFFB46E901020119414212059 -S31540014050C02461C09015E0C87FFFF6669207BFF0A5 -S31540014060C205E0C8DA04212080A34001941421202E -S31540014070128000078215E0C8DA02A004C20060047B -S3154001408080A340010280086F010000007FFFB45CFD -S31540014090901020119015E0C89207BFE87FFFF655B2 -S315400140A094152120C205E0C8DA05212080A34001EC -S315400140B082152120128000079815E0C8DA006004B5 -S315400140C0C203200480A3400102800863010000006E -S315400140D07FFFB44B901020119015E0C89216E0E096 -S315400140E07FFFF64494152120C205E0C8DA05212058 -S315400140F080A3400182152120128000079815E0C84F -S31540014100DA006004C203200480A3400102800857FC -S31540014110010000007FFFB43A901020119015E0C8CD -S31540014120921000087FFFF63394152120C205E0C89E -S31540014130DA05212080A34001821521201280000743 -S315400141409815E0C8DA006004C203200480A3400148 -S31540014150028007F3010000007FFFB429901020116F -S3154001416003100085921060B89015E0C87FFFF621D4 -S3154001417094152120C20720B0DA05212080A34001F1 -S315400141808215212012800007981720B0DA006004BA -S31540014190C203200480A34001028007E61B00007091 -S315400141A07FFFB417901020119015E0C8921660F069 -S315400141B07FFFF61094152120C205A1C03100007081 -S315400141C0820840183B00002080A0401D2310014476 -S315400141D002800004211000807FFFB4099010201155 -S315400141E019100085901320B89207BFF07FFFF601A2 -S315400141F094146120C20421C0AA16201F3500001064 -S3154001420082084015A616A01080A040130280000423 -S31540014210251000857FFFB3FA90102011C02421C0DC -S315400142209014A0B89207BFE87FFFF5F2941461207D -S31540014230C20421C08208401580A0401302800004B8 -S31540014240010000007FFFB3EE90102011C02421C071 -S315400142509014A0B89216E0E07FFFF5E69414612031 -S31540014260C20421C08208401580A040130280000587 -S31540014270131000857FFFB3E29010201113100085C3 -S31540014280C02421C0921260C89014A0B87FFFF5D90E -S3154001429094146120C20421C08208401580A04013B5 -S315400142A0028000059014A0B87FFFB3D5901020116D -S315400142B09014A0B8C02421C0921000087FFFF5CD0C -S315400142C094146120C20421C08208401580A0401385 -S315400142D002800005131000857FFFB3C9901020119D -S315400142E013100085C02421C09014A0B8921260F02A -S315400142F07FFFF5C094146120C20421C08208401892 -S3154001430080A0401D2280000515203E837FFFB3BC5F -S315400143109010201115203E83170021C89412A3FF47 -S315400143209612E3A1191FC0001B00C0009A1360B08A -S3154001433098132102D43FBFD0D83FBFD8C02421C053 -S315400143409007BFD89207BFD07FFFF5AA9407BFC891 -S31540014350DA07BFC8033FFC0080A340010280070B78 -S31540014360A207BFC87FFFB3A6901020111510868300 -S31540014370170021C89412A3FF9612E3A11900400029 -S315400143801B00C0009A1360B098132102D43FBFD0DE -S31540014390D83FBFD8C025A1C09007BFD89207BFD08C -S315400143A07FFFF5949407BFC8DA046004C207BFC80B -S315400143B08090400D1280000A1B000070C205A1C00A -S315400143C09A13601F190000108208400D98132004AB -S315400143D080A0400C22800005150FFC007FFFB388AA -S315400143E090102011150FFC00170281D89412A0409D -S315400143F09612E10C9A102010190006AFD43FBFD097 -S31540014400D83FBFD8C025A1C09007BFD89207BFD01B -S315400144107FFFF5789407BFC8030006AEDA07BFC829 -S315400144208210639580A340011280000703003A9AE7 -S31540014430DA0460048210630F80A3400102800733CF -S31540014440010000007FFFB36E90102011150FFFFF92 -S31540014450170281D89412A3409612E10C9A102010AB -S31540014460190006AFD43FBFD0D83FBFD8C025A1C0A1 -S315400144709007BFD89207BFD07FFFF55E9407BFC8AC -S31540014480DA046004C207BFC88090400D1280000A5A -S315400144901B000070C205A1C09A13601F19000010CD -S315400144A08208400D9813200480A0400C028000042D -S315400144B0010000007FFFB35290102011C025A1C01A -S315400144C0111088007FFFF63713100100031066C9EB -S315400144D0821062CA80A2000112800006010000001B -S315400144E0C205A1C080A06000028000051111BBFE7B -S315400144F07FFFB343901020111111BBFE901223FF91 -S315400145007FFFF628130C7040031527CA8210611EDF -S3154001451080A200011280000601000000C205A1C070 -S3154001452080A06000028000051310C7FF7FFFB334EF -S31540014530901020111310C7FF921263FC7FFFF619EA -S31540014540111E607E031D73FC8210633880A2000138 -S315400145501280000601000000C205A1C080A06000D3 -S3154001456002800005130FE0007FFFB3259010201154 -S31540014570130FE000921260017FFFF60A110020003E -S3154001458080A220001280000A1B000070C205A1C053 -S315400145909A13601F190000108208400D98132004D9 -S315400145A080A0400C02800005110FE0007FFFB3148C -S315400145B090102011110FE000C025A1C07FFFF5F931 -S315400145C092100008030FE00080A20001128000064D -S315400145D001000000C205A1C080A060000280000564 -S315400145E0130FE0007FFFB30690102011130FE00078 -S315400145F0921260017FFFF5EB1100200080A220009E -S315400146001280000A1B000070C205A1C09A13601FE8 -S31540014610190000108208400D9813200480A0400C18 -S31540014620028000051B1000857FFFB2F59010201116 -S315400146301B100085921360E8C025A1C09007BFF00A -S315400146407FFFF4DE9415212019100085C20320E86E -S31540014650DA05212080A3400182152120128000071E -S31540014660981320E8DA006004C203200480A34001C5 -S31540014670028006BA010000007FFFB2E190102012CD -S315400146801B100085921360D09007BFF07FFFF4CBDB -S315400146909415212019100085C20320D0DA05212066 -S315400146A080A340018215212012800007981320D053 -S315400146B0DA006004C203200480A34001028006ACF4 -S315400146C0010000007FFFB2CE901020129007BFF08C -S315400146D09215E0C87FFFF4B994152120C205E0C8C0 -S315400146E0DA05212080A3400182152120128000078E -S315400146F09815E0C8DA006004C203200480A3400193 -S31540014700028006A0010000007FFFB2BD901020127A -S315400147101B100085921360B89007BFF07FFFF4A786 -S3154001472094152120C20720B0DA05212080A340013B -S315400147308215212012800007981720B0DA00600404 -S31540014740C203200480A34001028006931B0000702F -S315400147507FFFB2AB901020129007BFF0921660F027 -S315400147607FFFF49694152120C205A1C01B0000705D -S315400147708208400D1900002080A0400C2110014400 -S3154001478002800004231000807FFFB29D901020120A -S3154001479094142120C02461C09007BFE87FFFF487AD -S315400147A09207BFF0DA042120C207BFE880A3400187 -S315400147B01280000794142120DA02A004C207BFEC3C -S315400147C080A34001028006DE010000007FFFB28C1B -S315400147D0901020120310008519100085901060E892 -S315400147E0921320D87FFFF47594152120C20720B07B -S315400147F0DA05212080A3400182152120128000077D -S31540014800981720B0DA006004C203200480A3400157 -S31540014810028006D01B0000707FFFB27990102012F3 -S31540014820C025A1C09007BFE89215E0C87FFFF46399 -S3154001483094152120C205E0C8DA05212080A3400154 -S3154001484082152120128000079815E0C8DA0060041D -S31540014850C203200480A34001028006C70100000074 -S315400148607FFFB267901024991B100085921360B8A0 -S315400148709007BFE87FFFF45194152120C20720B06D -S31540014880DA05212080A340018215212012800007EC -S31540014890981720B0DA006004C203200480A34001C7 -S315400148A0028006BA1B0000707FFFB255901020129D -S315400148B09007BFE8921660F07FFFF44094152120DF -S315400148C0C205A1C01B0000708208400D19000020DE -S315400148D080A0400C21100144028000042310008076 -S315400148E07FFFB2479010201294142120C02461C04A -S315400148F09016E0E07FFFF4319207BFF0C206E0E098 -S31540014900DA04212080A3400194142120128000075B -S315400149108216E0E0DA02A004C200600480A34001EE -S31540014920028006A4010000007FFFB23590102012DC -S315400149309016E0E09207BFE87FFFF420941521200E -S31540014940C20720B0DA05212080A34001821521202B -S3154001495012800007981720B0DA006004C2032004D1 -S3154001496080A34001028006981B0000707FFFB2249D -S3154001497090102012C025A1C09016E0E09215E0C823 -S315400149807FFFF40E94152120C205E0C8DA052120E7 -S3154001499080A3400182152120128000079815E0C8A6 -S315400149A0DA006004C203200480A340010280068F1E -S315400149B0010000007FFFB212901020120310008503 -S315400149C0921060B89016E0E07FFFF3FC9415212029 -S315400149D0C20720B0DA05212080A34001821521209B -S315400149E012800007981720B0DA006004C203200441 -S315400149F080A34001028006821B0000707FFFB20047 -S31540014A00901020129016E0E0921660F07FFFF3EBD3 -S31540014A1094152120C205A1C01B0000708208400DDB -S31540014A201900002080A0400C21100144028000049E -S31540014A30231000807FFFB1F29010201294142120A0 -S31540014A40C02461C09015E0C87FFFF3DC9207BFF038 -S31540014A50C205E0C8DA04212080A340019414212034 -S31540014A60128000078215E0C8DA02A004C200600481 -S31540014A7080A340010280061E010000007FFFB1E0D5 -S31540014A80901020129015E0C89207BFE87FFFF3CB44 -S31540014A9094152120C205E0C8DA05212080A34001F2 -S31540014AA082152120128000079815E0C8DA006004BB -S31540014AB0C203200480A340010280061201000000C7 -S31540014AC07FFFB1CF901020129015E0C89216E0E01A -S31540014AD07FFFF3BA94152120C205E0C8DA052120EB -S31540014AE080A3400182152120128000079815E0C855 -S31540014AF0DA006004C203200480A340010280060656 -S31540014B00010000007FFFB1BE901020129015E0C851 -S31540014B10921000087FFFF3A994152120C205E0C831 -S31540014B20DA05212080A34001821521201280000749 -S31540014B309815E0C8DA006004C203200480A340014E -S31540014B40028005FA010000007FFFB1AD90102012EE -S31540014B50191000859015E0C8921320B87FFFF3978E -S31540014B609415212003000070A610601FDA05A1C02C -S31540014B70030000109A0B4013AA10601080A3401541 -S31540014B802510008523100144028000042110008075 -S31540014B907FFFB19B90102012C02421C09014A0B871 -S31540014BA09207BFF07FFFF38594146120C20421C0B0 -S31540014BB08208401380A040150280000401000000D5 -S31540014BC07FFFB18F90102012C02421C09014A0B84D -S31540014BD09207BFE87FFFF37994146120C20421C094 -S31540014BE08208401380A040150280000401000000A5 -S31540014BF07FFFB18390102012C02421C09014A0B829 -S31540014C009216E0E07FFFF36D94146120C20421C047 -S31540014C108208401380A040150280000513100085CC -S31540014C207FFFB1779010201213100085C02421C058 -S31540014C30921260C89014A0B87FFFF360941461206B -S31540014C40C20421C08208401380A04015028000059D -S31540014C509014A0B87FFFB16A901020129014A0B8AA -S31540014C60C02421C0921000087FFFF35494146120A0 -S31540014C70C20421C08208401380A04015028000046E -S31540014C80010000007FFFB15E90102012C02421C0B8 -S31540014C909014A0B8921660F07FFFF34894146120F7 -S31540014CA0C20421C08330600E8208600380A0600286 -S31540014CB0228000051103C0007FFFB15190102012E0 -S31540014CC01103C0007FFFF57F3B100084A41763905A -S31540014CD0AA146120C02421C0A604A008A210200065 -S31540014CE0B0102005A00440129204401394152120CF -S31540014CF07FFFF33290100010DA042010C205212004 -S31540014D00A204601880A3400112800007901020126F -S31540014D10DA042014C205600480A3400102800474B1 -S31540014D20010000007FFFB13601000000B0863FFF61 -S31540014D303CBFFFEEA00440121110008590122020C6 -S31540014D40920220087FFFF31D941521209817639046 -S31540014D50C2052120DA0320A080A34001128000076A -S31540014D6082152120DA0320A4C200600480A34001F9 -S31540014D70028004DC1B0000707FFFB12190102012DD -S31540014D801110008590122038C025A1C0920220083A -S31540014D907FFFF30A9415212098176390C2052120BD -S31540014DA0DA0320B880A34001128000078215212032 -S31540014DB0DA0320BCC200600480A340010280047F64 -S31540014DC01B0000707FFFB10E90102012111000855C -S31540014DD090122050C025A1C0920220087FFFF2F711 -S31540014DE09415212098176390C2052120DA0320D01B -S31540014DF080A340011280000782152120DA0320D4C6 -S31540014E00C200600480A34001028004761B0000704A -S31540014E107FFFB0FB90102012111000859012206880 -S31540014E20C025A1C0920220087FFFF2E494152120FB -S31540014E3098176390C2052120DA0320E880A3400138 -S31540014E401280000782152120DA0320ECC20060049B -S31540014E5080A340010280046D1B0000707FFFB0E813 -S31540014E60901020121110008590122080C025A1C0FB -S31540014E70920220087FFFF2D1941521209817639062 -S31540014E80C2052120DA03210080A3400112800007D8 -S31540014E9082152120DA032104C200600480A3400167 -S31540014EA0028004641B0000707FFFB0D59010201271 -S31540014EB0C025A1C0111010007FFFF3B013100000F0 -S31540014EC00310300080A2000112800006010000009C -S31540014ED0C205A1C080A0600002800005111FE0004C -S31540014EE07FFFB0C790102012111FE0001310000081 -S31540014EF07FFFF2B794152120031FFC00DA0521201C -S31540014F0080A340011280000A82152120C20060045C -S31540014F1080A060001280000601000000C205A1C009 -S31540014F2080A0600002800005111FE0007FFFB0B441 -S31540014F309010201B111FE000133000007FFFF2A4E8 -S31540014F4094152120033FFC00DA05212080A340016E -S31540014F501280000A82152120C200600480A06000F0 -S31540014F601280000601000000C205A1C080A06000B9 -S31540014F7002800005111000007FFFB0A19010201C97 -S31540014F8011100000921020107FFFF29194152120FC -S31540014F90C205A1C01B0000708208400D1900002007 -S31540014FA080A0400C2110014402800004231000809F -S31540014FB07FFFB0939010201D94142120C02461C01E -S31540014FC0110020007FFFF282130FC000DA04212076 -S31540014FD0030E000080A340011280000A9414212090 -S31540014FE0C202A00480A060001280000601000000F9 -S31540014FF0C20461C080A0600002800005111FDFFF6E -S315400150007FFFB07F9010201E111FDFFF901223FFFC -S31540015010131000007FFFF26E941521200311FFFF4C -S31540015020821063FFDA05212080A340011280000728 -S3154001503082152120DA0060040338000080A3400174 -S3154001504002800405010000007FFFB06D9010201F13 -S31540015050111FD000130FF0007FFFF25D9415212040 -S315400150600311FC80DA05212080A340011280000A49 -S3154001507082152120C200600480A0600012800006D3 -S3154001508001000000C205A1C080A0600002800005A9 -S31540015090111FDFFF7FFFB05A90102021111FDFFF44 -S315400150A0901223FF921000087FFFF24994152120A8 -S315400150B00313FBFF821063FFDA05212080A3400121 -S315400150C01280000882152120DA00600403300000B6 -S315400150D08210602080A34001028003E401000000A9 -S315400150E07FFFB047901020207FFFF4761103C00068 -S315400150F0C025A1C09007BFE07FFFF2449215212051 -S31540015100C207BFE0DA05212080A3400112800007D3 -S3154001511082152120DA006004C207BFE480A3400162 -S31540015120028003D7010000007FFFB03590102013A5 -S315400151301B100085901360E87FFFF2349215212001 -S3154001514003100085DA0060E8C205212080A0400DE9 -S31540015150191000858215212012800007901320E83E -S31540015160DA006004C202200480A34001028003C920 -S31540015170010000007FFFB022901020131B10008514 -S31540015180901360D07FFFF2219215212019100085DE -S31540015190C20320D0DA05212080A3400182152120B7 -S315400151A012800007981320D0DA006004C20320045D -S315400151B080A34001028003BC010000007FFFB010C4 -S315400151C0901020131B100085901360D87FFFF20FBB -S315400151D092152120C20720B0DA05212080A3400183 -S315400151E08215212012800007981720B0DA0060044A -S315400151F0C203200480A34001028003B01B0000705B -S315400152007FFFAFFF9010201303100085901060B808 -S31540015210C025A1C07FFFF1FD92152120C20720B014 -S31540015220DA05212080A34001821521201280000742 -S31540015230981720B0DA006004C203200480A340011D -S315400152400280040F1B0000707FFFAFED901020130A -S31540015250C025A1C09015E0C87FFFF1EC9215212031 -S31540015260C2052120DA05E0C880A0400D8215212023 -S31540015270128000079015E0C8DA006004C2022004DB -S3154001528080A3400102800407010000007FFFAFDCDC -S3154001529090102013170C00089A10200019100C00CA -S315400152A015300F789612E001D83FBFF0D43FBFC00A -S315400152B09007BFF07FFFF1D592152120031004001E -S315400152C0DA05212080A340011280000A821521209F -S315400152D0C200600480A06000128000060100000048 -S315400152E0C205A1C080A06000028000059007BFC032 -S315400152F07FFFAFC3901020139007BFC07FFFF1C35C -S3154001530092152120C2052120DA0720B080A0400D48 -S315400153108215212012800007981720B0DA00600418 -S31540015320C203200480A34001028003E31B000070F6 -S315400153307FFFAFB390102013901660F07FFFF1B35B -S3154001534092152120C205A1C08330600E82086003F8 -S3154001535080A0600202800004211000807FFFAFA878 -S3154001536090102013C02421C07FFFF2981111F20042 -S315400153700310E80080A2000112800006010000002F -S31540015380C20421C080A06000028000040100000028 -S315400153907FFFAF9B901020137FFFF3CA11100000CF -S315400153A01101F5897FFFF289901221E20308E96430 -S315400153B080A200011280000601000000C205A1C0C2 -S315400153C080A0600002800004010000007FFFAF8CD6 -S315400153D0901020237FFFF27D1112A2080311410094 -S315400153E080A200011280000601000000C205A1C092 -S315400153F080A0600002800004010000007FFFAF80B2 -S31540015400901020237FFFF3AF110010009007BFF0EB -S31540015410921660F07FFFF1649415212003100C0071 -S31540015420DA05212080A340011280000A821521203D -S31540015430C200600480A060001280000601000000E6 -S31540015440C205A1C080A0600002800005901660F0F0 -S315400154507FFFAF6B90102014901660F09207BFC08B -S315400154607FFFF1569415212003200000DA05212003 -S3154001547080A340011280000A82152120C2006004E7 -S3154001548080A060001280000601000000C205A1C094 -S3154001549080A0600002800004010000007FFFAF5839 -S315400154A0901020147FFFF19190102001030FE0002E -S315400154B080A200011280000601000000C205A1C0C1 -S315400154C080A0600002800004010000007FFFAF4C15 -S315400154D0901020147FFFF17D90102001030FFC00F6 -S315400154E080A200011280000880A26000128000069E -S315400154F001000000C205A1C080A060000280000436 -S31540015500010000007FFFAF3E901020147FFFF36D36 -S315400155101110100019100085D41B20D07FFFF1F91E -S31540015520D01E60F003100085D03D2120DA0060D8FE -S31540015530C205212080A0400D191000858215212029 -S3154001554012800007901320D8DA006004C2022004BA -S3154001555080A3400102800361010000007FFFAF2864 -S31540015560901020227FFFF35711100000170400808E -S31540015570150F28009612E0F09A102000190FFC0032 -S31540015580D43FBFC0D83FBFF09007BFF09207BFC01E -S315400155907FFFF10594152120030FFC00DA05212038 -S315400155A080A340011280000682152120C2006004BA -S315400155B080A0600002800004010000007FFFAF1060 -S315400155C0901020157FFFF33F112000001700004087 -S315400155D0150014009612E0019A102000190FFC00E4 -S315400155E0D43FBFC0D83FBFF09007BFF09207BFC0BE -S315400155F07FFFF0ED94152120030FFC00DA052120F1 -S3154001560080A340011280000682152120C200600459 -S3154001561080A0600102800004010000007FFFAEF817 -S31540015620901020157FFFF32711300000170000402E -S31540015630152014009612E0019A102000192FFC0043 -S31540015640D43FBFC0D83FBFF09007BFF09207BFC05D -S315400156507FFFF0D594152120032FFC00DA05212088 -S3154001566080A340011280000682152120C2006004F9 -S3154001567080A0600102800004010000007FFFAEE0CF -S31540015680901020157FFFF30F11100000190FFC0039 -S315400156909A102000D83FBFF09007BFF09216E0E085 -S315400156A07FFFF0C194152120C206E0E0DA052120F2 -S315400156B080A3400182152120128000079816E0E060 -S315400156C0DA006004C203200480A340010280000482 -S315400156D0010000007FFFAECA901020157FFFF2F94E -S315400156E01120000017000040150014009612E00139 -S315400156F0190FFC009A102000D43FBFC0D83FBFF01D -S315400157009007BFF09216E0E07FFFF0A794152120A5 -S31540015710C206E0E0DA05212080A34001821521205E -S31540015720128000079816E0E0DA006004C203200404 -S3154001573080A3400102800004010000007FFFAEB05B -S31540015740901020157FFFF2DF113000001700004056 -S31540015750152014009612E0019A102000192FFC0022 -S31540015760D43FBFC0D83FBFF09007BFF09216E0E0EC -S315400157707FFFF08D94152120C2052120DA06E0E055 -S3154001578080A0400D82152120128000079016E0E08E -S31540015790DA006004C202200480A3400102800004B2 -S315400157A0010000007FFFAE96901020157FFFF2C5E5 -S315400157B01110000015100000961020019A102001CA -S315400157C0190FFC00D43FBFC0D83FBFF09007BFF0D0 -S315400157D09207BFC07FFFF079941521200310000086 -S315400157E0DA05212080A3400112800006821521207E -S315400157F0C200600480A06002028000040100000033 -S315400158007FFFAE7F901020157FFFF2AE1120000082 -S315400158109007BFF09207BFC07FFFF0689415212023 -S3154001582003100000DA05212080A340011280000602 -S3154001583082152120C200600480A06003028000041A -S31540015840010000007FFFAE6E901020157FFFF29D94 -S31540015850113000009A102001192FFC00D83FBFF0EB -S315400158609007BFF09207BFC07FFFF05494152120E7 -S3154001587003300000DA05212080A340011280000692 -S3154001588082152120C200600480A0600302800004CA -S31540015890010000007FFFAE5A901020157FFFF2896C -S315400158A011100000150FFC04172F26159412A01293 -S315400158B09612E231190FFEAE1B1CD2E89A13601103 -S315400158C098132154D43FBFC0D83FBFF09007BFF0D3 -S315400158D09207BFC07FFFF04794152120030FFEA713 -S315400158E082106296DA05212080A3400112800008C9 -S315400158F082152120DA006004032C1B348210602FAC -S3154001590080A3400102800004010000007FFFAE3CFD -S31540015910901020157FFFF26B112000009007BFF019 -S315400159209207BFC07FFFF03394152120030FFEA7D6 -S3154001593082106296DA05212080A340011280000878 -S3154001594082152120DA006004032C1B34821060305A -S3154001595080A3400102800004010000007FFFAE28C1 -S31540015960901020157FFFF25711300000192FFC04CB -S315400159701B2F26159A13623198132012D83FBFC0A8 -S315400159809007BFF09207BFC07FFFF01A9415212000 -S31540015990032FFEA782106296DA05212080A34001DB -S315400159A01280000882152120DA006004032C1B3482 -S315400159B08210603080A34001028000040100000093 -S315400159C07FFFAE0F901020157FFFF23E11100000B1 -S315400159D015101000961020009A102000191038005A -S315400159E0D43FBFC0D83FBFF09007BFF09207BFC0BA -S315400159F07FFFF0009415212003102400DA052120B1 -S31540015A0080A340011280000682152120C200600455 -S31540015A1080A0600002800004010000007FFFADF815 -S31540015A20901020157FFFF227112000009007BFF04C -S31540015A309207BFC07FFFEFEF94152120031024008A -S31540015A40DA05212080A3400112800006821521201B -S31540015A50C200600480A060000280000401000000D2 -S31540015A607FFFADE7901020157FFFF2161130000041 -S31540015A709007BFF09207BFC07FFFEFDE941521204C -S31540015A8003102400DA05212080A34001128000067C -S31540015A9082152120C200600480A0600002800004BB -S31540015AA0010000007FFFADD6901020157FFFF20563 -S31540015AB011100000210FE000110020007FFFF0B916 -S31540015AC09214200180A220001280012301000000CF -S31540015AD07FFFF1FC11200000110020007FFFF0B193 -S31540015AE09214200180A220001280011801000000BA -S31540015AF07FFFF1F411300000921420017FFFF0A9DD -S31540015B001100200080A220001280010D010000003A -S31540015B107FFFF1EC111000009A102000190FFC00D4 -S31540015B20D83FBFF09007BFF07FFFEFB89215212015 -S31540015B30C207BFF0DA05212080A340011280000789 -S31540015B4082152120DA006004C207BFF480A3400118 -S31540015B50028002A7010000007FFFADA99010201529 -S31540015B607FFFF1D8112000009007BFF07FFFEFA71C -S31540015B7092152120C207BFF0DA05212080A34001FA -S31540015B801280000782152120DA006004C207BFF4A3 -S31540015B9080A340010280029B010000007FFFAD9877 -S31540015BA0901020157FFFF1C7113000009007BFF01C -S31540015BB07FFFEF9692152120C207BFF0DA0521201B -S31540015BC080A340011280000782152120DA0060047B -S31540015BD0C207BFF480A340010280028F010000008A -S31540015BE07FFFAD87901020157FFFF1B611100000A1 -S31540015BF0030FDFFF901063FF7FFFF074A0100008D2 -S31540015C0080A2001002800004010000007FFFAD7CED -S31540015C10901020157FFFF1AB112000007FFFF06B44 -S31540015C2090100010030FE00080A2000102800004E2 -S31540015C30010000007FFFAD72901020157FFFF1A19A -S31540015C40113000007FFFF0619010001080A200101B -S31540015C5002800004010000007FFFAD69901020150D -S31540015C607FFFF198901020007FFFF0609015212072 -S31540015C70032FFE00DA05212080A340011280000691 -S31540015C8082152120C200600480A0600002800005C8 -S31540015C90211001447FFFAD5A901020162110014476 -S31540015CA07FFFF05C90142128DA042128032FF000AD -S31540015CB080A3400102800004A21421287FFFAD5039 -S31540015CC0901020167FFFF05D90100011DA04212814 -S31540015CD0030FE00080A340010280000401000000A0 -S31540015CE07FFFAD47901020167FFFF064901521206D -S31540015CF0030FFBF7821063F0DA05212080A34001F0 -S31540015D001280000882152120DA0060040303FF1285 -S31540015D108210604A80A3400102800005921660F01D -S31540015D207FFFAD3790102016921660F09007BFF0B6 -S31540015D307FFFEF3094152120C205A1C08330600E4C -S31540015D408208600780A060020280000519100046A3 -S31540015D507FFFAD2B901020171910004617100080B9 -S31540015D60DA02E1C8821321F880A0400DE00321F850 -S31540015D7002800004A212E1C87FFFAD2190102018D5 -S31540015D80C204600480A040100280000401000000AB -S31540015D907FFFAD1B90102018C204600880A06000F0 -S31540015DA01280007701000000C204600C80A06000F0 -S31540015DB01280006C010000007FFFEEE6010000004A -S31540015DC080A220010280019801000000190C40299F -S31540015DD01B23CD1B9A13609B981320069410200019 -S31540015DE096102000D83FBFF0D43FBFC07FFFEF2FB2 -S31540015DF09007BFF003100083A21062101B100081B0 -S31540015E0003100144A0136210A4106120B0102000B9 -S31540015E10832E2002DA044001DA27BFC09007BFC0B3 -S31540015E207FFFEF25921521209B2E2003D804000DDC -S31540015E30C2052120B00620019603401080A300012F -S31540015E401280000790102019DA02E004C204A0046F -S31540015E5080A340010280000580A620FF7FFFACE8B9 -S31540015E600100000080A620FF04BFFFEB832E200225 -S31540015E7003100083A41062101B100080031001441C -S31540015E80A2136210A6106120B0102000A12E20029C -S31540015E90C2048010C227BFC0921521207FFFEEDBCE -S31540015EA09007BFC0DA044010C2052120B006200287 -S31540015EB09804001180A34001128000079010201A17 -S31540015EC0DA032004C204E00480A3400102800005F5 -S31540015ED080A620FF7FFFACCA0100000080A620FFFC -S31540015EE024BFFFECA12E200230800211C205A1C0C1 -S31540015EF080A0600022BFFB8FB0863FFF30BFFB8A88 -S31540015F00C205A1C080A0600002BFF14501000000AA -S31540015F1030BFF141C205A1C080A0600002BFF13689 -S31540015F200100000030BFF132C205A1C080A060006F -S31540015F3002BFF1270100000030BFF1237FFFACB063 -S31540015F409010201530BFFEF37FFFACAD90102015A9 -S31540015F5030BFFEE87FFFACAA9010201530BFFEDDB2 -S31540015F607FFFACA79010201830BFFF947FFFACA4F1 -S31540015F709010201010BFF678111000847FFFACA05E -S31540015F809010201830BFFF89C207BFCC80A06000A7 -S31540015F9012BFF8F501000000C20421C08208401575 -S31540015FA09A16A00880A0400D12BFF8EF010000002C -S31540015FB010BFF8F015108683C205A1C09A13601F61 -S31540015FC0190000108208400D9813200880A0400C4B -S31540015FD012BFFB7D1110008510BFFB7F9012205030 -S31540015FE0C205A1C09A13601F190000108208400D16 -S31540015FF09813200880A0400C12BFFB861110008523 -S3154001600010BFFB8890122068C205A1C09A13601F79 -S31540016010190000108208400D9813200480A0400CFE -S3154001602012BFFB8F1110008510BFFB91901220808B -S31540016030C205A1C09A13601F190000108208400DC5 -S315400160409813200880A0400C12BFFB980100000065 -S3154001605030BFFB98C205A1C080A0600002BFFBFE15 -S31540016060111FD00030BFFBF9C205A1C080A060005E -S3154001607002BFFC1E0100000030BFFC1AC205A1C0D0 -S3154001608080A0600002BFFC2C1B10008530BFFC279E -S31540016090C205A1C080A0600002BFFC3A1B1000856A -S315400160A030BFFC35C205A1C080A0600002BFFC47DD -S315400160B01B10008530BFFC42C205A1C09A13601F68 -S315400160C0190000108208400D9813201080A0400C42 -S315400160D012BFFC4C0310008510BFFC4E901060B8F7 -S315400160E0C205A1C09A13601F190000108208400D15 -S315400160F09813200480A0400C12BFFB20111000858C -S3154001610010BFFB2290122038C205A1C080A06000BA -S3154001611022BFF8D0150FFFFF30BFF8CBC205A1C093 -S3154001612080A0600002BFF8100310008530BFF80B55 -S31540016130C205A1C09A13601F190000108208400DC4 -S315400161409813201080A0400C12BFF8169015E0C895 -S3154001615010BFF818921660F0C205A1C080A0600079 -S3154001616002BFF9491B10008530BFF944C205A1C0E1 -S3154001617080A0600002BFF9579007BFF030BFF952C7 -S31540016180C205A1C080A0600002BFF9631B10008553 -S3154001619030BFF95EC205A1C09A13601F19000010F5 -S315400161A08208400D9813201080A0400C12BFF96957 -S315400161B09007BFF010BFF96B921660F0C20461C040 -S315400161C080A0600002BFF74B1B10008530BFF74629 -S315400161D0C205A1C080A0600002BFF75A9016E0E058 -S315400161E030BFF755C205A1C09A13601F19000010B0 -S315400161F08208400D9813201080A0400C12BFF75F13 -S315400162000100000030BFF75FC205A1C080A0600059 -S3154001621002BFF76F1B10008530BFF76AC205A1C0E8 -S315400162209A13601F190000108208400D9813201020 -S3154001623080A0400C12BFF7750100000030BFF77512 -S31540016240C20461C080A0600002BFF7949015E0C807 -S3154001625030BFF78FC205A1C080A0600002BFF7A082 -S315400162609015E0C830BFF79BC205A1C080A0600071 -S3154001627002BFF7AC9015E0C830BFF7A7C205A1C071 -S315400162809A13601F190000108208400D98132010C0 -S3154001629080A0400C12BFFBED0100000030BFFBEDBA -S315400162A0C205A1C080A0600002BFFBFC170C00081C -S315400162B030BFFBF7C205A1C09A13601F1900001039 -S315400162C08208400D9813201080A0400C12BFFC1983 -S315400162D0901660F030BFFC1AC205A1C080A06000D4 -S315400162E002BFFCA10100000030BFFC9DC20461C099 -S315400162F080A0600002BFF9E59015E0C830BFF9E023 -S31540016300C205A1C080A0600002BFF9F19015E0C8A6 -S3154001631030BFF9ECC205A1C080A0600002BFF9FD03 -S315400163209015E0C830BFF9F8C205A1C080A0600051 -S3154001633002BFFA091910008530BFFA04C20461C0D0 -S3154001634080A0600002BFF9250310008530BFF92007 -S31540016350C205A1C09A13601F190000108208400DA2 -S315400163609813201080A0400C12BFF92C01000000A8 -S3154001637030BFF92CC205A1C080A0600002BFF93C24 -S315400163801B10008530BFF937C205A1C09A13601FA3 -S31540016390190000108208400D9813201080A0400C6F -S315400163A012BFF9429007BFE810BFF944921660F058 -S315400163B0C20461C080A0600002BFF95F9016E0E0B0 -S315400163C030BFF95AC205A1C09A13601F19000010C7 -S315400163D08208400D9813201080A0400C12BFF9642A -S315400163E00100000030BFF964C205A1C080A0600071 -S315400163F002BFF9740310008530BFF96FC205A1C011 -S315400164009A13601F190000108208400D981320103E -S3154001641080A0400C12BFF97A9016E0E010BFF97CDB -S31540016420921660F07FFFAB769010201910BFFE697F -S31540016430190C4029D80061C01B0000709A13601FD7 -S3154001644003000010980B000D8210600880A3000124 -S3154001645012BFF5501110008410BFF55290122360FF -S31540016460C205A1C09A13601F190000108208400D91 -S315400164709813200480A0400C12BFF55811100084D7 -S3154001648010BFF55A90122378C205A1C09A13601F16 -S31540016490190000108208400D9813200480A0400C7A -S315400164A012BFF5600100000030BFF560C205A1C012 -S315400164B080A0600002BFF4A90310008530BFF4A498 -S315400164C0C205A1C080A0600002BFF4939015E0C848 -S315400164D030BFF48EC205A1C080A0600002BFF47D2A -S315400164E09015E0C830BFF478C20461C080A0600056 -S315400164F002BFF4679015E0C830BFF462C205A1C07F -S315400165009A13601F190000108208400D981320024B -S3154001651080A0400C12BFF5B61B10008510BFF5B820 -S31540016520921360D0C205A1C080A0600002BFF5C52C -S315400165309007BFF030BFF5C0C205A1C080A0600082 -S3154001654002BFF5D10310008530BFF5CCC205A1C00D -S315400165509A13601F190000108208400D98132010ED -S3154001656080A0400C12BFF5D79007BFF010BFF5D9F8 -S31540016570921660F0C20461C080A0600022BFF5F3AC -S315400165801910008530BFF5EEC205A1C09A13601FF0 -S31540016590190000108208400D9813201080A0400C6D -S315400165A012BFF5F91B10008510BFF5FB03100085DE -S315400165B0C205A1C080A0600002BFF60B9007BFE8EC -S315400165C030BFF606C205A1C080A0600002BFF61723 -S315400165D01B10008530BFF612C20421C080A06000A6 -S315400165E022BFF03E113C02AF30BFF039C205A1C017 -S315400165F080A0600002BFFD5B0100000030BFFD5777 -S31540016600C205A1C080A0600002BFFD670100000075 -S3154001661030BFFD63C205A1C080A0600002BFFD730B -S315400166200100000030BFFD6FC205A1C080A060001F -S3154001663002BFF2D70310008530BFF2D2C205A1C016 -S3154001664080A0600002BFF2C19007BFF030BFF2BC2C -S31540016650C205A1C080A0600002BFF2AA3710008522 -S3154001666030BFF2A5C205A1C080A0600002BFF028DC -S315400166701111FC0030BFF023C205A1C09A13601F5F -S31540016680190000108208400D9813201080A0400C7C -S3154001669012BFF3DD9016E0E010BFF3DF921660F013 -S315400166A0C205A1C080A0600002BFF39E1B100085F9 -S315400166B030BFF399C205A1C080A0600002BFF38636 -S315400166C01B10008530BFF381C205A1C080A06000C8 -S315400166D002BFF36E1B10008530BFF369C20461C06F -S315400166E080A0600002BFF3589016E0E030BFF3533C -S315400166F0C205A1C080A0600002BFF30E191000853B -S3154001670030BFF309C205A1C080A0600002BFF2F804 -S315400167109007BFE830BFF2F3C20461C080A06000B9 -S3154001672002BFF2E29007BFE830BFF2DD81C7E00861 -S3154001673081E80000D27A000081C3E0080100000030 -S3154001674081C3E008900A20209332600492126001CE -S315400167508213C0007FFFFFF89E1040000100000039 -S3154001676081D8200081C3E008010000009DE3BF9865 -S315400167707FFFFFFC0100000082102400C0A04300FF -S3154001678081C7E00881E80000833220189A1000088A -S315400167908088600F028000049010200083336010CF -S315400167A09008600381C3E008010000009DE3BF98A3 -S315400167B0031000C01B1000C1B0106000A21360009E -S315400167C0031000C21B1000C2A4106000A613610092 -S315400167D0031000201B100020A8106158AA13600066 -S315400167E07FFFEBAD9010200C808A2008028001FDCE -S315400167F0010000007FFFAA7D9010200ED08003206B -S315400168007FFFFFE2010000000310014380A2200246 -S31540016810028000C6D02060D080A22002148000E40D -S3154001682080A2200380A22001028000D1821020197B -S31540016830331000A02F1000A0391000A0371000A07F -S31540016840351000A07FFFFFC7210100007FFFFFC871 -S31540016850BA04A00C921000117FFFFFBC90100018E3 -S31540016860921000117FFFFFB990062004901000118D -S315400168707FFFFFB19210200ADA066014110800006A -S31540016880913A000DC205E010900A0001912A2002BA -S3154001689013008000900200117FFFFFA79212600A49 -S315400168A0DA06601411100000913A000DC205E0109D -S315400168B0900A0001912A2002900200117FFFFF9E5B -S315400168C09214208EDA066014111C0000913A000DD4 -S315400168D0C205E010900A0001912A20021301C0006E -S315400168E0900200117FFFFF949212608E9334A004B0 -S315400168F09004600C7FFFFF90921260019214201E5B -S315400169007FFFFF8D9004A0089010001D7FFFFF8A36 -S31540016910921020009334E004921260017FFFFF86BB -S315400169209004A004111000C2901221087FFFFF823B -S3154001693092102000031000E0A01060009334200460 -S31540016940111000C2901221047FFFFF7B9212601A40 -S3154001695003048D1582106278C2242004111000E0D0 -S3154001696015100120C0222000A2102003AC12A00065 -S31540016970A004E00C90047FFD40000A7392102003AE -S315400169801B100143C20360D08200600C932A0001B0 -S315400169909202401693326004901000107FFFFF660A -S315400169A09212601EA204600180A4600A04BFFFF235 -S315400169B0A0042004C206E008D807200C8208600122 -S315400169C08328400CD605E010111000E0D406A00043 -S315400169D0DA06601498122000960AE003972AC00D41 -S315400169E0920AA002111000A0DA022004940AA00122 -S315400169F0952A800D932A400D1B1000209612C00146 -S31540016A00E8236150030100001B0076418210601E9D -S31540016A109A1361C09212C00999332004C2252004F9 -S31540016A20DA2520089612C00A9E13200E913560047D -S31540016A301B1000C2031000C2821061049012201E76 -S31540016A40953620049813201E9A136108D625202CCA -S31540016A50D8252010D025201CD2252020DE2520280F -S31540016A60D6252014940ABFF0FA250000DA2520180D -S31540016A70C2252024C225200CA2102100D4A44320E3 -S31540016A80C2800320D88443209A102001A0102200FE -S31540016A90DAA40320D884032082102000C2A4032054 -S31540016AA0DAA0032081D820007FFFC55901000000EC -S31540016AB0C2800320E2844320E0840320DA05E0100B -S31540016AC0D6066014C206E0089A0B60039B2B400B66 -S31540016AD082086001D407200CD806A000111000A03E -S31540016AE08328400A980B2001D60220049A134001BC -S31540016AF0992B000B9A13400CC203400080A0600002 -S31540016B0012800008821360041B048D15D8004000D2 -S31540016B109A13627880A3000D02800038C205E01006 -S31540016B2010800000010000008210201A331000A0DE -S31540016B30C22660149810203F2F1000A0391000A0E3 -S31540016B40351000A09A1020148210200E151000A0B6 -S31540016B50371000A0DA27200CC222A004D826A000B4 -S31540016B60D825E01010BFFF38D826E0089A10207FBC -S31540016B70331000A02F1000A0C2266014DA25E010C1 -S31540016B809810203F391000A0351000A08210201324 -S31540016B909A10200D111000A0371000A0C227200C1A -S31540016BA0DA22200410BFFFF0D826A00012BFFF2230 -S31540016BB0331000A08210201CC22660149A102015A2 -S31540016BC08210207F391000A0371000A0DA27200C50 -S31540016BD0C226E0089810200F2F1000A0351000A003 -S31540016BE01B1000A08210203FD8236004C226A000BB -S31540016BF010BFFF15D825E010DA06E008D806601464 -S31540016C00820860039A0B6002D607200C8328400C49 -S31540016C109B2B400B8210400DD80040001B100000FA -S31540016C20C203400080A3000102800004D406E008AC -S31540016C301080000001000000C205E010980AA00182 -S31540016C40D207200CD6066014820860038328400BC5 -S31540016C50992B0009940AA0039810400CDA06A0006B -S31540016C60111000A0952A80099A0B6001D6022004D2 -S31540016C708210400AC20040009B2B400B9813000D26 -S31540016C800321D9509813200482106321C2230000A6 -S31540016C90DA03000080A3400102800004C206E00836 -S31540016CA01080000001000000D407200CDA05E01036 -S31540016CB082086001D60660148328400A9A0B600355 -S31540016CC0D806A0009B2B400B151000A0D602A004AD -S31540016CD0980B20019A134001992B000B9813400CF5 -S31540016CE08210000C05048D158410A278072AF37BC7 -S31540016CF08610E301C4384000C438400003048D15B2 -S31540016D00DA0300008210627880A340010280000409 -S31540016D108213200410800000010000001B2AF37B2F -S31540016D20D80040009A13630180A3000D12BFFFFAF9 -S31540016D30C205E010D6066014D806E0088208600352 -S31540016D40D407200C8328400B980B2001DA06A000BB -S31540016D50111000A0992B000A9A0B6003D602200459 -S31540016D608210400C9B2B400B15100143A010400D87 -S31540016D70F002A0D0A2102003E0240000C0A002200F -S31540016D80921020034000097090047FFD8206200C7A -S31540016D9098102001912A0001992B00011B10012016 -S31540016DA09610000182136000DA02000180A34010B0 -S31540016DB0A204600112800087A004000C80A4600A2E -S31540016DC024BFFFEFE0240000C0A0022003100120F1 -S31540016DD0A810000BAA106000A0102000A2102003EA -S31540016DE090047FFD4000095892102003832C6002D5 -S31540016DF0912A0014DA04C00190020015820B6060EA -S31540016E009132200480A000019012201EA040001063 -S31540016E109A0B7F9F900A3F9F80A340081280006F84 -S31540016E20A204600180A4600A24BFFFEF90047FFDA5 -S31540016E3080A4200012800004C205E01010800000EA -S31540016E4001000000D6066014D806E00882086003F7 -S31540016E50D407200CDA06A000111000A08328400BAD -S31540016E60980B2001992B000AD60220049A0B600246 -S31540016E708210400C9B2B400BAA10400D9FC5400031 -S31540016E800100000082102400C0A04300C0A00220DF -S31540016E90A0102000A21020039B2C6002C204C00D4A -S31540016EA08208606080A00001A0400010A204600139 -S31540016EB080A4600A24BFFFFA9B2C600280A42008AC -S31540016EC022800004D004E00410800000010000008C -S31540016ED0808A204002800007010000007FFFFE19E2 -S31540016EE00100000080A22000128000040100000081 -S31540016EF010800000010000007FFFFE12D004A008B0 -S31540016F0080A22000128000040100000010800000D1 -S31540016F10010000007FFFFE0BD004E00880A22000A4 -S31540016F2012800004010000001080000001000000F2 -S31540016F3083480000842860808188A0000100000009 -S31540016F400100000001000000D806E008D407200C2B -S31540016F50DA05E010980B2001D6066014992B000A39 -S31540016F609A0B6003C206A0009B2B400B151000A094 -S31540016F70D602A004820860018328400B9A13400C74 -S31540016F809A1340019A136004C203400092102004F0 -S31540016F9091D02002010000007FFFC41D01000000C6 -S31540016FA0981020009A102200D8A343208210200175 -S31540016FB0C2A34320D8A3432003100000DA804380B4 -S31540016FC0DAA04380D8A0032081D820003080000574 -S31540016FD01080000001000000108000000100000048 -S31540016FE081C7E00891E820009DE3BF98400007D1A2 -S31540016FF001000000808A21000280003F010000005C -S315400170007FFFA88E01000000912A20047FFFA87708 -S31540017010900220050310014082106048DA006004A6 -S3154001702080A360002280001503100140B0100001CA -S31540017030C20600009B38601F81836000DA06200487 -S3154001704001000000010000008278400DDA062008A8 -S31540017050B006200C80A0400D028000049010200153 -S315400170607FFFA86701000000C206200480A06000DF -S3154001707012BFFFF00310014082106000DA00600485 -S3154001708080A360000280001501000000B0100001DD -S31540017090C206000081800000DA06200401000000DB -S315400170A0010000009A70400D8210000DDA0620089A -S315400170B0B006200C80A0400D0280000490102002F2 -S315400170C07FFFA84F01000000C206200480A0600097 -S315400170D012BFFFF00100000040000824010000003B -S315400170E080A2200012800004010000007FFFA84416 -S315400170F09010200381C7E00891E820009DE3BF98E6 -S315400171007FFFA84E01000000912A20047FFFA83787 -S3154001711090022004400007890100000080A221233B -S3154001712002800004010000007FFFA8359010200175 -S315400171304000078001000000808A21000280002B68 -S315400171400310014082106184DA00600880A360095F -S315400171500280001101000000B0100001C2060000CB -S31540017160DA062004D80620088258400DB006200CC5 -S3154001717080A0400C02800004901020027FFFA820CE -S3154001718001000000C206200880A0600912BFFFF47A -S3154001719001000000400007760100000080A22000A7 -S315400171A00280000F0100000040000762010000005C -S315400171B0808A22000280000D010000004000079EE7 -S315400171C00100000080A2200012800008010000009A -S315400171D07FFFA80B90102004308000047FFFA80891 -S315400171E09010200330BFFFF181C7E00891E82000ED -S315400171F09DE3BFA0941020001110005C9012222440 -S315400172001310005C921262281710005C9612E2304D -S315400172101910005C9813223493C2000081C24000C9 -S315400172201080019181C2C00081C300001080018E8F -S315400172309402A0019402A00180A2A0031280018AB7 -S3154001724001000000874400008D30E00E8C89A007C4 -S3154001725080A1A000028000C701000000AF30E00B12 -S31540017260AE0DE00780A5E000128000C201000000DB -S3154001727080A1A00212800035010000002510000007 -S31540017280E41C80002510000029100000A8152104E7 -S31540017290A6100012AA100012AC100014A1802046BC -S315400172A0A4100000AA10000001000000A180204E99 -S315400172B0A810210001000000A1800000010000008B -S315400172C001000000E83CA03082A4801312800166D0 -S315400172D082A5001612800164010000000100000031 -S315400172E001000000874400008D30E00B8C89A00727 -S315400172F08CA1A0051280015CA18000000100000064 -S315400173000100000001000000E81CA03082A5001623 -S315400173101280015582A54012A4100000128001522C -S315400173200100000001000000874400008D30E00BA1 -S315400173308C89A0078CA1A0031280014B010000009B -S315400173401080008C0100000080A1A0011280002362 -S3154001735025100000E41C80002510000029100000C3 -S31540017360A8152104A6100012AA100012AC10001490 -S31540017370A1802046A4100000AA10000001000000D0 -S31540017380A180204EA810210001000000A18000002C -S31540017390010000000100000001000000E83C8000FF -S315400173A082A480131280013082A500161280012E1C -S315400173B00100000001000000874400008D30E00B11 -S315400173C08C89A0078CA1A002128001270100000030 -S315400173D0108000680100000080A1A00312800065B2 -S315400173E0A6100000A210200EA1844000A6100000A5 -S315400173F0A1800000A814E000AB4400000100000099 -S31540017400AC14E00001000000AF44000080A520005C -S3154001741012800115AA8D6E0080A5400012800112CE -S3154001742080A5A00012800110AF35E00BAE0DE0073C -S3154001743080A5E0011280010C01000000A0100000AF -S31540017440A1844000A6100000A1800000E8180000B9 -S31540017450AC100000AE100000EC04C000EE04E004E5 -S3154001746080A500161280010080A54017128000FEFB -S3154001747001000000A5440000A534A00BA40CA00700 -S3154001748080A4A001128000F801000000A0100000B5 -S31540017490A1844000A6100000A1800000A210200A8D -S315400174A0A1844000A4100000A1800000E81800005B -S315400174B0AC100000AE100000EC04C012EE04E00473 -S315400174C080A50016128000E880A54017128000E6CC -S315400174D001000000A5440000A534A00BA40CA007A0 -S315400174E080A4A002068000E00100000021100140B6 -S315400174F0A0142200EC1C0000A0042008E81C000097 -S31540017500A1844000A6100000A1800000A210200E18 -S31540017510A1844000A4100010AC100000AE10000081 -S31540017520A18000000100000001000000EC3C801336 -S31540017530AC100000AE100000E81CC01280A5001679 -S31540017540128000C980A54017128000C701000000C3 -S31540017550A5440000A534A00BA40CA00780A4A00458 -S31540017560128000C1010000001080000201000000ED -S315400175708B4440008A09601F80A160010280000A95 -S315400175808C1000059DE3BFA08AA1600116BFFFFED6 -S315400175900100000081E800008CA1A00116BFFFFE9A -S315400175A0010000000100000001000000A023A080AE -S315400175B0A02C20078E100010A3480000E2240000F2 -S315400175C0C2242004C43C2008C83C2010CC3C2018CE -S315400175D0F03C2020F43C2028F83C2030FC3C20386C -S315400175E0D03C2040D43C2048D83C2050DC3C20585C -S315400175F0A5500000E424206080102008821020015C -S315400176008410200286102003881020048A10200549 -S315400176108C10200681900000A42C601F818C800074 -S31540017620010000000100000001000000030040408D -S3154001763082106101841000008610000089444000D8 -S315400176408809201F86100004A01000028400400211 -S31540017650A210000284004002A410000284004002ED -S31540017660A610000284004002A810000284004002D5 -S31540017670AA10000284004002AC10000284004002BD -S31540017680AE100002840040029010000284004002C5 -S3154001769092100002840040029410000284004002CD -S315400176A096100002840040029810000284004002B5 -S315400176B09A100002840040029C100002840040029D -S315400176C09E1000028400400281E0000086A0E00195 -S315400176D016BFFFDE01000000030040408210610139 -S315400176E0841000008610000480A400021280003F2E -S315400176F08400400280A440021280003C8400400283 -S3154001770080A48002128000398400400280A4C00215 -S31540017710128000368400400280A5000212800033A8 -S315400177208400400280A5400212800030840040025D -S3154001773080A580021280002D8400400280A5C002EF -S315400177401280002A8400400280A200021280002793 -S315400177508400400280A2400212800024840040023C -S3154001776080A28002128000218400400280A2C002D1 -S315400177701280001E8400400280A300021280001B7A -S315400177808400400280A34002128000188400400217 -S3154001779080A38002128000158400400280A3C002AB -S315400177A0128000128400400281E0000086A0E001C0 -S315400177B016BFFFCE0100000080A020001280000B02 -S315400177C080A0FFFF1280000980A16005128000079A -S315400177D080A1A0061280000501000000A01000074C -S315400177E010800006C0242020A01000079010200120 -S315400177F010800002D024202082100007C4004000DF -S3154001780081888000010000000100000001000000A5 -S31540017810C4186008C8186010CC186018F0186020A9 -S31540017820F4186028F8186030FC186038D0186040A9 -S31540017830D4186048D8186050DC186058E40060607D -S31540017840C200600481948000010000000100000034 -S3154001785001000000A0100007F004202081C7E008C5 -S3154001786081E8000010BFFFFCB010000001000000DD -S3154001787081D8200081C3E008010000001B100144AB -S31540017880D8036150821020018328400C1B1001440B -S3154001789082007FFFD803615482084008932A400C36 -S315400178A0900040098213C0007FFFE77F9E10400091 -S315400178B0010000001B100144D803615082102001D1 -S315400178C08328400C1B10014482007FFFD80361547A -S315400178D0932A400C82084008900040099210000A01 -S315400178E08213C0007FFFE7729E1040000100000036 -S315400178F01B100144D8036150821020018328400C9B -S315400179001B10014482007FFFD8036154932A400C27 -S3154001791082084008900040099210000A8213C00074 -S315400179207FFFE7679E104000010000001B100144E5 -S31540017930D8036150821020018328400C1B1001445A -S3154001794082007FFFD803615482084008932A400C85 -S31540017950900040098213C0007FFFE7579E10400008 -S31540017960010000001B100144D803615C8210200114 -S315400179708328400C1B10014482007FFFD803616CB1 -S31540017980932A400C82084008900040099210000A50 -S315400179908213C0007FFFE74E9E10400001000000A9 -S315400179A01B100144D803615C821020018328400CDE -S315400179B01B10014482007FFFD803616C932A400C5F -S315400179C082084008900040099210000A8213C000C4 -S315400179D07FFFE7439E104000010000009DE3BF5832 -S315400179E02D100144A2102000C205A16080A44001CF -S315400179F01680001BA01020002B10014429100144C1 -S31540017A0027100144A4102001D005615C912C800807 -S31540017A10C205216C90023FFF832C0001900A001899 -S31540017A207FFFE72990020001C204E14C901E000845 -S31540017A30900A000180A00008A2647FFFA0042001F3 -S31540017A40C205A16080A4000126BFFFF1D005615C9B -S31540017A5080A4600012800003B0102000B010200105 -S31540017A6081C7E00881E800001B100144D803615C2E -S31540017A70821020018328400C1B10014482007FFFA5 -S31540017A80D803616C82084008932A400C9000400953 -S31540017A908213C0007FFFE70C9E10400001000000EA -S31540017AA01B100144D803615C821020018328400CDD -S31540017AB01B10014482007FFFD803616C8208400895 -S31540017AC0932A400C900040098213C0007FFFE702D1 -S31540017AD09E10400001000000952AA00D03280000D9 -S31540017AE094028009D02040009422B000D420600442 -S31540017AF081C3E00801000000033FFFBF821062F826 -S31540017B009DE38001193FFFBF94132368B407BFF873 -S31540017B10031000459606800A82106020C222E00CBE -S31540017B2003100044821063E0C222E0041B100044AB -S31540017B309A1363C0033FFFBFDA26800A901323805E -S31540017B40331000458210635C94068008981323C065 -S31540017B50921660008200401ED222E008D4204000E6 -S31540017B60B006800C7FFFA5A1901020067FFFE6CAD4 -S31540017B7090102000920A3FF07FFFE6C99010200046 -S31540017B80210000307FFFE6C490102000808A00105B -S31540017B9012BFFFFD010000007FFFFF3621000030CC -S31540017BA07FFFE6BD90102000808A001012BFFFFDC6 -S31540017BB0010000007FFFE6B890102000030020403E -S31540017BC08210600F921200017FFFE6B590102000EF -S31540017BD07FFFE6B19010200821100144D0242148AE -S31540017BE07FFFE6AD9010200CA73A2010993A201459 -S31540017BF0A60CE007980B200FDA042148A8230013AE -S31540017C00A80520089F3B6014933B60109B3B60187E -S31540017C1094050013A2102001AC03200A9E0BE00F2D -S31540017C2096102400AE0B60039402A00221200000AE -S31540017C30992AC00C1B1001448203E00A952C400A84 -S31540017C409424000A832C4001D8236168A0240001B2 -S31540017C501B10014403100144EC23615C972AC00FB9 -S31540017C60AA03E00A1B100144D620614403100144D3 -S31540017C70EA236154EA2061501B1001440310014478 -S31540017C80D423614C920A6007A53A2018D020615846 -S31540017C90153FFFBF932C4009A40CA00303100144D8 -S31540017CA09412A358932C4009A404A001391001440D -S31540017CB037100144EC20616C9B2C40149402801EC9 -S31540017CC0E0272164E426E160AA027FFFDA228000F0 -S31540017CD0AC85E0010280000CBB2C4013033FFFBF83 -S31540017CE082106368A0068001A4100016D00400002B -S31540017CF09FC20000A0042004A484BFFF32BFFFFD41 -S31540017D00D00400007FFFE66490102000920A3FFCF9 -S31540017D107FFFE66390102000A410200080A4801607 -S31540017D2016800022A2102000033FFFBFAE106368F9 -S31540017D30A610001AA010200080A400163680001854 -S31540017D40A404A00110800005A810001780A4001605 -S31540017D5036800013A404A001921000107FFFFEC8D4 -S31540017D60D004C014820A001580A0401512BFFFF846 -S31540017D70A0042001C204C01482184008DA07216415 -S31540017D808208400D80A00001A2647FFF80A40016F6 -S31540017D9006BFFFF392100010A404A00180A4801630 -S31540017DA006BFFFE5A604E0047FFFE63B90102000F6 -S31540017DB0A6100008901020007FFFE6399214E003D8 -S31540017DC080A46000028001B101000000833CE00C08 -S31540017DD080886003128000A5030048D1833CE013EC -S31540017DE080886003128001AD010000007FFFFEA183 -S31540017DF0210000307FFFE62890102000808A001085 -S31540017E0012BFFFFDA6100008A4102000C206E160C3 -S31540017E1080A480011680000D832CA00292100012CE -S31540017E20901000187FFFFED094102000A404A001FA -S31540017E30C206E16080A4800106BFFFFA92100012DB -S31540017E40A4102000832CA002A404A001C026000196 -S31540017E5080A4A01E04BFFFFD832CA0028210200532 -S31540017E60C22600009A102001DA2620048210200240 -S31540017E70C22620089A102003DA26200C7FFFFED85E -S31540017E809010001880A22000028001D3010000005A -S31540017E90C206000080A060050280000401000000C7 -S31540017EA07FFFA4D7901020067FFFFECD90100018CB -S31540017EB080A22000128001C401000000A41020000D -S31540017EC0C206E16080A480011680000F9210001264 -S31540017ED0A0062004941020007FFFFEB290100018E7 -S31540017EE092100012901000107FFFFEAE94102000F9 -S31540017EF0A404A001C206E16080A4800106BFFFF68A -S31540017F00921000127FFFE5FA901000187FFFE5F806 -S31540017F10900620207FFFE5F6900620407FFFE5F49E -S31540017F2090062060A4102000C206E16080A4800172 -S31540017F3006800196A21020007FFFA4B19010200870 -S31540017F40173FFFBF8212E3C0940680018212E35CB1 -S31540017F508200401ED81A8000C2004000D838400036 -S31540017F609612E380C206800B80A06005128000064F -S31540017F708206800BDA00600480A36001028000055E -S31540017F80A41020007FFFA49E90102009A410200079 -S31540017F90C206E16080A4800116800011A210200073 -S31540017FA0A0062004921000127FFFFEBE9010001022 -S31540017FB0901A200180A00008A2647FFFA404A001BA -S31540017FC0C206E16080A4800106BFFFF8921000124C -S31540017FD080A4600102800005833CE0137FFFA488F2 -S31540017FE09010200A833CE013808860031280018050 -S31540017FF082102005C22600009A102001DA262004AC -S3154001800082102002C22620089A102003DA26200C6C -S315400180101B3FFFBF9A1363589A03401ED00340008B -S315400180204000048D9210001D032EEEEEA12A20027F -S31540018030A21063BBE22600107FFFFE699010001874 -S3154001804080A220001280016701000000C2060010D4 -S3154001805080A0401102800005030048D17FFFA4683B -S3154001806090102012030048D1821061671B226AF3E7 -S31540018070C22620209A1361EFDA262024C20E202040 -S3154001808080A0600102800004010000007FFFA45C23 -S315400180909010201AC20E202180A060230280000485 -S315400180A0010000007FFFA4569010201BC20E202223 -S315400180B080A0604502800004010000007FFFA450BB -S315400180C09010201CC20E202380A06067028000040D -S315400180D0010000007FFFA44A9010201DC20E2024FB -S315400180E080A0608902800004010000007FFFA44453 -S315400180F09010201EC20E202580A060AB0280000495 -S31540018100010000007FFFA43E9010201FC20E2026D2 -S3154001811080A060CD02800004010000007FFFA438EA -S3154001812090102020C20E202780A060EF028000041C -S31540018130010000007FFFA43290102021C2162020AA -S31540018140832860108330601080A061230280000480 -S31540018150010000007FFFA42A90102022DA16202277 -S315400181609B2B6010030000119B33601082106167E6 -S3154001817080A3400102800004010000007FFFA4208B -S3154001818090102023DA1620249B2B60100300002236 -S315400181909B336010821061AB80A3400102800004D2 -S315400181A0010000007FFFA41690102024DA16202635 -S315400181B09B2B6010030000339B336010821061EFEC -S315400181C080A3400102800005821020307FFFA40C6D -S315400181D09010202582102030C22E2020030C08D179 -S315400181E0DA0620208210616780A3400102800005E3 -S315400181F0821020317FFFA402901020278210203167 -S31540018200C22E2021030C0C51DA0620208210616710 -S3154001821080A3400102800005821020327FFFA3F82F -S315400182209010202882102032C22E2022210C0C4C84 -S31540018230DA0620208214226780A3400102800005CD -S31540018240821020337FFFA3EE901020298210203325 -S31540018250C22E20239A142233C206202080A0400D2C -S3154001826002800005821020347FFFA3E59010202A6A -S3154001827082102034C22E2024030D2AF3DA0620244C -S31540018280821061EF80A340010280000582102035F3 -S315400182907FFFA3DB9010202B82102035C22E202594 -S315400182A0030D0D73DA062024821061EF80A340018D -S315400182B002800005821020367FFFA3D19010202C2A -S315400182C082102036C22E2026210D0D4DDA0620249D -S315400182D0821422EF80A340010280000582102037DC -S315400182E07FFFA3C79010202D82102037C22E202752 -S315400182F09A142237C206202480A0400D0280000530 -S31540018300210000107FFFA3BE9010202E21000010F7 -S3154001831082142041C23620200310104CDA06202058 -S315400183208210623380A340010280000582142243F9 -S315400183307FFFA3B39010202F82142243C2362022FE -S3154001834003101050DA0620208210624380A34001B8 -S3154001835002800005210000117FFFA3A99010203063 -S315400183602100001182142045C23620240311114DEB -S31540018370DA0620248210623780A34001028000057C -S31540018380821422477FFFA39E9010203182142247F8 -S31540018390C236202603111151DA0620248210624783 -S315400183A080A3400102800004010000007FFFA394E6 -S315400183B0901020327FFFFD2FA4102000C206E160FD -S315400183C080A48001168000151B100144D403616C02 -S315400183D096100001A010200080A4001D3680000CDC -S315400183E0A404A001832C800A9B286002992CA0102A -S315400183F082130010C226000DA004200180A4001D96 -S3154001840006BFFFFC9A036004A404A00180A4800B6C -S3154001841026BFFFF2A01020007FFFE49F90102000AE -S3154001842003000010808A000112BFFFFC010000001A -S31540018430A4102000C206E16080A4800116800114C8 -S31540018440921000127FFFFD8990100018151001440B -S31540018450C202A14C900A0001820E000180A20001D5 -S31540018460A404A00112BFFFF4901020337FFFA36440 -S3154001847001000000C206E16080A4800106BFFFF250 -S3154001848092100012308001027FFFA35D90102001FF -S3154001849010BFFE50833CE00C7FFFE47F901020002C -S315400184A0133FFFF09212603F920A0009A61000089E -S315400184B07FFFE47B901020007FFFE3D2A4102000D1 -S315400184C01303C0009214C0097FFFE4759010200089 -S315400184D080A4801616800009921000129016600042 -S315400184E07FFFFD0494102000A404A00180A48016FF -S315400184F006BFFFFB921000127FFFE3C2010000009E -S315400185007FFFE46590102000913A200A900A2003EB -S3154001851080A2200102800004010000007FFFA338F1 -S315400185209010200201000000921020009016600079 -S315400185307FFFFCE194102000010000007FFFE4561C -S31540018540901020001303C000922A00097FFFE454D3 -S3154001855090102000010000007FFFE3AA0100000007 -S315400185607FFFE44D90102000913A200C900A2003A1 -S3154001857080A2200102BFFE1E010000007FFFA32052 -S315400185809010200330BFFE1A921000127FFFFD4566 -S3154001859090100018901A200580A00008A2647FFF61 -S315400185A0A404A001C206E16080A4800106BFFFF8D1 -S315400185B09210001280A4600012BFFE63173FFFBFF6 -S315400185C030BFFE5E7FFFA30E9010200710BFFE3D19 -S315400185D0A41020007FFFA30A9010200530BFFE2D76 -S315400185E07FFFA3079010201130BFFE997FFFE42A39 -S315400185F090102000033FFFF08210603F920A000175 -S315400186007FFFE42790102000033FFFBFA010638047 -S3154001861092102000941020007FFFFCE2900680100B -S315400186207FFFE41D901020000303C0009212000159 -S315400186307FFFE41B9010200010800006A41020004C -S31540018640900680107FFFFCD794102005A404A0015A -S31540018650C206E16080A4800106BFFFFA92100012B3 -S31540018660033FFFBFA01063809A102001DA2E8010CD -S3154001867003004000D80680108210600580A30001E7 -S3154001868002800004010000007FFFA2DD9010200B54 -S315400186907FFFE40190102000913A2006900A2003C2 -S315400186A080A2200102800004010000007FFFA2D4C5 -S315400186B09010200C7FFFE3F8901020001303C000B8 -S315400186C0922A00097FFFE3F69010200092102000C5 -S315400186D0900680107FFFFCB3941020007FFFE3EEED -S315400186E0901020002103C000921200107FFFE3EC9E -S315400186F0901020007FFFE3E890102000808A001050 -S3154001870002BFFFFDA6100008A4102000C206E160CA -S3154001871080A480011680000E033FFFBF9A102001FE -S31540018720A2106380A12B401D921000129006801169 -S315400187307FFFFC8D94043FFFA404A001C206E160C3 -S3154001874080A4800106BFFFFA921000121303C000F5 -S31540018750922CC0097FFFE3D2901020002103C00074 -S315400187607FFFE3CD90102000808A001012BFFFFDED -S315400187701B004000213FFFBF82142380D8068001A1 -S315400187809A13600580A3000D0280000401000000D9 -S315400187907FFFA29B9010200D7FFFE3BF901020002A -S315400187A0913A2008900A200380A2200122800005E8 -S315400187B0A01423787FFFA2929010200FA014237853 -S315400187C094068010981020119A102055D83A8000AE -S315400187D07FFFE3B1901020000303C0009212000115 -S315400187E0920A7F3F7FFFE3AE90102000A0068010E3 -S315400187F07FFFE3CD9010001010800006A4102000EA -S31540018800900420047FFFFC6794102055A404A00126 -S31540018810C206E16080A4800106BFFFFA92100012F1 -S31540018820113FFFBF901223787FFFE3BF9006800878 -S3154001883080A220111280000480A2605502800004AB -S31540018840010000007FFFA26E901020107FFFE3928F -S3154001885090102000833A20068208600380A06001C0 -S3154001886002800004A61000087FFFA2659010201028 -S31540018870133C3FF09212603F920CC0097FFFE388A0 -S315400188809010200010BFFDDC821020057FFFE3829F -S31540018890901020009212200F7FFFE381901020005C -S315400188A081C7E00891E820009DE3BF987FFFFC93D4 -S315400188B001000000B0100008130020409212600F22 -S315400188C07FFFE377901020000100000081C7E00898 -S315400188D081E80000033FFFBF821063589DE380019A -S315400188E07FFFFBE401000000400002380100000068 -S315400188F07FFFE36990102008A21000087FFFE3661E -S315400189009010200C7FFFA24DA0100008912A200450 -S315400189107FFFA2369002200C973C6014833C60187E -S31540018920953C2014993C201882086003960AE00F72 -S31540018930820060019602E00AA33C6010A13C20102F -S31540018940980B2003940AA00FA728400B98032001F7 -S31540018950A20C6007A00C20079402A00A9A102001DD -S31540018960A2046002A0042002B12B000A03200000E9 -S31540018970AB2B4011A52B40109620401898057FFF40 -S31540018980822040139A04BFFFAE130001A213400B8D -S31540018990210000307FFFE34090102000808A0010C4 -S315400189A012BFFFFD033FFFBF9A07BFF8821063C0A6 -S315400189B0A00340012D155555901000189210001036 -S315400189C07FFFE2C89415A15580A220001280004B7A -S315400189D0292AAAAA92100010901000187FFFE2D50A -S315400189E0941522AA80A220001280004E01000000A8 -S315400189F07FFFA21201000000912A20047FFFA1FB04 -S31540018A009002200A400001EE01000000921522006A -S31540018A10920C400990100018941000119610001203 -S31540018A207FFFE2ED981522AA80A220001280005114 -S31540018A30010000009215A10090100018920C400907 -S31540018A4094100011961000127FFFE2E39815A1558C -S31540018A5080A2200012800044010000007FFFA1F7A0 -S31540018A6001000000912A20047FFFA1E09002200B23 -S31540018A70901000137FFFE2BF9215A15580A22000FE -S31540018A801280003501000000901000137FFFE2B90B -S31540018A90921522AA80A220001280002C010000001B -S31540018AA07FFFA1E601000000912A20047FFFA1CFAC -S31540018AB0900220099010001392100017941000158F -S31540018AC07FFFE2B8961522AA80A220001280001BE1 -S31540018AD00100000090100013921000179410001529 -S31540018AE07FFFE2B09615A15580A2200002800025A5 -S31540018AF0010000003080000E7FFFA1C190102001CF -S31540018B00292AAAAA92100010901000187FFFE28924 -S31540018B10941522AA80A2200002BFFFB601000000E0 -S31540018B207FFFA1B79010200230BFFFB27FFFA1B4F3 -S31540018B3090102008308000137FFFA1B190102007CC -S31540018B4010BFFFE6901000137FFFA1AD90102006E5 -S31540018B5030BFFFD47FFFA1AA9010200510BFFFCCE4 -S31540018B60901000137FFFA1A69010200430BFFFBCD8 -S31540018B707FFFA1A39010200310BFFFB09215A10063 -S31540018B807FFFFB3CB0102000400001900100000037 -S31540018B900100000081C7E00881E800009DE3BF981D -S31540018BA07FFFA18D1100412CDA062004D80620044E -S31540018BB09A0B6003993B200282102007C2262008A7 -S31540018BC0BA036001B20B27FF010000009010200A92 -S31540018BD0C02600007FFFA1850100000017000200AA -S31540018BE082103FFFC226000B032AAAAA1B15555520 -S31540018BF0D806000BAC102000821062AA9A13615568 -S31540018C00AA0B000180A5801D16800038A80B000D17 -S31540018C109612E020A72E600880A4E0000480000C94 -S31540018C20A2102000832DA0028200401819000200E4 -S31540018C309A10000BE820400CEA20400DA204601077 -S31540018C4080A4C01114BFFFFC82006040AC05A001A6 -S31540018C5080A5801D06BFFFF280A4E000AC10200075 -S31540018C6080A5801D1680002103000200B8106020F7 -S31540018C70A72E6008AE10001880A4E00004800017FB -S31540018C80A210200003000200A4060001A005C01C9A -S31540018C90C2048000A2046010A404A04080A0401435 -S31540018CA002800004901020017FFFA15501000000C1 -S31540018CB0C2040000A004204080A0401502800004A8 -S31540018CC0901020017FFFA14E0100000080A4C01139 -S31540018CD014BFFFF001000000AC05A00180A5801D76 -S31540018CE006BFFFE6AE05E0047FFFA1409010200CD1 -S31540018CF0AC10200080A5801D1680008803155555AF -S31540018D009E1061551B000800032AAAAA9A13600403 -S31540018D10901062AAA72E600880A4E0000480000E8D -S31540018D20A2102000832DA0138200401813000800D2 -S31540018D309410000F9610000D98100008D420400999 -S31540018D40D820400BA204600280A4C01114BFFFFCCE -S31540018D5082006008AC05A00180A5801D06BFFFF01A -S31540018D6080A4E000AC10200080A5801D1680006B19 -S31540018D7003155555B81061551B000800032AAAAAC8 -S31540018D80B6136004B41062AAA72E600880A4E0005E -S31540018D9004800019A2102000832DA013A0004018C2 -S31540018DA02F000800AA10001CA810001BA410001ACE -S31540018DB0C2040017A204600280A04015028000048C -S31540018DC0901020037FFFA10E01000000C204001491 -S31540018DD0A004200880A040120280000490102003C5 -S31540018DE07FFFA1070100000080A4C01114BFFFF15D -S31540018DF001000000AC05A00180A5801D06BFFFE56E -S31540018E0080A4E000AC10200080A5801D16800043A0 -S31540018E10030008009E1060041B155555032AAAAA93 -S31540018E209A136155901062AAA72E600880A4E000AB -S31540018E300480000EA2102000832DA013820040184A -S31540018E40130008009410000F9610000D98100008AA -S31540018E50D620400AD8204009A204600280A4C0114D -S31540018E6014BFFFFC82006008AC05A00180A5801DEF -S31540018E7006BFFFF080A4E000AC10200080A5801D55 -S31540018E801680002603155555B81061551B2AAAAA06 -S31540018E9003000800A72E6008B61362AAB410600446 -S31540018EA080A4E00004800019A2102000832DA013A5 -S31540018EB0A00040182F000800AA10001CA810001B93 -S31540018EC0A410001AC2040012A204600280A0401538 -S31540018ED002800004901020047FFFA0C90100000019 -S31540018EE0C2040017A004200880A040140280000498 -S31540018EF0901020047FFFA0C20100000080A4C01191 -S31540018F0014BFFFF101000000AC05A00180A5801D42 -S31540018F1006BFFFE580A4E00082102005C226200896 -S31540018F201B200000DA26000081C7E00881E8000026 -S31540018F3081C3E00891444000808000001510014043 -S31540018F409412A18090102000921022468180000048 -S31540018F50010000000100000001000000D002800075 -S31540018F609122400881C3E008010000008180000091 -S31540018F70901020018090200180D020011280002C89 -S31540018F800100000080D23FFF168000290100000049 -S31540018F9080DA3FFF9340000080A27FFF12800024C9 -S31540018FA00100000080D23FFF9348000093326014D5 -S31540018FB0920A600F80A260081280001D0100000025 -S31540018FC08180000090102001945220049452A00404 -S31540018FD09452A00496A2A040128000150100000000 -S31540018FE0818000009010200280A000003280001095 -S31540018FF09052000880A220021280000D010000005C -S31540019000818000009010200280A000000100000035 -S31540019010328000079052000880A22002128000048C -S315400190200100000081C3E0089010200181C3E008DF -S31540019030901000001315555592126155A5824000B6 -S31540019040010000000100000001000000954480007D -S3154001905080A2400A1280004301000000923A40007B -S31540019060A58240000100000001000000010000004F -S315400190709544800080A2400A1280003A0100000017 -S315400190801100003F901223FFA5800000818000005F -S3154001909001000000010000000100000093F23FFFC3 -S315400190A09A10000993F23FFF93F23FFF93F23FFF7D -S315400190B093F23FFF93F23FFF93F23FFF93F23FFF5D -S315400190C09940000097448000153FFC009412A00887 -S315400190D080A2400A1280002380A2400B1280002108 -S315400190E080A320071280001F113FFF8090122001AC -S315400190F080A340081280001B1100003F901223FFFD -S31540019100A5800000818000000100000001000000F0 -S315400191100100000093FA3FFF93FA3FFF93FA3FFFA6 -S3154001912093FA3FFF93FA3FFF93FA3FFF93FA3FFFCC -S3154001913093FA3FFF994000009744800080A260085F -S315400191401280000880A260081280000680A32000D9 -S31540019150128000040100000081C3E0089010200144 -S3154001916081C3E00890100000818000009010200229 -S3154001917080A00000328000109072000880A2200278 -S315400191801280000D01000000818000009010200235 -S3154001919080A00000010000003280000790720008A4 -S315400191A080A22002128000040100000081C3E00871 -S315400191B09010200181C3E00890100000C0A000403B -S315400191C081C3E00801000000110020409012200FE9 -S315400191D0D0A0004081C3E008010000009DE3BF9894 -S315400191E07FFFE12D90102008A21000087FFFE12AA1 -S315400191F09010200C833C60149B3A2014A13A20180D -S31540019200A33C6018A20C6003A00C20038208600FE7 -S315400192109A0B600F8200600A9A03600AA2046001F9 -S31540019220A0042001A32C40017FFFFFE5A12C000DE6 -S315400192307FFFE090901000117FFFE09C901000109E -S315400192407FFFF98C010000007FFFFFE081E800000D -S315400192500100000098120009818200009AAB2FFF9D -S315400192600280002598880000992300099923000966 -S315400192709923000999230009992300099923000993 -S315400192809923000999230009992300099923000983 -S315400192909923000999230009992300099923000973 -S315400192A09923000999230009992300099923000963 -S315400192B09923000999230009992300099923000953 -S315400192C09923000999230009992300099923000943 -S315400192D09923000999230009992300099923000933 -S315400192E099230009992300099923000081C3E008C5 -S315400192F09140000099230009992300099923000907 -S315400193009923000999230009992300099923000902 -S3154001931099230009992300099923000999230009F2 -S3154001932099230009992300009B400000992B200CAA -S315400193309B33601481C3E0089013400C1080000BEE -S31540019340861020008092400816800008861000088A -S31540019350809240001680000480920000168000032F -S3154001936092200009902000089A9240001280000540 -S315400193709610000891D0200281C3E00890100000A9 -S3154001938080A2C00D0A8000959410000003020000DF -S3154001939080A2C0010A8000289810000080A34001E5 -S315400193A01A80000D841020019B2B600410BFFFFC26 -S315400193B0980320019A83400D1A8000078400A0017A -S315400193C0832860049B3360019A03400110800007A3 -S315400193D08420A00180A3400B0ABFFFF701000000D3 -S315400193E0028000020100000084A0A00106800076F0 -S315400193F0010000009622C00D941020011080000A41 -S3154001940001000000952AA001068000059B336001FA -S315400194109622C00D108000049402A0019602C00D50 -S315400194209422A00184A0A00116BFFFF78092C0003C -S31540019430308000659B2B600480A3400B08BFFFFE74 -S315400194409883200102800065982320018092C00004 -S31540019450952AA0040680002F9B33600196A2C00D79 -S31540019460068000179B33600196A2C00D0680000B53 -S315400194709B33600196A2C00D068000059B336001B7 -S3154001948096A2C00D108000509402A00F9682C00D86 -S315400194901080004D9402A00D9682C00D06800005F5 -S315400194A09B33600196A2C00D108000479402A00B29 -S315400194B09682C00D108000449402A0099682C00D88 -S315400194C00680000B9B33600196A2C00D0680000505 -S315400194D09B33600196A2C00D1080003B9402A00709 -S315400194E09682C00D108000389402A0059682C00D68 -S315400194F0068000059B33600196A2C00D10800032A4 -S315400195009402A0039682C00D1080002F9402A00100 -S315400195109682C00D068000179B33600196A2C00D4E -S315400195200680000B9B33600196A2C00D06800005A4 -S315400195309B33600196A2C00D108000239402BFFFA9 -S315400195409682C00D108000209402BFFD9682C00D08 -S31540019550068000059B33600196A2C00D1080001A5B -S315400195609402BFFB9682C00D108000179402BFF98A -S315400195709682C00D0680000B9B33600196A2C00DFA -S31540019580068000059B33600196A2C00D1080000E37 -S315400195909402BFF79682C00D1080000B9402BFF56E -S315400195A09682C00D068000059B33600196A2C00DD0 -S315400195B0108000059402BFF39682C00D1080000210 -S315400195C09402BFF198A3200116BFFFA28092C0006A -S315400195D0268000029602C0098090C00026800002C3 -S315400195E09620000B81C3E0089010000B92100008F2 -S315400195F09010200094102000961020008213C00085 -S31540019600400000039E104000010000009DE3BF980A -S3154001961023100143400005F6901460F40310006DD9 -S31540019620E0006178D004214880A220002280002DEC -S315400196309004214CD602200480A2E01F1480001D14 -S315400196400100000080A620001280000B94022088B1 -S31540019650832AE0029A02E00182004008DA222004CD -S31540019660F2206008400005FA901460F41080002250 -S31540019670B0102000821020019328400B992AE00265 -S31540019680DA02A1009A1340098203000AF62060809B -S31540019690F422800C80A6200212BFFFEEDA22A1003E -S315400196A0C202A1048210400910BFFFEAC222A104EE -S315400196B0400000139010219080A220000280000BF0 -S315400196C096102000C2042148C2220000D02421481D -S315400196D0C0222004C022218810BFFFDBC022218C7A -S315400196E010BFFFD5D0242148400005D9901460F41D -S315400196F0B0103FFF81C7E00881E8000092100008E2 -S3154001970003100141D00063708213C0004000000A7B -S315400197109E10400001000000921000080310014114 -S31540019720D00063708213C000400002199E104000B1 -S31540019730010000009DE3BF988206600B80A0601681 -S31540019740A610001818800003A0087FF8A01020106A -S3154001975080A400199A4020008334201F8090400D38 -S31540019760128001B0B0102000400001B090100013EB -S3154001977080A421F718800017993420093910014136 -S315400197808217238098040001F003200C80A6000C68 -S315400197900280004E9F342003C206200494087FFCB9 -S315400197A09A06000AC203600482106001D006200CAA -S315400197B0D2062008D2222008C2236004D022600C9F -S315400197C0400001A09010001310800196B0062008B9 -S315400197D080A32000128000289F34200339100141C4 -S315400197E09B2BE003821723809A0340011080000AD5 -S315400197F0F003600C94087FFC9622801080A2E00F53 -S315400198001480010980A2E00036BFFFE79A06000AEC -S31540019810F006200C80A6000D32BFFFF7C2062004D9 -S315400198209E03E001251001419814A388F003200806 -S3154001983080A6000C0280005D833BE01FC206200427 -S3154001984094087FFC9622801080A2E00F1480009F2E -S3154001985080A2E000D823200C06800023D8232008CC -S315400198609A06000AC20360048210600110BFFFD548 -S31540019870C22360048334200680A3200408BFFFD896 -S315400198809E00603880A3201408BFFFD59E03205B4D -S315400198908334200C80A3205408BFFFD19E00606E04 -S315400198A08334200F80A3215408BFFFCD9E006077EB -S315400198B08334201280A3255408BFFFC99E00607CD3 -S315400198C010BFFFC79E10207E98062008F003200C8B -S315400198D080A6000C32BFFFB2C206200410BFFFD2E1 -S315400198E09E03E00280A2A1FF088000BE9B32A00336 -S315400198F09732A00980A2E0002280001796172380A4 -S315400199008332A00680A2E004088000129A006038E3 -S3154001991080A2E0140880000F9A02E05B8332A00C1B -S3154001992080A2E0540880000B9A00606E8332A00F3B -S3154001993080A2E154088000079A0060778332A01222 -S3154001994080A2E554088000039A00607C9A10207E2C -S3154001995096172380832B60039000400BD202200888 -S3154001996080A240082280010F99336002C20260043E -S3154001997082087FFC80A0400A28800007D002600C44 -S31540019980D202600880A2400832BFFFFAC2026004D8 -S31540019990D002600CD026200CD2262008F022600C82 -S315400199A0F0222008833BE01F8330601E8203C00102 -S315400199B03910014183386002981723809A1020019B -S315400199C0932B4001D803200480A2400C1880004B01 -S315400199D0AE172380808B00091280000D03100141D0 -S315400199E0820BFFFC92024009808B0009128000071E -S315400199F09E0060048210000C920240098088400952 -S31540019A0002BFFFFE9E03E00403100141A2106380E2 -S31540019A10A8100011832BE003980040119010000F0D -S31540019A209A10000C1080000AF003600C94087FFC29 -S31540019A309622801080A2E00F1480007D80A2E00073 -S31540019A403680008B9A06000AF006200C80A6000D8F -S31540019A5032BFFFF7C20620049E03E001808BE0037C -S31540019A6012BFFFF19A036008808A200398033FF8EA -S31540019A70028000D490023FFFC203200880A0400C20 -S31540019A8002BFFFFB808A200392024009C2052004DF -S31540019A9080A24001188000183910014180A260005F -S31540019AA0128000068088400910800014AE1723807A -S31540019AB09E03E0048088400922BFFFFE92024009CE -S31540019AC010BFFFD6832BE0038214200194060010B9 -S31540019AD0C2262004D423200CD42320088212E0017C -S31540019AE0D622800BD822A008C222A00410BFFF357F -S31540019AF0D822A00CAE172380F005E008C206200448 -S31540019B00AA087FFC80A540109A4020009625401067 -S31540019B1080A2E00F14800042821020018093400110 -S31540019B200280002703100143DA0061982D1001419C -S31540019B309A04000DC205A378A810001580A07FFFE6 -S31540019B40A203601002800004A406001582046FFF80 -S31540019B50A208700090100013400000C0921000113E -S31540019B6080A23FFF02800008B210000880A20012C6 -S31540019B701A8000463B10014380A60017228000440C -S31540019B80C207616882172380D8006008DA0320047F -S31540019B909A0B7FFC80A340109840200096234010EA -S31540019BA080A2E00F04800003821020018210200071 -S31540019BB080930001128000980100000098172380CD -S31540019BC0F003200882142001C22620049A060010C0 -S31540019BD08212E001C223600410BFFEFADA23200894 -S31540019BE098033FF8832B60039000400C9B3360023F -S31540019BF0821020018328400DD2022008DA03200476 -S31540019C009A134001D026200CD2262008F022600C5F -S31540019C10DA23200410BFFF64F022200810BFFFC0E2 -S31540019C208210200010BFFEFF9E03FFFFD006200CCE -S31540019C30D20620089A142001940600108214A388A3 -S31540019C40D2222008D022600CDA262004D420600CCF -S31540019C50D42060089A12E001D622800BC222A008C5 -S31540019C60DA22A00410BFFED7C222A00CC2036004B0 -S31540019C7082106001D006200CD2062008C22360045F -S31540019C8010BFFECFD2222008C20761688200401170 -S31540019C9080A640120280004FC2276168C205A378A0 -S31540019CA080A07FFF02800045C20761689A26401264 -S31540019CB08200400DC22761689A8E600702800005C6 -S31540019CC0A410200082102008A420400DB2064012A4 -S31540019CD09A0640119A0B6FFF030000048220400D43 -S31540019CE0A4048001901000134000005C9210001201 -S31540019CF080A23FFF2280003FA4102000822200194B -S31540019D009000401282172380DA0761689A03401255 -S31540019D1080A60001F2206008DA27616802800037D8 -S31540019D208212200180A5600F38800005C22660049A -S31540019D308210200110BFFF94C2266004C20620048F -S31540019D409A057FF4A80B7FF88208600182104014BF -S31540019D50C22620049A06001482102005C2236008F8 -S31540019D6080A5200F18800027C223600419100143E3 -S31540019D70DA076168C203219480A34001388000025A -S31540019D80DA23219419100143C203219080A3400193 -S31540019D9038BFFF7DDA23219010BFFF7C82172380D5 -S31540019DA09A102001C202E0049B2B400C8210400D08 -S31540019DB010BFFEF9C222E00410BFFFC0F225A3780E -S31540019DC0C20460048228400910BFFF30C2246004E7 -S31540019DD0808E6FFF12BFFFB3C205A3789004401473 -S31540019DE0DA05E0088212200110BFFFE1C2236004B8 -S31540019DF010BFFFC39010001910BFFFDDC2266004DB -S31540019E0092062008400000629010001310BFFFD94F -S31540019E10191001434000000B90100013B0102000B0 -S31540019E2081C7E00881E800001110014290122388A1 -S31540019E308213C000400003EE9E1040000100000066 -S31540019E4011100142901223888213C0004000040081 -S31540019E509E104000010000009DE3BF98211001447F -S31540019E60C02421704000020D9010001980A23FFFCE -S31540019E7012800006C204217080A0600002800003A7 -S31540019E8001000000C226000081C7E00891E80008F1 -S31540019E909DE3BF987FFFFFE5901000180310014135 -S31540019EA0A2106380DA046008C2036004A0087FFC44 -S31540019EB0B2240019B2066FEFB20E7000B2067000FE -S31540019EC09210200080A66FFF0480000A90100018AF -S31540019ED07FFFFFE201000000C204600882004010DB -S31540019EE080A04008922000190280000590100018B9 -S31540019EF07FFFFFD4B0102000308000237FFFFFD7C3 -S31540019F00901000188224001980A23FFF8210600140 -S31540019F1092102000191001430280000B9010001886 -S31540019F20DA046008C2236004C20321688220401912 -S31540019F30901000187FFFFFC3C223216810800012D2 -S31540019F40B01020017FFFFFC50100000098100008F6 -S31540019F50D6046008A023000B9010001880A4200F9F -S31540019F6004BFFFE4B214200103100141DA00637813 -S31540019F709A23000D03100143DA20616810BFFFDD0B -S31540019F80F222E00481C7E00881E800009DE3BF9822 -S31540019F9080A660000280009DA41000187FFFFFA3E9 -S31540019FA090100018A0067FF8D6042004900AFFFE00 -S31540019FB01910014194040008A2132380DA02A00477 -S31540019FC0C204600880A0400A028000449E0B7FFCC8 -S31540019FD0808AE001DE22A0041280000CB01020002D -S31540019FE0F2067FF8A024001982046008DA042008EA -S31540019FF080A340010280007D90020019D204200C0A -S3154001A000DA226008D223600C8202800FDA006004F3 -S3154001A010808B60011280000A8212200180A62000F6 -S3154001A020028000229002000FDA02A008D202A00CA0 -S3154001A030DA226008D223600C82122001C224200455 -S3154001A04080A6200002800005D0240008B01000122E -S3154001A0507FFFFF7C81E8000080A221FF1880003647 -S3154001A060973220099B32200398132380832B600368 -S3154001A0709200400C9B336002821020018328400DE0 -S3154001A080D6026008DA0320049A134001D224200C38 -S3154001A090D6242008E022E00CDA232004E0226008DE -S3154001A0A010BFFFECB010001203100141DA02A00804 -S3154001A0B08210638880A3400132BFFFDED202A00C2A -S3154001A0C0E023600CE0236008DA242008DA24200C1F -S3154001A0D010BFFFDAB0102001808AE001128000092A -S3154001A0E09002000FF2067FF8A0240019D204200C3A -S3154001A0F0D6042008D622600890020019D222E00C2C -S3154001A10003100141DA00637C98122001E0246008C3 -S3154001A11080A2000D0ABFFFCFD824200403100143BB -S3154001A120D20061987FFFFF5B901000127FFFFF45D1 -S3154001A13081E8000080A2E000028000169B322003E5 -S3154001A1408332200680A2E004088000129A0060381B -S3154001A15080A2E0140880000F9A02E05B8332200C53 -S3154001A16080A2E0540880000B9A00606E8332200F73 -S3154001A17080A2E154088000079A006077833220125A -S3154001A18080A2E554088000039A00607C9A10207EE4 -S3154001A19094132380832B60039200400AD602600801 -S3154001A1A080A2C0090280001399336002C202E00412 -S3154001A1B082087FFC80A0400828800007D202E00C7C -S3154001A1C0D602E00880A2C00932BFFFFAC202E0040B -S3154001A1D0D202E00CD224200CD6242008E022E00C46 -S3154001A1E010BFFFB0E022600810BFFF88B010200109 -S3154001A1F09A102001C202A0049B2B400C8210400DF4 -S3154001A20010BFFFF5C222A00481C7E00881E8000023 -S3154001A2109DE3BF98D206400080A2600012800004F0 -S3154001A220901000187FFFFF5A81E800007FFFFFF979 -S3154001A230010000007FFFFF5681E800000100000099 -S3154001A2409DE3BF9803100141DA00637080A6000DBB -S3154001A2500280004101000000D206204C80A260002D -S3154001A2601280001CA0102000D206214880A2600066 -S3154001A2702280000FD2062054A006214C80A2401015 -S3154001A2802280000BD206205410800005B21000092E -S3154001A290F20640007FFFFF3E9010001880A400198F -S3154001A2A012BFFFFC92100019D206205480A2600012 -S3154001A2B01280002501000000C206203880A06000FF -S3154001A2C0028000250100000010800017C206203CD4 -S3154001A2D0832C2002F202400180A660002280000BFE -S3154001A2E0A004200192100019F20640007FFFFF28CA -S3154001A2F09010001880A6600012BFFFFC9210001952 -S3154001A300D206204CA004200180A4200E04BFFFF2F7 -S3154001A310832C20027FFFFF1E9010001810BFFFD430 -S3154001A320D20621489FC0400090100018F20622E054 -S3154001A33080A6600002800008010000007FFFFFB593 -S3154001A34081E800007FFFFF129010001810BFFFDC6C -S3154001A350C206203881C7E00881E800009DE3BF9826 -S3154001A36080A620000280001D03100141E406214819 -S3154001A37080A4A00022800013C206203CE204A0046F -S3154001A380A2847FFF0C80000A832C60028200401267 -S3154001A390A0006008C20400009FC04000A0043FFC2A -S3154001A3A0A2847FFF3CBFFFFDC2040000E40480009D -S3154001A3B080A4A00032BFFFF3E204A004C206203C01 -S3154001A3C080A0600002800007010000009FC040009D -S3154001A3D0901000183080000310BFFFE5F000637055 -S3154001A3E081C7E00881E800001080000B861020003C -S3154001A3F08092400816800008861A400880924000E4 -S3154001A4001680000480920000168000039220000905 -S3154001A410902000089A92400012800005961000088C -S3154001A42091D0200281C3E0089010000080A2C00DA7 -S3154001A4300A800095941000000302000080A2C0012A -S3154001A4400A8000289810000080A340011A80000D60 -S3154001A450841020019B2B600410BFFFFC9803200150 -S3154001A4609A83400D1A8000078400A0018328600466 -S3154001A4709B3360019A034001108000078420A001AC -S3154001A48080A3400B0ABFFFF70100000002800002D3 -S3154001A4900100000084A0A0010680007601000000B2 -S3154001A4A09622C00D941020011080000A0100000080 -S3154001A4B0952AA001068000059B3360019622C00DB6 -S3154001A4C0108000049402A0019602C00D9422A001BE -S3154001A4D084A0A00116BFFFF78092C00030800065BE -S3154001A4E09B2B600480A3400B08BFFFFE988320018D -S3154001A4F002800065982320018092C000952AA0041D -S3154001A5000680002F9B33600196A2C00D068000177E -S3154001A5109B33600196A2C00D0680000B9B33600100 -S3154001A52096A2C00D068000059B33600196A2C00D20 -S3154001A530108000509402A00F9682C00D1080004DED -S3154001A5409402A00D9682C00D068000059B336001E2 -S3154001A55096A2C00D108000479402A00B9682C00DB2 -S3154001A560108000449402A0099682C00D0680000B1B -S3154001A5709B33600196A2C00D068000059B336001A6 -S3154001A58096A2C00D1080003B9402A0079682C00D92 -S3154001A590108000389402A0059682C00D0680000501 -S3154001A5A09B33600196A2C00D108000329402A00335 -S3154001A5B09682C00D1080002F9402A0019682C00D94 -S3154001A5C0068000179B33600196A2C00D0680000BE2 -S3154001A5D09B33600196A2C00D068000059B33600146 -S3154001A5E096A2C00D108000239402BFFF9682C00D33 -S3154001A5F0108000209402BFFD9682C00D06800005A2 -S3154001A6009B33600196A2C00D1080001A9402BFFBD5 -S3154001A6109682C00D108000179402BFF99682C00D34 -S3154001A6200680000B9B33600196A2C00D0680000593 -S3154001A6309B33600196A2C00D1080000E9402BFF7B5 -S3154001A6409682C00D1080000B9402BFF59682C00D14 -S3154001A650068000059B33600196A2C00D108000055F -S3154001A6609402BFF39682C00D108000029402BFF19E -S3154001A67098A3200116BFFFA28092C0002680000247 -S3154001A6809422A0018090C000268000029420000AF6 -S3154001A69081C3E0089010000A19100144DA032174BD -S3154001A6A080A3600012800006820340080310014423 -S3154001A6B09A106188DA23217482034008C2232174E7 -S3154001A6C081C3E0089010000DA7500000AE100001B4 -S3154001A6D08334E00129100143E8052038A92CC01430 -S3154001A6E08215000181E000008190400001000000D8 -S3154001A6F00100000001000000E03BA000E43BA0088F -S3154001A700E83BA010EC3BA018F03BA020F43BA0286E -S3154001A710F83BA030FC3BA03881E8000082100017CE -S3154001A72081C4400081CC800001000000010000008E -S3154001A73001000000A7500000A92CE0012B100143A5 -S3154001A740EA056038AB34C015AA154014819540001E -S3154001A75001000000010000000100000081E8000046 -S3154001A76081E80000E01BA000E41BA008E81BA01044 -S3154001A770EC1BA018F01BA020F41BA028F81BA0304E -S3154001A780FC1BA03881E0000081E0000081C440004C -S3154001A79081CC8000A75000002910006CADC5210472 -S3154001A7A00100000027100143A614E018E024C00070 -S3154001A7B0818C202001000000010000000100000002 -S3154001A7C09DE3BFA09DE3BFA09DE3BFA09DE3BFA0C6 -S3154001A7D09DE3BFA09DE3BFA09DE3BFA081E800002C -S3154001A7E081E8000081E8000081E8000081E800007E -S3154001A7F081E8000081E8000027100143A614E01813 -S3154001A800C024C000E203A068A4046004E223A0645B -S3154001A810E423A06810800262AC10000029100142B6 -S3154001A820A81523FCC2252000C8252004E0252010B8 -S3154001A830E2252014E4252018E825201C81E80000A3 -S3154001A8408348000082106F0081886020010000006B -S3154001A850010000000100000009100143C801203831 -S3154001A86081E000008821200180A920FF02800003A9 -S3154001A870010000000100000080A1000012BFFFF9A5 -S3154001A8800100000009100143C801203881E8000099 -S3154001A89080A920FF028000030100000001000000A2 -S3154001A8A08821200180A1000012BFFFF901000000AC -S3154001A8B081E0000029100142A81523FCC8052004A7 -S3154001A8C0C2052000E0052010E2052014E405201809 -S3154001A8D0C025201C818C20000100000001000000E1 -S3154001A8E00100000081C4800081CCA004A0142F0087 -S3154001A8F0818C000001000000010000000100000001 -S3154001A90081C4800081CCA00480A66002128000052B -S3154001A910A8142F00818D0000B01420203080001F24 -S3154001A92080A6600312800006A80E2F00AA2C2F00D5 -S3154001A930A8154014818D00003080001880A660045F -S3154001A94012800008A9480000A8152040818D00000A -S3154001A9500100000001000000010000003080000FEE -S3154001A96080A6600512800008A9480000A82D204055 -S3154001A970818D00000100000001000000010000007F -S3154001A9803080000680A660061280000301000000A8 -S3154001A99030BFFFA391D0200081C4800081CCA004A8 -S3154001A9A09210200381C3E00891D020029210200228 -S3154001A9B081C3E00891D020029210200681C3E008AD -S3154001A9C091D0200281C3E0080100000081C3E00864 -S3154001A9D00100000081C3E00801000000AE25A0107F -S3154001A9E0A75000002D10006AAC15A1F02910006C8B -S3154001A9F081C522AC010000001110014390122024B0 -S3154001AA00D202000092026001D2220000932DE0089A -S3154001AA10902C2F0092120009111001439012201C14 -S3154001AA20D002000080A000082280000292126F002E -S3154001AA30818A602001000000010000000100000041 -S3154001AA4090100017400000319203A06092142F002D -S3154001AA50818A602001000000010000000100000021 -S3154001AA601110014390122024D2020000922260016B -S3154001AA70D22200001080022DAC1000001B100144B0 -S3154001AA809A13602C912A2002C2034008C222600C0C -S3154001AA9081C3E008D22340089DE3BF9803100144D7 -S3154001AAA08210602C992E60021B100143972E600480 -S3154001AAB0D800400C9A13622C901000199202C00DD6 -S3154001AAC080A6601F1480000F8210200010800006AF -S3154001AAD080A320002280000AC2024000D803200C35 -S3154001AAE080A3200012BFFFFC80A300097FFFFFE483 -S3154001AAF0F02240001080000382102000F022400026 -S3154001AB0081C7E00891E800019DE3BF981B1001430E -S3154001AB1082136028D800600480A300180280004494 -S3154001AB20C203602880A6200022800002B010000CDB -S3154001AB3003100144A32E20028210602CE000401134 -S3154001AB4080A420000280003D0310014310800012C2 -S3154001AB50A41061A8D2042008941000199FC30000D4 -S3154001AB609010001803100143C20061A080A060004C -S3154001AB701280002B01000000C204801182007FFF79 -S3154001AB80C2248011E004200C80A420000280002B06 -S3154001AB9001000000D804000080A3200022BFFFFB73 -S3154001ABA0E004200C03100143DA00622880A3600010 -S3154001ABB0128000089610001203100143821061A80A -S3154001ABC0DA00401180A3600032BFFFF0E004200CA0 -S3154001ABD0DA02C011031001439A036001C20061A465 -S3154001ABE080A0600002BFFFDCDA22C0119FC0400096 -S3154001ABF001000000D8040000D20420089410001976 -S3154001AC009FC300009010001803100143C20061A0C9 -S3154001AC1080A0600022BFFFDAC20480119FC04000BD -S3154001AC200100000010BFFFD6C2048011DA0060C0E7 -S3154001AC3010BFFFBDB00B601F81C7E00881E800006F -S3154001AC408C10000FA74800008B34E0188A09600F6A -S3154001AC5080A160030280000C0B1001438A11603011 -S3154001AC600920000088112070C82140000B100143C3 -S3154001AC708A1160500920000088112040C8214000F7 -S3154001AC80108000399010200192102006400001DD0D -S3154001AC900100000080A0000802800033010000008E -S3154001ACA0C2022010113FFC0082084008110003FC3B -S3154001ACB08410400890100002921020019410200C3C -S3154001ACC0400001E60100000080A000080280002645 -S3154001ACD001000000400001F6921000010B100143F3 -S3154001ACE08A116030D221400090100002921020015A -S3154001ACF094102011400001D90100000080A00008F5 -S3154001AD000280001901000000400001E99210000193 -S3154001AD10920260100B1001438A116050D22140000B -S3154001AD2090100002921020019410200D400001CB9A -S3154001AD300100000080A000080280000B0100000015 -S3154001AD40400001DB921000010B1001438A1160287B -S3154001AD50D2214000D40260109532A010940AA00F6F -S3154001AD60D42160049E10000681C3E0080100000062 -S3154001AD7003100143821060488210200191D02000C7 -S3154001AD8081C3E008010000009DE3BF980310014420 -S3154001AD90C20060C8901000189210001980A060008F -S3154001ADA002800005B01020009FC040000100000055 -S3154001ADB0B010000881C7E00881E800009DE3BF9814 -S3154001ADC003100144C20060C49010001880A06000C6 -S3154001ADD002800005B01020009FC040000100000025 -S3154001ADE0B010000881C7E00881E800009DE3BF98E4 -S3154001ADF003100144C20060BC9010001880A060009E -S3154001AE0002800005B01020009FC0400001000000F4 -S3154001AE10B010000881C7E00881E800009DE3BF98B3 -S3154001AE2003100144C20060C09010001880A0600069 -S3154001AE3002800005B01020009FC0400001000000C4 -S3154001AE40B010000881C7E00881E800009DE3BF9883 -S3154001AE5003100144C20060B89010001880A0600041 -S3154001AE6002800005B01020009FC040000100000094 -S3154001AE70B010000881C7E00881E800009DE3BF9853 -S3154001AE8003100144C20060B49010001880A0600015 -S3154001AE9002800005B01020009FC040000100000064 -S3154001AEA0B010000881C7E00881E800009DE3BF9823 -S3154001AEB003100144C20060B09010001880A06000E9 -S3154001AEC002800005B01020009FC040000100000034 -S3154001AED0B010000881C7E00881E800009DE3BF98F3 -S3154001AEE003100144C20060AC901000189210001982 -S3154001AEF080A0600002800005B01020009FC0400085 -S3154001AF0001000000B010000881C7E00881E8000098 -S3154001AF10010000000310006B821063E09FC04000F7 -S3154001AF20010000000310000082106000819840007B -S3154001AF300310006C821060649FC040000100000055 -S3154001AF400310006B821063D09FC0400001000000D7 -S3154001AF508B4800008B3160188A09600380A1600329 -S3154001AF6012800007010000008B4440008B31601CB9 -S3154001AF7080A1400012800006010000007FFFFF31E2 -S3154001AF80010000007FFF9879010000009C23A0404A -S3154001AF907FFF981C010000008210200191D0200003 -S3154001AFA00100000029000004A68C00143280000331 -S3154001AFB0A02C001491D02000818C000001000000DB -S3154001AFC0010000000100000081C4800081CCA00482 -S3154001AFD081C3E0080100000081C1E00801000000D2 -S3154001AFE0A74800008B34E0188A09600380A16003FA -S3154001AFF0128000080100000021100143A0142040E6 -S3154001B000A2102003E22400008B4440001080000877 -S3154001B01021100143A0142040A2102002E224000086 -S3154001B02021200000E60420248B34E0148A09601FA5 -S3154001B03027100143A614E038CA24C0008A016001E2 -S3154001B04027100143A614E034CA24C0002710014347 -S3154001B050A614E03C8A216002CA24C00081C3E008EC -S3154001B0600100000081C3E0080100000083480000A0 -S3154001B070833060188208600380A060031280000656 -S3154001B0800100000083444000050000088228400278 -S3154001B090A3804000881000000910006B81C1231471 -S3154001B0A0010000009DE3BF980310006D1B10006D69 -S3154001B0B0A01061609A13616080A4000D1A8000108F -S3154001B0C0A210000D10800006C204000080A40011E9 -S3154001B0D01A80000B01000000C204000080A060003D -S3154001B0E002BFFFFBA00420049FC0400001000000F6 -S3154001B0F080A400112ABFFFFAC204000081C7E008FC -S3154001B10081E80000AA27A0B0E0256060E2256064DE -S3154001B110E4256068C2256074C43D6078C83D60809E -S3154001B120CC3D608885400000C425606CF03D609050 -S3154001B130F43D6098F83D60A0FC3D60A8A810200150 -S3154001B140A92D0010808D001302800013010000001C -S3154001B1508534E00107100143C600E038A72CC0033F -S3154001B1608414C0028408A0FF81E000008190A00001 -S3154001B170E03BA000E43BA008E83BA010EC3BA01854 -S3154001B180F03BA020F43BA028F83BA030FC3BA03884 -S3154001B19081E8000081C5A0089C10001505100143F7 -S3154001B1A08410A19CC400800080A08000028000041D -S3154001B1B0010000009FC080009203A060818C2000A6 -S3154001B1C0821020028328401005100143C400A03498 -S3154001B1D085304002821040028550000080888001FF -S3154001B1E0028000208328A00107100143C600E038F1 -S3154001B1F08530800382104002820860FF81906000A2 -S3154001B200C203A06C81806000F01BA090F41BA09843 -S3154001B210F81BA0A0FC1BA0A8C203A074C41BA07865 -S3154001B220C81BA080CC1BA088E003A060E203A064F9 -S3154001B230E403A06881E80000E01BA000E41BA0082D -S3154001B240E81BA010EC1BA018F01BA020F41BA028A3 -S3154001B250F81BA030FC1BA0381080000F81E00000D5 -S3154001B260C203A06C81806000F01BA090F41BA098E3 -S3154001B270F81BA0A0FC1BA0A8C203A074C41BA07805 -S3154001B280C81BA080CC1BA088E003A060E203A06499 -S3154001B290E403A068818C2000010000000100000049 -S3154001B2A00100000081C4400081CC8000AA27A0B0E3 -S3154001B2B0C2256074C43D6078C83D6080CC3D6088DD -S3154001B2C085400000C425606CA8102001A92D0010FE -S3154001B2D0808D001302800013010000008534E001D7 -S3154001B2E007100143C600E038A72CC0038414C002EE -S3154001B2F08408A0FF81E000008190A000E03BA0000F -S3154001B300E43BA008E83BA010EC3BA018F03BA02092 -S3154001B310F43BA028F83BA030FC3BA03881E8000074 -S3154001B32081C5A0089C100015051001438410A19CFD -S3154001B330C400800080A0800002800004010000005B -S3154001B3409FC080009203A060818C20008210200261 -S3154001B3508328401005100143C400A03485304002C3 -S3154001B36082104002855000008088800102800019C9 -S3154001B3708328A00107100143C600E03885308003C9 -S3154001B38082104002820860FF81906000C203A06C77 -S3154001B39081806000C203A074C41BA078C81BA08032 -S3154001B3A0CC1BA08881E80000E01BA000E41BA0089C -S3154001B3B0E81BA010EC1BA018F01BA020F41BA02832 -S3154001B3C0F81BA030FC1BA0381080000881E000006B -S3154001B3D0C203A06C81806000C203A074C41BA07824 -S3154001B3E0C81BA080CC1BA088818C200001000000D6 -S3154001B3F0010000000100000081C4400081CC8000B2 -S3154001B400821000089A10380096102000912AE00513 -S3154001B41098034008D40340089132A01880A2000145 -S3154001B420328000089602E0019132A00C900A2FFF6B -S3154001B43080A20009028000079410000C9602E001E8 -S3154001B44080A2E00728BFFFF3912AE005941020006F -S3154001B45081C3E0089010000A82100008981020006D -S3154001B460912B20039A004008D60040089132E018FB -S3154001B47080A2000932800008980320019132E00C35 -S3154001B480900A2FFF80A2000A028000079610000D45 -S3154001B4909803200180A3200F28BFFFF3912B20039F -S3154001B4A09610200081C3E0089010000BD4022004BE -S3154001B4B0173FFC00920A400B900A800B9132200CF8 -S3154001B4C0921240081100003F901223F0940A80081E -S3154001B4D0952AA0049412800B920A400A81C3E0087F -S3154001B4E0901000099DE3BF980310006D82106148DA -S3154001B4F0DA007FFC80A37FFF02800009A0007FFC69 -S3154001B5008210000D9FC04000A0043FFCC204000011 -S3154001B51080A07FFF12BFFFFC0100000081C7E00849 -S3154001B52081E800009DE3BF9881C7E00881E80000FB -S3154001B53000000000000000000000000000000000C4 -S3154001B54000000002FFFFFFFF0000000000000000B6 -S3154001B55000000002FFFFFFFF0000000000000000A6 -S3154001B56040080000000000003CD203AF9EE756169B -S3154001B5703E7AD7F29ABCAF4840050220000000004F -S3154001B580430000009DE3BFA07FFF96DB0100000062 -S3154001B5907FFFFFD50100000081C7E00881E8000078 -S3154001B5A09DE3BFA07FFF96B60100000081C7E0087A -S3154001B5B081E80000000000000000000000000000DB -S315400200000000000100000000000000004001B55859 -S315400200102000000000000000000000000000000078 +S31540011C9085A00921C523000081C3E008D0030000C7 +S31540011CA01910008098132120D0230000D223200848 +S31540011CB0C1030000C303200885A009A1C523000074 +S31540011CC081C3E008D0030000191000809813212039 +S31540011CD0D0230000C103000083A00520C3230000D8 +S31540011CE081C3E008D00300001310008092126138CE +S31540011CF0C51A6008C11A400089A0084091A108C2CE +S31540011D0095A209C495A2894281C3E008D53A00004B +S31540011D101310008092126158C1024000C302600450 +S31540011D2085A0082087A088A189A0C9A289A10921E7 +S31540011D3081C3E008C92200009610200213100080DA +S31540011D4092126138151000809412A138D5024000D4 +S31540011D50D7028000D5220000D8020000131000806F +S31540011D609212615896A2E00112BFFFF901000000EC +S31540011D7081C3E0080100000013100080921261380F +S31540011D80151000809412A158C1028000C51A601036 +S31540011D9083A0082089A088C08BA109A18DA10942F1 +S31540011DA08FA1492691A0054681C3E008D13A00009A +S31540011DB01110008090122130C11A0000C51A00008E +S31540011DC0C91A0000CD1A0000D11A0000D51A000028 +S31540011DD0D91A0000DD1A0000E11A0000E51A0000D8 +S31540011DE0E91A0000ED1A0000F11A0000F51A000088 +S31540011DF0F91A0000FD1A000081C3E0080100000045 +S31540011E0029100080A81520F827100080A614E16843 +S31540011E10C12CC000E604C000A134E00EA00C20078E +S31540011E20A0A42002AE1020002D100080AC15A168A0 +S31540011E30AE05E001AC05A008C1358000C12D00000A +S31540011E40EA050000AB35600DAA8D600112BFFFF9AE +S31540011E5001000000808000100280002F2B3C1FFFF4 +S31540011E60AA1563FFA60CC015E6250000C10D0000AA +S31540011E702B100080AA1561742D100047AC15A2E005 +S31540011E80AE25E001E0054000E025800081D8200034 +S31540011E9001000000010000000100000001000000F7 +S31540011EA001000000010000000100000001000000E7 +S31540011EB001000000010000000100000001000000D7 +S31540011EC001000000010000000100000001000000C7 +S31540011ED001000000010000000100000001000000B7 +S31540011EE00000000080A5C00012BFFFE6AA056008F9 +S31540011EF0C12D0000E60500002B03C000A614C01545 +S31540011F00E6250000C10D000081C4400081CC80005F +S31540011F100100000081C4800081CCA00401000000C2 +S31540011F200100000081C3E008915800000100000053 +S31540011F3011100080901220F8C10A0000C022000052 +S31540011F40C10A0000C12A0000D40200001300038028 +S31540011F50942A800980A0000A3280004D9010200307 +S31540011F601303E000D223BFA0C023BFA4C10BBFA06F +S31540011F70C023BFA0151000809412A0E8C1028000C2 +S31540011F800100000001000000C10BBFA0C10BBFA4AE +S31540011F9083A00520C12BBFA0D003BFA0808A220009 +S31540011FA02280003B901020049010200015100080E4 +S31540011FB09412A108C5028000C902A008D102A00C52 +S31540011FC013100080921260E8C70240008DA0894438 +S31540011FD081A98AC8010000000380000501000000B4 +S31540011FE0901020011080002A01000000C5028000E7 +S31540011FF0C902A008D102A00C13100080921260E819 +S31540012000CB0240008DA0894481A98AC80100000005 +S315400120100380000501000000901020011080001C83 +S315400120200100000025100080A414A0F0C11C80000E +S31540012030C51C800080A000003280000685A008C033 +S3154001204081A80AC2010000001380000301000000BC +S31540012050901020050100000025100080A414A0F076 +S31540012060C11C8000C51C800080A00000010000004A +S315400120703280000685A008C081A80AC2010000007E +S3154001208013800003010000009010200701000000AA +S3154001209081C3E00801000000901020019544000032 +S315400120A09532A01E940AA00380A2800002800040BF +S315400120B09010200080A2A0021680003D13100080DF +S315400120C092126198C11A4000C51A6008FD02601853 +S315400120D095A0003E99A0003E9DA0003E170000C07D +S315400120E09612E078A182C0000100000001000000C4 +S315400120F00100000001000000010000000100000095 +S3154001210081A0002083A0002195A0002A99A0002C3F +S315400121109DA0002E170000C09612E07CA182C0004F +S315400121200100000001000000010000000100000064 +S31540012130010000000100000085A0002287A00023C5 +S31540012140A180000001000000010000000100000024 +S3154001215001000000010000000100000089A00842C2 +S31540012160A9A2883ED93A4000DD224000CD1A60102E +S31540012170D102600881A90A46010000000380000CD3 +S3154001218081AD0A2801000000038000099344000044 +S315400121909332601B920A60079010200080A2A00132 +S315400121A002800003902260079022600481C3E00808 +S315400121B001000000C12BBFA081C3E008D003BFA02E +S315400121C0D023BFA081C3E008C10BBFA0010000001E +S315400121D09DE3BF6040001B94B0102000833A200A63 +S315400121E08208600380A060010280000401000000B3 +S315400121F081C7E00881E800007FFFBDE19010200D16 +S31540012200050C40290723CD1B8410A0068610E09BB0 +S31540012210C027BFF0C027BFF4C43FBFF8C027BFD017 +S31540012220C027BFD4C027BFC87FFFFF3FC027BFCC51 +S31540012230820A30008210608084006004072804000E +S315400122408610E00F09100047C62040008811220081 +S3154001225007100000882100028939200286110003F7 +S31540012260C620600425100080032784008210601078 +S315400122707FFFFED0C220A0047FFFFFD21103E00002 +S3154001228090102000C024A1687FFFFDD0010000000E +S31540012290809200091280000601000000C204A16874 +S315400122A080A0600002800004010000007FFFBDBBEA +S315400122B09010200B7FFFFDC590103FFA03300600BA +S315400122C080A2000102800CF880A260007FFFBDB3AE +S315400122D09010200B7FFFFDBD9010201403100D00C0 +S315400122E080A200010280113680A260007FFFBDAB53 +S315400122F09010200B7FFFFDB5901020620310162031 +S3154001230080A200010280112780A260007FFFBDA349 +S315400123109010200B7FFFFDB590102005031028007B +S3154001232080A2000112800CB501000000C204A16820 +S3154001233080A0600012800CB1010000007FFFFFA168 +S315400123401103C000111C00007FFFFDB09210200058 +S31540012350031FFFFF821063FF80A200011280000B62 +S3154001236001000000C404A168030000708210601FD0 +S3154001237084088001030000108210601080A0800153 +S3154001238002800005113C00007FFFBD849010200CA7 +S31540012390113C00007FFFFD9D9210200003200000AC +S315400123A080A200011280000B01000000C404A16854 +S315400123B0030000708210601F840880010300001032 +S315400123C08210601080A0800102800004010000009C +S315400123D07FFFBD729010200CC024A1689010200090 +S315400123E07FFFFD8A9210200080A220001280000605 +S315400123F003100080C200616880A060000280000571 +S31540012400110144007FFFBD659010200C110144006D +S3154001241013284000901223027FFFFD7C9212600137 +S3154001242080A220001280000601000000C204A168BB +S3154001243080A06000228000051111FFFF7FFFBD577C +S315400124409010200C1111FFFF7FFFFD78901223FFA2 +S315400124500300007F821063FF80A2000112800C639B +S3154001246001000000C204A16880A0600012800C5FD8 +S3154001247001000000271000807FFFFD64D01CE1E0D1 +S31540012480031FFFFF821063FF80A200011280000B31 +S3154001249001000000C404A168030000708210601F9F +S315400124A084088001030000108210601080A0800122 +S315400124B002800005351000807FFFBD389010200C4A +S315400124C035100080D01EA1D0C024A1687FFFFD4FEA +S315400124D0010000000320000080A200011280000BD1 +S315400124E003100080C4006168030000708210601F01 +S315400124F084088001030000108210601080A08001D2 +S31540012500028000052B1000807FFFBD249010200C17 +S315400125102B100080D01D61F0C024A1687FFFFD3BD8 +S3154001252001000000031FFFFF821063FF80A200012C +S315400125301280000B03100080C40061680300007024 +S315400125408210601F84088001030000108210601011 +S3154001255080A08001028000052F1000807FFFBD0F03 +S315400125609010200C2F100080D01DE1B8C024A16826 +S315400125707FFFFD2601000000C204A1688330600E82 +S315400125808208600380A0600202800004010000000E +S315400125907FFFBD029010200C7FFFFF0A1103C00090 +S315400125A011115804C024A1687FFFFD2890122234DE +S315400125B003102B008210624680A200010280107136 +S315400125C0032000007FFFBCF59010200D113C02AFA7 +S315400125D07FFFFD1E901220D1033180558210639AF0 +S315400125E080A200010280105F030800007FFFBCEB60 +S315400125F09010200D1111FC007FFFFD1C9210200050 +S31540012600031FE00080A200011280000B01000000C0 +S31540012610C404A168030000708210601F8408800111 +S31540012620030000108210600880A08001028000042F +S31540012630010000007FFFBCD99010200DC024A16885 +S3154001264011207C01130001007FFFFD08901220300C +S315400126500320000080A200011280000B03100080BD +S31540012660C4006168030000708210601F8408800105 +S31540012670030000108210600480A0800102800004E3 +S31540012680010000007FFFBCC59010200DC024A16849 +S31540012690901020007FFFFCF59210200080A22000C0 +S315400126A01280000603100080C200616880A06000AD +S315400126B002800004010000007FFFBCB89010200D8D +S315400126C07FFFFCEAD01CE1E003100080C20061E814 +S315400126D080A2000112800BC101000000C204A16862 +S315400126E080A0600012800BBD010000003710008001 +S315400126F07FFFFCDED01EE1D8031FE00080A200016F +S3154001270012800BB301000000C204A16880A06000E2 +S3154001271012800BAF010000007FFFFCD4D01D61F099 +S3154001272003100080C200620080A200011280000BEB +S3154001273001000000C404A168030000708210601FFC +S3154001274084088001030000108210601080A080017F +S3154001275002800005D01DE1B87FFFBC909010200D8E +S31540012760D01DE1B8C024A1687FFFFCC00100000074 +S31540012770C204A1688330600E8208600380A06002B3 +S3154001278002800004010000007FFFBC849010200DF0 +S315400127907FFFFE8C1103E0002108C6AFC024A1686B +S315400127A0901420DE7FFFFCB9A01420DE80A2001029 +S315400127B012800B8303100080C200616880A0600014 +S315400127C012800B7F010000002108C6AF901420DE65 +S315400127D07FFFFCBEA01420DE80A2001012800B7485 +S315400127E001000000C204A16880A0600012800B7045 +S315400127F0010000001128C6AF7FFFFCB4901220DE15 +S315400128000308C6AF821060DE80A2000112800B640D +S3154001281001000000C204A16880A0600012800B6024 +S31540012820010000001108C6AF7FFFFCA0901220DE18 +S315400128300328C6AF821060DE80A2000112800B54CD +S3154001284001000000C204A16880A0600012800B5004 +S31540012850010000001128C6AF7FFFFC94901220DED4 +S315400128600308C6AF821060DE80A2000112800B45CC +S3154001287001000000C204A16880A0600012800B41E3 +S31540012880010000007FFFFE4F1103E00011151BC040 +S315400128901310C821901221039212614115351BC0B4 +S315400128A01710C8219412A1037FFFFC909612E141B3 +S315400128B080A2200212800B2B01000000C204A168F5 +S315400128C080A0600012800B270100000011351BC05B +S315400128D01310C821901221039212614115151BC094 +S315400128E01710C8219412A1037FFFFC809612E14183 +S315400128F080A2200112800B1F01000000C204A168C2 +S3154001290080A0600012800B1B010000009010200087 +S3154001291092102000152000007FFFFC7496102000C5 +S3154001292080A220001280000601000000C204A168B6 +S3154001293080A0600002800005D01EE1D87FFFBC1751 +S315400129409010200FD01EE1D87FFFFC68D41EA1D085 +S3154001295080A2200212800AFF01000000C204A16881 +S3154001296080A0600012800AFB0100000011151BC007 +S315400129701310C821901221039212614115151BE8CB +S315400129801710C8219412A1037FFFFC589612E1410A +S3154001299080A2200112800AEB01000000C204A16856 +S315400129A080A0600012800AE70100000011151BE8B3 +S315400129B01310C821901221039212614115151BC0B3 +S315400129C01710C8219412A1037FFFFC489612E141DA +S315400129D080A2200212800AD701000000C204A16829 +S315400129E080A0600012800AD301000000D41CE1E0FF +S315400129F011151BE81310C821901221037FFFFC3BE0 +S31540012A009212614180A2200312800AC60100000091 +S31540012A10C204A16880A0600012800AC201000000C1 +S31540012A20D41D61F011151BE81310C8219012210322 +S31540012A307FFFFC2E9212614180A220031280000B7F +S31540012A4001000000C404A168030000708210601FE9 +S31540012A5084088001030000108210601080A080016C +S31540012A6002800005D41DE1B87FFFBBCC9010200F3A +S31540012A70D41DE1B8C024A16811151BE81310C82163 +S31540012A80901221037FFFFC199212614180A220021C +S31540012A9012800AA003100080C200616880A0600015 +S31540012AA012800A9C01000000D01DE1B815151BE8F3 +S31540012AB01710C8219412A1037FFFFC0C9612E14125 +S31540012AC080A2200112800A8B01000000C204A16885 +S31540012AD080A0600012800A8701000000D01CE1E05E +S31540012AE015151BE81710C8219412A1037FFFFBFFA0 +S31540012AF09612E14180A2200312800A820100000061 +S31540012B00C204A16880A0600012800A7E0100000014 +S31540012B10D01D61F015151BE81710C8219412A103A9 +S31540012B207FFFFBF29612E14180A220031280000B47 +S31540012B3001000000C404A168030000708210601FF8 +S31540012B4084088001030000108210601080A080017B +S31540012B5002800004010000007FFFBB909010200F0F +S31540012B60C024A16811151BC01310C821901221035E +S31540012B709212614115351BC01710C8219412A10349 +S31540012B807FFFFBED9612E14180A2200212800A5599 +S31540012B9003100080C200616880A0600012800A5163 +S31540012BA00100000011351BC01310C82190122103EA +S31540012BB09212614115151BC01710C8219412A10329 +S31540012BC07FFFFBDD9612E14180A2200112800A417E +S31540012BD001000000C204A16880A0600012800A3D85 +S31540012BE001000000901020009210200015200000E6 +S31540012BF07FFFFBD19610200080A2200012800006A4 +S31540012C0001000000C204A16880A0600002800005A6 +S31540012C10D01EE1D87FFFBB619010200FD01EE1D8B6 +S31540012C207FFFFBC5D41EA1D080A2200212800A25B7 +S31540012C3001000000C204A16880A0600012800A2140 +S31540012C400100000011151BC01310C8219012210369 +S31540012C509212614115151BE81710C8219412A10360 +S31540012C607FFFFBB59612E14180A2200112800A1135 +S31540012C7001000000C204A16880A0600012800A0D14 +S31540012C800100000011151BE81310C8219012210301 +S31540012C909212614115151BC01710C8219412A10348 +S31540012CA07FFFFBA59612E14180A22002128009FD19 +S31540012CB001000000C204A16880A06000128009F9E9 +S31540012CC001000000D41CE1E011151BE81310C821D6 +S31540012CD0901221037FFFFB989212614180A220034B +S31540012CE01280000B01000000C404A16803000070BB +S31540012CF08210601F8408800103000010821060105A +S31540012D0080A0800102800005D41D61F07FFFBB23B6 +S31540012D109010200FD41D61F011151BE81310C82126 +S31540012D20901221037FFFFB849212614180A220030E +S31540012D301280000B01000000C404A168030000706A +S31540012D408210601F84088001030000108210601009 +S31540012D5080A0800102800005D41DE1B87FFFBB0F32 +S31540012D609010200FD41DE1B8C024A16811151BE8AD +S31540012D701310C821901221037FFFFB6F921261410C +S31540012D8080A22002128009BF03100080C200616840 +S31540012D9080A06000128009BB01000000D01DE1B88F +S31540012DA015151BE81710C8219412A1037FFFFB627A +S31540012DB09612E14180A22001128009B6010000006D +S31540012DC0C204A16880A06000128009B2010000001F +S31540012DD0D01CE1E015151BE81710C8219412A10378 +S31540012DE07FFFFB559612E14180A220031280000B22 +S31540012DF001000000C404A168030000708210601F36 +S31540012E0084088001030000108210601080A08001B8 +S31540012E1002800005D01D61F07FFFBAE09010200FBF +S31540012E20D01D61F015151BE81710C8219412A10396 +S31540012E307FFFFB419612E14180A220031280000BE5 +S31540012E4001000000C404A168030000708210601FE5 +S31540012E5084088001030000108210601080A0800168 +S31540012E6002800004010000007FFFBACC9010200FC1 +S31540012E70C024A168110048EA13048D15901223CD90 +S31540012E807FFFFB3E9212627880A22001128009796F +S31540012E9003100080C200616880A06000128009753D +S31540012EA001000000110048EA13048D15901223CD4C +S31540012EB07FFFFB439212627880A220011280096A49 +S31540012EC001000000C204A16880A06000128009666A +S31540012ED001000000C024A1687FFFFCBA1103C000B5 +S31540012EE023100124A807BFF8BA07BFD090100014D9 +S31540012EF09210001D7FFFFA6C94146160C2046160F8 +S31540012F00C407BFF880A0800102800E0CA014616046 +S31540012F107FFFBAA2901020102D100080901000144F +S31540012F209215A1C87FFFFA6094146160C404616080 +S31540012F30C205A1C880A0800122800DF6C4042004E8 +S31540012F407FFFBA9690102010901000149214E1E081 +S31540012F507FFFFA5594146160C4046160C204E1E0E4 +S31540012F6080A0800102800DE1B214E1E07FFFBA8BBF +S31540012F709010201090100014921561F07FFFFA4ACC +S31540012F8094146160C404A168030000708210601F3C +S31540012F9084088001030000108210601080A0800127 +S31540012FA002800004010000007FFFBA7C90102010CF +S31540012FB0C024A1687FFFFC8390102000901000146C +S31540012FC0921561F07FFFFA389414616039100080E0 +S31540012FD0C4046160C20721F880A0800122800DBD32 +S31540012FE0C40420047FFFBA6D901020107FFFFC754A +S31540012FF01103C000901000149215E1B87FFFFA2A20 +S3154001300094146160C204A1688330600E8208600333 +S3154001301080A0600202800004010000007FFFBA5FC9 +S3154001302090102010C024A1689010001D9210001429 +S315400130307FFFFA1D94146160C4046160C207BFF842 +S3154001304080A0800122800D9AC40420047FFFBA53D8 +S31540013050901020109010001D9215A1C87FFFFA1202 +S3154001306094146160C4046160C205A1C880A0800156 +S3154001307022800D84C40420047FFFBA48901020109A +S315400130809010001D9214E1E07FFFFA0794146160ED +S31540013090C4046160C204E1E080A0800122800D7019 +S315400130A0C40420047FFFBA3D901020109010001DEB +S315400130B0921561F07FFFF9FC94146160C404A16824 +S315400130C0030000708210601F840880010300001015 +S315400130D08210601080A0800102800004010000007F +S315400130E07FFFBA2E901020107FFFFC3690102000F3 +S315400130F09010001D921561F07FFFF9EB9414616009 +S31540013100C4046160C20721F880A0800122800D4D70 +S31540013110C40420047FFFBA21901020107FFFFC29B0 +S315400131201103C0009010001D9215E1B87FFFF9DE32 +S3154001313094146160C204A1688330600E8208600302 +S3154001314080A0600202800004010000007FFFBA13E4 +S3154001315090102010C024A1689015A1C892100014A7 +S315400131607FFFF9D194146160C4046160C205A1C8AE +S3154001317080A0800122800D28C40420047FFFBA0765 +S31540013180901020109015A1C89210001D7FFFF9C61E +S3154001319094146160C4046160C205A1C880A0800125 +S315400131A022800D12C40420047FFFB9FC9010201028 +S315400131B09016E1D8941461607FFFF9BB9210000824 +S315400131C0C4046160C206E1D880A0800122800CFC63 +S315400131D0C40420047FFFB9F1901020109016A1D0AD +S315400131E0941461607FFFF9B092100008C4046160D5 +S315400131F0C206A1D080A0800122800CE6C40420042E +S315400132007FFFB9E6901020109016A1D09216E1D812 +S315400132107FFFF9A594146160C404A168030000709E +S315400132208210601F84088001030000108210601024 +S3154001323080A0800102800004010000007FFFB9D711 +S31540013240901020107FFFFBDF901020009016A1D038 +S315400132509216E1D87FFFF99494146160C4046160C9 +S31540013260C20721F880A0800122800CC3C404200437 +S315400132707FFFB9CA901020107FFFFBD21103C00017 +S315400132809016E1D8C024A1689216A1D07FFFF98695 +S3154001329094146160C4046160C20721F880A0800172 +S315400132A022800CA4C40420047FFFB9BC90102010D6 +S315400132B09015A1C89215E1B87FFFF97B941461601E +S315400132C0C204A1688330600E8208600380A0600258 +S315400132D002800004010000007FFFB9B09010201069 +S315400132E0C024A1689014E1E0921000147FFFF96EAA +S315400132F094146160C4046160C204E1E080A080016D +S3154001330022800C83C40420047FFFB9A490102010AE +S315400133109014E1E09210001D7FFFF96394146160FF +S31540013320C4046160C204E1E080A0800122800C6F88 +S31540013330C40420047FFFB999901020109014E1E055 +S315400133409215A1C87FFFF95894146160C404616065 +S31540013350C204E1E080A0800122800C5BC404200409 +S315400133607FFFB98E901020109014E1E094146160B3 +S315400133707FFFF94D92100008C4046160C204E1E088 +S3154001338080A0800122800C47C40420047FFFB983BA +S31540013390901020109014E1E0921561F07FFFF94200 +S315400133A094146160C404A168030000708210601F18 +S315400133B084088001030000108210601080A0800103 +S315400133C002800004010000007FFFB97490102010B4 +S315400133D0C024A168901561F0921000147FFFF93264 +S315400133E094146160C404A168030000708210601FD8 +S315400133F084088001030000108210601080A08001C3 +S3154001340002800004010000007FFFB9649010201083 +S31540013410C024A168901561F09210001D7FFFF9222A +S3154001342094146160C404A168030000708210601F97 +S3154001343084088001030000108210601080A0800182 +S3154001344002800004010000007FFFB9549010201053 +S31540013450C024A168901561F09215A1C87FFFF912A9 +S3154001346094146160C404A168030000708210601F57 +S3154001347084088001030000108210601080A0800142 +S3154001348002800004010000007FFFB9449010201023 +S31540013490C024A168901561F09214E1E07FFFF90222 +S315400134A094146160C404A168030000708210601F17 +S315400134B084088001030000108210601080A0800102 +S315400134C002800005901561F07FFFB93490102010FD +S315400134D0901561F0C024A168941461607FFFF8F2F1 +S315400134E092100008C404A168030000708210601F96 +S315400134F084088001030000108210601080A08001C2 +S3154001350002800004010000007FFFB92490102010C2 +S31540013510C024A168901561F09215E1B87FFFF8E2E9 +S3154001352094146160C204A1688330600E820860030E +S3154001353080A0600202800004010000007FFFB917ED +S31540013540901020107FFFFB1F1103C0000310008065 +S31540013550C024A1688210633010800009B010200099 +S315400135607FFFB90E90102010C207BFC4B0062001DC +S3154001357080A6200D0280002282006018852E20033D +S31540013580912E200590220002051000808410A32070 +S31540013590C227BFC490008008932E20011510012434 +S315400135A0920240189412A16092026001932A60032C +S315400135B07FFFF8BD92008009C207BFC4C600400024 +S315400135C0C404000080A0C00232BFFFE6C227BFC4C8 +S315400135D0C60060040910012488112160C401200439 +S315400135E080A0C00232BFFFDFC227BFC4B0062001A0 +S315400135F080A6200D12BFFFE282006018C204A168B6 +S3154001360080A0600012800BA3010000001110008110 +S3154001361094146160901220587FFFF8A3920220080B +S315400136200310008082106320C4006148C2046160B7 +S3154001363080A0800102800B86071000807FFFB8D7EB +S315400136409010201011100081941461609012207026 +S315400136507FFFF8959202200809100080C20461603C +S3154001366088112320C401216080A0800122800B693A +S31540013670C40121647FFFB8C9901020101110008148 +S3154001368094146160901220887FFFF8879202200887 +S315400136900310008082106320C4006178C204616017 +S315400136A080A0800102800B4B071000807FFFB8BBD2 +S315400136B090102010C024A168111000009210200023 +S315400136C0150FFC007FFFF94F96102000030FFC00F9 +S315400136D080A2000102800B3880A260007FFFB8AF54 +S315400136E0901020101110000092102000152FFC00A0 +S315400136F07FFFF944961020000310020080A20001CA +S3154001370002800B2680A260007FFFB8A49010201093 +S315400137101130000092102000150FFC007FFFF9398F +S31540013720961020000330020080A2000102800B1493 +S3154001373080A260007FFFB8999010201011300000E0 +S3154001374092102000152FFC007FFFF92E96102000C5 +S31540013750032FFC0080A2000102800B0280A26000C0 +S315400137607FFFB88E90102010111000007FFFF92FB7 +S31540013770130FE0000310100080A20001128007B66B +S3154001378001000000C204A16880A06000128007B257 +S3154001379001000000111000007FFFF92E130FE00019 +S315400137A0030FE00080A20001128007A7010000007C +S315400137B0C204A16880A06000128007A30100000036 +S315400137C009100080C024A16890100014941461600F +S315400137D07FFFF848921121C0C4046160C206A1D09E +S315400137E080A0800122800ACFC40420047FFFB86BE9 +S315400137F090102011C024A168901000149216E1D8AF +S315400138007FFFF83C94146160C4046160C207BFC87D +S3154001381080A0800122800ABAC40420047FFFB85FD9 +S3154001382090102011901000149214E1E07FFFF831BE +S3154001383094146160C4046160C204E1E080A0800127 +S3154001384022800AA6C40420047FFFB8549010201198 +S3154001385090100014921561F07FFFF8269414616070 +S31540013860C4046160C20721F880A0800122800A8ACF +S31540013870C40420047FFFB849901020119010001411 +S315400138809215E1B87FFFF81B941461600300007044 +S31540013890C404A168840880010300002080A080013F +S315400138A002800004010000007FFFB83C9010201107 +S315400138B0C024A1689010001D921000147FFFF80DDE +S315400138C094146160C4046160C207BFD080A08001C6 +S315400138D022800A68C40420047FFFB830901020116A +S315400138E0031000809207BFC8901061C07FFFF801A6 +S315400138F094146160C4046160C20721F880A080010C +S3154001390022800A4CC40420047FFFB8249010201161 +S3154001391009100080C024A168901121C09216E1D8F7 +S315400139207FFFF7F494146160C4046160071000805E +S31540013930C200E1C080A0800122800A34C404200470 +S315400139407FFFB816901020119010001D9214E1E0EF +S315400139507FFFF7E894146160C4046160C204E1E04A +S3154001396080A0800122800A20C40420047FFFB80B76 +S31540013970901020079010001D921561F07FFFF7DD32 +S3154001398094146160C404A168030000708210601F32 +S3154001399084088001030000108210601080A080011D +S315400139A002800004010000007FFFB7FC9010201147 +S315400139B0C024A1689010001D9215E1B87FFFF7CD94 +S315400139C09414616003000070C404A16884088001F6 +S315400139D00300002080A08001028000040100000055 +S315400139E07FFFB7EE90102011C024A1689016A1D098 +S315400139F0921000147FFFF7BF94146160C4046160A4 +S31540013A00C206A1D080A08001228009ECC404200412 +S31540013A107FFFB7E290102011091000809016A1D0C7 +S31540013A20921121C07FFFF7B394146160C4046160B1 +S31540013A30C206E1D880A08001228009D5C4042004B1 +S31540013A407FFFB7D6901020119015A1C894146160DC +S31540013A507FFFF7A892100008C4046160C20721F8ED +S31540013A6080A08001228009BAC40420047FFFB7CB1D +S31540013A7090102011C024A1689015A1C89214E1E0CC +S31540013A807FFFF79C94146160C4046160C204E1E065 +S31540013A9080A08001228009A5C40420047FFFB7BF0E +S31540013AA0901020119015A1C8921561F07FFFF791F2 +S31540013AB094146160C4046160C20721F880A080014A +S31540013AC02280098AC40420047FFFB7B490102011D4 +S31540013AD0C024A1689015A1C89215E1B87FFFF7856A +S31540013AE09414616003000070C404A16884088001D5 +S31540013AF00300002080A08001028000040100000034 +S31540013B007FFFB7A690102011C024A1689014E1E070 +S31540013B10921000147FFFF77794146160C4046160CA +S31540013B20C204E1E080A0800122800967C404200428 +S31540013B307FFFB79A901020119014E1E09210001D7A +S31540013B407FFFF76C94146160C4046160C204E1E0D4 +S31540013B5080A0800122800953C40420047FFFB78FCF +S31540013B60901020119014E1E09215A1C87FFFF761F2 +S31540013B7094146160C4046160C204E1E080A08001E4 +S31540013B802280093FC40420047FFFB784901020118E +S31540013B909014E1E0941461607FFFF756921000089B +S31540013BA0C4046160C204E1E080A080012280092B47 +S31540013BB0C40420047FFFB779901020119014E1E0EE +S31540013BC0921561F07FFFF74B94146160C404616004 +S31540013BD0C20721F880A080012280090FC404200475 +S31540013BE07FFFB76E901020119014E1E09215E1B875 +S31540013BF07FFFF7409414616003000070C404A1681C +S31540013C00840880010300002080A080010280000515 +S31540013C10901561F07FFFB76190102011901561F00A +S31540013C20921000147FFFF73394146160C404A168B5 +S31540013C30030000708210601F840880010300001099 +S31540013C408210601080A08001028000040100000003 +S31540013C507FFFB75290102011C024A168901561F0E2 +S31540013C609210001D7FFFF72394146160C404A1687C +S31540013C70030000708210601F840880010300001059 +S31540013C808210601080A080010280000401000000C3 +S31540013C907FFFB74290102011C024A168901561F0B2 +S31540013CA09215A1C87FFFF71394146160C404A168FB +S31540013CB0030000708210601F840880010300001019 +S31540013CC08210601080A08001028000040100000083 +S31540013CD07FFFB73290102011C024A168901561F082 +S31540013CE09214E1E07FFFF70394146160C404A16874 +S31540013CF0030000708210601F8408800103000010D9 +S31540013D008210601080A0800102800005901561F04C +S31540013D107FFFB72290102011901561F0C024A16851 +S31540013D20941461607FFFF6F392100008C404A16801 +S31540013D30030000708210601F840880010300001098 +S31540013D408210601080A08001028000040100000002 +S31540013D507FFFB71290102011C024A168901561F021 +S31540013D609215E1B87FFFF6E3941461600300007099 +S31540013D70C404A168840880010300002080A080015A +S31540013D8002800005051FC0007FFFB7049010201177 +S31540013D90051FC0000700C0008410A1028610E0B0D4 +S31540013DA0C024A168B007BFE0C43FBFE805203E83F9 +S31540013DB0070021C88410A3FF8610E3A19007BFE83E +S31540013DC092100018C43FBFE07FFFF6CA9407BFD8E0 +S31540013DD0C407BFD8033FFC0080A080010280088051 +S31540013DE0C207BFDC7FFFB6ED9010201105004000F1 +S31540013DF00700C0008410A1028610E0B0C024A1686B +S31540013E009007BFE8C43FBFE805108683070021C875 +S31540013E108410A3FF8610E3A1921000189407BFD81F +S31540013E207FFFF6B4C43FBFE0C207BFDCC407BFD8BB +S31540013E30809080011280000B03100080C4006168ED +S31540013E40030000708210601F840880010300001087 +S31540013E508210600480A0800102800005050006AF43 +S31540013E607FFFB6CE90102011050006AF86102010B8 +S31540013E70C024A1689007BFE8C43FBFE8050FFC0016 +S31540013E80070281D88410A0408610E10C92100018D8 +S31540013E909407BFD87FFFF697C43FBFE0C407BFD89A +S31540013EA0030006AE8210639580A08001028008421D +S31540013EB0C407BFDC7FFFB6B990102011050006AFDD +S31540013EC086102010C024A1689007BFE8C43FBFE810 +S31540013ED0050FFFFF070281D88410A3408610E10C2D +S31540013EE0921000189407BFD87FFFF682C43FBFE007 +S31540013EF0C207BFDCC407BFD8809080011280000B87 +S31540013F0003100080C4006168030000708210601FC6 +S31540013F1084088001030000108210600480A08001A3 +S31540013F2002800004010000007FFFB69C9010201122 +S31540013F30C024A168111088007FFFF75A13100100B1 +S31540013F40031066C9821062CA80A20001128005BAB6 +S31540013F5003100080C200616880A06000128005B62F +S31540013F60010000001111BBFE130C70407FFFF74D9D +S31540013F70901223FF031527CA8210611E80A20001F9 +S31540013F80128005A901000000C204A16880A060005A +S31540013F90128005A501000000111E607E1310C7FFA7 +S31540013FA07FFFF740921263FC031D73FC8210633856 +S31540013FB080A200011280059801000000C204A16898 +S31540013FC080A06000128005940100000011002000CD +S31540013FD0130FE0007FFFF7339212600180A22000A9 +S31540013FE01280000B01000000C404A16803000070A8 +S31540013FF08210601F84088001030000108210600453 +S3154001400080A0800102800005110FE0007FFFB663AA +S3154001401090102011110FE000C024A1687FFFF72105 +S3154001402092100008030FE00080A20001128005767D +S3154001403003100080C200616880A060001280057292 +S315400140400100000011002000130FE0007FFFF7156B +S315400140509212600180A220001280000B0100000034 +S31540014060C404A168030000708210601F84088001A7 +S31540014070030000108210600480A0800102800005C8 +S31540014080031000807FFFB645901020110310008079 +S31540014090C024A168921061C0901000147FFFF607FA +S315400140A094146160C404616007100080C200E1C0DD +S315400140B080A08001228007B6C40420047FFFB63762 +S315400140C090102012901000149216E1D87FFFF5FB54 +S315400140D094146160C4046160C206E1D880A0800185 +S315400140E0228007A0C40420047FFFB62C9010201222 +S315400140F0901000149214E1E07FFFF5F09414616092 +S31540014100C4046160C204E1E080A080012280078C82 +S31540014110C40420047FFFB621901020129010001491 +S31540014120921561F07FFFF5E594146160C404616006 +S31540014130C20721F880A0800122800770C4042004B0 +S315400141407FFFB61690102012901000149215E1B818 +S315400141507FFFF5DA9414616003000070C404A1681E +S31540014160840880010300002080A0800102800004B1 +S31540014170010000007FFFB60990102012C024A168FB +S315400141809010001D921000147FFFF5CC94146160CD +S31540014190C4046160C207BFD080A080012280074E5F +S315400141A0C40420047FFFB5FD901020120310008047 +S315400141B09216A1D0901061C07FFFF5C09414616042 +S315400141C0C4046160C20721F880A0800122800732C1 +S315400141D0C40420047FFFB5F190102012C024A168C9 +S315400141E09010001D9214E1E07FFFF5B494146160D4 +S315400141F0C4046160C204E1E080A080012280071D01 +S31540014200C40420047FFFB5E5901024999010001D49 +S31540014210921561F07FFFF5A994146160C404616051 +S31540014220C20721F880A0800122800701C40420042E +S315400142307FFFB5DA901020129010001D9215E1B85B +S315400142407FFFF59E9414616003000070C404A16869 +S31540014250840880010300002080A0800102800004C0 +S31540014260010000007FFFB5CD90102012C024A16847 +S315400142709015A1C8921000147FFFF59094146160C7 +S31540014280C4046160C205A1C880A08001228006DD08 +S31540014290C40420047FFFB5C1901020129015A1C817 +S315400142A09210001D7FFFF58594146160C40461601E +S315400142B0C20721F880A08001228006C2C4042004DE +S315400142C07FFFB5B690102012C024A1689015A1C8F1 +S315400142D09214E1E07FFFF57994146160C404616052 +S315400142E0C204E1E080A08001228006ADC40420041E +S315400142F07FFFB5AA901020129015A1C8921561F0C2 +S315400143007FFFF56E94146160C4046160C20721F8B1 +S3154001431080A0800122800691C40420047FFFB59FBE +S31540014320901020129015A1C89215E1B87FFFF56350 +S315400143309414616003000070C404A168840880017C +S315400143400300002080A080010280000401000000DB +S315400143507FFFB59290102012C024A1689014E1E02D +S31540014360921000147FFFF55594146160C404616096 +S31540014370C204E1E080A080012280066FC4042004CB +S315400143807FFFB586901020129014E1E09210001D37 +S315400143907FFFF54A94146160C4046160C204E1E0A0 +S315400143A080A080012280065BC40420047FFFB57B88 +S315400143B0901020129014E1E09215A1C87FFFF53FBD +S315400143C094146160C4046160C204E1E080A080018C +S315400143D022800647C40420047FFFB5709010201246 +S315400143E09014E1E0941461607FFFF5349210000867 +S315400143F0C4046160C204E1E080A0800122800633EA +S31540014400C40420047FFFB565901020129014E1E0AA +S31540014410921561F07FFFF52994146160C404A16887 +S31540014420030000708210601F8408800103000010A1 +S315400144308210601080A0800102800004010000000B +S315400144407FFFB55690102012C024A168901561F0E7 +S31540014450921000147FFFF51994146160C404A16899 +S31540014460030000708210601F840880010300001061 +S315400144708210601080A080010280000401000000CB +S315400144807FFFB54690102012C024A1689210001DEE +S31540014490901561F07FFFF50994146160C404A16829 +S315400144A0030000708210601F840880010300001021 +S315400144B08210601080A0800102800004010000008B +S315400144C07FFFB53690102012C024A168901561F087 +S315400144D09215A1C87FFFF4F994146160C404A168E0 +S315400144E0030000708210601F8408800103000010E1 +S315400144F08210601080A0800102800004010000004B +S315400145007FFFB52690102012C024A168901561F056 +S315400145109214E1E07FFFF4E994146160C404A16858 +S31540014520030000708210601F8408800103000010A0 +S315400145308210601080A0800102800005901561F014 +S315400145407FFFB51690102012901561F0C024A16826 +S31540014550941461607FFFF4D992100008C404A168E5 +S31540014560030000708210601F840880010300001060 +S315400145708210601080A080010280000401000000CA +S315400145807FFFB50690102012C024A168901561F0F6 +S315400145909215E1B87FFFF4C994146160C204A16821 +S315400145A08330600E8208600380A0600202800005AD +S315400145B01103C0007FFFB4F9901020121103C0000F +S315400145C07FFFF70031100080B0162228C024A16871 +S315400145D010800008BA1020007FFFB4F0901020121E +S315400145E0BA07600180A7600602800024B006201841 +S315400145F0832F60030910008088112218912F6005CE +S31540014600932F6001902200019202401D9001000803 +S315400146109202600115100124932A60039412A1604D +S315400146207FFFF4A692010009C4060000C2040000FF +S3154001463080A0800112BFFFE907100124C4062004AF +S315400146408610E160C200E00480A0800112BFFFE352 +S315400146500910008088112168C201000080A0600015 +S3154001466012BFFFDE01000000BA07600180A76006A5 +S3154001467012BFFFE0B006201811100080941461604B +S31540014680901222A87FFFF48D920220080310008029 +S3154001469082106218C40060A0C204616080A08001DB +S315400146A00280057A071000807FFFB4BC901020126B +S315400146B0C024A1681110008094146160901222C038 +S315400146C07FFFF47E9202200809100080C2046160D7 +S315400146D088112218C40120B880A080012280055D7E +S315400146E0C40120BC7FFFB4AD90102012C024A16844 +S315400146F01110008094146160901222D87FFFF46FEC +S31540014700920220080310008082106218C40060D013 +S31540014710C204616080A080010280053E07100080CE +S315400147207FFFB49E90102012C024A1681110008012 +S3154001473094146160901222F07FFFF4609202200887 +S3154001474009100080C204616088112218C40120E862 +S3154001475080A0800122800521C40120EC7FFFB48F17 +S3154001476090102012C024A168111000809414616039 +S31540014770901223087FFFF451920220080310008013 +S3154001478082106218C4006100C204616080A0800189 +S3154001479002800502071000807FFFB480901020122E +S315400147A0C024A168111010007FFFF53413100000DA +S315400147B00310300080A20001128003B7031000806D +S315400147C0C200616880A06000128003B3010000004E +S315400147D0111FE000131000007FFFF43D9414616047 +S315400147E0C4046160031FFC0080A08001228004E3B1 +S315400147F0C20420047FFFB4699010201B111FE00002 +S31540014800133000007FFFF43294146160C404616088 +S31540014810033FFC0080A08001228004D0C204200412 +S315400148207FFFB45E9010201C1110000092102010E2 +S315400148307FFFF4279414616003000070C404A168EB +S31540014840840880010300002080A0800102800004CA +S31540014850010000007FFFB4519010201DC024A168C3 +S3154001486011002000130FC0007FFFF41994146160FA +S31540014870C4046160030E000080A08001228004AF61 +S31540014880C20420047FFFB4459010201E111FDFFF94 +S3154001489013100000901223FF7FFFF40D9414616002 +S315400148A0C40461600311FFFF821063FF80A0800191 +S315400148B022800499C40420047FFFB4389010201F3D +S315400148C0111FD000130FF0007FFFF40194146160B3 +S315400148D0C40461600311FC8080A0800122800486AB +S315400148E0C20420047FFFB42D90102021111FDFFF49 +S315400148F094146160901223FF7FFFF3F59210000834 +S31540014900C40461600313FBFF821063FF80A0800132 +S315400149102280046FC40420047FFFB420901020201D +S315400149207FFFF6281103C0009007BFC8C024A168C5 +S315400149307FFFF3F692146160C4046160C207BFC889 +S3154001494080A0800122800459C40420047FFFB4134F +S315400149509010201309100080921461607FFFF3EBE1 +S31540014960901121C005100080C200A1C0C40461603D +S3154001497080A0800102800442071000807FFFB407B7 +S31540014980901020139016E1D87FFFF3E092146160F6 +S31540014990C4046160C206E1D880A080010280042D72 +S315400149A0091000807FFFB3FD901020139016A1D00F +S315400149B07FFFF3D692146160C4046160C20721F897 +S315400149C080A0800122800413C40420047FFFB3F336 +S315400149D090102013C024A168901561F07FFFF3CB9E +S315400149E092146160C4046160C20721F880A080010D +S315400149F0228003F8C40420047FFFB3E890102013FB +S31540014A00C024A1689014E1E07FFFF3C09214616075 +S31540014A10C204E1E0C404616080A08001228003E415 +S31540014A20C20660047FFFB3DD9010201305100C0011 +S31540014A30861020009010001492146160C43FBFF8A4 +S31540014A4005300F78070C00088610E0017FFFF3AFB1 +S31540014A50C43FBFF0C40461600310040080A080011C +S31540014A60228003CBC20420047FFFB3CC90102013D5 +S31540014A70A607BFF0921461607FFFF3A49010001364 +S31540014A80C20721F8C404616080A08001028003B09E +S31540014A90051000807FFFB3C1901020139015E1B837 +S31540014AA07FFFF39A92146160C204A1688330600E5D +S31540014AB08208600380A060020280000401000000B9 +S31540014AC07FFFB3B690102013C024A1687FFFF47F07 +S31540014AD01111F2000310E80080A20001128002EBDE +S31540014AE003100080C200616880A06000128002E766 +S31540014AF0010000007FFFF5B3111000001101F58997 +S31540014B007FFFF472901221E20308E96480A200015A +S31540014B10128002DB01000000C204A16880A060008F +S31540014B20128002D7010000007FFFF4681112A2082B +S31540014B300311410080A20001128002CE0100000053 +S31540014B40C204A16880A06000128002CA0100000070 +S31540014B507FFFF59C11001000901000149215E1B8EA +S31540014B607FFFF35194146160C404616003100C002B +S31540014B7080A080012280036EC20420047FFFB38798 +S31540014B80901020149015E1B8921000137FFFF34B5B +S31540014B9094146160C40461600320000080A0800118 +S31540014BA02280035BC20420047FFFB37C9010201453 +S31540014BB07FFFF38E90102001030FE00080A20001D9 +S31540014BC0128002A901000000C204A16880A0600011 +S31540014BD0128002A5010000007FFFF37C90102001A6 +S31540014BE0030FFC0080A200010280034280A2600004 +S31540014BF07FFFB36A901020147FFFF57211101000E9 +S31540014C00D41EE1D87FFFF3FFD01DE1B8C206A1D083 +S31540014C10D024616080A040080280032BD224200466 +S31540014C207FFFB35E901020227FFFF56611100000D2 +S31540014C30050FFC00861020009010001492100013FE +S31540014C40C43FBFF8050F2800070400808610E0F036 +S31540014C50941461607FFFF314C43FBFF0C4046160E4 +S31540014C60030FFC0080A0800122800313C2042004AC +S31540014C707FFFB34A901020157FFFF55211200000A7 +S31540014C80050FFC00861020009010001492100013AE +S31540014C90C43FBFF805001400070000408610E0013C +S31540014CA0941461607FFFF300C43FBFF0C4046160A8 +S31540014CB0030FFC0080A08001228002FBC204200475 +S31540014CC07FFFB336901020157FFFF53E113000006F +S31540014CD0052FFC008610200090100014921000133E +S31540014CE0C43FBFF805201400070000408610E001CC +S31540014CF0941461607FFFF2ECC43FBFF0C40461606D +S31540014D00032FFC0080A08001228002E3C20420041C +S31540014D107FFFB322901020157FFFF52A1110000066 +S31540014D20050FFC0086102000901000149215A1C8B2 +S31540014D30C43FBFF87FFFF2DC94146160C404616034 +S31540014D40C205A1C880A08001228002CCC4042004EF +S31540014D507FFFB312901020157FFFF51A1120000036 +S31540014D60050FFC0086102000901000149215A1C872 +S31540014D70C43FBFF805001400070000408610E0015B +S31540014D80941461607FFFF2C8C43FBFF0C404616000 +S31540014D90C205A1C880A08001228002B1C4042004BA +S31540014DA07FFFB2FE901020157FFFF50611300000FF +S31540014DB0052FFC0086102000901000149215A1C802 +S31540014DC0C43FBFF805201400070000408610E001EB +S31540014DD0941461607FFFF2B4C43FBFF0C205A1C81D +S31540014DE0C404616080A0800102800296091000809F +S31540014DF07FFFB2EA901020157FFFF4F211100000F8 +S31540014E00050FFC008610200190100014921000132B +S31540014E10C43FBFF80510000086102001941461605C +S31540014E207FFFF2A6C43FBFF0C404616003100000D7 +S31540014E3080A080012280027FC20420047FFFB2D776 +S31540014E40901020157FFFF4DF112000009010001410 +S31540014E50921000137FFFF29994146160C40461605B +S31540014E600310000080A080012280026EC20420044B +S31540014E707FFFB2CA901020157FFFF4D21130000097 +S31540014E80052FFC008610200190100014921000138B +S31540014E90C43FBFF87FFFF28994146160C404616026 +S31540014EA00330000080A080012280025AC2042004FF +S31540014EB07FFFB2BA901020157FFFF4C21110000097 +S31540014EC0050FFEAE071CD2E88410A1548610E011EE +S31540014ED09010001492100013C43FBFF8050FFC0454 +S31540014EE0072F26158410A0128610E23194146160B2 +S31540014EF07FFFF280C43FBFF0C4046160030FFEA789 +S31540014F008210629680A080012280023CC404200463 +S31540014F107FFFB2A2901020157FFFF4AA1120000056 +S31540014F2090100014921000137FFFF2729414616086 +S31540014F30C4046160030FFEA78210629680A08001BF +S31540014F4022800228C40420047FFFB29490102015C9 +S31540014F507FFFF49C11300000052FFC04072F261516 +S31540014F608410A0128610E2319010001492100013A2 +S31540014F70C43FBFF07FFFF25F94146160C404616077 +S31540014F80032FFEA78210629680A080012280020F25 +S31540014F90C40420047FFFB281901020157FFFF4895D +S31540014FA011100000051038008610200090100014E2 +S31540014FB092100013C43FBFF8051010008610200060 +S31540014FC0941461607FFFF24BC43FBFF0C40461603B +S31540014FD00310240080A08001228001F8C20420042D +S31540014FE07FFFB26E901020157FFFF47611200000EE +S31540014FF090100014921000137FFFF23E94146160EA +S31540015000C40461600310240080A08001228001E76E +S31540015010C20420047FFFB261901020157FFFF4691E +S315400150201130000090100014921000137FFFF231EE +S3154001503094146160C40461600310240080A080015F +S31540015040228001D6C20420047FFFB254901020155D +S315400150507FFFF45C1110000011002000130FE000E7 +S315400150607FFFF3109212600180A22000128001C8D6 +S31540015070010000007FFFF4531120000011002000C1 +S31540015080130FE0007FFFF3079212600180A2200018 +S31540015090128001BC010000007FFFF44A113000007C +S315400150A011002000130FE0007FFFF2FE9212600113 +S315400150B080A22000128001B0010000007FFFF44170 +S315400150C011100000050FFC008610200090100014FE +S315400150D0921461607FFFF20DC43FBFF8C404616062 +S315400150E0C207BFF880A080012280019AC40420042F +S315400150F07FFFB22A901020157FFFF4321120000065 +S31540015100901000147FFFF20192146160C404616043 +S31540015110C207BFF880A0800122800185C404200413 +S315400151207FFFB21E901020157FFFF426113000003C +S31540015130901000147FFFF1F592146160C404616020 +S31540015140C207BFF880A0800122800170C4042004F8 +S315400151507FFFB212901020157FFFF41A1110000044 +S315400151602B0FDFFF901563FF7FFFF2D8AA1563FF70 +S3154001517080A2001502800004010000007FFFB207F3 +S31540015180901020157FFFF40F11200000110FDFFF53 +S315400151907FFFF2CE901223FF030FE00080A20001B1 +S315400151A002800004010000007FFFB1FC9010201531 +S315400151B07FFFF404113000002B0FDFFF901563FFD2 +S315400151C07FFFF2C2AA1563FF80A200150280000488 +S315400151D0010000007FFFB1F1901020157FFFF3F928 +S315400151E0901020007FFFF2C190146160C404616099 +S315400151F0032FFE0080A0800122800140C2042004CA +S315400152007FFFB1E6901020162B1001247FFFF2C1DB +S3154001521090156168C4056168032FF00080A0800184 +S3154001522002800004010000007FFFB1DC90102016CF +S315400152307FFFF2C290156168C4056168030FE00003 +S3154001524080A0800102800004010000007FFFB1D3ED +S31540015250901020167FFFF2C990146160C40461600A +S31540015260030FFBF7821063F080A080012280011CAE +S31540015270C40420047FFFB1C9901020169215E1B8ED +S31540015280901000147FFFF19B94146160C204A168E1 +S315400152908330600E8208600780A0600202800005AC +S315400152A0031000807FFFB1BD9010201703100080CE +S315400152B0C400617003100046E40060F8821060F893 +S315400152C080A0400202800005031000807FFFB1B339 +S315400152D09010201803100080C200617480A0401213 +S315400152E002800005031000807FFFB1AC90102018AA +S315400152F003100080C200617880A06000128000F433 +S315400153000100000003100080C200617C80A06000A3 +S31540015310128000EC010000007FFFF14E0100000009 +S3154001532080A220010280052D01000000050C4029C4 +S315400153300723CD1B8410A0068610E09B9010001415 +S31540015340C027BFF0C027BFF4C43FBFF82910008172 +S315400153507FFFF1962B100082AA1560A0A4102000B1 +S31540015360A81520A0AC146160BA1000151080000881 +S31540015370AE1000107FFFB18990102019A404A0043B +S3154001538080A4A400228000172B100084C2050012BD +S31540015390C224C000901000137FFFF18792100016BF +S315400153A0832CA001C4040000C605400180A0C002B0 +S315400153B012BFFFF182074001C4006004C205E00448 +S315400153C080A0800112BFFFEC01000000A404A004EC +S315400153D080A4A40032BFFFEFC20500122B10008447 +S315400153E0A2146160AA1560A0A4102000AE10001599 +S315400153F010800008AC1000107FFFB1689010201A91 +S31540015400A404A00880A4A4000280001501000000A5 +S31540015410C2050012C224C000921000117FFFF13B69 +S3154001542090100013C4054012C204000080A0800100 +S3154001543012BFFFF28205C012C4006004C205A00477 +S3154001544080A0800112BFFFED01000000A404A00866 +S3154001545080A4A40032BFFFF0C205001281C7E00854 +S3154001546081E800007FFFB14D9010200F30BFF69AC2 +S315400154707FFFB14A9010200F10BFF68C110048EA09 +S315400154807FFFB1469010200F10BFF646D01DE1B800 +S315400154907FFFB1429010200F10BFF64FD01CE1E0C4 +S315400154A07FFFB13E9010200F10BFF608D41CE1E0FB +S315400154B07FFFB13A9010200F10BFF5F411151BE88C +S315400154C07FFFB1369010200F10BFF5E011151BC0BC +S315400154D07FFFB1329010200F10BFF5C4901020000D +S315400154E07FFFB12E9010200F10BFF5B011351BC0B4 +S315400154F07FFFB12A9010200F10BFF57AD01CE1E052 +S315400155007FFFB1269010200F10BFF583D01D61F0AB +S315400155107FFFB1229010200F10BFF565D01DE1B875 +S315400155207FFFB11E9010200F10BFF53FD41D61F0D3 +S315400155307FFFB11A9010200F10BFF52ED41CE1E069 +S315400155407FFFB1169010200F10BFF51A11151BE8F9 +S315400155507FFFB1129010200F10BFF50611151BC029 +S315400155607FFFB10E9010200F10BFF4DA11351BC02A +S315400155707FFFB10A9010200F10BFF4E69010200073 +S315400155807FFFB1069010200E30BFF4BF7FFFB103FD +S315400155909010200E10BFF4B11128C6AF7FFFB0FFA7 +S315400155A09010200E10BFF4A11108C6AF7FFFB0FBCB +S315400155B09010200E10BFF4911128C6AF7FFFB0F7AF +S315400155C09010200E10BFF4822108C6AF7FFFB0F3C2 +S315400155D09010200D30BFF4517FFFB0F09010200D98 +S315400155E010BFF444371000807FFFB0EC9010200CC0 +S315400155F010BFF3A2271000807FFFB0E89010200B68 +S3154001560030BFF34F7FFFB0E59010201110BFFA8FE6 +S31540015610110020007FFFB0E19010201110BFFA6DFC +S31540015620110020007FFFB0DD9010201110BFFA5C01 +S31540015630111E607E7FFFB0D99010201110BFFA4B2A +S315400156401111BBFE7FFFB0D59010201010BFF85E40 +S31540015650091000807FFFB0D19010201010BFF84F85 +S31540015660111000007FFFB0CD9010201430BFFD5BBC +S315400156707FFFB0CA9010202330BFFD367FFFB0C7F1 +S315400156809010202330BFFD297FFFB0C49010201316 +S3154001569030BFFD197FFFB0C19010201210BFFC4EE4 +S315400156A0111FE00012BFF30A01000000C204A16805 +S315400156B080A0600002BFF3080100000030BFF30480 +S315400156C07FFFB0B69010201830BFFF147FFFB0B3F4 +S315400156D09010201810BFFF0D031000800303FF1226 +S315400156E08210604A80A0800112BFFEE39215E1B8A4 +S315400156F010BFFEE59010001480A0600002BFFEC4FA +S315400157002B10012430BFFEBFC207BFFC80A0800121 +S3154001571012BFFE9001000000C204A16880A0600093 +S3154001572002BFFE8E0100000030BFFE8AC207BFFCE9 +S3154001573080A0800112BFFE7B01000000C204A16867 +S3154001574080A0600002BFFE790100000030BFFE75F7 +S31540015750C207BFFC80A0800112BFFE6601000000A7 +S31540015760C204A16880A0600002BFFE64010000007F +S3154001577030BFFE607FFFB0899010201530BFFE50CC +S315400157807FFFB0869010201530BFFE447FFFB08367 +S315400157909010201530BFFE3880A0600002BFFE2D5C +S315400157A00100000030BFFE2980A0600002BFFE1C40 +S315400157B00100000030BFFE1880A0600002BFFE0B52 +S315400157C00100000030BFFE07032C1B3482106030FD +S315400157D080A0800112BFFDF00100000030BFFDF046 +S315400157E0032C1B348210603080A0800112BFFDD78C +S315400157F00100000030BFFDD7032C1B348210602FFF +S3154001580080A0800112BFFDC30100000030BFFDC36F +S3154001581080A0600312BFFDA70100000030BFFDA7B5 +S3154001582080A0600312BFFD930100000030BFFD93CD +S3154001583080A0600212BFFD820100000030BFFD82E0 +S31540015840C4042004881121C8C201200480A080011B +S3154001585012BFFD680100000030BFFD6807100080DF +S315400158608610E1C8C200E00480A0800112BFFD4D50 +S315400158700100000030BFFD4D09100080881121C88C +S31540015880C201200480A0800112BFFD320100000048 +S3154001589030BFFD3280A0600112BFFD1E0100000035 +S315400158A030BFFD1E80A0600112BFFD060100000051 +S315400158B030BFFD0680A0600002BFFCF00100000081 +S315400158C030BFFCEC071000808610E1D0C200E00436 +S315400158D080A0400912BFFCD301000000C204A168A8 +S315400158E080A0600002BFFCD10100000030BFFCCDAA +S315400158F012BFFCC001000000C204A16880A0600084 +S3154001590002BFFCBE0100000030BFFCBA80A06000AF +S3154001591012BFFCA601000000C204A16880A060007D +S3154001592002BFFCA40100000030BFFCA080A06000C3 +S3154001593012BFFC9301000000C204A16880A0600070 +S3154001594002BFFC929015E1B830BFFC8D8410A1F8DE +S31540015950C200A004C404200480A0800112BFFC4EF2 +S3154001596001000000C404A168030000708210601F9A +S3154001597084088001030000108210601080A080011D +S3154001598012BFFC459015E1B830BFFC4680A06000CF +S3154001599012BFFC3601000000C204A16880A060006D +S315400159A002BFFC35A607BFF030BFFC30C40420045B +S315400159B080A0800112BFFC1C03100080C2006168F8 +S315400159C080A0600002BFFC1B05100C0030BFFC1616 +S315400159D009100080881121F8C201200480A08001AD +S315400159E012BFFC0603100080C4006168030000700A +S315400159F08210601F8408800103000010821060102D +S31540015A0080A0800112BFFBFD0100000030BFFBFDFD +S31540015A10071000808610E1F8C200E00480A08001F2 +S31540015A2012BFFBEB01000000C404A1680300007033 +S31540015A308210601F840880010300001082106010EC +S31540015A4080A0800112BFFBE20100000030BFFBE2F3 +S31540015A50C4042004881121D8C201200480A08001F9 +S31540015A6012BFFBD101000000C204A16880A0600002 +S31540015A7002BFFBD09016A1D030BFFBCBC40420049B +S31540015A808610E1C0C200E00480A0800112BFFBBCC9 +S31540015A9001000000C204A16880A0600002BFFBBBF8 +S31540015AA09016E1D830BFFBB6C207BFCC80A08001BB +S31540015AB012BFFBA703100080C200616880A060008E +S31540015AC002BFFBA60910008030BFFBA103300000D6 +S31540015AD08210602080A0800112BFFB90010000006F +S31540015AE0C204A16880A0600002BFFB8E01000000D5 +S31540015AF030BFFB8A80A0600012BFFB7B0100000023 +S31540015B00C204A16880A0600002BFFB7A111FDFFFBB +S31540015B1030BFFB750338000080A0800112BFFB67D0 +S31540015B2001000000C204A16880A0600002BFFB66BC +S31540015B30111FD00030BFFB6180A0600012BFFB5235 +S31540015B4003100080C200616880A0600002BFFB5163 +S31540015B50111FDFFF30BFFB4C80A0600012BFFB313D +S31540015B6001000000C204A16880A0600002BFFB30B2 +S31540015B701110000030BFFB2B80A0600012BFFB1E3E +S31540015B8001000000C204A16880A0600002BFFB1DA5 +S31540015B90111FE00030BFFB18C20420048610E21832 +S31540015BA0C400E10480A0800112BFFAFC031000800A +S31540015BB0C4006168030000708210601F8408800180 +S31540015BC0030000108210600880A0800112BFFAF322 +S31540015BD00100000030BFFAF3C204200480A0800116 +S31540015BE012BFFADF03100080C40061680300007031 +S31540015BF08210601F84088001030000108210600437 +S31540015C0080A0800112BFFAD60100000030BFFAD64B +S31540015C10C20420048610E218C400E0D480A08001AA +S31540015C2012BFFAC003100080C4006168030000700F +S31540015C308210601F840880010300001082106008F2 +S31540015C4080A0800112BFFAB70100000030BFFAB749 +S31540015C50C204200480A0800112BFFAA30310008071 +S31540015C60C4006168030000708210601F84088001CF +S31540015C70030000108210600880A0800112BFFA9ACA +S31540015C800100000030BFFA9AC20420048610E218CF +S31540015C90C400E0A480A0800112BFFA840100000084 +S31540015CA0C404A168030000708210601F840880014B +S31540015CB0030000108210600480A0800112BFFA7BAD +S31540015CC00100000030BFFA7BC206600480A080015B +S31540015CD012BFF9CD01000000C204A16880A0600096 +S31540015CE002BFF9CC9014E1E030BFF9C7C2066004A7 +S31540015CF080A0800112BFF9B901000000C204A16869 +S31540015D0080A0600002BFF9B89014E1E030BFF9B35A +S31540015D10C206600480A0800112BFF9A501000000FF +S31540015D20C204A16880A0600002BFF9A49014E1E01A +S31540015D3030BFF99FC206600480A0800112BFF9916D +S31540015D4003100080C200616880A0600002BFF99024 +S31540015D509014E1E030BFF98B071000808610E1F81E +S31540015D60C200E00480A0800112BFF96D010000006D +S31540015D70C404A168030000708210601F840880017A +S31540015D80030000108210601080A0800112BFF964E8 +S31540015D909015A1C810BFF9669215E1B8C206600414 +S31540015DA080A0800112BFF95303100080C2006168D0 +S31540015DB080A0600002BFF9529015A1C830BFF94DCD +S31540015DC009100080881121F8C201200480A08001B9 +S31540015DD012BFF93C01000000C404A1680300007031 +S31540015DE08210601F84088001030000108210601039 +S31540015DF080A0800112BFF9330100000030BFF933A2 +S31540015E00071000808610E1C8C200E00480A080012E +S31540015E1012BFF92103100080C200616880A06000B2 +S31540015E2002BFF9209015A1C830BFF91B09100080A7 +S31540015E30881121F8C201200480A0800112BFF8FD1B +S31540015E4001000000C404A168030000708210601FB5 +S31540015E5084088001030000108210601080A0800138 +S31540015E6012BFF8F49010001D10BFF8F69215E1B874 +S31540015E70C206600480A0800112BFF8E303100080CF +S31540015E80C200616880A0600002BFF8E29010001D68 +S31540015E9030BFF8DD071000808610E1F8C200E0044B +S31540015EA080A0800112BFF8CC01000000C404A168A3 +S31540015EB0030000708210601F8408800103000010F7 +S31540015EC08210601080A0800112BFF8C3010000005B +S31540015ED030BFF8C3C207BFD480A0800112BFF8B259 +S31540015EE003100080C200616880A0600002BFF8B163 +S31540015EF00310008030BFF8AC09100080881121F8EA +S31540015F00C201200480A0800112BFF88E010000006A +S31540015F10C404A168030000708210601F84088001D8 +S31540015F20030000108210601080A0800112BFF88526 +S31540015F309010001410BFF8879215E1B8C2066004AC +S31540015F4080A0800112BFF87401000000C204A1685C +S31540015F5080A0600002BFF8739010001430BFF86E45 +S31540015F60071000808610E1D8C200E00480A08001BD +S31540015F7012BFF85E01000000C204A16880A0600063 +S31540015F8002BFF85D9010001430BFF8588810E1C088 +S31540015F90C201200480A0800112BFF849031000808D +S31540015FA0C200616880A0600002BFF84890100014EA +S31540015FB030BFF84303003A9A8210630F80A08001F4 +S31540015FC012BFF7BD03100080C200616880A0600067 +S31540015FD002BFF7BC050006AF30BFF7B780A060002F +S31540015FE012BFF78103100080C4006168030000708E +S31540015FF08210601F8408800103000010821060082F +S3154001600080A0800112BFF7780500400010BFF77AE3 +S315400160100700C00009100080881121F8C201200440 +S3154001602080A0800112BFF6EF01000000C404A16800 +S31540016030030000708210601F840880010300001075 +S315400160408210601080A0800112BFF6E69014E1E054 +S3154001605010BFF6E89215E1B8C206600480A080013F +S3154001606012BFF6D501000000C204A16880A06000FD +S3154001607002BFF6D49014E1E030BFF6CFC206600409 +S3154001608080A0800112BFF6C101000000C204A168D0 +S3154001609080A0600002BFF6C09014E1E030BFF6BBBD +S315400160A0C206600480A0800112BFF6AD0100000067 +S315400160B0C204A16880A0600002BFF6AC9014E1E082 +S315400160C030BFF6A7C206600480A0800112BFF699D0 +S315400160D003100080C200616880A0600002BFF6988C +S315400160E09014E1E030BFF693071000808610E1F886 +S315400160F0C200E00480A0800112BFF67401000000D6 +S31540016100C404A168030000708210601F84088001E6 +S31540016110030000108210601080A0800112BFF66B50 +S315400161200100000030BFF66BC206600480A080010A +S3154001613012BFF65B03100080C200616880A0600058 +S3154001614002BFF65A9015A1C830BFF6550910008016 +S31540016150881121F8C201200480A0800112BFF644B3 +S3154001616001000000C404A168030000708210601F92 +S3154001617084088001030000108210601080A0800115 +S3154001618012BFF63B0100000030BFF63B071000800E +S315400161908610E1D8C200E00480A0800112BFF62932 +S315400161A001000000C204A16880A0600002BFF62879 +S315400161B09015A1C830BFF623071000808610E1D0A4 +S315400161C0C200E00480A0800112BFF61203100080D5 +S315400161D0C200616880A0600002BFF611091000800C +S315400161E030BFF60CC206600480A0800112BFF5E004 +S315400161F001000000C204A16880A0600002BFF5DF73 +S315400162009010001D30BFF5DA8810E1C0C2012004AC +S3154001621080A0800112BFF5CB03100080C2006168E7 +S3154001622080A0600002BFF5CA9010001D30BFF5C5C1 +S31540016230071000808610E1F8C200E00480A08001CA +S3154001624012BFF5B201000000C404A168030000704A +S315400162508210601F840880010300001082106010C4 +S3154001626080A0800112BFF5A90910008030BFF5AAB0 +S31540016270C207BFD480A0800112BFF59803100080E9 +S31540016280C200616880A0600002BFF59703100080DC +S3154001629030BFF59209100080881121F8C20120040F +S315400162A080A0800112BFF57401000000C404A168FA +S315400162B0030000708210601F8408800103000010F3 +S315400162C08210601080A0800112BFF56B90100014FF +S315400162D010BFF56D9215E1B8C206600480A0800139 +S315400162E012BFF55A01000000C204A16880A06000F7 +S315400162F002BFF5599010001430BFF554C207BFCC08 +S3154001630080A0800112BFF54603100080C20061687B +S3154001631080A0600002BFF5459010001430BFF540E3 +S31540016320071000808610E1D0C200E00480A0800101 +S3154001633012BFF52F03100080C4006168030000708E +S315400163408210601F840880010300001082106002E1 +S3154001635080A0800112BFF5260100000030BFF5265E +S3154001636012BFF50001000000C204A16880A06000D0 +S3154001637002BFF4FF1110000030BFF4FA12BFF4EE71 +S3154001638001000000C204A16880A0600002BFF4EDD4 +S315400163901130000030BFF4E812BFF4DC0100000008 +S315400163A0C204A16880A0600002BFF4DB1130000086 +S315400163B030BFF4D612BFF4CA03100080C200616830 +S315400163C080A0600002BFF4C91110000030BFF4C4C0 +S315400163D0C20420048610E320C400E17C80A0800131 +S315400163E012BFF4B301000000C404A16803000070A9 +S315400163F08210601F8408800103000010821060042F +S3154001640080A0800112BFF4AA0100000030BFF4AAA7 +S31540016410C204200480A0800112BFF497010000004D +S31540016420C404A168030000708210601F84088001C3 +S31540016430030000108210600480A0800112BFF48E18 +S315400164401110008110BFF49094146160C2042004BD +S315400164508610E320C400E14C80A0800112BFF4788D +S3154001646001000000C404A168030000708210601F8F +S3154001647084088001030000108210600880A080011A +S3154001648012BFF46F1110008110BFF4719414616052 +S315400164907FFFAD429010201010BFF45E11100081B5 +S315400164A0C206600480A0800112BFF3B9010000005A +S315400164B0C204A16880A0600002BFF3B89014E1E075 +S315400164C030BFF3B3C206600480A0800112BFF3A5BA +S315400164D001000000C204A16880A0600002BFF3A4CD +S315400164E09014E1E030BFF39FC206600480A08001B2 +S315400164F012BFF39101000000C204A16880A06000B0 +S3154001650002BFF3909014E1E030BFF38BC206600402 +S3154001651080A0800112BFF37D03100080C200616834 +S3154001652080A0600002BFF37C9014E1E030BFF377B6 +S3154001653009100080881121F8C201200480A0800141 +S3154001654012BFF35A03100080C40061680300007053 +S315400165508210601F840880010300001082106010C1 +S3154001656080A0800112BFF3519015A1C810BFF3530B +S315400165709215E1B8071000808610E1F8C200E004E8 +S3154001658080A0800112BFF33B0100000030BFF33B06 +S3154001659009100080881121D0C201200480A0800109 +S315400165A012BFF31801000000C204A16880A0600078 +S315400165B002BFF3179016A1D030BFF3120710008027 +S315400165C08610E1D8C200E00480A0800112BFF30228 +S315400165D001000000C204A16880A0600002BFF3016F +S315400165E09016A1D030BFF2FC09100080881121C855 +S315400165F0C201200480A0800112BFF2EC010000001C +S31540016600C204A16880A0600002BFF2EB9016E1D8F7 +S3154001661030BFF2E6071000808610E1C8C200E004F0 +S3154001662080A0800112BFF2D603100080C2006168CB +S3154001663080A0600002BFF2D59015A1C830BFF2D04C +S3154001664009100080881121F8C201200480A0800130 +S3154001665012BFF2B10100000030BFF2B1C2066004C0 +S3154001666080A0800112BFF29001000000C204A1681F +S3154001667080A0600002BFF28F9010001D30BFF28AE9 +S31540016680071000808610E1C8C200E00480A08001A6 +S3154001669012BFF27A01000000C204A16880A0600026 +S315400166A002BFF2799010001D30BFF274C207BFFCE1 +S315400166B080A0800112BFF26603100080C2006168AB +S315400166C080A0600002BFF2659010001D30BFF260ED +S315400166D0881721F8C201200480A0800112BFF2422E +S315400166E00100000030BFF242C4042004C206600427 +S315400166F080A0800112BFF21E01000000C204A16801 +S3154001670080A0600002BFF21D9010001430BFF21845 +S315400167108615A1C8C200E00480A0800112BFF2091B +S3154001672001000000C204A16880A0600002BFF20817 +S315400167309010001430BFF203C2042004C407BFFC0A +S3154001674080A0800112BFF1F303100080C20061688E +S3154001675080A0600002BFF1F22D10008030BFF1ED44 +S3154001676080A2400112BFEFA201000000C204A1684D +S3154001677080A0600002BFEFA11111FC0030BFEF9C69 +S3154001678080A2400112BFEF9003100080C2006168F1 +S3154001679080A0600022BFEF8F113C02AF30BFEF8A6D +S315400167A012BFEEDB01000000C204A16880A06000B8 +S315400167B002BFEED90100000030BFEED512BFEECCCC +S315400167C001000000C204A16880A0600002BFEECAB9 +S315400167D00100000030BFEEC67FFFAC70901020195B +S315400167E010BFFAD4050C402981D8200081C3E008A6 +S315400167F00100000081D8200082102400C0A043007F +S3154001680081C3E00801000000853220109132201832 +S31540016810900A200F8408A00380A00008826020000F +S3154001682081C3E008900880019DE3BF887FFFEB7A32 +S315400168309010200C808A200812800004010000007C +S3154001684081C7E00891E820007FFFAC4D9010200EF3 +S31540016850C2800320853060188088A00F028000DD49 +S315400168602F100123833060108208600380A06002EC +S31540016870028000E0C225E0C880A06003028000FFDC +S3154001688080A06001028000EC2910010C2310010C4C +S315400168902110010C2B10010C2710010C2510010CA5 +S315400168A081D8200081D8200082102400C0A0430056 +S315400168B0031000A1051000A0821060008410A00002 +S315400168C0873060048610E00188100003C878800094 +S315400168D08800A004C67900008610200AC6784000C8 +S315400168E0C8046000C60420041B008000190800008B +S315400168F09A13600A993B0004980B0003992B2002D6 +S3154001690098030001DA7B00001B010000171000000C +S315400169109813608E973AC004960AC003972AE002FC +S315400169209602C001D87AC000171C00001901C000A8 +S31540016930893AC0049813208E860900038728E0020D +S315400169408600C001D878C0003B1000A28200600CCE +S31540016950BA176000873760048610E001C6784000A8 +S315400169608213601E86076008C278C000821020002C +S315400169708807600C86100001C67900002D1000A220 +S315400169809A076004AC15A1008735A004B81000161B +S315400169908610E001C67B4000B405A008C27E800097 +S315400169A01B1000C0B605A004861360008330E004C6 +S315400169B09810601AD87EC000C02360001B048D1554 +S315400169C09A136278DA20E004DA05E0C83310010050 +S315400169D09A03600CB21660008605A00CB010200028 +S315400169E0C627BFF8DA27BFFC901000189210200383 +S315400169F0C227BFF0C427BFEC40000AB0C827BFF486 +S31540016A00DA07BFFC992A000DC607BFF8980300199B +S31540016A10993320049813201ED878C000B00620016F +S31540016A208600E00480A62008C207BFF0C407BFEC79 +S31540016A3012BFFFECC807BFF417100020DE05200C7B +S31540016A408612E168C822E16809100020D005600875 +S31540016A50D804A014DA04E010D2042004D40460005F +S31540016A60960BE001972AC008C6212160880A600377 +S31540016A708929000A8812C004960B2002972AC00D64 +S31540016A809611000B8530A004D620E0209610600EAA +S31540016A90D620E0289608BFF0840B20018528800D7A +S31540016AA0841100028210601EC420E02CC420E01430 +S31540016AB0050100008410A01EC220E010C420E0049D +S31540016AC0F620E00CF420E018F620E024050076419B +S31540016AD0031000208410A1C082106000C420E00889 +S31540016AE0833060048210601EC220E01C82102100A7 +S31540016AF0D6A04320C4800320C280432084102001B5 +S31540016B0082102200C4A04320C68043208610200064 +S31540016B10C6A04320C4A0032081D820007FFFEABE3F +S31540016B2090102000913A200C808A20030280006553 +S31540016B3001000000C280032082102100C280432050 +S31540016B4082102200C2804320C80420048809200301 +S31540016B50C2046000C605200CC4056008D404A01414 +S31540016B60D604E010832900019808E0019A0AA001A1 +S31540016B70992B00029B2B400B981300019A13000D91 +S31540016B80C803400080A120000280000388136004EE +S31540016B9030800000D201000011048D159012227838 +S31540016BA080A2400812BFFFFB111000009E08E002C0 +S31540016BB0D00200009F2BC0029E13C001DE03C0001D +S31540016BC080A3C008228000428608E003308000008E +S31540016BD02310010C2110010CC025E0C82B10010C1B +S31540016BE02910010C2710010C10BFFF2E2510010C96 +S31540016BF02110010C2910010C2510010C2310010C48 +S31540016C008210203F2B10010C2710010CC2242004B6 +S31540016C10C224A014C225200C8210201AC22460006E +S31540016C2082102014C22560088210200E10BFFF1D5D +S31540016C30C224E0102510010C2310010C8210203FC4 +S31540016C402110010C2B10010C2710010CC225200C20 +S31540016C50C224A01482102019C22460008210207F11 +S31540016C60C224200482102013C22560088210200D00 +S31540016C7010BFFF0CC224E0102110010C2710010C9B +S31540016C802310010C8210200F2B10010C2910010C2E +S31540016C902510010CC224E010C22420048210201CBD +S31540016CA0C224600082102015C22560088210207F10 +S31540016CB0C225200C8210203F10BFFEFAC224A01428 +S31540016CC07FFFC4D30100000030BFFF9B8528C0026F +S31540016CD082108001C20040000321D95082106321F5 +S31540016CE0C2210000C401000080A08001028000038F +S31540016CF001000000308000008210000D05048D1552 +S31540016D008410A278072AF37B8610E301C438400039 +S31540016D10C4384000C203400080A0400902800003FD +S31540016D200100000030800000C4010000032AF37B0B +S31540016D308210630180A0800112BFFFFBC205E0C83B +S31540016D40940AA0038200600C972A800B84102001CC +S31540016D50AE13000B85288001B0102000EE25C0003F +S31540016D60C0A0022092102003C227BFF0C427BFEC67 +S31540016D70400009D290100018C207BFF0912A0001C5 +S31540016D80C606400880A0C01712800008C407BFECA1 +S31540016D90B006200180A6200802800005AE05C0028B +S31540016DA010BFFFF0EE25C00030800000C0A00220D9 +S31540016DB0AE102003B0102000852DE002C4058002EC +S31540016DC08608A06080A00003C227BFF0B04000182B +S31540016DD0C427BFEC9005FFFD400009B8921020037F +S31540016DE0C207BFF0C407BFEC872A000186064003ED +S31540016DF08730E0048610E01E8418C0028088BF9F59 +S31540016E0012800009AE05E00180A5E00B32BFFFEC20 +S31540016E10852DE00280A6200012800004D805200CB2 +S31540016E203080000030800000C8056008DA04200484 +S31540016E30C4046000C604A014C204E010980B2001EB +S31540016E409A0B6003892B0004852B40028608E002D9 +S31540016E50841100028328C001821080019FC0400036 +S31540016E600100000082102400C0A04300C0A00220FF +S31540016E708210200084072020C607200C8608E06087 +S31540016E8080A00003B80720048240000180A70002C9 +S31540016E9032BFFFFBC607200C80A06008228000039A +S31540016EA0C206C00030800000808860400280000435 +S31540016EB08088602032800003C2076008308000006D +S31540016EC08088602032800003C20680003080000046 +S31540016ED0808860201280000301000000308000009D +S31540016EE083480000842860808188A000010000005A +S31540016EF00100000001000000D8042004C80460001D +S31540016F00DA05200CC4056008C604A014C204E010CA +S31540016F10980B20039A0B6001892B0004852B4002B4 +S31540016F208608E001841100028328C0018410A00470 +S31540016F3082108001C20040009210200491D02002AC +S31540016F40010000007FFFE9B490102000913A200C27 +S31540016F50808A200312800005841020007FFFC42C04 +S31540016F60010000008410200082102200C4A04320AA +S31540016F7086102001C6A04320C4A043200310000070 +S31540016F80C4804380C4A043807FFFC48E90102000FC +S31540016F9081D8200030BFFE2B9DE3BFA040000822D0 +S31540016FA001000000808A21001280000401000000D7 +S31540016FB081C7E00891E820007FFFAA9423100120B1 +S31540016FC0912A20047FFFAA6E90022005A214600038 +S31540016FD0C204600480A060000280001A8210200072 +S31540016FE0A010200084044001C8044001C600A0044A +S31540016FF0C200A0089B39201F818360000100000068 +S3154001700001000000010000008479000380A0800196 +S3154001701002800004A00420017FFFAA609010200195 +S3154001702082040010820040108328600284044001DB +S31540017030C400A00480A0A00012BFFFEC840440015C +S3154001704023100120A2146138C204600480A06000AC +S315400170500280001982102000A01020008404400103 +S31540017060C8044001C600A004C200A00881802000D7 +S3154001707001000000010000000100000084710003CE +S3154001708080A0800102800004A00420017FFFAA4362 +S315400170909010200282040010820040108328600272 +S315400170A084044001C400A00480A0A00012BFFFEDEB +S315400170B084044001400008890100000080A22000AC +S315400170C012BFFFBC901020037FFFAA34B0102000EE +S315400170D081C7E00881E800009DE3BFA07FFFAA4B7E +S315400170E001000000912A20047FFFAA259002200476 +S315400170F0400007CF0100000080A221230280000446 +S31540017100010000007FFFAA2590102001400007C61C +S3154001711001000000808A21000280002923100120FD +S31540017120A2146180C204600880A060090280001533 +S3154001713082102000A010200084044001C6044001B2 +S31540017140C800A004C200A0088459000380A08001A1 +S3154001715002800004A00420017FFFAA1090102002A3 +S31540017160820400108200401083286002840440019A +S31540017170C400A00880A0A00912BFFFF18404400109 +S31540017180400007B80100000080A2200002800023D1 +S3154001719001000000400007B30100000080A220006A +S315400171A002800016010000004000079F0100000018 +S315400171B0808A2200128000040100000081C7E00895 +S315400171C091E82000400007F80100000080A220005D +S315400171D00280001A01000000400007F30100000090 +S315400171E080A2200012BFFFF6010000007FFFA9EB3D +S315400171F09010200430BFFFF27FFFA9E890102003D2 +S315400172004000078901000000808A220002BFFFEC8E +S315400172100100000030BFFFEC7FFFA9E09010200382 +S31540017220400007900100000080A2200012BFFFDF4E +S315400172300100000030BFFFF17FFFA9D89010200464 +S3154001724030BFFFE6000000009DE3BFA09410200080 +S315400172501110005C9012227C1310005C9212628025 +S315400172601710005C9612E2881910005C9813228C64 +S3154001727093C2000081C240001080019181C2C000CA +S3154001728081C300001080018E9402A0019402A001E6 +S3154001729080A2A0031280018A0100000087440000F9 +S315400172A08D30E00E8C89A00780A1A000028000C726 +S315400172B001000000AF30E00BAE0DE00780A5E00015 +S315400172C0128000C20100000080A1A0021280003598 +S315400172D00100000025100000E41C8000251000007C +S315400172E029100000A8152104A6100012AA100012A8 +S315400172F0AC100014A1802046A4100000AA10000082 +S3154001730001000000A180204EA810210001000000CC +S31540017310A18000000100000001000000E83CA0300F +S3154001732082A480131280016682A500161280016430 +S315400173300100000001000000010000008744000038 +S315400173408D30E00B8C89A0078CA1A0051280015CD1 +S31540017350A1800000010000000100000001000000C2 +S31540017360E81CA03082A500161280015582A5401264 +S31540017370A41000001280015201000000010000002B +S31540017380874400008D30E00B8C89A0078CA1A003B7 +S315400173901280014B010000001080008C01000000AA +S315400173A080A1A0011280002325100000E41C80006A +S315400173B02510000029100000A8152104A61000126E +S315400173C0AA100012AC100014A1802046A41000009F +S315400173D0AA10000001000000A180204EA810210043 +S315400173E001000000A1800000010000000100000032 +S315400173F001000000E83C800082A480131280013025 +S3154001740082A500161280012E010000000100000035 +S31540017410874400008D30E00B8C89A0078CA1A00227 +S315400174201280012701000000108000680100000061 +S3154001743080A1A00312800065A6100000A210200EB4 +S31540017440A1844000A6100000A1800000A814E0001D +S31540017450AB44000001000000AC14E0000100000054 +S31540017460AF44000080A5200012800115AA8D6E0050 +S3154001747080A540001280011280A5A0001280011053 +S31540017480AF35E00BAE0DE00780A5E0011280010C9F +S3154001749001000000A0100000A1844000A6100000D9 +S315400174A0A1800000E8180000AC100000AE100000FA +S315400174B0EC04C000EE04E00480A500161280010031 +S315400174C080A54017128000FE01000000A54400007F +S315400174D0A534A00BA40CA00780A4A001128000F83B +S315400174E001000000A0100000A1844000A610000089 +S315400174F0A1800000A210200AA1844000A41000002F +S31540017500A1800000E8180000AC100000AE10000099 +S31540017510EC04C012EE04E00480A50016128000E8D7 +S3154001752080A54017128000E601000000A544000036 +S31540017530A534A00BA40CA00780A4A002068000E0FD +S315400175400100000021100120A0142200EC1C0000C3 +S31540017550A0042008E81C0000A1844000A6100000F9 +S31540017560A1800000A210200EA1844000A4100010AA +S31540017570AC100000AE100000A18000000100000028 +S3154001758001000000EC3C8013AC100000AE1000007E +S31540017590E81CC01280A50016128000C980A54017BC +S315400175A0128000C701000000A5440000A534A00BCD +S315400175B0A40CA00780A4A004128000C10100000011 +S315400175C010800002010000008B4440008A09601FC0 +S315400175D080A160010280000A8C1000059DE3BFA0D6 +S315400175E08AA1600116BFFFFE0100000081E800008C +S315400175F08CA1A00116BFFFFE0100000001000000A2 +S3154001760001000000A023A080A02C20078E100010AE +S31540017610A3480000E2240000C2242004C43C200800 +S31540017620C83C2010CC3C2018F03C2020F43C2028BB +S31540017630F83C2030FC3C2038D03C2040D43C20480B +S31540017640D83C2050DC3C2058A5500000E424206062 +S315400176508010200882102001841020028610200309 +S31540017660881020048A1020058C1020068190000085 +S31540017670A42C601F818C80000100000001000000E5 +S3154001768001000000030040408210610184100000A7 +S3154001769086100000894440008809201F8610000496 +S315400176A0A010000284004002A210000284004002A1 +S315400176B0A410000284004002A61000028400400289 +S315400176C0A810000284004002AA1000028400400271 +S315400176D0AC10000284004002AE1000028400400259 +S315400176E09010000284004002921000028400400281 +S315400176F09410000284004002961000028400400269 +S3154001770098100002840040029A1000028400400250 +S315400177109C100002840040029E1000028400400238 +S3154001772081E0000086A0E00116BFFFDE01000000F7 +S31540017730030040408210610184100000861000045D +S3154001774080A400021280003F8400400280A44002CF +S315400177501280003C8400400280A4800212800039DD +S315400177608400400280A4C002128000368400400298 +S3154001777080A50002128000338400400280A54002A9 +S31540017780128000308400400280A580021280002DC4 +S315400177908400400280A5C0021280002A8400400273 +S315400177A080A20002128000278400400280A240028B +S315400177B0128000248400400280A2800212800021AF +S315400177C08400400280A2C0021280001E8400400252 +S315400177D080A300021280001B8400400280A3400265 +S315400177E0128000188400400280A380021280001596 +S315400177F08400400280A3C00212800012840040022D +S3154001780081E0000086A0E00116BFFFCE0100000026 +S3154001781080A020001280000B80A0FFFF128000098B +S3154001782080A160051280000780A1A0061280000594 +S3154001783001000000A010000710800006C02420208F +S31540017840A01000079010200110800002D0242020B3 +S3154001785082100007C40040008188800001000000BA +S315400178600100000001000000C4186008C81860103B +S31540017870CC186018F0186020F4186028F8186030A9 +S31540017880FC186038D0186040D4186048D818605049 +S31540017890DC186058E4006060C20060048194800096 +S315400178A0010000000100000001000000A0100007D7 +S315400178B0F004202081C7E00881E8000010BFFFFCEA +S315400178C0B01000000100000081D8200081C3E0080B +S315400178D0010000000328000084106004952AA00DD1 +S315400178E0D0204000922270009202400AD2208000AD +S315400178F081C3E0080100000003100124C40061AC0B +S3154001790003100124C200619C852A40028610200191 +S315400179108328C00182007FFF900A00019000800801 +S315400179208213C0007FFFE74C9E104000010000001B +S3154001793003100124C40061AC03100124C200619C00 +S31540017940852A4002861020018328C00182007FFFDC +S31540017950900A0001900080088213C0007FFFE73A39 +S315400179609E104000010000009DE3BFA02D100124A0 +S31540017970C205A1A0A410001880A0600004800020C8 +S31540017980B01020012F1001242B100124D005E1ACA9 +S3154001799029100124AC15A1A0AE15E1ACAA15619C34 +S315400179A0A815218CA0102000A2102000A6102001AD +S315400179B0C2054000832CC00182007FFF820C8001FA +S315400179C0912C00087FFFE72090020001C2050000CC +S315400179D0901A0012820A000180A00001C2058000AF +S315400179E0A2647FFFA004200180A0401034BFFFF1B4 +S315400179F0D005C00080A00011B0603FFF81C7E008FC +S31540017A0081E800009DE3BFA003100124C40061ACDE +S31540017A1003100124C200619CB32E40028410200150 +S31540017A208328800182007FFF820E00019210001A96 +S31540017A307FFFE70B9006400181C7E00881E800001F +S31540017A409DE3BFA003100124C40061AC03100124CF +S31540017A50C200619CB32E400284102001832880011C +S31540017A6082007FFF820E00019210001A7FFFE6F826 +S31540017A709006400181C7E00881E800000310012417 +S31540017A80C400619403100124C2006190852A40021A +S31540017A90861020018328C00182007FFF900A0001E1 +S31540017AA0900080088213C0007FFFE6E39E104000ED +S31540017AB0010000009DE3BFA003100124C4006194AE +S31540017AC003100124C2006190B32E400284102001AC +S31540017AD08328800182007FFF820E00019210001AE6 +S31540017AE07FFFE6D79006400181C7E00881E80000A4 +S31540017AF09DE3BFA003100124C40061940310012437 +S31540017B00C2006190B32E4002841020018328800177 +S31540017B1082007FFF820E00019210001A7FFFE6C4A9 +S31540017B209006400181C7E00881E800000310012466 +S31540017B30C400619403100124C2006190852A400269 +S31540017B40861020018328C00182007FFF900A000130 +S31540017B50900080088213C0007FFFE6B39E1040006C +S31540017B6001000000033FFFBF821063089DE38001CF +S31540017B700310004482106360C227BFEC0310004427 +S31540017B80821063A02F100044C227BFF4AE15E34014 +S31540017B9035100044EE27BFE8B416A38090102006A6 +S31540017BA07FFFA777F427BFF07FFFE69B9010200069 +S31540017BB0213FFFBF920A3FF0A01423689010200096 +S31540017BC07FFFE697A0078010230000307FFFE692F3 +S31540017BD090102000808A001112BFFFFD01000000B5 +S31540017BE081D82000230000307FFFE68B90102000D3 +S31540017BF0808A001112BFFFFD0100000023100124FD +S31540017C007FFFE6859010200013002040A410000855 +S31540017C109212600F921200097FFFE68190102000B8 +S31540017C207FFFE67D90102008D02461887FFFE67AA9 +S31540017C309010200C09100124C40461889938A014BD +S31540017C4013100124980B200F8603200AC621219088 +S31540017C50091001240310012496102400C621219401 +S31540017C60893A20148809200F9401200AD422619C64 +S31540017C70131001242D100124D0206198D42261AC27 +S31540017C8015100124932AC004833A2018D222A1A8B0 +S31540017C901510012482086003820060011B20000048 +S31540017CA08801200837100124C225A1A09201200293 +S31540017CB0821020019328400992234009D222A18CA7 +S31540017CC01510012487284003913A20109A23400336 +S31540017CD0992AC00CDA26E1A4D822A184A20A200757 +S31540017CE08738A018A93CA00CBA210011A408E003CA +S31540017CF08538A010A88D2003AA08A007A404A001D6 +S31540017D00AB284015A3284011AB2840159010001709 +S31540017D10AA057FFFA610200002800123B807BFE80D +S31540017D20A6042020030048D182106167C224C00006 +S31540017D3003226AF3821061EFC2242024C20C202060 +S31540017D4080A0600102800004010000007FFFA713AC +S31540017D509010201AC20C202180A0602302800004CA +S31540017D60010000007FFFA70D9010201BC20C2022AE +S31540017D7080A0604502800004010000007FFFA70744 +S31540017D809010201CC20C202380A060670280000452 +S31540017D90010000007FFFA7019010201DC20C202486 +S31540017DA080A0608902800004010000007FFFA6FBDD +S31540017DB09010201EC20C202580A060AB02800004DA +S31540017DC0010000007FFFA6F59010201FC20C20265F +S31540017DD080A060CD02800004010000007FFFA6EF75 +S31540017DE090102020C20C202780A060EF0280000462 +S31540017DF0010000007FFFA6E990102021C214202037 +S31540017E00832860108330601080A0612302800004C3 +S31540017E10010000007FFFA6E190102022C414202219 +S31540017E208528A010030000118530A01082106167DB +S31540017E3080A0800102800004010000007FFFA6D7D8 +S31540017E4090102023C41420248528A010030000226A +S31540017E508530A010821061AB80A0800102800004B1 +S31540017E60010000007FFFA6CD90102024C4142026D7 +S31540017E708528A010030000338530A010821061EFE1 +S31540017E8080A0800102800005821020307FFFA6C3BA +S31540017E909010202582102030C22C2020030C08D1BE +S31540017EA082106167C404C00080A080010280000581 +S31540017EB0821020317FFFA6B99010202782102031F1 +S31540017EC0C22C2021030C0C5182106167C404C000EE +S31540017ED080A0800102800005821020327FFFA6AF7C +S31540017EE09010202882102032C22C2022030C0C4CE8 +S31540017EF082106267C404C00080A080010280000530 +S31540017F00821020337FFFA6A59010202982102033AE +S31540017F10C22C2023030C0C4C82106233C404C000D3 +S31540017F2080A0800102800005821020347FFFA69B3D +S31540017F309010202A82102034C22C2024030D2AF3CB +S31540017F40821061EFC404202480A0800102800005D4 +S31540017F50821020357FFFA6919010202B821020356C +S31540017F60C22C2025030D0D73821061EFC404202419 +S31540017F7080A0800102800005821020367FFFA687FF +S31540017F809010202C82102036C22C2026030D0D4D38 +S31540017F90821062EFC404202480A080010280000583 +S31540017FA0821020377FFFA67D9010202D821020372A +S31540017FB0C22C2027030D0D4D82106237C4042024A4 +S31540017FC080A0800102800005030000107FFFA67398 +S31540017FD09010202E0300001082106041C2342020F0 +S31540017FE00310104C82106233C404C00080A080018B +S31540017FF002800005030000107FFFA6689010202F25 +S315400180000300001082106243C23420220310105034 +S3154001801082106243C404C00080A080010280000532 +S31540018020030000117FFFA65D901020300300001170 +S3154001803082106045C23420240311114D82106237EB +S31540018040C404202480A080010280000503000011A1 +S315400180507FFFA65290102031030000118210624723 +S31540018060C23420260311115182106247C4042024D0 +S3154001807080A0800102800004010000007FFFA64726 +S315400180809010203281D82000C205A1A080A06000B6 +S315400180900480001B80A5200025100124191001240D +S315400180A0A414A1A0981321AC8810200080A46000DC +S315400180B09B2920100480000C82102000C40300007C +S315400180C085290002840040028528A0028610400DC1 +S315400180D082006001C624000280A0401132BFFFF930 +S315400180E0C4030000C20480008801200180A040042E +S315400180F014BFFFF080A4600080A5200012800028F4 +S31540018100230000107FFFE54490102000808A001173 +S3154001811012BFFFFDC205A1A080A060000480001B24 +S31540018120010000002510012427100124A414A1A058 +S31540018130A614E18C10800006A2102000A204600162 +S3154001814080A040110480001101000000921000112E +S315400181507FFFFDF890100010C204C000901C00087B +S31540018160808A000132BFFFF6C20480007FFFA60B62 +S3154001817090102033C2048000A204600180A0401107 +S3154001818014BFFFF4921000117FFFE52390102000E9 +S315400181909212200F7FFFE5229010200081C7E00850 +S315400181A091E820009FC20000A604E00180A480134C +S315400181B004800008832CE002D00700019FC2000022 +S315400181C0A604E00180A4801314BFFFFC832CE002C7 +S315400181D07FFFE51190102000B616E1A4920A3FFCFC +S315400181E0A8102000901020007FFFE50DB810200058 +S315400181F0B207BFE810800005A610200080A48013B6 +S3154001820024800012A8052001921000137FFFFE482A +S3154001821090100017820A001580A0401512BFFFF882 +S31540018220A604E001C206C000901DC008900A0001E4 +S3154001823080A00008B8673FFF80A4801314BFFFF4F5 +S3154001824092100013A805200180A480140480000424 +S31540018250832D200210BFFFE8EE0640017FFFE4EECA +S3154001826090102000A6100008901020007FFFE4EC3B +S315400182709214E00380A720000280018301000000E0 +S31540018280A73CE013808CE0031280018501000000C9 +S3154001829081D82000250000307FFFE4DF90102000C8 +S315400182A0808A001212BFFFFDAA100008C205A1A0D4 +S315400182B080A060000480000F053FFFBF2510012408 +S315400182C0A6102000A414A1A0921000139010001033 +S315400182D07FFFFDDC94102000C2048000A604E0016B +S315400182E080A0401314BFFFFA92100013053FFFBF51 +S315400182F0821020008410A36884078002C0204002B7 +S315400183008200600480A0607C12BFFFFD0100000076 +S3154001831082102005C224000082102001C2242004BC +S3154001832082102002C224200882102003C224200C7D +S31540018330901000107FFFFD8DA804200480A220002C +S315400183400280014A01000000C204000080A06005CD +S3154001835002800004010000007FFFA59090102006D6 +S315400183607FFFFD829010001080A2200012800199AB +S31540018370C205A1A080A06000048000120100000097 +S3154001838025100124A6102000A414A1A092100013C8 +S31540018390941020007FFFFD9C901000109210001356 +S315400183A0901000147FFFFD9894102000C2048000B5 +S315400183B0A604E00180A0401314BFFFF692100013FB +S315400183C07FFFE4AB90100010A60420207FFFE4A8B5 +S315400183D0901000137FFFE4A6900420407FFFE4A4A1 +S315400183E090042060C205A1A080A0600004800180A5 +S315400183F0B810200025100124A414A1A0AE1020001D +S31540018400921000177FFFFD3D90100010C2048000BE +S31540018410901A200580A00008AE05E001B8673FFF2D +S3154001842080A0401714BFFFF89210001780A72000C4 +S315400184300280016F01000000033FFFBF82106368A5 +S31540018440C41F8001C43FBFA8C207BFA880A0600562 +S315400184501280000601000000C207BFAC80A0600187 +S3154001846002800005C205A1A07FFFA54C90102009FE +S31540018470C205A1A080A06000048000382510012417 +S31540018480B8102000A414A1A0AE102000921000172D +S315400184907FFFFD1A90100014C2048000901A20013B +S315400184A080A00008AE05E001B8673FFF80A04017F5 +S315400184B014BFFFF89210001780A7200112800027F1 +S315400184C0833D6013808860031280002A010000000A +S315400184D0C2042004C224000082102005C2240000E8 +S315400184E090102001D024200482102002C2242008AA +S315400184F082102003C224200C92100011400003B3C5 +S31540018500912A001DA52A2002032EEEEE821063BB9E +S31540018510C22400127FFFFD159010001080A220009A +S315400185201280013701000000C4040012032EEEEE52 +S31540018530A93D600C821063BB80A0800102BFFDFA99 +S31540018540A80D2003901020127FFFA514A93D600CB1 +S3154001855010BFFDF5A80D20037FFFA5109010200A3E +S31540018560833D60138088600302BFFFDA010000008B +S315400185707FFFE42990102000033FFFF08210603F07 +S31540018580920A00017FFFE4269010200092102000FD +S3154001859094102000AA07BFA87FFFFD1B901000156D +S315400185A07FFFE41D901020000303C00092120001DA +S315400185B07FFFE41B90102000C205A1A080A06000AF +S315400185C00480000F8210200125100124A8102000EC +S315400185D0A414A1A092100014901000157FFFFD0A6B +S315400185E094102005C2048000A805200180A04014F3 +S315400185F014BFFFFA9210001482102001C22FBFA8A7 +S315400186000300400082106005C407BFA880A0800116 +S3154001861002800004010000007FFFA4E09010200BBF +S315400186207FFFE3FD90102000833A20068208600315 +S3154001863080A0600102800004010000007FFFA4D7F2 +S315400186409010200C7FFFE3F4901020000303C0003C +S3154001865025000030922A00017FFFE3F190102000AF +S315400186607FFFE3ED90102000808A001212BFFFFDCC +S3154001867092102000941020007FFFFCE3901000151B +S315400186807FFFE3E5901020002503C00092120012FF +S315400186907FFFE3E3901020007FFFE3DF901020008F +S315400186A0808A001202BFFFFDAE100008C205A1A0DC +S315400186B080A060000480001025100124B81020011C +S315400186C0B92F0011A414A1A0B8073FFFA81020009C +S315400186D092100014901000157FFFFCDA9410001CD4 +S315400186E0C2048000A805200180A0401414BFFFFAEF +S315400186F0921000141303C00090102000922DC0095F +S315400187007FFFE3C72503C0007FFFE3C3901020002E +S31540018710808A001212BFFFFD01000000C407BFA8F6 +S31540018720030040008210600580A0800102800004A1 +S31540018730010000007FFFA4999010200D7FFFE3B652 +S3154001874090102000833A20088208600380A06001CF +S3154001875002800005841020117FFFA4909010200F05 +S3154001876084102011861020559010200025000030DD +S31540018770C43FBFF87FFFE3A801000000033C3FFF71 +S315400187800503C0008210633F820A00019010200059 +S315400187907FFFE3A3921040027FFFE39F90102000EA +S315400187A0808A001212BFFFFDAE07BFF87FFFE3BE0E +S315400187B090100017C205A1A080A060000480000FA0 +S315400187C00100000025100124AA07BFFCA414A1A0A2 +S315400187D0A810200092100014901000157FFFFC8A0B +S315400187E094102055C2048000A805200180A04014A1 +S315400187F014BFFFFA921000147FFFE3AB90100017ED +S3154001880080A220110280008180A260557FFFA4636F +S31540018810901020107FFFE38090102000833A2006BD +S315400188208208600380A0600102800004A410000851 +S315400188307FFFA45A90102010133C3FF09010200067 +S315400188409212603F920C80097FFFE375250000304C +S315400188507FFFE37190102000808A001212BFFFFD56 +S31540018860AA10000830BFFF1B7FFFA44C90102005C3 +S31540018870C204000080A0600512BFFEB801000000DE +S3154001888030BFFEB87FFFA44590102001A73CE013FE +S31540018890808CE00302BFFE7F010000007FFFE35EA4 +S315400188A090102000133FFFF0AA1000089212603F7B +S315400188B0920A00097FFFE35A901020007FFFE2B140 +S315400188C0A810001A0303C000133C3FFF901020007C +S315400188D0921263FC920D4009A61020007FFFE350DF +S315400188E09212400192100013901000147FFFFC7207 +S315400188F094102000A604E00180A4801334BFFFFB3E +S3154001890092100013901020001303C0007FFFE34430 +S31540018910921540097FFFE29B010000007FFFE33E85 +S3154001892090102000833A200A8208600380A06001EB +S3154001893002800005250000307FFFA4189010200218 +S31540018940250000307FFFE33490102000808A00121A +S3154001895012BFFFFD0100000001000000920A3FFC2A +S315400189607FFFE32F901020009010001492102000FA +S315400189707FFFFC6094102000010000007FFFE3268A +S3154001898090102000033C3FFF821063FC820A0001E5 +S31540018990901020007FFFE322921060030100000047 +S315400189A07FFFE278010000007FFFE31B901020006B +S315400189B0833A200C8208600380A0600102BFFE3525 +S315400189C0010000007FFFA3F59010200330BFFE3168 +S315400189D07FFFA3F290102007C205A1A080A06000EE +S315400189E034BFFE692510012430BFFE767FFFA3EB1D +S315400189F09010200810BFFE92033FFFBF7FFFA3E701 +S31540018A009010201130BFFEC912BFFF810100000046 +S31540018A1030BFFF819DE3BFA07FFFFC5301000000F3 +S31540018A2013002040B01000089212600F7FFFE2FC55 +S31540018A309010200081C7E00881E800009DE3BFA0B7 +S31540018A407FFFA3C81100412C82102007EC062004A9 +S31540018A50E0062004C2262008AC0DA003AC05A00107 +S31540018A6001000000C02600007FFFA3C59010200A28 +S31540018A700300020084103FFFB8060001C42600012E +S31540018A80A13C2002292AAAAAA00C27FFA81522AA9E +S31540018A902B155555A12C2008AA1561558810001C87 +S31540018AA0C2060001A8084014AA0840159A102000E1 +S31540018AB080A420002280000D9A03600186012020B7 +S31540018AC08410000482102000EA208000E820C000C3 +S31540018AD0820060108400A04080A0401006BFFFFBCA +S31540018AE08600E0409A03600180A5800D14BFFFF126 +S31540018AF0880120043B000200AE102000BA17602016 +S31540018B00BA06001D80A4200022800017AE05E001B0 +S31540018B10A610001CA410001DA2102000C204C00013 +S31540018B2080A0401502800004010000007FFFA39B46 +S31540018B3090102001C204800080A0401422800005CC +S31540018B40A20460107FFFA39590102001A20460103B +S31540018B50A604E04080A4401006BFFFF1A404A04053 +S31540018B60AE05E00180A5801714BFFFE7BA07600490 +S31540018B707FFFA3839010200C2F0008001B1555552D +S31540018B80AE060017092AAAAA9A136155881122AA84 +S31540018B9098100017961020001500020080A42000AE +S31540018BA02280000D9602E001860320048410000C09 +S31540018BB082102000DA208000C820C00082006002B6 +S31540018BC08400A00880A0401006BFFFFB8600E00895 +S31540018BD09602E00180A5800B14BFFFF19803000ABD +S31540018BE02B155555292AAAAAAA156155A81522AAAF +S31540018BF0BA1020003900020080A42000228000170C +S31540018C00BA076001A605E004A4100017A2102000CF +S31540018C10C204800080A040150280000401000000CB +S31540018C207FFFA35E90102003C204C00080A04014C1 +S31540018C3022800005A20460027FFFA3589010200302 +S31540018C40A2046002A404A00880A4401006BFFFF15C +S31540018C50A604E008BA07600180A5801D14BFFFE79E +S31540018C60AE05C01C2F0008001B155555AE15E00476 +S31540018C70092AAAAAAE0600179A136155881122AA93 +S31540018C8098100017961020001500020080A42000BD +S31540018C902280000D9602E00186033FFC8410000C01 +S31540018CA082102000DA208000C820C00082006002C5 +S31540018CB08400A00880A0401006BFFFFB8600E008A4 +S31540018CC09602E00180A5800B14BFFFF19803000ACC +S31540018CD02B155555292AAAAAAA156155A81522AABE +S31540018CE0BA1020003900020080A42000228000171B +S31540018CF0BA076001A605FFFCA4100017A2102000C8 +S31540018D00C204800080A040150280000401000000DA +S31540018D107FFFA32290102004C204C00080A040140B +S31540018D2022800005A20460027FFFA31C901020044C +S31540018D30A2046002A404A00880A4401006BFFFF16B +S31540018D40A604E008BA07600180A5801D14BFFFE7AD +S31540018D50AE05C01C82102005C22620080320000053 +S31540018D60C226000081C7E00881E80000033FFFBF3B +S31540018D70821063609DE380017FFFFAD425200000C5 +S31540018D804000016E2D0000307FFFE2239010200845 +S31540018D90AA1000087FFFE2209010200C7FFFA31B42 +S31540018DA0AE100008912A20047FFFA2F59002200C04 +S31540018DB082102001873D60148608E00F8600E00A94 +S31540018DC0A73D6010A13D6018853DE014A60CE00763 +S31540018DD08408A00FA604E0028400A00AA728401335 +S31540018DE0A00C2003A93DE010A0042001A80D2007F6 +S31540018DF0A12C0003A8052002AA2480108604FFFFA7 +S31540018E00A9284014A33DE01882053FFFA20C600348 +S31540018E10A2046001AA154003A32C4002A424801198 +S31540018E20A41480017FFFE1FC90102000808A001687 +S31540018E3012BFFFFD133FFFBF90100011921263C096 +S31540018E4015155555920780097FFFE1869412A15564 +S31540018E5080A220001280007001000000133FFFBF76 +S31540018E6090100011921263C0152AAAAA920780098E +S31540018E707FFFE1909412A2AA80A220001280006393 +S31540018E80010000007FFFA2E101000000912A2004B9 +S31540018E907FFFA2BB9002200A40000125010000008D +S31540018EA0032AAAAA981062AA8210620090100011A1 +S31540018EB0920C8001941000127FFFE1A796100014D6 +S31540018EC080A220001280004D010000000315555577 +S31540018ED09810615582106100901000119410001293 +S31540018EE0961000147FFFE19C920C800180A2200025 +S31540018EF01280003F010000007FFFA2C40100000074 +S31540018F00912A20047FFFA29E9002200B9010001010 +S31540018F10131555557FFFE1779212615580A22000C6 +S31540018F201280002F0100000090100010132AAAAAF7 +S31540018F307FFFE170921262AA80A220001280002572 +S31540018F40010000007FFFA2B101000000912A200428 +S31540018F507FFFA28B900220099010001092100015FD +S31540018F6094100013172AAAAA7FFFE16E9612E2AA6D +S31540018F7080A2200012800013010000009010001012 +S31540018F809210001594100013171555557FFFE16592 +S31540018F909612E15580A220000280000401000000E3 +S31540018FA07FFFA27E901020087FFFFA48B010200074 +S31540018FB0400000E20100000081C7E00881E80000AE +S31540018FC07FFFA2769010200710BFFFEE9010001091 +S31540018FD07FFFA2729010200630BFFFDB7FFFA26F9A +S31540018FE09010200510BFFFD2901000107FFFA26B9A +S31540018FF09010200430BFFFC17FFFA268901020036C +S3154001900010BFFFB4031555557FFFA264901020028F +S3154001901030BFFF9D7FFFA2619010200110BFFF91DD +S31540019020133FFFBF81C3E0089144400080800000A8 +S31540019030151001209412A1EC9010200092102246A6 +S3154001904081800000010000000100000001000000D5 +S31540019050D00280009122400881C3E008010000004F +S3154001906081800000901020018090200180F0200135 +S315400190701280004B010000000100000001000000C9 +S31540019080010000008090200180F8200112800044F8 +S315400190900100000001000000010000000100000085 +S315400190A08090200180FA3FFF010000001680003CBD +S315400190B00100000001000000010000000100000065 +S315400190C08180000090102001809020010100000065 +S315400190D080D0200112800032010000000100000012 +S315400190E0010000000100000080D220010280002C16 +S315400190F00100000080D23FFF1680002901000000D8 +S3154001910080DA3FFF9340000080A27FFF1280002457 +S315400191100100000080D23FFF934800009332601463 +S31540019120920A600F80A260081280001D01000000B3 +S315400191308180000090102001945220049452A00492 +S315400191409452A00496A2A04012800015010000008E +S31540019150818000009010200280A000003280001023 +S315400191609052000880A220021280000D01000000EA +S31540019170818000009010200280A0000001000000C4 +S31540019180328000079052000880A22002128000041B +S315400191900100000081C3E0089010200181C3E0086E +S315400191A0901000001315555592126155A582400045 +S315400191B0010000000100000001000000954480000C +S315400191C080A2400A1280004301000000923A40000A +S315400191D0A5824000010000000100000001000000DE +S315400191E09544800080A2400A1280003A01000000A6 +S315400191F01100003F901223FFA580000081800000EE +S3154001920001000000010000000100000093F23FFF51 +S315400192109A10000993F23FFF93F23FFF93F23FFF0B +S3154001922093F23FFF93F23FFF93F23FFF93F23FFFEB +S315400192309940000097448000153FFC009412A00815 +S3154001924080A2400A1280002380A2400B1280002196 +S3154001925080A320071280001F113FFF80901220013A +S3154001926080A340081280001B1100003F901223FF8B +S31540019270A58000008180000001000000010000007F +S315400192800100000093FA3FFF93FA3FFF93FA3FFF35 +S3154001929093FA3FFF93FA3FFF93FA3FFF93FA3FFF5B +S315400192A093FA3FFF994000009744800080A26008EE +S315400192B01280000880A260081280000680A3200068 +S315400192C0128000040100000081C3E00890102001D3 +S315400192D081C3E008901000008180000090102002B8 +S315400192E080A00000328000109072000880A2200207 +S315400192F01280000D010000008180000090102002C4 +S3154001930080A0000001000000328000079072000832 +S3154001931080A22002128000040100000081C3E008FF +S315400193209010200181C3E00890100000C0A00040C9 +S3154001933081C3E00801000000110020409012200F77 +S31540019340D0A0004081C3E008010000009DE3BFA01A +S315400193507FFFE0B190102008A21000087FFFE0AE29 +S315400193609010200CA0100008C0A00040833C60145F +S315400193708208600F8200600A913C6018900A2003BF +S31540019380900220017FFFE01B912A0001833C2014BB +S315400193908208600F8200600A913C2018900A2003DF +S315400193A0900220017FFFE021912A00017FFFF947CA +S315400193B001000000110020409012200FD0A0004073 +S315400193C081C7E00881E80000981200098182000007 +S315400193D09AAB2FFF02800025988800009923000947 +S315400193E09923000999230009992300099923000922 +S315400193F09923000999230009992300099923000912 +S315400194009923000999230009992300099923000901 +S3154001941099230009992300099923000999230009F1 +S3154001942099230009992300099923000999230009E1 +S3154001943099230009992300099923000999230009D1 +S3154001944099230009992300099923000999230009C1 +S3154001945099230009992300099923000999230000BA +S3154001946081C3E0089140000099230009992300092E +S315400194709923000999230009992300099923000991 +S315400194809923000999230009992300099923000981 +S315400194909923000999230009992300009B40000064 +S315400194A0992B200C9B33601481C3E0089013400C28 +S315400194B01080000B8610200080924008168000081C +S315400194C086100008809240001680000480920000B9 +S315400194D01680000392200009902000089A924000CD +S315400194E0128000059610000891D0200281C3E00841 +S315400194F09010000080A2C00D0A80009594100000D3 +S315400195000302000080A2C0010A80002898100000D2 +S3154001951080A340011A80000D841020019B2B60041A +S3154001952010BFFFFC980320019A83400D1A80000763 +S315400195308400A001832860049B3360019A034001A3 +S31540019540108000078420A00180A3400B0ABFFFF7CB +S3154001955001000000028000020100000084A0A00179 +S3154001956006800076010000009622C00D941020016D +S315400195701080000A01000000952AA001068000051E +S315400195809B3360019622C00D108000049402A00115 +S315400195909602C00D9422A00184A0A00116BFFFF738 +S315400195A08092C000308000659B2B600480A3400BF5 +S315400195B008BFFFFE988320010280006598232001A1 +S315400195C08092C000952AA0040680002F9B3360013B +S315400195D096A2C00D068000179B33600196A2C00D6E +S315400195E00680000B9B33600196A2C00D06800005E4 +S315400195F09B33600196A2C00D108000509402A00FCB +S315400196009682C00D1080004D9402A00D9682C00D29 +S31540019610068000059B33600196A2C00D108000476D +S315400196209402A00B9682C00D108000449402A009BA +S315400196309682C00D0680000B9B33600196A2C00D39 +S31540019640068000059B33600196A2C00D1080003B49 +S315400196509402A0079682C00D108000389402A0059E +S315400196609682C00D068000059B33600196A2C00D0F +S31540019670108000329402A0039682C00D1080002F04 +S315400196809402A0019682C00D068000179B336001AB +S3154001969096A2C00D0680000B9B33600196A2C00DB9 +S315400196A0068000059B33600196A2C00D1080002301 +S315400196B09402BFFF9682C00D108000209402BFFD28 +S315400196C09682C00D068000059B33600196A2C00DAF +S315400196D01080001A9402BFFB9682C00D10800017BD +S315400196E09402BFF99682C00D0680000B9B33600140 +S315400196F096A2C00D068000059B33600196A2C00D5F +S315400197001080000E9402BFF79682C00D1080000BA8 +S315400197109402BFF59682C00D068000059B33600119 +S3154001972096A2C00D108000059402BFF39682C00D2B +S31540019730108000029402BFF198A3200116BFFFA238 +S315400197408092C000268000029602C0098090C00027 +S31540019750268000029620000B81C3E0089010000B82 +S3154001976092100008941020009010200096102000BE +S315400197708213C000400000429E10400001000000DC +S315400197809DE3BFA080A6A00F9A100018881000196B +S31540019790088000068610001A8216401880886003E9 +S315400197A00280000D8410001980A0E00002800008AC +S315400197B082102000C4090001C42B400182006001CF +S315400197C080A0400332BFFFFDC409000181C7E00804 +S315400197D081E8000082100018DA008000DA2040009B +S315400197E08600FFF080A0E00FDA00A004DA206004D2 +S315400197F0DA00A008DA206008DA00A00CDA20600C52 +S315400198008400A01018BFFFF582006010B406BFF0B7 +S315400198109B36A004832B60049A036001B426800121 +S315400198209B2B600480A6A0038806400D8610001A73 +S3154001983008BFFFDE9A06000D82102000C401000118 +S31540019840C4234001820060048426800180A0A003D5 +S3154001985038BFFFFCC4010001B406BFFC8336A00239 +S315400198608728600282006001862680038328600281 +S315400198708801000110BFFFCD9A0340019DE3BFA0BF +S3154001988021100123400005F7901420EC03100070CD +S31540019890E2006090D004614880A220002280003D11 +S315400198A09004614CC202200480A0601F1480001EF7 +S315400198B00100000080A620000280001284006002A0 +S315400198C0C4022004820060228600A04289286002E8 +S315400198D08728E002C2022188F4220004F62200030E +S315400198E0861020018728C00282104003C2222188A7 +S315400198F080A62002028000198210000284006002C4 +S315400199008528A00282006001C2222004F2220002C0 +S31540019910B0102000400005E9901420EC81C7E00812 +S3154001992081E80000400000289010219080A220008C +S315400199302280001A901420ECC2046148C222000021 +S31540019940D0246148C0222004C0222188C022218C13 +S3154001995010BFFFD982102000C202218C861040031D +S3154001996082100002840060028528A002C622218C52 +S3154001997082006001F2220002C2222004B0102000BF +S31540019980400005CE901420EC81C7E00881E8000034 +S3154001999010BFFFC5D0246148400005C8B0103FFF45 +S315400199A081C7E00881E800009210000803100120F9 +S315400199B0D00062208213C000400002179E10400072 +S315400199C0010000009210000803100120D00062201F +S315400199D08213C000400000039E10400001000000B9 +S315400199E09DE3BFA0841020008206600B80A0601614 +S315400199F008800004A0102010A0087FF88534201F9D +S31540019A0080A400190A8000468088A0FF1280004485 +S31540019A1001000000400001AF9010001880A421F71A +S31540019A20188000418334200923100121A214637850 +S31540019A3082044010E400600C80A480010280010F82 +S31540019A4099342003C604A004C404A00CC204A0088F +S31540019A508608FFFC86048003C800E00488112001C3 +S31540019A60C220A008C820E004C420600C9010001851 +S31540019A7040000192B004A00881C7E00881E80000D7 +S31540019A80E6046008E804E004A80D3FFC82250010C6 +S31540019A9080A0600F148000D280A40014031001231B +S31540019AA02F100122EA006160C205E384AA05601015 +S31540019AB080A07FFF02800004AA054010AA056FFF1F +S31540019AC0AA0D7000901000184000018892100015F0 +S31540019AD080A23FFF02800009A41000088404C0143C +S31540019AE080A08008088000EC2D10012380A440133B +S31540019AF0028000EAC205A16CC2046008C400600489 +S31540019B008408BFFC8220801080A0600F148001224F +S31540019B1080A40002400001699010001881C7E00846 +S31540019B2091E820009934200380A060000280000F54 +S31540019B30872B200380A06004088000929934200678 +S31540019B409800605B80A0601408800008872B200382 +S31540019B5080A060541880011380A061549934200C70 +S31540019B609803206E872B200323100121A2146378CA +S31540019B7086044003E400E00C80A0C0123280000B52 +S31540019B80C404A004108000109803200136800068A8 +S31540019B90C604A00CE404A00C80A0C0122280000AD6 +S31540019BA098032001C404A0048408BFFC82208010CD +S31540019BB080A0600F04BFFFF680A0600098033FFFBE +S31540019BC098032001071001218610E380E400E00894 +S31540019BD080A0C0122280002AC2046004C404A004EA +S31540019BE08408BFFC8220801080A0600F1480008A08 +S31540019BF080A06000C620E00C16800059C620E0080F +S31540019C0080A0A1FF288000628530A0038330A0098F +S31540019C1080A06004188000E98800605B8930A00656 +S31540019C20880120389B2920039A04400DC20360080D +S31540019C3080A0400D32800008C8006004108000E911 +S31540019C40DA04600480A3400122800008C400600C4D +S31540019C50C800600488093FFC80A080042ABFFFFA3F +S31540019C60C2006008C400600CC424A00CC224A00831 +S31540019C70E420600CE420A008C2046004853B200275 +S31540019C80881020018929000280A040042ABFFF7E56 +S31540019C90E6046008808840042280004B980B3FFC14 +S31540019CA0952B20039610000C9404400A9A10000A42 +S31540019CB0E403600C80A340123280000BC404A0046C +S31540019CC0108000589602E00136800019C604A00CA7 +S31540019CD0E404A00C80A34012228000529602E001C7 +S31540019CE0C404A0048408BFFC8220801080A0600FB9 +S31540019CF004BFFFF680A06000DA04A00CC804A008E7 +S31540019D0084048010A0142001C8236008DA21200CA5 +S31540019D10C420E00CC420E008E024A004C220800155 +S31540019D20C620A00810800010C620A00CC204A008BE +S31540019D3084048002C800A00488112001C220E008E2 +S31540019D40C820A004C620600C90100018400000DB1B +S31540019D50B004A00881C7E00881E8000084048002BD +S31540019D60C200A00482106001C220A0049010001815 +S31540019D70400000D2B004A00881C7E00881E8000095 +S31540019D809803203810BFFF79872B20038928A00329 +S31540019D9088044004DA012008D6046004C824A00CD3 +S31540019DA0DA24A0088538A00282102001E423600C41 +S31540019DB083284002E42120088210400B10BFFFB0E7 +S31540019DC0C2246004892920018088400402BFFFFE25 +S31540019DD09803200410BFFFB4952B200338BFFF31F1 +S31540019DE003100123E404600884048010A0142001B8 +S31540019DF082106001E024A004C220A0049010001843 +S31540019E00C4246008400000ADB004A00881C7E00842 +S31540019E1081E800008404801010BFFFBEA014200119 +S31540019E20808AE00312BFFFA39A04A008808B200317 +S31540019E300280009C8202BFF8D400600880A28001A3 +S31540019E4022BFFFFB98033FFFC2046004892920011A +S31540019E5080A1000118BFFF0B80A1200022BFFF0A8D +S31540019E60E604600880890001228000928929200148 +S31540019E7010BFFF8C9810000B8204A008E400600C10 +S31540019E8080A0401202BFFF509803200210BFFEEF90 +S31540019E90C604A004C205A16C8205400180A08012BF +S31540019EA002800067C225A16CC605E38480A0FFFF3E +S31540019EB02280006B0310012282048001842040022B +S31540019EC0C425A16C848CA00702800006030000040F +S31540019ED08210200882204002A40480018220700062 +S31540019EE0AA04801590100018AA0D6FFFAA204015EC +S31540019EF04000007E9210001580A23FFF0280006064 +S31540019F008410200184220012840080158410A0014F +S31540019F10C205A16C82054001C225A16CC424A004DE +S31540019F2080A4401302800010E424600880A5200F1D +S31540019F300880003A84053FF48408BFF88604C002CD +S31540019F40C804E0048809200188108004C824E0047C +S31540019F5088102005C820E00880A0A00F1880004284 +S31540019F60C820E00405100123C600A16480A0400377 +S31540019F7038800002C220A16405100123C600A168F1 +S31540019F8080A0400338BFFEDDC220A16810BFFEDCC1 +S31540019F90C204600828BFFF95E404600830BFFEDEB6 +S31540019FA01880001780A065549934200F98032077B4 +S31540019FB010BFFEEE872B200380A0601408BFFF1B55 +S31540019FC09B29200380A060541880001780A061540B +S31540019FD08930A00C8801206E10BFFF149B292003F5 +S31540019FE08939200284102001852880048413400287 +S31540019FF0C424600410BFFF1D84100001861023F0A5 +S3154001A00018BFFEDA9810207E993420129803207CDE +S3154001A01010BFFED6872B20038210200110BFFEB74A +S3154001A020C224A0041880001880A065548930A00F6E +S3154001A0308801207710BFFEFD9B2920038088AFFF52 +S3154001A04012BFFF9BC605E384C4046008860540141D +S3154001A0508610E00110BFFFC4C620A00410BFFF9ABE +S3154001A060E42063849204E0084000006B90100018DD +S3154001A0700310012310BFFFBCC200616C10BFFFA5D6 +S3154001A080AA1020009A1023F018BFFEE88810207EFF +S3154001A0908930A0128801207C10BFFEE49B29200351 +S3154001A0A0C20460048228400410BFFF68C2246004D1 +S3154001A0B010BFFF6D9602E004111001229012238811 +S3154001A0C08213C000400003FD9E10400001000000C5 +S3154001A0D011100122901223888213C000400003E12F +S3154001A0E09E104000010000009DE3BFA02110012405 +S3154001A0F0901000194000015DC02421B080A23FFFAD +S3154001A10002800004C20421B081C7E00891E800083A +S3154001A11080A0600002BFFFFD01000000C2260000D2 +S3154001A12081C7E00891E800089DE3BFA07FFFFFE9F2 +S3154001A1309010001821100121A0142378C204200890 +S3154001A140E2006004A20C7FFC82046FEFB22040194A +S3154001A150B20E7000B206700080A66FFF048000093F +S3154001A160901000187FFFFFE192102000C2042008E2 +S3154001A1708200401180A20001028000079010001861 +S3154001A180901000187FFFFFCDB010200081C7E00876 +S3154001A19081E800007FFFFFD59220001980A23FFF92 +S3154001A1A00280000EA2244019C4042008A2146001B2 +S3154001A1B003100123E220A00490100018B0102001E2 +S3154001A1C0C400616CB22080197FFFFFBCF220616C34 +S3154001A1D081C7E00881E80000901000187FFFFFC3A7 +S3154001A1E092102000C20420088422000180A0A00F02 +S3154001A1F004BFFFE407100122C600E3849022000356 +S3154001A200071001238410A001D020E16C10BFFFDDAF +S3154001A210C42060049DE3BFA080A660000280005078 +S3154001A220010000007FFFFFAB9010001884067FF805 +S3154001A230D800A004820B3FFE09100121860080014F +S3154001A24088112378DA00E004D601200880A2C003F1 +S3154001A250028000639A0B7FFCDA20E004808B2001A8 +S3154001A2601280000E98102000D8067FF88420800CBA +S3154001A2708200400CD600A0089801200880A2C00C9C +S3154001A2800280000698102001D400A00CD422E00CD4 +S3154001A29098102000D622A0089600C00DD602E004F0 +S3154001A2A0808AE0013280000A8610600180A3200086 +S3154001A2B00280002D8200400DDA00E008C600E00C65 +S3154001A2C0C623600CDA20E00886106001C2208001B6 +S3154001A2D080A3200012800020C620A00480A061FF38 +S3154001A2E028800030833060038730600980A0E00415 +S3154001A2F0188000529800E05B993060069803203838 +S3154001A3009B2B20039A01000DC603600880A0C00D57 +S3154001A31032800008C800E00410800052DA012004AF +S3154001A32080A3400322800008C200E00CC800E0047C +S3154001A33088093FFC80A040042ABFFFFAC600E00816 +S3154001A340C200E00CC220A00CC620A008C420E00C2C +S3154001A350C42060087FFFFF5981E8000081C7E008FB +S3154001A36081E80000DA00E008171001219612E38027 +S3154001A37080A3400B32BFFFD3C600E00CC423600C60 +S3154001A380C4236008C2208001DA20A008821060013F +S3154001A390DA20A00CC220A0047FFFFF4881E800001C +S3154001A3A08728600386010003DA00E008C620A00C76 +S3154001A3B0DA20A008D8012004C423600CC420E00898 +S3154001A3C083386002841020018328800182130001B2 +S3154001A3D0C22120047FFFFF3981E80000808B2001E4 +S3154001A3E01280000982034001D8067FF88420800C40 +S3154001A3F0DA00A00CC600A0088200400CC623600803 +S3154001A400DA20E00CC421200886106001C620A00491 +S3154001A41005100122C400A38080A040020ABFFFCEDE +S3154001A42003100123D20061607FFFFF4090100018A6 +S3154001A4307FFFFF2281E8000080A0E01408BFFFB241 +S3154001A4409B2B200380A0E0541880000D80A0E1548E +S3154001A4509930600C9803206E10BFFFAB9B2B2003F5 +S3154001A460993B2002821020018328400C821340012F +S3154001A470C221200410BFFFB48210000318800006D9 +S3154001A48080A0E5549930600F9803207710BFFF9E56 +S3154001A4909B2B20039A1023F018BFFF9B9810207E18 +S3154001A4A0993060129803207C10BFFF979B2B2003A5 +S3154001A4B09DE3BFA080A620000280001F031001205B +S3154001A4C0E406214880A4A00022800014C206203C54 +S3154001A4D0C204A004A0807FFF2C80000CE40480000D +S3154001A4E0A2006001A32C6002A2048011C2044000B4 +S3154001A4F09FC04000A2047FFCA0843FFF3CBFFFFDFC +S3154001A500C2044000E404800080A4A00032BFFFF2F0 +S3154001A510C204A004C206203C80A060000280000460 +S3154001A520010000009FC040009010001881C7E0085C +S3154001A53081E8000010BFFFE3F00062209DE3BFA069 +S3154001A540D206400080A260000280000401000000A3 +S3154001A5507FFFFFFB901000187FFFFF2F81E800006F +S3154001A560010000009DE3BFA003100120C20062204C +S3154001A57080A600010280003201000000D206204C74 +S3154001A58080A2600022800016E0062148A210200029 +S3154001A590E002401180A420002280000BA204600446 +S3154001A5A092100010901000187FFFFF1BE00400007E +S3154001A5B080A4200012BFFFFC92100010D206204C4E +S3154001A5C0A204600480A4603C32BFFFF3E002401164 +S3154001A5D07FFFFF1190100018E006214880A420005B +S3154001A5E02280000ED2062054A206214C80A40011DE +S3154001A5F02280000AD20620549210001090100018B2 +S3154001A6007FFFFF05E004000080A4401012BFFFFC5D +S3154001A61092100010D206205480A2600022800005CC +S3154001A620C20620387FFFFEFC90100018C206203873 +S3154001A63080A0600032800004C206203C81C7E00849 +S3154001A64081E800009FC0400090100018F20622E009 +S3154001A65080A6600002BFFFFA010000007FFFFFB83D +S3154001A66081E800000100000005100124C200A1B4E8 +S3154001A67080A060002280000603100125900040085A +S3154001A680D020A1B481C3E008901000018210616816 +S3154001A69090004008C220A1B4D020A1B481C3E008F3 +S3154001A6A090100001A7500000AE1000018334E00174 +S3154001A6B029100123E805203CA92CC014821500016C +S3154001A6C081E000008190400001000000010000008F +S3154001A6D001000000E03BA000E43BA008E83BA010DD +S3154001A6E0EC3BA018F03BA020F43BA028F83BA0305F +S3154001A6F0FC3BA03881E800008210001781C440006D +S3154001A70081CC800001000000010000000100000032 +S3154001A710A7500000A92CE0012B100123EA05603C5B +S3154001A720AB34C015AA1540148195400001000000C4 +S3154001A730010000000100000081E8000081E80000FE +S3154001A740E01BA000E41BA008E81BA010EC1BA0180E +S3154001A750F01BA020F41BA028F81BA030FC1BA0383E +S3154001A76081E0000081E0000081C4400081CC80008E +S3154001A770A75000002910006CADC5231C0100000044 +S3154001A78027100123A614E018E024C000818C202064 +S3154001A7900100000001000000010000009DE3BFA090 +S3154001A7A09DE3BFA09DE3BFA09DE3BFA09DE3BFA0E6 +S3154001A7B09DE3BFA09DE3BFA081E8000081E80000C2 +S3154001A7C081E8000081E8000081E8000081E800009E +S3154001A7D081E8000027100123A614E018C024C00018 +S3154001A7E0E203A068A4046004E223A064E423A06811 +S3154001A7F0108002F1AC10000029100122A81523FC9B +S3154001A800C2252000C8252004E0252010E225201479 +S3154001A810E4252018E825201C81E800008348000033 +S3154001A82082106F0081886020010000000100000055 +S3154001A8300100000009100123C801203C81E000000D +S3154001A8408821200180A920FF028000030100000029 +S3154001A8500100000080A1000012BFFFF901000000C5 +S3154001A86009100123C801203C81E8000080A920FF8E +S3154001A8700280000301000000010000008821200140 +S3154001A88080A1000012BFFFF90100000081E0000035 +S3154001A89029100122A81523FCC8052004C205200061 +S3154001A8A0E0052010E2052014E4052018C025201CEF +S3154001A8B0818C200001000000010000000100000021 +S3154001A8C081C4800081CCA004A0142F00818C00009B +S3154001A8D001000000010000000100000081C4800069 +S3154001A8E081CCA00480A6600212800005A8142F0026 +S3154001A8F0818D0000B01420203080001F80A66003A7 +S3154001A90012800006A80E2F00AA2C2F00A81540146D +S3154001A910818D00003080001880A6600412800008F6 +S3154001A920A9480000A8152040818D000001000000C3 +S3154001A93001000000010000003080000F80A6600584 +S3154001A94012800008A9480000A82D2040818D0000F2 +S3154001A95001000000010000000100000030800006F7 +S3154001A96080A66006128000030100000030BFFFA3ED +S3154001A97091D0200081C4800081CCA0049210200394 +S3154001A98081C3E00891D020029210200281C3E008E1 +S3154001A99091D020029210200681C3E00891D0200276 +S3154001A9A081C3E0080100000081C3E0080100000006 +S3154001A9B081C3E00801000000AE25A010A7500000A9 +S3154001A9C02D10006AAC15A1CC2910006D81C520C49B +S3154001A9D0010000001110012390122024D202000030 +S3154001A9E092026001D2220000932DE008902C2F00A4 +S3154001A9F092120009111001239012201CD00200006E +S3154001AA0080A000082280000292126F00818A602095 +S3154001AA100100000001000000010000009010001735 +S3154001AA20400000379203A06092142F00818A602073 +S3154001AA300100000001000000010000001110012387 +S3154001AA4090122024D202000092226001D2220000FC +S3154001AA50108002BCAC1000009DE3BFA01B10012377 +S3154001AA60892E60029A13619480A6601F821020008D +S3154001AA7014800017C6034004B32E60041910012345 +S3154001AA8080A0E000981322140280000D8406400C39 +S3154001AA9080A0C00212800006821000031080000EC2 +S3154001AAA0C206400C2280000CC206400CC200600C5B +S3154001AAB080A0600012BFFFFC80A08001C423400437 +S3154001AAC0F026400CC620A00C8210200081C7E00869 +S3154001AAD091E80001F026400C81C7E00891E80001A9 +S3154001AAE0912A20020310012382106194C400400878 +S3154001AAF0C422600C81C3E008D22040089DE3BFA078 +S3154001AB00051001238210A02CC200600480A04018C9 +S3154001AB1022800040C400A02C80A620002280000292 +S3154001AB20B0100001A32E200203100123821061946C +S3154001AB30E000401180A42000028000342910012445 +S3154001AB402D1001242B10012427100124A8152014AF +S3154001AB50AC15A098AA15609C1080001DA614E0189B +S3154001AB60A41000138400A001C4248011C4058000F0 +S3154001AB7080A0A00022800006D20420089FC0800049 +S3154001AB8001000000C2040000D20420089010001801 +S3154001AB909FC0400094100019C205400080A060008B +S3154001ABA022800005C20480119FC0400001000000C0 +S3154001ABB0C204801182007FFFC2248011E004200C70 +S3154001ABC080A420000280001101000000C2040000A0 +S3154001ABD080A0600022BFFFFBE004200CC4050000FA +S3154001ABE080A0A00012BFFFDFC404C01180A0A00056 +S3154001ABF002BFFFDDA4100013E004200C80A4200056 +S3154001AC0032BFFFF4C204000081C7E00881E80000BA +S3154001AC10F000A0C010BFFFC1B00E201F8C10000F66 +S3154001AC20A74800008B34E0188A09600F80A16003B1 +S3154001AC3002800002108000399010200192102006F7 +S3154001AC40400002760100000080A000080280003327 +S3154001AC5001000000C2022010113FFC00820840089A +S3154001AC60110003FC8410400890100002921020014C +S3154001AC709410200C4000027F0100000080A00008D3 +S3154001AC8002800026010000004000028F9210000160 +S3154001AC900B1001238A116034D2214000901000022A +S3154001ACA09210200194102011400002720100000010 +S3154001ACB080A00008028000190100000040000282C5 +S3154001ACC092100001920260100B1001238A11602834 +S3154001ACD0D221400090100002921020019410200DC4 +S3154001ACE0400002640100000080A000080280000BC1 +S3154001ACF00100000040000274921000010B10012374 +S3154001AD008A11602CD2214000D40260109532A010E5 +S3154001AD10940AA00FD42160049E10000681C3E00866 +S3154001AD2001000000031001238210604882102001B7 +S3154001AD3091D0200081C3E008010000009DE3BFA03F +S3154001AD40051001248410A1B8C200A09080A0600023 +S3154001AD50028000278600A0941080000688102000FB +S3154001AD608801200180A100011A8000210100000014 +S3154001AD70D800C000DA0300009733601880A2C018DB +S3154001AD8012BFFFF88600E0049733600C960AEFFF86 +S3154001AD9080A2C01932BFFFF48801200180A6A0001D +S3154001ADA0028000039A0B600FDA268000C20320045A +S3154001ADB0860120648728E00284008003C400A00441 +S3154001ADC03100003F073FFC00B01623F0B0084018A1 +S3154001ADD082084003B12E20048330600CB00E00017E +S3154001ADE0B016000281C7E00881E8000081C7E0088B +S3154001ADF091E820009DE3BFA003100124C40060AC8C +S3154001AE0080A0A00012800078841020012310012424 +S3154001AE10C42060AC92102000A01461B8941023A401 +S3154001AE20400002379010001084102000821030003C +S3154001AE308728A00288040003C600400080A0E000E5 +S3154001AE400280000480A070E0C22120048400A00199 +S3154001AE5032BFFFF882006020C42461B8DA0420487A +S3154001AE6082103800840360128528A00286040002FD +S3154001AE70C400400080A0A0000280000480A078E0C9 +S3154001AE80C220E0049A03600112BFFFF782006020EE +S3154001AE9080A360000480003FDA2420482500003F5B +S3154001AEA08404204CA414A3F09E102000821020009C +S3154001AEB010800005230003FC80A340010480003577 +S3154001AEC08400A004C6008000C800C000D600E0107F +S3154001AED08731201880A0E00132BFFFF8820060016F +S3154001AEE08931200C88092FFF80A1200632BFFFF34C +S3154001AEF082006001D804209080A3203F3480000264 +S3154001AF00861020008088E0FF2280001E82006001BA +S3154001AF10A60AC01288102000A72CE010A60AC0136A +S3154001AF208614C011D600C00080A2E0000280001144 +S3154001AF3088012001D60420909002E0249202E06428 +S3154001AF409402E0A4912A2002932A60029004000808 +S3154001AF5092040009952AA0029404000A9602E0018F +S3154001AF60C6222004E6226004DE22A004D6242090D4 +S3154001AF7080A1200F0480001E9803200182006001F9 +S3154001AF809E03E00180A3400114BFFFCF8400A004CB +S3154001AF90901020019210200D941020007FFFFF6831 +S3154001AFA02110012380A2200032800002D024202CCF +S3154001AFB09010200192102011151001247FFFFF608F +S3154001AFC09412A0A880A2200002800003031001244D +S3154001AFD0D02060A4C204202C80A0600032800002F0 +S3154001AFE0C020604081C7E00881E8000080A3203F7F +S3154001AFF034BFFFE48200600110BFFFCB8600E0084A +S3154001B0009DE3BFA003100124C20060B08410001864 +S3154001B01080A0600002800006B0102000901000025F +S3154001B0209FC0400092100019B010000881C7E00887 +S3154001B03081E800009DE3BFA003100124C20060B473 +S3154001B04080A0600002800005841020009FC040005F +S3154001B050901000188410000881C7E00891E80002AA +S3154001B0609DE3BFA003100124C20060BC80A0600024 +S3154001B07002800005841020009FC0400090100018F7 +S3154001B0808410000881C7E00891E800029DE3BFA053 +S3154001B09003100124C20060B880A060000280000550 +S3154001B0A0841020009FC040009010001884100008B2 +S3154001B0B081C7E00891E800029DE3BFA00310012487 +S3154001B0C0C20060C080A0600002800005841020009C +S3154001B0D09FC04000901000188410000881C7E00806 +S3154001B0E091E800029DE3BFA003100124C20060C4A1 +S3154001B0F080A0600002800005841020009FC04000AF +S3154001B100901000188410000881C7E00891E80002F9 +S3154001B1109DE3BFA003100124C20060C880A0600067 +S3154001B12002800005841020009FC040009010001846 +S3154001B1308410000881C7E00891E800029DE3BFA0A2 +S3154001B14003100124C20060CC8410001880A0600066 +S3154001B15002800006B0102000901000029FC04000FF +S3154001B16092100019B010000881C7E00881E800007C +S3154001B170010000000310006C821062289FC040004D +S3154001B1800100000003100000821060008198400019 +S3154001B1900310006C821062909FC0400001000000C5 +S3154001B1A00310006C821062189FC04000010000002D +S3154001B1B08B4440008B31601C80A140001280000608 +S3154001B1C0010000007FFFFE96010000007FFF99B25B +S3154001B1D0010000009C23A0407FFF978A01000000E8 +S3154001B1E08210200191D020000100000029000004B6 +S3154001B1F0A68C001432800003A02C001491D02000AC +S3154001B200818C0000010000000100000001000000E7 +S3154001B21081C4800081CCA00481C3E0080100000004 +S3154001B22081C1E00801000000A74800008B34E01806 +S3154001B2308A09600380A160031280000801000000B2 +S3154001B24021100123A0142044A2102003E22400006F +S3154001B2508B444000108000018A09601F271001239A +S3154001B260A614E03CCA24C0008A01600127100123CC +S3154001B270A614E038CA24C00027100123A614E040D2 +S3154001B2808A216002CA24C00081C3E008010000008F +S3154001B29081C3E00801000000834800008330601844 +S3154001B2A08208600380A0600312800006010000004E +S3154001B2B0834440000500000882284002A3804000E4 +S3154001B2C0881000000910006C81C121740100000042 +S3154001B2D09DE3BFA02110007023100070A014203000 +S3154001B2E0A214603080A400111A80000B01000000F6 +S3154001B2F0D004000080A2200002800004A0042004A3 +S3154001B3009FC200000100000080A400112ABFFFFA7D +S3154001B310D004000081C7E00881E80000AA27A0B058 +S3154001B320E0256060E2256064E4256068C2256074BA +S3154001B330C43D6078C83D6080CC3D60888540000052 +S3154001B340C425606CF03D6090F43D6098F83D60A086 +S3154001B350FC3D60A8A8102001A92D0010808D001386 +S3154001B36002800013010000008534E001071001232B +S3154001B370C600E03CA72CC0038414C0028408A0FF89 +S3154001B38081E000008190A000E03BA000E43BA008E2 +S3154001B390E83BA010EC3BA018F03BA020F43BA028D2 +S3154001B3A0F83BA030FC3BA03881E8000081C5A008ED +S3154001B3B09C100015051001248410A0A0C400800033 +S3154001B3C080A0800002800004010000009FC0800030 +S3154001B3D09203A060818C20008210200283284010B5 +S3154001B3E005100123C400A038853040028210400276 +S3154001B3F08550000080888001028000208328A001BA +S3154001B40007100123C600E03C8530800382104002CC +S3154001B410820860FF81906000C203A06C8180600059 +S3154001B420F01BA090F41BA098F81BA0A0FC1BA0A8A1 +S3154001B430C203A074C41BA078C81BA080CC1BA088E3 +S3154001B440E003A060E203A064E403A06881E8000091 +S3154001B450E01BA000E41BA008E81BA010EC1BA018F1 +S3154001B460F01BA020F41BA028F81BA030FC1BA03821 +S3154001B4701080000F81E00000C203A06C8180600053 +S3154001B480F01BA090F41BA098F81BA0A0FC1BA0A841 +S3154001B490C203A074C41BA078C81BA080CC1BA08883 +S3154001B4A0E003A060E203A064E403A068818C20006D +S3154001B4B001000000010000000100000081C44000BD +S3154001B4C081CC8000AA27A0B0C2256074C43D6078B3 +S3154001B4D0C83D6080CC3D608885400000C425606CD5 +S3154001B4E0A8102001A92D0010808D001302800013A1 +S3154001B4F0010000008534E00107100123C600E03C4D +S3154001B500A72CC0038414C0028408A0FF81E0000078 +S3154001B5108190A000E03BA000E43BA008E83BA010DE +S3154001B520EC3BA018F03BA020F43BA028F83BA03010 +S3154001B530FC3BA03881E8000081C5A0089C1000159D +S3154001B540051001248410A0A0C400800080A08000C2 +S3154001B55002800004010000009FC080009203A060A9 +S3154001B560818C20008210200283284010051001237F +S3154001B570C400A03885304002821040028550000048 +S3154001B58080888001028000198328A00107100123C9 +S3154001B590C600E03C8530800382104002820860FF8D +S3154001B5A081906000C203A06C81806000C203A074D8 +S3154001B5B0C41BA078C81BA080CC1BA08881E80000D2 +S3154001B5C0E01BA000E41BA008E81BA010EC1BA01880 +S3154001B5D0F01BA020F41BA028F81BA030FC1BA038B0 +S3154001B5E01080000881E00000C203A06C81806000E9 +S3154001B5F0C203A074C41BA078C81BA080CC1BA08822 +S3154001B600818C2000010000000100000001000000C3 +S3154001B61081C4400081CC8000821000089A10380015 +S3154001B62096102000912AE00598034008D40340086B +S3154001B6309132A01880A20001328000089602E001F2 +S3154001B6409132A00C900A2FFF80A2000902800007C8 +S3154001B6509410000C9602E00180A2E00728BFFFF398 +S3154001B660912AE0059410200081C3E0089010000A59 +S3154001B6708210000898102000912B20039A00400860 +S3154001B680D60040089132E01880A2000932800008B5 +S3154001B690980320019132E00C900A2FFF80A2000A04 +S3154001B6A0028000079610000D9803200180A3200F09 +S3154001B6B028BFFFF3912B20039610200081C3E00899 +S3154001B6C09010000BD4022004173FFC00920A400B55 +S3154001B6D0900A800B9132200C921240081100003FD3 +S3154001B6E0901223F0940A8008952AA0049412800BA4 +S3154001B6F0920A400A81C3E008901000099DE3BFA069 +S3154001B700860E60FF80A6A0030880002A84100018D8 +S3154001B710808E20033280002A821020008328E00890 +S3154001B7208210400380A6A00F852860109A10001849 +S3154001B730841080018810001A0880001182100018B8 +S3154001B740C4204000C4206004C4206008C420600CAA +S3154001B75088013FF080A1200F18BFFFFA82006010D8 +S3154001B7608206BFF0B408600F9A087FF080A6A00356 +S3154001B7709A0360100880000E9A06000D8210200080 +S3154001B780C4234001820060048826800180A12003F1 +S3154001B79038BFFFFDC42340018206BFFCB4086003E5 +S3154001B7A082087FFC820060049A0340018410000DE8 +S3154001B7B080A6A0000280000782102000C6288001D2 +S3154001B7C08200600180A0401A32BFFFFEC628800178 +S3154001B7D081C7E00881E800009DE3BFA02110007009 +S3154001B7E0A0142018C2043FFC80A07FFF02800008FD +S3154001B7F0A0043FFC9FC04000A0043FFCC2040000DF +S3154001B80080A07FFF12BFFFFC0100000081C7E00856 +S3154001B81081E800009DE3BFA081C7E00881E8000000 +S3154001B8200000001000000000017A5200047C0F0164 +S3154001B8301B0C0E000000001000000018FFFE595CB2 +S3154001B8400000007000000000000000180000002CFD +S3154001B850FFFE59B8000000B400410D1E2D4A090FE4 +S3154001B8601F0000000000001800000048FFFE5A506B +S3154001B870000000D800410D1E2D6C090F1F0000006D +S3154001B8800000001800000064FFFE5B0C0000047815 +S3154001B89000410D1E2D4D090F1F000000000000182C +S3154001B8A000000080FFFE5F680000008800410D1E19 +S3154001B8B02D5B090F1F000000000000180000009CCE +S3154001B8C0FFFE5FD40000009000410D1E2D43090F7D +S3154001B8D01F00000000000014000000B8FFFE604891 +S3154001B8E00000002000410D1E2D090F1F0000001011 +S3154001B8F0000000D0FFFE60500000001C0000000068 +S3154001B90000000010000000E4FFFE60580000001C2B +S3154001B9100000000000000010000000F8FFFE60601B +S3154001B9200000001C00000000000000100000010C97 +S3154001B930FFFE60680000001C0000000000000014CB +S3154001B94000000120FFFE60700000002C00410D1E2A +S3154001B9502D090F1F0000001800000138FFFE60D0BE +S3154001B9600000004000410D1E2D46090F1F0000003A +S3154001B9700000001800000154FFFE60F4000002249C +S3154001B98000410D1E2D46090F1F0000000000001842 +S3154001B99000000170FFFE62FC0000023400410D1EF2 +S3154001B9A02D47090F1F000000000000180000018C00 +S3154001B9B0FFFE65140000003C00410D1E2D43090F9A +S3154001B9C01F00000000000018000001A8FFFE6534BA +S3154001B9D00000003C00410D1E2D43090F1F000000D1 +S3154001B9E000000014000001C4FFFF46180000039444 +S3154001B9F000410D1E2D090F1F00000010000001DC43 +S3154001BA00FFFF49940000002C0000000000000010D8 +S3154001BA10000001F0FFFF49AC0000002400000000D7 +S3154001BA200000001000000204FFFF49BC000000189E +S3154001BA30000000000000001800000218FFFF49C086 +S3154001BA400000017C00410D1E2D42090F1F00000020 +S3154001BA500000001800000234FFFF4B200000058063 +S3154001BA6000410D1E2D46090F1F0000000000001861 +S3154001BA7000000250FFFF50840000051800410D1ED2 +S3154001BA802D43090F1F000000000000140000026C46 +S3154001BA90FFFF55800000010C00410D1E2D090F1FAF +S3154001BAA00000001000000284FFFF567400000018D9 +S3154001BAB0000000000000001400000298FFFF5678C5 +S3154001BAC00000020800410D1E2D090F1F0000001441 +S3154001BAD0000002B0FFFF66FC0000461800410D1E43 +S3154001BAE02D090F1F00000010000002C8FFFFACFC2B +S3154001BAF00000000C0000000000000010000002DC05 +S3154001BB00FFFFACF40000001400000000000000102C +S3154001BB10000002F0FFFFACF400000020000000002E +S3154001BB200000001400000304FFFFAD000000077091 +S3154001BB3000410D1E2D090F1F000000100000031CBF +S3154001BB40FFFFBD880000000C00000000000000104F +S3154001BB5000000330FFFFBD8000000024000000000C +S3154001BB600000001000000344FFFFBD9000000038B4 +S3154001BB70000000000000001000000358FFFFBDB4A4 +S3154001BB800000003800000000000000180000036CAF +S3154001BB90FFFFBDD80000009C00410D1E2D56090F28 +S3154001BBA01F0000000000001800000388FFFFBE5878 +S3154001BBB00000003C00410D1E2D4A090F1F000000E8 +S3154001BBC000000018000003A4FFFFBE780000003CFF +S3154001BBD000410D1E2D4A090F1F00000000000010F4 +S3154001BBE0000003C0FFFFBE980000003800000000BF +S3154001BBF000000018000003D4FFFFBEBC0000003C5B +S3154001BC0000410D1E2D4A090F1F00000000000018BB +S3154001BC10000003F0FFFFBEDC0000003C00410D1EAA +S3154001BC202D4A090F1F000000000000100000040CFF +S3154001BC30FFFFBEFC000000380000000000000018B5 +S3154001BC4000000420FFFFBF2000000EB000430D1E80 +S3154001BC502D4C090F1F000000000000140000043C99 +S3154001BC60FFFFCDB40000002800410D1E2D090F1F16 +S3154001BC700000001400000454FFFFCDC4000003304F +S3154001BC8000410D1E2D090F1F000000140000046C19 +S3154001BC90FFFFD0DC000002B800430D1E2D090F1F27 +S3154001BCA00000001000000484FFFFD6840000000C51 +S3154001BCB0000000000000001000000498FFFFD67C41 +S3154001BCC0000000140000000000000014000004AC55 +S3154001BCD0FFFFD67C0000007C00410D1E2D090F1F81 +S3154001BCE000000010000004C4FFFFDA7800000020C5 +S3154001BCF00000000000000018000004D8FFFFDA84AD +S3154001BD00000000FC00410D1E2D54090F1F000000CC +S3154001BD1000000018000004F4FFFFDB640000012C62 +S3154001BD2000410D1E2D41090F1F00000000000010AB +S3154001BD3000000510FFFFDC740000001C000000003D +S3154001BD400000001000000524FFFFDC7C0000001C01 +S3154001BD50000000000000001800000538FFFFDC84E9 +S3154001BD60000006D800410D1E2D4C090F1F00000092 +S3154001BD700000001000000554FFFFE34000000018DA +S3154001BD80000000000000001000000568FFFFE344CA +S3154001BD900000001800000000000000180000057CAB +S3154001BDA0FFFFE3480000004000410D1E2D42090FF0 +S3154001BDB01F0000000000001400000598FFFFE36C1F +S3154001BDC0000000EC00410D1E2D090F1F0000001858 +S3154001BDD0000005B0FFFFE4400000029C00410D1E3B +S3154001BDE02D43090F1F00000000000018000005CC7C +S3154001BDF0FFFFE6C00000008C00410D1E2D4F090FCC +S3154001BE001F00000000000018000005E8FFFFE730B2 +S3154001BE100000002800410D1E2D44090F1F0000009F +S3154001BE200000001800000604FFFFE73C0000010483 +S3154001BE3000410D1E2D45090F1F0000000000001096 +S3154001BE4000000620FFFFE8240000003C000000003F +S3154001BE500000001800000634FFFFEC0000000088D7 +S3154001BE6000410D1E2D52090F1F0000000000001059 +S3154001BE7000000650FFFFEC6C0000001C00000000B3 +S3154001BE800000001800000664FFFFEC74000001206A +S3154001BE9000410D1E2D58090F1F0000000000001023 +S3154001BEA000000680FFFFEE88000000100000000041 +S3154001BEB00000001800000694FFFFEE84000000B861 +S3154001BEC000410D1E2D48090F1F00000000000018FB +S3154001BED0000006B0FFFFEF200000020C00410D1EDE +S3154001BEE02D4A090F1F00000000000018000006CC73 +S3154001BEF0FFFFF1100000003400410D1E2D47090FD0 +S3154001BF001F00000000000018000006E8FFFFF128AE +S3154001BF100000002C00410D1E2D45090F1F00000099 +S3154001BF200000001800000704FFFFF1380000002C54 +S3154001BF3000410D1E2D45090F1F000000000000188D +S3154001BF4000000720FFFFF1480000002C00410D1EB4 +S3154001BF502D45090F1F000000000000180000073C96 +S3154001BF60FFFFF1580000002C00410D1E2D45090F21 +S3154001BF701F0000000000001800000758FFFFF1688D +S3154001BF800000002C00410D1E2D45090F1F00000029 +S3154001BF900000001800000774FFFFF1780000002C34 +S3154001BFA000410D1E2D45090F1F000000000000181D +S3154001BFB000000790FFFFF1880000003400410D1E8C +S3154001BFC02D47090F1F00000000000018000007ACB4 +S3154001BFD0FFFFF3000000004C00410D1E2D47090FE5 +S3154001BFE01F00000000000018000007C8FFFFF710FF +S3154001BFF0000000DC00410D1E2D76090F1F000000D8 +S3154001C00000000000000000000000000000000000E9 +S3154001C01000000002FFFFFFFF0000000000000000DB +S3154001C02000000002FFFFFFFF0000000000000000CB +S3154001C030343074693934612B3079676979753035B3 +S3154001C0407968617035796934682B612B69697978CA +S3154001C0506869346B35396A30713930356A6B6F7955 +S3154001C06070686F70746A72686961346979302B34AB +S3154001C0700000000000000000400800000000000031 +S3154001C0803CD203AF9EE756163E7AD7F29ABCAF48EA +S3154001C0904004822800000000430000000000000028 +S3154001C0A09DE3BFA07FFF9421010000007FFFFDCBF0 +S3154001C0B00100000081C7E00881E800009DE3BFA0C0 +S3154001C0C07FFF93EF0100000081C7E00881E800008F +S3154001C0D00000000000000000000000000000000019 +S3154001C0E00000000000000000000000000000000009 +S3154001C0F000000000000000000000000000000000F9 +S3154001C10000000000000000000000000000000000E8 +S3154001C11000000000000000000000000000000000D8 +S3154001C12000000000000000000000000000000000C8 +S3154001C13000000000000000000000000000000000B8 +S3154001C14000000000000000000000000000000000A8 +S3154001C1500000000000000000000000000000000098 +S3154001C1600000000000000000000000000000000088 +S3154001C1700000000000000000000000000000000078 +S3154001C1800000000000000000000000000000000068 +S3154001C1900000000000000000000000000000000058 +S3154001C1A00000000000000000000000000000000048 +S3154001C1B00000000000000000000000000000000038 +S3154001C1C00000000000000000000000000000000028 +S3154001C1D00000000000000000000000000000000018 +S3154001C1E00000000000000000000000000000000008 +S3154001C1F000000000000000000000000000000000F8 +S3154001C20000000000000000000000000000000000E7 +S3154001C21000000000000000000000000000000000D7 +S3154001C22000000000000000000000000000000000C7 +S3154001C23000000000000000000000000000000000B7 +S3154001C24000000000000000000000000000000000A7 +S3154001C2500000000000000000000000000000000097 +S3154001C2600000000000000000000000000000000087 +S3154001C2700000000000000000000000000000000077 +S3154001C2800000000000000000000000000000000067 +S3154001C2900000000000000000000000000000000057 +S3154001C2A00000000000000000000000000000000047 +S3154001C2B00000000000000000000000000000000037 +S3154001C2C00000000000000000000000000000000027 +S3154001C2D00000000000000000000000000000000017 +S3154001C2E00000000000000000000000000000000007 +S3154001C2F000000000000000000000000000000000F7 +S3154001C30000000000000000000000000000000000E6 +S3154001C31000000000000000000000000000000000D6 +S3154001C32000000000000000000000000000000000C6 +S3154001C33000000000000000000000000000000000B6 +S3154001C34000000000000000000000000000000000A6 +S3154001C3500000000000000000000000000000000096 +S3154001C3600000000000000000000000000000000086 +S3154001C3700000000000000000000000000000000076 +S3154001C3800000000000000000000000000000000066 +S3154001C3900000000000000000000000000000000056 +S3154001C3A00000000000000000000000000000000046 +S3154001C3B00000000000000000000000000000000036 +S3154001C3C00000000000000000000000000000000026 +S3154001C3D00000000000000000000000000000000016 +S3154001C3E00000000000000000000000000000000006 +S3154001C3F000000000000000000000000000000000F6 +S3154001C40000000000000000000000000000000000E5 +S3154001C41000000000000000000000000000000000D5 +S3154001C42000000000000000000000000000000000C5 +S3154001C43000000000000000000000000000000000B5 +S3154001C44000000000000000000000000000000000A5 +S3154001C4500000000000000000000000000000000095 +S3154001C4600000000000000000000000000000000085 +S3154001C4700000000000000000000000000000000075 +S3154001C4800000000000000000000000000000000065 +S3154001C4900000000000000000000000000000000055 +S3154001C4A00000000000000000000000000000000045 +S3154001C4B00000000000000000000000000000000035 +S3154001C4C00000000000000000000000000000000025 +S3154001C4D00000000000000000000000000000000015 +S3154001C4E00000000000000000000000000000000005 +S3154001C4F000000000000000000000000000000000F5 +S3154001C50000000000000000000000000000000000E4 +S3154001C51000000000000000000000000000000000D4 +S3154001C52000000000000000000000000000000000C4 +S3154001C53000000000000000000000000000000000B4 +S3154001C54000000000000000000000000000000000A4 +S3154001C5500000000000000000000000000000000094 +S3154001C5600000000000000000000000000000000084 +S3154001C5700000000000000000000000000000000074 +S3154001C5800000000000000000000000000000000064 +S3154001C5900000000000000000000000000000000054 +S3154001C5A00000000000000000000000000000000044 +S3154001C5B00000000000000000000000000000000034 +S3154001C5C00000000000000000000000000000000024 +S3154001C5D00000000000000000000000000000000014 +S3154001C5E00000000000000000000000000000000004 +S3154001C5F000000000000000000000000000000000F4 +S3154001C60000000000000000000000000000000000E3 +S3154001C61000000000000000000000000000000000D3 +S3154001C62000000000000000000000000000000000C3 +S3154001C63000000000000000000000000000000000B3 +S3154001C64000000000000000000000000000000000A3 +S3154001C6500000000000000000000000000000000093 +S3154001C6600000000000000000000000000000000083 +S3154001C6700000000000000000000000000000000073 +S3154001C6800000000000000000000000000000000063 +S3154001C6900000000000000000000000000000000053 +S3154001C6A00000000000000000000000000000000043 +S3154001C6B00000000000000000000000000000000033 +S3154001C6C00000000000000000000000000000000023 +S3154001C6D00000000000000000000000000000000013 +S3154001C6E00000000000000000000000000000000003 +S3154001C6F000000000000000000000000000000000F3 +S3154001C70000000000000000000000000000000000E2 +S3154001C71000000000000000000000000000000000D2 +S3154001C72000000000000000000000000000000000C2 +S3154001C73000000000000000000000000000000000B2 +S3154001C74000000000000000000000000000000000A2 +S3154001C7500000000000000000000000000000000092 +S3154001C7600000000000000000000000000000000082 +S3154001C7700000000000000000000000000000000072 +S3154001C7800000000000000000000000000000000062 +S3154001C7900000000000000000000000000000000052 +S3154001C7A00000000000000000000000000000000042 +S3154001C7B00000000000000000000000000000000032 +S3154001C7C00000000000000000000000000000000022 +S3154001C7D00000000000000000000000000000000012 +S3154001C7E00000000000000000000000000000000002 +S3154001C7F000000000000000000000000000000000F2 +S3154001C80000000000000000000000000000000000E1 +S3154001C81000000000000000000000000000000000D1 +S3154001C82000000000000000000000000000000000C1 +S3154001C83000000000000000000000000000000000B1 +S3154001C84000000000000000000000000000000000A1 +S3154001C8500000000000000000000000000000000091 +S3154001C8600000000000000000000000000000000081 +S3154001C8700000000000000000000000000000000071 +S3154001C8800000000000000000000000000000000061 +S3154001C8900000000000000000000000000000000051 +S3154001C8A00000000000000000000000000000000041 +S3154001C8B00000000000000000000000000000000031 +S3154001C8C00000000000000000000000000000000021 +S3154001C8D00000000000000000000000000000000011 +S3154001C8E00000000000000000000000000000000001 +S3154001C8F000000000000000000000000000000000F1 +S3154001C90000000000000000000000000000000000E0 +S3154001C91000000000000000000000000000000000D0 +S3154001C92000000000000000000000000000000000C0 +S3154001C93000000000000000000000000000000000B0 +S3154001C94000000000000000000000000000000000A0 +S3154001C9500000000000000000000000000000000090 +S3154001C9600000000000000000000000000000000080 +S3154001C9700000000000000000000000000000000070 +S3154001C9800000000000000000000000000000000060 +S3154001C9900000000000000000000000000000000050 +S3154001C9A00000000000000000000000000000000040 +S3154001C9B00000000000000000000000000000000030 +S3154001C9C00000000000000000000000000000000020 +S3154001C9D00000000000000000000000000000000010 +S3154001C9E00000000000000000000000000000000000 +S3154001C9F000000000000000000000000000000000F0 +S3154001CA0000000000000000000000000000000000DF +S3154001CA1000000000000000000000000000000000CF +S3154001CA2000000000000000000000000000000000BF +S3154001CA3000000000000000000000000000000000AF +S3154001CA40000000000000000000000000000000009F +S3154001CA50000000000000000000000000000000008F +S3154001CA60000000000000000000000000000000007F +S3154001CA70000000000000000000000000000000006F +S3154001CA80000000000000000000000000000000005F +S3154001CA90000000000000000000000000000000004F +S3154001CAA0000000000000000000000000000000003F +S3154001CAB0000000000000000000000000000000002F +S3154001CAC0000000000000000000000000000000001F +S3154001CAD0000000000000000000000000000000000F +S3154001CAE000000000000000000000000000000000FF +S3154001CAF000000000000000000000000000000000EF +S3154001CB0000000000000000000000000000000000DE +S3154001CB1000000000000000000000000000000000CE +S3154001CB2000000000000000000000000000000000BE +S3154001CB3000000000000000000000000000000000AE +S3154001CB40000000000000000000000000000000009E +S3154001CB50000000000000000000000000000000008E +S3154001CB60000000000000000000000000000000007E +S3154001CB70000000000000000000000000000000006E +S3154001CB80000000000000000000000000000000005E +S3154001CB90000000000000000000000000000000004E +S3154001CBA0000000000000000000000000000000003E +S3154001CBB0000000000000000000000000000000002E +S3154001CBC0000000000000000000000000000000001E +S3154001CBD0000000000000000000000000000000000E +S3154001CBE000000000000000000000000000000000FE +S3154001CBF000000000000000000000000000000000EE +S3154001CC0000000000000000000000000000000000DD +S3154001CC1000000000000000000000000000000000CD +S3154001CC2000000000000000000000000000000000BD +S3154001CC3000000000000000000000000000000000AD +S3154001CC40000000000000000000000000000000009D +S3154001CC50000000000000000000000000000000008D +S3154001CC60000000000000000000000000000000007D +S3154001CC70000000000000000000000000000000006D +S3154001CC80000000000000000000000000000000005D +S3154001CC90000000000000000000000000000000004D +S3154001CCA0000000000000000000000000000000003D +S3154001CCB0000000000000000000000000000000002D +S3154001CCC0000000000000000000000000000000001D +S3154001CCD0000000000000000000000000000000000D +S3154001CCE000000000000000000000000000000000FD +S3154001CCF000000000000000000000000000000000ED +S3154001CD0000000000000000000000000000000000DC +S3154001CD1000000000000000000000000000000000CC +S3154001CD2000000000000000000000000000000000BC +S3154001CD3000000000000000000000000000000000AC +S3154001CD40000000000000000000000000000000009C +S3154001CD50000000000000000000000000000000008C +S3154001CD60000000000000000000000000000000007C +S3154001CD70000000000000000000000000000000006C +S3154001CD80000000000000000000000000000000005C +S3154001CD90000000000000000000000000000000004C +S3154001CDA0000000000000000000000000000000003C +S3154001CDB0000000000000000000000000000000002C +S3154001CDC0000000000000000000000000000000001C +S3154001CDD0000000000000000000000000000000000C +S3154001CDE000000000000000000000000000000000FC +S3154001CDF000000000000000000000000000000000EC +S3154001CE0000000000000000000000000000000000DB +S3154001CE1000000000000000000000000000000000CB +S3154001CE2000000000000000000000000000000000BB +S3154001CE3000000000000000000000000000000000AB +S3154001CE40000000000000000000000000000000009B +S3154001CE50000000000000000000000000000000008B +S3154001CE60000000000000000000000000000000007B +S3154001CE70000000000000000000000000000000006B +S3154001CE80000000000000000000000000000000005B +S3154001CE90000000000000000000000000000000004B +S3154001CEA0000000000000000000000000000000003B +S3154001CEB0000000000000000000000000000000002B +S3154001CEC0000000000000000000000000000000001B +S3154001CED0000000000000000000000000000000000B +S3154001CEE000000000000000000000000000000000FB +S3154001CEF000000000000000000000000000000000EB +S3154001CF0000000000000000000000000000000000DA +S3154001CF1000000000000000000000000000000000CA +S3154001CF2000000000000000000000000000000000BA +S3154001CF3000000000000000000000000000000000AA +S3154001CF40000000000000000000000000000000009A +S3154001CF50000000000000000000000000000000008A +S3154001CF60000000000000000000000000000000007A +S3154001CF70000000000000000000000000000000006A +S3154001CF80000000000000000000000000000000005A +S3154001CF90000000000000000000000000000000004A +S3154001CFA0000000000000000000000000000000003A +S3154001CFB0000000000000000000000000000000002A +S3154001CFC0000000000000000000000000000000001A +S3154001CFD0000000000000000000000000000000000A +S3154001CFE000000000000000000000000000000000FA +S3154001CFF000000000000000000000000000000000EA +S3154001D00000000000000000000000000000000000D9 +S3154001D01000000000000000000000000000000000C9 +S3154001D02000000000000000000000000000000000B9 +S3154001D03000000000000000000000000000000000A9 +S3154001D0400000000000000000000000000000000099 +S3154001D0500000000000000000000000000000000089 +S3154001D0600000000000000000000000000000000079 +S3154001D0700000000000000000000000000000000069 +S3154001D0800000000000000000000000000000000059 +S3154001D0900000000000000000000000000000000049 +S3154001D0A00000000000000000000000000000000039 +S3154001D0B00000000000000000000000000000000029 +S3154001D0C00000000000000000000000000000000019 +S3154001D0D00000000000000000000000000000000009 +S3154001D0E000000000000000000000000000000000F9 +S3154001D0F000000000000000000000000000000000E9 +S3154001D10000000000000000000000000000000000D8 +S3154001D11000000000000000000000000000000000C8 +S3154001D12000000000000000000000000000000000B8 +S3154001D13000000000000000000000000000000000A8 +S3154001D1400000000000000000000000000000000098 +S3154001D1500000000000000000000000000000000088 +S3154001D1600000000000000000000000000000000078 +S3154001D1700000000000000000000000000000000068 +S3154001D1800000000000000000000000000000000058 +S3154001D1900000000000000000000000000000000048 +S3154001D1A00000000000000000000000000000000038 +S3154001D1B00000000000000000000000000000000028 +S3154001D1C00000000000000000000000000000000018 +S3154001D1D00000000000000000000000000000000008 +S3154001D1E000000000000000000000000000000000F8 +S3154001D1F000000000000000000000000000000000E8 +S3154001D20000000000000000000000000000000000D7 +S3154001D21000000000000000000000000000000000C7 +S3154001D22000000000000000000000000000000000B7 +S3154001D23000000000000000000000000000000000A7 +S3154001D2400000000000000000000000000000000097 +S3154001D2500000000000000000000000000000000087 +S3154001D2600000000000000000000000000000000077 +S3154001D2700000000000000000000000000000000067 +S3154001D2800000000000000000000000000000000057 +S3154001D2900000000000000000000000000000000047 +S3154001D2A00000000000000000000000000000000037 +S3154001D2B00000000000000000000000000000000027 +S3154001D2C00000000000000000000000000000000017 +S3154001D2D00000000000000000000000000000000007 +S3154001D2E000000000000000000000000000000000F7 +S3154001D2F000000000000000000000000000000000E7 +S3154001D30000000000000000000000000000000000D6 +S3154001D31000000000000000000000000000000000C6 +S3154001D32000000000000000000000000000000000B6 +S3154001D33000000000000000000000000000000000A6 +S3154001D3400000000000000000000000000000000096 +S3154001D3500000000000000000000000000000000086 +S3154001D3600000000000000000000000000000000076 +S3154001D3700000000000000000000000000000000066 +S3154001D3800000000000000000000000000000000056 +S3154001D3900000000000000000000000000000000046 +S3154001D3A00000000000000000000000000000000036 +S3154001D3B00000000000000000000000000000000026 +S3154001D3C00000000000000000000000000000000016 +S3154001D3D00000000000000000000000000000000006 +S3154001D3E000000000000000000000000000000000F6 +S3154001D3F000000000000000000000000000000000E6 +S3154001D40000000000000000000000000000000000D5 +S3154001D41000000000000000000000000000000000C5 +S3154001D42000000000000000000000000000000000B5 +S3154001D43000000000000000000000000000000000A5 +S3154001D4400000000000000000000000000000000095 +S3154001D4500000000000000000000000000000000085 +S3154001D4600000000000000000000000000000000075 +S3154001D4700000000000000000000000000000000065 +S3154001D4800000000000000000000000000000000055 +S3154001D4900000000000000000000000000000000045 +S3154001D4A00000000000000000000000000000000035 +S3154001D4B00000000000000000000000000000000025 +S3154001D4C00000000000000000000000000000000015 +S3154001D4D00000000000000000000000000000000005 +S3154001D4E000000000000000000000000000000000F5 +S3154001D4F000000000000000000000000000000000E5 +S3154001D50000000000000000000000000000000000D4 +S3154001D51000000000000000000000000000000000C4 +S3154001D52000000000000000000000000000000000B4 +S3154001D53000000000000000000000000000000000A4 +S3154001D5400000000000000000000000000000000094 +S3154001D5500000000000000000000000000000000084 +S3154001D5600000000000000000000000000000000074 +S3154001D5700000000000000000000000000000000064 +S3154001D5800000000000000000000000000000000054 +S3154001D5900000000000000000000000000000000044 +S3154001D5A00000000000000000000000000000000034 +S3154001D5B00000000000000000000000000000000024 +S3154001D5C00000000000000000000000000000000014 +S3154001D5D00000000000000000000000000000000004 +S3154001D5E000000000000000000000000000000000F4 +S3154001D5F000000000000000000000000000000000E4 +S3154001D60000000000000000000000000000000000D3 +S3154001D61000000000000000000000000000000000C3 +S3154001D62000000000000000000000000000000000B3 +S3154001D63000000000000000000000000000000000A3 +S3154001D6400000000000000000000000000000000093 +S3154001D6500000000000000000000000000000000083 +S3154001D6600000000000000000000000000000000073 +S3154001D6700000000000000000000000000000000063 +S3154001D6800000000000000000000000000000000053 +S3154001D6900000000000000000000000000000000043 +S3154001D6A00000000000000000000000000000000033 +S3154001D6B00000000000000000000000000000000023 +S3154001D6C00000000000000000000000000000000013 +S3154001D6D00000000000000000000000000000000003 +S3154001D6E000000000000000000000000000000000F3 +S3154001D6F000000000000000000000000000000000E3 +S3154001D70000000000000000000000000000000000D2 +S3154001D71000000000000000000000000000000000C2 +S3154001D72000000000000000000000000000000000B2 +S3154001D73000000000000000000000000000000000A2 +S3154001D7400000000000000000000000000000000092 +S3154001D7500000000000000000000000000000000082 +S3154001D7600000000000000000000000000000000072 +S3154001D7700000000000000000000000000000000062 +S3154001D7800000000000000000000000000000000052 +S3154001D7900000000000000000000000000000000042 +S3154001D7A00000000000000000000000000000000032 +S3154001D7B00000000000000000000000000000000022 +S3154001D7C00000000000000000000000000000000012 +S3154001D7D00000000000000000000000000000000002 +S3154001D7E000000000000000000000000000000000F2 +S3154001D7F000000000000000000000000000000000E2 +S3154001D80000000000000000000000000000000000D1 +S3154001D81000000000000000000000000000000000C1 +S3154001D82000000000000000000000000000000000B1 +S3154001D83000000000000000000000000000000000A1 +S3154001D8400000000000000000000000000000000091 +S3154001D8500000000000000000000000000000000081 +S3154001D8600000000000000000000000000000000071 +S3154001D8700000000000000000000000000000000061 +S3154001D8800000000000000000000000000000000051 +S3154001D8900000000000000000000000000000000041 +S3154001D8A00000000000000000000000000000000031 +S3154001D8B00000000000000000000000000000000021 +S3154001D8C00000000000000000000000000000000011 +S3154001D8D00000000000000000000000000000000001 +S3154001D8E000000000000000000000000000000000F1 +S3154001D8F000000000000000000000000000000000E1 +S3154001D90000000000000000000000000000000000D0 +S3154001D91000000000000000000000000000000000C0 +S3154001D92000000000000000000000000000000000B0 +S3154001D93000000000000000000000000000000000A0 +S3154001D9400000000000000000000000000000000090 +S3154001D9500000000000000000000000000000000080 +S3154001D9600000000000000000000000000000000070 +S3154001D9700000000000000000000000000000000060 +S3154001D9800000000000000000000000000000000050 +S3154001D9900000000000000000000000000000000040 +S3154001D9A00000000000000000000000000000000030 +S3154001D9B00000000000000000000000000000000020 +S3154001D9C00000000000000000000000000000000010 +S3154001D9D00000000000000000000000000000000000 +S3154001D9E000000000000000000000000000000000F0 +S3154001D9F000000000000000000000000000000000E0 +S3154001DA0000000000000000000000000000000000CF +S3154001DA1000000000000000000000000000000000BF +S3154001DA2000000000000000000000000000000000AF +S3154001DA30000000000000000000000000000000009F +S3154001DA40000000000000000000000000000000008F +S3154001DA50000000000000000000000000000000007F +S3154001DA60000000000000000000000000000000006F +S3154001DA70000000000000000000000000000000005F +S3154001DA80000000000000000000000000000000004F +S3154001DA90000000000000000000000000000000003F +S3154001DAA0000000000000000000000000000000002F +S3154001DAB0000000000000000000000000000000001F +S3154001DAC0000000000000000000000000000000000F +S3154001DAD000000000000000000000000000000000FF +S3154001DAE000000000000000000000000000000000EF +S3154001DAF000000000000000000000000000000000DF +S3154001DB0000000000000000000000000000000000CE +S3154001DB1000000000000000000000000000000000BE +S3154001DB2000000000000000000000000000000000AE +S3154001DB30000000000000000000000000000000009E +S3154001DB40000000000000000000000000000000008E +S3154001DB50000000000000000000000000000000007E +S3154001DB60000000000000000000000000000000006E +S3154001DB70000000000000000000000000000000005E +S3154001DB80000000000000000000000000000000004E +S3154001DB90000000000000000000000000000000003E +S3154001DBA0000000000000000000000000000000002E +S3154001DBB0000000000000000000000000000000001E +S3154001DBC0000000000000000000000000000000000E +S3154001DBD000000000000000000000000000000000FE +S3154001DBE000000000000000000000000000000000EE +S3154001DBF000000000000000000000000000000000DE +S3154001DC0000000000000000000000000000000000CD +S3154001DC1000000000000000000000000000000000BD +S3154001DC2000000000000000000000000000000000AD +S3154001DC30000000000000000000000000000000009D +S3154001DC40000000000000000000000000000000008D +S3154001DC50000000000000000000000000000000007D +S3154001DC60000000000000000000000000000000006D +S3154001DC70000000000000000000000000000000005D +S3154001DC80000000000000000000000000000000004D +S3154001DC90000000000000000000000000000000003D +S3154001DCA0000000000000000000000000000000002D +S3154001DCB0000000000000000000000000000000001D +S3154001DCC0000000000000000000000000000000000D +S3154001DCD000000000000000000000000000000000FD +S3154001DCE000000000000000000000000000000000ED +S3154001DCF000000000000000000000000000000000DD +S3154001DD0000000000000000000000000000000000CC +S3154001DD1000000000000000000000000000000000BC +S3154001DD2000000000000000000000000000000000AC +S3154001DD30000000000000000000000000000000009C +S3154001DD40000000000000000000000000000000008C +S3154001DD50000000000000000000000000000000007C +S3154001DD60000000000000000000000000000000006C +S3154001DD70000000000000000000000000000000005C +S3154001DD80000000000000000000000000000000004C +S3154001DD90000000000000000000000000000000003C +S3154001DDA0000000000000000000000000000000002C +S3154001DDB0000000000000000000000000000000001C +S3154001DDC0000000000000000000000000000000000C +S3154001DDD000000000000000000000000000000000FC +S3154001DDE000000000000000000000000000000000EC +S3154001DDF000000000000000000000000000000000DC +S3154001DE0000000000000000000000000000000000CB +S3154001DE1000000000000000000000000000000000BB +S3154001DE2000000000000000000000000000000000AB +S3154001DE30000000000000000000000000000000009B +S3154001DE40000000000000000000000000000000008B +S3154001DE50000000000000000000000000000000007B +S3154001DE60000000000000000000000000000000006B +S3154001DE70000000000000000000000000000000005B +S3154001DE80000000000000000000000000000000004B +S3154001DE90000000000000000000000000000000003B +S3154001DEA0000000000000000000000000000000002B +S3154001DEB0000000000000000000000000000000001B +S3154001DEC0000000000000000000000000000000000B +S3154001DED000000000000000000000000000000000FB +S3154001DEE000000000000000000000000000000000EB +S3154001DEF000000000000000000000000000000000DB +S3154001DF0000000000000000000000000000000000CA +S3154001DF1000000000000000000000000000000000BA +S3154001DF2000000000000000000000000000000000AA +S3154001DF30000000000000000000000000000000009A +S3154001DF40000000000000000000000000000000008A +S3154001DF50000000000000000000000000000000007A +S3154001DF60000000000000000000000000000000006A +S3154001DF70000000000000000000000000000000005A +S3154001DF80000000000000000000000000000000004A +S3154001DF90000000000000000000000000000000003A +S3154001DFA0000000000000000000000000000000002A +S3154001DFB0000000000000000000000000000000001A +S3154001DFC0000000000000000000000000000000000A +S3154001DFD000000000000000000000000000000000FA +S3154001DFE000000000000000000000000000000000EA +S3154001DFF000000000000000000000000000000000DA +S3154001E00000000000000000000000000000000000C9 +S3154001E01000000000000000000000000000000000B9 +S3154001E02000000000000000000000000000000000A9 +S3154001E0300000000000000000000000000000000099 +S3154001E0400000000000000000000000000000000089 +S3154001E0500000000000000000000000000000000079 +S3154001E0600000000000000000000000000000000069 +S3154001E0700000000000000000000000000000000059 +S3154001E0800000000000000000000000000000000049 +S3154001E0900000000000000000000000000000000039 +S3154001E0A00000000000000000000000000000000029 +S3154001E0B00000000000000000000000000000000019 +S3154001E0C00000000000000000000000000000000009 +S3154001E0D000000000000000000000000000000000F9 +S3154001E0E000000000000000000000000000000000E9 +S3154001E0F000000000000000000000000000000000D9 +S3154001E10000000000000000000000000000000000C8 +S3154001E11000000000000000000000000000000000B8 +S3154001E12000000000000000000000000000000000A8 +S3154001E1300000000000000000000000000000000098 +S3154001E1400000000000000000000000000000000088 +S3154001E1500000000000000000000000000000000078 +S3154001E1600000000000000000000000000000000068 +S3154001E1700000000000000000000000000000000058 +S3154001E1800000000000000000000000000000000048 +S3154001E1900000000000000000000000000000000038 +S3154001E1A00000000000000000000000000000000028 +S3154001E1B00000000000000000000000000000000018 +S3154001E1C00000000000000000000000000000000008 +S3154001E1D000000000000000000000000000000000F8 +S3154001E1E000000000000000000000000000000000E8 +S3154001E1F000000000000000000000000000000000D8 +S3154001E20000000000000000000000000000000000C7 +S3154001E21000000000000000000000000000000000B7 +S3154001E22000000000000000000000000000000000A7 +S3154001E2300000000000000000000000000000000097 +S3154001E2400000000000000000000000000000000087 +S3154001E2500000000000000000000000000000000077 +S3154001E2600000000000000000000000000000000067 +S3154001E2700000000000000000000000000000000057 +S3154001E2800000000000000000000000000000000047 +S3154001E2900000000000000000000000000000000037 +S3154001E2A00000000000000000000000000000000027 +S3154001E2B00000000000000000000000000000000017 +S3154001E2C00000000000000000000000000000000007 +S3154001E2D000000000000000000000000000000000F7 +S3154001E2E000000000000000000000000000000000E7 +S3154001E2F000000000000000000000000000000000D7 +S3154001E30000000000000000000000000000000000C6 +S3154001E31000000000000000000000000000000000B6 +S3154001E32000000000000000000000000000000000A6 +S3154001E3300000000000000000000000000000000096 +S3154001E3400000000000000000000000000000000086 +S3154001E3500000000000000000000000000000000076 +S3154001E3600000000000000000000000000000000066 +S3154001E3700000000000000000000000000000000056 +S3154001E3800000000000000000000000000000000046 +S3154001E3900000000000000000000000000000000036 +S3154001E3A00000000000000000000000000000000026 +S3154001E3B00000000000000000000000000000000016 +S3154001E3C00000000000000000000000000000000006 +S3154001E3D000000000000000000000000000000000F6 +S3154001E3E000000000000000000000000000000000E6 +S3154001E3F000000000000000000000000000000000D6 +S3154001E40000000000000000000000000000000000C5 +S3154001E41000000000000000000000000000000000B5 +S3154001E42000000000000000000000000000000000A5 +S3154001E4300000000000000000000000000000000095 +S3154001E4400000000000000000000000000000000085 +S3154001E4500000000000000000000000000000000075 +S3154001E4600000000000000000000000000000000065 +S3154001E4700000000000000000000000000000000055 +S3154001E4800000000000000000000000000000000045 +S3154001E4900000000000000000000000000000000035 +S3154001E4A00000000000000000000000000000000025 +S3154001E4B00000000000000000000000000000000015 +S3154001E4C00000000000000000000000000000000005 +S3154001E4D000000000000000000000000000000000F5 +S3154001E4E000000000000000000000000000000000E5 +S3154001E4F000000000000000000000000000000000D5 +S3154001E50000000000000000000000000000000000C4 +S3154001E51000000000000000000000000000000000B4 +S3154001E52000000000000000000000000000000000A4 +S3154001E5300000000000000000000000000000000094 +S3154001E5400000000000000000000000000000000084 +S3154001E5500000000000000000000000000000000074 +S3154001E5600000000000000000000000000000000064 +S3154001E5700000000000000000000000000000000054 +S3154001E5800000000000000000000000000000000044 +S3154001E5900000000000000000000000000000000034 +S3154001E5A00000000000000000000000000000000024 +S3154001E5B00000000000000000000000000000000014 +S3154001E5C00000000000000000000000000000000004 +S3154001E5D000000000000000000000000000000000F4 +S3154001E5E000000000000000000000000000000000E4 +S3154001E5F000000000000000000000000000000000D4 +S3154001E60000000000000000000000000000000000C3 +S3154001E61000000000000000000000000000000000B3 +S3154001E62000000000000000000000000000000000A3 +S3154001E6300000000000000000000000000000000093 +S3154001E6400000000000000000000000000000000083 +S3154001E6500000000000000000000000000000000073 +S3154001E6600000000000000000000000000000000063 +S3154001E6700000000000000000000000000000000053 +S3154001E6800000000000000000000000000000000043 +S3154001E6900000000000000000000000000000000033 +S3154001E6A00000000000000000000000000000000023 +S3154001E6B00000000000000000000000000000000013 +S3154001E6C00000000000000000000000000000000003 +S3154001E6D000000000000000000000000000000000F3 +S3154001E6E000000000000000000000000000000000E3 +S3154001E6F000000000000000000000000000000000D3 +S3154001E70000000000000000000000000000000000C2 +S3154001E71000000000000000000000000000000000B2 +S3154001E72000000000000000000000000000000000A2 +S3154001E7300000000000000000000000000000000092 +S3154001E7400000000000000000000000000000000082 +S3154001E7500000000000000000000000000000000072 +S3154001E7600000000000000000000000000000000062 +S3154001E7700000000000000000000000000000000052 +S3154001E7800000000000000000000000000000000042 +S3154001E7900000000000000000000000000000000032 +S3154001E7A00000000000000000000000000000000022 +S3154001E7B00000000000000000000000000000000012 +S3154001E7C00000000000000000000000000000000002 +S3154001E7D000000000000000000000000000000000F2 +S3154001E7E000000000000000000000000000000000E2 +S3154001E7F000000000000000000000000000000000D2 +S3154001E80000000000000000000000000000000000C1 +S3154001E81000000000000000000000000000000000B1 +S3154001E82000000000000000000000000000000000A1 +S3154001E8300000000000000000000000000000000091 +S3154001E8400000000000000000000000000000000081 +S3154001E8500000000000000000000000000000000071 +S3154001E8600000000000000000000000000000000061 +S3154001E8700000000000000000000000000000000051 +S3154001E8800000000000000000000000000000000041 +S3154001E8900000000000000000000000000000000031 +S3154001E8A00000000000000000000000000000000021 +S3154001E8B00000000000000000000000000000000011 +S3154001E8C00000000000000000000000000000000001 +S3154001E8D000000000000000000000000000000000F1 +S3154001E8E000000000000000000000000000000000E1 +S3154001E8F000000000000000000000000000000000D1 +S3154001E90000000000000000000000000000000000C0 +S3154001E91000000000000000000000000000000000B0 +S3154001E92000000000000000000000000000000000A0 +S3154001E9300000000000000000000000000000000090 +S3154001E9400000000000000000000000000000000080 +S3154001E9500000000000000000000000000000000070 +S3154001E9600000000000000000000000000000000060 +S3154001E9700000000000000000000000000000000050 +S3154001E9800000000000000000000000000000000040 +S3154001E9900000000000000000000000000000000030 +S3154001E9A00000000000000000000000000000000020 +S3154001E9B00000000000000000000000000000000010 +S3154001E9C00000000000000000000000000000000000 +S3154001E9D000000000000000000000000000000000F0 +S3154001E9E000000000000000000000000000000000E0 +S3154001E9F000000000000000000000000000000000D0 +S3154001EA0000000000000000000000000000000000BF +S3154001EA1000000000000000000000000000000000AF +S3154001EA20000000000000000000000000000000009F +S3154001EA30000000000000000000000000000000008F +S3154001EA40000000000000000000000000000000007F +S3154001EA50000000000000000000000000000000006F +S3154001EA60000000000000000000000000000000005F +S3154001EA70000000000000000000000000000000004F +S3154001EA80000000000000000000000000000000003F +S3154001EA90000000000000000000000000000000002F +S3154001EAA0000000000000000000000000000000001F +S3154001EAB0000000000000000000000000000000000F +S3154001EAC000000000000000000000000000000000FF +S3154001EAD000000000000000000000000000000000EF +S3154001EAE000000000000000000000000000000000DF +S3154001EAF000000000000000000000000000000000CF +S3154001EB0000000000000000000000000000000000BE +S3154001EB1000000000000000000000000000000000AE +S3154001EB20000000000000000000000000000000009E +S3154001EB30000000000000000000000000000000008E +S3154001EB40000000000000000000000000000000007E +S3154001EB50000000000000000000000000000000006E +S3154001EB60000000000000000000000000000000005E +S3154001EB70000000000000000000000000000000004E +S3154001EB80000000000000000000000000000000003E +S3154001EB90000000000000000000000000000000002E +S3154001EBA0000000000000000000000000000000001E +S3154001EBB0000000000000000000000000000000000E +S3154001EBC000000000000000000000000000000000FE +S3154001EBD000000000000000000000000000000000EE +S3154001EBE000000000000000000000000000000000DE +S3154001EBF000000000000000000000000000000000CE +S3154001EC0000000000000000000000000000000000BD +S3154001EC1000000000000000000000000000000000AD +S3154001EC20000000000000000000000000000000009D +S3154001EC30000000000000000000000000000000008D +S3154001EC40000000000000000000000000000000007D +S3154001EC50000000000000000000000000000000006D +S3154001EC60000000000000000000000000000000005D +S3154001EC70000000000000000000000000000000004D +S3154001EC80000000000000000000000000000000003D +S3154001EC90000000000000000000000000000000002D +S3154001ECA0000000000000000000000000000000001D +S3154001ECB0000000000000000000000000000000000D +S3154001ECC000000000000000000000000000000000FD +S3154001ECD000000000000000000000000000000000ED +S3154001ECE000000000000000000000000000000000DD +S3154001ECF000000000000000000000000000000000CD +S3154001ED0000000000000000000000000000000000BC +S3154001ED1000000000000000000000000000000000AC +S3154001ED20000000000000000000000000000000009C +S3154001ED30000000000000000000000000000000008C +S3154001ED40000000000000000000000000000000007C +S3154001ED50000000000000000000000000000000006C +S3154001ED60000000000000000000000000000000005C +S3154001ED70000000000000000000000000000000004C +S3154001ED80000000000000000000000000000000003C +S3154001ED90000000000000000000000000000000002C +S3154001EDA0000000000000000000000000000000001C +S3154001EDB0000000000000000000000000000000000C +S3154001EDC000000000000000000000000000000000FC +S3154001EDD000000000000000000000000000000000EC +S3154001EDE000000000000000000000000000000000DC +S3154001EDF000000000000000000000000000000000CC +S3154001EE0000000000000000000000000000000000BB +S3154001EE1000000000000000000000000000000000AB +S3154001EE20000000000000000000000000000000009B +S3154001EE30000000000000000000000000000000008B +S3154001EE40000000000000000000000000000000007B +S3154001EE50000000000000000000000000000000006B +S3154001EE60000000000000000000000000000000005B +S3154001EE70000000000000000000000000000000004B +S3154001EE80000000000000000000000000000000003B +S3154001EE90000000000000000000000000000000002B +S3154001EEA0000000000000000000000000000000001B +S3154001EEB0000000000000000000000000000000000B +S3154001EEC000000000000000000000000000000000FB +S3154001EED000000000000000000000000000000000EB +S3154001EEE000000000000000000000000000000000DB +S3154001EEF000000000000000000000000000000000CB +S3154001EF0000000000000000000000000000000000BA +S3154001EF1000000000000000000000000000000000AA +S3154001EF20000000000000000000000000000000009A +S3154001EF30000000000000000000000000000000008A +S3154001EF40000000000000000000000000000000007A +S3154001EF50000000000000000000000000000000006A +S3154001EF60000000000000000000000000000000005A +S3154001EF70000000000000000000000000000000004A +S3154001EF80000000000000000000000000000000003A +S3154001EF90000000000000000000000000000000002A +S3154001EFA0000000000000000000000000000000001A +S3154001EFB0000000000000000000000000000000000A +S3154001EFC000000000000000000000000000000000FA +S3154001EFD000000000000000000000000000000000EA +S3154001EFE000000000000000000000000000000000DA +S3154001EFF000000000000000000000000000000000CA +S3154001F00000000000000000000000000000000000B9 +S3154001F01000000000000000000000000000000000A9 +S3154001F0200000000000000000000000000000000099 +S3154001F0300000000000000000000000000000000089 +S3154001F0400000000000000000000000000000000079 +S3154001F0500000000000000000000000000000000069 +S3154001F0600000000000000000000000000000000059 +S3154001F0700000000000000000000000000000000049 +S3154001F0800000000000000000000000000000000039 +S3154001F0900000000000000000000000000000000029 +S3154001F0A00000000000000000000000000000000019 +S3154001F0B00000000000000000000000000000000009 +S3154001F0C000000000000000000000000000000000F9 +S3154001F0D000000000000000000000000000000000E9 +S3154001F0E000000000000000000000000000000000D9 +S3154001F0F000000000000000000000000000000000C9 +S3154001F10000000000000000000000000000000000B8 +S3154001F11000000000000000000000000000000000A8 +S3154001F1200000000000000000000000000000000098 +S3154001F1300000000000000000000000000000000088 +S3154001F1400000000000000000000000000000000078 +S3154001F1500000000000000000000000000000000068 +S3154001F1600000000000000000000000000000000058 +S3154001F1700000000000000000000000000000000048 +S3154001F1800000000000000000000000000000000038 +S3154001F1900000000000000000000000000000000028 +S3154001F1A00000000000000000000000000000000018 +S3154001F1B00000000000000000000000000000000008 +S3154001F1C000000000000000000000000000000000F8 +S3154001F1D000000000000000000000000000000000E8 +S3154001F1E000000000000000000000000000000000D8 +S3154001F1F000000000000000000000000000000000C8 +S3154001F20000000000000000000000000000000000B7 +S3154001F21000000000000000000000000000000000A7 +S3154001F2200000000000000000000000000000000097 +S3154001F2300000000000000000000000000000000087 +S3154001F2400000000000000000000000000000000077 +S3154001F2500000000000000000000000000000000067 +S3154001F2600000000000000000000000000000000057 +S3154001F2700000000000000000000000000000000047 +S3154001F2800000000000000000000000000000000037 +S3154001F2900000000000000000000000000000000027 +S3154001F2A00000000000000000000000000000000017 +S3154001F2B00000000000000000000000000000000007 +S3154001F2C000000000000000000000000000000000F7 +S3154001F2D000000000000000000000000000000000E7 +S3154001F2E000000000000000000000000000000000D7 +S3154001F2F000000000000000000000000000000000C7 +S3154001F30000000000000000000000000000000000B6 +S3154001F31000000000000000000000000000000000A6 +S3154001F3200000000000000000000000000000000096 +S3154001F3300000000000000000000000000000000086 +S3154001F3400000000000000000000000000000000076 +S3154001F3500000000000000000000000000000000066 +S3154001F3600000000000000000000000000000000056 +S3154001F3700000000000000000000000000000000046 +S3154001F3800000000000000000000000000000000036 +S3154001F3900000000000000000000000000000000026 +S3154001F3A00000000000000000000000000000000016 +S3154001F3B00000000000000000000000000000000006 +S3154001F3C000000000000000000000000000000000F6 +S3154001F3D000000000000000000000000000000000E6 +S3154001F3E000000000000000000000000000000000D6 +S3154001F3F000000000000000000000000000000000C6 +S3154001F40000000000000000000000000000000000B5 +S3154001F41000000000000000000000000000000000A5 +S3154001F4200000000000000000000000000000000095 +S3154001F4300000000000000000000000000000000085 +S3154001F4400000000000000000000000000000000075 +S3154001F4500000000000000000000000000000000065 +S3154001F4600000000000000000000000000000000055 +S3154001F4700000000000000000000000000000000045 +S3154001F4800000000000000000000000000000000035 +S3154001F4900000000000000000000000000000000025 +S3154001F4A00000000000000000000000000000000015 +S3154001F4B00000000000000000000000000000000005 +S3154001F4C000000000000000000000000000000000F5 +S3154001F4D000000000000000000000000000000000E5 +S3154001F4E000000000000000000000000000000000D5 +S3154001F4F000000000000000000000000000000000C5 +S3154001F50000000000000000000000000000000000B4 +S3154001F51000000000000000000000000000000000A4 +S3154001F5200000000000000000000000000000000094 +S3154001F5300000000000000000000000000000000084 +S3154001F5400000000000000000000000000000000074 +S3154001F5500000000000000000000000000000000064 +S3154001F5600000000000000000000000000000000054 +S3154001F5700000000000000000000000000000000044 +S3154001F5800000000000000000000000000000000034 +S3154001F5900000000000000000000000000000000024 +S3154001F5A00000000000000000000000000000000014 +S3154001F5B00000000000000000000000000000000004 +S3154001F5C000000000000000000000000000000000F4 +S3154001F5D000000000000000000000000000000000E4 +S3154001F5E000000000000000000000000000000000D4 +S3154001F5F000000000000000000000000000000000C4 +S3154001F60000000000000000000000000000000000B3 +S3154001F61000000000000000000000000000000000A3 +S3154001F6200000000000000000000000000000000093 +S3154001F6300000000000000000000000000000000083 +S3154001F6400000000000000000000000000000000073 +S3154001F6500000000000000000000000000000000063 +S3154001F6600000000000000000000000000000000053 +S3154001F6700000000000000000000000000000000043 +S3154001F6800000000000000000000000000000000033 +S3154001F6900000000000000000000000000000000023 +S3154001F6A00000000000000000000000000000000013 +S3154001F6B00000000000000000000000000000000003 +S3154001F6C000000000000000000000000000000000F3 +S3154001F6D000000000000000000000000000000000E3 +S3154001F6E000000000000000000000000000000000D3 +S3154001F6F000000000000000000000000000000000C3 +S3154001F70000000000000000000000000000000000B2 +S3154001F71000000000000000000000000000000000A2 +S3154001F7200000000000000000000000000000000092 +S3154001F7300000000000000000000000000000000082 +S3154001F7400000000000000000000000000000000072 +S3154001F7500000000000000000000000000000000062 +S3154001F7600000000000000000000000000000000052 +S3154001F7700000000000000000000000000000000042 +S3154001F7800000000000000000000000000000000032 +S3154001F7900000000000000000000000000000000022 +S3154001F7A00000000000000000000000000000000012 +S3154001F7B00000000000000000000000000000000002 +S3154001F7C000000000000000000000000000000000F2 +S3154001F7D000000000000000000000000000000000E2 +S3154001F7E000000000000000000000000000000000D2 +S3154001F7F000000000000000000000000000000000C2 +S3154001F80000000000000000000000000000000000B1 +S3154001F81000000000000000000000000000000000A1 +S3154001F8200000000000000000000000000000000091 +S3154001F8300000000000000000000000000000000081 +S3154001F8400000000000000000000000000000000071 +S3154001F8500000000000000000000000000000000061 +S3154001F8600000000000000000000000000000000051 +S3154001F8700000000000000000000000000000000041 +S3154001F8800000000000000000000000000000000031 +S3154001F8900000000000000000000000000000000021 +S3154001F8A00000000000000000000000000000000011 +S3154001F8B00000000000000000000000000000000001 +S3154001F8C000000000000000000000000000000000F1 +S3154001F8D000000000000000000000000000000000E1 +S3154001F8E000000000000000000000000000000000D1 +S3154001F8F000000000000000000000000000000000C1 +S3154001F90000000000000000000000000000000000B0 +S3154001F91000000000000000000000000000000000A0 +S3154001F9200000000000000000000000000000000090 +S3154001F9300000000000000000000000000000000080 +S3154001F9400000000000000000000000000000000070 +S3154001F9500000000000000000000000000000000060 +S3154001F9600000000000000000000000000000000050 +S3154001F9700000000000000000000000000000000040 +S3154001F9800000000000000000000000000000000030 +S3154001F9900000000000000000000000000000000020 +S3154001F9A00000000000000000000000000000000010 +S3154001F9B00000000000000000000000000000000000 +S3154001F9C000000000000000000000000000000000F0 +S3154001F9D000000000000000000000000000000000E0 +S3154001F9E000000000000000000000000000000000D0 +S3154001F9F000000000000000000000000000000000C0 +S3154001FA0000000000000000000000000000000000AF +S3154001FA10000000000000000000000000000000009F +S3154001FA20000000000000000000000000000000008F +S3154001FA30000000000000000000000000000000007F +S3154001FA40000000000000000000000000000000006F +S3154001FA50000000000000000000000000000000005F +S3154001FA60000000000000000000000000000000004F +S3154001FA70000000000000000000000000000000003F +S3154001FA80000000000000000000000000000000002F +S3154001FA90000000000000000000000000000000001F +S3154001FAA0000000000000000000000000000000000F +S3154001FAB000000000000000000000000000000000FF +S3154001FAC000000000000000000000000000000000EF +S3154001FAD000000000000000000000000000000000DF +S3154001FAE000000000000000000000000000000000CF +S3154001FAF000000000000000000000000000000000BF +S3154001FB0000000000000000000000000000000000AE +S3154001FB10000000000000000000000000000000009E +S3154001FB20000000000000000000000000000000008E +S3154001FB30000000000000000000000000000000007E +S3154001FB40000000000000000000000000000000006E +S3154001FB50000000000000000000000000000000005E +S3154001FB60000000000000000000000000000000004E +S3154001FB70000000000000000000000000000000003E +S3154001FB80000000000000000000000000000000002E +S3154001FB90000000000000000000000000000000001E +S3154001FBA0000000000000000000000000000000000E +S3154001FBB000000000000000000000000000000000FE +S3154001FBC000000000000000000000000000000000EE +S3154001FBD000000000000000000000000000000000DE +S3154001FBE000000000000000000000000000000000CE +S3154001FBF000000000000000000000000000000000BE +S3154001FC0000000000000000000000000000000000AD +S3154001FC10000000000000000000000000000000009D +S3154001FC20000000000000000000000000000000008D +S3154001FC30000000000000000000000000000000007D +S3154001FC40000000000000000000000000000000006D +S3154001FC50000000000000000000000000000000005D +S3154001FC60000000000000000000000000000000004D +S3154001FC70000000000000000000000000000000003D +S3154001FC80000000000000000000000000000000002D +S3154001FC90000000000000000000000000000000001D +S3154001FCA0000000000000000000000000000000000D +S3154001FCB000000000000000000000000000000000FD +S3154001FCC000000000000000000000000000000000ED +S3154001FCD000000000000000000000000000000000DD +S3154001FCE000000000000000000000000000000000CD +S3154001FCF000000000000000000000000000000000BD +S3154001FD0000000000000000000000000000000000AC +S3154001FD10000000000000000000000000000000009C +S3154001FD20000000000000000000000000000000008C +S3154001FD30000000000000000000000000000000007C +S3154001FD40000000000000000000000000000000006C +S3154001FD50000000000000000000000000000000005C +S3154001FD60000000000000000000000000000000004C +S3154001FD70000000000000000000000000000000003C +S3154001FD80000000000000000000000000000000002C +S3154001FD90000000000000000000000000000000001C +S3154001FDA0000000000000000000000000000000000C +S3154001FDB000000000000000000000000000000000FC +S3154001FDC000000000000000000000000000000000EC +S3154001FDD000000000000000000000000000000000DC +S3154001FDE000000000000000000000000000000000CC +S3154001FDF000000000000000000000000000000000BC +S3154001FE0000000000000000000000000000000000AB +S3154001FE10000000000000000000000000000000009B +S3154001FE20000000000000000000000000000000008B +S3154001FE30000000000000000000000000000000007B +S3154001FE40000000000000000000000000000000006B +S3154001FE50000000000000000000000000000000005B +S3154001FE60000000000000000000000000000000004B +S3154001FE70000000000000000000000000000000003B +S3154001FE80000000000000000000000000000000002B +S3154001FE90000000000000000000000000000000001B +S3154001FEA0000000000000000000000000000000000B +S3154001FEB000000000000000000000000000000000FB +S3154001FEC000000000000000000000000000000000EB +S3154001FED000000000000000000000000000000000DB +S3154001FEE000000000000000000000000000000000CB +S3154001FEF000000000000000000000000000000000BB +S3154001FF0000000000000000000000000000000000AA +S3154001FF10000000000000000000000000000000009A +S3154001FF20000000000000000000000000000000008A +S3154001FF30000000000000000000000000000000007A +S3154001FF40000000000000000000000000000000006A +S3154001FF50000000000000000000000000000000005A +S3154001FF60000000000000000000000000000000004A +S3154001FF70000000000000000000000000000000003A +S3154001FF80000000000000000000000000000000002A +S3154001FF90000000000000000000000000000000001A +S3154001FFA0000000000000000000000000000000000A +S3154001FFB000000000000000000000000000000000FA +S3154001FFC000000000000000000000000000000000EA +S3154001FFD000000000000000000000000000000000DA +S3154001FFE000000000000000000000000000000000CA +S3154001FFF000000000000000000000000000000000BA +S315400200000000000100000000000000002000000087 +S315400200100000000000000000000000000000000098 S315400200200000000000000000000000000000000088 S315400200300000000000000000000000000000000078 S315400200400000000000000000000000000000000068 -S315400200500000000000000000000000010000000057 +S315400200500000000000000001000000000000000057 S315400200600000000000000000000000000000000048 S315400200700000000000000000000000000000000038 S315400200800000000000000000000000000000000028 -S315400200900000000000000000000000000000000117 +S315400200900000000000000000000000010000000017 S315400200A00000000000000000000000000000000008 S315400200B000000000000000000000000000000000F8 S315400200C000000000000000000000000000000000E8 -S315400200D000000000000000000000000000000000D8 -S315400200E00000000100000000000000410000000086 -S315400200F0343074693934612B3079676979753035B2 -S315400201007968617035796934682B612B69697978C8 -S315400201106869346B35396A30713930356A6B6F7953 -S3154002012070686F70746A72686961346979302B34A9 -S315400201300000000000000000000000010000000076 -S3154002014040000000000000004008000000000000DF -S31540020150401800000000000080000000000000007F -S315400201600000000000000000BFF000000000000098 -S31540020170BF800000000000000000000000000000F8 -S315400201800000000000000000000000000000000027 -S315400201903FF00000000000004008000000000000A0 -S315400201A03FF0000040000000000000000000000098 -S315400201B03F800000404000000000000000000000B8 -S315400201C000000000000000000000000000000000E7 -S315400201D0000000000000000048000001000000008E -S315400201E0480000000000000046C000000000000079 -S315400201F03FF0000000000000400000000000000048 -S3154002020040080000000000003F800000000000009F -S31540020210529000000000000052900FF807F60DEBD6 -S3154002022052901FE03F61BAD052902FB8D4E30F48A4 -S3154002023052903F81F636B80C52904F3BD03C0A64FE -S3154002024052905EE68EFAD48B52906E825DA8FC2B5B -S3154002025052907E0F66AFED0752908D8DD3B1D9AADB -S3154002026052909CFDCD8ED0095290AC5F7C69A3C85A -S315400202705290BBB307ACAFDB5290CAF8960E710DE3 -S315400202805290DA304D95FB065290E95A539F492CCB -S315400202905290F876CCDF6CD952910785DD689A295F -S315400202A052911687A8AE14A35291257C5187FD0917 -S315400202B052913463FA37014E5291433EC467EFFB83 -S315400202C05291520CD1372FEB529160CE41341D746C -S315400202D052916F8334644DF952917E2BCA46BAB914 -S315400202E052918CC821D6D3E352919B58598F7C9F09 -S315400202F05291A9DC8F6DF1045291B854E0F496A064 -S315400203005291C6C16B2DB8705291D5224AAE2EE19A -S315400203105291E3779B97F4A85291F1C1799CA8FF39 -S31540020320529200000000000052920E33499A21A9CF -S3154002033052921C5B70D9F82452922A788FC76DE587 -S315400203405292388AC0059C28529246921AD4EA4959 -S315400203505292548EB9151E8552926280B347609668 -S315400203605292706821902E9A52927E451BB944C38E -S3154002037052928C17B9337834529299E01118857596 -S315400203805292A79E3A2CD2E65292B5524AE1278E13 -S315400203905292C2FC595456A75292D09C7B54E03E8C -S315400203A05292DE32C66287415292EBBF4FAFDD4B6D -S315400203B05292F9422C23C47E529306BB705AE7C32B -S315400203C05293142B30A929AB52932191811B0A4196 -S315400203D052932EEE7577041652933C42213EE0C963 -S315400203E05293498C97B10540529356CDEBC9B5E22B -S315400203F0529364063044530652937135779C8DCBA3 -S3154002040052937E5BD40F95A152938B79579D3EAB07 -S315400204105293988E1409212E5293A59A1ADBB257FB -S315400204205293B29D7D6356625293BF984CB56C7798 -S315400204305293CC8A99AF54535293D97474F76DF24E -S315400204405293E655EEFE13675293F32F17FE8D0431 -S31540020450529400000000000052940CC8B6D657C20F -S31540020460529419894C2329F052942641CF569572BB -S31540020470529432F24FB01C7A52943F9ADC3F79CE74 -S3154002048052944C3B83E57153529458D455549C1A1A -S31540020490529465655F122FF6529471EEAF76C2C6DC -S315400204A052947E7054AF098952948AEA5CBC935F37 -S315400204B05294975CD57680885294A3C7CC8A358A63 -S315400204C05294B02B4F7C0A885294BC876BA7F6ECA9 -S315400204D05294C8DC2E4239805294D529A457FCFC4A -S315400204E05294E16FDACFF9375294EDAEDE6B10FEDD -S315400204F05294F9E6BBC4ECB3529506177F5491BBAE -S3154002050052951241356CF6E052951E63EA3D95B01E -S3154002051052952A7FA9D2F8EA529536948017481006 -S31540020520529542A278D2D03652954EA99FAC8A0FA6 -S3154002053052955AAA002A9D5A529566A3A5B2E1B18E -S31540020540529572969B8B5CD852957E82ECDABE8D22 -S3154002055052958A68A4A8D9F352959647CDDF1CA531 -S315400205605295A220734903775295ADF29F948CFB24 -S315400205705295B9BE5D52A9DA5295C583B6F7AB0319 -S315400205805295D142B6DBADC55295DCFB673B05DFE2 -S315400205905295E8ADD236A58F5295F45A01D483B41A -S315400205A0529600000000000052960B9FD68A455490 -S315400205B0529617398F2AAA48529622CD337F0FE890 -S315400205C052962E5ACD0C3EBE529639E2653E421B9B -S315400205D0529645640568C1C3529650DFB6C759F470 -S315400205E052965C55827DF1D2529667C57199104BEF -S315400205F05296732F8D0E2F7752967E93DDBC0E73D5 -S31540020600529689F26C6B01D05296954B41CD4293EC -S315400206100BC0A4068F346C9B0BC093731C185447B3 -S315400206200BC083008E183C230BC072AE83A9704A5E -S315400206300BC0627C9CC166FF0BC0526A7ACE64A430 -S315400206400BC04277C0B04ADA0BC032A412B191A0B5 -S315400206500BC022EF168069500BC0135873280473DF -S315400206600BC003DFD10A08480BBFE909B3B04632D3 -S315400206700BBFCA8E711B8E880BBFAC4D32D4143061 -S315400206800BBF8E4553D34B1B0BBF7076318237EF70 -S315400206900BBF52DF2BADF99C0BBF357FA47C936C0D -S315400206A00BBF18570061F5EB0BBEFB64A61545154B -S315400206B00BBEDEA7FE865A2B0BBEC22074D37FBC6E -S315400206C00BBEA5CD763F66690BBE89AE722750F04A -S315400206D00BBE6DC2D9F976230BBE520A212B976CFB -S315400206E00BBE3683BD31CAA20BBE1B2F257575CAFA -S315400206F00BBE000BD34C7BAF0BBDE51941F097FE09 -S315400207000BBDCA56EE76E9D00BBDAFC457C7AB7325 -S315400207100BBD9560FE9616690BBD7B2C65587275AE -S315400207200BBD612610404EC00BBD474D8532E409D4 -S315400207300BBD2DA24BC19EDF0BBD1423ED22D10171 -S315400207400BBCFAD1F42A88E40BBCE1ABED438E80B4 -S315400207500BBCC8B1666884820BBCAFE1EF1D2D01AC -S315400207600BBC973D1867D0EF0BBC7EC274CAC962F8 -S315400207700BBC6671983E29FE0BBC4E4A18298BA9C2 -S315400207800BBC364B8B5DF6DB0BBC1E758A0FECBF82 -S315400207900BBC06C7ADD18E7E0BBBEF41918CE1F609 -S315400207A00BBBD7E2D17E33360BBBC0AB0B2E921BB3 -S315400207B00BBBA999DD6E6B650BBB92AEE8503CA7AD -S315400207C00BBB7BE9CD2362720BBB654A2E6F002CB5 -S315400207D00BBB4ECFAFED00FE0BBB3879F685313FF2 -S315400207E00BBB2248A8486FDE0BBB0C3B6C6BF73B3E -S315400207F00BBAF651EB44BCEE0BBAE08BCE42E7F1B4 -S315400208000BBACAE8BFED5CC00BBAB5686BDD5EDDFC -S315400208100BBAA00A7EBA475E0BBA8ACEA6354FEB12 -S315400208200BBA75B4910571DB0BBA60BBEEE358EFB8 -S315400208300BBA4BE4708569410BBA372DC79BD7FE7D -S315400208400BBA2297A6CCD68C0BBA0E21C1B0CFA03A -S315400208500BB9F9CBCCCEB6050BB9E5957D98648B31 -S315400208600BB9D17E8A670EE70BB9BD86AA77C3104C -S315400208700BB9A9AD95E7FAC40BB995F305B23CE5B8 -S315400208800BB98256B3AACE570BB96ED85A7C7206AA -S315400208900BB95B77B5A537C80BB94834817359CCC8 -S315400208A00BB9350E7B02284D0BB922056037032E54 -S315400208B00BB90F18EFBE614A0BB8FC48E908E522AE -S315400208C00BB8E9950C487EA90BB8D6FD1A6D99E886 -S315400208D00BB8C480D5245A340BB8B21FFED1E1BC42 -S315400208E00BB89FDA5A91A5260BB88DAFAC32CB0A1C -S315400208F00BB87B9FB83596F60BB869AA43C8DFE1B9 -S315400209000BB857CF14C791B50BB8460DF1B639C6D9 -S315400209100BB83466A1C09DF90BB822D8ECB75E6E0F -S315400209200BB811649B0DA16B0BB8000975D6C9595A -S315400209300BB7EEC746C434A50BB7DD9DD823075285 -S315400209400BB7CC8CF4D9FE010BB7BB9468674A50FF -S315400209500BB7AAB3FEDE78540BB799EB84E65D0C6F -S315400209600BB7893AC7B70D960BB778A19517DF0132 -S315400209700BB7681FBB5D6E910BB757B50967B24C93 -S315400209800BB747614EA011A20BB737245AF786140C -S315400209900BB726FDFEE4C3A00BB716EE0B6268E862 -S315400209A00BB706F451ED36CE0BB6F710A4824F8044 -S315400209B00BB6E742D59D7CB40BB6D78AB8377D0EC7 -S315400209C00BB6C7E81FC458720BB6B85AE031BB32F1 -S315400209D00BB6A8E2CDE557F90BB6997FBDBB50459C -S315400209E00BB68A318504A35C0BB67AF7F985A39BCD -S315400209F00BB66BD2F17471FF0BB65CC243777FCEF6 -S31540020A000BB64DC5C6A416420BB63EDD527CE4116A -S31540020A100BB63008BEF090CF0BB62147E45855EBE3 -S31540020A200BB6129A9B769D520BB60400BD75A584F1 -S31540020A300BB5F57A23E62B070BB5E706A8BE172CAE -S31540020A400BB5D8A6265733FF0BB5CA58776DE54B7B -S31540020A500BB5BC1D771FE6AB0BB5ADF500EB0E78BB -S31540020A600BB59FDEF0AC15940BB591DB229D63F27C -S31540020A700BB583E97355E1C10BB57609BFC7CD32D4 -S31540020A800BB5683BE53F94B80BB55A7FC162B5B624 -S31540020A900BB54CD5322E9F7F0BB53F3C15F79AA12D -S31540020AA00BB531B44B67B45A0BB5243DB17DAE306C -S31540020AB00BB516D8278BF18F0BB509838D37876710 -S31540020AC00BB4FC3FC27713AE0BB4EF0CA791D4BB69 -S31540020AD00BB4E1EA1D1EA6680BB4D4D8040308E59C -S31540020AE00BB4C7D63D722B370BB4BAE4AAEBF9481E -S31540020AF00BB4AE032E3C2D7E0BB4A131A97965C948 -S31540020B000BB4946FFF043C1C0BB487BE118662364D -S31540020B100BB47B1BC3F1C0BF0BB46E88F97F999BA4 -S31540020B200BB4620595AFAD730BB455917C476454D3 -S31540020B300BB4492C9150F96C0BB43CD6B91AA9C8DE -S31540020B400BB4308FD835E60B0BB42457D3768716C1 -S31540020B500BB4182E8FF205900BB40C13F2FEB43B75 -S31540020B600BB40007E232FD1F0BB3F40A4364A167DC -S31540020B700BB3E81AFCA7FBF00BB3DC39F44F468AF9 -S31540020B800BB3D06710E9E1C30BB3C4A239439F4FFD -S31540020B900BB3B8EB54640EF10BB3AD42498DCDDFC6 -S31540020BA00BB3A1A7003DD89B0BB39619602ADF2B46 -S31540020BB00BB38A9951449BB80BB37F26BBB32B79AF -S31540020BC00BB373C187D669EA0BB368699E454E4437 -S31540020BD00BB35D1EE7CD4B2D0BB351E14D71B09872 -S31540020BE00BB346B0B86B0FC30BB33B8D1226A15A5B -S31540020BF00BB330764445ADAC0BB3256C389CF6EB63 -S31540020C000BB31A6ED934256E0BB30F7E104535F5EC -S31540020C100BB30499C83BE9D60BB2F9C1EBB53923FC -S31540020C200BB2EEF6657EC6AA0BB2E437209655D5D0 -S31540020C300BB2D984082942630BB2CEDD0793F9E79A -S31540020C400BB2C4420A6177190BB2B9B2FC4ABEDA98 -S31540020C500BB2AF2FC9365EFF0BB2A4B85D37EEC1F9 -S31540020C600BB29A4CA48F90E30BB28FEC8BA9777997 -S31540020C700BB28597FF1D694D0BB27B4EEBAE48DD3D -S31540020C800BB271113E499CEE0BB266DEE4071AA81E -S31540020C900BB25CB7CA2831380BB2529BDE1796F7B5 -S31540020CA00BB2488B0D68D8030BB23E8545D7E65A40 -S31540020CB00BB2348A7548AB540BB22A9A89C69A97B4 -S31540020CC00BB220B5718446610BB216DB1ADAF53FD8 -S31540020CD00BB20D0B744A39100BB203466C77876C14 -S31540020CE00BB1F98BF22DD3490BB1EFDBF45D27FF44 -S31540020CF00BB1E636621A457E0BB1DC9B2A9E3DD588 -S31540020D000BB1D30A3D4613EE0BB1C98389925B817F -S31540020D100BB1C006FF26DA3F0BB1B6948DCA2A281C -S31540020D200BB1AD2C25655D0F0BB1A3CDB603A13D2D -S31540020D300BB19A792FD1E7410BB1912E831E88D2FE -S31540020D400BB187EDA058F0D60BB17EB6781144733D -S31540020D500BB17588FAF80D3A0BB16C6519DDE45D95 -S31540020D600BB1634AC5B31EEF0BB15A39EF877B28E5 -S31540020D700BB151328889CEAE0BB148348207B5DB0E -S31540020D800BB13F3FCD6D43FF0BB136545C44B49A31 -S31540020D900BB12D7220361D870BB124990B07221BEE -S31540020DA00BB11BC90E9AA72D0BB113021CF0880F6B -S31540020DB00BB10A4428254C650BB1018F2271DEE541 -S31540020DC00BB0F8E2FE2B44F40BB0F03FADC2572312 -S31540020DD00BB0E7A523C37A850BB0DF1352D65AD997 -S31540020DE00BB0D68A2DBDA58C0BB0CE09A756C589A8 -S31540020DF00BB0C591B2999FDB0BB0BD2242985115FB -S31540020E000BB0B4BB4A7EEB870BB0AC5CBD933636B7 -S31540020E1065300000653010006530200065303000D6 -S31540020E2065304000653050006530600065307000C6 -S31540020E3065308000653090006530A0006530B000B6 -S31540020E406530C0006530D0006530E0006530F000A6 -S31540020E506531000065311000653120006531300092 -S31540020E606531400065315000653160006531700082 -S31540020E7065318000653190006531A0006531B00072 -S31540020E806531C0006531D0006531E0006531F00062 -S31540020E90653200006532100065322000653230004E -S31540020EA0653240006532500065326000653270003E -S31540020EB065328000653290006532A0006532B0002E -S31540020EC06532C0006532D0006532E0006532F0001E -S31540020ED0653300006533100065332000653330000A -S31540020EE065334000653350006533600065337000FA -S31540020EF065338000653390006533A0006533B000EA -S31540020F006533C0006533D0006533E0006533F000D9 -S31540020F1065340000653410006534200065343000C5 -S31540020F2065344000653450006534600065347000B5 -S31540020F3065348000653490006534A0006534B000A5 -S31540020F406534C0006534D0006534E0006534F00095 -S31540020F506535000065351000653520006535300081 -S31540020F606535400065355000653560006535700071 -S31540020F7065358000653590006535A0006535B00061 -S31540020F806535C0006535D0006535E0006535F00051 -S31540020F90653600006536100065362000653630003D -S31540020FA0653640006536500065366000653670002D -S31540020FB065368000653690006536A0006536B0001D -S31540020FC06536C0006536D0006536E0006536F0000D -S31540020FD065370000653710006537200065373000F9 -S31540020FE065374000653750006537600065377000E9 -S31540020FF065378000653790006537A0006537B000D9 -S315400210006537C0006537D0006537E0006537F000C8 -S3154002101065380000653810006538200065383000B4 -S3154002102065384000653850006538600065387000A4 -S3154002103065388000653890006538A0006538B00094 -S315400210406538C0006538D0006538E0006538F00084 -S315400210506539000065391000653920006539300070 -S315400210606539400065395000653960006539700060 -S3154002107065398000653990006539A0006539B00050 -S315400210806539C0006539D0006539E0006539F00040 -S31540021090653A0000653A1000653A2000653A30002C -S315400210A0653A4000653A5000653A6000653A70001C -S315400210B0653A8000653A9000653AA000653AB0000C -S315400210C0653AC000653AD000653AE000653AF000FC -S315400210D0653B0000653B1000653B2000653B3000E8 -S315400210E0653B4000653B5000653B6000653B7000D8 -S315400210F0653B8000653B9000653BA000653BB000C8 -S31540021100653BC000653BD000653BE000653BF000B7 -S31540021110653C0000653C1000653C2000653C3000A3 -S31540021120653C4000653C5000653C6000653C700093 -S31540021130653C8000653C9000653CA000653CB00083 -S31540021140653CC000653CD000653CE000653CF00073 -S31540021150653D0000653D1000653D2000653D30005F -S31540021160653D4000653D5000653D6000653D70004F -S31540021170653D8000653D9000653DA000653DB0003F -S31540021180653DC000653DD000653DE000653DF0002F -S31540021190653E0000653E1000653E2000653E30001B -S315400211A0653E4000653E5000653E6000653E70000B -S315400211B0653E8000653E9000653EA000653EB000FB -S315400211C0653EC000653ED000653EE000653EF000EB -S315400211D0653F0000653F1000653F2000653F3000D7 -S315400211E0653F4000653F5000653F6000653F7000C7 -S315400211F0653F8000653F9000653FA000653FB000B7 -S31540021200653FC000653FD000653FE000653FF000A6 -S315400212104200000000000000400FFFFFFFFFFFFFFB -S315400212204200000000200000420FFFFFFFFFFFFFC9 -S3154002123040000000000000004210000000080000CC -S3154002124042000000000000013EB000000000000124 -S315400212504200000000000002420F484C0137D2080B -S31540021260C20E780F256007AB41BA079B7AF94BA0AD -S315400212704201484C0137D208420E780F256007AB2F -S315400212804217E02D934BECDA420F484C0137D20815 -S31540021290C21E780F256007ABC20DA7D249883D4EC4 -S315400212A0421F484C0137D208C20E780F256007AB61 -S315400212B042100C446E87CE32C03340AB371208918F -S315400212C00000000000000000C03340AB3712089116 -S315400212D00000000000000000C29E7A0F236007A6AD -S315400212E0C29E7A0F236007A66F3F484C0137D20849 -S315400212F06E2E780F256007AB6F3F485B3D3F64B863 -S315400213006F3F484C0137D208EE2E780F256007AB67 -S315400213106F3F483CC5303F587FE2F780AB123809F1 -S315400213207FD00000000000007FEAF780AB12380948 -S31540021330002000000000000080280000000000009D -S3154002134080100000000000007FEFF780AB123809E2 -S315400213507FEFF2010203A1117FF0000000000000BE -S315400213600010000000001000801FFFFFF203A111D1 -S315400213708000000000000000001ABCD000023809BC -S31540021380801ABCD0000001110000000000000000DD -S315400213907E71000000000000416010000000000065 -S315400213A07FE11100000000000178100000000000FB -S315400213B03E880000FFF0000000120C00C073F800E7 -S315400213C0C1EFFFFFC00020003FB3C75D224F280F89 -S315400213D0C1B3C75CFAC08192A12FFF8000001FFFF4 -S315400213E03EE0000000FF0000A01FFF8001FE18073C -S315400213F041CFFFFE0000002040303FFFFFFFFFFDD0 -S3154002140042103FFEFC00000D3FD000003FEFFFFFC1 -S31540021410BFD0000010000000BFB000004FF0003FF8 -S3154002142001701000000000003E8000011A0000001A -S3154002143000000000000000007E7C0000000000006A -S31540021440416A1000010000107FF000000000000019 -S3154002145075012034056AC000FA1009091000104FC0 -S31540021460FFF00000000000000100203040030200AF -S31540021470003020340000A00B0000000000000000F5 -S315400214807FE0001010200001400000000010200AFA -S315400214907FF00000000000003FEFDFF00FFC484AFB -S315400214A0BFF80000000000007FFF000000000000BF -S315400214B07FFFE000000000007FF400000000000013 -S315400214C07FC00000000000007FF80000000000001E -S315400214D07FF0000000000000FFF000000000000066 -S315400214E0FFF0000000000000800000000000000045 -S315400214F000000000000100000000000000000000A3 +S315400200D000000000000000000000000000000001D7 +S315400200E00000000100000000BF8000000000000088 +S315400200F0BFF0000000000000800000000000000089 +S315400201000000000000000000400000000000000067 +S3154002011040080000000000004018000000000000F7 +S315400201200000000000000000000000000000000087 +S3154002013000000000000000003FF000000000000048 +S3154002014040080000000000003FF0000040000000B0 +S3154002015000000000000000003F8000004040000018 +S315400201600000000000000000000000000000000047 +S315400201700000000000000000000000000000000037 +S315400201804800000100000000480000000000000096 +S3154002019046C00000000000003FF0000000000000E2 +S315400201A0400000000000000040080000000000007F +S315400201B03F80000000000000000000000001000037 +S315400201C08000000000000000FFF000000000000078 +S315400201D0FFF00000000000007FF000000000000079 +S315400201E07FF80000000000007FC000000000000011 +S315400201F07FF40000000000007FFFE00000000000E6 +S315400202007FFF000000000000BFF800000000000071 +S315400202103FEFDFF00FFC484A7E710000000000000D +S3154002022041601000000000007FE111000000000064 +S3154002023001781000000000003E880000FFF0000038 +S3154002024000120C00C073F800C1EFFFFFC00020008F +S315400202503FB3C75D224F280FC1B3C75CFAC0819234 +S31540020260A12FFF8000001FFF3EE0000000FF0000BC +S31540020270A01FFF8001FE180741CFFFFE00000020AD +S3154002028040303FFFFFFFFFFD42103FFEFC00000DE6 +S315400202903FD000003FEFFFFFBFD00000100000003C +S315400202A0BFB000004FF0003F017010000000000098 +S315400202B03E8000011A00000000000000000000001D +S315400202C07E7C000000000000416A10000100001020 +S315400202D07FF000000000000075012034056AC0006E +S315400202E0FA1009091000104FFFF00000000000004C +S315400202F00100203040030200003020340000A00BF1 +S3154002030000000000000000007FE000101020000105 +S31540020310400000000010200A7FF0000000000000AC +S315400203204200000000000000400FFFFFFFFFFFFFFA +S315400203304200000000200000420FFFFFFFFFFFFFC8 +S3154002034040000000000000004210000000080000CB +S3154002035042000000000000013EB000000000000123 +S315400203604200000000000002420F484C0137D2080A +S31540020370C20E780F256007AB41BA079B7AF94BA0AC +S315400203804201484C0137D208420E780F256007AB2E +S315400203904217E02D934BECDA420F484C0137D20814 +S315400203A0C21E780F256007ABC20DA7D249883D4EC3 +S315400203B0421F484C0137D208C20E780F256007AB60 +S315400203C042100C446E87CE32C03340AB371208918E +S315400203D00000000000000000C03340AB3712089115 +S315400203E00000000000000000C29E7A0F236007A6AC +S315400203F0C29E7A0F236007A66F3F484C0137D20848 +S315400204006E2E780F256007AB6F3F485B3D3F64B861 +S315400204106F3F484C0137D208EE2E780F256007AB66 +S315400204206F3F483CC5303F587FE2F780AB123809F0 +S315400204307FD00000000000007FEAF780AB12380947 +S31540020440002000000000000080280000000000009C +S3154002045080100000000000007FEFF780AB123809E1 +S315400204607FEFF2010203A1117FF0000000000000BD +S315400204700010000000001000801FFFFFF203A111D0 +S315400204808000000000000000001ABCD000023809BB +S31540020490801ABCD0000001110000000000000000DC +S315400204A06530000065301000653020006530300050 +S315400204B06530400065305000653060006530700040 +S315400204C065308000653090006530A0006530B00030 +S315400204D06530C0006530D0006530E0006530F00020 +S315400204E0653100006531100065312000653130000C +S315400204F065314000653150006531600065317000FC +S3154002050065318000653190006531A0006531B000EB +S315400205106531C0006531D0006531E0006531F000DB +S3154002052065320000653210006532200065323000C7 +S3154002053065324000653250006532600065327000B7 +S3154002054065328000653290006532A0006532B000A7 +S315400205506532C0006532D0006532E0006532F00097 +S315400205606533000065331000653320006533300083 +S315400205706533400065335000653360006533700073 +S3154002058065338000653390006533A0006533B00063 +S315400205906533C0006533D0006533E0006533F00053 +S315400205A0653400006534100065342000653430003F +S315400205B0653440006534500065346000653470002F +S315400205C065348000653490006534A0006534B0001F +S315400205D06534C0006534D0006534E0006534F0000F +S315400205E065350000653510006535200065353000FB +S315400205F065354000653550006535600065357000EB +S3154002060065358000653590006535A0006535B000DA +S315400206106535C0006535D0006535E0006535F000CA +S3154002062065360000653610006536200065363000B6 +S3154002063065364000653650006536600065367000A6 +S3154002064065368000653690006536A0006536B00096 +S315400206506536C0006536D0006536E0006536F00086 +S315400206606537000065371000653720006537300072 +S315400206706537400065375000653760006537700062 +S3154002068065378000653790006537A0006537B00052 +S315400206906537C0006537D0006537E0006537F00042 +S315400206A0653800006538100065382000653830002E +S315400206B0653840006538500065386000653870001E +S315400206C065388000653890006538A0006538B0000E +S315400206D06538C0006538D0006538E0006538F000FE +S315400206E065390000653910006539200065393000EA +S315400206F065394000653950006539600065397000DA +S3154002070065398000653990006539A0006539B000C9 +S315400207106539C0006539D0006539E0006539F000B9 +S31540020720653A0000653A1000653A2000653A3000A5 +S31540020730653A4000653A5000653A6000653A700095 +S31540020740653A8000653A9000653AA000653AB00085 +S31540020750653AC000653AD000653AE000653AF00075 +S31540020760653B0000653B1000653B2000653B300061 +S31540020770653B4000653B5000653B6000653B700051 +S31540020780653B8000653B9000653BA000653BB00041 +S31540020790653BC000653BD000653BE000653BF00031 +S315400207A0653C0000653C1000653C2000653C30001D +S315400207B0653C4000653C5000653C6000653C70000D +S315400207C0653C8000653C9000653CA000653CB000FD +S315400207D0653CC000653CD000653CE000653CF000ED +S315400207E0653D0000653D1000653D2000653D3000D9 +S315400207F0653D4000653D5000653D6000653D7000C9 +S31540020800653D8000653D9000653DA000653DB000B8 +S31540020810653DC000653DD000653DE000653DF000A8 +S31540020820653E0000653E1000653E2000653E300094 +S31540020830653E4000653E5000653E6000653E700084 +S31540020840653E8000653E9000653EA000653EB00074 +S31540020850653EC000653ED000653EE000653EF00064 +S31540020860653F0000653F1000653F2000653F300050 +S31540020870653F4000653F5000653F6000653F700040 +S31540020880653F8000653F9000653FA000653FB00030 +S31540020890653FC000653FD000653FE000653FF00020 +S315400208A00BC0A4068F346C9B0BC093731C18544721 +S315400208B00BC083008E183C230BC072AE83A9704ACC +S315400208C00BC0627C9CC166FF0BC0526A7ACE64A49E +S315400208D00BC04277C0B04ADA0BC032A412B191A023 +S315400208E00BC022EF168069500BC01358732804734D +S315400208F00BC003DFD10A08480BBFE909B3B0463241 +S315400209000BBFCA8E711B8E880BBFAC4D32D41430CE +S315400209100BBF8E4553D34B1B0BBF7076318237EFDD +S315400209200BBF52DF2BADF99C0BBF357FA47C936C7A +S315400209300BBF18570061F5EB0BBEFB64A6154515B8 +S315400209400BBEDEA7FE865A2B0BBEC22074D37FBCDB +S315400209500BBEA5CD763F66690BBE89AE722750F0B7 +S315400209600BBE6DC2D9F976230BBE520A212B976C68 +S315400209700BBE3683BD31CAA20BBE1B2F257575CA67 +S315400209800BBE000BD34C7BAF0BBDE51941F097FE76 +S315400209900BBDCA56EE76E9D00BBDAFC457C7AB7393 +S315400209A00BBD9560FE9616690BBD7B2C655872751C +S315400209B00BBD612610404EC00BBD474D8532E40942 +S315400209C00BBD2DA24BC19EDF0BBD1423ED22D101DF +S315400209D00BBCFAD1F42A88E40BBCE1ABED438E8022 +S315400209E00BBCC8B1666884820BBCAFE1EF1D2D011A +S315400209F00BBC973D1867D0EF0BBC7EC274CAC96266 +S31540020A000BBC6671983E29FE0BBC4E4A18298BA92F +S31540020A100BBC364B8B5DF6DB0BBC1E758A0FECBFEF +S31540020A200BBC06C7ADD18E7E0BBBEF41918CE1F676 +S31540020A300BBBD7E2D17E33360BBBC0AB0B2E921B20 +S31540020A400BBBA999DD6E6B650BBB92AEE8503CA71A +S31540020A500BBB7BE9CD2362720BBB654A2E6F002C22 +S31540020A600BBB4ECFAFED00FE0BBB3879F685313F5F +S31540020A700BBB2248A8486FDE0BBB0C3B6C6BF73BAB +S31540020A800BBAF651EB44BCEE0BBAE08BCE42E7F121 +S31540020A900BBACAE8BFED5CC00BBAB5686BDD5EDD6A +S31540020AA00BBAA00A7EBA475E0BBA8ACEA6354FEB80 +S31540020AB00BBA75B4910571DB0BBA60BBEEE358EF26 +S31540020AC00BBA4BE4708569410BBA372DC79BD7FEEB +S31540020AD00BBA2297A6CCD68C0BBA0E21C1B0CFA0A8 +S31540020AE00BB9F9CBCCCEB6050BB9E5957D98648B9F +S31540020AF00BB9D17E8A670EE70BB9BD86AA77C310BA +S31540020B000BB9A9AD95E7FAC40BB995F305B23CE525 +S31540020B100BB98256B3AACE570BB96ED85A7C720617 +S31540020B200BB95B77B5A537C80BB94834817359CC35 +S31540020B300BB9350E7B02284D0BB922056037032EC1 +S31540020B400BB90F18EFBE614A0BB8FC48E908E5221B +S31540020B500BB8E9950C487EA90BB8D6FD1A6D99E8F3 +S31540020B600BB8C480D5245A340BB8B21FFED1E1BCAF +S31540020B700BB89FDA5A91A5260BB88DAFAC32CB0A89 +S31540020B800BB87B9FB83596F60BB869AA43C8DFE126 +S31540020B900BB857CF14C791B50BB8460DF1B639C647 +S31540020BA00BB83466A1C09DF90BB822D8ECB75E6E7D +S31540020BB00BB811649B0DA16B0BB8000975D6C959C8 +S31540020BC00BB7EEC746C434A50BB7DD9DD8230752F3 +S31540020BD00BB7CC8CF4D9FE010BB7BB9468674A506D +S31540020BE00BB7AAB3FEDE78540BB799EB84E65D0CDD +S31540020BF00BB7893AC7B70D960BB778A19517DF01A0 +S31540020C000BB7681FBB5D6E910BB757B50967B24C00 +S31540020C100BB747614EA011A20BB737245AF7861479 +S31540020C200BB726FDFEE4C3A00BB716EE0B6268E8CF +S31540020C300BB706F451ED36CE0BB6F710A4824F80B1 +S31540020C400BB6E742D59D7CB40BB6D78AB8377D0E34 +S31540020C500BB6C7E81FC458720BB6B85AE031BB325E +S31540020C600BB6A8E2CDE557F90BB6997FBDBB504509 +S31540020C700BB68A318504A35C0BB67AF7F985A39B3A +S31540020C800BB66BD2F17471FF0BB65CC243777FCE63 +S31540020C900BB64DC5C6A416420BB63EDD527CE411D8 +S31540020CA00BB63008BEF090CF0BB62147E45855EB51 +S31540020CB00BB6129A9B769D520BB60400BD75A5845F +S31540020CC00BB5F57A23E62B070BB5E706A8BE172C1C +S31540020CD00BB5D8A6265733FF0BB5CA58776DE54BE9 +S31540020CE00BB5BC1D771FE6AB0BB5ADF500EB0E7829 +S31540020CF00BB59FDEF0AC15940BB591DB229D63F2EA +S31540020D000BB583E97355E1C10BB57609BFC7CD3241 +S31540020D100BB5683BE53F94B80BB55A7FC162B5B691 +S31540020D200BB54CD5322E9F7F0BB53F3C15F79AA19A +S31540020D300BB531B44B67B45A0BB5243DB17DAE30D9 +S31540020D400BB516D8278BF18F0BB509838D3787677D +S31540020D500BB4FC3FC27713AE0BB4EF0CA791D4BBD6 +S31540020D600BB4E1EA1D1EA6680BB4D4D8040308E509 +S31540020D700BB4C7D63D722B370BB4BAE4AAEBF9488B +S31540020D800BB4AE032E3C2D7E0BB4A131A97965C9B5 +S31540020D900BB4946FFF043C1C0BB487BE11866236BB +S31540020DA00BB47B1BC3F1C0BF0BB46E88F97F999B12 +S31540020DB00BB4620595AFAD730BB455917C47645441 +S31540020DC00BB4492C9150F96C0BB43CD6B91AA9C84C +S31540020DD00BB4308FD835E60B0BB42457D37687162F +S31540020DE00BB4182E8FF205900BB40C13F2FEB43BE3 +S31540020DF00BB40007E232FD1F0BB3F40A4364A1674A +S31540020E000BB3E81AFCA7FBF00BB3DC39F44F468A66 +S31540020E100BB3D06710E9E1C30BB3C4A239439F4F6A +S31540020E200BB3B8EB54640EF10BB3AD42498DCDDF33 +S31540020E300BB3A1A7003DD89B0BB39619602ADF2BB3 +S31540020E400BB38A9951449BB80BB37F26BBB32B791C +S31540020E500BB373C187D669EA0BB368699E454E44A4 +S31540020E600BB35D1EE7CD4B2D0BB351E14D71B098DF +S31540020E700BB346B0B86B0FC30BB33B8D1226A15AC8 +S31540020E800BB330764445ADAC0BB3256C389CF6EBD0 +S31540020E900BB31A6ED934256E0BB30F7E104535F55A +S31540020EA00BB30499C83BE9D60BB2F9C1EBB539236A +S31540020EB00BB2EEF6657EC6AA0BB2E437209655D53E +S31540020EC00BB2D984082942630BB2CEDD0793F9E708 +S31540020ED00BB2C4420A6177190BB2B9B2FC4ABEDA06 +S31540020EE00BB2AF2FC9365EFF0BB2A4B85D37EEC167 +S31540020EF00BB29A4CA48F90E30BB28FEC8BA9777905 +S31540020F000BB28597FF1D694D0BB27B4EEBAE48DDAA +S31540020F100BB271113E499CEE0BB266DEE4071AA88B +S31540020F200BB25CB7CA2831380BB2529BDE1796F722 +S31540020F300BB2488B0D68D8030BB23E8545D7E65AAD +S31540020F400BB2348A7548AB540BB22A9A89C69A9721 +S31540020F500BB220B5718446610BB216DB1ADAF53F45 +S31540020F600BB20D0B744A39100BB203466C77876C81 +S31540020F700BB1F98BF22DD3490BB1EFDBF45D27FFB1 +S31540020F800BB1E636621A457E0BB1DC9B2A9E3DD5F5 +S31540020F900BB1D30A3D4613EE0BB1C98389925B81ED +S31540020FA00BB1C006FF26DA3F0BB1B6948DCA2A288A +S31540020FB00BB1AD2C25655D0F0BB1A3CDB603A13D9B +S31540020FC00BB19A792FD1E7410BB1912E831E88D26C +S31540020FD00BB187EDA058F0D60BB17EB678114473AB +S31540020FE00BB17588FAF80D3A0BB16C6519DDE45D03 +S31540020FF00BB1634AC5B31EEF0BB15A39EF877B2853 +S315400210000BB151328889CEAE0BB148348207B5DB7B +S315400210100BB13F3FCD6D43FF0BB136545C44B49A9E +S315400210200BB12D7220361D870BB124990B07221B5B +S315400210300BB11BC90E9AA72D0BB113021CF0880FD8 +S315400210400BB10A4428254C650BB1018F2271DEE5AE +S315400210500BB0F8E2FE2B44F40BB0F03FADC257237F +S315400210600BB0E7A523C37A850BB0DF1352D65AD904 +S315400210700BB0D68A2DBDA58C0BB0CE09A756C58915 +S315400210800BB0C591B2999FDB0BB0BD224298511568 +S315400210900BB0B4BB4A7EEB870BB0AC5CBD93363625 +S315400210A0529000000000000052900FF807F60DEB38 +S315400210B052901FE03F61BAD052902FB8D4E30F4806 +S315400210C052903F81F636B80C52904F3BD03C0A6460 +S315400210D052905EE68EFAD48B52906E825DA8FC2BBD +S315400210E052907E0F66AFED0752908D8DD3B1D9AA3D +S315400210F052909CFDCD8ED0095290AC5F7C69A3C8BC +S315400211005290BBB307ACAFDB5290CAF8960E710D44 +S315400211105290DA304D95FB065290E95A539F492C2C +S315400211205290F876CCDF6CD952910785DD689A29C0 +S3154002113052911687A8AE14A35291257C5187FD0978 +S3154002114052913463FA37014E5291433EC467EFFBE4 +S315400211505291520CD1372FEB529160CE41341D74CD +S3154002116052916F8334644DF952917E2BCA46BAB975 +S3154002117052918CC821D6D3E352919B58598F7C9F6A +S315400211805291A9DC8F6DF1045291B854E0F496A0C5 +S315400211905291C6C16B2DB8705291D5224AAE2EE1FC +S315400211A05291E3779B97F4A85291F1C1799CA8FF9B +S315400211B0529200000000000052920E33499A21A931 +S315400211C052921C5B70D9F82452922A788FC76DE5E9 +S315400211D05292388AC0059C28529246921AD4EA49BB +S315400211E05292548EB9151E8552926280B3476096CA +S315400211F05292706821902E9A52927E451BB944C3F0 +S3154002120052928C17B9337834529299E011188575F7 +S315400212105292A79E3A2CD2E65292B5524AE1278E74 +S315400212205292C2FC595456A75292D09C7B54E03EED +S315400212305292DE32C66287415292EBBF4FAFDD4BCE +S315400212405292F9422C23C47E529306BB705AE7C38C +S315400212505293142B30A929AB52932191811B0A41F7 +S3154002126052932EEE7577041652933C42213EE0C9C4 +S315400212705293498C97B10540529356CDEBC9B5E28C +S31540021280529364063044530652937135779C8DCB04 +S3154002129052937E5BD40F95A152938B79579D3EAB69 +S315400212A05293988E1409212E5293A59A1ADBB2575D +S315400212B05293B29D7D6356625293BF984CB56C77FA +S315400212C05293CC8A99AF54535293D97474F76DF2B0 +S315400212D05293E655EEFE13675293F32F17FE8D0493 +S315400212E0529400000000000052940CC8B6D657C271 +S315400212F0529419894C2329F052942641CF5695721D +S31540021300529432F24FB01C7A52943F9ADC3F79CED5 +S3154002131052944C3B83E57153529458D455549C1A7B +S31540021320529465655F122FF6529471EEAF76C2C63D +S3154002133052947E7054AF098952948AEA5CBC935F98 +S315400213405294975CD57680885294A3C7CC8A358AC4 +S315400213505294B02B4F7C0A885294BC876BA7F6EC0A +S315400213605294C8DC2E4239805294D529A457FCFCAB +S315400213705294E16FDACFF9375294EDAEDE6B10FE3E +S315400213805294F9E6BBC4ECB3529506177F5491BB0F +S3154002139052951241356CF6E052951E63EA3D95B080 +S315400213A052952A7FA9D2F8EA529536948017481068 +S315400213B0529542A278D2D03652954EA99FAC8A0F08 +S315400213C052955AAA002A9D5A529566A3A5B2E1B1F0 +S315400213D0529572969B8B5CD852957E82ECDABE8D84 +S315400213E052958A68A4A8D9F352959647CDDF1CA593 +S315400213F05295A220734903775295ADF29F948CFB86 +S315400214005295B9BE5D52A9DA5295C583B6F7AB037A +S315400214105295D142B6DBADC55295DCFB673B05DF43 +S315400214205295E8ADD236A58F5295F45A01D483B47B +S31540021430529600000000000052960B9FD68A4554F1 +S31540021440529617398F2AAA48529622CD337F0FE8F1 +S3154002145052962E5ACD0C3EBE529639E2653E421BFC +S31540021460529645640568C1C3529650DFB6C759F4D1 +S3154002147052965C55827DF1D2529667C57199104B50 +S315400214805296732F8D0E2F7752967E93DDBC0E7336 +S31540021490529689F26C6B01D05296954B41CD42934E +S315400214A000000000000000000000000000000000F4 +S315400214B000000000000000000000000000000000E4 +S315400214C000000000000000000000000000000000D4 +S315400214D000000000000000000000000000000000C4 +S315400214E000000000000000000000000000000000B4 +S315400214F000000000000000000000000000000000A4 S315400215000000000000000000000000000000000093 S315400215100000000000000000000000000000000083 S315400215200000000000000000000000000000000073 @@ -9051,8 +10239,8 @@ S31540027FC00000000000000000000000000000000069 S31540027FD00000000000000000000000000000000059 S31540027FE00000000000000000000000000000000049 S31540027FF00000000000000000000000000000000039 -S315400280000000003F0000000C0000003F000000128C -S31540028010000000FF00000018000000000000000001 +S315400280000000000000000000000000000000000028 +S315400280100000000000000000000000000000000018 S315400280200000000000000000000000000000000008 S3154002803000000000000000000000000000000000F8 S3154002804000000000000000000000000000000000E8 @@ -15963,8 +17151,8 @@ S31540042FC000000000000000000000000000000000B7 S31540042FD000000000000000000000000000000000A7 S31540042FE00000000000000000000000000000000097 S31540042FF00000000000000000000000000000000087 -S315400430000000000000000000000000000000000076 -S315400430100000000000000000000000000000000066 +S3154004300000000018000000FF000000120000003F0E +S315400430100000000C0000003F00000000000000001B S315400430200000000000000000000000000000000056 S315400430300000000000000000000000000000000046 S315400430400000000000000000000000000000000036 @@ -17243,44 +18431,44 @@ S31540047FC00000000000000000000000000000000067 S31540047FD00000000000000000000000000000000057 S31540047FE00000000000000000000000000000000047 S31540047FF00000000000000000000000000000000037 -S315400480000000000000000000000000000000000026 -S315400480100000000000000000000000000000000016 -S315400480200000000000000000000000000000000006 -S3154004803000000000000000000000000000000000F6 -S3154004804000000000000000000000000000000000E6 -S3154004805000000000000000000000000000000000D6 -S3154004806000000000000000000000000000000000C6 -S3154004807000000000000000000000000000000000B6 -S3154004808000000000000000000000000000000000A6 -S315400480900000000000000000000000000000000096 -S315400480A00000000000000000000000000000000086 -S315400480B00000000000000000000000000000000076 -S315400480C00000000000000000000000000000000066 -S315400480D00000000000000000000000000000000056 -S315400480E00000000000000000000000000000000046 -S315400480F00000000000000000000000000000000036 -S315400481000000000000000000000000000000000025 -S315400481100000000000000000000000000000000015 -S315400481200000000000000000000000000000000005 -S3154004813000000000000000000000000000000000F5 -S3154004814000000000000000000000000000000000E5 -S3154004815000000000000000000000000000000000D5 -S3154004816000000000000000000000000000000000C5 -S3154004817000000000000000000000000000000000B5 -S3154004818000000000000000000000000000000000A5 -S315400481900000000000000000000000000000000095 -S315400481A00000000000000000000000000000000085 -S315400481B00000000000000000000000000000000075 -S315400481C00000000000000000000000000000000065 -S315400481D00000000000000000000000000000000055 -S315400481E00000000000000000000000000000000045 +S31540048000000000020000000300000000000000031E +S31540048010FFFFFFFEFFFFFFFF00000002FFFFFFFD23 +S315400480200000000000000000000000010000000005 +S3154004803000000000FFFFFFFF0000000000000001F9 +S31540048040FFFFFFFFFFFFFFFFFFFFFFFF00000001F1 +S31540048050FFFFFFFFFFFFFFFE0000000300000000DC +S31540048060FFFFFFFEFFFFFFFD0000000000000009C8 +S315400480700000000700000001FFFFFFF700000002B8 +S31540048080FFFFFFFCFFFFFFF800000002FFFFFFFCBD +S31540048090FFFFFFF8FFFFFFFC00000002000000089E +S315400480A0FFFFFFFCFFFFFFFEFFFFFFF8FFFFFFF8A8 +S315400480B000000001FFFFFFF8FFFFFFF7000000008C +S315400480C00000000B00000002000000050000002F25 +S315400480D0000000020000001700003039000002A72B +S315400480E000000012FFFF076C0000004DFFFFFCC6B6 +S315400480F000003039FFFFFD59FFFFFFEEFFFF076C1D +S31540048100FFFFFFB30000033A00000091FFFFE84180 +S3154004811000000000FFFFFD84FFFED02F000000009A +S315400481200000F6FA006E49810000000000000000DD +S3154004813000000000000000000000000200000003F0 +S3154004814000000000000000000000000100000000E4 +S31540048150FFFFFFFE0000000355555554FFFFFFFE89 +S315400481600000000355555554700FFFFE00000007EC +S315400481701002492400000000000000000000000036 +S315400481800000000200000003000000060000000298 +S31540048190FFFFFFFDFFFFFFFA0000000000000001A3 +S315400481A00000000000000000FFFFFFFF0000000089 +S315400481B000000001FFFFFFFFFFFFFFFFFFFFFFFF80 +S315400481C000000001FFFFFFFFFFFFFFFE000000036A +S315400481D0FFFFFFFAFFFFFFFEFFFFFFFD0000000663 +S315400481E0000000000000000000000009FFFFF0004E S315400481F00000000000000000000000000000000035 -S315400482000000000000000000000000000000000024 +S31540048200000000000000000100000002000000031E S315400482100000000000000000000000000000000014 -S315400482200000000000000000000000000000000004 -S3154004823000000000000000000000000000000000F4 +S315400482204004822800000000000000004004851439 +S31540048230400485E0400486AC0000000000000000D5 S3154004824000000000000000000000000000000000E4 -S3154004825000000000000000000000000000000000D4 +S315400482500000000000000000000000004001C0983B S3154004826000000000000000000000000000000000C4 S3154004827000000000000000000000000000000000B4 S3154004828000000000000000000000000000000000A4 @@ -17288,8 +18476,8 @@ S315400482900000000000000000000000000000000094 S315400482A00000000000000000000000000000000084 S315400482B00000000000000000000000000000000074 S315400482C00000000000000000000000000000000064 -S315400482D00000000000000000000000000000000054 -S315400482E00000000000000000000000000000000044 +S315400482D00000000000000001330EABCD1234E66D01 +S315400482E0DEEC0005000B000000000000000000006A S315400482F00000000000000000000000000000000034 S315400483000000000000000000000000000000000023 S315400483100000000000000000000000000000000013 @@ -17363,72 +18551,72 @@ S3154004874000000000000000000000000000000000DF S3154004875000000000000000000000000000000000CF S3154004876000000000000000000000000000000000BF S3154004877000000000000000000000000000000000AF -S31540048780000000000000000000000000000000009F -S31540048790000000000000000000000000000000008F -S315400487A0000000000000000000000000000000007F -S315400487B0000000000000000000000000000000006F -S315400487C0000000000000000000000000000000005F -S315400487D0000000000000000000000000000000004F -S315400487E0000000000000000000000000000000003F -S315400487F0000000000000000000000000000000002F -S31540048800000000000000000000000000000000001E -S31540048810000000000000000000000000000000000E -S3154004882000000000000000000000000000000000FE -S3154004883000000000000000000000000000000000EE -S3154004884000000000000000000000000000000000DE -S3154004885000000000000000000000000000000000CE -S3154004886000000000000000000000000000000000BE -S3154004887000000000000000000000000000000000AE -S31540048880000000000000000000000000000000009E -S31540048890000000000000000000000000000000008E -S315400488A0000000000000000000000000000000007E -S315400488B0000000000000000000000000000000006E -S315400488C0000000000000000000000000000000005E -S315400488D0000000000000000000000000000000004E -S315400488E0000000000000000000000000000000003E -S315400488F0000000000000000000000000000000002E -S31540048900000000000000000000000000000000001D -S31540048910000000000000000000000000000000000D -S3154004892000000000000000000000000000000000FD -S3154004893000000000000000000000000000000000ED -S3154004894000000000000000000000000000000000DD -S3154004895000000000000000000000000000000000CD -S3154004896000000000000000000000000000000000BD -S3154004897000000000000000000000000000000000AD -S31540048980000000000000000000000000000000009D -S31540048990000000000000000000000000000000008D -S315400489A0000000000000000000000000000000007D -S315400489B0000000000000000000000000000000006D -S315400489C0000000000000000000000000000000005D -S315400489D0000000000000000000000000000000004D -S315400489E0000000000000000000000000000000003D -S315400489F0000000000000000000000000000000002D -S31540048A00000000000000000000000000000000001C -S31540048A10000000000000000000000000000000000C -S31540048A2000000000000000000000000000000000FC -S31540048A3000000000000000000000000000000000EC -S31540048A4000000000000000000000000000000000DC -S31540048A5000000000000000000000000000000000CC -S31540048A6000000000000000000000000000000000BC -S31540048A7000000000000000000000000000000000AC -S31540048A80000000000000000000000000000000009C -S31540048A90000000000000000000000000000000008C -S31540048AA0000000000000000000000000000000007C -S31540048AB0000000000000000000000000000000006C -S31540048AC0000000000000000000000000000000005C -S31540048AD0000000000000000000000000000000004C -S31540048AE0000000000000000000000000000000003C -S31540048AF0000000000000000000000000000000002C -S31540048B00000000000000000000000000000000001B -S31540048B10000000000000000000000000000000000B -S31540048B2000000000000000000000000000000000FB -S31540048B3000000000000000000000000000000000EB -S31540048B4000000000000000000000000000000000DB -S31540048B5000000000000000000000000000000000CB -S31540048B6000000000000000000000000000000000BB -S31540048B7000000000000000000000000000000000AB -S31540048B80000000000000000000000000000000009B -S31540048B90000000000000000000000000000000008B +S315400487804004877840048778400487804004878083 +S315400487904004878840048788400487904004879033 +S315400487A04004879840048798400487A0400487A0E3 +S315400487B0400487A8400487A8400487B0400487B093 +S315400487C0400487B8400487B8400487C0400487C043 +S315400487D0400487C8400487C8400487D0400487D0F3 +S315400487E0400487D8400487D8400487E0400487E0A3 +S315400487F0400487E8400487E8400487F0400487F053 +S31540048800400487F8400487F8400488004004880000 +S3154004881040048808400488084004881040048810AE +S31540048820400488184004881840048820400488205E +S31540048830400488284004882840048830400488300E +S3154004884040048838400488384004884040048840BE +S31540048850400488484004884840048850400488506E +S31540048860400488584004885840048860400488601E +S3154004887040048868400488684004887040048870CE +S31540048880400488784004887840048880400488807E +S31540048890400488884004888840048890400488902E +S315400488A04004889840048898400488A0400488A0DE +S315400488B0400488A8400488A8400488B0400488B08E +S315400488C0400488B8400488B8400488C0400488C03E +S315400488D0400488C8400488C8400488D0400488D0EE +S315400488E0400488D8400488D8400488E0400488E09E +S315400488F0400488E8400488E8400488F0400488F04E +S31540048900400488F8400488F84004890040048900FB +S3154004891040048908400489084004891040048910A9 +S315400489204004891840048918400489204004892059 +S315400489304004892840048928400489304004893009 +S3154004894040048938400489384004894040048940B9 +S315400489504004894840048948400489504004895069 +S315400489604004895840048958400489604004896019 +S3154004897040048968400489684004897040048970C9 +S315400489804004897840048978400489804004898079 +S315400489904004898840048988400489904004899029 +S315400489A04004899840048998400489A0400489A0D9 +S315400489B0400489A8400489A8400489B0400489B089 +S315400489C0400489B8400489B8400489C0400489C039 +S315400489D0400489C8400489C8400489D0400489D0E9 +S315400489E0400489D8400489D8400489E0400489E099 +S315400489F0400489E8400489E8400489F0400489F049 +S31540048A00400489F8400489F840048A0040048A00F6 +S31540048A1040048A0840048A0840048A1040048A10A4 +S31540048A2040048A1840048A1840048A2040048A2054 +S31540048A3040048A2840048A2840048A3040048A3004 +S31540048A4040048A3840048A3840048A4040048A40B4 +S31540048A5040048A4840048A4840048A5040048A5064 +S31540048A6040048A5840048A5840048A6040048A6014 +S31540048A7040048A6840048A6840048A7040048A70C4 +S31540048A8040048A7840048A7840048A8040048A8074 +S31540048A9040048A8840048A8840048A9040048A9024 +S31540048AA040048A9840048A9840048AA040048AA0D4 +S31540048AB040048AA840048AA840048AB040048AB084 +S31540048AC040048AB840048AB840048AC040048AC034 +S31540048AD040048AC840048AC840048AD040048AD0E4 +S31540048AE040048AD840048AD840048AE040048AE094 +S31540048AF040048AE840048AE840048AF040048AF044 +S31540048B0040048AF840048AF840048B0040048B00F1 +S31540048B1040048B0840048B0840048B1040048B109F +S31540048B2040048B1840048B1840048B2040048B204F +S31540048B3040048B2840048B2840048B3040048B30FF +S31540048B4040048B3840048B3840048B4040048B40AF +S31540048B5040048B4840048B4840048B5040048B505F +S31540048B6040048B5840048B5840048B6040048B600F +S31540048B7040048B6840048B6840048B7040048B70BF +S31540048B8000020000FFFFFFFF0000000040048B8846 +S31540048B900000000000000000000000000000000289 S31540048BA0000000000000000000000000000000007B S31540048BB0000000000000000000000000000000006B S31540048BC0000000000000000000000000000000005B @@ -17437,2056 +18625,7 @@ S31540048BE0000000000000000000000000000000003B S31540048BF0000000000000000000000000000000002B S31540048C00000000000000000000000000000000001A S31540048C10000000000000000000000000000000000A -S31540048C2000000000000000000000000000000000FA -S31540048C3000000000000000000000000000000000EA -S31540048C4000000000000000000000000000000000DA -S31540048C5000000000000000000000000000000000CA -S31540048C6000000000000000000000000000000000BA -S31540048C7000000000000000000000000000000000AA -S31540048C80000000000000000000000000000000009A -S31540048C90000000000000000000000000000000008A -S31540048CA0000000000000000000000000000000007A -S31540048CB0000000000000000000000000000000006A -S31540048CC0000000000000000000000000000000005A -S31540048CD0000000000000000000000000000000004A -S31540048CE0000000000000000000000000000000003A -S31540048CF0000000000000000000000000000000002A -S31540048D000000000000000000000000000000000019 -S31540048D100000000000000000000000000000000009 -S31540048D2000000000000000000000000000000000F9 -S31540048D3000000000000000000000000000000000E9 -S31540048D4000000000000000000000000000000000D9 -S31540048D5000000000000000000000000000000000C9 -S31540048D6000000000000000000000000000000000B9 -S31540048D7000000000000000000000000000000000A9 -S31540048D800000000000000000000000000000000099 -S31540048D900000000000000000000000000000000089 -S31540048DA00000000000000000000000000000000079 -S31540048DB00000000000000000000000000000000069 -S31540048DC00000000000000000000000000000000059 -S31540048DD00000000000000000000000000000000049 -S31540048DE00000000000000000000000000000000039 -S31540048DF00000000000000000000000000000000029 -S31540048E000000000000000000000000000000000018 -S31540048E100000000000000000000000000000000008 -S31540048E2000000000000000000000000000000000F8 -S31540048E3000000000000000000000000000000000E8 -S31540048E4000000000000000000000000000000000D8 -S31540048E5000000000000000000000000000000000C8 -S31540048E6000000000000000000000000000000000B8 -S31540048E7000000000000000000000000000000000A8 -S31540048E800000000000000000000000000000000098 -S31540048E900000000000000000000000000000000088 -S31540048EA00000000000000000000000000000000078 -S31540048EB00000000000000000000000000000000068 -S31540048EC00000000000000000000000000000000058 -S31540048ED00000000000000000000000000000000048 -S31540048EE00000000000000000000000000000000038 -S31540048EF00000000000000000000000000000000028 -S31540048F000000000000000000000000000000000017 -S31540048F100000000000000000000000000000000007 -S31540048F2000000000000000000000000000000000F7 -S31540048F3000000000000000000000000000000000E7 -S31540048F4000000000000000000000000000000000D7 -S31540048F5000000000000000000000000000000000C7 -S31540048F6000000000000000000000000000000000B7 -S31540048F7000000000000000000000000000000000A7 -S31540048F800000000000000000000000000000000097 -S31540048F900000000000000000000000000000000087 -S31540048FA00000000000000000000000000000000077 -S31540048FB00000000000000000000000000000000067 -S31540048FC00000000000000000000000000000000057 -S31540048FD00000000000000000000000000000000047 -S31540048FE00000000000000000000000000000000037 -S31540048FF00000000000000000000000000000000027 -S315400490000000000000000000000000000000000016 -S315400490100000000000000000000000000000000006 -S3154004902000000000000000000000000000000000F6 -S3154004903000000000000000000000000000000000E6 -S3154004904000000000000000000000000000000000D6 -S3154004905000000000000000000000000000000000C6 -S3154004906000000000000000000000000000000000B6 -S3154004907000000000000000000000000000000000A6 -S315400490800000000000000000000000000000000096 -S315400490900000000000000000000000000000000086 -S315400490A00000000000000000000000000000000076 -S315400490B00000000000000000000000000000000066 -S315400490C00000000000000000000000000000000056 -S315400490D00000000000000000000000000000000046 -S315400490E00000000000000000000000000000000036 -S315400490F00000000000000000000000000000000026 -S315400491000000000000000000000000000000000015 -S315400491100000000000000000000000000000000005 -S3154004912000000000000000000000000000000000F5 -S3154004913000000000000000000000000000000000E5 -S3154004914000000000000000000000000000000000D5 -S3154004915000000000000000000000000000000000C5 -S3154004916000000000000000000000000000000000B5 -S3154004917000000000000000000000000000000000A5 -S315400491800000000000000000000000000000000095 -S315400491900000000000000000000000000000000085 -S315400491A00000000000000000000000000000000075 -S315400491B00000000000000000000000000000000065 -S315400491C00000000000000000000000000000000055 -S315400491D00000000000000000000000000000000045 -S315400491E00000000000000000000000000000000035 -S315400491F00000000000000000000000000000000025 -S315400492000000000000000000000000000000000014 -S315400492100000000000000000000000000000000004 -S3154004922000000000000000000000000000000000F4 -S3154004923000000000000000000000000000000000E4 -S3154004924000000000000000000000000000000000D4 -S3154004925000000000000000000000000000000000C4 -S3154004926000000000000000000000000000000000B4 -S3154004927000000000000000000000000000000000A4 -S315400492800000000000000000000000000000000094 -S315400492900000000000000000000000000000000084 -S315400492A00000000000000000000000000000000074 -S315400492B00000000000000000000000000000000064 -S315400492C00000000000000000000000000000000054 -S315400492D00000000000000000000000000000000044 -S315400492E00000000000000000000000000000000034 -S315400492F00000000000000000000000000000000024 -S315400493000000000000000000000000000000000013 -S315400493100000000000000000000000000000000003 -S3154004932000000000000000000000000000000000F3 -S3154004933000000000000000000000000000000000E3 -S3154004934000000000000000000000000000000000D3 -S3154004935000000000000000000000000000000000C3 -S3154004936000000000000000000000000000000000B3 -S3154004937000000000000000000000000000000000A3 -S315400493800000000000000000000000000000000093 -S315400493900000000000000000000000000000000083 -S315400493A00000000000000000000000000000000073 -S315400493B00000000000000000000000000000000063 -S315400493C00000000000000000000000000000000053 -S315400493D00000000000000000000000000000000043 -S315400493E00000000000000000000000000000000033 -S315400493F00000000000000000000000000000000023 -S315400494000000000000000000000000000000000012 -S315400494100000000000000000000000000000000002 -S3154004942000000000000000000000000000000000F2 -S3154004943000000000000000000000000000000000E2 -S3154004944000000000000000000000000000000000D2 -S3154004945000000000000000000000000000000000C2 -S3154004946000000000000000000000000000000000B2 -S3154004947000000000000000000000000000000000A2 -S315400494800000000000000000000000000000000092 -S315400494900000000000000000000000000000000082 -S315400494A00000000000000000000000000000000072 -S315400494B00000000000000000000000000000000062 -S315400494C00000000000000000000000000000000052 -S315400494D00000000000000000000000000000000042 -S315400494E00000000000000000000000000000000032 -S315400494F00000000000000000000000000000000022 -S315400495000000000000000000000000000000000011 -S315400495100000000000000000000000000000000001 -S3154004952000000000000000000000000000000000F1 -S3154004953000000000000000000000000000000000E1 -S3154004954000000000000000000000000000000000D1 -S3154004955000000000000000000000000000000000C1 -S3154004956000000000000000000000000000000000B1 -S3154004957000000000000000000000000000000000A1 -S315400495800000000000000000000000000000000091 -S315400495900000000000000000000000000000000081 -S315400495A00000000000000000000000000000000071 -S315400495B00000000000000000000000000000000061 -S315400495C00000000000000000000000000000000051 -S315400495D00000000000000000000000000000000041 -S315400495E00000000000000000000000000000000031 -S315400495F00000000000000000000000000000000021 -S315400496000000000000000000000000000000000010 -S315400496100000000000000000000000000000000000 -S3154004962000000000000000000000000000000000F0 -S3154004963000000000000000000000000000000000E0 -S3154004964000000000000000000000000000000000D0 -S3154004965000000000000000000000000000000000C0 -S3154004966000000000000000000000000000000000B0 -S3154004967000000000000000000000000000000000A0 -S315400496800000000000000000000000000000000090 -S315400496900000000000000000000000000000000080 -S315400496A00000000000000000000000000000000070 -S315400496B00000000000000000000000000000000060 -S315400496C00000000000000000000000000000000050 -S315400496D00000000000000000000000000000000040 -S315400496E00000000000000000000000000000000030 -S315400496F00000000000000000000000000000000020 -S31540049700000000000000000000000000000000000F -S3154004971000000000000000000000000000000000FF -S3154004972000000000000000000000000000000000EF -S3154004973000000000000000000000000000000000DF -S3154004974000000000000000000000000000000000CF -S3154004975000000000000000000000000000000000BF -S3154004976000000000000000000000000000000000AF -S31540049770000000000000000000000000000000009F -S31540049780000000000000000000000000000000008F -S31540049790000000000000000000000000000000007F -S315400497A0000000000000000000000000000000006F -S315400497B0000000000000000000000000000000005F -S315400497C0000000000000000000000000000000004F -S315400497D0000000000000000000000000000000003F -S315400497E0000000000000000000000000000000002F -S315400497F0000000000000000000000000000000001F -S31540049800000000000000000000000000000000000E -S3154004981000000000000000000000000000000000FE -S3154004982000000000000000000000000000000000EE -S3154004983000000000000000000000000000000000DE -S3154004984000000000000000000000000000000000CE -S3154004985000000000000000000000000000000000BE -S3154004986000000000000000000000000000000000AE -S31540049870000000000000000000000000000000009E -S31540049880000000000000000000000000000000008E -S31540049890000000000000000000000000000000007E -S315400498A0000000000000000000000000000000006E -S315400498B0000000000000000000000000000000005E -S315400498C0000000000000000000000000000000004E -S315400498D0000000000000000000000000000000003E -S315400498E0000000000000000000000000000000002E -S315400498F0000000000000000000000000000000001E -S31540049900000000000000000000000000000000000D -S3154004991000000000000000000000000000000000FD -S3154004992000000000000000000000000000000000ED -S3154004993000000000000000000000000000000000DD -S3154004994000000000000000000000000000000000CD -S3154004995000000000000000000000000000000000BD -S3154004996000000000000000000000000000000000AD -S31540049970000000000000000000000000000000009D -S31540049980000000000000000000000000000000008D -S31540049990000000000000000000000000000000007D -S315400499A0000000000000000000000000000000006D -S315400499B0000000000000000000000000000000005D -S315400499C0000000000000000000000000000000004D -S315400499D0000000000000000000000000000000003D -S315400499E0000000000000000000000000000000002D -S315400499F0000000000000000000000000000000001D -S31540049A00000000000000000000000000000000000C -S31540049A1000000000000000000000000000000000FC -S31540049A2000000000000000000000000000000000EC -S31540049A3000000000000000000000000000000000DC -S31540049A4000000000000000000000000000000000CC -S31540049A5000000000000000000000000000000000BC -S31540049A6000000000000000000000000000000000AC -S31540049A70000000000000000000000000000000009C -S31540049A80000000000000000000000000000000008C -S31540049A90000000000000000000000000000000007C -S31540049AA0000000000000000000000000000000006C -S31540049AB0000000000000000000000000000000005C -S31540049AC0000000000000000000000000000000004C -S31540049AD0000000000000000000000000000000003C -S31540049AE0000000000000000000000000000000002C -S31540049AF0000000000000000000000000000000001C -S31540049B00000000000000000000000000000000000B -S31540049B1000000000000000000000000000000000FB -S31540049B2000000000000000000000000000000000EB -S31540049B3000000000000000000000000000000000DB -S31540049B4000000000000000000000000000000000CB -S31540049B5000000000000000000000000000000000BB -S31540049B6000000000000000000000000000000000AB -S31540049B70000000000000000000000000000000009B -S31540049B80000000000000000000000000000000008B -S31540049B90000000000000000000000000000000007B -S31540049BA0000000000000000000000000000000006B -S31540049BB0000000000000000000000000000000005B -S31540049BC0000000000000000000000000000000004B -S31540049BD0000000000000000000000000000000003B -S31540049BE0000000000000000000000000000000002B -S31540049BF0000000000000000000000000000000001B -S31540049C00000000000000000000000000000000000A -S31540049C1000000000000000000000000000000000FA -S31540049C2000000000000000000000000000000000EA -S31540049C3000000000000000000000000000000000DA -S31540049C4000000000000000000000000000000000CA -S31540049C5000000000000000000000000000000000BA -S31540049C6000000000000000000000000000000000AA -S31540049C70000000000000000000000000000000009A -S31540049C80000000000000000000000000000000008A -S31540049C90000000000000000000000000000000007A -S31540049CA0000000000000000000000000000000006A -S31540049CB0000000000000000000000000000000005A -S31540049CC0000000000000000000000000000000004A -S31540049CD0000000000000000000000000000000003A -S31540049CE0000000000000000000000000000000002A -S31540049CF0000000000000000000000000000000001A -S31540049D000000000000000000000000000000000009 -S31540049D1000000000000000000000000000000000F9 -S31540049D2000000000000000000000000000000000E9 -S31540049D3000000000000000000000000000000000D9 -S31540049D4000000000000000000000000000000000C9 -S31540049D5000000000000000000000000000000000B9 -S31540049D6000000000000000000000000000000000A9 -S31540049D700000000000000000000000000000000099 -S31540049D800000000000000000000000000000000089 -S31540049D900000000000000000000000000000000079 -S31540049DA00000000000000000000000000000000069 -S31540049DB00000000000000000000000000000000059 -S31540049DC00000000000000000000000000000000049 -S31540049DD00000000000000000000000000000000039 -S31540049DE00000000000000000000000000000000029 -S31540049DF00000000000000000000000000000000019 -S31540049E000000000000000000000000000000000008 -S31540049E1000000000000000000000000000000000F8 -S31540049E2000000000000000000000000000000000E8 -S31540049E3000000000000000000000000000000000D8 -S31540049E4000000000000000000000000000000000C8 -S31540049E5000000000000000000000000000000000B8 -S31540049E6000000000000000000000000000000000A8 -S31540049E700000000000000000000000000000000098 -S31540049E800000000000000000000000000000000088 -S31540049E900000000000000000000000000000000078 -S31540049EA00000000000000000000000000000000068 -S31540049EB00000000000000000000000000000000058 -S31540049EC00000000000000000000000000000000048 -S31540049ED00000000000000000000000000000000038 -S31540049EE00000000000000000000000000000000028 -S31540049EF00000000000000000000000000000000018 -S31540049F000000000000000000000000000000000007 -S31540049F1000000000000000000000000000000000F7 -S31540049F2000000000000000000000000000000000E7 -S31540049F3000000000000000000000000000000000D7 -S31540049F4000000000000000000000000000000000C7 -S31540049F5000000000000000000000000000000000B7 -S31540049F6000000000000000000000000000000000A7 -S31540049F700000000000000000000000000000000097 -S31540049F800000000000000000000000000000000087 -S31540049F900000000000000000000000000000000077 -S31540049FA00000000000000000000000000000000067 -S31540049FB00000000000000000000000000000000057 -S31540049FC00000000000000000000000000000000047 -S31540049FD00000000000000000000000000000000037 -S31540049FE00000000000000000000000000000000027 -S31540049FF00000000000000000000000000000000017 -S3154004A0000000000000000000000000000000000006 -S3154004A01000000000000000000000000000000000F6 -S3154004A02000000000000000000000000000000000E6 -S3154004A03000000000000000000000000000000000D6 -S3154004A04000000000000000000000000000000000C6 -S3154004A05000000000000000000000000000000000B6 -S3154004A06000000000000000000000000000000000A6 -S3154004A0700000000000000000000000000000000096 -S3154004A0800000000000000000000000000000000086 -S3154004A0900000000000000000000000000000000076 -S3154004A0A00000000000000000000000000000000066 -S3154004A0B00000000000000000000000000000000056 -S3154004A0C00000000000000000000000000000000046 -S3154004A0D00000000000000000000000000000000036 -S3154004A0E00000000000000000000000000000000026 -S3154004A0F00000000000000000000000000000000016 -S3154004A1000000000000000000000000000000000005 -S3154004A11000000000000000000000000000000000F5 -S3154004A12000000000000000000000000000000000E5 -S3154004A13000000000000000000000000000000000D5 -S3154004A14000000000000000000000000000000000C5 -S3154004A15000000000000000000000000000000000B5 -S3154004A16000000000000000000000000000000000A5 -S3154004A1700000000000000000000000000000000095 -S3154004A1800000000000000000000000000000000085 -S3154004A1900000000000000000000000000000000075 -S3154004A1A00000000000000000000000000000000065 -S3154004A1B00000000000000000000000000000000055 -S3154004A1C00000000000000000000000000000000045 -S3154004A1D00000000000000000000000000000000035 -S3154004A1E00000000000000000000000000000000025 -S3154004A1F00000000000000000000000000000000015 -S3154004A2000000000000000000000000000000000004 -S3154004A21000000000000000000000000000000000F4 -S3154004A22000000000000000000000000000000000E4 -S3154004A23000000000000000000000000000000000D4 -S3154004A24000000000000000000000000000000000C4 -S3154004A25000000000000000000000000000000000B4 -S3154004A26000000000000000000000000000000000A4 -S3154004A2700000000000000000000000000000000094 -S3154004A2800000000000000000000000000000000084 -S3154004A2900000000000000000000000000000000074 -S3154004A2A00000000000000000000000000000000064 -S3154004A2B00000000000000000000000000000000054 -S3154004A2C00000000000000000000000000000000044 -S3154004A2D00000000000000000000000000000000034 -S3154004A2E00000000000000000000000000000000024 -S3154004A2F00000000000000000000000000000000014 -S3154004A3000000000000000000000000000000000003 -S3154004A31000000000000000000000000000000000F3 -S3154004A32000000000000000000000000000000000E3 -S3154004A33000000000000000000000000000000000D3 -S3154004A34000000000000000000000000000000000C3 -S3154004A35000000000000000000000000000000000B3 -S3154004A36000000000000000000000000000000000A3 -S3154004A3700000000000000000000000000000000093 -S3154004A3800000000000000000000000000000000083 -S3154004A3900000000000000000000000000000000073 -S3154004A3A00000000000000000000000000000000063 -S3154004A3B00000000000000000000000000000000053 -S3154004A3C00000000000000000000000000000000043 -S3154004A3D00000000000000000000000000000000033 -S3154004A3E00000000000000000000000000000000023 -S3154004A3F00000000000000000000000000000000013 -S3154004A4000000000000000000000000000000000002 -S3154004A41000000000000000000000000000000000F2 -S3154004A42000000000000000000000000000000000E2 -S3154004A43000000000000000000000000000000000D2 -S3154004A44000000000000000000000000000000000C2 -S3154004A45000000000000000000000000000000000B2 -S3154004A46000000000000000000000000000000000A2 -S3154004A4700000000000000000000000000000000092 -S3154004A4800000000000000000000000000000000082 -S3154004A4900000000000000000000000000000000072 -S3154004A4A00000000000000000000000000000000062 -S3154004A4B00000000000000000000000000000000052 -S3154004A4C00000000000000000000000000000000042 -S3154004A4D00000000000000000000000000000000032 -S3154004A4E00000000000000000000000000000000022 -S3154004A4F00000000000000000000000000000000012 -S3154004A5000000000000000000000000000000000001 -S3154004A51000000000000000000000000000000000F1 -S3154004A52000000000000000000000000000000000E1 -S3154004A53000000000000000000000000000000000D1 -S3154004A54000000000000000000000000000000000C1 -S3154004A55000000000000000000000000000000000B1 -S3154004A56000000000000000000000000000000000A1 -S3154004A5700000000000000000000000000000000091 -S3154004A5800000000000000000000000000000000081 -S3154004A5900000000000000000000000000000000071 -S3154004A5A00000000000000000000000000000000061 -S3154004A5B00000000000000000000000000000000051 -S3154004A5C00000000000000000000000000000000041 -S3154004A5D00000000000000000000000000000000031 -S3154004A5E00000000000000000000000000000000021 -S3154004A5F00000000000000000000000000000000011 -S3154004A6000000000000000000000000000000000000 -S3154004A61000000000000000000000000000000000F0 -S3154004A62000000000000000000000000000000000E0 -S3154004A63000000000000000000000000000000000D0 -S3154004A64000000000000000000000000000000000C0 -S3154004A65000000000000000000000000000000000B0 -S3154004A66000000000000000000000000000000000A0 -S3154004A6700000000000000000000000000000000090 -S3154004A6800000000000000000000000000000000080 -S3154004A6900000000000000000000000000000000070 -S3154004A6A00000000000000000000000000000000060 -S3154004A6B00000000000000000000000000000000050 -S3154004A6C00000000000000000000000000000000040 -S3154004A6D00000000000000000000000000000000030 -S3154004A6E00000000000000000000000000000000020 -S3154004A6F00000000000000000000000000000000010 -S3154004A70000000000000000000000000000000000FF -S3154004A71000000000000000000000000000000000EF -S3154004A72000000000000000000000000000000000DF -S3154004A73000000000000000000000000000000000CF -S3154004A74000000000000000000000000000000000BF -S3154004A75000000000000000000000000000000000AF -S3154004A760000000000000000000000000000000009F -S3154004A770000000000000000000000000000000008F -S3154004A780000000000000000000000000000000007F -S3154004A790000000000000000000000000000000006F -S3154004A7A0000000000000000000000000000000005F -S3154004A7B0000000000000000000000000000000004F -S3154004A7C0000000000000000000000000000000003F -S3154004A7D0000000000000000000000000000000002F -S3154004A7E0000000000000000000000000000000001F -S3154004A7F0000000000000000000000000000000000F -S3154004A80000000000000000000000000000000000FE -S3154004A81000000000000000000000000000000000EE -S3154004A82000000000000000000000000000000000DE -S3154004A83000000000000000000000000000000000CE -S3154004A84000000000000000000000000000000000BE -S3154004A85000000000000000000000000000000000AE -S3154004A860000000000000000000000000000000009E -S3154004A870000000000000000000000000000000008E -S3154004A880000000000000000000000000000000007E -S3154004A890000000000000000000000000000000006E -S3154004A8A0000000000000000000000000000000005E -S3154004A8B0000000000000000000000000000000004E -S3154004A8C0000000000000000000000000000000003E -S3154004A8D0000000000000000000000000000000002E -S3154004A8E0000000000000000000000000000000001E -S3154004A8F0000000000000000000000000000000000E -S3154004A90000000000000000000000000000000000FD -S3154004A91000000000000000000000000000000000ED -S3154004A92000000000000000000000000000000000DD -S3154004A93000000000000000000000000000000000CD -S3154004A94000000000000000000000000000000000BD -S3154004A95000000000000000000000000000000000AD -S3154004A960000000000000000000000000000000009D -S3154004A970000000000000000000000000000000008D -S3154004A980000000000000000000000000000000007D -S3154004A990000000000000000000000000000000006D -S3154004A9A0000000000000000000000000000000005D -S3154004A9B0000000000000000000000000000000004D -S3154004A9C0000000000000000000000000000000003D -S3154004A9D0000000000000000000000000000000002D -S3154004A9E0000000000000000000000000000000001D -S3154004A9F0000000000000000000000000000000000D -S3154004AA0000000000000000000000000000000000FC -S3154004AA1000000000000000000000000000000000EC -S3154004AA2000000000000000000000000000000000DC -S3154004AA3000000000000000000000000000000000CC -S3154004AA4000000000000000000000000000000000BC -S3154004AA5000000000000000000000000000000000AC -S3154004AA60000000000000000000000000000000009C -S3154004AA70000000000000000000000000000000008C -S3154004AA80000000000000000000000000000000007C -S3154004AA90000000000000000000000000000000006C -S3154004AAA0000000000000000000000000000000005C -S3154004AAB0000000000000000000000000000000004C -S3154004AAC0000000000000000000000000000000003C -S3154004AAD0000000000000000000000000000000002C -S3154004AAE0000000000000000000000000000000001C -S3154004AAF0000000000000000000000000000000000C -S3154004AB0000000000000000000000000000000000FB -S3154004AB1000000000000000000000000000000000EB -S3154004AB2000000000000000000000000000000000DB -S3154004AB3000000000000000000000000000000000CB -S3154004AB4000000000000000000000000000000000BB -S3154004AB5000000000000000000000000000000000AB -S3154004AB60000000000000000000000000000000009B -S3154004AB70000000000000000000000000000000008B -S3154004AB80000000000000000000000000000000007B -S3154004AB90000000000000000000000000000000006B -S3154004ABA0000000000000000000000000000000005B -S3154004ABB0000000000000000000000000000000004B -S3154004ABC0000000000000000000000000000000003B -S3154004ABD0000000000000000000000000000000002B -S3154004ABE0000000000000000000000000000000001B -S3154004ABF0000000000000000000000000000000000B -S3154004AC0000000000000000000000000000000000FA -S3154004AC1000000000000000000000000000000000EA -S3154004AC2000000000000000000000000000000000DA -S3154004AC3000000000000000000000000000000000CA -S3154004AC4000000000000000000000000000000000BA -S3154004AC5000000000000000000000000000000000AA -S3154004AC60000000000000000000000000000000009A -S3154004AC70000000000000000000000000000000008A -S3154004AC80000000000000000000000000000000007A -S3154004AC90000000000000000000000000000000006A -S3154004ACA0000000000000000000000000000000005A -S3154004ACB0000000000000000000000000000000004A -S3154004ACC0000000000000000000000000000000003A -S3154004ACD0000000000000000000000000000000002A -S3154004ACE0000000000000000000000000000000001A -S3154004ACF0000000000000000000000000000000000A -S3154004AD0000000000000000000000000000000000F9 -S3154004AD1000000000000000000000000000000000E9 -S3154004AD2000000000000000000000000000000000D9 -S3154004AD3000000000000000000000000000000000C9 -S3154004AD4000000000000000000000000000000000B9 -S3154004AD5000000000000000000000000000000000A9 -S3154004AD600000000000000000000000000000000099 -S3154004AD700000000000000000000000000000000089 -S3154004AD800000000000000000000000000000000079 -S3154004AD900000000000000000000000000000000069 -S3154004ADA00000000000000000000000000000000059 -S3154004ADB00000000000000000000000000000000049 -S3154004ADC00000000000000000000000000000000039 -S3154004ADD00000000000000000000000000000000029 -S3154004ADE00000000000000000000000000000000019 -S3154004ADF00000000000000000000000000000000009 -S3154004AE0000000000000000000000000000000000F8 -S3154004AE1000000000000000000000000000000000E8 -S3154004AE2000000000000000000000000000000000D8 -S3154004AE3000000000000000000000000000000000C8 -S3154004AE4000000000000000000000000000000000B8 -S3154004AE5000000000000000000000000000000000A8 -S3154004AE600000000000000000000000000000000098 -S3154004AE700000000000000000000000000000000088 -S3154004AE800000000000000000000000000000000078 -S3154004AE900000000000000000000000000000000068 -S3154004AEA00000000000000000000000000000000058 -S3154004AEB00000000000000000000000000000000048 -S3154004AEC00000000000000000000000000000000038 -S3154004AED00000000000000000000000000000000028 -S3154004AEE00000000000000000000000000000000018 -S3154004AEF00000000000000000000000000000000008 -S3154004AF0000000000000000000000000000000000F7 -S3154004AF1000000000000000000000000000000000E7 -S3154004AF2000000000000000000000000000000000D7 -S3154004AF3000000000000000000000000000000000C7 -S3154004AF4000000000000000000000000000000000B7 -S3154004AF5000000000000000000000000000000000A7 -S3154004AF600000000000000000000000000000000097 -S3154004AF700000000000000000000000000000000087 -S3154004AF800000000000000000000000000000000077 -S3154004AF900000000000000000000000000000000067 -S3154004AFA00000000000000000000000000000000057 -S3154004AFB00000000000000000000000000000000047 -S3154004AFC00000000000000000000000000000000037 -S3154004AFD00000000000000000000000000000000027 -S3154004AFE00000000000000000000000000000000017 -S3154004AFF00000000000000000000000000000000007 -S3154004B00000000000000000000000000000000000F6 -S3154004B01000000000000000000000000000000000E6 -S3154004B02000000000000000000000000000000000D6 -S3154004B03000000000000000000000000000000000C6 -S3154004B04000000000000000000000000000000000B6 -S3154004B05000000000000000000000000000000000A6 -S3154004B0600000000000000000000000000000000096 -S3154004B0700000000000000000000000000000000086 -S3154004B0800000000000000000000000000000000076 -S3154004B0900000000000000000000000000000000066 -S3154004B0A00000000000000000000000000000000056 -S3154004B0B00000000000000000000000000000000046 -S3154004B0C00000000000000000000000000000000036 -S3154004B0D00000000000000000000000000000000026 -S3154004B0E00000000000000000000000000000000016 -S3154004B0F00000000000000000000000000000000006 -S3154004B10000000000000000000000000000000000F5 -S3154004B11000000000000000000000000000000000E5 -S3154004B12000000000000000000000000000000000D5 -S3154004B13000000000000000000000000000000000C5 -S3154004B14000000000000000000000000000000000B5 -S3154004B15000000000000000000000000000000000A5 -S3154004B1600000000000000000000000000000000095 -S3154004B1700000000000000000000000000000000085 -S3154004B1800000000000000000000000000000000075 -S3154004B1900000000000000000000000000000000065 -S3154004B1A00000000000000000000000000000000055 -S3154004B1B00000000000000000000000000000000045 -S3154004B1C00000000000000000000000000000000035 -S3154004B1D00000000000000000000000000000000025 -S3154004B1E00000000000000000000000000000000015 -S3154004B1F00000000000000000000000000000000005 -S3154004B20000000000000000000000000000000000F4 -S3154004B21000000000000000000000000000000000E4 -S3154004B22000000000000000000000000000000000D4 -S3154004B23000000000000000000000000000000000C4 -S3154004B24000000000000000000000000000000000B4 -S3154004B25000000000000000000000000000000000A4 -S3154004B2600000000000000000000000000000000094 -S3154004B2700000000000000000000000000000000084 -S3154004B2800000000000000000000000000000000074 -S3154004B2900000000000000000000000000000000064 -S3154004B2A00000000000000000000000000000000054 -S3154004B2B00000000000000000000000000000000044 -S3154004B2C00000000000000000000000000000000034 -S3154004B2D00000000000000000000000000000000024 -S3154004B2E00000000000000000000000000000000014 -S3154004B2F00000000000000000000000000000000004 -S3154004B30000000000000000000000000000000000F3 -S3154004B31000000000000000000000000000000000E3 -S3154004B32000000000000000000000000000000000D3 -S3154004B33000000000000000000000000000000000C3 -S3154004B34000000000000000000000000000000000B3 -S3154004B35000000000000000000000000000000000A3 -S3154004B3600000000000000000000000000000000093 -S3154004B3700000000000000000000000000000000083 -S3154004B3800000000000000000000000000000000073 -S3154004B3900000000000000000000000000000000063 -S3154004B3A00000000000000000000000000000000053 -S3154004B3B00000000000000000000000000000000043 -S3154004B3C00000000000000000000000000000000033 -S3154004B3D00000000000000000000000000000000023 -S3154004B3E00000000000000000000000000000000013 -S3154004B3F00000000000000000000000000000000003 -S3154004B40000000000000000000000000000000000F2 -S3154004B41000000000000000000000000000000000E2 -S3154004B42000000000000000000000000000000000D2 -S3154004B43000000000000000000000000000000000C2 -S3154004B44000000000000000000000000000000000B2 -S3154004B45000000000000000000000000000000000A2 -S3154004B4600000000000000000000000000000000092 -S3154004B4700000000000000000000000000000000082 -S3154004B4800000000000000000000000000000000072 -S3154004B4900000000000000000000000000000000062 -S3154004B4A00000000000000000000000000000000052 -S3154004B4B00000000000000000000000000000000042 -S3154004B4C00000000000000000000000000000000032 -S3154004B4D00000000000000000000000000000000022 -S3154004B4E00000000000000000000000000000000012 -S3154004B4F00000000000000000000000000000000002 -S3154004B50000000000000000000000000000000000F1 -S3154004B51000000000000000000000000000000000E1 -S3154004B52000000000000000000000000000000000D1 -S3154004B53000000000000000000000000000000000C1 -S3154004B54000000000000000000000000000000000B1 -S3154004B55000000000000000000000000000000000A1 -S3154004B5600000000000000000000000000000000091 -S3154004B5700000000000000000000000000000000081 -S3154004B5800000000000000000000000000000000071 -S3154004B5900000000000000000000000000000000061 -S3154004B5A00000000000000000000000000000000051 -S3154004B5B00000000000000000000000000000000041 -S3154004B5C00000000000000000000000000000000031 -S3154004B5D00000000000000000000000000000000021 -S3154004B5E00000000000000000000000000000000011 -S3154004B5F00000000000000000000000000000000001 -S3154004B60000000000000000000000000000000000F0 -S3154004B61000000000000000000000000000000000E0 -S3154004B62000000000000000000000000000000000D0 -S3154004B63000000000000000000000000000000000C0 -S3154004B64000000000000000000000000000000000B0 -S3154004B65000000000000000000000000000000000A0 -S3154004B6600000000000000000000000000000000090 -S3154004B6700000000000000000000000000000000080 -S3154004B6800000000000000000000000000000000070 -S3154004B6900000000000000000000000000000000060 -S3154004B6A00000000000000000000000000000000050 -S3154004B6B00000000000000000000000000000000040 -S3154004B6C00000000000000000000000000000000030 -S3154004B6D00000000000000000000000000000000020 -S3154004B6E00000000000000000000000000000000010 -S3154004B6F00000000000000000000000000000000000 -S3154004B70000000000000000000000000000000000EF -S3154004B71000000000000000000000000000000000DF -S3154004B72000000000000000000000000000000000CF -S3154004B73000000000000000000000000000000000BF -S3154004B74000000000000000000000000000000000AF -S3154004B750000000000000000000000000000000009F -S3154004B760000000000000000000000000000000008F -S3154004B770000000000000000000000000000000007F -S3154004B780000000000000000000000000000000006F -S3154004B790000000000000000000000000000000005F -S3154004B7A0000000000000000000000000000000004F -S3154004B7B0000000000000000000000000000000003F -S3154004B7C0000000000000000000000000000000002F -S3154004B7D0000000000000000000000000000000001F -S3154004B7E0000000000000000000000000000000000F -S3154004B7F000000000000000000000000000000000FF -S3154004B80000000000000000000000000000000000EE -S3154004B81000000000000000000000000000000000DE -S3154004B82000000000000000000000000000000000CE -S3154004B83000000000000000000000000000000000BE -S3154004B84000000000000000000000000000000000AE -S3154004B850000000000000000000000000000000009E -S3154004B860000000000000000000000000000000008E -S3154004B870000000000000000000000000000000007E -S3154004B880000000000000000000000000000000006E -S3154004B890000000000000000000000000000000005E -S3154004B8A0000000000000000000000000000000004E -S3154004B8B0000000000000000000000000000000003E -S3154004B8C0000000000000000000000000000000002E -S3154004B8D0000000000000000000000000000000001E -S3154004B8E0000000000000000000000000000000000E -S3154004B8F000000000000000000000000000000000FE -S3154004B90000000000000000000000000000000000ED -S3154004B91000000000000000000000000000000000DD -S3154004B92000000000000000000000000000000000CD -S3154004B93000000000000000000000000000000000BD -S3154004B94000000000000000000000000000000000AD -S3154004B950000000000000000000000000000000009D -S3154004B960000000000000000000000000000000008D -S3154004B970000000000000000000000000000000007D -S3154004B980000000000000000000000000000000006D -S3154004B990000000000000000000000000000000005D -S3154004B9A0000000000000000000000000000000004D -S3154004B9B0000000000000000000000000000000003D -S3154004B9C0000000000000000000000000000000002D -S3154004B9D0000000000000000000000000000000001D -S3154004B9E0000000000000000000000000000000000D -S3154004B9F000000000000000000000000000000000FD -S3154004BA0000000000000000000000000000000000EC -S3154004BA1000000000000000000000000000000000DC -S3154004BA2000000000000000000000000000000000CC -S3154004BA3000000000000000000000000000000000BC -S3154004BA4000000000000000000000000000000000AC -S3154004BA50000000000000000000000000000000009C -S3154004BA60000000000000000000000000000000008C -S3154004BA70000000000000000000000000000000007C -S3154004BA80000000000000000000000000000000006C -S3154004BA90000000000000000000000000000000005C -S3154004BAA0000000000000000000000000000000004C -S3154004BAB0000000000000000000000000000000003C -S3154004BAC0000000000000000000000000000000002C -S3154004BAD0000000000000000000000000000000001C -S3154004BAE0000000000000000000000000000000000C -S3154004BAF000000000000000000000000000000000FC -S3154004BB0000000000000000000000000000000000EB -S3154004BB1000000000000000000000000000000000DB -S3154004BB2000000000000000000000000000000000CB -S3154004BB3000000000000000000000000000000000BB -S3154004BB4000000000000000000000000000000000AB -S3154004BB50000000000000000000000000000000009B -S3154004BB60000000000000000000000000000000008B -S3154004BB70000000000000000000000000000000007B -S3154004BB80000000000000000000000000000000006B -S3154004BB90000000000000000000000000000000005B -S3154004BBA0000000000000000000000000000000004B -S3154004BBB0000000000000000000000000000000003B -S3154004BBC0000000000000000000000000000000002B -S3154004BBD0000000000000000000000000000000001B -S3154004BBE0000000000000000000000000000000000B -S3154004BBF000000000000000000000000000000000FB -S3154004BC0000000000000000000000000000000000EA -S3154004BC1000000000000000000000000000000000DA -S3154004BC2000000000000000000000000000000000CA -S3154004BC3000000000000000000000000000000000BA -S3154004BC4000000000000000000000000000000000AA -S3154004BC50000000000000000000000000000000009A -S3154004BC60000000000000000000000000000000008A -S3154004BC70000000000000000000000000000000007A -S3154004BC80000000000000000000000000000000006A -S3154004BC90000000000000000000000000000000005A -S3154004BCA0000000000000000000000000000000004A -S3154004BCB0000000000000000000000000000000003A -S3154004BCC0000000000000000000000000000000002A -S3154004BCD0000000000000000000000000000000001A -S3154004BCE0000000000000000000000000000000000A -S3154004BCF000000000000000000000000000000000FA -S3154004BD0000000000000000000000000000000000E9 -S3154004BD1000000000000000000000000000000000D9 -S3154004BD2000000000000000000000000000000000C9 -S3154004BD3000000000000000000000000000000000B9 -S3154004BD4000000000000000000000000000000000A9 -S3154004BD500000000000000000000000000000000099 -S3154004BD600000000000000000000000000000000089 -S3154004BD700000000000000000000000000000000079 -S3154004BD800000000000000000000000000000000069 -S3154004BD900000000000000000000000000000000059 -S3154004BDA00000000000000000000000000000000049 -S3154004BDB00000000000000000000000000000000039 -S3154004BDC00000000000000000000000000000000029 -S3154004BDD00000000000000000000000000000000019 -S3154004BDE00000000000000000000000000000000009 -S3154004BDF000000000000000000000000000000000F9 -S3154004BE0000000000000000000000000000000000E8 -S3154004BE1000000000000000000000000000000000D8 -S3154004BE2000000000000000000000000000000000C8 -S3154004BE3000000000000000000000000000000000B8 -S3154004BE4000000000000000000000000000000000A8 -S3154004BE500000000000000000000000000000000098 -S3154004BE600000000000000000000000000000000088 -S3154004BE700000000000000000000000000000000078 -S3154004BE800000000000000000000000000000000068 -S3154004BE900000000000000000000000000000000058 -S3154004BEA00000000000000000000000000000000048 -S3154004BEB00000000000000000000000000000000038 -S3154004BEC00000000000000000000000000000000028 -S3154004BED00000000000000000000000000000000018 -S3154004BEE00000000000000000000000000000000008 -S3154004BEF000000000000000000000000000000000F8 -S3154004BF0000000000000000000000000000000000E7 -S3154004BF1000000000000000000000000000000000D7 -S3154004BF2000000000000000000000000000000000C7 -S3154004BF3000000000000000000000000000000000B7 -S3154004BF4000000000000000000000000000000000A7 -S3154004BF500000000000000000000000000000000097 -S3154004BF600000000000000000000000000000000087 -S3154004BF700000000000000000000000000000000077 -S3154004BF800000000000000000000000000000000067 -S3154004BF900000000000000000000000000000000057 -S3154004BFA00000000000000000000000000000000047 -S3154004BFB00000000000000000000000000000000037 -S3154004BFC00000000000000000000000000000000027 -S3154004BFD00000000000000000000000000000000017 -S3154004BFE00000000000000000000000000000000007 -S3154004BFF000000000000000000000000000000000F7 -S3154004C00000000000000000000000000000000000E6 -S3154004C01000000000000000000000000000000000D6 -S3154004C02000000000000000000000000000000000C6 -S3154004C03000000000000000000000000000000000B6 -S3154004C04000000000000000000000000000000000A6 -S3154004C0500000000000000000000000000000000096 -S3154004C0600000000000000000000000000000000086 -S3154004C0700000000000000000000000000000000076 -S3154004C0800000000000000000000000000000000066 -S3154004C0900000000000000000000000000000000056 -S3154004C0A00000000000000000000000000000000046 -S3154004C0B00000000000000000000000000000000036 -S3154004C0C00000000000000000000000000000000026 -S3154004C0D00000000000000000000000000000000016 -S3154004C0E00000000000000000000000000000000006 -S3154004C0F000000000000000000000000000000000F6 -S3154004C10000000000000000000000000000000000E5 -S3154004C11000000000000000000000000000000000D5 -S3154004C12000000000000000000000000000000000C5 -S3154004C13000000000000000000000000000000000B5 -S3154004C14000000000000000000000000000000000A5 -S3154004C1500000000000000000000000000000000095 -S3154004C1600000000000000000000000000000000085 -S3154004C1700000000000000000000000000000000075 -S3154004C1800000000000000000000000000000000065 -S3154004C1900000000000000000000000000000000055 -S3154004C1A00000000000000000000000000000000045 -S3154004C1B00000000000000000000000000000000035 -S3154004C1C00000000000000000000000000000000025 -S3154004C1D00000000000000000000000000000000015 -S3154004C1E00000000000000000000000000000000005 -S3154004C1F000000000000000000000000000000000F5 -S3154004C20000000000000000000000000000000000E4 -S3154004C21000000000000000000000000000000000D4 -S3154004C22000000000000000000000000000000000C4 -S3154004C23000000000000000000000000000000000B4 -S3154004C24000000000000000000000000000000000A4 -S3154004C2500000000000000000000000000000000094 -S3154004C2600000000000000000000000000000000084 -S3154004C2700000000000000000000000000000000074 -S3154004C2800000000000000000000000000000000064 -S3154004C2900000000000000000000000000000000054 -S3154004C2A00000000000000000000000000000000044 -S3154004C2B00000000000000000000000000000000034 -S3154004C2C00000000000000000000000000000000024 -S3154004C2D00000000000000000000000000000000014 -S3154004C2E00000000000000000000000000000000004 -S3154004C2F000000000000000000000000000000000F4 -S3154004C30000000000000000000000000000000000E3 -S3154004C31000000000000000000000000000000000D3 -S3154004C32000000000000000000000000000000000C3 -S3154004C33000000000000000000000000000000000B3 -S3154004C34000000000000000000000000000000000A3 -S3154004C3500000000000000000000000000000000093 -S3154004C3600000000000000000000000000000000083 -S3154004C3700000000000000000000000000000000073 -S3154004C3800000000000000000000000000000000063 -S3154004C3900000000000000000000000000000000053 -S3154004C3A00000000000000000000000000000000043 -S3154004C3B00000000000000000000000000000000033 -S3154004C3C00000000000000000000000000000000023 -S3154004C3D00000000000000000000000000000000013 -S3154004C3E00000000000000000000000000000000003 -S3154004C3F000000000000000000000000000000000F3 -S3154004C40000000000000000000000000000000000E2 -S3154004C41000000000000000000000000000000000D2 -S3154004C42000000000000000000000000000000000C2 -S3154004C43000000000000000000000000000000000B2 -S3154004C44000000000000000000000000000000000A2 -S3154004C4500000000000000000000000000000000092 -S3154004C4600000000000000000000000000000000082 -S3154004C4700000000000000000000000000000000072 -S3154004C4800000000000000000000000000000000062 -S3154004C4900000000000000000000000000000000052 -S3154004C4A00000000000000000000000000000000042 -S3154004C4B00000000000000000000000000000000032 -S3154004C4C00000000000000000000000000000000022 -S3154004C4D00000000000000000000000000000000012 -S3154004C4E00000000000000000000000000000000002 -S3154004C4F000000000000000000000000000000000F2 -S3154004C50000000000000000000000000000000000E1 -S3154004C51000000000000000000000000000000000D1 -S3154004C52000000000000000000000000000000000C1 -S3154004C53000000000000000000000000000000000B1 -S3154004C54000000000000000000000000000000000A1 -S3154004C5500000000000000000000000000000000091 -S3154004C5600000000000000000000000000000000081 -S3154004C5700000000000000000000000000000000071 -S3154004C5800000000000000000000000000000000061 -S3154004C5900000000000000000000000000000000051 -S3154004C5A00000000000000000000000000000000041 -S3154004C5B00000000000000000000000000000000031 -S3154004C5C00000000000000000000000000000000021 -S3154004C5D00000000000000000000000000000000011 -S3154004C5E00000000000000000000000000000000001 -S3154004C5F000000000000000000000000000000000F1 -S3154004C60000000000000000000000000000000000E0 -S3154004C61000000000000000000000000000000000D0 -S3154004C62000000000000000000000000000000000C0 -S3154004C63000000000000000000000000000000000B0 -S3154004C64000000000000000000000000000000000A0 -S3154004C6500000000000000000000000000000000090 -S3154004C6600000000000000000000000000000000080 -S3154004C6700000000000000000000000000000000070 -S3154004C6800000000000000000000000000000000060 -S3154004C6900000000000000000000000000000000050 -S3154004C6A00000000000000000000000000000000040 -S3154004C6B00000000000000000000000000000000030 -S3154004C6C00000000000000000000000000000000020 -S3154004C6D00000000000000000000000000000000010 -S3154004C6E00000000000000000000000000000000000 -S3154004C6F000000000000000000000000000000000F0 -S3154004C70000000000000000000000000000000000DF -S3154004C71000000000000000000000000000000000CF -S3154004C72000000000000000000000000000000000BF -S3154004C73000000000000000000000000000000000AF -S3154004C740000000000000000000000000000000009F -S3154004C750000000000000000000000000000000008F -S3154004C760000000000000000000000000000000007F -S3154004C770000000000000000000000000000000006F -S3154004C780000000000000000000000000000000005F -S3154004C790000000000000000000000000000000004F -S3154004C7A0000000000000000000000000000000003F -S3154004C7B0000000000000000000000000000000002F -S3154004C7C0000000000000000000000000000000001F -S3154004C7D0000000000000000000000000000000000F -S3154004C7E000000000000000000000000000000000FF -S3154004C7F000000000000000000000000000000000EF -S3154004C80000000000000000000000000000000000DE -S3154004C81000000000000000000000000000000000CE -S3154004C82000000000000000000000000000000000BE -S3154004C83000000000000000000000000000000000AE -S3154004C840000000000000000000000000000000009E -S3154004C850000000000000000000000000000000008E -S3154004C860000000000000000000000000000000007E -S3154004C870000000000000000000000000000000006E -S3154004C880000000000000000000000000000000005E -S3154004C890000000000000000000000000000000004E -S3154004C8A0000000000000000000000000000000003E -S3154004C8B0000000000000000000000000000000002E -S3154004C8C0000000000000000000000000000000001E -S3154004C8D0000000000000000000000000000000000E -S3154004C8E000000000000000000000000000000000FE -S3154004C8F000000000000000000000000000000000EE -S3154004C90000000000000000000000000000000000DD -S3154004C91000000000000000000000000000000000CD -S3154004C92000000000000000000000000000000000BD -S3154004C93000000000000000000000000000000000AD -S3154004C940000000000000000000000000000000009D -S3154004C950000000000000000000000000000000008D -S3154004C960000000000000000000000000000000007D -S3154004C970000000000000000000000000000000006D -S3154004C980000000000000000000000000000000005D -S3154004C990000000000000000000000000000000004D -S3154004C9A0000000000000000000000000000000003D -S3154004C9B0000000000000000000000000000000002D -S3154004C9C0000000000000000000000000000000001D -S3154004C9D0000000000000000000000000000000000D -S3154004C9E000000000000000000000000000000000FD -S3154004C9F000000000000000000000000000000000ED -S3154004CA0000000000000000000000000000000000DC -S3154004CA1000000000000000000000000000000000CC -S3154004CA2000000000000000000000000000000000BC -S3154004CA3000000000000000000000000000000000AC -S3154004CA40000000000000000000000000000000009C -S3154004CA50000000000000000000000000000000008C -S3154004CA60000000000000000000000000000000007C -S3154004CA70000000000000000000000000000000006C -S3154004CA80000000000000000000000000000000005C -S3154004CA90000000000000000000000000000000004C -S3154004CAA0000000000000000000000000000000003C -S3154004CAB0000000000000000000000000000000002C -S3154004CAC0000000000000000000000000000000001C -S3154004CAD0000000000000000000000000000000000C -S3154004CAE000000000000000000000000000000000FC -S3154004CAF000000000000000000000000000000000EC -S3154004CB0000000000000000000000000000000000DB -S3154004CB1000000000000000000000000000000000CB -S3154004CB2000000000000000000000000000000000BB -S3154004CB3000000000000000000000000000000000AB -S3154004CB40000000000000000000000000000000009B -S3154004CB50000000000000000000000000000000008B -S3154004CB60000000000000000000000000000000007B -S3154004CB70000000000000000000000000000000006B -S3154004CB80000000000000000000000000000000005B -S3154004CB90000000000000000000000000000000004B -S3154004CBA0000000000000000000000000000000003B -S3154004CBB0000000000000000000000000000000002B -S3154004CBC0000000000000000000000000000000001B -S3154004CBD0000000000000000000000000000000000B -S3154004CBE000000000000000000000000000000000FB -S3154004CBF000000000000000000000000000000000EB -S3154004CC0000000000000000000000000000000000DA -S3154004CC1000000000000000000000000000000000CA -S3154004CC2000000000000000000000000000000000BA -S3154004CC3000000000000000000000000000000000AA -S3154004CC40000000000000000000000000000000009A -S3154004CC50000000000000000000000000000000008A -S3154004CC60000000000000000000000000000000007A -S3154004CC70000000000000000000000000000000006A -S3154004CC80000000000000000000000000000000005A -S3154004CC90000000000000000000000000000000004A -S3154004CCA0000000000000000000000000000000003A -S3154004CCB0000000000000000000000000000000002A -S3154004CCC0000000000000000000000000000000001A -S3154004CCD0000000000000000000000000000000000A -S3154004CCE000000000000000000000000000000000FA -S3154004CCF000000000000000000000000000000000EA -S3154004CD0000000000000000000000000000000000D9 -S3154004CD1000000000000000000000000000000000C9 -S3154004CD2000000000000000000000000000000000B9 -S3154004CD3000000000000000000000000000000000A9 -S3154004CD400000000000000000000000000000000099 -S3154004CD500000000000000000000000000000000089 -S3154004CD600000000000000000000000000000000079 -S3154004CD700000000000000000000000000000000069 -S3154004CD800000000000000000000000000000000059 -S3154004CD900000000000000000000000000000000049 -S3154004CDA00000000000000000000000000000000039 -S3154004CDB00000000000000000000000000000000029 -S3154004CDC00000000000000000000000000000000019 -S3154004CDD00000000000000000000000000000000009 -S3154004CDE000000000000000000000000000000000F9 -S3154004CDF000000000000000000000000000000000E9 -S3154004CE0000000000000000000000000000000000D8 -S3154004CE1000000000000000000000000000000000C8 -S3154004CE2000000000000000000000000000000000B8 -S3154004CE3000000000000000000000000000000000A8 -S3154004CE400000000000000000000000000000000098 -S3154004CE500000000000000000000000000000000088 -S3154004CE600000000000000000000000000000000078 -S3154004CE700000000000000000000000000000000068 -S3154004CE800000000000000000000000000000000058 -S3154004CE900000000000000000000000000000000048 -S3154004CEA00000000000000000000000000000000038 -S3154004CEB00000000000000000000000000000000028 -S3154004CEC00000000000000000000000000000000018 -S3154004CED00000000000000000000000000000000008 -S3154004CEE000000000000000000000000000000000F8 -S3154004CEF000000000000000000000000000000000E8 -S3154004CF0000000000000000000000000000000000D7 -S3154004CF1000000000000000000000000000000000C7 -S3154004CF2000000000000000000000000000000000B7 -S3154004CF3000000000000000000000000000000000A7 -S3154004CF400000000000000000000000000000000097 -S3154004CF500000000000000000000000000000000087 -S3154004CF600000000000000000000000000000000077 -S3154004CF700000000000000000000000000000000067 -S3154004CF800000000000000000000000000000000057 -S3154004CF900000000000000000000000000000000047 -S3154004CFA00000000000000000000000000000000037 -S3154004CFB00000000000000000000000000000000027 -S3154004CFC00000000000000000000000000000000017 -S3154004CFD00000000000000000000000000000000007 -S3154004CFE000000000000000000000000000000000F7 -S3154004CFF000000000000000000000000000000000E7 -S3154004D00000000000000000000000000000000000D6 -S3154004D01000000000000000000000000000000000C6 -S3154004D02000000000000000000000000000000000B6 -S3154004D03000000000000000000000000000000000A6 -S3154004D0400000000000000000000000000000000096 -S3154004D0500000000000000000000000000000000086 -S3154004D0600000000000000000000000000000000076 -S3154004D0700000000000000000000000000000000066 -S3154004D0800000000000000000000000000000000056 -S3154004D0900000000000000000000000000000000046 -S3154004D0A00000000000000000000000000000000036 -S3154004D0B00000000000000000000000000000000026 -S3154004D0C00000000000000000000000000000000016 -S3154004D0D00000000000000000000000000000000006 -S3154004D0E000000000000000000000000000000000F6 -S3154004D0F000000000000000000000000000000000E6 -S3154004D10000000000000000000000000000000000D5 -S3154004D11000000000000000000000000000000000C5 -S3154004D12000000000000000000000000000000000B5 -S3154004D13000000000000000000000000000000000A5 -S3154004D1400000000000000000000000000000000095 -S3154004D1500000000000000000000000000000000085 -S3154004D1600000000000000000000000000000000075 -S3154004D1700000000000000000000000000000000065 -S3154004D1800000000000000000000000000000000055 -S3154004D1900000000000000000000000000000000045 -S3154004D1A00000000000000000000000000000000035 -S3154004D1B00000000000000000000000000000000025 -S3154004D1C00000000000000000000000000000000015 -S3154004D1D00000000000000000000000000000000005 -S3154004D1E000000000000000000000000000000000F5 -S3154004D1F000000000000000000000000000000000E5 -S3154004D20000000000000000000000000000000000D4 -S3154004D21000000000000000000000000000000000C4 -S3154004D22000000000000000000000000000000000B4 -S3154004D23000000000000000000000000000000000A4 -S3154004D2400000000000000000000000000000000094 -S3154004D2500000000000000000000000000000000084 -S3154004D2600000000000000000000000000000000074 -S3154004D2700000000000000000000000000000000064 -S3154004D2800000000000000000000000000000000054 -S3154004D2900000000000000000000000000000000044 -S3154004D2A00000000000000000000000000000000034 -S3154004D2B00000000000000000000000000000000024 -S3154004D2C00000000000000000000000000000000014 -S3154004D2D00000000000000000000000000000000004 -S3154004D2E000000000000000000000000000000000F4 -S3154004D2F000000000000000000000000000000000E4 -S3154004D30000000000000000000000000000000000D3 -S3154004D31000000000000000000000000000000000C3 -S3154004D32000000000000000000000000000000000B3 -S3154004D33000000000000000000000000000000000A3 -S3154004D3400000000000000000000000000000000093 -S3154004D3500000000000000000000000000000000083 -S3154004D3600000000000000000000000000000000073 -S3154004D3700000000000000000000000000000000063 -S3154004D3800000000000000000000000000000000053 -S3154004D3900000000000000000000000000000000043 -S3154004D3A00000000000000000000000000000000033 -S3154004D3B00000000000000000000000000000000023 -S3154004D3C00000000000000000000000000000000013 -S3154004D3D00000000000000000000000000000000003 -S3154004D3E000000000000000000000000000000000F3 -S3154004D3F000000000000000000000000000000000E3 -S3154004D40000000000000000000000000000000000D2 -S3154004D41000000000000000000000000000000000C2 -S3154004D42000000000000000000000000000000000B2 -S3154004D43000000000000000000000000000000000A2 -S3154004D4400000000000000000000000000000000092 -S3154004D4500000000000000000000000000000000082 -S3154004D4600000000000000000000000000000000072 -S3154004D4700000000000000000000000000000000062 -S3154004D4800000000000000000000000000000000052 -S3154004D4900000000000000000000000000000000042 -S3154004D4A00000000000000000000000000000000032 -S3154004D4B00000000000000000000000000000000022 -S3154004D4C00000000000000000000000000000000012 -S3154004D4D00000000000000000000000000000000002 -S3154004D4E000000000000000000000000000000000F2 -S3154004D4F000000000000000000000000000000000E2 -S3154004D50000000000000000000000000000000000D1 -S3154004D51000000000000000000000000000000000C1 -S3154004D52000000000000000000000000000000000B1 -S3154004D53000000000000000000000000000000000A1 -S3154004D5400000000000000000000000000000000091 -S3154004D5500000000000000000000000000000000081 -S3154004D5600000000000000000000000000000000071 -S3154004D5700000000000000000000000000000000061 -S3154004D5800000000000000000000000000000000051 -S3154004D5900000000000000000000000000000000041 -S3154004D5A00000000000000000000000000000000031 -S3154004D5B00000000000000000000000000000000021 -S3154004D5C00000000000000000000000000000000011 -S3154004D5D00000000000000000000000000000000001 -S3154004D5E000000000000000000000000000000000F1 -S3154004D5F000000000000000000000000000000000E1 -S3154004D60000000000000000000000000000000000D0 -S3154004D61000000000000000000000000000000000C0 -S3154004D62000000000000000000000000000000000B0 -S3154004D63000000000000000000000000000000000A0 -S3154004D6400000000000000000000000000000000090 -S3154004D6500000000000000000000000000000000080 -S3154004D6600000000000000000000000000000000070 -S3154004D6700000000000000000000000000000000060 -S3154004D6800000000000000000000000000000000050 -S3154004D6900000000000000000000000000000000040 -S3154004D6A00000000000000000000000000000000030 -S3154004D6B00000000000000000000000000000000020 -S3154004D6C00000000000000000000000000000000010 -S3154004D6D00000000000000000000000000000000000 -S3154004D6E000000000000000000000000000000000F0 -S3154004D6F000000000000000000000000000000000E0 -S3154004D70000000000000000000000000000000000CF -S3154004D71000000000000000000000000000000000BF -S3154004D72000000000000000000000000000000000AF -S3154004D730000000000000000000000000000000009F -S3154004D740000000000000000000000000000000008F -S3154004D750000000000000000000000000000000007F -S3154004D760000000000000000000000000000000006F -S3154004D770000000000000000000000000000000005F -S3154004D780000000000000000000000000000000004F -S3154004D790000000000000000000000000000000003F -S3154004D7A0000000000000000000000000000000002F -S3154004D7B0000000000000000000000000000000001F -S3154004D7C0000000000000000000000000000000000F -S3154004D7D000000000000000000000000000000000FF -S3154004D7E000000000000000000000000000000000EF -S3154004D7F000000000000000000000000000000000DF -S3154004D80000000000000000000000000000000000CE -S3154004D81000000000000000000000000000000000BE -S3154004D82000000000000000000000000000000000AE -S3154004D830000000000000000000000000000000009E -S3154004D840000000000000000000000000000000008E -S3154004D850000000000000000000000000000000007E -S3154004D860000000000000000000000000000000006E -S3154004D870000000000000000000000000000000005E -S3154004D880000000000000000000000000000000004E -S3154004D890000000000000000000000000000000003E -S3154004D8A0000000000000000000000000000000002E -S3154004D8B0000000000000000000000000000000001E -S3154004D8C0000000000000000000000000000000000E -S3154004D8D000000000000000000000000000000000FE -S3154004D8E000000000000000000000000000000000EE -S3154004D8F000000000000000000000000000000000DE -S3154004D90000000000000000000000000000000000CD -S3154004D91000000000000000000000000000000000BD -S3154004D92000000000000000000000000000000000AD -S3154004D930000000000000000000000000000000009D -S3154004D940000000000000000000000000000000008D -S3154004D950000000000000000000000000000000007D -S3154004D960000000000000000000000000000000006D -S3154004D970000000000000000000000000000000005D -S3154004D980000000000000000000000000000000004D -S3154004D990000000000000000000000000000000003D -S3154004D9A0000000000000000000000000000000002D -S3154004D9B0000000000000000000000000000000001D -S3154004D9C0000000000000000000000000000000000D -S3154004D9D000000000000000000000000000000000FD -S3154004D9E000000000000000000000000000000000ED -S3154004D9F000000000000000000000000000000000DD -S3154004DA0000000000000000000000000000000000CC -S3154004DA1000000000000000000000000000000000BC -S3154004DA2000000000000000000000000000000000AC -S3154004DA30000000000000000000000000000000009C -S3154004DA40000000000000000000000000000000008C -S3154004DA50000000000000000000000000000000007C -S3154004DA60000000000000000000000000000000006C -S3154004DA70000000000000000000000000000000005C -S3154004DA80000000000000000000000000000000004C -S3154004DA90000000000000000000000000000000003C -S3154004DAA0000000000000000000000000000000002C -S3154004DAB0000000000000000000000000000000001C -S3154004DAC0000000000000000000000000000000000C -S3154004DAD000000000000000000000000000000000FC -S3154004DAE000000000000000000000000000000000EC -S3154004DAF000000000000000000000000000000000DC -S3154004DB0000000000000000000000000000000000CB -S3154004DB1000000000000000000000000000000000BB -S3154004DB2000000000000000000000000000000000AB -S3154004DB30000000000000000000000000000000009B -S3154004DB40000000000000000000000000000000008B -S3154004DB50000000000000000000000000000000007B -S3154004DB60000000000000000000000000000000006B -S3154004DB70000000000000000000000000000000005B -S3154004DB80000000000000000000000000000000004B -S3154004DB90000000000000000000000000000000003B -S3154004DBA0000000000000000000000000000000002B -S3154004DBB0000000000000000000000000000000001B -S3154004DBC0000000000000000000000000000000000B -S3154004DBD000000000000000000000000000000000FB -S3154004DBE000000000000000000000000000000000EB -S3154004DBF000000000000000000000000000000000DB -S3154004DC0000000000000000000000000000000000CA -S3154004DC1000000000000000000000000000000000BA -S3154004DC2000000000000000000000000000000000AA -S3154004DC30000000000000000000000000000000009A -S3154004DC40000000000000000000000000000000008A -S3154004DC50000000000000000000000000000000007A -S3154004DC60000000000000000000000000000000006A -S3154004DC70000000000000000000000000000000005A -S3154004DC80000000000000000000000000000000004A -S3154004DC90000000000000000000000000000000003A -S3154004DCA0000000000000000000000000000000002A -S3154004DCB0000000000000000000000000000000001A -S3154004DCC0000000000000000000000000000000000A -S3154004DCD000000000000000000000000000000000FA -S3154004DCE000000000000000000000000000000000EA -S3154004DCF000000000000000000000000000000000DA -S3154004DD0000000000000000000000000000000000C9 -S3154004DD1000000000000000000000000000000000B9 -S3154004DD2000000000000000000000000000000000A9 -S3154004DD300000000000000000000000000000000099 -S3154004DD400000000000000000000000000000000089 -S3154004DD500000000000000000000000000000000079 -S3154004DD600000000000000000000000000000000069 -S3154004DD700000000000000000000000000000000059 -S3154004DD800000000000000000000000000000000049 -S3154004DD900000000000000000000000000000000039 -S3154004DDA00000000000000000000000000000000029 -S3154004DDB00000000000000000000000000000000019 -S3154004DDC00000000000000000000000000000000009 -S3154004DDD000000000000000000000000000000000F9 -S3154004DDE000000000000000000000000000000000E9 -S3154004DDF000000000000000000000000000000000D9 -S3154004DE0000000000000000000000000000000000C8 -S3154004DE1000000000000000000000000000000000B8 -S3154004DE2000000000000000000000000000000000A8 -S3154004DE300000000000000000000000000000000098 -S3154004DE400000000000000000000000000000000088 -S3154004DE500000000000000000000000000000000078 -S3154004DE600000000000000000000000000000000068 -S3154004DE700000000000000000000000000000000058 -S3154004DE800000000000000000000000000000000048 -S3154004DE900000000000000000000000000000000038 -S3154004DEA00000000000000000000000000000000028 -S3154004DEB00000000000000000000000000000000018 -S3154004DEC00000000000000000000000000000000008 -S3154004DED000000000000000000000000000000000F8 -S3154004DEE000000000000000000000000000000000E8 -S3154004DEF000000000000000000000000000000000D8 -S3154004DF0000000000000000000000000000000000C7 -S3154004DF1000000000000000000000000000000000B7 -S3154004DF2000000000000000000000000000000000A7 -S3154004DF300000000000000000000000000000000097 -S3154004DF400000000000000000000000000000000087 -S3154004DF500000000000000000000000000000000077 -S3154004DF600000000000000000000000000000000067 -S3154004DF700000000000000000000000000000000057 -S3154004DF800000000000000000000000000000000047 -S3154004DF900000000000000000000000000000000037 -S3154004DFA00000000000000000000000000000000027 -S3154004DFB00000000000000000000000000000000017 -S3154004DFC00000000000000000000000000000000007 -S3154004DFD000000000000000000000000000000000F7 -S3154004DFE000000000000000000000000000000000E7 -S3154004DFF000000000000000000000000000000000D7 -S3154004E00000000000000000000000000000000000C6 -S3154004E01000000000000000000000000000000000B6 -S3154004E02000000000000000000000000000000000A6 -S3154004E0300000000000000000000000000000000096 -S3154004E0400000000000000000000000000000000086 -S3154004E0500000000000000000000000000000000076 -S3154004E0600000000000000000000000000000000066 -S3154004E0700000000000000000000000000000000056 -S3154004E0800000000000000000000000000000000046 -S3154004E0900000000000000000000000000000000036 -S3154004E0A00000000000000000000000000000000026 -S3154004E0B00000000000000000000000000000000016 -S3154004E0C00000000000000000000000000000000006 -S3154004E0D000000000000000000000000000000000F6 -S3154004E0E000000000000000000000000000000000E6 -S3154004E0F000000000000000000000000000000000D6 -S3154004E10000000000000000000000000000000000C5 -S3154004E11000000000000000000000000000000000B5 -S3154004E12000000000000000000000000000000000A5 -S3154004E1300000000000000000000000000000000095 -S3154004E1400000000000000000000000000000000085 -S3154004E1500000000000000000000000000000000075 -S3154004E1600000000000000000000000000000000065 -S3154004E1700000000000000000000000000000000055 -S3154004E1800000000000000000000000000000000045 -S3154004E1900000000000000000000000000000000035 -S3154004E1A00000000000000000000000000000000025 -S3154004E1B00000000000000000000000000000000015 -S3154004E1C00000000000000000000000000000000005 -S3154004E1D000000000000000000000000000000000F5 -S3154004E1E000000000000000000000000000000000E5 -S3154004E1F000000000000000000000000000000000D5 -S3154004E20000000000000000000000000000000000C4 -S3154004E21000000000000000000000000000000000B4 -S3154004E22000000000000000000000000000000000A4 -S3154004E2300000000000000000000000000000000094 -S3154004E2400000000000000000000000000000000084 -S3154004E2500000000000000000000000000000000074 -S3154004E2600000000000000000000000000000000064 -S3154004E2700000000000000000000000000000000054 -S3154004E2800000000000000000000000000000000044 -S3154004E2900000000000000000000000000000000034 -S3154004E2A00000000000000000000000000000000024 -S3154004E2B00000000000000000000000000000000014 -S3154004E2C00000000000000000000000000000000004 -S3154004E2D000000000000000000000000000000000F4 -S3154004E2E000000000000000000000000000000000E4 -S3154004E2F000000000000000000000000000000000D4 -S3154004E30000000000000000000000000000000000C3 -S3154004E31000000000000000000000000000000000B3 -S3154004E32000000000000000000000000000000000A3 -S3154004E3300000000000000000000000000000000093 -S3154004E3400000000000000000000000000000000083 -S3154004E3500000000000000000000000000000000073 -S3154004E3600000000000000000000000000000000063 -S3154004E3700000000000000000000000000000000053 -S3154004E3800000000000000000000000000000000043 -S3154004E3900000000000000000000000000000000033 -S3154004E3A00000000000000000000000000000000023 -S3154004E3B00000000000000000000000000000000013 -S3154004E3C00000000000000000000000000000000003 -S3154004E3D000000000000000000000000000000000F3 -S3154004E3E000000000000000000000000000000000E3 -S3154004E3F000000000000000000000000000000000D3 -S3154004E40000000000000000000000000000000000C2 -S3154004E41000000000000000000000000000000000B2 -S3154004E42000000000000000000000000000000000A2 -S3154004E4300000000000000000000000000000000092 -S3154004E4400000000000000000000000000000000082 -S3154004E4500000000000000000000000000000000072 -S3154004E4600000000000000000000000000000000062 -S3154004E4700000000000000000000000000000000052 -S3154004E4800000000000000000000000000000000042 -S3154004E4900000000000000000000000000000000032 -S3154004E4A00000000000000000000000000000000022 -S3154004E4B00000000000000000000000000000000012 -S3154004E4C00000000000000000000000000000000002 -S3154004E4D000000000000000000000000000000000F2 -S3154004E4E000000000000000000000000000000000E2 -S3154004E4F000000000000000000000000000000000D2 -S3154004E50000000000000000000000000000000000C1 -S3154004E51000000000000000000000000000000000B1 -S3154004E52000000000000000000000000000000000A1 -S3154004E5300000000000000000000000000000000091 -S3154004E5400000000000000000000000000000000081 -S3154004E5500000000000000000000000000000000071 -S3154004E5600000000000000000000000000000000061 -S3154004E5700000000000000000000000000000000051 -S3154004E5800000000000000000000000000000000041 -S3154004E5900000000000000000000000000000000031 -S3154004E5A00000000000000000000000000000000021 -S3154004E5B00000000000000000000000000000000011 -S3154004E5C00000000000000000000000000000000001 -S3154004E5D000000000000000000000000000000000F1 -S3154004E5E000000000000000000000000000000000E1 -S3154004E5F000000000000000000000000000000000D1 -S3154004E60000000000000000000000000000000000C0 -S3154004E61000000000000000000000000000000000B0 -S3154004E62000000000000000000000000000000000A0 -S3154004E6300000000000000000000000000000000090 -S3154004E6400000000000000000000000000000000080 -S3154004E6500000000000000000000000000000000070 -S3154004E6600000000000000000000000000000000060 -S3154004E6700000000000000000000000000000000050 -S3154004E6800000000000000000000000000000000040 -S3154004E6900000000000000000000000000000000030 -S3154004E6A00000000000000000000000000000000020 -S3154004E6B00000000000000000000000000000000010 -S3154004E6C00000000000000000000000000000000000 -S3154004E6D000000000000000000000000000000000F0 -S3154004E6E000000000000000000000000000000000E0 -S3154004E6F000000000000000000000000000000000D0 -S3154004E70000000000000000000000000000000000BF -S3154004E71000000000000000000000000000000000AF -S3154004E720000000000000000000000000000000009F -S3154004E730000000000000000000000000000000008F -S3154004E740000000000000000000000000000000007F -S3154004E750000000000000000000000000000000006F -S3154004E760000000000000000000000000000000005F -S3154004E770000000000000000000000000000000004F -S3154004E780000000000000000000000000000000003F -S3154004E790000000000000000000000000000000002F -S3154004E7A0000000000000000000000000000000001F -S3154004E7B0000000000000000000000000000000000F -S3154004E7C000000000000000000000000000000000FF -S3154004E7D000000000000000000000000000000000EF -S3154004E7E000000000000000000000000000000000DF -S3154004E7F000000000000000000000000000000000CF -S3154004E80000000000000000000000000000000000BE -S3154004E81000000000000000000000000000000000AE -S3154004E820000000000000000000000000000000009E -S3154004E830000000000000000000000000000000008E -S3154004E840000000000000000000000000000000007E -S3154004E850000000000000000000000000000000006E -S3154004E860000000000000000000000000000000005E -S3154004E870000000000000000000000000000000004E -S3154004E880000000000000000000000000000000003E -S3154004E890000000000000000000000000000000002E -S3154004E8A0000000000000000000000000000000001E -S3154004E8B0000000000000000000000000000000000E -S3154004E8C000000000000000000000000000000000FE -S3154004E8D000000000000000000000000000000000EE -S3154004E8E000000000000000000000000000000000DE -S3154004E8F000000000000000000000000000000000CE -S3154004E90000000000000000000000000000000000BD -S3154004E91000000000000000000000000000000000AD -S3154004E920000000000000000000000000000000009D -S3154004E930000000000000000000000000000000008D -S3154004E940000000000000000000000000000000007D -S3154004E950000000000000000000000000000000006D -S3154004E960000000000000000000000000000000005D -S3154004E970000000000000000000000000000000004D -S3154004E980000000000000000000000000000000003D -S3154004E990000000000000000000000000000000002D -S3154004E9A0000000000000000000000000000000001D -S3154004E9B0000000000000000000000000000000000D -S3154004E9C000000000000000000000000000000000FD -S3154004E9D000000000000000000000000000000000ED -S3154004E9E000000000000000000000000000000000DD -S3154004E9F000000000000000000000000000000000CD -S3154004EA0000000000000000000000000000000000BC -S3154004EA1000000000000000000000000000000000AC -S3154004EA20000000000000000000000000000000009C -S3154004EA30000000000000000000000000000000008C -S3154004EA40000000000000000000000000000000007C -S3154004EA50000000000000000000000000000000006C -S3154004EA60000000000000000000000000000000005C -S3154004EA70000000000000000000000000000000004C -S3154004EA80000000000000000000000000000000003C -S3154004EA90000000000000000000000000000000002C -S3154004EAA0000000000000000000000000000000001C -S3154004EAB0000000000000000000000000000000000C -S3154004EAC000000000000000000000000000000000FC -S3154004EAD000000000000000000000000000000000EC -S3154004EAE000000000000000000000000000000000DC -S3154004EAF000000000000000000000000000000000CC -S3154004EB0000000000000000000000000000000000BB -S3154004EB1000000000000000000000000000000000AB -S3154004EB20000000000000000000000000000000009B -S3154004EB30000000000000000000000000000000008B -S3154004EB40000000000000000000000000000000007B -S3154004EB50000000000000000000000000000000006B -S3154004EB60000000000000000000000000000000005B -S3154004EB70000000000000000000000000000000004B -S3154004EB80000000000000000000000000000000003B -S3154004EB90000000000000000000000000000000002B -S3154004EBA0000000000000000000000000000000001B -S3154004EBB0000000000000000000000000000000000B -S3154004EBC000000000000000000000000000000000FB -S3154004EBD000000000000000000000000000000000EB -S3154004EBE000000000000000000000000000000000DB -S3154004EBF000000000000000000000000000000000CB -S3154004EC0000000000000000000000000000000000BA -S3154004EC1000000000000000000000000000000000AA -S3154004EC20000000000000000000000000000000009A -S3154004EC30000000000000000000000000000000008A -S3154004EC40000000000000000000000000000000007A -S3154004EC50000000000000000000000000000000006A -S3154004EC60000000000000000000000000000000005A -S3154004EC70000000000000000000000000000000004A -S3154004EC80000000000000000000000000000000003A -S3154004EC90000000000000000000000000000000002A -S3154004ECA0000000000000000000000000000000001A -S3154004ECB0000000000000000000000000000000000A -S3154004ECC000000000000000000000000000000000FA -S3154004ECD000000000000000000000000000000000EA -S3154004ECE000000000000000000000000000000000DA -S3154004ECF000000000000000000000000000000000CA -S3154004ED0000000000000000000000000000000000B9 -S3154004ED1000000000000000000000000000000000A9 -S3154004ED200000000000000000000000000000000099 -S3154004ED300000000000000000000000000000000089 -S3154004ED400000000000000000000000000000000079 -S3154004ED500000000000000000000000000000000069 -S3154004ED600000000000000000000000000000000059 -S3154004ED700000000000000000000000000000000049 -S3154004ED800000000000000000000000000000000039 -S3154004ED900000000000000000000000000000000029 -S3154004EDA00000000000000000000000000000000019 -S3154004EDB00000000000000000000000000000000009 -S3154004EDC000000000000000000000000000000000F9 -S3154004EDD000000000000000000000000000000000E9 -S3154004EDE000000000000000000000000000000000D9 -S3154004EDF000000000000000000000000000000000C9 -S3154004EE0000000000000000000000000000000000B8 -S3154004EE1000000000000000000000000000000000A8 -S3154004EE200000000000000000000000000000000098 -S3154004EE300000000000000000000000000000000088 -S3154004EE400000000000000000000000000000000078 -S3154004EE500000000000000000000000000000000068 -S3154004EE600000000000000000000000000000000058 -S3154004EE700000000000000000000000000000000048 -S3154004EE800000000000000000000000000000000038 -S3154004EE900000000000000000000000000000000028 -S3154004EEA00000000000000000000000000000000018 -S3154004EEB00000000000000000000000000000000008 -S3154004EEC000000000000000000000000000000000F8 -S3154004EED000000000000000000000000000000000E8 -S3154004EEE000000000000000000000000000000000D8 -S3154004EEF000000000000000000000000000000000C8 -S3154004EF0000000000000000000000000000000000B7 -S3154004EF1000000000000000000000000000000000A7 -S3154004EF200000000000000000000000000000000097 -S3154004EF300000000000000000000000000000000087 -S3154004EF400000000000000000000000000000000077 -S3154004EF500000000000000000000000000000000067 -S3154004EF600000000000000000000000000000000057 -S3154004EF700000000000000000000000000000000047 -S3154004EF800000000000000000000000000000000037 -S3154004EF900000000000000000000000000000000027 -S3154004EFA00000000000000000000000000000000017 -S3154004EFB00000000000000000000000000000000007 -S3154004EFC000000000000000000000000000000000F7 -S3154004EFD000000000000000000000000000000000E7 -S3154004EFE000000000000000000000000000000000D7 -S3154004EFF000000000000000000000000000000000C7 -S3154004F00000000000000000000000000000000000B6 -S3154004F01000000000000000000000000000000000A6 -S3154004F0200000000000000000000000000000000096 -S3154004F0300000000000000000000000000000000086 -S3154004F0400000000000000000000000000000000076 -S3154004F0500000000000000000000000000000000066 -S3154004F0600000000000000000000000000000000056 -S3154004F0700000000000000000000000000000000046 -S3154004F0800000000000000000000000000000000036 -S3154004F0900000000000000000000000000000000026 -S3154004F0A00000000000000000000000000000000016 -S3154004F0B00000000000000000000000000000000006 -S3154004F0C000000000000000000000000000000000F6 -S3154004F0D000000000000000000000000000000000E6 -S3154004F0E000000000000000000000000000000000D6 -S3154004F0F000000000000000000000000000000000C6 -S3154004F10000000000000000000000000000000000B5 -S3154004F11000000000000000000000000000000000A5 -S3154004F1200000000000000000000000000000000095 -S3154004F1300000000000000000000000000000000085 -S3154004F1400000000000000000000000000000000075 -S3154004F1500000000000000000000000000000000065 -S3154004F1600000000000000000000000000000000055 -S3154004F1700000000000000000000000000000000045 -S3154004F1800000000000000000000000000000000035 -S3154004F1900000000000000000000000000000000025 -S3154004F1A00000000000000000000000000000000015 -S3154004F1B00000000000000000000000000000000005 -S3154004F1C000000000000000000000000000000000F5 -S3154004F1D000000000000000000000000000000000E5 -S3154004F1E000000000000000000000000000000000D5 -S3154004F1F000000000000000000000000000000000C5 -S3154004F20000000000000000000000000000000000B4 -S3154004F21000000000000000000000000000000000A4 -S3154004F2200000000000000000000000000000000094 -S3154004F2300000000000000000000000000000000084 -S3154004F2400000000000000000000000000000000074 -S3154004F2500000000000000000000000000000000064 -S3154004F2600000000000000000000000000000000054 -S3154004F2700000000000000000000000000000000044 -S3154004F2800000000000000000000000000000000034 -S3154004F2900000000000000000000000000000000024 -S3154004F2A00000000000000000000000000000000014 -S3154004F2B00000000000000000000000000000000004 -S3154004F2C000000000000000000000000000000000F4 -S3154004F2D000000000000000000000000000000000E4 -S3154004F2E000000000000000000000000000000000D4 -S3154004F2F000000000000000000000000000000000C4 -S3154004F30000000000000000000000000000000000B3 -S3154004F31000000000000000000000000000000000A3 -S3154004F3200000000000000000000000000000000093 -S3154004F3300000000000000000000000000000000083 -S3154004F3400000000000000000000000000000000073 -S3154004F3500000000000000000000000000000000063 -S3154004F3600000000000000000000000000000000053 -S3154004F3700000000000000000000000000000000043 -S3154004F3800000000000000000000000000000000033 -S3154004F3900000000000000000000000000000000023 -S3154004F3A00000000000000000000000000000000013 -S3154004F3B00000000000000000000000000000000003 -S3154004F3C000000000000000000000000000000000F3 -S3154004F3D000000000000000000000000000000000E3 -S3154004F3E000000000000000000000000000000000D3 -S3154004F3F000000000000000000000000000000000C3 -S3154004F40000000000000000000000000000000000B2 -S3154004F41000000000000000000000000000000000A2 -S3154004F4200000000000000000000000000000000092 -S3154004F4300000000000000000000000000000000082 -S3154004F4400000000000000000000000000000000072 -S3154004F4500000000000000000000000000000000062 -S3154004F4600000000000000000000000000000000052 -S3154004F4700000000000000000000000000000000042 -S3154004F4800000000000000000000000000000000032 -S3154004F4900000000000000000000000000000000022 -S3154004F4A00000000000000000000000000000000012 -S3154004F4B00000000000000000000000000000000002 -S3154004F4C000000000000000000000000000000000F2 -S3154004F4D000000000000000000000000000000000E2 -S3154004F4E000000000000000000000000000000000D2 -S3154004F4F000000000000000000000000000000000C2 -S3154004F50000000000000000000000000000000000B1 -S3154004F51000000000000000000000000000000000A1 -S3154004F5200000000000000000000000000000000091 -S3154004F5300000000000000000000000000000000081 -S3154004F5400000000000000000000000000000000071 -S3154004F5500000000000000000000000000000000061 -S3154004F5600000000000000000000000000000000051 -S3154004F5700000000000000000000000000000000041 -S3154004F5800000000000000000000000000000000031 -S3154004F5900000000000000000000000000000000021 -S3154004F5A00000000000000000000000000000000011 -S3154004F5B00000000000000000000000000000000001 -S3154004F5C000000000000000000000000000000000F1 -S3154004F5D000000000000000000000000000000000E1 -S3154004F5E000000000000000000000000000000000D1 -S3154004F5F000000000000000000000000000000000C1 -S3154004F60000000000000000000000000000000000B0 -S3154004F61000000000000000000000000000000000A0 -S3154004F6200000000000000000000000000000000090 -S3154004F6300000000000000000000000000000000080 -S3154004F6400000000000000000000000000000000070 -S3154004F6500000000000000000000000000000000060 -S3154004F6600000000000000000000000000000000050 -S3154004F6700000000000000000000000000000000040 -S3154004F6800000000000000000000000000000000030 -S3154004F6900000000000000000000000000000000020 -S3154004F6A00000000000000000000000000000000010 -S3154004F6B00000000000000000000000000000000000 -S3154004F6C000000000000000000000000000000000F0 -S3154004F6D000000000000000000000000000000000E0 -S3154004F6E000000000000000000000000000000000D0 -S3154004F6F000000000000000000000000000000000C0 -S3154004F70000000000000000000000000000000000AF -S3154004F710000000000000000000000000000000009F -S3154004F720000000000000000000000000000000008F -S3154004F730000000000000000000000000000000007F -S3154004F740000000000000000000000000000000006F -S3154004F750000000000000000000000000000000005F -S3154004F760000000000000000000000000000000004F -S3154004F770000000000000000000000000000000003F -S3154004F780000000000000000000000000000000002F -S3154004F790000000000000000000000000000000001F -S3154004F7A0000000000000000000000000000000000F -S3154004F7B000000000000000000000000000000000FF -S3154004F7C000000000000000000000000000000000EF -S3154004F7D000000000000000000000000000000000DF -S3154004F7E000000000000000000000000000000000CF -S3154004F7F000000000000000000000000000000000BF -S3154004F80000000000000000000000000000000000AE -S3154004F810000000000000000000000000000000009E -S3154004F820000000000000000000000000000000008E -S3154004F830000000000000000000000000000000007E -S3154004F840000000000000000000000000000000006E -S3154004F850000000000000000000000000000000005E -S3154004F860000000000000000000000000000000004E -S3154004F870000000000000000000000000000000003E -S3154004F880000000000000000000000000000000002E -S3154004F890000000000000000000000000000000001E -S3154004F8A0000000000000000000000000000000000E -S3154004F8B000000000000000000000000000000000FE -S3154004F8C000000000000000000000000000000000EE -S3154004F8D000000000000000000000000000000000DE -S3154004F8E000000000000000000000000000000000CE -S3154004F8F000000000000000000000000000000000BE -S3154004F90000000000000000000000000000000000AD -S3154004F910000000000000000000000000000000009D -S3154004F920000000000000000000000000000000008D -S3154004F930000000000000000000000000000000007D -S3154004F940000000000000000000000000000000006D -S3154004F950000000000000000000000000000000005D -S3154004F960000000000000000000000000000000004D -S3154004F970000000000000000000000000000000003D -S3154004F980000000000000000000000000000000002D -S3154004F990000000000000000000000000000000001D -S3154004F9A0000000000000000000000000000000000D -S3154004F9B000000000000000000000000000000000FD -S3154004F9C000000000000000000000000000000000ED -S3154004F9D000000000000000000000000000000000DD -S3154004F9E000000000000000000000000000000000CD -S3154004F9F000000000000000000000000000000000BD -S3154004FA0000000000000000000000000000000000AC -S3154004FA10000000000000000000000000000000009C -S3154004FA20000000000000000000000000000000008C -S3154004FA30000000000000000000000000000000007C -S3154004FA40000000000000000000000000000000006C -S3154004FA50000000000000000000000000000000005C -S3154004FA60000000000000000000000000000000004C -S3154004FA70000000000000000000000000000000003C -S3154004FA80000000000000000000000000000000002C -S3154004FA90000000000000000000000000000000001C -S3154004FAA0000000000000000000000000000000000C -S3154004FAB000000000000000000000000000000000FC -S3154004FAC000000000000000000000000000000000EC -S3154004FAD000000000000000000000000000000000DC -S3154004FAE000000000000000000000000000000000CC -S3154004FAF000000000000000000000000000000000BC -S3154004FB0000000000000000000000000000000000AB -S3154004FB10000000000000000000000000000000009B -S3154004FB20000000000000000000000000000000008B -S3154004FB30000000000000000000000000000000007B -S3154004FB40000000000000000000000000000000006B -S3154004FB50000000000000000000000000000000005B -S3154004FB60000000000000000000000000000000004B -S3154004FB70000000000000000000000000000000003B -S3154004FB80000000000000000000000000000000002B -S3154004FB90000000000000000000000000000000001B -S3154004FBA0000000000000000000000000000000000B -S3154004FBB000000000000000000000000000000000FB -S3154004FBC000000000000000000000000000000000EB -S3154004FBD000000000000000000000000000000000DB -S3154004FBE000000000000000000000000000000000CB -S3154004FBF000000000000000000000000000000000BB -S3154004FC0000000000000000000000000000000000AA -S3154004FC10000000000000000000000000000000009A -S3154004FC20000000000000000000000000000000008A -S3154004FC30000000000000000000000000000000007A -S3154004FC40000000000000000000000000000000006A -S3154004FC50000000000000000000000000000000005A -S3154004FC60000000000000000000000000000000004A -S3154004FC70000000000000000000000000000000003A -S3154004FC80000000000000000000000000000000002A -S3154004FC90000000000000000000000000000000001A -S3154004FCA0000000000000000000000000000000000A -S3154004FCB000000000000000000000000000000000FA -S3154004FCC000000000000000000000000000000000EA -S3154004FCD000000000000000000000000000000000DA -S3154004FCE000000000000000000000000000000000CA -S3154004FCF000000000000000000000000000000000BA -S3154004FD0000000000000000000000000000000000A9 -S3154004FD100000000000000000000000000000000099 -S3154004FD200000000000000000000000000000000089 -S3154004FD300000000000000000000000000000000079 -S3154004FD400000000000000000000000000000000069 -S3154004FD500000000000000000000000000000000059 -S3154004FD600000000000000000000000000000000049 -S3154004FD700000000000000000000000000000000039 -S3154004FD800000000000000000000000000000000029 -S3154004FD900000000000000000000000000000000019 -S3154004FDA00000000000000000000000000000000009 -S3154004FDB000000000000000000000000000000000F9 -S3154004FDC000000000000000000000000000000000E9 -S3154004FDD000000000000000000000000000000000D9 -S3154004FDE000000000000000000000000000000000C9 -S3154004FDF000000000000000000000000000000000B9 -S3154004FE0000000000000000000000000000000000A8 -S3154004FE100000000000000000000000000000000098 -S3154004FE200000000000000000000000000000000088 -S3154004FE300000000000000000000000000000000078 -S3154004FE400000000000000000000000000000000068 -S3154004FE500000000000000000000000000000000058 -S3154004FE600000000000000000000000000000000048 -S3154004FE700000000000000000000000000000000038 -S3154004FE800000000000000000000000000000000028 -S3154004FE900000000000000000000000000000000018 -S3154004FEA00000000000000000000000000000000008 -S3154004FEB000000000000000000000000000000000F8 -S3154004FEC000000000000000000000000000000000E8 -S3154004FED000000000000000000000000000000000D8 -S3154004FEE000000000000000000000000000000000C8 -S3154004FEF000000000000000000000000000000000B8 -S3154004FF0000000000000000000000000000000000A7 -S3154004FF100000000000000000000000000000000097 -S3154004FF200000000000000000000000000000000087 -S3154004FF300000000000000000000000000000000077 -S3154004FF400000000000000000000000000000000067 -S3154004FF500000000000000000000000000000000057 -S3154004FF600000000000000000000000000000000047 -S3154004FF700000000000000000000000000000000037 -S3154004FF800000000000000000000000000000000027 -S3154004FF900000000000000000000000000000000017 -S3154004FFA00000000000000000000000000000000007 -S3154004FFB000000000000000000000000000000000F7 -S3154004FFC000000000000000000000000000000000E7 -S3154004FFD000000000000000000000000000000000D7 -S3154004FFE000000000000000000000000000000000C7 -S3154004FFF000000000000000000000000000000000B7 -S3154005000000000002000000030000000000000000A0 -S315400500100000000100000000FFFFFFFE0000000396 -S3154005002055555554FFFFFFFE0000000355555554E1 -S31540050030700FFFFE00000007100249240000000073 -S315400500400000000000000000000000020000000360 -S315400500500000000000000003FFFFFFFEFFFFFFFF5B -S3154005006000000002FFFFFFFD000000000000000049 -S31540050070000000010000000000000000FFFFFFFF38 -S315400500800000000000000001FFFFFFFFFFFFFFFF2C -S31540050090FFFFFFFF00000001FFFFFFFFFFFFFFFE21 -S315400500A00000000300000000FFFFFFFEFFFFFFFD0D -S315400500B000000000000000090000000700000001E4 -S315400500C0FFFFFFF700000002FFFFFFFCFFFFFFF801 -S315400500D000000002FFFFFFFCFFFFFFF8FFFFFFFCEC -S315400500E00000000200000008FFFFFFFCFFFFFFFEC7 -S315400500F0FFFFFFF8FFFFFFF800000001FFFFFFF8D5 -S31540050100FFFFFFF7000000000000000B00000002A3 -S31540050110000000050000002F000000020000001747 -S3154005012000003039000002A700000012FFFF076CEF -S315400501300000004DFFFFFCC600003039FFFFFD59AA -S31540050140FFFFFFEEFFFF076CFFFFFFB30000033A1B -S3154005015000000091FFFFE84100000000FFFFFD841D -S31540050160FFFED02F000000000000F6FA006E498120 -S315400501700000000000000000000000000000000034 -S31540050180FFFFF0000000000200000003000000062B -S3154005019000000002FFFFFFFDFFFFFFFA0000000021 -S315400501A0000000010000000000000000FFFFFFFF07 -S315400501B00000000000000001FFFFFFFFFFFFFFFFFB -S315400501C0FFFFFFFF00000001FFFFFFFFFFFFFFFEF0 -S315400501D000000003FFFFFFFAFFFFFFFEFFFFFFFDE5 -S315400501E000000006000000000000000000000009B5 -S315400501F000000000000000000000000000000000B4 -S31540050200000000000000000100000002000000039D -S315400502100000000000000000000000000000000093 -S31540050220000000004005050C400505D8400506A41C -S315400502300000000000000000000000000000000073 -S315400502400000000000000000000000000000000063 -S31540050250000000004001B5800000000000000000DD -S315400502600000000000000000000000000000000043 -S315400502700000000000000000000000000000000033 -S315400502800000000000000000000000000000000023 -S315400502900000000000000000000000000000000013 -S315400502A00000000000000000000000000000000003 -S315400502B000000000000000000000000000000000F3 -S315400502C000000000000000000000000000000001E2 -S315400502D0330EABCD1234E66DDEEC0005000B0000A7 -S315400502E000000000000000000000000000000000C3 -S315400502F000000000000000000000000000000000B3 -S3154005030000000000000000000000000000000000A2 -S315400503100000000000000000000000000000000092 -S315400503200000000000000000000000000000000082 -S315400503300000000000000000000000000000000072 -S315400503400000000000000000000000000000000062 -S315400503500000000000000000000000000000000052 -S315400503600000000000000000000000000000000042 -S315400503700000000000000000000000000000000032 -S315400503800000000000000000000000000000000022 -S315400503900000000000000000000000000000000012 -S315400503A00000000000000000000000000000000002 -S315400503B000000000000000000000000000000000F2 -S315400503C000000000000000000000000000000000E2 -S315400503D000000000000000000000000000000000D2 -S315400503E000000000000000000000000000000000C2 -S315400503F000000000000000000000000000000000B2 -S3154005040000000000000000000000000000000000A1 -S315400504100000000000000000000000000000000091 -S315400504200000000000000000000000000000000081 -S315400504300000000000000000000000000000000071 -S315400504400000000000000000000000000000000061 -S315400504500000000000000000000000000000000051 -S315400504600000000000000000000000000000000041 -S315400504700000000000000000000000000000000031 -S315400504800000000000000000000000000000000021 -S315400504900000000000000000000000000000000011 -S315400504A00000000000000000000000000000000001 -S315400504B000000000000000000000000000000000F1 -S315400504C000000000000000000000000000000000E1 -S315400504D000000000000000000000000000000000D1 -S315400504E000000000000000000000000000000000C1 -S315400504F000000000000000000000000000000000B1 -S3154005050000000000000000000000000000000000A0 -S315400505100000000000000000000000000000000090 -S315400505200000000000000000000000000000000080 -S315400505300000000000000000000000000000000070 -S315400505400000000000000000000000000000000060 -S315400505500000000000000000000000000000000050 -S315400505600000000000000000000000000000000040 -S315400505700000000000000000000000000000000030 -S315400505800000000000000000000000000000000020 -S315400505900000000000000000000000000000000010 -S315400505A00000000000000000000000000000000000 -S315400505B000000000000000000000000000000000F0 -S315400505C000000000000000000000000000000000E0 -S315400505D000000000000000000000000000000000D0 -S315400505E000000000000000000000000000000000C0 -S315400505F000000000000000000000000000000000B0 -S31540050600000000000000000000000000000000009F -S31540050610000000000000000000000000000000008F -S31540050620000000000000000000000000000000007F -S31540050630000000000000000000000000000000006F -S31540050640000000000000000000000000000000005F -S31540050650000000000000000000000000000000004F -S31540050660000000000000000000000000000000003F -S31540050670000000000000000000000000000000002F -S31540050680000000000000000000000000000000001F -S31540050690000000000000000000000000000000000F -S315400506A000000000000000000000000000000000FF -S315400506B000000000000000000000000000000000EF -S315400506C000000000000000000000000000000000DF -S315400506D000000000000000000000000000000000CF -S315400506E000000000000000000000000000000000BF -S315400506F000000000000000000000000000000000AF -S31540050700000000000000000000000000000000009E -S31540050710000000000000000000000000000000008E -S31540050720000000000000000000000000000000007E -S31540050730000000000000000000000000000000006E -S31540050740000000000000000000000000000000005E -S31540050750000000000000000000000000000000004E -S31540050760000000000000000000000000000000003E -S315400507704005022000000000FFFFFFFF00020000C9 -S315400507800000000000000000400507804005078086 -S3154005079040050788400507884005079040050790AE -S315400507A04005079840050798400507A0400507A05E -S315400507B0400507A8400507A8400507B0400507B00E -S315400507C0400507B8400507B8400507C0400507C0BE -S315400507D0400507C8400507C8400507D0400507D06E -S315400507E0400507D8400507D8400507E0400507E01E -S315400507F0400507E8400507E8400507F0400507F0CE -S31540050800400507F8400507F840050800400508007B -S315400508104005080840050808400508104005081029 -S3154005082040050818400508184005082040050820D9 -S315400508304005082840050828400508304005083089 -S315400508404005083840050838400508404005084039 -S3154005085040050848400508484005085040050850E9 -S315400508604005085840050858400508604005086099 -S315400508704005086840050868400508704005087049 -S3154005088040050878400508784005088040050880F9 -S3154005089040050888400508884005089040050890A9 -S315400508A04005089840050898400508A0400508A059 -S315400508B0400508A8400508A8400508B0400508B009 -S315400508C0400508B8400508B8400508C0400508C0B9 -S315400508D0400508C8400508C8400508D0400508D069 -S315400508E0400508D8400508D8400508E0400508E019 -S315400508F0400508E8400508E8400508F0400508F0C9 -S31540050900400508F8400508F8400509004005090076 -S315400509104005090840050908400509104005091024 -S3154005092040050918400509184005092040050920D4 -S315400509304005092840050928400509304005093084 -S315400509404005093840050938400509404005094034 -S3154005095040050948400509484005095040050950E4 -S315400509604005095840050958400509604005096094 -S315400509704005096840050968400509704005097044 -S3154005098040050978400509784005098040050980F4 -S3154005099040050988400509884005099040050990A4 -S315400509A04005099840050998400509A0400509A054 -S315400509B0400509A8400509A8400509B0400509B004 -S315400509C0400509B8400509B8400509C0400509C0B4 -S315400509D0400509C8400509C8400509D0400509D064 -S315400509E0400509D8400509D8400509E0400509E014 -S315400509F0400509E8400509E8400509F0400509F0C4 -S31540050A00400509F8400509F840050A0040050A0071 -S31540050A1040050A0840050A0840050A1040050A101F -S31540050A2040050A1840050A1840050A2040050A20CF -S31540050A3040050A2840050A2840050A3040050A307F -S31540050A4040050A3840050A3840050A4040050A402F -S31540050A5040050A4840050A4840050A5040050A50DF -S31540050A6040050A5840050A5840050A6040050A608F -S31540050A7040050A6840050A6840050A7040050A703F -S31540050A8040050A7840050A7840050A8040050A80EF -S31540050A9040050A8840050A8840050A9040050A909F -S31540050AA040050A9840050A9840050AA040050AA04F -S31540050AB040050AA840050AA840050AB040050AB0FF -S31540050AC040050AB840050AB840050AC040050AC0AF -S31540050AD040050AC840050AC840050AD040050AD05F -S31540050AE040050AD840050AD840050AE040050AE00F -S31540050AF040050AE840050AE840050AF040050AF0BF -S31540050B0040050AF840050AF840050B0040050B006C -S31540050B1040050B0840050B0840050B1040050B101A -S31540050B2040050B1840050B1840050B2040050B20CA -S31540050B3040050B2840050B2840050B3040050B307A -S31540050B4040050B3840050B3840050B4040050B402A -S31540050B5040050B4840050B4840050B5040050B50DA -S31540050B6040050B5840050B5840050B6040050B608A -S31540050B7040050B6840050B6840050B7040050B703A -S31540050B8040050B7840050B780000000040050B88B2 -S31540050B900000000000000000000000000000000208 -S31540050BA000000000000000000000000000000000FA -S31540050BB000000000000000000000000000000000EA -S31540050BC000000000000000000000000000000000DA -S31540050BD000000000000000000000000000000000CA -S31540050BE000000000000000000000000000000000BA -S31540050BF000000000000000000000000000000000AA -S31540050C000000000000000000000000000000000099 -S31540050C100000000000000000000000000000000089 -S31540050C200000000000000000000000000000000079 -S31540050C3080000100000000080000000700000006D3 -S31540050C40000000030000000000000000FFFF8AD0FE -S30940050C5080000310C2 +S31540048C200000000000000000800003100000000067 +S31540048C30000000008000010000000008000000075A +S31540048C40000000060000000300000000FFFF8AD079 S70540000000BA diff --git a/designs/leon3-xilinx-vc707/systest.c b/designs/leon3-xilinx-vc707/systest.c new file mode 100644 index 00000000..f1a41326 --- /dev/null +++ b/designs/leon3-xilinx-vc707/systest.c @@ -0,0 +1,20 @@ + + +main() + +{ + +/* +unsigned long* const memptr = (unsigned long*) 0x40000000; +unsigned long memory; + +*memptr = 0x87654321; +memory = *memptr; + + +*/ + + report_start(); + base_test(); + report_end(); +} diff --git a/designs/leon3-xilinx-vc707/testbench.vhd b/designs/leon3-xilinx-vc707/testbench.vhd new file mode 100644 index 00000000..f66bdffb --- /dev/null +++ b/designs/leon3-xilinx-vc707/testbench.vhd @@ -0,0 +1,514 @@ +----------------------------------------------------------------------------- +-- LEON3 Demonstration design test bench +-- Copyright (C) 2004 Jiri Gaisler, Gaisler Research +------------------------------------------------------------------------------ +-- This file is a part of the GRLIB VHDL IP LIBRARY +-- Copyright (C) 2003 - 2008, Gaisler Research +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler +-- +-- 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. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +------------------------------------------------------------------------------ + + +library ieee; +use ieee.std_logic_1164.all; +library gaisler; +use gaisler.libdcom.all; +use gaisler.sim.all; +library grlib; +use grlib.amba.all; +use grlib.stdlib.all; +use grlib.devices.all; +library micron; +use micron.all; +library techmap; +use techmap.gencomp.all; +use work.debug.all; + +use work.config.all; + +entity testbench is + generic ( + fabtech : integer := CFG_FABTECH; + memtech : integer := CFG_MEMTECH; + padtech : integer := CFG_PADTECH; + clktech : integer := CFG_CLKTECH; + disas : integer := CFG_DISAS; -- Enable disassembly to console + dbguart : integer := CFG_DUART; -- Print UART on console + pclow : integer := CFG_PCLOW; + testahb : boolean := true; + USE_MIG_INTERFACE_MODEL : boolean := false + + ); +end; + +architecture behav of testbench is + +-- DDR3 Simulation parameters +constant SIM_BYPASS_INIT_CAL : string := "FAST"; + -- # = "OFF" - Complete memory init & + -- calibration sequence + -- # = "SKIP" - Not supported + -- # = "FAST" - Complete memory init & use + -- abbreviated calib sequence + +constant SIMULATION : string := "TRUE"; + -- Should be TRUE during design simulations and + -- FALSE during implementations + + +constant promfile : string := "prom.srec"; -- rom contents +constant sramfile : string := "sram.srec"; -- ram contents +constant sdramfile : string := "sdram.srec"; -- sdram contents + +signal clk : std_logic := '0'; +signal Rst : std_logic := '0'; + +signal address : std_logic_vector(25 downto 0); +signal data : std_logic_vector(15 downto 0); +signal button : std_logic_vector(3 downto 0) := "0000"; +signal genio : std_logic_vector(59 downto 0); +signal romsn : std_logic; +signal oen : std_ulogic; +signal writen : std_ulogic; +signal adv : std_logic; + +signal GND : std_ulogic := '0'; +signal VCC : std_ulogic := '1'; +signal NC : std_ulogic := 'Z'; + +signal txd1 , rxd1 , dsurx : std_logic; +signal txd2 , rxd2 , dsutx : std_logic; +signal ctsn1 , rtsn1 , dsuctsn : std_ulogic; +signal ctsn2 , rtsn2 , dsurtsn : std_ulogic; + +signal phy_mii_data : std_logic; +signal phy_tx_clk : std_ulogic; +signal phy_rx_clk : std_ulogic; +signal phy_rx_data : std_logic_vector(7 downto 0); +signal phy_dv : std_ulogic; +signal phy_rx_er : std_ulogic; +signal phy_col : std_ulogic; +signal phy_crs : std_ulogic; +signal phy_tx_data : std_logic_vector(7 downto 0); +signal phy_tx_en : std_ulogic; +signal phy_tx_er : std_ulogic; +signal phy_mii_clk : std_ulogic; +signal phy_rst_n : std_ulogic; +signal phy_gtx_clk : std_ulogic; +signal phy_mii_int_n : std_ulogic; + +signal clk27 : std_ulogic := '0'; +signal clk200p : std_ulogic := '0'; +signal clk200n : std_ulogic := '1'; +signal clk33 : std_ulogic := '0'; + +signal iic_scl : std_ulogic; +signal iic_sda : std_ulogic; +signal ddc_scl : std_ulogic; +signal ddc_sda : std_ulogic; +signal dvi_iic_scl : std_logic; +signal dvi_iic_sda : std_logic; + +signal tft_lcd_data : std_logic_vector(11 downto 0); +signal tft_lcd_clk_p : std_ulogic; +signal tft_lcd_clk_n : std_ulogic; +signal tft_lcd_hsync : std_ulogic; +signal tft_lcd_vsync : std_ulogic; +signal tft_lcd_de : std_ulogic; +signal tft_lcd_reset_b : std_ulogic; + +-- DDR3 memory +signal ddr3_dq : std_logic_vector(63 downto 0); +signal ddr3_dqs_p : std_logic_vector(7 downto 0); +signal ddr3_dqs_n : std_logic_vector(7 downto 0); +signal ddr3_addr : std_logic_vector(13 downto 0); +signal ddr3_ba : std_logic_vector(2 downto 0); +signal ddr3_ras_n : std_logic; +signal ddr3_cas_n : std_logic; +signal ddr3_we_n : std_logic; +signal ddr3_reset_n : std_logic; +signal ddr3_ck_p : std_logic_vector(0 downto 0); +signal ddr3_ck_n : std_logic_vector(0 downto 0); +signal ddr3_cke : std_logic_vector(0 downto 0); +signal ddr3_cs_n : std_logic_vector(0 downto 0); +signal ddr3_dm : std_logic_vector(7 downto 0); +signal ddr3_odt : std_logic_vector(0 downto 0); + +-- SPI flash +signal spi_sel_n : std_ulogic; +signal spi_clk : std_ulogic; +signal spi_mosi : std_ulogic; + +signal dsurst : std_ulogic; +signal errorn : std_logic; + +signal switch : std_logic_vector(3 downto 0); -- I/O port +signal led : std_logic_vector(6 downto 0); -- I/O port +constant lresp : boolean := false; + +signal tdqs_n : std_logic; + +component leon3mp is + generic ( + fabtech : integer := CFG_FABTECH; + memtech : integer := CFG_MEMTECH; + padtech : integer := CFG_PADTECH; + clktech : integer := CFG_CLKTECH; + disas : integer := CFG_DISAS; -- Enable disassembly to console + dbguart : integer := CFG_DUART; -- Print UART on console + pclow : integer := CFG_PCLOW; + testahb : boolean := false; + SIM_BYPASS_INIT_CAL : string := "OFF"; + SIMULATION : string := "FALSE"; + USE_MIG_INTERFACE_MODEL : boolean := false + ); + port ( + reset : in std_ulogic; + clk200p : in std_ulogic; -- 200 MHz clock + clk200n : in std_ulogic; -- 200 MHz clock + address : out std_logic_vector(25 downto 0); + data : inout std_logic_vector(15 downto 0); + oen : out std_ulogic; + writen : out std_ulogic; + romsn : out std_logic; + adv : out std_logic; + ddr3_dq : inout std_logic_vector(63 downto 0); + ddr3_dqs_p : inout std_logic_vector(7 downto 0); + ddr3_dqs_n : inout std_logic_vector(7 downto 0); + ddr3_addr : out std_logic_vector(13 downto 0); + ddr3_ba : out std_logic_vector(2 downto 0); + ddr3_ras_n : out std_logic; + ddr3_cas_n : out std_logic; + ddr3_we_n : out std_logic; + ddr3_reset_n : out std_logic; + ddr3_ck_p : out std_logic_vector(0 downto 0); + ddr3_ck_n : out std_logic_vector(0 downto 0); + ddr3_cke : out std_logic_vector(0 downto 0); + ddr3_cs_n : out std_logic_vector(0 downto 0); + ddr3_dm : out std_logic_vector(7 downto 0); + ddr3_odt : out std_logic_vector(0 downto 0); + dsurx : in std_ulogic; + dsutx : out std_ulogic; + dsuctsn : in std_ulogic; + dsurtsn : out std_ulogic; + button : in std_logic_vector(3 downto 0); + switch : inout std_logic_vector(3 downto 0); + led : out std_logic_vector(6 downto 0); + iic_scl : inout std_ulogic; + iic_sda : inout std_ulogic + ); +end component; + +component ddr3_model is + port ( + rst_n : in std_logic; + ck : in std_logic; + ck_n : in std_logic; + cke : in std_logic; + cs_n : in std_logic; + ras_n : in std_logic; + cas_n : in std_logic; + we_n : in std_logic; + dm_tdqs : inout std_logic; + ba : in std_logic_vector(2 downto 0); + addr : in std_logic_vector(13 downto 0); + dq : inout std_logic_vector(7 downto 0); + dqs : inout std_logic; + dqs_n : inout std_logic; + tdqs_n : out std_logic; + odt : in std_logic + ); +end component ddr3_model; + +begin + +-- clock and reset + clk200p <= not clk200p after 2.5 ns; + clk200n <= not clk200n after 2.5 ns; + rst <= not dsurst; + rxd1 <= 'H'; ctsn1 <= '0'; + rxd2 <= 'H'; ctsn2 <= '0'; + button <= "0000"; + switch <= "0000"; + + cpu : leon3mp + generic map ( + fabtech => fabtech, + memtech => memtech, + padtech => padtech, + clktech => clktech, + disas => disas, + dbguart => dbguart, + pclow => pclow, + testahb => testahb, + SIM_BYPASS_INIT_CAL => SIM_BYPASS_INIT_CAL, + SIMULATION => SIMULATION, + USE_MIG_INTERFACE_MODEL => USE_MIG_INTERFACE_MODEL + ) + port map ( + reset => rst, + clk200p => clk200p, + clk200n => clk200n, + address => address, + data => data, + oen => oen, + writen => writen, + romsn => romsn, + adv => adv, + ddr3_dq => ddr3_dq, + ddr3_dqs_p => ddr3_dqs_p, + ddr3_dqs_n => ddr3_dqs_n, + ddr3_addr => ddr3_addr, + ddr3_ba => ddr3_ba, + ddr3_ras_n => ddr3_ras_n, + ddr3_cas_n => ddr3_cas_n, + ddr3_we_n => ddr3_we_n, + ddr3_reset_n => ddr3_reset_n, + ddr3_ck_p => ddr3_ck_p, + ddr3_ck_n => ddr3_ck_n, + ddr3_cke => ddr3_cke, + ddr3_cs_n => ddr3_cs_n, + ddr3_dm => ddr3_dm, + ddr3_odt => ddr3_odt, + dsurx => dsurx, + dsutx => dsutx, + dsuctsn => dsuctsn, + dsurtsn => dsurtsn, + button => button, + switch => switch, + led => led, + iic_scl => iic_scl, + iic_sda => iic_sda + ); + + prom0 : for i in 0 to 1 generate + sr0 : sram generic map (index => i+4, abits => 26, fname => promfile) + port map (address(25 downto 0), data(15-i*8 downto 8-i*8), romsn, + writen, oen); + end generate; + + -- ************************************************************************** + -- * Memory Models instantiations + -- ************************************************************************** + gen_mem_model : if (USE_MIG_INTERFACE_MODEL /= true) generate + ddr3mem : if (CFG_MIG_SERIES7 = 1) generate + gen_mem: for i in 0 to 7 generate + u1: ddr3_model port map + ( + rst_n => ddr3_reset_n, + ck => ddr3_ck_p(0), + ck_n => ddr3_ck_n(0), + cke => ddr3_cke(0), + cs_n => ddr3_cs_n(0), + ras_n => ddr3_ras_n, + cas_n => ddr3_cas_n, + we_n => ddr3_we_n, + dm_tdqs => ddr3_dm(i), + ba => ddr3_ba, + addr => ddr3_addr, + dq => ddr3_dq((8*i+7) downto (8*i)), + dqs => ddr3_dqs_p(i), + dqs_n => ddr3_dqs_n(i), + tdqs_n => OPEN, + odt => ddr3_odt(0) + ); + end generate gen_mem; + end generate ddr3mem; -- DDR3 + end generate gen_mem_model; + + mig_mem_model : if (USE_MIG_INTERFACE_MODEL = true) generate + ddr3_dq <= (others => 'Z'); + ddr3_dqs_p <= (others => 'Z'); + ddr3_dqs_n <= (others => 'Z'); + end generate mig_mem_model; + + errorn <= led(1); + errorn <= 'H'; -- ERROR pull-up + + phy0 : if (CFG_GRETH = 1) generate + phy_mii_data <= 'H'; + p0: phy + generic map (address => 7) + port map(phy_rst_n, phy_mii_data, phy_tx_clk, phy_rx_clk, phy_rx_data, + phy_dv, phy_rx_er, phy_col, phy_crs, phy_tx_data, phy_tx_en, + phy_tx_er, phy_mii_clk, phy_gtx_clk); + end generate; + + iuerr : process + begin + wait for 210 us; -- This is for proper DDR3 behaviour durign init phase not needed durin simulation + wait on led(3); -- DDR3 Memory Init ready + wait for 5000 ns; + if to_x01(errorn) = '1' then wait on errorn; end if; + assert (to_x01(errorn) = '1') + report "*** IU in error mode, simulation halted ***" + severity failure ; -- this should be a failure + end process; + + data <= buskeep(data) after 5 ns; + + dsucom : process + procedure dsucfg(signal dsurx : in std_ulogic; signal dsutx : out std_ulogic) is + variable w32 : std_logic_vector(31 downto 0); + variable c8 : std_logic_vector(7 downto 0); + constant txp : time := 320 * 1 ns; + begin + dsutx <= '1'; + dsurst <= '0'; + wait for 2500 ns; + wait for 210 us; -- This is for proper DDR3 behaviour durign init phase not needed durin simulation + dsurst <= '1'; + wait on led(3); -- Wait for DDR3 Memory Init ready + wait for 5000 ns; + txc(dsutx, 16#55#, txp); -- sync uart + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); + rxi(dsurx, w32, txp, lresp); + wait; + + -- do test read and writes to DDR3 to check status + -- Write + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); + txa(dsutx, 16#01#, 16#23#, 16#45#, 16#67#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#04#, txp); + txa(dsutx, 16#89#, 16#AB#, 16#CD#, 16#EF#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#08#, txp); + txa(dsutx, 16#08#, 16#19#, 16#2A#, 16#3B#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#0C#, txp); + txa(dsutx, 16#4C#, 16#5D#, 16#6E#, 16#7F#, txp); + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); + rxi(dsurx, w32, txp, lresp); + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#04#, txp); + rxi(dsurx, w32, txp, lresp); + report "* Read " & tost(w32); + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#08#, txp); + rxi(dsurx, w32, txp, lresp); + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#0C#, txp); + rxi(dsurx, w32, txp, lresp); + wait; + wait for 5000 ns; + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); + txa(dsutx, 16#00#, 16#00#, 16#80#, 16#02#, txp); + wait; + -- Register 0x90000000 (DSU Control Register) + -- Data 0x0000202e (b0010 0000 0010 1110) + -- [0] - Trace Enable + -- [1] - Break On Error + -- [2] - Break on IU watchpoint + -- [3] - Break on s/w break points + -- + -- [4] - (Break on trap) + -- [5] - Break on error traps + -- [6] - Debug mode (Read mode only) + -- [7] - DSUEN (read mode) + -- + -- [8] - DSUBRE (read mode) + -- [9] - Processor mode error (clears error) + -- [10] - processor halt (returns 1 if processor halted) + -- [11] - power down mode (return 1 if processor in power down mode) + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); + txa(dsutx, 16#00#, 16#00#, 16#20#, 16#2e#, txp); + + wait for 25000 ns; + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#01#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#40#, 16#00#, 16#24#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0D#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#70#, 16#11#, 16#78#, txp); + txa(dsutx, 16#91#, 16#00#, 16#00#, 16#0D#, txp); + + txa(dsutx, 16#90#, 16#40#, 16#00#, 16#44#, txp); + txa(dsutx, 16#00#, 16#00#, 16#20#, 16#00#, txp); + + txc(dsutx, 16#80#, txp); + txa(dsutx, 16#90#, 16#40#, 16#00#, 16#44#, txp); + + wait; + -- This is only kept for reference + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#00#, 16#00#, 16#0a#, 16#aa#, txp); + txa(dsutx, 16#00#, 16#55#, 16#00#, 16#55#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#00#, 16#00#, 16#0a#, 16#a0#, txp); + txa(dsutx, 16#01#, 16#02#, 16#09#, 16#33#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#2e#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#91#, 16#00#, 16#00#, 16#00#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#2e#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0f#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#00#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#80#, 16#00#, 16#02#, 16#10#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0f#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#91#, 16#40#, 16#00#, 16#24#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#24#, txp); + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#91#, 16#70#, 16#00#, 16#00#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#03#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp); + txa(dsutx, 16#00#, 16#00#, 16#ff#, 16#ff#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#40#, 16#00#, 16#48#, txp); + txa(dsutx, 16#00#, 16#00#, 16#00#, 16#12#, txp); + + txc(dsutx, 16#c0#, txp); + txa(dsutx, 16#90#, 16#40#, 16#00#, 16#60#, txp); + txa(dsutx, 16#00#, 16#00#, 16#12#, 16#10#, txp); + + txc(dsutx, 16#80#, txp); + txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp); + rxi(dsurx, w32, txp, lresp); + + txc(dsutx, 16#a0#, txp); + txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp); + rxi(dsurx, w32, txp, lresp); + + end; + + begin + dsuctsn <= '0'; + dsucfg(dsutx, dsurx); + wait; + end process; +end ; + diff --git a/designs/leon3-ge-hpe-mini/tkconfig.h b/designs/leon3-xilinx-vc707/tkconfig.h similarity index 86% rename from designs/leon3-ge-hpe-mini/tkconfig.h rename to designs/leon3-xilinx-vc707/tkconfig.h index 178cac38..0dae996c 100644 --- a/designs/leon3-ge-hpe-mini/tkconfig.h +++ b/designs/leon3-xilinx-vc707/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -738,81 +760,6 @@ #define CONFIG_DSU_ETH_DIS 0 #endif - -#ifndef CONFIG_SRCTRL -#define CONFIG_SRCTRL 0 -#endif - -#ifndef CONFIG_SRCTRL_PROMWS -#define CONFIG_SRCTRL_PROMWS 0 -#endif - -#ifndef CONFIG_SRCTRL_RAMWS -#define CONFIG_SRCTRL_RAMWS 0 -#endif - -#ifndef CONFIG_SRCTRL_IOWS -#define CONFIG_SRCTRL_IOWS 0 -#endif - -#ifndef CONFIG_SRCTRL_RMW -#define CONFIG_SRCTRL_RMW 0 -#endif - -#ifndef CONFIG_SRCTRL_8BIT -#define CONFIG_SRCTRL_8BIT 0 -#endif - - -#ifndef CONFIG_SRCTRL_ROMASEL -#define CONFIG_SRCTRL_ROMASEL 0 -#endif - -#if defined CONFIG_SRCTRL_SRBANKS1 -#define CFG_SR_CTRL_SRBANKS 1 -#elif defined CONFIG_SRCTRL_SRBANKS2 -#define CFG_SR_CTRL_SRBANKS 2 -#elif defined CONFIG_SRCTRL_SRBANKS3 -#define CFG_SR_CTRL_SRBANKS 3 -#elif defined CONFIG_SRCTRL_SRBANKS4 -#define CFG_SR_CTRL_SRBANKS 4 -#elif defined CONFIG_SRCTRL_SRBANKS5 -#define CFG_SR_CTRL_SRBANKS 5 -#else -#define CFG_SR_CTRL_SRBANKS 1 -#endif - -#if defined CONFIG_SRCTRL_BANKSZ0 -#define CFG_SR_CTRL_BANKSZ 0 -#elif defined CONFIG_SRCTRL_BANKSZ1 -#define CFG_SR_CTRL_BANKSZ 1 -#elif defined CONFIG_SRCTRL_BANKSZ2 -#define CFG_SR_CTRL_BANKSZ 2 -#elif defined CONFIG_SRCTRL_BANKSZ3 -#define CFG_SR_CTRL_BANKSZ 3 -#elif defined CONFIG_SRCTRL_BANKSZ4 -#define CFG_SR_CTRL_BANKSZ 4 -#elif defined CONFIG_SRCTRL_BANKSZ5 -#define CFG_SR_CTRL_BANKSZ 5 -#elif defined CONFIG_SRCTRL_BANKSZ6 -#define CFG_SR_CTRL_BANKSZ 6 -#elif defined CONFIG_SRCTRL_BANKSZ7 -#define CFG_SR_CTRL_BANKSZ 7 -#elif defined CONFIG_SRCTRL_BANKSZ8 -#define CFG_SR_CTRL_BANKSZ 8 -#elif defined CONFIG_SRCTRL_BANKSZ9 -#define CFG_SR_CTRL_BANKSZ 9 -#elif defined CONFIG_SRCTRL_BANKSZ10 -#define CFG_SR_CTRL_BANKSZ 10 -#elif defined CONFIG_SRCTRL_BANKSZ11 -#define CFG_SR_CTRL_BANKSZ 11 -#elif defined CONFIG_SRCTRL_BANKSZ12 -#define CFG_SR_CTRL_BANKSZ 12 -#elif defined CONFIG_SRCTRL_BANKSZ13 -#define CFG_SR_CTRL_BANKSZ 13 -#else -#define CFG_SR_CTRL_BANKSZ 0 -#endif #ifndef CONFIG_MCTRL_LEON2 #define CONFIG_MCTRL_LEON2 0 #endif @@ -857,6 +804,46 @@ #define CONFIG_MCTRL_PROGPAGE 0 #endif + +#ifndef CONFIG_MIG_DDR3 +#define CONFIG_MIG_DDR3 0 +#endif + +#ifndef CONFIG_MIG_DDR2 +#define CONFIG_MIG_DDR2 0 +#endif + +#ifndef CONFIG_MIG_RANKS +#define CONFIG_MIG_RANKS 1 +#endif + +#ifndef CONFIG_MIG_COLBITS +#define CONFIG_MIG_COLBITS 10 +#endif + +#ifndef CONFIG_MIG_ROWBITS +#define CONFIG_MIG_ROWBITS 13 +#endif + +#ifndef CONFIG_MIG_BANKBITS +#define CONFIG_MIG_BANKBITS 2 +#endif + +#ifndef CONFIG_MIG_HMASK +#define CONFIG_MIG_HMASK F00 +#endif + +#ifndef CONFIG_MIG_SERIES7 +#define CONFIG_MIG_SERIES7 0 +#endif +#ifndef CONFIG_AHBSTAT_ENABLE +#define CONFIG_AHBSTAT_ENABLE 0 +#endif + +#ifndef CONFIG_AHBSTAT_NFTSLV +#define CONFIG_AHBSTAT_NFTSLV 1 +#endif + #ifndef CONFIG_AHBROM_ENABLE #define CONFIG_AHBROM_ENABLE 0 #endif @@ -1005,24 +992,18 @@ #define CONFIG_GPT_WDOG 0 #endif -#ifndef CONFIG_ATA_ENABLE -#define CONFIG_ATA_ENABLE 0 -#endif - -#ifndef CONFIG_ATAIO -#define CONFIG_ATAIO 0 +#ifndef CONFIG_GRGPIO_ENABLE +#define CONFIG_GRGPIO_ENABLE 0 #endif - -#ifndef CONFIG_ATAIRQ -#define CONFIG_ATAIRQ 0 +#ifndef CONFIG_GRGPIO_IMASK +#define CONFIG_GRGPIO_IMASK 0000 #endif - -#ifndef CONFIG_ATA_MWDMA -#define CONFIG_ATA_MWDMA 0 +#ifndef CONFIG_GRGPIO_WIDTH +#define CONFIG_GRGPIO_WIDTH 1 #endif -#ifndef CONFIG_ATA_FIFO -#define CONFIG_ATA_FIFO 8 +#ifndef CONFIG_I2C_ENABLE +#define CONFIG_I2C_ENABLE 0 #endif #ifndef CONFIG_VGA_ENABLE #define CONFIG_VGA_ENABLE 0 @@ -1034,14 +1015,82 @@ #define CONFIG_KBD_ENABLE 0 #endif -#ifndef CONFIG_AHB2HPI_ENABLE -#define CONFIG_AHB2HPI_ENABLE 0 + +#ifndef CONFIG_SPIMCTRL +#define CONFIG_SPIMCTRL 0 +#endif + +#ifndef CONFIG_SPIMCTRL_SDCARD +#define CONFIG_SPIMCTRL_SDCARD 0 +#endif + +#ifndef CONFIG_SPIMCTRL_READCMD +#define CONFIG_SPIMCTRL_READCMD 0 +#endif + +#ifndef CONFIG_SPIMCTRL_DUMMYBYTE +#define CONFIG_SPIMCTRL_DUMMYBYTE 0 #endif -#ifndef CONFIG_DAC_AHB_ENABLE -#define CONFIG_DAC_AHB_ENABLE 0 +#ifndef CONFIG_SPIMCTRL_DUALOUTPUT +#define CONFIG_SPIMCTRL_DUALOUTPUT 0 #endif +#ifndef CONFIG_SPIMCTRL_SCALER +#define CONFIG_SPIMCTRL_SCALER 1 +#endif + +#ifndef CONFIG_SPIMCTRL_ASCALER +#define CONFIG_SPIMCTRL_ASCALER 1 +#endif + +#ifndef CONFIG_SPIMCTRL_PWRUPCNT +#define CONFIG_SPIMCTRL_PWRUPCNT 0 +#endif + +#ifndef CONFIG_SPIMCTRL_OFFSET +#define CONFIG_SPIMCTRL_OFFSET 0 +#endif +#ifndef CONFIG_SPICTRL_ENABLE +#define CONFIG_SPICTRL_ENABLE 0 +#endif +#ifndef CONFIG_SPICTRL_NUM +#define CONFIG_SPICTRL_NUM 1 +#endif +#ifndef CONFIG_SPICTRL_SLVS +#define CONFIG_SPICTRL_SLVS 1 +#endif +#ifndef CONFIG_SPICTRL_FIFO +#define CONFIG_SPICTRL_FIFO 1 +#endif +#ifndef CONFIG_SPICTRL_SLVREG +#define CONFIG_SPICTRL_SLVREG 0 +#endif +#ifndef CONFIG_SPICTRL_ODMODE +#define CONFIG_SPICTRL_ODMODE 0 +#endif +#ifndef CONFIG_SPICTRL_AM +#define CONFIG_SPICTRL_AM 0 +#endif +#ifndef CONFIG_SPICTRL_ASEL +#define CONFIG_SPICTRL_ASEL 0 +#endif +#ifndef CONFIG_SPICTRL_TWEN +#define CONFIG_SPICTRL_TWEN 0 +#endif +#ifndef CONFIG_SPICTRL_MAXWLEN +#define CONFIG_SPICTRL_MAXWLEN 0 +#endif +#ifndef CONFIG_SPICTRL_SYNCRAM +#define CONFIG_SPICTRL_SYNCRAM 0 +#endif +#if defined(CONFIG_SPICTRL_DMRFT) +#define CONFIG_SPICTRL_FT 1 +#elif defined(CONFIG_SPICTRL_TMRFT) +#define CONFIG_SPICTRL_FT 2 +#else +#define CONFIG_SPICTRL_FT 0 +#endif #ifndef CONFIG_DEBUG_UART #define CONFIG_DEBUG_UART 0 diff --git a/designs/leon3-xilinx-xc3sd-1800/Makefile b/designs/leon3-xilinx-xc3sd-1800/Makefile index 73d690ef..bad86eba 100644 --- a/designs/leon3-xilinx-xc3sd-1800/Makefile +++ b/designs/leon3-xilinx-xc3sd-1800/Makefile @@ -20,10 +20,10 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann opencores usbhc spw + tmtc openchip ihp opencores usbhc spw DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - usb grusbhc spacewire ata haps coremp7 ascs slink hcan \ - leon4 leon4b64 l2cache pwm gr1553b iommu + usb grusbhc spacewire ascs slink hcan \ + leon4 leon4v0 l2cache pwm gr1553b iommu FILESKIP = grcan.vhd i2cmst.vhd include $(GRLIB)/bin/Makefile diff --git a/designs/leon3-xilinx-xc3sd-1800/ahbrom.vhd b/designs/leon3-xilinx-xc3sd-1800/ahbrom.vhd index c289e851..5ab936dc 100644 --- a/designs/leon3-xilinx-xc3sd-1800/ahbrom.vhd +++ b/designs/leon3-xilinx-xc3sd-1800/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-xilinx-xc3sd-1800/config.help b/designs/leon3-xilinx-xc3sd-1800/config.help index eab50be3..6bd40c23 100644 --- a/designs/leon3-xilinx-xc3sd-1800/config.help +++ b/designs/leon3-xilinx-xc3sd-1800/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ @@ -1019,7 +1052,7 @@ CONFIG_SPIMCTRL_SDCARD Read command CONFIG_SPIMCTRL_READCMD - Read instruction for SPI memory device + Read instruction for SPI memory device (hex). Dummy byte CONFIG_SPIMCTRL_DUMMYBYTE @@ -1029,6 +1062,10 @@ Dual output CONFIG_SPIMCTRL_DUALOUTPUT Memory device supports dual output when reading data. +Address offset +CONFIG_SPIMCTRL_OFFSET + Offset that will be added by core on SPI memory address (hex). + Clock scaler CONFIG_SPIMCTRL_SCALER Selects the divisor used when dividing the system clock to produce diff --git a/designs/leon3-xilinx-xc3sd-1800/config.vhd.h b/designs/leon3-xilinx-xc3sd-1800/config.vhd.h index bba6c6a4..250af28d 100644 --- a/designs/leon3-xilinx-xc3sd-1800/config.vhd.h +++ b/designs/leon3-xilinx-xc3sd-1800/config.vhd.h @@ -179,6 +179,7 @@ constant CFG_SPIMCTRL_SCALER : integer := CONFIG_SPIMCTRL_SCALER; constant CFG_SPIMCTRL_ASCALER : integer := CONFIG_SPIMCTRL_ASCALER; constant CFG_SPIMCTRL_PWRUPCNT : integer := CONFIG_SPIMCTRL_PWRUPCNT; + constant CFG_SPIMCTRL_OFFSET : integer := 16#CONFIG_SPIMCTRL_OFFSET#; -- SPI controller constant CFG_SPICTRL_ENABLE : integer := CONFIG_SPICTRL_ENABLE; diff --git a/designs/leon3-xilinx-xc3sd-1800/lconfig.tk b/designs/leon3-xilinx-xc3sd-1800/lconfig.tk index 56fdf882..d318acbe 100755 --- a/designs/leon3-xilinx-xc3sd-1800/lconfig.tk +++ b/designs/leon3-xilinx-xc3sd-1800/lconfig.tk @@ -757,7 +757,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -767,7 +768,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -910,8 +913,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -930,6 +935,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1019,9 +1028,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1075,10 +1085,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1124,14 +1135,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1204,13 +1217,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1250,22 +1271,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1322,21 +1611,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1383,36 +1672,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1420,48 +1710,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1517,27 +1808,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1578,16 +1869,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1596,34 +1888,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1680,92 +1973,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1773,18 +2066,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1825,52 +2118,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1878,162 +2172,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2089,45 +2384,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2167,18 +2464,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2186,55 +2484,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2291,24 +2594,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2348,17 +2651,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2366,37 +2670,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2452,16 +2757,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2509,9 +2821,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2533,21 +2843,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2856,14 +3171,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2937,17 +3252,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3602,16 +3917,16 @@ proc menu17 {w title} { hex $w.config.f 17 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 17 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 17 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 17 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 17 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3673,21 +3988,21 @@ proc update_define_menu17 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3747,14 +4062,14 @@ proc menu18 {w title} { bool $w.config.f 18 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 18 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_28 - minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_28 CONFIG_GRETH_FIFO4 + global tmpvar_30 + minimenu $w.config.f 18 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3808,17 +4123,17 @@ proc update_define_menu18 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_28 + global tmpvar_30 global CONFIG_GRETH_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_28 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -3874,15 +4189,15 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_29 - minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_29 CONFIG_UA1_FIFO1 + global tmpvar_31 + minimenu $w.config.f 19 1 "UART1 FIFO depth" tmpvar_31 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 19 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 19 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3971,19 +4286,19 @@ proc update_menu19 {} { proc update_define_menu19 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_29 + global tmpvar_31 global CONFIG_UA1_FIFO1 - if {$tmpvar_29 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_29 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_29 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_29 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_29 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_29 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4268,9 +4583,10 @@ proc menu22 {w title} { hex $w.config.f 22 2 "Read instruction " CONFIG_SPIMCTRL_READCMD bool $w.config.f 22 3 "Read instruction requires dummy byte " CONFIG_SPIMCTRL_DUMMYBYTE bool $w.config.f 22 4 "Enable dual output for reads " CONFIG_SPIMCTRL_DUALOUTPUT - int $w.config.f 22 5 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER - int $w.config.f 22 6 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER - int $w.config.f 22 7 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT + hex $w.config.f 22 5 "Address offset " CONFIG_SPIMCTRL_OFFSET + int $w.config.f 22 6 "Clock divisor for device clock" CONFIG_SPIMCTRL_SCALER + int $w.config.f 22 7 "Clock divisor for alt. device clock" CONFIG_SPIMCTRL_ASCALER + int $w.config.f 22 8 "Number of clock cycles to idle after power up " CONFIG_SPIMCTRL_PWRUPCNT @@ -4320,12 +4636,14 @@ proc update_menu22 {} { global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { configure_entry .menu22.config.f.x4 normal {n l y}} else {configure_entry .menu22.config.f.x4 disabled {y n l}} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {.menu22.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x5.l configure -state normal; } else {.menu22.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x5.l configure -state disabled} global CONFIG_SPIMCTRL_SCALER - if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x5.l configure -state normal; } else {.menu22.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x5.l configure -state disabled} - global CONFIG_SPIMCTRL_ASCALER if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x6.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x6.l configure -state normal; } else {.menu22.config.f.x6.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x6.l configure -state disabled} - global CONFIG_SPIMCTRL_PWRUPCNT + global CONFIG_SPIMCTRL_ASCALER if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x7.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x7.l configure -state normal; } else {.menu22.config.f.x7.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x7.l configure -state disabled} + global CONFIG_SPIMCTRL_PWRUPCNT + if {($CONFIG_SPIMCTRL == 1)} then {.menu22.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu22.config.f.x8.l configure -state normal; } else {.menu22.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu22.config.f.x8.l configure -state disabled} } @@ -4344,6 +4662,8 @@ proc update_define_menu22 {} { global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then { set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT&15]} else {set CONFIG_SPIMCTRL_DUALOUTPUT [expr $CONFIG_SPIMCTRL_DUALOUTPUT|16]} + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {validate_hex CONFIG_SPIMCTRL_OFFSET "$CONFIG_SPIMCTRL_OFFSET" 0} global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {validate_int CONFIG_SPIMCTRL_SCALER "$CONFIG_SPIMCTRL_SCALER" 1} global CONFIG_SPIMCTRL_ASCALER @@ -4415,12 +4735,12 @@ proc menu23 {w title} { bool $w.config.f 23 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN int $w.config.f 23 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN bool $w.config.f 23 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_30 - minimenu $w.config.f 23 11 "Fault-tolerance" tmpvar_30 CONFIG_SPICTRL_NOFT + global tmpvar_32 + minimenu $w.config.f 23 11 "Fault-tolerance" tmpvar_32 CONFIG_SPICTRL_NOFT menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_30 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_30 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_30 -value "TMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_32 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_32 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_32 -value "TMR" -command "update_active" menusplit $w $w.config.f.x11.x.menu 3 @@ -4520,13 +4840,13 @@ proc update_define_menu23 {} { global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_30 + global tmpvar_32 global CONFIG_SPICTRL_NOFT - if {$tmpvar_30 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + if {$tmpvar_32 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} global CONFIG_SPICTRL_DMRFT - if {$tmpvar_30 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + if {$tmpvar_32 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} global CONFIG_SPICTRL_TMRFT - if {$tmpvar_30 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} + if {$tmpvar_32 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } @@ -4668,7 +4988,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4678,6 +4999,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4702,6 +5025,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4714,14 +5038,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4734,27 +5063,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4764,17 +5093,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4786,12 +5115,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4801,10 +5130,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4815,7 +5144,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4827,26 +5156,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4854,27 +5185,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4895,7 +5230,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -4943,7 +5278,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4954,14 +5289,14 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 set CONFIG_GRETH_FIFO32 0 set CONFIG_GRETH_FIFO64 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4988,6 +5323,7 @@ set CONFIG_SPIMCTRL_SDCARD 0 set CONFIG_SPIMCTRL_READCMD 0B set CONFIG_SPIMCTRL_DUMMYBYTE 0 set CONFIG_SPIMCTRL_DUALOUTPUT 0 +set CONFIG_SPIMCTRL_OFFSET 0 set CONFIG_SPIMCTRL_SCALER 1 set CONFIG_SPIMCTRL_ASCALER 8 set CONFIG_SPIMCTRL_PWRUPCNT 0 @@ -5002,7 +5338,7 @@ set CONFIG_SPICTRL_ODMODE 0 set CONFIG_SPICTRL_TWEN 0 set CONFIG_SPICTRL_MAXWLEN 0 set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_SPICTRL_NOFT 0 set CONFIG_SPICTRL_DMRFT 0 set CONFIG_SPICTRL_TMRFT 0 @@ -5063,7 +5399,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5073,6 +5410,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5111,6 +5450,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5123,9 +5463,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5139,239 +5480,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5416,13 +5907,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5514,38 +6005,38 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_28 + global tmpvar_30 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -5589,6 +6080,8 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUMMYBYTE $CONFIG_SPIMCTRL_DUMMYBYTE [list $notmod] 2 } global CONFIG_SPIMCTRL_DUALOUTPUT if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_tristate $cfg $autocfg CONFIG_SPIMCTRL_DUALOUTPUT $CONFIG_SPIMCTRL_DUALOUTPUT [list $notmod] 2 } + global CONFIG_SPIMCTRL_OFFSET + if {($CONFIG_SPIMCTRL == 1) && ($CONFIG_SPIMCTRL_SDCARD != 1)} then {write_hex $cfg $autocfg CONFIG_SPIMCTRL_OFFSET $CONFIG_SPIMCTRL_OFFSET $notmod } global CONFIG_SPIMCTRL_SCALER if {($CONFIG_SPIMCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SPIMCTRL_SCALER $CONFIG_SPIMCTRL_SCALER $notmod } global CONFIG_SPIMCTRL_ASCALER @@ -5618,11 +6111,11 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_30 + global tmpvar_32 if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_30 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_30 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_30 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_32 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_32 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -5667,7 +6160,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -5677,6 +6171,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -5695,8 +6191,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -5779,11 +6280,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -5804,6 +6307,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -5906,8 +6413,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -5926,6 +6435,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5966,332 +6479,358 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_28 "64" } - global tmpvar_29 - set tmpvar_29 "1" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } + global tmpvar_31 + set tmpvar_31 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_31 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_31 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_31 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_31 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_31 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_29 "32" } - global tmpvar_30 - set tmpvar_30 "None" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_31 "32" } + global tmpvar_32 + set tmpvar_32 "None" global CONFIG_SPICTRL_NOFT - if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_30 "None" } + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_32 "None" } global CONFIG_SPICTRL_DMRFT - if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_30 "Parity-DMR" } + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_32 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT - if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_30 "TMR" } + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_32 "TMR" } } diff --git a/designs/leon3-xilinx-xc3sd-1800/leon3mp.vhd b/designs/leon3-xilinx-xc3sd-1800/leon3mp.vhd index 7993cae7..028f9635 100644 --- a/designs/leon3-xilinx-xc3sd-1800/leon3mp.vhd +++ b/designs/leon3-xilinx-xc3sd-1800/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-xc3sd-1800/testbench.vhd b/designs/leon3-xilinx-xc3sd-1800/testbench.vhd index b89d1f67..e77305bf 100644 --- a/designs/leon3-xilinx-xc3sd-1800/testbench.vhd +++ b/designs/leon3-xilinx-xc3sd-1800/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-xilinx-xc3sd-1800/tkconfig.h b/designs/leon3-xilinx-xc3sd-1800/tkconfig.h index 83419575..5a5e8641 100644 --- a/designs/leon3-xilinx-xc3sd-1800/tkconfig.h +++ b/designs/leon3-xilinx-xc3sd-1800/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -1067,6 +1089,10 @@ #ifndef CONFIG_SPIMCTRL_PWRUPCNT #define CONFIG_SPIMCTRL_PWRUPCNT 0 #endif + +#ifndef CONFIG_SPIMCTRL_OFFSET +#define CONFIG_SPIMCTRL_OFFSET 0 +#endif #ifndef CONFIG_SPICTRL_ENABLE #define CONFIG_SPICTRL_ENABLE 0 #endif diff --git a/designs/leon3-ztex-ufm-111/Makefile b/designs/leon3-ztex-ufm-111/Makefile index 0c8db34e..0dd33950 100644 --- a/designs/leon3-ztex-ufm-111/Makefile +++ b/designs/leon3-ztex-ufm-111/Makefile @@ -1,11 +1,13 @@ include .config + GRLIB=../.. TOP=leon3mp BOARD=ztex-ufm-111 +DESIGN=leon3-ztex-ufm-111 include $(GRLIB)/boards/$(BOARD)/Makefile.inc DEVICE=$(PART)-$(PACKAGE)$(SPEED) UCF=$(TOP).ucf -#ISEMAPOPT=-timing +UCF_PLANAHEAD=$(UCF) QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf EFFORT=high XSTOPT=-uc leon3mp.xcf @@ -22,9 +24,16 @@ VHDLOPTSYNFILES = \ mig37/mig_37/user_design/rtl/mcb_soft_calibration_top.vhd \ mig37/mig_37/user_design/rtl/memc3_infrastructure.vhd \ mig37/mig_37/user_design/rtl/memc3_wrapper.vhd \ - mig37/mig_37/user_design/rtl/mig_37.vhd - -VHDLSYNFILES = config.vhd ahbrom.vhd ahb2mig_ztex.vhd leon3mp.vhd + mig37/mig_37/user_design/rtl/mig_37.vhd \ + mig39/mig_39/user_design/rtl/iodrp_controller.vhd \ + mig39/mig_39/user_design/rtl/iodrp_mcb_controller.vhd \ + mig39/mig_39/user_design/rtl/mcb_raw_wrapper.vhd \ + mig39/mig_39/user_design/rtl/mcb_soft_calibration.vhd \ + mig39/mig_39/user_design/rtl/mcb_soft_calibration_top.vhd \ + mig39/mig_39/user_design/rtl/memc3_infrastructure.vhd \ + mig39/mig_39/user_design/rtl/memc3_wrapper.vhd \ + mig39/mig_39/user_design/rtl/mig_39.vhd \ + config.vhd ahbrom.vhd ahb2mig_ztex.vhd leon3mp.vhd VHDLSIMFILES=testbench.vhd @@ -36,10 +45,10 @@ CLEAN=soft-clean TECHLIBS = secureip unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann usbhc spw + tmtc openchip ihp usbhc spw DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - usb grusbhc spacewire ata haps coremp7 ascs slink hcan \ - leon4 leon4b64 l2cache pwm gr1553b iommu + usb grusbhc spacewire ascs slink hcan \ + leon4 leon4v0 l2cache pwm gr1553b iommu FILEADD = MCB.vhd FILESKIP = grcan.vhd @@ -71,3 +80,13 @@ ztex-upload-fw: -uu $(ZTEX)/examples/usb-fpga-1.11/standalone/standalone.ihx \ -rf -uf $(TOP).bit +mig39: + coregen -b mig39/mig.xco -p mig39 + patch -p0 < mig_patch.txt + patch -p0 < memc3_infrastructure_patch.txt + patch -p0 < mcb_soft_calibration_patch.txt + +mig39clean: + -rm -rf mig39/mig_39* mig39/tmp + +.PHONY : mig mig39 mig39clean \ No newline at end of file diff --git a/designs/leon3-ztex-ufm-111/README.txt b/designs/leon3-ztex-ufm-111/README.txt index 947d8f63..790245bf 100644 --- a/designs/leon3-ztex-ufm-111/README.txt +++ b/designs/leon3-ztex-ufm-111/README.txt @@ -18,16 +18,27 @@ interface. The MIG source code cannot be distributed due to the prohibitive Xilinx license, so the MIG must be re-generated with coregen before simulation and synthesis can be done. -To generate the MIG and install the Xilinx unisim simulation +To generate the MIG using ISE13 and install the Xilinx unisim simulation library, do as follows: make mig make install-secureip -This will ONLY work with ISE-13 installed, and the XILINX variable -properly set in the shell. To synthesize the design, do +To generate the MIG using ISE14 and install the Xilinx unisim simulation +library, do as follows: + + make mig39 + make install-secureip + +This will ONLY work with correct version of ISE installed, and the XILINX variable +properly set in the shell. For ISE13 it is recommened to use the 'ise' make target +and for ISE14 to use the 'planAhead' target. To synthesize the design, do + + make ise (ISE13) + +or - make ise + make planAhead (ISE14) The FPGA can be programmed via JTAG using: diff --git a/designs/leon3-ztex-ufm-111/ahb2mig_ztex.vhd b/designs/leon3-ztex-ufm-111/ahb2mig_ztex.vhd index 53d85c43..4af0d1e3 100644 --- a/designs/leon3-ztex-ufm-111/ahb2mig_ztex.vhd +++ b/designs/leon3-ztex-ufm-111/ahb2mig_ztex.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -344,7 +344,6 @@ begin ahbso.hirq <= (others => '0'); ahbso.hindex <= hindex; ahbso.hsplit <= (others => '0'); - ahbso.hcache <= '1'; apbo.pirq <= (others => '0'); apbo.pindex <= pindex; diff --git a/designs/leon3-ztex-ufm-111/ahbrom.vhd b/designs/leon3-ztex-ufm-111/ahbrom.vhd index 4c4156c8..181cdb27 100644 --- a/designs/leon3-ztex-ufm-111/ahbrom.vhd +++ b/designs/leon3-ztex-ufm-111/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-ztex-ufm-111/config.help b/designs/leon3-ztex-ufm-111/config.help index 69a6cafa..260eb3d2 100644 --- a/designs/leon3-ztex-ufm-111/config.help +++ b/designs/leon3-ztex-ufm-111/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-ztex-ufm-111/lconfig.tk b/designs/leon3-ztex-ufm-111/lconfig.tk index 426a1d59..eedfacf9 100755 --- a/designs/leon3-ztex-ufm-111/lconfig.tk +++ b/designs/leon3-ztex-ufm-111/lconfig.tk @@ -751,7 +751,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -761,7 +762,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -904,8 +907,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -924,6 +929,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1123,9 +1132,10 @@ proc menu3 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_3 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_3 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_3 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_3 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_3 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_3 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 3 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 3 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 3 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1179,10 +1189,11 @@ proc update_menu3 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x2.l configure -state normal; } else {.menu3.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu3.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x2.l configure -state normal; } else {.menu3.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x3.l configure -state normal; } else {.menu3.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1228,14 +1239,16 @@ proc update_define_menu3 {} { if {$tmpvar_3 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_3 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_3 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_3 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_3 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1308,13 +1321,21 @@ proc menu4 {w title} { bool $w.config.f 4 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 4 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 4 2 "Integer unit " 5 - submenu $w.config.f 4 3 "Floating-point unit" 6 - submenu $w.config.f 4 4 "Cache system" 7 - submenu $w.config.f 4 5 "MMU" 8 - submenu $w.config.f 4 6 "Debug Support Unit " 9 - submenu $w.config.f 4 7 "Fault-tolerance " 10 - submenu $w.config.f 4 8 "VHDL debug settings " 11 + global tmpvar_4 + minimenu $w.config.f 4 2 "Force values from example configuration (see help)" tmpvar_4 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_4 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_4 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_4 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_4 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 4 3 "Integer unit " 5 + submenu $w.config.f 4 4 "Floating-point unit" 6 + submenu $w.config.f 4 5 "Cache system" 7 + submenu $w.config.f 4 6 "MMU" 8 + submenu $w.config.f 4 7 "Debug Support Unit " 9 + submenu $w.config.f 4 8 "Fault-tolerance " 10 + submenu $w.config.f 4 9 "VHDL debug settings " 11 @@ -1354,22 +1375,290 @@ proc update_menu4 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x1.l configure -state normal; } else {.menu4.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x2 normal {m}} else {configure_entry .menu4.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x3 normal {m}} else {configure_entry .menu4.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x4 normal {m}} else {configure_entry .menu4.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x5 normal {m}} else {configure_entry .menu4.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x6 normal {m}} else {configure_entry .menu4.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x7 normal {m}} else {configure_entry .menu4.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x3 normal {m}} else {configure_entry .menu4.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x4 normal {m}} else {configure_entry .menu4.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x5 normal {m}} else {configure_entry .menu4.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x6 normal {m}} else {configure_entry .menu4.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x7 normal {m}} else {configure_entry .menu4.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x8 normal {m}} else {configure_entry .menu4.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x9 normal {m}} else {configure_entry .menu4.config.f.x9 disabled {m}} } proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_4 + global CONFIG_LEON3_MIN + if {$tmpvar_4 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_4 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_4 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_4 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1426,21 +1715,21 @@ proc menu5 {w title} { int $w.config.f 5 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 5 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_4 - minimenu $w.config.f 5 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_5 + minimenu $w.config.f 5 2 "Hardware multiplier latency" tmpvar_5 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_5 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_5 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_5 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 5 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_5 - minimenu $w.config.f 5 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED + global tmpvar_6 + minimenu $w.config.f 5 4 "Multipler structure " tmpvar_6 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_6 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_6 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 5 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 5 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1487,36 +1776,37 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x0.l configure -state normal; } else {.menu5.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x0.l configure -state normal; } else {.menu5.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x1 normal {n l y}} else {configure_entry .menu5.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x6 normal {n l y}} else {configure_entry .menu5.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x7 normal {n l y}} else {configure_entry .menu5.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x8.l configure -state normal; } else {.menu5.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x8.l configure -state normal; } else {.menu5.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x9.l configure -state normal; } else {.menu5.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x9.l configure -state normal; } else {.menu5.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x10 normal {n l y}} else {configure_entry .menu5.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x11.l configure -state normal; } else {.menu5.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x11.l configure -state normal; } else {.menu5.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x11.l configure -state disabled} } @@ -1524,48 +1814,49 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_5 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_5 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_5 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_6 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_6 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_6 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_6 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1621,27 +1912,27 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_6 - minimenu $w.config.f 6 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU + global tmpvar_7 + minimenu $w.config.f 6 1 "FPU core" tmpvar_7 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_7 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_7 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_7 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_7 - minimenu $w.config.f 6 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_8 + minimenu $w.config.f 6 2 "GRFPU multiplier" tmpvar_8 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_8 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_8 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_8 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_8 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_8 - minimenu $w.config.f 6 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 + global tmpvar_9 + minimenu $w.config.f 6 3 "GRFPU-LITE controller" tmpvar_9 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_9 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_9 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_9 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 6 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1682,16 +1973,17 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu6.config.f.x4 normal {n l y}} else {configure_entry .menu6.config.f.x4 disabled {y n l}} } @@ -1700,34 +1992,35 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_6 + global tmpvar_7 global CONFIG_FPU_GRFPU - if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_7 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_7 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_7 + if {$tmpvar_7 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_8 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_8 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_8 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_8 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_8 + if {$tmpvar_8 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_9 global CONFIG_FPU_GRFPC0 - if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_9 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_9 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_9 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1784,92 +2077,92 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_9 - minimenu $w.config.f 7 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 + global tmpvar_10 + minimenu $w.config.f 7 1 "Associativity (sets) " tmpvar_10 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_10 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_10 - minimenu $w.config.f 7 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 + global tmpvar_11 + minimenu $w.config.f 7 2 "Way size (kbytes/way)" tmpvar_11 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_11 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_11 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_11 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_11 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_11 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_11 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_11 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_11 - minimenu $w.config.f 7 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 + global tmpvar_12 + minimenu $w.config.f 7 3 "Line size (bytes/line)" tmpvar_12 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_12 - minimenu $w.config.f 7 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND + global tmpvar_13 + minimenu $w.config.f 7 4 "Replacement alorithm" tmpvar_13 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_13 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_13 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_13 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_13 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 7 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 7 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_13 - minimenu $w.config.f 7 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_14 + minimenu $w.config.f 7 7 "Local data RAM size (kbytes)" tmpvar_14 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 7 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 7 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_14 - minimenu $w.config.f 7 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 + global tmpvar_15 + minimenu $w.config.f 7 10 "Associativity (sets)" tmpvar_15 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_15 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_15 - minimenu $w.config.f 7 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 + global tmpvar_16 + minimenu $w.config.f 7 11 "Set size (kbytes/set)" tmpvar_16 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_16 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_16 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_16 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_16 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_16 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_16 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_16 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_16 - minimenu $w.config.f 7 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 + global tmpvar_17 + minimenu $w.config.f 7 12 "Line size (bytes/line)" tmpvar_17 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_17 - minimenu $w.config.f 7 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND + global tmpvar_18 + minimenu $w.config.f 7 13 "Replacement alorithm" tmpvar_18 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_18 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_18 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_18 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_18 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 7 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 7 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1877,18 +2170,18 @@ proc menu7 {w title} { bool $w.config.f 7 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 7 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 7 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_18 - minimenu $w.config.f 7 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_19 + minimenu $w.config.f 7 20 "Local data RAM size (kbytes)" tmpvar_19 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_19 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_19 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_19 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_19 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_19 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_19 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_19 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_19 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_19 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 7 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1929,52 +2222,53 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu7.config.f.x6 normal {n l y}} else {configure_entry .menu7.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x7 normal {x l}} else {configure_entry .menu7.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x7 normal {x l}} else {configure_entry .menu7.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu7.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x8.l configure -state normal; } else {.menu7.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu7.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x8.l configure -state normal; } else {.menu7.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x9 normal {n l y}} else {configure_entry .menu7.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x10 normal {x l}} else {configure_entry .menu7.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x11 normal {x l}} else {configure_entry .menu7.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x12 normal {x l}} else {configure_entry .menu7.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x10 normal {x l}} else {configure_entry .menu7.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x11 normal {x l}} else {configure_entry .menu7.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x12 normal {x l}} else {configure_entry .menu7.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x13 normal {x l}} else {configure_entry .menu7.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x13 normal {x l}} else {configure_entry .menu7.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu7.config.f.x14 normal {n l y}} else {configure_entry .menu7.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu7.config.f.x15 normal {n l y}} else {configure_entry .menu7.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu7.config.f.x16 normal {n l y}} else {configure_entry .menu7.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu7.config.f.x17 normal {n l y}} else {configure_entry .menu7.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu7.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x18.l configure -state normal; } else {.menu7.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu7.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x18.l configure -state normal; } else {.menu7.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu7.config.f.x19 normal {n l y}} else {configure_entry .menu7.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x20 normal {x l}} else {configure_entry .menu7.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x20 normal {x l}} else {configure_entry .menu7.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu7.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x21.l configure -state normal; } else {.menu7.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu7.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x21.l configure -state normal; } else {.menu7.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x21.l configure -state disabled} } @@ -1982,162 +2276,163 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_9 + global tmpvar_10 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_10 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_10 + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_11 global CONFIG_ICACHE_SZ1 - if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_11 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_11 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_11 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_11 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_11 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_11 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_11 + if {$tmpvar_11 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_12 global CONFIG_ICACHE_LZ16 - if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_12 + if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_13 global CONFIG_ICACHE_ALGORND - if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_13 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_13 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_13 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_13 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_14 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_14 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_14 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_14 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_14 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_14 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_14 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_14 + global tmpvar_15 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_15 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_15 + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_16 global CONFIG_DCACHE_SZ1 - if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_16 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_16 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_16 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_16 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_16 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_16 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_16 + if {$tmpvar_16 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_17 global CONFIG_DCACHE_LZ16 - if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_17 + if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_18 global CONFIG_DCACHE_ALGORND - if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_18 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_18 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_18 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_18 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_19 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_19 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_19 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_19 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_19 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_19 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_19 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_19 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_19 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2193,45 +2488,47 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_19 - minimenu $w.config.f 8 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED + global tmpvar_20 + minimenu $w.config.f 8 1 "MMU type " tmpvar_20 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_20 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_20 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 8 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY + global tmpvar_21 + minimenu $w.config.f 8 2 "TLB replacement sheme " tmpvar_21 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_21 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_21 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_21 - minimenu $w.config.f 8 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_22 - minimenu $w.config.f 8 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 + minimenu $w.config.f 8 3 "Instruction (or combined) TLB entries" tmpvar_22 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_23 + minimenu $w.config.f 8 4 "Data TLB entries" tmpvar_23 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_23 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_23 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 8 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_23 - minimenu $w.config.f 8 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K + global tmpvar_24 + minimenu $w.config.f 8 6 "MMU page size" tmpvar_24 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_24 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_24 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_24 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_24 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_24 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2271,18 +2568,19 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x1 normal {x l}} else {configure_entry .menu8.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x3 normal {x l}} else {configure_entry .menu8.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x1 normal {x l}} else {configure_entry .menu8.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x3 normal {x l}} else {configure_entry .menu8.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu8.config.f.x5 normal {n l y}} else {configure_entry .menu8.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x6 normal {x l}} else {configure_entry .menu8.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x6 normal {x l}} else {configure_entry .menu8.config.f.x6 disabled {x l}} } @@ -2290,55 +2588,60 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_19 + global tmpvar_20 global CONFIG_MMU_COMBINED - if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_20 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_20 + if {$tmpvar_20 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_21 global CONFIG_MMU_REPARRAY - if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_21 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_21 + if {$tmpvar_21 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_22 global CONFIG_MMU_I2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_22 + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_23 global CONFIG_MMU_D2 - if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_23 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_23 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_23 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_23 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_23 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_23 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_MMU_PAGE_4K - if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_24 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_24 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_24 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_24 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_24 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2395,24 +2698,24 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 9 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_24 - minimenu $w.config.f 9 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 + global tmpvar_25 + minimenu $w.config.f 9 2 "Instruction trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 9 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_25 - minimenu $w.config.f 9 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 + global tmpvar_26 + minimenu $w.config.f 9 4 "AHB trace buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2452,17 +2755,18 @@ proc menu9 {w title} { proc update_menu9 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu9.config.f.x1 normal {n l y}} else {configure_entry .menu9.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu9.config.f.x4 normal {x l}} else {configure_entry .menu9.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu9.config.f.x4 normal {x l}} else {configure_entry .menu9.config.f.x4 disabled {x l}} } @@ -2470,37 +2774,38 @@ proc update_define_menu9 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2556,16 +2861,23 @@ proc menu10 {w title} { bool $w.config.f 10 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_26 - minimenu $w.config.f 10 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE + global tmpvar_27 + minimenu $w.config.f 10 1 "IU Register file protection " tmpvar_27 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_27 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 10 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_28 + minimenu $w.config.f 10 2 "FPU Register file protection " tmpvar_28 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_28 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_28 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_28 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_28 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 10 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 10 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 10 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2613,9 +2925,7 @@ proc update_menu10 {} { configure_entry .menu10.config.f.x0 normal {n l y}} else {configure_entry .menu10.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu10.config.f.x1 normal {x l}} else {configure_entry .menu10.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu10.config.f.x2 normal {n l y}} else {configure_entry .menu10.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu10.config.f.x2 normal {x l}} else {configure_entry .menu10.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu10.config.f.x3 normal {n l y}} else {configure_entry .menu10.config.f.x3 disabled {y n l}} @@ -2637,21 +2947,26 @@ proc update_define_menu10 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_26 + global tmpvar_27 global CONFIG_IUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_27 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_27 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_28 + global CONFIG_FPUFT_NONE + if {$tmpvar_28 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_28 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_28 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_28 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -3284,16 +3599,16 @@ proc menu16 {w title} { hex $w.config.f 16 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 16 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 16 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 16 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 16 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 16 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3355,21 +3670,21 @@ proc update_define_menu16 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3428,15 +3743,15 @@ proc menu17 {w title} { bool $w.config.f 17 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_28 - minimenu $w.config.f 17 1 "UART1 FIFO depth" tmpvar_28 CONFIG_UA1_FIFO1 + global tmpvar_30 + minimenu $w.config.f 17 1 "UART1 FIFO depth" tmpvar_30 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 17 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 17 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3525,19 +3840,19 @@ proc update_menu17 {} { proc update_define_menu17 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_28 + global tmpvar_30 global CONFIG_UA1_FIFO1 - if {$tmpvar_28 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_30 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_28 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_30 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3631,12 +3946,12 @@ proc menu18 {w title} { bool $w.config.f 18 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN int $w.config.f 18 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN bool $w.config.f 18 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_29 - minimenu $w.config.f 18 11 "Fault-tolerance" tmpvar_29 CONFIG_SPICTRL_NOFT + global tmpvar_31 + minimenu $w.config.f 18 11 "Fault-tolerance" tmpvar_31 CONFIG_SPICTRL_NOFT menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_29 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_29 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_29 -value "TMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_31 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_31 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_31 -value "TMR" -command "update_active" menusplit $w $w.config.f.x11.x.menu 3 @@ -3736,13 +4051,13 @@ proc update_define_menu18 {} { global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_29 + global tmpvar_31 global CONFIG_SPICTRL_NOFT - if {$tmpvar_29 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + if {$tmpvar_31 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} global CONFIG_SPICTRL_DMRFT - if {$tmpvar_29 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + if {$tmpvar_31 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} global CONFIG_SPICTRL_TMRFT - if {$tmpvar_29 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} + if {$tmpvar_31 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } @@ -3884,7 +4199,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -3894,6 +4210,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -3922,6 +4240,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -3934,14 +4253,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_4 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -3954,27 +4278,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -3984,17 +4308,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4006,12 +4330,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4021,10 +4345,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4035,7 +4359,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4047,26 +4371,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_21 "(not set)" +set tmpvar_22 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_22 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_23 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4074,27 +4400,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_28 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4124,7 +4454,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4134,7 +4464,7 @@ set CONFIG_AHBRAM_SZ32 0 set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_UART1_ENABLE 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4166,7 +4496,7 @@ set CONFIG_SPICTRL_ODMODE 0 set CONFIG_SPICTRL_TWEN 0 set CONFIG_SPICTRL_MAXWLEN 0 set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_SPICTRL_NOFT 0 set CONFIG_SPICTRL_DMRFT 0 set CONFIG_SPICTRL_TMRFT 0 @@ -4226,7 +4556,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4236,6 +4567,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4280,6 +4613,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_3 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_3 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_3 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_3 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4292,9 +4626,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4308,239 +4643,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_4 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_4 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_4 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_4 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_4 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_5 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_5 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_6 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_6 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_6 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_7 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_7 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_7 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_7 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_8 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_8 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_9 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_9 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_9 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_9 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_10 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_11 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_11 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_11 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_11 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_11 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_11 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_11 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_12 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_13 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_13 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_15 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_16 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_16 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_16 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_16 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_16 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_16 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_16 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_17 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_18 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_18 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_19 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_19 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_19 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_19 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_19 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_19 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_19 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_19 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_19 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_20 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_21 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_21 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_22 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_23 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_23 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_24 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_24 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_24 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_24 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_24 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_26 + global tmpvar_27 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_28 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_28 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_28 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_28 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_28 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4605,28 +5090,28 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_28 + global tmpvar_30 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4678,11 +5163,11 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_29 + global tmpvar_31 if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_29 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_29 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_29 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_31 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_31 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_31 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -4727,7 +5212,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4737,6 +5223,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4758,8 +5246,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -4842,11 +5335,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -4867,6 +5362,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0 global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0 @@ -4959,8 +5458,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -4979,6 +5480,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5027,308 +5532,334 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_3 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_3 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_3 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_3 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_3 "Xilinx-DCM" } global tmpvar_4 - set tmpvar_4 "5-cycles" + set tmpvar_4 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_4 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_4 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_4 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_4 "Custom-configuration" } + global tmpvar_5 + set tmpvar_5 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_5 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_5 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } - global tmpvar_5 - set tmpvar_5 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_5 "5-cycles" } + global tmpvar_6 + set tmpvar_6 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_6 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_6 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } - global tmpvar_6 - set tmpvar_6 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_6 "Designware" } + global tmpvar_7 + set tmpvar_7 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_7 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_7 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } - global tmpvar_7 - set tmpvar_7 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_7 "Meiko" } + global tmpvar_8 + set tmpvar_8 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_8 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_8 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_8 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } - global tmpvar_8 - set tmpvar_8 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_8 "TechSpec" } + global tmpvar_9 + set tmpvar_9 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_9 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_9 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } - global tmpvar_9 - set tmpvar_9 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_9 "Non-blocking" } + global tmpvar_10 + set tmpvar_10 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_10 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } - global tmpvar_10 - set tmpvar_10 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_10 "4" } + global tmpvar_11 + set tmpvar_11 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_11 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_11 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_11 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_11 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_11 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_11 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_11 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } - global tmpvar_11 - set tmpvar_11 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_11 "256" } + global tmpvar_12 + set tmpvar_12 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_12 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } - global tmpvar_12 - set tmpvar_12 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_12 "32" } + global tmpvar_13 + set tmpvar_13 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_13 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_13 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_13 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } - global tmpvar_13 - set tmpvar_13 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_13 "LRU" } + global tmpvar_14 + set tmpvar_14 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_14 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_14 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_14 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_14 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_14 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_14 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_14 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_14 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } - global tmpvar_14 - set tmpvar_14 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_14 "256" } + global tmpvar_15 + set tmpvar_15 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_15 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } - global tmpvar_15 - set tmpvar_15 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_15 "4" } + global tmpvar_16 + set tmpvar_16 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_16 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_16 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_16 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_16 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_16 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_16 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_16 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } - global tmpvar_16 - set tmpvar_16 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_16 "256" } + global tmpvar_17 + set tmpvar_17 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_17 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } - global tmpvar_17 - set tmpvar_17 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_17 "32" } + global tmpvar_18 + set tmpvar_18 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_18 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_18 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_18 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } - global tmpvar_18 - set tmpvar_18 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_18 "LRU" } + global tmpvar_19 + set tmpvar_19 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_19 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_19 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_19 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_19 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_19 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_19 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_19 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_19 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } - global tmpvar_19 - set tmpvar_19 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_19 "256" } + global tmpvar_20 + set tmpvar_20 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_20 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } - global tmpvar_20 - set tmpvar_20 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_20 "split" } + global tmpvar_21 + set tmpvar_21 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_21 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_21 "Increment" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_23 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_23 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_23 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_23 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } - global tmpvar_23 - set tmpvar_23 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_23 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_23 "64" } + global tmpvar_24 + set tmpvar_24 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_24 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_24 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_24 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_24 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_24 "Programmable" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_26 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_26 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_26 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_26 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_26 "16" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_27 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_28 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_28 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_28 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_28 "TMR" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "1" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_30 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_30 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_28 "32" } - global tmpvar_29 - set tmpvar_29 "None" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_30 "32" } + global tmpvar_31 + set tmpvar_31 "None" global CONFIG_SPICTRL_NOFT - if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_29 "None" } + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_31 "None" } global CONFIG_SPICTRL_DMRFT - if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_29 "Parity-DMR" } + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_31 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT - if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_29 "TMR" } + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_31 "TMR" } } diff --git a/designs/leon3-ztex-ufm-111/leon3mp.ucf b/designs/leon3-ztex-ufm-111/leon3mp.ucf index 8d2345cb..8ca4761a 100644 --- a/designs/leon3-ztex-ufm-111/leon3mp.ucf +++ b/designs/leon3-ztex-ufm-111/leon3mp.ucf @@ -35,9 +35,13 @@ NET "sd_cmd" LOC = "H13"; CONFIG VCCAUX=2.5; CONFIG MCB_PERFORMANCE= STANDARD; -#NET "*/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL" TIG; -NET "*/memc3_wrapper_inst/memc3_mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG; -NET "*/c3_pll_lock" TIG; +# --- MIG37 --- +NET "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG; +NET "mig_gen.ddrc/MCB_inst/c?_pll_lock" TIG; + +# --- MIG39 --- +INST "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL*" TIG; + ############################################################################ ## Memory Controller 3 diff --git a/designs/leon3-ztex-ufm-111/leon3mp.vhd b/designs/leon3-ztex-ufm-111/leon3mp.vhd index 929daa4f..81bf188c 100644 --- a/designs/leon3-ztex-ufm-111/leon3mp.vhd +++ b/designs/leon3-ztex-ufm-111/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-ztex-ufm-111/mcb_soft_calibration_patch.txt b/designs/leon3-ztex-ufm-111/mcb_soft_calibration_patch.txt new file mode 100644 index 00000000..ef221fad --- /dev/null +++ b/designs/leon3-ztex-ufm-111/mcb_soft_calibration_patch.txt @@ -0,0 +1,1049 @@ +--- ./mig39/mig_39//user_design/rtl/mcb_soft_calibration.vhd 2013-01-15 15:13:18.000000000 +0100 ++++ ./p/a/t/c/h/mig39/mig_39//user_design/rtl/mcb_soft_calibration.vhd 2013-01-15 15:19:15.608793398 +0100 +@@ -94,15 +94,7 @@ + -- 3.7: 04/26/10: Added DDR2 Initialization fix to meet 400 ns wait as outlined in step d) of JEDEC DDR2 spec . + -- 3.8: 05/05/10: Added fixes for the CR# 559092 (updated Mult_Divide function) and 555416 (added IOB attribute to DONE_SOFTANDHARD_CAL). + -- 3.9: 05/24/10: Added 200us Wait logic to control CKE_Train. The 200us Wait counter assumes UI_CLK freq not higher than 100 MHz. +--- 3.10 10/22/10: Fixed PERFORM_START_DYN_CAL_AFTER_SELFREFRESH logic. +--- 3.11 2/14/11: Apply a different skkew for the P and N inputs for the differential LDQS and UDQS signals to provide more noise immunity. +--- 4.1 03/08/12: Fixed SELFREFRESH_MCB_REQ logic. It should not need depend on the SM STATE so that +--- MCB can come out of selfresh mode. SM requires refresh cycle to update the DQS value. +--- 4.2 05/10/12: All P/N terms of input and bidir memory pins are initialized with value of ZERO. TZQINIT_MAXCNT +--- are set to 8 for LPDDR,DDR and DDR2 interface . +--- Keep the UICMDEN in assertion state when SM is in RST_DELAY state so that MCB will not start doing +--- Premable detection until the second deassertion of MCB_SYSRST. +- ++-- 3.10 10/22/10: Fixed PERFORM_START_DYN_CAL_AFTER_SELFREFRESH logic. + + -- End Revision + --********************************************************************************** +@@ -157,17 +149,17 @@ + MCB_UIADDR : out std_logic_vector(4 downto 0) := "00000"; -- to MCB's UIADDR port (gets passed to IODRP2_MCB's AUXADDR port + MCB_UICMDEN : out std_logic := '1'; -- set to 1 to take control of UI interface - removes control from internal calib block + MCB_UIDONECAL : out std_logic := '0'; -- set to 0 to "tell" controller that it's still in a calibrate state +- MCB_UIDQLOWERDEC : out std_logic ; +- MCB_UIDQLOWERINC : out std_logic ; +- MCB_UIDQUPPERDEC : out std_logic ; +- MCB_UIDQUPPERINC : out std_logic ; ++ MCB_UIDQLOWERDEC : out std_logic := '0'; ++ MCB_UIDQLOWERINC : out std_logic := '0'; ++ MCB_UIDQUPPERDEC : out std_logic := '0'; ++ MCB_UIDQUPPERINC : out std_logic := '0'; + MCB_UILDQSDEC : out std_logic := '0'; + MCB_UILDQSINC : out std_logic := '0'; + MCB_UIREAD : out std_logic; -- enables read w/o writing by turning on a SDO->SDI loopback inside the IODRP2_MCBs (doesn't exist in + -- regular IODRP2). IODRPCTRLR_R_WB becomes don't-care. + MCB_UIUDQSDEC : out std_logic := '0'; + MCB_UIUDQSINC : out std_logic := '0'; +- MCB_RECAL : out std_logic ; -- future hook to drive MCB's RECAL pin - initiates a hard re-calibration sequence when high ++ MCB_RECAL : out std_logic := '0'; -- future hook to drive MCB's RECAL pin - initiates a hard re-calibration sequence when high + MCB_UICMD : out std_logic; + MCB_UICMDIN : out std_logic; + MCB_UIDQCOUNT : out std_logic_vector(3 downto 0); +@@ -234,50 +226,31 @@ + constant WAIT5 : std_logic_vector(5 downto 0) := "001111"; + constant BROADCAST_NTERM : std_logic_vector(5 downto 0) := "010000"; + constant WAIT6 : std_logic_vector(5 downto 0) := "010001"; +- +- constant LDQS_CLK_WRITE_P_TERM : std_logic_vector(5 downto 0) := "010010"; +- constant LDQS_CLK_P_TERM_WAIT : std_logic_vector(5 downto 0) := "010011"; +- constant LDQS_CLK_WRITE_N_TERM : std_logic_vector(5 downto 0) := "010100"; +- constant LDQS_CLK_N_TERM_WAIT : std_logic_vector(5 downto 0) := "010101"; +- constant LDQS_PIN_WRITE_P_TERM : std_logic_vector(5 downto 0) := "010110"; +- constant LDQS_PIN_P_TERM_WAIT : std_logic_vector(5 downto 0) := "010111"; +- constant LDQS_PIN_WRITE_N_TERM : std_logic_vector(5 downto 0) := "011000"; +- constant LDQS_PIN_N_TERM_WAIT : std_logic_vector(5 downto 0) := "011001"; +- constant UDQS_CLK_WRITE_P_TERM : std_logic_vector(5 downto 0) := "011010"; +- constant UDQS_CLK_P_TERM_WAIT : std_logic_vector(5 downto 0) := "011011"; +- constant UDQS_CLK_WRITE_N_TERM : std_logic_vector(5 downto 0) := "011100"; +- constant UDQS_CLK_N_TERM_WAIT : std_logic_vector(5 downto 0) := "011101"; +- constant UDQS_PIN_WRITE_P_TERM : std_logic_vector(5 downto 0) := "011110"; +- constant UDQS_PIN_P_TERM_WAIT : std_logic_vector(5 downto 0) := "011111"; +- constant UDQS_PIN_WRITE_N_TERM : std_logic_vector(5 downto 0) := "100000"; +- constant UDQS_PIN_N_TERM_WAIT : std_logic_vector(5 downto 0) := "100001"; +- +- constant OFF_RZQ_PTERM : std_logic_vector(5 downto 0) := "100010"; +- constant WAIT7 : std_logic_vector(5 downto 0) := "100011"; +- constant OFF_ZIO_NTERM : std_logic_vector(5 downto 0) := "100100"; +- constant WAIT8 : std_logic_vector(5 downto 0) := "100101"; +- constant RST_DELAY : std_logic_vector(5 downto 0) := "100110"; +- constant START_DYN_CAL_PRE : std_logic_vector(5 downto 0) := "100111"; +- constant WAIT_FOR_UODONE : std_logic_vector(5 downto 0) := "101000"; +- constant LDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "101001"; +- constant LDQS_WAIT1 : std_logic_vector(5 downto 0) := "101010"; +- constant LDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "101011"; +- constant LDQS_WAIT2 : std_logic_vector(5 downto 0) := "101100"; +- constant UDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "101101"; +- constant UDQS_WAIT1 : std_logic_vector(5 downto 0) := "101110"; +- constant UDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "101111"; +- constant UDQS_WAIT2 : std_logic_vector(5 downto 0) := "110000"; +- constant START_DYN_CAL : std_logic_vector(5 downto 0) := "110001"; +- constant WRITE_CALIBRATE : std_logic_vector(5 downto 0) := "110010"; +- constant WAIT9 : std_logic_vector(5 downto 0) := "110011"; +- constant READ_MAX_VALUE : std_logic_vector(5 downto 0) := "110100"; +- constant WAIT10 : std_logic_vector(5 downto 0) := "110101"; +- constant ANALYZE_MAX_VALUE : std_logic_vector(5 downto 0) := "110110"; +- constant FIRST_DYN_CAL : std_logic_vector(5 downto 0) := "110111"; +- constant INCREMENT : std_logic_vector(5 downto 0) := "111000"; +- constant DECREMENT : std_logic_vector(5 downto 0) := "111001"; +- constant DONE : std_logic_vector(5 downto 0) := "111010"; +- --constant INCREMENT_TA : std_logic_vector(5 downto 0) := "111011"; ++ constant OFF_RZQ_PTERM : std_logic_vector(5 downto 0) := "010010"; ++ constant WAIT7 : std_logic_vector(5 downto 0) := "010011"; ++ constant OFF_ZIO_NTERM : std_logic_vector(5 downto 0) := "010100"; ++ constant WAIT8 : std_logic_vector(5 downto 0) := "010101"; ++ constant RST_DELAY : std_logic_vector(5 downto 0) := "010110"; ++ constant START_DYN_CAL_PRE : std_logic_vector(5 downto 0) := "010111"; ++ constant WAIT_FOR_UODONE : std_logic_vector(5 downto 0) := "011000"; ++ constant LDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "011001"; ++ constant LDQS_WAIT1 : std_logic_vector(5 downto 0) := "011010"; ++ constant LDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "011011"; ++ constant LDQS_WAIT2 : std_logic_vector(5 downto 0) := "011100"; ++ constant UDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "011101"; ++ constant UDQS_WAIT1 : std_logic_vector(5 downto 0) := "011110"; ++ constant UDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "011111"; ++ constant UDQS_WAIT2 : std_logic_vector(5 downto 0) := "100000"; ++ constant START_DYN_CAL : std_logic_vector(5 downto 0) := "100001"; ++ constant WRITE_CALIBRATE : std_logic_vector(5 downto 0) := "100010"; ++ constant WAIT9 : std_logic_vector(5 downto 0) := "100011"; ++ constant READ_MAX_VALUE : std_logic_vector(5 downto 0) := "100100"; ++ constant WAIT10 : std_logic_vector(5 downto 0) := "100101"; ++ constant ANALYZE_MAX_VALUE : std_logic_vector(5 downto 0) := "100110"; ++ constant FIRST_DYN_CAL : std_logic_vector(5 downto 0) := "100111"; ++ constant INCREMENT : std_logic_vector(5 downto 0) := "101000"; ++ constant DECREMENT : std_logic_vector(5 downto 0) := "101001"; ++ constant DONE : std_logic_vector(5 downto 0) := "101010"; + + constant RZQ : std_logic_vector(1 downto 0) := "00"; + constant ZIO : std_logic_vector(1 downto 0) := "01"; +@@ -315,12 +288,10 @@ + constant DIV : integer := 4; + + constant PNSKEW : std_logic := '1'; -- Default is 1'b1. Change to 1'b0 if PSKEW and NSKEW are not required +- constant PNSKEWDQS : std_logic := '1'; +- +- constant MULT_S : integer := 9; +- constant DIV_S : integer := 8; +- constant MULT_W : integer := 7; +- constant DIV_W : integer := 8; ++ constant PSKEW_MULT : integer := 9; ++ constant PSKEW_DIV : integer := 8; ++ constant NSKEW_MULT : integer := 7; ++ constant NSKEW_DIV : integer := 8; + + constant DQS_NUMERATOR : integer := 3; + constant DQS_DENOMINATOR : integer := 8; +@@ -329,23 +300,11 @@ + -- 3 for three eighths + + constant RST_CNT : std_logic_vector(9 downto 0) := "0000010000"; ++ constant TZQINIT_MAXCNT : std_logic_vector(9 downto 0) := C_MEM_TZQINIT_MAXCNT + RST_CNT; + + constant IN_TERM_PASS : std_logic := '0'; + constant DYN_CAL_PASS : std_logic := '1'; + +- function TZQINIT_MAXCNT_W return std_logic_vector is +- variable temp : std_logic_vector(9 downto 0) := (others=>'0'); +- begin +- if (C_MEM_TYPE = "DDR3") then +- temp := C_MEM_TZQINIT_MAXCNT + RST_CNT; +- else +- temp := 8 + RST_CNT; +- end if; +- return temp(9 downto 0); +- end function; +- +- constant TZQINIT_MAXCNT : std_logic_vector(9 downto 0) := TZQINIT_MAXCNT_W; +- + component iodrp_mcb_controller is + port ( + memcell_address : in std_logic_vector(7 downto 0); +@@ -387,15 +346,11 @@ + end component; + + signal P_Term : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term : std_logic_vector(6 downto 0) := "0000000"; +- signal P_Term_s : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term_s : std_logic_vector(6 downto 0) := "0000000"; +- signal P_Term_w : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term_w : std_logic_vector(6 downto 0) := "0000000"; ++ signal N_Term : std_logic_vector(6 downto 0) := "0000000"; + signal P_Term_Prev : std_logic_vector(5 downto 0) := "000000"; + signal N_Term_Prev : std_logic_vector(6 downto 0) := "0000000"; + +- signal STATE : std_logic_vector(5 downto 0); ++ signal STATE : std_logic_vector(5 downto 0) := START; + signal IODRPCTRLR_MEMCELL_ADDR : std_logic_vector(7 downto 0); + signal IODRPCTRLR_WRITE_DATA : std_logic_vector(7 downto 0); + signal Active_IODRP : std_logic_vector(1 downto 0); +@@ -411,7 +366,7 @@ + signal count : std_logic_vector(5 downto 0) := "000000"; -- counter for adding 18 extra clock cycles after setting Calibrate bit + signal counter_en : std_logic := '0'; -- counter enable for "count" + signal First_Dyn_Cal_Done : std_logic := '0'; -- flag - high after the very first dynamic calibration is done +- signal START_BROADCAST : std_logic ; -- Trigger to start Broadcast to IODRP2_MCBs to set Input Impedance - ++ signal START_BROADCAST : std_logic := '1'; -- Trigger to start Broadcast to IODRP2_MCBs to set Input Impedance - + -- state machine will wait for this to be high + signal DQS_DELAY_INITIAL : std_logic_vector(7 downto 0) := "00000000"; + signal DQS_DELAY : std_logic_vector(7 downto 0); -- contains the latest values written to LDQS and UDQS Input Delays +@@ -474,24 +429,15 @@ + signal MCB_UISDI_xilinx11 : std_logic; + signal MCB_UICS_xilinx6 : std_logic; + signal MCB_UIBROADCAST_xilinx4 : std_logic; +- signal MCB_UIADDR_int : std_logic_vector(4 downto 0); ++ signal MCB_UIADDR_xilinx3 : std_logic_vector(4 downto 0); + signal MCB_UIDONECAL_xilinx7 : std_logic; + signal MCB_UIREAD_xilinx10 : std_logic; + signal SELFREFRESH_MODE_xilinx11 : std_logic; + signal Max_Value_int : std_logic_vector(7 downto 0); + signal Rst_condition1 : std_logic; +- --signal Rst_condition2 : std_logic; ++ signal Rst_condition2 : std_logic; + signal non_violating_rst : std_logic; + signal WAIT_200us_COUNTER : std_logic_vector(15 downto 0); +- signal WaitTimer : std_logic_vector(7 downto 0); +- signal WarmEnough : std_logic; +- signal WaitCountEnable : std_logic; +- signal State_Start_DynCal_R1 : std_logic; +- signal State_Start_DynCal : std_logic; +- +- signal pre_sysrst_minpulse_width_ok : std_logic; +- signal pre_sysrst_cnt : std_logic_vector(3 downto 0); +- + -- This function multiplies by a constant MULT and then divides by the DIV constant + function Mult_Divide (Input : std_logic_vector(7 downto 0); MULT : integer ; DIV : integer ) return std_logic_vector is + variable Result : integer := 0; +@@ -505,19 +451,9 @@ + return temp(7 downto 0); + end function Mult_Divide; + +- +- + attribute syn_preserve : boolean; + attribute syn_preserve of P_Term : signal is TRUE; + attribute syn_preserve of N_Term : signal is TRUE; +- attribute syn_preserve of P_Term_s : signal is TRUE; +- attribute syn_preserve of N_Term_s : signal is TRUE; +- attribute syn_preserve of P_Term_w : signal is TRUE; +- attribute syn_preserve of N_Term_w : signal is TRUE; +- +- +- +- + attribute syn_preserve of P_Term_Prev : signal is TRUE; + attribute syn_preserve of N_Term_Prev : signal is TRUE; + attribute syn_preserve of IODRPCTRLR_MEMCELL_ADDR : signal is TRUE; +@@ -530,18 +466,6 @@ + + begin + +- +--- move the default assignment here to make FORMALITY happy. +- +- START_BROADCAST <= '1'; +- MCB_RECAL <= '0'; +- MCB_UIDQLOWERDEC <= '0'; +- MCB_UIADDR <= MCB_UIADDR_int; +- MCB_UIDQLOWERINC <= '0'; +- MCB_UIDQUPPERDEC <= '0'; +- MCB_UIDQUPPERINC <= '0'; +- +- + Max_Value <= Max_Value_int; + -- Drive referenced outputs + IODRP_ADD <= IODRP_ADD_xilinx0; +@@ -550,6 +474,7 @@ + MCB_UISDI <= MCB_UISDI_xilinx11; + MCB_UICS <= MCB_UICS_xilinx6; + MCB_UIBROADCAST <= MCB_UIBROADCAST_xilinx4; ++ MCB_UIADDR <= MCB_UIADDR_xilinx3; + MCB_UIDONECAL <= MCB_UIDONECAL_xilinx7; + MCB_UIREAD <= MCB_UIREAD_xilinx10; + SELFREFRESH_MODE <= SELFREFRESH_MODE_xilinx11; +@@ -607,7 +532,7 @@ + cmd_valid => MCB_CMD_VALID, + rdy_busy_n => MCB_RDY_BUSY_N, + use_broadcast => MCB_USE_BKST, +- drp_ioi_addr => MCB_UIADDR_int, ++ drp_ioi_addr => MCB_UIADDR_xilinx3, + sync_rst => RST_reg, + DRP_CLK => UI_CLK, + DRP_CS => MCB_UICS_xilinx6, +@@ -618,13 +543,10 @@ + MCB_UIREAD => MCB_UIREAD_xilinx10 + ); + ++ init_sequence: if (C_SIMULATION = "FALSE") generate + process (UI_CLK, RST) begin + if (RST = '1') then +- if (C_SIMULATION = "TRUE") then +- WAIT_200us_COUNTER <= X"7FF0"; +- else + WAIT_200us_COUNTER <= (others => '0'); +- end if; + elsif (UI_CLK'event and UI_CLK = '1') then + if (WAIT_200us_COUNTER(15) = '1') then + WAIT_200us_COUNTER <= WAIT_200us_COUNTER; +@@ -633,15 +555,16 @@ + end if; + end if; + end process; ++ end generate; + +- -- init_sequence_skip: if (C_SIMULATION = "TRUE") generate +- -- WAIT_200us_COUNTER <= X"FFFF"; +- -- process +- -- begin +- -- report "The 200 us wait period required before CKE goes active has been skipped in Simulation"; +- -- wait; +- -- end process; +- -- end generate; ++ init_sequence_skip: if (C_SIMULATION = "TRUE") generate ++ WAIT_200us_COUNTER <= X"FFFF"; ++ process ++ begin ++ report "The 200 us wait period required before CKE goes active has been skipped in Simulation"; ++ wait; ++ end process; ++ end generate; + + + gen_CKE_Train_a: if (C_MEM_TYPE = "DDR2") generate +@@ -653,8 +576,6 @@ + CKE_Train <= '0'; + elsif (WAIT_200us_COUNTER(15) = '1' and MCB_UODONECAL = '0') then + CKE_Train <= '1'; +- else +- CKE_Train <= '0'; + end if; + end if; + end process; +@@ -671,20 +592,19 @@ + --******************************************** + -- PLL_LOCK and RST signals + --******************************************** +- --MCB_SYSRST <= Pre_SYSRST or RST_reg; -- Pre_SYSRST is generated from the STATE state machine, and is OR'd with RST_reg input to drive MCB's ++ MCB_SYSRST <= Pre_SYSRST or RST_reg; -- Pre_SYSRST is generated from the STATE state machine, and is OR'd with RST_reg input to drive MCB's + -- SYSRST pin (MCB_SYSRST) +- + rst_tmp <= not(SELFREFRESH_MODE_xilinx11) and not(PLL_LOCK_R2); -- rst_tmp becomes 1 if you lose Lock and the device is not in SUSPEND + + process (UI_CLK, RST) begin + if (RST = '1') then +- --Block_Reset <= '0'; +- --RstCounter <= (others => '0'); +- --elsif (UI_CLK'event and UI_CLK = '1') then +- -- if (rst_tmp = '1') then -- this is to deal with not allowing the user-reset "RST" to violate TZQINIT_MAXCNT (min time between resets to DDR3) ++ Block_Reset <= '0'; ++ RstCounter <= (others => '0'); ++ elsif (UI_CLK'event and UI_CLK = '1') then ++ if (rst_tmp = '1') then -- this is to deal with not allowing the user-reset "RST" to violate TZQINIT_MAXCNT (min time between resets to DDR3) + Block_Reset <= '0'; + RstCounter <= (others => '0'); +- elsif (UI_CLK'event and UI_CLK = '1') then ++ else + Block_Reset <= '0'; -- default to allow STATE to move out of RST_DELAY state + if (Pre_SYSRST = '1') then + RstCounter <= RST_CNT; -- whenever STATE wants to reset the MCB, set RstCounter to h10 +@@ -695,14 +615,11 @@ + end if; + end if; + end if; +- --end if; ++ end if; + end process; +- +- -- Rst_contidtion1 is to make sure RESET will not happen again within TZQINIT_MAXCNT +- non_violating_rst <= RST and Rst_condition1; +- MCB_SYSRST <= Pre_SYSRST; + +- process (UI_CLK) begin ++ non_violating_rst <= RST and Rst_condition1; ++ process (UI_CLK) begin + if (UI_CLK'event and UI_CLK = '1') then + if (RstCounter >= TZQINIT_MAXCNT) then + Rst_condition1 <= '1'; +@@ -712,31 +629,18 @@ + end if; + end process; + +--- -- non_violating_rst asserts whenever (system-level reset) RST is asserted but must be after TZQINIT_MAXCNT is reached (min-time between resets for DDR3) +--- -- After power stablizes, we will hold MCB in reset state for at least 200us before beginning initialization process. +--- -- If the PLL loses lock during normal operation, no ui_clk will be present because mcb_drp_clk is from a BUFGCE which +--- is gated by pll's lock signal. When the PLL locks again, the RST_reg stays asserted for at least 200 us which +--- will cause MCB to reset and reinitialize the memory afterwards. +--- -- During SUSPEND operation, the PLL will lose lock but non_violating_rst remains low (de-asserted) and WAIT_200us_COUNTER stays at +--- its terminal count. The PLL_LOCK input does not come direct from PLL, rather it is driven by gated_pll_lock from mcb_raw_wrapper module +--- The gated_pll_lock in the mcb_raw_wrapper does not de-assert during SUSPEND operation, hence PLL_LOCK will not de-assert, and the soft calibration +--- state machine will not reset during SUSPEND. +--- -- RST_reg is the control signal that resets the mcb_soft_calibration's State Machine. The MCB_SYSRST is now equal to +--- Pre_SYSRST. When State Machine is performing "INPUT Termination Calibration", it holds the MCB in reset by assertign MCB_SYSRST. +--- It will deassert the MCB_SYSRST so that it can grab the bus to broadcast the P and N term value to all of the DQ pins. Once the calibrated INPUT +--- termination is set, the State Machine will issue another short MCB_SYSRST so that MCB will use the tuned input termination during DQS preamble calibration. + + +- --process (UI_CLK) begin +- -- if (UI_CLK'event and UI_CLK = '1') then +- -- +- -- if (RstCounter < RST_CNT) then +- -- Rst_condition2 <= '1'; +- -- else +- -- Rst_condition2 <= '0'; +- -- end if; +- -- end if; +- --end process; ++ process (UI_CLK) begin ++ if (UI_CLK'event and UI_CLK = '1') then ++ ++ if (RstCounter < RST_CNT) then ++ Rst_condition2 <= '1'; ++ else ++ Rst_condition2 <= '0'; ++ end if; ++ end if; ++ end process; + + process (UI_CLK, non_violating_rst) begin + if (non_violating_rst = '1') then +@@ -745,47 +649,18 @@ + if (WAIT_200us_COUNTER(15) = '0') then + RST_reg <= '1'; + else +- --RST_reg <= Rst_condition2 or rst_tmp; -- insures RST_reg is at least h10 pulses long +- RST_reg <= rst_tmp; -- insures RST_reg is at least h10 pulses long ++ RST_reg <= Rst_condition2 or rst_tmp; -- insures RST_reg is at least h10 pulses long + end if; + end if; + end process; + +---************************************************************* +--- Stretching the pre_sysrst to satisfy the minimum pulse width +---************************************************************* +- +-process (UI_CLK) begin +-if (UI_CLK'event and UI_CLK = '1') then +- if (STATE = START_DYN_CAL_PRE) then +- pre_sysrst_cnt <= pre_sysrst_cnt + '1'; +- else +- pre_sysrst_cnt <= (others=>'0'); +- end if; +-end if; +-end process; +- +-pre_sysrst_minpulse_width_ok <= pre_sysrst_cnt(3); +- ++ + --******************************************** + -- SUSPEND Logic + --******************************************** +- process (UI_CLK,RST) ++ process (UI_CLK) + begin +- if (RST = '1') then +- +- SELFREFRESH_MCB_MODE_R1 <= '0'; +- SELFREFRESH_MCB_MODE_R2 <= '0'; +- SELFREFRESH_MCB_MODE_R3 <= '0'; +- +- SELFREFRESH_REQ_R1 <= '0'; +- SELFREFRESH_REQ_R2 <= '0'; +- SELFREFRESH_REQ_R3 <= '0'; +- +- PLL_LOCK_R1 <= '0'; +- PLL_LOCK_R2 <= '0'; +- +- elsif (UI_CLK'event and UI_CLK = '1') then ++ if (UI_CLK'event and UI_CLK = '1') then + -- SELFREFRESH_MCB_MODE is clocked by sysclk_2x_180 + SELFREFRESH_MCB_MODE_R1 <= SELFREFRESH_MCB_MODE; + SELFREFRESH_MCB_MODE_R2 <= SELFREFRESH_MCB_MODE_R1; +@@ -810,10 +685,9 @@ + if (UI_CLK'event and UI_CLK = '1') then + if (RST = '1') then + SELFREFRESH_MCB_REQ <= '0'; +- --elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R3 = '0') and (STATE = START_DYN_CAL)) then +- elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R3 = '0')) then ++ elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R1 = '0') and (STATE = START_DYN_CAL)) then + SELFREFRESH_MCB_REQ <= '0'; +- elsif ((STATE = START_DYN_CAL) and (SELFREFRESH_REQ_R3 = '1')) then ++ elsif ((STATE = START_DYN_CAL) and (SELFREFRESH_REQ_R1 = '1')) then + SELFREFRESH_MCB_REQ <= '1'; + end if; + end if; +@@ -859,10 +733,6 @@ + + -- SELFREFRESH_MCB_MODE deasserted status is hold off + -- until Soft_Calib has at least done one loop of DQS update. +--- New logic WarmeEnough is added to make sure PLL_Lock is lockec and all IOs stable before +--- deassert the status of MCB's SELFREFRESH_MODE. This is to ensure all IOs are stable before +--- user logic sending new commands to MCB. +- + process (UI_CLK) + begin + if (UI_CLK'event and UI_CLK = '1') then +@@ -870,76 +740,12 @@ + SELFREFRESH_MODE_xilinx11 <= '0'; + elsif (SELFREFRESH_MCB_MODE_R2 = '1') then + SELFREFRESH_MODE_xilinx11 <= '1'; +- elsif (WarmEnough = '1') then +- SELFREFRESH_MODE_xilinx11 <= '0'; +- end if; +- end if; +- end process; +- +- +- +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- WaitCountEnable <= '0'; +- elsif (SELFREFRESH_REQ_R2 = '0' and SELFREFRESH_REQ_R1 = '1') then +- WaitCountEnable <= '0'; + elsif ((PERFORM_START_DYN_CAL_AFTER_SELFREFRESH = '0') and (PERFORM_START_DYN_CAL_AFTER_SELFREFRESH_R1 = '1')) then +- WaitCountEnable <= '1'; +- else +- WaitCountEnable <= WaitCountEnable; ++ SELFREFRESH_MODE_xilinx11 <= '0'; + end if; + end if; + end process; + +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- State_Start_DynCal <= '0'; +- elsif (STATE = START_DYN_CAL) then +- State_Start_DynCal <= '1'; +- else +- State_Start_DynCal <= '0'; +- end if; +- end if; +- end process; +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- State_Start_DynCal_R1 <= '0'; +- else +- State_Start_DynCal_R1 <= State_Start_DynCal; +- end if; +- end if; +- end process; +- +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- WaitTimer <= (others => '0'); +- WarmEnough <= '1'; +- elsif ((SELFREFRESH_REQ_R2 = '0') and (SELFREFRESH_REQ_R1 = '1')) then +- WaitTimer <= (others => '0'); +- WarmEnough <= '0'; +- elsif (WaitTimer = X"04") then +- WaitTimer <= WaitTimer ; +- WarmEnough <= '1'; +- elsif (WaitCountEnable = '1') then +- WaitTimer <= WaitTimer + '1'; +- else +- WaitTimer <= WaitTimer ; +- end if; +- end if; +- end process; +- + --******************************************** + --Comparitor for Dynamic Calibration circuit + --******************************************** +@@ -1014,7 +820,7 @@ + if (UI_CLK'event and UI_CLK = '1') then + if (RST_reg = '1') then -- Synchronous reset + MCB_CMD_VALID <= '0'; +- MCB_UIADDR_int <= "00000"; -- take control of UI/UO port ++ MCB_UIADDR_xilinx3 <= "00000"; -- take control of UI/UO port + MCB_UICMDEN <= '1'; -- tells MCB that it is in Soft Cal. + MCB_UIDONECAL_xilinx7 <= '0'; + MCB_USE_BKST <= '0'; +@@ -1027,11 +833,6 @@ + IODRPCTRLR_USE_BKST <= '0'; + P_Term <= "000000"; + N_Term <= "0000000"; +- P_Term_s <= "000000"; +- N_Term_w <= "0000000"; +- P_Term_w <= "000000"; +- N_Term_s <= "0000000"; +- + P_Term_Prev <= "000000"; + N_Term_Prev <= "0000000"; + Active_IODRP <= RZQ; +@@ -1079,10 +880,7 @@ + Pre_SYSRST <= '1'; -- keeps MCB in reset + LastPass_DynCal <= IN_TERM_PASS; + if (SKIP_IN_TERM_CAL = 1) then +- --STATE <= WRITE_CALIBRATE; +- STATE <= WAIT_FOR_START_BROADCAST; +- P_Term <= "000000"; +- N_Term <= "0000000"; ++ STATE <= WRITE_CALIBRATE; + elsif (IODRPCTRLR_RDY_BUSY_N = '1') then + STATE <= LOAD_RZQ_NTERM; + else +@@ -1135,8 +933,7 @@ + STATE <= LOAD_RZQ_PTERM; + + when MULTIPLY_DIVIDE => -- h06 +- -- 13/4/2011 compensate the added sync FF +- P_Term <= Mult_Divide(("00" & (P_Term - '1')),MULT,DIV)(5 downto 0); ++ P_Term <= Mult_Divide(("00" & P_Term),MULT,DIV)(5 downto 0); + STATE <= LOAD_ZIO_PTERM; + + when LOAD_ZIO_PTERM => --h07 +@@ -1188,13 +985,8 @@ + STATE <= LOAD_ZIO_NTERM; + + when SKEW => -- h0C +- +- P_Term_s <= Mult_Divide(("00" & P_Term), MULT_S, DIV_S)(5 downto 0); +- N_Term_w <= Mult_Divide(('0' & (N_Term-'1')), MULT_W, DIV_W)(6 downto 0); +- P_Term_w <= Mult_Divide(("00" & P_Term), MULT_W, DIV_W)(5 downto 0); +- N_Term_s <= Mult_Divide(('0' & (N_Term-'1')), MULT_S, DIV_S)(6 downto 0); +- P_Term <= Mult_Divide(("00" & P_Term), MULT_S, DIV_S)(5 downto 0); +- N_Term <= Mult_Divide(('0' & (N_Term-'1')), MULT_W, DIV_W)(6 downto 0); ++ P_Term <= Mult_Divide(("00" & P_Term), PSKEW_MULT, PSKEW_DIV)(5 downto 0); ++ N_Term <= Mult_Divide(('0' & N_Term), NSKEW_MULT, NSKEW_DIV)(6 downto 0); + STATE <= WAIT_FOR_START_BROADCAST; + + when WAIT_FOR_START_BROADCAST => --h0D +@@ -1202,7 +994,7 @@ + -- keeping the MCB in calibration mode + Active_IODRP <= MCB_PORT; + if ((START_BROADCAST and IODRPCTRLR_RDY_BUSY_N) = '1') then +- if ((P_Term /= P_Term_Prev) or (SKIP_IN_TERM_CAL = 1)) then ++ if (P_Term /= P_Term_Prev) then + STATE <= BROADCAST_PTERM; + P_Term_Prev <= P_Term; + elsif (N_Term /= N_Term_Prev) then +@@ -1272,184 +1064,10 @@ + STATE <= WAIT6; -- wait for a Refresh cycle + end if; + else +- -- if (PNSKEWDQS = '1') then +- STATE <= LDQS_CLK_WRITE_P_TERM; +- -- else +- -- STATE <= OFF_RZQ_PTERM; +- -- end if; +- end if; +- +--- ********************* +- when LDQS_CLK_WRITE_P_TERM => -- h12 +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_w; +- MCB_UIADDR_int <= IOI_LDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_CLK_WRITE_P_TERM; +- else +- STATE <= LDQS_CLK_P_TERM_WAIT; +- end if; +- +- +- when LDQS_CLK_P_TERM_WAIT => --7'h13 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_CLK_P_TERM_WAIT; +- else +- STATE <= LDQS_CLK_WRITE_N_TERM; +- end if; +- +- when LDQS_CLK_WRITE_N_TERM => --7'h14 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_s; +- MCB_UIADDR_int <= IOI_LDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_CLK_WRITE_N_TERM; +- else +- STATE <= LDQS_CLK_N_TERM_WAIT; +- end if; +- +- --** +- when LDQS_CLK_N_TERM_WAIT => --7'h15 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_CLK_N_TERM_WAIT; +- else +- STATE <= LDQS_PIN_WRITE_P_TERM; +- end if; +- +- +- when LDQS_PIN_WRITE_P_TERM => --7'h16 +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_s; +- MCB_UIADDR_int <= IOI_LDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_PIN_WRITE_P_TERM; +- else +- STATE <= LDQS_PIN_P_TERM_WAIT; +- end if; +- +- +- when LDQS_PIN_P_TERM_WAIT => --7'h17 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_PIN_P_TERM_WAIT; +- else +- STATE <= LDQS_PIN_WRITE_N_TERM; +- end if; +- +- +- when LDQS_PIN_WRITE_N_TERM => --7'h18 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_w; +- MCB_UIADDR_int <= IOI_LDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_PIN_WRITE_N_TERM; +- else +- STATE <= LDQS_PIN_N_TERM_WAIT; +- end if; +- +- +- when LDQS_PIN_N_TERM_WAIT => --7'h19 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_PIN_N_TERM_WAIT; +- else +- STATE <= UDQS_CLK_WRITE_P_TERM; +- end if; +- +- +- +- when UDQS_CLK_WRITE_P_TERM => --7'h1A +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_w; +- MCB_UIADDR_int <= IOI_UDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_CLK_WRITE_P_TERM; +- else +- STATE <= UDQS_CLK_P_TERM_WAIT; +- end if; +- +- +- when UDQS_CLK_P_TERM_WAIT => --7'h1B +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_CLK_P_TERM_WAIT; +- else +- STATE <= UDQS_CLK_WRITE_N_TERM; +- end if; +- +- +- when UDQS_CLK_WRITE_N_TERM => --7'h1C +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_s; +- MCB_UIADDR_int <= IOI_UDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_CLK_WRITE_N_TERM; +- else +- STATE <= UDQS_CLK_N_TERM_WAIT; +- end if; +- +- when UDQS_CLK_N_TERM_WAIT => --7'h1D +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_CLK_N_TERM_WAIT; +- else +- STATE <= UDQS_PIN_WRITE_P_TERM; +- end if; +- +- +- +- when UDQS_PIN_WRITE_P_TERM => --7'h1E +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_s; +- MCB_UIADDR_int <= IOI_UDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_PIN_WRITE_P_TERM; +- else +- STATE <= UDQS_PIN_P_TERM_WAIT; +- end if; +- +- +- when UDQS_PIN_P_TERM_WAIT => --7'h1F +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_PIN_P_TERM_WAIT; +- else +- STATE <= UDQS_PIN_WRITE_N_TERM; +- end if; +- +- when UDQS_PIN_WRITE_N_TERM => --7'h20 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_w; +- MCB_UIADDR_int <= IOI_UDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_PIN_WRITE_N_TERM; +- else +- STATE <= UDQS_PIN_N_TERM_WAIT; +- end if; +- +- +- when UDQS_PIN_N_TERM_WAIT => --7'h21 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_PIN_N_TERM_WAIT; +- else +- STATE <= OFF_RZQ_PTERM; ++ STATE <= OFF_RZQ_PTERM; + end if; +- +--- ********************* + +- +- when OFF_RZQ_PTERM => -- h22 ++ when OFF_RZQ_PTERM => -- h12 + Active_IODRP <= RZQ; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= PTerm; +@@ -1464,14 +1082,14 @@ + STATE <= WAIT7; + end if; + +- when WAIT7 => -- h23 ++ when WAIT7 => -- h13 + if ((not(IODRPCTRLR_RDY_BUSY_N)) = '1') then + STATE <= WAIT7; + else + STATE <= OFF_ZIO_NTERM; + end if; + +- when OFF_ZIO_NTERM => -- h24 ++ when OFF_ZIO_NTERM => -- h14 + Active_IODRP <= ZIO; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= NTerm; +@@ -1483,7 +1101,7 @@ + STATE <= WAIT8; + end if; + +- when WAIT8 => -- h25 ++ when WAIT8 => -- h15 + if (IODRPCTRLR_RDY_BUSY_N = '0') then + STATE <= WAIT8; + else +@@ -1494,8 +1112,8 @@ + end if; + end if; + +- when RST_DELAY => -- h26 +- --MCB_UICMDEN <= '0'; -- release control of UI/UO port ++ when RST_DELAY => -- h16 ++ MCB_UICMDEN <= '0'; -- release control of UI/UO port + if (Block_Reset = '1') then -- this ensures that more than 512 clock cycles occur since the last reset after MCB_WRITE_CALIBRATE ??? + STATE <= RST_DELAY; + else +@@ -1505,18 +1123,18 @@ + --*************************** + --DYNAMIC CALIBRATION PORTION + --*************************** +- when START_DYN_CAL_PRE => -- h27 ++ when START_DYN_CAL_PRE => -- h17 + LastPass_DynCal <= IN_TERM_PASS; + MCB_UICMDEN <= '0'; -- release UICMDEN + MCB_UIDONECAL_xilinx7 <= '1'; -- release UIDONECAL - MCB will now initialize. + Pre_SYSRST <= '1'; -- SYSRST pulse + if (CALMODE_EQ_CALIBRATION = '0') then -- if C_MC_CALIBRATION_MODE is set to NOCALIBRATION + STATE <= START_DYN_CAL; -- we'll skip setting the DQS delays manually +- elsif (pre_sysrst_minpulse_width_ok = '1') then ++ else + STATE <= WAIT_FOR_UODONE; + end if; + +- when WAIT_FOR_UODONE => -- h28 ++ when WAIT_FOR_UODONE => -- h18 + Pre_SYSRST <= '0'; -- SYSRST pulse + if ((IODRPCTRLR_RDY_BUSY_N and MCB_UODONECAL) = '1')then --IODRP Controller needs to be ready, & MCB needs to be done with hard calibration + MCB_UICMDEN <= '1'; -- grab UICMDEN +@@ -1526,11 +1144,11 @@ + STATE <= WAIT_FOR_UODONE; + end if; + +- when LDQS_WRITE_POS_INDELAY => -- h29 ++ when LDQS_WRITE_POS_INDELAY => -- h19 + IODRPCTRLR_MEMCELL_ADDR <= PosEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_LDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_LDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1') then + STATE <= LDQS_WRITE_POS_INDELAY; +@@ -1538,18 +1156,18 @@ + STATE <= LDQS_WAIT1; + end if; + +- when LDQS_WAIT1 => -- h2A ++ when LDQS_WAIT1 => -- h1A + if (MCB_RDY_BUSY_N = '0')then + STATE <= LDQS_WAIT1; + else + STATE <= LDQS_WRITE_NEG_INDELAY; + end if; + +- when LDQS_WRITE_NEG_INDELAY => -- h2B ++ when LDQS_WRITE_NEG_INDELAY => -- h1B + IODRPCTRLR_MEMCELL_ADDR <= NegEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_LDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_LDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= LDQS_WRITE_NEG_INDELAY; +@@ -1557,18 +1175,18 @@ + STATE <= LDQS_WAIT2; + end if; + +- when LDQS_WAIT2 => -- 7'h2C ++ when LDQS_WAIT2 => -- 7'h1C + if(MCB_RDY_BUSY_N = '0')then + STATE <= LDQS_WAIT2; + else + STATE <= UDQS_WRITE_POS_INDELAY; + end if; + +- when UDQS_WRITE_POS_INDELAY => -- 7'h2D ++ when UDQS_WRITE_POS_INDELAY => -- 7'h1D + IODRPCTRLR_MEMCELL_ADDR <= PosEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_UDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_UDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= UDQS_WRITE_POS_INDELAY; +@@ -1576,18 +1194,18 @@ + STATE <= UDQS_WAIT1; + end if; + +- when UDQS_WAIT1 => -- 7'h2E ++ when UDQS_WAIT1 => -- 7'h1E + if (MCB_RDY_BUSY_N = '0')then + STATE <= UDQS_WAIT1; + else + STATE <= UDQS_WRITE_NEG_INDELAY; + end if; + +- when UDQS_WRITE_NEG_INDELAY => -- 7'h2F ++ when UDQS_WRITE_NEG_INDELAY => -- 7'h1F + IODRPCTRLR_MEMCELL_ADDR <= NegEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_UDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_UDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= UDQS_WRITE_NEG_INDELAY; +@@ -1595,7 +1213,7 @@ + STATE <= UDQS_WAIT2; + end if; + +- when UDQS_WAIT2 => -- 7'h30 ++ when UDQS_WAIT2 => -- 7'h20 + if (MCB_RDY_BUSY_N = '0')then + STATE <= UDQS_WAIT2; + else +@@ -1604,7 +1222,7 @@ + STATE <= START_DYN_CAL; + end if; + +- when START_DYN_CAL => -- h31 ++ when START_DYN_CAL => -- h21 + Pre_SYSRST <= '0'; -- SYSRST not driven + counter_inc <= (others => '0'); + counter_dec <= (others => '0'); +@@ -1624,7 +1242,7 @@ + STATE <= START_DYN_CAL; + end if; + +- when WRITE_CALIBRATE => -- h32 ++ when WRITE_CALIBRATE => -- h22 + Pre_SYSRST <= '0'; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= DelayControl; +@@ -1637,7 +1255,7 @@ + STATE <= WAIT9; + end if; + +- when WAIT9 => -- h33 ++ when WAIT9 => -- h23 + counter_en <= '1'; + if (count < "100110") then -- this adds approximately 22 extra clock cycles after WRITE_CALIBRATE + STATE <= WAIT9; +@@ -1645,7 +1263,7 @@ + STATE <= READ_MAX_VALUE; + end if; + +- when READ_MAX_VALUE => -- h34 ++ when READ_MAX_VALUE => -- h24 + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= MaxValue; + IODRPCTRLR_R_WB <= READ_MODE; +@@ -1656,7 +1274,7 @@ + STATE <= WAIT10; + end if; + +- when WAIT10 => -- h35 ++ when WAIT10 => -- h25 + if (IODRPCTRLR_RDY_BUSY_N = '0') then + STATE <= WAIT10; + else +@@ -1669,7 +1287,7 @@ + end if; + end if; + +- when ANALYZE_MAX_VALUE => -- h36 only do a Inc or Dec during a REFRESH cycle. ++ when ANALYZE_MAX_VALUE => -- h26 only do a Inc or Dec during a REFRESH cycle. + if (First_Dyn_Cal_Done = '0')then + STATE <= FIRST_DYN_CAL; + elsif ((Max_Value_int < Max_Value_Previous) and (Max_Value_Delta_Dn >= INCDEC_THRESHOLD)) then +@@ -1684,11 +1302,11 @@ + STATE <= START_DYN_CAL; + end if; + +- when FIRST_DYN_CAL => -- h37 ++ when FIRST_DYN_CAL => -- h27 + First_Dyn_Cal_Done <= '1'; -- set flag that the First Dynamic Calibration has been completed + STATE <= START_DYN_CAL; + +- when INCREMENT => -- h38 ++ when INCREMENT => -- h28 + STATE <= START_DYN_CAL; -- Default case: Inc is not high or no longer in REFRSH + MCB_UILDQSINC <= '0'; -- Default case: no inc or dec + MCB_UIUDQSINC <= '0'; -- Default case: no inc or dec +@@ -1712,7 +1330,7 @@ + STATE <= START_DYN_CAL; + end case; + +- when DECREMENT => -- h39 ++ when DECREMENT => -- h29 + STATE <= START_DYN_CAL; -- Default case: Dec is not high or no longer in REFRSH + MCB_UILDQSINC <= '0'; -- Default case: no inc or dec + MCB_UIUDQSINC <= '0'; -- Default case: no inc or dec +@@ -1738,7 +1356,7 @@ + end case; + end if; + +- when DONE => -- h3A ++ when DONE => -- h2A + Pre_SYSRST <= '0'; -- SYSRST cleared + MCB_UICMDEN <= '0'; -- release UICMDEN + STATE <= DONE; diff --git a/designs/leon3-ztex-ufm-111/memc3_infrastructure_patch.txt b/designs/leon3-ztex-ufm-111/memc3_infrastructure_patch.txt new file mode 100644 index 00000000..08b1b533 --- /dev/null +++ b/designs/leon3-ztex-ufm-111/memc3_infrastructure_patch.txt @@ -0,0 +1,61 @@ +--- mig39/mig_39/user_design/rtl/memc3_infrastructure.vhd 2012-12-20 10:25:33.211745967 +0100 ++++ mig39_copy/mig_39/user_design/rtl/memc3_infrastructure.vhd 2012-12-20 10:25:45.219745839 +0100 +@@ -122,7 +122,6 @@ + signal mcb_drp_clk_bufg_in : std_logic; + signal clkfbout_clkfbin : std_logic; + signal rst_tmp : std_logic; +- signal sys_clk_ibufg : std_logic; + signal sys_rst : std_logic; + signal rst0_sync_r : std_logic_vector(RST_SYNC_NUM-1 downto 0); + signal powerup_pll_locked : std_logic; +@@ -136,7 +135,6 @@ + attribute KEEP : string; + attribute max_fanout of rst0_sync_r : signal is "10"; + attribute syn_maxfan of rst0_sync_r : signal is 10; +- attribute KEEP of sys_clk_ibufg : signal is "TRUE"; + + begin + +@@ -145,33 +143,6 @@ + pll_lock <= bufpll_mcb_locked; + mcb_drp_clk <= mcb_drp_clk_sig; + +- diff_input_clk : if(C_INPUT_CLK_TYPE = "DIFFERENTIAL") generate +- --*********************************************************************** +- -- Differential input clock input buffers +- --*********************************************************************** +- u_ibufg_sys_clk : IBUFGDS +- generic map ( +- DIFF_TERM => TRUE +- ) +- port map ( +- I => sys_clk_p, +- IB => sys_clk_n, +- O => sys_clk_ibufg +- ); +- end generate; +- +- +- se_input_clk : if(C_INPUT_CLK_TYPE = "SINGLE_ENDED") generate +- --*********************************************************************** +- -- SINGLE_ENDED input clock input buffers +- --*********************************************************************** +- u_ibufg_sys_clk : IBUFG +- port map ( +- I => sys_clk, +- O => sys_clk_ibufg +- ); +- end generate; +- + --*************************************************************************** + -- Global clock generation and distribution + --*************************************************************************** +@@ -211,7 +182,7 @@ + ( + CLKFBIN => clkfbout_clkfbin, + CLKINSEL => '1', +- CLKIN1 => sys_clk_ibufg, ++ CLKIN1 => sys_clk, + CLKIN2 => '0', + DADDR => (others => '0'), + DCLK => '0', diff --git a/designs/leon3-ztex-ufm-111/mig39/coregen.cgc b/designs/leon3-ztex-ufm-111/mig39/coregen.cgc new file mode 100644 index 00000000..f4fc8c63 --- /dev/null +++ b/designs/leon3-ztex-ufm-111/mig39/coregen.cgc @@ -0,0 +1,985 @@ + + + xilinx.com + project + coregen + 1.0 + + + mig_39 + MIG Virtex-6 and Spartan-6 + + + mig_39 + ./mig_39/user_design/mig.prj + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg/ + + + xc6slx25 + spartan6 + ftg256 + -3 + + + BusFormatAngleBracketNotRipped + VHDL + true + Other + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + 2012-10-13+03:35 + + + + + model_parameter_resolution_generator + + + ip_xco_generator + + ./mig_39.xco + xco + Thu Dec 20 09:26:20 GMT 2012 + 0xB1C5C297 + generationID_1879581046 + + + + implementation_source_generator + + ./mig_39/docs/ug388.pdf + ignore + pdf + Thu Dec 20 09:26:20 GMT 2012 + 0x90FCF0D1 + generationID_1879581046 + + + ./mig_39/docs/ug416.pdf + ignore + pdf + Thu Dec 20 09:26:20 GMT 2012 + 0x5A2D5D89 + generationID_1879581046 + + + ./mig_39/example_design/datasheet.txt + ignore + txt + Thu Dec 20 09:26:20 GMT 2012 + 0xAA1BF0C2 + generationID_1879581046 + + + ./mig_39/example_design/mig.prj + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0xD50899C6 + generationID_1879581046 + + + ./mig_39/example_design/par/create_ise.sh + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0x87F14240 + generationID_1879581046 + + + ./mig_39/example_design/par/example_top.ucf + ignore + ucf + Thu Dec 20 09:26:20 GMT 2012 + 0x74BAD474 + generationID_1879581046 + + + ./mig_39/example_design/par/icon_coregen.xco + ignore + xco + Thu Dec 20 09:26:20 GMT 2012 + 0xC38DC185 + generationID_1879581046 + + + ./mig_39/example_design/par/ila_coregen.xco + ignore + xco + Thu Dec 20 09:26:20 GMT 2012 + 0x2C219F2D + generationID_1879581046 + + + ./mig_39/example_design/par/ise_flow.sh + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0xE62439F5 + generationID_1879581046 + + + ./mig_39/example_design/par/ise_run.txt + ignore + txt + Thu Dec 20 09:26:20 GMT 2012 + 0xA31A2AD2 + generationID_1879581046 + + + ./mig_39/example_design/par/makeproj.sh + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0xCFE64DF9 + generationID_1879581046 + + + ./mig_39/example_design/par/mem_interface_top.ut + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0xCDD0105F + generationID_1879581046 + + + ./mig_39/example_design/par/readme.txt + ignore + txt + Thu Dec 20 09:26:20 GMT 2012 + 0x1FCF75F3 + generationID_1879581046 + + + ./mig_39/example_design/par/rem_files.sh + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0x1D02A061 + generationID_1879581046 + + + ./mig_39/example_design/par/set_ise_prop.tcl + ignore + tcl + Thu Dec 20 09:26:20 GMT 2012 + 0x5D3CA2D5 + generationID_1879581046 + + + ./mig_39/example_design/par/vio_coregen.xco + ignore + xco + Thu Dec 20 09:26:20 GMT 2012 + 0x4A18E2CE + generationID_1879581046 + + + ./mig_39/example_design/rtl/example_top.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0xF3D1648E + generationID_1879581046 + + + ./mig_39/example_design/rtl/iodrp_controller.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x5A2197DD + generationID_1879581046 + + + ./mig_39/example_design/rtl/iodrp_mcb_controller.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x69237401 + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_raw_wrapper.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0xA3623325 + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_soft_calibration.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x9B8E0B5E + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_soft_calibration_top.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0xC37A23BB + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_infrastructure.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x8BA0A593 + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_tb_top.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x972877D1 + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_wrapper.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0xA8F90A8D + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/afifo.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x26568D9A + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/cmd_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0xC6EF0126 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/cmd_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x893B0F01 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/data_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x6E88FB8E + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/init_mem_pattern_ctr.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x26DEA717 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/mcb_flow_control.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0xB9D71414 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/mcb_traffic_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x125A1D59 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/rd_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x50A90B14 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/read_data_path.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0xDFA5DAF7 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/read_posted_fifo.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0xBC61DAC4 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/sp6_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0xA9170C59 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/tg_status.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x7B717096 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/v6_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x24F3E550 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/wr_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x91BCA941 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/write_data_path.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x391A16CE + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/ddr_model_c3.v + ignore + verilog + Thu Dec 20 09:26:20 GMT 2012 + 0x9DEEF7E8 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/ddr_model_parameters_c3.vh + ignore + verilog + Thu Dec 20 09:26:20 GMT 2012 + 0x66032C47 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/isim.sh + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0x33472FFE + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/isim.tcl + ignore + tcl + Thu Dec 20 09:26:20 GMT 2012 + 0x30A02B8A + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/mig_39.prj + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0x02A1F9CD + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/readme.txt + ignore + txt + Thu Dec 20 09:26:20 GMT 2012 + 0x19BAEB8E + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/sim.do + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0x7ADBDEBD + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/sim_tb_top.vhd + ignore + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x6B549CB0 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/timing_sim.sh + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0x455244CF + generationID_1879581046 + + + ./mig_39/example_design/synth/example_top.lso + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0xEEDE3797 + generationID_1879581046 + + + ./mig_39/example_design/synth/example_top.prj + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0x45A82CBA + generationID_1879581046 + + + ./mig_39/example_design/synth/mem_interface_top_synp.sdc + ignore + unknown + Thu Dec 20 09:26:20 GMT 2012 + 0x8CC320DE + generationID_1879581046 + + + ./mig_39/example_design/synth/script_synp.tcl + ignore + tcl + Thu Dec 20 09:26:20 GMT 2012 + 0xA5CDA13B + generationID_1879581046 + + + ./mig_39/user_design/datasheet.txt + ignore + txt + Thu Dec 20 09:26:21 GMT 2012 + 0x170D2A11 + generationID_1879581046 + + + ./mig_39/user_design/mig.prj + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0xD50899C6 + generationID_1879581046 + + + ./mig_39/user_design/par/create_ise.sh + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0x87F14240 + generationID_1879581046 + + + ./mig_39/user_design/par/icon_coregen.xco + ignore + xco + Thu Dec 20 09:26:21 GMT 2012 + 0xC38DC185 + generationID_1879581046 + + + ./mig_39/user_design/par/ila_coregen.xco + ignore + xco + Thu Dec 20 09:26:21 GMT 2012 + 0x2C219F2D + generationID_1879581046 + + + ./mig_39/user_design/par/ise_flow.sh + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0xE4D4887D + generationID_1879581046 + + + ./mig_39/user_design/par/ise_run.txt + ignore + txt + Thu Dec 20 09:26:21 GMT 2012 + 0xF2DA5F4A + generationID_1879581046 + + + ./mig_39/user_design/par/makeproj.sh + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0xCFE64DF9 + generationID_1879581046 + + + ./mig_39/user_design/par/mem_interface_top.ut + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0xCDD0105F + generationID_1879581046 + + + ./mig_39/user_design/par/mig_39.ucf + ucf + Thu Dec 20 09:26:21 GMT 2012 + 0x46D3D963 + generationID_1879581046 + + + ./mig_39/user_design/par/readme.txt + ignore + txt + Thu Dec 20 09:26:21 GMT 2012 + 0xA924DFF1 + generationID_1879581046 + + + ./mig_39/user_design/par/rem_files.sh + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0x3511EC76 + generationID_1879581046 + + + ./mig_39/user_design/par/set_ise_prop.tcl + ignore + tcl + Thu Dec 20 09:26:21 GMT 2012 + 0x66A0883B + generationID_1879581046 + + + ./mig_39/user_design/par/vio_coregen.xco + ignore + xco + Thu Dec 20 09:26:21 GMT 2012 + 0x4A18E2CE + generationID_1879581046 + + + ./mig_39/user_design/rtl/iodrp_controller.vhd + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x5A2197DD + generationID_1879581046 + + + ./mig_39/user_design/rtl/iodrp_mcb_controller.vhd + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x69237401 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_raw_wrapper.vhd + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0xA3623325 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_soft_calibration.vhd + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x9B8E0B5E + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_soft_calibration_top.vhd + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0xC37A23BB + generationID_1879581046 + + + ./mig_39/user_design/rtl/memc3_infrastructure.vhd + vhdl + Thu Dec 20 09:26:20 GMT 2012 + 0x8BA0A593 + generationID_1879581046 + + + ./mig_39/user_design/rtl/memc3_wrapper.vhd + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0xA8F90A8D + generationID_1879581046 + + + ./mig_39/user_design/rtl/mig_39.vhd + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0xFFE216B9 + generationID_1879581046 + + + ./mig_39/user_design/sim/afifo.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x26568D9A + generationID_1879581046 + + + ./mig_39/user_design/sim/cmd_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0xC6EF0126 + generationID_1879581046 + + + ./mig_39/user_design/sim/cmd_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x893B0F01 + generationID_1879581046 + + + ./mig_39/user_design/sim/data_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x6E88FB8E + generationID_1879581046 + + + ./mig_39/user_design/sim/ddr_model_c3.v + ignore + verilog + Thu Dec 20 09:26:21 GMT 2012 + 0x9DEEF7E8 + generationID_1879581046 + + + ./mig_39/user_design/sim/ddr_model_parameters_c3.vh + ignore + verilog + Thu Dec 20 09:26:21 GMT 2012 + 0x66032C47 + generationID_1879581046 + + + ./mig_39/user_design/sim/init_mem_pattern_ctr.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x26DEA717 + generationID_1879581046 + + + ./mig_39/user_design/sim/isim.sh + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0x33472FFE + generationID_1879581046 + + + ./mig_39/user_design/sim/isim.tcl + ignore + tcl + Thu Dec 20 09:26:21 GMT 2012 + 0x30A02B8A + generationID_1879581046 + + + ./mig_39/user_design/sim/mcb_flow_control.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0xB9D71414 + generationID_1879581046 + + + ./mig_39/user_design/sim/mcb_traffic_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x125A1D59 + generationID_1879581046 + + + ./mig_39/user_design/sim/memc3_tb_top.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x972877D1 + generationID_1879581046 + + + ./mig_39/user_design/sim/mig_39.prj + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0xD974D6CA + generationID_1879581046 + + + ./mig_39/user_design/sim/rd_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x50A90B14 + generationID_1879581046 + + + ./mig_39/user_design/sim/read_data_path.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0xDFA5DAF7 + generationID_1879581046 + + + ./mig_39/user_design/sim/read_posted_fifo.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0xBC61DAC4 + generationID_1879581046 + + + ./mig_39/user_design/sim/readme.txt + ignore + txt + Thu Dec 20 09:26:21 GMT 2012 + 0x19BAEB8E + generationID_1879581046 + + + ./mig_39/user_design/sim/sim.do + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0xED204E39 + generationID_1879581046 + + + ./mig_39/user_design/sim/sim_tb_top.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x01E96942 + generationID_1879581046 + + + ./mig_39/user_design/sim/sp6_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0xA9170C59 + generationID_1879581046 + + + ./mig_39/user_design/sim/tg_status.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x7B717096 + generationID_1879581046 + + + ./mig_39/user_design/sim/v6_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x24F3E550 + generationID_1879581046 + + + ./mig_39/user_design/sim/wr_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x91BCA941 + generationID_1879581046 + + + ./mig_39/user_design/sim/write_data_path.vhd + ignore + vhdl + Thu Dec 20 09:26:21 GMT 2012 + 0x391A16CE + generationID_1879581046 + + + ./mig_39/user_design/synth/mem_interface_top_synp.sdc + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0xBE2AEA94 + generationID_1879581046 + + + ./mig_39/user_design/synth/mig_39.lso + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0xEEDE3797 + generationID_1879581046 + + + ./mig_39/user_design/synth/mig_39.prj + ignore + unknown + Thu Dec 20 09:26:21 GMT 2012 + 0x1521D75B + generationID_1879581046 + + + ./mig_39/user_design/synth/script_synp.tcl + ignore + tcl + Thu Dec 20 09:26:21 GMT 2012 + 0x122980B4 + generationID_1879581046 + + + ./mig_39.vho + vho + Thu Dec 20 09:26:21 GMT 2012 + 0xFB70C30E + generationID_1879581046 + + + ./mig_39_readme.txt + ignore + txt + Thu Dec 20 09:26:21 GMT 2012 + 0x412C831B + generationID_1879581046 + + + ./mig_39_xmdf.tcl + ignore + tcl + Thu Dec 20 09:26:21 GMT 2012 + 0x87D169C0 + generationID_1879581046 + + + + instantiation_template_generator + + + asy_generator + + + xmdf_generator + + + ise_generator + + ./mig_39.gise + ignore + gise + Thu Dec 20 09:26:27 GMT 2012 + 0x8CB3D14A + generationID_1879581046 + + + ./mig_39.xise + ignore + xise + Thu Dec 20 09:26:27 GMT 2012 + 0x575D7C27 + generationID_1879581046 + + + + deliver_readme_generator + + + flist_generator + + ./mig_39_flist.txt + ignore + txtFlist + txt + Thu Dec 20 09:26:27 GMT 2012 + 0xF899407B + generationID_1879581046 + + + + + + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg + + + xc6slx25 + spartan6 + ftg256 + -3 + + + BusFormatAngleBracketNotRipped + VHDL + true + Other + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + + + diff --git a/designs/leon3-ztex-ufm-111/mig39/coregen.cgp b/designs/leon3-ztex-ufm-111/mig39/coregen.cgp new file mode 100644 index 00000000..35c81d94 --- /dev/null +++ b/designs/leon3-ztex-ufm-111/mig39/coregen.cgp @@ -0,0 +1,22 @@ +# Date: Sun Jul 24 18:57:39 2011 + +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx25 +SET devicefamily = spartan6 +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ftg256 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -3 +SET verilogsim = false +SET vhdlsim = true +SET workingdirectory = ./tmp/ + +# CRC: f4d1bc2c diff --git a/designs/leon3-ztex-ufm-111/mig39/mig.prj b/designs/leon3-ztex-ufm-111/mig39/mig.prj new file mode 100644 index 00000000..30199bed --- /dev/null +++ b/designs/leon3-ztex-ufm-111/mig39/mig.prj @@ -0,0 +1,55 @@ + + + mig_39 + xc6slx25-ftg256/-3 + 3.92 + + DDR_SDRAM/Components/MT46V32M16XX-5B-IT + 5000 + 0 + 1 + FALSE + + 13 + 10 + 2 + + + + 4(010) + 3 + Enable-Normal + Normal + NATIVE,NATIVE,NATIVE,NATIVE,NATIVE,NATIVE + Class II + Class II + EXTERN_TERM + 25 Ohms + + + + Single-Ended + 1 + Disable + Single-Ended + Two 32-bit bi-directional and four 32-bit unidirectional ports + M4 + M5 + Port0 + Bi-directional,none,none,none,none,none + ROW_BANK_COLUMN + Round Robin + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + diff --git a/designs/leon3-ztex-ufm-111/mig39/mig.xco b/designs/leon3-ztex-ufm-111/mig39/mig.xco new file mode 100644 index 00000000..3940fbbe --- /dev/null +++ b/designs/leon3-ztex-ufm-111/mig39/mig.xco @@ -0,0 +1,42 @@ +############################################################## +# +# Xilinx Core Generator version 13.1 +# Date: Sun Jul 24 19:06:40 2011 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx25 +SET devicefamily = spartan6 +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ftg256 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -3 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT MIG_Virtex-6_and_Spartan-6 family Xilinx,_Inc. 3.92 +# END Select +# BEGIN Parameters +CSET component_name=mig_39 +CSET xml_input_file=./mig.prj +# END Parameters +GENERATE +# CRC: 98637a85 diff --git a/designs/leon3-ztex-ufm-111/mig39/mig_39.xco b/designs/leon3-ztex-ufm-111/mig39/mig_39.xco new file mode 100644 index 00000000..0c0b0848 --- /dev/null +++ b/designs/leon3-ztex-ufm-111/mig39/mig_39.xco @@ -0,0 +1,49 @@ +############################################################## +# +# Xilinx Core Generator version 14.3 +# Date: Thu Dec 20 09:26:20 2012 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:mig:3.92 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx25 +SET devicefamily = spartan6 +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ftg256 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -3 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT MIG_Virtex-6_and_Spartan-6 family Xilinx,_Inc. 3.92 +# END Select +# BEGIN Parameters +CSET component_name=mig_39 +CSET xml_input_file=./mig.prj +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-10-13T03:35:42Z +# END Extra information +GENERATE +# CRC: 2508d8c8 diff --git a/designs/leon3-ztex-ufm-111/mig_patch.txt b/designs/leon3-ztex-ufm-111/mig_patch.txt new file mode 100644 index 00000000..044cbaec --- /dev/null +++ b/designs/leon3-ztex-ufm-111/mig_patch.txt @@ -0,0 +1,41 @@ +--- mig39/mig_39/user_design/rtl/mig_39.vhd 2012-12-20 10:05:01.000000000 +0100 ++++ mig39_copy/mig_39/user_design/rtl/mig_39.vhd 2012-12-20 10:19:33.235749774 +0100 +@@ -65,7 +65,7 @@ + --***************************************************************************** + library ieee; + use ieee.std_logic_1164.all; +-entity mig_39 is ++entity mig_37 is + generic + ( + C3_P0_MASK_SIZE : integer := 4; +@@ -114,7 +114,7 @@ + mcb3_rzq : inout std_logic; + mcb3_dram_udm : out std_logic; + c3_sys_clk : in std_logic; +- c3_sys_rst_i : in std_logic; ++ c3_sys_rst_n : in std_logic; + c3_calib_done : out std_logic; + c3_clk0 : out std_logic; + c3_rst0 : out std_logic; +@@ -146,9 +146,9 @@ + c3_p0_rd_overflow : out std_logic; + c3_p0_rd_error : out std_logic + ); +-end mig_39; ++end mig_37; + +-architecture arc of mig_39 is ++architecture arc of mig_37 is + + + component memc3_infrastructure is +@@ -441,7 +441,7 @@ + sys_clk_p => c3_sys_clk_p, + sys_clk_n => c3_sys_clk_n, + sys_clk => c3_sys_clk, +- sys_rst_i => c3_sys_rst_i, ++ sys_rst_i => c3_sys_rst_n, + clk0 => c3_clk0, + rst0 => c3_rst0, + async_rst => c3_async_rst, diff --git a/designs/leon3-ztex-ufm-111/testbench.vhd b/designs/leon3-ztex-ufm-111/testbench.vhd index d6ecd800..06b19de2 100644 --- a/designs/leon3-ztex-ufm-111/testbench.vhd +++ b/designs/leon3-ztex-ufm-111/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-ztex-ufm-111/tkconfig.h b/designs/leon3-ztex-ufm-111/tkconfig.h index dd755300..48039bc8 100644 --- a/designs/leon3-ztex-ufm-111/tkconfig.h +++ b/designs/leon3-ztex-ufm-111/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -695,6 +717,10 @@ #endif +#ifndef CONFIG_MIG_DDR3 +#define CONFIG_MIG_DDR3 0 +#endif + #ifndef CONFIG_MIG_DDR2 #define CONFIG_MIG_DDR2 0 #endif diff --git a/designs/leon3-ztex-ufm-115/Makefile b/designs/leon3-ztex-ufm-115/Makefile index e65ae995..80e70ddf 100644 --- a/designs/leon3-ztex-ufm-115/Makefile +++ b/designs/leon3-ztex-ufm-115/Makefile @@ -2,10 +2,11 @@ include .config GRLIB=../.. TOP=leon3mp BOARD=ztex-ufm-115 +DESIGN=leon3-ztex-ufm-115 include $(GRLIB)/boards/$(BOARD)/Makefile.inc DEVICE=$(PART)-$(PACKAGE)$(SPEED) UCF=$(TOP).ucf -#ISEMAPOPT=-timing +UCF_PLANAHEAD=$(UCF) QSF=$(GRLIB)/boards/$(BOARD)/$(TOP).qsf EFFORT=high XSTOPT=-uc leon3mp.xcf @@ -22,9 +23,16 @@ VHDLOPTSYNFILES = \ mig37/mig_37/user_design/rtl/mcb_soft_calibration_top.vhd \ mig37/mig_37/user_design/rtl/memc3_infrastructure.vhd \ mig37/mig_37/user_design/rtl/memc3_wrapper.vhd \ - mig37/mig_37/user_design/rtl/mig_37.vhd - -VHDLSYNFILES = config.vhd ahbrom.vhd ahb2mig_ztex.vhd leon3mp.vhd + mig37/mig_37/user_design/rtl/mig_37.vhd \ + mig39/mig_39/user_design/rtl/iodrp_controller.vhd \ + mig39/mig_39/user_design/rtl/iodrp_mcb_controller.vhd \ + mig39/mig_39/user_design/rtl/mcb_raw_wrapper.vhd \ + mig39/mig_39/user_design/rtl/mcb_soft_calibration.vhd \ + mig39/mig_39/user_design/rtl/mcb_soft_calibration_top.vhd \ + mig39/mig_39/user_design/rtl/memc3_infrastructure.vhd \ + mig39/mig_39/user_design/rtl/memc3_wrapper.vhd \ + mig39/mig_39/user_design/rtl/mig_39.vhd \ + config.vhd ahbrom.vhd ahb2mig_ztex.vhd leon3mp.vhd VHDLSIMFILES=testbench.vhd @@ -36,10 +44,10 @@ CLEAN=soft-clean TECHLIBS = secureip unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip ihp gleichmann usbhc spw + tmtc openchip ihp usbhc spw DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest can \ - usb grusbhc spacewire ata haps coremp7 ascs slink hcan \ - leon4 leon4b64 l2cache pwm gr1553b iommu + usb grusbhc spacewire ascs slink hcan \ + leon4 leon4v0 l2cache pwm gr1553b iommu FILEADD = MCB.vhd FILESKIP = grcan.vhd @@ -71,3 +79,13 @@ ztex-upload-fw: -uu $(ZTEX)/examples/usb-fpga-1.15/standalone/standalone.ihx \ -rf -uf $(TOP).bit +mig39: + coregen -b mig39/mig.xco -p mig39 + patch -p0 < mig_patch.txt + patch -p0 < memc3_infrastructure_patch.txt + patch -p0 < mcb_soft_calibration_patch.txt + +mig39clean: + -rm -rf mig39/mig_39* mig39/tmp + +.PHONY : mig mig39 mig39clean \ No newline at end of file diff --git a/designs/leon3-ztex-ufm-115/README.txt b/designs/leon3-ztex-ufm-115/README.txt index d41f15eb..25949e57 100644 --- a/designs/leon3-ztex-ufm-115/README.txt +++ b/designs/leon3-ztex-ufm-115/README.txt @@ -18,16 +18,27 @@ interface. The MIG source code cannot be distributed due to the prohibitive Xilinx license, so the MIG must be re-generated with coregen before simulation and synthesis can be done. -To generate the MIG and install the Xilinx unisim simulation +To generate the MIG using ISE13 and install the Xilinx unisim simulation library, do as follows: make mig make install-secureip -This will ONLY work with ISE-13 installed, and the XILINX variable -properly set in the shell. To synthesize the design, do +To generate the MIG using ISE14 and install the Xilinx unisim simulation +library, do as follows: + + make mig39 + make install-secureip + +This will ONLY work with correct version of ISE installed, and the XILINX variable +properly set in the shell. For ISE13 it is recommened to use the 'ise' make target +and for ISE14 to use the 'planAhead' target. To synthesize the design, do + + make ise (ISE13) + +or - make ise + make planAhead (ISE14) The FPGA can be programmed via JTAG using: diff --git a/designs/leon3-ztex-ufm-115/ahb2mig_ztex.vhd b/designs/leon3-ztex-ufm-115/ahb2mig_ztex.vhd index 6af47f12..a7f4a46f 100644 --- a/designs/leon3-ztex-ufm-115/ahb2mig_ztex.vhd +++ b/designs/leon3-ztex-ufm-115/ahb2mig_ztex.vhd @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 @@ -351,7 +351,6 @@ begin ahbso.hirq <= (others => '0'); ahbso.hindex <= hindex; ahbso.hsplit <= (others => '0'); - ahbso.hcache <= '1'; apbo.pirq <= (others => '0'); apbo.pindex <= pindex; diff --git a/designs/leon3-ztex-ufm-115/ahbrom.vhd b/designs/leon3-ztex-ufm-115/ahbrom.vhd index 4c4156c8..181cdb27 100644 --- a/designs/leon3-ztex-ufm-115/ahbrom.vhd +++ b/designs/leon3-ztex-ufm-115/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3-ztex-ufm-115/config.help b/designs/leon3-ztex-ufm-115/config.help index 69a6cafa..260eb3d2 100644 --- a/designs/leon3-ztex-ufm-115/config.help +++ b/designs/leon3-ztex-ufm-115/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3-ztex-ufm-115/lconfig.tk b/designs/leon3-ztex-ufm-115/lconfig.tk index 00cef9f9..f243e813 100755 --- a/designs/leon3-ztex-ufm-115/lconfig.tk +++ b/designs/leon3-ztex-ufm-115/lconfig.tk @@ -751,7 +751,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -761,7 +762,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -904,8 +907,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -924,6 +929,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1126,9 +1135,10 @@ proc menu3 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_3 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_3 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_3 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_3 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_3 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_3 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 3 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 3 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 3 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1182,10 +1192,11 @@ proc update_menu3 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x2.l configure -state normal; } else {.menu3.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu3.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x2.l configure -state normal; } else {.menu3.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu3.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x3.l configure -state normal; } else {.menu3.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1231,14 +1242,16 @@ proc update_define_menu3 {} { if {$tmpvar_3 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_3 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_3 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_3 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_3 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1311,13 +1324,21 @@ proc menu4 {w title} { bool $w.config.f 4 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 4 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 4 2 "Integer unit " 5 - submenu $w.config.f 4 3 "Floating-point unit" 6 - submenu $w.config.f 4 4 "Cache system" 7 - submenu $w.config.f 4 5 "MMU" 8 - submenu $w.config.f 4 6 "Debug Support Unit " 9 - submenu $w.config.f 4 7 "Fault-tolerance " 10 - submenu $w.config.f 4 8 "VHDL debug settings " 11 + global tmpvar_4 + minimenu $w.config.f 4 2 "Force values from example configuration (see help)" tmpvar_4 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_4 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_4 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_4 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_4 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 4 3 "Integer unit " 5 + submenu $w.config.f 4 4 "Floating-point unit" 6 + submenu $w.config.f 4 5 "Cache system" 7 + submenu $w.config.f 4 6 "MMU" 8 + submenu $w.config.f 4 7 "Debug Support Unit " 9 + submenu $w.config.f 4 8 "Fault-tolerance " 10 + submenu $w.config.f 4 9 "VHDL debug settings " 11 @@ -1357,22 +1378,290 @@ proc update_menu4 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x1.l configure -state normal; } else {.menu4.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x2 normal {m}} else {configure_entry .menu4.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x3 normal {m}} else {configure_entry .menu4.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x4 normal {m}} else {configure_entry .menu4.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x5 normal {m}} else {configure_entry .menu4.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x6 normal {m}} else {configure_entry .menu4.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x7 normal {m}} else {configure_entry .menu4.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x3 normal {m}} else {configure_entry .menu4.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x4 normal {m}} else {configure_entry .menu4.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x5 normal {m}} else {configure_entry .menu4.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x6 normal {m}} else {configure_entry .menu4.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu4.config.f.x7 normal {m}} else {configure_entry .menu4.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x8 normal {m}} else {configure_entry .menu4.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu4.config.f.x9 normal {m}} else {configure_entry .menu4.config.f.x9 disabled {m}} } proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_4 + global CONFIG_LEON3_MIN + if {$tmpvar_4 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_4 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_4 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_4 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1429,21 +1718,21 @@ proc menu5 {w title} { int $w.config.f 5 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 5 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_4 - minimenu $w.config.f 5 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_5 + minimenu $w.config.f 5 2 "Hardware multiplier latency" tmpvar_5 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_5 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_5 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_5 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 5 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_5 - minimenu $w.config.f 5 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED + global tmpvar_6 + minimenu $w.config.f 5 4 "Multipler structure " tmpvar_6 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_6 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_6 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 5 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 5 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1490,36 +1779,37 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x0.l configure -state normal; } else {.menu5.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x0.l configure -state normal; } else {.menu5.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x1 normal {n l y}} else {configure_entry .menu5.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu5.config.f.x3 normal {n l y}} else {configure_entry .menu5.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu5.config.f.x4 normal {x l}} else {configure_entry .menu5.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x5 normal {n l y}} else {configure_entry .menu5.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x6 normal {n l y}} else {configure_entry .menu5.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x7 normal {n l y}} else {configure_entry .menu5.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x8.l configure -state normal; } else {.menu5.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x8.l configure -state normal; } else {.menu5.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x9.l configure -state normal; } else {.menu5.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x9.l configure -state normal; } else {.menu5.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x10 normal {n l y}} else {configure_entry .menu5.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu5.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x11.l configure -state normal; } else {.menu5.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu5.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu5.config.f.x11.l configure -state normal; } else {.menu5.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu5.config.f.x11.l configure -state disabled} } @@ -1527,48 +1817,49 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_5 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_5 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_5 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_6 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_6 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_6 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_6 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1624,27 +1915,27 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_6 - minimenu $w.config.f 6 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU + global tmpvar_7 + minimenu $w.config.f 6 1 "FPU core" tmpvar_7 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_7 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_7 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_7 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_7 - minimenu $w.config.f 6 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_8 + minimenu $w.config.f 6 2 "GRFPU multiplier" tmpvar_8 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_8 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_8 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_8 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_8 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_8 - minimenu $w.config.f 6 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 + global tmpvar_9 + minimenu $w.config.f 6 3 "GRFPU-LITE controller" tmpvar_9 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_9 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_9 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_9 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 6 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1685,16 +1976,17 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu6.config.f.x4 normal {n l y}} else {configure_entry .menu6.config.f.x4 disabled {y n l}} } @@ -1703,34 +1995,35 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_6 + global tmpvar_7 global CONFIG_FPU_GRFPU - if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_7 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_7 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_7 + if {$tmpvar_7 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_8 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_8 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_8 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_8 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_8 + if {$tmpvar_8 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_9 global CONFIG_FPU_GRFPC0 - if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_9 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_9 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_9 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1787,92 +2080,92 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_9 - minimenu $w.config.f 7 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 + global tmpvar_10 + minimenu $w.config.f 7 1 "Associativity (sets) " tmpvar_10 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_10 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_10 - minimenu $w.config.f 7 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 + global tmpvar_11 + minimenu $w.config.f 7 2 "Way size (kbytes/way)" tmpvar_11 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_11 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_11 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_11 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_11 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_11 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_11 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_11 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_11 - minimenu $w.config.f 7 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 + global tmpvar_12 + minimenu $w.config.f 7 3 "Line size (bytes/line)" tmpvar_12 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_12 - minimenu $w.config.f 7 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND + global tmpvar_13 + minimenu $w.config.f 7 4 "Replacement alorithm" tmpvar_13 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_13 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_13 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_13 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_13 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 7 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 7 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_13 - minimenu $w.config.f 7 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_14 + minimenu $w.config.f 7 7 "Local data RAM size (kbytes)" tmpvar_14 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 7 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 7 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_14 - minimenu $w.config.f 7 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 + global tmpvar_15 + minimenu $w.config.f 7 10 "Associativity (sets)" tmpvar_15 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_15 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_15 - minimenu $w.config.f 7 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 + global tmpvar_16 + minimenu $w.config.f 7 11 "Set size (kbytes/set)" tmpvar_16 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_16 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_16 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_16 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_16 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_16 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_16 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_16 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_16 - minimenu $w.config.f 7 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 + global tmpvar_17 + minimenu $w.config.f 7 12 "Line size (bytes/line)" tmpvar_17 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_17 - minimenu $w.config.f 7 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND + global tmpvar_18 + minimenu $w.config.f 7 13 "Replacement alorithm" tmpvar_18 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_18 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_18 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_18 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_18 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 7 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 7 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1880,18 +2173,18 @@ proc menu7 {w title} { bool $w.config.f 7 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 7 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 7 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_18 - minimenu $w.config.f 7 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_19 + minimenu $w.config.f 7 20 "Local data RAM size (kbytes)" tmpvar_19 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_19 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_19 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_19 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_19 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_19 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_19 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_19 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_19 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_19 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 7 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1932,52 +2225,53 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu7.config.f.x6 normal {n l y}} else {configure_entry .menu7.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x7 normal {x l}} else {configure_entry .menu7.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x7 normal {x l}} else {configure_entry .menu7.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu7.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x8.l configure -state normal; } else {.menu7.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu7.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x8.l configure -state normal; } else {.menu7.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x9 normal {n l y}} else {configure_entry .menu7.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x10 normal {x l}} else {configure_entry .menu7.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x11 normal {x l}} else {configure_entry .menu7.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x12 normal {x l}} else {configure_entry .menu7.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x10 normal {x l}} else {configure_entry .menu7.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x11 normal {x l}} else {configure_entry .menu7.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu7.config.f.x12 normal {x l}} else {configure_entry .menu7.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x13 normal {x l}} else {configure_entry .menu7.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu7.config.f.x13 normal {x l}} else {configure_entry .menu7.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu7.config.f.x14 normal {n l y}} else {configure_entry .menu7.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu7.config.f.x15 normal {n l y}} else {configure_entry .menu7.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu7.config.f.x16 normal {n l y}} else {configure_entry .menu7.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu7.config.f.x17 normal {n l y}} else {configure_entry .menu7.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu7.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x18.l configure -state normal; } else {.menu7.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu7.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x18.l configure -state normal; } else {.menu7.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu7.config.f.x19 normal {n l y}} else {configure_entry .menu7.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x20 normal {x l}} else {configure_entry .menu7.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu7.config.f.x20 normal {x l}} else {configure_entry .menu7.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu7.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x21.l configure -state normal; } else {.menu7.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu7.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu7.config.f.x21.l configure -state normal; } else {.menu7.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu7.config.f.x21.l configure -state disabled} } @@ -1985,162 +2279,163 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_9 + global tmpvar_10 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_10 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_10 + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_11 global CONFIG_ICACHE_SZ1 - if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_11 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_11 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_11 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_11 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_11 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_11 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_11 + if {$tmpvar_11 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_12 global CONFIG_ICACHE_LZ16 - if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_12 + if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_13 global CONFIG_ICACHE_ALGORND - if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_13 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_13 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_13 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_13 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_14 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_14 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_14 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_14 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_14 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_14 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_14 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_14 + global tmpvar_15 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_15 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_15 + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_16 global CONFIG_DCACHE_SZ1 - if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_16 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_16 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_16 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_16 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_16 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_16 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_16 + if {$tmpvar_16 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_17 global CONFIG_DCACHE_LZ16 - if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_17 + if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_18 global CONFIG_DCACHE_ALGORND - if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_18 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_18 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_18 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_18 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_19 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_19 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_19 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_19 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_19 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_19 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_19 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_19 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_19 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2196,45 +2491,47 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_19 - minimenu $w.config.f 8 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED + global tmpvar_20 + minimenu $w.config.f 8 1 "MMU type " tmpvar_20 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_20 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_20 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 8 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY + global tmpvar_21 + minimenu $w.config.f 8 2 "TLB replacement sheme " tmpvar_21 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_21 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_21 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_21 - minimenu $w.config.f 8 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_22 - minimenu $w.config.f 8 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 + minimenu $w.config.f 8 3 "Instruction (or combined) TLB entries" tmpvar_22 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_23 + minimenu $w.config.f 8 4 "Data TLB entries" tmpvar_23 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_23 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_23 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 8 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_23 - minimenu $w.config.f 8 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K + global tmpvar_24 + minimenu $w.config.f 8 6 "MMU page size" tmpvar_24 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_24 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_24 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_24 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_24 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_24 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2274,18 +2571,19 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x1 normal {x l}} else {configure_entry .menu8.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x3 normal {x l}} else {configure_entry .menu8.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x1 normal {x l}} else {configure_entry .menu8.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x3 normal {x l}} else {configure_entry .menu8.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu8.config.f.x5 normal {n l y}} else {configure_entry .menu8.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x6 normal {x l}} else {configure_entry .menu8.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu8.config.f.x6 normal {x l}} else {configure_entry .menu8.config.f.x6 disabled {x l}} } @@ -2293,55 +2591,60 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_19 + global tmpvar_20 global CONFIG_MMU_COMBINED - if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_20 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_20 + if {$tmpvar_20 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_21 global CONFIG_MMU_REPARRAY - if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_21 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_21 + if {$tmpvar_21 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_22 global CONFIG_MMU_I2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_22 + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_23 global CONFIG_MMU_D2 - if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_23 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_23 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_23 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_23 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_23 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_23 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_MMU_PAGE_4K - if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_24 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_24 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_24 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_24 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_24 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2398,24 +2701,24 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 9 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_24 - minimenu $w.config.f 9 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 + global tmpvar_25 + minimenu $w.config.f 9 2 "Instruction trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 9 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_25 - minimenu $w.config.f 9 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 + global tmpvar_26 + minimenu $w.config.f 9 4 "AHB trace buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2455,17 +2758,18 @@ proc menu9 {w title} { proc update_menu9 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu9.config.f.x1 normal {n l y}} else {configure_entry .menu9.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu9.config.f.x4 normal {x l}} else {configure_entry .menu9.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu9.config.f.x4 normal {x l}} else {configure_entry .menu9.config.f.x4 disabled {x l}} } @@ -2473,37 +2777,38 @@ proc update_define_menu9 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2559,16 +2864,23 @@ proc menu10 {w title} { bool $w.config.f 10 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_26 - minimenu $w.config.f 10 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE + global tmpvar_27 + minimenu $w.config.f 10 1 "IU Register file protection " tmpvar_27 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_27 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 10 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_28 + minimenu $w.config.f 10 2 "FPU Register file protection " tmpvar_28 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_28 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_28 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_28 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_28 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 10 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 10 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 10 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2616,9 +2928,7 @@ proc update_menu10 {} { configure_entry .menu10.config.f.x0 normal {n l y}} else {configure_entry .menu10.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu10.config.f.x1 normal {x l}} else {configure_entry .menu10.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu10.config.f.x2 normal {n l y}} else {configure_entry .menu10.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu10.config.f.x2 normal {x l}} else {configure_entry .menu10.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu10.config.f.x3 normal {n l y}} else {configure_entry .menu10.config.f.x3 disabled {y n l}} @@ -2640,21 +2950,26 @@ proc update_define_menu10 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_26 + global tmpvar_27 global CONFIG_IUFT_NONE - if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_27 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_27 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_27 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_27 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_27 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_28 + global CONFIG_FPUFT_NONE + if {$tmpvar_28 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_28 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_28 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_28 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -3287,16 +3602,16 @@ proc menu16 {w title} { hex $w.config.f 16 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 16 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 16 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_27 - minimenu $w.config.f 16 4 "AHB RAM size (Kbyte)" tmpvar_27 CONFIG_AHBRAM_SZ1 + global tmpvar_29 + minimenu $w.config.f 16 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_27 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_27 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_27 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_27 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 16 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3358,21 +3673,21 @@ proc update_define_menu16 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_27 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_27 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_27 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_27 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_27 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_27 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_27 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3431,15 +3746,15 @@ proc menu17 {w title} { bool $w.config.f 17 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_28 - minimenu $w.config.f 17 1 "UART1 FIFO depth" tmpvar_28 CONFIG_UA1_FIFO1 + global tmpvar_30 + minimenu $w.config.f 17 1 "UART1 FIFO depth" tmpvar_30 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_30 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_30 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 17 2 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 17 3 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -3528,19 +3843,19 @@ proc update_menu17 {} { proc update_define_menu17 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_28 + global tmpvar_30 global CONFIG_UA1_FIFO1 - if {$tmpvar_28 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_30 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_28 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_30 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_28 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_30 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_28 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_30 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_28 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_30 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_28 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + if {$tmpvar_30 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -3634,12 +3949,12 @@ proc menu18 {w title} { bool $w.config.f 18 8 "Support three-wire mode " CONFIG_SPICTRL_TWEN int $w.config.f 18 9 "Maximum supported word length (see help!) " CONFIG_SPICTRL_MAXWLEN bool $w.config.f 18 10 "Use SYNCRAM for rx and tx queues " CONFIG_SPICTRL_SYNCRAM - global tmpvar_29 - minimenu $w.config.f 18 11 "Fault-tolerance" tmpvar_29 CONFIG_SPICTRL_NOFT + global tmpvar_31 + minimenu $w.config.f 18 11 "Fault-tolerance" tmpvar_31 CONFIG_SPICTRL_NOFT menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Fault-tolerance\"" - $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_29 -value "None" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_29 -value "Parity-DMR" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_29 -value "TMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "None" -variable tmpvar_31 -value "None" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "Parity-DMR" -variable tmpvar_31 -value "Parity-DMR" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "TMR" -variable tmpvar_31 -value "TMR" -command "update_active" menusplit $w $w.config.f.x11.x.menu 3 @@ -3739,13 +4054,13 @@ proc update_define_menu18 {} { global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then { set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM&15]} else {set CONFIG_SPICTRL_SYNCRAM [expr $CONFIG_SPICTRL_SYNCRAM|16]} - global tmpvar_29 + global tmpvar_31 global CONFIG_SPICTRL_NOFT - if {$tmpvar_29 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} + if {$tmpvar_31 == "None"} then {set CONFIG_SPICTRL_NOFT 1} else {set CONFIG_SPICTRL_NOFT 0} global CONFIG_SPICTRL_DMRFT - if {$tmpvar_29 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} + if {$tmpvar_31 == "Parity-DMR"} then {set CONFIG_SPICTRL_DMRFT 1} else {set CONFIG_SPICTRL_DMRFT 0} global CONFIG_SPICTRL_TMRFT - if {$tmpvar_29 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} + if {$tmpvar_31 == "TMR"} then {set CONFIG_SPICTRL_TMRFT 1} else {set CONFIG_SPICTRL_TMRFT 0} } @@ -3887,7 +4202,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -3897,6 +4213,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -3926,6 +4244,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -3938,14 +4257,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_4 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -3958,27 +4282,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -3988,17 +4312,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4010,12 +4334,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -4025,10 +4349,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -4039,7 +4363,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -4051,26 +4375,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_21 "(not set)" +set tmpvar_22 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_22 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_23 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -4078,27 +4404,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_26 "(not set)" +set tmpvar_27 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_28 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -4128,7 +4458,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -4138,7 +4468,7 @@ set CONFIG_AHBRAM_SZ32 0 set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_UART1_ENABLE 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -4170,7 +4500,7 @@ set CONFIG_SPICTRL_ODMODE 0 set CONFIG_SPICTRL_TWEN 0 set CONFIG_SPICTRL_MAXWLEN 0 set CONFIG_SPICTRL_SYNCRAM 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_SPICTRL_NOFT 0 set CONFIG_SPICTRL_DMRFT 0 set CONFIG_SPICTRL_TMRFT 0 @@ -4230,7 +4560,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -4240,6 +4571,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -4285,6 +4618,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_3 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_3 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_3 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_3 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_3 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -4297,9 +4631,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -4313,239 +4648,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_4 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_4 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_4 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_4 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_4 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_5 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_5 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_6 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_6 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_6 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_7 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_7 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_7 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_7 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_8 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_8 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_8 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_9 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_9 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_9 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_9 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_10 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_11 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_11 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_11 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_11 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_11 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_11 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_11 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_12 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_13 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_13 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_13 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_15 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_16 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_16 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_16 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_16 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_16 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_16 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_16 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_17 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_18 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_18 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_18 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_19 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_19 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_19 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_19 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_19 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_19 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_19 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_19 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_19 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_20 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_21 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_21 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_22 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_23 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_23 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_24 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_24 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_24 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_24 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_24 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_25 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_26 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_26 + global tmpvar_27 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_28 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_28 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_28 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_28 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_28 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -4610,28 +5095,28 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_27 + global tmpvar_29 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_27 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_27 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_27 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_27 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_28 + global tmpvar_30 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_30 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_30 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -4683,11 +5168,11 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPICTRL_MAXWLEN $CONFIG_SPICTRL_MAXWLEN $notmod } global CONFIG_SPICTRL_SYNCRAM if {($CONFIG_SPICTRL_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPICTRL_SYNCRAM $CONFIG_SPICTRL_SYNCRAM [list $notmod] 2 } - global tmpvar_29 + global tmpvar_31 if {($CONFIG_SPICTRL_ENABLE == 1) && ($CONFIG_SPICTRL_SYNCRAM == 1)} then { - if { $tmpvar_29 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } - if { $tmpvar_29 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } - if { $tmpvar_29 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} + if { $tmpvar_31 == "None" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_NOFT 0 [list $notmod] 2 } + if { $tmpvar_31 == "Parity-DMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_DMRFT 0 [list $notmod] 2 } + if { $tmpvar_31 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPICTRL_TMRFT 0 [list $notmod] 2 }} write_comment $cfg $autocfg "VHDL Debugging " global CONFIG_DEBUG_UART write_tristate $cfg $autocfg CONFIG_DEBUG_UART $CONFIG_DEBUG_UART [list $notmod] 2 @@ -4732,7 +5217,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -4742,6 +5228,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -4764,8 +5252,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -4848,11 +5341,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -4873,6 +5368,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 global CONFIG_AHBRAM_SZ2; set CONFIG_AHBRAM_SZ2 0 global CONFIG_AHBRAM_SZ4; set CONFIG_AHBRAM_SZ4 0 @@ -4965,8 +5464,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -4985,6 +5486,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -5035,308 +5540,334 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_3 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_3 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_3 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_3 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_3 "Xilinx-DCM" } global tmpvar_4 - set tmpvar_4 "5-cycles" + set tmpvar_4 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_4 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_4 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_4 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_4 "Custom-configuration" } + global tmpvar_5 + set tmpvar_5 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_5 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_5 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } - global tmpvar_5 - set tmpvar_5 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_5 "5-cycles" } + global tmpvar_6 + set tmpvar_6 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_6 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_6 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } - global tmpvar_6 - set tmpvar_6 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_6 "Designware" } + global tmpvar_7 + set tmpvar_7 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_7 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_7 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } - global tmpvar_7 - set tmpvar_7 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_7 "Meiko" } + global tmpvar_8 + set tmpvar_8 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_8 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_8 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_8 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } - global tmpvar_8 - set tmpvar_8 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_8 "TechSpec" } + global tmpvar_9 + set tmpvar_9 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_9 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_9 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } - global tmpvar_9 - set tmpvar_9 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_9 "Non-blocking" } + global tmpvar_10 + set tmpvar_10 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_10 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } - global tmpvar_10 - set tmpvar_10 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_10 "4" } + global tmpvar_11 + set tmpvar_11 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_11 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_11 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_11 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_11 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_11 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_11 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_11 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } - global tmpvar_11 - set tmpvar_11 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_11 "256" } + global tmpvar_12 + set tmpvar_12 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_12 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } - global tmpvar_12 - set tmpvar_12 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_12 "32" } + global tmpvar_13 + set tmpvar_13 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_13 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_13 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_13 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } - global tmpvar_13 - set tmpvar_13 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_13 "LRU" } + global tmpvar_14 + set tmpvar_14 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_14 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_14 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_14 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_14 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_14 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_14 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_14 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_14 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } - global tmpvar_14 - set tmpvar_14 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_14 "256" } + global tmpvar_15 + set tmpvar_15 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_15 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } - global tmpvar_15 - set tmpvar_15 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_15 "4" } + global tmpvar_16 + set tmpvar_16 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_16 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_16 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_16 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_16 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_16 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_16 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_16 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } - global tmpvar_16 - set tmpvar_16 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_16 "256" } + global tmpvar_17 + set tmpvar_17 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_17 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } - global tmpvar_17 - set tmpvar_17 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_17 "32" } + global tmpvar_18 + set tmpvar_18 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_18 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_18 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_18 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } - global tmpvar_18 - set tmpvar_18 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_18 "LRU" } + global tmpvar_19 + set tmpvar_19 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_19 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_19 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_19 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_19 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_19 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_19 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_19 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_19 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } - global tmpvar_19 - set tmpvar_19 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_19 "256" } + global tmpvar_20 + set tmpvar_20 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_20 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } - global tmpvar_20 - set tmpvar_20 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_20 "split" } + global tmpvar_21 + set tmpvar_21 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_21 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_21 "Increment" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_23 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_23 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_23 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_23 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } - global tmpvar_23 - set tmpvar_23 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_23 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_23 "64" } + global tmpvar_24 + set tmpvar_24 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_24 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_24 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_24 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_24 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_24 "Programmable" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_26 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_26 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_26 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_26 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } - global tmpvar_26 - set tmpvar_26 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_26 "16" } + global tmpvar_27 + set tmpvar_27 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_27 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_27 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_27 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } - global tmpvar_27 - set tmpvar_27 "4" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_28 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_28 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_28 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_28 "TMR" } + global tmpvar_29 + set tmpvar_29 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_27 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_27 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_27 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_27 "64" } - global tmpvar_28 - set tmpvar_28 "1" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } + global tmpvar_30 + set tmpvar_30 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_28 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_30 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_28 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_30 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_28 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_30 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_30 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_30 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_28 "32" } - global tmpvar_29 - set tmpvar_29 "None" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_30 "32" } + global tmpvar_31 + set tmpvar_31 "None" global CONFIG_SPICTRL_NOFT - if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_29 "None" } + if { $CONFIG_SPICTRL_NOFT == 1 } then { set tmpvar_31 "None" } global CONFIG_SPICTRL_DMRFT - if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_29 "Parity-DMR" } + if { $CONFIG_SPICTRL_DMRFT == 1 } then { set tmpvar_31 "Parity-DMR" } global CONFIG_SPICTRL_TMRFT - if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_29 "TMR" } + if { $CONFIG_SPICTRL_TMRFT == 1 } then { set tmpvar_31 "TMR" } } diff --git a/designs/leon3-ztex-ufm-115/leon3mp.ucf b/designs/leon3-ztex-ufm-115/leon3mp.ucf index 54f0daea..91f8d54a 100644 --- a/designs/leon3-ztex-ufm-115/leon3mp.ucf +++ b/designs/leon3-ztex-ufm-115/leon3mp.ucf @@ -30,9 +30,13 @@ NET "dsuact" IOSTANDARD=LVTTL; ##### DDR SDRAM -#NET "*/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL" TIG; -NET "*/memc3_wrapper_inst/memc3_mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG; -NET "*/c3_pll_lock" TIG; +# --- MIG37 --- +NET "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG; +NET "mig_gen.ddrc/MCB_inst/c?_pll_lock" TIG; +NET "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/CKE_Train" TIG; ## This path exists for DDR2 only + +# --- MIG39 --- +INST "mig_gen.ddrc/MCB_inst/memc?_wrapper_inst/memc?_mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL*" TIG; CONFIG VCCAUX=2.5; # Valid values are 2.5 and 3.3 #CONFIG MCB_PERFORMANCE= STANDARD; diff --git a/designs/leon3-ztex-ufm-115/leon3mp.vhd b/designs/leon3-ztex-ufm-115/leon3mp.vhd index df46e2e1..1dc4efcc 100644 --- a/designs/leon3-ztex-ufm-115/leon3mp.vhd +++ b/designs/leon3-ztex-ufm-115/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-ztex-ufm-115/mcb_soft_calibration_patch.txt b/designs/leon3-ztex-ufm-115/mcb_soft_calibration_patch.txt new file mode 100644 index 00000000..ef221fad --- /dev/null +++ b/designs/leon3-ztex-ufm-115/mcb_soft_calibration_patch.txt @@ -0,0 +1,1049 @@ +--- ./mig39/mig_39//user_design/rtl/mcb_soft_calibration.vhd 2013-01-15 15:13:18.000000000 +0100 ++++ ./p/a/t/c/h/mig39/mig_39//user_design/rtl/mcb_soft_calibration.vhd 2013-01-15 15:19:15.608793398 +0100 +@@ -94,15 +94,7 @@ + -- 3.7: 04/26/10: Added DDR2 Initialization fix to meet 400 ns wait as outlined in step d) of JEDEC DDR2 spec . + -- 3.8: 05/05/10: Added fixes for the CR# 559092 (updated Mult_Divide function) and 555416 (added IOB attribute to DONE_SOFTANDHARD_CAL). + -- 3.9: 05/24/10: Added 200us Wait logic to control CKE_Train. The 200us Wait counter assumes UI_CLK freq not higher than 100 MHz. +--- 3.10 10/22/10: Fixed PERFORM_START_DYN_CAL_AFTER_SELFREFRESH logic. +--- 3.11 2/14/11: Apply a different skkew for the P and N inputs for the differential LDQS and UDQS signals to provide more noise immunity. +--- 4.1 03/08/12: Fixed SELFREFRESH_MCB_REQ logic. It should not need depend on the SM STATE so that +--- MCB can come out of selfresh mode. SM requires refresh cycle to update the DQS value. +--- 4.2 05/10/12: All P/N terms of input and bidir memory pins are initialized with value of ZERO. TZQINIT_MAXCNT +--- are set to 8 for LPDDR,DDR and DDR2 interface . +--- Keep the UICMDEN in assertion state when SM is in RST_DELAY state so that MCB will not start doing +--- Premable detection until the second deassertion of MCB_SYSRST. +- ++-- 3.10 10/22/10: Fixed PERFORM_START_DYN_CAL_AFTER_SELFREFRESH logic. + + -- End Revision + --********************************************************************************** +@@ -157,17 +149,17 @@ + MCB_UIADDR : out std_logic_vector(4 downto 0) := "00000"; -- to MCB's UIADDR port (gets passed to IODRP2_MCB's AUXADDR port + MCB_UICMDEN : out std_logic := '1'; -- set to 1 to take control of UI interface - removes control from internal calib block + MCB_UIDONECAL : out std_logic := '0'; -- set to 0 to "tell" controller that it's still in a calibrate state +- MCB_UIDQLOWERDEC : out std_logic ; +- MCB_UIDQLOWERINC : out std_logic ; +- MCB_UIDQUPPERDEC : out std_logic ; +- MCB_UIDQUPPERINC : out std_logic ; ++ MCB_UIDQLOWERDEC : out std_logic := '0'; ++ MCB_UIDQLOWERINC : out std_logic := '0'; ++ MCB_UIDQUPPERDEC : out std_logic := '0'; ++ MCB_UIDQUPPERINC : out std_logic := '0'; + MCB_UILDQSDEC : out std_logic := '0'; + MCB_UILDQSINC : out std_logic := '0'; + MCB_UIREAD : out std_logic; -- enables read w/o writing by turning on a SDO->SDI loopback inside the IODRP2_MCBs (doesn't exist in + -- regular IODRP2). IODRPCTRLR_R_WB becomes don't-care. + MCB_UIUDQSDEC : out std_logic := '0'; + MCB_UIUDQSINC : out std_logic := '0'; +- MCB_RECAL : out std_logic ; -- future hook to drive MCB's RECAL pin - initiates a hard re-calibration sequence when high ++ MCB_RECAL : out std_logic := '0'; -- future hook to drive MCB's RECAL pin - initiates a hard re-calibration sequence when high + MCB_UICMD : out std_logic; + MCB_UICMDIN : out std_logic; + MCB_UIDQCOUNT : out std_logic_vector(3 downto 0); +@@ -234,50 +226,31 @@ + constant WAIT5 : std_logic_vector(5 downto 0) := "001111"; + constant BROADCAST_NTERM : std_logic_vector(5 downto 0) := "010000"; + constant WAIT6 : std_logic_vector(5 downto 0) := "010001"; +- +- constant LDQS_CLK_WRITE_P_TERM : std_logic_vector(5 downto 0) := "010010"; +- constant LDQS_CLK_P_TERM_WAIT : std_logic_vector(5 downto 0) := "010011"; +- constant LDQS_CLK_WRITE_N_TERM : std_logic_vector(5 downto 0) := "010100"; +- constant LDQS_CLK_N_TERM_WAIT : std_logic_vector(5 downto 0) := "010101"; +- constant LDQS_PIN_WRITE_P_TERM : std_logic_vector(5 downto 0) := "010110"; +- constant LDQS_PIN_P_TERM_WAIT : std_logic_vector(5 downto 0) := "010111"; +- constant LDQS_PIN_WRITE_N_TERM : std_logic_vector(5 downto 0) := "011000"; +- constant LDQS_PIN_N_TERM_WAIT : std_logic_vector(5 downto 0) := "011001"; +- constant UDQS_CLK_WRITE_P_TERM : std_logic_vector(5 downto 0) := "011010"; +- constant UDQS_CLK_P_TERM_WAIT : std_logic_vector(5 downto 0) := "011011"; +- constant UDQS_CLK_WRITE_N_TERM : std_logic_vector(5 downto 0) := "011100"; +- constant UDQS_CLK_N_TERM_WAIT : std_logic_vector(5 downto 0) := "011101"; +- constant UDQS_PIN_WRITE_P_TERM : std_logic_vector(5 downto 0) := "011110"; +- constant UDQS_PIN_P_TERM_WAIT : std_logic_vector(5 downto 0) := "011111"; +- constant UDQS_PIN_WRITE_N_TERM : std_logic_vector(5 downto 0) := "100000"; +- constant UDQS_PIN_N_TERM_WAIT : std_logic_vector(5 downto 0) := "100001"; +- +- constant OFF_RZQ_PTERM : std_logic_vector(5 downto 0) := "100010"; +- constant WAIT7 : std_logic_vector(5 downto 0) := "100011"; +- constant OFF_ZIO_NTERM : std_logic_vector(5 downto 0) := "100100"; +- constant WAIT8 : std_logic_vector(5 downto 0) := "100101"; +- constant RST_DELAY : std_logic_vector(5 downto 0) := "100110"; +- constant START_DYN_CAL_PRE : std_logic_vector(5 downto 0) := "100111"; +- constant WAIT_FOR_UODONE : std_logic_vector(5 downto 0) := "101000"; +- constant LDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "101001"; +- constant LDQS_WAIT1 : std_logic_vector(5 downto 0) := "101010"; +- constant LDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "101011"; +- constant LDQS_WAIT2 : std_logic_vector(5 downto 0) := "101100"; +- constant UDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "101101"; +- constant UDQS_WAIT1 : std_logic_vector(5 downto 0) := "101110"; +- constant UDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "101111"; +- constant UDQS_WAIT2 : std_logic_vector(5 downto 0) := "110000"; +- constant START_DYN_CAL : std_logic_vector(5 downto 0) := "110001"; +- constant WRITE_CALIBRATE : std_logic_vector(5 downto 0) := "110010"; +- constant WAIT9 : std_logic_vector(5 downto 0) := "110011"; +- constant READ_MAX_VALUE : std_logic_vector(5 downto 0) := "110100"; +- constant WAIT10 : std_logic_vector(5 downto 0) := "110101"; +- constant ANALYZE_MAX_VALUE : std_logic_vector(5 downto 0) := "110110"; +- constant FIRST_DYN_CAL : std_logic_vector(5 downto 0) := "110111"; +- constant INCREMENT : std_logic_vector(5 downto 0) := "111000"; +- constant DECREMENT : std_logic_vector(5 downto 0) := "111001"; +- constant DONE : std_logic_vector(5 downto 0) := "111010"; +- --constant INCREMENT_TA : std_logic_vector(5 downto 0) := "111011"; ++ constant OFF_RZQ_PTERM : std_logic_vector(5 downto 0) := "010010"; ++ constant WAIT7 : std_logic_vector(5 downto 0) := "010011"; ++ constant OFF_ZIO_NTERM : std_logic_vector(5 downto 0) := "010100"; ++ constant WAIT8 : std_logic_vector(5 downto 0) := "010101"; ++ constant RST_DELAY : std_logic_vector(5 downto 0) := "010110"; ++ constant START_DYN_CAL_PRE : std_logic_vector(5 downto 0) := "010111"; ++ constant WAIT_FOR_UODONE : std_logic_vector(5 downto 0) := "011000"; ++ constant LDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "011001"; ++ constant LDQS_WAIT1 : std_logic_vector(5 downto 0) := "011010"; ++ constant LDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "011011"; ++ constant LDQS_WAIT2 : std_logic_vector(5 downto 0) := "011100"; ++ constant UDQS_WRITE_POS_INDELAY : std_logic_vector(5 downto 0) := "011101"; ++ constant UDQS_WAIT1 : std_logic_vector(5 downto 0) := "011110"; ++ constant UDQS_WRITE_NEG_INDELAY : std_logic_vector(5 downto 0) := "011111"; ++ constant UDQS_WAIT2 : std_logic_vector(5 downto 0) := "100000"; ++ constant START_DYN_CAL : std_logic_vector(5 downto 0) := "100001"; ++ constant WRITE_CALIBRATE : std_logic_vector(5 downto 0) := "100010"; ++ constant WAIT9 : std_logic_vector(5 downto 0) := "100011"; ++ constant READ_MAX_VALUE : std_logic_vector(5 downto 0) := "100100"; ++ constant WAIT10 : std_logic_vector(5 downto 0) := "100101"; ++ constant ANALYZE_MAX_VALUE : std_logic_vector(5 downto 0) := "100110"; ++ constant FIRST_DYN_CAL : std_logic_vector(5 downto 0) := "100111"; ++ constant INCREMENT : std_logic_vector(5 downto 0) := "101000"; ++ constant DECREMENT : std_logic_vector(5 downto 0) := "101001"; ++ constant DONE : std_logic_vector(5 downto 0) := "101010"; + + constant RZQ : std_logic_vector(1 downto 0) := "00"; + constant ZIO : std_logic_vector(1 downto 0) := "01"; +@@ -315,12 +288,10 @@ + constant DIV : integer := 4; + + constant PNSKEW : std_logic := '1'; -- Default is 1'b1. Change to 1'b0 if PSKEW and NSKEW are not required +- constant PNSKEWDQS : std_logic := '1'; +- +- constant MULT_S : integer := 9; +- constant DIV_S : integer := 8; +- constant MULT_W : integer := 7; +- constant DIV_W : integer := 8; ++ constant PSKEW_MULT : integer := 9; ++ constant PSKEW_DIV : integer := 8; ++ constant NSKEW_MULT : integer := 7; ++ constant NSKEW_DIV : integer := 8; + + constant DQS_NUMERATOR : integer := 3; + constant DQS_DENOMINATOR : integer := 8; +@@ -329,23 +300,11 @@ + -- 3 for three eighths + + constant RST_CNT : std_logic_vector(9 downto 0) := "0000010000"; ++ constant TZQINIT_MAXCNT : std_logic_vector(9 downto 0) := C_MEM_TZQINIT_MAXCNT + RST_CNT; + + constant IN_TERM_PASS : std_logic := '0'; + constant DYN_CAL_PASS : std_logic := '1'; + +- function TZQINIT_MAXCNT_W return std_logic_vector is +- variable temp : std_logic_vector(9 downto 0) := (others=>'0'); +- begin +- if (C_MEM_TYPE = "DDR3") then +- temp := C_MEM_TZQINIT_MAXCNT + RST_CNT; +- else +- temp := 8 + RST_CNT; +- end if; +- return temp(9 downto 0); +- end function; +- +- constant TZQINIT_MAXCNT : std_logic_vector(9 downto 0) := TZQINIT_MAXCNT_W; +- + component iodrp_mcb_controller is + port ( + memcell_address : in std_logic_vector(7 downto 0); +@@ -387,15 +346,11 @@ + end component; + + signal P_Term : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term : std_logic_vector(6 downto 0) := "0000000"; +- signal P_Term_s : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term_s : std_logic_vector(6 downto 0) := "0000000"; +- signal P_Term_w : std_logic_vector(5 downto 0) := "000000"; +- signal N_Term_w : std_logic_vector(6 downto 0) := "0000000"; ++ signal N_Term : std_logic_vector(6 downto 0) := "0000000"; + signal P_Term_Prev : std_logic_vector(5 downto 0) := "000000"; + signal N_Term_Prev : std_logic_vector(6 downto 0) := "0000000"; + +- signal STATE : std_logic_vector(5 downto 0); ++ signal STATE : std_logic_vector(5 downto 0) := START; + signal IODRPCTRLR_MEMCELL_ADDR : std_logic_vector(7 downto 0); + signal IODRPCTRLR_WRITE_DATA : std_logic_vector(7 downto 0); + signal Active_IODRP : std_logic_vector(1 downto 0); +@@ -411,7 +366,7 @@ + signal count : std_logic_vector(5 downto 0) := "000000"; -- counter for adding 18 extra clock cycles after setting Calibrate bit + signal counter_en : std_logic := '0'; -- counter enable for "count" + signal First_Dyn_Cal_Done : std_logic := '0'; -- flag - high after the very first dynamic calibration is done +- signal START_BROADCAST : std_logic ; -- Trigger to start Broadcast to IODRP2_MCBs to set Input Impedance - ++ signal START_BROADCAST : std_logic := '1'; -- Trigger to start Broadcast to IODRP2_MCBs to set Input Impedance - + -- state machine will wait for this to be high + signal DQS_DELAY_INITIAL : std_logic_vector(7 downto 0) := "00000000"; + signal DQS_DELAY : std_logic_vector(7 downto 0); -- contains the latest values written to LDQS and UDQS Input Delays +@@ -474,24 +429,15 @@ + signal MCB_UISDI_xilinx11 : std_logic; + signal MCB_UICS_xilinx6 : std_logic; + signal MCB_UIBROADCAST_xilinx4 : std_logic; +- signal MCB_UIADDR_int : std_logic_vector(4 downto 0); ++ signal MCB_UIADDR_xilinx3 : std_logic_vector(4 downto 0); + signal MCB_UIDONECAL_xilinx7 : std_logic; + signal MCB_UIREAD_xilinx10 : std_logic; + signal SELFREFRESH_MODE_xilinx11 : std_logic; + signal Max_Value_int : std_logic_vector(7 downto 0); + signal Rst_condition1 : std_logic; +- --signal Rst_condition2 : std_logic; ++ signal Rst_condition2 : std_logic; + signal non_violating_rst : std_logic; + signal WAIT_200us_COUNTER : std_logic_vector(15 downto 0); +- signal WaitTimer : std_logic_vector(7 downto 0); +- signal WarmEnough : std_logic; +- signal WaitCountEnable : std_logic; +- signal State_Start_DynCal_R1 : std_logic; +- signal State_Start_DynCal : std_logic; +- +- signal pre_sysrst_minpulse_width_ok : std_logic; +- signal pre_sysrst_cnt : std_logic_vector(3 downto 0); +- + -- This function multiplies by a constant MULT and then divides by the DIV constant + function Mult_Divide (Input : std_logic_vector(7 downto 0); MULT : integer ; DIV : integer ) return std_logic_vector is + variable Result : integer := 0; +@@ -505,19 +451,9 @@ + return temp(7 downto 0); + end function Mult_Divide; + +- +- + attribute syn_preserve : boolean; + attribute syn_preserve of P_Term : signal is TRUE; + attribute syn_preserve of N_Term : signal is TRUE; +- attribute syn_preserve of P_Term_s : signal is TRUE; +- attribute syn_preserve of N_Term_s : signal is TRUE; +- attribute syn_preserve of P_Term_w : signal is TRUE; +- attribute syn_preserve of N_Term_w : signal is TRUE; +- +- +- +- + attribute syn_preserve of P_Term_Prev : signal is TRUE; + attribute syn_preserve of N_Term_Prev : signal is TRUE; + attribute syn_preserve of IODRPCTRLR_MEMCELL_ADDR : signal is TRUE; +@@ -530,18 +466,6 @@ + + begin + +- +--- move the default assignment here to make FORMALITY happy. +- +- START_BROADCAST <= '1'; +- MCB_RECAL <= '0'; +- MCB_UIDQLOWERDEC <= '0'; +- MCB_UIADDR <= MCB_UIADDR_int; +- MCB_UIDQLOWERINC <= '0'; +- MCB_UIDQUPPERDEC <= '0'; +- MCB_UIDQUPPERINC <= '0'; +- +- + Max_Value <= Max_Value_int; + -- Drive referenced outputs + IODRP_ADD <= IODRP_ADD_xilinx0; +@@ -550,6 +474,7 @@ + MCB_UISDI <= MCB_UISDI_xilinx11; + MCB_UICS <= MCB_UICS_xilinx6; + MCB_UIBROADCAST <= MCB_UIBROADCAST_xilinx4; ++ MCB_UIADDR <= MCB_UIADDR_xilinx3; + MCB_UIDONECAL <= MCB_UIDONECAL_xilinx7; + MCB_UIREAD <= MCB_UIREAD_xilinx10; + SELFREFRESH_MODE <= SELFREFRESH_MODE_xilinx11; +@@ -607,7 +532,7 @@ + cmd_valid => MCB_CMD_VALID, + rdy_busy_n => MCB_RDY_BUSY_N, + use_broadcast => MCB_USE_BKST, +- drp_ioi_addr => MCB_UIADDR_int, ++ drp_ioi_addr => MCB_UIADDR_xilinx3, + sync_rst => RST_reg, + DRP_CLK => UI_CLK, + DRP_CS => MCB_UICS_xilinx6, +@@ -618,13 +543,10 @@ + MCB_UIREAD => MCB_UIREAD_xilinx10 + ); + ++ init_sequence: if (C_SIMULATION = "FALSE") generate + process (UI_CLK, RST) begin + if (RST = '1') then +- if (C_SIMULATION = "TRUE") then +- WAIT_200us_COUNTER <= X"7FF0"; +- else + WAIT_200us_COUNTER <= (others => '0'); +- end if; + elsif (UI_CLK'event and UI_CLK = '1') then + if (WAIT_200us_COUNTER(15) = '1') then + WAIT_200us_COUNTER <= WAIT_200us_COUNTER; +@@ -633,15 +555,16 @@ + end if; + end if; + end process; ++ end generate; + +- -- init_sequence_skip: if (C_SIMULATION = "TRUE") generate +- -- WAIT_200us_COUNTER <= X"FFFF"; +- -- process +- -- begin +- -- report "The 200 us wait period required before CKE goes active has been skipped in Simulation"; +- -- wait; +- -- end process; +- -- end generate; ++ init_sequence_skip: if (C_SIMULATION = "TRUE") generate ++ WAIT_200us_COUNTER <= X"FFFF"; ++ process ++ begin ++ report "The 200 us wait period required before CKE goes active has been skipped in Simulation"; ++ wait; ++ end process; ++ end generate; + + + gen_CKE_Train_a: if (C_MEM_TYPE = "DDR2") generate +@@ -653,8 +576,6 @@ + CKE_Train <= '0'; + elsif (WAIT_200us_COUNTER(15) = '1' and MCB_UODONECAL = '0') then + CKE_Train <= '1'; +- else +- CKE_Train <= '0'; + end if; + end if; + end process; +@@ -671,20 +592,19 @@ + --******************************************** + -- PLL_LOCK and RST signals + --******************************************** +- --MCB_SYSRST <= Pre_SYSRST or RST_reg; -- Pre_SYSRST is generated from the STATE state machine, and is OR'd with RST_reg input to drive MCB's ++ MCB_SYSRST <= Pre_SYSRST or RST_reg; -- Pre_SYSRST is generated from the STATE state machine, and is OR'd with RST_reg input to drive MCB's + -- SYSRST pin (MCB_SYSRST) +- + rst_tmp <= not(SELFREFRESH_MODE_xilinx11) and not(PLL_LOCK_R2); -- rst_tmp becomes 1 if you lose Lock and the device is not in SUSPEND + + process (UI_CLK, RST) begin + if (RST = '1') then +- --Block_Reset <= '0'; +- --RstCounter <= (others => '0'); +- --elsif (UI_CLK'event and UI_CLK = '1') then +- -- if (rst_tmp = '1') then -- this is to deal with not allowing the user-reset "RST" to violate TZQINIT_MAXCNT (min time between resets to DDR3) ++ Block_Reset <= '0'; ++ RstCounter <= (others => '0'); ++ elsif (UI_CLK'event and UI_CLK = '1') then ++ if (rst_tmp = '1') then -- this is to deal with not allowing the user-reset "RST" to violate TZQINIT_MAXCNT (min time between resets to DDR3) + Block_Reset <= '0'; + RstCounter <= (others => '0'); +- elsif (UI_CLK'event and UI_CLK = '1') then ++ else + Block_Reset <= '0'; -- default to allow STATE to move out of RST_DELAY state + if (Pre_SYSRST = '1') then + RstCounter <= RST_CNT; -- whenever STATE wants to reset the MCB, set RstCounter to h10 +@@ -695,14 +615,11 @@ + end if; + end if; + end if; +- --end if; ++ end if; + end process; +- +- -- Rst_contidtion1 is to make sure RESET will not happen again within TZQINIT_MAXCNT +- non_violating_rst <= RST and Rst_condition1; +- MCB_SYSRST <= Pre_SYSRST; + +- process (UI_CLK) begin ++ non_violating_rst <= RST and Rst_condition1; ++ process (UI_CLK) begin + if (UI_CLK'event and UI_CLK = '1') then + if (RstCounter >= TZQINIT_MAXCNT) then + Rst_condition1 <= '1'; +@@ -712,31 +629,18 @@ + end if; + end process; + +--- -- non_violating_rst asserts whenever (system-level reset) RST is asserted but must be after TZQINIT_MAXCNT is reached (min-time between resets for DDR3) +--- -- After power stablizes, we will hold MCB in reset state for at least 200us before beginning initialization process. +--- -- If the PLL loses lock during normal operation, no ui_clk will be present because mcb_drp_clk is from a BUFGCE which +--- is gated by pll's lock signal. When the PLL locks again, the RST_reg stays asserted for at least 200 us which +--- will cause MCB to reset and reinitialize the memory afterwards. +--- -- During SUSPEND operation, the PLL will lose lock but non_violating_rst remains low (de-asserted) and WAIT_200us_COUNTER stays at +--- its terminal count. The PLL_LOCK input does not come direct from PLL, rather it is driven by gated_pll_lock from mcb_raw_wrapper module +--- The gated_pll_lock in the mcb_raw_wrapper does not de-assert during SUSPEND operation, hence PLL_LOCK will not de-assert, and the soft calibration +--- state machine will not reset during SUSPEND. +--- -- RST_reg is the control signal that resets the mcb_soft_calibration's State Machine. The MCB_SYSRST is now equal to +--- Pre_SYSRST. When State Machine is performing "INPUT Termination Calibration", it holds the MCB in reset by assertign MCB_SYSRST. +--- It will deassert the MCB_SYSRST so that it can grab the bus to broadcast the P and N term value to all of the DQ pins. Once the calibrated INPUT +--- termination is set, the State Machine will issue another short MCB_SYSRST so that MCB will use the tuned input termination during DQS preamble calibration. + + +- --process (UI_CLK) begin +- -- if (UI_CLK'event and UI_CLK = '1') then +- -- +- -- if (RstCounter < RST_CNT) then +- -- Rst_condition2 <= '1'; +- -- else +- -- Rst_condition2 <= '0'; +- -- end if; +- -- end if; +- --end process; ++ process (UI_CLK) begin ++ if (UI_CLK'event and UI_CLK = '1') then ++ ++ if (RstCounter < RST_CNT) then ++ Rst_condition2 <= '1'; ++ else ++ Rst_condition2 <= '0'; ++ end if; ++ end if; ++ end process; + + process (UI_CLK, non_violating_rst) begin + if (non_violating_rst = '1') then +@@ -745,47 +649,18 @@ + if (WAIT_200us_COUNTER(15) = '0') then + RST_reg <= '1'; + else +- --RST_reg <= Rst_condition2 or rst_tmp; -- insures RST_reg is at least h10 pulses long +- RST_reg <= rst_tmp; -- insures RST_reg is at least h10 pulses long ++ RST_reg <= Rst_condition2 or rst_tmp; -- insures RST_reg is at least h10 pulses long + end if; + end if; + end process; + +---************************************************************* +--- Stretching the pre_sysrst to satisfy the minimum pulse width +---************************************************************* +- +-process (UI_CLK) begin +-if (UI_CLK'event and UI_CLK = '1') then +- if (STATE = START_DYN_CAL_PRE) then +- pre_sysrst_cnt <= pre_sysrst_cnt + '1'; +- else +- pre_sysrst_cnt <= (others=>'0'); +- end if; +-end if; +-end process; +- +-pre_sysrst_minpulse_width_ok <= pre_sysrst_cnt(3); +- ++ + --******************************************** + -- SUSPEND Logic + --******************************************** +- process (UI_CLK,RST) ++ process (UI_CLK) + begin +- if (RST = '1') then +- +- SELFREFRESH_MCB_MODE_R1 <= '0'; +- SELFREFRESH_MCB_MODE_R2 <= '0'; +- SELFREFRESH_MCB_MODE_R3 <= '0'; +- +- SELFREFRESH_REQ_R1 <= '0'; +- SELFREFRESH_REQ_R2 <= '0'; +- SELFREFRESH_REQ_R3 <= '0'; +- +- PLL_LOCK_R1 <= '0'; +- PLL_LOCK_R2 <= '0'; +- +- elsif (UI_CLK'event and UI_CLK = '1') then ++ if (UI_CLK'event and UI_CLK = '1') then + -- SELFREFRESH_MCB_MODE is clocked by sysclk_2x_180 + SELFREFRESH_MCB_MODE_R1 <= SELFREFRESH_MCB_MODE; + SELFREFRESH_MCB_MODE_R2 <= SELFREFRESH_MCB_MODE_R1; +@@ -810,10 +685,9 @@ + if (UI_CLK'event and UI_CLK = '1') then + if (RST = '1') then + SELFREFRESH_MCB_REQ <= '0'; +- --elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R3 = '0') and (STATE = START_DYN_CAL)) then +- elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R3 = '0')) then ++ elsif ((PLL_LOCK_R2 = '1') and (SELFREFRESH_REQ_R1 = '0') and (STATE = START_DYN_CAL)) then + SELFREFRESH_MCB_REQ <= '0'; +- elsif ((STATE = START_DYN_CAL) and (SELFREFRESH_REQ_R3 = '1')) then ++ elsif ((STATE = START_DYN_CAL) and (SELFREFRESH_REQ_R1 = '1')) then + SELFREFRESH_MCB_REQ <= '1'; + end if; + end if; +@@ -859,10 +733,6 @@ + + -- SELFREFRESH_MCB_MODE deasserted status is hold off + -- until Soft_Calib has at least done one loop of DQS update. +--- New logic WarmeEnough is added to make sure PLL_Lock is lockec and all IOs stable before +--- deassert the status of MCB's SELFREFRESH_MODE. This is to ensure all IOs are stable before +--- user logic sending new commands to MCB. +- + process (UI_CLK) + begin + if (UI_CLK'event and UI_CLK = '1') then +@@ -870,76 +740,12 @@ + SELFREFRESH_MODE_xilinx11 <= '0'; + elsif (SELFREFRESH_MCB_MODE_R2 = '1') then + SELFREFRESH_MODE_xilinx11 <= '1'; +- elsif (WarmEnough = '1') then +- SELFREFRESH_MODE_xilinx11 <= '0'; +- end if; +- end if; +- end process; +- +- +- +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- WaitCountEnable <= '0'; +- elsif (SELFREFRESH_REQ_R2 = '0' and SELFREFRESH_REQ_R1 = '1') then +- WaitCountEnable <= '0'; + elsif ((PERFORM_START_DYN_CAL_AFTER_SELFREFRESH = '0') and (PERFORM_START_DYN_CAL_AFTER_SELFREFRESH_R1 = '1')) then +- WaitCountEnable <= '1'; +- else +- WaitCountEnable <= WaitCountEnable; ++ SELFREFRESH_MODE_xilinx11 <= '0'; + end if; + end if; + end process; + +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- State_Start_DynCal <= '0'; +- elsif (STATE = START_DYN_CAL) then +- State_Start_DynCal <= '1'; +- else +- State_Start_DynCal <= '0'; +- end if; +- end if; +- end process; +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- State_Start_DynCal_R1 <= '0'; +- else +- State_Start_DynCal_R1 <= State_Start_DynCal; +- end if; +- end if; +- end process; +- +- +- process (UI_CLK) +- begin +- if (UI_CLK'event and UI_CLK = '1') then +- if (RST = '1') then +- WaitTimer <= (others => '0'); +- WarmEnough <= '1'; +- elsif ((SELFREFRESH_REQ_R2 = '0') and (SELFREFRESH_REQ_R1 = '1')) then +- WaitTimer <= (others => '0'); +- WarmEnough <= '0'; +- elsif (WaitTimer = X"04") then +- WaitTimer <= WaitTimer ; +- WarmEnough <= '1'; +- elsif (WaitCountEnable = '1') then +- WaitTimer <= WaitTimer + '1'; +- else +- WaitTimer <= WaitTimer ; +- end if; +- end if; +- end process; +- + --******************************************** + --Comparitor for Dynamic Calibration circuit + --******************************************** +@@ -1014,7 +820,7 @@ + if (UI_CLK'event and UI_CLK = '1') then + if (RST_reg = '1') then -- Synchronous reset + MCB_CMD_VALID <= '0'; +- MCB_UIADDR_int <= "00000"; -- take control of UI/UO port ++ MCB_UIADDR_xilinx3 <= "00000"; -- take control of UI/UO port + MCB_UICMDEN <= '1'; -- tells MCB that it is in Soft Cal. + MCB_UIDONECAL_xilinx7 <= '0'; + MCB_USE_BKST <= '0'; +@@ -1027,11 +833,6 @@ + IODRPCTRLR_USE_BKST <= '0'; + P_Term <= "000000"; + N_Term <= "0000000"; +- P_Term_s <= "000000"; +- N_Term_w <= "0000000"; +- P_Term_w <= "000000"; +- N_Term_s <= "0000000"; +- + P_Term_Prev <= "000000"; + N_Term_Prev <= "0000000"; + Active_IODRP <= RZQ; +@@ -1079,10 +880,7 @@ + Pre_SYSRST <= '1'; -- keeps MCB in reset + LastPass_DynCal <= IN_TERM_PASS; + if (SKIP_IN_TERM_CAL = 1) then +- --STATE <= WRITE_CALIBRATE; +- STATE <= WAIT_FOR_START_BROADCAST; +- P_Term <= "000000"; +- N_Term <= "0000000"; ++ STATE <= WRITE_CALIBRATE; + elsif (IODRPCTRLR_RDY_BUSY_N = '1') then + STATE <= LOAD_RZQ_NTERM; + else +@@ -1135,8 +933,7 @@ + STATE <= LOAD_RZQ_PTERM; + + when MULTIPLY_DIVIDE => -- h06 +- -- 13/4/2011 compensate the added sync FF +- P_Term <= Mult_Divide(("00" & (P_Term - '1')),MULT,DIV)(5 downto 0); ++ P_Term <= Mult_Divide(("00" & P_Term),MULT,DIV)(5 downto 0); + STATE <= LOAD_ZIO_PTERM; + + when LOAD_ZIO_PTERM => --h07 +@@ -1188,13 +985,8 @@ + STATE <= LOAD_ZIO_NTERM; + + when SKEW => -- h0C +- +- P_Term_s <= Mult_Divide(("00" & P_Term), MULT_S, DIV_S)(5 downto 0); +- N_Term_w <= Mult_Divide(('0' & (N_Term-'1')), MULT_W, DIV_W)(6 downto 0); +- P_Term_w <= Mult_Divide(("00" & P_Term), MULT_W, DIV_W)(5 downto 0); +- N_Term_s <= Mult_Divide(('0' & (N_Term-'1')), MULT_S, DIV_S)(6 downto 0); +- P_Term <= Mult_Divide(("00" & P_Term), MULT_S, DIV_S)(5 downto 0); +- N_Term <= Mult_Divide(('0' & (N_Term-'1')), MULT_W, DIV_W)(6 downto 0); ++ P_Term <= Mult_Divide(("00" & P_Term), PSKEW_MULT, PSKEW_DIV)(5 downto 0); ++ N_Term <= Mult_Divide(('0' & N_Term), NSKEW_MULT, NSKEW_DIV)(6 downto 0); + STATE <= WAIT_FOR_START_BROADCAST; + + when WAIT_FOR_START_BROADCAST => --h0D +@@ -1202,7 +994,7 @@ + -- keeping the MCB in calibration mode + Active_IODRP <= MCB_PORT; + if ((START_BROADCAST and IODRPCTRLR_RDY_BUSY_N) = '1') then +- if ((P_Term /= P_Term_Prev) or (SKIP_IN_TERM_CAL = 1)) then ++ if (P_Term /= P_Term_Prev) then + STATE <= BROADCAST_PTERM; + P_Term_Prev <= P_Term; + elsif (N_Term /= N_Term_Prev) then +@@ -1272,184 +1064,10 @@ + STATE <= WAIT6; -- wait for a Refresh cycle + end if; + else +- -- if (PNSKEWDQS = '1') then +- STATE <= LDQS_CLK_WRITE_P_TERM; +- -- else +- -- STATE <= OFF_RZQ_PTERM; +- -- end if; +- end if; +- +--- ********************* +- when LDQS_CLK_WRITE_P_TERM => -- h12 +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_w; +- MCB_UIADDR_int <= IOI_LDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_CLK_WRITE_P_TERM; +- else +- STATE <= LDQS_CLK_P_TERM_WAIT; +- end if; +- +- +- when LDQS_CLK_P_TERM_WAIT => --7'h13 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_CLK_P_TERM_WAIT; +- else +- STATE <= LDQS_CLK_WRITE_N_TERM; +- end if; +- +- when LDQS_CLK_WRITE_N_TERM => --7'h14 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_s; +- MCB_UIADDR_int <= IOI_LDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_CLK_WRITE_N_TERM; +- else +- STATE <= LDQS_CLK_N_TERM_WAIT; +- end if; +- +- --** +- when LDQS_CLK_N_TERM_WAIT => --7'h15 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_CLK_N_TERM_WAIT; +- else +- STATE <= LDQS_PIN_WRITE_P_TERM; +- end if; +- +- +- when LDQS_PIN_WRITE_P_TERM => --7'h16 +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_s; +- MCB_UIADDR_int <= IOI_LDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_PIN_WRITE_P_TERM; +- else +- STATE <= LDQS_PIN_P_TERM_WAIT; +- end if; +- +- +- when LDQS_PIN_P_TERM_WAIT => --7'h17 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_PIN_P_TERM_WAIT; +- else +- STATE <= LDQS_PIN_WRITE_N_TERM; +- end if; +- +- +- when LDQS_PIN_WRITE_N_TERM => --7'h18 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_w; +- MCB_UIADDR_int <= IOI_LDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= LDQS_PIN_WRITE_N_TERM; +- else +- STATE <= LDQS_PIN_N_TERM_WAIT; +- end if; +- +- +- when LDQS_PIN_N_TERM_WAIT => --7'h19 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= LDQS_PIN_N_TERM_WAIT; +- else +- STATE <= UDQS_CLK_WRITE_P_TERM; +- end if; +- +- +- +- when UDQS_CLK_WRITE_P_TERM => --7'h1A +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_w; +- MCB_UIADDR_int <= IOI_UDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_CLK_WRITE_P_TERM; +- else +- STATE <= UDQS_CLK_P_TERM_WAIT; +- end if; +- +- +- when UDQS_CLK_P_TERM_WAIT => --7'h1B +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_CLK_P_TERM_WAIT; +- else +- STATE <= UDQS_CLK_WRITE_N_TERM; +- end if; +- +- +- when UDQS_CLK_WRITE_N_TERM => --7'h1C +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_s; +- MCB_UIADDR_int <= IOI_UDQS_CLK; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_CLK_WRITE_N_TERM; +- else +- STATE <= UDQS_CLK_N_TERM_WAIT; +- end if; +- +- when UDQS_CLK_N_TERM_WAIT => --7'h1D +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_CLK_N_TERM_WAIT; +- else +- STATE <= UDQS_PIN_WRITE_P_TERM; +- end if; +- +- +- +- when UDQS_PIN_WRITE_P_TERM => --7'h1E +- IODRPCTRLR_MEMCELL_ADDR <= PTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= "00" & P_Term_s; +- MCB_UIADDR_int <= IOI_UDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_PIN_WRITE_P_TERM; +- else +- STATE <= UDQS_PIN_P_TERM_WAIT; +- end if; +- +- +- when UDQS_PIN_P_TERM_WAIT => --7'h1F +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_PIN_P_TERM_WAIT; +- else +- STATE <= UDQS_PIN_WRITE_N_TERM; +- end if; +- +- when UDQS_PIN_WRITE_N_TERM => --7'h20 +- IODRPCTRLR_MEMCELL_ADDR <= NTerm; +- IODRPCTRLR_R_WB <= WRITE_MODE; +- IODRPCTRLR_WRITE_DATA <= '0' & N_Term_w; +- MCB_UIADDR_int <= IOI_UDQS_PIN; +- MCB_CMD_VALID <= '1'; +- if (MCB_RDY_BUSY_N = '1') then +- STATE <= UDQS_PIN_WRITE_N_TERM; +- else +- STATE <= UDQS_PIN_N_TERM_WAIT; +- end if; +- +- +- when UDQS_PIN_N_TERM_WAIT => --7'h21 +- if (MCB_RDY_BUSY_N = '0') then +- STATE <= UDQS_PIN_N_TERM_WAIT; +- else +- STATE <= OFF_RZQ_PTERM; ++ STATE <= OFF_RZQ_PTERM; + end if; +- +--- ********************* + +- +- when OFF_RZQ_PTERM => -- h22 ++ when OFF_RZQ_PTERM => -- h12 + Active_IODRP <= RZQ; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= PTerm; +@@ -1464,14 +1082,14 @@ + STATE <= WAIT7; + end if; + +- when WAIT7 => -- h23 ++ when WAIT7 => -- h13 + if ((not(IODRPCTRLR_RDY_BUSY_N)) = '1') then + STATE <= WAIT7; + else + STATE <= OFF_ZIO_NTERM; + end if; + +- when OFF_ZIO_NTERM => -- h24 ++ when OFF_ZIO_NTERM => -- h14 + Active_IODRP <= ZIO; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= NTerm; +@@ -1483,7 +1101,7 @@ + STATE <= WAIT8; + end if; + +- when WAIT8 => -- h25 ++ when WAIT8 => -- h15 + if (IODRPCTRLR_RDY_BUSY_N = '0') then + STATE <= WAIT8; + else +@@ -1494,8 +1112,8 @@ + end if; + end if; + +- when RST_DELAY => -- h26 +- --MCB_UICMDEN <= '0'; -- release control of UI/UO port ++ when RST_DELAY => -- h16 ++ MCB_UICMDEN <= '0'; -- release control of UI/UO port + if (Block_Reset = '1') then -- this ensures that more than 512 clock cycles occur since the last reset after MCB_WRITE_CALIBRATE ??? + STATE <= RST_DELAY; + else +@@ -1505,18 +1123,18 @@ + --*************************** + --DYNAMIC CALIBRATION PORTION + --*************************** +- when START_DYN_CAL_PRE => -- h27 ++ when START_DYN_CAL_PRE => -- h17 + LastPass_DynCal <= IN_TERM_PASS; + MCB_UICMDEN <= '0'; -- release UICMDEN + MCB_UIDONECAL_xilinx7 <= '1'; -- release UIDONECAL - MCB will now initialize. + Pre_SYSRST <= '1'; -- SYSRST pulse + if (CALMODE_EQ_CALIBRATION = '0') then -- if C_MC_CALIBRATION_MODE is set to NOCALIBRATION + STATE <= START_DYN_CAL; -- we'll skip setting the DQS delays manually +- elsif (pre_sysrst_minpulse_width_ok = '1') then ++ else + STATE <= WAIT_FOR_UODONE; + end if; + +- when WAIT_FOR_UODONE => -- h28 ++ when WAIT_FOR_UODONE => -- h18 + Pre_SYSRST <= '0'; -- SYSRST pulse + if ((IODRPCTRLR_RDY_BUSY_N and MCB_UODONECAL) = '1')then --IODRP Controller needs to be ready, & MCB needs to be done with hard calibration + MCB_UICMDEN <= '1'; -- grab UICMDEN +@@ -1526,11 +1144,11 @@ + STATE <= WAIT_FOR_UODONE; + end if; + +- when LDQS_WRITE_POS_INDELAY => -- h29 ++ when LDQS_WRITE_POS_INDELAY => -- h19 + IODRPCTRLR_MEMCELL_ADDR <= PosEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_LDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_LDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1') then + STATE <= LDQS_WRITE_POS_INDELAY; +@@ -1538,18 +1156,18 @@ + STATE <= LDQS_WAIT1; + end if; + +- when LDQS_WAIT1 => -- h2A ++ when LDQS_WAIT1 => -- h1A + if (MCB_RDY_BUSY_N = '0')then + STATE <= LDQS_WAIT1; + else + STATE <= LDQS_WRITE_NEG_INDELAY; + end if; + +- when LDQS_WRITE_NEG_INDELAY => -- h2B ++ when LDQS_WRITE_NEG_INDELAY => -- h1B + IODRPCTRLR_MEMCELL_ADDR <= NegEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_LDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_LDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= LDQS_WRITE_NEG_INDELAY; +@@ -1557,18 +1175,18 @@ + STATE <= LDQS_WAIT2; + end if; + +- when LDQS_WAIT2 => -- 7'h2C ++ when LDQS_WAIT2 => -- 7'h1C + if(MCB_RDY_BUSY_N = '0')then + STATE <= LDQS_WAIT2; + else + STATE <= UDQS_WRITE_POS_INDELAY; + end if; + +- when UDQS_WRITE_POS_INDELAY => -- 7'h2D ++ when UDQS_WRITE_POS_INDELAY => -- 7'h1D + IODRPCTRLR_MEMCELL_ADDR <= PosEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_UDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_UDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= UDQS_WRITE_POS_INDELAY; +@@ -1576,18 +1194,18 @@ + STATE <= UDQS_WAIT1; + end if; + +- when UDQS_WAIT1 => -- 7'h2E ++ when UDQS_WAIT1 => -- 7'h1E + if (MCB_RDY_BUSY_N = '0')then + STATE <= UDQS_WAIT1; + else + STATE <= UDQS_WRITE_NEG_INDELAY; + end if; + +- when UDQS_WRITE_NEG_INDELAY => -- 7'h2F ++ when UDQS_WRITE_NEG_INDELAY => -- 7'h1F + IODRPCTRLR_MEMCELL_ADDR <= NegEdgeInDly; + IODRPCTRLR_R_WB <= WRITE_MODE; + IODRPCTRLR_WRITE_DATA <= DQS_DELAY_INITIAL; +- MCB_UIADDR_int <= IOI_UDQS_CLK; ++ MCB_UIADDR_xilinx3 <= IOI_UDQS_CLK; + MCB_CMD_VALID <= '1'; + if (MCB_RDY_BUSY_N = '1')then + STATE <= UDQS_WRITE_NEG_INDELAY; +@@ -1595,7 +1213,7 @@ + STATE <= UDQS_WAIT2; + end if; + +- when UDQS_WAIT2 => -- 7'h30 ++ when UDQS_WAIT2 => -- 7'h20 + if (MCB_RDY_BUSY_N = '0')then + STATE <= UDQS_WAIT2; + else +@@ -1604,7 +1222,7 @@ + STATE <= START_DYN_CAL; + end if; + +- when START_DYN_CAL => -- h31 ++ when START_DYN_CAL => -- h21 + Pre_SYSRST <= '0'; -- SYSRST not driven + counter_inc <= (others => '0'); + counter_dec <= (others => '0'); +@@ -1624,7 +1242,7 @@ + STATE <= START_DYN_CAL; + end if; + +- when WRITE_CALIBRATE => -- h32 ++ when WRITE_CALIBRATE => -- h22 + Pre_SYSRST <= '0'; + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= DelayControl; +@@ -1637,7 +1255,7 @@ + STATE <= WAIT9; + end if; + +- when WAIT9 => -- h33 ++ when WAIT9 => -- h23 + counter_en <= '1'; + if (count < "100110") then -- this adds approximately 22 extra clock cycles after WRITE_CALIBRATE + STATE <= WAIT9; +@@ -1645,7 +1263,7 @@ + STATE <= READ_MAX_VALUE; + end if; + +- when READ_MAX_VALUE => -- h34 ++ when READ_MAX_VALUE => -- h24 + IODRPCTRLR_CMD_VALID <= '1'; + IODRPCTRLR_MEMCELL_ADDR <= MaxValue; + IODRPCTRLR_R_WB <= READ_MODE; +@@ -1656,7 +1274,7 @@ + STATE <= WAIT10; + end if; + +- when WAIT10 => -- h35 ++ when WAIT10 => -- h25 + if (IODRPCTRLR_RDY_BUSY_N = '0') then + STATE <= WAIT10; + else +@@ -1669,7 +1287,7 @@ + end if; + end if; + +- when ANALYZE_MAX_VALUE => -- h36 only do a Inc or Dec during a REFRESH cycle. ++ when ANALYZE_MAX_VALUE => -- h26 only do a Inc or Dec during a REFRESH cycle. + if (First_Dyn_Cal_Done = '0')then + STATE <= FIRST_DYN_CAL; + elsif ((Max_Value_int < Max_Value_Previous) and (Max_Value_Delta_Dn >= INCDEC_THRESHOLD)) then +@@ -1684,11 +1302,11 @@ + STATE <= START_DYN_CAL; + end if; + +- when FIRST_DYN_CAL => -- h37 ++ when FIRST_DYN_CAL => -- h27 + First_Dyn_Cal_Done <= '1'; -- set flag that the First Dynamic Calibration has been completed + STATE <= START_DYN_CAL; + +- when INCREMENT => -- h38 ++ when INCREMENT => -- h28 + STATE <= START_DYN_CAL; -- Default case: Inc is not high or no longer in REFRSH + MCB_UILDQSINC <= '0'; -- Default case: no inc or dec + MCB_UIUDQSINC <= '0'; -- Default case: no inc or dec +@@ -1712,7 +1330,7 @@ + STATE <= START_DYN_CAL; + end case; + +- when DECREMENT => -- h39 ++ when DECREMENT => -- h29 + STATE <= START_DYN_CAL; -- Default case: Dec is not high or no longer in REFRSH + MCB_UILDQSINC <= '0'; -- Default case: no inc or dec + MCB_UIUDQSINC <= '0'; -- Default case: no inc or dec +@@ -1738,7 +1356,7 @@ + end case; + end if; + +- when DONE => -- h3A ++ when DONE => -- h2A + Pre_SYSRST <= '0'; -- SYSRST cleared + MCB_UICMDEN <= '0'; -- release UICMDEN + STATE <= DONE; diff --git a/designs/leon3-ztex-ufm-115/memc3_infrastructure_patch.txt b/designs/leon3-ztex-ufm-115/memc3_infrastructure_patch.txt new file mode 100644 index 00000000..08b1b533 --- /dev/null +++ b/designs/leon3-ztex-ufm-115/memc3_infrastructure_patch.txt @@ -0,0 +1,61 @@ +--- mig39/mig_39/user_design/rtl/memc3_infrastructure.vhd 2012-12-20 10:25:33.211745967 +0100 ++++ mig39_copy/mig_39/user_design/rtl/memc3_infrastructure.vhd 2012-12-20 10:25:45.219745839 +0100 +@@ -122,7 +122,6 @@ + signal mcb_drp_clk_bufg_in : std_logic; + signal clkfbout_clkfbin : std_logic; + signal rst_tmp : std_logic; +- signal sys_clk_ibufg : std_logic; + signal sys_rst : std_logic; + signal rst0_sync_r : std_logic_vector(RST_SYNC_NUM-1 downto 0); + signal powerup_pll_locked : std_logic; +@@ -136,7 +135,6 @@ + attribute KEEP : string; + attribute max_fanout of rst0_sync_r : signal is "10"; + attribute syn_maxfan of rst0_sync_r : signal is 10; +- attribute KEEP of sys_clk_ibufg : signal is "TRUE"; + + begin + +@@ -145,33 +143,6 @@ + pll_lock <= bufpll_mcb_locked; + mcb_drp_clk <= mcb_drp_clk_sig; + +- diff_input_clk : if(C_INPUT_CLK_TYPE = "DIFFERENTIAL") generate +- --*********************************************************************** +- -- Differential input clock input buffers +- --*********************************************************************** +- u_ibufg_sys_clk : IBUFGDS +- generic map ( +- DIFF_TERM => TRUE +- ) +- port map ( +- I => sys_clk_p, +- IB => sys_clk_n, +- O => sys_clk_ibufg +- ); +- end generate; +- +- +- se_input_clk : if(C_INPUT_CLK_TYPE = "SINGLE_ENDED") generate +- --*********************************************************************** +- -- SINGLE_ENDED input clock input buffers +- --*********************************************************************** +- u_ibufg_sys_clk : IBUFG +- port map ( +- I => sys_clk, +- O => sys_clk_ibufg +- ); +- end generate; +- + --*************************************************************************** + -- Global clock generation and distribution + --*************************************************************************** +@@ -211,7 +182,7 @@ + ( + CLKFBIN => clkfbout_clkfbin, + CLKINSEL => '1', +- CLKIN1 => sys_clk_ibufg, ++ CLKIN1 => sys_clk, + CLKIN2 => '0', + DADDR => (others => '0'), + DCLK => '0', diff --git a/designs/leon3-ztex-ufm-115/mig39/coregen.cgc b/designs/leon3-ztex-ufm-115/mig39/coregen.cgc new file mode 100644 index 00000000..24f1347e --- /dev/null +++ b/designs/leon3-ztex-ufm-115/mig39/coregen.cgc @@ -0,0 +1,985 @@ + + + xilinx.com + CoreGen + coregen + 1.0 + + + mig_39 + MIG Virtex-6 and Spartan-6 + + + mig_39 + ./mig_39/user_design/mig.prj + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg/ + + + xc6slx75 + spartan6 + csg484 + -3 + + + BusFormatAngleBracketNotRipped + VHDL + true + Other + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + 2012-10-13+03:35 + + + + + model_parameter_resolution_generator + + + ip_xco_generator + + ./mig_39.xco + xco + Thu Dec 20 09:47:43 GMT 2012 + 0x3333C26F + generationID_1879581046 + + + + implementation_source_generator + + ./mig_39/docs/ug388.pdf + ignore + pdf + Thu Dec 20 09:47:43 GMT 2012 + 0x90FCF0D1 + generationID_1879581046 + + + ./mig_39/docs/ug416.pdf + ignore + pdf + Thu Dec 20 09:47:43 GMT 2012 + 0x5A2D5D89 + generationID_1879581046 + + + ./mig_39/example_design/datasheet.txt + ignore + txt + Thu Dec 20 09:47:43 GMT 2012 + 0x9CCB1079 + generationID_1879581046 + + + ./mig_39/example_design/mig.prj + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0xD8129069 + generationID_1879581046 + + + ./mig_39/example_design/par/create_ise.sh + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0x5371417F + generationID_1879581046 + + + ./mig_39/example_design/par/example_top.ucf + ignore + ucf + Thu Dec 20 09:47:43 GMT 2012 + 0xDC0E8D8C + generationID_1879581046 + + + ./mig_39/example_design/par/icon_coregen.xco + ignore + xco + Thu Dec 20 09:47:43 GMT 2012 + 0x90EC25BD + generationID_1879581046 + + + ./mig_39/example_design/par/ila_coregen.xco + ignore + xco + Thu Dec 20 09:47:43 GMT 2012 + 0x5D64D23D + generationID_1879581046 + + + ./mig_39/example_design/par/ise_flow.sh + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0x1E0A73AF + generationID_1879581046 + + + ./mig_39/example_design/par/ise_run.txt + ignore + txt + Thu Dec 20 09:47:43 GMT 2012 + 0x643CF497 + generationID_1879581046 + + + ./mig_39/example_design/par/makeproj.sh + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0xCFE64DF9 + generationID_1879581046 + + + ./mig_39/example_design/par/mem_interface_top.ut + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0xCDD0105F + generationID_1879581046 + + + ./mig_39/example_design/par/readme.txt + ignore + txt + Thu Dec 20 09:47:43 GMT 2012 + 0xE0953675 + generationID_1879581046 + + + ./mig_39/example_design/par/rem_files.sh + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0xEE1479AD + generationID_1879581046 + + + ./mig_39/example_design/par/set_ise_prop.tcl + ignore + tcl + Thu Dec 20 09:47:43 GMT 2012 + 0xBCE1C947 + generationID_1879581046 + + + ./mig_39/example_design/par/vio_coregen.xco + ignore + xco + Thu Dec 20 09:47:43 GMT 2012 + 0xC9B2ECA7 + generationID_1879581046 + + + ./mig_39/example_design/rtl/example_top.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x81419DBC + generationID_1879581046 + + + ./mig_39/example_design/rtl/iodrp_controller.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x5A2197DD + generationID_1879581046 + + + ./mig_39/example_design/rtl/iodrp_mcb_controller.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x69237401 + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_raw_wrapper.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0xA3623325 + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_soft_calibration.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x9B8E0B5E + generationID_1879581046 + + + ./mig_39/example_design/rtl/mcb_soft_calibration_top.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0xC37A23BB + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_infrastructure.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x702DFF2F + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_tb_top.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0xFB368D57 + generationID_1879581046 + + + ./mig_39/example_design/rtl/memc3_wrapper.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x1971C25E + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/afifo.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x26568D9A + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/cmd_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0xC6EF0126 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/cmd_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x893B0F01 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/data_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x6E88FB8E + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/init_mem_pattern_ctr.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x26DEA717 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/mcb_flow_control.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0xB9D71414 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/mcb_traffic_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x125A1D59 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/rd_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x50A90B14 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/read_data_path.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0xDFA5DAF7 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/read_posted_fifo.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0xBC61DAC4 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/sp6_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0xA9170C59 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/tg_status.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x7B717096 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/v6_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x24F3E550 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/wr_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x91BCA941 + generationID_1879581046 + + + ./mig_39/example_design/rtl/traffic_gen/write_data_path.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0x391A16CE + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/ddr2_model_c3.v + ignore + verilog + Thu Dec 20 09:47:43 GMT 2012 + 0xAF612EFE + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/ddr2_model_parameters_c3.vh + ignore + verilog + Thu Dec 20 09:47:43 GMT 2012 + 0x6902BBB9 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/isim.sh + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0x1EDD2EEF + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/isim.tcl + ignore + tcl + Thu Dec 20 09:47:43 GMT 2012 + 0x02F76428 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/mig_39.prj + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0x32C79C96 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/readme.txt + ignore + txt + Thu Dec 20 09:47:43 GMT 2012 + 0xFA4BA7C6 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/sim.do + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0x2D591257 + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/sim_tb_top.vhd + ignore + vhdl + Thu Dec 20 09:47:43 GMT 2012 + 0xBAA88E0B + generationID_1879581046 + + + ./mig_39/example_design/sim/functional/timing_sim.sh + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0xD1170B9A + generationID_1879581046 + + + ./mig_39/example_design/synth/example_top.lso + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0xEEDE3797 + generationID_1879581046 + + + ./mig_39/example_design/synth/example_top.prj + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0x45A82CBA + generationID_1879581046 + + + ./mig_39/example_design/synth/mem_interface_top_synp.sdc + ignore + unknown + Thu Dec 20 09:47:43 GMT 2012 + 0x8CC320DE + generationID_1879581046 + + + ./mig_39/example_design/synth/script_synp.tcl + ignore + tcl + Thu Dec 20 09:47:43 GMT 2012 + 0x70E41DE2 + generationID_1879581046 + + + ./mig_39/user_design/datasheet.txt + ignore + txt + Thu Dec 20 09:47:44 GMT 2012 + 0xA181DE14 + generationID_1879581046 + + + ./mig_39/user_design/mig.prj + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0xD8129069 + generationID_1879581046 + + + ./mig_39/user_design/par/create_ise.sh + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0x5371417F + generationID_1879581046 + + + ./mig_39/user_design/par/icon_coregen.xco + ignore + xco + Thu Dec 20 09:47:44 GMT 2012 + 0x90EC25BD + generationID_1879581046 + + + ./mig_39/user_design/par/ila_coregen.xco + ignore + xco + Thu Dec 20 09:47:44 GMT 2012 + 0x5D64D23D + generationID_1879581046 + + + ./mig_39/user_design/par/ise_flow.sh + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0xD27A807C + generationID_1879581046 + + + ./mig_39/user_design/par/ise_run.txt + ignore + txt + Thu Dec 20 09:47:44 GMT 2012 + 0x844454AA + generationID_1879581046 + + + ./mig_39/user_design/par/makeproj.sh + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0xCFE64DF9 + generationID_1879581046 + + + ./mig_39/user_design/par/mem_interface_top.ut + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0xCDD0105F + generationID_1879581046 + + + ./mig_39/user_design/par/mig_39.ucf + ucf + Thu Dec 20 09:47:44 GMT 2012 + 0xCD1BAAF9 + generationID_1879581046 + + + ./mig_39/user_design/par/readme.txt + ignore + txt + Thu Dec 20 09:47:44 GMT 2012 + 0xD26FC611 + generationID_1879581046 + + + ./mig_39/user_design/par/rem_files.sh + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0x7DD369A4 + generationID_1879581046 + + + ./mig_39/user_design/par/set_ise_prop.tcl + ignore + tcl + Thu Dec 20 09:47:44 GMT 2012 + 0x85D8FDE5 + generationID_1879581046 + + + ./mig_39/user_design/par/vio_coregen.xco + ignore + xco + Thu Dec 20 09:47:44 GMT 2012 + 0xC9B2ECA7 + generationID_1879581046 + + + ./mig_39/user_design/rtl/iodrp_controller.vhd + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x5A2197DD + generationID_1879581046 + + + ./mig_39/user_design/rtl/iodrp_mcb_controller.vhd + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x69237401 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_raw_wrapper.vhd + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0xA3623325 + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_soft_calibration.vhd + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x9B8E0B5E + generationID_1879581046 + + + ./mig_39/user_design/rtl/mcb_soft_calibration_top.vhd + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0xC37A23BB + generationID_1879581046 + + + ./mig_39/user_design/rtl/memc3_infrastructure.vhd + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x702DFF2F + generationID_1879581046 + + + ./mig_39/user_design/rtl/memc3_wrapper.vhd + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x1971C25E + generationID_1879581046 + + + ./mig_39/user_design/rtl/mig_39.vhd + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x61D2FF06 + generationID_1879581046 + + + ./mig_39/user_design/sim/afifo.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x26568D9A + generationID_1879581046 + + + ./mig_39/user_design/sim/cmd_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0xC6EF0126 + generationID_1879581046 + + + ./mig_39/user_design/sim/cmd_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x893B0F01 + generationID_1879581046 + + + ./mig_39/user_design/sim/data_prbs_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x6E88FB8E + generationID_1879581046 + + + ./mig_39/user_design/sim/ddr2_model_c3.v + ignore + verilog + Thu Dec 20 09:47:44 GMT 2012 + 0xAF612EFE + generationID_1879581046 + + + ./mig_39/user_design/sim/ddr2_model_parameters_c3.vh + ignore + verilog + Thu Dec 20 09:47:44 GMT 2012 + 0x6902BBB9 + generationID_1879581046 + + + ./mig_39/user_design/sim/init_mem_pattern_ctr.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x26DEA717 + generationID_1879581046 + + + ./mig_39/user_design/sim/isim.sh + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0x1EDD2EEF + generationID_1879581046 + + + ./mig_39/user_design/sim/isim.tcl + ignore + tcl + Thu Dec 20 09:47:44 GMT 2012 + 0x02F76428 + generationID_1879581046 + + + ./mig_39/user_design/sim/mcb_flow_control.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0xB9D71414 + generationID_1879581046 + + + ./mig_39/user_design/sim/mcb_traffic_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x125A1D59 + generationID_1879581046 + + + ./mig_39/user_design/sim/memc3_tb_top.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0xFB368D57 + generationID_1879581046 + + + ./mig_39/user_design/sim/mig_39.prj + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0x4416E6E0 + generationID_1879581046 + + + ./mig_39/user_design/sim/rd_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x50A90B14 + generationID_1879581046 + + + ./mig_39/user_design/sim/read_data_path.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0xDFA5DAF7 + generationID_1879581046 + + + ./mig_39/user_design/sim/read_posted_fifo.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0xBC61DAC4 + generationID_1879581046 + + + ./mig_39/user_design/sim/readme.txt + ignore + txt + Thu Dec 20 09:47:44 GMT 2012 + 0xFA4BA7C6 + generationID_1879581046 + + + ./mig_39/user_design/sim/sim.do + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0xF6BD5801 + generationID_1879581046 + + + ./mig_39/user_design/sim/sim_tb_top.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x0F261A20 + generationID_1879581046 + + + ./mig_39/user_design/sim/sp6_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0xA9170C59 + generationID_1879581046 + + + ./mig_39/user_design/sim/tg_status.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x7B717096 + generationID_1879581046 + + + ./mig_39/user_design/sim/v6_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x24F3E550 + generationID_1879581046 + + + ./mig_39/user_design/sim/wr_data_gen.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x91BCA941 + generationID_1879581046 + + + ./mig_39/user_design/sim/write_data_path.vhd + ignore + vhdl + Thu Dec 20 09:47:44 GMT 2012 + 0x391A16CE + generationID_1879581046 + + + ./mig_39/user_design/synth/mem_interface_top_synp.sdc + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0xBE2AEA94 + generationID_1879581046 + + + ./mig_39/user_design/synth/mig_39.lso + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0xEEDE3797 + generationID_1879581046 + + + ./mig_39/user_design/synth/mig_39.prj + ignore + unknown + Thu Dec 20 09:47:44 GMT 2012 + 0x1521D75B + generationID_1879581046 + + + ./mig_39/user_design/synth/script_synp.tcl + ignore + tcl + Thu Dec 20 09:47:44 GMT 2012 + 0xB0FAF45E + generationID_1879581046 + + + ./mig_39.vho + vho + Thu Dec 20 09:47:44 GMT 2012 + 0x0EBFFEE2 + generationID_1879581046 + + + ./mig_39_readme.txt + ignore + txt + Thu Dec 20 09:47:44 GMT 2012 + 0xC9121F81 + generationID_1879581046 + + + ./mig_39_xmdf.tcl + ignore + tcl + Thu Dec 20 09:47:44 GMT 2012 + 0x87D169C0 + generationID_1879581046 + + + + instantiation_template_generator + + + asy_generator + + + xmdf_generator + + + ise_generator + + ./mig_39.gise + ignore + gise + Thu Dec 20 09:47:51 GMT 2012 + 0x8CB3D14A + generationID_1879581046 + + + ./mig_39.xise + ignore + xise + Thu Dec 20 09:47:51 GMT 2012 + 0xDECF52BF + generationID_1879581046 + + + + deliver_readme_generator + + + flist_generator + + ./mig_39_flist.txt + ignore + txtFlist + txt + Thu Dec 20 09:47:51 GMT 2012 + 0xD256293A + generationID_1879581046 + + + + + + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg + + + xc6slx75 + spartan6 + csg484 + -3 + + + BusFormatAngleBracketNotRipped + VHDL + true + Other + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + + + diff --git a/designs/leon3-ztex-ufm-115/mig39/coregen.cgp b/designs/leon3-ztex-ufm-115/mig39/coregen.cgp new file mode 100644 index 00000000..61d9ffb6 --- /dev/null +++ b/designs/leon3-ztex-ufm-115/mig39/coregen.cgp @@ -0,0 +1,22 @@ +# Date: Fri Aug 19 20:07:13 2011 + +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx75 +SET devicefamily = spartan6 +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = csg484 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -3 +SET verilogsim = false +SET vhdlsim = true +SET workingdirectory = ./tmp/ + +# CRC: f4553d60 diff --git a/designs/leon3-ztex-ufm-115/mig39/mig.prj b/designs/leon3-ztex-ufm-115/mig39/mig.prj new file mode 100644 index 00000000..a96e570c --- /dev/null +++ b/designs/leon3-ztex-ufm-115/mig39/mig.prj @@ -0,0 +1,62 @@ + + + mig_39 + xc6slx75-csg484/-3 + 3.92 + + DDR2_SDRAM/Components/MT47H64M16XX-25E + 5000 + 0 + 1 + FALSE + + 13 + 10 + 3 + + + + 4(010) + 3 + Enable-Normal + Fullstrength + RTT Disabled + 0 + OCD Exit + Enable + Disable + Enable + Disable + NATIVE,NATIVE,NATIVE,NATIVE,NATIVE,NATIVE + Class II + Class II + CALIB_TERM + 25 Ohms + + + + Single-Ended + 1 + Disable + Single-Ended + Two 32-bit bi-directional and four 32-bit unidirectional ports + AA2 + Y2 + Port0 + Bi-directional,none,none,none,none,none + ROW_BANK_COLUMN + Round Robin + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + diff --git a/designs/leon3-ztex-ufm-115/mig39/mig.xco b/designs/leon3-ztex-ufm-115/mig39/mig.xco new file mode 100644 index 00000000..572a9032 --- /dev/null +++ b/designs/leon3-ztex-ufm-115/mig39/mig.xco @@ -0,0 +1,42 @@ +############################################################## +# +# Xilinx Core Generator version 13.1 +# Date: Fri Aug 19 20:16:56 2011 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx75 +SET devicefamily = spartan6 +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = csg484 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -3 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT MIG_Virtex-6_and_Spartan-6 family Xilinx,_Inc. 3.92 +# END Select +# BEGIN Parameters +CSET component_name=mig_39 +CSET xml_input_file=./mig.prj +# END Parameters +GENERATE +# CRC: 47cf1cde diff --git a/designs/leon3-ztex-ufm-115/mig39/mig_39.xco b/designs/leon3-ztex-ufm-115/mig39/mig_39.xco new file mode 100644 index 00000000..781604b9 --- /dev/null +++ b/designs/leon3-ztex-ufm-115/mig39/mig_39.xco @@ -0,0 +1,49 @@ +############################################################## +# +# Xilinx Core Generator version 14.3 +# Date: Thu Dec 20 09:47:43 2012 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:mig:3.92 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc6slx75 +SET devicefamily = spartan6 +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = csg484 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -3 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT MIG_Virtex-6_and_Spartan-6 family Xilinx,_Inc. 3.92 +# END Select +# BEGIN Parameters +CSET component_name=mig_39 +CSET xml_input_file=./mig.prj +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-10-13T03:35:42Z +# END Extra information +GENERATE +# CRC: 37ec58a3 diff --git a/designs/leon3-ztex-ufm-115/mig_patch.txt b/designs/leon3-ztex-ufm-115/mig_patch.txt new file mode 100644 index 00000000..2cb5080b --- /dev/null +++ b/designs/leon3-ztex-ufm-115/mig_patch.txt @@ -0,0 +1,41 @@ +--- mig39/mig_39/user_design/rtl/mig_39.vhd 2012-12-20 10:45:50.000000000 +0100 ++++ mig39_copy/mig_39/user_design/rtl/mig_39.vhd 2012-12-20 10:46:58.907732349 +0100 +@@ -65,7 +65,7 @@ + --***************************************************************************** + library ieee; + use ieee.std_logic_1164.all; +-entity mig_39 is ++entity mig_37 is + generic + ( + C3_P0_MASK_SIZE : integer := 4; +@@ -116,7 +116,7 @@ + mcb3_zio : inout std_logic; + mcb3_dram_udm : out std_logic; + c3_sys_clk : in std_logic; +- c3_sys_rst_i : in std_logic; ++ c3_sys_rst_n : in std_logic; + c3_calib_done : out std_logic; + c3_clk0 : out std_logic; + c3_rst0 : out std_logic; +@@ -149,9 +149,9 @@ + c3_p0_rd_overflow : out std_logic; + c3_p0_rd_error : out std_logic + ); +-end mig_39; ++end mig_37; + +-architecture arc of mig_39 is ++architecture arc of mig_37 is + + + +@@ -448,7 +448,7 @@ + sys_clk_p => c3_sys_clk_p, + sys_clk_n => c3_sys_clk_n, + sys_clk => c3_sys_clk, +- sys_rst_i => c3_sys_rst_i, ++ sys_rst_i => c3_sys_rst_n, + clk0 => c3_clk0, + rst0 => c3_rst0, + async_rst => c3_async_rst, diff --git a/designs/leon3-ztex-ufm-115/testbench.vhd b/designs/leon3-ztex-ufm-115/testbench.vhd index aea180df..f80328b1 100644 --- a/designs/leon3-ztex-ufm-115/testbench.vhd +++ b/designs/leon3-ztex-ufm-115/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3-ztex-ufm-115/tkconfig.h b/designs/leon3-ztex-ufm-115/tkconfig.h index dd755300..48039bc8 100644 --- a/designs/leon3-ztex-ufm-115/tkconfig.h +++ b/designs/leon3-ztex-ufm-115/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN @@ -695,6 +717,10 @@ #endif +#ifndef CONFIG_MIG_DDR3 +#define CONFIG_MIG_DDR3 0 +#endif + #ifndef CONFIG_MIG_DDR2 #define CONFIG_MIG_DDR2 0 #endif diff --git a/designs/leon3mp/ahbrom.vhd b/designs/leon3mp/ahbrom.vhd index 1c37d22e..b9905d50 100644 --- a/designs/leon3mp/ahbrom.vhd +++ b/designs/leon3mp/ahbrom.vhd @@ -48,7 +48,6 @@ begin ahbso.hresp <= "00"; ahbso.hsplit <= (others => '0'); ahbso.hirq <= (others => '0'); - ahbso.hcache <= '1'; ahbso.hconfig <= hconfig; ahbso.hindex <= hindex; diff --git a/designs/leon3mp/config.help b/designs/leon3mp/config.help index ca82d286..4cd9d3aa 100644 --- a/designs/leon3mp/config.help +++ b/designs/leon3mp/config.help @@ -19,11 +19,15 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -149,6 +155,34 @@ CONFIG_PROC_NUM up to 4 LEON3 processor cores. Use 1 unless you know what you are doing ... +Force values from example configuration +CONFIG_LEON3_MIN + If you select any other value than Custom-configuration then the + configuration choices will be forced to settings corresponding to + the selected example configuration. The example configurations are + described in the document LEON/GRLIB Design and Configuration Guide + located at doc/guide.pdf. + + Due to limitations in the configuration tool it is not possible to + update all choices without first saving the configuration and + restarting the tool. Perform the steps below to set the processor + configuration to example configuration values: + + 1. Select example configuration (MIN, GP, HP). This will result + in most processor configuration menus being disabled. + 2. Go back to the main menu and select Save and Exit + 3. Start the xconfig tool again + 4. Go into processor configuration and select Custom-configuration. + All configuration values can now be changed again and have been + initialized to example configuration that was selected earlier. + 5. Make any changes and then quit xconfig via Save and Exit + + Some options set from the example configuration may need to be changed. + One such setting is the FPU multiplier, if the FPU is enabled, where + timing is improved for several FPGA technologies by selecting the + technology specific multiplier and where the DW multiplier is generally + a good choice for ASIC. + Number of SPARC register windows CONFIG_IU_NWINDOWS The SPARC architecture (and LEON) allows 2 - 32 register windows. @@ -551,11 +585,10 @@ CONFIG_IUFT_NONE sparing, 7-bit BCH and TMR. FPU Register file protection -CONFIG_FPUFT_EN +CONFIG_FPUFT_NONE Say Y to enable SEU protection of the FPU register file. - The GRFPU will be protected using 8-bit parity without restart, while - the GRFPU-Lite will be protected with 4-bit parity with restart. If - disabled the FPU register file will be implemented using flip-flops. + The GRFPU-Lite will be protected with parity, PDMR and TMR. + The GRFPU can use PDMR or TMR only. Cache memory error injection CONFIG_RF_ERRINJ diff --git a/designs/leon3mp/lconfig.tk b/designs/leon3mp/lconfig.tk index def181b0..13455cbd 100755 --- a/designs/leon3mp/lconfig.tk +++ b/designs/leon3mp/lconfig.tk @@ -757,7 +757,8 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" @@ -767,7 +768,9 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 45 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -910,8 +913,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} global CONFIG_SYN_UMC if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E @@ -930,6 +935,10 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} global CONFIG_SYN_VIRTEX6 if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -1019,9 +1028,10 @@ proc menu2 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 13 + menusplit $w $w.config.f.x0.x.menu 14 int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV @@ -1075,10 +1085,11 @@ proc update_menu2 {} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} global CONFIG_OCLKB_DIV @@ -1124,14 +1135,16 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} global CONFIG_OCLKB_DIV @@ -1204,13 +1217,21 @@ proc menu3 {w title} { bool $w.config.f 3 0 "Enable LEON3 SPARC V8 Processor" CONFIG_LEON3 int $w.config.f 3 1 "Number of processors" CONFIG_PROC_NUM - submenu $w.config.f 3 2 "Integer unit " 4 - submenu $w.config.f 3 3 "Floating-point unit" 5 - submenu $w.config.f 3 4 "Cache system" 6 - submenu $w.config.f 3 5 "MMU" 7 - submenu $w.config.f 3 6 "Debug Support Unit " 8 - submenu $w.config.f 3 7 "Fault-tolerance " 9 - submenu $w.config.f 3 8 "VHDL debug settings " 10 + global tmpvar_3 + minimenu $w.config.f 3 2 "Force values from example configuration (see help)" tmpvar_3 CONFIG_LEON3_MIN + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Force values from example configuration (see help)\"" + $w.config.f.x2.x.menu add radiobutton -label "Minimal-configuration" -variable tmpvar_3 -value "Minimal-configuration" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "General-purpose-cfg" -variable tmpvar_3 -value "General-purpose-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "High-Performance-cfg" -variable tmpvar_3 -value "High-Performance-cfg" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Custom-configuration" -variable tmpvar_3 -value "Custom-configuration" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 + submenu $w.config.f 3 3 "Integer unit " 4 + submenu $w.config.f 3 4 "Floating-point unit" 5 + submenu $w.config.f 3 5 "Cache system" 6 + submenu $w.config.f 3 6 "MMU" 7 + submenu $w.config.f 3 7 "Debug Support Unit " 8 + submenu $w.config.f 3 8 "Fault-tolerance " 9 + submenu $w.config.f 3 9 "VHDL debug settings " 10 @@ -1250,22 +1271,290 @@ proc update_menu3 {} { global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {.menu3.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu3.config.f.x1.l configure -state normal; } else {.menu3.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu3.config.f.x1.l configure -state disabled} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {m}} else {configure_entry .menu3.config.f.x2 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} - if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x2 normal {x l}} else {configure_entry .menu3.config.f.x2 disabled {x l}} + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x3 normal {m}} else {configure_entry .menu3.config.f.x3 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x4 normal {m}} else {configure_entry .menu3.config.f.x4 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x5 normal {m}} else {configure_entry .menu3.config.f.x5 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x6 normal {m}} else {configure_entry .menu3.config.f.x6 disabled {m}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {configure_entry .menu3.config.f.x7 normal {m}} else {configure_entry .menu3.config.f.x7 disabled {m}} if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x8 normal {m}} else {configure_entry .menu3.config.f.x8 disabled {m}} + if {($CONFIG_LEON3 == 1)} then {configure_entry .menu3.config.f.x9 normal {m}} else {configure_entry .menu3.config.f.x9 disabled {m}} } proc update_define_menu3 {} { update_define_mainmenu global CONFIG_MODULES + global CONFIG_IU_NWINDOWS + global CONFIG_IU_V8MULDIV + global CONFIG_IU_BP + global CONFIG_IU_SVT + global CONFIG_NOTAG + global CONFIG_IU_LDELAY + global CONFIG_IU_WATCHPOINTS + global CONFIG_PWD + global CONFIG_IU_RSTADDR + global CONFIG_FPU_ENABLE + global CONFIG_ICACHE_ENABLE + global CONFIG_ICACHE_ASSO1 + global CONFIG_ICACHE_SZ2 + global CONFIG_ICACHE_LZ16 + global CONFIG_ICACHE_ALGORND + global CONFIG_ICACHE_LOCK + global CONFIG_DCACHE_ENABLE + global CONFIG_DCACHE_ASSO1 + global CONFIG_DCACHE_SZ2 + global CONFIG_DCACHE_LZ16 + global CONFIG_DCACHE_ALGORND + global CONFIG_DCACHE_LOCK + global CONFIG_DCACHE_SNOOP + global CONFIG_CACHE_FIXED + global CONFIG_MMU_ENABLE + global CONFIG_DSU_ENABLE + global CONFIG_IU_MUL_LATENCY_5 + global CONFIG_IU_MUL_MAC + global CONFIG_ICACHE_ASSO2 + global CONFIG_ICACHE_SZ4 + global CONFIG_ICACHE_LRAM + global CONFIG_DCACHE_ASSO2 + global CONFIG_DCACHE_SZ4 + global CONFIG_DCACHE_SNOOP_FAST + global CONFIG_DCACHE_SNOOP_SEPTAG + global CONFIG_DCACHE_LRAM + global CONFIG_MMU_SPLIT + global CONFIG_MMU_REPARRAY + global CONFIG_MMU_I8 + global CONFIG_MMU_D8 + global CONFIG_MMU_FASTWB + global CONFIG_MMU_PAGE_4K + global CONFIG_DSU_ITRACE + global CONFIG_DSU_ITRACESZ4 + global CONFIG_DSU_ATRACESZ4 + global CONFIG_IU_MUL_LATENCY_2 + global CONFIG_FPU_GRFPU + global CONFIG_FPU_GRFPU_INFMUL + global CONFIG_ICACHE_ALGOLRU + global CONFIG_DCACHE_ALGOLRU + global CONFIG_MMU_I16 + global CONFIG_MMU_D16 global CONFIG_LEON3 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_PROC_NUM "$CONFIG_PROC_NUM" 1} + global tmpvar_3 + global CONFIG_LEON3_MIN + if {$tmpvar_3 == "Minimal-configuration"} then {set CONFIG_LEON3_MIN 1} else {set CONFIG_LEON3_MIN 0} + global CONFIG_LEON3_GP + if {$tmpvar_3 == "General-purpose-cfg"} then {set CONFIG_LEON3_GP 1} else {set CONFIG_LEON3_GP 0} + global CONFIG_LEON3_HP + if {$tmpvar_3 == "High-Performance-cfg"} then {set CONFIG_LEON3_HP 1} else {set CONFIG_LEON3_HP 0} + global CONFIG_LEON3_CUSTOM + if {$tmpvar_3 == "Custom-configuration"} then {set CONFIG_LEON3_CUSTOM 1} else {set CONFIG_LEON3_CUSTOM 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_V8MULDIV $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_IU_BP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_WATCHPOINTS 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_PWD $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO1 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_SNOOP $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_MMU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then { global CONSTANT_N +set CONFIG_DSU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_LDELAY 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_WATCHPOINTS 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_FPU_ENABLE $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGORND $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D8 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_NWINDOWS 8 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_V8MULDIV $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_IU_MUL_MAC $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_BP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_IU_SVT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_NOTAG $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_LDELAY 1 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_WATCHPOINTS 4 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_PWD $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_IU_RSTADDR 00000 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_ICACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_ICACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ASSO2 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_LZ16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_ALGOLRU $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LOCK $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {set CONFIG_CACHE_FIXED 0 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_N +set CONFIG_DCACHE_LRAM $CONSTANT_N } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_SPLIT $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_REPARRAY $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_I16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_D16 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_FASTWB $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_MMU_PAGE_4K $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ENABLE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACE $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ITRACESZ4 $CONSTANT_Y } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then { global CONSTANT_Y +set CONFIG_DSU_ATRACESZ4 $CONSTANT_Y } } @@ -1322,21 +1611,21 @@ proc menu4 {w title} { int $w.config.f 4 0 "SPARC register windows" CONFIG_IU_NWINDOWS bool $w.config.f 4 1 "SPARC V8 MUL/DIV instructions" CONFIG_IU_V8MULDIV - global tmpvar_3 - minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_3 CONFIG_IU_MUL_LATENCY_2 + global tmpvar_4 + minimenu $w.config.f 4 2 "Hardware multiplier latency" tmpvar_4 CONFIG_IU_MUL_LATENCY_2 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Hardware multiplier latency\"" - $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_3 -value "2-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_3 -value "4-cycles" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_3 -value "5-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2-cycles" -variable tmpvar_4 -value "2-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4-cycles" -variable tmpvar_4 -value "4-cycles" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "5-cycles" -variable tmpvar_4 -value "5-cycles" -command "update_active" menusplit $w $w.config.f.x2.x.menu 3 bool $w.config.f 4 3 "SPARC V8e SMAC/UMAC instructions " CONFIG_IU_MUL_MAC - global tmpvar_4 - minimenu $w.config.f 4 4 "Multipler structure " tmpvar_4 CONFIG_IU_MUL_INFERRED + global tmpvar_5 + minimenu $w.config.f 4 4 "Multipler structure " tmpvar_5 CONFIG_IU_MUL_INFERRED menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Multipler structure \"" - $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_4 -value "Inferred" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_4 -value "NTNU_Modgen" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_4 -value "TechSpec" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_4 -value "Designware" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Inferred" -variable tmpvar_5 -value "Inferred" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "NTNU_Modgen" -variable tmpvar_5 -value "NTNU_Modgen" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "TechSpec" -variable tmpvar_5 -value "TechSpec" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Designware" -variable tmpvar_5 -value "Designware" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 4 5 "Branch prediction " CONFIG_IU_BP bool $w.config.f 4 6 "Single-vector trapping" CONFIG_IU_SVT @@ -1383,36 +1672,37 @@ proc menu4 {w title} { proc update_menu4 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x0.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x0.l configure -state normal; } else {.menu4.config.f.x0.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x0.l configure -state disabled} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x1 normal {n l y}} else {configure_entry .menu4.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x2 normal {x l}} else {configure_entry .menu4.config.f.x2 disabled {x l}} global CONFIG_IU_MUL_LATENCY_4 global CONFIG_IU_MUL_LATENCY_5 global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { configure_entry .menu4.config.f.x3 normal {n l y}} else {configure_entry .menu4.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then {configure_entry .menu4.config.f.x4 normal {x l}} else {configure_entry .menu4.config.f.x4 disabled {x l}} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x5 normal {n l y}} else {configure_entry .menu4.config.f.x5 disabled {y n l}} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x6 normal {n l y}} else {configure_entry .menu4.config.f.x6 disabled {y n l}} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x7 normal {n l y}} else {configure_entry .menu4.config.f.x7 disabled {y n l}} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x8.l configure -state normal; } else {.menu4.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x8.l configure -state disabled} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x9.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x9.l configure -state normal; } else {.menu4.config.f.x9.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x9.l configure -state disabled} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu4.config.f.x10 normal {n l y}} else {configure_entry .menu4.config.f.x10 disabled {y n l}} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {.menu4.config.f.x11.x configure -state normal -foreground [ cget .ref -foreground ]; .menu4.config.f.x11.l configure -state normal; } else {.menu4.config.f.x11.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu4.config.f.x11.l configure -state disabled} } @@ -1420,48 +1710,49 @@ proc update_define_menu4 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_NWINDOWS "$CONFIG_IU_NWINDOWS" 8} global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV&15]} else {set CONFIG_IU_V8MULDIV [expr $CONFIG_IU_V8MULDIV|16]} - global tmpvar_3 + global tmpvar_4 global CONFIG_IU_MUL_LATENCY_2 - if {$tmpvar_3 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} + if {$tmpvar_4 == "2-cycles"} then {set CONFIG_IU_MUL_LATENCY_2 1} else {set CONFIG_IU_MUL_LATENCY_2 0} global CONFIG_IU_MUL_LATENCY_4 - if {$tmpvar_3 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} + if {$tmpvar_4 == "4-cycles"} then {set CONFIG_IU_MUL_LATENCY_4 1} else {set CONFIG_IU_MUL_LATENCY_4 0} global CONFIG_IU_MUL_LATENCY_5 - if {$tmpvar_3 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} + if {$tmpvar_4 == "5-cycles"} then {set CONFIG_IU_MUL_LATENCY_5 1} else {set CONFIG_IU_MUL_LATENCY_5 0} global CONFIG_IU_MUL_MAC - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then { set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC&15]} else {set CONFIG_IU_MUL_MAC [expr $CONFIG_IU_MUL_MAC|16]} - global tmpvar_4 + global tmpvar_5 global CONFIG_IU_MUL_INFERRED - if {$tmpvar_4 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} + if {$tmpvar_5 == "Inferred"} then {set CONFIG_IU_MUL_INFERRED 1} else {set CONFIG_IU_MUL_INFERRED 0} global CONFIG_IU_MUL_MODGEN - if {$tmpvar_4 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} + if {$tmpvar_5 == "NTNU_Modgen"} then {set CONFIG_IU_MUL_MODGEN 1} else {set CONFIG_IU_MUL_MODGEN 0} global CONFIG_IU_MUL_TECHSPEC - if {$tmpvar_4 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} + if {$tmpvar_5 == "TechSpec"} then {set CONFIG_IU_MUL_TECHSPEC 1} else {set CONFIG_IU_MUL_TECHSPEC 0} global CONFIG_IU_MUL_DW - if {$tmpvar_4 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} + if {$tmpvar_5 == "Designware"} then {set CONFIG_IU_MUL_DW 1} else {set CONFIG_IU_MUL_DW 0} global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_BP [expr $CONFIG_IU_BP&15]} else {set CONFIG_IU_BP [expr $CONFIG_IU_BP|16]} global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_IU_SVT [expr $CONFIG_IU_SVT&15]} else {set CONFIG_IU_SVT [expr $CONFIG_IU_SVT|16]} global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_NOTAG [expr $CONFIG_NOTAG&15]} else {set CONFIG_NOTAG [expr $CONFIG_NOTAG|16]} global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_LDELAY "$CONFIG_IU_LDELAY" 1} global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_int CONFIG_IU_WATCHPOINTS "$CONFIG_IU_WATCHPOINTS" 0} global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_PWD [expr $CONFIG_PWD&15]} else {set CONFIG_PWD [expr $CONFIG_PWD|16]} global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {validate_hex CONFIG_IU_RSTADDR "$CONFIG_IU_RSTADDR" 00000} } @@ -1517,27 +1808,27 @@ proc menu5 {w title} { bool $w.config.f 5 0 "Enable FPU " CONFIG_FPU_ENABLE - global tmpvar_5 - minimenu $w.config.f 5 1 "FPU core" tmpvar_5 CONFIG_FPU_GRFPU + global tmpvar_6 + minimenu $w.config.f 5 1 "FPU core" tmpvar_6 CONFIG_FPU_GRFPU menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"FPU core\"" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_5 -value "GRFPU" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_5 -value "GRFPU-LITE" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_5 -value "Meiko" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU" -variable tmpvar_6 -value "GRFPU" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "GRFPU-LITE" -variable tmpvar_6 -value "GRFPU-LITE" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Meiko" -variable tmpvar_6 -value "Meiko" -command "update_active" menusplit $w $w.config.f.x1.x.menu 3 - global tmpvar_6 - minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_6 CONFIG_FPU_GRFPU_INFMUL + global tmpvar_7 + minimenu $w.config.f 5 2 "GRFPU multiplier" tmpvar_7 CONFIG_FPU_GRFPU_INFMUL menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"GRFPU multiplier\"" - $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_6 -value "Inferred" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_6 -value "DW" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_6 -value "ModGen" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_6 -value "TechSpec" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Inferred" -variable tmpvar_7 -value "Inferred" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "DW" -variable tmpvar_7 -value "DW" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "ModGen" -variable tmpvar_7 -value "ModGen" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TechSpec" -variable tmpvar_7 -value "TechSpec" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_7 - minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_7 CONFIG_FPU_GRFPC0 + global tmpvar_8 + minimenu $w.config.f 5 3 "GRFPU-LITE controller" tmpvar_8 CONFIG_FPU_GRFPC0 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"GRFPU-LITE controller\"" - $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_7 -value "Simple" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_7 -value "Data-forwarding" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_7 -value "Non-blocking" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Simple" -variable tmpvar_8 -value "Simple" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Data-forwarding" -variable tmpvar_8 -value "Data-forwarding" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "Non-blocking" -variable tmpvar_8 -value "Non-blocking" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 5 4 "Use VHDL netlist " CONFIG_FPU_NETLIST @@ -1578,16 +1869,17 @@ proc menu5 {w title} { proc update_menu5 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu5.config.f.x0 normal {n l y}} else {configure_entry .menu5.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu5.config.f.x1 normal {x l}} else {configure_entry .menu5.config.f.x1 disabled {x l}} global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then {configure_entry .menu5.config.f.x2 normal {x l}} else {configure_entry .menu5.config.f.x2 disabled {x l}} global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then {configure_entry .menu5.config.f.x3 normal {x l}} else {configure_entry .menu5.config.f.x3 disabled {x l}} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { configure_entry .menu5.config.f.x4 normal {n l y}} else {configure_entry .menu5.config.f.x4 disabled {y n l}} } @@ -1596,34 +1888,35 @@ proc update_define_menu5 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE&15]} else {set CONFIG_FPU_ENABLE [expr $CONFIG_FPU_ENABLE|16]} - global tmpvar_5 + global tmpvar_6 global CONFIG_FPU_GRFPU - if {$tmpvar_5 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} + if {$tmpvar_6 == "GRFPU"} then {set CONFIG_FPU_GRFPU 1} else {set CONFIG_FPU_GRFPU 0} global CONFIG_FPU_GRFPULITE - if {$tmpvar_5 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} + if {$tmpvar_6 == "GRFPU-LITE"} then {set CONFIG_FPU_GRFPULITE 1} else {set CONFIG_FPU_GRFPULITE 0} global CONFIG_FPU_MEIKO - if {$tmpvar_5 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} - global tmpvar_6 + if {$tmpvar_6 == "Meiko"} then {set CONFIG_FPU_MEIKO 1} else {set CONFIG_FPU_MEIKO 0} + global tmpvar_7 global CONFIG_FPU_GRFPU_INFMUL - if {$tmpvar_6 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} + if {$tmpvar_7 == "Inferred"} then {set CONFIG_FPU_GRFPU_INFMUL 1} else {set CONFIG_FPU_GRFPU_INFMUL 0} global CONFIG_FPU_GRFPU_DWMUL - if {$tmpvar_6 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} + if {$tmpvar_7 == "DW"} then {set CONFIG_FPU_GRFPU_DWMUL 1} else {set CONFIG_FPU_GRFPU_DWMUL 0} global CONFIG_FPU_GRFPU_MODGEN - if {$tmpvar_6 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} + if {$tmpvar_7 == "ModGen"} then {set CONFIG_FPU_GRFPU_MODGEN 1} else {set CONFIG_FPU_GRFPU_MODGEN 0} global CONFIG_FPU_GRFPU_TECHSPEC - if {$tmpvar_6 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} - global tmpvar_7 + if {$tmpvar_7 == "TechSpec"} then {set CONFIG_FPU_GRFPU_TECHSPEC 1} else {set CONFIG_FPU_GRFPU_TECHSPEC 0} + global tmpvar_8 global CONFIG_FPU_GRFPC0 - if {$tmpvar_7 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} + if {$tmpvar_8 == "Simple"} then {set CONFIG_FPU_GRFPC0 1} else {set CONFIG_FPU_GRFPC0 0} global CONFIG_FPU_GRFPC1 - if {$tmpvar_7 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} + if {$tmpvar_8 == "Data-forwarding"} then {set CONFIG_FPU_GRFPC1 1} else {set CONFIG_FPU_GRFPC1 0} global CONFIG_FPU_GRFPC2 - if {$tmpvar_7 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} + if {$tmpvar_8 == "Non-blocking"} then {set CONFIG_FPU_GRFPC2 1} else {set CONFIG_FPU_GRFPC2 0} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST&15]} else {set CONFIG_FPU_NETLIST [expr $CONFIG_FPU_NETLIST|16]} } @@ -1680,92 +1973,92 @@ proc menu6 {w title} { bool $w.config.f 6 0 "Enable instruction cache " CONFIG_ICACHE_ENABLE - global tmpvar_8 - minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_8 CONFIG_ICACHE_ASSO1 + global tmpvar_9 + minimenu $w.config.f 6 1 "Associativity (sets) " tmpvar_9 CONFIG_ICACHE_ASSO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Associativity (sets) \"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_8 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_8 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_8 -value "3" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_8 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "3" -variable tmpvar_9 -value "3" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" menusplit $w $w.config.f.x1.x.menu 4 - global tmpvar_9 - minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_9 CONFIG_ICACHE_SZ1 + global tmpvar_10 + minimenu $w.config.f 6 2 "Way size (kbytes/way)" tmpvar_10 CONFIG_ICACHE_SZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Way size (kbytes/way)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_9 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_9 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_9 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_9 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_9 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_9 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_9 -value "64" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_9 -value "128" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_9 -value "256" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_10 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_10 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_10 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_10 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_10 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "128" -variable tmpvar_10 -value "128" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "256" -variable tmpvar_10 -value "256" -command "update_active" menusplit $w $w.config.f.x2.x.menu 9 - global tmpvar_10 - minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_10 CONFIG_ICACHE_LZ16 + global tmpvar_11 + minimenu $w.config.f 6 3 "Line size (bytes/line)" tmpvar_11 CONFIG_ICACHE_LZ16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_10 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_10 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_11 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_11 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 2 - global tmpvar_11 - minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_11 CONFIG_ICACHE_ALGORND + global tmpvar_12 + minimenu $w.config.f 6 4 "Replacement alorithm" tmpvar_12 CONFIG_ICACHE_ALGORND menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_11 -value "Random" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_11 -value "Direct" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_11 -value "LRR" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_11 -value "LRU" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Random" -variable tmpvar_12 -value "Random" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "Direct" -variable tmpvar_12 -value "Direct" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRR" -variable tmpvar_12 -value "LRR" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "LRU" -variable tmpvar_12 -value "LRU" -command "update_active" menusplit $w $w.config.f.x4.x.menu 4 bool $w.config.f 6 5 "Cache locking " CONFIG_ICACHE_LOCK bool $w.config.f 6 6 "Enable local instruction RAM " CONFIG_ICACHE_LRAM - global tmpvar_12 - minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_12 CONFIG_ICACHE_LRAM_SZ1 + global tmpvar_13 + minimenu $w.config.f 6 7 "Local data RAM size (kbytes)" tmpvar_13 CONFIG_ICACHE_LRAM_SZ1 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_12 -value "1" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_12 -value "2" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_12 -value "4" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_12 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_12 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_12 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_12 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_12 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_12 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_13 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_13 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_13 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_13 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_13 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_13 -value "256" -command "update_active" menusplit $w $w.config.f.x7.x.menu 9 hex $w.config.f 6 8 " Local instruction RAM start address (8 MSB) " CONFIG_ICACHE_LRSTART bool $w.config.f 6 9 "Enable data cache " CONFIG_DCACHE_ENABLE - global tmpvar_13 - minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_13 CONFIG_DCACHE_ASSO1 + global tmpvar_14 + minimenu $w.config.f 6 10 "Associativity (sets)" tmpvar_14 CONFIG_DCACHE_ASSO1 menu $w.config.f.x10.x.menu -tearoffcommand "menutitle \"Associativity (sets)\"" - $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_13 -value "1" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_13 -value "2" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_13 -value "3" -command "update_active" - $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_13 -value "4" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "3" -variable tmpvar_14 -value "3" -command "update_active" + $w.config.f.x10.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" menusplit $w $w.config.f.x10.x.menu 4 - global tmpvar_14 - minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_14 CONFIG_DCACHE_SZ1 + global tmpvar_15 + minimenu $w.config.f 6 11 "Set size (kbytes/set)" tmpvar_15 CONFIG_DCACHE_SZ1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Set size (kbytes/set)\"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_14 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_14 -value "2" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_14 -value "4" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_14 -value "8" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_14 -value "16" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_14 -value "32" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_14 -value "64" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_14 -value "128" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_14 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_15 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_15 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4" -variable tmpvar_15 -value "4" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "8" -variable tmpvar_15 -value "8" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "64" -variable tmpvar_15 -value "64" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "128" -variable tmpvar_15 -value "128" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_15 -value "256" -command "update_active" menusplit $w $w.config.f.x11.x.menu 9 - global tmpvar_15 - minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_15 CONFIG_DCACHE_LZ16 + global tmpvar_16 + minimenu $w.config.f 6 12 "Line size (bytes/line)" tmpvar_16 CONFIG_DCACHE_LZ16 menu $w.config.f.x12.x.menu -tearoffcommand "menutitle \"Line size (bytes/line)\"" - $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_15 -value "16" -command "update_active" - $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_15 -value "32" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "16" -variable tmpvar_16 -value "16" -command "update_active" + $w.config.f.x12.x.menu add radiobutton -label "32" -variable tmpvar_16 -value "32" -command "update_active" menusplit $w $w.config.f.x12.x.menu 2 - global tmpvar_16 - minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_16 CONFIG_DCACHE_ALGORND + global tmpvar_17 + minimenu $w.config.f 6 13 "Replacement alorithm" tmpvar_17 CONFIG_DCACHE_ALGORND menu $w.config.f.x13.x.menu -tearoffcommand "menutitle \"Replacement alorithm\"" - $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_16 -value "Random" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_16 -value "Direct" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_16 -value "LRR" -command "update_active" - $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_16 -value "LRU" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Random" -variable tmpvar_17 -value "Random" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "Direct" -variable tmpvar_17 -value "Direct" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRR" -variable tmpvar_17 -value "LRR" -command "update_active" + $w.config.f.x13.x.menu add radiobutton -label "LRU" -variable tmpvar_17 -value "LRU" -command "update_active" menusplit $w $w.config.f.x13.x.menu 4 bool $w.config.f 6 14 "Cache locking " CONFIG_DCACHE_LOCK bool $w.config.f 6 15 "AHB snooping " CONFIG_DCACHE_SNOOP @@ -1773,18 +2066,18 @@ proc menu6 {w title} { bool $w.config.f 6 17 "Separate snoop tags " CONFIG_DCACHE_SNOOP_SEPTAG hex $w.config.f 6 18 "Fixed cacheability map " CONFIG_CACHE_FIXED bool $w.config.f 6 19 "Enable local data RAM " CONFIG_DCACHE_LRAM - global tmpvar_17 - minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_17 CONFIG_DCACHE_LRAM_SZ1 + global tmpvar_18 + minimenu $w.config.f 6 20 "Local data RAM size (kbytes)" tmpvar_18 CONFIG_DCACHE_LRAM_SZ1 menu $w.config.f.x20.x.menu -tearoffcommand "menutitle \"Local data RAM size (kbytes)\"" - $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_17 -value "1" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_17 -value "2" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_17 -value "4" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_17 -value "8" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_17 -value "16" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_17 -value "32" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_17 -value "64" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_17 -value "128" -command "update_active" - $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_17 -value "256" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "1" -variable tmpvar_18 -value "1" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "2" -variable tmpvar_18 -value "2" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "4" -variable tmpvar_18 -value "4" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "8" -variable tmpvar_18 -value "8" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "16" -variable tmpvar_18 -value "16" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "32" -variable tmpvar_18 -value "32" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "64" -variable tmpvar_18 -value "64" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "128" -variable tmpvar_18 -value "128" -command "update_active" + $w.config.f.x20.x.menu add radiobutton -label "256" -variable tmpvar_18 -value "256" -command "update_active" menusplit $w $w.config.f.x20.x.menu 9 hex $w.config.f 6 21 " Local data RAM start address (8 MSB) " CONFIG_DCACHE_LRSTART @@ -1825,52 +2118,53 @@ proc menu6 {w title} { proc update_menu6 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x0 normal {n l y}} else {configure_entry .menu6.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x1 normal {x l}} else {configure_entry .menu6.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x2 normal {x l}} else {configure_entry .menu6.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x3 normal {x l}} else {configure_entry .menu6.config.f.x3 disabled {x l}} global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x4 normal {x l}} else {configure_entry .menu6.config.f.x4 disabled {x l}} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x5 normal {n l y}} else {configure_entry .menu6.config.f.x5 disabled {y n l}} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x6 normal {n l y}} else {configure_entry .menu6.config.f.x6 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x7 normal {x l}} else {configure_entry .menu6.config.f.x7 disabled {x l}} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {.menu6.config.f.x8.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x8.l configure -state normal; } else {.menu6.config.f.x8.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x8.l configure -state disabled} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu6.config.f.x9 normal {n l y}} else {configure_entry .menu6.config.f.x9 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x10 normal {x l}} else {configure_entry .menu6.config.f.x10 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x11 normal {x l}} else {configure_entry .menu6.config.f.x11 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {configure_entry .menu6.config.f.x12 normal {x l}} else {configure_entry .menu6.config.f.x12 disabled {x l}} global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {configure_entry .menu6.config.f.x13 normal {x l}} else {configure_entry .menu6.config.f.x13 disabled {x l}} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { configure_entry .menu6.config.f.x14 normal {n l y}} else {configure_entry .menu6.config.f.x14 disabled {y n l}} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { configure_entry .menu6.config.f.x15 normal {n l y}} else {configure_entry .menu6.config.f.x15 disabled {y n l}} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x16 normal {n l y}} else {configure_entry .menu6.config.f.x16 disabled {y n l}} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { configure_entry .menu6.config.f.x17 normal {n l y}} else {configure_entry .menu6.config.f.x17 disabled {y n l}} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {.menu6.config.f.x18.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x18.l configure -state normal; } else {.menu6.config.f.x18.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x18.l configure -state disabled} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { configure_entry .menu6.config.f.x19 normal {n l y}} else {configure_entry .menu6.config.f.x19 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {configure_entry .menu6.config.f.x20 normal {x l}} else {configure_entry .menu6.config.f.x20 disabled {x l}} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {.menu6.config.f.x21.x configure -state normal -foreground [ cget .ref -foreground ]; .menu6.config.f.x21.l configure -state normal; } else {.menu6.config.f.x21.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu6.config.f.x21.l configure -state disabled} } @@ -1878,162 +2172,163 @@ proc update_define_menu6 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE&15]} else {set CONFIG_ICACHE_ENABLE [expr $CONFIG_ICACHE_ENABLE|16]} - global tmpvar_8 + global tmpvar_9 global CONFIG_ICACHE_ASSO1 - if {$tmpvar_8 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} + if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_ASSO1 1} else {set CONFIG_ICACHE_ASSO1 0} global CONFIG_ICACHE_ASSO2 - if {$tmpvar_8 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} + if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_ASSO2 1} else {set CONFIG_ICACHE_ASSO2 0} global CONFIG_ICACHE_ASSO3 - if {$tmpvar_8 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} + if {$tmpvar_9 == "3"} then {set CONFIG_ICACHE_ASSO3 1} else {set CONFIG_ICACHE_ASSO3 0} global CONFIG_ICACHE_ASSO4 - if {$tmpvar_8 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} - global tmpvar_9 + if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_ASSO4 1} else {set CONFIG_ICACHE_ASSO4 0} + global tmpvar_10 global CONFIG_ICACHE_SZ1 - if {$tmpvar_9 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} + if {$tmpvar_10 == "1"} then {set CONFIG_ICACHE_SZ1 1} else {set CONFIG_ICACHE_SZ1 0} global CONFIG_ICACHE_SZ2 - if {$tmpvar_9 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} + if {$tmpvar_10 == "2"} then {set CONFIG_ICACHE_SZ2 1} else {set CONFIG_ICACHE_SZ2 0} global CONFIG_ICACHE_SZ4 - if {$tmpvar_9 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} + if {$tmpvar_10 == "4"} then {set CONFIG_ICACHE_SZ4 1} else {set CONFIG_ICACHE_SZ4 0} global CONFIG_ICACHE_SZ8 - if {$tmpvar_9 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} + if {$tmpvar_10 == "8"} then {set CONFIG_ICACHE_SZ8 1} else {set CONFIG_ICACHE_SZ8 0} global CONFIG_ICACHE_SZ16 - if {$tmpvar_9 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} + if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_SZ16 1} else {set CONFIG_ICACHE_SZ16 0} global CONFIG_ICACHE_SZ32 - if {$tmpvar_9 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} + if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_SZ32 1} else {set CONFIG_ICACHE_SZ32 0} global CONFIG_ICACHE_SZ64 - if {$tmpvar_9 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} + if {$tmpvar_10 == "64"} then {set CONFIG_ICACHE_SZ64 1} else {set CONFIG_ICACHE_SZ64 0} global CONFIG_ICACHE_SZ128 - if {$tmpvar_9 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} + if {$tmpvar_10 == "128"} then {set CONFIG_ICACHE_SZ128 1} else {set CONFIG_ICACHE_SZ128 0} global CONFIG_ICACHE_SZ256 - if {$tmpvar_9 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} - global tmpvar_10 + if {$tmpvar_10 == "256"} then {set CONFIG_ICACHE_SZ256 1} else {set CONFIG_ICACHE_SZ256 0} + global tmpvar_11 global CONFIG_ICACHE_LZ16 - if {$tmpvar_10 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} + if {$tmpvar_11 == "16"} then {set CONFIG_ICACHE_LZ16 1} else {set CONFIG_ICACHE_LZ16 0} global CONFIG_ICACHE_LZ32 - if {$tmpvar_10 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} - global tmpvar_11 + if {$tmpvar_11 == "32"} then {set CONFIG_ICACHE_LZ32 1} else {set CONFIG_ICACHE_LZ32 0} + global tmpvar_12 global CONFIG_ICACHE_ALGORND - if {$tmpvar_11 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} + if {$tmpvar_12 == "Random"} then {set CONFIG_ICACHE_ALGORND 1} else {set CONFIG_ICACHE_ALGORND 0} global CONFIG_ICACHE_ALGODIR - if {$tmpvar_11 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} + if {$tmpvar_12 == "Direct"} then {set CONFIG_ICACHE_ALGODIR 1} else {set CONFIG_ICACHE_ALGODIR 0} global CONFIG_ICACHE_ALGOLRR - if {$tmpvar_11 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} + if {$tmpvar_12 == "LRR"} then {set CONFIG_ICACHE_ALGOLRR 1} else {set CONFIG_ICACHE_ALGOLRR 0} global CONFIG_ICACHE_ALGOLRU - if {$tmpvar_11 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} + if {$tmpvar_12 == "LRU"} then {set CONFIG_ICACHE_ALGOLRU 1} else {set CONFIG_ICACHE_ALGOLRU 0} global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK&15]} else {set CONFIG_ICACHE_LOCK [expr $CONFIG_ICACHE_LOCK|16]} global CONFIG_MMU_ENABLE global CONFIG_ICACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM&15]} else {set CONFIG_ICACHE_LRAM [expr $CONFIG_ICACHE_LRAM|16]} - global tmpvar_12 + global tmpvar_13 global CONFIG_ICACHE_LRAM_SZ1 - if {$tmpvar_12 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} + if {$tmpvar_13 == "1"} then {set CONFIG_ICACHE_LRAM_SZ1 1} else {set CONFIG_ICACHE_LRAM_SZ1 0} global CONFIG_ICACHE_LRAM_SZ2 - if {$tmpvar_12 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} + if {$tmpvar_13 == "2"} then {set CONFIG_ICACHE_LRAM_SZ2 1} else {set CONFIG_ICACHE_LRAM_SZ2 0} global CONFIG_ICACHE_LRAM_SZ4 - if {$tmpvar_12 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} + if {$tmpvar_13 == "4"} then {set CONFIG_ICACHE_LRAM_SZ4 1} else {set CONFIG_ICACHE_LRAM_SZ4 0} global CONFIG_ICACHE_LRAM_SZ8 - if {$tmpvar_12 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} + if {$tmpvar_13 == "8"} then {set CONFIG_ICACHE_LRAM_SZ8 1} else {set CONFIG_ICACHE_LRAM_SZ8 0} global CONFIG_ICACHE_LRAM_SZ16 - if {$tmpvar_12 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} + if {$tmpvar_13 == "16"} then {set CONFIG_ICACHE_LRAM_SZ16 1} else {set CONFIG_ICACHE_LRAM_SZ16 0} global CONFIG_ICACHE_LRAM_SZ32 - if {$tmpvar_12 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} + if {$tmpvar_13 == "32"} then {set CONFIG_ICACHE_LRAM_SZ32 1} else {set CONFIG_ICACHE_LRAM_SZ32 0} global CONFIG_ICACHE_LRAM_SZ64 - if {$tmpvar_12 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} + if {$tmpvar_13 == "64"} then {set CONFIG_ICACHE_LRAM_SZ64 1} else {set CONFIG_ICACHE_LRAM_SZ64 0} global CONFIG_ICACHE_LRAM_SZ128 - if {$tmpvar_12 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} + if {$tmpvar_13 == "128"} then {set CONFIG_ICACHE_LRAM_SZ128 1} else {set CONFIG_ICACHE_LRAM_SZ128 0} global CONFIG_ICACHE_LRAM_SZ256 - if {$tmpvar_12 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} + if {$tmpvar_13 == "256"} then {set CONFIG_ICACHE_LRAM_SZ256 1} else {set CONFIG_ICACHE_LRAM_SZ256 0} global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {validate_hex CONFIG_ICACHE_LRSTART "$CONFIG_ICACHE_LRSTART" 8e} global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE&15]} else {set CONFIG_DCACHE_ENABLE [expr $CONFIG_DCACHE_ENABLE|16]} - global tmpvar_13 + global tmpvar_14 global CONFIG_DCACHE_ASSO1 - if {$tmpvar_13 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} + if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_ASSO1 1} else {set CONFIG_DCACHE_ASSO1 0} global CONFIG_DCACHE_ASSO2 - if {$tmpvar_13 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} + if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_ASSO2 1} else {set CONFIG_DCACHE_ASSO2 0} global CONFIG_DCACHE_ASSO3 - if {$tmpvar_13 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} + if {$tmpvar_14 == "3"} then {set CONFIG_DCACHE_ASSO3 1} else {set CONFIG_DCACHE_ASSO3 0} global CONFIG_DCACHE_ASSO4 - if {$tmpvar_13 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} - global tmpvar_14 + if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_ASSO4 1} else {set CONFIG_DCACHE_ASSO4 0} + global tmpvar_15 global CONFIG_DCACHE_SZ1 - if {$tmpvar_14 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} + if {$tmpvar_15 == "1"} then {set CONFIG_DCACHE_SZ1 1} else {set CONFIG_DCACHE_SZ1 0} global CONFIG_DCACHE_SZ2 - if {$tmpvar_14 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} + if {$tmpvar_15 == "2"} then {set CONFIG_DCACHE_SZ2 1} else {set CONFIG_DCACHE_SZ2 0} global CONFIG_DCACHE_SZ4 - if {$tmpvar_14 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} + if {$tmpvar_15 == "4"} then {set CONFIG_DCACHE_SZ4 1} else {set CONFIG_DCACHE_SZ4 0} global CONFIG_DCACHE_SZ8 - if {$tmpvar_14 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} + if {$tmpvar_15 == "8"} then {set CONFIG_DCACHE_SZ8 1} else {set CONFIG_DCACHE_SZ8 0} global CONFIG_DCACHE_SZ16 - if {$tmpvar_14 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} + if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_SZ16 1} else {set CONFIG_DCACHE_SZ16 0} global CONFIG_DCACHE_SZ32 - if {$tmpvar_14 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} + if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_SZ32 1} else {set CONFIG_DCACHE_SZ32 0} global CONFIG_DCACHE_SZ64 - if {$tmpvar_14 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} + if {$tmpvar_15 == "64"} then {set CONFIG_DCACHE_SZ64 1} else {set CONFIG_DCACHE_SZ64 0} global CONFIG_DCACHE_SZ128 - if {$tmpvar_14 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} + if {$tmpvar_15 == "128"} then {set CONFIG_DCACHE_SZ128 1} else {set CONFIG_DCACHE_SZ128 0} global CONFIG_DCACHE_SZ256 - if {$tmpvar_14 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} - global tmpvar_15 + if {$tmpvar_15 == "256"} then {set CONFIG_DCACHE_SZ256 1} else {set CONFIG_DCACHE_SZ256 0} + global tmpvar_16 global CONFIG_DCACHE_LZ16 - if {$tmpvar_15 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} + if {$tmpvar_16 == "16"} then {set CONFIG_DCACHE_LZ16 1} else {set CONFIG_DCACHE_LZ16 0} global CONFIG_DCACHE_LZ32 - if {$tmpvar_15 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} - global tmpvar_16 + if {$tmpvar_16 == "32"} then {set CONFIG_DCACHE_LZ32 1} else {set CONFIG_DCACHE_LZ32 0} + global tmpvar_17 global CONFIG_DCACHE_ALGORND - if {$tmpvar_16 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} + if {$tmpvar_17 == "Random"} then {set CONFIG_DCACHE_ALGORND 1} else {set CONFIG_DCACHE_ALGORND 0} global CONFIG_DCACHE_ALGODIR - if {$tmpvar_16 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} + if {$tmpvar_17 == "Direct"} then {set CONFIG_DCACHE_ALGODIR 1} else {set CONFIG_DCACHE_ALGODIR 0} global CONFIG_DCACHE_ALGOLRR - if {$tmpvar_16 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} + if {$tmpvar_17 == "LRR"} then {set CONFIG_DCACHE_ALGOLRR 1} else {set CONFIG_DCACHE_ALGOLRR 0} global CONFIG_DCACHE_ALGOLRU - if {$tmpvar_16 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} + if {$tmpvar_17 == "LRU"} then {set CONFIG_DCACHE_ALGOLRU 1} else {set CONFIG_DCACHE_ALGOLRU 0} global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK&15]} else {set CONFIG_DCACHE_LOCK [expr $CONFIG_DCACHE_LOCK|16]} global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP&15]} else {set CONFIG_DCACHE_SNOOP [expr $CONFIG_DCACHE_SNOOP|16]} global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST&15]} else {set CONFIG_DCACHE_SNOOP_FAST [expr $CONFIG_DCACHE_SNOOP_FAST|16]} global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then { set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG&15]} else {set CONFIG_DCACHE_SNOOP_SEPTAG [expr $CONFIG_DCACHE_SNOOP_SEPTAG|16]} global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {validate_hex CONFIG_CACHE_FIXED "$CONFIG_CACHE_FIXED" 0} global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then { set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM&15]} else {set CONFIG_DCACHE_LRAM [expr $CONFIG_DCACHE_LRAM|16]} - global tmpvar_17 + global tmpvar_18 global CONFIG_DCACHE_LRAM_SZ1 - if {$tmpvar_17 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} + if {$tmpvar_18 == "1"} then {set CONFIG_DCACHE_LRAM_SZ1 1} else {set CONFIG_DCACHE_LRAM_SZ1 0} global CONFIG_DCACHE_LRAM_SZ2 - if {$tmpvar_17 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} + if {$tmpvar_18 == "2"} then {set CONFIG_DCACHE_LRAM_SZ2 1} else {set CONFIG_DCACHE_LRAM_SZ2 0} global CONFIG_DCACHE_LRAM_SZ4 - if {$tmpvar_17 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} + if {$tmpvar_18 == "4"} then {set CONFIG_DCACHE_LRAM_SZ4 1} else {set CONFIG_DCACHE_LRAM_SZ4 0} global CONFIG_DCACHE_LRAM_SZ8 - if {$tmpvar_17 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} + if {$tmpvar_18 == "8"} then {set CONFIG_DCACHE_LRAM_SZ8 1} else {set CONFIG_DCACHE_LRAM_SZ8 0} global CONFIG_DCACHE_LRAM_SZ16 - if {$tmpvar_17 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} + if {$tmpvar_18 == "16"} then {set CONFIG_DCACHE_LRAM_SZ16 1} else {set CONFIG_DCACHE_LRAM_SZ16 0} global CONFIG_DCACHE_LRAM_SZ32 - if {$tmpvar_17 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} + if {$tmpvar_18 == "32"} then {set CONFIG_DCACHE_LRAM_SZ32 1} else {set CONFIG_DCACHE_LRAM_SZ32 0} global CONFIG_DCACHE_LRAM_SZ64 - if {$tmpvar_17 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} + if {$tmpvar_18 == "64"} then {set CONFIG_DCACHE_LRAM_SZ64 1} else {set CONFIG_DCACHE_LRAM_SZ64 0} global CONFIG_DCACHE_LRAM_SZ128 - if {$tmpvar_17 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} + if {$tmpvar_18 == "128"} then {set CONFIG_DCACHE_LRAM_SZ128 1} else {set CONFIG_DCACHE_LRAM_SZ128 0} global CONFIG_DCACHE_LRAM_SZ256 - if {$tmpvar_17 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} + if {$tmpvar_18 == "256"} then {set CONFIG_DCACHE_LRAM_SZ256 1} else {set CONFIG_DCACHE_LRAM_SZ256 0} global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {validate_hex CONFIG_DCACHE_LRSTART "$CONFIG_DCACHE_LRSTART" 8f} } @@ -2089,45 +2384,47 @@ proc menu7 {w title} { bool $w.config.f 7 0 "Enable MMU " CONFIG_MMU_ENABLE - global tmpvar_18 - minimenu $w.config.f 7 1 "MMU type " tmpvar_18 CONFIG_MMU_COMBINED + global tmpvar_19 + minimenu $w.config.f 7 1 "MMU type " tmpvar_19 CONFIG_MMU_COMBINED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"MMU type \"" - $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_18 -value "combined" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_18 -value "split" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "combined" -variable tmpvar_19 -value "combined" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "split" -variable tmpvar_19 -value "split" -command "update_active" menusplit $w $w.config.f.x1.x.menu 2 - global tmpvar_19 - minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_19 CONFIG_MMU_REPARRAY + global tmpvar_20 + minimenu $w.config.f 7 2 "TLB replacement sheme " tmpvar_20 CONFIG_MMU_REPARRAY menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"TLB replacement sheme \"" - $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_19 -value "LRU" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_19 -value "Increment" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "LRU" -variable tmpvar_20 -value "LRU" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Increment" -variable tmpvar_20 -value "Increment" -command "update_active" menusplit $w $w.config.f.x2.x.menu 2 - global tmpvar_20 - minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_20 CONFIG_MMU_I2 - menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_20 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_20 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_20 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_20 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_20 -value "32" -command "update_active" - menusplit $w $w.config.f.x3.x.menu 5 global tmpvar_21 - minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_21 CONFIG_MMU_D2 + minimenu $w.config.f 7 3 "Instruction (or combined) TLB entries" tmpvar_21 CONFIG_MMU_I2 + menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Instruction (or combined) TLB entries\"" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_21 -value "64" -command "update_active" + menusplit $w $w.config.f.x3.x.menu 6 + global tmpvar_22 + minimenu $w.config.f 7 4 "Data TLB entries" tmpvar_22 CONFIG_MMU_D2 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"Data TLB entries\"" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_21 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_21 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_21 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_21 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_21 -value "32" -command "update_active" - menusplit $w $w.config.f.x4.x.menu 5 + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_22 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_22 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_22 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_22 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_22 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_22 -value "64" -command "update_active" + menusplit $w $w.config.f.x4.x.menu 6 bool $w.config.f 7 5 "Fast writebuffer " CONFIG_MMU_FASTWB - global tmpvar_22 - minimenu $w.config.f 7 6 "MMU page size" tmpvar_22 CONFIG_MMU_PAGE_4K + global tmpvar_23 + minimenu $w.config.f 7 6 "MMU page size" tmpvar_23 CONFIG_MMU_PAGE_4K menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"MMU page size\"" - $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_22 -value "4K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_22 -value "8K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_22 -value "16K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_22 -value "32K" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_22 -value "Programmable" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4K" -variable tmpvar_23 -value "4K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "8K" -variable tmpvar_23 -value "8K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "16K" -variable tmpvar_23 -value "16K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "32K" -variable tmpvar_23 -value "32K" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "Programmable" -variable tmpvar_23 -value "Programmable" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 @@ -2167,18 +2464,19 @@ proc menu7 {w title} { proc update_menu7 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu7.config.f.x0 normal {n l y}} else {configure_entry .menu7.config.f.x0 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x1 normal {x l}} else {configure_entry .menu7.config.f.x1 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x2 normal {x l}} else {configure_entry .menu7.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x3 normal {x l}} else {configure_entry .menu7.config.f.x3 disabled {x l}} global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {configure_entry .menu7.config.f.x4 normal {x l}} else {configure_entry .menu7.config.f.x4 disabled {x l}} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { configure_entry .menu7.config.f.x5 normal {n l y}} else {configure_entry .menu7.config.f.x5 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then {configure_entry .menu7.config.f.x6 normal {x l}} else {configure_entry .menu7.config.f.x6 disabled {x l}} } @@ -2186,55 +2484,60 @@ proc update_define_menu7 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE&15]} else {set CONFIG_MMU_ENABLE [expr $CONFIG_MMU_ENABLE|16]} - global tmpvar_18 + global tmpvar_19 global CONFIG_MMU_COMBINED - if {$tmpvar_18 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} + if {$tmpvar_19 == "combined"} then {set CONFIG_MMU_COMBINED 1} else {set CONFIG_MMU_COMBINED 0} global CONFIG_MMU_SPLIT - if {$tmpvar_18 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} - global tmpvar_19 + if {$tmpvar_19 == "split"} then {set CONFIG_MMU_SPLIT 1} else {set CONFIG_MMU_SPLIT 0} + global tmpvar_20 global CONFIG_MMU_REPARRAY - if {$tmpvar_19 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} + if {$tmpvar_20 == "LRU"} then {set CONFIG_MMU_REPARRAY 1} else {set CONFIG_MMU_REPARRAY 0} global CONFIG_MMU_REPINCREMENT - if {$tmpvar_19 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} - global tmpvar_20 + if {$tmpvar_20 == "Increment"} then {set CONFIG_MMU_REPINCREMENT 1} else {set CONFIG_MMU_REPINCREMENT 0} + global tmpvar_21 global CONFIG_MMU_I2 - if {$tmpvar_20 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} + if {$tmpvar_21 == "2"} then {set CONFIG_MMU_I2 1} else {set CONFIG_MMU_I2 0} global CONFIG_MMU_I4 - if {$tmpvar_20 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} + if {$tmpvar_21 == "4"} then {set CONFIG_MMU_I4 1} else {set CONFIG_MMU_I4 0} global CONFIG_MMU_I8 - if {$tmpvar_20 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} + if {$tmpvar_21 == "8"} then {set CONFIG_MMU_I8 1} else {set CONFIG_MMU_I8 0} global CONFIG_MMU_I16 - if {$tmpvar_20 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} + if {$tmpvar_21 == "16"} then {set CONFIG_MMU_I16 1} else {set CONFIG_MMU_I16 0} global CONFIG_MMU_I32 - if {$tmpvar_20 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} - global tmpvar_21 + if {$tmpvar_21 == "32"} then {set CONFIG_MMU_I32 1} else {set CONFIG_MMU_I32 0} + global CONFIG_MMU_I64 + if {$tmpvar_21 == "64"} then {set CONFIG_MMU_I64 1} else {set CONFIG_MMU_I64 0} + global tmpvar_22 global CONFIG_MMU_D2 - if {$tmpvar_21 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} + if {$tmpvar_22 == "2"} then {set CONFIG_MMU_D2 1} else {set CONFIG_MMU_D2 0} global CONFIG_MMU_D4 - if {$tmpvar_21 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} + if {$tmpvar_22 == "4"} then {set CONFIG_MMU_D4 1} else {set CONFIG_MMU_D4 0} global CONFIG_MMU_D8 - if {$tmpvar_21 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} + if {$tmpvar_22 == "8"} then {set CONFIG_MMU_D8 1} else {set CONFIG_MMU_D8 0} global CONFIG_MMU_D16 - if {$tmpvar_21 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} + if {$tmpvar_22 == "16"} then {set CONFIG_MMU_D16 1} else {set CONFIG_MMU_D16 0} global CONFIG_MMU_D32 - if {$tmpvar_21 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + if {$tmpvar_22 == "32"} then {set CONFIG_MMU_D32 1} else {set CONFIG_MMU_D32 0} + global CONFIG_MMU_D64 + if {$tmpvar_22 == "64"} then {set CONFIG_MMU_D64 1} else {set CONFIG_MMU_D64 0} global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB&15]} else {set CONFIG_MMU_FASTWB [expr $CONFIG_MMU_FASTWB|16]} - global tmpvar_22 + global tmpvar_23 global CONFIG_MMU_PAGE_4K - if {$tmpvar_22 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} + if {$tmpvar_23 == "4K"} then {set CONFIG_MMU_PAGE_4K 1} else {set CONFIG_MMU_PAGE_4K 0} global CONFIG_MMU_PAGE_8K - if {$tmpvar_22 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} + if {$tmpvar_23 == "8K"} then {set CONFIG_MMU_PAGE_8K 1} else {set CONFIG_MMU_PAGE_8K 0} global CONFIG_MMU_PAGE_16K - if {$tmpvar_22 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} + if {$tmpvar_23 == "16K"} then {set CONFIG_MMU_PAGE_16K 1} else {set CONFIG_MMU_PAGE_16K 0} global CONFIG_MMU_PAGE_32K - if {$tmpvar_22 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} + if {$tmpvar_23 == "32K"} then {set CONFIG_MMU_PAGE_32K 1} else {set CONFIG_MMU_PAGE_32K 0} global CONFIG_MMU_PAGE_PROG - if {$tmpvar_22 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} + if {$tmpvar_23 == "Programmable"} then {set CONFIG_MMU_PAGE_PROG 1} else {set CONFIG_MMU_PAGE_PROG 0} } @@ -2291,24 +2594,24 @@ proc menu8 {w title} { bool $w.config.f 8 0 "Enable LEON3 Debug support unit " CONFIG_DSU_ENABLE bool $w.config.f 8 1 "Instruction trace buffer" CONFIG_DSU_ITRACE - global tmpvar_23 - minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_23 CONFIG_DSU_ITRACESZ1 + global tmpvar_24 + minimenu $w.config.f 8 2 "Instruction trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ITRACESZ1 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"Instruction trace buffer size (kbytes)\"" - $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_23 -value "1" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_23 -value "2" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_23 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_23 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_23 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 bool $w.config.f 8 3 "AHB trace buffer" CONFIG_DSU_ATRACE - global tmpvar_24 - minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_24 CONFIG_DSU_ATRACESZ1 + global tmpvar_25 + minimenu $w.config.f 8 4 "AHB trace buffer size (kbytes)" tmpvar_25 CONFIG_DSU_ATRACESZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB trace buffer size (kbytes)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_24 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_24 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_24 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_24 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_24 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_25 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_25 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_25 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_25 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_25 -value "16" -command "update_active" menusplit $w $w.config.f.x4.x.menu 5 @@ -2348,17 +2651,18 @@ proc menu8 {w title} { proc update_menu8 {} { global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { configure_entry .menu8.config.f.x0 normal {n l y}} else {configure_entry .menu8.config.f.x0 disabled {y n l}} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x1 normal {n l y}} else {configure_entry .menu8.config.f.x1 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then {configure_entry .menu8.config.f.x2 normal {x l}} else {configure_entry .menu8.config.f.x2 disabled {x l}} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { configure_entry .menu8.config.f.x3 normal {n l y}} else {configure_entry .menu8.config.f.x3 disabled {y n l}} - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then {configure_entry .menu8.config.f.x4 normal {x l}} else {configure_entry .menu8.config.f.x4 disabled {x l}} } @@ -2366,37 +2670,38 @@ proc update_define_menu8 {} { update_define_mainmenu global CONFIG_MODULES global CONFIG_LEON3 + global CONFIG_LEON3_CUSTOM global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then { set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE&15]} else {set CONFIG_DSU_ENABLE [expr $CONFIG_DSU_ENABLE|16]} global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE&15]} else {set CONFIG_DSU_ITRACE [expr $CONFIG_DSU_ITRACE|16]} - global tmpvar_23 + global tmpvar_24 global CONFIG_DSU_ITRACESZ1 - if {$tmpvar_23 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} + if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ITRACESZ1 1} else {set CONFIG_DSU_ITRACESZ1 0} global CONFIG_DSU_ITRACESZ2 - if {$tmpvar_23 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} + if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ITRACESZ2 1} else {set CONFIG_DSU_ITRACESZ2 0} global CONFIG_DSU_ITRACESZ4 - if {$tmpvar_23 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} + if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ITRACESZ4 1} else {set CONFIG_DSU_ITRACESZ4 0} global CONFIG_DSU_ITRACESZ8 - if {$tmpvar_23 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} + if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ITRACESZ8 1} else {set CONFIG_DSU_ITRACESZ8 0} global CONFIG_DSU_ITRACESZ16 - if {$tmpvar_23 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} + if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ITRACESZ16 1} else {set CONFIG_DSU_ITRACESZ16 0} global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then { + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then { set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE&15]} else {set CONFIG_DSU_ATRACE [expr $CONFIG_DSU_ATRACE|16]} - global tmpvar_24 + global tmpvar_25 global CONFIG_DSU_ATRACESZ1 - if {$tmpvar_24 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} + if {$tmpvar_25 == "1"} then {set CONFIG_DSU_ATRACESZ1 1} else {set CONFIG_DSU_ATRACESZ1 0} global CONFIG_DSU_ATRACESZ2 - if {$tmpvar_24 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} + if {$tmpvar_25 == "2"} then {set CONFIG_DSU_ATRACESZ2 1} else {set CONFIG_DSU_ATRACESZ2 0} global CONFIG_DSU_ATRACESZ4 - if {$tmpvar_24 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} + if {$tmpvar_25 == "4"} then {set CONFIG_DSU_ATRACESZ4 1} else {set CONFIG_DSU_ATRACESZ4 0} global CONFIG_DSU_ATRACESZ8 - if {$tmpvar_24 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} + if {$tmpvar_25 == "8"} then {set CONFIG_DSU_ATRACESZ8 1} else {set CONFIG_DSU_ATRACESZ8 0} global CONFIG_DSU_ATRACESZ16 - if {$tmpvar_24 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} + if {$tmpvar_25 == "16"} then {set CONFIG_DSU_ATRACESZ16 1} else {set CONFIG_DSU_ATRACESZ16 0} } @@ -2452,16 +2757,23 @@ proc menu9 {w title} { bool $w.config.f 9 0 "Use LEON3-FT processor core " CONFIG_LEON3FT_EN - global tmpvar_25 - minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_25 CONFIG_IUFT_NONE + global tmpvar_26 + minimenu $w.config.f 9 1 "IU Register file protection " tmpvar_26 CONFIG_IUFT_NONE menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"IU Register file protection \"" - $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_25 -value "None" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_25 -value "Parity" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_25 -value "PDMR" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_25 -value "BCH" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_25 -value "TMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "None" -variable tmpvar_26 -value "None" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "Parity" -variable tmpvar_26 -value "Parity" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "PDMR" -variable tmpvar_26 -value "PDMR" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "BCH" -variable tmpvar_26 -value "BCH" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "TMR" -variable tmpvar_26 -value "TMR" -command "update_active" menusplit $w $w.config.f.x1.x.menu 5 - bool $w.config.f 9 2 "FPU Register file protection " CONFIG_FPUFT_EN + global tmpvar_27 + minimenu $w.config.f 9 2 "FPU Register file protection " tmpvar_27 CONFIG_FPUFT_NONE + menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"FPU Register file protection \"" + $w.config.f.x2.x.menu add radiobutton -label "None" -variable tmpvar_27 -value "None" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "Parity" -variable tmpvar_27 -value "Parity" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "PDMR" -variable tmpvar_27 -value "PDMR" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "TMR" -variable tmpvar_27 -value "TMR" -command "update_active" + menusplit $w $w.config.f.x2.x.menu 4 bool $w.config.f 9 3 "Register file error injection" CONFIG_RF_ERRINJ bool $w.config.f 9 4 "Cache memory protection " CONFIG_CACHE_FT_EN int $w.config.f 9 5 "Cache memory error injection" CONFIG_CACHE_ERRINJ @@ -2509,9 +2821,7 @@ proc update_menu9 {} { configure_entry .menu9.config.f.x0 normal {n l y}} else {configure_entry .menu9.config.f.x0 disabled {y n l}} if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {configure_entry .menu9.config.f.x1 normal {x l}} else {configure_entry .menu9.config.f.x1 disabled {x l}} global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - configure_entry .menu9.config.f.x2 normal {n l y}} else {configure_entry .menu9.config.f.x2 disabled {y n l}} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {configure_entry .menu9.config.f.x2 normal {x l}} else {configure_entry .menu9.config.f.x2 disabled {x l}} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { configure_entry .menu9.config.f.x3 normal {n l y}} else {configure_entry .menu9.config.f.x3 disabled {y n l}} @@ -2533,21 +2843,26 @@ proc update_define_menu9 {} { global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then { set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN&15]} else {set CONFIG_LEON3FT_EN [expr $CONFIG_LEON3FT_EN|16]} - global tmpvar_25 + global tmpvar_26 global CONFIG_IUFT_NONE - if {$tmpvar_25 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} + if {$tmpvar_26 == "None"} then {set CONFIG_IUFT_NONE 1} else {set CONFIG_IUFT_NONE 0} global CONFIG_IUFT_PAR - if {$tmpvar_25 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} + if {$tmpvar_26 == "Parity"} then {set CONFIG_IUFT_PAR 1} else {set CONFIG_IUFT_PAR 0} global CONFIG_IUFT_DMR - if {$tmpvar_25 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} + if {$tmpvar_26 == "PDMR"} then {set CONFIG_IUFT_DMR 1} else {set CONFIG_IUFT_DMR 0} global CONFIG_IUFT_BCH - if {$tmpvar_25 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} + if {$tmpvar_26 == "BCH"} then {set CONFIG_IUFT_BCH 1} else {set CONFIG_IUFT_BCH 0} global CONFIG_IUFT_TMR - if {$tmpvar_25 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} - global CONFIG_FPU_ENABLE - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN&15]} else {set CONFIG_FPUFT_EN [expr $CONFIG_FPUFT_EN|16]} + if {$tmpvar_26 == "TMR"} then {set CONFIG_IUFT_TMR 1} else {set CONFIG_IUFT_TMR 0} + global tmpvar_27 + global CONFIG_FPUFT_NONE + if {$tmpvar_27 == "None"} then {set CONFIG_FPUFT_NONE 1} else {set CONFIG_FPUFT_NONE 0} + global CONFIG_FPUFT_PAR + if {$tmpvar_27 == "Parity"} then {set CONFIG_FPUFT_PAR 1} else {set CONFIG_FPUFT_PAR 0} + global CONFIG_FPUFT_DMR + if {$tmpvar_27 == "PDMR"} then {set CONFIG_FPUFT_DMR 1} else {set CONFIG_FPUFT_DMR 0} + global CONFIG_FPUFT_TMR + if {$tmpvar_27 == "TMR"} then {set CONFIG_FPUFT_TMR 1} else {set CONFIG_FPUFT_TMR 0} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ&15]} else {set CONFIG_RF_ERRINJ [expr $CONFIG_RF_ERRINJ|16]} @@ -2856,14 +3171,14 @@ proc menu12 {w title} { bool $w.config.f 12 0 "Serial Debug Link (RS232) " CONFIG_DSU_UART bool $w.config.f 12 1 "JTAG Debug Link" CONFIG_DSU_JTAG bool $w.config.f 12 2 "Ethernet Debug Communication Link (EDCL)" CONFIG_DSU_ETH - global tmpvar_26 - minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_26 CONFIG_DSU_ETHSZ1 + global tmpvar_28 + minimenu $w.config.f 12 3 "Ethernet/AHB bridge buffer size (kbytes)" tmpvar_28 CONFIG_DSU_ETHSZ1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Ethernet/AHB bridge buffer size (kbytes)\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_26 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_26 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_26 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_26 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_26 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_28 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_28 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_28 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" menusplit $w $w.config.f.x3.x.menu 5 hex $w.config.f 12 4 "MSB 16 bits of IP address (hex) " CONFIG_DSU_IPMSB hex $w.config.f 12 5 "LSB 16 bits of IP address (hex) " CONFIG_DSU_IPLSB @@ -2937,17 +3252,17 @@ proc update_define_menu12 {} { global CONFIG_DSU_ETH if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH&15]} else {set CONFIG_DSU_ETH [expr $CONFIG_DSU_ETH|16]} - global tmpvar_26 + global tmpvar_28 global CONFIG_DSU_ETHSZ1 - if {$tmpvar_26 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} + if {$tmpvar_28 == "1"} then {set CONFIG_DSU_ETHSZ1 1} else {set CONFIG_DSU_ETHSZ1 0} global CONFIG_DSU_ETHSZ2 - if {$tmpvar_26 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} + if {$tmpvar_28 == "2"} then {set CONFIG_DSU_ETHSZ2 1} else {set CONFIG_DSU_ETHSZ2 0} global CONFIG_DSU_ETHSZ4 - if {$tmpvar_26 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} + if {$tmpvar_28 == "4"} then {set CONFIG_DSU_ETHSZ4 1} else {set CONFIG_DSU_ETHSZ4 0} global CONFIG_DSU_ETHSZ8 - if {$tmpvar_26 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} + if {$tmpvar_28 == "8"} then {set CONFIG_DSU_ETHSZ8 1} else {set CONFIG_DSU_ETHSZ8 0} global CONFIG_DSU_ETHSZ16 - if {$tmpvar_26 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} + if {$tmpvar_28 == "16"} then {set CONFIG_DSU_ETHSZ16 1} else {set CONFIG_DSU_ETHSZ16 0} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {validate_hex CONFIG_DSU_IPMSB "$CONFIG_DSU_IPMSB" C0A8} global CONFIG_DSU_IPLSB @@ -3226,32 +3541,32 @@ proc menu15 {w title} { int $w.config.f 15 3 "RAM waitstates" CONFIG_SRCTRL_RAMWS int $w.config.f 15 4 "IO waitstates" CONFIG_SRCTRL_IOWS bool $w.config.f 15 5 "Use read-modify-write for sub-word writes " CONFIG_SRCTRL_RMW - global tmpvar_27 - minimenu $w.config.f 15 6 "SRAM banks" tmpvar_27 CONFIG_SRCTRL_SRBANKS1 + global tmpvar_29 + minimenu $w.config.f 15 6 "SRAM banks" tmpvar_29 CONFIG_SRCTRL_SRBANKS1 menu $w.config.f.x6.x.menu -tearoffcommand "menutitle \"SRAM banks\"" - $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_27 -value "1" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_27 -value "2" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_27 -value "3" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_27 -value "4" -command "update_active" - $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_27 -value "5" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "3" -variable tmpvar_29 -value "3" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" + $w.config.f.x6.x.menu add radiobutton -label "5" -variable tmpvar_29 -value "5" -command "update_active" menusplit $w $w.config.f.x6.x.menu 5 - global tmpvar_28 - minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_28 CONFIG_SRCTRL_BANKSZ0 + global tmpvar_30 + minimenu $w.config.f 15 7 "SRAM bank size (kb) (0 for programmable)" tmpvar_30 CONFIG_SRCTRL_BANKSZ0 menu $w.config.f.x7.x.menu -tearoffcommand "menutitle \"SRAM bank size (kb) (0 for programmable)\"" - $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_28 -value "8" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_28 -value "16" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_28 -value "32" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_28 -value "64" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_28 -value "128" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_28 -value "256" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_28 -value "512" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_28 -value "1024" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_28 -value "2048" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_28 -value "4096" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_28 -value "8192" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_28 -value "16384" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_28 -value "32768" -command "update_active" - $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_28 -value "65536" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "128" -variable tmpvar_30 -value "128" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "256" -variable tmpvar_30 -value "256" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "512" -variable tmpvar_30 -value "512" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "1024" -variable tmpvar_30 -value "1024" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "2048" -variable tmpvar_30 -value "2048" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "4096" -variable tmpvar_30 -value "4096" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "8192" -variable tmpvar_30 -value "8192" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "16384" -variable tmpvar_30 -value "16384" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "32768" -variable tmpvar_30 -value "32768" -command "update_active" + $w.config.f.x7.x.menu add radiobutton -label "65536" -variable tmpvar_30 -value "65536" -command "update_active" menusplit $w $w.config.f.x7.x.menu 14 int $w.config.f 15 8 "PROM bank select address bit (0 - 28)" CONFIG_SRCTRL_ROMASEL @@ -3327,46 +3642,46 @@ proc update_define_menu15 {} { global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then { set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW&15]} else {set CONFIG_SRCTRL_RMW [expr $CONFIG_SRCTRL_RMW|16]} - global tmpvar_27 + global tmpvar_29 global CONFIG_SRCTRL_SRBANKS1 - if {$tmpvar_27 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} + if {$tmpvar_29 == "1"} then {set CONFIG_SRCTRL_SRBANKS1 1} else {set CONFIG_SRCTRL_SRBANKS1 0} global CONFIG_SRCTRL_SRBANKS2 - if {$tmpvar_27 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} + if {$tmpvar_29 == "2"} then {set CONFIG_SRCTRL_SRBANKS2 1} else {set CONFIG_SRCTRL_SRBANKS2 0} global CONFIG_SRCTRL_SRBANKS3 - if {$tmpvar_27 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} + if {$tmpvar_29 == "3"} then {set CONFIG_SRCTRL_SRBANKS3 1} else {set CONFIG_SRCTRL_SRBANKS3 0} global CONFIG_SRCTRL_SRBANKS4 - if {$tmpvar_27 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} + if {$tmpvar_29 == "4"} then {set CONFIG_SRCTRL_SRBANKS4 1} else {set CONFIG_SRCTRL_SRBANKS4 0} global CONFIG_SRCTRL_SRBANKS5 - if {$tmpvar_27 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} - global tmpvar_28 + if {$tmpvar_29 == "5"} then {set CONFIG_SRCTRL_SRBANKS5 1} else {set CONFIG_SRCTRL_SRBANKS5 0} + global tmpvar_30 global CONFIG_SRCTRL_BANKSZ0 - if {$tmpvar_28 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} + if {$tmpvar_30 == "8"} then {set CONFIG_SRCTRL_BANKSZ0 1} else {set CONFIG_SRCTRL_BANKSZ0 0} global CONFIG_SRCTRL_BANKSZ1 - if {$tmpvar_28 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} + if {$tmpvar_30 == "16"} then {set CONFIG_SRCTRL_BANKSZ1 1} else {set CONFIG_SRCTRL_BANKSZ1 0} global CONFIG_SRCTRL_BANKSZ2 - if {$tmpvar_28 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} + if {$tmpvar_30 == "32"} then {set CONFIG_SRCTRL_BANKSZ2 1} else {set CONFIG_SRCTRL_BANKSZ2 0} global CONFIG_SRCTRL_BANKSZ3 - if {$tmpvar_28 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} + if {$tmpvar_30 == "64"} then {set CONFIG_SRCTRL_BANKSZ3 1} else {set CONFIG_SRCTRL_BANKSZ3 0} global CONFIG_SRCTRL_BANKSZ4 - if {$tmpvar_28 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} + if {$tmpvar_30 == "128"} then {set CONFIG_SRCTRL_BANKSZ4 1} else {set CONFIG_SRCTRL_BANKSZ4 0} global CONFIG_SRCTRL_BANKSZ5 - if {$tmpvar_28 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} + if {$tmpvar_30 == "256"} then {set CONFIG_SRCTRL_BANKSZ5 1} else {set CONFIG_SRCTRL_BANKSZ5 0} global CONFIG_SRCTRL_BANKSZ6 - if {$tmpvar_28 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} + if {$tmpvar_30 == "512"} then {set CONFIG_SRCTRL_BANKSZ6 1} else {set CONFIG_SRCTRL_BANKSZ6 0} global CONFIG_SRCTRL_BANKSZ7 - if {$tmpvar_28 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} + if {$tmpvar_30 == "1024"} then {set CONFIG_SRCTRL_BANKSZ7 1} else {set CONFIG_SRCTRL_BANKSZ7 0} global CONFIG_SRCTRL_BANKSZ8 - if {$tmpvar_28 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} + if {$tmpvar_30 == "2048"} then {set CONFIG_SRCTRL_BANKSZ8 1} else {set CONFIG_SRCTRL_BANKSZ8 0} global CONFIG_SRCTRL_BANKSZ9 - if {$tmpvar_28 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} + if {$tmpvar_30 == "4096"} then {set CONFIG_SRCTRL_BANKSZ9 1} else {set CONFIG_SRCTRL_BANKSZ9 0} global CONFIG_SRCTRL_BANKSZ10 - if {$tmpvar_28 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} + if {$tmpvar_30 == "8192"} then {set CONFIG_SRCTRL_BANKSZ10 1} else {set CONFIG_SRCTRL_BANKSZ10 0} global CONFIG_SRCTRL_BANKSZ11 - if {$tmpvar_28 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} + if {$tmpvar_30 == "16384"} then {set CONFIG_SRCTRL_BANKSZ11 1} else {set CONFIG_SRCTRL_BANKSZ11 0} global CONFIG_SRCTRL_BANKSZ12 - if {$tmpvar_28 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} + if {$tmpvar_30 == "32768"} then {set CONFIG_SRCTRL_BANKSZ12 1} else {set CONFIG_SRCTRL_BANKSZ12 0} global CONFIG_SRCTRL_BANKSZ13 - if {$tmpvar_28 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} + if {$tmpvar_30 == "65536"} then {set CONFIG_SRCTRL_BANKSZ13 1} else {set CONFIG_SRCTRL_BANKSZ13 0} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {validate_int CONFIG_SRCTRL_ROMASEL "$CONFIG_SRCTRL_ROMASEL" 19} } @@ -3718,16 +4033,16 @@ proc menu18 {w title} { hex $w.config.f 18 1 "ROM start address (haddr\[31:20\]) " CONFIG_AHBROM_START bool $w.config.f 18 2 "Pipelined ROM access " CONFIG_AHBROM_PIPE bool $w.config.f 18 3 "On-chip AHB RAM " CONFIG_AHBRAM_ENABLE - global tmpvar_29 - minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_29 CONFIG_AHBRAM_SZ1 + global tmpvar_31 + minimenu $w.config.f 18 4 "AHB RAM size (Kbyte)" tmpvar_31 CONFIG_AHBRAM_SZ1 menu $w.config.f.x4.x.menu -tearoffcommand "menutitle \"AHB RAM size (Kbyte)\"" - $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_29 -value "1" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_29 -value "2" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_29 -value "4" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_29 -value "8" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_29 -value "16" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_29 -value "32" -command "update_active" - $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_29 -value "64" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "1" -variable tmpvar_31 -value "1" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "2" -variable tmpvar_31 -value "2" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "4" -variable tmpvar_31 -value "4" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" + $w.config.f.x4.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" menusplit $w $w.config.f.x4.x.menu 7 hex $w.config.f 18 5 "RAM start address (haddr\[31:20\]) " CONFIG_AHBRAM_START @@ -3789,21 +4104,21 @@ proc update_define_menu18 {} { global CONFIG_AHBROM_PIPE if {($CONFIG_AHBROM_ENABLE == 1)} then { set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE&15]} else {set CONFIG_AHBROM_PIPE [expr $CONFIG_AHBROM_PIPE|16]} - global tmpvar_29 + global tmpvar_31 global CONFIG_AHBRAM_SZ1 - if {$tmpvar_29 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} + if {$tmpvar_31 == "1"} then {set CONFIG_AHBRAM_SZ1 1} else {set CONFIG_AHBRAM_SZ1 0} global CONFIG_AHBRAM_SZ2 - if {$tmpvar_29 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} + if {$tmpvar_31 == "2"} then {set CONFIG_AHBRAM_SZ2 1} else {set CONFIG_AHBRAM_SZ2 0} global CONFIG_AHBRAM_SZ4 - if {$tmpvar_29 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} + if {$tmpvar_31 == "4"} then {set CONFIG_AHBRAM_SZ4 1} else {set CONFIG_AHBRAM_SZ4 0} global CONFIG_AHBRAM_SZ8 - if {$tmpvar_29 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} + if {$tmpvar_31 == "8"} then {set CONFIG_AHBRAM_SZ8 1} else {set CONFIG_AHBRAM_SZ8 0} global CONFIG_AHBRAM_SZ16 - if {$tmpvar_29 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} + if {$tmpvar_31 == "16"} then {set CONFIG_AHBRAM_SZ16 1} else {set CONFIG_AHBRAM_SZ16 0} global CONFIG_AHBRAM_SZ32 - if {$tmpvar_29 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} + if {$tmpvar_31 == "32"} then {set CONFIG_AHBRAM_SZ32 1} else {set CONFIG_AHBRAM_SZ32 0} global CONFIG_AHBRAM_SZ64 - if {$tmpvar_29 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} + if {$tmpvar_31 == "64"} then {set CONFIG_AHBRAM_SZ64 1} else {set CONFIG_AHBRAM_SZ64 0} global CONFIG_AHBRAM_ENABLE global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {validate_hex CONFIG_AHBRAM_START "$CONFIG_AHBRAM_START" A00} @@ -3863,14 +4178,14 @@ proc menu19 {w title} { bool $w.config.f 19 0 "Gaisler Research 10/100/1000 Mbit Ethernet MAC " CONFIG_GRETH_ENABLE bool $w.config.f 19 1 "Enable 1000 Mbit support " CONFIG_GRETH_GIGA - global tmpvar_30 - minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_30 CONFIG_GRETH_FIFO4 + global tmpvar_32 + minimenu $w.config.f 19 2 "AHB FIFO size (words) " tmpvar_32 CONFIG_GRETH_FIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB FIFO size (words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_30 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_30 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_30 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_30 -value "32" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_30 -value "64" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_32 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_32 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_32 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_32 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "64" -variable tmpvar_32 -value "64" -command "update_active" menusplit $w $w.config.f.x2.x.menu 5 @@ -3924,17 +4239,17 @@ proc update_define_menu19 {} { global CONFIG_GRETH_GIGA if {($CONFIG_GRETH_ENABLE == 1)} then { set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA&15]} else {set CONFIG_GRETH_GIGA [expr $CONFIG_GRETH_GIGA|16]} - global tmpvar_30 + global tmpvar_32 global CONFIG_GRETH_FIFO4 - if {$tmpvar_30 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} + if {$tmpvar_32 == "4"} then {set CONFIG_GRETH_FIFO4 1} else {set CONFIG_GRETH_FIFO4 0} global CONFIG_GRETH_FIFO8 - if {$tmpvar_30 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} + if {$tmpvar_32 == "8"} then {set CONFIG_GRETH_FIFO8 1} else {set CONFIG_GRETH_FIFO8 0} global CONFIG_GRETH_FIFO16 - if {$tmpvar_30 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} + if {$tmpvar_32 == "16"} then {set CONFIG_GRETH_FIFO16 1} else {set CONFIG_GRETH_FIFO16 0} global CONFIG_GRETH_FIFO32 - if {$tmpvar_30 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} + if {$tmpvar_32 == "32"} then {set CONFIG_GRETH_FIFO32 1} else {set CONFIG_GRETH_FIFO32 0} global CONFIG_GRETH_FIFO64 - if {$tmpvar_30 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} + if {$tmpvar_32 == "64"} then {set CONFIG_GRETH_FIFO64 1} else {set CONFIG_GRETH_FIFO64 0} } @@ -4125,29 +4440,29 @@ proc menu21 {w title} { bool $w.config.f 21 2 "PCI DMA controller " CONFIG_PCI_MASTER_TARGET_DMA hex $w.config.f 21 3 "PCI vendor ID" CONFIG_PCI_VENDORID hex $w.config.f 21 4 "PCI device ID" CONFIG_PCI_DEVICEID - global tmpvar_31 - minimenu $w.config.f 21 5 "PCI FIFO depth" tmpvar_31 CONFIG_PCI_FIFO0 + global tmpvar_33 + minimenu $w.config.f 21 5 "PCI FIFO depth" tmpvar_33 CONFIG_PCI_FIFO0 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"PCI FIFO depth\"" - $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_31 -value "None" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_31 -value "8" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_31 -value "16" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_31 -value "32" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_31 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_31 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "None" -variable tmpvar_33 -value "None" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_33 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_33 -value "128" -command "update_active" menusplit $w $w.config.f.x5.x.menu 6 hex $w.config.f 21 6 "PCI initiator address (haddr\[31:20\]) " CONFIG_PCI_HADDR bool $w.config.f 21 7 "PCI arbiter " CONFIG_PCI_ARBITER bool $w.config.f 21 8 "PCI arbiter APB interface " CONFIG_PCI_ARBITER_APB int $w.config.f 21 9 "Number of PCI REQ/GNT pairs" CONFIG_PCI_ARBITER_NREQ bool $w.config.f 21 10 "Enable PCI trace buffer " CONFIG_PCI_TRACE - global tmpvar_32 - minimenu $w.config.f 21 11 "PCI trace buffer depth" tmpvar_32 CONFIG_PCI_TRACE256 + global tmpvar_34 + minimenu $w.config.f 21 11 "PCI trace buffer depth" tmpvar_34 CONFIG_PCI_TRACE256 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"PCI trace buffer depth\"" - $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_32 -value "256" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_32 -value "512" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_32 -value "1024" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_32 -value "2048" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_32 -value "4096" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "256" -variable tmpvar_34 -value "256" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "512" -variable tmpvar_34 -value "512" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1024" -variable tmpvar_34 -value "1024" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2048" -variable tmpvar_34 -value "2048" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "4096" -variable tmpvar_34 -value "4096" -command "update_active" menusplit $w $w.config.f.x11.x.menu 5 @@ -4231,19 +4546,19 @@ proc update_define_menu21 {} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_VENDORID "$CONFIG_PCI_VENDORID" 1AC8} global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_DEVICEID "$CONFIG_PCI_DEVICEID" 0054} - global tmpvar_31 + global tmpvar_33 global CONFIG_PCI_FIFO0 - if {$tmpvar_31 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} + if {$tmpvar_33 == "None"} then {set CONFIG_PCI_FIFO0 1} else {set CONFIG_PCI_FIFO0 0} global CONFIG_PCI_FIFO8 - if {$tmpvar_31 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} + if {$tmpvar_33 == "8"} then {set CONFIG_PCI_FIFO8 1} else {set CONFIG_PCI_FIFO8 0} global CONFIG_PCI_FIFO16 - if {$tmpvar_31 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} + if {$tmpvar_33 == "16"} then {set CONFIG_PCI_FIFO16 1} else {set CONFIG_PCI_FIFO16 0} global CONFIG_PCI_FIFO32 - if {$tmpvar_31 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} + if {$tmpvar_33 == "32"} then {set CONFIG_PCI_FIFO32 1} else {set CONFIG_PCI_FIFO32 0} global CONFIG_PCI_FIFO64 - if {$tmpvar_31 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} + if {$tmpvar_33 == "64"} then {set CONFIG_PCI_FIFO64 1} else {set CONFIG_PCI_FIFO64 0} global CONFIG_PCI_FIFO128 - if {$tmpvar_31 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} + if {$tmpvar_33 == "128"} then {set CONFIG_PCI_FIFO128 1} else {set CONFIG_PCI_FIFO128 0} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {validate_hex CONFIG_PCI_HADDR "$CONFIG_PCI_HADDR" E00} global CONFIG_PCI_ARBITER @@ -4252,17 +4567,17 @@ proc update_define_menu21 {} { set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB&15]} else {set CONFIG_PCI_ARBITER_APB [expr $CONFIG_PCI_ARBITER_APB|16]} global CONFIG_PCI_ARBITER_NREQ if {($CONFIG_PCI_ARBITER == 1)} then {validate_int CONFIG_PCI_ARBITER_NREQ "$CONFIG_PCI_ARBITER_NREQ" 4} - global tmpvar_32 + global tmpvar_34 global CONFIG_PCI_TRACE256 - if {$tmpvar_32 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} + if {$tmpvar_34 == "256"} then {set CONFIG_PCI_TRACE256 1} else {set CONFIG_PCI_TRACE256 0} global CONFIG_PCI_TRACE512 - if {$tmpvar_32 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} + if {$tmpvar_34 == "512"} then {set CONFIG_PCI_TRACE512 1} else {set CONFIG_PCI_TRACE512 0} global CONFIG_PCI_TRACE1024 - if {$tmpvar_32 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} + if {$tmpvar_34 == "1024"} then {set CONFIG_PCI_TRACE1024 1} else {set CONFIG_PCI_TRACE1024 0} global CONFIG_PCI_TRACE2048 - if {$tmpvar_32 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} + if {$tmpvar_34 == "2048"} then {set CONFIG_PCI_TRACE2048 1} else {set CONFIG_PCI_TRACE2048 0} global CONFIG_PCI_TRACE4096 - if {$tmpvar_32 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} + if {$tmpvar_34 == "4096"} then {set CONFIG_PCI_TRACE4096 1} else {set CONFIG_PCI_TRACE4096 0} } @@ -4319,57 +4634,57 @@ proc menu22 {w title} { bool $w.config.f 22 0 "Enable Spacewire links " CONFIG_SPW_ENABLE int $w.config.f 22 1 "Number of links (1 - 3)" CONFIG_SPW_NUM - global tmpvar_33 - minimenu $w.config.f 22 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_33 CONFIG_SPW_AHBFIFO4 + global tmpvar_35 + minimenu $w.config.f 22 2 "AHB RX/TX FIFO size (32-bit words) " tmpvar_35 CONFIG_SPW_AHBFIFO4 menu $w.config.f.x2.x.menu -tearoffcommand "menutitle \"AHB RX/TX FIFO size (32-bit words) \"" - $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_33 -value "4" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_33 -value "8" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_33 -value "16" -command "update_active" - $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_33 -value "32" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "4" -variable tmpvar_35 -value "4" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "8" -variable tmpvar_35 -value "8" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "16" -variable tmpvar_35 -value "16" -command "update_active" + $w.config.f.x2.x.menu add radiobutton -label "32" -variable tmpvar_35 -value "32" -command "update_active" menusplit $w $w.config.f.x2.x.menu 4 - global tmpvar_34 - minimenu $w.config.f 22 3 "Receiver FIFO size (bytes) " tmpvar_34 CONFIG_SPW_RXFIFO16 + global tmpvar_36 + minimenu $w.config.f 22 3 "Receiver FIFO size (bytes) " tmpvar_36 CONFIG_SPW_RXFIFO16 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"Receiver FIFO size (bytes) \"" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_34 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_34 -value "32" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_34 -value "64" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_36 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_36 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "64" -variable tmpvar_36 -value "64" -command "update_active" menusplit $w $w.config.f.x3.x.menu 3 bool $w.config.f 22 4 "Enable RMAP protocol " CONFIG_SPW_RMAP - global tmpvar_35 - minimenu $w.config.f 22 5 "RMAP buffer size (bytes) " tmpvar_35 CONFIG_SPW_RMAPBUF2 + global tmpvar_37 + minimenu $w.config.f 22 5 "RMAP buffer size (bytes) " tmpvar_37 CONFIG_SPW_RMAPBUF2 menu $w.config.f.x5.x.menu -tearoffcommand "menutitle \"RMAP buffer size (bytes) \"" - $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_35 -value "64" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_35 -value "128" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_35 -value "192" -command "update_active" - $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_35 -value "256" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "64" -variable tmpvar_37 -value "64" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "128" -variable tmpvar_37 -value "128" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "192" -variable tmpvar_37 -value "192" -command "update_active" + $w.config.f.x5.x.menu add radiobutton -label "256" -variable tmpvar_37 -value "256" -command "update_active" menusplit $w $w.config.f.x5.x.menu 4 bool $w.config.f 22 6 "Enable RMAP CRC check " CONFIG_SPW_RMAPCRC bool $w.config.f 22 7 "Enable Rx unaligned transfers " CONFIG_SPW_RXUNAL bool $w.config.f 22 8 "Spacewire FIFO protection " CONFIG_SPW_FT bool $w.config.f 22 9 "Use GRSPWC netlist " CONFIG_SPW_NETLIST int $w.config.f 22 10 "Number of ports (1 - 2)" CONFIG_SPW_PORTS - global tmpvar_36 - minimenu $w.config.f 22 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_36 CONFIG_SPW_GRSPW1 + global tmpvar_38 + minimenu $w.config.f 22 11 "Select GRSPW core (GRSPW1/GRSPW2) " tmpvar_38 CONFIG_SPW_GRSPW1 menu $w.config.f.x11.x.menu -tearoffcommand "menutitle \"Select GRSPW core (GRSPW1/GRSPW2) \"" - $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_36 -value "1" -command "update_active" - $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_36 -value "2" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "1" -variable tmpvar_38 -value "1" -command "update_active" + $w.config.f.x11.x.menu add radiobutton -label "2" -variable tmpvar_38 -value "2" -command "update_active" menusplit $w $w.config.f.x11.x.menu 2 int $w.config.f 22 12 "Number of DMA channels (1 - 4)" CONFIG_SPW_DMACHAN bool $w.config.f 22 13 "Receiver and transmitter uses same clock " CONFIG_SPW_RTSAME - global tmpvar_37 - minimenu $w.config.f 22 14 "Select receiver clock type " tmpvar_37 CONFIG_SPW_RX_SDR + global tmpvar_39 + minimenu $w.config.f 22 14 "Select receiver clock type " tmpvar_39 CONFIG_SPW_RX_SDR menu $w.config.f.x14.x.menu -tearoffcommand "menutitle \"Select receiver clock type \"" - $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_37 -value "SDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_37 -value "DDR" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_37 -value "Xor" -command "update_active" - $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_37 -value "Aeroflex" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "SDR" -variable tmpvar_39 -value "SDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "DDR" -variable tmpvar_39 -value "DDR" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Xor" -variable tmpvar_39 -value "Xor" -command "update_active" + $w.config.f.x14.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_39 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x14.x.menu 4 - global tmpvar_38 - minimenu $w.config.f 22 15 "Select transmitter clock type " tmpvar_38 CONFIG_SPW_TX_SDR + global tmpvar_40 + minimenu $w.config.f 22 15 "Select transmitter clock type " tmpvar_40 CONFIG_SPW_TX_SDR menu $w.config.f.x15.x.menu -tearoffcommand "menutitle \"Select transmitter clock type \"" - $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_38 -value "SDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_38 -value "DDR" -command "update_active" - $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_38 -value "Aeroflex" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "SDR" -variable tmpvar_40 -value "SDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "DDR" -variable tmpvar_40 -value "DDR" -command "update_active" + $w.config.f.x15.x.menu add radiobutton -label "Aeroflex" -variable tmpvar_40 -value "Aeroflex" -command "update_active" menusplit $w $w.config.f.x15.x.menu 3 @@ -4449,34 +4764,34 @@ proc update_define_menu22 {} { global CONFIG_SPW_ENABLE global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_NUM "$CONFIG_SPW_NUM" 1} - global tmpvar_33 + global tmpvar_35 global CONFIG_SPW_AHBFIFO4 - if {$tmpvar_33 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} + if {$tmpvar_35 == "4"} then {set CONFIG_SPW_AHBFIFO4 1} else {set CONFIG_SPW_AHBFIFO4 0} global CONFIG_SPW_AHBFIFO8 - if {$tmpvar_33 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} + if {$tmpvar_35 == "8"} then {set CONFIG_SPW_AHBFIFO8 1} else {set CONFIG_SPW_AHBFIFO8 0} global CONFIG_SPW_AHBFIFO16 - if {$tmpvar_33 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} + if {$tmpvar_35 == "16"} then {set CONFIG_SPW_AHBFIFO16 1} else {set CONFIG_SPW_AHBFIFO16 0} global CONFIG_SPW_AHBFIFO32 - if {$tmpvar_33 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} - global tmpvar_34 + if {$tmpvar_35 == "32"} then {set CONFIG_SPW_AHBFIFO32 1} else {set CONFIG_SPW_AHBFIFO32 0} + global tmpvar_36 global CONFIG_SPW_RXFIFO16 - if {$tmpvar_34 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} + if {$tmpvar_36 == "16"} then {set CONFIG_SPW_RXFIFO16 1} else {set CONFIG_SPW_RXFIFO16 0} global CONFIG_SPW_RXFIFO32 - if {$tmpvar_34 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} + if {$tmpvar_36 == "32"} then {set CONFIG_SPW_RXFIFO32 1} else {set CONFIG_SPW_RXFIFO32 0} global CONFIG_SPW_RXFIFO64 - if {$tmpvar_34 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} + if {$tmpvar_36 == "64"} then {set CONFIG_SPW_RXFIFO64 1} else {set CONFIG_SPW_RXFIFO64 0} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP&15]} else {set CONFIG_SPW_RMAP [expr $CONFIG_SPW_RMAP|16]} - global tmpvar_35 + global tmpvar_37 global CONFIG_SPW_RMAPBUF2 - if {$tmpvar_35 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} + if {$tmpvar_37 == "64"} then {set CONFIG_SPW_RMAPBUF2 1} else {set CONFIG_SPW_RMAPBUF2 0} global CONFIG_SPW_RMAPBUF4 - if {$tmpvar_35 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} + if {$tmpvar_37 == "128"} then {set CONFIG_SPW_RMAPBUF4 1} else {set CONFIG_SPW_RMAPBUF4 0} global CONFIG_SPW_RMAPBUF6 - if {$tmpvar_35 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} + if {$tmpvar_37 == "192"} then {set CONFIG_SPW_RMAPBUF6 1} else {set CONFIG_SPW_RMAPBUF6 0} global CONFIG_SPW_RMAPBUF8 - if {$tmpvar_35 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} + if {$tmpvar_37 == "256"} then {set CONFIG_SPW_RMAPBUF8 1} else {set CONFIG_SPW_RMAPBUF8 0} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then { set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC&15]} else {set CONFIG_SPW_RMAPCRC [expr $CONFIG_SPW_RMAPCRC|16]} @@ -4491,32 +4806,32 @@ proc update_define_menu22 {} { set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST&15]} else {set CONFIG_SPW_NETLIST [expr $CONFIG_SPW_NETLIST|16]} global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {validate_int CONFIG_SPW_PORTS "$CONFIG_SPW_PORTS" 1} - global tmpvar_36 + global tmpvar_38 global CONFIG_SPW_GRSPW1 - if {$tmpvar_36 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} + if {$tmpvar_38 == "1"} then {set CONFIG_SPW_GRSPW1 1} else {set CONFIG_SPW_GRSPW1 0} global CONFIG_SPW_GRSPW2 - if {$tmpvar_36 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} + if {$tmpvar_38 == "2"} then {set CONFIG_SPW_GRSPW2 1} else {set CONFIG_SPW_GRSPW2 0} global CONFIG_SPW_DMACHAN if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {validate_int CONFIG_SPW_DMACHAN "$CONFIG_SPW_DMACHAN" 1} global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME&15]} else {set CONFIG_SPW_RTSAME [expr $CONFIG_SPW_RTSAME|16]} - global tmpvar_37 + global tmpvar_39 global CONFIG_SPW_RX_SDR - if {$tmpvar_37 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} + if {$tmpvar_39 == "SDR"} then {set CONFIG_SPW_RX_SDR 1} else {set CONFIG_SPW_RX_SDR 0} global CONFIG_SPW_RX_DDR - if {$tmpvar_37 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} + if {$tmpvar_39 == "DDR"} then {set CONFIG_SPW_RX_DDR 1} else {set CONFIG_SPW_RX_DDR 0} global CONFIG_SPW_RX_XOR - if {$tmpvar_37 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} + if {$tmpvar_39 == "Xor"} then {set CONFIG_SPW_RX_XOR 1} else {set CONFIG_SPW_RX_XOR 0} global CONFIG_SPW_RX_AFLEX - if {$tmpvar_37 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} - global tmpvar_38 + if {$tmpvar_39 == "Aeroflex"} then {set CONFIG_SPW_RX_AFLEX 1} else {set CONFIG_SPW_RX_AFLEX 0} + global tmpvar_40 global CONFIG_SPW_TX_SDR - if {$tmpvar_38 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} + if {$tmpvar_40 == "SDR"} then {set CONFIG_SPW_TX_SDR 1} else {set CONFIG_SPW_TX_SDR 0} global CONFIG_SPW_TX_DDR - if {$tmpvar_38 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} + if {$tmpvar_40 == "DDR"} then {set CONFIG_SPW_TX_DDR 1} else {set CONFIG_SPW_TX_DDR 0} global CONFIG_SPW_TX_AFLEX - if {$tmpvar_38 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} + if {$tmpvar_40 == "Aeroflex"} then {set CONFIG_SPW_TX_AFLEX 1} else {set CONFIG_SPW_TX_AFLEX 0} } @@ -4572,26 +4887,26 @@ proc menu23 {w title} { bool $w.config.f 23 0 "Enable console UART " CONFIG_UART1_ENABLE - global tmpvar_39 - minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_39 CONFIG_UA1_FIFO1 + global tmpvar_41 + minimenu $w.config.f 23 1 "UART1 FIFO depth" tmpvar_41 CONFIG_UA1_FIFO1 menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"UART1 FIFO depth\"" - $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_39 -value "1" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_39 -value "2" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_39 -value "4" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_39 -value "8" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_39 -value "16" -command "update_active" - $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_39 -value "32" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "1" -variable tmpvar_41 -value "1" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "2" -variable tmpvar_41 -value "2" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "4" -variable tmpvar_41 -value "4" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "8" -variable tmpvar_41 -value "8" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "16" -variable tmpvar_41 -value "16" -command "update_active" + $w.config.f.x1.x.menu add radiobutton -label "32" -variable tmpvar_41 -value "32" -command "update_active" menusplit $w $w.config.f.x1.x.menu 6 bool $w.config.f 23 2 "Enable secondary UART " CONFIG_UART2_ENABLE - global tmpvar_40 - minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_40 CONFIG_UA2_FIFO1 + global tmpvar_42 + minimenu $w.config.f 23 3 "UART2 FIFO depth" tmpvar_42 CONFIG_UA2_FIFO1 menu $w.config.f.x3.x.menu -tearoffcommand "menutitle \"UART2 FIFO depth\"" - $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_40 -value "1" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_40 -value "2" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_40 -value "4" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_40 -value "8" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_40 -value "16" -command "update_active" - $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_40 -value "32" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "1" -variable tmpvar_42 -value "1" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "2" -variable tmpvar_42 -value "2" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "4" -variable tmpvar_42 -value "4" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "8" -variable tmpvar_42 -value "8" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "16" -variable tmpvar_42 -value "16" -command "update_active" + $w.config.f.x3.x.menu add radiobutton -label "32" -variable tmpvar_42 -value "32" -command "update_active" menusplit $w $w.config.f.x3.x.menu 6 bool $w.config.f 23 4 "Enable LEON3 interrupt controller " CONFIG_IRQ3_ENABLE bool $w.config.f 23 5 "Enable secondary interrupts " CONFIG_IRQ3_SEC @@ -4682,32 +4997,32 @@ proc update_menu23 {} { proc update_define_menu23 {} { update_define_mainmenu global CONFIG_MODULES - global tmpvar_39 + global tmpvar_41 global CONFIG_UA1_FIFO1 - if {$tmpvar_39 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} + if {$tmpvar_41 == "1"} then {set CONFIG_UA1_FIFO1 1} else {set CONFIG_UA1_FIFO1 0} global CONFIG_UA1_FIFO2 - if {$tmpvar_39 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} + if {$tmpvar_41 == "2"} then {set CONFIG_UA1_FIFO2 1} else {set CONFIG_UA1_FIFO2 0} global CONFIG_UA1_FIFO4 - if {$tmpvar_39 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} + if {$tmpvar_41 == "4"} then {set CONFIG_UA1_FIFO4 1} else {set CONFIG_UA1_FIFO4 0} global CONFIG_UA1_FIFO8 - if {$tmpvar_39 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} + if {$tmpvar_41 == "8"} then {set CONFIG_UA1_FIFO8 1} else {set CONFIG_UA1_FIFO8 0} global CONFIG_UA1_FIFO16 - if {$tmpvar_39 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} + if {$tmpvar_41 == "16"} then {set CONFIG_UA1_FIFO16 1} else {set CONFIG_UA1_FIFO16 0} global CONFIG_UA1_FIFO32 - if {$tmpvar_39 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} - global tmpvar_40 + if {$tmpvar_41 == "32"} then {set CONFIG_UA1_FIFO32 1} else {set CONFIG_UA1_FIFO32 0} + global tmpvar_42 global CONFIG_UA2_FIFO1 - if {$tmpvar_40 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} + if {$tmpvar_42 == "1"} then {set CONFIG_UA2_FIFO1 1} else {set CONFIG_UA2_FIFO1 0} global CONFIG_UA2_FIFO2 - if {$tmpvar_40 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} + if {$tmpvar_42 == "2"} then {set CONFIG_UA2_FIFO2 1} else {set CONFIG_UA2_FIFO2 0} global CONFIG_UA2_FIFO4 - if {$tmpvar_40 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} + if {$tmpvar_42 == "4"} then {set CONFIG_UA2_FIFO4 1} else {set CONFIG_UA2_FIFO4 0} global CONFIG_UA2_FIFO8 - if {$tmpvar_40 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} + if {$tmpvar_42 == "8"} then {set CONFIG_UA2_FIFO8 1} else {set CONFIG_UA2_FIFO8 0} global CONFIG_UA2_FIFO16 - if {$tmpvar_40 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} + if {$tmpvar_42 == "16"} then {set CONFIG_UA2_FIFO16 1} else {set CONFIG_UA2_FIFO16 0} global CONFIG_UA2_FIFO32 - if {$tmpvar_40 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} + if {$tmpvar_42 == "32"} then {set CONFIG_UA2_FIFO32 1} else {set CONFIG_UA2_FIFO32 0} global CONFIG_IRQ3_ENABLE global CONFIG_IRQ3_SEC if {($CONFIG_IRQ3_ENABLE == 1)} then { @@ -4877,7 +5192,8 @@ set CONFIG_SYN_SMIC13 0 set CONFIG_SYN_TM65GPLUS 0 set CONFIG_SYN_TSMC90 0 set CONFIG_SYN_UMC 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 set CONFIG_SYN_SPARTAN6 0 @@ -4887,6 +5203,8 @@ set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -4911,6 +5229,7 @@ set CONFIG_CLK_PRO3LPLL 0 set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 @@ -4923,14 +5242,19 @@ set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_LEON3 0 set CONFIG_PROC_NUM 1 +set tmpvar_3 "(not set)" +set CONFIG_LEON3_MIN 0 +set CONFIG_LEON3_GP 0 +set CONFIG_LEON3_HP 0 +set CONFIG_LEON3_CUSTOM 0 set CONFIG_IU_NWINDOWS 8 set CONFIG_IU_V8MULDIV 0 -set tmpvar_3 "(not set)" +set tmpvar_4 "(not set)" set CONFIG_IU_MUL_LATENCY_2 0 set CONFIG_IU_MUL_LATENCY_4 0 set CONFIG_IU_MUL_LATENCY_5 0 set CONFIG_IU_MUL_MAC 0 -set tmpvar_4 "(not set)" +set tmpvar_5 "(not set)" set CONFIG_IU_MUL_INFERRED 0 set CONFIG_IU_MUL_MODGEN 0 set CONFIG_IU_MUL_TECHSPEC 0 @@ -4943,27 +5267,27 @@ set CONFIG_IU_WATCHPOINTS 0 set CONFIG_PWD 0 set CONFIG_IU_RSTADDR 00000 set CONFIG_FPU_ENABLE 0 -set tmpvar_5 "(not set)" +set tmpvar_6 "(not set)" set CONFIG_FPU_GRFPU 0 set CONFIG_FPU_GRFPULITE 0 set CONFIG_FPU_MEIKO 0 -set tmpvar_6 "(not set)" +set tmpvar_7 "(not set)" set CONFIG_FPU_GRFPU_INFMUL 0 set CONFIG_FPU_GRFPU_DWMUL 0 set CONFIG_FPU_GRFPU_MODGEN 0 set CONFIG_FPU_GRFPU_TECHSPEC 0 -set tmpvar_7 "(not set)" +set tmpvar_8 "(not set)" set CONFIG_FPU_GRFPC0 0 set CONFIG_FPU_GRFPC1 0 set CONFIG_FPU_GRFPC2 0 set CONFIG_FPU_NETLIST 0 set CONFIG_ICACHE_ENABLE 0 -set tmpvar_8 "(not set)" +set tmpvar_9 "(not set)" set CONFIG_ICACHE_ASSO1 0 set CONFIG_ICACHE_ASSO2 0 set CONFIG_ICACHE_ASSO3 0 set CONFIG_ICACHE_ASSO4 0 -set tmpvar_9 "(not set)" +set tmpvar_10 "(not set)" set CONFIG_ICACHE_SZ1 0 set CONFIG_ICACHE_SZ2 0 set CONFIG_ICACHE_SZ4 0 @@ -4973,17 +5297,17 @@ set CONFIG_ICACHE_SZ32 0 set CONFIG_ICACHE_SZ64 0 set CONFIG_ICACHE_SZ128 0 set CONFIG_ICACHE_SZ256 0 -set tmpvar_10 "(not set)" +set tmpvar_11 "(not set)" set CONFIG_ICACHE_LZ16 0 set CONFIG_ICACHE_LZ32 0 -set tmpvar_11 "(not set)" +set tmpvar_12 "(not set)" set CONFIG_ICACHE_ALGORND 0 set CONFIG_ICACHE_ALGODIR 0 set CONFIG_ICACHE_ALGOLRR 0 set CONFIG_ICACHE_ALGOLRU 0 set CONFIG_ICACHE_LOCK 0 set CONFIG_ICACHE_LRAM 0 -set tmpvar_12 "(not set)" +set tmpvar_13 "(not set)" set CONFIG_ICACHE_LRAM_SZ1 0 set CONFIG_ICACHE_LRAM_SZ2 0 set CONFIG_ICACHE_LRAM_SZ4 0 @@ -4995,12 +5319,12 @@ set CONFIG_ICACHE_LRAM_SZ128 0 set CONFIG_ICACHE_LRAM_SZ256 0 set CONFIG_ICACHE_LRSTART 8e set CONFIG_DCACHE_ENABLE 0 -set tmpvar_13 "(not set)" +set tmpvar_14 "(not set)" set CONFIG_DCACHE_ASSO1 0 set CONFIG_DCACHE_ASSO2 0 set CONFIG_DCACHE_ASSO3 0 set CONFIG_DCACHE_ASSO4 0 -set tmpvar_14 "(not set)" +set tmpvar_15 "(not set)" set CONFIG_DCACHE_SZ1 0 set CONFIG_DCACHE_SZ2 0 set CONFIG_DCACHE_SZ4 0 @@ -5010,10 +5334,10 @@ set CONFIG_DCACHE_SZ32 0 set CONFIG_DCACHE_SZ64 0 set CONFIG_DCACHE_SZ128 0 set CONFIG_DCACHE_SZ256 0 -set tmpvar_15 "(not set)" +set tmpvar_16 "(not set)" set CONFIG_DCACHE_LZ16 0 set CONFIG_DCACHE_LZ32 0 -set tmpvar_16 "(not set)" +set tmpvar_17 "(not set)" set CONFIG_DCACHE_ALGORND 0 set CONFIG_DCACHE_ALGODIR 0 set CONFIG_DCACHE_ALGOLRR 0 @@ -5024,7 +5348,7 @@ set CONFIG_DCACHE_SNOOP_FAST 0 set CONFIG_DCACHE_SNOOP_SEPTAG 0 set CONFIG_CACHE_FIXED 0 set CONFIG_DCACHE_LRAM 0 -set tmpvar_17 "(not set)" +set tmpvar_18 "(not set)" set CONFIG_DCACHE_LRAM_SZ1 0 set CONFIG_DCACHE_LRAM_SZ2 0 set CONFIG_DCACHE_LRAM_SZ4 0 @@ -5036,26 +5360,28 @@ set CONFIG_DCACHE_LRAM_SZ128 0 set CONFIG_DCACHE_LRAM_SZ256 0 set CONFIG_DCACHE_LRSTART 8f set CONFIG_MMU_ENABLE 0 -set tmpvar_18 "(not set)" +set tmpvar_19 "(not set)" set CONFIG_MMU_COMBINED 0 set CONFIG_MMU_SPLIT 0 -set tmpvar_19 "(not set)" +set tmpvar_20 "(not set)" set CONFIG_MMU_REPARRAY 0 set CONFIG_MMU_REPINCREMENT 0 -set tmpvar_20 "(not set)" +set tmpvar_21 "(not set)" set CONFIG_MMU_I2 0 set CONFIG_MMU_I4 0 set CONFIG_MMU_I8 0 set CONFIG_MMU_I16 0 set CONFIG_MMU_I32 0 -set tmpvar_21 "(not set)" +set CONFIG_MMU_I64 0 +set tmpvar_22 "(not set)" set CONFIG_MMU_D2 0 set CONFIG_MMU_D4 0 set CONFIG_MMU_D8 0 set CONFIG_MMU_D16 0 set CONFIG_MMU_D32 0 +set CONFIG_MMU_D64 0 set CONFIG_MMU_FASTWB 0 -set tmpvar_22 "(not set)" +set tmpvar_23 "(not set)" set CONFIG_MMU_PAGE_4K 0 set CONFIG_MMU_PAGE_8K 0 set CONFIG_MMU_PAGE_16K 0 @@ -5063,27 +5389,31 @@ set CONFIG_MMU_PAGE_32K 0 set CONFIG_MMU_PAGE_PROG 0 set CONFIG_DSU_ENABLE 0 set CONFIG_DSU_ITRACE 0 -set tmpvar_23 "(not set)" +set tmpvar_24 "(not set)" set CONFIG_DSU_ITRACESZ1 0 set CONFIG_DSU_ITRACESZ2 0 set CONFIG_DSU_ITRACESZ4 0 set CONFIG_DSU_ITRACESZ8 0 set CONFIG_DSU_ITRACESZ16 0 set CONFIG_DSU_ATRACE 0 -set tmpvar_24 "(not set)" +set tmpvar_25 "(not set)" set CONFIG_DSU_ATRACESZ1 0 set CONFIG_DSU_ATRACESZ2 0 set CONFIG_DSU_ATRACESZ4 0 set CONFIG_DSU_ATRACESZ8 0 set CONFIG_DSU_ATRACESZ16 0 set CONFIG_LEON3FT_EN 0 -set tmpvar_25 "(not set)" +set tmpvar_26 "(not set)" set CONFIG_IUFT_NONE 0 set CONFIG_IUFT_PAR 0 set CONFIG_IUFT_DMR 0 set CONFIG_IUFT_BCH 0 set CONFIG_IUFT_TMR 0 -set CONFIG_FPUFT_EN 0 +set tmpvar_27 "(not set)" +set CONFIG_FPUFT_NONE 0 +set CONFIG_FPUFT_PAR 0 +set CONFIG_FPUFT_DMR 0 +set CONFIG_FPUFT_TMR 0 set CONFIG_RF_ERRINJ 0 set CONFIG_CACHE_FT_EN 0 set CONFIG_CACHE_ERRINJ 0 @@ -5104,7 +5434,7 @@ set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_DSU_ETH 0 -set tmpvar_26 "(not set)" +set tmpvar_28 "(not set)" set CONFIG_DSU_ETHSZ1 0 set CONFIG_DSU_ETHSZ2 0 set CONFIG_DSU_ETHSZ4 0 @@ -5122,13 +5452,13 @@ set CONFIG_SRCTRL_PROMWS 3 set CONFIG_SRCTRL_RAMWS 0 set CONFIG_SRCTRL_IOWS 0 set CONFIG_SRCTRL_RMW 0 -set tmpvar_27 "(not set)" +set tmpvar_29 "(not set)" set CONFIG_SRCTRL_SRBANKS1 0 set CONFIG_SRCTRL_SRBANKS2 0 set CONFIG_SRCTRL_SRBANKS3 0 set CONFIG_SRCTRL_SRBANKS4 0 set CONFIG_SRCTRL_SRBANKS5 0 -set tmpvar_28 "(not set)" +set tmpvar_30 "(not set)" set CONFIG_SRCTRL_BANKSZ0 0 set CONFIG_SRCTRL_BANKSZ1 0 set CONFIG_SRCTRL_BANKSZ2 0 @@ -5163,7 +5493,7 @@ set CONFIG_AHBROM_ENABLE 0 set CONFIG_AHBROM_START 000 set CONFIG_AHBROM_PIPE 0 set CONFIG_AHBRAM_ENABLE 0 -set tmpvar_29 "(not set)" +set tmpvar_31 "(not set)" set CONFIG_AHBRAM_SZ1 0 set CONFIG_AHBRAM_SZ2 0 set CONFIG_AHBRAM_SZ4 0 @@ -5174,7 +5504,7 @@ set CONFIG_AHBRAM_SZ64 0 set CONFIG_AHBRAM_START A00 set CONFIG_GRETH_ENABLE 0 set CONFIG_GRETH_GIGA 0 -set tmpvar_30 "(not set)" +set tmpvar_32 "(not set)" set CONFIG_GRETH_FIFO4 0 set CONFIG_GRETH_FIFO8 0 set CONFIG_GRETH_FIFO16 0 @@ -5191,7 +5521,7 @@ set CONFIG_PCI_MASTER_TARGET 0 set CONFIG_PCI_MASTER_TARGET_DMA 0 set CONFIG_PCI_VENDORID 1AC8 set CONFIG_PCI_DEVICEID 0054 -set tmpvar_31 "(not set)" +set tmpvar_33 "(not set)" set CONFIG_PCI_FIFO0 0 set CONFIG_PCI_FIFO8 0 set CONFIG_PCI_FIFO16 0 @@ -5203,7 +5533,7 @@ set CONFIG_PCI_ARBITER 0 set CONFIG_PCI_ARBITER_APB 0 set CONFIG_PCI_ARBITER_NREQ 4 set CONFIG_PCI_TRACE 0 -set tmpvar_32 "(not set)" +set tmpvar_34 "(not set)" set CONFIG_PCI_TRACE256 0 set CONFIG_PCI_TRACE512 0 set CONFIG_PCI_TRACE1024 0 @@ -5211,17 +5541,17 @@ set CONFIG_PCI_TRACE2048 0 set CONFIG_PCI_TRACE4096 0 set CONFIG_SPW_ENABLE 0 set CONFIG_SPW_NUM 1 -set tmpvar_33 "(not set)" +set tmpvar_35 "(not set)" set CONFIG_SPW_AHBFIFO4 0 set CONFIG_SPW_AHBFIFO8 0 set CONFIG_SPW_AHBFIFO16 0 set CONFIG_SPW_AHBFIFO32 0 -set tmpvar_34 "(not set)" +set tmpvar_36 "(not set)" set CONFIG_SPW_RXFIFO16 0 set CONFIG_SPW_RXFIFO32 0 set CONFIG_SPW_RXFIFO64 0 set CONFIG_SPW_RMAP 0 -set tmpvar_35 "(not set)" +set tmpvar_37 "(not set)" set CONFIG_SPW_RMAPBUF2 0 set CONFIG_SPW_RMAPBUF4 0 set CONFIG_SPW_RMAPBUF6 0 @@ -5231,22 +5561,22 @@ set CONFIG_SPW_RXUNAL 0 set CONFIG_SPW_FT 0 set CONFIG_SPW_NETLIST 0 set CONFIG_SPW_PORTS 1 -set tmpvar_36 "(not set)" +set tmpvar_38 "(not set)" set CONFIG_SPW_GRSPW1 0 set CONFIG_SPW_GRSPW2 0 set CONFIG_SPW_DMACHAN 1 set CONFIG_SPW_RTSAME 0 -set tmpvar_37 "(not set)" +set tmpvar_39 "(not set)" set CONFIG_SPW_RX_SDR 0 set CONFIG_SPW_RX_DDR 0 set CONFIG_SPW_RX_XOR 0 set CONFIG_SPW_RX_AFLEX 0 -set tmpvar_38 "(not set)" +set tmpvar_40 "(not set)" set CONFIG_SPW_TX_SDR 0 set CONFIG_SPW_TX_DDR 0 set CONFIG_SPW_TX_AFLEX 0 set CONFIG_UART1_ENABLE 0 -set tmpvar_39 "(not set)" +set tmpvar_41 "(not set)" set CONFIG_UA1_FIFO1 0 set CONFIG_UA1_FIFO2 0 set CONFIG_UA1_FIFO4 0 @@ -5254,7 +5584,7 @@ set CONFIG_UA1_FIFO8 0 set CONFIG_UA1_FIFO16 0 set CONFIG_UA1_FIFO32 0 set CONFIG_UART2_ENABLE 0 -set tmpvar_40 "(not set)" +set tmpvar_42 "(not set)" set CONFIG_UA2_FIFO1 0 set CONFIG_UA2_FIFO2 0 set CONFIG_UA2_FIFO4 0 @@ -5332,7 +5662,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } @@ -5342,6 +5673,8 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -5380,6 +5713,7 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -5392,9 +5726,10 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T global CONFIG_CLK_FUSPLL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } global CONFIG_OCLKB_DIV @@ -5408,239 +5743,389 @@ proc writeconfig {file1 file2} { global CONFIG_PCI_SYSCLK global CONFIG_PCI_ENABLE if {($CONFIG_PCI_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_SYSCLK $CONFIG_PCI_SYSCLK [list $notmod] 2 } + write_comment $cfg $autocfg "Processor " global CONFIG_LEON3 write_tristate $cfg $autocfg CONFIG_LEON3 $CONFIG_LEON3 [list $notmod] 2 global CONFIG_PROC_NUM if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_PROC_NUM $CONFIG_PROC_NUM $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Processor "} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Integer unit "} + global tmpvar_3 + if {($CONFIG_LEON3 == 1)} then { + if { $tmpvar_3 == "Minimal-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_MIN 0 [list $notmod] 2 } + if { $tmpvar_3 == "General-purpose-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_GP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_GP 0 [list $notmod] 2 } + if { $tmpvar_3 == "High-Performance-cfg" } then { write_tristate $cfg $autocfg CONFIG_LEON3_HP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_HP 0 [list $notmod] 2 } + if { $tmpvar_3 == "Custom-configuration" } then { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_LEON3_CUSTOM 0 [list $notmod] 2 }} global CONFIG_IU_NWINDOWS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + global CONFIG_LEON3_MIN + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } global CONFIG_IU_V8MULDIV - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } - global tmpvar_3 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_3 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } - if { $tmpvar_3 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } - if { $tmpvar_3 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} - global CONFIG_IU_MUL_MAC - global CONFIG_IU_MUL_LATENCY_4 - global CONFIG_IU_MUL_LATENCY_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } - global tmpvar_4 - if {($CONFIG_LEON3 == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { - if { $tmpvar_4 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } - if { $tmpvar_4 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_4 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } - if { $tmpvar_4 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + global CONSTANT_N + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_BP - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_SVT - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + global CONSTANT_Y + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } global CONFIG_NOTAG - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_LDELAY - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } global CONFIG_IU_WATCHPOINTS - if {($CONFIG_LEON3 == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 0 $notmod } global CONFIG_PWD - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_N [list $notmod] 2 } global CONFIG_IU_RSTADDR - if {($CONFIG_LEON3 == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } global CONFIG_FPU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO1 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LZ16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGORND + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_LOCK + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_N [list $notmod] 2 } + global CONFIG_CACHE_FIXED + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_MMU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_DSU_ENABLE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_MIN == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_N [list $notmod] 2 } + global CONFIG_LEON3_GP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_5 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_MAC + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 2 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + global CONFIG_ICACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ASSO2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_FAST + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_SNOOP_SEPTAG + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + global CONFIG_DCACHE_LRAM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_SPLIT + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_REPARRAY + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D8 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D8 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_FASTWB + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_PAGE_4K + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ITRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DSU_ATRACESZ4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_GP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_HP + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS 8 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONSTANT_Y [list $notmod] 2 } + global CONFIG_IU_MUL_LATENCY_2 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY 1 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS 4 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR 00000 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU $CONSTANT_Y [list $notmod] 2 } + global CONFIG_FPU_GRFPU_INFMUL + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_ICACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_DCACHE_ALGOLRU + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED 0 $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONSTANT_N [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_SPLIT $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_I16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_I16 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_MMU_D16 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_D16 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 $CONSTANT_Y [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_HP == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 $CONSTANT_Y [list $notmod] 2 } + global CONFIG_LEON3_CUSTOM + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Integer unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_NWINDOWS $CONFIG_IU_NWINDOWS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_V8MULDIV $CONFIG_IU_V8MULDIV [list $notmod] 2 } + global tmpvar_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_4 == "2-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_2 0 [list $notmod] 2 } + if { $tmpvar_4 == "4-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_4 0 [list $notmod] 2 } + if { $tmpvar_4 == "5-cycles" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_LATENCY_5 0 [list $notmod] 2 }} + global CONFIG_IU_MUL_LATENCY_4 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1) && ($CONFIG_IU_MUL_LATENCY_4 == 1 || $CONFIG_IU_MUL_LATENCY_5 == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_MAC [list $notmod] 2 } global tmpvar_5 - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then { - if { $tmpvar_5 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } - if { $tmpvar_5 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } - if { $tmpvar_5 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_IU_V8MULDIV == 1)} then { + if { $tmpvar_5 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_INFERRED 0 [list $notmod] 2 } + if { $tmpvar_5 == "NTNU_Modgen" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_5 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_TECHSPEC 0 [list $notmod] 2 } + if { $tmpvar_5 == "Designware" } then { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IU_MUL_DW 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_BP $CONFIG_IU_BP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_IU_SVT $CONFIG_IU_SVT [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_NOTAG $CONFIG_NOTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_LDELAY $CONFIG_IU_LDELAY $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_int $cfg $autocfg CONFIG_IU_WATCHPOINTS $CONFIG_IU_WATCHPOINTS $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_PWD $CONFIG_PWD [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_hex $cfg $autocfg CONFIG_IU_RSTADDR $CONFIG_IU_RSTADDR $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Floating-point unit"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_ENABLE $CONFIG_FPU_ENABLE [list $notmod] 2 } global tmpvar_6 - global CONFIG_FPU_GRFPU - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { - if { $tmpvar_6 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } - if { $tmpvar_6 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } - if { $tmpvar_6 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_6 == "GRFPU" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU 0 [list $notmod] 2 } + if { $tmpvar_6 == "GRFPU-LITE" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPULITE 0 [list $notmod] 2 } + if { $tmpvar_6 == "Meiko" } then { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_MEIKO 0 [list $notmod] 2 }} global tmpvar_7 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPU == 1)} then { + if { $tmpvar_7 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_INFMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "DW" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_DWMUL 0 [list $notmod] 2 } + if { $tmpvar_7 == "ModGen" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_MODGEN 0 [list $notmod] 2 } + if { $tmpvar_7 == "TechSpec" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPU_TECHSPEC 0 [list $notmod] 2 }} + global tmpvar_8 global CONFIG_FPU_GRFPULITE - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { - if { $tmpvar_7 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } - if { $tmpvar_7 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } - if { $tmpvar_7 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1) && ($CONFIG_FPU_GRFPULITE == 1)} then { + if { $tmpvar_8 == "Simple" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC0 0 [list $notmod] 2 } + if { $tmpvar_8 == "Data-forwarding" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC1 0 [list $notmod] 2 } + if { $tmpvar_8 == "Non-blocking" } then { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPU_GRFPC2 0 [list $notmod] 2 }} global CONFIG_FPU_NETLIST - if {($CONFIG_LEON3 == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Cache system"} - global CONFIG_ICACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } - global tmpvar_8 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_8 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_8 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_8 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_8 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPU_NETLIST $CONFIG_FPU_NETLIST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Cache system"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_ENABLE $CONFIG_ICACHE_ENABLE [list $notmod] 2 } global tmpvar_9 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_9 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_9 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_9 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_9 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_9 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_9 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_9 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_9 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_9 == "3" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_9 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_10 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { - if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_10 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_10 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_10 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_10 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_10 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_10 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_10 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_10 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_10 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_11 - global CONFIG_ICACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { - if { $tmpvar_11 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_11 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_11 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } - global CONFIG_ICACHE_LRAM - global CONFIG_MMU_ENABLE - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1)} then { + if { $tmpvar_11 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_11 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_12 - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { - if { $tmpvar_12 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_12 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_12 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_12 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_12 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_12 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_12 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_12 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_12 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_ICACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } - global CONFIG_DCACHE_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then { + if { $tmpvar_12 == "Random" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_12 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_12 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1) && ($CONFIG_ICACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LOCK $CONFIG_ICACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM $CONFIG_ICACHE_LRAM [list $notmod] 2 } global tmpvar_13 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } - if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } - if { $tmpvar_13 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } - if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then { + if { $tmpvar_13 == "1" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_13 == "2" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_13 == "4" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_13 == "8" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_13 == "16" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_13 == "32" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_13 == "64" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_13 == "128" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_13 == "256" } then { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_ICACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_ICACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_ICACHE_LRSTART $CONFIG_ICACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_ENABLE $CONFIG_DCACHE_ENABLE [list $notmod] 2 } global tmpvar_14 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } - if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } - if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } - if { $tmpvar_14 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } - if { $tmpvar_14 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } - if { $tmpvar_14 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } - if { $tmpvar_14 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } - if { $tmpvar_14 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } - if { $tmpvar_14 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_14 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO1 0 [list $notmod] 2 } + if { $tmpvar_14 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO2 0 [list $notmod] 2 } + if { $tmpvar_14 == "3" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO3 0 [list $notmod] 2 } + if { $tmpvar_14 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ASSO4 0 [list $notmod] 2 }} global tmpvar_15 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { - if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } - if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_15 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ1 0 [list $notmod] 2 } + if { $tmpvar_15 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ2 0 [list $notmod] 2 } + if { $tmpvar_15 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ4 0 [list $notmod] 2 } + if { $tmpvar_15 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ8 0 [list $notmod] 2 } + if { $tmpvar_15 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ16 0 [list $notmod] 2 } + if { $tmpvar_15 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ32 0 [list $notmod] 2 } + if { $tmpvar_15 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ64 0 [list $notmod] 2 } + if { $tmpvar_15 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ128 0 [list $notmod] 2 } + if { $tmpvar_15 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_SZ256 0 [list $notmod] 2 }} global tmpvar_16 - global CONFIG_DCACHE_ASSO1 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { - if { $tmpvar_16 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } - if { $tmpvar_16 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } - if { $tmpvar_16 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LOCK - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_FAST - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } - global CONFIG_DCACHE_SNOOP_SEPTAG - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } - global CONFIG_CACHE_FIXED - if {($CONFIG_LEON3 == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } - global CONFIG_DCACHE_LRAM - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then { + if { $tmpvar_16 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ16 0 [list $notmod] 2 } + if { $tmpvar_16 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LZ32 0 [list $notmod] 2 }} global tmpvar_17 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { - if { $tmpvar_17 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_17 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_17 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_17 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_17 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_17 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_17 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } - if { $tmpvar_17 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } - if { $tmpvar_17 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} - global CONFIG_DCACHE_LRSTART - if {($CONFIG_LEON3 == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "MMU"} - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then { + if { $tmpvar_17 == "Random" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGORND 0 [list $notmod] 2 } + if { $tmpvar_17 == "Direct" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGODIR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRR" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRR 0 [list $notmod] 2 } + if { $tmpvar_17 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_ALGOLRU 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_ASSO1 != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LOCK $CONFIG_DCACHE_LOCK [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP $CONFIG_DCACHE_SNOOP [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_FAST $CONFIG_DCACHE_SNOOP_FAST [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_ENABLE == 1) && ($CONFIG_DCACHE_SNOOP == 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_SNOOP_SEPTAG $CONFIG_DCACHE_SNOOP_SEPTAG [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_ICACHE_ENABLE == 1 || $CONFIG_DCACHE_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_CACHE_FIXED $CONFIG_CACHE_FIXED $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE != 1)} then {write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM $CONFIG_DCACHE_LRAM [list $notmod] 2 } global tmpvar_18 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_18 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } - if { $tmpvar_18 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then { + if { $tmpvar_18 == "1" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_18 == "2" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_18 == "4" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_18 == "8" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_18 == "16" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_18 == "32" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_18 == "64" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ64 0 [list $notmod] 2 } + if { $tmpvar_18 == "128" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ128 0 [list $notmod] 2 } + if { $tmpvar_18 == "256" } then { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DCACHE_LRAM_SZ256 0 [list $notmod] 2 }} + global CONFIG_DCACHE_LRSTART + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DCACHE_LRAM == 1)} then {write_hex $cfg $autocfg CONFIG_DCACHE_LRSTART $CONFIG_DCACHE_LRSTART $notmod } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "MMU"} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_ENABLE $CONFIG_MMU_ENABLE [list $notmod] 2 } global tmpvar_19 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_19 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } - if { $tmpvar_19 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_19 == "combined" } then { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_COMBINED 0 [list $notmod] 2 } + if { $tmpvar_19 == "split" } then { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_SPLIT 0 [list $notmod] 2 }} global tmpvar_20 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_20 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } - if { $tmpvar_20 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } - if { $tmpvar_20 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } - if { $tmpvar_20 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } - if { $tmpvar_20 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_20 == "LRU" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPARRAY 0 [list $notmod] 2 } + if { $tmpvar_20 == "Increment" } then { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_REPINCREMENT 0 [list $notmod] 2 }} global tmpvar_21 - global CONFIG_MMU_SPLIT - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { - if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } - if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } - if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } - if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } - if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 }} - global CONFIG_MMU_FASTWB - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_21 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_I2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I2 0 [list $notmod] 2 } + if { $tmpvar_21 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_I4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I4 0 [list $notmod] 2 } + if { $tmpvar_21 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_I8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I8 0 [list $notmod] 2 } + if { $tmpvar_21 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_I16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I16 0 [list $notmod] 2 } + if { $tmpvar_21 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_I32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I32 0 [list $notmod] 2 } + if { $tmpvar_21 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_I64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_I64 0 [list $notmod] 2 }} global tmpvar_22 - if {($CONFIG_LEON3 == 1) && ($CONFIG_MMU_ENABLE == 1)} then { - if { $tmpvar_22 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } - if { $tmpvar_22 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } - if { $tmpvar_22 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } - if { $tmpvar_22 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } - if { $tmpvar_22 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} - if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} - global CONFIG_DSU_ENABLE - if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } - global CONFIG_DSU_ITRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then { + if { $tmpvar_22 == "2" } then { write_tristate $cfg $autocfg CONFIG_MMU_D2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D2 0 [list $notmod] 2 } + if { $tmpvar_22 == "4" } then { write_tristate $cfg $autocfg CONFIG_MMU_D4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D4 0 [list $notmod] 2 } + if { $tmpvar_22 == "8" } then { write_tristate $cfg $autocfg CONFIG_MMU_D8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D8 0 [list $notmod] 2 } + if { $tmpvar_22 == "16" } then { write_tristate $cfg $autocfg CONFIG_MMU_D16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D16 0 [list $notmod] 2 } + if { $tmpvar_22 == "32" } then { write_tristate $cfg $autocfg CONFIG_MMU_D32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D32 0 [list $notmod] 2 } + if { $tmpvar_22 == "64" } then { write_tristate $cfg $autocfg CONFIG_MMU_D64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_D64 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1) && ($CONFIG_MMU_SPLIT == 1)} then {write_tristate $cfg $autocfg CONFIG_MMU_FASTWB $CONFIG_MMU_FASTWB [list $notmod] 2 } global tmpvar_23 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { - if { $tmpvar_23 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_23 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_23 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_23 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_23 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} - global CONFIG_DSU_ATRACE - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_MMU_ENABLE == 1)} then { + if { $tmpvar_23 == "4K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_4K 0 [list $notmod] 2 } + if { $tmpvar_23 == "8K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_8K 0 [list $notmod] 2 } + if { $tmpvar_23 == "16K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_16K 0 [list $notmod] 2 } + if { $tmpvar_23 == "32K" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_32K 0 [list $notmod] 2 } + if { $tmpvar_23 == "Programmable" } then { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_MMU_PAGE_PROG 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_comment $cfg $autocfg "Debug Support Unit "} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ENABLE $CONFIG_DSU_ENABLE [list $notmod] 2 } + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ITRACE $CONFIG_DSU_ITRACE [list $notmod] 2 } global tmpvar_24 - if {($CONFIG_LEON3 == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { - if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } - if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } - if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } - if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } - if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ITRACE == 1)} then { + if { $tmpvar_24 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_24 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_24 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_24 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_24 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ITRACESZ16 0 [list $notmod] 2 }} + global CONFIG_DSU_ATRACE + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ATRACE $CONFIG_DSU_ATRACE [list $notmod] 2 } + global tmpvar_25 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3_CUSTOM == 1) && ($CONFIG_DSU_ENABLE == 1) && ($CONFIG_DSU_ATRACE == 1)} then { + if { $tmpvar_25 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ1 0 [list $notmod] 2 } + if { $tmpvar_25 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ2 0 [list $notmod] 2 } + if { $tmpvar_25 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ4 0 [list $notmod] 2 } + if { $tmpvar_25 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ8 0 [list $notmod] 2 } + if { $tmpvar_25 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ATRACESZ16 0 [list $notmod] 2 }} if {($CONFIG_LEON3 == 1)} then {write_comment $cfg $autocfg "Fault-tolerance "} global CONFIG_LEON3FT_EN if {($CONFIG_LEON3 == 1)} then {write_tristate $cfg $autocfg CONFIG_LEON3FT_EN $CONFIG_LEON3FT_EN [list $notmod] 2 } - global tmpvar_25 + global tmpvar_26 if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then { - if { $tmpvar_25 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } - if { $tmpvar_25 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } - if { $tmpvar_25 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } - if { $tmpvar_25 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } - if { $tmpvar_25 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} - global CONFIG_FPUFT_EN - if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_FPUFT_EN $CONFIG_FPUFT_EN [list $notmod] 2 } + if { $tmpvar_26 == "None" } then { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_26 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_26 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_26 == "BCH" } then { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_BCH 0 [list $notmod] 2 } + if { $tmpvar_26 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_IUFT_TMR 0 [list $notmod] 2 }} + global tmpvar_27 + if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1) && ($CONFIG_FPU_ENABLE == 1)} then { + if { $tmpvar_27 == "None" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_NONE 0 [list $notmod] 2 } + if { $tmpvar_27 == "Parity" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_PAR 0 [list $notmod] 2 } + if { $tmpvar_27 == "PDMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_DMR 0 [list $notmod] 2 } + if { $tmpvar_27 == "TMR" } then { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_FPUFT_TMR 0 [list $notmod] 2 }} global CONFIG_RF_ERRINJ if {($CONFIG_LEON3 == 1) && ($CONFIG_LEON3FT_EN == 1)} then {write_tristate $cfg $autocfg CONFIG_RF_ERRINJ $CONFIG_RF_ERRINJ [list $notmod] 2 } global CONFIG_CACHE_FT_EN @@ -5685,13 +6170,13 @@ proc writeconfig {file1 file2} { global CONFIG_DSU_ETH global CONFIG_GRETH_ENABLE if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_DSU_ETH $CONFIG_DSU_ETH [list $notmod] 2 } - global tmpvar_26 + global tmpvar_28 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then { - if { $tmpvar_26 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } - if { $tmpvar_26 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } - if { $tmpvar_26 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } - if { $tmpvar_26 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } - if { $tmpvar_26 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} + if { $tmpvar_28 == "1" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ1 0 [list $notmod] 2 } + if { $tmpvar_28 == "2" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ2 0 [list $notmod] 2 } + if { $tmpvar_28 == "4" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ4 0 [list $notmod] 2 } + if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ8 0 [list $notmod] 2 } + if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_DSU_ETHSZ16 0 [list $notmod] 2 }} global CONFIG_DSU_IPMSB if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_DSU_ETH == 1)} then {write_hex $cfg $autocfg CONFIG_DSU_IPMSB $CONFIG_DSU_IPMSB $notmod } global CONFIG_DSU_IPLSB @@ -5720,29 +6205,29 @@ proc writeconfig {file1 file2} { if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_IOWS $CONFIG_SRCTRL_IOWS $notmod } global CONFIG_SRCTRL_RMW if {($CONFIG_SRCTRL == 1)} then {write_tristate $cfg $autocfg CONFIG_SRCTRL_RMW $CONFIG_SRCTRL_RMW [list $notmod] 2 } - global tmpvar_27 + global tmpvar_29 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_27 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } - if { $tmpvar_27 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } - if { $tmpvar_27 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } - if { $tmpvar_27 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } - if { $tmpvar_27 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} - global tmpvar_28 + if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS1 0 [list $notmod] 2 } + if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS2 0 [list $notmod] 2 } + if { $tmpvar_29 == "3" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS3 0 [list $notmod] 2 } + if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS4 0 [list $notmod] 2 } + if { $tmpvar_29 == "5" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_SRBANKS5 0 [list $notmod] 2 }} + global tmpvar_30 if {($CONFIG_SRCTRL == 1)} then { - if { $tmpvar_28 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } - if { $tmpvar_28 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } - if { $tmpvar_28 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } - if { $tmpvar_28 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } - if { $tmpvar_28 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } - if { $tmpvar_28 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } - if { $tmpvar_28 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } - if { $tmpvar_28 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } - if { $tmpvar_28 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } - if { $tmpvar_28 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } - if { $tmpvar_28 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } - if { $tmpvar_28 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } - if { $tmpvar_28 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } - if { $tmpvar_28 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} + if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ0 0 [list $notmod] 2 } + if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ1 0 [list $notmod] 2 } + if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ2 0 [list $notmod] 2 } + if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ3 0 [list $notmod] 2 } + if { $tmpvar_30 == "128" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ4 0 [list $notmod] 2 } + if { $tmpvar_30 == "256" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ5 0 [list $notmod] 2 } + if { $tmpvar_30 == "512" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ6 0 [list $notmod] 2 } + if { $tmpvar_30 == "1024" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ7 0 [list $notmod] 2 } + if { $tmpvar_30 == "2048" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ8 0 [list $notmod] 2 } + if { $tmpvar_30 == "4096" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ9 0 [list $notmod] 2 } + if { $tmpvar_30 == "8192" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ10 0 [list $notmod] 2 } + if { $tmpvar_30 == "16384" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ11 0 [list $notmod] 2 } + if { $tmpvar_30 == "32768" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ12 0 [list $notmod] 2 } + if { $tmpvar_30 == "65536" } then { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SRCTRL_BANKSZ13 0 [list $notmod] 2 }} global CONFIG_SRCTRL_ROMASEL if {($CONFIG_SRCTRL == 1)} then {write_int $cfg $autocfg CONFIG_SRCTRL_ROMASEL $CONFIG_SRCTRL_ROMASEL $notmod } write_comment $cfg $autocfg "Leon2 memory controller " @@ -5786,27 +6271,27 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHBROM_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_AHBROM_PIPE $CONFIG_AHBROM_PIPE [list $notmod] 2 } global CONFIG_AHBRAM_ENABLE write_tristate $cfg $autocfg CONFIG_AHBRAM_ENABLE $CONFIG_AHBRAM_ENABLE [list $notmod] 2 - global tmpvar_29 + global tmpvar_31 if {($CONFIG_AHBRAM_ENABLE == 1)} then { - if { $tmpvar_29 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } - if { $tmpvar_29 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } - if { $tmpvar_29 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } - if { $tmpvar_29 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } - if { $tmpvar_29 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } - if { $tmpvar_29 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } - if { $tmpvar_29 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} + if { $tmpvar_31 == "1" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ1 0 [list $notmod] 2 } + if { $tmpvar_31 == "2" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ2 0 [list $notmod] 2 } + if { $tmpvar_31 == "4" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ4 0 [list $notmod] 2 } + if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ8 0 [list $notmod] 2 } + if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ16 0 [list $notmod] 2 } + if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ32 0 [list $notmod] 2 } + if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_AHBRAM_SZ64 0 [list $notmod] 2 }} global CONFIG_AHBRAM_START if {($CONFIG_AHBRAM_ENABLE == 1)} then {write_hex $cfg $autocfg CONFIG_AHBRAM_START $CONFIG_AHBRAM_START $notmod } write_comment $cfg $autocfg "Ethernet " write_tristate $cfg $autocfg CONFIG_GRETH_ENABLE $CONFIG_GRETH_ENABLE [list $notmod] 2 if {($CONFIG_GRETH_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_GRETH_GIGA $CONFIG_GRETH_GIGA [list $notmod] 2 } - global tmpvar_30 + global tmpvar_32 if {($CONFIG_GRETH_ENABLE == 1) && ($CONFIG_GRETH_GIGA == 0)} then { - if { $tmpvar_30 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_30 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_30 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_30 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_30 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} + if { $tmpvar_32 == "4" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_32 == "8" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_32 == "16" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_32 == "32" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_32 == "64" } then { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_GRETH_FIFO64 0 [list $notmod] 2 }} write_comment $cfg $autocfg "CAN " global CONFIG_CAN_ENABLE write_tristate $cfg $autocfg CONFIG_CAN_ENABLE $CONFIG_CAN_ENABLE [list $notmod] 2 @@ -5832,14 +6317,14 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_VENDORID $CONFIG_PCI_VENDORID $notmod } global CONFIG_PCI_DEVICEID if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_DEVICEID $CONFIG_PCI_DEVICEID $notmod } - global tmpvar_31 + global tmpvar_33 if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then { - if { $tmpvar_31 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } - if { $tmpvar_31 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_31 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_31 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } - if { $tmpvar_31 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } - if { $tmpvar_31 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} + if { $tmpvar_33 == "None" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO0 0 [list $notmod] 2 } + if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO32 0 [list $notmod] 2 } + if { $tmpvar_33 == "64" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO64 0 [list $notmod] 2 } + if { $tmpvar_33 == "128" } then { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_FIFO128 0 [list $notmod] 2 }} global CONFIG_PCI_HADDR if {($CONFIG_PCI_SIMPLE_TARGET == 1 || $CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1) && ($CONFIG_PCI_MASTER_TARGET == 1 || $CONFIG_PCI_ACTEL == 1)} then {write_hex $cfg $autocfg CONFIG_PCI_HADDR $CONFIG_PCI_HADDR $notmod } global CONFIG_PCI_ARBITER @@ -5850,37 +6335,37 @@ proc writeconfig {file1 file2} { if {($CONFIG_PCI_ARBITER == 1)} then {write_int $cfg $autocfg CONFIG_PCI_ARBITER_NREQ $CONFIG_PCI_ARBITER_NREQ $notmod } global CONFIG_PCI_TRACE write_tristate $cfg $autocfg CONFIG_PCI_TRACE $CONFIG_PCI_TRACE [list $notmod] 2 - global tmpvar_32 + global tmpvar_34 if {($CONFIG_PCI_TRACE == 1)} then { - if { $tmpvar_32 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } - if { $tmpvar_32 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } - if { $tmpvar_32 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } - if { $tmpvar_32 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } - if { $tmpvar_32 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} + if { $tmpvar_34 == "256" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE256 0 [list $notmod] 2 } + if { $tmpvar_34 == "512" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE512 0 [list $notmod] 2 } + if { $tmpvar_34 == "1024" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE1024 0 [list $notmod] 2 } + if { $tmpvar_34 == "2048" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE2048 0 [list $notmod] 2 } + if { $tmpvar_34 == "4096" } then { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_PCI_TRACE4096 0 [list $notmod] 2 }} write_comment $cfg $autocfg "Spacewire " global CONFIG_SPW_ENABLE write_tristate $cfg $autocfg CONFIG_SPW_ENABLE $CONFIG_SPW_ENABLE [list $notmod] 2 global CONFIG_SPW_NUM if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_NUM $CONFIG_SPW_NUM $notmod } - global tmpvar_33 + global tmpvar_35 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_33 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } - if { $tmpvar_33 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } - if { $tmpvar_33 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } - if { $tmpvar_33 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} - global tmpvar_34 + if { $tmpvar_35 == "4" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO4 0 [list $notmod] 2 } + if { $tmpvar_35 == "8" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO8 0 [list $notmod] 2 } + if { $tmpvar_35 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO16 0 [list $notmod] 2 } + if { $tmpvar_35 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_AHBFIFO32 0 [list $notmod] 2 }} + global tmpvar_36 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_34 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } - if { $tmpvar_34 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } - if { $tmpvar_34 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} + if { $tmpvar_36 == "16" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO16 0 [list $notmod] 2 } + if { $tmpvar_36 == "32" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO32 0 [list $notmod] 2 } + if { $tmpvar_36 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RXFIFO64 0 [list $notmod] 2 }} global CONFIG_SPW_RMAP if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAP $CONFIG_SPW_RMAP [list $notmod] 2 } - global tmpvar_35 + global tmpvar_37 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_RMAP == 1)} then { - if { $tmpvar_35 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } - if { $tmpvar_35 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } - if { $tmpvar_35 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } - if { $tmpvar_35 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} + if { $tmpvar_37 == "64" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF2 0 [list $notmod] 2 } + if { $tmpvar_37 == "128" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF4 0 [list $notmod] 2 } + if { $tmpvar_37 == "192" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF6 0 [list $notmod] 2 } + if { $tmpvar_37 == "256" } then { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RMAPBUF8 0 [list $notmod] 2 }} global CONFIG_SPW_RMAPCRC if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RMAPCRC $CONFIG_SPW_RMAPCRC [list $notmod] 2 } global CONFIG_SPW_RXUNAL @@ -5891,47 +6376,47 @@ proc writeconfig {file1 file2} { if {($CONFIG_SPW_ENABLE == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_NETLIST $CONFIG_SPW_NETLIST [list $notmod] 2 } global CONFIG_SPW_PORTS if {($CONFIG_SPW_ENABLE == 1)} then {write_int $cfg $autocfg CONFIG_SPW_PORTS $CONFIG_SPW_PORTS $notmod } - global tmpvar_36 + global tmpvar_38 if {($CONFIG_SPW_ENABLE == 1)} then { - if { $tmpvar_36 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } - if { $tmpvar_36 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} + if { $tmpvar_38 == "1" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW1 0 [list $notmod] 2 } + if { $tmpvar_38 == "2" } then { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_GRSPW2 0 [list $notmod] 2 }} global CONFIG_SPW_DMACHAN global CONFIG_SPW_GRSPW2 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_int $cfg $autocfg CONFIG_SPW_DMACHAN $CONFIG_SPW_DMACHAN $notmod } global CONFIG_SPW_RTSAME if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then {write_tristate $cfg $autocfg CONFIG_SPW_RTSAME $CONFIG_SPW_RTSAME [list $notmod] 2 } - global tmpvar_37 + global tmpvar_39 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_37 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } - if { $tmpvar_37 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } - if { $tmpvar_37 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } - if { $tmpvar_37 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} - global tmpvar_38 + if { $tmpvar_39 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_SDR 0 [list $notmod] 2 } + if { $tmpvar_39 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_DDR 0 [list $notmod] 2 } + if { $tmpvar_39 == "Xor" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_XOR 0 [list $notmod] 2 } + if { $tmpvar_39 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_RX_AFLEX 0 [list $notmod] 2 }} + global tmpvar_40 if {($CONFIG_SPW_ENABLE == 1) && ($CONFIG_SPW_GRSPW2 == 1)} then { - if { $tmpvar_38 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } - if { $tmpvar_38 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } - if { $tmpvar_38 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} + if { $tmpvar_40 == "SDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_SDR 0 [list $notmod] 2 } + if { $tmpvar_40 == "DDR" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_DDR 0 [list $notmod] 2 } + if { $tmpvar_40 == "Aeroflex" } then { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SPW_TX_AFLEX 0 [list $notmod] 2 }} write_comment $cfg $autocfg "UARTs, timers and irq control " global CONFIG_UART1_ENABLE write_tristate $cfg $autocfg CONFIG_UART1_ENABLE $CONFIG_UART1_ENABLE [list $notmod] 2 - global tmpvar_39 + global tmpvar_41 if {($CONFIG_UART1_ENABLE == 1)} then { - if { $tmpvar_39 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_39 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_39 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_39 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_39 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_39 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_41 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_41 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_41 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_41 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_41 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_41 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA1_FIFO32 0 [list $notmod] 2 }} global CONFIG_UART2_ENABLE write_tristate $cfg $autocfg CONFIG_UART2_ENABLE $CONFIG_UART2_ENABLE [list $notmod] 2 - global tmpvar_40 + global tmpvar_42 if {($CONFIG_UART2_ENABLE == 1)} then { - if { $tmpvar_40 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } - if { $tmpvar_40 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } - if { $tmpvar_40 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } - if { $tmpvar_40 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } - if { $tmpvar_40 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } - if { $tmpvar_40 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} + if { $tmpvar_42 == "1" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO1 0 [list $notmod] 2 } + if { $tmpvar_42 == "2" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO2 0 [list $notmod] 2 } + if { $tmpvar_42 == "4" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO4 0 [list $notmod] 2 } + if { $tmpvar_42 == "8" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO8 0 [list $notmod] 2 } + if { $tmpvar_42 == "16" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO16 0 [list $notmod] 2 } + if { $tmpvar_42 == "32" } then { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_UA2_FIFO32 0 [list $notmod] 2 }} global CONFIG_IRQ3_ENABLE write_tristate $cfg $autocfg CONFIG_IRQ3_ENABLE $CONFIG_IRQ3_ENABLE [list $notmod] 2 global CONFIG_IRQ3_SEC @@ -6004,7 +6489,8 @@ proc clear_choices { } { global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 @@ -6014,6 +6500,8 @@ proc clear_choices { } { global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -6032,8 +6520,13 @@ proc clear_choices { } { global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 + global CONFIG_LEON3_MIN; set CONFIG_LEON3_MIN 0 + global CONFIG_LEON3_GP; set CONFIG_LEON3_GP 0 + global CONFIG_LEON3_HP; set CONFIG_LEON3_HP 0 + global CONFIG_LEON3_CUSTOM; set CONFIG_LEON3_CUSTOM 0 global CONFIG_IU_MUL_LATENCY_2; set CONFIG_IU_MUL_LATENCY_2 0 global CONFIG_IU_MUL_LATENCY_4; set CONFIG_IU_MUL_LATENCY_4 0 global CONFIG_IU_MUL_LATENCY_5; set CONFIG_IU_MUL_LATENCY_5 0 @@ -6116,11 +6609,13 @@ proc clear_choices { } { global CONFIG_MMU_I8; set CONFIG_MMU_I8 0 global CONFIG_MMU_I16; set CONFIG_MMU_I16 0 global CONFIG_MMU_I32; set CONFIG_MMU_I32 0 + global CONFIG_MMU_I64; set CONFIG_MMU_I64 0 global CONFIG_MMU_D2; set CONFIG_MMU_D2 0 global CONFIG_MMU_D4; set CONFIG_MMU_D4 0 global CONFIG_MMU_D8; set CONFIG_MMU_D8 0 global CONFIG_MMU_D16; set CONFIG_MMU_D16 0 global CONFIG_MMU_D32; set CONFIG_MMU_D32 0 + global CONFIG_MMU_D64; set CONFIG_MMU_D64 0 global CONFIG_MMU_PAGE_4K; set CONFIG_MMU_PAGE_4K 0 global CONFIG_MMU_PAGE_8K; set CONFIG_MMU_PAGE_8K 0 global CONFIG_MMU_PAGE_16K; set CONFIG_MMU_PAGE_16K 0 @@ -6141,6 +6636,10 @@ proc clear_choices { } { global CONFIG_IUFT_DMR; set CONFIG_IUFT_DMR 0 global CONFIG_IUFT_BCH; set CONFIG_IUFT_BCH 0 global CONFIG_IUFT_TMR; set CONFIG_IUFT_TMR 0 + global CONFIG_FPUFT_NONE; set CONFIG_FPUFT_NONE 0 + global CONFIG_FPUFT_PAR; set CONFIG_FPUFT_PAR 0 + global CONFIG_FPUFT_DMR; set CONFIG_FPUFT_DMR 0 + global CONFIG_FPUFT_TMR; set CONFIG_FPUFT_TMR 0 global CONFIG_DSU_ETHSZ1; set CONFIG_DSU_ETHSZ1 0 global CONFIG_DSU_ETHSZ2; set CONFIG_DSU_ETHSZ2 0 global CONFIG_DSU_ETHSZ4; set CONFIG_DSU_ETHSZ4 0 @@ -6296,8 +6795,10 @@ proc update_choices { } { if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } global CONFIG_SYN_UMC if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E @@ -6316,6 +6817,10 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } global CONFIG_SYN_VIRTEX6 if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -6356,458 +6861,484 @@ proc update_choices { } { if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM if { $CONFIG_CLK_DCM == 1 } then { set tmpvar_2 "Xilinx-DCM" } global tmpvar_3 - set tmpvar_3 "5-cycles" + set tmpvar_3 "Custom-configuration" + global CONFIG_LEON3_MIN + if { $CONFIG_LEON3_MIN == 1 } then { set tmpvar_3 "Minimal-configuration" } + global CONFIG_LEON3_GP + if { $CONFIG_LEON3_GP == 1 } then { set tmpvar_3 "General-purpose-cfg" } + global CONFIG_LEON3_HP + if { $CONFIG_LEON3_HP == 1 } then { set tmpvar_3 "High-Performance-cfg" } + global CONFIG_LEON3_CUSTOM + if { $CONFIG_LEON3_CUSTOM == 1 } then { set tmpvar_3 "Custom-configuration" } + global tmpvar_4 + set tmpvar_4 "5-cycles" global CONFIG_IU_MUL_LATENCY_2 - if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_3 "2-cycles" } + if { $CONFIG_IU_MUL_LATENCY_2 == 1 } then { set tmpvar_4 "2-cycles" } global CONFIG_IU_MUL_LATENCY_4 - if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_3 "4-cycles" } + if { $CONFIG_IU_MUL_LATENCY_4 == 1 } then { set tmpvar_4 "4-cycles" } global CONFIG_IU_MUL_LATENCY_5 - if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_3 "5-cycles" } - global tmpvar_4 - set tmpvar_4 "Inferred" + if { $CONFIG_IU_MUL_LATENCY_5 == 1 } then { set tmpvar_4 "5-cycles" } + global tmpvar_5 + set tmpvar_5 "Inferred" global CONFIG_IU_MUL_INFERRED - if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_4 "Inferred" } + if { $CONFIG_IU_MUL_INFERRED == 1 } then { set tmpvar_5 "Inferred" } global CONFIG_IU_MUL_MODGEN - if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_4 "NTNU_Modgen" } + if { $CONFIG_IU_MUL_MODGEN == 1 } then { set tmpvar_5 "NTNU_Modgen" } global CONFIG_IU_MUL_TECHSPEC - if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_4 "TechSpec" } + if { $CONFIG_IU_MUL_TECHSPEC == 1 } then { set tmpvar_5 "TechSpec" } global CONFIG_IU_MUL_DW - if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_4 "Designware" } - global tmpvar_5 - set tmpvar_5 "GRFPU" + if { $CONFIG_IU_MUL_DW == 1 } then { set tmpvar_5 "Designware" } + global tmpvar_6 + set tmpvar_6 "GRFPU" global CONFIG_FPU_GRFPU - if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_5 "GRFPU" } + if { $CONFIG_FPU_GRFPU == 1 } then { set tmpvar_6 "GRFPU" } global CONFIG_FPU_GRFPULITE - if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_5 "GRFPU-LITE" } + if { $CONFIG_FPU_GRFPULITE == 1 } then { set tmpvar_6 "GRFPU-LITE" } global CONFIG_FPU_MEIKO - if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_5 "Meiko" } - global tmpvar_6 - set tmpvar_6 "Inferred" + if { $CONFIG_FPU_MEIKO == 1 } then { set tmpvar_6 "Meiko" } + global tmpvar_7 + set tmpvar_7 "Inferred" global CONFIG_FPU_GRFPU_INFMUL - if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_6 "Inferred" } + if { $CONFIG_FPU_GRFPU_INFMUL == 1 } then { set tmpvar_7 "Inferred" } global CONFIG_FPU_GRFPU_DWMUL - if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_6 "DW" } + if { $CONFIG_FPU_GRFPU_DWMUL == 1 } then { set tmpvar_7 "DW" } global CONFIG_FPU_GRFPU_MODGEN - if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_6 "ModGen" } + if { $CONFIG_FPU_GRFPU_MODGEN == 1 } then { set tmpvar_7 "ModGen" } global CONFIG_FPU_GRFPU_TECHSPEC - if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_6 "TechSpec" } - global tmpvar_7 - set tmpvar_7 "Simple" + if { $CONFIG_FPU_GRFPU_TECHSPEC == 1 } then { set tmpvar_7 "TechSpec" } + global tmpvar_8 + set tmpvar_8 "Simple" global CONFIG_FPU_GRFPC0 - if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_7 "Simple" } + if { $CONFIG_FPU_GRFPC0 == 1 } then { set tmpvar_8 "Simple" } global CONFIG_FPU_GRFPC1 - if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_7 "Data-forwarding" } + if { $CONFIG_FPU_GRFPC1 == 1 } then { set tmpvar_8 "Data-forwarding" } global CONFIG_FPU_GRFPC2 - if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_7 "Non-blocking" } - global tmpvar_8 - set tmpvar_8 "1" + if { $CONFIG_FPU_GRFPC2 == 1 } then { set tmpvar_8 "Non-blocking" } + global tmpvar_9 + set tmpvar_9 "1" global CONFIG_ICACHE_ASSO1 - if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_8 "1" } + if { $CONFIG_ICACHE_ASSO1 == 1 } then { set tmpvar_9 "1" } global CONFIG_ICACHE_ASSO2 - if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_8 "2" } + if { $CONFIG_ICACHE_ASSO2 == 1 } then { set tmpvar_9 "2" } global CONFIG_ICACHE_ASSO3 - if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_8 "3" } + if { $CONFIG_ICACHE_ASSO3 == 1 } then { set tmpvar_9 "3" } global CONFIG_ICACHE_ASSO4 - if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_8 "4" } - global tmpvar_9 - set tmpvar_9 "4" + if { $CONFIG_ICACHE_ASSO4 == 1 } then { set tmpvar_9 "4" } + global tmpvar_10 + set tmpvar_10 "4" global CONFIG_ICACHE_SZ1 - if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_9 "1" } + if { $CONFIG_ICACHE_SZ1 == 1 } then { set tmpvar_10 "1" } global CONFIG_ICACHE_SZ2 - if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_9 "2" } + if { $CONFIG_ICACHE_SZ2 == 1 } then { set tmpvar_10 "2" } global CONFIG_ICACHE_SZ4 - if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_9 "4" } + if { $CONFIG_ICACHE_SZ4 == 1 } then { set tmpvar_10 "4" } global CONFIG_ICACHE_SZ8 - if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_9 "8" } + if { $CONFIG_ICACHE_SZ8 == 1 } then { set tmpvar_10 "8" } global CONFIG_ICACHE_SZ16 - if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_9 "16" } + if { $CONFIG_ICACHE_SZ16 == 1 } then { set tmpvar_10 "16" } global CONFIG_ICACHE_SZ32 - if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_9 "32" } + if { $CONFIG_ICACHE_SZ32 == 1 } then { set tmpvar_10 "32" } global CONFIG_ICACHE_SZ64 - if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_9 "64" } + if { $CONFIG_ICACHE_SZ64 == 1 } then { set tmpvar_10 "64" } global CONFIG_ICACHE_SZ128 - if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_9 "128" } + if { $CONFIG_ICACHE_SZ128 == 1 } then { set tmpvar_10 "128" } global CONFIG_ICACHE_SZ256 - if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_9 "256" } - global tmpvar_10 - set tmpvar_10 "32" + if { $CONFIG_ICACHE_SZ256 == 1 } then { set tmpvar_10 "256" } + global tmpvar_11 + set tmpvar_11 "32" global CONFIG_ICACHE_LZ16 - if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_10 "16" } + if { $CONFIG_ICACHE_LZ16 == 1 } then { set tmpvar_11 "16" } global CONFIG_ICACHE_LZ32 - if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_10 "32" } - global tmpvar_11 - set tmpvar_11 "Random" + if { $CONFIG_ICACHE_LZ32 == 1 } then { set tmpvar_11 "32" } + global tmpvar_12 + set tmpvar_12 "Random" global CONFIG_ICACHE_ALGORND - if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_11 "Random" } + if { $CONFIG_ICACHE_ALGORND == 1 } then { set tmpvar_12 "Random" } global CONFIG_ICACHE_ALGODIR - if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_11 "Direct" } + if { $CONFIG_ICACHE_ALGODIR == 1 } then { set tmpvar_12 "Direct" } global CONFIG_ICACHE_ALGOLRR - if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_11 "LRR" } + if { $CONFIG_ICACHE_ALGOLRR == 1 } then { set tmpvar_12 "LRR" } global CONFIG_ICACHE_ALGOLRU - if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_11 "LRU" } - global tmpvar_12 - set tmpvar_12 "4" + if { $CONFIG_ICACHE_ALGOLRU == 1 } then { set tmpvar_12 "LRU" } + global tmpvar_13 + set tmpvar_13 "4" global CONFIG_ICACHE_LRAM_SZ1 - if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_12 "1" } + if { $CONFIG_ICACHE_LRAM_SZ1 == 1 } then { set tmpvar_13 "1" } global CONFIG_ICACHE_LRAM_SZ2 - if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_12 "2" } + if { $CONFIG_ICACHE_LRAM_SZ2 == 1 } then { set tmpvar_13 "2" } global CONFIG_ICACHE_LRAM_SZ4 - if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_12 "4" } + if { $CONFIG_ICACHE_LRAM_SZ4 == 1 } then { set tmpvar_13 "4" } global CONFIG_ICACHE_LRAM_SZ8 - if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_12 "8" } + if { $CONFIG_ICACHE_LRAM_SZ8 == 1 } then { set tmpvar_13 "8" } global CONFIG_ICACHE_LRAM_SZ16 - if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_12 "16" } + if { $CONFIG_ICACHE_LRAM_SZ16 == 1 } then { set tmpvar_13 "16" } global CONFIG_ICACHE_LRAM_SZ32 - if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_12 "32" } + if { $CONFIG_ICACHE_LRAM_SZ32 == 1 } then { set tmpvar_13 "32" } global CONFIG_ICACHE_LRAM_SZ64 - if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_12 "64" } + if { $CONFIG_ICACHE_LRAM_SZ64 == 1 } then { set tmpvar_13 "64" } global CONFIG_ICACHE_LRAM_SZ128 - if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_12 "128" } + if { $CONFIG_ICACHE_LRAM_SZ128 == 1 } then { set tmpvar_13 "128" } global CONFIG_ICACHE_LRAM_SZ256 - if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_12 "256" } - global tmpvar_13 - set tmpvar_13 "1" + if { $CONFIG_ICACHE_LRAM_SZ256 == 1 } then { set tmpvar_13 "256" } + global tmpvar_14 + set tmpvar_14 "1" global CONFIG_DCACHE_ASSO1 - if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_13 "1" } + if { $CONFIG_DCACHE_ASSO1 == 1 } then { set tmpvar_14 "1" } global CONFIG_DCACHE_ASSO2 - if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_13 "2" } + if { $CONFIG_DCACHE_ASSO2 == 1 } then { set tmpvar_14 "2" } global CONFIG_DCACHE_ASSO3 - if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_13 "3" } + if { $CONFIG_DCACHE_ASSO3 == 1 } then { set tmpvar_14 "3" } global CONFIG_DCACHE_ASSO4 - if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_13 "4" } - global tmpvar_14 - set tmpvar_14 "4" + if { $CONFIG_DCACHE_ASSO4 == 1 } then { set tmpvar_14 "4" } + global tmpvar_15 + set tmpvar_15 "4" global CONFIG_DCACHE_SZ1 - if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_14 "1" } + if { $CONFIG_DCACHE_SZ1 == 1 } then { set tmpvar_15 "1" } global CONFIG_DCACHE_SZ2 - if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_14 "2" } + if { $CONFIG_DCACHE_SZ2 == 1 } then { set tmpvar_15 "2" } global CONFIG_DCACHE_SZ4 - if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_14 "4" } + if { $CONFIG_DCACHE_SZ4 == 1 } then { set tmpvar_15 "4" } global CONFIG_DCACHE_SZ8 - if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_14 "8" } + if { $CONFIG_DCACHE_SZ8 == 1 } then { set tmpvar_15 "8" } global CONFIG_DCACHE_SZ16 - if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_14 "16" } + if { $CONFIG_DCACHE_SZ16 == 1 } then { set tmpvar_15 "16" } global CONFIG_DCACHE_SZ32 - if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_14 "32" } + if { $CONFIG_DCACHE_SZ32 == 1 } then { set tmpvar_15 "32" } global CONFIG_DCACHE_SZ64 - if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_14 "64" } + if { $CONFIG_DCACHE_SZ64 == 1 } then { set tmpvar_15 "64" } global CONFIG_DCACHE_SZ128 - if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_14 "128" } + if { $CONFIG_DCACHE_SZ128 == 1 } then { set tmpvar_15 "128" } global CONFIG_DCACHE_SZ256 - if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_14 "256" } - global tmpvar_15 - set tmpvar_15 "32" + if { $CONFIG_DCACHE_SZ256 == 1 } then { set tmpvar_15 "256" } + global tmpvar_16 + set tmpvar_16 "32" global CONFIG_DCACHE_LZ16 - if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_15 "16" } + if { $CONFIG_DCACHE_LZ16 == 1 } then { set tmpvar_16 "16" } global CONFIG_DCACHE_LZ32 - if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_15 "32" } - global tmpvar_16 - set tmpvar_16 "Random" + if { $CONFIG_DCACHE_LZ32 == 1 } then { set tmpvar_16 "32" } + global tmpvar_17 + set tmpvar_17 "Random" global CONFIG_DCACHE_ALGORND - if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_16 "Random" } + if { $CONFIG_DCACHE_ALGORND == 1 } then { set tmpvar_17 "Random" } global CONFIG_DCACHE_ALGODIR - if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_16 "Direct" } + if { $CONFIG_DCACHE_ALGODIR == 1 } then { set tmpvar_17 "Direct" } global CONFIG_DCACHE_ALGOLRR - if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_16 "LRR" } + if { $CONFIG_DCACHE_ALGOLRR == 1 } then { set tmpvar_17 "LRR" } global CONFIG_DCACHE_ALGOLRU - if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_16 "LRU" } - global tmpvar_17 - set tmpvar_17 "4" + if { $CONFIG_DCACHE_ALGOLRU == 1 } then { set tmpvar_17 "LRU" } + global tmpvar_18 + set tmpvar_18 "4" global CONFIG_DCACHE_LRAM_SZ1 - if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_17 "1" } + if { $CONFIG_DCACHE_LRAM_SZ1 == 1 } then { set tmpvar_18 "1" } global CONFIG_DCACHE_LRAM_SZ2 - if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_17 "2" } + if { $CONFIG_DCACHE_LRAM_SZ2 == 1 } then { set tmpvar_18 "2" } global CONFIG_DCACHE_LRAM_SZ4 - if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_17 "4" } + if { $CONFIG_DCACHE_LRAM_SZ4 == 1 } then { set tmpvar_18 "4" } global CONFIG_DCACHE_LRAM_SZ8 - if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_17 "8" } + if { $CONFIG_DCACHE_LRAM_SZ8 == 1 } then { set tmpvar_18 "8" } global CONFIG_DCACHE_LRAM_SZ16 - if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_17 "16" } + if { $CONFIG_DCACHE_LRAM_SZ16 == 1 } then { set tmpvar_18 "16" } global CONFIG_DCACHE_LRAM_SZ32 - if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_17 "32" } + if { $CONFIG_DCACHE_LRAM_SZ32 == 1 } then { set tmpvar_18 "32" } global CONFIG_DCACHE_LRAM_SZ64 - if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_17 "64" } + if { $CONFIG_DCACHE_LRAM_SZ64 == 1 } then { set tmpvar_18 "64" } global CONFIG_DCACHE_LRAM_SZ128 - if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_17 "128" } + if { $CONFIG_DCACHE_LRAM_SZ128 == 1 } then { set tmpvar_18 "128" } global CONFIG_DCACHE_LRAM_SZ256 - if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_17 "256" } - global tmpvar_18 - set tmpvar_18 "combined" + if { $CONFIG_DCACHE_LRAM_SZ256 == 1 } then { set tmpvar_18 "256" } + global tmpvar_19 + set tmpvar_19 "combined" global CONFIG_MMU_COMBINED - if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_18 "combined" } + if { $CONFIG_MMU_COMBINED == 1 } then { set tmpvar_19 "combined" } global CONFIG_MMU_SPLIT - if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_18 "split" } - global tmpvar_19 - set tmpvar_19 "Increment" + if { $CONFIG_MMU_SPLIT == 1 } then { set tmpvar_19 "split" } + global tmpvar_20 + set tmpvar_20 "Increment" global CONFIG_MMU_REPARRAY - if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_19 "LRU" } + if { $CONFIG_MMU_REPARRAY == 1 } then { set tmpvar_20 "LRU" } global CONFIG_MMU_REPINCREMENT - if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_19 "Increment" } - global tmpvar_20 - set tmpvar_20 "8" + if { $CONFIG_MMU_REPINCREMENT == 1 } then { set tmpvar_20 "Increment" } + global tmpvar_21 + set tmpvar_21 "8" global CONFIG_MMU_I2 - if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_20 "2" } + if { $CONFIG_MMU_I2 == 1 } then { set tmpvar_21 "2" } global CONFIG_MMU_I4 - if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_20 "4" } + if { $CONFIG_MMU_I4 == 1 } then { set tmpvar_21 "4" } global CONFIG_MMU_I8 - if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_20 "8" } + if { $CONFIG_MMU_I8 == 1 } then { set tmpvar_21 "8" } global CONFIG_MMU_I16 - if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_20 "16" } + if { $CONFIG_MMU_I16 == 1 } then { set tmpvar_21 "16" } global CONFIG_MMU_I32 - if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_20 "32" } - global tmpvar_21 - set tmpvar_21 "8" + if { $CONFIG_MMU_I32 == 1 } then { set tmpvar_21 "32" } + global CONFIG_MMU_I64 + if { $CONFIG_MMU_I64 == 1 } then { set tmpvar_21 "64" } + global tmpvar_22 + set tmpvar_22 "8" global CONFIG_MMU_D2 - if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_21 "2" } + if { $CONFIG_MMU_D2 == 1 } then { set tmpvar_22 "2" } global CONFIG_MMU_D4 - if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_21 "4" } + if { $CONFIG_MMU_D4 == 1 } then { set tmpvar_22 "4" } global CONFIG_MMU_D8 - if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_21 "8" } + if { $CONFIG_MMU_D8 == 1 } then { set tmpvar_22 "8" } global CONFIG_MMU_D16 - if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_21 "16" } + if { $CONFIG_MMU_D16 == 1 } then { set tmpvar_22 "16" } global CONFIG_MMU_D32 - if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_21 "32" } - global tmpvar_22 - set tmpvar_22 "4K" + if { $CONFIG_MMU_D32 == 1 } then { set tmpvar_22 "32" } + global CONFIG_MMU_D64 + if { $CONFIG_MMU_D64 == 1 } then { set tmpvar_22 "64" } + global tmpvar_23 + set tmpvar_23 "4K" global CONFIG_MMU_PAGE_4K - if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_22 "4K" } + if { $CONFIG_MMU_PAGE_4K == 1 } then { set tmpvar_23 "4K" } global CONFIG_MMU_PAGE_8K - if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_22 "8K" } + if { $CONFIG_MMU_PAGE_8K == 1 } then { set tmpvar_23 "8K" } global CONFIG_MMU_PAGE_16K - if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_22 "16K" } + if { $CONFIG_MMU_PAGE_16K == 1 } then { set tmpvar_23 "16K" } global CONFIG_MMU_PAGE_32K - if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_22 "32K" } + if { $CONFIG_MMU_PAGE_32K == 1 } then { set tmpvar_23 "32K" } global CONFIG_MMU_PAGE_PROG - if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_22 "Programmable" } - global tmpvar_23 - set tmpvar_23 "1" + if { $CONFIG_MMU_PAGE_PROG == 1 } then { set tmpvar_23 "Programmable" } + global tmpvar_24 + set tmpvar_24 "1" global CONFIG_DSU_ITRACESZ1 - if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_23 "1" } + if { $CONFIG_DSU_ITRACESZ1 == 1 } then { set tmpvar_24 "1" } global CONFIG_DSU_ITRACESZ2 - if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_23 "2" } + if { $CONFIG_DSU_ITRACESZ2 == 1 } then { set tmpvar_24 "2" } global CONFIG_DSU_ITRACESZ4 - if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_23 "4" } + if { $CONFIG_DSU_ITRACESZ4 == 1 } then { set tmpvar_24 "4" } global CONFIG_DSU_ITRACESZ8 - if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_23 "8" } + if { $CONFIG_DSU_ITRACESZ8 == 1 } then { set tmpvar_24 "8" } global CONFIG_DSU_ITRACESZ16 - if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_23 "16" } - global tmpvar_24 - set tmpvar_24 "1" + if { $CONFIG_DSU_ITRACESZ16 == 1 } then { set tmpvar_24 "16" } + global tmpvar_25 + set tmpvar_25 "1" global CONFIG_DSU_ATRACESZ1 - if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_24 "1" } + if { $CONFIG_DSU_ATRACESZ1 == 1 } then { set tmpvar_25 "1" } global CONFIG_DSU_ATRACESZ2 - if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_24 "2" } + if { $CONFIG_DSU_ATRACESZ2 == 1 } then { set tmpvar_25 "2" } global CONFIG_DSU_ATRACESZ4 - if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_24 "4" } + if { $CONFIG_DSU_ATRACESZ4 == 1 } then { set tmpvar_25 "4" } global CONFIG_DSU_ATRACESZ8 - if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_24 "8" } + if { $CONFIG_DSU_ATRACESZ8 == 1 } then { set tmpvar_25 "8" } global CONFIG_DSU_ATRACESZ16 - if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_24 "16" } - global tmpvar_25 - set tmpvar_25 "None" + if { $CONFIG_DSU_ATRACESZ16 == 1 } then { set tmpvar_25 "16" } + global tmpvar_26 + set tmpvar_26 "None" global CONFIG_IUFT_NONE - if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_25 "None" } + if { $CONFIG_IUFT_NONE == 1 } then { set tmpvar_26 "None" } global CONFIG_IUFT_PAR - if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_25 "Parity" } + if { $CONFIG_IUFT_PAR == 1 } then { set tmpvar_26 "Parity" } global CONFIG_IUFT_DMR - if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_25 "PDMR" } + if { $CONFIG_IUFT_DMR == 1 } then { set tmpvar_26 "PDMR" } global CONFIG_IUFT_BCH - if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_25 "BCH" } + if { $CONFIG_IUFT_BCH == 1 } then { set tmpvar_26 "BCH" } global CONFIG_IUFT_TMR - if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_25 "TMR" } - global tmpvar_26 - set tmpvar_26 "2" + if { $CONFIG_IUFT_TMR == 1 } then { set tmpvar_26 "TMR" } + global tmpvar_27 + set tmpvar_27 "None" + global CONFIG_FPUFT_NONE + if { $CONFIG_FPUFT_NONE == 1 } then { set tmpvar_27 "None" } + global CONFIG_FPUFT_PAR + if { $CONFIG_FPUFT_PAR == 1 } then { set tmpvar_27 "Parity" } + global CONFIG_FPUFT_DMR + if { $CONFIG_FPUFT_DMR == 1 } then { set tmpvar_27 "PDMR" } + global CONFIG_FPUFT_TMR + if { $CONFIG_FPUFT_TMR == 1 } then { set tmpvar_27 "TMR" } + global tmpvar_28 + set tmpvar_28 "2" global CONFIG_DSU_ETHSZ1 - if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_26 "1" } + if { $CONFIG_DSU_ETHSZ1 == 1 } then { set tmpvar_28 "1" } global CONFIG_DSU_ETHSZ2 - if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_26 "2" } + if { $CONFIG_DSU_ETHSZ2 == 1 } then { set tmpvar_28 "2" } global CONFIG_DSU_ETHSZ4 - if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_26 "4" } + if { $CONFIG_DSU_ETHSZ4 == 1 } then { set tmpvar_28 "4" } global CONFIG_DSU_ETHSZ8 - if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_26 "8" } + if { $CONFIG_DSU_ETHSZ8 == 1 } then { set tmpvar_28 "8" } global CONFIG_DSU_ETHSZ16 - if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_26 "16" } - global tmpvar_27 - set tmpvar_27 "1" + if { $CONFIG_DSU_ETHSZ16 == 1 } then { set tmpvar_28 "16" } + global tmpvar_29 + set tmpvar_29 "1" global CONFIG_SRCTRL_SRBANKS1 - if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_27 "1" } + if { $CONFIG_SRCTRL_SRBANKS1 == 1 } then { set tmpvar_29 "1" } global CONFIG_SRCTRL_SRBANKS2 - if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_27 "2" } + if { $CONFIG_SRCTRL_SRBANKS2 == 1 } then { set tmpvar_29 "2" } global CONFIG_SRCTRL_SRBANKS3 - if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_27 "3" } + if { $CONFIG_SRCTRL_SRBANKS3 == 1 } then { set tmpvar_29 "3" } global CONFIG_SRCTRL_SRBANKS4 - if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_27 "4" } + if { $CONFIG_SRCTRL_SRBANKS4 == 1 } then { set tmpvar_29 "4" } global CONFIG_SRCTRL_SRBANKS5 - if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_27 "5" } - global tmpvar_28 - set tmpvar_28 "0" + if { $CONFIG_SRCTRL_SRBANKS5 == 1 } then { set tmpvar_29 "5" } + global tmpvar_30 + set tmpvar_30 "0" global CONFIG_SRCTRL_BANKSZ0 - if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_28 "8" } + if { $CONFIG_SRCTRL_BANKSZ0 == 1 } then { set tmpvar_30 "8" } global CONFIG_SRCTRL_BANKSZ1 - if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_28 "16" } + if { $CONFIG_SRCTRL_BANKSZ1 == 1 } then { set tmpvar_30 "16" } global CONFIG_SRCTRL_BANKSZ2 - if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_28 "32" } + if { $CONFIG_SRCTRL_BANKSZ2 == 1 } then { set tmpvar_30 "32" } global CONFIG_SRCTRL_BANKSZ3 - if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_28 "64" } + if { $CONFIG_SRCTRL_BANKSZ3 == 1 } then { set tmpvar_30 "64" } global CONFIG_SRCTRL_BANKSZ4 - if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_28 "128" } + if { $CONFIG_SRCTRL_BANKSZ4 == 1 } then { set tmpvar_30 "128" } global CONFIG_SRCTRL_BANKSZ5 - if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_28 "256" } + if { $CONFIG_SRCTRL_BANKSZ5 == 1 } then { set tmpvar_30 "256" } global CONFIG_SRCTRL_BANKSZ6 - if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_28 "512" } + if { $CONFIG_SRCTRL_BANKSZ6 == 1 } then { set tmpvar_30 "512" } global CONFIG_SRCTRL_BANKSZ7 - if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_28 "1024" } + if { $CONFIG_SRCTRL_BANKSZ7 == 1 } then { set tmpvar_30 "1024" } global CONFIG_SRCTRL_BANKSZ8 - if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_28 "2048" } + if { $CONFIG_SRCTRL_BANKSZ8 == 1 } then { set tmpvar_30 "2048" } global CONFIG_SRCTRL_BANKSZ9 - if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_28 "4096" } + if { $CONFIG_SRCTRL_BANKSZ9 == 1 } then { set tmpvar_30 "4096" } global CONFIG_SRCTRL_BANKSZ10 - if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_28 "8192" } + if { $CONFIG_SRCTRL_BANKSZ10 == 1 } then { set tmpvar_30 "8192" } global CONFIG_SRCTRL_BANKSZ11 - if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_28 "16384" } + if { $CONFIG_SRCTRL_BANKSZ11 == 1 } then { set tmpvar_30 "16384" } global CONFIG_SRCTRL_BANKSZ12 - if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_28 "32768" } + if { $CONFIG_SRCTRL_BANKSZ12 == 1 } then { set tmpvar_30 "32768" } global CONFIG_SRCTRL_BANKSZ13 - if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_28 "65536" } - global tmpvar_29 - set tmpvar_29 "4" + if { $CONFIG_SRCTRL_BANKSZ13 == 1 } then { set tmpvar_30 "65536" } + global tmpvar_31 + set tmpvar_31 "4" global CONFIG_AHBRAM_SZ1 - if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_29 "1" } + if { $CONFIG_AHBRAM_SZ1 == 1 } then { set tmpvar_31 "1" } global CONFIG_AHBRAM_SZ2 - if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_29 "2" } + if { $CONFIG_AHBRAM_SZ2 == 1 } then { set tmpvar_31 "2" } global CONFIG_AHBRAM_SZ4 - if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_29 "4" } + if { $CONFIG_AHBRAM_SZ4 == 1 } then { set tmpvar_31 "4" } global CONFIG_AHBRAM_SZ8 - if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_29 "8" } + if { $CONFIG_AHBRAM_SZ8 == 1 } then { set tmpvar_31 "8" } global CONFIG_AHBRAM_SZ16 - if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_29 "16" } + if { $CONFIG_AHBRAM_SZ16 == 1 } then { set tmpvar_31 "16" } global CONFIG_AHBRAM_SZ32 - if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_29 "32" } + if { $CONFIG_AHBRAM_SZ32 == 1 } then { set tmpvar_31 "32" } global CONFIG_AHBRAM_SZ64 - if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_29 "64" } - global tmpvar_30 - set tmpvar_30 "8" + if { $CONFIG_AHBRAM_SZ64 == 1 } then { set tmpvar_31 "64" } + global tmpvar_32 + set tmpvar_32 "8" global CONFIG_GRETH_FIFO4 - if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_30 "4" } + if { $CONFIG_GRETH_FIFO4 == 1 } then { set tmpvar_32 "4" } global CONFIG_GRETH_FIFO8 - if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_30 "8" } + if { $CONFIG_GRETH_FIFO8 == 1 } then { set tmpvar_32 "8" } global CONFIG_GRETH_FIFO16 - if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_30 "16" } + if { $CONFIG_GRETH_FIFO16 == 1 } then { set tmpvar_32 "16" } global CONFIG_GRETH_FIFO32 - if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_30 "32" } + if { $CONFIG_GRETH_FIFO32 == 1 } then { set tmpvar_32 "32" } global CONFIG_GRETH_FIFO64 - if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_30 "64" } - global tmpvar_31 - set tmpvar_31 "8" + if { $CONFIG_GRETH_FIFO64 == 1 } then { set tmpvar_32 "64" } + global tmpvar_33 + set tmpvar_33 "8" global CONFIG_PCI_FIFO0 - if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_31 "None" } + if { $CONFIG_PCI_FIFO0 == 1 } then { set tmpvar_33 "None" } global CONFIG_PCI_FIFO8 - if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_31 "8" } + if { $CONFIG_PCI_FIFO8 == 1 } then { set tmpvar_33 "8" } global CONFIG_PCI_FIFO16 - if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_31 "16" } + if { $CONFIG_PCI_FIFO16 == 1 } then { set tmpvar_33 "16" } global CONFIG_PCI_FIFO32 - if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_31 "32" } + if { $CONFIG_PCI_FIFO32 == 1 } then { set tmpvar_33 "32" } global CONFIG_PCI_FIFO64 - if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_31 "64" } + if { $CONFIG_PCI_FIFO64 == 1 } then { set tmpvar_33 "64" } global CONFIG_PCI_FIFO128 - if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_31 "128" } - global tmpvar_32 - set tmpvar_32 "256" + if { $CONFIG_PCI_FIFO128 == 1 } then { set tmpvar_33 "128" } + global tmpvar_34 + set tmpvar_34 "256" global CONFIG_PCI_TRACE256 - if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_32 "256" } + if { $CONFIG_PCI_TRACE256 == 1 } then { set tmpvar_34 "256" } global CONFIG_PCI_TRACE512 - if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_32 "512" } + if { $CONFIG_PCI_TRACE512 == 1 } then { set tmpvar_34 "512" } global CONFIG_PCI_TRACE1024 - if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_32 "1024" } + if { $CONFIG_PCI_TRACE1024 == 1 } then { set tmpvar_34 "1024" } global CONFIG_PCI_TRACE2048 - if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_32 "2048" } + if { $CONFIG_PCI_TRACE2048 == 1 } then { set tmpvar_34 "2048" } global CONFIG_PCI_TRACE4096 - if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_32 "4096" } - global tmpvar_33 - set tmpvar_33 "16" + if { $CONFIG_PCI_TRACE4096 == 1 } then { set tmpvar_34 "4096" } + global tmpvar_35 + set tmpvar_35 "16" global CONFIG_SPW_AHBFIFO4 - if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_33 "4" } + if { $CONFIG_SPW_AHBFIFO4 == 1 } then { set tmpvar_35 "4" } global CONFIG_SPW_AHBFIFO8 - if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_33 "8" } + if { $CONFIG_SPW_AHBFIFO8 == 1 } then { set tmpvar_35 "8" } global CONFIG_SPW_AHBFIFO16 - if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_33 "16" } + if { $CONFIG_SPW_AHBFIFO16 == 1 } then { set tmpvar_35 "16" } global CONFIG_SPW_AHBFIFO32 - if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_33 "32" } - global tmpvar_34 - set tmpvar_34 "16" + if { $CONFIG_SPW_AHBFIFO32 == 1 } then { set tmpvar_35 "32" } + global tmpvar_36 + set tmpvar_36 "16" global CONFIG_SPW_RXFIFO16 - if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_34 "16" } + if { $CONFIG_SPW_RXFIFO16 == 1 } then { set tmpvar_36 "16" } global CONFIG_SPW_RXFIFO32 - if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_34 "32" } + if { $CONFIG_SPW_RXFIFO32 == 1 } then { set tmpvar_36 "32" } global CONFIG_SPW_RXFIFO64 - if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_34 "64" } - global tmpvar_35 - set tmpvar_35 "64" + if { $CONFIG_SPW_RXFIFO64 == 1 } then { set tmpvar_36 "64" } + global tmpvar_37 + set tmpvar_37 "64" global CONFIG_SPW_RMAPBUF2 - if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_35 "64" } + if { $CONFIG_SPW_RMAPBUF2 == 1 } then { set tmpvar_37 "64" } global CONFIG_SPW_RMAPBUF4 - if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_35 "128" } + if { $CONFIG_SPW_RMAPBUF4 == 1 } then { set tmpvar_37 "128" } global CONFIG_SPW_RMAPBUF6 - if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_35 "192" } + if { $CONFIG_SPW_RMAPBUF6 == 1 } then { set tmpvar_37 "192" } global CONFIG_SPW_RMAPBUF8 - if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_35 "256" } - global tmpvar_36 - set tmpvar_36 "2" + if { $CONFIG_SPW_RMAPBUF8 == 1 } then { set tmpvar_37 "256" } + global tmpvar_38 + set tmpvar_38 "2" global CONFIG_SPW_GRSPW1 - if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_36 "1" } + if { $CONFIG_SPW_GRSPW1 == 1 } then { set tmpvar_38 "1" } global CONFIG_SPW_GRSPW2 - if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_36 "2" } - global tmpvar_37 - set tmpvar_37 "DDR" + if { $CONFIG_SPW_GRSPW2 == 1 } then { set tmpvar_38 "2" } + global tmpvar_39 + set tmpvar_39 "DDR" global CONFIG_SPW_RX_SDR - if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_37 "SDR" } + if { $CONFIG_SPW_RX_SDR == 1 } then { set tmpvar_39 "SDR" } global CONFIG_SPW_RX_DDR - if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_37 "DDR" } + if { $CONFIG_SPW_RX_DDR == 1 } then { set tmpvar_39 "DDR" } global CONFIG_SPW_RX_XOR - if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_37 "Xor" } + if { $CONFIG_SPW_RX_XOR == 1 } then { set tmpvar_39 "Xor" } global CONFIG_SPW_RX_AFLEX - if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_37 "Aeroflex" } - global tmpvar_38 - set tmpvar_38 "SDR" + if { $CONFIG_SPW_RX_AFLEX == 1 } then { set tmpvar_39 "Aeroflex" } + global tmpvar_40 + set tmpvar_40 "SDR" global CONFIG_SPW_TX_SDR - if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_38 "SDR" } + if { $CONFIG_SPW_TX_SDR == 1 } then { set tmpvar_40 "SDR" } global CONFIG_SPW_TX_DDR - if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_38 "DDR" } + if { $CONFIG_SPW_TX_DDR == 1 } then { set tmpvar_40 "DDR" } global CONFIG_SPW_TX_AFLEX - if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_38 "Aeroflex" } - global tmpvar_39 - set tmpvar_39 "1" + if { $CONFIG_SPW_TX_AFLEX == 1 } then { set tmpvar_40 "Aeroflex" } + global tmpvar_41 + set tmpvar_41 "1" global CONFIG_UA1_FIFO1 - if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_39 "1" } + if { $CONFIG_UA1_FIFO1 == 1 } then { set tmpvar_41 "1" } global CONFIG_UA1_FIFO2 - if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_39 "2" } + if { $CONFIG_UA1_FIFO2 == 1 } then { set tmpvar_41 "2" } global CONFIG_UA1_FIFO4 - if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_39 "4" } + if { $CONFIG_UA1_FIFO4 == 1 } then { set tmpvar_41 "4" } global CONFIG_UA1_FIFO8 - if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_39 "8" } + if { $CONFIG_UA1_FIFO8 == 1 } then { set tmpvar_41 "8" } global CONFIG_UA1_FIFO16 - if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_39 "16" } + if { $CONFIG_UA1_FIFO16 == 1 } then { set tmpvar_41 "16" } global CONFIG_UA1_FIFO32 - if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_39 "32" } - global tmpvar_40 - set tmpvar_40 "1" + if { $CONFIG_UA1_FIFO32 == 1 } then { set tmpvar_41 "32" } + global tmpvar_42 + set tmpvar_42 "1" global CONFIG_UA2_FIFO1 - if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_40 "1" } + if { $CONFIG_UA2_FIFO1 == 1 } then { set tmpvar_42 "1" } global CONFIG_UA2_FIFO2 - if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_40 "2" } + if { $CONFIG_UA2_FIFO2 == 1 } then { set tmpvar_42 "2" } global CONFIG_UA2_FIFO4 - if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_40 "4" } + if { $CONFIG_UA2_FIFO4 == 1 } then { set tmpvar_42 "4" } global CONFIG_UA2_FIFO8 - if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_40 "8" } + if { $CONFIG_UA2_FIFO8 == 1 } then { set tmpvar_42 "8" } global CONFIG_UA2_FIFO16 - if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_40 "16" } + if { $CONFIG_UA2_FIFO16 == 1 } then { set tmpvar_42 "16" } global CONFIG_UA2_FIFO32 - if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_40 "32" } + if { $CONFIG_UA2_FIFO32 == 1 } then { set tmpvar_42 "32" } } diff --git a/designs/leon3mp/leon3mp.vhd b/designs/leon3mp/leon3mp.vhd index 1c640f13..f8a99c88 100644 --- a/designs/leon3mp/leon3mp.vhd +++ b/designs/leon3mp/leon3mp.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3mp/systest.c b/designs/leon3mp/systest.c index 100c2697..f5647a5f 100644 --- a/designs/leon3mp/systest.c +++ b/designs/leon3mp/systest.c @@ -1,7 +1,9 @@ + main() { + report_start(); base_test(); diff --git a/designs/leon3mp/testbench.vhd b/designs/leon3mp/testbench.vhd index c42ed2ce..d5a59662 100644 --- a/designs/leon3mp/testbench.vhd +++ b/designs/leon3mp/testbench.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/leon3mp/tkconfig.h b/designs/leon3mp/tkconfig.h index f47757f7..b839a88a 100644 --- a/designs/leon3mp/tkconfig.h +++ b/designs/leon3mp/tkconfig.h @@ -72,6 +72,18 @@ #define CONFIG_SYN_TECH virtex5 #elif defined CONFIG_SYN_VIRTEX6 #define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 @@ -143,6 +155,8 @@ #define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T @@ -527,6 +541,10 @@ #ifdef CONFIG_MMU_I32 #define CONFIG_ITLBNUM 32 #endif +#ifdef CONFIG_MMU_I64 +#define CONFIG_ITLBNUM 64 +#endif + #define CONFIG_DTLBNUM 2 #ifdef CONFIG_MMU_D2 @@ -549,6 +567,10 @@ #undef CONFIG_DTLBNUM #define CONFIG_DTLBNUM 32 #endif +#ifdef CONFIG_MMU_D64 +#undef CONFIG_DTLBNUM +#define CONFIG_DTLBNUM 64 +#endif #ifdef CONFIG_MMU_FASTWB #define CFG_MMU_FASTWB 1 #else @@ -615,14 +637,14 @@ #define CONFIG_RF_ERRINJ 0 #endif -#ifndef CONFIG_FPUFT_EN -#define CONFIG_FPUFT 0 -#else -#ifdef CONFIG_FPU_GRFPU +#if defined CONFIG_FPUFT_PAR +#define CONFIG_FPUFT 1 +#elif defined CONFIG_FPUFT_DMR #define CONFIG_FPUFT 2 +#elif defined CONFIG_FPUFT_TMR +#define CONFIG_FPUFT 4 #else -#define CONFIG_FPUFT 1 -#endif +#define CONFIG_FPUFT 0 #endif #ifndef CONFIG_CACHE_FT_EN diff --git a/designs/netcard/Makefile b/designs/netcard/Makefile index 9051157c..ed416801 100644 --- a/designs/netcard/Makefile +++ b/designs/netcard/Makefile @@ -16,11 +16,11 @@ CLEAN=soft-clean TECHLIBS = unisim LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \ - tmtc openchip hynix cypress micron ihp gleichmann opencores esa + tmtc openchip hynix cypress micron ihp opencores esa -DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr usb ata leon3ft \ - usbhc leon3 haps can i2c satcan ascs spi memctrl hcan slink \ - coremp7 leon4 leon4b64 +DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan ddr usb leon3ft \ + usbhc leon3 can i2c satcan ascs spi memctrl hcan slink \ + leon4 leon4v0 leon3 leon3v1 leon3ftv1 leon3ftv2 srmmu irqmp FILESKIP = i2cmst.vhd diff --git a/designs/netcard/config.help b/designs/netcard/config.help index 5265f645..e1e57e3c 100644 --- a/designs/netcard/config.help +++ b/designs/netcard/config.help @@ -2,14 +2,14 @@ Prompt for target technology CONFIG_SYN_INFERRED - Selects the target technology for memory and pads. + Selects the target technology for memory and pads. The following are available: - Inferred: Generic FPGA or ASIC targets if your synthesis tool is capable of inferring RAMs and pads automatically. - - Actel ProAsic/P/3 and Axellerator FPGAs - - Aeroflex UT25CRH Rad-Hard 0.25 um CMOS + - Actel ProAsic/P/3, IGLOO and Axcelerator FPGAs + - Aeroflex UT25CRH Rad-Hard 0.25 um CMOS - Altera: Most Altera FPGA families - Altera-Stratix: Altera Stratix FPGA family - Altera-StratixII: Altera Stratix-II FPGA family @@ -19,15 +19,19 @@ CONFIG_SYN_INFERRED - Lattice : EC/ECP/XP FPGAs - Quicklogic : Eclipse/E/II FPGAs - UMC-0.18 : UMC 0.18 um CMOS with Virtual Silicon libraries - - Xilinx-Spartan/2/3: Xilinx Spartan/2/3 libraries + - Xilinx-Spartan/2/3/6: Xilinx Spartan/2/3/6 libraries - Xilinx-Spartan3E: Xilinx Spartan3E libraries - Xilinx-Virtex/E: Xilinx Virtex/E libraries - - Xilinx-Virtex2/4/5: Xilinx Virtex2/4/5 libraries + - Xilinx-Virtex2/4/5/6/7: Xilinx Virtex2/4/5/6/7 libraries + Note: Level of technology support depends on type of GRLIB + distribution. A technology may be present in this list while the + tech support files are missing from the GRLIB distribution. + Actel support is only available in commercial and FT distributions. Ram library CONFIG_MEM_VIRAGE - Select RAM generators for ASIC targets. + Select RAM generators for ASIC targets. Infer ram CONFIG_SYN_INFER_RAM @@ -59,31 +63,33 @@ CONFIG_CLK_INFERRED phase-adjust the system and SDRAM clocks. This is currently supported for Xilinx, Altera and Proasic3 FPGAs. Depending on technology, you can select to use the Xilinx CKLDLL macro (Virtex, VirtexE, Spartan1/2), - the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Altera ALTDLL - (Stratix, Cyclone), or the Proasic3 PLL. Choose the 'inferred' - option to skip a clock generator. + the Xilinx DCM (Virtex-2, Spartan3, Virtex-4), the Xilinx PLLE2 (Virtex-7, + Kintex-7, Artix-4), the Altera ALTDLL (Stratix, Cyclone), or the + Proasic3 PLL. Choose the 'inferred' option to skip a clock generator. Clock multiplier CONFIG_CLK_MUL - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. Clock divider CONFIG_CLK_DIV - When using the Xilinx DCM or Altera ALTPLL, the system clock can - be multiplied with a factor of 2 - 32, and divided by a factor of - 1 - 32. This makes it possible to generate almost any desired - processor frequency. When using the Xilinx CLKDLL generator, - the resulting frequency scale factor (mul/div) must be one of - 1/2, 1 or 2. On Proasic3, the factor can be 1 - 128. - + When using the Xilinx DCM, Xilinx PLLE2 or Altera ALTPLL, + the system clock can be multiplied with a factor of 2 - 32, + and divided by a factor of 1 - 32. This makes it possible to + generate almost any desired processor frequency. When using + the Xilinx CLKDLL generator, the resulting frequency scale f + actor (mul/div) must be one of 1/2, 1 or 2. On Proasic3, + the factor can be 1 - 128. + WARNING: The resulting clock must be within the limits specified by the target FPGA family. @@ -98,6 +104,16 @@ CONFIG_OCLK_DIV Static PLL configurator. The mul/div factors can then be read out from tool. +Output clock divider, 2nd clock +CONFIG_OCLKB_DIV + See help for 'Ouput division factor'. Set this to 0 to disable the + second clock output. + +Output clock divider, 3rd clock +CONFIG_OCLKC_DIV + See help for 'Ouput division factor'. Set this to 0 to disable the + third clock output. + System clock multiplier CONFIG_CLKDLL_1_2 The Xilinx CLKDLL can scale the input clock with a factor of 0.5, 1.0, @@ -149,7 +165,13 @@ CONFIG_AHB_SPLIT Unless you actually have an AHB slave that can generate AHB split responses, say N and save some gates. -Default AHB master +Enable full PnP decoding +CONFIG_AHB_FPNPEN + Say Y here to enable full decoding of the PnP configuration records in + in the AHB arbiter. When disabled the user-defined registers in the + PnP configuration records are not mapped in the configuration area. + +IO area start address CONFIG_AHB_IOADDR Selects the MSB adddress (HADDR[31:20]) of the AHB IO area, as defined in the plug&play extentions of the AMBA bus. Should be kept to FFF @@ -174,6 +196,10 @@ Report AHB warnings CONFIG_AHB_MONWAR Print out detected AHB warnings on console. +Write trace to console +CONFIG_AHB_DTRACE + Say yes here to write a trace of all AHB transfers to the + simulator console. Has not impact on final netlist. DSU enable CONFIG_DSU_UART @@ -183,8 +209,16 @@ CONFIG_DSU_UART JTAG Enable CONFIG_DSU_JTAG Say Y to enable the JTAG debug link (JTAG-to-AHB). Debugging is done - with GRMON through the boards JTAG chain at speed of 300 kbits/s. - Supported JTAG cables are Xilinx Parallel Cable III and IV. + with GRMON through the boards JTAG chain at speeds of up to 800 kbits/s. + + The TAP controller can be implemented in custom macros on + Altera, Actel Proasic/3 and Xilinx devices. The commercial + GRLIB also includes a generic TAP controller in VHDL. + + Supported JTAG cables are Xilinx Parallel Cable III and IV, + Xilinx Platform cables (USB), and Altera parallel and USB cables, + Amontech JTAG key, various FTDI chip based USB/JTAG devices, and + Actel Flash Pro 3/4 cable. On-chip ram CONFIG_AHBRAM_ENABLE diff --git a/designs/netcard/config.vhd.h b/designs/netcard/config.vhd.h index f9c3e46e..3bfb4899 100644 --- a/designs/netcard/config.vhd.h +++ b/designs/netcard/config.vhd.h @@ -10,6 +10,8 @@ constant CFG_CLKMUL : integer := CONFIG_CLK_MUL; constant CFG_CLKDIV : integer := CONFIG_CLK_DIV; constant CFG_OCLKDIV : integer := CONFIG_OCLK_DIV; + constant CFG_OCLKBDIV : integer := CONFIG_OCLKB_DIV; + constant CFG_OCLKCDIV : integer := CONFIG_OCLKC_DIV; constant CFG_PCIDLL : integer := CONFIG_PCI_CLKDLL; constant CFG_PCISYSCLK: integer := CONFIG_PCI_SYSCLK; constant CFG_CLK_NOFB : integer := CONFIG_CLK_NOFB; @@ -18,11 +20,13 @@ constant CFG_DEFMST : integer := CONFIG_AHB_DEFMST; constant CFG_RROBIN : integer := CONFIG_AHB_RROBIN; constant CFG_SPLIT : integer := CONFIG_AHB_SPLIT; + constant CFG_FPNPEN : integer := CONFIG_AHB_FPNPEN; constant CFG_AHBIO : integer := 16#CONFIG_AHB_IOADDR#; constant CFG_APBADDR : integer := 16#CONFIG_APB_HADDR#; constant CFG_AHB_MON : integer := CONFIG_AHB_MON; constant CFG_AHB_MONERR : integer := CONFIG_AHB_MONERR; constant CFG_AHB_MONWAR : integer := CONFIG_AHB_MONWAR; + constant CFG_AHB_DTRACE : integer := CONFIG_AHB_DTRACE; -- DSU UART constant CFG_AHB_UART : integer := CONFIG_DSU_UART; diff --git a/designs/netcard/lconfig.tk b/designs/netcard/lconfig.tk index 42f7da86..225ae035 100755 --- a/designs/netcard/lconfig.tk +++ b/designs/netcard/lconfig.tk @@ -712,14 +712,23 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "Altera-CycloneIII" -variable tmpvar_0 -value "Altera-CycloneIII" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Altera-Others" -variable tmpvar_0 -value "Altera-Others" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Actel-Axcelerator" -variable tmpvar_0 -value "Actel-Axcelerator" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Actel-Axcelerator-DSP" -variable tmpvar_0 -value "Actel-Axcelerator-DSP" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Actel-Proasic" -variable tmpvar_0 -value "Actel-Proasic" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Actel-ProasicPlus" -variable tmpvar_0 -value "Actel-ProasicPlus" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Actel-Proasic3" -variable tmpvar_0 -value "Actel-Proasic3" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Actel-Proasic3E" -variable tmpvar_0 -value "Actel-Proasic3E" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Actel-Proasic3L" -variable tmpvar_0 -value "Actel-Proasic3L" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Actel-IGLOO/p/L" -variable tmpvar_0 -value "Actel-IGLOO/p/L" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Actel-Fusion" -variable tmpvar_0 -value "Actel-Fusion" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Aeroflex-UT025CRH" -variable tmpvar_0 -value "Aeroflex-UT025CRH" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Aeroflex-UT130HBD" -variable tmpvar_0 -value "Aeroflex-UT130HBD" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Aeroflex-UT90NHBD" -variable tmpvar_0 -value "Aeroflex-UT90NHBD" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Atmel-ATC18" -variable tmpvar_0 -value "Atmel-ATC18" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Atmel-ATC18RHA" -variable tmpvar_0 -value "Atmel-ATC18RHA" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "IBM-CMOS9SF" -variable tmpvar_0 -value "IBM-CMOS9SF" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Custom1" -variable tmpvar_0 -value "Custom1" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "eASIC90" -variable tmpvar_0 -value "eASIC90" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "eASIC45" -variable tmpvar_0 -value "eASIC45" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "IHP25" -variable tmpvar_0 -value "IHP25" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "IHP25RH" -variable tmpvar_0 -value "IHP25RH" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Lattice-EC/ECP/XP" -variable tmpvar_0 -value "Lattice-EC/ECP/XP" -command "update_active" @@ -728,17 +737,23 @@ proc menu1 {w title} { $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T" -variable tmpvar_0 -value "RH-LIB18T" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-UMC" -variable tmpvar_0 -value "RH-UMC" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "SMIC130" -variable tmpvar_0 -value "SMIC130" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan2" -variable tmpvar_0 -value "Xilinx-Spartan2" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "TM65Gplus" -variable tmpvar_0 -value "TM65Gplus" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Artix7" -variable tmpvar_0 -value "Xilinx-Artix7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Kintex7" -variable tmpvar_0 -value "Xilinx-Kintex7" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3" -variable tmpvar_0 -value "Xilinx-Spartan3" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan3E" -variable tmpvar_0 -value "Xilinx-Spartan3E" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Spartan6" -variable tmpvar_0 -value "Xilinx-Spartan6" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex" -variable tmpvar_0 -value "Xilinx-Virtex" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-VirtexE" -variable tmpvar_0 -value "Xilinx-VirtexE" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex2" -variable tmpvar_0 -value "Xilinx-Virtex2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex4" -variable tmpvar_0 -value "Xilinx-Virtex4" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex5" -variable tmpvar_0 -value "Xilinx-Virtex5" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "UMC180" -variable tmpvar_0 -value "UMC180" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "TSMC90" -variable tmpvar_0 -value "TSMC90" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 33 + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex6" -variable tmpvar_0 -value "Xilinx-Virtex6" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Virtex7" -variable tmpvar_0 -value "Xilinx-Virtex7" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-Zynq7000" -variable tmpvar_0 -value "Xilinx-Zynq7000" -command "update_active" + menusplit $w $w.config.f.x0.x.menu 48 global tmpvar_1 minimenu $w.config.f 1 1 "Memory Library " tmpvar_1 CONFIG_MEM_INFERRED menu $w.config.f.x1.x.menu -tearoffcommand "menutitle \"Memory Library \"" @@ -825,22 +840,40 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Altera-Others"} then {set CONFIG_SYN_ALTERA 1} else {set CONFIG_SYN_ALTERA 0} global CONFIG_SYN_AXCEL if {$tmpvar_0 == "Actel-Axcelerator"} then {set CONFIG_SYN_AXCEL 1} else {set CONFIG_SYN_AXCEL 0} + global CONFIG_SYN_AXDSP + if {$tmpvar_0 == "Actel-Axcelerator-DSP"} then {set CONFIG_SYN_AXDSP 1} else {set CONFIG_SYN_AXDSP 0} global CONFIG_SYN_PROASIC if {$tmpvar_0 == "Actel-Proasic"} then {set CONFIG_SYN_PROASIC 1} else {set CONFIG_SYN_PROASIC 0} global CONFIG_SYN_PROASICPLUS if {$tmpvar_0 == "Actel-ProasicPlus"} then {set CONFIG_SYN_PROASICPLUS 1} else {set CONFIG_SYN_PROASICPLUS 0} global CONFIG_SYN_PROASIC3 if {$tmpvar_0 == "Actel-Proasic3"} then {set CONFIG_SYN_PROASIC3 1} else {set CONFIG_SYN_PROASIC3 0} + global CONFIG_SYN_PROASIC3E + if {$tmpvar_0 == "Actel-Proasic3E"} then {set CONFIG_SYN_PROASIC3E 1} else {set CONFIG_SYN_PROASIC3E 0} + global CONFIG_SYN_PROASIC3L + if {$tmpvar_0 == "Actel-Proasic3L"} then {set CONFIG_SYN_PROASIC3L 1} else {set CONFIG_SYN_PROASIC3L 0} + global CONFIG_SYN_IGLOO + if {$tmpvar_0 == "Actel-IGLOO/p/L"} then {set CONFIG_SYN_IGLOO 1} else {set CONFIG_SYN_IGLOO 0} + global CONFIG_SYN_FUSION + if {$tmpvar_0 == "Actel-Fusion"} then {set CONFIG_SYN_FUSION 1} else {set CONFIG_SYN_FUSION 0} global CONFIG_SYN_UT025CRH if {$tmpvar_0 == "Aeroflex-UT025CRH"} then {set CONFIG_SYN_UT025CRH 1} else {set CONFIG_SYN_UT025CRH 0} + global CONFIG_SYN_UT130HBD + if {$tmpvar_0 == "Aeroflex-UT130HBD"} then {set CONFIG_SYN_UT130HBD 1} else {set CONFIG_SYN_UT130HBD 0} + global CONFIG_SYN_UT90NHBD + if {$tmpvar_0 == "Aeroflex-UT90NHBD"} then {set CONFIG_SYN_UT90NHBD 1} else {set CONFIG_SYN_UT90NHBD 0} global CONFIG_SYN_ATC18 if {$tmpvar_0 == "Atmel-ATC18"} then {set CONFIG_SYN_ATC18 1} else {set CONFIG_SYN_ATC18 0} global CONFIG_SYN_ATC18RHA if {$tmpvar_0 == "Atmel-ATC18RHA"} then {set CONFIG_SYN_ATC18RHA 1} else {set CONFIG_SYN_ATC18RHA 0} + global CONFIG_SYN_CMOS9SF + if {$tmpvar_0 == "IBM-CMOS9SF"} then {set CONFIG_SYN_CMOS9SF 1} else {set CONFIG_SYN_CMOS9SF 0} global CONFIG_SYN_CUSTOM1 if {$tmpvar_0 == "Custom1"} then {set CONFIG_SYN_CUSTOM1 1} else {set CONFIG_SYN_CUSTOM1 0} global CONFIG_SYN_EASIC90 if {$tmpvar_0 == "eASIC90"} then {set CONFIG_SYN_EASIC90 1} else {set CONFIG_SYN_EASIC90 0} + global CONFIG_SYN_EASIC45 + if {$tmpvar_0 == "eASIC45"} then {set CONFIG_SYN_EASIC45 1} else {set CONFIG_SYN_EASIC45 0} global CONFIG_SYN_IHP25 if {$tmpvar_0 == "IHP25"} then {set CONFIG_SYN_IHP25 1} else {set CONFIG_SYN_IHP25 0} global CONFIG_SYN_IHP25RH @@ -857,12 +890,22 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "RH-UMC"} then {set CONFIG_SYN_RHUMC 1} else {set CONFIG_SYN_RHUMC 0} global CONFIG_SYN_SMIC13 if {$tmpvar_0 == "SMIC130"} then {set CONFIG_SYN_SMIC13 1} else {set CONFIG_SYN_SMIC13 0} - global CONFIG_SYN_SPARTAN2 - if {$tmpvar_0 == "Xilinx-Spartan2"} then {set CONFIG_SYN_SPARTAN2 1} else {set CONFIG_SYN_SPARTAN2 0} + global CONFIG_SYN_TM65GPLUS + if {$tmpvar_0 == "TM65Gplus"} then {set CONFIG_SYN_TM65GPLUS 1} else {set CONFIG_SYN_TM65GPLUS 0} + global CONFIG_SYN_TSMC90 + if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} + global CONFIG_SYN_UMC + if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} + global CONFIG_SYN_ARTIX7 + if {$tmpvar_0 == "Xilinx-Artix7"} then {set CONFIG_SYN_ARTIX7 1} else {set CONFIG_SYN_ARTIX7 0} + global CONFIG_SYN_KINTEX7 + if {$tmpvar_0 == "Xilinx-Kintex7"} then {set CONFIG_SYN_KINTEX7 1} else {set CONFIG_SYN_KINTEX7 0} global CONFIG_SYN_SPARTAN3 if {$tmpvar_0 == "Xilinx-Spartan3"} then {set CONFIG_SYN_SPARTAN3 1} else {set CONFIG_SYN_SPARTAN3 0} global CONFIG_SYN_SPARTAN3E if {$tmpvar_0 == "Xilinx-Spartan3E"} then {set CONFIG_SYN_SPARTAN3E 1} else {set CONFIG_SYN_SPARTAN3E 0} + global CONFIG_SYN_SPARTAN6 + if {$tmpvar_0 == "Xilinx-Spartan6"} then {set CONFIG_SYN_SPARTAN6 1} else {set CONFIG_SYN_SPARTAN6 0} global CONFIG_SYN_VIRTEX if {$tmpvar_0 == "Xilinx-Virtex"} then {set CONFIG_SYN_VIRTEX 1} else {set CONFIG_SYN_VIRTEX 0} global CONFIG_SYN_VIRTEXE @@ -873,10 +916,12 @@ proc update_define_menu1 {} { if {$tmpvar_0 == "Xilinx-Virtex4"} then {set CONFIG_SYN_VIRTEX4 1} else {set CONFIG_SYN_VIRTEX4 0} global CONFIG_SYN_VIRTEX5 if {$tmpvar_0 == "Xilinx-Virtex5"} then {set CONFIG_SYN_VIRTEX5 1} else {set CONFIG_SYN_VIRTEX5 0} - global CONFIG_SYN_UMC - if {$tmpvar_0 == "UMC180"} then {set CONFIG_SYN_UMC 1} else {set CONFIG_SYN_UMC 0} - global CONFIG_SYN_TSMC90 - if {$tmpvar_0 == "TSMC90"} then {set CONFIG_SYN_TSMC90 1} else {set CONFIG_SYN_TSMC90 0} + global CONFIG_SYN_VIRTEX6 + if {$tmpvar_0 == "Xilinx-Virtex6"} then {set CONFIG_SYN_VIRTEX6 1} else {set CONFIG_SYN_VIRTEX6 0} + global CONFIG_SYN_VIRTEX7 + if {$tmpvar_0 == "Xilinx-Virtex7"} then {set CONFIG_SYN_VIRTEX7 1} else {set CONFIG_SYN_VIRTEX7 0} + global CONFIG_SYN_ZYNQ7000 + if {$tmpvar_0 == "Xilinx-Zynq7000"} then {set CONFIG_SYN_ZYNQ7000 1} else {set CONFIG_SYN_ZYNQ7000 0} global tmpvar_1 global CONFIG_MEM_INFERRED if {$tmpvar_1 == "Inferred"} then {set CONFIG_MEM_INFERRED 1} else {set CONFIG_MEM_INFERRED 0} @@ -957,20 +1002,27 @@ proc menu2 {w title} { menu $w.config.f.x0.x.menu -tearoffcommand "menutitle \"Clock generator \"" $w.config.f.x0.x.menu add radiobutton -label "Inferred" -variable tmpvar_2 -value "Inferred" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Actel-HCLKBUF" -variable tmpvar_2 -value "Actel-HCLKBUF" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Aeroflex-UT130HBD" -variable tmpvar_2 -value "Aeroflex-UT130HBD" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Altera-ALTPLL" -variable tmpvar_2 -value "Altera-ALTPLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Lattice-EXPLL" -variable tmpvar_2 -value "Lattice-EXPLL" -command "update_active" - $w.config.f.x0.x.menu add radiobutton -label "Proasic3-PLLL" -variable tmpvar_2 -value "Proasic3-PLLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Proasic3-PLL" -variable tmpvar_2 -value "Proasic3-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Proasic3E-PLL" -variable tmpvar_2 -value "Proasic3E-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Proasic3L-PLL" -variable tmpvar_2 -value "Proasic3L-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Fusion-PLL" -variable tmpvar_2 -value "Fusion-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "RH-LIB18T-PLL" -variable tmpvar_2 -value "RH-LIB18T-PLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "DARE-PLL" -variable tmpvar_2 -value "DARE-PLL" -command "update_active" + $w.config.f.x0.x.menu add radiobutton -label "Xilinx-PLLE2" -variable tmpvar_2 -value "Xilinx-PLLE2" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-CLKDLL" -variable tmpvar_2 -value "Xilinx-CLKDLL" -command "update_active" $w.config.f.x0.x.menu add radiobutton -label "Xilinx-DCM" -variable tmpvar_2 -value "Xilinx-DCM" -command "update_active" - menusplit $w $w.config.f.x0.x.menu 9 - int $w.config.f 2 1 "Clock multiplication factor (2 - 32)" CONFIG_CLK_MUL - int $w.config.f 2 2 "Clock division factor (2 - 32)" CONFIG_CLK_DIV - int $w.config.f 2 3 "Outout division factor (2 - 32)" CONFIG_OCLK_DIV - bool $w.config.f 2 4 "Enable Xilinx CLKDLL for PCI clock" CONFIG_PCI_CLKDLL - bool $w.config.f 2 5 "Disable external feedback for SDRAM clock" CONFIG_CLK_NOFB - bool $w.config.f 2 6 "Use PCI clock as system clock" CONFIG_PCI_SYSCLK + menusplit $w $w.config.f.x0.x.menu 14 + int $w.config.f 2 1 "Clock multiplication factor (allowed values are tech dependent)" CONFIG_CLK_MUL + int $w.config.f 2 2 "Clock division factor (allowed values are tech dependent)" CONFIG_CLK_DIV + int $w.config.f 2 3 "Outout division factor (1 - 32)" CONFIG_OCLK_DIV + int $w.config.f 2 4 "Outout division factor, 2nd clk (0 - 32, see help)" CONFIG_OCLKB_DIV + int $w.config.f 2 5 "Outout division factor, 3rd clk (0 - 32, see help)" CONFIG_OCLKC_DIV + bool $w.config.f 2 6 "Enable Xilinx CLKDLL for PCI clock" CONFIG_PCI_CLKDLL + bool $w.config.f 2 7 "Disable external feedback for SDRAM clock" CONFIG_CLK_NOFB + bool $w.config.f 2 8 "Use PCI clock as system clock" CONFIG_PCI_SYSCLK @@ -1011,24 +1063,32 @@ proc update_menu2 {} { global CONFIG_CLK_ALTDLL global CONFIG_CLK_LATDLL global CONFIG_CLK_PRO3PLL + global CONFIG_CLK_PRO3EPLL + global CONFIG_CLK_PRO3LPLL global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T + global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x1.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x1.l configure -state normal; } else {.menu2.config.f.x1.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x1.l configure -state disabled} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {.menu2.config.f.x2.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x2.l configure -state normal; } else {.menu2.config.f.x2.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x2.l configure -state disabled} global CONFIG_OCLK_DIV - if {($CONFIG_CLK_PRO3PLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} + if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x3.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x3.l configure -state normal; } else {.menu2.config.f.x3.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x3.l configure -state disabled} + global CONFIG_OCLKB_DIV + if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x4.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x4.l configure -state normal; } else {.menu2.config.f.x4.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x4.l configure -state disabled} + global CONFIG_OCLKC_DIV + if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {.menu2.config.f.x5.x configure -state normal -foreground [ cget .ref -foreground ]; .menu2.config.f.x5.l configure -state normal; } else {.menu2.config.f.x5.x configure -state disabled -foreground [ cget .ref -disabledforeground ]; .menu2.config.f.x5.l configure -state disabled} global CONFIG_PCI_CLKDLL if {($CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_DCM == 1)} then { - configure_entry .menu2.config.f.x4 normal {n l y}} else {configure_entry .menu2.config.f.x4 disabled {y n l}} + configure_entry .menu2.config.f.x6 normal {n l y}} else {configure_entry .menu2.config.f.x6 disabled {y n l}} global CONFIG_CLK_NOFB if {($CONFIG_CLK_DCM == 1)} then { - configure_entry .menu2.config.f.x5 normal {n l y}} else {configure_entry .menu2.config.f.x5 disabled {y n l}} + configure_entry .menu2.config.f.x7 normal {n l y}} else {configure_entry .menu2.config.f.x7 disabled {y n l}} global CONFIG_PCI_ENABLE global CONFIG_PCI_SYSCLK if {($CONFIG_PCI_ENABLE != 1)} then { - configure_entry .menu2.config.f.x6 normal {n l y}} else {configure_entry .menu2.config.f.x6 disabled {y n l}} + configure_entry .menu2.config.f.x8 normal {n l y}} else {configure_entry .menu2.config.f.x8 disabled {y n l}} } @@ -1040,26 +1100,40 @@ proc update_define_menu2 {} { if {$tmpvar_2 == "Inferred"} then {set CONFIG_CLK_INFERRED 1} else {set CONFIG_CLK_INFERRED 0} global CONFIG_CLK_HCLKBUF if {$tmpvar_2 == "Actel-HCLKBUF"} then {set CONFIG_CLK_HCLKBUF 1} else {set CONFIG_CLK_HCLKBUF 0} + global CONFIG_CLK_UT130HBD + if {$tmpvar_2 == "Aeroflex-UT130HBD"} then {set CONFIG_CLK_UT130HBD 1} else {set CONFIG_CLK_UT130HBD 0} global CONFIG_CLK_ALTDLL if {$tmpvar_2 == "Altera-ALTPLL"} then {set CONFIG_CLK_ALTDLL 1} else {set CONFIG_CLK_ALTDLL 0} global CONFIG_CLK_LATDLL if {$tmpvar_2 == "Lattice-EXPLL"} then {set CONFIG_CLK_LATDLL 1} else {set CONFIG_CLK_LATDLL 0} global CONFIG_CLK_PRO3PLL - if {$tmpvar_2 == "Proasic3-PLLL"} then {set CONFIG_CLK_PRO3PLL 1} else {set CONFIG_CLK_PRO3PLL 0} + if {$tmpvar_2 == "Proasic3-PLL"} then {set CONFIG_CLK_PRO3PLL 1} else {set CONFIG_CLK_PRO3PLL 0} + global CONFIG_CLK_PRO3EPLL + if {$tmpvar_2 == "Proasic3E-PLL"} then {set CONFIG_CLK_PRO3EPLL 1} else {set CONFIG_CLK_PRO3EPLL 0} + global CONFIG_CLK_PRO3LPLL + if {$tmpvar_2 == "Proasic3L-PLL"} then {set CONFIG_CLK_PRO3LPLL 1} else {set CONFIG_CLK_PRO3LPLL 0} + global CONFIG_CLK_FUSPLL + if {$tmpvar_2 == "Fusion-PLL"} then {set CONFIG_CLK_FUSPLL 1} else {set CONFIG_CLK_FUSPLL 0} global CONFIG_CLK_LIB18T if {$tmpvar_2 == "RH-LIB18T-PLL"} then {set CONFIG_CLK_LIB18T 1} else {set CONFIG_CLK_LIB18T 0} global CONFIG_CLK_RHUMC if {$tmpvar_2 == "DARE-PLL"} then {set CONFIG_CLK_RHUMC 1} else {set CONFIG_CLK_RHUMC 0} + global CONFIG_CLK_CLKPLLE2 + if {$tmpvar_2 == "Xilinx-PLLE2"} then {set CONFIG_CLK_CLKPLLE2 1} else {set CONFIG_CLK_CLKPLLE2 0} global CONFIG_CLK_CLKDLL if {$tmpvar_2 == "Xilinx-CLKDLL"} then {set CONFIG_CLK_CLKDLL 1} else {set CONFIG_CLK_CLKDLL 0} global CONFIG_CLK_DCM if {$tmpvar_2 == "Xilinx-DCM"} then {set CONFIG_CLK_DCM 1} else {set CONFIG_CLK_DCM 0} global CONFIG_CLK_MUL - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_MUL "$CONFIG_CLK_MUL" 2} global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {validate_int CONFIG_CLK_DIV "$CONFIG_CLK_DIV" 2} global CONFIG_OCLK_DIV - if {($CONFIG_CLK_PRO3PLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 2} + if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLK_DIV "$CONFIG_OCLK_DIV" 1} + global CONFIG_OCLKB_DIV + if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLKB_DIV "$CONFIG_OCLKB_DIV" 0} + global CONFIG_OCLKC_DIV + if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {validate_int CONFIG_OCLKC_DIV "$CONFIG_OCLKC_DIV" 0} global CONFIG_PCI_CLKDLL if {($CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_DCM == 1)} then { set CONFIG_PCI_CLKDLL [expr $CONFIG_PCI_CLKDLL&15]} else {set CONFIG_PCI_CLKDLL [expr $CONFIG_PCI_CLKDLL|16]} @@ -1127,11 +1201,13 @@ proc menu3 {w title} { int $w.config.f 3 0 "Default AHB master" CONFIG_AHB_DEFMST bool $w.config.f 3 1 "Round-robin arbiter " CONFIG_AHB_RROBIN bool $w.config.f 3 2 "AHB split-transaction support " CONFIG_AHB_SPLIT - hex $w.config.f 3 3 "I/O area start address (haddr\[31:20\]) " CONFIG_AHB_IOADDR - hex $w.config.f 3 4 "AHB/APB bridge address (haddr\[31:20\]) " CONFIG_APB_HADDR - bool $w.config.f 3 5 "Enable AMBA AHB monitor " CONFIG_AHB_MON - bool $w.config.f 3 6 "Report AHB errors " CONFIG_AHB_MONERR - bool $w.config.f 3 7 "Report AHB warings " CONFIG_AHB_MONWAR + bool $w.config.f 3 3 "Enable full plug&play decoding " CONFIG_AHB_FPNPEN + hex $w.config.f 3 4 "I/O area start address (haddr\[31:20\]) " CONFIG_AHB_IOADDR + hex $w.config.f 3 5 "AHB/APB bridge address (haddr\[31:20\]) " CONFIG_APB_HADDR + bool $w.config.f 3 6 "Enable AMBA AHB monitor " CONFIG_AHB_MON + bool $w.config.f 3 7 "Report AHB errors " CONFIG_AHB_MONERR + bool $w.config.f 3 8 "Report AHB warings " CONFIG_AHB_MONWAR + bool $w.config.f 3 9 "Write trace to simulation console " CONFIG_AHB_DTRACE @@ -1171,10 +1247,10 @@ proc update_menu3 {} { global CONFIG_AHB_MON global CONFIG_AHB_MONERR if {($CONFIG_AHB_MON == 1)} then { - configure_entry .menu3.config.f.x6 normal {n l y}} else {configure_entry .menu3.config.f.x6 disabled {y n l}} + configure_entry .menu3.config.f.x7 normal {n l y}} else {configure_entry .menu3.config.f.x7 disabled {y n l}} global CONFIG_AHB_MONWAR if {($CONFIG_AHB_MON == 1)} then { - configure_entry .menu3.config.f.x7 normal {n l y}} else {configure_entry .menu3.config.f.x7 disabled {y n l}} + configure_entry .menu3.config.f.x8 normal {n l y}} else {configure_entry .menu3.config.f.x8 disabled {y n l}} } @@ -1741,14 +1817,23 @@ set CONFIG_SYN_STRATIXIII 0 set CONFIG_SYN_CYCLONEIII 0 set CONFIG_SYN_ALTERA 0 set CONFIG_SYN_AXCEL 0 +set CONFIG_SYN_AXDSP 0 set CONFIG_SYN_PROASIC 0 set CONFIG_SYN_PROASICPLUS 0 set CONFIG_SYN_PROASIC3 0 +set CONFIG_SYN_PROASIC3E 0 +set CONFIG_SYN_PROASIC3L 0 +set CONFIG_SYN_IGLOO 0 +set CONFIG_SYN_FUSION 0 set CONFIG_SYN_UT025CRH 0 +set CONFIG_SYN_UT130HBD 0 +set CONFIG_SYN_UT90NHBD 0 set CONFIG_SYN_ATC18 0 set CONFIG_SYN_ATC18RHA 0 +set CONFIG_SYN_CMOS9SF 0 set CONFIG_SYN_CUSTOM1 0 set CONFIG_SYN_EASIC90 0 +set CONFIG_SYN_EASIC45 0 set CONFIG_SYN_IHP25 0 set CONFIG_SYN_IHP25RH 0 set CONFIG_SYN_LATTICE 0 @@ -1757,16 +1842,22 @@ set CONFIG_SYN_PEREGRINE 0 set CONFIG_SYN_RH_LIB18T 0 set CONFIG_SYN_RHUMC 0 set CONFIG_SYN_SMIC13 0 -set CONFIG_SYN_SPARTAN2 0 +set CONFIG_SYN_TM65GPLUS 0 +set CONFIG_SYN_TSMC90 0 +set CONFIG_SYN_UMC 0 +set CONFIG_SYN_ARTIX7 0 +set CONFIG_SYN_KINTEX7 0 set CONFIG_SYN_SPARTAN3 0 set CONFIG_SYN_SPARTAN3E 0 +set CONFIG_SYN_SPARTAN6 0 set CONFIG_SYN_VIRTEX 0 set CONFIG_SYN_VIRTEXE 0 set CONFIG_SYN_VIRTEX2 0 set CONFIG_SYN_VIRTEX4 0 set CONFIG_SYN_VIRTEX5 0 -set CONFIG_SYN_UMC 0 -set CONFIG_SYN_TSMC90 0 +set CONFIG_SYN_VIRTEX6 0 +set CONFIG_SYN_VIRTEX7 0 +set CONFIG_SYN_ZYNQ7000 0 set tmpvar_1 "(not set)" set CONFIG_MEM_INFERRED 0 set CONFIG_MEM_UMC 0 @@ -1782,27 +1873,36 @@ set CONFIG_SYN_SCAN 0 set tmpvar_2 "(not set)" set CONFIG_CLK_INFERRED 0 set CONFIG_CLK_HCLKBUF 0 +set CONFIG_CLK_UT130HBD 0 set CONFIG_CLK_ALTDLL 0 set CONFIG_CLK_LATDLL 0 set CONFIG_CLK_PRO3PLL 0 +set CONFIG_CLK_PRO3EPLL 0 +set CONFIG_CLK_PRO3LPLL 0 +set CONFIG_CLK_FUSPLL 0 set CONFIG_CLK_LIB18T 0 set CONFIG_CLK_RHUMC 0 +set CONFIG_CLK_CLKPLLE2 0 set CONFIG_CLK_CLKDLL 0 set CONFIG_CLK_DCM 0 set CONFIG_CLK_MUL 2 set CONFIG_CLK_DIV 2 -set CONFIG_OCLK_DIV 2 +set CONFIG_OCLK_DIV 1 +set CONFIG_OCLKB_DIV 0 +set CONFIG_OCLKC_DIV 0 set CONFIG_PCI_CLKDLL 0 set CONFIG_CLK_NOFB 0 set CONFIG_PCI_SYSCLK 0 set CONFIG_AHB_DEFMST 0 set CONFIG_AHB_RROBIN 0 set CONFIG_AHB_SPLIT 0 +set CONFIG_AHB_FPNPEN 0 set CONFIG_AHB_IOADDR FFF set CONFIG_APB_HADDR 800 set CONFIG_AHB_MON 0 set CONFIG_AHB_MONERR 0 set CONFIG_AHB_MONWAR 0 +set CONFIG_AHB_DTRACE 0 set CONFIG_DSU_UART 0 set CONFIG_DSU_JTAG 0 set CONFIG_AHBRAM_ENABLE 0 @@ -1869,14 +1969,23 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "Altera-CycloneIII" } then { write_tristate $cfg $autocfg CONFIG_SYN_CYCLONEIII 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_CYCLONEIII 0 [list $notmod] 2 } if { $tmpvar_0 == "Altera-Others" } then { write_tristate $cfg $autocfg CONFIG_SYN_ALTERA 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ALTERA 0 [list $notmod] 2 } if { $tmpvar_0 == "Actel-Axcelerator" } then { write_tristate $cfg $autocfg CONFIG_SYN_AXCEL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_AXCEL 0 [list $notmod] 2 } + if { $tmpvar_0 == "Actel-Axcelerator-DSP" } then { write_tristate $cfg $autocfg CONFIG_SYN_AXDSP 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_AXDSP 0 [list $notmod] 2 } if { $tmpvar_0 == "Actel-Proasic" } then { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC 0 [list $notmod] 2 } if { $tmpvar_0 == "Actel-ProasicPlus" } then { write_tristate $cfg $autocfg CONFIG_SYN_PROASICPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_PROASICPLUS 0 [list $notmod] 2 } if { $tmpvar_0 == "Actel-Proasic3" } then { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC3 0 [list $notmod] 2 } + if { $tmpvar_0 == "Actel-Proasic3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC3E 0 [list $notmod] 2 } + if { $tmpvar_0 == "Actel-Proasic3L" } then { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC3L 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_PROASIC3L 0 [list $notmod] 2 } + if { $tmpvar_0 == "Actel-IGLOO/p/L" } then { write_tristate $cfg $autocfg CONFIG_SYN_IGLOO 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_IGLOO 0 [list $notmod] 2 } + if { $tmpvar_0 == "Actel-Fusion" } then { write_tristate $cfg $autocfg CONFIG_SYN_FUSION 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_FUSION 0 [list $notmod] 2 } if { $tmpvar_0 == "Aeroflex-UT025CRH" } then { write_tristate $cfg $autocfg CONFIG_SYN_UT025CRH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UT025CRH 0 [list $notmod] 2 } + if { $tmpvar_0 == "Aeroflex-UT130HBD" } then { write_tristate $cfg $autocfg CONFIG_SYN_UT130HBD 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UT130HBD 0 [list $notmod] 2 } + if { $tmpvar_0 == "Aeroflex-UT90NHBD" } then { write_tristate $cfg $autocfg CONFIG_SYN_UT90NHBD 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UT90NHBD 0 [list $notmod] 2 } if { $tmpvar_0 == "Atmel-ATC18" } then { write_tristate $cfg $autocfg CONFIG_SYN_ATC18 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ATC18 0 [list $notmod] 2 } if { $tmpvar_0 == "Atmel-ATC18RHA" } then { write_tristate $cfg $autocfg CONFIG_SYN_ATC18RHA 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ATC18RHA 0 [list $notmod] 2 } + if { $tmpvar_0 == "IBM-CMOS9SF" } then { write_tristate $cfg $autocfg CONFIG_SYN_CMOS9SF 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_CMOS9SF 0 [list $notmod] 2 } if { $tmpvar_0 == "Custom1" } then { write_tristate $cfg $autocfg CONFIG_SYN_CUSTOM1 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_CUSTOM1 0 [list $notmod] 2 } if { $tmpvar_0 == "eASIC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_EASIC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_EASIC90 0 [list $notmod] 2 } + if { $tmpvar_0 == "eASIC45" } then { write_tristate $cfg $autocfg CONFIG_SYN_EASIC45 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_EASIC45 0 [list $notmod] 2 } if { $tmpvar_0 == "IHP25" } then { write_tristate $cfg $autocfg CONFIG_SYN_IHP25 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_IHP25 0 [list $notmod] 2 } if { $tmpvar_0 == "IHP25RH" } then { write_tristate $cfg $autocfg CONFIG_SYN_IHP25RH 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_IHP25RH 0 [list $notmod] 2 } if { $tmpvar_0 == "Lattice-EC/ECP/XP" } then { write_tristate $cfg $autocfg CONFIG_SYN_LATTICE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_LATTICE 0 [list $notmod] 2 } @@ -1885,16 +1994,22 @@ proc writeconfig {file1 file2} { if { $tmpvar_0 == "RH-LIB18T" } then { write_tristate $cfg $autocfg CONFIG_SYN_RH_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_RH_LIB18T 0 [list $notmod] 2 } if { $tmpvar_0 == "RH-UMC" } then { write_tristate $cfg $autocfg CONFIG_SYN_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_RHUMC 0 [list $notmod] 2 } if { $tmpvar_0 == "SMIC130" } then { write_tristate $cfg $autocfg CONFIG_SYN_SMIC13 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SMIC13 0 [list $notmod] 2 } - if { $tmpvar_0 == "Xilinx-Spartan2" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN2 0 [list $notmod] 2 } + if { $tmpvar_0 == "TM65Gplus" } then { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TM65GPLUS 0 [list $notmod] 2 } + if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } + if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Artix7" } then { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ARTIX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Kintex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_KINTEX7 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Spartan3E" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN3E 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Spartan6" } then { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_SPARTAN6 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-VirtexE" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEXE 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEXE 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex2" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX2 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex4" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX4 0 [list $notmod] 2 } if { $tmpvar_0 == "Xilinx-Virtex5" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX5 0 [list $notmod] 2 } - if { $tmpvar_0 == "UMC180" } then { write_tristate $cfg $autocfg CONFIG_SYN_UMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_UMC 0 [list $notmod] 2 } - if { $tmpvar_0 == "TSMC90" } then { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_TSMC90 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex6" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX6 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Virtex7" } then { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_VIRTEX7 0 [list $notmod] 2 } + if { $tmpvar_0 == "Xilinx-Zynq7000" } then { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_SYN_ZYNQ7000 0 [list $notmod] 2 } global tmpvar_1 global CONFIG_SYN_INFERRED global CONFIG_SYN_CUSTOM1 @@ -1924,11 +2039,16 @@ proc writeconfig {file1 file2} { if { $tmpvar_2 == "Inferred" } then { write_tristate $cfg $autocfg CONFIG_CLK_INFERRED 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_INFERRED 0 [list $notmod] 2 } if { $tmpvar_2 == "Actel-HCLKBUF" } then { write_tristate $cfg $autocfg CONFIG_CLK_HCLKBUF 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_HCLKBUF 0 [list $notmod] 2 } + if { $tmpvar_2 == "Aeroflex-UT130HBD" } then { write_tristate $cfg $autocfg CONFIG_CLK_UT130HBD 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_UT130HBD 0 [list $notmod] 2 } if { $tmpvar_2 == "Altera-ALTPLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_ALTDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_ALTDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Lattice-EXPLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LATDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LATDLL 0 [list $notmod] 2 } - if { $tmpvar_2 == "Proasic3-PLLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_PRO3PLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_PRO3PLL 0 [list $notmod] 2 } + if { $tmpvar_2 == "Proasic3-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_PRO3PLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_PRO3PLL 0 [list $notmod] 2 } + if { $tmpvar_2 == "Proasic3E-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_PRO3EPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_PRO3EPLL 0 [list $notmod] 2 } + if { $tmpvar_2 == "Proasic3L-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_PRO3LPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_PRO3LPLL 0 [list $notmod] 2 } + if { $tmpvar_2 == "Fusion-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_FUSPLL 0 [list $notmod] 2 } if { $tmpvar_2 == "RH-LIB18T-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_LIB18T 0 [list $notmod] 2 } if { $tmpvar_2 == "DARE-PLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_RHUMC 0 [list $notmod] 2 } + if { $tmpvar_2 == "Xilinx-PLLE2" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKPLLE2 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-CLKDLL" } then { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_CLKDLL 0 [list $notmod] 2 } if { $tmpvar_2 == "Xilinx-DCM" } then { write_tristate $cfg $autocfg CONFIG_CLK_DCM 1 [list $notmod] 2 } else { write_tristate $cfg $autocfg CONFIG_CLK_DCM 0 [list $notmod] 2 } global CONFIG_CLK_MUL @@ -1936,13 +2056,21 @@ proc writeconfig {file1 file2} { global CONFIG_CLK_ALTDLL global CONFIG_CLK_LATDLL global CONFIG_CLK_PRO3PLL + global CONFIG_CLK_PRO3EPLL + global CONFIG_CLK_PRO3LPLL global CONFIG_CLK_CLKDLL global CONFIG_CLK_LIB18T - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } + global CONFIG_CLK_FUSPLL + global CONFIG_CLK_CLKPLLE2 + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_MUL $CONFIG_CLK_MUL $notmod } global CONFIG_CLK_DIV - if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } + if {($CONFIG_CLK_DCM == 1 || $CONFIG_CLK_ALTDLL == 1 || $CONFIG_CLK_LATDLL == 1 || $CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_LIB18T == 1 || $CONFIG_CLK_FUSPLL == 1 || $CONFIG_CLK_CLKPLLE2 == 1)} then {write_int $cfg $autocfg CONFIG_CLK_DIV $CONFIG_CLK_DIV $notmod } global CONFIG_OCLK_DIV - if {($CONFIG_CLK_PRO3PLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } + if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLK_DIV $CONFIG_OCLK_DIV $notmod } + global CONFIG_OCLKB_DIV + if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLKB_DIV $CONFIG_OCLKB_DIV $notmod } + global CONFIG_OCLKC_DIV + if {($CONFIG_CLK_PRO3PLL == 1 || $CONFIG_CLK_PRO3EPLL == 1 || $CONFIG_CLK_PRO3LPLL == 1 || $CONFIG_CLK_FUSPLL == 1)} then {write_int $cfg $autocfg CONFIG_OCLKC_DIV $CONFIG_OCLKC_DIV $notmod } global CONFIG_PCI_CLKDLL if {($CONFIG_CLK_CLKDLL == 1 || $CONFIG_CLK_DCM == 1)} then {write_tristate $cfg $autocfg CONFIG_PCI_CLKDLL $CONFIG_PCI_CLKDLL [list $notmod] 2 } global CONFIG_CLK_NOFB @@ -1957,6 +2085,8 @@ proc writeconfig {file1 file2} { write_tristate $cfg $autocfg CONFIG_AHB_RROBIN $CONFIG_AHB_RROBIN [list $notmod] 2 global CONFIG_AHB_SPLIT write_tristate $cfg $autocfg CONFIG_AHB_SPLIT $CONFIG_AHB_SPLIT [list $notmod] 2 + global CONFIG_AHB_FPNPEN + write_tristate $cfg $autocfg CONFIG_AHB_FPNPEN $CONFIG_AHB_FPNPEN [list $notmod] 2 global CONFIG_AHB_IOADDR write_hex $cfg $autocfg CONFIG_AHB_IOADDR $CONFIG_AHB_IOADDR $notmod global CONFIG_APB_HADDR @@ -1967,6 +2097,8 @@ proc writeconfig {file1 file2} { if {($CONFIG_AHB_MON == 1)} then {write_tristate $cfg $autocfg CONFIG_AHB_MONERR $CONFIG_AHB_MONERR [list $notmod] 2 } global CONFIG_AHB_MONWAR if {($CONFIG_AHB_MON == 1)} then {write_tristate $cfg $autocfg CONFIG_AHB_MONWAR $CONFIG_AHB_MONWAR [list $notmod] 2 } + global CONFIG_AHB_DTRACE + write_tristate $cfg $autocfg CONFIG_AHB_DTRACE $CONFIG_AHB_DTRACE [list $notmod] 2 write_comment $cfg $autocfg "Debug Link " global CONFIG_DSU_UART write_tristate $cfg $autocfg CONFIG_DSU_UART $CONFIG_DSU_UART [list $notmod] 2 @@ -2042,14 +2174,23 @@ proc clear_choices { } { global CONFIG_SYN_CYCLONEIII; set CONFIG_SYN_CYCLONEIII 0 global CONFIG_SYN_ALTERA; set CONFIG_SYN_ALTERA 0 global CONFIG_SYN_AXCEL; set CONFIG_SYN_AXCEL 0 + global CONFIG_SYN_AXDSP; set CONFIG_SYN_AXDSP 0 global CONFIG_SYN_PROASIC; set CONFIG_SYN_PROASIC 0 global CONFIG_SYN_PROASICPLUS; set CONFIG_SYN_PROASICPLUS 0 global CONFIG_SYN_PROASIC3; set CONFIG_SYN_PROASIC3 0 + global CONFIG_SYN_PROASIC3E; set CONFIG_SYN_PROASIC3E 0 + global CONFIG_SYN_PROASIC3L; set CONFIG_SYN_PROASIC3L 0 + global CONFIG_SYN_IGLOO; set CONFIG_SYN_IGLOO 0 + global CONFIG_SYN_FUSION; set CONFIG_SYN_FUSION 0 global CONFIG_SYN_UT025CRH; set CONFIG_SYN_UT025CRH 0 + global CONFIG_SYN_UT130HBD; set CONFIG_SYN_UT130HBD 0 + global CONFIG_SYN_UT90NHBD; set CONFIG_SYN_UT90NHBD 0 global CONFIG_SYN_ATC18; set CONFIG_SYN_ATC18 0 global CONFIG_SYN_ATC18RHA; set CONFIG_SYN_ATC18RHA 0 + global CONFIG_SYN_CMOS9SF; set CONFIG_SYN_CMOS9SF 0 global CONFIG_SYN_CUSTOM1; set CONFIG_SYN_CUSTOM1 0 global CONFIG_SYN_EASIC90; set CONFIG_SYN_EASIC90 0 + global CONFIG_SYN_EASIC45; set CONFIG_SYN_EASIC45 0 global CONFIG_SYN_IHP25; set CONFIG_SYN_IHP25 0 global CONFIG_SYN_IHP25RH; set CONFIG_SYN_IHP25RH 0 global CONFIG_SYN_LATTICE; set CONFIG_SYN_LATTICE 0 @@ -2058,16 +2199,22 @@ proc clear_choices { } { global CONFIG_SYN_RH_LIB18T; set CONFIG_SYN_RH_LIB18T 0 global CONFIG_SYN_RHUMC; set CONFIG_SYN_RHUMC 0 global CONFIG_SYN_SMIC13; set CONFIG_SYN_SMIC13 0 - global CONFIG_SYN_SPARTAN2; set CONFIG_SYN_SPARTAN2 0 + global CONFIG_SYN_TM65GPLUS; set CONFIG_SYN_TM65GPLUS 0 + global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 + global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 + global CONFIG_SYN_ARTIX7; set CONFIG_SYN_ARTIX7 0 + global CONFIG_SYN_KINTEX7; set CONFIG_SYN_KINTEX7 0 global CONFIG_SYN_SPARTAN3; set CONFIG_SYN_SPARTAN3 0 global CONFIG_SYN_SPARTAN3E; set CONFIG_SYN_SPARTAN3E 0 + global CONFIG_SYN_SPARTAN6; set CONFIG_SYN_SPARTAN6 0 global CONFIG_SYN_VIRTEX; set CONFIG_SYN_VIRTEX 0 global CONFIG_SYN_VIRTEXE; set CONFIG_SYN_VIRTEXE 0 global CONFIG_SYN_VIRTEX2; set CONFIG_SYN_VIRTEX2 0 global CONFIG_SYN_VIRTEX4; set CONFIG_SYN_VIRTEX4 0 global CONFIG_SYN_VIRTEX5; set CONFIG_SYN_VIRTEX5 0 - global CONFIG_SYN_UMC; set CONFIG_SYN_UMC 0 - global CONFIG_SYN_TSMC90; set CONFIG_SYN_TSMC90 0 + global CONFIG_SYN_VIRTEX6; set CONFIG_SYN_VIRTEX6 0 + global CONFIG_SYN_VIRTEX7; set CONFIG_SYN_VIRTEX7 0 + global CONFIG_SYN_ZYNQ7000; set CONFIG_SYN_ZYNQ7000 0 global CONFIG_MEM_INFERRED; set CONFIG_MEM_INFERRED 0 global CONFIG_MEM_UMC; set CONFIG_MEM_UMC 0 global CONFIG_MEM_RHUMC; set CONFIG_MEM_RHUMC 0 @@ -2077,11 +2224,16 @@ proc clear_choices { } { global CONFIG_MEM_VIRAGE90; set CONFIG_MEM_VIRAGE90 0 global CONFIG_CLK_INFERRED; set CONFIG_CLK_INFERRED 0 global CONFIG_CLK_HCLKBUF; set CONFIG_CLK_HCLKBUF 0 + global CONFIG_CLK_UT130HBD; set CONFIG_CLK_UT130HBD 0 global CONFIG_CLK_ALTDLL; set CONFIG_CLK_ALTDLL 0 global CONFIG_CLK_LATDLL; set CONFIG_CLK_LATDLL 0 global CONFIG_CLK_PRO3PLL; set CONFIG_CLK_PRO3PLL 0 + global CONFIG_CLK_PRO3EPLL; set CONFIG_CLK_PRO3EPLL 0 + global CONFIG_CLK_PRO3LPLL; set CONFIG_CLK_PRO3LPLL 0 + global CONFIG_CLK_FUSPLL; set CONFIG_CLK_FUSPLL 0 global CONFIG_CLK_LIB18T; set CONFIG_CLK_LIB18T 0 global CONFIG_CLK_RHUMC; set CONFIG_CLK_RHUMC 0 + global CONFIG_CLK_CLKPLLE2; set CONFIG_CLK_CLKPLLE2 0 global CONFIG_CLK_CLKDLL; set CONFIG_CLK_CLKDLL 0 global CONFIG_CLK_DCM; set CONFIG_CLK_DCM 0 global CONFIG_AHBRAM_SZ1; set CONFIG_AHBRAM_SZ1 0 @@ -2127,22 +2279,40 @@ proc update_choices { } { if { $CONFIG_SYN_ALTERA == 1 } then { set tmpvar_0 "Altera-Others" } global CONFIG_SYN_AXCEL if { $CONFIG_SYN_AXCEL == 1 } then { set tmpvar_0 "Actel-Axcelerator" } + global CONFIG_SYN_AXDSP + if { $CONFIG_SYN_AXDSP == 1 } then { set tmpvar_0 "Actel-Axcelerator-DSP" } global CONFIG_SYN_PROASIC if { $CONFIG_SYN_PROASIC == 1 } then { set tmpvar_0 "Actel-Proasic" } global CONFIG_SYN_PROASICPLUS if { $CONFIG_SYN_PROASICPLUS == 1 } then { set tmpvar_0 "Actel-ProasicPlus" } global CONFIG_SYN_PROASIC3 if { $CONFIG_SYN_PROASIC3 == 1 } then { set tmpvar_0 "Actel-Proasic3" } + global CONFIG_SYN_PROASIC3E + if { $CONFIG_SYN_PROASIC3E == 1 } then { set tmpvar_0 "Actel-Proasic3E" } + global CONFIG_SYN_PROASIC3L + if { $CONFIG_SYN_PROASIC3L == 1 } then { set tmpvar_0 "Actel-Proasic3L" } + global CONFIG_SYN_IGLOO + if { $CONFIG_SYN_IGLOO == 1 } then { set tmpvar_0 "Actel-IGLOO/p/L" } + global CONFIG_SYN_FUSION + if { $CONFIG_SYN_FUSION == 1 } then { set tmpvar_0 "Actel-Fusion" } global CONFIG_SYN_UT025CRH if { $CONFIG_SYN_UT025CRH == 1 } then { set tmpvar_0 "Aeroflex-UT025CRH" } + global CONFIG_SYN_UT130HBD + if { $CONFIG_SYN_UT130HBD == 1 } then { set tmpvar_0 "Aeroflex-UT130HBD" } + global CONFIG_SYN_UT90NHBD + if { $CONFIG_SYN_UT90NHBD == 1 } then { set tmpvar_0 "Aeroflex-UT90NHBD" } global CONFIG_SYN_ATC18 if { $CONFIG_SYN_ATC18 == 1 } then { set tmpvar_0 "Atmel-ATC18" } global CONFIG_SYN_ATC18RHA if { $CONFIG_SYN_ATC18RHA == 1 } then { set tmpvar_0 "Atmel-ATC18RHA" } + global CONFIG_SYN_CMOS9SF + if { $CONFIG_SYN_CMOS9SF == 1 } then { set tmpvar_0 "IBM-CMOS9SF" } global CONFIG_SYN_CUSTOM1 if { $CONFIG_SYN_CUSTOM1 == 1 } then { set tmpvar_0 "Custom1" } global CONFIG_SYN_EASIC90 if { $CONFIG_SYN_EASIC90 == 1 } then { set tmpvar_0 "eASIC90" } + global CONFIG_SYN_EASIC45 + if { $CONFIG_SYN_EASIC45 == 1 } then { set tmpvar_0 "eASIC45" } global CONFIG_SYN_IHP25 if { $CONFIG_SYN_IHP25 == 1 } then { set tmpvar_0 "IHP25" } global CONFIG_SYN_IHP25RH @@ -2159,12 +2329,22 @@ proc update_choices { } { if { $CONFIG_SYN_RHUMC == 1 } then { set tmpvar_0 "RH-UMC" } global CONFIG_SYN_SMIC13 if { $CONFIG_SYN_SMIC13 == 1 } then { set tmpvar_0 "SMIC130" } - global CONFIG_SYN_SPARTAN2 - if { $CONFIG_SYN_SPARTAN2 == 1 } then { set tmpvar_0 "Xilinx-Spartan2" } + global CONFIG_SYN_TM65GPLUS + if { $CONFIG_SYN_TM65GPLUS == 1 } then { set tmpvar_0 "TM65Gplus" } + global CONFIG_SYN_TSMC90 + if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } + global CONFIG_SYN_UMC + if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } + global CONFIG_SYN_ARTIX7 + if { $CONFIG_SYN_ARTIX7 == 1 } then { set tmpvar_0 "Xilinx-Artix7" } + global CONFIG_SYN_KINTEX7 + if { $CONFIG_SYN_KINTEX7 == 1 } then { set tmpvar_0 "Xilinx-Kintex7" } global CONFIG_SYN_SPARTAN3 if { $CONFIG_SYN_SPARTAN3 == 1 } then { set tmpvar_0 "Xilinx-Spartan3" } global CONFIG_SYN_SPARTAN3E if { $CONFIG_SYN_SPARTAN3E == 1 } then { set tmpvar_0 "Xilinx-Spartan3E" } + global CONFIG_SYN_SPARTAN6 + if { $CONFIG_SYN_SPARTAN6 == 1 } then { set tmpvar_0 "Xilinx-Spartan6" } global CONFIG_SYN_VIRTEX if { $CONFIG_SYN_VIRTEX == 1 } then { set tmpvar_0 "Xilinx-Virtex" } global CONFIG_SYN_VIRTEXE @@ -2175,10 +2355,12 @@ proc update_choices { } { if { $CONFIG_SYN_VIRTEX4 == 1 } then { set tmpvar_0 "Xilinx-Virtex4" } global CONFIG_SYN_VIRTEX5 if { $CONFIG_SYN_VIRTEX5 == 1 } then { set tmpvar_0 "Xilinx-Virtex5" } - global CONFIG_SYN_UMC - if { $CONFIG_SYN_UMC == 1 } then { set tmpvar_0 "UMC180" } - global CONFIG_SYN_TSMC90 - if { $CONFIG_SYN_TSMC90 == 1 } then { set tmpvar_0 "TSMC90" } + global CONFIG_SYN_VIRTEX6 + if { $CONFIG_SYN_VIRTEX6 == 1 } then { set tmpvar_0 "Xilinx-Virtex6" } + global CONFIG_SYN_VIRTEX7 + if { $CONFIG_SYN_VIRTEX7 == 1 } then { set tmpvar_0 "Xilinx-Virtex7" } + global CONFIG_SYN_ZYNQ7000 + if { $CONFIG_SYN_ZYNQ7000 == 1 } then { set tmpvar_0 "Xilinx-Zynq7000" } global tmpvar_1 set tmpvar_1 "Inferred" global CONFIG_MEM_INFERRED @@ -2201,16 +2383,26 @@ proc update_choices { } { if { $CONFIG_CLK_INFERRED == 1 } then { set tmpvar_2 "Inferred" } global CONFIG_CLK_HCLKBUF if { $CONFIG_CLK_HCLKBUF == 1 } then { set tmpvar_2 "Actel-HCLKBUF" } + global CONFIG_CLK_UT130HBD + if { $CONFIG_CLK_UT130HBD == 1 } then { set tmpvar_2 "Aeroflex-UT130HBD" } global CONFIG_CLK_ALTDLL if { $CONFIG_CLK_ALTDLL == 1 } then { set tmpvar_2 "Altera-ALTPLL" } global CONFIG_CLK_LATDLL if { $CONFIG_CLK_LATDLL == 1 } then { set tmpvar_2 "Lattice-EXPLL" } global CONFIG_CLK_PRO3PLL - if { $CONFIG_CLK_PRO3PLL == 1 } then { set tmpvar_2 "Proasic3-PLLL" } + if { $CONFIG_CLK_PRO3PLL == 1 } then { set tmpvar_2 "Proasic3-PLL" } + global CONFIG_CLK_PRO3EPLL + if { $CONFIG_CLK_PRO3EPLL == 1 } then { set tmpvar_2 "Proasic3E-PLL" } + global CONFIG_CLK_PRO3LPLL + if { $CONFIG_CLK_PRO3LPLL == 1 } then { set tmpvar_2 "Proasic3L-PLL" } + global CONFIG_CLK_FUSPLL + if { $CONFIG_CLK_FUSPLL == 1 } then { set tmpvar_2 "Fusion-PLL" } global CONFIG_CLK_LIB18T if { $CONFIG_CLK_LIB18T == 1 } then { set tmpvar_2 "RH-LIB18T-PLL" } global CONFIG_CLK_RHUMC if { $CONFIG_CLK_RHUMC == 1 } then { set tmpvar_2 "DARE-PLL" } + global CONFIG_CLK_CLKPLLE2 + if { $CONFIG_CLK_CLKPLLE2 == 1 } then { set tmpvar_2 "Xilinx-PLLE2" } global CONFIG_CLK_CLKDLL if { $CONFIG_CLK_CLKDLL == 1 } then { set tmpvar_2 "Xilinx-CLKDLL" } global CONFIG_CLK_DCM diff --git a/designs/netcard/netcard.vhd b/designs/netcard/netcard.vhd index 632d7eb6..17958af3 100644 --- a/designs/netcard/netcard.vhd +++ b/designs/netcard/netcard.vhd @@ -4,7 +4,7 @@ ------------------------------------------------------------------------------ -- This file is a part of the GRLIB VHDL IP LIBRARY -- Copyright (C) 2003 - 2008, Gaisler Research --- Copyright (C) 2008 - 2012, Aeroflex Gaisler +-- Copyright (C) 2008 - 2013, Aeroflex Gaisler -- -- 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 diff --git a/designs/netcard/tkconfig.h b/designs/netcard/tkconfig.h index 4e1d7f1f..a4a80fd6 100644 --- a/designs/netcard/tkconfig.h +++ b/designs/netcard/tkconfig.h @@ -10,6 +10,8 @@ #define CONFIG_SYN_TECH atc18rha #elif defined CONFIG_SYN_AXCEL #define CONFIG_SYN_TECH axcel +#elif defined CONFIG_SYN_AXDSP +#define CONFIG_SYN_TECH axdsp #elif defined CONFIG_SYN_PROASICPLUS #define CONFIG_SYN_TECH proasic #elif defined CONFIG_SYN_ALTERA @@ -22,12 +24,16 @@ #define CONFIG_SYN_TECH stratix3 #elif defined CONFIG_SYN_CYCLONEIII #define CONFIG_SYN_TECH cyclone3 +#elif defined CONFIG_SYN_EASIC45 +#define CONFIG_SYN_TECH easic45 #elif defined CONFIG_SYN_EASIC90 #define CONFIG_SYN_TECH easic90 #elif defined CONFIG_SYN_IHP25 #define CONFIG_SYN_TECH ihp25 #elif defined CONFIG_SYN_IHP25RH #define CONFIG_SYN_TECH ihp25rh +#elif defined CONFIG_SYN_CMOS9SF +#define CONFIG_SYN_TECH cmos9sf #elif defined CONFIG_SYN_LATTICE #define CONFIG_SYN_TECH lattice #elif defined CONFIG_SYN_ECLIPSE @@ -38,6 +44,14 @@ #define CONFIG_SYN_TECH proasic #elif defined CONFIG_SYN_PROASIC3 #define CONFIG_SYN_TECH apa3 +#elif defined CONFIG_SYN_PROASIC3E +#define CONFIG_SYN_TECH apa3e +#elif defined CONFIG_SYN_PROASIC3L +#define CONFIG_SYN_TECH apa3l +#elif defined CONFIG_SYN_IGLOO +#define CONFIG_SYN_TECH apa3 +#elif defined CONFIG_SYN_FUSION +#define CONFIG_SYN_TECH actfus #elif defined CONFIG_SYN_SPARTAN2 #define CONFIG_SYN_TECH virtex #elif defined CONFIG_SYN_VIRTEX @@ -48,20 +62,42 @@ #define CONFIG_SYN_TECH spartan3 #elif defined CONFIG_SYN_SPARTAN3E #define CONFIG_SYN_TECH spartan3e +#elif defined CONFIG_SYN_SPARTAN6 +#define CONFIG_SYN_TECH spartan6 #elif defined CONFIG_SYN_VIRTEX2 #define CONFIG_SYN_TECH virtex2 #elif defined CONFIG_SYN_VIRTEX4 #define CONFIG_SYN_TECH virtex4 #elif defined CONFIG_SYN_VIRTEX5 #define CONFIG_SYN_TECH virtex5 +#elif defined CONFIG_SYN_VIRTEX6 +#define CONFIG_SYN_TECH virtex6 +#elif defined CONFIG_SYN_VIRTEX7 +#define CONFIG_SYN_TECH virtex7 +#elif defined CONFIG_SYN_KINTEX7 +#define CONFIG_SYN_TECH kintex7 +#elif defined CONFIG_SYN_ARTIX7 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 +#elif defined CONFIG_SYN_ARTIX77 +#define CONFIG_SYN_TECH artix7 +#elif defined CONFIG_SYN_ZYNQ7000 +#define CONFIG_SYN_TECH zynq7000 #elif defined CONFIG_SYN_RH_LIB18T #define CONFIG_SYN_TECH rhlib18t #elif defined CONFIG_SYN_SMIC13 #define CONFIG_SYN_TECH smic013 #elif defined CONFIG_SYN_UT025CRH #define CONFIG_SYN_TECH ut25 +#elif defined CONFIG_SYN_UT130HBD +#define CONFIG_SYN_TECH ut130 +#elif defined CONFIG_SYN_UT90NHBD +#define CONFIG_SYN_TECH ut90 #elif defined CONFIG_SYN_TSMC90 #define CONFIG_SYN_TECH tsmc90 +#elif defined CONFIG_SYN_TM65GPLUS +#define CONFIG_SYN_TECH tm65gpl #elif defined CONFIG_SYN_CUSTOM1 #define CONFIG_SYN_TECH custom1 #else @@ -111,14 +147,24 @@ #define CFG_CLK_TECH lattice #elif defined CONFIG_CLK_PRO3PLL #define CFG_CLK_TECH apa3 +#elif defined CONFIG_CLK_PRO3EPLL +#define CFG_CLK_TECH apa3e +#elif defined CONFIG_CLK_PRO3LPLL +#define CFG_CLK_TECH apa3l +#elif defined CONFIG_CLK_FUSPLL +#define CFG_CLK_TECH actfus #elif defined CONFIG_CLK_CLKDLL #define CFG_CLK_TECH virtex +#elif defined CONFIG_CLK_CLKPLLE2 +#define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_DCM #define CFG_CLK_TECH CONFIG_SYN_TECH #elif defined CONFIG_CLK_LIB18T #define CFG_CLK_TECH rhlib18t #elif defined CONFIG_CLK_RHUMC #define CFG_CLK_TECH rhumc +#elif defined CONFIG_CLK_UT130HBD +#define CFG_CLK_TECH ut130 #else #define CFG_CLK_TECH inferred #endif @@ -132,7 +178,15 @@ #endif #ifndef CONFIG_OCLK_DIV -#define CONFIG_OCLK_DIV 2 +#define CONFIG_OCLK_DIV 1 +#endif + +#ifndef CONFIG_OCLKB_DIV +#define CONFIG_OCLKB_DIV 0 +#endif + +#ifndef CONFIG_OCLKC_DIV +#define CONFIG_OCLKC_DIV 0 #endif #ifndef CONFIG_PCI_CLKDLL @@ -154,6 +208,10 @@ #define CONFIG_AHB_RROBIN 0 #endif +#ifndef CONFIG_AHB_FPNPEN +#define CONFIG_AHB_FPNPEN 0 +#endif + #ifndef CONFIG_AHB_IOADDR #define CONFIG_AHB_IOADDR FFF #endif @@ -174,6 +232,10 @@ #define CONFIG_AHB_MONWAR 0 #endif +#ifndef CONFIG_AHB_DTRACE +#define CONFIG_AHB_DTRACE 0 +#endif + #ifndef CONFIG_DSU_UART #define CONFIG_DSU_UART 0 #endif diff --git a/doc/Changelog.txt b/doc/Changelog.txt index ec1be664..331e0f7b 100644 --- a/doc/Changelog.txt +++ b/doc/Changelog.txt @@ -1,4 +1,135 @@ -2012-08-09 SPICTRL: Fix transmit queue race condition introduced in +----------------------- Release 1.2.1-b4122 ---------------------------- + +2013-01-15 Fixed soft calibration error for MIG39 in SPARTAN6 designs + +2013-01-15 TECHMAP: Add support for SPARTAN-6 LVDS IOs + +2013-01-15 leon3-gr-xc6s: Added clock deskew PLL to improve USB HOST timing + +2013-01-15 Made GRLIB RGMII block technology independent + +2013-01-15 Corrected erroneous instantiation of mig37 in ML605 design + +----------------------- Release 1.2.0-b4121 ---------------------------- + +2012-12-20 Added ISE14.3 and PlanAhead support for Virtex 6 and Spartan 6 + template designs. + +2012-12-19 DDRSPA: Add phy implementation config VHDL generic (phyiconf) + +2012-12-17 GRETH: Support larger frames (maxsize VHDL generic added) + +2012-12-16 Added (experimental) support for Zynq-7000 and ZedBoard + (leon3-digilent-xc7z020). + +2012-12-16 Added support for Xilinx VC707 and KC705 development kits + (leon3-xilinx-vc707 and leon3-xilinx-kc705) + +2012-12-16 Added support for Xilinx Vivado flow + +2012-12-16 Added support for Xilinx 7-series FPGAs (Virtex, Kintex, Artix) + +2012-12-16 LEON: Fix possible pipeline hang after two consecutive DIV + operations. Bad sequence is not generated by compilers. + +2012-12-14 leon3-gr-xc6s: Remove USBDC* from template design + +2012-12-10 PCIPADS: Allow to select voltage and level via VHDL generics + +2012-12-10 GRGPIO: Add capability register and increase core revision to 2 + +2012-12-07 DDRSPA: Fix reset delay bug in controller when pwron=0 + +2012-11-28 SPICTRL: Use testoen to control direction in test mode + +2012-11-28 GRETH: Use testoen to control direction of mdio in test mode + +2012-11-19 GRGPIO: Use testoen to control direction in test mode. + +2012-11-17 Added AMBA test framework documentation to configuration guide + +2012-11-17 Added option to select predefined example processor + configurations in xconfig. + +2012-11-15 JTAG: Add oepol generic to control polarity of tdoen signal + Connect tdoen signal in the leon3-asic example design + +2012-11-13 Added PWM Generator (GRPWM) to COM and FT distributions + +2012-11-13 Added memory scrubber (MEMSCRUB) to FT distributions + +2012-11-06 Remove HCACHE signal from AMBA records. This change may break + existing external IP cores. + +2012-10-29 Added NAND Flash Memory Controller (NANDFCTRL) IP core + (to COM and FT releases). + +2012-10-24 Makefile: added DESIGNER_LAYOUT_OPT to override all Designer + layout options. + +2012-10-22 Added disable during scan test handling to syncram techmap. + Distribute testin vector for syncrams in AMBA records. + Updated GRLIB documentation on scan test support. + +2012-10-15 Added LEON/GRLIB design and configuration guide (doc/guide.pdf) + +2012-10-13 Remove ATACTRL + +2012-10-12 LEON/SRMMU: Allow 64 TLB entries (for each TLB) + +2012-10-12 Update GRLIB config package with grlib_config_array constant. + All local copies of the global configuration package needs to + be updated. All cores that make use of grlib_debug_* constants + need to be changed to use grlib_config_array(grlib_debug_*). + +2012-10-11 LEON: Update IP core doc. regarding types of bus accesses + performed by the processors. + +2012-10-03 DDRSPA,DDR2SPA: Add hooks for scan test support + +2012-09-30 Update Aldec riviera targets to work with current versions. + +2012-09-27 LEON3: Part of partially filled I-cache line could get + incorrectly marked as valid when executing branch + instruction with I-cache frozen and branch prediction + enabled. Does not affect LEON3FT. + +2012-09-26 AHBRAM: Fix bug in wait state generation when pipe=1 + +2012-09-25 GRETH: Add generic to extend MDIO output hold time to more + than one AMBA cycle. + +2012-09-25 GRCLKGATE: Add optional extra input for ungating all clocks + +2012-09-25 GRCLKGATE: Propagate master reset asynchronously into gated + resets by logical AND:ing. + +2012-09-24 Added IOMMU (GRIOMMU) to LEON4 relases. + +2012-09-23 Removed CoreMP7 to GRLIB bridge and design. + +2012-09-23 Removed WildCard design and WILD2AHB core. + +2012-09-23 Removed HAPS files. + +2012-09-11 AHBCTRL/AHBCTRL_MB: Treat HLOCK as coupled to specific access + to prevent HMASTLOCK assertion for normal accesses that receive + a SPLIT/RETRY response. + +2012-09-06 Use VERILOGSYNFILES in script generation for XST and Synplify. + +2012-09-06 Remove basic_passthru design + +2012-09-06 Remove unmaintained designs leon3-ge-hpe-mini, -lattice and + leon3-ge-hpe-midi-ep2s180. Also removed libraries and cores + that were only used in these designs. Vendor and device IDs + are kept and files can manually be copied from older GRLIB + releases. + +2012-08-24 SPICTRL: Core would generate one extra SCK cycle after + last word in queue for FACT = 1 and CPHA = 1. + +2012-08-24 SPICTRL: Fix transmit queue race condition introduced in 1.1.0-b4108 that could result in corrupted transmit data. 2012-07-20 GRGPIO: irqgen=2,3,4 led to all irqmap registers getting @@ -7,24 +138,24 @@ 2012-07-11 I-cache flush via ASI 0x10 was a no-op for systems implemented without MMU. -2012-06-26 DDRSPA,DDR2SPA: Move reset delay from phy to controller. +2012-06-261 DDRSPA,DDR2SPA: Move reset delay from phy to controller. -2012-06-15 DDRSPA,DDR2SPA: Remove the internal fast generic, use read - counters to get correct behavior for all speed ratios with the - same controller. +2012-06-151 DDRSPA,DDR2SPA: Remove the internal fast generic, use read + counters to get correct behavior for all speed ratios with the + same controller. -2012-05-10 DDRSPA,DDR2SPA: Moved ddr2spa and ddrspa components into their - own package ddrpkg. Make older versions of ddr controllers - available again under ddrv1 directory. +2012-05-10 DDRSPA,DDR2SPA: Moved ddr2spa and ddrspa components into their + own package ddrpkg. Make older versions of ddr controllers + available again under ddrv1 directory. - DDRSPA: Re-implemented to use the same structure as DDR2SPA. - DDRSPA: Add support for control signal timing up to DDR400. + DDRSPA: Re-implemented to use the same structure as DDR2SPA. + DDRSPA: Add support for control signal timing up to DDR400. 2012-04-30 SPIMCTRL: Allow user to specify address offset for SPI device. 2012-04-25 leon3-gr-xc6: RGMII interface did not work with 10/100 MAC. -2012-04-24 leon3-xilinx-sp601: USB/UART had swapped RX/TX signals. +2012-04-24 leon3-xilinx-sp601: USB/UART had swapped RX/TX signals. 2012-04-12 Merged Xilinx ML505 - ML509 template designs into the design leon3-xilinx-ml50x and added option to use the DDR2 MIG. @@ -32,8 +163,6 @@ 2012-04-11 Added template design for TerASIC DE0-Nano board (leon3-terasic-de0-nano) ------------------------ Release 1.1.0-b4114 ---------------------------- - 2012-03-19 Automatically perform "vsim-fix" when generating ModelSim scripts to avoid issues with ':' in paths in Cygwin. @@ -101,7 +230,7 @@ ----------------------- Release 1.1.0-b4108 ---------------------------- -2011-06-15 Added DDR2 MIG wrapper for template design for +2011-06-15 Added DDR2 MIG wrapper for template design for Xilinx SP601 Spartan6 board. 2011-06-13 Added template design for new Pender Spartan-6 board, @@ -169,7 +298,7 @@ 2010-06-28 Added Testbench framework for PCI. 2010-06-28 PCI_TARGET: Added support for PCI bus in big-little mode - and support for byte and half word PCI accesses. + and support for byte and half word PCI accesses. 2010-06-07 I2CMST/I2CSLV: Added generic that adjusts low-pass filter @@ -180,14 +309,14 @@ simulation device. Function now has one additional argument. 2010-05-06 XST: Remove -read_cores yes from XST script generation as yes - is the default read_cores setting. This allows specifying + is the default read_cores setting. This allows specifying -read_cores yes, no or optimize via the XSTOPT variable. -2010-05-05 FPU: GRFPU and GRFPU-lite netlists in both LEON3 and LEON4 +2010-05-05 FPU: GRFPU and GRFPU-lite netlists in both LEON3 and LEON4 versions are now available for Cyclone2, Cyclone3, Stratix2, Stratix3, Spartan3, Virtex2, Virtex4 and Virtex5. -2010-05-05 FPU: Always use FPU netlists in distributions lacking FPU +2010-05-05 FPU: Always use FPU netlists in distributions lacking FPU source code. 2010-05-05 FPU: Use EDIF netlists for FPU netlist synthesis on Xilinx diff --git a/doc/grip.pdf b/doc/grip.pdf index 9bd5e1ce72d5988ba12e079afd8fd42cc030a634..4313667037800b3719ced1437bb8657934d4b4f7 100644 GIT binary patch literal 7111482 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
OdzYrvoD24E& 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%0DB{hd7qaxGVv$n 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%0DrHx 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

x(!Rl#?i28d!!`;=r z?}a0!cE9~NHl?o@u>IOD^tq(ioX;xd`pxHqvCb8$SnMlO>GswZ!R-BmJM+4ca)<~n zjkZWl<)_!lUD>b6rMrtjF|C=3_dhM$!Vs}OM5mhk8l4&m1q>w_=59HDk5jqlyIigx zt65S4^iWk8^r8K2Hal8z(KnthKHFq1C~r30%dV^o;+qG#c|r`9aP>#;RtQwcDNtVK z&`Gu5W!==d?=}h^rmnNIT0PkI*dy30Tno~T5vfxlrwW^5`yS&<<5zy;kf!h9e{uO% zF3VUnUb96PODTIctkOx8fZ$P6QGI0i?M4O?=48385v$Dl~3kP zOFB*(k`rDQP8${85uO!!To*nO6|L*(V0jrC)`fC-clwfB=m#uIIJ-PaXofb}z6(w6 zf;T*`(vM07$%Swfe7IO+_KR0j$Wd@&XX17aB0u4EVan|ArI()3=cQEd*K({PI4Ns~ zFnk0yUdwJ|t-3YaK6p;WgNKDN=?A{BL*a4P-ah5j0Y~>7sp-Q4Xzmk=*vHW40eYOM>pX z4mPPCv=r|oyoeXFkU>PyTNmJrh~^GiPMrwfhHg#oq28baxL}0IMcYZfH_RV*t?`wC zzv!$+T`libLUe$kAcW6AveX6=5rcJuGtdrkKZgGxD+7*tF&;QpxXT*8XrgkU0z(+g zNebbE0j&C`tt3zf{7kYRPRfQ4{~^jHTSIk9ZMm;u4tYbKJ|fLS`i(>Z6}WH*1kE`E zs63og>>+#+l#b3>marbE@(0)4^XQJ`v*J8>lFC30jNdj{aX*1Mzhd$+Y(UMu2z;Xd zk0!aJ2~d+E6l@X)CM;9-67f3_Kl{%Q;WUM<4=F!6>HA~ad+xk(n}mavfrChwGZJ&g z6oGx3=C0G0^OB)h{^GB8bSiyanz-|cXNM2CLZ|iN;2Y;DCkl|xJ=Fq7kZPawCNXhW&tK3KUXUSkS91eZmUA>Q)AizM426y!w%Ygz| zOgI=V^8aD%9fNCczHQ;`*j%w~JK3@AWXHB`+qSJ8YsdDEZQFKo^E{{CdrrOeue#@3 zSFhQ{}A++AT37cL%-u17>^>=1kLi6xs1un;&D&-%BzXA_=-v7q5pRVI|tD={5nY!Zh z)_xRwReLxHtZNxfqMG?=SarPxf4Nzue|73r9*jXD6w<*GQnY)N3zrl%zdx)mN?WL2 zrBf{v+c9m{G&|8L^=agQ9f`$Q#GBKS(6T+q#eTePWNsv$Vn3aK&2Zn5UEMdi9%3I2 z{C3<&c41~J)05${W=?e+jq!Y}ZA9Z{$gssrkQ+EX95;8{Tsr!qDIRSE&Np7WRs5*& z?xtT$@UD{OK1cD8^YQv6S=JI4v4no?tBIRBWZLKXXr-?GBu!?F$fjtzOCDs~hYCK2Okc>KLH@;gD{>{-#GiT4Kl*dF%PzeuVpmg0Y}qnth6G$!IAQ%^-_=YhuX!>I{<ETMnYm8X;)&S$v<@HN72qy5e!8962XJ^$nE+sJm4V z)uhJe@0oSW^dV!eED!%LYHZw zC(ay`X#jw8j+o#?#p$`pM@ZF`#iK{XT-hH(qF_-!eK5}pB}u3`>|Uun1ppkq6p$To z8KR;4VsBAAYWp|>%4Jw+ygazy+P?y&5r2@R3yL-&G|9|55MUTqRZ305GsTzVoe^Xf zj!<4INxkIWAPk%*C-gpUq__*TR$z93bTv?clRJpyhIER9yetE?f;gtHIVbgT$!At< za-@PDku8Jl&B|HG1BI0P zevmq|j<^k%CeC?QRwDpJoo!yE+|5HFWsF!Ulf~1hU{jWhbNJ5<=cl0{9^(*8?@`fP zV#La+GkuNiBg78YobFheSeKLgz@UiPHb+Qy$VxVaHW|aI+R_rz_5&kH1t|tP+{>GX zKT>}onxW>G(sd=#(&VCmB%`BtMhfN91<9f+ITx+(gc0I4mU77D--~pkqVC0SrG*#f zzDtCY_=lcxO+}Fv23j;rlsK^mM@$!;AGJo2gW7h>gPgMA#1B-)$c3^^79pp2AqBrJ zruu+g+>HvzQ-+YZWbM^Si(y_A0QQH+LRdpHbXxwr9WMlWl4v1XzqnP{wPaaPtt1_& zQI$^{PclCqwGAeL*!XIQD5BCmqknr;EMTk)99)JjjWcTaOZ+6MNKs%t&4HRtf962> z3*cDD_*QFCNpW-K?g((plOz|t>SoZL3zRs%|C_^`8_F()mpkPa1v)EvHX`UB0~0K^ z?O;qohhot_y_i0qZ&|9H_AJdM>Rr!vo^*oHOZbs~O?$I05KSODlaqhr&Y;z12x8IJPN zfpYygCS*JwWe8PmA?r?rV9Vc2gsej3PbBQ-i^$1uP{V`dNE7oLkDitL;zVVJv60Fi z1d*BPJX+M>QFCwlnAA8XatzlhiA>2~7hAp^0#h>#eKWF~hJFm>QCrDEHu2Dj5=;mXaO&PeHi;EsnsrV~zQIFX__ILx2YGA}&*R0L(3K&ar% zV-7D#bRL)2_MLGgMIs}qs3xBfkO;y>R%VYg$s_4YiYja4m2;FYg;t0CCN~oFVatml z2mTa#lMG_N9ta}lL0(lt+Vo3=yh+}oo`B{<+kvA9pLW}zo`~?G`3^?b7c4mSn8isF zUM3W91~CVhB$5{Yw#Uf`On~GjDYGG%_>U_iC9bHRn!}kd7u*+GE$0cl22TfEz0Misho;#5Pym2tA&v}lEp-N3mv?x}`JN6q z)@UR5AjP|dzcK0Fq%H!On86ZRKiG&aG2AfH`aVOKCwq8|3^?k5kJt0%UhVPybnrpS ziyMSAX*ZAX)A~lJNam1O6M*E)>wBZr@!YuvY!;cGLRA+tQG_^hxKUl{(Mh?omD#-B za8XUsZ6cGoB+^B{Y>{g#wdY`6IMx{I4&^L0p2<0+i$xY-FZ_0Qt1hKEQ{^7CgG$#}FrItl9kWndl- z^4w;DxPS8jX_!D)w;I18%eaC)yMqXFxyBFWB9JZ zX4O!uk<}PSIXAsR^rz@lv+>;iS%M0y5PkEiHCy{HBDs*{HuBgvj6U-_ge?y=-NGoz zpw@Y4DQ1w&Uzx_r#8!U4^h;ndBKYi?d-3Y1$J&_$ce#69L-fyo^MP2po)0DpmoSS9 z<<%oNiGzoms5k}`q#ZHhF@w--7);t!u-yO*Yx~5_mfBydDI>>qmzqffvy8(H=74;|`Ai`mBI~QU#mSVB=w8Lim zsprHd%+=ApW3^o6zENus+Ags!K(QW8TgQ?Q3+>ScBe;WNEbsK3YpsrMT!XPhEC~>h{epUGY2~XbWmAjz;0KhfF?!^>T?Ld@~7&w31GMs ziyFS(PsLsJB?74Aivs)hi_r|{I!%xgMSvO0IBsKOb2t6;^bq_@>_W9a-9V6+R}ypf z%&O$&BXGT;f#nf1g@ubRZI=@FLp)+Q^aXwNgD5^XSQszawkYA7$F4{bxL0=?sq8~l z4q6$gx+~^o!T7ad9CpLKP8DA5^wC?f@Ac^LEJLgOd_EM}s+H1`c5ci^z4ya@y?F0I z9m?$;ajK72*&nFek~^YcdDstq!hH0GCJo-7C+O}rv0nYMa;>>9hgZpMuJni1&pB`) zzO>L@nmQYdz05qE<=7O-8#3NT)Ia7pSvz`RQl<8{u;ihCtguQa?JWEfcZnu-g?ziz z$cGacF5r8;-LNQ2H;nD@@dPW(T~XKHmUHO}a*2CXP0&I;n&B)>mB-j-PVJ4By^9j& z>(#!^NPn3qo5OIC!c=9?P;Hk=FU8Nu-aGm5EIak>3nWkohvjQNJ*c-Z=8OOOQUo|0Dws9%kJW2a>Y%=IQe*kYBM|#xE9@={V=mS6>#A- zwX*a<`!V_Vy5QF)5Lm=uU*UIc)>bQnZu-c#BcASS`zqb1!{xGdcig#)z(0<7UWDE{ z_1c|()PE7D--*`sNlh8$_dPKG^ojnmMb|}V5;r=TvKXJFBUGVmYwb`MmPt@ggrNpF z7LVb!uha3~9@R`TTRRd)A9R1-UoJpAzP@Bey8h9Y{C1&{PyM*Ny(nP#cA;_T+^(70 z>X@SA6GJ66|Ai)bv{+Z{(E1=4V#>#w>D_6VkYkaEj`bu}9tJ*`PUmP^v_n5Ba+wnF z;lDGvzX}=5jd@w2J)yes2=BXOwN=MX?|7iE&S1_7t@7>F_nI&0ESUdU*N35qiId}W zrge6FBj)o`KB*TyRb}tBaN*+Y`^|DG=^SJ=P?8+4$@I>}gPO`rnKZ7>+I{nHPm1CD z!sL`!1s$uNOqwXBCh4~J;E+IWEbX}I+MKVXsQ(+;cXLQ4VSi93{>yRs-1PT`%)Ub( zZg&)+*=u!lY-HcHv)a>zFVpsH3fdKUd&>eInX#Xm1lOH761;5CABhRNEn2!<@1QDA z@Gtc_renjkim$#Ab~~=CL|ZFOHS4KG+(t?>M6A_iXv$F~EWgGyaASy3$$hfakUkp0 zv?)G**)6q}q-h~3aGz8mQi#Jewj&4V>lcWu&atM%pAuoh5f=o|>Gq|}C=!C=Iv2$F zUI z_nu@%zpA~DE|8c)Ag3fqwp-9(8I734hDtSOA=I7XhIdUexK^#}j1QN&16Tn;k#$1* z_O=q5$9#3ZCw%I9g)FmeYK(&`e{gXpzFPc`_^Yp#p(En$>7zDzPA4r#0)P zdTlaX!aw^De$Q94>`;lrs9{Motcco!AbHg!2&$o;X}^$rT0m{!IHY{rdVr}V@4Hrf z3sS=}DGgl0s**ZtnomMSBo$-Mc*|{<;t!$u?0QKh#|KOR-JFe;-g8Y0B`bUbmOGJg z)LfQ%M{SX4+iLmG>I>}Sh;U=8kw@JOWd>JgGD1hzE!9HxuUz|~r&diTs=CW<`O@Zl zuwRS66-@0kQ0li;Dt;n6Wt*pG0;k}5G}|_t>6D8$;o?VJD}VY35aq4R7JGOxF8h%g zo3E2#8wg>}y$2F4;8h7Gbyz|jt!gU6CO{z4H4%4=G3Lb6h*&w^NDnUD-=wA*OSU5y z<5s2)P{i-b-6qSf+_53*HrqIF=3i6vc*Pj(?r~$Pym5a1iI3y5M9d&Om(1r*B zL2r5-P((_AVD;$bldijr!UA8ER-bj(te$!J>MmJl(F5m6^XCmk0{~pW3cYft=b(7< zcdj@w(0K_S^O!{?t?EPISEDF!h%*N}^|8N^zZP)nvt$zfN$)WHO7(2Rwv zBv0yJK-z1{i42A+)~ca0V7BTDU#xF?R#h1(7~GFiu$%f1g48gi3D_(G1MG2c3x{s( zcUDDp-HZ?CjNQWhP?dkLW902}T?VHnx4tBFjQ0u~0h}4QzZhoz4yXLRDkpA` zpdKaKQeFq-FYqjK4aA!5fkdD+HMoO18mOarKqlqV8<3K<(YbvA>20SXAbxo*Zw~5$ zp1+yMbSCGZsopq$Xkv$0xM>-%DD4UL*QeR+q(qo$HYq>!(E5okEk~11%Yciht7>+Q z86oBH{bmc4t^{=NzClq?VpRayOweH5u?*?y$v6s*GveTLA~RrVkh+f7>cM}i`>0)I z#7GX$jRYSc+~}*Lnc?1K2P!PQ-sQ)lLR5sNaXf}qGsaZof5U)gOGA{t9Dl_;r!&2~ zY8}NgzKgcz7grG;j#yrCO<^3U5-&f%@6GKyRsR-CMLHQ`Y!e=zabpZu>R6Np z^J~wHIMWyDUmF0MgU)TLbN4E%tNuEUCf#tzkL=dMP8c&kKYdYCsXY9CY5N|Rv`ycT zQmGV=dzM|oURmUnMjFc1=9he)`(tc1FK2IbG|Qm9UF#5A*1aDiN3}{M2oM5?Phc0H zB0p?Q`*5&y!U^3Zf7vTy2x?w+DcqwL4E?C!jLjJ&GJ@|HMr}=Si>TY>sWQswwtDr8 z_|xq*%D_aj${<6OQZl1ep#hBnbSOcG_@i|a_+;yvGH~V6D7@m~z4WCqZ{x*(u%^sr znNM_p4yKu97pf!U3#w*`#U*O6f(aYfe6W7<@3x1FJ6+7R#h0#KF+&2I7w8sA7w$_gk+z=pf=OP`-M~HI z#6TaK92~pP-Q)!2|MLsE>v2k8VbD*A0dR@kkp$cVytk8l3Z~to4wd%(75)lCdm9}Y zek&9CAfr#B%t6ie?33B={515C#!CAuoyEC$pT@#~%4|PaS2A1_8Aez95yo<0J$9>9 z1S(j(5yld=!3ilBhYX2Anj=b{3pZj; z9zvE0v<(M-;5Deb-aK>sE5$guIJz0(7ucf={eR%G{1>wM2L&-PF*5!S6!f2XEX@Ba z9!sa%xWl)I_cygy56Yv26I2{XxS~D|N4=QxC0><0or)SJLRc!QT_W8`a}i>K-1zJz zISVFk!=sTbhenYubsF?r=+YB`j<AgG0I|qt>bcpXD1eczWmegCl+C-pGPh&7#mV{Y#D1?^1A@=>)2&tG$HfZ+! zBl9j%cll&yWstLLQY52@5?vkZ!|~;gMrqNr`M1ftll>#1#wQF}qrPBVxI5V#M)%>Y zAg0y!x)@#JuVHf*_Fup9Uv8RBg*wYKEy+3-w~Lktf(*v*R&E!>x;pG$<#dYr$czp=ThwqEd&YC+dvpOAk2qvO8V{p}h&PPu&G%Axd zmtq&K`$Dyu{Xy$%GJ4hBR}d{w-E-2n4jU=C0kIm?IxH&7%y!5>VlGXg6X=lDvtWpy zABI@_H#3&$@kdOxV&b9tBY7#t9LL`>*%GK^orkWl5OT!Hdrm`oT@QI}BlB%CbF^Do zWligv#CJAwAAe~EaH-g*kOfQxhrBJm7Qqu1a)9U^Cq<#oLd6NvK|}}-5(N)g-Ut)3 zAxHj}8|Hjt_AHSf;b2@mPrmKax`KD-c>#f|Std0dk4#j$3H%dvy#AB5cdIqdcir^m z>t6jcmiNuTrwDJC2Dbmsysg4Fv34xSp_KqL9JvIYW{}wVVo|f={TUqAC2rbv+3;IRoAv z-{Ky#N5kh~y$yeQoe5B&&<=dA-4Vx= zKm|UwXSQ|dbHwV^L~N?~gNX1d9M*)1AB=bn#V%R`7Y|pp(SfVg z)>$hFr$;FjlYR-pe-}&lduVG_WiP!8AH7}Jwd0b>b!G;hL8OK8LsFrZfdXx}<*3kF zuKIIA|3pvm9dw-*KZ>X@9bF>%@vVY6DS2IX&dX++cbquph3}FE%C_Hsq=ndy)qQr%fJRTU#2mMQjpHR zfc%ca1TIBNfUheJ#K8kt|Mn8fZs_#h)9+0TBB$>@_#~{t>v=3rN?B%w$hs`~jB5-j zQGl9<9}r{BR$VcJ^EXycJ*3WZZE9`7X5?4?!E_-{LU#!V@F~6jpS(7X&FYbmCdK%x za|4Pte_Rz*BdC6H|4~w8Ry2o&HXjRAICAD4&x5#61*l1MH6N>bmf08RkSk24XoH{f z&t_3vE_Fwv8Hl~O{b*vgz8;Q`hdk7hd29GKVpOB`!9)4f89qWzihjohf8$DHVOaFK zP9vi4IQdGSv67BoePWjdbSC8)#tyl4CZ9UqU6l#A#2uEDtqF$4bh)VrZ77iBgE7u* zx3jj2&#W>w`?E6-=kK!&`su^nF_=%IbEWH&15E|ZkWa2lPLc@IUMBO<_qUnaek*n$ zT20cwm@5RD4Bw%lHt|mYwB131?4@7T*`tQyW~Tl8j_Yg3p2GrQsFXr!R@`jQWcG(q zoL2XBa;6>g=-XdYYznVu2xOD)_f}p7W`2UA#i=Lq384Xwmrr)z&(pHK`3-8?3ffJ5 z&$OSeMz%!~O5BiZTSOXY7jM$Q^BWk1NTu`l=bVE0)-4Fo+l z+SRd+GCI9)=E3|1tb)&mYTe;dO(p)BcXrcYv*23x=N!hIcF_=QB(ZEU5I2dz?}k14hG9iQ;I53L3#q_W)8Jd{ z2jwgcp*3=tMQEPqZeKS(Axo9=wvo(G0xq~#S5eSNy_G>}J49#{<|p*QwlT>@MHwA* zQ^v&dw5t!}ID@k0qONG(g&Bw>F-1XjYb=q4idV|%U<1mh2Ce)dH=GIMmMYCear9ns zGQeJ;^hn(3Z@1qKuiQoTN(+)I?)jff%KPS2#dUDtg!{i2j=Qw-#eyHBHS$wURRl_8 zGF7a9K&V!|{q;$J?j2R2auPpqXkW3WR%wcp)-l0_`c0a`e}{7*xX)iai>9v~c&~~g z=sNQEj&RzBaf~fiJt_HMZJXYOlR86jK_N%QCfh~Q9UnqZx0#b*5l1k_&CX>NktVO? zy-?#rN~$|8P`486<5n$bs|{|DO|$B>0gl8yn9;|%);f_@ceq(w7vH9`JO8p9$`!lG zT;unqY@_okZr6gHJT zU^v?yBf_{94l;%!Cj1K+wz|QhDj=>@T9koetFqKex0#$VWKmrF_xNQ;Z()*_XUFq3 zJVzWD5ptIJ&KFV~M}$(sGc*slaHa{RJUms4BG#VrbDo?5a3c33BlJwEUwU(7Q_~=g z_*|G`?X@R?F-eg4JEBJp^N)oCUN*v0H`1z)@*Liq8QK98%ryUPIyU8RVZN$1giPS;6Z-T;P)GTDh z9$Mqcr=HoYxf2{H1TkonF@GGxtUH&OxNZ2fVADpCO@uEsd*a6CUC-6WZw=?SHCT^f zOv@Hauu9h1;#zOK5kLiqQaACNZzdo|vf>jQg$X=FP_*S$r~IiMP33K(utH4SXQ*WD z#TM6f*J*nav;1P(&wJK^Lfj~6DC@aa%Q}CpTd1vU`CPJTromn__{FhK=q@srj2~$S z@VnnHmNL=}edPA^Ht?dXffp$s{V#;oE5 zUjMjMaIE#qyEKzPA9VG=Eu|K~#du;01>}*!fX006W`;y*uv0m=qu=z(r91fvPbvvn zXqVRBX_Fol2Kn>MW@Oy@b0KZonx|Vsi;LP`C!Q$*bW(+lJMuq&aisMET`bmF;y8CBj zk456Y>|h_236W$UBfi|hV|pWeN<@B}WrSxOezE#(qF+k@%PrNUcM%(gtCJM@w$H>u z{Na95nc;oDwhAsu$P$sCe-cv52`W3YW6s^^Vs2!nTTk!zYxPrrbgk_Q$VcjB_A);f z1(hrg|NM*-Yrjy!YN`dBegENqf91M2;(gLHQ@o0bgWkw>A6KIDH3C{nBkQz2cQsjA z{Dj@{VHaf}fw}5b-$Nu){HYu{6A7^|F+Du04HFxd1OmL}mMM$IVVwO5XuM7fA}W3Odg%&mcG*+#+ zD;|T>0<=b39p3PTYvoW^y(IW)hN62Xj3a`kPO&LzyG&q+B3|1NOh!4v(=>>}1r zipo5Ra8vJcyM7>#iGx;iAP$fhuP}fVj?(Aow`a&%81~#M&=Ig4(w(vGid+QrPc?VB zaN3L?=&r~7`M{dw=pz5z1x=w=I!CxjT0>B&tCP|EBn}D8E|?4g(fL48%Y>F(v#u(i z*#4`WDE3Vb2Y60q-Fm9Th00p0rLO3)t$e_9rl}1H}0rw zh1)C4JD_MT>I$R_qAnEFs8p(H%Fv2U`h3!gME4LT*tT{(1^7Wln38E`Sy_q0(2v$3 zu6Tfs)cPD`F+QRAo`%oYroh}UnPhXAy$t@iyF;$K~DpQK2UeQUs4eRjPml{DTVUEwi%yuIwnWp42G1XDt$9vg5kwdPkZIf!M`Req=*GskQ9-k(`Bw|(ljYu=R%0H-Oct+*=IS=W|8z0wb3vwN&bK1-Aeu6FoTF&l3O z3^q1M6@Ya%;fsIADER}VgIT+0uihPMD%kn{o#mELuMD1@DhcAvivj_(YllHHxbB{z zl4u@kEfub2ug3R%2Y#$TTE|Y}WBm6M=T9Ui^xz`)gHNDt0S~NzOC7pY$2GOsKLQ7T z$0U;Nuz9(Ya6bzic37(3=zgUYAGPf3$n`7fb58R*Eo>rWhDvBphgRHVMmGd>*}&e{ zEwbRVnbGD`(}J}6Ez;m;Sh&F(?}A~6spy+2xz4mR2(4`5_{~+(PqL*LMUoB_MD=1M zI>O`8rIu_$@Z~9vLB2W-`OI!737x?k_g%bd%fMEof=+flp&Ua&v$8N&R~35~;XN9l zhiV(IrIecL+L1aE!)Wk6bR{-{>r(B5^7p#$KI>vP_5(nvs#thBac(YBqUEr;!93tX z=k2yE^QiY9?>2_790Rymx{_m(tVJd-3>Q>m|5RGhh2G|$##_0`di^qj_48Wcmj@>f zSq#gr=i2(?>_t^!m@)rocJV|bQ9~vTf`hk{HrA5(3Wxya;D->xU!e@zC z6KttD_(&3KAkiT=;DG&wTcv>DlRwLw#K=JVsUXBhIemPuL_>EY26Pk^`XfYGKQIq} zQY^{#N(2qD5N3G6+l<}UV34Fme>?@^=mCnQV^B5@O&Qh%8*9S>FzokyA6fs4L47l-oNfIXt$NP_1ccpk2;)28;`XL0+WN8Wt~jn@Iz)J;LxLOuX4 ztQ}~yM3-GNjU#g7?-3<@1wF%{y1|v(_O^e_y|6*FI2|%>C9z%d6bE7(!>@0*t>ZZZ z#?2?e@X%6#oq-3gDzd5}Pt-KHuCXG*Z{ZhbT~@?q?5v99+SJ0X#-sYm9dUnbR5rGS zFO-h+r}e%#YFbV%_NCE3{^p?|s_KaR*BZYEv}lIj9fF*iSnw=rknKFLWs||{AWChj z8kQa6=}DauzHiI zBtyq?D35tdt>(k$l&!u?jMR-%8|gvt^6VMK7FN_U-EYV1ChitYh!CKhzF8fir}iX3 zgz8-_qeoGGE9r9LIB__}w9l46@E<3!Ye4>^ZG-wXdQeod)l-XWt6P@eQ3>=UNLG$# zLI$Y_nTz#-gT(Ml_M#x;u|AxvQ z-~SuRl%M!dC}?<)tn@!~4Ip!|eFuD_Wa4by*gP;LP}J`Rd0s1JfV7}#NzP#jq~rj9 zS$XMq2Qnd|!>PGVM4m9@fHEE*3F(LpFSkA!Y-nH7QNlWAvkvG=E~z%zc0`z-Usb$H&jX-MnIRY zhD?E&K8lW7DZI}^VRhGm$9+8K^WK9>M%~_ed7Lln>%PS8^ZtAnN7qzKRgtOs{QfG{ zH-q9L&^UD*%JcK}eBu5!_gCL?fTM;%Nf6Bq8%m!5c3r1&KxzSCE*(|nq*Z_FOs3Nk zZLmvc-Kx3r;z39rmlnW zpyc4?ss|=i^1=C@OlLStDeT(TeEdMPVdR3#4etzx>5|dBSNFyaN@_7m25pOT<}-Ca z+nP7qK<&5lqDy-rf?(<_#iG^fhgX9wSAX7uRCDJkDvnj^c*pQ#vkpr)UBsGpgUurx zZV*GrhFmMv_i?;nUAKYSmEYr~1xi+jeRS1$hpmv1g>GFBE0@IOE@w>xxUxHA1 z6xXySC)-(BjS6mSvE{*J#i}}y>ks!@ekub5yEY5Q3Zj?ye3~NZ ztye?TfDR5+p%tm;3#L7Ro;Rg4W8q%U(__B&?@fFvm*V1}a)X~=53zhXiRIPvlEXdb zX#0@WdjhuRN6pGiZwT}_o1M={Is~G$1QsKP?-RPmfev%W!V3CVctkD2 zar;7P2Os3*ogxI%#q?EoROR*w3+>(`KPN{!091;QB$}|v2|A<({UUqeqMDJt{;qID z0OPm7-z|*oH|My0B`btK)e!7)^$*aSg(IPaX|2Qet7^3g5@@k_drR?~->?m8i>JFP zp^dQ7X}U)d8?7BX(`!}(@3XH?4Z1QEljmZ*vmEAaD(%w{tmA**)jRZiiQ?Ht`rb@| z!T&5`i9)uG_;XiaF0loReV_andV$e^Hy)cRoB@%+$GZjkME1v#_qAA* z*g4x^+yI?cu>rwYg`o30F`2RgYoew zDWD?Dhh3O@40_M|QMHG1WpBQ6BT17gvP?#feliEQAW7sPZh=sl@ONWMzeTJqo1XOV z2_%9>OaoX9DjdN9j9I?}Pw{eM2(gMOc7RA3Y6j_GfUHp?#u$VXsdBh9+B=9_9je?; zS-hUJ<|Em_d=R`7gkPZchkJxiFXx^*lQK~n{D;(AEFJuTOlW7ZfvL8{DCQ~R0ghs! zl*S(X8RGWOc>=ox<)20!@}wgeyK#S^^Z*{1wxK|K)JEQFe&X{EtbN!_2#j4DMaCT% zG=?M0km_)M^zRn5v%#c+9OKuM7<%I9wTJv3kxWRlUN3=4oDhVE<09TKm}gPt?E%S2 z6e^*TzhTV|Atm!YMOpo*oP(f>iWTZ>8X+yeSzQP8oLH#j=+z2Pk+b_XU60U_){*Np z@){_y3sA4uQJ<#DmgPx>SzS>SXzob>Tq4Cy=q;7}u~a;AoSiu3{%3h25b7~7*(7NA z)=WYAfyDgXicotQi1RqO1oHkcu&~axP3siUVzgoaBoZON+dS_kYsi2Mobeagb`ajlTxr#g>(1r;(92RU}P2=wptMFWK2~y10@Ycr=pudy}^%R zN?b~ncZ!#w<1(Im*#|~&YGuhr#_r42>46@Al}md$aqc3~5bg4aYuy&Y8R9|3 zQi>v=6HSaNS6ZPw9*1)!&iD&R8qX-Bv48Q#&9=N4pGuwW2}05Y8p70TOL!0wk;p0j zA(Xq%>%N=PWg61a7MT~462t=BD-WF<{@VY!TqOK?dq$8?SeE$xdEh#Fx*-rEf#msO zn{ZOdTNhmxQo8TVNzh0$77hq|Fd=?kY5$$DGZ~{NASqw<2yc160jGZi-9f!=dKA=) z|4Tx(^o4|_@B_3!&^;0*teDpb5>Yk8z8Kp?>zGCqBpjjB6GvS1?9X%p4{#U@G^ihe zX3+RdXii5iQVb|QRou32y7?=SFVQ`RVyDs!?|v`%$?03~A)_A<*fS(gUnt0N9!N<{ zwP=&B=m7DS;^`23jw!6&>`74&OOJ#TCLv+3NR@|!1ZZp`oxpsmjyElS)#dEPA0?ct z4ws+!=DQOp+R`G?l<3h%$ZRmELtcMZ(&7yvdbGhwgwRO~-!1pl1Uucm?g5TRN5*)0 zIJl0fuXUq>a+SwK1#%=K2w1y6Ba2d6Gb4|+*EsM)dLb$1NjUGxf7>8dwa;hxx(gRH zbIFLik%$ylW9@(*v4$u1aZNcJfo#|o8ApjzCcG@(kvQu$o2a#4a6y~z4GY@+LOAL7 zB7yjm6nia`{3h6eC_L=dXvcYAhz&JX5(F9`50Qp~9Ehv<46_3fLQh`wt|3?v81ys2 zQ<>Dww^&{@laaixdt=@__lMP9TI?SGoABq4V2#Z#>5z}7Dlb6sczwKChcpn{t4+@( z!xn@aFa_dI%wTxFVDokxG}K{Xl4!BvIY9SGl*is$nYy?b6hTN*r3V zei-l)5?H923-22hLpgByKy4>ZLKuGhrUc71(Oq3&6b0gaEaOG*xixr)FLL9LE?h$I zBekZe6w2k!ybCOpiWAaXrbe#UD;Hj&^?D=bbX+pI@;xsKa8DEPVRVAs<;&z|icXf` zBMFB|WX{TSUUl7VLc$b#+ID$7q_(kFV2PhyFF}(EDg-k+>y&VpLEwdI`_h3f(KOfH zqe!#$ON}&4@hK_`w)Iv#wwb}R`_J;qxw0RE;j$&-_ zBs6mZ1&!PJ!u&U3ZyPqAr>=I7$DD>46NaN*>0`Q=&ewa;((4@GHkfXrk1iNr^g1?* z#K?Z%-Lky!)$r$9s}f)zhGX^1QZr0c)>63$`TJaeTKj9ifWRyL2e)v`m(-IeAkr)k z`a;-3wZuk7hf5wl^M==bN+&FQ9M+vzXS=P11@E@W1TWfJrL9C4+hhV} z7UQC5p;=bGGmsI;9E;^3y9zKN8@yXN3rEkV1sw1J$lJY3T03OX)z5(x) zvxA`75hF?0>oD0w+R_Y>chXQ(ozvgl!iIk)LPC#vA7$eLiy|JKrA`cGOKO#eGAjcoN52kchV@0z1+>kK6m?6+NZiDuLZGnzqzjwA~z z5e3?K%m`Y?`15`4yA0dWR-m?(B2u;VgL+6{vvtp@4fqUQ40^D=dwSoPD-ZfDZkP6R zD3`TD%x~v59T;8k<}wd<9!pTiP4SY>YiTpgQs2Qt!}snB?~`yhqH+8^ZWoS$a>d!d z*CnYWP$n{?w5fl=)VbI?&a}}WY&V~hXZ5NbRJZ{8B`KCgAvg9wm7XjRN{u}A#+2|(WHA{UBI5t0y!Q%im+k3U$kW^Wmc z>8BS0C&LX&xefTm}mtH6ow48I+k#BZvYvgW7(2E-j{!|?<7;wcfba>JKo@A>e zkhEqd+gs873JSyh1>h%Una!Db&sc=exS0i_&PSGBQmPlxAdU<@aaKlr6}u>+7cpz> zH=32E)Wx#SS&-J#9*HqonhVvQ5FV9TwO3D4M~>pjSlH{HRl{_$Ur61DuZet+(LJ37 z+l$P!5ST=2R^|c}f}N1z&?FCb=oE*d0$XtDR*T*(I5kSL=|?gT?m4lhPtMU94h%Kh z6R#$#t{JVHsn8d=gXsGkL$LUbk`sNi>@H9xmipxw<_Jyu;&G&TkJ zJAv1mx~*b=dZ>34XaD5i@#w8ST?pD(SVD!*R6Z}snKVQ|pW%3T19@OMCwGCvtbjJzvh zh&~tAn4yGEgeIo|YA0r$BAn_{BxN!rF_ImEcm7V}c7%nj=`s^V{6Zlu0%Us#FLAn^RIxv0`^krff~lv zkZ?bdMG9Cx{DlfYLAQQru^S#m@)q=hQOM(KW#N=(6BL#=BQS+3BC{%L61}cv4+i&J=?{J zr3kMvHuoG|jq9NW>&D9Dk@p*no zn)GEmEb)RavfU?fUdFC{dBy|au5bBiHfr^#M(B9b$Ttsx&)MoCvk7tnH#UTq+O-8U zRiGAoZ`W8nmQs)?Vi%;3Xq5pgI>7{?oop)M&;XOFk_&wRhcgzngS)0YD|8AX=UlBt zGW}<2XX;WLB#ovP9{C*OU<&zaz7n2+l?oZ!4U8V%Qsim3cdhW1cb)W|vfbIT?lHFo zZVDv1Msr@7*)Pt&<_%*_OUT{Gd}Ac^L=3_X#}fE|MbU3j`uwdPvHXHcwj#pB&;81Y zfh42Thfk~)%S_vGQ9aBytjpm@kn~Fv%hnYrDSwK1GImOQMA}J5NqL~qdZgH!&(kJj zE`7K`W4FAZF)g=vQHOvRc>;>vdGO!cHRk6ZXy65k{klz5R)3VNU)UEFfakRF0MnXO z4uS!IF0o?#;pUrtw;_H}B3_hF8H+m&aM#g6Y(2xBjlCyk;8oa)8ouD-#7uARin(!^ zHIGNNAc_pG{_K8l294d|6r!$O-^NlFv&I!V)1c4v08qAd8p`uCNP0fTX0xd6;;JeQ0T1Re4L z$*%uo;7BYw#%qDmI9yYFI<`dt5~FR8lAx7u=0@efjv1*FCyvui4qd%`p3E} zP?BE$Us=B-u{H!gHQsI{w@q+6Nq+(awlk_GA-7_Kurk<48GTYa9!TC&^Fc49ePafD zb<$*E5QO}B!a-cmz0{P?`NXT%oCHzEx%fUi)C1L_7c4YBuWEu0QgR{f6muB_X;NX@ z`5#e%S~7W`K>a*5;a)+>$j3(Bu#82sHoV;~UvE)rXf<9XFRxaAJplss8lJh(L~G1h zpQ_wV#n@Lo9?Si}z=btcfM^K-)jhYHhO@X4KB|oar!hC(u(633MI$tPS5QQE~>)l{PaH`6B+0NtVn*I zgtrNYj?_i6m8Kqe4hCI>DR@TgYfKs6hZ_JFK{V|%5#NY{x;8wcM!(#no>{P749;U{ zG$$KmK+9xj6v#m%EWDN;<+VZ2UvHcdpI>`J68d+#A93F+hG=-)3O2rC`4VvO6lrwx z{C%Ux+cRUe<-V{{Hp}9?=GkBn1v(r-$4q2U_m3DbWwOR}Rc%|Vy1QZ0wox_9QsaIv zJFo{8z#MHN3~-IZ{PruLh)2g%Zv_zy;S|^qJj@lq(2jCTSFNC!#4;dmjw(&$49ooa z%8s1&S{U%Nphu54wW_~Kf#MD=%^B&eZlJYZ$^kW#LqgAr6X95II>TPXwIvoTMXpL+ z(T>En#Msr&ncs~8q{d)Pqv|!7Xb1sU+63*h+4WClTq}#V-rr<3-=l-)Z;2@Hx4y3| zBwBq%dn<`UJQY-?b?!@a>%cpv@JD5OsueYP3(>nn7hyG`^&=?}ZH<`im%d5f!oEK7 z=yaNe|Nq?kzxecjac}1TT_|T{_z(RFj12#y{)AzTOB<|K#IIhte&1u%ZJJvtR2e|6 zdL2A+djkqyhJb>&;^gjV+7{x?v%guc7ne?BBrgX#BrV_A=rJQ7Cs;Eup-1xVLd3;k zYk1!rI--2Jre_{l3Qjod2qG8)n)2D0P2+_eFgbm<&Q53wqrzW?9m1i8znM(LMjp$W z#N!hv6oT@n>X?NNjh{gAu(L*d^tV&*kLG@C{fUSxhYB8 z%GZl5jvILNrd>T?cu>2r^|Hq{3m)n-f6c!kkV!u#DPSu{K3iCV_mc?S8yT`NrbrUp zTlb{bvQ2t{2}Kl1OITH>Y=C{xsdjRg0Cmx0^nj)MOZLMJwq|;1TJ^hVW)vp%Uk$gM z@D9O*X+v{sY@HsnFN3LZjsP_1q{2zf+%rKMINk^ zE-c(f`vd((L?h-7razhi03-1uU+PesZJcIO#o9^U(rNux8aLoMd(BARMN^}eC<19h z-8j#`OkN>)@_XyVHD&jtQlq{D&M__Jbca+rZweO+sP=TnzQ&4uG+Zi0MoGh$bWvLM z*;Fx}B8xLSceWgHY>kIMZVpKL^&nP1m0~6+5>G)LU(QeF@W~yFE5xq1985m0bKD|S z+eHDRdmHQQcgG~!*`SFxJtvM`XW_&&_~!JwgjLas{D2Y1%UJw8lne5ep&&saw%!n! zOG?7hs4T%DrwaYOLwc=?Tvj0?^2E>o2+AJ9>+a9fL8PB?izvp`B8=Y0mrGd9qe>4& ziQJ<=w73X_ZO7~TsfQ}J@~LP#Py!S%86w4}C}e?s!5*`ubI9zCD=SjtKuZ0J@P4QP zSm(5CB0V}249QaH*4@K)>1+-9;Sj&7VljPtLC{)Qu=3th=(9`eS|B7dd_}SkR}^d> zV#MKtk=q_H3y>EvCQ|7rez5Rc+|Ehl_^yk;Eb1lIkC9O{%{^taVQ6)gxpC?Ns7B|7 z6xNV#@w74QjNn>_YRI_HzGi`}&O_Usf z5&_^esQ)0A4a&iX$nFHNq1{+FHN0(~V=GwF294(MHpB=@0Ic}HNfB?JssMJ2Dg($o zbuaJI1jVF`qaZ#923*OW*cB}7p{S+)SH_vPdP?Z?_S-X zdumxzww1m@S6POs&3bay?vKxh{C38_K`#HG@!H zbH-N-+Q6D^!-^$Q8=iSSc>E1lQQPs(n~Fl%Pu~NgwG!p;=NTFJXY+z{#R?`j3pL4d zERl_U!m;U522n`u&ERuQwtJV47(G}d%WBT4d&7Dq5;^)ogm*i6HtZRDdi5pq0UZ)& z$}4eq`?Rv$`YS15=8tVtdR5J%b!l)Qgb@ay+rsWhy=|*~bei63XY(dAmb@Dn$se1z zJBZ&sNWny*=56QH;5!TeDcGAEnMwV!4%Iw!X#q1k?~B?AJt6Sl5kX=kp&p zugTiPb;#o@=n|>^fH*RV!k=iCa&RbOolHlEz@=ay2@@8BW3X~)P{h*z1yueQFi#`8 zPXBoe@}FRt3x6Pr%4v>vfeS%@VyqJ*&k|Z>@dAC>CexpVALf6WK_`FDiBULw)bDkm z&-Z;jJs(sl&cb|AL1eDQPljtTU70Hq5c{({Jqqd+*yu4*pz7wfpiF}7VXtqSj2w}E zw%~%OG)5j;dj3*OjiTHeRzDh1P<#57%Tq>d{oRZaA{OmQCMY#k_Bk8*V0^H-baFt3 zjoagM{=Mp>+6P?o_B@|iQQpM&4P=Ga7yBPL$-g|~Urs{L!S>&ce2o7|dg4c2{D0EO zxBbuMJsaXb^*{utbfhi1@`*q~1vn%f>~NQr$|B_^=7jcqa;+llziinrpD8@BzuCJs zE-S8tR%kQPnLFmU&nEk)xJW6-K|X1E)m*b}XSh4ForycI=c0a83x6Ax5qg$!vEi7K zJoZzX1i(mRCYR*?zGwRAyzaUjBaTnbt>pUi`AadmAbnqk?3OsaG1*R#0Z-+4{jSEb z|K;6O=bG|Iw6HW(?9;c-)HCprXzEW9s-~m4$V=;fERLb!f}7j+{_G6cZ0De_KJ;mN zQj^Fmxz2uhDPfR4d{yV3q-ur3c8*#>#KL{|c$W`){b#IN;$QP=ut0%?Y!w*?FQdW2 znY(dNydI3%4j$0#Yz8k~z3%iKxf@%)1#QK&*wV%~GfuqNlV|E#3%WP6jP?R}uiG+c zC6O?H_*^_3|2+|7?LAw(5!b`Fwn}T1qNCf+1yxcrUA6_5+}+dq<%Hc8r86F~3YO&6 zxl(XEmt;^RKk7J?A4L#2Xbqj1akzMh^26=dvhOJ55dH zatI``S~6!+cm4LKjtODF&}$TPwL){<0vcZ((+NDKN%D(f!D&SA0kbuDZK>T+5d9GS;3O4??L+OIv8Fb8Dlycygl?mnM!1vBPiPLLhZIf+!^ zku%RdQPs;NQ+Ijsxta6Qv@INK4-LP7jErN+FlO%8UtKsej!ebOg~kh+w4nXo0hZ^dWc3& z6r{+*QRBrVbIpoEZet%Sr3l7I*rJPkQwIzFct(-?LXEpC=}oVH!ph8EkaC--P_dHI z>=h8NpsNhW{Rrzst{+zQm>5PhFdWfEEVdpI_#+CC?7d8Oj*csd23|4*2Q&)o&nbZZ zLWYVMpl3Xz@bqM%<;{5K*;ruv{zVg^WjC~wbm_3ny`5Y+h z#=aXeY65R?1g_wIYw!R}Wi0U~31Pd@ko3My$etjNd{5YNm)A?4>b8b#`WM8+qDjDL zQOd!^33;dt>?-#DLxxCYh*}j)0)@m>6f#DnaC#&UAg_ser0zCNnB(VO(N3C9$@^Eo zj|n*W*^#L$y?9f@9v3O_AxJea-Q6z*>_1BHyRnL5_)br9ydu>wdZPuajp|La_k-}vamX}N-tM4E8E zg>gL{A3c_1I={W`-PZU9T~^fb>8AOzvvP25ahkbkG@Ie9WE2uO91CgqJr3NOR(uJgknttZ$Gd_!Ey+nSEe^E(tEr~ASQDpF4Vf~@noi9r0 zO%6ZXm^R<#c48SeI(qJG#uvkE5qS>y-XN(0hJaM+HQ-9`czbs-JILLQZIOai=#U&| zW%t3rhVeD)LZ9QckJuuWfNICr)^82(l%{D*@fts2v8Drx%VM-wtUP~G6M(PwHh9TnI=*)PCXeg*pE zkJlr4e0l%3SNa%MV^cZh8!so-mv6T6JNa}SspL!Y)^=jkW@h&iBaNtbUdq@ zjNby~U9|(ps-GRv^=5e30OvG~ZZFFRs0;B%8(_y+ZF+?*szb3u02OPF$CW5n>cId~ z%m3!>sty3HJy{CHqp|fewW5l?%ObT7hSnN19thWzI3ZrlOX}=nlo+yQP|dLQW%>qG+| zX9rXa&aJldPJc8@03i^$`Bl<#x-Z%}wwmNQrX*&obf@?!j%AjOllUQtjB6aC5+Xsv z0c9*!Np(?(L|cmBp;cm#lFK}FX|#iY#9=U-Ydn_dZiMuq>MTuB$T&^7qeHNH;u3v2 ziM@$)sf^-aQR>k7ayF|3Y@#+InVRbcF^jZ;M3(xtd7^TfwApa6{bW<{68)R1HYOc| zbpj@7C-F?pO_PL0+EfC2W5*)tId>^WO>B(>$MM`N;v%i$xTw5QqC;L=vDKC!<+?h# z`4;0fVX_r9XOVs74y~d+NRG6jHD+tfnxI8mlobWD?&Ju~QwUP(3uy32<$7E27X1WC zykgB+y9A{)W6QxpoAJg^q#zY-bZQ!_#A&vx*>y<1XvC2|-Gf`gsAjQoQxVLrlaKyl zHXh1`t{yKXIdIdElZRAVF9o&>gK^fAm)GA{{@aK-Yen-uo(~(+`%=}S zwOAaPoux4a6B^DK_$T9|tP-3>+Jt^gpWho)7f@-j=$rB%4SyTMwOizYSJ*#>(EGs)3lokgAh*4Y_7vZtg->c7+eL%2W{-75-g zi~|T14J^DwJZg+hqC!%?N*QDE;~`$CF&l@Zq@J}3Fwc^2nos>ruLlLxhhlc+yuxr| zFNv~7N;Iu5^-LaXA3f2c0fp_cQB-x8#{Gp^Su7K#JP4IsMLViBqbILC*J<48^^|TR zLjoE2;v~He@}u7i=rQ_9*n2!m8896*Kp=E7YflDl$&TGxNGa-fFwud&9D!y$R1EQw z0RPxrCKK^&$1JnN%T=AH<>9#)1oQa`PnBD1{U7+_znt)2{`eyv`@i`k(?9yw|1AF> zGdGM(|LB?hUk5>!H8mVJMG<{YYtvdmbx5Py8ESqAT`5ilbl7&G}#SR~{;d8K`$8U%Fe5Sy`G+jVJcb^Lea6 zk$%bH$*p?#<<61G)YtElm!44`(n!8k*Q-m0y5OIAyi47@vGjR&eW?B_q;})O&K->w zHtuVwL^SQptE1uhJF-6xw{}iJt-!R<6ihYl->dhnJjL0kR$j}Kx;eN#H?iLcv3pKK z{E+EblVAh>=resijaFN9(Aej~F83~q3^pv8OOeL`G`3VO9GS9}lg2!mv};$KJsE1> z7g&jpg5_5I7w4VJ2|CiXYgWxeh+#~<_P1rXZZ*Y9>#xuA2%c=2bZG6SNm|%GOIUpU z_pK_v_|WmtmkpESR}ZbAJd@hUjGbL+V0l#9e^_mjBu&_sn=bb%Q=hf@CevD72K3$`GzR&W#bjaHS9EHBJ^D>@a!S1daH-9PNV0jvZ7) z-7hDDM}1u;q9a(3yT+m;S$$nK)PB6h&`8xd2lR^ouJ=;gX|>l8)x9*eWqmyPg*&zq z29f)XANokONw~Upj3iDII{C&I)76j^luD)|Qs}Gh;^?7Y;M<8s)$mQGhOWGt9*<4*giqc7xcM{ z>q)k2n&k`_r~#jl8MV`NNupX!rYdxh$ZV23GtrYMx0cCNux30pk+I~om_8}abBoeM z(>yUQd@ho)o0)88CTa@Vw~8|2PUQp-C9p+UJ3ioBT(U zS7V1%ty$c@#d+DnM~_atQ?w;OqH?dJdPEt}Cd)=y)Q${mH3W%+Dj>e8hsp*|%`l)UJugj=n<2xkW_QlcYFnGfuiZSyrJ16~Bej6j zvc*q-6p@>~YR^OxC?qTzh3t#iC_be5g6QrlOYa3NXp~$79}S%yS<}Sz>C!!9qiT;1 zbzSLH7RqhHu3~OMk@&hS8n!~wwSmyXPIqrLIszQ*SVu(Jzmke17mRHTE1C}_c?pjo zN+6>poUvBiwL7&J?XiF&s#3-8=0`!PZ=gYCFQ ze9qH2F= zR*w%Nc~Ng_1w}6@2iXMHF~jp>E8uGesek#ol)btYl&N!#4?_S+_f5*_!pptv1!2$U zM8nI)%<5%h!*mmhgJu>qR9@(?bPMjXJYORhL$^>##mP5}e??Yuq-&W?JiE?kb{=O< z@W&@e?)(9nX$=Rmmsb}J=bu<29^e;+T4oM+ms%3Z7$MCtUH2)q_tK)d%@^3^2%(*8 zjjZGJA`%n1c?ylEB&4|`G{%QklMEuj+F+%fJFG|ks0ivZLq}4^a^vi*_)MIKNa};( zG^zQN&C-33Ca^;+cFu2;rM*~uZ%o?F^^4(e2-JZW3RoQ@wR^t0L&utl(8C&hZ!(W| zZh9jwktrrXbFsYhMBaFg`PxtpLzUMXU9a6L7D>}~9Qit94$=#q2ox6WiRCp*m5%=hQ64Ken zgjD#^_Y1`FCi4kUwvee{K?%zXP~9v9u4P?f>4pwvtc3 z^K#QS$pg3qTMg)+8Z^8uRFC$-^?y}zspl7_r9~)SM$z^NI0_doqW-w+iEScdF$rbg zITKAt4L`8}Y|0R99|>AIdOuB4*yr?leY^g!VR4@@vsZZmy+{|$ef+7cg)b|GjFtHL zOn8y)`3mO#Nzx$_^VGhNm&~AuHiOa_oYB{kui@0LE7AO|O(BIe5lpKvR{^SiMAE>! zV1<4zS#i&+L}nf1b@wWp84$@CYwVVngb-P^FyNdWQjsS7S6)3=aq%Wjkp~1+Uq*@K z0w|P*py>U~_!v)3;pFb`%J=qkEI~9mYn_)EB~z}1aV7~*5v>Gb@DV~I+s0)9zsF1P zg=4rC-9er<^r8J4a*K!s1xW{#Wdol0dQ8Opu#pM_AGK&jaOA%B!`9FaUE~bH&(ys7 z!fWRHdt;RM@LX9S!jX#z+3UGFp92s&^T#|=+~8u+8wyp%ALa>bdfYZvoFYzfrHm`& z0snZo@(q*T@9Y{bGq`~z9|s?L?g-<>^sCdy+P@J;fESr)bRng__>Yv)sB$K~c)3|U z8(i;&_L8{~k&lCitF|Mjbh4qlN`tZGxbI#}+&katTN?^onfHXBqd5eZ*JVw*xO{PJ zHTFEWQkRzA&tLlId0#BBm8KXCM4C)Rq;~J1qxP6JOM{1HZ9E>hIN(e$$ZSc+SjXRP zZuDO#UVKIqh(erEaTs#pHrx@+dYG{|dd^Jl_Fos%3V6|gPykS;`n~04KkTBZI(K2_S?2gYI5ARTT78i9Rub>dlc%Wif{Zv0 zBUJ>}0f-4Vaf_E^|A4Ew#Qy?kaY+9F(f-ahDonXVNtbLpXoxRjsZsXrx1Hc-Wy-fj zxVbVi95%>r>${+FtCcHjK*DwG{J((9*!X_|r?K#VLHSu6)r#B(hzK#e z4DkIWsyTF+jcAr~l%EUB~t3SP7S{(#At-jgp`aCCT={+h!7) zx5#uPvW9nK#^Oh$M9f9xMjNLR^K~=ZYi=&v<^|DOE6+GbTYZRmb$SDdw;S%f7I{D_ zarIEz7`yR1WVe_Zw2IG72e~e_C?H8IGnm6zx$y_}btksKt}a%IW$N=hW>-4Br?hGucef9(-Kz(>OV@w+=MYjQ3}MLM)HwC`u<$lxE@J zx%JVR=Aynd2--c*95J+&o<6rQ<_7<{cZM6bgNVg!fOxUr?R{T1vSW-8t_S?{(`M>Y zmx9qt+QFqVW0)~emvr+Dy^ld+$gF6(lh-`-9GKovMv9`wq;l}|(c=;YCUCzAF!l;x zV?otle?{vo%`55`|EPA>a>c;oI?bBZJ4Ss2$6Fp|sW)P}o>k3nxg?`}wh^yOu7jXg z_l^llE}+3OdfW_U1mk9HoF8=a{)Wv(<4kQGzdoP+Q4XMxS^5uI%)gn*Kj{h+1Ka;` zGtd0bpfs3f3G)G)#RP75g07Ym^YAF>B z=!m#{o8~^MJ!GeA+$a(s7m)wLY6;=~M}RrXM_*({L%?@&c71zq*>lq70??EV_?}6iM8^#CY4nMvaukoh}4x$*GXGur&1l zrZi~n#)+N%DlQIxe8^>V?W`MGecQSJj?Ku?j-gy`k2ItEWPCX1HNm6GodjNe zeE#@>9qCDclA#ch7}-!`LBi|L`FpCZAGKh|1TnNH^8R%ucdCJ5TX%YsUlFcrM`6vh zrECz$3^+toYe$VRJ*I4U7c{zbN=Y%5Niu&N_AB;>JAxj+#W>NcR;f9=U5{WSN4vf?~tU_j{dgkQVyFDYdlGI#+HJc61!n}&w)K@-*CuRUQhNy2`HWOSOj5!a5+Xw3dK`R| z)?|vx_7aRsodW|hRBFHJaxH$4k4zu5t`}DVMwaO!E}9*$eBj!x>cHXe4#| zzK6-wN+rsY+NBCC(t=v%1D{Y(ESjV-OQq@yJZxsoiPh)a9>j=qn>fc&drBDfaolz- zn@l!1TN`K`EqEdtq-4V{@!Z(;>hs1a5rW2bCzSA>yLIOd^5iJUbk<{R3c@^y9G<1+ z3(_4wHVuvb5E()=TGG@odUCGrkIi8$FJxLYT4-G1V$gv)IBjmVicyfKF0O8~H$Mv^ z6{9Jn(#N~vibHSk(oLp=q~&8o{h;=K&vnjk2%>!H4qeba;AGK(+yd-LRKI7yU&!tE z6#Xxa7Vtm=N0MZm3CQIrVbdEQ76X4)4Lc3Lc1G2MF;+j|qp+7YDNNFJWE z^JyElZ)K0zLdAG2*##z!WM#NYOQ4z=o1)#(q|~G8*R2@&EQqE`B!`WQ9MnyXk}Yd}Jk1U~d2!g~!XgaiR#QLWvm1YUq>TxKNt%Y?e5iWPPlMi;MP@sjbj zv#5y*I@VxaLV^1hneG*8#X?EDtgST43<@f?P|2C26(whw>l~!jKu(=uBfrL~I{`{Cca# zh60?!zt>xPYpO^+4xw4WigNw%Wh+MULpM1#3Fg28`v5iyDh5Ce$r)cz7ri|(f+2Ow zsbV)_E6wR*`M~4LxzVux=C3S=;nDEF#__C6x}FGgv}olJU7r0D$!o_IrF9-#?ZWH)w?;?L7{+JBd(s>O%glk+X3SoyveO8JU=4Ji z&czd_I7*4a-f9#5U>zLs>|Po&lLvZJGC}^890)Wk)A|vz1dgEu+I)lZVhM7?%7gVg zo!|}iIymDlR9}1PiK!zFXwua=zarZabz-fO?4s@ivr)%KVqF$w-hi58Hu3Sy*3>ox zJCaOHjiY^G7bQ1@sJ717G8<(T^m88>Th5Wtd(hnqr9mJ33^HG zM)^A-K2l+hDVlwi#gko|Ea-PxT%nr!=*vJ625SlUlh0$NGxQ^NRAb?RC7Jm&}VAi#qY&SscpTibeNl zqry~{W&3bcS*+_040^P_HY+ci>QSw|)p5#bO?52yz$%^_GD)aCxz6vw!9y!5>eQ** z*C(t!PG_lLYvu1goKr|K(nG^PHy{MUwkwqn-&oO}Lj~`FLI_Yth@!zYG1fPJ&1Aceiu+T9kr(U} z=4h1!77ZD7Z7L3MybsNT#?EWWl5s(07k1Db^0pf@^TdxlUvu+gj!K)&v}!PHy&$>x zfsp>pn}LF|XGN1MUd6`88PkYJL7v8(qlbGHjQ_HRIGyP-Eb2Rw5I&{J{%8A?@;#j3 zna?1c5;EEAsT9PS?jRh})~FUFjG63gaB-T%oA5=GQ1jd+#_}BY=E{FScn*90zu-QH zz2^roi|)SS^vld{{s(sTFJt<*M$E{;@xN=t%>O|kfbm}iq5o@*xLRXV5laHmdsXde z(}k-lr$g@qmPnr|#b00`#7>&r$Slew$Vke->ekf5K=(!KkCDo=$VgRcIBY0EXTyV{ zMmkwzW-JDk`^cHzySMx1-}5DtTQ;7Y?%Vl@{QzTGd$o5fo#&eRSM2ZI7v4W^aZ?Mm zlbcuTAPa(X6Gt6rEDuv>2^ge|mm=nkCQ9a~62rSlcg-XXW7KBF6dj2iBq-8RyjmQ`|0~^)N@-uRSxNbt4iU3+Oac2z#@qQ}4q$ zlJ#g+Q+r3nidA@bg*7!(duvmcJzA=3>Wr{c9^@XcWsVMgd5IR1RnxrczM7XQ3Dc2a*SpIw znLNrgn+4zt84O!SdCFKTq(HGfz7PKnBFi7>4j#(Tvr$}eC{)~lqLHjt4EJiwQkzsK zlF^0Mf})IWGi>RK_)rB7R&v{{So2!fruF$2g@v=^s7M>eq$(^F&ETXU4#-z5UZOsF z)dLmLgp6Mmh>utx2tg8XDrVBib%=UWOqo)flwsX9%FI+DV7}2j&P`eOO8@-(x!p05 z6mDLw@T9n0?(P;nl^h0o!=4i8XQDQ$ATF6l8uK!6wx1?T(6>K)>S+(6doK$h7#^W6 zEQNilw~Pr%(?&yM$s?`;cbMlogM?G$0ZT$|02zXmfT`r+7upanQicS}S=6!BAH-6T`rR4hKF9MUSIKx=V#jlyLf&uJCZg z3w~J(=kcgah?T^4kL9B3a$3#j%QT%^k@FY|ncl2ZlUm)v!u-YL%ZEd2$dr+9m-%kB z-$7ra+`0icD&7jt-*n5|qLN#CfN-gR-i$a`bFfilL)LIGM(Xxt zGv;KCbv$s5EJI@eNtt|#JLe=pUTGG|$<#ITBI0*c)>O;#@w7v;diVDOlQKm}ou^>V z`Stbz1xkeg8U(c3BajTgzSqQeUQ7u|hU|s`a>nK|CTN=%roK?&Caqdrr%&o1JA}W2 zZbK}26L(Qmw$sdcxhYvFZ_gd?=uQ?{!Xon2?8Y3}=1unJVZk$~l@e@jTmEG;`i=0H zZ`WR2bO6f`IsNf@N?bvm8~BK41j-C=jX){%808;VdvA+T6+(TEk)vv+r*cfhfYpE8 zrTMKeqeNvQVg`p7y(Ng*q4e7~M!=sIKP-4k&z181ss?r-ap5jpvOdD>Puh%r^ z>l;xaiJO=GloS9NX)_WTEzY2EoUcSMrUoVRG6)iB;+f^_z{2gwJ&(~hzUT!ZWk-!-!VU(QH zq=l^6+qW~kG4y?+i!P=~LwGW-F=Vn@@7y?UrCfHV#uo6{On@~A*MJfg>fh`~$~ zBhSBvzs%UT`F@;DZ{*-&f5ua5X>e>ido1Y=^Xiakm35G+CH&byMic}_OF`xJkcjo9 zeL2YAb@x$z$=rR+dY`CU+MoJl#j2t{INmFM6?zWh!AZubQ$UvSxQ&FL3=VDs7bGktjT^ z1b2=06y$`DvEKvPu#2)3_##+oD^0du0_`w-0#yCwP!u47CtPHif7_7ot3!Vf(#a|I z&+&Pf?_{`rxsN>kiSfdmk>ZZ;>h%y> zi0+G?i8Od0`0G!X?}0{c)-M=h-)y8laoprdBlLbN45L_X1n1Aor`N3^Ggfkoik}$2 zOf%nrnd5g10o17psJw(aWVRZ4ou$>6Fi zked5ve^x=kE#c;?St+!vg-0WOUa=T&bunZECAbRJJl>BSH=%b)T})`UNPl(DieQ+~ zWZ0o!_eo_uxm5x{tA)~PIC}p!R0v8%)jWtn`OYgg0X0Td+mJcHriwy+H~*xpPGnd9 zGmiyai}QYPbVWjX`no^N@qkJsO67Z3HJxNPoAP*)6aFPIQ z4)`=N+a&CXdDT!izZEws?y&Wb=^rhwJdwvR5;pDCdYGqO23w=^Lk77K;HkBIRO}sT zXq=YzV9j;N=@h&ZMEx!n9B*^|TmznlRoSA=AS9>JE}P-MmvL#lodbpSo; zWO9pXR7T_i*pXdGvCAU7FY_Xln|1-p({FmQC39ywXY}u(FX$t%C|P%u3$cvF1G~H+ z-ag@b{JVB1)+3%M)M@DCLjDn`zqOjP0nxtBX7ZQ|-9r{j``BlhbN4JCBTRID%acP* z@XW`IE|bwubCQ zcj&@_X@2=QXa~evIXO#Kre@{($N;gc#^9mEL84TWYp}L==xFrSm*dU3zLYnxFSsksdDjhyz>2PKC&D(dVzOo7LSL+LxZQs*Xseq7QRVk zWo4uD{BqHjbjGyh^~p<-&&U2_`{^lHB$yNhd}fVw=%UZa3JfRhrD8{WnyzILxKhzD zuyXZ!DM(bz_G0qQWV5C;4L8&3vT@mAJ;!>}F#|g@?eaQeXe$l*;#!3&lRWt%RIZ1G z?%qr#v7r_okN4B@!t1b_;aRjKeeV*Dtki9;C0um%@pv=S0Q@7XA5OI@p_0uSV~k!X zDWSgQtM#jqLQ4B{QKgew=pM&&1`WDdJ^PcfYHNxvwJ|uYR;lI`D<-dH`8;v_Jhk>> z-DI(5UE|RDuNHc>B=1##N4{_Us8(H3%(iD>yoqak{%74)5r$nr~_mk^s?i#bor~)vvBYDt@vqz z+}3P583wYA_d4%Q+S$`dsf^SNGnsD8bv5Mnk>y^QXiKlA_8b};%^1XCQ|Ec$K+?ra zPdX<%P)olwQgmqaS=3&ujbSc3W_HL*C|$i}J|FK_;h90u-?cg|mv0zOMF6o80!4IO z`1adh9Kq%5=wg117=DuVquB~xl9id&!l0J{^@u3a&a_L{*jfv3MPpF2tB#V4w+K_a zC785Wp@-TN7imhLC-53F`#It0{-@wdtHRk{RlaUdZfW(JXqyP@>viKZSEYPiR_qSo zxS~cumwo`^^KQ(&UHiy);euBQ*eoP{Cl(@N2U!u%*P=T}VH4^5fRwGRAQGU274dYW zlKdvn#7_<_#%j)zDcZ+Kt}KIakL2==$L-v1xt5Bd9R9y|De6S9O5|^Ny}Y*Y|B#8v z`P3}WDmk#>Pk#VNajJy#rJ(EWT5S{%x)C5I=p!b0E2xL409M*=Tw6yb=84DeKvgJ% zVo~wlO2)Kn>L?rky5;AXeu@l_#s^qDexlfnQWrDI*xLxuMPJ1>=Z30dAglBuYbX>7 zOTvk>_6fD_oD+4*o;F9@NHX1t&A%o@M7~qEQZ3MCVX236~j< z=9l?{$@xdaJwOG>a2EtRXng%3u5&xY@o^yXmMj6yMD!PA4?CrC#7Ka0H4D@dz|tY~ z1RL<|#Ez=cm~-lENI?a7X}J?Ik$PTvm{PYk4gA+~P5K&e))ngjfwr^_N)UL8VDlDP6MEFE0Hu%7%^4>qWN;a>y|~H8NseOJc@mD_ir)3Q zI%u9USN@Dku`v-wtb+&|0%S;+r@}m~kFch{7}wEa!|9?Nh7GHTx3}%dW=}^slET(U zLDNN{u%m^jrBtX|;R4Hwic|Cn=|2J8=!^wbaU=r03@$9d7_xB| zp>_aHg?^2NiHA4oZfonpGGx;HG~f_?G^hJ>QNmeT#1dLW)@BM=%WadW(?UDu8@H`n zt^VY+`URAuYNDT%?RfqZ)<3Hey!xIUDz9zvvUnZ%NGE1 z#73V}HScfX_Ul4G%9K0<6DUBn374Quo&z>F^Ky9E<56}cL7}{x)8&cjVxXX3p)wiKB^bvC~J}mxXc?fPnj8viBS7p z=RnqxuwSAZd~!W+Pg*M+m1Wc#)lh7!*5(-@4{It|e!_wC_{bW+jX#F&N@^m}I9bKK zTHFxH)e>*utCNe>>X-oxD#uDW7pUSsHJX{88necPoP#}j`1Di@!9=ar zx&3xz9VR*uX}o&yX>iPKNW#!P%NnAk?7D+7eIsq zj$T(=)?)84uawzT{myr)=}G`{bK-o%ZEd&GL1|E2eje&96V?s8vO@@xR*GOxp|x}hb^!Ncc80rVtmD68EDjQ!(;_#Md?2cIM~V}L;YeNLbLY~s zHJzN;v7{o6#6W<1mP7;zpQWjhMPZOyMu1Whu}#a5H2ea{9E)1$n@F%$@V>05z<&)JB-I0Ey+NHS)QmHxy_DIHt@4 zEz#%-Fv6?{n>pl^B|5{*8XF7~x?PEmyb~9Z!*}4^!x*{ZCqd#zyxp}?!hIQrI@qfw9I8%+*d`KZ)$cKr z_?L|xjRx#8;q$}K{l5D~UEsL9y=)5cJHp#SKnyu8PYWcW(*60#dN8H8zI6i%Q1u-( z;DAG5`9g5m<6mMn?4}-U;$PTo+Gk1f3Y?r*DrP3&Ql6Q_9(5#>xrZ<)Kr~a~z_UZT zEj@h8ZAfIu=ZkoxO(;u=#>@Gi zcSlEO>*z6l2?lil*OEtqE+E-Pod_u}Kox+Ne%5&#$el5{JlxzK>?^YP;t~l2;o40| zVrbXQ2mcRa?-(0O*RK!Pw!LfHwry+Iwr$(CZQC|?ZMVC2`}V${{BzESCpqt@NhWKO zN!BFuyVj-WmRb$e}97x{8SoWGq`3uUIN8OGw(BF_Fib?fb z?rQ`Zi_uA26Jun+aQX#2Ky9oL+rOl}4W0XFGJ3=w0bFN7X5d3v9sdeNc1MWXt!NxF z0?o+e$m$xE61TviBVa*(LX0!+zlP5U9m>v zE?BEUE|;3}$+*AR@2GSiOa7U~lLo~tDMLS(b#)72Kdp?BUUlvR2fyu9S|(K5Z-&B+ z1KOvH1F=%N7(DpRJm>2|#4?7lu63@gT)bt_87- zdnYx=>rSp`Sx4F(GTu_Q)%tK>Ys;8M5rAYPwm&TK!HCi|S*%m2Q0}paP&B=z#|?Hl z`FeeBR<3yYs8;HtMy)o7iSc5319e>9A@+td_q10IIrSQ@J{Z=IyQ5?m1H&l4`*{H0 zZxjPcil@u2aNP#Dpb`pOl8rNYK*8L>Fw3ruLO1Lo*T|S4?jWDR=q(LBPjG!FZ+sLn zK3doHL2Fc}hKu5i%60IKStG@?O$lQGHroUiAk1`)Ok7OOqG^fZh~Ql4-Wt7J>rY3c z5H2C_0o4JVN*%+G?Ona|I)f3{@GcbGc(RKQBvVw--1V^FnnKO9=KeaG;K@z@t_aJ; zxnG=F-xmZOk@P-8L}Bg&Gzd4W*YHuqomd9kYPLFA>EugzzzrenxXV%!p*222C6Azo zbLl@iadziS)xi0@n77cl#lm}HdhrTf_aw+AhaGd>S}yTgs5z~KQJhsrJ<=*Gl+(I; zgDXhbDXI+QenYH#^CUr+6|14KxXbr;9MhuOoT))YyhBS&PWsjCuW&^Uzgbx!46q_R{1?sCtB$UK&tcr zTb4C`8X=b9Y~o-%P3@=w0thUhVSQIW_P$ZnSXjHq#j1e<6GXSD)^Cqp@|!P7oq1UZ z?dw;7uPxcz3~5AcdSc0IWy(631F)<%eKl?tZW@((Z$|Ao7`Op-%n6}JG!fR zyT>e#%w^tRgo`h!{QXfSDl?>$s-Czewmvo%F8&9w)#_#8e5&K}dAhpK~!g2j`uatSl3~vOvgR!W-vXHw z9Pgl$b+%hafv~coD(R_aQ@bd4iH4n7Y3#H~FMST-+A_P7$ocwI3neo`hmo-MUZm-K z{76Wm+G4*rU%!*2t{;zSDcacL0ny;xs99MAPE}qX*l$HX+*0gD9JaXaPa8Zkvw%=YoX*E`~ zQc{S4ZByQvVf~5CGa}S(?_aND8-pZEy!Y*{Hr=@L@L_1i5)<&;acN>rBX!f6y<2;2 zSj8Xn@VRS#wWmk_lX)qXtdBX{1dtu__WPX@eJ=r)i!(86%_4A~^ zcbZcWk1!Ce;-sUmtVf8j>*C#4(zo2%W4^aj#nftz5QT~MRaY5feAE|PtO1K|BSh%E zqKqBcQFx9>V}=?6c!U(~b2yNqW1=ut7sfT0$yH?0PU~X}M+ZVDjokA>Hud&44$NT&M-1L9R#s*~A)hRDq<6ZJ~>k-3F8Mj>UG@?!~otPaEn z+>+`1%@p}n7uFLcn01_=x9%(wgUPjOQ#w1Ivw>go&O?`*qv2p;$u?h$(XKT3V$@L-j_nF_SgtYW()m)XK05&m3sgxuZl&hPr15;M~8^h6IRirDK-o{zc z&(}Xc4SXcJXlg}||1=sf^=izZH54_M6rue&?Y#10_zwIK83<>w6XchPCYR}zM%G>o zQFh(xmNwroU^{MOCx$9hO#e)q0&o**pQz=M(5{PXc;(7k6b!Oc{9|($=+J#%UN^dp zEO1I0=#NK^a`>SEI`ga4m!Q-94n<$%1(D|{JCZmebeYjMaNzH!m*~3?{>he z9PB!f@reM>F0LVp~2T_iM^RQ!RK`zR%MblH&Tuv?$po$So9r zc9N^sn-XVJ6bgI5;!Sq0S-402f+)9P^uOj^rAb8}({@lELiZz&B7~)*1y2ABo+clM zfoBPd*A@5PMn* zPWD|VYExP}lpuXFC0WIYTHRL1i3uNtj^<*YlVZ+S`4q|@=5|iO7Ws>@2oRLLi!X(3 zu<;hdcsWBJ#woYRc^gLDX*D262}Yx*3$IQVXO<_uXb%*HgUa{~m;*_AS3d*F-!Brkr$R6GG*87H$w z^Cz=N77W3$$m+KganFesE$$41;w|BGrKplKXTB4NFD6iCfhLe2Ns`8GAWn2%`SnbN zGKn1*uqE2hQ1O$nYS@-t8$Wf)#rw9QCWt;W#&SlGH{jU>OD0?RpTuetmV;ZP#IsjO z5#=gi7dzq$x>AZjp9p%l2@~pr!;@nwhEL~6fRypN2I#bLLKjq4oQ&3DTcw$y5uhMe zitYtSutqZ%riosjg%5nCp3PMjUUe<`P87$aw=^n<1qm`^!|ZJzHLu5q5`o zS(BvWi(i(A_d&pFbR7%|*ADQ-z7}b6E7z>U&=m%&mUUUtU|t7tm?!!4hFE1U?I9s$ zo6|eBic?k@sMMyYn$oVw;Bac+(2fODl6g``76ZUNb*LmP^5p;}df1nI zexr+Xf{KrrXM*%M44V%KXDi_V<$oZp^9~)wk!z^^X za@{bUQ})$^m^G=(dMgsKgMOSLusDzEe*3H=vBao7n}%6MKV-D4guzSEI~8FFM24uw9lUMhMPYiMK|Kz**lvHM^jeyWe%l%4Bhcfc22yn zE_WBi8fwFN%Fb-Jw3L{1ck0c|#}tfR*&p&Wd~a0n!=6~*6NTPI8|`7+ema^*tD_iWJTKJ1$4{3yq&q#h#SeD1(hKm%GEWFaun--c`D3B&I&0t z0vDxiF`6ZAiL!)9@mE_vjd9#_WJ8YYdc7Wf0z|2lcci6*Q&>8bMM`nHOp_ZKb){!W z%}h?E4(XJe{toX){?wSPr>B_;n7(dYb9*UpKIsW-e%-P0HC(yvP~wLa5z#lf++-0g|GJki84l89t)5Z)~K;Y=gvoPmPd>swwOt zOf;cmz)sE|)6WkNc9L04`8uz>j%z7ZBAPfWy)O;m(OHfV`Fy5Wd=zkdr07TxJf4v@ z>mGa7glDEIorSNGNtO;1p7o```A~*XJu4Rsa#u3;X6L*-g2;81~V>402A<&n*$eL#`hibm;VW__#fI z;lTQ&xym=mUARrIK15KjR7d0%WTz5=0MB()>9G0!CR7&Xb#V|KuNB6)R>T3cA(1aw z79+*+~ z1vr01+ym7!cNl}31=)B#-VMK=&EKBF#4X_-*P-)Qx>M)TYqP#cVWq-qB=$aBoIxux zA%nyD?FK~U?t_*h-(rt`=Zg9{v4b&7F9~6hfITlUOMdr98RuyqdoXoKVzM8$CVm5h zb)XIW7h>~Yu=_7CW@G)IdTvIx|3+-G|NkO3lYf9QPAj7KPHkVNsm>w9GvJ-cc*;Op zkFb%ETDfvLDhDx}=Ji6Sl+@Sk%koab;#S`jwK0W>HUmQ&GgkEVVrl)C$k__H%y&{R zdTS#Y9hY-=CZ;n_VUAgq>UidoN%NJdS|di(xnkV}Sz^*{O6L!)iT?8ac$u31JG|nf zy-h`KmS9=)oTE2mTvl{=?!2t}yuq5w*@w$>%jP2<&|N^ob)wU_dHoJgt+!;Xp<|OhDUqE!Gt=v}m9_H_=Qo33<=ClS zb0kH!qg};{esj18zC-Q0;G$zu^X}ZMbNMdiG#pfO{ORBu7z;8vTC*OhjIsW9T%xx% zzF=h4*q-2G>eU!0ksUqVxMTClP z!^|_aVQV}kOf<2GpMGx8c;%Zr_}xH4HO9Y^F6(^9!@I{q+ZlLeAD&4_m!^DVzA0ki z-zJ>r$haIBksoL zUIxOr>{G`kEro92qdyLe4VJ^|gI32dIcss4{bAEz$aXR~l11)pBIT~(oNtdWpe+bq z*wtUcoI4*K+Io{f7oSEf+CGlG=&pG$Plap-rMob%GxHy7meA?-HA(CTuyrgtU&Q1s z1rE-T2^aXTPLL1$`NL%c_{sYU+yln2kh!-Ir?1yLtSs=$JG`8qku(7*6N z(1X>nc~YB8JwsT?Kh@3O_H=K5C-Prxvh(BUf2f>+TflyW-VmP!XJo@EZIw@otXe^Q zZ_~MU8-?v2IHd}AntAoZe=N01u!8su7`jicVI7bT#DV9|#A{0r7=fsA^hPWVX| zN$!dYUMI9Q|9$k4iqZX@xKO@dr&ur-ACR&0tNcjzH{T-)bDm{0OOs4`K?rdH0;NU0 z>KZscEOr{O-x|?2L=3E7Ve*i3+LE_Z7AKU&t3HP_A3se7s&wOMW6E@&bjISZ9Pjt()fcc2rTwba zVM@!{_`U&WP88X6*%(2mVrnkwKeM_YbAsT1fY?HdVzo^pMefLWeoIZT-w6q7FUb`v+(2c+WBkRvp=Z{~#Wr58N~?c@c@K zL0nKD4}3J>;M?9?JAvH=+9ya51cT|fK~459dtCzkxzFmPnCLY&1j`G@+*`#B-3~47 zHZJ5~URYHXguS&j&(!GC1WFlb(<*k~>B%g zIo4oZzOfm42zt1c^oOc?&X{%*W*bmYUxOllo;{&jtqJfdTj4roE)a<%c?bZCkxd*% z64*{4Ydlao4MExwk&`=Jw>f?_R?$#&8#22&)TLQwI-F%d`eqk5S1By_%pN#nRrn`y zyM;^?Ni?@^k!#Na+IDKaA_{POyM`_*1sZSAfnS^^@KH@FSAba-?JZ%uSJeXGEz_9I z_7^Lj2fI8_lO2Ogm^IQ}!WU0lbDfeGz;OlTgG7^vG6SxGt2~L5vgEk6g{oV#hV}|2 zZCZZRV443fYE>#k@yos53!^Av3VPJA76y|;}w@NSj*(l!WVD-KgieUChyyfGREK!Dm?&`iCNzzFb(-s z%Bqc7lc#aUkHQTU=~Px-LODC`su=gAAo)G|QY-L)^$3rlwIDCdr0T)yIBGXUg4AV} z({ltbcN2A$oSdewK5g_!f!DU50{OPA-*F{Xno+m-|p zmng5&nwiL~LGJ(qi2A+@P+XzTZjpGSKEsfn(b+DhEgU~LcF3v4x3nWGiAaVac@Bkv z=JY6-0X$nc6!l?*QDT(GgT*5Bpk8K=EQWohwq~DUf2|%suZhVLg4 z5P&{%k((uqniHY#=}WiK$Gs4V6bCw&94r93m`?C<(*$>%VR~Y<^Lgn8mQ=BMzS=eS z#n{2O(P%9rdmpOX?WO~WySy=a($z9B0|D^X84w0om$mqw@YTUihkAZlPVTgR*zRHM zWX*nYyc?%vtLZFhZp{STG&QL$#Mo&ynM;~)Px&Zb$n_*3nU623DMmW3ml@=-(Ylj( z^FC*7*i-V4Zz2Zev8(F8!gr7Pu^&x%&0M2tZDu*hc|0C8CIZ<9k06$Vk?a$JKKg*! z{91Nps{HcLVAEVaquuvgvA|I+{HrJ7TU0n-K108fTtDb;im$H6Ee^ay~A$(0p~n0-%AxG*uMw~S`D zqzn1l4^rqms@PZbM^Rw&SWzS!^Xt2j)y#^>q;;;THw;^k82owG#a={W*@YvOXlJ}eyb6upQ^`X_lJ z2&;sc98I7^8AgesL^6~_eviU?^nw+svK(hTN!22jjn>Rtxrj*}KPX?SOwI1-6_C%$ z!5WZH@vGTip#>Gz0G)TfQC=f0k1^nvc0S-<^DQoTVH};qT=%xiIsL3(qyXZ!fJCp@ zL=Oabq>;dY2r3W)M^+^I^U-7Qxb2N1K+1NwV)PP=I>P-uSSAGAp&C8drl2||&LLuJ z@J1qJIs4?1ZE06oWiQ4ouATfJPVPM0y zPwJ0w(Z)8;PdnkHfDY+}d%7~q)BbG9S@!X-C_I`@3BFfF?}95v$wD>7DgNMWgTI2+6mJ98ut_U6ytsai_Bdy121dv@v4C(0lTJeAx+cjbyx0xHv8OO~FXG z%df^u0Gwdp#B_)X9CJQ6eb@w`GjUrcqu9o~H{A#+z}SB7@$@}A-s4-lJTxEruzC|5 z0nLN3(kQAcl#W0|g&lYEMrL_zVY*%H1tbbHmg;z)1B336s>!uI?h<$x3`BF|!`h6H zoILwPR$w>2*?AyEEmQZ;t&{@jc4(D1MX z>hH$3-*TpLDG9PBYKcV(^p+Mj?MAd?f9lt#4`m(?PrWLvri1I3Cl4A6S1%98&xSE& z;e+-iRR-G5HrC~ktp%H`TC$YMPD*P_8ov*zKy>W$iYuxO!3op;fEjoyW$Vho7a=yQ z)Ob8zCb71#{`o0JaJhxky5etKc5XCxxv$x>u`AK0X)FK3Gw)s9T%9rf;jl%$=zrMo z)|gFphTybZonf|j;P~5_Rm@EXJagK+*DQ0|^hpxK0O?caaU(X=)JVImIe9$8MWAGj zGpww)*Q$Ptg@}ml-KOX4kNc{TW3YnCqM%XgVRYg$cYIdT@*+i7AVSCa>Oms)o>24F zFglJnfd$d7a579_5n~COps@rdw*+2JHX_N==DI~sX>$!p6K&@6RRNLOe0U-dDJiaM z$hq%ot5Np?)Km*2X}y9lZRVp3B|!l~Wvo&pDxtvl}!8LhAnhGeiHaQXt24* zxFH|UjlHib3HAlyZGxZVto>UgM6BL~pFZ0ilh*2WtK~XVGCE6g9?#cH)0Cuom)YZs zGymG|V?lge5V3Uv+~eFQ>h~FNqc@)F$|sNEKd{29KieSRFr2Zy+RhCK-_BVbe2&CR zVW9yXY!QbeVelie?%3L_-x+fYHLCujv%1Ofs%|RcjXF3j3983DZBV>Fhmnp%a^1Gd zv#(znEqf}sFoXUO{$k)Q^BM~z>+}(RbW!GI?fi1d!3u~GJ@ndUfnMp)TIOV^tzNR& zH>h5{f~ks+Q&e-T(`rdqDv7^cma!2;reU*n?a3qYE)HER$v~()aR1hL9ww`BinUUt zU5rbx6&KXByzJxIsf9rIY?ltSWX&oAhAeRIT|s77nUxT*u&LHgn6%O+yxB`~!V0+# zh=uAJ7T8`JQukO(k&*Pws;nWY{!H_^fZ!(T-6IBN5g$N#lvf*EASh6nDl|{%%YnzL zMM8xNW3Qs&cwOP$c%7YRU{Fj?x~;gsW+qI^f&_|F+;$||@U7*VAPSVwvz(0skdf-b zwL^{Uy|l9{i@BL+@NM3!-uo^Mi+2I?=56EX%$US^U8No^nod<57kA(*GroxRS-~!% zaI!({IuOne#^ppYfmGo*5d8^dJtVCE(MG@=#uJ)<1K*52#yTA^HY~*{+fci9)uWN1 z9U4|wqfy1W@%Z$%*jujQpl`~*((`_B?D81~FgS2^tG}-JypU!EASq5zh;TGz;J^2N zWaG1Fbt(*i6u+HGb67*m6dOl@V1Ho&N<8e-j;FKe$??mbIjvIXp5R=V$v%kj=5PxI z`@uxx@lVj5upnjeALe3KIWcwy4{Fa|OWQwi?9lqc3`>(aNzZilNWZ?mJM$Q=7lM>p@YT52t_F#6ihz2sPQ(47#7r2`M zD}>WlMZ?z!iwhoR=#$zz)%oHDkr&ymwhIqI{HM9RpTqWYCtscku^gB)KLP+*$)~f9 zvbLn7T)3-O&8>sy)RCohYe;(=r`1MvD-!7OJcEg#(?kNu(?_-qC+v#L?g{xyF;3W_ z(A+D&Q%Vb5z%(>Phbc;E)yWK%G6-SmG2hN(V40{lbn7Dr@5yF0hSWse`fD;w+&M;R zvy<&hUHyOmB8#Xve-&=XC5?#elaG$Uj4CG(&v>CbU1JQz7?krf_it9Q6E_0?@~nbR z-33mS2S&dmaTv!Z92Tu1_jgVbYv9j}LAemrghv6SLxZXYhtiQJZ@Q*nwNoOu&!$M( zBQ_7rw&#%#YnM0UF=KL>6SXYx`so>oTJ-k_9$rLTPl8**DWivS8)*YBC?<#!dLbGM z2uFs_;FFiKoQuQa1;kJgB0i8Gc`G4mIymb+E#r%)&4rP^W07_1pvhJ$h?iMhGgRhZ z5!n^N6w5I}kg*aAbt1Efs$!;FmRR zO>vTh&srKUdjU@2npGwCR&bW=mZ$N|Mou&VOJP03+XT{)Y@JX7H zdWDIqZqUt}I&1z5Azp;CE%%R#BvM^GqeK~GV`yL{-s$$>?Dpq%i=JiA)WCqP&(!R* z-;>cakA0F;;V;!*bO*conPuSKCO@H&J^Iv$u~J?Y2O9?G(6LiaFfQLhh8Zq*7@|ho zF{6EaUN!jwDoGY~gE6RMQrp)=7utu3C2NJ{izl1jz0lLtNp2__ecM3$zrz==g0Mq!df z^Grm>J2%ZYWLu5#sgJ;)`xX}3T3dJ-kxY-30Ef$sQYH_INbv!{tw#{bx}`B%PAzMH z1#F0F;wCiE=0czL9YpyA3SM2|A8vJTC9c8XWD{4T6Mr!DKv=lS|3F(#og1=PaxcqN(-v86zF)}m# zFIyD{>wlT^IQ|*_{?9qDT0=_-TkM}XFRgW|O*OGc@98IKVlu@aA5n;dA{hYi4+Mn( z;o58Z%(1iYq)%z*385jYg2iOAor!Gj`A71~t#Xc?8?ee^V!PZVz5$#LRy&-NHtiNS%23Flou!nxzX& zvz2R82ro@7UY0mK+9$iUZ}||UWIn+Gt0%YZAw}#-S~;FvZg}6g^a*C$Oi5wEI_&;* zRbbzJysALxND@7Yoh-{kr_7}zBFk6)%FPV*EI2HASUCP8isDEK=~TRcM0_#r)SfQK z)>z4C??C!X%>{e>{>;RYub2Ga=n3Dose}>fFfV6Z?ztm37t+A*LX}J{BqD-sNaW(r|YLFyVZEnjf2|n zDHz@8{~W7Df@)RK`dY-)oUl!v1?0rPunudkD_Z92)uc?WlK|nyYK2)ztt)4Zdkz+U zwtnK}R8vOBy`KNRzaJ#MV{CJ-yl`8&rGvOBA%K?9Dq1z3i|G>b5kQM0*$&0%>dl^) z2qmLZ?3qgh)3FXQ71u~tV-G*27QBWwH2T8WQ4Enmk9_Hi62~H$8unV;=dLxfX!W-8 z=IY%h&PwGd2y#N5%KR|t*`B%{N2krQdPgjUwbA-}z^c|J#5sXvFDfx8bukX;ivopb z+y*8=VRM%_-}W@`h530|KGBv$GX!%Y7$80pfF?lPzA*8z^AXEvKpcRDD79vF^>tL`g6A^MAat?@?!#%RG|Go)o z^A{S9DhG^6LYo)Q)*GR!)c!hi5Ks$Fqnx}4M=256CpDm`+7zaR2J9!P&^9qnqymA? z(VM0uBEOA-fO<0Fn@v%>KZ4CJoQ$Fr)%ZQHC#+)M&rh)KQ>?8Nq7=YW^sHPi_ywFo zv8(6eZ+GIg2)5EVjIIMPoP1URUbGUhuic!SSKZ{Ll|8xqc^Ny9$4iOJ1OZWb&OO*o z$s);GW68E+{F_B^e(7kJa{TYY=`Ll!_~klI0=cG{{^{E5@@H2ZJ867yuVRqApq&LK z1xCj5a4CcmTUJO!PA|2*0H{z!E?$?UdegzOw=(Q%IfsM?1)6LR7f<2G5#h^|evSt^ zc@Z;*hdT|K6R%1D0%lrMDN}vkfq%{5asA)oR=5+j`bGH&S@gEy$ukq#Lg449fXRLp zg_)Xz_L2#3Y#qE|^YAh57LX=J`|stvpl7kqJ$R1yd~$lFFocAplpjlSgj+pCiR4FJ ziI#|5RJ&awq-uaiA7L_@#~|)3ok`}XhFz!Fh%&N3-#~QS6n;V>9Da_1a~=+snk3|a ze+A{PK(=yUvDg!t;~yLW(UoD3PniizISDC8yuxsb!-cdAVh>_X7EXr{QSFjQKWg|B zk{}Jz3uZdzWr88g7%og`>K{>(v{xmg_@v?q3J$JB$qXikpvmr9GGoJK1as{b3Dy#f zzdr=?I+Ej1WC1i?-X&JpW7h-5Pb8Z5AWTnB4Oku!QF!SKR&A-nvNAlx4y&NR}G+n*G4}!`-59oqqCVYV=q0Z@X`=yX&x@Scv^(Upzci zB$9SJo8+*xpGgl&!L~=U-RPBcLgqBlfW|vZr4bfxmCP?vC?LJ)+3T&0g1U-lytC z_f@^JViBzeAWsU${i4U8`;d}X3ZbIpV##ix;k00%0=fa?9V}$u+Na#>TZ^D*>#vS- zEB+AVH@D`)RW%-2B+{69bxzPr7-N9pT?5#vu3sg|V(BykUdc`vlpNC5W z(5kA9|KeCGD@?9l2W=yHz*NR}7zz-<6%L{*s4bu*q^@KM*)78h^`6~BE*3bXlJ>J4 z3Xxi_Xy#P!TQ}o=KxAC@qT+Z(TdHmXK3Gjkl^#+(^jzd3xS}tc8R}L`Ar2 zIL2DaBSKR658EZsCW1Gp3gUW*j-QtBKg-SQnf|kU*`V}4%NvGeZGM(lgt( z0~0Ao9^@ZToI#2jimZ_AFOc|vXhT1BfhA-Y-A_(KDeZ?H#l+GIKo&J#v>cE90Am-( z5V498fNi76ya^Fg@B1}KW-F$^sJkCM&=DZbk1}Z5RDBB#j2GdB9;t-UyU*!|yf*YZ zwV)e*UihG@jyLaCF{nOO_qWw(T&&t7_V2~aV+7Rz+dh@kK82-)AH`Eh=@9@!1{^E*h{Fj?F|8z=7i5(;=L~d!(wuF z7+F+#!8pjZGboETB8m5-0BJ~Uu#*$5vP~8*)~vGfr!ySN+%*ZM;VWfexqh9&9kkbyyyU+_wQnxt}Ln@^b_9vGvV z=Z?6hL|%=p$vYxpk&|4AZ8mwh>4gLm6Z|hY=U?pd?|C*O{r{Y2GtvLk8T`-f|5due zME?)?`9E>avZj_J$||DIjvj+8Uh$mWb*l0aU|e4V!o`0m1#$N+I(hSv_-;V z`Q)@SpJ#At?B5fErwi%(@sbZ`pXE)yLGz!yi1o_!&9cm0F4QD*16CcYnHm$iKc1tr za8{>DPx;<&e{XN^kLSA+7f0PZ%c>h%mU(}DI6O^Hy-p=$)0kWpnv(7O%KB`qn;Y7n z!`uj7!@x*0yN&T|}7j@AkQ}1_N>1+=&qy&KOqV&`o3n2>_b4=aXA$g+E!%(| z)ei03{ZYZr1oVN|`;&va4+SF$`k(2{tqZnJ!rI$7d)*v-mCiO@JoO#W3nJ#F9>?*P z#}<(HE855!$>Jw3$E|OB05&5-Z7p}O9bUH&8oY#o>=L`nHKb5YOZIAiHsMy}v`H-B z>4_~g!2Bp$Ni8AO<-!G30a)ZeN2)CYvR59BydSQ<-TBJ^Bo`uff)Rv~&JaUI;8$m5 zqw{+iry|b)5{jf-dpfy>&?kRYAhCKrbX+csM1MDu(tRB`qi!{A91VN)B$ys(ced;5 zQm@``Id~I5r7iVzY-^*s%isV7SKYa}Jf)%&H@ov*@_PK$0S`2}leWq=cz@hDO5ygm zbLcU%QuOQBna3atcXf8XyW~?`BM$BJe_pxx@>-=cVkw=wW)%d-K2OH`5E(4y-e0Kr z@&3CB2_S_d2{1DwN@ywy*a(U1PN!O~q%!m9SiiY4HZ&}Cm_|Baw22l<*&ND(x#s{lBBLKILv&=9?Hd~0O3)gCn1u9Qq*bLNImgb- zo5H|a(@(5b&__7oyvjwTTHuJjg2-Yq1ef*Rn^zfw-~k(j4bBUB+%pnfq>G5rjq zLz$GqN+-y_r)4t+B2HMkLhrrE&*k>`AW zirEy$vZ^t5CDe8oxw%g&#?{aqVOE_#+DyMx7s2tn%(<;1`@76A^t9#Bd9m6#Fs7m8 zRN&~6E6{J)z{0$_9h4*{$5k|bPzv9ZOkGS}y9@JfQ6wlBk8DXK)#tTwBdKbrVc3p> zO^uvU_4ZnD8DfdSQ)esg+Es$%)+;?n+NTM~alk^1*PkwOTj#b%-P)y>fwR!2Hwi~~ zDs9vZ_3Hy*g_-{27dYH8Y+33?NU>Rv`~8N)_EhG(89ERG;>^qKULn`CC3(kHru7aR ziA3X4qi`^S2Gh7wWFqINCO!=M)xJk04k3PJ9H5=Tcrv9Cf8koq37y*KeoR+5xidmI zUfkzXATB7aaK-Y_7Hv(r%Q}F3mfqtTEL+)U{D%Wv^ubK4LV`? zv`ayP>^mn22j`9gQd-nN?1)hX+QP$Zq|mqmu+4Tf2UMUU?42EL&@nlbxEIDZ>?-@v zZ;?>`Qvj>$_u)x*Zy|OfJoq5$c0aKsE(~WL%pif(=e~qVXX679H;I5bu;p=2$%#e} zbKz*+8WQ$+UBr5>h_k13bTw=@l2dhKK=t5pTzR3+f@PnShWR;!crLWhn%*AG8qX(x z1Dpi2yqNKG_z)p5pd&edo&f~B9z+m3S4cnE7X@E(Sk2uGjflM8I_Cs!d?ONpA^g>8 zG#>O3bAh4<)IUxy%x1;$i=q-&;Jt|K(|CRt54H7BD|vTmn<1n(7^V@FgtwT7!b7(J zLrQ$kqt7=E)Hm*>m+?Kq5ugd?$%BNT4?aKA;(nAJtg@+@f&{1;kHe3G8(GScu=#s|zg zlJ>vq37~(|s5H`R)G$SUIrr)+r`w&G=%l^FmnJ%u%h*fx*2`Fgh|;WS?R@oU&AQLiZ};tZ|9Sa;dMuelkntp$9fm#88z(b#-z^{ zf;jVyoYmCG>85v6&?H=+N5z4rR2qX9Xg@D&k?rB-9Wzyh91@p&r}?d zw+mPCb4NJXWetEKrC*4>TEnkTQ?O_q477}}1%b{NkohJ9nVGdx^I^`TAUw6EhC!(L zLCG?Tiy~-C#Z#6Ug$UxJwN8r6cNaEph6e6THb7Y3 z!Bo*F7gK!`+@%M~)^l~Y8NW31i2gsu-Z4hEt=-lx+qN;wwr$(C?V4rVwr$&(W!tlC z`>VC~&N(|dZ}RPbck(17%oSjj~(#02#@10*{rhsY|KT1H>t%wYRxnh zkQ!>{!ocAzUh=&_s`M`;lO#%S-6nhXcKn0=Zs2G_qWojt_uB`NkIFX_;n#ufyui7Z z^@LM8{p>ND4^blfdYz}pVOUV-;R}{{1I4a>C zN_kj$U~}N*k};RN!~VJ3KngdgfFu&kgxO#&Rp~uhs=qCpJe4>vg>D9P5%`||loZ%I zx$~v_0z}J;0JUuhyIlq+!(Iu>QpWlL@=0w(Y&Th_S`wx5Hn7wAPW3E+Wc9hHzEg48 zS*RKP++qQ-!c?+Wl*$=c03Nm32d29yRumKKU%Z=sx`j1K8xs>|;5Y%{S9x@@0{fp| zfMj${iZQ&X(STQ3uqyDSMi`H?M70H|FPzXis`3`}7zQHd)k7`Qc^dta7^-0@s55eh z@cC4^Gs}=N+C;D1<)UACuSxF^ho}X^sU2iSRxU|Sv@nmWirLkVFHV?7v?9Sn9G3Oq zBj*(0Vzb9VLI`gyI2d4a>5@c0IOctf)*9e{M{V5vpQw$wpQsIHFUa@};V7>|=mH_Q z{hzRnTtYp7`oh@*$&4xzpU$eevMMZxLdRn#6%iE~I36gYKM#SVjyb-1)JxsWV80F* zmvHCBaMwrpymTU8?>V*y(sE|^`;>nu(LndOE!UBf@Vdw{6OkI~BQ1hFYS?xA|`k)N>jWrOpE+x;v ziM{b4wl2&R*+K=SO+5L}u2xmz)g|IRzF6z3CTe6gwEe~>XU4rG>%M`&+m4UNd2Ep0 zxEQAw=beRkl;kq1=;y^&jWfm|!y){e$NedsPQNYmdhP4YduG?z5BWz6W_BpfoWh*n z5-n0q8#P|dZ<65#Q@?i>=6QM+Q%99wjQvS9&Dqo$U@04%}MhyuT3n4e{dP<#wj}?N#5J3&kMqIE&J`oQ2L$3*~?r@#Jsn zT~nNn^=IX{1;;HkGmdNB@6oN+2ye08LqC^nw+TKN^OI5fqMUlliCz`^2PgjDpNM6S zHwHQ0-PT{rV<=~1v=)pEU+`BwTC`@J%Xj)+_&vw;IupQ>Dm3uHT`nF3s4za}u(=g* zuiqz5)8xEIha;;<>L>B(rn>|=BN7-|P08wecD(9;eGQO5`e;hn^J0vd6 zKMo$2!t@^p&sydtTJxo8>W_m*l0*HdaeTska$!gRp5aSp$~POcr0gs**bG^?eaqBerqoCzYRP+>>QqzF}+?Mo&jsX2Te}V;htZUYq@5; zC@C-299A(qUEVx=?`9?jVZ;8dHPI5dt3Zak{yx_kou6l>kJq*we07M_J{C{dSe>lN zi(R>?Ek!s|3oiJ^Qq$#YdTtG)rL$RhJ+D{b-X)u7i#WW;^)`{TQc(1_SZjqBHEp-=2jd$x4BdF~F4?e2QL4R$r?E~Qe%9M>H=!Oc^)z3izQ zO)imcQ)`bEcw^J7pX%qU)NJRTu$eOV4$Zx$ELf$}vZiJ`T~=t8ZrvT5gDFnfTE~J; z&Fhz))dk&9lJcFyHl?HSFT%%I<_rcHy?*|Pt^g8i7=z znWtia>l~#!B;LcfaqB59_q8a1N$r`O3I%A?HLhc%F zSVF_vxW^FjKh?H@@cACUJ-&k93?ti^pIJ_{Es3?AXY&F_#5Z*wR4&Aeu!XQt z>Z{A5d8I8RjqIhlvFOJ_t?V15Nmo1rVP|r%%Y$sy6BEjeXKey|&2(;`B;2NFzY z%-1r=vu{6n4y*Bp{N(1qlccA@2t;I%P@+brem3YsI)!~|*#;D^4N%KbRxHWs-oaL0 zJ-=njwLNh`+Ff6kwqb)?e0cIos8zS2ARgEuZ3~whmr10RPBNN=$=zfs- zm{|}QJ(Cl59?cSm+(NzKWOS>kZ$tVzuy?Pt=1@$1fEl?IDJB8dK?oR{digMwgV4+u z4HaZaN`*RmcAXc=P<*{j#^tWhLxm_iJ2ue@uUk%=zuMKvL~E?=FRVK$?b=0I8^sz8 zC~RD5#;M&33Y)CZdn^^y_#EPsyL<%W$LpM;F@Q=>n2k}}i?nk}{8Y3s$StjpNq~+# zGD)qWKakdB+?n~3G+`)~Be7qQ9VKD(?r+}@qe$r7kC!aQB5>OIMEia+HL@(B0>kDj z+NUfuflSHSzTZgizqDc|hVs67i4gJD-GLOp)8F}1SV`b@klHE;1!CYVau1{;ep4vDW3p;GmOjSKh#9}(@f!>%5>%r(W>gFmia;W&Q4*Q+YFG9Ac<%T1 z0E3{Op?>ah@;fRvCaQo6bjMf#X!P$4cT^l;5hPnH4CF8XzUtzNgXW(;al*iLBrJVB z9kk{05P*M6^by+*4DF#QTjp6EoJkn7b9%T73V{7|&*QGd0?30^h!0RXSZC~oX+cMu zPs+n_@13p+6K{+W9dE&=CW2rD0U=mL+l=DYvcAiTBQAVC8uHahtPO+$YqT^S=1Rfw+;6n#B?s5a(q+jDYuUK8_!l<)39=s!A9;E})n4 zzZ?OeiMu|c;Ma=ff*_ld00JA}W#At?LeQksn}X-QfhH8R4c1(X^A@3lOe-7uGTsfK z@$@$$v+JQ`${)?wBS;_?%!1;-a6sA-$|05%M?-~n6se(K91vX4QdIu#+_2Sj5%oc6 z01ZYz(1_ z6Wm)ye#r#K>r>_zCku?YazPBsiXfICnz&NFpe24Rts^@%lQFkFdcHLL*v6V5z0g&c zq;b|vZtSD?;E?8dIqci3lRXn($s#h9eVFKZ6{5L*l=Kz^)hl{$v;<`X7F`8Jdg4Ai%pHG;7jfDuuV-E9|H}!18`BzN& z+$l4_p#PuLDR?w#>0S~1=!=s1NuiQFHGH9XM|w_agF3-lwta>q-B{9v>q7&8n$BJ_ z>m?oSS~j-K%9-CqFf!dHgnciu8=cq{1B>ybIqEea{^$X&@qYX*GFwRT?0(r0jB`-} zID(~%nFWN^UQx;GL%9Ih5PIHpc4XE!-S1t4`JBn+GnmN7S=y>Tt2MT2ULb4*h-i7cBgtid+_=nvNSBnf1cS%=zj;s#%+B69DB(#; zBc2B3>~azL^VWb5qvE{vs^7AlJ32HAJ>tkAFAtOXx5*K}Sd3ovtqv|AMV_x=MAUX_ zJD=}tg{hQFN=+v*bBx9Yci!b@0Ccu<@4wNh$L7{9Y8&;;hCPDw=FVKvyyqEv;u%Q9 zF&0udyK+8ds(at0#b*npb0JSTNHtJrCx?H{1kwGS&2vh+ipM_gL%^EbDlgjz^|f3_ z5rg@<$0_EuA|RazdYCt10eVVo*zsfuAa8D0-pqqi#;(O$98DL3uJKLNcs$0mw^bl? z-$cR~Bk)iT|*K!TT8O++KY70A3f>pDeM<;O#f(>;p9ZsNE=|?@cw<$9 z7Q8T6s?3;VIaZ(z=c!KN+GvvyTGKa%94@s0hXV7Eyln)TQf;T-r0JgCK?*0A!Kg9w z&95{VCF5ec8N_-B&tz$uR)E{K*6NHy0*~O+g%+}WWH0+EE%3w(Rdpdx+cf7MFUPXg(@9Fi53^o7RI8o&$V= zt1LW%A~(zE3k5DFH-LEz0AVw;H@rddlb$VLP7h9XQ0l;+5D)>=ofL~x0Xk|Gv@i7= z7VkU8ieSu(teNLh17jKvMS$>Vf_&`7O&jd7;7*{1FB5%5wCQbUDmp);huMrTyGQEx zVlTJ2Y|$h_^_9!`!OkGBBF|r|9$uc0+a<(NAkFQ4L}vh7*5zF;ZXO;_78lnx@j3|{ z#<8{%E=Rl{kc&uVAF?K*1U>%n#YUCH>-Fq)Z|>fLy>D*T4icW+=O4s=Z*hy^4OdUODBVOc0M=}lH?B&k`Rsn9bH6+UQSFwX9K+-b z#XP2^NO*{UZk==KRx~${IH^&U+WA^u4Znhtv72-tAy6-lcD&GL}R69N3KFdI3WpnY@_>gD!@$=G>?u0R_!M-CzyJ=F7W z6R(iksYN`y5rBdDEqyE3tWigvlxn+y%?z&R$-QzI6@{Iv)kkaDncNj&9GSI2@J>8V zALQutvbs4qb5{EcVmy`9k;x|1aRwbPcaw>li65y<)G?XySEY250(HKRxg$2<}eGjL^=V~s5(ePv#_NSQVpEd3rhF@9L&7Yaa z+Xj#>0Ob{knng~Ib0>i5q0s6p>2&tO_sb(ld`4tdP{~1BD;xakWKm&xeoIzxhmR$- z7{}}q@(V-<&G{piSkbf%PG|M}Y#>6+|AxwuoQu}+fsusDGtS8skM_5Hgz%bkwA{i>2>OlKQ0>yBTY1TtWWS85M0*f5h^LS%1p?1`Z#Yrc;p}xUcTKB1e8H8 zV5t=NO`&u@5W7rof0JuNFsr>3p2IRvi)Ow^-Zmk}bTBt<$nbCQML`}S!B+N1sZY&$ zTE=XKgYd(%a6S8c-%y%l)2&aEWDr%z?#v(o(i=7ryS)lt|4Nr5v3 z-g3Z+cb z#;VYZr$nE#;a_#Ho8n50wKG3n>}R=VbT1!6fx9jp$BX{7?+wosvf&o{%vw8djq7DU z$wkcdCP2s%bx4lQuU1iUrwM>f`;0w<+r5j4s7cOp#?PSPh0N_qdUr`8Tnz+(o;E|;qAi~4L`B|F}eZ{%nhmH`S*U~)bNeIQxmkh zm+wfF6g3#FSam!oR;}@L9~wJ|CfF!BK5^J(hz+NWuK1?Kp#H6?BjfuH6dS{89GLno zFDe4dLf>vagDZJQ&NLFtrSAKxRSZ(Dr)l5|9qyd{VT$Uh zdA*Fy_^q2K`DwDWez*J2G<-z4?vsEhY64gU%Ft=|qYnn*|HY)nffv~KVLu6jcFVt7 zBXU3%-{}+9GZd$?vN0B5aASjZC|W=!EO|Dl&yb0i{9vdQNDulXGvw!wgBJ~PUB)@# z9}YY+SWH8P9>`lWx0|ltoJTbj+4Kq?6w>x*K`4nZx^*2B%Fx?&R*rl!!qP{HDg*R6 zquO<|8b{~jN8Gsg{0^hvi17oJ-kN#t+^w(IY74RF?h}j^VdEYD@TcWa@H3;=(_q00 zVcFASpNRtgczsbQuOd!yioD^;;b(c@M&Ehp+WaY_FqT|VlM@CLb4E?N1RCW7bg9bC zK?ztQ-L^5+si)m{?Z1fsWXr|(2hOqf=FF^ldpt@xIkR-?NdJ9^N-G4M zZVael=p7;O*-eS_^u}0Z0^M^yuX5@JhJxxIiX1W9W6Z}O>QC;z)iH?~>p*a#4c~r~Kr<+xtz$4(Q6V+r zaS}6*Py4AMj7eP5J{ccwj3s_BCPH>ml+>EwAA4GoFk@ObF8-;~6nL}hdJ z4_ zFiGz-j}C;Oa5zoRPNIsN!bHzLC{wB&UrQ@FlA#z>QjTNIrSFGihE&zt!?n?X0*L-E zZYoFhgPYD?OY{exj-Kv&wzL&HDgQY!OhQFd(o@Dohe1iWWSd|yVJBTR@|4S_Jmk|) z2kK#wF8}Mz1V&%in^jWgq%-BmtT~%iS&!6|oMKnu)a;%1rGoJwR%`?YXrPj9R#vH4 zXi})XppK$Sj3T24SCark7acZ0ZL@d0hV?^+v}T#s4lI0gxko)kD=+@X zw-AfN;I14gXsoY@Cp#P#7hW0eymTOSn=?yqL_&yyGrceZJ@GLLjq?f-E4Dx(q4xCd4=lQN0J`5K{$Q(%`Nng#f#}3M_Y7 zB39eO*q5cZvn^!6)eHHmH}IQ*1BTkCzQJUS`jY4r>~~{P^R%dETq9(B`h3izZ!soXlO(t`LUW zn(VDBR`KeZFe-)1U%r*9-$!3tm(K7>XQK3UqeSMGG$kBoWCWP{^Lxnemzpl6M^??<$xc|G16wqNvO!_&pN z{5cpN28sXMKL)Ec6gqgjXK@`GpirSfd)K%<_ci>o#ZVl^JVf=)%}z^#Rn(v4xl@1( zW2t$eH0uzkdT+kVG&E?yIfhvZy_%ZC&W^1U^-T8!-hKOZdun0#dy#J>8@X{O!Q(u1 zlnf&jG#WYDR>jLoc~@|X{p{o=sX`6ADgyn0EmUO1NI-yVa^`!}EQSS%ZU4YK${bmi z9i14=TDk{3<)jghN8j0%(O1uY)zY47^&FX^bgn3OG7H@c`fMk`2;_H#XK2v!b_j3X z1lptvYw6J?=OA9P0jhf!c$coJ8#1SbGYd%5U{J29c~E2Mg{P;`r?6FE`8T_snE~W% zKzm8xgJ?EBXO=+#6_trAzQJVl7PM3GJEykK|K<8<7fDP`O=NDh_R;CbQy`CLA-gj{J(~l z)$xCau-4Vv{~DTC>;D;qi?j!6`(WqP`>7av20vpwfe5LCAbZxT%%fMpm<2&jsiAPw)Rit251`*7E6n z&iK$=z#zX3q|n$gcC4FBneaJ_#dr6Uf~OMXcTYDhV~)ZG@J_*@QpSNB3V?$FD~kQ0OF485fHw8B(0&L=Fe8&Gnm$P2 z^0aM0U>@L2eda62pPbbY?3Tw2?0$x;ncrc5FCipDP%&f?8NE}x;45GLo&_JlIh^fJ zps3cmBlbaV_7lp^MZ?Dr&HguJnw+YeuU)r&pz!72x6N;Wv)9vkGc3kqVa3)OTeyI2QDmbmUsfQS_XW)T6j(kEzxnI!a}MwF5aONwKUeW?>6Z60u& z!Vzt`pu19WWcjf|F9!w;TPKG^3Y!h|Tsi1~`ANp@iSSj)EkunQRgYe2jK1Fmf}~q5 zpCXvw5KCu}?MehFWTpu1gM`9>6U(3i$m^3rp75G)qaVD~ zS*$NO3G{YA%w6qWUA>LIkn;VfzHCEq-Cw9Nd79KcN1u4Cr0$CBAG#C^?;pCfi!{Uc z3p(~Fx8y&ls(+Qzzp9Ff;eX(yO#ew$G5zmU)elaJE%L8zj!jgV`{A=epoAA6-@IWoisGR9=lDGUNQ*o_n3ev@DlwZcKWj_w_wI zbrQ*>r(+}9(1A6FO`cp95T75u)PbuLla-tduc|^eCNEJqe?H^zLh;p!^~szNZkYV- z=Ah)`0aqb8mw7*l=#-G$7;P`8!do$-cFb0&_INPZSnnDgx4cv;7Xz=SDu<6R6Lae- zXPNIpla1BO`|W9LEsc~rBl@_|Sa^JJ|Jw{LLHz==82h-A$3zHN!Qn#1$9F5{c7Sa= z=fUl)6r0yvneirRIP&K$kn;9HqEs1G)(zjVRXW|za>%eF7Uj4eGsKWR5g_qTbv zbo#h;PTf&LW0t-`DlRoXdRN&TG(FDBuaAJ}pj!eyZRncm1VcOyTW)=^hF}*cme6u% zS3k%0_6s58l{1c#X&A~$LYAuBfStR7I9U|uX_QnW{t_IoYEm^;S)-~3U6ilMv3vP- zp-iVX*{!$n7~zVWL>;snw5x$;gODfSy1t+iS&55jr{M-JAxQFrmSX$B9+M~nV)c9m z%T4Ba8WfVy^?0ZWt38_fHfPbkXkaSUF5g$aI(B5!)v5!co=rZUkxf>5qyI8aKA3ww zt`)a@Y~b>#`>ygAAodtpDP`~J$+R0oh9Ea;9HC^#*ffrINOVVc1JC>rgR0a=V87XR zT+_AQz`P#WJ-dupk?jgVtin&s%5bgrrsd@lM2%_ned*5Y`_bg_ksOK zp_G>%NAO#G6wekN67KQ-) zOkqk97UPkZ2+_gC(aW}_Xi*X75$k18hF*JqU&1TR0b;XyTLex+L{6TBOg5VWy-1Nv z1>2V&RK(by6Ka@j$?nchVH;Ve#>;l~PYlt=gVh~Sl43PrpA!4)A%mDskQ_`PEe3Lj zx3wouM;;nfTk0W%vN)R|bq>}t(=ehg*Q%8_q+VD|DBgbbCU6*Bb-l1EBMQa`jqgPq z340RXKs0VRw}i9=h^9d&(dEb#FqtwCf!`d?BDqwUbAemuX#c>8-y~k0Qa~ZuH!1RN z%k@)s)+L6}XVQWoV94$9`gbkzpnky*Mw^4r)0aEMc>s{V=h{M1KH2y{3tVgm4;RPL zpGZ^5F+>oC6ZO26DnV9(B>xK7;-z0=l0ShBg|2%Mrx}XE=ob9a+AQRHYze;G1q_Fk~3FH|WG139ZjJkINg|Pe@5&+sHwp=SfRs{#)cI-AD zr@VjYxiC8Kepo{z-Y{%U`O>eIW;{}wZE$E{u6!*jeSz?RhW$Oj0KUKi6KTHrB4x;m znWxQgb>on`KtfO-1nxdt!1V;|H5y1yo=#9J>EPx((uUE)r;P2wQyQ?s(KtW|9~aB< zdk$k>=~ON#9O6xW2;PGF@lqhZ-a{u!7<1xlH@i}niyY$!{x zqM~)4RPYdCjS|;KJnkZj1Znih2=_dGN>F51vhyQW$SDYKCwTbRh}vTh8AW4mlCqL3 zKqkU#jUpFIMkhTVzA_XrRK%|u|0LQGFCi-7NKXv-p|xWU;ZlyE=qlJurzL2q^jepJ z2kRZWWIEf-FrC4lr}pE{w_zQl1qp-Xdl-V0nIcV@E0``yuO<=*Hj6#Z#LkDE z8!x>oB2P>HoM6f--mCuIe{dM6gm2Z|6eF|^xYg%`!MVAZp2S@@|$*>WT|NDy)rt)KU|*d>f3QWDJ{V0RXE5ilYk zSTWHmp^$0Yp0W@g^6S8ocIHYXeVhyhf4*;oNi#1z?Swp{s+M_u@ncb-j6gQ9o3Mv2 zB84Y$f@DjhJ56cjYISBnUt)%dv91}CG*ld81lbjC$(A4gdbSR2UGy+v{ndwI5pj7E z8A6FGpAv1YX6b<*Qgu!sqA@;|UeS%eO^wV- zgbOf7&b=j+ncW+rFCT+ZI6cWDLNnIs7WoSLEPTo;ImAQJ0l9Ps!o1@gvHerr`C5A# z7^VcNh@6pkeS7lp8%HdSEHB!6!_Au{h=^@^maPa*Jq`pkyIT?;I8iX>J=SG14;+%1 zq$@ZVOJ&0XuAd)13F_i|D1cWmpUK!J!yBYNE3|WQ?1)n` z=@-80WEEJkfhA6)O3Bh+Pv7=xd3JiI!qD1Ua}pgj=Zb>zh>rcUk}cg@Q&i7)4VQM! zQdqnS{g8MEg0j92K}Lmir1{Y`s;L@QIgHme8zv%odY`uk(uM;zSGmf|X_Me3pNa+*uO(-^?)%z| zh1FN0H|3Q%(aMi3wixO#$@vY-0}yiy@smW^kZcIQ|TvZ0^pt+;cSoI?mNjVcz zd#B1B0#@sDP>;B{gqP;TFtzWv6wa+e=eFQJ{=c{^wyr^T6r|3ZfP*Ts+|n}+TzU_x zPF&5mlo}Db@2v%Z6d>7Yrx4|;6{=5 zqtxAN)$A{J5kGwHekIa%hDpe}_7(3RHhp0`T^^z}=b^34=A9Z-OWp!{M8Hik6cN|r z3vZhzY$6}lG3E8mNsI!<6U+vb;XtOW!0!RT5X{55>uc}b93I650#O!O1A@<-hdTN> z(32HrpK=(J!!73V1)#E+e^OYAtEC+VsHu+y!C^Jo!2AIxS$I=Q>NlV8o)yiF9se}P z$B!*WvH0Ts&ERqLO{n{fk-Jto0ahMKv+#zzx&e@7#F8rqCo2c1#0k>W^x)4GfpiI; zIKDSdk7J;b8vr^->z>^oBS?N?8@db+r3|_Vu!t9FD^cg;GW%X zBxZ8eRERgRMV74d_O5C=6LGB(LP?7~L;j$aFI!MV5yC_Z(pHP~u+Jkw$-#&crnKL% z*>~UM8|Mrp)G)xa$gYE=kMJIUG6}NQZ>~#DADgpFJR1|A0F_*HH*;OgP>!0WPv^e9 z!2=FuZa*PglH$h8xr-nz416Exf^)4G!vLD^#PS$PF82<=CfZpL8o&MMDW0M>3+IjN zk?kgLQAIj)uL;#stzfQFchG^Wc^@P50}Sh;^Ws+{KUR_Ck}i$mKadhVB98rhj;CCr z`Q%Z=Fpad;Vp*2f6l3{P>KV$)A*vr*`(th$$NCW-F#qnlf6Bu_f-ykY6a7Jhe&l_e z#6`lADVH-r+$ArZwuz5Z9y1mMFXygJOhsrV;8h zf#faND6Ae=6O)^sfy;ebB`~?D+8d)8#wylflU<#!DRr@3X@(?fJ@Gfwz~ihgB+9rrUeX+s0u#76h~=-lELv_@ z7Yl}3gdqwk6QVlXQ6t}EB?YAIN)npVAW&vJyq0<3; zcQz8HY060N<#CocbQDL?%pWQn4u&*nH+d|Qy z5R++LYIzg9Aiqm&r-36m8A^IHom zOoQ-(%aY=6YQB0~(LEgS`z5#(4on4zwM{5<73$>mwxTN-+#}y?h4945ZV`9qXR_XI z{#%+0W5bVO9F%)HG~J6tBs$;@4s4!U-Q3*x*m_b&-j8P|4>!^5z8;Jm!zVe6^J$VE zOulZngJT^@ES+i56$kf;D+iIk(GVkqFEnf{@rQC+dRTK(x~pYtM!nXDES)wG_AGG~ zSvc5#zY_D>R1~W&Eg8BzVo$Aej;K#*706^am7CtXdbXRJcBzRdeQKKM^l+$cqxD1G z6&MX~t6p03sKy=id3df+Pu}UuP+2Whf4;s4D$Nfrj|ZKVXt18YqJr5Y;7TvCVxw7C zm9tW*Qdz2v>y1{`J}p_wU{fb4ZBf|RB$U^vo`-m7VBET{r_hY6q{2Q-=mFx?s7`)w zZr0vYut3%=IW~`bUYBE79)WQ8VL*Pkvgc)1 zP+b!F&Uh6)Q-PEX6FO`*!Uicux#rybBEv^Of=7;G?SD{2{*+SQ($nfTMJeg-rwDsB zKJSI9)bJqv9A0LMp`xjj>z9j9g&}0I1T}XZTJl#aw^QXYG z@=bH72nz~-^Y~k86&oB{vQVF<4i!H5jyk9+?PLju#)ZrQp2Rv)>FZ>Wyo^>!_G#)V zmJ5vTirvi-EY|^|)6n0`h)q*qm{$i5`doCZbcLg&qL-4OvM!%~rMVMd4MB_=f)t`f zgkyCd9I7O{RomvA<}NO#t6-(9rb=tlh}MO<;T05z>&zo+Eo>Hq%*I%4neZ3w8xRev z7lW{z77cDlJlxzA4&r!x_Ep!zJZsQV5v(ieyH|A?2#zJteSDBgiCfHg`zcl9df}Q7 z_WS_w5-F%@40$HLdPtmv5{wjA@$%epCKQ{j65)sOIWAri&n#@X>n&@2_pR&|m6@b|mn8%3iFC9@Lo}z}O{;$~H*lJ=qs`*g3 z^0_wg_(5Pzv%7o^R7!^36B^5T7P^!%UtU6=Ut&1z2pZUxAw-nr@;_Y=GFmN4H^*gf z?4{G?3WZf{vF+R~;0c`N{diS@e>=ip(V79CR=pCYtnuqLj&3?Kr&Ed0x#n=O1@6vFIr=~elV4n2}+FZ@SzRQK1ZU9ig8AukqM_Y?n zIhWF7ZOZxrk6)Hw8Wl?TZgK=kUW>`%sPGG@8)ycg2riPe8~>G9C8MAQSi*dt@B{*a z0I!q-bz-*@4d~_PBlNg1=dk8)3-d7y8QbNc1;|#c3amw?u8c#~(i{GT2j1fxI_T zWp>nVTVu0ysGc{$a8wXfbFzZq)V#(?A%ld?veP48Xaphp zd*129d~^^k{AmFCN#3msMU>V>T6N`jX+)Az(~DYe1rk8exk`cYdj$!3QO(h)YAkBEEf3 zuHJUkGUSC}!K8Ek>C+b4({L}9aoJotu3;anZXgdKbntX3m3v3WhTNi;W=<u({)8YZQBwx>|3PK4?Cvij;D#!GXWgA@MwR#sfVjsz$%$-vfcZMwq|Q-oQO$i8;!b1J z%)e)@?V44#ygpK=a;>St=7;!h&ynZ>VQX1;2t4680i{29Cy*WEmY&Y02(dVGAuu1@82s7~UFNBS_b!zwCm^vydRP6YC8-Lf6A8`(1RI3I+=T_1pmf zarIifXAYxJO}^sb?DG%iI(KkNv&vt|;@=$J}K6`ctVwSw4G5@x18QpRh_HunQI)@Kie=+CXp= zEeR?BSO=CmG^HD>c7%EBi3JdMC#?Cn2*(dp*hgZ{q<90wxI;DKfx`5{tKw6(CS2-g zdy7e@8nIk(qktsH*7#g#;pn1jXs!3yp28^(^VJ!}_w5;$+A#hV5pULZ5}v8#m26ajTIbJ*Bcu8u9g?b~{@ z;ZV%=b4)Nw8XvfgxK2Y(vx|@$ij?IsSxj!dZ+J$BBd$4W$%A0t+a}3bbRDStK&5GW zFvxwJjW4qbP@K^!o$umLb()l%GYRne)UC558h1B{-5Oxxr1;LKj&?1abQ zIG1lVYG6`o$jbmA5QX!mloGGyVrZw~V_QG+=EMSJ*N`Tdru_4ruE&_dy~IvT75Nsf zcaFN2(>6n3yKx=HaI8aVQ51y6K|D9wjpuVy8R3Ua(QyY0#|XerAz~Fm>)S{X*Yk^x z94>7{qY~pmZFk#8&;2A4)IO!Rm!>{;G9=3&NSSp$oTiF1c|k-ocOc$~to$;=yDy^> zERdG^^&i4#`*)?$F{+~7K*7)*)i9*5Hv+yEO^jj#6pDGa*qET6SQ1u|VV-_N1^W1| zLxX}XoQoP_L}{HIOrr5X_&@?$oi@`y04qR{&^QZv(z$DsS4Uho!I@m$avs_M`CXd2 ztEI0Mg8`~7?BFSX2ptnzqF6{F+Q3>O8Y@JP9n7*i$D3v!{k%23&{kLGo{mK;WnwNK z5k0+r(Dppqbp2N0Jc3QmA2h&jnutiz&)s(snDEeRs7q89)W~nVh3;+Jb75tJH%w)} zSYnA(%zy;WI~S4=exNd(%oFZdx{h1v9a9n44X4k?F@EhHu3P$@ct+fb>L7=xx$GY6 zAf3yq6P3gdWKQi3KCC$rKms71PO9Y%B`-pPo_I?BuLm)v>eiH5pz70F3&FnwUu)I^ z0>6kyL=z`j=VU9YzO>?4>@kthM}5?KOq(LKOI3OUUGHPu*yVc#(Q-^4Wyu`YNWkQG z9?1l{AU!=$kNQ=brb2Q`UU)(Kz_Wm)%mL7XY&gzSS_eT&LAGYh<0(UyIt< z!`h0<0_Vrve|3FvexfM!iYBnnbhy{PBYsRwz8L=ilM5rD0-=eq z>qj$$w>6sH|Ix9 zX%jpWe68o&ZD(TZ=N@1GfcgkWJ;pCWCvVuGnP@8ZJssnKW1`~{K7@iX9yX2k-@cAz z%YgEPZH6=QuB6djqPR5F8oRModg{spJ=V-?=lk zWG35)tNxJPA6YW%$%s~te}tr{=(3}7e9x_LYl&)8S+nM-9_;Ls9}{&_93L4rRiLRe zaz8Jdz(>w)>0qLPRQ((+FU?Wqe)ez3q;pODH$cq4H!6=F9#~=p#cdkrJ}S_Z=Tcra z4P_Iwr`IlQ6<`Ax+NzSjncFFA9rMJYS-HKGs>Ll{rloYHf_d^!E3FX&i?gVdttfCD zbxqV%;xff|t#nDDB-dgPkx8$-UDuBB%H-d_I_UV79n*DEp^1o`YpSLzUR5cCjV!#e zE*s8#UEF##|4Lv8k8D_QXwCzw94>cSYfq^aI?yDHKTV1}<~Gnt)6&fHf#1g&#E2yx zHEGwKTlSMVeQ*UHS8@RRJG7?}Ltu~?JWnR5tN@Tpp#>RKw{nP>5jJvz>LV}hnnpc0 z!yB@1ux34vRyt0^T&3#2@CCTJW8++~JcQaz++KENsItX6RQrwKW`awbR|vCKAX+~? zJv8yfiNsr-D*Yu7?ZaJ$#Zp;}DbQ>WpAYk()L8M~uNOBf#uk-ui%MKFhuC6ImEbf)x^RryFL zoHP!qNGKTwU!&6GmxmNMq?Z)djU+pQl(Zxs$T`73CV}VzZmpj>$v605vm6ekv(){3zbX(>9;-!;&`d^tV7Vx|CMtDWtNk|a9{1D0`w0EeinEAp8|&Qj;- zgpFRLfZHvO9ARa0%E^>6hLWE~V@D-vY!VG2TI!N&OuUL_RlHl#-=-yPny6A& zpd{*6-L@I2E_w<_DC`KM$5_6%cK$qA2>eC@EPqjmBdnZmnSY3*#kp9#P9mU-d+|&k zE3ys{)9wdPYBh+pzgCAh5<+ILMl+^IsaYUNk~O=fv>!eZWC*HKw5G#CcU+l~8ivQF zFg@1G3d)>xaEg@5+Dvebg2pTZdS3m$|;Wt5`Y)^osK&&_^EH-&@ z$KbcNcPjx$Ig~l%79wfFeWt&~D>axu) z+cvvw+g-MC%Qm}g+qP}nQ@{5O-pqPy&G+9~dE;c}xfyvQPQ=}N3*MnvKe#Y;T0aN2 z0>_T35OZQ1HBfvV8=BpKtdjSXDh^%>Y*7rG%^HPHk9cLqA$fptT1a^dC`Fh=UScYP zTe;!EKFina$5t)o>E0HUtNg(Hz1)}3H&@qpWmr=P^U9DayQg5QU_ut*(4NLCD(7fh zQaVwC2GTQVPYUK=Xn}j;?Ry)1tPwg~H{!fL&oC>u)yWl=5Gd9jtjLR1Togb=>x?%5 zK5CLScR7f9`~#w)h&FecBM6JZfDrdDkGvfwrWOA|+F_$RE5UnoFb)Kk%w`&!w?8rN zq{DEUGNeE=dwCnq&xaS~Yw^Bb*2`%#Qn~fG*5!-+L$(L}04~;wHMDRUra&6$A3O0x z$vDZeFrrC%wO|W@d0FPA!GRyiAVqjpS|DRXq@s=F!imEj=Hn8Km=|G(Yc=G-h-H}+ zI>*XA2Phi)g_Fq#^#zn6j|}Do;S#I}O7_KlBZ4_B%|+B>^Si;UJ__>m<-d;2JmiFg zyYnQfqkZRxoC8oHhOE>{)rk~vumTxNEnqPV;Eg@73ZGJFCG^lN(8-ccj9SVT>eFJ0 z^8^N~L;-V}gupKAVaWukS?wVzsZU=h6K4U=sdfm4%JsYU4y+RnYAFx93`^09TY)FY zF7Sp=d?rtGJfhtTffh)EvcLxlvh`r~LsgguLp+NdY<~{CVrZ)|^09#J`9n4$0}_oh zu91+<^EgkO!lKbCPNIh0kEG9|(oEJJppjdY{_^qif07}SIvgdWznEc<{%EI6_ruL4 z#73l|RUD;Aa}^xT;d!1e);d?gWi!5?O$*8pQg*~n^4ZJ2N{GKXGJa-XM2o(b@%S7u zDXyftq|_E(dSuH)&J^wq5@KmMaSEitCXK$Ack&ikd{Np+JXAdu%u0w%MEc^(4tj=z zfQg3XQ+}VZH!c40>h{YN)ckl9o7sH%iGsX8={BAS=kDk-*yCM%+g96A3 zYr&-1*x8o9hvlJ;f1lczBp@1>Q!Ju}lL?M((2L5UzOi%2I{i{ax#@58;F$wxV;$Cn z)>&TM&eZFSg+0Zq%h!DgA3t7^Jp(mJC(uZ*@C$vdT4;>_pwP2BicyD`QB(ejb2lEz zKCql(RYI5i7Ft()y*>)uM~L;K9)T7_yS5gs$ZK(tvGAB6f}U$+L?rx=D?~yrs)mWl zUZXw(kL_8T-VWcmf`T&YM#-1Htu4J!!orZ20CYNcg;>fY(fsjE)v*PjPyOz7+g;2k zG?@hpu#b?vxsQSpwOHg1leyTHatAICk}d+da;ax~zWO%!JG=^wiB#>*VGF?8xTyOK zi)JmhXLF^e2hK4*vpE#Uq#pl;ZN;)7`s?Pdel3lLz;K4vC}vhxZRdHa5sND&W|@;iyY-%8Ss;OZVzb{Y2T)5jm5?-5gv?bHqP_lZMjfRq~X z(+czY?uOjU9gIU(7^LDQa)R>dwYtvhmcpakY`rc|XVDnxP0h@Ycd`-;lK%V2RI1+y z`>FC|y>s+qrc3?#NAz4nj(9%hu{#)TTPcJLvG|Fo0YD+^VvYv0Y5l8W&xI8Vvm|u; zf9muh18yUMHn@d^q zbs7s@(^)b2TRX4pr~+;hjrW;4g_7gOo*gwBGmZ7Nk_QkpL}?<(#-e36W2eSZ4N(x9 zXbEgwcTj!fkX~@D3r-yUS=o7mb8hRTz#&r}g=dg1HLU8bg!RSYobf9nRw2RmdE0ksZ7Lfim}U|sRVMOKUk1dl3p^B*t z%;k&szBB>#4HfWS$848|s#yTi2*imUK2Wc`A$Fs7+3KCdf+;AeFEQbTd`l>U=tUX& z(0V)dE(u!_i%{8=aqD!RzVi75pB*D5ED-6m4?yQpe@7B|;zq>{-vw2VB;ogb!+oS$`Up5uG>ByPWb0iZ05TNYP29BaRV|i>FiwB(hd7n{h(l*j^$B zFsf1JD(<)zW0Gf2ubkbDfLD+uqE0fZFnxNz#)ymW(WKM;^m1|kO%lBJj9?fC;`voq z$Dw5Afh^-|=h6>7<~B-!kSC&3dGRyFh$4$sRj^JOCXC?LM1#HD3s@?=Kw82|p`#x7 zEuw6~kg6Ld{{}Awt_;oYhmYBT6 z9nSz#Q@1*oWFR@HfHjY9&E-2ybd^i^;gZ1%?+{An#f!q08_yM?TyEUaJW8v5QqY)e z58GRqdCrW)!{$q~0k~j>RbOR`W{58Ww#p;q0fs#rEzzL+`<8fE*Ep=<8UkGwlUYg}3Walk?V%*+R) z^JCSlMCt*M%COSv;R`mq;*Oo(UiIh8TD1kNdAq7lYdhZz9NWsY>emwwFzYwDx#y!~ zZZ#q_$u%l&Sw7PtnJ~l%fx(Ac=)2i5YZOY8e|JAT%tZZx63{_?EHTvqJn)mVdDthai`Es!)vItl2<6{E6 zb*#Ld@^C|6fwVngK2-VICc^#2{Zp)iBI^}rWW)}M(Qe6|D6#wD$qRAiBG97%j0Q8! z?r)F}Aq*401PDAvWo6nrASOk=mPpudD0W#*_v zu!}z`X@Ex%&=YEM*Wj~-%qjng!cUY~2Ql$2OmNC1lF&YWR7v1>N~*b-KB!05(_x&z zXLD;|g9A{UPU^}rQQbH=yEkU~13Bvngf}v!#|Y;U&g|C_#2^pnJ+y^@9n97XdFMaX z7^yq8)-GI(^J{9E`7Ro`d28}f&DFVpTuEoQb)D8p#Fq28vmP9)IWaz`%~h= zZ|c9@mF}8*adQBA;xbgU^;P{CjHD5mSflHzv9shXoZbI4$KS@~QCu|!CuQ|lTKjcT z>mUE4C+s5AMMD6ZEGociLSOv6rm;un{qCca!+z{Ry##L3Q|4O z9WNt4Bom<~L(zojTRr2yZkQl^a7JsP89=~tBL97BYJ0ja@+8FKf{o|v-`A(X`Mxa0 zg+4ebPdBGWLH$^oa7}TK zoAq<8sGK8iu<;F!02I2ebQhw_vHUuo&)IU?8mtpc@lV0dGnk1gctP^BQ0)5;sIkBk zE$Hwq5Od^0+yK2c4C4^EU%6w6FD6Y+K$^(GIOG+~q;{9$qToJ}sI<^oPq2kb!%%9^ zj$O?#CRXbxksNSfZ7q=sbD1IDvFQxp?@tF{If}ATHPt{r`2B7nY_8yFG4Ta$OcNY{ z=Xwm5Ykq)b>5jud2bF3rQ`3>g{!Sf|HGm->-HCfSN|Xhk=#<(63eWS^dHS*vkTZU4 z;?Z}@YQ`jhYm8i_m-{%&!(kihk>lXjZ=3!yeKQA=tC?v-?yA*hms*+n0y@Thj{Xm+ z#J|#me^Lo11}2vO!&Jx4_#aXUcBcPMD$${4?YK6G{28rhzvVHU0`TP9&KDZ{rmJv~ zkzK45;Snqd1eQu`L8=n8}pvDe#Op)#7iUiH_@huvMh{o8{D2jF7n+-5~(_4Lo? zSIaz^OIlrP6pxpkQ}5PSL~eaNWR&a_@K5Q(aTD$Bh8Sg-BL0~DcyqBMnUAx}d5od5 zQVGWhU#@B{bt?HNCh4(tKYS#Wjx3cl`@h_P`sPi5uu+;5y9^cUm?OhY74cAddK&Azg|sf;`Dq02s71^&z< zQ8}&$!Sx~?pbD9#83Jf}No%|He7sCf7)j&8UQg;(wzF6qme(CBrw+*i+h#LGNJ2fv zvaSbl+YPNN>}_w*N*t+iP2~|UIPwJ*CZp43o5|K%Ht!eYF;!35pWYl7bEyicy{<=Z zCLdwlGc~OnYR2ic(V&v(Vz{v=X-sAW{ax;vl}VE9i`>WhfR=7d4Kjiv6Dr8z zWhOFj-e)>HmQz{!0|`<#Lizf0bA-YJg%>PGbHT5XEdNXZ&={W;6_}7AkxS_oK@i=t zE^qf%afgd(=M3VVEtOM?M!yaxZ z5nk-#&Fu-tX_8SSgLll0i8kLIvb%Y6Q2w%O3l+%tyDFSt{2EUXsROp;P?}n*`YM1% zjYqa)5m`RhVoyugE=-T4Mc0~GYQI>3AI`D(1&00g79Z~TT>SoEJXijVaRoW( zgRo~-ax@6U4sl2~K28Dc97z0dwu$x=E4&($bCvhAvgXV(MUJr`I!>@5hC(E!bhNi4 zh+rUM1`y(Jjtp2(Im7{X?RwJ4+*(~gWCer6K&K^lxb@46a>D_VRQB2rNhn={dHMkd z*wxw8y)?u+xGCA|+H9D=4Ktp&2HBhMyEM^YCwq935dV00=2THB*xqT)S6ao=!Xt9 zh(9@q(s|oHXiNWEBckMA?0aEE^l6E9<)wo@>YR)b6u}3w5^l=PI_Oo!*u&mz{@626 z>f<5u4<)(+B8cM;*OrPWZIgJ5!01h- z?Yo?FD~xHM@WQRg|J|{|IM3mE0f#dSKQPOX7B#c)E^hBc z;FxofiE;I2(@rjC-81+gh@@=0XHEP`Frk9NsP29IrXDjMB-Sf>ONxufE|xcBo7089 z1k#Y3XPL9-G^hZVLp&xht2QroWIXlzWM=*guu)bFh!g3*9|Q&Aa0|o)FbiA`71qd7xJ44&V3%+>0MmmSfHaG-csK^B6w} zdR;Hh{bNo+BE~ixawzjRdD`X^7Qygw;Xee^e+9^Yf+-_A`@hk?vi~np#eY{7Vdwns z1k+44Eyr|mZ0{qr`?cPA!DH&bcl#8L`OwiF@g~$NBdX!s$>X9R@Z0uGd@erU^f`XOp(WPYkyUTaTt5e|0NC>dR>&U6NmaGTbN(+Z~IPBram`>h^VI zKBNb+qBii&f_iiSvk{$+nOL%h|A4-H=_RKK4aLlv=y^5M)2_m$;wEs^-_jib5KKP| zINTH^X1X52NPBEHuWj_27fz z?V`qjKXR=djNosKQPI{JW}>?nCgF(HDCVvklECmocqU?}MxnlLy9uA~kLmuzbx`I( zL(tbn^9zwfFC!osz12+C3VGHQ7BV3(6;5hY&owA_EfArcA%Eku-ReJ9Pjr45xzR*? z<>11kK*jfB^SkDa<#Elz!JiwkWLf7B!po-ri7nwbk2Cu%K|z2%ZR zrP-3nJNdyE3H6pADoij_t44o|8GIY7BF>fK*&E{ID}^8yS`tN85LjxKwgra%sC4C+ zwtpOfD-6cCI3U{_jPmU*0h=Bj;ehJgDQb=U%yHw?d65(0-h5om1z`zrT*N&}I;%lJo7AF#85 zvA3@ZZIxi`eBSe({1!F=)LvUII{n^GcaMlp;=hGj>1V6CjDx+_ucTV6+2mBxP_Kf@ zOz*?QzB}0qVXh$rxi1exY`q221Wd!~A5bF6)t#18nb~Beto$CE>zbOR4DSk-tZjeKCKuXRNsw-B{K1R)e&Q$gKT5#O- z+TZ<6VYax6K?;(*Cz|n!&*%f`hk3IZI;&%=n^!K{G;@xEG!!vGrHV!9RD}7fZqB4Hze17oQvmS*w+4rt-o1vp4wV4HenPP1RL5{qE8 zFrmgHEq|akZm-`rZoPRPRc+7pyl`ToGgI1=a1XJoZ20)@;>}XGa0Fi#Co7J~S0{LU zxLvgg!JRk$?3tD7p1qzn0<@JnBI3b8Ku?E9RerBXB~|e!`J72E&F>o!*a%Zv7UuT0 zTJ7NV?e!p1A20ohPMqwP8qMg_0)Dy3U*xyFK+JA}MS2OD$^i?-x=1Ty0UpBqvjle) zpGJLJNS7R}a1@PO_kjJd2rA?Bv4OSph+hpGOG7)aw;#KY5WEZ=CS|^u*RPZgZhh}_ z+-3T81c8#Cx%kdWEsE-f{m@Q75|#KFYhNFgpD`kBquPb2$#BL&2)b#_zNN?P1N zxL5||P)$f5ahy+1GwU84KOEs|&)M&x!gF9uf6Z0@-*b=u-?=!$HUHP#9Y0+B@406t!SPV8cZstlnG8oc zF7v&dCx?{H47d%<^1m#!{a2 z3y%LD;6h2qHk|?OJ8o(}7|R3K;eizBkds=Y6iThJ8qXD&2x8g)p!P#6Df@Wau;dke zWU`L^@%H+fvA1_-`kM_>)b=jwadj;T(!SI_lr_9ro8cPoa*ddxpmA=U2y%)5#?I>! z)HM($+u#=WtLCx7J_u@pe6^2+Uzvyk<-9&EEZ|pt>KK?CvA!qLd4rfYw+9d>I9Cpf>_a$1nA{+8H!OVCF>e@*4%Xi78OS!7YO49c)eL}**r&o@|!UP(r{ED zj{J3X6aDz0g{c5;_RV{yTOZL+MQ6&q;8(Iel0N+aI4}!>S(dVJv`w9EXhZTNYa|iH zip5n>;2en-Sj2Se2~j+wL=lu8AICopx+BNGwA&#waxYi^2wl3dcKi4<%4f zragJMb8y=?QEa@_rRi1m#t!JQz~a@Gv6WHWY4IK=<81Fpmy!N`Ve7!Is}oeWaPMP1 z{qxKXowvigXhU@Eb`+7xa;>rX6gf>sW;3dEAKMp6jg&puaOZu&E>P}(8l1zWT+qb6 z@GvN#x29LL@!05zggQ%AOUQO%^ z&^!Ca4h8KRxZf9Y^K#-~=`D=D+}^nslYdcc68LiS4IHbduBIryu)IF(UWqM|CZF$~ zmU#I--VDtQeEA0<1~K&;(A*g+sSOs0k98($8Uk{3jJ;kiH&$L^hzY2Rdrq5wV2;M< zp^L^ujGUHTyLfSKp{o~m&~H|$wM~eZQnhLV&ISw`^@##=$%46526t&Ni^VW~NmY|T zn03xZgKzJyh*i|sUX}fsRCq}a#5$oIBz`R%KfL?6wNE3T{;# z$G|N}!@9uVLBvm_iRhH6w>vJ4L?BjI{4EHpceSjq96n6Yjj4db)Kl43IjpEw$^{ zPlMi-AyQ;!R^i@MI|c!!c@0* zTv6l}++KW`Fl$|4pbZbk){b3#Y;1V+tt;sb&~U%L9^B%Jj60e4Ow@nKM@qExLwldt?BJfSCS=lz0WzEnYr)(H-k{Tnd_x;J_!-tsi;SOk_x>H-hrwwsAGJG<#Juj31V z#qFWXuXbRG5%a$xBIoywDMuiL4$C?H@MSb@BV6RU+dtP{x=h{WDgr}TBvWOI0^w0l zh0vB}3PiVL#aA;nC$Daq=JQqz*fvI}?@7B6rwXpdQjr!Igu6ftQ76OhOe%{Ks>tBx z{z6+EZ>Sax>woL%gsfOCKqIxa$N{!oI{L(ujg#daDlaxisVs?BglKYi_z{35k!c;c z$E$zPi1n$b6LIhe?P-nLtM{3-ypy5sleD#8oG~9*PvVctTa41e(MYQ%(G{IRK+zLY zF2pDMd|qEF3m1d92uYapdXuIR!w+-z=mJafj$^_i6C$^F7QKQN;EY<z`KOPzp5 z3CJTvCtF9E23&iJ%?MYFjBI{5$uj#*E$(46^c~?+?>B5mFdo35WS-6%^>kv!4ml}} zfJi#AU^R*i;e?mDhp+1y{bY*&w3yHjL&eEiTJRvJM>e~1sclUip-!sYu)Y%(Yd`D^iy*lW1FDuI9)=a+L^*mvn9@E>~39P)hSq5LUgeZy>HQs<}K9qFgzFb^R_XJtWkmmbYUHIMBxvgb>%cY|3A91z{i z_;8tm7B4a)PA%1Q7PCeavtG}UDpSZdFSovF;Qm0i z)e}>3Bv@GV{rS`6dbWVhPL+1O0jvIm z+fzukBT`=6GS*}w@j zg@iO)CELxQ^p&a{%rv2|?VWS**PV2nsitJ3w`R0fK8hG+gs`8b1j6*;4wG}0Eh-yR{#rY~1AtrmjS$2k)4u+pM-?m{KEMPTr&F^N7L?OC*@(#}XafB{vKgpy z?OM4EjHe@56(`QkjUSf;$=!-%B5ye~o7`L{*Km@9n9f41KnEg57|-lDI@YYl&?bsx zpMSsh$n1g9McQqcATm4aCgB7F7295N7@Gihwla&;5ME7p_=Pa8X|oXZVymSgZH#RW zTtl&hD!dmt`8!2b-L$asX&v^xzBI1u@=^u z7_>BN7Lzu5IFZx4W&}A6IG1(GpIETdA79+eg>(j-GLHTyBs4>W!}&?2Lo4jB=JjMh z-T2|=Oy>JZYt_e=;lFlmTDJW=`|*ET40Bx^3PUmcVa8nvy56KMB!cg@ZXRSu<#vsz ze-T?&AGW#A3AjCo&zk=kqt-~+-o;WR3m$^Ek#)$7Pyex7hw7EEWURz*_M=97>&l2I zsqNu3ti$m{#ZH+PIE{jD%T^0Lz8K>x%X)DDRG?`!zc>ZR^vW)>Qn@}MB0u{%0erhm zs+2BSY%*9g3-i`055et__2uR97+^54B}fzRsXrr&nH&8Fh9d5sbH7@QA0APxgthbe zzCZ7d*bs;wNeS9YfzN8kX?A%t=PUU}1RrpuH9gIq444(bg*11%c`{jEPM#-=AU%@v zX(kd+eI>BjexP6p67em}_iBEz=?A=rX1#ppXn|(smOy*GLuGvm?O`hXg*xAOuEN+7 zLm2`C-kVH;8NZ(%!edNrR4!-!yfPd>Z1AE(;9}yTR*s)mbAnxy^+rGU{pE8c&wg?Z z+n)J_Sx_9@pda~u^1!wRX#L_s)1D&A(gG(1BX}PXRF;CVsFDQp4VX49gW@n?N>ZJ7 zLv#8-fmgx{INyJNkGS=n>q4>b<43(_+E);#?%j@<-LYk@wm`J8*n_p){)Q-sl%089 ziVc0enR{nlupt1H(JZ>fA=PC?9S zivvjB5AeD9m}ju{o3Rl@nWFpxO%YkR?L53&Q%vSz*yNlN;S0I!M+ZUboV*A}8dh}H zEE+;pUj;fycQ_RapoWeFOUsRResH-gZch%^( zpV(!MR5wg{K`rwDZP4tDO7khT)X+qIYk+Ci%>5YS~} zKj~`$+@@r-5@t^@Z<25g@c}~jzkdY{yGd_27WZS$!X+)MC9!6rWM>kgZOjMug1=f( z@xxYv^-!~*`q`kMJ4?uTJb&(&j`KfS<*k3Krv&K+CEw67b7z~xVtE}?>HgvwhYOMV zB#1?DOX8JGqe#7*sq>8a4E6a0x6xIal=VWuuNFGaQu2JnoUJ!4_6ZIaHzs>5YOCYx z+y@$H)|GVWNIVw|dCT|}s5@1R^JDzsw%(IFiGYq137fLX*v5MZx1`wfF+`9r8$q#V z*PRNdm?+LZq4g+vLCX9U;vn~M`-0`{Fzf^~nWKKF+YSuAoFrPh>-5-FRF!zW0JK-I zaQm?%`TAxBQ#4`0sY%ehO46lTKyV8+&!bjA&`-qo^9X)ceU3F;uB1PyUTn0B?bZ2d zZh*&VrGmgS0h;L*OiadZ7-R5Aj}a#0U0+TUOZB~t`h5ID&P7Vy?GMPs_>5A%&phctn|=zS1SA_@ zN1E76da?VF$ROTAP~RKT;Gry^1JN9^+=NLaE}W8v(NguG>8>Y|@dPq=kgEXbJ?}o0 zFUsvB#Gt=qI+w3RRw4p<=}YV2rW14YS|fBJqXcs?yyD1%~G4JPs2+x4o{XgtP!dO3Tw}-Sae0mK?hs zBDRIqmMr4Np4~|9G@bLf;Re&Z^HDleC;5HdNwDBhYXZe$49xd$RpFmZA7F8QCN@?> zb>yVvFA;_!0!G%PHp(bvN*YY$d8BM$fvOnD6g}Kg@HwtbDV|~_o%wH4ZN@A)W;8xcfDj(+ZZ@4GENlmq>=pNkdr6NB{Ck>``j2DccJVAb{#gA6DKHJm9Aw5?y3bMRNCo2Y8;ws%qSdw@N}bpNCKLQ z0n(NY(X`g&a&^C4{K`&E!1?Gs5`D>dq}CPLe?2^z(i%bUYp6OU%1LdR+pVk}akh}d zIUvSIh!9+%`GO|cY7eZv)yiS_K)((#dQ8fT*$%Y}$-$d&C| zzONyyVNhcI0HF%k;2b|EO)w9`m1BW&g~0}adQ!h^+A+YQldgZ?xt790cL8UFn&RDe z4(H=~W$F~sDbE1VY&Hup&p496cJJ^TtaGHoR^yf$GRNk@T&So>9;iozRnFMwDmxl` zG0>*f{U9N)Gt=>~rq)qL-!qqQ3T7MG<(8@6+K)W!(V~jcJv=L}TzoCPMqDkJapFBI zrtFNelS92}h;zgd+Fvh>C3B+%J`mX$=okr_Ss#?%GZQ5e3^>?4)p(2t*a z^bJX%E)(V7Sm`LcDZ5K|{*YU|>-0C&w#cJr8Fh+YI&*IcXOwAMJ|N@Ld$F%#@Oe_> zHbR+nnu%~_q6O%Gg>*XYD`Q%hdB|Mh{rWQQRDVXFrHMFo)E#(iY{GM^JT>aYNv=H4p_Bit6JT8Jsj(iaL|h7 zb8b4dtD!taIqc3;~Rw-o+ zJHp6>I|R%fq!MU}s8+m#DlWfq6&_uPYh;@B=8 zpbTY4Vk$@9YaX~O)$5L#t)2J01<^`p6k@#e^5R}ILb|1f11G^`R@zsvN5gbIJMUS> zZHkvwt;RT?=9w$VmA!xhFru@u(Q6fkT3ql@l`%fNoZX#w@(mPa$S4i5%S&+O`}Ztf z6ZFDCTz|D=Yq$R*=G!NRody*0WGN6A}YZ3+S*Q(Cr`%!UdMORTZd( znLH?cW^ckBq{)%kV`!H!I!C(=RH8{pJ9F3g zu7!xyIf*laftU|+j$TzphA%wpE5vTSz%Q=Yix;ulE^+Nwu)a5&@*qf+`uAx=T#r8D zE(#;u8CL)1=O&)SRFvmROqGQz8)7q7B~Y$aWt+4joRes|)?Qt#VyQ8=1kf71s1nH2 z&Ot!uAtF}u-)@k~f2!J!`7-Ic6G#12e%R{=K0ia6_j9r1FD^@=ikpvi&{qf{56GDZ zzrog)Zr^!9LMaQ8&`=o&)R1!!jV_)mD+xRNQ{GY_otCH+Y^V7rw`VR5!UE;*Z;zVj z4*!7OH*^_R8ZABrgxEZ%-&Xz?zmpVa%I<##D5qLeEsK=YT@fJFVq6_h0BZ zJnJ$Ftt=HyRM6%Ou-|GS=Uze$tpxJ%3uzcrxzr=cfgRf4pjr405CztHs%(}7&BGo8 z(jZWzelR}vaW~BvoUags%8?5b@wimDxjh(0RY85il7wN37R~f|ZKN0wr_L-7=BOij z8mSb4oD0MfUVY>OfrY=H&vZCLwu?y{<=%5tk5GL}%Y;7QB&JwX-sEX}d#@`i_e;;X z0{ZR{4WfdrA1Jbh7Th#`@9>!+i+S@a8Q87QHo;=Gh8&d@xWKs|=F#7o?~ry^-(pGG zChuTHvSvwh(4J@<<_;7%!Qzp1L1K^pK*o}p*KcZiWZLk6yOi=nUrxngwz@awy*V?U z@$ODmu7l;6G(wP%SChqJc*4w5$r?Wt@!sNty^0cTFUz}*>6hl%;?1{1DEOn1k-s0LMQB8UxP3XO*W3$0H^)Sg?Q z4N_caz1#g7%R$2=UhsB&dAs|1;r&If$s#13H*>w~0K1mIQ~Bqu-^|V19t$=x=XqAF z7DW~$i!F%4bbe+b=vkAd$Y4BoHZhr*P;p{oQ#Luua%L90DIg<~sfjnrI2eNJtkERU zyg3ZKU&_H|U(AR^ID8FGT>>%LgB+nzmWB?Uq`8w2T0dfl;DCl%cWH%+9gg_H@k7t%4YJsBz|AaMgofd1YdyZ2-KTTKJ^={Z;d%MLW%PdVq(zJ4P-62Au-t>mkSC9Iq>vsGZedcX# zZn=6hHK=zu972JoAD&jIv&|TitF{mI$5N74C;Y9A05-9v&0zLaSX6)Ks`8T&Nr=_t zc>%1;p^a7bq*vLf&NsXk1rbV8A#mY?>(KgWc&Zh6 zpWE~=9Dt1pQwKK9tMh7F`daIl6j}>83T^mUD@eE~ONU0UvJ{Z2#Ae4fBYkVA1j2R@ z>7GGTiQROROVm6f@&}OfPEI$IL z9H4yulYTad_u`MpZE`96PMt+*nx>@Kcp6kIW6AVe)GGpM)r{(u|4${xsp8d|Fa*5g zbj}%~{&5-)uG+ zVjO3n_{5aGp;*#{Ccqv|bG@oB`0Lw|oL_wk9oJ(aRe)QovxT3zNr3q897Y>i*1(hs z3aCYwP>{x>DYvmfO}3aJDaQW_1cG_iH;MhslsC6R*uZvs<@^OIydDv5S;QIdx@>oGO2 zBZU{FllCz@8aQ3W$o4b{Vz1qbx@xPjRzwEJ#__%<5i{Dc4+?+o?zEL1-Kp6+C|sxa zU`KnY$icPoQis}*{iT25dx_>NuoYP&UzNW#IA&_bZpTl!qKohtfgjEE8DMW(nOtly zn3T6QBRI<)=towi1qFRMGo)C#B0U#`O=M&0CG;VW!*l&)v4wA;W!k0o_UgOl#YZ~* zo%?7O7@iV^2#IDQm_3l&+uw<1=9YGPCuG>$evlPzVFGMXj1V8Z=@fsQqR|#dIN+nO zpI%sMD_R|ONURp|{B?E3!D?jG$7$IJrVkaibNj1dnqLW|g>{w*k&G+23LOqzU<2z+R% zQf;p_dygK)+eCjjm#iO61Wy<8TX>QxR$w&x#iZ}0xO-WRq^xAS>T z1?TB#0_157@Z$90l$c<@w7P?QjGt1AIHRZq;-gJcqhL6+Q1awT126(%UlykM;Ak-O z!MqRYl5W3eslX(Vooqd$4Dn;53kV!474aQkYk!uav@41Xh*cHbi_Q$m6Q!J~O`2}bccOri%*Gu>Lj`JCS!fGK_9hS?wpl>>sDjMA>+7N=qPdj(x6S?s+N}mLGLokaTNT z;Ua21D;#YV-5si&r9@7QWUUMw`X7wFV{~Rww5}Q3wrv{~^NXE)v29mu+qP}9qKcD> zD;3*z=bY2G?;YJ|j6VC<{Ilm?``21?u6I7KZYesMCv#(0;Y zD9=tMB2;|46Cas%%G`Dv8s1gu8|wG!X3A6NJh`{xBk)ICnoYCZ*qb`Dn7|EFr>VEJ!6 zS~yt#haN3<4&+kKpECxm#NkJn4zE970}u<6-R%tAjR+@95w%2qB$7w68kjn_boJ(+ zyj^Z5l~;9Hgy~GALj)Sxge?QVpNAz?!OzkPs;Y|P{Ckg1!Vf3BsO~*!Ob_zcQFOMxv!!s7LaoW*3aIqA2TjoFCon zHel?RBHe-S%kUfWl^;W&;FsScXn!89Dz0i(!LKjYuc`5_@w9KE&h5s@ljh!wzY#1k zT&ZOwd-XJgg9V=`?w^5_q=y|@#?j1YU~ma5)wE^uC2LjrFD3Mb`N0lT3M}NEz>&J zfF!b02f*>{u12)O+17SgMX4`xO<~pbyr?jIb46$OXCM1${c`%5?f=*{{=GRnzuo<4 zk4V4C%*;^I?CQ}a)_sN>M6orSiexZ2IuPFCzRoQKsyEu6z{uaa-o{4vx=4qBpX8V* zlaa<#Tgo{yb1Qi@^om!MO z)Q-I9NPc%C~*7+=c|D=3-^_2QAYQS)Ua)o>dX zodx7?8_ZRQdfPgD?%B#ZSc7FdMRClLFOYO3ZO6v$7DSHsz+=pn)CV=YPiyJI0f0ge z{WHPUsf;x$AW(^w}du|w288xJ-JF{-0 zMe|cFpeCi^iT!hjxOTKR8I1leji8XlJ+PiV5QmATetP_wVHTcCi(Kj*V}b zWa(67NFxR{5|r6DRkYXy1?@krVHBm)7d3X{p>&Cx5ywj4Pn=^5QU{5$b?qOg@+GuF zGg64_$BKl9uqVcGV4Y{X414$)+H}Dn2ecC?JH{dZ8GvXF(}$^KC>l&x5=+mV4Q)tA zU0p}`STgycFfzZ-KF8x0`@^qjH=Y*ul4<|vFkScp0{7%>*$vFTw;zvI64-J3=C0zG3?$j`GjQ z6CLx)QOh?`B4(O0)&dXIR;TdPBn`V2)#!X`c~9gwbupWEVW%2G(ikiL{lS_&3_URn zM@LQ)EnFXdz);nT-5C9HhJH6vhY1c@J3O{c#fMx564{Z_x;Ru~h?kEJ z?E=<17QO&g?zp53pht~Q);cNBksb!c)2fOCBa+*|yH!Rp3-{gXrV~$fp@^7%HZmdz z8RQAg%lsjg_`F|;mPm6PE`>clD%celAGE4@%^2Y~S>2oVD#aj+M9#NVnJ5EHbp`sz~ zCI6hft?U6sQY>!5bJ8r6;`@2oNVok>M|CBoVE=+FRa{1yOmS z&w|~LDb2B3Nf|GRW_i_f9#?}{Ogjs)B+FN%y!|5W$+e_@IbKB$(Dp|Is@qLI#b+Zv z(WOY#z1uf-PS-|r9vBceauK2o4F%`*o(Npq|Mb}YiykI1oRct76qn|;WgDAp?LLAg zqfkK-X@I`QnFF54hxRbU4Gu$*2k7RXbk zqF-*6DG65a%^bX+a$YRZ^-jiIN2{IoPG)F*A%j>v#$%93feouR4&sw?U1VQ!gYa4W zmzq2PyCIV^F||<;Qm2}Ei^g~%NS(}0Fk6`?YTg65-bJ*KPjC3^nB_QRZlCQoXSZej z^S6i0eey}uwA>(0m#%ICN*P!9$LTjc^DUC9G?f&{iT{g&nKLkwnifjK+LfgjdF0@S zI$7+L{nYs##Wj_|7fmJh3F>OR24SU=(e_f+o;3LNO*q729h1xKjEE#JQL*;OpVeuuz7h@w3iZQbrK0l4Qd6q(_6N-r*kkRL zet(gHRzB{Dd$7Jf;MJdvF~;8FLy!Uu@YIFmYxOc%0<$ z9rFgvs$cY^Sd?Udl$pRARJRpGKAx_b zs^2cT&h?_)MD`u-+hPl`IV&fkQkR2a?#Hg+!E ze!4PKO0QH(DQfC#wN<@oFV#_-2qLA!7FGouzA*{%3BeS}DP^qdOyBbmciwNE+*e3E z{=}G9B1Xd>iRKm~>>>{)*#@PeWRu1-Aq(~_LqD|;0a67ww1P9`SV}TME98$GCJgz( z0XMI+`!<4=Gr^J~&Uc>y$^Pn?G=}aIt@}h?**ZUYi18IQgD}x;3TxHDu0=4VtP07^ zAEhXBX?44rO5@`}hRy1;MX7jGF~aL&kK9ZS{Wy}V)t(Lx)}D~lZCzG-H;S@GG zjT}8}yz#Fh{^Nn+EXb}1!BlA}vg+vWmqnvw)UX?I>HQ(<%C6fhos)H`Gw#*1E;gx2 z4I`$6Ye!&TWZQcyyQ8fv7}rePHHD1h(Gi^FvcSmv<2|#%ZH5!{Dr8!Vc`&Oxi zlB8Yv-SwgdfXg?I4@u$p?dAw|nZmP}H@b-BFEJGE7QuV_uJ1$k8%Qg1xS;_LBJNocO3|Kmid zI64~M{t95t*Y8!oKl&KmkoIS0I{5JYbcf1N1yAud54>blngB~@aI`lJ#Me?nWT=3`;%WQ0 z<$J$^S`k#7Wf)Z};8T8T%-;1eJdUYI-T-($URGw$fg#eXwUK^aKBRk9+UvEOs~ok!7IB1EROo)1>|DOn$N@Bpqbm*RF4;0;J2*LukbWT&KQMdz zfBPW+)!X>b+iNzi|DzAW`ri;gI9UHj#E&hVjX3;?#GhB+sAeogPM}xi?<&Y&0p>bH zQ)wRim%r8nOc_>98?$Zny~m5z*JoP<>+cwasL7h6OwZV6;YG;J4;b0lc1I$|U!2qw zepl@0-(T7Oyg57L>Do5PnE!z6hcKB^z5obXNp?RPJE79CN4c3v^>ICnd(!9ohYoJ< zU44wkV@qlfl=_>W&9}E}E$jGo0`-m+%rUBDaAox(QP;pnzaYcA*>DrT^FEDWc9_1$l^T}5jLJl8wS1fpA3AJzB$iYm=|Tk6WmYFyHzqQCo1#?in6-c z@f-S`P1q8VWgR(t-T6yMPY)>?>G+rNZ6>+CvlG$yCpG=8SSc@ z9Hnl9gd3(~8)@oQa~pg*NPe~bdl0Xgrz@6~5jW9K06Wo}JKM-NS+bph6L$tb zp~wvptTWNZe3ihqp-7>7i+_I3!b>o2^O2-H9jI4^ZR<0iWdPf*tG0McN6Z26@?ND> zPRHJIv!{aG`^icLxYZ}W@I{q4s8f!%)z-V<4B@bp1d^d}Y(9ai+>^_?j?ON>m$Cd` zaoOQjt2Xh0LqwwsbQv9aiSU{0DE5!x59FHprZQqTNmOH%Sk=GFx751zV1gt%!+k6` z$NvyO71!44MFtb&F8=tm@7hH9(1TrS0I&*IG)v>RS6BSHaZI}~frq3Blr2(I-HfxT zsJuTu;4!QyU8I$FB4QS(98#de8A=B#=8g@V03l8NHw=u#C)!+F*T1p z2s8WU>xcwu)Cq|&hWuS3sX2GZ548-KotgK_?fRAJcS{g(IdBILbtG+DP)w{-@Bxxv zvl;U%711`{XnnD3+3+Q^GUGo>I1xmR>2=v*PR6qGanQEr8EY4*3SjJQ=> zoomp7@wjWN#fo5Fq9CzB*HzIZ_!^e0Dx(d?JPIuAUlx`5{rod}REKkmC7Rgff z{->G1Skd_>&r0~G+S2dHFAK!Vw``b~=C=(f(g0=OddpGEN9Mc5w?;0~ca(%5e~YFx zA_zy}T89rvVh*Gg%I`Y$SkePHJT8p0yJ5MELBJ6dxlO=X?gOIYhgSys3PvY2;gt0n zPl7dQFH;1#jS<0{b1fBB*D((6N_;zEaP4_mpPNzEYbcc~@8({^g?1@L`FEFN8=fL+ z-0rp8bWkDC$pJYJ9N5nsRzD>r5k(4lkBZFy6=~YN@p#K^M3hKw{QWl~OXgIgB5GYR zbS)uTb&0f5N;uo-Yz(h;$?(h$NedL5Q#|9uGWOK|MGz2r6ApV%XOyASKOkU?rY?~G z!*@$pN_kOIwQbA&G}r2rlT+oEiiz;T;4y&nKw6!%KqiwO09v1m5xh3!lwQH$p}9Ss zkVH(J%m@zqJxuUFO?yo`h4pdq$XM8qC0;{`w7n*hnRiiMFcc$BF1fk5vqs8hORXUI zLVNcw4GqLvyX8sV=|dD#&6 zWV{8UxuaEsb<{ztxRFO_0;!L=Xakwm;u9ytLRP3LOT8S1Mg_c z3c0340$EY~xKarDnC1?ykQA1};w=#pEshyWXBL{bLDPszz>-WyFj{?1PwSOt;n<}e zZ2%wbI4RpQ67I4ucX_7Z6pX-R zM}caEDs$dIwv1C?@S4avxP8#@oix#?pk&)4MLUV1Ed^+~hUa?sr>*N7u)5UugbP;FgGZJgc)#&YHp?DhP%tw|V=+SY(JfLL? z3CT_jR1e6y|3q2LYtI(Ev>o_qhI=yS-9iEz;wiKvq&2^cy9rI|xKf2TK1%*r73i|H zsn-nNQiL?h0k4GZ;D^IcS5g&~u1O%`Lc`|jg5WZAWw5>3gmxL^ZAW#nR@*8Li6mM6 zn%01*@-HgA^v@99S(HOdzR1M!Y|~>WftK9IzNImq3Vty$BGQnW8+VmOx zvDLl{iA8*U&yZdkxs2vc!xFeCVuiGzDRq~xi|;~4jH2RkCgMd)$^Zp7g?CUQ8eN;1 zc0jii&SH-7v^&)^ZHt$&Eh+T4)=PL*>6*+=F05- zR$KOzij!3m`a;e!E>Xg8f(7<)S8B33OzL$BH1?cd_jC5U$^=3{@EfnQq1Q#vSSZUBxAt>qI z_rnd31A}<50crROat&cgsfPvTa7gZu&oibu~lgd~SiuI|hw&#wu=0l+_ zD@}OuxKVp~2JQ~mqC-uxh**_0X^P-uht_MdQMNx8bm?*w3=NN>E$PiY9#tNiVo70~ zr+vSptuO$>=_qI3Ag*%BCaA!tA_;iKU8TOWO-fuFhcL2bJ!t3zvz;J~ZF)B4S5b4X zx7+|01K=xIZo8-rw9w{o+o8`a{m@SZFhvm-7^##Ft8-pT_c2N%F*D+M2IMTh?}0K4 z`{st4HRR)kR(!_0hVmNknRv0aQ&s&LKd8SUXUxY%tMcG4)w65NpoKGe;4# zD~X-jT7#Zl>9{C7z^a-^8{Mpvn$iPDdcESI5{F_hUr?U=>6J)LiZuSK^BPfc6_C7IVM9ZI4;s65)W&?{+RAUvLycnMgt8Hc zd~}8QG9Jm%90I5sB@0bVa&>6rb!ODboK)lSt}GH1WUwGm(oCjmGQQ>h6A>|Vp)V|l zs?v(H-&)5UVgh@zdHO?V>(;M0wMQDCWmtS+zvfc~27XyshJRyZ`3`p$Wkw@bE2Ti# z@6OEohyS3$!MRGW|I8Y_SKv%qq7I$TD9DoO0+Gli{hjt)JH*E;eMzsBFX^c|`4y0g zkcGp*yue5$twLSLw3HwpW0kmV^``mAZ z;gIZ%D$YrC*K|uw0#8%5Qd#6$m&a zYJGoNQr}V!U1cTzS_(z>u&_z|RUHuaPi!_mm`yGKVSv@IUXA@@y)MG?-vtc>ZX9q&fBOP-UH`V%oR^b0p zt+Vs8a{h1C0_%TJQ2t*~2@cl(5TO76LM1}AfgXF3&Og7k=Bi+aF%8G|Ac*JL0!ij6 z%cdJp6dDwBuqsdb z4}GO)Hw$mR9h>p6&rjj@WBe*p&dg-1ECRYb#>5j}UrnvmTSzKM?)Xmu?uW@0bf=i( zXDue@#U=7eB&^8|)<&e_vzzmGqpROS>64cBCEj0NA5X`QhexM}8T<0^)A_LRudu#8 zp06yl^&?H=tDB#PKc=^KZyY*`t`k{%b_JT522VFN48!<;JgM5+8KWmN&(s2vCoyh@ z4?afAE!P~l+}iO%8YgMx89se{9-keAN8{_KcLk=RN`6Oqu6gX$8PsPJ_N_5Y#Kxz) zNrB~?3dL_2twMXJuRV8eCoddC&eHXwO$|}}{dRb3Ptg23s^~B|QA+jMWHZ+0Gry>f z75}rNl;wtJ!c^8{a#>LiT-9XPVcOe`XWhN1$|>0oIsIF`{qE$H*Ui!R_m{_$=Fyd~ z{-%G2cX+&Zq^i2_o7YZL3CGRo!OL=de7=x@e(tuxPn7Roz!vRjOKrDV>L{6#J*^V% zwgGV4K+spd;{px3*CFr0&!P5M5|(!3Vwt+9Pi~NhpT?X%eRXr_&uh1H>H5zH1z`-U zN~&G5;rZ?jT_#_ZGB4k4gz0fgwc%u;)~0}%z+C!h&+an=_XqREYd(i0u%JQbCWA7C z*fIgz)G>qg2OVzJ=YizS9LitVH+~tVWZTU3fbwiwJ;z1i*0bQY^mL`PD8#pmwrypG zGxTU`3;-~-V{;6kDO@YTk52JQUYF`M%hNX<^^Kw#!wv~HQS(C27hZxF&tSZx`vkme zBB{kS-d&jWSC6$_sd4uGs?#1|G^E4s&zUW=3{NCA&rR1td<I(FB|<+gFsYbX{&-iJ`q zpu||`5o_;-^SYslM_mhIF?||88Oojhx~Pd_Y?NT(i}lp4p1>C!ez@{;G1iW7Uo1eF zQ9e~IwRZQz9tWMW6k332N5XS8f=oh<+1tA4pesOy{Y0E;=0R`2HcW?wvI^- zjQ9Gd9g%Gw?1Gg|6c*V?baO;N-m z+8+Zc?OB#C=pG*x_>PM!SqkZxT+#mMv*Z8Dn@5Ctf)a!P`4<#?LED-)N)F~Xw_2P_ z44$sW@S3(WXRQLxY(CA_zhq$@Yr?|Z*mOxQ+uxLbhW2rvjFm?F$8B$ao?y>?^(a+) zjr3vAQd~2E(7b5enD-NHTy$X`4RL|WH z=o${U#=cZM#_#^MU<^h`*};rU15jQ<2HTO0{FBg|Q(EPCPfqA~7(qV0s973K!9;>8 zK?Wo|OT;VL47;^Z;SZt>PzGKjSw|U=Vyu2JH&VO)_*$+5@<^hoTqUBrdW*n8oOKVI z?anDU3!~TxPqM@6VxZiz^l*dQf&LWw>hZ*WF2QOQ>GsWC9dgls6NGD@KuG`wphPHy6fZ4B^y%g0 zqSA+GHOXHx+UQY&_%S5z?pC0p-|`O@%_RgdGTH^zMc9Ped({Iap{v(vTTn)CR5(0U zT$RdMs)QXV$HftFx=S`RQzdr4So_J?y1gspl#D9(nrFJaNLA9QWePVMlh7{B;$JF@-$^M8S{ zyOFet3n&J0d7mcT_TBZbKmPLk&1cn6Hot_bT}0viV5jX-ODramn$QTjc5le6K7aSy zO_J8L@)JjhV{vRw#%Uo9SmuuTlYAYTYCoS@9#NwA`z1JyKnu%Do?&km?PiUIY6=7S z?jb|aX7kEZfP4D%z1#L)&4x(?G{FZOWyLBE(;Mwr=plDA=#16HDK)Af~1 z`&l(Eu5sE;=CZ)JD#DZXBO8$kBwMz_ zoP)2|FJ%8_5qyJkW}UlL|-)Qyt`_Qk42ovU|Y|>EcjKe z=dwN;ELIOr%kHM5rcQQA%%GO208{-S=*BE1$LsJ1V*G0s;dp5adL<8~_eR^4cdsA+ z`PCzk1w6@9kSK(U3)5sYU+8lW7;50bga1LI z0CFJRtA%x0fxm*`j5*HCa-Us7S%x0P$~{Xt*+M4z55&rGGg8dJAk2lG=bR`wfP~6` zQ87qk_{Uyg3;O3Q~o$Pc0zLdOk`(TJD7$XG>1>xPGXLu6z>H`?Qf$& zEVHyux@Z~mknTzOhdy?6rx5x8gxC3ma`C(&Iqk4x%nvZBInbfgkBCEa+jMl2 zbs5?KJOLd(L`)JXplbbR8}To|V(jZQD2K*RcKKUxyYPUtM?3p3H5`bU()0ykG zN@##B1nkmAQvAY8iEj1!5~&?Xvxy{3$~pMx(Z)Ab==EqE`1?elDG zO4l3-x>VLJ+dZ=ahU-3)&aA8@IWI6Jhv3x^f226Rd>xnXo|k}fx^*`M<2b+>=%iH< z$lPKUlk3ry+6fCKgZ(Rz!sMHq3Z46Be;vMVozRx<2H9%$p_&}J+z)ZV5y$K4W_RZ_ zJv^R!CEitx88{xvmIGh;R28sjo2KyKUl<55b9Zc%R2$!G%*d^h-Cq!+F@Yvd;ZYryz-511Nz|8#VM8tx<&7n3@O88%ra;wJoHzD=&ykPOL|X}Ang z_LL*7-&Yv*X;yYNzQS)3?D9dQh(hO3dn(1!l*JHBc&@H+tJp+S+5-}L@_~0J_?&V$ zTnAa58Fah9|Bf3bI7%zaloQv51A6oVa#(uWW{a5?hpbuYW;F;{8Ord&fMDfLV`SaM zGIb&S60vTpr#i7f;C&~(XdKtZqD z#_&zj{CQD;KI>LDm7aW?;6s7SCam(IcIh*_W#W}4%%Kc$6e0HR4IZvM|9S~FoEt5po)?PIS0?1}GU_EYn$34!l}NIj#h9+c zj)kQ8z3AHZ4SXTzG867_Hl60*9~vUc>uN_~x>R+@>f=vEvwL}k@(je1_WgW}B0H&5yo_ZQ`s_gaSifhE&L zcXxx=Ty3TvX%ZGAC^B^N98BpgfW7p{vb%C^R%Wa-^@Nc_%MStz8FRvMwi=yM(l#yT zDO{P`kpU9RM5@HF?usS`Sb6&UKH3&`01A@wRn3eh*JLnjLK0Wjk)q-#1q@ty@rf}| zn`D85@9i2%SOt+69oW}Ls*q)wE%{>F#GpaSCc3<%C3vtG1c)-g9u3**ZFn#lEC}w6 z4h1yHPaNBlXn9@XVx*S9)km?3jn)X`-|D>GU3{ zyTCO@?KBt?eHs@cUDmjeLXzApqFJ8&)N8a?e1b>MjWLkZ0;_q9^od6MTM2@@I9WN^5$e z%OsY?*w5de4V!1ymmlnE5x&Lz9;e=NX7za?Xs7kCn{=4s0iAL-$dDk@IF`3>#5_5H0`1-aaB^#;wA9t^`8>Yhw68v;BOhs=7iwWlovda{#6zuLnGB+rQV^Xk zru3TaV&XqAt&wp3K#M-&=z4`lu$l&SB7^n|-`V{#d$w$_xkA!+1xT_GF(6nPozw(i zox(7JG=p8MbdD$p3R{$}A5L8Ngb!y2m;U+v8XO7P)tB6}Y_rxu>B1>o$Ig3$AVnFSAZ``&=-0{o*O8On=*&p_$l@=k;Ab+UMm*CE-G zu6i>`Bvt6iq*6gNr&;_dXGI~qMP`)n^DhDh@)4zaMcSn|Shc~^O(P_#%))3FXyDX7 zA00LcEwEJ{*B7AaMtrUw`w#rOZ-dkH$%c(x^bAlzXx{610sh(Xo2UAq} zjcyYZ^y%`A%kX*`%{Mg!UkyV(d-bD7JVyQ>cK3qU)nP_(WHDu)`_1Z+5dx$M$F07O z_2E~mt~)Zao9hDkOj1M>=ZMa@n)0*ih1GU?@Pvtj^i_+*jN+$7I)vWzuKBwGa-Yy? ztW;g}V1S!P)JiR+`iNKNizE!I3b05xqK`tf1gh883_ur=<~&YjLa-lkS1-y;!-@`e zXorTR)v8EfEz%EsY_c9fltQYf0NZOU)~mdkqEot6ztst*epxdS<>b%3E-m>vI3dNA zc%e&I_NaC<)WRJjtcRI-#hKf59K`A=6--K7ts2e1y~ShXoqzR>KWyl7|NfI#evf%T(flt))i9W1kRQ23?dXw!%U zjrH!LBkJeYn`r)Uv+v*|Mo*=0KjFQuO6}8*t>gStn(?-Fjk3IFS+Q`uv4~b|P_7#E!rX2ZRU&$;jG zqvGqP$DcugMvtRY;To)=lNzVa*EpV+qyofm$EYxnjbL#szVXMXrnqvE9rhC5(2sp5+$i&_ZlSt6t7iRWa$mOz>G(0{VCcZtK5Mjt z`&cwj<68qTM(r0hhU%6Ie*7s^wbV~@3o(}pNhLPwr^QQ>@h=;6a@SA~OY;^OM=1wF z4TbMH^^bD{PLVI|oGhhy1yE&hNZ_9-i@j-tRc@nz&^Ko;dK0-=(yEKQQ^Zp(%G*cR z9w8}?W=$aVYv1q6fSP<0HKBXib55Yx)oIz&){Y}Y4aSmcJF@hv2eNdy0cKoT$rE;Y z7{#l5i!g;Uy?isJ0$Y<%xV0ub`VAvv(}ny!ezQC~F>GfuQx7kig1NQBFXdI+<}F+c z31-CD$b!S|egyj1GG?T$-=)VnruQGmg1IIXt=bS3tTQ_yNEYqspP7>o+etczjia7(Ubgh5NHq zYvGBADMu*nIG)e{v>=t`H;w72z?_viLH4|b^>7|Pos;FXjt63*3eJ11GZKMfIYadye90ZCEp$ZMwg-f=);#V+)&DNx;cK;QH zk#@JZ70qzuf(G>_h^}s|qNFGUgEM49uN$_&1lcjbSXJU7&GU;gGQjXM;{R9FgC6Kx z&6D>RuCCm-@Z|*fJLPHbiZEO?@@C&&#QYAUZ7Ih1;G~7D> z?*Q|bPCU@QXysQ`sLHZlSh+{Yf240CAboU*JlX%p4HO$M z_y1=0bFlrdDck>pcFw`h@;|wls?|EP$M3}atS|r9@2rA6%pXpxGmv<3?rt|i4=Wwe zL4#pqTb)WNg*SH7{J_|?(f`KqAw46J#<|8pgCG_zARzDre}w++9Y^$ex;?cqIF(4g zk{w9065L=Cx?eI^WSCboHHgWz{qM{B+KPmXveKW)Vd4z7q7;EYxmu)48N~*tT@USu z(#6!7|M>@Uyi{gW47|z7M)Km`)Bf~M{GRIhp{P@7g(KD5#(q7xoo|XQ8~z-3G4X8k zgfJRBG0*;_%^|@cb2B9N&MGvWd>Z})Bzja{t3l+g$u^bBnW+Ac zHCsdVmL*@EyMDZ%7rXzTq|wBfS1a#8*gqq&348Lq20r_9Bizi$EZkXVMzs25x0jPX zJ$>^9w%XK!cvClts%$iml*~DKXS0*^Dm~`%=xByh|4uF7rwej?Iyoq4k>Cyqra-D( zzC7Pjxnk8LAZea9^(FiN&K;nkyC*JlE%3fJW=CN zXOPJ1ClgZ!6+|2cM_JrseNS({$H!xy%^AXENWxTn9u7?!c1fRC-ef4zAZ6ZR(lIk0 z4lnEl;yN>hdFEtg!*6d?#^FVnw)@+v0K5F?!*?B+wuv zE5F6JsHBZ1sH0;M`rLNd!NJ!TFxJaT+MZ>wgaB9E(=jwZqO85*{976FN4?6Ws31j3 znestHO3WQuqEmbs!2}v=l#f`*BzQEGNeHHeJ{_F_hx`07&5TsH>v@vh!g`U4yX3CC zT=ry8OzF79Re9=L7t*|%PwlgChT>I5yxMSnT(>83w8ae*%z}nH(Gl~gMB1(oA9>+2 zRk{bHaeWE^HN&B8#8l9^iYn>Fo?>iO9;}&4>4};K&nob-Ky~SIVn%S`D%IDg=N0Qj z>}eBGWhAlL4Lh+g_hr49LBk`4_Z60n29qC^zN3hE%5@SCuT{R9MP9AibrPHHUaAs9 zHR1qsJrQ9ijH;yT!ZakVC{}G#!x4agRE91ImvxTuCqp5naL|zOCt*)3Lo4i__9f(p zzjzQ$mbPnknGp#5N5hZTKj1jdk}cpFK@3h{-N5O|`cbQV%_rDcuk^3mC#vqS2o-f+{~@jb`FcUjcgq?@=*Rqv}F*^?wcyp`LGGo`pf^ z$@-11m4xavJO&W`@uW;m>B%;Vn|k1TSPyB8^0G|QAC#wj;&Z3-GW+RuXN(UkqM!eW ziJYe;|NMElRq=l@_Rhh%ZOi&_Y#S?Cv2EM7v*N7Swr$(CZQHhOuK1U|&pqEc_0_Jr z_rJHgN6#L!>Yd$VJS|GP>(_bZ0FASBCyH!mjD=s}5EYygpTF7^C%eldp+2cKBBwMf z$6$mtgC!K3Wp|p|iy^8(FVnA9OO|BF^!RM)JZC$7y850CTLxDcF9ooeB78miRtZC) z=WS@3*bO{R9jr*e>xl(g$!N>}&}nR{IzOYPRvxDcAj8go9kW%FEdV4enQ7Bhm#1IL zFds~2DRH)nLRu(Rj@CDiGjylYROv?*z(8q26gj#m7jD|v*wxcCKi@}5S32BJC}+-1 z6Yxw`#KTzQMi=BAUTTM;Z+^5*1XK2m!v@W%Pw34Z-ZX3AZ=HfDPd}6s`>=9+TzBU4s8=6dH%}KdOslAZ4YDs5oho2;!ok>PC+v69D~VnMG{;A zX2S_6{Ta6JL#Bi=s5C3h~CNgFn(D0AVHe zFi|q$fU(ti{Z@k@kxDPyMHTQHABMV6Ux9h~itDPMSs|cV^20Z57_M^WLilY@q#f%6 zC*YQ0x}|(tpVM>Pj5!D+2~)O$abhj&n)cP1Ioi?oc^sSfr0@5txNroW4u1Bze_?W{Nz^d@?b@&`o0i1cb z3obcqKpjIwEyQPnz9T#Q>$?A1dC*}>k9Za0Cb#cmP0=K9$HpdhI-ra_9tYR)2 zsr0$6rM^qip4u^Xg_DyG0Jr59N7_6zN^O+hq<$|U=^brKa{x}i-yunY?LT`g;W$I+ zp|-pMn-RsS{^3CN_aW);0~G@s%YQO`82_n13FH5%KS`tNy282`g6Fd8#6FoaZqYH1 zE8+Kq(A00wSt;F%R=5I`@h47=gsMBWtm8Y-Cs@>7frxUXOK z!@ExGNhC=t2{LA!C<6l_gAFvwwT>n(e82>6$&^0<{8Eo`LQ00|TH$VTG@B zs*!k@N+?8`x^N;lAbqC&AZYzg-6X^CgM=$y?7}%ZxV0J8>EP*4qTn~tef%sqK09)9 zwfN7(PO*e1<$+bE+~EBDcqaE?nh0V%zi|Em@HuQ_trka#KwYFs2%40-hiDYG-wHGO z?An#$T^Vtvv3~k#*srE62k4FPPF>=yt0WmH z?#MsI1&@C?{jpQA3S(|=J8_?v+YQg% zK|);o_EyZO*~{adTV^m1fxV($%8~>#za0#LyPJ?mDPV>nsR;`gyc;J!WMN2U2$%#T z=_mjj<63(W@@bD=2b@7X*9cqYhT?9!{ce*Xwjp(Fx!C;Ch8*A{dz7MynLQlG1u%f< zECksG2Ac*;hIq8_a8dvrc!ue4t0P8ch;QUfj_@mJF(C|$D4SerR)GEf?ZzB3SF(&o zkk;hT>bwP$(1Px1Ea#-S*qF^vAWj}J)Zb`wj$eZ>y>uI3G`(OToOm^1%zf8UHF{8Q zrKw6<4u$i6s{1GqQT7Z!_UgFuUkn)~d+B-`qa=k)LnQ;WCTXhArUH6lK);u z_Os-2bW@s%ZrAa2io{HAJL*BqOQthdKt zZE@VsNp}WlAa%8<(c{GRbN@SU#%S1`%)rHYRpt1(gO}-^clU?6cBE2a7_Gw8a@xi^ zi+R`KGho$wf#%kA(sj$`9>z!wM~G5hA;ylu^jMJoktRy}JzRlJUcfVRJH_U2^*gL? zLL2Fbcs{hoi$v1<@6wOBbRh!35!>rZdMic49NQMCZ_cf|c;Pm9Zk!E{!f2)fe1L?+ z2wLfZOeweku_Z@A9A_b}Ne0BAtG`gI@|pioD9Rj*Sb}CDk4Xku={iQ<2E`-)KFF{S z>tu-CdL2)R{9W2GTp5`)`DQSOEDq8Ej;wR8Z3g_I6elHAH_;;TwQtP<9sr{DVq;vV zxx^OmB5`#rS+j(voc0}7s9pI2_+nrQaI{^z;?D&#*X5*=xaNc_!OUVf$h)ZG_8AP* zcX&hKt+Ide75|=$N6*CeUp1Ue|5U@t^na@1tW;aKS|7peT2_RqK_^B>bB^KyS%J1j zBHbd9HiHgFTNUP)Oc)FzXe2VKzOQjj^7?`yS3ueXv%~?xy+3}=mhIohg#Qk|Rljv^ zOnJ40u6QycUwDbg3gEMcH-`8JEUsEa23y~JccOZeQX@L|qHew@2Axruiyw45VuM0U z^9k0fBa7u9KwDoWy}o;ltnTxHMt1vIwbl8F?QZYt`35I@{C)Z6LKObA4$uC*Mx;_d zXm-@u+WL7y`w5AtHxNLCXfK*QP6S~Wyo~=X$iA2b_DKe%5^<)$}H+*)4 z9m5ubXAK?G@2yeFNO(ilb&hScYsfgqIPt9~LRF!nD8gXIjjMLRtFaOOY_~jJADsE5 z-?NUMWh+L*CQki45GBCp+(*t??u{UD8lFC5&@T=`yD%tu&{@WQ)k~hUP%At2&gD&h z<6l6|6200^F~5pCsPkLH;_;w%Yi2qdC!1tUGl_zJG~M(Qg+!ul1sqvuFJ3H`V>>x| zKIYyY*Ybn7TpS*9l-Da)^OOUbDQ4kMJWJA3^AR{;79hkrzP zoJogflNIKYTic%+EheuMS1n)54jwx^Aa=bmSE+c7Bc%4e+x4P}e4?>t(=^f<@96m5 zTx~_OUEeUJph_ukcwQDwudo2$s}L~4b3ieUJ@nPGcLjd7AAL0(9kZa|78Q*`HYiv& zlTPpsXYC12&0dD~vVBYi!_n1h-X;G0W&I@p>Bt9lsV5 z-t6@~*r~YHR#Cfl)9aTDV|50nG|H&8{W0s>fmB}H3k&L{zc?!XE{(PP9f=c1m&AI) z=8NBJIQ>?aUi3@ZX3S6%5_@Di?@k2+bp`9JY1!*&wkQfKA^w#gIa7$-JY#7FlnO`S z%f~vc95qTPs>m!^+2L=LORMcV$IOqe>9Ioi@`Sk|cOYLtzl5-OjQ8H~h=dG(cL;+J z&SUVW@x6N|9W9^pW92JJ|4#tVpB@Z9Cf8lUBPD@IYmlRA^2hG9V-2*pj_8(Uq{huD z^4nfU=j;aYzz8`*l|z;~&Tcb3%v4Ua;43OukP2swlkS(NT&qAp5`BIv-+nC!qZo`{ z!qcgUt8K4RME92vJZo$=lvnr|FpHr4c$-@bJQ&q5REpK$wYoRbo=k^%={DP$1u+L} z%OWK+M=0&hue(2y%N&Q=*p)uAsZavOppE_QdVn8Z@frP}wK!RDf zcLg~g@G8Sb-b0M3X?3T~+PI>v;bkoSNnB69cf-L%4;hvz?3O?%2zG^Qp0?5A}4VGRr`{HTQ zlFOB4dL>FXi%V3@tYu>SNf4V#=pQ;(w=w{n(;G%F#vDwOv7YWA0~p%7x_B%{aaq&^ zKgKZHrJNgOeo5W<+wraj{W-vGsJyx($S1)mm!Iltj<)19e`?oOZbn|aM@PQSHD?~^ ztI|FYqkmB`KCCdo6l|NsvA)!-Z5=u-ck>}p0JX6Fhm452ApbR5XS_oE z(no%{vgN$6Wc-7B|KadCy5i&DYIH>}P=~~MqBd(^&xr|)zhwbnvym*REyQHCmyJyn zK>pykxzoM@eK?Fqv&%EQLPe7xJB&1w{+Z4FFHAoZ8a!(rlIw)jsnXu%z;`o0kB}(9Fv>~u2KbfgrN&vzZ^~vxk>emD z$bcDhk$l7F@7=Chcm`v+-V)Xo(y=2P&(2YfJ=!VjELEDSYKD~2Y6ijF)w@mc)k&P+ zc5!8{V1eOunA$B;y|ta-XBMIdTaK|%x4b=S;B%6|gLmPhKn7W&)|^qoCT{CQisW}d z9ElA1_-+UC@H(H>HJn!Y8lwi(=P|8f!R{M%AjsFTMfn78R94}3?Y)OcJf0FIZ!n*!fMWlvgZ?zU_&YTZkR5NPH!-OLZHf_d=(o-6r zU;hr`oGZxTTu%+rpUh(;@#DTzV}D>wSjU8lcLs6h;>*h2m~!Y-7PT1$KENEi zglQe;jNG)PGf&gUkHfI}ZRC7KA7226GBoO|KaEBN`s2@!PEmbqF1Ztrn|J#I+>$(B zfn)w@NCo&fyPO$U5DrpDyo*urFmCvqZ(7(OU+z7GgUlKK5DW@OG~aOnE)n?l+P_Ew z@c$yg6~y~y{%buHc=!J>-9mD>|6X4pag0*Uo5l=D}{1;*|CXU)r=OSLJ?T{QbMoy3F*oPRj${(XM^ z8y8_=XZ;T@!u0PfwEqq?G5w#WZDgvf+pV)8d=H1-q1G)Du$~CUcWfk^iQ%Jnqj!t zVcJJgAEmM_A+H~nq6~^q{vke2r5_hOUETYF&X zCUylwXF@QL;#=dP&qf?&$~BHdD52&%{!&)P`gjLw8NO+yO^uuj&w*g~=Zhn~v#Y;e zIaM}5X~5R^*m2+4=7%a;br?%p%6yCa6lS23Sd{q}DvdtX)e|W(Qn`)y!Pe=p^YLBFXhRv6vE%YTG?J(x=h`Rk8(l~nkjhI6D6&Zm7f*|S=`1GG) zk!~tUeQ=!lw{2nOu#K4fpr3!Pey`9;6CK=w&~fqfwx?3 z@IIttNYF)lW68z)X?80u&y9+GJsN_{f!YTtmNy`bdy}xwYX?VNnQI#UXpDrkA8!LI z;I)!aLfsChQ9}Guev1JhTv!ELIUT&z&E3u~YgtS6l{?#tGNX^y-Rbt$Tda;XLICf& zpTlpiu7G9H0k+4tLvR(=q9-J1_(lb`30R$g##`O4EW{ZTTFhZ)cLI3k7TQ3&*bxfl zd#h;Seb_!t=%cc~c8U1>#t0%mGi=#PnU*KnY`C!VQk3g+hbc|1E-8SR8^4p=D=it%_|RfVU(3;LtB5Aam6F+@`^{z{iyjO7JqN)$s(A>t@M z&!yhW1Zq3OPZQ%3YcE~fqIH2%E-?v$mT?yycr$tiIl`@!<-*~*kXtA3?`YIvReaOu!p*N^;V9f4 zE{bxeB?D+c%BFO*Xp{YI=KD6dLDc?Um&Z6FUTrx{N+Wc`+8Kp8w&S~(`*b<{5V?3a zOT8*KnAkyz5@5R^8FWJMqA;*?ypy3?Le-F}?%jh}b~CTPF+9{w@W`MI^EGpM4IXmR zR52q|M@?WLbFKx|f#c*|)IXtRZoYyIICg?6diYpx!u;!$r3wOK zFq&V4Y%O)M4A6{nUt4!^Kq9b=^0dJ?Rc_QJy-6i^rNvB*Ke6H;$TJbOe0xdlFUGqM z%AdPV^9Z-Y)t|Tvd?<(-kxa0cCHk?uZ@urxA2J~IncLV;nI}_X;i%@^!gVNhK7DwN z()zS_;9CtL&jB6Am?i_5%bEio0XU4(jOQTNb+{^mZ)8%r#294x4H~$rkWaq5(-DcH zt@`iGy6~7@$7;c%b#Eo_B(#FpArfA&)Ung2@t{mX9uw}EE<3(fvtOH?yewe9ztP(6>U zdk9lQF+BWF(i@+y+9;!0ljfX;rY_`=sOyu&gbVhr;QvYnrs3l&keZV*j~1n)oo0WA z?pd^k7zWY1Kj%?x-znw{WKrguA)%8c%EchgAgUD!rg8}g&fc*`en&$H7rHWN6r2am zA!n9Fi{|eai$S4JN+BpTt(ehA-v~xmbw-S*ClLs0{`p(=OCX!3>X^}m10RMF4XH3+ z2i+UKWoD^0+!@XZpx5W;Jt@pfo8*0 z*&_b-va7mMQmbtO1{#UJOd}8$66296n!I1Ht#rRb>m)+p@uDK8Jgzw`ZkJMt*O=U| zh1Fg9JhmmOUA?w3IU`g`C7v}_l|y_%_+4HeovE2Fu7yQG6i)axHW?ZlVgr{8V0lZt zdJk7I_-*_+PnC*#{lwp2)kW{GBFSV{O) zZ`H&n`>)+yq13ZPMc_7&2<2H+XB7B?oOx# z$b+KR=85Q|QF)mN(eTJthWvph_|6FkfCge7 zl~TEDL=^`D^~t`?<+#b@d&d@w(zHO`F$8&33*xQ!Go8e2RFX1$PPC>)w0*y6>UrHG zG0Ux_u#?5&M;bSzWfsSG9~G2iC~3#EOFk4PEg*86^rs`WMH5pNZF$3TEGHvvg5xic zwgj7%?OjXYtc)2N-^+X$_Z)nVh;BuTIcv4b5 z!Zxox4?fmZoC;6pICE#9NJiRB`m;IiCqgpa=YrUkffs3ojLy>f-;w-uphNN2S>k9Rd+u8`F04CkWC1C`GBnbCgTD-R z!p7(gl@GXKZ$QmZtZv&IU*vwtZUZt3Y_*h%*Gue?U!?u?IAh-&{Xjcb>=IRO3XC*) zQ-R3&QF+W;J;4u=c>{Moj$d6LRXpIvA>r;!pPhCt-I?qwh)K`3hqAj1EwOwqsG?j_ z27frG6^$hLxPrZTVtC+wRXuiTtNH+fqUZKdMh}$C`g}v*`D?;kfiQgNQW3 zP}knn&2$P&+nX|s{wBY8SNroOo(`K@ukIJmUG4j3h2mpPcAYoqrwYrK`$KpKU$@415BHp4F{24@6$t8I}T2 zP|Kn+-UN(HIRZ?^au3&T&Y_>@LI}wC(R?oBLP!EF0Rw84S2(%m4<-#qgzQMs@?l|lLVE$JZn zdzsp#=YT(~5v~5p=amE=$&&oC4frgbE5!NaPpiWA0e^#_=yc*YhX9Aeu4;jm9YJQ?~6_1I+q$cxGfWrgi4K?=TpoK`p;s-n&Ilr%OfGHz{2Md+Ra{YDMxhd?~uUMZl3?({Qq|7e|dR&cBcP| zTC@BWbol=}f0n;0g#K6OU#P5Yolb}HeLK@Cg%6aFTlWZXSQA`!)Gk(8XTT+CMBeK! zpz=Y+n{3nJ#fI>etE++z1K75o=008-#xnH)XLQHZr{zPScH&+}UU3UJ{F|2XjDO{Fo`Y zzS(EXqMuwEKJe!rRYA8d(}gW89j;8Le(lepCHa6EdFU{8={k4;PdRC3-LO2Ilc#-a z+jZdF%q%?hf^$Q7zP4RDuOIOBhGM*%%Fo#n98Bv&_jxdRnolRi&cDfOfz(9Q%%JXP6J|j%)$0PxZh6 z*+yb&bmf~fE5~X0ly^S{Em4d0oZDbtgjxSi~p7#H66#N}n9P(n@k(5x2(DJ~*_m zu(tIx8@tD3y@OWr80^2^@_EyC-+WPe3kJVTR`lNU@;vH8THU2s%cZ$`34m9$K1Wob z&)!Ys4y)FKPS*sIAJ>Uu4?UaLzsOoPF1N$c9%IZ@g{c^1bY{6KKP;D^FGYzg>U&0) z=^-5hP={T`J#=>4MwZ-lTFl~Kys0SZJ6Qa@*|gu}c#^2DlWH2a>fBvZOfkl97;XsB z;+RwQ`T)FXuv`C!ujcPB;jhnwm4Wd;kOs>?K^iRoH%LR-()t_H_^i^g<>QUmGE6Ek z6qlI=go`V}L~@Y)(BosoNDx|2Ga5xqTv@H&j&-ZeOg7Gp2spUC+O-$G+r^<9^G(%R zCow<%kcNQ1v{7RlLbB<_yK@y9mLvZiH3a>x$>t2#96Q4@iX~HwK^;&lbu8mQf{!7O zMhCd7HiJ-PevF-(u?^GV!@vVIk}Ruw?A5IA}p;hkPAb zLOX;HWOL?<)8mk8DhJGy2N>>A7k@5Y#dKoCj=%%U%}byOJ4to}R2S%0ibqcQP6{1@ zYWR^yQRpO(+xsw<`e`w*t8$931`y&`ni0s4_sQtNX~j^%OQu# zC2{S;%x)7kaxUmcLS3u+aiDWXR^br`*>w~|T}2hx6dJh)3z!^J7mxPve!!(S*u(B$2UZPqmXRs9SZ>=ZI z3NK#oD%{cC)+v4C+cqXZdYVR!K*}R*s?&0mFF=)FAmOpo_V3#!qtGU&Shabo&_Tge zToo&TSRy>Y?epCA6@TPAI6XZY4A*MB6EVle=#|13DEhyrCLU_4Ro8?W)p7uEO+8&2 z`Wu94m(?Y)EI-Yq=dYZ{QOp5z$0*kgmXlf^4%3bKQjV>33IJNT+q#h=eZ4m`W( z;&EuAFo3s4I0m^IaL&K!DEh0=qYB7Aj$O;@9?)6Yg@7y^fd!>!svhEBkPV)^quGZ3|G4C!6~qc?qg zC8T2aE=IX=?WO8AqJHfT+9srJt+hehStr3rr9h1>LvXrqRdxQjm($~ZE7yqnv8>Uf zE~(-o69#70g3=@I0-=ic%fLONHAUR&)u3T0nhbR1Ilvr>rFtO~Gin97tQi>Eq@ZJT z3Wib}-E7y-v^GyoeL1PQv}!%E%`$D%F&(Fa7{XM%sqFme^@;~^um6@uzi>lFcvA*$ z^H=Z2FVEKyhfAmDEz4?)tET75bW@qJmxUK#?=K(|ob&H#zpFhR zJJWy2tp9YiXZ^oj?KM~J_C@Oc!d@qH@*(q|{I*xdSFoOslKQf+>wc0!#j*7Zqmh?0 z|K!}ZlQl+TQMe01h7(0EqoAy}b*AFjZj?fts`=KM9{m6DawHGCnII+vm)%>DUsaZPwmk@V-n zF5&Cu@ZkQ>MYis)U=d7h%E;?LLLj|zf#q>43mdVCDn@p<=bLc07w(%H8|<%ni#T## z*F;S2QRDORiS^Mz{p3uVrR8zAJJ*UbfFwGqn>MJMZKN6Gy zlg5s{Y0iQjV94cX>4#8NRPobI0x6Rus#2;@#p;z4Wrt^cXl(}cB?VPMaPCqkRMzgi zxO!Vi4vMY2rFeHBNx_Wn*f)i%=w@e8w$k49YTFUbjvaVDZrmy?a}8E&%LI5nZW}X7 zwG(wFj=s_s&c_A*s8SsKW_5HUyTnD;WTVTfM25e<8+23M){exFzelW_HeUisRYwss z1}=qXw-^TAnCOwi=&#ckOAF?r+v(q{D=lpq!hFa;y@|Nr5R4$0zB=+peOh zY26+}6I|{ty*8@_@}nn(#X4N|WVwI&xXjxci)f6+kqEW2N&V8=-kzjM8XZFW#jR<1 zwamFHbhfHRtbW3iob3F_;#wTZvAq=+>8cHyt`pm|YCpcDjkpN4Z1TQHHaq7L< zZkitkX_Y%XF#sRpBE*S z41?wkftkvQgi$k$wFCh=rk2Tv$LQ@)Cu%8?-%pL^0_p=}M5rwJzHy7UhNMeDep2rdPA*|)PB?h+zqh@d2{ztpJE&#Uh)Zr{gOlItMf zN7m$(UsNfvnTTl>fVhPW`L`;^#~zyq@4DNHp9q&}^oCMH#KJf?V}m`p+1YbD^ax@8E|xC3#@j-^fMpM2#|coSmi9@Ae^@NIg|utS-Pv7si(Q$T-wr;$N&T*H|v9P zC!50;FYA(ihwFEwRW9%N!kCa1UlsxbGpinvf7db<*wrV}zubN#bqw+C5*HABHtaP@ ztR{$aS*17_T4KtvlF`njJz~uqd_W#*DB@diS%K*xZk#H$6k`~@c~V@Dtt)Li3Wo?H zOu2Sdu$nWzjKQ(0Q*SO;SI04l{j6gn1ka_ABbOLO=CO^7N|lQMpjd1+Zda;8X<6`v zw3sUtcPTsRK_N_nJRLPksKUZiKEX9^tyHW#kD0<1x&=m2G4bQlRYPcb$qni>9{2Rf zS4Lj&>m3=TR$4Lyw)9n(b5umk`BNZV*6|~c&(-Dt6O|q|2`$9z*`+R%CXr5(l?m?hQzm_APh)D7)eJTxf6zvtSA{(pvGeaV?fh_GM~&BE zOsLoEmJJJ#@!bv#6b4Po_g5ngAJ`URixSuaAbU85RHXgZ$4G$W{9tVba$u6nAbx<( zAcR2&9J1E&%j#I zGHRMu%N8^7+~B)1I!8r}(#KDA9#H09_=8c$hgSa9rjouBIc9)D&eS;__4#o9O#? z{gvQZdGs%C_2)@Pto4tM)Xr6T$LmaEJ07`YjKFFitt%Tw>6BAsd<*LHhDi%qCT0ve zMvo~7L~G5}_peUL_@qWeDk6{W+&>jRqDK6p4YCzvYjwUFu9;ubB#agBx90c(Y|bxH znSrL0x=uA}knzF+ymL;W;GG{Y6y``*LpL!Ea@5SE*lNL4${K{olk@w3&ji)VjP3Rt zFb7;j@E{iM(Klqeb-cjXh~b7FOPP$0+{5xcKRMNRNgcwC1?zKc0WBO+v$$r^&WkUt z9~+fv`c=>MUJy5Y_f*3oc&ydz^)O)`sEko96(g?d8R|=n#Xut3=Q30qd123ai3O0dt&y$ku}W+5rzK;dogbT_V+%UbwdLWyE%+%mYzxvPY4 z&}bA}ijS+EH3Y)$6uGewiA2+ZoH`SuDZUyCml6+W%JpW&2$lnZTJ&>hOWwBHE(kR3 za(;InAmA47yP$7ju$9;{UHlPGsJ-&5rMj@iK%|g?51SfkG1+;(83;8)ymdi>@%cO% zxs5tMq$GXa>JUTVrJEUTNrCC05rBJ6KKapdlMV5fc=^{jL+8X90L%fI@)&f#;qa=? zGyV9c6X{?e8`b$E^D$Bx9v#sgm0rX4kg%$9kt(N^R_MTK(V2Qse55|opCTr%bBWDk z+Uu=%wvX@DNE><6B^J{=r8MH+fJBh{q|0$*AyBb?zU5>vcIwkd?V#Pv01zMX?KM7< za$h}`yhgNDZJz z+g5L8CnFa?$;91}hg+4yL+6u6DV!X3uiB5RckWUtKdBh~vz^6bTlUXK*O;76d`wAf zu|s%V8|Y8qHCHx?iXESYyYARU$kC`nvT_p}*T-e&%%_!jhqDXRwobBbTn*xTSjWMQ z$OE7jiik3{PgkBZtBLzK-l%-jyI^pl9dZe{kzbp3>AYF1c55#=KO&Y&jjqb-3`#io z4ZFm_hv#4eib_TDoLtEsc9Vc}V|_S|GVGBA*CF@7*e}%Da%VDLhOuT2<(mk z&@W>Q+H?5#YS6TZt>54EXe}FnD1aJQ!aPdid{#WGet>eA5UlZj&oH5+q<=X2ko89O zwqqTI6TA8?iZdor zl06Y5K>@BvLIH-(_To|%FPA+XE~9y}n0BC_L^fMNvA!!B5%5{1vn7JW*4OD zVnNW$i+yUIz(t{HT87$_+2#r`=#engbD!qKOq7NDhbqDZy%T+Q((gL{&z5@EbOAp7 zrFzg*+gUHrIJUrG-nm1h5o5I{>(L8#>yEb>sT`-!&8NjtlpN^ zhUlWU7Vg0wgABU0_{p9fnvNE}F{eMsB4I2zyW~))xa8h?{d*UZVClgg0{4mxKEuy4 zs}1s7v9w&Ix3an-#l3LGfV|}^eES6fVydToa}nJTNV;sY9=PMQhnxBKV+P>0BbG7W zl=TsoPAKYoZDSYqNjyf3ZRHLp*Az^+=6CoMIG?4t;z+X8`_XoHojF;1Hh5QQcFsF) z7oI;ekp}M1gr;lliq^u41q{gUoL4Z&5F)s5V^kVGQ%m#ZPdulo0_*(4I4+vR z#w6Th0|FZ^@gtR|wmB*yzk+6b0XTPk+xk5F7dJy%1=tv22;_;$GY1h94}RHiP9hXF zgD=Tord?Jo2>WB`)9BZ2hdNS@xgcGjnRE^c-)!AdNO<*zkJDlUKT_VS(D1M`NRVd$ z;#nZGxn#A}Pg5N^;qH*plVIqsG7y$~cK|n1;p%RK&lTV)s?z`;7Eikhip}9BWSMc~ z4K+!pBHUN4RFEyMZW4Hy4INp~c~4-rYK+$Ti}md3&e&5(B8G>3zSpYsE*w@gv&p+( z69PBe?np=K>0H2ndIJEvjYGeXZs(t2-JnrzIe7;vOT=0w$bSpE>xR*CTV6wX34<?$sc;ZZ2)&SD#DTPHvNbPT^lx~Bi_UKDVV^#5}|xM7s{*6cy7`7)I?J;@%p`D z>h}CY_%~B?bG1tw7s|8ckk7<`gAsc<6%*XS!1)CC`_T}VTEE}^ZC(TmHIL+1lk}J} z@fdhfUJo6Bb4|-)Oa4dp#H2jRm5eh;`8fSwT)|wyRdJLt(mHKsP ziBvP1Et+_%EKM0V@iCfqyoEMs0ZY#Pk#{-L?>ECzaE@K2xyHQHh3-TG^mD#*!V)#d zq)oRydzof@JdDS|n5p4gi_o>p%){W*KG{Ek)lwZZ2B!OE#=g_(UrCig{>R^*C3KGMr|MsKV1b|3vaA(q&DVm)+6Bd`-hHqos!Ho!X~bZ5aGTDuUwfd5(>_L=r8atzXJ< zHz$+2rHX+hi)xFJj;k6sY*@9r3B*l7W=Sqt(Hbo78Z5(e4rojagCupGhlahR$+Eez z*`i8k9@a_)eJ=i~9?< zvkb2%z;XmGdzwt5-G_8vr=%<*&Fh3mfs|Omhhzq5s(6|9ytH18PX+Z`Fd|{$*Z`Aj zuIR|%N`0_ak3Fx*`I_4<-@GU;r)aDWvtD;zOyg--kSNrGT*@< z>0Rlxx^7;<64a$-ZCsZ>C6SG8q*q6g)-hJ)T(7g3{;X=Rc@+3m`1;a+{Omo>)AjOj z$=F5HKwY8CvGU@r^JR48VK`c~%=mbFHoyGx_*Fp2gi~uXbYzrBEj3`w27F)h=ESL! zvU5MDV%Dm$=t+Am9AW0tQT@_5A+26!q`F^d*BUAE82t9ugnjlH=t1eH%xaHwk0GrT zthdpqbm{fR*2(;)ta^R+QL|ArX;U2^sLlJpuwyBADH26XQCShItrZ9=&5;wv&&_nc z8}&>3S8Gnvo1=!(z}J^;fw*P;`E>m`??;)__|M6!nsizVy4Kl!d6p9{6?sq9Ns%or zQ5^Tm*5tsg#F)=Ft)f?ja0*j>(}=!~$EIK7S~z)Stly=OC=`#wWxh9Z zcwGG;8(hiKesKDn8j2?6Yr9rl8@l1?t>kw=6qwawz`aAa2L#m>?sj$oTAp#UE{m*h z>z19mkufv_oM%}?bZmt-XZ>37#U}Y09Gd7Ji{hqW?R!oA+RM0B*H`fUffE!BoXs$v z6%+RT5%Ht&CamDOtl(X&LOHRl-d^G8=J#bKQAfQgONI!p{X>_3I(^`h*N>cJMaM~1 zpfij+PMWs1;ha~?F5B9=t)I=w2(Z^+u%@hzre<)nhzBMvnzoj;>&IT(pK7$fK}9DW z=k%ua#dEC=@`x=5Pfu&1TPn%T~>f z&)xTBLKb_tol?bYA2+A{(+^;wl_D1f_=+lJ=Ifakf_yc*COwjX**|cP_68u3)B!-; zPIPmairsoIZ#y#*CW}$zp02vgA+d566h35nkF^e!JPAf!D+)bz?-p;j7NMU`%r`tU zYt=B{!!}ZWfw8&N%XY~=Pvgxs9WC?XnQH((ZZDt^@255FZMK(Fk*k}hg9F?t`g;)k zY^pKwNs0cDyB^7}822w%0Kld^J*{f(jIV|A3GTez+xbwIE4OTaZJ&VAD3@0Kaw>W5 znaa{iM#{DyU8Emm^VT=_@V5v#*}S8V1ZSYdFM)-SBEu44lqqk>vcq{}4F_t!cxxlv zW{q0rnJ}>8I;H$i{a?ramxVSD0)LeVhwL5^u(U95`+^YK;%&hF>JKk#i0VU=Tb5%}dw zf~;!Y#l4FJ0a$4;F+|=?Az{@}THR3sHZ2^gB+?e%@*e#bbn3s@O3kzb)qMO+;Jj5H zkP0L%l+#y&G!p5<-m383nwphB^2*8Qn#&a2_9;}&ADNhT{M_(M4k#3#s{nbfkRf)|!{h|b1 zF9cRY4Ad;6nGUQFQUdnsW3O$rfS-P=g_bEbK*h zMGl%StPgJTlzkze;5x?rM4S&HY7zr5$cQvkL|R%w&hi280aIE)IA_*`K~rDnLh_H6 zT?C{dAP^Eo4!{lKo@50Em8HX_#a|NXj5d>uP!IqV&3wvvgiJ`tvh0I~b_-5YeJ}tu zQg`tXb}cxgz0xz<9w5{zo5u`IC`6(fZrN^-1O6v3G5|1~#{^Pg9V!A6xqpLHq|z7v zlIiAML?m;kI+ZgLlH^S75etxj6ezdDa%hSFozd}otN2x=a!{u7*xVvx;#hcGT@(z8 zACF^cQ6l#0pt*68X@tI zo*51+@n6#RSnmvvJK{G~0-}D)iZ(ZJ6)7^y34pcF`c6s(LAkF`Gidn?!G-Xy!T&c# zohCm7>BQd_3P29>vMkk*5yULQ6N3->_^8=70UI+*V0IRzVNSas(l*OZV_*pOWJ0m3kW)wj zh`wx1A*0aP+w|YUdCH&ty)L19*X&YT3V*D@^JB5vc5oi`9vCgV>4-E4GLc7< zGEu3D2vx9emRLC^*h z$rC1+qkU~BPjZl_g#yjEc|NX9iN*@CWR#s7gT&v}i-8SI+T;z})O!iFN`h+TT4n=% zn5PIxe8Gk`;7#}0T52}&NgD{z51?rV;TfWG&$+v&b@mZK$2m@43NMgC>^zu2l%;B> zl4b!92%QX4l`k!jghiz89j>H-L1AydYiK;7k;f)j%gWMR&}&)HL$N7mno9|~*1_{K zxj*(o0w0S__@MbTgESZo$~0JJI6yiS!+Q^vIAc!H?mX&p$r_&#HHZw zN&>AS{>0R{M63xgO{ynFc%tz=1_4Y}Zi8LXj&7(*cS19HyPK_=J5wihmqG%*_Nd`r>5c!xTp2`CrT#ldy`Os~$9-KU=Mt$HP}TyciwifEd9Sq-1w zDMM0R_QEjf+h$iuDw_OyXi{?>x@JItre?PuLD`w{Gs6ZR-0J);8|2l#=m}{)Y+@N- z!j=r;`zTv7Z+-+Zq{0cESzyh*g#;|fQ%L6hI z7Vit=Rp&uKebo!_b_Cv>Iz3#lA6~#m{`M)?mr~u;b=0!BrH{2)Dc%Gpo4^5i-yE*> zM~OIS4nrSvYaGWM^gTLL)io9Pe3Ae~H$4b@g1>%*)G^Df_F!sc-GCuwXv5T)rhOEO z(ST0N>5tp}(&cCjpCW44W8Qzro90n@z9&O;1SjA_^Ayq7k5Au)f~kN=A%~m%XRqd& z>^rEVL=m@gh+!UKTty?F6{UVCT{}ca)-^wopE;$2Xf9w|`DLyA_4>Hm5Jl9)bFUI& znM*#;drz^E=Y*(|wPH}X6|%(4q?79jz$cj7SR%^?>I$&vCxrusYw<5iQMzQZ|MGsT zz}Nu}_!UXbwI*dZlRrudh3JcP{;`mky^Cl~E(zR7*&@#n`3`Lb<<$Ow?4l6_&a7&t zwd&w{CelyC8cF6?JfK&XcY&b$5DApvP6?q{r%94Q?Agedd~#LM$_&0!W{yPp&!mIOADJ}e_GD>;Sa)lCU;Jwh&zud8;#@EL!N!c3 ziWL(J=*Kc{*YuH^XwST*^RJx2k?SrMQSZPaSZId*fv3*X(LzV$7s&*t&^%Fgaaj*j zo|@H$Bku08Bw0OdEVR&J4ACp^$j8t^M`h!JLui&fIuAZJTBkIg_{pc~?0v3dJa61! zcEp>Hg$~FEPyFoNWd5uf(3Q|v`BX?dY$mAw#l`A1YO2$YENhee< z|IGG$v>#pGU;?$!l2ZN`D!n`J-iDrf_sx%h(^g6D5=~ zsmnvDUDQB%Yn$H9o~-@+Sh2C$X;sc2;Opz_e-e8+{oS2o+mTJ7jGd0J-*!*^vDcXz zMjwwU{F%L99eI9dDTERuBA3lBs%(mYGX%lT{HAxeW68Uy$~V;CecT*9!wSb{s+scj zbrvg>2--7n(vMr3pj`0BsvMNfZD&A6SSZqGfBCqP^-`e-$cb24*>Vu3_4FYU>1Fin z(}@POlKlLLl}9&wc33ewjI_?b99MU4FQ&@~tuD*?Qas%?cp$XZ!+d@fZbOslX~be> zRJD%N)0t(xnUw1vZyGgg`e-g7v1KxC{CKl|k5_&At=e%bTtZp-pw#WEe8z9#E?Z?X zseYUE*r%8=xp0dpU{V&|>(-a5udTf4qpJsx+0&aJUrSoi9+t(*8jB!Qe>9Bsr~B3u z?}~B`BJ$NFbAkg`bftmet@3x9XuyR(aH`9M%BYiPld)9yAANnh^G7cYSb%f>jhZzI4oVGU+$2{ZhJ%9PZO~he^E7y7Qs&gNamX}VrJ43VFzsoDz;@a$x`Y=+ zsUm7Td&BTSDZ(wBHoCv`PmM!s)2jaR%b2Oxo2#?i_dCsscCS0sXc)isywdVsS~A>4 zx&0!Dhswd3+qz_WeRgI~3K{3DMR!(Iu!Lzj_w2HLmY1zV)hms05E)$xEfhxgAf&mp z2+3p`G}@u(n>G#ngmBL2zJX&9Q(*#uwulhe+97Pfna%xGOsBD^&Wfv;f|` z@5F2K=2FqJLg3+k^Xk1C)6Zg!m4er2=QZAZR6Srruivf6kV80z@Ry}Tw7yZtm2`-M zlRj16FUy&w&mJ@DPH}KMV&k$e1_;rB`hr^dLrB<@)qI$y$>o#X>$dvkrg1$E5Voe_ z&x4_i$tS{utLR;-l+%<=Sgxofm@(y}ne{a{AyP_>Ggq|z$0*)*X_14=a_YvIgE-Ce zINFc(ljS^Ar!cB0J#gTcW%NY0BIB9oTHyF~It>ZP9-zDQC-XI<$>XA&C6&F@oY)~~8?{o0D&O3eYM_yh7yZNv6~{Ai?c zfrB;VXD&7<5L;4=yG;06PRVe&d{9t|H*7C{u`sl-$CX@jHfdU+3q2)R!4^@c^oYEW zUG3EUI*E6&2i=Qf`FCs4^o^&5G#tJNMeym8{`iuTDgvaJtL_yQmD7K2$&&Rv@^MS`F3e=zaKww z2_V{d-B_*Vor<1M%z~i6jQJFEoInIH57~H-igw!j*rhcVLEXMdGZ<-R7@qSyU}Qr< z&;q1)tZz;L36(bk2ssZ@BrJKoNdR~~ebtu`Kzg9pJ1dbxHwN|8#FyrZVu`o_K?vYo z(alE(-Xx3Rg>1@s1x6^zB2*1AafB#??7x!lSisV}{^V-}{E&XHOgL=Nn6AxM>~*x- zXdBsCwjeSodqlEEhWy@j`_*#|+@`B1_PWDN{k{Ej}(3YOpf$7(N{xsJlWc2>2*yV1r(b83JC9 zqtZ>X#`-lEmZF;K^<|IIUX?!ByRv7czSw&hb`fY8prGFRW|*Rw54qftkcWn$Oq!uK z(@+ zcq=hF`%ROGNg29*-oHPnhn&WNI0_^97mQDgc$oL@QaAxIROHY_^kolgcG&v>xXyC4 zfT(Aljd3g?&sk3&@!xf5pa!$gjF_15`_3vL*rpJ1ttd|iI!htdDwihGs7J2VpR`@% zgasFEJS4Ut{Qk=TQa`DDbX1{z5AYaP+V!N&e>|=lB29)%A)9W8AV$7N@M^;^A-N5)&i|(_SrF{USu-nu1c|E#v|%u?k5loW69T^NcTt zm@d@$%#6Ukp{h`&B3K#t(jZF8kno>eA1&|hvLQ8d)IRV67|LQgXkReH0}TMbOZM5m zev@bylq?>YUCBMbCZa*~TL8pVh}pIq$_6f#v)MBdGjk(Ib@36Cfm+^Y`pd0ZGYWaNx;^Jp^Vt476QmZQ>zQx z$S>vZ%^4rB&&M}yp2ql)VG9V{M$-8}^OEmrzX_QlOL4f651*4gou340aX(b!AIiPx zBFC}QZE?a2RA;dEe%bRwSpA3wc7*2UsuaPV^0rlM@eD7EMrdhfiOxGZpyVPfM_SOx%S-!?I<}(em=ox~kq|FEwv$PF0kD2Hk}qSQyho*5r86?vQ*W0w5_9adLtFSl z-T=zj<26nopx9CR*7v_*BwqT$q?bUPl6-cL61)hh=(6qK!gq57#?lZ*?(#dL*6Q=4 zEFMeQs`gF%h*{QCouH-&^UWt>zznb}Wx=Gnes^jwBAdq)q$gcu*PZ~Cs`N+~ZpTNQ zNZ?UPerZT2CcB>mz|z(EWgd>Bb;Xe2#^;NjO>!es%V}|>jKE|G^Y#R~-x9D;3GeYE z3z4AooV&MTy)>6Q^2y#anqf9+V9)@~VHsDce)bzIl+Z%k+FoG9 z0*nlX1!(2p8if@Q5cGB00C-^j2#p|@BMxVV_a&gDT92dwx4Tk9fq!n3{4_nvZE@Su z6uPX9fx!3SJDE9g-0hdUK*r;U3J_Jef;)RyVUngpi`|<8-B=sT9&nF>->OMgNdbA0 zmf~Zv0K1sWrP?Nz_G2<}B}IS-87q(iD)JVm9brDtx>*u`LzYiK6Hf!T>I_an6VAuA zkwIh;UXvLdM*;HUjN!^$Zm9ObyB|DiL)$`Q!44P-U$YEYL;$lD<^nAMsYJ7`IUVEckaTn<${(}R75j<6Kt3Gm3soCZ(+}NEuiuD zRFN}QW@qPlsdpv8Tk91$IJp;q^)`zSdJ%QRXxTxj^bKsyV~mpBp&Kb1PWu7&90-js zxlj@UbQYwvjrLk|luAY4+<^qY1WIyGBt!>`9cy4RCl;G(=Ej$(bPJlfN{@MII^Xwq5ziDKa;3?=X`|kMx)8yCX zX+TZl?1AdNzFimxtA1a3aeo~FH<;=$!5zH&%tUV}^Md#sS3jO2NL^kL_w7QG9CwxS z1^Q&p{n5p63AOgcn$S9eGO6=9V5*-7QQ?AtGa3FMO6yjeh_e>_KV0BM2n?^s}; z^&ZZ79gi?w*2^^DBKAOf6~hDP$Lc?0sqk)X{*!- zoD${_)E8B@zRqteM=?LXwxh#&H%T>w5p^= zsR++{kJFQk{wuX#JxucWWz%?W63C7}GhN@Zh_5;_X%@x22<8XE3$d!sy{@VcqH5zY zWAIubl2%HCK4qZ>Bz9`V%UmFRfM)c=Z!zdD3k3i*NQJvgufS{sW`6Ctyn7OF>vIYv36At0oU{QLR?HDOtwTZf~t?aK-N!I`Az>V`jdX1ewVM;7u{XmcylwaK4SVn zjHhV4kfX^qUCq_s-mre_X8pLBd6*Y})!Nq|q5rm}_37y3PDGJGt15;qn7JB9b9Hy{ zeiHh>JZuk!7O|*~@Ai2;KGd&YnxEe8?p-c)EOc%STiw4#@8-W(8BWlxn7?1TpYGDq z{S<0rY#5!_QVZqM+6Ip_fRBDBz#qEs*Puy9)5>Tbf0OhFx1ME}2IiK>`LBjX%I?5_ zY^%NdB$tUS9#y+t!d#}4x!9k`SJ}+svvH9s{_kVl4+B|(zNDs9o zm~Ajq#Z1@j;p~2!hG#h%iFQ9-=P^S-OM6U>e=iTUj4ErC<$Jlb*-CoiZ+GU0TlYxS zrJd6p3wUNzZr^HqoKC5I<;GzMW+NP2lE?hVz;EeakA82VHaW^*>o*k43(sZ9e_p$7 zP5U%$pq4>$mNZ$g&NVT=FV}rq?!s305u2_$z-gae+HJyGe<0wx;5<4ekWwpG6V2@t zo?0>2`RU9YA|=_pGRF@-$$Hl_rLf`GAGO0;*3sk8fD0z!(DBcV#c2SywJ7-D>iBKT zJGW=&@hCA=>f{dOXpId-Gx%As8@+c`!Xp_9R1m@O?%-`71e%IgRH?Y5WHv~``b#o- zCYuzA-jz%l>-4a0z;K0l73nEX=p_-A*jj0Tn*pje}N3Z+#@} zPmX8H0@eXEpUNoT1!Roa_HHYGoks*Bh@|Gwk=d>lkd86+Oh=fC_2 zuQ8O>`laB2%z<%EP9_%;7+NfMOxbdcBjgS&$Sb)y z*sUdnS;r(Apo>W|ybJ**{8PD_N`;JX=k)VL%L*jWJK0`4D7 zMyamLeQU}cF&ZGKw>3=FUxtz~I?o5cos7`6+nDPcva5;&+{SjNmTpvF#R5h_nwVLh z{bNOEqN52u4Sn{+APFRbJB1MIm|D-ORRKFRX1rMPCkvQj1c(;ojITkY zr5a%=pa4@rpT8!7nw;$)@Q%nO=^{+`S&;pgo<_8sd?Z0ijK$4Jj6oQ6H+wKu3<$cP z@)w#POf*7FA=nR@#jYDy#g$quiVYWP5oqm?A2h*LiY`aU;-_8SNHoJBc($7eJ-{;N zyR5@x+0#L97uoSKStk~#ji?LVS5oOjpp`HPTvD|^$=gwA3_lpm242%dqr=Vu|J;1= z8tFWRi$7viv_?|RMYaJkBMyw{g9uyy$xxW8Yf__0NVVYY#(vfyZxxty($HZ;?5S~(2C5P2H(S)#% z=i07bR2Oki3n7TVNIX1|NsDtC_Mpxk*j2{4SnE}?!reoj;N5m~%pmsJ#I%VgO{)Wg zA@VhS;Sn{+;MXe1!8#ap`}$`lpKmCK20ZLarwrjU$0%&Bx1XOJ*fVOg*0Z1tfuBo( z=C6*5fl3F?X|fA=!#W6*#lq6E?B=DNNv|+d`wY_Oas;S9Fwqq#z+6)bhPdE~M%SWf zwvtoz%%joZP>svuz%baVbT9iEPa=pkS0}{cJ%h!CeR_OO!EVbDvFwmk;Uy_WBRQVu zP~9!SB_cIa{lBe^{(Ls~1(Q#rf1uw4z`}4;aLman-qN#dwE&@ZkHI#dBtWk-aH{f_!K1Z;Ndf9_< z7hsBONOK35Ax1{UkS0jVI>9Je5iTF1MG9jFI^)j0dt6Me6@>donZ#2Voz@p9=NXlp z3A{p0E;Hga$=E%r&bv};YKzrFEvWos03msec_zhDHo<@RHlRb>;sCw*G8qv*Yjn?jP&_7`tg;EhxS1E(U+=-=^QTM^w0J zbk&nYj50v3?8iL_qGXA>+0{6hwOScxy4a37QY*vn#o={a`;DIPH*Z%YSf$nm1+IBq z(8LOFAjlM}QaSxGWZkiV3rspK^g`etz^ zD6sFBHHw&K)3vW9<^+^b1X`;}j)qo2g}8|6*s|C z6;jwE1PXVj9;iT7w)arEv_WZkh0)eAN5rl>hKfS!Aty}|t^~MI!o+ENam-TujMLX; zoqDXKUeGijY2?YCaIjbi@5Y^lzH9Y29CN%SG~!w=9;NWQy2T1MRIlxBxdh@_r~W4zN`eLbz$cUWjT>QMge}6*3+HK1SS<(9K3aO~{UYZpK!8#N~n<%6B!{ucxu* zq1aj3A5$rlp|)&&yj;e&xJf{qd)%lp0sz5W(0_Erq*u9r zDLLL%lZwkKF`CQox+^o8OeytbK<+XiyN>IDcInq%AF~YgskD?kNqe{b+72>=?Y!D| zL*S*IsRBj`E3iXIT@_ZZBU#qh?*~1$tCl3=a{MyiTJ79vnx5fN?gX&Pl(U(|I;3_b z+kue2d_8gs-wPX0M97J;fV<&doVEW7PexwD3;Y2*nMMFTn_T;c;$w9VP8_?pT%xIz zRLOFf9%RJ~n0Y5CqQ<^q4(UTE7N!xr&eV?}ut3Ynn!gUjTa7p8lJR*fSQPWV4EQl- z*A~$3($rguDzQiaLMEN?9Nq20IkDSwPafdk-NZ|u&WH>wgyB7}Z+?aj8pCnihmM!a z!NoRe2TGgN%soFNadwx+nFM~r#?eaNmfYR-?{Nf^zS_ER-Cv`aB2E{v`=eo36;O3+ zjVgH*4fgu$UUdqdOAV34I%WkT7B7)=Xkc`}oweM$asO0T|KX&T8YsfXJS6xlC}}x8 z04lhVv~yUd^4IVymJYCLE1?dLIfNKOEv@%0nD5UZATY(Bb812{1tC)wXqPdN+ue$0 zB}0WB`th1=yP|a9EMtz65G0Nnz53mMyU`!RKhLLF`WIh1kadrAylDnCpmN)B)^*(q zCLd2}<*=Ud)#v-icRpcsQ5E6x@=vK$la_{FOTEGsQX{DszZpc!92;y|;HhMt({rjC zcFb%nPh3T$atF~L8UnZ|DP9xc_r@p~rYNYC<(dv*RM%`rWaA7Lxs^rrlx{wH_jwc&!$YT67-gfLm6E^hzVVB&niawU3;uj+E4~ z-L8a8N{kZuG18;>o!wjxrEaUu$`8cu6YU8l_0qWt%i&()w4ufm^@&k_CmerS%MFF3 z1}Hm!bn!2CrD+4g!yq$w2rQyXsZ71X(k_~T>i_Z`x3uUU!_96T4f0h24)Lx*eFZ^Q zRVnoZos=$Nl?udflJNJGDBHimVb;Kw8#YMFzXoxHxMhkxNiA+qMK|BxzuK2N4hsG^ zGWoxx?|<##**O^gAE2I<;lBauSsDJ1fcjERZF}Oe#(#VGjC6t_fueHz#chxW0#93W zU~Y0vNDlCZM+PEsB;=%G2Z^aq^GEF&b=7U=p;QcTNHl0yc~{-8o8>QYMOqcb`Ti&O z)@ZSK?s5-* z9$cM$bIN6}rxv;3F(5|PSNWe z4Z&wNYjGN8(#C|FZ}qc;yZP<-r!uLi_Hf~@FC_542En?{bu=jk((^-6w<&Y2@Y-r~ zLLL)>jzXBbY~aIh1h^dI5=9LIQOqXOh1pl(BwQ){cWSf)MHII?By~1g?<$C_BU}aA zZzZ^~)S)%w*D4UEviY~7c3PB=hjd0nW4O}F^HQMuOwRdToR86W*1CLbB{90bW?fVT zc!%@3L4~>X^?Juf)|t<#prPNch&T|aw1wJ_Y(Sun`?#ToHOFSWOb)4xbof}VEI?|f zjM?#UFh`wMZ@Pv~Lx4L!?0RIW*@CjaoNVAf&8Ww$5-!!l7l(j(Oy@Ss=wGg@u0K!i zIyu}#nc1P(s)4ro&#N|Tq8I&)PK02zSgMyT-8a}!Y(&}Xi5YxJWX5h5@S+aQR_TV7 zg=vM~-@(#T*-IRGZd|Sl&p1w@ngK{JMS(7Tj~m z^G%l5l7o5RB!d5Q30IEpbZ-#|t$a12L_#c-nPQGWYTzzLoIJPQ+ngM=Nd)8D8{kh% z0&2lAEgpppA8f5rcdiVi)M5IXk%aiy|D@;5#<~vJNZfuL)C%re&Ht0{)u-Cl;m&UN5}z1snY8Dv;vdk)O%}qw35x&zz6Nei-(t_hH&6A zm2sp~A}6p++sVQH-ilnbj$Td)e{YWqI31GNzK>cpuy8!J4*9Zu*LNzyU1y8eWLV?Z z-F~uMDD;TR7G^~>#zk`oEe+++^`_hQ6d_Z+gfS-@z7}U0f|4zrT7OT$LBrxBqqJN; zNCX}Ydwj|hZk5RUni68klt$O9^y(|NQ`TdHuV)@{2EtLqreE_xi!hg1lxWV^<9Uc0 z5c)|+kxLcH?_wAat{+D@X+oxpA^b)1wqojr?6x$paRPH>45 zk~o2-BIoDL{To+&LS_?ohpy}zZ+j+pD1JD1geryYryWU5Rf}dT<^4Rn3v&%t^oDx0 znObDr;gy4rZK9|o>u|Asbn_JbNq;WMcYHkM`wE>oi^{!L`s}pfx75Wzs?dV6C@3E} z^Tp`jC1keEVjp;^)c7P>E309#F23jCnOs z)(w4xS~*NFsupz*$DkAqQh153+{>wTVL25TV%e za3rM};CquqT<@7UqpzU51M!zTQ)$f^FtD8S@tH+a)@jL{b$warxt+|%M|HEngRT|vX0A<$B` zd3bAEb-4{(*1yR+4w>!B+VDp9^=_qEhi|R?p`I_^)`_*2oU(kJBWRvjDNdK+azc`w zm8BYu@jWTv3(9eTJGoY^24C6v}#w+CW3<@8H0mJ_~Xk)bDH2Oi9kZKaw!wN}D2@o?Id@uuSJ)pG*3lRyifNq)VX$n01rK=Tfp8=Tg`i2jU~?)a zn(gfU__zRm?=WsD7k2kLUwn&TEcd^u@X&}hyLZipSTISE#yKf`#2RbD^mj82XPLiR zL{sPEW7j7eT2))1;>=}fNF_O&Hx4@XDyzC+2Z~db>O$RyK}NaikZlbgZ8tP~PMexA z%U5D=<=35Y&vV3siKNIqt^r(Iq(XRE?LTV7GJNvPLF-q3 zWQ|$W*~LL;2~2D&Z_c*I=|4$kZnv!$pTOD@QNs1beFa|RE?`ONxo^~w@~e6N6tboC zosUmLvugxUyIjR42(%PHHksgSP_PSv2$o9Y;(iGF`Fia1(1ZY}YF7eqMEqDr@Q-lG z&C_L@ZIZX?Wk!;+_TIlKh1R#c_rmulGCze4#Ze)#eEnNR08Z~{B8z8n5S(=39;>sE zAOL3`X~m?HZAufKdBkzckGR^sDD&q$1hgci%!L6hkdT)_f?Hx2gRD~S5l;LoMea&= zalf)a!_$*6@*}wag1B39h1|W!lEW<}g1(HfmQ-*qIlhOez?vZujD)e9_BS_v`60EI8vOPV`TNE zvs8o#XzK?t808^v9TOJeB>S!q1x&3t#VN z;Z?`uGV0`+P=u&orDPCWaCS(hDUJ`WlwFA0i=tPgI8MpycuT>Xm|yK^1G}@MWCJ^S z=qeP57doaiohfam6rFs#*vCgqZvgLaqV7OP57W9FJn|X8A1VXBw;K!e24?cL{e<7|v3iiSl|}@10We(c2g+ z@If1Sq$`GkWbR#gF=01SVf;PUlLC^(_}G$!^z%uJRrW>wFgU#;*nI!4*$U*03oi_|cIZL4fR~TWXT-{?OPb&om%>s=gYFHOGG5qiAV+G>k znV-_^G1}qXpHoY>`&7w(3LoBFg$dQZUiu0hRHkSY_-Q;{zTcw&&PYfBSfTxmrNO76 zJr4fFTs!`qUB&u(7860Scdk>Yfc{>2g?sYuxj1toqDRJ0w%C!fC?$zEf?4St`T}WB zgTPWh?#>lgBDdNch3e}sF0LCm4#p6O)Z*jB#yz#OE}PDCORK%d^Ub17`>}L(qNklk z%6a-(!gY~PI@Y4Qnab?@rQw+>sAz%yM-bR>yqa1xx}yBQxG&hro0>OptF@M8UI zjPY~c76JGVZzr>=_@q0tah?GSzbIgTMK89D*r%)cdPy-WTg$7=a7^r zY1Txk&Qc_I*TeEQODm zJgsSPui;)2gkZ(JRp-H4RZvzH^D;_>N~xM+N(A3+z__CAFu@O(OmC(YV$UBPPhKps z>e3+Cl0c~|sa4Gs30i&|A;E;x$!_(MEX}CJSP^h*>7?oRn;-H$!-&r)~Dm&^E{?+j%&;I%`zdEF;AE>E4(#P4K z>-q_I4$9TJlx|IKSWLF(;2!EdGYm4zBk<_*+tUof)B-jH5Vg62^G09N1>Klg?)ij0 zc!_j@H)drkd{YCLiVM;NVo@SRNPk*um>0SWVpL=aRK*seQk($u7!ZSiLspB~=mVIG z@FgF-QXX*?#GH_wW^xI8K}|`x3C(9Y|8w9aEdS48JF=L-8&<)s{&fS_{&20<@g0$sp;3H=;!@DlMH2qLd~4-k^*67U=eLZW08X8$?D1rVfU zW9)xEmY5IypQq6gk5s}Yyac*HBqft-=z<5sphq+yl<<&@$a}9NXTX$%B3Ix7DCL}X zgo3v-Fryy4cO3xI5|LOy;`~=acV_MPKlrA+cby7!1>S!1sLod4K?C?=mLSioX@x55EP%Lo)r|DVgs4-mAQ@ZNNQNJ$FG0s?12 zArul4oSBlJ6HfoVUy?{9K-gO+fFX+7SAwNyuH(*szR-z_o_xYi5R($B5)8NIe~w5> zA|rADT5%Ni0PYriKlooE>7xI;V*ej1{C|-1jGX_AVrT!~E%2-i|H0}1e=YF2nwv?R zqlo|28dM-1ZEypy>*AWzRQnJ0Q#L&Yln&}{kPIRdtYyQ$w4XS?!3^j|qE(k7wFKkc zUR-qkVEdw_hE7d=BLC^%n)&&lGie{ooU}848ll!TOI1}>G!J)c8y&O1e|3A=lwmYS z`_;BRpyv}In>)6HmZ7fCzGTqeLAEsRsC$*BpWIpK0AXNgQv5> z-_K%avlCUx)gr=i-M()wrd$6`CD4B^+F8JVo-ptXiDN_EKBTc!sE+f~ZhjL4>xprk+_>W97H0+aNcA)m7@63g-)Yk*(adG0c2^S@~LQ#;{Qh zho~~`Z*GUVv;d^Szke5EpP9upibC>!vd$YYyB2g-3A(ZFo zi=z_+(e3_Prtaththr;~ZQK00V}Qr|OrxUD3%Ix*kg`67vUjY8_x@uAP{6A#LM}Z~ zRRyA!KK0^}5{g#F`kb0CfUrmL}dM8=T z@y2HuIXXju;WP5Fpol0r4kq(JY&2exC0qHp=tpYRKr&?}1)#OlI;CIl&?)W&8DhY7 z=MJOII|4$ zXfhBnj4zVy#o6B&pAB8?h+8&EOi*)f0yLZM?b--o5XniUH;DIce7~$XNw(UvmGKIc zwU}7Lxq&bSsVK5lcQD~9SRs7m6CuxWDa zCJvDFMZ9@N&CsCHIAU!~9?^psgZEO0#BBw(Dr?=-@*zhKvv00Vw*0PZ%WU4?&FC0l zp%vWbL(6`1Yu+g@Cn^T5&~8d(V#@68mhm)NfzC;+yFEB|+qADrjAvnsnK!*A_T663 z?B|kkTnsqh{%MEzw^MPfzYKIn!gx;IPZu`1qZ^vUey?(7$-V(v zA<3UcV1ZwbLhNFw!|CLbZAX=mEdc&=&d~0xWKO0i*bv_$>H?AjG$RVB1USkzB?XX~ zQ-s4Q1O(>=p%RxDwBqxJ2U+I~YbVyDo=r6&sz_$!vOL)w^Uq8To&cUiIrS5LPOD8I-H>?oiql+(62vP(5gZ-Ga8%f7D23;!pj>d;30l2SKF_6bFTPF; zliJTe^+#T^CKU>-6Jo_-cXWO)A&CN0YBn7+MSh+irrWdX00cKUN)9(~AR=bx#S8cv z-WL(x9%v%eQ-F0~4gdvlOzD(}(zoW0{cu>}d$yd+iYQoHT($}(+P*Cjh)Bg}b`zut z@NYqjTxBKWJE{iT4A{B&IHh;ZyCrssugZhbhm?XrypL zDMoi@c_gwKTamGa9*OsfFVqw3FfD7sV;wV9)Fb5R|M6F{P{c;WNWVLFYKu22Ii>fV zzsM^)I>5GwHXX$daBU0zaja`{Y|9-)aLzuLU!eP?yCe5&LRwYIfk2!XpQc@ZTu5&q zv4h$$rizN{@}Dn(x*(g0Zx=) z*|Pt!Y9ZLi<0ft$OgXFHGyX{2JxBo2kpGtYDFRi|I;W;}opC|A$D^48+3&u2lPNRh zZCgxJ9!RiJvJW`$aL z(j&W6!8tcFj1(k=-_`koaYz)Yc32mYuVVXG(SqQeKs^8dV(cA*H0zeM;c}O4TV1wo z+je!AZQHhO+qP}n)n&i+^f?nV-xnuh=HH67SLV+3f(R-Lp`^JiD%f-7PdS!oalz zL9DKPd@#cdIS;o(>G!x@HxT^D8EtSZg6m-~vv_#CddWNpH*z|@YWsyeOMHjS?uy7} z0AjfX7aqLrrlRmdv;l=SRYJtDPLki@<9!I$&I<^(z~hT}shs(72PqhygH@#ABihAU zHy+$J+(8*gLqUy6m|o1U=NWiCTxAh1;rG}Nha%KU)QWaYy_nWlAll5JehIVj zxC(T_xNMV#(VR{1e+=2;9DifP*TdY3_tk`N4~On@`9;1If})K1+r&unx)tYqLQe*8 z*18m?2Oa%t;&Vny7>IadDd*fvHH zdc-^J4%50~O~wNr$}^oOk0V9ACR(UvHmjDiw4chhEBpU?{|y13tX8JPtf#WbrfP6h zAv`^O-h?4zK|Q8L4wbgz2!z9?D#dd!4EJF!C7FS5pwPz6RF2e=H^Xo+{ARV&$7KgA zPT;&HIiTX{dD2|R>G(=t8d`tL*RUIF-)HH8&8&l&O+H`?&J#XHth$vE%n1v052!8ch5h=WvqgC#DSiDTn7UiW z%}zPPW?RBvYrqn|nRp!Ohp-YXPeUmyqDM&1OqqnGD010$3xs6X53>gcSW}-b`{f+e zY^jX1`iBgzZTY~+x&7yet+pwh^~dxg!GY>-<@vbf@^s$sZ4@bl9d9 zkuy`;0_RN?8*7v`uov4Ssrr-=wAiU{eUVf^p zc|JZ^P*a1W5qG2zdl-k`n0CcoiR1$*#Gf^4D&-$~=mZKY%QQhe5T1-y@l(g}sX=oa zE_00f+I#{g?f`-y@loZdW3E9|LRYJANrj^ef_GyQFkz{7JjW%pOyfxc0t}<*E*#2= zzkE5kdUC%VOXbFl`jt8~MH)h7veZAYGA3{K>m*KlwX~dlNS#8arN|)!4p%Ytd540K z9#4wx-VQkUf)tIN#rExoo&ue6$KlQC7L2$UwFv>mQ;+{^7eb0>fhceoX&w|Y<(FzC zGOnx?n%MO&Bq?!NglLf@F&+D%C}cEQ5fm|9;M#vZHf@65Zyf)ZBHMpf25o#2Qez23 zpq_K=^T)(=u8ao4L-R6dVxi*ZtO^a@1NZC@QjM5^r2FQ@Pz3|XgSReg-xhsLl)4EO zMhs`t#3IIr#NW2elOU#8;M*n=Kt>na*!m`<955JhZGG=D-hw6|+U>E?d&Ulg;J2$F z1r9+V=n@xZ2KXs|Mw}v2(3|5?NDP@uWyd4N&*>M;JV%_`&$$nrd;tzT-{t=&fB3&z z#u-_e|9grqGyOj!nf`y2aLn}oRDb`k{&3*G{o(EE9?hUCZA|-KfRXjFpPUk-O@#9( zs_L!);xR&~AZ7sfZg;hxNf}qTK08$j2@)i*CPl@?w8gT~Ug3L%Q3kI_pPSg$U7sl; zZ=WKfZ&L`V)?V$iRP>Nv7E!b5 zCO(v%@@eVDn3Yki-DPjhcxX$shM6u8`_12-%!r=OUsuK7`Rig! zi^@6mrsw6eYgU?3_5H<15znXF&EUba?Okwb(G7OPWS+ z9E|#ieJRT|lan=#CXV@)Oq+D`j2 zvnKQwmsDbv%r^xSh4?XcrV*RQGK{e*8mKzqD#c2#>amj2V8aOlxcXca;4WmsO zhq?&^vzs>o&JA)|Ww~+p6w;8pwemmB_VV?XBb0(z{N-j5QRHe5EPjqIMckQdU6^BL z{^25WREVB=@{wlROP75_Dx){DvuMOLgE*@vu#ie<{l5rgv@>>SOmK_YrSj`j^X)e# zNX|UgPz6`w2&O3HY+H%xH8yGEj83JG7N_xW$&GL(5RUI+0+C_zZAa?B)gld+24VLq zD9^eQF`%p^!Q0U(5_L;|4WkEfo&SOFC!8t$l)D6rO&uC-nI__$8%L=IzV~p`Fni{e zZlG+Vep$v^`Z$$iIqa*^#c^d*=Lr6pfKv@&o48gexxtnbkV+DIn?~DQ$pK>aLDk1R z7vw)IZ`K`x6H;@k<-}kQiz6wLuk4ysQe1@@REJP|gAMeXqFz0zEW6Bv5y`%A??J{0 zB13aTLs~Q#WnMVsLbi3d!p$w)Jg1|1Ck>N;W&Bgjj`XS`h zX*G1I6fq^1>j`$P3+N~8*nJE}&`mX8H6N~ZD!L!V5wDC6rvRd}uc`42-?@>VUf-lE zD%Y2XZ%&uepF`1rp|1wXFMBl1^y~M4QK3=CyeDUM=9D5L(dnPA_?+tDBg`1O+9EB_ zSg(nFXDYt}j8`_txPUO#R^g24Jx4(2`me)F(D7Zoe|96WCI!;n}=lC#3~1QjVyOx=(ZP3qv^MDaV2R-$S+l8tk)@aumKQkTv);F zTE`}KLF~_N5tzBoVDOKJBm!RHLBSCw3(Mv|i~Ga058s1mgARWb6d;}honz8D!;T_D zjw4hkc9NU8ZF`}tnsw%P7b`(Ep}<59;>0hRVkpXIqyXY(TNP}&D&ds!JHdlLKf%Fg zbI1D!PEvAu6{@++0}Q9X33$)t1*`U#QwOgC1V1mR1BHnLG-hrbhd{}XJjIwZz)y|e zA`^>10Z^f7rEk~XpMk_@r2`sZ0xaMla-C%7>~xJ8_%VDzXGZeb{TQwhbxN?ZBt!r> zkUjIxGGIzR$9*(Qjk#W<*aUzQv~#iHwTFm(sMvv8R|TTke@?H)iktte8ul1(uBlQI z_sXewtJIf10waV?%FQP3YfVE*GLZ@iLEL}Q2@E?B0ft@&;#`p1MgU$k~L;^j&8xtdBB=mWeDv0BbAsZ+s5><*XR8a-l4_AP5W&Oq@p@U)2n{K)& z_v{~_62sOw@(ZzVc?y*eFDePJTH9}n8%&Y4Ky4w!J4`{4p}c4pc*cdDoA@p0JISSm zR!o^8z#Bc7ujJx9>p`U)6ee2sYRb1G-(;p`pjeTbpt}#rw$wy*76QqyB*fQYIGZpD ze@T8@f?NMm4#q@7Ia+CZ#`y5Vpt`rIXU9jdIJx11M+42XG1P5l08yCpmovN%KrIC2 z=ft1M8Bt|C6mB+s?PkR_t_SZ-ASt4!#;KTf=#*Hks3ynbB0zAF_|^kTYrGIKQXW#m z;Q|bdcWL6tQK!8E$60E=pji0Swd72>dH1-V;1CT=SL#*6v zR{b0gNeEkla!@_d_Tdscjw{C?q}lMcM0GED+_kVnju>L^UloX4tDhhcE0n9#VH}_I zz=u6y?}I3r@s~TZyI#$d?YFy4PF>t^)R8BKFFHI+hvQYuP`8Trfizo=>a0<@dNwW; zRdhXDbJR;%YLA_sqe3{#7X%oPQK-geXUdFzV>3qa7Nz zebD-aTuDS3#P?ax85NL8$-(-X5-EBe2`OfiM|6V^;dKE))9dcb%YX-Tdn#uMJ9}C) zgS+e-V9JMSQ$0ip1`n}%rp!iqXR{$*D5L0=u#$w1TQ1VaKth-WS{T}q|9f8`I@{qv zoCJYSD&e-@m<8sU{))q9#vleEf6ZblB$^rpMmCpG0cYY^kNQFn*h=sa&lZH}N^tQm zE7DONmhIIEB?HZ0j$|M=y*;^5XyyRufQAGv2jeVX7N6e{8I~dlvMA8K(o}h%9ig@i zx3IwMk?%wUds&5(H>$W_<-`HG8XyIH7U38Igbw)g#J9;e^8l z^)uD+j@}1NNqq!|y7+AP5;SROL=9dP!^MX0?4p)@0F7sEeR?K~MpJaJf8Ovd2VzO& zQ>f0@Ug+H)-7O~Vt+{MG2b!`?&SZ_h@;BB1$&%L3-X|QW<&5jjh}lJgjzK9}DgzVg z8I+3%iICsXvh+5T9wIPgvq%Q-#St|`OHCI>5f`mKR7o0y&V4E; zgF`qZC*JpbGcNUqkF?}tTbmD&A*gIAB5{*W=bkjlPWT(1b+th4z|KldvydMRP^vL0 z`e}8(@v#aVKK`k3c3(vy2LmJ`2kduz#?fGbR&e}kW+f&#E`AENnUUnxxC*s#5kNGD zw4t*lG2i0~etuOSkgs~YtW8iB!WZziDg~K~x0wY|h>JZQQ(U#^Uksts_g^8pM~ZFW zU8W-ZkgA1>Uh+L0*kIwoSxXB}J3SAS9GuWD^wMYWZCsusnimBAvuBUt_>=Qt;l_aM zFjtAi4uF2SjI0OT52B@dDQM+bu?qJI`l`Pv@T}FBsFezoet-Nk!jV2|ES(#Lm68x7 z?foUP!#5kt%~cQkgCR>B%ZZ6}q~a)y>J~Z-Y(6RyMfEx2+(j%t11qW&a3Ce;*M_96 zD~#rTltK3nE2K??-*y}qJ!K>3@}G%xd!p4W35s1|&!4ts)p)2u#s}oHyz2y{NH18nd$$l{q}z_ax*jhQ&s%Gx?hE=n|A9>h+W5uJ5_q52DflG z3QdOD4s-Fi>Wr5W^H6DiMp+UCk_@+_<45XKG<+ILMs19jE?i)>E7zJ-kJH|WNw$4A zrq7zVad@gp7i|IY+J2ltP$C(7G~?pu@zfSuJ=ZiZjJy2t(B5Oft!n;F@GbRQqzJJ{ z`HUth_$+9tB z-+GeWTDI*sE6cZ=veQ^dZ>dB++-uQgaolEcUx}fbpOfE#C*4=E< z#TIneIRi9n-R>Yeh}M(j2;59E{;A#aCQ+ceD$jD*`RLR|Hik%gj_T=j;)^)E07>Xt3JARJU zB?s>+VdnDV^M@3ks05zxF&qkb0B=IgRBC(iE`iNLHdIwtTCv6b#UCB=Yq#E^azk;H*kP9 zI7R$4eplqFzP)7o5#2!*Xt!R%F6LbYUOeWxSVyRjKva|{UT%OO2D%6G2E;dLXC!S6 zfA}NUNbLeGJx4>lTas~X1Bj1tb))qF5{&OElL8J>^s%P$;aW4Gbk4;OJgV5Z9d8ic zTL=nZ<+%!nq4lIz2w`+@M(6uSv`eXwECx%CBZm~&Fc#+04@=n20!@I=J^HD2%v>ZfQo=b zA*5$RfZu<^=eGstc08yrp-2u#-x*=x z$ZWiYZ_t{?T~Efn!7EL2+1>BpY9F|o+yLD{PiMWv^;c}CFwR)*$Lz1Pir0*m)Xi}A z;rZG`byc<{5EYk>)-uytyR;`o!MZc-d$$YHq7iycQmU2@>@a(viSmL_fbp~$Rz4@m$tVeNFe zgyxgG-%)fshAt*n|J9ieQ=gosmcOSZFIS(xaj2Eb$XtGrIEs6|3kV5`;x+dtjwuEZ zqa9XIa5FJ9=}Ij)9Uimrg{8*@lkF0|{s8(-jWeJ6bR-)N#dc-ti&>Mt^x$WrEQQF3Ba=AJlNXoT z8K9VNHB;I{V)GhvputQ~@(O@D&!2P8c_MI=5`bSJ= z=isjxA`+YJKVpe1AW@m$N5DwL0!+o#@Dg?4HwAdU@LDJ3{sV30zrJAqeC_C2SegI3 z_=fR6uu3p9{-0PSBGuLHu~-rR(pJLO@448(0I0t37m*8Ny{N^pH&s+phhd9r#bc+6 zA|IL_xja~}R@0~W&q-Ncv@8hZW1XCz4;?^B8cZR+VtGw1cd8opUpaA4UAZ;H*~QY8 zw?yKsn{=-0l(93aKowCnNBrDP?(RK;dT&4XJhiQk4aB=+cIOOKAuuy`TmLDuN401h zN9u<`X3$@BzEynUz;rdvB-0|34|lAZpS?18dUya?4orhYL39=O*A@H~%3UC)4=enq;}7yK!Rn2OROy2n{%&HISP|^=@yk1 zAgmi=na27+gV8r&b7@3Pq*0I|bwhneVl8hy>LgoHeXR2$UihVv6(5<8w$RL|fGfBJ z=~_`CfuuTfVj)9b>k2Y2?P0FSmdfQ;^BHshC6Y_RDx0dKntl;scrdOc7V!}_`4#3V ztLD`!T&z~P+Su9PT?{Y!((cg{oWWT(Gn?5-i@Vj|wGx!u)W5?0oK%wxmG~v#OWtC;imshA2xfU%|i7O%ZT# zw7Y1{Dz%uf3ABmNgi$qO1GlCv5~oowj=N@RSqRfAVOQ$|aKWh!a#ww>iV)?Cvq^zp z7z63sJB-^cy!#%XFgSV6ZCf>J(<6+r%CdxQ!VKoix9-zrc_JkMkw1Cs@7k zF5$13g~gsHf|v(yS1Hr4oh|OidDf}wKsArUBg!Hy<|t^(FF5wd_Jo3f?#?FciO4TF zgIbI(Oj=DDOsuoR&S_YkYs^~j&W+YMG>_Md4X!+GddOcx2Y3Ua{*3x+p<%O1IYke7_@-AY_rjLYr)Y%2|2^ zqo+KjvYBX`YQ;weZ55GxF;8@R>xOT)tra zvx{Y-$$k9cAmGmSc(cQ%u|rHOd_(-%)4yRY5dc|^6NOYL{@yB1zSHl9Wbqn#RoHq{ z{P7udpCyOx?Jc-Vidc?3xuz~YGjS<7*%f2>xbM_jjGSI8-G%X-W3%XDH4qUE0qk6yeG7Jlqc^ zoK9Y>PUPrSWOMn0UD!j3LB{q%0T`CrH;gjsaTcolgai&-uGhk8`9;)8vUI#hlAw+V zQtO1r;qsp>q#q7OC3^2{7co)fs=AFWVcRTe5k+48do_hFJ#6~>N+jPbFmHF`Pz<>p z2UqMNw;~_fR`3g}VG19ZW*(cxbC2-1KfdC<0Cwbne?P`N`R;>x%ayKo9oX&#go3rw z%8B^ufN66^hw!c9q~kokV0KTLmM=p)m*B-v~W1J+tw_$2GV~VCJomi+~E^>YP+9@31Zr%vh zM46K8Vn^vmRstAP8cDh1YznI@eXRIc8{HNe4>dC4Y(bOzS_O zQ#w}!nV4k&>qkN(#!6^oe1}d>82h#E4`VEkWT*WC_Yi0X7bv2FtLlUc9f=5x*7LxS z(0^=$g0TIXo9q%Sy40T~)jf2UwP+n-c{^0)#bw@e6JSpr5&&0MaujfsWDj(E$q6;y8j-<{t9O z6b68RWx#GX4ket@1zBW^zESU&6dDOY5C~fpvRlqY#nzD~R6Czri7bezmZlTMl#23p zvQ@VAo%)Zk@i`g{6xY5N{bO2NVf$pGO$Vatu(_0l-5427f*RNwi?C#KG|e3)hql1H zHjUoy+_gvrl>kFKgOVpbdlAm`7-Fk-`Qr_HyneFF=T1re;KNDOhfkHymOR14Pj%TG zPt1U+gXvz7MM0SZqsL(QeI;_(@*WCRqo=Ppys9sTqH^-RiE}_rf7&pc+&vh_+ zC_(gFkhh=}^PE!}ImUbM$03My+1^odEX*YjXxTUl>7@6BU**|oEketoV(eom)ej>x zX$~n8eWqYcg(gda%u1gDrLafig|>OA%#@y_%;wh+?%0IDz;`oTeD5Y-Z)$Fk znHFW~)VnB022t8{wLeV%Y@Q6Obhw7sqSBh7(x?z`0vBCG)D)nvevp=copk6Yr?Use zfGl8CSX_N+t^<#Kb|;&@tPCLC8`8hvadRk^H=MdSECDysWy(&Aa^;;I@(!Ph@lq(; zzk{q@CI9Z&f!}>q97yiB5VkMso|;A`m%JQi?F2+}bj-^!q^{uOH(c0S)K+P5SS|X{ zEP{e&f9!d=X@#P5-w__t{dvYlSC#^ITh+*jLqyTdZsT+eCkp-`q zZdEU8_U<`BFt&8M&YS7-qdwTQ!h|A?K@+V3A=L2aYXsG*p)AmkmG&v^cw98}Y(-NX z+YlDM8G){FP=d^{FhK{w5`R#Fa-l(jHiCuTw0jV=jsurA)H4HqF%t2AZTiK`H|@c1 z!k_6$yD4BQ+Hq+^Io9GEWmK^Vu?BFc!Q0gx{rf2;y)p>*-=_ikmH#DT)+3&(msK@i z6V6QGy)Pb{SeElU7gfbmVes~TR(x7Lp76MEU->hCIN;o|R-jKJSxLPVaaC#s6?G20 zIwNlXRHGyu#jg6`?>h*H0+>jK=NskFpad}Mbw>YM4cV${7h(nOSR;_(r^~I~-to_y z;{Te`SaTLn8C4uD<2D6};hUQe$(cnl8DXZ+A7c25)X_sBI}X|ReFX&p6>QmM0URpu z*{@*=_N=Nv4mB~N*gtWKGl_C&KM!<9ZyUJ!I#E?dI(sNiBuc_T^e~Kj z;=na=Y~3cww?W8=8&BzcmmF>& zQ>7CtT$@@51ip8VfFT}FPjZ@#hg#ppwkR0|W$Skc0Az)s`-Q+8(U_XEpT6!uj4rqd z?Iq;{l1KzWeX46!HILxjI#y6HZ`&d+E?Ru8Ux`5HyamLYVJsFSQ+?$@$ww7`pZGw~ zOUruydJLhSThorRN}H@K&&v<`6bmd#iNtVhdFwTBNva}arq6hOQcxn^N%m#b{mSbS zCRj`D#GG0k{!;u_S2glMWcL)xTLi||95#zq@N43aUeNOIi9L2asCXl{WGU}w0Go!V zv0V4)+rVj^vrJIdJjZ@_)_sGfkmHdyt;$eV*xA71(q&^|ub(VX-ou&jtpK=pc-jfJOzs~A^1bVv79^D@Y|@lh0N%l z^+#C5timSev}uXGip@lvOuW`?$CPPZnxvPRcia5lG8#QFPg1shj5rFPzFiq3>dg zP6IcJ0H`c=s5qXSntmVaf0R=~QAcUd!#EoMAb@>+Y4a$#L4Qa??(vqsGHsV#G&iB7 z!giWV+9gc{28J-`FDh_=u}8O(!{}%waGM2uA^r z>aH4p;ovIIHb1=DRb#cBU36io9#^WFpugy){me|P$v~Y%nl@maepWZwa-@rX{4I7!h&G)Hrd+*ZZ(eY~XWOI_P_Z3-E1xF&O$gy6I-b<=4 z=E~0(eRX#tRlN-3Mmjt%kEgrcSI@``wZ8{-Pt1R}`J|EobED*A%cgl^kt@pH;3^vv z2Gn8HNYKL=1Vk7hwFq4iP1B_sqlETF3y2&Dl&4J{(=E%mSY9u}@t&sXa%D8>TJ{xz zr+fGqXXR}6^u+QKEKZwWXKpdo`d22@U|-au7Y1gdL1%*KuxdP} zq}m-kVM!$Y$i#e4RP01veHrHWRnr)#rG07~%SS<{^EK8*qtg)M_QDZ05f)hL9HK0v ze}aW#szZCQNv*+Tr4fr7e1_PnA?o@tp&tdy#QQMnD@n&PXJa5mp1%%dkPf!Y_&|v) z)rukPteJAshz0I_MOzs$6?(9UW z38oY;B%au89Bua_ia?nT(mGYNVuZX|#8kO5wx)AvoJ?d|IX*nClO#ufF<$uUwIoCFr@%QQ_AI`cBV`PzvQ-l z4Y0Dqlw$TY{XJC%<{tU)TZr8L>k^9qO%(14oI=p0m>0dmKWgxwRygy2MOK_L>+sOK zRi)`|d_q}?m`eT!O!60J{DVmt=-B^9og@>>f2fmW`lp%je@)aSs(p{n9r>qka6;3k z5q$DvkCIo8_|nC26)SdYZD0zRN&vCG!$q7t>~EPQ1~d&K;2=e^L?!z?<0f}8?G0Xl zNrc=N?Pu3k)KoQeD|ZxnE6xkbBpZneLpr-1xd7*T?Xm<5(pcwGOSwI963_Z}H@>0Te08y>}GDUbCUmlyoW0vG*p~QHDX` zHS+WWT^7(?DU;m_Jq^sHY`XGHZ-YIRIZtXyNBL3k2Hxh z6~u^IFby8`RbyydZht<%9BQiX5LZ+<3yq`sMRPA0JG#WW_*7)vU@J|4t)mHxUoAB| z8+qPEh_ls9EOWZVT#tOva3IH3?v0mDe%3kXAIi2&4W+n7Ez_sJ)Z;Cc|GA1_DkBKP z$W7=pcn#zxN|;sk>(*NfzfiuJ;q-=94d_?q!cHYrcYIW~rGovEV4sXAqM}flwDO+> zOIL1ZN3ZMra=y8(+0KYHlu!DE7;k@wy?AW@LJsC;=cyP!Z{KsdkEOYWwEJ4*1xTv$ zej?}|XJx%9?hp)k?159he_uBuvwo&<&CC-~Cvo)KF~`uc>=Ybr6$hPWGo>1>4yTM6 z`@xW#5T{Bo9*+hDuw=eP>#4 z^T_1pBE;-nO7h6)Hk1;~bEPuq90Qb|O$Ti(ej27{ZSBDaJUk_^BQt8RwSDymhQFct z<@QO5aY1ImuEx?^*F<)OcrE|9-A2qy_o}&->>~N&!zvN4D|UbL_51G+@n*M%COio6 zU8u9pT$yQ&x_PZrv3pm|LXXW3GS>q|g%sZl|Ik(MwAJ+T7@59oCma$CU}b3FhHO3x zr5^eF$5a~XIPMW8GpzDs5Vy&m6)t|NHqC37^ z#)DH=s+t$D1W?{~&FEvEea$}u3WC|Ck|D0Rm*5yl)(TS$`we2a3dhd3#9vMUPvviY z>6llWsO@#GsX^E(rc*CnJYuk$qOknu`sLABmVa0;Qufa1;vCt1>1BEL0^m5vdu9(A zlWkUEIkcV~fdxj`?)5fH=pOVCK?3&|{DVbJS-h0lI(`|!A(yhY=}+HJ-<|4yPqRlG zcyc2(8Zt7q#Y9yf(l)*AlLbXjzk$5mI|z`%5QV`uihnAzGPTU%BI!B`j+^i}k1piC z_X}Qts|3m)|J=#`T1>V7!TetF1s9i*9#{(_)5M4{oH9tW9|i3a2luI$qQB zQRPbIf~nl?is4aZyr}QJWJ(Bcdsqs5D7ztwQb-GqE)|>wdEfh}sIKi1rT8*6M6fj6 zEsg};j*`eq0^2M0w7cEie>;osvx%1yz>6iPmgS5RZc%!QZ71pVHfzH>p`E`HlINXJ z&lITjZun*cV)cGfJf5$^Lp~ax)x9N=L7|_ZtBb4?O5c8-cI3wu`7968g1yqnspg38 zNw!Qt(P2J;T#;uAgj15p`=#9n;LLUqfV0Z?`mF3&#-Nk~(*q3h4eV34wwi;7@$44UbB$EW za?4c)q;2B=m7|9jSR2yJ)nbL`hW`a(h#CSBh(FR+`rU&n^%SC1=aq29EhiQEcZJC< z2kpw#5w}Qm^}t8(#+C;mAG3b)z}FbpK)rVuHAjIgIOQryM}ucu{UeM=xFGJ32=jq& zmWxKS3Z#{}`bSx!%XlKbbAn9n2~w8`W#-O~JB zek;#2-(MtyngioFg^FgrFFV}}%b5uO3HSULF#-eq|HM7a4F3W5F#ppu^1tGqO4ady z1_5l|{cIZx2cSWizZNN{gmSf5l{knXqNpn1s`mjG6N2_*;L})oH*NZ-Lj(+bCWk>w zh$dO1h3%Nlth}oy}!Tt*_-!` z!4OxxO*b6H)e)HK_-b@=lZuWZPg#KZa6l~!-L5{(Gi+*0YfykJfdc2l&g*nIlX(LppK_5-2=6=v+Wsv`yGp>fgpkt?M^S-KK&$t;c2ZnBwWZh zSTRcs$uk0@Fmy*={`fq|$Wi7Gp$UV$lBn*uF#lLb3G3lgo_XhZ450nJ07;xCuvZfJ z?A2180z^@r9$k8lF)d?Lo^cDRtg|xB(zSyBn8UsRI)oUlD@D|xBQV$h*-_Z z@`6+sf~sTdkzI1mtfUyJo*j0srXBT^N0V+f z%kAxLmle!eQE{YB3-~nBK*X|xR!Oi+*prSB&jC$tpNaEb+y|jFC^=DsL(Rnl$;3kd zu&?rqZYJ1qslr#haB=9WL`&D1+fcaB$r)xUD`PGa>MJ#vHH?iXEx)ckJo%NbC(ucA zRcG1wLNMei%3zu~&N-|fAusk@kt*rN(j}}bf~VsR%~tlzv9ZgW&{7_S09A?;Oxrf3 zW|c1%lRl@tdlczUKa!)sTIA1O)?GOfG7(w1Ty5p;s&WIAy_ls)lAyld=>-yXCwz1V zu=}?U=RfVdY(JqEvMG^KBDI#Bh3Ao9Al@;99Hg$%CPVSNY)x(VLFl0o#N*qzh7PkB zt0zl5N7AHK!uJA<7K_Xnnp2lZGiGzlJLcUTNqHY4hK|nUPL0*uF{%(ppmgNS%6D{y zOs{ofo5l?MeFwC1u1FFMUiBuH^{`wP4cW`?C(Dl9>4@$b zZPs#jEa30-RugTqce|aZ9q1ocF+$C%Xz%wbg%j%m&gW-D_L+ZD>UsWCcpWDUX^Sd zL9|-b2XoRf?EJZz(l_xc!ScI~PtgK$`n~g~PRh=N^vy^x;#cXqJT~X9myZ#s=%aR( zhc{LrL^bmzDJ>t* zf-?#ZZ1N!HMTzlB6W$NSPVLP+&m4q~X6?mJJMkG630uQq7PVuuga{lZ+qVG!0cmW{ z8Gd*Sb*k~;D{!J_^^eqs!|T9gu^!1vg=2CUjL}#TFi;*YmMf~Ov~sQPiXup=-l31@Rh<>YpZMimq&**0MkIE(7I1zO4vNAcb_F}F1jJk@45l+LU{}bN7p(nn`v#z!k(sFiZLN>**8#KCr`ul;wffIC0e+iYhWk}t9R!f zdm8Rn`M9iB)egtgF&ReXo^~-N^tG>H%N1inMkI~hLC%Ys55AYi9v7}>Ohi6Wk)dcz zwGQIbm8O%0Z^FB4C<%vST{j8O=kboOIhuuc4WsT`@$%9+e@u>UquDZNMQyX^HFWO5 zCLbN0y_=E)jXCY=yuf~7+G~kYS4F8eQom15EE@T%juvUP?gKcNSSUX;mXS7|>x^!& zLPSUOv4_*{G^`_f$X}1ezio9F(%!Z~+jZaA(>g2iK!Y8_SiX*C%x!OcyPFBNf`u*9 z*a{BABT@QBXG{+X_vjK{&?IQZQk*hQN-2BjGQBdbTv>{^gXXfJyjhAk-|70&f?@kJ zL$*YY#M9f1BXk*RnMHc{h8CRC_@GB_u{Jf-@M)q@1(O4WjtjFbnGzMwEnd zUyIul+B0E2w6NqS7BT<@VgjhDcsJF#qjq;Q;fo>b%SwRs1!Gz@e`-gMcKOJz$G`mf++G8vuy$DOXh_UERhl*9ROPx@%;Z7d&eMM+GSg`d$xPFZQIst+qSLQ zwr$(CZQHhO+qnI$b61=dCsxGX|K6y|$S422Raql*jDd%LurEfCH)De>IUE#RD`^xn zous6-6pq?7wsfAS?&51$k4$!RZ_LE?iY1x+>O!D|g@Ny{wmE|sg=mXGRlgM5GRybO zc?8dyD=0g!K^9lQ*UUBgTWmjv$FBYKI2x7JCCo7;gh=&3X$z_T$-NqJxlDy(NUrpL z?^rjn8qae=$#myi_jL_8kSvxmW4_+}%7Z&(AGC`_!}Z+4>JWb{bT0U=0FpUy+Zq<^ zvzbPGGK;#X`LGAU0xow3O6_iPNKlOEz2C%fk=YUAIUJaK)`sa6Pac?r-d!7&{El(1 zw`lVCi+s1&U=ywyQeo=!rp@)XjsSV$uFj#4;6S`K*)=yFet0NVsvXLZtv%3pbLN}6 zy^!T*Ja?Eq`XzT3anLm-rB~vQF(!yaA)|({Vbh9CQ%HfGb(5#KgRG)eC44%zGWy5M zEh?uCHpR*cipo-mawhHR>!Xf_$NRlRw9 zVnckeusJR`;jSREp}{zA=#IC6Z`=~uS_K*D68%8{CefWhYCX#}M}jP7)OXWwpb;{i z#-@is**9mCW{Y{_@DCYCEwWGq34hpST<+L(WPqRTT2@~yNrfv$XxIcG7`OljnN;_k z+#n+j+O-aU&BD2z){~^Dbv!B21-{sPP=fhl(RcYtjAVSDY>P+SS}#jLaVgXK!xu;Q zASi#WHRubxp|E!NFy0}*6$wRXE&-crHb zjnZvLtzLP4K*XXs-jkxV_F|7qaQ~ z0nIpXuywEqRV?>flQ&qalsGNBwPJlpB4(=p(jSFOR!>R??=4r!swIjKrx}oD%abjL z2t^vi6mJXn+SjLmHIKLdv|tK9LbDL~IA~;a3v1miaz!^uR!(@MSNR)c$NV1 z6g3>HCH{03VxHt8iThgo#&kK4mXc=5RFT1pVOHsPjOap_1Rg;@jko>-wB=OoJcuHNo0|u;@17dtiEywP}?(QX;9Ep8MnjM}vgl?|W%OusTRx2IRD| z_5^N18aK5%N;0tnyVh@OV6>MReWJX?WVEOCtYRU2rI4hgUUYVtu?gv6~%@UMJ<0{7v5oep!0;-h7RHUREsKNb(*^ zY9q3lUzexd(Y{XVdu=mqmY_RZNR^h(1i#jbI7W`cH{#=&An2$8O$Zyf-TOrq+@AGW zZ8joWvN;G0OjORnCFO`l5`oO5Io@l140?K1V`dR@l|7C1Zau@QOZB2ar&7tEFK`7tJDGuN6Ye1VmBCh}Mg>?VXB} zx|%;W)RRvrFn2ugM+xn4KBWQAT}^G7S8W|MbmnV{%!`WB7mO+E;nR6@p}u32PoT29 za7aPN$F)|~30Cb9xS9O)Yy(h!oB;|QZnDBa%h4c#zy}qD)C{2qPge+w(u$JBP+=MA z%bvSvf)6@NE_u@I4H=%Kt{Py!^|HzIFVli-xRqzSlmDO&A8igzVC{9yvyD@#%!V9* zaxv-^A?Ls+c#ejZT_2Tsy{H=EQugC#8E&empDY8*rA#bW`tV1Z&KVq zJ0Kfp8xx3i$Tc=dIIPZA}1ZqTpAIF#2Lajz%ZbATMk3iH4dN z;)}*83q<)Xmei^5DnucekJ z;dCu)j&c(<9(0r2o|NA4Cgj3GgeCuCT5*U7MMcm zzRaNDrkWr0_o(Y#NHH)!l#|fxB;1oEb0$dV`35bqeYJ>o?3uW+EF;D;M#(-huiV0# zcC;qy4LYj90FQe~^uTx2DpF`IR0IfEVhT~2R_??-CMX%93VaSw1m4t##hMsu+zVZv z(0D=Fy|&vw5DJ>DlTIH_M!QruZvrjK#Xaoa05s$d057ydJq%C>952URryGAx;78Mi z9p+c3_@hsxhYEPFEfk#Mt3W68fK8r2tC2k|{;InR?43xo9OFJSq(1zp_BBLpG&~}k z=^hLId0LHY4i!CN&^W3mZRVkOXdG~HJj)b$_A*((`^Z(zi8B?KB8K3hMVUxMxmUA? zOjQfq`fFdFTZpZRg{?9 z3Oc1rq^HHF6=IaxZHr&Hiy6U(ls#%O0bxuR-!&0~nDSz)w08D*mt6Zgkl6A`lK|JX zS`pTW@SrsUn|g6!BFXzh!e*k!(c%$TrTEDzq_jKG6Z~bSd0@%eErS)oA&7ZQ! zgSZ8{In?QnntztSyT(@lQx=IWz1!sbfu>lAwLya+|21#>&^yfJ>;JJflOzET}ja`Gyo+)KBf&3ECwrqp=d`sRJaPC1Er zvV3-$XE|~mi{u(yhg#hT*VAy$DUKC z!4@XbIFYE}LB->F)+t%3N!%@OZle)`X_fVyyY!pntb%DLbgzctbjf5+gchtD4*sJg z2R2#5mL3PuqhuT`lKM3rcAOhY6&Pfta|(=D7CDQ5qZ1b$_D@_a`u~Y@C0Q6u`sZAD z`RM^?GLP)jn1j>;^bhm@bEzTUe?#ROywqeZG-m_$>L&>4IwbsA=AQ!y{{Iw@lCv?C zPM!S@qIZ%d^VEY?U`2!l?f~oGfZmgiHUH&v=3k#E|5`ny|4&07mVd}d|6Kl0J}%2Y zv;Y4Q?rv25;p4KPbS?kzab-#ML%sE{H&&!OOO@_;-$gqw z>o1%EWDE4o+D|8~MB0#_n|g3UB8D`UN?O-sI5s+3abR{Eo~Ef99y4yG zOX}|M@VaGmcXD#P$7)B+wJU77G5(l7-4fE1yH|LBMHfcRxHleKvf{>Q@(o>uE3MVS$+GaV_;!q3mqfKj22C*K8HGn8a z3OrahT2;Om?Fapqr9S@|U@MH>Y9W}sSa$ZRmrwj2U!MY2Qsu6;8pZ(yCwFPpY7+Ea zMF5QqobE`jF`93P-83CfUVN+Sj7ErH>F6r_Fpt_R9C_!jJ-wfOSaQJRw%3k3i3(uGfqh+ytG@Ij8tRKW>Y%)!=TqJURw}{O{L}eTph3XbV@hq1FpI&d% zW(l?6+*ZVG4wtgg$H`EtMr7>scJ#Xau(;4muTARq{<`@jKou(nckHTCU<5BFeN!6)y&SkKu$e5! zJZn%UAGlks!bIt#f#Niu*~-Doi#k78?5iAitLV450DoEmt#hzur!$xMv84?7GH~#; zkwc6Mf1H0z7lN_~7&-;a;IWa0u<|L?cVKq+mk}1dFU6-`trtRRYoYn+RdK}b;iYQc zNyO|;e}z;6mi&mM9WFb~mXsJegT1mf#a$?vE`^sE{Ww>|?-L)XWpcSz*wcraP0j_W zN20h!DPoC(U#p^b1f@4Y+sUEx@JR!O%u&_N<%1pSQ)`n9*fhZ1r$P9UE8xHHONVu%MKEjdLLEG?G(!g(qKeK+51h-UMV*ip?3~-&On7;yWmT}-<}rw zB+M68=Bsq$YGp2CfcX5Tt`#0~P-F3d6ht1OOTD)qsCdPj@KrfEvY{5yK8MGkR6cmZ zTiB+8Vjq^)``xoTlD;ejuS(X4R>hVi7O|Yw&+hfrxTX5FiOoYBaxb2te`G+j2de@nV^vh^O?63AlIpLopSzA(68V4!Hvm!7=hy z#kjn&ttdyunFb(`+0sboIv{4=Yp6_=LUMeoPE+*$Co<0s0c9^9t za&m<1`Svp(_`_GsqTk~`+bq>VQw&GxOQ6u}K%!jxoSws1J!^K(jtB-_n?oWEBa3co zG$%yGxrE(J0~;a&EjefCny}b_d#>#Pgl|NbO!RtS4{`-QS&*yfqPKfMwid=MG3gQh z0ORDYg_iyCp@PJaaH&`2qAD*c+#|OrxghDqgh>9d?~E)4+3}&tAVXtZQc6q+GOwCf z|AV$bf?Va#A#0b=qX(Gp3!V$3DpXw=;atZHJihEmlygR57mwPulMTm$;C~cC4kZ18 zaM9j^VD&olDDH<&9KM6n#^>Wy=uxtd%TG6B<_nLH?rR3-@`okCi#LxnAuM2`tDilD zPIU8bS5G0i{=Gz=a+LfewhF$&adU`D7!^aBrCX>zqrt;Aor*v4k-3f2c|b8Kso+E zJ@O1jAV`Kf$O#{E0YQ&uc&>tz(2OGTIxM{&hyS%{NUrgfo$f5@XQrNYn)&_v3IZqL z6101hP!cCj!bNXJ!8`jYCmL4xMR$b2K7q))0ERq+D|XwfG3J?IZ@d;G7zj9GCLE8R za)xpZ32rv^Iz<7F@2|SE$EJ;jbrQ(D3A@w_r2&k)ltB94&19yGJpBioIed=Rul-5(s0u}2+EE$5Qg}A*!z4{O`SkZiHkww4|tb? zApO0&Gw@tp<>m2x;YNjR%l36QNqN$H6EMrw#dxAsP=TYKGl!SA>xO|WyR~@4GO>dJ z1SQKOAtE>6BR1x8sf$?AxxTOt7AJ1tC)FI8(mOf{4cFW|9+>9bxQaLH9I!~gMg@`z zxJ2h#&xY*fuZXD3C{vomNO;2}cj_t3+6d`ObJ~fgr=Oj^+tG)$Yln>Mb^Y?Z08Q#* zP;+DW+W>&8ECwyF$3758>9#fY7%lbGvVSh#ScjaCMw}BeOHgCPXkk^536T17$lBuJ;-SRT?u>kcNW@i-ikDX6{pc)Vt_D!4 zQZLD158qIp*IAS1+&)DR0cVbG4^gJfl`BRQDS=2(&cM{EYmf}S8Netzfgv2);)!+>ca`w7`GGC-pd9nuiuU9Vr$aDLDeY>#{-(4g)snrY__FR*D7q-}7+8Epmhu zI`Rwh1{}Ifyv>LNS$A8#%|E~DoJmi2n6|FS8?F`u;WF_2XWi?IXWC3Sh1$^d)YrE0 zD!Oa#kv@$LPjqHR$Mrl@D2hjX<>FH~jiV#ZM_l{_orJHC=!>|kfab~N=L|Eq!+)Ru zn3$hn7cX)JF7=ON6FWz^;mN=69!AA*kTAm)KLE}f$PW{N?hWJ?4Hra_M?|XFubA>`fDY zXfgkW+JA|GPk+`~=Mk%gl_pX%tZwGXQ-lN%Rfze3=9ngaPka}c_~7#b7VOKHvI*{I z%+GJmbA5!_2*NdaPafMbx;f|17_bwZ*cxVw^3%^{oQ&iUpmRkO;E9^?!7mFE_LaJS z0Cju-e&LGfhz!u@9T~Lp#k1GQn`ckp3O6F~$qTCLhb833^50LI!e?Y`21p90fTL?> z%S?ayb7yEy72P;Uq8U@+2?upgdgIvYWendhlD*j2zmjKs!x9zn2dIbITH-1oibaNc zTEfesnC;}I2y24WKhTFSnyVT^MUqJ1X<~ z+6t1}2aLr+KL;#~O#n@rpZx%%gwBnNxXW}{c)I|Q6q46l5;QiA=9ayBq&IkcH=sD% zWR9WQB4Rm;8yEGj+KY_~0;|?=k?ai&0X?2xowHklz$fz4+)FzIhQjZKWA63azJydj zC$i4KX3e2D8?ZLMZ=Y94x0pf(-5s}h*Hq)nBbf3}FOZ}Fr{)xdb=~a)zs{FI{RV*= zs&Pk_#7B)`!&ki71EzMz<{9_4qqqH-^GL_t5*l~x`tVbJC6TVTsi-9pz)1T1e8_*! z;xl%;Sej3J?>r2625y0}*yjox;u8k@RbyX*YLDkT@k9U_z-n@gWRNbY2TIl(R7LaU zBk&P}BnIl(X3;^IR?c-@w0zCeXD=4JNu<>q#Dw%i{gq$bap_-m2_EZ(`gUdSccM5PhAQJVh(NHv*1dEX}9eC~kW zUe>T%BKCuBawIR!89A@IC@7if)YABl?}tEI zK|xfV8?;?d^%>hcnT_|rv1FXvVFz=}LH0Yd31f*z#p0P|SYm`-nnlc#$XPaOy#1A+ z)g`j|g6U3jUN}n+ z2cE;D1C#Y?iqv_zdqS&w_ss{lyd_NTHH|tuj8o#<21L#MF`gEgtiGXP5y5%PQ!))- zK?Env7h##B+4fP<+W@XSx#0`c%G>j)+HAt#F^=mEmA>KpBUjr#ggl|K-zU1y8WacI z3`iT9F8A!swh{Zol=A!P;T~$S$U7orwg*VSBxjROseN;3L^*H($mp|kx7Oty{V$mZ#GzNOQm$hnsBO8e1B}M-M%o_Fp%= zHiE7nTBJb(xlzgOC6|$}NocxT+6yo`>@Ehlr=!Yj-3{n_iL?p>xd;%XNzX%HEBS)Z z-h(!}qfT3=UY#FvJo_Sp`)`V7d^qNFed3MU3lWC4aNZ~14jlMWsxPe{&9l4T;b_jq zOLtZ$F{^UvVK)wQf*qn~iHI2Du+n!7`QV|fn`bwf6@;#ieF$uR2fzPmIfvl{dfwz( z*%r*j?zzQ^4_Pw#4(WcjeH#2@8SK;RLPiYtx8=cn#{uU($nMRxHanAq(L)8In1(Uq zKDVwN)_2Nu?2JrKY7KME%e$33vpMs3(b_E50p)wfUkX?y)K=(RK;o1B$p8lGG; zH=O~1&qB#C9svk3U7IZl2V@f`0!I=EkdtB$Y=LH1%QQ3x<3D|x`&03jT~*aTs?h57 zO8y@?B<*lqpjjC$yU}xPtE95FiBf{6zTiQDo$dWScw}nHV*bS#M|dCF9BLPk{g5_r zEmKR?C#}Fbx-TCX;w_bOWqwFwe*$=A-AUhgyh*Xh;H=^6Ej1Nwhk6d{Ur!i6P6mJR zwNf^eEY>Q3^+p!@*Fe)Y_c4ufgHx6i`W=0u7Gl zE1x$KSOiOo%{HL3bk30aCH-Y=+3f?q1_6=h#GhLP*c^4$3#`m|R_Yu-1p$%3#uYTK zID##(y24rRpDq0>xMea&!WDre~!aF-7hWzPx!)D^O!cJZ%zL`VKzPlv#8C&E3n zeGjL`7ve*fpCPtVRm|9{8stp8T?{!g5W^`BY%|JV!sC|FD13&VY0 z7ptDW%e^aDKJ8JK@U$S8AUys>P)f`R!*Y*rd5K$rA@^M2mN4;@!2&7-$)$2Pp2|p7 zt0vV5VD_tdspReyfIJ!6ECK48yT>h{*9#qB znrw@Exy&idmvLy70cM3WK$%d@eixUJPx`w2o-TKOTVR?P#*!)w+FJy=?#Kd6S*B!| zKfWy1Af}IV920}uMjjxx7Z#d2Q|j*#GJinmURj(yXR#lq9wr@0gr18W?TX=&qwp&I z5j``fb+Dn4Z!b!IOqrE;j|-Uyi^J=jer{+X}H6$Pq-GUAL!K$u{bEj&NhkFQSAP*KTh4f$BE_s+saGhuungQ~7 zPthJvtsO)JiV!FP2Q>Zu7;Y%^{+QKZV;$VT3mhtnhz6~HT3fsT~WFw z{9UrTtz5P_%_ai#*07dHFZhPB4j$~t5+-z7l1WeFC1bNM_Br`fGZGQMX0Y_VvvyLu z34J;)v#G!0zq6h{%e8and1f?h)34_NXasP=Rji_!9qYZ+xCMV_ePZ!U9%bs@6S5Jy z)acrPDWYDcR^lvF_5a2imdR>y_wh(~jCwkLZLYiuW3i&R;kn6b0TV=9_O50Mz@}Fj z*aMla_o_v`YL5VtN45Ik6g{`bT&u&dPS`I&b0pr_z&_F2J9dN}Zw3b@L$&77^izN7 z`poiOMPWwFa|W7*=JcZ;Us2pAtmacz((86+xRiI-_xn5+pJjwafAc)5NQoFzmL$X)8iQ^TPr#R}qz zJ{o~+g+DjQ_>3jqSq+);9QeHD$@q0W_2Ku#(TdL$JCxAjT3=EmzuBu2!;H3mnq}T? z&LWbzp&YM;2A;m9UV7q}z>H#E!VU)cQsq1xQzDvPfpD1PITNrHu|Ts8b%(0+9HtLs zF+UYeedSW)yjY1HgJm&am}4rUuQ<$ZV{u_~h$<^Jn%`fMd;v2ytxVD!@`evw&NCv{ z|Mo2X_pTB>!+%;Ju>Cj8pY4Bz`DZGtS+BFfc`a9?<-jJkF;L1EBRT+rv8M_7U6FXH z=BS}12(GV<#1T>iKQCX$v|X^7rHzRWpig;Zgfq4Q1or>4T;D_7}@~$fYdu+ydl5`C8i$aIcYh&n2kB_GuhYk_=?D=qVv%O=@keaHdjro&Twckd9EwaQj&jU4$`!~F} zR4+>_^V>}7dyvo%j!Z!$BJC3%Gak>b1mWF^Az9Wul0O)p_F>|lf2pH{QQO2Qmk$%O z^p}n2Uaf5ictVR+FrAh$LV%Db0$Z#J_w6DFDqeEoASXiW1S2jnlj08O5#fRapqSb& zk2WtA-uW~V`K*aPcrohGL;Nq)r4f4pgtsnNj|duf?xI2G$@Bg4(Lw@r2+n26vAn7= zPE_POQ(jFbVq~#Y$W?$DJddh=%HCLgKnVJ<4lCf{-4%x{&SF;#oN#{o1*>_u=KlGk zT7qCYajkeLKmW-H@^rQR`1RL<%AU8H5&;4X&?AEQ#uB0&uA05`Mp1eaM~L`p5u2}9 z%n@c8-~^BxrpkZ>8v`c|`s6&5Z_p`3#|+HyhE#i?3i(WS8EmT~HO*Udpj5cMnYR*i z`PyrEf!dIYc{OdCIzwTz9r&zc@iG++#g;j&!d&t`75ZxsFemD`!!GV=A`(+LOVc`p z@`9>6=`3bt2&zywpp*5Bj-HnZB{&B56zCe7at!}mRf9fV!OS9}MCrKgy-(dJ0~}sg zo&KG5f6=qLHhT1e!~8Ht;R{(2i-zAoFAcJ_%#d3kkA8g3d(i$TGMGgB&H|-l=MT7p zU02FLISNuL4htW#w#Psa}<84nS%g0DhOg>0I;ZKA;=WRi=H0cT*UsU@b^H88K(3A>)($V|8vfE+ zWKXc4fwm;cN((YN1CXSNCV|_wcBD(ChRg!e8Dj7UddwRA&`UzDcdK8*cGD=>K;Tp1 z0E6kufhC4f%D~g{T8^vFqY7Yf0_eeM8nYZ3KUh*8fD+KZzM@3Isr8(nF(2&sc*C74 zZ!Hn@mzc9ylSCVIX^(nTGv&^8TrUl}`Q6amRB7+FU|TJ;g4uap z?emx|*>mpOqLQi37a4k4KEtF)PfB zhV`V3bxYDqr!>~4%%im|$;j@TXP#|@M2r9O9R1g`@n1bD1M`2Zg0lZNe2V>lg->Pv zP^9-+5ImPvcBpmD2k-&*nv~vmCMKsi_A3e{FE1o<&_bIUV+Df~_9VL)UAJ^r=K(~; z4a(yzq@*AO^Q%v|H*aJrMnEV}bl$WqNT#c)+b>D{HlOqcHB)1yfPaXjAxI1Q&$D{INdOg0~Eq1S@ z*N3kXI~DUIi`(vcK7D?iiu7f<#7V7MIJQ?N|HwwrP^FM(8+f;ldC-K*-(;(dw;81yx9TkO*(wrJ1At#TBa^QKM(Y6dBYFQwE;)SchDBMUR8ud(+DxW z_^6sH8Y2)4JgfmTmdH0^0!LB+6|bYppo%9n@AS!JfOzHUL$ITq>U(OAB2-aH0}Ura}j|VrVIM)V4rgjOM&;%#hFNuN@AK z=z*cE6;&RJmwhRh^|@5z8bUR5tNqfA2a&MROU>M#VYAMBqFKr{myVEG>ylsdBn|_a zNW+xW?rRkUAO*7biB|QR5i0CT-;K_B(`Y`O9<#Sbd?G*Pq&1^Baj;Yyzv%2(VzyQ; zeJiaX!>Jn5ekQcMNN%={UeebZmGxwzgx zA%a~Z+M2r4=ADfnzSQShojFvx>2A);RI4f#t$Ov=jHKkm%slO0y<6-~OEg!?4i4K( z77CWni*E))6dr;Qj||^fTtx<(>lo+#b z73W#&A`@va+SdruKvID*yy>Y$i9KSVPTL6Kqz=Kk$9WS!rKD@t{k;CgZN=a zXtCxvEQH)kEnf_2Yyr5Zs%dogBvw}@$V5U+`CAp+wegKM;F4Vc$RpO*7jDDXmio;* zqo5Xut=8JUn3>_|131MnIhN~PdU6~uo7)#T0`OHIlPWpz<{chR!+F4@%mYZ$GRl|> z9KxL(W!~C&Ammdi0oqKv7h%uS#7b42QQsn-Q*LnD04B?+t!{(bvWvUqsLhu^BC+x5 zG69m7F9^MzzwY8TSud;JQy%dsB}YBbW)16jrqJ)9QVkQRz!qOk?R9g;>jK5&4|n$U zwFXn1`g2YV3KThc5;@$GRhyJrI^)uccB)k#F_d6tfK=f@)oa+1Zi?M0bo?^}w>r11 zQGu2y!H^hdVI~IgWR)oj=?M*^ihfJ&xLABL*-8o39bw>cGM^|K4z3@Y)btYM!@Y;6 zL;-Mx*Bvc8s$6HudZ2^(%%J^xjSWLh{`P@9c_Bom<$v|6@{=LYi!KPFnk+)o{g%CQ z^f&T&IHX?hbPDm zYG6@r+%PFgxHU8s_P&NdLQ8>W1phDh9}x;ba3&VOom=kQADbNd@o7_SLOrGejA~&$ zbvy)rGDV52N4Yu^A3)vg1C@k>fW4CU1t4VT`V(JJTDyTzoj@AcQXIjI{+ph?3Es;5 zJQ|AMLjD*T6x6=2=GeTAtH07p7t~A#0L#|f)V(;W;#^?i=ln-xlB#t}$qB#Oq} z)-`DPzfnMhUp2o$G@PAH3r5#Kpz*f$A~Ckir$_QWjomW(XYt(lbnn!^K0o#*U+aN* zntSC~T#!9NS6x=jr7`{vP-H5gcb#? zYh`gkt?AilEO+-bpj33l(StAK=czLH9AifLq)X<#_vx4ByTQrDiTDa$L|`J~Z&wZN zN+CUO4)XkSid|PVJjodw~o#AH?R_t%^KJ{e&v}tq% zhui`D+A*v!v67<3^;o}^J>W`pz36c_4S^68CrQ~9dOpWKycC~KOPa{Gvw$!E)y45B*=%~3iOj(J6<-QO&!HMx9V%O06t_D{N&)BiU!S3Fuc$-mMV z1Dt;YnrR(={g)2%UtQrp9V7!Y!+%UT+5a1=$^O4WH6xYQt=5I%{w1=L?Ay4B={)){ zYNWlT8 zNKW2>N=DT$J5Tp}e97;A$_7B14dnVQ9z=*m`h6HDk$^nNdvKBx219L5CbfHHWhayJ z#LBzACT>R^a%VF`!9-E0qg}-@dKru%C`uXNQ5^B#{A8xAjv=SdFleqwK2<)f$n$D@6Pw+d)x&A$O??Z3<%PV(s2fVW*4TcADvWG zn$Bu+J0>tXimJS7vTKv1mfres&g&|$Va3Nnurxbg|DFzu7YYZu7&8~#`(*fp)5-_% zunVybS6OjfpuvLg=*&A^0b1L#0a!MxUyZwI9dt+dbbLH`_7u^mEItFM^3ogK98!gw zuX=8-DoAb`oPEmPAyC8GrM%Aw$Pv$@ZH$&9L3}0(^rey;DBhdU-F0y$di#0_QlpFyzPIoZwoYoR8# z|AMyw_DkMlSAB;S)46CG)~d(ZmP*u;UY_XMrV|ewd!FKoBc|&Q1POwt)o+HJD9OjmEZP~ z`r}|d{Pf)CwN;VZ8-7nWK{3sPT)D~DvUBavWLJo5ZAsPK4q@Cl!Hlrj%2SgbNzmM9 zkDv`WQ6%$+D@x;!cObHx;RWXu3ssWm2m3MsoVsxS@Vdgx&(9e3l-d1D@{^3e@PcDC zwKmq-4bDS{{s9ubZ&qOLP;QINz^82NZXKJ?1GaI;9|i?-@x!YkkW;OwBU`Nc*XVBl z?Z5tS)Qz3)|5^dC(ES(CjfL)i1-ezL|7d)&{=*yGu?#LX^?Ntkz8J90u(L|iY*(_y zF*PTmmxzTF6S@Vvw7zV~?#T4Kr3g9y zlngyb=j)i07cAFLAE-*#0(`;xt}^MKL^24w+rCrg>;!090&ZHj)Lez1zK2~p>Z9Do>&)DAHv~&i$b*tx~!+aH&QaM||_-#g`Jw?NvKdv5l z-mp*!Jqg=AooHeCP(cUM5qp5djM$*+8hVv+z+mcBmBJtA_4$v-o6^75%}{J7G7^6)dt5Dz(4tKJybN_jl}HC3rgsz zwsQcjC#D0ymzBG>l*Q-_g;bpJT+!;bjsEJ1h;# zc-7>F_X2&$&%Yie+&$L zU;F);ZPp~ZRpTU1b1mCM*Rdz8<6(zl3ywcyw#WRF4wD+uMW4%quf%v0unL zffS)B)lV2w1=LTjyHTKPO6EBplBs=Ows%O(f>X&x!H>f`=mLp%YF+5e z+r5(p+S|QFoe&|X@z}TsMCEq|**&_a?MuK-v95pOd&|X8mt*iBoUAyitZT8#S4sg4x2-zc2beL11aFV-S3sk@MyN3%Db}`X_WEj_ zV?8(qma_&&WQ}wSe?^)GcwetifN6Pp$;e6RP!w5+@4=B&xzs%}*k~dJ2{5C;U{u%F zf?v}Nu%wM^zz4j2*X z+~AGaFO_oNQkizD(phO{x6S(lHQkjBfnKG|^Iv~G()kiX9?wagb z;cZeVv0mGvN#&Cv*v@CGbj9*1c=Iz(DGJKZLAPg)MkIRLHF_SxkCypa1!)bxRa8%c z9I{k2Qei=en8t`K3WMPK0oiwyz$Z+X;gyeWEg#E;pgpf|%qBr=wzkJ7T!35bQ@BY= z-V}8UniE^O*^rk6>~sdb0!+%tQt(8fo$%3J{CBNQso#8}1W96xhB{3WD|T%rk*jqS zX$7{l3Nil&zz{BF>^&iQY$&m1*hG&q#H((-mrB=;Rs~?*Zy6jj0JxWlekm0=sYrk~ zyh-d)f4XMyi@qwb(x?rrgff~pE6P$$cB(pbj177F)A+poK@t;Xw&P$rQ5h62|EqGa znSFW%B+t7ttHTRQt%Sg)_Mf0}T8$$PB-iAerlNeI!SlqM%eDPnjJ0@3(l>MS~ zuU+Y%|EfQw`4%J-L7y9fg>V$2@?&#ozM8VRkhX}XxH9l!?JRXudv^Hbw@Ica!+S=t z$>=0gD};@d#pp!9D89lMljR$Rfl7n5cVJoralSB>+*uvGAkD&G!Rv^X-dj+ z12<3Y^k<&#%q(TNk=@>X27DZu8BEyKn(W-kX{uT?etWdp55%n*;aIQPiq$^M6%LVd znP|Q6s~hLCW|}?MrBGBIk4dCy0t^&ve_nesYK#8suTj zyeEwcc*qgf-ZLm26}IZp$fCU-*t;agIuTp(TY3Vao3Oa$*EBP>K@CdN0qo&9_CJK0 z$sVhWa;W2JPCN%*#gT=beziH)4c-@?hUM2Us{?DsJc?UkOgJF&948NzTjInuzZFfyVf`nH6Vv4=6fT{&&{hfejQg-?R~cDyy>n25zJ}DKp91IfrC5hjT%If%rL2-IY>^*apnTTWD_hh^1af4CKTVf!LeNR zi2m3)Wqz2xJUz(Dlc583`~NZajzN}mZMtw(cbBWWY@^GzZQHhO8(p?-dzWq7wrzj) zyff#Ui8F7+oF6-PM#fsXGBS4Vysxz`NLE!MrlI}%Yd-Q2LIXMRj+}t+(L;-nNjiY& zFHQ#YOPhubuv*vWJ^}6-Gs-LD&qME|`=EoB{eECM>VkwYyp$(j%v3WvaW4cTsP~tf zp)IIiwaVy{&4Wa|^$JW<-it>!?)=T~$CXEDDeJyqyHXj5O`>^Efq3Kab#AX@f2p)0 zFX81NSD=%e9Dly@c&i|nFFtW4lzl_d{W=sUa>%cuU2}fw^M2o(713DtfL7+?XV0>U zW5o<|+lG5V$<($Sb6_^yDU2NPkQi4+3)ZaU4EB4oJJ5x^UXG*9bQamCOZ7~o<&P9K zG1)Z8kL)RNY3ygDO=Pb0Oxw**9pgXq*t;zg4zN5R%r^?@=cT!)sPb#FFu~OP% zz_{;sbH<*6aoxst&)L52#9+aMq=d7gsOHAHh+Z~G(Lk8c{~5*j{+Dn)2FVH)_%Ww! zlm#Ha6D*_8-U;YN{LkO^yQpryS3xRVSGg(io@SLRde(hSl$UV!cL$HO!Woq2>s%2s z+w5Q`pNW5NN6xzl-tJ_2s~1rX%+EXK$du&oEjHBq4J(nYZilFG)@o{9;!YB7q7j#> zD}gi(Eli3P#;?gWkss--`r5z8^M|1=+$gVy_F}qYDFrojxm$7m^o1#E!7fP-l>Qh} zEfb`v@s!cM0zLFXOL?->ZhG~e5}@4`+h1{EjaROTJx74n@}AJ5x#E5;#;Jxc#X`nqP5pQeDR_kHx1m-erK>> zi=7{CiA66L^1!ms6z3p*;+c@ZdLo$o{jBPXX4~s>bngPI&59Db46h{7%gb+SD6|gy zewVO#?Qy_^M@PQh8%6}O4Uss} zOpmQjoR02jEGM%&Z4i)ekB6?ovr|duybCPbSs1Ggc#y}ts8WIjdWqAd+(!)d_pkZy z-O$pH)lTkcnbF+|$`lbN1vAoY>C=?Qu^rTLba-}-x>!TS>HjBI{|^BE&%7K18y(~S z&o*SH`!_4Q%yj=xE4x8z6ZY%O2%TqSt{Rg`18_hP2(4lOeTyYK1T*6he`%jo4(52t(v_LshMM{du;^dn=x>Q{wPB}^C6 zIw_Y(^u>gjW#rROOKjQ6@(v#N1w6goI%t{2l&trzy1YDIqK_Y57A7=2xs-^Rh!;z> z-`n5U#F983UEN#|x;i^w^=jXfS#pQ_&5ES-!;cj?NCRNT-{5F)PX|f?W^swco#i~# zj%g|M^*5K=oo$LkYnM^Rd^}00)n!S+-&CilHs?D^M5WjP+>ScVvAtI8v(C=GkP1o2 z_#qisCyG8|hZ{6#)YL5KqXEO^gqs=<&+}I~$L8LFHUN4@6#vi!-W0}^lZMxN4O^TN z8}$9g<)@$Fj!W9mIrE~f1L_h~qMowyVD`3=hLvI30#OLDI>e#F87*5e|onfXbig(g*ct>D{2GC zy-QF=|DaP2bWtfzwp~0}oNIJwA5+c%YHnJ!BMDT>cBjLk9`h_@s=edjR04O4KDpq0wf4$18?qpq*-nS1p|C*l#*0BW9<`*BK%$-%9+{}oa~r8wr)|{9R^$(e__PUKksRMB_3p-jBD1z62^oP}<)Cry2v@;`O#(qnFv|nC<3idx zzqD~!56(j)T5tIRJ|;LET=P!un$kQ&FLD!R?&k zgVO?Zdh3?~@RfZKIkq8m+t=%B+trqxH4+Mj1cW8H)X(ZP^SSrUh9`JuF8-YOW3HlW z%xcg=SvaC~kw6(a20ro}#6X z*x1WQQ+;y!Xe;sYc=_On#bh;?35NzUs5G{1KD&GZ6kP3-8JN%gHt5=$z;EEgbU>k2 z)Py0!n6%b49J;4x!U5qd<9Wm$Q1Wfs-__mj)AW~nXoe5(lnk?Vpx;WWy z#o|uI>=^!|w4-`=;rERfzBe4BSc|^5^-pQHN-!Lhb=sn48Li+*fmAZZaV6!1?)6tY zXbYhoz;)A0eW%1e=D_7GqS6odzt2SY{V7u60S`c0&Kgm9WWe8m0~oP1yqei*A)nt6 z>A?%lz?u#SxVv3Mj9wd@QDIHc2p1fj@n{7)sZ_vB_yFrr3djh(8$4ua8Wh8hsu(-{ zHKL&5`Iuf;i#QT3mzGR9FnEZ~XjW1k#3*;XFci{mo6m4sp?*cu23L(zga|xPhJ<(r z`n4{;vJfKhGy}>g?DeI=rU3tvZ$z_W7me|v>NoqS>xPSlom8nLfrvmWkhe-g{;~Na z%W1^w-Nv_n*BBYmIjU?oI`YpPQY79VyJFS9@G6z#&Oqgg;KVxTFrAQ%?eF7GdYh2k z6$;~1YEHw3(HZ9vm=4}hI?Co5kmX8`My!$Cpik*sm8d!9g{+snrX1kQ8L3vfP~!nk zM;AbR;6!E4Og)KL{ejop<%vGd!vm)`b^<9!H@`CJp806Vh1{1u0A_N54HLtn7JqrW zOaTMuk*9PQpH{cy$div+p!n(9f1erb6Mx6a>jcPywg_Ijl+JNHW}08VVJV%TY@Rq)5iv!LrX*AZ+ohs@zISpYZ#x3-{$4MFb=AIiIpDuYr7K zGOd|66~TJ?)vLf|pxmANca11|EIOgsaN_XXrbwR9 zL&KCSuSIJxakr%XecCX>)P@dla_q@+SjVZP5m!%t?g$>!tA3S$8uMM(Ij+XX|6=42 z^jq>eqB?pR=QBmoB#K|$B7Fv)f88kf8L=$W*J82ZMjmUR!@Q8CW@}KwJheP!XzzmV zNsD8wA^OG!?~b|Bc&fL}_)}_BI>O*7?@t0`DMs;k2g< zKCrXp8TwS9MeZse6L?G0cOc3k8xyVMkLW0ODtvPT^aMPgq95{{pyHdIHLztr=qCO2 zL5peQ@)pR1udtt(FSJ!TATh`Y^nxk2h0XPWUX_S5RW|GLv&PcQi#8^)v+pJ^Gy|)7 zb&_V7IMz*ZI~0lwRTOM-jb%?zL>K}dF#c=-kL47m#y#&D3oram*~r86;^(_8D!IEY zQc~Hi(?Nm;#K1pOI|m|k9#2XDaQB2yh$qBLrzsN4GKj6TKcsryw>~fFRB^n_lrmHC z>iEO#L4u>|&+3!?GdWCVF)@|yPMAV$=(UCnm0!3hIM-!;0v4|crY7l?rRTI+CW!UM?>^J zCY?5lZ!vRDh}hNg4Z|m`W+h&IxlqSQ%eRhgq0{O&ba}$BFo_g@6R7j|C!-m(>58MW zdZjSmaJ@7Q(^$h^BbJ5>Fl}-vh3H9w) zjUNNybd>{`K9YJ_*jU-VR+t&6dbkop7IPeHStsO$czkQp>nmMz5GZVqd7TGX9z;9d zc}}BC)I^Y3AHH5c*}AM2%7tyfNU@ zc<0rNkNa$h1!31lCPe}wK1-xnytCJt`*hY%Bs+zK-2W|XrSU`|_eapmrgPkvDi2yb~g zEy9cy|QrRBu?*~i2t;5E}F#oSF0CEEpO8k zS5olQRCb4d?VO~td;M#tkiqFBw{Q=iCh&A6`udLOJ}4IxZ|Dms?%S{M-(c8(;nII$ zSZ3D$Qp|lT>HnvCo|*0+!pZ-tn2S`^a9C?b{#JQ(Yvf{w_e284HW}KdI<`k*Qp`;f zy>*K=Okj)6$0@d-Tv_VeX}n?swJ+CkWJdgB>*Vjy>EQRJOAs$P-F5F#uhag#ziibM zbMDN?p-kQbNfM)jdI+%`N}GM>_|?x{q&sIWni%QIx23Pk?PR!u*& z_%?w0d3sS?2uO`-Il$f0>ii(__&V)-_~Wc14^`QM;Qq4qS`8Kdrn}Z?bHr0#^Tx&~dEYTmp`P80es6U64N{$8FyI1^>B@jNopdJ+o>;%o3o}V6TRseG8=tFS!KiZI`s9Ww_X~*Ji8$T5l@A29v0Y+1(h^ zOgOU8Tr>T?%$#0!mga1xL|hsFPGJAidwW|GNs<}cUO8$te;BkoQ7SXrakzD6AD7bq zRw0|z)$*AUYaBUUdJIBvKZT_! z|07*gj_{B1EwT%~26Mae1GTytdy6+SF6AmQFRZ<0@Vp z4|CfoyeBUH7I=8U()&{XF_}(5R0ahhw*5Vy*fA*1z!=~!?(9K3`@NDan$<7g4S^IF zkP4eTA|ezp|2+sHwRL4Nf8n6gr-Xh-+T@wihTme&$(Hcmj;A??YSrpco0_+l@}E(s ze%IntDxNl#LS zIc-6zyA>`FYD6nRfmBTzHO_L0fSL=qm*MiTTJVy$6=$z~f$r_AM-fB&Yoiii@_C?4 zMh?gW0SLkpu_n@I!1)fhX9qxj7g}mv+}nE3}hpKF-0rlN2gbC~*#HqLii(<+mx5d@Nx(H++KF;*fd# zCG?7ST~3R6zkz8H-qg0`()2xd{z%}h6gv9 zeJaE$KWc1ZnrsC-`+;MB3yQC;oFwZKnacK9X9aBTY*ed=z%=7Y-GXz?GFYHdz6F0G z+vV^O2qnl516HhFU|eepbF$IisHu=in>^dAuYwpesUoH@BVzLP2z|0bE|n_^>|rx6xl@7( zU(zI_kIMs_Hh-Qsqp7KpIZ=VwY(y=WmHxMzGubU|5g#6CRN(1CZ6&i)^73@LZ=vf} zc)`GLAt)4#geJuX-dp(Xo_M~_y&(k*sL+rP_m4EQ0dW6{7Kluq(V|#ifLbqMTUR+9 z+_c{@9LhdD0;)5ONn9_qU+Jz%uCV$qqd+LEP zDha-M+ZuTeYPIoo$Kbf&k_xEEy~q2*2Cfxx6ZfRFVWErjT9RfT0dda~){n2OOccYPvz_xe9f>N-2{SA%@Z58C1NaN8u!niuIDxjS^Hf7l%?!-nl(uV?S<@+p?V27SM@4TWVjO@Elce%nS)%{()9Rk<&+oNwLoRIrVg1WU zSFhVq0t!J&!?cpW*S zsmy&vM%L6HbhVSpr{qYY;zxw4Z=4Qq`oKaiWvO*#k6d-kZiYYH;)8lfN=+&Uv;*09j2b_kTk|L0v=ij{`8VuxyN0SR_g4B9&__#C%_DBoEk z=qOu6Ee|z5UtQ_*c)6<#;5P(z)&Qz_3!W&_%+m{455eIM5cWcJ(B}Y?WA)D9lPwoJ zUyyB4T>w01i_h5~6wt|p7MZ-XJWGiInG6*ZMUo##0JD%Zcye0%W9x>U8j@HUvE z$T%wy zZE7m(o$MT&neHru-D_@G|-`llBBZ#D_c z^o;*6Mc=@G*?AV#=V0pHz!ETY)L?Ts4N2D}v9Dw{qc#YRnG?w&7p}VHbSh^Tg5mM; z7R@_4I|CkF9s935k6^)AbA0#`XazTH-q_TBf4W&rSK!bxVm6bc+5NR2vDcp|!s3K( z&>!CaOPE@ZMK|)XhbZd}NTGq~i?w;ztMvA*AJ<1Vppz^qFW=HR|#S)CS7MO;bcd2hc!*@7O97GL z!;C{~yWX*+_SR`MlS^JLCG^x`@V(o`k^%h{y#;!h#McXDVdFybf)ryL`W!koWnyYe z3!qsN!mg8cABCGqW3NhQo3!mPVd4hYMdQuH{UU-x=L58 z^wkFebs2vFb}CX!&Qe3VUNDT>PKo){QnFWBQzBQDC$> zqf(69j!mFG_MEq3Epu1LSHH+LY;RahIKFs{Egn?rx!g{oKxBNl)C7)W4Nbo0gn!$a z=KYGt|Lv&UXg%@MMRHRQGcdEn!_c&{~!F!Qb zRbwJHI1PN}_g`q^G!#vJmncG&HC8=Ns7Vehb{CppIW*&zCK|zf$Rj8EaOs`%u@wA8 z`QVKgbuP~N0~B+i$i-)X<<#k9CCi{8YsqoF4*V&xK6MGKo_r-B-F#KOjZjV8 zvU|!fj6gOgrlpvuW~AhNoQZR;bQ=fs5bL0J?%x<1Hjv^GHe8U`xePD8yB*$vM117I zAs~ZK37HRcnofqWJVV-s95}3Wn{gP+ANf06kTq29769pm=YRBQqKrtv#`(th*ar zbP2Rgiea>5PAQo@XEWz==#fY6(Ny2LK8GF~q}?Bzok%o>S}Z9?8^X5&1@Vhxyda1) z>cAP_5w|qzQgfxGwZX=)h@`k)!lYkpRB80q(@FZgDk~2~4=|;k@{$nSlK;FtGG@NI zwC(DnVo!oXb0gAWHgv6LlNOF2vcGMCxcIH3)9yn;J!BiJ>1iea9jq1s`CHcnZE*v= z^Bs<|?FSCD#9&6j+MlS(QtQ65r2|84%4zo|H5Dgx>SpVnRVeEzMbow~*Qr^mPd|r+ zGiR`&keSM@iJEDGCXt3V#J#idl6VLR2+Vq!bD=o06G^4?Of|$t#rO5rD!c@~p%@2Bu z{>v}(lg~cVI?6l}RFf1G+*5P4U9)l=_1&NFJbNf#lzkY+T_J8%NU8c~M7WFFm1A$rp zU{8eY`-3d{KZm0KA43iP=TJ998l5_!-xonSl5~NZ2MdBARaf{HbSyv>cJ$pzWEPk- zMsj@dKZgAKAE!(D6;LS9jwJ?`13x~*1EllTyYp|Vg@085|C9xEY;6Bclfdv#Y|;N+ zEinAUefVFeh!X$NBn-iO4XK=KppfZxIAqVHtL0f05~;zb#!=*rfgngAKtN14tIqlm zPrW2&TxNB|#uz48nK@H$aCxz9a9v*sX_e*``P^=)JjGva2JISi$PG*c8n@3n!B_rO zB4?i1$B5_I?MffHLL49oe_vYgva^qxQ=c1uc@QKm>uoE0Y^3I&RU)0dBEcQKlG&1q ztTsRJe7S?Imi8g@e*ZjJp%|Y`D2*g@x+v<(`m)m3(jS>bjlUgoq1lq2`T{}WMiNI1 zPpz18Ec2{DwtAB_S8wc1KQxh8MQeHBK$SXtdJ69%5Va8DC|Oul6QBK!5~$v%g2 z`dG`EJ-ZPBbztnhpt~73YO2Cq{&Ilrr4jQN&`vrfLsNt-6*#J@D1|L ztDVOl{tiF??O*ddwRch&iD1h0bc?K2VAUV9sz>}Smx_>#q(2fJYIUb(G8#SB);2zU zdP{$$(n!|S_E4lYEFCnbCLOoUyhR|KM7$-}^O$V-)Ebq$t|Ox-X|=7sR1*_&-Lp!s z!_pmhmG<@$XJltPm!j${&t49TL#MDp!M({$QMX*?x?EA6cH!JXmWJ%6RBK9I?6|(5 z>!vW>YaGCHwG>{YZ(g63fntw4KdniUZv1KE398gmBBAW$8wlJfQD924OBUNBtxM}E zGO@+5icV3OgG0~fD{Ri(!;lMaS6ZR#Sxdf%sr+rrRHY%ct0`Y~ekqJ$r}VdMz4D;M zp{gLA06arP_QJ*;|D=cuUS7$#m|ub?%IqhoBPEYCVn0)8$;U>Xi30}-qC3>gR|>g= zbl#}&;>m1<%Olh}Uur_4W4HAmeT!Nm9}4PW8Jxd=Dnh$PPW;Hhp!2iQin>pdzeu^I z6U!07PR+Octi^hk@Y*+J>m=~-UkG0m?%;EYb3jV^FH=P>{( zBMauLs!4}BVn30;vAT|xr%cw!HSt4$LC=@AeU)Lfhqv9-yl|P|Zy0lL1cR9j_AT;m zNkQrGT1oQ66~4lO#Jf$ajBW=*lIVDVptluit|gZFqD)v)QF)ti#tY)m)!HMI>~AGD zZBDel=}u8q8@Q}1jAZ%=w*NtL(u*fM%*%k$Yu2cmYzp@y)X7Y!FMYuJ9+}^CrpHwX zm~=+M0<;WMu%;H`iAa*z(-fA+IYHUf4vCnda{{a4&k&i-pAmFkhlaQho^F3C1kYA; z9Oq~Rf?I(7#bRv9(s12bDL~XbiGJK14~F8x4b=E}<^|^vmsvtQQ`7+PZV)EuHAm@< z*}Pr9`>OY~rr%P?*n$_LO0}rC@C!`$^?5A~#wrHl^O(!}j%PDZU)Gm1o24NnHZNv| z@%NQVxHHWys#PHz5I-ly;o4Mr`Pzhg#Oi*Wv>HBo8HaK^W zJr}oD0*&@h>%YmoqvbDED=1b~n9olao*IVBMl384b_esm;F`{K8r7HFP16I`*um>E zGVtO)(?NDzAbVHo`d$+mr1E1jIbCU6a&nHZMa$GS#|DBeBv{|enw)C=9`WPqwUYJoe)^z)>V~;K%zT zv<^*~a4~H^MZs5cb+sXzD+UrA(ZDX&SZ43)b$P_Keg@Lb52IP|AD}_xr%CYv4Wk9m zMxRzRT|r3KeL|IJ0U7nfe{ok7ixO;>2`Ux|%h~0OuK3$&EU3e`bcW(ET2I&9TgYSB z4HXSxuR%2VU@RDkp=WAdLbJD7{H@ozgvb&Tc(44Sl~#1B^=)zdee9hEmRn+=A`*ayU{yR8 zZcm|o1-C3(Raw(d;oRG671F!7otQpZX&VA_Xce6kaB^Z(2rnB7;w-=DPjMulfnhCl z_2klaP{DHb$e_BxW00AD^2e0wP^F<+aCRS()1~ui;=}!}rMcMu*nJz1$*IXJO@=qq zm%F1fFwsN%OT8N((Y{oqqH%$C)#S{nMIV;`O@giA0znS5ulf*&WJv z5<50G(jBQH2a)e4J_f=`<7PTp*yD{zzqHm_iyv-LQ!V;UFYBsb7&~e(k&Z08c#`y4 z{b{1-n&9dH2Z++JO=3`2QHuQl$=8dy0KPny&#rWvRQz{SYrqru>GVvZ@fE(s4-Z*# zP1J}JMc~Mu{rH68bmO+J;(dut<$%=rEzs4%SInS!)HCG#EQ+bc#+6nRD^;K^`HQvY zY58&O1QQc|m0x#~hhz}-vkx`fR$ZNc$3-c#-M1&WB9m^N=cOC0$Qltp{2t0q>U)}< z_`;(?k5vkh-~deIj?U#aM1Ezc@9iBzzJL3{>Qd4#<$jVy-oByYG94}%F4Th9ES3PZ zWahrS1K>MO)ze5!*D+&lR~Fr`ql^bjBp*opJR%&Mc9{~Rs*l!u2sJ#Rg0~#Bg?FGk zG-m4gSW+0dtL|728!S#mtyvylMQM-N_){R&r;-9upfO*6IE$#BFPu!-L|8)A#PVv0 z@Z$K^aEwSO8%G%f81f784zL9-##=o&Y2H+}`#{vszP$$lQMjYxfFAhbICyx?u1i1NLo zZ}m4p1y2wSH!BC*2jm(GzEE1ns)?uP?nbu0ML7JkK{B1xmn6gVjS*M3XanSf?Lxs# z@lOM%;ZyHg$(!7F7N~xuK_U-H37mIdw2j?AWn@@bJm#I?T7-Gza~OQ)I|;9Xs=R#e z5v-4~aq&5QK{}(!xTU8XpLZVw@tcr0Q)QRgf6!JGZIMqBw?41^Qrj3=^}>0JvF)f2 zizIiZ;Jj4!ENer?aiN$zvkn^CfGmsn{<;`d@g@rsfMNgZCJViPQP5L&NPzW`Nhq6` z&6hBqD!xQ^$o4Iut6ei$^(y1BSo7*}GQpk#&I5b%NBRQFN89G({=uIwYxGDA&yFm( zkw!#uRNT;;#0RPCz$y>50ShO<9=GYw2I&)Fzx9$}eS2hLp?2ECiv@L3EnvvZZR5=N$-|RZ> z_c>7-_Z6a6bAY6wv5q6m6B*zx#6I#t=Hf*mSrrszYd8A46Y`HlTOe7L9YvHkg2vs{ zg3<#Y0E{NDX?EWqy+k@eObs$EfYXN1bL2t_pr_qjDS0ssB~*?BXU}Q5JzmWw5qZx9 zfTVbKf8(j+3}-jY4L8M>&D;EBuB$Q!)_Cx}Ncff#h(U2OkK#ZSKsEdBu~S zewm_~8ie?wNP%S1YqHzjv3O0Z&j(cs(sQflsS|3!{y{)1Hm4Edczld!>6lx|ks3-H z8ma@pOZADOzgko{U0t!x)+OE4Rzx!GANOgrC9$Y&k2GpcX`(OCec$u(7bENbb)VFi z6*U{{Ot`(&rikc6t)JrOp)RIwA^YD6haDYE?gddS(a{H$gs8d#n>Q9umoS^4e{Q}{ z+K!x90uI}sjq2OC;hs+(j%I;=-E8FRT+#-Jh<0}PL%yUbhHzHa%@bE1(<8e%VQ%;# zcq74bl_YWur6NJ~ddr$m6O`p!9T7FC?aoc6i}CWM=zgzcYLBBdbSUFX5c6!qr>UHNf{9ljUt@mf;WzT zJQ0BlY%`WJG(&GB7j$x5;gWf7J5-1Frr< zbNFB3YN48z%i18k*HQIy(+@U$|BuawbgY>wd&{NRlmadQE*?VMa?CFn|JnuIwXIo> zHmDy78LQ?O1{QuFDJ!WQF2*_06_l(LCpNDw%aY#B4d>20JLk^)HqfYl9R9ZT)&sKE zB_j^U*{M?O*XgPRT|clhsUOo!%iCWy^zpbce{^}gJ>NY=-jr^kEFAw1jD)?*CKi9ox$$Hh(bm>(pE&x8 zAm9{BA;*U@SW#T=ZH}9(b6Mf2%1*>xuJ=5R>}?n^UaPXUYq$%dBi2}4Y9WQn&zSn% z^rDzx1Taf-LPO>cJ@;bf_^m{tZjM&lV1tbWZujRGmh@{mI+X{yY@!LY^|r zw(Fv@RJ>=++{^uV8|SWEv;bJKqf8opSRX)LweVd2t}6-(YVri*@%kDH6STR1%ft>dVX2?ayzmiQ6dmr!<(Vr^WG2@vmG0UHwi&A@d% z2Adp8!+vbMPk=>Yglp|e8|0sylW=rByFgQ6QI2f^LDK0+TyCS{@weL*4_=T}cKb^u z{>A00j_rjX5)zINY@2U1&yf~ex);$jtVmsR0BK!6B??;Mw_n}r5F!zl)<7<>;I~7O zbo#|>mhx&Z;qfkh-u>Y{+<|XcS-6J;s~rddyXW(~yb z6mPk9uwcb35nWaVQN+Fc(6&%q@3!(LJ9!D8_5B8^bW1-UFIhcg7HYKQL19>+U`6oO zPTXJkovoop>g2AFwM0)Zm=O@u#BJJ6cCjEZ74B9IJR5Mfc%%sM{NcuHjT7u>p^|rK z5EzDMw%Yr-zPxpwhPh{HiP_aFZ{PV<$=UW~!#(Wf>f<4A8oz88s4ksh{He~pvr&KQ z3bfYpMm_+ZCOIav$#zMoLvu6_i<;5GQ-JWne+=Y^-dCbIhu185=to#C0=6aV*b_23 zf^D6ZT#&vEKs-m0Ni}{HP3UzPx*!iEJLy)VEvnyE7z4|}mNZ)+fGmlSMdzjKt0#&) z@GG9-mmRezIeG-jG?u6h1D8MnrKMx;J}!Xrmumn_f3H=Cv|jTvpdyh1OGu;q$bv5J z#oNwF*DUFE->XmewX2x6MH|VzsIwieg+rT)OET%$uUYgh{b^b|o2(mhkypuL7=a$JD9nDy zaPh5VVD}d{jyVx^o762Scq~C%StK)~VCZd$KQAT03{Xhc&)jUY0ua?wZLC(M`U}{Z ze9RfQ5UGv`)q8``8lK^=tkEoUuaXt>sZdh2M%*00DribI;H`>_QWQJ@aDHArrIySK znWUs%PMD#~;EzZyZ&fj#r>ocmhgIOMPSwV-SdbHtgEHf~EC)0ahu`{i4wPu!crws7iF{R4`!PVrd43at_)ZTz zIlP840RrC?Ss)Yg6GxPm4~v(z1cOKfq$|k!!WZnv4W~$i+wK#My!CLXTZx(LVg&?y zl=+@bz@%7;?3@TC+&VP!uNJnQjJit<)V5AoPz)Odqn%&=AB?T9Qu_!-WYdnfBlTcO zLRrbLrc1g?x%%uGN4d*_E%1g5YjEbn5jLa@lf8SLGLdrViYRy)ju7~A@rAM?3*OKV zaoLB z4az{&Z33tyj*z@*w4*%c)W;nXYI<2ESUWqml&O>n=8kZyurU)GWteKL%+W9NB;{E@AW6)w zAtA3rAaVQxkU1UqdSVlpTbe#^F=}DEpbaPt$jIc;pg}7! zFt6b-FLjXazE7_jV2|^+5OcH6i!J1FD4sdV2dIxO7&qZSVz5VNG?h1v)kNlJ%BhLA zrNkG}z}9H^sXvwb6p}z$N9xNlnmJhV<2-!|h%@E(xx$&?=|Ck5p^hKMXOrNPEJ7JK zP_G#KpC#F~M;Tl+_NF8i>}>3_06ylX#MeuPF+NQGoQ8@INtQyQc9C}sBR4S5(-N{B z4ZHkWOv|gL3QlE}~=Y=fb)$jrYIydtZI4+&lqeKhlTWjSY36+|}lMm5mv_Okq4FsG)8DwcE@G52mZV&9M@mOQvlvqu-gf#)JWaS50*u7s)`?%RT zS-~|2x|DzvMPZJH*lw~6tZBj`UYmvLP7ha=dvV&M3ZvVCO)gvUUYD>eJ|W_ zhR}f|{90_ZCupZRp8QN+b5xa>d?^9T2~cRtL$I<)9e3eN3`mlT$gP3~u1PZ z>vSA`(+dE*Kb|J9*up?6JCbvrc8M8;Q}2`c?qG=812Djt6Ar2uZJ~9#$&|ed-B>loeGO{hl=f>-qFXp_bIAz*; zV~U8^X%U3L_(%(ud7$`M{k0$d?HO9ly68PoTTI1!JRv>zDn@msAN-Zp)B<1j^i7Fr zpP=$riCCW~C1O8h%eu`aAb5Nc%UcK z|E}QwKU`&cHYV2pVzV&*qqzOQ3x39bC@%kd!LK@Ek12xCu}5*LngX}h=tR{iCLk^V zOXWejyazrKLOf060iAOotdQ`YxmVt0q^+#{GY3T?D%W4XQY~?9Z0Vs~HWB6TXJXgb z#CiD`p0zUrm9;VBZlfFlJ9aryu(NYykI8dK>IeIrTQR9m66TGe-^Sqd@UHtHLgTel zVLLqmkpf8V^0@ZskV&$`8AYK5O_zte-DAA#(sEAC64W?_^`;33I^B6?LggDlvLA382oM8g1M;+$BfR=CE(9ofvUxeGbLDMn-#^N zwr1n5_wiuuhH?l8ajX8fse||&SLNsGgiJ)0!9l*}xRn;02AJ3^t+oDvWK6S9SzNW1 zT(|0h7_d5g8Ct`5nyCl_U*|w`q*8r%zim20Q)vt#_YF_pj-1*2+-B4yO^7CPbUYspY?&5H*K$kmwx8jqOXhNFjkMY*3)Kv6Kzk!}=Y z_9W()vVOZ5vALM8m)#5S6fo(5l4d?@1MC(;t~h30VgG-OopW$(-PZ17+qP}nPI^Z> zwr%V<*|D`_+qP}n$&PK~<~_I0z2}cp^?g;nsz!Cy>RPjF_N*~RKjZn)9J6j6a^*tf zHCnq~kY4g&MxXDHtQ*uV;*Qyxbxh?!6M(>3?|U~>kOM8Yn7e}KHj%5-g@6)akKt=M z`pX0qp6hJY5y9_^UAq}A+oiL|q`vB_o~zNw=-a59<_EA2IWq0o5gA-WFM~jgFvPSJ z8>Aezy?Bg)|w(>g+6pP*ABl7SVYQG_pZ0=bf2ezoKh4&dUI~o<(MN#3=k*6{t9&; z0HJ=13;PgYy5v5T#)##qK0>CWc;18Qy$FsG{v0WH>84wDTS@})e*-~`QL?J*cheg4 z{#kZQ#bW{tfi@~%m^{m-)Nw4@X)db<7~TaL_vx8h{%}=gL8pY!lar3HOfPhREc94T z<~ZOjgl`1Ze%JfpbwRrSxd=zE7o20dYNuX|JWDZJd(`VS;o zZcpWaApwfEF*z2@1@Z?+eSyn%g_vOI<_h8t_qYkia=x4sgMxUyj`#0XOjzMylQsLU&8Ys(_;Gnl2oS8q+Bnc@D(Lq7J)Jc?E30}Md*i*oRWXl%_r2H z1<@;_1~4f7!MwlK3~=kSlX4)lG32!+#z00~5wx_B1VDGV$y$Lpxk7l@@PR{lu>g42 z?vBGa86ke;P8iChMzu!f8qtl=>NS?_96P%xzyyYfr2U8KoA1~->0*}m%E_zM18ZK@ zK+g;4U(H04oFRe`Wz&uX`5xM+S%9feCGExgKy_wW#@3xxnsSj4ZxK*5q-Q3JfH6`( z4^QQc6P|BgGXOu9!(zn4k9N5gL*H=u2_6oZxpCx)W>{RI~WI07tZ%HQP z-{Jz%RoGvaHW&Vy`9t{1R`tb8RChT`2GeDrCe0)}iGl%>dp|+j8bNk|+`xR77O24O zc(|IigasK3RRQ_PR&gBYppZGTkK1%S*1b|b83Qv>drs=JgD!0Uetx_69>(>htL>~V%G!Y{c)qs##N8s02g|PH zwQh~vg-2i(vD$6gJte|IvQjW$s@9&<(s|hQsrEd#Exv5;KrFQ!@8NA82nj} zfNKj`iL&v4*`NgV1KAH`v>xSoHJcecTsAZSg{oBtWRPM922#etF$XW5+nh23QS)ca z($<9Yhh}lw5l10@9MpHXXd#%eK0l%7jEI6HXS!k{wz9cD z*fE6yiAl*WlSp&f!es(nVv3BD$1-^Gu?Ni`hkf^^7Y*w#og^pq~sBAoE7h;V?m50B+EXaVNzt@AtjzL35AUEz=QtC+qs} zx}8b31h~qXwRaRaNht1&%AVfKTkbcEJJ|8!^EcU6q{x2}IC{=(=Xf`rxZADOubO6v zEC{6Ag+KtMj@N)f1^A`cNQI-0_)Kia!~~khadx+-FX`k3W3XWE0WeZ#?egu%OtJIK z9{pzwSa^^VU~+$-1qLQ zWP2JK?+AAgraR7JeFd7(&&>nj5s=WIaB#31Q9tgH(-0&5>Fzq_g`Ke}5pL(_be+ZQ zL)`Us`ThcOc0z_GtOzlxG;RBc7`vrO1%XcAF?!MF%I!b8`UUzhPy5O^^BV7{0FP3290&?9R5d#qFJ#eEyK@_o?dAHA?UuZodU8Wguiy!g=eZw% z8BLw7_9vn^)kXXn>2!{(GSQoa*dz73w!KS3R4dgWyL)&X3LKoJZbU zLEU-~ud17jjyu6i7#>mHUR6hqIfQXlWmoNEP|aZb+U&lD8cwS!b=j5;;d^ENH*h%6 zq1fHU?M~V4nlYsY9W`F=KCgq)+X5f+el0{KZ4Ow{QRB1>%ej;8boOsvDtiK>wSbpr z8UqC|-zyE2RO$~|Jz(iX8IyuPA5UfL2}$&{8t5_o=r$^)ek*jREpbDbXY@WkhvC*# zd_oKn(w!xL=4ahT8)|q~F}9M1hKU4`)YMacK$V6Mi*h>f^tu1pria#nID&|oSKaWS zqR?{JHz}n7M5YaTu1=`kgh{L|$4~>=$T4RMPM&&n{zP1!H=W&ML!>qYyMJ-u2}dB7 z9tkzzDzBWjd9R`YF!c~t{Y4NQJUX$)a8oPa%aY^O;;{>#EF+K%!&I%c-P8QL-=xqO zlQ%yFI6yl)uvZ!WySst@q_Zn~RmjMJs8cFi97IEKO5O=b>f4n%^{CHSDv#wr3tN`b z!k?w3j)++Pv*J#uyCwW21Eg~sFI$Z2c@P&LWGibisT&&K2h*B|w&@Bn9ak`|^Q_K& z1`9J6J|}JL6A4tDze|^yR2u$SZKt=P(^1Ql1PO4iVi z#B8#({|q_>odh}P`iYYS30zI&gzV-BtNPJaq@1dIH~`JM1iVh!q{ z_6^?v8?S9@P#Abs38ZH)g^c_Rh28!jM1mqB3K-}c<0wNz-Vf>?26Ouiq|4cZ?;EGv5(W( z74NMcmQB}k&g}6pNUhxk%Tp7hD+zFEu&;I>j?hKVt(`%#*%76iDprU0j+PniG|HaP z8&_Akz#s$(j+nr%9?Ot|8D8f{4Y`c|da`ROd{r~OmogPaxO93EfruHLfZ+G5_3n-8 zXQdr@Qlg~IWbyTo4<%e!r}hD;vNL+>T(~=`?QPN3Pu3i7OK#bRzS~+Qewtw%x(6>d zCEdTNsyHJ6Sd+$KG#WOHz?k(KqVyEp5dBA<6UqI9U@qoi?H!D|ONjjw)0HuuU~{OW z`=lwQMd=|Z`q6?0Yx%x2GAZHK?6|JXq>Vj9&w;uu3M&D(vOFn`=v*i~eNw%!Q=V{| zAL|Shjny-yg59mpg^*J-_H`B3y??FQJU9dphK-bxRGHVRQwuoH7GcbSn+2$D0{628 zT-*7J8%cFo7|!d@&d$uJSpPaG1G}x7W!;%+eR^ads(1GiNLGJ}{{n!16bqA@Rcc>p zYD8vnF#QM%kL=i-xH=u!--GtXp%c^)(KB{tu`O5rzvc#z;1*BW zCQ2x%!sIJ4mImn$piPXhG7zsd+BqU&Y#Z6a$7D{bWCA24ZMB)bw3tpQ*# z0|eU;mMu>2Ut`VUmy*pcUqLe(m01?9pD?d;<6Dfz_e^gZ!v6ehJI8c;DAUbm^1}V8 z`@3EB9gmysX75ol#V^V()m^y%eMD?FKawCffNX0cCry=Z{wN0zag1AnoC8=Z=S3+q zc0W#(Js=$dr=XeMCr=urQT4%QMhq}jA_o{7?dgM5vqviAuDOj4hSoWFtms&;2*lnM zw%TTz4{~$67y;#FWYi`Ra+9e?uTpi2W6|?OtYh$P~EvI_R)!`skWH<2o_A&ffHqdPWfb{WH zp{uk!w^7eT9kDz=`j_Bu!CGrads|N0ev4#=6lCn>pNH7Ph#TE2kOzd=Ylgz!GcKxj z7;(#M=66H;JJy#|rQ?=RAAagPQ@o7mFs`F}#V@ZHgIUyb$RR<0E8j6t#k@`xsYi_MY_Fpb;znn&GeGHrD-wu%YzI;>}zvdgC zEr%tMf3a#?U#E(_ss~O9@&q{bH{66z{>70UHoZTh=@)RjhBsSHueW>P%>yB{`im!R zE)O03dL-tJRR5rXvQ#<84d~A2FX5K%Yg6T+Javn#a(CscaO>kGg^`ITa*yPwte=zq zHm{ST&2>?V2TA3loK8z_M$xp3*~#FdJ;j%@d3@)?Fd=UQEq>0LtEHk1!{@5CJNcQI z^o)SF-Rw*!BeT|MZ?H*|iDW|lR|~q*EiqdB2Ldi zkI2H+j)Hz2S%p@i6UjYPGoS3g9!rKlp6s8GKrJMYo(*ENK3Yi6+T4&vy@SMuGW7oWgz;m;r91C)VX}k z@in$d3Zbtl9$%mdi@1sZEm{0GSb&9{iR1rwN!kCKEQ0-iC5uQ>v$0#}K>DoG6V4%& zKxZAt1TbPh5?j=>{a!b%<%Kg37D~p}ilF0;-(d4~?KYA8k%%|!$_eIQ(*EmGzGL{w zkIEqQwEHr(vV(IOS(A-G6jo7IWQaN(6e9s_ajYG57yO;E12P7i?37>?CQ}}GvNc)m zitj8gR|y5@M|56L0+hV^mb#ax&qYM65{2mdOY_Z3_VM1mBMZbyC^QY&A=}MYn$I;z zYRW{B6QZ8Bp6<(hH?bHN@sLYs++vKoNM8zz%_F*#G}fIY@&Q>W2;Y>Mi>6?1t7f@l z)fk<6)QycYyH5}qup){5Kq%7G>_SW~Bk%!NCOV9RFrdD|>snER{cqTF`ni)}Qj zt0KZ0aZ5-=G|i_5lBW)>bn`=GuIlLGg@R&4K?5;7+t%5?{**%P(wKkoiOtuBG)JaK zUHi^)ii{&`mi$=sfKUxY+d|enoO!=G278?^`&~9WS{?d1XEp!Q;ZtS2TOKs09ym&4 zbE%iIVUwP?>Y1NC9p&l5JHBqJP9IFBnMAMG1L>kGm_vH{wyF$^X&`CS$mwI&RCVfF zPVF+!69dJ5@$Rau62W)oZ94b?@NUbfbSw_}v#vV7b$DR&)}Xd7G0B==^xU*uGAFTE zbP=`lzF{e#wa<_(vN5%2UC*Spt+J%{0AEy6IaA!Mt|w7Zz1l;wpYg;cwF_BeIxiV` z7m*>%(Xt4^u$@`dzk>LrIsQ0>7b#4Y;Eu(^47Yi}G%tw7p%2Sx?GczbO$Kd&w{vx3 z36E#^OiEO{<9~?wh7pb=h#(hNNS;h~H_r#zy){hV65%c%p39Ygn@tZcs=P?hmzA=mRS?;P<9kzRTSITPA&}7d$xF z)uLzo`TdU4zyKQ4T}M6DGOg?}9||WTtPw6Jbx71uWYsyB7_NWVmVH`Nn26lAyb9wO z@%jvj(*;1zAqIM~4gtNKlUKGRWY>6N+4b?Dm!6Zsq9NcEhU0|4@~7< z1k?Yl{R8Ql_+ISP&=m>*7W^E3*-W86rad2xNbEsM;u$mvw#@=jHJ8VvzR-)oo)IZV zI)N*#UVmR`kjDAD3{v?`0Y){cPs3>~u7Q4gVwr(GZx)KZ%#T^@z?2=7xxvgl>T!EN zf`vZTArq9~@M&e=mE7)IgvK+4iVq~!l>YL%%OwiuR|bg(-T5`VMU5mUfuC_k% zg}T7JhLG9W8hqx5;+>%X7Y5{c)|D2DPCnNZwmBfy-zT!u?=d33N<<89r_%pB54}?GdGAkCS z{%VhS{;VqQZq@u@1pLB#NZx$r>^DErAalZuDrb+NR_6B*ODSsXp-$(0r$T)_ao~+$xdh(o7FT8S>O}rdx0w(2Li<$f|F~N8{WzkzZrc z?Fn*e3Sq(?3(EI}nOrt{3X!HtQAJc@35OgT**|(5IxX}!bZphO4LUn~R){Qrb)CII zJZRsU-6zQvIeqMzOGZ9CzHUYO7(fg56qlhq2E8gE1;~q{_2Y!A-)WOUt}Ir9`Nhz9 z#M|60bR=8ng4N8Li^2_i6>BP4j5#vcuV)*ZL_9s#fgot>zex0541VNCnKJj56&Mt^ z{{+>)G&keD>_Q)e8eG_9ce7B0LXXhkYZx%LgzEZbkJMsY6KWZKfL zl`lpOQyl}X0;?u{F{;ndDVD}$@t$XOx3DIs4A%hI5~Bl_g~Q$YwByh&prHY#I=bUX zpJ&F+VoK2>Wa!YagjY8}(M+csf3P=D9P%1jDFdJ>%T$XCubpu|1l+or@jlzhNN3~Z zZZ5ldn!hutHT-2p(I`}MV^Bt6+Ph<5R}9X0V%2Xs`B9vknUq;cDJuD77>ID`?5c6P zyQ%l+P19pQB8@1Q>Ze74k#<;sF01Q_l56Z%V})ZKgx>hZ){E z|7z3xWLu<3M(UONi_y+ZuM=j^Q&4%&Qv#{F0d2Nyg`)P%R2@iQxch9i+bo<}{Kd|L zHcJ;s%PK%ydy++*yu+&Sk7iK8IuV1dSvQAbR%aUSw#C_GjAXbvFD8qkY`NQdvrv6ER{FPXyaUem=~ut=Xw^&0NRHmwxK%>awXl(7jUw zKPAemu!z>hGU_)QCZidq-i%3QpNr<{Qt)B1n-jSfuD4|ye$_28^>&Ar3*v7$YDr}5 zznbOBNMy{R2vi9XatU6irpFA5| zr;77`Ou8yFWm+P{0){zOu+q*hW1&-G({RoA4601h3lt^|m%YRI3$@Jroaf;oH5^j) z!@FA7ZT@WfbZ-KKg+;-_GcRwtruTQ@CDdvdgV30&ImFZ=XPDNo*0yfyy1sO{RJC?& z$H5hl)LAW^_fJ}SunN|XHA7=fB&z~@wH(^IELWs0gh{po_|0rG9`?51ckHcz6EX0@09A zcMYQRWhR+2yAZ(Wu9GdY8_#5}>v`Yp#o@Xr)T0|MbgqePq_VQ1r<1YjAM?81RQ3|v z2I=;P-0mUNDXnIz=uAReC86>WV5oxCB3I!eFz zjP0fxNmhj?c62^(E5E41EsZJYfrh>7tzGe2>*E+k&ZoSsj`JnO+1-BQxD!^--d0wb{}WD~ z9?umNMw?~b3HL38-BpVE9XNDmO(!Dqs*zYo(d1S>K{`m-r*BKHp~hpdqNN((dtU_h<8) z9Ml*+LR1Wu&MdM3UG$c|l}^?Db65Ac6&G9xclKQ^AZv*!SRHM_tRkF353c^hM*DT@ zHP57{{bbyxToU~nA=>e0E{u1@jsx&PfV%heh}f1&ePobAeOig367m65J{ra@O$+CVBWdy?7xQT%DWb46 z&yW9!F=Ss^WZ1k)==vn9#?1mX=MOB~j>j)>#IHaJ)wQsp2QUxWC;3fZNL4_>t^mMH zYDvuHvJCB*R|lhr0HO&P-G}Tok8#`yI}eAU?FYDu4}*X*AiR)0;I48==jyl%UOWHX zj0aA|D-boSAz({tM9x*bh+ep&rXT1lgi%muNLAUhwP^jhe=%>t@Lz8^UG>irVnRtpizz~@l_EVRRl$f+aD#tw2E$mT|d*tbDa z1KUnez~ktoRMvLfURmIHP%~m`ZZA7os2CoNnVzAsn?cx5#IJD=*H%p+6f-Ob=pcTB zhu7e5STj3EGjy7-WIVg5rNSmG`9s>b;vt9C>f`$pZwy*l84vIqdkcf>bmeDp1MGO7 zsgqz>wG?CEpG6I@j5hRXDW_v~FyWuj{$4?eL{hH)FrrQ_`o>h;P;9U0 zoluK5CE)g+3!2#cE35j_?gQ~QKcWP+NzHrZB?j2U!y2jTM9il&;ri=TQ`x< zo5y?A_QkBiu8zxr$M7VPT2uiq=xRVRV#Q^nO;nG}sz2q9(O61?j*w)rq!9zeJA zgxeE?>*y!KX!&9BeqiEkgB*2w(Z|Z1bYQSfEgE$wN(2VP6aIPf}gjCAN8H43x$rcEb4 zOr8@OvMLAoxGuAT=ff07qRsN|HXdLPVzN>an3gc;zBA45y=f4Lb$I%`zQ5>AvsIwG z=eiSEHL!Tm^b`MAFZi9Vg+T{&INFn0=6PrhYu zD=5-J?O*RWq$0&o9!G^(uT0MznkBEW<#I=we?r@t=Sy{)FIn%xTW97k77y2myFEvr zRz|pIx$F(9Z?g>6hX#ue6V2esz^-4n@1?&7At3XkrId!mbfPx~JLirzm3&}W1%cek z*YNyn6^{9(T-Sje2a)H1j2~W+Qpg>7`z~FkI0`pQFyHf~wa!yhP|M_ck8%rxbw!&o zt=kqx7S;N6$G8`SzX(@PA$>S%n^qB%nn|K0drQFgIUwxLzD2=D7?pwqx|64`KAgqK zV0a~>DGmLo@nJtVq@0Xb&4}L67c;Ay)8!c&DN*7<160?Pp4X@>Y`9NRD@`;=S*c7c zi&8>CH}g&7zIYJPNd3duHMXTfEks7FpuZg*57J7x8q1`mCA~>5GsvP>Sf}b|^jn@3 z8=gCTE!pN5DPcRFPD;5F*WGE~%(lipQ>9I^>8`hmi}x1bw7+37;fnP=?tEHxNGJVN zO-OCvB?{tAdEX8>4G5|as1752IK^?fAh|n>!Wc5na=c?@8}&d8CvxZ2slm$hkvyX7 z6i&n1$E5zFni2;#b0Nz7cVK$zEr7tD1bZp{t+A!CZ_rSxN|TcR6Gm3JGB^Vfr+qQu z;?GPrjR_hwzGGO6GqEUskK=hux~!#W$4G0yX=dfin3Q!7(ES^E=G`J|+Qsa31G~FF zTl%GaUR{b5LnRt5$xvt`F=`$pGIkkVdFEvJ5Oy@$Xk4Tl4KG1u zT+Xh1lP)WA@!AL}IS^WEyT0Y^c#?Q7A(F0eTnQaS*7%u=&Ug={FM4nD&%cFW)t{AK zI#U@0M$0Zk&+x7}sK*W|Q#LwxVZik>#hh5PoN>o@>b*@YBf#xPC3BGYv{9v$?wte% zK9RnMt;1Dk%-&0)yEzpv1AZ^epOExh(Ny@eSNM!vmPMo?KWY{nWf;hMpW*%?;?zsZ z4G<6KSI)`ZsaX`Is#xT}cG&e4@2L#a=J@mSiF{5M4N|3@A1t-HR!)~(xv0@@cla=L zy`8)phMGCrWX=o_DXGX-33>s{536(FR$+tVj>V|6kW^$Wh^{?HYZsI8m#idq0#zV9 zQQqT9LCe4Pp7$Bel)Lg{g}N}3cq;u>ZHpK!iC~oPQ&;K9h8*dgrdN3ZbN>K_PTznN zjJFZd+_y#L28k*6Du2+sm#e^1sFsNbBcgx*&Rz0Aa2z-SBD^1w1X1ii2@!Q< z!!u;q`>Fq1VvD$So}-g2V>FSM_n#A-i)0C{oxTu)!X9s&r4ROhuv`AOg#Mwt zcBhYVJsfZo>umq9gVvqtu8Y6HLH-XUsUDVQV`{-#J}Su%`nzFVojq*&O%_O8c7)K@ zd!ZiOOfe*^6$iCF+0mjPl66Qn{x8R#iExxZT=@T?kHO#>m7;X^+=BXd;-)+q=x+`C zzrYcKeLCa0T8t4ih%09T7xw7jEE(9JSa7N8E1JxP2{Wb@s7R9}Sl zokr`fZ|hAY$-ECUDjxDQ0wsnAN8HQt})A`Q$qm%MMU@ z&dl$f^jP7G-QB>WT3BN`)^XBuX(~s8gAd$Txpe& ze8PTGFVj4^x462St(lJK4;7}bCVdmwlh3;29eM&Q5H>;Edk|Ebr%K|}wcaOV7PRAA138v6fZ!QS}| z8d@Jg?z*G4AGaUhGyJ^HPdBD*LaDw;I(DR4BG5-kL{j#H^P~N>O=*|dX{$@F=Y|M1 z(?DBX(A31I|D~Y#w9KEc2sW!RX8 zEd$a#P+R59;#`A$KY=HvZ@wxHbhmbN~FIqj(1OFOt1bu@GQ#G)9FfO z{6dy9XK~nz)FHEQHgx>v3|)7skGDJe7{la!-x4n|W@EO*vU0)I1b5fmZ z1pPCb>#}$O9iqH${^Hp5zT1i7Xo#_e>yn?P)7|Or!m2l8H%h`9_IjuN zcf%1zQkDa*V?0#x=MS63kS00-0pdJeGKvsZt62+&3StanBKxd`$qmo75Y-s5de}cj zr|;;M%6Nflgk_&$QWkhR+ao+NtS;*IO#BL$>TAVM9%W;*+O4U$%}il#mdaJ0#KuGT zuMSf_Y!9Oc>j}fHMf|(Y;XW=;Gb%3A%z4KfC3kL|cQ0X44r0k0d5sAJt1i2=!B2_! z4NDqTZ7fK5Q#oZOnLP9YGmtF7q*9*L*=q8e&G4CGwwM&MDq2(WA{NDqHjBGhMlngA!w*2rhv25$rmL%AjQ8P&0ZDf}RMfQ{Nezf9Xq?j9x154Tx{TBOLWs+mI8 zcXd&GCLtmCl|wT3(nroE%|LR!1G*TIw>uz)5qDX&dd~$|kk81c(-d$X=Khu6v^eY$ z9YwiS?sz?2T3=`LiI3GOzj&8-+GO&^JBasku0k12#sU2Ne*cPI2&Mp?D;+$hNSy;k zv{4#v^Pr`=eHrL)6oYgkevi{G6+fu#H73uREh50^IM8`{1f6Z{Bb~^&q7gtfLZ!^H{om^jF0I z3HxP)#s%l-nehP3oG|BQ%8SR-xyAF2+v+ZM)wX-;T^ea#9oeKuDp!q{1Fz{L2G-S| zOvZKN#&8$;l%B&c9$_P$z3;AxAUJF^J}FN1bUS>=9q}bE94?h&p;@AO3^pS}XeI~q zTgg=Rb+#{`ov-u7tH+>U!m~7HR9*4=Iaf*>z#>4L1smW8lM+^pH(0Q)d&=)-EJJw( zF3FVm8yN3#5~SyQaG3H=ix4&AbIA)%SqWQ#D-z4`_ujUN%1lzcg7J$HzK z*@$cjpK6n89H{C`)wInll5=qR@B4KDZS3!rpH$1RFHweWH>ow??i2#jP{Oi%_xgfB zDVzL~v!>>z64$_y3uWr-b>^jqDd8}Jk<3pRh$}LkJ7l z()SEy70i*Jsl(A$XxPtLnd+zO@p%#LzMVzPWU7kz5J!Y7k}$@5e?>t* zV-MZjE7yHu2%5Fu#B6BD2v^>i(=1{}$W7{l#FcO9C6x>2`kgP_k3+E8*BT!wdu#tQ z*!I#@|fRrq?_$*UzfT$U-ZTpk*=C~1;=i1$9X$rPz7%1mg> zlH*J;q+qRn3s>ON-qL|qFKHImW!d7UI?{(y)66eLQC1tj{sRzW_t?n)T2r!R{$Pmk@@(ZeKGV~Tt{a{+)#e5}KJM{pPN7=*q-d@is!ANSPeQa4IVIqp zmB8I4L_O>e$w>CL-tA>DLBS(z7E`TZA*`cZ1|46sUxZPL+WF9O=dQs!vyV zXBW{HSQec_aW~&t)Ndhx%2DQ0;1w3fpyJxLCuQ0l?GXSFEW_h=3|N1|aCnPzy3!&x+!`Xt!F zV~JYQp)JN^>c}A_{paADADbd#k5QwteJbq0t24wpeLPRaBDU!U#oEBmVJQtbmKk0L zxmF^*>S-v=^!=nLHOiODOYR~HE*hv5D#nqQuw-Jt3Fc(0tc2LQxP&%s8Z2GeD6i!q zl%>g{FW~3=k=r8q<-&;z*MkTwH$8DEm`9axLjk#xl$PF83BY>m#BvsGgrCPD+7bX+ zKeFXBznBR;B5W%fT4cD1QiLmLi;0x>U&3?A1Y>3X_pB49w%4kJj!{81s4 zXYvykZ{xHJXL;*c^nC5(442CXk-Rm?vR6rsv003H*_I8pH(ml~m{h*g8AW6VCAUBM zh+;wtwhbC6cpC&r&ZSHSQWEK(ioVp&Q;VP1Q{_p&KWC07kYW{NN6LK{tuN%}_ZX}_ zRd!IIYR<*kH4EiU9mUe#^aNyJ+q2dakAL+1%rJ8_)fOD*21%Lu zMf&K4veu%Yov4f(LkfFd%g}J;VVi?*F%>If8||I_;(siSqvbK`LpTI3=Q6a{;;y}e ziLO{(iz3?+r$k3;87h=ugL(;`hxJ#QVLl9fk}^o6;4Q-er}H<1#i^=;-dsM<_M=1l zYkn1lCd5+%p$r_i2hD|_sVtTID%u%gb!i&O$yuv-jgmn_2&Ve^}a$9}t5*H^K zYKZ6=-o?W(=2g}tJj0qfR|sB8D*j=5J??$pJ)1)UB-zECvd!&RF=7~hqv>gY^bsY) z(mf<_Qy=5XyA<9gvQSaVG$8!6?YxxzUG|GWHN9lV)qaAIy?n9C=H$buAvO|2;TU*) zcP+JCU7ql!e0Jnm(dpXI>rmg`a4qFig-9o)NC_2mWwF_FR#)-TVEW7LS1a$NxiLbm zFQ74-%HL7y5aoKjJbT;9x6F5Syx^te4O|%E0FR>08Og)VrL_ZVwSJy0Gi8TmU+|+~ zm8iCZ=a&n=3|Vn$x|H*xUB;3vT1(ga+du%n{6o+eXra_;EKqxL*40V1Tn}v=U$I@< z#^QSU*+B`ZfP9he7N#TpEYOj0&FlQ?!|k3WV**)%P%O~cBdJ(}Xsx1{ZkNyNGGK)C zi!yiypJ1dgEVVr1jFVK5{A}c_yBeWf@vpSQ3}xd9>D}8m88zqN2RGwX7JmYe4xO3c zv@_nD)Gwl?&I+9jliB3Yy5sy|?5b($`+2w4Dqz(XHj6)IV!4eGPPDh%q&m}bQ@(x1 zFx8T|S8-Kl$M!Efpw*OFJ|SSll&(e&8zY)QU7|1|95GL5x)Hx{gkK1}W92@iavucJ zwn-5KM#W4}6hGb}ERY;gU8V@3@Dm`2c>!jK^#26>fZ~4zx$b!k0u9b`Fd{8~E~z^R zes>Au1kC~Pt0_f>3xr1$7hXhV{|V$5TK{h#w~+d;KuU4peQVdnTG;iWK>MY(flNZ4eBL~$M-vMhL3zjtcIt6{%eeRj5+bc z%G>(bi_=kbpLgUhT}7XCs^p11-{j`idG3P7BE3U()Y%di^(h$j;|ds0HIuvb(f0S} zeQV2&3Z=qvy$^fO+nDp=znDkG&ks_meJR?stlolO>jTOD^y$?UFEM6}->TWKa4o8} zy%9@RCso%1&_n~oieG;?)6Y)gN+%}PY3wv#o9by)Jl1WlE>Dx*^=be3c9e3~vAO?o z<7|{mrP-%sJkVNa>9*#}W-8sJQ{Y%|WZ6EkzQjQvbvH$>3-2=w?d34vl>8jC8k1xXu?&Pg& z*X9{g>0D?ktol;cl~LxmxOVtvh4P!5Yw5yORWK|Ku86~mD!z8!paUL)3l^T1pVh>t zakDV)QI~IeY4?@k_5~4B89QC(ZATNiDOcbC2uTVar--q|DhZruzK_wdr5e6r#8WY&I;jH&Fc&9dtybbE*1Ka`X7Z zIF7GE4p%#<>(x)ovWp4aP(AX9%q2)q%<-yS)!d3(L}i`6-m!y-Xgj{20!t(?J*#K* zgGlgR2Eou@zvUlH9a;~WZ81l&r-Pv2i7#VhOFG=?JUpgo^hKFEmCT@fwY@qsI*ZZ9>jZ&G5DZr#BfA%#)$!7@?d@r)6< z^5ul00N0cINucDSizkX=woIC1UN~t~HyiuI666SLKn?DRYW_gq<9JmAQnPM){rp>X z(gs%3#&XW97CP`e=hn#!6~~g2Rm)g6UJ587Y&&NK`U#3@ET1l|UqyD9sK`VacSIAU zk|fCcB_8Wn^Av2f;ZX(W_0<3)EZ5ScQE?-xF=_9ul=yi+75r@qNj|khkjC;mMiq^=}|J`1cCq+BpbDyvVg(} z9b6wQ79KYd@iy)&vrWebRnImbamfFTAvH8#B8D#uW!7Mt6FV`hW}9u~U&Kd)G7K_0 z>vQ5G>=4UJlRcUUDl^HAc^En%SO!QN@w9-DR z5L-izoE<|3Cst93N|B*x7Assvm~?AMoXxQJ2aMSjQJ7~As5*DFXLT@3AoLy_GJPqK z|M9ujF6s}VYA%U#5ZpqV0Bjnk$)XF_Un(UR5>R01`CUH(^@zw2ZlaO32OUGuRYmMq zg8E!b1YSd$s)Slz)5IgeT!>Jh!PRzeA5Gi!B=bvyZ8*;qPc|e1LYro^XM+b}AaO{6F&*?qH~#wMpsNDHN27aiL%c~ey$uG1 z8}Mh$>MxA*uu2$AOKJuplfB?pVBNuDUpkUS4NygBtH}M1=LGzgJI09RlwbQVKOO*A zIaVcUCQcxZZD~+T*bD(V>9XEU=mmC|%`R$+HsCpuN?s{>p_+=qTaBxE_^O~o;B&+& zUmw^b-3=gXv{m_mkv`rba`*(+(iT8S#&2&YBGpV z+21jyRELazX>NU;el=IwLFc4e0xbg0Utpy!Zd*vr1B{|GQ~X2JIG0W(HIYT#+|DG} z_8?KQ#^R?KG^F8lfi^MZQj}e(hpj&VEYNa{R1#TmMR3l z_ZO&?46c~DY+wfRWO(C%L{J|pK9X#aETS#5G|>n2jLlg!Wcbwk<}E2QvdB=STRIy)DjP564$_q66# zSj0#i7_Y*RVER?Nb{B}*`)`to$#vysXe(jV0QY{9jUl~PVV-yU2^a|dZt>d-bfd?4&BW*Ytn5%!L9p;UgvNia!}hvwjoy#*9B_XUd-Vd-$a7cG!x~SG$?Liw z(EKxET{eZgHLdC`{jJRnm(+wl62N(xLY~xz5nZR63H{q^6wUqXin-PT3I=K>U2@uX ze84&gL!JMjU&N}9xYg$DfCF%h5)9xWe}ZEQ3Kv$CIDQa~T#sCnXJ8^Uhp>V3YT8=1 zY3kgIcX*`}1v5Uni%bypIb35sD7)~KKZdQF85yRZD3y+pI^^90W9ew!`u+Id=JwCwnh>A5k-?Qt(g?GFcPxQ;< zUi<)wz&sMdZ-{d1wsGsFXS%zv=j&7;ziZoE7}l5(%;&%Rt6OjlPq0g(6>dOICvPd@1pgW zA@?{WI>>BDxosnQcXzpfTM1$I_?1evznLOr2m{65iW4UXF{d}`3W^v#5805gp)n5w z{_N(P-K{D2kD*Syp0p`p>&9aYu}JK@Q)*Uf{P99? z4Ks|+qDeIk(7s7FJTVSgJ07VG7`f;lDJ?c2ya(18SPebEV@!P2N&`He!P04_pcA!z z!uVw{q*spfV!VL7Aw=-*KxwdY#0P32 zg-M;K&PzoGQtzb#kyG?lNbo=y#>CSZPPmD>tPKmr!>e53(Wzy@75Id}_)kbCH!!q@ z`Q%uTL9^qLaaHauAw+_p?hEgXBoQ>zaR6zINN>CbR!T$h0h#?(g17o=8}E81!}Z+dmbL)q+~+XB`KR{27yrztidjO9uB5^ zatmZnkMP`_=LsW1aq;KU+@8zSlxN?f%eHH8>~|c1?)Yo;`dvKyub4LKgR4DQ8)kEn zlD-Z3iea(10oYMc4%FoZ=9c>rv3Vm>->m53ix-BKPki=pGPzqtH)6kFpS?2cMbyq? zbv|O%!%l}>@(Pt(a(*Qi@gV@< z^p1U{vfJ5(k*LH0P{_jxLJG&?&f)NK%;ID0EhO;M#;vd)tR34<>rKitJz;1DDM5rb zJ&1h8;VsF8O?VF?)=jZ2B_D*bv*5J#E7m;vUW8{Hy&c6RY&T9_KX%;F4|(D=syyJ) z_$G<5nVrFFd#D$P9)u$CUgJ;3ezy^4=k&ZBL#Ew6(0bV;%4>D@qz*^DO<%rdP=4y7 zBpoiUGFKXpxrVEm+5*5(fIS?LB;MX<=*#HAZ_V9IWR1I;H%~hw=dRy+J$VEUJ?HSlo^&c^FZQsQ6|R za{d@mP-ht7=1$9zott<=LVRSC))M3^hw}D$j2am4Kp9MSW(LinlExmcte7$eX4wW@ zFm43QDI?Fm+|>F4N19PR_;@^xcpXhOaC&heeQjpcKOx1I`$yxfoMN2DEMaq;oFjE+ zDWT$;%;d@5&~(d$pSSr0XM{opEwKdhO+?&W7Hyi_S6V(f)H zcX%1nynHOv6HgK+Un;0zL2Zten9FWNl)RG!ySk`YG#kVP$ zM$@`BxPIInuD8`|(nTKD^mKT<%0GP`R-99J>Ov$@4;9Vc>!w%QpPp%+p%D7|>a%RQP+d zKPBsZvkp=Nnx;ZFU++{)$yDTk7)f`1_9|q^Y$VlXIg%)%F)9v-zIdLHka%!Is^68LXpxwzCa#Mh;3ZSUh56@u-%|hFVEgrrCC#Ti`IiM zt3TOoNx+`aPOQGdZb#?#UAUoqy_s{eYBI<q6})o_&N) ziyrm6wG1p`&MOV|?;ZLw|L?{Ip)=!9pfH%sYj}yH!-5Tr@D>Sh8u1Wjol&BXQRzY_ zU=jr!$^iHbXYalpfb|R8^nvQTn@3HZ2HA*~^C)b3E9C&Q+>kt~do5R=89{wx`f7m^9wBIqdu_$1&r33E?u=fpf|{m)7LZiT_zr zI&_A|hKHjeo7oN_ptfYLU=_Cstd_MKXvet_oQCZI^2$>_GGq|Ihysg6wJUnMqML9vI0WBC0ym|@U~Qa-lg2%x*ocGR{^ zg)9_2-Apcm5+lDN(SqvRqU(nWn=!~v zD4?u%c5KEtlnC-I#DSP)P@}h%f`j!YqsGJH($dZqt8hJh&T;TWVc(HvuTos?!-Q^^ zd?%@qgMg06Hn2KvB0%^ZL?&Bps0h0Bd-O1^ z=+z5td%iewm_l1cc&u3*vGptXc+X<)3lS41tuQTUszAW-3_e^&b;YwFMO9w@50p9l z3NUoY*f$Zb%%oTcaWvY6#<>)j#yR(*6g~2Rv;R*bv4?HaBj-5SJ?}LZ!BG1zTVCs2 z;qyeQkYcQQ>NzD6fH$8#%V@TIqpb3c98dWvLu`~tm93=bdxB-U*BX#fGlO55fDKzY zbqtVqp@2*#DseJ^bK?)iX4=kc2lBG8uO*wRi1+k3(VNHkL`-;h@Fk+v_Wg7peuxHy zpw(K68bk{w$-rWWXZi3&$A>4osemW6k%`wc;72z z)#MqaU1U^7I@!$%OgVu;?K98L8Ns3~`=3bMkT}IuX)g=-7YZS5i|k*{pCdjeZy5=z zXo`&xT9CysipJN8Ze$Vq^cs&Eo-E7;l`3%J;lhDAf26VgurhNRQ^E9IeztFU`1Apg zy*y@As7qsPs)fdmRsk>GNw*3+*VrZO;G1`XXplUEz{3~<>6Ca7Oop$tNI;aIvvJ2z zaRuHo+o`OnA|ekmoe09;$5UWm8t#*up&A@!z^E9Ocd{KdtqV87&(oeXQ4nk8;}kL} zVS6Hrwc!kWGLnF3_V=v_4QdNIBl}B**7n{o_(Sw(K_G`F_J%x;03t#7@HrulUQva#Sgv_av7(haz8=ssK?J+mme4ju zQiYHCPy|tAltrc)OjgCMz#t_sn&AFXNmGAMo)Zn=%}o)+K+4Vp#XHt_kE}kg)+6jj zw+E^%lMj^bOPKS_&AbAh^JH+*R`kjOefKRSlv9=uw`jh8G)DNC1qRp`p$p?$X3dkv z)KTLbB8$e)^n&kkK(UwAKmn33pncM9gf<{^HCE%;Mt=&l>Zb=>8dC{i<-Y2eVv_+~ ztd1e=cP&NVft%by_`)LIP;Ot9)xN~jMmP8Z-ZVFNc6&8p#U zF!j}(SN>@s=C;;CaKFTjlLCY?VjY5NRD=+Th9exH5~Lpm;mLs-Ye4%anV2?2zHdN* z986UKNMZ&dim=z)%cjgxBVC4CLA!JeMTBY$_BLaIqCDn6T;R5Rb<@^=oufI8CAG7? zuWtCN!2n3ODA)3f;`!2C@`VvNdw`dqW)y^wiGaSOW4v1$6YlZ(_iQ@`5yJed*;nM( zYh%C3V3oWZ$7235HS!D8vN;i?IC4bEKmghAk(z!_I}E7CkPR=z?As>O6#GF5@LdDJNbk+2x8uiLgX&^$sj9)8-!aU^;O$n z=6>r1gq^tTYm+L@6nvH1RXMgn;g@b@eXazNj-#043=`7I3PoN~MM4-JTGFjG(X|Iu zb^elx>TB$&pjGkLM%sH+7WG!@WfckT5zya`tR%SxQ<*n0%|kR-`ii4+u1iM;k(xBi zQC}aUVbs?!f^zcqiIRq=diY_$Rj$V5iC0wcPA})`tk7YJOoHkP$-xv`1U+a%%G>oQ z9gI0tGY}uQ;v*tEmmUQ7!a%Mld>i3Y8lLn7sIM1nN9efOe>xh_Rf=QcKks|cPcc`R z??GXAJ~j?2urE7J7~eX)%C=Hk5bOSVVwBS+sE;^(>+@5W$(W0BZ(Pj~29{fUrc$fmmzDnoZlqLm>L$q10+*AmHyxD;l%|Yj5#`<9t$9n)2=Y*(C z4fcIk!^8ghJjhaV>W{q>?;Uhf$hX}y<&nERD$ZfSr|pTM9n44yT>U{`_n!>_ewUmN zd+i1-{g&BYJf5s6Cmwcj@ts!cDRN6DotK|g^ClA;1 z%_{|#U<7y6pYyr+{Ry5#k9Os7W#`(s^CXys0n;KlDL{O@j*%_Cr2udz&%tkjWL>?J z(jAf0Ms<)gSbO#c>zzh0-0Ah6>CKML$w&sK^p-w)pp154uT6KZ zVc{Dg4MR+y9oR#+0{*bOn1v4pL5)0NzmeOFo#MRs>x#h&)oi52nSD$9TlIR#Ddzd( z^>A?!;`Oy;uO?kdS($atS3& znCkM0QJY^Og@n+|v>EC{4wCK+2|xzPm%D<8loK!W+Tj@ZH_zPzWSn}uF%f+9$Z?^Q zT4JIAbyrY!peK-^yA&R)ET_bWBmPv$pd?~SoSx83V9sxmWkO^>+ZS~!mU2D@MCytBc}|ExCL$?meFDkD2gR@72a?KT zf^d6NW&0>CqGR|>@yQ$g16;~{ztCivkxcnHHv{Qb8~ zzIif_A}J`N{3typ;cmEz<NUaU*9S0wsU@dMr&P9ZaO#M)*~;o8{x4Ydy>B<(=j(9p`#@;kd)&Jivz#KOrX2#}pvD|&iTc4)U>1CYvZ!z{>*OWYS(iNf}WGli+f@5?Is`6 z7NgoI|1U;o4HN|~v)0Z#soRxsx)Ku(^$19MH>T_i-|itGEuL$|p_iIEG|PJLwqad} z--(MRK0-)55#5}Xe%=VM+k$rE22HsTMt>2_tvX1ZB39wtpaUgA2ZOMTwDBg4yHGV_l7@{)dW8a)u|xbYZm%ACXK?&=4C&+=NT!qIDk%<2clZ zTg;XXI;saZx0gMV48l+)Msn;W!t}R;|JkRNUfz0hK#VJ>y2vfkw(5H)0um0)B00-p zjOAM}XwI(|U(sKv0}gn}w7xn|`W5Zm1{{{HjZZ;$8`J||Uy6s$%G#xYjWVzk<#N`x zn<&@K6SA8&>@G4VD0IUHwcE52_sir-Ga|bqL2}LH`8WwO855633fK6@j}9G>6KnL! zS4%5lT!~p+JbiN@$3)0DGiR^D7?#~5FpTkazbK`5tt=)d46Otb73{TA@`ft2gM$|- z@S;g(5)Rx6DH(ABxUEl@^53#uDsgGxEicLd&?$R^=T%jFT_-W?+ zj{DD}wSQp-5$Y%Byt+3lw-6cV+u_WcDj-lua-bB}Rl2ey&thw?>i6)Vrm_P@HId0} zJjZ0IEbA@41@qEHPMQd+e#!?1bf>bioCRX)ADM|59;%N3~kp#wn2@%Gxf9>CN4xXSTc z?pK$tK;#b%ef#sSduP^Jvfy@PEG@zISQ)c~-G$PBPria6ZEx<|N-p=Ee^k=hLF+5U zvHqRN$hz9^K+e=et7=I3xQ@B*vyeEBlSi~8u8kLHS#aH5gTC| zyt{}x%ftN)MXv@C5*|pV6i3YFE$};PcIDJ6ozC|ho{+lwRXfWKk;}3cj|Ix_Rms33 z_{9%tj$OWe_L{Ap1a)N&9<}ZC^y8UevM~FEn6dQu3V6lstYJz14kY8_x?9(4y3Jeu z*&EO8X2B1Jwp(3noX30|GfR_W!MoeHs%Nz;M#kA9_iO3ns$Eddu2%ETq+DS1w0qOb zQhpsa&3;z*{ubQFjwQ@Q@NC7c4%|o8(KumwvWwn=UeA_-ZW+?u@oWl$>&}av@lEd* z&!kOpG=*vMWj+X;sP^|vH&)zFD9aowkQkpvxZ>t|k&3y^Rf)WkID#TETX{}du^S@O z(HkTHTZ;-2gB$@eVp3S^#?CZQ95J3?Za}O(c9#Pfp*Uk1p-kN2VS*-QH)D%9gx@W! zoS@?Qjga;(Y}0%wl0*{%P6_A2aUimq5ggpak9iXLn!^iDKLBXLKH@IX&MXOF1(LMH zsupG?{BV-2`bQVBGvT;GrRJ?^32%yck@2N<%rbaUq?!7|O`(T>RyQ|lhw?4N8aEf4 zxVFIy#Hkcpb!El9DUh80=PpVA-i72pcX3Omy++H2XC?VHfp+Uc1pBjSJm^2HQ7RMp z=cH0X`!uqF^)MCyQ6%{v?bCnG)<}o3{ayHTRH|&k?xhHpA5odi&meLkglMer-)EXQ zn{3Aa7(t@^Z-f7Rlqk|fy~+P>@OYxtDy1;I83Y-r1sCZFAhH?k7XYHhv;66#vcazNNo9&)gbD#NJ_RnNkVn@y4{t`%i2&Re}Whq2-Hr8>YMc?xGt@!i7JV zU5=_xiFlsG$b?S=E;DJeM2#_FJW;Zs|D3+=Mf+m|-UoX$H*T@#2%D|@k6O{m)T09e zt>lpvQKrJ=Z>rl159ZcgTQYUwOC-XoeP2&k&et^W_aj4(uomL7;3XYN_K(N6cmF!g zn->qpoozi`FATkJV6x2LN^xO|2Qh`NVbbP{u<8VPVvtD~Guv{$#)k^Ow$(~_dh~y; zo63NzQt@~^Yvcl^88L(6_B~N9YjQH8WVf@?*W| zfn-%GmYLt*#toMNvg+&a&eO&3UgCV7Rsv<;!^f(uIFy6SSR=a_lajWomlzsw^o4s< zOyo*FrFWpb?#3%O-iYS=Og`%U_(=7TK5mL)T=$eU0fF{qPdIC?iUm@<;z1U{Tlcz} zllSFRts;L zGeWI}#XmaBzq<6Jv=G(2|CCKtAUKk=uT=9ltY)TGa1Z)6SvPczv5UT@S(|dJ(P)+k zk_^xrGAWG*|5^&wh}|25AiQBQjC6MG*S62hi} zj+v>*K~XN@Y!T*r$@=TtO{48Z&j+ z0@?jlA)y4&8ONgq=t9c1Vwn-ZdI8Urfn1)ax!piELCM^q>jZI=vKja*kS-Q}E~n>Q zcp-tfF;XDk`Dcde&4o2BKQ8y86VUIA#T|PBTF#{X_IqGtcNFV^3+M8hE`&G*X`18f z7tk6YSJiF;qZtU0ob1gSfN`br$E9azIZTZ*-&YYb?)OGmbV(zaQ}XTYhy?cOYwAKt zcD^Go=Qwt*SiVsnxaI@0qOI7(G6)Zqh)w}Hxzc?_=lH}n|7s#)DvTvR zN+aB>Rz&nYLr01VL+n!-Ex9-%PqTw*@Y?I8OAk0oAPd}e<`p*9x)gsGh83L*V(JF2^wicjF8XH?5QUj5?+CJ`PD_^P{_ z{w$Z>Y#zY2W`I{lSY(Q#F^dO9CROwQvZ;rSh4xHX%Fds=uDO);d6_xV`F%xefjP#2p{g)JNP^(;&X?M`LZ{~V z5J{CCcP#qOP=Vq6hV;{#4Y6ZRm3U!(nsy~uc4;-@w}&y@c`>mX?eX=JV&K(Ocz;iI zWT%;U|1ngyir(jtOeRG@7iD5r2uQuByS~jbKHlt2MV{)A_V>d)`}#?ICsd$hYTUp% zY!`FZh=D2}oiEyudNwrES@v}E#%{?Ry=M2wB2>)ZLiY8V8fNSHbx+y0&}}HWW1wWH zJfDQ#EJeFtDk6Yr@?AwiuSw*5@Wv zniZarkOLJfxgJc;oK)_aZLdJ#s&Jr-D4d?PI7quYCo4eMNwg4TlYCDEY|{Je%-koJ z4c+opGg^y2G_32#s_OI;&n(W&w7&n1ZA^mnx5Ch zJb{x(krOne?0MIvB)uaqPs}W*g|B^V;aR?xw)RFeZ$XX?maDm|I711?s(`;f`;>5biZ5h~j zLNJ;4AGMM5d3Ii5Wr!z+FjRbfD=le#5)3Pi^alANzq*9yF2TzJ=>%#a^HJ4s?+GISh|2<>Az*&Cg zdq$Q4SZ72CCWV|YYfIu?>jSI0hNXOQ01W?omhlapVIjitH@!i1ho5YQt?Kw6$nGzV z;M@6~Q?%q9Lulwr76Y8#{tg;L95a?4ti6*y7K%UMAtcX=VC)VlN+}RJR;_{qYc6Ia zO8ZDR3w^(f^1|ljJ@Bq9LqGv(Z{^g9|Gh*2#N{Z0u5N z8@do>XP$(LS-|ymBjWJ_KalGxgbX&#pAIasA*x3~UT2$9&AeL&`;cH{AMUd1Zk!KI zDj}ZpHsSetiYRIwXHyU!03t%Y;oQhH2EY zQZFHO3EijRvEfz!jQN{z-nR{|1Tiry!MZN8RxrMr{>9#3KLTjVHnNqY%Zh7&jD(XD zfNW+P6@7QCF%Jk=WVQg>{`&!j8iG=Z@aH+d36W*YDzxT|lV9M8^v*qEOTtLmf|I}A zn`yKhup&4C>2!Pyxx@mtC`FtBpl#AXQTXc;$1^;9EVO{xj;JcL5_G1PAn`OB`9$sn z#*&MnKjRPbsoDt+w2(kw^1nVp3$2~~=Ljrm%?@Z2GV7P%=vd_;NINpuKtOB@F8OTM zEGAlznU4jB|5ea*t%8(LOQuAN(6I(W{8me*fUD4N4TQh-`~O;yFV#|AHZIX3>KTn1 z6cGLflPbY3M6MYX%YrMO{#%G%^D!-6t0@GGSoU&@6D=CdRMXD5^jiRX9w&;qk_(}! zU7{s*oO5}_VPvTGn%}2=8H3lps6lx$K#^JeXO|-oz)1-;_UzNRX;E zFs2}?m>9#t-`?|mPS_@6QmlWT+|v$J76<1YOk@@AEeCVT){J^w+98{ibF4nos8V+aKaMEs?~~ zG?DJcvY04U5Nyl)U>vo2c0Nr#KlJY{JNvhR?RZBSQ!otS%|36(T8)%T6UWDR^~C$x zY@#z#N|Ssg>eu(D@z<32*Gz~5dzSewv=Qv~wba{gc-$8G56f$sdNw|v@R;>X?uMYr9xiU< z-z+;GqDl#_ zzM6-DUbv~TzQ3qTDH3(v~_r&RtNV2({&O_kp>@`q$?sZR0&vWA=(_{fKXgjGRc6 zg@JrcVK|y3BeBv)@Ter_hY1hU6cru?EE`0f#}l8`WzX0iG`u)nV=Ck4$XQJS?Ln#Y zr1r3s`gSlv$6jesNPo5xFgb<0aS<=oaMKPo#YOrk3U7`a-(iZHHIPcqY?Pa84$Cew zDP9EG6h_DFx@lY9-RiNx3ckY>UhK$S0qR;2n|vp zIbuIg<~EX&sKkVG7+##B#I1pxMi62*BM9x~l(ts*$=y1C(j6B7VY<;ht5igV_G+$3 zbn#&bfMiTWVskbRsw-Y1`7Cw@u0|=#qzu97*&V@&BBOY%DLyOSdbP=+=R3|$mgx0G zckw{HTXwuKDyjqoGlVD+SmpmVp zqNGd>#XuUMKRf;tue9AP89wISVwvP@-F%MhBKC1O+qet2-iPlIj1@mlFT!LDNd+8I z9B=u&-c+_JST4e|c>~{7pB@wy(b~XAcyg4uU7?o6J_@nTK?k|<9l}hj1g96e-z;AE zfNPf+#8huhdP`EyHfxTv)D07~{C7*`1TE=;1%f&q#WFH)`j|t5{@0q)%P4w?S5fC~ z#%DFE2&{qEywg%F*uK*f6(jDs0=_GEp?n-F!9rF~Y3LS&wFsTNAN$L_aD%UxOwz(r ze96XE9O}4>*)p3S<9I$5Z*7BRC)Sj(2Rn{y z@#ykF`_GpDPkmA;qL~<-q1&aRCq<^bvZO#jY0`v|@};Xt=<ZCS?-mD~5@;NZoZB8jK$AhMXk&%YM)ENP1>;$>W#XcdSGy|7J=@eRcAMy*~R4 zSB3*Q>6IMz`p^{jndQRPKK_*@8=2jNH!KI;EN60rZnxs}-AFxH`Cp9Exzd8e3Jd$5 zb^LUTGi0fY5=wZwm*z7=d0(@dt?D@-J&DU1giEXybr@w93c=@b-> zF)=Y2P%%r7KI@>h!ltJ%5twO!n%SDbg>&w@sq%HH95GH(l(|k6e*{R0WTT@PuL<$r zy@jM66i(%zAy4SS*pEWybFl}!)-;X%d`U7S3H+l7?-v}npj#mngrT{BpG6L+;I>sU zvOZ5P#C~&gWlVw((5kn;U$rU~G~i?n*(KM__c>yUZU5*0In9`t$b<1X9mqB%B`|Zi zI*2%G1{g3cFkm#Gt5ai?_~ecUMiecFjO^lq)6!PFlSRA40mVW$g@U<&fLIr?ucNbq z#_ceDvmTWd$|CEO=?V6Mp;!d-pQ2vR5>Y58&ywWrqCZJE1-Mg~pL)iLj)@ct=nSmH ziZ+A~$OvY`TUC%Q_Z;;b%MvFeykz5>pJvr^17kMZvwrb$7BheShSqFSC+i!zg|aYr zq03lk(EQY56*`#eAr_dptfk5i1vYnGfn2aj9tqT{G#6_(u932ey-=GACPbOAMbc@I zuEzBQRH7#3TCKpLoC*=V*`>KG63vrE6oDw(HId?qv!2kVLjq5L!8jsy8@zr42JtJz zfx;+WMnVp+*vNr_LojG;@WEb;0Y6CRC!AM1YLm)T1m*L?KS&wK^|^17frbuKt7=7N|LhsNnV z#^u5war*v=d}TS1A-XPOWQ1^7lEe{5z_iM%C(G zIl5aKwb+5VOqgK;dx>Q(x)_4-J&Mh`GNrH#T2YE~-=bG+>GF+t`1OY~V(!T@PM{Y4 z{JPfRagx>TU3s*1m{0Cg&kKp(qjh|Tds<#4s1G6a9vRVxlppe1RGfigD{4I1j&vqj zW1HstFB{w0;Y#gyj9&IvaT%-O<`cRgBp-9H+BQ3}J^A0?!FGK|a>uUfDUOpkwIH6o zLn^;&i9o#Gc^*l^AHB}vguKt3`MNEUIb<7dNqusbm^nc$X~sr8fUZAan*5r{LHwTKgcmxkvni8X zd|`9fM$Y9b8g19E%#-7pF|A8VBuwLhUgRkLaHcAL@L(r=j5s&(BaSpau~kD=S~sEJ z1{5b0MnONi<^|X8JlIyTgh<=rbw!%hVPOpvp?B+qXXSBNPJAbBwl3d*qQ&cq4~c@_L={mNEKb0n-175sNKiPJ4lm3 z8AIPhu4**oS0px6b|JXKNCtQb!uMBY+}n{h84> zxNUi9%kWMOt0k89wZUH*Lh6u`)K5OwOTU+|AZH?YHhyE9?xW-6OE-{)`IZQ+F{R+%) zgH3KaYg1-+eU7x>dKzDQ9nj60+BvWNQr)z+)Go~Ed;?uL+f~bp$(zlxJz3Bx?xb!V zzcA3#{u)$YomJN~3#PlZ+0_qTU;mz<-?}~Y9y$r~S;4@XBz?+~P7nkcJN0Xi_}!Qx z+hoX|qv<vwI+1?`Y zT%Do%NV&x}Q}vp&iMIX+UW?)@EGR?*sDZ?*RZWv!S3$T<%etc4=#on&BfNGOn)s!J z54W)_Bm9xJqikiq`RcuVEc%+>*xt_fTl?y}MwVX_AC0|D^2jxft^7q6DviD{DeWOW zM3{kl1W?u$JpSoyB9 zav)Qgdh&3&Ve%fP!JES6@Q7H|Zm*Eo-S)w3hI zjD@SfB}xuVa^|A^66#x4ImdY53oQZD-pjK)EPIfxtInkl`V{*8TMv#c{~>?U91T64 z9@Fd7=XXwRhIG-=ORg7-^;%WkEmrI04lwk^m1y&PnA$eX` z9F*CTv@taW0C1Bi8v={+AuQ}H0k#RPE)26K@&(C2`5O#A&9fz~WN zKCJp00ys>x^o$Q!eh1QCs1KOnx}8HS6ynl!u_}=$n$@trufS11O!Ak*3}Q!`!hWg= z0H2^Q!n8;PVp&RTz=llf4UN8m_yOQFt$yLr`#YY(B=3Pas1#JWTh%7YF;!H?*n#VG zpF-l7PWUr7{t>1`R`tjG;5exTm#!GFko#9UYzgU>ZAlNU*Ls*pkeF}Ar7i0R*)5SA>}ZtU{BZO-Qr5WjAg-ym109wF);l$ zlOdi2gJPKxx$Q=#s?QWAaELHT8y$w?41EYGpy3gmoWKp}QFzUX2Tz7Vm0CS}VfN6S zPzVBu&=#TZsG~$*_NcWwS(TUy#a}^NQq0#ZI$RU();|K2WQB=WxGuZ^<>#|dTskYEGlGBociTg)3f8wiI+1Q&L1^ z;j?3aSIDi93W-e8F3*Yj3DlMG6NhV;o&PH>9-}`vCcxYQeI_G$r4bIGGDAXvB0){H zHE+>iWpjv?!v00LqkJz?VePLsD$AbOW|4DYwV7yT*NL`x(P5!Dm8yG?hS5wbKj&9{z;&>bwOo3+D@U@Ly9_>&Eag^t*QfPp_ar zCzQ8Xa|-GV#(4}BOH^&!^_-BaGk2k8||73#PfcFBy4kP2&i&8K45)z5%dm8|OWF-Z!yw%z#xZbV!yTstx1ZY!#8y&|yMG-x4ROoZpl_da z0EG<0f(Hj5NKwd52de;BLMmO73321yedSrWM)Ct~IDlj;-cyG9CN@PhmoldFn)F2l8w)&tO*q%B|{=#rx-C1iGZ)=Zv! z$&#$>;tr_5r%KJ6C&BfewSeB}JAT<*2&C7jHVJ6wMV%ija9mf^XwRV0H|<(3#+?aLFugTy$YeK%nt-sV}-j+*z#w=(3z2dA) zL3+4O^M^f`9`xmt9wqu}xyQZ!_k=Eva?jvq$I=&tAQ@YoS@=52OEcS zV)Yw1UYCQOlDsE0C|vBbWm`SHFBC2BM>%g>!5&D<&B z^dmubQO53X*!D1L5GH8_r1*$Jknb=m)G(&itH&;lRO#?}!7~l(!5<~=O3*Sn8NoOz z9jS3fisC9Id17HBR<>@EJlQDQH4@ftjUN{`2TPw&h}C}OrI^ae!t2&wY4yA8UUf#l ztQx_ujFw0kZ=Y9uXcR3Ne>XZl+hY;L)%)(0QvG;GFLV#%%9Fn677(hnk&Ax1f0NMY zECF7DVrb|Apy(Md7bVK16fAh-o$hIPHWYzFhx&?Kp2Mw%5z3R zZvADg7J==VqU?1YzbuGFB@5aoI8PK2j6y%?dZ8unoo^^c2o`FmadPfGJpKce*Bq6u zfud4>E-;CX3CgWz3y)ukPz^&~g7aRgs6@Sdo}Lu^SA2F!TGK0^4GyXxBKzKQ|H0$= z=g8a(1C|gWDp>F;_{gEd6FC4Y`((LLZ3xTKinZ`}P2tKsOjDZ)f2OW8uQC8U#dILj z$f#J@H_WNWpV1;PDV!LYV+n)52qw8fw}Vc9K**>+Bp~<0PGKNrrezWtvQwvHtACS) zIFkN*Ceo0|zke$n{pUn8ad7D2TeD-w!d{f=se;vcHv=w7tW*_7MYGP4hfF72LDC3F zgTL^5S;T#Ecqs{@EMQTpd~2sLl$1o)=p$bOh~yHdaw~=?Jdq{bSp=kHR_sdsZiZZf zQsD@HqgzmorzC%7*a;ESP>{K4VI;5?AZHW$kGV7dYnE`pxMKoJc{U2YZdvZvZU3t$&j9bo}vQw3hcCa~p)9_yVqbuW+N!ed% z@H-iPZx3rhYkvCiGLn;Ow_b&-OjPfL1%3I)c^P}1m}s*vQ%RHV_I*4$^c`$DuBq8F zaLtQkA)6~t{dW3%PMZqPU467j_VRpv3weF?CG0;GqC~2zT`PQPVu){@YjO>9DU(jh zq;E_%&(m@EYJr}!oiHJ_Iiiy8x}#d%+)~rNHQ(Id4yk|Fv^u7e_l`4>bXIp=fxBDH zB#_?UW^XvJ*&GRqKv$vUExguUxOTsYt( z?3FGmtncMz%tbS9iGW~(AjXn@21&vSMro8+YRzgRi&q`%QNcm|6DsqBUjI%HP zVy$G$y49LBzE1JvPRY6p^^>=)v6GBmD-q_WKD(>A(-VefuaAvyDfzWnP|fq~&vP?-`FYbV6tA8~T!7@i3a5>U@gx{2b+^I@>A!G1QqvR%7F7 ze^bUK0h*^@*F2dB>f5mzY2b%laThuGZHx{u^yeL3wSi4J0kb4v&Y2APp+!?wd-d60 z30hePyr!{x@_=1~!ddT4=9&$#k62yKmn$wP;`KOE?{^ln_3}3f8#}N*^+=2??T=CM z+I^YdL&pFy*q9I9uf2n5w~}q=+8Ubl6OUXr$|uR^6ot>#Wwj zQ*F@*f03S|gZq@7Sb}4U(t(NyMnM+hi>=Y{E37AEnkLG)f+$uBb*{@3Yov_l&;M8g zT%2A5%bft^C!45e-O5|u^YZ7Ofbzq1@AVgCK~>t1<(`>ELDi8FD;(#UL4YO)=PA&% z81c@fJB$qK0F-PfJkedJ#l>U#_gtMfQ!aOwG>lc`CjTYxD6ZKrOMwu>2QBEa3e#M? z)lCGvo51{5vXgP2fGf(0eRR`rFhjo?QcJ+|5aLgy87-WTBgrVtZ^X`Y>agZlgMHN{ zCZMQG>=G+U`{|XO1*0^2&|vU;WL(RwqevsRBGZ(gG$v^NtV}Apj-B)X?(!iu*op|~c7=?O`QFvrAl0>z^5CWR>1SMdv z`nc#&P6D!_qBC<3M93sb4HRXTF^jcq-G*eApc`XKGk(a_dM?wec6$^|k+HbU(bbN2 zfHAk(((x#@p#rp2sEki7gk1m$>n~!y$0?C!TiSmrVs3WKlqAFl={?9csfdRtG{4Ko z*=Tsn_j((metm36NOz`}%h=cwKoywlKt4WYs;i!LqTN?HOTbL;*f1iMuvJ*+XRO3j zKo2IP%?k|Bh7(oAwB zz8NY(pMsa#&`N;j&e}^BdhzD_4Fbtftp*8LKxPrqgv)B=Pf3UVm)7m=?J%R<<2e}l zCYL~@q&Qo*=|pLjZ9gP)F~DCj`MK+8I828Ci$aDh6Bl$=1`7WC#6lh!nAcYm2JuV={0;$yuh&V8D`jqu7NDO9*!+6xKMWDQ<+~6^(Dqh{Rv|x! z@s^5S$H9S-aaPLEk8K1~N+f=iRz}J1*Zlke5f%92a}i)x%jZqe%JMmIX=1(-3YdWa zy3w&M8!Rs)y~15qkpl^ECI|EWwKEq7_p|?2hbx&4PDgHm_~?YxmI0U^0Y(3I0($Fq zo3K5K*MAYzQs|pN)Jql~Yv;Y&979f?Zy;XB`bPt|b3@_YBCR5X9<^u1U6Qy}Fr<#X z1nAXXK%xO|h42!v`P5$udJzxlP`Ld;IAORl7)h%5R#E07xTeI&gYh;xm$JRYu~}ne z5|kjpZ%!r+p*PW{fMAC)1~_@Fkz7U>(ahV8o=iVYIC@~S8^)BJmhUTi67F> zeNz}3^n=R;YnQ>WjdcYV&y@&r_pg#yymdy4(2+MqpVsv-K-;(mPkg`!o^Y~HGXl>X z8-5!)z3T-9p;zq@XQ63scpmib4c_6KLBa_*ctKhIKixvbDe<*uirnro%Sn+Wjq;tS zLU@fGusoKheeg6r-ijf4Z7=y|QiBacGfDQ~Sj^G;3C!eS-A&R36-JqWP6au3Lfrcy z_X|7?z<7=L=w}nnAs-hkspHejkJY;fcTJPLhaZt^Tuxq1J;5_3QNHzwXV!T|#{=%k z?-;#*`$uM|epJpq*%fusmOvUmDR?tbdX2d?X~i)&MTaUn8lxDpf$Q1_FTUx;=Bvrc z^PB=Z2kyRM?2p!@Q=1lVr%vmTsVuFQc@W0NVFY-4Ke6TJxI=hM~ltBR(nHlxdz)S4!YXIYA5HIxR9T`Rb?$60t$yQ`9vQ(u?ErzVDl0# z%zwvg&!CMCvZpTMIz_yeO;&s_8eu4!Gq^rQ*y%r=fPaPzoCd5_U6$PlQn{4d4D{2? zCVg5`AZ#2GYD940MZ)8a6wznT4Sp7JK01q}QAtsn0}>zmoJ*JQjkO{TF5RYj`e! zs5nq%P=oGG=l;5&bKql9f$nwZ-a0T8P_#i_Dr*0H&>2%IZfcR#C}QFMnP8AZbM}<4 zD-yIe)6JqIvAe5%2|G-qk&ienvRFm=-PeIc5 z55jUvi?R0D-5ydq1+s?L?&wN1;Y_(w)i=L9A(d%3fm3<>e$>{NtPCd|OOY70thIR{ ze?CS`PnJDjFRCL^^yi<4+u^~ZO=-O?H&l%+Ir9-o6^#Bd`C-FFnH%z%i2=we7*u1* zVg;Trc=X=E*{`G32;&IR?-qB;of$$Es?3b-p9`{$_N|pVH82D!$5HEpM@<}@owO}g zmKHg`p9Vjg`~bJIGj%&guGB6yE%KH0ez{*9Ol*xKO`8$!ZXUi0Gv5((*$lKv>VT^N>WETwwu=Ox6Xha@%=xqN$c!+!&lNuvMx52T#?6=7+In^9wgv)@q8&xfo_&+9>g3C z7E+Xy78X0Oq)JqF?$@|Nix3mkOmf0lf$r96mt9=Y8@?HKsO#9UI<{$1Z>{4~^N_S- zm6p}I>?K3Ztb(5-)*UblQOl0o(Lx*C*n`wN*G{*&$ucA^c5%kDS&GuQf>ig;YSc<^ zXNB!nY{RW|wwVVWOwE_w zt5vyMtc>CAc9Cu3F3D>#`FU$6U^IMXH5>VV+w26YZn0mQvJgC16_G-J@cpu}l~Py0 zLCQ0yA#H(^;%RO(Mj!HoTf3sC(mP~j4#B1rBr?r{Uk^9u!?IbX_dQ<#sqaOc zsIFRQ7CjA?UKYt~u9U{~0Vep=>NTQ})wX(^j#EMdQLH%f@sdS2q*P9B-F zR03dxP@kvGO_WtH^7c+CFb3L@(@nF7?Vo(h^b?-0M-7_@ouEz%5`M$xJnZvy5UaK` zmr}zn)fYHB@BYz`zh6w5n^vVljH>Gl&r_vcE!3QiEvxxxCe{EuT6}L^|Lmk|0dFKE$xVVI*ympB_1SpQ%Hk6)4MJO>LIc9LoLOXC3YDoh z?}*jTx2zRCFkPJTBeGJk_Q<1!FpkQcOFjrp?}o9iVLwkoC*RcfZH{`n+6T`Iat-^i z&Ft!qJ!n{`)f%{3zR+vNwJ^e!_iZ6=6G8`pn(ywJrtQnJjhgxkNgd7)zdinm{OHDw=T=30Owh;*=K@8pbcj?5-KrIl-9`U^Yg z0JT;p3c8vX6CVK}lxKoUWhrkdhKxVq*~zCStpOB^(drXt#iDXj4-#-^E)4UIJ#k;h zFp%m5dcN;8Qm`?r6RxMZeAIaX<9!KSo(!Q<%a-hSfh$rx6ydPAJuI?4{ogkagJp5XguewQmF*s0 zyfA_3te>Ds615}z2>=fAN0(fXVe0(6TltD@Zo{=ryMXIb0XVcrVmkT}7b^YA2f2@y zt(#RxmX(L3-Y&Y_)6HQFTf_I8N%_wT{xv_9nc;S|9kgtr`Ke=_^FEVP*o-Jj<=fWT z5|JV4%0`P7%mr|x!+L^G5m@=Zzg63Gb&FpiC}mwS*J3ciW6_SF+5Lh;Pf&q(CE!5+ zsPpII=L}Xw1-e;0kOGln6ZVq9?ft{JQ4B734LtNfH)0`Jq|9IC1_YLRsti;mkiTvWD=Hw-F4Tpz)8%efi#({AT zA0V}K49PzY_nsIv7AKp!uMw&9};OS-5iO>q@WX^HmxO#RH^ zOJIu2lEyG$#?JASUdYY~8+L#!Ho69`&Mbt9!ip)ld34s0^0NoaGD8B7_%k?AC}c_* zy-};eggi%Za`<`KnoU|Fd7}=Eon4k%kC17k=1a6bS7p0fuwpB_Bn1`fUy)uUmQdwj z#ud|aDl*bomMr88Y(&3z3f1KVKjx-Zbu0xb9Uh1pk~N0_sxnGjOUM|W0fXWYF+#3O zH@H*+TlCp=v&M?vb^U!`5e-|I+JTTR+%X zGWlIFvjrOa>ecgJ=P+V2aK?S@ho;X zggMi#K5)CX$y-B3Z05RiueG_SyY&KA53a+Ks(N+Ph5?7Q7BJNMC=Dk5r@c1w+^-Yk zj+Q>tiaTwOTC{$Dcpn?4K-$Ct^9)6s->$Di54ull#CNJ}IxYIVe{lEx)iFu?*pxn( z;mQH)qg0X!k~_^xIbw^8&)Kcc6e{TTG(dD_P$-OCj@Tb-0$Uy|Z4UJ=9rER6Exr4^ zAsR0W*x{X<5pQLLlc^)|=koXK4Rbzb4aRutMxn!O!328xX#n#C~ zH9vv{d&j{`BkSi5$*{CUZsp+N>f$Q7N@-`$`SG#-N}HmEl~a;COV5|%mu-N>zxs44 zzEhywXWX7zV5G!wNKB}z0~3waq74zwu*RsT#t4#edikZ)^ZnAJ%-6K2;Pp~WqK7 zdS)Z6$3*&U!o{vH*(kWNc%5njv~Qnxy^vPG{ciZNw2MJ3C5bc%>96a@ZxRsN(K%}B zlLfL;=oE6gxB1B>)*q^UliJI^G&%2n3O}mIEA37S9ex|ShI4?=p{X_IGTu5KRF+)=N8w>fs#~b;Pa)+DA&r?;_Cpvoe zv@G7AumpBxSYra4&7EMkEYJ6y^x8*yJlT=buGo9 zEYHr}7fO{2?eRJ@dKKNd&1^+yp`|Y+2ixst?mhxmjhShCDl|Gm<3hBjDds|()CFPy z*2jL2$ivv?6128!X2hdJ%k#z~q##w^h05K|tJ2={GFa1xe&`a1{2j05Lg%)< zF^IxEyZNYkJPg_lVt?;0>Nhqw z{0LTRKO9z6RlATDqwoTtxJ>^Ym(XWSgirv85Hg|w?u|HyI=3uT5b}hH6E8I?t}1q4 z2^cN%9F>?dmJs2y!GD#3l+1uWfcWP%Xt6bK@s2*R&35fGLVO=-Lgof08**IDZH-$n z7&)5QKYK`uY2H7A@F{ulGh*W#$D0l;c(Ttisk9J@AyDt#n|FW}XM@SD^XJ^d&VNv4 zX|EX6SCKa3{`B>C{?Xqu8*p&mY*Bq-9d1O*$cY8{?*~a4J-8L!d6@Bt0;mkS}y zd;T~eQCj%hwGjhB1@g$hb2sJ^0zq|j{IAu7L2^#QNKjsEf}@DQ(4H%P9I}J|63end z@xSMu!;HNV?3am&Q*miCv{%VjRGfRyvZy#-=LGRag`XIY*e zq93vcxv1=);oisTqdJU`_H%N@Et$V5NJ`Yg81rLc4TZE!&romHI0Nc9h3F^CZn&Kp zM-5sSh)YZ8)fLr##`^cbbwNt?DpcH86U^UZMoaJ77FH6>dz(;}Ok zcrMq}D;NDtyKc=SsjJ)NnK$zdk6w$Uh!Rzyz%^)2-3{?$Ut z??ZJ;f&tTvPUBTrr=fhxq)yAQA}tv}{P-{9_2z(BdfYWgl#%m6n)YuP z(=I{ub1UuC6k?aUh@@8)h^(I(Tea?lEXUT37Xxk1CXKfjqH8Dij;p~bTW`keE6;U5 zG$w=yS5z+ZijEbv z@=$<-)6W|NQqW1?BGn*;^y=Mg%(MW5eFlTGV1xpei;qi(Sbi+=X13dCy}8M}CQcu% znCkn3cyj?$_%cS)=_wBLS@-!<*@o_9`UJrb!?1yZCF)}d>2!e{k~4p2`Ek2)9RiKU z$jh*g;HH9)I6l_;&=dE*s(0E(|~q%ngU`9zpr zA@+-8{i>7F3|LEh^$Xs{akn;}r&VL^(kaI~Ppa6qj?jvGM)Bl#V)UL=xd8bCmJdco zWA1artm3b4X3TjX{=~i!A~m&3AKn>pIwRxi2+f<3h>xWpTLe3sm&;*}*;PXa6F)i` z_0jvOUlg`*9m9PjF7{H&;4m}k%hUHM10$g82H||HvCZ(hA|+fL;91n5R+2fiWx}QY zx2}R3jmnbW1bVSW`UmBVwB2I^nS%6r&xsh7?kMaKCCl&*!b{4`mh?yTatI(U*$dj^ zziN)H#F9{W!hcp@T!Z)TIEBf zbcd|f@x`f!(YHDb+G43rj)yPRjHUG)m!TSPl#u??!omn?uMpiLtGYkZMN~*F#WkhF zck@M_b$GFrR;TyEl?5;zJ8X->oMcWG6B+*~OC}f%AGUqAlJT9xr)+4g7h|qN7}6P4 zBC0dobv5=#=1=>0epj%@SC%O(AR{T{L$esBI`Iv0;vtSRBj{@@m2qqndxH}dMt1Zc z1Y#5vaeoz`KpfeVDDO*56itRYt#J@647e^}T<7@WRZ#ZGGXpGpBF0_1F1zaTM>!TQ zs3|ZWqShFW45u>_hIrrw%iGTjE^9ir({7rgs#=hb++AK=p$7=2s*RXn9Gld zO7I?Vk$Hj&D1lmP*6qu8Q{JnuzBMr(@XCG;ae+o55CRB$~ zr$8pFNYKoD08gU#4apoB%p1crdg9;A=UWW9@mj1inVVa_IPwomD*R^8^Z zCd{iJ7u^Q-pSG)0%yiO_EayK=wU7##J5axbymhM!raay*{L=>~NO1tN9MVW{MVm`!CVy0Q z2}?p-ar2dzmp^)jpj7()OGEk@SIP5n!S$X9>DE;$3#piK?--4Mm{8rLX{S||3x;5^ z3vaYgVe^>`o7<%)Xpyq@W`Jy;4p{c&(YNalL=ZvAxp2H`U*|uKgpY{lI1-S<^rp(u zP-aeIbU|gKVo)@?=)lo?S%KC_mf4Z(-EaboFG7rRxoL5p1^61l0-y-A28o`F%~hF7 zHU|CMPxrF*f}(wgymox~HvyIiFgt?V2upZwZeeQ0tZH#1kGPIchI^F7MJw7|Euyim z@=E8SkX%w*+9Gp^gBDsH9taopLn;p!bQDnG0iV3X7@VNC(q;y+Ao9sZvq;!{TsSx2 z-=h0i=Ky*&aRG!E(!Bx+7L*Br-6u<|%b-$}k(m%3#R<|SEbGOFlHsxhUcQ08S2_>5 z*H?G37GzHUGM&zjUqm$^1pYtlSD3Bo+Jl)(&?Dh%Ks8!N15I5O z8I7|;ij>MHRl32y2_?_|J<;>lpRkbR-f(Oh$VCafTffhAn-n=L=BW*R9yumlxB5fa zw@^=!Z7nR5{*9MHFq;l6KtPc9-4OULn)=KCsB2SURO0w^*z3MRm!Won_G{9Z>tY3L zdt*LBkJSqapf(=$dUjMs9Q(FRmBZEkvo`(odDeif%MJMrXlrV0FI$ha zZ|{?iCH!zqKq%zt!J$vTkHM4F(ZSclHvyyx17Gxg^zkZH+00Cru@;K*t942g%A2=2o(?mAvv-IP) z%*P434dxR_LjC*jAgDfHXp)k%Qg^C}%%>b-k-+LsL7X#2YclvU5mOukO5-L_#q_iT z;a?wjROCj=L~mF+U{F|8;B(PV_J5efGE(K6!N1S+CA4pl@E1 z^##R6$rRruTm*1r=8SaBlj`0yUKrP?QU_RUT#}^T>B8|VD$f1rckT~+9-iWb;yTaH z#D0ZSdA*8v<7gQ;y)}PMAZfOi%}l@fm3bCIS^;$Wc`Xe|o2c*4wPXUH&d2lf{p+IM;At z#O2}S`WBbuu<5qovqpUr(nD(PcS^4|6}NbDTwvniuu6Dbclkz7nbnMs|E#9dgf^Y4 zgVHZ5_n~|)4?|Th3(=qG^^l&tkGaH75S$?J1O)?-M$^cJ1F$kbIV})C14O@m@xdkc zPYU%BW`6zFg1;(3R{Mmrt;mU--IFpQVHIq!AH!U|&zQ7)?${+~((vR}xd#9{F-kTa+9jcXZ z8zxff5?hJe?`qnk?nfBs-2AZA^S?R@5S-w z7a5;%Fx4YZeAMn&L6YZXGIwdXxw8{ih8Hqgf1u^3T8nM*I$ z|KkPGj8o0|d*azxyAuoqsc!fBP-WO#h?b!uFp4=WPFo_WiGO zVKM*Ag|VUguGaO*5JF zVFam9G%E|4t?BWC1tDjA#zHr@&}P;qOlig`29|o+QyLS=X0mcl|!T zA9PCY$A{!rH(lQ<;>7m?tR+ygLxQ&rF5TjpeX!a1{tjzR)jEyC($~zyUTR+qv@e)i z?e2?=!%nKSK6bWt7IjlPS2V@xW%lKayFTkI>7_;ju96^9TzdFz!}c%>)()<%@2A76 zfpr|r7ZYvi^+5tf*~{um=vl~4SEmI&8Y!!&J40xQRn#$TEP1xq&jYiltzJ>>+6kGY zK#eZw(^?sY#;-;Y?~@0Jdbh4NZM>Y))H>`3j4_geQ}};>Rj%(2$;n2;ObC$(N%p5X zg5==9+Trq@U|2AW{r)Q+uP%^?cta?@RHeegdYwyL4TqR1t2Ua;&7_ORZLIsi`+~kd z$7Z#XU^;A$!6p`2-Fpey`$596FEFgLLIGcY`>@Rt*-~t;D~ns@S$-(1f}KGWpCH?D zQwDb8x{cP z_%w3svq~Fu8qY*IviY+~2EtyqKvz{Dp#Swg$>C-TNy08HUQk|}s=f5hrz;xCYy}j% z!}GkCa->Os0!koK9E#AG45`3TmDu<&>ymp-0SO<-CV5=9E+Sl$adFt#!atAx10%tm zQXe^OB}E{$d@9kp#%`ml-jN>YZNQxnM3)*6{5jMeJmKmu zsNap$xLjdJjdSE5t=oS*oUSaXL09n42ZL zBj%L)TB%c4yR}35B?SwvX1x36!pl}TKH`DGj3IdpQG!k=49z;Qo4=9LF-P6${T%(g z$;BSLf99SCTC2X-VwNC|u>!>1M4s~`pu^FHd9#y_3#fh~p(M1@b& zfa}u%j8b?dkG|jPSCT0E-Xp$ce-VW8C;2li&V#S*40=dX zwK_tso4`BT!=gwiq{66a<)*Mhn8WbFJMpK<-3)O(BmknaFw?L<%j^<2hrWcgRdf3i z^}+hX6#bEMiM$5%j$Nevw*y;)rQb6vHlrZ^g|p^Ll(F~ZLgc~FfimctPE_T;AWms> z{XVF{yJ*)?bYQ5$e4>d(Nx+Io>F(smhb+EM3m!hXQb&VI*n@TBtf?;741r9uIS_q3J9D@ z5Hn2HN5iCEPX`sLCTJeDi}i|{I2RTPsKEqk}G zn~yke^aUMSZ{c|CRJ846V9OG=`Oye0hao(Urs`_|&CEnj9sh9A(seHa=a;b4-KMGB zbF77Ez67_ND2z2jQ&wqNaOtmjawJ|^{Y32Qa8&hl6u6itUo=S}iRdQZKYeDDV$W)P zMf0mU@7&$261bz%HDzwNHqK<{EjWeLcRM^z#m2AN<9tdTMZazOSm3hLmw1XcRYa)* zitb&3k9glvT2OI`cJrwDcsM9^%@7fO>sjjW|CNR_47wX=2W}BgxcO|{-oJ;}%V)|N zYTk~dE--P=CV`)m+S5(hsA*(|{faUUp4V2v?2iN8B=r38kWWxPxeP^MkzLJQyw-r( zh;rM=WX$9s#AWS+rx@T!Z5m&sUik7ee^0$FeS z@w^IyDMnYo0qxG~eI7_;KAWH}MbyN%I97bV3TlbS!OiCHxe4b+!CCeoHbi&wc%>qp z9uto>s{fDV=RnHRQAk-Cgwu`Nmd!on(^T5~2 zIq`>tqoPM|tMMZg--p$nMy>mq1wJN9(xGh*yPQXxXuU7j7`L>VMQvJuIQ+FIvjq zA?^NsRUP>$mr#4xT)rg%eHn31wXiJ1-9?8&R!vb_CZX1(h{K1CzhbuP6$nTtjo7K?UT5>d$36SG7W zg6DsoZXxRGGV38DKn=X>eXwkEG1!4?sv!tkiTg!B4O5xlV6aDq7Abe#XK$A?K^jgsZmQ6d%x zBlW74`zljTTB-2410WNJw|**yP#-o34F@$yL@5?Zrb#Kwz%CWalMJ!nDnVhZ=$k>ZP+Z5fK@$0ps+oHgPZ73M z$vJXKUDD{mFIiyn%|z&*7vyS|J1tzhiPS#+L7Hrv$UN`$=w}-fbIfGnx?iwn4YRG7 z-7xo6d-${L$flS!uyo~}RVXUs5FxsX_tkf~yQY_M)~S;25Kctwd$Cw>E8PHmlWNrmC^Ih5*LM?Uzp3_ zo_-FG^AtKWp{j&5JNJaaX6DO1kEJ-)09NlSmzaSBxz(AH9XPVHrl-A z`K=j@T!P`~3(B2do*+!HXpHpb)i+x`t6dQ=q_LVxW!`;vQwYu?kkY&Wae8`Fzd+c# z`|PNwp9y?1+U-5HXA;j>*KeIxvxpkzFuw;Ljm8h5RTxDWDfS!#N`Z%VsO^Ofh0F!| z170dZ%w`Tk5^}B1CBjcjs(v0s2n-RS%DbUJ5Jgo~jr8bq2i8BEbbA9au%3wP@?BXS zhDzY`o|ZDU3iCgW&0apzNRSs!Esei=OZxN4p0sFsf_=`fZP#^Hy%x~6n!CR3^R9|e zN;ntSD1~QmEbz%1XyVGc)BI!%Dnf@ZIVEsei$1T~?DoFx2N#1bx>f#?Ca%G%8e?`tb!n~nM&=kAf)(E5bswE*4hD= zn1#;&h}mo@A@pkK@Fh8lt>ojzuas=lz%0lf!h!ZQ-K*<2;{yVU;1_UDWY9!0VIzy8 z>80HU?Udyvu7uIPFWpQNrL2Nh&3CHj%v8WR)K_sXmkyUG=nP_cgPcz1K)VgDtx^(5 zF?cZ(WGE?-(s&+Q({H0Yfqa&D zW6KGnaGO{WoS`x@yx!>)Cq$^-RzTo@*>RWFza<-n8KrKO`PHDdy1UopHHGu@g97Z7 zFYc`%R1AO}&ce4gLB`3~^~PWaDIn{&{T|9xndXu6RoBg90v@6;&Pa4S}l_qy5a%W_Fuq$;n$mvAOyzU=Y*douJq ziKmbA4Tb$=w0Ydw^Zu_qf4T%j(qA0mPH@xvzP|}b5sTaY(`EYKbF@tC?2P}Xxy}Ah zAN&7?0kZ$Ybn?GmrYR~mcAIQS-?e%UyJBc;6pD4VX}}hjrC1AXBES$!!UF5fQ=%w% zlD3(Cy(CnV^c&!ma9Ky^xu-X|+!KgM@(=-UaDQ2QeS2jKu6Q6y%xIwxfsK(T&)_uA zZMsNJ<4u{uD2=e{!?hk^oqPK1&UxLZmds9=K_NwdYj`QP+(0khU4ZyO{St7&|iA3TK` zVc(9JV6L`h!f)d{72823bksDt9xLM3hD%&bCo=nG_}GpCR2P;He8X|AM}!-#o~2xKY`<7bBxTAUqvd5L8Jh~UJ1C(@wsoHi%Zph=9ArFsmjd6f zxILn25EP6QC&XIQdr&EPpp-4TgJNuJDleM7^4V87PF4f@fCZ7SEwKS%&ghIwg0&6E zXfIGzaiFZfp)FCe47cE-i!j8U z_78z8Q2C1>a60Q|nAu@A&=Zt98`vNECKm;Sur1o(+4zHY}to^`%2vUlR|yWHONxjMXIit=nxAD zmcSqbyC(>nPJN_?d689|19xp1(FS7dIc(-VUBSp_dx@)^-?n za5fj%@mQ6)w_iYKD?92a=3ISPfRCzEw4M^nOYB~A-fibmCk@3+@0bP|t$+H(X_?`X zj}GAp-i@v^mb^&Z_j_Z$%#s%OF<@EX7FHO$8e=F-!RHMF8-j*LH-UX@3c17f< ze*DFb#so}^bd|)Ax+hO>b<7v09QZOG>}Z1bsAP*OZB^B&R*K&EjLiBaf*Z^K2M_bF z*Z9YkFfsnmaGm3y+VTJGVg8k+{a-yyj;4ka4m-+UpmE6~ERg$I|T)atG z%bt{%S#@exI?|@dx!dJ?|M1p3ysEa_;{$ymgJmI8)RNWH`)zBeGm)snKry{)*YoA; z`9*-cA0!_dn|}W}HMWutuvnLiL0BU*U&Y?-YR@HKzeqQ9dY(>VSF0P6>Drk=f2~41 zp!4CYj(t6NYpO`Japq%HQ-X9TikMbn+NB3?AF}kidTDzUO%pvh{DD`eWJPQ1`sL{O z1&+5xjayS6FSvTlNx@z@%t$P&Gimu{&MeuS+Gl<8cRYI(}T+}e^57NMbED0R@XjSM2i z%(cxsa&SeQPqA(0y~#=9VIMb7QP}gaMKQy)N843;hk|UAXZP04%ba+aZ6JNN!>Enp zp`zVNs(r|nGyBQ8Z8r_P7>k*X=1B*1vQI7>8akD!Vwt}5IX%t8pWO5UbdvMDmSKzgF32b!E-a+2gs`+_qac>(C)v zab}k4PqShJ2guG&Y+d{v5qM62d`4(bi;NvEtjWeR_BV_k%&c4N$w09&k(?3%>oYq% z`^0Ql6w51YH0?B{4PThxn&a;yLHwE5ZNskBjw#5otZ}lAF$C2NQWiXsy|awb*PM;3 za#=@k!)+%sCflBgo5Dc)!KvCHPqym4c1tPY2;fu{vb5!Ua9%>dnQjZCF4@l?rbmaN z>@VF9`+JK1Bfy#oa??XUhS;{$fYcESfekD$DSWm$Mti+Mv$7y z!1nBA+Aw!9lA>xW*+cDevkY7oO@ScOwvrmosO8 z;aNebTg<$3U{P{u)}8HylOVfXu5XZoyhh`&tzBxvWiM_EugQy*`m7D zlx30S!~4GCqLTw1(}Td=JJoJcdEn7jlVYYMIPG5)U=Kgr}`IK;)gbWY@grY|CW$9 zah`J*n9?(;7ja>X_i{9>E-xZCZ1>FzB%s(G{e@l*LS(=9lu>L;IHxn32aK)}<7nTa z2@R=PM=jBR!yKZR6t8vnW2rbbElEo^<%_3r!X_3?hOl0`-Vi5l%Y|cL`1Hes6QU>8 z0q7b>Uf(~1G982(jah=ORQTeW0ZY4zRMk1^Q3!xM?I@ z08xh)9l}@R_Cn#Yde7ngHA3haWGM*}g8VVR=)}>iMORmC8|E`$^CCy~8C8};AJ?;J zT~OO-@189Mx>5#5ZV*^jRgO4CN7>MkFgU|l?p)U3G>BZeynw%2^Scx3O1eAZQa{8D zJ=lM^Yw0GU6rFVW1x%xp1ra_KF=869gg_zO#mow^G(-QodO8Op%p5Q_*BQx);ttv% zzn#291CH#37L1@$r`1cCvE?!oVL z(U7|Hj0?y%b{$; zNh>S?O3o(}*95o9iJw(CA5-pJOwa|TT|&0OzWiFOjerqYKXq->y)Atk2M#ZXqK`tW z4}Ef0T3MtSTvI5o3L$yMV9O4BAtU=tN<+##FvaXn;&g(dS32^2=79I~!;Rlf&29%& zZ`InRxu8JSA$VkV&6Q>k`gYB-iD0EB_r&rT5&gbk#D)Az{9reQqwq#EZ3-T%aQb`C ziAj9h2@yBpo^|=+xq}e`b1~SqU zcfJorYbS0z0B{PRk3@er4dB<#M$jE(+Eb*OAVBCDJ@n4_yFnSbcnrrh zX~ml=j%OM+s!I~ou(;uPbaV{@UYKTRBx9h9t0}poq{}5dBoQ#{=eaFXPwT5H*=Qqm zRV(wbdG=$Q=^Z;VP_e!t)e?xT!Ar%_hM~H2gsm2fHgEnxvFmJB&`Ul&OoHGtKxw6i1}vLfu#45okirk})-Z zIi6vesr5i+nEBO|+Da?k36>c)5wUp~P?~Sf*?@741YUgUM51$@9bN;;(mEQQR}`Hw zmela^iPvhrF{cP+0m^i+WfF&?icxjN8AT$Izk7J&BnzcI#86ZmE34OeXIuaW_Pcvw z9}wJIY3D()^hcacnFP+sqblNl=VkvNWB(l7OVDl&!{Lr?+qP}nJGPzd*tTtZ$F^Q zO9S5QNtma0K#s7m!NNuR6vD=IquuSZ7A?%2B#q~C0eDJ=i0v(7u*lPniO5Z_)C<4P zY0#|xnDenAp-#$HpSJhcjk#bS(-O;Wq`DLLaoFUS6_*D%DmWYo4IaZZ@uN2|0GV?N ztHs0h?J6$P_ymsHWLA_9tc6HGQAwt>4kl+57c%WG8(f&&8qgT}`&kiJt#}{|4}?0f zqpi@tH$)R%a>Y}A{t=lwN6IszEHF^qM7nOKU1O#$*S=%n^`(826IwpeNM(e`I70?Z z2)O7Cmhy(5PC|UxpFFnG)~Ys-9}6umoUw`9448L-Gj7#XHZbR;-oiL9DZKf|SXMPJ zDV_hY9>!zjnC4JbE6N2!jf3)+M*S)02c_=cw{e`^hK|`SR(=RQqCHIvSgP<;ojj#- zA&IF+*MbL5(7K`+srsF+>QHUqxg0H!=AM@-2dlQ*^@+D=#xA zB~#PR27MTgxT;_>vTr7hQ}Eqcmjadm72V~XDx=EovyTa)827x_W|g9>^ys^lPY~a8 zQi(n)dibDJod2@NSpe;Z*=N6@=nt^o!wM-0?@LSn_NDAn7@FF#o>HLi`@Cu=>Q@C6 zIkAj-{rOd+*iwtBp0}ecZ6)S2Qv`(vy|GrUP+Ij9WPCgK!nt>JCF4{v`#sTK8Nl6m zM{pqbHi6`~ zHRH8i$eX`UUS4z+>VKNIr~1Yb<&>nyZ(HiN6a4I;?&sAQd2f9?8)(U%C%>I;|Gn z{|H?4dxAxtQ+5WEEbakrc2FT`JR#sO7(AKH#3|NvuE|^GnQ1mzN4z;LQc^qZalKO< zzDtwPc6Dcw@JpwT>Usyy{OC^zI+qs7nnnD{9?ZfK)Drf2gbYn#Kf{e;p9_kds!u;- zI`^G=qy>cVn%`!>nG<9D(MvsafK|1dA1g}jWzdIYH{a@0YM&iQ$VEJl^nEHSMeZ95 z9fBj?Cotob%>quonlpTsra z{mJJ6*?T2$iP!Vq)xD;(<5M7lZq_2o;eu+WrlvEEy6 zRl85JI>T@P553=ydwvZBJANM@DBIf| ziox+-`gC6}*8+A%>(Ha_7g-;p3IyNIjxX+;1CCLfr-KcZjXFDln9qG(`VVmkQ95xP zaF9O#43Q>G`}l7#kjm`4W_wQ@+N*tfxbDrHtBs~svy9z)uU6kmEp)%gzHd3QHdbCg zkBdcIhX%UgRkx3-2EXD)ALeq{A$nYSHO9hx1KMk2>HW5F6+Zh4oX$2r)^LdQ-#%Oz zg-vrX^wBMy^Lk;kRO+k=zr6uD9YZoa2b(9efV=YF#%7d`u?6}$E&A>3^f(T+UaFJK zsjp`hs}PJ07w)aZrWg&Kd3M)dkJi4Jf9aR#{yBPZJm&BZS59~Gu|wI`)9S`7x_Va@ z&=s&BbBYV~+O+6+MH1cQ=DpiVnq+1(?`!HbO~4XZVLZI}z1lhAz_i-bBI_ zKRhI;Y&B4xdpB-AUC6ngdvwehh^rg{f*{i#t>d^THakb=7;Vt&_1;SD?sqT{CA5U` zKb6W<1yx7G=qrshb%6-9`-N=M7=m7~p_hpC(*EwB z?q5B2;T2+tTf(H4KqBN_N7^n6jOc@H!BOIU<7<|}t3t-xS`myj7_AMbUMS+n_}k0i zaobhT5LH6Y);wh2#yy&awjq|X<5v>v7(3c$m>$mWx*3)xCL`pP_WUEAl>ff&7Se&K zoUa^n?-}M!Pn$))UYpI9`KUiB#(ujkWQ(I>h|p|H&i3Shb)0;gg)g0^i{bxz7>jLmfnTeNL>-0(x#B0bL;=OYb9`;#*a{&2S_Xfg0kDqvb zMxOl5%5&V>fd%0f_H?{g#m_N39Ix5=8&jjXHh5H0d4oi7PC$aXuZ98VgZ@N4l%q$f z%s&t5SL=C8)dRX`%Zj^87K6g4UY<0rJQ-C}r6UCHm8qvSe;CX_cGqNHD?nPRwU8Ev z1h>*b>YuV9AFmBS-70$k-R12|(3yg4=l3NR!-;NAs~whW?Ur=Qy15$;+*GHXQO}fx z9@bYa!aIM_D~RQm8GlfOoy9)@JI*@pG>Z=*99}Zkb1!_Z_RbFQ) z*jKg9sqw)l)HfE@d7DBL@2Q-S)Y2J!0*z5HIbPeA&qv8s8?RBIRXFmH(fWe0Sr5hBPEE7)X{&5y3>>zAZVQ5Se9Gw}xYZD#z2$5lH-~mWeCOOCJ zSN@^}591)XysGE#eo*yGjo+$+hMbw7XC(@_%MKD6(y$wk!Lu`58YGLR+@b_ z+9b99Gr6;mgYGbjA=9i}9vaX<4ebn75xobC0UvkJ`mxX0+s#=^pIw`-gR7Uf`4b-7 zfEUm_J#-fv2ZAJW5gij`1UxW-jRJ*r%#TFfkKxNwBObx>9Tv-#WHY0>e?JKl4R`-r#R;5qT2!xxdFL-rm#r`g_i9S(9bBDw4 zQR4>8T}$59Tm(_N4SUiNKej-X+BGBXKxLH4@>dBQ4g}lyHF)#50!r|AYJYb|uCxV@Si&X&f&O6EXansJ3(CSJB5t2q+zVG1QefT+5zX_$ z6{bUDB-`5QxG)__i4WE@L<@r6>s3T~`-_|st1UbZA|x>}DW{?6)J6>1fPEME(tuJ# zi8TrC7u0_upa_|?2#miZ@72_^cB$~O%a*}vX^<4k`v&2Awj&wlDK<$A%X3FA#H6ng z5L)0)!?hgn$QBaMW+;;`2CZE2mzYUo>hAMi#9M=)*@laOuseJ!*G8p zBaLrL#S9Z6Pj8*N7VpVJ(iP#*4OPK^-eEb^=DFprLHlF5s0*&6ktmFFB0A6i*{iO% zD8SKkpb{KQD>+?oJypE(2DWKLqjj4BT)g-Cj>hao2c>fg`=i=+e70|%I|I=weedNn zv|)6w_T4H%Y+JXk<2M)gpAlI}4Myo0b?sRbPu>k=sZ(3)7K-pPo`o?Yjb>bcD$dpH$1jVYSzOrCZ5P#AyYeQEwveUF$iq zGAebejstM;iJeI0qB=ASsj~d&O z7AiX$Ok6iAZa~ulg@6&&Vw`L!1<2A>`RBMVK4UM6Aolc%N_YX?j?Z^aCW_-efzL#f zF^jOU#rt6dEmZG0wS)A7nM(gEviGr4z^&%mBKP2Ex05)BbNy)jW(f$xU-nD%0yp4q zn9?1(k&Zw@!O*r2d>I4n{llwmdGH#g#Y}P7od&#=0p3kZ(%IIbBBWJrqkL^srl`sE zy-{ht@wIl7C9+^Ij)Ut?30B?G;98JRBPu{C%oW`!{(OYw%bXj3mK zu!z1K4++r0vmx;=8hbOX9?)-Xd^H%bJT(~W<5DJ}-q7XZcxNmSxZ2A1j&fF;u0_L+ zl{*{TJMo>#OKfKmtz!iL8*Q@9>>lb#8cP}n8cwrmJRQr(?6;y{-Jy7?X1*=noHzCg zS-SST8n+pKJX5qGoD@l&T@oFcLL?0pr4X;?(zHpQk*L(7y!ECrxC7&&|SPP{UE5fZHxT!no`Lsvz1a%O@uySdR|u+L#g z$3W@=_iXE`!nJADtrsJjo4PSeIVto@cmos`lm>3HlLr8ur#($Fv|*y5-4Ch z=5$J@saN@)SB-EM2tXA*sR_H|1<62_)v3u!_fJ|)s4 zRad7P`Yb2l-tHYY$zH0K@~Tav+kF4E zH#h52pvCUANS7@(wa*;M&8iUzq^jKHngiGf)-O32v2{Q$gCL^O-!8n;Ql{RL{IJz! z8I6;vGWQBDOf~9V^afXWlyh3tmb04@a|nMbl!rO^$R}!t%z#MF;tliwt)+zGEfpHup>)o?jKC6)d9KkGtAuPBspoB#LGk-- zNMeg_7xZcKnIGjwyz(Ojjy5Et^`l6{-+&X77su#qnfO?DQq|e=jxoaM~6+R6G0c7J!4RYULSYif}2s<1~7@bE{dHDY5+ILxoXVS2VLk2GDL z@wTjd`=>6L^GCK$pFyZfeo#mzW}6K;ox=Tw^sJ?>KzsiC;-<}tN=N6rBE!RrO4jq~ zIfV3mfgT2$);t2fSGp*nUOI3JkhMpIF^K1*Mjt*R@qt*(nMyxbPd40+f!GgRpaHhG zx?@*S27#Ki67xl>*BU*%Ocf8rKyW2y%^6iSf%@5XObf!iYb67UMf)D9fW=`IpU6Ct z{g%;p-MK6fP3$r)EMUhT%2-BFrXtO;UuYqt1i=DMz=rTn5zi4D)31_;N|@h zgjSk8t|p^h)8EaAp_Dv9;X$Dj-#|oVM_b7X(S%H~=q^x`%>x$s9O0rF?sfyr*^2wR zxHOm9f^Nyu>6%RU^wHcxGx`y{>WN9f+8ln7=I!IFwUOFptP?9qcbTsx?W4wg`@*^`Lf62>g%s_hH>W zh;Z`#u>nC)xydMMR+O|Awb7t@UO+y5a)35<<#+B+^y85WqE9B1>YH#t@?7afV*xz^!XXu4jhefAPn^*v_ zXmAqiZBR*~Rck-9y0eUgu0NN0gx(B@{$#wm3EA=>@gkrwWB?@Nw`(uiua?XnhN=!o zDlp$Kzn)KjgNgGj0zcKEx38Eufd$&C6fXa<1r`}4@k(v1{{Cc?HjtyE6RBP+V#D2Y z{q)0RV0e>#VSf7g7N3}>*LN`~U@%|4r@?>CD&;tm4aDI7b|ZrvRDT88C~o`XM@!~@ zbA6*)J8rJDkyq0;{3JpIyvQNZ4+N_ z(^`4<-b!qkRM^p{H!ZLoUpgXr_W4h)*z-FFh4yehJygcJr1+07LuVYJCJ7V~!dR_4 zmh)L6mP)#EBp)^APKXn&Ba0IgKR0~R4?2UEhS>?x%iwu+VGD(fBp6%6g{vZYjz`}R zshD}H{|Te~KWaQ|Oq^{0b6}C{Ke@1R{jXfuQZ)X@w}4g|Wu3-tFN0q)cE6mYjDC0| zN886=GF(&!1R6+N$=Cehd}rb25+v9pD&y=A@5V5f`Ro-B#@B!-bwoOIC(+iog+inbS&L|s6W{|6+InfI{6gctNXi0 zA@v(yRZ^LWL%J-(*g55Z=@e*3!dG{>iaEpj$fLKW!$F#b=JgNz%6-S#ftb$dg_D|_ z?mYi~l1l|stbolVH}l%m-ToX0pptKETm6ZgS*s?Ox7Db>^k=|P(#~s+paeHTRRX4Z=pHe0_MY>0OG9bP6qWOg0<=zvdd`l ztntG<6e`ikkJKmZewuSOov?E4ggb?0=#iSqjynEt0X;J35@3-cuJ$k-C#vGT&B7>B z2H0=ZCQ6bbtNlm^UTWCD-yhVZQozscCmbKPO0JzwyR*8ni@|8ZEsP^fEasq3)NuN(7OBbb}16 zR22}gMJ%B5us(`Y?hN%?d`|O;4wnhd-Btfu6mIs6xQ{SGLzW~ZCAyhyq(jwAnFCzE zSQCGWxcG&;i1vm%q`*BagLKJ>Uy*6IYg+(UQw7S&yMLPK`kEwkDXe0AuV&=V24m5w z-InLGSt2@$@#`Ss5lbFr{~Fz64b!cYsI5B7r;RB|nJ*tPp}*BAo&H5o0j$mz&ft)D(rjE}gNd?iU>#*064)1v{h@39KuwV7Y=|DeI6 z8jSNeNYR6nl9mEHq#Rf<@&n-t-~n8w!dLTC=`i}Gm2V8^f5(#S@5?c_YW+f=-O=sp z?D;qmW1f{FZT%SZVCHC-uYkwkG#?lsoMrGG&_V)%)9>N>CiZkb)1?N5j&F9vOz^7P zBY2FrmxhKS&s4%81)fG<{%ZxlqyG200u`H- zTMB0cOqA)-4Pwc#7{ty|Jb&CHGuoM}sc^aF_vcB=d1qGe#74QQ)FeYb*>>?9u1UvO za-_4`(p};SH7phP=I?v|<6FVpusc!n0M1YK7MDe0(c5Ro-GxMfCN%s0;kAOot*isn!Uwsi60$2!d4op$n}ZG{aH2sGw)8tbXSk*sc?W8z_!gtHaO%hbIOt=pm z{@&1Sz2T!6<^kITrrJl`@FwOk`fom7aUk8$_?4T;7y7u6c7-++QLIVuaLrmAsmP__ zsQ~=9k_TOV!D+|fm58wXpXlpS-A04&s&vu&yo61gRa9%$Bi+r*uFJ&c{je^b27zNz`jT_^TyVw%ExW5Wtd65;}dK1u_cQpl%IiEr$VGLJhI zZ)(9xol_j5W*%h$%eFzEy?THp6=X=jAnc>6m|LTkyE{ zNUlu8mIqUo-Ydek&E3n27&2edvKM2)#Ll%(AGyDD1&N z*i+pC2-S+Dc8MCGIG)#oEs=xl)y7?Gu7iJ*ptk`#H@b&k)KaYP=_D#-Y~cjSe~~3-=^@yV1ZIXdr~m?5iUOVxfN>ZB=Hp~F zRHjiVLuzC1^zFfTgDlSU^B|XV?vT&R?T=;(-qrP&FjC#_H zYOeE67UhTTQZWmknZieoQ|awx^Kh+s2DU9d{<>uF+hD2pRhw8|8}-RcsxgiEWGzEYq8_4FxF-UQSN7xJknzcqEfi9&u4jo5 zC;a~JK%Y3oOkzVnTd|XX!_iT&nn@_JiwK`0N)kz!O5-5-^}|U~sYqlxEaXfpQE=xv zfxi8?TR*;6Tj3n>!ylm!mwKR@=yi@LhNKN-G3gOeq)_C+eK0z=B>lU~H>Q1Ra#iY& z*W>Fqj7LW|p5CBVl?kYmbSAt{pSzQY_z{mTO}X3A(akW6I|Rl8WYG*ZrkXn{mimR@ z4bxtu)FI?Y#sQ;*-ASK2TOZzHwH}7Kui>v`dDkndW~;Vna2BZ30;Ut8S>gpSUJlr@ z*-cm`OU3qe3E80$|EM~$N_H%5_*02@27DfqQ>gE&#brEgb1}EEv?CQ%uLoPy7$134 z*g6r+N;u=(x+s?@b**;Z!*2!DNLaB13^liZ$V|vMwczq;SkyVg{hE5uVdw7wibWj( zq_%|auMb3gT|%S`TJ;l=rn#R82_`z>!MPF*t{p-|+^Or(-F6Ki#57e+=WTB0rU3xn;DOSUJwyG%yYhL*efnFI@J ztpQ`{yXksO?b5~}*oczqWf3Ub*7xwlbR?-e8c{FFC|7j3kYn=DhK`Az;!#`I~9oV94e#!JKjyR$;#+b+4yuFoGkD53W5-$KhI|%_@q%0>TNDj zdssF!DZAY6=ffk4AHf3CbvL=h@8SVI5&91`qbS06&c|pfL09w5>Q&uQgi=Pv-Om;A z^l4gJ=GXL_R|xh>#6mTNZTzU>d)11Xa*E9o0uu3R%9O@@y?LL^CG*KF#zsLA2dp}S z$vc@Y&D^3Y!xxR|y1IOY_UmqF)F6-fQIaFcj8wN%&-BzNC=VNiY64qZTOU9?)cs!c z-B_J>?n%QCbG`E7(-w?3h;lEAHV2o83fiJ%1WPBDqr6|)P-W$V`m7=U*_<>Ogn!;6Q(3fDvH%q zQuB$zSh^d)hc-LysA3ocefBJjG9PvU;@%y86DRf;GSIHbAYD3eRfkUimSq z$m2W{MS(@bl(OlakUjR@BOK0(Bnc=&9=tv{WeUJJ1T>sE>lM7ehQLhH1KnJ{#dg<4rqa)d3CA%kqqW_<>yoPO4l1Tw@`+%$*!UL(;SqfS-N?Z zMdzv18V9Z2bVW|PBD#Cx^4k0hO9^x11vs&v4T|y?5tm+xniYnF1N1K;J=+hb5r+gZ zSbD;Ufx0K;aW*}>hND$W0e!}7`3UvVpd2(R6N&RON$7TsYD0>KK|?=5F4_s|6R~JJ zUHw+*YjR9xRPUE+Py35yOD!{qPX4zf1%}gcThAxAYAK5AQA$m{f#ep6VKn==N?v!n zc7Y8`J#)1M(t-AX7Nh`eoK`wPlIs2aHm@1@7KHXsf9BRF78}xn#6j`ZkUAX_+nlnj zle7=;85QV7Ii`1~EQ|~~VNT*2IZEL%*45AZ{UglE?G6d+F9+V7aXvJQ%;+gw%9xv( ztAeN%9^*}wNSCzrTtQvi?ZdeVL$CBuBePFyBUOXvISMYbR^)F7-oSXm&Kd>+-<+TX$fZVY?0}7{rWQ-&Ad)z(3^mZu zo2{J4K{PPwk&^xPh{?{pKCrbvvqML22qj*2APQHp&rJgnv-W$*Xvw6fpFj{c!T57l zDn(nRNLw_`hfp@~ut=2Fp^Xp81z^v#sed+1ikk1&FsPE!lG_pf;`G=6rpRPv8=_`O2xwhnP6K!md4C^;354OQg1ZRMu}&p`-UKR z6np5K8S45G<-(^goJAh&k|6mOw!f(6=OX!!F64@yL8qQzeZ0Fmy9HYjD7~>h(6Ens zNlbY_=;wX3ardZScT_n)eM1m@1G-f9a}Vr}Ya#eV$ycDFwc8B6<*tTxusK79b~kfA zc>|FgXz$OV(whi*j7f9#T z&E2)yh-w<_4Z2<>T_y%0S`g!jpZWjrgk`|B+S|?EIU(3#Xeq5{r%X^krz&b!=L5Vj zRT)|>eY~7H>M)XeWhse}p`dtLs*b?2MReXzKqB-gcvqkSakZHW7KPx*0~S%5Ttu0x zA50efd!dQ`ob6;WLJtxCD$wCcIt!Srd3|gdV52!(Q1)O>q-JXI+}aEf3xtPK(pkS8 zon)~6L8R``>z%@u!a$^&_&M7}&P4)-c+US-l<=cUHWkI@YX207a-Wa=6dX!9%-SMS zv=#$X#-myz(YQJ$y8B4M`f%~tXflwtgo5E9gihtUvERxUp zuXadz&JTauVXceG>(3!#1%U_une@P*N#}`al_-k&4{@Tr?g2p*O`Dp(@&yA`VZ$HF z{%bs>+OD$oD9Qwx3cJ{pK?w480GuF@is$}1=<67v|9V>EWsK;eStxniKmK#6NVv@Z zPp!Y3>1S|NwXXKC_uX6XyN4_PRbWN%QMtQ~i7HvBw%Wn*>$PI9abesxHBP7}w{N}F zB719P@n_%-SNQU^2x$W!c!Quxt!lu>->wLS2LH>Hj+w`~Rg^|DB4lu(JODQ7ulU|3H%C zWcsiC?EjM_7oxfuTO^L?b3$`&n+3_uYG7mDn83SmX;QfUo0l?@HI|m%c2Uc2vB};2 zi{&*>)!q1)7uxXH9BP?D4!7DZEU+o!sc{#2%)^x%)M&q|sXIJo z*WmZOhgC?pAPwc@;z)* zVAsz1`=7s3o|q770^{#azfu9NJ0siVk`j^YmY3d+GyQa8Ef5%2=pFu-K{h#c;Kjcb z$n9s`8McZplAK@-|!%w!!a4%!j2H*x5!@T)SU2CR`YV3uURcIkEINHvEKWmX>9 z!V1o}7)z@tqsLExFLja04q3`0Mdqb=P3aDChmw=hT&A$dEQ-dlMBaAewGWw-7zjB} z>;W7bvUvP(TfwLK6FvYuv3hgb2ut-GWMBlVJ<9^?#d|SpU0MgPwft$q>$kw&l)bC z{Pg_*4FkCksHn5z;ZgN73#6v(v@Tu^5X^lQE*7h7=@8*H=ns<{_1c@msaRce&Jq>VH@%3^8)&JEQp^*h6@1sYO^x+Zl$;xB%JoNXmK(Vri##F zI-+IA$JZ27rou7M2zaTk%C&6Za_1R{7gsnbaRV&|PisgD2VU-<)x0|xyy4$$zy0J{ zOK?0?8sF&`H~}`d#@^?cX!!T_zJ%Ef@cx@r3*e;O%#-1%)ZpPQC+Fbp!zfyina5Xz zXXv)h5;$gv#KDuQ?&f(IV$pD%o~+)zlFZCeHL>uL(Zo{fbiF)1vvs9<0RbE~EUGhDnUS!X& zzV5@Ky#5((*0o@YUJWfa)$(*|cbGF#x$9yU1f9{4S@sRRe{=i&K3_*NjNAB_w@%H| z3#?INd3MS@S@>8oQ&}EG-KiDBe`J2c9~;9UedO)?bQR|Qo#o^H{PhNEMlq2* za=4Lv;0O3%Y@lx#;&@Q{0*t;0#Mpnuka(w1iAczr_!vzLq+^C(s?>tEscxW+oa}7> z*4y&_h?i@)jk({!TInwBjQPW!6HP*8qt-n=M<^Q%- z5};r&CKt1brm2oqW1ojkqfGg|e_VjC&{P{aQTdFX&R8FAI%S@EW|x*T%v*p(z}67#+SmgeeV^UBCqA11F7 z_SLrAtMsEAbOK#zJ^p*AcDuGrrmzP3qDuW&2kW}53!AQp%YjXS@RYlY+5zmC zn(y-`7k?K6ZSo%;^)~w@CO<3af{Lc{P<9cdE4Y{tte~CF0;bAx;^R{5b(~#I1WwP4 znW*_g_bdwH=FDCXt#K~yU~j!Rw%T$jxyFuHo!)zt-&$zg+FAO#Jq54f z)6{wF`YVlLS7zNFR{!2y?#ws1o#78K_zEwtH--70?_3kJ>(NW75K*QJkcdfSPObpCMC z>SlEfLbSL3tyi2m`S@HuaTG$CBNdLBTF_%T8|v?r%f_2YYv6^*c*1V@;AU;o49y!#s^y;Mt3rSiWAV%_TELxe# ze#UFWZyU$nexH5t{4jo5ko&p7Thkzx#K-pZA?ZA8tUG|I2&MWQ>KeOgt$<|wz_5Ou zvB0LBF~hO$@^y1ot#`vb=_PP-F-$l0;E`P)kO`YPX?L*_{v^Y`i!J=DQDZzX%JBEW z(X&&N-c4Upwc*iCEP{8FXd>^LpuzH4V5j#p9_*=W=#QT1hy@kB@i=l_?AfNY~*K}h0ZxkDRJ5CX+ zvQ>~;;!U4^qIkY>aa2(-ilS_{P^>4(wnnOLPX%P`5IY)pK4O~=wZU?}uLoy?K@m_D*oqzZk*yAzZ3Rk#!m>*c?TMI)WM-9tGdt_Hg5 zXwI0<=-SWf(sqd6cVdG42$gd%@= z`Hb)*Sc#i&*qO(xY>}+0l+O2$QQwAQ0C~U@sq0(UNRSz8OKBjKTVX(mQ-VwcTMW zUxu>kV-p;lONer|og=-enYg-ZE53kw0C~1Sf(VQ42O@SFKOvVhuA0&w_~GtFq&^0W z{e}^YSHYcXlo{xlcpQqi>1iYJl`jftuWAi zMyx<$!Et*r1m0YxwKe#fm8y1eDl}st5k^dF#OA@h=9Gi1fRITOYQa_Gee?(VmP1PN z@G&kJvMUh3j=s+C!{kf-E2=?MDm*!$WDGcj=v{6TA&fnsyCK@;x>SZh^;bF4d=E8j zO0+ATWL9C^o93&NIDsb{yQ1F4YAi)q#jlNiFk^<=%%K(4K^9f_(7AdcUNr^>sy7v6 zgH%j=^zR+t{?H|ZyLQtmg}3l}IF+|zda44yt>MzQ3FP#yiljqmx1$N^0m6a;p4`$} zm5tgrCRY^cvk$w@g3$4NnU-M6?;g&yi73(>VX6Ug^3@rA`WYB1%k9n&J}KE6YH#jg ztOkQKWhfC}!g_9RGirKoDE9+iVVK2Gm#t@VQX#+M?UM}_;ksV~-G$LJd3`y5$RMlv zWNUN__Wm4DOW?t887GXmj32r1h?_&1>?wA);e=8qL*lnN|H1<9St^xTxFH~vJue(; z*!r-lr>#*;1Z=KxTsl3m6Y&TWdP}+&Z|`_$vW1@JsZ;2pc)@(UbZOG_u<_cL z#i7Qw6!Uv`qD&=o-yKdZxkF@C`y-ql#@RL==q{P#gTX0TSV@JX1#S74{&nb<15ix& zf&L&xxwpi$4SCGg!H7F)J^s2nkbwFIFUXKT^M(jf?+`+!e@mjqWv|vdmqG`tr|D6~ z*k>iDhyO8vB07kxDLzC2v5q|bzD`VJsZ+K~;*KqbIKo%6^E4-}vzddt#UGT+nyypL z^V--NZhRyq`kVQ$aACUK0Tiv{W70;8f>Y%YNi$QV$CG8yBRf4L3^DPkv$rO^ky zwR)DAxicKAr+;4B-3DC!o78Q)89q1l_zCao5&zcZt%=u)6XFUkR?M_md^dQSx1LFm6;rAD%ggFA_}vqW;mmT~be1I9Bu_Wi<#|wps!n2V z<*2e@K`2r+nZ-3HFZ`60{0bxxxZnf-MX26nv!6QR2A-I$bOB%d7&9IZ` zI=_F7YM=6<<#Lo)K{=2s07vF@{4wh1L3K_BL78x%fq7(YezNC&=iA6W-|fl`saP8PNcau zodPENj}7HkDLD0|uhOCt>sMwb)$#b}xv?b5*ZmIK&ZxzIeITQgHF{&kF7C#$PfmZI_0NV?Ys)L^cmx7psyxq#4&=a?sjXF+9~4yP$I6`%RJojS+7m`9A_2P3B0tZ;<>f-FZBIILY&&5cEjZTxEOPR zx+pzuym^3#LtLBcX^HtSstw3XmDT zAVwv5J_~BlZfu16EU5iH#Gdct<)TX%zl0UB0bG$dM2X!4FAEzLA+zz};eCaVR6edL z22r>lyu)@Bl6_tb;)ZHWmOZ=SW(3g-dWcUcyJ5iIXSCN%( zXlkyem%}A)DwaO2!Uz4O2PG&p!h&@O)6||uW+@9PWR7l?AA*e-tnX<^9ar~%g}n!u zyS2UE8gYyLVjrlRu}~buWh3}^zNR*^!IJKIy^($kOKyyGEWuZ@^gZWp;QEH3L`E4( z-&7amTqg@21o+0L$uGx|56{_4L0Jo-P->0VDvX|;^5ERJr5%Ql9l|RcR08vgTU$Rj zLSyrhn%c^cS3sItIhC`{`X-Ket}*6y*vD%%g)0B?WCJN?qZ=2buE`+rs$Qu-$USa< zl{=8HRC&3SQeBrPM$=`Ox4tSrWuR8f=ew1ZcG}5%`DG#?<92%|#-lpY4@d1pp$0sM zIqfPi?OZBvtY3#wif4i|(-p&esU1922??94MC>cl7nhW58QYkVg)|b|G%fu2}{JMMi*` zxDtrFtLbVW<;x-9%YZ3MbT(cM9m1>?i4xS)6jI#yB83O;cBny6tcYg#5x)PD0v}S` z7Y8Q9vTA(zHR?~YAclKFUn(XJJtlM9Oa(z0JX>~~Il-uCh8eGwHgX_we1-0v^b1XQ zb%In|eNc}yaY16zvGH=8NA7?B(kqY>hn64`J)53B<$Si4@+jKx*Uw9;uEtj{O)qbJ z?+EVNr8-wo<52K}ezXDCaA%U|wl8BtZKQn6-G?L-PslWzGS#vS^;0jc-k-T71WGNv zB@JPoWyjg=jCRdvkG%pwvq@ zb)d%;Zy^_CwM{5X*1tJk)=pjtxr2e?bdm-1aZ(uP<~D*JUcEK0&)s; zoR289z_k%Lel0#tdcLID7-yy7ZXv~GQ)}Iaifo|?YWjWe(`Fy1x}=;x>{vq0NX)eA0o5%ecr$RQE?SqPN7DgAUVrMC%N*PzZ*Hd|k zWH*`bAeP8B5^*P5k3Bw|3UqUS1O5{x_J26!tQ?%|{{wI{{|6IAPUioWiQ=;MrW5Xu zjr&erdh1l_!1!*gN3!j@X&Ub90Ck!4%%D>{GFFmINN3aj53!u=|6%McqvGn8b>Spv zg1ZK3+!JWrfq4s{A|V#_~8pSjwp^YBHXbA1D7b> zQtm3ap;0Nqm3pL-IL3b-M>W{~Ec@MTACnt&*ANVV#&71+ZZ=rEv>raho24vNyi|~P zzS#Rc+~xP=Mxr>ZVXAl-(P1L;8Lnr%>=DqfdZ#=Q*kH(x&fn(Lu-X0!zJuPHw?Ox{ zk8VBhy+FdnM#OeqUaQ?w;lVO_T`QzU^PDQHyN_Xl6OBekvD{$M(XxPc!PT>kk26Rc z=hYjh#LGI_X)avKaaMzUo7$dtGG08v&4k1s4i=i;Zl=TE*0AY1 z27~H0Y+Jy+MjrP#FQy{I&xMDlH)}CpcYT`>eo5(gCKHJT_|WeT-=3dy>0C27{XD8z zyX>`ZIT)_x)8+~4mWS@x2dfDBo8jj)yru3O5|1S%kMv#W3VS8GC_j$Au+v?qa^&%3 zg7wa*Lwf~lHQn!zt6>vE2-&Jjh*b-Qk6HkfIz~F5TCr1jRWNr!4t~R*A}oO^hwP33 z({?u26&Xxo6d;A7-zlYR5}1mxjEVPv?)>x9kdZ_C3%);>xno(^dKF9SG||c*Zq_;* z3`h&R6+$N$qz&Bj}rZupScM;I_a^qz@?NX#9Pfp&Zct z$49JYp5M9At@V1ZGf!rPPis87&aHa!MOu6$8yeJN=wefJ4Shz<{$>NOpH5*$7@toY;($bT#tGZ)vz2qEk&H7Ab;7jp5jZEsy_ zAw=TP(p=M)Y4tR`@S|8q*HaZ|=d#f2_o&0EJn~$poR`^WHSV!%y(?$E%hshBYwiu_ z)$VKij;(%343qE4`H*D>m$+#i7mgkH!>>YjE`B@T2(BT0IWfM5m1uY;1QO`nsf(TO zP2Eqt96Ktp|8pYPBfcSjD)=Tkj6YmascDpRd$eir2x*0g1Et~|mlBn~wWij{RgHr3 zr~FqoY=_5lGV(L-s)cMjA&m-NjNeOH4w0M zIi_CX%)W2!?$(N%GWl|`iH}gU^s~%%>ntQA#a?qWxi?#65;>*e4Dge)2NY`9=Kso@ z5_as?)3;FlVkD*7iX`y}nJeGWulh6D_U;U6b7dSJx$sYE#V=Enn^&NIIM!uVEMg}1 zvIR@#aPHiC3ZQx)UA&};$Y#QWk(rdm109fRnO5Af)y>hC8a1Biee7E+9+bWyIQX(> zMRc2P4^gYi2ZffP>+j)WBG^&r<5{x;RJPrsEr_JA9MQ!MkK{+yc*}e42E*N|yzr)9C zWjeKOJf~iHjlZdD+elOlC+SDxi@I8f+Gv;EhpBxl2~#UsPatlNmEhX-K-dGDoVh@J^9{; z6-OUm+8YtrcN&|^PG)Z8uwl)1(XeTj`J!Z1G7~w(%t=>HFq8Z?JX2m*s_6UA8x$tr;RwT&ZriHyinBAE4{BIPADaq3J8maushmfYY{fTw3xli}A! zQcn`DY4Ka^yeQF|*ZQop{Gbhd>Cv(x*Fea7)umx|$ySrxnS}KnMH^&8^IWAf363YtU6XA#(i9s*4 zoi*TqQn>f)c|e&SxnGKBy8@?hPgDrg zaSXL*0I0kTaG_Q-%v{xx#381QKJVG|$#mg}&3l>3d;IU6jNzivHL{QvY{ycz0?lR8 z%vo1onh9>}34SEpDrfb+ki8}h&|iL&=A^x%dJFNUjo>;+08AaJI9gW~+g4^0vF|LJ zhn1c@4S=;7B7yPILjh3xUWM=7aO{@`!Pf?azD;`{qS1eWKLmdhhUl#Z7(w#TFdS3u zMmB7(a{>m0Erk1!`K_3{5;9RZ(BEcXXMKdFSYG!Wg5$_C=0k`*iANEmO!7zHb-+8x zAv+NoDM;K`4^3M(lmds?<0bu2BrYldJhGV6+J#vn+A)jspK-ThtH&0>*P`{4MqcBNGv~^yD4uF9k-cGu0o%1@rq0^b{ zFSFGSq;(rM!Q|1+e$dU#hN9C9M9)j(1@6q_$87__7Qc<+0~ELEmFJJx?aWSHYL~OkDXH3^n|N_#T(^;lulUo*vWah zGK)owp<)Z5XW`gR#1vn{-9a4V)?>nDA6ah!1>nnD#RO=$x2+SoHVn8Eun3)msAKMp z4l@nS-h=pBBrtCN8G7r=1n}*+SEuImFBrF*3x=*;W%6Pds1^R+6DXIqZDDbmn8qA7xU;DU;H6tcHBWw@r%yZp}+bujoVkZ z1)s8%RRne6z(Z}eG8BQDlza3r)Dcc2N?BTY=b<)LgJYm9>r@X6gh=uwbpU!WARlRC z>)-xtI7;)cH`^T5VZr?C?2I9ArI_`chlUaIWUt>CSw)984p{R6`mNuY>&1GeL?v_J z<-I9}xwFG~Em^C-4!~AriSD>t;Zss5O|6y{w!ty;{w_r(@3eEDN+d2yAJ~}^-%71s zw<8x_@{&G=^W9e;$Rbif-DlY6O%-%)%*N5`@L&8epd2Qev}p%QfgQCg2w)CNYmAh< za8TYvuZ&~5qNuJqk+=QLUhbR%SS)g=9p-An6`I;KKOL84&L1I6JDaPkNPKms3?M+b z3*PTGKq>f@5J{a$H0@ki%NSJ81n{oSSGCgQB!=&b1g6paVEOy6+R#!20PKF02)@}T zt#cjTq6)+s*+lq)jwC9sZNh1=Suy83n|KrMQ3SvXDGxo$tI3x#XDMQdOXg^hH_NF+ zV)~pE3a_4Gvs=_J~Uws#Rs&u)SqH^6vXP)gT=LAJRbd2Ykg8Svo8idFa0S7L zNZ{0i)k9Af>}7&h4C(WcCR~Lsp=C0!Lad*J;(#iJCALs*m(`o8(8aro0Jz;+cF=!_ zCI5*J|MDw1IJy4aqLPQ>FGc;Y_-~@T!!2D%<0(Hpctz8XPesZ24j3g4i7uR$=z%tT`gfb z7@>j+rwemokcz17Iqk>Y?Lje+X))nG4XgX-rE#madq+kRMJ_E>g!QOTuiOg7?KN@fx_Qh59`!-0sz|iYF)$`xpZS8GsKfoDe>uZ02Yr>gJO|ulCJ0*}U zW{y42hqITnm)|e@=t3Pi*t~)m=Ho`}6=^A|?+pyr4bs0fY-%*yOtpS8^5$vv0?im; zxIf++`njtN>9RDdFxZui90xZQ;ReN_?M`u@a5u3FP4LPOFD_N9R_yHE+}NejcU0H! z%8eJXADA_>UQ{sOv_5HeW7ky%K?DkU!TlfPR4A`WYsXwRGC2A?JHt{km+jdkR)gQLvqL0{mSmEj2NutV%5>gPdr6zhq(Xhu3%Ih(NG z1BrKL1Qy3qiIR`@h5RPQZ<7r(rr=n428CBMr)!Fms2>TBL>s7o6S+e5ib?CE#e!0iFyEGzw~cJCqUL~a3+=(2p{!1vJxFx@)E3X`ze$3 znJV+OldR-J(nNTKa{TJt*bf9Zm-!+o9;$6@bJ&*DR})u8Z%uay-zkVQ)=`pLvI6GZ zWzab%m7^=)y15*0lW#>!-}0$kc-=A6zV0q<+i~r9Fw?u^CFwizRuQ7I7eRAXUF#xq zyJAg)DaA%LFNduU`)>F#0XC4Zhbj|GhR6*z&}Np{5SKDf*D(D1+9R^Xr=EJ_;t`9G znA$=*(v>x`NN@dwwJPt}tAx{P^r_8uY99eMFGp9i>PChUy`NmV1I}u2A6Mbqt5Xab z%}SaJvhAoBG2g3k=WqmFNY3&+&u$ye&aWUsc*X3Go=k<-Jv|GmR>u;v)48L|GdTk} z0D?$KUkc3vkLDN7IN>}c;jk8*0n!q~^DS|2*bp@yWt!)7_Ea54@=zJWFsLLxoWVnQ z!y}F**>joRWeOdmO}m6vGSMY-sGEOo9-mEFpd+n!D^60e$R!utA=XTSPxT35MSfa~F!fdW<5LK{*HKS_w7riP&K8+5Yor~qUrgr*Z zeQXzeok_`k}l==_D^ngqMPyp!exp~bf=`F5nYA6 zjv2SVlv31pBekyhvT7uPei$q5JQ0MB%Z}QqSdHnZKo4r7Z{1dz({U%!zUw`)@J&U1 z+CdP@B3)X}RWEc7{7~XuK?>_xgx_BGTPY+PK2Q16rV%-WcPRHRQ~=Lv{e#VEIdKpX z{d9XCnI=BkmRTODKX!=Z>n*a1fh95Tm;p#TC5c2j_pet`a+rOpg0H2ozK zk~?XcU91!=A4Kdfy@Rwd=J}M5ZMmED-A%EZ)=x^xZ?M5YrST=N;STLsTDv*#WtHQ+ zlNkLf;nhxXS6cOWWG|LpKdh9Z}bNGS_F@Tvb>qt~IOMw#EEos%x_@+57 zqVAWybkfGBdi;VB2N6wk?!plV3hD*~qX#H2f*gN|4P??nh3Wof|M%nb4BOo!!kb-w zu)}Y?4L}x)(36BX-%8v$s6phg91-x$7JqK^@g}N8<%abI3*|_!o(5FSdy|PpsmF?Z zue2Rxh&v1JqXczM5MfR41qEWzup&!}bjXrUA3kNiHqu+i+_U*kDSdV{a0Ko*`e&Fu zA@LibM4q_WInZ27UmlK64hH}he1^cLN}p)3R5(P45&OYpg`-~!tL-cM5W4A0@9@Jo zA6YGeHT4`u!mtVYZjb-Y{XZ=G*EZ>+1rjDFiXRmu|E-Ura-AgqS)^ms?)zhJLWVuB z_m9^LYUfVZ^T`^=O1NOsj>=txvOyZ8(LDR#&JT%db=ISr^J?&-TtG=J4Hajhat$dY8$Xu3!K>!r|^0i(Y_3=xwm1rT}!U6c0p6#lA_(L+Kl3 zY&?H)=sFzL&fEMC4qu^LtnmntQ~YcEGFC{n=$@;VLtHk8sosWPG#OL8t;8~yIrU;S z-`?|Ji-GO&OPRFZ&c%S@7>T4^haGI7`Kt{&t*b|ebx#nJ=wC791#3L;nsinyKKZqE z=~IbU@IeW~WgJ9NK`5!SD`i{4uX0rMi@-QnGPdiN)v-KFgpIpRI_LJx=ll5xJH4ro z)baDSHoaQ$Bd>chkE)zELE;UbJ6R>jf^S6&0)O@jO}oU2oTGU$PPZG)xBA0(qvBev zD`5cj(6%J2b|zKCJaI7}?MwS%a6{j|UXKF-#z@R_=@i5;RpR&2KIRl_oUp6p)J`#- z3uQC@o?fO^-nHeHuusMmkLP|Gj$9opdi!x;Tp#a8j^5Ovjzp*b_{IdkL^k9P8c@Q1 zLdG!^Q{~=HqBB__a51$85%%2Dey@=Ku+XB#mW&bapR&RpXbtUixJPXUm3l-f7v4U$*{E5W@H zzc8=0C#IK{V0NJDK_Gg}8kX zw=H)LyaQjk^Zcvv@P8h*^slo@oq3n(uLTOC=u12X++?||^;lD>r<3hGZAfqDoep`* zGrf0Tb+_Ua9#9nPGqS*ShX2n?=QJBXtcGlHUaiSoTI9dLkxN?cwm19m-xI2{l3yEq z>wz@#x{kF3Jg4T07$?TF#d)YoJh4jqT**FKLGwD7^aK${;Q9ATFQ|q? zQz+kGYd_y9?nFyZhzR1A5m}hp&~ zTbqT5u@-D?2LBfnO#jbNz(fc#M2rMFl!kFJ;FW?2u`^Ram3Q@HEhB_@9f{Nq3ykVCkiSsak; zF_WUP*_WCk?x4bBqst50HAAlde7}Vz zl$FtJwKCFtdg7qbmD9>vZ>~`xbJP1o{)Y$rC``K5JFCfO%zD2%uzUx~vm<9(Szy^+ z9GGWSbqE8my^LPlI|T?=77KTp)a4gZV%cf%lfap#w%IjA6O8UT@}Pz-t#azU2i3&z z=lSV~AP*tm=(&MY(=_=VmXA`>zA_W&a$=rU^gh~mXq{MGakVY4XuiMfz76eOzAo0L zexSWSimjD~LmL7(T-H&#wOPmGmYG=`wjCY0OIvfQyG4M?(0k1_$z~)q{NCJel_+v7 zP4a56G&6~0Olp9`cA#R*YdZ8DdcNzZwq!F3HS2QKFHcma?LK1wTXO4_#@3lJ_d4E5 zq|P&D+*L6W5`lsWqlSC-%4zovHSj5g&eLJ}o_Wi&)`yK7Tjls^^}DCFU!oW|6$bMa zB3ztP>S0ti{l}J~O`27=ACTX_H3_SJ6wp1de@A)iYf+hBMxyDP1-wbF^dr0-G*TNi z-x0epZor!I?!tdcN5gnYFedSt*ZgIyp8Z zy+vKN1XZa=?ex5xA3S<-cak=2en)SUm+qw0dow2-)9X$XdvJuW0`NZskk;iw-OW z-2aHWAGHyd7mDLBsdewH@7T#Uo>P-?%a>=9s) z=4pReFlrd7B=c^Eo;{JDNSOo>NMMB>9;pafF~n1?un;@|?}rYkE58b2^eVe+ol7xp zZQi)o{SiIt!86+Kb!rtxK8eGsxdZdRp+smt`%~*5fhWqg*>NHHFyDOTu)t>XR(AV4 z{oy9>P*ImYxr5cW@NYj3%Y%N5m-)Rnh+H%|kMB(e;|JYnVn{L+gy&zVc|7&b z3*Y!xqE|qpJGhmW3AqlOI22b761yX|CjMLjUVL9AYrOs4b#}Rq!$)k zzl)K*WLC<)^HYoB2}`&Y^;|Y&gm?Zd()bx7(ugc#Et#y)(?FnfrbiyLEA*iauQwsb zorQ612NjR~T1cIL33E$1k-|(Oran<%vHxh)nS+{lmu7o6j(TqYo(EM&L?$8t-3L1Y z5#A`Nnafi?YGD1k=iC)Ysd{wB;=l0GbYNYQ3H%=zy z2vIxUEl^MDjnl0G9dEP5*e9L&Xuk-Igf2rBMi(I_#v1Iuvi|qP+_ghwd%Y0NCt0Ge<|w1l`TV+a;{#vfoU=@Mb8DJ`gCp|D30gaNd2LN5 zbPPc7LeKAY5~eO_EZZoUof{yVm;8z90?At>ZVU$cKfKIEABlW=csy2YB#C|RcT+1^ z&D|sCrrA!cDNdIvih()1#kMNmq-r)P9?Gkn z5mXUI$@C@WQ$htgi9Ikr6zfyyBd4^Kq8iL3&+ho-gv)2dhBox9F-iPYl0tf`aHYoIS(}m{tlhgcK%6pCBs{ zSug&^?_JMPNy4m1iH$-qaBMD(B*WErmzGwt(gt`KeN|#lEPU8O=t`5td5vL2uk5(K zFy9@{d3!9r3x)fbt#~jr|8cAzyXDityMhb1R57A8v|pd+0)@Rf%93-GUGL{LXSM*ITr-WL9PHb?VwK155+1r9%HX^(uq{pdQ!;YYEOyCjkPeM} z8;`x!2xR;UXHySwA-1aG4+s$mQ+m-9QV`zkgr5@GDuvwrh9hj!8;tqjMJwVJ2ydOs z#6>2>q0-#*w;Ze;KauSrd&|~Y`&7do4uKMBlIvoac!3k)Efu&)uhCnzG!wJ)6pj<1u1?~K(s)7T$JIubu&$0r{c6~VDUsPrC zSZjCiL|2Dt=_d_{x)kgan#UZbzg+U0fQo`-v_8mFd&Ok(X8V+Fi}Id*_TT8-)56YG zF#k12;<)hjnv~aob`GUUHcnMn8^$Nj%1g#;P{=hKTk8$ba=zqhedaD;I;oS9rL2)O z6+CMcKA(GOdGiA)*FW%ZdLJ1e5cwfi8iyRhocAuC&g<9{95luM5d3Tu~D@e^Qi}B_3W`Q-yyVqc_XY4?`@L zeT^xe;F?TZK`rl*CCe{1AW%YFdP1k|@`k`F0e-~KGReB|jM0kvG814z)+8k&9&Fs3 zFq8mHdIk;W*Su#(hY}j`==k2%7b0Y>eUt$UfH|_vJqj!0Ebhbuj!(!O>tP?Nxy;-> z+*X>o#?HvH=eD9e*zFXQp>@-f~@#sl@fcm+8c8`@zQb z7`m&F4|;K$%sq_&fi$`hNYJEdHdcPuNTg!1>%tQ8+ErKDw3d7N^eF$A-yU{0znRAy z6(A7@sCnI5@xT7$$U$N{*8|KyPrzWwS7hO4h0pdGB@2uHmOH!tiWeAVu+J-D`7$2<`>%AZNX1(y%>19F#x{uFngqa_1jh5! zll+fb3V|ZJ!VB2t{n!j~D&MuIpwrKn(mw}YvJ2M3(OzYGMyMCcK}tJ5w(!dx8&yS! zVBv^aRcIf(A)07sG=}^q9HysNQiE`M4}}`Bt;|xmtkMo}iLOco-vNkmNvyvo7nSWg z&n$X2kxcc^i*%N4K7|06qJUdiR^P&a$Ph4saB}feHiZe9V1p*m>QjWy{{ZUSpbk_h z2;!`=V6!vk`lIY(2<;t))u}gBD4(M3{4M+b6i3v&3|yz;K9P-IXtb9?!c6S}d$$W3B&rZJ8K^4CTyq>9FDf$mV_dkL3 zKgVr6oIL*yx`F?p;wBI9|Ec2Uoc34(Nefoz6@%mGq?y7+tcZO*OIcz9v(z$-y7~L- z=$+^>{B@Xjg25=WW{{qNgIK$6_WgI#Zzm?$p|UcifTFOQVr zY+(`D2DJB48rqTF<$1BjU74#2?J59N1r+{L5&8_3Np5(DV{%jNS_@jU3agVA?{zpJufyzm?$xvHZu%Dyuwf8BDVaA#mj|E5oRWfMz-!PbbG zYTL?b3CE6ZP2zA2a6FiAVT>SZZ!0kBBPMBg>sf1WU0BoMS#OjFIV`d54{g8$zCUUn zx1nlKf$EykgIgz(MlKIZ1%kxgV9nhikm@i`$NpfURpj2*_5{6xZRLSaP)GPDZD8ab zTflQ8bngmSMyPtC9tP|W4zH<|Auf~&Pv6kk)!BjTs}u3a=Kx52RSq+T0!Wr7{DqS=>E zorEgII~D9PKZ-B}nNgfyI+NJ8ItPbABT11MsY5)L!vHGJo3eNC8O89Y@y%=) ziY>b-$+54I9{~}#3$EDFXlqbq(t|GJT$v%twcix`#tqBWTz4dOu(%Qob!Nc#WJY?M zaB2D8`|=9dCv>zZ-WeE3fO|j~VEFZ?AwEW_Rh%L8S@{=6zBp4B3ffdU0QZaLdR0oJ zj^`^l(wE~ws`pfy??Se`JI53aZ9TY!3z6QVp1hCw*oefV&t1WATE)Sg;Vu7w{2Sd?z8OG2L_|%hpmR59+_XxDv%6`?z274q zN$0E79o%%hLX>UEPHM+~Fi8OCdbf|yn-}I*I2-rPE;(aK#_;@>Fb_Qj$=+0` zcE}a-3EeNSp<~gGiyu{uTt(=Y2%^BbC)D${7ZY;-vv+bOPQ?M6sBPuxhEHZ{+I3_C z8~BRB=_1u#a-v#eknh~wKQkaB+DRdn#@KY63k*xP->K9@U>f$N_+;*N2d!90?K8_9VfQKiHpG=$7)*~0ybt;iZ-iDox&)v?=eu?XT9abst?t=_1 z3TM=k#7iptlz^dGVOCy9es=|eodP!W+xuv;p2aem>X4W97aZz8j>f5 zkA!bmg{)ecm#o7)9oMjFNsZR(r<9k}00(k&OTxjxp*PZR&#-*WIUq@;OVKsOL-@X1 zm^|+hR`(~!L^8X*U=gQ=0R=*fEWM;OGG(Kwe3weP)kC?px~YaxO$3*CXL?UoE_DCe z=6t`FrXnx7oUl8I19{G}Fy98Hn$bXK5~t&?knot58BpO7$MP+#iX*b|JbA@|$;y`T zSCTS}9V(A@z*WR!dism3*X9|2h&q*$UvQ z1rl?-@%Rz;Hq$K2UzDTWzL`LPW-}LIRi8$l7-!m10aJPokKx%OO#D?m<{T}*HwsO$w z1}62aVfu0(0^ciC+JH>-=4lLdTBw_dYHB`-Jx3u{^($6(l7cRXn<;FI{Q!Q7a~;M7 zrCLIAQ|IeShMI5n{MF0T&s6msf|`t#Eg@ZcY2M+Y=s1A9s!8tC^GrS2Qshr7f9kR;%~jOyem$Lc=MJbiFC=I_Q-e zj_LPtJ`hw&Gki*{>h51e|B#}bB$V7mG-HFoQt_b-B_bCLvO8J~yrN?!6;q|MifV&9ml2GA{}6Ou8L=QZVN5~_+>n2wFki%s(h^ZLHrOsY&3oS0eB z4TaAvtDEK2(EYYov9`vX0P9&4&F-4)MaN-DabtZkb09u1-kGipqq#~NL!!Ws-EKY0 zTyPDKR=@ces;yWT_)b}*)>E%>6UNQdK9VFJ z6_Pm2SMm)^i8_MOG3lg7i5^(8Hlq!Pt4VL?U=$}$sd5A^)OHu1YJQ7o3lv9P4_2py z4HUWu7Rq5_NlSu+#zx`j+7K84EY2ee!HR%g^vPv72*$3Oe5nN{`$ZP&4GHB!jn0Ao zFoxFnki$PCdjDHD_8TJd&!x`ieyf4;%qS|6IQ-*7wL1Rm zj%NC#afoW8@84U$9%V&7wvxS0?M=>hp0-gErSHwA_~D7uGfiAEgQ8x?hxgo0cFU>} z9j&BZ<9%3msC--Bh-2DkWmi!@v4G>%0%7J1U${~G(5${=Wjc;bzS(WP)tbw%6CmX1n-xQ37Bm7H{%*m(k8_pU0Y zua9Ynh6k1v?_7{Nu}?}o0A#-{q5b(N;`_QVQQmG2miLY+yoztK`)e!Sv2o7n(!S_8 z0O&4dMn*)_f`vzm__%V9=_ydK|5DxeCx1>%8wUfF_n#yLPP2Sn>PKdv$dCr$-+G-Rm`j|XtF4nE~%B?FFRK^ENB{M>f# z);uN}TE1tys9i052bcWD4_wz?-t)G_7}Z}m$IQ?AgqHN?*PT3;te0FdoJ5DO5JP2m3wxJXv2!s_{n=vdM`{ZV zwv~^xGLXVc6+%2hROT!CS?ot*_N2LN+ilWn)DGW8+#Zof0t`dK!U8pLZVvTyjV3VDJb z#^^rY&HsYQES@x@=@-##xbvG-)e3*qQ+9-fxJxW}WZ(W&}mrm@3{ zjL3_n3%+Y$`7$Dp8;8*7N@}C)Onx@uXG$o#EdTM08=|2U&kTZgr&LEzN>puasz_Sm zQ!O43d9%Wy=2HXpjWrC#FZO0NL@5jyKfI{CmznNJ`F^J&r#HoDPV%QbE7}jp>8}cG{kL#a-`k z9{b<%y6d9|huFhnx~;*Q%X8@NLWJQ6E7YP6(%FjGlz2UQvqtTVo5k5{DYf*20%<|d zf!5*afNeuA>Aj?p?Vnza8vU1sr^kmDjhc&Nxl-jaeMS!G!i@)x-5VQsKYmD;|J7;i z%yEENh+9@1wK4u>8n*XjwnE2g5jpDOkTUx6jlX*XpZnFR9UU`UfG-E05wb|cOV|Rc zZiiP)zj2)asirwl1T(-4ktO)p{0nL%KJ%9MkyI+KX;;Sh>>-koUx26QAO99%1q=3j zBh>tyu7ECmmi@swd!O*Z_5^6y+@;wV!OEUR%n&H!!bHhpiwL*+lt|`3T z1@vj}#lB_ZS4$L)f+xSH)g$!xLfD-D4=wxHu=|QQ=x=+*n^zu@FL(X#CLecjJt#rA z(1!B+%eDGQS_4BQ4Bj2B4_@M>XODBcj}0w??IrM<_pi=H5`qm}4-cO9GT})C!>6vJ z9`H#jkV;$w#JsFHna%RIG$OctbzF$ICM~Y3|w(K1pfm``qn5*E`?% z7BPiLYs>PPXuJJefeK8`G3qCNjP)plf68{2*h@+9#I0Daf4B`>Uty zhmd&l+P1nW@HVP5oR18mr*Yp{l|4kEh`@H|eDsFJphubj_-P974D3TgGVFSf} zX?DyI%^|Gn>;O3~&ArE!HLi${ZDH<9XrE~Zsc0o3B4nGwVKytL5Of;k&8G(=H&4kD z$xewc96`8b440{4^D;Ix$|S0C>(b#NRg#znIGgu3d}R3J13Xl;_;R;br(dT-#H>(l z5jNnhB0c4$@~-5Wk=UeUeWk><%@OYp!!XDIFcB>=06?2N%IEvAkcd{I(0-JZOrdj=!TS{73ZZoH ziZgAn4koPx9~a`B6_|SE-~)rt&i+ok-d?Hdqb-H|z>sIWCVwP-I4^4p=@otG^sPZv zsc0XRP?Q{)CE3@z-^*WJ@-F3?vJQjnQl8+vG#L^8wew+2yD4YVyaYDBB8ML9RLz!JRLv36fK1h2o%BAu zPZNF59*r6BDd#Bny`0L>&rC3ul!t2h20 zJeBrCN=2MtpSqRR%H|@AtyB_|3wn98g?{5Z=DJUpJ`Xfy5sXJq2P)sLF@|0UAfE^& zto1izfhQa7FGM6Jh{45uoYD;68a<%y9&&O{GG!^O4q={w(@*IuxQ&EPDtn*$zaKR; zgeJ+wd-nkiRo1?L1@A*6Neacbog05Yw12Y4qnje9ThzaK7G5PN==qv=qXyS85BQMKKDBat9m#i1$GW3F=N$k?p#Z3`7n)ha6&zq47vzOp{N@Ox)+ z3D!b4Y5WbnK$CO#TLsnZ!iqBu4<~uFdS$$CK7)0e#>}f{trXup$@^)jy(O0LcgjoN zR>&?)<#oFndTF{dFAajnOO+7TsEL88F zqeCz5IRd7=3+a&ge!1eWm?Wz++W->IF>*?q-wpnAzdx#h3!m%|r88_T!bg}+XhJG> za+pyKpJhy7ech6B%?;P|r?6}9?V$`*Cf{zB8z^PWx`g~>i99Gl3zz@m3HJ*~|AsbT z#PvCwS!)aZ{@bUZH&{Ebw{b_zvsb4QDtj=cA*+;8VT_;&CT>mc^2#NRg&G6hF0Z*H zRJj@i0g`Po(W9Rj5$@ij6UYK8sdUz=rjbs-dIS~_2JzRs-s1_c!~J?1=MzWrg*P%6 zj^R`NNQYZgfGF-&2=(;iLCS{5MQ*Rx?&R-U9breUp$90+U4}vNOd8f~tN?-Cq73BT z*SZu~0BDzH9HI`2bd$n*6_#C(rC$D8`SFcbxCg8YisL8_MkcQtt?o}XnjNUC`4kHl z5K7SBmNu{x>iU#zA#WsUntv?yO5t+?zJW9EiKd3ims1Qa|I2L>b!}`Zr>{E===yo> zA8Pj>aMf@zz7q6DAdjZa$@EF3cUBI5x|MoYGQVp596nQWLXcxxvYVrJA`_{|q%{0; zhABD{8!$EIBjiz<6_v1D!_*6`rv0q$-d-)9l3Ni$CRUfc zFh`d{LF?T3eM*A8nq%s_5-mHLF?&3&;~yFU72|YP~`siC>>vJT_0xl*Ij3b=rg;CoMFKH|d(NZTs9|+H_M`88zd?Q~^2^aeKx-EH!E9M;!q6GNsjX6$NZ7$i|FRX1@$F~LY%Fbp z-EBH~zkT972*Mig*Ea{loY3c6cSQ`}(!d9u$rSlUAMX$QSV+Cran}$tmvE?4;UNFI z)!MI_T--N03213}T%K%%DP4kR!@|UzK?aO{1BRy8U&%e8+lW+_%*7(hw$wFI@gtv8 zu=F*kRR=HHD74|TV86w|J)nhvk+f>J;-2rX?VS->G#WS-aOuHeCO?!!@T6nHea#hV zwU$;(9XHED3P|t>8$HLQ#au$A?HCgvf1Gi7jENBOG%x!fg*lOvY9&5l;rql~O6cwB z6{yO(L>e+PNaw{$mrC>Ett8@0#1uVVP>(SLl~{?q^Am4pl;-Vs;xMira}Js!uvEa5 zc+W(cl#OL%Cjkp%iUzj1X_CO7Tq5Z;n5(X%EjiTtIQ>;(te$XE=h8 zltpYwnp-!wxuew{-;6O}yEZjW4$=a2MMla}J2=;`51}(ai}1=zbqJBN$)$)Op3PTQ z|Cx~p6ktg>R{!*8a;zGZFA5*Gt=o-QIbc>`5kzh<3R11BlP9W#7{a4VC@8(W8GCCi zY4FzyrME6k+P~X|DRpevsxnF!if(_mT?XS7-A=br)afU@;s=B=3@aOXy+?s7!}4@A z3|XiHDleeg|FR2Ss53Pbl15I69Razg>F~OZpQ2h>DR9!alUtoOF|C%q;za%{@0ZSf zOFIKgrIo*w5~)Y*54&`ByZk!64qUa2`9#8cn!Hf7W}IonI}+Z?x{3{Q=4u4C&WQIG zO!#de}Ws6J!txjNQR9n-QpX>JRC-7oAlG9SCoImb+?OZ6rzB7RcR- zo_E`imM&yKo)Nc?FLn&J`TrPu$KXuDZ|yg>otfCSZQHhO+qR$B*2KwVCbpeS^2D~C zlf8GNN9pGQiEv%En%ANg0y4g~xA8l*8 zw4TnOtC)VO!?OnaebE}*P5B=fiXUa?Lv&(}e4%9JiIbyS_LFn>bo(^2x9N^{gNZzT*e*a&*tQ=7*70hOao^s!;AJS=$O6Jx<<0eVgJ(d03Z5 z6PNfT%<2!BT~yhRI_h99OdKmKZ1yd4&`ZmVxjPHgwi4O4N9F%ToMoM_g#42`-<_ig*r0XZ^y5EkiFKi{eYSFJSHH>`#2J)L%92V>&LwO5L@PTfpW#-Z5RGpO>?GLVQ0AvhM2wAOD*=|C>-b*#4K~m*YQ~{W$)w%zi^Ux~_Wdhyg%D z=Pe%&Q~bMt8$c>oG_OaR)_5uY8nW&8R^YD;9chPk!42R%GSTS3Qa$6@iCl#$G#{DJ zE;tOB)`zK5Dgnla;-~Ltz|FNd-qsew{k4a%VF-tfltKkHGUwS4K>XS#Y7Edvo(FY- z5cmld8#wp{WcX~FrE^aD%Kbyw%O9?0dOUFg5MPrR+e=_wQ;Q#uIH6e)XuwtQGFX8fdozNq7^t29Dc?5RGL+2f z0q4whJEpKT-~8+5WC;y8m8OTcFn2b=i@-h@#?||$S4*&vxJAvo$G5#)IM?NNkC7`S zr?!lgKhW!T_r`TnTW~0MIQC(_gW8;MB+wwg!7(_I8Oh5@63ITew8WT z&``f_=4zP*U;f8cJ-mHhRrem1k6*woJwA`(TF%YGpR2>{GtO{1AHbf8dpnJ8XV&nF zY{@ly*3AGtcm?S2ub~r8%e{%4H`W?L+^5q67aamzqI5YNMd^%a@7t}o87tq^cZdT` zY;4Xm-AXHwe6{AJczG9&Y%|tag)VA`lpHy#m<7FAq%$eYAE3#cE1cpP?rm^?dVF+y zK~pmK_E`4_sksTVQf}fL<@a(;Q6C4u_oO%#7 zLJg0K9e?gT_BD2O;WRpXl^V{$apPcVBYL*BSeZm48~*KUG4>4Q{VR3NiC(eoN`qv% z4d>h-B%@WhYYONx*i{0}yhtpu zknZ$gi2KsB**+-#xxy*iP=4$LEhQcl^h`#hGwR}$A6ZHY78m-K(G94Z_w$^fL0tXp z_-AK^G4OnMGf#c1%%7jpAY4|=X$1(P0VFRCW0#RI*c6q7@DOr%W(EQmACwbMijbN$ z_OLJym|5mDv~R_YA7reKTpAD{8i0ntS&3`(OrE_I;Or2f;Yc6+^3~?fu@f*ZywL6G z;xE$wuM44Pid27S%BNR%x5k{n;$P`&zu}I$l>5X9TQj5_FF4^(3gj`vHa7g z%j^Wn7n=a=>QkYn#;1Bvz$OKNr=Vrp@L(dSV{mB}c$RA_#K!BM zXYes%n!|qnTWB=CG)ddk7SaR>6sknL(g1J<(y5VvF)EI@R#F#+8gi8fnFb3NuLFV?Dn%UOF4A2Kz2j%Eu>K%x!UIh4{M5cv@<_)W zgrI%gCs4qPQN-n{!JTp$;o|>_%Kn50A&j9bwo*4y$R6dFy)-)rKsTn|SaHoGZSRM_ z9szUaK$wwcftCGHF~XV@QycG>xID!c7}(Cmods6|mvty&MF&EGug^-)Mq zGvQ$1(NKzq1=AUTKck?p?R<-WL#u1M-p+x^Lv!x;3bE#^6!xhSW5@(Q4$N~eicm=~ zB%jjT53&MA9+EcMj+*EOL2;`u)y528Uhrk6Ln;H?d%Z=ytJ}OdHIL4W<-PSJ9yva3 zAM)qRus*6#*m27&)IeCP`G~-ia()$cd-jbToz69u(YwI}+wp{pttSBUl(eHOP`-cr z0bC(%($v$JBYTu=-eE`6W+9oBtQ_TIK=1jI{1Ou(@R+E$d<%jFh0pEAOpSTy+%(p;dZ>wad9f+LY=#=Cw1MT?X-V*UvkNAxB zcTME!+P)hWQ5J`Z^6C`fnibP1o6Hvqd1=Z_QKmzM9t}fRjL$T&d;Hl>*Qw;Hg`k<>OU)HuA#^c!F=-RW;l9)8rD{Cp6$$CnY{0e zwvvB}XJ^lC)R%HI(;kEzHg2Z8;T*7SI;5>mLRt^;0StrOfWQSY|q zPy!nDqE9ssr!O>~Qy{|JI<=Mc7DJ+2qc9N!~mP6ip~G z1k-371n($T1loqIyr>DnCq^4fxkYA8g<}DNW->b*nxtmd{eKFGJuZ~3REn}*b^n*v ztVD0gXWq&AAXDV+IYfzlWivoDVG<*UE$=rV@_bPJhJ`8yULV7euC#vCe5j^oJnT$c zk8P0n^;Hg=u26>;9WXiT>q(ZJZeb@ckj4~?I$EMX7;frnl2*+zt4(wq z-CIIhaw3t2jZk?>$1FcBZFwdzWU-K&o+EcFKk`I7nj7?mGFq#EuDRBqTRf4_*XM3Xko5J4 zX7Ts7N!49BL(0`_4uWD7aeJV4&}(}Eaz`8t;Snt2Onlh$hnHTa_ks2 zYc=MjU@Z!h88l1n@C04?hGu`>6#|q{n>sZtHR0<3s0zOV;dht(yhxv))r+l$d9iKN zTt}+^RkCT1LTrgxB7=_g=J}&=Dum5;3UI};|Igo~ckI?0IcmD*P@PUnNGP7rGUpE` z3i9^a37&%}=0$McfY98QQp0S^a8ZHYtn!aY(6VmiMeh586TETc!zZ1{j%|tdWnzQS zG{HF@vF203HL0#Y+ciI=|3(A*6WLR2JS`1Ls~+Gzeo8Omy%tN%ue2b^FBW;g$OC!) zWhZ5z@V4LkXKmSwTxic{b#^3Y>wx&%RkLVguOrOiFI=XzAk|GQ6}|z6p0NGWhfv`t zKE7DJR=8{B$G;!WV1or}xo3QvW%TyUP02J0|K1*t^hC6Db>c2K0JM=RCRfO zMza{{iG=?(Hg3rqnKB8R=UZ}})YQ;vgU?p7sON403s$=S|0!%KfZ8{~M;5Q#8o0kH zkr`LQtqDe%PXyz?Ow-`ftGSt=O>H!@_f_rnvj_P{*PHi%=;F0!lc~t{eaFrpp;03A3@5k5>M&bBPH#^n>t?ViE;?pB4a*cCU(5n(W+(&w z`Nn}vD*^@6osTcicbX3`>xQJV@{gSw1$4H*1;U;&pkHY_NGyPk=#thVj|k#+Z^n=C z>%q>=IUB(|asn4bWEX!8vA-bg+UXen14I8e7yplfm+60Xc{%=*ZI<)@$~GIXz2Wk& z1J!>;^O`;@EkYIr1hm|SkWAN>*1Ump-Yz939oi-$CCiCH)@Aw3&*JvdaqPq)iItSL zK5d);ZAHRRp#UmSx>=19_hSfn@Os|;vw-i>lE<5`Btzs#8?6?}I@|4G4g3di8@RW| zXqjV4abwx3z<`~VceL2-#g&TbuF}Cq+st=kp8smrB=Af6nuNzO|)E2r&}{|FW>s7_r<3BPU=u(9oso2uk&n{pQ(l5YxGaD zH7guJH=}cX`ml4(dRAC{!hG}TKEI;8(Z;L#U`V^7{?8jzLsyrGtb=MpybZ@ZV26A1 zU~OH+p7%$|&3QV*;nNh6Zd#Yp*+sR0Wz(PTx$t-v8$4bNmx#n_fOX~%U6DffDAS6) zeTF=!&zFlcPpx&GD5E9Q-&Nff(!Q2etaKxH@qXDpPxAs@UcIOg%cb>}zTdsFsT%_> z%gZGn;D~CD(W3t%z**Qcc!}2P3}SPER~Q4P?cViT0rr}mXdS;C$ci@Pc|iIBmm1IV zgU^OPMSTB*Y{R8xm)ryk<5I6+Cin8%af&-5eK@;K)Gc>r&4I_l$^^d~46Zwj0L`3n zpR`0p^-}du%|4HH-qu=v zA3SJ&yhAmSERE*}tFi(|i?iy0&!Wp`s%xzV0d{-Y0sN2#4C?E+@S)$;!DWAU!>Jc5 zDtyqP0esad95l!|WGK|ql%nnS8(pdKdI?e&<}_od>|H4@N;kcZ9EnYY6Y2nEq#A}T zgWEMjKKJi56{_vwKj&uwg`vlQkxzu;s~f?p?8xoAm3fpE2c_QZqttrv z9j(@DF9C|QH7+`G(G`b(J(}X|3=J@&xFzbhCK%vY$qs7Fc!hqC=5dw{>>(|DQXS}% z^gU(XlJRKp$-Ula-V&esg-5VgEew^>t5)Mr`582@Q!3<_(hsG@kk95tL?k-#Qp$Xu z&Q{Z=kO6^~9m#DaCL)k;$9ZvN)~zREEB(NEF?@KBQHdE5NTWbY@o{ny*u=~Wi*ZRv`h>j|X82~^CO6&=sbV z$WNK}(L|hj_tx0vLJ000toZSc2bd4$C1GiUTs97Rm88baV6hNyw4HO2{5f*! zp)^A#FDOen45Feqon^|J-B*2_eL&j^@-%VxBZ`B|j!pV2!c+OMw0oE*R60}ga*&Jk zeoK~&(a1Av1dCFZ&M&zr+ODq%b6sxZLtvZ42`@H-*etX}Uoc%oowSuam_vR&riBus zhvZ0ChF_T{TxCOTQbm89dnX3Dm?kGxmxfWz6^o!YW(wPQ@$_`}=F$CbNnu{Dwhg#9m~~g9X7De6}y{TU{jxqRwvpups$mH#dV$S;wlKQ%#$! zmypl>N=Qy}u95_jDpoVBP(eGNH_|_%$o>RA3;=THdqImksaOu7tzup$i>{Db!$f$90)WLrh{N=mMDw4Im zjCO_rj?^?ITko#D?gkAf&)j+Ipw4@Xx@KEpq=`x@#Ac?rP-*oKAYjI@LOhuw>jhmX z2^o}bQZc%o<3)P=e|-86j-o^*Ug`F2QJtIoEB@dbuucILM4CfQJcUABMVai%AV1f}fnC$Z#PtVAT`aUB))$QC++eTb@{$8*$|-i|U**3CGp?*V5*8KDA>!;VAGcL&Q*T{E!N|;8 zoQb19KS0T<9rowBky^ym+hjSt$+2X(;f%jks?@1O#FnIoXkMh{ zfe=0fjoqnqRmotvKGo}yq*U33DnWZ`9F0t7_h4#DVNKcQl)6iX9Ondsm8ckEkhN*s zr!E%CTB1RybG4&=< z!O<1l$^Fz@zhUQMq$M5+7pmDfuO94(90e=7|S2#qsjj6o;3JR@gKui1=5?I>q@El5hGAhB%+btsA247QwS4WK>La-4sQ7;wv9U zKdOEe>h+`xbS))s#?5Fg$>W&^jXEEt$B|c)_e5ji%9^9g9?UKD$kXc|!g}s_o1G?b zn-hT$5{FpmbTnk;044A^n#vtt2oU+!D;4Fq>3I`Y3oKAR)`u+##Yx<$>c={|J~la% zR`HUaeHMaP+qrJUj0^@1VL6V-T(os0vAsdoE5V@URh9*iprL)P#5&oQj#SxlC;UkG zL*1aT zVzLhlQ%g1N*qn~_(?d35LH&;N@|3@`xMKo|_Ge;oPi<|DR*>%iHG~fJ4nUa)rMN9L z@6~Q()~=t6r@IgDACW7XI3E(#KWL^ZAB(%U5FY0F(HV0rW0}0sa1nB%qj(B>0tT1+ zQ3vNX8E40w?Wxic45%O!W~ouCenz`8BJK|jaD_JigUCN9VvFh+(F-58F1C|ewWrV9 z$Ed6j+gp%PeKv;B?~3;)+pnm{eTHgbD+GPjI^HGsaVK+wVnCHJkTqwB@awx{_Qav<$;y3mBUIVI5vYcQD z=CP!5p2cGxY9uJmxhYqJFT-bk1)Nr+vO9q_3RdJZ1s{9Fwpd2c#i#5w@}>z=5Q ziPBAr?9ehM-8a7E3PDmwf~J5Zz7XJNtoDm_vQ>P_jT^PqZvW6olYf{KJ*J@*A#)mL z-9U}ddp-G4B9C9eCvM%D%07hDE3_wY(n)UTk>J<=jI9DLO!*U08j7Ao@FSF zVNVW)(###e@*1_5&9d-L zl607WpwE?Dmw)Ht1Fms_16x>&hZ~O+-n$i3VYPW;q?Gan`&E7?xh%VS5i``R3Yn>o zN!W(ca}qjI`_-!TAL!LB%MU_8i%-ucms@{27@ffeQ=t#EQ@y2m)wJM-U(0XoO_GJ# z+}jk0PHwnPe!+wreN6<%YMe zW>}g+2Z=v0fy=qRT2aIO&w0+9PdXbQtb}O{^>5F~((bw9^Bdzv9>>RjK-vGs)BkA) zbNw$fD(8PPqjLUVnNiEWQFd<_^?SJPHhm#|U)EckYCux!x~vUnjZ|D}wK@S6TndhA zsa#UV3gOu|#^&RKlvcLtSJlyj9-rjr_vT&_e5x&`Q`x*`eohle0QEX{>+z#^9mEW4 zliYV&uhprRr;a_$;;C{un`aH4MXbgO{`Bv1J_mBXT9av+B!5m4#9UD((UALR|4Z0a zC~hpTwx@^3HamzJ8#q?=cJW}=XsZryIv82Gn)%f4;r8}?Auvn~uTG~ayWRVe`{bCX zXdF%jD8C%;ZoYWk0$aih=@VMj(%pxeVCqvcGW=E-pSU z-eL{SXy5N-tZR>zGBxG+$t?xLA{IQOLBTwrPS1Y)B*$#D%S9$L@oZ_+=k5N)Mnegr-kJJOpB4UqIPvVd~x| z*$|wWUc(f2r*Gnxx&|JwxyR~f=Kiwy=xZk+IBmI58j{qg_-jq*tYxs@q`iiHqbQ6X zzN0RPKNi_BkX|EkD(7O<&=?QGu3I0)x38S47&4~DrI#+_V(EF~#t=n5ssKkGj7K-M zj@JKxmQ}#xS_Gx7$I4;FR1^2WeXZrGc7O<@Y&6aeDV`M`wHdiZ#DI9xqUONjcL?js zvj(YH>7k>O{?F`ENhXQ_MTg(|3l3WJs4x?__>G3Rq4B?jve2Ni8XQK0VrQOd)DBvy zkLUAYb}Bl$WBcg%di@+cxgBYXiIb`^BS|4inJ+~vD-#~H%g?dEHOF1GOvSeS z*^FeLa$qLC6&FiwW*NJ5J|b1CFV(+uN+tLgM|uo}Dl_pV%B_Q;rVLV@CL>0aBvyQ! zt;cH6>IjVt>wb-ab6?)Xbv~p^OWyJI379h^kF_|l=s~rRMyO!;2b4w%Ij9XuWOyD; zD*D!8E5$FUa-o%>W>mEEwc6V*gOj-|Pn4?4C4FC&Y5)AGsQOGOdkOF1=ltc%@!4U; zg&#iZR5R-@MU3%a)P%Znv!LJp3d%7|Wj3Q8*dTs8RH&mBTQIkFxJZ zFTzfdeUlteiTci@KGe$NsWIz~&e`d{I%Fy|T1!?Bm`cUbkUV<@3S%CXhLEW6D5Tqh z6>*!X_kL6Aog_jTb^g#)qckHAwoEl^H{D?eLra$w7r)9O??aYUnoSRle-pZii52Fc zr7xs2{+I2z>Nw0=#EZY!As zub|R4$$6MzeTpxFq-q(6?#NvB4M(h^?_d|Ptk?#ma8uVm4#(<)YvK7hQ8!DYc>qpArRswE$YnX0u9x1(hpD6^ovJ&Jg|M9 zKU};5{=P0ZhjH_Z&oYvJ%W2P_Oai9($*ON6nDeB%z(71&c_-J~)8~N^O-rrMh>YUA zVB&`HCqf3Ua`IVjBYt){v>W@D3I6bktvIY<^@t?)Jo=L1o_KiJ^tDIM(snq6=R6!2 z^!55@6Ls$ey7GcOfUtcI1+f*Mrw%Q3rKB?|lW-*UnuZ4!otZ<~IE?HJ)3ZbH)2Go=#v-?qD! zJlnko$7(HnIbj;!gsWuta)=y&Fas(v2i&+m^au^%LHw4O7ANs%Q3>TkMI7>V2u$cI zL?sO0XZgdTetC4z5zcD!_#P}h57Nf-?8po*p637~?cjraTa;LcEd~=R3gH=UvJ&J- zl2RHu1br$Bg22Uc4gmG^uJaKB9ngm9; z@bUTI+*61{i6hHDs;Ie+xng`eXn9ZSUG-cthbwQ*J&Qma{RIYbG8h!tey1X^%`-=o zEg|?e$IL|dJOto02S*Bum>9&tgpGOsC7~8-0|wxlzN2DUIy&^mi&!yP69>h|dZGpA z8~>OvHxLdF>861}LjV)B{~l>QjgGJ!)|kkpu4iWll-@`8ELv4Z#RcPRt%^hl?!Me7 z?6J0*{Dl2Wlr|vFdccw3BXEjR-agkv;0~H2_e-qxPdLpLZZz=-yv%Nd@3*h1nD|U7 zFDSbM_3u0Dh6BkcRLJP9;S)c27*H|ObM84fh$VifC4y z^eRGUp5r#c%U?(!#+L-X5@t)nTTQoI`T@L^0TwWAA-~}f?Mrx+$yH}2$Be+q=E7m0 zld=1v87-IGWEz{=4otvi0nhX`4CTv4~ zA+U1-9cATG3Og`*jt@x!alXns`;}ntM`tEvj&u;I-=}Ha+xz3nnyPDq9l}+3;nGDy zTzt9mpx`70++8?Ba%gDmfU_lR0PhycKBR^$RzwI#r71?n#b>`JtRtI&horEDlmZlo zNsRtnsDJ3B#veBQ%FK`E1ZxZy|9Cm(G9|VFKAQm?0WMquG7&qf<=Jnu5UKtoM|UMC zwYz*Zse#iK42=+kRu6`~)thOsPm~0{u5h_<<;G7_{7X)>2uvl6p=rh!5Jwu{?N(AeCELuns9_(tFnEHM_4D1#8WS1UHTyW6VTA`gMTDf@ah0tJhXP z2-KztJ)k=VN(BV8tD+7|hzjrz;I{lW>x@tf!=^z{@-%TOD2nnS4l!npJX;I9MSuFi zxDYAXXrWf*LO_o9H-TZkIO~#vFfxs);~{*MmIEJz{0vX-yeBfF$@o%(&vaymU!O#P z^O7*L2+3?SX#+vzqY$bn<5a2l-I@4Q)_F3NAF&ap<(T1BczlV0TU6^lO#! zvyqiAag{gm;t|!NF%j>a^v%Ea=Q%0zWr@cV>da&G?dQFKW$K)u1XC_`?Y;XAN&$XS zsn%>mb-CA%qMOE{NNi30gfy{19fX0x>tCX0STBYo`U!C!?pPx;q4I`A%;>RFJf%mI zZb@m`VaL?>lX5uB`39ww3O`$>F#;|T?$Eedd5(DC_@8_Th|DQscPLelz5m|lre)s? zL2p()gHf|eAMwKRBWLBOGL+1;GV{CvsZ2>0WJ@uAtRE+RID$Ba&TBzSC90Xl$y>9JNo`JMwGAl%G0z}WpGgBkGB$$cN^cRnK@g>g9xqUrO? z`&>8Jus6bNW2S=t#Bu+{X8&V6W%*w%NiLTEFvElEzqG#pze&FF+Pa<_9jF0M4cn@+ z4_b82JCNS0cq3;HJ<^!1YpyALvuO6Nq{%wTIt_28Z@RBj2tv}+4)dw0VnjiGMhrl` zYuhvm8kv*CufR_3x3`|C%Qsfc&4Rg1y%RQ?IvRBBi_>4cem(ubw_k=c7*}!cffMrg zF2S2R3z*T@z1i!{N#mMXaHdn1Ptg9I9%Ke8`*{FUkO}))Vuxd5B=Dbm7Q;qg{d=Mb81t}QaXbh9k|rprOzVDF$Y;!3#AP=7m#Jh$iN(uG~W`H zxoM%=N*joshwX=r7R4eACl9=O;h``^s_8D;GL8aQkDg$Rv?wNqNv(e7G#NP68(Nxm zv)}bx^OE>;D|XNkDW$$ZAobu;j3+%e^rkO3>d8}XJ2K_B(&+y ztXHv&#(r_%MnG`(L&X?0Q}{0{<7{pM$7dU)R3^i*Y-UF+lH>&2+MMXp1d%&mxBiOg zZ=OuY)!Bbziuzb$ndfN<#Ki0YmJUS&8UdN+|Llyq5eLN&Wq@+oL!O&HoANzY1c1l< zayYHbn`K$C8_vsj{-``64umzi40oU)Yn`I=M)K?(i84dt5htO5e3aW5Qt=(%SllC6 zUk=9lc}+ZFGR0CNqIPKL1i(vo^Nkw7+eG-joXuOl-2;j#gsPc~Guw%0jd&6?BwC?` z?RB))d|y1Emr;ct*q-6gwSFZgqCG8{i$|~uO^h?0tR#h3L4of5D<y&zw14;enfkov zMjQJ9Ekc%M(8xN*v8dDL>(;C;a68E-iUr#DO>~s1HEPAjcq(-7OHC#>`e$O8Xi(R@ zTaKCtN_$Vx1XNrV@tMdEw-ffP_xEE#N1NYmaHpA+eXwptGt!rVkc$kd*Dqr?@t#v1 z#eaWy3&Pm4v;W`&YMc|~LmGuLP7Bq8wuW|Jf#?vsVNk!K`-h@f8m-w3`pR8FY4u() z*j9y^gx{heU*jjH7%dyDVny$%C0jxTf7R;#iB5Xme0TA=8L$g*&rae1(W4mg9|Oq1 zU{hg&R5UU%xk6;f5yt|sxVkqSp*;*kW5Z`dAb$i*X<=R7@v-2D-Qhj^@}TG zbOl$=8k3Voa`jZbGO~=jMc{4s)-C_`qf+0QijxRSZ_h`#Zn5$4K$nRR@*LQMu)`oH z&Z!-Huu>8q70V*rM`&limxe-uRcXY)E71;zxmL0d#t(+Q)_MU#O*hvBZgTPpbgAJ5 zuc^ETyD6v0y?-wGd7wXl4=P<~jO{l7L4KsGEMk;q*J*Ua^5MobGYc`AykrDDeQ?f7 z-0Pab!nSO=byuJmE=J#-BCH`Ync$M(s^o1nri+@s0pIw63g~h_ZukwXe|0!ealxJ7 zl`jaY5v%1(m<@vc8-NDKgAL?~87bog+vP>+*j<#P_QYIF&7Z792FLB7R0K~yM) zToWPT8;@ex?_J7Imw;F)r1vhhSR!2X7T(QIOy80F_hgi)ePaa%!Ar?OBVN9+X@X>z z-)P5D%v0kdjxv6Q-|A!SH|xg@g?U$(qBTi#!{eEwfM4)WZfP@_H}*>b$wOvv&~38x z-p^9hq%tq?>HZ2xrC7mfA`b3%pJimP+4MnVxA5oi<^qAx?Teu827Ssw>Uh%W9~4^Qv?O?IdcJiB39(ETd=+s+ zxvQp^tN!Gh?zyeceyAp@(32C5ORK7rzrq`?JT^Z+g|W)4uhErCo`sbg@8T*KEsy2s z1vOlu*h#M*8iQJ~xHp;<&}N9#yr;y&cgTqu@U~Bd7CUlP7A*7aRY%g}At-p-%m#{- z$3Xj_)jKCme~~nn62BCj({OM3C{^^NAkk8xr>BiGa_9u0FXT#x5JTs5rhm^*rEZcj zlbYjiSM|Hu`0E>WBGs&ZGbuG7Pg8KDB?CvuA4jJ5R1+x%`yTP%mNzVW2uWh7n?9+wVjiR0;8AI)4GGJS>%zgAss-)a{@ z`G@DJQ5TLaHwjfBSTy@O+lz+EKIGU+?iANCs%Pxb@Ph9}iy7nC!UG(ADiD_2ZNC00XRI5}_I_ ziwis5C2P>AtH91J`#YhVAYOgt@x5%Pc%Jgla&s3J2L#bSj^YTULmGB(~2bX$yeQ>09l zAQp^aAj5B!&4+Wo;@Is&8fw@Gd$#0UP3Ct`spCgEV%1wPMjm-weisg;2Pi7_2G9S>kz&!COic>NG~M3B|eD)RZJP^r4L%eH=`k z*e)LjJOssReDwLn6Q#I{Y2Z%dOY1wx$1CN=KuXFJ2NC{kPAk2l)G;n^-ogiOd(yyd zAHgUl*iNO6>PWFqZAFc@1i9AQq~z@GJAtzcV>J+rQ}F{zTEKPscp#kBB-v&6UITnyX!B9b)dPrvAf^=V_uyz ztiqyDf7ely`}tSI7ByEX*tX5*Va`SwUd^C3-&a=c#t9XMO_uBxVmQ?K$M>gsI8rlF zP{|MPbyS?(G=Q=V?}h_Z5v*=SWdE1Ue&-4u3B{4VlncPKs5Z*ont&L1Mnx}bsIFq z0xxD}Qrc=Z4ejvq63V5L`)>dEPo!7~VWIN@1Jo5% z15FTMInyc0SJENi8z`TrPWur@{EW!tzmHAVwe3_0ITw>VEEby;U)Xls1_dYE0=4>s zu&xTI-B8@E-)`I!@g>TyhJ?IpS4-dg(=qGMM12Y&4kWNpQs zm2Ii(MBFS8?q8%Tu(Lmq46XAj<6oMt5X&JRTqbYUyXx}geTQW7up}b&_`pN>~ z&&bw`YrGC#<`o3WEsu8$DN-Zd>j*t(4n=Xtg3%V*I5EB-X&izkA-x#$5@&#XpWj-;DV3QtSFCb~|mfWM={ICMlM9Jhw#7l%zCWFdC+csW!-hd|UxUX4^fAYD-~G6op= zM4-$(>*@wg4te@!Q)5duU~^)}zWj^nb4$5s^n$jM7dm zss;wV_*DM`{##zxeuWVwuBWpPmSFdNO0Cq8DC>__c`qdcSloH7*05EL z-d6@~)$@i`VMZ4LOzF;eSY$J^~A7dv}QgRugLeLA>X(PZ7L(cw1i z{n*J|`BHv=en0a3Q~0Qoy`H7A;q!R*@JC;37Z91?}+ov!=oy%D$QoxlZ-e^c!f z?%i_n<$RY%8v_o#j_o54;5K#jwdw~`q4$4p6FvF(sLslv(rA_1F;Wb#U_*ROR|>H1Trk#WkI1 zy|W&9yNbwWB|XSz9&={MQ2%w?o6CrGv7oqMo4>B8D-q{~#(w{@`_iHk1WfTPo7RmDEf8^;Ek`ch(ctsCq{t-bbsNEA zJr%F!cJI`Q?7(R|$9`NUVzzX}oA0LVjpZIn;?o~)p zk~cH{cq`7|?Y5r&MI+dta`Q)JE+6~Dn>iPI&%246k%paG(W(ZPot?OX;{HA?Kc7xP zarkV^s|3R9G#L9dwkK=)i9R>y(p<(zL{2^;FrL##L{ahhWbBk+2lHn4;b92KsOKCA zYIZyH^Saz4Jd&D<16yWIqIU)RDxa+~G>SYF4h<6#q5d`=XEBrU9{a_vcXSn&vRs72 z{5&kn#nAX(ZL~ZtZ+1bXfkcSQlEDep=(gk9`H3!Q(rw2L$C>B-SMH;!0>Cl(7}l}3 z_Pn6#PA#k=_bWy!uzXq-l_SxKhp+$SnY*IzqpEttby$w#tr;fZXF)j=XZqiUzJF?9 zUygo1+E|ttmUNRd8UJx(_kwM!p1f$lKEqK8fLB?+VYHN^-E(ahNXI$t>6uJ(?fwxr z{`@LEEZ86F^cZZ|nN6K%hSQCkmJto;aIo>%AWMk?t?wP5Hbk$n`texfe(!|OK7fsjuE>(XtN+gcQtd97Y*)p#l2ZdYJl?ZX!yFuzjb0nJJ8D-hkWvX?|oKiXgL z8blgE*xL|zAO#{!usbvt^ZzjRPQj7IU)OMK8y(xWZQHhOn-gbZ+s?$cZQGnA6TSJr z{Hng^;<@OX-RD>5oUUF~8*8tn_UAf&5F|M-RvA>n4+YF9&}Gg3;&y-VIaHStQR3ly zRwPUBM^lPaJ&0l2pUs~M_D7C+`b``@+a42lhjQbRJgw7Dq5LtNss6{6f>fmznjWVj<*#_%J!{=DY+(kSjqV?AK(a{!>nRBTp zo1kQvXd-K}tRSbB-43C<9d{J+&po|eo@G;2!20Fk-jj_Sq&|0maP4RLbI9bMdP*Enteoc7Y%px=1p@t#xJR4TJ4ECOZB>`;%2!tRY)^&MI9ICBBA^<>EYeP!gA#@ zZ_6fZ?;}##&;;d!umm7NlTn={cWzNGB{=Y%xZ~wX>;}n$PHfnM7+T?H0)eq!Ez)zR z2EfYW82y#yv3)a%KrD>NwdDct>}8NdcD|tFZGDCa#V#0BEURiCcG@ggSr7=BIjKZ& zFeKwReue0n&juL?@#qL;-#jB>O4b`e)wC6f*hIzFR9jv#$^Mhkvp_`^ydO2$i!7Zh znuWELH|SJ|b`l0|b|Of}?rzP>XY(M8;gD#Tm9&Ufc!Q@4=45Gsg<`Ps>Lq(WY)Az~ zcWBzaqvefsl66{hRR3>hJ?%Im&eL&0w@*)R`PY7`CT$i0gik`LDk_ZcXBGHy0l{>aB3hH0!AMeh=d5Z%y9F&mbs6S5kjU=_La|x6j?`wd z&}>F(vcL;Y0Gpa7!Q>4)SzfiVim{ZUNH96I7}O>8X{|S^5Pa(gr;8|e=EW3c52t%*NY3htb z#imNvCbR(tbP9ujneqqs-Nfi+M>y-8Q^H@-p+-#`GpiMKFD9M^8Rw#4s3>>2asCqo zKS=M!TAMhsW9IEHAM5C{_@zV%3D9mkL~LE@e9H}g?;D9Q9SLRJfc%#nugXlUg;GhD zJP+e`pgA!co}DXZ;jF;<2^(Cm)9H@5zRhUKIs34rkjMyvCz2DJQY96MPl=2L&&X3F z$kyZAPi#vZ%a;=S6tqH6pzQJZeElO!@S8(hH>74#+b0s)f%XkD)LN>PmEzTjw~S4y zvN0RT0)0LhBo>MmN{+!BwxUp%5_*#iaJ76rXm;?c7XFmRhl!j4;?65zwNavkHVd6b zlolg-DH5Z|TdJ6tY)Y)k5}d0*8a(6>rvi(P9UhOp+d=FgFd^Uu(bq!=1-IyIjD_mL zll&Jg_@)qHjjy%mk%8*(pipR%#PD3Z%^jsbv)rPNz%6>&E03lsyfF)!UC7i}Iej#B zIA^rTSxV74bGAf_V=47z@9=5A9+8As9YNQw%m&Ita>K=O z`LxwgeKKkn8i}Y^J*?Pe#5HO8Qu}Pn-`3#+!B9zjj@d#)8sh=N<@^U$g{Pg_eED*= zX~u!b?FC8aCaZ>P*fK8&Q9$DYHt5Kp#fy4@0nLr$l$tbn7D*79~5>4pzockrI(~$ zuPvSJDK^oK!i_pMz+$v3njw^;|M;#CrezTiQ6e zhB1pCQMnmq-2(%aajI*#MhyGAkq{Z}y|2E>rB9EK?aR)9^v6j;`6_GU@1?Py&1vp{ zsI|qgBRhnmE+PB$50J{+X__$$ssJpe*QgaeHY2)Ff}#?PyhY-5VA6&u@a-e#uL7~g znc?`yrL$2cuvgcZs49Ny@wNyPVf_vO`7e%j)pq`!;rS%EZ8i`-jYi--dgXJ!j_+iYiQW$=cn5PCf+x7yN^)HhCQs z`~G$n46)ie6T@#Nt|BGRsj}qW zegv_gWrRtol|MXkk0)E8%S@fKikVa-FOz8Dxd4>l6QpmZYL=RE^Q!W0a~){M2*4P( zU;lc(p4Y*|&eV0KDsO6@UKwcuzlY^?kTw+7)2AX2VrANjbhII)Is`PBz$JlPL0V02 zWHug6aZ+|zLwyewAS6rrkW>NN`#-<;%mdf&oWmX-zpkSEGNTW?Y2!zD&T+Ufn_s#? zB2IjyJxNTa##}#7;>wnxIel_Oz+j&J4j*~W|1@_p&K1~oi^Os|l^;|`x`9MlQ{jBa zcZWTa+1)>O9{VIp;%t2I@-^Yx!(Z|*g>cV78jua&?mzCp33pdb^=-R4xi$O5z#%Ba zV;j(x%i_pkjON44MjTAn7t0upQ#60*i|AGW$@%#XN+c3doSA5&d9Dxbj&f2bPqPmt6<80&m7_GBkM z+}4{D8K;h+d--``>SM4F3koI*torxChU8)zx-39wjVnprZ7e?lRtzp}7T~u$JqRZ+ zv(?lk)FLR!=55$r-3`erp<=EkJn&d`sgo!ZD1aY(zdTotMFfyKMsOk2BZc(xn+I!n zXmVT7G)@{y0&;HYRJC^J!{ja}+0K%)vqKsc)O@B*jH$NW34|mAS<7L6KV}D`gD^|D zJoGRxI7ydSa|kTESXPOMFN7$3a7n804+c>hhwORc6sk^{I^=IGAUyOADa$;Z{a3qR zN8!bP*2K*Q7S-me@wR&u!#HjdFHwfB81mxAc1zhLwr!?8G$uBEyO$M_lJ&1!Cf|%7 ztQCGlwoU@R&zBjN;K&oB(bGd^pCW%5Y&f=Gj{-;aM>Up86)0Rl4nioaJ;<%1t!CfW z6g+J!{@EZ!Twi$4dsKCi)Id1bXa%9)05EwW?gP~TaxL!^S00aRqARPDtH9E1sc zWm}CXV4aK8^u|=-%Cn8R@HPBa*O%HUhWrIo{*eS{HmGom&*KgbdbEWZkGCb%PK~!S zIW8lQ9&W*DPjU-<90u6_;j9dbX^rccO%f*v+t#af<&B+ zwl~O!^zuD|LI+zvJJW0hc!+LsG1#BY6GU)RxMqQjqW=1^W(6sbnm;XuefjEA+VpW0&)^$3)Sw%cL{<@I=AsOE*%$KK!BENDqU4>rDX&m57ifmTpB zYXYi+_E!+0OfGdy$fUMOM-ao$+5Sj^-#bp;orsHRUEwd4TY9TQL1I_Vq4=I~(B52U<)NZ^n#A(Fd zVwtL6D~u>Fxz|Hd2En>cj`QLJzR%ItLwhNeLD$DQjeY zFyW!(ejb5^A4+rcLe;QRmAp9De@kAxMQhU@ zcNF`_uX*aY9+`tDA}0jIpgqctvwmJ2BLPGirh2TUogNV;J-)C?I-r^dLDz5wzRkNn-dZjjCnLI#~;&`$*IQ4x4r0IUpFRI@<}nHR|EZC zpJ$H0C&!zJw|B0jslXuJ{fW8%%sOi7RH^{`4b{a zUZMwZEpeWN?)@y1%X8^-oO5gVHt4o>!0!0=bn4Wupj%bDrHKrT9!J~fr_XJjDLLjS zUOjB@Jt$}tvv<}}pugV@4o|*ZnQNMcEh#_F$}O8FuC)vaxs~*-y{KtSScnz87VD-b zj>rsWMZ8TruM9yBNa@!`f`SwwOY*_Ut4N!vYs*__&(k>%Q1w*asH>^a1+z&cwDT`3Qb(MAMSj3tncMI!;Cf@z#bZzG5?=AGGy2rPkBHlvj@7+Y)b;+W5u z5ojNiRv$aH*di{ouA7*lH40o;m#x)PMX+GSz`x^E>0v@Sz-SUnfLi!r?i;`>HA?$* zni&~3wgza5;2h%E8*mB>^3i4&aC&TFWZosd}`+$2?Xb@qLr!8H`= z(xL?OODM6)s7%E#d^|-GBR}KDoV$yZs*qslE%eIV7*Pk+>t0Zo-ga z>7spSBV4T=*oTYgq=ClqWXHhC zr=4vAti$$K)->656o~9Fs;Ng+F!bv?jGB(yLrt{04as8C7)6te0COxuiEPJR#*=D( zIt&xoG0>Aw*dqRo`3*w5&ys8QYS%5kt()9h*4}X4_JdIc_h5+x=}lUaSzE@WJ4Iae zQqN{eb(hBnz9uuhjN`D@=0v;dihysnB7mXCa`Z6y!}j7+p``1*EMvK21~p@&2fTNz zoGKvK7C+OCjbZiq)k--uwZyXVxKMgQMU!8drZ!c0>9sCY`WoJhM1fqV4e7 zR+y}tE6htDt-n+4)4}*00!Z1~Z{&|ae}ZQQ=Kak8KENy-wC!CRKgqePe|`v5rgyC* z!5d@;f<(pKPBn*uFy%?L#JQCbWLX+sjBhe1vfB0fWrahiQ)PmI!)k|^8FDcA(b{;X;hhYKu?G*YiD8kHveyVc#+8alFT3n`GQUC{R zosF9}BwUF{Q2a_bbN4$B0@lZg61wpKJNcLiWBb9&xfxJ4oZNJ*gptF4cjU+=A45?# z>D1%t-1VRM<1r`3J7_p}?nV7LiD={6!!`!-FuR1C;!b`bT*1Z+u{Yyq`VQUTO`-DZH9zi(ldY%ECYJk;;#PB< zRfOHn*S&CDd>L!+i5tdW#;wK5kFkdOup2;@s>kIyzIkfcy75X|H)r`2knZH`-{{`R zckb8uG7e{@W(`Yqg!%)GqiQw#8nJ)_-YH>&?yd54W zZaXdTbw$X-oV8xJ@Vg?X<^ALJ9n6+YLpD?LP8KiuZ$&)r#uM4t08F{$Y&_ww?gc4m zX~pUI*z8{*QoqJ?S1gpm8ME9_!uDDABTAxyJlMx&VMD0^2z)foG6`tp(;GCA zf61>2a6YvPOov#=7ax}<2sHl;4Go4~Po6vh6eaLuRg?V+AqJ2u(&}jB7LP&&%`vM@ zu5|M+7Kx<#@{j^e!$rN4VYMV40ZB5imwB=~a;e*D|2nw|6Nneu1N2@1@Lg%^ft(zq zyI13Vy0b9HJnKZT)wp+l5@rMyelbIezzdtXh6KGsW?|zTePjeM$MAh{0~p58cEVxE z#>C@1Sz@ZROZ$=jNcqUo($luDQ&1fNFOSoUzp#-?fs8C;QRnSuRV2p)i^T&~I~Tnv z)`(q>&eQf@@F79vczV8E=Mv}Ha0|bm+GA6uRI_t{(D}9;Q!eYlsRyK_ff$DwO0UIR zF1g{GvuKd@PLpE3Hx&>WSVV|a!HNqnfmk9)fNb*NvP?^v->vQhRYkoZ|yZxFkb;rsovgkbnS%E%1BLJRT29x z`k(VoijVG%X?=s%;cG^f;p^BQ&XUUko#U!n&c97r88)i(|HLs@XbdQ;-X00+Um-s{ zc-}{48-|EKS~k!fYJc2C|2ey{B4f|M2pE-Zg?1)1kGkp{a@vyCH=0 znd?x~KB7^mvOV_G^Qo@f2v1+COYtL?W=o}82tE*qHgfxH`7HVrzr^UMZLVuTmc8eB zQS5a=d>sAP>ElaBaP!Z^z}M@gRzVD|x?aSrCz77^e=7%TN`)G4Vs|3QhPbIa}jApyKJ)aSl5lU@wm>VF+8lD za@{jc45zC{bw<3XC6WNuINyLlLm{?O&TQqj~dc53Elj=(JZGmV%sbi&qzj z1~PF+b%s$G1#A7<&eWTl5q7xTR0o%K_g_DnXK8Q;GPaRXbr&6OW(wA}NV<(8?upSn zx^U|so&E~s=d1I@XmJsL8rM3{doT(0{%oDzTlH$<#gF>4K~O9!_5>})j}9V-72D9P zri}V?+Kmbc2exisH3f)e3yTtmd_9F9K%B3?oig7bz87E;wQxvIPhZfN|0GH&Mb1Ck?y{lmPblb+ zQr#njZ3r&gb5go*bBpyiXxQ`W@S61i8C=qCmg9%D$)SD6a)?Vho_=h4=tHMJ1UC)l z0`>$}y_o<+ofua(pvYo`UzP?o8W#O9j@O&3h}=eeVv&x zBPM-~?z-(VodtOfnh+q4#{mOBvW_+-GrQn<=WL@2Q`?-u8Zn%)_H5`cA}R!zx9iwLiHQ} z(0xbs49*Y(W6Th!k1js9FdnGDHeGvP$YvQ)e89uNe0<_;jwB-wFizGhA1!) z?MN`^03{tA^>@~!hf8H2jNW&zf6DC=p$gjoKy;j1gt98Nx)A4}8AeNNa_k;Wh@7y^ zi1#l^TWUNvwxUpi#Il`l7e(FtQqd&9zA;u+ToPR(3~Hv8kr2I5=%`3^Or4Tm+E)yw zg>!y39gH3>^*N8fw~!6qc_p2|;9C@R$%2po?W2U!ydvmo_5R2X#18F`K_CaIUxhCO z`6c#N&HHkY3==W*m)LYbN`tU&;O*ougKG}?t4vs#a%D}!`r`{EoAKtdd5}%#`yqXs zbvR8@QeaPLbzT5Rtbr7=phANNL8wl4787tS&IV6^?Bq2~;?@2HA?yt(tyb+SZnO~R zDHC4SU;QhD%jxMuVq5bB;-%vUa|q3CTq>MWCSCj?WWv5}V;)env1uq~BRCWIqUfr2 zBzGVB2cy9PkOI6)fq{fzBw_pm!#6B-l1CI6iEAEEEm4i5R;DvB8^wW$3i~HfgSneu zpCECDiBpa~x;O5@r>s8%$$$+#muQn(L%3+|U`vC(I-H!wMU z8S?#@AQoqxE=zCkY6RT;wP0ut7QQ<1n3+mKz=o9vQL=CMh2X{r41D5(?vqy+ocl1LOnh-E>zJuKPpu59r*!}yTroJw50#A)ssW1jUeWx}eyN7M716;m>FMOD=h z&Z4M(sj@^|%Ty!O%EPgcU!mu#lTK2s(`?E&3#^O$Pbu+z1=Il4O?$QeE%5N!Qlv7PVXj9HQp|7*aO>ZvwQIDbw=?D~&kTTnO3NoG0us3RRa%mut z)r;i9b~cH1+h43x9OHEOpLa~jtpw5#ao>wcQ|;fF+e~A{j}wz@;r!s=r9oSO{~>2z zzg%j{0N);{Af&PW{R3&H5w7V2DNaS=Bk+%{T`f z?hkvE4r?CVgm+pgsCTg_7r)^DDIHjJA6#I`c2K;FNYRtIkQ^#=N}^OLgM`k;Z_s18 zqwSpqgIcHb{LbHJ+yR+CzWpNMZV6A}5i0KfvZ+6n554mns*@;|esU23H{pp$KP9q2 zNh=E>l?xq}8*+ImM9`r4&Rxb+LkEb7zyOKg*8VtKK3{cJIp^r5N(djMoSq-f|^_Y#=WQ;5D*OFfvQrH#w+F8N$z-B^zC`$JTL%D6rFIdU z0WUQA(ieNS<4q$FJv`9ZZqW?^oTwkB5ZV3s1sT=RUhspiyQoiqmWNj>RwyQt(ldBK zfIc9q^68;PsFZH-0RxF2ge7>xFg+bwJK}5_i%kG$>=JAV;kwHWNo5Cs$U{XY>fL@= zj=8|1xzMT$RGbK$mJj~ro?^bMYUg*uGP+Ei24TD`N5!}6)Ir8%{$NV#;$MOhC>LYX z+#?;SO5a}NJsfz@_8a_3CpeiFYI2RRIYYuAaj~uc`Dfp(si@CTJP>M->FE zRNlg0q)&N=PS`UY!h(~`t>LsMoaN`}!3X)TK3q~?#3vuSr)u|6^gl3p{!@~E|9lARqUc&-HbCYbD`pCEJYM#e!t(I@`3UP`4cuIZ9ZZwdjHNZ$} zsQF1B=0ow;(Gl24*);sKuJ;zI3e1%jb@yvnyZt-{=Guc~iNc4XUiXmn?@JbG(waur z-fM(;N{o0Ff97VnA@KS=o+gp_b|MePI*h)(UHZP`%L96f@}$#V#dC6I4BL(RmE~d_ z6C$95Le^;=p>2fJ3R#rW!*}#x2E@f1=pm1u{?HZeq=>cV8TnCVhY@ola$it}?f=z#lKY?cp^;)z12#a5P6$lDgB}Qis&LYn)%uX{_-D zeTKjzix^ir)%KA6$kMpIc-CL=T$gC8MJW~m6Z zX`3YY2kO#S_H}p;_IHq3u9Bv=;;6jEdUd(%W`E%|W z?y{9KH_DRD{Yw?0ZComj?nxtb>AP5SMZ4v~(nnEwI8$L5;!wjbOMqjk9TOXws95c7 ziIXf~*tg}>OQum~v5#ZRR+wkdlJKaU2)2dtDC3fNZTeUe(=?!eJtUrHGannFn!zVs zNsd#*W%3_NW%3_qSois{Sj{b=UXsd?p%wB4>K+w1In&m9T{$mOVp~`ZkZhRZr*!uX zme8pzbXcTNDQvK?rIrJ;6%Mg1|ARK0a4BuM+mp|bmp=4W4uOm2Wu2iw$LA6{A*u{cs8-6jfCS$olJOw> zH$zfpgH$>tZ6=M|d@qqcOCegT*wJ8`mr*C-FW%4XtsKee))`3x3F9tLGir)f#__2P zlOdF{024|f<WWMM9+r-}4qrq3?enb1}1Bb;1d;7v^ zUQmx>_ybWH%&Jyq&d8-u7|fAVMwUY((hzVp==J^l(5#!BzBAB!h^Mc)Ooj#1WqX%L{PkA(|aV;9h}WFH6?WxT^vEnm}}j1Z9^$b?fD_L5ye4 zziZZ-m=Q0kx&DzZv~n!j0NqcUihb6i%QCz9zG>D@hth;ZHmsYh;p5xg=LksM*$d8B zq$=!KA{I^5i23I%P=wKbuiaY>+zni1+ok-8d#8agCt>CM*=tdPPosbB8+GwwyqZ<` zAW|+3yMBB3mcnE+zZ?a>I4S22lPrdaDjRxterVv^+jzg92P%Oko-Xwg;~rW&Ndh$Q zxRg6B1{&iO+mbbV4d`_`^oDoZM&dYvD{6%tXW{Mk@Q_tV|lH|Ycd+bld zZykmAuHguQk7r}uK|r82kd59g)?x?v4<7fWLNhaUqV7N{BD;5VOg;t+(d^W*>-6~5 zS0kAC{E`YTW$C*wH<=%pTjz@cBP8y#;| z?ainioB$DzCoBzE>~m<**B6CyL74hX`nxUn{)s{#f*|zL`AIaHbfziR-=S`W@r*)e z%E+5(EAW9(FR~lbho?)J1JD!*EVIXc92KJC4$uvPoM~1G>DWvsR7x`3P6;wQltzT8~ubBgsw3hLWf8@ z?7#2P1}VOqK#zi94?{t8-sL!hq3TbJzlx$#BIK#Q5qS98izv@5_cIcQB6i$ubODNI z%H@C}D0&dPWC|W#_wVMe4ey$=jM0{E(k7$>33GSZyWO)@qgC&&=9z~*xo+hRhuuEg z``5WlB-1C@y9;>b6y&z%sd0Ev{qau($x`sLi&bpP`lUcj99+(C#S+YpFMQ>yWDKmo z0X5KlL*T%%+U8{;&jDsI$a+I4zCq=Muty#D`Psa|F5VX!XwrOsh>|)i2(%jEfEY3! zZ#y12!!`Nlb?keQrzsX`I~>$cF0$@^G(e=q%B6!67Sb0ncu{H&wLlfjAmmFOAIrpg zCtfs~&u*uo;guXjOgv212cmiH-?4kGgk2qrB9R0+7Kh6%^MxD_y0uk~_AhICU(z2E zDh2o-Y+9(0WopTQ{p5Dogw-4j!_5AneT>!&7$h=dnj|DlkjR`JL@9_tZ$>L>=?PmM z@?7p_hh!E$hmK+x1C8Xc<=2CPK_M`RCSCJ*Bt5ZY-<;BvD0E$D>RJB3is<~AxMf2t zsEuYK%`ri;h8+NoD&$nd`}QEbw|1Y14g96$K!w?x2766>f=`td(axyKX6pFKe91DxVg1#0p;X7?o^h+8uxjxf9X z?Jw+%v?IjlB?qVaprsp?9O!X=8$+*OujnE-R0~n06_G*Vf|^o!X{$%x>*QcgZ4jvc z9Maqv3Cq}x{ro-|k zj-?(6Hq}oicl^58X;;+>XOH&oLaBEhFR7T&rSBFvL0o+Q<*!wjpYRm7vn%*V~dNBBaa>xA>Tf z#1S`}Vdr06jP&a>ka&GNtnqhO5S{+Lj1aL}NC4P}tIORS?M)%(csyR$e(<@CPwVcT zBAq@Je0>6up@?B{zA4T7&zrA$zlQbx?`xvdUsS>?I{gl}TLPAd7|b2v+xoAPO20cm z+lROC1giwEWwrO@!tl)W_J(VeF?qKF_NF(pCrO*?#LItg8F2UfGEx24vmzE6&EKHk&$7r2#%(|+RyL`e~M5?8Yza}Wa zcB0Xx;TjW%WbEZloJgDvSs@q4*fW58 zZFlXr*jRa_3^B>-uM8Qd9jUz%CzFVLvbzIKr08@E>k)dacDFZWFxYqU#3%3;Fe0-wTJmgc z=0ia*p~L9>tKbwjS)63aK^c9ve1-i3UQH~thi)d5Y37f@4C^Ub98MB>N_3SsWgU>ay?Eh)CshV&W z4-;MQyzEGuK1kv1|FB3|!CuZ7A)>mkxU9*ksiR)3bqZ$1)#OHbW)XT(S(#2RTUBqhH_5&?{_CRNLLuWo?57dOrQh3dmodj%^GGnX80fub8b{GPgVF z_UFz1y~Xa}@lAy$KfH`s|Ob+Cbd*dHDVTyXL)6vv!>c zROuPnCHWjC*=(SL_csvsw(0?s6I^{uv<*;kXuiX4!#HjNGlOnb3!R^CpszEtVoWN= z5R;8EHxMorjzPuI1k*(a@BIhdJ?NKn?bGW1r6xiLE~AAVz~oXK)aROWn%o!} zF2RP|#FG2pY4Kr$y~*c~cria{CiluOkHIdaUUoi#`b!K$?0e3SCTcDOFD?}`a?9dvGh3GTIY&e;r-wHPE)cK4zi5h2qwSK0^erF70o zE+N_Hwu$tgnCzv)k`v{np}_&KMZ6(H;m`g5_m%(eJf)=VXIuwjaPf%!|GhR`ag>-O zRp3%H#TR|kQmRBEs{4P!`09Vb`0o#lZ!|p-sR+3>vX|qz(=VRTiBq?ktH>h;GKlCP zW!!Kyz|1g3SNd}$62sH$h@VnR#%U{-U@YRB0nE{sKNu#yj4V~)EIdb*F9I%`F9cq0 z5aVb_K_i}tUuej00OYaA?|iXhSY?Q8uma#DruGy5FCfWNtAWW12drB7g|ug6ZBEKb zp9SK?K(l;l0XVBU%n=@noXzt42@t{m`(HY9`hs8AF9R5?{e(Bmc3D4b9J7oOBq$+8TWRo#-+@(BL} z&Ofb#0%@Db&ZeI%G`z#9cpu|=T6u3-v>38R^;-*G#U9vQBVA#e&uZV^|5b(lf9RtuT#PLLuR>?~FX*FOO#eOlsJ2cr zZVSqfNZ9W-meR(-GkQLHQpJM6KJ%(Q)xG`(3y;&imJmLfv0i~~x{8u}Z!TE1GRnv+ zg}kNhi>kp}x!tJJ(SU`#%lF|^joLqa^r9}EeGb(Leupi0dX@--2j)g`mOnzz^ZKvi zmQn@*5Lvz90S=hG3}88H#R4lY)0nG{l_{^&&(p*^q&PMmJAWIUgxqWY^cZy6Fc|33 zrCxg**}k7tIT(Cy`TD*6yKcL?4pZz_u37SayL{$=wF8mz?bd2GFzEg=^7^dMmz}(1~f!KPkP3=K-_S*Mew<_D5{PA7B9oe>P+F%>ZTXfWfSv)87>(sH!O4mr= zWxM>e=ce_uXlW_kc4(`IcK9^`)g=Wi0kNtpIZp+@F{igGvm4?p)cSrLCi-dGSqOV5 zLEzfCG2GJFftM!ivGdX)CbZ`t*mVX12n?oWP`%}*5SBp^6RJMzO1OsY0b=j@{L1-4 z_ozak_3YXdu;oBToN2p_@GY_?h!+uN_2rK5WDBZ96>2_2Bii@t+^~OvYXdEY(W}p)dct=$$2hvA@W=Q>G{M+kGSXE!4WUS5G(KZ|$cE)x5uYbJZZl znuVbO!QR>6*FJ`w8QQ=(JuE@C(ENSKO>xWh7dZ&b)BC~2v2u(&lw(Rjz;20Lx2-`@ zMGeJ(D+fM_nC7m(Zn%8rP7qLD+FpYGOSCMEZ2g}3S}p(awSKdWH)~%u^L#c?phD~6 z4JUw{nJRMYrB)BGDWR4Ru2&!yQdo!|9;0WSAgQBvI{?dlFG5Qw-8FjYrE1$jq7jF4 z3PSk$gb{GtaolTuqu({xzX@i*tB?LG;E~bK^LM6En|CiBjwg24lh%!|R%|a>G!`#6AC&eJ=Z^R{c(6*xPIGSKihQ|kuw~6dpLTQBa&t5!@zcLY4om`dTxJRg zU@V?)$%KMW$F(9vugExo5%>(woQHe+V#h&D=YsAk0@Gexm;q{R5BZWi$r5SjMT9Ef z7(aY{p>olD632Sng|R3p@5Up9l9Duc9v&>w7k@+un5|+fp9q z#OVbo$NqAQQylg1A2~kq4euDWmz9Ofiq}E{TN8SRw+~Y8lBbu>&R{*k-#z(wdmxp5 za>{!k4;R;$IYy=jDU4{20_J!;tLg2Z`kT|Gpkm*a%~|9R`OVI90nJHdUYuLxp$<*d zAo2=t7?dk!yKR>Cjq2?3{xK(X%Xu#{LbrkE9Wn*~vh!ET&g#OKOSy#6UG(nwEb9XV zc$>nNB!z*)SpA}B}#=4C^pX#H>2h=X2h~<(%l!%}uVAW(ivQjR%O&@YB86xmYW@>>cMM5grI|`Y3u_181Zpf9K}l69 z8!0|@`2wa4jM1RL>uiS(`NxK%**RlbKa4?>-=-`~hsNivgDZn?m6b$?1Zov|ya5B- z?4%;9DJK?uUC%8ahR;HWJvc&71hponC;a1j1$ID*-zN=U4%SoG0E|rO!-Ah> zYDLLZ8Q;DgW6s9rV+g1(hOhS+xb_%yUxXv^LzG)|(!MS|vG3}(`5OVjjRUHOm-hMV zcNnAA(5tsw_iG}zrUkCWd(R&Otm}X6J0onotzm4}QkR{>3ez{^Ga8!Pp&gH@zuEW_ zh-gY?UaH8}B&o)(53dJ}DgfvS1<(aF`_d7Dko$}q?^va1dp4e;MS$N}@SBE(Ha(ut zkLkNCT9+eAD~u2**mM2OTR26lP?ilo@C_#CMYJc3)1%;?opwDsV<%Z*OG0eq33is( z`Rfq4U3!wx(H3B) zD5PWlYeZ49#KFy4D%wq@ir>28mU;<_)gm_H%~0GV&Gb;sA+dY^v@qOS#Lzj*SrWkL ztbq6b{0UspP({A$nhPKEWWO*mdoDFh8KK(0lM|~u$V`ZK36`{jNqP&|Ld;u%U+nYjKhGY-eMQW#2iUjrMD(A&d)|+CoP(kq!z&Elu5Owx^ZedOwVOSG#%WLrE}yeZySw zNq#-dQz^-La^PB5o%_AnR0a_Xf+~$RCfMwZWRC;{!7D4=12M2)bXlriB8l(GRAQzG zIW@}NIyP0NxfFqu=7Nem9q_VTTHjNu+nO>{iHK4w{sF&><20g8P60*4JzwplRpQS& zLbf4ugtCs1=PpU{$z4wNRTG#d;cpcgzu=|pjHN^qqGWS9Cq33>Le-PK4oe&^rH}z= za+gB>*t;GH$?1Kbm?bHY1qv7I3WbDBmgIlyen2VcSik$RRX?KI{iuv7)<(&($QSg7 z=i9o`N`&%z&`ua`W*w)M&b&(+Wt+|UP*AvH6{Qpa)}Rko_bTGTadYcR!7h^1R4=M! z4Xof&WexTvw&L=%En+I8Wy5-5hgz*a-;Se9$(!I}kmmd+mz1(@h4i75*&`s*0x{^G zHE{1b_3^xRvIQ16&*#Wzf-Uuq>Xort{ra<$iXA~6eqBH{SrBo#cp-EivqJVnOcAbn zqUeyuwKj`h+;Iw4!PVqLN$HYW=xDb7y7KdmM({}c_bZlGkDfA@tUJ_n|9E#wpLYQc zVXb)Ckb1ghw7=S(CWCme9mIA8G97|+r`rVZMyvvXH4Yr)qdB;2>~FH3cy{ik_qX#D3?^ z%!^sTk%sy<@-1yz{Lt1#Kh`5^o={?}@$i++MgsYnl*9O)H#JKyR^XJKlXw4fIA>=y zw6hbV%UJdJ3&f6v|N~ob|%7* z*(Q3Tf<~F~Hp2Gsy;Db6=|R)~K9sp3OoUc`MXzlC6$!h4oSkUuSc9FYE9&^? z%O^X2%;5w=wjcd_ea9TtlvvsI|1O0oc;z4n;mgW%qHuJnEdC-O(>)`JT(Oeva!93h z_0QlS)6FblLOeDr5H3>4MHat_RoO38=y zyiww=x%hh&!@*R1q<=qxnB2sq$UL2x>lj&FmaPd?nMDoAQnbctO_6KWT$HCtIC={g z;vVO~oj2c+eY7we;I6p`lEjg`4mI$OOTZF#ePEpTQ}^!A);vQhKAI|yU7nBh)5&+4 zS01s*rlwqE#$}1gE*IF#|I_$^D-XZ@3{k=1ZFU<(446uO^hYrdpT&&yvFRNk-{l~a zl#SlPUsVSlQ1*V#=Karp4(wb!u{&-d%P2RDX~6XLYnz)lW8N1c;Pfm6PX=9Y(Y?j3 z1rwqr$gC`4wt%Iqi<}Fll#*w%Gv@h-3zLIk4NWE|FOBNTz%BI#M)6TSNYmnKXbGHn z*$=y6jZlUEq<~!bfOt&$-@jkz)@uKh{D=JPUpd#m#HyIs|DT96 z2jhQg-e&wCHE-vr|A;t`Aow2Ft(KwQFeG%-Eg!!KG@7Wzpi~fIk+r-5D8vt?qJicU zR`D@e=zjjlIMdP+lMq{6>=!YZ9ydC@nyT{A=R%I0+TA;~V*9vUt;+BqUYPzfj3@h0 z^B}`ag`;C+^!de&>CJ#Rkl4z1D)qu1%7Wr_^1&0C1m-eIAy%~0d|2zO zmfQ8PNQWN@h33|5C8ZJ#<7|jDr^@d`ADL&Zwzgpvsn!g-<0`Dy9@8by@yI0rk&07cVjcmV0AV4OJ)xYr=HGc~yxVTE)&p46Iy@JsvEsP94^n1Dmx~GL!vz68P8e#0ARv%yxYZ_M8mt=OFNr zV}*=D)~TF{Y;ojki&NkjR+p2Nn(Nw6*mYYUHmzpc*;QdmWxUyzX=y^PPg;bYf*Kj& z?F~fQmtXq3V6_t`hiiMU8_dta;Eb=lI9eo(lQxe0J3OnB(&e=f z;?l;yc5OLTRVd~LbowvaDBtjKveUxF^ z&JGk0lvI~+*B4SkyJiSBEw7V3vt*Y3_B1}EeAp79X3R0->^yjnN{(4m&|iuln2x^d zNb3+kVQw^V0y%oOv+v2>sg4{DJQ{uMfZ7Ma)xT5EG%O?QS2AkU-ZeBrIIB(Bwk0heBw~rt?O$Br*XBIH@Nqb4zkn%UC-1RFcvNGz&VUqzVEebTsFR_-cRJtbWqKSSyZ#HF4 z=KjvZc-KulNI>>k5k=~&3LM&%g2-xz@wke)^k0(1<;#t^D)*C&skRR<%fu|)_1)@P!<-tH{;u(VIjN#^K zq3z&e?()rkiMojo3hC_3)Un-$ED&;JkCx8kdW_@RN>!8ZiMK)RVeBG5!GBR%!V^e( zG`%(hmgbtQG#4n%^(a4vroK|Pq-$WC)AvyJR>K3Q57i?Hx<-9_qX?60^%l?kWe;`R zy6{`g&M}`nS8{Co-TS(@Rp@TbP+0*KrDjkK#7&6Vwq`Y=RqVO`G;sY_6;4qd%eB9q z#@CsFW1ah#zq&Y@s!(76Y{-)+UX4QU*2zG(VY4Us`JY7s4~^=tU%{_%9AN=5qjkrT zt?9~VQyS8J^)n!Ovp*l_mddq@o=W*$=8K!wB`?qTR~2#f5koGeKTzC=lebPfpA;F> zQJ{!AX?w3B(t8RXZMr%k>Bw4{^FRx$Nv{SYu=3|tLsf!a`+LR20;=ZMSsag@%H~a% zSEZ{@ner%U_bLiJBjK*@0g3HZdJU-N7c2LJu-3^JU*Ne*4}5)a=Qm_;q3knFj7A(U z7obUWy1O-TGzm^pQFFg1p$V}Y57!~gE^ttFDp`&7W!QwAOa78>R{tVJpU2gzLyfaW z>Q`|}t6sZs^&LHPRG9JaFGp7$QZDiahAP}6sW%cR5nJ{bo6zqMouN&)=QoIg?e~^A zYY66|9Ks!Ionjuen9Ou~RWdTL_j#4hs{t!6ROvMS(~lIRgB-VGBR7{lQnj3P{^&Cd zM(vi1!hnu0#;5pcdF-ZR?l+6TYwZC)ng8xHymmjz`MZ}!mCZRs>`8u_jd@h?dFJP6 z{<0zO_^g3^SEQ{aj9=6M@Ix{#+lc&y!na)~eCCge+^U_AdP)W~Y_v(jJ;OS*%28YK zmJp0B*XU@aWL`V%L3v~wVP4wgb^U15X0KXKaB&`&^JhuB#5z9tasNHo?3GS*?J7LL76a*!H;SwB96coEFi5`cTy4xUh&3rjYtr>O`;5bxJ-4hzbzjAp%Dp4TQZw8 zx>lG6R}96;lbUuEu}J3|_?_#q+wg2)e`0#MabL4`etH{<%~{bIwqtks1b>^+hPvVQ z{^Hqj$k)3f;%?L0R&;t|N7UbLpz1lCn&7&5XwA^!%fNVHP~5oLnAES7lmL?MpLDzn zvVN;A@=CC5Y}~wG)4^|tfuj#fAVKN=P*9*%V5SihKkYLL>Fg}G>nrr3x^S8+|`M9P-+$}X!y+*!>cCNbw5H--OBM;mjWWeBEAz!lA}`toO)?FwjT zI}3jn42lZv$p~jM<{`_FLb!yhO)Nv1n`}m%8sUznf7$-a8+>DBRf_mO!Qk)A8&i=^ zbj|&j@XZ!;6RtYk!k3_ipQ4>t+J%08V-=Wyb8%a6ZlmY3C+s}e)n$_=!Jb#_4VR#t z#%InyCbxAn8TzX)@Iy;R?f-zA|AmGBMS5go`?q%urvHSSnf^z(`SNG@$xr9u4{q*L zg6{Zh>HzK-i)Sp=s-o2()#!jk0f*e4xO!7)KTbI_8=a)~o$3pG5tFz&d1{q|gca4V z59XA&Cr3RCGI`p2wsYF}yfoL4)kwA~6X#kT&vCE$LR~L2-+84$lzuPDco||QIQjb% zCQNVtJ8N5x2f@yGiEoj_i(#Zjabf1ABaIx=R3>#pn-R_UXw`kKb9c0Cu%}UjHu~^d zubb-=%ge``)iZ1>K)zj3+j8UE;Nv)#mB5iZ_wnU?Z!PTWj8Y>P5LO(F0yeIcfM_=y3yN9Yj-e1T66H4_1pxAqUz<-yS1AneU+?H59dbkX1ugKKIb?;F_yB*L8*hB;H!vErnCff#86Gat^f9s zvZf{FV|cVF=@!cyyxsyNukOlqgHZ~+3))-zKIhmV&QAUu+I-o97qE9@yp_D@A=q%= zt^2kK`m02J>IU9K+w=tewx)SHSjL)apD6*WN2g3k6Pi|9QwmOinv8EYt@F@?Pb%zw z^L{a}ZP=7WqqvIM*<%Tf09pX7r>dNS#-m}an(ZZ-6I$_Z+)|W2%i|i?;H5l8h9SeJ zk{zbibj757#haCmOfAYVl>~^xmRpzFvh@}7Y>QZ#Z0c)Jr7MDX(5*`2)3bh!MedWnCU3*qxraaF6Uc>ot{{ z7Oh^z`$_1?>7tD_w1|=k@F<~HUNWMaiWhcvq>NZF!6W^2RKXb+zg_!IKvQ%7wLILG z)R|Pc96PyoIkwJql1j0BiUdaV=8>hJxS8TfT@qaq^UJ^e+$99Z+dQ|j)BEhHB4VT& zZs{1%;bhTS;WaS;2}-yjAlv}V?u%tKZ+7;cNR;aKwLO|DfX64<1fvJ!%iFis(Gg3S z*1+;`Fiisn>ZS-8S(3F~6G_J^MySu9x;cOynw4te)YMl+SY$TxoEHYs0du5F%li2; ztTv~X?Zv9mP)!8LR-ZeG=BM(6I^3vkv#8+i34>5*T49d+t1XlSp@rC+vC*s0GWxQd zFY4eaHe4Em9VfQlIdodhq+u;E=>64DfLcUr9?>#vrHjvOTv)Mrf|&tn`XIxbw8&~8 z6d`ad(x5lAU$^k(dh*WIx7+4UpwWpKkhMGxyTL0skPrt!m91x2S@$@(tS*9Jxr_*{ z3zZa<#5LwOmdL${lI=JHn@^Sg=D@u`B>BM*qJz}fNW^hfxM1dM_cb-PHdXGFCH`If zVFzm!v~Sz$*2kVL!|M=y6)C)0i9^(8Hgl}Me8Y5Zley+?;WEEVheZG6J+N*rt`pwn z^x!0B3F#+!z;9@#q5i$oTS%gqdO#vJA7eDuB+3ga9NJOw$%Dtn0@f1wYo8Z1U614+ zRtWu{PKkz3fct&>LF9f_BaAs?SwligX zfxNZ&R`M7kIsb4mjL<88*Q$ftz9(?#WRDoM|;{nBjGb6Q#dJk6oeTh^fL~ zkDW!XlpDK&Rf<sf{#vAd$JBW!Q)oiqKEA7ehrvQFUN@t>1h2lL8 zA{!53>Lck!<+&z-9^#D0KO$4{^{b>=cc{zx6}vYuhlydE6bN=ZJmf1BgJzIlXo&e50p@wOOQD$`k|MVN*13LNG^(eQ=CfsONlP*e zT#{UXhm*xTZ&yBg1yaZ-OtErc6w3aCrBd#%UmqVYSxNmj507i+-kie0dbAaCT37Ki z_@5pcSBmZY7*)aUr2LuM30hSG{|=+A8D((YY?5*a7xwoAD}83 z0+xeD2Qir{_U<@}gJMlEYs}uMo+BN5z~n376^8;V-PkP=JyPnDpghyp>sk{d?*5cc zS}3XI1hdCK!xkYhDz#h`GHJPEQiO(qT<#|+u8*yK*_}X4aZ}PkA`j9 z44#7f!wj#&Y+otA6GlWmZyhbsBkXBiE^zv-aj8{Q%EOK}Mx~|hTa;%jV7`8ofoA{S z?EC7X$~C43iAaumakj?ea^6hPQXSvx4F3&=3?z~eHCZTWJukzX=l&s3YWEZ1Ie!?n z=>GDhV6_4o&?iP&hoD;r)rcDy6A2LBE5DoHeU)jTlm|nBl+)VkZl3IzV>w?Vdey!m zUxOQ5OtXs(tCJfK0WIHaSC||135v(F-`5-U*|Si;!OeZMbm#PRN*+O=r^RIvh^=*4 z6%+G2S=L}21Yn9*;{1cCFEezi^v0-o<3TAvAu*gmoTaVgFIQp-1>Kf}r~vpz`xb7S zDeB0lB+Z0NqROyk6Q!|rb$OafS%vObgR4FK!yhl!USF0VSG`{|=BgNBIIvJYCWPx` z_lk0&b>AdO;a6CcPlltl%#5TZw+m0?#{HRu^eyv|dsE%y?VB?rfk`A9R(b_uO=n~y zbtjA!;#iSsNJIWBUmH+CrZ57{!`)H^1kE^_d^xA~Qx{&_HCG%a>ntKJMJ~?dHb!&6 z-<5pdqRVT@chc|L9jZv|*K*Y`nI&~jPz4{2VVhd6JWZssaMS9zOuz0$IbVA;iqToh zensc>8yJUO1iYNgEe=k1;S**_`d+Y7qxzW=o2;*Fk)nCZK5%- z#$vo9gPurUg2FEx&>+PU+~Q`DhK{xE)KmQ7C3fY(^>Tg|%c0SB_T1VlLewV73h@iP z$}k0i)I!r zNd$?~ec_nDhZ2*Jy*ktaM+&S^ z4y~MGfmbcLbsFhbHa3{kN}@xt>al&C3jE5s#>8b@qL!f2%5y|4$sSFTPMgW43Olbh zIeJUG`uedh`|2#zxAoOLC|H4gn1^QyajH85KRx8QJ9$gB>~La7DF-{cccZ|xtJ}QGpZJPk=?~j~a;~{fFAmX?cFx`&^qb_3@t%#L+2)HmCb|2UWMQUeccwjCHI zkdH|Q63}F0_zO=?DAK_w0++MQvXGRIIbMk>cn-T@Bp(wD+Zr&}5%hqrOjI!^Xuc)j z34=+n`GrK{T^{itGQ@vnegAq{VPW{UmlY<~{~(LQ^v@{G|8@+>rTVlZ)+j>HKE+Y; z1?Pz8vEQf)r#vz>69N&aKTTOVc4}XuFp&P~@Iv%my6a)3+4u@m(<&(Bki)Q8nxrtC zXGfV|&(&%FGxaR{f~HcBK~hLH?QM}Jz~?YHa0XSkOH zDjzD=lOwDJ!AaKZG`ab~)X9%-qW*HkRO73ub4s>MX$7;!OpC;}@1yA*j+c)sgIAE< zsP>T}so>g!-92Ayvg>x^t7CFku5Opq&wdd`7-vqy8xR=>EvbLcK*?_W&=!o<$DOH# zb2)4iCoPrO@YV{qeLH;2CtOwRG?E;XC{CRfw`yH&mgvWMiPMhtx>NBK{hV)pj@!-i zwE5SX%4&RUi9^Pe2vCYm`})-hR)z#g;!`aYw28}t@_C20VU33=blOKeREmX0d9gO% zkPn9{n~P9Z{n({^kc??vsacx(Iw5dXg>9y#TUg6qjVq|^@A{BS;^!WJ;zQmaW7Rw#0#g$m7Rlcx?*e=?^#K{9nbXGkPn ze5jLa*p2Qxh|T0V%fRPv%WHLTf4b7ma$3ns{5C-r)k()&;z;|Mb?uQ~7aMhY-3Dz- zsPyW_%}Z%9TV+)1vE=~HvUdkP6@Kb8RLV*5lujXFCz6!31=6A;i1`uAs-)!|l@=CM z045%c&MC@wFd|9Px;Z(EkzFVfOUy1pZ@&e%EKW|CH7ke)ibgg=Dv=d|ow+q?CpK)l zt<<9M0g$)(n4ceO*G+sJv*CbSByE&MhlOk{pGbnTB%u@Xvk`Vl2tWE4ujzEBd%==N ztW{gM@|sQ7QXS-Q7Q-mN_ZZE^9?RE;)rt(e5F=__&%)-s{`J5DmaVn1qIf6R9H!g{xP(#Y1MY zsf_O&8bmS2abs2q_j*{!=0Cca@~THQ=g5{5vjJp(`B_6~!=uaHn09QL^(E=4I(j<>@O!W{aL|5g(a6TSSHZD}IpVl+W1OzO)=A zFZh+CsoWuOd%61gw)f=re12E->^F7KJ*fg-QboKx*d$zpB-%7Ta9>M3f)GXt;q*t8 zxBQn~7u_#2g*7=VBTf#lN2Zblr{jx;g_}wr6LH91->PW6GDdQeUX+nk-`?38ldSH2Ojr&;;P`ac~i#nkXVUUQvx^(S1?W zNf+0GL+K|OV2RW6+YtnfMbeuz*g|uAKaXaePVgU5_Zcla)n-MSL+-axV{HjJj?kUq z#O~XN5LhX~k(nQe_jrg%{MTf}J#2-1bUQ{CpoYh+L!X{!ifkn_?)-Cr80`K5B@Lxi|%o+G!yFyVTDmR~a z$~E71AF~Y2$o!o}^`7KVA5aRk-5b@x&$3O=^^b;K+ckrAod(~`U`zRfrtrq{L;nWn zFnD4oPcp=8Iq*IUFhMX16hk}SQ1)!9d)GI7b_y!>&Io~rO%$*GhFIUC5s3jMqpCG|^u;cs$OlEb>vT~!YAscvi#Ek0Uys`F7t93#!MNHi9o z(0H&tzObEC+tGDe&TU1#RLES%t`UcP)v?Ya{P9vaw+nK?;38Um3ADTh7&=e6KBel~ zR6F$at~RYrT^7BhPjKv}Hecbo5A2P_D=w4glZUeP|xAX5#|&o~;N#p831h zVbxidDcvPR&(O1NUu85RPz99w=`_{X_h`2}%w64a6ABtr`!_SIteI{s5#}F9a}%bC zG`p$!2mPAiU=ze*VlLcI=)3~Q?kbFwcY2hD*^3yH{t;VkX&|)EPGw{WT-w)m_<`IGbP)x} zB!(Swu1Sz;2N51R`}<8O0qk4yKq2hawEZ%^FYOhB)?h23pNT{YdhyynGu|EG-DYG+ znVG@^T*!dz{8IX$>x>!kK23rhu0)N|q$ykM=_;XP*p;}Ko!Vo&-d$kcP> zm5)!qijk-x);2FVa<4*U>+uhux{uvE&^Y@uW9DL1Mj;<`Pmrxx7bY@jFLST@9U_+? zLz=-o?B~$NtMi4d6vKv{~;SiDrge- zTN~#m&r~HFy3Y;5vLt`V2E7MqD~@GEH(w%oMy5KVScf-vi7z9nmL*?>Kk4=;Q)lp$ zZ-7fEdq2T3a1m^bt11H*oYlyI-`4knod+&Bu9gjd2DpFVKjE+noq5GOfA16fPiXP~ z3{z)hp=bMlJPGFiFif3;`F}J_y+!>;L~#t^M?_IN1&?tRYOh`IDW;jWD#n-!*{Ez{ z9ULN9*qDMJT0Zr&z~iy4*b5AwJYmzk4Y6GtyTGBeQ%RQasEOoPm zNcKwfWyroiTxqi;mwEWa)tH%V*+L+BKh~aPU>|SyQ0c{w?agLrFsAr@?0Vc8whbyk z?x?M(JOZgm$uu2*IqFa1>*onm4)!dfh2ls{0iNtk+_!`*nVH)0jq?;qQX1^pa>QE2X_!yNBTx!7krvusG#M;qQ8;#8I+x1eHe+gcN|Jqres2w8BLknxmVA$` zT{|#yq(s^#R1sPi!9_ZOs3+FSSUZUu_o8}W$B7_lW}Tx{!z)xh!&Z6|Tgk^xFFvd#XK2SgJQj_o+3w<6&A)QglQ8Xg zY{o@Yc}%OCqXys)2w+%QM&1c#T*L1>JKlVsSB+1ADuT%BV$1^npwpSVHc^JxM>kJm zLO$Ut-d2#Dn+V+TJSV-iCb59Fm*V+xa+0};s4$ys>yn-3Zx^}l5xmKZgE@;$r7l82sx$R>znY^k_((mLJ!Nj?wU^!6HCM{V}W)Fm^Pj-_huAn{k@ zUJ8WllY+=p!@b$aPtFdBKUj;bwz{*BoQTx!;^Ih|SFU}Fca-rZrpBPk2aU-hyE)}1 z7M!mopy&f1C7DhW`8t#is+*oj&)e5s+p zRn^eV$2Nx#Ty!C43WgG?>S&);B@b?9>&)z588%WFvO8qK(#ekb?SKF&`N3~S*xrWube?04&+Wb zHyMk1|JxJFy@M`Q7&9l{1UimXGUtNvi_jcAL*|xIS#)~^{`VuJ7Lxu$(`UjbV$cwS zIJ4Co(0SonZ*zpj9oiU=t+I4a18}ZRedlbC2hguIas9U0_cRQuf^F&~o$oCz10TLv z$>L~$eEKu?m?Z!U+G=TzGO{=o+zuGaM1%GEmowv*$^x~rxi=OcAk3`ljvxTX{rn|N zPvuS1xT;5Jq|w`0hHGTnNvMrZS(24lU(jJ)qG{*5#pLEH>HtF}?6*}kZwW42a(Ip5 zgk9=;|22kR>O|KK+!?_`fmyXPNY;};b9hK_B!)EwM&^6k5a_ItjrQYG`?#=}ZWuB9 z+$vLUm#P-yZPEAGx|>GWUbdSgn8zMx*v#K(BNAo?N4WI071vF}h5hmtu?3mfIMWcS z7CT4r0~SCkLm<(a-?|2ZdNYXS#c*gKcI5dyEpYNv3^~;@-MAB=1L^#G4z~KG z0^A5c|4FpN9#Hu&YCv?YU9|TJxxaFM`Rl;J_e)lbN!1*Opa&-)Yc6} zTCo`0De!xZPgvz2A`~j(>EZT$fVgT&<5jR^+dY6icXkh&fe692-hLTfOf%gTZ^eUC z`h~=vI?y_JGPJ*K;NIyg1r!HeJwZJ^Ej;_#cl5r+FOJgXpppVjaFRv`B>Sig+{8?p z+3|g3XhYV^ghHVD2^NOS6!s0(-@(0+!@i^MSJHI7SN{I0O)^SPfC`=TBg2|xgxx1S zhei^7rpz5430^ypTQc^yaaYBeHF{clqTcVR$e;ftNL?aG?H}&(_Rm$D|LEi$2rRR& z5td>N6*r&BA-MJwir)#NjWWrW@4V10v_ubqTK_bD@=QIHW-5Vr8d=*|DOvj(|Pd{9fPw>gTP>!_D-JLB5agLvQ$< z{`a1c8szkAd}Lm2juuY3rg6XogEXj6?+%5L2wltxw`#Oi{X+Nc>k>rwZ|1e*=8i{{ z6@;`5IoPIajsGDRCmC^j zoS97s5!Huf-T0#TfUgWKY>x}e-(`w;`!GaqD`+f}K0HL782!U_@c|D297MpeLCQ6$ zn=VjJ{0>Y&w`w--?6yrVd?@??wfYkqw<`fJ5gzd>fxu$`MC^2K;_HM3I7DtcL3{B{ z;Nj&IL7pZjwLbyK7p>jI+2C`y3UG|x@w*<-%~WRsivKJOa24T!0J{+lJf@keEeDq1 zbH|ziHjgU@Ukg~V-v+vj^o+;-i#MZ{ucH8m2wb<<1-g#%i2uQ)P1k>qYX0Lo7_S!k z7_eFFPtc~l4*Ng;)aE$8fY0e3nEu06|F7%&pTZCW2P6BxUG@KmDf#bu$t?f$6a2S@ zp%nEk#|>80o)x9tT75BN0C<4$sh0tZzt-#Q7B(`SO^;VFGzyF>h$Zog*$+I=th0?f zfZ~yf)#J5{vHU>C-`UsLCrC&M#(`fgJBv#v!!iS?)8dW8;oIsJAW|*TMbS&c=CNsZ zw{7S?m=a>+>vgA*-I@NH6rM~Oaol3#)e*rckt7+Bh^!hhUk7P+wt=gnf|!$hy4`;F zZck5lTbEv4zf7qArc>pBerJDhFOWKA%9s*;JsoY;^&jl$3X38N(lm{cQa4K&D-oQo z=5^`T-Ic0?70g$}79X??w;F7O1%5(R5K1N{`*oQFwdWpHf#ITy*PQ+@qx)USH1)|Z15(P6i- z1uC~u6j%?AHCc5yGwFp=MkNuY^nKk++wiNm8+II-n3&i5c79YPB)!ovZb^pJOP+2m zC+KN$vm<=pFDTE3`TOC^{Mzu0M1^IZtJWlh=*gp_wu9Q)k>0?yEw#ufSz~De3idVS zJTV%}(GU`65K?c9`X>$nqXzseZta-St+DjH<3%oie+>Vqi{NNNIO7kFn|kE;u|PFp z3H+G1<|e3hr|Dl^2t3f9+FRmVf>e}Av!)*!iL0J%hU9p-4)CV{6IJQK_skfnVNzHl zq%ZodN`l%!z4u1duxh92I^)Xt4`0EG5qPLr`q)08x=NjPdEdTUh)l| z=D9D9NVsJG*dactT~Nm_pu(Fm-|vm{XKMvz5gl19bdE5c92(jCM$LE>xd7D!R1L5} zJc*@xH}9BiE#F^=NF=JpAH+2!r$m0)^NAtSXK7*{HqObgcbT8K;uM9<)9yW+C^Awl za%_35DBgMrQtdrh7DD`suYy~%YW(hbn4RBh38)vi$xc?`ex#8U>2-2{ee z1L0FBR7zhx)tXL)+9BfB}_38YBHmn;D@(Qq!c=A`W!SH<2%xOspuIA6Z3U zbUADA+D>ixSFOg947)gVux@&%ngv1Tmb}K5@y4T;rg&ykb#Va3dA_6r-GC@o<9wKI9W6tjB`F!^Bi;suA359~1Kh`y33y1tF(5 zPm2pu8~}D8e54SSrAj?1A7i=ezlk5pCVZ+QAty-PaRd-{Qvs};zb4FD7-j6&hjCty zhU*mKQmTR|BH5FDNcF5!M=?+xTh9T-ixa~?N{c@B=+dQ~11w|a+>j06AM4do>^7tv zB&BhY3`^nbL3;y9M1~zq_+c9^V4Thr4>FC4A>$+nvEBvCT+G0%jeR00;zeAz{Osy6 z^WSKV`7NTcuv6C#1r5s z&IsRNT@`OeepqqE){0@~g}H9yFY1K7<&m?Zmu}tKH~2H0WBo+!(#Z-l_^Zwy?Z%-@jBcY ziz1F`T3<1V>HAb6Y4$U{(a8Eppg6MtqlN=}N582~2yhY^_2E_*d{?A%I7B;;a+#L$ zStrcc_6$vp|m{ELJQ-Jls z)DdgE$z**izH@c}A_QCNGcm8-tc&?S)7B^YgBdaH0X1Kk#X#n;W-)7x-Y~?E6+=Jc z=sZUIi_p8r^*zN2ZH%^M{0gQJH%VT4s86IZOE8Y2EsyZXtvg4!aN>}6zB~mVIAvc# z(2%jlhgT;htVaL|y+Rk7t%yNc@C#GWHI>(`F8Fr`M*(oCrI_hu3du6mYk-`l)$adwQDTh8U{frY1z<(8 zs70srNrmbbPGI`4OIu_P|Cc^T0H7s_7LJ%&;pI+1%{)qvrLkBWpQ3>EITGLC__m!U=Exp6R}q+gZbKsz1~8TW37^ z4jNWGCMNM7CTiM;pO1fNp>S;PW2)HPc9Y44AooZsZ4t7Ctx`mhQ|bN2(itUxnbI4 zOrTUB*3{@2J0<+&L=_P@8VRATckJW95076fH01o356c%CW>)j&d>oEI`MR^`IRP#u zg`SsMr=?_a*_ww$6Is5-DY6Wrud^E{x|xz?%7+WXY{fmoUe@?Y8-jm2rPzq|;Yvh= zQY-efA2!Alv*4r{6T8=$D{+#t5jcIr-TBbT>SEqT2aZL?BbRMA8D|@4Aq?-St2qxo zXOl}5l>s5=@Rq0kb_R`Dad^nha_f2Q$y!Y;IqN%)CKn;e-ni2{O^M)Q--kN2EeC=nf)^$Yg+F5ua4_6y5e2%S)uxZ~6wj}4)S@?s04sWt^#}YyX zAeRgIsdE)kBCzY7{KDxn4b)NZU%J+z|A5Z^g}DCJ*vZ8DZ;hQS|7cVEWB&ip**|Z2 z|1CQE{|HgmGRAbP(3$(-5~|j1jr)<-Ik+Tn@Q?}S`2GaqRA<-Lx;ecIcCLUx$QA5m zqYhmM7us$|Sr}hK?$qdIe3!lV@AGOasWe#$`jZGgM!^SDBm=_~8wW+53G;y(Wh7GB z_R_=)exGF8zA?R%^KwLcB#lpbuRL6N0+q=R(-*eL%#fzeQ@_%tN*PZui4BTxu_i8+w|yfWae~p z_+i=In|4~XS~qO;u{;4tc>>MQt@#bpIbiL7MZDo}tfn(x>QUfyDK=C$CeqxQ_E0Qu z6xL?$JgYY~?2Feaiy}jk*62@H;!YCFDg~bx7=%MmRoe8l|8VZhCP)-mXEpX&SdoD` z80y$K-g)1Sv((h0x4T|_v7b?kjrj)#UyR-NacC#M+^yBCQlqvHEzTQm>C5Rl}cdh3|)ds34YFFpmY}- zMRH0MJ-e_wmBESh!5 zwsjb_-y*}purW$VFP~}}@ngP`5lz+~Hp^Fk&qIw!gA&wi;j=^6s3_Gyv03XYPkTP;UnR^%l9nPJ+(`rOWK&;`2mHO7Djl z4T&%C&Of#o0FZApruHYXL|(i4tYaKdeIpDTof&`|e2%-fCh+}x`fTI@15c1nbh{UngfW9na*T&vRl=86@~tS263Yz0CeHt)3reQ zlBp_^g&EL?LppTGfkR=!l*N7>IkbGcv!qyBwzbdhFloOWVvwuLeNMQ|yJj~e<%Id( zlMc>a@6Ojbo=` zKC5fMkNI4|m)cQI0f!B9SI{9n{QDSx(%fuiX(*vK;#2(6{+zYd;)X>?M1wkH8Aos? z@^;N`a_EHOh{zDM*ibq4BH}~{3S{ON+3cD#M}f+qhbGVk*9P)($U>6BRlsuo|#GRX1Kq_y3#n+H9DS>2u|d&c;AL0fpn;6c#u1|Z|;jEzq=&8cZ!UO~7d)g8u>&=|^oeqLZ6)5vKF?PP_ z)R|mF-CD(16-{JG(go%X5l-E`m*!K^Hh zuvHzIA7nd!2ndiaM*}J8DN~v&HhlZ0Bor!?f0~a{2{J5H;pabVEv%%haB3I@ zVQiAIWcveh<#*joJknjeIT;XZhXKh9pPfy2FNbKQ5fgveQ~6i{aktwV z^kG_>6Q7}mmO1evPV0YJwaqAHNwfvGaw`AkORx#D)Tq43b!`CgCEVOW<|yb&q315a zHS9l1Bo^!yp`Sa0MC(~oaaus&EGk;K(%i@R^$3Chg)~^k0GKpfn!(rLyWn`aaX7rR zWA5l2S?&J4gkjw$80kRgsa50lAP-iA4AV}2{u(D1iJ<%2i}*3KRShCVFVRy*Xa&-( z_9L;>T*k+|;XNYKE$w<6s9ouDqY&@11{L+b8NL~(_#u@tH6m$#Ee6qVk54~bP;&UH z0^$1Z-ShsWji$H)726-ByPwtBzousU{#?!XvwoHQ>oFITNiBURZ-V<7$)vTfF97QI z^l2G%6(R($V+|hh3|(*M4WW#nhP|M%tX(w<=~dow`z%`~5jD2UXrRQw@N3N6wwp~g zFG0&zBzC1|ubKhS%rT!KMLvZHhwQ@hEq(=F-Of%qzRIf7HRmwMj_bL6_62NFpAGAG z15WJeDYXoB*);F>%hS@uw2V7TbA?i>+`Y}}&fvjS!3w8!7SGF(FE0YWanjpsFsdcY z>=<;V1IR;xx^j7Zw^-CFAQ*7oFttn4U3gMG#6BUixAwLT z-gaK~S9y|b%v+^nQ=#7aGzX$UJ?7PxSc7V{hYc|7AZLjtpfsUVor_OTGUO2y0ysR! zw@RvC)_Why@fK)8V%lasgKmJqB8XnhH9i&he6&0XTw`1T`92EvX%4!-)6PNim0&M$ z2-*6JP0gogf!Mxnc6-XJW+!o!i-OfZ-{aq1erV95jh=sa`}X%r9aU3VQYd%D#Nhr6 zG+9dE>tmb9KT!5gx|;C!Os<_=|8TKPBbYO{!kR=r~zMPghs<>a}L~Lid_;%rR_Re=7NX0--okWFwdV;CGg` z$Urft^ivxrsk3y~^J*@b^hi;PM5&kD-AT?FaJf-KH@hz`Jx(GgDHFUIEXzM9Ya>hl zE(VcK$`!%)EKMf9Aa7c}sg~um#l$0IVa1UA?g1nKCwZ5~h-1*dK+}iknPNu15Wip6 z$bUPMbA%zO)#1Mz%QL~0)M6Ky__f;k4P6Yw#Cv6QHshTp7sp9@-~pMPn{)-?F;cGb zW2eDd4!&!YCB9-i5Lc`OP9pSvmDLPTiIL*SppM*LXhw_#O`^D`{nsW_HomiT3);yy z+rJ*j6n`4q@}DOg|BLK=J5DB!gVZv>6FmLzTfz2U@_*`>NE-hHDgpC|0at3;{RY&x zKpgvT|MdTZxntyD{0}G|>wgQbvi|Rat7>bu2dv26D{8k2n2XS^iVw$wIT&bT?9H1J z{`hdZNl{vK7!zmAzB^KqO~g{;znZ{*A#rk_)D+PA;s;O={;hq{u?}bq7lqT{pA*v0 zB_9W848X)L^v2vA7?`>JhW`LBGb-3Os~0#?(q}TwmA(nojwd8xPzWNxVXB&QLfQ=Z z+#}wHM50t-|8nB^0P?<$O^|Y1FU+#TWt1rFJgfDOtADWWfbO43oO5RWWMV_mg5nV{ zs$xE;h)yP0wC#kc4N*HNBP%vco3G9u=EK3wh1I7;g@i)T zEzaEf!k9{#@Xjza6JiMW=|>miDVz{f22s3k|(FwL<|TFlC+U%ti}TO z4F{o}?t6B;SoLtSOH?{zNb_xm*jA<}52#9BZL?>IGO*)A&vriunn%c_-b}0+fWncG zU}E2JAgOX=_;CYQgWSZaZH_s@4+gP4CLZ~;2xMlU3=KojmV{tw0R6+k1 zUkZoxY=z7MIu;J<)e;t>tzS50n4|=g@x@XwXP}gMiK=4l5L!DofYRwmvzg--k<;i9 ze(vN6V1hs)Tm-KyfQlD|*mEwZfo7n9oqEWpE0eEk&P#M^;huov^z|vOkgch%5;USM z^DxrLme$hIOW~-lOthf7oM0pio>F?WO>R|L4*%vW=E0K|-3j@!W(;cTehd7h+~37B z+uK1vQ5TmTD44xiW1X6{ja0m#C%9GlJc+xm&K(jnz=dG%hCbR;3YiWZ1KXJW@<*?NVd6uw~Cynk6lqO#VWF%>D_;1Bv!T@q2Dy|v(c^^6WLDIS1*p%>g zq~W6haK}yWV?PO%6rS1p8i9>B1|yrw)Rj0sO6#Y#ROQZJNzL@}R+*4b0bob^C?Xs& z*Q3sw@|u_yT7p@N*E|yE_q$x^OR%lbLoyR^fEFxt+gyFi5Q886Zh=n?`<~-_@<#G;RWGGeALc@4%I++7{$ln_;=t>x1L7w&tpy zVP>c^9n@qjhyzXW6VJq!!$9?yQhz))>8N8x|H)GZ5Y8KFKaBG+0uw7A_`t@H4cys1 zm)Q;5jVhGsS)R2v$Jz7+Cw{}QvqtVX-%JKp#sUOqL9Mr<0hxK#kw^49nJ2Q5#^x&FsF_{DsyBOwuXG(IgE-#sFtnXFkbXV4^k)j0`eE+dXiLY2_vUk&Vc2w!#xTK*VE=}=``4&jbCH=?#! zO;z+`j`?KF|9_to#mO?tKh3MeEB&i^VG-HIf12M%;n4kQ9`Oa>6G{m}T3P>_WD4v5N-`x{ZNmYp{U4ywu8qKo1L`x>1Mx&dRdmzeh{@t{mv+%Z z^^7!ZOO65Yao=N>odh6#+9YYtc*$biN08`+=<8v;Ad{@R+l?>1DzRQ|EeEYw_I8|L zlmQSTS^HG?1{zU4F;PduY*b;6Yj8C}+TMU$jxSp=-zc{x@pa!w7I&Ud6@vcpj|=jv z!SFc@CTaK!5z{d*o;Pv1>6(#w<0vbko!)NlcP3E|~zW<;OBhvPxCJyF`Uo#y9EQ(QTldifMrjP#Mj2gPujyK2}sIMa}HIyS8 z$_md8Dd0?trju?{q=9FOjJYu~VsQdbbZ0+IRp1Rk%5PYW@)>XT_Jw3r=UAZ=babf4 z26PnS8!9rpEXTVjDz)Y}QH<-?P!EwlFFM&$1BXlPmpvG;OI!m7;HaN}s5k9tK_4>D zzqvRpQr)4N0kC+Wl<)cV{Q za>Q?#s+osK>rT~MCHD2zI;hX@TO@aMIXhOBWneoEhD>5SGXg8oCz^`L)M^8n`WfWp z5@0`iFrb2j{MMH&6ztyQSzRS!u`*iUDI_Yl-bz;YH`-6vj;;1JZe_Q-LmGsh;y@E&fn*``x7>vc7m5ltyW43e08VMHA-`R&R2i$=1T97#P zj7WWRfRUQvQ1B1qtY&(Xr}E=xJuu^v)-xjMm5Lt)_y8EEXGNwVPLK1td9#L>lr_~~ z?^!3UMUliy%K?iXn)y)rjBQkv`l&=;_RioJnOlKX^btp8VuJYO^|=LGFf4i=x(W&3 zFMY#ClGSAG(5X>(#?G~v?(wvfn4T_nH63`IuKAe+LqZsO(E_^2A<#de%*N?R1dw_o zqY5FHqpp>t4BS|CiL{&eXwzvcN?uxFP*Qw(+xKyn5k0+-mY{0m!u3VO3gJe>ZZVa{ z6rRR`PZESMo5rypHg6D1@mjn0j`I!M^O1Vna-5ln%|jrWGjvd%$kd-FYlW6FB`m|%b{uh{A%&}{v}S?3molA^(?tw3 z{drA7f)Cfw46`byAQMr-EQpCQd0oqLOZ&E+<>S7=ynY2i$#J>WgHuXUn}6L6M2>M1 zo2-E5^FD`LEPg3FE&Z)-AdldS_Jy2cr7oNsEUvOm(NoR*k+W z@W{tmY4Gw+bd~g+kg0FGNcE(0*8qwWVD>f>?+|I!;bB|2zkV>m!3c^QBYqmGZ6h3o zM|2CUE$cRU5H2XE8zP#;{vaVv!eE}!$4&9uXJZr*BHVlFbo;7vzVzqKE2Xy;XYO5m zGyT0COE#?kYY!W*l&o=Q7^ymaYIbSoCgUCF8vc3QxDDM#oUL-JgYeZMyutquA(pK? zUDXjOQh@F-FNKheTUfl1#XTmCmMd4z*Xt!wZo|wdo-_mBDmkgJB>8RIT$%Wzj=N{7 zZPc|bwDh#kg-n4qHk-TJc4CKm{%!zC67m{gY~mDKuby|)9BIv8xLfsO8QEp`Pn(QQ zMDyV;uHR-Sj%jFqXqsmYq*I_P2ZixUHoV{1q%EqG*oX@r71)D5=S7bM6egt+S5oCd zit}>CtEmZK#V^Wb-W2xYlA{!C?}{IB$SVtG(~UxcfXC2`NI^z)DzX*yi4rj$kHQI@ zuhN23s@FYqZJgRr+7kaaUy}6CsxEp2$TC5|wCtDdFdijPUE1w|Cb>bc_CL&i3_kqqp z-+LE_{_YrQ+n<=r)ZAN!Do`vbBM&R1kVZ&b^DQ6X81}DjL_e+3i-}oSFnBYq@p8fP z;&+&dH_)0WriIZGOMvl%V_D6BHQAWmg%!N+Yx!sahouS66ro+n@53MIsIcaedo!@(m|E;2fjS-EIao7D0Kv6G zC@gP=8Z`J6#`bH#Qh_;ALu_<)zvkFpk|aUd#w9mGv{JUrii&4jg3s`SJNG3dep zoY-ho(buT&x%rv$w#Yk4n3$C->SDU`2;X_bb-+N+bTTaqMxF)UjH z&p3~SKjt|_v0zDX-*d?pffXD5K&banowCH?BuCU6<5g3fOQRogNyXF^B!H2q1s3PC z=LJ+tgHknSAe?>$0DT#K$RZWm{%S3LZ^JQijgW@JF3Ej;<*8I*^r1&P6F38?ROy%S z{HJE1Dp?6=USSWpGf&mhK@B*iqUWR@vnfT~3HS%rQk1BcbkCrrl1^xb-;SF0t-04= z>NXv%|F%QimB{+vhAx@fUbq#7GT|6CpY{pEDHMS{!q#b$oO#cLKSoaS{JCM?vcn?$ zJ#Z0*!Zo5@*q+(3E0}3*v^`!?)FT_VT`N|oK_QvAi(*WzE4!|scQ14IFPVv zbG==j#5?Dq*uBxPKU4Vv2Rl4)g@|d;2&J?{Yfk=j=D*kY0tKj3G4t;G8h5ML+y#9g z5Zmzy{hnD!SsNcm*Fo2L&W=Cmdl|lnHAqp{yE+?iG^0P~x_%n{dK_68*tuo@yj?-k z^t}Fq0d0NbG5c!vx0I!;har7RaKgvy>$aWg9Zd*YG%W#k4$C9(%N&~Lca$-@&;bCQ z0I>qJtv_QNrM9&Z?wo$Xma~H#24%F7fGWm0xQm55O2tZG5V1D4etYr@1yS1P{gT(y z0DPbXKWdLk+#PzxPz-QHWcyV#!J%gfJNv_Q(E=7njJI?}sO74l-s_u%!@So{Bg`gI z%Y@e-A3}{|H_GTe2tL`>@7oQm+Q#sfw>!M!wR5p{>V1|EN$?paP9TIqIA4G@s0s%G zOdu)(DFj?~1{ZS^jf9n5XkatF5OSW`N|imr0ezv0&5Vven<0hiY*0*LZ2aoc1+>?4 zid7bn3454hbUL_1mY=_qD%@}e|L`3 z>Sx6_q$5LL6c=R}c+)}$xWPD)LKDgjNkp)RE0Y}%cY$(Zk(CcoJX3V9LZ=2*6BF!C zf@U!slCxrZsRWELAc%gY@Kle3@ttQeNqdgJX@Sf^prO|akP5*tOPzzO5&SLRg=9F^ zFlbQRBpo9FbMYsTjjbgyt7<5M63p=KZOO#4fK^1$3FBT(o67_eOtw<$KFSXd4x=aZ z%8F<04iKLR#=x)8slnez+0W8M5bd(b61^k|C#Q-$d(M@li9AYDU_ytfD=ls-nr#zr zsn=D~RTDxb*gE=cS~Cl@vuQi`HLbG>xQy9dC>XCcz`rK@%)`uCG8s>FB&agi=~1@j zweBXVZqMf3;wE776wQ{xmGSQ8wU7Gas{Ly{B^!{6D(7)F<1-^k)5jWB zOs7AYv0K_I?b|wxd}!VbD;**@94!M7;`7f3^{@}KN4I!n{DmTu>-Lm~;@@3IEa!_1 zTl4GSzQwSZrKBQG#bwHD#!Y8q4c0g2f@NjP(Fjp3ZI;#B3!&w+$3`UBil?bh)-jo5 zVMpV2D5EyJyN*#57CgIefllW4!GX!Q0N-ywfUz9Y|FSUsYq9y)?uwr6Kd_zb|1d!P z-{=AMf83A%Z}fm-U(5nMeD^z*C=Y)_!5X{7LQ;cxq;f?KB~21`9JrvxKB^FstBq^r zr>AKG^A+K)U*TxZ$@6v;j}O4k!S2G!l*mwxn$areu)zd)xcjaU;@x1TAFB1hK0>HH zBP710+b?cN%ooTp$B))a|GQy?j`FfyoroF%e(??i8&cT2(FY?wzdPdF;W*XHNJlQM zc7w}TFJ!Lgo7Bb``d%F`O+wDYe7q1@`iRZiGn`1##FG6c<7uzvm)#ORdJ%M^@+3oa zkbJaQ1N5jlXh(QBefFSkRTOL!i(VnydIutEi}D5%1xf{p-&=^=n}7V?1IynNKuW!v z)U|g8c`)Z z#l;9?3V(%I6H5g@7)`{3D8J$|meSlE(-5b7s$M0x;P^MSZDEH^GLjt%xhM0N$FPvX z5JoUQFKKw=o_`k?TsMttEx?3N#{1@v=e*WZr*qj170|v%zI9UsS6C^mDq+z#XbavsXzj87ou2IWt)nK<7eJL#r(gl2*ZJV6(gRVs%w#aI>L(!~|l zV2#AE?6QO27Ceh`JAQnvlHMef-qaPQ{7okcHm9sR^A~rruKncrzd$+ zq#rU-GmXR#RkN&CW(?P z$~8EA@C0$Ye8AbL`})_Etm~XD9DWCiD5{~H?6aJ+jk6qopW1a%6`Ie~?`hS-mDK!> zooHoez5+Vkvz7?eAySo%*Hc)$oxShp!X2>)j>-?SmWpldKrO2`2X8jS@QV8y3-8Lx zI47ivi=|T~ZwDU^)*g%Gho_+pxRdX)?d-1JH@{jW6HOz_tIe0zi{6+jDX)f$4TaC^ z`%k%p3tvMhJW3Pu$nZ%y=?(NmLYjBw3t$R?&f%B0tEZ*4v!|m_OGS*&^^LJ9L%mO@ zim39MX<9j6)zZu-pU5W}aL#p)M(yd=r3b@r`Rv?i8T0i#LvKcxS%M1X-23uF;0)P3 zB_ryj&M*3oubjWO$VF$WY^;lDzELV0tEWmlJ26TJLW(_KMhw2whNG$xgXk;j*@7%{ zkQq&q%kuN1ZS|+rRA&&oX+R%&y0* z8%`}dFjS@Ku&bqf<<+he6u%QS**&XvNh7OI1_GuuWj9DwZaS+sQ2qZ7U_lFR6cyR4 zCWnc$S5nVyFU`O`(Acle3Kv@`V2}5?XRcjZ^dFN9@Y1fv;xa}BlrDdF`>x9lsWh>1 z_pWo>Z|X-|>U6gwWmNHWcW+I*c6OmEGK--c&%p2Y) zdpAr67?e&O_|$92r5;Gsg_)t8KU}2*6Zk03KCOB2<<4PxL4qQ{HCFxhY?fu)u;Ggh zBdz`NmNBKL4`0gvYA#uHj#gVHa;}ez&|E3)jj@n9MAxvrMq@IV+YU5o)b&ZRa2VHd z#s3}P7N**7EDFa+dY@e7xo~yU%yFA}87?x`58`#7T_n0l|H3I110Eq5@=H5R2ANTF zNnA3W5NNx>+vUEmPygLaFho_OXvmHeQH&Ky;da=S2&J>=z^zqwpo2$SovvdB903FD z4(3k=e5$M5g|&lW1Ap|8tU2W3$knkAmrgZ#csLO``X191)nM5#Lg|$*>}_k9P>jg> z3Q=;aoic!XpL(I~PtC@uswHu7wc3){SZdS@lm^uHb_59;r$eXu?S7dWpYOMQbWP$A zD%h(#>lh81ru92}T-ni+?9 zaiS10m1H}MDU<>sQvA6xrq@^`WE@>$4i=P4F0#=(@%RNi9HR4?hRqQpAPKgCF084> zSC#rUH>w;tPgsW|zZ{ogvS}G4CEpEeO*mzLc15*EwmCa};vb%1Obu;*l7yS$-Syg) z8>vuz^w1WP0Z3u?30P(YPul;&E}jEkURdE-|H8dNovV5w5!SoH_3<~{$={61{ z_HHCYypVnUHH}lFx?K6*tU%u|`=!s9_;FMaFG9lKnTJlc*+8(U0?;C;tF$nIDV<11$8(wSu`mN@w7gvwPK}r zWKJD`c@2%ZW+vbzw;gjULyd#V8pW#&#D1#tUzM2*Ph`kCa$Juut>*WD-y&wpN9uh# z`GWMy+p0<2Qw$+idXMiJ`n>~J&!@tu3rB`(hTm$t@2OxB;-OX`9@2ODjzxtxhJ*P~ zMY#D<2xj0Mt5t)TO|>UhoG(9}FIJ(5CXk4bxKR3O8k{&;B6V(SE+QO&uWxXMBEbN< zl6ViGi-QaBt5?~A|9tD?x%4#yODKBLu04El5ov`_CnxvI&f)d?Be{vh$u;~t#bO?L zg;Kv*1pM>UBMPd7Wo!{GapIvh^+b&i9&Yl0QD4AI_~CZX5Sj=;LT;KAk8XOp{tc%( z$kd#qm_m3ULUqqn$WGcz`Gd2nZ`n9~%P?4K(djg0#ZmdkrI8HVR%SU4v0JLB(}I+? zF63%Xxo7Un#H&ze#FkhurzKeNHD1(h@^XY3LD8R9s*{2Z4;;JjJ}JT&89DAE#=~nT zm+xb*t7W+Zr05{|YEjnBjL|(h83W+y-8sBYokg@gWdeY!c=! zhFk+!kL72?I__k3uV_#ot}c$M&;-d!Ae&xC5=mpc=8!l^xZ!$|5q&K>I(rgtQBcd9 zV0^oJ`tqm{US;wHivcvXgD0v+cijH&V{9&^^ZE2gQxs&Oy8UfI3>Cy&@`xz1pha4R zG@ohye)QhO8pABU{|}qbmqe_C)aP30>oE_D7 z8Rz@EDfH+LMZb&0h#Q_h!ZE;F;9SJlCZrL>ZgPvl{Okahf`NL4gcpS~PX=EoEiZ47 zHMYKzVM$?sm#{x{moHB&yRd#vR#~MO1@Gy-iHBN-=BhOh#abqUeCAW98o0;%LoW7M@CF11|tLyjr}iFJEqqZAOD2Uny= z{s-6bjMRHr8`WwjRysHQS*7^*OTrul-5&8k0BHM2s2IO8x8R->Qodl1q;tm zeffq#K~-wDG3o|y*Ek@eeMk5q3i;;iq=XyevKZW`7sVVPBHXm`w7#$%NytGL<`+G@ zjWTZN;Zp|omfC6BjKoH!#rsOR@o$lDQGxB!Uz~V(E@LnhU#HSCFsq4^7P0qA$NH2eak}q#dk3ErHNcF&HD?t`%WcvNO=i)f}q9 zX|A(pJIb|UvY6`M8+$dSrKHPBl^DJ5J8ovXoza~%A$IpxH|4u%OCjBwO7~W{1tN~{ z@Xe!in;Ioj^S58Hir)wy*pc_`S6b5+tU=Lo?aicUAElpe z_=KEZ_SeceOB0m*oCcgtl&7{w(N>vv>!WY#dmIui)%p-`opEki_Anl$D`mXe7GbTB zX6XycO+Y9NxTKO8F?Z`8?B7qk#tK1!H2wAVVw8Cu4yJ)VJL$%pmjg}k5e%)V3nus! zwjB+gg00(C8cTrGDBmP*9R0i19s`N>G??V0UF4OU@{v8?To|eBLolOYKqYM=7(dips-l8Ub7+-77Qn7I_8q+)oxE28&1gr{`3l^)WkFKp(hvi)ru~pqEfreA0JcUe| zDEYm5)Oq8GleV7#hm8L7a4gG=&-cTlW}%Vhn#fK?hz`|TKVVOZKbwTsBRpbM^{so* zemckJMT;&**HE4CO=r_4f{0vF3OH_*Cs~|t`u;EkS+-`fovu_j!!dq(;<;P7ECr4) zztm#WvJ!&%k6!j%SgQ8ti-gHlEG+gS0Gc6L*Pqzh%ze# zUWaT03M_4n@X3V5NW!TDr9<;0F2C7+5`GTeg!-<*pe%eJ8qxv16%566w(Q{hv7J zPG4d>kGq2>lJ1Pwx!|{bpwErKy%I_NtlyE+Tr>2ZEc4aH`&H#a6HZcP1zM$puIPq; z)*WKgz%q8}7eZ2DsY5`iCxmrPs@gKioW=^EG&+7}jD@F$4L7iU6#;0bdU?{)k7vyBY_w6XL})}};=2We&B`gj^7ITcj|MPFvezWZX;i!< z)!XyK>|rO!``4{@fY(My5Aa#YHOY%nR#IMX_O}Fz@IBH#0E3Wi%#PQ+3820el7k_F zR))oi^)=_KjesfR*6_VVNXY$t0mbt42Vs6@qryodwyNeJ7eip7fpsP^L55}AU&8iI|rPs|p(RTV<=}Tz<358;T zJMvhyR~$dEg0@+WyPRO;*laNK<|P}(ex!+&!O{7=B2nV#`K@?1FnfxrFV zo+^%i)LQ?ao`GVGAHorK#D6exHe))G1h&9wY|#hWEeSHJ%eoc&?s+8R$1&6%;+EVw zu~V&=XQ1K=vfSy_)yjwo0GM0R*9)cjxrNjy3ZlOK-xr;0k;T!r9qD1VrjI0OjFDNW zv@``R88&9^2=UIMqU#W75Hzn3xeTu`U)z&DIS?u6!QacSb8uAR$q7AGEljg$Rd<$5 zkvr5o-jb@{eW>lxL3uRCnia^u9X0sT|NiNkVbC?MNN7*i&FGUc|aP4kTfwUpz5AuB-bbO}9-mQ;2}zxruCF334yPsGG$h^`4`P}Br(SrSU2 zTlr?W8^wW*)~8q5-;0j(nuNw%og@2|O_fXHe9#%_3}n`1!km``G?ZCyoofjte>5Du z#MCUwe1z8<(1jbyd3dqQq^S3e7LLtL+$HRzPG&0YF4)r5l_}mAB-0i54v0b`g1^#TA|_fQVbLX9v;4kVBDvEdDcyg1B}KNp zn`?Tj)|Q!H7nl!Ccwce{wDAVKG;B5oOG5g~&ux9lipHQY?TH3YO{%dse$hSKG;YKb zIft01X7u)DP1E(e51XjRj-YnV+onaIa$K%_d4;5Z(um-emeb#PFD*}%=%#jV5%oYO zbK2~8T)?WFm}&TDt-)aorR8Z z(t+Z1;6wHKpsW};)a*^_G=7c2nexNYbrs^1yn-sNRb>%M(MBQ zr%M_*h!;Ol1PRk&3-uO<35w_s(oq7H&`254tJpG)V?p3buJB@5==yUm1+(B}nlJZ~y z8(JV=2fdrLSrUgZ&WXqzl%{B$A8m8~;TCd;Usmjl+C~nqL!cCdEHa8>phIa~#^u^` z8Wo;IBnVmhd3wTbE!}PhBG+p7>5UYnnqItn#9kzUNM@_^7e=Kikn+_y=zw^X^%k}` zK7rO5mZ|a5d_Acv4XuJH>GRnIo&>``y7wU z#g<%oDnPP#Nj>}Gl9D%kyBPnTj)QlBLNggP?72Dr*V6$yqt4PZaP^8a9)-Z4DL`z6 zO~v(!#I~hXZW#Mp?8OYCMGs{>rB6@sN=1c3xjYu5?;4(E1X76Dz^^4qDUkXCHG;KO z2zex1IXlpY=6T~TFwMY(#bq9`Jk+4QVIl%jPBS1~gA!42=^;r5e|c%uaZu~LHQ5tj zSUCxRtha~kW3z-tlBcQM8rs*t1Yipotqhhlck#)jo*i|dI+C5;cSq8(`KR=QG^;vyJ z^(|U=^$Hui#_iLFQ^euF*+KKn)p?hNZj(8Mik+47YhaA6E6Mm!@} z{)8aWog$Kx1A@bhF&!DdK~N}uCL!D1shxjA_zpHByk+CKY7_Pt!$L&qXlZs`>76qLHUPD{%ykik-v{IAsIP!b@Z9dzTg%#wS9;9K4tz5|CfyC3$liJ#YFyps?3Y$!3A*B^--oaCJXZDwU* z1ZnX`%LicZG5N=dP4tu=Xw&84iO3g~75!H>XyS3Ly$}P)7-T)_U7!A4X^n`9)t&r$;A*08 z2@s!y_lc@IQpH|nfwq5=(NFwFsl}YJt-Z?1bb*^I|zV0Ij}FZ zIDlV`M&x8RBLZnmfsEO=EhcAg@+P6=?gI~v?MTc%U3#S`@|X?mY3px|mwQT`wx1D4 zmz|)tem%Z|Jx2JxKHsUR14`e*S#JFT4I(UrCK`09!Fx9#Y!<>*rk^SJ?xb2Ct^nv+^d95Afb@n0@`_8!@Fii{5l06bk?d2_C_c8wcL->;LRj|@{jI)M;wMSF-zHkK*xOzaV)h|oY& zb$=F%)*oCuZGqE}<|a}0FbJvta=#UksAwoC!hMc8_hk&_l50z@h`09_%x zBGjf=W{nTJ%WvNXe_zS0CL@wO<_;-(!Q%NumG{Up=(^)$kKgLUA=bHwdfD!Vd6gz; z#|p0k07vMJ530+ovd36w^voRHtrFF=K_rtyNj*4dR)x5VlP%2zG4IhRWS1=pwcg>* zU&*ZL7V}i^181n9Yq_whh16y8O3~Iwq*`%ZFCIfVlb!t zH4+r)+@43=2|1)n5G5r0F)295{v$PVMzCknhx&_Vf@t@KqNPuG}=# zQ36zqjX8P%AE9sdN<6izOnr01shQ#_AW^nnPc{keTpoq;!*NaNDPwuLxh@BYrFg`gQm@W`Ql z^B|`VsQnQ;<)wWao+Sym=v}|80RAt#t$*#H{@GSBF){r|1`@~r;F$hT9F~!u{(r^! z)U0XqdqWiQt46QycX33!?EZ0FLH8gztoSv6W`WJNM1ho|#E03t)^&P1 z359}-7lj@9eAwpJTKbwWgFNi+8@83G$bwO(B|^dNoUTdxu7tFv^ie!f|;_)=GF}O-m%)-D{<*R3cgV z`29=j%5S|-q7H7~hcBA#9EwCtq>D+K?;o1U;3;k^muB6;pTx+Ij;=ShmQkG|WE*?a zW{F#;5}qIfxXE|;0|7E0_hY9Fx8xDJiJqvMR86vSHP&rcYE5Pn2F!2Y&bGHNAUU0! zvwkx7lKqR~`|#)W15fqe7GXF`LaMMzLbn>8r=Dj_Xe06lC6kS&VJzjoQEnbQQUBbz9ac#SLPn;AlQD zkZ2ZrU$rsnsZ3lcpYQvv*O>{X#FFp_UR^cff?Lu^zNJdaFgkrwYCu!ZLh{1Yva+jK4$2-E){pZn)5G#knRV2Mnj9@$4$bIyXl7Y<2UeU3iD!IRidN zCv7)EzsZ=1Kh_rqZ=$BBAN+clR1Jwwf1E0yu$Cuqo#T=Ky+*4lLimt3-;k-4^ zqmGa5HGco%{gES1u|!(oinoADb5#r7f^4%^aY>G%$Wm<4Q}gQWv={&f6Re?rc#_O z!Y5}T93Y>GrP7os^b^b9|Jv)(C8)tQ_Mh_JRPDXFQ2iy8n0avBqq%fMTBRtm$#bdd zYSUQR*-)FAy(=52Ij(zXZniJ;I(zAtwK-H~B@V!4Tj@$>Y{e)-? zGqw;6WSw4V4L1ts4#87I1+KvP5HMDskgk4>cD4m{t|-h3=KUq+Tnd_2qoV*>pFF;M zWfbz5jdQ+(R&Bo99nQ+yY@ISyntLT;qY6@Xl!HeKo9E6n;jXQ6&F-@A2-9n(2?Py& zYdG&S`XyzBu5r@YEKS3_Uuv;oA3*pvxgRTVGYRN@A~g|Ou^$;Lg($dLv@heRRqF%K z(K9OcHBvbC^5@J9mPuFp;}IcB!jZ|?jDJXAmH|<1s)LXhOcc3n7sfuRHR~fS`IILg z0GY5!RKK4!i~1Ie1D~JAp}k~)Fy}80i6}v)ds0Qm6g*DHy76!-vi6G-NK!LeqY6BDof-+L z=nP2im{DN%Zb5o@)U;O?nQ{;U#zaOqt6FRX#EO`nOATI73YKfFdSv6kgFct5loiI; zLF7tlOJj^5f&2Ub^64m2lYRIDg=PODa#EmLCN6}V8;;c7Ire83m@EH)z$rE_>0NZ5 zYoGnHw1IwU= zSl%Tam|3xVp)`)Ip70%vEUtL ze&;8eT+Z;~is--?P!?_OEJB_@l2AuR$U70_)}6jn6IdpuUE*|Q_BtSx1N!)8|Fb)t zMvd4Ka@FfJ5102V7P?UwM>vHD`xHgdyk8PhDY4$l3w@v_C2ee~@s|1Pf2<{KDsMM5 z_%!fT8PeY z?|zh`xdE6~yD)%oqjXR&%8Mgr^ns49I**jb3{R9eoTmws1}VWwwTy0LT4G-LNf2^0 zrR$rqS=+WhL1voWKAau1fA*m%t`ZibA;Wgo{C+mdd6eE9v=+ok6R}3L+)HwII3zI~ z^AcvJq#zFS^T90KBtf7Xj3TyR2MZzU9fdC{pO)1 zF{lLFZjo6XRXBvV3f?Bv)z#tVjgj;#zFC|9!ulS9rXg%87KqK_Q93q$IIbc7(zz^w zgF)VB!zr4ZfXP8Bor5<|rBOuojA|O-QC1+(MhFZDEqxYLUHwnHifPpA+D{I(Qa!W{ zCv60MApS@DaVF$C?#TOw9NkXH8_MMi9&#MW5J_eZqr|}O=Eec`&-fXOI?6&jz#QqhD z=YNnnq9}glKw7#kC6<-8YvS2bQT?IoY+TaurlZS(WgqbRT>^z;#;tcciwy!T#TX|s zS?&gx2R?;Ry+DFk))B0?(NGL95r_B(D6q9NFR31oHZZJ0JDALNbfe=YUKsSEbiCeT zMZ$?eJn|Hp5VFY}3cM9=lNUj};DQqKJtZ;2sNhRvDQ-vbeY#J00z z!!>__fIb=x*GX%s`c;+A9GAU&x3kz%r$#tD;09jESkrQS_)ped1o5i*NPL>Xkph(D z^i>7#c_w&V*mzFnTFs^^g2JvvaA?8ZGf(1=Y6+GLs;tgPF45&68vH0_F45~1bUnlb za;U*=nMt@Py9ju$xwz&{8?%5&KlZxKt^E;~CludeM4un$U z(afvp%;8x&H_yT~f?hnGt`5yt&uGC6l<^1m8%B>r<0yG`;gul8#nH3r-H&?{4r#DI z6f8{K+yJu8OL6Tt4# zNZ-f;7(m0q(88I2=>p%G#T6WnO%KQ%(~cL|XmxuK%M1`wW3K?p>4T;KERO z>E5S%*@n@`B0?dlgsBDnz5u*a0=6@MHN|iD1gq=*Rez7fqfMIJ;216?x_D zmLr#mBjRBc*La)8-fpOsl5`wTvBlK_3{A%#hsFCoH?1EMCZ6*)8-BK(AVs^EpQMPT z*;Y?lmYt6mDf4}l@%MKJ7U>|Ii}Tnm{DxU47*}mB#VyvgWf6Gn?%jPFR}rr-*{O>G zHm3!XBc?lxU~cBy4*?!+u<;vtf(fXOGxTnw{v|Q<4wlY<-@a!x6ijj{nq|>@ z+O}=m*3-5*?P=S#ZQHhO8`HMCr!{SN-+uS~&bcSz?1*pw_e54jt@W&0wX!lR^OqU8 z8G-wptglu_{j?Yq`!DBMuY({r%6tdS`3@mI)S2j%rZzpk7Kb0eIh4e&jmfza`%UiS zC?wYy>CWbH!vdu`IhcE78K6ZCzR!GB?oMVJMGvgs3>l7KhnMmj1LHp>NUwAo(J=C% zg8%`^`&Wg@ME|G1FTOy+N^36v%MSeiY`cHifvjBred_it{@;l!-@^YWaiv)6r|Skg zvd>Cw-_P-7LpzE+$J^a8sSKM1Cu7?N&n(_KW@}4f#d69eXI~SB+7G%nxE~2hRZZh- z$E@Ix`X-F2wkEspV{YW%c)6PsFD?(($u(IXrKy{fn@G%eKhU*{H1d<|lCU5p85 z08|;XGXdY|>2F5G^yz5)UsTO^CcOrVlRRoNZ?0Z^Fu4HDMEgmy$?PcymmXXlQi?^* z3agRe`tizAhLSInS-G6t?!J|J1?_T?3}SEB&n*d@6Egl@Y_eICSzn3SFBo)oQvhOQ zeG2uU6)j$vKg6RBXH>!=EBT{v6**qSLL?&K^Bhp2= zdhMrGCa?D+`-9gY8!tk5uU^zlZx5$LsZ{ZlTMkA1RDtnEONU`5n)POtI@`vknpL9) zeFjcT$0Lh8e6vd1-4r9-A|VU zKyPp(^~;Jo^(`zq>Uiai)vFUb-y1rBHr3d1c*II+`OaF$hERL0;apXxHV-r#2C>&N zR=EwF0d_WVnouK05?OXHW!-nYY5C=PA$}B$Yug%BNGV5`Y<&lN=PI?18cntmzQQg{QtK6dIbSJw|YtJFIx`$Vrd9@4IPw``@San(N z+<}D=jZ9DsLdC*)G6D3M!|Cx;cc(2UtE`EpWXUFz5C-=g`_e>?^I`CuV1!+5RC+4& zYCkfSg{q7jh9wWt$hx8#fd#kK@@B~^bZ0y>YS10oC6&L|)LAUl@)IU`>yf1Ony$on zZ*b$a+V79gp=(aJm*W>}_hUP@b>WcgFRFic@N9)|4(J2HebDlr_f;#L zj&ZMC9k_G4JYH@O-;^)BAKx#$xJjHPGO5a`q;}~*Sw(Z+HJ8*4M%?3R*BM=c{V7_O zz!!n9$Rmon#7-Abb=kG4tSD$UQ*NsK;pmY(`fd0aRmy*iaFt!1poT1pg%@SmB3WoU ztwPvP9o3^E(88@$v`&UJN9t8XeN5z2m|q~>S+D^NMLIwh%(3?ik7pV>f93&Y{RL$F zD&OWSA-mZ?O4P;(#NfYY?|sW}9oO#rnK0Sl9_uOWH+95)!yH_W$jnv!X+^Eo@&i8J zO5z5Ye0mS;L-LvOw=_j)U>KH6)0%V1n7vQuGoym}H*w3>PsU#XNN=|Y39kip_x1MH zM;R|3v92xOxvVIR)T*cV3bmc0d=~$9vM$~Dnc*}Rb>@Ba0%eu>lD=iAlky;8d>jj0 zi-7 z!_!$izq5@X0pJL+ksu`7T?PXl)=-GKxm@rsYP`falDJ^*svm98>x*KtP&xY>@$#S2^e)VzYYvoy$gNmmum=@u1w z{3|M#QjmZi*+jlnR*sTnMRZH}tSq`aZ+hLh&svzw5h<`eB~GcYGTUnsY4+nTMw-Mx zL81x>7YtP*R5eKq7umBvP7itsTqi+;Xn_&wZ#RJhjAOx460f3=8mB&biFD(ESFTE6Ysb?Jq8h}F#?feOWStw zD>UYJ__Nw$j4@;k7OQd6!CV)!LZjhxp&CmZ7H;RqX@n7ce@UVn;DG61SSGL&@$km< z6P-mLx=@$J=N>$oVOc6pzrqJIlt9bQ-HUI>yR;@&vIC;XMg-=(Jw3 zVl*ypHqi?v4AQzct+h5b#ABIH<9@gxRxsa531G!E)IrE+b>^5EK0YwUyp!qf2 zWM)oy221-2&AQ4&B)DKu+Ij0LcQb3W$$lo3Pnf;rSKyUA$(Ad=@)&NE#| zssWq{D4T}bpX9Ys?y};B$ZC7}yn*l>i7fyGU1`7C`vQfZYp5y^Y9M3-XXK2+(Y!`C!VII9?eD` zxnQXiSu%!-Y~bNzcPMv*^1JqN@cCXco8Db$(9GET-II3vN&}E9DYP-Wg*m@Y zc|8z;e-*&3KpF_6Km&Wg^F~;LubsOHnG}`B6ECFlN9Em+Ba#AP#EbcJM@2P@CChPE z?%tNgCQQEBDg7x(gynFgKLbu>J>km`6`xs6(uMW*umqL~Ml`x>Ao9DPCGJB(fB`Ck zbO*wTlrIJh$C3!Jvi|`4VfeG!fLw@MUGf2OL}AnF=-(e2vVND#q?G?Y8G(MdO0E=c?y)zD}E!j%lUratz1i zRyWSqga5VE_jZPEGWo!Yi<$exKs&Ua3O4#9hqDK-+hAIvz7t8yaZ(q6u+9u)Ynp-4 z;Hf6?R=IL-_{6mJTobQ&5?OdMsW>2~zvnw|34Drmq~ zBj3K4I0E2At$x*$=mb{S$N_xdmb;OozltyeTEWF05aFrXBp5U=Ueo@#`Nrnny;Q-dwPQKEM#hO~#X#e^N_}B%J zTV<>{Xxn&L>pv;W{>6oX#V}wC{FG}qU>mk7A2i6-w?g5r7a6*o+n)&rRur4a3o4J{ z67dvs353C>a}AcrQE_Qj$)M{|o&3~fP=RS{lAD8rpbJIAb*l#xXDyWeWQ|6q8~gxTmm zb}_VoBV-eAis-M6c*I|W)6s=s#-w1SEh$V_n%qj#S1@K~l8DtP{PMh_ALI9Gg9dAP z#l&fRJ7D)|M03<_MAo2iKM4h(kojjaHSpou;A!_hqQ9-|qZ9?QxsbyYAUD^^x}11) zIoGIx=SZ}qMI6#Q)zXKkQ`MT%*qGkZ>rp+KT%TzQ7dXTLY?F9x#q#pdxLltdtO4|H zA`|)jQBGf!V{pX^4}ntjrR#vgvw%-LP**O6#kW%{5BBW&%mT6T)UKSID^iHxom*go z&(aK(h=>*pupkOZVQDr9-O%HBWO_jZnC)ouw;qV0pYI4ZSYpio&c^&N+93-Y=YJEP zm>HS=cMkHm@IT5yu2%mJHe^Tcxl_-xpx37c{Pn@*JE%X{-iZegiCz3xOw6HHDP92rWOu!3dWEoUUb!!t3Fa2qQzG zg!S{~`13?nQ zKBd9#0wp9Elq<`D816HTMJjxEmBV-=zko{d%#l320Nb}b1z)w;)@6xf=Rwi<)(`9k zfHa;B^b!ThG@)nZ#ea~2az*;>vFX8I4uR^TdaXkg!Hn!Zge8?ANp#Ss6w6Y5&SSPV zA7=cJS|dGX>7lFW;m6&D7kJ*r*mAhzLh#Jsq-JzWWE^0EwXv7X(&v3m#+*7!UFTFB z0JD~gm)w!9OX8;gYgQ8U8@135XyDCQop0JOEKM--&FW^0qN{QpyqN}-4{c#B)gXo| z<)YSJto!NoaqshruHy}COFdR+{v+Jy()(#=)2txdzD=AU!bI=4k;FvO9TiQ8+2tnD zxy8h5XUj{=wyS8vHI-L4duMyGLT${!e*I$@PVlQN4#{~QW3Fe@hFcRaiNFxi4RbNNUWjD7&a|}rw%lttzP9IUAlC@B@ zECZP;x1YN`E!7^%DkHS;$^9wK3GqC-$z>Qd?*7VLkOnkGh7dW>ca1y(B>F}n2d z0P=c#?l5IscWYe(S*R`P^&psE(aWaVD0X)qT8U70>J@)$1Zyw!S3wLhM>|lW1P$IE zpc;F+f|J3o&rcg7Z$p@ubwC=*LJ7he0Y#DS15&!}myBuw{vHe$cXM1Uu8n|i9r^iW zr#8PkA6ogcGwa40I7L0VCYnkJ$nQQBg|QKX0Z=MKsb3<>{`p;5Fb-dF?emNUR(Jj8 zIDe4~jY&9*gOJVE>*MMOqpk>lBwJnQrt`qF6a2$AvXnya(|2E^nJR7q^Rq*+XCd=6^k=dqs7{gcRJ(A>3bPUw}; zHZ*5FPuw!!;Ly2UKL~32FYOTWg6XaWVruZy(XZxnVScx%&|S!aA9p_BZ)LPDU>>l{ zT){YQJB23|o7MsP^!hE*oL_udGp1_xNTe`6h?ml3Sd7}5nXtY5hkMka{;)AT@9;I2 zWuQ>#Z>N}&IN&vlooI761qW?UokMk6yE-^#(y+#D*6&Z@gS$vfr#~!b&dWBO+oTJ? zOaD5mu1F?>%X-D(K;mie`{S?tzN0{x({qL60?Ol`h) zm1#C#qGbapMVlmJ6-2`+vTQxs$MIkU1GmvkYtOH(9=_J?(eHRxX-tY;WDOPPDV?ju z2t5<69oYk=FLqIw8Q)!&f4d~nKsaEzC}mP)vzN+pWZ`8qYFj+8wx#f<{o~m?_6gK0 zSOx%oMYBe!E^a8BQQI+w<}(GR#`SJ>e&aJQzC^ zkMiwHqpyd^Ye-~@&$-|o#1;yX%@QQ=m(wJXsQB(nGDl?zDm0GA>CX?G-5`dTj6yLd zo~OM0Bf$k3xumi(9I`^OW@#KFS!UkIUZh4^1-5&ttHhv`4! zAZGuQ|ImW|o&T^KKczxz5Ai|%Q>tJ&Mp?0xk0pk{EWBk&B8g_g`7Yo4vegL$R78R> z`+y}|4w0^^nPC%WHSOJh0klx%%k)dz3S3}@)T0anlMnWu0XPwrDnvCQUx%xW05T?C zC5y164v>a)cgM5(4)p1Z`OefQhO{Ptj^o4+p$fQXxO)@&1x3=Is8R$v9z}{g%@LSs z#+p8?LP~W^+~MQP^}_JVm~ou?_Z)FCX(23(wI}OGnbkORRE9VQIJV+$X z3}q0UAb}Q%de~z_w&)9(o0JSHQL)FPEP_od<-xGkW4*RT^&8zTUaywVYe1Sv7>FX3 zJ;kd=#hDXd*7h?sOv3-qsI`nng7NO2bo65^nU?CCgDXKI>v)-=Vm+mzHSMyQr>zTZ zODD2-xX%Y?kBI!nR?jCg#d08fOdt#`3e@`raJ)5PYGtQR{Tp~ZZ}L(@6?*0ES7cD` zNIm-mVQ9{|L%1&fB=mm8ljuJRMD+o2$X>q-8)jr7RREMwG}-uesp*WOxe!Luu6l#>25NR=-Xd6G)BV$r3T=jid{Sr% zEN}tRIn-bCtrV-Gpu_7b?N3S@s z?7F1~Iu&zhE@@8CVp$96)WDa{k!7}3;)v|k4xeqDU!1@8Jx5whYHg$4mYcG@V3Ed? zXsnM~XYEt~Bt^^}F;t+r^|TA-viZdegj4bx-DmsT@LLbD4SZewYn+vWB4^$gg;(SIyM=x1z;;(_T`hP|~kVvqLEw=DFYpmV%l zyu7NV(QPosl=yp|-5mmP^q?qo2*?O##njF6VK9@EudMp&c6o{BN0$Z*nP82R?03dQ zKhN?ipJ_T`D=Ab`&mHoK2J%iNHF~E{qVu63OEm8{4pDw9gL^Vw&U>#_KNg?VvVOWi z&x&!4L6ry1*tTxkR9;ihv;~kfXwbVF>lAwQZfyH|gcxT?tX2E${kHFYHSF}+R`IV% z!UVp$@pzw1u7-`#Ths;A=gTVk@>#Ac?NIsTdoy76z zqOzs8@#S<7>(UIqV=0kSdCpW#7y~E{o%+MDz%eZ;afj z3V2yFcUb%mRf4vpzae5RS=lR;%AH0P7WNX>!r5AHT!Vu*q3qbXLc}!~i_mWa76en? z_Ef~15%5gSjx}A>qfj_XsIQ?WxK^v@XQiB90h7io#jJs;eZDs2!zx!1nLXb2+n~tb zl4Zk=HBIF0?ca|QG({rUJ)_;I@pweHn?kv!e%*c$toP-+=dh`|^LvSRu_MV^*zqFM z7W5#y#54pp*5QrpPQN1W+;S=XRf=_E3w*iH!#OW~Z{WhkC%!m47QOpbKDo8Sw8<+a z%GN<$aboDrtq6|=tmkno`SQxU#`VY7G^YudFGs?W%qM2gFX^vMp!oR8e*SL^St$db zuo9dPc>e;Q8nrhDB-k59f0HNxhRDHVw$pyWOz3z}dP`LJ{F1v&9}>9qa}+Ey0z${8 zEIW0wlx2qb7~kM0P-duj+Po8kz(`uUTMfB7#@!m(d*4GNG*3T4-bw#mMb)mfQq_s` zst>wf5Mb&Ey%>)fx;Co$2ofm|5!Zs=p{XdGJ%ogvVAAb zog`iy8PaU%cMB!KoJ!G*eWT5hjM85Gd`);`f3S=4P zvRSs4@s1;5i`mej{~j};>cB<)IFXxBnm7mHyG4P2SEi(!a7UwKS8vTWfy*F&dPO|F^&A2Ok|cw-TYaB-gP7n@(HFrxp;9T zO!6`HBubE6$Tx>$^~Hz|q?==s#w++#K~tLKNV8g8jW!;j3G)y?E#c=A=x*YM;a8DV zahf$-ZCnInNO=W@6an0X7&uRdoG^wk2By)iXBOesRzw%HO0yW)CM-eOqJN4bL)Kso zOyk{z;uuE|UC_h76HtDA3z!}PBnB~sS2bn22^YRwTF}c^w38svdGsykiL@HX@M&H8 zW(ro)lfX1D{jx=uORC9Q(7(IiuV*Cu&w<2;bP-2KMgN%(9t4Sv2fjEGcWc=go*s~f zz{1Z~6b?MYz!4G_^awd3jc;2)NRR~4=kR~ufMZy^m{=XsCHs-mv zs}R2Dh24|TULszzb?w{_S8^YH{ycG`9>i6KUQ47l_PiX#MdS~caO?+cKCUj=7qFJ4 z3e>;bnEY2vFf$V)^Z(nJF#o$FV&?zoh&cHh(EM$_|Fbcnn z>+Eb;ckbs!{#w_i^(Kwc`sk{5#|FrTBZg~z;^0&fB;fKES?fPNIB1C4)(zW-AUU`0 zJFvP5ei+@w(yvwz_ARd~rn7rCXvqNuk5*prlK zf044eMly!Qn!&}J-L7)hN06LsVd2jliTj_3?-WER1pR(rbX>`tsCG{KTV>S%5n8Ou z2}itNeI^r2=0NxhbTvV_4uhl~M>&(-83<4VKz!xxXzwa9h3gE<{fY6$qQ^a0LM8`{ z6X;wKFejaKyfRY`9Umwm`}>S>-PIl8RP&Cel5$V9eaJu{%qu5FN0^3`dwv@CA^Mg8a$>u-1IFef^2ioFgWrBD2KC&>@vC9wUww9;^8p^uI)FRafcA3CuRwtOo zD%v@VP{zAu;fC_!`H?_xP%|nVA3sPHeVpZf^CLI~dQ&$Daf|Q>QvXqg2+G@?#B=(K zDVeK>)Gm=gAR=Dz*+b^c+cYZwR`{|>unRKo>O7Ai2E3G1{D25Opp`ifYEK7W#Ko_< z!#FpJt2lM*C=z`M#1ppvLFm9j0^c{W3P{tcuPvbiH7S!Kc5+zG%Nz&a6xUnJ<5^&d zKyHP$km3y<_~3-0?hW=tHB$-`Xv=kvlElhC>Q=mg!GC**}q^N6wr_f&inNzxA&!=~D)Z7*sSVP5w*l)q&A_^|{boI)4y~T=M)P;tuAv=Z4oXXy)%lzhkVExM7yjku^Eb(&N=qdCPL`utvvQlxWx_d%J zb0=k#G0-aWI2(;|1RVxkapo!`#UD?sp|&o9-qRj(b4~PXsw(#9-B5%LFXS&Lih3M5 zPP_hwTmS6(0+XT18RR<`hDLS3hwM!Y?N7&(q0+;glX)a;R?Epv(6bRrqO)7}YRuI> z6~pr_#WcaGMhIa9)2g)xtEr7#Oc4FUkb`D=TYSYd*rmVAx1ys=5B$J_P7kian;1Wr z(;YzFSxW^eg-d;Y+^nK^b43)&S`&WZ7FgqBCG#b%Bp!G%$SfyO=-)CdRaS}U#RpW9 z7!PNLsG2`9hC?{{s`Jtx8G%P$)?z3)W-u^1mPcgJMYlEK)|EEy z|HvlDi+p8uJN-hjE9i$azBF%%8|Xf7w6fj_0redoOj1#>zwvR8(PCK}%%}kX>&Pft z@1jEUv(GKO6!kBnvqgk2UTY1m_ZUrYMcSOCSb5RYme;0bH^Htz{QSIuXJAa^ck~`# zxa=VG`1{pD^VLQ7XXDe|GDH_YIinnTroA@3F?Vms#beaxvvsNL=0Wg=fM~O}GXU{Q z&k>~9q~JaR$INF^zWGVn`Gey_Wm@D+RbXi-c0ExX?D9AR=eNYwU*h45>X{K&n8}_E zUcSE}c^zGK&Jo)MK{>EplbPl4!`|6(lT>k`wMyH^*{92H zuvu{2cs<>%tEWrKV&6{Q|Kd&k4H$B8RNv)^&u4|*vQy~MnEnjh=>>9w&Q$$3>h)hL z^Z(lYoc~QkWM*XfciwT9|HwNYt@53T!;bi!iDPdjpn^}TYMYYnffr|Eo)wiue|}S zAx7{nXubY2*R>k+V9=WG#YO;J%~SdBIT(3gWT+7ocq&Ml5U=2~^3cE48k(%oM<~se zYQ~tH8Yuwn>8q;-+t56}@O42CsyE_WC6iB?kswg&p;(x*NJG*|65uLi{<@4w)8gQh zH$vWxg5I6yGIuZTM?E)@mPYG%zX!T+rTOS1=b#E108{oW$NQ`SXrc1!JLxPuO?-gu1g% zu?Z@*X7@<~KO-WLI=yOrIl5M0Rce)0eOOZ{XT*q_l_8Vkv0^a_eCH5mUOT6S)gw_l zvDhFYfI7pGWeu!`uvD31MUwjan_WkKK+)B`PgD1P3%bi1raW}Hx%^&fZ$`>Yw6lC^ zLV(S0aXmMpl>0`3_V)xUmpAr;!&!)0Ph%(b;gw<_@^=}@#Pje_kd$*=Z_&OCigKI| zs^5hX+5QyOv2ykB2^g=Ms(J3eG39{p50qd&^g_EN2wUqj{0@($rpvN^ZWo#et)f`) z=(nBHBV1J$!f8)U4ch-Ox5>gcU?sq<3+))S_sBV#-e7QoK&?}|2&VNv3_#m1$2jT| z|7j&QzuP8YIZV;t)TN*7Fd?=ijW`f33xT)-5O7 z{|KC9`QISZ@3s6NflTRQgkS;$QG>3p)w>QnzFkr3>U`K~m;mEzLJ^9|V10z;uTZr_ z1I%arko0&~61sH<*t%=Sdp-U8I>gbCI*IlQeta@nyueEQ1Gt@I0cKO5ArOcO)12&X3=(s_m0ygelk z;hOu{{yjd|NdW2NhUVd|7Q`f{%=$ZGb8JNglb9F(saZbkM|j^J>}pa2j_Dp zcoU1qm1HN2mb{7~VfFFrLx;kFfcP<;?0fN<^1)nL(fLENb5Nf$$=OKlC|fgn2WNg< zZ0`FwqCV%{=`!=}LxlYaCBt4RoE#IYWA);7{3N`w;ikW01QZL~9990yZ@Tv8+UNF7 zgn5|!t5t)e)<#H`Dx>{_SCV3UWKE7UADck+By;28@Rz5HJKs_b%0kEE;H-M8ucdBo zcX#{1g^WeMb7fZg=f~qL$}f_g=SQ1`o*tjK$@@nF&Vd&(3vR=dWm7FDtx>@Z{uV92 z2=$i5nva*q~x>axfU7k;g2CWcs{QU}~3jzt)Y)@k<0JCkp#ErwbI9w}zauooqbSx1DaU>n5d9r!61Sg?KrDz1Z9hBCcS1TJ^7*UdXip{Pc zDp+&#=<2#rPTo8MxW|#9pD`wc1(X|u?A6?nOCrpmOMr0LbN!zZIql@bWCnZ;_CqpQ z-1JSZcZ0mq0Rva%Q94o7E%I;lvOg;mMBL>6iZd%fw-_7o=;1yd#JGnTA6g<|+9!Wl z@T&rs0^$^qic0;sH-}p{WCNm`FNyHZxUrl(ACJ+%mtEIG3VDucq;~iP?s*30N|cpa zcDZ%LD_lA?c=_nx8Z=XR!ZE|szuJA*r!~ofWG2rq7s(}~51T(^Hi+ziY_6_cK61Wm zaZi67c*QeRjV7Q&KR(=+x=uq}BW}=c7`g zbA_S_A-u}JuNyM%y>F^<#-625EXA@Rz7n8c9PD>L{RqZ(Z02N zXL`l5hl8>2t8^;$G2eTe4j~*yTa9N>Os;KYTu3LKI|&hqKhF(J_(rbvY4Rg~=MrLj z`EGRdvqsYfegjyzWS5T82@o%drI=SQ@Yvt5Ze2?j|NOz=^?S-f7RL~Ciqsp9~ zTeg0^+|g!I=p4N-4Vt_cEtz!g;m0gGo=?UsdJGt8etVJ_>!>-DyJl;jDM@b|NhJVN znHJ6U8iSpb2MNaD_K$C7s>|qc=w`pezMIITR&yL`L7gD5iv6}q(^l6^(Z=sn&zn-u7hFBw4cMnobcK^)!XC{Jfi(>o}gE7X6y!_-7P1&f6 zzd`tp;$e_M1Xd=~=W5!ZfytjgBsa3o-)(JrUJ9JYt}o zzCm3L`k2drA!d<3sGfMVV!5jg4@gHjCJ4^o2n6h9dnz1aLl!GgroFRIB3aO*xP}}T z^PtIWP>l@dzj?^|@io$Zcz=B@pS*Ktq5y_*!UD3p{3^ts?3cHk8&EgOD`6xg(_YOx z?88Kv508ruODBSz?@>z6Po+mSz2_yq6~ZMBs$^x96Df=@E`e6edURhpq3gCHlX?Ua z{pic$qDYwqWH_qA*sU|gDmvr1#*|BRq>g~(vgcR0C1h6ta<2r)Wa6fZI&NQXtChA1 z;vA<8EoK}<~1$9Fi%o9b3`oW;|&GMA62oR-j!i^ux ze%ar3vD7E9PP-L~6)^Hv@UXjTANZBcaY4WmWm^zf{CFo694GF2-?*d{tq6}I5!b6F zy00Nz(@uyFk?%kzQ_`PcinSqyH7y-r$QQ6?x zTKY$80K43Eqlhm8rv7DXjCciJ+l2=-HI0QLd{7!xGf7j@I^HsL$%P4$Q>g(v0%4@D zdolwxrE-WLtrc~8Qd5T?mgtEt`BGOIO&M@1zk=Lf5(EpmP=fyS>+QKKQ%QU`VLYcL zd@Mw0tl_11TU$Hco2Vi9G3O6sMOoWS3ONqY)sMw^ff$Y%cCe?EWJxm5-2812g6XLD zv>1s1M&RNesN`a-JuY&(Cv&v)yyCEQwK0yzQ%Ez^=ea~TVane>c^g5P+!2Mj<_OBL z1L}qB!r8Y%Q`A1bYs;cfq8}S>JZ%W;Q6j0|39rM0UACV4@bYA0p(*08yjO5iyCnSL zHivHQZ5+YihTn_iExR3eOJ3Cph!F}!*`7%_x1bBOq&-E-fG=r zyyC}gE_ay`^b~y$!8Cz+$0IN7vSs9H^N6rfx`c-ZbznBf2gRx=F%=2HPmtsC7CU}) zd06{Sc%*aSggEUH;Gs$CmaKoe19HrV<&*ZlZbcr(krpllLNjRQqUOhk<&JGg2vu;e z3Ern6!+Zf}i>H8lX{hCArp_8Q4x_6=X&z@r)`qL3urEl1OgE;+K8xbSQR6P21U1Ut z(Y?YyuT|_GN#5D#{%PQFXP7lBAj67Ro*_UWDJ@+)nUi_V51Al4^eUv#&x9A2xhjP5 zPWa5C8Jb_#DzY@nU~AWjUnIk!1*4pg0S_Z&G$}>4#zQ}L{tCAXPDZ$H{HJZF`?~^x zJl&G!Al4AXVPh%ZhHV6*6D$rgUpRGjANIZ(3hh;t53PW2!vz@V%_SaUjcfcpnMRvm zcHEvy*v=Zrg#>w=IwZc@XD)}jy7X#aOO!P(SM|7j&FOQt7}n)_q*Or@Tv!=m^@71% zoM??|v}oDFyHRGKnLS&b4K_;NsfJKZFbeb{ zut+EBuVXOH!m)^yDg-J@lRV@7Q|2P}3!)&(RUd;688g-6W&(p83SW1snfi)mZX~p8 z|BAqP)`+4%pb%O>Ldk8AO*njDm`{>oymmuM{-Wzz3bc2$C?cJ^M&C2gB36$^_meIFH{ieSl! z7%SW4MHQdnWTJ_&;ui$x$e}EAaCFhu#wm;~uy)|Ngr7I!I6(OKa1S&Kv)n-)N?q|* z&n&EP{aT=|(9->QNI<8H_z)9X9)w|0YTk`_q2;66EyH5h5bKc8`ytK5SQteP=ItQj zO8@NtMyg(KRTL^>?wvg>$SA#HvgczvDXTlLAgoEmS$Vu64JOIORE4Nbo!B@H_Agf|}MsgA#Qsz}~Vjy-Sc7vd9^FKzP zqxL;=$Kp!2$Hw6Dy^e%FVu2K3)M5SwHPik0x_J#Ym2nKeNNwk_nP~))IlumXK4$RK zhwFR4?M3)VF+V!ScU0%`UQO1ay!1$6?lU4&U_BPul09eh!ZGO|)l=X4otJ|i3^X|l zG6g6^$st}YkSG7@%CkUKomYAw!Xm@dyK+W7stcv0>X#Xw8lj#|R0HQkFYZMxRqIfq z6pR%`YeYO7bkHIS?OlkHeC;GwI4>JP4;}sY${p1SHiedWlZ1gc>C| zd9|<9BciEl4RO}g98n_XPza&5A@9T3#{_FcLd!8j-o$#u6piMO%+IPjeBB1b%ey9sK2J` z{R=llD5&6#$Ai_o)|-#_6n!&OvYe$)vp^Gaj<=w67i&m-FH#v_x4^Q2a;upNY}5e~l2Th322QCyrm!NOs2)OFLPl8JV<`(`DKW zFLOiS(*RRdW1h0DA@|^8jPcn(h&lmc$=Mrv4l{%zD;sDFSA>P`&l3wrtJe6xU#%=i zq{X1Ta;oM4kB=dhoLGw>2%;X;6NxbK0%i|X;tpnI-49HB-H*?@X7N{mZufKZNo_?a z^rIz-@_|I1L;0v2S7Zn#ViG~Z!VgUCWky`b*lfkqamsn%AwHK0&HwRQVVhAssm97e z&XoFaHP%z#EkrTSo~$2>a*l??{P3ZrCW*|?G$89=CKGNYIZ)AsjXLp{3Bea1fj}L$ zJu6{^r>jsTVp^uGFF-s0*RxntCMsZ&h-#eA5F#|+enG+yegwvx6hUiW%jFQ_pR={0Q-9PpA4Wb49 z8<)wy{2>3hi&$CyUzuBGMz(+0O86Ne|;wOUV;9}1+|7sm}p4P0qCJ~F+Y z?@UrCNX7S~Uo*>r>KyFfAzs8Dm~$~m%+U^Xw?$zU4tC#Y+~+sOXHLW@te4z1?$-^_ zRi%ZQL!VvBh%qC{@8UFT0CM(>DhPu8yUEOaW=U#h6yLAokE7W6jl1iS>v|q!YE|m* z4dAEc?UVlubcz)-!H}(OPba?ICmi~S*mrJid{>#yt|UI-_mkh^d4hLrA$xXzeE8)#>Uzke zr#&XG!OY?Ac;6XW7Tx&X+|1w^S1h~6#ki?EHbYc1b^gSGt+tTLQc+83zlvzC$5!^- zOn14_!d-o)@QB=E^+P{u=!_}QxFK)y`brXsn28aOa!;6eyXY3MzX-4glRRs(48BDN zCtYC*mqko2svB-1Mh4#h*;#w>n{>{%JChC<0p^Gm#s$GEe4y##;2b8tq&7%NL_NR; zeI@qD>cxG8ybQ#)e)h_z^|ebY`Hn?gY49lgu;*Ik$fILZPu zh$J);ShN!f}fRG^$geu}5Tl1Ik}z)y(XKeb8G?tG$e=#G@m6>-R=SCvO=NW)~^N_o{e=Zoa&QNOi z(WqFC*C=1(6SShiRvS<<-#56JjsuQDP=(kF@eG{1wvu9;at3mb@5sibT#NZ`U-bzA z5>zFD{&ips%G~0=WqojWHsR|*AgCh-$UxEO+M;$jjSh>Awk(IhQn;`R zV~{eEB9g8dvZRAn4^3ui!UuK}^VuB{-tu282H{I{O)O=vw!tJ`)5^;W3J4j+OuU;6 z9mIQ>llyI~pSkDmI7=*;`26xJ`G)ia^c4GpcEdO1@mOFP{xY4>G`xbMiq&zVB{@nN z8EJn+^Oi_9N-Of1P$^%3YZD1;3cK+A)v7skj~}j`9Ccthp$xh^kRv``NNdEjF7*q_ zFqcw0(p&)x%DQN{8Qp3qn4}S**JQyI&A*(StBhMm^`Mpd&3_&rsd!c50?Bl-OBE1^ zjWy5+7y;fsA`z8PeAYms3;?{=*j#FLu*b!5tHfJEd?0#`pu)7yIe{$+*nAYLN~toL z3KR*OwHs!Zii-#_11i@7>vG-Jv6_Spib&b;xr+Z>S&S{U3eyuX#|N9N6vIS=(iY3I z7CaLQ5lp}tJGtZo97h-2rD7CNv$f8C1VdG_1sjlcnRR4bs>S@cL~EOBav_)8t8UHK zLqmOM{}d4oze9SU(2LyIt9)(GsrHe=1*5jBSx0JD>5YTP*&stb4)9n?9m4=?%`Y$E zZ>2w=(Q#_EA|@;AHGn9wqM@={%Gt4C6c}q+xF}w)l5Re5a3*;1ip0k}+IvE&p>?3& zV6!`ep;I#OEKV;j9iAES5Ho=lnm@+ zX3mk%EH4zA<`zCR!e4J2cxcFP7m}KZOOS5BB~G)V)MzcE!cWauFBN^B=o?gSfV68c z*y4P2vOB-dXpP3PGi&oBVLj?dG|}vpIF8*sHIuYf8Lwv`g2MH=`T_3Zwyx07pDGn> z%YItfO;v3?7V{gn5a#YRH7Vw`o%#PT_D(^9F54Dv*|u%lwr$(C?dq~^SC?(uc9(6t zZtr#OiMtbeK21+w+i8mfAFeJl~4v+2F@*w%u!=EQDvm#a`o65hRSnqQ&WbvoDMo$ zr@euoLW`C?mZKrh)fv5FtT3@`gS!y*lJe@+Xighz3PF|C*G;CJ{a%*ckV-u@LU`ki zhItv(o%=!eXo$SPWfZ9}lD~w9Wf+dFnsN-QqAT2K~k9~>~oQvyIA(!IA z<%!aIIT{W6e0vHQ?rd@trH9EjR+TOZ<2)AGJ%RuktC*)u=;ht4)G`KM)~9$OE|!E~ zi7QwXPfA~Y9Qh`fyCFArw8^Y@NDrRUVjgVxEH|~+sD;kO_h=hHz|kWoQ{*J60$oXr~&k-`&MI)Du+NNEqeh{^1}EE zh*_1)854IDio&VGy2Tm-b%MQxRHnr{`=euU2s+PyU^N#njFa_7iW|2u!?@K^syI_p zG66Uuj0G#Ps~-ux6l`fbex`8y!5GpxoGKxHU%xgy2#h@{!)*Kk)j~0r&z-SYNoq0k zBBV%!tJg922OCicNO^|w;u>J+ePq56^KII$nTwb}R1vK=tLFL*xiLuX4xam#47i^b zCUfq(VAtub&H~M4NyBe$FEyRdX^c;AK>Rd?`ec|k z@3g$~lsu)}agU$`4oc;kH}yfcTZ_#s3v};aT7D_L;^R9hsSe1yReu?xC&Z0hJTKR( z`k&q&lF*|mrZ(bFbg$BMvIOThr08I*Cjp$PBnPBWkc$DX^21^19L}YRjg=;fhu^F*iyP8W)0`h$eNi7V#Q0(Zn`brY_sUzX( z$2x&gk%|%ea7DGmXJskBCdf-s2jy{GUOT7~vZ%enS1Ai`3VvnUvWU)c9~f^OLkd^@ z!i%3QN)uUUdA#09y7ST>>LMqEgdh-OL@~JmeY}-2GRo7p8?XGGe8)+(GWKD282&RB zqewFgosuwfmCIsJr)L3^n}h}~m85ns^Z5(PGFcsqSGJP3B&X497al{g+lwYtesIG3 zk!qRJ3hF&G99e1+TUA!Qi_*AY(sqO=OtG9u`YBi6aZ<5%38{Ws1- znjVjkeO8}$d}$Li3U9D}_s0=UhsV$FPimk2_svI|LY?7Wgk5c3oB{*GjTln?H4`3> zcJmyVBdx2e%^fc3O{MLVqUW~=V7_ztTgTbAua5}y7e-qAgs0arJpA=5?9Bt>xO>G9 zpCQ0JzV4qOd438-ss`l#2(+7M)32z_iPN9@4(Ffmhla=vbTTUHB}hf9Pn~7iN6T_g z7ZLqlt(nb4=cYd8v{m|9ej^eu&D=Ntk{9K6!P=}t47oEN#O`buKa4)(Mv6&Mtl!%k zhfHy5!5_6?nvX03S*C?mNo6Czk3As$D;vLI&G5qgp;+)tHcA6=YQ1IT1280!AnAkk z!HbLX158}N3s{LI13z+tz-4S*q5md!)0KAv%9S>SEVh##5K!Vn&}c(ec#DPO#f9Rw zCi*Vm&LAiVjx2Zn&I@ya#N3&*7>JyG@W3H3kXce{?B88 zSnzd}Kq0HR3zP`)FkOrS|9KZM=(+st7D3NlqD(+QsoYdgwClRb9ZJMaN>XDHGk9f3 zZd4FY@}%?$Rqti{i-X5NYhKV|+xg{SHz55CYKEB($U#JFt*&P|zM~7g!o$)TZ8G~9dL2#ib$r>`YdRY_ zR$WY zE_1$yx0Abyni;CTff!#F2h;xO;fC=Q_Pdk+<7{dys_3!z&Fis@Qmr{vztr8lBMEbP zxwu-I8!9FzWZuR1+1Sz1mDla5m_=2$>*slU8NP@e-QIp@@1otY#5wf$#a&+6kJoXP z7)dVOOceX7J^!yVe@Sf&JICwaSxbg4cGxswybRZ)M%y*5o%9FJCxawL_3J)6*Dn^v z^&6r4#&?f%c1^bD3OIOLwjzrt4_C)^n>A`zaDQ~t+x88~oDWD?>f3A|WFj4)UUn|URCwx&_|~Y+ock{ zl1PK)vMKp|e!lOargzC?EuuD$2**_q(9Ap4=%(7{AGg;ZU-*p{(eTle?%H9WilKU5 z?Kzuc4EJqyo05q}7SQw3!jFz~d0F`!R*&>XLG7cT+~%#SY^tS9jEk@3t|x@1chrUx z^Uy{;vz|jOERROequp3P3Zs`*MIKIMJLlY*hHcLqP)%OkR_t4EbJcng@6l`B`ryZ3-EYFMJtOHbn+Q6{^#+j^5jj!F5cOQKPT@Y(mQWQ8&4- zeiJG*Aj^fFk#P&^-^wOi^O0!QO7oa%;_w^9L7TY?hBe;*A9( zP#n{=w@=eJMsW#Xjj=YuV$!-6_x~ImlW{@mqYz9AgsOs?Q=z8nXS)K)M@Z!2SGa7T zELdYygQ>S$3cHAmu6uZxyjs)HNO~Afg5pORFyWWivn5v1Xu?jf=4uS=Tw-jGju}2s zs{yw*R|f>i*!LkUMT7ykq@+bLo@$MYti$`V!6Mi>zVnzfQ{{YuWCKDl_2zlZ0n^}Q zsRk$ z4YmMxoA@22qHArkNGWx7M}Gb`iz4t23Hc#>CsztCY4*+Jh+e%rkVnY)3Agsn93s&G zqTJ~uw?PJwC7ere0`$!EKHw*(spU+c6E-CZI7r6g1yuApvippF!3cyjEnjUzoa@Cw z@|@;Kjgsk6g8*7l>qdm?LWGfEktubXOEG#GZqc^6@hERlp7{yimE~FUhTKL|vZc6G zL_#!V#9$wYapMpZ5qz1FT@EE8_d{w*B>3~!;`+mOuu;B`Zg6c&pU6S2RrT@SXkEhi zUG$sJj*o#HC>WIp6`^O^p%4md08})HTel78`Z2pk2Q@JJK+x4wYADJ+cui-?V+2Uo z#8w`l_%LOQB^tzJ%kgwszr>jctO%%!%0JrD2*P{~$3%42lOLVG>uf}U`8q;WRDqoe ziVBXNE*p_V<@(QZL&?{-z=U|10z=-D!7-%74`{SI3Uz4(IaPNT<8y-YQUvaNT&*%Z zac%PyV>p+`L*T@660%KNHv7%vgIU&G3J-R}(juWK3@Badpj&#^@gCiSNeTyU_2>_pA_<4_oxp)JiZ6YM4;U7Xz#TzgQi(iM&@POMEMnbyq<6S9O@+E5m! z`{{b30SF-kB@y$Vd83TfEY8gvNtTE^tMpB<5_c+^m3J;*qQoQuYNptljcdxk)UJ z-{|Fg(SfyxJvsW%ouxFMTgfKBE+zre38PXdIF<7sIZEgeO6T}u5cBMR)okw!E35a0+97elF;}3AlqYV+6DXY<$ayMXM#VYK0fCjMN}qNi=*!>D&VRpSK&e; zG9h6gPuI<^q!6}DE{F2W@0*9`MwoyB69cvxmmQqvyF}QC@Q6O&2|?X9f-sr)6>&^e z%B{?vL2?&-n5?W^koxKhdIrk+hqB4g7${O2zGN zD1%@6j?`pi-0RE;z@=hlm@%6GEP;*ya{EU@As}YHua*N45Ip^892zrNeBHr!my7u~ zs3drhNn^0luf<5e5v60lYB{=ZO{IXAOpKgn7r+M1(VA5q?LlXR58Ur_z7d?vQBYJ9 zKUW)b*^z7jimo7?#c`u$BizS}W%usvADGR;c(^RqT#KzLA@P&6g9h`Dpcd=dB;X=V_3v=gMBz@vR61VMMN>3^EH?M8^m@%DFSIX*KW(h6|K~HCRwg(`Q zPLP15Dl3%T5X}L7pN1{%tB0{`aRK)?o5ES_u$bWWG|B~EZaMETOs{~D+cYhQayluY zH%IS|%QgMw3oR+?CQFI;+Dx<_*`+^I(E{;G>%VbLsB#G5vm+7~q!gsdu)9cdy2n?> zd9^YogP^a!&I~#I=jO%A@AWfq))I$ny8T*pJ;7no!9q~;hi8ty#FXe;CN=JK zVPn>i=(E*=hbo%{5jpdsIF< z)QKaLSToD!hQY1$M7K0JU`Rt}KXQ+H-tG z+2}(51dx@Xc;wk7U+m3uKV7bGA9T&O={CurHG$_w)Jt0Slp8|49wyU}J&-o7u#&rO zxmma7t|axn$8HGP#Q>$=|L1^6;_~4mFS`ePW8*R02pBFtR~qYK-y3oS;jSgFtHU=l zL?G;`R}n}CbsJZ`N_}IzV{6ZFwdI5#*PJ_-m!pye#WR3(qUi*_ae2E+kK{>{g~tf@ zFwvSz!gcSCEf*rC)to<+a`ffg7r&1+AKK+7G_6>36 zF9+Yh4G}w|FW7w`9(-)6 z7L%Poa`dNJwU+%(c~;!EMAVVPjb24(-!R~%Qt!vbuK^(YV1bkJ-?F`NZ+yav*y#O; zI}#OX+d8_i|HB{}82y%Q+i0+xEyksW571m4+p|E%>%CfIJ}C=js|ba_64EVa=2fVZ zR*b>+`EXKiXa!eogZ`)3G(Tc=-8ai5a_Q4%zHv`bXXgsOcEN}c#oMNHVo|1kW9C6x zODkn$yJsR%RAetN)?jE-^QYXkgTpn<2il{83;G@%@vNh}cuT#KnSUuA4PC_)!cvx5 zuNGN$I%oywI7Cc;3zseS1F>r@^7L{0zqtxr!6c#57LDIKe6=Q zUZr%hDQ1v+w=k1Hczrp2a!3e)4Z6~U2_F5k=7~d$yrR;Q*J+;=G3I$P1`6SvG)G{9 z`F>1^;+(hj=@KO)26Xiw^{bQk3*|? zL_By(bzr~%A5L}T=L}_5;&mfAxR|aK=#Ntlg1hsO7`R+Fwb3S`=n^S?R#o1Nd_R0v zWaZuy{bW#qfhxVQjBgXMN2K%a?u`4m$yYdS_-`QbZz7YQI^G(zqD{5Dlwv<7?lI#< zzZN_3@S~2LU;gfHth^uapC9^2P?rJ!c02ID_JF^wT-pCWe*oLR`2*PgPyT=yO5>xgHFk8Or>^sG~oF$V5 z`YRV5jbY^6OiiS_x_w_?S5q9xCUk>VF+$F4UL8(MCuKBVK75yL4@EhixZ+FMvU9s^ z*xdI@F*glU$zAt4&c8YF(?cHKDPmaBX9&lc zpNm0bvZhO;GRr0I>-OcLi`s9$ua9|inSvLioeLPV(f6FWdC!z_%=bz&O)8@IeHi^{ z!hW|XGv6X&3&PhH57*RP%<;o5`_X$107GSkwX)~A22I!5H&*GDCrida6VsP#_^cn^ zw>?cHD{5{q@xUDvpB&RYxx-q@uTqvREblU0sf9C(6VC}4Wv*rk3hHR7u1=4AQD_(r zmPz3`u!>^VWQFA>a3(lg_;Iooaj9iS$oZC0dwv+fe7a$F9fjZA#+xfTRg7SqWz$R# zhI;}o-$n_OZB=u5THddZGFDJ@?|jA}>VWvP-7l<_51GDstMn#(l;Pd};NRTT*!#D& z|2VX!4{`(gOlHtf?V;(`_TtjWz~jC_K*PoN4Qranwpq6%$wlq4eFd&09NliYGV`*( z6NT#&gXF4{fgzBvWxLPBw7LrmI~Zja@8x||a9%OYl^z-xge<1&B zW>#?hBMVG~SRa3qAUhdyJvDBsci!!k1tNG#%HouD5}U7Vq{Bv1h|{&%fHK)V9|G){ z8~&vhH|~gz-NqR};H=qZ8&;a75(Cu7+VW%d31}&la#6O}F%f4{_xWy`7@3@{zHN)P z$fMeM#cI!R89t3st==b?G{73GEU?)pxY!gD4(7V-`h`-RwadYlHD>&th-$+YoMZ;% zJptm6y;1RIMisA#k|_7h1sK5u8N;g2OhnNx07}x)maq7HRf9E@!%)Fe0l=otti=Lg z+73pbz!8~)N2C}uWNBWVtzMCa0qfPCkZk7YMcNDjQam;}{2P?|+wCVobBIuXBtjcM zS`Xbsd;SP%ebbSLYOI844`!GRb*=KeqJ%pcj_@(Xh$P^nE_0(N`m<6beudFl5Wczc z2utG$mdh$uF<@~R%E7N4NGFJ4YEs>Ani6ux&(57&H#<%Abu>DA)PpQD4D^L^TkxjI18G=Yq8mmVP$+T5@Xz+!=wmHzxE7SKS7 zfB;2hZQ>>#YRe!T(d&lomq4$2BV;MxtItDHz5g$NKXNXlg|uZqmbW5Det+eJ!{RY- z2VfjqL?zPl$vgg#-vb17oP(llnR5$FpQv`5s@%g4PPLfY$gUiw_&VZ!{-NplsHF@A z=T(hJ_muuhc8w180sf(v#D=jY`SBcAWmElRL)PE|_17{AI3A~gh*u<$`2u~~!#dY0 zSoqf-6tvk79JsMbX{@Yepf7j?Ls;`1wB^P$8G)ps}w#ZtHCvmLj|ed2H_9&EWz z4kcQzlxmC%tA2{9VaAOQmHWflU!1TIP8&Fw`S$s%KB>zZHrD$=lpzHE*Dupc*Vz6R zP{&JhdN^}Tgm`Ofx&~YJPmb(wfilxmpdy`DjxU?nO{*EDsczhped2qr5;vavn1v0` zN~dTR4|o-}OKq(s;UK$mIOu-bG-P~JtNkZFJuse5ZJgcV68e4cd{77CKy)7Ph4^6U zJfL8Y^QE;juN^xuw2)q6dUq*=5hU_2sgy${M+1^iiV&yUiv3Hc+i#IFsqZN0`EIxo zrmj-GUu@~KKo8C*=A!+&s{EiJ6oIvFFg-QDYEgILzYum&(FbKp14w)6);rFEo}?8( zjh)LQMg)3NCOySHU)N$~DD!`LA|=iH0HZA+(`;S8zvoq#e=}ogKyZX}Q-TNG{E`Z! z*Or8F!X`xl0yaN;T(iWJSNwL++6$?TGGv@Sgzh;c_t>i@^7F0Dp94l#9J#PYtTMMh{Xq zT#eqv3Nly1JVDxjHX=&XF=8eHC{@+p-re@4YDVgw`7enu3)clo^) zOpP?hw$IdM9R4Mb&#z3CWVZVWPr^|4wct$7Kq5%Q(BsYJg?{gjDyp{IPG6pyJh3SX4qwendyqf&b?y>-q}Aq@3sT8$sp zJDh9CpSU^ha3lj}`pG0~q@rE?oqPzU`M~HpPk3#Z=&(OOuX|zbd`b6Sh1jXd^rCW^ zA!g*|o91h-63mAcp7=6*u0(4% z1Oc!k*~WGgA13=@q(X9t01F+-Id3gaQxOsiQFWUJ)LEi5iqG@6JaKQA(J&oq{yC@K zd#O;vz2z*w+rEO=AE5C($&wW40>akaZ;{9Xe9$mp617Y_?XhHA&HK>pMZa^37sqhj zflZ=m%WWh|^RN7n6@DGhDK7&X4n`DAS7Zt_nBkWF;5d7Zym8ofg`BOa3O-?P&y=&6 zcS_WfTarsq-Zk`HomvQ{hi)ANp0)l==}U0T1=6c|ZA_r%+Dp0~y9^leTHo2zUSaNF zMaDFeYC+SHf!<$!P^M-|6Z3M8N;IW0aGjMi%wY8E0%eH4lz~Kv_Bj7tc_$}TV7~cH zvCd(3e7W)D#TPJe`j)`|hlcM+Hf^35ia$E(o;wb9(b8`Mb=CDe83(E;nvVH7CZ8sNJp>R5~Zo;~c&A_9U?|^t-S!`}+{kcurKr>o9U2Q|m8{OR_xGaiY4)SVJr zir|Mj&1XK>Hp*jJ09|H`6GXg=srKbDUbQwRvsAV@J$7=&0x!xcG_35EUi%3xD^7PJ ze@G@prT!q$9xcvrs3x@tIa7Kgda@O1r?)Og*yW@~znmxXdQ8vU$R`4oGEgAS%)ryl z!X2mdaA`#OuvyqRwMV(GJ3LxOz?#m~Q0J+vrO|x~k{eyb!2hAzGV+1kTknt)^uCUa z`9_j0T<&w=kvXUc{{)rknpb^9PJxGye89&VlUG72(4=-_du2R};XJx;vs+vhzmEuI z2;_WpzeiS{}e&M#3>%x>$A9JBWr%T%#|0Cmg@5paK|ylAfmu z!1ez_Np(a8Xv9*X@g= z; zTQQKIo?KZB#8Q)&_|m}Iq|eb;vVIrc7R$WeFpkW(P7q05yPp;O{XWy4+BdY*xj;?s zXcC?j;#c*!K49lBodhPjckez z+_lSST_}Ry9FGKfDL@@T_SV+@d!5(r@ajL&{6Apjt4Y`YB9#9TzyGAs**X3Tt;P1g z#I64>3TOX6b>WTC*mm0#gX>vUp4x`%L>zoOVmLVzN?0b@Y#W!_*uIYR7L;!K{hOqt z5M|YOs>OTLd>x+oGr^{Q`|uD12ZjM-7Z_|VjwTXR`qcjG$B5a3Q+C~!72(oNfLd)V zgp*b$yIz;E4O4?yAK&bGRC%rKuk?1UaOc zZ1$Q+151+Q#Bo-?IbWs>vFU*b#w5Srm*G9GH@6r6N5FD{LZp(87P>G0&!#}uls1n( z-0SAqhy45}KgU3+j0Bev#;b6~@Cs>Ai|;X2Bj<(n%b6G@bj)swl5w`*WY)JJbP6);RjMFQmTh zYZMmLK(MQK^PTLkbGHG`pI?)4kA(X&#a$h<=+k0b#+si!wkllXwfNoiAx01I!Efq$ zlGGR1YK#mq^z^GtDs3WDFL0`0J>zd zDiBBJe4XjBba68vEkvZorc8tK2ca6?pu#0VVFfIL;F=lqX`K=l9CXNCL;o`YGB>v2@vyBOJB18k4Z0><|+y z{SVnK@}?k75*^#X#VHY?4MFhco+JRjhYCT4R*U?6OT7FpPJ-(x1KK_) z6*O|pId^xB+=g*s2j3cBuRm(NZPaM|IqdG<`_AZ zU_$qpAq^ZwJimV%(1ytYm%LgIHJerND-}lo-V!4ns;c2vfz<6QNl~E0T0j&Tg;ytG zE)17Y$$_R>wu)=XmpPiXv*flg3Q?*y+O;Le;9Vk$0Iy3-S*|7J?>7}jJK=&W z7MC~FATHNoB=`_<4SfVOxi)hYvuF8qlAxVqEv;zrBc5g_$DXtfGo<5?k0#o~by~?g zDG@@&Y#sgjdn1f_bU$!zVFAj7s0K=M6?CxHF_m@+O}JK^cyb|p2NFTC4CQVv?4fri z;wHhwRItRSiqZJO4kLO7TEyk;wK8bcZMF(Z-4gO{8qhT-t4k`9ds>VHuWp52NVNw+ zh_Js5_C#DN4gwv?bF}bR*1k$P>xS4u!7JPy5bB4^Cs|$NW6f1ex51c%b!fexz#%!L zoTpZa7q6ElX;e=R!>hiosNGZNcA=;%ZsESvb{c8lh`-xRTr78-9&SQotyy}yw)N7x zd*2`eM;vGYwELIdowDH(m+eEFh96y2h8W-Mtr>N`%=Bb;8&>@$hkUEPLk|4CSRo8x z`V3X}Hw3(ax{^m9H{QFQ2aDwydnQ%Bti60O>c;VlOw@pa_3^%}+a*KmLT0`PgjP4# zo#1WXJvn~9T$eqA>BTD0pF{Hdu++Cn8%83#y7^Qc$AoaBIGwGv%-eV2$*ec6pTQ@7 zM6!5O!fVv5r$eJSN=)J2vK1`DJa@!HXXr{Xkc}VgMst6APL-Kn5067!*aBiIir#xY zI66ArjNV%}kR!MMGkcswS@n=(3%8u>(^**we4P@mq4rjqkAcF7tyr9(h?*5^Mjscm zErZyYq1W?x^3D&kN*@W8Din4uOrP@r(ZwozNmlQ1PY8mpyShW@r(+;1Q2) z^IfVpUUNaif1|dx01X8f+BQ>y<{X6dDzFgZ()bc6mq31^QjlbEfLjJn zqPT>YQu{Cmux6=>G4@=n$v5Nf596)qNhkY^gW2znSIM378cUvb*@+_Ei9bR8tU4WTjs65%L2_gkjEHCz?P+bq513XFj za2kH)155D=Hxu>)+`FI3_0;#K9;iq*G&j+6fvWTaL|8PrAoC&_2Suw@w)5+UF@1wM zY-+p85_&sJ@|vmluJzs9f8O{)HENLcmg8il(m0q@*-8^}pT|^QiyB$3-E{8aHlGeW zFAq%$meUXCkStjAF};G8H`puqw7=i3_k{sYtonnDLD$KH&DW!-P`eS3l=bBMVx{g) zKUnIHVJ$L&pR-=+y{E~hy>GRJ^3ba${EOb_Wy48pl=7BXk(Q*`$TfJ2(Ty^0oR7ck zRiJ+UntEzZsf>i#LJKGG!8_GAkE{eE-Ki)ja40?bo0Q!Q_ z3IGt^5hGOFLB?L-@lI5f#1lg8nW|<=&9ZQW*=AOw2eHKVJj)dlS1*{PDlmn6KNPwL zuyv!m`0$sh<#sB$d7B(FlnYjN-~CNJ=GLUyK3;4-_p-{8q6^*Q3B#_|h$?#?Q~} zry3gk)%gjo!7$7BZt?Zv-WCRo6nTy#mZkG`=*#_X#dpPnk~;2HmBjOIRI;419+1eC zUsUm>+X2p;fT^s3z{)2f0wv|X!@J7!@XQo|K^lCzfC?(o#l51rANUGAS+e!w0MAem z<);blE{d-vtMChXx?LHl{N>K~)IS^-P8QJ~G_qxb5H$`q-t1sor-c~s@k z5{*8sHY(Zvn{j1HjLoghu61TS1-TA#uvK}*EctjlPSrGjZ9+^uBzqcy*J?pUV95ol z`2Ng-^X>eXXD8Wq7DCEi>Ub+EOqq#Na`{^RY@_H$cHuR@nn`=vAUs1Nw97K}p?n4} zF)6@RhJ_5pV+$3>Eb?X*y~-KV6k>_SDuzGLl3aq(5{7)KMUL$%;wZg7ZrrBkbj1(n zpGi+aEzSuP-;yiWb9u6)0*>sc3gXO_CAkxJJHT*f+anL7|FC<&J}U;pfsY%|caelovDHY-IV_v7Z_G5aO=e+*fS~nD_b^;j#tH#X#Tq zR%{GhGFi@nwsAKG?}ZXoNczJv?LuZ6un4z0ju3FCklXa}dlQ-p4-mGwO5?U6&WTet za@XFnmmw;MU8S-ic+FXb_9b#Sc+WVk(FV+uQDrG&BpV5e9cua5KuQ*O(|>W~iV5R@ zd}tsnC^h5Ay9@EsKycD($Chyy;GqRjAk1YVpQ@F|ff5!ar5>Egm4|~8k~jR%h!vZn zVj=ARoeo}a+Vki@J~tGExUrqQb0J?E3{ohS`JYkcV%vyRzBa{EJr?1CmC3mPJ|wTX zE4eF~qTZ1^d00iGJ{TIPTL z|92(O>})uNaUotBtOnR{^Ws9h)mU|`ql-BT_||N5T*|Qj455W6tyBjI-zEO8ScIh1 zHR11u_|#yFxGrmQPV7&!^Ty7J(?Nn4`*KC1vJCks|DEaNj|2GNy5mug4$stnp~e{_BlM6L(~- z@e-tJmWC-D>ra!=;k4K8ET8l-g7Npi(x5Y2Sc_6Cqn1pu$fSK*gbsx|djg8>kIc?p zbe3h|gN#JhgT9}S?}PgD{r>VLtD15}=!(t}-P`8pNn|~p2AjUz>*QHg>-gsl2N8X` z%3tmKW@+b=n$~oIyGq2YP!uvD)BlqwLCEyG?GK$hY*mYN%VQ)<1}f)|20c$zn&0NK zzRzM9auIN1lXVv65mYKwh9#}Z5`XWDWTi{Sotl)3tI@0PvX~kr%nyc~qS#20 zrFsHpx(f#bgwvg*M50rM1F8S4zM5<2^Ov7G2jA20+RWjvkC2uMnUk==IEo};U>qef z>Kxi2@p%yIOLe&hQ?}eEVY>=-Bt$oj4iX1BW1iJHYnNI23g?J!F`!T$Q<7F#R|5Nlp~W( zMlV`edvl!tB+uS3ie)`bSI?CMwfZ);Gex(K9}IO*O2rxCtnGi!BX!yO2$8X=IGcYu zta412s_tSgA~mkGnYQW~#Ft|oN+!HsE#<70Fwd8b#MN@-{&}2v&qM!vA6*h=g4(Tl z)31G#_;g;3fnA}MU5(REy*1gYTgX@g@x6@(ngoFkvcPJ4ZhRhHaXvwqw1aEj!f(Lw zC=q3}9VSL{-7${IF|Hwznz#Byr-E1uZ{Dc51p5))fNbo&&uf+8Y;D-g1{f zi4|WGdkksCfw|^9Aw(7HK@?3X5I_-Y8Oc~oY7iC>feO}*Q1`cEc_Gx3iYBsEEG6hO zHeY9Z(2Nol%9RN}0iCT?Dzr5mT8Hx?f7H{9xmK>ye?6pQior$w*}JTGnRIE< zzF`~V?Iq=AT3VnG_ut3LngMuDEG_hkt}fpH+ca98-!$AvIOA_|;O`3VSv!7y72Cf| zGtvBh;OO!BBhQ<_VUdMS4{i4l-NN`Uu}QuU&1Jm$3tF0u*J(K9y(lutwoivVe2U%!55z3PT>0?q; zE-QEwe(8pf3eQ*m%FptB@9*9GweK^zYQ9wO7F}Z4kI~Z8PU1p1u- zBlwMD&8Da{9*BGvJjaO^QjG{MmoHwxOapNg%IyHe3zcIiSe{HwK36n{i58Mg3!g0z zCuFYC2&us1K;(*);d)x%@e20v|+qH?;g*x6PW)8D+vK4-SGT7`vZ)S+w0}o;?;Cl0R!`RUpdA&8dX&^? zlK=D%+dP>_+{s(W4sX{-{L~LDSv9dxVPsQU856@ryFjyk#r_mP++m`n_#c+1w4>7L z6;tITvrv59;%i=1i6WRqCXQW1nTiDSTo1ThaLLBeN`eLL1zz^ZB^nS1$IXN%XF)Xc zSIGyKv5g>~;@+klykre7GE3pZgxqlVr3Z!ug(heh+nBHmq0sJa#fX*Am&Qm!mXlm z8`XMf@dg*b!SA~0^6RBq{zpa|&c#LyuR1H92@r$H47uNcVZrk<)Lg#aq8(JyIL=xi z;`{}PcLNJSj~LTk2Y?LZHG)UuagZu;)Y$QsZh0QF#UPLLk`Pmz=9W}-*d*psi#=6x z*^~EOvPxC&Ix@Aj_+x2>6Qf*(aq5wVLDEHMkAX>DuS#i8iBmQBr8kl*Xqd$D5hSVx zi`>HQl#a2Wz@=fORNMnUZAV}DZSeYGy+eXrCB?q=CC3rihUHY3)C%4y#S7e!p2c;5 zB(Qq!)g{@ojq;3m<2fH|9c81vMkmj+CV&%V8%hjQYU~&hPg|?KwFXwtn$|)-x3h76WUbWtginPD!ln) zG3hGkP#eJk-a(h)_X?$4^Oh`c(@;H^<9P3!!LMv0PTeQ98XaM)sNmfM$NuvS1-Aub70!fyP z$`Z<`xpLGoRe8_vXhmju3->;v+q85PchoVMJf6-(3i)c~3bjcxyMpN{;y13EpA~B} z>GSmq5Cgn%Bj6oAA7*(3vIwEa*e*&{8L(arFp{4|73}Esm+ftOt7#$XBGAYma-5J2 zfHnfnoFsWgC{NbE-Ujs}Qi)C{O>@;zh#zaPry*!*;E#Ee&;&X|v_V(-*2rZUkFryE z5g3R;ow@J1<1@v;gdU#}@8d1SwmB-}m)Zu?yYw-SHPr1UT$ds@yi8R*bwpIc=DQ(q zY}UOf>i5am9PZvvdJwuH*G(1FY%PnbSQS%TNsx#5!ob5w713@Teq{VjxKiC7^J_1w z!%Oo_4$~{+IgX;k-E~o-;`l#8cV4%s-jEA;nh!>*OPqK<7F+NfX~jX20Bcq0?ehRF zMw;-E++L~KGL1u89;f98onjZhfJdP~nR6FiEPqiN2TLBcaIrfdZMqcvC!ermN5D^6p|ec_2kS*#VS#$3YcJt+sLthAV z?Cj}SzT>9z?VsfMPZ>_(F}uAU(3%aX`f>_ptOQ5!%o3pN@PX~SYGvUyg{ZPcyO~6c zVY=FS)xN`2wx-DW2WKJeA`%4?()_O49*PJ4;Dp(bNA&}Leu@5G7vZQC+~<{YxFYDm z^Ot1F>dSH_kG$YLO@t5t+*v3BSq0CBE?fsu8WbNrcqizBE`&&w=>MOj`0V273&4dML*Ol79!HxKB^J+@zc`vICrT`VJ6B;WT~>$)!awSc zq=O$ICkiZq|C%4S%}tCYFmW@9x9UBIIS-NeG4t!6AAltt^co8zJ^$O8_rEP`8QD1g z%iqfRAO8M-j>7*=%yIswto8q&)}%4*w8??gb3y5#?O-*8@DpI)P(rd(ZyZ-VZIhA& zOgqoU&UA!$cK0gy(lOfr8-PHWATy!uo&NtY_KrceMBSEX*|u%lwr#uWlx>`{ZQD3y z+qP}nu2)~b*L^$U-H7f#`^SnMD>E`@PK-6@7*fSBXTpA4r?$@QkK9s50Z1SJzB@c| ze&u7F^Yg7$E@)fG08DJR=S&NF%m zhnpG_9WPSk5i%P4n_-@Tz_6o~wq(L6Rx7;KMpMK_148RdsqmUm&{tTyq0f=9$v9=z zFsX1wldf;K;Z|PJ3G3gU#4bQTHg2gNrBc+;T1?lm3)-WRTlyg^;T#h6Y!!E?bBrmg zRW%qToBv!$KHf>P#b86sIi*+6O$e*?j*U~%R`68c?{_;Tbcr}&5pgmtM}R=e84U%v zhIN=E-F#uNn{|B23@MRT!8z&o3N1#vp*?(zsJNpxNyPJ+&80a2t;yVe@N85S))iz7 zhWy2Z8e}E>CaTU+92b%`1!Q`#Kp~a58m4Mhzr1&%8R<7H7oUIB?ZCi6pJH6!RP8 zni;P;=bR3X z@**{`Y6Xq!fpn)uv!|(CJa5OK^}AoM5x`#REWA2zb36~*yB9xiwzbp7w>fLbKvU*O zmI`Y2^z8_l2W}x&e5Eql1sH&Bu93|PBgqc*U01u7g9!= z8?|vJI`YihFscHDQWlI;Rt1t?R?$V4e+Ugj?hh>L{FAZ0x6e7p%@9B&_y7rrCHL)6l znVPL!dt->ue$3F!us+0!%pGX&hICq8SOTSxI-mr?8elg4xy{{5R$>l>qRWL)vDZPw_mj52Jx z%-dI1@xMxruFOc2k>k_uvqQR?MZQ!P>kKP(3rGF4-?u31;HFqR>*w(#T88Rvy5NYfgtT2C(jePt=|8=sL*4XmGsE`Y zEn9uyP|Z*=4bD#rJEj(z&5bL>nNL{Ofn)Mk0d@~mHT;;t<~1JIdqec5l#Fftv1X0JWpI%RuEifkBU ze2)ZoValF1j~s&C`~G%%%Rbg}v;F``X2_hI?tE_^vuzC=a09~Y_JXyo=YS0dA84_N zYCMM6GaE=>pl<@ujhAm>J`{qFr#E)?e4ZQ56RDXkw5jumHh_{r8nVibjV0qwYcqh`|KjrvvnMTO(Ug6EBVe$xZ#wbRY-j-hHn_HjIZoh}ISRnQ1CSK* zk~B*Ddg9UnI;Y(QJskrW*X<`#q_BzHhsbOlio$$!_> zaJEpNngeb<>e?3z@{uXPl49;?w`K^!mcIp}B}}(cgqfZngtnKA3}}BjdKRG(qfUej z(BVSN0zxZ_gG5+hvmFsD0FAg$6-n-5nKl+thmdmrO92%5x|17Cyg*Kl~1sZZ; zw#|ij5g3$k3*&nEcL^oPBvKB~@?1zzqVaSvzvOp8BQgf}cj20i3WRctfW-nUAb@QB zwdwbkED4v#WlG>DFZ?YZFgi0{!gSe>p9BPzqcyOx@(C#{j5_lhE>eE?U|9+)+<=A^ zY$CH<%$csnmgQBbrX)zI`Q0OcOctA~!}ibb6_uko+Ph{Ees5vI-oru<9ZIOcG>~I) zF&M2o-JOMkW5h=3)w*gA)7 z*Ro6j%6-6cpJN;@hRuH;LV+w$$CKj1X`_&t6wxJROB!T{>@cU{2b zl+|%dkUT%lXLb-5j%OIkAVEpEKQe!yQ>wUP%4*7j0xKCb`m*ZM%Vp{djC9 zbw%|g>>}OLN>E{am9nf)C|Z3>N;mcn=o<i2Sl?cBa zAg;3XoDP16PzlhMmBELYWAK6WtZfas@zot|NrRjbNVO&q_&jtbM9bU(0qoFg7WRJM zTU)-QBhuy8z_?wE3L1l6S6T)XG2#7w)O}@Qy5ftm(5Q0OG<5I50Y_92ZEYG_9Q#0u zU{IL-e#*1RoZ4iKgiY|sgW~McW*kXF46jlO1TRo{9&Q2UOUZgaFP_ z1{jM@>-!O1kx7y&vP#y&G`1Wjz*VTuk7vK4?{71%bY*cZq+%H5WkN6ydLQJ|sL9T6 zCJIS;073Hx5pDwsMrJinq!f=wI*(ygBqkL%uiH#u^I(Q=8>-1ERVQTc>1~cVe;s@m zSturUmFsdRSIyT@!W(*Sk&S5;5(G_}fmB54vrSKyy-&~&A&pQe@Bh(C+$ z>|zjSOGjukD7UnqQtX6Fs*Mm`0OBFod@Uec7zt}>UJKeD853k|kMR9%wTY0!8=NB{ zi~E6}E7M*mV9<-6f747;NsjF`*{Lws4EH4#<;5ET?);;|lMz0y0?Ey` z0jJ=Jf!SEZ?!{9jJ^tzN%cFD*2U@g#>JXpA>*`nIwlD|Q9!PgS(kE;O@{Q7L)(3#C zf;%YfqgFpRCW-Y3ALH0E6e+!sETYTHA-0I%pBl-jX%kvkME>&mK&cZuo!))A%e__w zh0EoeYU9yBb8hO^6aPiHj$K}dSdVk=@d+k}Lf2YCYUj(0#=6b=e)|G(p{i{W^yFk~ zP$VWc)9Qbu>|4<%zvL?aUcNYbs>#1JDz6`cS26{q?BZNO*EhN(oUkDiP21Gdm&DH? z`l2RY^k+(k8%OK1*DK?K$1tYy>yBkX=Zbci?}dz$>mWaquON9c(sM=exVV=k0kfS1 zUk?z@tmWzGx>KuxXvvMjJ=k8;Mp~AJf1Yfjs`X6$7{&lx?b0F*aK`5`x}@4Jq9oA` zEWga|aW8b1wTo|)jQd8MYp*cJxGDbW)+S`C7NFr>8h0_vqArkHR6XwVJ*3lq3!OX= z;c1@9i}0$r)rX)-p7*YH@pG4)o%r*1yCGgHjZjWxe^(N{mn|gvV$0|r{relZa`>+F z|6gtYzais4;f0Zv`M=s=85#a(5&pkb+l&nVp_uwVR@+UAx^@c;C_Xd)TIca3ibyyl zGpneDskGQ_sDRpe2oQrhS8b+{N}IY+zIj(9JJ2X@g9@JYaz8w-*8m`i37$9B>Rt7w znKdlQ1B#7*dHf->;0qq?K_a-JLF{f@oY~|SRr{xtSUbn+xMFA%=(D=v#aLB`l4%>QrmS@ukmw8yXR%a^ zfi)b*k}2{_tSB~<2f}g`n(myKIxzU{%&7@EMAq{cG?VPi2)`CHLN1Yij*u_oC}Kwi^UeM&|vqk>8^k0>*iYVHiLT}dNq1!SWg@Q4ve&x z1~~Yj^oGi+JpyR;Sa}9%{r=d$0KB*+GYS)H6ziBzaJdPwGNC4@V69)5l4|zCKife;cmPcH1 z$|iTh`a;6~;moz&8a%+5k!1aW-pL^b4H5yszEtxMZHY-W#LQ?3~`|du0JMZA()NX=Yplb-fU*OQr!OujXAHGEiM^evpP3Q@Eo+XSA zXB$Uc_9Mb)Q2>+hq*=tk*i&D}-CAV}H8xqX4@Rus&+Bs4f8 z3qM@wz(sOSy`w8nS5G^(oZ9ZND7Wpu<&K5Sj=qe6m&}g6)E4S&a=Wm)+-`2)kIT}V zZ5&woW_GuZ7@BLf9B_6-9%Bm z86BYFR7?_3$ubc8{pk;sYx)hRKPb}~^#1*8>EMTCm!XW#%p29 z&^0oo(kbR4&8)Ov=mes~&hr8LEN zpfkVNkfiXc969)i#c$zGAP%Uk8i~A$0pkFxk`oo90h8Sih>E`wPm`dGxskW~cA<{6 zXlPi##!M?4S*YBoj;eP!_#jg19d5aZE$vw7cv{M>cl&F7k-6}qe(?~VEOhP;tRyGs zvU>dZ>Fw0Ac8|_Ynk{ZLMF~E^Zc2>BnK~TXaRnupz%qUNGR28YDNpJ?8r_RE{B7An z{KqEf+n$Ji#qFY@9aIk2k&ifg-tl4tePgR;dc!0w_@@<-EG(bno2}ckEg%^@b;O)H z^lwrlp8jX^yIPq0iJ`dA(Xmn)#?kQAR69fR8%pKtNk0NDE1YA%NQb-$Arzt2=D0f7 z5G!Q=NQEF`4t(kN&V<*g8!?+zzMp{(Lc|Cg!JuuZ|D6Y$o-_|aVi+V6l))^74OESX z-$4J)cr#jQM;j`VV&)yOj%7!OULq_OG#qgAs?7~O|L8Z|onhTcgMJRX;EuAv_?ijF zgu<4x{4|kHKVnHJ;8|@j686BMH*8Ge**+2n(pwKkh^0v~1Bm4)g!CJt$f&)>Du(8c zd4V1p8%UNFJq@42-`5#@y>E%*oYz(Q750m*<4d(;RGesGz|%GXIL~HY{fV@FxUlM# zdX%|18NZfp+E%pTUJ##et%54|3zonr(!A@CNji^FOZcGV zN)zLeHcf~^Z&*d}%6GNRe3cmh^9omC{nwtJ z&8zsN&_Jc)7&L>#1qVKevI8M&7?7~$@y9b=pLL13=fqL$sqhbPu=hwf6H0RcZo34+ zz!e7X1jekO#RP^xnur;V6ePX-ufAR{f^oY-r68hmY)u4p#RPAS8=KYeq`^?lurcmH z@bwWvZ#JJ#SDA_G{6Ee8?4cIm?3`W6Z$T74e|%Kc3jfkFufpSb)^+Wm)*$3>|AbFv z$lh(EMC0VTm;xo!g`yh<9FQjvdk3}>;E_?Xc82QeOW?+-vcgx9($kpdkXWX?(eCNgf@UEp5OR*YIQh7EvG$+z&cn*jrb@X zzJ89GbX?tpb2?%}*^_Jn=D^Jx@^@NMC^#TUKR1*?k@` z6gDY14u-2!j(vKoN(Z~~j^i>G-DvG(>W{Qgn5UqmBmru`Iu4@?{a48oT;r`OXq75L z`Hs?i*#B)WjtDZI%0;J$NMW3V>7&*jRiE|DfE`-4e(gBnZylP$ZkE;bIgjpLfK;@Q z)s04^64G~3Jh__%W!ZG!`oz=~t`}5^OxV)s^hCGB8hXc-i=e8**_H~Z5OEB%;108F zgI#y$jwCD&kvcg0#>Et}zpD#G=pK=WwlqIRFnc&M(#<)o&d6)=*dF$HvPc9GkV%3$ z{<8T`dl&cuo~4Rl1%H1DS~=L+gV2`b()2?giuH50KzwN?XIIaLUf{1^r+(!1=h;>q zJ_4mGy~7C5LlwhKr$m3opq`lnJgbZ3*_2$2$h1^p+Q0hBMp;wAM^zK`NrAc%!BvQ6 zt&bb;o0{Tmr83v)mhAYeEVlEWzx~CC-9$ zA;|>?&%JwlbLz}7b|+`?UZdz>%cqAL0R?GE%bPiO%E%NNVA|5i_v6ZeTO=z)oHcT# zU_?z59&pi%5;6`f+Bh)axTB|w-aLfw&ZGU@V@ATJk9(LLcn#O<5!3fP0DSmpe!YFHIE_`lp&OqYxvDaeRtu2r?D@rdWThz(QC;hlx#Tl9Ib5l3xNho zD4@N$8?35>HVd*SDdOZa(2jIl7MeznikvD6iBmsjs-SFH{P|D_k4NYA-FebOjCo4CvhK=+RSLFDPmdY^xVqDVPPQ z5geC)Kt)g%q+)co(m!u>z*yF8-`>1;2`-27RWCeFE5WXkWfIH3^ER0WgM_J>RneiL;Gh`ZHie< z723zMf=HCjEuFAc*ptUaM~vl5^uxW@K>ve5830kb+S?qzObdC<-%NOPe04@ka+2US zS*<`yEpsz9S|qubw|E9a5+GQ3!1@-ns_{)@u`1vpSs0WYG!QSKZm&G+c`)P4Sz-lF zPFX4~A=SVU#>(ZE4&wr3IL0rfIf{?+FmJmJkCx9@9Bimk5k66r7bd^UDyf&Vbf=udHW3lz z%S=2UagU4x%`6S&a6muNshD2rtE0#Eqx1T>Q{>_qj~9NQBd~^*nD?e;&poIWW5G1F zU&#eW>Z<$s==lbX>@;R zZs_iHl20Efmsixg(q;A7Q>EuV)5T5Jv$Hj=9@6sV)hZQhc(8vzo|hK3P`8i5kH`G* z;v-T)G{%H%JOF_^%2{POx3dfa_>_icENX%Ea&VV1bP2#SOOc_JfQG4Ip7ojvy->6l z7JtZ6Nm(=o=;I+SE3j7uICrT*{C@Z$*?GO6*)bOSS>jz&N~)4mbET6g93Ruu9;3%P zp#OkXuR5Xl3PJc$v}oK}*O}rylNRTszQ|BX*|paA4Nqv?>(+>pyvapX-PQKHIbtt6 z%g5I>!~IZw3=YTk<)yby&00+}QP4?8d+bWgZ)A$J{JH)%&&sARakQ9G0Ob8GP|VjxGg9X2n93b>H3ZTo9N>F zxe6Z4cwZ9y@flw!uS+WFTB&87#vG@PHxEtuIt%a?L_(bNswoLip(l|{%HwXC-qbs^ z(yE@}GqNiwz2|M$6 z;{@@_C>+{a>k6GjC^N9dH29XY zZKapH39&%k0#;2n9uTo)hDj{SGqKJAWlzel*kwZK1EmX4M?up$t=|pt<(Y#U48kLI zZWQW~6pX*3)|V#5>NYxzq#nH8MCsp=R7AZ_Y9*gm3h%1e{UaMb-$d;=9rk&I^0VX8 zA}{CLMqS9AqXA?nuxQN-^Tg+n_aaqT3GF9-Bj$rpq<^LDE{Wqo}~LI%V5{KYc&wKp{=rcFwlkgy|pH8jZq4#GK3_Ylay%351@G z9bqc(q-v%NRmHUDiLx^1_#eAr(b|jOSfvR-zNp=;KzPG@f|-%pL^dxUlvCyUkP8oA zjAKOwr-07tRYz6Rxi*MT69K9)AgQsGVKQ=KGW0^xwwR;xZxgblSX0pgnX9M|mnp*& zW!36JLN=*gT-8%&1fnK1qu%+K;Vv8QwNI1Os*rq5<8bpDe~L~WD9TtqUcE%`1Zhx^ z4livG4sFq6t{v6fFl1q_jncYmBuuD{qJ@NBaP3V}fhX$HsL~UD?Ok-&#FJ3wC1 zz@dVje6xS5NPp!ipEV+0udt+#Gj?(f8lBx3bdUZZIqDSQkk4D4c2A?6lVm{=EBk46 z_YP$`{(&^GO{AR!JDO~Yr~^jS+ADe+A`}2k+h!#(JPDrgYma7HK&i4= zzn^%&FlmBE-R_{Ly)5B9?>c5q@~`a({n`!@RdUH-jrw@G3!mU0Wv^l=r*Ju|V?9c$ zCC_4woI$foA8%1St%CG@%pFj83F*bNQi|a;^-$xUQRX$B@RMtV=t5CPeB$Xh{_j}4z0S&(0TcFx zKc!^|9eRy2^H4j;XBB5US42?0NXe*Z+I#idGrV8aaAiajvl^>+TTH>*Y%0C%sqE`% z7?>@l$c2Zdcv6%WkVsDqtD#Zu{Z^#4DsLFfZqg8`9y@EwOjtOjGQ~a{=#UP(tr)m)J*k`zwDa3vn}&Fq~PsX zg>9c^)JYxvp@0B^gg{AlTGsI>ShHrpq^XV<5X2C~!^I#@vEVjFm!A!9o)~PNC1~xq z^7X_z8~d}|ontQJbMP^V5=Ya;A_^DDBz)_=@s)mNyjM(q(U`g8fbI^GdVYnm{1O}Z z11zv1vijdZrT+u}{0~U~i_!mAOB^HP|Kxi7-$8oD|IDTRA3^#nt+f~&aaW(4f1~W? zn3pQU37G)=_K70GAm*bXrW(Y+OR8&IXXU{a!MxQ!ckol47uv^JUc`=8bjJV>W(Xqc zCf4lNzVd_rBy-Y9PI_+Lnz~+(ZIUKz z7SwNi2UnyI98Z+AQ6u$hzQ6j>qZM46x+Qx2KF;AID}NyWBkyolJuyzz)(DF>fQRwo z^j@>EWxHO)i}M_6T(5PVaKW~A?Y8yD&tgTgMOyA9vftE27yXQ{O&w5k0w>^Dz>pCU#@ViEPi*$=o6EF5^FG$w* zIn<=bDsicQC7m8Bm9I)-0qH<)t64TBjXQ3v?c#Z{hJhU!3-6}8-Adgr#!H^;-}A{< zId9acMzxj#5EI--b(G)NXU7dL*tKsDFMdj?ZBHNzx=VU8UDs7iTG!t!s@xCf)t~bk zU7hxElbYwVhtzlOe-$dRxa-5EyLD_C6>|Sfm2w1|SMA8n=k@g09~)2XKD(d?sI2Bo z`FVs3T?u+iMi%a!`G%*)QJmKkfSBUvrPYr$&mvXeaF(A5B7u%&EM))qtX~m?RA;%S zHT29uf|BtN2^HNGJa%l|IdlAT?snm$hQ@i4*)EK3GUojM*c- z+q=$Q^cYLINFJS!oL=Ug=W)elJ)X^?uJ6RPrE|OSg8VbVTvo4?0SWiqCcYW^z%WJQ zjJ|Zhk-!+(_DT&}*(4>wa~89yd;!&*r3C3=ex^Cf>-;-@3njEHNp|HVaJ<&K9_#ve zmTpCStHxDL1U=n}M?W%fbZq9!Fnbf9D@-nWFhx;yP=!ZjQkW-}6R3pOoS(vS{PDOG zTIxuYG8+q_M8b%3zYaYY|IwuDptjEVAtJb2KxynIn7&!Ph06erFic4bm zURwR6CB_Sq_|n_-%AZ^05%P9E9XrpiT8^sVzFc{K5{n&Me#KKgUqvuB@+`Ola>nR2JLUM|N!0hl`{$g%CJ$^m>WfT1&qHCufYxWkW9wJ^rU>JWJ zQdhPpX#k%(Zd_3@|NUUDj7IORPKABs@j4M(QMcJdbyWV9s;_Ry4X+ZB-lM&BL2N`gc-l?j5B zN1#spaBbMr7n5E$fYBK_Y?QaGNwv=gdDyEyShPkfGW3%CxX|oeM6B~|&|eJz1XLjz z;co1#z2uwQNgnufLrOzcI;$DOS)7m7L7afMUgSoQf$RN%mQPYnI&^mR^VZ<)pxGPz zmHF*~nDK*~;k!;#I%Tft3Ocwrg~g3JwXOMUyh6Th!Oj(Y(Jge`xY`%rLnQhqon6VRCCvqUaku>Wm#n z{qE}0Me{Nh)dq1B{1$XSc3bwh-}$H!-(mfyFzeY^uH)a_DW)Bt-DT{gM@_%ew4Y!x ze)@w>@Rm4-u20ayld)Xjhm-P)^6(_vM<RaqmvWtXV2Xqj`7WQ8T{=W ze(DmP*8t#LtCOb&%Lod|we=eUDBn+YLD64{`BEZ%LysiJLriP89RZ?~uG ztB1-KeksFj%|pww4*Ae8GvcQD8DXE8b8Snfq9wUVrvSi&15^*?M|~AZ8ZsqObI3m5y(cpoRoDY(nz=k6WKsP zrPoBDi$*1S%?%1223i`S>afih`Z5R5nA$Q!nZ4tt*lK~l?37A<4`eF-JXbE2J&?Fj zaZqah!B#<-Y(%JRe?dkgi}Q}~16Q07Q*zQYeN^?zRSXG76ZP z3swjjXUvM{KD&>Sz>pYRuZ%zJWh5+dp-z7__GXCTF?QY*lAI zABp>ur03R>dS$ys>*l9589AB@vYbE9iE`KMh86>AT$mRnY{1}ws0ziqSU5{j1P5;! zM5l6mc8}sKTqKPvf`$w*-9KLg4(M1&002>o(X);ZcPr6|L4ByML6EDJAKE;C z>f3dthL|_7#i8yp`qhMxjoUB5$q7coiLgQd35;1QVH36&69Ah#)~uD}F)R|#c# z(%AhThM9(F2xmJPipMELLNXlHvp>vV^yhMlf~eaH_cY2@NjI(#yjEQh^{YO$0-RSp z0$Zll2X@A!JL@GR!VR#lCs-oUe=TXkf>BRw3p0yt<=!+wtA9JUeBIU_^xXfVddkO6 zoj#OwwxBhi09_RN#BkW1sh|H1uIt;yN{c~D&NJuwj2D*afb&VFO)lOI0wu)9!0k(v z(!>&jP!1r!VE?o01?)FRbw**^pEN8J3c5`w;9uLz?ab&ZBh1l5^lii@OJGY$<>TFh zZi1s&s8%{-dvSsi9dosC6Tp9(h=t4WY98#YL5uScX^)VGG#KuMw|o-g7qP?ajz) z@VXLs{s{CkB(q!NIN2+*`>9LBR~fZduu=fas7tbmb!`%~u*{EH62_mC<(F=8%B;k)vmS3xsb>OOU(>~KeKUlKl`;j z4v} zkcsY#v{&7m+hi7D?^h?%gcp)49{8kpzQD=4_iz_<>E)pTZl^=&1iHi3^)qYONSp*; zy-B~E=G$>w1?A0QtMR8OeY1y>U$|SG1mI0Pdn(Fj3r{`tx*gXREp_FiJ4h9Dkm@QC z>idG$6@coJ_UyWpuYI^R`Cugg>V0cNcrj+F2-=V6|yRRRQ z>x!dO1U(CAwI}wr@;`jn37eJxIUWmspEX2M;+xGivo)u!oNMhmEN=sgYWgSke`}9$ zJd-#TyJ9eY0myNkLZb`os%mBBckh{UA?qkLHdf(=QdYF_geaTmE!%t_;n3rhzIN;v znt0SP%Z2xq1wMT(_4B*bkPQ$+Ay;)h8vcO+`2N7O>=d63&zg*6NuJLJpJRcYZVTcKm5IK*qxfgO4Nkl&@_WI2#OAx*VXIW1GK*L5613%V83~(xohPCHc#(v_vr5642xj z(P@rJgs$%$OrRw_jrBrBx)B!fmrM>Tp8Z{2F=#lTL)BfR-}vqls%y@N`B1;*F3z-9 za@A5ml)aPV-6vl{f_b_V2;}5JN579JV0U*$lYs(6eZcuGK$M`hB%Ts5K)CXrPQc!p z;TReu6s&Hd40jU}S`4Bl#D#B3(M6)Yi_qwT3_+)G{rgcYx4=J6XAW00oAGJ!S`Js2 z$2F{p{2rDviAwP;tQta~^fnvT-Snn@w+ov+KuKtMQ$h^=i@V8G;F6`6!pIz?8LL0j zj>yDZ)Ecp#c^@-Goj+m~6A<$E_s?o(P#Iv|0d#I$A!c8@XK&1nL&@Qzdp6<@`>xA7 zghazyj%;G1ng()?ChE~+GOBSfkJ4h0%z|;hSUmtg$)hIDaP*E~ZzjHGB;1d`qt878Td_SF~-pJz&^hD8<&tS~# z)g8EuTRY6gfdLR5H3viSDIPau%IbQXo91Ic`s znqtut=l}?6K(-pdGA$?P`uYZcSJ)0`4LnwaZHJo(q&eyni=?TP*$R{6kDP-Jmwh_q zb3vjj$Gk^_Jbfi(+$dxoCLf2;p%5i%UcsX7%;u$2JNroc!=#yUf%~^yx%wgaOAhVu zi!kT=qJt&Rv$hv_^=P^R7SoYLjR}$f#=*F+**NQkoquW$qBrk-w14@m1dnv;km6Zq zan=U%F__%_2dxhyeYWD0nYXGt`&XwOsb$c_`?RM6ttw@Q zXiC5Pbwl8)qHmdDQVCCnPJAvZOP|q4q@mV|Ae9-lMq8(L0E8$A2Wjn#%@HEn?NvWb znBRO$Z}D%%F4{m{4IoTtXnq+@}8-Ib2W+cIV*7gv8%{+cI zMZ9nM{FhKoQ%d;RY~ ztN%%m#KOk;zYQ)h{YP}#ADe~Pb!>i7AvH|U#1 zs9E2~9@#v6BB?E5?dWu8){!i^uRL|H$V#+BPaR!djy$iu4Q;;Gs86@-bbr2oh8{09 ztl0I0w3v@S4mWbWzVXxjur$!c52vm)JTDDh+#IL=j1!?ma5Stt^Rbw7^%)TWAAhad z?o7=@LF)c9_HySx3@ut8(kY(yG+oy}S>GFNiCpq@Xqry!T)ui!FUx2qYo0kqgF)Ln zf*#HW?YGtFO?=LluhYGPHrlw@dzrG2p6Qk@(Y<_NSgXTo|AJ%NaU-Kx^8EnQ(*_nY z@@iWBoQ#5q`a0hc9?9C(`S|)U9FSM*aOKB&6&zZ`YsRe2SCx0KGEN)s(Wjlj`x3TM zDMhvhXcR1@UeNL7?fBduDM%Px!cc?s=WBk4jJ260>su1C z-m$rHyf=xvJK^xhZ)jgSia70Ydn`}EXce-sv>LeBhET+m~znrfbpV_5c>+t zS#B&j{WBmkW9ahmt&krYQ7|^Eu@(mxbGX3{Td@+SHZ{TNZhp(wyrJ8$I@#yqoa_Bj zw+7_5^2x=X$LcxxZfgN|gPvL92gDzGY|GEG;Wl-(^2y@^gLw=@BcQj zWy!AN=IvdFv-4&bsh!t1EHqndxK*>gr{RCz9^7P&-WXfE{Ltd}qxAGw6n6V$9dsRD zlC1FrWS$6cn(FRsmkQ6DEL0lcDR)XX;45%SkD*PTFjV^10y827XpsM3j$i(d2V?AM z^>PE+ZO9=mXTiOl+Dy--Um!s#zx^UyBRG4jh-p@{F8p_sH$RQv_RiKmHn3M<-n%=- z>zEKq*G9kuXK@FL6AHmX(BgOZ20j9l?#{=vZwk`-EDjs6ikm0EK-?l8ix?03l)s{X1VA0}i*|yJ#IS zG7)ycVS*(@5V4608whP)10hVim7QawsR=(#OC}AQ;B;075an`axhtaXOK(3djwIty zVD~RuJyE1y?^zyA7Dff(EboN(z3w1x(X9_6NO$d) zvugjw5*Ra)kzVHcA(zmq@G$@Eu=2l+P9U@LKQ%>dbM{mf8=$eNVb;B~Q&54ouB$j| znb=TPVd-(Vv(9Zs1T9?_3@SM+14eH-4I^LYw>e4@$PF(qjJaIno}Pg0_&b5?sRDve zT(F8IUUESbq&T9?m#$8tFPVXXo95k{g<7b5Uhzs8uaQTFtl%@j7o!8wW014WEPzbF zBwtTxH;Pw;(mTvk7mIv7g&^TA$U3Dxw4v~!ORmHd*XrzY^C0kR$_EVp(&XF4R(_g{U22?D#erxp(XSTLUF`x57n5Ph8~A@GBUg zxM2$R-2-4&fC)f)0c!^o@O@YQr4ZDdq8o*)ec(41)F(T;#I3>eS4&X1OMM=X&AK-3 zdQcTU5Bo>d!Ljy#LbI$98>Z_|fJuY1l8*z7mEAoO&fPDYIq)afYos;a_fNb-PD6{JMtF`*1) zeo$uFm3FF9Rk7fwTM=dWP5nN|52MkV!!DjRtjeA}9W*4$39#I?SxzgU=(Rbi z`(n5%82D{q&woH7_^g7=|% zE-eJ=(+F>)2b(uK#K6qBLPx0l1Jm?d@wqZaNsM$*o4JQ_svYpc`i8C{z5v557}%`Q zWK?p#%Esc^gLA^bGgEQgB`DQCx8cDJAh7`is|q{7wYmKmcKDB<`8MgXs|!0ZTZiE4 z5hg`50y=^4NE9vyrphUomzO{Ovv@B++9b$BB3Xh62UbFGpBo9$#bCb=2Z8>RcI`Z# zgk=OZa}Tt#E8a>-$gJnh+LFd-xW7XoN<@o6o*yuypk+V47)KExo5Y0J3w)duEVAbjLyG_tE)A|l;GJsBTyk0q0LRWmW?g(h`MT|w4p`8-Sk z(i%?MC^D_*o6az}`p_72jxd~dd=`>D3n#R{FL8KcFT#1A@8`tQDw~?OTMA|;gD83H zlj6}<`=;r!Son&8PFg8Z_P(4S&`ry`q0=GVZP|11@8(m+#(l;sJmj%EGu?J^imHM$f7&}-{t3Jcc^Ie%+vpQRQzl(&PobDD25J}^;MyFHi}rgF{J$rjQCn)4WS zejuMeT}xQ48wohj4(DQ#pGT3#jR==lL9(Sqq$Qr9)&=}mf>$fSz=u@>f zg8f|Mt_udhi~w&eO1T8Z{+65DbCMK$5}=y zsss?x-y{#$s~@;fKtxj~RQOoXgsG091r4Lt391#|;n)93b4Py+-~N9X`>KGrf+pSI zLx4d-kijiLg8Sg^7A$yhcMlpQKnU(`!QI`R;O;uOOK`hG?(V(&@IUP1^mO;B>h7xg z`s;J5VVM0yCd6mg$xN4;MOMQ6SOZr@E-xCW$|aCc1`F&zBJ!%w5D>p(*(4;h+g8mv z6IjBBr9(z*lFGStc&gq*UOuwsRgviy3?3))iLqBJGhkj0pyX7<^Bm)%k>30fFQ)IBn(L5{G?1Hh+{ zc2V~f|peA3lv9|v(} zbgKi#MQKDNvuQTFqg8N~GT~er2=c=p(xkj| z1`H6HXl5@0*l~WE%!94LqkeX3kzQYONUJkX}{RD7nK*$=s ziNJH6Jofwbxu50wmX%qTo1a_h)SToPpa=I+a^r<@h2gKF&Z&ZH zv)Fe)j7@#PFFtEki{T{lSXUPE$7FvN^6H!=dWVX9z7c2{^rz>(Hp>4fBXxo^&bioj z!KMs55?`^17vVcLAI0wEuOsbB7*&mAsv>YM76V?_l6oK2O_$<;=cm$l zWHFBn5s)dGKksT{BvGx{ytbDb#mp{lS8a1DLzpo1`E64>(3yVCW*VYLqJ^;`^IsLC z{QuvB^p9+(8{bBYyZpbZev0)eQGYU=nzui`g;+^Be;I6@zEdl&kM?N1EOj}Pc3^aF zL&)+R>@iZc_gdK%_D|15NkB|Csq`<#H1!JwgC>c?5VC4n$sOF9TR^#?A?wPzrK1MG zt;wz=azmiYX10(H4~27n_C9mIh5InRWyhS^#P^VX1ER{<*x*~A6Kr7E_AMKi7cHha zU9oX^W(P6WUNTd2d9y3&3~$;839W zDFM6BbVe?RU$BpGq0_V$I9<~fR**%T9f2?{`Z>}!vbyck>n&+@%@@rs^p|I(YOX!6 z|FFycw{w2oPP1~c{r?Ps%&h+@Jpk+fDm_4&){+B7{cDE6VXZ(~N8ScQV&l`rh3Un^ zfg(xu^p{R+)Q7xLZdi`Mx6Cdb2duEJYkrxLDyL&6U+J1N&*_JiIhv`j%PTgyqa5DiO`WwZYJu+4*Mn2&6$e4)JJE&6D~b-f9a^}tTVq@ML)h6 zu%0@+w$~#{5$%9ZSws-zf{Qq0xI2;htYGonSGH8v z@zUD`dO7kptatj+Of^2w-6=QY1lqW@mZ$y44PV!~kScK416=AAteN`G_1is~eAdxJ z+2b+`27-xIl@@}_PXFpHGP;GLRe;SB^~XgXoO%@WO=IO}yH_(8BPg*v^KXtk3f6PYkik!lEAgY^~`P}n+fjZHFbOM?c2OCT$5s)H^ z;!M6Wwc;!L)+L6|KrTO5=B2s9#STFB%`!v1c@DB(Kt4P|V%&5P2OU;RgsGnb_Ar`F zdkfE`LuRod3khgs;X2`|Au~*5JYe1?gM;L9y$!wQfvW*&Fu_Ft<^J|3yI_Py7>e$R zyN5s$2O}R*4*&Q40X@5MUb_2=HY7)pVCeS=Fv5P`PgCG&lp{ypq;Gd8z zdxKzx#c_L4>?a0#ei!DxYnO1ukUzBv265PBR{VOg< zRVGbdLBSI%7<{J!o;Jd71X@?DIUp_w$;PaNBzv;=#G|&nTE*9IOMdDbR0r_=K&K0K zn1N+);O6#r5Xask#W*uZGTz5J9;Q>qX&ju+1j0}gBwpXWt2iLoPqKLf> z!SJQ-DQ_bp1Kx?2bVUQ~j}S7NT=Ue43OR@x&dZSZ%}|36eEkF;9+nj<;{CS$R$Nkg zi+y7*5Kp)pGuiTXTBzVo75LX?(x8;})`&e*F06>z ztA?DPyaAKWMYeEG~?OntEqbx%Q@*kt_bG{KI2}04~4@Z z-rEiO!)3d+E|y1+cM}3D1D}5jYDNC*-0}_4Nzl6g_yR(4$MfCID1&5nYvem*-)FTv zV*Z%IO1K0^qHA3?M^IAcZ57v9i@QAlBG!*Y_H%S7t1YC4*b35hN)vcf0)YuUM>d=* zitSJp-127%PoT!|=~dn*1nZ=8)*Uvpp*2{(AG-;H_|D~d*tPNXC*ts;?5ycEJP|D) z*(H3E<81at*oP^1S;idVhSVD)EZj|M}FbsoFJA%qz%tez>90PUFjX2Q_t5<~u17qgD`*1q>nj_uZ+3ru7 zs_5yeV;z^werE)_S{h!5*u*%#G!aH(VJM!67=#G*Xpjd1MZ&*NzV-L+B${OU0aM z0rr2bGWGFZU}xK!*BHs>%RsUsdaJu&QKN<=-c@Zh9i6X{$H-r8^wB$}Y7tK#pe}-= zc-tP?U|$&FMxt`Wq4p2#l=Ug!(SpL-ujF-km@B9CcZuvpcpDZ*#$+3s^k?Kst!V2j zZV7(vJPr7Qxm5^d-_ny9pfBMi**tUk+o9}$%mfOK(}+4w1V(ER4Nc*f{8|!)mZny| zs{>E=JNcY@R?PInJVI9^fg;17?RwbUYy;q=3oqPV=UEWn2}iHcX@5ug&etsVJ69BB zdf*-u<4b`a`Ll^PznjyyyGME=wmC|4a&sorOZQ!^u^fi8hpnGFST+?WQe1m+2PyhyYkh7@8tT_d-FB* z5ii)qojRMwut}kLbqpa*9|ENdlUc=5iQzH%DMW;fu*o6=26%~o_lZHbOQO>MwOtCi zZkm(d!B6$_WffXS#Ja@gC;Ri@hZ?s+s{U&wlw$*76q{K{P4hNDeGZpW#f8;ooF!uF z09tyki%WTlj4W=YD2|EcKaaMV1MNZ#QA_QkCpTZ~TfYGse*4}vD-wwDD023%_V@f` zdAJ0zpFO=x=SPw=b=PGv^Nn(Uj7io&YYGdWa~`I7K-+hbx_t5!&SvC@{2a{HaA8C& zS@3mT7Gq9A!+hhN9~oUNK;rlS^$v@%Qs-N1oSW3~AE2&OOV2f%E{H$}5?QI=?_3ep z8K{Ishmw6OAz#G~0lZ`k2ylJ|T$Y zJQT*c8dI#{X6}83HF<~fY<7HXRW=5+!2L*gL9Cn~{?-fpb~1|&=+JLKezEOTl%gPY zecr5aMu@UEl^lrzQ_Y*Ao%vzNmtG+&IeySoR)X+ud3?*AXZR#my}rGTT|Xq9)cuKu za5@>>LM&vojIZQqB;Uwijp()wJrlf#FN7jG0Uq=YO;}L$YEmpx%V#RI%w<^O>S$hl zt)uNY4mMWZ$9aZ3REl9tcpKdfMfap!dqxT_X^iL*khZXed{Tb&hed2kshHZhp(wCt zR(zZRBNX3F|QC|mOu%X%R7UCxf| zP8RmZudLV#tog(4fzyNK1*!?Dt4n zGZW}rgVvANv~2zmL||=L5rp^{u(Y=JKHg}VEWuDKsdpT zQo?={Im{r8yC3DMZV)Cv8xyXuzyrXCDOY)dOH_RUMgeM|WecVeC}1^6-#@H_V4mG15| z85kgg{zrsm;?eX+lr>l8>pi3_xUrGbjZMP@;_J7UD}O6ECknA{Sp2Mo_+MHFgai$H zBT_59IuiK!R)lJDtr5{~nn!kd_i$mmpCFqZ>5;@IqmaIqAnJXIkG1c2S(qZ=bW}JS z3Wajs_OEq(wl=zPN}Yv?MlPWLkXi2|{OSf0!xsIgwq8-#P|uT z;SM2+y}ALWwV~iMs+*zU&}is?NEBw9{G9Apr21LGy+CC*Op{IHH#5 zj$hV7T)GCJoYpHa(_UuLL5_>>q$PeYG8QlK4^|-ypl&U6IRA_W5Bo>N(xHiH2^A#d z4AL|2{rTe6#HBt{Ip#@@V0vH&u+wnFN_>w05N%wKR`S^a z+iK_;&)9jD#Nt;?51IK75s47YMFgQ+a(#184FEaTXk@a81PgR4sW}-|*7XY{8Z1Q7s8Y#P}0jE3=OBngPU60zU(;?rXuvo)ja&*u zMqWCZEH5>YOfIGwpuKj~qe#cl0jy?1vdK9z#%!@1z! zPUp0@PCpXSQr>QWp`JJPwY59{F|<2_V*_^u#T_^A3uH!0N~zmY#f4R&ms{da~7&#|I zB~yT=CwrO@elARjME$pvCeS-ePTohc8f=yD{x0YBf7`DfH_#k<%;M;tZ742gJ-C11 zUPSunW@_F7j1uRNo*V!obn1#{7h*)&;TM9lwdm#46eB6aBI&|(d6XQ!6Bdz9%K*Z# z;HwKLkFk^-L!3XFEA7xoMt|Ul#Y@CYs)i~&tl>hoAV{Zr&9?CUnoY(KUG`EB{^O;d zQ%n_#XoWP~5mkWrdwIIU#_!O9ZHoV3`3c(mnnu&qyz*jV&bu)y`=Df_Jb*a-0sM?3 zAUefR|Hz{~p#JpTr|Hsrmj7tKICO2~%y_NvFD~ENd4slBb`OQa=7#Kjr-?`I(9hq1 z?d%r)0-e#g+K=sV1v;~XgsYYtIa%GQxl;+Wb zEhoWlk38k#8xg$=7`D@%8}2Kv%z9`-sJ<^xNE4{Q!~ekA{9|HXSsOOC|C#)V^*?3Z zV*TG`-O|#DAgYh@YH!b8W2x?NN?u!usM^LuwxX;=ID!=-?o0let0NW2&Jy}`GgM@d zR@7GCKZ{lYAgnyy0Mn_(^pdAsUe*ljYwr0#*5*zXd>+f>1o+ds{z86w7m_hdC3kb% zPWAUswaeEA6qZuSe?vROcG${z`Tga&>E#BpzpJd*YyNn7|Ma)FxC}(`baC*N+MHIl zc34JdbGnYJet+g+O29_f^J>Mq=n_l1_3kjE?e3sGul(!d-Gl9Yxhokx?MhGG>htBy zSNTROtMlTZsgb$0r#svF^5=)YGsRPDjaO>6Z&}6=->4dn$ExPtww|eZD^?X@5ECt)H5LjJ5N6-~PRR)^R;~>UMg$zk*Cn{XJY# zu;sp)TVk7IFWuOAKF)8>SGdU_&d7T}N1yt_Xsev0wK6&KYpG_$dT41RVXAv6|AAzc zkG~^1HD7$EXEm;-R9Sl|HF+MI)M%gI$u*%RoF!_$-uV71cBfW;Eq(KE!szN`tXApD zgtpDf@0F~z41*(Gm4H8j=|qHgT_Zy+R?3A-sjzo z*1ztqDw1$c>6l-}$9FJYeIMuPuumDP1Kj0H^SvR>%C67+vvL6rogil10C?C}4 z=g;O&pOHBFv7!0o4VRr5J`KxRI*NZAC8o89gKZ;CAuH&W9D+Gk3E>J#<*Pz;#Jlw? zK?YcyH)t3L@n{W>*||t+ax|>nh6ZS&Eu^j~X|C5}D|-Z1ODKsbgpElu{308xK-Q58~Qe1!XH6O-D?f*nR(L{4`e#_ zD{qS7>G9nik1r^navZLMcXQG$?H4d6)!>iE4?KqTw}N9F1}tC{WJGSIrc2`OW?@H( z&j}rf>6om=YSOBVs^9$CNvj<@sVs27XDqy?LVe1rDnyo;4i&)x1i}3xD{%F711{Fo zGtp&kBNEzP;ctR@ij$P<>dX`xL!VItj^QsB4o$Q-m*?sx-yQcg9*m&KXuHuflu8g< zC;h2PWhehp1W6iFe?cNA6m$ECR@-ppbp=nUYa6|ViB>DnK>+W}jScnV^f#{0~EzPB#8usXKhp*$BBN`FNplW_D9 z#ms`0KS-7j-buGNCT8JV$t`I<#+<5cT5}x{6($eDbpD>FCotT^8*>Gil_E%x#E}GitRe-i$CHa5ZFv^Sx z{~!b{!fb*oI*L1kpcTZg+lT>=%)-*DqAVqR9yzUBfmfu^-(`L z8|XLUe*k+_`vV0^b$T&QMs5Mr-jh+4iOIaLN>ysDp3;jK5r zwyn(k@DDRPPPBGr9k|JxCn z)fZfJ{tUD5Wz7+O*O+n>yH8%t{JEt@##^f!I|WTCM2=#2E9P(M9uOH7e*NF}Yf=nEBIqFG<}G z{xi6cqCjF>4=%BmmxG@P~G?oQ++xqI9}&o>US2BJJY3JM6U3Oq6*Bv=#f z#IgmE4}Gr5?2cixf`JM6lc?4zk+Nf`T~{K*RW<78pMNflwqedcO>@fHqhS~5HaZH+ zuc;V-g9yo-LFsWEuP^>8Ptsny-FSI-Jl1b@AmxL2afp$~#Q!oec1HM1&U&R&){9{7W zbbpr?Pzke9K^D@N)_!aebYSy}LLWiQx3bx?lQ87$*`n>8_fkkb{91qaX*KSR0G}ke zUnlzmE)RQ-1hi91kV$RbZ);HYv02KOZ!C=Zd2f`LS_U*8e+j3fPU&dxOD5%YR}CPN z?tGP_duce(o1zI7; zO?nMRg~&X@V2bI$ZF5p>6hKC3MC%OHT+I55&letv@hw6V5qe#s+%V_DGRKumw$cpj zE71?k`ieHN%3k9JbUP`tU4D!Z>Boce0*w+;B*SScx>Kq}fC`Bez#xey zjE+utK)!#rNiALDbOaJlk0aL)6%<)5xc4PHBRdtz)Qw~lWGNDEED_JzNu)}P^fH_wAY7qb0!J&{s4X5rW zk%igipYf{keauFdfDLJ61}{gEx!9NL zj{3H}|I^F%F+#?Ij1iltag^q(hZOynrhKssdy8KBT4EtfGu-;=t_k{DVF{vkN15Yp z1(Fl*(>%>|$B%qKpH;cqe)N9anR|5w%QX*T9ThEyRON=d?QU!Jou+BG%b_Vqx9yrH zN^U7g+Tm}OE@oRNPWjU&cQ}{fOa9}_S53=y55v;Oz+&k!#}QRmYN1fm!H(PSnns@sy zAn7S#@b@`W)RZ>W_DPuiU=bPxBq*E_k63mbs%%fax=l~v_})k9x;HbU-85qI3S>6? zCw;$1%;;iHN58K{(y%Y)U7LR3!sKDxNdUBme{X#g{BfzGD7K*Yg5&bkn*$8YsQ;rj> zCH4?g$VVbL+o}Mg0 z{{uCrEwtq4(b0QlKTerxDP2d{Z3wP!v}J_F$K>N)mp%iZ9X`Mky=O5CEwSjc8EZhg z3R-PN(I?XgH=uRnFsvDR&y@;&>w3qeBha=3v5WTL)z=7yeNECtBat?fK7$FORsKz_ zDpKlL3-t-tID!w82k#-@;SxpeV~Vok13Hw#szqE<*ZX|U+glOfP28^*RQDmIpawK7y=_~}(;N7za zUl2WRNM?N4;Rc*E*)Y$jEwuFLvF}$Mc?}Z*Qd<+$OWDHPlGVMx;cWEWj&B&|E6b-E zsU0ZWHCFJL8;}2H?PNfiWD_gU)!41-|I5;9B^sIprZKc0)3IlShk?S7FxU<|$~!I) z?c+2Ts1S6wM%K9qjrI*Q2K}F*&+6bPN8~}Hjjz^J05brB`qM69_|O6@VT4YhVevDH zi^W+PnMhcapD|naT%Ofw{yYo`SH_Ed4$k7IzBZ)QqIP_II3Ee17cLQ_jd-B(Zvmv{ z!=>VGnJ9Cu{@U^n#wkmdePVnJ5fdudnBnB+hqN7vF&gC-o`s)h_BOLc_N1a_92-EHow>vjEhvHa zL9f$TjA5w-6+eNz(aK&KV}pjgT6@|kzBpO5KC2INI8yHz8r_$R3W&(k;g(uJN3Z^P z4u|sx1?I4);6JQ1-fY<8IPI4PYO#a{PSKg3-~MpM9s<7w&Zgt+V-yHi2GntUUNR*{ zaX7q&wE5Ta>}ETRw=ADKkb|xCM8h8REw(7E+?z!&_1 zuFOR_^7>rWB3Uk{?N-SZ*KYDqBz&vPB6?Yuge@aPM)x~IVGjt3Ef^FB{#(TxLOD1C zlmvjFN(z)wjIj-U0J~WR1>xp2Qq2NX()Kj6^y*6jTXXEJk#PIWqpv=V<_`{&n1G(n&<)KhfWm2+3y8f{VNdV=`DeOjM;Z(v``PD|*B#Uu8EG6E znYGwBFh52lZ0aNFBipp%5c&A}5$4#&Zwd7`)?y|37W)WD@#&6R81fiW?{0z%kh3kY zGJ9e|X-CauS6{~W!*OR1&h-~tKxdH|LVchHP1ZB2u+TR^;4hbk}HlD z=p1H9wCc(G4w#zN`;9qmen?Jk5-}-d&*S5R+mu66O z(2OO~j`{Gn0jjV@%cq1C-iQ&b{m18oHG!2JZuu$qHWJ}r3d^AwQ`*MRsGZ^D7bp4i zi_3@n4HE0wDfL5#=Z71g=kuU1Yv>U-?N8n>XMdlsMOaUcSL`0HkDnlrv%9CM=DsJ- zn10Q8WAIv=PZKZy3jc}#upZsDo3q?@aygSd?dwX8bBU$y*jMx$^m+lGhIWE1xfDSv zX9J=HG6rW^RqUo_uO_sSc}HFM6g;biZ?~S(5T(FV1^e42+8uVZ#`wwM;p4?sDc0SH ze7qF2_gNf~xC!F?OcymkM~!~$fq`AudRNzsJ$g>Atx8evs|@d_+uM%zaO=!Ei@+i6 zes(!u{bZOd+zxx9U1zL|@*CN-A@$q*Q~BL`fwjlMCF&aE_}x5tygAe;m}2^p$~~3F zu);j7V)A7UBlb%>0!g5CWVqc@q&8XD(pRI&1G!`+;wj!~lLe}wrl+Tk53&$mg}cWG z$WvPD0mfo;xN-;!aHLf9#!tk$OS#~$Uw3TINHF9ma{dS)dN)TOvW&y_)9RPOw%GY~ zx6g)Z5B6Kc4n1C{blifJ_=DJsRC<>F_W&rX6PSrh!HyKFJOJf2>ISfe_100UC`tEv zQOrVE`!seRVNLyW%zxZLNgbNr$e9ItXeMGA<{4ZrElSnl>D$n)Z!9_7&AH#g@Jz#@ zC-FG6RG@56aSK1R5?l(IA1jkA+t8{;BOJ zIuU1OQiTIo9Ex7sC&8ImcnZa%!nfiT)~z}u?LwR9lvO}EA&roQH?7dix(k2W&(^eb zERbH-=;ig92576Z*AH6P2Zez3Et*v`HUb)tj}&23nQDE5+pU_NXey7JA~w~fEiMC7 zXzBU&=5ku?R6d&ia+6Q?uR$YQ2+e>G*$$~vjS-=BfcWU3 zL@P0;RF}s@#7L`Ijm49b{7?1vP4O=A`ux)z=3P?s7#FEKsN6xEEo6H)sON;C=C)au zg8gV*x`#xYV1m*l)^g{`BnN`aeSj9y0B%N#eTX5?(hiR8mvHs5ayq|_YPYfx$lkzo zA5M}CO;dVf*kwCK*XMvWtAzN)h7Vz1>ZKtIAS^4w6NCVX_vRA8yMmmIXzrlNT>V+D zQSP7!K~p&Q1HcWe-vSXuI^3a~c|{qS4u~SM59gRrvhHST7fwc}mPHBGFe`4ND!PpY ztA8jfuo4*sd>L(S&-i1F9*)e({F|0dvi2lbzH?NATXRlwdw#pyHx+X&%GnF9&yCW} zjD;GnT#pPqHHU)b6U?%m$eAmih z#Ex(}P$VO!ER@{ZkwfZBpoANQS_eNyDu!CD02d>k9z;l%ZV2HrAMcA~Ky$3VbAmUN zju&Je2pe|%)?Ix$PQbe zhWu|c{-7H(b+|{Q+REa^05!D!25X@NyRAgkaK5V>^GUY^S99!Z{7trbD7u*V&gv~j zQ_Kkz_X>0a?zmhvn{UdD81j6%-5xKdwUiyYi$7Vklh{(mMIObhi%~o1m!vKshQbN^ z;_2%?D4aM8(FO75Ko`&BvGeYHa-Yk`9b-^&s$n^}E6G$NVG7TeRtjRFah z&Gm2DbuoKIJVJ-9l4eOt#1lHvf$GaZN+Q#wo8a)@hFzGn!VI1EA-xUDD1b%+qTM%8 z3xVVc5r{Og4X-!hahBJ_dtJwz_Zj^zuIp`O7E;lgSuP>p_`YWv#Q$%`^pUZE&?*1j z*((m}qJTDo2j$g5dj@4g_7cBnu=MXB570QLZYe#_46nL2^!zx9H|LR!p~P^^v3-l% z7=+&9?BF<-`=cRYXK8MkapP-B{>~D!cBm-{G#!09cjvJw&p*m%eRj1mex3bMIIn?1Wg^pry^y7JlcDC! zhMsX`aMm)`LC3{3Ce*@D`#fBnq2x#3`Q)vO_b(^&&_u-Q?N`dDG;7?iWGl=dy)un> zB389`Tl=k~`?eqU$McvxDCHx``pR2z>4JQu=gFbwFYj;GH;3y>S`v$VqrKdR$e_^$ zXp0;2V*R6&ZMPLZ&gI0INMFDK|CCOa?$3;gScK?lSU^~Q1w2m;n{5&Ki<8K&2>r@S zfVRp#hwY~HrW+}EcU^u#rhB9sxO7MnVejH3wH}& z=#cTx9jDR8hn#U7L3ky2`@Hvsh%(d2L%BiYe_PhIS`L{XYtq$-zrfVnQOL9O}ec6MJC zj`$^`k6*2Ab{al;7@oHtjl{!xZ46HRA&v=IYIp@k7|@(bG%rot6vnnm(Y5Z{*LiSy zOvscw2nR~`DYV;Qt$^?^VjcYxk6G14N88#Qj?uNGDC77mnn6h6;2{udu9`2_6Q zIL$slU+4@{Oq{r8YAdlPz!$#+(40Z)q~6KP58BT+IsQlWV0(c6j8<9@HE zGbv?FsS9)Dyn)}`h@Q{1%2;#eRQ zSyb8LKd>}%QG1H*a8wPsgp|1_bXfPG5J6d#$GRrAx@@W6DF|`mE{?CqU#;KI3Uppi zo5n|E{L=%6aVitpxJ}|jB&wkd3lzY>SMxwmen9_?msnHH0!!tpS~Es{bIUXhkC%y; zHbcQ-%B!)1^xE6ln%CF~UP*-Sspu|WbgAa#$BDVWn5X1x<>|U<#^%g4nWaL*^g8}!krf&N3`I}Dbe_Ng||^8^c?RymN-X_VzJ zVJ#buzB44TEQV5?L$bo{-mIIw8mo21JE=6Uv;H^Q^U#@f5#%zTXvQbF`px5Brlsg4 zB>!CJ5gl)#d!Xc4jp7v;h<^(!#%gJ_&=SlQeU!wmg9O@qHOoB@hAN|<`#{Vlmc!s4 zr;j5xNYKa*H^@bCPrix5OV_f@5yLP@w8=&Pf?RiYTl5*T$&Yv004iT{HM{xCSks2N zK)C3j4v2E-0XaBho1UCP3P(eRk#t}JN_q;dZsbl-T>|$f@tDy*4537U@v|4AP2}r} z?nkgq-@2RjDm7sClKlq@24w_%nxNsI)yG2>E`+mm_fk0T{$@(|$ z^&2h%qizk{n>sQr%#=clrrpFmk5O^B622i*%1H>hl&E`&P{iN)LjphVF^n-GY)i1n zuHLY~V#d;osHY7a5@o;&5FKn^T*n@*4{>gtc&lH|Ko@#Edl?hMKQTUb_ z?V>a`~m`+9&bI`cQyhMXzrou?!|a4|jsFDJM@bZkt^arx6hZO~e!M-&A0yew|FZbeQX*#h;_I9M zW9nGW`PH$(TrmldA{TbrSXs&L4;{>$U`bJnOmjCY0k5!>@q z`KbUyd1{sNs7uS*5y!*vz2b*vy}n&9e60it^?}<#x46Cs==WF)B+ukZ8Lp~D=Pt{1 zwJA#QKVSGxz8GU^?z=c^$7#H+U?018d{SQkce>O^L~P4g@~v781cHt(?CqaMP9ZL? z^G6X4VsO`!;852Bsy+53fMxk?g~mHUdXG`3;QhfMc)vef)B>x#BqUpw?HVgMKPO-u zUA5pf=evfyWmxpgV~9>V6_Af4Jh)_y$;s!?Q|>pW+?M&RU2lwi*HgMO`BL#^RALaG zz8qfd*mb-UubQ=4o~@L2S>_`V8<`;@4j%m&;hMsp3{U@q!~NU*`c5=~K#K$k`)J=)jcR8N1GnWUmF1 zaJ!a)JG<6f0)%k9K)hH`I?k$?YF~u$QA<5j9@zP@;oQ$hu(3Ui$Aseq38*6iYfLXH;OSYu3X@NLsja1iH21@$h57lP~ zv_2SfSv}uYEfCcg_xmo}(OeVi*7YNiw$n{$YHGFceWAKQ)tiE8{iDF#u|icIg1^~) z(|vp`NZfP4#VI)*u<1R%&w1#SC?IQ6~-cV!viT3E3GVbu%|?x12HpZ$LIRa9?kuNr2}o9ihoxH z1c+SzP9fv?MRI80aTyo0bz-jpoP8Bzs59bd3A|wh`gq=vl726Bt(p0Rko8r=T2Lub zIE}Z=_JCr7uD~CGeq*(nyaW%$3Q2+}OAQg_8E+&cX=*#XRZfU8jn-~t^koQ)V7VENS zX^6Md-4w=)tfCNdv_CZ%t=SdGy#!%mnj2h}JU~9aux?La7g}cr{h<>mm6Xpkuk%a$ zheR*Xaua>-=B+M7%i%p)H#$a{DY%=5{uGs8m%rmB_wFJ+&M= zkT9`YZj^>72;M6`FmMm!(E>1P5TI5%IZDbG;&No5-3}7?w&5rAi-uC<$MDH9mC0Ow0TciqZ!Z*`Fg_CZ!ROS`Kv}9jgLcYGw(&*|G{VmB8^fxuHQx>$O82K?Q zvaz&y)(Sn`?0wcP4WTr{0e7q)lkmT~zNzizc8L4n5@*Jd2fGlcwa~a&KMY#G!;{tJqGBHwy!GWGkj%Q6?Qp%Sq6VwT>e6(E;`X0- zrJ6ZuQ1RZEzc(+*CshTVYS#Sg5}QB;Xz8etIcV-jSW?|~P@+)lq*kdB-AA~o+2wyq z9;R?;`+pdF=O9a(Z(VrWwmEIvwx?}(PusR_+qUiLo;G%4+O}=$_Ppnw@0=U)#uvZ+ z$Bv3sRnN+-%9Sfu=E|oi8939};X_p7#q{8MHKO$OtN*{M@`9DmK$_1;F{vWy-m=If zvJQeL3$vNwa@9w0?004>=J!f|Mu*am=t`HtzxvtYFz_Hq)7v zo$0WryU5~TPM<09;J8S2pP?kOQTGf7Zv?`w}B;F0?OC^;_c0etAQY z16$yK!I;K7cv1&ol}VgFI0oEhJ^L^?+CsK~2K9G(2H)Yf%mt_0WCi4kI*jp;ahglG zsdzYRE0cf@YS2YLW7SGfQez8&!`J9aUUCH;{u1(#b*PVulq@g+l_AQKZAB?M6d9Qp z!3OY&(shU^w{n!hjM4USqc+r=YySkqcNTbSs8tP%qH#gA3T9sdlY2M+sea9y6g=aZ zaU@xDo#D8HQ7pa|c1Rcg8Hqw-r;7h-2$>C(bW45^q5m#$YqA%4?C!*N?-3> zm1O3ZDVs0;u+%F(O+xOxNOGMxwQIl?%8h%W(}353);QAw_?~gw8|HZ>n*@wg9nP+R z*2ZB$I9tL&#;<>69@Wckqjs{(3PP6>MBm<lk0_()vat>GyXB>&SW;rg4mZGx!UD3 z3&O?j?Cy2mwN9fp61tF-g& zj@`)(F`cr|ef4AzvnbfiLJeAn$&00PKeP^oj42CciO~C-&NsJ5Zc1c)LxZDKA%H}Hm1{x(L*KFh?$=vef;pZ=1#lZ z=4;~UMN+#tzj)@qYF$F`Pt{FE?IU~^99+m%%i$#e&@KfP3+*_9r$ z#(SpL(-*th+mox-Qw_`5dDC-h_&ASNS3Rg#LSh+m^iXV|f0N`a6@kOS9JfrnlSc?#oH8F?67k zRhP4{^!iXSM_N#=_Zk0LYv)Ag>-zR0eP-@=_}JI`A#rwTw!5CY?;G!L0Bj$Lyt%ZO z^ZWY`r2?7?%Nrq*wWRqVV_cY)!*dv@#btb5ka;bTKz zJFU0HFhF=TH8_Sm7uibit!Lj?= zE>1${=k@p>I^S8V&MzDvof>;iH@pHv?%1T?Pn!XO6C00uuAxe;J*z$)>zCjqa>*YL z^RKLF0Jza$lV`ev-d?I!guHy1Sq9D7T=?Oy!L7e<9b;SwoqwaW(kHQ1{`T`mPk(NI z93G}oXkQ5-*6QcoHY?FA$3R?;4En2_Wn%9*+hY$udM}U&Dv-~Ktvxk@Yt-_Q)^*PG zt5h@R<6@im^0!;S{dvwNEa6?Kk~>6-SEQCf!r`yp-UmQ=z5VB9=)1Y^BS+O|gNI}D z3l678gigfn5}sObY5Z_2&x6f4Ly7CylgYiK>*Ed({LZyc#mzoI9|6#re;hDYwsXD7EaJJ%t?Vkovlv0+t?5Y(Qe+m(|K!2xZ-g zu3k_KjJ_pWSDhBrR{=ybse}wg8&(2_0^Ab4Ma`<`<|0B01uQLWc0C%fUnaQwGm8hr zCsXCdkHQeyA|=didcl5W3E)aC%d zjng@W6?REuaB3fszsBiHgxKM!9J&L5Z>e@8=2iZLF?KnmX+bT6&DKwgRVyKOg(;t! z@WK@Bk1yPo+KNN=_k*?s67~Jre~Qjm9&n%Br&t|f_-(b@JncEVRpQweKRtp7VP1s; zf<;Vej2FuZlm_}Uh5+4WdaV9PKn0s$1#}ZR$fyzgFfOI=mSsi+M>K*(BeSNIfay?F z%*7@^2#oB9{P*}|J*@^NWqJ^i?;xV`Mkt2(P~nUP;M7tQXzPd!=3d<(Znay!BNHgG z_u%*d_^oxuF?a$~8g6}@Ab5fJp-0nXaP%gkiGWlVNWOnGni!jZX=FZuFJqZjiYJm$ zt=41?ZLYy>5!?=AOT~*un(+)PF~k>p(fpHXzx_#ub8U?4$Oo~EN|7?CXIJ$x1?foD z$2T;SMn5y+8_9B`AbM3!^prxtVj1rOZvM3clUn9Zxkw^WrE(#dxKb4dHO99+5jrP6N!f>+GL%IXt*VY_N(gtcy zU9LF??N3Q>RI$M?_a$3bJ#_B$VUo@O!w16gK4i?o3+R~rIShE6f-yn8O571Q?4op2 z|E8>E9_6n$Vo9<;QuX!TiK+DmO6kNPf3VW_){}jY;(%$cAlQSMPGqS_LydpTA*3DV z=r>&WN@)v-Tj(=))*_%Km(wUNKO=RBPgQ{53)SXh&yO91RdMbav?aT7FO}iobg}3& zzyE=7Zp91nrfleMT@aLWb1MOuewvm@R4QJ6xX%6SnDSS3 zYgXlBQ&FPBXF7U3_Z!cQ!`-A+ktBTn*A48I1gvo4BFIi2RFc2C2eH#an1warJ=#!# zsXB9zDDkh7<`qHZa*3Xl0nqM|oQ9~AxaOR0R86Qz%V5*V5hXujEIRhy+^0t7)Y6QP zYL__KhJeH3!o0pJn%7Tal`>rqTYl38~81iZIs zz4ZhbqzZ;17Oe0;HzEUQzv0B46I}DHE#jk&8wv#_@d~b}$WJVLlb~vSeHfJvO=89% z?M~7B3sGk5HW%=yGaiq6NtuH!;1X>A;GcoH@E(EsHNyh_;DAo8e za!@UKwD9Ux#ntl3z=`tPEY1KpN?u91hM7d^vMS!~V_qX&NAPVJI{8J%`j(?PX1D?zlfrDL}o)4CY8 z;ZlA1k}SVggnt@t`RyO%NET?Uh(9PlW?M;UE3-If92nw};gnrOor+avNyS-p9Lmg) zaFjhIG;MBK7XEsgtwl2K>mdVpF~j5`+!nL{b~O5{6%Gdy0726@_q*dIGveNEA~(UZ zg$a)@drGf9obttELsx{Z5Y}F8VKT(ex@2>~)}{={;6+gnwYMq^WGm z%SJ6l>8s{}K}GaR^|-K0kyg+By7mXaZXu#!w0QSCf{IF zP+O}Vy{x7#LTwo^zd34rkQmhl4e;-Oo(_-RMiN}KppagWJq=OQiZ)R_NLryMu7bo!u{s^zIzdO13Ck1|tk>(Kw2BO+Ocu)pVU zU(L?ak&eDBcIf8*e3@TH*vU*xO|9KJm&P)eE-lRYI6YYncMhlN?nrmq)b8?P{`JBx zy&WizU7BX>WkN$UzEjqkt?&zsRr6#chv_6Q9jl`+%+^pi?SPz6K5qy{&m_uvcvH#cxiBhj|v9!NAP#(9n zVT(Lhwc;PI#qds7ai>O}tmqw4ORO|ym_=RNj&50hd+!%IN_!zE3)z4$zq#3T(bEfO z-(s83?(y+)x4(IL1~}F^H?LNG$4Ac;D+xz+BUzFX?Qgy`j9TyJ{+-C;RT6Mc>!#Sb z@tVX0x9A9bnqKjzRNpxiMr(7!27~*~t|8~$ljB#vv&#(z=et1xa$B0U`!6?bTOUz? zZ_jI6`en)~T861}ZIZ(vU%te4mAq-$CHTDt50I}&KE49xXPJ;=TPt(v%hvDULC?DW z3RkwYhJMKh2wkRfIq0l+{)1%ih`RH6=BhzWq?-fLWi61%gy-K$o($Q~N2F&SrTtFm zKjobWUj5I&8$>l8SIT8GkH^I>Ju$dwPcb*klZG*|xX>Ujg>h=nwtitnEe1YX5Cr_ib!cM!^hv%(nSZ_hPwESYdQ{7EU;3**J%40Xh#Q6h)VVa7lfXhK@KI`rJ zU;sUgLk8W#9V`KoiXbfD>H$7PzJ!O@k$R{U7*N0dn5ti>bhLb7P(d)s!Et$5D@Xqs z?oo9{7Z0l5*u>Eqtq)ox8s3!aR-&sC zBZ}!=S8!S@;$`XB+?IOKL8c7Kh^O^-0moKMP!l-na?o0l=Jz&7^Wc(;uT(Rj7{652d&QEAS(bYR?9GW( zL=M&^jNK}mm9epx zgve7YK_1plt=-nxA!JSA+eF1n{;N!*zX`MT^n{aYT{Lz(*0}(6=FZ(qKh8T_mam|9 zVT(%U`)f7o5o$7bo9*%4_~o{rxDY6fy1jm{PiWFqIk|gU8E)(-@6581(}gac%X&Sg zV$=?-8#FJ`)G`VS<0HqpELJ9%ZR6H76B~D)>***&yJpv7<8ckj(OG(*F?!<}m~c0tVwToSvxn5Tmh`>@|50 zt2(!BI@{&*IEmau&tx43f@aH2SshFjSFVR>onL67=%Rc&I4qC#hOFbg4ULsYo>1dV zp^!Sg#6X1|prr`eW_Z1f49 SyChVaCUzoRrc0{+LxRoz?LZhn$|*o?G9DApg!+% z`^5uhOXq1Pi|Q9)D$nv~!sEf}$m_;_OR{sqzFm09N((^o)j0fisBWVAZKQ&zPF*9 zvBx}O(lVo=9qEd{)am1y7qm(ORvEKJ>>X;yICp*_th1Wa3|%5@8V5KC5)7^YE)fYi z9+N#Ruwu|dF%b#-3?yg~Dvpo?akPM43F?`QV8eJ3Bcuc$iI{{<5fY>vebz`s+?oXO zA5tgYt-I%Y*@DC|}GPiys4*_rRiZq;{yKRZ^Q3BV^mgtqDDz${qNW;Xo{}Af4&&@CO zXqTI{F9 zH5>z_`xp3ia!Xbg#^s9X$%^}R+x`iwqDRZDO}MNWe10{{4q$Kr!mrA%%$pNh4ZnYv z4z~XB|Dt(ng1Q7B>+MLQPYStL12q;C<9A*HfuN+gFh+)t@V%nvDC-=)1X9YR zzH;6cWPPTQ5O@}dh}L4<*k>19BUG$|pX?gRO5JJb_hn1$MwM(o^1^ajk$DR`7G{vb zkSyzTOQd;q)EP=Up5l^hoELl5Z0)K zjCEhvI)7bDvfQG0aClb=Ow2>I+2*p5hZj4{2@z&SjnW zd%bu!w7La69QP@^q@y7GZiCmz`+;uZ)uD@ar}(#`cO}Yb&rmlu*79b`H86$-lYC5j zA~+3eh;uqfIS?5x3n7H2ep^b@Lxm1@K}};>yhbC}^3SX=>aLyT5r)Vgs?7u>pdwVVyGbGu$+HD#d6577Pht`Csx6!&8V)y z)pcHd>-%ZRXQ>41Loy&Wqv#Kl=}=&{jz3#V385%X zZFO}i0S~#Yrl9nd`S1Lo?88yXZu8r&8J-IJijdurIHl^1*@IAg>qb6!)jw4=D-{P* zo%@Op@)F!;*}(76k^Eg}I;I%fdzDyYhc#IjH?0L;-Y2aEwVf}jXM+QdL=~F95 zGicUM``7_;XuS$if2u@Rk&H%uu7<2EO@^Racb%9xZ(mhpB0z^$KaZc{dX|Q4q=H;R zm~CZC;Yv&L(NI#@#${P2yu#rTx90;^qC#@&&HIrvVNfXm5Vu=Of@Y}1Rofg)dv##K z)?EQ#h(XHM?e;W~wOe(?Rud@kp9VyP2#@XWJ*9dpE7y6%mVx`#UmVQRN_}iO z^h(0Sc(VcehbtT))?aO;u{PQvFBKPG!e&tVgDMMvD@FlfG6}@ACl93DLvpCCf!I`S z4~~vYAPld$-c)}w8 z#kY@V1RdDL-~SRk{1XuT6Fe|5v;42%;ope6*#0Bpu3s8jj;ljxU%|stYd}r7{$=Fk zUate{aI|t~5wbIOGczKTWSM(B&`85A^Xze@?~k6w&TkSCPKoK#!@Ji3rc*hMhcDUp zo+-sy#&_f&+Ck)AS*cQJjN18I2vd>s!NWPoCT!{5v^`gT4pUE)GC8 zgh#27nF<{7%!RY#Mghy(MJYN}V*I4^vZaRRGf|d_UC$3^ceZEqk&BJYZ(Q3E2rx-a$B4~+h|XF*EJcN!St!8Me1xMf-6a#xGnCV^7EvW{mxWOBR$kBb(wRp zY6Ax}7?K)`x6U{%CTtsD%%j-a25p2<*~WBhh*_HDZo*lVQBdrl{#{`>CH?`C+Mqwl zn%(hhPHB8T)W?ZiC)^x#QU^O#;n3~{1ncLVR-C&) zZ)gNxm<7J~lM1>hp6P<)G{v|?o@IS9;-`ZXu33N2GboZ8(5v_I!|D9N?wZLMB~0g~ z-Dok9M`lTxq%mKYDKnuuIBaoWXK?NH@RR1}_!^flvST^_X(c670!(gh9(6piAQ+F$ z4UbXTUb$FFBrH~N8s;smWRSWBJpt%}3CyKrcKV($Yv_|`yG`Yk@wy0*HxTCJVR@1c zSeW3pVxbY!mj^{tCQx=zWAWc(Y5|ji>kSVJtbRZ(OJRQfS<+q zJ(qC@AT=P}KN)#1TrUj)v1jBfXx+PnJA_bjcq50JLbMH>Jif)GO*VoIjY=g)KSU+m zE2G)BSsGI)EaL{7=g~+cIWc9V zo20nZQ>o3huWhA9m!vKhUCX{;S{7) zrbF)voE?xbQ~otO0-!~6GeHlPig12#3nQAT?HnVE=tJ_uXsRwP1`PQ()Q!y3gtuOH z(HVUvdNY`Hp!HTMpPlz$dnHmV01gOLU6mx(cw&Pe)%iz#$F(lZ&B0)XPU=~{e+??U z`ka+Qlc+p)MFEqk-I*-p#O2s?=fTf;hP2pq`t4Y-itNQ+YClM95*rxlVP8y{5OoE{ z9R=*B5wAQs%1K^a0SdkaG&+qM?Y`V)aRxM??dfJ@J8$5VJ+z=9`Ar7u6*`KlV4x?TqX!7vjJlV3Ng}|IQCQ>oo zn^l>}HrFRzPZvQtvF&%!SNTxKzQ4hjQ{cQpSvEGtTqV9cS44K;g7p;$v|WqXzt36i z2_%#&O8(vlLa#tS$J4mlb7+;=@&WBBdOh~Ev?X@I`oa*%)VmQ<0YV@*Uf;*5bF7v&EHYQ z0n1tNEI5!wR*lT)PY@0OYAWERyO)+a+DA6;jTZ)n5vx$LVwb4(6$7JID;Qye%a-mR1~pa%D@z)NV!Z3gBm__ z<-8X3B8C}6BiuVcS@ihu&4q03%nEs1Iyh{3g+#QK@&|KKEKeJtEW2=q#hWi|@5M4- zrZiJ_vJ$1jm#Ue?T)8~dS)^akhU3GtXJQXugb&9DV=BiP$)iZEeaYwS^F&1$5aO{i zbOG-wt(qz7d~3dg1Q{+y1Dyz3gn}Im5DpcRrGhO7bq5ygr|jm<=ld2Tiim0^MSXek zej5ytHJVj|O^1Y%dk_y%3bHy76ZBE&KEs$FLcz#V#u8DwM=)^QNBl_i5wU%hMb85EG(!`Fw@}UGo>ca_>o# z79KDd1LlkSW>L8HH?ZG4S3kdju}v^2pv+${bCY|eag#w9jne~VZ6gwUL&Af3AlF6`$; zKk_})vOGJ~Cbr-EL?Zreu|efYASfO?v@u!zqknd9z`i)JC?&+)9q{R(Xm_N2kLnC5wCVNCu01;M3GidBaV1De73`5B1o ziYGUcx%bGdS{)u?iD!ikxdnS3n-!UJa&2E(`9eWNAwFlC%C-(;Cvzc4}Ja)rY=0tuQ#z8@Lr^H}2Y+bmB z*W+fK=g2@Mt(`;9Po8jUL;0{!+Y3OP??n7e7ju6B44i8kUpt5$G=@g^EvO;_kEa?Y z%Z(>wzf+>O{Ph;^+lJuj$3^GInY81c;`5(&(;!7jSE)cRwa1Tm1D6h86{+u3xT_Zh z!|2Etv9KzgKTz2r*Sx(U5j?~?*9$#HZF8l>#JB;jsOKcJ%uqWL2kZS}V{b>8$i159 zFYMJVZtP^J358C*lp8NjBF$fWL=iN*%WW116IfaQEEc4FXRP*K$)+!JXD-B76Sp3ZKS+D0n_!GtD#a-5iE&FYFJUdJ*;%>Dq7`SK5=-EXfh29b zE$lQQR<`M9DfpgL#}**|L0q&f0oBH%*wVFIgB`p?_v$F^?i!@_Z zVq0bCL!c!4|NL9%g+wfuG?aK=R8 zm*E#KW@g~dQOi$jca{N0WTL)g(x8|Ix00=thqL3m!gL@(;_7*LLRquo1=RtGLhA8V3 zmTAa44IH?qBajTy$Y+>-r0rc?qj0=If9T14xO2k}S3xx0WUat@QTx1!XBBULk1 zP?D1!rW3Mfj^>U&15TBXqL_*kH|cA1KQg1mR1063N_kt$S+lU2eTKtRc?{ z%ZmGsB{;F>QSXaDG9I_Fkxio`uqFf$_8dD+>=jSUSXCc|@Rh7(VhxUHEulZ&U-|L+WFWLn_nj*`sMg@~td&1~5Yw*oW2W>0$%>~!K z9rGq)lKdQN`DH#ySN)JtJ1}d0H-U0F__cH;s9}h@AaixIGqB5GRuXG|F2$25zfPNP zd2+f!7O5^tDyp$qyj#Mt-qsrZagr7Y=^(P30OkAsh)NBP8vE^wFjq2X>(NQ(?eZy* zT4|hvvEaF(SFnNKRRD(JfwnfNBg2kbVkWu%2+xqV{B2oU<50}$?I-mb`~s+k;-_td zQ55T%Z{=X@pk~aF$HoA5!c&>L@2vQds-mg6v@m5vbflLgB^5B0kB*N#s?zi?>!Udq!W<8~{a8+K;b-#1f(FrZ{M0`Kh0IQGems$;Nmgjd zF*D#9Kj~#r#lew`^Q9@CBc-#-fqVx}L;PtqD+d;FL=b$HTrO`-ct@>HMP$!)2 zgt{cS5;LQU6SvMrB+ZN{94#U2JYwOkNa7Z)o`TbRjop506jKS6+SXvFZLD9Lo@z;> z6Q*B-I;9_vTTwI#3)_)jM6&oM(H;p~R?{N7go0}IqTmfq4|3)1I*w@enmgC~(8 z$K=13z}79itL`Fh&4LS9AR@f-Q^unoeNGve!Ok9YiGEw;^f83NX209e&Zyi2 zsu#ZPK^(T*E+C%{*~*x+iO-;r(084 z>BK7nY7wUeIvEGAX17Wm119Uz-;H8C@TQ2OFl&?}W4HKk`Q!A9b@g=@)k4kKE-UsYoHJaI0| zUMs&jtatPCq*~Os4CIYcDs$+Y%ykbZe2p5;5kMNm= z$Jc=nVlYNf`Jf^I6E=3c@W>4e_*e@rz-{HCyzWXz%G1N5V_mOZ^pD^B3#ox2@941Z z-8JanJtBSrfx3Ds)|#@nVZnUxmM?N_fv>eY+!N{72YU!U05V5=$f6Y0lPEBZcFl#O zNiE;Z%13?@Z6zeI7nYi!m{ftnH;xFd$W!z9M6qT{q_E?Px8^aT`#DIs?-8s6Mc0|2 zfOTrKtWD!RimAg7D1hE?fO7?aYXB8lZ`k3U3uFnB3_l^68vz76BzrNrfsHMr3bnW) z)R9O;zC<7=jYMG?DS=K9bEaU3T{Ucf(ScM!&DR~`F8p4qAQh|jzqH(IAdztG4AhtK zQ3tq*j7Z8*m2Yv=mJ{L`}i#X=H<==w13``r!c&mQ9?)m~kXZamLFdO0c zw`ihq7h$u1l|d%p+25!uece<*EQ|ZkO)b&Cr@vrWVNfL4`orw;JzgNmqbP|p6b9Ok zWXt(X+5F)I!9s|&Mj%buklfsP`{QYif>25_OgS2YqwM;mZ)Ld}oPC2(`e1=G)VVs~ zZog3nn0dzHc{5FeKLIUcIZu#S9caX2mD*5G;NBpWjBZUf%y@jQG#E@9%^; z6AS16+S|eLZ`n2+|53J0vC68=E*qlvqS{rwrhqp5<(ZZN_cE%aizU<&ZIrj2)w2ER zkA)QWiKz!IuA-umaO*r#Bv7oYBizZX^q)S6lYUoMvv1i|39-UI4mv?cc%aC^LCIzP z4RfpjMj@e#Puy}oB#7xn&&(R}0N`bzphSa|xd?$MlQlcRDva?2gXE~ALH#tTehxEX ze!X@0?)cNl%r|s7<~VIBsw~+aj2<$n*E9`AnWOuwgCCl23VPf9aOuEPQKaeh;~enY zjYt!r?B*sws33Xo$`&T9>K^gHb_ZFdq9>#%V^AK930E+mIVMsX`Y{_-xeqECP#`Ik zqL*XyCa*#zyB1O5=36OHFXoKCQSBOlE;2V=Jx|WFQfT_Rt>eo_a}$o#@t4Pp)K|P0 zj-2i|o#u6(q)tN&#LHTZ(2!t};r-jG_F-C+^5&&xC?2N|CVv$$H z*9t#0b!2dd;Wojuvm1Xxy$j1Q1N}zjhAmaYX7cPvoZmxJ^oS5f!$Dc)=c!E36HCQ= zlI9Ug`hjsX@w{O;{MlHRIef+6F_QTdDKA}V zs?HDs>LqX`f1Exp9XLrNot4{9b#y>B5_iJPi1D)NT~yku-QnLCib{S_i>H}HyqsH^ zQ9p-kepK@R0>npqjPUQvT-Im3J=c}Fe5x`$4Wu&;<;%S*Z&6Xm+fRbkq`*1S*+F!j zAK=2uRX0H$MGn)0#|6WSdmy%W`jONw>h*%d0et4@=U$TktClS`85&uNn-lxL3Hy2m}LM zBul7E7f*684z5GhmPJp_fOGT$ch$n2`xbS$fVw4Ra}mGNa8~Qe43iHRMZ)G4*g=Nb zA*sfE{UEs?P2zH>Na7)A>SkPLquxH0dMTnk9RXpB=4gg5{20o(cB@1b_Y5b69LWca zSv;m|k)wPLMJyTn|CKg1bXBtrLF8ol6G?(X>1xdl&>oY_B@|u6Aufu2Tk(arO%J$T zStIi~U*&8gbyz3V?iszsw2&Bbbzr=ZAkRxN;%>+M9vAb)#r*CjD&!@=6{4A-j7PNT z<_l~gX-5EIYx^ZZ=8xO`dw`7$KVgYsxE3!fz*%#^-*t%b=U@7Xe{BD6Kf%fNzmoDe z{%u{2<3Czgt5#ceSpDiI4%N2e@01}gzP*!aNfpFcw->B94efrV^SZj+Y&|yjT(#o$=&M23`S-obY5msbmHg zgyjBUQb&7885%=2uiEs1Hi4;L>2bt-OF*_nd4LEUWstPt;3aKUh=mfhm+rs5eK>Z9 zF)_@qL)y-@XVWM7$<*F4EgLb6m5Ui-t8|gd%dLVs!H3;Q7dTm!K3D?hfx}e?pT_L5^6#&bCjpHNj%pzM;kQ2hI z<50*b#jbJECBjXwfm>OqyK>dXNZ>R9Ie^?K{A{@-W3_XB@h&e9{CvR%Z2v8nlcc); z@OtAo*nfv>=e%{)%%ZtSIh*pOMZ=0&*^2#?o0>E@CiaKUx}B?L8Lcx5JH2eZ(?t^v zHoBqkDR8sU9{R)r4#iQaGavmQmuT>Kqosii{3P1x1{y6g8(;HwVg9PVCrTAhsrCSTAWMfcbF#82yMCIs8Ufg#8O59(fIp7$6VvY=fs<3; zXhh49R7E}G15x`hM0KzY6ffF%a8#ktBAm&-7MaM)ov?M4S;GB-Lhfn*UC&kFg`;RrsUU` zO%g>v>Vhim8~tO=bF6hf`(2P(XIM^uwX$bD_T-Qfhvf%s=6~k+g{yP8inllZCcs_* zwh|d+ie~9TC0T6A{6WJheTAjDRIOsuOVI>g7FpN&+E<0HX~T@;D0-Gy>1oF6pU)?(M}|?z%+eu-5!opNjj?`tMf-;1zc~~H)**d+=yc4H zOQsxtLK%vRV!VD0s%fvb< z+1kod#AoDm^~fLn@Q;I!$Pj#yVrcp*R~C3rZ(_Q@_qac6YWtePFVi#Km82d}9Bj}! z`0L4_$~ZufjOg{2v|#kl!+9j%ri_EzoMpJcNr9X+6bWr~5@Q4<2@D_`#Me5=@B$OQ z(P1fOFI3|&asqQAHzF6o#_OpS$(9k>YY@BWfCmUY#crb|A}N9|*1EcLgR6-USq6=y z2ZPu0ZKbmz-R$I4OWkc;=R6;x&EX!XQ@NMX)n_>IGOrnl~ z)9+^jX_W5Lw3I+S`eXKS?L5agw8&^VeBB5tK%QswnV%>0EovqxZ|>dY^H$}qKUpY} zjK~bB9Z%9Mf`y!mv8-hpmu+gx7Rfs%>`-LA$18Y4)-O}Bl{sBpkVsIGq+FU(F@y|S zMs=Fp%fSPUIlV|k;_Y+_qtrLAG4b{q>?{WI2Ufpw<UjbP>7b*M$6mx=EoUl@cT`+xwdG4sEdk3<5*do~?Sk!XPlYc!=COc1gScC%ySK!GOnGuZXb6=XEySrcO|BWndZ zc~46P-FbAK-A(?k9!!p!-J(VVI}=NALMs3B4IE~-+ZxU4%9#|}r$qWj>?Y-XnDt|s z_6cm;#V$=c>QwN_wBL`DYj1H+8}elNh+YPy8QLOl-=GVWSr=+3BN1$ zQeEdVW#X-n>Imw8gLmel!XXc-8qi;!hu}i!;3jA;11-y1Nzzh!96&6S(#jK&=QvQv zYasn=eANDg(w+i?mOQ{}%K=J?oD_y6Y$Jj!wjXy_5Wat}hrrEHz`6m`j;_QwIxI*; zzlh~CrfiYgxw)_yY0u&`kYb3i4SUZtBhJ{wF~2cqi5JGcW?O3RMWcQbaVVFI;S)<^0GdXYVhWDSF) zoIzqK4+zxU1??%gS2;g|PR&wLR<)~PVWY+b%Lvk#0BhqHR2U{_p4u`60I)Bf5zvsu zIc}@rq#oHTgsI>AhK6L+y)mh~0F*6|2+~&t3+XAFXGezfVvGeWdhH4Q3`{Fa&WjeE z;CsaH2!B~%7TT|)u931z4<`E%#|s{Z52qv`6$&*9@4weygO3}#llIy2a0M`B3W5Tf zo^L*)*swVE7~2<3Y^Rq;*8RhmBqRLtXZB6 z5>>ecMe{cYXTd7FXr5`*oCv{DZzLwCx2bxE{Wbxay7H?Q-k)}hfZir6OUwfZFg8O7;+r%o5smMx&~g}p(5uCPF(M=# zr!}@rvodU*5NGMKY4TPM`Y{1?R&Jn@olP^s4ZFBXGV*XC|0} zV32+cZHR)k(R^8N7qgDqqB!lvl)AiDUI-2^_lWXs?Kf60Pn8#8`u zv(S|;r^9uU;Ym4B@?`}Ap4;>a+8b&<`{@T~Anh0tYPp=@LX7>r;>>P)_Z)8z znd~DK`>v(S>#Ogj%_lfHaovl{h0qtg89`HzBEXtU-Zp}~kxNY^9^bi7s<3yBu^i9u z8opVuo$_l4g#XxLcGIeS=BQTzPsyzo$<)%y6i5t&3ipfva$vQ?hUxFi#kpN6L9x$Q zD9SPnrG$7Dz5+v)7HWvPesUXO1I8`X&erbE(A4S;_SH5MrMY>eb?h|<)B-ZpdAs9P zST+Ztt9Em2PscW@dCsB1Z&RELY)4Is`FI)vp5@LG?CH}WMjm|)RMxBN#cqr|+7f`+y}S0e;Nwm5 zr3EoMFMrMy`Q%54npWjM*k1&HEbmUZO7?(;s#?fdg|EjQ=g7lI>rbAe@{ul1A1hj;46@^tAu5M)EYmW|odd_INbHmU@mx zf<^{5hDO}n5Dt#^MtW8du9;cN>(&LLKRdraXI8hSc#OK#VaCKF z!Oc^@O-nks!oIyLFlkr%vd8q*{wkG7Z@xVNMoaa|^&Dj-53dS%X1j5+EpWP<@4tb=2r z_OCPvq$Up+u(i3Px%pkj+Uah2b+x@=R+Dajweyt;agN+evV;qNOZH%Xu`a>OFbs5h zzc}-xf33ITjRzfeWMc>Fw$a7s!47hzw=^1ha@23o)^Gl0P*4_|4)?cD1R0F>WGEn? zDDAa7ST*p8^dBN?7RYHGlw=N4#88QvvL88Gy<(+Dlt#3x9d-Jk zSvQC=RfQ&yGdzl_SaFg%o+<QO)sv$GsK{d^DdGVSTzyQ_n(sYzmSt2Z1*|vS z4qT>qj}J8#WyTi94WyhJQ!6z>d8912p1oWf6{I9W-7D8c!-hS~{jSe*9wZ;5vQaEK z5B1k*KQn@Pb~_i3DFwO@{U#j!le*aN>G_|yYmjJztAz5f+|_zPlCvrUdC%)r&iauh z{Ro+`Erq2nkyRl z$~z`7bw?s83s_NV-4{Lxt%fdESAud_Ioqf56a@d{E=O+hgnE5n5)X12Wnxbiq%N3y zhTld6*&esLZ9GUan?^>#DCbdv<<9$XVnCQMkjs8NtyZ;7lWIvw&@K(%Csc+aS(l|T zRMWlh$o5LXZ?gARxRiSfq#T9!afjpyh&WFX=4z+m#WVMsOL^*E!q|-vKsCs%uO?m4 ztUsa?x0dmk(tZ~ct zB;mLXo#|tj>C6@_Ky}<;4wlCguc(gw2jTX=bi9{C!<8Ic)S93w+D4HF&Jru^p2 zF$Hn%6`H-p@nhb|)nFaxWLEDRI6xN-mo)Ra=j!TQ^D1HsxJKLGv#7s&(^iK9#E~7M z&|%b0*+U^(hgv}m2^4rWv&_{W{ICz4rqTpsyt8B*Y*8zA0f>@Jwc>lIWPR#TM zb;~_eL$)((;FqbNQhF_&o>z#VUg*6ZtqV|6nhCl2Q=wC+wktmNgTXOr);Nx_3-&;$ zDD2C8e1bMNCNlj0G3`Hb>OU}zj^V#ZZ+hB)w2S_^{QtqUe<-g15z~^CtZaVRtgmVv zyOWf$fTFXZxJ!5JSR}1L=RRumEhXjl6n^YNX@^@!WkuWnZ-rxDjcEq3(7w$y~v z54Cm(i)Ay1#NrHTvrKN0lBH}hvwM2b4}~%dO@v-fQ_i1#dJkV0k1ZC2&9V>NQm2jz zcv587V*ovyH;^hE`Eptc*i!`PMDI zl__iVp&W39nV4P?Yz1c()fFKZl#0gRKqo$9#xL_%U*1R4;Dx8or88()o5N^Y6zRp} z&s7hb!qIQsRK+HS99U40gztRp53zMBOi7DTSNX|1l)hxecKUln^J9$^;QD*++*K=I z{1WH%I||lVu^)2^BZtN)&cd(2wI%FRcuQhIgi5yut$<59KPn4u;SpdaNpK>5sxqX| zVm|ScXCF>QyIjYeSmjc?4r>00h`>9*35cgxi}H-jntMw1lEiAAoI+cOp19gpv|fg^ z{Bt5xB@78Q2NZJVsr+C^JFPH)=iT)vHA5Ni>axATBuMfz1o{{8!KWYGs+e=0Cstq?2`FQr>dV( zC+fpb`fW*Vc#`RvLXaJNG?)bp#O0a9{?YN66o7lL+WU8L;bM7p$G(6-$GK!0nreF$=)6xA<+Hu#m+=HP=AEo)J;E=JPL!10sr`NVA< z!Ql`@%9UbW41#b$0nlq^F`|O{kH2s)umz1au~MB>vbh5$1iM?M?3DGgh4)6#70>YK zbeQqOcwfgm{#<0^0pYM}gl>iVwOJbIMpM}mr-Z{rkMAWk5g`lBCZ9fUS$?mjtqqjMD{*YUg$5}Z&+b?xmGt3 zwZ(x^bUgaGThehd`xuKmW};3@r2o(WY|9HjnUm(pXOW4SgDZTLjxeR;{7w%@rr!HI z9#Qqq2kD_NL(pzJ*zUrs=LZZ!ftMHMYtsxWjp-U;KuT%5in8kj3K6DZoNEvO(9U`F zcMToZv2sxVWJ${QOVEgu+1$VIb-$<>|)BcN4r=w+I`#&LD^mPB6y#3$E zME4J)@INDy#-=l-NObqH!h;dR$eH7(%2XEBMA-3)+|u0YB$fv?S$ur!04}u9&_3we za=OVXEU%JFTr*3Y*AMs3i!9pwK_%khEJ{ zaxI7Zhc$Hn-KZm{6cUT&1$XLv4 zd%L;&j2U-$zcjk{Zd<+VVLa}*)Pt>GcsDBa+xf(l; zR7Y3cz#eoY`3G#_5B$lSH(OBXipJ_wvg>KC0f&b=uHlCNy%@?jB3 z^Zim|(hizpHv@H}jZbGGvaG)CWv~+;lx4~LLUnV<;g@rG11oIN`Htr=>=fTXbjB#tD}LwA-HDkE|`*gHiDg@hXH+G(`4OI@b;;slSA3<;Om zC!W62R__nK&XTM;hM)Zdyk+YHCUeA;5-lBeL-Ep52yELz8BQT=ut_w6z{b(|kWTat zv=>bXM`+8`%`F|I@mzw;vxLQ61B*vVVN|9&GbsEQP&>Ov6MAB(aK9w~;=Th`IqHh0 z`(}_HnoEsx3a=lYU47wgBI%_+PrUNjUB(3D8++^}^Ox8v#Dr{mx5ajcz$jY|!Mhl) zhpc-4mQYzq^j~=EVX-1^*kIhJVO}bbq(3GBvfJ4iJEUYzcw(aIgsVdy^b28~SEwny1&U>m= z%_arbF~RCr%NSaqr8{G2S13Vo{%z&)O2`O?a+yXO0U(*~J>XN!3f8OHL^FI35$#KH zCX1U5;3_+4Bw#{1pP0ZLqBZ}majXSDT9)wai@XD)|ED>WlNdB~f@(7(__WXRN(FY# zj&*9^9{OSL9B#jlb&NQrYZMZ`)f&7xN`8C>QpVj?9jusg)@n!I$_ZBK;AI{I%e;3I{!j+Wa93GwfS|#Lg)t;k6 z?RY&<)XhdsDEqza^KxMQJVJ+C3OovE#9)c$8eqA76+V5Aq_EU-%=Z$&6t!UY6OlZp z;1@yD6B~x^c)-Y$nS+Ag##OVPkC3PTI=~|=5t8MZghPWRP73g8$l;p=L$7cEA>B*g zEES^-6n!5FhajP~m$@k$O9Q|eR%#PdA_YdcMQFz{BXpym1@a0qpg4yz+i6&rl?yB* zi$)Kee<}Yk#AF3p!(%R@ZY;}$9e-ku3OiRYiJmkM#Y zBnI8qC%}*fJ8N$&3@%1M30}nz4+_BUj>UbyDoh1h=0PeV#~3J|Mw-lX=bm-LIqn6K zCn|ruRgA)r!_C;9rxSb(=lbCOoAZ*-SQGd{8<&j5Ro%b~5Yam{Qy1c=S!4wSHatj3 zWk#fUHfa;n_G^c)yO&1zXv1$yp46fWO79NcqgChH=(rHFG4#Zc$WCCz74X}G+Vve- zhe8&eVp)E9X8XHc;!dp;APP}!ddxK(6AdfeY#6s>YI9NrBo0_~3sLaxj#vHH?R&^k zkRWdEN{P?h*e%gU{RCj<%)kRphn09=^!nni|!Osm- zzn@>rqG&E4C0vPvpz*i;Y1&)oF72JkTw=zTFt?BTgYCs4Yeb+ai@;=6Mf7a7Nncrs zjB@<#)1Ul5dB8Kx>jntzl@M&n;cX3maC7{Ow`>)Nv6*tCl`%0W5rxv^{(X`ag-Z^0 zm-J70!cby`_BLuaPH}r$7`UE(S_raTPmS~&6EL9ibdZ7IL)HwAae+%{?6m!lsUxoj zhm&TnEa2)f#=sazgP^GbmLE7?7p$Vz^)RwP72jzg4c{QR{t|LzgQZdbCZ0$nvWp4@ z+8;3Q@khVBA$dU+fk$xhZ3*;wF_y9w?JyzRo)Dd^`ZvWuoW%qK^OH7Uc);jf61=3R zHg~%?Dm(=m2`ca?d90PV0Q!jdtLgBaFg;Ycpuf0&dl8htgMDKtyn%q_ig~EI*Lo0& zS77Rd?do?>lr(&~CeStI&cO@XfXi}yGw*r6e7;`1Z2iq5H0%IDEiHhvo^Ao+%%VOj zu;)etYo^?JtkeDp_38P9;y8!#DG{hsk$~(F?OF_^YId8|pY*t?iBn-G)=Wi$OFJv0 z*7ie3`#3_q@F)$k3*c6ArH$EfwmzNH5`j3!7;?jypo!%Ur@>P$3!gb+Jv$E5v@dOKbfUMBWig#P>PXjwuRKa z#yhU!_idu!H(*k*!6u3Nlq6PdW6|2*)5EKpx;Up5yRx8Ew_aSz&wiZOVdg8rNqi|< z_I|dT`7pN>9cyY?-O z^q(?vag(cKUEN|JM)ek1FQ{+7IC#_-^t8(|T-*^Bd&jUV{nHyCi31-(2C+w!5e-Mm zmLun{j=VP-SR>{+G_jn4gurz(_oWe^W*&<$nnww_=GU^W zts(o4@LIsGDy}f^Gl)}N$TKpShl*dVBXD3*7N08~KHQTYfZn+QGL~nhnEue8rHnxe zR;XikoMJnP1r4@M3O`r6dt80MdkR7p6W4lTyn%>_Dnp6PtUcQ88;9!4 zEE0}6}!anZ-Hoh_E=Q+!=3*#^ z)rYP2B*rgQKaScMNl&9WBYXf!&!$=X1hWr!S zpiu!kYX0-(km4C{#7lPe1CaYx=iUjBVjA+7jHYr2kLR#FM5-v}W5hoQuYKc00(b-r z?GA`Wvp9%P2Ny$HHYZ}(KZ?FVOK1l8-Sr8&oTgzQb$k@5X(|yT7Vx)z$uR0`*A%6* z^?V$r6Ur3Mkf&Uqh`^9dpXCow$sEOUI_sou1`!A;eGcoIn| zeG2X3t-{z9zmz0>?attd)rAO9;N3dveUeBk8_*gzoT;$oO!Kkz3#Mr(hB=r@9;-_- zhP!AvBBF*H{j^abyLy&%7!IT@dOl$g}k#=MFdT_v}s6ME+ zvTKr*EB`W)`;O8dI{B4{;2;FykHBKWZ`mm{M|Ut4N>-^g_GDwQ!P$1boXx?R!P%Qa{CkwrCro zRMij7_d-y_B)i*t-RP;eG)A56(YW%vsGGRT)3RQ{q-mj28_yU;C~!uKl)Nb#)JEYg zkT8M=uRL3Pp2VmHA8v>IZ7f#tvG>f?EKce~tQvQsT*pzOGS4>bgScJ^ykhF43)7)I zZ&V2K?=mflFRUvM0=u6%!%`Z~wSS4IdC%y7{}xIFfWl-yDtwP(ek5X5GW)|Fby>sD ze#f&|%WR{gF-?i~S%h6%ung=DQ{%bSrD5LZ%x5*v1z(9=bGTRKqm@ckJZZH|VO6fH z?g^3v>nRRdob|P}!Z8r1pSi$OcuC7QFQtP#G7fi@9{Ch%3fWGCo&2k@I#!pBI95@e+r`=$^CMc5YscJIa{|z6Qlri-2+$Y zK3!BI9v*I!=ajRsEbw_=CWfP3Vb1T<4@sFrb1q?%$?Jz^u#Sz&_vCHZ znlA&SEi4bExRirZ&aNUoL>iYm1xn+1?Xzo%fgZaum+{GR|qxM&1wj z%3s%!D(9OYIaB&f9qTj90&fC7->`zRT&DkqYyS_H>L2Qgk%jKRGg|+OlKJmkJKaAH zXa6IkRitL+fYk#1<=vy-<3!V}Jdtu3pM44{)}-ZfQP{MQHmQ0xd1_6p<+sb2Plvf}BHMD(rd2!>ArPacaq%~tYNUmkPMWGXD zxjk7;`-0=M+>m1&&erhK&^Z-7(_6(9m8mr)m_M$mlvur>hV3Y4V$#w;^E$geFgz{(^Wz8*#<^2<;-KX`NoO?nJ^Aw(5VpgKjW)_~_j4e0LHBR0H zj#gIQPCZgj{h<|!FTb6Toa@%DyN7?Ig0u6vvXW*pF8AyOq5%oWgM_hbd)RqCJs-eJ z6!%7J&-Aw`1C6oWCyeHsp*5lyeGR-?^P52`CQ#+N<=X5)Q_iJ}fGdxoBfK+zMBp|_uU=eH;o5G z4itAKfE=unpEFLdyZsk8R7JC-b74rbeC0g>b3GzBT;?gim$$aZ!7}kM6bwXY@BOKv zCd%yqbUK8SXJtW?iQkutYeTVA-Z!frkX}eAba6pDUDlc|z+6xjMv@IYFiMf!W{Wx6 zx2l&WgzVuX7?eDT!>l_ePVKEQ^4LbjS|D1Mbs5f;i-YAKrw#4A6eJN~{mCF;q%;Hg z6&3lPxUh(^1ye<}E}Ny`#X`A{Uqkrcm>%R_+1pc`@Jl=dJVxX|gOE|y^}t0>r38(K zKgUthT-8a=O;{pO4C?nKnIRlhiYxDz(Jx`Xh4`DT8%*1clV*#Cg6lJ|(Mahd?%Q08 zaJ9B8Ur)28wv1Dzj9HeEv4f^@>z{se-64cTH(D5&JBoI;VuV^>n4^23B?sPxVv?s< zZQb;T@uIFob$}I*xd@M&bF8|_)L{w=>7I_SS2M|s2|U)WADf!HwtKEX_!Y%xXg8wY=)DAD|iZmjJK4D z-ppAG@-{=YZiJN6icwtlQFLNb?s`*RoVu3pLRbVZEi7oBseITg^L`h9%I}dO9XU#4 zT5#AKH~HOgGly|>%crQv3TFKs7f|}~g7=Ukzu8mR?w#L`TXywbdiJR5^cYp%;Mb$& z^tcc*ZldgdOV;C6bVo2u#;f(KyInj2Lkll@2G(4Qp6GpWj6Ha9bZOtHs`x~78Dw{! zyRV}CW=#swQ%r98`0{h}XRJ2SOQ`(%gG=FZLijt+7ieYSnD4=f2@e~+PFut`ED4eM}vg7$>aG?-yGWc&=zXFb3hIkl2jtMS<``4ndYT6A;+hpI-{26u)u< zX;JHgK{qbwR5F)JwEo7?F4u{fHH}CYngN?=|{r4I!{?Rjl5A7BhndHu8%f%iMsv-!IsgI z&s2b-Tx=f%9+yz^K6jMy*c`SI7}&`Ou6fhuTLQ?dq=W@Z%^}nG9@WE|GmkIV1f)ok z9jcbM;MUOHeY%&Q`$*0~5l&w*vmWwHb#4xB`>P^S5iTq`?>(Y5f#nJ;_4#)i1|RzG zBTHZ;+G1(jxqi}#^5rB`*$Wjr)kMnP!dZ2^#a50n^^^Ri(B#tX#4$MFNv$vI>QZBZ zz|khytW*ro9G5s2-}9=~T)H)W#)Smn!mB{sKwVTgt9NI$rT7u{zZ?uoyc6!MW*INKoB6 zVmoygfyb}vv6Q3Qud1kIsjH(^MRq*lM6@8y7|+3vO%lOw*d`$&;(`^XBg@fj3E28< zez}q@g)D&sR>kGkO=}XSwm2w4bkY*Na?#r4X0s0cvwyPK*|G8154=QbBzd5P18O_4 z=XbksxQCsARs$X5Ph2fgJwEjpFs*3vO~d0EOQ$do4QX?~8aPK=tQq4RPvp2y4kAjG z;`qe{XPLM-Ox@_?N`6bpKzD_?;UKxEf&yD5&N&(?p8bvvo7XtdBey#E6r7kC6(ym3 zI!)c_crxk*Nzy~xx2GOg4QwE&&&Ohys6-jQDt$<{4kDH`D-^Ix{u2lRV|X8;9NYy_ zP*f)@fI5w-xvXAZ(K2P*AGgk_p=2Si?X8)3E=}?D0NP-&U{|y0T9w zcneJ23NHQ^Nc_e2WuS!*IG|EKk6$|5Mx0++4+0)A-i4e7+U19>E>kuRhf|%CB_k!p zpvQ~qH5*c*O}ny6aV)iil1(>8FI)}BRn(4{S9>`f)!9=wJ~JT?LmcY^^uloqglB)k zl)C-{>k#BAr-F2&JQ%JhFeY0bhsdV1ipU<-1e+j`9zzQI)Oj@M^54 z76HTN6((M!NK9su+|6{tQcpJH%P=yKvkYYN;9Jt)w@@Vdx6d+Y0?&@|s78P%(I;zM(G zUV@OsqVBvWgZz2-9CWoDoY4;r{Rk^bi`mg+B@*Pi4)pkEW}omDjJVQz(25_#mjP*i zuP^&oc~E32qN9o@K^(!Y7ztvHta8ewwdSNdRIlJHvcw+~!G~v-r(ceqM(_u}) zP9S`oMU7a3tC6PpXNL)rIT6{p5B-_RwM0$16^>y$2kzKc?rJoDBdd!j@UuuX%rFZh zSSg}3`n7|IfUupw1hl%Vr3o-<(DNv6Pt~9T^_3ja3=bj1;LZD#c#_olYQbF-^4V^o z9ia(GTbJ4^xHH|I8agLohCpvD5)g?{)`AnfY}X8E8HwviJC>A0=V&#GsbDYx0RJ!s6_N3F0gAOYPr)9bH z$M~I!%-}cKy$wH-g5*O+sxb0J+orqda^zpihh6aWiJ2)hNLoy;OWb=EZueAPZnPyy z{r8y2(Td~O+jU%-?&Am~9jSwi0t82|G!!7Xc>83sq_AyFGv!oKqJ*g2$UV_Pno9(7 z_~*Evl`b&k}SkesMG{f9baji|1H4V@Y zM7D((v_|5Jn5K=FHQg9gD7yR9`+#uj7;IlHjbsfgNfRe+(mbeJXzQWt9tKRZ6VRw( z4IAtlHYk}an5a)cbvgJzNlv$@mn*9Ql~*5vdKxyr>c?+&ROvokaxiErLSU78@|u{K zIw_i2hge)vI9MpWx8PXxQ&5Z^Oqx&1jwe8rE-Lxw@xhJ|A>TY|kDomMZe#f`J8T9f zmj4P&rKkTlu5|SD|4*)TNowoP8_mdGIW;?kq!amJ95-ak;pdbb(nd{Y$@8G*!STge z5d(SoCnon)o1h^8to4f|6A}`5EYl#E$HM0+RcgjYRa84i$UMFd9m=m3BM&d(c6+(p&YVrXuE$*8JV}-+m#P15`&eFdfwba( zcrouP-PY{>)N^~h9t*@nG*K@fZaQ(4Cp{ZO6l3z=H6L`%ws$5`{GK12^D8U@zqo3((uA3 z?O*spr>LRZ;IEh0S{{FT^feMuH6F`mjVVk%|Y z5mg0XUP4^-M2U7jf}j&$mBrV06^Sy;Dh-t!l?(MpUyf2RFDIW$YJ|GQBh|SMWTs--;Lo{+m`Y_4C@8l~MG4Kr676e$GtXJoqx6m=xG3hcFMgiQH+ z&%E!ZcRLYnWPxFSg1L#1v)+F(>%$9J7I5N>mgq6SFf;{&UHp1vQj zqr$1T{2~U=TB=yZxezXjUb_MldJ(mjJWvi?LIV;3a$0_2(N^yX7>OrM#$OA*>r> z%x<-(MiYhorSb+&^5CE+QSvdACo);AA-xtWBiC1iXi4M@3mNDp4G9Vo#;r(<_a_Nl z;RjyEBICSp{`58{YR)Ugz9u6!gKTO|D7ZUcia)3xSd2$9$2}8c!#U0K$R>yRT_>m=B(J!9M+dy!MzUgUV3e(V{R?m-EW_^4qH~dRF zO_(s2womOY3Y4``JV;EonNFNXJG;l{^-19IFBQlOOX!$RilMk(_qk2!97T{JCsfD& zJhl2lL2H3ey|?3nd4mXyUyEzFsx7U-$y>|mC6JP4Vx6qRe;PMMzE&^By#qLKFe;$I!G5*wAx zbMk#<`dM!9uQ9GIBV2!pNaK=wq6AcC9if_9ci=c-?UgcDRdv&yD<2sz4O!rYqCXfz zA>T;ga6Xr68%$%)8Oky87ZZCG0qICEppIVMx5PXsTw5;Lr&bt z-PD@=d+m66wD8O5vjiuBgHC*n6Ki|ygreIaL6%7eDhI(y3~RGZ6ar6t9lVqyPJ+ht zGH_*5eDNPS-4r4%G2w8CCE8Zs32F(YWvjf*C{h;t4ISehX$lT$3WKAuag;NnWTIQh z@Qyi_Bl4Rs<&)%lLim&u40}q#ch#=TRgA0Bv~TEXh`?U#^EwBF1eH{xskg!LS#ApQ zZ6=1&@ScB6h$ch?Gn(s0DvZeIG1dmJ`P&Dth8bCa3C6OVkkVHIZaCK54_iBPTvl z7yf$eNlP`%qC=>>5;2Xfp|VJrL?h`~M0BLBJ-(%^So^tyQ&jrZc^X4wZHIFSoYdrM z{W~g#A>yoI00c>@_@&o3s7T9Xy9L%Lb(Pv49o4 z_{oiP(oxN$K?@u^|C=;y^%P#GRDm)#^uF_c%n4gXWOP@qFvw#l$%A6FPz1VT)}QL@MeI~Z50aWps+NOs9^DD{+4S#_a_g%>leBXnU^ z62g;CH4>OqF-#ufKxZSOGh^89;7OzKthDAI6Au!rSIZ){dMFVCHgYa0(G4X-vTU{W z<=8gKyB$G|qguR#=Fm)gF1M^#GPP7r(Jdq*x7f~CpSax{5QKn$uRkDiaz_@7K%QRA zsQ_ex)gg}t=yh#pQc?IXz31^9NU3Ggv+P^I(28QgzpMORFXJZ>4XGXUNuy=UrUu>9 z4Z{~{ewyO$%NfV^Bv828k*K4KOSxA&n~d%&B0>MkLAA}t(P3m9boY$1_-a1nsqdAW zn)paU1>GHlUhL_|NO~PSCZ|uatD=HJa?T;}*>DT7Ifw9~7@E8uup@GwmNcM~dp(HFeDK>iDyv^AZSRcYHE`iGADV~u zugcvIUyW&-*1=yaUtaf~Z-*{!@4NG3);yUfG-K=yNxBo-Eip1BK8-xy^IzWsrzHtS zV^$ycM{e(n=OmX{pNEe;(pm+Z@*7h0))R}DZXTbWZ|9p8H9Z~AW-QFb9XuaL>owo? zUiW7$+dk`GZ@OK#U(-rH-!02M96_q9^~*LgF58~Z>pWXMU&p8C%OyN^r)*Yi=nY&s z`lH1qJ{PC5nKowA40G4gK3m+HO>4!qN>)wx#fz*9?IjCQUsGP89-_?KUEjMrxMN@G z>7Ozh_kX9C><`r>L^~n|tgmstzP^m!zdBTUwz;`JA96}yX|8d7ET=s^JGi>t?jKI) z=Swc{-&0&N^3K}0+zrN`bg9C=AFuAcHY09NuWmml21-&!Qj$M!2i7moYes_+1X?|u zuFtbAN?m%kvbj0GK1WJgHVK}THn?*>wCA4Q6V|<5?E8j)y!0~mS+fdiruepVGMzvI z=c15ER4_R*+oqTW_}AjYJnRozI$UCGw!JTqE2@jzlN#R@EowGKJS?6v9XdTczaIRo zti5LCXI60ZN#Z88J>OsMMAdO7ub5SyRiWOGueN1y|NgNAF9j%(W5N~43Y_N;N8~qC zWLM1~*=02Jui+@RiZBdKGYLP^Qus|uQk&OoTn@`RNk{3=P&-SszSKX z{!A9w!pv88yWj8GVLJBY`$ZNR@if${X;V%wK2b>|_{VUZAxs*~o=$A6AX9Y{IW5T$ zmltoQ5Y3L*o~{hPATxd*IW5T5VCXaUy08~CK0?f4jB;dMwPv)kunfS@lXTS&Pvv@% zIX4sT3|xw?+6*<)lO+rXbFQvp-<=x2^PZ+x~S&s>Z}tzZ>`+ zeITd%K;tW7wt;&a<;$dS(i4*D;Uk`6W}`Qrr|Pd7cUzBPd6wj8 zJfsOvhw(=A4qEX`rkN=G7$kno%k0yXB}Vgs-NDQUXAL$DNc50uhT%#myw61PIc8;} zz(UGttQajqcvTC%Q(J;;n^uG#=JuV_jeeu2SGI2y)A_}TC{|h|2kDKHObW#*K>nVn zf)lxtw~w{HUaUqKHwx?Mv-A;*I-PS&%a?SFsA_K^%I!LCFqrD42Q8o?vtlt^SK8=m zzoasP;+r<(rXL)0UeyN?ESMW!HQdo8=mTn@N=8frnRTk>jx1sR4qL;`b@QrI<6E1v z5~=@2p3LS$se@Ys<;ECV#1qw1cG#MT;ky(|{ z&{SZvkh>u>*L)mt3Xju_EMDyyPiXx0&bPVIOYNM!jmh_zxxu7>Ex8UdH%`n9eX7hb z(pY@L^r~<|a_(JwdFg#?VQFOJ?=Yb>n3oiP8}G(~tz;vV<^0e4#^ymcCC_dcy@ev` z`@@Zc$PYCW<{K4*L@>LmjQ$-qG(X3|rdMk5Kk!h_Znt9`VWurJXrvaw9uOV5X-o^H z)=NKjWMM{wkad+8=ZZu}gqm=iGrG_e^9pWe4pA+t3I?{ipe833ftx0#7c%Sk`OM8` zR;7Nic~N5vDEt}K!IEGkX8Q3zEhDUdur^}DQ!!AfHrACW(>L~ogsPM9rSS(dCz4mu zb}3Xo^;JGwDwyuWoDls+;744f4AI9l;uC^BZOe>~&b^E`MOUqA%Cr8d@FGx|y;gn( z+LApzxZzK>2~_&7n(kD*d(9fpo*Zy8>qDs(l1#$Bl}N!ZG3U>PLyv?g`R!n<$k2 zD)@hG`5K`*(&y;6o#r}b^FaR0(sN3dFwc5PzhSX>@>)=K7JNDjH%{)c;2Q9=jTsqX zdj6~!Cr#rt1g>OHZN+Mal$&}ibKX#ltaIA24R-30Q*T}@q=%)YSm+~T!jj{_HO&SL zsSQmB=4=%<*EJg*^xUrV_EnrO-^h)ygo_mwLqumyE*!|HIvB=TTug{)II5`UpLOv@ zU4A+?o+vd`>ziRZZdx%DnyglNl=TXQWrq7_7vD!p-f0IdD=-mMZ~_l%aScus5`7IW zerqYJU>#Cu*v=+<&&t<)B9Rz4#7mPtL5}`xkjMo5u|X{T?=q2^+B)->d<;;&k*?p; zZ;l`+tJ-_!n#83()Dl)Zaj89|)De(nX0<7QIbs|K;jxAM%^{tv2TcNnx)e47bzw?4 ztIhNzsCC_AD>`G1JJllBA&J;iPn3-E`mzMInDQs_tq=h8lttYWod8?vxUtd^_*r^= zzq$X@(o1K<{Lmjg=q^14<$(5|DwXcQGy4j`N9On+Okl?dX@S2S1snetV{aK8SF@{) z#)+9ZX2zIeW@ct~%xsUDF=ofi%*@OfGc%8wIcBDB@}9G6@4B_C?)fv*)77nBTGLC9 zq@|W3G;$hxQePl|) z3x*A4aNE^=m~#aU-g$1Qf93TuDU;l6!4L z4PjxFxdx~fU)K$tEowa)2heLbPB6>OYvpnf?n5KAE~boaZjI4E$$>nT@Ed1fxveA~ z?hVm=5z=E${ijE1SObG43w}6-@0UqdEosTb>Ic}=M!YZl(!if*XyJByRw!v0%&FPIXW?v5Rzl9aJmA_e=|LRVaC+#!IYkffG%Iw z;;(kC*r$KT>iBWOCRruDGk=7M5T6s=Hb5n%NLD~Y*M#hyN{d5*Ql815tXMmoI$oJo z5u|HpAuqMYRh|11TdZsUyma~1;RiBb%1_Gr3XV((1l4fPPM3$jx2wOfWYoUS#q~3w zM%-BC)q%n>pE7+}cZqN0B`?JIUS`UjpaQ`&o#W`}mL^r`YM8M=VBjGnGJzl(5Ae%v zk7Kr(&%w!*A)PrZoG==%?@v0z5b00{uJTi4KCj2F#0A&K1#Qn(JQf@alpYQ_vP*}V^q<@NN!D#59DEa{j;5m&` z*f>2l2UXftC^fF7h|{?9_DYn2$T)@3d~QLR+kgyQk`=N*-dKh2wTOAYXAA9dp#!Fk=l(TA&hKU9S5fSaFi=Pn^yfuaFUWkFx)Kk=ye5Ln| zWK$A_kVrjxCiAhf-wxE*C?!kGPqI&Id~nhU{B28zPB+A4)^GACyXU$0H4=Fp;9YW= zjx?zot0^g?E1~LhGXjOYXBb!5-T0m2Zzqgo=pS3UHe?V{!tUC<46RX+76yK*s2qD? zRaQ$hJkT%g3n%wb23krMB6R7EF7Pv+&9Z_*CLPSq(6wp69Z;b zB%hGIQKjH=tW>WW1U&R#As7@M0c!U{O4lhb&wwZGQ=psb?!_qsd^mkp;5p zW|?t>wUcfqmW#HQ~vTq!2TINrv$3&FT72%4ix*&B80Tx}?YRCEunim2qm8=_961S$8l4}$*I;vgv6~`S zhiHDR2m*v05`U?pFg4`bc#q_XR*&5t3tQqSW@kwoqy7)1PXqfygxZ?q)bxM~f+xGT<=Bi1>w9}{V*CbAW3yi`v^+pU$N>yV33jI1XHaDu%S~qE1xL>41VrzuS zi@ZHMOq$G+MXGuX&6TrAB~U_0A)un0>m#CNhM7te#?^)cc)KBC6RZhkkf@^3J1>Jo z`M6V^Y1YVFF zK^5j&v$c4?J}dHzZVS*R1|E?vxC>7gy$O08fsVlU9#;(vP3u{rS3_U_K&BIR<;wU& ztXoNhH!LW&0#Za|EJ<}61Ro%-h$p`%CtoMgmys{PAVO|>Gzqt6AYvUV@DXW2q6I7l zO9~B72U8yoF3PtT`X7sTyj`WV@#iXUZYK(K(*;s`$}DtLT9DQ(A~Z*#$zJFrTwjvHF2J zBnJkza`SFgW-Cem`<83oa&7!{Q{G8S~EV|G= z?HC18!RWfo;{!es8{I?)d;)(^)}ALV_5G_(w@ksWg7$5!wq7BEkvQmf)%N8hk=m^B zXQDVWLjd$P3;{pn+_8=1*6EchW*?T;xaaBHpmTMEN)996?!ac4mMa;6b{n6V8VwHV zZ>6v0)0K&6IK3P>_1BjX*Ik`~+{m_G{GLu&|w0ua&QmPCTP4 zMib_3#|CxS@g*HO(AZgeaMvUOtuhiMRs$C$VyHI(@m~;qpo*Gy6(tsjusZpSqIf}D z;-+pfII;^w7V4|@-F@raidY8P!;f35guh~t=8Y&rSKdYYHGIF^2>obpKJV~z?lwmR z4@lYjj9VC)*%g-?3DZElS?^F3b9`&;JJ>5Wh1H6I>SJ;{y2&pRzpKl1{@vbUg)$#| zTns}>k|e@YOhM+UiRRd8;AGQmsQ%Rj&A&XJ14QfNYr&1|hZ?xP zYU#!aJX-Mqr(N+oF$U|r|40A(UyTt^I^}+dUrc+a#ye2hq!2A%U`$a@pc(|=k(I?x z(+|8{f|qexrT`mf{7==iDfYb2W)V03J*yAcIeVon?FI|^NFA;!uleruOc?F|mGZxM zyZ-TD{ZH&L%YWqQVE)%3`TvX^X8u2Aoz2t+dAphse6scIH@LK&~wxa!St zH+aroZ%so!l)UWb;$E4WkKaunJk;y5PvZI#FuP^=Af6BTg?6jAy4lIw4QapT&Ev?WORAl-yv=O z?k4bZV*Dd4{guD#b(MZ!470mqTZ)k_r2Y9yEa@H)}G#(D*@|Jr*@_M&DC{| zeA&aD_lNF}bx?SN1*qgnN5%%P3{rCQhr6#MuXjs(YSo5s%d>l18??zJ^}?I2`h{&# zwvDcDOLyw~^UhN}1HDpuy48y>@y+%2_QCtrfd@r-R`;4W(k>+u#$nOw54pnH*Q|XN zWk~FFr>pZngmdeX)lYFnY#tK~N0syXd_3IepnP?QDqic|o;Rnw&(#>0n-c@XEgVbe z4}9QkF*+hAKX>v@>Af2D5cxYjMTFAw8D0o=d0sHPyt0x_RyMs`xOvuIuTLk|ciYDv z*1q-Ee7Jr5LGify?klZ*f2JCotaeYh$=h`v`D25dDQDb-YYWeyn2-V3(V}smd_jPO z6rCK+zBS!`di?a2BNSq-+t&qURY%+MrCWyGHJQH?6w)hC=xVP!dV5YU!bF zWXmni$`Xd>wGUB-)<33Vcw`|h>J5=Euu(T7`^&TU$Nly5Gr>}3`VU9q&jw)Sf_pRT zeMeGoD0q%9cH&}v^p2I7c7j!o!VkO81FFLwNC84^?m) z>lg^m0gZveN6aW9+JHd}bKh`_rp?u(Ny=#|njkM>eI`p={gxej zfIg$v;Go0O-MAxXrzUYL_h#xPR`&c`>#FQt^Z6IY>1qZm>R0^ID;UXE9Fj`t5!pA) zn-&iB3|1v6<^lwtaMn_!3Jl^g)Q0SV7qkr4*}6!Trv~ZFN_?wjXfOb0ivt0pj!;c z_ImH*nE+dd@V$EaaPQy!_*4uNcyj!`f9Z|6IM%OM)_x&4v<{K6d00%4mPk`rM?5rN z!j7I=Xc7%@TL{caBq?auuJMb&tJj}4U0hDMyEoZ zCmu=VCEEm3nqTY<&NeU;!dvKoFyX7j&p@b}W^#3d%v*aqgD{99L5L5GQUDbrdXz@C zCWoeDs@4C3&AB+0BU{N>U^Q23-*G9)krA>Y5l=in%CYjRiOzU06oLkDA}rj-CbZaP z+W%_5fm31-JRKt)kmrZ##}AaPnaKMCp8#MtfFNs!F{2yS!?3c)tc@l`Cc>mR|5sT3VFf>o8% zF7J-+OGK;rmhKME9K)k6)8TR)m8KB*I}?WA_qP061`GC~&>L_O>|ou*9WB_`nppJn zT?#|j_WRK~sh!HrIcsRv0*0FNbX2QbsquJ|adt-v$9Ppz7}zhGq+iU|k-h>V`kUN# zHL8b(!|La)fqcBZZK1i&Yma*jgs1SFrSd+(fv>~S8S?1Ule|$8-#E-8kMj?|luR28qR%i|ladZGy$Yr;f(1JPw4m(lS26du z3TJ+9B@-=Mp3hVPKpV)ir$p9lCZQg1D<7@vZvo8ImajgVB|pd+#NOU>yY!%YwU0kq9~aNT6&J!)a* zT8)trc+y6YfV4&I*+z>xBW5=ANnuN-g!y?;zA3t<*jOXUF^wGQStE(1qEZABH|!Wo z#TNDC(#=>`fXox=4Y*y#p@OEWa_JECK>6~!)tOu&t+;1%(6zr+%k-B>rPrrWlM zbDSC@+Y9_m=m{{Q#&6kQ zo0(I$K$nlhPNdEB$SO3-#(FX~8X%JU`0BSj({dZ`yvE;@lq z(e`-UJj3@{>V{x>nQ}9M)^n{qbWE7Ok!K*chb;KrerodH4gf1uqkqYASOwZ7_kZ^K#SEvy zPQ2?juOyg|pG4qjp4SGEpq&nIMuIhL?;31B;zK2Svr8kqbwvH&*Y zA|DeQ5c2E3ugfsdn+h+?!0-+So5QMns?9TigmhDrF`qQU6}p$+6yUT`&W4j?XMPm?JDKDNvhgS048SuC1Z;r$A{U^; zAE47bUTPdr?8W0!P!TY1xix&m78{$7SoJDo;14_0%(%nU2HWu=~nS=_Sc2VA|Q55m&7_r;tDgX3rSbN~Uc(4DE>C zQ;GpzEZ=wq5?)d-#Ov$+AmOCJAHdc)2$Ehyrn?6H&pZt5bk4!wQKY<|g~Di>ucvm+ zLsXyE(JOIf7ESi^t=sEJ`%waykgaxE$$&D#u9rWzmX@Qn1U#!(oBXVSY?jI(a09W^ zM3dUbJ>;dJg4@g#74cV&8}>-0do0CNMIz4(5?}xtBQi>u&9a`mT}<>a`{w8dnm*Cz zQ@cc&oMJLZYs(!;F1lgiiIeVdxNG;7EHqvbso-*!Sdmg{@F#pG=U$5-#R18`{H92t z6F5jT2ZpkR^=9@JR+8u(F$q;hd{OMM`ir(2HM3$_TBJYHpB2I(&c&ZuM4n^$0GR#U zJJjiOf4-zC&kT-LKLqUi-6^M8hLg9Tz)Z%lX;uD1TP+&sWDTNyf>ht;sB+^@Y1(a6 z>SJT^c9yNZVD_PN`GNBYsds&Ry@$l@y5mRa8=Y|Z$L`+UEs+nrtx$^!V5rZNIn^)wSjwlWxdP5`f5l5oXX;j#9_(|Wr(wn(`wx@b*L)7Gvz0`C7^9pu9~L zVl$l`-i=1Q*T)1WN}8B3l$QKlL`8W}W#|J5?);#FU=cwoZFR)`?H{WkX|2Lg@)r-x zIhObAMzk{y0?D*T(xqmkKADscrSuh6*tK|>AbxEMGjFFH9wz24B&?dm+MZM7(6MkX zUmE_csXb9Yjgm%)PyH0uh)+x^{$}vc@BL|7CxDgl-Zbq$UeSPp5XL7~~|-GD;dh zSEGoukZK6{mx=cpa8|8(MnrPie|ShRFa67dhC|c96T$oISA;g>nEz&N|LaIDGY2c< zzjM#A{7p0W|BWqS`9CGD&(zYkHU5{iP0vNyrgxo0vSb*}@@ocDW3R_*s%qV1DDpfg zo_}>yNtaB?%&Vv!(f@bG)2$-9Xl#P1Z|b-;Wxz*cck%^$_FGD^D-teu=js;w2p2Ob zxJ0M;j~lY!{%me5Y^Grmwr>;mk+AR@evdtjbPQF99AzmDBIe`DSvpuUfrzc zb+?-;Uth}z=>B+KPzPDpPdn||x;@R@r;!iZ>bombhrTO;8Y6W#FHLhv4Pe;^x@ion}GZBy(8JcIXTKWi#vCYofl?<;BUg z=YbP=J}|M{M>_uclSl*S8go1tX<&kJ@qB-MyZeG~?V|dThUM_;`Tb8{`zad**`wj+ zipk4^ZMTw6EL_XfSoCc<&HhRXz91IH#fhIXtjISn@v6bNlowTdw)l1 zIyhf{Yv^w2$jX}J!P=Ha{*Yl0IiA2jTYG!ov25eeX`JZl5B+9NBKP!L?&HMk=8LGM zoU+`Y%mq86ao;uF7_nJ`g-m=k`$q~QCFxqx_XWn@%&D3u-UiN z@O0%c84cMLaMswOj218!E^d4rqX1xMt9!=xP$buo^}hFHq?f+kiGg#HB2E_s0;m*j z52Ipy0+@)8;`%VZ^l2k*#L^yYdk^4aYr%0fF8iCwt`~wb3kI*SL$K;kC?6mP+}I!J zQU45{r|n?|wv^U>YHV(^kf;@1J)Ixx`3ok9g-PErmg`}|hYB~>c=3=|6IW1L!riM{ z*hHv*e_}=MNa3J>+Mq9D!12dMvIsMQv*9}O2iUh(2N-LHL{~Wl?%{bG7yM-A_OB!A znO{bU!?@CHh^2+T%w}tXv@>9d9hXQnacH29!Q%zT-~etJQ=!>!(W02;s~6npb#Q`J z1PZVwBsGIvJ7Q4rOBs$_ellXpFX#h0AtaN3*|4;b(9=%{kZuw7<{BL&^USd(DrP1?i~nM;AX#mH~2$mBNNt> zm|Uh0UH-WNSC_L(k{B0@<$6ST*AfH~Xmv}a)OPi+7YPflyoM>2^HvyigQFd=V>@bA5QgN0PCOF6DJ1g;w2(0=Xdo#kEJ;3e zDUNM!pc9CqrDFF2<3^2jO9FX(Tt#CZ#Yi%lRn$Po95eN(e;_!`*%Ru%Nte?~0kt50 z&KEeaL@%aujU7s;xA_+X^kVpFq6~<-t)ItaH2!VevxirRC$rz6V#@HSR4mh@b1H=r za}A9&)Bvq^dF5Fqa#6L=I|g3@nJu}6#3qGSDGz zz1MvV8kkbRmD4MvMN$p>e`*`vWqj0nmUJa^Y_SA#glPq(0_3$KKuMg(maMlM{JmeuciVeJufj-RC6~7B}zk73MC4{N)*@k1Ud>8oIBsN z2ZzbQDN7KyQvVkVppNZ_ys$YhQ?y?O;r2ZZpMYkZOux3zVa{5fB=Wr9oUEE{cQ&`L3>(5@W_xH z4~Vt+*Usj_%sZcR?5Ka_VZwuB#)IoPEkgGvb4X}y3}9YGuG02bsEZg>EKhs;sUT~e zLC)j=pCZguS%WU9Q`^U*W2?D}!sIZ$nTOz%?reMp=T`S~H+8*Tff zXytkQS^X{gy4V?8FuGs%^Gswwq(}b}NVgj?nx+^Lk1di_lCk9%M)0^3b6@$cxhNl3-x15M8+CHt-(5Rp)z zDqVeMQl8gvmGK8?M5VdS{Af8kYgGf&HN~EJ&H{>LSx8B2Es53Kl}TGWOINmKC*CL7 z8@c-K5U(%cAIhS6%LW?78{sKWjiN1ILm$s%5jKm6Z$2j3S>atdmU2UULYw$kjcK4q ze?BHJ3Pe{Hus;U2c`5ga8&Fw279D7>dvta}jiGfl0vI;JxUH#H zzSNwh9udLgkPe)65fA+6{UOPmQTz!^t8dgutCq=6W>6FLb5nY_h2?ikkfScpe}f_)r`!t;r{?K1b=}?vhSmz3M(2%G=Ey} z9FMmKc~D6>kEMd-C9dRc}x znuseb%A_R<*V(nO_v(EsxwC*8d09NXq#QcWiSUT}DFuRpHCB|_#?~Y2?4f}aad7@x zQ1xKC7CRk$WEt6BKYt3$5*wklmMoiNMsd3H&}3bPP>2|Lak%fDy)dJlYq7MyCU=ET zUQ8)R%OW`|DjiGuStn8aLw0uYc)Xa9Udl9o{s;!LX?O=lWCSf_`xHjl2cK=_3J<$` zu|+rsx9LS~AY@_+R#a@@PXKY1?fQY2gpHa0wR=wnm3MUd``2@mYY5lv&$Os^`QQVve++9IFd?Hn=T zPQE-NPuOYDxPl$=fK>K89ZZqGMvTr#AcunOMd<@_7`CzTQA_F_VdTnt6W|qQ7`8XD z8t;|-!vp9sR;x6N;q;P2?~%tJAr)6^j*7^z=@CkIQ~yU;MDhYT@-!ccJ&WPFA4X!g zuN*$3neq3%4n_NEOySK#0Zll{$WF(T^r&iDDKsthg;VBG%2Z@=tA!h4qtn=~14tfA zNm~&^%{9cu#1PpDvnClT4@W5MR}M_gUmvZ*nd>O zu}q~LFe;de&pH>n@pF@UXm|pZ0JYkMw!YDKExnm8W|N1uY52s?x)+KzN)5=RAG%R7O&b|sts$xWTl$a^L#ANqC#7WBf<}1F}dnt zIKZqj)og>LvyZ_>V|~xY&}0<1X;i>H9^pJit$cMfz*IASk2(}~se0Wm{us$J(MBdN z(tMsd@DDl_jXw_8Y@_?DIyQj7BN!`2tBno+4t`|gl&370)Y92&5avtWUdLtEXV*X2 zxE?%KukpjpU2ilybGgS?doL#DAO#ScB;F?8D}Kk*vD;{-)v~#o)OhRYO_6uKVa8jH zStT_JM~TXB&a%kdF%m9xWke47JZ zWRO=_3~^=U5L8yE{^y^1!&Ut|5E5ak-OzvUeVOAtqXD5CJlDg=11>w} z-|C-q`luw4_zH=HWZL&s`{bl`JH|RU(|KB`LnNg&+WE_b>9(nke!3-vM#)y+5@*RL z*X`6BKJ}q0 ze(&!6NRH>HV6rei&)!eNr^`{L=F-%WsUsiBzzCv2zfpvl!aN;;@^SOxT98AZ<$C|K zf4aN5T;3P|WR)>lK;Llit?jt`E5Ce1|K7hn4m#sGm>Bg(Qe)UpcU@f;DH6hn3pT));DO2ig zg}%NszTzF1ML{o4+}>Yt9@vV;dX@PMggb=GG`jTb)~R_q-cHY!+vu5)tzXsEQ|ESo zYi<&}w`tTuE-f%Aa#mwjW}_idN7_D7@j&TR%<$UK)tOfn?g<~f%k|ufZP?>wc&9De zlrsU{muxuyZj6hYAT74cgR^qS{HDhuI_YSUmp@Urr?Y*po zz3XdGjOF+imkI;OmC0Sgscs(+5>E{$kt%4be|_Djk!&&!0u3ivM!zO&7(CT z&WNmJrHe&Ji!r_p&Yo1c#3XRsN39Hk0z8<{U2#<1Ivsq*84zf~GByd6qcNboCUM1; zi5p@*p=a{+;1QSC!V@oisvcq}VkQ(q&mzq1O7XAJ^?2vTkoj$1`+D@)d^o46!Uv82 zG}2y5A9xMCd~p0eq9K8G+UT(>GwZ=`hi)x@9$_e20=qEq6aRZ#2b&aJsWva-9}(uG z*di->*eKQSFuK=Ym*5EKu3xTJzqoYdb}Ss7g*E0pAZ}@^RnxQYJIk5P8a>=@`A7HL z-v=gO7i8VD*ju!zFzS38q8%h5F@>_$WnCFQaPbZvUDK^;w@A|%y>?ibmtFZC8Gas> zI7aS~;svCDi3oL2PxS9x)$ujlSAjC-)p*}5Wh#NdCGyP-b9Igd|6{3A>_CE9k|2G5 z%CFlY=c7gAFM?^xgdpjo2`F2)lq5x+^B)JWr#KxouKc!im^JQyJMy@?aA;bxn8hm5 zXSNc1ru7lcF8vVCmh4=jflXv^-eNR?{X;_#Cv^_rmd{+pwd^QakVKZ*ZWYYP0Q=Fr z9z-128H&m2<;e2!6(H<{2?Rtp+ToYe!!zbJc6Ip{JS%-DsP^`K!F;GoTH_Spf%mt> zD6Z>gu(m{(BMBU!FJ2Il(O{drs&}|yG}?gDt>(*@xJ0Y|M9GO^0?FEtkU)2etgliG z5fn79M#+fX)iyjnxI9T#>6#ibpN$qDW1gncI1+^Aq+Z66Gk}{**-jTGbk%TDr!iKHFC_l^vfHfmj%{8yFoI#1z3mDzHQCZ8!V4osiV$C@nfg-*=SrGUv z5*5z3hIfhJnZZ}bagRly*JCc_N>Y07*_A&}Id$khy<&|m8qmVfJ-v{Ad)YEa$VRQq zz{GmE*==4PW=z-R;rHO6y+pi!?x~TeCm9ebY9^?9{UUVvBU^>~A=6VMUYPoD$uvp5 zAf_1QRs*GqWZA2+RV1!_9Z|G(ZNrAjK9&Me7u%n%N`cK+b?J6l_fMH~qoAMq{&g5@ zx$}Tj!*Ujn+f;dx7TZFrJ|#l=STKQC$#vZ^H)S*`+IJ)py=332#pY8l{e(@1htt)h z8I3QcbtB!M9a?DFZ~O9PzVMd=iI3gZx43sQio(9a!e{~NBA8KdW{H>*ILD6V@*whe zhFX*sLr3?_%1tjz8X@>Dw6uw-hbYCfOmAEDA6JTdy4%;w1ofevKFz#VhP&bBy+Gny zfH(0~;MAHq&%rBtB>4|rASJPB!cQ)KKK9-rCJH&6e#!rGPoQhS;&sU8S`BD&N20O!uT3-VHW zlrN7%%@1?RUxdMvaEmPT5E_HL$rp$jsf=hTaliPCKhrxC>NTq>z})mcU?U9?xQ%MK zb$Z(vt0*P<4QyDk!QQXpt6qF3>Npv=ZwpGMrk|r+&+se6t3+uC3DfM7CX=N$Dce5# zQZq}bZrgz`N2=o!Z>#_J#)>JhjJf(`OdjE6(kKnmIKm=v=dCHtM1p={ik`sOFLQj% zqQIT0myDz_Q&Fu;ioCBDh+p`G=J@iyr94PeJ$ZGcygHJE_cED9n4ZeK^g_9SN>LlE ztc%Po`!J8PW|vTXLB{_{2K*{$_QYt;*Kt-vFNw3Ghu00A$g(77`R$- z)XeqxmQAb;Ne^Zskq1BQ0B*td;@LrO{_LMz#P!9KDV{>nx$cvJ19hi$hF6klK`c6W z0kJH~=mJg!<78YMD`F<#{xLToLcGwC0xAS-w-R|!xhUp*Ggz(oamTvm@M*iktLca% zP7ExNjX}%7RCC_oLpgF(Eo{UTbAO5V%>Hy!UTeNZwnVGQKVuGU7CGI(nx|0THEJHq zp}zHT$o>h8Y5q%<5t^9thA!?%&>Y_K%M4f6(YBn?bjM5K3o^L}vd3o}+B=E73r!E` zMq>5Rd;5XlO{6C@g;gAlK<_tFnU~5d@W2@DV=l6}&S@-gVnRSPnFlhCA8^q;R^~y- z2syA}f%h+M5Idj}U;nTJ$O5*Qwjn)X&BIu1nth-7-^)ezo|+XlkHUZAe+!Ku`ET0N zze?kQ(vJLxw#5415|gn0pAwT4YOFh~wqSq?!0MYa!2S`@*@-4{Df-%EqGt6oNwJte)tHv%a9Pcl>M>wZFRbyIFQ43Wx~3Ds+vJp zoc+T_6Lx_ZEHF;Kpej)6w2T|=wU z`_IYVna=iH2?tuzk|>!hZN18s`$|O^4w;Gl>~#lyuXr3+mU!=gmf;-~;}Lq^wL@&T zUPE2vd`Aa@)b^`F>HYw1Hm0hlg68`{a&ofq7m=d0sqnIrF$;wxVi6OxJ*q-?<%-XG zJK%bB+|^`yYL%a9$Qej-cgMK~_+`UGRLzt|ZIc_Ln-tCt97NP=M~-3g&1>&|aCRC! zoIbv&fhg?G1etCLe|w8d=IHif*;*IVi^9)L{>1BETj^n&6dO_ zr+g^Xn-GD(#DIoPN@GhBOIGXOxnQjcD!5jg%DzrU{gI!6S&@OUQ1+@dAIa{ifZXZj z_nVAlxckaLO*6xCpjbMa>6bpt#Kkp5Oq~d+Re`7_ipm@{E^MLl5w`m^HA;UFSzAQ+ z?xFh%ZPb}LuWgz z?X;Uq?r*7Yozy2EB5aYFQh2t@s=B-f;VrVg%yk*}ntYmSdWX@@a$@y`&2OzM5p{t; zSqDp6F{re5@_{+d+kv*LLHUPav$54AwXbLRgh_xK`sZN6Q7-?~NrcsQM(RV=F8u)b zS6^MKpGyP`qp;?VxFg`iQwqWoD!Z(I?)D8dt0AL)e-?+7=(RCoZGc+WWMN}Nsa1G= zcKSRo`@=eO@pa;O>=Ss}&!195b=jJzk*r{JQJWcfA2Kb(hRHBd9w`t4aZ;C6@!&O9 z9_lju9SrI|G@{JupPD!01oS>QC@N8p$Uk2i z=t-~c;PM5Y;fz-|-|m*6yf*1>KwSwL|Gf3W>|!#y$J+AC6f%IX`b1_%>$T%nFZA2& ztV&>cM9jroCg!kqQcsR#f%t4!W{9l@C_8HpRRr5C01BgIQUA`?_{*}ICzxJyVGQE8 ziLD@1WXX7rLh0`aY0@L^3wneA8bqI)`XS2`1OJ9^zNM7u(vC1&k@l2WUBMyFx)Ufm zu{$;ctZ#KK6NF#ODG#CoB5KVsHWD!m8h<5z$Nm5xm^{LQ;d$OqVGZXYu|}PQlwiW9 zm-u$A>B$PF$~Vy71jA-p4PAvA)Q*uyk*t_BpydB1yQk2xSmZ@pLO1hmSa&Cgr?G1C z;${W@w}px!HJ&(wo^FU$)j0*z4F?nBtSJkB8|KkjwW{XC%H0eG=|LWt0ACJDKqlr- z+qNAyX~nRT-y)VAK{PeF%OzrQ@?0?dMp{` zRj>vc;t}QR1QQkiVxEGnTf?%uddZHiJu{;HP>I;j#Y!GSHZ-!o*Cc*V3ONFz=fvPQ z7@--$(qFgRlvE12=<#lJL$L{5q|w7zF@Eg->{RXQ&0zDakTm1VjN_9rj;B{qNS6u^ zo)x4UWH3U;TyT*aCPk>lB0pm5bwB+MNcm7D=fp!d?5*=eAC2rS^2t^w9Og#*W~LO# zSPv{AdwC-sMoSZrb$1#rS?l1aMLC@E_G_T+FNg2NnQ z^aT4-ODa2B6=mdNzZ%uhzCYZJes>*|e7f(xeGc70ukM=VU(jjW6^Ker(=EyXFL^0z zD6|=<9xS@*R2_lN9_yjhsDxP76it%Ur=)sbb8Uwltp~+}NwRn}_x;&2Anf#N83xY_ zlAxP{$Ax5)DWMmQM-AJ79&zhR7!LiLj-0XbDjrnApN1i@)?EI%elqzzraT^Xx8_=T z(FYA-`zNJ=tw6T|oViEEf>)0HM;MxKZAVZTA_2W{V#Q$iOe4TK$mkxlCXLBesQE)! zQK3c_;an>oc*72KuTl1(EFQo0OU!)p;C6&>omF_OniF5&YnuufcVbPYX8lv#o`kR> z)GVvL;^1oy5|}1=1@VCwQXbhjGU$lTey9WiU(t#=m#a=GSOm%#3C3Zv6}YJKl?jFJ z6&McR9rB}{3lwZhPhu&@uY5R2eteU*&{;p6u@joJKHKw~k@4|lS!I9pHN&yeEPEwz zOq}igdZ-Db5;~}6noI(IyAWJ?+=(AA$g^rsJ}Gr4x)=zb{H;51ffp|(7rn1a-R86j*uRLCk{ z8RHQtmV#8KA2&?zK_)~(-=U;3O6U}94s6yqP=h>k+lSZg;?oGTBx)?U?W*%oL-IVM zXToi>K zu$53U?FCVi@cq94vY-YvcBpg{>v^0OMe5zoYnvHR_$0-eVY2$4Q6upEssD_UMCw2O z+mQT3oosU{Wxn3@1|}75JZU{GrO$=;X@%Z|sTW|P<*#>73q=(lD>WVBx0TF01||jP z^{<9!k7W1RI=_HLA1$OeZIiYah^aW<@y9!~=~dwi4$){i^BJh68G0V#>B$%A4xgb{#)P#+y5zWVnBV>0aQ-(uY0W0xJbwjDusPT z3Dwz4Qj}G4C>~1F(7Lg$C2tMn&-*z33@)NXHs=wS8Z~5;0(D4R)2>1LE1au)s3 zzAVB}jI)k`BI+9ZmPbW83~gx_cJF@6sT4;7AQSFY2q@A2a|4(13h8r^$4_#C9{W+h zoKufo!erV#&L>_-9+uEAf)eaBS|e63>x70hG#5xCQ=)QpcN%^rerw7xLcewT)1lXW zTq)iw?F}6!wGCq`N%7T`%RPDAheozwu~%RkohA}e%E$z|an5GPnoANgP05csQXD2( zL%M9&K#00$u;7YTlGC)e#?7tonC6-q8#KpRq}4P#va#`;!cPx{uqSv=l~MUVD6Zy2s!f&28c>G5E}fOps9n~O8mn(vB} zn`W#J6>DVrA3LjdM-tZ0%)dlh2-<3m!rZ(I|dyG&$f-6U#8loB^&}=dOIPrO!pjd@>kS$vnIu0PVEg7Tg@O+{LI<8 zEVdqf>Y2u|BWt~)1Xd~M6Qcj289n#!L>1p?h^_!f(Hf=E{-xynz@95)m6kO#yS0W1 zZ^%QE1=T;wg{%iB+OpB>ipu^H--nbXm|_PHYnX-653X0PA<0xG?rN9~Tp=;Oh%^Qo z0d}^{S@6v?mtoPuv>0^x2{IVdU{$$?Z}uIK4u{B_{ZSPNaN9p!3Vfq6nkvWPT`a2; zOdV8uTdKSIz=YQ~QRky}huv@P%arr5@Akk#f8x@^(^&|{SyQIdzrTAdkwmC3ZdZ0Z zFD$V?xQu;?C$5H?TIUdCXz$= zbQ*Kfe8UP%VBKLuQK*66zcTWhd9vX)=UQlHLGE$(qhP3pLUOzuFl=5I5)$_QRJ{jN ze-OztLmyNE5Uh~4MHAD90hP_b_4(Y@JtGVj$IH1_YSAY$CpcN<{iKIEY`bskMx&azq558h`Ts zisu9oUdv8paP?X$;Mf9j52aU=c8uZMI@KIg$O-fo3wgoA-lGTWp8H(+jmyOwfE^x_ z@di40xJlhOd*X68o(Eit6#NXk8Cg4-b~kap+zi__Hu&{V9Mh(WyU{RL8TY9|6L6z4 zm*wK231%3nicjA&1jpiJg_YyjIoNiJ$?d!3Duj@q2N;Et0T+&4N@&;}&&;%&WEF0R zp-FLYAXvU#1@XX64`X&E#?dMn^G^Thu~?Vs-~$vZ_gViWT+5l`t*Hkir*ORMk)d;Y zws7Vf#O%WbxNhEHKSW!GE#aZnkUM9gRNxYs(qMv|J)mw!rvJW3IOF?SaY!>|2xT$F z+7OK+&FAi~;cuh7u3^`uun^_whaDM6iNj{Lk}H$!3SU}&egpS$?;Kr{mcTOAA>@{3 znTB`UKPGOD-9lH!?DkosUyC2zmtCQH;kJVQ>Fr@p&)G7${GxQi;i^1Te`My?i1sUj z!dw}V^%1l3d`vfw0i|OKz3nVLK~x171>#iE*IUFubI2?m@<4Ok#f%)xO#hByWczP#s@VQdZ>l2I z^=x-rP<)q)iR_RH5zR6m)%P&HhyUz5P@}G~GKPHyW$zhl$QMiUid!Rl%kn-qJBFv$ zbTPcB^8Za{cEIk-N%lcx(JK+=+h<$*%co;(xGfw@Q@kY)TmDz+wr$(CS8KIx+qP}nwr$(CZQFS3+vnYP_PB44an7$ARU`99RmF_Vh>V!i zpA6L2bsQ;eF2jEA_=-xcy{aOmnpS+p?NpaS5IqlZ%u2*KlSCkr{b99Gx9x~oM={!0 ztI)$zpBBlYZ}22q5f=+!tlB~1{`1saepxGL#VhT_sEhQgfJk_O^FHnSD<#L8G;GF> zQI&zCfi0kp+V5x%i_7hyY|S!beTnB)LD3CLJ^dYP3q#6nlFMeLysR8_0Y6Cg5o3x* zx-TXe5+-OD2`ZEgAuCnIYX#Ly14G{VE~l0@R(f=OshS4L7FStMdei`d!`i%L++^JWM73q*mIvdwcI#y>G_)7Md z&U29^X|e%s_sQA1ur{BQjoW&sHrFbz*Dtx3_ZP(MAHEye0HJV1NjHclv^8(R-4-wg z&It$jETla(sXe=iPT#Lv5~7$cdn*lo1}`bydXQE$qo1Q*95dHz^_K7OfT#`DC9~|_ zdk$RJ7O4%qMCXmDW;p-YHSf3DigYJ6Nmdn^o!%rq+V=ZYsASys^Bp*&uh|~!Ed&du zI@S*F8OQ^+&JE!=5f19C;4NCrdr)T&&}Iv=ML_2RR;iD7*d`0Cdr+rc?B6l^&@dk6 zVy*V|8unSHMpNBd^~~8u-CE-AJWdBSk75vHi?d`C(XFXvLM0;eDV_~M*L;rNM6H9< zc*g3c@7zzXgf(ORIGF&}817_DtMDf~AEekbflXoY;r@vH%x9&xkmgQuSZ0owaj&DtWTfT`Tz&!D!vWBaM2oVKxvfc>fspR4WP%{ zOPwXyt$lR_5>X1e;GiU18JQJ91<7tO(%Uzu}_LOMl2favJ1 zj{(Rd^O7U~N-oMrFdPJ^L4u7zscsrL4StzKX0O*+{Xi{Y7RL2J_yKga)OIvJ`3tVS z>_{Rz65}E0*c&+nL++NvN(aoeaJ*h^MX@X9=pWFzWvA*tD7Ibt%r;uGA)FAGNRhRxv$z>odt(%%?=Iqby&&(ko3!8d>g7PsrgZ;0 zs8Jm$TL~KMH5br?7p{mbrn4=$-^oR)XMz%pGJfWYni-t^LiKIf?^w;k>cR2}qN zfy*Qkh`a%G?KR~F7=Gbr%p%X$*=@qfhS=+}zdvH=*0E$C5Q6u$LUM#=ypz0>B#E5c z!B-$PK(v?RKC%$)s;974a_{OB0h)={(t6IJ=p?WG5s&Nbej9TV*07F&H3v*<%dZ|UT8DzECetF@)|35h z^af7^{%XSQk!{qo96u#?Y>Iw)GnP`_3yb@5oZJviTdpepl<*netBJS}M^sUoKAg0*}_iQmh+))8}G9tLGb4 z$Ct)CV*kv3=HO6>CmV5Tkqr&}CR`<$-ZPF?4&awKrYgBV6l8Y( zD-Nw|kI{;hdNQ4|{d6VB7pXae_opkSXKUvh#AW5?r}NL*EL<1;Wl;9YkH>ci6Q&O4 z@WbHQ7EkBTV$M$hZ9jOKIog06eES@5a363~9$eJKsyuvMfa0!YF$;5!M@dUuBVs$T z4q}SoTIJ6IZjEW@w3wM8rg_g+A}Yho1d*qB>SU?u?eoTz87@^E%WD7&>47^zsp^~n zLsLLfyg-E%+9O8lpwk3q?x8@Rfy@SwCvcJ?iaY3y@19V(VcnSP_`X_HSVN6&jzVfK zD-3@;Fw8jQ7~42LjP0F}!O)NaT`GTnOVIu<&$Ee@F#v>I;n8WM-|P)~={|lNwfT}l zIJ$$YNZi8y54m;KdJN^gNKMhI*qbuF(_nc3LL%`_!$2!H=~^GPaJ_~6%9=Jh?4B`E zRE<^vf6f6Dq%0MFU~>3fKjqr1SzM!daHwmP-LN?kId~GFP8OZk*u1}?FPOhs54(Mx zMy-CHGYQM^3;4Ex?jj5^JH7CD5kt^{fU%5~hBw;i2EWz(^<4+mrg8PMqG;>;5hp!9(_%s#!>k?;>jjuxvabEos>SL zpR`C-qJxNVMXnh(j6>s*yb2Se@Pka&Vi4Vf12IecaJ4h1%Qn3E5liMy48DQ9b%WwS zGd-@Ccq1e)a%t~XpuDBhk}S6ex4fwdUZesPj=oY@XSLc5gnh&Qjh%prS8(aEsmgbY ziaJCcB`X7eH7KSAJ1zXI6_2-IdLK13xGPT=qtz-CwU}-+a$(AFL>(P zT?cLN7ssZPNzAJh;3fNr^PD(ZK36Te!>5~cvMRiEK3ti8*h&f(+*a5+oQ#e`R?H8; zYLpI&?;QG3^(#p-uQ065?uejmPNq#hzo1~X1Z@AqKKx%^;$I$xp8nsMJJ|oBr2W4= z3j05Kvj5qmDCpT_(8GUC*RYr2fyxU&6USCw6benuOO~w{d8RTKL)2!t(xjrNU!J@` z2L>mbFGcp6INWS`gscHF(BPk!pRmt?TEMZk8TW}Oa8(;2p~F?xaR81ra&2nvcFj4b zD-q^p?*kk2=38l8y}GCmnfh@thDli7k~W|D<(Tq4oq1ZZSBq7~Rp|I=P5JcdxBpdL zwcfE0JvfD}i`4mMvtmzA9QQ0gi+H*pzWvdK7!ejL7xFRXD!%x=^BfCpQOeyL2cgD~ zXbgXP-#d>>OpS2-yV%dJnmw^UNj%BFsHY*e{||f&2&l(uZK4?N%I&X`Ayiu40ebpK zxSF*AA?D8|!daZ${a92WQQcC1l1qFywbHW1zF>}_F!d(W+xVcyqDBdrW9%l~Ro%AH z1s}b?4Y^8s0Y!QU%c``B0o#|e?DV-iAsbJRko}4M_O>uO@LO_{aiHxioUD*}PFK}z ze}J%!rg`(@Z`9BLZwO602j_m;!dj@iV_f5UW>Q@4zciZF>9!r8Ag8%@lgK_?qvg&X zjX~oM9S6jd7A7zbg;jNx9o7e^2~V+0T4Uj6F~j%lSzV3G9-BHEjwpO1g6`4Vmo^cQ1~{gtPA?b2}wAtm?+c20Yf}kB8p>t@LI^X_%p=19iX8a$`k|tUP%AX&8=;ndqxE0ijtHFl{GZkIH z$OAk-p$Oi!wwtdpof{X<8~SD{P#m#b&BB@JQaxq>4IC^rj7S+B8YJ!D1cZlO;xxdB z*$*gw55#8PE{VGrxRH4ub1U>CRXxoF(c_g4fs-mpA(GeRj3L?@_~iJfaN&Ra5J&1`^_#;Zp2u0pP=#6z8wgEYAqW)XjtUed07 ziMT26K&wevUy5q1em`!}>3U6gy}v%nsHts_Z=Y-L=bN}$>Cr*o0GV3e5PmwkNZFxX z@$myc30fr9ANru$T2yzT!TG43$JFesZ*tC!TR!)wL#)yEZgOwTpMpPRuo3Q5QnC2ew4y`vmj|x830P;Tbp7=_123h%OzNWDoSmj){Y|?4e8lb* zek~S-xNfeQwfsT9h}hAR_@dPtduAfZIzyeM7&8D?Vrg;OR4I;;>Z+q%sd*h+hS?!i zENpF$-jX)%FIB9Q8@B6yQ`NQh7F|-A(uU)b)**qC(@V$4iObG5ol0>Wi{!U8MMwLE zqKXz#N%g|g(Wt?h=Mqz0!;%|!=MGE-;eo5ZQ>JyrRnra%Ly4XTkLAZeP;#!;LAl|R zF3LRyRzem4i{(|~qwGQ2DV#>#8C?F3rjQTnKxjtR;MWs%H#;tE$$>SP1eXq0iRY7K zC+_pe1pcx_UTTs&paqc? zE0c;VTg((&e6^E5^2_Kpcgvr|Ik!=dtb^J(io_><4k(Iy)s+BZ(S4N*|Q5VG>+#94nt;QJEG%>LWFP+^Mni- z6`B$m(})j-+%YfS(ckMzx%F~7vpq9Q$M20%8pd4N;_l#y(ph<3NliE}4X-G>EFn2! zu%&!&MI%nMwkv?c9m{uF494T)~m2%3;OGOH~Yb=H3F zy4wIltudXyITtEpjGyj*mM!nYa`K|;{*xeRFDCf}_nmwQ z*PN5iwzdkL*+joZxar7*D>wInRyf)-i%MXIY!uqo3m(ypvWljp zZ0};@l91l%r;K9?i7ZTcT13&x{(b@x_MU8Legr3ei`L@nf*O9O&KD>yDuMv?hWlHE zm^b02^e;pYcx7%J0;s2$1`ZZXzkQy}p*wurCX8$WGBT#zl|ApCvF>-eU6Ku;M~p&L z@tt!PoPi;Di=c~*bDI)9rbvl$Cvwk)=6jdM02$ki_AK=RAzg%@4?1JZ0are4Z-SIs z+70XSBeEMufxeB$lZeq4!AONM^_-ulw-pI6?BYEVQBccSFGo)B>+>+CX_St5Q;{+Ql^gbVYje8*`OYkXL|lvPm@V~iu=MP&$^C}*JQoJBj3`tTUG zxg9?@N`hutec?01;D7^T1d0aA>zc>arX;e{r{X+d`utX1*EM!4+EI;!c2LP}bEO5~ zBQ|hsfn0MhdP>frkhk$C-{yRS;0X!Ag*<3D@%b>|iTq^<{3%A}@BxD_p*gd27}Au0 zHKIFq{ji&`KfwX954SJn4l(q_+#&B4h&=n-UQ_3L4RP`wFSt0jhrjK;)B+0lo zpNa5f_(|wNu-mdjt{Uu*b}N?`F=J3Kd$Z(PYtAupV2(?A`)_0luH# zR+!BM(F&_a@u4~beeG^8tS26Pt%wLnE>Z`v8ijP@mJZPKeTBhFJaG0&F0aEuQfQG? z-9I5mDCU>X>~TO4 z@76}&0Rchc`YQ|!FmS}*a@Aq)BT#BH4LSZAXa=7i2(2FvnJqiDJ1)7qeRWoQP>;as z!U!fN7tlzTg-smckQe_blh)!8mjn>Zj-AY;y`5gn8-w@Nk{S7h8~&ZK9!$Jxd+crN zjSY(IqbYl7Cx(nQ9u=!p<_1@UJk;+eb&X879KlEJt;$XXlHZ2#5yayArq_AEfQw6C zh{Wx#`6-8us_dz{TelXb0=4EE;(uIqD@A2U2Ghmq-XJT^3dFwRUtz9EmFR#8?YfD9 zm)aHPz@50z#$TWjKW$J9aWZ&wu!ais0_A8saG-U(-!#U>49g|&vb$5(DR@wCVB6Fv zXt4fPQqvKM;Qih%L8t%_hMZpC{Mml-xFC_{g0J`S!dAo;-Iciguf@ zUG^nl%=JMkrXn)hNRMV_u?r1nxFG8mid)~tB}outR_CC>Gvf!92e)kP3&6h7J#Ng} zhh!X4AE%J;_ZkbG(7>Pj)8xUd5+*;-D?)m8l7|Qpi3iK2PWUO@u>u7| zm+Wca`=W?m(}c;HO>o5)pp3NM)A+yRf9F1s;Pt0cQjB&28r;SO6eu^SF%NJRc zI;TrJWGyWR_GlKHRU}v$pLONbLUY9#t%^|t&N&s2JsOeC8@|^X$Zi)yltwKj051k_ zuO_mSKcJHv`4LepIOH0AlK?)*i}yNbiUn^*&vYxqq`>N<-39WASoln^#T(M^%o$a5Wnh2AP14Nq(#|eTO*e@J~`&uu?kNDam z#UHP|CFxhlJWYa6(Nqs1Dw2*7JBXwl?5&sSSLoP1!NojnE2n<-02?(CeQmj&cXt9n z>^^FFMCN<=Mdo+t1sG2oF#G{ctl?e)zjDlvxUUHm?^-Dju{QMAN~PgqDG571H1H|n zenW_g8)>4B9L&InaOSrI5#OBfGrChWj-Qg?Hl(cStQ}xe^?Bq4iQL?!cFiDjAQA${ zD|QvbQ_&IwlW3U~!%Mik8bQ_(Crv;M#^-$-hoY2Zq=|A5P74PI5z3#XiJClW5-%;5 zjmr8BU5c|2(qv1T5V{dKG%8OCsn;A6($ssBB2vl-2cIDu4@H=yCS4-RDY9y0lXVma z8NQ0*ZpF7gIFiQJXaS2<7<$i{x@A}X{hez_99$$0a0_j{wr64d&0_m0lF27y#cl+c zJn?^0h_AV)_!*A`(G^JkUYC^oBaFy|ybB??%I1ymG0v%9cs+g*BT4v21R1S{Q4dJ# zV{q!_|G%b45jzQyiZ8Dz3QjrnJG+FR0t#C!E&CVE1095_&@eDH;eY_bSe)!JgW@>Q z$h_oH*l4`38wH6j>0Zzz!>~Zwi0cwb)FG#6X zf<|-0jd8L~@Ma!3o{rM+>cLWPO`&%6eGrxsX1nO!a-Xu`^rd^iY zDb7sDA8Asz^NB71#3{ekpQ61>=0aRnn;fdEc!%kvM^TMC{ogFO8!Kb0d)fCq7Hm>L zH5-+eUccSd&EG5G1~GC?-}F&N&oa37CW9&7RvaZDM%SI=y~jxRRUCisRP~!Qz0uum z|Ng*C6UO^JxRIgriw7yehRdIC)AC?tbC>u%Dc`)5%9+yng1w+*RV&@>T_8X-_YcRE zO}gLh=}D+wr&?f|^i3{GTFc#8t~n%BcIj(8<+SKM?bK-k0=p5aeE1~J0XfxmY_J#w z=jgczYJ!IqDqPREkG-6?^+32~77g3bWKzaBYN@fk!rDBSX)@aITd|(9H749XP#TB~ z(2MH=xm$`c`AtHG`1^TWn?a@x<(r47TsUlfd)&~W_E6E!37t6Y*RStSxRaZUr~i;T z_*XvQpCkb@J!oHkPTGl!P*{Gk&cm6NMPnhU za71IR+z`%Oqq)gIBAQr6+}Pt+1HUAPgVCzjq+u-XeL%DS091^~T=k z;YuORY8Wfa%K9{Fg>=S$Nl)8I(4nFGPTIuCmbBq_h@{3qO^@HL%d3sU!$p*Fl-j3B z+YB!1tT}X-TBXfk{B&o=2``(PTAEuL%`+Qc#m9?GL;sA!RpMS}4qkd*_IkI0SG~%@cK=jWnYiWiLw@Tf_ew*@{NaQ6M`PE9;fME9q#Q(6ToU@{ z*PZd*)QowZm9fikaGOh!`tvUyl%vjaNNy*EE$4ztqIC0hSSe)s?TR{%#ahIjR>Irl zyq&R#TnVSkbqdPc<#H!JAw4*wIeU<{5F)WQ{cHRu>Bh@+z2hfM73r<;Lf9mC^Jkun zKwG6`a|WshH|-;BmVxf8b5rc=r7iL1q+v}=@+E_vEjv-ixcyn_eRaPqX{$PykkdLX z;7yLFd1(#zdRa6@8mKn9#n!5jU}_X+YcJXLHUVI*JcKx3<9P~T1({g4h&Q;W*PKoI&=pHrYlJS6*@`@Gd9<64nMfWPU#PHcHZ{@_1aEaz{e`d`7uvxiKC> zHkpl-Vbq%t&uP+9cZzA2yeFR9x5_Gp+w%qylzP+L<=y5S1i+U#wvZE-tji7h*HOf{ z+-Wa8TyP)^L)3AmIdn^gk*+XFf9>HyJ#T3mu&jp+$ybE9fcsV*=lQ>ZNXuZH zAEO9(mSf51bvHh}Dep0f>!gTwP2tt2_Jhd5v6Bb5W2~29oZJh5Rb5k9iFb=|jBMT6 zQcZAFI(z-OPP%1j*=GxcVGZB;+jeLto?O~^Oupa8S&<$sZ{UP=#g0@E0OnOxQYrs= zARW!8JU(t<=RA-ge?n64c6HpCO+P z$sC}v_I2><>>)_yW$i&yCDMH4C&3)o`Vclnq=#ylkOPw@_d0F@7GDJ*?lr4OJt_|9 zI<+%4bbf0!F)WsY7mfHRx|qmml;BdjtusX68||Tww(Wf-_G=^ zVKj6iME*WvPG>m)!iZ}Ha-BP8hs(BQ6XwMi1vWsY^UfeJRFE8>)rOY()6x?G9nng( z4WkRYbCzNhEe143bQ9U7{DB=e^OpGhI52H{_rYPWf}J@jfHA9oJ9U#%&ma`zDcf>| zU<|OkbceV`S;&ZvF|js-wB?0dAeE+4mnQ2$s*qgkmrCRi`+igLL|dqVW8$I+UMY;y zN!2K-VKM1pf)ZzgCb!z}%U53tlMv&zMy5w^W~HCwW~z~lA!$$k81~0cLil{QyPo*t zp!0P>cVs*Nq7Xhmge=DWl(m%#lu!UjBCQ_cP^ZPG zwh5-;f;M^)KOvCE4{u|5Ik@A;`PrFFtnIN~dIwB0VBz*vV&5a%2&HimZnwrxoIP7f z6MG>tQ~O9rh5OjuUO3DpP4SyexG~EjZuWD-*|b8gCBMgC6Dvz1LeDF!kXq_^C?crR$NFY&rx^d54cAqY7KPrU_`cf zxyP#vd)q3f5#2^&!f5Sx#VbZDTx&NjYq_E^P865#v%R`DieUOZ%nBUDPz)f&6xmDfB~-4tO2mJ3@(IBTz3HB=Seo{Yd*vqt?*+itfPsuhEqdOA<3` znW2ldLz4L0!@}p&OB_3IAtXz`xhqNwdy}y2u!w&7d49XBCo}b7+3jYylN`;)N|)G=Jq$yEeM+Yv07m|~nOHMB z_Tqg&wZ^tny=RbH`#qvE_GISpz1dr4Q23mJ-pgi()zt5p64aBs?)JB31t{vH0!0;0 zhD(Gr2F`-OWpBzkOtl>_3{bD#@lk;PXn*p`I{f=rG==1sUAVugb56%Mb5dt+hUNYn zH#jL7krnmRP~R^jqS-F!-g>A`cs0^ZuSGd{`$FC9iCMMkOul`<1Kxdms;}($+^j>F z(SyjKokX}4oHHfIWd0_D7K<@1eC$XluLq%TN%8&`ce~5v9`jm+KUTF`EL(xvajYIC z{DQu)9%G0B%E}X%0F-(G1^j`Dq1we|>;j=+r_cDJnIp_Ls~6?np#?4{0;Iwa1TuMv z)&p8K#IS}6z#N>Zct7Et$R_vqe&J^9xW$87KZg=nqg{M(p3E1zxE-n7rsfg$fxK4o zQ7UaG<3jg1(F*B-y#@;<*q3m+uqOomlrM!)R$XVQkky0qTLfNZX?Ll@IZ^-x!RW=b zw0YLMGUltg;swfA>AUbzP*!NSeLH!L?7Yt-dKfZAZma}Wk5&f)8f;=gpx@5VNFCmP z<9JpNmSbHk@IOAARrN+**jSS{YZR;{aB^fKDZ+#!kAHcUW7a%KYu5~Typ4zbI~Tt1 z#~l$fN+Soy@y+<=G%s9G z<7b%qdreUBJ%8<8w`qHm`X@ul5GdJQ&VLTMuh^^?fzLLD(WueN_@bg=9WRTiK;|q) z%wX`*36k2BakR)0wIpnKD|qLgwmIhJ^84%` zi)gYamegpV1@soZfVk@#NpCO6ie96cb_U{cGjrH8!~?sJnw@G|du-nrw&&~a3?EV6 zck~}YE1Co_Z>NT1(NBHIad?#_-A#<)3txiwg%`6J1)Dm6M0Na{^AiB`7SgLxf6pOk zF}VwM&z~-V6So6Dmpu&e?mc6&=ge>y0RkAIhw^)u!+1FR+CTpD`Gz+a+7b8vj|Ki~ zfB#P`z{tV=-v_Ep^#4JjgNgosrO@G}z7c=W8s}A0vztNj2So~?^S#QWnP)Eg&V5S( z!FlkJR~Au8xP{nUsNBMw&*94LspU0O(zkH22@8pd2%euXZY3e?okJW6spxa$$H$@d zW2=PG9rIf9(Q$+>sLo8$s95~`baVUa_Riz;!|~-ID=sVUXXhBc%V*Hq;_b-Jr36_@ z@lZ^?kd@LRBXRCv@4Do5D@2A$g}7`i;&sO7b#GuN|7OSQ^A60@i=Nhr*4eE4{bq!3 z+sKV3lgIjI|Ax=&vu5dF$4*F2WcWT5EX$|XNnWvRuRcfrBp%w)(mbIuaz`ilwBwsS zTcuc%@<4L)=H-gx{h^G9&0q!Z2)oEkbm2(M_ySQVVz7;5Zm<$pJcG0ea79OjWi-hM zrN!i1k_r2{$wG&lC;a!R+UHA1$H>k%^3PKnPc?4lR6JwFzBUFs?_PpkuF<~nu48s; zKH(1bqL|f%DlNWe4P-`P63u~!R{9ztZjJ^{>*8?6_a@~K^~}C86Rf+T*7T!Q`cQ~5 z`fq9FWiyoeKHRC?F0bd5wmQQXD8O;+lo50RCL}W#tz6Cq zE0I-vjsC3}2g*YF*hlaO%N^gI==pb>*dbaTxbaIi*ODlKkFT404#rlVr!6!-X@#Sj zpY@FN^NbksF=(pzkPE3s&Yq97CN0^&HUV~BI&PLpp*&A0zHBd0fs>6G(o?;7w zzX?99(Vciln%KVV7P5y269%G3PLv_m=Z6J*uyk@=G*EP#@+O(+N7J0KKS@<* z!b29Fd_au!;E3_V$L|Y+!&|0SPyOe$%^X_%DJ2v#Qrq`HTLCwb#TT}Us(SbB7Pp$U zGnF>Dd0R4?HT)tdU0A={8R;o9(psM^<`+lz4oT<|2wn8}&;vFz4kRxQN_s*q$&(az zaJu@8>2=X^x-NRf^^h-;{3>QuTz|Q$YAts5m6PMcQHvV;KzOH;fmjY;dBml<*CW}? z{_PIaDxQ3BMbCI3f1&5jjpQ?UXzStTxgbk8Zsec^BfI;!DTN&%|HF6b?qdom6WDb- zSZ{l$fQHRL21R#bZOK=2on*LoPX!v_Vp6M$l{5V{K%6VZ1^vhcRmO=;x51u!ve10v zlv;dr82IW>Z&^Nc-Z)N%mEfj1YVCf&9lL~MrqNtLJXLRJXkV%s3+AfVnF(LeS@>s6K69;6$Z~TBE=PkF1RQ#B2L)7E^T8bFW z3*@S-J@n8c(?h{Dqqjuxr5d@|LX_b$n5a<9a2z#Xb4{#hY7O?3DeeJ*CWMK?a`;Z4 z^lom`a;Y@LG-b8)2m*>$lJNf8I0@3|zUV7h5%6Fl4bz~T>$L|S=3v`-F2tq2?w$A$ z`M|qV#h?T|i{^6ckVt+*5K?jIbcch_EW*%5ObtJ3_qNAa2jMTJOjoNMZLOYadw+&p zN(RxC#93QrC6fiddeC3cb11+w4Nl2$Qbw?aPTm1~r@+fT50mWO4*LGdc7h z?bJF&&@WWzn;NAd!is62ifhMqurp%y{JqWvW)y<~?|U~iY4#~dsdO)ZlK<+5{37W! zdN;^N0w#7hfktKtD@&w@)t9S7wqy(n>j9uyG79RQYbM*$+rv=YK(j6rHVfp;Bph$e zJXRnkv4!%~a6lM6=Ga5s9C$d3Jxd1eY~4Mfe@j`e8PCkHOhC4X;SbDD697{I%ETTj zbORG9ChBxpgkrQ7)5I|L9g*Tvndo7(*d3-Oh*O$xu^upOCs}^Qj<-dnF%11=bG+*IZUDQ zo;vY6OqIxX6&y2XuQpSs8!!ZFw}ZI?r1>L&+Y$_lB9X_=$)^B?hdD@$8i0q;ZCISl zg!qJbuK`plnlVt!$s<}71-bx_F{QLp9;7Ej3U1`M?G-pc7~k0PQ2fxYctj3u!#72g zNDDKSJ~l$heGGv+QHA<&h1%7tD5y}_uK{b_Wr%Qikd87#5sDHQOJANnsV-#oW7aw$ zG(WO){)PwuG(9!<6?_dRXAqQZEyW&Ld7c$X)H@hU_;B&q*!r80k(z`fH%+>kRQfV zEoATqO)u-LMbtab{y1ts=VNa&|1@L`1e^YK!aha?NdfbFR;`gV zXigjOl#+5<^3f~ic^+76ICL2Tk_C2NiKv*=))Cdq#ZnCnQ1KPc^3%8aC&XO@u z>*Z=;DRSYo(g3k6IJ|#_T>Xryax@99EA)a>65SNGPPo8DM1wuyG~H3R*zaEgwWs zgX15(yg*W_g0Y6|LP`=Co7j`J zK{hVR46hBz$d6pMAr28HmUYGi`OAjpCUBX-RSB}DTmVjtR0?bTLGnWf$Wl*j3Y1Q>uh2zh z}9={*N zk#Pg7DB4UGbd@;vL*B6*U#-m-3HIvLGd#}ay$K5whbb;;#Orp%7?suQ39j^;jdk9{ z)jr1se){D}3Oh6p$cs~POPtRZ%{1e={Mfd+LHa#k2iLh+LiJsK$+SR*Y8IOKe(KV6KV0egu0E)a@T(#RKLpZ0*GxyFJ8{diOLwl#lM{eDzsgKl z^bpgYq61qALx<(aiATfeoPf0mK24u#HOU9|w440?xHvGo&T|y8_b5%|#rPjBavB%~D zn+)vQYS=9uBe!9@^{de}xQAplU-JCH+xaL&@l_683QBNxYR&GoME$Y%NJ5*$y|3We zWmBgdhINVaq#3u;Ci>lv(o`w!h~;F=F@^2&NFTmaZXIcxj<)&fdlT7$2a&_?Fiw$(^Qe^4K(c%X}vT|S^{<&#G-5+tI)|GYV3Nb7 zlAS?Y#YD$kDo^#P%T!RT+WChB`$|O*v|e8Pajt4a!WKj1htE^f9$M6hc2zUoY~R`z zQx3n(em{tlyAn%i`qG_l*y8aJ6vA&(ub5JUW{27m_Dr8 zK#6=xpPIp6r{zIO^tk3kPsGL?d;tLAcP*k%2gR7sTrak7Mk`u3rXq~R)mkk82%Da% z+UC z25scBAjyWc9SAwIe%6CYUaXCx98=}IpkH|LZ{3~LMHN#!0H!GB6IBb9d|xAxbSXP; zAIZ)@Tjo^0%?bJsHGqW&q{C`FEObq{l4uy%~ ze?^Cq_4j;uV;G_9L1h(Eo637Bz(fp@aq5HVy z(CNh&KxG|Uo>on8(osf6=H+6gU?+iFK}`B*sHbIQX+=fYo~u&Pz9XMb`;42Sin1a0 z@yWdBUYbPs%u!!LiFDlj`x6D#Cxox1Vn-#Mh4ilGiowkZrb>Mw<>E`+Sw74~?b;y= z`L~I%y_e=!dbg)T6D#jT(!*KI&iCyx-k1yBPWKO>4%_(Qa3Sf-g^#vRPd#nz&`O8W z`_|G%&hpAnKWevVVm=M4at3q{D2sL zd>*dwFlS2kwNd{?EHCqc7V;cz6)6Nvm?^3mTNH^c*(!T zS#;tCMN)47ojJ5QmJHj%4V86gvN#87itRV=1}x)hiQ*Lml($d_c=OdeELhIbj0u0# z8UCh4O*5T5RBoh0I0s7ljko&@V9cm=0h#G0omR(Xmi4Q~lpYC|QRjkQtHnKUqDRWN zmbl&&S7W2M3R!T5%gIQ#4MF{v3TM-i-xG(F(9Q~||6CRuI7GHXz3RD~XFMxM?`DRP zMc+H_y9$)-3U;s)y!mn8PG~vcBV07ZhLGD#P_LZ8{}!r{FS&%Eei$x+yYPjggr8Gl z3I|NJD=wUXN3em6hSb0>esnv@qHY?EJx$?TnU>#eb&Ne4KA?o%BBzRwl{6X7d=k$@ z8~HKI*t-^P$NE*hRb3R>O*9&~$ zlTD1f?puNUoZ3{sUK6kcB$DK}gD0R=z7{`4%p@JMS3I+&_=YiTJ2dy^%XQ2&!Q zW_NAHvPfr$Bo49`=&Z=8WlZ;>+uk0inYp<*_U7F1q@(P+l&WnrHdZ(&DZPAX=u?I; zX2TS67^7~MHZ#t+<@7ZB-8MYt>AQ2tm4~v^{z+^l#U(T6r=$6u=`$4Sn;?PWfXwu} z?Xmdc!&-^}9zGNfyI56OcgJf7XG|m{=*SVeP-s`xuN+(S!Ax&!h(Q$eS*w4V9k33< zJ*^0m0@fgzJy1BX*#;x~7a1WiFr%Nvv^Xbve-firM`$)kwH25n=Mx*y05evLaA@E7 zQ8T$N`#|Frl-i-_i{&W?*`0;7SS1m6Y~={+?~0&UD&80z&YwEm;PYnO_yaR^q{McK!w_-uW(c11ohL=_mYE7O*r$765DxCgU2Yvy!VlX68iM;f+V4 zt;8nq`qtF(HJAbrZ`0Fb{C@OkEV3v^45-;Z#2PWRl_6F;n=$ss@OF3;5AXruPaCRS zTGAkXcc42EUmebMq5hi61XoAjqA2s!fcL>V~-H;miUe@n@_ z@KeYlks-DW>Th6saW{?BfGIodhTcvC%_v_V%Pw@ZFKz4xaW*-(X#L`iK9f6{5~-D^ zN0}JF&O88uX~luP?0vVu%A_9^QW$*SLNchv|I$Mu9{{CtanYfYr{9u?W0&I_sD;H= zpK>9v3h_k~R_HE&ozV*o1#2izRDW`IRqUe*1)YZxd$!xWyZ>3cc$iG=jVs;~c_LmC z(xPk^w=~33uN&QPXm*F)kzA!HSXvVqd=G%%Hv)WqrVqw+#;GXhQuqtDBg$xHlN78{4zu)BI4M)GB z$fjM*07qggjoSEx)y(C%9Z_B*yClCe<%JieSQ>{0W25iIo ze;9kmAW@oaTeNN4wyo8+ZQHhO+qP}5wr$&7ZQr%O{q8#_;_ZmH|5aqABWhNRnIp#t z(L?eJd2-=X4U|sxm^VHmAi`4JQL&PFiK*dB{K#pg^1&*xAN(r7BjuJ49&Z<~>#+2I zbF2vmwah)2HPVLqrB8M;nYb6F4}feU8t&f-Qd@RD!iTgHNDY_@H!W*i5u~0x7`PdQ z$#;&zdB|j38hkvp%sHn0#1XFSzci4NJYJf;jlLYbRf_K7hSBAvfRJ&o>_->QYgt6M zpr##gW(zelY_9ihiD1t%AXKb?RDKR&*2S;ht zp0?7p3$LBBNjV0cc3@aA-jSwTEQ+)n`y;7mzJggS<3q_Bl*G=s34vGKnZ&PJcUA?FIfP9L7Hq%#9beDq@pt_8_zYQ zTIAjw?b5vX1<%oqK3LLc6Q&e#?dnh%PIg;6av7pe+6u&?uDa0zb)%`{jNJAdLO6-q z6V`P2Gl6iMKDK#579pT@payV6#4K-xd$GLcNkMO&AwN@mWjbl}&Wc`Wu-bwQdz+05 zhOh+x?CbQe1q}ZqidPyw;{mWeqy1UZ7ClmMV@lj-n&6=fwvg}u@iq}uOpuxi46)`= zV>q;hRn(B_RTSWR*LdgSq&p1+m9;_VIs5owQAl}Znhdm}SRvAiwz3NBX6;Kf2+MPz zNhc*!P~MtDBxky$j4?&eG0GD5=vu_uzsH~`qk@v#I;^TdVF6sXtevF@{gZTu*6~KK z-RU*}I?Mf!iwJS7YQ}3NgG}ouLx!#_JnjCKH>+T5oE#07aF7CKiY<`X(V1;kN$?P; z@f8;*^5kUnyw!PN%k*xn4*CWn!8i-AX`}$x2^$Pzgqf~hn4_sFkWjvgFRc))g>0NU z@H4t#40mx4Pt71HWQqrtzj7-F1K8`c{pXRp0ZMc-Wj&9f(y-NianCMye~)BLV&1TK zw&xo1J;!ZLm(uU{5Lv}f2OychcehuVqgA6IiPfO5t+ZP4MUCNUqgo%FBv4W*a(k%3 z_DK*CD-xh0W3pxhGDZpSb7tY0%4o36slYDeaS;SV4n$=!Ud)p<04N19D>+@wQn0KH5IGt3Erl;w|?sO;~h zV#Z08D)Du&6PgIOVxDg#aLFZk&FG&rfu*ECA=VHwQPuziwy=`hj>T;*z#%*pzm*8kZG&R@qfh0b#2D(TE8b%cfF874v9*!PiZ zpI6Y5_M|)svyH0(bO8fRUD3y4DI*8Wt}R>D9~h*(NNJPUqgXD_GO*2DrNGCF$P-m> zT*q0Z(MNC;v7L!qn&5n}1ncEoOMLz2;xTA?49!m+3fTMeS0lrBmS)|3P8?;jFA3Bm zmMx^yQ-X;Y9$9Y#RKwE28bz=I`f&~BuJ`>t?Wq)olx)IG8SN1vGu&&D(mHn~{@`ZrnAQi_mr=fn1j~|S(-13)MjF+!-_dH?CccKW&n(@@QTAK$U)8| zD5MS6!Pbl4(nuFN65N^7!uPEr7xzVFdwjhGBHZLOOvD|UN?PX4#o3Ah?_su1BC7(q z?Yv?i@!WG#>5tRRi+`;i1s<~77b)idG<3mKB?Sk`~u?sH%c$q{_ zHS5RB-u|3;K0QbtcMJ||CE=J<&(o8Fzms#OaaXVPyUo^m#!0*Ea|<16e0NYHQC)Kf z-7B6=D&49*f<#~{8HSE><@YwsIVmAfxiD57-ghrLDUlpK{=c>8@@)3*t#|&ucVx?3 zx_AHkQI)EX#Ybw>2~D~qy&o)*fK<+|#EL-+!IlveIz~oi%NVF~;C!TL2ox4@4xaE(;GlP%JIS0qy zr?qvzXgOi^=^BS*N~l^|ND*Reo!Mn~NBS5OB*@PC9^G1Ux;tssY?u?STm^rrQvJ?O zrF*c}leMjXL;Km4_01ald+8x>IW>pAzXs)+#+FQ>(0Ijo0BRVjt}&3dHA(MnefXHA zEhB#955Awf-#xUK*R$<6UKevl6!&QdMX8_0r$u25d?xJ*^7r$fZMnr^y+zc-+H{K) zvsQiPV?r3Wy{$TL2en4mzAaYv?VVb2Bz{6I%!#+mC~isGx(*dW+9KEW&+DKmyoRzj_HkrZ z{f@(zSr)cTMozLD1h2m8)c7l8 zNuX-B&3eus>YMYuzcm+ok0p(0p`c^hCk8k6Q`!}ad>FISeB&u~+Vt!-U`|VLYtC!8 z_M%UT)G6>rfOG_bfdB@|YVSLKuMybr1OI^~#SZ7%YMahSt3QbGD_zMC#!XJg&-`#~!>f|^hgl`p z9Mm-K+EG(`G?&rZ9sSztJc5bP=G>ynCNs0HEDhn%mR|r3LOba|%lYL9DD8HWACJ)` zWDae&2c~kA**)*<`HbgZR;@;N5jb=mlOo5RzfM^cT)+dGd6-5j081VqIg7vEs+&|o z_+49yi462ID&*Wie}*7!naaQVr0j_VbhXqqP0S5gRDGzQ1e_&Y_?xWIY;j-PT?^pU zrlpJ2VAaJ7Jp>Yeh!lqChoh34Iis-^r7VbP0Vp8u>QWhjn_F@gkMTp8T^S16L21p> z@yuS3zO9Hkhz`%BXz|#yl7NO?Wb`N{gq2BiF`1Y?Se_bXLAHa};1WY^j+=rPn?-IN z$pj)6J?M}RuXPoLk-hwra-*X59*XpyisWxfYOvwBpr%dUX_=9rXh8{ikS7)-C`Co! z1-%E|(rufl=L(`ZWQp^3SPXaJX&LU^SO$-<*e_>BIFxRfpRL1vz4iDx_b=@(n&nG( zWQq(mM7)0nKZL^|(nq4zo8EzoXaUvJS+W5o;6D%`x@y<uAB7@}QanxN+M~4atyRh&ALx_^K_Gy#*q-9qqR5gZ3>6S2L6ND7&8KF@ z1f86>9nsW)n}HzoK>E27XVKDTvx5)&;KsliHn<^L-KH!^TcCy*0t`Zz)PO4d)`%W+ zM7+pR;*%c8{pPedVhK0W0g6ueB1IJUJ|0n@u;2wD{GCr{!oaYkTtws+Y0Cbtyl?AJ z#Cm@zxFCRdh5XonL&{mE^)v_IeA)$EpCtIApT*F>fCkzI;b{c1mk+_gN&i^YY0O-H zd~{Z9G}Zwhwh1bP6im8^qQY5ZtFRMZCGjOtplJ7qLzeP`OZN;kzF~*>Ir*Ebm(8!5 zFP))n^FBTA=?P>l0m_3#_RMz+i_ogsgy3WkW}T%5WjUwg$on#ID0j7olrjzsf`BXh zsd8IS0HNM)$F@{J3nJ4=bp!oO$HH;#>JF@4a--45pN*jfqG zkvdOMFE1jhR?pB%Mp|p5&-(C0M>fHYhJ$17VD@fEPgKGg_#8zqIcK@4r&SIaxKJoE14`@&qt}Sw5)F(kVh2b+y87eW{96fGFM{db)MlQV$r=9{bl- zWh-P(OybeJPlt|b*PaX)pDlY2>p1NhSPUhMi#q(Wsn8j$s8Ul9GcDJn%vB;qJAPjd zKJ9TB179c2>X-V*^{4qy+(VJ{L(z1#>)>a(UN-){>+lZ?{|TK;#FFpkQ?GG{q3^C}{_r|9)s{LEa(Pb)n=C7Nd}BpgVj2!*m(E zIVDaEtN4Lc*ZFPQ{{kI&ra!zFxOkPXB7 zFH4Kjq(VltBFEpmIIWu&>~Oqf?UwD2>(0(1beJVLkt2TNenn2jTTtp+64P4Q#`1OX z7HRByWp{3L@*Jwkc6O6Gm}4TctU-p*A;gX8g8hBFv4lTonkjybmR+=~sOfBsG|kgc z%#UGw!G+o!lF*mNDPxS)yd(1i=)+A*C>zE{NT^;`qDd!^(+=b;J=w*)Fg>wFVQNca zKzigXl~Q7g{TN7KoWY)VH=7DDHmW;An*MW#6xif2ML?`wsM9{>={^tQ8WAY!^qVFZ zhdD=KS@Bope88(dxKM)a1)alFDz!?S=iCYTQVJ_Qx174glM~+HEfVNx~st;uks2K0^>8F z@t|wA)KrP?CGlew(w6Ojnh*j`Ma6nU7xAq6Rmm*ks9dT-5nNoAp<$sT({V0Zxs9Nm zd9NNM=;1~5htI4jNZsG1kh1W4=#vmgRg3#eK~Jy%Pif^~hhPK~5jAjo;_*zmM;Jg>O+B}h@E)8+*)<>NGujuMC|j$$j(jS07r${1IqUrTC<`Z)CMBv znRj`yH~TVu5~jLJXvM8-Xb7S_DqYco92Soz@lG#q%$8+-1M-#_%E9 z>tF5hrBxX;HoqleN#>I#drk7aJrZ&Jmp+Ai%0`zY#!7W&eF8tRnGisMF18pnDBi<^ z0tL9#P(G0q4sp2^3X!8A&@R?-1~*1OnEa>RNz!j11MI0bm{SyS_Mz!}t&PAEPL!kH z+iN4b4h)V&kZVec6WCQO&w#Ebb+w$uwI+H|*n8(@!rCj0KBT?`-pdP=*^`O}3TNx3 zOKw*rvn4;e;xqAU(~Oio@N3_2m7j)bJfR~-c%(LYDmxd}SucveWuXQX+$9E;`ZBC5>Ua1nyKRD8DNS`IJ*3 z*vl>9c+goyBH>zno(&fBq5^-M#`Boy28U@YJp5b$`ygr!&l(2r4|z4De@1tRVyHso zHQ8uVgY1|(K5P%whe5)wTn)}EIkj&VJRr{?l2)fo5&tkErO$~zCD-Gn$Hw;`HD6E~ z@G#&KPLoSgtt%XKnsJE&C5hhLQv6dIFpkz+7W~xj91KEcr!5D08E_6^!7DIp$0e!# zB0c)oo1nCftronLxcE)D2*5eH{U#$ep}$zf&PE&luhX=?pxL(4fTuo}V5Xe3?2j#m z0_G~PYg{~#l6_RTysE=CV~_YndN4jkGae%k`Lt1fKB%hBoOurUQ*44Fw}Ie!5E$_q zN3JeGiTlOBC!}Cb&_Md{v4b5qFA-LO7ZH)_!7*`3YrRU1NElFq+S~uNFaY8LFRR0U zR)ehQ{qKoGhR2V%(PONB9pVuqCaI7Vj!LSNm!?VJD%FBP)rd*YN=WoC)#ELB z1tg~@JMoZKgO{Rx}T)Y2RYzoG8(+8IfMZ46Jk5|09@e+eLV7}*d%5H9A<*xefLwe>ZTb4em%O~f&B z0t_Tz*fMPBtddp9sVsc}M$Rw}{I>eZtrMHA!|kdPOWck*lb}n{-x1FPZKV}!E83Dg z=~kI?KhI#H;`I$p;~UNEnujOGbThuzdtmiq9ITa`Pg=jG$RW|NWln$|)|SsOYI-`O z?ep~ES@9q%o_<^Pd;9a`cJ)w2U#fR-E^JxAx;hZ|!}xJIwuV5PODp>KUqIiBIr|+! zY;3EZPfVs6Ds920KsVVF|G1;Yi+xzUr7;_or83@Zudzk5f%fD)76?OV^NIFL%IXPv z#X3sHN6U7-u=;fK_-`J1-?>MN^~%5+HkKh*Z4=aMv}&`VH6!Ks{br|i`l~{>H~UR2 zV`ztY-V#}mhoW%@EN@Qfv3p_nVn)(klO8qlDqB)4H7rRmyN7AV)Q4N~uoGp7NVYN+=pG(X8%!V;IPl6M1PL24WIW`~m zPl&77#u5yF+m5@S{_%(T4d1<2T!;_cl)&|1>7&OonRRTr&Rr_s-%KyoWM+r>Bn9=n z(~f6Yy4FmYsWYuhlZEw$ZZbiIz3;~!+Hwue{y1>msySHg(eYWowZ#}bJctuiUw;h7 zmq0KvxWBGW1cBBnlWEBmj%R5QO?1D5Eh{2`MIky3n08Mx_6Ay&`EvYhppizqqiWhw z3^38!SUTKE5{2Py3t>^Lh}V3?D2_;)VkJnEOIr+)%z0I+tpbv@JOliKA|wh1IMl!e^yz>4$u{(;fdb0B^gP#ik5>emyQ5tsUw1b z>@%u?tAy8^de=khJu2%G$Pl)Bm--Q}K< z?hTer%M@8wu#jJQX)iJj8EMJMBTyuMo;raFK34u}+ZqB?k}wG1jsc_o{y_3fm&YW9 zQvJ4(s2>*5&JBREsBSi?zfdk1CbvmnCxGaJalA$L#V$19fv05^Yx3(#?dIF z6M=`W7sUyJ_x=SoUxD*|V-+ij@4r-Wv0LJcT=4F>x>uf9uSuAs5mhsPW_P~Di)9l5 zMOg0YDjuH67K9(Q?TOpt3UOyt-FOz8aHgrxnXIjK*DOIr6`)~~=sv3M=uevp-CBV~ zwfAA!B+iY}r1>FtRIq0CG|T*km$XuC9#7I&8-^Psi5NZuk!w!*K5Egsc=maZb63hh zQR)uI2EmpV{Dpi9R)z$lw*BDDU=RoyCoB2nq~Z44%by%>iu@4e84t6CS6@mBQp6bZ za>G&{=w9-!;hi2peLGbc;=rHR>mr&3_J(ilA(aa;#SD1PSUS|MRYhsKN~IC7j%M{` z^P*Q8yaI>$@FIa#3I$6GMFx*A!{uq zn890b@7gxF6T*S12ELlu-t2agjY+h<2u3`~){+8=GsSdAedu=qBe73fR=7!hkf~yI zst9$p_}duz+1bS*Thn%RF6_CtjLAxzoF8P7}rPMtQdyTVN$nyQx*%Y`DDl zEILtuJ={ihMKLG{q86PXNG?5t3d>;o-tKXn$cyj;g3AQ)iDCx7he)Ku4Gb;|Gy3A7 zTqbePa?Z%GIK2EAB!`J9TkMZ&>Co4elukf5d_2}ll5Fzn!37`NlM&tp^5I2l-SFgo z6E{yW$BjN%Mxkw2<1G@~)6)~PKn+gDIczzlGfceIN_=?6M;-h`S|703GSgC%`cTv? zFz|l_?QI(D?Vd}7pRZ#TF0%E5Pwun938i~C%2j@@h{Jpe1EwPZ!^UjiK+$@_Ixpbq zZ@+zq4SvegS2!G!*P;tJ0_db&16uO6EYZ3K&{sCYQ1HgDd~@CleMtFp*UL}?O}47K zM&MX2oDi)TyS-i6)r>hh>)8Zj>8iIdZHFx5>!>^Qi6rv$)c3lN6G>TOfptw%m!|#f zT(^ESAPCX9R2*M(lySo1#J2H!f4Q`Ibkkox4{f=qS>?oLpLI7aU~aAQj|uf8hbr6T zW3TV@FY;fXHUjjFYmY4;>nKuS(%e8-NsQT|rTi|Kbp^5&K=)3WMcw)ad)zVmEv zJ~ttdReHFeJoL9v-4peAl629W(5-ZaAhXy~I35>zUj?<*KTpR2#;v_Nclo}aWT!tr z1m0mxEA$%Nl;!QREn$L$g>ZJqnkQZWwGa>!&1F$N9ZE7s(b=I%rGQ4s3`VAq1-X;J zlb*9oxY?uJy!8s;7N1^QgSif^bus55u##eTv|^5NE(nu61bwG#R42%~3|f=Xl-qF# zz=I&)n|07PXV#vdzq#CowOJ%2Pg-#B)>X;+k>{I-qHPEC2yhZ;vPX6nWX>*nzItsl z5@Y7X@A++^6DKI)594D?hnjm&XM= zZF;Eqi86cu>v;fL^u#fWUnCOS{B(KHo`Wej`6Y7*!KCHOo$?|$1(G8T37ru^HhNEC z;v73^$iXo5BhB>VBNU{H1v;O)Pr>EPJ9Nn9^Q34~EBSucbqchk0n=A} z#79{6tOL~sfmoNAw0AE1K)rZ&8P5&g|cMgE_x)k&gW_Nmu@EQF40GZBfLGdKPpXc}usr|!(d%}Ptw=r#o5BkwY zYaKG#{y0d~uK$kS9DCUPODu>l&A6{^w~w-*=XgHm)c|VsWIC|-6|G7|v1+*e0o<A!;|1OU3BKgnG=09azq}zW-2QD#EC?oN- zJN#Em%anMFfA))9ScxV72N0U}w)j7wkbjWHKPZIpe`z-}v-~H07nc7@-z7z5({@wz zUv_3!hfEL|J$f)lzZI_gL$+Cv0?_I|2&9rrM3Hb4Di8Z^*L4&Uk*maQFz{}!rm{Jm z*6V^(vg_}cx84gg~O31Ugvi9$YzwsLDFym5A!`Jbf9bN+>Z`Lw!5DdtZ~hx%;qm4x9H9B_v26-t?C1 zG8TA=s!B1xIJ)0?>b`eE_6UUwf@xw%L+Zqrx+!o=5qkR(AcjhF-&q&hoHvBrrG!i|M_BGFCgl2k4_2paiaOu)levf$dNj8vQmD-$c0a zraZ3w!|6Gt4y#WOg`q`;C86he<6~K&^@y^n>FZvj!x5%sVc4}bZ<;CvyHb+RTr4hV z>gI8)O=)Pv=ZINO4*JSyUWOv<$Z%0D3^>0AuCYdOiPVC8a;E)q8oxZ>F$I0dfGDYG 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с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

32uJ&bS4mox}HE`TQL_ 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

b`UB_pW)wB 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

-q?yA09ObWpuui@R`Lv^{fd3R;jAmTrTe`u>H6 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

C47}!uC3&7vZ73Jc)%e{(AnxM&6;S-gRz#y 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

Hck#b4Oa#Vrj)J8s4-iY{BUwG1J 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

`~NbeHA6_f8_N);0Z|V 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

&p&onBAvJ{PD3KXvGq=#HYxJ)2ERmyu7yn~U0j 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%0D0EK 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

3+|%`(K=ML?vaQ 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 z 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

YE#MfxpDC2(&dN%|AxE1B1ZF@bLW2Z1 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%0D_5Tr}W@Y#X+&b%Dso(!A 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

H}~Ld2b4>>BO5pbOt5raU~?g2I`% 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

;}gS#Q1WjieIQq(!-n(j z%}K?C*6*a+_ZaS*UIW&#a;ocu!rz$PFjBIdEFv2UV~Zri1Y;BGW{d#uKr5eBjJD~b z!rLt4g%2PH^cW;n@{7eutMg?$ufJBq$aiXm@k%8;kIjj#)L^?%50kNy1X^thld2p+ z*^!Jv01Wm$SR9%tSIg3U3oWV?jM)U?enKesGQTRu5aZ*&#CuUxM!r0>m~|5Xr@_$A z1|jX7D%`tYHyfo_bfXA{0qGWQwReFv0hUS(vMrAr7|f#CER(pW3DC7e_D08sBy`}$ zdJ``06FLL)^?AaxcXaPlr4;&ekB7+B&6s0s?%J;*TCy7u3a^udgIpHPX~$x}*m;Z) zJXMy?8;OJAM(pW6jJvMZ7`=K3Tz)M5)mt}k2ox@Y z;Q8tQkovu@sn$_k_iGIjhVkJtE9v3(BU4{pk5WHsu}|Y|c^F5j=j7C8xd_eO@fy&M z)}WS>s~m|mo5+!#r*SIel20q_73`bT5zT=3gvF;Tq3p-$Fp3T{tHWQL=pD&!j&-R- z>Za}Q%rF1=h5SM3l9@1(z-H|_YvdohELk?v(q!29q|?Us7WpZDx>vO4msx0h+w0dU zo31Y;d2ROnO3R3%6yEITcHEI%WS_d1Wc29l7UsmkqJf2dGfCb=4=D<%Mk@PgxMdR z;N=YTk}j(g1z{~?E*rgFH^}>KoN!82^9(Reg>+n)@L`yuszfcR;%SKN0pZ&|#Fe8w z_e5E8lK2@PjdYWZTZSH;*wOd%5XRLiqvUV-h3NeCQKI$l@tivB>i+pX|i8b;L@7M8{74KP7=*hiTP_jV?>}rnAnya`ZccYy(-? zV?dkBP+oymQ=wa^*5EbDxCDA963U1r8Z`t;CKy9H%r=0&hyovi*WY$Hp`n{%L`jaS zn?UHB5}y)Fa7)@2#Dh0*USt*SM~EyH>Wn(G^+pmId-D+G?{~iJbAfiHUHXzQ<0EJ( zyW*c1S;?7>^+8R(RB;B=i?&a%k_;8H>Kk3m)djPL7*rS?bpni5>z)^E#fR$%mn+QmM@X0L`?@2XGTv0RIFcI zj3{}^f+fv0$04Y$aF8r^EDQ1$ZH%&l$}#8z8B}NC{wzXsF#eelrk;f8ix#-G+%MOS zshasCCH%6eD5FRC1&eI?7m(piT2_2&@RzN^ZH#U6-c1_iq9ORmHJFZ5f(CYyUN~+x z{6M5{xwy(j=7joT(FGK|}#XPqD7ANgyxISganz41~LGP7Cuaxwvbu?~6?r@YM5>Z1Qp2IjZNYlAucBnj&F4f;)iAT;#^6G*}UM z8LEAP)O!v06#!;C`Zrx2UfM!oPk9OW#Cq+70?y@d#cwEmDdwbEX2h{jX zBu|?pqxOe97$^5_$(*`JCql@C#SRsc2TWs8hRh!K_Ut@n=C;e1a4GDra#G)^|8SV>y!)~SM#5QWM`qjce{pYlj~6{DK?}~8Y z%*$ESob7phCgcC%L<(avq;yHONxgimNN`;%v$^Q zM=;F;pQrtCEFO01jgm`WDl)qZY>pF{gh$)@)y>e@l*4uAG&LN)nS?v_sh46xC2fQE z6$#b$>3ETQ(9=fM3SFHE81W4$IIF&9k^RWj1)Y0ocbPrIx?9RkNx}=J5gymJu+ZX} zVV$E62di3I6fgF9c7L{eIsX1(D~0s^-x(7BF&X~LkYHwG`Co!3R_l)_vG2Mn|-Tw`3gOXH%GQQgqUfKmgo5(`dqQi za&4jpqCe?6We|fHA|mEvY;t%!N%xtQ95OER74dDGd)4#OGfptd`)||7VF*{-)W&3; z#5ncK*6-LVk=@3ov4Y*kl!kV&cW}?{=K1!jl=q(oeVKite!nC5Red=2`K6%9l3oj( zPvx)*q|dncI=veGxLnz`%VLyKegBC4e!N`q8}IRWzxr&&_A$~q)ww#iyl;K~?x{Q@ z!rQ*Sy0h!?d)_+w`rbncmFz07qV-Pft_KEm_ozT+>3&Eb8FV1Adrqtc&SiZK&G{@;wcs0x6zmTAUM#TDO!hIP#9 z`u4vq1J{s=8@{V;8H57gbH2IP$D;J8FPSG(Ap zi&slmSFf**zCG~&E`y0c;Z#xFPm|tylif-js}>6|whiHn);(F+1M)1C_mdW-d0Q@i zL+D?YSieMP<`YPvG-Q{eKkK&@9QmWzYC7VzP^kN;3IR9JH~GE&wal+q-jU$6c6VX1 zZ@4pQy*i;5riC`skqB;+BVo}YMFtceZa-%XS(edjIPO0&EA(%op#xT8mv#O)gDtk! z6PRjmd^lhekJQhNL)JJlLM@Y>uXqkhA#hJ7>!TJ^;%mKdl^xaTwUnv%BWPv1bs{~e z>r~9VPqIaMDq=A$j&uev1ujGjNfrwwJMRf=s0O&sbC+fn&q!ul)5#w>_6QK{$;*)+ zQ2TqY#BNO9@MSX^VP1A@n;;Q3KI?6N-{`i$A|em@c^?S@V4wyZ25bRZczOpZ;(I5-jb>4*mSzozpCQJl)`La8x@bd0FB=?e z;kM85nOZRMO-7QkLe{9ng5wf#Y;}%*=-ig=N3fOo1{hC(fBLdBx?*MZD>`k@_Uau& z%51o&Dq2iZDkO)v5I4wv6Z>O-ZrX(@Za5=EoB@Gl9H-Fo{xKCF_|cb+J~@WQCD<)n z(pWe9`77JVYc5Hvb4}t_-EWLo!epiQY!{~&Hq-*F_#M(_lP!ikjrOrhoUg#EV?a*l zD7( z7LiOh{Ai(qx_yr>5=vS4UFq(k8Dp4%*I2@(S(t6AOL|GIwbzM4EIND z2KjRbH2jQ0tNp@32`L2ShFb1aE$E`d9!fWqr2~h;2I5$L9x$+}@}@li9lCN=whdzH zcCLW!%=A5+Ed@G)w^m;zojOjgL>}Zp?>^kBHV! zpP6WP(PBJExU}i zo=s{_+VE>?%&;vHVCVO3@>C}bZzX$he*Usv5v&>puZVqfDuR3rKXjTd`s>tLVoX}R zc6%r!W1tPwwP9pYN2q?bTsU>fKNyr z*Gpeipks00p>({?p%@`7fQB8H9Pt8|URO=om(v%@h|VA#c!+>HPD|^loCaQH%6D_d z=CUE$lp8rhAWQ@b9nw}ht;r@b7>Nn78$1UUOp z)U(x4K>7P|^E*s-auJd+uY6O+Jwz~euto#fB)D5Ybt&7gYDV@UNGg`!gubqjBQ*io)V2X0Gpbg?8<#;XkIP!%+{ zQzBau0Uwy%th%T$4G~yb-A}jaN)X$xa*|ca+$PVq_1% zz+aK2!aGGX4jaI?<>@Xp(-f{wAwapvUl(a;yu(<2uso6?)8gJ&AXi72XJ8xLDi72Q z0oWws3N?H;C0f&R4XJAge zY4-7Z?bBp`wKqr&9i;bm@w& zaOryx&UeC4)N%~t)pi{(d^F~o1vPzu zJ_%}U<=Xnw;lgmh5mKAln>x{dHs3T4N&FjnTCKzL$k^)9x%n|`MNBT}TAPLFzU~ry zLW=Uo(&;F&_1okM!X`JGBVuGiPK9b|&o{soaE3gk40~vi;E{I@r<@DmH27z|Y&46P zU9xPC5Tz)nelvq8=T|4=&>&iY~V-7w6QYWCV9TP&y()ab03;eI0ld3oCu&{VK|0_=`WwR?!G56 z8Az+iS_aCXZmdSiA36qqWODeDA}iUBmz$hZ_grm;iAt`noz^eW(gJQT(_P`S?PFB{ zvu58m*^S;!izE$Za(rXkhB;cDH5sI;Dn0@ zeyJRA`-r5cbl&5tT9>`j1ttQv;h-Q210pLjU-1vaVj1O)s91Pl$tx&|DOMyBE?c}C z3g*iMxtNjhp21@U@uvs}teYpzcBJ7oX^+h2O@5z>-8*D(GxBbT?i(dB;fYt3M^Xu4$cWH1`}v9X zqrYXcNHns+DuY6(WEF@QWMvo{0NLT~;XZ|AV`f%HLn@x-zPm2x8*mz@oe03<4@Zl; zjg1{UyP)1~gs+WlNL@`#j^;yI5CJQ%J*CtAjXay6B-qN~%XLo?}q5N&lm)S6wRTF zx8aYDhduM@YV1?&>7*NTOa+u_=5G2D2+=87OyBsA;YHVx74V0fdR)P@ZOr0RoV^W_ zQW!PgLmOq?nc-G(U(M~BD)9=aMn|>-;0v~+_JXkYCOlO=AMj%;8sAFWT>rCW>|#KS zMl(56E*Ozv1k6Y00E@R}9^UaImgIh;0H`dhTAj5^Qj$2DkEJVeq=(^H$Y4gDk%KAg z_1<(+5N{Vtq;7NKsa(Hg@ti0fz8HaU)>j|l%Xv02fY`so}c`^ z^%p%j4z7X)XoKPdD#Ht0M(>8sVT0-~PJ(X+L-^!ye$$*6-jJ5WC&sRvcX-^aJPL9o zY13lXYu2o9*x9;&qlzQYYUCfT4j&JnFP7Gp{s~Yt1~h8Y!pE2E#@?u;nJm-BVJc4- zr$=ADcPKIJ$u=SswAkEmIu470)AdoQQU_Q85|sLeKk^Q}6=#Ne+`hm06`E8=WsEV0 z_);2(bLinX7@r}u0oJXI*Uzt}s&pFNo2g;%Q4yC1}aU2{R@qeKR zcY~SHk4g6bgq^+u;pW3LHE8k+jYN0JM)gUGkC{-`@6DU=oG`5R#LiOO+yKhF-;{hD z)!PK+gY4x5V(F>n&724AQ^{qO=;@Co!hAgkpEIi}oQyU(;4Lt_caae= zG7=0wqrma^?H8){S^RLsTNe{ox6`hOB|P>k$IKUqDqbp zY)Zc3bp6nZB(-iqB9-ySB)Ij$$z7);bEc4mcs6o*0{AD{cSalRv9bl5WP#Xm7%z>N z%`coS3@^3nFF>85G2BS#Kro56K=fL$e1Jzz!FS_ESVx}3#Dq;nSMdEvWw|~cH=49?)1z|8n z@<0rKL5C31tYh69itp=`UHp5;wTGYv&JYT#{d)&@6$=4?3PcDHg9t=N07E2Q*lyvA zkN#8|YG2%U^hF5iY7rc2#{wkaZvzd!Y9tC0Lxj1_TdkTUavqv$QaxVc?QyGVYAcl+ z>Y*ZrRi&TIab5;C(447SzkE$2RR1`NAELn{`BPi4V;2^3kyhg1$7@hKi(UP?XrXF3 z`P2|MZxymcpZeJ&uHK1HOP~$x;GQWuTi`O~ggD}QccAmgG7kUMBY>{g=tud@jbUwx zEnmmDEUr)^HauU}UTiFbday+*>@40_ifYisr-U4%W5EFHS% zk*6)jNCe6(7K>Uc{&JEaqiN4Urcc90@Bo#>MO?Ov^|-=0-qD zeqG<}*k@S=pWG#(0-MWF#_&*Vt_>NlQ}pMfZX0XE^V7b7>-aH}%Q2^1i5h1fn3yl^ zm4Ax{-Y`cw?v!R@^)`+GVQ>~Gv<1VQ>&_&4-bQ^knB)Dg!i-&c33Yge=2*+HtYL&7 zoebEu#_-WC#>FzF{H;wb-g^zCkrGbkVgyU!0p4A?|2?hB;&>F;Ry&XZ!a0*Zr7G+H zS<7eO^ytnI9fb0;MktW72wul^J~=kowKCFHa#XhVt@sJMQ)lFI8YyF#M*=XR7*fQ6u@dwu*88V+Bd+Hi=WMH5tO-vElLe=aD|*?8GWcnvzJgZwA@B*R!!~)S7@;xbw>~g%l-e>G93A+#Je%Luq|ZI& z-PYvAaGtcm{$qXc_im(Sk{S_j)IZ#pokSNlvh&PVxT3`{^c4tc8CQ`_ z+}(2(x~z%4iXQSsN@Gsl^b~|4m0v-k%WSt1EXi#0Il^}JQq8?`RMLx^0T>M~_@l#@ zy!DIfTa`xH`&9uZ$k0Hc69!~Eq)cr&!-go9q_d_?HT(OGH3z1aOYy2V+Kv!kZ?Q%& z&&G`FN!~8}ZouTyr=ueYVkf8s#${ksg%cjnUgw}EzlSq@(Rr*$ zp5l^?N7-BJE^4m}R4@EtDeUj~Y<1ILwBhB^B5MtA29j2D7xC(6q#p~5uiVnUuSbTi zPM`2Z-yuFu>^^R{Z)tH))tr_Q?HEMI^F;7!Ob}tyK3n| zq-!&yL<0t+{b--q0$W9fv(GoCdqJ-0)e-hDDJy)yaA@MdaK2r}5^U}K^tT%53Y#zz0tOCus%HFA6Ykf#0yb#rXAf}< zjk>OFD$x+#c82EliwU3XAdn?vUDO7TFgawGimo_wHk!2pXRK6PizJz`FC|AC#Qm!E z=OS8s8Gt>?xpe(I zx0!>rhrpzrBA=hyvvww|4ROaAVPrp#mx``>v%x0I(I z#GR0WTTnx^>h)MKJb}>~YyrfR{8+HPm&WWfAFRAunFD7&&e#FhkLjslGH(hdcRiCp z%#u<%tc~kJOLmDk3?d3=dCYMBb&L87{Pzwd3r z^khYU@$5+#q^G1C<05Sgm00t4yjvEn9mfYxTuhH^FT{_z!^&lV?(1h3%`fDN$V)@*)l3`?8yNu z3zd3YrFIc}Kwmqkf6k2)@Ou0^XL*)LXfd8CqC`E*7cZukB~qv$RaM~EvI@>64*Dj> z7XTVxuL*Rpmvjb&AVFQz$J<277E=Cs-ZaeBM#>YA5tAg64jC1uU7$*ZY#?mQjCd8U zkcV6;b`QC~n{t8K_dA1vK0uC#t;))IBCPt~0pBqx=)ixceN+o%agdknQw~35U zfJ2h$j2-ADrl?G8QEiimO4~^JQ$kJ>)y^w)3+xzCu5l;O0315FX_`9#zn_Q%d@+}| zjvQMeSU=PWls8aV4BD8BvW^s6ESSjCjH~W(o{40r03ScHSW^&H5jmi5{VA(2W(USF z^7ccIvNb5>zZ32Mv+#|Di<|3zJteXHhYt52E&sn~TUq{t_W!?%_H2y}N8EOl|72U~ z(-s|F?V+BcJE{s7YgSNBe^pfRMUBM|2b0)1HbvfNXMT@c{BVjF^UPjMQQu+f_;X^L zCD3Q4mK+Fp(EIB2PV@G=Tpb-0tBXZ@GYqLpTNy|VxXc{i8p7$%;!Ln$5KsB0BV1hrRVyxH1a?YmNi$hZOsFNa6UmNZA|)buyL#wSX{!xrd`-p* z>V8Fcr|VAp4Xl(aC97=WXn*+J9!GExdvRh8FZKds}j`cy**ij9SFs6TKB!be~aCVG!82!4igI68vx7W0a?6u>!XSn zs@)%E#1$%5haL+JxB|Uh)T>GKSGX+|8yWl<`S8ijIV(`$W@}Y&CNkGWN4=OLsq0kz znHZfL*902VN2$Q)>jq7AOHJ{{^UHjjGmMR`de2E;k6x-Qn(D@c)IY-~S>wDa!@qz{ z`HiEUB5K9;>-U|evnidUHo#uakE*zo-tXIw%K|sI_ZNG(wae5N?z#@8I-=m9)cH7w z@$<)$o-H;`Jj6}(&jD0n2Wl#;ru`1&66cnNT0s4c_-0QneC}{EisbUus_jM{yX$B{ z%wqqYXXEc;so)0K`B5o8<)-T48I&2%*H?#b$(x+3O!~n0*LvYBwTs)jzrM!wPtLw- z4VAntTjF*IYM4|Fi7aM-lFP{&b4b9*R8o(J?bbetq=%; zOu|*WB|nvsk|0K&SCUYs9=VPDH8xqAn#O;E^mX5N+gjUI+gu&T2$T{+^zT}{NFxbn znRQDhV+fkbp+iz=WO*pY?DhHOXz1mWuH1NwP)?w`#d~OOt~jHi4zr>RO;YLta;%A? z(>;X5hKqqtd2sPfzChGn0%z5hUw)hmaM^leE+<$iMo?LK=wWz|3s2FYd(8-__onrN zNLe27v%Iyk@QI(KGH~LlaOt`>WC@1BIavu5il4rY>WB35Pdt5@=G2yjQ)I|KR556n z0D&KYWkVriCx2&W8D>tq8U{;B3}MwaZre+54El)xQMnBDoGAN}ode&nmkudiM}#X> zmp&j_Ny+Ck{N8gJ?a)pGGGc@Q0sLs*Vxr{GaLogb9AL)cdL=6JIZWJksHLdbXWcuE zB6&029IIS&J@5iM8}|r`A)F@uJg7C!_3n}Km{!2vB&mLTZ>`h=6EnLupu-I zRLfk5K;{n05qg8OB`!?>lvS?@PhDcaq-vycigOTlf#fhd6qzvmqFVl?^Jjg zp?^i^qTC#Kp3Q%9V?07bj7hfs8D9`dlE+Zvp6_+Vj824Z@gQwC(PG zm3mBB0z6i7VVh`;F<8<0;$yZG3~2DCN`8UWCDfq`(7QCPZ@eF{WfX-FthrL8nJon@ zCR-q){(p?Ub8xNAw>28u*x9k29ox2@?AXbUZQHhO@7T7zV%z4;`=0OI^WCan)jd_K zYWC{Y>*@LQKRtTPIY+OV_JArY^koo<;$|xt-X?)ed54kB%G**PSasT*G{^V+TE4)d z2zKtbS+<%0v)3lW%{2QY7U6YWxU(0m-y34o&>v_qQSGd#-Z3WKIUo%9M zzP)b@eGMeD#lKAqg*kLq#IOHP>7@>EVqt8M5|GI3v&obid?w;bfBJ{Fn2c?*>!#&+ zaLrRLbi1*oM_K7{OT9_^Ya^&ATohXmA|&5EP~z}L?x@A_TmxVu8-XC6Kp*BU+NLKenXby}wuQ zI5P-^0@*D?=xev(K1$QEUCQu?yJqgRv2dGRMFaI&9?|;G3D>#w4@NNpF*7Ar8<<6C zJ*%gONB&wjG}vWa2Jw3ku|-INmrxxzn#w;Y-Q#_tM$RLDz@9($$n*6YDpH@=CYx55 zeIo^aNSN_dhp5Ab)Ts1@-fKSur&}G4sg(`U&fD~bdjAy~r9C^~`Lm4pk}ojm0uaWN zPJych4r01{j~9rRm&RZEb+hmM^iel+>xqGR8pu-x@DNRH@jfAqWkk`n^h67PFab4P z8OAA^m@!1M_NdnqrMjg8C)RYI_3$P0gFqM&gy;I+OCiJ8=oh&Cu^3DO?(|trcoQ-H@^Zer%lRne3OAG?PCxUwNDLeM!&r4G#V%a} zS6f%$*U{@7AqFU)CBC6aP(eif1>;+KS}xW_gQp@t7uIfTxtTNtdJ9~?%Spj6XjLMQ zC4M?O9v_A>kpLlzRhehivHT9P2fhNDRN`OAw4c%0$+jX7Mcbyk?-xXFDDoU$u2WR6 z(dG#2k8rTtk3h{JU_Vh))k8d9sReh@dXAO76li2o;`8t*q;WCaFv2{6(DunGwxbKg zB0i&_BiDIDzOc`0eH_hS9~F+C$ov)Suk#ZIp0KWlFlZRj@%@Orcyps~%sZo!Hn)PK zSud8^3hs4$y`8(vPd^!s%;kPrWMIindZU(bHC?G^;rc({f{T!N<8O5ze|c~ zEML-gd+4J!o8i#uGQFnw+jyB*=+LNt#J~=T6&lJ}*0}s=|El?@Fz_7B|Mi#_4cu9D zu7bk-HYfyYN73fKaCYH0q288ww9Ll%aT+A7tQR){;jjy0)RpIPoFYfuQc2`8oh>T* zL?|LBc_t5N0AZ{1$gF_EXr`e95gbBLYhweQ0E*aa-wjly95rRB)PD>qDAb$O|GM0 zA~n%4OVnFz4$8rPpKwkuJ6^np@WMCkB5ua5=>BUA-S4+@jr*?GKNKiXrFwzqi zl4$3QA>ZXnM?o;sUn+EAdjj8SyCL#a%Mx=fYMi8FV#HGa)fl}XvE!!5LOLjzmDqKa z=Oi3MkK0Qh@*0r~v$xmJpVq@c9OWT8O^n3}gpF!Oblg9^D#!nBS4R6R^3|b^KD%?>_P1K?;&(Bz2 zS7KW+Ed@q9(+2&tN4Y=zyC$wgKSie^qfrx}Oqh^=vu;IhiebzH>X_~N{)TnE?3%pd zdU)CKwD&GUr-UWO%{srwyy%Kan#$I{*rRoJb$WAUf6X_Hg!T)YP&Fm**jUa5&euI5 z5wsvDjkSvK7&1%>6i;Q=St|A(i?JdBdADr2b@(QPnhA?E*YRuLStJE3e z590{JRuQ-H4{{@~YhNqXRjlN%vAVTZ*~Qc|9IfjLsSV3oRIj|7Fn`^9CBls>Vw@Sw zBHg7K^6H{n)@@ycTQzvYtQbHm^ax4piOkl;h7rCpOq8QZA82%S9EiGA@UNu8vd;Da z40(fhq87~)eY7xWk|d<&){qa!U6b9oxwOUJDC61PQU(%lL5JcHM4T-6Iv-n=-K=6Xb zJ!ny`;7jPO{e?lQE82^};@vgg8Jz-Q69sUPTu*bfOY&~|U^mnc!4)XVt@B%}PD*S^ zwsn{3|@Bpc~?4ZmbRnT(Lf z%9n`L9AO26QSGq2NFvCgGaV*si-|!F<7Xkko#vUwUiglX&P1ErlOe3YaPiZl??j z_aT=x-9-O{N`o&+kQ9YV#!oo`<62ep#78injy>>$(WS>*?{h0b8AKB-ZR^0bk@46@ z(KT!b83-n4u)L&u+Y8C2a*)fz5C@XuO~mRpi!^M-!N=1yk(G1hub3Z5OJNYn2Dpt# zEcIzi`OqRqSFSF9HVeM*Jb5WV(w0SLe#^3DiMV~a&5l=QGSj|~CjNjt7CuM(lO~Gs zR=l<^)9M>2_u0U5osW2a2jSG2W^eRc-Zsw0+j52~;{)^$RmyxkHVpb$oOT_B({eT#2Lv;Z7|CNv#J}oR zdQtftHZ52RFtD8+0F?}4<6eOFNrbbVd;{H5DZlaF8j!yCuO%s}B{D&)M)5#3Y!)<;Uh>_SPXA4-8E$+XG(gHRdQ64v5ns zbJ-3I)HW_|qn0gHHfzX0yk-SmKF{E zRx~Yk@p8i_d{>y(j<-H5_fpk2k7e3_3z{m3|6bzenW?1btCMsH^ugogBOj&9(Veuh z(E-};uAQzi-O}=U+3k?HT5C+u2!UV)jkl zy4W0jQ@6H#>ObGGL>9B99k0(e*1xtXShCFD$)oDJbX49R>Z>BjUd7@4=IQBTX`;l` z8>5O($8&A4^W@{a^9sz6<4E5H9Cw;hU(3Il+n9W=OdAAK3ycG!{`5Wqunj{A%+Qlx%{KoXsTD(g;XaDa~5+KW@Y!g zXOtSVUjAmTC6mKPygxJ3wAR*BkXta>(W!xJG zX3`4k?EAM*=AU+YViZ@+NoRAV1%Pt3xF&R=ex4#|mTny-tjEfm^v|N@dp(~eBH3Cp zJwMeAkV$=qiEw?t!=oQ&aU=cUnh)&`om0b@MMV#^&=rk0cbe~>B~7VK zi>q0j1%9PTKwS3Sbl7|ig{cYcMQ_uU{g`7Xy_}w0Su!@mSn)c+hJ84mZEGU+SM9pU+Y=3uv`BJ0r~kR4tDO zv+6Sm`%wS>qV1Oyfh z=z;L5*J@eDM&*`98Re~mz*r2pm^YqI!~M%Q2j653UzbTHtXaeW9zhaiU*2!+KCum! zRGK%)!kgpHv@B32prFID=mo69wKZ0plHHyV?=GPpSH^Lsj7rYN;!5TeC2?w&FzMZn z5VjM-QgU^(LZ>hFbxMfJW+sd=Wr>m65q_QPSGTi)x{n#Q?M^ zmG7E8oNJf%vne3jD#Nl`1MM?USn^@QtJSAQ8w21WTm&nyU|sMHh|M7@P3yd8U<+>% z$NM|^-=l{Y5_I$^ng8;J%a}qNnYowuBhY$Fz+fzpGehW>oh#(bJZcs2m!aKi6#((1 z8@ejV9Y^>uaFm|c49WYKP{z>8cQas7zz=fxv-U%I*jbRE*`rySD7pi4eI3%&^SvJ8 z9IEqyJwrk>0-4;C2(j?GI%H3Y`C#9W_<=!GuYs-HMplWr(?rO^VwC~+1^m#M1~Crd)wJ&K;Zd_Pd_1_gh45gj5#mp5iY|Z4^Y{lErmFG&8A%XdKg`}jj>YdMzFO$i9@4)3Q;>s* z+;Z1Y#I1#tGr}TFdd?7vm%u$b{Y6|j)=`1d5^Dfka8eXy1OBJbn)^>HDzJATn5jwm zV9=p{+*u?lb~e3#=kRy<7T)p52UfPV{^scAn0;ZU;K^=nO*;vduTiUyGk3N(g`gpsHhasPmLQ?zznw_lG(%;v9E>W z)`*)nkFA9ubHuku#UYrYS>0xhex3irlMg7w|4NbKVK>X2eL9qr-j9cVP5G?8G_|3H zbp}k3v}etRCrHxU6i!PymzuIMnUYd>s7$z?q%l*`_ykQ}U4J=0&PxZQYP>eInU+Xp zmZMeC*qGdqjb=^;p@yRujlni`CZBi96M5y!6s*{NmZ4ljazf3Wl_}&Y=tMwz~5?;BsL$`VQ zq<2cgyzbiT*|p*y2fDnXR_W>I>a|U76LxV)!{^UhlSS)EJfPX4#?Rb;vlPn zNse#JjkMZ8m)8?7#H&RVRi|5F@MD4S%km0%fvygeSz*b|L|C2(UvO*w=*HGEd2UXf zRcRrAQRI$j+9sra#WQ&Yvl*`)DkjDIXl7=28e@EiIo?p4)~?q2y`_GnkS%Mz8Qn~9 zc&_h9bSCmsY=(lkdO&o4UtoL7#b|^`AaF2829pnxE^p!1C5V+yt3U~Uxp}A2oI!7W$|4~@ zTGjepL&>Uh2?^#BxSZwtICc;u>ZrACq7Q?z3v!P4X%Z+Vjj6sQl$~ITl|!wlF?u+5 zxCZq=!!3cmHuxOL$o?!J_QxYl=E$k=SB3D3$L$7X1tMh25c(#v!K2Zz*+aF(iZ^$jGPeN2vi3dXVtcGm z_4eUT_1&|~YF>BM=&IY_Hp7dQEVKGraH;vwPiIjw(eg3_LfELOXk-M$FA1LG&lg z#BuHT$vqXq%Rs?MH}7sfBqC{AVUF;LYn`wF-0q4IuPPzZpD)hbYXyDrvoYxmnr2zU z#YHvRq5`I+D0^!~#|*_4+K1{Fih|v$?V?k2i;f*|99V!?7!%~(5f3q{RN@BQ3O&)D z@TT^cMZv<{Vq0-n3_dR14jvA!b~q=b+cqK=`;otNuk0i#M<6l-{hr1>LbcS~8j06uMk^`s&||(H2C{Re%U-V4;IoPOlGS7S+JjBM z^Dq^>8VEK@t?KF+3!G-k0oSHn=obvy$K+WsEbrn(W;lGbWrX%YQ@{9coh+$)Y{Ow;R{8)aKxShk)!QWz7+z4g7RBokjtr|IaF_fRr<$=b3y(yPvzOJM zLd@~9y@r1u2@@jcxK(s8P&U!=R#nWUQSMr_%P+a_eLmdgxH%9PgLt*Xs|okED|#y4 zZz>c)fl5MN)c{yZf`U;n52W5RW^u26M0B%`fmroIx`-{lP0ZcJVM2)`-f|^rWHDkr zz0Uy0-a49}RB~)`L7d-NTKiY1gJLh$T#f-MvL`0YX|$6HjBwy)i}=n9C}1|w`d>Rc zpIFbIWR|%WVG>ZJ5zldN%&*wHVk|#{S})%9Lhp_+!c8&4yIpr`9`yNc3-fxqJT;C< zy^Be)GsXPM0qncE}{zc9-2S(%O|Vz43WaFD_r4ly&50fUe=*0 z2XYeqH@SX*P6aVMrlJ{Wh8J%xRpefZv^aA_uB4h0V~J{KMkgBPP-c~9F&t0m!o|dU zgSq~aXzxxhRJ$OQjy%p2f%cLqI;el{p16=q z2vNR-tk1oVAPJ}ODg;H!u6N4W#?Ut@be_GF!~Mnlh1}Sjm?+itEWSKWZ|E&`7KF%g zGopTq>(1rqzC}w3=m(*Hr>o8fpuxk^oS;e zAB;cgH3m)2_IZslM+r&J+a4UVL$yBNPr#0}&IsaE5Em=!C+l!C>&jQ>NYg|tlP8na z74CMmRX8_0F-6J-75<*Qo285_E-3pM4TVUOOkMiAh#gXu3cBQky=&GoBk`@(mYA*0 z4wI|6Up(-pO-bhMrQk#4KQXhz44|Seo$8${z{^09KJCaMT@cc)+LBi&qdf1cp-BB3 z{VDIzmHFWXu?j|=iE@s|lU^IQId_$o&ND@i!T#uNzf9!KL2ML~%a|1B1EaY;iKUBG z(7#d1i z6Y<}M8FEzIJ=TfNfs(u)OdlC+y10w9SYGsKC@`V>z&(m2p8kxslSv3Pb|84~D!JsTk-R{Tj?2`SZ)f#9E63FtLW z-2cyLQ^@~n6z4bc{5x7up&xFYFzzy~n1J3KaKjN8} z4zq~~=w!M(Uz7VOVFr@O-amfd?4m4a&QBaz?8+(kt*UdDiKL&gqo)8yV`lFXBFuLU z$|@r^v%7d-LR=r-EkCgun36_F!ZIgIzB=B$4J@ZJwQ0#`Dacnp zldf#uYdkH&j_{ZX*Q~ z7~46*kTss9ZGR*e73;%TU7p_3chjaHY$!{OWMWR2Icqq|_zNU*`$x`rrUNF%Ll@bn zEgRQ@5Dl$-7*_p+KAhDSwQ<;oTLa>*irp%iAkCfoZ|eY>J^}WSLk8g~{?9V?1A+l7 zR%v$@dmkZF%%LK?HOqz?G)wBE@he87JfHLjwpC(D6SjIf^EW8Ekk;EQI*-Z?a&Z>@ z-t7C%Th5=beYz>1%9c@Mx=8XJC{A2_SthNBE}4miv&Ck`{58tJgf_3(_G$ciBDm~B z2ins*AicgwDoV5;n{Xb@gEfoJ-SBWH$4$?TtLRd4w7~iU);R2uQ>TQq4lq(OW#Ih5 zsrSfbep{+i=oKWd*9MXV#?trRwCaE|5(mrjB43#C;?*r@kY0Od7IdbY@chE#vDvka zwn}i^J){p?_sn@`k!G7g5XQ|!D;g*Ru1wjw{dl;Nt8tqFn_Cw|(Xsp5k_Nwq7b^|g zLFZB_NV$lPasbpal{sq6VFqI5tbnQ zZw6(cO%_QD#pAtlfi~SmWIhOVexd+W7o*DkMk|weQJ}y^&g&A?yVs+AV|wJou`&FW z`Xqa7uk&vYkTNzC`n6XfB0r%}b{(`?$`f49L77+S%c^ZEboEJ>es@eFaZjUVY(xSF z6$Zbar1$I2{z0$hSoB0w4Mrj~I}!XMVrRSWr+Df{uP}N)l9ew=?0kB4WvhwAOSl2*u>(85n$>DmZ8B)% znwMO~wxbAFB(`Gy*0G{)2Df?WV4HhiRmW`)n!L|pN~{fpBFOJI--RCZKYX%4On6V%0&X`4 zx@PCQa5}AJr?vjl2%hbJrxmY5_!Wt}K>Q>e+f-xzZCZ}rlRYj!Bf{?1*SqyQ|8P+H z#xkyp$kUL2mr+GYSoW0I3Y_M9i08!%$k0_J2cmDOu$^g)k2s)rzDEO>>;6Xk(^FvF zPU|iDU`Yvns376IW&qKXN=X5R`iB4m2EC4G(5+9q^F=r)a{?)WSoOYVOr&*#!C#($ zj2|S>Hre>PaCXNsSQr?5)E`3$mcJ3G4&U>=K=M}K_ZQR-un-BCz`U-X*^sE@J>_dO zxivp-GQ4O+|LRDE>G^PJv|dv={9R9b(|RSu(sq%^UR718x2+e?Wy%#50&y%SKg`h{ z1K}QhU1-aNK*A~C`U(#&dtOa0>yT*9S-G|c%~OYyj6yS@{0spn&iXTv(HDMkEGEfr z0I~sY8Edr+7p;4R4c@}zr&lql6J>I^Xfb3Y2-WtFPEnKs%oYD+ma%T8t_UVK<*PP+ zv&lLkZge5c62rw3!>Q81ZS;ETM%ocs|GzZl7fo8KBbxi^$&6w@26sb>L1^RET+YhT zmsP~ap9f9r%*PB~B+!0oCLlz^|AB6SUiac?amryXgoR&iLyl=VUz2!JJc|?9N^TqLHDg8DrgY%SaJT7^WCZJZV*?P1tSI$&G zRH7N_ol!B_&gUvdrYe|YNNjNJqVa#W@qfmJjxgyR_w>=FncCT=H=Jc4!@X~yuwYMW zp&cyNiqmyGTb<9pe9YS37s(^eeF5M~kd_&B2KeuEB7wy=Rp-NrcpwspdtKQQ z0>G`6ss`G$`|`?@H&D;NioNm2;J2Fubf1i;C3e^;Rj>p0I&!*^2JNA{ewUtppg~JW zfCFl$X2ft*cLuMuYx_5Kfb4(pfe4q>B99ez-|S9iqX2f@-ywty#OiF^CqvALrhJx#1)Og#);` ze~}u6OelblSMet!TN`U-8D_`Q&lTsm#L0>pk_e@62+oTe_jgE&8M0vkW?dc04qUQ; zXMMLNqYjIF=s~NoFmxtJcv5;D6kE`Rp*6Yr+*}|s$S@b@?;nyqoIUe~-1=D(3QCxC zmo&#Br&9hhS)FY3^_=gc(K=(Ic>wp4G#a=5&fsw8Q#cN2(S>mCXOlY-nCewgfXLya z*Fcb%afii0;7)2&bLx@Kf)9G+Xy!C%25H-}9{V*2P|VDV=qeyfA-O@QlgFoc9mcfJ z^gsho$~krwWU^6ohlZJaN3BH$KRUSX?pro!&_yA;Cx;0GG^@a~36Ts~`VV^vuSJ-4 zk!%80cDHGdmP4u^|;iVO|zTk9QMF zjN@K2(o6X6R8YACzq*g9#~wt>tG^LLI!_=w!>Jtt{Cfv={l-q~_NP0KdyEHczl`o@ z4nmpiwvSV#PP$koKjr^$ehUx0X+{77e2)oVh}d30C`pj$!!JccAa#IV{o)x3<1@Ep zUao7IEuhwI$^H1qb;k@aLby(fB0Yq0D1vz?{NnWN7&|#>IZrpb9|jw{uMwb23v_e* zDFD2yfj-+Qyor-o$@y4QigDH-9&_l|XZi=dB^aM!J+oVIuH+a#ibP)LtlD-;yoWZK z+I%{1E~-A1f1`;HC;Bmp`cY8^T}m58xVW(imqHq|X8zy;VVY-HJy-tIAN5HpT| z<}C|L9a0~FWo6OfwYrl{#ig8$|BLH~c0*o%z^A;h++IQc-oE|q6SRc|wR{?79lYTm z`?|Esu5^-JYmjHV-N{+)yD#(D`_gaDRiu$bK`|Z z)A&)yo&Q&7(F+)O&H3czFys+?(}1ug(23XJvz^@izM`B_ynfISasIHBgX`57P<7Q} z(SJBA{d@lTw?3AU?f*&&V*c+8{Qo=Ep5>oRq5nmyy|x3O={tl_(<6;fyBg+N_dH}c zhh5TTSYlP_$eD2OmrU`yIsQ0QG2wprv3VU_JT+IsR8p2~4;^uuqvz6q@C`MO1L^eh zFQ3}m{?-+9YXvHSOPEK#uYv(s>Uz9knk5RUpBXVGG6WoO@B7}>%>mo<7wt=;uNuik z%wl$jW+M5(WJRXG@`)UVT8$5}jgHQy*3LY* z?U-9R+N8JcCmZtID>~h>#OvY4!Sw2_PZc}46-HZk|#j>+n|-5y3b~{+|y30#CZQ}-Wr~)(;bvDP3ar}&eHlkT@~8_(rjz!oGoLpu z+NvAMU*GJulGcEq?{CyUjzYZ_DpxwvV?Yb_3&c~gV(C?8*Cb?Cy`dGX3+K<^V~5Y9 zehwM4zU6J~#8ro{KTZEYZ5RF}0{bhxyt5qE#Ys9<%^?A}#WF)-CK(6h&XA&jO2`(R zq#lIU?tVX=%Mg2(c0U~yasBoyFKt&R9X`|N)h#w)hsvgk0q88M-ZskRY3-o175^** zsLM>XNm@I9u6gm!N_dmya!O=iHhW^;-EBsH1P~9 zdXoN&wpqe*YT0;5W}zZ~+;x1cEwwg#HiNkXJw+bmur>F|IAPuz#hGgIs+yGNB1`3i zPrPn0Pj@JUiG;s4NLs0n)T4BWkO*dgrJ+w zk`xZk4p7bfZso85xO?j!x`($)kwDDwLMnPQ*DgZ9&z|UWv}ohW3Hi`J-Olz+;)!?hT@g%dI2j9@SP~iu)n6oyghMb`a^^-UKPJZBK4U;xzl+vwj(ULn&Evim z!uCtpL`bc$7xK?xFxJ7gV5E;NzMdZO>bg~(gv9}z!c*G>LXS_Dm|qk5E`Z_yPi0It z*@IwvI-L01GY=*v~WB;!-Oq5!Xd@O+*Z0UsF=K5iMNsd)hi>B!cGb#e`7EL!PLqZC)4 zL)3*Nfnke&dP|Oqs?xQ?>qwqDDSvo8`5COAkN9#x{=&ufok9T6d(>yAg)$8MMD$gX zG}nO7&1@cTKxE7X3M0a)Dw3%xJ5kVuT~{P97htt?>Oyz23cHNGDChN?*p+4hIZu6s z1{7|9sks#Wq|y27Cg7`L*eR3ywiK)WN)Lw6@-gh%+I4D4%SO_|NGs9}z{2ycRVDZZ zgNimA9)ER^$6L!I6oe|k2KX*BKAZix;o)0)?>DA+(hH>p;X z+f1~1gXI+_0g(};F!o)zviyLTdX7xON49Rjta&IZ8?UfY69<#_Zeto{(ZE0zK#4Et)}%_6g5>hmN?=?z~t-@^4V_xWsll3#fg&OThL=aC0UR>(0!5#Ur}E9$sT$v#(_9tELWuPg z`rN?8KB$CrB(PfOh@8V~pC8NL7QEmmFa!Q9a}7rVPO_kMQ@## z9g*MLc}c+JmB?o+>3&#XGjMXl$H?WiCq5^ds`RQJnVC%>tBA_%l@&R3SH~tD-^V32 zB-nj}u46m-v=y->4ZX>HUtsNT=TfTuzNk*9IVuWND}6ib`~G}4$H-66fJLK~WZrCe zau1$-${*97ekdO^&7!PN{YF^T3~EHA6N=X#9rkkF_`-oE;^PBI5>%A-4;J9xX5Ihx zlCm)U|EWfd4F5Vj{im0d;eV9W8>yWF(!E~4 zSu90)og}Ive3Kf5cl)aH$tBuDM&&DQd}WQkIWRl%#)?*KfBcw;x#U+0qWIw8-Da|> zt244>e7;uN@!eZ^oyDV`D^F{;dDfWHXh;!3_!sA=tgP9QG^VV_OmNxVnCp9&1{f)} z7qOu}!y+ooY&P&)r_kPV;q-}6!qzzCAc#wOtL~t{|6=T%gF|bUejVGkZEMH2%^hRM zwr$(CZQFLTV<$UyZr=CY^L^)5y;b-8*Hvp)&6=93)zj16&+i*g`1%xXbp@@;Q>{Aj zP@GyX!`P-rV>;1MU%Gl}fBAdNUWa5mv=3F;_BX0z7RB#e1x}gtEUs@1p$4~rvmEQ z5XrDKUU@BxW_=}-@K4Xrj!qe%Gq z_5;f=dvHXp2^t0sX6sd#>(hB(`Rt#EQi(GNo!nR0gM7cav8GKdPgY`UG28?+jqc?* z{g}NfzC$!br3XVsjbn#OyJPXMeFN2LDG-7yXk(PJ>tyjC=G50}+CpiK@rhYJor4O< z=@vo1vR6y}rT_S9o6}_%K4Xn|Wr2c&o->EsP~hYa^rN>7xyyi=B~iwIHMh9qbQnVjMaG35aZGC)SdAAP#yeMr4>hV=o|UeyygbT<-H-H>5UEhP6VWG07lu|( zXtcQ+_zZ(}7pIGLV9WUu?6V~mi?Ud{@K4LGnkCh+zX;vXdXK?OUcbUXOn#fJkJf2CejwLH;DMXsD7>R7DJHo={AqMd96 zZI!)g#v;nOd(phNL_H`qiVl8YxRs}#Fe$=8d)Ak=8#!~@YkNKuVjev))0KLd0Xxk~ zgUn4#i>~jdqX##={TrQdoQYaop{X98laq{K3iS7_Y5(yM4rz)KyP{(w;dY8!a0UG> z0Cx2B4r3q$4@nY~MEF&S%21D;zTG{!gNm12S7$NaSv_w6VIATyxd_Sz|0B>t>JAH+xfJfCe%Rp`Ip;B_+FZ{Ok zMK{{(H1^(rroaJs&0YA1C+sguXTGJYlC6(};4Jo>lwyfO04m``UFPaqP~Hv8*GUI<bZ7R(O9!F7?cvt4 zraqva|L``V8JK;#tGnpEc1~h|n{ahP<0E>5IjR zxPkrjtaIOtwPvxwxV3K1euy@B+Yl{hRa|y5PeDS>}^cp z6ng4E;4K8(92aGwoRclE3bae-wTw4_(@s%oYlRLW8q(Oi%%dnaL!7$Dr76IRS_olS z@px@q-W!exx+9BBm{M<*+0tIYBd{8OUws5BsVCo}D-+7CRj zFI``UG@Bwa$<*%I$Wnq$JGYeUaH-RpX65bJScPNx8GrqY0EXoY(gQ}@yD3xnlM zf;$g;Z~=FL(QHvkF&*q166y#8lmI+OApD*8^b_T|Piy?Myr9L%3FJm*V~HiGya2l( zP^!PzDHQrB?N9tZa+AKmu|SkY* zc!iMPlKPkz9OeS}c#pQgtITY^5_b1JA%I1yCHeG%mh_wafKl^cnvTr35%{B1By{^b zDzhNl^rYQ8jXniXW|rXY!usoL0Za82vs$wMdW=Nfam)^hG?EdTIHo0P>a}B z5*)D;`GEMmBlRZqMwBH!<^u!4Db|hAh&_nFxfJ39fNQ-Wr~e`k4M6sVdNhF(IJB&L zy~7uTVhASCy1IKi^c`TSN&n#nQMUJT58N(n$tl&uLdVBBz$OFL9HFp_^Y^r5b6FU2 zHjI}-u*f?|BQC6$LaYhrg>ASz9{f{3e@Hlsjo{6)bjZf8&DDZO+KzqU=USCy{nK&i z-<8))OiT>_dmLi^2YwGT^MA$fNm8}4$rMHSoUXw*lp<{3xPYdSs#LbeU9oeN)y6NU zIxL46c$FUL1GTOBd`i>V?Jb)LtD{Ly^E!G++j@gaWXL_L@hQPRUQ&TLAJ(sRjud8+ z6?l=3gRr>V~W{>FJc(1o1(=)oa73dAKRQhh1_v$PX4M zIZhbK0ZF*ck+ZqKKrJUOs6nt5(?c)&<=?P>cL-GEKvs%CSD@|YGjff~7iu|bchqXC zcATR74*wcU$YAX``Qsx~OqgnXvRTf$P~10|<8TmuOT=4;{DH^Fy<$Q-#k?B(S37hP zCNmKMZ;W8$Kqx{$)~XVUP)uuvHaZrMJ=m1hp-oql~Q{G*@n3VP}cOtM8iK zD3ZitKlI8~v+cssT2!|3+pd7S(DizGO@6RgJ-$?zF1xw2Sc=zIF3T{l{d~yzS~AyK zqINlS7MNTc52##EvI2Fyh9!_%2l12JZNT5F=vdyJI)4FkGLszfoI#}EBlZRKXApu;RN?q3e^I@6IG zedR8eRe$9UmN|Lh-VIFNQLyeGQCP@(W!fbah-&^p{}=*-22Z}RjJW-7vD5Gw+AF7o z-H`oo3>Pm4LTD1&jw4$oMoL5eoHZ**W1} zs(!gNtdv0iAlpVd*;QjJ$*sd)2K9*O78G&Pt0JRux&^*us@=$sQt2J(j+4jD#m>{5 zKM_mKv;<$4S2wp8-bk1zm|dA&Fp3@CyfpIns!$S?=aIp$aVTt$7$G(1j>wXQ)fZq7 z0pQp?`kxC`usBe66~w+-#G&!FcD5_?`gyks#EEmMPU1-?HzCSWAySAiSRHr*-=>&2 z9^C&m$!~Cz|!(bH!A6#LLZU>dxuNgOj)m@niG&EGFG|{Dsa) zov*R4fd*dx;a~Ij|KqRFi;;o(KdP8n{(&#d%<^CHg=wP&p#Aw#0PoT&MEmYt)a-2 zY>9%sa~s>2AMaKsd^1Lgqqja4xE>vW%0(wrxBAH}5~}NhiGqyi%D-3b+22O#>1>YM zX#yKbziuuc4*Awx(A8X4TsvYl&8CWG4L+|A^-P9?&2H^^_II{)Kb*SXA-TR0Z)CU; z!g^+ZWgm3jMumJaN-XoFzGLbPmlkxs&W||SRhMy#CbYx*pP6pjb3*bR1(M%W zioM4TC`jT5&9pF3akMBPJ%Xek@vJiGBb|fn!`VANnzxrOId-!YgCL^S?kS*wqlE5B zvI3klwfiAeIev2(#gV9pQ*yR_!!K{?>k@&I$;5Vy2WQA)l5)(b>FAM5tZQvwQdW%WFIGqmWUwl; zR#whoLIpR9P%NP|OP8p}mK+#1>9QLxG$F*?L;n`28bu@w&t<8p zSR&3s;6SyX-53+#pU^+rdw=PZr<3)!v?)mmaJw==aRcl=yQ6W1RU@1j>cKFPXZPg!8 zm~)vNLS=2#3Uv?<*hE0kxzxzNXOA7ZI}HEyiwGjbbh}Wk@usENl)4g2&iW~h15OS9 z@)jA=23oMR_F$2*%p}~KWhkyt%qJ+%^G=A4W!h@43-X(WzC@8^Ya&7IU=5-q{W^^e zla4F`MCh}6$*5QF4j z7?7_acdAP!-zTd7bg>rx4I0Zm4C4wD*e%MxtHpnr32M|K?+AJs#$WBr>clnv({PrO z6Rei-bTt~a33je2;Kr-VqTK2ZzdlG8>(@*5I{c}!piloVh*(6rQJ@;*Mgp)cY05rS z4*TfoHJTg5#`y+*^J^rw3=sYYUKB^|Fo{)Od}2EcY^JEHgyo-R!POR(xI!)` zY9L>B>(A!vn~rtfg~cc)2+7Knr1=TfGm^K=-{WRInSYz9`$hf1A>@%y6P)_)3df`;xiG(G3}ddmBcM+?5$ zihNPD5H6&3o%|rgE~=ZCUW}ZRO!6#@9dAgUw8%&HvUjiX82!L+?rRYv#$llTieJ%7; zwt4p@GG+)gdmY~eb0K!WTBX45S}5c{&=p3bs(^?PfriUBG*UAwUP2x?vAsFOmKoOa zy-3Rxjo7e>2cY60OPn@96L7c5^@k!vDyN|vdcSOaMqdk z7Y);RV0G@W^lKUEXD=nV4N^sbdW?|ysYD)%P5yK^3236U0O2PSM|O@_Ymn&3UugxhS&<>9E!N3&MDx1ZWVEd~ z-yq!^Zkl(Xd>9)*kRvFr>>9@CvRb{s8U1zqac?X^0|@-dn;{VD6&<@<`&zWkoG>@E zam8CcZf_4(zsK_H7894@MQHnuTX}`Gi}uK;|30Be->*35r({0C14}!wm3!#Eog;dQ z8zv@$SrIbV*V*k7t^O-2Ss~^nGO#2eWm}oq2bHlzkHC!${3VqvxuQ_(PpkNkxE)p6 zBm`Ay37wB_?^3vpKg=FzX{Lk?uIpTcydYRVZy+d+X`xP@8$hJ++wF)Xss9*LxBY~6 zZs_!U;^EkTiaIg1FTq9yJrHS^MJ4~_0u(mDsekx*u{NyAPN#BG03(NTWva1p9~2? z8s<`)=7|{rkLIGCFB*^ZKEL>no3pA8%%dE_a6(B>I8pM?6>%44+`?3f)0feEtW#?f zASimJ`MbDN*7>bTEON4eg}bpXHSsu!IEc8;sTt%2H3{T|268AKF)~ubv6T~Ka``Lq zykkQsU1GV&XL(M=lb6Y9`tLFJ-(zwZy(HR&vfkk<@1r^X;q3Xp;$N&B{|hoW+T6w1ywYYY(jb_Syt=5pLnP+us;l-#xn3j z(<{w~Gdg;GJlBz{5pL#N_D1#+exQPE>etGbu64o$d~oGPV1m;gV>+~G0SGt6MF1rw_t}bf)a{`;zNz zy)Vgaovq0o;2-<(5^45iZjUoV@L}URwpMkL^Dg+--qUDb{;*aM=-b0I^QQgk7H!9` zv`*1fCy3JW#`7Xa!kTpKQ`Os5_!1u9@JTqGSzNC}-I&QTq-lP{62*Gm1)^_KfslZm zRtf_pi8*_RG{qTCr>B`j3nh5gVYp*JUb*Gi))m6zHmA3?Mf+I7NE%SgFPp?Vb< zu0Sb)Od6$75MnJOrPm~a|5VhOxT1DTcDmDcs1R~JzW>1p^5^K@w} z7NeQ22szDOwBvpBJ9geUEmOgK#nK!kp6O+`w(6Hg{0!!ZTU=2bnq>K*T$4EN!2nFVK&1r-rB6J|NSDsattVk!l-!rh+mS?UMUD6DP!=MqBf_%DoWZ z3@gkC5KuzThkOPh#Mc0u@JFQ|W^bw9lL*1CRP&eee}sI4A!NbbQP0&Z?v+b-B)Z_v z#6-y1Mk{jnmF%>ZRGyy8JT_AfmVVtbKD>H%bji)npjzBS5Y&80KZAzpogGkL_pE!_ z`66QSHQ2;E_9m9#yb5c}y^Cxmh2)pe;io)QQyvm*;D%RY;hyrvL^^3@)jTzc)k4<` z6~b9PKc{{`-WN0rJ7zi=qE1QWSf7_Jb84HpJln%W%`EWtFt$nl;3Pwbk&cAXR-Z{I zFfjNm5Hxkl@vhNXjpJFKfb^)j>DEXB_rwwtvCdZ2o-sELw-3D}5Xyc{v!&ShsMdIC z&idM~vGHQ=dI{Qm$I&b=B1F)p-t#2DKom7#f^~o_P?mD+Yruc ztBA%4H-San%sZ`;P(!|2bjgN?j4@80VhLs@({oo@IiO13E}vv*WNaXX@(CN5th8@c z%tSwH0LK}z0(g6p(XpZiA;^F%N@C~B>vXcIvbd5g1m$jH8sG3xvWDXOKyd&waSr)b zvvPJTeZ(ar#96@F2b$wYRiAKe-*Aie3fnVl-?n>mIuc4S7F6m>lsJM+z&jFoOaQPVoE6nSKsjB9AOQWTdl87!PDEPVz|h-Ba=`s4$6`v^Qav zxllk{ZUpWoZdPfYyK*cSb1D^{F<=F-nm98fm;2`ahU_JXMgJ?ib{?~`Q}wPkfH*Z> z0Di!S%LRh(&F9&Ts4^a8MN<}pj*#}U_Y=q4d)u9!M%6?HW?eV%f%n3!Ra5W>)UA;J zt)j5j6|nEmBi|}`e&48`{j<>kFLrpq)VHuF0KQtELo=3v-+O2!LWr1so_?a82+sb% z+t4}G3oEG*N0AX`JNuKcG-7y^!B2k9H|So&2+RRn7&L$}(8_WQ_|Xp4lW}5Z2)J`z z_wLEWF@>sNW+>3=jeO`1Odw19oNB~4f3^!8jH7w_tI+1W3(bGjPWE)0q3Dvv_9>Xr z3C+D1orLFHb=29)!k7H{#K0LUFn2^zDIinN#JPe=`{L2&7gE;X4F^*XflGqMwxy zR=)`E3gOYcgSxAzXvNA8|?!xXBGXl-`yk7zBq&4J-#ZS5S% zuV=W6b11nxp`PPttu9j+y3S7=*57&ihuss(vZx~yd73-;Okcvonpy_)XXL-SqaR;c zeKc5BZ+@@em`0!lsf4VvQ@07W=)HME5@AN*d={+d=X%e_c zwknN}vmvp`B}Q9xD!nx}i$YVEC!SPz{<`A=s9R5~X#zC!MfFVlQ`) z8C8+^f}*Mgstq;`jYVCDb4mxzK%)2Q3XP~9ma78LFnPT6XEXs|Znhjy4Y5<3{) z?d4JptwhwQs%jxw37W`32@8cwndQ>XMoBY z{4hLX&Y9}+!uA09=4SPEqN$4>I1wHg(x-6&;`Xvjq^)Wzz`P|HMHY>DqoFee3gEpl zTLaO?=zYR$v&iGtP0NXXG+5!pBZ;KeftPV#cfDl^52zL6?3C)_LIkKCE}sRjGY`3- zV2dY}^0__kUbmF*Y~Z;}y%(bQ{`iI+0qzH#hQPc4wZ!eF#EmM@Wor3#c%vj+PK`At zdjV1)fJFsO&;h6M$qzktYOTEMZn1k%$?E#z?w$&IAybgrYBPXUx?ass&=)@P=rfa- z7czP^jn{m1@#Kl|<%ekBW1r83Vi^scJ*my~jJgQ~+KG*PN<`dB!ba(I5Z?sX;Q~r^ zw*`*Ww-<{{T2B?(45c^u7L{f7dpU)us*Dmr1&gJWMP-Obyj|X0J%3r>eJ%S?dXvgq2bm zeMmECjVjJ}MQu;HTs!6k_c!X)N+kTMFJ#GECWL4i8kU>w7-4y+twiPlza$w&f1pa*K0GUx|124RUA zf%%9ql0+pvTR$wpi;4yqnEfwdVi3PWn;`kcOUV3Saizg@!14y02E7l;-b=IA6XXlB5S(7(RW z;ZR};&vtwVX-B;+QS^}8@ZNLB*i;<{bp>3`s;Nep4j8%%a27he3j6u|F%mR^$6nic zJ@}R}?9pf7a+QT%v}3t-({|RCyAGqv@m6x337iQT9iy9_;}2W<6R4sD$jc4f4!5R( zw%iKNYMQ4ZYB~2=rdbodolhr|mcKwz8IQ}M=1;zZu8f3KZ zv)jb*a@d`1?3^#Sj9l;Z2P?<2oB56yZ!G792(vKB8fPeyVg{3oD)bw51PI7CDozid z5pJKH99%=`$l1{R1EwIMG$0*r_Rf%8PS*5t|;ZG5I&=Jx%pbdN3( zn??DB2l4E9!I_OGpj7EbK={NnvOsJW&I+Hav%sqwe<-k7mTMKx)ee4X>_lL- z=eK{#h6ppyH*_7R8HpnXf6O*?gBiaTql3P1nj?A}W%M&qvexhOIuf&lhf(lC5!3z2fl7O@bq!^H@` zqJtQ>qzHT#1^Oy9__{oLVIJ5ld@0G}*i{OiQKqi_!Y`aqBpa`xC1fd}5r;F{TmH)9 znMW}iy>H=Z!VBI54)@ANL9V0qADr6%3ShCZ{zvNhe-vf@vl5T}FX@Z_Z&Vs3uOl_U zfZ{b%(`wUPJ4B+RRYE~AnFq7D2HqEDWL~-CJ;~zmeBEVE!kBF2F-=!8Uvfg}A4nB_lr0GZ+734JT-Iun>ziZ#t-1pS+94f#(vPJC*8 zAf$MSe{t;60WU`u?EpnykDj5-P^PRk8p2T6kKy4Hj}(qszy zivFWNb3O=98|Hpks9Ai!dSPj>5RUbRIYrZQW5bK#5?Yb_0e70bhKgA9^#!fCe9|xC zDRA|w>|br1P*2=W&m}?D%33zuurn0a{YokiP#+Eu*2B&Cd;9^7lMV$PSLd4^t}Els zCaBVcHZDMjV-D{Y z^D8GcbX?MX!l(6P1U+BtMX_G!g^2)<>L}Bl<};CzPFJh0Ix*96)MO(%FS4fn6ME`9 zthWssA3ccF<@WY z<$0H`=dDqNRz?(w!-&f}w99%oU_t8D+LX|jj-Q|CXh&9~=hm1|=l-=X^fF#42eA?$ zV+zHyOs$rrp!c*Qi!NST^lJ0D)T5q1rzBT@mv)tN$5dB0D-gj?lDncN$CuX@NX!?&o@6=m2z z@Ep=Qij@O@KoD=HJlaug1IKPhbSZCRGjE3A=7Fn58M<@vsWUmTtPo6PWFC*K4y%us zIexhGM_moKtdcYlSpsttlKLFsMV4T9V?xRx3Qz>`FSMa%|P-+=)0IysJf_=q&2 zCE6lz+1>OEcMMjD7kL|N_{-|9Hhl8)&Qn9JzOuj=FCND!pYjTwDY0R<_D4qtY~rT1 z-b){@n1v;rpVhT&fnf+xoFnHkAV;Xew0+K!ASn%#kK%w!y_-3xO$jKPFjb_TSHj$W z%c0~6PbI{lzyp$}`5>d%K%rpFm?@b7@aBTvUR;*bZ0M>bTOt4^mW91Jx1XQ2e%raq zrie^$a<|W60e8q*V%WUnV)e8#ii1%2DKYRQ2m!h=L>=xNP9eN_eSH~3*}dv1ddNMo zSGv(Z`ysL%94ngBw3>xJ52&0)OXST&Cz?i9nCloGeoqJc+!4P_w4|_=|}F zlsB+c<*s5!>y~FePclBt*_A`udE!_*3t=XW?hnOp#7nR&hmhR3+i-Uxs?(%mz($5Di|L~RRo0!qw3+s6xIHS-!$;>mEc3r^p{>3Kr<+f?NR-Z(& zSulwMCL?1CB3&=na zlcNU-L?Nt@J7-XYzA$fY1%tZI?1<;eUL5<<#Nlk7Zaoc=qk{69A&}#8w1Fc2Xi{t5 zzF)?-FBaY%3?>Wwoe8K|99l8kNG9$Z8I3~fSu}_rx7U0XBDb|wBGa)!xYQIP9A4YP zkHRw&PN8g?hD`0By-G$@F4E_gMKy>D#pe5t*&mV3Huyq3t3(@jMwnDujd{$OVq+cm zhi!C+LNpyVO;}-VP&rTnZYhbo!j$q8vC7sAg~+XQ4d3OVn^)N1*9hRITEN-cQqWkM zPgt88)^Z9{cxEf$zVexMMs|K~%)Y=GqCUm1&Yak*yVuzKAT*+?rzu#DN0keLF3zb~ z7!=Bo_TlUr#SnX??}`l93I*&8IfU>6Fo%r7NH!`)>n_?o22yY5)OhU^+4lIojOL0G zf;~k*bfnro;2MRTW? zy)j9LHRGy<>bRu;_=ghP+IQx5#~|zsJ85=6m>aeQN6HWQI#TKBX;;&4PwhB}6z+e< zvBC&(s|r8M_kuZauA{*Wp(0v=lGNCYkS0fZNpk}4=$=XJJhQ4&HsaccC;qt-`|+#W zRlv|Mc4+9=G}WK8cxxB@yPfp?vzEtIWMLA10rYek4-VVLAv&%H6`su{oOU*{4zu9E z{F;+Iz`7XfDMg6B&RSjn7C`l!9&ahMdODMt0q08b!!OO2K)p;lug_1L^H$71&^ll0 zzD}m!z$eb+a<4*j=}qFT>yvJghTqFAA*I3d$aIx^iV)1_Y6(HvW6rtlR+i8ugqQXq)3k;4Pw4NOE}pDW$4i8@{rCIvbkz!z99!ZM=>Jr z{g_lqKY5Pdh#|!hg{3o7doqXi2ZhKB%@I#2dz82i_k#sDm{PLW8*J^DJjsr`@uwk_Se;u*KrD7jIt=o^*Z%7)tCgHIJVp&iWfC=R)~%Ar4yI}CKS;9eA1ag z*E2OA)Q>bu$_dLJh9bDSt_Z6qRVo)Rav*bTV2-On{z+{5bh@2_&BjSlT*rN^(g~OIGB4dCc~- zu$NLT!Is#W1zqRSgHR2#pU51=as!VI9Yxt5IE6q}=zPZRY+dn(gI>p>I1Z|B_-fAG zZahtt0tdG}ppY_o`fztz=M4O7(&~ylO1J$;o4CUGVpx%3o8$2IPM|;}%so2Vf7EE! zQw4VEZGi#scJn8E%UGo5W%+Q4k6(=5TZ|0el=Su146ai(wB=!BNq#>8;T% zimKzH$sT%JkRBLUSLWQ((68EvwZwQV9d|mog^2g@JZCn~nYerYiKk3>)-U*o;u0>q zZZoiMV+pEhNq5dZJn#3BtraP4nMVFIb8FcxBy?W)oO0%JlOt?2saduw^y@ykYr~lU zVGt|Pkcgj`Cq{^!85_&l0SBPJ@B#um!ord;N;-RC?|m3SfV#dGwov}ukZnJ_{Jg)@ zV`X4D{ikT--z{9IA^sh{DV;!@IC6Z@X z7cXqOPhj3g!pMS{(S5|0I$4SV!yG?pLsZe=TXifb3EpH96SEzbF>PkThiyl zkO}PD*d&c4`g3~yi+AQQ&tU|ihzz* znP_tf8Zz*dpN^KoDJYu(XxfhwLtdOX0=KD{RO|II%QYQfF1$!#*)Xrk%n zwS)ffZ}wp<$D$C3O8Ztma98uUfU;D@c{enzlgp>wX1YVjO_`xhM~p5EHdTUm5%L=x z3h|&i65VlJ)b$R$lwqSKLrX*O`Xn3)Cn@cQHShd>x5Gsi(w3-3AuFJ74NK+YXXyku z2@{qp+U( z9@1-FXL@_4NXrf3&g9os1`1odQ8+T(G*vAQqB@VGuY>U^XF&_s!91?x`O1yo6Z5TNv zB-u*d98{T|lL`lg+}#2mmkk}^J29pr#*z4DWgr|~LNemxO8T%8XJQXwjx>`NWnjej zbFTm~qDkd})54a`4vwdSubNI&QuI?OAf#ibxd~D6Nv5Kb$wr?0J704+E7#_(%Upg<`oJT<2&pQT%on?up%8E=1Qdo%KGzCqXd9Kkt891hx05kB7?rw;YJJ~|5p zb)t1SHdsmxHQtoC-4Xae>37CaXq224^RPAY`K{<33=$)l!pNtFEC038I&Fj}eZZ@F zTSg~2)mvxjt%4-l2v4s_;Oiys8@b{HBvT4|=;Nfvvl(rDTGGQ{ z&v8MpD&yVXp62C~UVutTgPP!J*efufNsdT76EcQ!P9TC z=m-IE-p=ob364#v?=W9w1>qFLv}?~zd1Qn`Mjs!-amQhy$THqs9u~a%WO1S5!nRgs zMBHCEEIHzYjv=j1a$Mk3}$o5_Jvlq*K5$?7A*C#aD+aT6l1E1o6 zkU-gi~P&Vkz;MAE(>jMjc>(w8Zy#q~@5uDvx=H#klzGOf7iv5_z$CV29V$1i5tAW2j9OQnz)0k0MCC9Kk3Ec`5r#? zJMSGiybAH~AI=7U`}@DE?>X7o|F_MF^Pj*!od4BbbCsHw%?2CFH~5F(m8r~EeVdeR zRVcmHimm0;(gs%^K8T1pT2;%Qw8;AN1J0?*aDuX#6k_sb|0xUF4eqoi^k;bJhZXOB z)13iQuJLdAM#qcD{K#DSS%hDS*vHEX@%aRaFk!L5p-`$ad?7Ni~j6aw=oGheJD8s^tU_jG<157PXlRtT~{AukElswe!!HfA6wwbOeHcWk>B+u+f zv_1S_eH%hlRHK_gi+(e)f9T8jfMrwmrD$M#$9hT|rXpFSdjm1@PdWw<)JKGHNvByb z3qmUny)#lG)6i6&Z>m@vw+#bb06dYObgN*#69lUMbtKA84UDD{8s0H!2=oh9)*4!Q z8#A%6Xv~I3wDu^^wqP|kpGhP4qFEEsv`xU_DW)aGuyO3RKGmbuE-%Jt1Uy{79h&q+ z2$P)MEs>9(20MXH8jJi$ZzLaoq`rJm0C5Z5#IM7Ws^>YCn(b~y zK>4iYMQa6FTT$5c^4!tn+gP@31V8V(MrUAU09CXqb%*~FwY$)e5Z3YBEAz&^XP~d~ zElKd82JU@57mHLvK?)zSeQx1R9?3GX>tY9kl&0CfHk5xdA7ed*22jac%F!|=$e-~>}rf5P(%XIMv36+k%YM{-7~%*01?(vPINAdh+FuKi@0-64&t-h zG9-W9lj+(tt_=0N%nOXf_5er2216JJ#lEManZ=Ka?dz*@eP^xx2 zsN9M5T*t`Kj`Vr(bOn(A^+2_?nX-%nTMMxj7KY|D5U!^24qELa(AGQoK&?^1=xj10 zV0^#547#uV@B7^*h!C+3FS@i~FTT}i%}R;lE#0ZXYocBb3IE+z z>jc6fJYzGq^y%H+XF>d_xk)9g5UyCdMq`RYs!N9!hGsukl-IQ4ytl4Q4}xh5Bl?T| zoiZam0zQmNL$CJenC`=Dii2QaN`1dZKd&2tSOC1^n~QfOTK%3vG92*rF3k;Qfa}&b z7D_@kZ0Hq#Lym|PuWQ!>gRIVomg{N0)x*Lw6dTcN`s$rNki>}L^!|#ftBas6J^xwB zWy+*k*<9cf%=;nmR_J;6q$b96&K`jTQX~mV4$T!qDKYA|Cc*rw0lU)Kjy@Ho5U@Oe zz!0>$ec!;&BX|L&5XO^BSj8xhc?1?G5I-B>Y1ie7oY{$C`4_`!zZE)l;<+%w z3ZRB*gwcsCwUXinX~rw_7>s!7!~Uj4##6&J7}3#(?Nc&~_yU;9)~oynKlHb6`BxVh z`+uawIRD*+`yVkX%iroA|KFUalj5~p00Y9ucF$h722!xq+E2dxG3g_w2H`AE2E+!2 zpP_K8lE-^K*G&vjCIy5po#!4;?#AGgzkBa347Fn?g5Wh|IE;je@z7yjb+%o=2$bqY zZNqIuoddDS8VTuk$@rTQuppNU6%KYEaE=%OKlwR$K|tN|_Q(3|c|!hVi(T6sCzz&2 zo60!||JXFHmg02qI%jPq-rDX}hei@CiC7Cj?KFg65&A!jy<>1LUAHwHXUDc}+u5;g z+qP}n$&PK?wr!g`)|dM^??Kh~RGss0RbSm*z2>^A*X%LJ97DEUw1i4)f6X1h~76fvm2#kr}fv$9)I=VYWwJQ+6@C>OajTpS~EfEQ=F30$>=1?z6=NxrDk`Yo*lT_+%g+FJP6mef>g4U0#HPL==REK zn=)C+)O3{w#c`mCB11=i>Rv&8u1S5RjTT4Oe+bv_#(-54bL0Ci3Dn}pR-{>S)X$U? zYX)5IGjugOGEEafjWOR}7Z(?9-`6X}aahAFq{sOihyxz;xX)On&5ndT!W-yRPiS4XyZ)i$e9+Bg$am$fyRAtWwn zE_sxh-Y7IARS}Jpf6Rf0BUciKX5@9jqTA%s$6&rcACw{{k*6Qzq`i+F=y1L}Vd1K9 zBm9VY)=flSv!;?jcnFZXhP>0Jk=-;eUVq%xNED5RDPS$q4ha=i?)?v>&VXReeSUaW zye%BIxM5NJ9xuFAkaVveEs&vp-!6qK1Q$7~d0N`sN*5uO7u=5P4vbo+W6WdPsT1$S z_}n*YN9oTdM#|zk#d(3i&g@C}ViGX@$JBJH6_kt4&|t@ z9|uYvt8zJbL>Samr)`^7^Fmy}v9Ke>GLEKDIx2ZZG!ESqnMdAckCp|mJ}c!28Eh1r z!YXb**)0n2ZqwmXyUxvZLI?6;Z95c^cS{vy(y_xs83~2Z90^k4?yq1sJr;-g+k3lT z#>!;CZOpOc^V6So;Rpq4Rm;k1teG{ddjwZ*?i)drQ(*!|)u3%g;c(JkA%>i-d-l|F z6^9}zdPmqjR*Fb0@@ja?6~|u~thr%vD?;fmSVxGfkZ82Vaip+Zne`cz#EKTdnAV(N zIc)mwJsY-9uDTslVmjHw?etmY##k8^pRTX=NFJ$~?-stD1^W$@4Q(>PJvzk!y?qTS zGbjsq6wx{Uq$?kK;=8(|lM1V(aO7TS2DE&P5 z1dzL>&*10k^M5K>2^)X^HsmbJOk=t4qwL;*;{dJyLuv6#=03D`yxW?yAy0GHj`QZ- zB&96xm3!yr%hPqxU-QP*$~RZ{5w1Dg+~4r3b066aeJNn+dDqD9NlpolMX+=AJ_xY6 z$GVQPmhTmhu12SUmd{tF;i)iC&vo_BdP0fS(g-k1daZ%?;7XoJ%X>N7O0YQR05^x| zGfYO@byk1TKC?xoD9qtFUh;n6{fB;-L%6^@H|thq-b8N0GmM>1W)v1Yz9U$EOmz2T)5*BQI9UqLn7$=_c>Wc z9i%jvfE8NB*spdz7JWvh_2~I%;z%H=14%y`VC_J+P=a_$6F=p$$-)sDokIqTt98Tc zva8)=ep%PkU&xAD<iyB`@h49F;-z2hn)&jE()*PDM+Y_y+xZK_ zP_Urj0|N>xhrBfiS!IM(!?$!lN-xKc7{GTLcS zo_qQEPuxWf6PhM(0;y=6dQg^xh!08-hLlbvu z&NaO4jw4kjs><*bR4)t&4~&;>63WqCKvUhu5vD2I3%ldlW| zBMQ(7!=-pk%C*+fN&}*Uol_;agan2WTiE=&ts}5MUnLcTt#gSi&#JCoMn=~T%0Kgt zox0LKkajBi86!`CH<}NyWvovNmg_?yt{FyrxH>F(cbGN#JMF>PFg&kURT?fesWXI8f1r5uKi3|Ne zB;uGn_{`UecCgnV^0qtz2M9AIa%99qezR`Ge~~jvvZ(gnKd?T`8@#|QB!R{L_yYJS zVUpn|g#>J&h9CSs#SWUEU3V74h7&l+ZO-8g8YaqPlGBu}YO&`A*~eZC!A|6@w&xD| z09k~HW;A;{gne`Zx*--dXBG_c>?^UOD*eo5i~-Lf%as|8hJRK&rC5Ym^B2U94a)g> zOx&`CSQ?&S4Fcsu9>kHrS%^|3OnbT5vur<30+vF?7*PS)JQ=YUz`Q%LQwnC$l`p)U zzpsq{F8TP+RxU<*w*MA3W@h*|1aW4D|5NSb2j6ha6hZd+$EuouY5mfB&FyV>HR3>} zdr^Uo$(}3_aDo|;-0$FR=b0MKpBiDpo-9$n>8IhS&F%^N0|h|}q3%1wwAE=_$DElC zJK{KIOFjwV5bE48@P4%|cnax-&$XMg(IEdAfp+d4qZXrqt3k6w<^LH~WBnLa(`3tD z@4bv4Kq65ld*10YenDkp=g5%Na^+{)T`TlQKR;ihiHa$%i-6#_ocUx}ILlPJZpu`=1G4)53k_U}Jas9$^;7^a281fgB+HyUi8&-9r zR_YMbMelkzu&!e*)efM++9>4$4dDm08HXwMZY|I%;M=mz{WL(YX0CVG^|0maYSfny zDt}I)QDV*0z$a$r$`6P@D%oWP#Ilxt-<0R4k8pTAGZBK5w~CJ&II800nt87DJXI>o zH9CVhJi-O_520E7S+ZA3nmc(HW|i#^eBy@}cGp5~ezbDkq{+pQzk(Z4 zAKEwxudXRb4mpl5PJwwWI&OXcTKaNNKuy3}t zTEAm0))QyaYp=?_idr4;+C`ATDB8n4ttn%2I=02JM`W*?xB9i4DU|cOb~@VoH>lYC zqLxBl$-T@ZtP_I~N-BFU{QWzil|cIFmx9=ktXIq|z_ZE}uUAg=DHmBWB`~QCZ3jVv z$E3I5#5==wQRx2|2=>8E>ElA~@mB95D`pvtZ^AvBxB5_QvZ+<9!=aA?xaERoCwA;` zh=!BEF#nQ>6v# z>Wxb7n5MNANbE#NXRTq`9lX3)aAyY)gHL@DXG&TMLl{+{G&zjmE@q}Eb%f#;L3gt` zea4Wp)Vg}Wh6F8oz)>v?mC=%;BMOzJqTd$=O*)+GeDGEn7&e=*R_Sb}CaYTnolhRy z!&g;73b0nj%v7n1a5%#4$PTljld^>T@$3xiFba-v1Ng_AI41=upIo^tqeO<@=+Rrf4meAO+~`qSt&j-5Qm4H9rb2lNP|&BNL}~Ud ztM!%)?#fkKbu5~!?C^;wnrUkD zcv7A82YE%PhQ4UUQ`O-l@Mvm4JAKqVbny~VR9_>nv2~Q`v@QK=m{0Z>{9J#V z_kq~oUAs#vCssF$bGa)hey<%um#Xj?%da0mLT`8!wQTuc-~8BLv{vyJTk#>eWkmST zGzwK*{~#8HvxU*k8qW@l0LsKBBx2e5CR+(EKUl-7Nwm@hC&DZN_+3hwaOmpeTNg|p zjrG!aVC@f|_iMwZ?jg2IARRytL%TY~wZ1W~sBN zAKl||4D@g5hFy_ru7KUb9cmYT=?1g7e;yy-3^n5HKPF{y?S0_ZbZvkcka6ih$SJ(k zKCum3N+Q2b;PQF6ebb9Y%3d#0{&?KA11Ouf^bM})JnQvuHkp5I9RC4cF#Wf|6!X7R z&u9L>spl6dTH9vQ!+%}t+V7Z<-dX{NR9Y0tjOWY5Hy3%ODV2u-8C!K0@~d3!+*pZ~ zHaE{}P&=J?KJxf@foDPNdPp-?jde%^2+M*X3uz|BVGGCxSpjOx*o5DMg5=TlK?(or zPaOV04OD$WJN&^I5lG{gZwdO#6)Ys3B!^{yl4e@>5d(sa0EJlE@=qqBk0^(OYfevM zFOJyMvVZ7QbLYQOJ7`fh50;((hP!?BV{?rE(zd4UR-1#n+@s{KxZZP{H>Ly-1yh5` zJZ<&&#Tgm1@jgw%c zp8DLCCMY%dq?!Y3jkb_R%62pxNMrz2|J044v0GO}HA{_=P>*oyWbLrp;Zi|A?~Hw57+B+jg;QmVP;>e=$DmX^v0c2A1P?G-pEkGA&U=WRfETq~Y1_0*>-W4K1_f z?1N?euH7oFwncwXy&xji79+l<^$XzbU2O8-{F(kshnJb-zsdj1jQ@rk&ipTJ-v1RY z$^PMnZ~Q;927hW;_Pg!1ws$-DNA#V-kE8AV&d|W2Egnt>pA<;PpV=6c1g4r`I^d0!L@q0xgYVD7mhiA7 z>Th-K+Ehn5NpY@+4)J~RG!~K;Ek-n>v(*p%dr5ouNBf^f@Zh?k_nRH<&&g`Koz2dH zYbo+-C4yGeh40B7nMMftrdJ0AEnlw(ea>$b#!5qh_$YM`KE+NYN;l3Ys4$WjF>?vy z$XDju1TM?S2{^0a?dcNUB*2fzi86l^owxmrA;ocV=@K254Hv%PAuV=I=1l3X*mmN! zgu`(;N|?;!8`1|fc>{`Krcl21v;EJLvfZL5R%CpbBIn<$`w#7339oUnAb0Y`i;V27 zi9ld>@z8z=zmrouPfG|7pnj8zQ)BD+_Esy9ScOTDY45?Pg5gGNb*J}3 z>45ywT@D=#*jCzTYzEuJ#ztwymzNHW4`eVFo!k+)-!_1tZc+5*>`DT*xYN0^9awWj3$VR(#e=X+`_H zRB*mU^=Es*^gTL}=7oj$uE2Fjf6CcvmQwD8<15cqp8_0G8qQ1=Fo}$9ce+i6Tm2*& z*iQCpJGK>5dxTxC0xsN%vjZzv22HljQ+IL9dn!4?!jx`9$f3;^7i)q|YE>OF7#l5g^yt)vF%Op_6y{RLTN(&plx*i?dE8&a`mucJL)3gM=!%3*X`pQA9V#u*~4BX zLndK9Xijk4fUn7HH{ZTKtR>n_fS?#6VMf<}&QD>^1;&zaj&LprRvAf59=1K8kzRu2 z+QrlOevm&y$9OLfc+kpP^ouo9DtbH*x+gasMASPtiJ2AkBwPrx+`pn42}Rk27KPiL z*AJ9>O7HHOSQ^;cw&%J$EFxaXd7g&fh>|4&SM0?d=OTTTBCSCvpvqUbFd%#bgeuY` z9ZsFbGyRuaGaQru!fY}2WSBV~O|T);=tbc$XT_mkM5Kl4l*i1Ljh$2=@M}bE;xhNk zeyzq%6T)9+^N7XR=3Qs|%|4=6Wkj3->^8MK=|gdaO>qEIjSDk6^O%{*?QqL0#AT=7c?EEmfH~S9hD-L3dibQ`&A_foT07ea z`X6?V9PuQ2MKp6<=E{VAT;gekAkjW6{sA@HeN}XQ8xO6dC2Z($rlxl&lidwzF6w zC{o;z_-p{+FcBtbYPMN_>nTXSBs-geR1~wL$LX9n3y;chB-!`}@`R{25R=|t9E~#k z)A6NPaAy_$`CE3Ks+KbzxHg@lBcqwuP2rYkegI~RFaTlVQN!-O%n@ATRfyfF{ne{; zN?1kqiYD1Wq(QK4n4rQgPKHW6w|f00f-3XV4+UG+z1CQL_pH=~3srZij^q2=@GZ)k#@M?d@ zfA3aUtl&OBUa}-*c~_cOGk|r~1oApL2JSr@$nBD1qR%{wAQ6-#J$Id;tklu4*=JiE zll>?bp!#!6(E*18B^-%!>0p=IquykAW@IGI-gVEbr+R@PLX~}fn9Dd|5!W(+`{C|} zinx%YTkZIowNng0CW42($9&72xnm`U|H65EEex+hc^TX zBgRwVwPf)2AZ7$29k)NU+oh>}sB6pF$=S|1hs*WRc>Ba-Zg*7viJG^+kSrwB#>?1S zA~XgqBO-E%gQ7#!jaTs6O%F|YDPMc0jp%BN+2xYtZ2{65ZwY`D#10#)llErpr@JYV znT%7*1?NU$3)z{3r64*jzeOu=e7~@-u2HCVS1)s1ckQop$yQjJb~VCe9~Nyo|M zz%{%J+KL==QD4ad`@(ATT!bLv?bwqU?upz=E54Qn1YWILW(<)6y=WJFC-W2|G9rwE zHEvl}CsQ}(_;2@zDZMYgJsTaus*5W`+-Z$o*nz8X#F^*W`rkn<(i18uMP%?u@fkqJ zXPyF6ys`x?a%^Pz3n#+vw3#@|n(JmWYxyZen$oj?izcaj-B}VD5Jgn9YqR@v0x-#< zGD#J$hj@uQq_kot(Yu%W0rKG`kEB)6VV0Z;sTE^At52D_a=}Z~Q9Zd5Ft@Py!`T|e zbfr78_78H*)|EH0rv|M(;C}K`h0jO3yQ5%>3B0}cmuf)LV@-S&Q5(_?FLavK74P1U z^s6E0-s!m<>Q4tk`WdFfSb$6@dbpM)da~Pa9%>_>ONYm6%&v6%Ev8m?jgR#4fQti` zpuxnR?^8rH!3}8o}`0VxZIH8H9aERy2Zhs9qQj;LU}#Ms!_{dtwL)fnm|X zap&A3n^@_2ZzOpt4|s$3+n70!SMSZKL}sIPT=QO*<1-7b{&MIAr27>H*)0MtXXGb8 zS79u-PvAg~I-U({U@c-;%?9m`MB<=`2P@@AH zZKZ0PY(77eMUOU}&%!KTaAA&e75xg(&oPzCtFbjgw;@9~Vrg#>GsElYcV?xkAb=B> z$!pe&l-HGm(L8ErDa(jaM~f{|CB>B_=J0Qim>h`~*K!}BAd73%VWLu!0s_}n$2Hi^ zb~5)(d|u#udroII{64l`Nt8I7p2vvx2iz9s&euy+sq+~PY3(_CI^eYUE0uv1J>PsK z4$+l^X8*(9Vx6PIrP!_6DfzSDVFi529)iI19rr{!6Vy5*K8a)IQE9!ug4j+Y4QMgG z5GCQ$*NK32@rTYI#%x2_Z`R}4P zGt<8VCz<|F;AEHDf93i_yBhe8fBL#95(ufNBz59t+Qwzt%n?JCVSf|9|WpPP0 z7z`@+g)~ec5;u8#0O@r5zAMJ?kdB!VzZ={L`DXa3PF{?j=*!a4=O~LZ91Iw9Fd02F zIwPlPZw&Jk$CF~NecIZ*B&(;ZOW1Ci^#dRg7%1I8-Y-|emC~8qo3n&epI2%Q)_na0 zvHIB^h?}_g)XQm%U)H$*9+XDH{qf9=oVquB)Nvx*o3^dTY-0I}7PL3U3U6EO2ODFgRw}N%1XJAG$d~z!Lopu=yQ=Q@367bkf|BRF;uGiP zV>}vmP?Sedib=+1K_pst`Eg4L&Nb}TboAFTuK*HCCgt`5xiPEY|5kQWX#yiwTO?Gx z85{`N6DbVm>%wk;65=Go8$+&{)Qu@XouN%dqBA1&rwCVc627dvw5(O}!olPb6SOo;Jfzwa zvL}}5AvoLOI95eUcY`ucKqqM1PL#8=-{j&Owpu{Qh*mg5^by^jmwN=kziK&>#%;Mg zyn17ksTgJ(A%NRJQI-{!g%uVEw`Y!Bg2L0Hb&zO<-(P=1G9c^yiJ3NtFCtA;cM`6q zo4%o?B{0=+{87?TcPv-X&tB1@kkfHAjloj?bG!lWCaV~oRdc*CAQ)9SZxR>2lm~FL zJdu=j_59jNKGsQ$x1tQ;{)fIcVA5dN*`l|jVMQ%oxo*SC!3{ynA6il4{B-7#&^2hd zFg<|k>9J1dc*Ek;crSt0g=Dn%SF297LILAZ4cjs%qNb4fCoJwx(rf+KL_prDO{DKC z$}PB3J`1-N6t7=^pTZ?ExRV%Zg4oLNn*ym+FCo%pN0 zGa|XDVQvyWL$_A(+=1U-_|OuCF|q0y{Tr>$8@$JZE_DFfP(VwpB8#&_%z%)X={_D@cX{BQu!%ogTcDj-*5m-Holy|M7cl; zKjclie%9steWNAqC)cD-|OtyZe|}(4R6BfZGJ{(57b$ec2Cwu)nThlMVIK z7iSnYAGP&}pi^6HKI!>-Yp6n9|#yWcK0&MvcG$v$!DYd5@;3p+%AzmHs@BAc*Rpj5-3DA%1? zv)MH$^dF|^V~DW_YcV~Mqj;#ay`kL#K023hu{&&E(mh%LKSU2`;QjWMwQ;F<+y|EN zK7Cy3?B`8oSiSh`7?Sm;OGMHx>f4Xx4X5{|o!^?-8BY)ES%57xUv^ z`%gLNFc>!0w}B&?K|u#jrvtO$#S3H)(28yY`LlT&RjzVH&+yiNQZsU$&|Ef$c~z&3i>%>0x+RNV$r<#`yW5tKpYD_)MZ6;1x`% zbOQWkNiwo&5l!K~Juml&p0uV(zjNp%P~-!k?v?()u%uYs>b4=jGW*+dO6z2MS#s(R zOT^JfB64F{2uJggWXKRBOU1Q1LUED+$$?4Q#O<~La}s38;H#U{Z)S5{XTx*Ai=s3> zE&l;FQ#$;;ZW2A1jT6SyI;ME<$6TMh+Xm4`VGmFqBa!TUg^d6jcUhWP4~`iD6qcb9 zZ~|*aevhAgC$c|HVmU#xsGjWa8U%->!h^PC=%50HT4TtCB%3>tS@isW6K_ruVG z_Tpe$B0_l5iwNNob7sq|>S$sjfXbCj zKr9&k#~|DX_-D31NB&~~e^Yw!Gl9`Sw`GaVHqf7&jyAKlI)eW*x9ie{pP$J6lti=7 znP7wgi8;@O{+N?P;&023yh{nn1I)#6uA5>;aEGlmd;G`6Vog`u*<86l7lBxkxLy1G zgvy}(C)U9K1lDD7j(0(hIe6;YH^62a@89HJ|H`NS!R#5C82{T8nwk0E5Z{@Z|4+pC zXqBJbixvK-Deh9UFDhua-*Ul8#92$YEV~tTV@zuEZkAXoFHbDEaQ~2RW5q`j4Wvxc z!krU09SZyM>e3-xwwD~-rnVvcv?04lot`N*kr>z=6hg|VagO5&3EoA|?}erj&!8F7sxo@6ZnhdtsM zUi=SOeN;Jw_{P3p!jp5LWflWKNJ({JR+`C*9e=s&OV?$J+SG{%=EO(>d`=U!jyNT` zlHoMDiTQM=OaqaggzAqQqsBy3uXZ`ZVhuPU0~3vk*83RNIjf3SG8IhQsd_Xv;p=1^ zmzea~Un(`dRVhy`dX;*S!GnvpQK?qhdKk)2kw=VPLN1#xFZy+NG@d)H zpS9$nlsS!u@?I&NQXO3qQEn?|jHWT5 zx$^L`4O6r-vVkG78I)QMC?tiUH3GOQcL@&tjIf;*gfh0prU@WGz*Q;dgl?yNO5cgw z(d}tpwcKo#B{o9ml_1|HYh))r@-?ZSry)nvjr0@7eN8YpTTGKA4mNeDtKbJa)W>s9 zQL!t5bzrPA@E!*!QMp-Q(v}_fH>*nW*z++pNnH~$c%xZ&d8I+sGHuBM$CaL#&qBNu zTl+i2x#d-$Ti8ycEC@xd+qLagP(fb{tGqB(^#;T);?fR~*?t!1vDpvGui_JQ!+=HK zXZ3ET6Q#D`602{(3`(EfpJ~JzYHx%60(e>P##|0UbUicH1;#(e=1%rM!wjg^WvI zHwfRl9=Ls0(8@{H7&9WgQ^PH!EOArkB^KxKXtz~Vbc6xDTYqnpbu^tXvkyF1(VftX zuc)HB6Eq$fDO;)D`m7bCQhOBr|fs_aK^uK2PY$hK6$!?7w0xQGH2Lq`vmUSkBT5B~mm9_-P>Wf6bMdMC5Cl#1Rd zmZ{tV?&HSxWbRJ^Zf?lg*$uhah$`q&x}6zMTNQPKc!%KjlCc)Z58ax?8e+};bs6|f z5<(c%E2XXJtE`JUu;!o8GFKCo9PTBW)C<@~0-IgOKDSc8J}w`RF2~6kOthwEc5=Ep z24QC43?fzvn6TBIgB8cK!RFzj_HsZ__i>I&Yw)pR4Vu-{S>G{ybJ%+f1R3yv{8yqL z@!xeoiX6Wu@AmrQnIU)Y56g-M21W&ggu%{?cT!cpksF;rz<3B%wkfg$QevQm*#C2Q z6Kn;&IsX1vhQBL;o-}RBB~G+RG*5oat50Nbl$9(-DyLsmy6-tG-j#$Ml&;R>8)(>% zqUhhevj6oO{#TimiS>V!#+d)}EBb$O#Q)_V^1qhGXksLx`uU-QZeCG1ngv#*pVYZ2 z7W02uYz5-ycp(Qto_~WkD2KqKhrAvKYapCge)mArUjaSg;a?JP<)|4pA}dGVU~Tqs z^~2*7L?g#j$36-5S82h~<<=p5-!SeHic>kd%;WeF3*008VAo~Wz+%}`F|MZtG&UV^RQ0ucWMx&$HEvm`7KhSDrBU(@!ob1s-$z;gfe!wO+y4v@%Rl_<|205I z-Y{;;OUb2terZ8~IKs1K*c%#jkf{yNygiDbgkf@pa(x0r=mx*y_DInlh{E^}MH^*I z42T2?X7|jk9jN{{+vexsfo&y0b`|GeQ%j**R`&c>eL8Zeu&q zajep_(aAr|a-QBct!Y}(;q$ENdOC=}B#DUVx!#$N=!AgF7@t4q&ZnLd4EtSLu7+8c z->jgV(gNc5Jn${~fICCfS-Ag2Q6+bs4PHbcJlaX(o-dM*?xDn@RG!8foiW}S(HR`y z|Bj125mhSTM8xR14*X0bcTJbY@C@h|LndWREubWgr^$R{>7HTpP&}oXh1T}nhv7Ip z{Z91~qE8vL$2J^!a*&Q`JlTBP6fBqans2-1 z=+aHGNPcROu;CB7^n+4zJ?`y;;gujPTir6Sgf7_tz|8YKC1 z4=KsfII=7N=_ZGH`{1gmQFRXU!0gDyf6JB>XDD;EogJ<3l{*7GTkvnwrrp zY4Qf@2!k=`^4d(l^g`|Md83K-&wOTP39+?(OdCdt#F&bO%c_vX8$^fu4Yi}!n^D!} zQScx(NbAQDz*ooEyk&i73Ly6~tf)YVl~#wY@D zD9AN{=+r!tv(Y!K|Q6w<3)S zUq1Wqf*0J2Ocn!H0#JlMGlb~WFzKUkDWX;Pvde@qZq0?Qouf5bi2VFpRcOF&lvPra zmy_;908|w*%fcfqq+XPwOBccr2ksdZm7#K!hAdNQ9eecGZ4UAvmtwe?ZI`3$vjoJj zIy)>kSMS=bMa#ws?7`_J!sGQACj?y3q(VOQADWethjNgkrlqI|*-_Hq zN(sXt*huFT%F{T7mHa+WU2ve)BhTYW#AqsE*a_;P<06t(X<;f98@6EQq0!Ms0VxKA zy;N_pHcxxi#%{zeRZ@toDZ;oj)2`91z(&){y8LedYNiuwc28jnV1R!MO7SSbZfUB> ztEekpE!%4NzvWFw+>hT!tV6b#EP+_?>S*c=tt}wu=eJjia1Z~+(j^>coQS(L?@NW& zsjkfM9RV8CL+V?;Eg!OC0Lq0dTwntv0OAg2wCEHKwD`?zAp8!))o`+uu&?EkmFVx7Gsy zd9j18p-?~^fy!^mi-pMmiY4T;JdmBatu(^IT1Y4GN~^P!pzL{t?aPw!6&M%m?ZHyI#_07bn(#l5%JUCK*W&kNJf=OV^oV5vjrNU>( zpf(`L>~ztnfS`@?&okcj?ZuS>;eiaff$2aIo5OvS&>*!aQjkP!ll-|t7DBYh=w?uh zdRloZ`NO6u@KH-F%1uQqSsiKm_SwOK>1)L0frX{=SwvN>MgH zW)`I)I5fBbEE7jf<-#(wD7wKRxvj#%q!D@CFpcZCoNLXVzAc^WRS3g0e_vmaJ^6D( zKPWTt3n|g{wZK;@g&50)3J?wrQ8=PN#z2Znxinbl^Px>hVN`in>lnRygTp>#A~r`{ zo#5TSPL!AIzzg5WF{G7*F%gxQIcOEXi|k6YJcV|0!|Pu4^r z?h;s`L-J*Mh@d#t0y?B(DeJvB_*2vKuMIKNKD0s)CXlDOGu_13JhzIRFt%DC`j9sIJZoX|=dFvY{ZE8yye}-+SEdz7}xa&T5yY z*s=JS$hb~cpil4xhzPWudFxt)y-u+TXDQ_ zijMKaC0_vLlC~^JC7BQ-My5La(66euA!sF zRr)Nrv0!isvgh(jQCmj4V}*`=E-n;tsk0tOiH4k}i45C_Ohw8r*^oR%M}CvC*lv>G zm)0h=Q%a;9$PtrMl=C!B#Q#A*FfBGwcZ2Y4rGO0Jfot#Maa3_#w^2Am?EKSZ=H&Lc%* z$z=+QghTwbN{)etQ-U=J5O@NX{6*2PFZ6&4an6LA&gzP~Ty{VGJR2U7!@3vjUQeBS z(G3l}ib{%C0&K6%QHo%$N^@eI3jv8{1PNMUc8TNuJT>tyvVGuQER7PFR<00VVp&XC zZMd(Y%F;Qkx;bI&{*Wxen=WPtD_3%h%3voEU+TqsH_ffBo(_I6CTDUa51JGU2nw^* z4|mJ>!AV-f0=DA#fJ({UiV}C-UWOc=IpiLt)~>6vOtej>pyUNC5?5Lzp!2}?k)U%` z?!RQ&UW$9YInSv`)6=+u+u~ChYIxS&S7Yd(aHct552x5uGjJ)%Fh5?l{x#;mH z0L4Ee;89UIv?d@G#x~3{GmNv3Nj<$p;F*3lD8id^H-kZj9~S(3yyN)RSPs1; zvVrD=5zGN3jjkEMP<|_+21GO1`nai=Y8TVJ35wlospCl_**aY>5}m0NRbKm1Gs#6o zYXO;xohrr|Eko5408yVa#o%W?l5!f3$a2!;?7e;t)3z0z9aBxx+20<`!`xn1KGJOvMipck3!mm%~4ux5J`)OlKgX@UF2h z63N)42M`Pe(2zpT6V16mMn~q3*K|(0iOTuKq|H^k&?wHTjf01L-J{;}3_CaHhKr-S zx_zU>0z_ENtuf)2fdulmF!m&W?f)19%RiFOjsbn}iZkyb%Zbd{(YgJaNFF*Ok*tuQ zOnON$n%T&lNRZ{n%)m@@$)HlqhpfrfkOKe7E2+=|-F~uC<$whsSf0hB4S9+1+C3OM zEBV4GGOrZc`>8WUJh@q!eU(4;4(jfeQe{4!%^)}B<0`#)P?Af*eDg!V!^8oa`1gko->-50PG!$>U{(X1 zL7wW~u1i;ffU(D6BcvZg9Bn@aU8NRo)JwxKpzh zHfBLiXJ@b-Ryv~M!fmTHdYj)0gk+UgZeP}MtUS_M8L9DlBsx;fwE5f?OMevl2UPRnxLfu8fyQfu5=*3_%8%;i$X$wg(w^G>WiM%wn`$~;DDd8PXr=wOr5 zy*n&@_Fw3bb!PQF%UC$K{^n5cvKygju$Qhwx{;vXd3c)a3mvYi!O_0;T}lspLQP49 z-oCrt{ll&2WjK0j>+QV?^E$(fYwdjQnf0(WJ~zmONBuT*8gQXw$+hZz{xKSmy|Vpu zK%=U|&@YHEjLWi#YoLPcln%xY)FC&B;KUOZw#|--xo_4$ZO6>KCVW#f##e9j^-PMU z%kwv)gh$F=VQyASDvya~ zT#gVpa^DRALa&xy3d0}+h7NO5*s0~95nO!Au6jmFpR7MsnXxW0orfzuA=^c3wwUiJ z65;PK0v2CJtM}8y2=Ci8PETgT{Z>C3q~`9Ik+-*C%fjsPvP&(Qz0YKRA~EkBuC6ht)JH5v{YmV*hRj zd0=^2`&F~SUUq*etwIM{!ZmnRXL(Qa>Du&KmEmwXS41){P`Xq#Wt&Ns_E zF8K0v7{(7v-w1B+{V1|=IB+C$roItA-jmU8*ReRvDC8!T3Kmtutj|_y>8G86v`XFKYfo7sD@-8r zGGJG8AxT>Wuv)=|pUyL=zXhOUFuCs|L~{hWMZ0ji zsMh&!VtZ#e!e7FhVCVjxLjLZ9B(xceM6~u0`c(BYzsZY7YsNjrweSeTF91QZ(^QLG zZ+w*IQ`})9LGkm?Y?2X~UZwxJHSeasLN@{7GqMwH?~45h+}kJRZFJd%JXSEl8-qUQ z!v4VsV*@&03N|0t$>IBtlR&MVl)Yo(!t(l+6EUK*EAk(4DKU2Ejx0AzS;35px9h`; zYfiG)_P?rC){iha**xHUo#&7w1s=tuvG#ykG`ubjN<5+Czb)jUY5RRZPN*m0d%PUz z*8%{1R-Ek8N{iZtBj66b531zk9p6 zoxW1~?PsR8=)GpEHbU_}*xyX?dK?BQi`-{v@N9M#y{>}Se6_)0t~lK6F1{2G@>gir zHCi8hWx@xOzj;*Cz3c`9(gjB-Y@@V#E;m$pYLLIS7V*v_cfKlI3toepZfq}hyHs57 z*#u#oPkiMXTg)84@@RA^J@l9}!w9p&5VF)U~G9T{E{B%8AE|6XR9srIeeDB}a$Czroq&psHcfiIW8 zb{>#rfxd8=cH)}m-4?ErG1&5V249vT?{-<5B#OWAX*2jPLlLH0mco8GBACf3{_g5} zU3&-@63idDnuk3x6BT`LHl2ojPyHq@xAq|RQ2cUjQPRoNIufUfa?GW`6j@Ljp6Y1q zv^0$_q$rtpk>SzudOv(_o_tLeyh0<5QD?d{B9w_-I2VPp*>JX)y27*BxIIl8V~bw(EpNUXXeoI8HXf?e z6J3|bpH!jW_Tc41O5FN zrmr0sa~|v!fijOjw$?_m|YXk*kfvo>Bm&(Y7@MGL)I(YKW|X7 z!!i_Cw-$kaiH}g_(^oup?hO~YnhdnquliQ&lT3Ip_aYXol7i8kw)qYo*}2^GLS)du%dq+#O!0iRlYgB1rKW0qT=l~G2#YX0=+fb(mg*H z%6ZQeqj5#jQ7|+Ldy0(mZPN#Uiy({FEb?dQqNhJ;X21=INd2ELWxj#oDluYd{-bZ+!k!QeP#9e$? z&J7%C`dAIm2eF1~HtTJ4)tWu_6SucTW$E;u@weaM_8e?gSAadYobErGs?G-{fMa=h zomW5S4o`*Y;$x%U>k10?7c98Ib^_Ve$=?yG+Cvn&S&faht>ET=ebRAOU-hc!S%X;D zM^bQ~^Nv${>vdFR4d4u$yp?;MK{&bX5b2HCS@%chYEnLc=}N-IP3Pg-zo%2gXV!L3 zZK%)pQWO~OC%A5Sd2}a?UU!rIPdK$Ih8+*V7X^X};}2b(KF;q$z1@k`aCj5Sr0BA$ zgGgn(1E}vhfKzGQaf1$N_}j)H8~*6%Hh11}wE51)N#6Q#?IqP_@JtxHg16s-3-Ds1 z4OpLam*Sm?`NFUG-qGT$q^5tGwQJl6jh8dHTd))2&RS1<aAQs_wG^ryu%W2yuH+61Z9J#e$g-wQY2xIrXy>td zy!)HHU1+epOReT9&)IByxfEZ(=p8_ooeVV#mqN$)K z0D0JJCjywDysb(_xf!A9dUV%4)D!--pLOSL4c{!Rr@n+aBrAw^CRyZ@)1j29Ap6%y zB+z{OL2sIQM?53o&8GI9JNc=tCLhaQ_{AVs(P>X?dVJ1S2$CvCfWt|>-}$;j7c`oL zzBPJ7R+V(LNari?Bm)}$3$(f{vi!W`e(~NyE5yBEVtxD8>3zKCi4GdRAul+nlZ{M& zEjijN`V6@g%B3rS_Z5iCA-TOm_r-_EjUOKU`y!O<4u0~$+|X^q8%Expy;ttNeVlhV za5r-Dc%x$DSUk_oLHkFYZi1c67rANQWT=F$;^&?eu8sym2XYj5L!28npX~ZuHv|Jy z0+lBv6{an%X^JnM*;V_4G33|FtIQn3h1}<2Gh-walJ{DCSti=f{DFj=t{9g|bI#ED z-)Tln#I=Z_L4$>1W7C1h?rv5DcvuidyRZJ+fS}wNmd8J&-s$r!%9#7f;W8*ljn5)3 ztfi4F#cZCSyyEC%xW!ez2-RS33H#qQA&-E5i66pZNHCZ8VgEUA*YO@EP<|Zzke{?c zz9REWuY7DEiSRf_K}?n{<)vn%FwXJWLMf94H!qKc)1@q8g~8RPcku=w)Q7n;`ojTFtIKR z%8$0W9IbRt+M>Moe_XbDC)~d7zDnq;`KCdCym6ES_V=0gv^TS{*h~$Lgj5_|l^8LZ zFdvS28MFXw$kP&$9}hwRSu`{vusrW1u5ShC;YGD;b(RN1?xI2zs3@oMr$hp`M71d+RShCH;(+pXt_CMiQoNR z%D}I8&nj5q!fPGos%!4mxw9m~KIEJ0i|c0tDqXyac=4{b+8eHbPix?$JOlRbk|z3( z3~`1-kC98J9WKd?1Q7%-Rt5cK1vU>Iv69Fncb_Q3K>@S>fUIvtheBGq1=3`2x<0)4 z3QXj?<4q4{lrWfdDSA$0RKL=DC~?hkcgS;D-1=zfe~E2}W)clRWvPXv75APivGIy% zhkjLgg?Dc;SpOwg;{Uq=i;B@NQ!D-J)X4OOUUVL+np97@&zdpZ)VQzfzD@*8|J9?R zM#TfNWjqaIQ|5Bh=u-1+{2++3DU+aWR9sBoodE9}CubRb2>QfGj4E!&V#$vrve8gg zEYFg>4))X~bUkEONC|3{3o1~G@#GdKB~LV+K`=|RAkvyRliMWz%EaSSyLm33dYvUW z2zF00Zi2MKYJb{^a)=&j+a3J;;}p-%lBff48TOh_DJ9`R;A1(sHuGwM>hA&AO}9a9 zY$oMvyqc~jtX>iD8L5PAj%y?I(`2$XoHzJ&vSPzUB6JJzekp4QzeflB>vz?bTM%6D zSv7ixAy{}aDBf&|e5K+*nz!Auf01y?E|ff@<2n2pu$i7L&`D4mtMpgWAXA&?JfC5y zW%qG6jA={zV;uId_u_NbikJ9~_>QU3yUD(@%c)oXU_r26Hjme*tdr2dR&6&Pm4Csr z0MgK=^t8mkrKqE$!*uhi$a8rlq7Tv~R@9y84U+7R9^UFB%EALh?Gjw@4d}Ftp0$zRW6d7rGJ5XiO-idgr8?`;^e2 zQS~5~n&a!FdHGPC??OW&9DeFgEQci|$U0^(cE^X-zKr~(Y~K9kWC}QrDYu!zJ>&7+ zixH2$Q{Zp3aNEpoP7?Zfu5n*2?qaid-aO?#d!NmT4UX?9V2ZPe!rc3sMK<~KOBO0$apo{Taidic_<})UuWM^#&0nq+rS9e1ZRY01+fx!h znsypgoxEoByR+CIE{~hRuMe<8$N63hY2lTbkB#*1xUbtMv>#{rvCYhU{LeW{H`fNF z`uCOOTW>oXSr2~xH|^ZE9&Z-G-5&Ruggeg6bmh8L?}jq1@j*liE|&rk7-Z}uYzcl) zv1UKaM`!pq&s;Kd7M}-B1|Aor2uTfCuxvwCjFX&|oA)m3HgM?Bsme;T{Kl0NO8`?< zldk-uLv6K1_Ws9_YC#xDP=>8}=Tn)OHP;#os15xCucZK7YEohyuJfAxOAjmU-os)r z8Zt6VfVWrJ$6ByBA3r}@_VeZ0CC3zUUv^_0a4YgX`4*&tmP8_bF}fNQ?=4)Q~?E z(-p$YazdTGSbqSg4R88)VR1TnDOdkWZ!Pa`R9<9qBwf1TxgPkKe0+@DNUAtkxtJ!d zx_tJ;zx@K95Nv6Qe;xUI8}>l0vA@H3(HK*vlDIiH%7lye1b}j(O`R0apED}<=fnM2 z9cs5{Sn)fG-pb%H=c&0^+1bKxZMj>5b>F(aXo=KSvgcW^vp*fJjQq@O-coclU)*8T zRm0m|NoeskR1)8~l8OgE|MA#sRN7dtbu{lM)Xmy_w0^HiM3G8;6aPINe3+)?@dvWQ zh451?m0{?`^=b;gXYBRmZmkJV-*xT5L0@=(J>t>D`Dhf}m=11~w@x?QT3nfj7F;+x zvvNyqR;N0V8|wD7UfLWIE@AI}0qnt7cRimdxo*l)N24;C2h(_)S8+EhiiX>8f#&5= z^eBMo2=PiyauBtb%GKK;9l9mV`6%hus5dpn7&$Ovgj7_xP>7@XC$M@ua_I)hAST2~ z-3-e1VHUMYv!}1dKPHf6srBZE>_!1lNhMUL>0jygX#LvWq8|FFEv}WaoNMx1@^|!< zq}(6+{cXKWo-2xRr+oIp$I*_6bD!Rrit@f48N%|uAzsu$Yko!5@Zt9}6cCkFf0*PMlxKdk#oGR}?@4ME0(uSRpWt|HXkp4U9Z0C!$-NhlPI`wx=>|rjpy2y zoj!RMSm?TMR2{w@HIsyY;C>hOv9p~&uV&I~aqPWLOtj!SL@Oos32kN^QeUS5gLTEx zaxWX*3T%*_V|NBV$5jfcMHA)jtjYpf>3vMcRL~0ccxCfAH2zq-VYftUrMuF+shcY* z;*@weBBJ+k*mZedT(^l?$!n%<0u}p`$TFZk(|Ct1{;v65{-P%f@@#24Y z4FCSipw!R>FYcu8ThP+Qw1e#oUr_nCxUn?zLB z1{TXcBYe)4`p|JJo%__U8jf6THxZPG>3X8e!lszBbhTNg3HBK}o@@^{Q5_=Z9`<~E z1{+wAf6bMMiTqrAu`_{y9ocpy?*!EELNVWrf*wqoMaa~UF;ILGIx~1+{nm}m0bBAo zGZmvNg(vOIl$20#PgdunG07KMd7|h+SBOxYS0JLt25N@wod4OyhLb-|k^b>0NdIs6 zYaVRU8aG!JiJu+Pt53su8SC@2g?mM}vWJm!-+Bg1{F_kig=xRHVnNlgmAwL0K_oZm zt;6yLay#yRC=_<-!+gYXKVEY~FiZT};bjM}vu9fAMA0(lb6dGME9U99JsZmEePFofgd}ScZP5RC=CISYFe}z21 z4s(X*1c$Ol3n@Jc^Ff*2#HEBDI~M#wl+}dGm z*JNg@B2gB+3gaqgE2FO5-E115`>pxWlZv{8To6^-GxiIGo<4YLq4=AB{^{3R^#tg7 zU3oIN!O^~+S;*XS(?lxiU!`4)G?x_Se|SHI$|Mi}aE+J00iSO{LDXTRNzgAAy_jm8 zgCvQ`VxNA{3#~@zKPq}gt1%O2u-STk4^sKju=k;5pKLY#24Dit+3a6Yq@71-x9f(CV;V1Ehw12Ml1xJ$xmoi5PuNmyt^gRT#r&^dxzVh==-yE4HG$L4gGT_>9+ zLAoq)Jp?HGEG$kBA?InebV`$Z3&$JL)y84Eh!{-KPv|Rd+QkD3ehZz<=Rfj=s8NO} z+H?nQBV+|5sLDR#$j~uROx~FsS`TKDTb8v+6e6R$t2{K?GH^TM+aA6vXz-^;2ktpM zoALO*emkgq1QwPoRiwi^W-*l~X^o<_Jrs3XCM9Yza7-&K*(FT&HT1>bj3tOPUy9Ig z+)KeBDug`J@))F@)5W3h;bBwSmx2Pc?Z0-z2(Zg34XW%RCb4gi)D5ewhA_Wdu9Pr2 zN5P|zdYwjS82aC2qu4RYkp!Ql#3M$@wJu02@rH#)U z*~&Jo+kt+@GkgR-(lFehL_n0g_EG z4UH(eWTPZnIU=dCWKmOsuzjo)d)>PA@wnr7eL-y)uXwS2uKw+%7XQM+-@|`hG3Z~V z^|IJ{x86J`M$c`mjE!FK2yE!+cdE_LDXZr#y9!(l1nP(1#0y{VE(D_rfQjIfE=7EM zLxP+_34>CN+9Zbg49SO)uku+<-&lf6Mw2x42ztFU%sXby(HkEJe1(a|tT0PYyF*AWhXZ?C z&LHneT3LHGrAcRUCh|FHQGi zK>Qh>l%G>nO2{@%@%C+^Ziy281j-OdXZMFPi&e;1l{M%AFKD)kG?g{<8{V)`q{!AL zgQ0ENNz>-TWODp2fgYD3cP^l-uCt>jnNMeoHVoEtu=B{>;}N=0;c7ZM1vLLb&>KOU z0g%-_jFSoPV8SZ{t~1GsfEI69Jl%0lgY`~OBt+K|8G}T9gl#7sE9sm0e1psQxiH7$ zl>jF2v`x!!X2Ovn!f`|P*7lIF$o@@gbFnbFBR?=0$ivKD9OnDjR~Co}8SBU9OX#;) zE*fJATv-D-;4)d|PvqE{!FGWR&iSU?t8tZ)kqL$ z6=B=X2{GYT&fE1=)k3|Jz0G$W{?UxB{k{3ivbjZ_<___^PhaukLp=Z;MRbL2PM2!CNILzI45=Uh+K6Rt3yS4h$05bQj z53t8=sC#W#{CdDYZ1GU1T~PuU?HBK~V`TFa)wIgoAG5w+(<&tLyLy?cdcFURoAS55 z)`|1oCqY5`rrLQo>7k0)f-9HDtHoriDr{G95-BIn_YU=tg41euFF8{r#iP8n#e1f6 zk-OZexa+rz`mV#E`8;92_r}D;yt3*eUm}j=q~BNOhE!~Sy2PE4T1QMd-x8b3!$98& zYX614FgnL#GIty%w>nSA9W{aNkF_+n^n|xc9mJvQyGY(EZC1ha?^iuz7taN6UB?lk zyc4Q}fa%Q(A#_+6Ea)fQ2Ygh0Yj1S(0A&^k-F1U%t3Ypsy%okA0fa_ZY)V$rzJUa| zIz`qYmAA-Gwyy;G0kZ&cUyS8%Krhx$Z!^;{NbTY@ClQ~%m`GL7~OBSR&VfTlmMG8AzO7E~hMsSxc4ZVrtG#N_W zPh(SVmksTcPsFR;=$|!9x!!y$DXiS8(Sq3J(pNtQ9Qvtkrrj4P$p$EvWZ4CX#`s7u zvis-)F4|UjHcCvQXq5Bwua4ekHc{Q{S(vmzlx3$RF<+z^j)`u2OvfF5WTK?75Ec_YR5L zA@0t8l3N{8WT?oYxz=uPvVZ_A+w>ah23dN26D>QkB12SkJFlG=8-BpQm%>5QKU%p2 z2U*edB=r4aX~IJ7IG~zNO!#svzij3c3huiY>0$B3XXA6Ml zm3Tr~z3;1bO2rkjp-eA3Uv=)OPcp`_GX7byGlQGeJq!{Z(8z8Aic?1=p}n-b-&UwH z?%KJj{=yY<)lm3-y587tMdy~6 z;Rs5O;RlXdZ3%&k$X)K&iKepMwuBJLmlW?qR^rdb+N1E9Rfo8|j`9$iv1^=vv0VN>$wnf) zjb)3hT6E9QEQU0AM~qFUZ=i=^;)j&_`b<*N2EIKa7PKTzZ;bJ$DUPeOu@=QIa=~w{ z7Kq`JJlAhRK66@p^2~-IfAMt~(bdF|(O2+sfMx1urAg?$(t?|==SeR4n2)#O%lC>`Q~*gTb^*!yl3l7 zQ02v}fp&jA&&%CWf>&KJr@=xJ-yY{xeR%~XxtY`lyCj!bPJ?8;ZEkDojad>kvTe-5 zY1dDe+E+OGw~xT4HB!H?L%P#Nt={OnEa9!n%pHI?g1j^5y&yYXzQ&hxW-RZWz!}|SFYShKDsZkN#{uoP6V65dgQCwMc78M%{S-$8 zH03t13Z6ZBRHL*le^305)JH8KlsmlG4u2=g&XaH{LD;_=xcnUkG}@bv`9W-5?t`0r zLKY)W>F7}M*uen`UoMj~LS$Wcwl&LPn<;!POS4SG7y^;qa38QZjuiM|gu(ZisM0pe zf;Zpjev*?H0BRv5IP`xW8z1`4{Rgn-*;1T(s%$Woc^4LuNF*-$OZ|>)Ij@I$hzQ(C zNNv#~AhC*+g9m!Jjuj?dmmAE=!~xCV6BU2)ZL|7)mzW+cSKVyeN>0AZ#JPbi*f8+@ zZm@~B@iJ>LFB4ae2HG{VNtG7-0^LSB7*#Z`7~)dQ=@ztvyGcs@ulz zf}#q`GTvj|I__3Y}T^#}EO<4evthJAQ~f~JT4aC@UBZ#{_j^5v?t(uUTR6LhiSUZI5Ndh{Bd zw3Y{aCg`YrQX$E3W4i*z$N+(1R1GKe*`)y+E6G|b1cMrVV_VFa{5SIG4M+5DRJgQWo;SS1 z82)wO4lpE-D?%G|NryS)-iU_GP9p#TVi|C(x#ft={qA%juz^edX4Oissk!l0k}f^N zgH987BO~zZXagh{kr-&E-{iBoq*xX6^^0MsVUKCfzI^J(I?5o}fp^6>(wJlE^!kc< z1Xva|pPWIH@@@GD3Fp`P%JTHOL5sxb#NIFOD17tzE1!IBdK~cx(f@-K!D!_Af02j% zx1#C)$-_9f{(qJg2iN~*r^5ArvQs(lMDoyBawW_Dj6sJCq^dMLPR}}2nIUkxzsXMG zfqY6)-d%PQWJMez3$|qt2=QFTC&boWwqnm2%4xXwaRLs-MzZf2&G>N*pyfks`M4Id z6XOx=i3Q8=9!qE-$oo+t)VX{#E^fZ8GkE4v&Pz`5F5z%lg4@BX;JejRCnM;hdRQf3Rh6IR}b3CtaHttp;TQg&s1JjNe#COP`zbuZp)n z)=n-;OkiqFKeXHGT%J%MQk*MVcNY2Puo$cs(EkOb^`&!%6cPShWU6rJIC;(x4JEVm*|nK_4fN-x+#gIp zC%s74P|;oFNt1-4f<5xQrt`Csvy$Sczvg(`ngY3L2T4Gsjkc@q_3`tdG=jy!lPYFWCji_6y9JI~4$_68 zLpgI09Vv!RKHk9keg`<0fpLV%Mt3$#%!4xJCFDVGTJGLh-}6z8Qp|kE`JhF{5OD3R zPGzCu`HS|Rfkme}=6xc6@xz>Ht4dTqofg-PGA&Cwdt*hMtePRvB3H6C>>Zun^x3}> zEh{f_H&*D{w1;bSHM+)Tp)iuWI5a_b4N#)2`3^rHHlCh^z@nWVvn=Ox_Zx6k=il|F zw4SsX9Wr8sps>!}!EoV1d|KLRi611DTd?69BDd!?sI2>b)ugL(uPITy9Wu%c ztC3-{nY3V?xSGl!QjCVHQDD$X<*c+Z2+NZ>iEzV3VvIU7Mwec00xpyUJH$`)vrlbbMP2akeK6{_i}w<|bJB}+> z0+*4g1=cSBd7h-yMxYro-rM4#tDHk|q&RE=v2&J_KDP5wl2;5seA|a3LkYlw!&8&# zUTLM>Jf-JLlwIgMfM#{WU=n>oDD2y+Z4N7SlbXR8cHAdcY1rO$9jg1eZybL-u+cu+ zK4~rI1aV3G{E6q?PV-TtuN(~~D3?o|lM3VV_9$Xx2pl4}gvHI+y?< zh-0W-+a{J8`E;yjNIn%5v7d0`mn5sTVQu8dF6vuGtAnC?!VW3Dld=Q-kc@UZHgXu6 zca_bVTaCN@S)VbV;<=M z#YisHs2eU$*sPnWu9GPsd47cfD=mKU8|__^JJm9uAVxQ6N2D&H{DPPz+3iAH; zGvHbsvZBa%WklQVh*98|$>_kt&;mbBdy4E@2o)9fooODLAX!?tu3;m0taZ##2^GdS z%z2aYH;B>zO26!jj{|r9Hr!c34nZl5+q3VmE&(IfKa%o2F%p!?I45nEW-A8)eQ!28 zO~^b6jX+AWCphxqus$v609}&|BX4SenK`u$fCu{zC+m05@>b!UOErzq8f=V;5N}Lr z$Rub6tJSaGO72)yE(@EV03?En5fT}?g>I7JXG=oJo%_b7SPYgcNxy2F+&5w@Gv-3U zi$k%E+4XFZ&LMbeec&V^P~hQ5V;st!v^kX#EbS zIdRZ6Ds8Q6Nq4MQ?0L!4zht#p=bR&GU%56B@*J6q6Pt$X=Bw==Za4*l@F(&dZS-Pw zO@d+AKf#ik&K`#DT-!UBfIsq-Xy4h*@2Yfioq)7UoeKRKj-abxtH^+~IOKywfRN zbRtcUfu$*HZD;s6H7ss5-%%*j_*2b>3fOz|%CEoO2GICL!>lKXZ6?z&-n3JpWL5r1 zUDq@Suvld0b_R~51fI>+eW8j>nTJ-kY5v)h9^#l2pkU9H_m79y1ChK(qyhC$vZ7w1O6QiS&+Q)c&T4K0VUcTZZQ4xi-GK#dO!QOM@c5c=PFT*GPw zRBCtnJbx;IAupU~vNKf?5av<%??3|5ct_h02MO7k@&40 z6H?i}zVY6EEun8EbhO%9UrNp@#9=)!%baWCwX&_;zT`!3gSb#yMF+Mh#Wg_FyKGtH{RK0y}kNT9104mN|uBfV0>w za%O%HE<5GXZ<5e$^0}gzRI~h)seGphq6Sg#Povkvd1`3~<8hc@Jh~UN;-cRGu3u_? zQoW!J^95D-$Ik4>gKh zE2;mrHWWN9x-Jj+;&s7pks?B*vZC~4rmopn2Tcd?vGIAAteNP97x8?N?P(69Mob?# zxw^FM3-3YiArHW!Y6-#m){j1LUuYa!uB;=W{L8TBhqE4F1FF>JxQg#Lwd*m#zXvr} z_vGv$)*;e^`8Wu2xG_0FiHW-sO3hk|(jFlKD1cWHSl!yb`lWOBNE#<&F+Kvy$j4~= z%LOx5Q5ga8fX6!QJ=Wd^OaaB$8+X-ADRf`A^#@M5T*6g#{}Sk1qXA7hEo zf3_ne%VvX_`tdB0Q{YDboIgm(8`CQg0%M+$%@6sI9REfb6A2pyv-AyN_#xu%Tzk6K zAL*;$PoG7p>rQUH1h6c0YAT$Yqf}KyQx=;`-zfl@DA3-63Md1 zd2NzKoWT9r_`%?T9W+l7+DBSk{u=W$^TGROZ*VZ^fq2u;aRKS3*nX|{V}Tm&;{gbU z<4--)s=Lz%(^1!p3Ba^-8UG|Ik;rajFv&}Csek_2U#O&{eHEUU`5q0{b8nk(JAf8! z=kM}0e=r&5595PddPu?3_j(HYQBLZ&wV4Z)6RvX|?tcLLKSd`Uac^#3PQWISF5kO@ zbKM;MpNzoDttNj=JeQ{MQo+kFbKBl>50kH3=XY3}tj}SQ_|mRU+{nLW@g*mwzNEw8 zeo0Re1Hzf(^qXnqY9nT93=Fd{?3mv@a(^6|%?Yz!jnd|wy)VB!C<%J*gPI)vdEeL- z4)m$g@V&)F;tGr@vGvmJ|I=6iQlT~U<3|4|E2H!33-`{L?| zQ(-zDGNk;kw4tYHx&w-wK1*nuuu4**Kr|T>LJTWPp{?ei$aR!V4~bhE$!LI)XjfdI zVtZsJE|7&pLQLFYDly9EaBSNfkmFL+c3-PpTHS_EzIJg$GRi8NQ8P<@2Ta4madfB zrT>xX1nH@mC-G?d^Wn7(wKTQrFn*WG(nV`D zbDPHyp})sWvNJ7*AG>9Tf8P`HRuvz2rJlw;X(;y_vOOd7$IkXNx6aS*?-s9jR8RjD zg#C=7tXJ>*LLQh_yuFT@_~R5F$Ky92_H)J6(ug+N+(BJ3Wu0&947cK7pW)jX%Re@5(ug^|9VvVwt&sE|H;ZP8VEEPzp8DOx|9(>|gJU+%4c^@P-fIF}dK7To_mZV#DM z-`=15JWgkXGBGswb|YmrWp^LF!!~F8?*wflsokfAITr{$L4;t?v(coHKK=1>;Bmx- zL`!fWACTNTaymI2FeykLJ=9x!-4yH-7ollqi!e(dC$h;Iys!G*V7 zflA}lhy}&t??{fHZ=$*F&bpfR;6DUfYTHkT;-EXTxZE}#)whQ7*|}4zH#Q$Y8{F>t zb4cx;hXgIDcAa*egjKB-^Bhj&>n~lu3Z9XlwOcTZja^Yrlss|9asSG8l_3vnI*ott zWrCZYogd=~>}N757WoZ#1!IVr$i;ACKZ%dmw`###0lr;M{0ts_7cgP0hsd?eGVzm@1d=Hn*MvL>hEAfV>7_22g~i zOXIf?)7L01X+<8BK1_#P-scWs$*89IODMe%J4^%G0nKEX`g*g^_^KR3Dn)g(nIhEi zM@*bXFKWn%A2LbhtU%HyCw;pJ85|8 z@bOS;LL)Eqt1d|YEoZIktzi91Y73F%eLY8QbIE^Y7_Vo+PUn~H=nQ-p+rjKk^OAoU z)jAUAg~bSn-a0lja^@%hLj}b|5UdwfIXq^MS)wz?xMfXQ&5;QA+x=M zzvo>TNYQ5fb0Yb(Tq9li3wlkRFe`q+Q%JA(+1$?Pm7h1fAk^D(SM%*ZTI{e`JuY)j zESQTn*)P0~r?3AiR?b*n)tlB@BHJ5=wpb7)6XhBlCCL_|US9T9%s9uCQ`~Yb8%NyI zyOaR0mv9JumFq8i2%T3SJ~RhXQqf7KGWi@_R;kQBs`2bBmG3GWYY2ucj||e}v_Qds z*RxB)s<3br%u%LONR4=+ueOrI`Un;o@$uyZ4^x%!hWks~Tgb_wynN@}EN z&;MDF&W*G-;{=7Qhenlq(ySd;c+glA{)`|0#h@XOWXH}2qMD{^qoVvX&__3;rw{{- zY-z`c(;f-~Ir+A+{SwKSgf*HK`x^*Q5B#01K>CQH39Xu5SS$=pj``0#-31Ue!n(q` z3`!zjt&UG0phH%}hr|sZN|3NG*V0swBDW?40NcoKQG}{BnP5+0|5;|dbV?^6XNY(~ z2BS^CRu~~;ok6Oxcx>MrZ$(crN19xpBE;OGoJ-(Cqn-6kIag&d79BJVp-)~%9&&0LBt`}vCwc~*jc zE#2$F>KE{CV8_;V4X%&8z>lLe_%%g0;KT$2T~fo$Wetmx zPI%#@B4t~G<)%BJ0Fz3-lgs}o*QDnr&%cOHDp&_rX}LV^fWInC5M8_q;|-uzcur^QJZ zf$}gx;kB|h5;+)qA_*-BI;+h1;frBw^hA~0>b9%EeY+O52}SJPg!o|IcX*jI1pO!WE<-sx2bDWD7kHHaXToaR?SfmeiaT5KKJ5c!}aV~ z{F0O`1IX0e&GI$~@h-6JqpiD;<74#%dyw{XbNT)G$5KQmm3rdQP&SvY-Tlrm?8{tku8E=HzuF4Q=~HMG2T}t($M)682E(& zJ+bZ>x@*VUlo8#827Oup3WZmXv?(UF!411Al&~n6#h4^gE+9<`OF4F(X*Jf8)LoZ_ z1jWyhgd=aH7(o9$o`&kzBM;|ocO^N=ByG#KI4+BTDr``$+K`+h#=k$sk|Y%9cgji$ zUJ>dXZt52U;7Yl!C!0Kj8P?;(W5O!Cv%tK(1|>e;V`wSbE}zL!N;Eq^myg4^{ugdx zuiZgcec~R4TVqF5E(Uqv+mH zDeQ7G(ED-w{#5;4c!tB<>Lc1YSFkDHN_=hueDUN|v@!?M*XVK|8c172wIF?k(PCp; z8C!15#xeqHQ@t`H`QrA6k?m7v2qK=T{$Z=p9vPZA3uW~5XxSd9o4p-6n%d%hl4~c> z+-#||*qe+e3hBnnYkf+vGkZNa+=#b5JzeoIXH|b)=*=SW+F#ilR%|A@AUzA}-bDD9 z*IP|QxZL5e?XuR8cI0z8UcXi1*z6l@bHUKD|Y%uWr-AL_&@UI30%>s&hQW7=E-zev)$&o#SnZ3(@)+xjChlNqx*RAm&MBP6 z&`{M^1xT<(;u;DhEK>znnHW&djgm#lknZWgK#3=-Lr|H~I#6@|q>v-iiex&bOgLUA z(}U)hczD}UE5ZD?Ss@tI1!Hd+maOb?o{*-Jh<_qxzB9YdE^APkZc0~f5$WqW6Xm%~ zVl>K1bMja(NNKApy`F%)7i?NPwb*oEXd2LdM@pJKR-D~#;Wf>7TsJ#p73)YvquBnf zZF}=U(Zlv*9_u`-4?3&8+Bg5);=mh@3(XbmvvZ6lzv(&HfyVd}Yi08u-f>2`wrv4A z$;wUt_1KRUCvUL1xZ&l{VzU(Y9$nR8vb%`Y-R-hkIGa$dWP_Z?Q+Fx?np_(f{>MZr zpz%E~q@Q!z$UgGpdh8EhfxL5h`54P~b1kadB!7K@j;ZgH zHt04Do!nD;_c=+;TWUPb;cx$D`Vb5Mkn=trw3W$WF&jhc&vvv5O>5ENvNcfY4C2VO z7kFAu>J;Wt+cdmjV!j9f65obi{CdKcZ?&tjaYUes2qxp`|A@}@ZM3?}eK}Ryx_8A_`gl8 zav}mNslzz9Rzo31N~oGNI34%n=ztA72idR*5;g(~DG98q@H9~gSHD#+nT2S2@KSd8 zW=vStkY;<>w_TtVbS=LH;u2WCGLkqYkPhvb5Q%$bNPpv*)TDcaQ2EnSl9I4Ma8($? zj1~2_(`zboixcX5^c)Ukh*Jr*ZxL|yO*X&m|RD| znN>-|2~_{_q>|}j#lcV=Zx(x1-!IQi*JG+mIU4d;H4H~3r2t||h301%X8(<~Zk9+w zYRX@HVthFU7sH94wU``MS=T3`7%eQ2!--rPXQfLODfKFRJ!?|)ZRYja);_?YWZ*@?DhDxX{RLo z+WB-t>#%k`fx7KQleaX>ak`aje5e&K{X{-Bzakhh>ahGkUI}FI$;YGx?V(q6-#f-3#pW&ls z;CdEoS_xbV`sMnXt-4Sbwv2ylU^Fhjaoo_0or!6272Q-OgSz6GWrGERmAQa`^luO= zH}#(QLk54wl9Os(RV8ArWLS!1j`6H0Xel5(5$#&-Jgtc1cYdkP>#Oze1x%DP1;{2a zSf58h(%U9E^w&{PX7n`wr|(D5i#82_>#Mn<%@iXg2>f8(LuiV5U1EB$9C*1vvXPdA zqUaMy_w;+XBZpOdf~@1B-s0(%OY@A$ozj-7v~*c17eG`_$l@G-rBm{WqV>A&^)}gr z*;*wd52PB;+s*Z6Mv4Pz{7XvnyNI3$Ld&X~vw|V-FGLRTP2qOT&bdlYCWtJ1I{+ED zy#2UQYyjtQS)IDl7B^3w3Oqo+=;B>C_+F@+*O|)hq2PRwTJ9_O+gmB z3t#5c!wc`$t3fod_fuvrA}#3#nm5FUZv*n$wD`DiwaveMlY^;A{VbjFgU$D`-gOV6 zxYg3Qz#j*3@4=nHAQxg!fC_kQlK;V-H0y4n>Kt^o?(g9@mzwkPpg@1V-flFyIVxw+ zcFmFS2HT4Vbo*Y4S{YlafkT>4Vz+Ux zVYO#ZbiKyQETwh#;WO?slm{c@Z!t+vP)SU`zjFH7mfpm|Olrmex)P*aIQ;o`Y`W90 z-^N#~Uk2{ai97AIu{`$X--7Lid@0t&g{VI7o+E9VYXSSIG6j`JI{-tbuAOe}kSw&EaOrwS8b9pE>t6E$_=V z@TE&3$5%6hY9A;$cHL4jVC{Oefv5fdMc6wAM;f+a+Ocih>}X=AW7{?+oEQ_^wrwX9 z+cqZV#CEcI-`)N8$JW;Oue-Xc|8!M9_kCW+ah)UVz>y8X&x=f^&usGS@4UqI3E|hH z>(l3h2Y+UV{pETyqWoVJf)46&aC~gy7f+A3vD;yrP**}4`wj1qfP+*{rmb)NZokLQ zmYc`uHKg5(DrT0)<3}WP29b`nS>rn?DnO1}pqpg+e)wuE9Icl)B+#j?vTE*_3jrGX zHR^J?Jg^p20@a`I=)={YcO}Gap`$G)E|kr)&yr=p55s`ZU3F0 zZ~ooh7Ib*NzLD#AgZ{(YfkeEm`;*a)5Ni2wz&VEjd_h@2b?et1`~)(g!F_KfqgyxN zkeoMVs_Qr*5I%+3zTfU|qikm@-oxvQlJZ@!+VF9&ro;iiRrCxcHYv*{7!FV_%2<|K zI5DyKAzI8#$TWI}wv9iI*Qn|_yPeBB9>0eI=p3W)s zG!BldJsc{&$;e#~Q4}NEACILI>K|Xb2YH`pY-c@VVJmqQnQAf?AI!~f3KZS7NB?aH zj*R(5N|Y0&qWNH2rfQjCLqP>7yB+~!w6(2x-NZvdcBGGb@jIL4^Ix%IAMk}^63^D^ zGMDjuDHOVp^|u?S%Sm1o!}f?EBc4lW`=|J@E3wzo|6n~kSa%Pkst2Ny$GA5V3K&Hs zeE+Bubj`vK1;JDJjw;4H$=zf;g-eq5jrBISANBjgA~WVQ9C^s!M4L|5!K318EOHSu z34w5&;E~TSvl1iWWR7w2D6nK4@6|d?;<9S0H|Hd3n^l5Ds^&tsms1Q*RxMiwf_n z3DI~M0Vg|*-4=rsw-T{e7bbu@4}tBG;+SIStQsXGYZ7XKO09|0j+k?R#T;X%P430W zoG*$5*`!c!HsGz1IjXQ0Y;<$nl$Gfu{|UF&K~_bCHhdn*C*DrOI|q(00pk~lIl=2) z`f^q!SS(=T<=Ftgwi2wA?>CuA*S2^!93K+KOT?}*Ozpn7+zZ`x+DKWaT=q`^Jxp&h zoH!72`=}7k2<8CL6`>piBMK#rCN!MaFc%n-J_s7PUTuJP85SwE0U}Xh&KMOFBB3a9 zW~>Va5HZ3u#zDwjW&Xe>dJYt@E`R9ZM))=hM3D~5H7F3X5CO!;x7 zT98!6*^GrJI1Bd)So!>rNdJj<C&-$kqg(&kY&`C`%2tHjbYXgKdoKEseI({G~AL-DZhxgqp-pNof2 zobWgaKv4vr(T3s8DZo1fWl$w)1T|PW1MUp>&|RauZu|r}ykfIRMOl%!k^@T2ayM&` z6Hb0j7F*QrVB+mO&on?Uw5ADWb~8ndgu-kA+MB#w`0O+R9A%_am<+2`uZ`8a4~fhw z9$_8?hb7YX5Ly)emw)t_OOd4NR^_{4mT`Tr_h^1q3I++nAfXU>ok@~zcMB#70#bdy zD8k#Ak3HD_OUQ&vP?h~F={UF3-^pEo0DxItu5+Y0(k(c{v{Rrl=v zET3bYp^zb(I5XhFxK#zx?FID2O8esoUA(`gH`AL8(|lr_2d@v9M$;&&p$#SdnN@_~ zA%H?0>u6M?yg@AcA zr~!Mrp`VJL_Mws*zj3&g-86$i{<>S!&0~^mrEP`HqD#Ehxa&Vl)ZUL>b4Z)n$@L8? z7!=XRXp#Q1G(Sbw(T+3J$Z{5K#Wl z8yCZ2f`7-j{hBTTDr+(b*UMM3rVl*2z!@Zv$30DBhcZbEWfM7mR7@O*LNFemLIs9UC)*RuZh>{=Nh7s55Oo9 zQ6`8$DRNAbn9Zgu5IzC?6e0jMP<>cW7adboc15ONaMG*=p_C_$cE+qn2UDw_O(cT{L0af#rc-7!i)ez7*KuG4 zwa9mbmK#*tX%OYKk;jK-)r$%k*ib15w!x1_C1wMqvz9Kv)UJeD)T4>EK7HS#um@2f zbbK3+Z()NpvF^;z91tQ`&eLj$qK?~yZz5~zPHk>5_&k})54(1ZXEQO^X9!mhVx@SH zdOf+LpNl~8DbyO?u@NeG2yue}MTgR2rxUbC*0%`+V6CzLI40;3>=ea_YZGt0^{m2N zW?#n7r32&MVK`Am%Kg`6ffj8xCtOr#F^}&;FM>ha2mpd2puBf7Twh|r9%ZG=vFxNI zAx4@^qR1oJNFhQ=?+@S5q?Ap< zfdHX?&@P77Y1vYF4!4O%m=nQa2_I}5sXUq^CHJi>^CaqV)smnHT`6;2JBucQA}AzF z@MWb((n0hn44phlzWx};kGe@c0z0fHgAZ=Gnx&Pff|2B-q=6r1OMo1PUCJ^X3RRJ@ z!A}T5FQ~s0k3oNrberO;Kkq-8&-?hx+kG=oDjYFm9^m`f)pDrt`F@+?RZ{a&XyAA4 zBdG5g!1ZAHGFU<>(Zjpf?PY+(;>WiBwRk&W1Q$OH*uja0Cr3$0RkQ3&5B^;p9WUuT z-arije-f``(u5u5S|KSMt%~i;Tgc%gwyxQm1L|4fJcPTB4+;TCHo*cJv)v7b<>M zqm%vC+S-Jok)c0E4us`)s+^XJbSw^2F1nJQp0kpUs|4YGzt_T)jZecml;$v%V-@5f zgrdkCA`cg1pj`#k&ze1}AdF6zlnh1brlhtN6ySQFiThG`345AB?h)K9_>0a!3D@Mf zBgb!Uzi{2p*Uu3V5vl&pd>;>E#~^uxe4mI786Zdj4ulA-4*%#=^OFJ#Pkr84)rF+` z^tCyHiSCmCf_V77K1@)=hs))%w0DkE5a6)j#_TK@m#J%cXC#;$EhM=tygbl8`8J#M zACx59jjYd8-6*h4*f)K#d@cvik2615D`$m4ht^{L#7FIybpL_oUV$olz9u+rkMw%B; zj=9i85JmKI*A3iqCy8g@%5DQrzTGD2kdylXRDl9H!NU-~xIgAm#l8A0Yqx|J+ASmi z2fXyJ%g@cN^}TgS9K$h#6l%vrY5wc0sEa>T&Y-=M&hX{ch497DGS(ROGK?rG>uXbkwV96!bYOuVBN|}_6;)N8 zDiuS4^NcA&f{{DtN)wmJ(l%Vs*hZQrVfBZ3P*C;jJ3o+^o+QKfgl?5(2AlPdzS1Kt zSfo6O{?mXNVOfJLlB27AHSFQVg#;0OufaTAtpc)17?c@_YC_1|6la6*XK&{{ah{&hRhA{wUR4B)x0~G-3(6Mp>y7$9}1fPed&9Drji@otHhL&6x4GOf; z3gL?IqE2%_f~$TStt623e#F>Ukq;VM0@9# zYq=8IbTS!)#$x17=`J4vjgH~JstB1u53w3XTzqv|I;4KeuABBcttAczZkAH=j7ym8 zHcCn@8v38osEa3U^JGn@EQ~?YYmjHs)|#@XY3MKv>`3x8$U5Q|0ffQTQvVt1XN}A= zz)gux&b`?~teg0NL1;(r?G-1v*^{Gfw|9D5@9hfLtR9lQb5#VU&iyQ&Wvyp z6mg;N&c~73Y%?eJ2o<&o!RlDIc1{j1JlE3-%)6y zlm`kcnfDd>5lLX-*Fi9_i=OjpbKA#unXRKmu+jNz_eD;}^>UlDxXJk{fYOVa+2eG4 zp-BTifLZoJm(|+1m}@zVdI5XiAds0jm(}QM^L2$e?ZevYu1EnQ`s-@o7)+GZ0NmBs z{;X9&ASCtT|2L{`^GcktvC4S3WSq(J``Tib|Ec>i`GUN?z0u~o(Fa^WcKLKg9tGO{ zwn45r`*+6M=|0!^9amqRY_^!pWUDZxIn9Lr+;G$X@}N%n{%muj(ual%5KICVW7@V0 zQAjKFPg>062`oGTW|VhD;W@B;%1z;8r??og82!Ra@Oj$#^XKa#`GSm`AT43L-?&-v zWAu@&EdR^Ew&&jD?aT#nR+rz&TE4}^n?K%U%Sb-Hsc2hCBNj4}3qlkB$3RQAo{;$X zZ?8>16}-p47$8J{!c&iA*XnGK=iW-2{Vc~gnP1=AZT@vDRWIG@Bcg)L;F&Rs*li*D z$;S)n+@bc}RF^$EM;HbT4xWJ}#yEMd6d;(MR-$B(lMeUKw3FZHek^kL(CD?8?KRE_ z@UChX?{)6Ia{Cm0acS!Fy)M~ z_}cgQG`W30_QgMGx%qWa21vBd662__5+MO4R{H}0T3-F12qk?tQaCJ3%D5z|MIiRA(>YWh zT^}?tT6MU}$!6eeiW}^%FAofNfi~qWiu36YiZZ^}r>0Ss)(k^ry4T-aBcSD6-mhWX zJA#Bn1nNd4)6e?h%!?_-YRN}@9;%6$8)XG|Y*ny%q{z;K?o%J`xI9 z-A{?Bs=58_6IQJ0A<+v|exk-a(a=fwZfNs$g(lqXHn>ETELle)2_H#nec)_?c(x77 zk?{t5@k+(K=!~QooOJFrV@q%x~0HZ2T8!JS5g%wD)-(rJh;jl>%9w5`jEQ8waz!2h>DK3>1BSHu&TlL+RvKxG$#TR&-Mq&gqkK zFhhZJh^`rXz8!I3^6)BlP|wXE-7bTQqbhg?*7WY@aJpMf2s>kzj2v@p@M06rLFTUo zr|F+wQ$p^evX6NN{uRN_nq!jK?!YebN-#i!hq`-5nKn&1I;1ykQ3a)HlsL1nC;8Kl z8vo@2v(y6@-nLncKLZ}s&Of_W(9PiUeuN8O|0a$EoUoC&c~b90A#B6k&F!l-UqS#P zC_agQ5hggf?18IJR=7}adaN2zL@JtPvZ3)+M#i)HTl4|{6VC(}(kgI$A6VtA720}( zI<*qarsHF`sgw*wwgM^?PBI)H=oNE&tA&V)j~1zQL3sAGhCLwFb3tO%3Qs~JiUf9* z0fmSakPqPz7)C3DW}V6=gx#3tEmhBfGG#F#lr0$7nKjn_Iba7C)}R!JgC?6xT(OSO zeI8LA0%)<0oG>fB-?`Cu5Kyt>lmp=TFD$8R_3C0RyhbjpFQUc!*PtpTi9g78fZ^(lkKU^&Dk2)e=e>C` zKo)X%LvF37z(}^h)JS8o@;tsCb=PKIbglMWsSa&i|Gc+yXsW$M0tKB0cL-C|E|&GN zk99VU6!#dL(v`#EC#7eT`l)A8gyaf2m)4gEH%T-6x(Nw2eY2wwM^2Uc3VAY%38{vP z|6ggVD&w#o;NPghpnB7MQQ-tOHGYT~9S1s44cNYe9Y=VD=!!F88?$6H5k+0S*!~SI zn+hUI_dtfS5(z1B{_0&1zi#=6+LE$3MRz;pFM3!vsG1SQd(X{S>=7OH*OfF>)f+KG`!j9 z{^q(s7myGIGT!jta9nGBSiD;?D+L%@xn%S*?^wms5T?(%y`#PW*Ky-ltT0<5d+Olb z)CPIaxkc73fB>E8!I#Q}k@q`#ESYCg&0)Bg3fk%Kc~MMZm8;ZGV=H50855?6X;PMU zgEq-Guv~#rkv=g?G_-3Nm8DBkW!k$YW(r_^LOeT*r(^_>YSJ>Ta-Uhan(~P0GeL1Q zL2bx@tW@Kd>rE;G7xfU;tftyKCAhrD9`lP;Bc)+8^+5l88hvGXE+8SLnUH3j*O9Oe3U~Q&@FOTaoh$zIgqJgDEwYf~kG45o z>TPu4hnO1pOkM+x0%=%@q3Iw0J1E> zFDiD(HL|oEmM~J0reWWA2`ST%T>nd1^Jx&K4$cePEv3{a5A{&e29(oAy4$<+Yg%4< zbV3#FYh{OjP+DOuek^8Dc-qmxAmgxmF%o7p4z)jWtv_BpN2586|H0Bjz}`@M3YRMD8z$}e$iO92<;J)q#jUhb)UNyt zyYXvkzl>*o)Il7DqkT!IDVQpAzcjetdHH)K&+F>Fa_R3SfAP5i+o2xBYf*K6uD#~x zZt*3wu)AOV+*sb&=QFv59pNqlm7&g1Rv+}^zT3y11!ms=slX#Mv;*T3)m zx1uB1{MXhK+03#pqcLXASM3Ko0f!Tr*S(ioR9iZPe7r-(L$_F2`b{!w94ACIg>X-O zJF<6lKOqRG(!FK^-WU`;EUbZG5;#-7t{428_u}a#GSu!-EhXOI1st)yYlo8R^*`l*a!6k%EB&<7Wfgx;^ z4u!Q*6GhhB%=KhZ(T%CmKXJm+ZVQbiC*uf8lVR1MNA-BwC{PFcpS>DzzCjO%-f*v| zIoed!8e!Ags+I9R9i2I!x*JOs;if0q0#{=DFzgKh5qORg8zgeC z^u78|1dzhA#HUjN-zO*i2DXo&u*0wl7ZrvM+IO%8GrW&;qlDw5;i$2Qf1?EQ0MA)Z&4-T!r?)jwAQDI8%_wI(U_WK4?c|_0VX8VJn5d@do z$#EPPI5oI2BWrB#1hSH*2p;Aw#9~|J0TXNNB;{Ps*UZ|0C4dq~rAK4-Vu?PgGTb(K z->hUx0xqj%m=8*&B;x4Z?r-6r9SlJshk#fE;?OI-#DNN&+QFg2@W8R#uLK=Yp!=mW z{A^v1n?yw9&-h;!I62JLv_1xr0c40aPGUZov2de-Fz7o6{BNp0C(;0XF6vV&Q*m(L zP3E;CT^prf^x1ns8WTt3v~>(}axqft--@#(Exwb<)@B?P$%2omjm2H52{9#&iEWXD zpTE+M86rh0!~f8qS1{d5ck@&IA(GnLDMnR)aiRh?$3XkSz zjKKlYL+2g8LmDOuH?h2;1HOw*20Mct4~e-5ccP$GuQ6S%^2n62d*R>Y&ml>m-k|9DYs`hSChzDdFA@7ZNLtuRweS zEKy%c*$e(Z`pY*iEnq4Ds{?TvmNIbBKMisxc7` ziK;kbVwS^Fb3eUMq(j;sFxSK-(uvl6 z&*&L{@3M`?(36piheVbe%dzMqded^4NbUZDmrhsaOASmrmobrR2ZK9mM_AaoW!zEm zo}Lh~81DflioSPGL{Kh{GKXS(9{w=f<6)&~457Y!&=a?Rpb^a)i&Y;V5rD;{FPdte z5l~Vkm;Ietr=VyelA`$-zQ+T|u2T?tG>NF@jPgUnk%}8?Ns-+y*Hax5f@Ob2;jv02 zM1b54mSRTAsoBdz;7f1f)rkg!YVpy}&##t$3M29Z6l&=ZK2-u`1 zfY4~si~H4CU7x>90D(w@scB+xLM6})VzR#$|qzPRUmi~3mcg4 zJzuIW`vVTg(i;^9T>gjlkZ~cPh=6F5Mrb>|H6u1+bdK|ZZxM#vtjiJX@E9v{M!ra_ z7=DztJmhS zXw~D2o9>NM`Kj1jlYMUYQ7JLM&(s{Fgn9Nq>kSTf?>gO|yegL$7h0e9cLsc(Rs(PP z*1pGQubn0``t9!9V9h2YTN>C5_I5n3)+;sSe=|e=Ot`J=pAGf()mR`4`ZyeBzr}*N zeaAr|U)>E>Z*GCvyeaR8K!qG2$tvo2d#PNtOl|?L-Rj=jUJaCR&iIuI1Rk;U=)F{9&t-&6BBN*%`TJ`C_?Tajj(+_o43Zm z6UX5%6dDGD;8Ip)TormMgW#XN?t2uTjM!1taNI+SaeO3&udON7A{xJ|67|t-laVN1 zI`er0ay=LX{C0D>THAN5-S<9MJ<|{=#`|~LjjB4~=orbL5jo{|Ki&`N%36s2{M24@ z5Paz|EdJ`b>T&wp)Kas2IRO3p4Dw4(A+_{jquuZ#PM5SM+xHI3EuJ)=sDks#Wt3rj$A}4o?kHmT9@$$@5Hbcz%aQk^&vG~dO5gN9 zbBJ^R1CqYwZgw;)oV>myRoMD)PVcquvr8lk|8MC2Yf_BYNqK$@sw6RBtEr7F1dlqN zR(HpAUmOi*MOg)8$WTIZ!%;k}lf(qJQ+P>%D*oW$ENp{OlC~pyyI5YmB}3wm^oh{x z0IpLrGqVG2t(c|WeW^^PR0WXSfGv+7{~(qihJD$UhsT(EamMZ^rN@wq>Zg+e0`Qk% zL)NmISwgVy5u{1QxXkH9Od?@ohy<*ZPRvWK$ldrW5TcOcC3=+=m2GV0kvmWU8D+Qo zI6oQRvbk96Ul6#mfA3>u$@XelTA)@T3oE6d>^rv3o9~P3V#7uZ^s_KgZ$U;OiprDY zwRZH=bwq9H!pLEDTaE@=U}}Qhjsrczznc%iA`V@xnqVLLnDCfU z1^J) zu_fmjgUtMwR!*t<)2|SLji@Pzogu2@v_JY;jJ{NttgF*u_B(#An>yQ*F*Hn@d^(1V zh~uo9vm@euNs!mZJ4h-E8)>jFNpnqSsM%$}+N9r1$GPzuMa^<(15KpH(b&CXd7L%TbP2jLocs9Hz?3eLddo2gZ zduY+)z26N=edyu%VwhOT9>?u1$*LO6)dFwv|BdcP9Z%{`*fW%XknHmfDHFZecf-W$H^(ZoOc-F?IE>)?!a5aDbRCZi7F)DtXZs}pP zi;#M82^ZOo6O*o(d{kPx_dw_d)K)geMnM5wGPMSt8 z7AIwi&_g<8rX9yEHYr4 z^z6R*pERxD!vV72SvcE-V5^_Q<7d7_Xb$5QG#c;5{Q6JB5hy5wjAnO-Jd?bOQ{tA3 zbDqch{M&EMy5p;a{k((rKe9EIeg>P_Ktr~~RqpaqvLoI=g)ig!q?GWYJuTQ#A|TvyWzs0Q2!{V?r(2~ zKl8`l_A~ZkmSayx4^Qg_?^O)&40-E5Q6h)mb!JNRFE3O_36kyQ*00Hr2NKCm61R<> znEmZ+V!^JPnk#*Ep4as&1NU9~tB*55kFxq^zR84bi!(+R6O;`3{Jep#UF1mX@3-7Z z^SCM#9nS{~CSyWQ+TM|23LFExbEFV zq}TVYJ%tx)W0QS-T=d${O~bAIVbM^-&7%F+UHL#@cJ^qPs{+64d1*&+IY13ecJEaS*;v#rCnl>952> zpu3x&eBLRVnt*{aQOV-z+qtpVb(?!Yr($ToIvKRL^Lan%0Kq@s5NxL2grZ>fuCTa? zRzQ55T3AF3d6PktQB=Rb5wLcyRoo2Ar3Qt$UX1C+^oB1$z zGDvIaVJF}QV4dua3L9487n}pQkCswnKKOwhPf68Z&$p0>$3OHpw?1$GA?9W;x0OPF z5_~OV?|pgRXDu0IVK8L?EM7YM*aFu?T!=|NGymZWv>x#<$RjJbpN=twcpPdj>tn*N zvLiSk$r>%k;P% zPyZtQL>&@h0!eBM)t9w+ReS;fU}#@Vc2SsjHMlF!xk zt%~lnpQEw+cO!V$jzK+VPD%roX(oCVNb%Wx;k2C2 znYrq#*uN*`cW&~Z^EJcCoC#QWB=21~4;lXz1I1^;D`t9l+!sV+`Mlm&tx9{m$pO}r z|F;jg^QXIy<0;ud@Oqtj>n`*uH8gXssB1**;A%P#?Jp_a^e+b2l%(EKM-o?5+h&yT zC7MWz0mbyO$TTqvX)M@N{W^AjI*`n8{Z#tNL@cLrr^WMAC~ecca)`9xAp!uQmgVj> zHTCr4Axb>s|YtyO__X z?l-;NAYA9zUc0jlR_LE3{|cagxP3crbo;rNHBK8Ko3r^&1z?(;t9Z&y4^0n`50ADY zW>2%^8!^*4Jzs+#)CTXPZg`wY`p-Kte=mw_b5@;B{cJy0qkHbAV?tfMyS3l%_Q<32 z13_>L;HJO2br`%4EXDzfc<_#qfk`fQ+(zS_UKn7w>J6@sqq(50>~l`@7Fw&=7(^MC z+@~t^d+>0$2chX@-vTj^2<$@H@zYUk{KQ0BKI?7nZK#-LwveFMI80{giGn2`3>L!f z%FqTP!@B5iVtu+|yVq^@TemAu+wHa%|=9o?udv1F+qdBKh$HjEHT04}T3JQ$_$%5F14|YP#~yDyLO-&7Cqh$AXBgTRWlAaVRJ%^nkf0pmKOk@~r!L|VQ{S~V z5?IL@(9doqlySe2Ge$&JyG@DbKZ>`zXKWtZj|ILuo3iS~D6hm_833+TBvHe|f zec#EQz{kG&$F+2`{iB5-8{jjr$&Vg-n%ZT}$eyaPJ~^1nU#w}(*uzHWz;9_WK3m*B zV}3kRV2US2|AGrLgMDvnQqduOp88O9LI{93mjB30B7TtSl;P|nD5%EL^#1crp$$nwK9weTZ(bUisM zQLl%lm{!W=wJJjVwbM0J9!DzMtos6q8vqR2x7^sWK7#3zE5PF+^*sucSzO1!IW7T6 zU~DlH9xfBu50W7$?y{S!lF$B$rKOdnfa98ZE{jq61qN3aE8K>A_$J%026yi!%0#CA z!bORhnU~D&8@dZAS!JUNsF3TH!mPJbnU65izo*3vmfg&{wqv z>_fjUf;2*krIDH*L>2t53!^178Kj{NdLvMW2}GqZP#7-(KZw*tjE#zo1xH!sL#TmP z(bv|%4Y2!Pl&8{j!EcdQA(LQRGtetbIDl{ z8Pj3|xu{h@{Y_XR6T%v0gah!jJnkNrCwEUeEWbl}o(hhw?vEb~ZaTUTx48&| z>7j`3AZ=nNoIspBEMT@sLN_D^duT1|Qa>NI_cwV)$t+5VG0xBd;S^KZTQ}bbmev@@ zyi#VqL#Y}}8U^6pH9YB@w1|-5=v|_(WEBu2Vx4sUvj!cklzc zCd4_-a82xuwJx-uNJ zh}g6-h&ye#2Acypg6{Atw?hWcL==4`i-4^ZpMjaw3H3aEFok%G_bN8s3c8(sqTqnq z7W-1e(Y-(%We^re1f`ssKOAs_jEueeGYH_%ykIZJ=Sm$wp*y(GyCT=+WqlXiLt83u zzwJD&|Ipji{?w(J(Q$P+j4jxCW#){lef+E6kC^ewUT;-Y9`f!_h`fOM<>qE{d9&{2 zMeV`as(WXxuD}vYUD@WGU!B`^dJQ=K6N}lj=C?nHl`jOJZAI-_Fi5UEe=^i*85H<)sRItT+CC>yFO*!&g4ly1sVz zb>h7xh7RZ<;!!Wlg>MU+dHcdiET5fhs-KD?Cs!yIQx$Oun1?t>ksVsTZlIG*2W^mk z0Xgr|>P#a5JE@%qB>FJZLo_VxM~9cc+_wFD_XBE`1<66gNiwD=N`{pccu@UVVd-eq z{q>`?d&y!QNp1hZLAj~FR*E3O?*}SDzW0iNb;mEBfb82*qJWJ7M8nSdG4i_z13tKL z8$KSxXjNa@x;#oLIgv40!;*7{D*Uq_QF*1P#@i%MY$w>%FTC6Bd(NrDvUFbDI7~{-9*4fiV0fE##q>B z7|R)Y7&cADpOF4+Gx#a1IKPdG0N7Afj}7nrrcSb(aHsAitZS|-!d5A0t7>4$z4ub- zlEMPT2voF%!dX!eR+Cc;C{Xgx6y`;CdMf_wS;Z;2agg=etCNt}sx5`m4sa&?e@lKw z%`fYDCmq6=P2*P%8lFvuCN^dE%V8_Ue8V^f{+i4lOIp}k=CpgsN{L9|FYH9+KGbuD zhYxx$gHlZmVqa^^8t)}rVHhIjvt0`RG{qCN$Wt7M5AMC4#5KI!gBh7t8b~l0?xmNb zBP6lN@fUVxk}Gk*s-s40cFn+;)kL=%hmt)<@&-d7Gy^wJyTP4sxDP3RG8JPv_uoxC z(WRt($5$?)hZBcP3vnrB-8s1X`9cn?=crGq%E&hvl#Dl{ngziIfo)ogvrOcZ{$T_j zqvbH~4=?(k=jb;{`{!4an1$AfftYS`MdWBBh;yM_PB+XKaE>ty-$hxhxs(iv(yCW( zRq^SgXf%9ADxyvs)HiB7WNQa6KQaQ`K5|rg?Ncw%)E!Ic;Y32ogD&K;3v8hIg_zhn ziC(19ZSv0)Io!P>y)3FkB3Vj(u7`O9fK?m@4dn3iao8AFBAHr`HOG<6X@KZC9OKnz zP-}mNH~zMQFW4cC!A!k5{}v*Mczk`h-)bH4ZCrT9O;uRR%k(#?u2OLj?vyb(&7ATY zYltf*W;8qzj*$&wTAX)O7>G``Ob|neReZIh(SiEqpSsyH713$NCV=#M)VPA7DeHkG z7kRSyujsJZI&HePo>7RnWNK)sY)XEB%PG-(XR&ti4yb2dm@t3B0-}5A=P|U{!M#eNV8c{%B>cm}GG5 zE^ddiBpT>m*krfPz8zbh~#VF z(5KBNERo-l4Em?hzXvyk=SZ2kdeimf?T)jV9$M<3*pjvs>56NffOS$qyV>oZBdL=YN`??>oQe_7t5t%)`)=oLPnGt4GAb6aj{ zy}u%Bs=Fh^2!waodXPqiQ%SQ+(Xr53co6Qo+Hahx>}lD}G3{;@X@1CJ5$ zZDcuR+>prWMmf>i=wet0HSE9(v1%in1T2*OT%2n2pxjVYD8*5AE3h(}hB_CpNF7Zq z&7i9usI3#y9>dv?o|S|umr9$s{Sj;q@##;Ikzp_i5~_WvwG8KBHO4fIqA-{L9z&oH_at;t}VVkR{7*<{RA0#>mCeD$Sy z1x0T6iuhNJMGRz7(i*e_JyJUsw31_nHUkhbbztb-=%5^nF3WbA=czREwtV#Sc?QMR~*K}EKI zgh*$X^7N3p)wE#xAyi~v>&(!=rfB}>hRJ7&2A~j@O~cy&&C!-nEl024vzbuYaC9Z@ z8`iC=?Dm8%{O5ETEAKVkXCxhIt#wZt0ho z+<|g$EEEw>&{LrzSubaSemhbXoD*P?UAW*J$46sjC%= z#MCp+#J%T~+pNYcZyl1GalrHw4FaH#xIGo3N|-eQ-U%s|*# zG*;GcS0?q+YeF8OzLEzIKNMB^1hyk9;sj7q3c4RiR=SU(9k7}Q+a_1j{4db)IFw+m zNC2EshX&mrJE;(m#qExd`rl}RL`!us0&FlACzMNspG6VAi+a;RR+y(Rra{$pFV>II zy3`dBiAoxBC#ShK#-2Ph!s zI&+=aA!nm%T4sb<(RV*?I;E|4Al^5Fz}YZ}uqR?#wXrcail*|OaTqPM@Vsp(1Jbu*yLh=Q2va!lAYETCx8urBy+?R-iRn<|Av0{a|b}_7`d8agrwY zM`SCVdy=$D=2o$Ca>BLT6oxMx9GU7%#LD4`Too4%`{-ycSQY;t#9et@OyB>uej>>h zLTMq&l4hSFdn9|wRzj355wa`NhAc%wwyY^+%UZINC1uIJ@3ODi;&KbI!AJX8&?4&zdYz9jP?>-mnWRanCcF zHcvlaw)CbKW?}6Dy1s5?+w-DJe}@Un!@Y+0*m3Gsgim!Flcf4hh|`^CAvFs`X| zb?H1pR_0uDv=dsRmc`VMPQ$EEZoe=#YWCmRwzH>s88FRYd@!`88B&E*!#2&(SUXv3 z-*NOif+za>1{zOW zb7r9Tqnm>X4)<4)Z@bIxHL1^w++h&5KM+ z4W43`+!r}xENV8Vl&R_E=dG+BuX*372c2uhM)h#|(4gP;?jt51jg#gY`~J+m?{(->MgM87((g{O@^keG zx0pZsVH(<_$!;+&^;_r1hi-hl>zMOk+dcom6++)`x2&A8BX+@%{XQ1b&Yye-4XE(< z$?x%3`rW$ckQG=ZdhhLT6Rrp3zPWxQ_0f}+k`}|t#q)r`yGo`ool*9 zEVI3{pygn*Wn-?_&TDJlt7YkqEeF4!;*-D3e9@$at@66hblkdY_sF`Q{o3ZWyIj{i z+j7gO2YsKv|LN1eO2h7lFEz<+9GQL~)8d6s&;Q~pOtG!h>EErY*Bs1tgr8ieI(N#y z(}ZEc^UgeK@@C_SE!ly))r*EtC|$VUJ$6sRkpDDMndjY3Z5VU%bW-&m)i1|(4S73# z^x@rmcCLApF{SzB5%D+wq}6$Tbo!Tl-8k{Z&vuXb57NjlbkwrEoyf8TlUkHZm*g}y>#C; z;ogUh>dM^@cV8A_>as1-x8IJpFN+%6O?}?`Y;LV9hnr_8hPrz_{W-bbiUlXvr9N2W z|Et%rLB~f{H;ulRHul%VR@a*!uJ7a@+uUYh!;__2dFH%7u+y#iuZ@|HZMy}oU7YCB zDQ8r<>E^zDUX?O?Jt-`G)un2+YA#(i^{JEXkG+XT1tT)rzE2&Uy7)?+>vgYHvFs4} zIksiHZFeXBt{7B4;AF%6*dF`3sUL1@F*N zQ~SQ{RAq}za`}TT14lehAJ}r%fJMPsE#DXJb9q}Pui^aL%|5rjbnuq%0E^Hjl_t3E zm1j=2A8t~$W%Y>4&y!a^?fkKc@4k*Ne%vy%9b9%eYJT?~=2E=45`UOc-N*B$sdT7-mrRt2wbFQaUof~dmr<#p@W7+bUIpG`1 z4tUX{l}nug*}tE@3%pyouUE6omm&3{H-w~4Hg<13a=Y(f)2wPuS9iECTb7@vxVqV5 zqs%z2ROFo`bAPY!s%neEj+Q?@Jg zqGg9pRW+agbUWHA;kUhmYtM!6+udxcs6XXDAN%YwdG))f;*b7a8uw@9j?1YF+c%Bc zw`XF~jGHpMNArw2zxRl;X*RskfQp^sd;GW z&h#mLzCWta_tb&Fn|<&4&aP5-&(4DVHpVe67k<6*thKA>v(IhJLk9Hgm0Huc()Rj! z6+QbNsg&IzZr$_>*NuY9w0m3BrLoie0e@T^oCf^xTp<~;$Yf2t->Ic%o|KW8HnzXm zad6!5fG4ed+i0Hjs1Z=sKQE|Ha%A1|e%{~R%C^YqV7Z}otZ~SWGTY=fgXPZg>+?ph zjc!`*Yirr>^JhBFtv}bkZTFc^4j*@FqVQjP!B*OQeTCMwYCYI;wMXm5_cuy?Lu_)J z)(APB*e+&NYsvC0yC>am7n$UKWxj!IZnrskv_i51q_G?HaBifMJ_+ne7B z?-OhF4pQA*y5QuA+IQC7E4&e9TYBZMW*_@aoMAP0*UZpD^P@Srns?FJ(q_i<4m=Gj z+a$S^R2tFcbh%4SI@GZ{bw=8t>^i##^Nw_$r|7wL?4Wt=BaIJr9Tq=mT%&~7Gdne& zTz>D1CZ6`q_S-*Lk)IWqwrrofYdb0 z$vs{rzv{~?K2=>?R?d$I-E3jqJWlb|-ri%&nYge>`=)c>2Ud9Y@S3r7SYB;Osg|nr zus+70iw4vRt84$&=je_2vhAW@On*#r&_$B}bn=i9)!h|$ z%)Pp9n|OA^@7oJXw@7fQe!Is(*D{hpM%A0Tx_xsz(|20)xG(QY#pjLs8({D4yEQ!~ z+PGT4cee-8wQE)@yXMBSigkk?jwyW8GE_1zExX<}*F($A9O^sI+}!%o4$ET&cRJ26 ztv+s#N3Vvy*M~N&SYzgzfR^1|mN-?&i&M}0;ZkjW$DR`cM?6XDIX`^iy~dwAySrS7 ze?PZzdY4WoCygq*bwhG#K|Xn9~$o7|;sN;Mm1;ofYmeN?ZND{gFF zw&K*+qxH{}$y>g1dGZRQa+zoRZ8Dw9Eij*d@nTH=LquWHVlSC5+jq)%dFv(bLdFKf z^;x}j^NXB+xCMJXO)fRK_UX*0d@rMrQscMX4H)D%aX{Lzy|K6d zn43q8>Nfdevg^5n8@lfMz98()pKlolKTQtHIX?T7w{!K@E9WLZ@@!|-DE>zGM_s;- z_?2^EcSgQg9i8Qu%3y7GrCBn7yo*(U^s;sQ=`>Jf`=fm@I)2-$WtrOVsv!u?}|BkwMt(o$o zs>O!Dh$-{t7WQ&7Z8v}6vQ3LqhFV;|e%`4`a^8Y^5#Q6p_6A*5cX*dP-g2-eq1A`& zFY4B*J2=g^TV{W%bUW=|?8rboh()oLx z4<@}=w|J}ieZS?WLl1L}{#H6Rb7fw&qgIy3zHS}1`rFxVRX>(`-zO^aRG+@5e9Vol zuk|z;nvgu?ZN`bnK%!WlQyEUUp;xo^RtEzgo zTM=a2J1_UKOY8p{e|=~*B&YA-t!__vkc^xy}5;?4y4O+Iv^ z)6nUzT|-wmR!AOGdW7A8yW#dTgCC{LcvfbWnPcm}Z9A<%XK5BVb}6;0L21*J=3AyU zLC%}A9ZrwhP$Rh7v+zUh$1bV&=t=Xfae1MiZ-kv`Hudknq)LbTKT7+#?V**4^X(6% zGs|17zk4pvu5r+n2mf}Ruv^|}PRtffqg&-ILhDwT|IyKDSoQhd4Ld9u*lOJ5!C|jo z4oOV0M4a6Z7&&^SCGtSu8LqEUNR3P0RvDuDYCcqd|A4#W?q=7?y4mNFPjt+JwGGZ6 z4!-R0cHEeNgXNcQjNKAEL%_v-{(3y$=1U zHT%u^74uEZ2L9W3Yj15?@4gEjTKPk$wd(d-BEw4!q-Q)fQe7`w=kK;UN@18&IzA3a?dVBWq1{YVwpB_FY zzUL=-U(@Ty%N4dM)2l{V`Sw~gA?3iV2h&=f8k$)4Nb2gHL!K;h^jPNBW_*K`?&`t) zV$O~a$rJp_o`*Qvp(e?$>{d9 zQe(4!hwsda>D8g`-`FnG)X|4>q!(7zxp?=p$|^V^(d_w`Gba!39A8I1^x~1vqdzAP z-;_Fbx2t?}oyybqt?a+!3%ZS?Xk35Q{psG9-w&-H*f(|Jx!ECw1=V}4a*NFVd8dDt zL+#dSm%1-`+i;dc@Q3%cGUxRT{uve?^=ZqbPgh;vZ~yu3?7`DrlQs7`jEdW1Z&Ib4 zZTC;@U!*9d_abv&mF_<&)O+gGYE>@3{_pY5Df2R1R;Syqd3x+#=8wYdE85pw-ZkJy zrq|h+mR61}BMT4xDDbZ<-y9pY>3003Ubg?9Uhdf8`QGbZH3wb^Z{}Auv{aMqYT4Jq zJDSBgmhEl!?B-;}!}Qh;KGv7ceyKLlvg5!Q+rE$XtPMB$+Ap%lq?EAzcc*@GyuJBT zOx4!LzGfZPymuJ+!{=~TtB(KnJUJQ}(WBDl&mHG)Zn+@K|Mt>z<`s5VHyxK$HY4lM zu!E~-d^)^kfXmU>;jhltSmE63@rAJY{jMBoI544>an#33U2~>gt7v((%k%Pc>f|{- zJZ9}~XX`#GK6Xy>j;Af&Bn?Supq}`*+nd!7mzfl}Em+>A{q4C!a<;d&OKVcKQ|B|= zY?@VaPsm!mV)fqxLFKKUS&z8VrC}HMuVHT10bk8yT)G??o0MqdpFcdj=aQV-C&zT@ zUvo^-ffV<}3x=*6QOEXO?{e;CCWV!YYPzfFNW)|6J&#rM-s)AU&YrlVCKK9yD;>Ep zwUzURS<7pNSHG||ZO*8Nx9Tg0?^zfB%=1>Cj+T38<~qLnSyXL8j{W;x+x%=JLqhiN zII+=d@0MPh-F9aG2szyDZ8P^??v|_D?x=bx=FXZEKVn`@>l=|e-E~W1JI_}i%GU7r zd)EEn#P|nmmi(y@7qhEF^@K`2|DAq#`QntPzki#ad35Js=!0hO+t>wHE^qs0d-=zH zNu@%}E-ctLy|?{>q3*kSX&ja>&V10Yx@FDj$BjN2`?lZdBY&QjTQ>7jkL0cI|F*%>obJQvCS~VKXn09HPv1LR1 zjN}n62{9&BP7k~-{nYnGq)CUji8Brl32uAx%$dj^vxl8qyywf_w5(l)dwe#%YkT`k zZaFuPq_`11KlR?Y`Kl)1!5rAFI~ZW9@G?pK?epwdsIX0UkA4R*zXU?@ZH{>34R`n{=;P)oX)xJN)*x4>t|0SfRgaU&G{Q zE|XW;{#+O|N>T^0tan2%?R+>TG;FZHg=4$irpI~1u|)cxbwg=3CwzoK*xy1(!9=wp3j zd^%2AmoJ^&uixpdO%JXc;47Opc;}tIPmj&%v#xcE{y<=!D?o&nsstEw>WjZf9jFMzb{t*%5`}mU*9(B{G2P<7w-I=a&t*a zVfqf+bf+cbzprZ&a(n;S>tT`A63_oMdD#?0=$^Yi_!n=N zo!C~j=I`<;V^Vgu%IewdLh~neGA>nDtZ%fq#>|bc16I}a%YAL*;(GDF3j<1-zN`9k z>Bs?DFCTh6`H>fIdHz%HDO2Abdr}zsuAc4o@sSfA=I${49XjY)wLhb-40y5oRbJy# zc9POZLIY#vu61_=4DrnfELT^)^sbBh#9>BvqcD6QW zMaPqSPnN4}yg~M>XWrJhh}cf(QmBdHZS%jr?zni!y4Sx} zc3TtCE_(658Ooo(%UxV}#&bo$fkh)5Og^Ff+B#=%^!&~fhV~yh{(g6-=Jnd`oogMe zy!vY1Y|~)bm7d01A6IL4a=J@Pqk^~@6F;rV7{0l2J5`PFEiRE zdI4Uk>{b8D_E9=U8zOO9V#bg-xf6@TskMH_y7gMMf)9yX+yCywyXxv8FZ(|V>~b^K z#X7K5{nF0$|CvF6jqQyD++&fZkGV&55y zDZ{(>>DqD4UguxApKs3bKRhAuu<6OdgZq|T`Fw0>c%_K>2da5b@BTUBqFKQH+)`UB zE*TcLG@@cH#|u4tJV&9l)2GeU=V{|A@1I;Vpl+hw!e?cs1$9VyIk2;|{LM+#YgJiZ zCdPB)_tCYhB|Oupe_q}A-fhF)_nu$O#kGk=TgAE){Y&$M@*IB%pf??b^qNo?}oPEAe@JlQAv`@vzq zO+Fp!-O#Rk^sr;<=Z`Nw`kK1!N_gGK%{LwdT-b27N6y6bHAcSAKM!iMC3Jr1)#Ygi zZCZ?IIy&Q9$o{+W+h;D+bX$;m)vICaQse6mu-uR{*ki1fah1A(Q^$O}KEAM7r`!Ef z>v+DKx_9*VccivS4^Kq{7!2au_%@t1qZHDG8{?X6;cUbzP`eQ$Qx9rf^ zxozc^0e=5RTkdpzRffsvr$K9res)l{jjm@sG^;3HjG+u?A^MxOGmbS>2mvz zqR%F;{QTtZNnZ+TjVbs1NaoNrQqwbUXL?LM;&?kWt6|3)=A{}`tmQDd?8kczzkG2z z*rV~z(C*TJQ|$|eZQr<3Y7$;Q`UA3;+)!!$X}85Es+2C?{&xwzeVYHp1C^EBU1 zZBwDw&}KOWFGG?Sok}m&t4;I4n|fVby{c*Zkmk>%HojxKkIFin;+D6%eQS^GhE9WB z_FP)E=8?=hqo_swQr-WG_TAt4yL6`e z{xOSVOiY)*nlL(GgxNfYnzNNbMbcH>k|)t4xM#?X^SWWrWp>*b9pQPcXeXCD4OI@71 z$bPl^*WOc(d`o{nbDC;*#Dr$w=4Tz2-k7~a`cd9MI`(nK`$V7ermu}UH*zpl`PVCy znWPoW`;zy)PQs(nQEHXukfW+sqo5)Cua-AWX!9yH=gX$LzjuG=-szFWkvlb4-LKcT zj_=&{4)+4C8LNj6u&90GdCr@8hZbkPtvAQb)UK}ShCvS<6B2F0r-fz*ZLi`QuvKmp zb@;G_L$#ncg?>)&#*a91T_&?}432+0w(;wkzTWNHD}wB!H*7Uu*2Xi}IAyrTBCpz; z3GX|nXKXS%d8pJK$%pc0OPc>TtwHaV&IioB{EaKVQ(CXiO?ujPV^g1X>%H>-)Zb(B zU#$kc?NptPwnz=T{6({H_K1PznM1ZXms@nC`3U=3%gVO?_o-dm-|K$I%zy6`)X&AQ z<#wx0&T(Zr4n0%QZIAmA&u{xARYrQZ?v-@+`{djABR_TzZ)H7F9+oyuHptf1v0&j! z&r;P6Hk#F1GT>yo|I(AzlcrX(i0vMEea&#i)LB*USPjjb9b9iBIw^Cc)|?0R{hGXM zKezOyKDmEo>GBBoQ)|j~b9vR#x%0hahZ8q#9Q;Pcr`5>~D}UJx zs<~+Tthtu=k7m7iWb(iy9l-JCD#DS#{k@?bdas zTU6`NuH~$4Ru$d3v%iboDFrpR!P|EQs3|OnuLRLJFjvk3m#ru^=;_ruFu*hTpm5WTc3@cVkL3EhO6GV zPv}0+IlF$wwU*`9E-;xlYGfbprsLkVAKA(DwEu%{m+q{q5%py4(wUowhP&+gow~mI z%%LM3B7@(Y$d%a|T{vAeY+#innQfIP!LhHtRS0hK*;=`AcyvO~PW4?}gTLloP00@b zIM39|t0j_a7QEi(v!q?Jt;+Y2*QU^gd21FozEmf!UM;hA`$KJCdHc$nU7k1SVXOH* zg-H(8(w!Qg?DqDEQIGk9mZ;CYJF)~deXo&O$l#nA*$?W(8OW!T0~&``h zGq)Kpm~}5?*2DX^2c?~u>>QLIcq2W1-L9>%HxrBwZ*dNLnNfA|(Y#e*);G=?H>%(L z)ch(>^D3RF_xnzf$%#sTp5NI2d~|20ZeAw`M(oJi<$UGrn0V(3jTYBC)TaB$ELr5X z^sGByzT^)zQ>UpazO6ET#mgZ>CC3g8+Bo&qqI*}ezu%kR>PM}k`_3*~)l+k!*~~ph zeyHbVZ8~dze9-c_wTgO&**e3>#Sv;D)-CY|M|{~ zz1AC}uJx~5M|L@T#!!2w$lMhp*P6T^wWn#z+EA@FYaG`fZ<(G%<$u(u3MO16w z$9~zEz&FiL)LOaIIcmLp*_|3`M(^s?tnG1P54tgLz=~IX^SkeM{&KqFwOaY17rr0$ z+_l>~#pBBAT{n7~2DO+!+qgkYT)XY(*1LZy_b2;mLc2~&hQuaz8PRa}i*o_;?psIx z+R)hZVu6Ea?Ab0!`4xWL504u+dt3Nz`^RPL-rrYtNqpca_d1I@PkvEOJvH&l=2jUs z_FpP@)aK)7v(Sv$U#r$#yf&zcY|^>FW7g>(oYtMV*Ui0sy0=ex|2m7CFW)=!-iy?< zDHVK=uRQv3@wlb&uL?5`fpR2rdR83uC`-TZo|NvBVzYW9^P|v z4b8Q6=J_+0re&@DkyY?MW0&RE0axerZq_VsmtxO;k8t^=No{Ub^++1i&eS-%oRMq6 z*GFzMH#}bSIuhwe>fC7 zrT601f9uUWw#M|$gxm+Sj!oOr{GCbBgh4F^yPf*|FyNwDnMr58Pu2c+=+~`^xoK@C z_kUP)@89le<(r?ao8NZa2h*vQT910S`TdG>&l4)n_y2HjXs6j3RcFQaJQVtKk^fpR z;~XDPw+r$?wYOcLZFTO={m}NSJf&Z!_O{I)c+D!|&8Ls9d#h)fZtNA>Vn=!P6A}R)E1@uD*B*yv`rgc~scNl$S5$G_*p|EBOlZBR(wWB#Zxro%CU4?XShdaj-4_zJ z=RXadetOBf%3hylY)s0n_V3HM(%CyoNAzm2;k^5q-ccu)d3~LiJMTo3dNU#%9V}cr z_I7)l-{n-Ov-8^n(XVHC^{Qq+??2xL7U}0~HbtL$8kHLUs;b{?bYkb??ZzLD794wC z)30sxYEQ4{GYbBzUb^1ustvOG8~2S3oZjNsxeC>%U+^7`c3B-)$CiCjPIlUIcgVQ7 z4KE6>eIIvk;oWWVbHgI<2THADqm4Gl*Q)n^o8y5^UPC|qvAp#@!SX|LQRSHf-Y>Z} zZD_B;YX$296LOC~{&=X(-n&KPPCZhEXPkO6Rn{)_jwJrVq1Fq_eYRXayGgX?z?7Z~ zP9#^nTmPWSY0Hd$8+>)PkJg1BrI~Tqn&QSzER_Bx}{v z+@JZ)_UC^+=93fI$8qqj4o_>!>Sn2B8HtZInU%hcOK380+lE`&!5ORXE)M>ttQ?u9 zY|?n9yWFfr?vrfaWX}qLy^<~l|L59!qu-|M6@xomtP?!<(Kd(6o{?#3or6;SwxT!l z$0VfBO1rtPz0vD3K7TaPJ(FIq?a*Ic-uza}FvnjL%UC+M4KwX?ykcawxImiq|HlQPuL3`ds~@3GV836TLW;@T7a+R|R9rB@pf#_`ZbL1&!KT^s(Y)urQ9SZ8@Raj{W_%y2hd1mmbYMC?7x6#7ccmy=IHNzN%Jyg+o6^pW6E7_LGA3 zud7chvNIod%iH+%o4f0ck8V8oz;}O9#RTK^y<#WDS3Db>m2SAri@ueJI@oQ1{wu3y?UewEmyQ!kZW z)1xO}U9$Uc>463vPJD`LP_;qT%h!g7fA?B+bkV*>rWdSQCm5w`*4Vo)vwkm2bW3kE zQ=ZtrZp+NG&JWe23e|2+Mwi-_lyB{~X!JMR3yS)AFGu%Zd1KTJv-Vw_TiMsB|Lfyi z2a6vCdEL!Mn^u>3eEsXWK%Tqrjr;4C&pocysCm@l+}-|{XPlK(|6)GDsbQ7NgCEVC zvut?q((0RkR(G}OH`Vsr+^1VMUQ)cNtv1c7x3r0S=CgGBajgcWE)H^OdHmso|o@Ar>t#Px3AAV>qc&h-#SIL%p=IO zrt;>b#Epu&-d7e`53k{J=Sh6?rqR!KB=-+_JZeU)!-5({r9UYWzg%~!WOTUmK#xYT z(jL`H-D|gM>8Gl-XDDJM6K=F{j|F~wZRi~q zdi-gkMK_bo2NeqJn-6Q%yWHd}Lq=5?aBrXIUjOJbLFWRm^?o(NcG7}M3H5WgYNpjH zbKfy8dhE0@evX|Zqr$p2vFIUN=@I-c>G`(K%lfvriZV7b&x>|?>-5!l>##GKF9s^z zyG&emF6_t-@9yJ1uT@Ofog~PWn<;QSaB}`OBOK9s8(B@M-578+Ih#a>thQ zQBN1yj(xtPUh?fix%=TtYgQHQ_-U6sIxBMArGHz`pU660I%aUK!)F~r>xEq&@uz&x zOZ#Ii=GQrQD8}Mh%LlPN3d$#UTEBD1qwBA_nYGX~H$L5@$Dp<6>b^SKW=Y>G*Hs>!u#MWXA6du^?9?M|f`(dV6e{cZbj$j>bwc3lbk^Rs5z6&)JaKKp(4&uht3 zXOHwZnQ7;gyM1s_gC_?|TN){QTBZFe9Ma~`{>!7+XZ$OjwZiVKAr40*qEc2Rl2wNE zoF3%gqPOoz{}w&`{YLwC7(dP0TPq+{N~G3mxx`Ve@iA`UF+LcHNUfdF2PgWE3$|uf zNa$_7?O}`*tmvWR zf>9$TS;OZ$P8=V^G+WC{l}>WhY^jg-ljzsbl2<8GUhJOwjMkT}GWf-;$KTn3ABxeM^#&Y}=Iev;9KShq8 zBF9gW{hC)c7fC{1i2QiUvPLgP+3GD?E&G zg~C{a+oHj3(cq_O@KcyY8u}!Dio^*&M&g8@BXPpbkvQS@NYJR!c14L3ewM@uKTP6; zpC)l)8pR5w3O|T5loFIiinlz3iY4@Eh$VDwRxBkFfGGi(5`Zbezr92PKbsVOHYxmU zQux^*nMojpNg#DeAZ1A)TS=JIgML=%_!1dB4-$X`GJph9fCO@Y1d@ORvVa8AfCTb@ z1QLM+GJynAfdq1a1d@RSvVjEBfduk_1QLP-GJ*uB1Xg$@65KJkwOolq` z$1^B*`90S^@0w0Mfw zkus>zamRxptU|XRNIuRBQ2f(rKP+`P#{)xH1#UkuXZZc02+8hGxL(QbPf*e1jt4_n z1;ztR8t_2Lkc|fyqA5H)*J(0_unLR^%AtS`SN$U2z78dFm@QtX zZ#nF%%W=V+9T&dR6FIZxE^t2sCJ(rvluVBkPylfED~2!&-G27|ik!vki`P|hP$ckZ zzjhWCxcyXpT+XVGv)a#-x64JShs#0U0R0E5<8=SwTmP0b)pUV>e@f3G*Vl8%v7n4S zp2<>$bKVd^pCJdC1;hhbJUdSTOPAw1IE4$7NbYgMtOf**6EJqb1tnn$7jC^ABye(E zFlXZf#T++2_EC9(bYpUmgAjap$kXEpD&*Yl7oiR=r|RHx{W`c@uMRHfTL+gjQW9bN zn*tOqI35b1x~%@DfI7GW6MuF;1H}txoD@v0U0_^<^fJ6yp|3Sn=*cY=unEA8M+Cj4 z0%VgAClF7v;{>IB1!l*rI4Q^yfh&(I7%nbwoQNVF#|hXo8y9BFY&@_?;Eof+z6HiZ z)xQ<2`Zug+6j1$EU>;53;yEuVM5v1^i1-4>2};K7IDr5~fpxQNT%fS!ju%5<1&$Xe z^x!Jft`OA%qDNzfIixiD`-`u77w+tXf{1>h{RViCf>3nM_KR?KLqYLUg+4D;03lZZ6<0th zT>)%V0aa!NNU0UTUln@%Rl)b%gF*!Us-XC*f~D^$>4$vzt3m|+ssOn%oA)%1?EDS^>)=53`2yj4j=%1oZn9uPFpexCc! zN{09e{QDEJ1+*Vi8Y)jKi6n(9&nX#}D{%WMKC0B`qe?iRq}1c3N>a+^#3ceRRZ{w9 zB}?B7yi|#KDQlc7L5#vZPDIc_H)nrh zD5}8Y1eh|ON0e|HP^bMo_x+R%@f5oKu-L-CKdYWg#sgGym6%Ag#|4q3aK=T1I@bqLLJ2 zah%`~B0Ww>>6$ApDuy5n8y6Lvg2(fTilxJVex?FquL4T1!UAqqd{ji5!i`V(aioIs zEZ_qP18W?qfaoLk`bgW?+U7La1P{p2bT?)Ga77Xr5*PA)?G zf$HkCpXa=;VrtMrx1X*1Q85f$=ZYp36vMguKSPuSZa<~dQ0eP5RC@Xh72orTDiQP< zDkxh+e*&sY_b0yk3l*c)7C0WHIF0iuT-HIipOpGJ$1|hN7P$SOxPadus@dB16P^g_ zX%$qdRY3SvK=oC)uFanRNJ*a)FT=5g#jB?7A5jAdrsD-`+?Ttc&R~( zz>1d|h`$;rznT$IqkFqB>t)4BO^$4G#YxQ+m<7g3ioeXbQtRuO)le8$>*<-*WNE;O zO9VZ$nmV7TX7OVfZ)&~siE6(3X0-_C6V;TyS*@>cR_p1S)qMG}S_ECQn$k6+%Ov&p zi_mTS%$wZ#K?Gg1n$lmW_4OBOV8?3EVW{3@U%C`RXpz zjEX~uyvDjyR83CrmE63kCN*YqtEif~TtjV$q^gO2nls6XKvLCER)$FmC@UQ#zNA#m zP+TE`#0m(hxZ+O6x-^3%X{bW0vG{^Lse(*{J2^0{P-tB2;*1)28k;;|Hp|At_Yw`Y z2!{dH)L}ri{$W71-eEvB&{^*Ih;SHCLy=Pri=2{v2h>!9B^T^C5giIwKG29jS~b8$ zaX!!hBc<|zhA$b_Fg#X>al=a58X~bM$q^dDGD*_bkYjXA($D}sr9l!g3TKcQQY!>V z79glKLy&-U>a-ur>^KLHhAHt1-F|2s{{4YuvXYwyQ*YLw(GYP8XFM2jvA}q!O0-75 z60OmzJZp$3g&U8yiYhQ3LMw56K(E1$4<_5}`0%YnYZy{1FdkB-#dv^pQh0EwTBCPU zv4&hK!Wkz<8X+_;Hc8L`&!qDJDPnWCU#J}%cCse*TUKr(q`Np-6UvQ)$C7mvZ&PVV zrJEC^2r>>0CF9T-l5uGG$~ZJ4$T&2Vj6=h^4!Y#`=PTpTFePMx2MM9Yxc`8tgB~Pg z5y9Di7}70t`>DwiNU=`)dCFonOl4T$_7m*|{{30U221)6QKoSI{vsR`MCJzU`%TfG z`1Wts^nu=EZjxiqheVXZ1qppuE7TS?Cg?w9cPixDfN#R1F)@=13lsVl+>Fl+ilNU! zgQ93X0)=Ns3KU))P@qVeo(Cx5sTi`-0ILLM_@F;aWc{$xMDH=BPZ|`&mm3sAtc8vg zsVf60xLAXV6t1^ZpvVOy+@KhCEjTFlel_wwDd~R2nGU_n*ZIOp1jz|9YN2zTA<+rK zz`JvaAUi=A*t!$+CvL5_bFt#US9yXwYqYsh=)Oc~I}8v*;uF*|zAiaVOz~Z441|>f z215cAgaMW?++$h<2?{bQqQ|tM`ab#)?=dYxg&&zL(PP?BjUQp)J*Gvd@*@oNm1Yrn zgYz_KW;pAo==&nDLgKK7E5OKIu4GNZn&bGYW6<|SSc8D;8`v14HW-?xiDevj9I(Zn zzj@nPvLyh0iFHu5WK0vUKOTKagrliwH~=LD4EmR)AnQNelh6x1r=u6l$Y(G0 zh(#d}n9LGI=up8Wge3jKibJQnk#nxx-HlnI2#o;*uml6#Hmt=!3JVh0DM4us&oAf& zEeAL}T<%h!8BK@4L8m?aB!*1=B*5vAODVw%TnN2Geo3h5qIbwI2`mb|Lq;{Q5A>ht7Dv%9 zh<|17;Vp(CAesTGEGA`LML~v!lvvkFK`?<}GMLz%fwyfS`X9AjO6bl&PyABW#9s^( zN~)-V%t)co5$?m;)um!k0x7wZ7f(e}eU$-XDv)ZVKp)UM`Y?I32B`?r1BsNn4Fdg% zM;1GcOF{UH{*mCtf(0s?gne*FQ-nJskQFjT@T9C;fQ$Po6f4nZnKVVABfNwMIuVw0 zQkXCJ z#P$saDY(BGQ!okHlM=EA-fi4}lOyzBXeVZ&VG?44 zN2`ogRw22FIMJa7!r}${$7v&uX(NS~uM`!1Sq!|CcvB+NS8t+r!LnCIN-#2@jp*Z$ zuVi`>PxLjIwYmGV2qI5ZGNM*(GJTmRLPz4OC-g-B1`LxMod{A-iHzP&m9chHi@Px? z#mGo0Mutla6 z9cFzLD54=MCHfHW z+#!Mj6V=zL<(ABl1`~Y^O4 z#h`Fs(+-`IEgv~=)umjp16L(_eYE3)$2-9Qhplulkcuj23d0s>LdSuwgtEQZSaIOJ z1u7S#-bvf9Neue0p?C4t1@|Bq!+}i#&T2#wAZKxPRvbuSm%A^C!N28nK~~Nx$g(i- zrqXgTs;zROj>MCm9H=pSN(aj|_DnA4U1Y^3ZbA=odVL^gtq)j%A>vW)&LzewKu!vt z5Exh#P=O(<06AU-P!Zxy{^iX2Lg)z5Wns2e8!JLk59X1=#Hjg#=~{6LGj!fdA}6aH z?q0?$2ZW9Tb>vGTH+1F;y$ka`4-8sbBQyr6ITKm}44oP&`juy}l;cs$l8bNyn55WG z4Te8Zb{($8_fjwPI1zT8vDF(Y7ZMD3`KN<{To=LJxtPkcz@3Yj#Q_HF@xitP$GRYl^!y1k5zfp1w% z!Eke-`x33XP#92MDDheol6A6I0@|-hyFBF z7US(1hlHsjoc19maAbfODD{JH9F=`}m-?}(oX{f%B(MY&RQ{={377h5P<$)=V%XYA zXkR<@r@`JvmJ{3~hS?zyIxuvFU%{&Ilj^tvt5&GMfYg^qDifpRucR+tApUmj-Ufzt zG$_8k4O`?194RGr!5UJ=8|rP?evgl&LMcYczu3kO&oN4aCI4bOKh6=OWJJb7$AK>S zD_P>_5(1;-UGm4?c!Fb~$S`rOqXr0G1+WJQ*!S_MaVSN&r5GIufh`K?Tp(Vi2@F{F z@xj1U+Jz1b6#ZeI#4dX}-USFKUv{iy3hP2+p!WcjtUUnM03r89a1U}uu`M(PkVum_ zK>3>*Ah2>l$By&_d`jM%0ZQgLl+fsCNf0r!qtP*wAvOHTs)svdVhDhg^o{jQ&PPQt-mAMBw zLqLTFMKeYfi!qW3k$A(QI}7yA(-U(%?m`~6p%WY(l;j{}2Dv1*wBu9rQi;JORWz4W z8Q_vCeJ+W8?)ZVyPPak_hCay%265C8KNUH^2(EI}pyJIkRbm`qQ~^(fY^TQZa0XpT z1w+OAbfTIuSr#}##2c;{LrJ-qBnIqlhgdLii9;_K9?A|?v6&uc{=@EbLc^p*BK=EtbHWEmpLG?f0MP4;iN)K%Tp8K3J(k-@NhL<(*-X)9i~c50C_M4F?8K(sMC@G0w*tZ z`V#M&r&bgXObN=8bt z0U+l{(TH(p9Wm>JUZ#QiI^D~PJpg%N(5|P1jss;Zjjmb5)e)+f5nZ>2=(@2_ADaHb z36JV`M9adBSBxsWhVW+ScLuBQ8nV#f#vn!&UPEXyU@%yP*YK{wYs9F+7kk+e3?+*k zvOv)2U!AAnU6$7{L|o{>MC8~23KSnY34y59xjPrbqy@)-t2!j9893Fc(Lck zZ)Jx@jB31wzF<%TYXF^5&s)f$VHOQSk9w%AlQ_T{Ko&5{td*qx!&{g}|L?}20nBWKoy~QwU7t@odQBU?dxCe*`-WurMe~`riD3*O+aVo>> z777$!?+EmKZEh4gQq*RJ)QPoOQOp}r%Xsn?^nEdU8>KEsZNRP78TEX3BGC7>y;bNq zka|3HF8y1@kvRpPq5=3ea4IllYl9mUvv?316jkv@pbVsLsQ06P)X(93FPubQ*3wyl z(GgEQAPCqZPv;}sr0oHJwy$l=K35|hX79j5@ z<`<_^HZp+Y8wW8~0mM^}^d*)ws3e6US0ug|L^uzCOpqv|hAr~+`VwE64|<#!W18BD zK&DHWrs?!0zB>`<`(lh~Y9~S}F|-qbTE=@!i?9=c8qLfGa0eLr)8LrqyYYa&ukD&b z=OyYqfD~P-WGFB3Jr97suO(=LW1z>hq4NN!Ww4mxo*zUw4QPK@Xu_1GZsZR9RfV2ehf(ZQ;N z^fJ~Z_pBKl^iw=AFw9l z1DcwIpVEnoCkzm5y@_c$86Z-Q*Ny-^7hph!-Ymish?0AFcO^z z@l`*e?~Aa)B~GMdD$!Rzp}een78x~_cefKk{e)Uf^Atm8kchxqPYOGQvWp(z+D=fD>YshmX?@??Y%iX!e z*!LhluQ2MdC#!Cq7i?a6WM6E8Dsc8C_N)X0+~z}PUm2Y4;O1J`+f`@`)E!Au8Eemg zbS@dJSCH{M&R6IK%$PDD^ynSjDbWjNzGcs$GTyr;*c?{qUx27@@bHr9Uxbf-6@nLb zC(t_tFIFW{czLf7uuH7qc&T(k%vp7MEzvD;W)JM?Dl`T-bxcMckZpEKlwod71%?Qj zxIr;n1ww-&!W`&`z`k_?!)!wE*$T$aw1Q*6BZUM8bUHd1;PeEKlqka8_Gn>A@gAA} z)j#MXpnQ>GZcX(vzPH|^r)YmHp(8}@eurMha*ira_;{ay0tFH#9wB4+yWpVcoW|M} zD5>1Y;4n2G4BAOdXbfjgnLb`vm9((^sib@!lSgF&FCy4U_0`p#Ont zUnfHlArp6|W~4uYW1v=dGN_sBU?7*}b7H`bvI1i$_It%~kn0~pMs+tm9lV^morur$ zBNyT9F{<>zY7{^jI(v*@LG-u-Bf{BZgn`Osazkg2(T8A;;(fLg>-Yqv+@0Rnfcgw}7cgtyZ zjjdPdeR(->YpER9#;FMLu7u0Q;N5Z}PQgQvIGs|N9~a9hP`rt_LWH|FrNq`1#w0dn z)vbhs&nu5gIJQm|I5!r1okC!Mow5U?faVg7l;@q?X+o}qU0ZQ1#81N#4iV$Y$RA9)tV$O_>&0d8DMble_0eY)|>OK-5z!^0K zC}hw(dbJa9s^v4xM7Vnsi4pMeIubHr*_$Her%KX>aE=sVKCqjd{U|7pQK z#w|Kc3wG@j>>KQFEmaWd`+#1<#`q5p*1kjS!zc{$aRu)axe77(xPsQ7C=BXP6ueot zLJa*0v3Vu44oeKrqCb3Z-;pZB(7qR2o#F(oG*InULTOt{3}Mj=z52I;tUx%Eno^AV zcd;8Pz%*F@F7}4y#vn%hyVwntV8GRSIx!b}!}7o&LjAkg{1h-4tbZ$c*T0ow)W5MU zYw-k0yij%GK$aEUaS)^aU2J{|aWJqzQ0lJ&l(1Cbo-vhTtOAsD{aa~3{DQ4qJ&dJF z{rb0(_i_N6u?oy-l(Y&4{8Dvp8&dKvcPkl=EjR{B1*0^mf>H8T!6?OG|4O17hoJ-2 zZ=K=KTkE1^7863pfr!Kj2D~EC!9Xaut2?H_7nlzQW~m}L21-wdO?>q*@V@C2TkQ&s zfhgu74hC=fRFSg=oO2wu+7%iD5y%4uP|@g&2i`Y*Vyj)jG08$VLix97J#% zK<5JCo-v36tQ2%H@SUes%+`a@aUe?rz+m9uE%*epHw{#L-3Fv8G0xi-JKz#fCABG{ zpHacC32GptgrU%pH5GTaW5hQ?hm2lo5UX5mw<|`6l|K|HkO%SLDa>|-(4gqG2eHc4 z8B63=A@0D4vGyP~z=UhDjs}!e;K3J|&m1p??q5Z(JyZsD|0>?Pe{3QwbYCLXe?0uz zR=>pqL|=b|U5WW<=Ed;-m8zMIisCviu>xj~dgA?yKC740cw7FWFN;u#R}=OQA!8|% zN`?+LBjyz$G4w~^=S$SHYJ>VCY(~rr19Rk8;Gv@?>>c6&`v!CxR+F_1XBx&P!2eSW z|NmAsu_ta(yj6|egiFQ{NQ`vR!77Iv9kZ7BpQ6*>fLAkn87vHjilu5;)^JbuYGy4V zGzNNWM9tb7VU2cJ*6_g~La|g$Z-5YMVx7LkdjkY}84Dc;S`S4`g>^9S-T=W~#6n{r zWF0b=!3_{KS>I%FV# zBA{R~Ko2Snxr&H$P-&RegU}f00>6e;;4cmg92rJ;Z^4l{4LN?G!I~l}X2j}%8!vOt zL1?^$CgVg%40^ROE5?hZL=-6Ay8{}g1}``$YNts9XAdY)_^1H|iYzO*BgK$+p+S*@ zvk)nk4_L{nM?=mP^S~g&sz*Z(&H@HFSfG<3c-wwy81gQ39LV`rf}!LT2rCZc7%_Jo z#IXI+kkbNy0SGlUKroS}1_&%Hc+9B`F&8>8gf;^xmj0+XmEmOt1&W-m;Et3Sn*!KP zxOi=+F}Nw9A*%`=7_^yD=)jOu0}vSS@uGSgJ~BZChAcCxANTj9SLC zD2u)?ymgMuiJTFDz62DRH9%0iaBR>EJl~)f3?|l)L2vQAF9`jQ+Mo&@D$42?wV|Z; z3<(;&hkGP?!QiFPf!{Ib^n-4l)ec6X(NQZ0)CP=%N(ks(d;pOT2JH_ZGzOxWfsUwu z^cW$)QA2n6;*5u0=++j{hj=Oi(U-M9lh7~;O9q%MyRG7m2xeQTfx5K?^cEhAJc1~~ zH9Y8&Wccw3I-L7-IwDz3aL-Ik@muH!k!m$y0M1QiM5x@OtCw{T@S(SG-{cV?5iY}* zfp0EU?$DnlsiL_5f!+rFBhDD;1v3v*8IhcP;0~e)q8xN_He29^{>1khP(g%)y)q{t z@8|`=3)f(xckuVn3p~A{7i5+IxjuS_%!-Wa#lslAL-Lf~1vu!ZG5Wk}z3fKyC zenS^eq7UKUfV+!hUs-_%FtNA=YKa|db;Q0h2^_}dgF%GZkXYOj42Hz-2m{}~gnea& zjstbiB)WXQWHKPBMuIPVXD1d3(bI4y770_i78(>`f_Q*P3>~~h_tEp610)RT6dD6@ zh6M~j4B5#MY;mc;@I8qulQ5-d!9h{fLjqzG3KZtW6e!|m#ogN&@+mYZniNY|q_|{- zNvv~uq%tuWuY|gO2U$Gev7rqN8v|cnD`5z<&~YHDaTqb6KGDHIMD^T#iJ{3tV}Ob` znNonm>SBQTpBn>1eFeur4{{)(IvB{cLOd{NiJH(Dr~)`LIKj+P2LoTtJNmu|t61z^ zOG?AYo5kRm=3CxI-`5gvq2mBdo{R_J^Ez>Wl>m?2$}9tf#sJs-5Dc*D(Z#@fOf$K5XFoojWM98##$b7R2%vVvp4t5$-+klB<>%GYd4 zCS{f^LSp~}sbUP6RnUD&3UzuOabQ+3LSrB*70fl*&bK9eNeYW89vDP0xOx~6 z$`^U?74QzyK=`Iu6)zmmdag!WOzOk$nolz!LwIEH#J)FZY4sliEz3X{im=Zg*X^G-HSeir$Qd%fmx~u-Iu7-y)qfBJapo~_jE7%z6feP8LTbH z90zA$wHOHbkim`&Y9KTI*(^lH_uQ{c#!!8sBSh}}hhE0o#3)7w>lD;L+#}HoMsq>I zBpW*12|hUAD*`)QvIv&J9s<=fiLOXS*uRYEiez{< zfeIpTJ&;TUdjaIVPP0t|Iw~1aJIVCbPBPF&@yL~8sGYDcZt*r2@t&ok32OxOOX#h3 zWW04ya)z`EoM*5>E(;x=pxNlaqnF(w!IPKA5>76{bvtPC1??HmDss@KQ=p)}k3P$+ zjVN^FQc=#FiCuDq4jH+h2G9X*rO;u{PJ;sK#SKb?%Qt0mT6-^NY41x`8Q6iB&q@jV zMlbYs z9pt?AOmY!UwxSkOfoA*fvSuVw#pjHx7&M2UY6SHQd(Lr3fL&gw#f%A)ku7hL$T-~j01v$>ZjX{hPt_mX0$2n2~ z3LHAmD|pwz#jx8&bvvrsK#X*CG4Sq7V${LGAD2{!6f9Cr<|<+%jPOG4R^VzmHDt(& zgS)$l!MhbS?^YP(-3s2kTfrO>5PH~?Ix!3x(5~ooH{LW`!SHs$G0-z6ux?!put&z- zml&EZGzM~(6ygA6REwc_$dEcXF$qRxf4#atcm(q(U14utpYGKQE7 z4T{iah!jiwQVa^K>?u%W1Aqr85qPN*Zk`0PO5SWH)WlEx{=kA&eH5M8J z2tG(QVM)!4#~akl(Z)PptDqNpyG*|A6N&|#g z3Ds+vQlA+sc}qo!l3=X|1&X&&9DB$L96J>#!vPergr)l*cBkdD z?T$TUg~mYNu!uce>9Vs5?pH*@F=o-mju7^(<%LcRCafZC2va5%>x3bhsZ@js6YE$R z_JBpVOcBdfB%*^;CMsao=pEoD#H zprasx0X2nAqT*fRRWZz2Xbj|*6c`|&Pu9TzB%Yg#tC)(hz!pl3V|sq z4GQ+@xJSJhYY;WP2Em4bMFOiBeun_|XG1cV!rJ9_-RO5vUHHGkAm0(*@p<$95 zGr$Cb&t}8K6BV7qggT&FU-zx%eGn7dlL`)#65J5)P#tbb1T37hJ+>Sb7=wncRU2>( zMF(V|3X5$`QDK#Mg`yXDg@9h*%#L2@)w4C^?icP~K#Y1eu@Z$j3LAma%v3|_*&3{- zW)DRT?}{=u@)SD0P&qF~hxHD0AJvcpoZJy&%I-pAAO{k0Iswm6#{0E|32DfAO>PVf zYZn{?wU*X^hFT{Muz=uZ)f$GR3yp!k*Ii@qUUv=bS@6Ih#=Y(uB8-N<^nb*C1#}e6 z5-u7@aJN8$TOe7R-9>|YaJPgI90DO&@Zj#Q!Cimc5`w$CyE`F-1YYfQ)n{jnPvE;4UT849&=47~MD%cpb(5?Pf>+qOU2T}$c|l0-;shq< zDS;0pym)>Pt|Y}vzIA!AYH+p?05S|T)SaCzgqv`GKmi6@2dFJG?rb4sxnW<+=~2L- z(4h>!w~bKMF-Xm1BbCAArWY%J$xSAuCkf$!wt=iRDDEU7d;_z8IZ()t;g614(BKl& zy9!i=24@T*!4hgR)QCxQd%!J@oCGd0SB?Tu8szpc+G|`QC`pL5-HZebxaiC40}Udo z0RykooaOd_n-uFbF(O;-sY5KNE!LUO?4e%#<< z{F_@aDU3!Ilos_(jrOviOfWih7)wFvF!menWy=pVlB}GHOQ6D!ZF5v**2U~3|hXw(zP&)KKJIDbeR^-hAod%UfAqOiz z?U_%R-&KOVt%_BbNV?UQ1DAsYAhDsvtv1YJ;1m_P+T{nA=!#Yw6h?N?;6g7k2MTQl zNOvo001lnf)Fbd?n{d@ehpd{=VTc2V4!z|@9dd1GFpCZvPVk~Wk(Z`Od)3Cv#ex`h zNn=6anm7|VAz~oA0^OlO#y|LCPKQ&COb7j^H1fl!7oGAd3x<{Jq>y#^2Dakx81zbG zH{ka+dZ9K3E_%gCH8LGBDAnP54dPGWqd8tiH8LGAD2+0K$JvIa+HxQ-I^&j9Bhvu` z?LWvWD!s_0RmZ^3X-t6Ph(ReY(~DMx+8D@bj&hJB{7!Un>S<3wUJe@M_cpR}or!u$ zl8R7@LGhf{AkQFR;ODetcR+$cX`VrNoECGM;ze*QN%E~oFerBU>ov%#0_pkrIqfXZ zAl#&QPKzdk+H)EsVURHDaRg&- zE`L2*E=GM)-@l$BfaJBV7QTOb{YaFM6Pm8a;B}~s!L~7=!DbFLn7)GslOZ%%Z$aG* zwkZgWBrIRAcrQV(1aX`rYV1G?=2Cd!wUv6SY`fxju;<}!%1R^^Fopepois2f;rJ_pB-fhzXMPFI6S zYt_a;zGlRLp)Q=v7$=un)dospr~s4()|`QN#6#^!uw)!gDH)+Ev3ON}rGw&*>RUok zK#qML3dX6I9jY-Z#$cOfY7Z_VricL(x^RPwv2t#3DGmHKLP-)0KoL_#P?Es!L^^9A z-Y!2uG>G#yLb7CTa7j|S*fllt%yWVvBCi0H7Nd=#RZuX_&Q}^)$x8)!YT!-{_H+ys zt%4Yw<#>TFQ)*{GmMje>2nDAQ2KKc)M~5t1Yy`@WC6NNFt+|L$B8H@Sy^UDklA9n( zPgBB=ZHilUP`Kg|D8{@T1fw*^ixH0KX@G%(QxJo*953)?xFaV&xI{*+vK$};nvH#i z0m5#@e{#!WlGt|ug*san6suvWIw)>%vFez7@B_r+*?>xC48*Upu8;?%L6v(WY@c(I zLN3qG7zn>nj6nmwV&p?@j7~yrU>izAV1&&VTZ5Aj?JCGiNQ;;o5D_OKiIbO@3^-8; z9opDbgVP8WCjJR62Dri|BQ$WQ6j&zRgWd{QfawZ78QD4fO6*Cl1IfaY??5d)%zOn& zqtgnKa8>a%)xyJUBw~sR)v1TsNW5KM4qAAajl751=+wh(RP13kYT;ov@*ZZYAL*bj z6?>Rj!AZ5(G2X*$bn0O?Qn-x#Skl77Y{W-jw_HsaZLeUB(;}kY#5?^>5~sgp zEYX2o`LU#hkKaTYQgA+?!C@OqWMP;n#>T{AY^0`!NwN3eq(P-3@R8ucM(CIVV9`MG#eKnXq`|%=U#b(FPf52l1d8}cTC)?r z85x1Bgaj=j>!}VWNeJV993(`01qv|OXo1?JjE}4rSdMguU?o9uWWAt8WWB)E5;Z!h zC2CAsITS7_9$cdHUv0rq26U#=1dRJ}7+km;A-{48;#P#(7>KMR2FY<+T6F|wsYvy* z;yR&5L5uUX0&N%|C`q7CA}DbI;y@`ra4TpL`6KX=KZ29UA6B-M+XNJ7gGFAqiAIFl z!;g>r5u8T;*bAe|W6&b<$6n48N1Mb5u#Yyj>%fgR#i2l~l&IQ*;jIEzh}6+4z}lut zsErm@fxue@tPp8Z3`#A1K?|!u;H?6|iB&-LOJQp(sZLXD6$n~b1$_Ndqk#JnQma5n zY842ItpY9Tmm2x{rSMO-1JBa}#q~?!_ZnCQSd)}CQOvj>;fO&gJu{0N7%HnUGsW*S zy-XEJ9WcXztO6$(#bHurEpl(#OR^Fu#^D_VL#G+!XN(wo z^go^Tb$SPM4XWzt-7IKuXnQyB8iPY?H4P024f2E#FI*m5HSE+QC@|D^1=n*#hv#TH zkx@1vR&tgz`OTO+NWoI7#W?^oe-6Ox^c;Yh!mZ?Gr^Pt{d&N^GA&Vr&$gb_^G_VEz z|3)eh3k}i7&doR49+Aas5gqRT)3KU#jM}TCB3`HQNESRHEI;lnTErt!%~YfgtOP1s zWl3hNv}+SLBUMs`2AiDFNMc*t>&nW@Or-5<%Z!}oC^M(I?=7^qpa6pg%*aA{Y7hgm za9+<_6z9HY)mhb+1D-ITafdA20Rv_2k(YxQMx-_da*d-LoX~CyZX_5jN%^;hj(R9S zr^P7a`8O+*>d3z>iut!i3;xaOqS_--s2Hh~GhiiF>9S){%)c#K@NZURG!c{}qTjBv zamT>OimKXlH#*j#LAo2sEL;(JBG&_o*}FxH^8lJqg>g4VEA!NI=oI_qS@Bl2MMmyw6d8ukOP5=$sLFv-9He6v$-CO1c(!eoux-1@ zkZT*Q%-7AMLq~=z%d?8^bG6a&@%L6q{Jk9=M(_Z-B-Wl)F+;bCCz(}8hkkn;kP?QT zs0XbS>?1EBE&SkCo`+kVM&?@;^Kh#cJlsmz;!zGxBlE3_X}492$b2jB_O?pWP14s*_i^rw`BlP7X!Q$PdbWnfPb=elfwX4Srohy3^vlEHU`S< zf*6u=YdGJ`WCIPBW(67y6Es+U6lk!>BxpF!Cg=f$`VM}q{%kVYYqnw!IE#sgn^+$x zkfH`L@g^S%7eNeod{wd{0Rl%J3YQcHXu$Jr0#|!za^7zE2BtAMP{^d=k0KO_5{FA{ zY$_0$27YizEr8i{P-K#{n06%&Hz~|21$WvyKy3+OG(7WML3#wH7B~qpj?D=M4GIN< z5ox>XpwRY2!AOGRC4vzR0&u3vt*+21TIe(`gCt~kNL*c!|3EGZ(%~344_8QsBWZ^# zOhG_H>=RCkn43sJ4``5o5+L(yGxAl3wV481Vn9~PsR+#b4tSG}GIIFKOGtE^tBsCxdz*YDZg2ZMW9*!pI+*cC!PL>f4{p*C zV`UZqLU;9P2_MovM=N@h|X@crw-9%!jS00 zl3*Y!LIDOXMj0I$MGVNA9i~4Wv6aUlI=j`D0~d}CsmKz!v_uX{b8^D(HSkpF=!7WB z0mE6i+0NKMH_4R-v;ZjE;8a^M#NH89pG>t%;R-%kkEbu;3O<>toWd29ksf`W za0O+gC-14Ayr)=Kl#>zdSIEjpFQ!6Nd8X-k7N>X0;_Q`2yAIlV48tN@JMe_ZnDcdSYED2Z>iVQETgooyw0TEqu3nbk?Fp zpvRDA>2j)P@e$HVZZAcu0F+Igs6DuNuBMl8HB!WSWNMJ&Q`C|?I;K4vpBsLEY4oZ67>PH6%G`pK{4qW% zVt&WUX{tS`C>1%PL!RcKu_;r#ykZdPo$44Ef1+WBT*Uzco+4B*{lz1RYGWXmE6M@c zq9X>>5%O{now}-H;8Ylv1{IUH*%dTnxZDIm8Z0jugBCFq21@$J1Vg1krPH64F_oT6 zg~ZWp^GXRQ4J=aw#_-~dF(CEiK#?^-^-@h#DHR&H4@Xr);R;$X2K1D|6|`We-l&Nc z4sGHF4YXhknBfDih&)j`DyZP9f({gkvdTl9uia^KTDucqDP8Mptc++mjz*9E3yp(Ex}lqlT)@BSfN1K zih&wxgQ8eo1chvr1BJd-lYzxLbLfzrD?z8lT1>ILh|XC)Z-Awg`DszJ(`4X-C|J!+ zF5dv$BCa-^V3a28GqF;cDi1rp0H(=F0ZjNVVnXE0HIOft3Sq)M#DthHm+Jvy{jwTS zi)xtwnPUh>^d0jWQE_ohc$@|d!HE8PWI0A;s#4`)q-bFyix!qj$cWx?dF5dgsju2& z6e%>JL-#O;j`_xUP)ZjuqZn+gIw<@+rV*(Qro*r!6GndOh@k*#W8kXzn4p$9kYmUA z9;4DKKJa@Rp;8+IAEW?vSM3;xOeC!&3ZIHfLtZdiL@iM1P?|AFzPTC0+~wSiQ5?p= z3V5n5DT?;R8G~%xVa8A}w7g)%U;(u;@bnuJ;wK$#%ty`%hBAfAgVKVJv*MtX)51g* zIUNL}n0`anU=7p&cbd=yc_ZzDN!$>F)V<%&62F}t4Z;i9DL^h4Q9JJUA0Lw%CXwq0t_X5BP z!ETbrpv7K*iQfw_Io%5Y8mSb67JC6EelNg;k;e}6LGfOINo4qH&uQKmF-eROiC&`o zC-P%S3){nlLDV!KaBILp4vK9LlNPpz35^ZH;3W8l6%yrk-|eMJBezgY|A9G`J z8goOnNfl5lEn;r4Dkr8qGnta+?S^X@g=}KyCpl`RI2wnQ3RPP|=+~!Vhg98R>L|_I z4JC_h3R`6i0tSjB1_7zM4Fg#vrldO(_S&VgQ->7^mXpp_o zBoKQi49xO!m>^`!$g5!uvKN}{l{OKBlTdsiX#~DN#*I8EEzVKeOK&15Gy%A^g)x3^ z#wb2mDTqdd+Nz8{SSd&jR!U|JW>`_6%Cv~Ux0l{T!ALeB?5d2#_;7+z9C$Biu_Gby zI}(D^9SK44j)b7aj)cJPNC=oG#X*%(e3SgF*J4M4s*KWFj~f(@7?gT~S-noRCpo_X zLG?B{%|&rZSca6FDP--)O319mPK23{z&B%1k`x`*9hHJIE8dzgi*A0EMP{a)-%O{O zai@YGcJ|7o@`4e!HdM#J8DnP21_bG4R!Ed{&e%(p%7fBkN5ahSNSK}ONSGDxNSL)a zonYp7B+O2CB&as2{GxBxVn@PEEFLF_(;W#j89DM}NsAo`GqHHY;B-fVYLhCEgBCjy z_F9~X!Rd~Ky;P~Z9JJVxF!MVSW~Vz6X2m-aW-WFkSW!@WB$3(aj)Yn9j)Yl@9SK$x zRD!{oU&X9=N5ZVdj)a+yhGHc_9RoYfild>-TG$?DeglGvXmX5-<#OQ|m11MWti_Im zy^JO*DhZLdvk}^nFjGcHDoARgI;7ALNeu^F@n(ftjAv4thVks5YH)JWB=&Dkdj8g4 zqf}ORv!b3VqoaDGXrHl?ppNqmtBfj$dSit<)y6h=ntC^X=59rnE8XrWv}@)$%@ z;eU$Z|5^^(WFd}E<)GmTP69&5EKI2`V}(sQlhR%~RUWPu*?26x$KN8US41llRTMQP zttbkY*m-$*1Hq!jUVw#oGm6YvB_qIqt^#=piF*nE(*c>J<}*YpaGne&6-D6|QU6JK zf#Qmy5CEY;Y$a6*rIk}s+DM|Y(T-3sxWugkwFN_GcX4n@s-j9UC|)^5@~%1tUZf}^{C8;%FQG6=Fs>NP_y$~qV2Ue%266|$SWv31+HLCK|vGUe{ z6?X!724_`#_P{D`9jK0hTQIFoT>n+M|r@1Dx$n_W)RdRnX${vt5fl0DB!$#Nc!fz)EpV z@))$(1F+J`VZ?xpU&>&tqUizIy|88}H`~enkw>RRJtZq0AtrQ;t~uyqI$^BKO2>4q?Psso zssMv+aH@@gB6tvk(+ovcif59?Aes)UW8jQ1tK_^wqP>EZR+TIz;vr?VF;JWi%E9TW z1gqjx39NXjx)|V40-hKaF~C3BnLSQXq2VG>%~fbH4;VDquc5(y2Mv~u02=JH2{hP@ zg9e*x&|tEM24k)8TJaPhrwcLnzATM^AKPB3dcR4>FMI<-!s$Y|%KAV729dC+(fvXC=op7i6r)uEPi}a8w{4+5b2KsX0yJ(c5ZyxRvF-e9S+=SaHa_SO( zZ0jbqMI};Ya*e>T87F7U;mdGslgA*su+_#OQe_DS_O%XE29p{om@=Z2R+Ig%g=lKRo={)_ZD?LoVtCPSz!=Jv)7Zs|wH7!<|~_G>*m!J`x&hmk?Gkf)6Ae z&O&84Q7Mgsfmdk36ew8^4n${67rspKWYU1?3O*RGLK*_OnS>?6EyMsBE9NAmlmo+4 z)VHVL&?~yPCR63;&Z+N54#8F#RTu_OilLVF6ME+9CTBt%?_ zL8+CeMdeV)k-*PsXHhP2lfpc8aHma)t39W=C>KHJEXoDGO!1u7Aj$gwerGa1$fm4&f5Xf0<(7DNm)Oug{vSmLC|Z#`t5~S z*{sq#Vf}hy{ZyS6zEso{QYEgqD6OE^g7w>LwGvFGOZbVWSIqkLTCje5X;#GGl=a&y z*UBpoEm*&vV!#oDDSL$`soJtoWMgfuu~DzKul z_8k){%<3>xl%6q#$Jty~YRiH5!?TjH4zYXiWz2uAV71Z0+pg!m?Nou*K@N(&?RqV| z?Rts_!TEqkP8~5Iualn-8sxVT^yDQc3{K}XZ7V3ipn+|v=Q8dK`lLbba7}b_a!WdG zBFKZ%AhsR8m@_u@$eJAnm(oynfmNziSy37IT>z>xYr{axp&_ZypVh!sLMd6LTD3t@ z1PYrmR2P;5g*iI~1IEEa1EYGd!mM;48Wisju+p+(cz~Q{n24|UO;3lQsXoD73 zfPwd@W4%~u8F$G2%A^Jj7Oe*j(%~$ZBsU@zTMPy*yzd6y`)+XReK#ofz8kdgz8kP6 zE;{B6=#00`Dv7#N>}+S{X4O`Alx780Hu~NjFrXbFZ@C#n@~%1tZbwa82v;Hp%s!(4 zgBZx7HU{F&CE_^h{%UJbX=E!tIbMO4wpCj&6bQox7gguw1!JTWva*AVmGe~_17&|i3`vXbLf_(^hmma@ za1z2eA^GXAMfF|CiOvr@i8+v{!i;o6R$f9{uzw@Z{+(9e6%<$Bg*!E1|3*3!ilYpT z0f(8QnC!Fay=u=CKG271@7gffRTzuX=OzfH&6FQpT15UB`N$um)5srI23U!o#;8T) zkCFDuad6?uGEOka+65y<2|?ikWc@~B{ZynE{)ExEMv8Gaq7?yuVqQ~duoweqFbx9@ z(vs-Q7L3Tnp@H^<5q;rsh578E!E7vO(36q_E zD)9A5;h$_Q@aj=vWIwX)pk%!8#@dxI+7_rxWoh^YGa@ihB&y8+&E%Dzkxgk(E+MD2F@m+Dy0q>=)9#o z2GQxOHU?UgQ4W~(gPS18>;x0zblgm#94HFV**Z&YbQIx?=#Y;&NQmOS{HU+3Q2J*2Y28?fZ#K3g1g5^+yY~TVF zB&C%D$+`^#S)Np%6z)Yk!o=7a4KgR}zTKOKe}MSRH0fz|j_9RsJj;9RK_3~+><0hPxf#z?4*fk--=_Ha7L83x6! zSvar)zgHUr@0x{xV>nMn||2+tNMDggz9Ojx?wQ0Ye;PU##H;~><=z!k(4qy;hU8Ulkj1OZJ3XfRCBV0s=J z=mw;!q3|SWwNyt2HOGi$+k%@l{rGz68eB@R=Dw=A@}O?;fiysWv)34Da7!*5}S#?LXG4PIMRyQ&U2E~qLvlu&} zHU>H>hq@b?E2q0Da06>panMY|2YWi?9+_uhPErM@1s})yASYti+;4ScwJ0e{sd6nvf0{6bFx3M3=MLdH@4^ z2?Khv9Wf~N>sv&VL3IrLx+n=AvFkDlNw%;(08W>ouU>&3&?2nF!n1#i)36eYV)k#* zg8f^_2aPKx8UvgzW9*+3jAGJn5zPs;haDx#AW+QJ#(`qtB^)Sp)hifnT37)V-U^_a zkPiAlu@zv^!U~{zm#EWNwMs{O84F-4;QFklq{@Sf%3InoFb&Mh!HV{c{8(Z&CDq2j z7yMz>DjnruMJq-D2GNJFItDhYNe&nZE}i5_i(Cp;%7r3JzO*QEDX^-PcJf7~AUROD zw*dDh+3QhU{t|wy!CnumSDA=TQl}@;JhM{Fyu5@&<3a6V#~0zDB9RW$UvUv0tGKtI zHU_Hw$ks-l_0dXZkGx>SO#!t*Q34MHg&uqd!BDzGc?_Znp*9Ad^IIjH zpZGEr#uTh9>V=aKB|4Eur-e1Z>QyFAe>{5VAR)z^->O9nj+KwWp(2rv7;tHlmxC5D zIQFWLI8!890PUlU5qxfNp?RZ#4rq}U(8>qpSe*prSSc0nnatPZIXAmbLrAJ@k$?6}ugqNZxMx0de zPv-gH6a!pUnBo-fRG*(gbQ6n>Bne??jspgzp*Qe28$nff35A!U?nOCB%mO>dgqsvb zd_nM(`q9^BAC6-}a2Gq|Dw!$pU2G&lgPjO~2EzmmHWH!1#vn9UpTL9Jlc2%oA~e`6 zga(s6H0a6bn};j(WR}=MGArTH?Dw*(0-(^MCpo4I-;ijm<5CCLM7$g*rA!xoZ0lmR zhd2eN;1HMOy0C*{zHJ^9P7Jvf4q^zkn70(If}oHIJLn!dE-H^fq|Ry!hN4vn1DiJv z7$|l}0S4P>RT~5Os}X~<#Cv8RrHS_-c2$eDnB3EZ!RcB|-g|jDhz@YIupMl&Cx?(E+YDC}OAx3cb}16NH$&JO&NQ-awEvPxO$oa)MzII-FpLz$*Zy z0rS%lF=c|GVwh4;SoBf~O2-0q;9LqkIKIJxJj&{ zC>S_?$(DCV3`z%=UV|tY_-On*99$B2H_aG5i+7g}E>^BniP6J~YN{<5E(9Kq!!nH0 z8KWovHx!Bp&=W@R?jhDnJlO2HEy_~D=kbe}Q$DW8#NrADmlk}SFH33GWBNh|GNG7$>qS1V_E@6maa@ov zMWG`GX0Tke^bF+bY?s;@5S6Pu6wBX_Pa*}N77?76pQ^%k*_}pv|dA!;Z z!cY>l=?v(H=7t?}<#U3;L$>nzz#s;us11q|k)vQFG3T`Cvs#!<+{{>dl1Hah+Zi;7 zMu&7bETD%(CUM3mq7xBtpp=HE!}B%p&Kr0;0Siuwnj%q!8x%X^4O&ODVp&i@Bt4^QrsA8> zNaABKC^ioa8k|vuyj09TPa<=6Mip+ty%qUkr@zDOKI97^K=5_*fV!<|vhr5hK{mSmRR47>r7@q??UeM9CPb zm^&MPROpdIhuj-JFo_N~DvqCFl_S-b9s0Uy{2@)}^`B8O4L6FsUTq9?suLxIo@z%7 zN^Lx&28EBzM&4ggnAqXmDtIH}4vQLu)k+4G0bL zgxs4P4WfFFoPdyOn~ms+hei_Xk7{Eo5ZV9UOaK3Z%W(=SROui(#q68axBQ=q&WXr) z_Dw}HIgugvhK#C7_JpVurvgc7!ON+7C#_59+~(1VtccSXiitX_1**2lkeL%Gj9BMD zp>H2@--_!MhmOMb<(0fhdeugUxg+i9*c@}1R7y(|nT@KIk*^lqD>$TS-+;g%Pb-xb zl_*EJCUyJ6KbhN3DmJXB%1H}%2V^H$Vz3}+<{^E9JiQx%n(puEU9WrR{+?~!n2~Ki zZwK3eP25<#IQ$n~K@|N*(Pui`gwUh6Uyl@BkB1ZW7`>p!$5IFY+q-Y#M*HWq@l1QN zw694UW_p~LdK}7nw9X9JWd?ko0pDl9a0}+pY~p6XC7$`w;NQ5jO`Z<}dQ1$sK}WVK z*|=mJlHFuPFF%!;H{yG##yL_aH&z_G3H+DIlGZI+2Wdqht!l)nXGENAa5izHqO?@W zm1>5X@SLOx&pDdVqi90TV8UQh69#0Oa1+&p?=j(fOq912Z6pD$342W=e2;*xXM52Z zWLQwdR2(mfMN8OFrurTN?v4tmcBl{ooDmj($I|wL-vIMkLSzWLPEqGbTg@z_!j1BL zQzC3LhSHkR5k^^z&FE(_V`!lnCkxB4+Qf|#hO#V~@Naw{%gG4;##59Q>`x1F5(~bE z(x+K)d|FWRvdmOX+^je+tT->MXyjSZ9I~PfVMTmaB(PSTZ&o}}XvJ-R%GE&W4=@XW zn-#qeR-6}bs)bEwoe!QEfd(6ba0Z4&b?E5aEHvm(*u8LehRFpQOuNG27ban7(9K8; zbUx_Yf(G4;+E?d;{SC)h@O$V$i%y4A7E}yAS%*pjj)Kt5IGlAlbSmpuNGB*H(l|N_ zd4tE`bM)A$a7Y7DuwWY7uW&x-D2_s>$I9ODa{PEbt}k%V0Y8KGyx^b%U7;^Dpuphl z1RJq%o&i6D`AXrX24o95@{Z}qSp*F>Pjt+o0yi6Rq(B3|hja^^GQgfU(%YGlW&0H# z3WkV({0ySjI#Mw@DtHbJ=H`JT1N3%uY(Y2UpJ;v3k;Z`rzTJd2Agl>=Gj#%~9SGy6 zn^E!TNb^7gUrIViM@k49_$O9s4{!<88?5M??Fva*z^MvR@Hn2S02V}_({oVG>jV;t zK%*D3{<9U1mEW;FnR-K@-XJZcGt;}M`~ifFGj}sI@LiN{AELprTg+GyN@u2bVeWA^ z9qA)jNAcq=7*eZaiId@bSoUFC1C^o9f(PB9f!#|vOm!BLJIj%2`xPOjoQ^Pc@S81! z)IvxtBzG$=s5;801`UM6(rv+$t<>Qx@ssTeE^iQPvsZZh>fD)`t+b zOAkaPs`tU(05-#FImye2esdrLp}8mMRkD2#a9?`tm+M@C7^-dLtCQoUHBXWY6%DfMF|=(5=?KP-Z0>%gC2eE zKpBxUKm)s%e4hXm-(|!#4q`F!!^rUkL7Dh2Qk8lm3B^c4F%otoVK)-dHQ_wf6I<7t z&?^f8k@zmGhwcX5jAP7%8WJKZ=^nyvBJ3tSrVbH^^ecKh6Ei&b;rPc&hv3=IrAx)~J+5P$3_DypGpl_da zR_YBavK=5GbPuvGy_M7#OBe>7V8vZfy_I@{(nZ1SWG{taD%OY4U^B%)*>NEBip@a- zrBi_h!w#&6evVoKW;yFjh`FNYke%d%JrB`N?3`s16S#q~h&PkY1nosP zlfg(j(?B{C8u%G7dGLX#!yz~b`-dVa!45^FASZS+u}TQk!5*_4uXgLzfJ_gRD4Uh= zU%DBGC|I`mWQu4o*o|1b6^pyDZlHtlIkXQ5&qEYOT+tv*hVH?I6~a>xjuA(u!H5eh z&|Z|X5l1FycLZp}g&u5e>~JFuNK&2#@@+u;2tLO|1Co>{5NiA$GHM|J1;5!u=DP{C zgn{TKH1L~=UK&g|E1`j3D9{ikEBX zQJ{3FdLLK=_;Wb&%tiu{Nr-R2jv_K?ATkLJe1(|?o0$finO77| zqXZiG9MXpd(udGMq*TbjV4?4^5O$)MV8PIH=zAzRxWPi-W5Hz$oF@pGk|cxOgVAG{Jtt@k46RU_}!gXaake(Fdb8VeB)ZK!ZUB zcMcn4V16+XK!d# zSQmR29bo~LfFDLjL15#Ro{VdO5teiO74-&L&_>dAz`_tR3kn5?7z?DdHK-GaD1vp1 zJx?kQb|mpLD2fR*6MhC6*TC=S734d!JMHXVJ2I|~WL$%P4u3@|&PXcGXvFyrgc09G zrZiaF2$@W2@bBR_8)*QbtJcj(rnHevX=tF}O!RgWs$Aft_#6}3GTSfa$ z8gw&KN7yo>o2fU5Is(bXKBQ{#01HtNbp&0GLxR+xk<_43ppi+`5y&z<5LE$m56&-v zK7&ff!Y&Z~i9Un$q0x-%GBj}bk=+g3N%#s$d<79jaMNNxQr?U;!gQvX@QvT?}$9n#i?iBEuONAHKpwyAn0I}JGmB3RQlT_P`8k45xx}P z4(U5tXHqF-6BQ8#Hvs*KHg_PXA8$sUV1k$kyh7b#rf#7^n$Q_IL1;4s76<%PGkpfx z%O(qH01GY(CJU(os?=qol2*X1acqzpG?5xKks5>s_A2Q^lLehB(7;}$av&fjgiP*7 z;Oq#Qh$5_G_&_3xCL)R^B8n#3Hh~6WC!z?hWyEf!DMP80VPQl#RvaXP57HIE2d#Bz zuy2Op!+IWE)a;v~!9EPuRW|0qyr4g!2*6uIzruMc_~1*S!A2Cgy74)b3QHh02n#hn zkkp_+Y7iO>sX(c7z*9~)qX=Mtv(6NBC<168933u6KmqVG$j2zq0ekScv#x{rflnr) zC=gKu;y{1GaVUV-NgSfkz%OLyGMl&wdYl)~K**#j1v&r*4g8YSxeHC^*{V704Eb27Van zL!fNfKeW{X8@BjB+G-JKs|6Gr{fXobeaGHTjzodjpg`JBpp6x{z@`;6Z~#EQfA(|I zeps#@h6E%6!avbOV`Z{!e?sR2s8#F@RVUBOik8u*1Qi-GM=H~{eYyzL4qd^kkSW*juIf571@4s|eY5CuES3cn&V8P87I zuHdQ%6aagJ9cQ!si9UmZS-`E1aA@lpPQ_r)gO`WB)PUmOv@01sQgvCy)_dkmi5HM@uO5A}qeTjxww`Dx zx2MM^J{v=!ss)4w^a}1uF;PrH-VFzY_UhgTVx;hMAilO)w~(L!h?m00!XrC^5EE+)y=oBLImo+t{~&scn|Fht z(16bHCAO!t2PWdNb+E=YiKu5*s-%#s?^Fbk!_|nD?aT@@7K=#H8m{{6W;^0}_Yu!+CwWPEyI zsj+$8%kyuH*fwD7>qWj(z8=#*9EuU9|1Hvc-c{^rAFE1!5+zVYHO>26Nyns@%HY889V9_8D&)YW}&YX4sRF0$US z_Z1hI2YtH!ai~YJU*QqS2d6lgF}b%-j`NG-%dJkIy+Ngz3KiyEYMu3S?iQzgZd}Ma zG^ly|JJVn0pZ4-zY^Kab$``NF>1jik_X*+X64t}RsVdipA{1M|BNnbx&b$!|B#`gabwyvG`o_kNd*&GY_#w)}JF zPRqWP%cA7Qf)s!E*E`+3; z9x(A${jECJv0wLjrF?s&%;os+ht9_@=^l2WZ%=*enVz`^wpciA=j3zQ%l91bn%fXG zxJjQ^yX%`*%sVu0ONG*1mPFU>Q!>}?UGZ~*ruOL5z1i^5z2-k{)#Yu1vGw?FFY;`< z)a8I*!TTRxJbbzT&AqB;*A_dpBIxMc_HL&6RmL}p-eLK;*R4!+<=5#d6dLh5)5<5l zOZ4u>K*RZAJu7xz_n_0_cIh&fx%}ntn|f2t2fHl48+3F9 zp9_PmyDb+F4&S%Yxa(--wx)|iKGlv0**Y(NZp$T?w_fVip?!w0HMiaB{cd;Xgabm3 zL#vxisFCw!$jK+A4s5KjxW&r%uX?X}eIxAVmOX`h3x7^m{eAw<#y7c|9i4ITneW;^ zg?sh*wm5LcpBL9N2S=2fw~;+dhD14|Zb{=Tm* z2D+t;?H7}(+)vk+>6Y%FlF>i6pHIZ$=T)}mjl5CZwR?)9DN=0rofJA@$-({JS99ID zU)OzZIa#dOwJOsGnBgRUgyMa z@4l5+h7^w2^=LxO%ktgHeBlwsWTKsL(pR>6SyQGJO6K_OAEFL;tzvY~=qi z-;CsQb)Mf0O&geId@$4*wQ$;rf)^(n1>tv!ryXABS=ie$wr1hRpN~Hc?J{R=>-X_D z)(wq*(jm>WQKMyB>JTGuBcsA2U%pJtV4n?CeZWV?uxr#5p!Vp=<-=gSJb7RIsQ|_Hr8E**1L^)`rzN%$aFCiixo&{>b2{?8Ovs; znLD=d>TAQMMR(p4dGSHvgd?tlPYnNCWpjg>Ig0+=&}vH9fGU~$?=L?nvTDPS8EdvpNV_lAug zJmL1Hl*x9yijJ=IwN=*~#Sh#lKl{t~v-fJPd*=Qt%x`P=uHXCJ?_OulZEJ7uTB+`5 z&oX;trY^7C7j(%G@H9t*AYpf_5}op{{Z?oGs@+3MHTQ3wJ*bH_{8Zzyoii`4-(>FR z*?~v1Eed)#@JXuK1NCn^&KVLpsK@%wB^%CewIltG_~k$v0oqnW8=qo|L<3+8WcFRxrL9`)g@8-IMaOPiCHc>dBp5sf8)4jCFmo*D35Z zeRkS;_b27J9G7uv`XA9x*L^s@?fVt0XRDUs6I==`t-mk-qmZ0kqV>hxyc(NNek`4R zWb}o%#z!S;<@Z15UB5t!t0RKG`ReQJi?GK0S}^(9zEaPgEFIHgz4cM=$ax#LR;YI@ zW0!9A!d$2L#VwB!j#s-LcgK3JyUXgPztTR~k^kinua{L@E=`}tJHPwp!mVTG->Y08 zvTJ0lq1xsluRo+eSopEKWv$oOfem-g+gWOWSBHHOnToV;736lfN4@f&a!u?or^U$G zUe}|aPgxa{eSJvYQeL-v9xk?Q^M(7@;@6(5FsJR;xZh_&d{0#A_$K4OV(nYJ9Cx>8 zzjt?LKg@l(&9VG#hMp~d{J(B_(tTexX6VTK1bN4OO5IUaNR{fupuo4a=p{2TRjUr@L4C4xd8 z>^K+@Q~B7%SA!pQ|L@%n_uj#lWx3pQKFRJm*)Z`KFvtmiPLGJXW!gLD!Tspqbgk-a z>ftpee#z?K-7}6@v%ToxG3>Ygm@&(*>>h4oFCIRc{Au w|~~KhUeh;9Q1VvrlXf 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 z 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 z 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Ïy?%WA{`E^`&Xl|lYhE4) zY43^a!HyyO+w7M5UJn3Ix0hY_m)-9_e);<5-k$v3qVdOP!} z>*2ah1(j!=r&9AWRhSo!U26e8d?SBhmm@jmXe;H3EX@XSXV&IVr20c%Vhf6 zsLpIP@DL3^F=3tA>R=v0JB+VfIvC$x%VJbU`54a=z6hjz^vl3&hU-03QmylV2~s{D z;smEGV)i_)8N6lqcIRDFy^os}WU-DGcd%b{uj%c0l(B=4*7r!7N@kxWvpx6PEoR9a z^--*&&b8w1W7SwbQpx!J*X^EoJOd_h3>lMyUTZ>fj2RQjXTW4LdK5kbCNheU&w%ZpwprMex&_6e zlt30lBnu*v1rf=Dg4B~sVbg+QQA%K#tP%opi{Yj`suChHGO0?4$jGEBp&<89IXp;E zp7<6RjmKbo;wLb?H2Apx^f4$>m!XHjTTigx-s+i~k1U>IHC

bfyEjJ=HUtbfzO2 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

A&05Qaz}4%pks8+%BGqPq7A{PYV%!>0DU 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

K7^$+oOmJ`zW`lzKr)EbKh}A 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 z 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,u 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 literal 6618576 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ÐDnR6IlEUN|tY1v~$~r~cTos)Ijlgg_T%X}xR{X!fKYA9w9~W;uJ|>K+ zjhDsl>Q#fj^eU2xb)8_+R?COhTFes9hF}W-bGE3AvhkEn%YGu09h6<*D2QT{6qeyA znO1*>z8y)MT*cFGVrY;z37q*WtHAU9B?2(RkaIGDg@quOVh5jXpPYoq!brPjx^d@D zBd!jA(B_IzgTh?be_X;yvp*e$m0Hov-Ga?W9Pse@HAzDA_8NaK@&pKXgFg>u5yZU! zFl9e_kT6lY;wEPJg+|)}O~5{S7_q>UFh+;tkaS9}E-DYKvC|ezh$P|GN;iG~zOKwT z>neg^oPY1*;YEX!eVdNRkwcetbw{p604LafCgf8rEdKB4GmEt&S{PS2;xRGW zqJ2d(Q#Erqz;h-i(zv^?(;oV&!tMVQ`2G{k{+oNUG5ojOljR?+;{QMLW%;KE#s8dp zYU;RciaPq7)b?u8bL>;MW9fa7k2F*d)^{@g>EKnx4Pn9$*KrI13sG(4TkauwQB?s> zBRD&}Jv9e#R#RI!sXqT^p<1S;dNup8!=wFvtRJ%-fll4hy_LE0j&CZqT4BIykHqTy z{Pkl?=i6n^$n@u@8GcPoE$xbDM|(?~TqJdAsl5z3mu0Rt^YVOeKlSsfBeqh$7FuoT zE!3{t@1^B(qvgi$9oLRdhg@(pNbBomsYfqK1!cI#745ABZ|A4A{rztZc5A=M*+9E( zgA|?sw3PlP-P=jWwfhQerIenE)!&&nIk)m`7lh4kvo@~J<&JN*PMfz{UAB^`e%CiQ zS7R-2E~Pz2d-o&x9cM8c9kR#E_#4NWJa}~-tNOR&LoQLg$8u~`dNrBqO>Z)6&dur@ z@0~kTeHAqf9;Dkhv0HUJn;WAAlRX|kQ=u%lnT9$m1b%*nJ(&eMwxq`+Q+55@7xM3) z&0N!XtQ}jk(S?fC6Qn&HY5W-pR!Xh3#%eoy+Fw+QcUx*0M+sxJ+Db=q1MZVC1Eze2 z@EUxknbhI>PCh#(FQHe*t9Z{Ct8?W^#-f0xD>|%^R6$An&DAS4E>BE*Rmq904vs@x zpwI9a_9flmy3GP|Z47t);`%U@UbsjLf{P7kHw?My*pQ&%rf81>!(2b z-)AE?J9>Nd<;%%d`UnRH27InWXca4Qs3N~}$xu9_&|^4@$|gP^#{103C%?-Iv6;DX z*~AEpxqDHfk2qUD;Tl?RURvIVN6?t-*KG4y%etvG%P5cibdo_a%I?42M^+RTExgEa z&}+WNa1A>`P!G3qBG$X+IBMdClB~(g9k^eCNVSgPGw;OxAnP^M;+%SJVtE#&WH|@~ z9k7a(KIXZ@E>J+TCZa&>@{DgK${kew_af@=^P``tWGAb7o%zO(O*URAW!(=?&Q^}0 zuh0zoQB`<(w_n8OYT@fb)Q>{Dd|_upI6-+|NsoI5TKI8UIokeAeyn6e9=!upR4$)lOJ7h1QJ5J1d@e_O==pan1Ue zRDigp2Aoi+%hHFsK?cx^Azjece>~p+Q2kVBLxiiu406P;G#ljtqHph)AL7!`}DXwR~ zWk5Cu%m5b|S!qO>0AIBRl-R9L%_KADF(9o$U7nQWv%0a%SP@qt?9ANQg|7$EAed%}HHxOwXt3UEs zXwTCIEpiC33|zc%VL#ZjCG5s4r$PZMw|~4@>vKkxTFkE$raRJ9-01$`m`*8_Z%T{N z6}XMtHUQinI2ERVe8JrrLiS*CT+yyEW(coS)o#;qr#G7!ABx64G2ykKIXjQ`mIwu;6iP1W`bL+djJxKl6vAp~NZb&HyRE)-P$SLW zO_$Ub^qN6Ts4k8Pv2&&BLIxR%a0l%CU1}G7goWp8|LSfv9y5lS$>$!Sc(_VD(7^{!){MVaj*m*T`T&uu=K+n|%GWo7Bd+yvXg$mZXeF zYTF2Hq*w?h6HHs~U!z0}>bTE2B>alJxY$u1o7}6~oT0l~q70mC+At2l5GI;!28NMe zw(uVZ_IYycnwy4~b_!9^l2NkM^L^&WWLk;m=^`=VEFi)Lo%Q)}_CLKSF;8(yoZr-% z#7R5o?Uj^3`S9ZkI!h8)HNT{rdAKJnzAza?Ey2(R9h;yW>3Mn(DE^>y&d%|0;z(0h zJq7cq3F{~>LQv3eGBh{3YlEE_IMps<5=X{!qBzH*F^K@uX1O&%0hprh=Qzw;H4pEq zGT@^@PeC@L`r|@{qRK8|XBQP`?%mQO=Z}(Md9dX6q6sZndJ8EQfM$>&gVSveSQMLv zRB~UokJ$EL&D?7o3Fk3ksPS$5rh~?LJW_C`t87yX-E#ZbIM~WecUMHn4YwQq&TYoB z)qzdUt$0s@M}N&-990;eM@IV%AoKpRK_;?!vDA}g#10-??~kWVp)qF3DV{~bumR60 zD_FP&|7kaD>t2&R+%&ctMcDTSnHGlGLdF?4Zkppl0|knndD)*EOwIzW|IM9FJJAjr zU}7X#nhFt9E_6p~)4+W+1GCS(K=;Rgffzv&b`lI4vDxybl;w_8d7froHo;pgpzl1S z2gAl$gM0SqSXYi8RBa?pcm@d(vt?SYEX+t*N7yW}dldGNEp>o+^Y!GHSYWrR)G_)u z@802LvZDOHKjvy*dgQ46=)(ggVIYdXt|Ax1D4LC>e%WPn5Q;1&@8}7%Hfjb1GkxPe zkle>z{l;@orB42*L-HGBZXrmQ+}j7<_tiluYE$^FrkX_hrEFGINQLSCxACfzsU|^9 z$Qohk?!-6Vhsfr3ZRy$#g?KDF6^T@a61eCg1I@fD*`8$#r@-!NqDMn448pN4UJe}G*EK(itVPa$`G7Pw%}V#|JZS}~T4$^*ul3yk z4S#IK;;H3a7-hp-Q*e52CnMoED9#E|Oi(>vY~R54NM6S)BIsG>!LhjK^YrOuCIJ7ZVmPNav-&quls1NMb6! z!rt#g5o6zPnPpqj1 zG|f`Dh}oD+rT{Rx2_`;)7UidTX3be}27K)JqnPQ+$I493d~>s7pv1UYv{H5ZqhlY;iW2J5uf z&fahuo1O#Mwa9H!J6j5Ynhh|tm_uhQ0lJMnax7;@f_P=V5_`rST3b<)U_>cfq>jd% zd2%gr?oe_9twQ2wgiiVNbwm+%4CA^cKWn$WdY~N8*(`ZKB{D%JxmO?tBkRsia7PH% zg6+Sa9l-A{Y8i*Y{NFpD!BD+zqmtlKLTgZbSEK|3x6inQ>U-x2L+>qe26iB z6z-SI-8!$N5R&8jV+;_4DCPD0H@1E@ek`9kv3*JApd>_vSidk+l=tciR`K}5j@qp> zRRNbB*sq8qwASOAj-9CoR4F5<2~8F^mRo;E%6?-i)(iyJMPr-8a04JzHuK~I6%C0{@bw+N$1HnVU~jB{W%9CYp+JQ+*Jt%0O; zik>+*Z@)3rwIQvtwmRzCxaGOWVu-KxGYPegY~pdd%#41R^JT*8%2trsbtTAx{+#S$ z$QHH{_sb_mB%p=Y8N5^{36E;gZxe$1df|&jV$*z8W)q1mrl|Jh3OzB%RLTynpaj-= zW~vM#*A1y4kQ@K}3Sn6}`({YT5MWe50&vPTzQS)^X>dirhMl}fL#|Bwi5>Kzi}y6_ zfOJhL-B~{alQm*@i?4@v0Gd-oF1l~Y-!ypej1~MTpf*kPTI@`y%nP%NfQ~@xA z-i{FutY*}&yD9*C5eV!1a<{cnt7hM-{!03@mL`y=~}`#yM7zoHEx4cG+}|OZBKXUGVGNQWlP(itB9cYF0^P9w06$ND)_|!&M^> z-Dy|pns(Gd@H}nee00aL;C}vzI76J|C6l+f22l!I--zmzk^CHO$|>ic~MOkyOHLK*{dB?BujSjg^{m1lL@V}#in#RsJaGR zLx$o#*D4MaUqNc~@(=vaoog{!kIA=_D>@@3EIT|yS-^bB#V^Z|jT*h=$?WSxV)GY2 z?4QtugP$28zsqkv@ShO5pu^<1QU8~@aYx$FK;6Bxn(io03c^AjTv4vth2;Y3YW{(V zquknDupn}7d@1*`MJ&#CZIvk{n#hqvV4xYcib_WhjgaP98fnH1c(;QpvboO zPTaTbJ{Vrvy$|UlCZwr2AZBQW$0?N#hd+6xGbTn6Ea*BOpdjJW?Ex*FYp*8Vd8G;< z>O&_zYhC<2MhjBEW&4v`1@&Jh7HHlw=Ik5}2nPji5_V3t9+n0K*QM!}ewpO2C>;m6 z#kigsi==SyIAXaV8Tdo!U{s;exVo~JbWk<`zzj5so##i)eDJ$wB5OG>j0J8zq&?4( zBk)f6y9yMv>>%bZ)OgC1!!lSDhVs}r$$q}26QPx-VsNc)C0yB~KOvbP3?4>BHKQy% zV-9uH%4ctUW2-kRtbg}NP3XDX6&?94AAwVZtg3w^xd@*nX~x7Axl)D~%eH^c5Mo#| zpc!S9obYwZVg>@F3tBZLcDVS)a%0ivYStU}e7@QG0&Kji}H9eHSTp;aQ_{YvO53P{WmfXV;OaMk#H^ALAZB05U&3d}I+?joT(KTGKvHS<->|ZwQABv2b zo$>!PT4QAWPpS>p|0mT(vgU^4A-m(>(%;*us%TXjz}xq-XYFR3tJ5aYXHTPk_$o@t z0vn2$vct$21bW^ks@&>7 zq*M!fs3RE>tjZv z?$$0~++3F}JuN%zAX^nI(j%ZA%Jz0aP=AM8yev);ZgkO7Qcvpy|Mh(V?{}nCHSybd0@fgg^s7CYh^{R{0vLV5$oG6b zyD9lx`c=Zn{K>2r?&pM=_Z-=jYx80T8`jgCB$iG(^LNKv!7uRw)p1FE@kPb{&iw9j zGSc5fG)s!@E=rl2_-vIz>sN)Utqie37|to!lvg$^a~p--1vKe)WM65*PbMaLePN}Q zg~ZAdK*+MK3!otO@MG7^@(4S=+P}SVD9d0oWTpE&XrNTt`Gd=0%Y87au|2g;{5{~c zf>gYLlbsmGp6hm=M!xItY%YWEw`I!iR{<%U#AX6RBVbL#q|XBEtOB67K$TO>ZkejY z@CB2o#fN0mS)EaF&|PaDr_-Go|>=GV!t`kWR#cyB@NhtwRzuO6Ju zG8|};cOqP(!z^267s>(Kf6Lv34m?mBJ0U=b-Y^0%lU%w_!beA2;T#4Cx)~mw zE*VFPhqb+Vdt1k@N6bF1#&AmWw;qg*P2Q?yJ=MaO3j7MnSBc?KKdExuw~34Id)|Te zpKByI3*#R?2(e@FfBbztq3P|tg7fs+sB{*d3jek2Nk7Q_94x`B+Up1kdPbG+$j$xL zpSI1eZ(2&jeeC+}!C;jxdt7BF2ny?$ZRUMSfq;%MuQ#|>j7;s3pi$hiv%OUVbqZ*k z{Oz*NxcmS_hv>QQB!C47`1$MOry`#=3C86>BA*yVFvR!u;Y7|2MnFK2K!5M39QjoM zJfYwt=nf6eFB!PuS27jZ#yN~J1_WeUi*1DDDBQZwRmwt=3{$l`j@so^;#yDEX)^3K z?qF6q?j&lH9wAsDkg%*kW(IJ7l~2g->}a^9FkKqbMJ6I-=$b5O9^kZs!!a-BxEEgpK)!EnO1r-A5t!VS1xX#MZ zJXtubEesa0%3WA+baV7C9Jo+q)Ot})=#=I7jk&nl@d^OxgUMeMQ-mtuowMtr3W8K)+OYNx>g<@s?`G>BL zm;5?(!Kui6dwP6lq12^8=>rCD)|HUT)s?wWQC?|$m?ns+9LRg)VoL3>}J?xsY%_mHFabg`2N zu)n9>=jni;2Dp*(AtKtrd~`r+y$bVy9Qq+7QHiA?gaRlF-eTA5rzaKfGQ%MB(K>?o z{e9l&;lvX0^0@NpPt!wpB3KU8j45ZVSa=Ke_zWFJIR;}`cGEcebsSnZTpLUM(ZM@# zCjT&D8&uL@m>*5p?<&ak{#FBLy6YsL?vL#zG2a~Yi1;%-E_KJ>U<`?f1|XdGS8_c7SKkS~s^6cS=tEPy>e&JEfi^&P zcQ5iMX@+L%9dv-A-6OFAm$IcYBQw6=vD&fR(}lc-&;Fte$zESqg=>O>x~xp;kpqht z(uc3}8`ds1u9(cX(@bo8()p_S`Z!X!!@L58b<ln7QIdHZR*Y?7TRWs(_joV>lfWe_Ncb zD$@#Bl$0L0p0aJxTCjmDu2nrkFUoO-0I8cMeyj1}3h>3$il;J@r83z=_)ZR_5#QAN zim!X?9A2g_wa^Xr8o#hM4J)T@qpikD54C4517RxiAzf}MZ({Kg8?Efgp`_3|(0$7q z>P?1!nMsk3~EqWMpypapvgi!u1>bcj=Gq z6+nne>|*AXFHBmQ`1R(os}K|zaMpRb)om1wJ?!g11R- zJW%teE$OX+sCk=3_;%*$!K=6L3lSv4Q7HtrGgw+6s$sRANr8&<$&Vt-D~Fkq63^@B z*72N$D8R_4q$p9A8u^!PV?8OWKd@R-J=xVg0NE_*vMhrRerL&~59J=<( z){|uStbv^_lEs6cM27}TT(LNtu%Tv!GvsGCM_Kq>42JPBq+qP}nyKURH&E2+b+qS*iwr$&*K4Q!Q*z?^v zR^nE_Ebx$PlCDM}f1IM$aP{hK=Z$9;EV$vvpVo>@W#&l6dTAtW!hY}5m{Nf@obuk- zNXQzLbzbx)V*rYxIQ;Sbz;$L#9-s=!Fqz0o#1)CbqS|S3yCwDI#vRvnH`zEU z6SAwivn5C9O14-ohTXWQ^9seDBDZwJ@FqR;(T|hasWYC&&Fk_%+j(4k!i6rHQ`Ad8J`ITFVt}{iS zOvU&7(Oq1*K$O7s01+TMm+_!eG@P;nQk2_dUg97k3BNO5cc~qjb>TkZ^zo4{FwL?X zxBdPN28h@42GY^MDG;>!ZNN9COhgs_oK`>5D6zy40`LpoQ%_w=jf{e|c2bjMRe~wl zbA9untIMWz%sL%XtueVsLUEhCfynvd)`El9)>i5wLtO>kP;`f!cK?>z!e7ld;} zqB^r><^l{)aA4Pna(!aE0I5SO?yEr}6)U4ivf+%~G1ZDjNjlRBdpci@c;*J5&rDS$ zAe76WT4_K3?*Z|)gmnv3OlSLZm+Bz%C)BQ!p~hg?IXdOAEqb7;kU0LM5NGQlO$kOc zK-GD5{g>x^R$(TRCh3%zS1#~|s|`I`#e<7BFkPY?>>C86$` z(NuQcO*+WA$8<<_MhPM@)rWWY&6H(A&azD&g&uW_64t7~8qJ7bSbuI11dqL8{S5}> z)t-6rCjmz*M9fa;1u1_SoG*_bMO#|Xh z5^|-}6blQ-*`3Dm>a7;TkB{cR^?=^6v>Z3j8{x@-z5c&1Df8|r{Qyxwj-QX!y21!w z+Qle;Q>sfkt_ldU#4f0k@c!B9K|%ha?N`{)=&bc9bd2TFT3&sN`h1Qd>s@sc{2-zG z0(Zr=J!dC=8j>)iNb2nR-C?iK3X2L+Wp>Yuu`BNzb$WiL{FYbITPcG}s1@Lgizp(Y z&2pN@Y)a%_t&u9E>hIT+Co7H8ESK)AJ~Qq`PqIXnSGC*ZfR~-i?&Mg<;ySDcBLhG*P}c# zmk)tU_0!?ZJb(%9Fo9iCoucYZK3q!CKnitrSG_TguKuyhsbY6R2_JX{Rh@iuw+MH4 z^&pnXz?dciHR0&i+qW~FZb7-Kkb2vQSXO87?C1jd!(NuobSoM5j7`75Z0ewEx8NOy ze^06IdB;Dfgj>>@D{E}rOP9po_bH?YF+dJ74mLx;&nt&Hk00DGk z>FR2hlkQex&Qjp)pr|gF)dQTlI{rY){ks|{b$Q%spDPU zd8tLVBp_2+Qa18$ICgeM7TSgD1?e)yYIQ4Qszps&0edyN@$&3Y3#G$^eWit)inH!0 zN}-y_K%??#)Pf#z${@CV5sVy!RO%Ado<~JcL1jbvxm1^Usi4!}&jrYcwlSJN&+J%6 z=Jo1HHrTfMDJ@GQ^HRz4DAH#cmj1GP>C(j+TI-;EAiHg=wrrgpnkYJFbw&Y`vgC~? zH)k?SI;2W;&KcMO6NZSc%TOIxHREIo5x?&UbeP#X$!-3jP6BG3>)o1FmDkI;2E+3O z7ZDY7so!~%q}kwzmDr+`?0YAwNI8|hb^HFQ&-8lLdQ zEhs_|@eMQu5ytg9TOR4{d^m!2;BKg8=_fj@OQu~kY1a=ijiHQ&gR~8pPM2^tAFU&QG9ihP&Spf+!lBm_D)F6M8HYffE*t-wU^l{2@%`1<6n{(c^Vu*FqtpL|%084Me>aO((d zY(4$jeHc28$&{#@Cg_q3L)u8wF?CRycho6rJUGY*E<4fgkO?6XddrxCqy-g%Q>9Y^b!hd0 zJjKz#f_cCcu%rQ1flACLUb`Ma!_x>a+W!6%1PM{3oFJjiV6sL@@#r+KXm4a3rG6x- zU3Nu#5bS?_vi=6v3$+ zvRnS#XQ-c6+8~>^fjyU@AL-D6F)`%Vh`qY8 z7>DnK`b+5`;`|~BY7{rNYD9^7obiXWFuZQyb-SAtTrws0ikry9^^{H8G!VMF6x|-z zHV6-@(7*Y6UjyhM83`u>Wk5#X{OqQse^Xod8>B^1vDDs8wK3<1u#li;iq)_vU??~kDj(^9 zcQ2*%fIY+g2UpiE0Lnn1H6%^3T0p_-AgE<1_$EQ78PdrqyMg^Cc$4@vGyRZl+}fQw z@hz)KcxYX=Sl5}3NAzB+mw$3OxKG0UBm{*VZZcYgJZm!@Ra_&f)!u4Qvgc+B#$Ljrfw{*4$Rvm~+H7#YSU|%517zH}J~x@$ zBm+~&H{;XuL6AC4^7H##k6YgOi#3QfNa>WR#Y=C8M$IX_Qy& zy9y{fYa?MjP6_b+I{J)rP&O2MF!PPQI_ShFjMvizae5VYhR(RbkolZC@bV|C3x0m= z1hEMhf2T0sdcZ#_=;b((Rxa;}*x{uPN%`Acm8u zc+6nf^xX(hnunlMpj{WvaNmyijmyW`@tSbIebC?#z#@HkL&%-LlfpL^eMofrCtkl- zRXpU3sB)lOMi;>>9O+Z-;{M#;abA1FXZ;a#PH zt}C~<=7AI`6JW7JY!aL3h72DmEDypR0&Mp0b|=I_e-E!miZA2yKd*GWw0C~w7Uox? zp&Kf_Jndh8RU}9 zCYBaXz29YXeF;~7m*m_l$jJ$+3J4DG4D2!LZQPl$UiSd66HFQSEIRA=CPLSg&Afk0 z`(}0}4(~(i)5`FlG17Q}22 zz6SJWP6moPI&Wah3v1 zGE6Ev)Sd33KfrY!6;XgR^B1xP*xc_;=su6qrYE)SiB}yyywI@b_p>Lrn6LmP`(Jv8 z3tbCglw_0((l$JbEp!pmZS3o1;Np*hJP?(x)Hat|7NQ8rj29$r_@wK|f_VTUhp_E1 z3M$wFif08Mag?N2f`Cmt0LI^+1fT!!p8}Au`TxPqVIztZ0}5XvbR#M#WBq?V$TJzz z_nFi>%GtwRzSs@+W;Fk&!{q;gSWcuGZCZjcF5;w#hyI*SirglZy z!Bi-`78M%I%#LQ)t;&tAAe!OLk+xvzCF~&`o7R8ME6?+$3vm)yUqwvF$0w_xWz1 zs-R&vN&f!0;rsd28>7eP_5O;gbt@T-B%<9s@4fkX8cxDk#V>h*eiEM5Bg3BrYO zYjbKDt>9{BUKYeC^_J>&zA|-DTXZqKAhLP6H*73mJ9{zmJ-^k&#MFZC9P!z?$u$xE z%i*d#&LR{4-N9sXtbH|a>x-o#s8Up#Dw{h|A&VdTb?iZSea3P5n&L!Q1RMICZfI>I zvz{}+OJ?Pm`u+S1-Q{JsV5c-+uxa(>?LPIisUI4Do%Fm|cyK`ZL$Gz?>Om7})Eo*t zv|wB!e$BVD`E$MTv`_Q4?lQJoE%#L?XFWXOjuj)3Y5nftjVI{sBeR%kpdHX zz3M1YvY$zzdu4648FyC^SB*PqR+w$0V(f8{;(8p_VSo0LGjgbPl=(R0`!N5)8SI|OHpwACDpdp4)xl8p_az0oXY0?LewT4v0^DiBihBH zcVv!UOoVQyaxxQ(Sy)Mu6}76ap$$=wO)8bIMN68pvZ_xdy3@7uD&{@E{;0?TO{IF_ zBh@FXb<^dF_i}Z%jhOwEaBbV;DKA!m5n6QiIu>jxGC7#2^3# z0uu31yGlk_gz1u4gXqeVi$hz~`f^Ep-&0DA9;v%T;_x2#8-(P&El!o-;e@!DIHeAn zR+;yCC^7=7b1s}1A<%#Kt6pr;nuo$>RFZzOI>l`YHHjZ^c_HW&1= z?um}-dp91%hTyp%iq%pWI)1L+st6dj&)p&{U#P&R|8$b_DMRF*rg*V?kfQe}Q{=e2 z!o(W22RHLvS`SXG*u!y$TIH~U^2p#%%nJ=&wUGCnk+W91lWz0Sm3rd@(7#qSDU~VF z@K6Zq%LAihkg`T=Op35!w_c4O3qMC79<_OAhd`Q`3;;H`1ECv%4}xtsbHuju&SvHS zB;B>6^U+|fwxr?s^B)D)qQW9!J1(zYb7hZ;%r!=4r0&jN)h%l+QU7tYKTZI3tPxiBdaxADd#&w4#H z_r`z6^V7LMCiQngrJy6?CXG?ejSl=amGptS#?T~Q3<}2xH{=vM3N7^ng=bF4TJ!I0 zDY6nMxh9SgNA4r39Sf>qvL$7KBy+#voO^g!o0V*8ql1=A`k|%(5tFpW#o@tQUYzP8 zEY1S`AuxP$Jg1PU);E4s6dB^S$!O~Kp$;fcAq-AVD;0_lArPwAnW=6`)ikd~kL_LI-Nm;xH%-CA9xIrce}mGRjjn;_Gr5B$JRfwZAYR z=tv`TVAPy01M<;PrMVnl2_GGGILtHENtdN`G zD9*-LqL)LSw#q)qvF#}u8w0kEVRAFSe}CWF=zB zn`p@*A8mvCApn~hCmJZaiS!<76@dOKZd|IuU4%=0%2Q;DC1Z5#$snMzgv&A8qDCb) z=jmZaSxIik0+tl+dB`~D6D)bKr13ruQ(ONStE~%IW!QJoOi<^|AI6>F0udk*S?pc* zJPiUvlXoFLEd#Gkv3A(EeH(_FQ^hXDnk>$3j2=Q2J^~G31skPd<0-_8t)lJ}+uP|0 z62zg_Sj9a+o;0f9W(L1Q=<@ztGFI_tO3QLEvn7JJzwV|oSa6dY%#?wJUV7=;;<6t` zi}y5QREV2KC#W^;Sq8#0M(4po;Q((F{j3_jgsI^(95K8EHwvexu?>t|(Be6|E#S`AM z?OoUa4Kb0Whk_)@%LaF6BLbrcEl=W9@YbN_Q~0XXwC%7N`ALG=&Pf2ubX4Q%D@lkA zfaB2^PV2pJnBl44IGDVhDmggef zjnZGeA;8c}te79^_DznUAL@l+NaXOXjmz~@Vhh=5q zFrR@)3%5Shx$6l z>n4J?Mcn$wrMVNK%P?*rh&rZBIsX&Q_*eZmw)^C8PZPCVdl4pQ+{{~DGAl32j3cc8rJ+mT^QicS&5(1 zC$y=7*~Fx@72*mI{msw4ljTcVyj*H(s2-L@!}V#;M$<(^f)-g$8k&4KZ%c7VQgg7# z^-N#tY=GADl49xM=HSUso5iAI{Ka5m!^aI07JOsfH0WDd-=Z$ku9}ade*~6t`hFcW zqwj6cmW?0L`R+Qam_)6u>qEO~e_vEf`)c32NxdTp*lJH*&!Md@^Jnokcq6li^Z_3( z9iDM&lDVgV!#3PCQGhuoW309S&J(p~X{?k8%y3BT>MPoyTLZ{jg|#Mt_5#|TUPeWj zKde`nilAI`Zu9yc#$2$eQ%8!(kt$>zrTqR0hfkf&m8r&}|H;T>u=XJ<7V!#U{w%cz zoNHiE!4&Kmv*>-abx~Uq|6^~K2s83e@@lM`^AKw07P7c10qQVbTm){AKxJzA{KBzle_%LNu9? zWb4{~o-DVFbVTS&1$=-!M_?edNpG1$u!W^_UD5|joC;fUC!(m8fbSq4VW9EI+Z?D9 zGOgH*qWn3+^2~d2${D`{Voj*^EzcTOm(a#N^$lv}llq3cHLQbwRC6dE2UP=kB`74= zD1VB|1r)csUemblW>;OgXhg;xKJ}#-TjR0s1*I2%9*&fTwJpzYGamf+TzAYD*Kp5N z?xjS+?Hv-!GM4h=S|Z)E24xCt`cXufpZ;3=z5ql*t%Z5*<$--LL zDEI$93w6f$gr_Z#>=`u^qf5;m8EGO1iqSC9&1=U8 z8(Y*+4o2hen*fm?1(-QFG&TpNFJd~?aIz9ENYD1)4&`6{b<|osa#gDRLbT-IXXth5 zFJ}K%GE}#89NRbatSc(dvH=t8jozJm28$xq6S-SoZrQ5RPrp-kq=Lx0rpc;RZMjGQ zooQg1k>2!O-#{M|v`TcO+kbJfxUteosIFf5s%EBlYRj23?jJy9f2xp4lPun+YT?#; z+2v}N*sa;k47-z*W%ha4T1njv0z808VBol$IzDg*xm#vA6gnzoE$#8TBXm_2sW}3! z{28Bq#GLR2zK9A}PMdq3v8mtj4CM%ZEpHd%)64l`P|9uqsy8hkmOt5sksN^fpnSBr6SHX} zIC^)C9xe?!;eyuN`;M(aN+U(N#Pi*>z7AKgyw=ic!gbwC<(jg&x-oDh(8%-cvVgNb zW)1_F3=$`Ly)I)nRLp?3G2Xx^2boBTVt^(G=|madK1-fGtw@)q7`Tu} z>-aQlabH68Rh?~usR-Jtw0&4Yyk)cS+*UfwXKxC2#uy>jF5Ini2bl-cA)i!VE%ig1 zsBzh)X@9GH#zXh1XzzjZTk=sv#vfsa<*yXqJ16}Ir3BW4%cUjQGz<86wE@kLs2FYG zaFpC#VEX)TSE|kv``mcnjbN|59Z51&unGA3~Atd4zPJh1IBcSU{r%b1UOiHc{{; z4D_?<^-eE+!fB7FR3A%h#^1M>l8Y^x4|d--?iZ*|Rm6yA16{%rxR4X6-hhC)8CQ>- z$%48)kGZDY^XfHF9Mr@1EB5|p9X&=pQ>Q(r5Zdh8sJnrdD@)3#0Pc4+yb+u&vSkC^ zM#2vy%@O0mOABNx<`ZOSVl)o#|J9AEcTM?rw!zm+sw9@)%Fp7mLMBKkX73gZz7=!9 zG86r4z?pcjqm_USZ>ukA^zOSfTxDm&6s`I5b^=us_R%N0faH_i=RyF4P^>by=5a=m zIu!S>(0!Tr!M_|^PB4a1$e*}ugg|ggKRU4lOdIIHB@=12vfOKPL#Dk&Jk@AMp5^tk z*bF2woLpCK1tb*4EK!?;Ce#&<#qW~4?an&a9A3z1 z635WE!f7`SssnUrfVm$ZI1xkp3oMkNni5}J%#4zw`K*iX+D*nGN#6-4`zgvE#l<`Z zp>Q6&=d}vWdoe6;l#jcR#xqOaQa{CqEFVssE=Z1akrYV_un(4=qsUsfsm+t5xsYd0 zxe`G}&Q>Vr_>qldg7qnhCSLVcfuWshmy^@iExxaczLAHQT%M4>dRC6h_~8x3iCrdV zl`joOoDv%w0|I-et=lpaw*caA<@_z3A|b9~Za_UF;~V(X%Nh*p#RI=CK)=`d!vWjQ z%~+sm7NbK2rW36ovk%KVF}cATU@|cR*UqFq1Jq+@tIbjqw<7ND1gq@^x-C+W!CsFT zMKo^~7Cvw%lU8L$)gbK=)~b)0rQ#yZuFPx6U04Et_kWU7wi)lv03025^qK~M`VEe&l__7_B@Luh}P$i`!PU(bI*IEQTS8d#Vw59*k=g`9W@2) zSuMa|t_b~SWi*@Uup0y^fekJ``4l|cj}#0~&o3$>$9+pMSFX#!`>AugHN<+SPp*>7syi$$r#aSL7sl zhEZ4`ZCT}6DcU0T8HAiF6b=^>CzJ~E`{Pkaqx0HlK@=2>ToUedCz9mCY6`<`1cDMt zZBK{WN(GhTP)35{TaIWi3rO-~6hgp@rT!nyD;|O{{S0t{GX?f{~4I!{9pNjk~MXl4qNKIS88{)I4G}zUI~5~CojX#ww5{)I7?I2 zj@Q7fLK2fP9QSbzG(W3fw49~b1e^!Wm5Ov5LP+K;SYHmZLVTt}%f_HT;XgZnbid9% z;DWn9l|u4^jhjq~Yjj;)l;hP6Dt#9+SBezx_#+)acH(SBMz zC%3owE1JEWoZO13)2pajMO0R4SX{9iGDj-$?_2eJdmWZq7)+9Xo-$+ge)OKNHsF6= z!&>d4sIw+?n%{mhd$r#h5QFWW)!tfnd|x+?k9QWa&oOFlhqYR(1)qo6;(|#Tu0uC% zuUbL~tRiiU9x`QawXid|_?ib-uS>o;j7JuFxSs~UT-aoKN7T3#`k;iYi++@g?t`nZSu6btHE?;czdk4(wcU`RIQr#{CJ-3~-uJUcV(#o}q0=Qkzroqtzd{b{_ zKBz2AXR(BNRFj6;E`kaqwjiz9g^l_BMoh;;f3^qs$h)N6wnmOuA$jeC^!FQ!tX-a= zTQ@|Cn~~eQ#R1UtHfwuWgTL;ty}K`y$lB)MpK_8~3SEvLPde34khp~)ENI6yr6oYE z0RJWL*EF@A`uilaK(^^=#r( zDim!|Hg3p5F*IZ)L*}>)JH1sb9qvaf(<8Z;bkN%0=5>jm3$MiOJaTe(+hH(e36-c< z2@z_7ABzp#xeRC`I3sVoGRNZ1AddQByAsPNF~}VcwO}{y?s4h{Um+1F*NB_%aLZ#d z^^O6fhlL+A6WSdE*CQ%BYZuKpNB2m`F&*g+)dO+~$DQphE=UpRliu;$zj?AafRXDJ zyjE9hsxG0D7wpS8MleuN}kp_H7`lsrco zerZ6ckhthSN%Xqi_|Q^ADZl| zB-ctTMKT1Su>z7BVg1T1?|p;dK~a_LXylp?$s2~!6!T1{m>6!;9K%CHX73q~FE&1S0S<7&_!i-Hml-NR7qr5Qyv3R;W# z4B5^BK^;JZF4wV}sBhgsX?AExn9cY-N`+is~oHGL~X+><)) zp1-PVMbNWUR@drK!j&(GKlomHE6Dfg5Fj;MvX<~nV!j~W95EXLIp`kD20@Y6W2e4d zbSj}kXVt&-1rWe;334FMGOzE8{$#0&3N!ep2)zSv*JARrv?tp*)ZHYWG_=SHw-rCP z*?P=wH-+BM_#Lck424u)CiJ8I8C_ zG>ZA-gQck3m1e_ZOB80;k{XUsPpihPh>s6xw5oT};cDtU9IBZm_)0=~BS6YKa4?9Q z36J3sQ|reJ(7Pm|a2?W9IU_{F`RM`6koSRN_xb`jc%n_d3Y6$2r`RYGVNL5ojU6+H zn1ikStb10JC_oJ;qXD&!DXHrYlx#96(BN|@nA6cHa&^Ya7%2T>iyi0^o12q+#nY z(Df)tpZKLwd~6(Y92Bf@HKW5$qRH9xT&rJUax5FylPy4!+N*tp=0B|-4ZPx$T3NuM zAahO^xeV9-^e_Qtb?B_vttK%DWXM@Ff*dtsC=!7w5^(nM8Z=e1f!_(@9xxMaknBJR z;>9c^h8tRx-0mH3G#2ajz6G~ zH+Oh7snCvE!wHJo@BvIIAe(wecjuNw6IbFAz-DLDCGnpBiV7#UgA=zdn;oB|l$pYJ zM1dpdYUq^WvOg})Joz9ZBhOiV@NW!DemEp4wkU7YCTcIU*<;|Z>JbQundRbC6Cqli z_Tq-9vPcZOM+T>b$5kVoPHU>DdK_D{vhnA${4U|MueZw_BNcUZ%~!W6r=A4y{@EhF+!sn` z@u79ys#4{Z6@-RyX@UxvP4GW!$Ye`T)jLYeVdbDnldA~n@sai^71eoag+WKuT$FR) z_UlCg*)GfuKOQT8WSr|bnF%QF+72rdOu&+@r_~_$e#j1( z%Y6N#;B_DAnl%v+dgac0I3BaQvJqSPv}f7M6@OrDusg%E^Ml*xLXveDTURAo8<3Mk zjrV4iFOcjlJ=pTZU|NgM_dv6`{;F%NPEef`p}tmrf|1k2b^TdBBbR#7elY|8}yjN#L*;%5S$|{LA{iPZw%1Ak*~wpgFwSZ=7)k5iCMAe zXLv}Z2O)mO;};~7Z@JY?#hP;`*v?RZ#lQ<6k(6S9@=wMB$I!FTiWJ%#)U$+gL_i8B zL4^{ol5`#)x7FDY^@fh~g_DC0Npz(4F>}p+5^2z@imqNdRHMd$3KmkxjorbOqwsSQ zh6Kq zP^w{sL`5-#db|)zBPOS(?Akye`a=FS9X%5o>D)(Fon?cftHRs7hyJ6^dbrmmDlY9j z=vEuyJVyE=_QZi*JAyJbcyO^#)3e#$3$%UJ*$FWl9F!Za!}@?}7%!MB2B`5()kCcy zW+Z)J6F$q;%hw!O06)xxgkBE&NFiSrwEnM6dxmcz%mpt~RduS6tMhY}fD6qQ$xaov zY}j%`wS458A||+2nn_dIgAzcU(efm%P`4m>?HvC&E_|{Kk%szf8J85@p7OTD`w(BG zgMBGqX+C7YkULs9N=Ap&P}{qQus^Z&Y*}?J>Nhxr9_}OnP{NctIf~-rjoLtB;c8Lj z;Hvx9oWHuL(xvG#@VQ?Nk{M}mHi}UR%nJBx1|vV^!_hqeS=mkpOP$}Nx4eA8z@4IX(2C`8QDx{ zyQvbV%NbU&*86V4$|kpwm^gpXHVWN#V1UwXvV3NY%twY^VX#P5{E@YeXx4=U!DZ0v4y?m?Ref*~T&&Ijms3d^&D z7X<+9WAx-KyT}R2?Yah*az^<;1;`dJpG##jr5S*Z1-!>}wXn*~#3%=$1YSJ&nR&(p z9sk}|Pb7$A?)DbSjDiSX0n*<_;9ZyJ==xnH^t6wXS2B`&qAxo;yi~h3+j}@D(Yp=d z;*(>R&T#falrT|~;eEsDi+oyyp5_V!;e}di1JEt@^P`em0|GH!ax-EV)#xC);p|}u zV%DtDBK)tr?I}DfP>ufxU7BHI%PaY8Wiqa@eC9TQ{B?1nGy5m%;!~5a)B6|sNs;;; z!G8IJv#aCUJ^4a+y5IS<@`_P6wd#ZImP?GC^-Mck5=2AG7p8wrz-<` zWP`e3f~!`;W9)J@{{nCgw65yFM)AX=<8#(~qUHVF0%WRjqQU{?TdS&m5jc(SD^)bo zs`I(uy?i^~ZXkzEt8gZ=LKWK*VmBvy@S0coq9Jgv6GLzUz{KBfQ8k? z^zd?SOod~DDoOcG8rIf`jiC=)Gr!Pi-YabiNu}V=nVs+3DPOZ4@7LD__}9O7+GpC= z``5ns-(S;eu+Y!;Z4myJr`~@ zRF=p>-yUWa10Sakwh6q+v2SvG-?w)L=z<1D$Pe_(%`t=11-^X;R${RxM&@vO%FCJB zB>xCm-n=f2)tktCaXto}$ZcvG-VEZF#)Th3>t#;*V z^becB^KBmacFH=jOg>?s75#0P)A+%RBWlv2S|NMyOvgB ziMF|~lwHstclEkFsn7n{3-Dg67)G%r27=3XZjT2v!9<6ZX$bS@-H2pSn=6la+*;%a zbJacMbGZ`O-~ri^Tp4%9`|!o=EVbRnzawP{w&FqKuzr+=LI&JJGnB(4#&soYk?*(c zptNFUBXLgG4VhRRL#dputYyj`HXVy-d`>u{yjbiQdMH zEOWxB^34KgrUN27qAT){#MskH?&T6MXNl=W43g4NiC|F*XgbTA!?l&BQpit_fBw1o zEhxB#R5oAiVO8JyNb~G!g*$fYXC{+9xHFu-99hpmmTsl-^Eq9j9wD zl4jJ#Q+sgyoz;Z+K(1KS=xpo&8!$b$%>lvnC(2;%*oUJxt0O)7-$B}2TwXHMnq@yN zM>5q9;=WvVPI<97$sj`UzT;*QaO$LN#`0EEQ(BE*b=@<9mK4T$^t<~IS$alj_Msp0 zKk5b_s1X^BouGrMtjl>GUNT06G={+mjy@Mi`~o5A`8G)%+LZk^NqUY?62^b;o_tf0 z4IIjxgKWe~oe9>EnmB8FN7dOyq-{Y0vIrub@p~U8-c2fO)ia4k8w)CC;Hpr)eb_J^ z_Z|`Oi8SW=Z!m&PkF{y1j&h>CgH-w|gg0=$TN2zvfjO3%Yy3tRHIBys?$l%2nO9xH zXoo`r)E`Ek9@l8y3?lrMwW~*LG2%u%&Ji4IlHeh2-ag)FJV;UN~y`YRsc)iNs!Gz%T(4|^6@uBXpmAcu?b&WDY=tbnp^a~iV`cQQGU z7l*G+KcP3hWYhkm{%EE|NOUxwPPLKoL-hF|W~!Yb2kFzRa*^vfo1=e9eC32rxy@pKh+VvyV^~MQya~mv> zM5YUe3q74pasC;=Bl4~z{Qekb?g2^6z`WJKKV1C4t8ylQ336KySQ=GA_zCV!&W3F? zP$?=k2oyzNEwiZ_+mNi9-XK2P)_{*MUf0(!LCv4Aa4xuTm!f&tFHG#Q!*6%IRp5W`ox1RcDIm-NWr6#SmPQ8JCYD z9#=oskmrGKfRJ`%GnMzZ1=z=(0g#F;bruU8F1M9q#zQbZfy-jy6uR(DFz=O`kCulh zQ!Zlg$15YpF!X28qHr3KoWsv!Ynq!7#Y1m8#laS<4&@7`impGW8jY+$PZOI6w^BKG z>=|)O6jq*-2H+khmJ!%+SyTwr%&lU7FJf%d|LL6PCsD!c23gK-V+cV4DIcB{C;x{v zIHs=NXbEE%RQvING4_tZy+rM{Z)`g&wpMKGAKOk=vf>rnwr$(CZQHhO-0Xeo+mWa(f}Dq@ zu#Q<8Fv{_o!juBvfrfN}S}<;0R#G};1X{FG%}X%Y?QzMK$MvksU)yHO)n+UnYveyW zE_&6fQBZ5@$$mJjeN%(846v?C*LG(z8z#UBOzggq7KKDF^2Hzl2d*?LDFb6EYlB1;#o6d6OpJrAiRM}>w8 zVS#>Ne|QGe)KHkU3M|EuoHh$ZI%!nDmCJQfZd_$bepXh;&XRp6wUkFQj>=y=@UV<7 zg%ch!$$$J3=sX|0IOORDf$OOd4B@<2iElBnTaBIwytizlAod<(Xt!2ku&pT{`RT=P z%#D@8#5uZXfA_pOY=sHVZYPm^xfn<}l3jDaD%#&`FKJfvYcx%c7p0JP#(YUve|GRQ zUAcs97?Ty%M4c?&;3?G^oiWgCn0BOW2G zONw#qjVYrNx`7rhxDBErPND41cRO;+`vgPnsj*UV_tp=zKGWCiA=&I!6s90ccbdW< z6Z*#nmxBqhg2mbBoL6669)HsFC-WAMR<9T2GaI$6w{EcDFh;b1J|LM z+Hrq)cCaAX;01k<)x*#s_hJP69Be9aDFvvMltreRrotH;X}c0BCXB$Tb=3`drGG>q zA~i$Wl~HFE2=z1^kU;6ccP~4ctr;_G5kp0%3h~%bltnlTM(6kj%4FqedA{KxAbT$f zyp#mmt5UA-3>8RBl0sIokOsyAmBO7}$U@~KVH@8f7SU!XH;4qlsDOQUjn3Csmri*| zAdjNlObk1c`MtZVdx@#2!6?mOdTZJDSbcQV1D^EvHU%qU$HO)o2;Rj!{3c~LvnKXeccxz6JApcKYXPhE)(K^4`DQF_~6uZ6K=0lfO!EGbmKq zM(nvVP`d3>L1V_mc*X3r@bbKvSXgmlLqHU3Al;-+Az-8IjqQ#L^WXY6$n&H}@7s9t zjWJ-NY%o^^e{^?!HxsDJ@Hu0im{)T%7Rkc+zM`qL!KUiU*7UEBBemt07JQoU8FksH zLxUVHLnz$65mPu`3z&G0T#dS!MNm^>1r?o^xH=Eq`j|=qIZFFDmd}Yxv;$1X9puV` zPb4*xk`TjL6bk>yPAU`hIC;mT6c?J4P?RXFd^pBchz%EdE_6$Ah#wTO*!^15;!GZ6 zFJ|QoY@z+mld_~4&0yQK{?wc~Bk*WcBDzC4=_P=wEG2+!vZuGc~y@x$Nd2YzD(r2zUU!<5e_i0mCv}nw|9S&JASC$6yBe8|StDf-&qG(YQa*<_J(= zjHSC~lac(G#c=Fu#S%I#`9NYu{aq@lI#ypx-p+h>LY`u?5ddN=075Ra&iWl(i8)A7 zRKD*JN));U0M#yi=@og&G4Q;YZ5^tn-wyUN#=t?=_3`AfsqAdNWhc2^k{pghri$Yy zGOXVy>C1ND*1U#KS0SP@di_aA#+JKVVYd%u`0E0SCFKtIwkysWdA-2N**;6JLFU@Sh@XuG+%(ewq#C2vwhaP!F=GRbJBy+$6oR;)nn>g!kE0f7FNH)fhi4v1Y5oxxyu^1KM=W?>|rPDw(RFU*p3K?Kr~%v+1HX##NinDi;9 zZ2htViHh0u<@#E@hrrf}kj#L%)GJFV8vdg!s1~s~pHsK)dn~Bj{;RTaCe#A?YXOU5 zP}fqk8AxZcy5fB8CZ}+yxT8HXKN&tcN|SPirKQz`PqIV!or02x;wB2MuR0(OKif~<|PyMH)kN4}@ARYxPIuf29 z`eoXanuP-9B;cxNFuH20uR-)GqSjm7u0+y0%_XjW05pRg2XqI8u#3|l(pVi-m!l;% zDK%A%xX$`1DHAqtt4~oDQRXQaT+=wuA9E!f()j@QzYmn?X(1sZn7v8~10)uyvBmK5zn8>%v&?_41wG z-l$$1Yux+g=JZo= zX(`kBO5|@F4Cz1HYIMx0(45`2Ow%y>ukA&du*t4Oq}3};7v-OKoVWy;@M01l?`BOe zM>KjCWv`KAj!BpvDwgBN52U=+&*OjBRm)!^ABg8QZ;E9aDO$(Egl>fwtJ0m+t_k)L zidpEN74%%D#}Dhy+8!);t&jS4u!>*l?Q@y`!VH&Vw1p_=f?em+P|vI08O^Jb_Qf~c zT*zOl>D0k*ryT?*#yKx)pG}|-&G$0wqEFE_-x>zL;Ey$JsCX_q9h6SgM0U)+&-ZI--`iHZL#sPwzuXe!>0JFy1!QXpYnQUB*Uyeg^7xb4 z;vrzBZQE^v*w0&@T2nLfdAdJ8lB`I0?`*kot6%!H(V*IXztom<-SxIt*bJI=v%Rf- zy{K}HX8(9fC8jkc4F91MWT<+mU8b?A!iel7@B)+%Fc>e8dpwf|13<_;7@q~yqso&I z*Qu=vpP8cnNe&1%S_-)(*nNaTSzTOk2KZpuhJ-}GsGNk#S{ z6xCL5iJ`-GkGq)C#Vj0GRXgQFJ+7(#1?FS$#a)S3Ze7tPMOBn#R)jTqjA_MIsFCaS61=M ziZAwqUjc{k(0AR2uEqP@^7+v~|&c4EM@GQyiS})^faR-n}iGkG6-|-KC9@OzQ z*>o6{8&~1!z_hN^$Jl3T7{%I)ChHRoa)i~5pYi%*`V3z5QcaL7Vdo{q|nsiL38UfgJe7vfu^sby^(*s-qL2@ZzNq*Wa{FMP# zESZWO4XQUHT%LDpB^83f2!ZbLbYunBtSQj>lh%7KLFw?j$bKmt-iIs2e?7sB1hjH{ zmI%V|WDc7=X{QR16w=3yWAznclf=G7=l723}KNZl=7FHJzy0z zIoXk4Q-?i1f4qdcbZL5o_Cl1#6=43}qUQ$;sbhp*y=%S1ELv%8=r z9uL>BSXWl+$_>9D`=;6k{Yqzt1;C&7xOO9j1n~NR7=xZDXPM1x$H`I$0N*6%)+C_x zE^gMI&$GQe%Zor)jxUB$hXDGR-h5wJgZDq6f5Jd{a)5E7@4sa7_wQGuRc~XZlDLAgQCA##>b+Hxymunl>BxiwoR@z)x`HO;_KqT2ovzDF-1 zi&<-edufU?hi1JX=}DXq5A@b@mYOhR@JVG~VhhVKu8SJHBFJONm2R?1$17KZGAOZjF)hfi z*{oCqCFG8k9xy%4x`I!jWL#m~@#xD1SO|C9HoCKpcib!2N6)rp5lT{BpaMsjhxFGg}N5{0kyJh~u-EYY&)fXLTnuNkpjNTOc3{ zHtp2x)IYWN_l4Ao!(;eX#(wvOh_uCWFKZ7|05;Piq%Fx|VCI>Cu0{cKmlhiW>UNOn zbh?xZoZrC=yQoDNfd#9he!m0fEBVv+Z|w$`$ZmE*t?HW<>nXi1J4KkIZ}uMKzFk;z zyMQBjxjHNzvM?og$9xS}3Vsnr7c9hfU)e;0)(6{KPFD)2lMPioJChO1*MED{^WzE} zbw$CFvAA~N*pHv!%&2vfuRd-NBPfonYOwtktkv zDuwQD1O|12EE|-Kya$3XuDcX#11lT#Cjd`)FM@tnD!|TcsF>o-P-fYGKduTBd=1*~ zUwoF$-a%i0CM?5-6`n>Jj%8W!u5Y-n)LtIp=-{gri=LKCn)FIo( z%2-_rU;K0*P5VL}LWJQnypS!j)*%*1^Pp4u_|Zg=zQY)ufvmUv@m&G6{oEdO z+jTdIyEiI+Nw!OokdNP2R=BU{{MVx&m)-M0(`$p@PV}AfloUazLX-^JXHJyVX7$>? zcsGKs7%baXfVYBdaOEkJUtro9wmYxd$2!m2>2-QpRV`B}8;PZ(Q4h1mxISA*U_2_6 zB!US-SwBHon6Cc$c}ny`ciCKi8ax%Jj@b7%Foa$1t^GP*P4c2+zc4GB$y+@xZ@&U| zqad2iB5i0IDlPGraX^F$9~rPe{+oQ`mM-4Rxo2rhH7g4B7A`MwoK20;NIT&!kt)xiO4Tq3Y zK#At2(m{on9EuvAb<2CuM3d}i%)e6*I?rXH3xgoj7lp2*kgOJwkXUD|`mY%v!ArWq zDX7aO=!Pp2J`6y5+Fhre@byVkyZU9^aV5U9DhQFdT|(Q9rBnT)4?+1APg)^X_%APD z=s;LK`br12P+%uy-m>2fZUB5X$8cB^`W(}=gOGq_G9|W#Pi!CDwl5?O_2=_yaNuWJ zgFyxil|RQi`$r;z6>kYus#?UqkTP^QGodOpF7CJJaKD>!8=>SO-Qmhu0#v9;SDLjF0No6riP zgYMO40OcW7`RBg8y3n>)p`KW<~0KXBT;x4vIHu{C*mIMf+)Swvwpw`-f?YlEiL zQ9guUgMd9YhP!mqaIKl4ilEP4gR`~j{fK;Rho;r+$??ILT^D~2bbV9W;=N7ljOm`b z`apQT_B|1~+&O&Fgn;m{l+(&-7;+Z>^!e4c*$eHnOV^xZ+@02&G+OJt(qh1EyQ&*A z#CMWuF?l*uBlNOjT_+k zZR-F4LIbLx8Dk7Yo{$_Z(&Z1LK+KP`+LCHTTP^}{toP4%=|j%Zz---Hg-ra?e^r`S zptPXuI!0S^!(3GHp`04#gLTzSO^C_CSc8z4PRav{b{As6Jjii-E{3OocA=sV8qg|( z{up7=$y#h1x0!h##nWyMD{Bk^o;`sp(E}Qu8@Xt9To_QUXVnl0q+D#l6RDNgoX@3swBl}i4{;$2qOw+B5T?N zVXnk&K?;LiU7Olcx*e)uV68r3&tiQ!%d3d!g#O2Xt>e zTe{SpFhpzD6|tCLqgaZa1_Jx4--1CtPugN-Hm%#$!}f+})~x2x&^6|VP`)ZOtjyY~ zi9q(w$WL;Mo5qw$w|uu-vC9{r%lEXUa7F+YkZClWW6fd57m7pd!S(G*6j9SmD&`tq zJ0wGU%`wYaintH1n;4I0poOMHgv?Dzqs)ylQzezz9&^(v<9)suk?l#pb4#NcW9_Ah zkR|q)LiTe}>|{(z_)i0-XGxM!CLtmY1d8%x~4#w)@SO9jsS$XOBY&o(+~5{$53+HFuTs{_9j*M828?YN|o?hB0f zQP*x;CE59*%dTwB@^8_{NP!()l#)njK%n#>mkYJ=f^iG%RqPVyf8nf_^rWJy%2{H) zQ%dK;Gb1m&8;`RgCu$8N709zzo>MAv2hVW@<@m(zlp>IVc;tZkR`&wkWGs|HQ{K-c zRIQ2GUmE2{sz~ARtfzyk!mMjanin!c7k0t;(aSv0X8OOa{KZpoXR5(F(m7aR#S5gH)1lfR7spuT0*Ejvt_kAO-w<+ zsd+n)V;0TQg9)0zSx`6(w{fWTX4mD&QWACZh~c}(5mI74dalE_@NDrlIK&oU3ra6j2`c#!F2kIG8vLRG*l0Ce13XfH|Oa(ZW;;w;x1wcm-iDp`IOZ5a}R|A7a(h85#J^biv_((eu76(%#R}$S3BlxWlpnC+;;b75ys%ZaT>we5wflH0sQBr9LVO)Vc&# zQ&1Uacl{yARx)Ro>(i{@1Ri*~ku(LWih?4IJLrVL7(}iUG6Qg(YGy}KwK)YR^D5M4N%qQRbYBK*bl3C#+tlk@U#De(H9V+2S zCf)7!{kE7arDP;YMe-ekf-)&OUx~&Z;3CfTOA3+O_yiE-#50)G%4+*P$GOuOdrIEV zTD-5O#f*1uNxigwa-+51PtI@owjhpcGk=)`cORI&OyXTrz%u^Nv+7vr@K^!c=zNk>7L!+O)7T zqtSHbr0HXO4t5U!xsMU2;B%XKHGFbG_ij!dnBo%yZud58Ewa*T60xI+sDaB91?W7l zD4Cu5f%fKkGj1@wu!c{(luI&bniSi5WMtf+gOm@$p{HbubB4xjSdK-faS1646A+G8 zTVzzJ#l~zU_V;uW5=wmaMEva6acHdQhlZfl6f$b!jH-c^;=N4jKWGHcRkn$s*g zaaTgAy@`KES0#rhJVVjSXAc(D?V6bG%{zp`7O|*0vQl)32hIQM+7w;FLGy^8NpsCh z6`b&fVCf8;kGiXghmKBCPH8LeqjTX+(CAxo8e>-%n|t_XD5s^0+glxzQ86BRp(JMu zPNFLsG94z&|2(oP21Q9BV$X&5ZyTwI30At?o+)0wM`l9GgLDSnR0^HMC=V-Y@g4Ke zdpMiwc>_PiA>985x$@r<3N^Lt*V!<+qe2whLM@Bw5eUDmG<1T z6-KLKVYDk0N84^W@lzpPyThFk6h~1jUOQr)e!JV#UPMVeM`bQ)v#PYc4i@f48^t<{ zAhuA$IPTrN9-2KQ0}H0WrXeJQiX`5kvFu4j2{XMWgFCZgOy>4vcP~z-lehit>aU$# z!?cNgFKvL#Q*^tzh6P(RGo>(9If^F9Le0v8Q3_U7{9(ioTYzwR-wxGV?N8pBX~y5* zMB~=ZDpD&U69shfqitrVbec=R_G{;0Db|>aT?LC1AZ;7{;^8P|*5d}P(bC3Tbgjzj z&VYjRv7`Y6_s9c@dIWb`wNW|bf4PR#xB_Kroj)rDom{2OsNMW;??-uL@fejt*DNY} z8h<3X<-Q5$!>#;@w8n4n5@Bz=^g_;HkP7puWs^)rNQV(*VNS5uwR`*{MLovJ=1W(yYUO{Q#X)_9#G_ z7#9qn;{2Yco1_bj4X3q70kZLGi|n-oq3I1Kxz2DL1PMtVq2F?ou!F!M8Yk;=)(72} z3Kcvbzd5G0MsV;X+Y?Xz?%o-)(QC(fqcx~Rhq|@RJH94lRPIG$3y)e2d8gN_j*7*- zv1S>D4bB%l^31)Owlqa<>#wj@Z_fwBiPiMD>sDit2UlgczK(7jVhwGe!;Bi{0k13A zeH@Zl)a)IAJ`l47Z9kxgv&W4*zwytx8PWbu$J-P0su=~1##;8vJl=zPoxFl`$AzEd z7q+Mfx`ZLZ%~iPPO@5CAgS>RbgTW@=!X|Dd(t;a ztZ6%ycmc^6%t0(UDc7k{f#b0E2X_D$Ii%d0HPH*32zUNVsn4Cv>9jeAHQ$>LMTGRj z{z+FDN)pT%1^I|g(_xbt!FxN|LB+FW{i;hEb|~5Kf>wZwoJnGC3rsjJh_iij?oZ@b zcnujKzn#nsg)H!papW=l-5kec3>QFulVQY2Fk3b=+C&5ufblUxjy@R6qk;ZTd_hiv zE8C|dwI-{-1I%|=&&-%#cpliaR{q3;D+m^)0fTz}c5qGg-ob$`E(6XqT12%ch*c>U zN-ZXC7u>$Hc@Io~Gcc09VgS)-S_qEIa=@tUOL-MgT|~NoNMmeomFtRMMpeLyX0$|6 zd?4(qq_A+Zx0;KB69tncxu|BKHj;T@Xt9`pSDwy`voMY%oC8b>p2b6aI2WLm;@GhR zyAdn#FZubRG`3UE7?)8j3`{k|5Fuc7?4PJoLTM5iDAZ%u+XpR5%rCnD($!(u7a@qk zmjW3nWdZ4pxT+$ZCCI#8A#a9Jd?wlAjOd8v(eu1BHlvMe`DYKx_Bzw#=4IwJh?~f; zBtK>dG}T^xygeofG<6?Ixs8Aqt}Vxy><>q@AT^_Ai*lWc%A5Sa4DsmBLurFPG)137 zi!U&xr9?9K&)v&(%!^6)rzXt?k@t}=-@VIdZ0WH)YB{c_s*>xl$z>Y#Xc#YhEId&d zF=`f6bUy)@iB=$7SyDA-Wo~g;CaUCS$9gj>{MDwFOG) z+VsmrC4>PcrF$W0bI-s^eO}{P<~t zwEb))jadUrwo%P((JHCHldueGk77nJ4qFf}H>f8_GtK+3sd0mC(39+Eo!L_;Pfixo z)%fS(PJOAVZ_sXQXF?|rfaJ9jHmMx~R4yL*eK`Xu0AiUbDxxAb@}uW@r_ z<}ER>fWA{N_&S7+YhTDgQ=6-M3Iv5x* zbbvnfrpEL+yYYr9-R3b>f+>jP$c$O@hdg%-4}waAn9grWtfa`2cpe;g_AcVEO zEhI0jh@GCL?YO~U6x+=`E$dKR`u$?9AdzoM$ZVNqnErG<>{O9DN5GVYB5bt>Ww_5N zr07LL3(~&jHy>4uy&TAL;%lb-g8ySu{=H!Ko`))Iz$$OnbNn}E(??3d$L2t zHB}w0Hnni@D7zEtrR;BqnY6>+3NgLN;M!P{3Z97@1-)(YPP=I_g;YKcHzznc=zk`K zM8ThMT2!FC;eho8I}dtzjTj7B_|Q87nFguLQ#YY z=3t6)IHCaI36Wixy35v)_-qFs(H{hIOjIMd&qV-=6WUvr2JUS1%q;8_yk>G%v`@lO zXz3Q5Q^%JC_W)dEovLrV02iEuO_Sg?T0_tW31PmvP$~~k8<9@os*`#g z&cL2@&j%NQ`-~`bBX?ZF6@3b+S_NT}s+>@6pU@=G<6Vsv?zwb1M&@>puEq0KsOR-| zOB-If7m5~%g)-=bf64BNkQ>cKxrrsY5nFPe z{!$Cqaw8XE0SbLi=2l`8h)1`h&zwOY(;Y$pE)U_up4o99y#Yr=W;Fgn)~^wDlA%2Z z%R(v)k^{r-zn{a5?UZX)RLA=o+f~(zn&fOLB^xFyMG8Evvs%R)x)G~46AX&61<(Mc zn9?aKD$sI+O}BNc5YE-YADwi(mP*d4&z+V}kdGW=g(j9D-^V`of-+R;TXnW*eRU)i ziS&w~3;H7g%7CT{dG18?m>Vc&$$0U{Tc1hsoL$slL_yany&9DOY*y0zyD~7anl0phcn-Uc5DTqPr|o<< z20Nwv;lOo`A2>23)C6h&p{Jl5yf!-2BuyRhm34f8XusGxj~&l#^Nl!TDQS#? zRe>OQiJWLRaI&c`Hzg}vq z3)D5Lxl}I@yI$$i+TBE^Q_An`d530q9}J8ey(@D#{(yI?elRizWtq!!GiQfp+nlEg z25^L;Sf<%<@#G;Ii4Qx$_pMP==5jy71xB|%47za&6DJ9!-JB*}hU-y55Mhx(Ep`I! z-s`>muK8`gw2&^QT5)Q|K0Vu0J#GX9QW}4!4gu@BQva2X82WH`c5!Wki)O587-reO zVhA;j^OjAVwh8*QQR6&))y5;-ZJb*4WrH(hdS%4%y)j3&myW0U;llIqQ!<6KeTET4 z2WM%u@yw4I^X_}`AYZ4Fd5a^3{uaj>{>+V+x<%S>R=?dRM1_o-u6(Abl<$X$ghc0Q z-XK_TBbC^Xoko@VBr=<<5!xTkE&eHev)|Bv$szFSv<29HVyaN%CjSRj``=3Szf~<8 z=l>*kF*E%K5D_!;{}qU+@(0oQ<1YI_G)~a^)1qckFxcPprZ;xTuAWC0lBR1O1I6V8 z1dtl~BvgD%Yu{_#Jx%}-nw6Qyhbf~#o}3Op?4RR%=@TbQ&se`{Tba=FCtfsVOE_`o zvj-~sagyjS{savf+v+t;eZEaMTDC8LiPKpqr(R7YUIn`%= zj_Gy3CY%yu&S8A)FTS&P*ECme>vRvVw=M|%vod^YPUoM9c z{;L=pEr`R*fl)Xb-ch%%li584#8tfOYt>#t7#K8Ke^p$ev1zrx`CJLsLI-@oGTu!GR`}& z5+l_JzI#hKRS2ZL?f@~BrL|V`F0Iqubx`;Fg%{SsKDJ#5Jq@c+MaZW2iT0gpo;3dk zmz%%i%ZRSNRdwq)D?EqabPFM^(uukx$tV^x$-Csub2HO?&ehBl`*%W7%y(p-%DmD2 zTwnA}@E`l8jfQdW8b>v6&V_cPAVbPZmXA=Pm4v_RCEl?_d1DD_1a3wPibsVgZX;ig5Ts~O{CaBR_oTsGXudd4 zb!r0qb*H{I{ky?x>B2HVzT)*NTF(~CqD1y;eLOjaF!0-|?i>_JRdGIG#-3zm=JOX;r-5U% z#P-CXf~hn+#1J@Kwi=#H;uQiXQ4qLWU6vSEcU&y>3*HvKU9g(Q@b&03${9yHb$f-5ozc_8TI5m5k}2XwW5I z=NAGzuMnD1M{tdwpz|GmoXx~mr7+a|tv7pP2(&DxXsSR+u*^pmcNj2}j=`M9PcsG?2@66&y)&t~ANs3PB7&EA)rw@z z^w;*7HPUVcxU{dpDLRqPPE)-$$QxHKXe{Anu7+Z{2n%pq(z1@;p$XOR5+U3bp6p=* z1d93%8i1Y=wGJKM%Z&*Sj@jh z&^i&LIn*$YzY0_Gnub1?C#^IHtV?XLp+SDHHQe=(eh!0Ak!zyazUu>%E8q(aKe5!%( z)haYroKJ>Z{8|~EnXsYPw2VU8D8gaY4^W-oIiI3~Ff%sC*e}6h?wG;<0-kt&zd|Yt z9W+K^D*hc1dAl6|BTnR!^ZwgTVTcBPOFos!f!k;7tq&j-jJ4;)wrn7O>xK0^(i4Rn zqEU6w^S-%C7T)ED+)sAyvXID`9!ADNs~M5%%Q7|l^{Gt#Txz6vZ50)T&visx|4<3X zB`3KQ5BqPs;tbl{8f5oh2!2ug^uf;VkIr!J3bl0Hom?A zFa%o4?}F$5xpHE&RXb65(e2 zuD+*3hl#kaL@X4tT>28|yojO!bp`>IK3+;f07Z5_Vn$&qWdpwO4X*2-1~KAF{-%2n zvp-B?dl8)aZ%GL$43JR?HCZWiF%U&0wol6Q;ED!JbN_pYoN*OtNlbb>4kbP*KD^J( zpiMwhdQAF%-GG8h8u7oXDuuLfVDo%L@&C{X{&#ox-*zk(_WwarGBdON#I^p{@c)6N zWM=*^fWrT8hHIm`)=!2jy4P|w)*k|=mYS5-SZ25y#3^!FZA11_+6M5woE%a~V>RN= z0yOT=%*lUmYHyj?ig^}P?IH?b5EtLo8R@1C##7@<4&Zjb^vR| zQZRebHjckCjG7U10H$-4!HD=MiTsaqf}7iaA39N9I1==+j^C3@7lUAmiFxetgOnSj z8fgQ>=wYkUgGn+=`G_AMiz)^4>La9w*K|MVZX9<{FV{~D>tRLM%2tKh;n8eS^3jgI z_}7r`t~L(>nJ;9kkrTh#Sd9!#Hd)IIE~3+V#Ew)^&4JP+=xw%3@?XWj)HM3(%QciL z!p-BW^J*2zofPkjMvh(l2zM3vBL8&T3prLu_UeaKhncswM&4GC@pk`a6RD>w&x7|P z#bRp)pB1Sn*ggNq)wW*Vg7~-pTmSEBDW+kqTklvWU&O+n`H_(oEL5vvxh55NwTZFn z!3=Od`dC0Go{ZN^kM+wTJ-^N-poLSxmRw0!jROboUxvS=i+F~gBy9pY`fcufN5xG` z2-;=|?X(H_s)=+&%e}-7pd(`wTUc3_z5`~us=$FRK#)sN0g3xLe%>&tH%xr5r1Hqd z_|N)a)&AK>-@Q4$A9qap0QKo$l3+#sQ@X)zs z2}j9jGo`6y@OFAN8r4M{r{Iv~$+l;O)uu82ef1c!wM3r~P+4Lo+}xA`WQ(sd2iBLM;@@p|QmSfqx1GBvAqp7(QvYMOSQY zZO$%-^ulj9fooZmuW|^OC@rBAJ94YMygR$V<^pOnu5}YxJAo~_pE2o40>m`R9E{ri z+8N+DsFQBnEKDxwvOm*6)6%(860A$)uW5#5SSITEJi+FqVajQX&NCi_+2C zE#fKaWSGK!X%;(Qza|!x=r1tR$$A~9d7k=sI0|*Sk?MWgzGfPF3e|mWlQws?e$-#f27!%wt@S#HhIP6kLm-th@onnIgUwUWEqW*g z*H5B&d23Bs_2(}g$txp}k=B3nL5U zJ+*#odt8hY+I598eC){bc_}X*4=%&>Kp6p1k06LsYR4SbLZQ9^Kdc{yI()Qk5TE;& z`BXy;R;RiH0+Z}-;9(8Vw1JT|okOrl##U{yurRwc5XmWFTtOCDL^1*eo|lx`?;G*s zOL~jJWC`l3mfb2l82A5H>E-Yj4;l6Lq56s|9SqzGoE(=S4$x_N3Ya!bF%1qw62&N% z?i2lB;l)$Ca~sWZWS-p3_F;jhq3}2)>)&jhz2-(+^ur^<@QAxxF88^ z|EqLiCrezk`*s};ZxPrLjPj+02Z<6vh@Yl=p`^hE_r~Ov^w;MXB`Ox0!8aV}Yv=8s zXg}|2*RQ!2^ba9;a9)wye39@LQ(9QjixQjNwJ>AyXv~rxhDYKfY_*Ct|!S<&?1h_5kb%s;fmAD(p8jgTUuVi3`M!pg(oS#KhdrMS|*iGwbY8ow@GB zYJvsh9-RqNV5BQ|nzu0NLZJGVfe;Tv@7-%;kcwP*o$J-?Dgw_5x6 zAsR#`|17mT@5n!!g7frGQhlN}U~F4w0`i|^vl0@-Id|G~d*kFa6_)dcZZ*!=(I+}9 zd_mXYH8H;kVKF(uz%WCMdPF_H6N#U~hu+?}j01)^i`c@AfW2Oj<=SAwE26;v!`M5= z*4BP&!?kVOcDrlawy|s5wr$&XyKCFFwQIL;pXbZ_y(cHXr+Di~CXr;ImsIHWiuxbtMM3F*6HOl#;(FnFNWG2oWhI`8VIoK)n}#Ef1N7 z{?nH7qtpPp>ZYH_Zs7aw_-F&KmDW`L8$0IeMi}#!hygc5N-vZ?ewqrV8GV)3g8+i!+pjn!ik3|t<^Jv?9ThbZ$u zV#XhBYQo0>f~m_-1wIN|cWE=PspmtMhA7zBRa|xkn}xlcAN%(@dyj)epHmrR;QdMLJ(|=o?(FPeXj|m7{#Y8%4C$GMk7XN0K1TI+cz!B1y`=6Cmckx~Pad!s-Lph0 zQIpVmPFyU}Ul^iJDH#~kkoH=u^$NRZl`WEVX*U`+Q@!UT>#Vp~>A)RXl&y!LPGwZD z*WA}KI$9id_(eNhZH_f?uv^g$$ZjjHi8&Ta|D>3<4vBe4>@TY8rVg$5LYlwMzL{_; zc)?1@JY}Pl?k)xTvPld>f2UOjt!%qeJ4y1k-7JsSIjWPx)b=-`K=D>dozS+sb7^^f zrr@)w=tU~xC;|SQX*s){0IZ93P_^wwM#yPNcNKF=7S@*zMbAZ_Gl8SYc5@_ z7g8CutR$cMiW%i-=+C{!*1=n^*RqqA-$*ntsSlK1QW`x_3C%PLXk0b!Do28dxI^NY zYDzAhHYzChOt8%ZjmaVT>HxWj)xOdkDd$(m8EL%&rI%+h*i>fTRMt>*mUzhz#f1R( z_J6&jjbF+yv1TgXE=hD9o<&sLJkzipCNJsG zZXL-m@1)q}78>J#hn{*!MXZT$y#=V^dDZ`2#NogwR?%Cdmu&Wl82`bkD6>M#YT zy3%S;UJM2vqSz}siH4prX^3g+er~mqZx8ar(;Tjevc%+6i~&j{I7_$D9I?AF(3qJl zkW!!DO@(kzQ(;&JYpQYaM7#37=pxQB$ZWiQ+-dX|V?c1mA>r#6@SiD2P%-=W-P~Z- z(oG@-OiXewH^w`0j$fJ@VAy$cxD8t_T85PAfq|@H_Xn&Hh%a*bNhBB{9=kQ*x}uA} zK{q;W~TNz>SH|=-%=Uh!<}~F0o-~#Igol)-gw=e6BTz_`%Y5IB2m6DR}Au!k;~z zQ=+|>>?Bv7v#VE59NVvc#4B9Pf_N?Rcs*sI8Y*vhJr zFzOnq>cIvN1gTas-UAEB5nZaM?&#}&6FSncW%Ftp)^4oC;EJeEI=}v?sAZ{Mi0v z7W{iyQZ4bN-8NHM(eFQ^hTtUKI;clf~}=L8ZoYwN=tMB@4DXV(x$A~E6Gr0r;7m^WLk?>7#5 zs5fIBuco(#5DR+0|88B4qVw$Uh74P6DoNQI)SLN9 z9Tn4gl6b&F=pY#(4dJ`~mzzolHCl2VhxFkxDM^?lHvwG6=#s>KMhPkhDKgbMG>figA)~WwU!e$wpIfjxb85OpJO(mREio_Q4)+gr|PBchb=vh+XkW+$gpttkwWXfm`(rW~9h#Zyi`^8_NI|IAT^@E?Thcmsd-U zqJjACYPdEbkM&ofv51u!I?XQ2FD*C}X-77prw=r*33aSKk%QlZmpZRwGQZW^x8{@b zqkHUiXDjQfEH**fK!u%hiAar-vHH4Wzh!(1F%RNb_eq{o9Yta$h}0%7mwqI910(O9 zt-Ma*c?58u9xWT;GHe5hB-P zrG}aXOgZxXl+B8NSL_A`6Lfbp?>Olj4AYnC=80rYGVaL@$W^ot7YD;9DN1cvoJX;a zK~i%Ih}g#Cg~w*#zLy5JTE0HoeCAJ^?&JH=Ksu@m(gO_fN7JPpdp$8bmQ%_GoX>@J?0m+3_RuRH*Ig1Yd z;_miF6F{G49X5q7{z1!>PG7g}3?0Fbg#PP^_XfAHNMiUo4{SGgcUenM*Af3!JGshn zLRk^Q^-pOsG>N*%`(a4LnLx$}Gw)7PJQ5=Zx0WiG5Pqd~xP5$mkIhJwJH^RRlrd&C zv;u-Mzd-7$Oj54uRjZJilF=+#BFHv7Eay3|Ao#c=ho+5=8sHEXq^x;JO>q>Ui{$a9 z7}XQ=-<{wD-taUIm$uuiKo9`?JvRf^ml=4d^)RKu%}EqRpenf;?a7e%2yjlXrL1XS zs*l+u=bPjZ1o!J^Fn~lqpFp%*^61!4dH-xWmGFWLi2E|xYpsH5PxF#mK0bZ2=p*A0 zl;LL56o+H^Q>qYd=$t@jt^UJh$JIvHnZl$D0H=OtlIEx^>G_EsW@@MegWz#s3WwQW zD4^xU#xXCMci{R0vcFUL#3FK5`fj)&l6?S{z$lyf*lXm+JFu?P3itcixc&m8X>Z6A zJH?1_m2F&+7X-A_AHCo>>UdJYqo5eg5@uWUVgBB_EM&x6 zGR_v&{5VhXe6f3t4kP3)j^Y*wlg<{#>dPJmeOLtAq!0q}5%w`ygt%r=O^4Z)JpehU zbl=ZaqQ&Xo0*6HaN%NL^0=dM5f2_loWia$%66v=u!TC#KVl}s);54_7M-H}$z1j5X z0)HUtrs$^OpSygT{RH_g8QXouE0(8c{NwdeUKnc1MgSIPR*tk6Upo>#txQ(WRg6D2raUXRr$$)VAyoIVyHr%M;ypFM zneCoC5CEfIZed~R&J*10Y);z7ao?$i#Qn57lqBmbo4{AMH?_WA zTmhFpatn15=yp3b+U^klyNw z*BviMJ!b8%LZu}saJ^^|w~C>CN+alT=ywJ^>gd6(tcddgLnP^( z{&3kxglb`BNKU;jJBxYU6fDRi3pOwz6+N!PViQF~KT z9zG+d-XR`RFh}Ek>(>tIbKMPn{!os<=50q(g`y}Wa()wk?J4CtwGy4|G-pS1x$E$I zR+_MK>9}e=3bXK>NqmD2`4|Q_RLmHq>DOFRDw3ohcg(#BOp$CR9T~_oMM#Qf))^wB zGQD9zp}iY6zFkO?gquFd z&~v?+1@ewrym@FeZlHQN4sY{tUO>5)X*1?=mLhtvX%_o@8VRXYHX)30?B|?_#KP)S zEBjv!gn8zm^RPKJ&ySN79$dTIcZr2;{*Y^t{(;|g9(KRAlg{0Pa<+&l5ynP-a;~#a z7Jlwf{JUzW9@e?UvY%tdhmQdjIZu-*x_RGq>YraHp0Sqo&odcV=#cKix9$z+ZbFAe zB$#4n|1JB8iX5=)XYLEYLu&j!zX4Al$MyabF#o@VOC}C>hW`i5S^x1p`S06z)_+#= z|06KJQd@J_82{G{MTyBSn86er&w3=%p}2vVsa$#O#|R}(P&%Lkz)j_CisUOdOQX&% z@mfaLC^h282W8v4X6#|{)-KXQ#Nh>;Xd@@*_Rl9 zM|-N~)@59n2qc;6?fpXzxtz&t)$3P2zHM!f@V&44yJCOa62s#I<&0rA*`)5fWIl+Z zbia}LX_dCxYY0uGsX{8eb$cZi`D*4^6+*t@7&9;>4O&4WQ|vs5sae*sYi59*Ovby; zph=bq!%aQmmAAln1?{=YU?K-{dC_YDLA26p+}8M(`sI0mSE29c!-(ZwUFF8H7792p zhLlo*1~f-(^R!)8&ZM5k5=0W3woAo9-(gkbD%Sad!|)JswD%&;vogaB@6q@>7K!p} zOIV2@6AEx4{3gQA|yoU(B%DN@!K>*;Da+u-y+89;>aYm_I7h9W_VJNfl+GYlY0?W1RmApQVA~s&bM{))bV_53d?`MU{h4 zmQh_T)ez;A3Ve9Vank1I2bbQ7Pn>vPEY?Y%r!HP@Zq?)YRGbWZ5G&s`uoI$_4>J!N z`H-LtPe|j2o@U(&oYz;Uw0n>)i3)&iZO6#ChT)>ky{-r`oc-$rtZZ<^oG*m`VwnKfWr%e|#(uZ+g}{iSD_6TzW1FsLmbs#BLehG>D7_21w}D zB3riq2)dSI$8BCqNVtMy)mOz=CQHGj6t9Nq-Z*9?MKm_)VbPUinHw@}@N|A{z%2QpeiJLp}5*NW)$2!GjY{|k8al!vcikv~tNKaiQ(iiln>U~`(;Vlu*}?dPFi z=R1RN&xW6P_*NkWo~ZlWy!&ET8bs!HR+VcfX+aPkY3#EID;fyD!kGFzsN6`UV@io^ zi&n^}w+%B$`Gxo})bxO76gJHwTa2V-N5oiX7hXd2kXNsUCf~*f7gDuJM&H1As(xdw z_1xjrZ^?Fqe2@^2vrP{3uOQ3=9^26dD=Ptd___pp7myT~#A&wB*?caxUXV@3)1$~X zBjO?JZb{B{>}im5OdLa;$kZ=BxX)OQhl|K3jP#Hg0r4hk9B9UFWBml&;?=+y!t&v$ zd#5$1U$ejhw^3lpnoObYZkGA8&ndVM6z>l}g95S99)28ll98o! z&)otufH-!V7=@mGj$dGnivxIXF@Vn>mj2Q6fCNvnX|^NbLi}>9VGlZcGf400Bf@Ity7-Z(5$;X4 zys`0t?`%n{ddv2?rJBGiJv$X zI#9Ddu7*i;Y6{>{!Aq7=(bZI$P2(CCAiSu#gy5VJX4@mO?-KuZYdHqU>GDKfv>BB@TU*oXrlN`~O3P%Ut2 zGx3;kEhA(->b*_IY*J7%SdcS{>&yE=`L5Jc+|qd9p`7=MUg2wuCGn#1VV4|2XK4o# z*>T_!CB>0JvHh3)e+$w5)qe_o#WjNIZ1581q8Lit!S?&Gv!q2vNFMo1_dzE~DCx4M zoc(Fw1x&?}BK157Up&U_1fWEHs#^x6f3NBb$~^zPg+8ZH2B7OVFgPa#{(rza|KgW_ zhmedMtp5+|u>Gg4F&p#$2J2L-ZrEV6BY5xBVi3Tu!FIunb#uu8a@pgcvt?*nDEy%c zT8c<$*^cbe9=Z)ZZr+(Ee5MkE0%~G1UU2;7Xv%T;7m&h$e@X70eJpyV6|kzfPv4p% ze1;=<)`T!T4{3P(FAtc&slA;L8jxcbC4 zu=jUQ=ZUPJTDPK{+9Gw>-BZN-p-GgDT#1PY3P9uG*l8JilxDFxz+gsct& ziIgZK#B{MhK?Z~NoN48#iif!N%(})vZU7ESnwz8wK_7Uei`anaA!5?267@kN(G&!< z#<=LtSS#lB%c>F@kZI|@US7UDZj&_gNSO0y=?v${e5ZHeAzn3Le;Z!afy zSe&Nl?R$p2){O;2JE_u-`F3unM*JO+(CZKig9aN8CUJH`<-wf|Jgn0+v`&>FZihX} zJ%qyRX*7k6yR*!WIAxBbUg^Rcr8Vq3PP%IB9w)UX#Ixx4r_C8+mD0l{Cz{Of`Nove zxg!bUd_O^MP5W-S(DewCg>d|=HI~{$pdkMy8b8}bga;OMFLdoVbx1A`5t8220YDG} zw7`<4GytX7L~?9EgEKU;5U?GMvezWYXhs%o8$4EW20A>#nrt#J;lGKOVcaw@wWprz zJDtjKuj(WHLc*=TyfRQxjT>nY^@z+~ERWtieBLxh^F^yptzP?^65YVn`HSy@i5D}J zKfq1W^W2(cl1A<%qGX&g^^u$Q_;CTv69V_L9{kT}>E=D9>*EJ=3hY{T&ye+^bL!tG zGixsTaltYV;(fdb9HNQKdxX~`=0=B^%g#Py{L78(b^0lJQ5nlxygPZG4hwv`&=0+F zLfKt(#dWFrH1MKIm8`|;r003feY&HAZyCMW~^@g_& z8j#`S`dZ=1Wr@)lwd5RD3DLh(+$=X|Xtn^}XI})k*Na>6O--4;gXPX5kzdApT6*Q3 z{0q{Z=ecn)poPK~H~Z0JvG>w0OL%x?y;xy3%;iG%u$&uJq8CHP`piV0*}^k4rm?^? zJ!Qg{M;dtW+=3YI6H((C{)8rDl0P%LWM7Fa5(*gW9$Db+1p;j}=A^%<)>)A|;O;Zr zcgIO2+dQB2!i{k+HCPzY+t$`jBToPD#)pjTLtp6VXg6GiLU%hY=VM5@iUi8yMohN= zbs~J@fQBt}Ww5$D%iC+Psa`TG$G9foC>+HHCtXPs=$s^Bd%O1c!(*lhf_nW8*kKbl?GNUkHHt}7Ou$1!ceouFL!RX zIaCss1W(VkvmJXsK)6xOf`T?H-+E6GQ1L#7#(7{?eW#2_368Ny7meFO+bVv zqMP;B+h|LZGaVal0(+lw(TVT#1Wp`AA)zly7?3t2lrBi1gff8ffDiyMZcS>BUR^#8 z_~t;-%vsjw6J6=2_T*`QXD8h@AMD zyhz|MnRr5t>Bor&2di7e`q65q;0*{B&RXVInS*d^3R1y)5LC}j#)&s@a(~5}ZvJB` zP=B9a^#t5xBvu~Qx@lpSChKb8`E)#e=HK1Eo^4i>Xyo`T&j)eC#@|%mu9fTq{{4ow z<%nXp*4;a2j0z3fkWP(ot#BjC9rX+iI8oNER~HCYTC3Et_IOI_I50B%m&-9_8-jZ7 zI0~79C%R5DO`TheU3yGpP0;`n3^$n1>+25RhOl{-8CsT(iDa){g zh!-~Evx*{jsZoS2@Td6V#WbhC*`Uts$^Jc-`krG!WoCv*pkfnx;&iSe|V1@ zhKgMlpxmGxnyLRY<)!&T(?}^s1jemE6Kot zGU+43*W1>5)#OScs>~@46~X|gSFH`NF=cV&j52k-Ux|i{j95`rv{5Ct|G_!VVdC8W^OxFQ_&#bMy#PMfJjmP8fu*FAr*C=(2pH4Hj<^Cf1< z1i)ny+`H&ppBr^bj-7sO81n`&9(i?V)Jc;}@!jCDSMeb8Q$##j>8zDaTp3NU5dFrG zw>kvXPR<>{x{M#jYi;Ng4m3J`zJlB2xpU`K<{WhJ?8R%O@4TCkL?hP{vLQU#4VeUG zM6A?Yn^$g-7MlS>z~dgo!4?^J@pY(DpgC^Yx^8LM;3DS@=V6Tk{_MX+Uak&pY*?;ywZg|zB#2(BV_K*iRyi~Q*KE+dk9dD{S*f}H{U<<4 zO}Fdwg`FA&!K;?<(@Do>Oo)agyoS!KQhEo-f&!!C#Iy=m>*`sj(ZIJ3!V(mlKJ&=q zUihZNLH&m`!FDlJkdGi!K^%UsgF(`8Bq&|HYpK^@oV^LdaL}PBK|L=Ke?)P7afB4} zD>q&V?If4%{;_0D)stZm00=-7B-vN%CZjjz+Y(OrW7({71y17(IA8Q}2Vv#jx z&-cTk5~OIg_4SFXp`+TX?AI`$N<|AP%k1b^k)r!bRYr6W3*apjSnHqen1YuNcg^2V$=ts zRQF2WH`c)+1Q778*Fpz=vxRn(TR_45F{l}SY~z%LN(7v-WY~4wE}zu3ar5gxO*4{$ z(-JZ{%iowtA0n_qz`kkhiJcFd!;Lxq6H*x;wa@%p;VZZm z`nSN$-*i*9Ui1#KcAPmlB%rVu0q7?%r|WC>i;+&xUlYS5bRhlwdszz&ZDq7Wn}=SwNo^1j_1e=don-G0u;vtRaEVZ2%|IZTlZ~L2hff|v-0+@K+`SHP+hhSA)eIWze9 zn!`+&b+app(nRf7*Z2K2nHUp_a{);kTF^nn${o}52%-@@Zk83X09m3Ed{?T=;8)|B zV0SRD=4&;p^MD%+QZ&vpwWgJNr?A6-4%v_M?I6BvMT*{kqeyOam8%)ca!*hafZiNJ&W4mONE z^_hS&GUma+0f?G)(noPc5#55lf{X;s0=cL-M5HeeyuRKb zV^$hsq*O#nZuYukb4^JXs?+g)pme7=4E&ak#=ux2HR<%r_j)a_C`JtniYgVIR&vx5 zz)m1E$T%QgSfhBCtGw060AWjS@x-7#C;8{6$C4ippf+K1mB2WoU$ zzE5TIE%sC^RyrJ1@$X!;L;v8;t`S+;KEE}zJB7_T7gs8CZ`&=Wa#Jh_Vw=xCR)ciM zzs^d{Lh}RZpehb$sd0v!bVX;ldbY_UC5ar{hgL3E4kbzh7KT=UaVymKB$Vq9?9~8! zB55e|i#-*ot}49G;KEYPD}V9Y;<;p#6iflfHb9vx4t1{+-_2dwY|z+1sUK?7k#G8cJ&Lksa_iJb+qid-qe<2D5+Z5119N?`sT7@4PeJ)f(0 z&d$Ndem83D4$~!nG@Mc-xNS%~MPQ3f$Ya!`z9y-ih-6T2L`TG;aL)4DgD zMpo99rx*y~`S2&w)LBeHDb|@t@N1&#8t&`S*00XK1$otQ0L#^;G)Uvv3pr1X2R^JLTlHadQ5LsZ0v zPU~dRc5-<+(5&JdxwFe6-2u*{DH+Z+5x27)RVIj>&MsSdtoo(IC?pK~wBxg=jF02S z^OBQgVx!`UW}rUAYr>4<$gal}1bN0!_^^bbGTeYIo3(3u3B;D;>rARY9W#NF1^@v% z$Hiwb7}0p4EPUy{L`)0?!(e4a7p%$sRo>?p-2BrZNnWg_3ullfqyZd3nPXtOEkkS< zzrDHB#wBMTM1F1kc?g|pM^etNetYhW8mDp~*3&vZuTDZc#0PH-X>o}IRWpPCU`w}< zNnZ_=>=~PEKkyv(5gg=z7ozkL=?g-nM)GQdpJb1jB8?{wp#6bS6uubwfHt7eFcROp1Z7b z>1ekD=XA|pv7n}$*p{>uGu$hJ^jRpk>(hd^6mxu!jys&D+0XSA>gqnl^=~heQwL7e zmXZy&SFcAK={5hqZJ-@7b1f7}k}?Jrd*dyuV&f1eD@yvom_%25th@-8k6#6O$vkCGe6|vH*7Uv*|jx%iFSAq^O=bU&BfH z^JZZ9Vd>N_HbfibC)a##Kk5^W>jKw-k?Sd?XP6eGltgdH0L-=(y@Xw@r+TZr? zKF>(ieBXXO!n-Z~?nlLhYxXm0&i4Jjj#hts!lwhXV+sHg$R!Q&6fsy zRs<#rmjq(<$xMn%`zlIGcp@aB>nhpN!ToMmMyjsjr_^M?MVpP~+n(~rA4#;JEIjaY zfqEa*nOJ)o6<(RWgK%gyCiOA+?T#Mx4Qlx!*9%b|u} z?0!$;t)-=({csr^&XEQZT;cE;B|(KMPrL>j3{nle@#$5kc`vgO@99-ptgs5zcZy;Xz z^p?@#)RG)9zL2rJ{cJKU+f}Lxhgt+(B|uw_I;W^#;{7+`#QJjBQxw2>fiV#HUxl$- zHCrYGxj5deTisc?vp+6AJYFuoaLbS?Q55qyevfl6?0&2k&f#^F)~=Y7`qr}v8Ne>R zK+8_Sn6#3lA^^DtpP^rhwfwEXL{3Y06uAB+T*`59XvxGDSlf2>$G)oKJ-uE{V&5hRNnPOE2KhGms9ABjA<+8NK3vlG3dLNfXPFlzdD9`NtzfPt0$|4sWj{u%85_fZqa|H?Nx zS#!@Lo$s`zZ=@WZ`lzBv zQ(-~GA04Lq<0O|uQG2fNWA$;5W!*ac}LvsP*xm6m5gXEz}GIw(|cZXiBkEEV=yG|$jhs5-0p*&@!%NQFYcMd>{u=ZDs;al`Io zCaP}qpym{P3T^SUY{jskZHyC6>$bu(uzo~>E8w{aR`^S7Yu+%+q`zf~iSM(G@ zkE_iMHCE3urcbo2-8%;XT?$&%NawXWBx`98>*g?PPYQW@r8v`Zp3d&NNNLZP<3FL- z#a0w1z5p2>oz-lykF*#$3j#GnSo9($Fdn+aN7vI#iv(5+lsjHu^`tcaieWUPlakJt z^)owxRvd-ia)<|&vOqu-t}vRYDAUvoSe~(_60d@8o z;Qd3BZ4H}@T5T=eM?_U8kgJ+$mnDOCYN}VBbLY;=U%)$AT_vi`St*;3GS1bRGR~aF z*WkC`EYw+P(A{xF)4zGxN3yO#|+WO zC5kKOI(O%EV7nXixH#G~LMQARyc8p7ac6BA05VwpFxUW60mr)}T$g72#5p>e%M}?8 zzwgovUQ5pMWkXQ2LnC<>M^ZbM0ioG*{bT=Cf;9GLmDJ~pA>--yx&o4(zY;FVcKzBsM9)EH#I3cnE{^3MJ_cb z_q8sXIc$ZXIfYWpmgMY$g%kn~4`m3SW%=kY0TZH(u{d22jRH;BZVq)mKjvb|b!O>j z6HJJARYvzA3kJ1Jj*S6V2d4QFy%e(QHgUXv|L$S;B!It0Zk|-U>u8|3fRj6e8Z1F* zjn0bqj1RcO2X>s5My|t0p_)BMcT#dp&_jkkSbXSmgo3RzbAgnjGM;PzJ&$LpLX7UH zGlJOqR?W8Kr9nl4x$3)-QoWKw94$-xKKg|J)%(W9b1rX`*gTg30_Bo=mKi^ZLzF0s zAI@GDFYFrv1-^)G5+;B?bs-49Q5|+bW-}T=dHj-?RWuA}lfV42m0(v5db@ZMJ&Uag zY(g>(7Ft)Sn~)_=oRW^%8DmYjKd=lHQlXqag4TE@(yF{7>A7-v8eB0|nE_Naq7}|& zfA!^f!JoRn;3UsC`H9w@Uzod%J1o*^Ym?{DmLc6Y6ex#QaoAhr#3;LO$8HrYT?DkW z`q!4zTMRdVyjLFHM2=JO4GB8j<0zyi8B9{`j3ym`HE~kIA?>^Vvs2eiL)A-H2JsT!1_tpO2rgzzJ1l4l}O(9($PLBctA1PGZA zyOc79D?H0srsfJD`25n1%cuw^N9`JX6Vy7_QbKE3wIW#|xJ?^+6rfbF^6e?<{Y;l| zvFO@HoZC53adHX(*c`m9MzW94MiBG?@v$uT4^IQ1S4<3WZx8r|QUW=^Q3W|eq!sgC z=4SR|inMzZ?E6TCWruOWuohH%IA544`!!Ba3QN=U%c$h{WnggC2cz62U7@F zzXej@MakDr^qs~Px}o0XXG)~gCJ5@bM#)fg16k|M5uiz|R$>+N2_sc3hlKqn-Zyf0 zcI0_U%LxkcYc#n>(+vOe-H79r?okW;c_yX@tH(U=ynvCJSXXpCQ;jkP9Xa=s%5}=qVlU2;&}4a7zLe;N{Vzm zy92KtS0@&NE9hn-VAecRpuv)Q*1?C?gS$g2Lf{ZRtS+!=SYEde%NVr$%O?ZT|4^~w z1Z0hCwO*-gY4crAc6Q&Q;B`WpP+7E7Zsc~ch|arxZ_A2R432ogBT z0P09)>JSpp>wC!3B&!k@ZR$Uz&rDYaaaM;2#H)m$v*G0!bwJgIM`@(g=|+^wHScBF z1;X5}R;JT_XBeixsZvl0+tRJ1jG$dIFDsJ(C(HbPxuRVg{luXgSsWA0c zbj~3L`=_0l?3ALg*eG`DL%fw@al$-cu|!waF{ubA6ln$Zwn~y*AIX()IVkn~jHaNO zD4F~KpL+|FDYFqfZ=0Uvs3QLSod%{95CSGgSMkZ>0b=LO$v&kcHUU++N{rQ0OEgWS z9EP1~s<|boo5`#{H3dinXbjZHDLf5Sm+4#+2xjn-KNsN3lA4Zk1;5Iz7afxXhPK-l3**?VqAeWDO_Pgd0mQwq>1eMisCtUEzdNP*N(S@ zRc|+A@1kr!u!#*!z2uo&P5sHtggBmp{C7%oU6u`v6ov3KrTwP43fh5~vhElHsj}vC zBZkpdEIXCy%X;rJU-ReXO{kS{Hey4uEI8oeZ>sc@>45CE^SS@S*gFQ<)@<9NW!tuG zSFJKu*|uwyZQHhO+gN4Wwr$H8g7VnhMBx(o z5#;Y2Qg$p%bh`qrXMwxD;-h0k1#q5p|0d0XTn9MiT#ve-1UxN(=NP4{Kv-g(-O-u< zehk@0DwKir+LA%*tqRnu%7`3#%`aRyE3w&i?kUKo%Og~A44weJ`5EW?IoC`Qv>`HC zk0L3~*cIe1c?J8Ev*9=KB511;S*XjrB?~19Ec30L5?o^0@uY2$8D1KF!bl)6XY1zElX22}aw1-H=Ac1$PF8u|=8v{4g}dgn z(_&T5YCxv3>)a7>xPsh@cu7HE!CaUyi2p(jCt1)A9N7`whywtm5=>rDA82l-r9WHk_dmjq2aBLmA))SJKrF^3Wq-{0TUh3C`iw z{*#FIQg63~IX9sRhcRhFOOMggie*=b96p0){68^Awbm3Hc+JEY)3w)MTS>^YuIRFuq8(40lkXW%C?gZX>V05w9n zB>JR9>L4ESt>&|1Wun{lbk&JD;lf?iCR52Dlvqfowmn^YGBarcydo8niNRdS^AnTo z*TA*=lQY?Vc;#oqO05{Wnlh!kgB`16GKm8lx(vk;bdra2U0TgxSHx+`~zhS_A*h+!y*)E$(Z3)7Mqi7_|mE<{S^# z^VexRh1h6Sn$uJsSNR*=73=XQcGM1a?d^$-^>U5+aj7sZig9>pwr2sgmvPYb>lOC2 zA*LZzqn+~x{39eXW%&b8**M~Boe4U=KcDN4U!01mCpl2IqaxpI#tk)ROSnc zjHGOTcI6#9RU_VRvb|k;>CC9Nv^B+a6FCSWy5grlOqoq9MrJOC%4h3nlD_Uk0S;j* zNv~x-x_2(wu_tz{Xm3P4weg!ol0~y8L~G2+8)~$f8f(|Bx3`x+K~P6uX!HCXcW>&f zUfGmxGF~C;sIsv1nm5WB3Q)Jo@bXg21!?9mqAhc`9dT+H#xsx?PvS0ig7SaO1XT)B zPA?~ltmqHyrlK3a#P%x?t)7+7p-pjGWH~Sl16ogPX|c7VnvNVxVo5Zu+@LFgGf<~> z9!Gfrz}QW>R_OF+(C*AdV3F1Qb^$}MpK{+KK^*f{RNrg#XN@15I~W3jDQ_%BLbK~D z1C$}@3j_~U67%S=(g3%!nA~l$_v{)^6xaj?xmw#enfvy(z;Mk&{UwAl#?@{d_mG^z z!UiW^^isTbapqD5Gi?l|{~MehrG{FN@c_6-M;?(}Vi%|UP(E0p4y?@UN#So}OZ*w( z8{9b`$#D$a7CfqC$1Pl}9eZFQ!hJzluP6kmzYQ@3fE|b>r7e&QxZpOGDLTi&xrOFp z1!xClMu9TdNAU)MgsMj~-S#Ei$X>AgRjqS}8P5W(zmRsZ72Ab%Qx9R1cb;nfO9afX zVx%X&n=Ee zcGIQ-l#4`dQ=}$(^R;sIeF%hKIH3oxCW|yHR&B0|`7gflcJGIH`x(l2KeT_hti#el zC6lcZ6m-jI(KFUJQ8_H*gYcE$zpXn^taKc1`8x;0s9J0-RE=IoUQffHK`<4_!Hf8R zT+I}67|OnJ5-M=3WPZq@M^_e>fDqvml%;~%KDSo(l==4tEt@I)noCKWyhTdc z5&W0S=RyY*>#Z77-P1T0ZT!hKOMg^EVe*VF&}4Y^+sowvSzpbXT0FZey*K-HfPRcc zEF@td=SATu0AA!3DkM-wVi?~{&>gU`Me0-j2*RJBQdD-J{f6P#(L)5tZwV^oC4-xb zC1Yzf64HBHsrAI$jN0A8N$2g5lDy%=bY2gai9q{C5mp#OKuUs9Tl6g;D_=caPPGOi zfzhz#E&*n~z;A$R#8X9?SQEHym(Aw$dV>rt0f^?Q)Y^`pcnsxt2j3F{fh`8$>j~g* z&Rb%O6vE{q!;C!>58j?2Sq3HxYu0l#h*#;Ae-|K2o9p9Z&H~g+%(ZKS=<$<}7kVUZ z;(Sm>#e`n0MsJ+p95M7*5&Qjj&*)fdC#25>NDB<#0=b5+WfHY$&!S_k24FdnlYC@H zxbm1$q{<1`OFzPWdB?Q|T**?rqW!S&J=5IR%q%R)aosif3$bzla<&Ni5Il-ur2JFIbnX zr!oRTGdQv1hg@oYMQX8?tSWTw)AX?HB$ae7OLk#JRTqX=eMvMJA;rTD@sZB<%XUG< z^Lt=22$UiVE7Irp{K7Yov^KoinNr_oNf|x`ha3ksk9MOcjkY%Y$yp-s^XVD>LGMf> zpZ*)4)n|Y-{%Hm49-fyp%CtG>D8|-+K|wLmLx^hK&O4O>F74ok}O6zxX=Z5lo+S461J)5J+JgxN{g%05Fn; z7YJ#$?6VLdgt@(QVK1+(qf+a+Wl8lyF@>!ZAiM=sq4%~||FEq-TYg_zHF;a@9POaC z?7W_B#GZK4FpHW-`@*{yjq9z6I-MDo9zOZ2L5phws+k&`Cy;eY1Sshr0cdFVoiWw7&+O+&S2be=+eJ5{5u9 zO~Bz~<^?#Ei({dy=Y?YB(rZ^!2T$Ls9H%l+*weQE`JfL;YwwV*q9secrpe9C2g2ZI zx}~}F>t60EK5$)Q8w{g2KUd0;r8Du#kRYUi z#@opV#_J5PI@RT(>BunWM|^)gGIc7%5 zv<9_XsmP4YobD|YKDWbxYi6YlqY6huFi*K`oliq?`uzgI^Vc&!zzgt9B1$!d3B@FM2~)KMRZe;7u;J{`KYmn$RG5?6{S3k{ahM5zR_9w+xKyJVQ#rDh+#S2vud2YW93gTD~V;25w9@lFzUkB7vi)Ld3%poKWGbdiLOW`?isgZ zRheVafLu)A2{hQ-Z~>De@eAKtE>hFzcFJ99|2a)U^Az6R8I9<#?5eB&d-l#CtQHIiS`X~NyR zHLad2$}79JY$c<)3T2XPF(p7`i;Q^8(gu_JsM*haJIGJ0ivv-Tny3g=fQ9QQDK-cL_6-B*(h6*VS zyAJ#sl2&1`*`{zD0VE=pASH8jk-|Xqax%mVR7refP(sIG=h_Ca;hMS8MfC_eNQ=s0 zxt2HhGB#7|Xv=zZBN&F^nR$~>Br;&kC{qL;jBe|MS(Z(@&2KdgydHCEGv$7b1{q&Y z5kK_|jg-?!l~(A{30A94FzmEI!+5ZIWJ16YUpS=@hWvuaUt%%?+Z-Yq#W?q!WcwE& z83ibms2>Bdc^q~;Hv_>BX3MU2%QM8gQT)@o&J|v_KHguZF9Kw2ZlBW}@(L?#ema>m z!Z#z#T2Z(21u+DwdE!9mAdshvJQN@Pl3S>}HLzauZyBa#P1bU6da8k&?=kvO@-uCC z63%6@)s%W8>Ap<#6tRdP3~YiZ5D?hA6mtnUQ7*y){3lALNNs|=P#Yv`019P{>hwyH zL9jx=QA4=~Lg%?cn7b8(I#Y#$;%i6|7I_YWk^VD+yTd!Kn zIMcI*64R#GxJG3ta?GOj50V@oj>&uz_yodC)*uQ`CZHE2v6+J|Q89fLJ-a&E7kq!2 zB-3W%-$(#sFs;m+Xq~^nbOZ}wx*$5)szcaeBmx#72vGP;%yT_i#=)K5ki+0)jWBPp zGMO>#M#wQOe&|U8!UMe(fz~gOD!&{MPVeta)ZY5$T>@L?F&BPUp#I$;Z9n7eEbOJ3 zr;;L7Ey^)OGy|u*XMBsb;d_ZM0mI%*}>gvtYw zA0}QwkieURZF%pYT7np~8p7V?MBA_^=6>DYW5vTzZWV>4xP2vNCH(~-3@M$(3(7Oo zqARWY?S1k&0e^>6;|y_;z2eYN!3G+F7oYds0uDFMVG892*&T=~;{_qp@hsAj`0Pfs z7l`N6T&kk?e71Ui=W(a^0S(1K$nDAdnei|A0-qRsld5LTJqA}E^G(OD&_tf1x-~^G zYpIzJg1|^P3|9g!<2&5lhDEf=Httg&T?#^ru4&617uNt&hb0CSD~qIq$^oOwo9IlJMk&3Mjp5-$#>d}@LUbO5)#-3i1~9}> zZNrTODA{{NSt?+A>%UxlbLPBHBj5cWtNWYA?>lG^EW1Jyy&d{YAD^GTh@@#dy2JfJ zz4a92Vv%|C(im$!{ii8FQcsgvj)eOYuITmCE_v4#cP)p6QUrx>ootSqa3mUmIne>m z^NkzLo0ZF`&Deb`C9*eb+B$U57xQvCO?fpDAs@AHllvBEpPYM<=0r`&M#xKP$;p)k zAvVO)*+gj?LR&gKtWmBes03p~{^wHEmlJ^CV|j6rxAbZqH>-kXWJ` z$J9LRdaih{fewN|%Jp`eCfiZ5f;0%rxIvb6#BFa5NIT%Zm8;*POHv4z?4F zIiPX_(9|z&lg^u z$p1Cfta!Z4o99r9%EaqrVs?sS5#(MJ0$(u)u>dui&BfX12-hT-Um^oTnq94fyx&Q|(B3IVhkwSq??KUCwAw{?B+=A;HM> zlO|Up%{m1UMlg7%1O0UD12n^!U(obd%SybgB=mW*ty)5@L95;lipzqKV!W6E3;1~> zz+o$JwQ!GT@Fep`^(geN7tw`JIIWgZDwVL>DBfr-GI+rcrtp3A*BEI&pyTS%8Jd$D zY6|Q2($V@3Tz%!y-m&;W6ijnOUrAo1zu)mVG~>*gGq;CUuY037h%RDb+=+Ntqi<)N z(IqSx2blztqRPGYg7UYBw>6pMm!8Sv;e&-w^vAl$Wg2VK z?eR8;vbiE!a1RG_Jhk)pF!9P_j@FO0=XVopoEA65IQTQgYedfGyR3PtrX$wfIOZW#*~+o#yAGC54N#rdoPnpN$3dqRCZU{zN` zVy49?4+TFadAcHz$6E`t#ZtHfYsT9LvI^MyZ6^kuym_aYH=+h z_-i430AOu|6-;+b>ZwULxPqXzE}Tng9qeypB`6Ug*r~j{SfnK=<3v~FPtOa?fBz0s zNsij_@?zQwT*&xQ;vQ&xcW3dUxRf4x4VYUVkiwC*|Bauef}13VU#<5WFY1j%;azbG zz7VD61Al0S$^8F&`}$w6>AzlSHm3hU$}Eik=JJ(=@jtqJP14YHSZ_u2SuW{Sj5$-| z0U`j%XZEtC8_lxGERNdzV;b*~OR}aS6bD6`mEb+yebn&KqIM&T!i_wfzzA_ghZeE9 zedYf}P_Gmo>AiQo==`*gO>X_nOlfV(VpudL95+t%m|tPSp8A3LZDWdW!ekr%@}~)P zy1K6lWm0Q{3zj*U$KX9*Hy%{_^d4+lGpvZa<+1T zNWUo$S5f9$=EQ9O!bwMWV2q% z-cHzw;m|3I8t~#Jj20P7tR2nzw~-&V9O6B#Cu}B?Lf1vW-*yf1J%wC5h6#~fzTOzoNY9;;DL5#2w;>UcC$HU1< zT1FSe_Dx9(=Wn^Cu==%TUFF|yE(WSt3!FZrJY++)Jp|>zlHyKHYs{Qr3~&WkL8xMc zLTQ53(A*Px0PTX<&oTr_v$}1Z zZ*SmraB_mr6d`fpGEy=mG^`730+L{2r#N-E(=TP*HB+|`!+{HHmC}TC`5Dt0*p`!} zwpO&?)tYBO#%A;9X7Lla0_Rh`6seAK?#`iq6c`^!xB|Ono$gB(@3tlE4qHHk`4JGxRuN0iEHwOq=KKtl9TRGjm5(mNgL+CZ@T(rZ+dG3KG zoeLlsNM}1<)~VCCqp4*^qwIqr%)ggcs|*AWkC5suV#>#-;0~;f@e@U6;+AzEe6G7=zi!VP>%8rjV~S%XK&`$U1v}s4IH7lx;$P~ zcx#yoUD-P49r$m+k;ATiP$m3k9l5K9Xt)m5oxNaqW(SeE#(kdaSUq%9UwU_stNjTh z{ewYU5Q?~1>o`sisp5?(0}Rg;2ON4T#C)Vrm8$q!2)GYzL5i*ql;8f8Jl>ZIRMUD9 z5Vq%M!Dw#mzW}v*^%wy+-leq_sQ|86Lo9F!&^0M@5u*9fvik1z1p{c12C6w$BfczvuQ;Vdb2xNahg;*=p7FqE;Q!x%T@wp z_5bE?z+ko;)L!ihY3Ru)k*b)5X6P4;7aGO<1AQrf`Z}zSST!=^ZFxE(qv+t5ULl)m zgNy>#2_i^J1?R69oy)rQBE`&xkVG5*S*>AZ&Bs_){4uYDsJU|&blpd4&Ru8K!AJ8W zjeJM&@Y=O zt7mVW4mKClU(C=~bDAnv*z7purf~JFJdEd$3DsffuoAlkhgbMO!O%_w$pqSjx%gGV zmDY))9B9{w)J~3}kLw@5CcQ6s_#0$PtnWcjzrLH6vNR041abX?pI4mYWx7I6JM*@2 z=xIIr5F4cbi2r`XuN12}W4!}7LEc88<&ux?>M?;alY&x?T$wK z0o@DnUspBgDmip}#Dw!N4tdKa8oYe=IKO7mRH1#GZb#WZvfV|i=WI{{ToM;#mol?d z`Sr))#xnMUVbD#O*s=XlWD0^2!zziiTg}{b#YroViH{FEiDwcndO-_r+H1`T~eME5f~I-cvldBLtLAJYrvCapfaw9l_k0F zukpnQNfd;<#<)`17gUQ3DG?BmyOR)WzSe2{vVkht!1hY|tJA14h`W55k9fw&)>5`h z`id9cB((K2+vVys5N`wvQuZRj6@z;_2D4AvWpDdUSOD;6?AYy#0uW&~q~yn+X=f~9{cw81rx%@*ss zt(eqLqE0WU_F1Qe&;>?_oI9!48pX4&WrNJx z=P2AyB1I}iY+`6Zay9<0#o@StNViiU9TVmt7~x@;i;1v!Hyy*7DjTRIO1I+Fv`147 zTJ-$M_%si4-Q1p&u-WeeiFNqwQ-c$4W_a`zmmD8K9=pe~YsK4-hnZOR<@C%JiW8Ry zwWL<+nx&^Sc}GPdXRzO%B!F^ljr7&q-~92C@*pR8n_sI{HeIXGyf^9EzSSyY@(EW+j?Xd?Tlzh z6gJSY+9S-&yyp!@TItHFxVM}}*NFo5O(0~BJ^Xk<<+;|^rZ?0fWtIV{ZnV2Um4lz% zlYYwM6Z_HknvJt&V09V6QC%RT63n<$fe#T+;i1-6n7TicY2tmIQrQMpxLd4Xx59O}@nM{!%B*B7!JwC z!#tHQzPauSOd6r5hO|zWu6B>BkniP8dpM}ZXe{v1t1rXcD$vml3fLUzysHLJbQD~8 zCu(#%w19FrO3!c!>u*<%!QM?tgXrx%4EYrb)AbnO!4b^E0xz&Rzzx(Ss_;0E znbH(l`w=`|(5Q3Bo}zEF!AoHU_^!UsyZ#&l^PZ=G z>zWlYJUtIv@3SSs!XihZP7|COKp?YjcqhE)+()JE8UmoG<=!zpuAm@)AQBfqq|@d_ zj3Iq7K#_Z=%ws#>Ao4pYeZLYb##)n--I^%;r-~}9=Rf!QJv_hGPRn={qg=UGD58mh z-t~DF>BJ*F;1BG6e8*a!8Gh9*BfE9a(XCNOI`I{co^p6Fne|D_%ZF`X_mjOj#8!;o zb7GMR>6&?a^s&-7VG|X+t8e>^c=|^6Ri2=-aEb|p`d%-KyG!Uw&syX+z%aOf9j$`i z+zkU1=Gl9E?UgJ~`{n+cIGM}g(;lKv{?tu_S^53z8+=(&!}H%Hng3*t|4K5MSvmgK zy$R#LsmHJ|{%7?Vjd5q}VZ_aSY7!;eP1f`Ic+$X$F}u;_5JdgkccySiova zAtn_zqg7|wmj$rZLN=l(l;`9UF&GW8rWNG9# zZBlU8F`ux!-{2Fsfgm;qiCo}#=*cLL*l7#0)I}>@L&w{dX_B_ zf2dAD#T7Em^m6NC(bIhqw|vZfo+RB4F|s&fvog)t{=t|$C#8HthxJrQQy0(cJJpH6 z$>mm>S(==ZAH`NzgT8K&OI=U{R8BbY(2|)Pp^B;bM}JZ+A^=MRfvUzzqU8kbK1~>6 zHtE<9vjRhz#>Gm5NQh=T$!h*UR^R$+M315-ZN1ux?Hi9ieh ztUFbnK2201kRVaRIJ!g=eg-R`{$cEE0Na}e?`ExfE~Ef(8%8A?EtcR1IMsI?dQ;s; zR3sr=D~X`7SuO9sF`3nnFXwI5Zr_>T#316(^}k7A!KuD5J>pqb>c`Fn?V-35h)7WC zt=Ph962K7?$oypDXH|bJ>g9PajfABz0%3$a5pODGGn_pTz)(vCe9y+8kMUci-yYU% zQB)BYB(vI#`diR|vtO@{n(9Ub*b_QeofioHcH9=0f~3<-QbEWiFF%ug&M0u49-JR2P)O+#2rJA z-cewMQw7eP22t!xw$$8_*K$^K{@SIcQdDS^)TJUwk}l~u=QNc!h#0A2-VR+6vRvgA zASQJwgUcC8w_jbT=u{ND8{%>xD=Ik{B5Iv-E%2o-y(^#Uph>MIyJHJYK>|hV=lX3L zd`=ee$3r`IJ)ZN9$e8wc9ayhjX+>q!p7PO@xf#d*=>zyr+^^L_SK|v9Ay$b#lm(NitNjk(mh^eg4YRu~Au?4|j-b8sNFU*Wq3Jdn+A`{>z0+ zjJQ{*Lqt+a;NiEfv!ozN^w(-o5}JA@N^a{KXDh}RvD;;X$0n7SSTWPV9Spa0_Jnv` zC{o1B?#GrzZ<=Tv(Imk_5%rT+o&%02OPIsl8UHUjmkh@E7~dM!pt4{jhNH&9;6fqJ zclRFu3nksce!Wt0RMkQzB9R@V?ZtehF!#So14SycI`l{D`J39hHSFsHd&o(I_SjY- z#sdJz@Z~cIC3)u8W9&6KIhnKM7UrodgVwC1<`%X^{IZ8tk~0d{&_7k^%EV6Aa*{+C z^np2Uhcv;ZkiB>)wSxhW3ON#CpV%ORUyBi(&_(saV2cs^@}o_YY+f@~&F3t|3eqa( zQmC7d%RLmQID@Cw9>V3ROI8WU?3g-TYK0YYUM{k(Qr+D0P`z+&R&9S;MCkN`BG{cD z7P0s9c+14lIsc{pk?pbCkMkj0ePo)%Ixr-Q`@f)?1#g#dNy3NvHlie#lxl96P zD^G%iLxG>nrTZR*YI9u{QA^GtcXDe3WQimc<+*!>Be>RS%9WLrw)2QFigwJ!~OEOdvJ{%2nTEWGeD7HAzQOift$r%^>&tj+LCgYW= z3um~C4%=t>b3#ptnTrF~CWyzCxQLhvv(=Q$D;4Z<2YO|bCAFBZ^3HP5^E;m3NqkA6 zvOs~Mkj`(K0NbkRGKTC-rblPh&?(MF5riyEtwtJ&xNqw3gRSK^3fHgVHZE%bq2JVBhOIYsE;71#-pHv?N$J5r34xgji z%ap1OL^}k{^ysx#1;?4wjg1JxEKY)r2KoUpj;x>qE|K8xVF9ox2$ci!&yJ`)qe*+x zCH4Xp(fck=B)qJZE>t`r2__v!m>|Sd#T4DDYoY*=f`ce{$Uc=UoqNpcNTI$$jRM+hH`;TM6ifc2e1MYfVSP%}V z-Oplp=yNBgfwWu z$(!WJA)iMRba z@0@n`#O-o@Wa8CRpUxU$2GWwlAEc=r6#(=8IMXuii5~P>MRkrSrj?^dnXdq=4yvud z8Kbff(n2aSl(%x_Yfh~y;Vw5$oj>jf$JIJ)Y|Dg)UGjN^wV)8k?ik4xHgjT>6y#_G^_WqtFg+e@)mYEZjq zq(ER7A-pB;3SZwFfT&wXr57!K+0Ayc`MTNF0{ZH|?8&6QQihgHQ!Glk&xz6H^K#P2 z;bg(#n`xnCE#>mb7ZQj<)SQ^bbZCGHAbvv?A zk(V@zJ6wR~n!TTF6ez{9^vX~BsYo6;hUCaUl^Gg5^=EW?3X zzq5Y<6iKpLjImY}L^m$%sSA{?t9t^|sL2V8=R9E%Qkr3*)}*!!rFJ%PgX6=4MKCkV zDZ){OG@l{Tj&bVVb|}Ml0%oPnmwBYdHVBH={DEqgF}(XSpk3)aT}+Qw$lB~WS1SRs z*_=Kl$fL=~85fwMT;+9_$X;_YmO>(*U2Fln5%M9ePji7v$dN+srJ#n{GBx-r5t`7cn8r9i7$s|)$Rp_cx(m5s16{ToKcK?3% z9jHZdWh1%wYhYrgT%yi1_`E9u7T>55m^aveFuF&@_kJTR1r~*?7OW z-P}GBeYR;!0g=oq$R4&*D>^jC=f)oLgEb*?vN!rj&HZZ^ZY-~OmDyUw3SZK#g-WcK9&xp6RejUiVMf`Oz;sK>Z{SA(p> zGX5YJ;N0)-Sa!+!i4;!{^_f>O6U%K)QqxUXZ~mubDTN1Aj3(p@0KxaNimoRJu#~}!4Afu?%TzuW5xq5$Y10^_xahL z{r$Ej&?-GmF9XwyQBZV(N`D}6@zpXarsl?!+2a>-bb^x)t;*Ax0fMvh9*?^Cio5Lsk)7jbMCv5kW2+knmGS|!TUJY}RqUnkO z>wb;5hZj1{m&lVk8HstS$D3AhUR_-7pB@KPEO7}U%<{nRAL&B&5UxKF<6Ju&RypNK1z6PHQb@aR-Hs#aM{8KF1ne%%do{{#ac)_i02muM38$EkM88Nll-E{ zyZHoW6em8=o3-NvJaSPuOupcIuMIoNxgENKC;1seY6;L45y+3j2Jea#WQMsYqiBP^s@_l4SH(dBpyZ#mIMfa+L$>mNT+vhR!`b9;gvG7`R_9 zf;0E7BPb|PZ?qHAkjzO2f%CqM!$xbDE=U-V_3wdWxe|!cs?&wI{QUff-mt{R*csxJ z!zp5Lfa>NG9}1%5Bgj2{Q9_AhnXm%1TGU66lQ7;^XQDwhBl-T6w^|#_@Iu-#SP*j$ zPBoI22|Rpf2nExxjDaga*Kkqn{GWEz{3=LNbj4i(#y>&Lhq)&R#9EJub@9QLDNkAw z4U<3usklWSLIjSbhP@Ip8cFB=4pqGDm5dxSE2}*hcaQo{gq3RpaQ)?VX z4^vDO11s1VWfGKsREui=m>r~lxv3|;GLvN+c2%sKO7Tqt*f(~v27=cK9CWnD1+cj- zG;gJNlzUiRj#LF#!6P(`r7S`{E>HjMxVu{L#X>(*MwXEt==pVItUHId2oI})VjH|A z{oDj>7) zqrC4)tzJmI^Ov4`6df%fT1BU2#Po?!YpXqLTXhBQx(z&bdI|DL&$da<$8U$|7aQ+R z|Fo5s9{*=I&hi-(u?oLA31N{nC(zwKAwBcUA+QjDU4_{>4rIn)-O}!$H}wDw^Bkbl z@*ovB1td-I>MSIm;V$)!$hJ>PIV_>+zaL{s!`3M&)T%(zBU@mQZu&63-Wk$Ydpc;S ziRe-G_7z~oNldor4K5&-EIzBqpn{lkdW2kudrZ%hglj+YS1+-4obK#bn{#sj(5as{ zFQ9*dQ|cQW6a!uIn31+F%Q{hlSe-rgZ3bFH=b!&>2{y1e0imBJfu-G=?YzS`{$UP>H$I-02@?o`(!+T%{; zGl(AABMfRWp!D4qzU)wVH2oJ1iSBz7uboZNR1IY3?srHHw>!X$#ZH66In^uf@W}J! zhngkcE(UiuvH}m0!9;m1EuMTEzF8p263MWJsPvqD;Bmwm|C9l>0|X;vQqnoZMgiB3 z>p4JL_KoPcdNwV7NqE|po!(iyj4)f55_R0@#cm{c;?A$f^{rskJC9`o(3oo5fCo2 zxG3Id(6LV%8Ic9V4LiLy{Trq2DMVtr{z_{mn?q{Ba z!syYJ2XQ;oVG>Xv*RU-I3r@Kc&&Ur_`)P_v{=9p=V~{e_@O(ePW5jvRGQ&Ay><7I) zP=#rhdV!pDc7d}rUpFzREHSC$!f1)2fFIkCR5Eeig#YsJ$XsAfi{o%8Km8e;#&LN4 zGZ-YcyDckrP?#nW+dKGYfD-jrq$GVx0yp8$RP?`mK7Jx9-2TK4{nx_Lyu*zj7Z91V zwER4(&3{Izh0@U|{~Zal)9Ig+nT9|9_X@_aIM}^~PRM`GnEB5cMcG0X@5#h*70ab% zbN74gMO%kQUg7b8r$qh@)cglN{#PFf8^{0aBVl3szgB7g%dD7%`CpW||6fnECbf0@ zby1|BK9Y%bAUecsYC8B1SdYNA@->Mm__Z5Lv9cg;!m|n=xqw3`%SjLsKrtA$X5Xpt2 zOj+THkhGV})3&d$U)82PQ-Mh%A3hbZ9&Le2l&2YolN07hG;D}5ZAKDg1%b5e4LJem z$EtbZ#B@?Poj=&~OZMq#aBvT4dn#z}Hz*n0ch`q^v9t-S4qC&`;?&hvKc9r#J zBm97zEpM06t7fZhFPMT^-^hnQf7$&^N?aP+X;pgy9SkEw10i%~#Z=VI5t8P&g9S@O zkieg(0;{#umsgxtugB}{EZ7fCter?D5;57(x0!H7ypwq2l!V5~H(4y$NUEkxiJD<`14`c5b zBTCyf3y;0Wwr$(CZQHhO+qP}nGkc6Zwym?DJ9%@SFW;S<_urLHr@Pa+(!FZcs;Uzi z0X=`Kzb+rtY~XkW&_B^=6uvG!zZ8-PWfCOPm+aP4w-6|0#~E-eiiG7`ZB(QO#S7sa z?g`)m7%7>S_*-0je|J1e5fr6k954>9XHVGYMnsEEf(+_rNO=#&cnogW ztjJ?pSe7&M=0CSyg}QhsJ-tjT)&SyV!j=0UzdY5p+=(D7z>An2e76$@7D>y8aa@FY z5?l-?txl|MPpXZOW{+_;wf4BbFeaZ$#1L7pZ>^~8JXVi?WD98MZ5O1%qnpedS}-e&GE5W(YReSj@S?3C?B8WL~$T)fug;&SM5O@0`@dyEQ;rG+7~i!1q3`x z;Bcanp$>ldToC-MvapLt6Z40?GHH+V={+gqvg_p5BpLuoLAnu#tpv6d%jb2;RiakTS|&_EHhh~a~mzu)&% z01$PjMH?0sPCw9y1JKAv;|2J>zlJ;i01Cz=F#~yqz;ARD=nYk6*wY}rOQrIq@G{Pz zM4*6LYSy+*!!{smK%t47paqhdTqf@{FO96vT!iq!UlKEsgY2#cwWSG95u=!Lh~8>y zBLwV9>n%7w4Fc#dm$cx7A8)QWl(DtQ$~OpJ9&__5JS(6qgb!b0093QFAVAf6G8EA$F?dB;^ATODEFo3i28(-4fH?v#l#am~nLvN$KVPl23hgKw-DnnB z!U)W)TdX!4&n~=Ltz2~=l@~P0i1+d40`M?U;}m-6nYk%s|Axb%fG(#sG>$`sz!fWj zaEA)9#P@BkBF9gJgK9&?EGFMK4;5dy>LsK0$^YhDt0_oQdN|$dZjhR{*+KQ{%ufbm zCUhFk2T4f<1a?H1L?Qu`Z>{CTT(=!bUj>RSM@aXEItbCrByEZ+t*MHy)L7wyF?QEd ze(PL!^}>L`088Dk-w3c@D8%kcg7WM%UL##you)ZW+E(4||w z?c=wdY4E~-8BKv^9=dgq{-SfQ?zzjuj8NmDpQ1a;dAM7Gm%c!O85vC= zqEPc{>rxAdX%t`rpVV~W0i(3BT~oK)PY%qO6)FA*VsC@&$3-a{f*;X}*lMTc0ZnZ^ z+M+?tMg?k9^G_~zxYhd}c?hS*kNPA7`M82d?>6!u;)g%UTd05o>4dp;gaCPyGSpTK z+{{Kja9mrRGNc9>2B&drvbsb9gosl?(3{uJufd#GaR(t$CtPlC0uH5jS`=H3v?U54 z#WX?(1Mrc~+;W_MjWOyz=3SVz7K3_b2uWycT2o+Yt~&NLReN%_)$j;KZQb^ik>?|C zjDv-{XI`ntArG8*BsVI?rTqL_>Y7epsN~ih5W)5{f#vQ)bSG(d!!!+a#j2AGWh2CG zUPFAk74?2?E-EAGA>aOZTGn!QpXK~zKf9AB^+SJ4{VO%qzLwdPjkN!wvRWZ3LRusl zQaxe*0F7$w3kSszhC&dm&S$hng0f^g<1K6$8r~dEesW$mbt8osauR%Xj_0?wyHzbJ z`2u@LUj1Nf4Y9yR1C%ba8yBS~HIVw?WwhX8Ih-(c1#+MiG^!*J$TM91^UBdK0jlFq z_?k*j30r)Bw7?kn0qd)6L$^PAhUP_X$OH4xJqW>#TTcohBaRkDFDgj?{Um9 zND;yXu57x1jc*(Xc{gLfOEI%B24HGF_yc1Rg>Ug!0kmJ?{Rl~-d6>g3QipAGA@uH{ zr`pN5A53~i?Pk(03#0x!q)}tCZ@0%_dVDUEC_0pc^cQg-1)*Q2%$)yMiJz{vw|?4+ zOV+{HHxd3l^cMgC1CCc38yEF>T&GSG`%&44ws+5*p3LvGD?F=5wjrsNd?D*3xy|2p zMM58os?pCWTM!=~B3W!!&b_i{3TWWFDQp}&mZ=Zk93KXu!{}hm^415lkp4+4k6O6~ z9~pzs!#g}4Rt!iIl>++|3a8om%h*3k#Us)tfpExPxEZ;GG^U&fmicQB)MEo++Y>lIc!YD1f1M$Mv$j#56_n77xz!gg+Bk!HY8AxH_tGpjW);pY) zP+R^iAH`D&rGIFMz4Aaj9wVL$cKPCOH~}Z|4dk^a^)8-&Yaf=22Nz{Ru$W$+MJf)E zkQ=t}9ezw_rk{vl_ozN&u+T?Da`^MlV@--$tS97(1%t}J`_XPk^8ZWS`cEzTPu3Hhybw=vwM;H9jAU-+Up)CL3Tol|0 z`)GC+#>%iYI&EPYa)el) zu{cZ`$jBYEh*h3{+}UFX`p^QPK!3THqc}(Csx}K&Bg!bUP+O>{6q$-BXgWn+&(P)3 zmKBYBfw;*=7r^KagMbTQzYGi;(f6$$b=I1%@UvSa*t3_^a^n911B`4PB)Ef*)o}J0 z=ct}F#x#j34TbEzkjYMt0wEJ|VD+$K*Gz{6C#@3MxCIicomUGWI{y|No>POigB#=i7XLTg z%tfXo7h?BB<7G^1ukR1WY#C%{h7Nv(Xb3t3{_7Z?zIA{z0HZ}5k7VZ2WQq~F>xqP> z8pc!{CouhFmJ&S|dDafhwX(jht%|%^>iG1x!}r-AQ`WTnZN&gpn+|{x&Wla~>%a&l z{id@tT$ofY{X+5FGtpK9OgR0DL?ji5#iJ}$%l?mMxS45?1GzEy&eVjOnc&7W&Fr=d zQP(1DKMpF~XMNbGuMoy(n}Lx8)-C?a4c&7s(3*SG5L6m;D2`Ur>BYjCxW`5i2jub0 zpl&Mtsxbk}{?Kx0$pH?lO|Dnt3n<%(rEh|q=4u)!XRYn)Y=9TVp5z89ITM^k6d61@ zlZ4A73yHjS#Iw2C>X)%L6fet)Mdo=5sf_aV1hFpB!6BY;MHYs2m*w_ z`(u**mAOK5=wQ9+QN1664+NpCA&((O!F>}hu z6TGa-iH(L}tyZ+WdS$n}oeGjiQ=j7A)D@2R!Tc*VYCVN?bc=qChYh0sEHgmKBRHt2 zQJBSGv^vk|_-5mk+tBvBYzu7`=Yvh@%4hKYu1XEwW|5qxN9%UssIes|dGu10!%eZB z=K6=muBY`qjQ#Tjaz58^pKZTkrbw-swo-OV@CJL1SK4hB35teFe2krU|r@o7A! zU|m^a60N8_1mj53Qa2SMIS7dF-!!n`+Pc27ummqlA{T7n##!qz1D3eNpo4$p4_#o; z?ObSqlgX(At$X#73e6O3mRVZx&G5nbj*QBU6%+%5!zh*6To**sY<3d z6T?Ta+Zq=*@1#)iyWkfEdGuw@ei7Qxh=RXutmO<0;+x_hQANVvdm&XE@>G0Zih{p3I!2nHarj8$Ab>JqSAp35<@!!8Ju!t33+>3TDW{clZicI7k7~ zxJfUm1#FUsp5y}zcQBPNd?5}vQvdd2_#f_!f%(6=Gv^HAWTYBA-K$f0x> z{`6Mi-Bca-`fZ%=R%Q*O`P-UDfvaEt~9OKA*cibC`dC+i*UA;HBR8T3~&7 zd}2{#g-zsc2dtOgPqXUy#lzj7F?=<=%6K^+_(kqwN5P?b>af_0@#A)K&V^f z_4&B{9RIlr+k6Xl+3eh~`nUzPSRY|4kLdL`Q@howS^avxBRr`q)-o9U}Gdy zhhP!h%goA~Ese^+!Fc^W%iQAtm!uwXLU-3{8VmD_zb>;1{8O!G8=19b{@>)kQn|Ls z>WC?mBOXQf<%u2UpF#-u@?~zR-8PmKiv2?X(5$piSv{zOuw*b!-i`_a(`ce>_v!*i zl8D;OOct19H>{k9c_6)M)~hmL#-*DIW_*se8`@9`UH z@ed}L6og=$uUY#J(R?TlBoBti7F)V-+Bnxq$c$V@@M;}t7M=R zy==}c8A|&hi51nYQA4<M?-b&Pgw}sl!hOC-$c~4fq#slu9PKxD0m>UP1X64m- z0x}YZ@I2mknZ@D3SlWTNH#&+~z7t`(DLrZf#~NB<$i{~)JKPoz(v7qTX5>fPDT?S( zAZD5iv6Z-`O<>&GFGmG)M#29GGgWL(~%X1 zMKwhH^>XQIS#?VVBb2LxyqU$v^1MwiP{Fw+3@&OlWMQ!@cNQGztGb^12TpgCJ*yFe z0YW^CUEJEQ77?OAMw*w4%~B8UjZ`dOi5|NZzMb?e4hKrEC6#O{Si{v~8-uZ|kpZ*} zUI&RiGJQl`4de=+eMvc@V^c&|AyOd&}dq%}R<&Wvnd zK8?_{?(0@kO_m=lqA*34yt52FPkz@ictgFZhNLJbV~; z*CaJ8!~bD^b!_~aIX1`++*3;;Hxe;`JG+Z`L8hU+M(!b;a?=!P8wsBGbYg+nQHzcp zzizw7lLmkn+c7BoI+>!^`Lw4xN~O+;Q?B9=mZVAQpv>WhN~JugOGLVsEQ+4Yxv zW5@Me?3yIouzW2kl>hC_Lr~$4nY`$LcjE4i^ueSw5I44VIJ$4-AEjK;w3@qM1aALa zP@itr3QiK&HO6*>cuFO3yJZ67)HSfv~Ui?oAC-37MmMb<>MTBjAZfH z8U(SKxf?*?1btU9O4RT!UB+baZ-y9$b$!JP&Sm^6&f};^Fp}?NDb$F?ikzO@Cpf0k7Rds;OmdS32YrY z(v~$WtscuF-B5!XLQXEm9T>w9!KLmgsFo;fu{s> zZjlChQ?aFny?9Sk4eMV8*syBOcEE+Uij#YjlAmlPp70Y`fFJ}hWw#bhYmLOY+{@wP z2dnhB0|b94EW*o<|J)c0HH`qFH?VkiE&`y+5f+1v-E`_Een`Y&7aeJ3?GOVI5pUUe zr4>VR@XE5+h2D>FsIxfZp8o`c3!Nl@kmS=ubrL@|x*8giUb>uyj`$jv1+2jt1ff{~ zD>S3ay(GRq=3>RqLx$kQXA5J3Wka7%E`SCE*L^=y1t3h`h44h?-M3(%aK6QJ;LW-x z<}L5;`QQ8sRT^~9SS!%i3$(p=StGnlZfxNZUVEw-aFt#Jc^m_jqoz%mMViApy8_l- zQTaJ+w+ERR%T8qGf$b!cl8B;i8j5kQ8Cw^w<8n||43fU^pFN{nO3plaB;Tryfg*-L z`!I`?k542Sdi=FES~S*2!Q?6ZYFIoP!{PKtGTdTv&wnSa+}q$iN_nx$&Kry{}pfg^3u(!uYM}3D(XWu0H3wzrBD(r^8rb0lwx+q!w%-KK6BU8Nc&7n%=5NZ(GR##dN9 zYc=b;bGFBGwXRP@hkBRNQ5}szCXYS zf91*EW4cjKsFs1+fDRvE7 zZy9M|$S;E+ZLb__w|B+nJ5a=siSoDm7k3L)?zikZF+S7>!&%V2&W$P^dh_OWY(sdL z;m~Rn(pPs{sf~&jxTqHRysHZU8y7$rw9mmYwts&b5Y6x~$Zd!XJC!l^%(Jm3z%;edL-%uq@q$8=1hZk9Wz4^DlD2l^6N5>c*L zw8tp}l`BdZlY~B#sYjDg(mk%1Ea?JFXU?OSgCT_u=d-mDyP1*XyjNW3w3DoW0Lz&B zPCcg->!Co(&p&HI)_)5?;hMQUPJ}LshKtX$8w)Gk*sN-Nu;HF&CB zM_-i@m{dwu7}!}5S<4o5P}*J)maTW%je??7nz$I2CHob|Vl;cd#!PB-o{opqZ#BKJ zDovSSTU-Rz&W9S`h@^<>pc7Xik?f(+G@#MpQc6}UGY17EmsKSdVfmUXbE@-=%Z1_r zB^M!M@hT&2BX$5{#(+^e2q*RmCTR)E9yX%nd%8A@@!GpBeURd;-1FT^(6`pDqjW1f z?O5TP{xVMde=^^W9XmFs-KPGY7~b5Oxl7xqUzJF08^lxW_lO8Ob7ubhv`Goo03n7` zPkL2dX`(QDwgJ_21CRY8s5~X&)TO06qgE9cA;YD1b-ftS@6)2Qqg$6L5skCogKd8T zEp4NW{;n#d*F9cGV(y3Y+nI5Bqy3!t`~n`QGLsH<>N3>Z2<>=5n(@{$*5}CDM!Fnz zW@WpuU>BB-wDMzR=!x%I?IG?hymjS1^)qL?idu2$?J*JR>>|E&TMAKbkHbA#42<*R zl;jLP(16De&aJqLWYMHUN-Gvic-E1vPupZ9nCT0eWn#k3qg+jyWd(nGd^Oo1SNdRh zv=y(d%e1Fv{j$`6<9@=4!f?8iH~pm!BWV^+(bypB!5U;Ip`g&2;o)qCE(=R?McWtSz~#Y7+S z4-FV^ba{x2_}B{N7Zm+@8M6%F56)cxgrN`LIwZTh0 z0SA}`6!Q*qm1(byWg-4y{$8{8+3k2**3lnMUd~ymZfh#ktgfs_#U#V$;Kg_tKObLD z!F7G|QJEG^UE5`(!wq*eK zf-0JOgREBxMt@`JazL|ws!mo#=)H5+P|Aq?a1KT8-EvMO3%33&NKgFS?gsPLsS8KI zGo&RtU0MqFwk{5OV7axRg8S>})~vTeT)z-}1b!G)L*|6DThy(jt*0yW`{ofOx;i{o zqY&*;Xx8av9e)woOL3*b3qmlb$fHCK8%&6^pwr*QtfC6N$~aXJFolkYAv5D7l2PbE zCB^KomYL(MD_e-{p8occdlPqBuOm(U9ram3rF$;3Yj0H)hiXj1o04lS9D!au_x(XH`sYQFD)O7VrlwkmZx$oz5 z>G~TM!H7cM^;eXk8TR}&$Y!MM-Rgrz*&Usoo7C{mAPim6D&hDx2>ME3Jm?~`hP@ia zY}fFly}`+`jYf5%S?Z?HnE{04q<7OV5kdOwt5nqvN+i}|b0Zisa8T!-vGeQJeG-JH zg~*Q(5&rk-uk&>4imUz}h%B+wrM(pPn`~ZLwE}ZuM?8=vi%a)VWngleWN(S`%}i;J z?@k@Q>SQwI@msvrWL}`(j5~XVVU91bQglY0W?755%p=5?lyX(WEcMOQL zw5CQz3rvI@madIP{4A_`HaBY~L#;Ek0g?kR(K?X4^JatF9S(gtyV|u%Cp&+jNxVkO zBW-0jeINla=0xO%UG+eeFJ$Q%vvt_oW=uUo=Fbj8g3SUMJrJi3~B@e;Sg4E z1(mfZT`$=@eTI(Cug`h3s84=pc`!e?v%XWvifu3i zMQz9GZ{iUl`%cY@Ci=ip<(O*fw`-)ays-N)C^{>GK+LNyv2N6NmtH+W+evV(9=Ws$ z8BWR~tV@t{iDWjfF>qH2SeXZi3YNGy-(OB50rUPc& zQ__QS5QcLTVT~U?dWJpI@pAD(ThK=Xa~mT0M@rZwf>}hMAIGEdvoedTH63NnSA*bG z6calV>QQ)6;uP~~p@h^fnyM&gp2@NH^$mmY2p|j>UsN(Xne?3I&9DG$XnLCUozy*A z4AwvV4vW+NJW>mrJEdec1?I+&d<15c41SXUCNt4~+x(|^R3sHqT5$NLME{*|5GCLc;Yn?{;DZI zOu`0erzh>lO{hbkW*JMIy(a=nX*YOB6v=5h^$Se8`RuE|Xl$g5zzQjTKC_5NH{qD! zg=rF(8(5qHfJE6gmxtzs>2v;jmuUz2pk=k@uCq7=f}+M3*T^0!UwO&toU}ufjiU>F z1LCHwKW!EAmHZ|uCXW-?9=RKItXUQw_FB#c5ItzRFO)+G+sXcCT>+54yvB?(e>Zu8 zVRvp6=qpY5g9T>^jXw(a$0d{HS17BIN;DF#Hnv`+TH5bRXO9nGh_p#O>93&2lOdDy zFy5SZcR^ZMO2_zbP+u6~8)OfcJEt-+G%96UDFT%Oy-o)^%1c4uK$wc=JS6a!yy8ZA z+`Bxdz$#5>)7xQAm7XXyj7-wyWGN#=+}p>A7SHtg@2eSP&cU&H83^EPocpy}utobr2tiio-^z__L z;h<>@-Zg>uCOoKg!J3xV(;^>6pO3re$Q+ginpnKpVs!nN{Wi>H0i*9m*lV1(Kb+x= z`DaU&viuJRfAvOI^e88fIcKF^+P>mi-LCW~d zVV11mkO)7mHd6v;V=rJ{bdc=Zu`jRq@Z^GOVq##Rlwsb z;Y*VX2HR!b3OPUG$zpT+#^=V3Q6Mi!^@d-lEKDqFdhFCj6_eF($#;oQj_xvNRbFSW z()9i5)j|8n?RQiPRh6WgQNSX;3gmEa)D{la7c8t}vFR6n>-;&)S^b)%zxvz?1X_mX8|B4qtrF zRIwb30ZhxRGYMu(QR{ac1QAI7U63e@lwUYJgfKf3O>6N0*z6slt5uE11eEuw99l&U zZKqRJI;(fWV;M)#%&IU)dJ>6vekit>%d0#Rz;6n$ zrAyBsHEKMwb7y(Zvs*RAy`P6+#R9qyhk1i<9A8{?wO)xEe{h5te50`SEjm8-zC~iw z#;n25fZh2eiJF}!)CiP%5kZ9CE9Z3}t#J8lcw+4E2>D@YtbmpPlNAHyH3pIF8~a7I zm$DHfPpbsgK%4)*uqE=O5(|x^qQ{rkrr%++JNTSlNIg$WN*?dLlYie*Wpsb5&Pz)a zV$#)F`wYoKYpa>(MP1oF_af~ZRgKH(q_H1O9<1ihis)aZZk$U+PB(i_tW9~4OXK?y zyN?RLBF5uB=1}T%UM?*5l({N1^P|Q1G4ksNr33<>CKLo3q*&RB7#YAc8iK@uUc4So zpZ5b4{QHWzV4l>%`SH(gnX`S*^Htfx58!pS^y0rX2mS#^|G`mAO!WVyMPvPsQ|5mT z|M!3}>wg4l|4$&5^A|{MjsFuZJQ39@0dpQ%8FL$Sm|%K1KfK21W<(T<1?$Wv-n#P3 z-v3y9>t{>NCrZu~m3EtO3@KF*v5N8{H7%(O@tuPTIwj?i>#K`H+xwwl@;VecWm`u+ zPOWn~P^BPTV^@2t@PX^IqwDoe@NSy=tBJ$7u8u*=>b#@3Cmu!RSV!Sq(M)AoBt-|0 z)^}2`=dGTxmptX+EzWMY?=A1LOYP?S8MjAmGI{h+x90oheGY9^gm>-fnegX&sH?BK z_DA3ZI%BbUC?#5tL+@3d67hq=Eo78Zr2<;(h>w@q$7johhK@`LMTVueo>O%_BzlzboYj?*6&Bj*Jro7wwaY6z@~@9$=rzD;5t zN)%Bka`r$e(Qk^IkCc{>ih6XM2dWme5H*I_#gXo(u2f%Ek&=}uPDm8z<9net8MMEj zNVYeoFhzTi4=gwnWrajKk~2Qi?e^|&4IRlKSr!U1%#=Dc`vyhuEIwFANb8K3nYp+b z`(X(p>jRr!Zm)cI0-^b5bqKeK+Ht{V3er`t#6X1cxIl`)=SDJ4=pb>f<)MbNAHO3W z78%}f?Gh?%@N49vSa0l1|AQONa>&R>)v(Wpl1DDHdpY|-X0~Bs(1UFppcVf3OfLLA~9MPs#HRH=WfSbSblqM+mtyv#Oq2_9s zZIDI0VarWx?3fG!%DM-$Y1PV(&f&(5(xShoSEJZa!vbHr(%t*r9xRz8x1RE2EAYHz!cTQZtck-}q1{OP{_yZ3-3P{i8 z!l7_pq#?-mlIn_F`%)yF)@Zyd3xg!f25MOeONXGuva}NB1#79P&_a91yL&l zQk`q5{^NS6WOprsc#cTSJX%kjUyWl+pzX0oX;=`i5*T4E1&pkkVy5NjXF;a5c#m1m zw5ce2yp~zCo(k(dvASmDJKAf~bN^PBO5<7h*P^hevAvDWdMB*&2SThz10~ScK)BBi z&&y#C3Ky8?azkbpJM(#*;e<+c`40rotOo_rMvN`EUdkgp!W+ZvY^3|+>hX}zOZ#pk z{@%_Zo*IzNJheqmC!oNCq0~=`0nQbWV0{MzYh75u*?Qr!(D&^cuAB2U)NJWYH@*cm z&7q*K9qSBzc1b|ya@^xF<%Y!)PJS?r7xX>22-647QC~W0X=vD_?$@nn3Bnp+#NEo) zuOlg7E8Mbb4p)|6QZ&eq;oC&oSJDoyB*cvB#EpGgM=U#E5XU+8-3e%>7SX1m@kYVV} z)Y(~yL1kXN5L_U_SmcPN*0?(=!V_gmMT$84@)C`EWpX8%Cig}$R1gw^?C{2N#2-hB zm`v~~B;B(*Q^00dgRqyY4-jdqe1{xF?XXu`f`+W!0MdCHz@XsTFT;uQ9gxKuE74|r z&L+q##t-Nx$QYoo6;yoZzQaujn^~|gas?EJXUt{m{bf_f7Q2`OYDFUweOqr!0kZ4Od+}`M$kb#EMc0+*GHcrTx|C1{@5Ps^-Xk`^awk4-?b3|@$Hx3ri>zn z?a-k*9T%8|5H-waQVPugyzPR!+3i8~6>a#?14g103m!XWa(OSX9TXGnL3XWce%@X2zVn-O=_|p3$i$Ks%N|FmEu43Vpr6+SZ zle!=$@H6y&wubzNfBsj+AXcKBJDm;aO83XH*hJXp)*05u?m$GLRIR_3fYp=lX|YIn z2ML@_Yqs404}UG+Hk%KTQpD+3X5M~ExK`BY0zUSe<^g)S^>oWaV-?#x^L4T-2wHa{ zAn>@-L-5<5gj~J*`9D>fhW;QNJ3;HKaUU3jWY8F%TczWS>H&sy2GE!bQLQkS;%BnW zB2K3`l=NhD!}kxHZFW-cBKRr@(>catM&~XQ59I{{{i_yKoma=bwm0lZ9-hnx28yux| zmV@KL-9iaHf3OAV-`03x@dG6GXYe2Gm5SJ^HeuvbSbTP$FhcP7(bO!eQEc_3dcXgj_02y&?scbaGHr} z9M`v-k?HMo`1=ng*l8ae$&n=n>28p96LHg=B0A~U@b6l-6)+7vWYR35*tcOykPB&+ zoKI;hMB0=kz`LOTTaFBv~Pc6Z9}7?n;4~ej(hH z>A7MJg5H`oXoE-2C8Oft10oxU`ZxP5f5t45jEco>ulp)(yPOLJT^7OQ_eT)frFkmAcu_o7xUK<>m$aFk2dm)&dDvaZ!BZdzKrEGwaNy;qY z$zd>6o>hlhDn%3_!C3j&%gF^$Jh+PM)6%}ltPM*M?+GbKH|lnx)zu94n+xlCI91n zhNrA2P@eZL1}O$U&KN250Vwe;&&NI9v{it!1|&KT+(j~=BZ3m=>9x`#T_;7TV3{C4 zzkeH9VBeKYYO-YWP?C~TL3p7gAgAh!y9Q`-{M!NN{X4DQ_LDe3r52=x<$XJNW3HcP z#cEqT8L0~loQyq(KDUs>9$}wldxX;ili+~RK{Lb*)I{6YAXU3U#sI0qG?kG;*3btY zYb{YN-CAD?%%By}6k#B%MS6~#MkDRPHW3hBcS8B5)ZjCbHzW-1EW*mmajc>>O`d!N z$nft_JUQ4n(XoHN6g|CHMGS3Fqr{Z_kyBcsdKX2ciN5F}}b_n703sj2d zTn=ez=a}Wv6Xugwb9I;ks%<0-f2`N!l%HWM;DfMaSO|Eqa zfE7}Xcs?EnVTJJ&8mWq%#gwRynd8P1ppO-&4g!4y!pLSq3COAO(7@kzse6r{C&RHq1>}=rNEu#uZJ~`WAVE2}& z7ey_n32q+n@ajb`f)xshwQMqKBuQEw62TPLBIcuH*`d%5Kg`0xZ<)nAd@o^sg|t~w zhqq7IBWijccFC~AA7V!3YR)@t#88_$(w<_4neN=msbtO4B=bQ!GO`88qS-_ynE;FA zPw@f9ykUM8xrb?wx@9zu&_{|)4Gu|6x=2D3Jp|7o&l8;iR&o)^sl9E^i>$HzAW^zm znfF|&Mu8_JoHjFM4qe!#}ap8A(O&CRJ6iM!I5T^ zLz)V_zt-C8n+q>BN(?bn3#g)sFFyyF{Nh{67jN;8Z06~VW_yCq-!d&}c1p9}+sPw> zkkUP@LY%_0vF}Izl7raW2>Z{($AA_jl_|Wyo?r_d()lGD{cyf8vhX9n{02?Rp6A|GE; zVL__5>%J3HR$az6X$tr4#=n<8OTk$HirAnu=?M`_&FOVB)82BN#ZS`pl?w4x_A>fH&B~@{{h8}#m>%w_!4Ek%gPyXCagO`fOr6yqJye_RviI>pbOFX_r+eoC$QAd+S zM>u>sujC>yy3aMoFQhdw$}V%8tv|jYK2w+#zJ%358cH1eT$@A}ffsr_vnr#dr=QgA zhN4O8>l6F<<}j>tq>~U<5g^(r4!*q?F*+Kke3f!BxIq??JArSBkJZ@^B4nPwu~-uJ zA&OCYH2RgNuB1L>je*wXvO2Fw$m0hP_CXZ`_+utG3Ma|&0x{J`zwg~7$?}4%T7Y?f z0zmb8t+7SiFM?ZfIq5H1*O8JJo?d9s~mWbp!6jDgck%m$>?n& zwxv-PHb)52IK;5YpR}XC5e>@hAiITFSEGA>JAdte?fT_ky>SIiDpCB&o-)SI##oZ} z1!l7CO%Sc4b?>;K|Kg`^;!NjyI4D`{vcEqkLzM8A4J>v`e?ErTdQD{Q=p% z1b+S(?E4R%{RjK9{dX7&>;H_H{(rD9`~L>}UTJ7KVYQ+7p49bAn_3N>}mG}1p!~)NF)DE z?Vajd8rj=~9<$91FlGbxG%7)y#yX4YUtQVr)R&sbrbA)U^(2jntm_*+RD12i_~ecM z%OvtGfqFSWR!A;nOejqKs@adx0vYC&jdem_4xP3*2!6*b*i zb>m3TG#{(}`tf}m>Q5%X^ya|2RYNm78JhCr4@%x?;-?hV93RwVRh&g$UFvrGbT*eR zXi@F%?a+g3p$dlRHmnV2EDA}$LKX=nc@x|1(|3FL$l}|bA;VMe>DH}5OOol)9K1QR zU#)nAz^$sXzX{wr$yY%q)qnoEj|WzeFsB$}sk~ zVPAxZc1Vqz)63IYBq~J3?(5Z)oydeN_U*R<4OzYIENGzUPUXI+G<7F&A?P`La^Z7v z(lTK(1V|!~#J8sn!_UnAyrfpCB%e@Bkp4XSIQVU>tl@6-Ceu>A`jq^LajKNVL94!_ zob|}RW36go9dyztez1t)+gi*Z---*?dPyM8o5Q@qronIVYRoHFi(cimklMEw5FlLi_FO)!2PeeyQ!;ez4OWO*^(c-4;y3wLZpyP>z&QP1edh z`KF&h&k_Cg?lTs`;?I<;hzCZPs62E@t?u4+EqV+|I!>USQh-QWkBl6zY=JvBv~8x< z=uKzNvb3V5>88b33zoF_GuV+sZT0}+R*_(w>8H(xH3?tTK!)y{0RIsc7S>>^kh1Nu;dEnSw4l=0@ zPkx#}b=$^=`-_Jg0%D_Xz1k7lQ}OW8$iYUT6#nS~=?r6tNU^(f#Xnm*#YAD|e4;cG z8a}B!SU5QlteCZ=+W(IBFnNS{kh5}hEuv9`Be9-((_#Kw!ci2Ai0e0`pW|1AKP$-+ z){RSDOy!^rDL%1IVZU|(bzjwL^X8~aS@(H74?KFS1`$zh6-!rTzZ%13(`}-U_Ua5x zg2EC-k$NOnREJ!by9!*wVtD!VieLsg9p|De_!sQ1-6HG-ez0p1+n1=H!uIl^)Pn`q zCkb^{;z*Oq3Vk)+stqDcL@_lA2DLZ36kH-u8j5$Phl$1J? zL7TDz1-*^BQy1oF4F<;N{4l=UOSoCpg>+EXjZt5}W7d2(9_l8J`1qFyBd-lrnvin@ zYL;)6TbV^rhq1}I`ZMPmt7V5sas=QCO~-Skji%(Xw=$4#Cfjbg1Sn;?O_vjMUfm*C z$g~%KCH{kL{P>!8!-%G@wvOEONfsGvY-4=FH08yLF{{v^76MyjI=I~^9ePg*%nSq9 z$1}|kEic7d`$jQ5@WlvJMf9vOatpf}NFuhwpQ(2u*Nb0WgJ7|_ERE(YgGQH@jh}&n zg~UKp#-nQW2uaU!Wo2c4giZcHt0o_WE(+`5CR%v))_y|E*-ABVH3KusSIEtAUW8e}agr_3pb7PW&4068#v zI%N)LDw~RiEmX|5TB9Yo%+FF2l8GS?*ktyJlsCpxaV2rOVS5`%#$noKelS=hI1=Kx zVlWh2CQ!_>A+ziK(5|jC_R0WQNV}Jmp5-S_%O0#%SE6fv6xxg)Oe@WZx?Om-$X@x3QM7W@l@Gw7#!UJ&frn0DPIdnJ`3yDQriG=s z+9wxpkAe^X%E)80i@M77=F=GU%!-SL**sruD7Q1n7T&f}`l^Ucni`k`rVyU67dMDv z9!9-b&!&Zye5U7LGFs0PN*V<|>o!0odlSJVWaf0h%Z~=<6ioq}(GAg?+XA%B2JY&!mPK#}pK^Q&mXYO^U{41o; zdhCgX_Bs2^^U&si-a4ahwgjAfHY5M`kaon6vqb3{9C-KvUpIGBr7+`P{XPYO#dc@= zNbzQqo~$qDUqkcR*am=}SeNV9!?dO}vb&UE7;GJe3q$YcXR=31pgHm-JDdiMW zthVt3R^S#D9FiC4 zkD`XDbUx(uX8A);sk5a4M!cmXPL`B{%*9?Jmc8?6S;|-9;JFfzYJ^fS&XG|sdTV6& zT$Z^F9`1-+=kv%y%iJwgvny>E%^2h`3*dt{X(rsfwyw@92+aheS ze0-rBh2TJCp{z0thl2C0{tvmZ{!v*ZtDQB!+HWjXoZhZSqOlk`w zbceyTPJMiwyro>a`y`A0dBE-kr>KE_9GE}hWJrPm|A(=63=XZ^)^%f>Gq!EcBr~?1 z8QZpP+qP}nwr$%t-&%Lyz3bdnb@t!Us*UkuRQ2BYy!YSL$7C9%n1W44vBS~_ib_rS z1-23lYYqv_RutKYMh`M>;~rmeem`7BY3H#07N(!Sg*2R9onjT=u)P%VoO$&PX;&rt zhG>VuPGLJkwi45RBBZfWLdEC);Jv{E$=2DfeL=>J&PLRY&1UJgA>J6Nk@xWHsf9#5 zdbi%@JYu_-hU$v`!gf3XuK##<$$Tpsi#6!8w^>3@tIsKLWB=X-u z(|wgpUf|6YE&VmaGzy$B*})psu5?z0H}AIV1V27VNrPxXI991YKD$X2|MvN! zu&UgH>xXMjn$vyZ-f)|Aw-p$!!)wOrW3LwQ1~|dtALnE7qU%@aJ2nam&&C9bv(P&c9rI2 zto~;7`tqm(T#!$9@`9AUyFqQI8`40sOjbr__N_kr4rE4@of2ClfgC8-t&-xA+Dhz~ zdvX)wFt8lQW2aa3{BpXc6fMjx3?$VmvB@f}3u@tn5^^q_JM6bwY>Nk)755X?b4XKrN={PQdxWH zQF_9JJs%j#)?q3XUrxGZG{0>8aKdwtPD&8Nusw*C$hJu6S=wux=kNogz9O9`PS^`p z2n^aJAR;j|%3q&nj-Sz`QBC=SJe4gO0v-DG1>D)c{_vj?fq#Pge-Z&k4)*`i1Y`SW zf9(Hkg0cNGV)%b;f))Nl$@!Ps@`MH$7V^+vK<<}6TIM*##2U4#(q$LiK6^2O{6Nfn zXK~Sw%?A$v_&p>o>1zq&OAx<3uX#52uc@Ix!%t-1?{&FcKRJxb-3V9A__Zry5G5K! z`x2C_>IR0NU)s|=vLU8N*YMyqo}9p}C{D*MI82G5jHG_8iq^3w>P{G~kE(b%esajN zMg-J;%+s+gf9qUV^K5MIoGX@yQdlY7Os{H_trcw5tm^e`dw;({w;0>@C`*{e26Fch)9a#r z=XBF3`)&81ywC(fUsimSQlG!Z2&%jD;T@_0MG2I|HP zCs0>C_W7NzpDH%`BRxmaT&3_bDEX~-+l}swN8^_j|6e0L7n7wENS(PjbGJzxbuEItP@`hGTbnC6;Rs@i|_5 z#$~0vs=i07M(sEQjU571{=8D`j&dRXD2xq~r9%U=*peh(Og4gKla(9j2!>lRmmkJ& zsG*=uImaZ4>RQy;i5*cyli8gq%HqsrVi{(HH8~nuMrM(I6MDB16$r$6swLe=f3Qh~ zLlaQYx*loC<By=GUydGOya1(sON4GCMsC& zg|y{bc9YWg#EcN90r^Y3b`ftVV|wNf+i&FCE9a9x%lJMRmdcSA2$JAhYLHCgD9T^1 zf1Ev8=D^+=pmyImwrsZP?V4A@ttR7>(p7-oS=XJanlsmx*kR3? zfK=XnLc8bjnLtBP3reukIAhLj(;m~7RE|M0Fv^DmCVfU_Z^OGD?woFML88oKCW=eD zWif~hYepby2%^)Po#nJRB9ao=Qapu>kbXpSwQMcDqd5ckh~<4mT=R%RA`|g?-9VE@ z2Dxw6B=ZN9G@k8P^E(6OS%1f{Gh|6lFg(rE_j2}*ALTRp(Yd`s{SflZqioGY3Zp^B z&vh}}VG7{lRrN4db71e&_(Qq`Ad!sw&i?MKrWqFzJVZxE!&6B zlUJT}uaAt99v>I2kX^YibKN4wnV$rz!OXvHmoDjd)%WysyIErUe-U}0Qg>6?LDaim zOIoOL@%{>Ha5_TA%Me>P-~G#%Rbvusf6^{C-o(F#YBiWIJEm03*@sRrS!`pVa?pbG zMvTlAuZSXJ*lTZVljPzX0z*-Lsz1p(pZ5?9P>F@t|AORQ0q#s?Ey1-qt@gWBq?jM2 zu2mt+iQnf@$mjBJ5`5=Ga^2s5w^*qdO*7B0Km&xgfdy6n1|O@S`HfsZ2N4ld-WtU^=d+-XvM|3HCC4Tb}|be6FwVw zoGi`)bjkb7m|KwqWpZn$vz2_-S{2IF62xQf&8wlrdA56jrx8toW@f--1~CfHGl2GE zUc2DMlGV^hq_XE?SEk`3se;(~CL%OgR9Q*2?2SI|B!2@r-SAig7N6`jCYUdGeqyw! zX4L5sAu94!duh6569=ztPBboFMJW@NIeXn11tw?m<9OB?UV-1bn9pW z0Bfx*160-FwrT;l;@4J)XE+OuPdWMJQ>k}e#|F!Luytw+GCUJEFhZ-`ZP%&xnwwrX z(uWt>nAghqc^y$f6vfrx>%Gqp9FSqvm)-pzsvyIu@4xYa45hy8j{iJiOclhX z_}XBKjNv53dPd=dPx%Khh!Mi{Z_;4H4>cb6he9|U@OdGc`>&TVo)$!x|N8@@1^;Dc zuK5RZ$ZwXq&;#aZwgpkDkGYZ~J&8r&C`s7(13m=*0Usubon`G!|DOLb%C{BIxb`?m zw}GpEqZ58K9sY;N>0i;%zal3_R;K^n!(jhU>bva!EA`z>m7nn;)_?edIh61OnnGy+ zfCx3_cm*#-n{pK-xx*d^>iZF1fm566cJt!0d-grN z{1ryo6FX4u!0znR`Bo;F(G*Cl0{i*%axt>`B|8eMk6_K;+BSQ{Cmg}Nar-ZtjZUZl z(#%SxaXR7XtoWj7;$>O|wV8lL|3DhC9v}%L7#g;q+;rWIAcU^O9_jes+>qS2+y@BQ zf`FT@g%Vd;aw<%v%HK#}j7SSo@_}aiHNuB$CIyCtGnwzF{plEMiAoCFu7A*bQU(zK z(b#uvvxT{f7{-&7rA7-%GvGQ{jrQPSX^l5+jCrL16uoE=vx6hc1npRmhxuG3Bc=d9%g%GMdZw8kvT_BAWvSE!6H|_aWohy9;!wQHsr~2ijdqDB_C(5rM0hR%o^F` zR(VhLb4|ebn^&J0nu)eadk2LL?AX2w3KdPSpGAG;ZW$DcI*0zG0(eSKkE$Hi@-5fQ zK#CFezYZAhIDxaX6<6yW8wRI6*+33@pM9(1Mt)pbMl|F?)r-5-1 z*R)%DU3y2q_-CGdJYh51SKfzx8`uz=-gtDE1dQd0H4a}92XD~&uG%FJsiup6Esz9} z??G%KCA7t~9wWnzr?gzJ5#m^tk{bcWv%yX5g*=Xsix`1SY>7&Xa?K8OPyH}$QB>h@p4Z@HZgS~$&6lp8d!oM7r zp6EPACW=cvRsb!oQ||>SkE=!~8^G>3_i0#8t#{G=aQo#U4p-Gvz98j*&|_<~eTpZ2 z89yxOqdC9kj9V~J^0gjR;Ga6JbNzUv@El(SmLKc%+FS-mv>gr{RA`D1ql6ao)O#)u zWn07@VT;|flnp-|Zh*iv;SkH7q|5iE9NEQ0slkkaK)9mH2DA#UM>m6Bq72p9ovEpr zSB|yNZS7sD^cW0|2h;O6|GdB?zQY>>&c45RB$})U%-hQ>!&Agt-@<`ab|3~>vkl90 zgaP%YKpHPTa_$&e&vJkR1OPZx37${+-#vP^qXqE0qZ<3$tkxY=$H6qG(}-nGIb;M9(JSt@2Tjg2+5sg@7i(fw9b4*Ak{Zez=fWOX*)@ zyn)Y23^<51@b9dk&p{T^aigE?(|nzXoB8<pVpaxNd2I4eND_5rq9$(Y zCQyF-J!W_e>IR^6)=?2eK>lg*`jr**i$VUz0e-- z)?Ouk4x$;SdfmG^TC{kzuA@Um)ff=NHsnlRlw2ntPe{ZI`_xsLjf!;8GyI;Jl0+IT zO}uvZvaDCV(?~y4>^g3?B@7Pk`DI-Cw;89hA~cRY{yb0DlGfRdWo(*JEnBjBjC`ay z)ngUTSg>D!f!;mMz)t%?V6pasd%4bJj4y56OJyP=OtDJ-H3}|~SXMRjX?@>@9c~wY zjKprf(H+fDo-BNGs$FJS&(*#0gG%qEpUI+F&A^UIg(*{@aP+XYx&r~7!X^JHSR$7i zH#0`qM(P_e>B?QJIFx#Y#LIf~O2ttju_F}=m_k6JoOo;^@bNtN@(n>5);pjFGhJ{5 zVJdx3x6zuzwrGT?#WX7##U_567uk2;Al~N-8IY2Z5+0>{>=_;v55Uclx?JxQ!6U}F zZcXXE4C93zj@He@nM9*AM2Z&eKq0Pg7uk}GTvb`5b=;1V_HLAuiVD$>cn$1Z35Wop zJT>3KzdG8Jxs6a-A=Z_PCQ#z)Oi9H7Pe@Z~ak-vMvGoD7_O3e5i~QR8vPo;(JaY}A zmy|M}Hl-OS3)lADS*}(aH993Pls0V(s#Z0mn3u<$^381>r5#s;oUR3*ov{P`;9h<5 zRb?8jRQ`@iee=29`PtE)*Mob9cq`Z#C}&5KkBSt{<;u(P;(Gfv15w+PXln!wWA$+_ z-I^{d^uEj2eS2bSqN}JSzdZv*a__k@>%Ll#<=rcV8hCv#<9eg!)8v=!2Sxu=a!{_e zg`BQT6>;n1)#~Kk+tp(-@0Uk=hihO_*dPUzVlDh{LGq0mJKuuQok+G=mNF zn4aqVT}W+f(oXPe`%!=i{d{wM^4Fg)%VYG=WiYnvIA=Ca*^Jg3_>5uGY{m`Lb5iyZeTcu}Ffhgh z9GCVc(i_K&^K@Cf-d~{LP{_mVX_>`il^UvFOW-=h4;VMC_(AmT!h1hkd>L*!AbWv)P~T!^3d)D|oSv5o8~BoEH}c-=cuFolzb|8gFFT3=d(W zJB9A-NiXn@lN3wzA){JXRNmLV@q!)=vEqNr;HDxQy^m&z_h*>7v{)|}$iMI=JLPtQ z1m`Kwfb2AI!k*=$TM zdFMNWv})y|4QPxw!Zk`61V}&BPd~^Pgoqchl$tbLgzM*;3glrSEy9lRXK#79isTaMI6sK~1B8F8AW}>T#G#Xt~0c(#4_5Ko(K6as73)1X(-pfbzF^yFj8CS9IJ=L!FUFbVf!5(zZ9Mbd3yI03{A ze(=q*7L+ygC9^TK1B3mQB1^RJaXp592xDj@Um}J8ClgteZ9cWR=j9|QWtPA7;Q-z+ zAG?d6lL`3%RWR_}&xvn>o&HLBWLHy@vH8ygFc|CoL^AkC0erFKkd;HLWcyd8+E}m!m0!`jJ>wcWP}X`<2lgyo+-a z!|7VXa8ZT~kjWKtssch&|EGb2p$e>~<|MUJ2Ns>gkeS#rqrX?>-y74U83>Vw(J|^~ z{HkTt4#e9c0b}*3gjT{augyj9GT6Ao5}7pw5O75G_=B$q|4yO0y;;pD+JRCF6@lJl zZfj)PLW0)X>~b`Wh5}Sm91=3D$+w69$t4l zYIBInZhjHF03z5T>K%27;zKYIM@rpPPsc-0tc*?wVJyd_jW`yM)JKiP%SWGYwp4-E6zQ;$m$%;YiP(>d5_r;^SF;0~w^_h_Vtrg>W73lmpP^UNqFf z*1`y0rwnm&)3-TUHZrmrQE|>=zE&%)YXlw)BZ7(B)(9~33(-l`->m5YSYKk6HqfxJ z+Q7x6hm8l(4FmfS8=z_n${a=~5fH%Yx}y`!%G;8x@;M+kGKww24glVs(fs+JvK(Jo z*^%~{-I=jS=w#$oPMW%4!8vbg=uP!2vRjIQbUb#ZMsYLZH91?iC;mz&8w%U61{OhC zC>s5nc6L$OWLqWS2*ug6yWRC5-$XU}NT`L(te-Zx8o!3YXed=qN@ovDFx^iox)2xj zopSrQsdse1nOYBbdoUpjaeav~&qxO!1Vvp-@&)PVwYR5A)F>Vvv{U*hcsEWNKv!ly zN*ZA8!NLckl+I5xFTy=l)xI;Yurb#*;$7AiF6+M+$W7xDGQ_06iVb>>6*~2$>NAUd z9w#Xqh)QZilk@PR>5YIC2h}_%elyS2cJWUB@Q>nN$J$L*IX$6h#?z!lep3_dc$n$= zc!J>B;PKnV%O4NxsW59;o1VFo;IZWr5S->6?S@Ht{yhzskuBp7BV%sZJU+`1T!D5K z&N2%XBHS9EWfjrct+nJ)4`<>VwGBV5Cw=qStZ*Kl^9~YPnmJahvzd~}Zl$)FGD*S* z*{lWzg!N$|@J_?^C4){Cgyv-_A1vbEhae_>vN?V>Q;B;Yg?qDj&*;V%0PS7$?Jgf) zSc$t2fHqo@&2T6?KV0O!dG0P#vY!1<@$`SuYZ%!${)Zqp$A4N9utxi*Y7|{u%g{5J{Rn4hxC<0=qd%{gX7W9qY zXfS1N(>37HSP*qTM#Wo1=_&QyNYylekpg?1H+l>ah9)2hC@QB9KFn$DyNdupR!Hi*>J4LoC=@)qqkc69~Y+!iip&wjR0 zR@&{tyo983SI**-)~PR-Nph*F2s4Zkv^K>xXOAvZ(u74O5!mo=lSRfUkuf74aoJ9U zE>PUg+;;jnqzkX~&qSUo0|vRH)RTc;=mvpr&^HgS*!sj7Jrin<@jImxKskOgSYit@ z3%W3UW3lBialK?Eo9YcC#{uM2aDa>qfyzE~t51$MGuWT-EgAz}61<2B)aKOU(IK zd-H2-*9h)fE~)G?fr45!6wMTtbbj#h0*D84@eK8>MVg(OxO5D$0D09@3Ei=a1DIMm zmmUL4X9feRRk3tU4bx-(-EgUN4@TBebWz@kKQqa5cC-jVJD@NB81cmS(omC7jL&dZ zsGug!vW>b6+Eq=(JoQuLLJ`}jS?s9`ErKpZ3riZ_QP-*pd z#B}2l($&#%xWo%e@83lXH1oZkoyn0W%Bu_ZJY4lNFa}937FQw`;;R4hR7E{t4 zZgiz4j9ZKim@>Vv%rfWz_7Dc{{3lX#XAg@R8W^5Id`?%aAza!Ux~DSJMV0(o)k~ad;6zuo1qF-WEwXlr-BZMzI(5l>_limDF7MLrj;kN=Sj!i;3x$=}bx*;H zsdzo`EnO8;ii-TB7R@_a!v!Kbb;k_W4n#6(#b~}5TLR*bQsBuam)KJNIDh=R`2_Hi zOZ^0sTHb2oHfKjZAP#PLpI*;Pb{RB2*R+a3C)^hoDp&NdrF33leE%LsRsP zvFcB+ICXxj8*av^oR_|Y&ou8>uQI;@<8Jy*-5}uNRAb#fnp*xKV{yMbw6O)eeeyY? znpO{cvTo91YoUrWanhc;E1`w$*`Bk?mC-3)v3+w-m%=K3@gI)Ce;sZADl0Is|F^ym z3;lnnzq8Q)@9OVABg`7ji2sZ*Yrr!dFEC@MZ1 zvz~sRHbZAXlguJJa);WWsp`=E;IY044Jrc)ybrJUoF4835ZHoak=TgxTnYBfKyuj!+J#_mn%*d^ODTCaOeSMMyfz3zO9Y3eNG3n)C6>!`bkLhL+_y zv^}3E+u6L4lhLhO3_)R9|pWXGZUk}%N$9c$+3y?|PeGH7O zrJ$IuMknIQG%QuIcD22Xms=a}pO_cMm(dQv#R=k+OE4g&i0UXX%m!3OD&itnr&Nw_-F~38_EkM12 zl$v9eU3=kBsjZ(VEM5$kJ`wEpXfIECt_EHdnV|2Rl`9}1SLP%ss#UI*VaP;4JJ!?^ z?&?a?umm*QXf3q0P25wIn2D+Laixnw=MAgBs#dDqF|axbD;4}P3hjDp*pAd~EI|rT zXASNn#z~?{>nEs=SW_9+#MRKaY>FQ=`z%Gj*!wK6Wo;A-x|lR59EJY{t|l?!#G+g( zEmnM1g`L+~9##H%b!7zV7r2_|$}dz{HqL1;iUAHLcQs+wME!^4eLq$Sg&KCbK{>Xu zSs1-u2d=4lsX3c<(z5<{T*X))Pj1?=X=)j;%<(jULT||Mrd~6kkU9in`TL?*N%43mh5QVR^BmT zNGW^JqjduqPOo{;3pN2jef1+gGtaErjCIdDKGFw$kNKo; z;ciVq`6~O0dN2yr+^&-+yAIi{DX+2*c}v+|9JritTnE*WF8rA~nLAHi0zr?0n{1cU z5-NypB_k>ZOLeY~8f&;_6uzW8z^6;JkBqOL_cBvvFZDE+F)oLet;uxrc*j6N@X12Q z&Nr6@2k%rp7}BWDc7(27%Yq`C`OjV>uQ6l@w3Ro4YWU_Q&4HU*jW5WB{lg4Tz@E-H zk1JG)A&bL}Bma+>`YF}Pm4#2ojSrEkX?fZb$jh3nRqo+Rh>c{s{F10vo+`-sR6(AOw+(Ao)ynGV^Ghj25U;=1?}_)yYb$14#1>?lH8}W8*Lo0F2)fRh z!<6i3Pb4DPEkqWucv_XwbaznVRUAoxn#c~>u7&%B!H?bP89+PReju+g#rJ>es5$D^ ztLVl0r^fUC91eQ{M~7b3eh2g5TR}TaLcxieqXDjld2F^0*c#!r1>8AZBWV!aR6De_|Bq9?utnqrEpcvadKf4|@@C1i|wo>DDI*^$R>E zOZ^ES(ZUOt=&baFBBN9w2{@?C4Z?gE3}p02=oHQKoAXE5En|nCQ6;EdS<=N)1W zhhfXx)@B?Sxew9@rCG_NyWCv2tSqEqud-k_BdwRsD~<}-c7=^_}GGkt>fnc4&) z-LVSet*-fc7HMf(Un0{Oxf#7bUtj%jAE2eP?L9;9AAb-Peb$#f!-$71$9CDb@$SXN zPWKG5*|`O?jJg5V(O(IZQ%}?J7;#7i+9=H(E)waBps^-a$S5H)v2@T_6120yC6h?Z zuAJ=nSb{m@4Mv30hcFK*$I<2RXXT9n8T|WeCynO4E1ScACriXB)W$|#@=PTOmLc~+ zZhBi+*D;Sr!c#H_!t3toIkvQO8oV5IMwkoH0`UTgaJ$e-L-@}vr zjgaD31*%NWYuH3vjjd8#pbD*)&}${%B;N76EOf&88|D+Dj@S~d=;LUk2Q=9sLxE>{ z;er(FPS~LX6RB$n?N-K^1M*(@q|OiX3ku}>u0Rux(-?j!X@bZGrz|M?3Ar2)+=yNpRL4bwQq22$>WhR*A+tp_MF$Ksc5(FTQ=~$pDE$ z2d)5>BDdmBZJq{Q-L{2fkm$#SO&Og{!LQw7_PO6tSrDE%P{T}BTUtymO9@gfmx$+< zUH1eeVKVLgX;nyjUW*n?Z{+&$$@yGoRsqyl=tyF$lzk13iB)MvGnyD~0y$~7gx)PB zYknEV(u~9re(gIodIS?FoON-P4AydMRZ!i6Z1Gf{TQ2JnqjL+PALptgU~HBJtve+7 z$?8FWlb|urC2z@r@N&I(_nxe@l!q6dg4ws-wKcDun_Z#sd6bMtaROl;eCkcK4qgtR z4Hq%6y;pFSH-B>^g9PmS$=TaK5*8LgJBX<1FZ=v_n_1ZBjU??nwDj#wHPJ7TadCfI zAD^mkd@;hNDDPRgp)>^Ksh9*<80VN~$*m@$AwEifoJ=avpsoREOxXggT4IYYww<*| zK7U2qQ3Hwv_*I5@JwRu?8Q%N2GR#R5(EpgrK`6U6&trKM4zv6`uVT<~7ja|6`lee@ z;J^=lK4^&{Vm)Z&@VPh=@{VYH^K7glwTo_UIy46po&TKry@8Ta!MX_(?Ow#BFpnr+ zXkj?AFFj|kFn={}*lURkpMop%NcPCY%)@cIyTF_-^tzBLDx@^P#Rf`>Lo->^#2r<} zGLTwIsI^KP-5x(BCDmRnZS#M)C1_XW=0~g7q3|5ul1675_}`{6YDMydU9O^E|B0lM z*;?BRGYt^P66fS~^=4{n(ZKR|znI+2YR4%k7UrgP2UJ0A&?$`K)_fe}LeX1yRJt~+ z*Z81D2w{7Fy~OuI5ei+G zQLKskjP|XrWzw(miWvXRsnXx42mvye`xtk<@K;zNXPLV zY=Jx^X!58ItX88$k@j2XE3q?0@ws5EX!Ptw^y;$rZ^wWOxH(EA3|&=Ar13$A>NkdY zm5BM{+l(_3rqlULAJsA<;~ul8H_PHmCGrq03MdYVtH-d) z&|0%$ggWYaM!Nmdl;lAtZiwN!zr!6Hja;Y)CT77M_b_UaShdb2!ak*}l=EyfnZq#m z#&qy-iQDHv!{P&ME_(@OpF{1|KIcy3;lmknPQ>;U#UzDs*V4sqoQrz zQ@OF}PzugmUlo3Y)zMbTMrmX&h~M0ThT9#w{j{8v-<6 zzi)`lch{61ROIoVZV!GQlt(9RJ|a(Dkv~tcg^}t z!f9n&&4gQotZ*vE(N%eMEp8uRj$=4GZ%ej!9^Ct_?1CWCr1@k4Xhn#+67ka5K!k$= zqsCL`{DwiJZml7eO37JE#>%}I0Ez4Ms!&YqW});C76|)IA;Z3-7oEk9_aotiCt3l^LTkJAEC0$A|aZq z@)Q6l(QW)hnAmn%t>#ddixhS<2udey$&I}_vy6zWtIbrHV7;Idt_J<0>^AceidgzvXORK&ALNdJg#J1p=`mw|19 zEB_R+n$Hu+uBuQ&52>HAzN|#ot&u>O-rCcNc9? z{;;r^pqtfm*bsmZgHmDjh<-B&cfaZ-If*7U;OQIA{Y^-nArFSHtkO5Vu!Iu_e3&@% zSwK)I5oCpsKz7(gxnSBxn0O(h5nyfh@*CHphOV5QRW>1_-bgwtwU$=<^8PV46R%C@cxi)Hf;*eopQ0?<*X&yH)&HKnjQO>J}I>T*O2VLgM&t;$bm= zDoX>{a7ZQ717_xua*Kc^7@_J{$8z8HHQJe94HrdOBh{qB%*J< zciw8fPe?mnOyNyr6ByOi)&tc$P1B-in$v^9J=$HN8l}>$IX;JVcZG9w7`OpGN7jJEY{5%c75CJ`wIU*-qbsa%ImjgQ z*7cqT*H#DW`JEFQByvarnJPoQOt}0I<6*A+?k*gpfNKea?!$g~`VHWu* z&}s73CS&$+8jK)E4I9Uz`rJyp`rEDUG38=8{VKZs zvngs3ErM6F%!Q(Ku%k?eJj0XH>*Z*Y%W2tRvPttHyU4I( zK!4t5BA%8Yu8=`}cTbNP?XaK#tx_vj{YUQlup6lAusw22erf6g$OuqS1&alPDb%sLepgCRrd zJgLW$*()XWcBBw)bv?s&eyOMfqjJ*c+`zo6+N@@Ml{J+jUyJc>_4V|~h7b^#!g@@J z%{AL(##N@RDIP^~$;N)x$d6zGkXJ72ta}>*Bjks?VFP1{o+w$E7pOV^`n+6|bj7QR zYE;6j)C=CjT1FblV6FMRKr_PFc6YPazM>BZ`qs5()%MiQAa(+(%a&+l;=nd}6?-(G z*Qxe_eW0F!A1u!m>MUb!)82x0L&@&bcZYb8tozsPsz1{YPeeGyrA(8S^#%(tG&RS) zPB6vBK66fLMnAUIK*d_i`}>H7f8o06ojoZ8R!5p0E>thw>J!Bcme!O!9)T-j{B(kZ z=%a>RM_q3OO95j}e9@hYq!Y@rTuUduV9S3r>>aw1$c+0T9Iz0EDQ8Q5yuyTy;Z`0v zkMDh;;KIJz9`raNM-rL}8S+mZznpE_20GqJ$AC)O-lkQ%TD853H`;?CgqvZs#)94m zVTe4J*NwT4AcFXr(l|moeHA%3KEXf){mBsV)zgWz6l7}t;h7j#T+g0MxZyI02zbQ@X?-c!?7)Fb z*wWB);LdVAKH$zVo6;~tX%+kEN47npja4~5(arJ{+Q7j1Q~nhU^xFn8EZQkZ5JF+x zS9w=y3LLAd)lpuG=sQVES(Jz+q?rcDw8hsqhlmUX57?Y&{?Z$_-U{$r%>%mAL#g!r7JpU2gkbX+JwsI0zY_ zqF`{kAU}oBG~P%7sm5r(#-uYa1+c~JA@vW_$)A?D?lijvntK_*U!VC*7K;kiKej|% zJM71N>Ux2A$*M_Cm(_P^BF%7biGN@cowvsGrHQB7TPLjS?!TRwKFAT0b@UrvvARa@ zyB@>a)>#g+lxvH&opcNFfry~apW)%LD6MI0TN4TM^sxyMv8|8ey`^jL&4*~3+TLF( zep(Sy-$Z$<`+|LzPhW!y%g9!lK!tXKxyFN)5g&B1Rb(|~V+l9hjGcmQS>)QIl91Cx z^AZK;p~_8TLBYqs&szAPq<;v@PAuJ~B#p&F#oX9r`|Nd)uwy+!vp6!bDIT~Bc1Y}u zn867nxfa{`WIPk*c!EdOOaII;Yf)sU3O z4J!*iMOrL0l#5BW?|#G~C?S;^kK)0j$3eVJ*z^lNpOQrWKgIq3MR;N4VEu1(Sr&%> zAR@@Z@V^ofY*bORUl&ID>6)Z8gDR3TKG#~`5u~cE&V@}VmmMfVkrF^+A<06_XnoFf z95q`!Pw)ZIQEc5M!AIUmd3#FA$UI*M7)8i_AbU@#3JW)kl@w+C8fFqODxa0Id%NO9<;<5n zJ-EBr+x%%DJ1}{wn(8nl7|#*U-&Ktz8^|%=JHE~&IWD^F=@gM6QpRs!=;)>*_>!a^W+w~H1YxCa zi!$|=h8&5m^=Ac#PLx2fK0hu8H9Uh-lsBnvAKm*gZzTjRG~=c$pZj@;e?5L(g1VM0 zTi#PlI&Cu1Di~06Og5ZmFo9>h*Hd{H?wAY?<4N~|^*bK9FqY!7(wrHQ0t-|zOo5|lFHj`McnK40|L!Q>n;hij13hsO z8+@oW4M$C-JAbu~@hQI69)8TzIy8Kw0L2V39CBrRDwFLWG;snNembH%dqIR#HSjw< zU`Ev`j;G~-HVYdEP(Z{jY7BNup+CDc){&C|Dzcs8d=SfJf_R=vTU zEoVD}cX79mxap#EGx%$8ZY|x)K6FvdOPr^%gpcbl49VAH_|wT#)HVLi=V&N-_z2yp z)#H9fPw${6o3~FUu+m^(-HXDD&(kv+E#k+|eV_>qbg@-qsnn0N^PS%C28DvIPh3qn zn%JpJHM=_slK7eV##hcmO8upq1Gu-srj%`!$GR?eVnYEh+GN8=ydMhqDH6(|jHS+g zHf_{r%_`-zCLUPeA?nxjEh-OZ^~dGV7EEP7Zbg|!ooSfRNnTAm^z~zbpI)lKaDT3= zk1`2h93~*Da2+@E(GSb~A&7>B*+ zCB9it0;Q#E6#USD;Uq{>czuOSh>s9C=}?OhuM`k?vj&i1@oK(1HJ7PSP*U?ZUjfJ* z3VFV;D@3qrvul?`@KPJX;Y3foI)H6>fV$wY>A~hhNYrBF=;Pk5R1x!1$rqk7^hK5m9J6#To6A7*FF7 zs&=77YU`RvN#L8B+cgi#zMR!i-z`l4?Ry?$ zj7JgYL*%agN%xg+<5$>OK!&o~%EDaV6-B{Dqm4Yugl* zVW<@aMx2IuRpqLXiREwX`c*w}EHU?A21qtg8_b5evS%iXGQYw8AI82Z%9fs8w{5Ss zZQJ&0+qP}nwr$&XueR-8ZJVdRZ=W;HzW6WxyNpWmR^}Y3B=y#VXcpz|fEOu@ItbnB z!BoO1#?^cV-~(8vHg?ATPi#1ru`Y|c!sFvwrg!-;37fq+n3)aqeHT9u`F-ZT2R1pw z#K|JoCz3PFPkW^DPB=l!ha{Z8JuoJfJT`5h`SW=Zu8nhiVo?erd6W+a_(foa(OT?k@On1aYF*|P%VQ0C`32)%IrdI(>JZe-?0vAb`l zn=$>_d6;sPY)$t7i;&}h*-4s$?{Z{A;7(qe3%rYv^?*1V%T4ei1Z^a;|3nARlNoz* z^5H>P59K7_$y?aSc*>U%hdo(rDe*4*g#^r5Uu}+e7WCp5V{7?O6VANCf0~dJYs>y! z>7E5F`^CtUtqULYPcQhBhktt|0CTqg+iS>A#_Fe6Nj~;~-MtcKyGp$pcA&wMkqTe3 zC|u)Go&~O-!BW(}KN6qZPw)ip_FU%#9l6pZbk_sl2_!<9$>V&*8$U*X;gJ6pS+(~{ z$OqsoD6UkemA>lmnY!-vcetU3S`YMA)SWnIbS9W?u2{?X+5+6VdxC@YK0~~|KaHK?{VgzlqVx2J^lYrc{2V7y>}MI|4Q$@Tm8p4i|rr6=AR8X#Y)Jl z)Tu;m3GC8~t)Y3Hiv4P2nrM;{;^MeP&et`sNmfjLHgQ-Ss&N}F3Vk~}Oz>#Yg8@7) zhB29cAR|W}Pp4En+SeuxojJvrWXUH1@%mv~E?M2#98_F*RcBIh`H7%&Mq`>QNq9X99hk4G;cJ@pzo>n{ExuXOi6jHru zR17D2THm?t%z?^!j$WRf+SeV!#}zHTnpSA%_Ix(^E?h31nH%kqf%WT;*KAu33!e_& z@Q;Wb<-M2UkR+ zobW&;WEH%wwepROLQ(Xv*RESo(t+JqKH!2oJ5lD?ou3Acy0lN`e?0A0j%cEeoWEmh zd42n%R_@`WM4;H%bw>$7VMLGmxlPYoGh?&sk7}^~&cn%oEPOYq?NpC&Cgdec5RL27 zN`qSVXjyfz88Q{zRz#$%x6|sCmUOx?oU0B`PTFJhWqwl(`&NMU>Mhl6=z8~dbnEE& z&=oTc8Z=8*C$Zz}+U7eAjdbYO`!tpj+w`bisT`o5*O`Ce`mEB`#Co6$e1HA5vA-wv z--+dOp2T@xaCU9o;Q1rpu-NaLTIsr_tFTM5_FVSf7-8-DK80LXQC-8ub>7qCc2~7Q zQ_B{)Bp{~U+UvEF&D;}8;)vO$;RDeny?goDBk=3RBgPv42`f4B@@UF|Pv>eOV&h76 z>v98p+Fw0|pwA;n9W{H&pe~;lMqHIPczUiQNG^&6Nf97o9ha)=I+h8r);}%P@6QmE zG1Fu1tewwskz!!dCmY3)+gPi2Gr(`)sXg${Rv+F$*RyVrWMe8JvtrzwMg+RJo;IoBmZ*SIbh^`as@2fJ^ zVm;{Sde$0(Qv3<4i{j5bI%KKNH=(S2zHJQK*4Fd=n9L27Kl#ZMpSoRu{`xYZ4|soJ z?&TR^1^jjVqtZ7WSZYxD0-0ch8Q2eKj4(|FVR)>F7i?|=V|qtvepD(J{ppl`(PeH0 z@)GC^U^;E3vki;EJJx^c(dO{NE+rm>V{5VRVuRLjOAV%8qncBrI@maD+&iyJ>`^+5p+LWO8u?T=5EIu`3goa1r;&k6Wq%R{AGd_8;;ORmnhALBli}wN z5GNo`#+rvb@iK`O#>Vl^ zzGzKz@;uA|h*d^!l;C(Yp6)MLLfvwOuFj6_-*tGwA)kx=KyCOK7}k(uFd*(dW!)Xx zBENTLJ2dl^mY?b5q7PmfNNI~EjVmjoy0yXt+^GXjoy(|%K$tq`D|j|dg~Q;Akvy4p zqcII=ATo=h&+A}yGgM!9pvXs$7XM~%N051pO<3f#b%QuJfRIoS`_3>T&$qtuD@!OS zsRqkuTL+n9c8>K&&!(}^M>uIAi|C)ryfv1!0x!gaEoy?RbM{FtWF3M&{GEpfP zeUzHMK>h;g7oUgZCN|@PPFM_omL+jp@=a&{jD*;(ivbUDsvejvX2f=aUE=eET*eL# zQK7@;B@99u$|#74;~BUU`4JfH!+aW1P;v#9PcyJ<&w$st$fqt#@h04;0^bEbpq&5;#Lc{21x4}6av_`QatN$5#Dr?&pr5bRYSqQftN02GNE$KmM%GZ~97TD}C0$&i z5iG)E8WUp4iFb%ZFUkm3B4KD&)9-|F$?L~sx4dZ7ZU(+P>143t(nQM z0Y_n0jX@C;ZvczfkTOk{oH$MPf2-ZHWe8|Ok(-vW4-<+0Cp;6T`hs-9q_}dPucOTJ zscIj4A7Or$SEd8QvHBlhbHj>P_{r^1ll&4o&a1wwAps3WL%3D)jjVKzG$tx=#}Yrq zngj-xIk;ao9ig6y^Y-Oz^%PXx%ej0RinPQ~oq>TMDz%e637Jh1`2EIIWhHOOIZrm5C_0JHQi%^`5>!r_-%TQL2i(uc~Dwpfnq5JFzNznZW!Tr7S) zFlu{1(JOBGPUZ-jszt*6t!0M4HJrpVK_8R&ngmb>%1{|C}}%Zeh+ zg#xlRlZM0=)j3d&O_P|&S+h#hX#3+Vq}8UyOZ1Et&#E&WOLE^UNWaML1R@chET-u; zJ}Q17p9q7{sZWDVOiC0=tOW}O4}GDSI@s&zhMI;q-|V+>#eT`PV(of~C9o z%rQ{F$jZ*%T{Zp<0Wh6W6?$*Q{u6mWQKqN{oO?+#7+T3cvnB`yVtqf^nka%sDX2=F zH)~Hhnj;0?6eHhIK;xY^tgE)>w|b_>tz8LWyB6a1c~`Jz9;&F? zc1~E~T)5NPv@7jQ8e)QVA9^a$K^N*KV@09UjAaV3OiCL{c)TeKF9;RNj|3*Yp^X+z zznnv&Seb8&aZSroB>tTfm(&!J99hWeeX;ejGkC-ELyML%d9iQ^hcS8NZv&N&55cMS zi&94|Xu1Iz!T)*sAnY^V(|?|>#|4c-F~*-~*MoR6Q$;T}!C15cXzPu$dsPL_rYx$c zHX^7cw@j@cWZpqsz%ts2QK2ecW*wa>l$uF_y@<4T%>7QlC*II9-YZ)Zu>eG533=W@ zO~CMf8cu(7n2fDhrN<8tu)LzoD0CgEa<`zO_pAJYtkU~gII8mMML97jmc>ndEc#p{ z3}~2dQ{pS|n;PSM)XTBGD)cO42#H$_VoKdI1vTKP%zkeDGt&8V-LE2j%bsX9;R>Lg zA*?S#We&G&L(7!7%?OSZWT~G;0cEuW&pal+Alm7e3JzO*Or!aaxUycRdY|qcCAcm+ zWPfdd9@Vj(&p%;*)|dYqw$@#sp_#SUxQNp19_tH8gQI22_O+7G8kI?=J^-@lC@x?b z^VFzFjVSvycuw9$e=-Ugu6&#>J;&RREe|XRP_ucJZXbUsz|AMwK{U>4o(|<(_h*sUO*0pn(O#|@>{tc{BNoaViZOkbjnH-Zm5d0A4$2qh|2A9!zw0~31a<7#nb71$1@CVkCgI|Hr0hPVabrblx*i8bGy%dOEO>-T;eUv>r;qFPSbaJ)LR5XvEQZ25r}e2GKba>(JeV=xfIN=bu0Jovo zR|*bcKiKJgrxA=yV^73@sd_4KE(Eo;a>Y@RsBu?z5ip7`D!a17 zk3`Ns@UB$dV^7Vv7Tu^OlMNob@2(|`oC<<7O*$wGi{ zBf(n$H)57A3@CA|OCi;oVD0Wz*0CxHfD7p5o=bxOA4<9L4tNLxYLtVythBX8CAeVt@4r&2sTW)|EMlxg1kHh_@=3fUCo+(G^Z zz9r)+nz~IJkmGVEw8W3v8irbJ>0Sa}_)(LSHuG2!f4pdK!%*nz#N+F@)sYtnaWCtp z*;=SK;cu$31)c`PgmRRqe@;HBw20lUNu7;` zLN5Ra`1Kh26Jz>2l*F&g>_-)_H96(h&l?H^RCjS?oU4Oq>-m!dX>N_lP9PPMjDcFl zu^!AfRy&e$fBJhGK665Jh49__SWpoHVw`Th-M2xcr1?SU>GF>Ax!~YGOg@1rqgcsn z@GFPbIm5y9n>wHwAok9lr@><{PQjp(6(hBW^m1nuo;`hd3B^PQ`T&6kj)Jjc3Y9A|3Dj9a<_%^#!v(0%eW~!KWS#* z^8Q?mwUCsgeog595o7bu!{YF^L)qok;X*#@eh2$ioUe=`@ZwhM^QJM?o|{tuEbeey_(SB%f(smj(ZAlV z88e1DEyQSlh(E|3B1X!8gj&;jEnrV$;Ln=siWO#c|MKfMFn4q+G^44eB-BRqg^8l8 z512_1y%J~+#OH_e?yV>_dj399Z0iL;W7yM)6`Id4ZFG9H=j!(XQ$^OA^{cDlmxk-i zjtjG-pmDmCM%~*_aQ)-J!~d}N{kxz2v-dHuvUB|Z94FI%f^{6##trvuy8|7=g*r(QE2 z+zWEh`Fc6u-sSE;zGhBBcV$y4q7wy9e|bNyq&q7+y;yK0*6wt_Qgpt-zrwo0T+*Aq zZX&lcC`(LkPsU9(FVnK=_1<#In3AP-xh?Se`0bgX7sgC0sF%+j8kqYv%IN?@p-FSE`v%Ncg5! zm>%<(oS9ZO%1lj8PW|kdzUe80YD=ZabKct2pnP{CV+1NQ~ zb*R&t==scMR!-)k+L%)&L)&`#VW;Wp))t~~oFau7lAmO-`>kBIkXo*rW#uJ&&R*yV z5rJ%Da#THS?YRs)m}Xb0i{`(){xCmoCfB;Cle?^2rh2pwyB6Kp*KIbY^o5{qra}+P zTUhA=Vrvr01u@FMmI=8zk=>Q$Hd790b!^UdM5#z?E6&V@@kg%AiUl=jGPN7E_j?k) zHTF7WrWLOL-aa^8ZG@;`C?!KWn4wl$w_e#?ziRh&*Zq1Jv}o5f9z)j!BfEZgk*`$` zYDju7xrTceSy&iPF0D+u&hX&4)TG0|%*=5nH&t;CId8!IZU0$k6$fzd(Bme zh9tnyxV7|eTq=ZgD^6e?LA*Zs@e?xK#GQv3 zhn64k;`gjg2K*XE?~V9Gr}w0$UCB-TyokGOsNg<^>PgZ<4b-jNj~clX&(@ET8(K2g zTTbIFzgx4U#X46F-KE{&#Q0YoQB_#JFh#k7&JH{~SShfiizLqCPKD0SA9J!GyK%~8 z*=PHdyV^eWH$&p9j7N>d?y_6cwjGx46B|NeZBv3;pyX@)9e9JL1V@2nLxJx6`7ObB zUTAg!{#~;|#-R+1{W-~8s>MM>+aDY%VQOpGkc$~&bdIV##?ptHii*zHd8jQ1uJZ0e zZRfC9i;fa!KYTUmSpIC**vXSY0vNcVfDc+FD1g*402g_l+h;7#QgHG7I5P>(NB)F+ z7(wZgA+`-y68Xj!#-{?um7SW1mIEj0gm$OSJ>Ai7j*D}en>Z~N6~H3qd|fu0)hIXc z@@AqTLA5-|*Qkd{jJ&Uu*_yxJR8z&j9)aK%i=PF?r}TN6I-M0*bS52qw&2VGk@jn} zV+Q2pH`|qngLQ|>h<*rNTAqK@3n`#KA;wQtT?c1EA}q8_0GG?1(RWQbSg??pWigW`_m&G}3KWQt#_MWe=)-SD$#FJDOIt|eW6-_!0h+_S@5R7y<;+1UO$7jO zb9=qx%`+|U?z}X5HSuh|n>1IRW07`2hMsr=#mfz|eQlP1PjJXZNd_yeC5K<$7TsrC zaG*4clBC{|SoAj=Z-~L~LjzeHW`E(ghE6#*n*Lhsq&R5`xCu%qG9|B++T1O{N=1q* zer^L9?gXPT6e^H`qGevnrl1B`Dcbi-Xg&&DkPVY0Lvlh8_<|M{tJG!}5d#$3R|HcL z=3O}#0*-MZy;7O#LG&=70eBqSlw2%FVr>=CuNdo5>fbyUw>CTda0-5bwz8lyKt2iW zTe}Od7tsjD)tBGK7bbY_sX#KGd>pFr0gD4FWv;MVy9A9>$rC*xA2L`MA<{VOzBJuD z{vK^*$Kpq_-qk8n874MWex|+~$pwpQDdE)wRHt&^jMELSNE)^c&gd8ff9*6FHl4fV+8Gnu(RCB)rsOuu^F7{VIYo)f8+y;kIN&Ap50Q&ppSQ+8b$T?B({ zH^;*&44Dulehn2T5;2G^n@>uI3KCI@zdb)R2U>>#J%hcWv`&?sRxY$XM3NE-?jr-0%C+d&#Iug0;aL}o^|NM7IHPwxU9k&54GcAZxX$25jBo)I7vmSBMZ(I(~ zlVP*IGyb;;irtPx(2^=VMni$@Xd=s0Gs(i`S?wlqT2v5qWVWsn=QF>MBx6*GJp~4 zrp(T7V8YjwIk9#LfAWCEDRZb2^{yZA2`KyA*xh^n1MB9LtT z2czF1G!mdW^&W!M2GpRD6@d8G#EG&L?GY>D#(#NnH$eRIiW;V}hFd5Haztepl{DiK{?o^>WW5p$}6zK+XYKKxcRZ z8m`{0$F&ZGPBS%)W5Wnfyic1scfsid+cK$ZX>#zCb=GcAZe}0!i4V1 z$o2YN2lfbbR)u@)ogUC*=?Z(qbAv14-V>!1kaM~L;EwKhbk}kTPAJN}RJxkCj}TzY zvskq^OWQG6#|2|A6^PyF@8vjXNU3i)vsbZCEd-G+$x7y&T%d z5-0;(c_ii`f}|mIFJnOOfK0B!w6NHX$I8=`&~vOyylH0)V^!ok4j;sgnABSkaHGp1 z<+#E%3>zFrqf09{AJ?9An}AEz)S2BKjHnF!2A}i!?+l@HGmC}>tX&@cshO1c(t#&Vp-(u$mhFbGWd>D zitJo;acB0NR;>?5%*TIX!DGGtN)i1Uk};%@`c2q>yx`w$SPMx%qRI3o<>m<{s+9wI z$?Z2VOrb043(%WG`Ic&SbhLDF&GbhWt}%_tU~uN90on4+?Rsb{YJhf|xAV-QM9`d| zoQA?w5;q{To~!Yd~!=a=@h-^1{Un-?#~Hd8@a(YSDb zsq{?Yd}4uoIXM|5j~Gcc!ua1qi3O!&^6;5aDmNK!%D3_K7w*^BATy-~i-g(x@cGmN zd5L!k!5<+t-G~Gv%v*V+T(V*^VF`&~iT^1TD%cZJ;8J>1bO>L4qoMo!W&BUC82=AJ z%0$oh{~beEnEw-kl=;6xkXEZ`{>Tp@`>fRB*M&+7{E66Crs2eYc5_^wehLAcLLg_f zwv0DYO~`x-y>jj~4qcpzxkN=@&KrZ|%el{<6jR8Ji-o+KlD+4e&RQ`HM=chb9blje z0O3`LBF8QeN2ijbCkx>-(yM9lsajE9c_rdD8n?Bz65 zGlGkwn& z6Ay#{b%M-fLrm2GOuh(Dk913-VXP2&$_WE)yhBpO-5hwu9O+k(!=C^-LF51m>q04> zBcXNuUD4Qb(WpX)_B)`EL4J+4WcD~s}(G5UWKU!i#}gn zx26&`>7XdPU+S;gY@aEfeT0$FI*Kz*|f5 z2+jP?7Sc9GIZ{SamgxC0J-mN$q3Kzz5P4|Us%m(oTyY0o8ZuWBHldWp77XUMD8)o_ zS!y$12oV8X)+7QeY>Gb+JbNUJX&8kNGk;t5Y;NY0oKQk@nX;+=9#K~qxjfE`L3Uje z`E551V9t)pxgvrjgf`3QPv9kBTLpmH!Ed`w@J*v3+NfUNn;~+va7Bs8_vi0Do)vF$ zOsXfZY^*L-+E~p(w<%6k6h5ROsY0nE?&Y% z{#(Z~P8X0{b2%rrRcHUMG*BM@V)J+vc9t)|0h<0Q6#o+t`qSAN*f$RfT_TcstR1x% zyP0l*6|8|xQk7X>RKj^L2+EaX?Hc>UT;aAtQ_h}uJp>`?4v)(Tnmkl+i7xMce!y*$DvZ{}08D;6r9Izb zU3NK!v3D$9N5Y0BPZf*s*=L~N3QY8GT;p{tInmu_!Yk*3g><$!e?oTRxZt82DEec} z=70};D9FuoXB-hw+pzz zT=Y0wkx&llFx`M?3K?x=+x)>&IAIj;})L-~5DID~Ti) ze5>ez?LbRgb`F4?kB}^*^`1xm$qxERd|x-Z(%HIuK=&L-0^;&28}p$$CDR{6dnar8 zYLHH@PAfwM3Jm;uZR*y)b?4T<(V6XcGj?eVF1JsAisW9?En&@`rG~RZ`t<9l^)A;= zFd6Jw;dRx^>zX_qKp12gX$U@B1tT_Da6-|Ea{8faoi-r;Pk4ixvf~~@t6M*~ziOf# zsPVx|Zg~FcUmH-Pt1&-#KTc51y#VbJZ!?9;NQya%XvO7+FZ9K*IErnG=)r>qk^x{j zq5-gfZwG`J!T&#Fh_epbA+@>eDKV5=;DMNH9$WW*hWiPM$YXGU=E3RLn!|gFXn1{g z3b4s82#RBH$vXo)3v!k13s|pEqxT=Shkuv+e=|_btp7`viRC|`>{$LQlwGu%^*!-<-nwgxR*+j4$56>OM9%s7-&QhdaC;6 z?|2JPSjS;Z84Hqf3K|Z9mdsA)M)Qu#Fx%zb%y z>-pD;?gRLW3gSo?(#n$)m*FVf=Z7ssyv002R;s3igAN&|oFm>)lJJJ~1(osBCZ+_Q zI>hL)9(}P}JAY@;i?Tx-s{z;4I^rvP9pe?ia&AV4LIo< zOYAp_MzWihWh-4*xrxKx*og@<>ZZMuN)?@czk1%-lG~{|^?MBC2$(dbShHEL$pPuF zJ!ol<+;qR$n!UDBm8wCYO+#(eA$T^}J}+2bv5sEEX}5cJ23#>8eaJnG-O1A7*C~&q z*V$&(W@@^p)-c$NPw$A!Y_VkPlvaXZ!G$3KRfzsF$P%Ym5~szoX0$DO`v}S5sTiGn zSH_Y8AJ=Fv_ss@bkBgpjbW?2KfG+P!jy#5QkEAqi5bAoTfSCo(OzC~|4vJ0Q=PI+CTQ^$f^ zvg9Z?YT~6}%wpUc!i(IrlaVibEp*Ab=n?H_b#8r+Nd{A3wwsv0B?@M$ggkMGgk3p{ z9Tj-IiJe7P&H=*tCVWD*2TI#1OCEoBXD5$JH&Lp$UtAZ0g%Y#RuH`Paq*c2D@70GQ z6Vu6M0Y_w6GHYRj+ak>=VK)~m01ZsD@;j~EVGTag8&(F6&=O~2rd@8UjqzUm^WCJ| zL^3Bemi$q8wmp6$w9_Q&Z{B$V9#vGutf+Ii6*V49n0^sQr|J<(h%~& z!r~4x4lwa$l)^VJM%)UN-jN5N#V|%Hk`zhnw#~q}Nnxs-Pt+sLJHP`eYKO4xgL8a6 z*6E_*rg<@i_MjtJCq~UmlSDJIHyB`yX1$LDXJMBR@cULbmxQEA43k6;p*hG#yJF_! z-XcLQQWIi83M|kbTWmVr0I~zO-?v=81tv=la->|9Dxw^jkqrGYgJHgag-70;?RxCev%~y2{ckFg+N;yMx%HKwPlRpi7Ta;QTf6s>-4|DI;8I&Xj z$fcq;*(c_sckoY91|Zu6?t*gjzYjwe=(Y@$j2qTcW`;h!ED1*jzeO;EFjPK9-|y!TYp}sh!ywSJ=8+zU=!MF| z*G*xJG^Kx>F8}qGzz@=V3_N(aAbBtn#@}~<=ppkkd`>=`Hmdshx$wHwX_@Y8UGr;* zOO;(==)o9ups#G^a<+D~TT=}T&=-KEsXQ()%>ZJq>AlyuJ&;h57 z3@|L)27xR%#&$^)Tv^RkqH3n`TLZ*T%gn9{J@W2M|5+stHiL3s+}LdRz`M2)?3jC= z0{}{8Ex*;%eIi~6E}Iz2wE`)d&3};I?)LKI-O_w^*dR2%^CL9uO zDpYGC3gyRML{9V|q$F(d2B^8uu|SOCRvhvU@SY?PVlZwj^;Gmwa|h^xzCKV$IUW3Z zAnFQHk;So{g9ijRJd2xa@@jG{6DP0y?8X@3YmsNDsB=fJy3eVHUpb|Wa*8v9=3fuo z8F1gTh>*ffiTMnUVlFGW*L57uN`hRu^WKWF+#u8YSd$+o;PY2y{5~Q%Fpj zh+ceF32I>Hw&Nl%E7yrA*{$%kfMtR1SB`f<8lYR$)@@F*ghD6|wa_{HhVwlFZ$~&- z@&=tS`jNL8HHX4ek9t`CmD!jEzOw~P=~Tn^5B=LosxVGzm`c@J%sAMkNQ=aGcnNp1 z2R2N3wnrCfwx1k!e7~%nnGirt75(hR07(z9udg~T)h>VJlMMqq|7eTT~K*K7HXUGLqd!E@Y zeII!}T%0BcQRmY$M_p@PH7XpGIvN(yD+?tyqYN-6s^BoLh>qg0s;Q}|ZvS1DU3TI^ zXj`8HfHNX+TlwgW6Dk&xXLzlj{Q^%wj8Om#OvdaT=Ms?nVf)vgXcvSS;5ysqh87G=>G+`w zl!#doa=v0hPDQV4A5k)4oxQudpJz)fktn{)=&&<)d4zN?#MMx;=G2vRnYen81i%B` zh*E14z+04lv`!Z^Yc)ENVI{(waUiHfIZw!kZAgYi0x|->G6evvo=z^9hlP}GD%5aj zmt0jFd#CA(vuFFZf3iAYmYHe`v3)X|Gk!17w|m2isZ7c$sL0xg!8x!713#Q$TGNqA zuY#bzz&}Lc$@Itebn?B|z6YdJhY%jxTx9qevEy!jD5(tLLn~{qoU|VCj5IC#yje%R zd8iz(a9(>2=e*f_UJ$x?GEwKED37YYjtWNe$vcVz_x`8QMd9U5;7~kx3_N7gQZ1Zv zC$C|r9Oecp*&0+Zu<}55M|CKpQwu-v# zhA6@hA6P99o&-4VXj=>1JI;_yz7jh*sf1q(ow+$dU9m`V-u_~|vH%u><4K20W?Tj&ZU_RfnUt+T(@i?K`$#x-{azv-X|tVA|nXcxjn$~x${2Y`z4yGo&! zo-vEvt0$Yq2KeW~+U*PEjUlO&s;Wg5k}$X0_{0AbW&5b3cY){6T> znN3c$F;aE$W3#7KIb{_-`R?UL-Hn!6UW8(kb@EF+vxRh&asE1Eu9)|5j2E`PSkST~ zd$xxWq@oSGs2+0G5@ZrbPOdr?KL(Z~kaLcKRq|r7Sx(kb2zc1Q1#*}(jRwzV#tL+G zM+UM_=6LR0osOC(pU(R2gE73F^6365QLS)xh>b}WhaYt{*T(5H z&a!1rs;5Oz5#=~bzV2CkE0?nLF2L1r#?mSDI%rlo-n=r_Qein85GboqZH-m0mq^SZ z8prLa0Z6W%*8%+MsBV~PHTTiCYEc0C-$4qk51=e6LX#$1#Qd<8oQFNC0A%CVzE01RBC z!BD#lKw74m)cY|q&NN{fnj+EM7srGM(PqcZkp*GzAM$=pBXb#iNkgRAg#0+#LooRJlerNQC?Za+;f+9dWV)L) z&E0%8IDLhpG9lmbVFMI|YzN+B-r-peft>UcxjK9#$vBr>IYv5&YG>*+qlm9FtM)v& z8om&-Lu351-RvHVIP7mLOlb4D2F@E^yf2KSJUGG#gNpDO8O{8yWLyv4N(?Ck^J;)f zFH>(xTbs?1HRTP83lR^fH5y8NjnCabggDtbx<1b@FN{`^AMYQCeav2Yb*DxXb;MXCKvLZv%n=j)95&kKZI?eBIo6U|eQK!)~GAo zJ*?Qm^7SXRB~Gq2e||mIz($@~1w_dW-e9K8y*_zo$)>KD_-dy;8iTPXyfoRj#Q1db zT&iG^4WsK6z88@;n(F1vRlZtzgqK{)Kd-*Yo!-g9KNOBt&t|gwMm1h#&(jI!66nTM z2|PZsxIM`~!+X{>`{RfchmLe!>$l`n!fd;a3w1GU$OkjWO=R0hPuvuF{#ke%sg?rW z!=DF;8C$CJh!tdhtV;$EE6DdF*^f7Al#$vXw0Hus($ou4ZB=hI@rAfYRRv$aTqJVT z7s~Jz!2g8aL~@Sx8PTf;Sjs%z2aVDU+cVnTD~6~_g8udLa&YT$`T+vp97iOBBC;Wx zLa@l_xIBX$lY@;Z4AhOWq`|J%pO~mv%IDOxILO8m4LE>!Ze%C6Z76E>?xRV2a_>Cm;d` zZE&zK20qJJG6VHP4Emh@J7$EaI{XHqDsJ>>fffXPw6^5XtdYDHkKF>g_~g*D?4R)v zf(?y{Ex3VQQ#0Tq5aG!jV6?FW!FUW!2xXb(fm&Vm0`A6#PyeS~@&8#YFt9QFFO>|| z{{*A@an1d&EXy=)H(61Aa&-mrpsAIWD#YVEKvuywq7~6(5+B_nK{LGLSRSHSG0iE> z_uIZ5b?-HwxQIz!k!(950`lFa31*JC(B9Zk#R7&OX1-P4m!4HIHsGlGTd3A0f}_-H zgmF=-*eW-aD?le5XwoM{rh^h(-Zkla`@b*GT9fO@7{3)S*G^evk`r8NY*nvF`xS78 z&8gK@#>fp<-j`}W4j+}{isY%CCU&xQd%nm#9Uba>hHS_a*d^Rjz`i@a%!{4$QF^wk zUNS2qpZgzsC2Y$QXJPXTLnW|DB;tQ<)OJA#QWVD|B;|g%d7y+b&oe52Y-yr4IB(ft z{le|=F~UER$25if(Ic}T?VCAsVg9sM$Eft{l$tkg2txv8s-aU|+1bw!=U<~viJy4s zl=TlIN-hOu^Oh4fR|!k^HB z@UsvoGe8*zt?kHZyQ4;`KYsk0P3txv?U$fTzMH3ElD`oSVS7C3G0wT|^e{xVSP5CG z;eFvMK75o&FKpJk?HGGZVqyn{}x6vfD=*{dIM4Og&p1$67 zL5I3XdSs6}G7Gs5Qx(O`IrZ32l27P=dWC_cz@}zof#y&EQt&<>T44WsF#QXe(5no- zq zjyNQT^ zbDW4;7!7&cFag@;-?S)y>K;gYx(GEt!iCvK3=t=jOg*@W#6=m0d*%y$kE2X^G| zl+4k?Dwq^~dnGoLU)$cM;rqInLVe0f&KY=bHjY(Q!4hD0DAR(;B8<}A!Ft8a96Vfu zpJPMTbrgfl952l~>&ArI@MqvR9ZTh^l zwcJI*2_@96#_Yv{{k9YO&uC9$=wP~+g)Goqt&F+SH>ws2(0o^Zl$}_FzU$WfDKTE6 zCIxKV_zkKTDa?3hJFr64dP#vvMw!yFi~bk~eNfo905=Xc@NkqT7#hEO7+RG~6(q!M zM8(4775}ah0fr&gy9%fO%ER{OS8)H_l*#Gj7pJT{J>ZusLpWO{LvW^9g!~)FuP_4| z#|I8nUM}}+MFXZtnFP!)<-SToi3?t<02VXPWZ5I&4pJm{4(Pp52=BfWhk@H~1a^mh zOQHa#@I(z=4eD5WixhNLOm=f0Ik^JkPx}lO9RzD)WN1oYs2I1`p~?yaEspf)FpH7> z-1^A_x?*^!KOTW6f)I?+9{YtHi8B{%Vg4IFYl5tx{N1{e>vdMnt|gn-C6 z=nV}FKr;ccK4m@pb~K7ddrBV~Qn3+7M1v^61&0c7^%7+ufJ}*DN_M^y!@o50#E=0) z*c#fzSL!yZWDBXJknaU`(c|kV*qSd=;2&d*$7?>U$)xZr`9zshO5#Asj_ z{p6@aN}u3>}0$u znQgC_Zox55r*K?PrUF^66?r)K^REUf5vy$LlN`Z6fyx=4(MVj@ZZmSB(l62W4Z*X}wA5C0;Q~e2*p`T7UReC5 zFi7IV@focoayy-MS4iwzfwPoE66r4Uq=3ZovH1@pxO69O{$(64)lHL6rwtVF@#=&# zr6Bp+=VA^SL7U<|O8f#S+|MvR^gzGG>7a{@#ZL+-04QM43<3tH1j(2=2bh^H3>7`A zp84PLq{uvSUJH%VWqbsxMS4a3&DpeV-(gI2F{R7}tEm>FVfR&h89s0L$WXa1XMRDq zL(mcMg(TjCKwa5Hz@1gJ_NOR!tlP(H{)IOGU8wXM*Ec3Ou}J+1*jI5`$nfpxkctW2 zsdX#VZ`A-F!MQzK*Jy0pwr$(CZQI$&j&0kvlO5aGv2EKozw_1k-gE1o zs{8);)ato`}yC2p@b z|IC_yBEbUCxpN)!PJS|zNBWX%BDWnac#VNuus-tnqM`e={QTRP;nP2Ga$2U0@WOT# zZ{lcXM3dH$?|hAZy)cs}U3e`w`gr5yLZHBy?Skuk5@@;|n+B+|7Ds-dsqitxx9)H) zy2q7umgbQ_8;Tv?*@Yb*iBt9yHGM)5oV0YPer!g{%j|Am^ zSYt=obF+tLL7eO88X&2#x|%b09;a2-n>o8DejIqj{f;w7xpv@aumA{!40I5TMv37W z1^zyx!jFh1TUt&38)rsy2USwffMkr}G(>_pI3xDuZiSVBm(xdlKntNH{62WXm{ft0 z)W4Ij_$!PorvD_AOJCSnv<{pcF4%fl5=OYm`%Ow_RRTe;U}T+0#yRK6TDaD6Z_=;^ zeLyBUTunk8!6WL8FQS$O(Wk7n=Gv^R<3R0QX3zGsm}-44I=vY?ezS0k@3^ZUaaRy3 zF9Pzri>NmIA@lzJ-rm4dCRT5%6t=@0jv#uT?bo~0i$oVd(S1TE(D2j(UA;&YOjE{6 z{t7wpKQ$k@wV9Wb(@&0ERyPb9H;luJ6?4EpMNtYKr1F?Md+e@h{p@KP1o61PoAIx6 zd4v%sTXc^ERF?#b~wGjML4*_l}Sr*vLya)B`|0q@4Z?Csb-QGeO2_oLJP?kfvD z3_}EkIs!nu2`e6cVGvA|d$+(xitNGHeSY(LbnntMnhFxC+~{nc6q&|)JI^$8|1lO- zetHtEd6Y6~2O^yg7qaHjMO#;gEisYLha~CXh&iPM0M(|bu^HyW#n1r6> z&ZXp^`B3LclEQz6!G&fd6XX0Gviy7&oPX}e!zsnve#mM9i~5E>3`*|)FSzqxSn^-h z7*>w|XkBCfZ`>O8{}s0;`#-rgl7dwcD3l35681~@ z&2zsAI7!`$6}y0;FxSc0<1bvLT!kHDloR=TnWgDUM)8U9K8w?nWQarn$cSKi#qumr znyvot`PT!3!tf072C-D-Su&AY8T6RuFvY~V}YH{O=_LXWEtkYNEY3=JQ_e5}Z?$ClWd z2TYA!z*|ap@>8Z*W)^i-rIJi8+PiU#7DFRj5)(esgx{zap@!C`XW;<-DTC4Y%)uC9 zixoEzkHtYZIn*k(C{p)Y$ndW^~AM5v7)~8@}{Pqd$~R$;)wa2}7n;>+=}>hA4#fscnaRY<))(Ln8Isd8o}1{Pg)crR=BPC|!_ZU?Zh z#YZ-auwC<%D@`7a9FJBnXN@5QBTZE^dCMw};n%A)O2StYOytFv2@9#3A;REQpI!;4 z@XuhhqL;EFRiii>+ui! zWto=1`Mrx?uuY+r;h~UL_Y@o#_}pPbxu(RuT6;Fdu+NT$NZI=f?R60%jHn1NG<16LcjbDn^)y>>7)}uqi2B9+0y=j#!Lq|2nnY!uX+dxr5h5sehDU%F zqHyJ&a0nFZ$eT((c!o`|^>@*}2=KhPu%3~(eEoI#1^DB+UYIaqeF!TQv8&a4C0o(Z z&b}jJpl=iw80xU0bY^t~nA{6Rb~VK&&ovzcM8?MPu^K&}P61UUZ`+Urf&m3w z37;vU+oMYF(i2|*AS{Ll;*KJCKJO2OCjHSBygMw9-e=R+dLKp_3)B3%n)%APPpBrF zF*i8yS7ZOh=A#(Kv*y0+JEw56(uo@nmR`Xwua$k#Hnr;4ejh4*kaj-2V|R3;TM#!E zJO$PbG6~r>+3j5BH8+i&i;E)1f@pgv5OfTsPT-hw7swJ5r1MZQx6b)#khgti>EmQD zHLM3c)`z*Tx9hckwkn~=W9$-tN{GPtuKV1QXw z^&~K&)~E99U_iYYt!+rIRVW}WmzBx z&?*wMOO51`ysTOb_QEV!61!<8s z7{^?Aa|My5=+gA!E@(((uH^<|AvF-3qz&&dtq|@amJu5M)@WDe0tJL5?$`b?U!SKO zMIo{PZgomspe!rLOFNM=Iq3Eh&r^dG=Pfuy_u&d`%>cYYq`kgBh2RMwKHx99)z$nj zoBO{u?Ek}zVfc?y`~S5^{|_H@R*wG_GbUJ5)_J21@y|?cFKt#*C}B6mUfgdR>t(ss zt!S2H*`euxjC_(3F`V=P&7s%yG2R~1T5NzZ%&}Fcb`d0j!a4j}e6Q{ZqSS&s|J&;$ z!`o15@+&xK$}6;o;-m_MwjAsR+$GcuZuqIFTUrdp8LmbDTpt?RWfwXi`F#PTC5$*pdsufO}VD) zc6s~$(Npu#@Uqw)r_zp0?lpJh{X1|=P?OR5#K7_y@C@C6I;O_A45n4fPqWlRUfv$0 zqguAnc2TOI`eINqZ!X*O;Cb3b)2P3GL>WOyEP+&LYnSA1R7~PRV>0XLyG^4m^}dl} z>SiE&V^=3$+|aFA!IU~(L37%oR54yTZg|yg-)~*+v*gzL{*{ln=8Jw@##CwlG(s3w zx*Qo>n>v0_LB%uK+sUy%#^O=WRLP!s&yP|uB)+Am2JJBW9wpZ-Qk5kjOeyn+f+-5Nb-2KGPsY`X6TRI;(#W!Vq{Xe zPKqt1x*wj@?5VjnmpQF|Aq%aYygH@yw&5)T0*-W~WB}{CiF*bsIzoL{GbUX&Tr<$v z&zu`qlBoQYIaP1p0qe^&ibk)=jg=Au8?$K;+HKD!?Ay4Hu+$!?MoE+;1fsqwi|k7F zBkm~H7_BYoQMJuKs0)QkqU@!1x`Q;#aTRj2NiY%eX*aagr{>BIVG-c*z6msnG5}3T zE<_WKAS8BvU<#-YnWefx7atNVo&eezal)o|aTqLswGHW)FI z#7>C7Rp`F)$~3`wiL*!Gs4#QTSa;lNJ@%R|j%!c?aa2)LQbwR3h}F1unL@{f^wZVZ z-J7`&g`>@N1HY1*k|En_5Ar z4ageCD?)dAt}8VUE)pYh*OAZ!Ow=9JL@^~F$2kjqA-`gEv~oVe|C{z9^LPyJ%ssP(8$w%muB=jC)@2%bOJSLH5SH zIw$PXJoyIDMYx(Sfbl7u;fR2B9qLU(3ZgmSJ+eN|+2x-Ai~;_}e7Owa`bc;3z7{MRyY!xo$sC<}! ztPs}?Jyj;s%^(p-PFNgwLXTpJ*Jml5r@#vmEtQ52WcFx@b^^O@$70WmXBD5ivq9_~ zH))WFqCH;VgpaOYWlmx`sEb)DEL#`lR=-M;9priNPQ{Z&QU%t&wIz4X5iaoLR^5Ne zbpeJ5)QiI@ILed`FyT{je5Dr|xfLs!B?moGIVqN6p3bzv0GST}>QdcA5cFEO1`3jh znc_1>x8Yo2uC`i|A2E2eP%e3R?H)BTI>2(Fos6Pb7qz)@4Pi;n8Td77aJzDW>Okh6 zQ-R`8^--*m0A^&6O~zBRw91Ke6pH$VkFo+fs)h>|ww`+$pk;GVBp$Ag%eIGn zmadLe6g1v@fj4>MaA12o?An<5;sb>*9vZn;*ej_&eGby-m|fNm6JuisnMS%9Ysbh) zGq}m*ZRH;S+Zw%q{K8Cr8JxycOfH$X!Fg}IwF-%XH#OQ$YX(tz@lS?BfNJa40UwGT zaDa>eB^23ohDo;VM2B{8T)QpOJD7qtZUB~PIRFEgMlt)HK-j)iL-|$~gA)j2a=l7w zRO#QBgg=m`;So3|sua>5ght!LXX>LW#$_xSt3xbs!|TediyCE6!j!xfRHjt69+Zf8 zI%|1l#~-o%tUG(Be5$%uKz|o{c@Bv7$!~1nji72cZ{-0)G~$g7BubL(>4>ERHTanR zAvOGuCF0g6mK;;HjUt>{}c5xmU@CLFrJi>BrjUipg*y7t7a% znnZZEORZ0#XKgi5VD6qEn3u*O+bgLwn{>=r?kQarOBa#(v6;)O=v8~oH5!|)gT;$7 zzJ;7*8CBVY@`P0zWJv&7BBNlz)pN{?m4vJ-J#E+UZrq#3kp=$fN-;G@M{uSC>1wM5 zZ(znCY+|ZqpPZOW$Cbu+$isxv`La)$eb3^E95keNri6?bHx~VnSp=9xk;&o>6&=z0Fuw zG$Gp{UN5nu*;SVJDO2j2CX%d^Czq)xS^C@>XA+QbAu8nKIj0&X_NASPmD&EUwnjO# zI3G!Ccyo_9s!!^@6qRp;MrqkQgDe3q7({-ubd?v8vYfvF1$&Y%$WcjLMWscLtrR6W z6h~?F+k^=lm6(0WPT{qLF0TmhF|5J~f`81|j|T-l6Dp8U_UHz6MBS4dc>_F7ZbASE5g7%_bPF496A+d<{>l&5B_6q42hrw8 zK$SkX6ko~sp$P!yQvoDQa#_(SPb~EH0O)SndtYR_fXCI}Slh|vI-!tVl7O$W*A@}X zq1YIcn(opWTi6z`biBbyA`a+2pKF{9RuWD8xFUaThX%Eh-<}3AvG3-4H`8c5TFxz_)N< zbF2!WQ#mh-0=_E0STIeKaNo*&txy2I-FqzJ+pIm_q#lZ?%8SpDSwJOyQg2+}{c>F-mP4%zX&GjQfb7)OBfV%ZxUWSK%5B9#L(D*Ub@m1;Qd zr<>)_0+5DkMC^8^%O3?i)811k;13E#^Zv8zC>{DLN71CA*hW}=yj{`=5ER4jm#n2O zjwCcxGpzjMyv)J5ZgxC%H9wrZkvSrI_+e4IgriBF0dwGGhR<&RF6?Rc|8jcz*NNz# z)6@Uku#Ds1UuysJ^u+m()RPjun5B)2sS^Rcn2n)}sfekuy@@FwAC$9;lc}LClt)&! z`l=K52&(Uhx=XS?SVe!^^N@X#h>}bhDac-t(V?LToa7*Zz!Z$=#CN*7zqA~EBf#%^ z+~kQL0jAvU)@!G?X>%cGv9fRaPw!8L_pkA|POst7&B^Zq%+f(AGiUJ%C$~uancMHp zi~A^0GRbcp{{H7b@FlIZdU^uV?7wza^*T z=~7Z(T>C&!iJ0xat{3&ql-hSz&dgG>^>uyHYQOeB8-pC}4H0ia-D#GWuHPt)SyDNI zm2;#MKRL{kjsndOpUl+bjl6~J#yJz)3%K4Jy6MK=N;cTex5q2s&D!uj<482LLnPEva0ny4(v-mY!Cbl5Sh#`C>o0B zq@Da+J#Q0qdiu2{2a={a=FLhGQ7mr^T z?cUcnl~p}j$LKuxC&_ci&0DDWY^4fV%CFsLSS_!lo&KzE)xg6Ocdmn|k-nyVz8pQ0 zwo|v7Hh0(XPu~ypU)V4P&$DDtbhvxAcdw&i|8SXet9#pvPbfwjPdYif%7SpW9qR4h zBCA_vH8;^DWN~fq|NPyrv3kR1G^2IQ&qVYs4s+Q`UPAoHFG3tcOn=U4Tk;PHnrq9= z>hhFKk)7jNj6>SS&w|R{thRnhE{md;k_jUeKknb_50!17-AXsuqPJ7%Yv4^$1W6Wz zR49X!hBOs~U3(QG@M_;pKTTbu2c5v25a~&M#XL3kFAVM{?@jP7bf58;?=C_T5_yVgrf3p z?0Q)~6}&*xInN?~q(V<1qX&5hr13btreU#)3_r*Sd6paBVqJZrGAe+9)z;7U;+yZM z5T8*|_1t{f*cCVVEl46)31wyQM`ahybEDd)Jw^6I*de{z{u3+PT6Rf9P^Eni?rd&n zl&LIH1a++n2As}kj(c?CenZeK?y)R+78=K0muE4)kf4(1{h_&4TSQugqP9gi6m$|k zwpFXSKg@UzuP0@3+8P6=o@%{s?#xp+wO-2C#0Edzy_7%BT~H!gew$e`psqbn&5YAi z7mXDJ+MQTb_^hNXV`#w`p?eSQF*2fNf{dK}vgY{R2|5h~eyoGc*2Za%^bcWMvAan5 z1`#erbD6}ulo@ z-qpx2a2~MPmzpE0bK^oqO0eV*x_FsKHls_wM8u>r0||TkAade|-mvRXd!~31lRPaT z`NmuXuCcvYW79;Fa(-e>bLXqde&{PNWF=?k-!|Zg$Y4tSt3_dq(8=6XMo6$ksz{bt zNRy~m9m`o3*jgj3Gjeov^jq19iOaQf*Av3^H%^CxNm@7|%lLP;m=E-IE}DE$4}tH1 zhzX@30Z&@-cq_&MPx4w_-*eBMzRHDwVQvIFF>`~SK7Mn+8xZs-=JM-1K6Qh-9=u9; z@@$#7VuCyz5vDV3$TeQzsPSk62qCk}hqkv(mSR{J^TAOVq#(i)&yTqV}N2yY|oQCOJXJcdI^+)3nqh`g}Z~TZi^B(EB-@heA z(n>JyUvGui@%tN#*33^Gb$!L2l}P}^^z(5`s zmhFrJRL{z?8l#sjq=%zW_3=M5D?bkgpRr{%bmZKl!Ft&<5TpolUeKJtt}Q)RG{YBFR~DUu zK{S1~UqF2Qk+wjiPXUr|Uk=3Kr#=*r_(C&?L+IVVZqed^CNc8E;AOiyKB#3*RDgSo z_ZH3EKkr9HS|G4|J*bpEpMZo2jI6uT=&OVSqU0Z;&LgK@T1C=Smiq4q5LedZ4!dg* z8+H1OwEMgBx=?K=TeVktS;5U-0x(JX2zTdCFF>@!oUL_RIv|Xzhk-)?@6N2Ig;~w7 z8T+VCC;mngt;kzB#t}_yQ8DiT#1J_PFOp(ZbJTSU>}U=!4-P&vRG+13*a6 zf%m(pZZ% zQU!}Wo$R5cQjn0AaV?>&B(+@lf*yadgm_8w7CZqtf=Idd4-#mN+)l2E2wlqc5nxe6 zwx&hk?`dgJDlw1|=$|rV{_|XAgtM7Uc?pf@B1#HSVotoJ-`=tU0fV22lrol^2{A&n zl9hP3=K^~$gjxOCB?Y{D%eoh(J1G=k;!w@U#~4fc;vkn6F$%EM7)C_yT!4D!%bY_4PR3WlTTN@QvslOa41E;c<9RCynl{BviKyB(BN(TUL7UoQ55 zB0qV&L9pwr%s?%q%lNH!N{aXbXiMeu4Uhzv;Ch8_DWkCjeuwQA}c6c*Z4m zC}VG4mJpAq?IDpN{e*t;_0&f5M{>j43@;~xr zod1>__v;FlSMNqT+r z*`AcsLia_EDZb>G(tMjn#4yXuB{zDG^Idw~FJ!YX*j&%UPoL~K+hfOu$4S{qP-3bB zDhbKTKiu>&9Fi&|5@l^fJSb0Zm}%R4-%IZoj+OB+_@1KE>a$cq?V6jO(@5lwD0OL& z2}MK_qZN02^No?#`onqdVC+p`E z@Ly;6zp)*H>gyaHf+c=yFxsu~DNP50Sb-o5rp;CwZJJ%OH_UnK+Ph?cD*^D>j-Rgx;d4592-&!Hk&Wm$Z|tCN z=q_t5+O|w!uO?%Em~pqSAq&Um#}JU|#!+-Y19xT17%bu z{LE1G=3w?HD1wM4ztW~L_To33Zp^59oFx9^n5PI^Np1f)NwNGTRAPw`j2Mh)p<=_b zM^Pum-a*~c{GKBvdS7zIe8S33rNC2+Sw?6qNOHRR?hGtOkuuLr4!mKlPk;$jDtt@_ zTKX*7b_t1_u0I7?H=HV3>?RpGsduaGr3GO*CEj zG!HzKBD2m?uQsXV5nfki%*`i*keq^+c@{Cb>r8Rc`KZ7~MxFG^(|v z4pE?NFlFG-jykx3G?^by)=>H)boj?!B2?Y##<4+ql1!H|)5yx5vZ z0;!npOpkO4-|LP_gXv@}YYw;S!1lc<*Y!8T4`rre*>~NceaFeRo-~CZDWx4?XB=Q% z8d)7tC?S+~FH}nm2RbqNN$Cc6NNJm546_`vX;k4j$kNO`J0BwV(P-Gx1O@?WUDiwX zd)6jUqlivhDG*#nG{}N+9nf$UuwnRjIi;9MA5oaIDwhfrKVM#UD`krEY4PL_Tl>(BY`F&2C0=q1zIz?$uil&O|c zd(PMa0&3|2(iPxc+sFlCOK)_OMK0`Mv*kb2?jz@gDOD#3x#5ex@H>86t%t&_#MLKv z;(2kw1>a&-lht2R2-U<4LQk^mh1XcTApD-M;avjE#KSYcT^|l5tUJ5?BEpvKJL?PRuIc<&iT-)e}PO$ zuh$p$SV>&#SC7N`mf!a+FkrWdDmHK>Zr1yEGR@BbEUWZFr7*kVTz;)Q19JiXQiYk@ z2nNrH$7Bxns+&-lp5O{F;S_fL2EKK444D&P&cKaFUYM;Zd`j(J1I6PMS*@!euWELSYp# zhIGIQvJI0;>rFJy@`g{?O>_;wo{Y7fJI+<}Oj+*_rKa4=bbfyvM5XP=G7I5kj}SM| zW@hSUZ|n|Fi9H3wQ!I3GnvQzS>X0GEG%$58J1a9m=d;`mg%RH6^tcU38j%AT7^W{G zB*+rfQhc8(NyrqJjKkapS~B${CQK5_KUFg1A`DY2J^32EQ%1-}ZjNta?w;Bg_;!g) zB(cMvN0*O_q-rG;ZXp+5Wc6l_joE#+mo$D9CYu7 zVQqrv?-QhMQ9+L3V-m580Kgc#V%sW&v#F^REyO30$(qFVpNic(`iQ$Nk`Yo zVH@5UwTzzr3D&2#B81_H30m#Wf!PCNxkR+QfG)&CIpq1uMWkvt@lhz=IYDyqDS9Ym zHXwF0%+GRhRdEbdY4>g%u|o0*VEG!w;t{;uxg12E5qwfc$-GLFuW5nG2Z{_C`UK zBL1m>0MrVYP;$LGNwqPQYF#+6LaG=YBrAw)r|QMHKYGZ_mRwSLj4)$UrJ z+j*u4l!9(?qP+ow18?9k>GMe5oXISLJBUm1r}v4|17@9Q`y=It4i*AI1NicLRzK_D z&v-hTY1(%yxBI^Eo?R%GFd~c!(v7$%9)ExuegQ@uVbJ~E@8NUX)~)q*O-2Hi-)Wl2G^k^T^kSL}_Gjy=-A4 z=XSG#ko)DE#1Ey{8Jg4(y)e=Ae%)s#u*tyH7q#%vEd(8_EkUUrP#RJ-(s?AcDx-o? zncMS%@l|+I8Sgr|dmR?zv4&Jpiw1oU=<|&kFlyx>`3t`wbg~G2JopsI^N{z9q`e-uC182^jjIveBvN^d<`Q`3F@r&(gTwpY76Cymst*WPWP&9bp6#f!^)o@W-x z*12LRxvV37oAaKl$Fw^#xTt`GnUgPEP-g=aeOnjcyRRalF~V>DddTZ;s@c^29n#z# zIfGG0Ws>qrYQ}Bqz|Dxoe95veX+Or1wEtmQXI>TDj}Gl3;b^ew$git^q0Q|j zDz|Z(@qKxzUMZ6kC%Ds7>oQ3<31|UQal_C$ ze<@Bv)-5Q9uVvM7$xEXxULwXF7&)U-s+7mXG)QPYYV7dzb>?aMYy(O%4Hpwwu9QF_ zO`z%)G<;`?Q1X&6G$w``hK+sw=Eb^iYb;R~bxW%wMKs+R3k}+(oukI$Ai3yR^ru7v z9qsdnhLgL#d;B(p;zj3W%_{js6b+r8z8t8CH8lE&={Uq48=u35)`^j(`xua(=GvMW zJnTD@7NLP?k9&;o;smM6MXo3*8Uh5+Xt>ML-1DQ^*cXX9N3D$F_1dN3%ubM9t8Tro zcWb%2cgr8sO<&}gS2HLR6*c2rZ?$VIG`0p45_3iS6 zyJ!%al?W{ARfH^+>y@LX5-8ggH?vfkvl*42;Mk?5x8pOwAw_vFIbWO7%>qE`tXcw8 zjc1e$QyPOWKDT z?7ad{%Mv*985I0QvcNHBIu5QA8g|Xu3>ywAjKm>D+lQuHbv{LAr;b^)%v3{qJnS$6 z-p(8Bt&#^bxe5n`cddOVqf!tPt*Y(_H-AUIrG`J7- z<;2r=(ybZ)TPN6A*)bEtc|T!IWb{Y#N_Zj`*DXmPe_$U1akWoH!R1yR<$z&wRDp+B zIFYdKWwj3CmC{ck?_tSG@o%V|w4{k*ts1_VG+U%@qaDK4M3Xd1{#(lgm}c-D$}HN` zz~K&qbs5WD!Nn$PE|FKWiwc%72BbCcO#va9dQfO+-c);n@QyJEUi_b#ZfBKUMCJG$ z=QcqN%OoivS~-P2dI)VNKo})}jTD(yL{rTc*ot!!+2Oi4)M5|y4T8k)uR2?HU6g`m zY|Y8Y_ZI3#tE7r41AS>rCwC75G2!MRJWaP{fLZfCUQvlf6S(<{yf`HrgzrU=Y^8`* z_VpUh+#JfklEuhj$q2=4B_6JiPtj3LTI4I#rlgM z$ux}$+>=#qa-?7Qr={ed$ic+RSmFDw18^@mz4yJwR zdL43zeut)+@(2#DGfjJdC`*uID7$R1415@F*EUdA7OTF)hYhhHXBZRrWG?;Lm(&gN0D?*k*GyocTj&FDdyk z%2<(v3Z-_&S5}G;cA!93HnNa3#ChXo;Uu2QoxHL7fH`3epsH*<{Tp5^-c$Z{xC5$e zZ>Z|D%=8WYo88(Tv5y16ts}=4J#qlf)mb83FS|2B%C+fBwDbM98$5-EPBeoG)x_b=fA6fx`bIA+)RrvugPr9MH zuf-NUKjy-#&>`=zR0<CnqWVVa&qwbMDT0x|*z`MxfnL_)Tqr_at;2IWWEsd5KV-Kl1)Xhd#@2njq z^ObXQ^(h1+2&Es>ISZJG=nwgLv$nYc8B!?>c$uHy$kjH#v2kcDl;0RUqXE^9C}0bcR5SJtd>6fugSJ#Sq8N6 zK51+T8jkf<3~qxF5wv?BR5PKsyeNK@@Wr5RsU;-%KOkt>&m)27{i1VwcIY6qXQhNW zTDt-LcK5oI5(|Qo6zY4^kUg1=MF!TycVnGGPs__KEY?3&g=M9o`r7R=Ll02+smh?L z4v(%EH<>8~*`$quL5+j-Ur%Cezm)b=`Xbmquv~7$(jQWh3Dp37hLm{b>!=07qY{<= zWrTRF?#LHCAm~RZ@2|viXfp#Adzc7SLwNKn#-bAXq?gS%Yi9j{x1c+T95bQR#f&*w z&JNHdXz750Bicww<&{#CJk~b>t~8H?VPF@c=^MuVdhluN^&3zQ5SHy1vO8a?ZAh7* zybT5&Kr!Q~ZHC^0+M|lYMxf&7!0$q~akPhsP`Be0FRO5G_4sQM$!_f5`cmpratf5E zw>G@_=sD15?EA!S2feuD51)T^^A<-BS^(?Ft%kY?hJa; zhB&6d2RsM!0Qx0IkknDI)(yVKEiZT|+z0a%g}9Lf#4>=g5sH${JwNl($Lv1GM9O9~yJyFzadRkYV~+>xc-G4a=6!^!O@~)M4N@s0+wr)ZS@K z7~FA(P&lu|Qq|8rpIUP&CQRgXrlN3e86!6dk#nB&z)^!uli=g>kb&$T`@TtSXi>8} zJfoSuYLvNBcv!N=-Z38^U%<0HZ)nbI`2C=JL99?z;GawQU2S-hL@~Ly_xh!~7Igmw zfd30s|Ep}u!NUH3%cg9M|D|1-jq!igu3WA0Z)e*bT7z+%eK?t|0}Z*ZbCOOp>Mbg3 zdgogdk>4U}XhEm5}7}1zRr)pg~(gzq;ib8{Q=>tDkIy^& z{Zs!2Fi9*jvD0x+HbqtwLD1Vy6wX(rUi zFSg9qt)(^)b6_3E3(HC&agNGuE;p}BJ-WUdtm{`>r$Mz=+MzB7wBL^-$F;-Av_egv zC6<{}PG2Ng1L#wwZmU};$rU>5s;&yWE@xVgG|Ju+1cT~=%rB&rnYH%UYEw0a>c*PF zVey#65;sAJ+ATDix`&;YpQON<-B_|c(R@ZlS=F_eD)nLfB36p83hNZ}YFquk6%U>O zN=RfTq}Bk_OhU%~hDErLU_J){_*3y}Y=}XHUBD1il3p_qLX%vViZIcoU@R zC9h*C2FeDI^5M#;;$4{tx<7IslEh}oA-V=vURtIz<= z%tZ%5GI1TcWugja30+l4mDZVehjw5mD0;-oO-Xna)kn~H86zub%4rzMR~rL2C7cfA zlEt_rdI;%+0#ZQ_m7|+km6VLIaQAm5a%$_Y>0&uQ)pF>&_=Mf&1Mu2kDryY5JWw1q&XBf#+e?254%}$3C5pKBhCQ@2j+5TdCMLq$@yV~Pt2ca}CdGI>wU~Ry{ z|IRn<#U&|~3-)rdZ!0Jsh9+o_l6Gm0iM#-n%m;&Zmj3#9&n;Di8U*>efO!j!M`iGF zbBx(q1cQOJz|qUqHvnU31K|zt$>ARnwog20MEB5O{iB-F)0<_$o5RoqM!&TKa|Wcl z^D4hGvVX3#bIi~00G(s{P<9|`1uT<}*7O0lutwcAx6cYf_^FEZM4{~lX|r2^!zqgG4wboj>U zj_4CjkKm(<@JZNXyE1!mDGvzwPY?~0pdmvnCBge7qC~l@F+{7v0ivUst3oe)`%YW6 zDV{Anx!=DU>z9)u1P*z3W59)OSDi#L)8OKX>0TQd$pj}WSotFneha`l1Ysl+y+x)X zQciNu?=U$=6bf4e^RZTna*6*Ui3pH`Hf|tY>xVxViEG~XAMeRA!H$<&6+YQl^f^A4 zjlxD{^k-j3LxveFo-IFRI*GIeaBfVmp7;E*8#d0e&76!-k0+Z#Yh#I|y7Vl)Ym-I@ z6CQREp_FFJy)ip`D3_P9D3tc;$r5cwR`LaG8wVD-fD zcl&1Ofupct4sVceL=Xlwo*vKnlM{>pO@#~$AWdWGeW(hl-3{phVC>CmlkK;Iym>}C z?%J6L?uAm!aNPLE9QkUe3Vlpkm zP^yD4s&st2aVKk`h;)EhygF9-RMnsS`U~YuFdVDoCtx_#f!Rkct!wY>!UDAQ#?Hrv zO~yy{Dos4U&8x@BHBqZRJ{omux8O4S<4W(Szz1dV9;iLZ$~l+o$~?$-suMtop^`(Z zd(F%%U`v+~6**)bMol9?!!m4+xuz=hrUiJ6_4m%sN3)Td<;=f$3o`Fhko>1`_d%{y z`V=1+A!hXl#9d`adV9LjoIy0gu(*@?emDDcuf#5p!VSt(gQ3tz1ij8vK?VU#kO$~v z1YV8i_nbF&5g3AnZ&u0sXr?HJtB@Vzo}wk_p%3m)o<4B_hoO9DBxi-sKKSGZOfGDy zNP#}taK)2#?5pZ+4g{-zg~=P(M}Klqm*?$KeOJDS*u062GJdEH%pFkr)r3@Tc;k&uY*^4$OO0gtQiQ>vm&^w&@;dF;USRYJKBL&OMy@XnlY6o4yS!GY<0I}*PjZPTol{QNtlct~ zcF zbkWI>OQw%4S;>c=o8%0BhMWX1yvGQg^D+n@^q+VUWuL8k2CAgV$Yfb^;=OnAuV^M-$D@Bm zm*;S}{zR*!naF4H{B@BTmyrnKC9UBuK`x3+%B-j{9aD}*2!Q;vpCfdRw*YWzWHNh#BBkRlBTT}uD0D^Hbj1i82hhn- zqOjLtj71b68S?WoKY@@k0M7FHuCbQCL=<;jZVhzY;qZt=OUl?sr1j8C5{o859KHXU zhFk*OL;efgGKRJ7zhT~ga{`#y8U9D2hwZ<)e6s!TTt2Hcb$@iGQGJhVS4K>SMe6id zM7Ivc9T&AEtr@c?f5bB-6@-L=pa3;n{LSAow&$JQ(E&&UtGO4(R=^zGueV~IXZ}ol z49||PPlI%3&ZWwXCUMg0Bs2|4^usZpnz`36M_Vw`)BNP<<@<7=&{+Ox%Fd+fubv z$NRYL!}L!Y+`cxOu;;ru^d0LclPnIGR)v#wwnW0A@T{HppA~XE8J13g=(^3zLQ^>} zpw?az)UIE}8E-M2TIyLk)L9kbNWYcGMV_ZsQype-=frs;TRFYxIOyWSr10qc*dH zx}pQtt4gg4;yr3lDq($>HF)#D`Dw5zx^$%atd&AWlK{Ajf&C;_V?Z&~m zZsQm0iPHF8>3aj5(4~R*b(r+6&@H4DQ*}GMO3p-_Q8q_#lpQ#8(2?r7Fo_C&YQv91 zrc)vV(75FH`n=l;QXy^C-tb5Nbg;&b9{pKDF3^$I2#Zm-CXaUI#9nwQ6zr38qwSumQpn` zu_B0Hx)h1ey}81JAZ$V|3Y4V61lZgwUC=z*qk(06-S11(2R zX@x)TcrV=Qs{2(lw*Zt+9vBX?W170rom+STmN)Ewpv!% zb#`MkH1uSy-r7;m+e@ZhfLm1hdAUs8T__ADSrM(5hgo@B_&JFpEiB==w@*kTk>E3x zjdy>&7^H`oHE!j7<01zlhNED8Zgh%H6ZhTl4z`;#@dAb2I!-)Pk0taL$nQGR#{18{ zz=qHa-S=k(j9s{p0ug+wHIi#-gszZfmA5^;fPaUoCILUaP~WB}Jc^q)oK>=`I75hXd%-y8UgGSfb3N(I<8E^@HE!R+kUigZl zzL?K7?oqm*$H9frK%hI(c4FZ?PDnrHr&pZkw7y+$v8Lh5EIs2_Oo0MiNUjvPX<8fk z#3cdC@z$E~QY`+jP&_6>_wA)fy5oFEXeQyKH7103ccc`BYu)(mbO8&Ht7mrlC3Gf` zdK%r}Rc7xKB|IR1Z$^8Ld14%f3G>>n)#^9J=FMTYvj=y2IQ>$tDs({t_;?^bKDa?( z&h*i4hjcdXmccD|CVpn8IVkq~ZB%YjcQUcEdCDiT%eOLqj1q$Mh!qD{D6gbpAnZ2?0`0JAXG2-xeLg0_3ZX;2qX6yMH{eKVn8$kl8N z;68jvgb7VyNcdzNh!w>&o$><1tCwHepTBB=_#y-`tHkA%E=_*?;4^QB3s|i13^z+r z&0!YQ;PPp#Cu+2io9Lsa=Z#60Swzee8zLK~&%mBc*e>BfB!zbad-F!P8w9Rv_C7D zOK}o4Vt}xnRVCdZszICofYGmyb2+(sE5m#ALL^+`7(Y!AE?nU69*|E4356M%xu{KN z+O+^$4C16_WyA>!s0k|6)BLDwuwcCCWr7LQ)>$4^*;MktmdZ9GD zLi)ptci0PEw|B%mPhmw!vhmg{{2?d-;@{|hd^{YH{6N1x_x2FrN-&){VLYf{h-PC4 z{5F#T^~eVRdb41Av2eE2n+V#@?VthMhTL!;c;PSt<^Nb^o0@IdP^mE%uUE86>YcdW z?&{N{j9kVq`42Uk1?bpeVo-gbydRv@;s?FaevvM5d&EXz*W^ydT;T7^K!hzm$%gE? z9N)Pi-{?_*+h1{`LLf!!c;IR@g*dkPZ-E8coHC2e3oqV+RzIPW`W#O#3Kw4L4m24X ze2ftJPuyLHH7%O(LKFEi%N5{u-%onL$tAVuqa_>7qA*b|Ga;WVeSw4?D)1W`qwDl> zchQ(Rjf>5S644#fYo+ktXo^^g+W+?W5p?gQph2^nEmSx@*UU!Bm`FSe1I$MQ`SYlGq$OB0p$b04@ixTKZ09<+B z1?^itSi8&rVr*+qyN?4uUB7UoMt7Jrw64-PM!Jw|OFcCWoBW&|N><>`NaapD3AN9_ z_8Aq7w#evbh|8&#e=R1;H}0RxnNtv4#-@p1iX12G5B8lxf>Eu)Nhtc6qTE~A0RhwNgNlz+@rg)p{~CEt=l2Ze{>Aj3556n=phpXrH6QG8!Fk4Tv% zO$XDQ9RNeE_)!dTjQjrK80>kBVT>v#xkT;m6yoDggF|eCWV>RUT;DY{(+)A7fozGL z<(OKZmwk)ip0?|qU3*$rW@E|*#z_}U+zvI(JfQ3S$vQI$>8!n24nEzVb0q2&PmEw* zL&*J*PAq7HyZ{UL#bc8Wvk3?V!!3MSp}?O0O&-A`EbfNKnvE>{(AO6T`|ZwbE3jmn zuuhSGS}0vwaF!^utk;J2zE%o3KP@F5dDTrRJNN`Aulj1nkgg9fDrKgqWq|`cEyf>Oq4~E6(W?_y1%}G5$0Hc5mrXa1yBC> zt+{yy^jo~KJknwB((4#RKVD7eN+`hkPkU8Nqx$TKLj-Cp>=zA(2w4zyfPH7Zi-&Fc z3JAn#GS9Jr;)?-iZP@!aIj95SdE|)PNWnfLgmj>6dSkx8QxR}}|FDSvFI+Jr2g85# zzO4U*D`x%Q;fj-0H*Ge@Fnd-NVd~h702mx|^#53qyDT*)RuzMR9u(w}Y#0#7!--e3 zedKgcH$MLSEwmJ(S|@_wI$-;GW7ma@#>juIee2wi*4f3rSCYnX&)7qsW+zo)#2zk^ zB9Fbj1N-Kc?vY6=B$>`#j?tp^%W(W`aLaOwi84c#m*!w#h=ozVBFhboY<_ilq-Sk6@^iPxId6t7oAl6o<+TsFfqP>^Oak(m_)PGJ=$fjHlHZQ z9501n1$#j~EM7n+No9+$ z!vv|N$qqP7A+i%9v*ku5z*Y-olUZk#qwhk%-;tuHIAmi7E)8x^nAM7A(OfRnZPctT zd+G|slsy}Z|xAj@RIi{JD)pITgj!VOy`Lf8t{5vdVNnMqX8&gTmLAErLoony8JSP%qIBs8l^6OJqOQ}xSQKgH`HV0$iEiKRb zCa7x{?-~5rm1W}Pp>rb}@R;BOOY&}-c$jA%N17RQN@wE;%zGvldNp+Oi|6PJ@LtD; z%9zO9a0GP$j$30`Zizprv=dXMGXfcuv-ukM$L>r0QE@>v7AO%5;czxH8qiQ~4?sV# zi@Ns#;Y$-J(HIc5Qq1p<+W}(ZwH3SpTT)%oA9V2r7)evrwGjyp&U%jTgmsx3sxc`X zjmr+*G)XM=96v@L_!xoOTVyVRtPmwvE*Y!4CgW0`n;teYS#_fjRN=Uae7tAVns+wJ znb0+=%)DV~)S+pybu$%T^up*Fc|1iTtEOS-_~>Qnk0&DA?pS~>9EpiW0xrFK9Hv1@ z@6tph+@I-DTQ-5-orlT|`k{wfr0&VjOcw-31H|vhyrrHu--Sla2aP7M;xnm7@oI_s zlVHCA=IaykRP63<5|lPchH^#>4l~mlq`)cFLtu;{u&;hCFve{Wa2Eki(WA=Qy?n^E zDJhLv`(O)P*umlO1l!|a8amMjvrFpd5s?N>7yDT#68xfP-d9>w%V*L{i|c$d#;$7t zF|Fl|13AEoch~rE2p-r(RgNC!be4jZ0%zV}3+DRh2>>FHlp3XWCCQT6FEu@R>*PFv zF_2MHv@t_o?A6lM{RyzJPotyqgHKw}&B~hT*7A&~vTKKZGjp>Pth6(Q(BYWtnfR8H zjmFlv!#vIC)g?FHW~huTMd?X7BCTXAy3@BJF06*}n)qfZ+{t09_{5Tl4&VZgG+D!% z{Bo4O|FVHRbWE!VR7%_aIRUP6vP!(*^j8(I2vwodk1StuzKl| zcBTKFUr|~q{Va7uca!BpRs_jQ$tKqRWkf$03K$UK`R$2unITxN?WYqWx*UY{g#c61Q zv0Y^mN;GbFv1$f?iG45GvYlYOk(pLAy3jY=zQKF=N*G(Gqj$U#4Vs`otZwQbg>gKk z4lvPIV$X^_U_R9a>BI%>Fp7V*zm&)QNBc}$RkU;%4UG$fJuO-%IgDE7ist^BEg>&J z!_tawPrsN{s=?|qX< zc#SB?ZpX4<-xZXO*G^VMTgMlwkY7}8c-sbAB^@wgKMFVJ9u%Z6TOi&qFU;NmsHkGx z{fK11X*37?2GBT{%s`|Pn1*2R#Tp}f142dXso8Yazy*O-bFkvN+bApvf4)8|u9SPg z)9z$)1)eKQ@{nPLA1SH*8@!2qatEESGiAVsjg1>=25K1bl9MSUl%F;-5w^`-6k)-` z6oOT1-jKOh*uj;$_k_KeLIWxyx9e$_wMV^|^;7jP1f|ytAdYhV&;e8^33w9CiMmIstIOAbm{=P&8FCgaK&IY6qV2;WNQ>MH z1pzJorEM!8P;=SzzKb5Jz91YFlKMYYAfx-1F;Bix<=%}M}W;w5yP!h98Cz3lO%y#3pW%O zEF(4O62;&p!V-W*9O@O^YA46?&*0pbx@|$o)5-MW1ZQCZ(v(+)koyT`VFa2cud^#d z`}@o@9FSmP{#mephf63bfv*x5VKe;F`YbE&5*Il3a2DD!(tlLB@Y}o~ScJBo^<7UB z2eA4zB^FK7f8(RCKx`pZ0H<6~K>n@c62q%Y6g}qwY8LwR!{tq34$>fU>5IXY#1fD` z!P;=PV_SG1!X=X4xoDe|9*NQTKrnAu0lryF%;G07WnqKei{T!}EE4Cbt^fVplEsge z3m7=VaI^Jc^|#w*yN%m#Bu^r@Aq&skn{b@(09IjAv(s~eu;6_-C*MB+ajlTw|Fi=8 zuWeK&rvJ8$%KR_&`Tr|PXa1L-;D4;RnoicX&7?;O`SXSRH#>P5IO{mYq$dP$S;#Zm?#z0{PectA zUM%V*zyN{=DTmMAXp*u^ItSf>(&Y!j$E5+AOLZ6hPQKD8OeI<-YY&Gna4b=d2Wgs; z9`3g*yf%vB;T_?DaI!Mig9G!sCYJvE{Wz_krot%6;1> z*^a&WDs%sORpwRlw0a@m18j5%cSF?2FFYmMNQcgt-W-CWiO7baQI95RvhUhW3g@oNa-R_&@v z7V_zXl(EaUs z7*MQMbKS-i!wd%9r3HdHTUsaOoZ+EX9DqXHFKHRgZpa%WBAk4Y=Jt%LRG@EF z-czDP*TI6XY;o{_3%u<_6||ZlnliJ`=XQ#YekeUTw`Q!2(3gR(oA6>Ig39S~sFzKP z^IdcmSr9582N&i4{><`q7PCYLs;03+BZ@goTkX29m20}6iEHr9_r%krWQ2DS!lov6CTslk;Gr#*0Lm{CQypks zu$EeKSAxHo%Rl74(n4M1_q>s?o=l_Gl;MoMnItg*>WU7Nq>lV4G1F{`yOEW)wWSj& zS{Rz2pWB_byN!QpecIf?FQh1Hl=inDW8Y$ttp!l5da_VD?4{{!B)UH}Wm-9JDA`)xXwu_tXTFMxaseQ98+_s_lpXoaub2KqX zZho!7MYTK?l&8K)AP6@~T3R~KHvx&4MwtDMesQO$i5a8+k zM>w-1!`T`Zt}p-Vy=7rd8Nrx6_Z;-1-|Vg>ib%kT)3#>KD!aK%osl>|?5;1*Qn`&b z%FLmG9{Zu)sCl)LM_>^Z$N+Diio(Uk&2#fCZVLLKne4Pu0K<|qO6#FE~?MH)v?RH&D%7aZl%&?nr!LJxdI5; zsAK)}NmU^Zr7|{QG4A5|+@;IH63Mu;?AcP*a@At;^3<}UDi_Z3TgAFmCu!kT&P#9E zp*{50s@2$yWu&*Dihr!=wKtoyA>Hm)%^mN$kw=Dui)iEM*RlK@@4_O9r|%o}$hG)M z3WF&QjOaQ;F6U4ZbdQ(|FHT|;=&#S?XcZ~9{h^g7hZOW zp^}n06Z^bqhCq?ICyqcu9u3MY{8NvNtFV|&;39l@@NI?kgixJWO-&5io?3RB`zndx`fQVRnMZ-qJoISj}%1YOaO|+CgLr#(5(4D`Wog zg;SX%5Xidkz6Hh5G$@9`0=O%hZ<9*k-%FbzjKi~fd@h>(*;PPq`fMyv`aoA+C0@jb z`~u;5X$80HG~V$JqF|a9iyiyZ9<8sAoQe~oQ8tZeA#zDzb%gh+&&ubB=dCQ&h{!4^ zVild+K7u{@jRIqZ*9UTJ(-xk&HDHv;1#|Eqd6yoZyIe(sU@PCHI&=@e7KExSS2xpN zsj?GWVC_f&4Ztq_F678C?j(4O5Q-x72-#_U_UMFnaVvqxRUHbmA0@~sQk zVNJl5*e^M`^LuikLL8WC@$1LgfE-6|yC4S6K=k=xOyFuM(wdU5@K>Pi-;uEy6{w@f z%&Rd5QE(6j9pq1w-Lu4w@UkFk`vuQ63Z3r59GgagS5dx=iAi_UAX`qnLqs-7Q?67- zXea$yCcKu1P?4Rs0S3@jx_k=FIkf0pTg6r*st7yH7KqqpseWx!SB(rM=~X3%!hi%V zNXj_+Q^Z&uN_vheeShtBuj`a~0u`h2 z$i+{k{=5jn9bqbB35km!oPrrVx`J%pF8=6TQu;J_Wb&BZsfs-Ab0t>OX##7#n`bJ@ z3tMw`#({|pswU@3SC@IN@pLIh&Ofr_PXJXh`I-e69#y%O@jNEo04H8l70TIffy4h} zm@XU`No*$QRZxq}T`OKt@7iFFG>*Nf!_*%%!#uvjpEhH+lQFX+WP6>x(jCk5H4`2y z0CV0p;#8EVPOnN?&M#k=b?8sneX#aqVW1HSdp$_Omp?Q{d^YcQY#HbjMw=y8A3sKg zk6(0p2)qS;uAT;X6Zn`J8%tk+bC)4XEdqi-z>6;HjsZo}$ zl<}$|smlrENxV5i-Pe4^U%SKLqoXKHy+M*QYf`f)H_h>?IaJo4)psG8kFVH?h zhFB=)B2McXkvni;It$f+ab431%3yd+_Vr3Q-tWP9S3TJ3vh94DqPUcnPNegp|NlcL zc0(qJky!BTKOj?rwT^TM8b&Olz{4FHNv$e*`?@a{TgK`h`4AiG&OlC@bd=fZ_>T=L&{OYH{LN75| zf5wtd_JDpgLFyi!!qzmv^O{u5)HjCwL)ybOeRDTtaeY;UGUR-=6dVdfbviAYeH6o@ zf@P~wlE)s4g>Gy86Njcdrv2`CQ*uh%tK@=}F57;Y^P5d~M0-TnC(BM1*Y$iG-NE%e ztMjUT^EP;EI#^YBcH665^*Z>frnM6@i5sp9=e5R5EYW=IQVGuw;ST9u_q^-Ibs_s( zX>0$+s`MDF>AJ1hxpR?7EGTpu(qhPYiG@&1Cq@)OR97k}h4j50jsNV$aG@EZfG31t zw<&kDGX*R!@@71cr77>8f`0bpn2ET5FW%SRN@+rI7A#7F8HrL!0R~k5b9X_gsJc&R zX^9%zO^HyPZ&=#{7nb5afpRAHJukI|H@_%rjGSbODn5f=4NVq8kHY(axxfv*ch_Ky z8+nG4!Kj;E4(2)2F@UUxkTT?~uowZLPm;38gXSt-l=*<0*EE)!Q3(GU zG4P6c)Ictf9tC4VlgB8U|6PrN`F>be%pMV4qgCC5Y!Jb_3C4_>mc||vjS7P$jZpA$ z{yR?>UkhShbXdw>w?H`;5S;sz)|LJmnd9hu|w@j*i4Zh_{SCcO|CZ z-tNP(KfaUk=tTKe7GzXX+rzGF?)0G#(SYNQZZE9FlP`(?-OWzuH#+T*8z2r{Fh-Ft zEqe~+9TGd77=zG{mK|5(0R^lbxF16n=%_bvo_JAgnbSdr4?~u3w=d5(!G|_iD%s7U z>;#7UMPpi#?d|~Jn+$_{91oAQlX#0`{#V2!5?Nv7%C%#uvx6TG4+_CZFiPq^MW1;e zO5o!xWRM-g+&Xyks988bylAuSFTNmo3$sscufjCD~FP%F^&{ z#S7zI>&_o0$Z1UE$_^iEutteWouIbVBzS0%+(8Vr)Yc6)p5?UWm)htrZ$#!U4;khY zDWVEjcjsWGe+ch-)@fEce|NReuH&|}KIP2THArQUHhLd{k5pYj;=H ztFd(wJV02Ierz*!1hw$|a*Fp##X8$hmY}Usv}FAAK$MQyJ){8^R{2zOjH^>wbWps= z8t>!Ld6TC8&Zy2@&Y14pA%*9%=x|(xnRcSjJIq!WDIZ zd1Yq-`FP>dU5nn8D&-RSTh?4~}9Nm9`7 zc~lwgMy=HH0^9s=X{Hh73^2AW*R-)7ugbM?Ry?*x0Pp-Aj4V(kd^$&0Tyw5u@ z;@oc5d76U!)yNsvHbBe4S(LpGPG!*HXsMf(I$^!#bP+3+$s0FvL$sOZ6Aa8+(gOGi zjtL;lhd9?658+}q_A+j(4vaM@rod|yHwvp-ma)OHsoh z6cb#W1a<@@*o?c#Gq~vufX&D+<=g!6%Zi93(h9TP+9^uHqfr1|7=!=S!Dz20*leY{ zDi!2di%#Khq+~+zuqbGdLl@^Me_v>~5v3KnU0Gpl5#!y;f`7?~1~Oz14ghFQR4rGsCGbG`u>vUeJ$5#5E>r5h$lAXEK{x{Wo#E`GY1Pj zcJaku$IcxJZ}61vq9*4doYYys3K$l<4)?Ah>E?|K_(zzG@u~+wd_Tx&BpQq36Zn?` zQb$aplsHA1QBQ@7>yz6pLv$Q$-}4;x%XG>Ov3#U+Z6*wAAz9qKYQ_>cTL6CqK0EVC8jeR@X%}+5JeWOAd!zGXYP|k?GdFiqqc(D8e2Ll8|EL21yN#-wN zGK2|#BDZOGI)GAAw<4j0Y$wuP6G)vUoZy2B5ZE!J(SwUedS2QUB{SGgZ7=8a1y@+3g2>mE z&ZC0|$qoo8Kbk~qR8w><6mCiu@+Y5kstMg-@c`n66|;nzH&2KOw&h-v&=%}P$$W-J z(V77SbY%;HOrYQcLn_0lAj)aEbl%2EC!^?HofvPE6tD(iXUsGKyL%3cQ8FCTV<~JF9XYH1<+2H zQVme@SBT;{g!9)sa4j?u1JFne%XK#`ken0A3xCf&%FSFmdsXljtqI4v+y=4x%FpPY zAa97?_t{&?3o@w&3jzB9XDFvnwfqPOXBX+gB<8u<%Llxwx}95% zg z?YDFDeGAzEuj`4<$)}#e<0h^uG!?7$dW>rOJj}^wc!!=4)Pc|OpNcGLeS!H%GF^+k zjpW%)u$&`#>0+WNUviv5Fq_Amd(4=}^pH?{K@lWGqU^$>c&xOOg}n4vNE+n$d(|Qb zOj-pFmF4~KZUo+l>7Gsg4B(y<2jIUt&61CHmz)ZMFaBvh?0hY86UZ z)y`%A6ie&AghT<8BX-S!%!Tg|rlAGLoQaJd-$X%9$fv#XtZ7+_jB@Ml;fyG=CI12Q z69ysrhotP^iPpceFD53o|K_B``cH?k|7KDDkB70*YU?(eVrYMpGL$*GB0$DwI@qZ| zTsr&KhNvPVprJrO;`x>m<8j1e>fZIft`p4@B~(fU%>)epNiOFboz@iDAhamCpT*A{ zE|S@hkga7%V%PBhV{i^Fs-o-=8LRs0o9ZQ@rk8NCdgPxK-G8#>i@8fCPeiPNs-!3r zbr?)|7Fv$Y<|bPsQ!5JWHJzR(P_$zFgZC3Jb{wF8Xr7=0Tf1v? z_#*;4^J|P0J(!gwG(6bZXC*W#eb+q2vBWCh+Czm$TJ^Yt=&2}6^_LsHZi?bPhhl-B ztT~5o#Tf6H^o8$*?Nf)x>#WiDDr6zsdSm9Jp&)NP+q!hhFE67eg29TK6$B!)eB49+ zi9biS_Tj$1==}~t^GG9s=>n(;zt_g44TL3 z8ozUx?I#E?`=n5kNNrHS3?=y#Pc>@sXA9@mOsI3$X1vX`ErAzlN#EEq@YX|pfFNAV=%PlK zJ^l=(q-}DsNirG~tXM{Add!@L zR+%xZE|hDs>V~U2VtAA1D6m42X@QFm4}@=j`Ks2=?!RUklVXiHxp51C8OU%S!I0Cw zVY9#3ZYf0_6{A!3*bd%O!BL(9baP_9xd_--cSNUI3*u$%)to*EPuf&_5{^#9*6;CC zuk)2Z6DzDKBJTl@$w{DRv}g9zQm}0>xBO8dN?H_3cJaJLSK|Vv?J9eMoyS&6dH`SF z(F7n-fLIAl>xlnuTWr^{u45NKI9k`&_eH4A%IF8~Lr}`rqQ}Zw)@Hs%|GE;q1dafg z?EQkM>U)%=j?+e+1@{#Ib^4SVet2`ZU(JbNenH$$d}kFbh&CwO)-O@=7dBbEV^Im! zXU6T}4aFk#w!f+fmm=35EP}%yW$%@$P-o}lF#oVL7cM#Oc+A#(H&l5yaB;=2VqVMl zgx-I1dz=_WO7u}bH;S3&7IbM2d3*CnUrpZK%7^|n=hE>R(B{SqSFd!T_ga^q&_H&K zBW>m{g4JU9%W11RdHB9ktWHp_x^)2Tx7V5DBt0^D0GElwX#XJLtep?bMsck^Mnx?> z87xIdvV@@+PE1hT`@1-N@xAId5It-b-!IjzGD8u^9Yu;x;0?WJa7rmyf z!>>6nPbwF0(Z=>?=^1m~VR8u6iX%RxcW!n2*2P4I=54S1Mf{#Trd<+@qtza5`T9bm z)pC4u^^kUN76;Yo$USKEP74=r_w~)i79&oO`aLhr5;}li=d)6OSSPe4acPA%6=Z#! zoQ94^H>Ud;>}W^EdF@>bBE-%y+`|lU;F;6OTgk(TbdmhIQ@Xe~EtBXCNfD+z!VH6J zaNb7qOkj~laL+NAC5j3Qga_J)aRWud6GB=-LhWa}iRB3Fe^R4&SPxU25G=%( zT*C0dkxavm7`pT&$XUfOY!&QaY{E;BF-Nkq!Sho77MwP%5nT(?h(8aFTT6e;QJ_IJ zX0!+sH(46^!dP5{t2a|(>6`WD!0{D=X!cmd)8B}V5}*(Uzk@*@#yG)PMAY&By9F6U zR$Z`%v0zLp1;$>B^2cy4*-2iOU1)Rh1ZPE7u+eq(o#AI5pwn8BH%fSw!#Fgw%< zcAMq^hb*U!Qx0F5Mwv?Hp2dAzMG9chcKqj`_b$`lkN1T`M)+YjPx8F|Bn({A1{&UlQdLx$8>n};s_Fn5b(*AVF;G*D6#Vvd?p;hCu*Fn)Sji zDcT{%W#rN{jsk*np?yvt8$^iYRYu4(7X}`xL3&%K2wEh(EhL;MBCTPSzfKu8DbYXi zeK`2BzE|%cCTcKtJQmOq5Vn^Vg_F>ZJ2!dYYf>+1DF^oyZdYu|EAobyc+MD~<<6P- zEN!RH3zKzN<`<1+T$GT*d@SI{%+IYhL;d@*B8#echlBSlJ3qCa)+BsMx?yI*8mpEP z6)(I&N|WJb$Xzr4acZ+Fo?=(1dr=Rs*tvwN(L`#~)gi3nL>(mfGm|{b1-n|SQdI1c z5U#JM3hOFf1n6^UUDYizJg~%@zH9fXqrxU)HK}S8C{1c_(y1qia~n;b6-1+_oyns} zo||k<`MjgWpR<2~6fd2Xc=3KNN-DaTL6ai{-{uxExh%rfyzt<}Z@MZ2X5s@KwGMXk zytMKhx~0q_m0-hGp)c#My{7TcWs@44tmksF5k1wYh?w&iZeS{ESNG6HN?UCO7OgKU zny`9V%%fl3=25xGn)QnNb{1ry$nn@2??B!$#Y{c#X@?_{AiB6C!!W0)(67lIG34{= z4mIp%>BvQ*AB7XoA|+-Pq2=>+Ad;F9D+t2Z3DK@n{2G{-dgakUYs-RR)&mvP3JJrp zLhcmf)PwDpvdIJ8zVBD0J;@}J-R1(E^;}`vEJMhhDAqGoSgE zI`6%NUI(3(o>@T0-9sCh0x}QM?4&(N|6JP6#(NwR+DM>G9zXpj7Oa-S-xu2gn^mTO z8N^NFfz0H99fCorILSx?-s9){7zf!Kv!Gdq0=rq;S_FgAIM3+yJ-(auPZt0eqiSnA zpH0qb^u4h2Z|umqpgj3Y-&a9GVC;d{6yI3Zs1^dLi3Clyj@xuwJfTF^Dy%YSrUQbp z$THV26)}}gzMRxjVizyy3)5aMp22nnutA+m`dJY0!lp!ABwRMMbFI=(~uXJ$m;(Lm_IWxHU#P@s#{Nw_R{6_fTty;b^^q3RexDAW^ zN+f|;fg|clun)H$=3g<>F5aKZhz?_#9DEyb=lFCyTxwZjfVndoG}KsP@GNWJUCF?z z_bWeH7WxeRUpj_I{pWu}`~HCc8@}o6Jr6~5N&JbLU}u2cZ&`P7`14p%;fTb@Wf8S? zB2=Gn`q*u{2a836uW2W<{rjC*j2Gv@OSri&U!Q>vMDKsO+xGuP421Xb^KQguvmdp0Al)`!%;cFvv2H9D3NE_p;C+6s zeWV76a3C>e6kkl2A%hGX28wL#G(~?O5~4`Yoe07`C|o#oL(%$_W`9 zh5UUJtBUTcUpq^Cs+yK9LDO`S4)fjex=0eiWVvR*v0rPN`X_LBcbsRis06u0hG&^* ziIb`6N|ly{Ra_b8A}F_;8yd6})6d(OJX%rQBb zGhjWka{PdNgEeVQ4H8v^()R^H3{iw^+-)69J*_BR>Qzvg=iM3tRDAP{JxVF1p*(?J zLCo~%pa-S|%1>`Zy<9Mx(&xnFko}O&e`il zZ{n+tDUaLJ5f31XLMrLx%|jdrmkM~?^H=<UQ-*2H8W+FU{ZWI`74m4VU+w2}Stsjf9>L9X{_E zb<&#E^{g;Ht$z;B&$5}N5~#5SD3l6oO^wc0JDP!bu<{FGY;@uPZ+=HJ>Zoel4u^@2 z>!%?@0@(KVkuOlk*E>=Pr%4G-OcraVjfL%Uwbv)5JF<9Vlxrafv#T1R2oF9Y(1`=3 z4kN;kGNA{0;8dD|?J?O(e)Oj*^Ocj(dzGaGl7iI%%#L^qa|+g3X_n&kpHE(-EFp|! z?50?^-_ZCZiF*44CjQ+%Z`V<|{Jm1Oe(0^d)%b0$*l>bI)FBoT$*UwhewM-rr(8ke zYw%{G$Xnk7sa=*v$bC9JF~Uv2)F%CAuGxGH1+LgdM#fC_JWoETmPsfbQsnT8mfWh{$2Vy&eN zHmTlSc6pNOxYcPgOS`u-2k!w+?a#p}I?NCKQqKc`jtU~xIo$)izfe3wSp(dZ?Y+(k z2P@wFWzQeBUf;L-yZL+I;s1}ZZw!vLUD}OpCo8sX+qP}nSg~!}c2>Be72CFLCnxW_ zzkR-4b>6D8tL8`7Ju}br%u{pUS9f21wQgE#Wu3VyUB`v#T+_$c8b8(Oe$Y{F#e`I= zzl=O?@5Iwbg(xWRZyBB;SOrKnN`JvLWWWOU4)qoefMI!G>H=QKXaSbnv)yGSnv`@D z3*+8L%VAb6kh-|rUKU;;nz+C%6Ul_4_XI{@8xtt*PS|i0zf2GL)DEoOsdA^xnrA{K z9mUsT@&)#XGGHfD8*xTvF=Jp}2dA{4uwxyRJXoXDCBL*8NeSY7aH}so?n<$#0<3!P zU)F$8HY*XP8?7=ITFz6PW-Yq^MvUG_wi^ks`m?6HFtzOjsNW zB3mUcyG-Y7bFJq;2GtU={6R}8VUQF$W0i5ZSeGl!71&Xgw_;5~l?mgfBF@8L|RXYAd)NXf}>eprO5U5{& zjlcA0X&>1gvf%MUIG`r(mP`8K>DQjYeg?pGz%Gy~-J2KvPZS^$ai8ks_)qTC1fI7^ z-L4FdH+?Z(qG=lWnky`z_R3F{*3WXr=@VUe=d|$+ z+Dy0NT7Y%;1fE@wq02Q!JzfQWrw!92MX!MhS4$Esf8a4htEZ#WsXwnDYJmnVgBmYs>;kQ|GH7iIDNr!t$>vq>l|H_u zr$cL=ZZ)jfiN0$_##bCT8t+bE|DFpgOlh>kz(=$_qQ-x1I6qd^Ef*0z#yk%Aqf-S}O< zOS}ZunEW~d-#Rp8c<~6hMQcRNXpnS;-hp}A6F4a|mydWPp2;gB=I0>6 zV>V%wH18C;OLD*D7Xih(j!u~0x(FH|vKxTgAZK{{jVH-{DXSk^I0_jqwt-_8T4+E< zj0<92*HMfUn}&x7E9og$FadZdwy |PyyG{wM2h>Nl}^TU;U)kBz>+=Aiz@}ni5qWPT)8Q6zOQ)VuEn*f#EAkc`P+mn z|0ZWP-&`K45d6Yj?nHh+Icgo!oV@}Y;xMo83!o7;SM495&S=PaCS=P1Te{-ztnV&HCWg<}5G*)gCq)BMiaPg6l;z0qi048pIt-DD! zm;eAXik4bOM@g)PMW^mBoO64<`pC&(zFhoLGe;K26G~0{M&>|z7_{kkQQVjbTv$D_ zFebuXG!YKkh_oTU9^|gCot}L%I&!j9ytxh%Brr(`KcBw)-HVa!t_@kjbEb5=!_mJW z$%x&5E8hfRNtG-r>|qQIZHj0QC|Lv-jEdCGmP}YStgz6i=eF3ith5yAm=#seHF$um z_-4~B;cJ_ESfeKY5y3NrTcxg7Xd$FX-=HqoZ>%0AExchih=Rh=>1huS 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 z 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

nnhx)NeqGL`3Gkd*l~FB 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

<59R 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 z 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

M{2|5UBy9X)=ivBldHIm`9 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%0A9y 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�Zy)`^XUkNRIe<9rhtauHT;d{o<>&yUUbhue_9sT&H3 zP#L>w%Ia7}(w>^vQ>9ep$?`yuV1A*-CmmW>9t5Mw^fZ7Z|2e@ zIY5{iNE$brKM!U%ZN^R~IlyEZDjMSmt9ND6_z00HW16BHQ=*OWeX%c>+1JV%w`UiZ z!AUG1M(ez1G!sOctqr}6r6Pv~&i0fy?C9_|-3OK`9s1KSNjtu%yWvRgkR&koDLNJsr+_vjs!t$@1H8;~Eib=&;UJX6TqEk@{OzCL!Sh|MTFs2QToXPU*Rt@@bGyI&h~Q8g zEpZH0JEC&^P!h;J$Ae>L8-l#y)J)1ogL1RKj=x_wwJxr4{Jrpjov1iwgz+~_0!VLm zKl;IRuF@}sM9+3eHAT6lZ8sFw`!Y&l7FW72lFJduhVWgX4XFuj1t^K-r#C-i3uJM- zaztdzz^y%a8tF44d8%}!W`P^N0+N2;rwr1xf2 z=8!0YX$}cYJm-j&9vl+=8%l_$j}|TX^NSogsnEO&G>r>avux2z=J%r&)RhLa^hHAg z%+L!SmVvGklJHt6cGvXla8+Ycl0!(5ofW|QX%z&E2$TT}$H01QT%=-ZIEDy|75B!i z%C2IT0sf6I@V8iy<-heoKtsA+q6>S37c+MykKNnS~ zV{m7*G+%64s5m^M;QGuOhCvA!a$!8R^CnF2ue+5a8bxal+ZDfaZ4Y#sUO%)>_`XgR zh{OBc@w^{99Ka9bPRpzH_q~4aW{Mg)1~aPY-E21_I$^;z)MG zo|9(-9h~>JB$~fg1)i-~6%Z;tR4Q?b#k*6sySiv4s55u+FZA_ItvC86jM}eJ@0;#4 zl8rGIacB(N`BCz7`;*FZpFpYBQV_;xW8^D(0crm6pn+>TqXfzuddAd^=Z5YpoI;_a ziI+)&SG;uhtCrZH)44qMzc{KN3@XvllPik0S;}{!_QJjKscdluxsUf=^Au9#mB2ng z?aVAk@RM>X87k2run-6cO%C`0#!bA&z!exxIcoD*wM~9_z7D%ffaS3`&Tc@36;@Jd zaBz&F0{pw92ONt##d|a2pW+L;=opHBaq3IKXWY}I2}ESFsFf(L0xkhLNO@h(8zVqY ziaBsxu-I|&EBKB&6O$rFjsxnVK{&^Va!IWOL{bSBon*sULJcMK2IS=3h4nn)pkS5} z(()gS1PFaLg@EPSFFTP@_MCa!U(}V*fkfktFT+)wdIqdiU?3?j$So4mTY~a(B-9<) zSv?emnYFzKa_Q3&P@)C7N_g`rrr%+4MNF}XPrs}ZPVVaq!{$g4vHJSEv12c4j=x&> zp#r^tQm$OvrdUsXaH86a?ea;d^UIoMfTZ(Zq-Y0yO;*b-z6ou1d_$xtWkhDr>veGhJB0KHVW1Yx z8B9rchlE8e6@SGI94|`uqar;8+LZAkNf@}fT0zXXDROWPKVDsr(ikQ|yq0*Zu*NZm z3ZI(EZ*yGj+$jK#CPBfeltkC96-h_T$TG~kMGYbcfmmmd6)l0oh<36ihr9_7x9>e? zo@4{)+7h!v-E&0r9=fkmSf|d0*=o_3DETmvpgb^&9k~#ee~^}k1rC<6MbwS=W0JJH z_37N2Z-?qvp4e_$ug_L=t`XM1iatnacMOvy@kps@yBZ^oEqX-lZe0y;^$hS&3uqa|`hnMyw#U542;QPZgNYG7rwFZP~aOU5( z?5OqS);H*;ISd%wQ4k5*Uo^}0$O1?7&d-DDc@W%cIIccvU7EYcRdGIlc$_PNsy=zQGi4j1q z0QzSz_tyOP!&f~Zv*roJ|R;vl(2c|w?og*908_9g-sy&Ph$Kt^8 zS;H(CSqgsBF+87>Zfw?(F3A4Q|IxAvzChtFzso|TMC93s1`-%cMnR5(y9mtPl7mUq zIa~Q}v)-0#N%|IX@zoHTxTbWq3@}G@te&~|&}Q2HN#Susm^N_;U)1o%A!4P#aDn%M zq2ES;IJe=L&sEc9HyEEGCTD1P*Ak?pyLb^4B?=;61nS)%mThZdpJR!Ar#Z8u+vQRl z_soH^oHOkVb4&RrCkOVU%}3YP0cVz+vH0J7jic7Vmzd^rB4?@d9YCd)QRTz$oBhdm z^3s~E+b#!8JDd;B)1cY7V~MzICC0$Nua?IlW&<`)UmVBWXId_dniy|H@2nHFU;G;n z<>YWIUXxe%|L{WPk1h7cU*CU5!3BlC-0d=6Vs@3nm^b6Q>lwMrRg(@7M74jU)B#NS z{YkPFZq-0NH{mOmqk&4?`J1JMn{J(JzhG9fUc_Lbi*pz#RY>ka(uM_o!2V{@yO9ER z9xDRApj-qiKzQE8bi}r1#Ze5$G=Rgb_;ekz;vy&mC*No9}-W?6$9v zdaG#0$-|pYPmZhr=O6K9^;}W?!9p@KEjo(=OB`0XOO2dC23fi+X3`)Q6(!;}ZpA2#ps*#Wf(uIjFnm%j78h7~_iJN1ox5;@bNOxRO;D zMgJ{uNpmIvbDjS+wreJgBh1X9B1m52r$DlZ4%F@Q(!9hZNVpo=IW%hrR6#;*sC7HNlKG(OyCWK(6g#A z{qx!cjBTuMUsMkrA#3zO>yvJ=AQu|ANg`@OD6PX&pHv5vRw`E=B+&dp2LrBUhS`xI zkw`j1H(SDK_S-&1oMZ<2!79@;4$sb>6LL+86+@+R*J;SY-@o%O6_zFS+ER~c%IZK50NUOt|8&FI#gy6P+%{ zO$;-vjhYB*C*X(21PU{pg&YRw@d}1aFq*?JfpM6(!1JOKdl&Sipf&xlqVP2htylLL zueG8PeTtv~r^^oFjmg?%Q|h+{r=y;@x&~XQ!G*I8A8>7T&sa*Er*BQ^hh+l&uu)Gi z(zz`fX|&I7)OZf1xu;~n#Std7q4w2pDk+)BeM>G17WX(@x)|U7O~py$?`jc2pZ0w+ z@d+7XxY*q|XL2~_umjca@YorL>S5LgaKs2BO=xlob-Z0LN_XMn$D9@2MPxVBlR}@( zXNUA(eNxK@FiGukm`M`93yj_YHYx0@gtsK5XPVSer3G%LRW2IXKiB%If2bo*5 zE7R8f$vPY-Q3!8A1Rm_=Y#-DZ1>y1z=8J83!QeeId27 zw`b_=nvaph$4Oqs{kW+xDsaLhPA4O|Gjw{!Pkdhii*fh0ixXvqaWh5PeXp@3(#F>i zrHmvL&hObY@*yAcu7vN}RZ}??3ESjOFi}_@zIw$LD5g$O2>o#`{DzISCp)pgLnMOr zB6o2)G^nRYawT;nO~?y=w|{nZ!TZTAB98%;soH4{BSd0|v4sZ*=TunHx2)kh&vqoH zWp%#dcAI6cZp;nZYoNYMs%c6+!-uC6hPQ3p%1&s{UG5(VDZC{+y?D7`=^0JTE*|OY z6yzdk$Gt8ZeND1#BCiY85;LgNw3hjkjPK>H(2m+j!99b928~`NfiNYm={NS4Yp7^X zWfHYkS0SV_xao4Gl9_eI3eFA&I|&pdYOF`+;46TS8(loIbdooTw5rFmMIZLt=*76@ z>G$O2ZV|XO>)?2fl!T17=6>R?Q$ipUV9EqWnJB35ou~R9bF&5I)rg-u>tS<0&ZJ5+ zCvb$tSZ2c-fB&X_?GHH4i7e~S+@xNDI5$L^G5Aym`D}1!I3xh6uHp`tJ4+sPZ&vSv z!8ECimrJt~Vxn_i*Sp3YAJh*ldc9MpM~XN-aOj%}HxzoPhdbYSEm-o$0!o0x+@miBa>vlnWb6!-q{m=l`W{{Noa3mE9-$F7-SOl z(W2OAwuG0_J+&f|N0Kvc12Qh0aoZB+9kSUThO50BwOjIBKaW*tI=CNP=eQ=~Pb??dE?^wi8 zzP<}ACdg#qPqZsWb~ebE?|{Y_!=2EhzERT1VnZ*F0#?Hkql60s*`YZ7B5tx_zrxeR0$I@qE(210PQ{ zm`5Wa%k(|(f~ZHIp#+y4r41{b~nt_ zd$3kU>r*5|zO3o&yQ=cC;o%5{=Dg zjDyuCBA2@XkE*!$!%{fCV8xjLigLZU?@x~UEFw@jt!!ltZk9>lDcoE#A8~2__y##= zyR@QlOYrI8gLRz6H2wf%x2F?tCTz>@aRBdL(8B}*#K1A(ZRma}LuBW@F_6aD(W?bI zk>EWxFjh8aT^5twyoi27WP(TQT5wb#PU=RI$nCUWhnVbje1!JaFX~MF`ly$DJ#zud zy3N08B9C8pT6O(ghs7vKzvZ|u2GIT-C9jV2W$TdOqiLG($MX9355q*FK8f+x+0uer zxma)1@96_RAsZdC`Q6F+wL#TnQ+;IaIw zvgP_aPtg6K{IT31`3_x%ja}S+`Q~6yD`H+{UhzSX6ppHegq8|)kK=CqWmkEPIS@eLg;n>_n0mHMie!{3yk$g zNAWX0_ZWy`)#r2EpZD_m?B5M0!d4M;Emb<3XuI8hGV7=cje(8UueYUgV^R9UcF5M& zt;xWu6q)hL;jx9oyi8QJr4%!edhmaTKd(`3MB2G9yT8kC3C?P6Q}YQZ=jcTfjebjA z>muU^Dm;R8L@`BlxPD#@yQ$mTo>NS6HgCOp-Z}SS95o!hxNZxt9*o5{e%D8kW|Owa z!Md@$Ey3JpaN$n?Le`BoM!Xr$Sozu4t!c+_$%^IV5O+YL8kQVro)Rll?FO)fBpbS7 zzeesh7VXmP9Tw3W+E$iuk|v%Gas*hAtTK?f$(cheN_H4VJ@dfkYKA&Z)OHmUC{vg( zr$O77I|7v@T3OPL;1m)lQ=LX}Y(6vpJhjMB{FW6YUrEe)B)mP3P?qRAjD78aDOm4n zkf7MX%Oh#n2SNf#8QIIO9d*oabR{Pr)3}S`A(nGyt8$dL;fm#NQCQSOIrh`*g1ZGG z-7`0ikP1V=l1$TF3S|dF31z@S*{CY!I?VuN2~;&B+TqYVx-u2UItcDT)Et5ZPh-eZ z#q}wA8599M>zP$xlR{G!e3yhE`SVf{>F7hUoHDs3)=t~1^+G^-x6o<- z74i%)O3-Ass?HTk7~dhG`;8}ZP5_gZ<8R;#I-rDq7k~T@Fp80$?O);#j(=zA#_=Cn zx(%w0+wZfYZk|)sfGE*`$N`N^nN!)wlp;k}6cm;5Kx^h%O`XgVoIbhoGM#Rjc$0tw zP>jKoBrYl^uP3*(v{XCbeWluxLco8wZI54`oVSuRPm0H^E3l6S9t@c8rjR*tXzt$t z@ipgXixEo3T`k*7b?NYHj@j0!N6&@(9R%HGNEvh*B~dr!!#`LtPAgBf&~tq5wyz%G z9qd`Tv-F>;lUE_D44Hmwe^?hpMkmpz61g*E>zai7fCA$nGM1o|eW^PP+oRcd<%}^z zni3~VYrQFvvYSfI**C8(7pzo{luZPf1RXypHBw77Qo2|_YH6@37~1m(EGOz~x=Rfy z(igUfU(;QUSyAVbEQirPJH5ogb(y)VF^3+u6lLe3mWn9i*k}~#&k5)w7kuz(gHTMj zxICokBCFI>w7+k;bJC^Pl_a|?YqXH2jzrwsnnz zDDD^Lb-G1ibu3YzpBZXhx}47RO@DHNiILZ(M55|>L2RY&M0#VY2TW)^6V??_NZB)F z%XE{>OEH$)oaK2F^RXI#lGJn5OPa66JP%%Vt<(^}@)`+%9hg_e_|f*-Q+JIHZMlu< z>ra6qh0*%iR3i9WXe}LFet9qNJr_%B4RQ3TTU|+sPK_Ju*yyXZ60$|}A7c(B58g$2 zR_wa|9f@z!{NmEkhj9R!!GX?n%)a#7mP8lB8~wcM>SbE@nvW}L+f?bM3D=RbDQhAS z(aF=^!H2Pxh5)b~99bp3pI|4je*+lHqc*!;*)gg0lNRE2$Vp`QDvb6+m?~sfpK=A* zRbPV(NktQ{S7~TjO%T?2=5`#ZN82iXg9MUfLh;2DQch0ys+B}k>>EQT$S`3vRU{;8 zR`Ex83KH)RjT9ln<_8o4F>SrAy)aM|w6hr8{jFBZoe@zOOFeC;<7^_mEq7$ZoBA08 zsa!1@n2{Nu%^2>B?&`q$Zg)2kTT2h9euLAyto;RwKjA^ApK{-0+1I;QWnmlg9B^|Q zvqQWgB3Z7}PIjpSNglwK1e^k}q#aV6yVnGb;?_dta!~*BE6cs4ylK$1-3P3&Dq6VS z7lj;4nPsNY^8AyOJF4SgE%fWw>)E@7yIV3Zw+@aDI~21a3t?QAS@~E%tjuUu?e5b? zW$Al8*qa*V>^oP29x6tT?JGOyS(=mo0{wwMKCTVC(+Bn;t{f?c53U-TKAB9PRzGom z`ZumX6#|t9IaRoMzMWrFGJHWOu`+sDuo6p*J^mp7o!PLudidOxWzg3zq5&V+F+{8) z?dp#Y9adH_BshFe=rwm33?sz+UqP194YQ}jSX|(A6*=|yRvE`Rfra-}GiDWVjf}5f zZle^^JY-qP+T`q^x`4%v^tC%j6#H?(3t_y61Qu?zhGRHtuXsh=IWVnZtmpltVU!)z;)$Cfnn&1C_btZeme@r`R{CsmrXh3+I297*!suWxfYZn=5Hav8 zA$bnPg;X-F+)y?sKrRMRv#l`9%OZoR`Rb+^+Q9(5xW3C6CCHGsPJckRQZd3fTk30R zgGCA&N!6{#+v7Yb{Meo>AJ*}xK%6CF$BxoIIT;!KvdHs)rw>y?7bJQ5g{Ykp$iqyJ z$UM{sh?(0wBCtpuv1$3xd-FkE3FdVkhGVRA-7E&xPD3%FJV6_^v^KebgymNYvpOzk z1)%|#60~VlBLmZv8{Z^? ztst7M{`XQ(>u>U~56Qj`mq5 zVB!C?TO?_g63v5m;~YE-)b<{v`j`wKug_k6jSoL1=^9dmu55KCd}Dtf9$4AX;?|OW zd0iY_H+!OE#C{@ILN^%tZ6}TpJrG^kCCI9%^VS4JXk`NPlg6>+Xm#)Kz|L($*7` zByOF8p*td3ca6;N+NfSy&mvMZ!5AL}>1{xf-zpOw%2YMM>nW&T-Cm~HKxvb>F)LdO zI3`f!q#qaq!#O6XP_R-dL!x*M*Wn?Pt(G_>tYr-mTck-Y7Y`GLq+FWyhqN$Y={Q*`XvuSCpR3sqZ#Bk6Uhz*@-*JR`DP%0>-P+MY46M)Sy;ftahFt zjEOvn@=Muzwft1+8d}F!hFs#bL0VZJuGXwc86%*dwU0tRIewK$ypxJGn?NOp60?*? zfm$ArMmA#nzFV9avRof_pt)yH&$+&RqZ8+U<57kC)Nn^&32-%18Za z8g$oMWD|FYnvDarE4!pQA(Ug(f00+kle$BO4XPzrtI`tlg(k57I?NH$uW@kO+LGqH zL|b-T3RQs^Vf9SrJUrp}1L!XF5J8h9^+vE;d0;IfjvlAcPobFW!XHSMIgZRL%|y8* z@Is!QzE^con34yK&2FzsD8>1y=XDs+3jpfa)K~+Nd{SQhO9JHU?{c~ItJg#GU)I2| z&3ps$Pl!|T$OTV_9Qjt_?c%@n-SzJPqde=dlgVB$TI-p-jJ(cf!fDd)Gn<#JT7rGX z{9MQx)ixwFDlXVN!oM-?WGwNU4jJH|8`7M@nepPB$_p$63bU&t0V_NS6 zg`Nt4*efqF525h~g0|}=-`cBC-^9ORC?ZT($4cxXXcNwMZp6ZaHf9&;h}!?5YouUB z0Sx|4jyS6_Wyd)3JtG=O3WL@tzBV$PJ*`n(Lwd+a4nga}3#!A?Eq& zHQnJ2R2pR4qB)W)Wy`vh+>>dYczhry)l&6$B|fqAWzA&2EYeXOYUsJ9{39pm-&>K8 z(s4%z3K(Xe;^i$rC|aBA8g@rUPBP<=EpeQnJ@MPZpx$NuJ>Iz`8zQ} z{*~C;d4J1Ya}5B?y2;w>GAg*)zIzr0JU1fSF~6%^=ZTm@KK`Y(=nZ?;kNiY~lq9|@ zOFeuyoxEQQ-oxg+A5=I5(HHc)K+j57`Osbf3l%v}$pjIVHyNYfr?Z$hcTu)%7j+X^ zvt2|9Pkil;#u{29?yywG%`N27+O5g*e$i1BKeQ?UrMlZgFdPFGZII650rxbCqHeO9 ze26HF?z3FPa9Zs1O~A8cZ}kvf9uQ|+@z$y}&4*X9cV9rSQL(l_XT~JsUE~bW789L| zaDnb)oUqUNcf}ZZIlqY7IvI*HRIDMG6fPbBk8nq>lg0_K${%N~YG|#L_oS-C?sYX2 z_c8Iw*L4gxBWZMXx@_$^qF7ys413~A!4&vSk6POC?Y2ryO#%P3?g|?laM(@Z%Znea z;o!!6j2E)D>XjOU(_Hg&2DBXkbh(~*34X-%cV>kK#*5!P;1EO8x=4Ncp^Fat}Q+jb7?$(O%1MC1cA2oNgGFqZMW zxNX+Uc7`cebg}VKeBHbIu<~u<0L=ga9iksK>ugBdHqfuep<`%S@g+!);*j{_WO_sUu z^1R~X(UcFOn$o&=L|xkp%!kw_RoqwDFO+-fr19h7lE`0BQYxG#+11qf=eFvplS(8A zs%h!6>cX2Z>fRb?m%15qhTdG_GL1d^bx~Nd z@^yPwt?r0$75W&7B28R&GoWCGNj~!njp32bh@Q?4Do=%rQUOIwg>xM!8F60ZVvCSE zIz*&ykE2eJ%{du3jvR&lyDV@gY}vy1yul@KCmkjnvSaOFlPW3!8$W)>Gnma29~W{! z;XZ!qD3*KA3tBuvlYbg=oE9ZP6MqtlBqTFj5HxC% z$?kKNA}UT3UxyPo#ZzRcI3DoF11i%)`kz_=ZOt&gf6RfBB+{Y;k8$T2%rV!f$5qzt zG}DW0<>b?JC+fVqXPZ_n2Mxy@{Wcd_L3}RMW#wl&`a*+tqH)F{CFk4z{&%6JSHkCF zgHOP`4+ijE{mlXG=x1!iIzQtTSdW^~lI`GrM&^WHcMjN~FRMU0ozBesc`wD~z^g;_ zY03iQY8E@!f}^xWsx(5f$z<#BKgEP|a*L9mO8QY;;xQhhEW$=<9;}0zj(<9~7K`Lbm+aM{*Du~6m2-M^jx{6(SphKVI1tQ3?!0@jZ`G;z zewbg*c&lJlMIlGp9!1fz(;ft1#`A^yTN}|=9jDuxIUqw$P~Fk*`oe?~sk~1+P!a|Qy9x35 z&cm;H66tg`%8iuCWfS&`m}j~a^UQ?AfN};m97KZZS*2tYlyWWUv{0ae_GZh8!@zOG z98yy1CH`Rxb73Zg zVf<+YfYQTJS{G{>RE1NW*AG@^Y)^wN;_EcWB8_A99EJ+~b9pnx>^wl#m<_tQk?~<<(?@T?$eGeCqa)I)?iM z#!O9Nb;;D3IVFN}CK*pBWVUGzs9 z?GH2A1eH?v*>_Hb;Yl3nM(&r+2`(#%&dV>Mq$*IPwKzECOLjDi#N=TS?-Ev)BHDJ; zxg%Fpz{k>l<`rj8v?xfO1I8BIgBGwkHy@T(wp ze@-1*EX(7`c-BLVhB4ln)aCe;)-#NUjf~S#PNrwWFEu8$i4Lat7Z}P7`D*tHV53&q za5(Q4-|B~Rw`)bZ%q)fTe#Pd(Re>Y8HUHJVYs&avzdm&e5$-_L{5Su!#1M4?TzC`p zi!vOGL|BG|ZGL$<#IJc}JYY#b0AvSyMd1wH3*iO_Fg#C5g+yrhO0m2rR3VH0q7=_) z$&a)_O{y6@Pi<`>;L#)gi|^Npr;^U%=GE~aEs1(2E3?hBbFR&o5O_rEXBLKwgVGie3sBa)%TJUHD6Jg!9OMu2*~btABoug*j>9|H^X{w>oNREovbD8=UU|*jf!s>uELSBc9-1< zp1l%ppVUp*jMX{xd1~w~#DlP>rQ(R(Xn+j{5eER_1u4UU!0mIPL+SNujQLT14$H3Xb%3=UK?8+((gC^u?NzU zC>}FOPVpm`&?==mwKN+i?n}M<2tIzXtx_z~7IQjgUm;fzyc7mAboAI7wNP=^Ks7gN z)uDs)2&plP9{vQpmsEASeCxERLC<9CH(tow(7PXMyf=;~NjT(NN`JiC{_|77n`H^%|7p z;(;~H5mHp(&J}zx_-?Yj+bcz_c*UrGR;p|oM;QXR9^F?&)N~hH#YSj&!I!>E;fzhKbI_vu^z4-w!11ZcV z&rMY8#I@PqICPQFYNg%U@!h78x2V6CqL$G#hCs(WtbI1oV5pqFQ*i?0MHr7gBy`>% zSjQZjip*Z!PQ6Gy#oY}LVXn878%R({fR3cnm~a;UM@ z_J)c?$<~joMg9rbPu_VJjIVMHr`oa_Ly5i!!Z`3`T}^h}K68q-Y=d>Yp>#2+5`Yji z$CQVFcRQAF8ShFQV6@;Qv`q66mw#_>?%RXi*$baq^>Po5Q-w=iFu~Ff753r2LBvSO zNEcudjEwrUX{V}J3l+5hH7HEd9LwLfyM49Vg{`Bw$zUc9qTooXAM=WGv{Ztz4ohQl zCaK9&Bo1A;`zii%xShZ%9=!%*L*LGYy@BhALgEYV%!X%p2KszFI>DF!cfF67q4j=h1PWnMIIPRx5MM} zERHvJ%})jkcRj2b1XnbZf`L7Cvo$ITaNd?((MnfAl^=KhPzMIIm$k;}!19O?KsJV) zFK({|;Px&g3m^-F_XiX-f;C2e3Oa#()khekgwfWC*|2J32@2{DJp6Scq-T0x@<^5vFXU+O8mX@ph2xvb=5{Q-4;t+rFJ&JMXrq7=% zIK&D5%NV9=q7d~0B*FSEO|dEA&9c+5!!91wb}u#TYnwmM!BrugXc~+A^#+?Ljw0f+ z!>H%kM^HOw0GF_;wmLYhJ(|I0m9k8c4f%JHiuPlxhp(H6>$L5Qx8H>**M=w#XZtB| z76-^%gYQvQr-<|>aRZtAie?cn%EGS!PAf9T+P5H4tC4=eQo*wfynCC)AgU|<&>I77 zQsJnB{+~*jO^(`J`X>sDjv9E#GZoQ<95m*+Jc+{k$e~Vv93fXds zbJn*7G`hS5DPt8e=w}b|Zv|#z^U~?1qu`i9I^umxU729j+9t5%of4F|kGnv@OT&ZO z&X_txyY2Hg;?WKI^xoS8+=i z^%WGSRD0%zvmy89nC=tEnCtKK%?x{j=P#aoTrGA51x(t)OTs&nmRoTO3pFANYt0?Y z`?=XAe5Xc+s%z1U6m62O*QZD9vS7zahZsz3==WCHk|#X|tqnq#7)A3NJJJJK}1gXfng*LBu zE`5y*9z1gCVN-D{>q^bZQ|W=BPqTPccn;CUG+7wUM@}RqM~A3(i@d_?nZ#oWlUz6l z@LWhgDJ7!G004!^=}CANCiRW+0u|LxYES4`I5dQX>f3*7PEz|7cAM%f>11E*#@SC& zd#)}|B1eN*GwW7-wSpt zmKz`-vuAAQeg6kW{G61aFrX$lzV4=rIa1#>{Ds1-7Se59r?rcev#Yc@fGst#Ovv96 zf$WuN>*dD;s5jAt;S~bt*lJsb!kDT0dD}Ux*2p?#oA0i5`D)eraBeJNjAjb<0@c;h zX=QwNUp)#FNkOF}Y_?Gdf1+unj|Uk>No9+U(z)stTjjfq>l4Hwi{DG1`2AUBE=Rcr zZF0$u62A>h^N`F~R6Jk&xO56Z1(6NfWiHio?BCA5{tm`U3hAK;kh*uEA67(}Lrjsv zymw(lY2VPZFL*Ttg~TTCST7>H6DR%!}v0-mi zx;9WuM>E*1mz`HuIq;1(ipm}cN5^W6esGR*na3XzXwF%OKDd+}OxSa+I6%*$C9KNWI-NW?T! z%1#j*{Nj$lc2<8QF$wD6(X+jNQqf{Aqq`WBIpd`S^0*~EOvw=jPx#zMCp5smQzHuN z)?|P2F5Fay`G=5#@jjMujZdPQ9OcEHE~UbII4UmeGx|cRf}&rs5&k#?i1q@#`C2PF+r( z!Z#dcek2=4JjQ9F??4P65l=TOCX-ur!l^zI+qev-*$F5<3hQexBc=|ds_DaqW$7o- z056se1uNf-d1*yRwhQ7&mXn+2UXxN-3`c>a^YNxN(sjL5XEAHDMf81=lz zeAaR)j)xR zIp6S{dZDcy3(CD>!B**3XdM7!1|jmi@h4k;ul9Y{T<>^BYDjT-VF`ZkCMgYYENFuH zbtUA;-|se?v%qrjzds&?^0F}WL@WLGcV^xPQK>wWm;Rqz`j|F9+uoN~aG#j5JJD}AuKBYd7N1>j*bqiQCv z>DFpGiz*>aC??Px>AlWgFx$5_x15Ig$Y{5ZL2~}k!`Ds=$DBRWpP(q(&Wqt}gy02y zA~DfOy6s6aTkfXXwNs83cx>)4)>Vs_Kyc!Lq?-ZK^Hv;Fb}_ZqvSoIO7i8M)HGb9L|a3p?rf=4;P6A*N0ml49C*(IXZN-wt_i?-&)bL!a0(7)QB@==M5T~J?8NFD81Wa2Bt@q1y;UH8m}Ee3`KfFix1h7 z)xkBrzu?U+{ve!HD-8H3oiwsqD?B(UotH@|uM6>!O{I-+S`9A!>uL5eeEYK>h(Jc? zC6sOHgc(}u@9^?l|Gj|#-^w+cKi@8YODzS=my$SWIW#*to>-g(C`~0Pc(2c<_>`C` zt%)X+wvoUzs?qM@{)QoafT+z0ucH1lw}%l20U_p8kA zm-2T#+el75VY0jO@u=jI2E{V89EgT%+H@b4TK3t;@M@Q~sYu9_?ZeTgw!C)^_e(v= zpoeWlnq^L~-CT^l(j;D0%n=;!Swu7?`7}tnwACKUoo9^UWcJV#Xxcne77$;VYNE~i z;ya$4O)3zk+3g4opE`jKO;@3~;Ied$#DF4kE(2X8`uQ7k6J5J;OM}QCORKrZ!SQb1 zJj+XV)lXm@GAa!<>2^BXP!U6BXqa(?g z1p@{UG)?O7_)v!KT{kT%mf1%ME4`!s5Z#48iB1yB&4xM@^%CKI8|>BiU=~%rwIpnk z_q8n&hUuH@N7OqIa9hJ#=EwXWqx$&M+#%GhWbTKgQlUxVCTG7T!CyZQD+EY}?L`ZEMH2?PSNcZQJIG?Y#U>edpf$ zzB*O!{4euD)iR8zAh`z+HD=K!Thn zfj)@fPxl9jkbIEC_MRa-a8c<6ERR)ABy7RVo#Z=&I8UWRlZ8DluuRT6lw^{cGjdY> z9UB7Vs<^#zspY1VOh1unUkkWBW=oyF zO2YGzC@LcApCh#0HM2ya_klpP0-S0)>CCrI4K}o%O1V3KiDyg(U(Rv=UY(AM+z`-& z!pa++EJ8-vjAmq=0%wdQ5870EA?pFK$RQWDXFC%mDR)Q-f6QLm>%JLmNIfWLhY2r4 zl7(gBNZb>DzTiVUgqHmW!sK5h$UlS$3o`@Lf2kv|G5(w7{l5s4f24K)pLA}L+Gg~6 z3u@Ps62eM^VuU6tWgJRCQ_q2`>96{XEPH>T3|%uTkBTZ<&iKsHdmhgW(^FUR(OV9e zI0A8^yX*IyyR7~gnlMnQ6S=Q1FXor=D1)a9;hHzdEHgsnWK*ITTFVWiuzvPuPrerp z#O#EJuSxdv7nlvjxlt=lNF>mCDp@C@v|1)MtERN~DSF*a;nHa2JeIGAhsAQ=I(GDw zW;Kqia25%r>@$|v%#Lv@I~j5^;$eL3d5$|Ks=jT}QZsn0qnU1;UPn)dPh>%J*#oxzsc zQtiQ}Q@@-jULw(_fnfRMiH4hLGp8?O+{fBf7m9VBZ5MR z|5o`1z1shJgX&l99+n%QS*<}Xz`ef5_?*6ni*mLzjL0L|e6 zktU$rtd?Vv6-fz?GKK=TKvn*-<$> zqK**yNo0RiPXXc2&k>rbN~WzmegClqNSU>Pf~w^>{^oDZC$=b8Nb^} z4>+lyD1(E&HTP6D8UIMC_1xq;dgoc@IarJ-ShYLf-HvBkXE-RikPgBMh{MNy7sqyf zt8bstrW72qqc2-6qdi@Eo^Lev@}eHM626I#b!=GypzN)>iQzpa`Xkz29l9;O(9|yg z$6B>SV?PzJcy#5riD3hMmFJg;nBXgi>t7&WDs&%NTAuv6zfKQP+g+0^$K2ltvEC7g zrqdn-;yPcvjfkW(}Nf_4*EHB-h``_lJv&5 znZn-vkS@>jC8t!Y{$tO{LQ&EA=JpWwZI40!J71p49rFV+Oc}GgMM8dwh!NwDZutyf zhtJ0=IE1*o07emqc>F;KL+_%zY`M(rr$9>L^v%QI1)r>08c{P<%J1sn@Y@P3Uj}~L z_Cc5| zQ}fQGhNw!b?#}yS)I5+~npS5B(BIJT>*CkJbq*Wtt9&G^GxOHWj-VZb>8Bn_w`+wV z&7*0>z0DjBOz*Uzf=4M-@gktAn5}}|PF}HiZQA-G!8vxvhs236>XsmFkkF7_g??gM zfj+6;=txN+jv_V<-gyh>P?<(Y%pIiIb=?-3Ma6HCpN@w|3<_)eNeuQ8qUt3WwYr?e z`lx>mT@FoVdM#y$JJ#~-_`I|R^GMkZ0hetsW7+y74a{_CKT;Iq#&xZPxYEn_rG?;u z>&99}4(`#aZp9OLIhkiYtLBYAVoHHA^9zU(4lxF;lS}?rk23Vurbcieenh`q{S(yMVbp~@~cahj_SD{67WgOr6r;k}@<+4ZsIiA3K(~r5Uwu>r2MqoVVs+D8tre=gDz98bQ;E>O>BHvMb+Wyy-cp0IvTMIa&+uXkM2MxyJqY!;gOf;2!XAd6THin*C$_=9xPzZM`^4jem{PaILYH{I*jch? z*#N`xF*e(U&j|5{%z}y{wO+IPWOyt@@EjoiHR)Hd`NS}29rIr6NP53p*csm^X0mIN z>@w9ScX0rs(Om(|g~~g?$nN6;Zc(!vD_hpmX1ufYq7FuiuabG0m?zgi7`^NZ*M>+yt(Yty({0KIjxw9XXF}XVn$Gul2Rrf&3_o;6Zw?N9%?Kfn1zt-mhM+{~C1{jrNvrmeSSpKVh(cTNW@e zGyiut2-|y*gSHnub0$OgwD zq+y3CikI2=oOC@l-vfaND-u~xlO;e71UOE0_6(9fKq3Hz- zK@#`w3zLA1CJrFcHuaX+c{pP$Ad;s>TpwLLEOyVfpIZ6A%8{p%B?c?kobW~D01qi) z-~2`mys|OHFBtTd*+GD3L`wk6iDf~f>NQy_i7l=L!Hthi9kt7@j<5<)ZPQGC>6&sC zF;2?huT{w7HX%tO2r!iFoFGz!1j&wPc&nQYr3x;4(-BtBEJoNB3Oe(Qy3JoYTn;6% zhhpxtDpfGXrEYk$Fr{%V5_R3Zx}vY1^-)_|)In*7SmRzpNDK|)Cd*$FuDYW)R{i`V z{n(~{`a2Eq#g5FII68C|K*6Q#5rlW?{Bu>sS#`l(^?2}=CWCl?HqvfxoWhzpz45Gl zFRgUr7T3*x7<1G}$(VkXOH`x9UF{3B z4ibw%&)H!Y9G`49>l2R;JVC9{WI;4BW8zy`&|4qur!g^!$k=2gsR<c>uAN=c%ecXRnV)Nww^0Dfv-`oQN35#}SY+ME|3#JNH zbY#>6?O$Yv;4S8-OE+PE*U4xzU7aOIit`%Sw#2g#=uIw{;UbXng4~AKYXxJB zv8B!7l>vaQXeWUhrVM5vnL#n!jp;1q60nbycz%?piJ=Xma>IogXn@0t;!a3M!h z4dl!OrwR$nq`R$To4c>S8jvTlS=`T0f_Jm*8$1gXCv zT$+%ozob?2xr52nJvGM!f)G^Z-924BR{*+Up4bz30E*3%smojWDwx}*fB;`7>|>V# z-XrVAP#3-vXg%saNidO5PW4sBm_LuWyXEZUP=zj4(x{1tyF0W_twcyKBbMf{A41(? z*@BAk8$yL&brACWc*c~by_?iG{@WvuSge>ZjBvIGEs?L=rNyUOd-IBMGDuHcH7VZN zvhzWjjQ$#@G7JmZ!;$x)xYKkkWb8MbV^>WtzE2ZqzrA0h)E=08gtO4ov?nC-b@G;D zWgLnh7`WIl@9f}DS~}UhcsPem_ZI%#d(kQy{}QpwP@}4t38~;P!uAc|>LMq*7L7Bs zh5UTh`h6YzHelIjFD>_n^-uOSqrX;t;52GWgzxy$+JdK`VOnr~W$R(j;-mb*gN}OI zSRrKrY{l)(eqh=hZ~}b&3+TDIf2qbJbW7ORk3Xm7oWM`Yh*`_)1o?66?TFWshj{S3+ z(7FkYzz^$*V;nK~pFu8vcq6CM*}K)(h_q)Lc9nKwdifKtSB-qFGis$#tfPkY#f;1& zR$4TN5#8{5NdI_B{JQ)V-5Y&EvRP5JkHHO3;kD`U{~yCpZb)g^@7l*W50(8kmgI`= zz5Bx)_c~Xz@AEV2`@fR?lV_?^7*?V2sXYnB#TzaA95BD~iBs;grU=FS zf$fF=^?)j#{tLg?PpSC^N3LQ0Wn)UYMB9RE0RYx0#sOB5PHlFH{@2#}ui6m~rvFxOWn=!QOyr;8|G5n_|0C=A|D-}Hl`m}5`7yqx z^lnH#7^MH)kXfYA)kZPvXg6{4(xgG>+4WUAh;f#!`*t702{+WA#s@>hz)yc{UEcq+ z8vm)Kd%;ZE&^(T4BBDp(;J6@ZhA;7RnXt-5XBBc; zGvI`uq2av8#el`W5-~97Q7C6B8JNDt$`s=yhmXc&+km(8qp7Fr)UE0GRF?tg9fr^1 z(=IPo;QQxneip zaK5Ekv=_H;$HtmD_pAiTo<&bqEXJu33j#(m)gQ(47!5R1XH0KAMK)cTTN5^YhxrMi zhFz?@(ihGof%)M9tFp9oCvrChl%+1VW6CWy0iI$^V+Wc~Ealj`iDv$bK)tIJvhUe zuAiKhc#p=J#Yq)eJAF-?&_Y>%@|I(`=zrU9PgN`fpn-*3^BT`8z$7F0-$GvE)tsfY z!qPEgtuCXE23X*`<~|mC4G9*dJ-xn zaT1IR&MAtrYrwQ6c9JJ{D*W>Yuz$N?y&|c;e$`9%By$j+)7ZAT%D(VL=FDKtknV!e z&%`zXDQ=+#UPyVUBEw}x?UnvTKjEmkHO*h?WV@&;*yIt?N__rh9!BX2s~fbE=?PuV zQ@^j}^Muc@Ue;DG{}#TiM?A8#{~s3ozZUU7E1Qk=zb)L^nE#DN|F8A_zcSE@(pZn) z7((>kuHI4VgKU6#6J`5oVj?jHUR5mwMe2D34(ZP_U=fOzhz^|mItV#;JyvrlD|266 zT!RGZ@9$DxepoQ}4WAPhq5OdUs+Lvr^~n)?+m#e~qt+ZvlqI%Jk_-P^U42>2RFc2( z3sGh)ASJ>9ZhOcArtdXgdv39g>GRD=nv#v@%`pQM^CgZ93ip}+l zWT-bLkG#tGYppPhF{s3FdzcM0NxOZ(sKxQ_Ovnj$^PJbZim;fH6ccxG8x4?V0_|KsvvaWf~>A)jBXgsay5eX}G=5*biWRP`nkXXKt& z_pGGk3uh#b96o}PqONl=+o-z3tkQS9nYZ=Fkp`8E46ISc!LYMNOv^mJM5E)nwRH(p z*NH6~^9Ysb8aVNFH$)~EqLU5yV`;`4F{MtLJtSnl6z{FLPeqTU_0j(0;HSz;3-@Jv z7bZNp2Gtx<*OkZ13|$QTJhg(4;y|S z!{71N7C3Cp;X~tPr(4LJh!>s+TFcxe9UfcM8-_<`cPyV35~l%ju5pnZF5(0XMsDvm z;X}5nwyxxaE<1ZiE_{H}W^{l&%a&lE2VqP*L%klFiE{@+@*HuJbeLfw zZ=F<-d_E{te0aW(UV6^oPezq3qlJLnPM2KdXI2)V>?Mgig6?mNc~H%AbZeIIi~Ihr zB4$1Vhp{S(iG$V@XtG;P{VS0v zaqyfg!o!=LR$5logE!%%1AR`LgRU9epy&|IZCnkTwd;H}sR*y@>+r59(7qi&${{nz zZa?n}H9^1Fv4#SIr@fnh@_Hnp*NAH(#Vkg^_2faPXLh6-0B z@vLaT+eXf0?EdlX$>k>W9Tp?b{m&htWjcu zQ(V+m0Vk-Y^*E4+31py*;?ML9s~#5eS^|y4JIH-^QewR!V@;z0Z<=*;)3gf{MxTV$ zGf}lVO^wGX0Oa5i?*(l$EDkQvwxuuDpueEvFCxo=cKz&E)Q=5E|4@po? z^D1m(6B)#3UJn{e1N5Z3l@iitF=dm|tCW{f(p2y)ii7sACJy*ZNWGNaS~XSK#dPsE zNHF!ohf$bvDSr308C@hPu86#f#cm4&|@@DDg^@_tP?Gw;}$v`v(Evc@hU*FAs z_(K*-V*EKbAn-|`IyQ=OH4@?%-V!_63W;Fc>fea^x2}$5vGb-12Uvt^dUgCD6a0D0 zHN`I8;mGt_XPn%4-UcYwfK%~t_eYYgwalQxD&GjwJKQP5U*^LB>R_lCYxc6-+k#wW zvfq`8wov3f1;(tK3<;}$!tLM-ast@^0k6<9jIHI!r#j+6>`%m&C|RO$R8(ox!{DXF ze`S6)I&ftU@+Ht!k}m(HGci1~Il2W)))j1B? z-{CmojH0FdTntMfi5y2?@w0%<0il4;8P47SA0fXMHF-9jOePiNLiB9EOLd1m5QU`m zG*+*CIEc(y@U9cc1L>GC9tbME4X7_O(Qa^UtyU&lX^ zBxhpo4P|ii38fqJPF$mVF^xaF!0F^MrAKTaIn00UU&aGN%*TwydlerVFcM?fJa;opi| z!h*k(6KvIU-2^TCcj5d-lz34*-Os#(mn`)Ir2ahOV4L9sy8mu-P2K)$hJoy zs~VnzpX4VGa8`Z{Wfch#nzJ;gy5KFKiHsnCdUo;#kz$pbgy!fIcvd$K1zJyFd&Ia zC|Xd$Jm#=~`Cf=Ay#au%$f4an5jNO(J3mXIDS>b%^tO>(lr9PZ?gvoSD>7)qa$z_{ zMmyK%oaSd9!;J&`$?orxcZc+yyMcT)W+mkus_ycBbhYY-!}8WzwC`3hGC}nLyZfy4wR>O(@z{GqmylU zW{X&{@G8Y}{}52w9*5Cc_V=mbM>*}*GW>qeyTle4z+rV5+9b9Y5*`j?O~<5B(%2fB zT~tmEO_Q$Hv7baF5}w@#;*iV>2GV(O6w=r#bnwKQki-}9BMMu%$^2#HIBbZ?EwO9< zN48rvQmnzSl@%_3HYY?mbqRw5Y>S(|3?dM+@h$y23>ye<@-;RQ7u(d0M!}{868u9T z`uDv*noXJ%PDZj{T1nH0YP)Ryv_+$|m>Ie%f3JHR&J(tSQy!_%KvnJ`nQDyGZW|kI6$%dr&c(Y{}pea^eynP(SqomQ{5v) zwUaE2jJ{W=@|OFIMq1YyN2aT`>YmFn1GCJ0kb0oL^f~>R+)Y~YQ<0eZMpcn2NxWuu z^W@U8El;ju1eE&3^i}H$O^%LM3m&?630jj;5N*PI*J1j#rlogJ>b(j*2aV{`XgFy^41}t!FZJ5JUm%d$+gu^6T;T{QV55yhIRH z(%#tWvHEZut?hoc{?MXVPdEE3lh!v&8iL8btY|FCxMWTU(~AF+N6$vkr7UwKN#Wh< zfir=NeT!PR(OJDnP89RAqw=l&W5tPfiDsbjSj}*;sw}(E>L+Nr@1JHhe5N%r$5R;m zF2oz%I|KZ)BTI~Um{Lqrbm`M)<2!1$K-$XG4UOsYi#9-pef_VrM2Pw3P1e3@jHOb^aV)fY^O} zW(9s(DLke;d&%)DGV0=ncQi!tj7oMd?6rp$_v@E9WO6b3z!dU%0mNn()PCWg@kPCD zNUg|pujwUfhhyLxu@pSv&$O-IrxaYF_<%MQjC5xyVL%MxRDO3oOmDh(tMJjTa<3!DpcTL!aCw9>`e8H%enrt@d zev_oxroLpncG4pd?4Uw($Xix6KS~4Hbq=t4l7c20NgH-nYrPlM{_f4d&kg}E;58C3 zmm$C_lp|T_=?cPjYL?;ax*jwk;h7?ItX?!5ps&UK5KHS>Gh&saqPR5;v=9NOeJPYC z$(`KkM*`Z#VSziX=jTw{wUp-TM8>GTnqwBR&GaS#X5VyKS3nCTwIN0@X%#a)R*6Ec zAm|&4?&SEw?DBXc_NT@%$oRtBr_uL;LL?#%V@AH~{Cp05vXd|BkjmMEG+$*9u5E)P>yPo8V2POj9OFkl2v_$xxGH^YH7GgQ2+xcd z>b}zX65HajtGa@_uprnS{llaHlxFI1|@kxC58Xw;4)Iq-WJurTZ3u$|Ag*gGgGUTk=iFl*2PVC zQdiE;^0?O^L#d_k#a?F(}Suux~ z&{ba6(Id=v#r(Dth`mOBL@^IC-8sLbriyM80(=cKDuKs-0@{!w1yj|#*$6SMes}}06yi_#J zEn{;e4W29!A{-GeUjCU-jfp!YKTfT|w9P=c?h1t7Wwu?BXX0W|5%R@WI=0ML&OwD-L zc3n%>RRw>uvUP}N?1kH8Ur}rJh%q|BQh#6`01o$CSppT~HiJqDZw5JjekG&9vueSf z_%>mX+TSJBJdUx4o(%Ynp}-%juSCcUAdO{VmJC+pZi@p4n&&M(6h+sXe40iPF}4FK zW6H%QhYHVW=!*{yOp8brONC|k3&-WAEY71|DZ5zqNDgNGBYxL}L`onOymG zrN84ku~@2lBC{CEjYC`;B?%+^^aTn(Jygh>QUrz~gqpcRswWlI-#1m{5Q7fSWvh%w zsk!ge!8#-5l?>kyW=8ngcxk4!`{!k;mt}Z9$6`I2b_q~Y%^m;caWPzisU+Yfz91~_ zK-$mgtKrM|PvrYt$Zid82!6Lg@;2h~+-zgG-n(O1%*>uS!;Wzt^gZSqIZJ2jJD&Ky zis{QZ5$|BkHTF;+xu>-*%=0Fw0-Z>reo;jwc&AucA;SQ`=QD_{V zU5-<(J}!B3fk~MRUkRU6stH$HS`O)nt>aJcdfDIxXApX4y0^62={q$WCVo_R>@SNV`+Wf-R?y?;ZG#WmDHh9 za97vDQc^)wt(^nXU{Iiv+GcN#sIqO+ncI4El0Pa+j1)U8Zx5bWS`Vh-s#~qHZGNy= zoRIKs*158|;E%+vRk>+x(?CeY{=_5N|FumEpYprH%%4 z-<759jqOeA&e-Umgvx$D*mltj+FW#~IR6lD^fW5=IzGIIAav+QmE0GtA1?=Lwl8}! z$H7HgEUDU|9R69k={(78=6SZ~65WXedF`o}-A&PxZ|B2Kyq)kxfVobe@!35skLi}l zeuL;!v3`h-P-_KsBAEyJp+=}&TIkYX<9Yj1Wj-o*-2L4m(!Yg)jS&DdB<)0tk+JM8 z!%Lqmyk^Gzx{h`!FEedO^4qSbl&@ zMLz;sR;jZ4{XMyo7d$X|{_fa74MH9Yr45zErqKqfVhBlfZztz6-i45Btxn))??^Ef zYKQ*1L%(f1jwy)n#wLmrwOir44w>y!fG^icA*h6lwf6eWrWjU~@SC6XUK`Y7j@Ovu zV(;B7o0Omiy;QmQp14q#uAra`%x0M2i^TRmRwWe&gOm5BA=taQ|7j*iSNQ4Azhj&F)Z4fB9-o<+*Qqm#9aB!OOkO~!lB>4_^oZ7Q_149Rr1e*x(DN?uzXCT57!by8&%FP2 zyhb7_YpL=Q*0n*Eu}dzpZzz-Usbu%K7f z9G<24fCNq;s02U;lB( z-SksfHi;sq|4#rOTuQ2O1$7Cy&M89(10^6MpeiYkH{eD9t?p81leF|M_a`Wkp%a!X z2H#Z7FBnU|TC{kSB-+i!kKdU1X~_NRBo}OxRyV^m*1^L7nfgj0q@hKy6gH{CT4<5c zJ_^nVDQt3C3bVw#-oM$Cc7Mf6lU3-v#}WUA7rH^#VFG}>`C`_5lznvXUG3SAdo1Q{ z2v1iB9ew{m4VQJ=H*nD*XNxAna22iE2*FEkOT&$xu>qQ-rWk<}MlnyQFjr^7LxN=; zSM%?Ct#Bq@w5N`->N=*mM4N`}Nj?ZKY)w@pQSg*g{RtIBVYtX)yt7Q{*d(*y!MWWU zP`Y*r@0>kX(E3u;_gc6kv>3t-@2^*L37TcP9}1*v6%IP?L)61J))fphLMlQgC$0_p zm_bb|`Q%_7Tb%cFm8K=6ovfHPfM+p3k+fI6_;+NQwH|e_9(aFDh*IyKYP0|cTg9E9 z-GI(SUi$9YeR-~GqYFL@h0kwZTt7a2o;-$NdR#pYgEe=nrJ(PM9+OjeH<~Go9?ap3 z9OP$j8klW%vl_6$+R6~C3KDZmM=)I?sxr`Xlsz%3a=6lg4TKIc>Gnf=1!BNxYU


-x7m8Y$Xz8AN*TmoQazC>n>%4Z=v!#d-tIeXc!H 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

jcaEGr&g4?bc*<+Kx1^D~Ve zv1b)WNq5iYdFFvq(r(b)l%=<&PF%P`6RA=)><-7 zpkt)^c<{CRDI^y1>ZUQVVstE3fgf&3$mm7USfABnc0?+Yg2HV`TMcp%;0Y1I54oO{ z1A(vz9Z(2tj^MkNH4dpk%H(d32kShDj@J=I!cQ|Hy^U{0e) z(tEpr#|dox9X={08FA}KKW3XT+z#$i%*Yp0mCed{BZlv6`i4I#qY5L)o*Q%!c^TB~ zxt7+T8##i7>-S(qIqH+`_c{>7xcP}237Xjlge4lw~R}0ky==3{~8Y9VdH8%bu?e><++e~VUqy*tZMJ%PF`J*jpr_e-zD8Jf9-Cd<2vY^KOQtwTkyn+Xb;MG+ zj6N&G;h4v8{a_ zDm`{V#$k}iE?i$Lv5y095M-}3>{#v9RX8Wh9H+~r=WYGeB9d~eA@GKUPwc>o4Ok{W z*OQPs88C~O<*i1hgYzEz3@rymJ2v!RdQr4krI4Q1ZXb5~MwDED3od7`k#V=c6ZU_gkG%;9q}~bmfjh=WAn+hU7);uI zaxG1KqbPF-d}X|M@L#~LC*5upEiz;QXGephm7L-H&Qtr7j09h>>ZSpF`*9z%So4=m zS(dFN#PM6(^W0QC3M0*w8mgT@f8(vFgf8LS!tLG^wa>EnyOb^X4X7Tqnvj|40Q6Pp zy~js|VSzy(>gbY|xTS}>u&wusy&g1wd1=F~S`%y+TlMav|P)zD38H0T3EX zRSJoqpQzHzkhx7Slq+c}g!YR3z&8S478yrxmd@4TW@_xP86=_Zj?@7O~ zer2h}w=1d6y>oB&Ql+}<6`XxpP_AT�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

#&u422T6UyaU<12F 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 z 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 z%0A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'Hrn)bx8Zo#WUpojX^VzPP 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 z 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

C-mU0>MeWa3Iov%hM|ba~@zQeSA|M?&9i(5B<6 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�Uo-GdFtVaWvp9p5UGNXXM{m5OlH-ws;m+H= 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

ZjI&(oshdLkqAl>ZYRof(i+Gu>)GLLD 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

EpK>|;Zz!N0!1PMGr0#A^@ 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

{~CD1H3Z~qc!7g!tA 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

W1TUUu#*+d}&jWofeDS5(q> z0Y5xcMoux8E~xc3p2$~5)vl+>k4VQnoBX)@9sR+ODp=NULLei|=7qEmKN_Y*f48D$ zB`!>lYD~?lD=bq;;!mjtO1#RZvar*s?JEZx@-8z_AMh86%cR05d}EDL7u1lvZWiX+ zgy2vT(_~EcaN=I1(?qqjcu-9E4@;_llK2n8o8#DTEnCG?JRj=?f&&Ja_$z93^E~Dn zhBiG%hQEvP+A(;S8t4re1FihV`l#EDr&zQ+vWjgttQOk`fFbE0WkC}kMvZR9>PjfG zVP(ge_TDUH^#eKaX4I!)w5)_cFHKK~04-9gkx8<>b!X*MQ1}`Ozr8=)(M<%}zTRw) zzCF5PZ)^zKC_Is~{6z~k`Eh>r?t;?xeth-wPo=NYd%x>$#1Ih0IX3AA^^qb3#E;7yIz^ z{_LTYK<>jNMY4w-MUu7da{M7)^est_e*vCNzPmYKuJ1mbag9WhlDk75&gzYQ7>ubh z0yy!jIvDSGBrV3-VB&a4*K@rvy4~KPi+i~jOSSHnKnw4E4ySJZUk*O;IRw9${Csx? zR?|I}!2739@mf-5!sVs3=-%r{%Ctq#lEn$#K3df+CMrI&H&wj%JCdUBuoJ&S*n=Hn z$VSM_>9Itp0AapeS~#i`$F-I8F(}5jMhS*LcE__1hd)q43N_7xxTeit#P#u0pder< z$&r)9-SCFq+xOs9FKt>vGu0xfuJ(|A4}4k}jr${foI>92jvo(4*ttD(in5pXHns)j zGpC)@@)r>$35u3~1;J@)+R?h>kort%&#LifUt3MbrUA zFP0_ubIE$*DjlCn4bI8^{=U4aHrBL4qX1*YiYALk`X|)cna$+#`DGxai7TLi4X>&%(vk)9up@t~X8$ z#>S0)8dP?f2IT6;!O*8f6{`|NZBgihiWgn|vAwsWK>6ht7gu;G^F}elEw;S?X-DIn z94t7FCUtUj3H~jfT&_Rk-F^3AUsgtoj2=CM3ql32df-jom?KUgxgIu?AGXI2rQ*qZ z^p5yfQ<9bU6jU9tS8J`8?pNMDS3wa59xF;Kce?-x|k9+X_Fcj3xNQPnxL&l+a7m2O2b&=&$;ulb&qmOgi zsb9L+rY6 zYNOhA0Nw+}ym@5s4GaLMTE2K5I#mJL2DU9SyZ$PA^nh7PXmLUtCNd+pd?1uZ37nM; z^IGWO=Q&!4)>RJCvjQ`CNTp`bdI8>F&mp7}FRSMV@A9ovIvhq_wv0fWB?hKF}{ z$tmF?kwF3WS*N0?roCU2jC#AhlurpL>Qqu;%Hav#m{rxnCc-6cG!UO4pspxEFe)W4 ztEsPb+RkjXEty$iD)cj3G*D+Y(?IIgaOo;eEj~~4idvh>dT2!BeOM$6Of$j&+74rS zPreH)pgAO0K$&S_N9c-GD)v)PPvcSBzM1YN*eg`;muV;U zei*~#&6{7oVKW&DXz>hZo++jZu49RDOGaQo6Lh%1QeX}D3D6IG(BWTaTbd9#PvRKy z?#FN2W5f&;tPEaOhxR7W(Xg9v=9$JE)DQ6QTQpR9kE7M?{%(K!bPLyjl*)(w|5*A! znWxQ~V!rAbRRuZ*?-?VV0i8@T&qy01)So4BicQ+9%c^)q^&YV>6#N}iMp~eGC?yUx zp|M?usG4Q2mIA1EgfT%M)w^?1@eWAduViteey(OnwYgCuxM}8vf`YQ?s^BqfD}NEf z8{B4bVYBh~k2RRubrJT34MPah?ERXzFY)}8EwNvO>^H3?W?X_Ln%AQx?sorxl8f-r z54-L0`ZHg6eoUT{e*4S!m*2hprClXpo0xvRP?`6akyHSxR5nl4m8bxm{kVT@-w#0J zw4sS&$h1WA1dk$2%WC+I?CIh0aEpq==8QXV;3I)?&nK?4Z`>1RO^rt!gf=PAS>sXH zS<4iap2yeEeb#4#?%Y*Kc~Too0jtygtBkE^s4Q?ngn)ijf7Hk=e!Ux+H9- z^2qBN`cHot8+_Z54he%O1{6tO;kRgGiC+kJk@ta?0fCuyi^lN;8OEMl6A0M;HZig*(9u1!JKQmz$dD0mN7!j}o^VLYU$i@p-07W7 ze%OEde1`6=`cyo*Dld(HUr%P;*?S~v)KV7CLQzf}kDb**F?J0FLrR|J@aSBK*V8*c zetoVcnyD*sz!V|Gl)Ta_22JwpmMq;e)aOOU0VIjjQQ96(UjH(=di6_I1a?VKi)rV) zt^9U{ioPJ}pMYN?A~^z>6Ie4_^9VKUFz8DJ;K$wX6ZBj3&aTiLeB_%k9|(Ge;@+3I zmsHwRKg}%S%)T84SQb$wjueP#Mu8yMK4*D?5{bLXtCtrqzPZQgtJQ$>#5?Z(%D})oYW1{CH!k7?4iwa zsMw@9Hl9`-)iq1+a8h@U0Q2gX32U0p;jOmO>+Ct&)~Qx8#XnVTm*MopSaKOpJB;YiGw_l$H8}#r9!gWJgRh zb_8J$=j$r$n5}s?6NwSij2J<%Bl)_5Ycs0CMEjU8(gmg&ErM{Lk*}-x_HfatI}x<} zMdR%7OUdB{y{3HXtjVL8sbs~!L_9{Rq;?}wL>)kkQ?evs z>On~HL!UPhGiM8$&z!}jsyp2@o?EyG)^}yx3Ia!}*y+q!9)Zi84I}U#tdK0c3(0sF zG=dYEvx03iX9Ko(Uy*t-&8QcIeKK=a(QO3R>fXDr$hDYem9q)`&t}f*U~KHv4#xYl z$h??ly%lIMe>!uPMl(BK+WgfpG2YEZCI*PdnP)$dIm^f^3V7@DTB`@|=pqkeT0RB8 zLv-9piZkygUw-03A|wd&K-7<-NB!-0c=JRcoo@3x_-tJS$S*` zsvL0V16i~M33Vj;b1Z60_ugNlKRwS#bi}K@6aGj&$a1u#!C=Q{&{Lsk5VdPvzWw{)R`?B=w~)+Ame19CpJ!2d^sMoXnA}t zix!8EqFUL(!K4eC&UhGv^NcK71vC*v1r#-S5=IwE82l;B0AGoanNAelmm8S+xZojkLzBF!6k8`1bs)TAB4c zt2TJUM)Qp~WG_*@VWORk%CSa*CDO94UMC5bG9{*G_6FVYoG*;bg)ZZ65DMz(jOFeM zn9bd-VB!abz@dIv5*+PLlw~;+HfoW+>EDb^4ymHr4NpZ>RPOT# zLf9bcHYLN@Nk>j4Xqa+Y2Qy0<*JYLlT<msyH&JU_Fvrkdznh*i`_(f^;dua2u~ z>E5>kyRhZh1spiVIZ8@dfC9GChfqQ~6x(YDVqszTwG+EB!S2K^3@i}+t=Yw%JpnWM$YKy|lVso#o)Ux#34$a6SU4JsDCP$ch^%cBBxDaEn1mE#f)F7EM-)!-;LyZp zEN)o1SXrt-Xy8bJXbg8we?>R7qSAH>em?M;WHWdOa&haIcS~4B3lo&&o+xOU+F{Ft z+2g_1734!yv019JP>afogFVCT21&nAFinK~=(bioOX2c5K%XFm!WIM%#Vdd{8iE2y zr-#PDKoUX?MZ`QTPCk^3o_`z_OKnF(YBV$q0YzTcuskWr}8gzguPG+3&pde`gY!hXO zf$Rb~bdatiV=+hEqG-kV;d@rwCLc>EH#Zd|D{yz zcr^(H7ww1*HRT-wp+lgNZww4_xEyk%kHFtxrSg|F**Jmu8BUgvP|!+9pdRSBwS}$; z2}I01bIX^T-V`C3RY#7k@YFBWsfu2iiZEZ2v6Y%HW^oJVizYhy7ev2QGG|EG6dc0l zKY%g7)8ezEE_OwTe&P0v<33=cj=Dww|K})P)CJ%P(sp`&5F}k7eG3}Z15wLL@qSro zG3P=mJx=vdkW>%0iIBdOOy&%*5?gGN-Hc67&j%SmYBR#wp^-gwu+&QCR58dZrTBVG zii}%VlA)lWaXH|-Oq>S<5r;65%lInOs!#yGU{EEH6zP~>NYyIq?dELf3Q@~^V%Odg zK~Uww4w4-tCP_>wXctvC=H8@=9(bjZ%7W|7?O=RRyWltAmryiykPe}R8F&putRHHX zW-(XrcsxA$nn@vOz?UGX#of(CCgHC$5Ej5a727l(f?G};C4;x3T!_4QMKevf^5Mfm z{U=}yjD+GiJ>+h}AhWpOYKli$iih@6!ryt7y?+(JqcA(1-S2`c_l@}FWAW% z4+=_=3qVxMvf5#a3jW*WWcmeUW-9rG_r27QPD9n z|3v>#QC7WSgcY?KrqM$;YdO(5}M261C*dw@qWYu zaeC!%vAHEn7B)~YO%%aUj08*XiN=j24~uA?f|ZoQ;x}O=n*kOBu@f`m!u1=^W1_f+2 z6L01KiLprxY)W$$i=Sz@(IDvz3JRTpfrOi0y?$hgxY!Jr;Nq5pq%tTdR0akYPIdY) zpg8-+#75~&5XV{{4s#v0ixL$rj{H>cisqGo+YvJEUqK-_Fr9%~SWzKyFyUjO^x;7< z*+P`X>`vmGm;@+p&bY+r7%0`8Ay1Q!B=w7p zMyJVeNjx zL3oq&ZjqM}(ea9Q415_=gkshfDHPoTfXm5cfpwr3X<8tHqp8y9Egfh zi<0Y-lIW6Jr4)~pv`egI6wedp7nD9wZk>3=qr$M<$`wUqO3w%!tA{sA9IZlFxU6=B zg-g>8)ks75-hV4Q#q?II)M7D7l9|h^hg(J@;X*+nT%Zq^R(DDO7hiBo!SPco$-Gc7 zP2|{=TzHCwR+))YWlP6~6I2)*(&40#EzpNcsXWDDTVURgRBYVyB-s@T3cCV*xVS3i z9H>@Iz9R%CC1koKRj$m%-qXD|+yjAs3E3FHxkPs%@*Zw-bUK%_=Nrykz{v+)c}uLN zq!JbMn%~-__d~*sAV2#!w~#-3;5j8&tzcwDIHHp_9`V@8`yo_HMpEStlHS0-cIPhw zl_cE)5>(Q@k6t~QYR#f83w<9lm5a%4{0F&71_ycuPGo!7Cdm*0Lmn)$eMD3gxL!;S zOX>E=U_sIzQDlLD#hPBW<08@6m4-o6j0=JWrYVt$!vZ0yG>{~$$RQ#SS?L5}S*HL) zL`@W7;S!3gLCrb>{JWJ@yHJNybc84HF=GO^8Kkl)E+CRv4a_ml34pq*QCv;0P{`I; z4?&69wBsxHd_W zT$`{WYsA-31T1!zRgyI)*d_`rGG(CisMwJ)#4xM0qN@P{5_7ebT)4k@nlVijNT9|; z-7Hyjd5bT;--S(FyN+$X`;ZQBMm%ALSE`{lz}#O% z$^vZBQA3JNk&!V~BpBtLp8-IIsVM#szQqk?TBH1VHZBxdN%beOBaZws7Ccpb2tl#(P=uuViCO7)PK z1*WnP&vvQ&oWQ(MC0P_oris8V#X(|`;o+#roD;~nIVA}ca3xPO=cV~aEHr-mCsjCZ zNJ-X&lERvR*;K51#9``0yB8rYv0bpgkZM-u;^^XG@7}K)cu1%)Ip+xp8yHj0iVbOT z=Mtca4Y|ZOD#114eMWxPab}NmjabJ=h~H)vBC$u5<1cbtNY@Bj%^>-KIMz%P3Gs{aje-C=Jv{M1F*g4Y z@$)nTEm>_6Xq?8NBxww66EUF3XDO+;H9NY1EnaO>Y}{ufsSHXAl>t7CvV_6;iwJUI zF`+1@`0yviWDOfOqtG0e3W!#lXYU?p_a+hs7cDi>Rs!K|8jTWVhvx44igH*>Z!-i7 zz%4S4N+9^oED=FiWHh}{4#*6%o>*kiYNk{}vbrJ%PRZl(@PtPLFAk(i5UrlFWg`HU zPJr!<;S2(JpMj6#E(j%x-$DfugHZL+z6YH0rB8SqD7KAopXE&l7u_TtXi7K} zg90zZfC6vNP^>*#ynZ+sao%md_grYTlA|Q>sAT;EB_-sZK~=IbCDBZfhhHL;SJj83 zOB~Uh;_<~six-pEEp9r=EH%AOFN-!+^5X~$g2Z*OGw;yrR^KtInOeTo}N~Vb-J>rgs`lGV8 z=y?bHLYXg@7$+i-?HH~KwV9dtcAQWJDLaJ~gJfss8eAR)>0_AGD0nO=C$t8cO~Q`o zgq6z=KD%;-0pPqBezRuhreH^C+M(JJP`qS2mA)*ap#hCx3xi`#2%RCV3MFV4n9(R8Eeh2p!Z;8qox-{1&{uOq8ZaXmCg1=jf&UTMF0<#7EX=?{?6owlDr z1}Xq%vL>MGMe@px8wqhHC;}U|za$Mp$wcfE1B2+%-H_3bi4TcpY!K8VV3Z)S|7s|G zCAR+@0>8{i`hk){KL9Nv3N#4_K|&!TgHet3oO(F96>m8d>Y^D|f^FmHH$Siv+s0Boie?yT z+bGp0Kn+F7C&~3Cj>{q@Jbn>D#^x(2%mcuK8~gwGePbGVu)-mY>)3*OX_QTIv; z2?2Ei0y=4=Z>E20z!X16O3n(Lqyi@CSJ57$0khN_0A66sox~?QC!qjN-nY?c0PtaS zQYj&20VlW?+emN*fRbbYuua5-2QURCXMunrRxXdhEh?_?gdiVjy=cMzjC@cu1=g^{ zW=B{b1gI`ho1O9&23z$T3trL+QCX2718^?*Znv@8T}E~BGE5Dg zpl*nsxP6aX2|323nv6wKrHjym0VJsj@u&1ze1hcr z%*|Lnww`k~$np$IN_hrW1R$@-7%xs{mS7H9SJWCHANWCE(S3qhf(0bhhZ`S-u`E8= zmys0-7RC^NZ3w-J1OAoLKH}DtWIaHbHPxD;L^I6oPLX5HUabX0%lr~$zR}V8DCWQe zWj;qjH}&BlQViT-gVK?k$Yc>D^@%wR(!SycQ<5p6q%kF!DItA(k4Cp(9MK9UXg~xr zN8=-+Mvz^?{8wq0NDq;a*Ln|EiRAyq2 zhR5UKNpF;4Fi6w}8A<^Ge~@Yi_l+Zc{X#;4c_zN%1ysn|t`%n>Q{t(2l_V*HZK9yE zhfEw+C)~mvlKye-s z4%Bi)YaSP0r_^C@Lj31>p;`OL@8Vo^xfqQWZI964-9+?QQuKNvT%--{fZQD4aNvuG zWB%Ed2DvuH^Nrg$_)g)TB*#j?Iz{m$QK#6;4#5sGwe6)B+Dr$uP`I-A4&Xudph1{* z_)8hnL`+0zUa};?N#ExwV7#32to{RbT^4&V@ztGm5jU z+@j*i1j5>8R)Mg#X$nAY7|}6sUHI{)&N9%Oc$9fqz8B=NmBwLE7yC5BEhX$;n#bUW z7Iz;>>VlF+T|kg1bsOhS6u*o#YB8-)DFw&G<7CFJ z1EjE|&&T|N96n}uWLfBtiiq|Oh~O-AOwQ>4u!CUoLIf{kHU#I7rOOn}GQzS08G$y- zpbs(+HVm2D(8-s0PA%fcDgmFJZV+fDwPI`&p%#?cU8oVxAyQuD0TQx=>%?|cfMjPM zD~~(R*HDps3bu*T1MYn`f{EFLvtM{LdLkAF*>e($^TrVH*s2F#i&Ow=qQJBJNOU5+ z*M+f9VkpQEn@e z$Q>Y<=QsRO5{al)Y0+ID<)kCAu>2b2CmUyXI19_o1b*&Qb%7QSp$nA1+rh<7<`1d} z*NbvspxFn6G4Zyh;wU7XGovC&6>Jj)1WFm8a#VbrW`u}H!T_0R)gu2`0OF^)WZhF1 zHr39d)ZGj&GrDMq3RINAT_3F%@rF1p zh_x-1onwpe_KW0EsAxP2_%NJKIPQYP@mGW05*aQ6kh3VfaD?NeqJ=;sNhHo85mk?V z1KvO8rr|pVD@&1cz-3a$G)uLbFa`eO+bYuuH6HaX?F4Q_N!o;pMq_{vm-f_%u;K0= zGp9I*K}B*H*d}5@7x&c2Vraz_RuzxI*$|w%pd#x#uuU{baKVVjI37`Ssv{6_r;DU4 zsA!Z0Mx)?$bsvQ9Nam1}SiB=i#Ut$#^9zbRMJ_GPk%WV%4Wt7gE2IETdSx`~gr<0c7>6m&nnYld@-Z_}Dj)KM(UH|eatM;4$WrtS%s#wR4%|#9 zVD%Q6mg4!Qg8Anx3(rRob|PjK3YLXY2X=)GS$D{T3pyH+Pjb*IWr(SGJRY81^kS1w zBV0iADqu0O1>l31al5i1am0ufe5$}9szLiOg> z?EfohaAMoS!*Np_r&d6X3{V-aMH;mNp(|zRU0o`i7HVaROtTaXyY^R+L;j* z=^qvV;&WOEWl~5MsROOCaNjUJT{A#zC}BF_muE~_2FVhmxIn09aO{o$?_DDlriHAC zC3Fiv7?NZL6^+cmbPI9~vB6w2mh~+|+L2f}Nc~ijAt0?OjWh>nG#`yKqbU6}cc6ju zI`5(C1k26u;u1kQ8^rG;tOXSI5t<$-7eW@q^AX|MaJ|%ut|y4Dv1;IVd6Mj)qLDf* zz#5XCjp#7NBCEw=LsDcs3|&Ps8Q3PmMwND!VxZy12s4k|0^r7jA|;K&#$330cJp?z z^YC5#7f|nU+$*PkIOq)sKF^Eb*B#D=VU>e#oivgLiv1G4(>lhw<~`kq0bV@dX6Hm4{-( z+t{aBk%0#&Nhvb{id*710|VYb7)deFP?Kcz5i+&Xm<5X{t~5p z+u(L|(F=+&PP}ZmU(fM9gjX}1oIn*F833YR)aw~EsPLF8zMbG_4c{Bw+b6jYDjFLE z1uvImO!2{1LuGSOxG13z+@O)AA5^r`52$8lDaI6yidG@!!Vu87MI-qbDjFYy$(mkL zE)xbAE15$8q}il!KH$UBSTgBhfW=muiR-;V zktD__bJ5UHT9Exu9-Cd%Vv|iFYruy~J`AwPz~U4iL!`*KGe%M{ASEDSG2z3d90oXO z3+ygk3XPjCk}sg5Fe>1~#l5Srn7~#M`<_xv)@EUvC3h-#M}@~aSV)d=r5P0ttQYj3 z(IJqOhk0K^*{?+LIshy=ZWRA$B3Kk|sQD*b-tA#$VbQ80T{jBbKnpnqDXR))8dLxw zQAEF0@pwEudFe-~IsxA=jrxkZU^@mNrp4)EcUlV5Sj z5D+9fa!8SJw}E6kK$cf>mYc)+Dv>$JL94L?ofI1P5lEr~1fkKOOG|#mV^c?$S2%ky zh-sLNmV;q&cXW2@(c95m*+-@{K`CJw@-LS-1a9_+c2F?9DPyPrz%au^LGNrwV4BfL zL&RyDUyuC!pZ>x~U*+2oe)VC==MYe@4uM>5bZer%+$8$jq{Hx(8WOA#bh zG(|pU8c5}nxqEmzJEF3NO!yQnF%R?vCM`G%5EsIohDz8=cvHj8E{;keoQBxRCoCqK zE+|$H1^qCL_YIoSW~IjNt|W1{41qv0m=tS(03gVl ztG^~mB+lcAX-QE2i7m)y_CP4ffhE#lx%yx0<1W)O$v+oL~4>ez&25I0MBA<(GP+p z!r+3pi-iYCaas8U-LqQIl7RTBZy;A8^{N~EJRD8WAZan$W zeco@z=~t|z*iNZt{sqx9+Qla?I(BxKb_bu-Tr|H(6HpL_wvztq%_rLjxMLDK?|2_r ziG&zyHCc{+q{ZacZK zdQ9_ZYzX91E!^*{Ci$(-0A(1lb1DBsJ_4(<*f?(zZd9`5366f_bLK_`wb6Z*o91V^giX8{?3ucpusn64o^ z4{2`@ai7iX6N0i1#rh-KX*68#3~=w^>B#)GyQ7_h9Q}_2rE?0ANhCUl8z!=*f|^oO zf$1D1($I%RKz1H9JtY-h**T%rScr~D1TtxTnL#901Ke!D0EtBxUPf3PxR;0ho@7c$ zXCcl4N_>PHLu|#(yQ@#~UT0cRh%Fm|j9$czwOKovE@ODJK&iVxT#Uy~3YH;xL@I5JHHwzkAjDh?Tr zVS*{)e)(47lLAr;SF(%m_B?r0yEM8<%VBE5B zA?+A2T85MnfXgt%v7+P*=5cjmizdaz?FtvEFUF-15E!LH^+q-kJDKKO02Uo-iP6Tb z3du-NQy2*hu!YPnHYNhH076m?l<_+vAjF>?bYN+VjyPzzAwf_{(o@7`^h2tdcCO}E z63i!VBNye)5tcDOvv8+{<3I=-IiCBCl^vh_6p93>gLZRAWB@ao}Gjqobq>>SCQP*bV^fXJnusyS?NmQ?~2 zLS)S-fb200*e&SH7od*|LD^7+$~b}I%o42Rpj^>Cpjz4y+-k6a!J8zIX9%;;im;ZA=%Di6B0EMiukXaCp#0&%*3Z)iAFd&g`g4En-X_{666oEfe|e! zw?9Ab;z$!UUO7R{g^glZBzcL!qNVm1AjGF#9)cThlC!{eg3zeCxO@}>3M^;NITKZ6 zAqJG2Zrp(KiRt;@gs>EX{J~_1DIPvP{PNMuAWKCev93+h|rT&B#m~s@4 zh2hWP>@XWuHKpt=-=r^3)a?c?6_@utV`dga_i6I)3ma zX$5KutpIQ#uMQx}J>2bFfC(R`hqM4;B(T^KmjdH!o+K5hDWn1bRTN9}K46zH!gyT=H5Yb|VN?7@3ou}$>68kMzvM`T#{EPt z<{kq^%a;(kw98snW+ulHUpEI&|t0Rfp& z<}AlfS3i%#5JZogRw#@b>dA+(j7b;R!#B?*e1yoM8x9%W>}dn zK*Dsf-lbi@55*+WKuseWXiL96w7CVMg zWZb-w*n3vR|NT?qF7eQ_OEL zykX-UD1P0uWT zJ-4v(VZNXg4mVk3eE>DnM8K&_w3;FVg1P{4x#H8bv- zP}ArQ@ZI9f7J`IFCGplIg~X4OB#A*yBQbzQFoPW;JT^gw2s!~#@RnSZe`h=H@&NvXW)+v*8~zwol->v+Awmeui(n+7gS-z$c%S@k!CFa; zq+$Z_(vUkOSV>YR8cM|k9hE zro3^;P>sF>WXyyCrU4ryooh^!MCqk- zxLGji%I3iMm5n)H8jgn`9t#T506tve%4WIal9i3)azb)PO$|vnV4Db;p-!aUKR7%B zDrhE>CWQsYI71qaD#MWhc?ktzcAaAaqb35lmF_0=blo zQ5>|yq)4D~Yetd`G)xl#jqV3aG%2jYvHD5< z3n>V1Qo0Q&$*9Pff|Y)v3UWne#$0M>g)kcn*MIW|*ZYm>HU)C^9gy4B$t_ zh3Mmpx&^IZW+2U`XoutRczAZ@WAl$<#!vvmfT)ldy-7?klo<^Qri8%h7&sVs(ZOEB z!*Pa&jpyXcD*+LRFme>u0eqOH;D(0y#}pkwI6Q^;7)jvahK(c^Xecq|@L_Nrig#H! zIh7^IiHDLyDtb~*ikpVmwk4l^SeYSMOLXp%%8XMTAUQLMO|fmr7cc3?h(lJ3%fArF zxNReu3>pfP0X|&HjS&ZJQKG_e+eQZGLro2G>7!h=rPwxRu+mGhikVN5}oB}p!(5fgNFUfk3plr(GYksY&aqv3U3k1Y9T*dljWB0s^4i`U+o! zmmJP|iC(#&xIOc2{se$CAmFgT{w=RrmJv~;S>l48{TC9Oj_8r%lgUWEe@Gyw1AjpW zA{T~HIs|Qqo?(cNvN{o_K56GDiMBx(w2Nb2MPd>-fyZfr8*?&jA8rN7ofOgBN_uZ2 zW!8vp|A{`}R*obrXefjQ5U#YVV@`gpIQOO$n-iGVHy1fCHggnq0DQRQyJHR+a+!;E z70Hz3#1xQ8BS+y0z=un@JZ7PRym$ub#k@muTA}t3K=tc;F4tss1oN`_i zakQ#{zL*OWFGKY;CZP@kBLG{0OZon*z9b_FK?vK zxZxtJ3_xvln!<~{!(%bc#qZdJqDlFfUP(t4N>ugp=;rNU-y60H_!DIF@{0{ZCy%h$ z@DP7C!7IEvjwrevW0lPmEau$B5^nAIt(sT6#9d^mWkt)6wCR)z1UiUWrtBFgl3A-W zHxs{0ape?vQ%=V0YbX>1_&(g)g@gv!`$h#6$&J3RQz*niZ9t=A_axq~;TDw)!q-r; zRRf%oX66_?sLD-~hr{FK5yT@;UX-!`fJgOl89bHNLVP_Zk&hEdz#}~oN}xaB{bwJS z?}ON{m-Yd_EaUR~i_I4$N`rrTMrFG^DI4N#VHp;;IZ_3a6MaP4U-s9HzLSJ0UJbKD4%w`5Gek(2w+G z>4$JAuygfvb9HR3FjK2^@W1x`?G5A(42{m-Wl%2z_Bw5tK0E;ZTT~E6Fty+WghG6f z+zIkn>mBs|kjC0T?h)%3lQ>c@AL!ECK<y_r&2GN_bjZfy+-WAwgZ z1_{ePjJm&T%fMX^M>+pA>h#RvK#Nb?s&;#DpYLx;p7+?_Mt?sX z`}@;A<#+xXx8RMp(yt$`{lh#q?%}K-odV|>{r$Gz`&Rnx^%2)}zkS2r#^om#emiIO zW_4cB&%ZxHKIPQ%wtxBdwo&=ZzkNSuWORCI^eH_%qVmgQzvs^KO+A{iGrw%XwBMii z+Y~C=-ObXpAKkFBO<}&jbyi_knZsV&)4hJWJ^Wdw(J8YsR^v`RZQAT}*u8tYp~v=K zKlb});n7w`e)ZVwwN)-G~@e}AFs^buK2p$ z#yZ{ci?ZkXI`+PK7R}nGML1iYI6ArNg5=gGYrBLf*43>3D<^%-Piy_(uKoU+wLe^@ z{h7z9e?Fa(f4ZLa@=n_6OQ%$_IG@K zbV^~@{A1gH-yQL{<>sxvevz+yhaw-l6<$8Rx~kEe zh;bcHr07jHWL*3{(Q0R{KWlgWKE12iO5?Z;uP<#6nvF{E^{TtUO1;o(aKC?dSGh2z zd3(dzV~s2e(*Nr9e>;yj67kQJGb_qO1sv?TarMNZyBq$9wy)Hx|AdA{hGYG<|9%tM zz;({ss9oV-etkQztVOK_{#{@Eemh@2{=u}H+V9`~?9_e_{$d<9vi;=-t_v@2-~M`+ z>&^q$?s|{$I-HPnrpvk27TQxE=6Q#m_;_?%a@F6bo{areIXk=0yAzLA9(+GzzfHT{ z^DYlwQo|+ZZl9#49d|{%GhR{n&bR9OUKzIgrv~kt@bbinTGI;dM?Ox@T(N3zwtQ#I zzAg>CtWQYkAg@^;x@Y49{5HvQ3(fg0 zQyY$1q+2@b`KsuLzn?j6dQ~sHOH!w=bJPd>Z$G!_d{kmXQ%Co_0Ya&Yxbg z>5E61cD=dv;DD2R-aUUgD!G1@flYkkk|XAs<`tM{_+-8QbWHiTm+a)tUAea%A|vvH z9y~g~waLuQwNAzLS>h|(pV(|}#Ytw_2jU$*<<`y#UU;y@l#H+m!#>(t4Q}0{jggV{ zWZl*FAp`t_tlPcsqezavcw~g9de*Kz<9i*t@7(a?l%Ew8 zhxL80XKr_O8eKI;y&*XFk%@eU-8qNj7e>tNJEWbg#+^z{&ZH%7t!(IHuza{Ce0t=o z`}S!IlKGIQ2Et}2`S&ccFxlq1s%)` zwpx_YeVOH_X4bv{BbrmCt`W+|WJR+=s@G%j!bDkpkW_E~eSZ9#WiqvSSoTOT+0xvlPf_u~d{XU30s z{4*r})0|rJr{>#^SNEu!{V>vY{dTqXREL$77rY+-Wnb3wdp{?vKfUK!=JTBTts;-t zx;)QxM&t{hjYldiNqa3H|7L!dx7WRsZ2Qf8X|;c|S(S_a-!JxZSbyi@gNwcE9!Z(v z)$B_7iML|s)G*$6wrSi#Q;QePl4OS?C&gcumf(wzT)7BQ+y)dp%j) zEYsF#Z_=!Ny9{IgEEsy)&$HRKMrZwkb8H8;x>$8mzfGz~o2HE#tLtUo*sb8j39tE% zx9ffCa_-x%Aa-DV8=dWyaWR+<}s}?8cr=N5xw`XAWw$&YTI@L9}+bOlj`tG@x zHo9eLhvDGwsFH+DoPt*w8!ca?h= zt9vc;tvspDh4S_>nR6dqD*LA9?*yMu^>R!CK5(>bR#3>)s^)w*)G2OF}tym~gY zd*>EaSGbi)UE|v*SXERP0k>%XSmhl(A{);Q;M4*hX_ z$lL?J>sIj!UDIo^+nSu4H!hjl-b?O!slpHa^buAOlWa5JYqrNbH*R)$_u%7SGN#^X zH?u;G%Hg`HPr?mPeMr67e#d}L&rXg^^r)j2!GU!C0*^T)J&YcN8eRGiF z-cPM6uxa+BgU#P`+B$hmNY5y2X?lPl*AM-R-u^P|s%^z$btT^+w* zW%Ptuy}8r1clC}tp5O3Czql~F zlF6U({cf3^+1@o*X?}K*`SBfx?wvcIx-jT^^IPrqoL*vVnAht`oodcv&`UQBu|J7^d ztT-n#=khDQb$K`V^YP|qK91Jh2<<;3CBy&2(b{zehfnKm-0Q}sx$mmm)!A{N{~7y7 zR@2vi@7%4<=~jPkyy#tLp*D>FRoL&Cx_1=)J_0~;l-syVh?g2-mXD*EL(Y-t2bah<)s!Lkb3~PPwXXR#f z_h0fK`$}H(QT_*?umQuXhhG}Lz#?JMlGAzJ1N*p4y-*|Pnww%#zo#v3wceNBTeta0 z{!pX5EnVgs?Q&?_XlB6;hbaBscDB~(Su;~68&)#Sdz80wRrH+N?>a^9t~zkHYHiK0 zzJ9i~Dpff#?OpD6!*>&$J(Jz#gA#s^j9)%);_Jgd9BSlT8QZh5k8}Mcu7(x^d)E7V zx#sKLJqOO6^4#onl?6km)mHxgw9D_=l^RPA{qimsAM*A}_;H)r<@yg>bEVPXmIEIx zZa->j<-Z0!>XyIO*Y{H2T`v#5_->f+es`1hmPxhht+qYU;CroJU(U~8vf)?2&DP6* z4BFJSOXWk^Db2U#8ce-h=ED5I_4Vf*t@NhZ?WYElT_+Cm+}b@wE6Y4_sch&-pQP}D zpuU5*t?fHyhMi0G24}BUy?Wk!<@}swFl6h4mXGUk;#%N|s>UlHyI1S(v2M}Z8D6I* zYTMu2*>S*4y|r(>V-eSqHD#txkX=}P^p|S?^;3?qK4)unP~Du_Eza2alFs_WxWhNw z?K<8#_~nr=ZdTK_UG%c<*z0fI0}FzuUsTi8r)~#0C z+fFOTg{?ZbanSCW)zXfr4OTyVd{RHI?&M+CFHaB4I9+?D&##`xD&$8b%qzdz;l1Pd z&JAbYHJzP*ZNQ}!TW9NYZ{`fzI$)5G$Lkc8z2)3~jgBAPSnFbrt;PJ7ueARD%jC;=X&lPP)-Luol>f}WyW(4iIZ(Dfk z{y5v0f%}Y3R-F-ZThr`F-#@e0@9UzxHpykjFq7JEqHcVDb$QqJE@?f6o{niy!EIDo z;{iAQ@1=HGRd&GyhYd$AP8&a__t}M~M? zud@nQPPd=++38Z`$`1oS4vfhSEEgC*|E%Y`CG95G8Pi~5=K!mp&i3}hM{V@?4+)J+ zX=Zrm-2FapZcO#;UZ&yJe(n{TT9vCl<*db0WnY_fU+ng`U)X8k?iQze=TDe@L-|iZ zsNXmP!-$8IUoNk{=Hg<5zDdh=936PwZ|M4+L*730K5Kt$sO)3eOB=qdn$W+_p}pUg zE~C<_H_1%+_UUI^v$44gY<zXCpy2`eRi+1LCxpGW4oufY!S3#o9m31 zb9$AVaUjRq^joS;^RUUo=hPTAZf`*^pJNkECt1%QZ1%uco7eg5_)WvClE?QtG45WQ zO7F+5TD_o6rgGW!M%C|JN|=#XJ!w?`CnwLOw(98KaZGllFJWb-IsCmc!7rs|?S)Ct zuk1OUvO*ViI3;#j#Wl00Zy#X$c9ci=hQHst?_at5_sWTu>1SLr-G=m7XEXlaM|!zK zP+Iesy|#V-Vb;~;S}(&|vy5||e{Fm6%fwMf`W7teRQ;sc>%K3JKi@yVsCm1|PcMGi z98+azcc0N!+9$8fJYK$F*4YOuW;cuKv30;*oyXz(npW-xGrN!O=i7F3k2jMIpO@=( zK5VhJV8Z?>Yfdh?K6uK2FG+X2yvs$zSJ|3vx!t&1W9RzKj?Z2*Vbfa6A+q$AYqYgC z*{APLsCf2s)s4zFPP=UC&7C*a$nLxI^8o9KweIz)*lgv=zDBz8Rjd6maynAEcPHO+ zehsS)+^KOoWxCbXE2GbxeTVnn+I+NLqmNc+-A0Ytv(Vn_{)DF^_a9vTwWYUDM?q+W$Py_)U3m$V_iaKhv&hQn@txZdBhLzJ=6WU zcUleE+ z@9a{~^HU5z$3#?GawjxqyyK(b+mEXiCg^@uX(P+=IQqbQjq+QjYv)?#Gp>fOtahOO z$u%b9T$fId4!c@oON$MWNs~0MjHi0HTe9fkrwgkBhyVSV-R|0}gj0bNt_BTivMuwU z6^YtQ4<8@@$9>qUzNtP#u3TATJmaFGjcKjLjh|I{@Z(vJ^(G#>JT{GYPQI|w&+uV= zA790%FsH_q9U7;N9VaVX(KPwO>%Tqcc3HVF*JR5yQ;&-`_T_237v4?Yyd$*B)>#9- zrq(pQ{jSF3r*%wqh2fRH4=X&{+3(WMiY?ziJ#w*4XoDxCvp$EJMs*47Ir!APNw!wy zH@+JALpIA??LU9k{TJ_tHvc~ud9$Fwvqo4yKheWrjeLCX>PyRH8XvKE zFrwPlG2bI6{oL5<{?)r(yEk*X(`4w{$`N-v#VzyN-+sk{&cU(~Ps;4PrCL|dID2kp ze(=Vs%J*A$w9Rc?f7IT>xa0d$#-2Gd!=q=7hEer@^sMA=In>l?ab{qHg!Q_tc`h}7 z`i^t#Y}`3<^w1VJf)<1Xj|!?+eR;v4dLL){FWgYps{FN?sZQ1Vbn9XH^{ny5Gd8Zt zDd$H#`<~cV@#XXU<`q^4Rrxl1z_td#588)*yf%LHxNi>A@^eP_KRA1b`gXgF_lMWJ z_1Ql)J@R!k|D{O*_d@0mnBS>cuc701t^D`p+Zu^oEIaR6w>^DF;?y(cW>y(xp!(;h zf7+0xS!?djogXlBa+=FN=hbF$Mmski{kuBp#Un4-*{uGZ5-Y_84oBaR2Zh0}sSKG}P-){cl9{*05YPPDJdC!0j4R`q{JOW#y`1HK8^o9&uMYDV{%07^jzcBU$W%v@ejmBgSN5C`+ zJYWCBu}Sf^Ee39Un6iDq>(-U`*;fAasKu2l)z+Ha8F;+Y#^ntg&i-ZPKgexTmFw5X zZu(G=zoF?j-z5zm)f|%ZzQA?!zFf~^o*(0kPM@{Sh}|}O%$Jydn-A!C|E1x*Sxav1 zd+@`0c)_EF%7s0TOc+)$Y1a3(A)Ss)Iq-O1)wRv9mfg2yXtO?Hoj;sL@Jl*1aYlmWC_n#~4obGa~S9;(M z-(-WrPjl;>@!K7gS0?XawMVnoUT9l>lEuUMm%7}K9l!GRhMY-8V-|m36!>Y_#4m3? zZr=FoZsg(ehmyKie0q99zu=tJdDg=}c0Stn#LOOZ&L*^db1kCdpYFBFR^Rxw>j|sH zPtqMbo_ET6+hF{b$u*yMv;6YtuusbFe|{bOC$e4ty80^JvA}fMXM!*M0sN7d7EDSD0bk9PgiAL{gxhUY^K^L?7MdOG23 zy(%&Nhs+CqJI-SBqQnt9HecJJvA(%3*?#X(tGo3ER5yKJ>0?Nl5xsltb1+Ii?%O~8 z(jocdMD^5P(`Hpp+PBay&AwLLvhKGN{=|-ZUHEpN=H;0m{SS_-S0;Z}jmT#`*Tf~2 zuiO7@*I!lNUvhCa@3PEg(2=JLL+ZC4`{>r@Njs;!uRiIvZ<{RJ)vpK4%XWBMvBTb1 z&3iYf`{35I2{JdM&GOp6-who7xJrgs+gGt0A2i4{$+HY^TNpm+-i!nH9eN*g@~b%A zep1ir1M)k4@BiZbxoW1>>Q!{z_1dX}t7F;|iwi-@utXc>)3>7&towgksIKGdyL#yz z#{oAJey*PUcH!la#@?qDjY9qnNIU;^UelpG2JJZ`8G41M{`(cGFWww2#x5NGN-TSrM9Jc6Io2=279@g!9 zBIZwk!Sgz&UcYT((5%wQ)baBYbXywk$y;#h!Od6O`pi$Q96cpmc4hZB*X)t49KBSt zE%n3W&t>K%ypgy6bT=euQajV3y{CC3o|c)dGxB*hcSlxgROCwIM??bc@Thrx&P zk_{hK_A<)u*mUb)<1H(jtZQiTY{SJxw(D~3s`ec+!0w^XiLTw#44XZ;zhi04q1R>2 z9;DfYPr2ZIZ|Z7W=xo?w4F_3Wk16E>Vq-5A*E=HVOrjg0nm>|qhKX!8MU z*Z5bht}X5O_0E+F+isiOzS_9orcb?P^9^b_EVwvgXwXj25oZs@Snuxtb7hNl*LoUW zvul;V>0%FUdu`ABOY?WHidZ#Z)t+6g7RtKH7Ytc-vg#e@t54gz2Ut{I^=81vN2h+@ z@EEqaC2%=JK(`(^@|x(hjm(2K5WP3HAfYHg8Y|d^gKQA?Bw}Ikq-w>>U!UK?RuBU zqtVN>-M3wd%R08cM-|M<(-(LTyfA@Rw3qN+ZxStt1PW^mnJ9(F{ z1}~$g#H2J0alUuFaACH`AkXi!cDv-pg-)+9N^>_p+`iG`@%2+XdAa=U5xP${ugSC? z?HeDfW*21Jf5m_e1%nKn`*v$N;#1A?!LE~LX;%JY^^d`jlxho%Qu@kltRM9Ct3A?O0>e=t!cE8@k-@3+_+8J|`g?{=+7DhXI-!Qd$7-4n0%CFkz zUQ`a7Kl9V)u}|z2kxe=@?6Gi|`IqFSOXgKyHDSOoy9;w_wQZIbcf4ZizFys1n$^^` zIXx+T_X_)Z9%n}ki9P>uQ1gW!leP}CUX&KrpuwFNHW3L=`}{PqT0X^f@cUo(+US^= zLw84e_WPDlJ7~<({RRDAOzHCc>{i)uN`AvYW1La=Ym>qlUxFwYurGV_ey1 z=Dnh?_cp83e~0DiTGc{-&vM`V(d^ah!G{*iyAqfA&CTMg0b?dN?>ucG)=b`R6X)URP7vR_<+dddI>3;YZKOgN|%?oZeqH z@M_(}e-2nAU0FP%>X_|oJ_R*TE4b3WdGe`Bb;J7jsGioDar>I%oXoEu>l8+f+W6>I z-}Nn;Rm&NfZoFSx+sF02LEM&#b>x+=_jDb&Z}~sH;`@KFR4F%YFSkc|;K7PzGghBW zTG7NJyUtY8CwMm{<6#Oxn9D58r)Jm^@TG3aXSF8{@vB=JP1+ zwsZb1{Wgu7s`_PH_|T%K^?l=GHjA1(FF$N^ij(7|4Hu?9JwM%4Za(Bpd>>D%z2SWq zOfT3rEoZv#gOOP)%&!C;=@j&GUE$*Q#!LEUm7kUO?)1!*)Wl`A@1NQ@CY`1&B(GQB=b@z{|(xgG2oqxvs-I@ls7S-)y6yGG}V|45o(+R0Z^4(IFd|8&V zXw)O4X=w=~2X-^a+cUZKs_VA1yDe_}v~1e+T{c}U=Io6B65j8_Fo)BN{pQ49I`AYe zZA5DBkE^fjR+T^aWK5-)-F2Tf?c-SGWLln8?WHkgF4h@&qvZqpf4ZA}?DA}3ix+cN zFTd}RBCpi`-6E6i@8)%Qn`OVv<>|9SZNuINJb2dgE|GA`Hc5G_DZ|tR)BaDn^#g~0m{y?9c<(g@RGa8;A7aTlh zY}R;dqqi=%YWTG8RlVRqd&6g$cY19yIojfg_-m>|aQuv{um`%d`%VpyxYk^o z`gn1>Z^K7g?ls7Kw=ZVXsaL)uUK<>E5IFVRGDD|o%{Jfp*Q~kQod>$tcdO;69cwi| z=4krDr%w*w8hmNp#8Lk&>i4(LCI6_pZlOE3#obN5v#5g3x-i={|F_Rw*V$*+#hF;$ zJTS7l@~^^XV)&!ZQ@>A~vM9ddgEO}K_Rr`z=l+M6t(LcVvNvP=%=f2i9shoQ)%J!x zcg?Wh;<9{#r^Abw2j_EdrTjCmPDoDHoRDYwDe}DAwf#;vZ;*VW*ESF5y}vv)r*0eYX)mZH0yHNy}D=K6#w?sH~Ex3Qszvf^7(fs|1w#gYIWuC zlB&4|Cd>K_Hm@}DSi5>gZna*-JifZY*G=zt`QpB7FUk&?e5ci#0bhM`mWe zLw9<_+cbT+c*@EHdlIjbxhrPJg~=*s)>hU4?S7d zw*GM^l=Zgny9u*k*d)57WX5Sy( zEpP8VJ^be0dNX8J)q7KtElj8V{rz_AogcAvrsUqWd+hSnd6D;VZ|C3lGsa%IyX;fb z-?`pL?ehxH{2klkujQY_-(P>e`ka-Me(vvpbMmpj>PFpbckIv4{LkKF3*5%$r@shn z9BcrwI9&9M5S1fJV<~rsARQfw)M0|@#BoNV%#(6=3j-!t5c~V0P+hq@WaMDkr0_?D z0m~$nyF+dxmKt32??f4+7z}$MT7>hK|rX{K<*e0K|+u{L8b$? z8H)T9!i7+z5JUwb+1NNE=I_~POZE%=zm+?L1VRxAeK@2c9by29>*SHKQ0OTtBq%rr zx~Y%{hR6d$hZTKG#Oy8VU-#~=?t|Pq+ebu)MMQV&YvQ602#F1oqi#Crqy3{oM#ey; za+cC6mVgP?w-5G>l4;cP-cTHa`Lk9j9}p4{6C6E6X2CH25mQCY#12|8vD#3}9$KJ{ zAw0mJ4A6feZYbms8CIki_)NH6cyx#$EFVrK(T}-?iO1#iL(zJV7++v5i+j$066v0a z4l6fic2=u-{+|OHq6ACI*sDqxCFRn=oIC zQ5u_KvUsI2e_#4K6shC?mp~|c14ST@#4x{zP_Z<{EnuZ6oVIAyah5>*0nr>{Q+k%5 zjv_YA|1gLC4=NEa2XUq)LJ(quD^49EgDM#7zP;Q%d%ARH)|RV2o>^UeJX}1bn-H7I zLaei*O$f@93Y!r8ncIX6U^@OEHWg7yiXyb4-H_>*t8bWIUc%eTZQSgCA}sWG@Q)4TtZlYKsg_{7 zlzYVJ!}`l0p}B$F1=Sx74`PIc7DQM;yRe5ori0v0?kIPb_mKCNgKyE1=`utq>y^kv zF~R3WegW6Qt*??|nVHSko{wLKd=R4WWyd)qx_kIGI`=qrMcCb;ok9<`vf6mJ+3+n6 zyN|n1i*o6_TfcM9!RFC#yX^Zn<;CP1yGGBDeF#iEVQy^Jpkqd(Z;o{{R?n?ur*D|C zv2RuD+&3=4_of{E^XqT=s~`Sz|5~0l>)j{g$)0Lg_I!v;JA5-P(|W06O55HOhuoME z7uWIHv6M=F2aOgMJg)m=(l}kCT@AZAWrw<%g&41IWIC)v=lDC{8y-Bc;QaX>J0Emf z9^Q7**{(w!yKP#aY;-N>;EikU;oF`)Z+18}{y^dg%OAPQpy;T;D=*B3Bp$lk_hi+{ zfA{NN=ntnV@4VM6iWpaW-umzd^L;ZPjqg)ox>J+2j*-FYp04; zWwG0_&h`CF!>6?M&h)Zq{c`i`&Q~)(rex1iIvGxAYroR}>Fj{1ZwFpD*|_cA?qj;? zw#epu(pDdF-p}M~g;s@`VK=pf(5HnT82CylyX#lc>BSlFA{ov=okCv zT;>XG?^EW(=FjV4e<5miLpfWaZqHN4<9pg_;S#+duVnXj(hlc0Rj#=Wh zZs@?A@`ug*^Y*Uj*~Klv&Fj>Tw3?FwQ@XS@96ssPlrM2_-tAXqmg#lhb^kMsans~6 zW-W)>jX7}c^c{znH67;qJWl>nKeXrX6RHCrD~(;Z^6Iq%->&^*XxV90!IiEm#n5GM zYaB{ETKC4qj~*5Kx6kP}B|hAAXaB{Y!j~mP+z*Z%ppOWPe>h|FZRf}dp<&b24_D^C z{(rQ+O~`j!n%))DlVB2^Gztp#5eHFXKlSdf|K9&mtnPGGA95-l?6PcANaxf!Z&e?1 z`c(Bfr&4JgIB=p8!7p&6P9#PMWa2;tF%TymIv8{&eoaI{K@ieHLegH>z4rgV*SfCj zec#GJsBYf#Jiq5&_r1RMeXX_j+W*Tx{GI>#JOA5%`n$jSM}P4zfB1*r`#w_x{iS=Wl-bFa76#;xGK@$N$z}_y_*RfA$~#&0qeD|HZ%km;UQN@CRSs|0BQu zpZTxe`=|fPul@7C`t$$MAN$Au{eShpeE%Q&*Z#(@{iWae&hNO==`xNok$*m@d zN`UbSIg;Q!L*N(v3{n62m?1FaPpA6H(zVqWVkJ;hNAAR)kYnc`5^}S(M=u)$v zepZ-XZQZQ!@h5-!qwoFcPd@qCzyG&?=UYGjyMN;6|G~fZ-+t?N{@@?@-9P;I{p
*{EfBmoikAMBI{&)ZHpZY)kz5n$$|L#BW`~T2;f8{U!zW?SAeemc1 z{J%5*vH$(={OmvUw}1O@{U?9tYk%}_|6f1%Yrpib{KvodTYu}1{0IN$|NSrj+^_v) z|3`o3XMW$u|L)KIWpAK+dlRHhYVSdYef8Pve-ihQ{tNGa@W;<@Xg=P|I$u?L|8t0^ z@1tJYMN@nq_WbDI^Ecx=T*v(t?&X3pl9xphz55PQMR6yI{l%W8p8jU}a>m93;^%_>nNykMKgi zGS-b|+{Q0>`p}HwCw8n=XWVNkj5X?n9DQWGO(#sG!kEt!-t-j4 ze4a3dFQ)n{mc^toCM-Z)5IYcV;!y@y@t(|wc-8p3kL!r??D{U?eOz$yvg5sEJVXXl zn5~X$h+P;0>r2E1*A(%zhS!G&jK1Oa zV6)~S?6~IMFb`qJL)kD7VTU7%v8^T29T$NZ<{{vgY{xtxyl)h8wmN z!wSVua!1SI*IWHVudE1#BT7%piWLUpSa{Aj$<2F zDidoy26aODwB(LY-I~h@1;|9{0J4W{2Aw7g8!$O6?j{!ryF(cPjK!+YM^f!KJ z#xM_IbCrC9PE>0f!cuEgqEaFJoBvT_x}MOT(_z`m*LBtQc()!j6V9YnY`B^AJ|7?I}hjsv&rV>{OzP`NGnUX=T7r zy^Bu{JCdLQLz^x>Tkc%VmO>YwEq5wW#eBBhsYDg?*%Ei=I_9(GP9>_=e73|X2gBx2 zAylGbZT8u6=h|$Kp?ZUMr$*dTYe4*^=oguH|Hw*Fz|B)Q*sayrfwn z(~dXXRcVlAo=CI}vdj~j%pl7=p;`>G%#(UnqT4O=ME0c6%`#6!VvuE?)U#4tzaQ3; zCF)s)PXW6X_|&vPmY!12ilu%7uGKgaR)bVyv+o$B8v8~)tHpJDS* zpLM3&vHE0?&UCnw*dQLC9)|f&JuAgcI@95y;E-zUoqAR+=}gBn3X0`A2bU zoXanYO6OdE?Uc7>&jlDaIGu9^wnNc47wQE&$jV=<;CUyXNs{zo*(YF6c4nY3G6Fdb!(L6DU`QHsU+hogHGwT z*iM0~wr*EOaMlDBu2HJWc1m2MRF>`3xJIci+bMF5Qen1JN6ojcc|{ zs`31UQF<`opzt+HPX-)RzDDWMfP>Q4C_Ni+Q2Q!1U(fc|LI=gKQ92hMRKG^)TzGIh z*C?F}4-8|cbS^w7fX$Z9g$EU|Q92jm1hrF>o)I{xfz?)jxV3uDK@n_}u3#Kg!A9v4 z#z7ful#Y&rI@l;39S4Q5QP&gvY;7uGrLL*)Lwri+yA!$y-g1cZruJ*|4I=n=L+^HMJ(LS zciwrX+Wfou*85S4Snc_4(ou?7xlk|YYF@7ICmr1P9r`^gl;;?=UP=*bxvpT3QpCb- zsB5)XidZ@P(6|uC<_FaeZvGB&piG{HH+!KyHs4k{N)fAnp;tFHtd zaC@|e_E>$z<0wU}_JV>fMXa1FSbWY%%7r8AbsX+7&hMp&)t(<&zn3Cb&UfSQrHF-F zd^;X*>$!j3vi;M)Qp9S{SAy=Ph?TqY!pokv2kK??W+B2nl za9P_Z%kD}wt1Zj!N;NBG*300% z+r&E3Rz3ZGaG%&HJvn-mYL*gtn1A%ERI^gorqx*!rJ9w}b)chEvr@Vabd+jV>dFKj zC5Aa?QKfq?)vUHu>E25<3pML8_!TeceknE2W$C_fpMD=`KCKmg?;|>pIZA zRI}RBb)b8xW~Fo;=w7N>s7cp>?xmWQx^kh`LibY5O6gpPPquoDlg@?rQq5{h=fZob zW~Ef=)=TO-IwoBQx|eDeTe@F=FVQT}wF>khzH0hi?z+EQ4&S-(JfKKFf*ih6HXG-1 z_)giZT#&v)bES4&#E1 zz_}d0b0gX8g>gjLJaFg--CI!4_TWbHz+qg5Bgc2jX5)NA_m0WTxUivnr)*Yxt8eJu z;f`}IhwqflW-rKL%I1MXz4(SMp8F{d+t3A<;;{J?T!_OrbisuymUl*-&Y#jsH-bMN)eQlA>I#Ou8HnL<$vn=MV` z?-avI*^8`qieaNPk-t+68>NZ-onqK1P2}$s!$#?bF7GOJN;h=x6vJjqH+1oyaiCP@ z-YJIF)^_CpXWdf_8)b<+#jsJ9$Wsg(Wr;k+uu+!CQw$qri9E%yQnsOcrx-R$H+1h5 z!$#?bE-&YGN@ebyV%Th{%*C}Vfl`@!rx-R{HaaMVmBJh8j~VK0ZHi%|u2lY{D29#F z4c$A%uu;09d#4ySN;h=x6vIZD%;grcQ6h8k%n9D>hAyb!y}soNDtNE2xq=Gb&oUQ+ z3f|AMG$q!WUUN>|>1@Co37gX?m5}AwVQ1E`bp5xWOKn3q7nF~QB z?`19omAsd^5LEEK-_XV5lb2JyQ^CR#GJyfb7;^=SeF|g(#)XWFidZ>Uu&{?rz&P8` z1*f6FKkia$#zjRu*aO2|W96ub2afhk!D7`Y#bF8-T!_OJEVvNIem%XO85|X{`p5IV z8V41zai(CgZxrJ24P9_44%^TLm*TJuU2qx)e&9!vvF;Y)@FU6KLL7c18C;0Nk0gT& zaokM7g3~zAU;J%Z?7O8nOu>Q+akzp77vgXQ3ogXr8@k{^9KNB870wWcZ|H*4IMBY` z{e;i{Ohv5ybTb7Ddm#>2u;4-*u3)jh8RA$?!GhB`(7vlFSa2Z@-_Ql8aiCt-pwy^{ zwO&@APjMlhb3wsQRK#j8C|KM`8#wqV^UFj`VB9L(Xg{-}tp+-pPk%pAB}Jy2)~Rj_ylBEK+7 z6f7v@7e-muMm21dWo=Z$Mp@QIHEh(?htC+PhLyUBg2nSOcz+WG3o3Yj69o$@cz+WG zizig@o>#7%EqQuRHEiBn)qae}OTqi?dj6l@Qw>{*qF`Yw zc)y8)1(m!P1q&*8uL>4Vqu~823KmrGUN>q%1@Bi;u%LqXt0-7d$$L?-cm^f!MZtm! z-s?s!sNnr_tyG`wNHwhOxQK#FD43KmbO;Qb;B7F6*lfv0Eo=qvC)udQvoCos8?~U4_p(t7DtLcw)PDFvhoCjytzhw)9YOI7 z4GMPRn(|N^2N)an}J;k5)N)Zd^mptLbg0=_hZ+B%sl_FMqArmb{tX#-MOA#v+PecP-wY}9o0s;Ar8Mh80V8h9E*>mxfHR)yZAVoOA#yQ<7h5LtelUd`fh{8 z>*HuHMJ)DaA4m1A1hp6TYUfhKy*-S#+55{}in!;{kh7ifz=`S59<#5I&83Ld-ZhTS zyp8MHLlm5KFCG4%^s!G$j-TQQ$ULMkk(3-i1;so>DLH-$ig}1qa{Lrj@*YX%pcSW5 z&0^T46qwreBm882nCao3xL z7nkDj4c(ctS?z@lU4Ashxog??SuSO>+4BuuUZm?>s29p+vxmt<#~Wp{anL-*r8w+p zKVJ0IIM8kjoH2VLjsLzM;ENHXG*~x(hdw zl?xlX{A7=Fmymq)mj#aw=P*e~Juj5aR<3X8E|ks2`8eWB%FbQmsHNXCm%j&VoOM+M z&J@i?>1M~w!(c|K2;{c`ol+6V^LtLI2%IUJt;8#LIAf$}R?0Sh`C^dF+(TBT?;czjFF<*Y^eyGDVmK^5jayc8>J#}rf4=wMIg`9 zI(6j)r}q@iYD@2;!o>i=`$di}0x?6wOwmZv0YVI;9)GxVSw~y79}8?6@u6 z_?;=5)i2xl<$cOdA@FmiK5Lbt*=(Vs2o=1auc!aRR`A}AE-w_#R-(>@+*@@@7sM8d zX0>G-zY9gPQM&QFP&6B*N0%3hW}|fDccExDN;iHNie{s9<9Fd!vr)S7yKt*nscYl6 zH4s0(YtS_|@bPT^9#iAH_3*;w=>g4pcq!f7o5T~D*TQJNP`bJ2VDIoeekt9ooagaN z>1O48`-X3YSseI^pZUk_W{o!-a9&C`Yq_q6c{z*O3wn4d-7NOP0q3Q3bI&pJaox9+ zZtgkMvws>E?|?CXQ_l1FrF64$p2shxo0aoCekt87T+qY(uBG`G^e}g(oD20*x>?Kh z?Hft}x956zDc#)L!yn$ReD#@6mu~Jkw1tSB5WbG03FwcHD=X#hsqt3Y=UP?Dh9N~a7&lHdL z&=0~Zx|FIThkmg7v67{9vzB{lglE6vcC(J(aKM@GemQq-7G3r<4*X%#!=;1O3z5A)G%@rDD=Y;xyZ5A*E1 zbJzUxc;GV+>AmAqLG|!bs#z&ah(iv@y&Jcs8UIqMS#4>?zm#fLO1FKMQq4l?tGu`? zgjtkQdJvi?F`ZI9yp(EITdIebQq4-K9$rc{D|M})pDk3XSt-r8EM&%w`U# zlxF-qx$2Z={7b23wWWHPdxLIE_3%=vS#7Bv=9f|3mg?c9RI}JJJm4;=ESa9nz& zZZ^)3OY;PwbADWUrEWHR*E9Z+=dIMu#`$q+rm)WWacO=A(>c#;`Ocqnp4YC_&4Yi; zXncQorEVTL)bsA^1S@s3alTHlQa2mt>jW!xvvJo`|5?w}&BpmU0VRcT;kYzE7T{c{ z7wTp$HyoEZ z>gIt%e+kE>If*&v>jW!xv)S`?f|a`2INvv4shf?v*2tgzin>|3a9oSp7@I70UrIrJ+o(r7>Bi_2#3 zS~-8V8+EgBzTUP`Hyh{cZ5ws7alYQhcgBsIQ3(>qM%}FTW^^LsLL9T#%Vv*ORA@LZ zy-_z?xjv3I>Sp7van$nMl?&hl#iz%m>K_y`Sflhn=t|XWlpcBGb+k_Dap{$+*=*@? z>6NP4C_OH{QZ*}O$EEq%7^gHFUa6YRmS)2%RkKl7&T!T$RkKmLGO$uL8>K4)D^;^n zn;r;VshW+_m4TJ2*(hBZSgD$g(v^Xgs@W)A8Q@#APU%khO4V$(bfU#2@J%_5ZQPDEN=L^=)ohfGj*Y5WDLpQ|Q8X)bjSc8w7KM!P-FkTA`t*R}`5yEzw|<;+ z-N!p{j0@+b`KFumH7 z<%a!X-h%6#=c{~E(>aJ4&EHBli+|y~^j5lAxoduZ##_2sIoEw#>1O3z_i^jd;_xpT z;U3MFf4Fy_9ZNd#?Mo(#^`b?%PT?D;LI5>1O4^I4a%TbEr^?Jni?Tn|luJ z8!o`wN;fO#`@^hKtG}>6%$ru73%aj#vz8llU+LzaW4yi(%A*5TZrC5@XPuo3^J(ek zzFgE_*dJz>9PPnB9$wM*DBY~~LO&?otep3QTj}PWL%Bic^616r9~|zkOL@#|x6;kM zJ#yX;Zl#-*bNzqgezQI=`4Y~Usc^x1pb&-a=WeBP`!Y$XYTNj3l-bff4Bl7dl%8+i zO66*a*DCLsXO+qo%Jy@&Qn^ZLUb>aaRZ8>HtyHd3nwM^+a+T7&l*fFnChTIXtyHes zQq{&cXx)~owyjjI*s}A@Td7>7RJCoTa+Olmww20NO4l^DQn^Z9&-AmkOXVtMd1{QE0wF%m6@I;mdaI1Rohl7S1DC(Td7>7RJCoTa+Olmww20NN>$rdDpx4G*orrn zSNro7%2iu7I!fg#bv?V!S}m2Ul%8+iO64l0`?*`GT%}C4mC6;$&Np))SWWO? z_gE99a@E!~PoFWC%2mqd!cw_P*<4sES1H}k-Ad&ub?KgmUt!MSTiQd6w^F%cYtq)f zmC990Tl-cjS1E1nTd7>7w6$-ga+T87zLm-q>XPUXop>VO@FaY<=)7@Jc|h^t3!?L8 zCh_nNo3J-7Di8L^`6ld*V%Ip|gys29=X?|PMzL%5t_9U+5<;6PcUIjfb_f3|5i!wuqu3od)boCI&1bn3yT-YQ;Dy7^dGdIp*fo10d8F7? zE^NZyD0Yo=F@B@iHO|HOjbhh0U!=HE><%32Io!HTy*hHJXLh!8I(gPJs@^%@Ji1Zr z4&}n$=Hlu`v1^=f9^K%!bG~_Wqu4cjz6pDy*fq|@I4`_*?%F(h)(ge1*>f?@{dD8P zChU!3SM71fRojDN*EkpBH;P^3!Z@PXH7<-Jie2NvID*R~hlb=yTaANaSMBjcvvDB~ zo(MNC#Ialt_h-9N>{_`&gi-7ocZsm4J&Il9!Z^Zka4ysf#je^*;*?_7I3Gtl#jbHa zj&_P&<9rf1_+RTPo*yU7S-Y=WmqFX3ItgWwTPY345b#Hp)f^WwTM&^Z)E$ zl+8xz@$4IAvr#7SD4UHkfk)YFlnFe_W~FQs_D0!kl#LF`W}|F$aC6uw9UVJmvr#%a zcFJa>bad>L%|_|y*eRQp(oNW%s#&3HY(NjQC}b+{*2BDSXhe~a1UR!58InP)3(#^_wzRFL?j&UH~!*$@Xn zP1v2A#6y$7UO1G@PZ~Psx^FMttmV4y+eF%YQ)n3R~OE)VQ^3~GK%7uC<-K^Y|uRi-}>1O3z_i@R>;tiXy+)sDT zb>CjPS;`GxA==UGZZC|Z(#^d+{GoqG7oRvxabOUN{^I-PUM|FfaiL#@mvs3-F0&Ul zVfWI_eH`e|;VVSE9^LJ^?xXl{&UN2jx>?H&1O3HnHU$^gEuQ0r*R-KUI2Y^EpOYo06w%DXK_`5d#UE$H&UtscS{aPT`R|r z5}AjnEzNWHQq4+fp1YT77Rokt_fpMDX`Z{6YF0{B;9ja(DOG`csb-~A1@5Jql~NVB zmugl@Rp4H#S*Q(NbZqTX%}QyWyO(NKO7q;kRI^f+=ay<#%JSS&%}QCGTdG+p%X3RL z3uT+Sd#Prnu1xprtEHNiQWdzDYF0{B;9ja(DOG{I7~Mt(&+(7#SgKiV+2|hZ&MomD%C8uY*TkH z)vT0_j#AA^+2|~WHPW+vr;xXN;NBGqoY)_ zQrGkT9BHMRmBOSpwBu2#St&dOgraIzN?+1FN;M0GxW!a@SUr0e^e`T>J08;S*24$a zrw0_zSp6y4^uK47Y-#K)XjrEjPJvB-(jJ^zr*wRgSvUJN6z)|LEUVe>*0gC z**Mq32X(V@K@am@Ea!Zk;Gk|cd!b&an~ifld{8$J9J3$KR}bpufkXWTJ$z6%8|Qia zLEWre(8FvZ=RA++ecaBu9zLj>t=wx|Kl0>*y4ko;FVxM(c^-dIHxC@@nI|I8f%`0% zx_RJG&*9Q4c5&xCkLUS(=RzJ&-E8HCJRWX47xH-OX0vzY@y~dvn~e+gLfx!f(8F9Z z8#y@4H-@#IshiE7pDQ`2n~l5F!7~o(X5+41qKiv$__>mUy4mc7`INd@xo{|%_X0W> z>V>-5?4b^|{-~P=4oozTS)?eT_hjRVCv z7v@vyX0sROQ|e~p{IE8cik;H~p$8YX2WzNh)42!Luu-aW52|6Kbhq=M8aC?c$1U$U zxQA?%X7UHsuu`UT52|6KROcR4!$zsjJ*b9_Qk{EH4I8C8_n;a!N_Fl*HEfjX+=FUZ zDbu+J)v!^T$sbh1MrkI0Pz@WUnfyUDY?Nm52i34qn#mtj!$xT)e^3o8Wjgnu8a7HZ z`GacMsOy=3_EoB3qfo#(6FjKkJ>U2iDtT|2Jk_w3Xqi0Kuu^sz)j>6E6eQp17uB#) zs&fyjVWV`n^WYw`QP&gxtS_ozqx9s*K{afYp8PndhLz&I&SQ*J!$#?v-$6BOl+A@y z!$#R$NHuJf9$r4EhKV=Zn?74)!QxY5J6826>Y@AEjJ0-Dkz7=(+BvvkL>E0=cjq@$tJ0ixlGyC2guQdYdZ1v2*9!$#?5)SYtJD3!4I zuB}rhVegiVAV&MX5WW=}Y-!qtuSy3>(>8pjF;JSe-6@APM!wl}w&Yo>l*2~pW)waE zgpj5)%DTl2@m9TfpVWU*S-YJKbG6{R9 z95zZN?45GhDBX;@Qw|%YTeWw}VWVtxP!1b)J?+mv!OdZ#RKni5IjodP*gNI0Q7U2Y zl*2};guPP^8>JHVPC0CpZq?o?hmF#$+B@a2QP*lg(n z&z*AEC|%&WQw|%Y3p{tqVWX}m_}M2Yhm{&6ET5lv#{Co$maEDGif6P*SbQdmtIEb{ z%0-T;KwmWM*)A+OrUJ@o%0*5?p*>Bx$b~q#)pj;$O9{c1B-U~@IP7XDlv|Qm z{Ijc}$c6UcE1OzwNn*8!|28hf!B>WjOL3@lfqx~5wOo}h+i$gnBMX zEamdPXf3xSv2wcmMtfm=@V;`hm*NQZQj%E94dbXJanGRwx-)CfdMQcVbEs!Km5ew_ z5-X=mLF7Ul{2rLbTasAq=~58vl_XZ~N)DfKlq6P8mx5?7v>3B&l_V#ze+YsiE`BxZ3XXnBhhH9WV70WZW1bZ&l|6V3f}XE zFrh--^D_;TBzVX@A@98lFjOu zjgFGdO4;Zr*(_AIlzEPhlFdqu3qh!flFdqu3qhbtHY;VLqhzyEHabc+D`lgjWV2E> zI!ZPR#V`7fbzibsDH|Ono0Ynr{%5V0Y*uPq2ts|8Y*uPq2qG1F&O9yzfhyT7w&YYY zsW57%aUqCQ==amO5JW2U`)OPVA{D%!#)TkIC7adz>sf!+YRP7$#)Tl-3f_;Wk_iRp zuVo-?>B4Ppa=uFs(-iWB0mTD4>0#<-<2;X_sGF4wdU&F49ymO$>{RlCM=A1!frEc` zDw$k}!%iiW3vt+%E;#CDE7$Y*iMm-i+tQ`I5J%9%6StDhp6Brsb+d8TNPgs(6Lqt3 zp2ttr&Bl2iKT$Uu=Xv~uKQ%7s;fY(xYA@*FiMrW1*TWNavvC-8=WO|`7wTr?Tn|s& zN;b~*@WicT<6I9<)Xm0)aYWrba2OxFuUF%sZXP&{4|_`&{g1lYI6WFcF2u3v(FkzV z&1Ub~5P8-!b+d6{98otb7xeIirgSdU3#!YxFpj93t=uqw*{izsGE%o8(r8b^=ZK_BR-Wz)kGRr6qr zlxF-BRkKl=@lRCEMqTq>^J}7NHfr4ZMV(PKD zEzS5RZZ;dG8UJL-6lztjUWQ*(&1Oq8{)wvDD9!jMs%E834^LFhMrp=BQ8gQ-dU&F0 zHcIvI#LZ@-R1fpZnog-6p19d;wp0&K+-z3L^e_{0r&JG5RLy3~Mh8{1QCD7Y_Ad+< zr^bU3=o8#*Hd{72sG60MtCwMms@W(T9aPOm+328ZHp)f^RkKkxI;fhBQa#L_MyG6a zP&Jz^8y!^5N|_#};B(4G2UWA#ve7}+Y?O@-s%E2XbWk-LWut?tS*huI>Yu%ks@W*j z!xYF)sUGIhXs1*UPgKoTqUzy^s@W(T9aPOm+328ZRtnp}<8)8atk5+!pojU;Mke)c zJv<>T8BxskK@U%*n|qVgrB@3*^WW0V%6VQkmu^P zoE_-Zb16OIykHre`CHG?-gT(uS@Z(G(jrc8fFoE8VQ+>d|j<8VBmx-qHnEx>@XPzVFM^l~#ZJj*-Sux>@b{zAv}B z+@7DGm`gXSJwHFeuZ+6A>%hyizm#t7?IDIW%p0Yfdk*ap_I>Bl&C0pXol%VW7xsPU z(#>kmbuPCQ-Ja`Qex-Hf;7Hi_ol7@MxnbXT1~S@1z1VG3=vSqi)t>MB&ZV1`^L<}l z0OjSn&gEBqoD1`5>E^y%)QjClg*Zw#_Z;H2+o;He_F!Y`_$b}1_AnTX3vq;fU!JzM zc;z-KWVu|}9%es8E4MR~VtMoP1`xzw;ynzhZPhLzH+Z7wyelxA&nsbQs5)6AuY zh3Zy3TW-fK5{r?S(w_DIpqL%0EzR2IQo~AV);5WWxB^BzP-_{&UEHx~)R^+Qf z1@HOoR-r<_U&q7V@T=6YmUun!&sr@ttd#EP&ZUNx(jDEo)UZ;zqdS)x7HZM+4s)qt zrS!bRTxwXU@i;4LqSUZb*E9aCiBiK#se+wL4J)Mzb}lunlq%S{)UZ&dVCPc9N~waK zOARY^J=f0|OARZfJGyhJVWo6OcP=%olAnZ7D{FZuMFwgd#IU55G}L1_~)l)1w_=V@BS}T z&7(zvKI8H`LJoH4-=02FH=D)97e*EeX9wZAHX){?0A6X+vuH|Zw-~C2+Sx&099bxy z9rV=^evZjOd!rYRKaU`)hN~u8JrvL*h$iInlz}Oj`I>RhgoF#+qdgRC zd%L`>G+?@YHB&&lHQn9ir$7Rx+q*a(mM~R&$bwmOvf44#1PgVwV=4+33TwmUgoMzOp}`mF3n4!AbeEf#}DUYqJx&^0o@+$lw)9>N>J zYg657(KYhgRJVejv8_#YD|lsWX6ZJmN2sM6};uC#&S81&jyw-nv&3OtMUPLApc zF9xqob@vw0gg4(2Uz_UgL0Y_?e^=2l7}v#jTiXrxx8hLGsTQSwhYg62cY1X$k z#Vwd=TF?aCI;#^MgPVWyE+ zZecs78hLGsTYOtpBl8{JU`;hLuWt^R9wAtp;?_d-48htIw_>`iv^K>pSa&Aqthc7P z6;qA8HpQ)&YGl6p?2*bRjQAi;t-uwBbIv?{Yl>S7RgJth#jTiXL^)7f%uid!+AE!U>F71P<0hZ?*UcnW8%-ln+4nrY;t+$>Y?s%AH&UBTM2Ws=rVdM zVQ%1+)IEzXVLpJ&*IXy^S?NB8t>&$S`Ct)kWj93Q2tWyQ1AVJ`D`9S+Z#8cv%nfuI zy_GOG&}H;i!rZ`6J*Zl*o*<*Q66S+NW+J|qx|J{=K-6Q{YTini8|Yij6wJX#-)i1U zn43kH(R?X6SoE#tt%SK+3^IBvVQyfko)YE;UXRXa4=-VE;3cCUvpdtP0pmc>RqeG_ zKn>GXZN48Dtl1O0)RI}VCw8eN!>+yUGlWu0irF3@(^>b;_5jyXOJ+^?0Jl<0hN-^U zN-Y_t`erM&WSHukt<;iXs&9A_G(@UT?5)(2S~GpKm0B|Fn$BA*Y^9bA(>*}mPUODX z9^h7L$*k!f;8tqMFx>;(N-Zg7`i5JK?%S&RW-GO1)>PkYrIrj+eZxzgLZR2>eO7O& zC9|e`fLp00!*maDE48GU?E$h`+&B3^E1qbjmdu*!o2}H6VY&y%yRbr`s&BSZOJ+^= z%~op3uuI=y@1~ycnDO46mww~j$otF7^uj%&Tdg)uy}b#8<#vgn3$3)@(W^=>wB?*; z_38i@+Gf|E2HjiIqUhEwz&*m++ra(l&`Jt^Dzs(sic-x#Qsk!twO41AmC<_Qzs2e| zVU@?#ODPRDnV?@Qnh&mNh~8j5C7+2rxchOmBQR=izt(2U9Nq?R4{)slTnu16V|#<;VgNlB)}n*8j4>2V7cV{VsKr|NAGmTcfHp$Q#Q<8@sag!6bsf0a zzwUC@Vy*j|iwU%zLl+b1v7i^!D4nXfYHV7QGV89TQx8j z4cyzRK@V0f2GC<+Ee6nHVJ&vTrn$(EJ;@|iwHQF_Ipv~*ZP8$eg)RorVxf!O0^I3h z%W`{z<)VWv&+Wl-F@QFgaJYn`F~+5K=;Eby&k?=1WVbK5TnwPkB^)jewuHC0SS|+8 zVxf!nwA%gYS1txH&Wp*S$HH24i!Jl*V}Xl2xHCQ|_m=wh99>MHH47U$fgTH7OrXU= z7vYMySo;MwFDB5MrCbaaJr=qcK#PSgBEwP_EtIN72g9S6wHQE;g)RorCLJ)#b=Kf9 zT>JsZP&z?+j{MsA_Sz1h&0o_OF=zc#7|`sV~0qf^{{d=SoB!v;sru4R-t%CzgaInwb+4K4IcI|#o!SHR(+~C zpw}APWfdlZ)xEo;0o|+=&b>~7m;>D^&(rE1fd;GFwWf8UZNEap;&SIXWFIINz^Vf) z%1t{%YcJA#UArBrHhNwmDG*OF8eO&>E&1rn2G=icHha8GM(m+ybziAG``ghHfZiVa zTLLQq=t1_k1lGJVfM|vUS~b!|O91La+}ewH&5X|X^)2oZEEfZ4mCaF`EY=|FW1)-o zT!&27+OAr3ux$nO2Ft|&dUeyq09tj^MSHFvO#t^Lmx}?kSjt5Q+fG1lv1&1Z77JXw zSxUhV?ns}diwU%zLl+b1v7ifHht@YlgNqI}+28k^s>J|$EOaq|77Jap zHOYIE{e8*R&;hh&DHk1VvcI>;;S!2&`}#eIxs%5$q%Zmt6``ycmCD)7%}^5PGdDU! z0&V7IC<#nYAs%`b7yW@+E(XwIVQnXi9t&Lz7A+Rm;w3uH)VIEm?R_?Y{zNSo-C~`1 zA0E9`ivhG)=%VbZ;1;|(k~bKvT6EB#sO4e+IYS9}k7aa@_A-WjAIPw!{eUUE0 zsB{Pf7y4`hy(`j1x7gO6`=G0#18A|p#s2-~8df-iWTCJY6KJupp%dt_prHfU7N7fA z=%Np+tSA#`J*Qj@7Ht%;7L!FA26WN(*z0SU{-8`?9MK8%Sm?U zz8JuI;cIwiR4uy2w(Q-vU)ACTV%d~Y@NVdLFPmaxnO$*!->__oLu{-@N3S&ExfEF+ za0ux2+`rJ8%iQYqSiR7iQyje>Zym~tcl3J9TxgwJGBhml;+QZ+wW0kD&uDk91_O-_ zbRTtmI#73*2CLTy>QFw!+<}DFj;EtnM|n)?_+zn&2dypL;;5tb6!aZiKLuy@IJqT| zbJpM?`+NYs+S%t5$oY4$NEdaX6`kHjNVyn5j`P7_xfnoe?sCz<`gGc8kuK``DF&O> zcDWcptL}0!fL`6KMF+8wB|+0gT|dS5j>CL_h7O=rcexlquWq^+K&x)JXzQmqP-`86 zwU|JwZn~I2uWq=QK&x)LsOzVA>mdwjzRn;kLIAD0%f$eCb<@QFT6NP!T|dQnW9txA zivhIiE*Asn)lC-zXw^*@b)gk5T8AhX9jpZa8_~gHB|sxc7lTEsZn~)Jr&w08+AbFZ zXt7i+I#>$;?qUF~>(E7AXvK+f3#D8Ppv6)y2GC<+Ejm~Sbca~b88%&G!fAEuiwI?d zlkB`_Z@)>$8K z=m1(QRf`VR0>EIghD!h~7P@!|+lPzj#o_6aKx>wAFp|xG3I)JS0WYJ@xi@~DB z!dkS2)^?ZbP;%9xgRcL|#Q^#fl`aO*`XV|6?~xyqwswj5;37idw+NIodkiIkv2Q0Z z_U!=rV~s9eR|ucOuU#QNgiYF4nt3LoFf{=EKq<>Y9^*V<-W{gHvWjhLXV8w-adNlrDBR)10By zZ71$x0IhDyMF(qhb+E`uEEMh9iY{JnvOoGPRtThWsulxiQ%<=UK#zqkIv8agzpW|_ z?T?mnF@P3Jxfno?g)RorVqq;_mm554(N`k506iAE7(k1KE@J6fYP+QbedVx2B+#0rTy%>qC+IC!Ee6nH zp^KPb#Kn4PVyK*QF@V-Ap^N%z5Bex7*1Ekcmcj)lQoiv5~0rEJM+&A+~lw*kG?Z zL;&NXAX$u$f&|)Q4KDHyrm?o${b1%|0__RS+D@Ryg4#}?#X=XatMVS{A9jc2sm59i zU{kt7SEP$>5qYRsWQQ;iA04wkiw@C!7^%64Poda=#$Vd{5jeBQP!ee4nYEoj9|Q;` zfSA@KX1b^cg|HN2p_GdOv{=f;0D3HRF@P2eUDWd*_@a!3QZ5G2Vks8`=&{hn09q_` z5gl(BR&dcmDHk2|l&xG0pvOWN18A|(MO@J%F4n0-8~F*eSjt7W*mm8A@kbX8#63u< zFXH^{=wiF3++7TyO%dgygKg2;Ty(JQefJ=0vHu!s({wB50~uCq=m4U-3rH6e7$>Iy zwi5*EA|jMpY#S&&S1tz7OQwqfwD#lt8Njw+*B8xNR7H-@4q3_NVgS8lx)?xvxRi?* zh!u#29M`e}E3Rs9sKN=Kh;C!5L(%U27r@yY$Tjzbvz3bWO&(4X{fdUFAe;y|CvD+m zqY4~qn4PQRP|r8%)#NM=emm?Y8^r|MnC}cOI3F0mx_fRYnU~unu+5ykMHcNop5n9z zF&G1QPB%SBAKfBWbES58pLPPRdMcP;(SkwH-HY>;7oZxkCMPAcz5{rw(>@jioj{9) z4U<5R1wkj!Vqwq;v|z}|?0}$8b=t?mpabZ!Fz5hUEERMBJr)KXK#Qe1D185DypfQ>EPZqSaPm2|F06i84 z9YBkvf_CuKr+q98I)D~S1syE#rdYT{Y z3zx&QjV+x(j|D*|&|+cG3G`SHbOJ3F2CX23Cw8#pQAF>6I(i2 zY$LMp#Oy0B@;RMAi=~1Vi__6Q@Hw;~gO(i^a^8S!=>U2IGUxzW16E51&>N6J zJLu_71uft_?Ou%x8Y-Y4)8woctEB_zU4lUe(7Oa%I)K(Cs-+!7lWLbp!Mx&`9s$Ye z*%NTNr308-I)J&Q1DIRdL7zjbr4^hWi+A0~V$gb;1zc|F0OpnsU~cIE=9YF43mMXY z6|{gDtDem>XsE!xdz149tT5qhNFAyrV3dMHhQz|mf z3U-Ki#zCu!xJRK<=kD_H^SRdcwR;XV$orn923x+^bDSU&SYZqxYA}K3A!{&!)h4|~ z)?fmydRT)F9_=u0Z;_lF1)Pp{z0=%t6?6crXAdBQb`Ys1diDS^=m6F*?ZFB#QIgC|udYk}RU=BKfIp_f9paYnLcF;#w1+5@vc?*U?y>{5W18B9wj4Xi`O9gEf z&(*`eb{Mq2Ot{STsi|QYRL};Vi-*0z3OayZI}AF2Ry!4R0KIlXFnAQ98YBZIXS+`A zgQFgF0L{e;I)LV4O=JP|24qV+*mgJi`mUA^pw%~nmKPpTIj-8Or32`(aP|(M#Zo~# z=nt4`=>S?R6?6ctVGy*wLW!W;6&`&pGUx<)EC@P)m{g^YG3W$(ENJNjS}Y7Yfz~kO zJRL}wRSQvBwEtU$}L4Oo6Xxoo(-^H_uEP);igANugmI^w69t(qZ5Hpqxmxp=wQ)e zsh|Vsu`p-{{mEZJ2hbXZLEEwtFPKg(9YBwTK?l%csh}P7CqFZ?V9}Le1syC}Fbvw3 zm9}=QL1*s-dMpguEZ#8Gv>MsH18D71K?l%csh|bK%1Jv<*ayR)Wm$=wttm4NO zx3q%O<}HYz?XyAPyaCbD3G@a;O9#*!kYhT5-hdd>3AEnG?rq>Jd?Zxso188yfr~Aj zz}V6O^hB$I_M+Q~ihjVbdnbz)O9d?!am8o5-mJIC-A#=2Aq@p*4amxoH}zq!9mwwO zaTp}f+Yc|07`QL^B)bd)mMm}kOyJDJD%rty`k{AmWyuO67V9}E8Jn3}H+i2gf#xDh z4xsPzv1EDW2DRM|oAjYD<^)K$Z-D`jW|6$ElJHE7NR`1kK(+GFNzJ+jYCqp=WRejp0w)o$3 zsNNg?Pwe4|k7npOHfsVawdg@sa02Ur(}OHoK6eWb+oo~PRmlOYVcvsPvV(05^&m?| z+9ol#G1PNavVn6OLp@j}8#uK@pa)s9+$e#V+n#aHRml#vJfH`wWCz<>qaI|*7%viY z6LCFPB?mCKa{yyI%cTj3x!wM3B?mCK^96qRa#qXjEo1l_&8@c~-&$Xem(O4S zd%Oj$Zo=xQPTYf``Dw6H6XE(qg3Yxo2l5s15%zAKPjao9<@O*#sPgWJYgXF>faTATG!Dk1pHXA2A^Z|T(m2KN`lHQ!YwJXAUZbk;&=Rpt9eB_mm z32eQkD_Ik!hs7GTebHRHOcrA-S9){S&8ggagB42vb1VVOu>>&362KJ8W_|jGm&2s} z7)t_UED4OUBrwL3z!-}pSGZ*XuS%p?0+?e7V2&k#IhFvXSXQLqBM zFvgO=7)t_UESP^JmUjN%VhLc5C4f1W0OnW%7-Nyd9DS@UdRr_3%&`P8#}dFCO8`?W zyev`Lr7Zw!ED4OUBrwL3z!*ycV=Q=bN-XEIw0jzG9$NyKV+ml6C4f1W0LEB+j%e$! z)-D0eu>>&362Kfw0Anov9LmpqTr8yx*uI!C1dZo@0&^_EVvZ$%DVEuul~`3y&zA(o zc1d82C4n)P1jbmp#i5oIVRbLY62Kfw0COw>%&`P8#WLAEw&&-50%I%*jIksz#*)Ao zi_H;xe(qzHPR7gbxjgga1m;+R#T-ijV=OjD?D@Gr1u(Zu0COw>%&`P8#$t2Co}c^p zmZi1}WS%CWY?lD$SOS=1xj+cJQrNf*{HfOXcr4c*{?&5AeZuP{{c^(o@(Vxy;>)jI ze)yx;Uwrh{r$79h&i8g|H34S_&d2RzHDNiBLcJY5)zV&Ho*ry+HK99(cFssmUH4^E zapLyy@kzfob*&uQN4c8egxk7{?W^47XxA+Xw|2+hPXEw~5-|MZmC-}F%MtxUeU02Y zS8pr-?ezaF@0cYFBD{u<{;JzKpnQ%Yd<u-Ph)n~8UKVPQ%*`a^^qt8FV_Q4NWcfB?C=L1Q} zS$U8CjBAu@4e%{!>(A@09b)f6)Vyv9;PtF_8c8{9JPhr&a%6~)Y`5+hRJ9wp;2WFt7hPbmm>P!7FAbP_4%U|f7^^XW?GR)i3u`BVG3W%w&U4e*Ydv4P>Wk(b zunwMI#pyv-ql5e)p!9F{vQ1abagn42!=e*t4a4e5phZm|9bDSAw0$rrc}2G$o0=aQ z53wXLHnoE*KBgcR8HY zI}Yyc1g3%4w$S;6;f{g^&D!Z+Haml9sY`FMYRACUJ5Tv&AkQXC(FCXN3YD{Au<9fr z>v6)fXB;xOcJ57mbZ|j?iADSb|2yp=HE7k+UG~FY)$borCAoN~dfNLW_jvinr$}-? z{^4)De)&HC_2ug?{w%i8e)z>FufKTY2%TBx2-H_+$&VZXpF^qC2^0G>IT5ra**I%E zl+T>x%a@P7_}-^qz5e2@rSghaFSW8JEww{izd`0{?xoD+aqm@cklgkx`jNSxnMoHe zINP^FwX{Jxa=wngV`qykEF5ymGvr6P?ezoY+`o3&tZ@B{Ue#Bz|CszkR%7K_2SdCI z-V0Fw+SD+{;oHi4+Zz-A_{B7_cRnG-o(|6G{LGHnVaQe2 zLk&DTJbzWce?Zmc@uJy%>WAF)>gDU-`h~B*{K|(Py#MW&FMs@_AN}x)uh{y%Ee@XU zTKwlYJK)0G(ML~db4G77_xSepc;!OPRS!_EJCa#F3N2yv!jaK^XXe3KAmngNT3e#B z04Z0G)8K*Ko}0q)%OIn@qpegbXCvrnk5}cod)8VUJR%|uf;d*&fj(LurS?qgA5EeN zw{#!yI?HWG5S6o$i+hHHfBkp%PJ8WmpV*s@XM3Q>v&9y~`;HzD^|{YcfBw>+`{*}* z1VQ@4@4tMBhYSAo1&(jL{N&TGe*NVe-}w43e)|Q7)u2voYz(DxY#dhwKgI@*`?Kr4 z4Xpu*x?EOw4~suPm3wsdhd=)6-7ao8nsoNP%f-5&&Rp!!bNC*0B4q&M@IC55WSn+q zypPF=Pr14KxO#O19PD9tQO<@XIO`0UaBev3Hw-r%%CT}MtVac~a>b$G1q&VtG>a@5 zZLcL;BvrD5wL<762ar?X0J3B~3x$}CtCAh8b&$be#q40^o&$)I`C6XDTnlUiM}q;x z{O+Nc`oo8`t+LCYD%82j#Gzz*cpb)T{Tf`Xn*>@1tCH2?(mwuVC2P+HXCbpyHU%*z ztYn6wYeWczf?z1P3@W(roh1SBll~Uh8hhYk-53ZDtyO4HPkDi}g6W}y{FsS&$cLDw zS@>vqDtPJM$7-|4g84`6vET$+!EEIOrbb!1i-XRRYwg_{C4m-7l^iTuEU4B+7c1w* zXY7hOfEG%X?4XZkmW&yC9QBL$>@pZYt8E%oVLG$=rTNNW0Id>Xklju^EZJhMl0fs2 zB`44-ktKKUrkwqu1caA-fyir^VJ^sI-;vkgEyE+^HS_e-Bo6b-w?6uk8u$BOy#CFX zmtXnpqdyD9&3``<3UvZg%X`PQ&i2S5@D(QWSI|mxaMJx%*aev9|Np$bU1`VVZLNk3 zwM%b1^n5aGtrz#rfH`Qs#<-GJsk8LPU2g}qu?G)h$GJIJ z3yp)p@-TokKlh=qZdC3fZA^`_=@v6M>xgWW0M?@F=piaQfb|CM2%_Hv5D#YWH@xRY zD!U~|eaPjagY_=>P%;KCKL{xXYf*6EP>0>B(4+Ngv2Wm5Z~|i`Vo6p?p6aB=V3C8* zE#mG3t(yYP;wvo8NhPx5xW!ksGB_4Z&@I;SxdCMD=qnM(ZsIiSAYNiH7a4T0=;N6# z8i>z+nMH!vnUS*v`5w8}4vTiMR+}tnc^Qn?Vw#K9B^+$|a^GpI0UgAHSY2c+4x$% z^+xL#uYd3<)8sE1eE(;Nse32$nO@?HVs9ra7sg9q_uZHLa3bdGAAkJ%%P(I(`{=9J zpMU(RmC96gzg}g07JIALum=YPJ=^=%l8HVN%=LC81|K}FR#Xm09*04LPfXQV5Kd=D zoN%ePeFq0o?kcM%}BL)xiVIVmXAnNvc=mDOPEhG#+&*g9lq5iaT>LAdC>jV>n8 zVxfx(v{>k30xcH0C=(A|v{1@L2faI#ivhG)%EbU$EOb%cVuy=Zb(IcVE(XwIDHk1V zt3>^{D;EQ3vCzft7Ol#2?sHqK=?#{P0zzOlovL8}(Tayf3%X(vi>RHp2-91vSRBOD zNvaXC@D==io`*p+lyHnCf!2O>F@Y8fT}+@gAYJrO>e$#gZ_-5pAxWF??JI||uyhH! zEt>RT#Ud6_J8jjZ2P>8UTF{7Pg(T9FE#`93!M1YImrNIf#kO?OgLE;0)_`!4w=ar| zbvVbWJAoDpU33turP{~nVgS#?cARM~k-t-ShEAJ6i@97>X#k7Xe&u2SEojstztcU| zB6eVsiwU$?=wbpb7P{DhP|}rQAiI3Cl5WrY`_fhfdK7VVuaZ2uinr(3VHLz&*CrAL z_0A=LZDGYgh+wJ0mKyXRYetL40o#@v^dM^{fmMY)h@dw)Hcf-o8+xuL#Q<9E(8XY} zp7=e-SQ2PK)5Qc@EOfC0@o1@v z#x(ZsM@w7x>`}zwv+>%}f}Ud>0jvY)i-I?KB?kvUn!+|v4!if^x_JTm_^{$Oc4!xV*nI@I z+;zNYepgE@GH3_aHtzdi&@Ma#IhMS(ao=+c+Cg5;B_$J_Wv3AD5?~HVpap$vTl!kG zT?h$_wS=u8PTpHERy6yL2eURg(pzLTb|B`a7H@ZX4QsAS9E!zxALt}T+@WD^0*5^v z;aG(_?g>`P-5X3Z2|;s`ai~SiO--Ek7CB7q0mN7AgNqLG7*zrh&)C6kb?5U?IShJ} z!2+P2cIaI!&{D;o9()GsTo2*s0Y-A1cRUGpdwd08hy!h(Lr7sDh3HI z7?geO(4uu6#*!>r-$?_Xo3aKX7CVLt&iYunsK-$2<_U?V22}v9c4|;L*f#3>YJ`hi zG#V?Xy{&IuCxKQnT}+@=H(hj)`;`(jU6d6SWOi*~u@8l{m_X}`<)T|`>Y=w-E*jXr zVK>wcT%2U-1&0>veWHP*iwU$*Ko=8e)lC;W5VL31A0~-6XLfCa9Ooj#J27}y^jALp z!RH@+_VUT=FF*d`(`$?5gBQNF_9a`VxBiCx5o|5gNPG+0awvcmeGkUH3cji!Ws}pr z3fQZzruOit=sP*~KH6!poh2RW5YAY62Kfw0COw>%&`P8#$t2CIo0>&3 z62KS>7S+f3ZfobTEtUZ0SOS=131E&TfGL)(`y5M&+JiDzo&{`|1jbkr7-LCbj3t3F z7FEB;*2Ian%ND>KO8|2$0nD)kFvbGGDSfOR{Nnow*^dNJX1X`ZS943L52Qr5V zU|WCci>8k}n=HX#+K|Cd9}^gTOkng;LF^ynsVGG=^~b54(?#Up)pXDj@5sNgrHI3* zc4gc8^1-Ly`{JW7ehc~ck6wTN3D2m$uB5v+`KF}%Xxj^KLC>W7Xo~|q7?bXMTh&$0 zlJ0xcI>Ox`ruw$SD_d>7O*y%?ja&^C<>b{ca@EAb>3KtP)+~s3yWX`s>*e0o57eIS zK)_yg1m!Ggx?>Rq9Y#6bV8$JM^*~cjPRSvTHb|7Sq~P8b*_G1`aM-J{q#UA?cEc$2 zI97Ww^Uzx0kp<-9%G#HyUPN88I# z&fBBC52l>72X?eEg?c?N(jMeedo0o(JR$&+Ra}a^4>8kiK%>9_`?Qa-ls^ z`(ho|{7d7F$6xyXjCk9|pqA_H(M~NWC+&fL+7^z53p?91Xv?V&fup&#JM82t10K+Olv+oK%?)i|U*P;N_VmGky! zZ#F9DY?@aB@rgbynP1~c7Oh{!1-=7yC85woUu8oEqaa;OppCftV30Km`m|c4i?$|q zw7ndy#ROU`<)T@NTni{;`4A}w#@?f#au{DbEI+mOl<`SfU&*P)d?k4lB3t+kqP zdNc=|c}IH~GcrqJeqig0JqDzEH)T1Bk=3pZQ)gzA327XM}vmhUec7Gic>tBN;^ z&imKfzhCB;4}R&N{gcbfm%oKKTz{k8diV8T{ssK+<$FK=l6Bcz<{OvWwO;l9=>+<5 z4ZpXb-vo+JUh@>1*u*&KKWPbXaW0_k5%%_K`np#0Xl|NbwMkPs{Pm+5i(3yo$GzCS zyV|q4cfKhq_WCo$#UbA6X39ZA_2uHq!Ir!Uw{(jW4|~=_5bx40IyC=q2YiTw_nZyo z;_BkW@w)*72mfkV_5Lvf<=ws~i2hw8puZ59zpCFqpz30``PK5umy7s5^Vy%i`1F$> zyngvOzTwut+}4-Hb)@-9Iv+g_@8VU9z6E{sxRw(2p!GQPOdRg3DiaRx={Io8XP=ljSi%X*E_+FP?~Hs7X#SZtut6I2GC+D7XxUq&_x|c`_`T< z=3)S?S<1x#S}f&a04)}{c!Mi4=34ftE(WkY|9X%vCeUJ`iwU$?=pwqixQMPUeYWIn z0IgZdMF-ov34JW(VgM}`xVYJqgttir7ZYf)(8UB=EOaq|?dWkI3tjYK)s7zb9BVOw z7E8GpELtq(VgM}`x@g0yeN}jvoXW)jTC8rb3 z44}nQE(XwIfr~syHx8HcikZG-)?xy!S?FQ_+kQuHkuE0CVxfy(+igRkH&`wP(3+)O z44}nQE;@K71>M7dE_!XZHG6Y0fYvPKVgN0caxs7w3ta5CW!f{EGi8``5@^jr7ZYf) z(8UB=EOZg;$I=&1rPI|m8#;jg&@UI=qCfS^#Q<6?a1l2|sf%Z_D=sF`nuRU~(4YEr zF@e@DbWx->zIxU!E6~1}Kx>wAF<7)%%0&nLsZST7Af=&CX{NOpKx>wAF@P3Jxfno; zg)VkiRi4AeANuTz3AAP@7lTEMrCbc4#R3=muYfie+eabn>Ea-ymkxcpn84^_2SPp6 zG=eX8yjeZeY6R{rS|(qOzy}q=;c>dxo8+Pczw~u>o5!L90x2#07W64LYh9%Wxt?P^ z_Pj+`Ia`-%pUfS6M4Px0;)<5Wf^L(*s_MRAwn+l3H}oL8O#s_DjUI%HH`U=g7A%vC z3AB>wVghSS^(E8A0JftzJxCXQ38gKy^c)9Y0!x!Po#Q<96l#32Ffzt@k!8`XtYjn+c2^B7vzxbnD8GdAsFT zechCc*8=ntv{=eT2U~vCTV!pAqT5bl53&}!7X!{(Z248sm5TwiW+@i~Xt9)w4z~QN zFPbiD-^K)C%~CD~(3+)O44}nQE(XwIp^M!y{<9Wae$|IkE(XwIDHj81v6PDev{>L` zfAHtwqJ=^i1L$)OT}+_GLKhQgvCzft(EaJ6KMKml09q{NqJp@&)bhJ>F@P2eUF?pP zm5VTFp_GdOv}P$618A|7iw^ojpDya=A0B@eO1T(7i=|u)pv6)y2GC-mi`}8DvljiC zQ7#71Vks8`Xt9)w0kl}?qNT{M+D40x=m54wl^!e?-J<7W)il&Zx5 zTC5yEWDHeNxYgoG$?76}~;oCQMvobx9>-0P0Zo!t-}IJg%$ z3xni;ukTX~CiQ&^R7f4Dm?|B38+z_QO~~EE zP5h+4^tEB z04)|hy7(yBVzHx(H7r-WNb=@E@{MNYZOFH7-4Upde*JqNfAz&@6-@U>2)aK6b*oW; z4{+BxmcfIO{3gg(_?X=}oI8u?-2L&R+jabCFehV$=BC>nEB37I(HyU+ezeNT)w>$T zbq|tqZ^QAZVDHv#?iYtQ%Udgt<@RS#9$XvCBgex*y?=Q3ppGf2fBly}${y}xV0LC) zw{KD0I@cKw<@$F&ntyw}Q)FDXvw7M(C%G|>8QJF$2mEVOv2f}ixKz)59$e*a`#C3# z_V7vUN4a=D)G&gWe{> z?c>KK@8qy(?Cmxo?>OT{XQ}RqT>8zO1(V?Y<+k9h z#;|xjzwv7JwKuA{0{m;UUoDHh4Q*X@+3RfB0EYPwAI7M67LDt2h1PWU`s|%?*Eo6% z5lq^s!af%Kq)!1(d#!8roaPD-u=-37a^21>;ueK!ydJDfuuD_QBEXt@dk`-6DZqoX zP&8L~fHfEO25SwudwbylS}b%i6y0Xk-XdK@iaidzSM>(wP}}8V048%TnwN!OSu?8i=|u)pv3|gx9$$5hl>^pT?}BGANpA6VgfA|x|l$V zg)Vw+x5r&ya=92li=|w2uszFqi{)YfEf%`ywcRq1-e9>HKx>wAF@P3Jx#(aWNF0U% zUDW3zu2-~B%EbU$vy_Vgv{=f;09q_?5!tMc==KQLT1=qDLKhQgvCu^a=QuC&)}V3H z;Q?Nm;#rFcw8|+LgGH;Ha?!w7O|ka1!&*dcIlA}?D|yL92kRx5q34u~0krBa7XxUu zLl?W-GR{e-C8m8SRf_?%Sjt5Qn^^8GmWu(jSm@&QQb>E2Z?DizQY{8BH*^3kmU7X- zCYJkH=%Qwnxa8bIsag!6#Zt8xK#QeZ44}nA7rXu7*3e8JQ!NJ2Vks8`Xt9)w0kl}) zB62<%E?nmfE(Q?unt*gMfffs0OrXU=7foVJb(h01P}$H4v{=eTw}=*%Sjxo!S}b(2 zyCM2)=(<+HT@0W#OSu?8i=|w2&=V87h@F^mUc{%QH0G+s09vz@ivhG)%EbU$EO2q| zzPo(ZqUR-aF@Y8fT}+_GLKhQgvCzft2;aj+3#D9i5L2&ov2rnh7E8GpK#PSgc879L z7we^9>x&7rSjt7W2wx zxfnoemU1zG7E8GpK#PSgdTskdzg!HU#ZoQ?&|)bUFA%FBEsE}=JDg{#fgi10s~{`R zY=`@&=H(4X_;|kOxv;`DknU#V_tCSt27+srYf1Di=(z^c?pYdaVhv>0wbS)g9ZE8; zd+XvHROcE<=OfyrKS%fATHAFT+a!QzmeYZ3lLWTL>p-@NgZ#7)du#{7#r_;!bCKU^ z5RNV;&`PF@32fb_E150^@O(^mAYJTsjZYWrcAp`Xaxs7wbGhi?`IPKRE*Ar6LBmB} zx<5WnIh}@DOrQ-Ix|l$Vg)Rp0d`xz+&_##}aS`cEaxs7wOSu?8i=|vNkl!7ZqUj>m zo<|p_b1AS3g$?cC;^VZy?&^ZG>(seL>pDw!Zt(&7RDz=WtDG9hjRlFNYR7_^&uqU7 zrfNq)%wkqMoSZb41s`D4l2MD@ZQPH^E)SOkS}5E$44@B}I>MmqXZW~`^)berEXG*C z4m|<}t&6dtrvT>&362KTsclxt>4&KAhu>>&3;-Jsn6-xkfECGzM=spzA z_vTmvm}7AeiI0vejG!riIhFv%SguzA9^>U)O6mq`^|1ivSR6dF%Fbf7O8|2$0gSQu z9D%u4YO!JoV2;JXGp*EE0+?e7V2q{v{>M39Jjtq90+?fQFl1TmV*$*u1Te*dY5APS zkRaEFD3-OJ*(`rmzkfiLApbodDC$kVX_N3(Tcvpm+QtA9--@FL(pt*TeIHzTgw=Tjp&f25BYiC?&k5n&MiLibZ>&4pR6+8*`V(oFB=h1qx_BhY; z2siuqsH^idUORuYzN!~ljI;J=-{m#V#>b9qz~h}md!&BPFVK(Ue8&QKuxIVTTQ~#f z?SWmqz=igR{)P5P{@FSt>N)w>Uwm}VL#R>rZ-TNI>*ZC;K&2nx8(+qyd9uGC=`0tb z>;L2ITz4cnlI;9OiOPt`+fR;m$t6Te1MM!LzeRSD)0$?J=x)wv-(KgKd1RW~IaM>% z00V->FWv2!`TZ6q-||5E&bfZ8AJ^KR@*Ht9uTRQ>xoAAzAKC{maW|tEzWVU$FismG zjMU`(5Dw;wQ+WK?fufe5TXUcY>8F>6iCUgvq8tl?iBb+|q5<=iXZ18qbf9QyrJtR2~sVM3=pEK*_H0np^%0=V7TuIhUuh02VV!|&yJ&clCzB#Mu++$^X z*OBKkJJ;tl+Y=tiLjCAmc_MS@z}+Xqm6tenF51bKUVXB3=b~VBuCGzRzG$yHr}2nO zv|WcR-6A~~kNRZkZl8us2vu>ZpBd*7ZeHxEE4baomc;NPm#^bEQsP(9<3AN=g)ZxcV~*ExklV?5i(EhuB3 zj3e?Zo;|(#Vezz&x1}|`V?XDC7m=O+>X&x+^ql{W7+rK7&VRCxihNyp# z#ed(S?=l2$A$O}Xss**ZGY>}4tj0<2%yMWrtrer!Xz5Ao!+D5FPgQ_ zYcx(;pJntKjg!`A8NJ5LY442hF&iEALGe+`Mz7J*lU52J-FE3|Jn|Msi<|b&eEvcG zti3bmkA{jFz&AJTsvmHSQP`-{Kr zSAT@MP;dKP=G%U+liz^Ea`KqbRt{}ez3q1?xBVJcFI+LX`)$9@l?8#wc3X2tvvXzQ zo95vw#SBT~&ZT1uZoloz9f$J$~8Ua9sy7j4Ish zTO{9e&MO;-{^H(a<;^mbuh&b~9@?BdRa8QYBCv6}9~v6hV~dBmFl;p(s@3E>)Q@O} zdU}}sPuzY3vU6zcCJtk{@Ll81<>{4-#gdCmox=^DDLvR1WvX%Y-PA}ATr@+SE02`~ zcj8?~^$SjBNxo55T6)-Pn7K6{&hPP9%kv()eJ*Zg(G<;4M(q4XVL==7|8YmKpBbM*jF;RqB*jLgcY2tZ z`GQLq&fJF4>XhD=p8}eM;FtBzLE1O&K{or=^5W6p^5jS7P~fI~_e+MIEAyC052wDf zsLnd-JSI83EEh$!ab^E-=fp2)5EtwgHv4j1U+v>wvIAoRRY4x_abQ-?Vj-uW4$RtA zK$=*toDL~D=&d=2i3;Xuwt``z0YyugXh6{d6L}h|c`?V8HRsroH=u-tCTfb;90}GG z^T1HgdRzpqAWbY2(e&aqhi;V%6AdU~2@?${TEavHa~Zm3O%t)xH+%7#r&cQ$CK^z} z5+)i@w1kNU6fHEdj{@)k3#oo#q5-9dg^30fEn%VoMGH*q4IL~LCA3hv(Z`qCM*|Hf zLTKNELmw3c7Fh1x3F8{U?Get7yQ0ug&*+ZAnx`5nM-dJTwH2fa1Liq|3Q~pxMGZ|X z8(qW1JUCDj3=<6)ajRgMXh6{tCMuYF_%%hED8mqZ(wu!o<-$Y*Mj5PNm}o%J5+)i@ zw7|sr!GYn$91Pc-X`%x~3r%#OXrYM?6fHEdtS#&&ij*)>!R(r=mN3zPq9sf;plG3q z7`U{CGZznQ&S9bfMN62dAnJE3I$@##MGH+VGxOm^1gj+&CK^z}5+)i@w1kNY=CGi8 zhbHzJE#7z*DPf`kMN61yK+zH=8c?*r#M7gZ9i!d+47k*22Z|P&=s?jz69wGX_{QFp zHBCfkJ(WdpB86Twpsy|t6fI$*WPQn1$`qJUS-9a}Y^7at2x8R+er^S+v3m}o%J5+)i@w1kNY<_iEdYnoVA`qMf26}hQE zgoy@}oWn!|dM_%7I<8)%oVhGs^I&lBhR z1MNV`IZV_P5z&@&nAkx)Qs7Li$J(O0fU_n#(3+^=*wC->qlpE?1SgFv52VQiCl=xU z@Lf(E%DK;(`cZWVu6H@#KqK!zd`!M4cz*P!`|{s5j>*4)-UlW*(kXf{RMZvdagVen zNUj`{&t`EPyKmeHrEzZI$Fcj)_1y(5ZRRj%wr}ghS#Vjt8rPTgz&X8J`M%@OF`D<5 z9u6CK9XV=hoa}y#WA{xjzpmNR8`Ir6z4fsTF~%9=*nLm0TvQx7^4NXn9!2J!o>Ue1 zc*SAuZl8+>b~1!>@xW7(kK55r@0hYTPUA5K zUyajvjH!L&G#=Q8QoW1D11n;NlXzfj!*LpqJf7eDw`e@_7EtFj9_ZAJeI_2R9?9}5 zjumIeH2bd}KOW_NtWPvf<1xnTjnjCHwX()(JhaO}J*vlBJVa}Q$+#F$Tf#U` ztyyam7g`Kxwe;cbe&trQ7|_Q>L2VsEivfLH3~06V9cFaozKj{rYf%v8q}BY;VnDCO zfL04;ldX*9QFn=p0lgLl^RQw~F|-)aYcZhJ(oYEBQD+|)19~kA<`F&7VnDCOfKJP) ze90)PGzRs#wp$t#^ewsu^@LekD>-Nv@iy!n=lxblRl@VK4$OtTk}<>QK7JfW z@A5uW=gO(*T}M>o&S6N=^Nn)VxpFFcPcLeF=VTpg+`j3YR;6s<8h6rozu^njE}Bpz8wC{-ka?VQA8+~#Q*jjm}9t#(kd7Nj%1Vp3X@;#(kd7Nj%1Vp3X@; z#(kd7Nj%1Vp3X@;#(kd7Nj%1Vp2lfEKJMRiPU11{^K`Do<9?r~bB`AV(QjnUEptzH zQBfcFO8IpRE>Hws?^?dU&i8r#&zI+)qlT0pp)S<>JlELATNYdwe49ktx5I)PD(m6H z%imr;EQjUrKYx4q^!(-huOH1%&-ilV=w`poOwQ-0e0HX4fH{SXOfKtsyd1uM|MTyk zUiN=%=fl7J`+pvO{PmY#e*gIX$H?^X;r++I{_x?~AOCuI_x}0kPtU(}GuWZidak#>PVj;I394HaywPpuO{o^|?3XW0xWFrPZ4pcGd`5Y)>a8t#CB4$D8 zU5X-xPvII6jcqGAe4*HZB4)v^lLJ)@#+wdQF(@Yv6fx{!45-y$MT_J>5yK0G4iqum zC3c{QSSmib#+K(oNH^>|)V%R*EZTD;*`Iu@;Fq%gLiiy$c z35cGkr^uYk5%0`-pJ|nbnOwP6x^to=EHt1>VFPYJu`r|!5cO)FKw%F`#OpcMPb3p?3_ZV(1+K@z{_n zV>s$G4-$B!)0J)msup_3fU1R^zX4SXy<TeHt$sFwb7q1UZCqV9u^f-Deqdpp1SwgmR$Fa_B_|su+0DfO&9f5`!U> z14Rsd?LZO3A(R6}42Mt-6fqn^88A=tR52VvIZ(x52<1Q(gI3UiB8EdK2Z|UDp$wRN za#ak6P!1F^Y%d)sVmO3ypo&4y=0FvLA(R1gL#vA65XylfhC?U^iWm-|94KNqgmR#W z;SkDzV->E{YkrN|fhq<=Cwz3^;B%+{>|)=im!IE%{_^tabN?9JtUffGD1V!mg7zQ!)uTj;+02A4D|W%(_Z>0%&0CCGKP@)_}{ zjJR3H2z8Fz*;BEEcR11%P6ByVFCyO)3iXuU`HF^E(>s+jh1pnKQIQN+&N=TK3wgJ% z6reHj$oqVq;{}r0zFV9R77l-%xofOn3Rj-(81}_RO>*qfO@wSq5-A&hlvIhEn%VoMGH+VJM0 zO*w}b6^sLl6Bs5MP_%@J1{5tcu^fLNUX0iMr<}t?14>xJLO*CMPv?eVyQC4kk*qCxA8c?)^i3SucVWI&=3r&>v^M)eg zOf;Zq2@?${TEavFiWZtETRS(b_c#+3j4ApQmN3zPq9sf;plE@KN0gpcqqWy%S#+Ri zp@{~J8TzD!CKeDQw@3?J-J9FAx5M>vz8t5q)mMM|?q3hv_geCw|aIiMwm5UmQ4r75V(T;*q;MqL|;Lk194ysGAqbJ zY`|DB?^^1uo}nd<>r5QAIM8Zwpw;3)t3|-e6I{{ahq%;xLRoH};^|t|(ue9u&}%WE z*J41gMZs7wpKPR-J_*0%G;`u2E(Y{k4Cu8O&}&gJ*2^awsioZN8F9hftHm$07|?4m zpx0tRuSLPwkrgeyjX*{7S`6s57|?4mpx2^cY{-h1a;s;=CEjeExQL4Zy%qy{Ee7;j z6vVPlD?2D-_2$vglC%EWFj9*HtriDbEe^C=42TtPqousvI<(}BUbGm{YcZhLVnDA& zLG4o+7c6~EVmoWo+Ee7;j4Cu8eX#4#Wb`$3M zazw3n^~Hc*ivhhB19~kA+J0Y7E?&5JZnQYiYH^^|;y|m#fVSV?9t+=NHT&rMeFu6i zCPlBsfL@D&w%_0SN(R1L>EmKRuf>2~ivhhB1#Q32&pEXE;`@CEdMzeJuf>2~i-NY_ z$7c?@7Tc%R7kIMm<`w8xuh1^8nETGY@$+&yqIS7qmZIq`k0b7*4%~8QppQ!&80%0K z2~O9!t{v4uZn9a;=%wUpO*qHH6FH?dF0)3VzkcG?kttJtE9!!Q zaLe?XcbDEmBU3y-dYpI8b9MK+=lk0;?yJ1)JN8|}1v})LbMzH&p!YS+=zS`Pc3pPE zaf?O#M^5GgOD=V_^y)RX>{FH;6Le1IN()v_nzy;;+IO4r&Ee>7TY77`cDCmmb)<8B zw;t&^zwpx9ROi4&Rch(6Ky*$50v)_0+PSE4Jv~|1TXMY8IT_b1xueoKja!auIw$K^ z3x28bz*VoVBaWd@MW1?Qp0dPiZNkaA4BvS(`D#3JAE)V%vtXA6tBac6QR4xt4X5$Q zF;~x5~Gir}4nqS;J{O;z(PM$5G>v$8x%T8V~HTYra}NQ1KP( z(LjUhqH!({KWDFwE~F=i5$m~J^4vM`9(#WWO0%)z6o{7L(#nvxpIo;A`Q!%ceGVv@viU9j|!vB zO^7xrsuqeiplAuv1{5(Ajq{pKOB^PjTCj-p<6z?$`m8w(t%Wf}8&I@_XalMiiZ-BV z3DFAXJha+K(fIc!I;WwP3(+`k-$B*FNE=YJglGe*7K&Cd=b_cc5ZytH)uqKlL9XAh z8)Lb+(L6;O&e=3Q?G5N02TD!lI)Ve$i?4v=)P}hbdL(Ts+P?sT{3uOAk}#o}P=xS>ut5h21Y24~*@M|1=)))=&3yed}lV zIi6q;PUDdWtD1c>=)$!Z7mt(1WAqHO|LR+O!@k@^?D=Xu@{n`qG#+T^)PK^uLWip# z^*b`VeJ&pLtqpX)b|c^V>0JHbaO%jn zeuR?)BKg*jaMDrl>t%B};0rrlhl_{YnaAU2E*^Z*s;B4T!I#J;Zt?alkMTMBp=dGS z(R|GQpPJI|?PkT(BUMEA?`3hzEFwhY>{oC`WcYlAz z^F8lge)#?8!{^_B`|a0HUs#}PI{1mtG8e+$K)-=?_!{^r9^#tPgeU6rJa9UW>g7UC zO)vWX$AMvB_yn&_t-j6^xo#(%j&DksTv>NX>&`irZP}j7lx}c2mhD`54mY_c%%3#h zQ+b_#=cK^GzWV*?or@ty%XdRL*sDl#$J~SH9ID04c{gvErFSld2sJ(Axs~52m-#5A#d^>jB;q~sW1H0Lm;<{Tz!inwFbf*d9qP_)2A zeEOh!I|mds=NRJ~P_)oQlVT15YKk<`fue;bKK3?7HO|i~P1QI|G@yhfOf;Zq2@?ez z=Yy&inplP(qYmWxpvr}b29&Ubi3SucVWI&=3r#Ewqh0# zL#(Ft|Afue^aq z-Zy-BYTosX;m!HAD1I zVeOoY$0A+qhK)wm%O`NUeJ&pSoKNRmJQfVLJLlrD$gq0LTeVH^5%ce!o{I-Bq;<~4 z<5(UU82-Z=k@}^+G_rH9ejHJzTfTWzw(EGTsP6R$6BUy$-jC|(xp*8k9vBXo^m;tD zGv?HWlX&nwb>-?uzS1v8Y=}1wEo{BUwsT@1dvpg%#pEKl10}-!s@=#sSHo*a*!7zf z^GHkup`~79+Y_`}9B8#T&}uPY&OWP&)Z#!FmwMH1Xvt$DH9^M3fnG~Fu(7A;wJ4Z- zqc!W$VnC~=16nQR_{q?cI|ntv&|*NZ#eiOm zg1Lxavkol=v|7q4WolV-Z@VUlcJqXiH@9`{^|dWImDS~uo(|OM8wW~7Wn1DvabkQ- z%4980L=%Ctja`cRFibR{_%KW~plAsb4JcY@V%fVGUd+9Q8kI0n!Q4csV3=q?(Gn&; zK+LhCJHyiA>vOEHbBOdN^ZoJZ|8F6;rW&iWk7EwsBF&ubjFsFsSmy7Ra_djv^}3XM zPkpTAzK*82e|j;uCd2`b&lD8u)*I|MG!QehTkZ*061BB1=K_4J=Qgg+;KTQamA_y@eVnKILi725#j^ zo;w(Ip@XPIEyb~}+rhGRxu=-x=MCgMwWau!L%a&2D6VBwcTX{wb}Pshz>+b`sAMcw zxiqDMv-7ZN#>}9mNi$2Ya5poCtQ8D14Vmk^l?*c-DT2aGM~WbtSr!O)GjoZzW*%lb zQUryWhRj9Ynr4{kND)LcaRRBA4*a>*i7?ZV5}+{Cks>I}RC28JRza|*PHTrZ$5qe@ z(o9Q=Aew1O5kxaBDS~Kb8JX^8YF`y*I#L1@W;#*?g_%ljSodtPq?u)}XPCL=5hL-Y zBV&M5$uQH9IjyQ>nE4>l+oyeReckfA;la0<>=6Ixx+X??_dy1``ns-3zvSj6M(A|m z>uhHJhZl5vis#3p(vN}0SkZlh-Fv88u8&kwd*!mQ+Q8N=2be3X9V{!WqwtKS)dupa zSZi9w+G+#q>5DzZTwHD7in=H%W{oY;f$F;IcTX{U`UaL|zdI=LW{PDU_6}x6XepM3 zzX6UF)-I;3{0;DiR=X87W?hzI?_kV>dWvN&_6}y7GTXS6#n?NTqmc%d)z~|jZBGNs za_k+HstqyqV(1-oA>{3u7V8@t4t39>k-1^f(tsM7@j6=bBfhdES)&m%DVoUS@=H(A zL}rW=XFncIWKiEU>-u!^?#I0M)3QFA$Y2a(QYU3b#-wEb9tkJ$Jak{KGC>J@pAWK?7mb8K_X$4u*3exe^DOWl~kR!by zM|wey^nx5|1(n6d5utpTeIDH~mX7p-9O(r)(hG8=6;xIncR{%=CJ}O^7vxAU$dO)< zBdwsaG`b5yZEY<8`394^>?SjTUr*uJ#kR`1kOIksew1O;Y1(mCwyC5CJgdj(HL5}o-9O(r)(h7PU z3f|{NXYKn#kR!byM|wey^nwhT@2A%q%z~sdE-d}JI%G*N$ffB8InoO3Dh4WBuzJ-^r+{a*3!s<@7Dm97{ym@xH+_|9Lm)*LcdL{sfMnHfHwJ zFL^cSbu`8O)4M@6p(8e4U&%De?;Gqll>Y>WVkm&_yppK7({2!ae?Q&dxM|r5+S_98@YhnkZKz6VkflAG1?)#|bbGhJo2csso6i?+5hC3() z9bP=uK5w@%YHUxjP62k%#pQ&6->dcxN~oE2ZOjLVim9qk<@oR}Mr$NftV66l#aNzd zV(Qg~dx|bH8&>hV80;vhja&KL#63k986I+!6kTN2a!%}?qKnL04s7jU-U)1~@iA@5 zT5CT1cr34H?kVO6cv^}}xjV3f`LI}bfgHP znRSV5R7cFaoi`1ct8P_LnCVCn6lOY71i{Sm(T36EoKHBrYRt5x2%?#e%$@Ekh-O++ z1kp^>o8(EBnk0j6Nf8ugx->;lm}$t|>8`oc%({I&f}S^-Di~%uQUVlaI#L9MnGX^p zyJ#)pkk?0c-=UBo&~Gw1`1!+|Z#B(+n}U@#w*Ib~e`7QEKf3SOGoSVy_sscuvL?Rm zQQk*j*;>|A(M_}w7&r7zIf!py8-fu$qcpUbazthXxe zU=*DOZsqv)9h3qD8?k!d`-m(0OBJ(~`V<6PCE{}EYpmq56I4HKaRM%V?>M54b zHr-Q_ zlqX5hsGj|7FWcZn5QSIu?^7x|VC_URHZvb}pl%u30>v6Tafzu{f`jMv_ntKqH zX>(}@rMj{|a%9d&YTjIFu%raB-vk(X&N+XmX|m_CX*xmE=F$*^#}=A$3UXv#HL00X zkR`1kOG;^@AWK?7I-RWA;^&0@`oTt zdO?o#f*ffD)y<_LNE_A=WJql=Ly#lAAV+#Zj}&gOVa$WJ!@j7gPOz?iMT!6=rUdI@ z!Sv2CH@=$~p1_z?0)fVdGX$NR1S8{i$VLFFR+bw@XfU zJNP&X`^_j5$9(;|fqVw5tIjcT2h08QJ;iL|J6PvGyXt7Z8hAuGpR<12a=EdCbw6`Y zF=kX9tR2AsF_dqm2W`T!JX4iop730I2lW+*_%QkLJ_kud{R8 zing0=>+hfYuQ-stK4y#e9MEP)hg5TDtmN?g?j1gzDp@QXfj2EL<6OJ1DG{%2J72yBgLCK5;pSP`MKf2 z3;5z5R6yz9@aPWy+)6h=?0)nV^L38u$0Hsnv1AU3iWW^V-lODgy)FSoF!Eewu~H^Gwtf71@n1JilPNWa!ZOLu2@)76!BRKONycet&k&g zo-irGaL|&f2({FbqKMBHT2d6P=<6&gidK|jM{3<*vtvn7v|>NUlBx&;3`?paY;#&t z6mdxC$ee7~7_s}eq$t|Z9$8Wp@pWrUiXuMiX-QRtQ%a5;L$T6^a1Yy(st8Y=SW*$6-nF5jze`N+{VK7;>zg*Xl+=^$1D~DVA$4 ziC2()rX|%(N_T0BH$%E3RS=~cGB>FwJJDyJ>s{=jNQbK7Bu(>{>%%ooItj-dThwp) zd|3s~xZ(iIIUQqLa{z&m{?)6Gg3uYUZR7Ge~EGddO z+pwf4;%vi`qKLB%M{3>RY{QbGh_ek#sv^`3OR6GNOG}C(&NdvG2k~pEY6GL0b)>k6UD3&r;-Y9~9VvRE@e~rPwPGh%@#^zK(YFGW zB;lgzv~q&@WUVO2BBv!qIgkBWQk3(ofhAplxXU(25+B?UJ>36vWFFS5r9I3vX^zc? z(i(@Ejub)kW_hb~UlYy8H)`f#rXxjAm}$td+tAH)q(q2j*7H9j=(qvYi#xsPNC{Aw z=|~Y2-ZZ3EHkw&pAl<#0Plk#&9VvpsOh<~KFw>DDh-PYC8>jokOh-z9!c0espfJ;r z`P@Uzor~u6@Z1PG%5@7m^l(Jg>sp?xt|_t*TT;f*JZs>{JXc-Q#<_AVcbWIU?jpFUXNrkhUIf9g7ii zq!(mJUB?PRj`V^YX$8rwezVJ15adWN$dFhKX-#Yha-L)=BD2BiVxx=9CXqpkF}m$G%0v>Niwu`9B7a>B9xv;li3}QStus0^JmH4C15IS|nn2ImL z4E|)?Vd75+ty%r-$sKg9S^e(G9dxZ({qV^h zbam!vB7-~3Mzx7dUfk%aO=R#}lcI@C4t#owCNjD0(m+#Xa+|Mlrp91hSS^$av)wQ` zG2G*HA1x_1a@uc6DHFV6U`dHJ%$%+#?PiJ|n(4?~ z$*+QFrX@uX&9tNlqM7y5(J&MH5Y6pjrXxjAm}$sd{jGw+%m<0FGm8aZAbEZ4{9W{` zZ!`Oe)hBFNxAf4|*6*1hG$wa1Y)wh|18(L*1i#1^HbD64d*{2V|B&nP>RB8#GcSOF8zMdmD9$jF*SR#G&P zi7(>`Xd;8UVNx`a!QC|jn#iE67|=u}reOthY!F0`26MluOGVsoHn14=Wx%rNSe2_mX)vGH)9)1Gp6USzA)eZ zBe;ILr*%(1j#o@VXEas*vkzcR31KDSwM?_QDiLVxH*~-go}b40XOoXoJss{x5cUVK zrre`REjN3>?GIoH_qfE78Drcun%-g}6RelG!a@Wno3$A{*XMx}WUr!9Fy`2UJ~XfE zsNi#oOC8GXDP{$4pxVeY0h;xKY5%=Cjub})pHpOkYas9FYl<7j3>}Phr^(?cU-g67 z8R>P=T6sj{XGzJMH-IcDrH7fOjbtbhKz-ViHyu0DFI^Um?QPfV_jfMGBS6h z=!wi7DFI^USO(~s$Mjq?cckcv%pEBKV&?VQ>uBF%IbSn(r09vv4H>iADNSU))U)a% z^O&tpAl+_B(ZkFwDFI^U^%VA=x#)?^4LQc?rCvnlj+6i~^ZMl6$UIi`RkxOg&4tH3AIlCH=*8Fx%Z{%P^ybl1y+nVmzk{ypqsHBbXO|_GD&IgQ{U5)4`oI>q zrcQ~t4Zc^EntY5I{z*0>JhAAk$_CarHR>&IYOwU4n#R%&zreZcy%P2pp;I6b;37lPfmSW z)|W@D?gPhoS*&M`PYUh@>j6eBYbj2b4KnMzjNVh6-meM}kN-L`D-7z*e^%R`b=`9w zs&nE~K~%!>9jCjP_{`O0BkPkTrNkl0>CuBdZ!JPd(vi6|)T}%`>hj%6ZHs87C1V2H zldR_^hLy1zCc;lbZc7frdy@6!LL>=L>pHCza?LlZr_AX~6USIzo4^q6NGU^1vhLmw z;qiK(Ch15U@w$J$C+Q=uWInMmWezJhc&U~2Ew(l%Fxq)Xx`=OBI+i3wP9*6_(L*ci zt?v}R#m1pp=|~rz4NLXiN|ZC#!8ua&(8~IR-)^PI3E_r}?Y2n|lZ47{W$dC&U?eHz z>130{G`%HxI_1(+t7a?q_2#?*if&$2v7`v+8EQvrJ>wZ_OG+SlhT4)6NnTa4q$#6I8y5duc}y56meO~lBx*HO_o$es9Kg3MQq3&8N0$$spC}@ONt_% z^{}KU;#Cz(iXt}JmQ+PpigaY`rp}6Zb3ofA-nnco_lDC(mJ~(&B&8)q(Fx7AB}EaM z?iK4ft@+Fkv`m7cAUje7ML~9?WWKV{Dan1-?j$aF07B7k}al~j+6pnXkik;zj zLuz9aj(4Oeg5wuNzBxW0+M3KH_?X>|(eCM@!(w(@mXy5NZCO&h$!^P%;v-)DQS!`Q zx5biz>g}i)fSmJM?WCN)wWJK8L%K^-Cd(n+kuqNk>5ddZ?6IdWgAPTy1Q1S=G%pLb zD2$V2>;+IWr<0T%tIl<#6i#xax|8L@k?KyC4@Ziia8fNk?fvE=TQ% zSlukCtpc26N$H4K-7Kl?2b|={JgP9c6V>e~bG*wjp5dAs5I9NGJde{MHBGch(}!WR z29HA@6$~fArn%ill3G6KBtt@Hi%>Ypky<|JBu8qAr;|W8I~VN9_uT0uNfRI76Fcc7 zsh0rNOqL`^s+n|>Bei0(Bso$YPbV1?qx&wMPLek1yddD6q?1gVc5xbSnKr*;T}#cR zlMHEk4LZq@>UcWIk?MFl$&u=KI!W53(=CpbYIV~z^P=HIq9jR^bh`Q`$$=UlxX6LF zL2{s03pmJts3^T?z(3L&VWGk{*^d;lcM?IteCChro#0l;|D^@>XFS1teJli*g?en& zyv@qy$(QG!^(T1a3q$hJl$7LiYC4-Tv6B2x?>~Hb`6M~uxt{VdjhaJvamrz4B?r8s z{KKc0=f6rG*dZ%BwKb0@O;a8->+<;J`LoG_&pzJke$66k)ttq|?u*zwV$mYz_ck_+ zA`Mtiy+t2}wE`(-NbxLf89?y^L0tBj`w+a|DQWHal2Q@ayIWGi$Wf&w#p@h;TT&HaMbVKtEv+Hv6=+L}qIhc4cs>_>r!+Cdw`q!^ zcxuz7DT+ALbZO?Q@02?#fF)HC#vGQE7;#0>lA3sG2+6OB}EYzwj7zq8LOAje4gt?l5A)3?4pDSf*cuF zNvB4UNj^qS`x4kV?%DH}o#F8vhABlh$Y)22GdVf4r08LTY)J_^n^{9{8gwduj3{>H zTkfn?xWs!PQ`8B{Azut;*)1uG*t1(w6veZ4#`BmrwW!Clc8(N9@vNO8bDCcjv1fO7LTJw&O@bv=5wfwQ zD2iw8oSmX5p0!i*ng@uhqIlNMk)kM`wR5B>if8Q{sfy6E8|_zAn&wZQ9(E*lNE#W> z+L_$ZL3I)xvrSVJv1hlWD2iw8T<)TXJ-bUYS8ZyH&{BC)6`>=vX{sXh?3NTo?Aa|T zirBL|QYV;fKI`{+vz@)-&n-j*Wm#=obu@Gt)xL zZAtBk&~jT+`&P8vmejr#Ew?3A5n66X>P+j12F;S9h%L7zMG;$WONt`4+?EtYY`Gn2 zW?CqOmQ+P(xh<)R&~jT+6tU&Dq$py`ZOCzwt+onmxh*M**m7G^6tU&Dq$)zoZAn#x zmfMkLriJOGB}EbEWR?^~Y`HBdir8{nQWUY}cBBrv*>YP_6`|#}q$)zoZAnqYmfMn| zh%L7xb=1w~vtBmMc6Q5c#i@9*AR98zgI1DBJ`SkwOMWLT$7yFUeNim)K55>ZlUY)n z$)U6*#hDyRJJNIqXl4z0)~Obhuk{OZDF`2F>dHBbu%wzv=`Kz2W=J=r#yq4uQc5vr z5qgjur9&0bNs{JyLBY_d>-IDzW0E<%$&>%{8Z$u68{V{}^`<4oN_x|ftFDmIo0b$o z^rj_M5xi+hRfL}1lA?$`yCb#TX3uU(QN*6zlA?$`yCp>t=VX>tMd;ZbsqHquX=zDO z#Gc)fqKG}aB}EZ?c1wyP_Uw+-I?SHklBx(jyCqc-dUi{SA`V|HDT>&$J2FqB)NX@4 zyCp>tdv;5TBKGW-R7L37EvbsovpW(CQmv)qF+xjQx8XvmYHPF%RjE6mN!fN2(z9MUE6f(HG&BsTNCKU~1CCNtz};-rGq= zT~4^-W}7T50F*1b=ltZ>v?@zyI#AY0=t~ERiFBm{WtD`5$bq7Tjx?aIW6_TeR59q% z9VlYhqdQQ%p;|f79VlYhg*#Bhum^Xbh+zkAKvcQb z_OSnUpo&5F?LZZS-rIpH2F;cOMGU)710t|Z47+XziWoGH=u%tDd_@!26GYAq6w%E2 z0pfgFbTOF3y?wsyc0ikTx=rs9KmYLI<*;5~{YW#XhWAwYcn!{R?^5o^o-mt^ZsrY^ zC#&$0XnZ&Ltod)3SH5p7xo?lpy_MYaNrawzVKeu2IUbGrS07`R+#^9d?`N4Mop5SjOqAE`JOjHbc#JiJkZ#TBq-}YcrPi+dCQvD zcUp>PEDmUjD?Yg>U<_+oih8Vjy~Jz7lOtiH8K7QK{9D$jVi&oqeZHb=F(BHd*+zg- z$EuASf?OOad2!gTq?05~v>ak5D%+{P_ZpKtRA`ZoB3Ir3yti&zEBT=B+tCINO4bzpSz`h!2yCi>Swv5_3K*ZOC&TjGC0=PnMLRQ@JIbAida( zDZLeBNh`>axt`PoS<(u!q!k3;&n0fQBV={YfH?STT-0KcGHsL zOrE88q@60u>3*EU6Iaqo2Z|?Yqyt3_ZFHcBfhXa$7Mii~P(4l)9Vl98q60+>O?-e@ zf(sFNaPYoZMytZK-M;T~vF1%?ZvZaY=TsKOYx-_iPS3_`Cmobw6INHkdmYp|eaVaC z9mHI@`#Jlt4(eQ!w@J`EcTg)8hHMVhF~&t*3HO+X!twfnNs)C@#KanEv#~s&d5=tX zo*l%th@=?nUL7=%!FGkZr@Y7c$T}ABdWt48*%^1xL?%a+9W;^2PP>C9GI@%sfw)61 z?#Xq94w}g1ajOpM5ag1hfDTGzFyMB6#M^Yu#*MGKYh*YzpJNR$#@jt>i3~tj9#0Y( zfUZ1pVOX+u#SCAMRL~VOovtEl=N^5J9+#M$dw5^D+h`jAoi8Fq*8ptB;kI7uYxGFb z`EfH2xAl564!70SoRC~{V%G}ADv`PHFrpT-RjL9&S9h8bbega;p3ss78!l%8!5W-s8bbyt^wd? zd2{$?8-PU}zS#y~k*a{KT?qMxQqS7fnMJAsQgpFq-E1kcENj7C9=!s_MUfOn>aUNB zzD~Q|WWGOc*go8jPuqI<`u)$pe|p*fv0V@U^6&qN{mWl|`TgVj{36WZ!~2haJ^YA2 zJ%4=nnI_i6SM(D+o;t*Qi=_E|m@~dEAGPKU_8YQKXT0qf6|s`2Hq)n62rlTvBRCD5 z#&HA8a?!#1F_i%Ed~h_n9YnW#4^G&K8YgOCgiha? zjwA|j+MLR$@XMQ;BA&DoA#jRwQZB&B>*5&U2aZMph&I}&$ z*7%$?7U^AN@DVHlv0<+cKi0M4k#%mmH`UWDeFvRtG&DWyF$ZobVvgUnWN+QL$1#U{ zTyj6Tacqm`1o33QI0qGV!(?1QDUI=Fv?E0{lf)cHk`#aE%hraJ>dGYR3piPNFm3K3 zj3gZ?de}mV%U7PIXr+QlIx@$F)#)70u9*Bb<>T7|oh*!%RntpfJ;sA}GvsqzGc$CgVPsDSBw8BePMjf@0&* zq=^|%D;zY_rYVAGCQhsL(vh3uHS;jjks>I}G-NjGHO(;7ks^p@;!a~XGn@6AWSHql z2~e2nND&lf8ZzfuHFs2V?Ne}NBZlS`gr4b6;3&j7J+C1381k0W?n=fsu1p|s_%jBU zmE?|%O;g%8Dz~H+geuqqbjxL}nt2E^WG+`#G6Xr&3v#3v`+!@nFI6)`kRfxK zw~`^qkzSA^y&y+gK{9^Bnx*trA;^$Aln6nN^nx7e1v%2&DT6|M`7~Cf#PN>wb~@7A z=}2oQFHiQmk#opyrzNeOmb7+S(iMZCdMHSU?<^_nt(MNfV7}OEY$n9q9!* z(%UK1rR|p2)5T6ldOIEI?R2Ddd|z}r!%Q#8koj1N2y&zs0tZjyKBxD=emA+^4+y1y&#vS7vxAQ2%`Wo(?`gVzPp}2$vmbm zxouoy8Fk&I=><8`2|CIe*okYEy-V;_E zm}#Xk+$&!%&nfpGz8O;!quXdAlaF9@&_pKBZgkK@Cg;{2G?Bsd(1ry60#j1J@eRL?#yrde$Z~7?zk6dt{c|&5i(gU9y#M zK9Zm*UNq|^cgw1c7FCPofXlYyFig!G+_VeE1dr#j4B5dtInSJ*a)Z5tb(?1gv(cDMJlCE00P#Vp>^~b= zFMvbe7DjQ%Gix*_I@kO+f)8b4QAv$Xv-~G+8B0l%Q#}oi5s&mjc4dX^&+G zt&66Eq=Ou-OG%PeTGF{_+V|X(v@Wuwb&(~dq=%XHq|~0f6m|HB$2VIf_xWs5&PZA^ zM|Oo|=9U!cLDrq_Vdj{CmNaSRsm!K#(1y~HzO-A?g>uD!q5B9nu`?}JhL0R+Luu0# zK~#<%ua@~f%j%gsQuKt|9Vvp4`7}sRx9^jkmboQG4>Px<6wM$XUF7I{Z~#PlN}5?0 zWrmq!($URyWKJdu8JRoMhH}BUyhmuv5=xpd^H>j83^T{zzkn=9mb9U?qzfgwS+R1A z!F%S8w4roq+EK)@o+Td2^K3`2L6#If43H%yKy*8fH~08pR$!{HBlBcQH8V1Qq>0g6 zLkjCuW2%KG>*O1$cwlY4CRg#J(0O1B|yx)?h=i9fl0NA zxg&G9Q_YObO`6(rA#*cq9@mCyl2mR<(ZkFwDT0_el5K7uw|69SN7@4C($pHn%rUy? zndicVWbR1O6Uv3WJ>?1hnkG5{ez<$i{Pu)VZ;LssT*$2@o>p_Ig*2GGk(H$njm-s)w0d(zaVitVXunaeb}l zPBYPb2q^6^ePl`7ZaFgdkg6bNj?eM+%yVm~f|0o+MNjzXL1K6v(MI9;$HQy-7Qv}3 zT%)UW*U_>zkc)h?6o4_|Y~WH4U1oJW=2lY$;T#<^rtvt!Z z^mfc^lr>3OY00P%m1O4iBiOr@Ha?EbxnWH*GB;`FB(0Lnyzcvq%yW`f!BFl<(G!_F zQUoz`S&_z>p4cIh%pEBKip(7u6}+a2%%_tTLwU};DoEv)6g|w`kva9MX)<%!2Dlw_ z=2gMS+>xRuGIyi|h?&=|(4icEGNs*-xh7rBjLc1%*qCZ*GV^-MX=I)|UNy;3?nu!S znLAPhF>@WZ9&_d;nLASSMCOi^05Nk}54rLE;O3%G?nu!SnG1A zVI@}|djErE0%Ilj)`XP2X{9A&R8-y0%w;d@`h+!5m$@TFPh_qn-;Qr-GIJS`UB~l> z)k?<4l0I`u^LEOY4r-dnd^%y0)q>BDHY=IABeh4R@kZ(7eHB{&uVP$dy0IZe3Z+_&N2>2gfp9^ zg}rzD>M7J8*)qmQKXVFQvnQx+(fEp316j7_>Vtb0VkE1sEZN_9C6+~_sA1OH?~Ye+ zDhPSgDT*v?cvQZpC}%i!GV6HBn-{-qnpw>X$?H#+%t~HJm^q!I*fSRo$r+A8=Hhi# zPBUGaXhWMbX{IGb5Y4RbqwJZBo-osqA}Gu>WZo94g2GHkiXfVagA1*^Ex6{?l!uv) z6hUF8BSlb{X~@y7%t4<{7!Pma!yLv;ONtylF`ZP?+h` z6hUF8l6)AZecM@(|=mFUXNz zkR!byLym=>SrG3C^$6v&BehmikR`1kOIksew1ONt7J8Z>(|VwrHxXJK=><8`3v#3v zWJvs}*@+^z$SJrRpKfemM97g|kR!byM|weq97{bdLa152$mJ%x6gfwFL5}o-9O(ra zGI!alos3Yu^_TtXc;c{v5g|uRCqvETAmV-nN+62#7}{B}KN>0_rqv!?9Nb%Gn`g z?PAUEa!J-MGF%K5kkzo;xS7aYTx2#A8Qc*wDVoUOh@}BdWTGb#8%<NywQWiYDibBue6&OOsp&;yKqsb@Vs1sx#7aMe*jj3;`b z&{mRDGhHxYIWZ~9iMtzK192cm&yuxs4?ns)gE-Y{Q8NGu}_4H=+4!S}yy%{|~+kH%LM(?026w{m0JLp=o>CNaJbgkL+ zX7moa$V_iW@1ToJc{6%+n)sN5E00IHVFl1d=2)Lk-?Mg+;pnH8$9#yY7Yc4OcQ7W) z0!p1ZW9`AznWNMhfG#q6S{|T_%=E_cP;JK)M`_KFqKnM*xa^*ybGQi%_II^Kk+|G8 z8$h!s!)Ih$f*2E;T@jucZ6J56Eh&|dRn?KP=sv|-?$w5WZu}f}%N=H#U6BoIR1Kt= zmJ~rW(~=@c?$r)6W7T~UL^I{u&W#5ToSBXkL1CsNMUdXBjRpV(_4V=nciGOr$=n;1 z*tO?3X71_5D7+ujJKr#0gx(HfB;Bij7KskZ2_mEzwYr1#<@8atvgmYB&UzxnXm2}+ zr9-hXLefEWqymb&=^ojJN7fO#mLmSFDMtP8AQn<3>nO7wlmnFbtg(v>-=gg)X4&p3 zn#jZ&S&ucpRU|1!CFm)d$RHCfJ!cactg{%bKTjuIYQV*;AU#A2U-CNen}?y5~>axUD#M`W<1kVU(^0Z*MFc31p$ zju>$c^xljJ^ZoH$uk!!4U**5lUm+~zA+B%n6CU?CVp$+dTFGEWnL0j(alKx*!@s>e zzkC1jXZ-Sf`0CGp`fva7zrH&hzWV-8Umd>sw?E+zhaWz@fA{mt;qULi{N?c5hu?qx z?Zfkb9X|j5+i$;q`Vz(O)ohAIans}tB>tahfF_p_Q!bf!72P31j2AzAmtXS(|1Xr!On*pcAvz zXHy24v*adb!yxir?RGH6l^v|hX*=i~K5b|vh(ozXHTR?>>ul#{)qHoYfr~8^i$-S2 z(R34Yd@P-yeuk%E%-ePEcDSJ7IO$oe)2W`t`uOYN*WbRp|MlZ%O0KDL(eLt@sP0t( zr6-5oZ?N~e5IeF{s;({|$v8#R!D)4Hga)}bJ6UP!>fjDW&r*#fShtdPF#7xkp6km% zI~aALgY^I>LF}q!usc{+wML3LEotBhhx=Ob8DpmkqB-QJvIP|PaBgQwksaqAT$)ng zxDo8q%%Mp)6XTF>W{x;27-l+B1cjN76hUF8BSjFsSy#(Oe6m9qGaVUCOC`fhM~a{@ z(~%;GW@@{JJK4QXgf|VDYr;OwkkGG$d+36BK4TQUryW zjub&Kb9y3jcr(Y{Na5c1(@aZ>Ae!mO95mK6X{IGb5Y2=E-J3|P`6$eEqy#9;bfgFh zGnL$OMWPC#nfUi+=2)YuV3_Gh8BBzkj+8+{nCZwE2-nb9% z(o9Q=Aevc7j5EVNjJNM)js6QK?w-t97?z4}=FI)+{K}d8OHEU@mLWP@4)lnS{RW%4 z|Iv4wCB^e&$g_`e@wjV_aeMBC-N(53>fDs7o5mr@T+FXYx}ht_ zjSiZ~dF-ll%S+Job4Z>P!x5J6N|G_7tOM=wKh%F-2Er zj&;RxPtnyG-e&F%0HUg;hgYrzbaiI>0_2{xt22C9KvHyd2EAygmu%#+YX8n4pkhPqlKEJJd!)o%r(|Z@<8`3v#3tWLgg$p@$$P^C6c>dI)l)7vxAU$dOi%>G$GW0F#*^$dGa2bRt8LBfTI; zdO?nKg76e`FLL>~$7Ci(PN#bEG;2Cf!L$;Gc5`|fZ3m@)ri&~o{VrW(N$F2{4#APR zz+1Zvm^ppydYG9DycMLGmJ~rW(~=^HW)||#m^jAj3|4|(pR|6Lizsh0_i=o#vQ-uV zyl9tyj5mHR9jv?Z!!vLgBV8jNGz}Kch%E*iA*u?rVFTJF`kxFKjK<_uY*hObv7~6d5Jx17n!q0W{JaSV z1ydwrqef*>724!X!p=OuP9 zo933H)|mzR)Q{79Mth3cgtrt;WV8)n!)zjxJDA-)CNkKvH8z^aC|PGGJcE3> zL_imr1?vD4h`Ds0)oc!D-5enMmlzr1=*8>(%hy?C-ekT%UT}Qnb~&%t!`JVB{{7R- z{*Tk)&;Pz0UOv3w%NOr|eEx8F|MAPqr=OmGe4+npqWp>|K2fn7_brm-%IOu)lSixk z2AkP$8^-v1zQc-hWdH8@%k$xS z+snsy@Bi;|_-{uZ+@bKu{;x0p^~0~vpWfw(9iHHM)d{E#(*dI4gD0NZYv#=8H+0w2 z6`v4`5kqwrT7v1g4#CUymQ8O1ry~lHB2Iru*6iW&!+UufAV!wWMuPQF$N+Ob(z52; z{XNATt~79Zx^_>|WzDm=EyetL?^Nz!<5rtBrbzcl`~mWNVN;3#v%_gNPFG@g8znLb z;q)2x1jkv`nj*k*u7~wDT0XQ(uh-iwpUZ+zbhk=@O7h{?zaM`5%k!r%ho64^bola@ zm&2!*A79@8?d8+q^Oxr@FNa^AfBeh)k5ON0F1(j}dc1D7*O$xf2}_d*{u}JQgyuqI zCE-~up-3_sx&}%Kz1(g#MLv-{$LfY^)Qx0NF_ITBn)jCVQXe0USYfGL0)Z5#gHQvs zS#x;Uv(BaVnl+2b<4O~wAEg~x|D)(*rvpz_%`Nf~#X-aW<(XiqLNG!|2{<# z!t?>D}Sd-J=<-jEk3+tMRcpx{6ZedX(O|98R z#xsb|f6XagaNoeCc&;bR=thF+@RlNmNRt~0Mz4v6``$9a#`B}`+MToI%1a09Qy(Mi zT>tN2{a(%vW?bg1r^AOkn2kyU`{)B=&<3+2Hn1LY$`mho&$@$kDRg9=t11noce@`^ zq%`Yk-+E6mI;x&xozLxHmd07khJ*7{*7zt%?mV^>r|+CFMS`yMOt&Wk+^#u8Y$+~v z>3e{qiJWa*>dxa3gLzhS51&Lo_x>3%%%Nt@n_orejc(B`p5%9g*2mD0)ioGQFz>~i zsYFtHdO7UE-T9{{b5{9Q&no}=v7S|~smdu5=%&+8Pq}LG2D=aYa6m}&KR>;8hNY)? ze!Lj65Av9MRGl~2%>56aVd*KBYt(!0m)kk}hd0 zHcnq~9jejqn-tMkPL&6t$^E*XA_}X3(F}D^hr#D;T^d-A4D8;CuBma@!J9I^qQW~V z(}mQb8S}2D8IAF@H@t(ABKHI=8NFh)k>}VPnY~>lWoLTip1a+ZgqhQh?+%Kd*o3N| zgxyIIL^ExgA}F?JO`5se-OZHd7rl-)E%4^F<2%gE-nJ$gX1X**knAGwX^J3vQ@beK zLFuIDDD9m)E2%?#FCv~_z zU*)KohnbF)0EL-`%pSj{8D=_C1kud;)WQkZD2PYyYbze22zhDr4z_aSDB!k za)?<&$s;H(&D>n5Bm-ngD+s@w0t6T3UO-JU1Ub?RGGtC%Ynma*kuu;2L5{S7Fof!Y za$TWj9)cX{1sPIDc_GM=UXUZLpt@VbnvMwN)L8^M(hD+VPIYUVA;^(lkRz?2`mx&~ zDDRoq%p*dM^nwhTXQgYJA;^(lkRz=i(|Y7ObIm*iInoOzX?oFGuEq+e*?-OIkZE=^Ve-&DLRNo_npC)A5$Hj(22kR@F2^kjXuFf-1?z z%ckiaugf+(;MDq;aJ-V3%Xc#DbfkB@BfXtibZV{aId|%+_OR2CxffN*u+x#=PDgq> z`-~Qoz&tWga}PTW>3iYTk={;6+JdYrVf-R&3p;v@MOQt~xtLk?VBodXn+I7nxMJE; zWYw^w3_0l{OUhu5r^75MgE^XM=H8I$%rvCV+QLjnil8vlks=6Y9_wX_;mzCtt8S+^ zEh&O%rXzLQMl%b^#l0x#cpLup#l3wD%e`v2va)dQbdHWcD#PWCta8rfBM8 zb^<+X9V47`X4k>T35&a!ymiq*Q*(eA)!O;xN43R0@I`Ohu)d%vPUq-Gp~&8+*~ok( z#i$J(L}?N*TK^9A$e>xv<0l<7k;&eygC;ULMeU%8O!j&mG?B@Tg$|m?pw1bGo5pgzK%85Yl?9V>2yba&)T&VaukSJyT*R&kzv-(Mmes4t+U*gZVs2hEJ0U# zR*eijrp0XSb%rTAhp)ZP5OjXTpS#1yE^-&6kr}(l9qe_6Sv!Z9ow%`)fg@3_UY8Hj zu~*M1mt&Re2tvfJBsZr|L%-eW@2)GUsC+QmNn(F>qwAI!z>2SS=Ydl1eVv^W!@(-ON!Zi=GAb*`_HT z;#o6GW)oA=T=9acBS+n+BnEoU&b-`G6>4-&1J*eTM3MCTx+v`s7|KBUEmeyQxR{x_>XptEop|T$-jHjcH%= z=W6QFnD;f3UqtOO8WX=xntC*5ew{S+NIQ1cxW&{X?b(Ag^+>z+AWc0QQ-^M+sYhd^ z-^ioZqj3vwiYCgtX}!nox{1WUSW-$dJ6KCf`Q%3(EGgwPNGxKQp-F)0^rirGQZ@Jv2Lg7JI1XzA+^l&1fR+Mq-B1|Eo4bk z%lwi@#)Q-|zvMEvkXq(>CehicWq!#8@t&sXJ9sA1q-pw&aXU`Zlw&3Mz<{*#jJxSO zaGS*Du6+l;yXEZEzJp8JhBST0k`GCBMW*jqV314G)FbRgI?~jm+-aBGO+Ct+5JH-I zl*bB%H1!At(b#GFjs-JsN1A$+-(KjsFQy*pjEg12^c}oP;c_?i2##~4sYlrDaipn7 zI>Y8v#;~gn>hT|P6c822(sUuoC-ZY*%Oby37QUrzL9VuppB{q}UmbH>9r8h2tG5cGB_M7x62yV*A}Ad1NHH@UZ%FO5!tst2 zJHzpg6nBQ>9VvE(;|;03Ryf{~VkaGsZIbSIo#ck&9Vvps@rKk+D;)1gF*6+RNC|s5 z-jU+YaJ(T=yj!Cbj(4Qk8IE_P*h$Ct6L(j<->U9pb#tT$3db7~qpT(<9PdamGaT0Ew*!x6f?u|jubP)@s50}FgINp(BXE@%GVrMwskzywtKYiah_f5t{=02*iqzGb(x1^X!$6Hd&q~i^V zJHp~lbgq^Zchd2e6g%m7ONyOzydx2d7Ir!wLzvdapL7A6CEk)EC>-z76f?u|hSW|g z9Pda8J4?K?(=4OX@h(lVGaPS7?X|-3juboT`1-PWmiQB_ZxIT|J5tI=INp%jX@%n* zDQ1S_9VvE(;~gpPj1q51ooa>S9VvE(;~gn>((%Ztmv~(t497cC1cl=bsq2H`ct?tv z;dn<%*u(LL)V?Sj??`ngYr7-G&TzaV#ZEfDKWlNt=P%Tq%-oQuSG{hqopYp^8IE_P zm>G_Dq}UmbH>586h2tG5c1DSJq}Umbccj=!$D>JYCH}0PR+M;0O8JNq??^E-9Pdam zGaPS7?X<%2judx>;~gn>hT|P6c822(i9faCNypbOY-AhH6`=-(;~go2!tst2GsE$Q z)J`iL??|yT9PdbRXE@%GVrMwsklJg7;~gn>!tpB>JbH;A$AIh77jm(r2%_U1iKedw zla9Bfm`TT5Qo>HhTTQ0t;M~a!@ct?tz;dmwYt0l!r;dn=iol)W)DRzeA9VvFw@whe69DmVHD@wd0rF?|r z9Vuo;iFc%!8ICukc3RG_Dq}Umbcci#89B)XSYK7w+DRzeA9VvFw@ffss$LFJAeUZ$PA}Abh z($w|AaJ(bM%y7ITCG6pNLuy|Xj(4QGlbx$0#m;cNBgIZQo)4pT$B!#=r7L2IH{=z$ zv~o((#s*u+#C5)MY<9-jZS`OS~n;PCDL_VkaGsy44(i)lMrM??@>h z;dn=inc;XxikabfL!votVGqYUQrsDiccj=Ej(4Qk8ICuk_F8m&{hVUXT(2mKO;9-A zks>G@??^E-9B)YNw8HU@6g$K5judx>;~gn>hT{#Xy;eBhkzywuk8t!7pU?mGHr|pV zC>(FnL_ui5497cC%nZjnQo586h2tG5c1DSJq}Umbccj<}$CtNY?pL9; z)1u=oDdmGD-jZS_OS~n;Ogi3?Fsju|I^L4vPCDL_VkaGMNwJfTcck`ObUe=MwKo2y zM=`?jjub)Rct?tv;dn!8rxlKOq=Y>j??`cHINp(BXE@%F+G~a59VvFw@$#0#@uoLu z!|{$3LE(5qYNr*BcchpZj(4PlJsj^yac4N*kUG^0$2(H&497o6zB>`OTX2)|{?-Ev zd6e{4+|lR?ix|q69Wd6?nu!SnLAPf#LP{}%=7b- zxg$kSWNygpC~KO`9DQY1p0m3OhT9z}dLna2N`RO-ZhlJUq9-ypWOk_4%*fo45+G)d z+TSzJwac1hWbR1O6PY_w1R?X&#O?W{!@oE6<&|uH2HM zCo(r_W*1%4WafCuq-UO6cohugjubtSxg#Y&%p5zvlDX)K%ng}+c{MXKcccV}nfFge zTyf)F^hD;46g`o-BSjE1?_U=}=Go_0J(0O1MNeezND;)$@dRCWdp?OEnLASSMCMA4 z4|>)#k$L&1^j_7*H{>cv<(3pZ%-oU^AZ9KfAi;|Sq9-ypqz(}xb4N;mnEB%~Hh1ND zBTke%QuIXThSZ*)12cKdAMYkelCW}>FP8zdE^?&y(tJk3lFmh|eB%snHb}@BA4`g! z$lRqVf~Z`+e}`uvY$sqz(G!`wG(`|I$L;%8Cy#ltpcf8Hik`^)ktQbrWVq$=`Xpd{ zuj!1p9;WX##p81;z9BU}%!mi*e);A30M~WT@KjT%*E*uAbnw&_|k)nr5nt;cXT9cee(vhNvNy;`U z9)uA&k)$I<50W%POulwxggY{xpPKYANqIF9kI{%6T4_nq!zATJPb4XFB1uPz9wvzg za$3amO{YmtBbX`^y*j_-GyS&8?Qp$0p*}sCrG_#NFcFOD2AjO@Lrp_t&IJ~h_z6HVD zvpcQ1qsTjdj@eWpS>zo#rc;%Ki!CW$V&#yJguqTLPc%hAni!!Sb)<>Wn4@(&O^mdi zi`-3&P#j$DCPrh7&~kS%iW~e>gYT8Kj9(Jm##qn;6BVO(ji?#>}(X>0%U5G|y?G`E>pqQ_q?vnomng zSz_~P96zR>B}w*$jvO<}O0v3}G?7(vd{lQwN<$mPQ^_qp>M}Wr{g%m{bEB3!dm~GV zlh_+sQtYHVwRCPeoC6z(+S zm<1L)=}xV}TfCS$MLpccry)&`&A#1{l6$z*krK>sry<93WhqJFPDhH9!kvy3JLyjC z4DcCq>rO*zXAtgmq?j3{(~**UxYLmm%y6e6wT%yVI#Qez?sTNsNq1_Gxy4iPQ+12d zspJXkE4>`E?R2D=8SZqXI*B7CLuwlz?sTN&9`1CcI4RueNU;;{G{cJg__esxl42%H zrzOQqy3>)`#Itl-Qi4f$T2gYSJ1r?rqB|X_Z9JDDb*{I+$$WFXay9Hab{#8=5^=51k6#bB^LZ>hG;UhyLV{0NL(FCL z4%SmNI~Ws|4%XLE3F6pp9BQ~W@Qklo-Tg=KdSfq)g44jYo)R2jd=X2)S`9|ls75A5 ztW-(XF-xpjbP3}fAbWsj4YJEL)-yW}8I(&dXf|-eEt=-*OD-CBqjCQ1f$GVxc zgHgCUSies(z^tnkzkNCU{POYT)AN`2zkZC!mDJcAJvQS;xj~e9XqQ2L6^&xUDw_RY1rg+n){{$o zykbg`r2%&;B*e=S1?kH{;b(}#NcFrEM8Gfp!)6N zbv=B1`TK|WAOCvz^z!rj&nQ;W0@dH4Ae|p4luAKD+)$AI88kmrJE04X0h}HdKa$Na z)hhc4Rb`_RRTCoJM;WcGcqG`z_5I3&>y_!Qb>Tj^4`Nx1mNLGCD zF|K4e@Z3fX$ET+=Cald9NO7&7k=x@NWvd#As9jpmg9Fn~d61}s2=`o7;P4m|R1gge z`g%h~4VXyOaZ8GoJhouTC|pyTm{(dds=!2I8_SWX<;|J=-lZi~5!R3_DT;6d#FL_k zUre)UiXwgw%aPegRqgzol_f>df(=AVsv@iiT2k!fXR95VtxvUcMR#FIv6JI?ONyOb zHnF65p3RvhRS`~mIWiYHCPf(BT2d78qX?E1MH|{rONycmXYDO1ia0!RBwW&J$A)31 zB~=l&SuLrGa8<^VstEIHONt^sZ|%rjMXxd9a+M`T5nE3g6|6^XLc;Ne%s#wk&Lq)- zwsv+L7H#0U&2rIlFS!F)L45TP+oXNW22z~KX4aD8Oy19RWG-q+E1Uv<#J zzSWW%AO>C299zkgHyLzCdLKDb1o0TZP1AeRrKyV0x4JZS1j3SSNm0bU)smu!eXAu! z5&Kq4iX!%{j@0I3LEmagv6FqPCB;tmt(Fu!*|$1UOML9`m}nw_R^-{Y+B8)W`c_M- zBJ{166h-V?9jPM__N|r_MQq|NDT>&)T2d6TZ?&W_u|vM4!Hoy4N#NO4jWB}a;r zq9{31oD@aLklH9lQF5dzVo`FWDq>M`q$*-ja-=AVqGU*I6r(6PQWT*m=`z@Q!b(94 zJHfU=gfhpw_6_6^#FCOXhai>|Z*mA?N%0X&ydn9vM6;8EaI~_GEO^?efg#9|;-e7c zNHvp!44G$AYsCyf|BteFU6%E_t+Q|CyMk4#&)q-egJe}v6<6%!KSgcHyG)ZRl1k#c z{|12Bt1&U2y=gm6iKd1aa_?_yIBkzSFaQy|jAj1nT!lN5r0^Z`?X zw%>`W5_)K!1to-}m!$+D>0wF`kx=0!$VvSKq{SJ6`b~=zB+#9!Qy|jkeNp9*^s)>= z;2kP_2m-S1evLLXk0KB6x?k(gL(n+1Oww|cf{6683_(DuZq51;f`If6K1!%x-mDUe z&oHLR5JaSxWt0$*Uf-irK+=;Gg4||&;Wpw7L8>)-r*K}Mc=n=0yQ-C*xbv={*DisX`lM2*5BH^CGH zq;GYmAR;}?5JaRWDFnU9I1MYNy)Yhyk|pyj9y_i2?#CZ~`RT{+Q(F5&9prrJK&;a6 zW!7B${N19IO>$CJA#HjxI z$=v&G?VC1(0or++K&wW4GAGjNLNp1oS@*%ZnrIS8x_31RB;7ln%)Q@Mr`4qM$(%?l zo_G_2ys!SP+2oTs*)&CbGAGg$@yXo#9jY*%%!xEbd@?7}YFz9dg7*8G>UQl)F_NZ; z&+y*wYm(4x@)@2;Q^aR@B25vW;fb^|;xjyvt_aWYbSJi^JzWu=;fXXwe1<2|6!96J zNK?dTcp^;^pW(gV*S>92#AkRST@jw)iF8GHh9}Y$;TfJtQ^aR@x+7&}#AkRSO;L28 zD&xK5j{8}&KiXlTA~U6`4p^6cw3BR}>Z5$%l8|=cvd;nxd@8MrzlmZt}FI znHAZ{_vb!EBcmeQ$?*+Zkw8C@y+I?&<3^jTh%`MhVL+Q!LNQ@L(n=_gWXZdgP#!mG zeBRse?XDTen0)0~f!l<#%-v-oO?#wM51S0<4BOLr?^Lf>Y|cZ_>+boBbm<|8NS7XhfQ0&? zX0^SjoLd^VQ@*IYtudo4-KIXDqSkg%sC!xJpcPvilGxgi#MVY6bY39{;#@n8t-?oH zj!$*;A=-1Nv4L4RiL@L=Ya^R$r?K0NvILuJYrT^p$jRqUVlw$aR#|(iwvE_oJ7K>Pmu$^s)>=Kze=8;|C%=Ng>F|_4#!lh(eHkJ94-vbtH&L zFUt@_q=y+LM5HGv1UY&24qk%hr@893uQ26QEkx4GQi725FeQjcsPGa*q<8Qks6U@x zZRo1MhY}(Zrko)NYU{2znla4{&@zs=E2`eVl!LqyW@8GDFGTAZm`|;|R3*5h3kz1p4-a1_LC0uRwZ` zv?ya)0OUn2YgD+H0U&9DVz&=TSEOtr>54QMAZdzXFd$M(mpukEF#JM^8lh9f&wXMba`Ky#kW1NJmdd znxYsskTgXxY!Ip0;HXQ{0U&9LV%R{^6veQCq$|>}fut+aut8+KlHBW396cdvielJ6 z(iFw8fut#l-qUs#Ztf1kl|LN^^c>DVwfB17ebd?Viz5V#tc%SI!@Z7D& zGidP`-OA9%l`wt(kdvgZu;u@vSMbUI@$Fwe|K*2ozkmDFr=P$3>GPMpw;$MR-m4-_ z?~PsO1=qOMJT&RA{0RtwmeK%K753U8Fy}tqcYt;wO=nw{B7s+XBt~G?qG9p;D)6V6 zTMg9%JgGk#F(kixv!slLKA zJ&{c!YvAvKB1|MrP=tx335qcFGT^N3`TKf%zZGE;X@W9LAZy(3f-+1ZO;Chs$Gg{y z_WnjC&TJBC1(abDX@W9LAZu9Zf+9@Kc4s#0*9kh9VG?PAGE5>(P=-mQ35qc7+r#Un z4s9(=BCUWjOd?HChDoFeQkeR=MayQrt^1ap_mhL>m1hV!rI+y_zZ5*Az@2{VJ_|vB!zWZG7=68d+yZ9=X59ilMt-im)KIdnTs_C6no?w6Pp(96C z$_e`Z-a{4I!S=fLhwIw58y2s6Nqnz8*GFA`o1l*449vve*9d)O@Ia5h0ZXwc8fQOWofWPwyN7vG1|d+tz#7yGza7IS=@ zF+$1I?(hKp$qZSvhN$}Jw{-|EH3H5AtPR8z_Lg+awg zB@R@4lP%?Evb%IbbbpkO#D4E(>m>`r){Wiq}q0Q)Ty{zNfhoy(w z%mGTKzH}b0HHx}LDwzY6Ozmh)i%>FkIbwoPGWF&31fgVVS~@`}nc5Xu!0ZFT9r!SG# zv=!#n_sJi%oS$JLX(@^@ku*UOCXyy7!nB=geNAh6BAZ0ky1xs`Fu`VBD(_^5`66R} zpY2PVFkhbE|MtJY{6Uj-{XcC_y+427YW>>P;r#ZSfBw6-|NXn)y#4X}AHVzew?BRU z_AmOitLRa>+hcqgr^0lR8sLXNDxqtXg#1E{awVaLxnX- z?x5yu+fT72_UTami&a8ry4ep8P`|}u5vrR|x+e(ft_9Wr zFa77(Ru=0xYJg|m_M6G61=a-n&!CjWtNxY8c-CTkSX>*W!=mmQIha*qf_*%Dy3Q&w z!9J80sH<)e<59U7G2ZIHdsx)36go&Hb9n7btV(gY)qc^ms3B!{t;;eL=6fE)vX&0$`|IbPk9aYte zuWjblSgPNbJYRhG?Rxq0?LKu6AKjnrzbVEX5kq3=`7*owUvBSoyYK#`+kMkw+-O^k z=VKO74|tu#82psEU9#D zI&iY{rLipDYLz*_Q~$x|1=c!YfJgn` z)AefQdyL+%YK*8xF+jy>7OOWHV84X;jFIvfcXQ1muBxEn(@YsuWnn1~{2 zWfSddx79w5}z>d@Z#;+IF2Qbd$EwTY_{^Xf*B&lWdxx z$R>HO^N;R5!tA&Cm-96*Xw@ylB+?2f!z9uKWtc>opa@edkkNYLfs~P>43kJJpbV2p z6O>^Bxkl%fr06WwQfHX8$Qo(C%w?N8bj_4N50ciw9CesT|ruDOg zh-5)Tq9CPi3aV}Qp3N*FB3TfSYehT-5y^sxBthHn(^l7Yt=;M=2uTz~q|e==${~q@ zkVHY=dt9}X3{@_EMrW2~J^9e3N2fq!-IwcR3IdyTUf;>+6woFL>Mv8Q64D+z2_lk9 z2*|ZxGOFB}NG>5FIZoS-&~};4&N7`uvUeicd%p*;@~KiA`AqLbvUeicySl1b>1so| zSCI5hBzq?ky`Qx8Hof!ch9r7NlD$jl@UAmm%KY}cOqJ2PYtyq7%?L^Mu7*6l^SBX@ z-Wkc-fvkH5JoPHJAm=6cV%lTq$STE~#u-RAnWpl(z1ij(bnYHDi}KTW;j3-1x- ztv)px7WM6*fj-v{;Yiw4GEQKSw5epAz#wUJV+lXP3bZ~p?RqjyAbqZ%VG?PAGE5>( zP=xu~WO~lgZjw2=qzscto9kzoK>B1q!+epk#g!FZv(AsrsHhNG*v}IGrk2QGWj=J& zre0@N&u*Id&w5td@DtQlg@Kvu3HIB0tH-F-#RU8P-Y1xaGQs|F!V}D%WrEttu^6-T zCfIMdJ}u_>Ji&hJ{t0F&5AdqWGhNqcGC_5f24)X1K`5Cz2Av?3Ox@(0Ae4-vQRSW> zluX^^n;?`-t@|bjC8LH9uAyY=Cf~FOB~v%~26%yzsgZVqP%?GUG{IRiH=Pwz9xtzw ziS`_=<)MAEFSqC4=4#{X%pZ>LI-kD8N$WVDzF*(|uAfW4{rKm%U;gdWTOJF?hvYy1 z^3&hG`{i#xeR}>k|Lb4=?jQdCn;F(o*G1ah!r#kb?0M@8B^^@?34{Gzu=-7``13)k zv+3u>3q0k=f1Bd$m0sh1f_eis_mB*18xLhsudPKNVqiNj{s5yPPw?8NuTL;1zxXGLl>|MSydKL4y67C(pFZZ8jsUXK>E29qCSevMtN`KF@)Kc+coZU?TeuXpud zuHq@?ud^R*(-VSiQx7p_E$vFFZE8-NTdbQ*ftPlKy~;~BU}lg3wpG&tuX$r_T0FPI zgby$q$cRxdbj(_M%^Pde;z6fLqdH&n#@Yni+xySDr_=9|@W@VE2|U5PGO!uckaTMc z)eq2%TXQia&3Am-M5K;pN0i~*Gk(q~!xm*sbCJv*q^CTclT8yO=eof+bAHZ|+nf`b zBl1Rub0n>1g!8uYeWpFH!fz%+Ig+L)os&%~pm5$6smpmimgdfhG(G8@NGqUl?ln`B zh*>#OIgzF(odcz_c7~|3nzCDWZpE`$aGGm6;L>D z4-P-eTupzZDAP`)=}G5AS^>#<{8sc#du}&udcrx9rYD>uX@bJJ59}8h(84*9rYD^P znY$gEpm46?a4Ofa7o;6Y)0580rWH^)_gU$sW-7hY%(MfUn;n~;bPiy#_XD-Wkgnw~JJ z8?~dv<6*4PawAG4O;4C?+sMx-YkfScI+9d8$M)*Whe?x@Q3C0sX+){n{uExjB^D)- zSUl}Q*fYw!CbU(JjFL#x6H)q#_R524BV+wp@!fxQ{i%aO4~-~RHqpFdWh zStpvoFD^jip}43&UuJ6os&APu`z^(_^sPjUKaX?iRbHSoe14+3k+Ed+Ifcq$YKe8K zFKFX7+Q@H!z7)D?=H%c>W5lTVb+>ZH*bl;1b-t|yZ7UnO?#~E)fK~wmd|m8(rstL$ zt<&`p*3x;9K0#ReUh{Z-1J#gVnHpE6M|z@d5~(G}Aj70*Tn`;iFijF^HCHBKNvX@H zWD-f!6DED3SjX*Kh9XKNO;4Eg<)6MD!YGL}Jz>%pb@iy2M+sye;BRD@^rc$-OyDTT z6i%e+36s76t4}UA-)WLaEFNE0MLAHEM4BE&35%s`9=TYQNK)~@VkvHMLX<@2$;akA zqV$E$HNTwMz{n+%R6MW*(g&Fsr7vu5O7GC49;;tGdUkF39r_lfmAqUBt zN40J>OhS-r9@W4!No38V8W|?r)xD>jwJXuUGzsLIM>R4`w##!*lWQK;z%)suB|S{~ zQNwM`qozq9*Lr0mwd4QV`i$vO)(YADwe5Kwh~H>>qyrmOmTo{l)A0Y@X+K_H8UG4f za}?d_KOf%y>C?A=(uCyr_PBlVW0B3T@^yVJs$VmdyDH=eaYvU|J;!?5=70GR_5I7A zs%+k464)L>>F%@s^$ZR6IRm)oU5Cx88XioL?z-tb6bWqSoiB?y@9Dk+d}Zkatj&xG z`kebwOZ5SseQ4Eb4#aqD-$gy!NcDBYB1~s)H7)F*$`K|hceRC)p0j3(NanE7O~!>H zB(tCGWH|Tf%sub*ZiSf6iL_Eo=RoRT4M97iL@hWdeS-Bv;qp}KJB{atzK77r0GfLL|OrbbDyBy z>#*OH6KQ(VIgs9~hjX9G)z5#saw1JnIw#T!D4hGG?_SFmQx2r^OBIetDEXQ& zQ>SwzO;0E%vJR}f&6s($3&pF?yzAYPp+`}|oaUa-L2Tvog*naL`|EhOpKRtmsLkeC zBRi5-<`JgPe(tr2(1m|to^-Ftb|*7TuvwGsPG*=yQklctORpi!v}c$;_li4Rqku9@ zBE3;YHl3^=rr+|ec;e%uv565kGKTXA6G;;kVIpaQBAZB>pa`>l5U?t7{S4!#C&MJt z1Z9{+nxG7mND~xcdRvQS3uO~XAJ#HVB27?+Nu&viF#Vd;!)NlDO(IQDh6yB$Yf~zUNu(7}hDoFe%4`Cu$VXX5m_Flr)E=9KNu(7}hDoFe$}ovE zK??Ke^Sy_UYmrSPt$-p-Bu!9+iKGdNFnt#H@byZD38b&pGE5>(P=-mQ35qa%zW2zl z;H^VK(h4ZU1e@x4Mvcobi8MhGrq2xPS7|*=BCUWjOd?HChWR36uOJt)YQVp?S8)1o zzPTEm!iUXR9G`XaG>y_ z8$0R10gUk+c*^Q2(s|DM+3CNO}lD5(OcNf{;W(NTQ(jRKQbE&2@T?QV@|W zh)5PhBnu)E1+}LFo`PzwV}gieK}513B3TfTD5yOu@Dx;Y9TP+(3nG#Q5y^sxL_yYj zoZmGVQ5zzX1rf=Dh-5)TqM-JW+OvdevSTGgBnu*v1rf=Dh$KOm_8Q((P)&BGAS6)` zk|+pC6hx#ZiBOX+b|2vU?&EX}FGzBnWRv3r(#Q1ZWH0T(!e{1d6TN3X<0O*fB$DGK z5-W($W)3{A#}^Fy9>%$TJbarfq#z<$5Roj1NEFn5k$mM{Uq)d~B9d!7kt~Qv76c>@ z*YRtVGx7Q1t0$gFj+01^6G$F~FRyQI*6dWzfO0;Gv$ln2oW9VA28SfaNj5o7AbBV}w`U=rEiRvdv-*i7$4NFhP9S-Ni%&CW zKGji=F(&g#B*#f4#|b2laA!MyJs)_4Lz3epn;a*R)X^#^OD7M7NOI!ICJQ2x1rdpY z?7H9i$U|X!@$uQy#eG()No11+5y^sxBta+b4U7tZ6lUbuynD0q^x`O(!Ev729lU`TF-Z2xgc>nxGhl$foaI z)*CbKT`QH5_6XAsR&@a*FST_&877fdKp7^HCMd&vk+D;q6-YC$k6q zL5~H-rl(48g6%<%4=}Im4X{78@&RUVF+pva4l!}--Cf7q)COj+GA+Iy^mvxcsqU&y zusyZ%5hImM{4}e%&YCzaddZx$DgZHFGVzu%fKW0uf=<^^GWA{30Q*xbPt|oFY=TfS z+V$}mFHkZH8$c)-HAn!VWb)m}Ss&xaA7;tu&;u+&$!J;zAe2nq_?_v2lJU+$jq3s> zQ#XT$#k0D{DW;a$6NHk{BH6{9p=9a?+_VTKqjPbv2qjZj3Z_LUnK~JqAe4-E%*x{# zN~S*8nHHgBYECmjD4F_LY=9>ync7&GAe4-jGoHu(YwOQes6+q=C8L{o07A*soxd3) zluUi{JwYfL?HPe0ECj! zWDP(onZto&e3eYhPHH@8_wu82$R6U^P5gHCBVS{Ff7H8BdhhA1-RO$0(Pw=u)qe|B z?EUSBPyhG(&p-V8+qeJr$G?61(=Vy0{f#o-{^V(1HwLu75aPdx{w^YUKVQS?0M)#= zcc%jUcuuNYjLAx$Pz89@4b-&_aSr_Ko;Z>vQNuzXG36kn-ujo&Z#9UO==Gqc2*ZpU1GT|Y{s*?WANi+FrvG&(S!cV<YuIdM1+~e0b1P&Fta$pJ{f;X$t(^~ zzw)tXQ5I{0Ho@2L94|2fbLu?6c$9rBm#~;!+5~$Cv|_9Y+5q)tmRrpFJ;C-vht*j1 zoE(AM3uEc}5c5j4m}#-U_fTNm4tLD$vSv!14B?t+nMo_1Gzp})#xM!x zSbaeEohE^-xl$)(G8VTMB^D2nHCdV_wM#usdSi?zk3iPgFirLsK2`6uS0nDasC+NQ*K%WFoC7vqJ{bn?}49 z3voVhP7z!B`+#|T_^_UWh_oD~ARv7pOhH6?l0p!WKHH5F>N_S?i}dsKne+*Ibz6^pbx>8K|H#5x`^MJ}BSit~5rk2P^mx|< zqe&u}dyd_A)HWn@=VT*Q+mOtyj*V24MA8Jsd>6=L4J?~YV7fDy7NfVN$DCWCF*6wdt6!TpqO;OBuku*gy z-$l|C#e5e@SETtak>1nAZV!^CDCWCJnxdHRB58_ZzKf(Oiuo>)b!ySeD5i%2W}XLNOX5O;KSCwUruVmdeSte=;hWSF#_iW7`30cy8w`t}N+ zohOkNWlZJJrbQV;HIkP07;=cLJ2E}(A;>nyPVrs*NM;Hm(&}akBGSVQK|tyn^7I~p zjMS6bQ${ZoV-gU=5)8DPI^^#onHMoc7KxkgMREy~D|lNW8Mn{wp{Nzai+Oe9^A zvWcWC(uj$qDT)!3NEqETVj^jZV#Gw!6vc>%q$!FK6G>O35tB%7?D6p`lBOs|Oe9TF zjF?E8q8KreG(|CD5(%T5Moc7Kkw#1;U6DpiBu!C_m`IwU7%_>2(M??ilBOs|Oe9TF zjF?Dzoa#`C)P~6D>0;1A(!9rriKOK-y1IT(HM=@}lwx6KrE~IF@6V5MBi?7-2g1w2 z+eY}dHIYD*69WvACMP>jvT1r^#3Y+_^`+~H5tB$C2t$x$PUW7=6a*x!$zn7h(rQNv zBGQu-f{fIv)of}VeD3$**Q(V!1u5UYQ+a}BF>c8sX@wpW4J1uZe8P^T6?%lJ;b1SI z_k(u{877e?D8nSu1Z9{+nxF`?e^Iis=}j%e1k&fw877e?D8nSu1Vxw{ie@&|^No%x z!z9uQD8mG@9&zlgGQ%X&1Vxzr>yMR98KW?XG(j0AktQg^1hVefcR>ns`=(=ssjng+ zOe9TEgo&gHiZB})8+f_9s@D2z8+f<-yEg0oHFoX(_46;^f2x0cdz{|>C0`?X`_reN zzx(O)Yx}O-3^&`$BvKu>b+mn#sr;|7m-Sj+XO+y$>xs{`)A-+gyQLe9K;shFs_Y;8 zjPLgZJNtxZZQFt;-483Ca7tKK>ZsNz>TTCLeW~e1bX>FfjLv2YA%9 z$H1&Z6V#389lXRX3{~I(>dxH&-ygN3K0)7IeblY<392pauHV-)Y!mEHkyRs$-)?{y z=Uu$BETR~ja0tw1J6-p8yPmG|Y+{0%yPBA6-V^NaJU%T_5%w3ho*b2+dJJ=%d(^|R z7t5g@)tQ`~8oeLt!;cQCHf(RuRD|n8!Vbnrf~1v8d}M>9<=fuMd3v`zMlXprEkhEt zy+N}~*2SJF2uT!#BnmIvExIN+f#+QfsHtUq-{cdRsr%on-S)Bzp(4j!C=C^sX*< zbX~_fC+%cvCz8DbS$BK7&G5dx#j+ZQwm(Le!aI`a9Z9Ol+oLVZdEH8|Fm3d;j9u)*h?7)!3s)Qs9^6i_GGCbl8LB4@<;vN}E7DP5#5Roj1NEGB- zEhp}}VN2*#Hz<3d#}I=g3nK31)h-5)TvLGT!P}{zF?l|bz zW~LzRIGlWOdG|ShDsh}$jn3n)-h9;dND-1IC*M6Fn&Rwdma|T!u-c z3Cb{uG(j0AktQg@RKGj2x!%3+?IOb@5-S|qG(j2W%VuoucmGoDc zXFYq=W?g4k@qyoI%Zkopo;fitlm^;CTSOWV* z^$DWI-U}_)tM6@zjP}@9QBTkcN8t7`_Y<_D5xD&#Nq{PD9bLHU?PKmINMhnKtkrs= zu4gBpnZQRai~lZxC-qSyYP-I(3eakVilx3g9H7;R0JB&Icu~{%Xx=L~wSJhOm7fe| zhcUrfeoA7UGYxS2Ny?SPn)OYvPdHbM2%a>UZ(_nVsouWdd|J$IW4JzQ9x*K5>bv3r zZcp`>nAn$B)tO+Q2rSo{unjOi?~f0dm+z=M8W(i@@U;n2)g2W}Xx>@X9jX#>K;mHE z7pe&FvD;(dHXtrAUMz9&^-B-W81FHL7W`(hl|kaiu5rZXE1KW=~L6!ockXodw2@h=b}BrkJ>0VBq$k%hRIO zG}WG?mIP*zs@b*xcv_@tw*A`50;5%XjGDGh*V?vq@Sr-ifp-n8y#_Q;PV->OI8zG-n6nLwF)%uC$Y3vR@iszGK3)gJ}{-?^eQO zUxPeNn(s6TWPGl_I}elAkxIB#v@{8%cNSsN1{#?(-)VA^YTF)VJgTU>*L(Sh)Ry7U z6XfYNi~Z;ZVwl^N2YGnieu#d&8cmzZM14r7PtP$weY~9y*Av}hxqs<1GIC6jF=7xi_>kY7KQHxU+Ppa;FqmXM$Q@HL&Z&@#Oi=(== zW>G%2Bk?C_7Gq}v$?6K4$+)&eWUM@Q-F6_qyvK@iC!+@Un~YD;^hB6QnxF_1NfQ)d z61j%PCOyLJ$JZ-N9l;Jg877e?D8nSu1Z9{+nxF`?A4;z<^RX@W9L zB27?)*-x*ZVVa%{6UexBxC_cKi8MhOCXps6!i2UKm%Dc7877e?D8mFYt{v_+GfW~) zP=wjf!&f$AI=!3BFo`rl877e?D8mGD4FY=;+78ZFm}?Hxzz7pb6BJ=0X@Vk5Bu$XA zxgD{uFyjWeXA?;)pbWDgu|I8^pbV2p6BJ?gbMvQ3)05eBGGBYx1!b5-nxG7mND~xc z!T=Z#s_o7*Od?HCh6!Zc72IuRm_(YO2(zEWS2pjOwhWUQCXps6!z9uKWtc$5cF!&- z!kk-Dnoh*`0Xvvs5@~`mOd?HChDoFeiZJJ{l*06BLWW7C3Cb{uG(j0AktRrCZkGU7 zp|7?3=#Yr?X+ngFqzQ^Jku*UOX1^`4!qgTw6grYtKp7_3^m#&tNu&viF#ENF6{arr zQkX=VpbV2p6O>^B>GOmLbME1(Zt8C-Od?HChDoFe$}ovEK@n!Z0*$m~;13g}ycjXGf!O<&#suf^}>q@7#%gyX@VaOk0pX7dY6-^VSsX;j(2!akS2_xKfpous9& z4x{4}CwCCFCD3Nya9 z*p){MM-l}giGq+sK}5#AhCR*@G}qD+RC|S8c?u$u1rf=Dh-5)P#&rM}WXLA%Wklc6M`d2pfKm}A}B+)yO+|k-nS>EFT*1gI{xg*Km=TccV zx%;%Wa**tOu4{v2??7_*X-i<)bBX7U9xfF4aj3j&anS4Gvy!SORxNkp=xx90aj3j&aX?OgZ(x@Qm-RH9p z?vYPKvUec4M?U%FQ>*qFXY|NOvUjk_J#xH8I3~2Z_lVw!WbZ(7k9_REtFp?Sdt@Zh zJCWQYAARx}cY8+-iOeI(-oYk!v`3$OK6pZlBzrfTn$Ob8>}V53f!H{Z#10HePA7S1 zK|o@Ue6+cz&iYsokt~Qv7DOZq0ur}tjy9duih~6a$%2SvK}513AaT3qXftHpXl6k~ zvLGT^5RohhNZhVDylx1__I7T_swls_z5V=Qv`Cz{|Xb6(EVZ*dj+@R-kFo`e1>iIyU?Fp;s@pXJ860<$Sj&{~Z^t7j_f?Wfdo$QPJRc39k=`g?*@GQLoi zMJk!Im&~!Q{!Z6WGBxT<5K5+QWK0lBriP~pLdj@4yu5! zWRXh7R}})OWa4Y|S;K4VXu5`yiLW@Vr|{{&9iX-kI-hY504j+XQil1GE+5_ zOidUj2qmM95fB3^hgOcN?%=#M7T8w5$etIj=EXJB1NlRmVheBi> zn)mc*io>MoR+xS!tB>AIPlSo235qb0G(iz2k@0-V-v30HR(a#+Zzh;w5@~`mOd?HC zhWR2jeO?vv_Lb@LH>+Fz8ndR4hj=401UEKkuHy?FZQ9jWSreR}>I7Kre^~5q0IW&M zs^SBjpZci~?MrFuOM_u@r*HXW&q4%rIAC4z|OLL2#$9Vf~{C3l)=YO29 zZ~yQw|Lg6$AOGV&{`SM?@9H<5;wQWR`2COH{rlUWK7ad{pT7N%s6pL9>;kpX>-RFR z&uR|uSN#a*e~~@B$2wxzwcijw(I@JAEGmJvTzrNS<}G(S`n!laHmqxe?E2I~wvUVj zK0iC(oo7>OBV>S@hSdUVSloU?JiyEKTC2qg_Kk#$Q9nwYZEk?uXXj5ayO;rP2i8w8 z+uQ_Ic|WS@6SQKA#Y_K~^$BL18y5AG;byUBLlf-pzb=b48=7Dr#TQsxr32i4L;ML^ z9{o4OYj0dl@5_zuqwds9y0cJsvSDPp2e^HWoDs(HNwkUy_Nn3m>mY1`>d9sS>WK=s zcEsNP{4%dALxk8MN2efF}ynEJn zJC<*?{!5>SJuPOf?Ve+tC(=tMOzMna`i@_&+0&CIiOlNQorg&cHD=P}q)8%8Pnfhq zyq;>~r29^jM4Fy3*=OCW0@Xf;nIzKmgh?;QQ*BF_Ng!*xp_4Ls?lbfiW$hw#FoYvX z#dB6?Gm0mFcFIc}Nh+Rm{~f>;r8k|7(ny`)Qjf8{0+A*KQqqroh4%z4$oLToBE3z- z4;UgzmB_njy&`T&Pv`2z_N6}Ot6w0-loXTs9Yip9>97t#uQQ?TR0t)B- zm5HUi=2qsMNYj(biL?Te^Fx1RZ#l0i&UB8X=?UjZS^zTXf)ag(QQ&Uc)=}G5AnxJrQ^Nq)$K3Fj4K-Ri%BO~oZS^L>P4`txBuilr%HJI+Mul=AeK>bf$xfn6V zjA5%5S~tpxi@EemeQELiSl1}JMV0mTMBNiKi}4f(lDTZ`CgW)jBy%~~N&P6y{`qWq zkLw~sPlTz%o+12HCv)9ohDoFe$}ovEK^Z2Hb)Gf7pZo7jFG2d_At<~fX>o>kBrQ%Q z={$$C!+ZSB+i)I9B2s@m$P5!~t_5GK!x<)#7G`>%4M=g;;Ym+tdIz$$0Xmu9iL}Hk zN%79{tVwl-(M?8}NSdGs6G=;agh}MuIB4li?|ln()uh^M?Qy1eA}!AJPNc;dN$Rg1 zE$6l6*_~&YL|Wc6Od_$uqjw84z4y)D6=$72^f=Qykrrnr$;fzRa<&bPEYYFvHA(w| zHRot$scg1~3~Q`X_r50W4UC7ikTl=%b4x_7Nqe&y;M|*w!NtbEbWWt{N#{h?oMSle zFQsPr$hqqYT>aE6pEYUkCc`O;0!{Qq#dPWCYmXAzWqdv$%9lr0GfLL|Orb^VfS}A5Cpd z+DF=nT$A=re!-?DY@l4(on^iz?cHRgok-J@%89fBiYT=gI-Rdc`*cpE=}G5AS^cE@J?WfC6C~%F&zo<>)zp(tNs{!3;fO8EZi&c3Cc+oM{CRt#e-%YUJk*SVA z*Ak;#2Dp8FRp7dwGeO0q554PO;CDHcA)Wy7x6uh+ixtCMSXKm;4B&KiRzvbShT~3$4&Q?0PN@ZPcayy zX1jYHr8=A7NO=5q+W-&s1jPjVrKEBlyIT;W?f&bR4k$ebPk4-eZt|0f>T1FaP-)$6Bt1cES@F0jl2#jKa=R1sG-*NRd#U{j;ghs{hsoFd zowb9dr(;b{nk3Tngvow~aQW7b*zK=lo-UP=xhX=cql~XVTTW;y^jt%&-VWxW>%^&aE{ie2tqsxP1#*dA!ta?r?q7 zpO5rh)=;xsJX+7Ec1^YCU{^Hs4QMsi-QvM+APKDYKR`bYxYRAsAqLKLE~}Fo7OinT zF0~UgE!xcofmFjaWwbo1=kl_iyV5!>uU+Zk*@kSjYRh7Dd3ItEjS$I;slJ}qJg%ju zHuL69phr9@KGXym^O9A6qQlMFtx4oZCmR1<0#B-LGHU*KgIB@t*Dt>c-mT^bVXrNi z=bgd#>#F2mVV?v1xu%hwR0;TfE;X>MlM_^5ytf;HSurN~8j+r^4A(;)Lllf>6 z*~~t_lQ~I56BJ=0X@Vk5 zzdd@XxsiqGY{&bzNN>Z4rhOeRyT0I^b&11YTw^$MUh{N zTx;t374|jf$*Ex{dAg-}VN~G>`gAKc8UVC?3jOq*fhtDWZ@SizWOp5n0!d4}z4BTM zzWB_4L>bp=$Yzb_-Fp-`k|YTB#dK^iorfSKQ4o?Sh{zhxrywLzkgYiNV^S=LNESpS z3j$KZ*C@* zs#X1v9u*!oFRwNFns=~SgK8%;OVHM9x!=k34rC3LolNaSvUXV5)oQxiOz%L}z}Ct1 zP9%EY-a1`fO^rg`W_SlOf2VctW5YX=RFUCpv|BAzyYna_B(WkRiB*ZnTCH~PDacNb zROdLI{cV6s=dG5O-Dai}NKM2>l~3hbzXMy(@~yH6z9yB$62YgYCSBzK?N12!v5wM*RdncC;IXldu}b9-rZ+2rmMN$SA1 zM^T?9IZ5{2roP$54h(H_I^E{_HK(4W=t98e`T>ScW;%Uu_g;H_oy@8PBzK>1ezAU0 zsoPBNcJQy?N@ndqa`(Bt3RGpZekiGXj|EwO>huY6VG_xONhAvbl6z!|lY8XtRidS+ z9%bv&qcDl&9vMl@()KFq@?Pi6=H2JWckYqNCilqOvq;N3_sB$YkBlU1_sQp-d*to? z)Dw^vc0Hrcz+DRm=fS-dy?e4#{e|w7=UaU)+^TDqDTm5)X?cX*M_itq~FMM{B z0a`P^t-GcJ+}=;ksv(eEZ||oHeAn+&YWN&#ddt zKEWDR_VjE&@cINv%=Uij6Rc`JEZWlH_NeP)Ge+yM1XlYV7H!UPd(;bN)1uAX1=i3r zELuwxSeyDg=$E|&T7^`}Z11P8^whQM5u-0ZWsyo|dq4GQkxJ%ld!e#OCF4sqfm9#k zy5D{TE09X&3?)-v{!P_TGOLFk35SxYOGU%t_I~P0&+5r{i@vJ3J?iq|v}juh0;yz9 zHg6F~CF7HNfmAZv`>9VcR5B+h8Pz`TQhZLW-*2LBFTVMmWxa-)kw++*x->WPc+_r+ zS)?{|wEY#unD>sRMNPNNB9+Y1&YNYCN=8q8yG1IQc>38~Q^~}~0R~dZ_~k?G)=OkR{ydoAb3AD>yPet ze|h@+O&#ffmHC+L)$4hkRi{30_P-x>eKQ45@b#g-E?iU@>+0y2WBYA={P$Jn_s4VI zptzhPQEDxnK54_L&HsNF?BSvv;_RL}DIMD@m*+Qi$niMeu$X$=xFLh@>V;H30P4>_ zT55VeuQx%5=UZPFhQ;G;-EJA+Re2p2*K=zFJP(TpUG&oc>M`o&RkxV6W?0;|-bze7 ztL7Gu+G?6H*1pQHxGf2v7PI;fFkYoJiQ}qbgQ)xPPT8epH=m zF8Va=quP4aQ5`$44_61cU5c&f{Ml{ocWY#t2IefwPiDjP*T8k1;wh z{om7Kt#>*YAMp}d>zGa+b#DjBD#9k`r0)TctY+9rRWc+^dG^SjqFN^OFjEjD(|_cek_8dTf`~*x{kfIZ6RC8mgn+E$2NOgj3nG#Q5s89y202TpPBeO$SwcY8##|?} zgotE8M6w_vQPAsan~yeBha^4B6y)T&4oNzhf{0{6M6w_vNzg^bF-quM=Po_W5Jcn} zCR_Irf{;W(NTMJlQBeQfu-edBr3-E70_2)?JX46zkfzPr0PJNM zQy(N*5ZOdQ{Z}4V8&c_#ARu|B5MOOhLG`hz2_ljO5lMpL+evedf{5gq0+LwekVHX9 zq97fvPeD9Wh=cG+@=O6q7DP5#5RoWI6E_Q!O9)7wDQv&6u&Qx=OFF9@k}Qb4qoCJX z@i|k7(uFqER+Ue3eNNiLjBXoAE+O}RsSCp0X8f`Q+C)L>qels?k6F9Pm?@lrb1rf=Dh(tk}xXlt$t)VIhB+nFLGB|D4;cZV+ zj6+DWAhJn_FE zK=MohNftylxrB&BLB3Xx#Ub=^Cm?yIfFuhdn=FV(6y$65^*yVVkdx0H|FL2{5y^sx zWI;rdprh|8T-D`62@%ON1td`rk|+pC6y$65t4fyy0m(CkIMW$p+xkwnmwF7WNU|WZ ziGqBszP^*~&ZAQ}0?9K4B)NphCJQ1G1^HV2s(B!l5Rg1mh@W$uB~-VgdXln)h-5)T zq99+Z>wOy(1SHQCVhJ$?@ty*bEQoBPAYZFrRk~C{K=Mo>-i(`qcuxUI7DP5lQ2Y?P zIY&W6@=O6qY(q$*phm`_WgL|r)RTW4M23bGVrq0_Y_KXYIE%dHx&3A|KwpC1vY}1z z;)j;H?Fz29-_ocV*Ii0H#*-g-*H>H9^|8O-`?MGbs|G4>v#@h+G{N|6)WE1d8>n^7 z4Mx+P#%y48!9?aXW+UtRjJJo}@Yu*W+k_E1UrXG;aE_$usY@}gJU2Wxn|ZKmQP%g+ z8<@_0Jd3+TBbjy81#Cuh*ldP#A5m_)pFF^HPGq$2&15q8ku*Kw97!vnaPB*xx4b~%&WSWV=^V(sbhO!2t-SR2L92hOFSa*OQJ(vc3Oqp* z9_53i36G!qL()nzocD)6pUzEqItMbR2AiIAPNWG6=lzxG^^uYtF->a$>iSziF_R{>r|1M~^zJ+GQi@S?l9Q*^bmVez6N$-tb64lo|n zHqeAC#<-JgU`|=5MNJqC%vwIc?N_s^?mlWf8Q}J_mQOHe^b^#hvD38>%}NFcbKARq z&0~P7WiVsC=RMNRV)QIT=Kau(j4=;MD;qh78S7mqC?m>nj-=_ysfN#&@A<9U7G^m2 z8S6d2$J@YkPNeBc=R}&IaPAAKyIxWxuX@bIe|G?ns-1MY#B27;^2eLLIdOcFtdh#XtUGw6Rc10P#pfPKvzA+eJ zM2RFuNn}14zok8#_n*sLDbhuCa!#b_i4>tt6C~%y{?_@^x#Aa@6W3wCon+R?lAC0&6C^ zgYnxX2AZCjvfBDl7HcNDTRdrN(JWRL2WTrESCgb?}j63LBxPkh3Lq$xUU z;en(niko6Y*809{KWkeZNmCR>WVJ)j5}2SYA|g#t77>vqD2oWlTHtpxAD2hmHtyx61!QM?~5fN#EvWSQ@ zL0LpV)((63o~?*T6O=_nBo`5prYMVuNK=$W1Z16Fc12l4M4F-~B3p;(hn`GO77>vq zD2oV49tdr9p&un+=R~q|AZrh|=Sa#gwhqw~t>_#{bPnXfCqCia)(rYFG9eG8Zfgd8gu%{$^e=GfT+HllMm{h)8puf`~NlDTqib z%MfJut1c(+ug21MC@F7UU`dEXV>NvcI znSzM4FjEkab>pSmOhH6iMM^lpVf`~NdDTqk(o`Q(9 zvJ63XUroQ0VKbi;M5Kk8f`~NdDF{gK;8PHhR+b^i?!aA6b(y5+Jp~bIVWuD_M4jwOHv9V(#leT{0rzyy+^V2NFj*Gx=h)nhae=)c?d$%k`#i7^bS4**@jIP0&fdvWYfLP$r3Nnxae+kUnTclI*K$eOheQ zBa=j=35x9mv}uAeNo3OmWs;n%=MJ{onMoqj6lIc#G(}31f2n=B)KO&bIU`9(nxIG$ zk-pN1Bq3>nB1uS^phyyuRz#5`Bu!ByNutKIFMenjnj4ZPD3e4sO;9F@NE4JvBGLq9 zl7RF9Gm}K5DT*Zd-bej<_g0OwCJ||ZGD$?5piB~wKD1_%h%`Z&BqFVdGD$?5qDYeO zr__4~o+Kb)5LW4sO8XllSHJ|xl9s~rYMr+`#u-n?aL$)X@W9IK>B1MlSHHm$|MnKf-*@& zS`lTEh%`l!B;QM_UpMjQMx+VKBoS$XGD$?5piB~xCMc8SWW9K>Das@fX^NC2|LXs8 zt@FS+1whgSMUs#-L6IaPeXxiAWQaNg~pUD3b)FPZlCczK<5S;9;JGqzTHJL^e%OCW%NBlt}^-CJRxM zh%`l+BqB{wB+2*YuKD{dUXzG4L75~VeX@{ABGLq9l87`xS(AvgBFZEYX^J9AzTbEC zxk5HKA}!36PNX?cK|uPzo`Q(9bcP_`@4MzhMqcVfT9_#aNMEt1AR;YEDTqibO9^VP zD6A{K`fVu-GfId^Ux$YvB+YpULejj4phm_mg}jcd8`!^oOW~$Dee_(7RTKA*@h-Qz z#W6rQPPyf8(@cy0F`g`z=-st{j3=;eQtaT_z8KLDl-Es)0s7sQ`|8+tFurOW3t;`W z8KlR5j6kldJ?s__zGA8$Y@g}5*$0D{+nOIVi>i?E`TU4+y(Q2~Ca&5eS*@X&jN9%= zTG@nieM@1^t3Ec9=^V&4J!oV)C(?2$=T{wYOy}z$w3!U&NSdB-j-&|+=lU^|>D=p3 zIw#Wfq;n#zfWo=g%k`GPEOR7HPdW#iYjV)C8P1_*suLT1Mk*)L^rUklt$@P0?g-7a zYkf`5fn0NgrYD^fX@bJJKD3$6*L9p`GL;i)deS+OCMcY1Z8Dv&sljwkr0GfLK&}D5 z*;MzhU!F1NYt`LAMd_dOYjtjNB1J^5MRzk9Q6g!2n9P8H3bWWt{N#{2mnrE34X?oH*ktRsa{R2$haIW3?QRYaR zo^Xz&6;L?$i_dpu4bqOJ=}G4=n=xfgYuXn4^(pIJlstEqr>u8{rs1rzL?ddk<+~07x+-tb+U^quITSF(qIg%zQ zocm7E-Ro~UC(`t!b0BNH?_q{>zr}s`5>Mwunx1q{q!my&x0e|%>yefoWjY74<{F($ z=R{fog>!qE;c~Cdg>EvP6KQ(VIgwUC;ao%9XlVDEznF6(O;0)}(h5k<{bdII8`BfY zku*KwoXDEMbV1=9*4eeO(ZO_1r0GfLPOe7+x=r;)C++l%v_I;D{thb2?N^Dbe|xA~ z9-VbWiKLAv5hao~q=a*IkQSwl6zLqu`kue*N#{hGpm47F*>tYUBcz;2)057LG(q89 zSMR3t+JxzPQaO>PC!G^%g5>hakHaW?(6KQ(VIgutPocG@fU&`y@n_fQY zoJiA?&R=BAMANOx{MToq^~2tW&hkw3QJbd|w3(<@{Tbl^b&qdUbb&df4DbwKEr}=i zdf;O1YhT~%ahw4j^=i#*W3?SSK!2M-pK4|;@1RQ1UkDJGm7;@Df=F8FL*c zO*ogQDM#xNH3xG}r0GfLM4F&*t_htvH$ABw$a-g}hndcaG(q9qs)pV&H9hH^NYj(f zi8MjsTzjRv^6Ptj_1N{Kb0SSoIw#Tug>#+Gm~+#U&WSWV=^V(KmvlklT;E7d=QS_s zU^*w#^rUklO^}>xa_-JePdF#C<|RGMaE_!EP&n6ge=4teNjI6!i8MXwoXDKscAM&h z5ftqPhQO`T%SSB@|4aiL_Q8 zCN)VN!Vh(y-Aoc`dcvfwH?N1cL&>rjpqdXpi3#P z+HVG^Tr52*KtIL59$a-)GbBw-n6$HbnY19&B$3rwHQh4lC+;$7a>68$wYAU-Cro-N z9_rdg2h${xrYB6=>G<_fPwJXUB27=2v@>u0I6^MO%_NajJbpSZlO`vH+nKjWEFQ1F zhuT=MD1oevg-(WWJ9WOUpQGtuMoFaUkx8AJ%)Vvad737Xq~f_~Cwca$wXa|%iKODu z{bDz1azZ$gR6G|QuvnBPCrtvmrY?Jfyr@l0lRB{;9Z{Mj()2{}*n5uG!2rd10C_#tF5>_pIq_Pfk~2ZuP`;k3|C^vz=A%-?)myM=2jjAsMLjL* z;jdxwT$9BC9(@>FZv;%xcWdLDV~_D*FYf8mJ%YNWHDj!^)ZyBQGJNHA1n!#1CzZ;m%pj(Wa*GQW0I3^>q=3w1sIM<2#bY6!$9Zcs$nx1q{ zqzMY=-WZNG2Q%kD)*P&p>6}Qbyy4tVnje?5A)md=SZ zJ?WfC6BN#&X4X~qp3HPkr0GfLKzc7E=YATmXG2X-I7ia-gmWaVfWopG`9-T7Ob|kHU(mC0*0t)9U zquI&SjWttFr0GfLPM&Ha)@_D!J7m9}>ea{&X4;7~J?WfCD`+oW05_~Vp#Y9aCt zKls}3Tz8$j@5non<~#C^q$!WQ6Iti4-FxI6NfQ)#N7BkN@{Xh_io7FfiXxr%`K@lJ zSoe|XB+>+BI*BwvnNA{2P^Obe6O`!$(svOuokW_VOy`S??VZX``_?0BZdPBb!}YC} zCcz(DLA<>azpNgWeSkV5AFU#$st)=+_-nkh37~xjtDhD@P#ba6^;%!-F~&Dj8~k7#cQ1+jr5$==nSj^++&1&)_6bKU7vkpJ&tw&^b>ULlL6>&erZ#o z)-`*KH~ZBmz1eLR)nwz>(ueApagP|I$pRU>_k)Zki)2l9T9nabk+f7slSR@5MUzF+ z6h)IIaxFqyoY7>FG(}41)vi@u<4xC*q(~={CMeR0qzQ_261kQuO;Ds0NfQ+5MA8&R zI*~L*kxnA9P3j`Rteuy&W!3~K?-$?C)JuSrcO*@DwF zO?u=VNmCSgN758UI{mWQW$l?Y=TVK3G(nk8u(|fkn$1inktQh9Nu&wNbP{Prl<6eW z6lFSrTw7dCQ4CgolBIjHvvw-)VRiJz*R^}oEJoguH06Bu!CJNSdNZr=P~gRy6d+M0(Ge=>(hW6sQ$Zrjtk$l<6eW1Z6sjG)0+CAnTe< zpZ8=sUu4Wjvv4%A`%LEf~P;uhoG`2nt{W2Qx);jRy#2MCwg?lpUy;H&(eo85P{ z5|7b;$o6`#k3)vVgT1vaFqae)^d-ez7cJd&{7}_QPrbJ^Ez)#7mlOkp`*YV?x_3~W z0NjdOFP3#M_Jxr&-?1-DWUbu0&2SDqe|_Q8!E{cfm0~(4(n?3p;ilbH4Rn-FI480e zrajDXj-)k+aIO|QN<41gk#izVPdX>k1cme04T@)zxYn}0>q+HAnx1q{qzMY=8lI=} zTDhBZB27;^2hw}Ca1QOqJFHYrr0GfLL|OrbbH6*dUR5*YK-NZcC(}8RRzTt0Zy82q zr3y!+=}G5AS^>#9+(%r$>elr{+L1Ip;T%a56wdwTVk}reIg+L)orBHVXYPW+xfUg( zwy%fFI+)6dG(G8@ND~y!eOS5G)p2tUWbHC{GMy7?1r*MGdnd*PN;{FJC!GUX+gd$L zb>c7wzSTRN9aNNO$YnjX)xlg+0O^BT&Vh-v6y+S4NXt>qfr<1S#gc+ZtHe162GWPM zoC6bSiXxp*J78Fg6&jHyDAP%#3CeT=>El|alSmVkO9~>bh%%i-nxaf6kT}yky*|-? z4%GKr@b=oNy!(R$nqcH&s)JFDk<7(ZCnN7j+Uzy*PGqfjyUoZulD4FZyd!CfBJW6= zqR2avrby}Z=Mb*)$|4y3xXF%D(ki8SSzcOtDUGw(!NS!Uje zG)0+rAhpOHij>ZSR;4qYb-iw;6G;;k=|s{5MLLl*L6J@(eFr1biKG=#q!UR~6zOba zZ1ChLpmhHF2G2vk=%l1~mN$4Fbunpxu+9Id@1-ZGy_Zppk6H~(P{nFsW@mt~E&Ztb zDHGK2xm(m*WtJhS_5(+OneJiHw-N>BcsfCC#F^`?XcM&4Q(4S$cY-=JG>cgwC#X7U zAeHr5+td@(px~7v>aKyg^)_6`PiPuQMR?M#>IBu~-SyFacT9^;vItv7kGh`NW0Vir z-dV3xbufBqB+YkpD@dB0=vI)ldJ)|Ul2+bPG(^^T-xWo-f}|;mZUsqG6zTL0tH;p< zWjcv8L77eFzcO*@DN6I@suWk8~1Q z!+j?sok*IXNGFmeDAI|f35s+gX+;$2B(g5lcSVs-B+YvasM_M1{d;|4*G)#=?XX5$ zYo`;TJ^tQqbA^(pLhy*jo5 z`n>+2Pi;Jp{ySfCZBr*Hkh`+n|$0Dw(5w<0p_Rg+D|skV@ugKkh1!O2$8W zy{(5&Mx{8Yy-wA&w?9Gqcuf|o`R^qYUmcr8Dw%^_P?JR}nRpp!SbVP^oft9R)S($@ z=}|v^vmd0qz1QY;w;11(BWY^Fq^_|}-?h1ICW*9a5hm@;9z|(#GD;w8Z@W7WllIeq zI_)w!X_8254l?Oagv+GK36n^go-hgJSSPk!PMRdr^n^*Z@L4>n`lG){lSG=HFeyo9 z(&VH`AlDvEYdc|5TCSPQXv8hBmK_BC0SV>dU-l2}!IxE4@at^i3oS^0* zBf>-7n4h2~K?Y`@HbFbaP&bfioS*`l7Hje~K|6WYscMck1H9VPd;+sin;>-g>fBX( zCP=QcPaB|qX~4x;DXL^HUU$~BOVgr#MtM8d7(2j|-ES92s*ePcYW?uU6cfLC=jrh$ z=j57H)38(p(<%8z0k$oD$f|U_H4qz^mQ=xE<@3%mjVc z>Zn;lWPEq+uTyKkyawlR_SjVJp7w3jO6y2^TY?XM{dtadX%U%edb*m|gr zt&=fAMX`E}XQ*X54+GGbIq_;IfW9lS9+{aj`kB^ojS#!)lWOM_qp732KH0J4?O4aG z!}ZBm{Kwi`njloOHROyK?bJZ7t=TAH{@}krDjEM>Z-G=YQ3EVJR5Jc^$hV{Rcs-9t z?{wFbu_HZxl6PBgpLI}ul%G)vwDd$Dg`~-j%1q>%!?&^t=TJ79@C@DQoJec2>6}Ot zBoFTivPY3FSzdo^<}Q8AC%>UAg+`?rmuJ!}0v~ zc+;O=?r;D4?H|AY^sk?P`TkS=$j)~e~hm(j!9LBDHvtclQ9*a|?uaDF;b0GGFa`TUn3zWx5~PoIAN?x)XRcHg!V zUhd=7WC#`6bA3$QL)AZDUTe{c^rW@c!y`Svee?N`KYjbte=5+we){20pMLo6^C!$x z`-J)x=)JZyyYt9tW7o|;Wi-dfPVyLjs&(rGeG~aq-(?T*@~TNs*YTA zc5fU!*$*=410}1WvgkiObz48KH)4#}gGT3i*Wlr(6Z_<5kt#(Tbr_gk^>FRSDRbP~xNbUJy~hqp-PsMAUPv%Y4V2|w1Ft%DIJk|rp^1aiI5)@??Z zNSdGs(~m1ob?3R8%rJ?xI+rI7f=F7=8qE($>oP+*k+mx9%Jt7@9cIh|s>NOhqq-xB zf{;W(NTMJjeS#H&>_y(&No^lW2uT)1HdzpnEC|TjIP8fJLH3FDEnd|lK}513B3TfT zEC|RtQk#P8mEYTXZLfn_<%ncKM6w_vS&)h)5PhBnu*v1p!&- zQB#m_KAmCR6P*H)EQm-JL?jCWQX|tye3X#y_}%L`tSgTdjq)+N!+YJS=%D`j2y3Le zD$&8H#7Np$83O^5Hdw|%0+BvgMwsd&r=Hrhu`r3W!9T+!(gbCgM4F%o(>LGlup@|43kI`lwrQe*o%n(<5={|dokZ+Nq?PruEp;;>~5^;8JzClb2HXJ-;AvvQa8|V z(A{%0)Jbaz`!|@XPU5Cfv z>YF&n$J_t-Kc9a3Kc7GS-?tzC{PxSI@BZzFAHV7yXMvSpY=S|!Rb ziL@MLm_%ZsYjmE4?o~a*B$5lANXt=%31lAeYR81Twe0Hk%nHk(Q*$CUi3T*OW~ntzl%CPS)>VdYD97 zMT#){NLz(o7sfY}nN1?CVPu#x*)Nr>Fm>63!X(lSoq&18T)5*G9w%N=uiL@j|Hv7%}3bTIFZ!?);5@`)1 z!vr#SUN)NcQ=z6CXv=KGE5+I_hYk}VG?N-Nnvgu`>ZhY%F1Rk z!bH*jBFxl4I{$@n|Zjr*~~DBw2BmA`f8+p|7$auVG?N#Bf|vJ z_hvFoBCR4tn7$f0`Q~1RNu)K53=_!Qv)-gmLL?AF ze1Y1tSI7!ZTen}{v#T62QodiyeASt^LPx3IuJzp`d3&6_yUc77Y0fiDBCR52m_T}$5MkP?@Nw3;KV_3hbDm)W zS<{=IqYM+syZ}F&(DvTIs+%%KVcPof5f7pdGQ)H-zE>Dzh6!Zta(6+IO!vr#~zsziI&v&hC)>5MDi7=5g=Mg57R*@o1C$DjTbqG>6 zw;u@3Fa=_#jihBWO!n6dmdVyDGOTVXCaQOBaIBuUO=|NsteCKVcpYp_sr7R1@%`<$@x|Esl&t<)-;(XV zPy1CGeN`4UxZ6MKe(hN|7%Y}^?f-m*t%{@~s_Aei)v@1HaNE!lpd~fH{@g{?_PVgR z#VIiE%WM{JT3BQ=AFj72cb7%AfuUR$x92VvSX0ezQGXgg=s8_$#xg8MEkZJTm}&C0 zrh2x>bImk6m?nX&6=^3U%2%EGFj-5|4yH*U>o}*A>c-;c`Vt)(EP`#HZm{P|5^J=U6VHJa1gKY#O0O}y^*b+*EKJoI7(gmrlP-+%u<{^cLPQKR}V2hzIUS0LB?KEi@-?6Y8E z5FQ~%Tj;-aQWf%A2SYs%0#E$|tS6Y&Y=W=7f)CeqIc|d9y5c((k8!(ZyIj{n)3A8# zpC_!=Rg295Zm)tBxE699R0Y?kyU)UZin-`Bkr87&6o+I^#k$G(Sdz$UU7ZZ)zIU}Y zd^(uUiL~NQ=R}&IXxjS!qXW9=0yQWn(hEGCBWW!>oO>O*s3gcak)|h|6KR6Nxq76j zyylBD?MRxQbWS!+P&n_eX|0;6PM(w#X?oH*kTw18g2K7_?x|caXp(axO;0)}(gex* z#XFe#z1yvGi`q_PomO@|;T%a56wdo|7c1?xFzhDNIgzF(ofByV6wY5a%0D`pS{Ryh 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

Y;74NR@s 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�ynuc*xcl4aFd&s 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 F{TGwqnC1Wg diff --git a/doc/grlib.pdf b/doc/grlib.pdf index 19c4bc03bc66180561d1a252f679c8750a0bd2a5..03610ab70b9ae8f13eb54cbc91983d609dc1a60c 100644 GIT binary patch delta 395483 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

+o{LN>$7aI0 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 z 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 H2 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ø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ɋ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%0DPy3&U)ns1dKy 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�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�%T&5U(C8Ko+T`}x}}M~ro%eqwaeNpb( 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 F2A*O^VU}9>oKX=eBu+apMz4SYa8@ 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

J}leRO!<$Z0_4x87YYgq$`2 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%0D#!f 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%0DN{Bs+{jUxdj$(|HeNK1|G3t>CVXgdzZXvfdc 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

r0{L6sds1b$nRea6|x;6RW0UmBQwQ+9kR z7W9hn0wf(jF7f!VQ#SnUZ#2@FP6dgy(D5%l4gYSq({wKOMU%^yo#^;&8j4$@>Ig}! z-v@X7Xd`qzv%*Sph}%Fa1Q#{hZ!P&Yuldu>-$rkw@}c+yl41F!`cEsD|Md^2|M&1t zrhoDeXZo-F!<*DL5;j`@l{xd5s}Pbao$}jmG;MlP;+C1xh0>+>FCvQ&^>D1nBvVq{ z3)?aCA4yCH^7~fxM-DJyBCM|-?Rl}4qac*0y00CZGC4C?9oM7*+OlRNkm__b!84N0 z6{MC{-F;sdVC=~y()4x(i0MCP(cFrA zoP@R6LxE@{_}@1{1!$8|U`Y6=_ej%Xjh@ zs6c^Rlevl<#=4ogD3DUT&>{FNX8R*&TL$B-?NZcF)W+%J+YrQfMdt`hqV?x7#WWoIxShB?t|fz2sR%l&&!Ib75Hx8AKkW-V`wW_aL_>1(+4SL z-tq(sZ>}IAk$-1WXDKu}xBMQVEPOI@*hN?-CJoRdrXld{n==*@N0v4B5)-#{w2s<+ zk-vD6UWnDWvnR*%K84+o+jUu}{GAw~aND8n{MKu^R2?|7T5qX3HS0vJxxF}%i!d7c znVFaYxw6e%u@{mu3u`VEKggocE24NRm{Iqv6#fg}o@XU<Asef0C_5vX68y7=j=|sx)Y@09x*0mjR4XSp? z{wdjep5{+R~dLY6%!j{(+{ z67V5!7{TfCP7t6#$9rnhZI1I;h1lLdF$2CbLjJ^H-L(?-_6h{Y{IPjt{^*s8O!WC< zvv984q+{hY;*>n$Ywi?l!VHeQ8*`Jpt_DFBf(1#}K_(Uix_oZytdICV+c?Mx3F~w6 z5wzF}rQ8sE=!4Y!B>Qc>5DZw&tC}P~1qYlWTC@q|o`TxFk@!e1(DZpu6C<+n)N6aT1kW`xEL zAON#OIL;mp?hO_yPx>28tt}%wm%0Dm@RqfvUlk{IU8)K_GyD^&Du`#yvQD1x(rg)c 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�afy12|GQf$&Qci=fcq1>b@ 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

1_5y5#YlkUVyaDq7JAKRMFnBrp=@dKx*o71 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 C4nhYPW0 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